ZGlmZiAtLWdpdCBhLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kIGIvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlODBkOAotLS0gL2Rldi9udWxsCisrKyBiLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCkBAIC0wLDAgKzEsOSBAQAorIyMgQ1B5dGhvbiBNaXJyb3IKKworaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uIGlzIGEgY3B5dGhvbiBtaXJyb3IgcmVwb3NpdG9yeS4gUHVsbCByZXF1ZXN0cworYXJlIG5vdCBhY2NlcHRlZCBvbiB0aGlzIHJlcG8gYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjbG9zZWQuCisKKyMjIyBTdWJtaXQgcGF0Y2hlcyBhdCBodHRwczovL2J1Z3MucHl0aG9uLm9yZworCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb250cmlidXRpbmcgdG8gQ1B5dGhvbiwgc2VlIHRoZQorW2RldmVsb3BlcidzIGd1aWRlXShodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8jY29udHJpYnV0aW5nKS4KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGQyNjdkMTUuLmVkNGViZmIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjEsOCArMjEsNiBAQAogTGliL2Rpc3R1dGlscy9jb21tYW5kLyoucGRiCiBMaWIvbGliMnRvMy8qLnBpY2tsZQogTGliL3Rlc3QvZGF0YS8qCi1MaWIvX3N5c2NvbmZpZ2RhdGEucHkKLUxpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCiBNaXNjL3B5dGhvbi5wYwpAQCAtNzMsNiArNzEsNyBAQAogaXBjaC8KIGxpYnB5dGhvbiouYQogbGlicHl0aG9uKi5zbyoKK2xpYnB5dGhvbiouZHlsaWIKIHBsYXRmb3JtCiBweWJ1aWxkZGlyLnR4dAogcHljb25maWcuaApkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IGNmOTQ1M2EuLjkyODk2YjcgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTIsNiArMiw3IEBACiAucHVyaWZ5CiAuc3ZuLwogXi5pZGVhLworXi52c2NvZGUvCiAuRFNfU3RvcmUKIE1ha2VmaWxlJAogTWFrZWZpbGUucHJlJApAQCAtMjUsNyArMjYsNiBAQAogcHl0aG9uLWNvbmZpZy5weSQKIHJlZmxvZy50eHQkCiB0YWdzJAotTGliL3BsYXQtbWFjL2Vycm9ycy5yc3JjLmRmLnJzcmMKIE1pc2MvcHl0aG9uLnBjCiBNaXNjL3B5dGhvbi1jb25maWcuc2gkCiBNb2R1bGVzL1NldHVwJApAQCAtNDMsNiArNDMsNyBAQAogc3ludGF4OiBnbG9iCiBsaWJweXRob24qLmEKIGxpYnB5dGhvbiouc28qCitsaWJweXRob24qLmR5bGliCiAqLnN3cAogKi5vCiAqLnB5YwpAQCAtNTQsNiArNTUsNyBAQAogKi5wcm9mY2xhbmc/CiAqLnByb2ZyYXcKICouZHluCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oCiBMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGVkNGZjOTIuLjIxMWMzNzYgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ4LDYgKzE0OCw3IEBACiA3MzdlZmNhZGY1YTY3OGIxODRlMGZhNDMxYWFlMTEyNzZiZjA2NjQ4IHYzLjQuNAogMzYzMWJiNGEyNDkwMjkyZWJmODFkM2U5NDdhZTM2ZGExNDVkYTU2NCB2My40LjVyYzEKIDYxOWI2MWU1MDVkMGUyY2NjODUxNmIzNjZlNGRkZDE5NzFiNDZhNmYgdjMuNC41CiszNjMxYmI0YTI0OTAyOTJlYmY4MWQzZTk0N2FlMzZkYTE0NWRhNTY0IHYzLjQuNXJjMQogNWQ0YjZhNTdkNWZkNzU2NGJmNzNmM2RiMGU0NmZlNWVlYjAwYmNkOCB2My41LjBhMQogMDMzN2JkN2ViY2I2NTU5ZDY5Njc5YmM3MDI1MDU5YWQxY2U0ZjQzMiB2My41LjBhMgogODI2NTZlMjhiNWU1YzRhZTQ4ZDhkZDhiNWYwZDc5Njg5MDhhODJiNiB2My41LjBhMwpAQCAtMTY1LDMgKzE2Niw4IEBACiAzN2EwN2NlZTU5NjllNmQzNjcyNTgzMTg3YTczY2Y2MzZmZjI4ZTFiIHYzLjUuMQogNjhmZWVjNjQ4OGIyNjMyN2E4NWE2MzQ2MDVkZDI4ZWNhNGRhYTVmMSB2My41LjJyYzEKIDRkZWYyYTI5MDFhNTYxOGVhNDViY2M4ZjJhMTQxMWVmMzNhZjE4YWQgdjMuNS4yCis1ODk2ZGEzNzJmYjA0NGUzODU5NWZiNzQ0OTVkZTFlMWU3YzhmYjNjIHYzLjYuMGExCiszNzg4OTM0MjM1NTIyM2UyZmMxNDM4ZGUzZGM3ZmZjZDYyNWM2MGY3IHYzLjYuMGEyCitmM2VkZjEzZGMzMzliODk0MmFlNmIzMDk3NzFhYjE5N2RkOGNlNmZhIHYzLjYuMGEzCiswMTdjZjI2MDkzNmI0NDQ3ODhjOWI2NzFkMTk1YjdiZmQ4M2RiZDI1IHYzLjYuMGE0Cis1YjBjYTRlZDVlMmYwNjY5ZDc2ZWNlN2VmOTc1YzU0NDU4MGYxMmI0IHYzLjYuMGIxCmRpZmYgLS1naXQgYS9Eb2MvTWFrZWZpbGUgYi9Eb2MvTWFrZWZpbGUKaW5kZXggODc4Njg1ZC4uMjAyZThlMSAxMDA2NDQKLS0tIGEvRG9jL01ha2VmaWxlCisrKyBiL0RvYy9NYWtlZmlsZQpAQCAtMTUzLDcgKzE1Myw3IEBACiAJY3AgLXBQUiBidWlsZC9lcHViL1B5dGhvbi5lcHViIGRpc3QvcHl0aG9uLSQoRElTVFZFUlNJT04pLWRvY3MuZXB1YgogCiBjaGVjazoKLQkkKFBZVEhPTikgdG9vbHMvcnN0bGludC5weSAtaSB0b29scworCSQoUFlUSE9OKSB0b29scy9yc3RsaW50LnB5IC1pIHRvb2xzIC1pIHZlbnYKIAogc2VydmU6CiAJLi4vVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weSBidWlsZC9odG1sCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IGQ1ZTQ3MDMuLjU2OTkwM2YgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0yMjMsOCArMjIzLDcgQEAKICAgIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVgIHdpbGwgdXNlIHRoaXMgbG9jYXRpb24gYXMgdGhlIGJ1ZmZlciBhbmQgaW50ZXJwcmV0IHRoZQogICAgaW5pdGlhbCB2YWx1ZSBvZiAqXCpidWZmZXJfbGVuZ3RoKiBhcyB0aGUgYnVmZmVyIHNpemUuICBJdCB3aWxsIHRoZW4gY29weSB0aGUKICAgIGVuY29kZWQgZGF0YSBpbnRvIHRoZSBidWZmZXIgYW5kIE5VTC10ZXJtaW5hdGUgaXQuICBJZiB0aGUgYnVmZmVyIGlzIG5vdCBsYXJnZQotICAgZW5vdWdoLCBhIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSBzZXQuCi0gICBOb3RlOiBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjYgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KKyAgIGVub3VnaCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KIAogICAgSW4gYm90aCBjYXNlcywgKlwqYnVmZmVyX2xlbmd0aCogaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIGVuY29kZWQgZGF0YQogICAgd2l0aG91dCB0aGUgdHJhaWxpbmcgTlVMIGJ5dGUuCkBAIC0yNjYsMTUgKzI2NSwxMiBAQAogICAgQ29udmVydCBhIFB5dGhvbiBpbnRlZ2VyIHRvIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nYCB3aXRob3V0CiAgICBvdmVyZmxvdyBjaGVja2luZy4KIAotYGBMYGAgKDpjbGFzczpgaW50YCkgW1BZX0xPTkdfTE9OR10KLSAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4gIFRoaXMgZm9ybWF0IGlzIG9ubHkKLSAgIGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpjOnR5cGU6YGxvbmcgbG9uZ2AgKG9yIDpjOnR5cGU6YF9pbnQ2NGAgb24KLSAgIFdpbmRvd3MpLgorYGBMYGAgKDpjbGFzczpgaW50YCkgW2xvbmcgbG9uZ10KKyAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4KIAotYGBLYGAgKDpjbGFzczpgaW50YCkgW3Vuc2lnbmVkIFBZX0xPTkdfTE9OR10KK2BgS2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nIGxvbmddCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AKLSAgIHdpdGhvdXQgb3ZlcmZsb3cgY2hlY2tpbmcuICBUaGlzIGZvcm1hdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdAotICAgc3VwcG9ydCA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmB1bnNpZ25lZCBfaW50NjRgIG9uIFdpbmRvd3MpLgorICAgd2l0aG91dCBvdmVyZmxvdyBjaGVja2luZy4KIAogYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgLgpAQCAtNDI0LDggKzQyMCwxNSBAQAogLi4gYzpmdW5jdGlvbjo6IGludCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCAuLi4pCiAKICAgIFBhcnNlIHRoZSBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBib3RoIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKLSAgIHBhcmFtZXRlcnMgaW50byBsb2NhbCB2YXJpYWJsZXMuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzczsgb24gZmFpbHVyZSwgaXQKLSAgIHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgcGFyYW1ldGVycyBpbnRvIGxvY2FsIHZhcmlhYmxlcy4gIFRoZSAqa2V5d29yZHMqIGFyZ3VtZW50IGlzIGEKKyAgICpOVUxMKi10ZXJtaW5hdGVkIGFycmF5IG9mIGtleXdvcmQgcGFyYW1ldGVyIG5hbWVzLiAgRW1wdHkgbmFtZXMgZGVub3RlCisgICA6cmVmOmBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgorICAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3M7IG9uIGZhaWx1cmUsIGl0IHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUKKyAgIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIDpyZWY6YHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzCisgICAgICA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCB2YV9saXN0IHZhcmdzKQpAQCAtNTg4LDE1ICs1OTEsMTEgQEAKICAgIGBga2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nXQogICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZ2AgdG8gYSBQeXRob24gaW50ZWdlciBvYmplY3QuCiAKLSAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtQWV9MT05HX0xPTkddCi0gICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LiBPbmx5IGF2YWlsYWJsZQotICAgICAgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6Yzp0eXBlOmBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmBfaW50NjRgIG9uCi0gICAgICBXaW5kb3dzKS4KKyAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtsb25nIGxvbmddCisgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LgogCi0gICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgUFlfTE9OR19MT05HXQotICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4gT25seQotICAgICAgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCAob3IKLSAgICAgIDpjOnR5cGU6YHVuc2lnbmVkIF9pbnQ2NGAgb24gV2luZG93cykuCisgICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgbG9uZyBsb25nXQorICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4KIAogICAgYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBQeV9zc2l6ZV90YCB0byBhIFB5dGhvbiBpbnRlZ2VyLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IDE5Y2JiM2IuLjI1ZmIyOWMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTMwNiw2ICszMDYsMTMgQEAKICAgIDptb2Q6YHdhcm5pbmdzYCBtb2R1bGUgYW5kIHRoZSA6b3B0aW9uOmAtV2Agb3B0aW9uIGluIHRoZSBjb21tYW5kIGxpbmUKICAgIGRvY3VtZW50YXRpb24uICBUaGVyZSBpcyBubyBDIEFQSSBmb3Igd2FybmluZyBjb250cm9sLgogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorCisgICBNdWNoIGxpa2UgOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIGJ1dCB0aGlzIGZ1bmN0aW9uIGFsbG93cyBmb3IKKyAgIHNwZWNpZnlpbmcgYSBzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmAgdG8gcmFpc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnJlZ2lzdHJ5KQogCkBAIC0zMzQsNiArMzQxLDE0IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX1Jlc291cmNlV2FybmluZyhQeU9iamVjdCAqc291cmNlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKworICAgRnVuY3Rpb24gc2ltaWxhciB0byA6YzpmdW5jOmBQeUVycl9XYXJuRm9ybWF0YCwgYnV0ICpjYXRlZ29yeSogaXMKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AgYW5kIHBhc3MgKnNvdXJjZSogdG8gOmZ1bmM6YHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogUXVlcnlpbmcgdGhlIGVycm9yIGluZGljYXRvcgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC03NzQsNiArNzg5LDggQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgSW1wb3J0RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgIHwgOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgICAgIHwgOmV4YzpgSW5kZXhFcnJvcmAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgIHwgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCBlNzhkZGFlLi5jMjcyYTFjIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC0yNSw3ICsyNSw3IEBACiAgICAgICB0cmlwbGU6IG1vZHVsZTsgc2VhcmNoOyBwYXRoCiAgICAgICBzaW5nbGU6IFB5U3lzX1NldEFyZ3YoKQogICAgICAgc2luZ2xlOiBQeVN5c19TZXRBcmd2RXgoKQotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogCiAgICBJbml0aWFsaXplIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBJbiBhbiBhcHBsaWNhdGlvbiBlbWJlZGRpbmcgIFB5dGhvbiwgdGhpcwogICAgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgYW55IG90aGVyIFB5dGhvbi9DIEFQSSBmdW5jdGlvbnM7IHdpdGggdGhlCkBAIC0zNCw3ICszNCw3IEBACiAgICBtb2R1bGVzIDptb2Q6YGJ1aWx0aW5zYCwgOm1vZDpgX19tYWluX19gIGFuZCA6bW9kOmBzeXNgLiAgSXQgYWxzbyBpbml0aWFsaXplcwogICAgdGhlIG1vZHVsZSBzZWFyY2ggcGF0aCAoYGBzeXMucGF0aGBgKS4gSXQgZG9lcyBub3Qgc2V0IGBgc3lzLmFyZ3ZgYDsgdXNlCiAgICA6YzpmdW5jOmBQeVN5c19TZXRBcmd2RXhgIGZvciB0aGF0LiAgVGhpcyBpcyBhIG5vLW9wIHdoZW4gY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lCi0gICAod2l0aG91dCBjYWxsaW5nIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBmaXJzdCkuICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWU7IGl0IGlzIGEKKyAgICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlOyBpdCBpcyBhCiAgICBmYXRhbCBlcnJvciBpZiB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbHMuCiAKICAgIC4uIG5vdGU6OgpAQCAtNTIsMTkgKzUyLDIwIEBACiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5X0lzSW5pdGlhbGl6ZWQoKQogCiAgICBSZXR1cm4gdHJ1ZSAobm9uemVybykgd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBmYWxzZQotICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBpcyBjYWxsZWQsIHRoaXMgcmV0dXJucyBmYWxzZSB1bnRpbAorICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyByZXR1cm5zIGZhbHNlIHVudGlsCiAgICA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBpcyBjYWxsZWQgYWdhaW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfRmluYWxpemUoKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeV9GaW5hbGl6ZUV4KCkKIAogICAgVW5kbyBhbGwgaW5pdGlhbGl6YXRpb25zIG1hZGUgYnkgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYW5kIHN1YnNlcXVlbnQgdXNlIG9mCiAgICBQeXRob24vQyBBUEkgZnVuY3Rpb25zLCBhbmQgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyAoc2VlCiAgICA6YzpmdW5jOmBQeV9OZXdJbnRlcnByZXRlcmAgYmVsb3cpIHRoYXQgd2VyZSBjcmVhdGVkIGFuZCBub3QgeWV0IGRlc3Ryb3llZCBzaW5jZQogICAgdGhlIGxhc3QgY2FsbCB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4gIElkZWFsbHksIHRoaXMgZnJlZXMgYWxsIG1lbW9yeQogICAgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBUaGlzIGlzIGEgbm8tb3Agd2hlbiBjYWxsZWQgZm9yIGEgc2Vjb25kCi0gICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuCi0gICB2YWx1ZTsgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24gYXJlIGlnbm9yZWQuCisgICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgTm9ybWFsbHkgdGhlCisgICByZXR1cm4gdmFsdWUgaXMgMC4gIElmIHRoZXJlIHdlcmUgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24KKyAgIChmbHVzaGluZyBidWZmZXJlZCBkYXRhKSwgLTEgaXMgcmV0dXJuZWQuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuICBBbiBlbWJlZGRpbmcgYXBwbGljYXRpb24KICAgIG1pZ2h0IHdhbnQgdG8gcmVzdGFydCBQeXRob24gd2l0aG91dCBoYXZpbmcgdG8gcmVzdGFydCB0aGUgYXBwbGljYXRpb24gaXRzZWxmLgpAQCAtODMsNyArODQsMTUgQEAKICAgIGZyZWVkLiAgU29tZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzIG1heSBub3QgYmUgZnJlZWQuICBTb21lCiAgICBleHRlbnNpb25zIG1heSBub3Qgd29yayBwcm9wZXJseSBpZiB0aGVpciBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIGNhbGxlZCBtb3JlCiAgICB0aGFuIG9uY2U7IHRoaXMgY2FuIGhhcHBlbiBpZiBhbiBhcHBsaWNhdGlvbiBjYWxscyA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBhbmQKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBtb3JlIHRoYW4gb25jZS4KKyAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIG1vcmUgdGhhbiBvbmNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9GaW5hbGl6ZSgpCisKKyAgIFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIHRoYXQKKyAgIGRpc3JlZ2FyZHMgdGhlIHJldHVybiB2YWx1ZS4KIAogCiBQcm9jZXNzLXdpZGUgcGFyYW1ldGVycwpAQCAtMTExLDcgKzEyMCw3IEBACiAgICBOb3RlIHRoYXQgOmRhdGE6YHN5cy5zdGRlcnJgIGFsd2F5cyB1c2VzIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IKICAgIGhhbmRsZXIsIHJlZ2FyZGxlc3Mgb2YgdGhpcyAob3IgYW55IG90aGVyKSBzZXR0aW5nLgogCi0gICBJZiA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgaXMgY2FsbGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgbmVlZCB0byBiZSBjYWxsZWQKKyAgIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIG5lZWQgdG8gYmUgY2FsbGVkCiAgICBhZ2FpbiBpbiBvcmRlciB0byBhZmZlY3Qgc3Vic2VxdWVudCBjYWxscyB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4KIAogICAgUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIGEgbm9uemVybyB2YWx1ZSBvbiBlcnJvciAoZS5nLiBjYWxsaW5nIGFmdGVyIHRoZQpAQCAtOTIyLDcgKzkzMSw3IEBACiAgICBlbnRyeS4pCiAKICAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogUHlfRmluYWxpemUoKQorICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKICAgICAgIHNpbmdsZTogUHlfSW5pdGlhbGl6ZSgpCiAKICAgIEV4dGVuc2lvbiBtb2R1bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiAoc3ViLSlpbnRlcnByZXRlcnMgYXMgZm9sbG93czogdGhlIGZpcnN0CkBAIC05MzIsNyArOTQxLDcgQEAKICAgIGFuZCBmaWxsZWQgd2l0aCB0aGUgY29udGVudHMgb2YgdGhpcyBjb3B5OyB0aGUgZXh0ZW5zaW9uJ3MgYGBpbml0YGAgZnVuY3Rpb24gaXMKICAgIG5vdCBjYWxsZWQuICBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGhhcHBlbnMgd2hlbiBhbiBleHRlbnNpb24gaXMKICAgIGltcG9ydGVkIGFmdGVyIHRoZSBpbnRlcnByZXRlciBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlLWluaXRpYWxpemVkIGJ5IGNhbGxpbmcKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBhbmQgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWA7IGluIHRoYXQgY2FzZSwgdGhlIGV4dGVuc2lvbidzCisgICA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBhbmQgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWA7IGluIHRoYXQgY2FzZSwgdGhlIGV4dGVuc2lvbidzCiAgICBgYGluaXRtb2R1bGVgYCBmdW5jdGlvbiAqaXMqIGNhbGxlZCBhZ2Fpbi4KIAogICAgLi4gaW5kZXg6OiBzaW5nbGU6IGNsb3NlKCkgKGluIG1vZHVsZSBvcykKQEAgLTk0MCwxNCArOTQ5LDE0IEBACiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKIAotICAgLi4gaW5kZXg6OiBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgIC4uIGluZGV4Ojogc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKIAogICAgRGVzdHJveSB0aGUgKHN1Yi0paW50ZXJwcmV0ZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIHRocmVhZCBzdGF0ZS4gVGhlIGdpdmVuCiAgICB0aHJlYWQgc3RhdGUgbXVzdCBiZSB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUuICBTZWUgdGhlIGRpc2N1c3Npb24gb2YgdGhyZWFkCiAgICBzdGF0ZXMgYmVsb3cuICBXaGVuIHRoZSBjYWxsIHJldHVybnMsIHRoZSBjdXJyZW50IHRocmVhZCBzdGF0ZSBpcyAqTlVMTCouICBBbGwKICAgIHRocmVhZCBzdGF0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW50ZXJwcmV0ZXIgYXJlIGRlc3Ryb3llZC4gIChUaGUgZ2xvYmFsCiAgICBpbnRlcnByZXRlciBsb2NrIG11c3QgYmUgaGVsZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFuZCBpcyBzdGlsbCBoZWxkCi0gICB3aGVuIGl0IHJldHVybnMuKSAgOmM6ZnVuYzpgUHlfRmluYWxpemVgIHdpbGwgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyB0aGF0CisgICB3aGVuIGl0IHJldHVybnMuKSAgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgd2lsbCBkZXN0cm95IGFsbCBzdWItaW50ZXJwcmV0ZXJzIHRoYXQKICAgIGhhdmVuJ3QgYmVlbiBleHBsaWNpdGx5IGRlc3Ryb3llZCBhdCB0aGF0IHBvaW50LgogCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbnRyby5yc3QgYi9Eb2MvYy1hcGkvaW50cm8ucnN0CmluZGV4IGJjM2E3NTIuLjc0NjgxZDIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbnRyby5yc3QKKysrIGIvRG9jL2MtYXBpL2ludHJvLnJzdApAQCAtNjQsOSArNjQsMTAgQEAKIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yaWVzIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlL3B5dGhvbnZlcnNpb24vYCBhbmQKIDpmaWxlOmB7ZXhlY19wcmVmaXh9L2luY2x1ZGUvcHl0aG9udmVyc2lvbi9gLCB3aGVyZSA6ZW52dmFyOmBwcmVmaXhgIGFuZAogOmVudnZhcjpgZXhlY19wcmVmaXhgIGFyZSBkZWZpbmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMgdG8gUHl0aG9uJ3MKLTpwcm9ncmFtOmBjb25maWd1cmVgIHNjcmlwdCBhbmQgKnZlcnNpb24qIGlzIGBgc3lzLnZlcnNpb25bOjNdYGAuICBPbiBXaW5kb3dzLAotdGhlIGhlYWRlcnMgYXJlIGluc3RhbGxlZCBpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZWAsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgaXMKLXRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHNwZWNpZmllZCB0byB0aGUgaW5zdGFsbGVyLgorOnByb2dyYW06YGNvbmZpZ3VyZWAgc2NyaXB0IGFuZCAqdmVyc2lvbiogaXMKK2BgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdYGAuICBPbiBXaW5kb3dzLCB0aGUgaGVhZGVycyBhcmUgaW5zdGFsbGVkCitpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZWAsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgaXMgdGhlIGluc3RhbGxhdGlvbgorZGlyZWN0b3J5IHNwZWNpZmllZCB0byB0aGUgaW5zdGFsbGVyLgogCiBUbyBpbmNsdWRlIHRoZSBoZWFkZXJzLCBwbGFjZSBib3RoIGRpcmVjdG9yaWVzIChpZiBkaWZmZXJlbnQpIG9uIHlvdXIgY29tcGlsZXIncwogc2VhcmNoIHBhdGggZm9yIGluY2x1ZGVzLiAgRG8gKm5vdCogcGxhY2UgdGhlIHBhcmVudCBkaXJlY3RvcmllcyBvbiB0aGUgc2VhcmNoCkBAIC01NzgsOSArNTc5LDkgQEAKIGFwcGxpY2F0aW9uIG1heSB3YW50IHRvIHN0YXJ0IG92ZXIgKG1ha2UgYW5vdGhlciBjYWxsIHRvCiA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCkgb3IgdGhlIGFwcGxpY2F0aW9uIGlzIHNpbXBseSBkb25lIHdpdGggaXRzICB1c2Ugb2YKIFB5dGhvbiBhbmQgd2FudHMgdG8gZnJlZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IFB5dGhvbi4gIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZAotYnkgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAuICBUaGUgZnVuY3Rpb24gOmM6ZnVuYzpgUHlfSXNJbml0aWFsaXplZGAgcmV0dXJucworYnkgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YC4gIFRoZSBmdW5jdGlvbiA6YzpmdW5jOmBQeV9Jc0luaXRpYWxpemVkYCByZXR1cm5zCiB0cnVlIGlmIFB5dGhvbiBpcyBjdXJyZW50bHkgaW4gdGhlIGluaXRpYWxpemVkIHN0YXRlLiAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dAotdGhlc2UgZnVuY3Rpb25zIGlzIGdpdmVuIGluIGEgbGF0ZXIgY2hhcHRlci4gTm90aWNlIHRoYXQgOmM6ZnVuYzpgUHlfRmluYWxpemVgCit0aGVzZSBmdW5jdGlvbnMgaXMgZ2l2ZW4gaW4gYSBsYXRlciBjaGFwdGVyLiBOb3RpY2UgdGhhdCA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YAogZG9lcyAqbm90KiBmcmVlIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIGUuZy4gbWVtb3J5CiBhbGxvY2F0ZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMgY3VycmVudGx5IGNhbm5vdCBiZSByZWxlYXNlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xvbmcucnN0IGIvRG9jL2MtYXBpL2xvbmcucnN0CmluZGV4IGIzNDgwMTUuLmJhZTk3MDMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9sb25nLnJzdAorKysgYi9Eb2MvYy1hcGkvbG9uZy5yc3QKQEAgLTYyLDEzICs2MiwxMyBAQAogICAgKk5VTEwqIG9uIGZhaWx1cmUuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyB2KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyB2KQogCiAgICBSZXR1cm4gYSBuZXcgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCBvYmplY3QgZnJvbSBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCwgb3IgKk5VTEwqCiAgICBvbiBmYWlsdXJlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgbG9uZyBsb25nIHYpCiAKICAgIFJldHVybiBhIG5ldyA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgIG9iamVjdCBmcm9tIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgLAogICAgb3IgKk5VTEwqIG9uIGZhaWx1cmUuCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAgIG9jY3VycyBzZXQgKlwqb3ZlcmZsb3cqIHRvIGBgMGBgIGFuZCByZXR1cm4gYGAtMWBgIGFzIHVzdWFsLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQWV9MT05HX0xPTkcgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKm9iaikKKy4uIGM6ZnVuY3Rpb246OiBsb25nIGxvbmcgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKm9iaikKIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBPdmVyZmxvd0Vycm9yIChidWlsdC1pbiBleGNlcHRpb24pCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgIDpjOnR5cGU6YGxvbmdgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQWV9MT05HX0xPTkcgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqb2JqLCBpbnQgKm92ZXJmbG93KQorLi4gYzpmdW5jdGlvbjo6IGxvbmcgbG9uZyBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICpvYmosIGludCAqb3ZlcmZsb3cpCiAKICAgIFJldHVybiBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqb2JqKi4gIElmICpvYmoqIGlzIG5vdCBhbgogICAgaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCwgZmlyc3QgY2FsbCBpdHMgOm1ldGg6YF9faW50X19gIG1ldGhvZApAQCAtMjEwLDE2ICsyMTAsMTYgQEAKICAgIDpjOnR5cGU6YHNpemVfdGAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICpweWxvbmcpCisuLiBjOmZ1bmN0aW9uOjogdW5zaWduZWQgbG9uZyBsb25nIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKnB5bG9uZykKIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBPdmVyZmxvd0Vycm9yIChidWlsdC1pbiBleGNlcHRpb24pCiAKLSAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgUFlfTE9OR19MT05HYCByZXByZXNlbnRhdGlvbiBvZiAqcHlsb25nKi4KLSAgICpweWxvbmcqIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YC4KKyAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqcHlsb25nKi4gICpweWxvbmcqCisgICBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAuCiAKICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGlmIHRoZSB2YWx1ZSBvZiAqcHlsb25nKiBpcyBvdXQgb2YgcmFuZ2UgZm9yIGFuCi0gICA6Yzp0eXBlOmB1bnNpZ25lZCBQWV9MT05HX0xPTkdgLgorICAgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEEgbmVnYXRpdmUgKnB5bG9uZyogbm93IHJhaXNlcyA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgbm90IDpleGM6YFR5cGVFcnJvcmAuCkBAIC0yMzUsNyArMjM1LDcgQEAKICAgIHJldHVybiB0aGUgcmVkdWN0aW9uIG9mIHRoYXQgdmFsdWUgbW9kdWxvIDpjb25zdDpgVUxPTkdfTUFYICsgMWAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb2JqKQorLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIGxvbmcgbG9uZyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb2JqKQogCiAgICBSZXR1cm4gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgcmVwcmVzZW50YXRpb24gb2YgKm9iaiouICBJZiAqb2JqKgogICAgaXMgbm90IGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAsIGZpcnN0IGNhbGwgaXRzIDptZXRoOmBfX2ludF9fYApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21lbW9yeS5yc3QgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdAppbmRleCAyOTBlZjA5Li4zZmY1NDUyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdAorKysgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdApAQCAtODUsOSArODUsMTIgQEAKIAogLi4gc2VlYWxzbzo6CiAKKyAgIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZQorICAgdGhlIG1lbW9yeSBhbGxvY2F0b3JzIHVzZWQgYnkgUHl0aG9uLgorCiAgICBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DU1RBVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIHByaW50Ci0gICBtZW1vcnkgYWxsb2NhdGlvbiBzdGF0aXN0aWNzIGV2ZXJ5IHRpbWUgYSBuZXcgb2JqZWN0IGFyZW5hIGlzIGNyZWF0ZWQsIGFuZAotICAgb24gc2h1dGRvd24uCisgICBzdGF0aXN0aWNzIG9mIHRoZSA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yIDxweW1hbGxvYz5gIGV2ZXJ5IHRpbWUgYQorICAgbmV3IHB5bWFsbG9jIG9iamVjdCBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCiAKIAogUmF3IE1lbW9yeSBJbnRlcmZhY2UKQEAgLTE2MiwxNSArMTY1LDE3IEBACiBiZWhhdmlvciB3aGVuIHJlcXVlc3RpbmcgemVybyBieXRlcywgYXJlIGF2YWlsYWJsZSBmb3IgYWxsb2NhdGluZyBhbmQgcmVsZWFzaW5nCiBtZW1vcnkgZnJvbSB0aGUgUHl0aG9uIGhlYXAuCiAKLVRoZSBkZWZhdWx0IG1lbW9yeSBibG9jayBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKLTpjOmZ1bmM6YG1hbGxvY2AsIDpjOmZ1bmM6YGNhbGxvY2AsIDpjOmZ1bmM6YHJlYWxsb2NgIGFuZCA6YzpmdW5jOmBmcmVlYDsgY2FsbAotYGBtYWxsb2MoMSlgYCAob3IgYGBjYWxsb2MoMSwgMSlgYCkgd2hlbiByZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCitCeSBkZWZhdWx0LCB0aGVzZSBmdW5jdGlvbnMgdXNlIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IgPHB5bWFsbG9jPmAuCiAKIC4uIHdhcm5pbmc6OgogCiAgICBUaGUgOnRlcm06YEdJTCA8Z2xvYmFsIGludGVycHJldGVyIGxvY2s+YCBtdXN0IGJlIGhlbGQgd2hlbiB1c2luZyB0aGVzZQogICAgZnVuY3Rpb25zLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBUaGUgZGVmYXVsdCBhbGxvY2F0b3IgaXMgbm93IHB5bWFsbG9jIGluc3RlYWQgb2Ygc3lzdGVtIDpjOmZ1bmM6YG1hbGxvY2AuCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9NYWxsb2Moc2l6ZV90IG4pCiAKICAgIEFsbG9jYXRlcyAqbiogYnl0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIG9mIHR5cGUgOmM6dHlwZTpgdm9pZFwqYCB0byB0aGUKQEAgLTI5MiwxNSArMjk3LDMyIEBACiAKICAgIEVudW0gdXNlZCB0byBpZGVudGlmeSBhbiBhbGxvY2F0b3IgZG9tYWluLiBEb21haW5zOgogCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9SQVdgOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AgYW5kCi0gICAgIDpjOmZ1bmM6YFB5TWVtX1Jhd0ZyZWVgCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AgYW5kIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AgYW5kCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9SQVcKIAorICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAorCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9NRU0KKworICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AsCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fRnJlZWAKKworICAgLi4gYzp2YXI6OiBQWU1FTV9ET01BSU5fT0JKCisKKyAgICAgIEZ1bmN0aW9uczoKKworICAgICAgKiA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2NhdG9yKQogCkBAIC0zMjUsNDMgKzM0Nyw2MiBAQAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKIAotICAgU2V0dXAgaG9va3MgdG8gZGV0ZWN0IGJ1Z3MgaW4gdGhlIGZvbGxvd2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgotICAgZnVuY3Rpb25zOgotCi0gICAtIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9SYXdDYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAotICAgLSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SZWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fRnJlZWAKLSAgIC0gOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisgICBTZXR1cCBob29rcyB0byBkZXRlY3QgYnVncyBpbiB0aGUgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgZnVuY3Rpb25zLgogCiAgICBOZXdseSBhbGxvY2F0ZWQgbWVtb3J5IGlzIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhDQmBgLCBmcmVlZCBtZW1vcnkgaXMKLSAgIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgLiBBZGRpdGlvbmFsIGNoZWNrczoKKyAgIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgLgogCi0gICAtIGRldGVjdCBBUEkgdmlvbGF0aW9ucywgZXg6IDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgIGNhbGxlZCBvbiBhIGJ1ZmZlcgorICAgUnVudGltZSBjaGVja3M6CisKKyAgIC0gRGV0ZWN0IEFQSSB2aW9sYXRpb25zLCBleDogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAgY2FsbGVkIG9uIGEgYnVmZmVyCiAgICAgIGFsbG9jYXRlZCBieSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgCi0gICAtIGRldGVjdCB3cml0ZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgKGJ1ZmZlciB1bmRlcmZsb3cpCi0gICAtIGRldGVjdCB3cml0ZSBhZnRlciB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKGJ1ZmZlciBvdmVyZmxvdykKKyAgIC0gRGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKKyAgIC0gRGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorICAgLSBDaGVjayB0aGF0IHRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIGlzIGhlbGQgd2hlbgorICAgICBhbGxvY2F0b3IgZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIChleDoKKyAgICAgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgYW5kIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDoKKyAgICAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCkgZG9tYWlucyBhcmUgY2FsbGVkCiAKLSAgIFRoZSBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgaWYgUHl0aG9uIGlzIG5vdCBjb21waWxlZCBpcyBkZWJ1ZyBtb2RlLgorICAgT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyB1c2UgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZQorICAgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuIFRoZSB0cmFjZWJhY2sgaXMgb25seQorICAgZGlzcGxheWVkIGlmIDptb2Q6YHRyYWNlbWFsbG9jYCBpcyB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIHRoZQorICAgbWVtb3J5IGJsb2NrIHdhcyB0cmFjZWQuCisKKyAgIFRoZXNlIGhvb2tzIGFyZSBpbnN0YWxsZWQgYnkgZGVmYXVsdCBpZiBQeXRob24gaXMgY29tcGlsZWQgaW4gZGVidWcKKyAgIG1vZGUuIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGluc3RhbGwKKyAgIGRlYnVnIGhvb2tzIG9uIGEgUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGFsc28gd29ya3Mgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKyAgICAgIE9uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgbm93IHVzZSA6bW9kOmB0cmFjZW1hbGxvY2AgdG8gZ2V0IHRoZSB0cmFjZWJhY2sKKyAgICAgIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuIFRoZSBkZWJ1ZyBob29rcyBub3cgYWxzbyBjaGVjaworICAgICAgaWYgdGhlIEdJTCBpcyBoZWxkIHdoZW4gZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIGFuZAorICAgICAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgZG9tYWlucyBhcmUgY2FsbGVkLgogCiAKLUN1c3RvbWl6ZSBQeU9iamVjdCBBcmVuYSBBbGxvY2F0b3IKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy4uIF9weW1hbGxvYzoKIAotUHl0aG9uIGhhcyBhICpweW1hbGxvYyogYWxsb2NhdG9yIGZvciBhbGxvY2F0aW9ucyBzbWFsbGVyIHRoYW4gNTEyIGJ5dGVzLiBUaGlzCi1hbGxvY2F0b3IgaXMgb3B0aW1pemVkIGZvciBzbWFsbCBvYmplY3RzIHdpdGggYSBzaG9ydCBsaWZldGltZS4gSXQgdXNlcyBtZW1vcnkKLW1hcHBpbmdzIGNhbGxlZCAiYXJlbmFzIiB3aXRoIGEgZml4ZWQgc2l6ZSBvZiAyNTYgS0IuIEl0IGZhbGxzIGJhY2sgdG8KLTpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AgYW5kIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIKLXRoYW4gNTEyIGJ5dGVzLiAgKnB5bWFsbG9jKiBpcyB0aGUgZGVmYXVsdCBhbGxvY2F0b3IgdXNlZCBieQotOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYC4KK1RoZSBweW1hbGxvYyBhbGxvY2F0b3IKKz09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIGRlZmF1bHQgYXJlbmEgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CitQeXRob24gaGFzIGEgKnB5bWFsbG9jKiBhbGxvY2F0b3Igb3B0aW1pemVkIGZvciBzbWFsbCBvYmplY3RzIChzbWFsbGVyIG9yIGVxdWFsCit0byA1MTIgYnl0ZXMpIHdpdGggYSBzaG9ydCBsaWZldGltZS4gSXQgdXNlcyBtZW1vcnkgbWFwcGluZ3MgY2FsbGVkICJhcmVuYXMiCit3aXRoIGEgZml4ZWQgc2l6ZSBvZiAyNTYgS0IuIEl0IGZhbGxzIGJhY2sgdG8gOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCBhbmQKKzpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIgdGhhbiA1MTIgYnl0ZXMuCisKKypweW1hbGxvYyogaXMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIG9mIHRoZSA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCAoZXg6Cis6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBhbmQgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgKGV4OgorOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgZG9tYWlucy4KKworVGhlIGFyZW5hIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAqIDpjOmZ1bmM6YFZpcnR1YWxBbGxvY2AgYW5kIDpjOmZ1bmM6YFZpcnR1YWxGcmVlYCBvbiBXaW5kb3dzLAogKiA6YzpmdW5jOmBtbWFwYCBhbmQgOmM6ZnVuYzpgbXVubWFwYCBpZiBhdmFpbGFibGUsCiAqIDpjOmZ1bmM6YG1hbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgIG90aGVyd2lzZS4KIAorQ3VzdG9taXplIHB5bWFsbG9jIEFyZW5hIEFsbG9jYXRvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogLi4gYzp0eXBlOjogUHlPYmplY3RBcmVuYUFsbG9jYXRvcgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0IGIvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0CmluZGV4IGNjODQzMTQuLmU5ZThhZGQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QKQEAgLTE1MCw4ICsxNTAsOSBAQAogVGhlIDphdHRyOmBtbF9mbGFnc2AgZmllbGQgaXMgYSBiaXRmaWVsZCB3aGljaCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGZsYWdzLgogVGhlIGluZGl2aWR1YWwgZmxhZ3MgaW5kaWNhdGUgZWl0aGVyIGEgY2FsbGluZyBjb252ZW50aW9uIG9yIGEgYmluZGluZwogY29udmVudGlvbi4gIE9mIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gZmxhZ3MsIG9ubHkgOmNvbnN0OmBNRVRIX1ZBUkFSR1NgIGFuZAotOmNvbnN0OmBNRVRIX0tFWVdPUkRTYCBjYW4gYmUgY29tYmluZWQuIEFueSBvZiB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZsYWdzCi1jYW4gYmUgY29tYmluZWQgd2l0aCBhIGJpbmRpbmcgZmxhZy4KKzpjb25zdDpgTUVUSF9LRVlXT1JEU2AgY2FuIGJlIGNvbWJpbmVkIChidXQgbm90ZSB0aGF0IDpjb25zdDpgTUVUSF9LRVlXT1JEU2AKK2Fsb25lIGlzIGVxdWl2YWxlbnQgdG8gYGBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTYGApLiBBbnkgb2YgdGhlIGNhbGxpbmcKK2NvbnZlbnRpb24gZmxhZ3MgY2FuIGJlIGNvbWJpbmVkIHdpdGggYSBiaW5kaW5nIGZsYWcuCiAKIAogLi4gZGF0YTo6IE1FVEhfVkFSQVJHUwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N5cy5yc3QgYi9Eb2MvYy1hcGkvc3lzLnJzdAppbmRleCAzZDgzYjI3Li4wMzVjZGMxIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvc3lzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3lzLnJzdApAQCAtNSw2ICs1LDE3IEBACiBPcGVyYXRpbmcgU3lzdGVtIFV0aWxpdGllcwogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCkKKworICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbiBmb3IgKnBhdGgqLiBJZiB0aGUgb2JqZWN0IGlzIGEKKyAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QsIHRoZW4gaXRzIHJlZmVyZW5jZSBjb3VudCBpcworICAgaW5jcmVtZW50ZWQuIElmIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlLAorICAgdGhlbiA6bWV0aDpgfm9zLlBhdGhMaWtlLl9fZnNwYXRoX19gIGlzIHJldHVybmVkIGFzIGxvbmcgYXMgaXQgaXMgYQorICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gT3RoZXJ3aXNlIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkCisgICBhbmQgYGBOVUxMYGAgaXMgcmV0dXJuZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIApAQCAtMjEyLDIwICsyMjMsMjQgQEAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0V4aXQoaW50IHN0YXR1cykKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBleGl0KCkKIAotICAgRXhpdCB0aGUgY3VycmVudCBwcm9jZXNzLiAgVGhpcyBjYWxscyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgYW5kIHRoZW4gY2FsbHMgdGhlCi0gICBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb24gYGBleGl0KHN0YXR1cylgYC4KKyAgIEV4aXQgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIFRoaXMgY2FsbHMgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgYW5kIHRoZW4gY2FsbHMgdGhlCisgICBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb24gYGBleGl0KHN0YXR1cylgYC4gIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgCisgICBpbmRpY2F0ZXMgYW4gZXJyb3IsIHRoZSBleGl0IHN0YXR1cyBpcyBzZXQgdG8gMTIwLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgRXJyb3JzIGZyb20gZmluYWxpemF0aW9uIG5vIGxvbmdlciBpZ25vcmVkLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfQXRFeGl0KHZvaWQgKCpmdW5jKSAoKSkKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBjbGVhbnVwIGZ1bmN0aW9ucwogCi0gICBSZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IDpjOmZ1bmM6YFB5X0ZpbmFsaXplYC4gIFRoZSBjbGVhbnVwCisgICBSZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgLiAgVGhlIGNsZWFudXAKICAgIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIGFuZCBzaG91bGQgcmV0dXJuIG5vIHZhbHVlLiAgQXQgbW9zdAogICAgMzIgY2xlYW51cCBmdW5jdGlvbnMgY2FuIGJlIHJlZ2lzdGVyZWQuICBXaGVuIHRoZSByZWdpc3RyYXRpb24gaXMgc3VjY2Vzc2Z1bCwKICAgIDpjOmZ1bmM6YFB5X0F0RXhpdGAgcmV0dXJucyBgYDBgYDsgb24gZmFpbHVyZSwgaXQgcmV0dXJucyBgYC0xYGAuICBUaGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IDI2MWE0M2MuLmQxMDE1ZGQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTQ0MCw3ICs0NDAsNiBAQAogICAgLi4gJSBiZWNhdXNlIG5vdCBhbGwgY29tcGlsZXJzIHN1cHBvcnQgdGhlICV6IHdpZHRoIG1vZGlmaWVyIC0tIHdlIGZha2UgaXQKICAgIC4uICUgd2hlbiBuZWNlc3NhcnkgdmlhIGludGVycG9sYXRpbmcgUFlfRk9STUFUX1NJWkVfVC4KICAgIC4uICUgU2ltaWxhciBjb21tZW50cyBhcHBseSB0byB0aGUgJWxsIHdpZHRoIG1vZGlmaWVyIGFuZAotICAgLi4gJSBQWV9GT1JNQVRfTE9OR19MT05HLgogCiAgICAuLiB0YWJ1bGFyY29sdW1uczo6IHxsfGx8THwKIApAQCAtNTI1LDExICs1MjQsNiBAQAogICAgY29waWVkIGFzLWlzIHRvIHRoZSByZXN1bHQgc3RyaW5nLCBhbmQgYW55IGV4dHJhIGFyZ3VtZW50cyBkaXNjYXJkZWQuCiAKICAgIC4uIG5vdGU6OgotCi0gICAgICBUaGUgYCIlbGxkImAgYW5kIGAiJWxsdSJgIGZvcm1hdCBzcGVjaWZpZXJzIGFyZSBvbmx5IGF2YWlsYWJsZQotICAgICAgd2hlbiA6Y29uc3Q6YEhBVkVfTE9OR19MT05HYCBpcyBkZWZpbmVkLgotCi0gICAuLiBub3RlOjoKICAgICAgIFRoZSB3aWR0aCBmb3JtYXR0ZXIgdW5pdCBpcyBudW1iZXIgb2YgY2hhcmFjdGVycyByYXRoZXIgdGhhbiBieXRlcy4KICAgICAgIFRoZSBwcmVjaXNpb24gZm9ybWF0dGVyIHVuaXQgaXMgbnVtYmVyIG9mIGJ5dGVzIGZvciBgYCIlcyJgYCBhbmQKICAgICAgIGBgIiVWImBgIChpZiB0aGUgYGBQeU9iamVjdCpgYCBhcmd1bWVudCBpcyBOVUxMKSwgYW5kIGEgbnVtYmVyIG9mCkBAIC04MDgsMzggKzgwMiw0NyBAQAogIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogVG8gZW5jb2RlIGFuZCBkZWNvZGUgZmlsZSBuYW1lcyBhbmQgb3RoZXIgZW52aXJvbm1lbnQgc3RyaW5ncywKLTpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1FbmNvZGluZ2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVuY29kaW5nLCBhbmQKLWBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZXJyb3IgaGFuZGxlciAoOnBlcDpgMzgzYCkuIFRvCi1lbmNvZGUgZmlsZSBuYW1lcyBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUKLXVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTQ29udmVydGVyYCBhcyB0aGUgY29udmVyc2lvbiBmdW5jdGlvbjoKKzpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBlbmNvZGluZywgYW5kCis6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVycm9yIGhhbmRsZXIKKyg6cGVwOmAzODNgIGFuZCA6cGVwOmA1MjlgKS4gVG8gZW5jb2RlIGZpbGUgbmFtZXMgdG8gOmNsYXNzOmBieXRlc2AgZHVyaW5nCithcmd1bWVudCBwYXJzaW5nLCB0aGUgYGAiTyYiYGAgY29udmVydGVyIHNob3VsZCBiZSB1c2VkLCBwYXNzaW5nCis6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgIGFzIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uOgogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9GU0NvbnZlcnRlcihQeU9iamVjdCogb2JqLCB2b2lkKiByZXN1bHQpCiAKLSAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgOmNsYXNzOmBzdHJgIG9iamVjdHMgdG8gOmNsYXNzOmBieXRlc2AgdXNpbmcKKyAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgOmNsYXNzOmBzdHJgIG9iamVjdHMgLS0gb2J0YWluZWQgZGlyZWN0bHkgb3IKKyAgIHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSAtLSB0byA6Y2xhc3M6YGJ5dGVzYCB1c2luZwogICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdGA7IDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4KICAgICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeUJ5dGVzT2JqZWN0KmAgd2hpY2ggbXVzdCBiZSByZWxlYXNlZCB3aGVuIGl0IGlzCiAgICBubyBsb25nZXIgdXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCi1UbyBkZWNvZGUgZmlsZSBuYW1lcyBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUKLXVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTRGVjb2RlcmAgYXMgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb246CitUbyBkZWNvZGUgZmlsZSBuYW1lcyB0byA6Y2xhc3M6YHN0cmAgZHVyaW5nIGFyZ3VtZW50IHBhcnNpbmcsIHRoZSBgYCJPJiJgYAorY29udmVydGVyIHNob3VsZCBiZSB1c2VkLCBwYXNzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9GU0RlY29kZXJgIGFzIHRoZQorY29udmVyc2lvbiBmdW5jdGlvbjoKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfRlNEZWNvZGVyKFB5T2JqZWN0KiBvYmosIHZvaWQqIHJlc3VsdCkKIAotICAgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGRlY29kZSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzIHRvIDpjbGFzczpgc3RyYCB1c2luZwotICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgOyA6Y2xhc3M6YHN0cmAgb2JqZWN0cyBhcmUgb3V0cHV0Ci0gICBhcy1pcy4gKnJlc3VsdCogbXVzdCBiZSBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdCpgIHdoaWNoIG11c3QgYmUgcmVsZWFzZWQKLSAgIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCisgICBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZGVjb2RlIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgLS0gb2J0YWluZWQgZWl0aGVyCisgICBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSAtLSB0bworICAgOmNsYXNzOmBzdHJgIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYDsgOmNsYXNzOmBzdHJgCisgICBvYmplY3RzIGFyZSBvdXRwdXQgYXMtaXMuICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3QqYCB3aGljaAorICAgbXVzdCBiZSByZWxlYXNlZCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiAKICAgIERlY29kZSBhIHN0cmluZyB1c2luZyA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBhbmQgdGhlCi0gICBgYCJzdXJyb2dhdGVlc2NhcGUiYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAic3RyaWN0ImBgIG9uIFdpbmRvd3MuCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgpAQCAtODUzLDI4ICs4NTYsMjggQEAKIAogICAgICAgVGhlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBVc2UgYGAic3RyaWN0ImBgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVc2UgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGNvbnN0IGNoYXIgKnMpCiAKICAgIERlY29kZSBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdXNpbmcgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AKLSAgIGFuZCB0aGUgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLgorICAgYW5kIHRoZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCiAgICBVc2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgIGlmIHlvdSBrbm93IHRoZSBzdHJpbmcgbGVuZ3RoLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVXNlIGBgInN0cmljdCJgYCBlcnJvciBoYW5kbGVyIG9uIFdpbmRvd3MuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVXNlIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2Agd2l0aCB0aGUKLSAgIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBlcnJvciBoYW5kbGVyLCBvciBgYCJzdHJpY3QiYGAgb24gV2luZG93cywgYW5kIHJldHVybgorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIsIGFuZCByZXR1cm4KICAgIDpjbGFzczpgYnl0ZXNgLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgbWF5IGNvbnRhaW4KICAgIG51bGwgYnl0ZXMuCiAKQEAgLTg5MSw2ICs4OTQsOCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVzZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogd2NoYXJfdCBTdXBwb3J0CiAiIiIiIiIiIiIiIiIiIiIKZGlmZiAtLWdpdCBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CmluZGV4IGUzODgxOTUuLjhiNDY5ZjQgMTAwNjQ0Ci0tLSBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKKysrIGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdApAQCAtOTIxLDYgKzkyMSw5IEBACiBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yOmludDo6OgogUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcjpQeU9iamVjdCo6bzowOgogCitQeU9TX0ZTUGF0aDpQeU9iamVjdCo6OisxOgorUHlPU19GU1BhdGg6UHlPYmplY3QqOnBhdGg6MDoKKwogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6OisxOgogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6Y2FsbGFibGVfb2JqZWN0OjA6CiBQeU9iamVjdF9DYWxsOlB5T2JqZWN0KjphcmdzOjA6CmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKaW5kZXggNjQwMzNkYy4uYWIyZjYxNiAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdApAQCAtNjcsNyArNjcsOSBAQAogICAgICAgIFB5X0luaXRpYWxpemUoKTsKICAgICAgICBQeVJ1bl9TaW1wbGVTdHJpbmcoImZyb20gdGltZSBpbXBvcnQgdGltZSxjdGltZVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpbnQoJ1RvZGF5IGlzJywgY3RpbWUodGltZSgpKSlcbiIpOwotICAgICAgIFB5X0ZpbmFsaXplKCk7CisgICAgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgICAgZXhpdCgxMjApOworICAgICAgIH0KICAgICAgICBQeU1lbV9SYXdGcmVlKHByb2dyYW0pOwogICAgICAgIHJldHVybiAwOwogICAgfQpAQCAtNzYsNyArNzgsNyBAQAogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgdG8gaW5mb3JtIHRoZSBpbnRlcnByZXRlciBhYm91dCBwYXRocyB0byBQeXRob24gcnVuLXRpbWUKIGxpYnJhcmllcy4gIE5leHQsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aAogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAsIGZvbGxvd2VkIGJ5IHRoZSBleGVjdXRpb24gb2YgYSBoYXJkLWNvZGVkIFB5dGhvbiBzY3JpcHQKLXRoYXQgcHJpbnRzIHRoZSBkYXRlIGFuZCB0aW1lLiAgQWZ0ZXJ3YXJkcywgdGhlIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBjYWxsIHNodXRzCit0aGF0IHByaW50cyB0aGUgZGF0ZSBhbmQgdGltZS4gIEFmdGVyd2FyZHMsIHRoZSA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBjYWxsIHNodXRzCiB0aGUgaW50ZXJwcmV0ZXIgZG93biwgZm9sbG93ZWQgYnkgdGhlIGVuZCBvZiB0aGUgcHJvZ3JhbS4gIEluIGEgcmVhbCBwcm9ncmFtLAogeW91IG1heSB3YW50IHRvIGdldCB0aGUgUHl0aG9uIHNjcmlwdCBmcm9tIGFub3RoZXIgc291cmNlLCBwZXJoYXBzIGEgdGV4dC1lZGl0b3IKIHJvdXRpbmUsIGEgZmlsZSwgb3IgYSBkYXRhYmFzZS4gIEdldHRpbmcgdGhlIFB5dGhvbiBjb2RlIGZyb20gYSBmaWxlIGNhbiBiZXR0ZXIKZGlmZiAtLWdpdCBhL0RvYy9mYXEvcHJvZ3JhbW1pbmcucnN0IGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKaW5kZXggNjk0NzUzZS4uOWM1ZTIwZCAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKKysrIGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKQEAgLTgzOCw3ICs4MzgsOCBAQAogVG8gY29udmVydCwgZS5nLiwgdGhlIG51bWJlciAxNDQgdG8gdGhlIHN0cmluZyAnMTQ0JywgdXNlIHRoZSBidWlsdC1pbiB0eXBlCiBjb25zdHJ1Y3RvciA6ZnVuYzpgc3RyYC4gIElmIHlvdSB3YW50IGEgaGV4YWRlY2ltYWwgb3Igb2N0YWwgcmVwcmVzZW50YXRpb24sIHVzZQogdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyA6ZnVuYzpgaGV4YCBvciA6ZnVuYzpgb2N0YC4gIEZvciBmYW5jeSBmb3JtYXR0aW5nLCBzZWUKLXRoZSA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9uLCBlLmcuIGBgIns6MDRkfSIuZm9ybWF0KDE0NClgYCB5aWVsZHMKK3RoZSA6cmVmOmBmLXN0cmluZ3NgIGFuZCA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9ucywKK2UuZy4gYGAiezowNGR9Ii5mb3JtYXQoMTQ0KWBgIHlpZWxkcwogYGAnMDE0NCdgYCBhbmQgYGAiezouM2Z9Ii5mb3JtYXQoMS4wLzMuMClgYCB5aWVsZHMgYGAnMC4zMzMnYGAuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2dsb3NzYXJ5LnJzdCBiL0RvYy9nbG9zc2FyeS5yc3QKaW5kZXggNDViNzk0Zi4uZjgwYjZkZiAxMDA2NDQKLS0tIGEvRG9jL2dsb3NzYXJ5LnJzdAorKysgYi9Eb2MvZ2xvc3NhcnkucnN0CkBAIC03MTgsNiArNzE4LDggQEAKIAogICAgICAgICAgICBkZWYgZnVuYyhmb28sIGJhcj1Ob25lKTogLi4uCiAKKyAgICAgIC4uIF9wb3NpdGlvbmFsLW9ubHlfcGFyYW1ldGVyOgorCiAgICAgICAqIDpkZm46YHBvc2l0aW9uYWwtb25seWA6IHNwZWNpZmllcyBhbiBhcmd1bWVudCB0aGF0IGNhbiBiZSBzdXBwbGllZCBvbmx5CiAgICAgICAgIGJ5IHBvc2l0aW9uLiAgUHl0aG9uIGhhcyBubyBzeW50YXggZm9yIGRlZmluaW5nIHBvc2l0aW9uYWwtb25seQogICAgICAgICBwYXJhbWV0ZXJzLiAgSG93ZXZlciwgc29tZSBidWlsdC1pbiBmdW5jdGlvbnMgaGF2ZSBwb3NpdGlvbmFsLW9ubHkKQEAgLTc3Niw2ICs3NzgsMTYgQEAKICAgICAgIE9uZSBvZiB0aGUgZGVmYXVsdCA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMgPG1ldGEgcGF0aCBmaW5kZXI+YCB3aGljaAogICAgICAgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYCBmb3IgbW9kdWxlcy4KIAorICAgcGF0aC1saWtlIG9iamVjdAorICAgICAgQW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGZpbGUgc3lzdGVtIHBhdGguIEEgcGF0aC1saWtlIG9iamVjdCBpcyBlaXRoZXIKKyAgICAgIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCByZXByZXNlbnRpbmcgYSBwYXRoLCBvciBhbiBvYmplY3QKKyAgICAgIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgcHJvdG9jb2wuIEFuIG9iamVjdCB0aGF0IHN1cHBvcnRzCisgICAgICB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgcHJvdG9jb2wgY2FuIGJlIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgc3RyYCBvcgorICAgICAgOmNsYXNzOmBieXRlc2AgZmlsZSBzeXN0ZW0gcGF0aCBieSBjYWxsaW5nIHRoZSA6ZnVuYzpgb3MuZnNwYXRoYCBmdW5jdGlvbjsKKyAgICAgIDpmdW5jOmBvcy5mc2RlY29kZWAgYW5kIDpmdW5jOmBvcy5mc2VuY29kZWAgY2FuIGJlIHVzZWQgdG8gZ3VhcmFudGVlIGEKKyAgICAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCByZXN1bHQgaW5zdGVhZCwgcmVzcGVjdGl2ZWx5LiBJbnRyb2R1Y2VkCisgICAgICBieSA6cGVwOmA1MTlgLgorCiAgICBwb3J0aW9uCiAgICAgICBBIHNldCBvZiBmaWxlcyBpbiBhIHNpbmdsZSBkaXJlY3RvcnkgKHBvc3NpYmx5IHN0b3JlZCBpbiBhIHppcCBmaWxlKQogICAgICAgdGhhdCBjb250cmlidXRlIHRvIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFzIGRlZmluZWQgaW4gOnBlcDpgNDIwYC4KQEAgLTk1MiwxMyArOTY0LDI1IEBACiAgICAgICBgYCdccidgYC4gIFNlZSA6cGVwOmAyNzhgIGFuZCA6cGVwOmAzMTE2YCwgYXMgd2VsbCBhcwogICAgICAgOmZ1bmM6YGJ5dGVzLnNwbGl0bGluZXNgIGZvciBhbiBhZGRpdGlvbmFsIHVzZS4KIAorICAgdmFyaWFibGUgYW5ub3RhdGlvbgorICAgICAgQSB0eXBlIG1ldGFkYXRhIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIG1vZHVsZSBnbG9iYWwgdmFyaWFibGUgb3IKKyAgICAgIGEgY2xhc3MgYXR0cmlidXRlLiBJdHMgc3ludGF4IGlzIGV4cGxhaW5lZCBpbiBzZWN0aW9uIDpyZWY6YGFubmFzc2lnbmAuCisgICAgICBBbm5vdGF0aW9ucyBhcmUgc3RvcmVkIGluIHRoZSA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCBzcGVjaWFsCisgICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyBvciBtb2R1bGUgb2JqZWN0IGFuZCBjYW4gYmUgYWNjZXNzZWQgdXNpbmcKKyAgICAgIDpmdW5jOmB0eXBpbmcuZ2V0X3R5cGVfaGludHNgLgorCisgICAgICBQeXRob24gaXRzZWxmIGRvZXMgbm90IGFzc2lnbiBhbnkgcGFydGljdWxhciBtZWFuaW5nIHRvIHZhcmlhYmxlCisgICAgICBhbm5vdGF0aW9ucy4gVGhleSBhcmUgaW50ZW5kZWQgdG8gYmUgaW50ZXJwcmV0ZWQgYnkgdGhpcmQtcGFydHkgbGlicmFyaWVzCisgICAgICBvciB0eXBlIGNoZWNraW5nIHRvb2xzLiBTZWUgOnBlcDpgNTI2YCwgOnBlcDpgNDg0YCB3aGljaCBkZXNjcmliZQorICAgICAgc29tZSBvZiB0aGVpciBwb3RlbnRpYWwgdXNlcy4KKwogICAgdmlydHVhbCBlbnZpcm9ubWVudAogICAgICAgQSBjb29wZXJhdGl2ZWx5IGlzb2xhdGVkIHJ1bnRpbWUgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgUHl0aG9uIHVzZXJzCiAgICAgICBhbmQgYXBwbGljYXRpb25zIHRvIGluc3RhbGwgYW5kIHVwZ3JhZGUgUHl0aG9uIGRpc3RyaWJ1dGlvbiBwYWNrYWdlcwogICAgICAgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBiZWhhdmlvdXIgb2Ygb3RoZXIgUHl0aG9uIGFwcGxpY2F0aW9ucwogICAgICAgcnVubmluZyBvbiB0aGUgc2FtZSBzeXN0ZW0uCiAKLSAgICAgIFNlZSBhbHNvIDpyZWY6YHNjcmlwdHMtcHl2ZW52YC4KKyAgICAgIFNlZSBhbHNvIDptb2Q6YHZlbnZgLgogCiAgICB2aXJ0dWFsIG1hY2hpbmUKICAgICAgIEEgY29tcHV0ZXIgZGVmaW5lZCBlbnRpcmVseSBpbiBzb2Z0d2FyZS4gIFB5dGhvbidzIHZpcnR1YWwgbWFjaGluZQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdCBiL0RvYy9ob3d0by9hcmdwYXJzZS5yc3QKaW5kZXggM2I3OWI5Mi4uN2UxNjFhNSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdAorKysgYi9Eb2MvaG93dG8vYXJncGFyc2UucnN0CkBAIC01NDcsNyArNTQ3LDggQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAicHJvZy5weSIsIGxpbmUgMTEsIGluIDxtb2R1bGU+CiAgICAgICAgaWYgYXJncy52ZXJib3NpdHkgPj0gMjoKLSAgIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IE5vbmVUeXBlKCkgPj0gaW50KCkKKyAgIFR5cGVFcnJvcjogJz49JyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICdOb25lVHlwZScgYW5kICdpbnQnCisKIAogKiBGaXJzdCBvdXRwdXQgd2VudCB3ZWxsLCBhbmQgZml4ZXMgdGhlIGJ1ZyB3ZSBoYWQgYmVmb3JlLgogICBUaGF0IGlzLCB3ZSB3YW50IGFueSB2YWx1ZSA+PSAyIHRvIGJlIGFzIHZlcmJvc2UgYXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vY2xpbmljLnJzdCBiL0RvYy9ob3d0by9jbGluaWMucnN0CmluZGV4IGNhYTQ5NzUuLmY0MzU4ODQgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9jbGluaWMucnN0CisrKyBiL0RvYy9ob3d0by9jbGluaWMucnN0CkBAIC04MjcsOSArODI3LDkgQEAKIGBgJ2knYGAgICAgIGBgaW50YGAKIGBgJ0knYGAgICAgIGBgdW5zaWduZWRfaW50KGJpdHdpc2U9VHJ1ZSlgYAogYGAnaydgYCAgICAgYGB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSlgYAotYGAnSydgYCAgICAgYGB1bnNpZ25lZF9QWV9MT05HX0xPTkcoYml0d2lzZT1UcnVlKWBgCitgYCdLJ2BgICAgICBgYHVuc2lnbmVkX2xvbmdfbG9uZyhiaXR3aXNlPVRydWUpYGAKIGBgJ2wnYGAgICAgIGBgbG9uZ2BgCi1gYCdMJ2BgICAgICBgYFBZX0xPTkdfTE9OR2BgCitgYCdMJ2BgICAgICBgYGxvbmcgbG9uZ2BgCiBgYCduJ2BgICAgICBgYFB5X3NzaXplX3RgYAogYGAnTydgYCAgICAgYGBvYmplY3RgYAogYGAnTyEnYGAgICAgYGBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeVNvbWV0aGluZ19UeXBlJylgYApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luZGV4LnJzdCBiL0RvYy9ob3d0by9pbmRleC5yc3QKaW5kZXggZGU2NTk1MC4uNTkzMzQxYyAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2luZGV4LnJzdAorKysgYi9Eb2MvaG93dG8vaW5kZXgucnN0CkBAIC0yOCw0ICsyOCw1IEBACiAgICBhcmdwYXJzZS5yc3QKICAgIGlwYWRkcmVzcy5yc3QKICAgIGNsaW5pYy5yc3QKKyAgIGluc3RydW1lbnRhdGlvbi5yc3QKIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QgYi9Eb2MvaG93dG8vaW5zdHJ1bWVudGF0aW9uLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTgzNzc1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QKQEAgLTAsMCArMSw0MTEgQEAKKy4uIF9pbnN0cnVtZW50YXRpb246CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJbnN0cnVtZW50aW5nIENQeXRob24gd2l0aCBEVHJhY2UgYW5kIFN5c3RlbVRhcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOmF1dGhvcjogRGF2aWQgTWFsY29sbQorOmF1dGhvcjogxYF1a2FzeiBMYW5nYQorCitEVHJhY2UgYW5kIFN5c3RlbVRhcCBhcmUgbW9uaXRvcmluZyB0b29scywgZWFjaCBwcm92aWRpbmcgYSB3YXkgdG8gaW5zcGVjdAord2hhdCB0aGUgcHJvY2Vzc2VzIG9uIGEgY29tcHV0ZXIgc3lzdGVtIGFyZSBkb2luZy4gIFRoZXkgYm90aCB1c2UKK2RvbWFpbi1zcGVjaWZpYyBsYW5ndWFnZXMgYWxsb3dpbmcgYSB1c2VyIHRvIHdyaXRlIHNjcmlwdHMgd2hpY2g6CisKKyAgLSBmaWx0ZXIgd2hpY2ggcHJvY2Vzc2VzIGFyZSB0byBiZSBvYnNlcnZlZAorICAtIGdhdGhlciBkYXRhIGZyb20gdGhlIHByb2Nlc3NlcyBvZiBpbnRlcmVzdAorICAtIGdlbmVyYXRlIHJlcG9ydHMgb24gdGhlIGRhdGEKKworQXMgb2YgUHl0aG9uIDMuNiwgQ1B5dGhvbiBjYW4gYmUgYnVpbHQgd2l0aCBlbWJlZGRlZCAibWFya2VycyIsIGFsc28KK2tub3duIGFzICJwcm9iZXMiLCB0aGF0IGNhbiBiZSBvYnNlcnZlZCBieSBhIERUcmFjZSBvciBTeXN0ZW1UYXAgc2NyaXB0LAorbWFraW5nIGl0IGVhc2llciB0byBtb25pdG9yIHdoYXQgdGhlIENQeXRob24gcHJvY2Vzc2VzIG9uIGEgc3lzdGVtIGFyZQorZG9pbmcuCisKKy4uIEknbSB1c2luZyAiLi4gY29kZS1ibG9jazo6IGMiIGZvciBTeXN0ZW1UYXAgc2NyaXB0cywgYXMgImMiIGlzIHN5bnRhY3RpY2FsbHkKKyAgIHRoZSBjbG9zZXN0IG1hdGNoIHRoYXQgU3BoaW54IHN1cHBvcnRzCisKKy4uIGltcGwtZGV0YWlsOjoKKworICAgRFRyYWNlIG1hcmtlcnMgYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIENQeXRob24gaW50ZXJwcmV0ZXIuCisgICBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHByb2JlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB2ZXJzaW9ucyBvZgorICAgQ1B5dGhvbi4gRFRyYWNlIHNjcmlwdHMgY2FuIHN0b3Agd29ya2luZyBvciB3b3JrIGluY29ycmVjdGx5IHdpdGhvdXQKKyAgIHdhcm5pbmcgd2hlbiBjaGFuZ2luZyBDUHl0aG9uIHZlcnNpb25zLgorCisKK0VuYWJsaW5nIHRoZSBzdGF0aWMgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK21hY09TIGNvbWVzIHdpdGggYnVpbHQtaW4gc3VwcG9ydCBmb3IgRFRyYWNlLiAgT24gTGludXgsIGluIG9yZGVyIHRvCitidWlsZCBDUHl0aG9uIHdpdGggdGhlIGVtYmVkZGVkIG1hcmtlcnMgZm9yIFN5c3RlbVRhcCwgdGhlIFN5c3RlbVRhcAorZGV2ZWxvcG1lbnQgdG9vbHMgbXVzdCBiZSBpbnN0YWxsZWQuCisKK09uIGEgTGludXggbWFjaGluZSwgdGhpcyBjYW4gYmUgZG9uZSB2aWE6OgorCisgICB5dW0gaW5zdGFsbCBzeXN0ZW10YXAtc2R0LWRldmVsCisKK29yOjoKKworICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgc3lzdGVtdGFwLXNkdC1kZXYKKworCitDUHl0aG9uIG11c3QgdGhlbiBiZSBjb25maWd1cmVkIGAtLXdpdGgtZHRyYWNlYDo6CisKKyAgIGNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlLi4uIHllcworCitPbiBtYWNPUywgeW91IGNhbiBsaXN0IGF2YWlsYWJsZSBEVHJhY2UgcHJvYmVzIGJ5IHJ1bm5pbmcgYSBQeXRob24KK3Byb2Nlc3MgaW4gdGhlIGJhY2tncm91bmQgYW5kIGxpc3RpbmcgYWxsIHByb2JlcyBtYWRlIGF2YWlsYWJsZSBieSB0aGUKK1B5dGhvbiBwcm92aWRlcjo6CisKKyAgICQgcHl0aG9uMy42IC1xICYKKyAgICQgc3VkbyBkdHJhY2UgLWwgLVAgcHl0aG9uJCEgICMgb3I6IGR0cmFjZSAtbCAtbSBweXRob24zLjYKKworICAgICAgSUQgICBQUk9WSURFUiAgICAgICAgICAgIE1PRFVMRSAgICAgICAgICAgICAgICAgICAgICAgICAgRlVOQ1RJT04gTkFNRQorICAgMjk1NjQgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQgZnVuY3Rpb24tZW50cnkKKyAgIDI5NTY1IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX2VudHJ5IGZ1bmN0aW9uLWVudHJ5CisgICAyOTU2NiBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgIF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdCBmdW5jdGlvbi1yZXR1cm4KKyAgIDI5NTY3IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICBkdHJhY2VfZnVuY3Rpb25fcmV0dXJuIGZ1bmN0aW9uLXJldHVybgorICAgMjk1NjggcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgZ2MtZG9uZQorICAgMjk1NjkgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgZ2Mtc3RhcnQKKyAgIDI5NTcwIHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0IGxpbmUKKyAgIDI5NTcxIHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgICAgIG1heWJlX2R0cmFjZV9saW5lIGxpbmUKKworT24gTGludXgsIHlvdSBjYW4gdmVyaWZ5IGlmIHRoZSBTeXN0ZW1UYXAgc3RhdGljIG1hcmtlcnMgYXJlIHByZXNlbnQgaW4KK3RoZSBidWlsdCBiaW5hcnkgYnkgc2VlaW5nIGlmIGl0IGNvbnRhaW5zIGEgIi5ub3RlLnN0YXBzZHQiIHNlY3Rpb24uCisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgcmVhZGVsZiAtUyAuL3B5dGhvbiB8IGdyZXAgLm5vdGUuc3RhcHNkdAorICAgWzMwXSAubm90ZS5zdGFwc2R0ICAgICAgICBOT1RFICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAwMDMwOGQ3OAorCitJZiB5b3UndmUgYnVpbHQgUHl0aG9uIGFzIGEgc2hhcmVkIGxpYnJhcnkgKHdpdGggLS1lbmFibGUtc2hhcmVkKSwgeW91CituZWVkIHRvIGxvb2sgaW5zdGVhZCB3aXRoaW4gdGhlIHNoYXJlZCBsaWJyYXJ5LiAgRm9yIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgcmVhZGVsZiAtUyBsaWJweXRob24zLjNkbS5zby4xLjAgfCBncmVwIC5ub3RlLnN0YXBzZHQKKyAgIFsyOV0gLm5vdGUuc3RhcHNkdCAgICAgICAgTk9URSAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgMDAzNjViNjgKKworU3VmZmljaWVudGx5IG1vZGVybiByZWFkZWxmIGNhbiBwcmludCB0aGUgbWV0YWRhdGE6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICAkIHJlYWRlbGYgLW4gLi9weXRob24KKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDAwMDI1NCB3aXRoIGxlbmd0aCAweDAwMDAwMDIwOgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIEdOVSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgICAgICAgICAgTlRfR05VX0FCSV9UQUcgKEFCSSB2ZXJzaW9uIHRhZykKKyAgICAgICAgICAgIE9TOiBMaW51eCwgQUJJOiAyLjYuMzIKKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDAwMDI3NCB3aXRoIGxlbmd0aCAweDAwMDAwMDI0OgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIEdOVSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQgICAgICAgICAgTlRfR05VX0JVSUxEX0lEICh1bmlxdWUgYnVpbGQgSUQgYml0c3RyaW5nKQorICAgICAgICAgICAgQnVpbGQgSUQ6IGRmOTI0YTJiMDhhN2U4OWY2ZTExMjUxZDQ2MDIwMjI5NzdhZjI2NzAKKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDJkNmMzMCB3aXRoIGxlbmd0aCAweDAwMDAwMTQ0OgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwMzEgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZ2NfX3N0YXJ0CisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNDM3MWMzLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmY2CisgICAgICAgICAgICBBcmd1bWVudHM6IC00QCVlYngKKyAgICAgICAgc3RhcHNkdCAgICAgICAgICAgICAgMHgwMDAwMDAzMCAgICAgICAgICBOVF9TVEFQU0RUIChTeXN0ZW1UYXAgcHJvYmUgZGVzY3JpcHRvcnMpCisgICAgICAgICAgICBQcm92aWRlcjogcHl0aG9uCisgICAgICAgICAgICBOYW1lOiBnY19fZG9uZQorICAgICAgICAgICAgTG9jYXRpb246IDB4MDAwMDAwMDAwMDQzNzRlMSwgQmFzZTogMHgwMDAwMDAwMDAwNjMwY2UyLCBTZW1hcGhvcmU6IDB4MDAwMDAwMDAwMDhkNmJmOAorICAgICAgICAgICAgQXJndW1lbnRzOiAtOEAlcmF4CisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwNDUgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZnVuY3Rpb25fX2VudHJ5CisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNTNkYjZjLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmU4CisgICAgICAgICAgICBBcmd1bWVudHM6IDhAJXJicCA4QCVyMTIgLTRAJWVheAorICAgICAgICBzdGFwc2R0ICAgICAgICAgICAgICAweDAwMDAwMDQ2ICAgICAgICAgIE5UX1NUQVBTRFQgKFN5c3RlbVRhcCBwcm9iZSBkZXNjcmlwdG9ycykKKyAgICAgICAgICAgIFByb3ZpZGVyOiBweXRob24KKyAgICAgICAgICAgIE5hbWU6IGZ1bmN0aW9uX19yZXR1cm4KKyAgICAgICAgICAgIExvY2F0aW9uOiAweDAwMDAwMDAwMDA1M2RiYTgsIEJhc2U6IDB4MDAwMDAwMDAwMDYzMGNlMiwgU2VtYXBob3JlOiAweDAwMDAwMDAwMDA4ZDZiZWEKKyAgICAgICAgICAgIEFyZ3VtZW50czogOEAlcmJwIDhAJXIxMiAtNEAlZWF4CisKK1RoZSBhYm92ZSBtZXRhZGF0YSBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgU3lzdGVtVGFwIGRlc2NyaWJpbmcgaG93IGl0CitjYW4gcGF0Y2ggc3RyYXRlZ2ljYWxseS1wbGFjZWQgbWFjaGluZSBjb2RlIGluc3RydWN0aW9ucyB0byBlbmFibGUgdGhlCit0cmFjaW5nIGhvb2tzIHVzZWQgYnkgYSBTeXN0ZW1UYXAgc2NyaXB0LgorCisKK1N0YXRpYyBEVHJhY2UgcHJvYmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgRFRyYWNlIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBzaG93IHRoZSBjYWxsL3JldHVybgoraGllcmFyY2h5IG9mIGEgUHl0aG9uIHNjcmlwdCwgb25seSB0cmFjaW5nIHdpdGhpbiB0aGUgaW52b2NhdGlvbiBvZgorYSBmdW5jdGlvbiBjYWxsZWQgInN0YXJ0Ii4gSW4gb3RoZXIgd29yZHMsIGltcG9ydC10aW1lIGZ1bmN0aW9uCitpbnZvY2F0aW9ucyBhcmUgbm90IGdvaW5nIHRvIGJlIGxpc3RlZDoKKworLi4gY29kZS1ibG9jazo6IGMKKworICAgIHNlbGYgaW50IGluZGVudDsKKworICAgIHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorICAgIC9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KKyAgICB7CisgICAgICAgICAgICBzZWxmLT50cmFjZSA9IDE7CisgICAgfQorCisgICAgcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisgICAgL3NlbGYtPnRyYWNlLworICAgIHsKKyAgICAgICAgICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgICAgICAgICAgcHJpbnRmKCIlKnMiLCBzZWxmLT5pbmRlbnQsICIiKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7CisgICAgICAgICAgICBzZWxmLT5pbmRlbnQrKzsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisgICAgL3NlbGYtPnRyYWNlLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPmluZGVudC0tOworICAgICAgICAgICAgcHJpbnRmKCIlZFx0JSpzOiIsIHRpbWVzdGFtcCwgMTUsIHByb2JlbmFtZSk7CisgICAgICAgICAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOworICAgICAgICAgICAgcHJpbnRmKCIlczolczolZFxuIiwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisgICAgL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPnRyYWNlID0gMDsKKyAgICB9CisKK0l0IGNhbiBiZSBpbnZva2VkIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAkIHN1ZG8gZHRyYWNlIC1xIC1zIGNhbGxfc3RhY2suZCAtYyAicHl0aG9uMy42IHNjcmlwdC5weSIKKworVGhlIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6OgorCisgICAgMTU2NjQxMzYwNTAyMjgwICBmdW5jdGlvbi1lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCisgICAgMTU2NjQxMzYwNTE4ODA0ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyAgICAxNTY2NDEzNjA1MzI3OTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA1NDY4MDcgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCisgICAgMTU2NjQxMzYwNTYzMzY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKKyAgICAxNTY2NDEzNjA1NzgzNjUgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorICAgIDE1NjY0MTM2MDU5MTc1NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorICAgIDE1NjY0MTM2MDYwNTU1NiAgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA2MTc0ODIgZnVuY3Rpb24tcmV0dXJuOiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorICAgIDE1NjY0MTM2MDYyOTgxNCBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorICAgIDE1NjY0MTM2MDY0MjI4NSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CisgICAgMTU2NjQxMzYwNjU2NzcwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA2Njk3MDcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKKyAgICAxNTY2NDEzNjA2ODc4NTMgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKKyAgICAxNTY2NDEzNjA3MDA3MTkgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTQKKyAgICAxNTY2NDEzNjA3MTk2NDAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MTgKKyAgICAxNTY2NDEzNjA3MzI1NjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKKyAgICAxNTY2NDEzNjA3NDczNzAgZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKKworCitTdGF0aWMgU3lzdGVtVGFwIG1hcmtlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbG93LWxldmVsIHdheSB0byB1c2UgdGhlIFN5c3RlbVRhcCBpbnRlZ3JhdGlvbiBpcyB0byB1c2UgdGhlIHN0YXRpYworbWFya2VycyBkaXJlY3RseS4gIFRoaXMgcmVxdWlyZXMgeW91IHRvIGV4cGxpY2l0bHkgc3RhdGUgdGhlIGJpbmFyeSBmaWxlCitjb250YWluaW5nIHRoZW0uCisKK0ZvciBleGFtcGxlLCB0aGlzIFN5c3RlbVRhcCBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gc2hvdyB0aGUgY2FsbC9yZXR1cm4KK2hpZXJhcmNoeSBvZiBhIFB5dGhvbiBzY3JpcHQ6CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgIHByb2JlIHByb2Nlc3MoJ3B5dGhvbicpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgICAgICBwcmludGYoIiVzID0+ICVzIGluICVzOiVkXFxuIiwKKyAgICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgIH0KKworICAgcHJvYmUgcHJvY2VzcygncHl0aG9uJykubWFyaygiZnVuY3Rpb25fX3JldHVybiIpIHsKKyAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgICAgIHByaW50ZigiJXMgPD0gJXMgaW4gJXM6JWRcXG4iLAorICAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KC0xKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgfQorCitJdCBjYW4gYmUgaW52b2tlZCBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgc3RhcCBcCisgICAgIHNob3ctY2FsbC1oaWVyYXJjaHkuc3RwIFwKKyAgICAgLWMgLi9weXRob24gdGVzdC5weQorCitUaGUgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczo6CisKKyAgIDExNDA4IHB5dGhvbig4Mjc0KTogICAgICAgID0+IF9fY29udGFpbnNfXyBpbiBMaWIvX2FiY29sbC5weTozNjIKKyAgIDExNDE0IHB5dGhvbig4Mjc0KTogICAgICAgICA9PiBfX2dldGl0ZW1fXyBpbiBMaWIvb3MucHk6NDI1CisgICAxMTQxOCBweXRob24oODI3NCk6ICAgICAgICAgID0+IGVuY29kZSBpbiBMaWIvb3MucHk6NDkwCisgICAxMTQyNCBweXRob24oODI3NCk6ICAgICAgICAgIDw9IGVuY29kZSBpbiBMaWIvb3MucHk6NDkzCisgICAxMTQyOCBweXRob24oODI3NCk6ICAgICAgICAgPD0gX19nZXRpdGVtX18gaW4gTGliL29zLnB5OjQyNgorICAgMTE0MzMgcHl0aG9uKDgyNzQpOiAgICAgICAgPD0gX19jb250YWluc19fIGluIExpYi9fYWJjb2xsLnB5OjM2NgorCit3aGVyZSB0aGUgY29sdW1ucyBhcmU6CisKKyAgLSB0aW1lIGluIG1pY3Jvc2Vjb25kcyBzaW5jZSBzdGFydCBvZiBzY3JpcHQKKworICAtIG5hbWUgb2YgZXhlY3V0YWJsZQorCisgIC0gUElEIG9mIHByb2Nlc3MKKworYW5kIHRoZSByZW1haW5kZXIgaW5kaWNhdGVzIHRoZSBjYWxsL3JldHVybiBoaWVyYXJjaHkgYXMgdGhlIHNjcmlwdCBleGVjdXRlcy4KKworRm9yIGEgYC0tZW5hYmxlLXNoYXJlZGAgYnVpbGQgb2YgQ1B5dGhvbiwgdGhlIG1hcmtlcnMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlCitsaWJweXRob24gc2hhcmVkIGxpYnJhcnksIGFuZCB0aGUgcHJvYmUncyBkb3R0ZWQgcGF0aCBuZWVkcyB0byByZWZsZWN0IHRoaXMuIEZvcgorZXhhbXBsZSwgdGhpcyBsaW5lIGZyb20gdGhlIGFib3ZlIGV4YW1wbGU6OgorCisgICBwcm9iZSBwcm9jZXNzKCdweXRob24nKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKSB7CisKK3Nob3VsZCBpbnN0ZWFkIHJlYWQ6OgorCisgICBwcm9iZSBwcm9jZXNzKCdweXRob24nKS5saWJyYXJ5KCJsaWJweXRob24zLjZkbS5zby4xLjAiKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKSB7CisKKyhhc3N1bWluZyBhIGRlYnVnIGJ1aWxkIG9mIENQeXRob24gMy42KQorCisKK0F2YWlsYWJsZSBzdGF0aWMgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIEknbSByZXVzaW5nIHRoZSAiYzpmdW5jdGlvbiIgdHlwZSBmb3IgbWFya2VycworCisuLiBjOmZ1bmN0aW9uOjogZnVuY3Rpb25fX2VudHJ5KHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vKQorCisgICBUaGlzIG1hcmtlciBpbmRpY2F0ZXMgdGhhdCBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGJlZ3VuLgorICAgSXQgaXMgb25seSB0cmlnZ2VyZWQgZm9yIHB1cmUtUHl0aG9uIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisgICBUaGUgZmlsZW5hbWUsIGZ1bmN0aW9uIG5hbWUsIGFuZCBsaW5lIG51bWJlciBhcmUgcHJvdmlkZWQgYmFjayB0byB0aGUKKyAgIHRyYWNpbmcgc2NyaXB0IGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nCisgICBgYCRhcmcxYGAsIGBgJGFyZzJgYCwgYGAkYXJnM2BgOgorCisgICAgICAgKiBgYCRhcmcxYGAgOiBgYChjb25zdCBjaGFyICopYGAgZmlsZW5hbWUsIGFjY2Vzc2libGUgdXNpbmcgYGB1c2VyX3N0cmluZygkYXJnMSlgYAorCisgICAgICAgKiBgYCRhcmcyYGAgOiBgYChjb25zdCBjaGFyICopYGAgZnVuY3Rpb24gbmFtZSwgYWNjZXNzaWJsZSB1c2luZworICAgICAgICAgYGB1c2VyX3N0cmluZygkYXJnMilgYAorCisgICAgICAgKiBgYCRhcmczYGAgOiBgYGludGBgIGxpbmUgbnVtYmVyCisKKy4uIGM6ZnVuY3Rpb246OiBmdW5jdGlvbl9fcmV0dXJuKHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vKQorCisgICBUaGlzIG1hcmtlciBpcyB0aGUgY29udmVyc2Ugb2YgOmM6ZnVuYzpgZnVuY3Rpb25fX2VudHJ5YCwgYW5kIGluZGljYXRlcyB0aGF0CisgICBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGVuZGVkIChlaXRoZXIgdmlhIGBgcmV0dXJuYGAsIG9yIHZpYSBhbgorICAgZXhjZXB0aW9uKS4gIEl0IGlzIG9ubHkgdHJpZ2dlcmVkIGZvciBwdXJlLVB5dGhvbiAoYnl0ZWNvZGUpIGZ1bmN0aW9ucy4KKworICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIDpjOmZ1bmM6YGZ1bmN0aW9uX19lbnRyeWAKKworLi4gYzpmdW5jdGlvbjo6IGxpbmUoc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8pCisKKyAgIFRoaXMgbWFya2VyIGluZGljYXRlcyBhIFB5dGhvbiBsaW5lIGlzIGFib3V0IHRvIGJlIGV4ZWN1dGVkLiAgSXQgaXMKKyAgIHRoZSBlcXVpdmFsZW50IG9mIGxpbmUtYnktbGluZSB0cmFjaW5nIHdpdGggYSBQeXRob24gcHJvZmlsZXIuICBJdCBpcworICAgbm90IHRyaWdnZXJlZCB3aXRoaW4gQyBmdW5jdGlvbnMuCisKKyAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciA6YzpmdW5jOmBmdW5jdGlvbl9fZW50cnlgLgorCisuLiBjOmZ1bmN0aW9uOjogZ2NfX3N0YXJ0KGludCBnZW5lcmF0aW9uKQorCisgICBGaXJlcyB3aGVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgc3RhcnRzIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIGN5Y2xlLgorICAgYGBhcmcwYGAgaXMgdGhlIGdlbmVyYXRpb24gdG8gc2NhbiwgbGlrZSA6ZnVuYzpgZ2MuY29sbGVjdCgpYC4KKworLi4gYzpmdW5jdGlvbjo6IGdjX19kb25lKGxvbmcgY29sbGVjdGVkKQorCisgICBGaXJlcyB3aGVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZmluaXNoZXMgYSBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgIGN5Y2xlLiBgYGFyZzBgYCBpcyB0aGUgbnVtYmVyIG9mIGNvbGxlY3RlZCBvYmplY3RzLgorCisKK1N5c3RlbVRhcCBUYXBzZXRzCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaGlnaGVyLWxldmVsIHdheSB0byB1c2UgdGhlIFN5c3RlbVRhcCBpbnRlZ3JhdGlvbiBpcyB0byB1c2UgYSAidGFwc2V0IjoKK1N5c3RlbVRhcCdzIGVxdWl2YWxlbnQgb2YgYSBsaWJyYXJ5LCB3aGljaCBoaWRlcyBzb21lIG9mIHRoZSBsb3dlci1sZXZlbAorZGV0YWlscyBvZiB0aGUgc3RhdGljIG1hcmtlcnMuCisKK0hlcmUgaXMgYSB0YXBzZXQgZmlsZSwgYmFzZWQgb24gYSBub24tc2hhcmVkIGJ1aWxkIG9mIENQeXRob246CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICAvKgorICAgICAgIFByb3ZpZGUgYSBoaWdoZXItbGV2ZWwgd3JhcHBpbmcgYXJvdW5kIHRoZSBmdW5jdGlvbl9fZW50cnkgYW5kCisgICAgICAgZnVuY3Rpb25fX3JldHVybiBtYXJrZXJzOgorICAgICBcKi8KKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24uZW50cnkgPSBwcm9jZXNzKCJweXRob24iKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKQorICAgIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKyAgICAgICAgZnJhbWVwdHIgPSAkYXJnNAorICAgIH0KKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24ucmV0dXJuID0gcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX3JldHVybiIpCisgICAgeworICAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgICAgIGxpbmVubyA9ICRhcmczOworICAgICAgICBmcmFtZXB0ciA9ICRhcmc0CisgICAgfQorCitJZiB0aGlzIGZpbGUgaXMgaW5zdGFsbGVkIGluIFN5c3RlbVRhcCdzIHRhcHNldCBkaXJlY3RvcnkgKGUuZy4KK2BgL3Vzci9zaGFyZS9zeXN0ZW10YXAvdGFwc2V0YGApLCB0aGVuIHRoZXNlIGFkZGl0aW9uYWwgcHJvYmVwb2ludHMgYmVjb21lCithdmFpbGFibGU6CisKKy4uIGM6ZnVuY3Rpb246OiBweXRob24uZnVuY3Rpb24uZW50cnkoc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8sIGZyYW1lcHRyKQorCisgICBUaGlzIHByb2JlIHBvaW50IGluZGljYXRlcyB0aGF0IGV4ZWN1dGlvbiBvZiBhIFB5dGhvbiBmdW5jdGlvbiBoYXMgYmVndW4uCisgICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1weXRob24gKGJ5dGVjb2RlKSBmdW5jdGlvbnMuCisKKy4uIGM6ZnVuY3Rpb246OiBweXRob24uZnVuY3Rpb24ucmV0dXJuKHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vLCBmcmFtZXB0cikKKworICAgVGhpcyBwcm9iZSBwb2ludCBpcyB0aGUgY29udmVyc2Ugb2YgOmM6ZnVuYzpgcHl0aG9uLmZ1bmN0aW9uLnJldHVybmAsIGFuZAorICAgaW5kaWNhdGVzIHRoYXQgZXhlY3V0aW9uIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIGhhcyBlbmRlZCAoZWl0aGVyIHZpYQorICAgYGByZXR1cm5gYCwgb3IgdmlhIGFuIGV4Y2VwdGlvbikuICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1weXRob24KKyAgIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisKK0V4YW1wbGVzCistLS0tLS0tLQorVGhpcyBTeXN0ZW1UYXAgc2NyaXB0IHVzZXMgdGhlIHRhcHNldCBhYm92ZSB0byBtb3JlIGNsZWFubHkgaW1wbGVtZW50IHRoZQorZXhhbXBsZSBnaXZlbiBhYm92ZSBvZiB0cmFjaW5nIHRoZSBQeXRob24gZnVuY3Rpb24tY2FsbCBoaWVyYXJjaHksIHdpdGhvdXQKK25lZWRpbmcgdG8gZGlyZWN0bHkgbmFtZSB0aGUgc3RhdGljIG1hcmtlcnM6CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24uZW50cnkKKyAgICB7CisgICAgICBwcmludGYoIiVzID0+ICVzIGluICVzOiVkXG4iLAorICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgICB9CisKKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24ucmV0dXJuCisgICAgeworICAgICAgcHJpbnRmKCIlcyA8PSAlcyBpbiAlczolZFxuIiwKKyAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KC0xKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgIH0KKworCitUaGUgZm9sbG93aW5nIHNjcmlwdCB1c2VzIHRoZSB0YXBzZXQgYWJvdmUgdG8gcHJvdmlkZSBhIHRvcC1saWtlIHZpZXcgb2YgYWxsCitydW5uaW5nIENQeXRob24gY29kZSwgc2hvd2luZyB0aGUgdG9wIDIwIG1vc3QgZnJlcXVlbnRseS1lbnRlcmVkIGJ5dGVjb2RlCitmcmFtZXMsIGVhY2ggc2Vjb25kLCBhY3Jvc3MgdGhlIHdob2xlIHN5c3RlbToKKworLi4gY29kZS1ibG9jazo6IGMKKworICAgIGdsb2JhbCBmbl9jYWxsczsKKworICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5lbnRyeQorICAgIHsKKyAgICAgICAgZm5fY2FsbHNbcGlkKCksIGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vXSArPSAxOworICAgIH0KKworICAgIHByb2JlIHRpbWVyLm1zKDEwMDApIHsKKyAgICAgICAgcHJpbnRmKCJcMDMzWzJKXDAzM1sxOzFIIikgLyogY2xlYXIgc2NyZWVuIFwqLworICAgICAgICBwcmludGYoIiU2cyAlODBzICU2cyAlMzBzICU2c1xuIiwKKyAgICAgICAgICAgICAgICJQSUQiLCAiRklMRU5BTUUiLCAiTElORSIsICJGVU5DVElPTiIsICJDQUxMUyIpCisgICAgICAgIGZvcmVhY2ggKFtwaWQsIGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vXSBpbiBmbl9jYWxscy0gbGltaXQgMjApIHsKKyAgICAgICAgICAgIHByaW50ZigiJTZkICU4MHMgJTZkICUzMHMgJTZkXG4iLAorICAgICAgICAgICAgICAgIHBpZCwgZmlsZW5hbWUsIGxpbmVubywgZnVuY25hbWUsCisgICAgICAgICAgICAgICAgZm5fY2FsbHNbcGlkLCBmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVub10pOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZSBmbl9jYWxsczsKKyAgICB9CisKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMWY3MjcuLjAwMDAwMDAKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBzbXRwbGliCi0KLWZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCi1mcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBBZGRyZXNzCi1mcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBtYWtlX21zZ2lkCi0KLSMgQ3JlYXRlIHRoZSBiYXNlIHRleHQgbWVzc2FnZS4KLW1zZyA9IEVtYWlsTWVzc2FnZSgpCi1tc2dbJ1N1YmplY3QnXSA9ICJBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lciIKLW1zZ1snRnJvbSddID0gQWRkcmVzcygiUGVww6kgTGUgUGV3IiwgInBlcGUiLCAiZXhhbXBsZS5jb20iKQotbXNnWydUbyddID0gKEFkZHJlc3MoIlBlbmVsb3BlIFB1c3N5Y2F0IiwgInBlbmVsb3BlIiwgImV4YW1wbGUuY29tIiksCi0gICAgICAgICAgICAgQWRkcmVzcygiRmFicmV0dGUgUHVzc3ljYXQiLCAiZmFicmV0dGUiLCAiZXhhbXBsZS5jb20iKSkKLW1zZy5zZXRfY29udGVudCgiIiJcCi1TYWx1dCEKLQotQ2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50IHJlY2lwaWVbMV0gZMOpamV1bmVyLgotCi1bMV0gaHR0cDovL3d3dy55dW1tbHkuY29tL3JlY2lwZS9Sb2FzdGVkLUFzcGFyYWd1cy1FcGljdXJpb3VzLTIwMzcxOAotCi0tLVBlcMOpCi0iIiIpCi0KLSMgQWRkIHRoZSBodG1sIHZlcnNpb24uICBUaGlzIGNvbnZlcnRzIHRoZSBtZXNzYWdlIGludG8gYSBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUKLSMgY29udGFpbmVyLCB3aXRoIHRoZSBvcmlnaW5hbCB0ZXh0IG1lc3NhZ2UgYXMgdGhlIGZpcnN0IHBhcnQgYW5kIHRoZSBuZXcgaHRtbAotIyBtZXNzYWdlIGFzIHRoZSBzZWNvbmQgcGFydC4KLWFzcGFyYWd1c19jaWQgPSBtYWtlX21zZ2lkKCkKLW1zZy5hZGRfYWx0ZXJuYXRpdmUoIiIiXAotPGh0bWw+Ci0gIDxoZWFkPjwvaGVhZD4KLSAgPGJvZHk+Ci0gICAgPHA+U2FsdXQhPFxwPgotICAgIDxwPkNlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudAotICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4PgotICAgICAgICAgICAgcmVjaXBpZQotICAgICAgICA8L2E+IGTDqWpldW5lci4KLSAgICA8L3A+Ci0gICAgPGltZyBzcmM9ImNpZDp7YXNwYXJhZ3VzX2NpZH0iIFw+Ci0gIDwvYm9keT4KLTwvaHRtbD4KLSIiIi5mb3JtYXQoYXNwYXJhZ3VzX2NpZD1hc3BhcmFndXNfY2lkWzE6LTFdKSwgc3VidHlwZT0naHRtbCcpCi0jIG5vdGUgdGhhdCB3ZSBuZWVkZWQgdG8gcGVlbCB0aGUgPD4gb2ZmIHRoZSBtc2dpZCBmb3IgdXNlIGluIHRoZSBodG1sLgotCi0jIE5vdyBhZGQgdGhlIHJlbGF0ZWQgaW1hZ2UgdG8gdGhlIGh0bWwgcGFydC4KLXdpdGggb3Blbigicm9hc3RlZC1hc3BhcmFndXMuanBnIiwgJ3JiJykgYXMgaW1nOgotICAgIG1zZy5nZXRfcGF5bG9hZCgpWzFdLmFkZF9yZWxhdGVkKGltZy5yZWFkKCksICdpbWFnZScsICdqcGVnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9YXNwYXJhZ3VzX2NpZCkKLQotIyBNYWtlIGEgbG9jYWwgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kLgotd2l0aCBvcGVuKCdvdXRnb2luZy5tc2cnLCAnd2InKSBhcyBmOgotICAgIGYud3JpdGUoYnl0ZXMobXNnKSkKLQotIyBTZW5kIHRoZSBtZXNzYWdlIHZpYSBsb2NhbCBTTVRQIHNlcnZlci4KLXdpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgotICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDg1MDcwZjMuLjJlMTQyYjEKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQpAQCAtMiw0NyArMiw1NSBAQAogCiBpbXBvcnQgc210cGxpYgogCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Ci1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCitmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBBZGRyZXNzCitmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBtYWtlX21zZ2lkCiAKLSMgbWUgPT0gbXkgZW1haWwgYWRkcmVzcwotIyB5b3UgPT0gcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcwotbWUgPSAibXlAZW1haWwuY29tIgoteW91ID0gInlvdXJAZW1haWwuY29tIgorIyBDcmVhdGUgdGhlIGJhc2UgdGV4dCBtZXNzYWdlLgorbXNnID0gRW1haWxNZXNzYWdlKCkKK21zZ1snU3ViamVjdCddID0gIkF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyIgorbXNnWydGcm9tJ10gPSBBZGRyZXNzKCJQZXDDqSBMZSBQZXciLCAicGVwZSIsICJleGFtcGxlLmNvbSIpCittc2dbJ1RvJ10gPSAoQWRkcmVzcygiUGVuZWxvcGUgUHVzc3ljYXQiLCAicGVuZWxvcGUiLCAiZXhhbXBsZS5jb20iKSwKKyAgICAgICAgICAgICBBZGRyZXNzKCJGYWJyZXR0ZSBQdXNzeWNhdCIsICJmYWJyZXR0ZSIsICJleGFtcGxlLmNvbSIpKQorbXNnLnNldF9jb250ZW50KCIiIlwKK1NhbHV0IQogCi0jIENyZWF0ZSBtZXNzYWdlIGNvbnRhaW5lciAtIHRoZSBjb3JyZWN0IE1JTUUgdHlwZSBpcyBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUuCi1tc2cgPSBNSU1FTXVsdGlwYXJ0KCdhbHRlcm5hdGl2ZScpCi1tc2dbJ1N1YmplY3QnXSA9ICJMaW5rIgotbXNnWydGcm9tJ10gPSBtZQotbXNnWydUbyddID0geW91CitDZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCiAKLSMgQ3JlYXRlIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIChhIHBsYWluLXRleHQgYW5kIGFuIEhUTUwgdmVyc2lvbikuCi10ZXh0ID0gIkhpIVxuSG93IGFyZSB5b3U/XG5IZXJlIGlzIHRoZSBsaW5rIHlvdSB3YW50ZWQ6XG5odHRwczovL3d3dy5weXRob24ub3JnIgotaHRtbCA9ICIiIlwKK1sxXSBodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4CisKKy0tUGVww6kKKyIiIikKKworIyBBZGQgdGhlIGh0bWwgdmVyc2lvbi4gIFRoaXMgY29udmVydHMgdGhlIG1lc3NhZ2UgaW50byBhIG11bHRpcGFydC9hbHRlcm5hdGl2ZQorIyBjb250YWluZXIsIHdpdGggdGhlIG9yaWdpbmFsIHRleHQgbWVzc2FnZSBhcyB0aGUgZmlyc3QgcGFydCBhbmQgdGhlIG5ldyBodG1sCisjIG1lc3NhZ2UgYXMgdGhlIHNlY29uZCBwYXJ0LgorYXNwYXJhZ3VzX2NpZCA9IG1ha2VfbXNnaWQoKQorbXNnLmFkZF9hbHRlcm5hdGl2ZSgiIiJcCiA8aHRtbD4KICAgPGhlYWQ+PC9oZWFkPgogICA8Ym9keT4KLSAgICA8cD5IaSE8YnI+Ci0gICAgICAgSG93IGFyZSB5b3U/PGJyPgotICAgICAgIEhlcmUgaXMgdGhlIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmciPmxpbms8L2E+IHlvdSB3YW50ZWQuCisgICAgPHA+U2FsdXQhPC9wPgorICAgIDxwPkNlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudAorICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4PgorICAgICAgICAgICAgcmVjaXBpZQorICAgICAgICA8L2E+IGTDqWpldW5lci4KICAgICA8L3A+CisgICAgPGltZyBzcmM9ImNpZDp7YXNwYXJhZ3VzX2NpZH0iIC8+CiAgIDwvYm9keT4KIDwvaHRtbD4KLSIiIgorIiIiLmZvcm1hdChhc3BhcmFndXNfY2lkPWFzcGFyYWd1c19jaWRbMTotMV0pLCBzdWJ0eXBlPSdodG1sJykKKyMgbm90ZSB0aGF0IHdlIG5lZWRlZCB0byBwZWVsIHRoZSA8PiBvZmYgdGhlIG1zZ2lkIGZvciB1c2UgaW4gdGhlIGh0bWwuCiAKLSMgUmVjb3JkIHRoZSBNSU1FIHR5cGVzIG9mIGJvdGggcGFydHMgLSB0ZXh0L3BsYWluIGFuZCB0ZXh0L2h0bWwuCi1wYXJ0MSA9IE1JTUVUZXh0KHRleHQsICdwbGFpbicpCi1wYXJ0MiA9IE1JTUVUZXh0KGh0bWwsICdodG1sJykKKyMgTm93IGFkZCB0aGUgcmVsYXRlZCBpbWFnZSB0byB0aGUgaHRtbCBwYXJ0Lgord2l0aCBvcGVuKCJyb2FzdGVkLWFzcGFyYWd1cy5qcGciLCAncmInKSBhcyBpbWc6CisgICAgbXNnLmdldF9wYXlsb2FkKClbMV0uYWRkX3JlbGF0ZWQoaW1nLnJlYWQoKSwgJ2ltYWdlJywgJ2pwZWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZD1hc3BhcmFndXNfY2lkKQogCi0jIEF0dGFjaCBwYXJ0cyBpbnRvIG1lc3NhZ2UgY29udGFpbmVyLgotIyBBY2NvcmRpbmcgdG8gUkZDIDIwNDYsIHRoZSBsYXN0IHBhcnQgb2YgYSBtdWx0aXBhcnQgbWVzc2FnZSwgaW4gdGhpcyBjYXNlCi0jIHRoZSBIVE1MIG1lc3NhZ2UsIGlzIGJlc3QgYW5kIHByZWZlcnJlZC4KLW1zZy5hdHRhY2gocGFydDEpCi1tc2cuYXR0YWNoKHBhcnQyKQorIyBNYWtlIGEgbG9jYWwgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kLgord2l0aCBvcGVuKCdvdXRnb2luZy5tc2cnLCAnd2InKSBhcyBmOgorICAgIGYud3JpdGUoYnl0ZXMobXNnKSkKIAogIyBTZW5kIHRoZSBtZXNzYWdlIHZpYSBsb2NhbCBTTVRQIHNlcnZlci4KLXMgPSBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpCi0jIHNlbmRtYWlsIGZ1bmN0aW9uIHRha2VzIDMgYXJndW1lbnRzOiBzZW5kZXIncyBhZGRyZXNzLCByZWNpcGllbnQncyBhZGRyZXNzCi0jIGFuZCBtZXNzYWdlIHRvIHNlbmQgLSBoZXJlIGl0IGlzIHNlbnQgYXMgb25lIHN0cmluZy4KLXMuc2VuZG1haWwobWUsIHlvdSwgbXNnLmFzX3N0cmluZygpKQotcy5xdWl0KCkKK3dpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgorICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtZGlyLnB5CmluZGV4IDNjN2M3NzAuLjBkY2ZiZmIgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLWRpci5weQpAQCAtMywyMiArMywxNCBAQAogIiIiU2VuZCB0aGUgY29udGVudHMgb2YgYSBkaXJlY3RvcnkgYXMgYSBNSU1FIG1lc3NhZ2UuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHNtdHBsaWIKICMgRm9yIGd1ZXNzaW5nIE1JTUUgdHlwZSBiYXNlZCBvbiBmaWxlIG5hbWUgZXh0ZW5zaW9uCiBpbXBvcnQgbWltZXR5cGVzCiAKIGZyb20gYXJncGFyc2UgaW1wb3J0IEFyZ3VtZW50UGFyc2VyCiAKLWZyb20gZW1haWwgaW1wb3J0IGVuY29kZXJzCi1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKLWZyb20gZW1haWwubWltZS5hdWRpbyBpbXBvcnQgTUlNRUF1ZGlvCi1mcm9tIGVtYWlsLm1pbWUuYmFzZSBpbXBvcnQgTUlNRUJhc2UKLWZyb20gZW1haWwubWltZS5pbWFnZSBpbXBvcnQgTUlNRUltYWdlCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Ci1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKLQotQ09NTUFTUEFDRSA9ICcsICcKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCitmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgU01UUAogCiAKIGRlZiBtYWluKCk6CkBAIC00NywxMiArMzksMTIgQEAKICAgICBkaXJlY3RvcnkgPSBhcmdzLmRpcmVjdG9yeQogICAgIGlmIG5vdCBkaXJlY3Rvcnk6CiAgICAgICAgIGRpcmVjdG9yeSA9ICcuJwotICAgICMgQ3JlYXRlIHRoZSBlbmNsb3NpbmcgKG91dGVyKSBtZXNzYWdlCi0gICAgb3V0ZXIgPSBNSU1FTXVsdGlwYXJ0KCkKLSAgICBvdXRlclsnU3ViamVjdCddID0gJ0NvbnRlbnRzIG9mIGRpcmVjdG9yeSAlcycgJSBvcy5wYXRoLmFic3BhdGgoZGlyZWN0b3J5KQotICAgIG91dGVyWydUbyddID0gQ09NTUFTUEFDRS5qb2luKGFyZ3MucmVjaXBpZW50cykKLSAgICBvdXRlclsnRnJvbSddID0gYXJncy5zZW5kZXIKLSAgICBvdXRlci5wcmVhbWJsZSA9ICdZb3Ugd2lsbCBub3Qgc2VlIHRoaXMgaW4gYSBNSU1FLWF3YXJlIG1haWwgcmVhZGVyLlxuJworICAgICMgQ3JlYXRlIHRoZSBtZXNzYWdlCisgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICBtc2dbJ1N1YmplY3QnXSA9ICdDb250ZW50cyBvZiBkaXJlY3RvcnkgJXMnICUgb3MucGF0aC5hYnNwYXRoKGRpcmVjdG9yeSkKKyAgICBtc2dbJ1RvJ10gPSAnLCAnLmpvaW4oYXJncy5yZWNpcGllbnRzKQorICAgIG1zZ1snRnJvbSddID0gYXJncy5zZW5kZXIKKyAgICBtc2cucHJlYW1ibGUgPSAnWW91IHdpbGwgbm90IHNlZSB0aGlzIGluIGEgTUlNRS1hd2FyZSBtYWlsIHJlYWRlci5cbicKIAogICAgIGZvciBmaWxlbmFtZSBpbiBvcy5saXN0ZGlyKGRpcmVjdG9yeSk6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlbmFtZSkKQEAgLTY3LDMzICs1OSwxOCBAQAogICAgICAgICAgICAgIyB1c2UgYSBnZW5lcmljIGJhZy1vZi1iaXRzIHR5cGUuCiAgICAgICAgICAgICBjdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nCiAgICAgICAgIG1haW50eXBlLCBzdWJ0eXBlID0gY3R5cGUuc3BsaXQoJy8nLCAxKQotICAgICAgICBpZiBtYWludHlwZSA9PSAndGV4dCc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZnA6Ci0gICAgICAgICAgICAgICAgIyBOb3RlOiB3ZSBzaG91bGQgaGFuZGxlIGNhbGN1bGF0aW5nIHRoZSBjaGFyc2V0Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRVRleHQoZnAucmVhZCgpLCBfc3VidHlwZT1zdWJ0eXBlKQotICAgICAgICBlbGlmIG1haW50eXBlID09ICdpbWFnZSc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRUltYWdlKGZwLnJlYWQoKSwgX3N1YnR5cGU9c3VidHlwZSkKLSAgICAgICAgZWxpZiBtYWludHlwZSA9PSAnYXVkaW8nOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG1zZyA9IE1JTUVBdWRpbyhmcC5yZWFkKCksIF9zdWJ0eXBlPXN1YnR5cGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRUJhc2UobWFpbnR5cGUsIHN1YnR5cGUpCi0gICAgICAgICAgICAgICAgbXNnLnNldF9wYXlsb2FkKGZwLnJlYWQoKSkKLSAgICAgICAgICAgICMgRW5jb2RlIHRoZSBwYXlsb2FkIHVzaW5nIEJhc2U2NAotICAgICAgICAgICAgZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NChtc2cpCi0gICAgICAgICMgU2V0IHRoZSBmaWxlbmFtZSBwYXJhbWV0ZXIKLSAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsIGZpbGVuYW1lPWZpbGVuYW1lKQotICAgICAgICBvdXRlci5hdHRhY2gobXNnKQorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBtc2cuYWRkX2F0dGFjaG1lbnQoZnAucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50eXBlPW1haW50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnR5cGU9c3VidHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1maWxlbmFtZSkKICAgICAjIE5vdyBzZW5kIG9yIHN0b3JlIHRoZSBtZXNzYWdlCi0gICAgY29tcG9zZWQgPSBvdXRlci5hc19zdHJpbmcoKQogICAgIGlmIGFyZ3Mub3V0cHV0OgotICAgICAgICB3aXRoIG9wZW4oYXJncy5vdXRwdXQsICd3JykgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShjb21wb3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKGFyZ3Mub3V0cHV0LCAnd2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKG1zZy5hc19ieXRlcyhwb2xpY3k9U01UUCkpCiAgICAgZWxzZToKICAgICAgICAgd2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6Ci0gICAgICAgICAgICBzLnNlbmRtYWlsKGFyZ3Muc2VuZGVyLCBhcmdzLnJlY2lwaWVudHMsIGNvbXBvc2VkKQorICAgICAgICAgICAgcy5zZW5kX21lc3NhZ2UobXNnKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CmluZGV4IDg5YzhmM2EuLjJjNDIxNDUgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CkBAIC0xLDE4ICsxLDI0IEBACiAjIEltcG9ydCB0aGUgZW1haWwgbW9kdWxlcyB3ZSdsbCBuZWVkCi1mcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgUGFyc2VyCitmcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgQnl0ZXNQYXJzZXIsIFBhcnNlcgorZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKIAogIyBJZiB0aGUgZS1tYWlsIGhlYWRlcnMgYXJlIGluIGEgZmlsZSwgdW5jb21tZW50IHRoZXNlIHR3byBsaW5lczoKLSMgd2l0aCBvcGVuKG1lc3NhZ2VmaWxlKSBhcyBmcDoKLSMgICAgIGhlYWRlcnMgPSBQYXJzZXIoKS5wYXJzZShmcCkKKyMgd2l0aCBvcGVuKG1lc3NhZ2VmaWxlLCAncmInKSBhcyBmcDoKKyMgICAgIGhlYWRlcnMgPSBCeXRlc1BhcnNlcihwb2xpY3k9ZGVmYXVsdCkucGFyc2UoZnApCiAKLSMgIE9yIGZvciBwYXJzaW5nIGhlYWRlcnMgaW4gYSBzdHJpbmcsIHVzZToKLWhlYWRlcnMgPSBQYXJzZXIoKS5wYXJzZXN0cignRnJvbTogPHVzZXJAZXhhbXBsZS5jb20+XG4nCisjICBPciBmb3IgcGFyc2luZyBoZWFkZXJzIGluIGEgc3RyaW5nICh0aGlzIGlzIGFuIHVuY29tbW9uIG9wZXJhdGlvbiksIHVzZToKK2hlYWRlcnMgPSBQYXJzZXIocG9saWN5PWRlZmF1bHQpLnBhcnNlc3RyKAorICAgICAgICAnRnJvbTogRm9vIEJhciA8dXNlckBleGFtcGxlLmNvbT5cbicKICAgICAgICAgJ1RvOiA8c29tZW9uZV9lbHNlQGV4YW1wbGUuY29tPlxuJwogICAgICAgICAnU3ViamVjdDogVGVzdCBtZXNzYWdlXG4nCiAgICAgICAgICdcbicKICAgICAgICAgJ0JvZHkgd291bGQgZ28gaGVyZVxuJykKIAogIyAgTm93IHRoZSBoZWFkZXIgaXRlbXMgY2FuIGJlIGFjY2Vzc2VkIGFzIGEgZGljdGlvbmFyeToKLXByaW50KCdUbzogJXMnICUgaGVhZGVyc1sndG8nXSkKLXByaW50KCdGcm9tOiAlcycgJSBoZWFkZXJzWydmcm9tJ10pCi1wcmludCgnU3ViamVjdDogJXMnICUgaGVhZGVyc1snc3ViamVjdCddKQorcHJpbnQoJ1RvOiB7fScuZm9ybWF0KGhlYWRlcnNbJ3RvJ10pKQorcHJpbnQoJ0Zyb206IHt9Jy5mb3JtYXQoaGVhZGVyc1snZnJvbSddKSkKK3ByaW50KCdTdWJqZWN0OiB7fScuZm9ybWF0KGhlYWRlcnNbJ3N1YmplY3QnXSkpCisKKyMgWW91IGNhbiBhbHNvIGFjY2VzcyB0aGUgcGFydHMgb2YgdGhlIGFkZHJlc3NlczoKK3ByaW50KCdSZWNpcGllbnQgdXNlcm5hbWU6IHt9Jy5mb3JtYXQoaGVhZGVyc1sndG8nXS5hZGRyZXNzZXNbMF0udXNlcm5hbWUpKQorcHJpbnQoJ1NlbmRlciBuYW1lOiB7fScuZm9ybWF0KGhlYWRlcnNbJ2Zyb20nXS5hZGRyZXNzZXNbMF0uZGlzcGxheV9uYW1lKSkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1taW1lLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKaW5kZXggNjFkMDgzMC4uYzYxMDI0MiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKQEAgLTEsMzAgKzEsMjkgQEAKICMgSW1wb3J0IHNtdHBsaWIgZm9yIHRoZSBhY3R1YWwgc2VuZGluZyBmdW5jdGlvbgogaW1wb3J0IHNtdHBsaWIKIAorIyBBbmQgaW1naGRyIHRvIGZpbmQgdGhlIHR5cGVzIG9mIG91ciBpbWFnZXMKK2ltcG9ydCBpbWdoZHIKKwogIyBIZXJlIGFyZSB0aGUgZW1haWwgcGFja2FnZSBtb2R1bGVzIHdlJ2xsIG5lZWQKLWZyb20gZW1haWwubWltZS5pbWFnZSBpbXBvcnQgTUlNRUltYWdlCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogCi1DT01NQVNQQUNFID0gJywgJwotCi0jIENyZWF0ZSB0aGUgY29udGFpbmVyIChvdXRlcikgZW1haWwgbWVzc2FnZS4KLW1zZyA9IE1JTUVNdWx0aXBhcnQoKQorIyBDcmVhdGUgdGhlIGNvbnRhaW5lciBlbWFpbCBtZXNzYWdlLgorbXNnID0gRW1haWxNZXNzYWdlKCkKIG1zZ1snU3ViamVjdCddID0gJ091ciBmYW1pbHkgcmV1bmlvbicKICMgbWUgPT0gdGhlIHNlbmRlcidzIGVtYWlsIGFkZHJlc3MKICMgZmFtaWx5ID0gdGhlIGxpc3Qgb2YgYWxsIHJlY2lwaWVudHMnIGVtYWlsIGFkZHJlc3NlcwogbXNnWydGcm9tJ10gPSBtZQotbXNnWydUbyddID0gQ09NTUFTUEFDRS5qb2luKGZhbWlseSkKK21zZ1snVG8nXSA9ICcsICcuam9pbihmYW1pbHkpCiBtc2cucHJlYW1ibGUgPSAnT3VyIGZhbWlseSByZXVuaW9uJwogCi0jIEFzc3VtZSB3ZSBrbm93IHRoYXQgdGhlIGltYWdlIGZpbGVzIGFyZSBhbGwgaW4gUE5HIGZvcm1hdAorIyBPcGVuIHRoZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gIFVzZSBpbWdoZHIgdG8gZmlndXJlIG91dCB0aGUKKyMgTUlNRSBzdWJ0eXBlIGZvciBlYWNoIHNwZWNpZmljIGltYWdlLgogZm9yIGZpbGUgaW4gcG5nZmlsZXM6Ci0gICAgIyBPcGVuIHRoZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gIExldCB0aGUgTUlNRUltYWdlIGNsYXNzIGF1dG9tYXRpY2FsbHkKLSAgICAjIGd1ZXNzIHRoZSBzcGVjaWZpYyBpbWFnZSB0eXBlLgogICAgIHdpdGggb3BlbihmaWxlLCAncmInKSBhcyBmcDoKLSAgICAgICAgaW1nID0gTUlNRUltYWdlKGZwLnJlYWQoKSkKLSAgICBtc2cuYXR0YWNoKGltZykKKyAgICAgICAgaW1nX2RhdGEgPSBmcC5yZWFkKCkKKyAgICBtc2cuYWRkX2F0dGFjaG1lbnQoaW1nX2RhdGEsIG1haW50eXBlPSdpbWFnZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlPWltZ2hkci53aGF0KE5vbmUsIGltZ19kYXRhKSkKIAogIyBTZW5kIHRoZSBlbWFpbCB2aWEgb3VyIG93biBTTVRQIHNlcnZlci4KLXMgPSBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpCi1zLnNlbmRfbWVzc2FnZShtc2cpCi1zLnF1aXQoKQord2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6CisgICAgcy5zZW5kX21lc3NhZ2UobXNnKQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBEb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5CnJlbmFtZSB0byBEb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS5weQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKaW5kZXggYjliOGI0MS4uZjY5ZWY0MCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CkBAIC0yLDEzICsyLDEzIEBACiBpbXBvcnQgc210cGxpYgogCiAjIEltcG9ydCB0aGUgZW1haWwgbW9kdWxlcyB3ZSdsbCBuZWVkCi1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCiAKLSMgT3BlbiBhIHBsYWluIHRleHQgZmlsZSBmb3IgcmVhZGluZy4gIEZvciB0aGlzIGV4YW1wbGUsIGFzc3VtZSB0aGF0Ci0jIHRoZSB0ZXh0IGZpbGUgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLgorIyBPcGVuIHRoZSBwbGFpbiB0ZXh0IGZpbGUgd2hvc2UgbmFtZSBpcyBpbiB0ZXh0ZmlsZSBmb3IgcmVhZGluZy4KIHdpdGggb3Blbih0ZXh0ZmlsZSkgYXMgZnA6CiAgICAgIyBDcmVhdGUgYSB0ZXh0L3BsYWluIG1lc3NhZ2UKLSAgICBtc2cgPSBNSU1FVGV4dChmcC5yZWFkKCkpCisgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICBtc2cuc2V0X2NvbnRlbnQoZnAucmVhZCgpKQogCiAjIG1lID09IHRoZSBzZW5kZXIncyBlbWFpbCBhZGRyZXNzCiAjIHlvdSA9PSB0aGUgcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKaW5kZXggNTc0YTBiNi4uZTBhN2YwMSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5CkBAIC0zLDExICszLDExIEBACiAiIiJVbnBhY2sgYSBNSU1FIG1lc3NhZ2UgaW50byBhIGRpcmVjdG9yeSBvZiBmaWxlcy4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgZW1haWwKLWltcG9ydCBlcnJubwogaW1wb3J0IG1pbWV0eXBlcwogCitmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgZGVmYXVsdAorCiBmcm9tIGFyZ3BhcnNlIGltcG9ydCBBcmd1bWVudFBhcnNlcgogCiAKQEAgLTIyLDggKzIyLDggQEAKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdtc2dmaWxlJykKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCi0gICAgd2l0aCBvcGVuKGFyZ3MubXNnZmlsZSkgYXMgZnA6Ci0gICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKGZwKQorICAgIHdpdGggb3BlbihhcmdzLm1zZ2ZpbGUsICdyYicpIGFzIGZwOgorICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIHBvbGljeT1kZWZhdWx0KQogCiAgICAgdHJ5OgogICAgICAgICBvcy5ta2RpcihhcmdzLmRpcmVjdG9yeSkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKaW5kZXggOTg2ZDY3MC4uZWFkN2JkZCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKKysrIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKQEAgLTYzLDYgKzYzLDggQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBcIiVzXCJcbiIsIGFyZ3ZbMV0pOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByZXR1cm4gMTIwOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy90ZXN0LnB5IGIvRG9jL2luY2x1ZGVzL3Rlc3QucHkKaW5kZXggN2ViZjQ2YS4uOWU5ZDRhNiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3Rlc3QucHkKKysrIGIvRG9jL2luY2x1ZGVzL3Rlc3QucHkKQEAgLTIwNCw3ICsyMDQsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBmcm9tIGRpc3R1dGlscy51dGlsIGltcG9ydCBnZXRfcGxhdGZvcm0KLVBMQVRfU1BFQyA9ICIlcy0lcyIgJSAoZ2V0X3BsYXRmb3JtKCksIHN5cy52ZXJzaW9uWzA6M10pCitQTEFUX1NQRUMgPSAiJXMtJWQuJWQiICUgKGdldF9wbGF0Zm9ybSgpLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pCiBzcmMgPSBvcy5wYXRoLmpvaW4oImJ1aWxkIiwgImxpYi4lcyIgJSBQTEFUX1NQRUMpCiBzeXMucGF0aC5hcHBlbmQoc3JjKQogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5IGIvRG9jL2luY2x1ZGVzL3R6aW5mby1leGFtcGxlcy5weQppbmRleCAzYThjZjQ3Li5hZTVhNTA5IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5CisrKyBiL0RvYy9pbmNsdWRlcy90emluZm8tZXhhbXBsZXMucHkKQEAgLTEsNDYgKzEsMTMgQEAKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IHR6aW5mbywgdGltZWRlbHRhLCBkYXRldGltZQorZnJvbSBkYXRldGltZSBpbXBvcnQgdHppbmZvLCB0aW1lZGVsdGEsIGRhdGV0aW1lLCB0aW1lem9uZQogCiBaRVJPID0gdGltZWRlbHRhKDApCiBIT1VSID0gdGltZWRlbHRhKGhvdXJzPTEpCi0KLSMgQSBVVEMgY2xhc3MuCi0KLWNsYXNzIFVUQyh0emluZm8pOgotICAgICIiIlVUQyIiIgotCi0gICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBaRVJPCi0KLSAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuICJVVEMiCi0KLSAgICBkZWYgZHN0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIFpFUk8KLQotdXRjID0gVVRDKCkKLQotIyBBIGNsYXNzIGJ1aWxkaW5nIHR6aW5mbyBvYmplY3RzIGZvciBmaXhlZC1vZmZzZXQgdGltZSB6b25lcy4KLSMgTm90ZSB0aGF0IEZpeGVkT2Zmc2V0KDAsICJVVEMiKSBpcyBhIGRpZmZlcmVudCB3YXkgdG8gYnVpbGQgYQotIyBVVEMgdHppbmZvIG9iamVjdC4KLQotY2xhc3MgRml4ZWRPZmZzZXQodHppbmZvKToKLSAgICAiIiJGaXhlZCBvZmZzZXQgaW4gbWludXRlcyBlYXN0IGZyb20gVVRDLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9mZnNldCwgbmFtZSk6Ci0gICAgICAgIHNlbGYuX19vZmZzZXQgPSB0aW1lZGVsdGEobWludXRlcz1vZmZzZXQpCi0gICAgICAgIHNlbGYuX19uYW1lID0gbmFtZQotCi0gICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fb2Zmc2V0Ci0KLSAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19uYW1lCi0KLSAgICBkZWYgZHN0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIFpFUk8KK1NFQ09ORCA9IHRpbWVkZWx0YShzZWNvbmRzPTEpCiAKICMgQSBjbGFzcyBjYXB0dXJpbmcgdGhlIHBsYXRmb3JtJ3MgaWRlYSBvZiBsb2NhbCB0aW1lLgotCisjIChNYXkgcmVzdWx0IGluIHdyb25nIHZhbHVlcyBvbiBoaXN0b3JpY2FsIHRpbWVzIGluCisjICB0aW1lem9uZXMgd2hlcmUgVVRDIG9mZnNldCBhbmQvb3IgdGhlIERTVCBydWxlcyBoYWQKKyMgIGNoYW5nZWQgaW4gdGhlIHBhc3QuKQogaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogU1RET0ZGU0VUID0gdGltZWRlbHRhKHNlY29uZHMgPSAtX3RpbWUudGltZXpvbmUpCkBAIC01Myw2ICsyMCwxNiBAQAogCiBjbGFzcyBMb2NhbFRpbWV6b25lKHR6aW5mbyk6CiAKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgorICAgICAgICBzdGFtcCA9IChkdCAtIGRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbz1zZWxmKSkgLy8gU0VDT05ECisgICAgICAgIGFyZ3MgPSBfdGltZS5sb2NhbHRpbWUoc3RhbXApWzo2XQorICAgICAgICBkc3RfZGlmZiA9IERTVERJRkYgLy8gU0VDT05ECisgICAgICAgICMgRGV0ZWN0IGZvbGQKKyAgICAgICAgZm9sZCA9IChhcmdzID09IF90aW1lLmxvY2FsdGltZShzdGFtcCAtIGRzdF9kaWZmKSkKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lKCphcmdzLCBtaWNyb3NlY29uZD1kdC5taWNyb3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbz1zZWxmLCBmb2xkPWZvbGQpCisKICAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKICAgICAgICAgaWYgc2VsZi5faXNkc3QoZHQpOgogICAgICAgICAgICAgcmV0dXJuIERTVE9GRlNFVApAQCAtOTksMjAgKzc2LDM3IEBACiAjIEluIHRoZSBVUywgc2luY2UgMjAwNywgRFNUIHN0YXJ0cyBhdCAyYW0gKHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBzZWNvbmQKICMgU3VuZGF5IGluIE1hcmNoLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5IG9uIG9yIGFmdGVyIE1hciA4LgogRFNUU1RBUlRfMjAwNyA9IGRhdGV0aW1lKDEsIDMsIDgsIDIpCi0jIGFuZCBlbmRzIGF0IDJhbSAoRFNUIHRpbWU7IDFhbSBzdGFuZGFyZCB0aW1lKSBvbiB0aGUgZmlyc3QgU3VuZGF5IG9mIE5vdi4KLURTVEVORF8yMDA3ID0gZGF0ZXRpbWUoMSwgMTEsIDEsIDEpCisjIGFuZCBlbmRzIGF0IDJhbSAoRFNUIHRpbWUpIG9uIHRoZSBmaXJzdCBTdW5kYXkgb2YgTm92LgorRFNURU5EXzIwMDcgPSBkYXRldGltZSgxLCAxMSwgMSwgMikKICMgRnJvbSAxOTg3IHRvIDIwMDYsIERTVCB1c2VkIHRvIHN0YXJ0IGF0IDJhbSAoc3RhbmRhcmQgdGltZSkgb24gdGhlIGZpcnN0Ci0jIFN1bmRheSBpbiBBcHJpbCBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWU7IDFhbSBzdGFuZGFyZCB0aW1lKSBvbiB0aGUgbGFzdAorIyBTdW5kYXkgaW4gQXByaWwgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lKSBvbiB0aGUgbGFzdAogIyBTdW5kYXkgb2YgT2N0b2Jlciwgd2hpY2ggaXMgdGhlIGZpcnN0IFN1bmRheSBvbiBvciBhZnRlciBPY3QgMjUuCiBEU1RTVEFSVF8xOTg3XzIwMDYgPSBkYXRldGltZSgxLCA0LCAxLCAyKQotRFNURU5EXzE5ODdfMjAwNiA9IGRhdGV0aW1lKDEsIDEwLCAyNSwgMSkKK0RTVEVORF8xOTg3XzIwMDYgPSBkYXRldGltZSgxLCAxMCwgMjUsIDIpCiAjIEZyb20gMTk2NyB0byAxOTg2LCBEU1QgdXNlZCB0byBzdGFydCBhdCAyYW0gKHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBsYXN0Ci0jIFN1bmRheSBpbiBBcHJpbCAodGhlIG9uZSBvbiBvciBhZnRlciBBcHJpbCAyNCkgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lOwotIyAxYW0gc3RhbmRhcmQgdGltZSkgb24gdGhlIGxhc3QgU3VuZGF5IG9mIE9jdG9iZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCBTdW5kYXkKKyMgU3VuZGF5IGluIEFwcmlsICh0aGUgb25lIG9uIG9yIGFmdGVyIEFwcmlsIDI0KSBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWUpCisjIG9uIHRoZSBsYXN0IFN1bmRheSBvZiBPY3RvYmVyLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5CiAjIG9uIG9yIGFmdGVyIE9jdCAyNS4KIERTVFNUQVJUXzE5NjdfMTk4NiA9IGRhdGV0aW1lKDEsIDQsIDI0LCAyKQogRFNURU5EXzE5NjdfMTk4NiA9IERTVEVORF8xOTg3XzIwMDYKIAorZGVmIHVzX2RzdF9yYW5nZSh5ZWFyKToKKyAgICAjIEZpbmQgc3RhcnQgYW5kIGVuZCB0aW1lcyBmb3IgVVMgRFNULiBGb3IgeWVhcnMgYmVmb3JlIDE5NjcsIHJldHVybgorICAgICMgc3RhcnQgPSBlbmQgZm9yIG5vIERTVC4KKyAgICBpZiAyMDA2IDwgeWVhcjoKKyAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzIwMDcsIERTVEVORF8yMDA3CisgICAgZWxpZiAxOTg2IDwgeWVhciA8IDIwMDc6CisgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTg3XzIwMDYsIERTVEVORF8xOTg3XzIwMDYKKyAgICBlbGlmIDE5NjYgPCB5ZWFyIDwgMTk4NzoKKyAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5NjdfMTk4NiwgRFNURU5EXzE5NjdfMTk4NgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAoZGF0ZXRpbWUoeWVhciwgMSwgMSksICkgKiAyCisKKyAgICBzdGFydCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihkc3RzdGFydC5yZXBsYWNlKHllYXI9eWVhcikpCisgICAgZW5kID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKGRzdGVuZC5yZXBsYWNlKHllYXI9eWVhcikpCisgICAgcmV0dXJuIHN0YXJ0LCBlbmQKKworCiBjbGFzcyBVU1RpbWVab25lKHR6aW5mbyk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG91cnMsIHJlcHJuYW1lLCBzdGRuYW1lLCBkc3RuYW1lKToKQEAgLTE0MSwyNyArMTM1LDM5IEBACiAgICAgICAgICAgICAjIGltcGxlbWVudGF0aW9uKSBwYXNzZXMgYSBkYXRldGltZSB3aXRoIGR0LnR6aW5mbyBpcyBzZWxmLgogICAgICAgICAgICAgcmV0dXJuIFpFUk8KICAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCi0KLSAgICAgICAgIyBGaW5kIHN0YXJ0IGFuZCBlbmQgdGltZXMgZm9yIFVTIERTVC4gRm9yIHllYXJzIGJlZm9yZSAxOTY3LCByZXR1cm4KLSAgICAgICAgIyBaRVJPIGZvciBubyBEU1QuCi0gICAgICAgIGlmIDIwMDYgPCBkdC55ZWFyOgotICAgICAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzIwMDcsIERTVEVORF8yMDA3Ci0gICAgICAgIGVsaWYgMTk4NiA8IGR0LnllYXIgPCAyMDA3OgotICAgICAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5ODdfMjAwNiwgRFNURU5EXzE5ODdfMjAwNgotICAgICAgICBlbGlmIDE5NjYgPCBkdC55ZWFyIDwgMTk4NzoKLSAgICAgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTY3XzE5ODYsIERTVEVORF8xOTY3XzE5ODYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBaRVJPCi0KLSAgICAgICAgc3RhcnQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0c3RhcnQucmVwbGFjZSh5ZWFyPWR0LnllYXIpKQotICAgICAgICBlbmQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0ZW5kLnJlcGxhY2UoeWVhcj1kdC55ZWFyKSkKLQorICAgICAgICBzdGFydCwgZW5kID0gdXNfZHN0X3JhbmdlKGR0LnllYXIpCiAgICAgICAgICMgQ2FuJ3QgY29tcGFyZSBuYWl2ZSB0byBhd2FyZSBvYmplY3RzLCBzbyBzdHJpcCB0aGUgdGltZXpvbmUgZnJvbQogICAgICAgICAjIGR0IGZpcnN0LgotICAgICAgICBpZiBzdGFydCA8PSBkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSA8IGVuZDoKKyAgICAgICAgZHQgPSBkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKQorICAgICAgICBpZiBzdGFydCArIEhPVVIgPD0gZHQgPCBlbmQgLSBIT1VSOgorICAgICAgICAgICAgIyBEU1QgaXMgaW4gZWZmZWN0LgogICAgICAgICAgICAgcmV0dXJuIEhPVVIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBaRVJPCisgICAgICAgIGlmIGVuZCAtIEhPVVIgPD0gZHQgPCBlbmQ6CisgICAgICAgICAgICAjIEZvbGQgKGFuIGFtYmlndW91cyBob3VyKTogdXNlIGR0LmZvbGQgdG8gZGlzYW1iaWd1YXRlLgorICAgICAgICAgICAgcmV0dXJuIFpFUk8gaWYgZHQuZm9sZCBlbHNlIEhPVVIKKyAgICAgICAgaWYgc3RhcnQgPD0gZHQgPCBzdGFydCArIEhPVVI6CisgICAgICAgICAgICAjIEdhcCAoYSBub24tZXhpc3RlbnQgaG91cik6IHJldmVyc2UgdGhlIGZvbGQgcnVsZS4KKyAgICAgICAgICAgIHJldHVybiBIT1VSIGlmIGR0LmZvbGQgZWxzZSBaRVJPCisgICAgICAgICMgRFNUIGlzIG9mZi4KKyAgICAgICAgcmV0dXJuIFpFUk8KKworICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisgICAgICAgIHN0YXJ0LCBlbmQgPSB1c19kc3RfcmFuZ2UoZHQueWVhcikKKyAgICAgICAgc3RhcnQgPSBzdGFydC5yZXBsYWNlKHR6aW5mbz1zZWxmKQorICAgICAgICBlbmQgPSBlbmQucmVwbGFjZSh0emluZm89c2VsZikKKyAgICAgICAgc3RkX3RpbWUgPSBkdCArIHNlbGYuc3Rkb2Zmc2V0CisgICAgICAgIGRzdF90aW1lID0gc3RkX3RpbWUgKyBIT1VSCisgICAgICAgIGlmIGVuZCA8PSBkc3RfdGltZSA8IGVuZCArIEhPVVI6CisgICAgICAgICAgICAjIFJlcGVhdGVkIGhvdXIKKyAgICAgICAgICAgIHJldHVybiBzdGRfdGltZS5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgaWYgc3RkX3RpbWUgPCBzdGFydCBvciBkc3RfdGltZSA+PSBlbmQ6CisgICAgICAgICAgICAjIFN0YW5kYXJkIHRpbWUKKyAgICAgICAgICAgIHJldHVybiBzdGRfdGltZQorICAgICAgICBpZiBzdGFydCA8PSBzdGRfdGltZSA8IGVuZCAtIEhPVVI6CisgICAgICAgICAgICAjIERheWxpZ2h0IHNhdmluZyB0aW1lCisgICAgICAgICAgICByZXR1cm4gZHN0X3RpbWUKKwogCiBFYXN0ZXJuICA9IFVTVGltZVpvbmUoLTUsICJFYXN0ZXJuIiwgICJFU1QiLCAiRURUIikKIENlbnRyYWwgID0gVVNUaW1lWm9uZSgtNiwgIkNlbnRyYWwiLCAgIkNTVCIsICJDRFQiKQpkaWZmIC0tZ2l0IGEvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0IGIvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0CmluZGV4IDFlZjMxNDkuLmIyMjQ2NWQgMTAwNjQ0Ci0tLSBhL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdAorKysgYi9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QKQEAgLTIsOSArMiw5IEBACiAKIC4uIF9pbnN0YWxsaW5nLWluZGV4OgogCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICBJbnN0YWxsaW5nIFB5dGhvbiBNb2R1bGVzCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKgorSW5zdGFsbGluZyBQeXRob24gTW9kdWxlcworKioqKioqKioqKioqKioqKioqKioqKioqKgogCiA6RW1haWw6IGRpc3R1dGlscy1zaWdAcHl0aG9uLm9yZwogCkBAIC0zNCwyNCArMzQsMjQgQEAKIAogKiBgYHBpcGBgIGlzIHRoZSBwcmVmZXJyZWQgaW5zdGFsbGVyIHByb2dyYW0uIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNCwgaXQKICAgaXMgaW5jbHVkZWQgYnkgZGVmYXVsdCB3aXRoIHRoZSBQeXRob24gYmluYXJ5IGluc3RhbGxlcnMuCi0qIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhIHNlbWktaXNvbGF0ZWQgUHl0aG9uIGVudmlyb25tZW50IHRoYXQgYWxsb3dzCisqIEEgKnZpcnR1YWwgZW52aXJvbm1lbnQqIGlzIGEgc2VtaS1pc29sYXRlZCBQeXRob24gZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MKICAgcGFja2FnZXMgdG8gYmUgaW5zdGFsbGVkIGZvciB1c2UgYnkgYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uLCByYXRoZXIgdGhhbgotICBiZWluZyBpbnN0YWxsZWQgc3lzdGVtIHdpZGUKLSogYGBweXZlbnZgYCBpcyB0aGUgc3RhbmRhcmQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCBoYXMKKyAgYmVpbmcgaW5zdGFsbGVkIHN5c3RlbSB3aWRlLgorKiBgYHZlbnZgYCBpcyB0aGUgc3RhbmRhcmQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCBoYXMKICAgYmVlbiBwYXJ0IG9mIFB5dGhvbiBzaW5jZSBQeXRob24gMy4zLiBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjQsIGl0Ci0gIGRlZmF1bHRzIHRvIGluc3RhbGxpbmcgYGBwaXBgYCBpbnRvIGFsbCBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnRzCisgIGRlZmF1bHRzIHRvIGluc3RhbGxpbmcgYGBwaXBgYCBpbnRvIGFsbCBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnRzLgogKiBgYHZpcnR1YWxlbnZgYCBpcyBhIHRoaXJkIHBhcnR5IGFsdGVybmF0aXZlIChhbmQgcHJlZGVjZXNzb3IpIHRvCi0gIGBgcHl2ZW52YGAuIEl0IGFsbG93cyB2aXJ0dWFsIGVudmlyb25tZW50cyB0byBiZSB1c2VkIG9uIHZlcnNpb25zIG9mCi0gIFB5dGhvbiBwcmlvciB0byAzLjQsIHdoaWNoIGVpdGhlciBkb24ndCBwcm92aWRlIGBgcHl2ZW52YGAgYXQgYWxsLCBvcgorICBgYHZlbnZgYC4gSXQgYWxsb3dzIHZpcnR1YWwgZW52aXJvbm1lbnRzIHRvIGJlIHVzZWQgb24gdmVyc2lvbnMgb2YKKyAgUHl0aG9uIHByaW9yIHRvIDMuNCwgd2hpY2ggZWl0aGVyIGRvbid0IHByb3ZpZGUgYGB2ZW52YGAgYXQgYWxsLCBvcgogICBhcmVuJ3QgYWJsZSB0byBhdXRvbWF0aWNhbGx5IGluc3RhbGwgYGBwaXBgYCBpbnRvIGNyZWF0ZWQgZW52aXJvbm1lbnRzLgotKiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgSW5kZXggPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+YF9fIGlzIGEgcHVibGljCisqIFRoZSBgUHl0aG9uIFBhY2thZ2luZyBJbmRleCA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT5gX18gaXMgYSBwdWJsaWMKICAgcmVwb3NpdG9yeSBvZiBvcGVuIHNvdXJjZSBsaWNlbnNlZCBwYWNrYWdlcyBtYWRlIGF2YWlsYWJsZSBmb3IgdXNlIGJ5Ci0gIG90aGVyIFB5dGhvbiB1c2VycworICBvdGhlciBQeXRob24gdXNlcnMuCiAqIHRoZSBgUHl0aG9uIFBhY2thZ2luZyBBdXRob3JpdHkKICAgPGh0dHBzOi8vd3d3LnB5cGEuaW8vZW4vbGF0ZXN0Lz5gX18gYXJlIHRoZSBncm91cCBvZgogICBkZXZlbG9wZXJzIGFuZCBkb2N1bWVudGF0aW9uIGF1dGhvcnMgcmVzcG9uc2libGUgZm9yIHRoZSBtYWludGVuYW5jZSBhbmQKICAgZXZvbHV0aW9uIG9mIHRoZSBzdGFuZGFyZCBwYWNrYWdpbmcgdG9vbHMgYW5kIHRoZSBhc3NvY2lhdGVkIG1ldGFkYXRhIGFuZAotICBmaWxlIGZvcm1hdCBzdGFuZGFyZHMuIFRoZXkgbWFpbnRhaW4gYSB2YXJpZXR5IG9mIHRvb2xzLCBkb2N1bWVudGF0aW9uCisgIGZpbGUgZm9ybWF0IHN0YW5kYXJkcy4gVGhleSBtYWludGFpbiBhIHZhcmlldHkgb2YgdG9vbHMsIGRvY3VtZW50YXRpb24sCiAgIGFuZCBpc3N1ZSB0cmFja2VycyBvbiBib3RoIGBHaXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhPmBfXyBhbmQKICAgYEJpdEJ1Y2tldCA8aHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5cGEvPmBfXy4KICogYGBkaXN0dXRpbHNgYCBpcyB0aGUgb3JpZ2luYWwgYnVpbGQgYW5kIGRpc3RyaWJ1dGlvbiBzeXN0ZW0gZmlyc3QgYWRkZWQgdG8KQEAgLTYyLDYgKzYyLDE5IEBACiAgIG9mIHRoZSBtYWlsaW5nIGxpc3QgdXNlZCB0byBjb29yZGluYXRlIFB5dGhvbiBwYWNrYWdpbmcgc3RhbmRhcmRzCiAgIGRldmVsb3BtZW50KS4KIAorLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgYGBweXZlbnZgYCB3YXMgdGhlIHJlY29tbWVuZGVkIHRvb2wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzIGZvcgorICAgUHl0aG9uIDMuMyBhbmQgMy40LCBhbmQgaXMgYGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNgorICAgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnL2Rldi93aGF0c25ldy8zLjYuaHRtbCNkZXByZWNhdGVkLWZlYXR1cmVzPmBfLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIHVzZSBvZiBgYHZlbnZgYCBpcyBub3cgcmVjb21tZW5kZWQgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLgorCisuLiBzZWVhbHNvOjoKKworICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogQ3JlYXRpbmcgYW5kIHVzaW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9pbnN0YWxsaW5nLyNjcmVhdGluZy12aXJ0dWFsLWVudmlyb25tZW50cz5gX18KKwogCiBCYXNpYyB1c2FnZQogPT09PT09PT09PT0KQEAgLTEwMCwxMyArMTEzLDE0IEBACiBNb3JlIGluZm9ybWF0aW9uIGFuZCByZXNvdXJjZXMgcmVnYXJkaW5nIGBgcGlwYGAgYW5kIGl0cyBjYXBhYmlsaXRpZXMgY2FuIGJlCiBmb3VuZCBpbiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZSA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZz5gX18uCiAKLWBgcHl2ZW52YGAgaGFzIGl0cyBvd24gZG9jdW1lbnRhdGlvbiBhdCA6cmVmOmBzY3JpcHRzLXB5dmVudmAuIEluc3RhbGxpbmcKLWludG8gYW4gYWN0aXZlIHZpcnR1YWwgZW52aXJvbm1lbnQgdXNlcyB0aGUgY29tbWFuZHMgc2hvd24gYWJvdmUuCitDcmVhdGlvbiBvZiB2aXJ0dWFsIGVudmlyb25tZW50cyBpcyBkb25lIHRocm91Z2ggdGhlIDptb2Q6YHZlbnZgIG1vZHVsZS4KK0luc3RhbGxpbmcgcGFja2FnZXMgaW50byBhbiBhY3RpdmUgdmlydHVhbCBlbnZpcm9ubWVudCB1c2VzIHRoZSBjb21tYW5kcyBzaG93bgorYWJvdmUuCiAKIC4uIHNlZWFsc286OgogCiAgICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogSW5zdGFsbGluZyBQeXRob24gRGlzdHJpYnV0aW9uIFBhY2thZ2VzCi0gICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2luc3RhbGxpbmcvPmBfXworICAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvPmBfXwogCiAKIEhvdyBkbyBJIC4uLj8KQEAgLTEyNCw3ICsxMzgsNyBAQAogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IFJlcXVpcmVtZW50cyBmb3IgSW5zdGFsbGluZyBQYWNrYWdlcwotICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2luc3RhbGxpbmcvI3JlcXVpcmVtZW50cy1mb3ItaW5zdGFsbGluZy1wYWNrYWdlcz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvI3JlcXVpcmVtZW50cy1mb3ItaW5zdGFsbGluZy1wYWNrYWdlcz5gX18KIAogCiAuLiBpbnN0YWxsaW5nLXBlci11c2VyLWluc3RhbGxhdGlvbjoKQEAgLTE0MiwyMCArMTU2LDE5IEBACiBBIG51bWJlciBvZiBzY2llbnRpZmljIFB5dGhvbiBwYWNrYWdlcyBoYXZlIGNvbXBsZXggYmluYXJ5IGRlcGVuZGVuY2llcywgYW5kCiBhcmVuJ3QgY3VycmVudGx5IGVhc3kgdG8gaW5zdGFsbCB1c2luZyBgYHBpcGBgIGRpcmVjdGx5LiBBdCB0aGlzIHBvaW50IGluCiB0aW1lLCBpdCB3aWxsIG9mdGVuIGJlIGVhc2llciBmb3IgdXNlcnMgdG8gaW5zdGFsbCB0aGVzZSBwYWNrYWdlcyBieQotYG90aGVyIG1lYW5zCi08aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc2NpZW5jZS8+YF9fCitgb3RoZXIgbWVhbnMgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc2NpZW5jZS8+YF9fCiByYXRoZXIgdGhhbiBhdHRlbXB0aW5nIHRvIGluc3RhbGwgdGhlbSB3aXRoIGBgcGlwYGAuCiAKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBJbnN0YWxsaW5nIFNjaWVudGlmaWMgUGFja2FnZXMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zY2llbmNlLz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL3NjaWVuY2UvPmBfXwogCiAKIC4uLiB3b3JrIHdpdGggbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIGluc3RhbGxlZCBpbiBwYXJhbGxlbD8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotT24gTGludXgsIE1hYyBPUyBYIGFuZCBvdGhlciBQT1NJWCBzeXN0ZW1zLCB1c2UgdGhlIHZlcnNpb25lZCBQeXRob24gY29tbWFuZHMKK09uIExpbnV4LCBNYWMgT1MgWCwgYW5kIG90aGVyIFBPU0lYIHN5c3RlbXMsIHVzZSB0aGUgdmVyc2lvbmVkIFB5dGhvbiBjb21tYW5kcwogaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGAtbWBgIHN3aXRjaCB0byBydW4gdGhlIGFwcHJvcHJpYXRlIGNvcHkgb2YKIGBgcGlwYGA6OgogCkBAIC0xNjQsNyArMTc3LDcgQEAKICAgIHB5dGhvbjMgICAtbSBwaXAgaW5zdGFsbCBTb21lUGFja2FnZSAgIyBkZWZhdWx0IFB5dGhvbiAzCiAgICBweXRob24zLjQgLW0gcGlwIGluc3RhbGwgU29tZVBhY2thZ2UgICMgc3BlY2lmaWNhbGx5IFB5dGhvbiAzLjQKIAotKGFwcHJvcHJpYXRlbHkgdmVyc2lvbmVkIGBgcGlwYGAgY29tbWFuZHMgbWF5IGFsc28gYmUgYXZhaWxhYmxlKQorQXBwcm9wcmlhdGVseSB2ZXJzaW9uZWQgYGBwaXBgYCBjb21tYW5kcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUuCiAKIE9uIFdpbmRvd3MsIHVzZSB0aGUgYGBweWBgIFB5dGhvbiBsYXVuY2hlciBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBgYC1tYGAKIHN3aXRjaDo6CkBAIC0yMTIsMTEgKzIyNSwxMSBAQAogdGhhbiBuZWVkaW5nIHRvIGJ1aWxkIHRoZW0gdGhlbXNlbHZlcy4KIAogU29tZSBvZiB0aGUgc29sdXRpb25zIGZvciBpbnN0YWxsaW5nIGBzY2llbnRpZmljIHNvZnR3YXJlCi08aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc2NpZW5jZS8+YF9fCi10aGF0IGlzIG5vdCB5ZXQgYXZhaWxhYmxlIGFzIHByZS1idWlsdCBgYHdoZWVsYGAgZmlsZXMgbWF5IGFsc28gaGVscCB3aXRoCis8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zY2llbmNlLz5gX18KK3RoYXQgYXJlIG5vdCB5ZXQgYXZhaWxhYmxlIGFzIHByZS1idWlsdCBgYHdoZWVsYGAgZmlsZXMgbWF5IGFsc28gaGVscCB3aXRoCiBvYnRhaW5pbmcgb3RoZXIgYmluYXJ5IGV4dGVuc2lvbnMgd2l0aG91dCBuZWVkaW5nIHRvIGJ1aWxkIHRoZW0gbG9jYWxseS4KIAogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IEJpbmFyeSBFeHRlbnNpb25zCi0gICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3QvZXh0ZW5zaW9ucy8+YF9fCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9leHRlbnNpb25zLz5gX18KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAppbmRleCBhZTcyZDI2Li5lMDIzNjBjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CkBAIC01OCwxMyArNTgsMTMgQEAKICAgICAgIFRoZSBhc3luY2hyb25vdXMgb3V0cHV0IGJ1ZmZlciBzaXplIChkZWZhdWx0IGBgNDA5NmBgKS4KIAogICAgVW5saWtlIDpjbGFzczpgYXN5bmNvcmUuZGlzcGF0Y2hlcmAsIDpjbGFzczpgYXN5bmNfY2hhdGAgYWxsb3dzIHlvdSB0bwotICAgZGVmaW5lIGEgZmlyc3QtaW4tZmlyc3Qtb3V0IHF1ZXVlIChmaWZvKSBvZiAqcHJvZHVjZXJzKi4gQSBwcm9kdWNlciBuZWVkCisgICBkZWZpbmUgYSA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlIG9mICpwcm9kdWNlcnMqLiBBIHByb2R1Y2VyIG5lZWQKICAgIGhhdmUgb25seSBvbmUgbWV0aG9kLCA6bWV0aDpgbW9yZWAsIHdoaWNoIHNob3VsZCByZXR1cm4gZGF0YSB0byBiZQogICAgdHJhbnNtaXR0ZWQgb24gdGhlIGNoYW5uZWwuCiAgICBUaGUgcHJvZHVjZXIgaW5kaWNhdGVzIGV4aGF1c3Rpb24gKCppLmUuKiB0aGF0IGl0IGNvbnRhaW5zIG5vIG1vcmUgZGF0YSkgYnkKICAgIGhhdmluZyBpdHMgOm1ldGg6YG1vcmVgIG1ldGhvZCByZXR1cm4gdGhlIGVtcHR5IGJ5dGVzIG9iamVjdC4gQXQgdGhpcyBwb2ludAotICAgdGhlIDpjbGFzczpgYXN5bmNfY2hhdGAgb2JqZWN0IHJlbW92ZXMgdGhlIHByb2R1Y2VyIGZyb20gdGhlIGZpZm8gYW5kIHN0YXJ0cwotICAgdXNpbmcgdGhlIG5leHQgcHJvZHVjZXIsIGlmIGFueS4gV2hlbiB0aGUgcHJvZHVjZXIgZmlmbyBpcyBlbXB0eSB0aGUKKyAgIHRoZSA6Y2xhc3M6YGFzeW5jX2NoYXRgIG9iamVjdCByZW1vdmVzIHRoZSBwcm9kdWNlciBmcm9tIHRoZSBxdWV1ZSBhbmQgc3RhcnRzCisgICB1c2luZyB0aGUgbmV4dCBwcm9kdWNlciwgaWYgYW55LiBXaGVuIHRoZSBwcm9kdWNlciBxdWV1ZSBpcyBlbXB0eSB0aGUKICAgIDptZXRoOmBoYW5kbGVfd3JpdGVgIG1ldGhvZCBkb2VzIG5vdGhpbmcuIFlvdSB1c2UgdGhlIGNoYW5uZWwgb2JqZWN0J3MKICAgIDptZXRoOmBzZXRfdGVybWluYXRvcmAgbWV0aG9kIHRvIGRlc2NyaWJlIGhvdyB0byByZWNvZ25pemUgdGhlIGVuZCBvZiwgb3IKICAgIGFuIGltcG9ydGFudCBicmVha3BvaW50IGluLCBhbiBpbmNvbWluZyB0cmFuc21pc3Npb24gZnJvbSB0aGUgcmVtb3RlCkBAIC03OCw4ICs3OCw4IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuY2xvc2Vfd2hlbl9kb25lKCkKIAotICAgUHVzaGVzIGEgYGBOb25lYGAgb24gdG8gdGhlIHByb2R1Y2VyIGZpZm8uIFdoZW4gdGhpcyBwcm9kdWNlciBpcyBwb3BwZWQgb2ZmCi0gICB0aGUgZmlmbyBpdCBjYXVzZXMgdGhlIGNoYW5uZWwgdG8gYmUgY2xvc2VkLgorICAgUHVzaGVzIGEgYGBOb25lYGAgb24gdG8gdGhlIHByb2R1Y2VyIHF1ZXVlLiBXaGVuIHRoaXMgcHJvZHVjZXIgaXMgcG9wcGVkIG9mZgorICAgdGhlIHF1ZXVlIGl0IGNhdXNlcyB0aGUgY2hhbm5lbCB0byBiZSBjbG9zZWQuCiAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5jb2xsZWN0X2luY29taW5nX2RhdGEoZGF0YSkKQEAgLTkyLDcgKzkyLDcgQEAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuZGlzY2FyZF9idWZmZXJzKCkKIAogICAgSW4gZW1lcmdlbmNpZXMgdGhpcyBtZXRob2Qgd2lsbCBkaXNjYXJkIGFueSBkYXRhIGhlbGQgaW4gdGhlIGlucHV0IGFuZC9vcgotICAgb3V0cHV0IGJ1ZmZlcnMgYW5kIHRoZSBwcm9kdWNlciBmaWZvLgorICAgb3V0cHV0IGJ1ZmZlcnMgYW5kIHRoZSBwcm9kdWNlciBxdWV1ZS4KIAogCiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LmZvdW5kX3Rlcm1pbmF0b3IoKQpAQCAtMTEwLDcgKzExMCw3IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQucHVzaChkYXRhKQogCi0gICBQdXNoZXMgZGF0YSBvbiB0byB0aGUgY2hhbm5lbCdzIGZpZm8gdG8gZW5zdXJlIGl0cyB0cmFuc21pc3Npb24uCisgICBQdXNoZXMgZGF0YSBvbiB0byB0aGUgY2hhbm5lbCdzIHF1ZXVlIHRvIGVuc3VyZSBpdHMgdHJhbnNtaXNzaW9uLgogICAgVGhpcyBpcyBhbGwgeW91IG5lZWQgdG8gZG8gdG8gaGF2ZSB0aGUgY2hhbm5lbCB3cml0ZSB0aGUgZGF0YSBvdXQgdG8gdGhlCiAgICBuZXR3b3JrLCBhbHRob3VnaCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgeW91ciBvd24gcHJvZHVjZXJzIGluIG1vcmUgY29tcGxleAogICAgc2NoZW1lcyB0byBpbXBsZW1lbnQgZW5jcnlwdGlvbiBhbmQgY2h1bmtpbmcsIGZvciBleGFtcGxlLgpAQCAtMTE4LDcgKzExOCw3IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQucHVzaF93aXRoX3Byb2R1Y2VyKHByb2R1Y2VyKQogCi0gICBUYWtlcyBhIHByb2R1Y2VyIG9iamVjdCBhbmQgYWRkcyBpdCB0byB0aGUgcHJvZHVjZXIgZmlmbyBhc3NvY2lhdGVkIHdpdGgKKyAgIFRha2VzIGEgcHJvZHVjZXIgb2JqZWN0IGFuZCBhZGRzIGl0IHRvIHRoZSBwcm9kdWNlciBxdWV1ZSBhc3NvY2lhdGVkIHdpdGgKICAgIHRoZSBjaGFubmVsLiAgV2hlbiBhbGwgY3VycmVudGx5LXB1c2hlZCBwcm9kdWNlcnMgaGF2ZSBiZWVuIGV4aGF1c3RlZCB0aGUKICAgIGNoYW5uZWwgd2lsbCBjb25zdW1lIHRoaXMgcHJvZHVjZXIncyBkYXRhIGJ5IGNhbGxpbmcgaXRzIDptZXRoOmBtb3JlYAogICAgbWV0aG9kIGFuZCBzZW5kIHRoZSBkYXRhIHRvIHRoZSByZW1vdGUgZW5kcG9pbnQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKaW5kZXggZWVkNGYwOC4uNjcwNjAwMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdApAQCAtMTEwLDggKzExMCw5IEBACiAgICBjYWxsZWQgYWZ0ZXIgOm1ldGg6YGNhbGxfc29vbmAgcmV0dXJucywgd2hlbiBjb250cm9sIHJldHVybnMgdG8gdGhlIGV2ZW50CiAgICBsb29wLgogCi0gICBUaGlzIG9wZXJhdGVzIGFzIGEgRklGTyBxdWV1ZSwgY2FsbGJhY2tzIGFyZSBjYWxsZWQgaW4gdGhlIG9yZGVyIGluCi0gICB3aGljaCB0aGV5IGFyZSByZWdpc3RlcmVkLiAgRWFjaCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UuCisgICBUaGlzIG9wZXJhdGVzIGFzIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSwgY2FsbGJhY2tzCisgICBhcmUgY2FsbGVkIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSByZWdpc3RlcmVkLiAgRWFjaCBjYWxsYmFjaworICAgd2lsbCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlLgogCiAgICBBbnkgcG9zaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGxiYWNrIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogICAgY2FsbGJhY2sgd2hlbiBpdCBpcyBjYWxsZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QgYi9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKaW5kZXggODc4ZDhkYi4uNGY1ZjBmMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdApAQCAtNTMsMTMgKzUzLDE0IEBACiAgICB0aGFuIG9uZSBsaW5lIG1heSBiZSBwYXNzZWQgYXQgYSB0aW1lLgogCiAKLS4uIGZ1bmN0aW9uOjogYjJhX2Jhc2U2NChkYXRhKQorLi4gZnVuY3Rpb246OiBiMmFfYmFzZTY0KGRhdGEsIFwqLCBuZXdsaW5lPVRydWUpCiAKICAgIENvbnZlcnQgYmluYXJ5IGRhdGEgdG8gYSBsaW5lIG9mIEFTQ0lJIGNoYXJhY3RlcnMgaW4gYmFzZTY0IGNvZGluZy4gVGhlIHJldHVybgotICAgdmFsdWUgaXMgdGhlIGNvbnZlcnRlZCBsaW5lLCBpbmNsdWRpbmcgYSBuZXdsaW5lIGNoYXIuICBUaGUgbmV3bGluZSBpcwotICAgYWRkZWQgYmVjYXVzZSB0aGUgb3JpZ2luYWwgdXNlIGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gd2FzIHRvIGZlZWQgaXQgYQotICAgc2VyaWVzIG9mIDU3IGJ5dGUgaW5wdXQgbGluZXMgdG8gZ2V0IG91dHB1dCBsaW5lcyB0aGF0IGNvbmZvcm0gdG8gdGhlCi0gICBNSU1FLWJhc2U2NCBzdGFuZGFyZC4gIE90aGVyd2lzZSB0aGUgb3V0cHV0IGNvbmZvcm1zIHRvIDpyZmM6YDM1NDhgLgorICAgdmFsdWUgaXMgdGhlIGNvbnZlcnRlZCBsaW5lLCBpbmNsdWRpbmcgYSBuZXdsaW5lIGNoYXIgaWYgKm5ld2xpbmUqIGlzCisgICB0cnVlLiAgVGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uIGNvbmZvcm1zIHRvIDpyZmM6YDM1NDhgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlICpuZXdsaW5lKiBwYXJhbWV0ZXIuCiAKIAogLi4gZnVuY3Rpb246OiBhMmJfcXAoZGF0YSwgaGVhZGVyPUZhbHNlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYnoyLnJzdCBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKaW5kZXggNmM0OWQ5Zi4uZDVmNjIyNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYnoyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iejIucnN0CkBAIC02MSw2ICs2MSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIGBgJ3gnYGAgKGV4Y2x1c2l2ZSBjcmVhdGlvbikgbW9kZSB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogQloyRmlsZShmaWxlbmFtZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz1Ob25lLCBjb21wcmVzc2xldmVsPTkpCiAKQEAgLTEyOCw2ICsxMzEsOSBAQAogICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCiAgICAgICBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogSW5jcmVtZW50YWwgKGRlKWNvbXByZXNzaW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NtYXRoLnJzdCBiL0RvYy9saWJyYXJ5L2NtYXRoLnJzdAppbmRleCA2MmRkYjZiLi5kOTM1YzQxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY21hdGgucnN0CkBAIC0yNTMsNiArMjUzLDQwIEBACiAKICAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgKmUqLCBhcyBhIGZsb2F0LgogCisuLiBkYXRhOjogdGF1CisKKyAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgKs+EKiwgYXMgYSBmbG9hdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBpbmYKKworICAgRmxvYXRpbmctcG9pbnQgcG9zaXRpdmUgaW5maW5pdHkuIEVxdWl2YWxlbnQgdG8gYGBmbG9hdCgnaW5mJylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBpbmZqCisKKyAgIENvbXBsZXggbnVtYmVyIHdpdGggemVybyByZWFsIHBhcnQgYW5kIHBvc2l0aXZlIGluZmluaXR5IGltYWdpbmFyeQorICAgcGFydC4gRXF1aXZhbGVudCB0byBgYGNvbXBsZXgoMC4wLCBmbG9hdCgnaW5mJykpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogbmFuCisKKyAgIEEgZmxvYXRpbmctcG9pbnQgIm5vdCBhIG51bWJlciIgKE5hTikgdmFsdWUuICBFcXVpdmFsZW50IHRvCisgICBgYGZsb2F0KCduYW4nKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IG5hbmoKKworICAgQ29tcGxleCBudW1iZXIgd2l0aCB6ZXJvIHJlYWwgcGFydCBhbmQgTmFOIGltYWdpbmFyeSBwYXJ0LiBFcXVpdmFsZW50IHRvCisgICBgYGNvbXBsZXgoMC4wLCBmbG9hdCgnbmFuJykpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIGluZGV4OjogbW9kdWxlOiBtYXRoCiAKIE5vdGUgdGhhdCB0aGUgc2VsZWN0aW9uIG9mIGZ1bmN0aW9ucyBpcyBzaW1pbGFyLCBidXQgbm90IGlkZW50aWNhbCwgdG8gdGhhdCBpbgpAQCAtMjc2LDUgKzMxMCwzIEBACiAgICBLYWhhbiwgVzogIEJyYW5jaCBjdXRzIGZvciBjb21wbGV4IGVsZW1lbnRhcnkgZnVuY3Rpb25zOyBvciwgTXVjaCBhZG8gYWJvdXQKICAgIG5vdGhpbmcncyBzaWduIGJpdC4gIEluIElzZXJsZXMsIEEuLCBhbmQgUG93ZWxsLCBNLiAoZWRzLiksIFRoZSBzdGF0ZSBvZiB0aGUgYXJ0CiAgICBpbiBudW1lcmljYWwgYW5hbHlzaXMuIENsYXJlbmRvbiBQcmVzcyAoMTk4NykgcHAxNjUtMjExLgotCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGUucnN0IGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKaW5kZXggNDQzYWY2OS4uNGNjZTFmYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKQEAgLTMwLDE1ICszMCwxOSBAQAogICAgYGBzeXMucHMxYGAgYW5kIGBgc3lzLnBzMmBgLCBhbmQgaW5wdXQgYnVmZmVyaW5nLgogCiAKLS4uIGZ1bmN0aW9uOjogaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUpCisuLiBmdW5jdGlvbjo6IGludGVyYWN0KGJhbm5lcj1Ob25lLCByZWFkZnVuYz1Ob25lLCBsb2NhbD1Ob25lLCBleGl0bXNnPU5vbmUpCiAKICAgIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJ1biBhIHJlYWQtZXZhbC1wcmludCBsb29wLiAgVGhpcyBjcmVhdGVzIGEgbmV3CiAgICBpbnN0YW5jZSBvZiA6Y2xhc3M6YEludGVyYWN0aXZlQ29uc29sZWAgYW5kIHNldHMgKnJlYWRmdW5jKiB0byBiZSB1c2VkIGFzCiAgICB0aGUgOm1ldGg6YEludGVyYWN0aXZlQ29uc29sZS5yYXdfaW5wdXRgIG1ldGhvZCwgaWYgcHJvdmlkZWQuICBJZiAqbG9jYWwqIGlzCiAgICBwcm92aWRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YEludGVyYWN0aXZlQ29uc29sZWAgY29uc3RydWN0b3IgZm9yCiAgICB1c2UgYXMgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIGZvciB0aGUgaW50ZXJwcmV0ZXIgbG9vcC4gIFRoZSA6bWV0aDpgaW50ZXJhY3RgCi0gICBtZXRob2Qgb2YgdGhlIGluc3RhbmNlIGlzIHRoZW4gcnVuIHdpdGggKmJhbm5lciogcGFzc2VkIGFzIHRoZSBiYW5uZXIgdG8KLSAgIHVzZSwgaWYgcHJvdmlkZWQuICBUaGUgY29uc29sZSBvYmplY3QgaXMgZGlzY2FyZGVkIGFmdGVyIHVzZS4KKyAgIG1ldGhvZCBvZiB0aGUgaW5zdGFuY2UgaXMgdGhlbiBydW4gd2l0aCAqYmFubmVyKiBhbmQgKmV4aXRtc2cqIHBhc3NlZCBhcyB0aGUKKyAgIGJhbm5lciBhbmQgZXhpdCBtZXNzYWdlIHRvIHVzZSwgaWYgcHJvdmlkZWQuICBUaGUgY29uc29sZSBvYmplY3QgaXMgZGlzY2FyZGVkCisgICBhZnRlciB1c2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqZXhpdG1zZyogcGFyYW1ldGVyLgogCiAKIC4uIGZ1bmN0aW9uOjogY29tcGlsZV9jb21tYW5kKHNvdXJjZSwgZmlsZW5hbWU9IjxpbnB1dD4iLCBzeW1ib2w9InNpbmdsZSIpCkBAIC0xMzYsNyArMTQwLDcgQEAKIGludGVycHJldGVyIG9iamVjdHMgYXMgd2VsbCBhcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9ucy4KIAogCi0uLiBtZXRob2Q6OiBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPU5vbmUpCisuLiBtZXRob2Q6OiBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPU5vbmUsIGV4aXRtc2c9Tm9uZSkKIAogICAgQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gY29uc29sZS4gVGhlIG9wdGlvbmFsICpiYW5uZXIqIGFyZ3VtZW50CiAgICBzcGVjaWZ5IHRoZSBiYW5uZXIgdG8gcHJpbnQgYmVmb3JlIHRoZSBmaXJzdCBpbnRlcmFjdGlvbjsgYnkgZGVmYXVsdCBpdCBwcmludHMgYQpAQCAtMTQ0LDkgKzE0OCwxNiBAQAogICAgYnkgdGhlIGNsYXNzIG5hbWUgb2YgdGhlIGNvbnNvbGUgb2JqZWN0IGluIHBhcmVudGhlc2VzIChzbyBhcyBub3QgdG8gY29uZnVzZQogICAgdGhpcyB3aXRoIHRoZSByZWFsIGludGVycHJldGVyIC0tIHNpbmNlIGl0J3Mgc28gY2xvc2UhKS4KIAorICAgVGhlIG9wdGlvbmFsICpleGl0bXNnKiBhcmd1bWVudCBzcGVjaWZpZXMgYW4gZXhpdCBtZXNzYWdlIHByaW50ZWQgd2hlbiBleGl0aW5nLgorICAgUGFzcyB0aGUgZW1wdHkgc3RyaW5nIHRvIHN1cHByZXNzIHRoZSBleGl0IG1lc3NhZ2UuIElmICpleGl0bXNnKiBpcyBub3QgZ2l2ZW4gb3IKKyAgIE5vbmUsIGEgZGVmYXVsdCBtZXNzYWdlIGlzIHByaW50ZWQuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUbyBzdXBwcmVzcyBwcmludGluZyBhbnkgYmFubmVyLCBwYXNzIGFuIGVtcHR5IHN0cmluZy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFByaW50IGFuIGV4aXQgbWVzc2FnZSB3aGVuIGV4aXRpbmcuCisKIAogLi4gbWV0aG9kOjogSW50ZXJhY3RpdmVDb25zb2xlLnB1c2gobGluZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdCBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKaW5kZXggMWFkZDMwMC4uYzZiNmE1NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CkBAIC0xMjU0LDEwICsxMjU0LDE2IEBACiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBPbmx5IGBgZXJyb3JzPSdzdHJpY3QnYGAgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IGlzIHN1cHBvcnRlZC4gICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IG1iY3MgICAgICAgICAgICAgICB8IGRiY3MgICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAorfCBtYmNzICAgICAgICAgICAgICAgfCBhbnNpLCAgIHwgV2luZG93cyBvbmx5OiBFbmNvZGUgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8IGRiY3MgICAgfCBvcGVyYW5kIGFjY29yZGluZyB0byB0aGUgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IEFOU0kgY29kZXBhZ2UgKENQX0FDUCkgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IG9lbSAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgT0VNIGNvZGVwYWdlIChDUF9PRU1DUCkgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuNiAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IHBhbG1vcyAgICAgICAgICAgICB8ICAgICAgICAgfCBFbmNvZGluZyBvZiBQYWxtT1MgMy41ICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBwdW55Y29kZSAgICAgICAgICAgfCAgICAgICAgIHwgSW1wbGVtZW50cyA6cmZjOmAzNDkyYC4gICB8CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAppbmRleCBhZWI2YTczLi5lNGI3NWEwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTQxLDEzICs0MSwxNiBAQAogOmNsYXNzOmBIYXNoYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faGFzaF9fYGAKIDpjbGFzczpgSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCiA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19uZXh0X19gYCAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBSZXZlcnNpYmxlYCAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fcmV2ZXJzZWRfX2BgCiA6Y2xhc3M6YEdlbmVyYXRvcmAgICAgICAgICA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgIGBgc2VuZGBgLCBgYHRocm93YGAgICAgIGBgY2xvc2VgYCwgYGBfX2l0ZXJfX2BgLCBgYF9fbmV4dF9fYGAKIDpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIDpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCis6Y2xhc3M6YENvbGxlY3Rpb25gICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19jb250YWluc19fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAKIAotOmNsYXNzOmBTZXF1ZW5jZWAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAsIGBgX19yZXZlcnNlZF9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19sZW5fX2BgICAgICAgICAgICAgIGBgaW5kZXhgYCwgYW5kIGBgY291bnRgYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCis6Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFJldmVyc2libGVgLCAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCiAKIDpjbGFzczpgTXV0YWJsZVNlcXVlbmNlYCAgIDpjbGFzczpgU2VxdWVuY2VgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2VxdWVuY2VgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIGBgYXBwZW5kYGAsIGBgcmV2ZXJzZWBgLCBgYGV4dGVuZGBgLCBgYHBvcGBgLApAQCAtNTgsOSArNjEsOSBAQAogOmNsYXNzOmBCeXRlU3RyaW5nYCAgICAgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAogCi06Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19jb250YWluc19fYGAsICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICBgYF9fbGVuX19gYCAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAorOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgOmNsYXNzOmBDb2xsZWN0aW9uYCAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBgYF9fbGVfX2BgLCBgYF9fbHRfX2BgLCBgYF9fZXFfX2BgLCBgYF9fbmVfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYF9fZ3RfX2BgLCBgYF9fZ2VfX2BgLCBgYF9fYW5kX19gYCwgYGBfX29yX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBfX3N1Yl9fYGAsIGBgX194b3JfX2BgLCBhbmQgYGBpc2Rpc2pvaW50YGAKIAogOmNsYXNzOmBNdXRhYmxlU2V0YCAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXRgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgY2xlYXJgYCwgYGBwb3BgYCwgYGByZW1vdmVgYCwgYGBfX2lvcl9fYGAsCkBAIC02OCw5ICs3MSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWRkYGAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZGlzY2FyZGBgCiAKLTpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAKKzpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIAogOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AgICAgOmNsYXNzOmBNYXBwaW5nYCAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBNYXBwaW5nYCBtZXRob2RzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBgYHBvcGBgLCBgYHBvcGl0ZW1gYCwgYGBjbGVhcmBgLCBgYHVwZGF0ZWBgLApAQCAtMTA1LDEyICsxMDgsMjUgQEAKICAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2l0ZXJfX2AgbWV0aG9kLgogICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhYmxlYC4KIAorLi4gY2xhc3M6OiBDb2xsZWN0aW9uCisKKyAgIEFCQyBmb3Igc2l6ZWQgaXRlcmFibGUgY29udGFpbmVyIGNsYXNzZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBjbGFzczo6IEl0ZXJhdG9yCiAKICAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmB+aXRlcmF0b3IuX19pdGVyX19gIGFuZAogICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AgbWV0aG9kcy4gIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mCiAgICA6dGVybTpgaXRlcmF0b3JgLgogCisuLiBjbGFzczo6IFJldmVyc2libGUKKworICAgQUJDIGZvciBpdGVyYWJsZSBjbGFzc2VzIHRoYXQgYWxzbyBwcm92aWRlIHRoZSA6bWV0aDpgX19yZXZlcnNlZF9fYAorICAgbWV0aG9kLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gY2xhc3M6OiBHZW5lcmF0b3IKIAogICAgQUJDIGZvciBnZW5lcmF0b3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudCB0aGUgcHJvdG9jb2wgZGVmaW5lZCBpbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CmluZGV4IGExNDcyODcuLjUxYzIzNWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKQEAgLTc2Myw3ICs3NjMsNyBAQAogc2VsZi1kb2N1bWVudGluZyBjb2RlLiAgVGhleSBjYW4gYmUgdXNlZCB3aGVyZXZlciByZWd1bGFyIHR1cGxlcyBhcmUgdXNlZCwgYW5kCiB0aGV5IGFkZCB0aGUgYWJpbGl0eSB0byBhY2Nlc3MgZmllbGRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBwb3NpdGlvbiBpbmRleC4KIAotLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKQorLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgKiwgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlLCBtb2R1bGU9Tm9uZSkKIAogICAgIFJldHVybnMgYSBuZXcgdHVwbGUgc3ViY2xhc3MgbmFtZWQgKnR5cGVuYW1lKi4gIFRoZSBuZXcgc3ViY2xhc3MgaXMgdXNlZCB0bwogICAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKQEAgLTc5MCwxMiArNzkwLDIxIEBACiAgICAgYnVpbHQuICBUaGlzIG9wdGlvbiBpcyBvdXRkYXRlZDsgaW5zdGVhZCwgaXQgaXMgc2ltcGxlciB0byBwcmludCB0aGUKICAgICA6YXR0cjpgX3NvdXJjZWAgYXR0cmlidXRlLgogCisgICAgSWYgKm1vZHVsZSogaXMgZGVmaW5lZCwgdGhlIGBgX19tb2R1bGVfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgbmFtZWQgdHVwbGUgaXMKKyAgICBzZXQgdG8gdGhhdCB2YWx1ZS4KKwogICAgIE5hbWVkIHR1cGxlIGluc3RhbmNlcyBkbyBub3QgaGF2ZSBwZXItaW5zdGFuY2UgZGljdGlvbmFyaWVzLCBzbyB0aGV5IGFyZQogICAgIGxpZ2h0d2VpZ2h0IGFuZCByZXF1aXJlIG5vIG1vcmUgbWVtb3J5IHRoYW4gcmVndWxhciB0dXBsZXMuCiAKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KKyAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogcGFyYW1ldGVycyBiZWNhbWUKKyAgICAgICA6cmVmOmBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgIEFkZGVkIHRoZSAqbW9kdWxlKiBwYXJhbWV0ZXIuCiAKIC4uIGRvY3Rlc3Q6OgogICAgIDpvcHRpb25zOiArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTg0Niw3ICs4NTUsOSBAQAogLi4gbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX2FzZGljdCgpCiAKICAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBPcmRlcmVkRGljdGAgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciBjb3JyZXNwb25kaW5nCi0gICAgdmFsdWVzOjoKKyAgICB2YWx1ZXM6CisKKyAgICAuLiBkb2N0ZXN0OjoKIAogICAgICAgICA+Pj4gcCA9IFBvaW50KHg9MTEsIHk9MjIpCiAgICAgICAgID4+PiBwLl9hc2RpY3QoKQpAQCAtOTA4LDcgKzkxOSw5IEBACiBmdW5jdGlvbmFsaXR5IHdpdGggYSBzdWJjbGFzcy4gIEhlcmUgaXMgaG93IHRvIGFkZCBhIGNhbGN1bGF0ZWQgZmllbGQgYW5kCiBhIGZpeGVkLXdpZHRoIHByaW50IGZvcm1hdDoKIAotICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6CisuLiBkb2N0ZXN0OjoKKworICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pKToKICAgICAuLi4gICAgIF9fc2xvdHNfXyA9ICgpCiAgICAgLi4uICAgICBAcHJvcGVydHkKICAgICAuLi4gICAgIGRlZiBoeXBvdChzZWxmKToKQEAgLTk1OSw2ICs5NzIsMTEgQEAKICAgICAgIGNvbnN0cnVjdG9yIHRoYXQgaXMgY29udmVuaWVudCBmb3IgdXNlIGNhc2VzIHdoZXJlIG5hbWVkIHR1cGxlcyBhcmUgYmVpbmcKICAgICAgIHN1YmNsYXNzZWQuCiAKKyAgICAqIFNlZSA6bWV0aDpgdHlwZXMuU2ltcGxlTmFtZXNwYWNlYCBmb3IgYSBtdXRhYmxlIG5hbWVzcGFjZSBiYXNlZCBvbiBhbgorICAgICAgdW5kZXJseWluZyBkaWN0aW9uYXJ5IGluc3RlYWQgb2YgYSB0dXBsZS4KKworICAgICogU2VlIDptZXRoOmB0eXBpbmcuTmFtZWRUdXBsZWAgZm9yIGEgd2F5IHRvIGFkZCB0eXBlIGhpbnRzIGZvciBuYW1lZCB0dXBsZXMuCisKIAogOmNsYXNzOmBPcmRlcmVkRGljdGAgb2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTgwLDggKzk5OCw5IEBACiAgICAgLi4gbWV0aG9kOjogcG9waXRlbShsYXN0PVRydWUpCiAKICAgICAgICAgVGhlIDptZXRoOmBwb3BpdGVtYCBtZXRob2QgZm9yIG9yZGVyZWQgZGljdGlvbmFyaWVzIHJldHVybnMgYW5kIHJlbW92ZXMgYQotICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQotICAgICAgICBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLgorICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4KKyAgICAgICAgOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIG9yZGVyIGlmICpsYXN0KiBpcyB0cnVlCisgICAgICAgIG9yIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgb3JkZXIgaWYgZmFsc2UuCiAKICAgICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QgYi9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdAppbmRleCA1MTFjNTgxLi5jMWFmMDJiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdApAQCAtMTAyLDcgKzEwMiw4IEBACiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzPTEwLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xLCB3b3JrZXJzPTEpCiAKICAgIFJlY3Vyc2l2ZWx5IGRlc2NlbmQgdGhlIGRpcmVjdG9yeSB0cmVlIG5hbWVkIGJ5ICpkaXIqLCBjb21waWxpbmcgYWxsIDpmaWxlOmAucHlgCi0gICBmaWxlcyBhbG9uZyB0aGUgd2F5LgorICAgZmlsZXMgYWxvbmcgdGhlIHdheS4gUmV0dXJuIGEgdHJ1ZSB2YWx1ZSBpZiBhbGwgdGhlIGZpbGVzIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwKKyAgIGFuZCBhIGZhbHNlIHZhbHVlIG90aGVyd2lzZS4KIAogICAgVGhlICptYXhsZXZlbHMqIHBhcmFtZXRlciBpcyB1c2VkIHRvIGxpbWl0IHRoZSBkZXB0aCBvZiB0aGUgcmVjdXJzaW9uOyBpdAogICAgZGVmYXVsdHMgdG8gYGAxMGBgLgpAQCAtMTUyLDkgKzE1MywxMyBAQAogICAgICAgVGhlICpsZWdhY3kqIHBhcmFtZXRlciBvbmx5IHdyaXRlcyBvdXQgYGAucHljYGAgZmlsZXMsIG5vdCBgYC5weW9gYCBmaWxlcwogICAgICAgbm8gbWF0dGVyIHdoYXQgdGhlIHZhbHVlIG9mICpvcHRpbWl6ZSogaXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKIAotICAgQ29tcGlsZSB0aGUgZmlsZSB3aXRoIHBhdGggKmZ1bGxuYW1lKi4KKyAgIENvbXBpbGUgdGhlIGZpbGUgd2l0aCBwYXRoICpmdWxsbmFtZSouIFJldHVybiBhIHRydWUgdmFsdWUgaWYgdGhlIGZpbGUKKyAgIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwgYW5kIGEgZmFsc2UgdmFsdWUgb3RoZXJ3aXNlLgogCiAgICBJZiAqZGRpciogaXMgZ2l2ZW4sIGl0IGlzIHByZXBlbmRlZCB0byB0aGUgcGF0aCB0byB0aGUgZmlsZSBiZWluZyBjb21waWxlZAogICAgZm9yIHVzZSBpbiBjb21waWxhdGlvbiB0aW1lIHRyYWNlYmFja3MsIGFuZCBpcyBhbHNvIGNvbXBpbGVkIGluIHRvIHRoZQpAQCAtMTkwLDggKzE5NSwxMCBAQAogCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj1UcnVlLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKLSAgIEJ5dGUtY29tcGlsZSBhbGwgdGhlIDpmaWxlOmAucHlgIGZpbGVzIGZvdW5kIGFsb25nIGBgc3lzLnBhdGhgYC4gSWYKLSAgICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCisgICBCeXRlLWNvbXBpbGUgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBmb3VuZCBhbG9uZyBgYHN5cy5wYXRoYGAuIFJldHVybiBhCisgICB0cnVlIHZhbHVlIGlmIGFsbCB0aGUgZmlsZXMgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5LCBhbmQgYSBmYWxzZSB2YWx1ZSBvdGhlcndpc2UuCisKKyAgIElmICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCiAgICBpbiB0aGUgc2VhcmNoLiAgQWxsIG90aGVyIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCB0byB0aGUgOmZ1bmM6YGNvbXBpbGVfZGlyYAogICAgZnVuY3Rpb24uICBOb3RlIHRoYXQgdW5saWtlIHRoZSBvdGhlciBjb21waWxlIGZ1bmN0aW9ucywgYGBtYXhsZXZlbHNgYAogICAgZGVmYXVsdHMgdG8gYGAwYGAuCkBAIC0yMTcsNiArMjI0LDkgQEAKICAgIGltcG9ydCByZQogICAgY29tcGlsZWFsbC5jb21waWxlX2RpcignTGliLycsIHJ4PXJlLmNvbXBpbGUocidbL1xcXVsuXXN2bicpLCBmb3JjZT1UcnVlKQogCisgICAjIHBhdGhsaWIuUGF0aCBvYmplY3RzIGNhbiBhbHNvIGJlIHVzZWQuCisgICBpbXBvcnQgcGF0aGxpYgorICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihwYXRobGliLlBhdGgoJ0xpYi8nKSwgZm9yY2U9VHJ1ZSkKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CmluZGV4IGFlMDNmNGIuLmQ4NTU3NmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdApAQCAtMTI0LDcgKzEyNCw3IEBACiAgICBleGVjdXRvci5zdWJtaXQod2FpdF9vbl9mdXR1cmUpCiAKIAotLi4gY2xhc3M6OiBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9Tm9uZSkKKy4uIGNsYXNzOjogVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPU5vbmUsIHRocmVhZF9uYW1lX3ByZWZpeD0nJykKIAogICAgQW4gOmNsYXNzOmBFeGVjdXRvcmAgc3ViY2xhc3MgdGhhdCB1c2VzIGEgcG9vbCBvZiBhdCBtb3N0ICptYXhfd29ya2VycyoKICAgIHRocmVhZHMgdG8gZXhlY3V0ZSBjYWxscyBhc3luY2hyb25vdXNseS4KQEAgLTEzNyw2ICsxMzcsMTAgQEAKICAgICAgIHNob3VsZCBiZSBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMKICAgICAgIGZvciA6Y2xhc3M6YFByb2Nlc3NQb29sRXhlY3V0b3JgLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFRoZSAqdGhyZWFkX25hbWVfcHJlZml4KiBhcmd1bWVudCB3YXMgYWRkZWQgdG8gYWxsb3cgdXNlcnMgdG8KKyAgICAgIGNvbnRyb2wgdGhlIHRocmVhZGluZy5UaHJlYWQgbmFtZXMgZm9yIHdvcmtlciB0aHJlYWRzIGNyZWF0ZWQgYnkKKyAgICAgIHRoZSBwb29sIGZvciBlYXNpZXIgZGVidWdnaW5nLgogCiAuLiBfdGhyZWFkcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QgYi9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CmluZGV4IGQ1YTBmMDkuLmYwNzQyY2UgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdApAQCAtMzMsMTYgKzMzLDIyIEBACiAgICAoZS5nLiA6bWV0aDpgX19pbXVsX19gLCA6bWV0aDpgX19pYW5kX19gLCBldGMuKSBmb3IgdGhlIHNhbWUgcHVycG9zZS4KICAgIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLgogCi0uLiBub3RlOjoKKyAgIC4uIG5vdGU6OgogCi0gICBXaGVuIGBgTm90SW1wbGVtZW50ZWRgYCBpcyByZXR1cm5lZCwgdGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlCi0gICByZWZsZWN0ZWQgb3BlcmF0aW9uIG9uIHRoZSBvdGhlciB0eXBlLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcKLSAgIG9uIHRoZSBvcGVyYXRvci4gIElmIGFsbCBhdHRlbXB0ZWQgb3BlcmF0aW9ucyByZXR1cm4gYGBOb3RJbXBsZW1lbnRlZGBgLCB0aGUKLSAgIGludGVycHJldGVyIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgICAgV2hlbiBhIGJpbmFyeSAob3IgaW4tcGxhY2UpIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYCB0aGUKKyAgICAgIGludGVycHJldGVyIHdpbGwgdHJ5IHRoZSByZWZsZWN0ZWQgb3BlcmF0aW9uIG9uIHRoZSBvdGhlciB0eXBlIChvciBzb21lCisgICAgICBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRvcikuICBJZiBhbGwgYXR0ZW1wdHMgcmV0dXJuCisgICAgICBgYE5vdEltcGxlbWVudGVkYGAsIHRoZSBpbnRlcnByZXRlciB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKyAgICAgIEluY29ycmVjdGx5IHJldHVybmluZyBgYE5vdEltcGxlbWVudGVkYGAgd2lsbCByZXN1bHQgaW4gYSBtaXNsZWFkaW5nCisgICAgICBlcnJvciBtZXNzYWdlIG9yIHRoZSBgYE5vdEltcGxlbWVudGVkYGAgdmFsdWUgYmVpbmcgcmV0dXJuZWQgdG8gUHl0aG9uIGNvZGUuCiAKLSAgIFNlZQotICAgOnJlZjpgaW1wbGVtZW50aW5nLXRoZS1hcml0aG1ldGljLW9wZXJhdGlvbnNgCi0gICBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgU2VlIDpyZWY6YGltcGxlbWVudGluZy10aGUtYXJpdGhtZXRpYy1vcGVyYXRpb25zYCBmb3IgZXhhbXBsZXMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBgYE5vdEltcGxlbnRlZEVycm9yYGAgYW5kIGBgTm90SW1wbGVtZW50ZWRgYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZSwKKyAgICAgIGV2ZW4gdGhvdWdoIHRoZXkgaGF2ZSBzaW1pbGFyIG5hbWVzIGFuZCBwdXJwb3Nlcy4KKyAgICAgIFNlZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBmb3IgZGV0YWlscyBvbiB3aGVuIHRvIHVzZSBpdC4KIAogCiAuLiBkYXRhOjogRWxsaXBzaXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0IGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKaW5kZXggY2Y4NWZjZC4uZGQzNGM5NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKQEAgLTE4LDYgKzE4LDE4IEBACiAKIEZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBwcm92aWRlZDoKIAorLi4gY2xhc3M6OiBBYnN0cmFjdENvbnRleHRNYW5hZ2VyCisKKyAgIEFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudAorICAgOm1ldGg6YG9iamVjdC5fX2VudGVyX19gIGFuZCA6bWV0aDpgb2JqZWN0Ll9fZXhpdF9fYC4gQSBkZWZhdWx0CisgICBpbXBsZW1lbnRhdGlvbiBmb3IgOm1ldGg6YG9iamVjdC5fX2VudGVyX19gIGlzIHByb3ZpZGVkIHdoaWNoIHJldHVybnMKKyAgIGBgc2VsZmBgIHdoaWxlIDptZXRoOmBvYmplY3QuX19leGl0X19gIGlzIGFuIGFic3RyYWN0IG1ldGhvZCB3aGljaCBieSBkZWZhdWx0CisgICByZXR1cm5zIGBgTm9uZWBgLiBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisKIC4uIGRlY29yYXRvcjo6IGNvbnRleHRtYW5hZ2VyCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgYSA6dGVybTpgZGVjb3JhdG9yYCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhIGZhY3RvcnkKQEAgLTQ0Nyw5ICs0NTksOSBAQAogYWNxdWlzaXRpb24gYW5kIHJlbGVhc2UgZnVuY3Rpb25zLCBhbG9uZyB3aXRoIGFuIG9wdGlvbmFsIHZhbGlkYXRpb24gZnVuY3Rpb24sCiBhbmQgbWFwcyB0aGVtIHRvIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2w6OgogCi0gICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyLCBFeGl0U3RhY2sKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIsIEV4aXRTdGFjawogCi0gICBjbGFzcyBSZXNvdXJjZU1hbmFnZXI6CisgICBjbGFzcyBSZXNvdXJjZU1hbmFnZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWNxdWlyZV9yZXNvdXJjZSwgcmVsZWFzZV9yZXNvdXJjZSwgY2hlY2tfcmVzb3VyY2Vfb2s9Tm9uZSk6CiAgICAgICAgICAgIHNlbGYuYWNxdWlyZV9yZXNvdXJjZSA9IGFjcXVpcmVfcmVzb3VyY2UKQEAgLTU3OCwxMCArNTkwLDEwIEBACiAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAKICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQoc2VsZi5uYW1lKSkKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6ICVzJywgc2VsZi5uYW1lKQogCiAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjLCBleGNfdGIpOgotICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiB7fScuZm9ybWF0KHNlbGYubmFtZSkpCisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6ICVzJywgc2VsZi5uYW1lKQogCiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgdXNlZCBhcyBib3RoIGEgY29udGV4dCBtYW5hZ2VyOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHQucnN0CmluZGV4IGEyMWMxZTcuLmRiZDQyNzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NyeXB0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKQEAgLTY4LDcgKzY4LDcgQEAKIAogICAgQSBsaXN0IG9mIGF2YWlsYWJsZSBwYXNzd29yZCBoYXNoaW5nIGFsZ29yaXRobXMsIGFzCiAgICBgYGNyeXB0Lk1FVEhPRF8qYGAgb2JqZWN0cy4gIFRoaXMgbGlzdCBpcyBzb3J0ZWQgZnJvbSBzdHJvbmdlc3QgdG8KLSAgIHdlYWtlc3QsIGFuZCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYXQgbGVhc3QgYGBjcnlwdC5NRVRIT0RfQ1JZUFRgYC4KKyAgIHdlYWtlc3QuCiAKIAogTW9kdWxlIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdCBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKaW5kZXggMWVkZGZkYy4uOGViNGI4MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CkBAIC0xNSw0ICsxNSw2IEBACiAuLiB0b2N0cmVlOjoKIAogICAgaGFzaGxpYi5yc3QKKyAgIGhhc2hsaWItYmxha2UyLnJzdAogICAgaG1hYy5yc3QKKyAgIHNlY3JldHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jc3YucnN0IGIvRG9jL2xpYnJhcnkvY3N2LnJzdAppbmRleCA3ZmI0ZmM4Li42MzQxYmMzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jc3YucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKQEAgLTE0OSwxOCArMTQ5LDI1IEBACiAuLiBjbGFzczo6IERpY3RSZWFkZXIoY3N2ZmlsZSwgZmllbGRuYW1lcz1Ob25lLCByZXN0a2V5PU5vbmUsIHJlc3R2YWw9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgIGRpYWxlY3Q9J2V4Y2VsJywgKmFyZ3MsICoqa3dkcykKIAotICAgQ3JlYXRlIGFuIG9iamVjdCB3aGljaCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciByZWFkZXIgYnV0IG1hcHMgdGhlCi0gICBpbmZvcm1hdGlvbiByZWFkIGludG8gYSBkaWN0IHdob3NlIGtleXMgYXJlIGdpdmVuIGJ5IHRoZSBvcHRpb25hbAotICAgKmZpZWxkbmFtZXMqIHBhcmFtZXRlci4gIFRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIGEgOm1vZDpgc2VxdWVuY2UKLSAgIDxjb2xsZWN0aW9ucy5hYmM+YCB3aG9zZSBlbGVtZW50cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZHMgb2YgdGhlCi0gICBpbnB1dCBkYXRhIGluIG9yZGVyLiBUaGVzZSBlbGVtZW50cyBiZWNvbWUgdGhlIGtleXMgb2YgdGhlIHJlc3VsdGluZwotICAgZGljdGlvbmFyeS4gIElmIHRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIG9taXR0ZWQsIHRoZSB2YWx1ZXMgaW4gdGhlCi0gICBmaXJzdCByb3cgb2YgdGhlICpjc3ZmaWxlKiB3aWxsIGJlIHVzZWQgYXMgdGhlIGZpZWxkbmFtZXMuICBJZiB0aGUgcm93IHJlYWQKLSAgIGhhcyBtb3JlIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGRhdGEgaXMgYWRkZWQgYXMKLSAgIGEgc2VxdWVuY2Uga2V5ZWQgYnkgdGhlIHZhbHVlIG9mICpyZXN0a2V5Ki4gIElmIHRoZSByb3cgcmVhZCBoYXMgZmV3ZXIKLSAgIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGtleXMgdGFrZSB0aGUgdmFsdWUgb2YKLSAgIHRoZSBvcHRpb25hbCAqcmVzdHZhbCogcGFyYW1ldGVyLiAgQW55IG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzCi0gICBhcmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgcmVhZGVyYCBpbnN0YW5jZS4KKyAgIENyZWF0ZSBhbiBvYmplY3QgdGhhdCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciByZWFkZXIgYnV0IG1hcHMgdGhlCisgICBpbmZvcm1hdGlvbiBpbiBlYWNoIHJvdyB0byBhbiA6bW9kOmBPcmRlcmVkRGljdCA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3Q+YAorICAgd2hvc2Uga2V5cyBhcmUgZ2l2ZW4gYnkgdGhlIG9wdGlvbmFsICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIuCisKKyAgIFRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIGEgOnRlcm06YHNlcXVlbmNlYC4gIElmICpmaWVsZG5hbWVzKiBpcworICAgb21pdHRlZCwgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgcm93IG9mIHRoZSAqY3N2ZmlsZSogd2lsbCBiZSB1c2VkIGFzIHRoZQorICAgZmllbGRuYW1lcy4gIFJlZ2FyZGxlc3Mgb2YgaG93IHRoZSBmaWVsZG5hbWVzIGFyZSBkZXRlcm1pbmVkLCB0aGUgb3JkZXJlZAorICAgZGljdGlvbmFyeSBwcmVzZXJ2ZXMgdGhlaXIgb3JpZ2luYWwgb3JkZXJpbmcuCisKKyAgIElmIGEgcm93IGhhcyBtb3JlIGZpZWxkcyB0aGFuIGZpZWxkbmFtZXMsIHRoZSByZW1haW5pbmcgZGF0YSBpcyBwdXQgaW4gYQorICAgbGlzdCBhbmQgc3RvcmVkIHdpdGggdGhlIGZpZWxkbmFtZSBzcGVjaWZpZWQgYnkgKnJlc3RrZXkqICh3aGljaCBkZWZhdWx0cworICAgdG8gYGBOb25lYGApLiAgSWYgYSBub24tYmxhbmsgcm93IGhhcyBmZXdlciBmaWVsZHMgdGhhbiBmaWVsZG5hbWVzLCB0aGUKKyAgIG1pc3NpbmcgdmFsdWVzIGFyZSBmaWxsZWQtaW4gd2l0aCBgYE5vbmVgYC4KKworICAgQWxsIG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcKKyAgIDpjbGFzczpgcmVhZGVyYCBpbnN0YW5jZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJldHVybmVkIHJvd3MgYXJlIG5vdyBvZiB0eXBlIDpjbGFzczpgT3JkZXJlZERpY3RgLgogCiAgICBBIHNob3J0IHVzYWdlIGV4YW1wbGU6OgogCkBAIC0xNzAsOSArMTc3LDExIEBACiAgICAgICAgLi4uICAgICBmb3Igcm93IGluIHJlYWRlcjoKICAgICAgICAuLi4gICAgICAgICBwcmludChyb3dbJ2ZpcnN0X25hbWUnXSwgcm93WydsYXN0X25hbWUnXSkKICAgICAgICAuLi4KLSAgICAgICBCYWtlZCBCZWFucwotICAgICAgIExvdmVseSBTcGFtCi0gICAgICAgV29uZGVyZnVsIFNwYW0KKyAgICAgICBFcmljIElkbGUKKyAgICAgICBKb2huIENsZWVzZQorCisgICAgICAgPj4+IHByaW50KHJvdykKKyAgICAgICBPcmRlcmVkRGljdChbKCdmaXJzdF9uYW1lJywgJ0pvaG4nKSwgKCdsYXN0X25hbWUnLCAnQ2xlZXNlJyldKQogCiAKIC4uIGNsYXNzOjogRGljdFdyaXRlcihjc3ZmaWxlLCBmaWVsZG5hbWVzLCByZXN0dmFsPScnLCBleHRyYXNhY3Rpb249J3JhaXNlJywgXApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKaW5kZXggNzU1MGY0ZC4uM2RiNDRkNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CkBAIC0xMjM5LDkgKzEyMzksMTAgQEAKIGNvbXBpbGluZy9saW5raW5nIGEgcHJvZ3JhbSwgYW5kIHdoZW4gdGhlIHByb2dyYW0gaXMgcnVuLgogCiBUaGUgcHVycG9zZSBvZiB0aGUgOmZ1bmM6YGZpbmRfbGlicmFyeWAgZnVuY3Rpb24gaXMgdG8gbG9jYXRlIGEgbGlicmFyeSBpbiBhIHdheQotc2ltaWxhciB0byB3aGF0IHRoZSBjb21waWxlciBkb2VzIChvbiBwbGF0Zm9ybXMgd2l0aCBzZXZlcmFsIHZlcnNpb25zIG9mIGEKLXNoYXJlZCBsaWJyYXJ5IHRoZSBtb3N0IHJlY2VudCBzaG91bGQgYmUgbG9hZGVkKSwgd2hpbGUgdGhlIGN0eXBlcyBsaWJyYXJ5Ci1sb2FkZXJzIGFjdCBsaWtlIHdoZW4gYSBwcm9ncmFtIGlzIHJ1biwgYW5kIGNhbGwgdGhlIHJ1bnRpbWUgbG9hZGVyIGRpcmVjdGx5Lgorc2ltaWxhciB0byB3aGF0IHRoZSBjb21waWxlciBvciBydW50aW1lIGxvYWRlciBkb2VzIChvbiBwbGF0Zm9ybXMgd2l0aCBzZXZlcmFsCit2ZXJzaW9ucyBvZiBhIHNoYXJlZCBsaWJyYXJ5IHRoZSBtb3N0IHJlY2VudCBzaG91bGQgYmUgbG9hZGVkKSwgd2hpbGUgdGhlIGN0eXBlcworbGlicmFyeSBsb2FkZXJzIGFjdCBsaWtlIHdoZW4gYSBwcm9ncmFtIGlzIHJ1biwgYW5kIGNhbGwgdGhlIHJ1bnRpbWUgbG9hZGVyCitkaXJlY3RseS4KIAogVGhlIDptb2Q6YGN0eXBlcy51dGlsYCBtb2R1bGUgcHJvdmlkZXMgYSBmdW5jdGlvbiB3aGljaCBjYW4gaGVscCB0byBkZXRlcm1pbmUKIHRoZSBsaWJyYXJ5IHRvIGxvYWQuCkBAIC0xMjU5LDggKzEyNjAsMTQgQEAKIFRoZSBleGFjdCBmdW5jdGlvbmFsaXR5IGlzIHN5c3RlbSBkZXBlbmRlbnQuCiAKIE9uIExpbnV4LCA6ZnVuYzpgZmluZF9saWJyYXJ5YCB0cmllcyB0byBydW4gZXh0ZXJuYWwgcHJvZ3JhbXMKLShgYC9zYmluL2xkY29uZmlnYGAsIGBgZ2NjYGAsIGFuZCBgYG9iamR1bXBgYCkgdG8gZmluZCB0aGUgbGlicmFyeSBmaWxlLiAgSXQKLXJldHVybnMgdGhlIGZpbGVuYW1lIG9mIHRoZSBsaWJyYXJ5IGZpbGUuICBIZXJlIGFyZSBzb21lIGV4YW1wbGVzOjoKKyhgYC9zYmluL2xkY29uZmlnYGAsIGBgZ2NjYGAsIGBgb2JqZHVtcGBgIGFuZCBgYGxkYGApIHRvIGZpbmQgdGhlIGxpYnJhcnkgZmlsZS4KK0l0IHJldHVybnMgdGhlIGZpbGVuYW1lIG9mIHRoZSBsaWJyYXJ5IGZpbGUuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBPbiBMaW51eCwgdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgYExEX0xJQlJBUllfUEFUSGBgIGlzIHVzZWQKKyAgIHdoZW4gc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMsIGlmIGEgbGlicmFyeSBjYW5ub3QgYmUgZm91bmQgYnkgYW55IG90aGVyIG1lYW5zLgorCitIZXJlIGFyZSBzb21lIGV4YW1wbGVzOjoKIAogICAgPj4+IGZyb20gY3R5cGVzLnV0aWwgaW1wb3J0IGZpbmRfbGlicmFyeQogICAgPj4+IGZpbmRfbGlicmFyeSgibSIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKaW5kZXggOTI1NGFlOC4uZWNhYWQwNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdApAQCAtNTIyLDcgKzUyMiw3IEBACiAKIEluc3RhbmNlIG1ldGhvZHM6CiAKLS4uIG1ldGhvZDo6IGRhdGUucmVwbGFjZSh5ZWFyLCBtb250aCwgZGF5KQorLi4gbWV0aG9kOjogZGF0ZS5yZXBsYWNlKHllYXI9c2VsZi55ZWFyLCBtb250aD1zZWxmLm1vbnRoLCBkYXk9c2VsZi5kYXkpCiAKICAgIFJldHVybiBhIGRhdGUgd2l0aCB0aGUgc2FtZSB2YWx1ZSwgZXhjZXB0IGZvciB0aG9zZSBwYXJhbWV0ZXJzIGdpdmVuIG5ldwogICAgdmFsdWVzIGJ5IHdoaWNoZXZlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLiAgRm9yIGV4YW1wbGUsIGlmIGBgZCA9PQpAQCAtNjEwLDcgKzYxMCw4IEBACiAuLiBtZXRob2Q6OiBkYXRlLl9fZm9ybWF0X18oZm9ybWF0KQogCiAgICBTYW1lIGFzIDptZXRoOmAuZGF0ZS5zdHJmdGltZWAuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gc3BlY2lmeSBhIGZvcm1hdAotICAgc3RyaW5nIGZvciBhIDpjbGFzczpgLmRhdGVgIG9iamVjdCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gRm9yIGEKKyAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRlYCBvYmplY3QgaW4gOnJlZjpgZm9ybWF0dGVkIHN0cmluZworICAgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIGFuZCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gRm9yIGEKICAgIGNvbXBsZXRlIGxpc3Qgb2YgZm9ybWF0dGluZyBkaXJlY3RpdmVzLCBzZWUKICAgIDpyZWY6YHN0cmZ0aW1lLXN0cnB0aW1lLWJlaGF2aW9yYC4KIApAQCAtNjgyLDIyICs2ODMsMjYgQEAKIAogQ29uc3RydWN0b3I6CiAKLS4uIGNsYXNzOjogZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKQorLi4gY2xhc3M6OiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUsICosIGZvbGQ9MCkKIAogICAgVGhlIHllYXIsIG1vbnRoIGFuZCBkYXkgYXJndW1lbnRzIGFyZSByZXF1aXJlZC4gICp0emluZm8qIG1heSBiZSBgYE5vbmVgYCwgb3IgYW4KICAgIGluc3RhbmNlIG9mIGEgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgbWF5IGJlIGludGVnZXJzLAogICAgaW4gdGhlIGZvbGxvd2luZyByYW5nZXM6CiAKLSAgICogYGBNSU5ZRUFSIDw9IHllYXIgPD0gTUFYWUVBUmBgCi0gICAqIGBgMSA8PSBtb250aCA8PSAxMmBgCi0gICAqIGBgMSA8PSBkYXkgPD0gbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuIG1vbnRoIGFuZCB5ZWFyYGAKLSAgICogYGAwIDw9IGhvdXIgPCAyNGBgCi0gICAqIGBgMCA8PSBtaW51dGUgPCA2MGBgCi0gICAqIGBgMCA8PSBzZWNvbmQgPCA2MGBgCi0gICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYAorICAgKiBgYE1JTllFQVIgPD0geWVhciA8PSBNQVhZRUFSYGAsCisgICAqIGBgMSA8PSBtb250aCA8PSAxMmBgLAorICAgKiBgYDEgPD0gZGF5IDw9IG51bWJlciBvZiBkYXlzIGluIHRoZSBnaXZlbiBtb250aCBhbmQgeWVhcmBgLAorICAgKiBgYDAgPD0gaG91ciA8IDI0YGAsCisgICAqIGBgMCA8PSBtaW51dGUgPCA2MGBgLAorICAgKiBgYDAgPD0gc2Vjb25kIDwgNjBgYCwKKyAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgLAorICAgKiBgYGZvbGQgaW4gWzAsIDFdYGAuCiAKICAgIElmIGFuIGFyZ3VtZW50IG91dHNpZGUgdGhvc2UgcmFuZ2VzIGlzIGdpdmVuLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIGBgZm9sZGBgIGFyZ3VtZW50LgorCiBPdGhlciBjb25zdHJ1Y3RvcnMsIGFsbCBjbGFzcyBtZXRob2RzOgogCiAuLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLnRvZGF5KCkKQEAgLTc1Nyw2ICs3NjIsOCBAQAogICAgICAgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBvbiA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yIDpjOmZ1bmM6YGdtdGltZWAKICAgICAgIGZhaWx1cmUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAgbWF5IHJldHVybiBpbnN0YW5jZXMgd2l0aCA6YXR0cjpgLmZvbGRgIHNldCB0byAxLgogCiAuLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKQogCkBAIC03OTMsMTYgKzgwMCwyMyBAQAogICAgbWljcm9zZWNvbmQgb2YgdGhlIHJlc3VsdCBhcmUgYWxsIDAsIGFuZCA6YXR0cjpgLnR6aW5mb2AgaXMgYGBOb25lYGAuCiAKIAotLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5jb21iaW5lKGRhdGUsIHRpbWUpCisuLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLmNvbWJpbmUoZGF0ZSwgdGltZSwgdHppbmZvPXNlbGYudHppbmZvKQogCiAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCB3aG9zZSBkYXRlIGNvbXBvbmVudHMgYXJlIGVxdWFsIHRvIHRoZQotICAgZ2l2ZW4gOmNsYXNzOmBkYXRlYCBvYmplY3QncywgYW5kIHdob3NlIHRpbWUgY29tcG9uZW50cyBhbmQgOmF0dHI6YC50emluZm9gCi0gICBhdHRyaWJ1dGVzIGFyZSBlcXVhbCB0byB0aGUgZ2l2ZW4gOmNsYXNzOmAudGltZWAgb2JqZWN0J3MuIEZvciBhbnkKLSAgIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3QgKmQqLAotICAgYGBkID09IGRhdGV0aW1lLmNvbWJpbmUoZC5kYXRlKCksIGQudGltZXR6KCkpYGAuICBJZiBkYXRlIGlzIGEKKyAgIGdpdmVuIDpjbGFzczpgZGF0ZWAgb2JqZWN0J3MsIGFuZCB3aG9zZSB0aW1lIGNvbXBvbmVudHMKKyAgIGFyZSBlcXVhbCB0byB0aGUgZ2l2ZW4gOmNsYXNzOmAudGltZWAgb2JqZWN0J3MuICBJZiB0aGUgKnR6aW5mbyoKKyAgIGFyZ3VtZW50IGlzIHByb3ZpZGVkLCBpdHMgdmFsdWUgaXMgdXNlZCB0byBzZXQgdGhlIDphdHRyOmAudHppbmZvYCBhdHRyaWJ1dGUKKyAgIG9mIHRoZSByZXN1bHQsIG90aGVyd2lzZSB0aGUgOmF0dHI6YH4udGltZS50emluZm9gIGF0dHJpYnV0ZSBvZiB0aGUgKnRpbWUqIGFyZ3VtZW50CisgICBpcyB1c2VkLgorCisgICBGb3IgYW55IDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3QgKmQqLAorICAgYGBkID09IGRhdGV0aW1lLmNvbWJpbmUoZC5kYXRlKCksIGQudGltZSgpLCBkLnR6aW5mbylgYC4gIElmIGRhdGUgaXMgYQogICAgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCwgaXRzIHRpbWUgY29tcG9uZW50cyBhbmQgOmF0dHI6YC50emluZm9gIGF0dHJpYnV0ZXMKICAgIGFyZSBpZ25vcmVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlICp0emluZm8qIGFyZ3VtZW50LgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuc3RycHRpbWUoZGF0ZV9zdHJpbmcsIGZvcm1hdCkKIApAQCAtODc4LDYgKzg5MiwxNiBAQAogICAgb3IgYGBOb25lYGAgaWYgbm9uZSB3YXMgcGFzc2VkLgogCiAKKy4uIGF0dHJpYnV0ZTo6IGRhdGV0aW1lLmZvbGQKKworICAgSW4gYGBbMCwgMV1gYC4gIFVzZWQgdG8gZGlzYW1iaWd1YXRlIHdhbGwgdGltZXMgZHVyaW5nIGEgcmVwZWF0ZWQgaW50ZXJ2YWwuICAoQQorICAgcmVwZWF0ZWQgaW50ZXJ2YWwgb2NjdXJzIHdoZW4gY2xvY2tzIGFyZSByb2xsZWQgYmFjayBhdCB0aGUgZW5kIG9mIGRheWxpZ2h0IHNhdmluZworICAgdGltZSBvciB3aGVuIHRoZSBVVEMgb2Zmc2V0IGZvciB0aGUgY3VycmVudCB6b25lIGlzIGRlY3JlYXNlZCBmb3IgcG9saXRpY2FsIHJlYXNvbnMuKQorICAgVGhlIHZhbHVlIDAgKDEpIHJlcHJlc2VudHMgdGhlIGVhcmxpZXIgKGxhdGVyKSBvZiB0aGUgdHdvIG1vbWVudHMgd2l0aCB0aGUgc2FtZSB3YWxsCisgICB0aW1lIHJlcHJlc2VudGF0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogU3VwcG9ydGVkIG9wZXJhdGlvbnM6CiAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC05NjYsMjMgKzk5MCwzNCBAQAogCiAuLiBtZXRob2Q6OiBkYXRldGltZS50aW1lKCkKIAotICAgUmV0dXJuIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aXRoIHNhbWUgaG91ciwgbWludXRlLCBzZWNvbmQgYW5kIG1pY3Jvc2Vjb25kLgorICAgUmV0dXJuIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aXRoIHNhbWUgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kIGFuZCBmb2xkLgogICAgOmF0dHI6YC50emluZm9gIGlzIGBgTm9uZWBgLiAgU2VlIGFsc28gbWV0aG9kIDptZXRoOmB0aW1ldHpgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIGZvbGQgdmFsdWUgaXMgY29waWVkIHRvIHRoZSByZXR1cm5lZCA6Y2xhc3M6YC50aW1lYCBvYmplY3QuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudGltZXR6KCkKIAotICAgUmV0dXJuIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aXRoIHNhbWUgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBhbmQKKyAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCwgYW5kCiAgICB0emluZm8gYXR0cmlidXRlcy4gIFNlZSBhbHNvIG1ldGhvZCA6bWV0aDpgdGltZWAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgZm9sZCB2YWx1ZSBpcyBjb3BpZWQgdG8gdGhlIHJldHVybmVkIDpjbGFzczpgLnRpbWVgIG9iamVjdC4KIAotLi4gbWV0aG9kOjogZGF0ZXRpbWUucmVwbGFjZShbeWVhclssIG1vbnRoWywgZGF5WywgaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWywgdHppbmZvXV1dXV1dXV0pCisKKy4uIG1ldGhvZDo6IGRhdGV0aW1lLnJlcGxhY2UoeWVhcj1zZWxmLnllYXIsIG1vbnRoPXNlbGYubW9udGgsIGRheT1zZWxmLmRheSwgXAorICAgaG91cj1zZWxmLmhvdXIsIG1pbnV0ZT1zZWxmLm1pbnV0ZSwgc2Vjb25kPXNlbGYuc2Vjb25kLCBtaWNyb3NlY29uZD1zZWxmLm1pY3Jvc2Vjb25kLCBcCisgICB0emluZm89c2VsZi50emluZm8sICogZm9sZD0wKQogCiAgICBSZXR1cm4gYSBkYXRldGltZSB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0ZXMsIGV4Y2VwdCBmb3IgdGhvc2UgYXR0cmlidXRlcyBnaXZlbgogICAgbmV3IHZhbHVlcyBieSB3aGljaGV2ZXIga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZC4gIE5vdGUgdGhhdAogICAgYGB0emluZm89Tm9uZWBgIGNhbiBiZSBzcGVjaWZpZWQgdG8gY3JlYXRlIGEgbmFpdmUgZGF0ZXRpbWUgZnJvbSBhbiBhd2FyZQogICAgZGF0ZXRpbWUgd2l0aCBubyBjb252ZXJzaW9uIG9mIGRhdGUgYW5kIHRpbWUgZGF0YS4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgYGBmb2xkYGAgYXJndW1lbnQuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUuYXN0aW1lem9uZSh0ej1Ob25lKQogCkBAIC05OTEsMjMgKzEwMjYsMjAgQEAKICAgICpzZWxmKiwgYnV0IGluICp0eioncyBsb2NhbCB0aW1lLgogCiAgICBJZiBwcm92aWRlZCwgKnR6KiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLCBhbmQgaXRzCi0gICA6bWV0aDpgdXRjb2Zmc2V0YCBhbmQgOm1ldGg6YGRzdGAgbWV0aG9kcyBtdXN0IG5vdCByZXR1cm4gYGBOb25lYGAuICAqc2VsZiogbXVzdAotICAgYmUgYXdhcmUgKGBgc2VsZi50emluZm9gYCBtdXN0IG5vdCBiZSBgYE5vbmVgYCwgYW5kIGBgc2VsZi51dGNvZmZzZXQoKWBgIG11c3QKLSAgIG5vdCByZXR1cm4gYGBOb25lYGApLgorICAgOm1ldGg6YHV0Y29mZnNldGAgYW5kIDptZXRoOmBkc3RgIG1ldGhvZHMgbXVzdCBub3QgcmV0dXJuIGBgTm9uZWBgLiAgSWYgKnNlbGYqCisgICBpcyBuYWl2ZSAoYGBzZWxmLnR6aW5mbyBpcyBOb25lYGApLCBpdCBpcyBwcmVzdW1lZCB0byByZXByZXNlbnQgdGltZSBpbiB0aGUKKyAgIHN5c3RlbSB0aW1lem9uZS4KIAogICAgSWYgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzIChvciB3aXRoIGBgdHo9Tm9uZWBgKSB0aGUgc3lzdGVtIGxvY2FsCi0gICB0aW1lem9uZSBpcyBhc3N1bWVkLiAgVGhlIGBgLnR6aW5mb2BgIGF0dHJpYnV0ZSBvZiB0aGUgY29udmVydGVkCisgICB0aW1lem9uZSBpcyBhc3N1bWVkIGZvciB0aGUgdGFyZ2V0IHRpbWV6b25lLiAgVGhlIGBgLnR6aW5mb2BgIGF0dHJpYnV0ZSBvZiB0aGUgY29udmVydGVkCiAgICBkYXRldGltZSBpbnN0YW5jZSB3aWxsIGJlIHNldCB0byBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YHRpbWV6b25lYAogICAgd2l0aCB0aGUgem9uZSBuYW1lIGFuZCBvZmZzZXQgb2J0YWluZWQgZnJvbSB0aGUgT1MuCiAKICAgIElmIGBgc2VsZi50emluZm9gYCBpcyAqdHoqLCBgYHNlbGYuYXN0aW1lem9uZSh0eilgYCBpcyBlcXVhbCB0byAqc2VsZio6ICBubwogICAgYWRqdXN0bWVudCBvZiBkYXRlIG9yIHRpbWUgZGF0YSBpcyBwZXJmb3JtZWQuIEVsc2UgdGhlIHJlc3VsdCBpcyBsb2NhbAotICAgdGltZSBpbiB0aW1lIHpvbmUgKnR6KiwgcmVwcmVzZW50aW5nIHRoZSBzYW1lIFVUQyB0aW1lIGFzICpzZWxmKjogIGFmdGVyCi0gICBgYGFzdHogPSBkdC5hc3RpbWV6b25lKHR6KWBgLCBgYGFzdHogLSBhc3R6LnV0Y29mZnNldCgpYGAgd2lsbCB1c3VhbGx5IGhhdmUKLSAgIHRoZSBzYW1lIGRhdGUgYW5kIHRpbWUgZGF0YSBhcyBgYGR0IC0gZHQudXRjb2Zmc2V0KClgYC4gVGhlIGRpc2N1c3Npb24KLSAgIG9mIGNsYXNzIDpjbGFzczpgdHppbmZvYCBleHBsYWlucyB0aGUgY2FzZXMgYXQgRGF5bGlnaHQgU2F2aW5nIFRpbWUgdHJhbnNpdGlvbgotICAgYm91bmRhcmllcyB3aGVyZSB0aGlzIGNhbm5vdCBiZSBhY2hpZXZlZCAoYW4gaXNzdWUgb25seSBpZiAqdHoqIG1vZGVscyBib3RoCi0gICBzdGFuZGFyZCBhbmQgZGF5bGlnaHQgdGltZSkuCisgICB0aW1lIGluIHRoZSB0aW1lem9uZSAqdHoqLCByZXByZXNlbnRpbmcgdGhlIHNhbWUgVVRDIHRpbWUgYXMgKnNlbGYqOiAgYWZ0ZXIKKyAgIGBgYXN0eiA9IGR0LmFzdGltZXpvbmUodHopYGAsIGBgYXN0eiAtIGFzdHoudXRjb2Zmc2V0KClgYCB3aWxsIGhhdmUKKyAgIHRoZSBzYW1lIGRhdGUgYW5kIHRpbWUgZGF0YSBhcyBgYGR0IC0gZHQudXRjb2Zmc2V0KClgYC4KIAogICAgSWYgeW91IG1lcmVseSB3YW50IHRvIGF0dGFjaCBhIHRpbWUgem9uZSBvYmplY3QgKnR6KiB0byBhIGRhdGV0aW1lICpkdCogd2l0aG91dAogICAgYWRqdXN0bWVudCBvZiBkYXRlIGFuZCB0aW1lIGRhdGEsIHVzZSBgYGR0LnJlcGxhY2UodHppbmZvPXR6KWBgLiAgSWYgeW91CkBAIC0xMDI5LDYgKzEwNjEsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICAqdHoqIG5vdyBjYW4gYmUgb21pdHRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSA6bWV0aDpgYXN0aW1lem9uZWAgbWV0aG9kIGNhbiBub3cgYmUgY2FsbGVkIG9uIG5haXZlIGluc3RhbmNlcyB0aGF0CisgICAgICBhcmUgcHJlc3VtZWQgdG8gcmVwcmVzZW50IHN5c3RlbSBsb2NhbCB0aW1lLgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLnV0Y29mZnNldCgpCiAKQEAgLTExMDUsNiArMTE0MSwxMCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSA6bWV0aDpgdGltZXN0YW1wYCBtZXRob2QgdXNlcyB0aGUgOmF0dHI6YC5mb2xkYCBhdHRyaWJ1dGUgdG8KKyAgICAgIGRpc2FtYmlndWF0ZSB0aGUgdGltZXMgZHVyaW5nIGEgcmVwZWF0ZWQgaW50ZXJ2YWwuCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGVyZSBpcyBubyBtZXRob2QgdG8gb2J0YWluIHRoZSBQT1NJWCB0aW1lc3RhbXAgZGlyZWN0bHkgZnJvbSBhCkBAIC0xMTM4LDcgKzExNzgsNyBAQAogICAgYGBzZWxmLmRhdGUoKS5pc29jYWxlbmRhcigpYGAuCiAKIAotLi4gbWV0aG9kOjogZGF0ZXRpbWUuaXNvZm9ybWF0KHNlcD0nVCcpCisuLiBtZXRob2Q6OiBkYXRldGltZS5pc29mb3JtYXQoc2VwPSdUJywgdGltZXNwZWM9J2F1dG8nKQogCiAgICBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBkYXRlIGFuZCB0aW1lIGluIElTTyA4NjAxIGZvcm1hdCwKICAgIFlZWVktTU0tRERUSEg6TU06U1MubW1tbW1tIG9yLCBpZiA6YXR0cjpgbWljcm9zZWNvbmRgIGlzIDAsCkBAIC0xMTU5LDYgKzExOTksMzcgQEAKICAgICAgID4+PiBkYXRldGltZSgyMDAyLCAxMiwgMjUsIHR6aW5mbz1UWigpKS5pc29mb3JtYXQoJyAnKQogICAgICAgJzIwMDItMTItMjUgMDA6MDA6MDAtMDY6MzknCiAKKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqdGltZXNwZWMqIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgIGNvbXBvbmVudHMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZSAodGhlIGRlZmF1bHQgaXMgYGAnYXV0bydgYCkuCisgICBJdCBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIC0gYGAnYXV0bydgYDogU2FtZSBhcyBgYCdzZWNvbmRzJ2BgIGlmIDphdHRyOmBtaWNyb3NlY29uZGAgaXMgMCwKKyAgICAgc2FtZSBhcyBgYCdtaWNyb3NlY29uZHMnYGAgb3RoZXJ3aXNlLgorICAgLSBgYCdob3VycydgYDogSW5jbHVkZSB0aGUgOmF0dHI6YGhvdXJgIGluIHRoZSB0d28tZGlnaXQgSEggZm9ybWF0LgorICAgLSBgYCdtaW51dGVzJ2BgOiBJbmNsdWRlIDphdHRyOmBob3VyYCBhbmQgOmF0dHI6YG1pbnV0ZWAgaW4gSEg6TU0gZm9ybWF0LgorICAgLSBgYCdzZWNvbmRzJ2BgOiBJbmNsdWRlIDphdHRyOmBob3VyYCwgOmF0dHI6YG1pbnV0ZWAsIGFuZCA6YXR0cjpgc2Vjb25kYAorICAgICBpbiBISDpNTTpTUyBmb3JtYXQuCisgICAtIGBgJ21pbGxpc2Vjb25kcydgYDogSW5jbHVkZSBmdWxsIHRpbWUsIGJ1dCB0cnVuY2F0ZSBmcmFjdGlvbmFsIHNlY29uZAorICAgICBwYXJ0IHRvIG1pbGxpc2Vjb25kcy4gSEg6TU06U1Muc3NzIGZvcm1hdC4KKyAgIC0gYGAnbWljcm9zZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSBpbiBISDpNTTpTUy5tbW1tbW0gZm9ybWF0LgorCisgICAuLiBub3RlOjoKKworICAgICAgRXhjbHVkZWQgdGltZSBjb21wb25lbnRzIGFyZSB0cnVuY2F0ZWQsIG5vdCByb3VuZGVkLgorCisgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBvbiBhbiBpbnZhbGlkICp0aW1lc3BlYyogYXJndW1lbnQuCisKKworICAgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCisgICAgICA+Pj4gZGF0ZXRpbWUubm93KCkuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaW51dGVzJykKKyAgICAgICcyMDAyLTEyLTI1VDAwOjAwJworICAgICAgPj4+IGR0ID0gZGF0ZXRpbWUoMjAxNSwgMSwgMSwgMTIsIDMwLCA1OSwgMCkKKyAgICAgID4+PiBkdC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpCisgICAgICAnMjAxNS0wMS0wMVQxMjozMDo1OS4wMDAwMDAnCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlICp0aW1lc3BlYyogYXJndW1lbnQuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUuX19zdHJfXygpCiAKQEAgLTExODUsNyArMTI1Niw4IEBACiAuLiBtZXRob2Q6OiBkYXRldGltZS5fX2Zvcm1hdF9fKGZvcm1hdCkKIAogICAgU2FtZSBhcyA6bWV0aDpgLmRhdGV0aW1lLnN0cmZ0aW1lYC4gIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gc3BlY2lmeSBhIGZvcm1hdAotICAgc3RyaW5nIGZvciBhIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3Qgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQorICAgc3RyaW5nIGZvciBhIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3QgaW4gOnJlZjpgZm9ybWF0dGVkIHN0cmluZworICAgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIGFuZCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCiAgICBjb21wbGV0ZSBsaXN0IG9mIGZvcm1hdHRpbmcgZGlyZWN0aXZlcywgc2VlCiAgICA6cmVmOmBzdHJmdGltZS1zdHJwdGltZS1iZWhhdmlvcmAuCiAKQEAgLTEzMDIsMTYgKzEzNzQsMTcgQEAKIEEgdGltZSBvYmplY3QgcmVwcmVzZW50cyBhIChsb2NhbCkgdGltZSBvZiBkYXksIGluZGVwZW5kZW50IG9mIGFueSBwYXJ0aWN1bGFyCiBkYXksIGFuZCBzdWJqZWN0IHRvIGFkanVzdG1lbnQgdmlhIGEgOmNsYXNzOmB0emluZm9gIG9iamVjdC4KIAotLi4gY2xhc3M6OiB0aW1lKGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSkKKy4uIGNsYXNzOjogdGltZShob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUsICosIGZvbGQ9MCkKIAogICAgQWxsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwuICAqdHppbmZvKiBtYXkgYmUgYGBOb25lYGAsIG9yIGFuIGluc3RhbmNlIG9mIGEKICAgIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcy4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRlZ2VycywgaW4gdGhlCiAgICBmb2xsb3dpbmcgcmFuZ2VzOgogCi0gICAqIGBgMCA8PSBob3VyIDwgMjRgYAotICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYAotICAgKiBgYDAgPD0gc2Vjb25kIDwgNjBgYAotICAgKiBgYDAgPD0gbWljcm9zZWNvbmQgPCAxMDAwMDAwYGAuCisgICAqIGBgMCA8PSBob3VyIDwgMjRgYCwKKyAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAsCisgICAqIGBgMCA8PSBzZWNvbmQgPCA2MGBgLAorICAgKiBgYDAgPD0gbWljcm9zZWNvbmQgPCAxMDAwMDAwYGAsCisgICAqIGBgZm9sZCBpbiBbMCwgMV1gYC4KIAogICAgSWYgYW4gYXJndW1lbnQgb3V0c2lkZSB0aG9zZSByYW5nZXMgaXMgZ2l2ZW4sIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gIEFsbAogICAgZGVmYXVsdCB0byBgYDBgYCBleGNlcHQgKnR6aW5mbyosIHdoaWNoIGRlZmF1bHRzIHRvIDpjb25zdDpgTm9uZWAuCkBAIC0xMzY0LDYgKzE0MzcsMTcgQEAKICAgIGBgTm9uZWBgIGlmIG5vbmUgd2FzIHBhc3NlZC4KIAogCisuLiBhdHRyaWJ1dGU6OiB0aW1lLmZvbGQKKworICAgSW4gYGBbMCwgMV1gYC4gIFVzZWQgdG8gZGlzYW1iaWd1YXRlIHdhbGwgdGltZXMgZHVyaW5nIGEgcmVwZWF0ZWQgaW50ZXJ2YWwuICAoQQorICAgcmVwZWF0ZWQgaW50ZXJ2YWwgb2NjdXJzIHdoZW4gY2xvY2tzIGFyZSByb2xsZWQgYmFjayBhdCB0aGUgZW5kIG9mIGRheWxpZ2h0IHNhdmluZworICAgdGltZSBvciB3aGVuIHRoZSBVVEMgb2Zmc2V0IGZvciB0aGUgY3VycmVudCB6b25lIGlzIGRlY3JlYXNlZCBmb3IgcG9saXRpY2FsIHJlYXNvbnMuKQorICAgVGhlIHZhbHVlIDAgKDEpIHJlcHJlc2VudHMgdGhlIGVhcmxpZXIgKGxhdGVyKSBvZiB0aGUgdHdvIG1vbWVudHMgd2l0aCB0aGUgc2FtZSB3YWxsCisgICB0aW1lIHJlcHJlc2VudGF0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiBTdXBwb3J0ZWQgb3BlcmF0aW9uczoKIAogKiBjb21wYXJpc29uIG9mIDpjbGFzczpgLnRpbWVgIHRvIDpjbGFzczpgLnRpbWVgLCB3aGVyZSAqYSogaXMgY29uc2lkZXJlZCBsZXNzCkBAIC0xMzk5LDIxICsxNDgzLDU4IEBACiAKIEluc3RhbmNlIG1ldGhvZHM6CiAKLS4uIG1ldGhvZDo6IHRpbWUucmVwbGFjZShbaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWywgdHppbmZvXV1dXV0pCisuLiBtZXRob2Q6OiB0aW1lLnJlcGxhY2UoaG91cj1zZWxmLmhvdXIsIG1pbnV0ZT1zZWxmLm1pbnV0ZSwgc2Vjb25kPXNlbGYuc2Vjb25kLCBcCisgICBtaWNyb3NlY29uZD1zZWxmLm1pY3Jvc2Vjb25kLCB0emluZm89c2VsZi50emluZm8sICogZm9sZD0wKQogCiAgICBSZXR1cm4gYSA6Y2xhc3M6YC50aW1lYCB3aXRoIHRoZSBzYW1lIHZhbHVlLCBleGNlcHQgZm9yIHRob3NlIGF0dHJpYnV0ZXMgZ2l2ZW4KICAgIG5ldyB2YWx1ZXMgYnkgd2hpY2hldmVyIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQuICBOb3RlIHRoYXQKICAgIGBgdHppbmZvPU5vbmVgYCBjYW4gYmUgc3BlY2lmaWVkIHRvIGNyZWF0ZSBhIG5haXZlIDpjbGFzczpgLnRpbWVgIGZyb20gYW4KICAgIGF3YXJlIDpjbGFzczpgLnRpbWVgLCB3aXRob3V0IGNvbnZlcnNpb24gb2YgdGhlIHRpbWUgZGF0YS4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgYGBmb2xkYGAgYXJndW1lbnQuCiAKLS4uIG1ldGhvZDo6IHRpbWUuaXNvZm9ybWF0KCkKKworLi4gbWV0aG9kOjogdGltZS5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKQogCiAgICBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0aW1lIGluIElTTyA4NjAxIGZvcm1hdCwgSEg6TU06U1MubW1tbW1tIG9yLCBpZgotICAgc2VsZi5taWNyb3NlY29uZCBpcyAwLCBISDpNTTpTUyBJZiA6bWV0aDpgdXRjb2Zmc2V0YCBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIGEKKyAgIDphdHRyOmBtaWNyb3NlY29uZGAgaXMgMCwgSEg6TU06U1MgSWYgOm1ldGg6YHV0Y29mZnNldGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCBhCiAgICA2LWNoYXJhY3RlciBzdHJpbmcgaXMgYXBwZW5kZWQsIGdpdmluZyB0aGUgVVRDIG9mZnNldCBpbiAoc2lnbmVkKSBob3VycyBhbmQKICAgIG1pbnV0ZXM6IEhIOk1NOlNTLm1tbW1tbStISDpNTSBvciwgaWYgc2VsZi5taWNyb3NlY29uZCBpcyAwLCBISDpNTTpTUytISDpNTQogCisgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKnRpbWVzcGVjKiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsCisgICBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUgKHRoZSBkZWZhdWx0IGlzIGBgJ2F1dG8nYGApLgorICAgSXQgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAtIGBgJ2F1dG8nYGA6IFNhbWUgYXMgYGAnc2Vjb25kcydgYCBpZiA6YXR0cjpgbWljcm9zZWNvbmRgIGlzIDAsCisgICAgIHNhbWUgYXMgYGAnbWljcm9zZWNvbmRzJ2BgIG90aGVyd2lzZS4KKyAgIC0gYGAnaG91cnMnYGA6IEluY2x1ZGUgdGhlIDphdHRyOmBob3VyYCBpbiB0aGUgdHdvLWRpZ2l0IEhIIGZvcm1hdC4KKyAgIC0gYGAnbWludXRlcydgYDogSW5jbHVkZSA6YXR0cjpgaG91cmAgYW5kIDphdHRyOmBtaW51dGVgIGluIEhIOk1NIGZvcm1hdC4KKyAgIC0gYGAnc2Vjb25kcydgYDogSW5jbHVkZSA6YXR0cjpgaG91cmAsIDphdHRyOmBtaW51dGVgLCBhbmQgOmF0dHI6YHNlY29uZGAKKyAgICAgaW4gSEg6TU06U1MgZm9ybWF0LgorICAgLSBgYCdtaWxsaXNlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lLCBidXQgdHJ1bmNhdGUgZnJhY3Rpb25hbCBzZWNvbmQKKyAgICAgcGFydCB0byBtaWxsaXNlY29uZHMuIEhIOk1NOlNTLnNzcyBmb3JtYXQuCisgICAtIGBgJ21pY3Jvc2Vjb25kcydgYDogSW5jbHVkZSBmdWxsIHRpbWUgaW4gSEg6TU06U1MubW1tbW1tIGZvcm1hdC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEV4Y2x1ZGVkIHRpbWUgY29tcG9uZW50cyBhcmUgdHJ1bmNhdGVkLCBub3Qgcm91bmRlZC4KKworICAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgb24gYW4gaW52YWxpZCAqdGltZXNwZWMqIGFyZ3VtZW50LgorCisKKyAgICAgID4+PiBmcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lCisgICAgICA+Pj4gdGltZShob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9MTIzNDU2KS5pc29mb3JtYXQodGltZXNwZWM9J21pbnV0ZXMnKQorICAgICAgJzEyOjM0JworICAgICAgPj4+IGR0ID0gdGltZShob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9MCkKKyAgICAgID4+PiBkdC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpCisgICAgICAnMTI6MzQ6NTYuMDAwMDAwJworICAgICAgPj4+IGR0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpCisgICAgICAnMTI6MzQ6NTYnCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlICp0aW1lc3BlYyogYXJndW1lbnQuCisKIAogLi4gbWV0aG9kOjogdGltZS5fX3N0cl9fKCkKIApAQCAtMTQzMCw3ICsxNTUxLDggQEAKIC4uIG1ldGhvZDo6IHRpbWUuX19mb3JtYXRfXyhmb3JtYXQpCiAKICAgIFNhbWUgYXMgOm1ldGg6YC50aW1lLnN0cmZ0aW1lYC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgZm9ybWF0IHN0cmluZwotICAgZm9yIGEgOmNsYXNzOmAudGltZWAgb2JqZWN0IHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiAgRm9yIGEKKyAgIGZvciBhIDpjbGFzczpgLnRpbWVgIG9iamVjdCBpbiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nCisgICBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgYW5kIHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiAgRm9yIGEKICAgIGNvbXBsZXRlIGxpc3Qgb2YgZm9ybWF0dGluZyBkaXJlY3RpdmVzLCBzZWUKICAgIDpyZWY6YHN0cmZ0aW1lLXN0cnB0aW1lLWJlaGF2aW9yYC4KIApAQCAtMTY4MCw5ICsxODAyLDE5IEBACiBXaGVuIERTVCBzdGFydHMgKHRoZSAic3RhcnQiIGxpbmUpLCB0aGUgbG9jYWwgd2FsbCBjbG9jayBsZWFwcyBmcm9tIDE6NTkgdG8KIDM6MDAuICBBIHdhbGwgdGltZSBvZiB0aGUgZm9ybSAyOk1NIGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2Ugb24gdGhhdCBkYXksIHNvCiBgYGFzdGltZXpvbmUoRWFzdGVybilgYCB3b24ndCBkZWxpdmVyIGEgcmVzdWx0IHdpdGggYGBob3VyID09IDJgYCBvbiB0aGUgZGF5IERTVAotYmVnaW5zLiAgSW4gb3JkZXIgZm9yIDptZXRoOmBhc3RpbWV6b25lYCB0byBtYWtlIHRoaXMgZ3VhcmFudGVlLCB0aGUKLTptZXRoOmB0emluZm8uZHN0YCBtZXRob2QgbXVzdCBjb25zaWRlciB0aW1lcyBpbiB0aGUgIm1pc3NpbmcgaG91ciIgKDI6TU0gZm9yCi1FYXN0ZXJuKSB0byBiZSBpbiBkYXlsaWdodCB0aW1lLgorYmVnaW5zLiAgRm9yIGV4YW1wbGUsIGF0IHRoZSBTcHJpbmcgZm9yd2FyZCB0cmFuc2l0aW9uIG9mIDIwMTYsIHdlIGdldAorCisgICAgPj4+IHUwID0gZGF0ZXRpbWUoMjAxNiwgMywgMTMsIDUsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgPj4+IGZvciBpIGluIHJhbmdlKDQpOgorICAgIC4uLiAgICAgdSA9IHUwICsgaSpIT1VSCisgICAgLi4uICAgICB0ID0gdS5hc3RpbWV6b25lKEVhc3Rlcm4pCisgICAgLi4uICAgICBwcmludCh1LnRpbWUoKSwgJ1VUQyA9JywgdC50aW1lKCksIHQudHpuYW1lKCkpCisgICAgLi4uCisgICAgMDU6MDA6MDAgVVRDID0gMDA6MDA6MDAgRVNUCisgICAgMDY6MDA6MDAgVVRDID0gMDE6MDA6MDAgRVNUCisgICAgMDc6MDA6MDAgVVRDID0gMDM6MDA6MDAgRURUCisgICAgMDg6MDA6MDAgVVRDID0gMDQ6MDA6MDAgRURUCisKIAogV2hlbiBEU1QgZW5kcyAodGhlICJlbmQiIGxpbmUpLCB0aGVyZSdzIGEgcG90ZW50aWFsbHkgd29yc2UgcHJvYmxlbTogdGhlcmUncyBhbgogaG91ciB0aGF0IGNhbid0IGJlIHNwZWxsZWQgdW5hbWJpZ3VvdXNseSBpbiBsb2NhbCB3YWxsIHRpbWU6IHRoZSBsYXN0IGhvdXIgb2YKQEAgLTE2OTEsMjggKzE4MjMsNDEgQEAKIHRvIDE6MDAgKHN0YW5kYXJkIHRpbWUpIGFnYWluLiBMb2NhbCB0aW1lcyBvZiB0aGUgZm9ybSAxOk1NIGFyZSBhbWJpZ3VvdXMuCiA6bWV0aDpgYXN0aW1lem9uZWAgbWltaWNzIHRoZSBsb2NhbCBjbG9jaydzIGJlaGF2aW9yIGJ5IG1hcHBpbmcgdHdvIGFkamFjZW50IFVUQwogaG91cnMgaW50byB0aGUgc2FtZSBsb2NhbCBob3VyIHRoZW4uICBJbiB0aGUgRWFzdGVybiBleGFtcGxlLCBVVEMgdGltZXMgb2YgdGhlCi1mb3JtIDU6TU0gYW5kIDY6TU0gYm90aCBtYXAgdG8gMTpNTSB3aGVuIGNvbnZlcnRlZCB0byBFYXN0ZXJuLiAgSW4gb3JkZXIgZm9yCi06bWV0aDpgYXN0aW1lem9uZWAgdG8gbWFrZSB0aGlzIGd1YXJhbnRlZSwgdGhlIDptZXRoOmB0emluZm8uZHN0YCBtZXRob2QgbXVzdAotY29uc2lkZXIgdGltZXMgaW4gdGhlICJyZXBlYXRlZCBob3VyIiB0byBiZSBpbiBzdGFuZGFyZCB0aW1lLiAgVGhpcyBpcyBlYXNpbHkKLWFycmFuZ2VkLCBhcyBpbiB0aGUgZXhhbXBsZSwgYnkgZXhwcmVzc2luZyBEU1Qgc3dpdGNoIHRpbWVzIGluIHRoZSB0aW1lIHpvbmUncwotc3RhbmRhcmQgbG9jYWwgdGltZS4KK2Zvcm0gNTpNTSBhbmQgNjpNTSBib3RoIG1hcCB0byAxOk1NIHdoZW4gY29udmVydGVkIHRvIEVhc3Rlcm4sIGJ1dCBlYXJsaWVyIHRpbWVzCitoYXZlIHRoZSA6YXR0cjpgfmRhdGV0aW1lLmZvbGRgIGF0dHJpYnV0ZSBzZXQgdG8gMCBhbmQgdGhlIGxhdGVyIHRpbWVzIGhhdmUgaXQgc2V0IHRvIDEuCitGb3IgZXhhbXBsZSwgYXQgdGhlIEZhbGwgYmFjayB0cmFuc2l0aW9uIG9mIDIwMTYsIHdlIGdldAogCi1BcHBsaWNhdGlvbnMgdGhhdCBjYW4ndCBiZWFyIHN1Y2ggYW1iaWd1aXRpZXMgc2hvdWxkIGF2b2lkIHVzaW5nIGh5YnJpZAorICAgID4+PiB1MCA9IGRhdGV0aW1lKDIwMTYsIDExLCA2LCA0LCB0emluZm89dGltZXpvbmUudXRjKQorICAgID4+PiBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAuLi4gICAgIHUgPSB1MCArIGkqSE9VUgorICAgIC4uLiAgICAgdCA9IHUuYXN0aW1lem9uZShFYXN0ZXJuKQorICAgIC4uLiAgICAgcHJpbnQodS50aW1lKCksICdVVEMgPScsIHQudGltZSgpLCB0LnR6bmFtZSgpLCB0LmZvbGQpCisgICAgLi4uCisgICAgMDQ6MDA6MDAgVVRDID0gMDA6MDA6MDAgRURUIDAKKyAgICAwNTowMDowMCBVVEMgPSAwMTowMDowMCBFRFQgMAorICAgIDA2OjAwOjAwIFVUQyA9IDAxOjAwOjAwIEVTVCAxCisgICAgMDc6MDA6MDAgVVRDID0gMDI6MDA6MDAgRVNUIDAKKworTm90ZSB0aGF0IHRoZSA6Y2xhc3M6YGRhdGV0aW1lYCBpbnN0YW5jZXMgdGhhdCBkaWZmZXIgb25seSBieSB0aGUgdmFsdWUgb2YgdGhlCis6YXR0cjpgfmRhdGV0aW1lLmZvbGRgIGF0dHJpYnV0ZSBhcmUgY29uc2lkZXJlZCBlcXVhbCBpbiBjb21wYXJpc29ucy4KKworQXBwbGljYXRpb25zIHRoYXQgY2FuJ3QgYmVhciB3YWxsLXRpbWUgYW1iaWd1aXRpZXMgc2hvdWxkIGV4cGxpY2l0bHkgY2hlY2sgdGhlCit2YWx1ZSBvZiB0aGUgOmF0dHI6YH5kYXRldGltZS5mb2xkYCBhdHRyaWJ1dGUgb3IgYXZvaWQgdXNpbmcgaHlicmlkCiA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3NlczsgdGhlcmUgYXJlIG5vIGFtYmlndWl0aWVzIHdoZW4gdXNpbmcgOmNsYXNzOmB0aW1lem9uZWAsCiBvciBhbnkgb3RoZXIgZml4ZWQtb2Zmc2V0IDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcyAoc3VjaCBhcyBhIGNsYXNzIHJlcHJlc2VudGluZwogb25seSBFU1QgKGZpeGVkIG9mZnNldCAtNSBob3VycyksIG9yIG9ubHkgRURUIChmaXhlZCBvZmZzZXQgLTQgaG91cnMpKS4KIAogLi4gc2VlYWxzbzo6CiAKLSAgIGBweXR6IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5dHovPmBfCisgICBgZGF0ZXR1aWwudHogPGh0dHBzOi8vZGF0ZXV0aWwucmVhZHRoZWRvY3MuaW8vZW4vc3RhYmxlL3R6Lmh0bWw+YF8KICAgICAgIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IGhhcyA6Y2xhc3M6YHRpbWV6b25lYCBjbGFzcyBmb3IgaGFuZGxpbmcgYXJiaXRyYXJ5CiAgICAgICBmaXhlZCBvZmZzZXRzIGZyb20gVVRDIGFuZCA6YXR0cjpgdGltZXpvbmUudXRjYCBhcyBVVEMgdGltZXpvbmUgaW5zdGFuY2UuCiAKLSAgICAgICpweXR6KiBsaWJyYXJ5IGJyaW5ncyB0aGUgKklBTkEgdGltZXpvbmUgZGF0YWJhc2UqIChhbHNvIGtub3duIGFzIHRoZQorICAgICAgKmRhdGV0dWlsLnR6KiBsaWJyYXJ5IGJyaW5ncyB0aGUgKklBTkEgdGltZXpvbmUgZGF0YWJhc2UqIChhbHNvIGtub3duIGFzIHRoZQogICAgICAgT2xzb24gZGF0YWJhc2UpIHRvIFB5dGhvbiBhbmQgaXRzIHVzYWdlIGlzIHJlY29tbWVuZGVkLgogCiAgICBgSUFOQSB0aW1lem9uZSBkYXRhYmFzZSA8aHR0cHM6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcz5gXwotICAgICAgVGhlIFRpbWUgWm9uZSBEYXRhYmFzZSAob2Z0ZW4gY2FsbGVkIHR6IG9yIHpvbmVpbmZvKSBjb250YWlucyBjb2RlIGFuZAorICAgICAgVGhlIFRpbWUgWm9uZSBEYXRhYmFzZSAob2Z0ZW4gY2FsbGVkIHR6LCB0emRhdGEgb3Igem9uZWluZm8pIGNvbnRhaW5zIGNvZGUgYW5kCiAgICAgICBkYXRhIHRoYXQgcmVwcmVzZW50IHRoZSBoaXN0b3J5IG9mIGxvY2FsIHRpbWUgZm9yIG1hbnkgcmVwcmVzZW50YXRpdmUKICAgICAgIGxvY2F0aW9ucyBhcm91bmQgdGhlIGdsb2JlLiBJdCBpcyB1cGRhdGVkIHBlcmlvZGljYWxseSB0byByZWZsZWN0IGNoYW5nZXMKICAgICAgIG1hZGUgYnkgcG9saXRpY2FsIGJvZGllcyB0byB0aW1lIHpvbmUgYm91bmRhcmllcywgVVRDIG9mZnNldHMsIGFuZApAQCAtMTczMiw3ICsxODc3LDcgQEAKIG1hZGUgdG8gY2l2aWwgdGltZS4KIAogCi0uLiBjbGFzczo6IHRpbWV6b25lKG9mZnNldFssIG5hbWVdKQorLi4gY2xhc3M6OiB0aW1lem9uZShvZmZzZXQsIG5hbWU9Tm9uZSkKIAogICBUaGUgKm9mZnNldCogYXJndW1lbnQgbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSA6Y2xhc3M6YHRpbWVkZWx0YWAKICAgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsb2NhbCB0aW1lIGFuZCBVVEMuICBJdCBtdXN0CkBAIC0xNzQxLDEwICsxODg2LDcgQEAKICAgb3RoZXJ3aXNlIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KIAogICBUaGUgKm5hbWUqIGFyZ3VtZW50IGlzIG9wdGlvbmFsLiAgSWYgc3BlY2lmaWVkIGl0IG11c3QgYmUgYSBzdHJpbmcgdGhhdAotICBpcyB1c2VkIGFzIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgYGB0em5hbWUoZHQpYGAgbWV0aG9kLiAgT3RoZXJ3aXNlLAotICBgYHR6bmFtZShkdClgYCByZXR1cm5zIGEgc3RyaW5nICdVVENzSEg6TU0nLCB3aGVyZSBzIGlzIHRoZSBzaWduIG9mCi0gICpvZmZzZXQqLCBISCBhbmQgTU0gYXJlIHR3byBkaWdpdHMgb2YgYGBvZmZzZXQuaG91cnNgYCBhbmQKLSAgYGBvZmZzZXQubWludXRlc2BgIHJlc3BlY3RpdmVseS4KKyAgd2lsbCBiZSB1c2VkIGFzIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgOm1ldGg6YGRhdGV0aW1lLnR6bmFtZWAgbWV0aG9kLgogCiAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC0xNzU3LDExICsxODk5LDE5IEBACiAKIC4uIG1ldGhvZDo6IHRpbWV6b25lLnR6bmFtZShkdCkKIAotICBSZXR1cm4gdGhlIGZpeGVkIHZhbHVlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YHRpbWV6b25lYCBpbnN0YW5jZSBpcwotICBjb25zdHJ1Y3RlZCBvciBhIHN0cmluZyAnVVRDc0hIOk1NJywgd2hlcmUgcyBpcyB0aGUgc2lnbiBvZgotICAqb2Zmc2V0KiwgSEggYW5kIE1NIGFyZSB0d28gZGlnaXRzIG9mIGBgb2Zmc2V0LmhvdXJzYGAgYW5kCisgIFJldHVybiB0aGUgZml4ZWQgdmFsdWUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgdGltZXpvbmVgIGluc3RhbmNlCisgIGlzIGNvbnN0cnVjdGVkLiAgSWYgKm5hbWUqIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY29uc3RydWN0b3IsIHRoZQorICBuYW1lIHJldHVybmVkIGJ5IGBgdHpuYW1lKGR0KWBgIGlzIGdlbmVyYXRlZCBmcm9tIHRoZSB2YWx1ZSBvZiB0aGUKKyAgYGBvZmZzZXRgYCBhcyBmb2xsb3dzLiAgSWYgKm9mZnNldCogaXMgYGB0aW1lZGVsdGEoMClgYCwgdGhlIG5hbWUKKyAgaXMgIlVUQyIsIG90aGVyd2lzZSBpdCBpcyBhIHN0cmluZyAnVVRDwrFISDpNTScsIHdoZXJlIMKxIGlzIHRoZSBzaWduCisgIG9mIGBgb2Zmc2V0YGAsIEhIIGFuZCBNTSBhcmUgdHdvIGRpZ2l0cyBvZiBgYG9mZnNldC5ob3Vyc2BgIGFuZAogICBgYG9mZnNldC5taW51dGVzYGAgcmVzcGVjdGl2ZWx5LgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgIE5hbWUgZ2VuZXJhdGVkIGZyb20gYGBvZmZzZXQ9dGltZWRlbHRhKDApYGAgaXMgbm93IHBsYWluICdVVEMnLCBub3QKKyAgICAgJ1VUQyswMDowMCcuCisKKwogLi4gbWV0aG9kOjogdGltZXpvbmUuZHN0KGR0KQogCiAgIEFsd2F5cyByZXR1cm5zIGBgTm9uZWBgLgpAQCAtMTkxMSw2ICsyMDYxLDM0IEBACiB8IGBgJSVgYCAgICB8IEEgbGl0ZXJhbCBgYCclJ2BgIGNoYXJhY3Rlci4gICB8ICUgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiAKK1NldmVyYWwgYWRkaXRpb25hbCBkaXJlY3RpdmVzIG5vdCByZXF1aXJlZCBieSB0aGUgQzg5IHN0YW5kYXJkIGFyZSBpbmNsdWRlZCBmb3IKK2NvbnZlbmllbmNlLiBUaGVzZSBwYXJhbWV0ZXJzIGFsbCBjb3JyZXNwb25kIHRvIElTTyA4NjAxIGRhdGUgdmFsdWVzLiBUaGVzZQorbWF5IG5vdCBiZSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyB3aGVuIHVzZWQgd2l0aCB0aGUgOm1ldGg6YHN0cmZ0aW1lYAorbWV0aG9kLiBUaGUgSVNPIDg2MDEgeWVhciBhbmQgSVNPIDg2MDEgd2VlayBkaXJlY3RpdmVzIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlCit3aXRoIHRoZSB5ZWFyIGFuZCB3ZWVrIG51bWJlciBkaXJlY3RpdmVzIGFib3ZlLiBDYWxsaW5nIDptZXRoOmBzdHJwdGltZWAgd2l0aAoraW5jb21wbGV0ZSBvciBhbWJpZ3VvdXMgSVNPIDg2MDEgZGlyZWN0aXZlcyB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuCisKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgRGlyZWN0aXZlIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgIHwgRXhhbXBsZSAgICAgICAgICAgICAgICB8IE5vdGVzIHwKKys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSsKK3wgYGAlR2BgICAgIHwgSVNPIDg2MDEgeWVhciB3aXRoIGNlbnR1cnkgICAgIHwgMDAwMSwgMDAwMiwgLi4uLCAyMDEzLCB8IFwoOCkgIHwKK3wgICAgICAgICAgIHwgcmVwcmVzZW50aW5nIHRoZSB5ZWFyIHRoYXQgICAgIHwgMjAxNCwgLi4uLCA5OTk4LCA5OTk5ICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgY29udGFpbnMgdGhlIGdyZWF0ZXIgcGFydCBvZiAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgdGhlIElTTyB3ZWVrIChgYCVWYGApLiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAldWBgICAgIHwgSVNPIDg2MDEgd2Vla2RheSBhcyBhIGRlY2ltYWwgIHwgMSwgMiwgLi4uLCA3ICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgbnVtYmVyIHdoZXJlIDEgaXMgTW9uZGF5LiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAlVmBgICAgIHwgSVNPIDg2MDEgd2VlayBhcyBhIGRlY2ltYWwgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICB8IFwoOCkgIHwKK3wgICAgICAgICAgIHwgbnVtYmVyIHdpdGggTW9uZGF5IGFzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4gICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgV2VlayAwMSBpcyB0aGUgd2VlayBjb250YWluaW5nIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgSmFuIDQuICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICBgYCVHYGAsIGBgJXVgYCBhbmQgYGAlVmBgIHdlcmUgYWRkZWQuCisKIE5vdGVzOgogCiAoMSkKQEAgLTE5NzUsNyArMjE1MywxNCBAQAogCiAoNykKICAgIFdoZW4gdXNlZCB3aXRoIHRoZSA6bWV0aDpgc3RycHRpbWVgIG1ldGhvZCwgYGAlVWBgIGFuZCBgYCVXYGAgYXJlIG9ubHkgdXNlZAotICAgaW4gY2FsY3VsYXRpb25zIHdoZW4gdGhlIGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIHllYXIgYXJlIHNwZWNpZmllZC4KKyAgIGluIGNhbGN1bGF0aW9ucyB3aGVuIHRoZSBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSBjYWxlbmRhciB5ZWFyIChgYCVZYGApCisgICBhcmUgc3BlY2lmaWVkLgorCisoOCkKKyAgIFNpbWlsYXIgdG8gYGAlVWBgIGFuZCBgYCVXYGAsIGBgJVZgYCBpcyBvbmx5IHVzZWQgaW4gY2FsY3VsYXRpb25zIHdoZW4gdGhlCisgICBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSBJU08geWVhciAoYGAlR2BgKSBhcmUgc3BlY2lmaWVkIGluIGEKKyAgIDptZXRoOmBzdHJwdGltZWAgZm9ybWF0IHN0cmluZy4gQWxzbyBub3RlIHRoYXQgYGAlR2BgIGFuZCBgYCVZYGAgYXJlIG5vdAorICAgaW50ZXJjaGFuZ2VhYmxlLgogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGJtLnJzdCBiL0RvYy9saWJyYXJ5L2RibS5yc3QKaW5kZXggMmExZGI5MS4uMzJlODBiMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGJtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYm0ucnN0CkBAIC0zNTEsNiArMzUxLDEwIEBACiAgICAgICA6ZnVuYzpgLm9wZW5gIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGRhdGFiYXNlIHdoZW4gdGhlIGZsYWcgaGFzIHRoZSB2YWx1ZQogICAgICAgYGAnbidgYC4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy42IDMuOAorICAgICAgQ3JlYXRpbmcgZGF0YWJhc2UgaW4gYGAncidgYCBhbmQgYGAndydgYCBtb2Rlcy4gIE1vZGlmeWluZyBkYXRhYmFzZSBpbgorICAgICAgYGAncidgYCBtb2RlLgorCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBwcm92aWRlZCBieSB0aGUKICAgIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYCBjbGFzcywgOmNsYXNzOmBkdW1iZGJtYCBvYmplY3RzCiAgICBwcm92aWRlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0IGIvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QKaW5kZXggYjVjZTBiMS4uZTk4NGVkYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QKQEAgLTM0NSw3ICszNDUsNyBAQAogICAgKnZhbHVlKiBjYW4gYmUgYW4gaW50ZWdlciwgc3RyaW5nLCB0dXBsZSwgOmNsYXNzOmBmbG9hdGAsIG9yIGFub3RoZXIgOmNsYXNzOmBEZWNpbWFsYAogICAgb2JqZWN0LiBJZiBubyAqdmFsdWUqIGlzIGdpdmVuLCByZXR1cm5zIGBgRGVjaW1hbCgnMCcpYGAuICBJZiAqdmFsdWUqIGlzIGEKICAgIHN0cmluZywgaXQgc2hvdWxkIGNvbmZvcm0gdG8gdGhlIGRlY2ltYWwgbnVtZXJpYyBzdHJpbmcgc3ludGF4IGFmdGVyIGxlYWRpbmcKLSAgIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYXJlIHJlbW92ZWQ6OgorICAgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVycywgYXMgd2VsbCBhcyB1bmRlcnNjb3JlcyB0aHJvdWdob3V0LCBhcmUgcmVtb3ZlZDo6CiAKICAgICAgIHNpZ24gICAgICAgICAgIDo6PSAgJysnIHwgJy0nCiAgICAgICBkaWdpdCAgICAgICAgICA6Oj0gICcwJyB8ICcxJyB8ICcyJyB8ICczJyB8ICc0JyB8ICc1JyB8ICc2JyB8ICc3JyB8ICc4JyB8ICc5JwpAQCAtMzk0LDYgKzM5NCwxMCBAQAogICAgICAgOmNsYXNzOmBmbG9hdGAgYXJndW1lbnRzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgOmV4YzpgRmxvYXRPcGVyYXRpb25gCiAgICAgICB0cmFwIGlzIHNldC4gQnkgZGVmYXVsdCB0aGUgdHJhcCBpcyBvZmYuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVbmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBmb3IgZ3JvdXBpbmcsIGFzIHdpdGggaW50ZWdyYWwgYW5kIGZsb2F0aW5nLXBvaW50CisgICAgICBsaXRlcmFscyBpbiBjb2RlLgorCiAgICBEZWNpbWFsIGZsb2F0aW5nIHBvaW50IG9iamVjdHMgc2hhcmUgbWFueSBwcm9wZXJ0aWVzIHdpdGggdGhlIG90aGVyIGJ1aWx0LWluCiAgICBudW1lcmljIHR5cGVzIHN1Y2ggYXMgOmNsYXNzOmBmbG9hdGAgYW5kIDpjbGFzczpgaW50YC4gIEFsbCBvZiB0aGUgdXN1YWwgbWF0aAogICAgb3BlcmF0aW9ucyBhbmQgc3BlY2lhbCBtZXRob2RzIGFwcGx5LiAgTGlrZXdpc2UsIGRlY2ltYWwgb2JqZWN0cyBjYW4gYmUKQEAgLTQ0Nyw2ICs0NTEsMTkgQEAKICAgICAgIGBgRGVjaW1hbCgnMzIxZSs1JykuYWRqdXN0ZWQoKWBgIHJldHVybnMgc2V2ZW4uICBVc2VkIGZvciBkZXRlcm1pbmluZyB0aGUKICAgICAgIHBvc2l0aW9uIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IHdpdGggcmVzcGVjdCB0byB0aGUgZGVjaW1hbCBwb2ludC4KIAorICAgLi4gbWV0aG9kOjogYXNfaW50ZWdlcl9yYXRpbygpCisKKyAgICAgIFJldHVybiBhIHBhaXIgYGAobiwgZClgYCBvZiBpbnRlZ2VycyB0aGF0IHJlcHJlc2VudCB0aGUgZ2l2ZW4KKyAgICAgIDpjbGFzczpgRGVjaW1hbGAgaW5zdGFuY2UgYXMgYSBmcmFjdGlvbiwgaW4gbG93ZXN0IHRlcm1zIGFuZAorICAgICAgd2l0aCBhIHBvc2l0aXZlIGRlbm9taW5hdG9yOjoKKworICAgICAgICAgID4+PiBEZWNpbWFsKCctMy4xNCcpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAgICgtMTU3LCA1MCkKKworICAgICAgVGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICBSYWlzZSBPdmVyZmxvd0Vycm9yIG9uIGluZmluaXRpZXMgYW5kIFZhbHVlRXJyb3IKKyAgICAgIG9uIE5hTnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAgICAuLiBtZXRob2Q6OiBhc190dXBsZSgpCiAKQEAgLTEwNjIsOCArMTA3OSw4IEBACiAgICAgICAgICBEZWNpbWFsKCc0LjQ0JykKIAogICAgICAgVGhpcyBtZXRob2QgaW1wbGVtZW50cyB0aGUgdG8tbnVtYmVyIG9wZXJhdGlvbiBvZiB0aGUgSUJNIHNwZWNpZmljYXRpb24uCi0gICAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSBzdHJpbmcsIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcwotICAgICAgcGVybWl0dGVkLgorICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgc3RyaW5nLCBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3IKKyAgICAgIHVuZGVyc2NvcmVzIGFyZSBwZXJtaXR0ZWQuCiAKICAgIC4uIG1ldGhvZDo6IGNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoZikKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlzLnJzdCBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKaW5kZXggZDJkOGFjNy4uM2M2YzBmZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaXMucnN0CkBAIC0zMSw5ICszMSw5IEBACiAKICAgID4+PiBkaXMuZGlzKG15ZnVuYykKICAgICAgMiAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAobGVuKQotICAgICAgICAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhbGlzdCkKLSAgICAgICAgICAgICAgICAgNiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQotICAgICAgICAgICAgICAgICA5IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAgICAyIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhbGlzdCkKKyAgICAgICAgICAgICAgICAgNCBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgICA2IFJFVFVSTl9WQUxVRQogCiAoVGhlICIyIiBpcyBhIGxpbmUgbnVtYmVyKS4KIApAQCAtNjA3LDYgKzYwNywxNCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorLi4gb3Bjb2RlOjogU0VUVVBfQU5OT1RBVElPTlMKKworICAgQ2hlY2tzIHdoZXRoZXIgYGBfX2Fubm90YXRpb25zX19gYCBpcyBkZWZpbmVkIGluIGBgbG9jYWxzKClgYCwgaWYgbm90IGl0IGlzCisgICBzZXQgdXAgdG8gYW4gZW1wdHkgYGBkaWN0YGAuIFRoaXMgb3Bjb2RlIGlzIG9ubHkgZW1taXR0ZWQgaWYgYSBjbGFzcworICAgb3IgbW9kdWxlIGJvZHkgY29udGFpbnMgOnRlcm06YHZhcmlhYmxlIGFubm90YXRpb25zIDx2YXJpYWJsZSBhbm5vdGF0aW9uPmAKKyAgIHN0YXRpY2FsbHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBvcGNvZGU6OiBJTVBPUlRfU1RBUgogCkBAIC02ODIsOCArNjkwLDcgQEAKICAgIC4uIFhYWCBleHBsYWluIHRoZSBXSFkgc3R1ZmYhCiAKIAotQWxsIG9mIHRoZSBmb2xsb3dpbmcgb3Bjb2RlcyBleHBlY3QgYXJndW1lbnRzLiAgQW4gYXJndW1lbnQgaXMgdHdvIGJ5dGVzLCB3aXRoCi10aGUgbW9yZSBzaWduaWZpY2FudCBieXRlIGxhc3QuCitBbGwgb2YgdGhlIGZvbGxvd2luZyBvcGNvZGVzIHVzZSB0aGVpciBhcmd1bWVudHMuCiAKIC4uIG9wY29kZTo6IFNUT1JFX05BTUUgKG5hbWVpKQogCkBAIC03NjksNiArNzc2LDIzIEBACiAgICB0byBob2xkICpjb3VudCogZW50cmllcy4KIAogCisuLiBvcGNvZGU6OiBCVUlMRF9DT05TVF9LRVlfTUFQIChjb3VudCkKKworICAgVGhlIHZlcnNpb24gb2YgOm9wY29kZTpgQlVJTERfTUFQYCBzcGVjaWFsaXplZCBmb3IgY29uc3RhbnQga2V5cy4gICpjb3VudCoKKyAgIHZhbHVlcyBhcmUgY29uc3VtZWQgZnJvbSB0aGUgc3RhY2suICBUaGUgdG9wIGVsZW1lbnQgb24gdGhlIHN0YWNrIGNvbnRhaW5zCisgICBhIHR1cGxlIG9mIGtleXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIG9wY29kZTo6IEJVSUxEX1NUUklORyAoY291bnQpCisKKyAgIENvbmNhdGVuYXRlcyAqY291bnQqIHN0cmluZ3MgZnJvbSB0aGUgc3RhY2sgYW5kIHB1c2hlcyB0aGUgcmVzdWx0aW5nIHN0cmluZworICAgb250byB0aGUgc3RhY2suCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG9wY29kZTo6IExPQURfQVRUUiAobmFtZWkpCiAKICAgIFJlcGxhY2VzIFRPUyB3aXRoIGBgZ2V0YXR0cihUT1MsIGNvX25hbWVzW25hbWVpXSlgYC4KQEAgLTg3NCw2ICs4OTgsMTMgQEAKICAgIERlbGV0ZXMgbG9jYWwgYGBjb192YXJuYW1lc1t2YXJfbnVtXWBgLgogCiAKKy4uIG9wY29kZTo6IFNUT1JFX0FOTk9UQVRJT04gKG5hbWVpKQorCisgICBTdG9yZXMgVE9TIGFzIGBgbG9jYWxzKClbJ19fYW5ub3RhdGlvbnNfXyddW2NvX25hbWVzW25hbWVpXV0gPSBUT1NgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gb3Bjb2RlOjogTE9BRF9DTE9TVVJFIChpKQogCiAgICBQdXNoZXMgYSByZWZlcmVuY2UgdG8gdGhlIGNlbGwgY29udGFpbmVkIGluIHNsb3QgKmkqIG9mIHRoZSBjZWxsIGFuZCBmcmVlCkBAIC05MjksMjcgKzk2MCwxNiBAQAogLi4gb3Bjb2RlOjogTUFLRV9GVU5DVElPTiAoYXJnYykKIAogICAgUHVzaGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCBvbiB0aGUgc3RhY2suICBGcm9tIGJvdHRvbSB0byB0b3AsIHRoZSBjb25zdW1lZAotICAgc3RhY2sgbXVzdCBjb25zaXN0IG9mCisgICBzdGFjayBtdXN0IGNvbnNpc3Qgb2YgdmFsdWVzIGlmIHRoZSBhcmd1bWVudCBjYXJyaWVzIGEgc3BlY2lmaWVkIGZsYWcgdmFsdWUKIAotICAgKiBgYGFyZ2MgJiAweEZGYGAgZGVmYXVsdCBhcmd1bWVudCBvYmplY3RzIGluIHBvc2l0aW9uYWwgb3JkZXIKLSAgICogYGAoYXJnYyA+PiA4KSAmIDB4RkZgYCBwYWlycyBvZiBuYW1lIGFuZCBkZWZhdWx0IGFyZ3VtZW50LCB3aXRoIHRoZSBuYW1lCi0gICAgIGp1c3QgYmVsb3cgdGhlIG9iamVjdCBvbiB0aGUgc3RhY2ssIGZvciBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycwotICAgKiBgYChhcmdjID4+IDE2KSAmIDB4N0ZGRmBgIHBhcmFtZXRlciBhbm5vdGF0aW9uIG9iamVjdHMKLSAgICogYSB0dXBsZSBsaXN0aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZXMgZm9yIHRoZSBhbm5vdGF0aW9ucyAob25seSBpZiB0aGVyZSBhcmUKLSAgICAgb255IGFubm90YXRpb24gb2JqZWN0cykKKyAgICogYGAweDAxYGAgYSB0dXBsZSBvZiBkZWZhdWx0IGFyZ3VtZW50IG9iamVjdHMgaW4gcG9zaXRpb25hbCBvcmRlcgorICAgKiBgYDB4MDJgYCBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMnIGRlZmF1bHQgdmFsdWVzCisgICAqIGBgMHgwNGBgIGFuIGFubm90YXRpb24gZGljdGlvbmFyeQorICAgKiBgYDB4MDhgYCBhIHR1cGxlIGNvbnRhaW5pbmcgY2VsbHMgZm9yIGZyZWUgdmFyaWFibGVzLCBtYWtpbmcgYSBjbG9zdXJlCiAgICAqIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24gKGF0IFRPUzEpCiAgICAqIHRoZSA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbiAoYXQgVE9TKQogCiAKLS4uIG9wY29kZTo6IE1BS0VfQ0xPU1VSRSAoYXJnYykKLQotICAgQ3JlYXRlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3QsIHNldHMgaXRzICpfX2Nsb3N1cmVfXyogc2xvdCwgYW5kIHB1c2hlcyBpdCBvbgotICAgdGhlIHN0YWNrLiAgVE9TIGlzIHRoZSA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbiwgVE9TMSBpcyB0aGUKLSAgIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdW5jdGlvbiwgYW5kIFRPUzIgaXMgdGhlIHR1cGxlIGNvbnRhaW5pbmcgY2VsbHMgZm9yCi0gICB0aGUgY2xvc3VyZSdzIGZyZWUgdmFyaWFibGVzLiAgKmFyZ2MqIGlzIGludGVycHJldGVkIGFzIGluIGBgTUFLRV9GVU5DVElPTmBgOwotICAgdGhlIGFubm90YXRpb25zIGFuZCBkZWZhdWx0cyBhcmUgYWxzbyBpbiB0aGUgc2FtZSBvcmRlciBiZWxvdyBUT1MyLgotCi0KIC4uIG9wY29kZTo6IEJVSUxEX1NMSUNFIChhcmdjKQogCiAgICAuLiBpbmRleDo6IGJ1aWx0aW46IHNsaWNlCkBAIC05ODksNiArMTAwOSwyOCBAQAogICAgYXJndW1lbnRzLgogCiAKKy4uIG9wY29kZTo6IEZPUk1BVF9WQUxVRSAoZmxhZ3MpCisKKyAgIFVzZWQgZm9yIGltcGxlbWVudGluZyBmb3JtYXR0ZWQgbGl0ZXJhbCBzdHJpbmdzIChmLXN0cmluZ3MpLiAgUG9wcworICAgYW4gb3B0aW9uYWwgKmZtdF9zcGVjKiBmcm9tIHRoZSBzdGFjaywgdGhlbiBhIHJlcXVpcmVkICp2YWx1ZSouCisgICAqZmxhZ3MqIGlzIGludGVycHJldGVkIGFzIGZvbGxvd3M6CisKKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAwYGA6ICp2YWx1ZSogaXMgZm9ybWF0dGVkIGFzLWlzLgorICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDFgYDogY2FsbCA6ZnVuYzpgc3RyYCBvbiAqdmFsdWUqIGJlZm9yZQorICAgICBmb3JtYXR0aW5nIGl0LgorICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDJgYDogY2FsbCA6ZnVuYzpgcmVwcmAgb24gKnZhbHVlKiBiZWZvcmUKKyAgICAgZm9ybWF0dGluZyBpdC4KKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAzYGA6IGNhbGwgOmZ1bmM6YGFzY2lpYCBvbiAqdmFsdWUqIGJlZm9yZQorICAgICBmb3JtYXR0aW5nIGl0LgorICAgKiBgYChmbGFncyAmIDB4MDQpID09IDB4MDRgYDogcG9wICpmbXRfc3BlYyogZnJvbSB0aGUgc3RhY2sgYW5kIHVzZQorICAgICBpdCwgZWxzZSB1c2UgYW4gZW1wdHkgKmZtdF9zcGVjKi4KKworICAgRm9ybWF0dGluZyBpcyBwZXJmb3JtZWQgdXNpbmcgOmM6ZnVuYzpgUHlPYmplY3RfRm9ybWF0YC4gIFRoZQorICAgcmVzdWx0IGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG9wY29kZTo6IEhBVkVfQVJHVU1FTlQKIAogICAgVGhpcyBpcyBub3QgcmVhbGx5IGFuIG9wY29kZS4gIEl0IGlkZW50aWZpZXMgdGhlIGRpdmlkaW5nIGxpbmUgYmV0d2VlbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwtZXhhbXBsZXMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwtZXhhbXBsZXMucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDkzYjVjLi4wMDAwMDAwCi0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLWV4YW1wbGVzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS4uIF9lbWFpbC1leGFtcGxlczoKLQotOm1vZDpgZW1haWxgOiBFeGFtcGxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1IZXJlIGFyZSBhIGZldyBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB0byByZWFkLCB3cml0ZSwKLWFuZCBzZW5kIHNpbXBsZSBlbWFpbCBtZXNzYWdlcywgYXMgd2VsbCBhcyBtb3JlIGNvbXBsZXggTUlNRSBtZXNzYWdlcy4KLQotRmlyc3QsIGxldCdzIHNlZSBob3cgdG8gY3JlYXRlIGFuZCBzZW5kIGEgc2ltcGxlIHRleHQgbWVzc2FnZToKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKLQotCi1BbmQgcGFyc2luZyBSRkM4MjIgaGVhZGVycyBjYW4gZWFzaWx5IGJlIGRvbmUgYnkgdGhlIHBhcnNlKGZpbGVuYW1lKSBvcgotcGFyc2VzdHIobWVzc2FnZV9hc19zdHJpbmcpIG1ldGhvZHMgb2YgdGhlIFBhcnNlcigpIGNsYXNzOgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKLQotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCBhIE1JTUUgbWVzc2FnZSBjb250YWluaW5nIGEgYnVuY2ggb2YgZmFtaWx5Ci1waWN0dXJlcyB0aGF0IG1heSBiZSByZXNpZGluZyBpbiBhIGRpcmVjdG9yeToKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1taW1lLnB5Ci0KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNlbmQgdGhlIGVudGlyZSBjb250ZW50cyBvZiBhIGRpcmVjdG9yeSBhcyBhbiBlbWFpbAotbWVzc2FnZTogWzFdXwotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWRpci5weQotCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byB1bnBhY2sgYSBNSU1FIG1lc3NhZ2UgbGlrZSB0aGUgb25lCi1hYm92ZSwgaW50byBhIGRpcmVjdG9yeSBvZiBmaWxlczoKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNyZWF0ZSBhbiBIVE1MIG1lc3NhZ2Ugd2l0aCBhbiBhbHRlcm5hdGl2ZSBwbGFpbgotdGV4dCB2ZXJzaW9uOiBbMl1fCi0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKLQotCi0uLiBfZW1haWwtY29udGVudG1hbmFnZXItYXBpLWV4YW1wbGVzOgotCi1FeGFtcGxlcyB1c2luZyB0aGUgUHJvdmlzaW9uYWwgQVBJCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci1IZXJlIGlzIGEgcmV3b3JraW5nIG9mIHRoZSBsYXN0IGV4YW1wbGUgdXNpbmcgdGhlIHByb3Zpc2lvbmFsIEFQSS4gIFRvIG1ha2UKLXRoaW5ncyBhIGJpdCBtb3JlIGludGVyZXN0aW5nLCB3ZSBpbmNsdWRlIGEgcmVsYXRlZCBpbWFnZSBpbiB0aGUgaHRtbCBwYXJ0LCBhbmQKLXdlIHNhdmUgYSBjb3B5IG9mIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHNlbmQgdG8gZGlzaywgYXMgd2VsbCBhcyBzZW5kaW5nIGl0LgotCi1UaGlzIGV4YW1wbGUgYWxzbyBzaG93cyBob3cgZWFzeSBpdCBpcyB0byBpbmNsdWRlIG5vbi1BU0NJSSwgYW5kIHNpbXBsaWZpZXMgdGhlCi1zZW5kaW5nIG9mIHRoZSBtZXNzYWdlIHVzaW5nIHRoZSA6bWV0aDpgLnNlbmRfbWVzc2FnZWAgbWV0aG9kIG9mIHRoZQotOm1vZDpgc210cGxpYmAgbW9kdWxlLgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKLQotSWYgd2Ugd2VyZSBpbnN0ZWFkIHNlbnQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgbGFzdCBleGFtcGxlLCBoZXJlIGlzIG9uZQotd2F5IHdlIGNvdWxkIHByb2Nlc3MgaXQ6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5Ci0KLVVwIHRvIHRoZSBwcm9tcHQsIHRoZSBvdXRwdXQgZnJvbSB0aGUgYWJvdmUgaXM6Ci0KLS4uIGNvZGUtYmxvY2s6OiBub25lCi0KLSAgICBUbzogUGVuZWxvcGUgUHVzc3ljYXQgPHBlbmVsb3BlQGV4YW1wbGUuY29tPiwgRmFicmV0dGUgUHVzc3ljYXQgPGZhYnJldHRlQGV4YW1wbGUuY29tPgotICAgIEZyb206IFBlcMOpIExlIFBldyA8cGVwZUBleGFtcGxlLmNvbT4KLSAgICBTdWJqZWN0OiBBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lcgotCi0gICAgU2FsdXQhCi0KLSAgICBDZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCi0KLQotLi4gcnVicmljOjogRm9vdG5vdGVzCi0KLS4uIFsxXSBUaGFua3MgdG8gTWF0dGhldyBEaXhvbiBDb3dsZXMgZm9yIHRoZSBvcmlnaW5hbCBpbnNwaXJhdGlvbiBhbmQgZXhhbXBsZXMuCi0uLiBbMl0gQ29udHJpYnV0ZWQgYnkgTWFydGluIE1hdGVqZWsuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5jaGFyc2V0LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CmluZGV4IDE2MWQ4NmEuLjA1MzQ2M2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CkBAIC04LDYgKzgsMTEgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEluIHRoZSBuZXcKK0FQSSBvbmx5IHRoZSBhbGlhc2VzIHRhYmxlIGlzIHVzZWQuCisKK1RoZSByZW1haW5pbmcgdGV4dCBpbiB0aGlzIHNlY3Rpb24gaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKwogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjbGFzcyA6Y2xhc3M6YENoYXJzZXRgIGZvciByZXByZXNlbnRpbmcgY2hhcmFjdGVyIHNldHMKIGFuZCBjaGFyYWN0ZXIgc2V0IGNvbnZlcnNpb25zIGluIGVtYWlsIG1lc3NhZ2VzLCBhcyB3ZWxsIGFzIGEgY2hhcmFjdGVyIHNldAogcmVnaXN0cnkgYW5kIHNldmVyYWwgY29udmVuaWVuY2UgbWV0aG9kcyBmb3IgbWFuaXB1bGF0aW5nIHRoaXMgcmVnaXN0cnkuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNjUwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdApAQCAtMCwwICsxLDc1NCBAQAorLi4gX2NvbXBhdDMyX21lc3NhZ2U6CisKKzptb2Q6YGVtYWlsLm1lc3NhZ2UuTWVzc2FnZWA6IFJlcHJlc2VudGluZyBhbiBlbWFpbCBtZXNzYWdlIHVzaW5nIHRoZSA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBtb2R1bGU6OiBlbWFpbC5tZXNzYWdlCisgICA6c3lub3BzaXM6IFRoZSBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBlbWFpbCBtZXNzYWdlcyBpbiBhIGZhc2hpb24KKyAgICAgICAgICAgICAgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHB5dGhvbjMuMgorCisKK1RoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzIGlzIHZlcnkgc2ltaWxhciB0byB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcywgd2l0aG91dCB0aGUgbWV0aG9kcyBhZGRlZCBieSB0aGF0CitjbGFzcywgYW5kIHdpdGggdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY2VydGFpbiBvdGhlciBtZXRob2RzIGJlaW5nIHNsaWdodGx5CitkaWZmZXJlbnQuICBXZSBhbHNvIGRvY3VtZW50IGhlcmUgc29tZSBtZXRob2RzIHRoYXQsIHdoaWxlIHN1cHBvcnRlZCBieSB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcywgYXJlIG5vdCByZWNvbW1lbmRlZCB1bmxlc3MgeW91IGFyZQorZGVhbGluZyB3aXRoIGxlZ2FjeSBjb2RlLgorCitUaGUgcGhpbG9zb3BoeSBhbmQgc3RydWN0dXJlIG9mIHRoZSB0d28gY2xhc3NlcyBpcyBvdGhlcndpc2UgdGhlIHNhbWUuCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBiZWhhdmlvciB1bmRlciB0aGUgZGVmYXVsdCAoZm9yIDpjbGFzczpgTWVzc2FnZWApCitwb2xpY3kgOmF0dHI6YH5lbWFpbC5wb2xpY3kuQ29tcGF0MzJgLiAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgYW5vdGhlciBwb2xpY3ksCit5b3Ugc2hvdWxkIGJlIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaW5zdGVhZC4KKworQW4gZW1haWwgbWVzc2FnZSBjb25zaXN0cyBvZiAqaGVhZGVycyogYW5kIGEgKnBheWxvYWQqLiAgSGVhZGVycyBtdXN0IGJlCis6cmZjOmA1MjMzYCBzdHlsZSBuYW1lcyBhbmQgdmFsdWVzLCB3aGVyZSB0aGUgZmllbGQgbmFtZSBhbmQgdmFsdWUgYXJlCitzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZSBjb2xvbiBpcyBub3QgcGFydCBvZiBlaXRoZXIgdGhlIGZpZWxkIG5hbWUgb3IgdGhlCitmaWVsZCB2YWx1ZS4gIFRoZSBwYXlsb2FkIG1heSBiZSBhIHNpbXBsZSB0ZXh0IG1lc3NhZ2UsIG9yIGEgYmluYXJ5IG9iamVjdCwgb3IKK2Egc3RydWN0dXJlZCBzZXF1ZW5jZSBvZiBzdWItbWVzc2FnZXMgZWFjaCB3aXRoIHRoZWlyIG93biBzZXQgb2YgaGVhZGVycyBhbmQKK3RoZWlyIG93biBwYXlsb2FkLiAgVGhlIGxhdHRlciB0eXBlIG9mIHBheWxvYWQgaXMgaW5kaWNhdGVkIGJ5IHRoZSBtZXNzYWdlCitoYXZpbmcgYSBNSU1FIHR5cGUgc3VjaCBhcyA6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgb3IKKzptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgorCitUaGUgY29uY2VwdHVhbCBtb2RlbCBwcm92aWRlZCBieSBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0IGlzIHRoYXQgb2YgYW4KK29yZGVyZWQgZGljdGlvbmFyeSBvZiBoZWFkZXJzIHdpdGggYWRkaXRpb25hbCBtZXRob2RzIGZvciBhY2Nlc3NpbmcgYm90aAorc3BlY2lhbGl6ZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgaGVhZGVycywgZm9yIGFjY2Vzc2luZyB0aGUgcGF5bG9hZCwgZm9yCitnZW5lcmF0aW5nIGEgc2VyaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBtc3NhZ2UsIGFuZCBmb3IgcmVjdXJzaXZlbHkgd2Fsa2luZyBvdmVyCit0aGUgb2JqZWN0IHRyZWUuICBOb3RlIHRoYXQgZHVwbGljYXRlIGhlYWRlcnMgYXJlIHN1cHBvcnRlZCBidXQgc3BlY2lhbCBtZXRob2RzCittdXN0IGJlIHVzZWQgdG8gYWNjZXNzIHRoZW0uCisKK1RoZSA6Y2xhc3M6YE1lc3NhZ2VgIHBzdWVkby1kaWN0aW9uYXJ5IGlzIGluZGV4ZWQgYnkgdGhlIGhlYWRlciBuYW1lcywgd2hpY2gKK211c3QgYmUgQVNDSUkgdmFsdWVzLiAgVGhlIHZhbHVlcyBvZiB0aGUgZGljdGlvbmFyeSBhcmUgc3RyaW5ncyB0aGF0IGFyZQorc3VwcG9zZWQgdG8gY29udGFpbiBvbmx5IEFTQ0lJIGNoYXJhY3RlcnM7IHRoZXJlIGlzIHNvbWUgc3BlY2lhbCBoYW5kbGluZyBmb3IKK25vbi1BU0NJSSBpbnB1dCwgYnV0IGl0IGRvZXNuJ3QgYWx3YXlzIHByb2R1Y2UgdGhlIGNvcnJlY3QgcmVzdWx0cy4gIEhlYWRlcnMKK2FyZSBzdG9yZWQgYW5kIHJldHVybmVkIGluIGNhc2UtcHJlc2VydmluZyBmb3JtLCBidXQgZmllbGQgbmFtZXMgYXJlIG1hdGNoZWQKK2Nhc2UtaW5zZW5zaXRpdmVseS4gIFRoZXJlIG1heSBhbHNvIGJlIGEgc2luZ2xlIGVudmVsb3BlIGhlYWRlciwgYWxzbyBrbm93biBhcwordGhlICpVbml4LUZyb20qIGhlYWRlciBvciB0aGUgYGBGcm9tX2BgIGhlYWRlci4gIFRoZSAqcGF5bG9hZCogaXMgZWl0aGVyIGEKK3N0cmluZyBvciBieXRlcywgaW4gdGhlIGNhc2Ugb2Ygc2ltcGxlIG1lc3NhZ2Ugb2JqZWN0cywgb3IgYSBsaXN0IG9mCis6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMsIGZvciBNSU1FIGNvbnRhaW5lciBkb2N1bWVudHMgKGUuZy4KKzptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApLgorCitIZXJlIGFyZSB0aGUgbWV0aG9kcyBvZiB0aGUgOmNsYXNzOmBNZXNzYWdlYCBjbGFzczoKKworCisuLiBjbGFzczo6IE1lc3NhZ2UocG9saWN5PWNvbXBhdDMyKQorCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAorICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSBhbmQgc2VyaWFsaXplIHRoZSByZXByZXNlbnRhdGlvbgorICAgb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKKyAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKKyAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBUaGUgKnBvbGljeSoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCisKKworICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49MCwgcG9saWN5PU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgc3RyaW5nLiAgV2hlbiBvcHRpb25hbCAqdW5peGZyb20qCisgICAgICBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZCBzdHJpbmcuCisgICAgICAqdW5peGZyb20qIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4gIEZvciBiYWNrd2FyZCBjb21wYWJpdGlsaXR5IHJlYXNvbnMsCisgICAgICAqbWF4aGVhZGVybGVuKiBkZWZhdWx0cyB0byBgYDBgYCwgc28gaWYgeW91IHdhbnQgYSBkaWZmZXJlbnQgdmFsdWUgeW91CisgICAgICBtdXN0IG92ZXJyaWRlIGl0IGV4cGxpY2l0bHkgKHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yICptYXhfbGluZV9sZW5ndGgqIGluCisgICAgICB0aGUgcG9saWN5IHdpbGwgYmUgaWdub3JlZCBieSB0aGlzIG1ldGhvZCkuICBUaGUgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlCisgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgorICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCisgICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBgR2VuZXJhdG9yYGAuCisKKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgorICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCisgICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCisgICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKKyAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKKyAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCisgICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LiAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvcgorICAgICAgICAgZnAgPSBTdHJpbmdJTygpCisgICAgICAgICBnID0gR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQorICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIG9iamVjdCBjb250YWlucyBiaW5hcnkgZGF0YSB0aGF0IGlzIG5vdCBlbmNvZGVkIGFjY29yZGluZworICAgICAgdG8gUkZDIHN0YW5kYXJkcywgdGhlIG5vbi1jb21wbGlhbnQgZGF0YSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHVuaWNvZGUKKyAgICAgICJ1bmtub3duIGNoYXJhY3RlciIgY29kZSBwb2ludHMuICAoU2VlIGFsc28gOm1ldGg6YC5hc19ieXRlc2AgYW5kCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgLikKKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgdGhlICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fc3RyX18oKQorCisgICAgICBFcXVpdmFsZW50IHRvIDptZXRoOmAuYXNfc3RyaW5nKClgLiAgQWxsb3dzIGBgc3RyKG1zZylgYCB0byBwcm9kdWNlIGEKKyAgICAgIHN0cmluZyBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KKworCisgICAuLiBtZXRob2Q6OiBhc19ieXRlcyh1bml4ZnJvbT1GYWxzZSwgcG9saWN5PU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgYnl0ZXMgb2JqZWN0LiAgV2hlbiBvcHRpb25hbAorICAgICAgKnVuaXhmcm9tKiBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZAorICAgICAgc3RyaW5nLiAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBUaGUgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlCisgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgorICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCisgICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlCisgICAgICBgYEJ5dGVzR2VuZXJhdG9yYGAuCisKKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgorICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCisgICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCisgICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKKyAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKKyAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2UgYW5kIHVzZSBpdHMKKyAgICAgIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4KKyAgICAgIEZvciBleGFtcGxlOjoKKworICAgICAgICAgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTworICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEJ5dGVzR2VuZXJhdG9yCisgICAgICAgICBmcCA9IEJ5dGVzSU8oKQorICAgICAgICAgZyA9IEJ5dGVzR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQorICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisKKyAgIC4uIG1ldGhvZDo6IF9fYnl0ZXNfXygpCisKKyAgICAgIEVxdWl2YWxlbnQgdG8gOm1ldGg6YC5hc19ieXRlcygpYC4gIEFsbG93cyBgYGJ5dGVzKG1zZylgYCB0byBwcm9kdWNlIGEKKyAgICAgIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKworICAgLi4gbWV0aG9kOjogaXNfbXVsdGlwYXJ0KCkKKworICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpcyBhIGxpc3Qgb2Ygc3ViLVwKKyAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgRmFsc2VgYCwgdGhlIHBheWxvYWQgc2hvdWxkIGJlIGEgc3RyaW5nCisgICAgICBvYmplY3QgKHdoaWNoIG1pZ2h0IGJlIGEgQ1RFIGVuY29kZWQgYmluYXJ5IHBheWxvYWQuICAoTm90ZSB0aGF0CisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5pbmcgYGBUcnVlYGAgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0CisgICAgICAibXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCciIHdpbGwgcmV0dXJuIHRoZSBgYFRydWVgYC4KKyAgICAgIEZvciBleGFtcGxlLCBgYGlzX211bHRpcGFydGBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIHdoZW4gdGhlCisgICAgICA6Y2xhc3M6YE1lc3NhZ2VgIGlzIG9mIHR5cGUgYGBtZXNzYWdlL3JmYzgyMmBgLikKKworCisgICAuLiBtZXRob2Q6OiBzZXRfdW5peGZyb20odW5peGZyb20pCisKKyAgICAgIFNldCB0aGUgbWVzc2FnZSdzIGVudmVsb3BlIGhlYWRlciB0byAqdW5peGZyb20qLCB3aGljaCBzaG91bGQgYmUgYSBzdHJpbmcuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3VuaXhmcm9tKCkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyLiAgRGVmYXVsdHMgdG8gYGBOb25lYGAgaWYgdGhlCisgICAgICBlbnZlbG9wZSBoZWFkZXIgd2FzIG5ldmVyIHNldC4KKworCisgICAuLiBtZXRob2Q6OiBhdHRhY2gocGF5bG9hZCkKKworICAgICAgQWRkIHRoZSBnaXZlbiAqcGF5bG9hZCogdG8gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggbXVzdCBiZSBgYE5vbmVgYCBvcgorICAgICAgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBiZWZvcmUgdGhlIGNhbGwuIEFmdGVyIHRoZSBjYWxsLCB0aGUKKyAgICAgIHBheWxvYWQgd2lsbCBhbHdheXMgYmUgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cy4gIElmIHlvdSB3YW50IHRvCisgICAgICBzZXQgdGhlIHBheWxvYWQgdG8gYSBzY2FsYXIgb2JqZWN0IChlLmcuIGEgc3RyaW5nKSwgdXNlCisgICAgICA6bWV0aDpgc2V0X3BheWxvYWRgIGluc3RlYWQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgYW5kIHRoZQorICAgICAgcmVhbHRlZCBgYG1ha2VgYCBhbmQgYGBhZGRgYCBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9wYXlsb2FkKGk9Tm9uZSwgZGVjb2RlPUZhbHNlKQorCisgICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBhIGxpc3Qgb2YKKyAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgVHJ1ZWBgLCBvciBhCisgICAgICBzdHJpbmcgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGAuICBJZiB0aGUgcGF5bG9hZCBpcyBhIGxpc3QKKyAgICAgIGFuZCB5b3UgbXV0YXRlIHRoZSBsaXN0IG9iamVjdCwgeW91IG1vZGlmeSB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaW4gcGxhY2UuCisKKyAgICAgIFdpdGggb3B0aW9uYWwgYXJndW1lbnQgKmkqLCA6bWV0aDpgZ2V0X3BheWxvYWRgIHdpbGwgcmV0dXJuIHRoZSAqaSotdGgKKyAgICAgIGVsZW1lbnQgb2YgdGhlIHBheWxvYWQsIGNvdW50aW5nIGZyb20gemVybywgaWYgOm1ldGg6YGlzX211bHRpcGFydGAgaXMKKyAgICAgIGBgVHJ1ZWBgLiAgQW4gOmV4YzpgSW5kZXhFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzIGxlc3MgdGhhbiAwIG9yCisgICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgcGF5bG9hZC4gIElmIHRoZQorICAgICAgcGF5bG9hZCBpcyBhIHN0cmluZyAoaS5lLiAgOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgKSBhbmQgKmkqIGlzCisgICAgICBnaXZlbiwgYSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgICAgT3B0aW9uYWwgKmRlY29kZSogaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF5bG9hZCBzaG91bGQgYmUKKyAgICAgIGRlY29kZWQgb3Igbm90LCBhY2NvcmRpbmcgdG8gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAorICAgICAgaGVhZGVyLiBXaGVuIGBgVHJ1ZWBgIGFuZCB0aGUgbWVzc2FnZSBpcyBub3QgYSBtdWx0aXBhcnQsIHRoZSBwYXlsb2FkIHdpbGwKKyAgICAgIGJlIGRlY29kZWQgaWYgdGhpcyBoZWFkZXIncyB2YWx1ZSBpcyBgYHF1b3RlZC1wcmludGFibGVgYCBvciBgYGJhc2U2NGBgLgorICAgICAgSWYgc29tZSBvdGhlciBlbmNvZGluZyBpcyB1c2VkLCBvciA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKKyAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcworICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQorICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKKyAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuICBJZiB0aGUgcGF5bG9hZCBpcyBiYXNlNjQgYW5kIGl0IHdhcyBub3QKKyAgICAgIHBlcmZlY3RseSBmb3JtZWQgKG1pc3NpbmcgcGFkZGluZywgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBiYXNlNjQKKyAgICAgIGFscGhhYmV0KSwgdGhlbiBhbiBhcHByb3ByaWF0ZSBkZWZlY3Qgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZSdzCisgICAgICBkZWZlY3QgcHJvcGVydHkgKDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgb3IKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAsIHJlc3BlY3RpdmVseSkuCisKKyAgICAgIFdoZW4gKmRlY29kZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGJvZHkgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcKKyAgICAgIHdpdGhvdXQgZGVjb2RpbmcgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIEhvd2V2ZXIsCisgICAgICBmb3IgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCwgYW4gYXR0ZW1wdCBpcyBtYWRlCisgICAgICB0byBkZWNvZGUgdGhlIG9yaWdpbmFsIGJ5dGVzIHVzaW5nIHRoZSBgYGNoYXJzZXRgYCBzcGVjaWZpZWQgYnkgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHVzaW5nIHRoZSBgYHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyLgorICAgICAgSWYgbm8gYGBjaGFyc2V0YGAgaXMgc3BlY2lmaWVkLCBvciBpZiB0aGUgYGBjaGFyc2V0YGAgZ2l2ZW4gaXMgbm90CisgICAgICByZWNvZ25pemVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB0aGUgYm9keSBpcyBkZWNvZGVkIHVzaW5nIHRoZSBkZWZhdWx0CisgICAgICBBU0NJSSBjaGFyc2V0LgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuZ2V0X2NvbnRlbnRgIGFuZAorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfcGF5bG9hZChwYXlsb2FkLCBjaGFyc2V0PU5vbmUpCisKKyAgICAgIFNldCB0aGUgZW50aXJlIG1lc3NhZ2Ugb2JqZWN0J3MgcGF5bG9hZCB0byAqcGF5bG9hZCouICBJdCBpcyB0aGUgY2xpZW50J3MKKyAgICAgIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGUgcGF5bG9hZCBpbnZhcmlhbnRzLiAgT3B0aW9uYWwgKmNoYXJzZXQqIHNldHMKKyAgICAgIHRoZSBtZXNzYWdlJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0OyBzZWUgOm1ldGg6YHNldF9jaGFyc2V0YCBmb3IgZGV0YWlscy4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfY2hhcnNldChjaGFyc2V0KQorCisgICAgICBTZXQgdGhlIGNoYXJhY3RlciBzZXQgb2YgdGhlIHBheWxvYWQgdG8gKmNoYXJzZXQqLCB3aGljaCBjYW4gZWl0aGVyIGJlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgKHNlZSA6bW9kOmBlbWFpbC5jaGFyc2V0YCksIGEKKyAgICAgIHN0cmluZyBuYW1pbmcgYSBjaGFyYWN0ZXIgc2V0LCBvciBgYE5vbmVgYC4gIElmIGl0IGlzIGEgc3RyaW5nLCBpdCB3aWxsCisgICAgICBiZSBjb252ZXJ0ZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlLiAgSWYgKmNoYXJzZXQqCisgICAgICBpcyBgYE5vbmVgYCwgdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciAodGhlIG1lc3NhZ2Ugd2lsbCBub3QgYmUgb3RoZXJ3aXNlCisgICAgICBtb2RpZmllZCkuICBBbnl0aGluZyBlbHNlIHdpbGwgZ2VuZXJhdGUgYSA6ZXhjOmBUeXBlRXJyb3JgLgorCisgICAgICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXIgb25lIHdpbGwgYmUKKyAgICAgIGFkZGVkLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvbmUKKyAgICAgIHdpbGwgYmUgYWRkZWQgd2l0aCBhIHZhbHVlIG9mIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuICBXaGV0aGVyIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFscmVhZHkgZXhpc3RzIG9yIG5vdCwgaXRzIGBgY2hhcnNldGBgCisgICAgICBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdG8gKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqLiAgIElmCisgICAgICAqY2hhcnNldC5pbnB1dF9jaGFyc2V0KiBhbmQgKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqIGRpZmZlciwgdGhlIHBheWxvYWQKKyAgICAgIHdpbGwgYmUgcmUtZW5jb2RlZCB0byB0aGUgKm91dHB1dF9jaGFyc2V0Ki4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyLCB0aGVuIHRoZSBwYXlsb2FkIHdpbGwgYmUKKyAgICAgIHRyYW5zZmVyLWVuY29kZWQsIGlmIG5lZWRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAorICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCwgYW5kIGEgaGVhZGVyIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbHVlCisgICAgICB3aWxsIGJlIGFkZGVkLiAgSWYgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyCisgICAgICBhbHJlYWR5IGV4aXN0cywgdGhlIHBheWxvYWQgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGNvcnJlY3RseSBlbmNvZGVkCisgICAgICB1c2luZyB0aGF0IDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBhbmQgaXMgbm90IG1vZGlmaWVkLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSAqY2hhcnNldCogcGFyYW1ldGVyIG9mIHRoZQorICAgICAgOm1ldGg6YGVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIG1ldGhvZC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldCgpCisKKyAgICAgIFJldHVybiB0aGUgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICBtZXNzYWdlJ3MgcGF5bG9hZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0IGFsd2F5cyByZXR1cm5zCisgICAgICBgYE5vbmVgYC4KKworCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IGEgbWFwcGluZy1saWtlIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZQorICAgbWVzc2FnZSdzIDpyZmM6YDI4MjJgIGhlYWRlcnMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHNvbWUgc2VtYW50aWMgZGlmZmVyZW5jZXMKKyAgIGJldHdlZW4gdGhlc2UgbWV0aG9kcyBhbmQgYSBub3JtYWwgbWFwcGluZyAoaS5lLiBkaWN0aW9uYXJ5KSBpbnRlcmZhY2UuICBGb3IKKyAgIGV4YW1wbGUsIGluIGEgZGljdGlvbmFyeSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXMsIGJ1dCBoZXJlIHRoZXJlIG1heSBiZQorICAgZHVwbGljYXRlIG1lc3NhZ2UgaGVhZGVycy4gIEFsc28sIGluIGRpY3Rpb25hcmllcyB0aGVyZSBpcyBubyBndWFyYW50ZWVkCisgICBvcmRlciB0byB0aGUga2V5cyByZXR1cm5lZCBieSA6bWV0aDpga2V5c2AsIGJ1dCBpbiBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0LAorICAgaGVhZGVycyBhcmUgYWx3YXlzIHJldHVybmVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZSBvcmlnaW5hbAorICAgbWVzc2FnZSwgb3Igd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBsYXRlci4gIEFueSBoZWFkZXIgZGVsZXRlZCBhbmQgdGhlbgorICAgcmUtYWRkZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBoZWFkZXIgbGlzdC4KKworICAgVGhlc2Ugc2VtYW50aWMgZGlmZmVyZW5jZXMgYXJlIGludGVudGlvbmFsIGFuZCBhcmUgYmlhc2VkIHRvd2FyZCBtYXhpbWFsCisgICBjb252ZW5pZW5jZS4KKworICAgTm90ZSB0aGF0IGluIGFsbCBjYXNlcywgYW55IGVudmVsb3BlIGhlYWRlciBwcmVzZW50IGluIHRoZSBtZXNzYWdlIGlzIG5vdAorICAgaW5jbHVkZWQgaW4gdGhlIG1hcHBpbmcgaW50ZXJmYWNlLgorCisgICBJbiBhIG1vZGVsIGdlbmVyYXRlZCBmcm9tIGJ5dGVzLCBhbnkgaGVhZGVyIHZhbHVlcyB0aGF0IChpbiBjb250cmF2ZW50aW9uIG9mCisgICB0aGUgUkZDcykgY29udGFpbiBub24tQVNDSUkgYnl0ZXMgd2lsbCwgd2hlbiByZXRyaWV2ZWQgdGhyb3VnaCB0aGlzCisgICBpbnRlcmZhY2UsIGJlIHJlcHJlc2VudGVkIGFzIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdHMgd2l0aAorICAgYSBjaGFyc2V0IG9mIGB1bmtub3duLThiaXRgLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fbGVuX18oKQorCisgICAgICBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBoZWFkZXJzLCBpbmNsdWRpbmcgZHVwbGljYXRlcy4KKworCisgICAuLiBtZXRob2Q6OiBfX2NvbnRhaW5zX18obmFtZSkKKworICAgICAgUmV0dXJuIHRydWUgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGhhcyBhIGZpZWxkIG5hbWVkICpuYW1lKi4gTWF0Y2hpbmcgaXMKKyAgICAgIGRvbmUgY2FzZS1pbnNlbnNpdGl2ZWx5IGFuZCAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZyBjb2xvbi4KKyAgICAgIFVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IsIGUuZy46OgorCisgICAgICAgICAgIGlmICdtZXNzYWdlLWlkJyBpbiBteU1lc3NhZ2U6CisgICAgICAgICAgICAgIHByaW50KCdNZXNzYWdlLUlEOicsIG15TWVzc2FnZVsnbWVzc2FnZS1pZCddKQorCisKKyAgIC4uIG1ldGhvZDo6IF9fZ2V0aXRlbV9fKG5hbWUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlCisgICAgICBjb2xvbiBmaWVsZCBzZXBhcmF0b3IuICBJZiB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIGBgTm9uZWBgIGlzIHJldHVybmVkOyBhCisgICAgICA6ZXhjOmBLZXlFcnJvcmAgaXMgbmV2ZXIgcmFpc2VkLgorCisgICAgICBOb3RlIHRoYXQgaWYgdGhlIG5hbWVkIGZpZWxkIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIG1lc3NhZ2UncworICAgICAgaGVhZGVycywgZXhhY3RseSB3aGljaCBvZiB0aG9zZSBmaWVsZCB2YWx1ZXMgd2lsbCBiZSByZXR1cm5lZCBpcworICAgICAgdW5kZWZpbmVkLiAgVXNlIHRoZSA6bWV0aDpgZ2V0X2FsbGAgbWV0aG9kIHRvIGdldCB0aGUgdmFsdWVzIG9mIGFsbCB0aGUKKyAgICAgIGV4dGFudCBuYW1lZCBoZWFkZXJzLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fc2V0aXRlbV9fKG5hbWUsIHZhbCkKKworICAgICAgQWRkIGEgaGVhZGVyIHRvIHRoZSBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSogYW5kIHZhbHVlICp2YWwqLiAgVGhlCisgICAgICBmaWVsZCBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlJ3MgZXhpc3RpbmcgZmllbGRzLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzICpub3QqIG92ZXJ3cml0ZSBvciBkZWxldGUgYW55IGV4aXN0aW5nIGhlYWRlciB3aXRoIHRoZSBzYW1lCisgICAgICBuYW1lLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBoZWFkZXIgaXMgdGhlIG9ubHkgb25lIHByZXNlbnQgaW4gdGhlCisgICAgICBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSosIGRlbGV0ZSB0aGUgZmllbGQgZmlyc3QsIGUuZy46OgorCisgICAgICAgICBkZWwgbXNnWydzdWJqZWN0J10KKyAgICAgICAgIG1zZ1snc3ViamVjdCddID0gJ1B5dGhvbiByb29seiEnCisKKworICAgLi4gbWV0aG9kOjogX19kZWxpdGVtX18obmFtZSkKKworICAgICAgRGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGUgZmllbGQgd2l0aCBuYW1lICpuYW1lKiBmcm9tIHRoZSBtZXNzYWdlJ3MKKyAgICAgIGhlYWRlcnMuICBObyBleGNlcHRpb24gaXMgcmFpc2VkIGlmIHRoZSBuYW1lZCBmaWVsZCBpc24ndCBwcmVzZW50IGluIHRoZQorICAgICAgaGVhZGVycy4KKworCisgICAuLiBtZXRob2Q6OiBrZXlzKCkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIG1lc3NhZ2UncyBoZWFkZXIgZmllbGQgbmFtZXMuCisKKworICAgLi4gbWV0aG9kOjogdmFsdWVzKCkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIG1lc3NhZ2UncyBmaWVsZCB2YWx1ZXMuCisKKworICAgLi4gbWV0aG9kOjogaXRlbXMoKQorCisgICAgICBSZXR1cm4gYSBsaXN0IG9mIDItdHVwbGVzIGNvbnRhaW5pbmcgYWxsIHRoZSBtZXNzYWdlJ3MgZmllbGQgaGVhZGVycyBhbmQKKyAgICAgIHZhbHVlcy4KKworCisgICAuLiBtZXRob2Q6OiBnZXQobmFtZSwgZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICBUaGlzIGlzIGlkZW50aWNhbCB0bworICAgICAgOm1ldGg6YF9fZ2V0aXRlbV9fYCBleGNlcHQgdGhhdCBvcHRpb25hbCAqZmFpbG9iaiogaXMgcmV0dXJuZWQgaWYgdGhlCisgICAgICBuYW1lZCBoZWFkZXIgaXMgbWlzc2luZyAoZGVmYXVsdHMgdG8gYGBOb25lYGApLgorCisgICBIZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdXNlZnVsIG1ldGhvZHM6CisKKworICAgLi4gbWV0aG9kOjogZ2V0X2FsbChuYW1lLCBmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSB2YWx1ZXMgZm9yIHRoZSBmaWVsZCBuYW1lZCAqbmFtZSouIElmIHRoZXJlIGFyZQorICAgICAgbm8gc3VjaCBuYW1lZCBoZWFkZXJzIGluIHRoZSBtZXNzYWdlLCAqZmFpbG9iaiogaXMgcmV0dXJuZWQgKGRlZmF1bHRzIHRvCisgICAgICBgYE5vbmVgYCkuCisKKworICAgLi4gbWV0aG9kOjogYWRkX2hlYWRlcihfbmFtZSwgX3ZhbHVlLCAqKl9wYXJhbXMpCisKKyAgICAgIEV4dGVuZGVkIGhlYWRlciBzZXR0aW5nLiAgVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byA6bWV0aDpgX19zZXRpdGVtX19gCisgICAgICBleGNlcHQgdGhhdCBhZGRpdGlvbmFsIGhlYWRlciBwYXJhbWV0ZXJzIGNhbiBiZSBwcm92aWRlZCBhcyBrZXl3b3JkCisgICAgICBhcmd1bWVudHMuICAqX25hbWUqIGlzIHRoZSBoZWFkZXIgZmllbGQgdG8gYWRkIGFuZCAqX3ZhbHVlKiBpcyB0aGUKKyAgICAgICpwcmltYXJ5KiB2YWx1ZSBmb3IgdGhlIGhlYWRlci4KKworICAgICAgRm9yIGVhY2ggaXRlbSBpbiB0aGUga2V5d29yZCBhcmd1bWVudCBkaWN0aW9uYXJ5ICpfcGFyYW1zKiwgdGhlIGtleSBpcworICAgICAgdGFrZW4gYXMgdGhlIHBhcmFtZXRlciBuYW1lLCB3aXRoIHVuZGVyc2NvcmVzIGNvbnZlcnRlZCB0byBkYXNoZXMgKHNpbmNlCisgICAgICBkYXNoZXMgYXJlIGlsbGVnYWwgaW4gUHl0aG9uIGlkZW50aWZpZXJzKS4gIE5vcm1hbGx5LCB0aGUgcGFyYW1ldGVyIHdpbGwKKyAgICAgIGJlIGFkZGVkIGFzIGBga2V5PSJ2YWx1ZSJgYCB1bmxlc3MgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlCisgICAgICBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4gIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKKyAgICAgIGl0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUgZm9ybWF0CisgICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nIG5hbWluZyB0aGUKKyAgICAgIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuIHVzdWFsbHkgYmUgc2V0CisgICAgICB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyIHBvc3NpYmlsaXRpZXMpLAorICAgICAgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNvZGUgcG9pbnRzLiAgSWYKKyAgICAgIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAorICAgICAgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdCB1c2luZyBhIGBgQ0hBUlNFVGBgCisgICAgICBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorCisgICAgICBIZXJlJ3MgYW4gZXhhbXBsZTo6CisKKyAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLCBmaWxlbmFtZT0nYnVkLmdpZicpCisKKyAgICAgIFRoaXMgd2lsbCBhZGQgYSBoZWFkZXIgdGhhdCBsb29rcyBsaWtlIDo6CisKKyAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJidWQuZ2lmIgorCisgICAgICBBbiBleGFtcGxlIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnM6OgorCisgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSgnaXNvLTg4NTktMScsICcnLCAnRnXDn2JhbGxlci5wcHQnKSkKKworICAgICAgV2hpY2ggcHJvZHVjZXMgOjoKKworICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWUqPSJpc28tODg1OS0xJydGdSVERmJhbGxlci5wcHQiCisKKworICAgLi4gbWV0aG9kOjogcmVwbGFjZV9oZWFkZXIoX25hbWUsIF92YWx1ZSkKKworICAgICAgUmVwbGFjZSBhIGhlYWRlci4gIFJlcGxhY2UgdGhlIGZpcnN0IGhlYWRlciBmb3VuZCBpbiB0aGUgbWVzc2FnZSB0aGF0CisgICAgICBtYXRjaGVzICpfbmFtZSosIHJldGFpbmluZyBoZWFkZXIgb3JkZXIgYW5kIGZpZWxkIG5hbWUgY2FzZS4gIElmIG5vCisgICAgICBtYXRjaGluZyBoZWFkZXIgd2FzIGZvdW5kLCBhIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfdHlwZSgpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQgdHlwZS4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgY29lcmNlZCB0bworICAgICAgbG93ZXIgY2FzZSBvZiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLiAgSWYgdGhlcmUgd2FzIG5vCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaW4gdGhlIG1lc3NhZ2UgdGhlIGRlZmF1bHQgdHlwZSBhcyBnaXZlbgorICAgICAgYnkgOm1ldGg6YGdldF9kZWZhdWx0X3R5cGVgIHdpbGwgYmUgcmV0dXJuZWQuICBTaW5jZSBhY2NvcmRpbmcgdG8KKyAgICAgIDpyZmM6YDIwNDVgLCBtZXNzYWdlcyBhbHdheXMgaGF2ZSBhIGRlZmF1bHQgdHlwZSwgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgCisgICAgICB3aWxsIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS4KKworICAgICAgOnJmYzpgMjA0NWAgZGVmaW5lcyBhIG1lc3NhZ2UncyBkZWZhdWx0IHR5cGUgdG8gYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYAorICAgICAgdW5sZXNzIGl0IGFwcGVhcnMgaW5zaWRlIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXIsIGluCisgICAgICB3aGljaCBjYXNlIGl0IHdvdWxkIGJlIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLiAgSWYgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaGFzIGFuIGludmFsaWQgdHlwZSBzcGVjaWZpY2F0aW9uLAorICAgICAgOnJmYzpgMjA0NWAgbWFuZGF0ZXMgdGhhdCB0aGUgZGVmYXVsdCB0eXBlIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBtYWluIGNvbnRlbnQgdHlwZS4gIFRoaXMgaXMgdGhlIDptaW1ldHlwZTpgbWFpbnR5cGVgCisgICAgICBwYXJ0IG9mIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X3N1YnR5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBzdWItY29udGVudCB0eXBlLiAgVGhpcyBpcyB0aGUgOm1pbWV0eXBlOmBzdWJ0eXBlYAorICAgICAgcGFydCBvZiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IDptZXRoOmBnZXRfY29udGVudF90eXBlYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfZGVmYXVsdF90eXBlKCkKKworICAgICAgUmV0dXJuIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gIE1vc3QgbWVzc2FnZXMgaGF2ZSBhIGRlZmF1bHQgY29udGVudAorICAgICAgdHlwZSBvZiA6bWltZXR5cGU6YHRleHQvcGxhaW5gLCBleGNlcHQgZm9yIG1lc3NhZ2VzIHRoYXQgYXJlIHN1YnBhcnRzIG9mCisgICAgICA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lcnMuICBTdWNoIHN1YnBhcnRzIGhhdmUgYSBkZWZhdWx0CisgICAgICBjb250ZW50IHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X2RlZmF1bHRfdHlwZShjdHlwZSkKKworICAgICAgU2V0IHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gICpjdHlwZSogc2hvdWxkIGVpdGhlciBiZQorICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCwgYWx0aG91Z2ggdGhpcyBpcyBub3QKKyAgICAgIGVuZm9yY2VkLiAgVGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGlzIG5vdCBzdG9yZWQgaW4gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtcyhmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBwYXJhbWV0ZXJzLCBhcyBhIGxpc3QuCisgICAgICBUaGUgZWxlbWVudHMgb2YgdGhlIHJldHVybmVkIGxpc3QgYXJlIDItdHVwbGVzIG9mIGtleS92YWx1ZSBwYWlycywgYXMKKyAgICAgIHNwbGl0IG9uIHRoZSBgYCc9J2BgIHNpZ24uICBUaGUgbGVmdCBoYW5kIHNpZGUgb2YgdGhlIGBgJz0nYGAgaXMgdGhlIGtleSwKKyAgICAgIHdoaWxlIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgdGhlIHZhbHVlLiAgSWYgdGhlcmUgaXMgbm8gYGAnPSdgYCBzaWduIGluCisgICAgICB0aGUgcGFyYW1ldGVyIHRoZSB2YWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBvdGhlcndpc2UgdGhlIHZhbHVlIGlzIGFzCisgICAgICBkZXNjcmliZWQgaW4gOm1ldGg6YGdldF9wYXJhbWAgYW5kIGlzIHVucXVvdGVkIGlmIG9wdGlvbmFsICp1bnF1b3RlKiBpcworICAgICAgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KS4KKworICAgICAgT3B0aW9uYWwgKmZhaWxvYmoqIGlzIHRoZSBvYmplY3QgdG8gcmV0dXJuIGlmIHRoZXJlIGlzIG5vCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBPcHRpb25hbCAqaGVhZGVyKiBpcyB0aGUgaGVhZGVyIHRvCisgICAgICBzZWFyY2ggaW5zdGVhZCBvZiA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgKnBhcmFtcyogcHJvcGVydHkgb2YgdGhlIGluZGl2aWR1YWwgaGVhZGVyIG9iamVjdHMKKyAgICAgIHJldHVybmVkIGJ5IHRoZSBoZWFkZXIgYWNjZXNzIG1ldGhvZHMuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtKHBhcmFtLCBmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIncyBwYXJhbWV0ZXIKKyAgICAgICpwYXJhbSogYXMgYSBzdHJpbmcuICBJZiB0aGUgbWVzc2FnZSBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciBvciBpZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciwgdGhlbiAqZmFpbG9iaiogaXMgcmV0dXJuZWQKKyAgICAgIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCisKKyAgICAgIE9wdGlvbmFsICpoZWFkZXIqIGlmIGdpdmVuLCBzcGVjaWZpZXMgdGhlIG1lc3NhZ2UgaGVhZGVyIHRvIHVzZSBpbnN0ZWFkIG9mCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworICAgICAgUGFyYW1ldGVyIGtleXMgYXJlIGFsd2F5cyBjb21wYXJlZCBjYXNlIGluc2Vuc2l0aXZlbHkuICBUaGUgcmV0dXJuIHZhbHVlCisgICAgICBjYW4gZWl0aGVyIGJlIGEgc3RyaW5nLCBvciBhIDMtdHVwbGUgaWYgdGhlIHBhcmFtZXRlciB3YXMgOnJmYzpgMjIzMWAKKyAgICAgIGVuY29kZWQuICBXaGVuIGl0J3MgYSAzLXR1cGxlLCB0aGUgZWxlbWVudHMgb2YgdGhlIHZhbHVlIGFyZSBvZiB0aGUgZm9ybQorICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLiAgTm90ZSB0aGF0IGJvdGggYGBDSEFSU0VUYGAgYW5kCisgICAgICBgYExBTkdVQUdFYGAgY2FuIGJlIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlIHlvdSBzaG91bGQgY29uc2lkZXIgYGBWQUxVRWBgCisgICAgICB0byBiZSBlbmNvZGVkIGluIHRoZSBgYHVzLWFzY2lpYGAgY2hhcnNldC4gIFlvdSBjYW4gdXN1YWxseSBpZ25vcmUKKyAgICAgIGBgTEFOR1VBR0VgYC4KKworICAgICAgSWYgeW91ciBhcHBsaWNhdGlvbiBkb2Vzbid0IGNhcmUgd2hldGhlciB0aGUgcGFyYW1ldGVyIHdhcyBlbmNvZGVkIGFzIGluCisgICAgICA6cmZjOmAyMjMxYCwgeW91IGNhbiBjb2xsYXBzZSB0aGUgcGFyYW1ldGVyIHZhbHVlIGJ5IGNhbGxpbmcKKyAgICAgIDpmdW5jOmBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlYCwgcGFzc2luZyBpbiB0aGUgcmV0dXJuIHZhbHVlCisgICAgICBmcm9tIDptZXRoOmBnZXRfcGFyYW1gLiAgVGhpcyB3aWxsIHJldHVybiBhIHN1aXRhYmx5IGRlY29kZWQgVW5pY29kZQorICAgICAgc3RyaW5nIHdoZW4gdGhlIHZhbHVlIGlzIGEgdHVwbGUsIG9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgdW5xdW90ZWQgaWYgaXQKKyAgICAgIGlzbid0LiAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICByYXdwYXJhbSA9IG1zZy5nZXRfcGFyYW0oJ2ZvbycpCisgICAgICAgICBwYXJhbSA9IGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWUocmF3cGFyYW0pCisKKyAgICAgIEluIGFueSBjYXNlLCB0aGUgcGFyYW1ldGVyIHZhbHVlIChlaXRoZXIgdGhlIHJldHVybmVkIHN0cmluZywgb3IgdGhlCisgICAgICBgYFZBTFVFYGAgaXRlbSBpbiB0aGUgMy10dXBsZSkgaXMgYWx3YXlzIHVucXVvdGVkLCB1bmxlc3MgKnVucXVvdGUqIGlzIHNldAorICAgICAgdG8gYGBGYWxzZWBgLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSAqcGFyYW1zKiBwcm9wZXJ0eSBvZiB0aGUgaW5kaXZpZHVhbCBoZWFkZXIgb2JqZWN0cworICAgICAgcmV0dXJuZWQgYnkgdGhlIGhlYWRlciBhY2Nlc3MgbWV0aG9kcy4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfcGFyYW0ocGFyYW0sIHZhbHVlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9Tm9uZSwgbGFuZ3VhZ2U9JycsIHJlcGxhY2U9RmFsc2UpCisKKyAgICAgIFNldCBhIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgSWYgdGhlCisgICAgICBwYXJhbWV0ZXIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGhlYWRlciwgaXRzIHZhbHVlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aAorICAgICAgKnZhbHVlKi4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYXMgbm90IHlldCBiZWVuIGRlZmluZWQKKyAgICAgIGZvciB0aGlzIG1lc3NhZ2UsIGl0IHdpbGwgYmUgc2V0IHRvIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgYW5kIHRoZSBuZXcKKyAgICAgIHBhcmFtZXRlciB2YWx1ZSB3aWxsIGJlIGFwcGVuZGVkIGFzIHBlciA6cmZjOmAyMDQ1YC4KKworICAgICAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIGhlYWRlciB0bworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAsIGFuZCBhbGwgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkKKyAgICAgIHVubGVzcyBvcHRpb25hbCAqcmVxdW90ZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuCisKKyAgICAgIElmIG9wdGlvbmFsICpjaGFyc2V0KiBpcyBzcGVjaWZpZWQsIHRoZSBwYXJhbWV0ZXIgd2lsbCBiZSBlbmNvZGVkCisgICAgICBhY2NvcmRpbmcgdG8gOnJmYzpgMjIzMWAuIE9wdGlvbmFsICpsYW5ndWFnZSogc3BlY2lmaWVzIHRoZSBSRkMgMjIzMQorICAgICAgbGFuZ3VhZ2UsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHN0cmluZy4gIEJvdGggKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqCisgICAgICBzaG91bGQgYmUgc3RyaW5ncy4KKworICAgICAgSWYgKnJlcGxhY2UqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBoZWFkZXIgaXMgbW92ZWQgdG8gdGhlCisgICAgICBlbmQgb2YgdGhlIGxpc3Qgb2YgaGVhZGVycy4gIElmICpyZXBsYWNlKiBpcyBgYFRydWVgYCwgdGhlIGhlYWRlcgorICAgICAgd2lsbCBiZSB1cGRhdGVkIGluIHBsYWNlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCBgYHJlcGxhY2VgYCBrZXl3b3JkIHdhcyBhZGRlZC4KKworCisgICAuLiBtZXRob2Q6OiBkZWxfcGFyYW0ocGFyYW0sIGhlYWRlcj0nY29udGVudC10eXBlJywgcmVxdW90ZT1UcnVlKQorCisgICAgICBSZW1vdmUgdGhlIGdpdmVuIHBhcmFtZXRlciBjb21wbGV0ZWx5IGZyb20gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIuICBUaGUgaGVhZGVyIHdpbGwgYmUgcmUtd3JpdHRlbiBpbiBwbGFjZSB3aXRob3V0IHRoZSBwYXJhbWV0ZXIgb3IKKyAgICAgIGl0cyB2YWx1ZS4gIEFsbCB2YWx1ZXMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5IHVubGVzcyAqcmVxdW90ZSogaXMKKyAgICAgIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLiAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuCisgICAgICBhbHRlcm5hdGl2ZSB0byA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfdHlwZSh0eXBlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSkKKworICAgICAgU2V0IHRoZSBtYWluIHR5cGUgYW5kIHN1YnR5cGUgZm9yIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyLiAqdHlwZSogbXVzdCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLAorICAgICAgb3RoZXJ3aXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgorCisgICAgICBUaGlzIG1ldGhvZCByZXBsYWNlcyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBrZWVwaW5nIGFsbAorICAgICAgdGhlIHBhcmFtZXRlcnMgaW4gcGxhY2UuICBJZiAqcmVxdW90ZSogaXMgYGBGYWxzZWBgLCB0aGlzIGxlYXZlcyB0aGUKKyAgICAgIGV4aXN0aW5nIGhlYWRlcidzIHF1b3RpbmcgYXMgaXMsIG90aGVyd2lzZSB0aGUgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZAorICAgICAgKHRoZSBkZWZhdWx0KS4KKworICAgICAgQW4gYWx0ZXJuYXRpdmUgaGVhZGVyIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlICpoZWFkZXIqIGFyZ3VtZW50LiBXaGVuIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIHNldCBhIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gCisgICAgICBoZWFkZXIgaXMgYWxzbyBhZGRlZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgYGBtYWtlX2BgIGFuZCBgYGFkZF9gYCBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9maWxlbmFtZShmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGBgZmlsZW5hbWVgYCBwYXJhbWV0ZXIgb2YgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIG9mIHRoZSBtZXNzYWdlLiAgSWYgdGhlIGhlYWRlcgorICAgICAgZG9lcyBub3QgaGF2ZSBhIGBgZmlsZW5hbWVgYCBwYXJhbWV0ZXIsIHRoaXMgbWV0aG9kIGZhbGxzIGJhY2sgdG8gbG9va2luZworICAgICAgZm9yIHRoZSBgYG5hbWVgYCBwYXJhbWV0ZXIgb24gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIElmCisgICAgICBuZWl0aGVyIGlzIGZvdW5kLCBvciB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIHRoZW4gKmZhaWxvYmoqIGlzIHJldHVybmVkLgorICAgICAgVGhlIHJldHVybmVkIHN0cmluZyB3aWxsIGFsd2F5cyBiZSB1bnF1b3RlZCBhcyBwZXIKKyAgICAgIDpmdW5jOmBlbWFpbC51dGlscy51bnF1b3RlYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfYm91bmRhcnkoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBgYGJvdW5kYXJ5YGAgcGFyYW1ldGVyIG9mIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIG9mIHRoZSBtZXNzYWdlLCBvciAqZmFpbG9iaiogaWYgZWl0aGVyCisgICAgICB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIG9yIGhhcyBubyBgYGJvdW5kYXJ5YGAgcGFyYW1ldGVyLiAgVGhlIHJldHVybmVkCisgICAgICBzdHJpbmcgd2lsbCBhbHdheXMgYmUgdW5xdW90ZWQgYXMgcGVyIDpmdW5jOmBlbWFpbC51dGlscy51bnF1b3RlYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfYm91bmRhcnkoYm91bmRhcnkpCisKKyAgICAgIFNldCB0aGUgYGBib3VuZGFyeWBgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIHRvCisgICAgICAqYm91bmRhcnkqLiAgOm1ldGg6YHNldF9ib3VuZGFyeWAgd2lsbCBhbHdheXMgcXVvdGUgKmJvdW5kYXJ5KiBpZgorICAgICAgbmVjZXNzYXJ5LiAgQSA6ZXhjOmB+ZW1haWwuZXJyb3JzLkhlYWRlclBhcnNlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUKKyAgICAgIG1lc3NhZ2Ugb2JqZWN0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKyAgICAgIE5vdGUgdGhhdCB1c2luZyB0aGlzIG1ldGhvZCBpcyBzdWJ0bHkgZGlmZmVyZW50IHRoYW4gZGVsZXRpbmcgdGhlIG9sZAorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFuZCBhZGRpbmcgYSBuZXcgb25lIHdpdGggdGhlIG5ldworICAgICAgYm91bmRhcnkgdmlhIDptZXRoOmBhZGRfaGVhZGVyYCwgYmVjYXVzZSA6bWV0aDpgc2V0X2JvdW5kYXJ5YCBwcmVzZXJ2ZXMKKyAgICAgIHRoZSBvcmRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBsaXN0IG9mCisgICAgICBoZWFkZXJzLiBIb3dldmVyLCBpdCBkb2VzICpub3QqIHByZXNlcnZlIGFueSBjb250aW51YXRpb24gbGluZXMgd2hpY2ggbWF5CisgICAgICBoYXZlIGJlZW4gcHJlc2VudCBpbiB0aGUgb3JpZ2luYWwgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2NoYXJzZXQoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLAorICAgICAgY29lcmNlZCB0byBsb3dlciBjYXNlLiAgSWYgdGhlcmUgaXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvciBpZgorICAgICAgdGhhdCBoZWFkZXIgaGFzIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgKmZhaWxvYmoqIGlzIHJldHVybmVkLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIDptZXRoOmBnZXRfY2hhcnNldGAgd2hpY2ggcmV0dXJucyB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgZm9yIHRoZSBkZWZhdWx0IGVuY29kaW5nIG9mIHRoZSBtZXNzYWdlIGJvZHkuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXRzKGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXIgc2V0IG5hbWVzIGluIHRoZSBtZXNzYWdlLiAgSWYgdGhlCisgICAgICBtZXNzYWdlIGlzIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCB0aGVuIHRoZSBsaXN0IHdpbGwgY29udGFpbiBvbmUgZWxlbWVudAorICAgICAgZm9yIGVhY2ggc3VicGFydCBpbiB0aGUgcGF5bG9hZCwgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGEgbGlzdCBvZiBsZW5ndGggMS4KKworICAgICAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IHdpbGwgYmUgYSBzdHJpbmcgd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoZQorICAgICAgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgZm9yIHRoZQorICAgICAgcmVwcmVzZW50ZWQgc3VicGFydC4gIEhvd2V2ZXIsIGlmIHRoZSBzdWJwYXJ0IGhhcyBubworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIG9yIGlzIG5vdCBvZgorICAgICAgdGhlIDptaW1ldHlwZTpgdGV4dGAgbWFpbiBNSU1FIHR5cGUsIHRoZW4gdGhhdCBpdGVtIGluIHRoZSByZXR1cm5lZCBsaXN0CisgICAgICB3aWxsIGJlICpmYWlsb2JqKi4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9kaXNwb3NpdGlvbigpCisKKyAgICAgIFJldHVybiB0aGUgbG93ZXJjYXNlZCB2YWx1ZSAod2l0aG91dCBwYXJhbWV0ZXJzKSBvZiB0aGUgbWVzc2FnZSdzCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIGlmIGl0IGhhcyBvbmUsIG9yIGBgTm9uZWBgLiAgVGhlCisgICAgICBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoaXMgbWV0aG9kIGFyZSAqaW5saW5lKiwgKmF0dGFjaG1lbnQqIG9yIGBgTm9uZWBgCisgICAgICBpZiB0aGUgbWVzc2FnZSBmb2xsb3dzIDpyZmM6YDIxODNgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gbWV0aG9kOjogd2FsaygpCisKKyAgICAgIFRoZSA6bWV0aDpgd2Fsa2AgbWV0aG9kIGlzIGFuIGFsbC1wdXJwb3NlIGdlbmVyYXRvciB3aGljaCBjYW4gYmUgdXNlZCB0bworICAgICAgaXRlcmF0ZSBvdmVyIGFsbCB0aGUgcGFydHMgYW5kIHN1YnBhcnRzIG9mIGEgbWVzc2FnZSBvYmplY3QgdHJlZSwgaW4KKyAgICAgIGRlcHRoLWZpcnN0IHRyYXZlcnNhbCBvcmRlci4gIFlvdSB3aWxsIHR5cGljYWxseSB1c2UgOm1ldGg6YHdhbGtgIGFzIHRoZQorICAgICAgaXRlcmF0b3IgaW4gYSBgYGZvcmBgIGxvb3A7IGVhY2ggaXRlcmF0aW9uIHJldHVybnMgdGhlIG5leHQgc3VicGFydC4KKworICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgdGhhdCBwcmludHMgdGhlIE1JTUUgdHlwZSBvZiBldmVyeSBwYXJ0IG9mIGEgbXVsdGlwYXJ0CisgICAgICBtZXNzYWdlIHN0cnVjdHVyZToKKworICAgICAgLi4gdGVzdHNldHVwOjoKKworICAgICAgICAgPj4+IGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZQorICAgICAgICAgPj4+IHdpdGggb3BlbignTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNi50eHQnLCAncmInKSBhcyBmOgorICAgICAgICAgLi4uICAgICBtc2cgPSBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZikKKyAgICAgICAgID4+PiBmcm9tIGVtYWlsLml0ZXJhdG9ycyBpbXBvcnQgX3N0cnVjdHVyZQorCisgICAgICAuLiBkb2N0ZXN0OjoKKworICAgICAgICAgPj4+IGZvciBwYXJ0IGluIG1zZy53YWxrKCk6CisgICAgICAgICAuLi4gICAgIHByaW50KHBhcnQuZ2V0X2NvbnRlbnRfdHlwZSgpKQorICAgICAgICAgbXVsdGlwYXJ0L3JlcG9ydAorICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKyAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIG1lc3NhZ2UvcmZjODIyCisgICAgICAgICB0ZXh0L3BsYWluCisKKyAgICAgIGBgd2Fsa2BgIGl0ZXJhdGVzIG92ZXIgdGhlIHN1YnBhcnRzIG9mIGFueSBwYXJ0IHdoZXJlCisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgVHJ1ZWBgLCBldmVuIHRob3VnaAorICAgICAgYGBtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0J2BgIG1heSByZXR1cm4gYGBGYWxzZWBgLiAgV2UKKyAgICAgIGNhbiBzZWUgdGhpcyBpbiBvdXIgZXhhbXBsZSBieSBtYWtpbmcgdXNlIG9mIHRoZSBgYF9zdHJ1Y3R1cmVgYCBkZWJ1ZworICAgICAgaGVscGVyIGZ1bmN0aW9uOgorCisgICAgICAuLiBkb2N0ZXN0OjoKKworICAgICAgICAgPj4+IGZvciBwYXJ0IGluIG1zZy53YWxrKCk6CisgICAgICAgICAuLi4gICAgIHByaW50KHBhcnQuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyksCisgICAgICAgICAuLi4gICAgICAgICAgIHBhcnQuaXNfbXVsdGlwYXJ0KCkpCisgICAgICAgICBUcnVlIFRydWUKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICBGYWxzZSBUcnVlCisgICAgICAgICBGYWxzZSBGYWxzZQorICAgICAgICAgRmFsc2UgRmFsc2UKKyAgICAgICAgIEZhbHNlIFRydWUKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICA+Pj4gX3N0cnVjdHVyZShtc2cpCisgICAgICAgICBtdWx0aXBhcnQvcmVwb3J0CisgICAgICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9yZmM4MjIKKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisKKyAgICAgIEhlcmUgdGhlIGBgbWVzc2FnZWBgIHBhcnRzIGFyZSBub3QgYGBtdWx0aXBhcnRzYGAsIGJ1dCB0aGV5IGRvIGNvbnRhaW4KKyAgICAgIHN1YnBhcnRzLiBgYGlzX211bHRpcGFydCgpYGAgcmV0dXJucyBgYFRydWVgYCBhbmQgYGB3YWxrYGAgZGVzY2VuZHMKKyAgICAgIGludG8gdGhlIHN1YnBhcnRzLgorCisKKyAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBjYW4gYWxzbyBvcHRpb25hbGx5IGNvbnRhaW4gdHdvIGluc3RhbmNlIGF0dHJpYnV0ZXMsCisgICB3aGljaCBjYW4gYmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHBsYWluIHRleHQgb2YgYSBNSU1FIG1lc3NhZ2UuCisKKworICAgLi4gYXR0cmlidXRlOjogcHJlYW1ibGUKKworICAgICAgVGhlIGZvcm1hdCBvZiBhIE1JTUUgZG9jdW1lbnQgYWxsb3dzIGZvciBzb21lIHRleHQgYmV0d2VlbiB0aGUgYmxhbmsgbGluZQorICAgICAgZm9sbG93aW5nIHRoZSBoZWFkZXJzLCBhbmQgdGhlIGZpcnN0IG11bHRpcGFydCBib3VuZGFyeSBzdHJpbmcuIE5vcm1hbGx5LAorICAgICAgdGhpcyB0ZXh0IGlzIG5ldmVyIHZpc2libGUgaW4gYSBNSU1FLWF3YXJlIG1haWwgcmVhZGVyIGJlY2F1c2UgaXQgZmFsbHMKKyAgICAgIG91dHNpZGUgdGhlIHN0YW5kYXJkIE1JTUUgYXJtb3IuICBIb3dldmVyLCB3aGVuIHZpZXdpbmcgdGhlIHJhdyB0ZXh0IG9mCisgICAgICB0aGUgbWVzc2FnZSwgb3Igd2hlbiB2aWV3aW5nIHRoZSBtZXNzYWdlIGluIGEgbm9uLU1JTUUgYXdhcmUgcmVhZGVyLCB0aGlzCisgICAgICB0ZXh0IGNhbiBiZWNvbWUgdmlzaWJsZS4KKworICAgICAgVGhlICpwcmVhbWJsZSogYXR0cmlidXRlIGNvbnRhaW5zIHRoaXMgbGVhZGluZyBleHRyYS1hcm1vciB0ZXh0IGZvciBNSU1FCisgICAgICBkb2N1bWVudHMuICBXaGVuIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBkaXNjb3ZlcnMgc29tZSB0ZXh0CisgICAgICBhZnRlciB0aGUgaGVhZGVycyBidXQgYmVmb3JlIHRoZSBmaXJzdCBib3VuZGFyeSBzdHJpbmcsIGl0IGFzc2lnbnMgdGhpcworICAgICAgdGV4dCB0byB0aGUgbWVzc2FnZSdzICpwcmVhbWJsZSogYXR0cmlidXRlLiAgV2hlbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGlzIHdyaXRpbmcgb3V0IHRoZSBwbGFpbiB0ZXh0CisgICAgICByZXByZXNlbnRhdGlvbiBvZiBhIE1JTUUgbWVzc2FnZSwgYW5kIGl0IGZpbmRzIHRoZQorICAgICAgbWVzc2FnZSBoYXMgYSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSwgaXQgd2lsbCB3cml0ZSB0aGlzIHRleHQgaW4gdGhlIGFyZWEKKyAgICAgIGJldHdlZW4gdGhlIGhlYWRlcnMgYW5kIHRoZSBmaXJzdCBib3VuZGFyeS4gIFNlZSA6bW9kOmBlbWFpbC5wYXJzZXJgIGFuZAorICAgICAgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBmb3IgZGV0YWlscy4KKworICAgICAgTm90ZSB0aGF0IGlmIHRoZSBtZXNzYWdlIG9iamVjdCBoYXMgbm8gcHJlYW1ibGUsIHRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZQorICAgICAgd2lsbCBiZSBgYE5vbmVgYC4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBlcGlsb2d1ZQorCisgICAgICBUaGUgKmVwaWxvZ3VlKiBhdHRyaWJ1dGUgYWN0cyB0aGUgc2FtZSB3YXkgYXMgdGhlICpwcmVhbWJsZSogYXR0cmlidXRlLAorICAgICAgZXhjZXB0IHRoYXQgaXQgY29udGFpbnMgdGV4dCB0aGF0IGFwcGVhcnMgYmV0d2VlbiB0aGUgbGFzdCBib3VuZGFyeSBhbmQKKyAgICAgIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UuCisKKyAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIGVwaWxvZ3VlIHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gb3JkZXIgZm9yIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgdG8gcHJpbnQgYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICBmaWxlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRlZmVjdHMKKworICAgICAgVGhlICpkZWZlY3RzKiBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIGFsbCB0aGUgcHJvYmxlbXMgZm91bmQgd2hlbgorICAgICAgcGFyc2luZyB0aGlzIG1lc3NhZ2UuICBTZWUgOm1vZDpgZW1haWwuZXJyb3JzYCBmb3IgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbgorICAgICAgb2YgdGhlIHBvc3NpYmxlIHBhcnNpbmcgZGVmZWN0cy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdAppbmRleCBhOWMwNzhiLi41Nzc0M2Q1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5jb250ZW50bWFuYWdlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuY29udGVudG1hbmFnZXIucnN0CkBAIC03LDI1MSArNywxMiBAQAogLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuNAotICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0KICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5YAogCi0uLiBub3RlOjoKKy0tLS0tLS0tLS0tLQogCi0gICBUaGUgY29udGVudG1hbmFnZXIgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKLSAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCi0gICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIG1vZHVsZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAotICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSA6bW9kOmB+ZW1haWwubWVzc2FnZWAgbW9kdWxlIHByb3ZpZGVzIGEgY2xhc3MgdGhhdCBjYW4gcmVwcmVzZW50IGFuCi1hcmJpdHJhcnkgZW1haWwgbWVzc2FnZS4gIFRoYXQgYmFzaWMgbWVzc2FnZSBtb2RlbCBoYXMgYSB1c2VmdWwgYW5kIGZsZXhpYmxlCi1BUEksIGJ1dCBpdCBwcm92aWRlcyBvbmx5IGEgbG93ZXItbGV2ZWwgQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBnZW5lcmljCi1wYXJ0cyBvZiBhIG1lc3NhZ2UgKHRoZSBoZWFkZXJzLCBnZW5lcmljIGhlYWRlciBwYXJhbWV0ZXJzLCBhbmQgdGhlIHBheWxvYWQsCi13aGljaCBtYXkgYmUgYSBsaXN0IG9mIHN1Yi1wYXJ0cykuICBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCB0b29scwotdGhhdCBwcm92aWRlIGFuIGVuaGFuY2VkIGFuZCBleHRlbnNpYmxlIEFQSSBmb3IgZGVhbGluZyB3aXRoIHZhcmlvdXMgc3BlY2lmaWMKLXR5cGVzIG9mIGNvbnRlbnQsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byByZXRyaWV2ZSB0aGUgY29udGVudCBvZiB0aGUgbWVzc2FnZQotYXMgYSBzcGVjaWFsaXplZCBvYmplY3QgdHlwZSByYXRoZXIgdGhhbiBhcyBhIHNpbXBsZSBieXRlcyBvYmplY3QuICBUaGUgbW9kdWxlCi1hdXRvbWF0aWNhbGx5IHRha2VzIGNhcmUgb2YgdGhlIFJGQy1zcGVjaWZpZWQgTUlNRSBkZXRhaWxzIChyZXF1aXJlZCBoZWFkZXJzCi1hbmQgcGFyYW1ldGVycywgZXRjLikgZm9yIHRoZSBjZXJ0YWluIGNvbW1vbiBjb250ZW50IHR5cGVzIGNvbnRlbnQgcHJvcGVydGllcywKLWFuZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIHR5cGVzIGNhbiBiZSBhZGRlZCBieSBhbiBhcHBsaWNhdGlvbiB1c2luZyB0aGUKLWV4dGVuc2lvbiBtZWNoYW5pc21zLgotCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBlcG9ueW1vdXMgIkNvbnRlbnQgTWFuYWdlciIgY2xhc3Nlcy4gIFRoZSBiYXNlCi06Y2xhc3M6YC5Db250ZW50TWFuYWdlcmAgY2xhc3MgZGVmaW5lcyBhbiBBUEkgZm9yIHJlZ2lzdGVyaW5nIGNvbnRlbnQKLW1hbmFnZW1lbnQgZnVuY3Rpb25zIHdoaWNoIGV4dHJhY3QgZGF0YSBmcm9tIGBgTWVzc2FnZWBgIG9iamVjdHMgb3IgaW5zZXJ0IGRhdGEKLWFuZCBoZWFkZXJzIGludG8gYGBNZXNzYWdlYGAgb2JqZWN0cywgdGh1cyBwcm92aWRpbmcgYSB3YXkgb2YgY29udmVydGluZwotYmV0d2VlbiBgYE1lc3NhZ2VgYCBvYmplY3RzIGNvbnRhaW5pbmcgZGF0YSBhbmQgb3RoZXIgcmVwcmVzZW50YXRpb25zIG9mIHRoYXQKLWRhdGEgKFB5dGhvbiBkYXRhIHR5cGVzLCBzcGVjaWFsaXplZCBQeXRob24gb2JqZWN0cywgZXh0ZXJuYWwgZmlsZXMsIGV0YykuICBUaGUKLW1vZHVsZSBhbHNvIGRlZmluZXMgb25lIGNvbmNyZXRlIGNvbnRlbnQgbWFuYWdlcjogOmRhdGE6YHJhd19kYXRhX21hbmFnZXJgCi1jb252ZXJ0cyBiZXR3ZWVuIE1JTUUgY29udGVudCB0eXBlcyBhbmQgYGBzdHJgYCBvciBgYGJ5dGVzYGAgZGF0YS4gIEl0IGFsc28KLXByb3ZpZGVzIGEgY29udmVuaWVudCBBUEkgZm9yIG1hbmFnaW5nIHRoZSBNSU1FIHBhcmFtZXRlcnMgd2hlbiBpbnNlcnRpbmcKLWNvbnRlbnQgaW50byBgYE1lc3NhZ2VgYFwgcy4gIEl0IGFsc28gaGFuZGxlcyBpbnNlcnRpbmcgYW5kIGV4dHJhY3RpbmcKLWBgTWVzc2FnZWBgIG9iamVjdHMgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGBgbWVzc2FnZS9yZmM4MjJgYCBjb250ZW50IHR5cGUuCi0KLUFub3RoZXIgcGFydCBvZiB0aGUgZW5oYW5jZWQgaW50ZXJmYWNlIGlzIHN1YmNsYXNzZXMgb2YKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgdGhhdCBwcm92aWRlIG5ldyBjb252ZW5pZW5jZSBBUEkgZnVuY3Rpb25zLAotaW5jbHVkaW5nIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGNhbGxpbmcgdGhlIENvbnRlbnQgTWFuYWdlcnMgZGVyaXZlZCBmcm9tCi10aGlzIG1vZHVsZS4KLQotLi4gbm90ZTo6Ci0KLSAgIEFsdGhvdWdoIDpjbGFzczpgLkVtYWlsTWVzc2FnZWAgYW5kIDpjbGFzczpgLk1JTUVQYXJ0YCBhcmUgY3VycmVudGx5Ci0gICBkb2N1bWVudGVkIGluIHRoaXMgbW9kdWxlIGJlY2F1c2Ugb2YgdGhlIHByb3Zpc2lvbmFsIG5hdHVyZSBvZiB0aGUgY29kZSwgdGhlCi0gICBpbXBsZW1lbnRhdGlvbiBsaXZlcyBpbiB0aGUgOm1vZDpgZW1haWwubWVzc2FnZWAgbW9kdWxlLgotCi0uLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWVzc2FnZQotCi0uLiBjbGFzczo6IEVtYWlsTWVzc2FnZShwb2xpY3k9ZGVmYXVsdCkKLQotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1ZHBhdGUgYW5kIHNlcmlhbGl6ZSB0aGUgcmVwcmVzZW50YXRpb24KLSAgIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZQotICAgOmNsYXNzOmB+ZW1haWwucG9saWN5LmRlZmF1bHRgIHBvbGljeSwgd2hpY2ggZm9sbG93cyB0aGUgcnVsZXMgb2YgdGhlIGVtYWlsCi0gICBSRkNzIGV4Y2VwdCBmb3IgbGluZSBlbmRpbmdzIChpbnN0ZWFkIG9mIHRoZSBSRkMgbWFuZGF0ZWQgYGBcclxuYGAsIGl0IHVzZXMKLSAgIHRoZSBQeXRob24gc3RhbmRhcmQgYGBcbmBgIGxpbmUgZW5kaW5ncykuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgotCi0gICBUaGlzIGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYC4gIEl0IGFkZHMKLSAgIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotCi0gICAuLiBtZXRob2Q6OiBpc19hdHRhY2htZW50Ci0KLSAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGVyZSBpcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIKLSAgICAgIGFuZCBpdHMgKGNhc2UgaW5zZW5zaXRpdmUpIHZhbHVlIGlzIGBgYXR0YWNobWVudGBgLCBgYEZhbHNlYGAgb3RoZXJ3aXNlLgotCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4yCi0gICAgICAgICBpc19hdHRhY2htZW50IGlzIG5vdyBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgcHJvcGVydHksIGZvciBjb25zaXN0ZW5jeQotICAgICAgICAgd2l0aCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9ib2R5KHByZWZlcmVuY2VsaXN0PSgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJykpCi0KLSAgICAgIFJldHVybiB0aGUgTUlNRSBwYXJ0IHRoYXQgaXMgdGhlIGJlc3QgY2FuZGlkYXRlIHRvIGJlIHRoZSAiYm9keSIgb2YgdGhlCi0gICAgICBtZXNzYWdlLgotCi0gICAgICAqcHJlZmVyZW5jZWxpc3QqIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGZyb20gdGhlIHNldCBgYHJlbGF0ZWRgYCwKLSAgICAgIGBgaHRtbGBgLCBhbmQgYGBwbGFpbmBgLCBhbmQgaW5kaWNhdGVzIHRoZSBvcmRlciBvZiBwcmVmZXJlbmNlIGZvciB0aGUKLSAgICAgIGNvbnRlbnQgdHlwZSBvZiB0aGUgcGFydCByZXR1cm5lZC4KLQotICAgICAgU3RhcnQgbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZQotICAgICAgYGBnZXRfYm9keWBgIG1ldGhvZCBpcyBjYWxsZWQuCi0KLSAgICAgIElmIGBgcmVsYXRlZGBgIGlzIG5vdCBpbmNsdWRlZCBpbiAqcHJlZmVyZW5jZWxpc3QqLCBjb25zaWRlciB0aGUgcm9vdAotICAgICAgcGFydCAob3Igc3VicGFydCBvZiB0aGUgcm9vdCBwYXJ0KSBvZiBhbnkgcmVsYXRlZCBlbmNvdW50ZXJlZCBhcyBhCi0gICAgICBjYW5kaWRhdGUgaWYgdGhlIChzdWItKXBhcnQgbWF0Y2hlcyBhIHByZWZlcmVuY2UuCi0KLSAgICAgIFdoZW4gZW5jb3VudGVyaW5nIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjaGVjayB0aGUgYGBzdGFydGBgIHBhcmFtZXRlcgotICAgICAgYW5kIGlmIGEgcGFydCB3aXRoIGEgbWF0Y2hpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIGlzIGZvdW5kLCBjb25zaWRlcgotICAgICAgb25seSBpdCB3aGVuIGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzLiAgT3RoZXJ3aXNlIGNvbnNpZGVyIG9ubHkgdGhlCi0gICAgICBmaXJzdCAoZGVmYXVsdCByb290KSBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydC9yZWxhdGVkYGAuCi0KLSAgICAgIElmIGEgcGFydCBoYXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBvbmx5IGNvbnNpZGVyCi0gICAgICB0aGUgcGFydCBhIGNhbmRpZGF0ZSBtYXRjaCBpZiB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBpcyBgYGlubGluZWBgLgotCi0gICAgICBJZiBub25lIG9mIHRoZSBjYW5kaWRhdGVzIG1hdGNoZXMgYW55IG9mIHRoZSBwcmVmZXJlbmNlcyBpbgotICAgICAgKnByZWZlcm5lY2xpc3QqLCByZXR1cm4gYGBOb25lYGAuCi0KLSAgICAgIE5vdGVzOiAoMSkgRm9yIG1vc3QgYXBwbGljYXRpb25zIHRoZSBvbmx5ICpwcmVmZXJlbmNlbGlzdCogY29tYmluYXRpb25zCi0gICAgICB0aGF0IHJlYWxseSBtYWtlIHNlbnNlIGFyZSBgYCgncGxhaW4nLClgYCwgYGAoJ2h0bWwnLCAncGxhaW4nKWBgLCBhbmQgdGhlCi0gICAgICBkZWZhdWx0LCBgYCgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJylgYC4gICgyKSBCZWNhdXNlIG1hdGNoaW5nIHN0YXJ0cwotICAgICAgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIGBgZ2V0X2JvZHlgYCBpcyBjYWxsZWQsIGNhbGxpbmcgYGBnZXRfYm9keWBgIG9uCi0gICAgICBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCB3aWxsIHJldHVybiB0aGUgb2JqZWN0IGl0c2VsZiB1bmxlc3MKLSAgICAgICpwcmVmZXJlbmNlbGlzdCogaGFzIGEgbm9uLWRlZmF1bHQgdmFsdWUuICgzKSBNZXNzYWdlcyAob3IgbWVzc2FnZSBwYXJ0cykKLSAgICAgIHRoYXQgZG8gbm90IHNwZWNpZnkgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBvciB3aG9zZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIGludmFsaWQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkKLSAgICAgIGFyZSBvZiB0eXBlIGBgdGV4dC9wbGFpbmBgLCB3aGljaCBtYXkgb2NjYXNpb25hbGx5IGNhdXNlIGBgZ2V0X2JvZHlgYCB0bwotICAgICAgcmV0dXJuIHVuZXhwZWN0ZWQgcmVzdWx0cy4KLQotCi0gICAuLiBtZXRob2Q6OiBpdGVyX2F0dGFjaG1lbnRzKCkKLQotICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBwYXJ0cyBvZiB0aGUgbWVzc2FnZSB0aGF0IGFyZSBub3QKLSAgICAgIGNhbmRpZGF0ZSAiYm9keSIgcGFydHMuICBUaGF0IGlzLCBza2lwIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggb2YKLSAgICAgIGBgdGV4dC9wbGFpbmBgLCBgYHRleHQvaHRtbGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCi0gICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgICh1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSBtYXJrZWQgYXMKLSAgICAgIGF0dGFjaG1lbnRzIHZpYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGApLCBhbmQKLSAgICAgIHJldHVybiBhbGwgcmVtYWluaW5nIHBhcnRzLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEKLSAgICAgIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgcmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGFsbCB0aGUgcmVsYXRlZCBwYXJ0cwotICAgICAgZXhjZXB0IHRoZSByb290IHBhcnQgKGllOiB0aGUgcGFydCBwb2ludGVkIHRvIGJ5IHRoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyLAotICAgICAgb3IgdGhlIGZpcnN0IHBhcnQgaWYgdGhlcmUgaXMgbm8gYGBzdGFydGBgIHBhcmFtZXRlciBvciB0aGUgYGBzdGFydGBgCi0gICAgICBwYXJhbWV0ZXIgZG9lc24ndCBtYXRjaCB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIG9mIGFueSBvZiB0aGUKLSAgICAgIHBhcnRzKS4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgb3IgYQotICAgICAgbm9uLWBgbXVsdGlwYXJ0YGAsIHJldHVybiBhbiBlbXB0eSBpdGVyYXRvci4KLQotCi0gICAuLiBtZXRob2Q6OiBpdGVyX3BhcnRzKCkKLQotICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBpbW1lZGlhdGUgc3ViLXBhcnRzIG9mIHRoZSBtZXNzYWdlLAotICAgICAgd2hpY2ggd2lsbCBiZSBlbXB0eSBmb3IgYSBub24tYGBtdWx0aXBhcnRgYC4gIChTZWUgYWxzbwotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLndhbGtgLikKLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIENhbGwgdGhlIGBgZ2V0X2NvbnRlbnRgYCBtZXRob2Qgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYKLSAgICAgIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcwotICAgICAgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKLSAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBzZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIENhbGwgdGhlIGBgc2V0X2NvbnRlbnRgYCBtZXRob2Qgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYKLSAgICAgIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcwotICAgICAgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKLSAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBtYWtlX3JlbGF0ZWQoYm91bmRhcnk9Tm9uZSkKLQotICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG1lc3NhZ2UgaW50byBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBtZXNzYWdlLAotICAgICAgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhCi0gICAgICAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZQotICAgICAgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5Ci0gICAgICB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZQotICAgICAgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KLQotCi0gICAuLiBtZXRob2Q6OiBtYWtlX2FsdGVybmF0aXZlKGJvdW5kYXJ5PU5vbmUpCi0KLSAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBvciBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBpbnRvIGEKLSAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYAotICAgICAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCi0gICAgICAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwKLSAgICAgIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMKLSAgICAgIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCi0KLQotICAgLi4gbWV0aG9kOjogbWFrZV9taXhlZChib3VuZGFyeT1Ob25lKQotCi0gICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvciBhCi0gICAgICBgYG11bHRpcGFydC1hbHRlcm5hdGl2ZWBgIGludG8gYSBgYG11bHRpcGFydC9taXhlZGBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlCi0gICAgICBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nCi0gICAgICBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkKLSAgICAgIGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgotCi0KLSAgIC4uIG1ldGhvZDo6IGFkZF9yZWxhdGVkKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCi0gICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLAotICAgICAgYW5kIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgotICAgICAgdGhlIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgY2FsbCA6bWV0aDpgbWFrZV9yZWxhdGVkYCBhbmQgdGhlbgotICAgICAgcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsCi0gICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQotICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgotICAgICAgSWYgdGhlIGFkZGVkIHBhcnQgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsCi0gICAgICBhZGQgb25lIHdpdGggdGhlIHZhbHVlIGBgaW5saW5lYGAuCi0KLQotICAgLi4gbWV0aG9kOjogYWRkX2FsdGVybmF0aXZlKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQotICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCi0gICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjYWxsCi0gICAgICA6bWV0aDpgbWFrZV9hbHRlcm5hdGl2ZWAgYW5kIHRoZW4gcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzCi0gICAgICBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmCi0gICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCi0gICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBhZGRfYXR0YWNobWVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0LAotICAgICAgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQotICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCi0gICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjYWxsIDptZXRoOmBtYWtlX21peGVkYCBhbmQgdGhlbiBwcm9jZWVkIGFzCi0gICAgICBhYm92ZS4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgCi0gICAgICBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuICBJZiB0aGUgYWRkZWQgcGFydAotICAgICAgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUKLSAgICAgIGBgYXR0YWNobWVudGBgLiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgYm90aCBmb3IgZXhwbGljaXQgYXR0YWNobWVudHMKLSAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGAgYW5kIGBgaW5saW5lYGAgYXR0YWNobWVudHMKLSAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lYCksIGJ5IHBhc3NpbmcgYXBwcm9wcmlhdGUKLSAgICAgIG9wdGlvbnMgdG8gdGhlIGBgY29udGVudF9tYW5hZ2VyYGAuCi0KLQotICAgLi4gbWV0aG9kOjogY2xlYXIoKQotCi0gICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgaGVhZGVycy4KLQotCi0gICAuLiBtZXRob2Q6OiBjbGVhcl9jb250ZW50KCkKLQotICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIDpleGM6YENvbnRlbnQtYCBoZWFkZXJzLCBsZWF2aW5nCi0gICAgICBhbGwgb3RoZXIgaGVhZGVycyBpbnRhY3QgYW5kIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLgotCi0KLS4uIGNsYXNzOjogTUlNRVBhcnQocG9saWN5PWRlZmF1bHQpCi0KLSAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzdWJwYXJ0IG9mIGEgTUlNRSBtZXNzYWdlLiAgSXQgaXMgaWRlbnRpY2FsIHRvCi0gICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgLCBleGNlcHQgdGhhdCBubyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzIGFyZQotICAgIGFkZGVkIHdoZW4gOm1ldGg6YH5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGlzIGNhbGxlZCwgc2luY2Ugc3ViLXBhcnRzIGRvCi0gICAgbm90IG5lZWQgdGhlaXIgb3duIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMuCi0KKy4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCiAKLS4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5jb250ZW50bWFuYWdlcgogCiAuLiBjbGFzczo6IENvbnRlbnRNYW5hZ2VyKCkKIApAQCAtMzYyLDcgKzEyMyw3IEBACiAgICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnYnl0ZXMnPiwgbWFpbnR5cGUsIHN1YnR5cGUsIGN0ZT0iYmFzZTY0IiwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zaXRpb249Tm9uZSwgZmlsZW5hbWU9Tm9uZSwgY2lkPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUpCi0gICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnTWVzc2FnZSc+LCBjdGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgc2V0X2NvbnRlbnQobXNnLCA8J0VtYWlsTWVzc2FnZSc+LCBjdGU9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zaXRpb249Tm9uZSwgZmlsZW5hbWU9Tm9uZSwgY2lkPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUpCiAgICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnbGlzdCc+LCBzdWJ0eXBlPSdtaXhlZCcsIFwKQEAgLTM3OCwxNCArMTM5LDE0IEBACiAgICAgICAgICAgICAgc3VidHlwZSB0byAqc3VidHlwZSogaWYgaXQgaXMgc3BlY2lmaWVkLCBvciBgYHBsYWluYGAgaWYgaXQgaXMgbm90LgogICAgICAgICAgICAqIEZvciBgYGJ5dGVzYGAsIHVzZSB0aGUgc3BlY2lmaWVkICptYWludHlwZSogYW5kICpzdWJ0eXBlKiwgb3IKICAgICAgICAgICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgaWYgdGhleSBhcmUgbm90IHNwZWNpZmllZC4KLSAgICAgICAgICAgKiBGb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIG1haW50eXBlIHRvCi0gICAgICAgICAgICAgYGBtZXNzYWdlYGAsIGFuZCBzZXQgdGhlIHN1YnR5cGUgdG8gKnN1YnR5cGUqIGlmIGl0IGlzIHNwZWNpZmllZAotICAgICAgICAgICAgIG9yIGBgcmZjODIyYGAgaWYgaXQgaXMgbm90LiAgSWYgKnN1YnR5cGUqIGlzIGBgcGFydGlhbGBgLCByYWlzZSBhbgotICAgICAgICAgICAgIGVycm9yIChgYGJ5dGVzYGAgb2JqZWN0cyBtdXN0IGJlIHVzZWQgdG8gY29uc3RydWN0Ci0gICAgICAgICAgICAgYGBtZXNzYWdlL3BhcnRpYWxgYCBwYXJ0cykuCisgICAgICAgICAgICogRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIG1haW50eXBlCisgICAgICAgICAgICAgdG8gYGBtZXNzYWdlYGAsIGFuZCBzZXQgdGhlIHN1YnR5cGUgdG8gKnN1YnR5cGUqIGlmIGl0IGlzCisgICAgICAgICAgICAgc3BlY2lmaWVkIG9yIGBgcmZjODIyYGAgaWYgaXQgaXMgbm90LiAgSWYgKnN1YnR5cGUqIGlzCisgICAgICAgICAgICAgYGBwYXJ0aWFsYGAsIHJhaXNlIGFuIGVycm9yIChgYGJ5dGVzYGAgb2JqZWN0cyBtdXN0IGJlIHVzZWQgdG8KKyAgICAgICAgICAgICBjb25zdHJ1Y3QgYGBtZXNzYWdlL3BhcnRpYWxgYCBwYXJ0cykuCiAgICAgICAgICAgICogRm9yICo8J2xpc3QnPiosIHdoaWNoIHNob3VsZCBiZSBhIGxpc3Qgb2YKLSAgICAgICAgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMsIHNldCB0aGUgYGBtYWludHlwZWBgIHRvCi0gICAgICAgICAgICAgYGBtdWx0aXBhcnRgYCwgYW5kIHRoZSBgYHN1YnR5cGVgYCB0byAqc3VidHlwZSogaWYgaXQgaXMKKyAgICAgICAgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0cywgc2V0IHRoZSBgYG1haW50eXBlYGAKKyAgICAgICAgICAgICB0byBgYG11bHRpcGFydGBgLCBhbmQgdGhlIGBgc3VidHlwZWBgIHRvICpzdWJ0eXBlKiBpZiBpdCBpcwogICAgICAgICAgICAgIHNwZWNpZmllZCwgYW5kIGBgbWl4ZWRgYCBpZiBpdCBpcyBub3QuICBJZiB0aGUgbWVzc2FnZSBwYXJ0cyBpbgogICAgICAgICAgICAgIHRoZSAqPCdsaXN0Jz4qIGhhdmUgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycywgcmVtb3ZlCiAgICAgICAgICAgICAgdGhlbS4KQEAgLTM5NywzMiArMTU4LDM1IEBACiAKICAgICAgICBJZiAqY3RlKiBpcyBzZXQsIGVuY29kZSB0aGUgcGF5bG9hZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgdHJhbnNmZXIKICAgICAgICBlbmNvZGluZywgYW5kIHNldCB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5kY29kaW5nYCBoZWFkZXIgdG8KLSAgICAgICB0aGF0IHZhbHVlLiAgRm9yIGBgc3RyYGAgb2JqZWN0cywgaWYgaXQgaXMgbm90IHNldCB1c2UgaGV1cmlzdGljcyB0bwotICAgICAgIGRldGVybWluZSB0aGUgbW9zdCBjb21wYWN0IGVuY29kaW5nLiAgUG9zc2libGUgdmFsdWVzIGZvciAqY3RlKiBhcmUKLSAgICAgICBgYHF1b3RlZC1wcmludGFibGVgYCwgYGBiYXNlNjRgYCwgYGA3Yml0YGAsIGBgOGJpdGBgLCBhbmQgYGBiaW5hcnlgYC4KLSAgICAgICBJZiB0aGUgaW5wdXQgY2Fubm90IGJlIGVuY29kZWQgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyAoZWc6IGBgN2JpdGBgKSwKLSAgICAgICByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLiAgRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAsIHBlcgotICAgICAgIDpyZmM6YDIwNDZgLCByYWlzZSBhbiBlcnJvciBpZiBhICpjdGUqIG9mIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yCi0gICAgICAgYGBiYXNlNjRgYCBpcyByZXF1ZXN0ZWQgZm9yICpzdWJ0eXBlKiBgYHJmYzgyMmBgLCBhbmQgZm9yIGFueSAqY3RlKgotICAgICAgIG90aGVyIHRoYW4gYGA3Yml0YGAgZm9yICpzdWJ0eXBlKiBgYGV4dGVybmFsLWJvZHlgYC4gIEZvcgotICAgICAgIGBgbWVzc2FnZS9yZmM4MjJgYCwgdXNlIGBgOGJpdGBgIGlmICpjdGUqIGlzIG5vdCBzcGVjaWZpZWQuICBGb3IgYWxsCi0gICAgICAgb3RoZXIgdmFsdWVzIG9mICpzdWJ0eXBlKiwgdXNlIGBgN2JpdGBgLgorICAgICAgIHRoYXQgdmFsdWUuICBQb3NzaWJsZSB2YWx1ZXMgZm9yICpjdGUqIGFyZSBgYHF1b3RlZC1wcmludGFibGVgYCwKKyAgICAgICBgYGJhc2U2NGBgLCBgYDdiaXRgYCwgYGA4Yml0YGAsIGFuZCBgYGJpbmFyeWBgLiAgSWYgdGhlIGlucHV0IGNhbm5vdCBiZQorICAgICAgIGVuY29kZWQgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyAoZm9yIGV4YW1wbGUsIHNwZWNpZnlpbmcgYSAqY3RlKiBvZgorICAgICAgIGBgN2JpdGBgIGZvciBhbiBpbnB1dCB0aGF0IGNvbnRhaW5zIG5vbi1BU0NJSSB2YWx1ZXMpLCByYWlzZSBhCisgICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuCisKKyAgICAgICAgICAgICogRm9yIGBgc3RyYGAgb2JqZWN0cywgaWYgKmN0ZSogaXMgbm90IHNldCB1c2UgaGV1cmlzdGljcyB0bworICAgICAgICAgICAgICBkZXRlcm1pbmUgdGhlIG1vc3QgY29tcGFjdCBlbmNvZGluZy4KKyAgICAgICAgICAgICogRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCwgcGVyIDpyZmM6YDIwNDZgLCByYWlzZQorICAgICAgICAgICAgICBhbiBlcnJvciBpZiBhICpjdGUqIG9mIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAgaXMKKyAgICAgICAgICAgICAgcmVxdWVzdGVkIGZvciAqc3VidHlwZSogYGByZmM4MjJgYCwgYW5kIGZvciBhbnkgKmN0ZSogb3RoZXIgdGhhbgorICAgICAgICAgICAgICBgYDdiaXRgYCBmb3IgKnN1YnR5cGUqIGBgZXh0ZXJuYWwtYm9keWBgLiAgRm9yCisgICAgICAgICAgICAgIGBgbWVzc2FnZS9yZmM4MjJgYCwgdXNlIGBgOGJpdGBgIGlmICpjdGUqIGlzIG5vdCBzcGVjaWZpZWQuICBGb3IKKyAgICAgICAgICAgICAgYWxsIG90aGVyIHZhbHVlcyBvZiAqc3VidHlwZSosIHVzZSBgYDdiaXRgYC4KIAogICAgICAgIC4uIG5vdGU6OiBBICpjdGUqIG9mIGBgYmluYXJ5YGAgZG9lcyBub3QgYWN0dWFsbHkgd29yayBjb3JyZWN0bHkgeWV0LgotICAgICAgICAgIFRoZSBgYE1lc3NhZ2VgYCBvYmplY3QgYXMgbW9kaWZpZWQgYnkgYGBzZXRfY29udGVudGBgIGlzIGNvcnJlY3QsIGJ1dAotICAgICAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgZG9lcyBub3Qgc2VyaWFsaXplIGl0Ci0gICAgICAgICAgY29ycmVjdGx5LgorICAgICAgICAgIFRoZSBgYEVtYWlsTWVzc2FnZWBgIG9iamVjdCBhcyBtb2RpZmllZCBieSBgYHNldF9jb250ZW50YGAgaXMKKyAgICAgICAgICBjb3JyZWN0LCBidXQgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBkb2VzIG5vdAorICAgICAgICAgIHNlcmlhbGl6ZSBpdCBjb3JyZWN0bHkuCiAKICAgICAgICBJZiAqZGlzcG9zaXRpb24qIGlzIHNldCwgdXNlIGl0IGFzIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLiAgSWYgbm90IHNwZWNpZmllZCwgYW5kCiAgICAgICAgKmZpbGVuYW1lKiBpcyBzcGVjaWZpZWQsIGFkZCB0aGUgaGVhZGVyIHdpdGggdGhlIHZhbHVlIGBgYXR0YWNobWVudGBgLgotICAgICAgIElmIGl0IGlzIG5vdCBzcGVjaWZpZWQgYW5kICpmaWxlbmFtZSogaXMgYWxzbyBub3Qgc3BlY2lmaWVkLCBkbyBub3QgYWRkCi0gICAgICAgdGhlIGhlYWRlci4gIFRoZSBvbmx5IHZhbGlkIHZhbHVlcyBmb3IgKmRpc3Bvc2l0aW9uKiBhcmUgYGBhdHRhY2htZW50YGAKLSAgICAgICBhbmQgYGBpbmxpbmVgYC4KKyAgICAgICBJZiAqZGlzcG9zaXRpb24qIGlzIG5vdCBzcGVjaWZpZWQgYW5kICpmaWxlbmFtZSogaXMgYWxzbyBub3Qgc3BlY2lmaWVkLAorICAgICAgIGRvIG5vdCBhZGQgdGhlIGhlYWRlci4gIFRoZSBvbmx5IHZhbGlkIHZhbHVlcyBmb3IgKmRpc3Bvc2l0aW9uKiBhcmUKKyAgICAgICBgYGF0dGFjaG1lbnRgYCBhbmQgYGBpbmxpbmVgYC4KIAogICAgICAgIElmICpmaWxlbmFtZSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZSBgYGZpbGVuYW1lYGAKLSAgICAgICBwYXJhbWV0ZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIuICBUaGVyZSBpcyBubwotICAgICAgIGRlZmF1bHQuCisgICAgICAgcGFyYW1ldGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLgogCiAgICAgICAgSWYgKmNpZCogaXMgc3BlY2lmaWVkLCBhZGQgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgaGVhZGVyIHdpdGgKICAgICAgICAqY2lkKiBhcyBpdHMgdmFsdWUuCkBAIC00MzUsMyArMTk5LDkgQEAKICAgICAgICBgYGhlYWRlcm5hbWU6IGhlYWRlcnZhbHVlYGAgb3IgYSBsaXN0IG9mIGBgaGVhZGVyYGAgb2JqZWN0cwogICAgICAgIChkaXN0aW5ndWlzaGVkIGZyb20gc3RyaW5ncyBieSBoYXZpbmcgYSBgYG5hbWVgYCBhdHRyaWJ1dGUpLCBhZGQgdGhlCiAgICAgICAgaGVhZGVycyB0byAqbXNnKi4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjQgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0CmluZGV4IDlkN2Y5YmYuLmUyNGFjN2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVuY29kZXJzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5lbmNvZGVycy5yc3QKQEAgLTgsNiArOCwxMiBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSW4gdGhlCituZXcgQVBJIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByb3ZpZGVkIGJ5IHRoZSAqY3RlKiBwYXJhbWV0ZXIgb2YKK3RoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBtZXRob2QuCisKK1RoZSByZW1haW5pbmcgdGV4dCBpbiB0aGlzIHNlY3Rpb24gaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKwogV2hlbiBjcmVhdGluZyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMgZnJvbSBzY3JhdGNoLCB5b3Ugb2Z0ZW4KIG5lZWQgdG8gZW5jb2RlIHRoZSBwYXlsb2FkcyBmb3IgdHJhbnNwb3J0IHRocm91Z2ggY29tcGxpYW50IG1haWwgc2VydmVycy4gVGhpcwogaXMgZXNwZWNpYWxseSB0cnVlIGZvciA6bWltZXR5cGU6YGltYWdlL1wqYCBhbmQgOm1pbWV0eXBlOmB0ZXh0L1wqYCB0eXBlIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdAppbmRleCA4NDcwNzgzLi4yZDBkMTkyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKQEAgLTIwLDMzICsyMCwyNyBAQAogCiAuLiBleGNlcHRpb246OiBNZXNzYWdlUGFyc2VFcnJvcigpCiAKLSAgIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYAotICAgY2xhc3MuICBJdCBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZUVycm9yYC4KKyAgIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZQorICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MuICBJdCBpcyBkZXJpdmVkIGZyb20KKyAgIDpleGM6YE1lc3NhZ2VFcnJvcmAuICBUaGlzIGNsYXNzIGlzIGFsc28gdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBwYXJzZXIgdXNlZAorICAgYnkgOm1vZDpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5YC4KIAogCiAuLiBleGNlcHRpb246OiBIZWFkZXJQYXJzZUVycm9yKCkKIAotICAgUmFpc2VkIHVuZGVyIHNvbWUgZXJyb3IgY29uZGl0aW9ucyB3aGVuIHBhcnNpbmcgdGhlIDpyZmM6YDI4MjJgIGhlYWRlcnMgb2YgYQotICAgbWVzc2FnZSwgdGhpcyBjbGFzcyBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZVBhcnNlRXJyb3JgLiBJdCBjYW4gYmUgcmFpc2VkCi0gICBmcm9tIHRoZSA6bWV0aDpgUGFyc2VyLnBhcnNlIDxlbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlPmAgb3IKLSAgIDptZXRoOmBQYXJzZXIucGFyc2VzdHIgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VzdHI+YCBtZXRob2RzLgotCi0gICBTaXR1YXRpb25zIHdoZXJlIGl0IGNhbiBiZSByYWlzZWQgaW5jbHVkZSBmaW5kaW5nIGFuIGVudmVsb3BlIGhlYWRlciBhZnRlciB0aGUKLSAgIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBvZiB0aGUgbWVzc2FnZSwgZmluZGluZyBhIGNvbnRpbnVhdGlvbiBsaW5lIGJlZm9yZSB0aGUKLSAgIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBpcyBmb3VuZCwgb3IgZmluZGluZyBhIGxpbmUgaW4gdGhlIGhlYWRlcnMgd2hpY2ggaXMKLSAgIG5laXRoZXIgYSBoZWFkZXIgb3IgYSBjb250aW51YXRpb24gbGluZS4KKyAgIFJhaXNlZCB1bmRlciBzb21lIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBwYXJzaW5nIHRoZSA6cmZjOmA1MzIyYCBoZWFkZXJzIG9mIGEKKyAgIG1lc3NhZ2UsIHRoaXMgY2xhc3MgaXMgZGVyaXZlZCBmcm9tIDpleGM6YE1lc3NhZ2VQYXJzZUVycm9yYC4gIFRoZQorICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfYm91bmRhcnlgIG1ldGhvZCB3aWxsIHJhaXNlIHRoaXMKKyAgIGVycm9yIGlmIHRoZSBjb250ZW50IHR5cGUgaXMgdW5rbm93biB3aGVuIHRoZSBtZXRob2QgaXMgY2FsbGVkLgorICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgbWF5IHJhaXNlIHRoaXMgZXJyb3IgZm9yIGNlcnRhaW4gYmFzZTY0CisgICBkZWNvZGluZyBlcnJvcnMsIGFuZCB3aGVuIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjcmVhdGUgYSBoZWFkZXIgdGhhdCBhcHBlYXJzCisgICB0byBjb250YWluIGFuIGVtYmVkZGVkIGhlYWRlciAodGhhdCBpcywgdGhlcmUgaXMgd2hhdCBpcyBzdXBwb3NlZCB0byBiZSBhCisgICBjb250aW51YXRpb24gbGluZSB0aGF0IGhhcyBubyBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGxvb2tzIGxpa2UgYSBoZWFkZXIpLgogCiAKIC4uIGV4Y2VwdGlvbjo6IEJvdW5kYXJ5RXJyb3IoKQogCi0gICBSYWlzZWQgdW5kZXIgc29tZSBlcnJvciBjb25kaXRpb25zIHdoZW4gcGFyc2luZyB0aGUgOnJmYzpgMjgyMmAgaGVhZGVycyBvZiBhCi0gICBtZXNzYWdlLCB0aGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBNZXNzYWdlUGFyc2VFcnJvcmAuIEl0IGNhbiBiZSByYWlzZWQKLSAgIGZyb20gdGhlIDptZXRoOmBQYXJzZXIucGFyc2UgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2U+YCBvcgotICAgOm1ldGg6YFBhcnNlci5wYXJzZXN0ciA8ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZXN0cj5gIG1ldGhvZHMuCi0KLSAgIFNpdHVhdGlvbnMgd2hlcmUgaXQgY2FuIGJlIHJhaXNlZCBpbmNsdWRlIG5vdCBiZWluZyBhYmxlIHRvIGZpbmQgdGhlIHN0YXJ0aW5nIG9yCi0gICB0ZXJtaW5hdGluZyBib3VuZGFyeSBpbiBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBtZXNzYWdlIHdoZW4gc3RyaWN0IHBhcnNpbmcKLSAgIGlzIHVzZWQuCisgICBEZXByZWNhdGVkIGFuZCBubyBsb25nZXIgdXNlZC4KIAogCiAuLiBleGNlcHRpb246OiBNdWx0aXBhcnRDb252ZXJzaW9uRXJyb3IoKQpAQCAtNjQsMTQgKzU4LDE0IEBACiAgICA6Y2xhc3M6YH5lbWFpbC5taW1lLm5vbm11bHRpcGFydC5NSU1FTm9uTXVsdGlwYXJ0YCAoZS5nLgogICAgOmNsYXNzOmB+ZW1haWwubWltZS5pbWFnZS5NSU1FSW1hZ2VgKS4KIAotSGVyZSdzIHRoZSBsaXN0IG9mIHRoZSBkZWZlY3RzIHRoYXQgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYAorCitIZXJlIGlzIHRoZSBsaXN0IG9mIHRoZSBkZWZlY3RzIHRoYXQgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYAogY2FuIGZpbmQgd2hpbGUgcGFyc2luZyBtZXNzYWdlcy4gIE5vdGUgdGhhdCB0aGUgZGVmZWN0cyBhcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UKIHdoZXJlIHRoZSBwcm9ibGVtIHdhcyBmb3VuZCwgc28gZm9yIGV4YW1wbGUsIGlmIGEgbWVzc2FnZSBuZXN0ZWQgaW5zaWRlIGEKIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYCBoYWQgYSBtYWxmb3JtZWQgaGVhZGVyLCB0aGF0IG5lc3RlZCBtZXNzYWdlCiBvYmplY3Qgd291bGQgaGF2ZSBhIGRlZmVjdCwgYnV0IHRoZSBjb250YWluaW5nIG1lc3NhZ2VzIHdvdWxkIG5vdC4KIAotQWxsIGRlZmVjdCBjbGFzc2VzIGFyZSBzdWJjbGFzc2VkIGZyb20gOmNsYXNzOmBlbWFpbC5lcnJvcnMuTWVzc2FnZURlZmVjdGAsIGJ1dAotdGhpcyBjbGFzcyBpcyAqbm90KiBhbiBleGNlcHRpb24hCitBbGwgZGVmZWN0IGNsYXNzZXMgYXJlIHN1YmNsYXNzZWQgZnJvbSA6Y2xhc3M6YGVtYWlsLmVycm9ycy5NZXNzYWdlRGVmZWN0YC4KIAogKiA6Y2xhc3M6YE5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdGAgLS0gQSBtZXNzYWdlIGNsYWltZWQgdG8gYmUgYSBtdWx0aXBhcnQsCiAgIGJ1dCBoYWQgbm8gOm1pbWV0eXBlOmBib3VuZGFyeWAgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZXhhbXBsZXMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZXhhbXBsZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZTlhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5leGFtcGxlcy5yc3QKQEAgLTAsMCArMSw2NyBAQAorLi4gX2VtYWlsLWV4YW1wbGVzOgorCis6bW9kOmBlbWFpbGA6IEV4YW1wbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hlcmUgYXJlIGEgZmV3IGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHRvIHJlYWQsIHdyaXRlLAorYW5kIHNlbmQgc2ltcGxlIGVtYWlsIG1lc3NhZ2VzLCBhcyB3ZWxsIGFzIG1vcmUgY29tcGxleCBNSU1FIG1lc3NhZ2VzLgorCitGaXJzdCwgbGV0J3Mgc2VlIGhvdyB0byBjcmVhdGUgYW5kIHNlbmQgYSBzaW1wbGUgdGV4dCBtZXNzYWdlIChib3RoIHRoZQordGV4dCBjb250ZW50IGFuZCB0aGUgYWRkcmVzc2VzIG1heSBjb250YWluIHVuaWNvZGUgY2hhcmFjdGVycyk6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CisKKworUGFyc2luZyBSRkM4MjIgaGVhZGVycyBjYW4gZWFzaWx5IGJlIGRvbmUgYnkgdGhlIHVzaW5nIHRoZSBjbGFzc2VzCitmcm9tIHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBtb2R1bGU6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBzZW5kIGEgTUlNRSBtZXNzYWdlIGNvbnRhaW5pbmcgYSBidW5jaCBvZiBmYW1pbHkKK3BpY3R1cmVzIHRoYXQgbWF5IGJlIHJlc2lkaW5nIGluIGEgZGlyZWN0b3J5OgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKKworCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGFzIGFuIGVtYWlsCittZXNzYWdlOiBbMV1fCisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtZGlyLnB5CisKKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVucGFjayBhIE1JTUUgbWVzc2FnZSBsaWtlIHRoZSBvbmUKK2Fib3ZlLCBpbnRvIGEgZGlyZWN0b3J5IG9mIGZpbGVzOgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBjcmVhdGUgYW4gSFRNTCBtZXNzYWdlIHdpdGggYW4gYWx0ZXJuYXRpdmUgcGxhaW4KK3RleHQgdmVyc2lvbi4gIFRvIG1ha2UgdGhpbmdzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHdlIGluY2x1ZGUgYSByZWxhdGVkCitpbWFnZSBpbiB0aGUgaHRtbCBwYXJ0LCBhbmQgd2Ugc2F2ZSBhIGNvcHkgb2Ygd2hhdCB3ZSBhcmUgZ29pbmcgdG8gc2VuZCB0bworZGlzaywgYXMgd2VsbCBhcyBzZW5kaW5nIGl0LgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5CisKKworSWYgd2Ugd2VyZSBzZW50IHRoZSBtZXNzYWdlIGZyb20gdGhlIGxhc3QgZXhhbXBsZSwgaGVyZSBpcyBvbmUgd2F5IHdlIGNvdWxkCitwcm9jZXNzIGl0OgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUucHkKKworVXAgdG8gdGhlIHByb21wdCwgdGhlIG91dHB1dCBmcm9tIHRoZSBhYm92ZSBpczoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgIFRvOiBQZW5lbG9wZSBQdXNzeWNhdCA8cGVuZWxvcGVAZXhhbXBsZS5jb20+LCBGYWJyZXR0ZSBQdXNzeWNhdCA8ZmFicmV0dGVAZXhhbXBsZS5jb20+CisgICAgRnJvbTogUGVww6kgTGUgUGV3IDxwZXBlQGV4YW1wbGUuY29tPgorICAgIFN1YmplY3Q6IEF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyCisKKyAgICBTYWx1dCEKKworICAgIENlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudCByZWNpcGllWzFdIGTDqWpldW5lci4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIFRoYW5rcyB0byBNYXR0aGV3IERpeG9uIENvd2xlcyBmb3IgdGhlIG9yaWdpbmFsIGluc3BpcmF0aW9uIGFuZCBleGFtcGxlcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CmluZGV4IGQ1OTZlZDguLmFiMGZiYzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdApAQCAtOCwyMTAgKzgsMjQ0IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLU9uZSBvZiB0aGUgbW9zdCBjb21tb24gdGFza3MgaXMgdG8gZ2VuZXJhdGUgdGhlIGZsYXQgdGV4dCBvZiB0aGUgZW1haWwgbWVzc2FnZQotcmVwcmVzZW50ZWQgYnkgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUuICBZb3Ugd2lsbCBuZWVkIHRvIGRvIHRoaXMgaWYgeW91IHdhbnQKLXRvIHNlbmQgeW91ciBtZXNzYWdlIHZpYSB0aGUgOm1vZDpgc210cGxpYmAgbW9kdWxlIG9yIHRoZSA6bW9kOmBubnRwbGliYCBtb2R1bGUsCi1vciBwcmludCB0aGUgbWVzc2FnZSBvbiB0aGUgY29uc29sZS4gIFRha2luZyBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBhbmQKLXByb2R1Y2luZyBhIGZsYXQgdGV4dCBkb2N1bWVudCBpcyB0aGUgam9iIG9mIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MuCitPbmUgb2YgdGhlIG1vc3QgY29tbW9uIHRhc2tzIGlzIHRvIGdlbmVyYXRlIHRoZSBmbGF0IChzZXJpYWxpemVkKSB2ZXJzaW9uIG9mCit0aGUgZW1haWwgbWVzc2FnZSByZXByZXNlbnRlZCBieSBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZS4gIFlvdSB3aWxsIG5lZWQgdG8KK2RvIHRoaXMgaWYgeW91IHdhbnQgdG8gc2VuZCB5b3VyIG1lc3NhZ2UgdmlhIDptZXRoOmBzbXRwbGliLlNNVFAuc2VuZG1haWxgIG9yCit0aGUgOm1vZDpgbm50cGxpYmAgbW9kdWxlLCBvciBwcmludCB0aGUgbWVzc2FnZSBvbiB0aGUgY29uc29sZS4gIFRha2luZyBhCittZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgYW5kIHByb2R1Y2luZyBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gaXMgdGhlIGpvYgorb2YgdGhlIGdlbmVyYXRvciBjbGFzc2VzLgogCi1BZ2FpbiwgYXMgd2l0aCB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsIHlvdSBhcmVuJ3QgbGltaXRlZCB0byB0aGUKLWZ1bmN0aW9uYWxpdHkgb2YgdGhlIGJ1bmRsZWQgZ2VuZXJhdG9yOyB5b3UgY291bGQgd3JpdGUgb25lIGZyb20gc2NyYXRjaAoteW91cnNlbGYuICBIb3dldmVyIHRoZSBidW5kbGVkIGdlbmVyYXRvciBrbm93cyBob3cgdG8gZ2VuZXJhdGUgbW9zdCBlbWFpbCBpbiBhCi1zdGFuZGFyZHMtY29tcGxpYW50IHdheSwgc2hvdWxkIGhhbmRsZSBNSU1FIGFuZCBub24tTUlNRSBlbWFpbCBtZXNzYWdlcyBqdXN0Ci1maW5lLCBhbmQgaXMgZGVzaWduZWQgc28gdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmbGF0IHRleHQsIHRvIGEgbWVzc2FnZQotc3RydWN0dXJlIHZpYSB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MsIGFuZCBiYWNrIHRvIGZsYXQgdGV4dCwKLWlzIGlkZW1wb3RlbnQgKHRoZSBpbnB1dCBpcyBpZGVudGljYWwgdG8gdGhlIG91dHB1dCkgWyNdXy4gIE9uIHRoZSBvdGhlciBoYW5kLAotdXNpbmcgdGhlIEdlbmVyYXRvciBvbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY29uc3RydWN0ZWQgYnkgcHJvZ3JhbQotbWF5IHJlc3VsdCBpbiBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdCBhcyBkZWZhdWx0cwotYXJlIGZpbGxlZCBpbi4KK0FzIHdpdGggdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlLCB5b3UgYXJlbid0IGxpbWl0ZWQgdG8gdGhlIGZ1bmN0aW9uYWxpdHkKK29mIHRoZSBidW5kbGVkIGdlbmVyYXRvcjsgeW91IGNvdWxkIHdyaXRlIG9uZSBmcm9tIHNjcmF0Y2ggeW91cnNlbGYuICBIb3dldmVyCit0aGUgYnVuZGxlZCBnZW5lcmF0b3Iga25vd3MgaG93IHRvIGdlbmVyYXRlIG1vc3QgZW1haWwgaW4gYSBzdGFuZGFyZHMtY29tcGxpYW50Cit3YXksIHNob3VsZCBoYW5kbGUgTUlNRSBhbmQgbm9uLU1JTUUgZW1haWwgbWVzc2FnZXMganVzdCBmaW5lLCBhbmQgaXMgZGVzaWduZWQKK3NvIHRoYXQgdGhlIGJ5dGVzLW9yaWVudGVkIHBhcnNpbmcgYW5kIGdlbmVyYXRpb24gb3BlcmF0aW9ucyBhcmUgaW52ZXJzZXMsCithc3N1bWluZyB0aGUgc2FtZSBub24tdHJhbnNmb3JtaW5nIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGlzIHVzZWQgZm9yIGJvdGguICBUaGF0CitpcywgcGFyc2luZyB0aGUgc2VyaWFsaXplZCBieXRlIHN0cmVhbSB2aWEgdGhlCis6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGNsYXNzIGFuZCB0aGVuIHJlZ2VuZXJhdGluZyB0aGUgc2VyaWFsaXplZAorYnl0ZSBzdHJlYW0gdXNpbmcgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgc2hvdWxkIHByb2R1Y2Ugb3V0cHV0IGlkZW50aWNhbCB0bwordGhlIGlucHV0IFsjXV8uICAoT24gdGhlIG90aGVyIGhhbmQsIHVzaW5nIHRoZSBnZW5lcmF0b3Igb24gYW4KKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjb25zdHJ1Y3RlZCBieSBwcm9ncmFtIG1heSByZXN1bHQgaW4KK2NoYW5nZXMgdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3QgYXMgZGVmYXVsdHMgYXJlCitmaWxsZWQgaW4uKQogCi06Y2xhc3M6YGJ5dGVzYCBvdXRwdXQgY2FuIGJlIGdlbmVyYXRlZCB1c2luZyB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgY2xhc3MuCi1JZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGNvbnRhaW5zIG5vbi1BU0NJSSBieXRlcywgdGhpcyBnZW5lcmF0b3IncwotOm1ldGg6YH5CeXRlc0dlbmVyYXRvci5mbGF0dGVuYCBtZXRob2Qgd2lsbCBlbWl0IHRoZSBvcmlnaW5hbCBieXRlcy4gIFBhcnNpbmcgYQotYmluYXJ5IG1lc3NhZ2UgYW5kIHRoZW4gZmxhdHRlbmluZyBpdCB3aXRoIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIHNob3VsZCBiZQotaWRlbXBvdGVudCBmb3Igc3RhbmRhcmRzIGNvbXBsaWFudCBtZXNzYWdlcy4KLQotSGVyZSBhcmUgdGhlIHB1YmxpYyBtZXRob2RzIG9mIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlCi06bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZToKK1RoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MgY2FuIGJlIHVzZWQgdG8gZmxhdHRlbiBhIG1lc3NhZ2UgaW50byBhIHRleHQgKGFzCitvcHBvc2VkIHRvIGJpbmFyeSkgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiwgYnV0IHNpbmNlIFVuaWNvZGUgY2Fubm90CityZXByZXNlbnQgYmluYXJ5IGRhdGEgZGlyZWN0bHksIHRoZSBtZXNzYWdlIGlzIG9mIG5lY2Vzc2l0eSB0cmFuc2Zvcm1lZCBpbnRvCitzb21ldGhpbmcgdGhhdCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMsIHVzaW5nIHRoZSBzdGFuZGFyZCBlbWFpbCBSRkMKK0NvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcgdGVjaG5pcXVlcyBmb3IgZW5jb2RpbmcgZW1haWwgbWVzc2FnZXMgZm9yIHRyYW5zcG9ydAorb3ZlciBjaGFubmVscyB0aGF0IGFyZSBub3QgIjggYml0IGNsZWFuIi4KIAogCi0uLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgcG9saWN5PU5vbmUpCi0KLSAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAotICAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kCi0gICBhbmQgYmUgdXNhYmxlIGFzIHRoZSBvdXRwdXQgZmlsZSBmb3IgdGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24uCi0KLSAgIE9wdGlvbmFsICptYW5nbGVfZnJvbV8qIGlzIGEgZmxhZyB0aGF0LCB3aGVuIGBgVHJ1ZWBgLCBwdXRzIGEgYGA+YGAgY2hhcmFjdGVyIGluCi0gICBmcm9udCBvZiBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyBleGFjdGx5IGFzIGBgRnJvbWBgLCBpLmUuIGBgRnJvbWBgCi0gICBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuICBUaGlzIGlzIHRoZSBvbmx5IGd1YXJhbnRlZWQKLSAgIHBvcnRhYmxlIHdheSB0byBhdm9pZCBoYXZpbmcgc3VjaCBsaW5lcyBiZSBtaXN0YWtlbiBmb3IgYSBVbml4IG1haWxib3ggZm9ybWF0Ci0gICBlbnZlbG9wZSBoZWFkZXIgc2VwYXJhdG9yIChzZWUgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEggRk9STUFUIElTIEJBRAotICAgPGh0dHBzOi8vd3d3Lmp3ei5vcmcvZG9jL2NvbnRlbnQtbGVuZ3RoLmh0bWw+YF8gZm9yIGRldGFpbHMpLiAgKm1hbmdsZV9mcm9tXyoKLSAgIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLCBidXQgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IHRoaXMgdG8gYGBGYWxzZWBgIGlmIHlvdSBhcmUgbm90Ci0gICB3cml0aW5nIFVuaXggbWFpbGJveCBmb3JtYXQgZmlsZXMuCi0KLSAgIE9wdGlvbmFsICptYXhoZWFkZXJsZW4qIHNwZWNpZmllcyB0aGUgbG9uZ2VzdCBsZW5ndGggZm9yIGEgbm9uLWNvbnRpbnVlZCBoZWFkZXIuCi0gICBXaGVuIGEgaGVhZGVyIGxpbmUgaXMgbG9uZ2VyIHRoYW4gKm1heGhlYWRlcmxlbiogKGluIGNoYXJhY3RlcnMsIHdpdGggdGFicwotICAgZXhwYW5kZWQgdG8gOCBzcGFjZXMpLCB0aGUgaGVhZGVyIHdpbGwgYmUgc3BsaXQgYXMgZGVmaW5lZCBpbiB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCi0gICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5IDpyZmM6YDI4MjJgLgotCi0gICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCi0gICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgSWYgbm8gKnBvbGljeSogaXMgc3BlY2lmaWVkLAotICAgdGhlbiB0aGUgKnBvbGljeSogYXR0YWNoZWQgdG8gdGhlIG1lc3NhZ2Ugb2JqZWN0IHBhc3NlZCB0byA6YXR0cjpgZmxhdHRlbmAKLSAgIGlzIHVzZWQuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgotCi0gICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgR2VuZXJhdG9yYCBtZXRob2RzIGFyZToKLQotCi0gICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKLQotICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQgYXQKLSAgICAgICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlCi0gICAgICB3YXMgY3JlYXRlZC4gIFN1YnBhcnRzIGFyZSB2aXNpdGVkIGRlcHRoLWZpcnN0IGFuZCB0aGUgcmVzdWx0aW5nIHRleHQgd2lsbAotICAgICAgYmUgcHJvcGVybHkgTUlNRSBlbmNvZGVkLgotCi0gICAgICBPcHRpb25hbCAqdW5peGZyb20qIGlzIGEgZmxhZyB0aGF0IGZvcmNlcyB0aGUgcHJpbnRpbmcgb2YgdGhlIGVudmVsb3BlCi0gICAgICBoZWFkZXIgZGVsaW1pdGVyIGJlZm9yZSB0aGUgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIG9mIHRoZSByb290IG1lc3NhZ2UKLSAgICAgIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMgbm8gZW52ZWxvcGUgaGVhZGVyLCBhIHN0YW5kYXJkIG9uZSBpcwotICAgICAgY3JhZnRlZC4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgc2V0IHRvIGBgRmFsc2VgYCB0byBpbmhpYml0IHRoZSBwcmludGluZyBvZgotICAgICAgdGhlIGVudmVsb3BlIGRlbGltaXRlci4KLQotICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KLQotICAgICAgT3B0aW9uYWwgKmxpbmVzZXAqIHNwZWNpZmllcyB0aGUgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVyIHVzZWQgdG8KLSAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKLSAgICAgIHNwZWNpZmllZCBieSB0aGUgKm1zZypcJ3Mgb3IgYGBHZW5lcmF0b3JgYFwncyBgYHBvbGljeWBgLgotCi0gICAgICBCZWNhdXNlIHN0cmluZ3MgY2Fubm90IHJlcHJlc2VudCBub24tQVNDSUkgYnl0ZXMsIGlmIHRoZSBwb2xpY3kgdGhhdAotICAgICAgYXBwbGllcyB3aGVuIGBgZmxhdHRlbmBgIGlzIHJ1biBoYXMgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYAotICAgICAgc2V0IHRvIGBgOGJpdGBgLCBgYEdlbmVyYXRvcmBgIHdpbGwgb3BlcmF0ZSBhcyBpZiBpdCB3ZXJlIHNldCB0bwotICAgICAgYGA3Yml0YGAuICBUaGlzIG1lYW5zIHRoYXQgbWVzc2FnZXMgcGFyc2VkIHdpdGggYSBCeXRlcyBwYXJzZXIgdGhhdCBoYXZlCi0gICAgICBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiBgYDhiaXRgYCB3aWxsIGJlIGNvbnZlcnRlZAotICAgICAgdG8gYSB1c2UgYSBgYDdiaXRgYCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgTm9uLUFTQ0lJIGJ5dGVzIGluIHRoZQotICAgICAgaGVhZGVycyB3aWxsIGJlIDpyZmM6YDIwNDdgIGVuY29kZWQgd2l0aCBhIGNoYXJzZXQgb2YgYGB1bmtub3duLThiaXRgYC4KLQotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHJlLWVuY29kaW5nIGBgOGJpdGBgIG1lc3NhZ2UgYm9kaWVzLCBhbmQgdGhlCi0gICAgICAgICAqbGluZXNlcCogYXJndW1lbnQuCi0KLSAgIC4uIG1ldGhvZDo6IGNsb25lKGZwKQotCi0gICAgICBSZXR1cm4gYW4gaW5kZXBlbmRlbnQgY2xvbmUgb2YgdGhpcyA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2Ugd2l0aCB0aGUKLSAgICAgIGV4YWN0IHNhbWUgb3B0aW9ucy4KLQotICAgLi4gbWV0aG9kOjogd3JpdGUocykKLQotICAgICAgV3JpdGUgdGhlIHN0cmluZyAqcyogdG8gdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QsIGkuZS4gKm91dGZwKiBwYXNzZWQgdG8KLSAgICAgIDpjbGFzczpgR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLiAgVGhpcyBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UgQVBJCi0gICAgICBmb3IgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlcyB0byBiZSB1c2VkIGluIHRoZSA6ZnVuYzpgcHJpbnRgIGZ1bmN0aW9uLgotCi1BcyBhIGNvbnZlbmllbmNlLCBzZWUgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgbWV0aG9kcwotOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXNfc3RyaW5nYCBhbmQgYGBzdHIoYU1lc3NhZ2UpYGAsIGEuay5hLgotOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuX19zdHJfX2AsIHdoaWNoIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mIGEKLWZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlIG9iamVjdC4gIEZvciBtb3JlIGRldGFpbCwgc2VlCi06bW9kOmBlbWFpbC5tZXNzYWdlYC4KLQotLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgXAorLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCAqLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKQogCi0gICBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIGJpbmFyeQotICAgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgIGNhbGxlZCAqb3V0ZnAqIGZvciBhbiBhcmd1bWVudC4gICpvdXRmcCogbXVzdAotICAgc3VwcG9ydCBhIDptZXRoOmB3cml0ZWAgbWV0aG9kIHRoYXQgYWNjZXB0cyBiaW5hcnkgZGF0YS4KKyAgIFJldHVybiBhIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG9iamVjdCB0aGF0IHdpbGwgd3JpdGUgYW55IG1lc3NhZ2UgcHJvdmlkZWQKKyAgIHRvIHRoZSA6bWV0aDpgZmxhdHRlbmAgbWV0aG9kLCBvciBhbnkgc3Vycm9nYXRlZXNjYXBlIGVuY29kZWQgdGV4dCBwcm92aWRlZAorICAgdG8gdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kLCB0byB0aGUgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgICpvdXRmcCouCisgICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCBhIGBgd3JpdGVgYCBtZXRob2QgdGhhdCBhY2NlcHRzIGJpbmFyeSBkYXRhLgogCi0gICBPcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBhIGZsYWcgdGhhdCwgd2hlbiBgYFRydWVgYCwgcHV0cyBhIGBgPmBgCi0gICBjaGFyYWN0ZXIgaW4gZnJvbnQgb2YgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgZXhhY3RseSBhcyBgYEZyb21gYCwKLSAgIGkuZS4gYGBGcm9tYGAgZm9sbG93ZWQgYnkgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLiAgVGhpcyBpcyB0aGUKLSAgIG9ubHkgZ3VhcmFudGVlZCBwb3J0YWJsZSB3YXkgdG8gYXZvaWQgaGF2aW5nIHN1Y2ggbGluZXMgYmUgbWlzdGFrZW4gZm9yIGEKLSAgIFVuaXggbWFpbGJveCBmb3JtYXQgZW52ZWxvcGUgaGVhZGVyIHNlcGFyYXRvciAoc2VlIGBXSFkgVEhFIENPTlRFTlQtTEVOR1RICi0gICBGT1JNQVQgSVMgQkFEIDxodHRwczovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfIGZvciBkZXRhaWxzKS4KLSAgICptYW5nbGVfZnJvbV8qIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLCBidXQgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IHRoaXMgdG8KLSAgIGBgRmFsc2VgYCBpZiB5b3UgYXJlIG5vdCB3cml0aW5nIFVuaXggbWFpbGJveCBmb3JtYXQgZmlsZXMuCisgICBJZiBvcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBgYFRydWVgYCwgcHV0IGEgYGA+YGAgY2hhcmFjdGVyIGluIGZyb250IG9mCisgICBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBleGFjdCBzdHJpbmcgYGAiRnJvbSAiYGAsIHRoYXQgaXMKKyAgIGBgRnJvbWBgIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuICAqbWFuZ2xlX2Zyb21fKgorICAgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWFuZ2xlX2Zyb21fYAorICAgc2V0dGluZyBvZiB0aGUgKnBvbGljeSogKHdoaWNoIGlzIGBgVHJ1ZWBgIGZvciB0aGUKKyAgIDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBwb2xpY3kgYW5kIGBgRmFsc2VgYCBmb3IgYWxsIG90aGVycykuCisgICAqbWFuZ2xlX2Zyb21fKiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiB1bml4IG1ib3gKKyAgIGZvcm1hdCAoc2VlIDptb2Q6YG1haWxib3hgIGFuZCBgV0hZIFRIRSBDT05URU5ULUxFTkdUSCBGT1JNQVQgSVMgQkFECisgICA8aHR0cDovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfKS4KIAotICAgT3B0aW9uYWwgKm1heGhlYWRlcmxlbiogc3BlY2lmaWVzIHRoZSBsb25nZXN0IGxlbmd0aCBmb3IgYSBub24tY29udGludWVkCi0gICBoZWFkZXIuICBXaGVuIGEgaGVhZGVyIGxpbmUgaXMgbG9uZ2VyIHRoYW4gKm1heGhlYWRlcmxlbiogKGluIGNoYXJhY3RlcnMsCi0gICB3aXRoIHRhYnMgZXhwYW5kZWQgdG8gOCBzcGFjZXMpLCB0aGUgaGVhZGVyIHdpbGwgYmUgc3BsaXQgYXMgZGVmaW5lZCBpbiB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIKLSAgIHdyYXBwaW5nLiAgVGhlIGRlZmF1bHQgaXMgNzgsIGFzIHJlY29tbWVuZGVkIChidXQgbm90IHJlcXVpcmVkKSBieQotICAgOnJmYzpgMjgyMmAuCisgICBJZiAqbWF4aGVhZGVybGVuKiBpcyBub3QgYGBOb25lYGAsIHJlZm9sZCBhbnkgaGVhZGVyIGxpbmVzIHRoYXQgYXJlIGxvbmdlcgorICAgdGhhbiAqbWF4aGVhZGVybGVuKiwgb3IgaWYgYGAwYGAsIGRvIG5vdCByZXdyYXAgYW55IGhlYWRlcnMuICBJZgorICAgKm1hbmhlYWRlcmxlbiogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgd3JhcCBoZWFkZXJzIGFuZCBvdGhlciBtZXNzYWdlCisgICBsaW5lcyBhY2NvcmRpbmcgdG8gdGhlICpwb2xpY3kqIHNldHRpbmdzLgogCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQsIHVzZSB0aGF0IHBvbGljeSB0byBjb250cm9sIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIElmCisgICAqcG9saWN5KiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB1c2UgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorICAgb2JqZWN0IHBhc3NlZCB0byBgYGZsYXR0ZW5gYCB0byBjb250cm9sIHRoZSBtZXNzYWdlIGdlbmVyYXRpb24uICBTZWUKKyAgIDptb2Q6YGVtYWlsLnBvbGljeWAgZm9yIGRldGFpbHMgb24gd2hhdCAqcG9saWN5KiBjb250cm9scy4KIAotICAgVGhlICpwb2xpY3kqIGtleXdvcmQgc3BlY2lmaWVzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQgY29udHJvbHMgYQotICAgbnVtYmVyIG9mIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIElmIG5vICpwb2xpY3kqIGlzIHNwZWNpZmllZCwKLSAgIHRoZW4gdGhlICpwb2xpY3kqIGF0dGFjaGVkIHRvIHRoZSBtZXNzYWdlIG9iamVjdCBwYXNzZWQgdG8gOmF0dHI6YGZsYXR0ZW5gCi0gICBpcyB1c2VkLgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCi0gICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG1ldGhvZHMgYXJlOgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlICptYW5nbGVfZnJvbV8qCisgICAgICBhbmQgKm1heGhlYWRlcmxlbiogcGFyYW1ldGVycyBpcyB0byBmb2xsb3cgdGhlIHBvbGljeS4KIAogCiAgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKIAogICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQKICAgICAgIGF0ICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAKLSAgICAgIGluc3RhbmNlIHdhcyBjcmVhdGVkLiAgU3VicGFydHMgYXJlIHZpc2l0ZWQgZGVwdGgtZmlyc3QgYW5kIHRoZSByZXN1bHRpbmcKLSAgICAgIHRleHQgd2lsbCBiZSBwcm9wZXJseSBNSU1FIGVuY29kZWQuICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uCi0gICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksCi0gICAgICB0aGVuIGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZCBtZXNzYWdlIHRoYXQKLSAgICAgIGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgd2lsbCBiZSBjb3BpZWQgZmFpdGhmdWxseSB0byB0aGUgb3V0cHV0LiAgSWYKLSAgICAgIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYCwgdGhlIGJ5dGVzIHdpbGwgYmUgY29udmVydGVkIGFzIG5lZWRlZAotICAgICAgdXNpbmcgYW4gQVNDSUktY29tcGF0aWJsZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgSW4gcGFydGljdWxhciwKLSAgICAgIFJGQy1pbnZhbGlkIG5vbi1BU0NJSSBieXRlcyBpbiBoZWFkZXJzIHdpbGwgYmUgZW5jb2RlZCB1c2luZyB0aGUgTUlNRQotICAgICAgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KIAotICAgICAgLi4gWFhYOiBUaGVyZSBzaG91bGQgYmUgYSBjb21wbGVtZW50YXJ5IG9wdGlvbiB0aGF0IGp1c3QgZG9lcyB0aGUgUkZDCi0gICAgICAgICBjb21wbGlhbmNlIHRyYW5zZm9ybWF0aW9uIGJ1dCBsZWF2ZXMgQ1RFIDhiaXQgcGFydHMgYWxvbmUuCisgICAgICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAKKyAgICAgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksIGNvcHkgYW55IGhlYWRlcnMgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZAorICAgICAgbWVzc2FnZSB0aGF0IGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgdG8gdGhlIG91dHB1dCB3aXRoIGFueSBieXRlcyB3aXRoIHRoZQorICAgICAgaGlnaCBiaXQgc2V0IHJlcHJvZHVjZWQgYXMgaW4gdGhlIG9yaWdpbmFsLCBhbmQgcHJlc2VydmUgdGhlIG5vbi1BU0NJSQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGFueSBib2R5IHBhcnRzIHRoYXQgaGF2ZSB0aGVtLgorICAgICAgSWYgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLCBjb252ZXJ0IHRoZSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYXMKKyAgICAgIG5lZWRlZCB1c2luZyBhbiBBU0NJSS1jb21wYXRpYmxlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4KKyAgICAgIFRoYXQgaXMsIHRyYW5zZm9ybSBwYXJ0cyB3aXRoIG5vbi1BU0NJSQorICAgICAgOm1haWxoZWFkZXI6YENvdG5lbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRgKSB0byBhbiBBU0NJSSBjb21wYXRpYmlsZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLCBhbmQgZW5jb2RlIFJGQy1pbnZhbGlkIG5vbi1BU0NJSQorICAgICAgYnl0ZXMgaW4gaGVhZGVycyB1c2luZyB0aGUgTUlNRSBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMKKyAgICAgIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCiAKLSAgICAgIE1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZSBhCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCB3aWxsIGJlIHJlY29uc3RydWN0ZWQKLSAgICAgIGFzIDhiaXQgaWYgdGhleSBoYXZlIG5vdCBiZWVuIG1vZGlmaWVkLgorICAgICAgLi4gWFhYOiBUaGVyZSBzaG91bGQgYmUgYW4gb3B0aW9uIHRoYXQganVzdCBkb2VzIHRoZSBSRkMKKyAgICAgICAgIGNvbXBsaWFuY2UgdHJhbnNmb3JtYXRpb24gb24gaGVhZGVycyBidXQgbGVhdmVzIENURSA4Yml0IHBhcnRzIGFsb25lLgogCi0gICAgICBPcHRpb25hbCAqdW5peGZyb20qIGlzIGEgZmxhZyB0aGF0IGZvcmNlcyB0aGUgcHJpbnRpbmcgb2YgdGhlIGVudmVsb3BlCi0gICAgICBoZWFkZXIgZGVsaW1pdGVyIGJlZm9yZSB0aGUgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIG9mIHRoZSByb290IG1lc3NhZ2UKLSAgICAgIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMgbm8gZW52ZWxvcGUgaGVhZGVyLCBhIHN0YW5kYXJkIG9uZSBpcwotICAgICAgY3JhZnRlZC4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgc2V0IHRvIGBgRmFsc2VgYCB0byBpbmhpYml0IHRoZSBwcmludGluZyBvZgotICAgICAgdGhlIGVudmVsb3BlIGRlbGltaXRlci4KLQorICAgICAgSWYgKnVuaXhmcm9tKiBpcyBgYFRydWVgYCwgcHJpbnQgdGhlIGVudmVsb3BlIGhlYWRlciBkZWxpbWl0ZXIgdXNlZCBieQorICAgICAgdGhlIFVuaXggbWFpbGJveCBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCkgYmVmb3JlIHRoZSBmaXJzdCBvZiB0aGUKKyAgICAgIDpyZmM6YDUzMjJgIGhlYWRlcnMgb2YgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBJZiB0aGUgcm9vdCBvYmplY3QgaGFzCisgICAgICBubyBlbnZlbG9wZSBoZWFkZXIsIGNyYWZ0IGEgc3RhbmRhcmQgb25lLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgogICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KIAotICAgICAgT3B0aW9uYWwgKmxpbmVzZXAqIHNwZWNpZmllcyB0aGUgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVyIHVzZWQgdG8KLSAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKLSAgICAgIHNwZWNpZmllZCBieSB0aGUgYGBHZW5lcmF0b3JgYFwgb3IgKm1zZypcICdzIGBgcG9saWN5YGAuCisgICAgICBJZiAqbGluZXNlcCogaXMgbm90IGBgTm9uZWBgLCB1c2UgaXQgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIgYmV0d2VlbgorICAgICAgYWxsIHRoZSBsaW5lcyBvZiB0aGUgZmxhdHRlbmVkIG1lc3NhZ2UuICBJZiAqbGluZXNlcCogaXMgYGBOb25lYGAgKHRoZQorICAgICAgZGVmYXVsdCksIHVzZSB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSAqcG9saWN5Ki4KKworICAgICAgLi4gWFhYOiBmbGF0dGVuIHNob3VsZCB0YWtlIGEgKnBvbGljeSoga2V5d29yZC4KKwogCiAgICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKIAogICAgICAgUmV0dXJuIGFuIGluZGVwZW5kZW50IGNsb25lIG9mIHRoaXMgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2Ugd2l0aAotICAgICAgdGhlIGV4YWN0IHNhbWUgb3B0aW9ucy4KKyAgICAgIHRoZSBleGFjdCBzYW1lIG9wdGlvbiBzZXR0aW5ncywgYW5kICpmcCogYXMgdGhlIG5ldyAqb3V0ZnAqLgorCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKHMpCiAKLSAgICAgIFdyaXRlIHRoZSBzdHJpbmcgKnMqIHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LiAgKnMqIGlzIGVuY29kZWQgdXNpbmcKLSAgICAgIHRoZSBgYEFTQ0lJYGAgY29kZWMgYW5kIHdyaXR0ZW4gdG8gdGhlICp3cml0ZSogbWV0aG9kIG9mIHRoZSAgKm91dGZwKgotICAgICAgKm91dGZwKiBwYXNzZWQgdG8gdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgJ3MgY29uc3RydWN0b3IuICBUaGlzCi0gICAgICBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UgQVBJIGZvciA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBpbnN0YW5jZXMKLSAgICAgIHRvIGJlIHVzZWQgaW4gdGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24uCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi1UaGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgYWxzbyBwcm92aWRlcyBhIGRlcml2ZWQgY2xhc3MsIGNhbGxlZAotOmNsYXNzOmBEZWNvZGVkR2VuZXJhdG9yYCB3aGljaCBpcyBsaWtlIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcywKLWV4Y2VwdCB0aGF0IG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydHMgYXJlIHN1YnN0aXR1dGVkIHdpdGggYSBmb3JtYXQgc3RyaW5nCi1yZXByZXNlbnRpbmcgdGhlIHBhcnQuCisgICAgICBFbmNvZGUgKnMqIHVzaW5nIHRoZSBgYEFTQ0lJYGAgY29kZWMgYW5kIHRoZSBgYHN1cnJvZ2F0ZWVzY2FwZWBgIGVycm9yCisgICAgICBoYW5kbGVyLCBhbmQgcGFzcyBpdCB0byB0aGUgKndyaXRlKiBtZXRob2Qgb2YgdGhlICpvdXRmcCogcGFzc2VkIHRvIHRoZQorICAgICAgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAncyBjb25zdHJ1Y3Rvci4KIAogCi0uLiBjbGFzczo6IERlY29kZWRHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgsIGZtdD1Ob25lKQorQXMgYSBjb252ZW5pZW5jZSwgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIHByb3ZpZGVzIHRoZSBtZXRob2RzCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmFzX2J5dGVzYCBhbmQgYGBieXRlcyhhTWVzc2FnZSlgYCAoYS5rLmEuCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLl9fYnl0ZXNfX2ApLCB3aGljaCBzaW1wbGlmeSB0aGUgZ2VuZXJhdGlvbiBvZgorYSBzZXJpYWxpemVkIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKKzptb2Q6YGVtYWlsLm1lc3NhZ2VgLgogCi0gICBUaGlzIGNsYXNzLCBkZXJpdmVkIGZyb20gOmNsYXNzOmBHZW5lcmF0b3JgIHdhbGtzIHRocm91Z2ggYWxsIHRoZSBzdWJwYXJ0cyBvZiBhCi0gICBtZXNzYWdlLiAgSWYgdGhlIHN1YnBhcnQgaXMgb2YgbWFpbiB0eXBlIDptaW1ldHlwZTpgdGV4dGAsIHRoZW4gaXQgcHJpbnRzIHRoZQotICAgZGVjb2RlZCBwYXlsb2FkIG9mIHRoZSBzdWJwYXJ0LiBPcHRpb25hbCAqX21hbmdsZV9mcm9tXyogYW5kICptYXhoZWFkZXJsZW4qIGFyZQotICAgYXMgd2l0aCB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MuCiAKLSAgIElmIHRoZSBzdWJwYXJ0IGlzIG5vdCBvZiBtYWluIHR5cGUgOm1pbWV0eXBlOmB0ZXh0YCwgb3B0aW9uYWwgKmZtdCogaXMgYSBmb3JtYXQKLSAgIHN0cmluZyB0aGF0IGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgbWVzc2FnZSBwYXlsb2FkLiAqZm10KiBpcyBleHBhbmRlZCB3aXRoIHRoZQotICAgZm9sbG93aW5nIGtleXdvcmRzLCBgYCUoa2V5d29yZClzYGAgZm9ybWF0OgorQmVjYXVzZSBzdHJpbmdzIGNhbm5vdCByZXByZXNlbnQgYmluYXJ5IGRhdGEsIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MgbXVzdAorY29udmVydCBhbnkgYmluYXJ5IGRhdGEgaW4gYW55IG1lc3NhZ2UgaXQgZmxhdHRlbnMgdG8gYW4gQVNDSUkgY29tcGF0aWJsZQorZm9ybWF0LCBieSBjb252ZXJ0aW5nIHRoZW0gdG8gYW4gQVNDSUkgY29tcGF0aWJsZQorOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXJfRW5jb2RpbmdgLiAgVXNpbmcgdGhlIHRlcm1pbm9sb2d5IG9mIHRoZSBlbWFpbAorUkZDcywgeW91IGNhbiB0aGluayBvZiB0aGlzIGFzIDpjbGFzczpgR2VuZXJhdG9yYCBzZXJpYWxpemluZyB0byBhbiBJL08gc3RyZWFtCit0aGF0IGlzIG5vdCAiOCBiaXQgY2xlYW4iLiAgSW4gb3RoZXIgd29yZHMsIG1vc3QgYXBwbGljYXRpb25zIHdpbGwgd2FudAordG8gYmUgdXNpbmcgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAsIGFuZCBub3QgOmNsYXNzOmBHZW5lcmF0b3JgLgorCisuLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCAqLCBcCisgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSkKKworICAgUmV0dXJuIGEgOmNsYXNzOmBHZW5lcmF0b3JgIG9iamVjdCB0aGF0IHdpbGwgd3JpdGUgYW55IG1lc3NhZ2UgcHJvdmlkZWQKKyAgIHRvIHRoZSA6bWV0aDpgZmxhdHRlbmAgbWV0aG9kLCBvciBhbnkgdGV4dCBwcm92aWRlZCB0byB0aGUgOm1ldGg6YHdyaXRlYAorICAgbWV0aG9kLCB0byB0aGUgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgICpvdXRmcCouICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCBhCisgICBgYHdyaXRlYGAgbWV0aG9kIHRoYXQgYWNjZXB0cyBzdHJpbmcgZGF0YS4KKworICAgSWYgb3B0aW9uYWwgKm1hbmdsZV9mcm9tXyogaXMgYGBUcnVlYGAsIHB1dCBhIGBgPmBgIGNoYXJhY3RlciBpbiBmcm9udCBvZgorICAgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZXhhY3Qgc3RyaW5nIGBgIkZyb20gImBgLCB0aGF0IGlzCisgICBgYEZyb21gYCBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLiAgKm1hbmdsZV9mcm9tXyoKKyAgIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiB0aGUgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1hbmdsZV9mcm9tX2AKKyAgIHNldHRpbmcgb2YgdGhlICpwb2xpY3kqICh3aGljaCBpcyBgYFRydWVgYCBmb3IgdGhlCisgICA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgcG9saWN5IGFuZCBgYEZhbHNlYGAgZm9yIGFsbCBvdGhlcnMpLgorICAgKm1hbmdsZV9mcm9tXyogaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW4gdW5peCBtYm94CisgICBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCBhbmQgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEggRk9STUFUIElTIEJBRAorICAgPGh0dHA6Ly93d3cuand6Lm9yZy9kb2MvY29udGVudC1sZW5ndGguaHRtbD5gXykuCisKKyAgIElmICptYXhoZWFkZXJsZW4qIGlzIG5vdCBgYE5vbmVgYCwgcmVmb2xkIGFueSBoZWFkZXIgbGluZXMgdGhhdCBhcmUgbG9uZ2VyCisgICB0aGFuICptYXhoZWFkZXJsZW4qLCBvciBpZiBgYDBgYCwgZG8gbm90IHJld3JhcCBhbnkgaGVhZGVycy4gIElmCisgICAqbWFuaGVhZGVybGVuKiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB3cmFwIGhlYWRlcnMgYW5kIG90aGVyIG1lc3NhZ2UKKyAgIGxpbmVzIGFjY29yZGluZyB0byB0aGUgKnBvbGljeSogc2V0dGluZ3MuCisKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCwgdXNlIHRoYXQgcG9saWN5IHRvIGNvbnRyb2wgbWVzc2FnZSBnZW5lcmF0aW9uLiAgSWYKKyAgICpwb2xpY3kqIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHVzZSB0aGUgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCisgICBvYmplY3QgcGFzc2VkIHRvIGBgZmxhdHRlbmBgIHRvIGNvbnRyb2wgdGhlIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIFNlZQorICAgOm1vZDpgZW1haWwucG9saWN5YCBmb3IgZGV0YWlscyBvbiB3aGF0ICpwb2xpY3kqIGNvbnRyb2xzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlICptYW5nbGVfZnJvbV8qCisgICAgICBhbmQgKm1heGhlYWRlcmxlbiogcGFyYW1ldGVycyBpcyB0byBmb2xsb3cgdGhlIHBvbGljeS4KKworCisgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKKworICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQKKyAgICAgIGF0ICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgCisgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KKworICAgICAgSWYgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9wdGlvbiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCisgICAgICBpcyBgYDhiaXRgYCwgZ2VuZXJhdGUgdGhlIG1lc3NhZ2UgYXMgaWYgdGhlIG9wdGlvbiB3ZXJlIHNldCB0byBgYDdiaXRgYC4KKyAgICAgIChUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcy4pCisgICAgICBDb252ZXJ0IGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYXMgbmVlZGVkIHVzaW5nIGFuCisgICAgICBBU0NJSS1jb21wYXRpYmxlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIFRoYXQgaXMsCisgICAgICB0cmFuc2Zvcm0gcGFydHMgd2l0aCBub24tQVNDSUkgOm1haWxoZWFkZXI6YENvdG5lbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRgKSB0byBhbiBBU0NJSSBjb21wYXRpYmlsZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLCBhbmQgZW5jb2RlIFJGQy1pbnZhbGlkIG5vbi1BU0NJSQorICAgICAgYnl0ZXMgaW4gaGVhZGVycyB1c2luZyB0aGUgTUlNRSBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMKKyAgICAgIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisKKyAgICAgIElmICp1bml4ZnJvbSogaXMgYGBUcnVlYGAsIHByaW50IHRoZSBlbnZlbG9wZSBoZWFkZXIgZGVsaW1pdGVyIHVzZWQgYnkKKyAgICAgIHRoZSBVbml4IG1haWxib3ggZm9ybWF0IChzZWUgOm1vZDpgbWFpbGJveGApIGJlZm9yZSB0aGUgZmlyc3Qgb2YgdGhlCisgICAgICA6cmZjOmA1MzIyYCBoZWFkZXJzIG9mIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSWYgdGhlIHJvb3Qgb2JqZWN0IGhhcworICAgICAgbm8gZW52ZWxvcGUgaGVhZGVyLCBjcmFmdCBhIHN0YW5kYXJkIG9uZS4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KKyAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCisKKyAgICAgIElmICpsaW5lc2VwKiBpcyBub3QgYGBOb25lYGAsIHVzZSBpdCBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3RlciBiZXR3ZWVuCisgICAgICBhbGwgdGhlIGxpbmVzIG9mIHRoZSBmbGF0dGVuZWQgbWVzc2FnZS4gIElmICpsaW5lc2VwKiBpcyBgYE5vbmVgYCAodGhlCisgICAgICBkZWZhdWx0KSwgdXNlIHRoZSB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlICpwb2xpY3kqLgorCisgICAgICAuLiBYWFg6IGZsYXR0ZW4gc2hvdWxkIHRha2UgYSAqcG9saWN5KiBrZXl3b3JkLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgYGA4Yml0YGAgbWVzc2FnZSBib2RpZXMsIGFuZCB0aGUKKyAgICAgICAgICpsaW5lc2VwKiBhcmd1bWVudC4KKworCisgICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKKworICAgICAgUmV0dXJuIGFuIGluZGVwZW5kZW50IGNsb25lIG9mIHRoaXMgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlIHdpdGggdGhlCisgICAgICBleGFjdCBzYW1lIG9wdGlvbnMsIGFuZCAqZnAqIGFzIHRoZSBuZXcgKm91dGZwKi4KKworCisgICAuLiBtZXRob2Q6OiB3cml0ZShzKQorCisgICAgICBXcml0ZSAqcyogdG8gdGhlICp3cml0ZSogbWV0aG9kIG9mIHRoZSAqb3V0ZnAqIHBhc3NlZCB0byB0aGUKKyAgICAgIDpjbGFzczpgR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLiAgVGhpcyBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UKKyAgICAgIEFQSSBmb3IgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlcyB0byBiZSB1c2VkIGluIHRoZSA6ZnVuYzpgcHJpbnRgCisgICAgICBmdW5jdGlvbi4KKworCitBcyBhIGNvbnZlbmllbmNlLCA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgcHJvdmlkZXMgdGhlIG1ldGhvZHMKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuYXNfc3RyaW5nYCBhbmQgYGBzdHIoYU1lc3NhZ2UpYGAgKGEuay5hLgorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5fX3N0cl9fYCksIHdoaWNoIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mCithIGZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlIG9iamVjdC4gIEZvciBtb3JlIGRldGFpbCwgc2VlCis6bW9kOmBlbWFpbC5tZXNzYWdlYC4KKworCitUaGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgYWxzbyBwcm92aWRlcyBhIGRlcml2ZWQgY2xhc3MsCis6Y2xhc3M6YERlY29kZWRHZW5lcmF0b3JgLCB3aGljaCBpcyBsaWtlIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcywKK2V4Y2VwdCB0aGF0IG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydHMgYXJlIG5vdCBzZXJpYWxpemVkLCBidXQgYXJlIGluc3RlYWQKK3JlcHJlc2VudGVkIGluIHRoZSBvdXRwdXQgc3RyZWFtIGJ5IGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIHRlbXBsYXRlIGZpbGxlZAoraW4gd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFydC4KKworLi4gY2xhc3M6OiBEZWNvZGVkR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQ9Tm9uZSwgKiwgcG9saWN5PU5vbmUpCisKKyAgIEFjdCBsaWtlIDpjbGFzczpgR2VuZXJhdG9yYCwgZXhjZXB0IHRoYXQgZm9yIGFueSBzdWJwYXJ0IG9mIHRoZSBtZXNzYWdlCisgICBwYXNzZWQgdG8gOm1ldGg6YEdlbmVyYXRvci5mbGF0dGVuYCwgaWYgdGhlIHN1YnBhcnQgaXMgb2YgbWFpbiB0eXBlCisgICA6bWltZXR5cGU6YHRleHRgLCBwcmludCB0aGUgZGVjb2RlZCBwYXlsb2FkIG9mIHRoZSBzdWJwYXJ0LCBhbmQgaWYgdGhlIG1haW4KKyAgIHR5cGUgaXMgbm90IDptaW1ldHlwZTpgdGV4dGAsIGluc3RlYWQgb2YgcHJpbnRpbmcgaXQgZmlsbCBpbiB0aGUgc3RyaW5nCisgICAqZm10KiB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJ0IGFuZCBwcmludCB0aGUgcmVzdWx0aW5nCisgICBmaWxsZWQtaW4gc3RyaW5nLgorCisgICBUbyBmaWxsIGluICpmbXQqLCBleGVjdXRlIGBgZm10ICUgcGFydF9pbmZvYGAsIHdoZXJlIGBgcGFydF9pbmZvYGAKKyAgIGlzIGEgZGljdGlvbmFyeSBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIGtleXMgYW5kIHZhbHVlczoKIAogICAgKiBgYHR5cGVgYCAtLSBGdWxsIE1JTUUgdHlwZSBvZiB0aGUgbm9uLVwgOm1pbWV0eXBlOmB0ZXh0YCBwYXJ0CiAKQEAgLTIyNSwxNSArMjU5LDIxIEBACiAKICAgICogYGBlbmNvZGluZ2BgIC0tIENvbnRlbnQgdHJhbnNmZXIgZW5jb2Rpbmcgb2YgdGhlIG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydAogCi0gICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgKmZtdCogaXMgYGBOb25lYGAsIG1lYW5pbmcgOjoKKyAgIElmICpmbXQqIGlzIGBgTm9uZWBgLCB1c2UgdGhlIGZvbGxvd2luZyBkZWZhdWx0ICpmbXQqOgogCi0gICAgICBbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXQorICAgICAgIltOb24tdGV4dCAoJSh0eXBlKXMpIHBhcnQgb2YgbWVzc2FnZSBvbWl0dGVkLCBmaWxlbmFtZSAlKGZpbGVuYW1lKXNdIgorCisgICBPcHRpb25hbCAqX21hbmdsZV9mcm9tXyogYW5kICptYXhoZWFkZXJsZW4qIGFyZSBhcyB3aXRoIHRoZQorICAgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MuCiAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsjXSBUaGlzIHN0YXRlbWVudCBhc3N1bWVzIHRoYXQgeW91IHVzZSB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZyBmb3IgdGhlCi0gICAgICAgYGB1bml4ZnJvbWBgIGFyZ3VtZW50LCBhbmQgdGhhdCB5b3Ugc2V0IG1heGhlYWRlcmxlbj0wICh3aGljaCB3aWxsCi0gICAgICAgcHJlc2VydmUgd2hhdGV2ZXIgdGhlIGlucHV0IGxpbmUgbGVuZ3RocyB3ZXJlKS4gIEl0IGlzIGFsc28gbm90IHN0cmljdGx5Ci0gICAgICAgdHJ1ZSwgc2luY2UgaW4gbWFueSBjYXNlcyBydW5zIG9mIHdoaXRlc3BhY2UgaW4gaGVhZGVycyBhcmUgY29sbGFwc2VkCi0gICAgICAgaW50byBzaW5nbGUgYmxhbmtzLiAgVGhlIGxhdHRlciBpcyBhIGJ1ZyB0aGF0IHdpbGwgZXZlbnR1YWxseSBiZSBmaXhlZC4KKy4uIFsjXSBUaGlzIHN0YXRlbWVudCBhc3N1bWVzIHRoYXQgeW91IHVzZSB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZyBmb3IKKyAgICAgICBgYHVuaXhmcm9tYGAsIGFuZCB0aGF0IHRoZXJlIGFyZSBubyA6bW9kOmBwb2xpY3lgIHNldHRpbmdzIGNhbGxpbmcgZm9yCisgICAgICAgYXV0b21hdGljIGFkanVzdG1lbnRzIChmb3IgZXhhbXBsZSwKKyAgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kucmVmb2xkX3NvdXJjZWAgbXVzdCBiZSBgYG5vbmVgYCwgd2hpY2ggaXMKKyAgICAgICAqbm90KiB0aGUgZGVmYXVsdCkuICBJdCBpcyBhbHNvIG5vdCAxMDAlIHRydWUsIHNpbmNlIGlmIHRoZSBtZXNzYWdlCisgICAgICAgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgUkZDIHN0YW5kYXJkcyBvY2Nhc2lvbmFsbHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICAgICAgZXhhY3Qgb3JpZ2luYWwgdGV4dCBpcyBsb3N0IGR1cmluZyBwYXJzaW5nIGVycm9yIHJlY292ZXJ5LiAgSXQgaXMgYSBnb2FsCisgICAgICAgdG8gZml4IHRoZXNlIGxhdHRlciBlZGdlIGNhc2VzIHdoZW4gcG9zc2libGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdAppbmRleCBlOTQ4MzdjLi4wNzE1MmMyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKQEAgLTgsNiArOCwxNCBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSW4gdGhlIGN1cnJlbnQgQVBJCitlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgaGVhZGVycyBpcyBoYW5kbGVkIHRyYW5zcGFyZW50bHkgYnkgdGhlCitkaWN0aW9uYXJ5LWxpa2UgQVBJIG9mIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MuICBJbgorYWRkaXRpb24gdG8gdXNlcyBpbiBsZWdhY3kgY29kZSwgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWZ1bCBpbiBhcHBsaWNhdGlvbnMgdGhhdAorbmVlZCB0byBjb21wbGV0ZWx5IGNvbnRyb2wgdGhlIGNoYXJhY3RlciBzZXRzIHVzZWQgd2hlbiBlbmNvZGluZyBoZWFkZXJzLgorCitUaGUgcmVtYWluaW5nIHRleHQgaW4gdGhpcyBzZWN0aW9uIGlzIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIG9mIHRoZSBtb2R1bGUuCisKIDpyZmM6YDI4MjJgIGlzIHRoZSBiYXNlIHN0YW5kYXJkIHRoYXQgZGVzY3JpYmVzIHRoZSBmb3JtYXQgb2YgZW1haWwgbWVzc2FnZXMuCiBJdCBkZXJpdmVzIGZyb20gdGhlIG9sZGVyIDpyZmM6YDgyMmAgc3RhbmRhcmQgd2hpY2ggY2FtZSBpbnRvIHdpZGVzcHJlYWQgdXNlIGF0CiBhIHRpbWUgd2hlbiBtb3N0IGVtYWlsIHdhcyBjb21wb3NlZCBvZiBBU0NJSSBjaGFyYWN0ZXJzIG9ubHkuICA6cmZjOmAyODIyYCBpcyBhCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKaW5kZXggMDcwN2JkOC4uMmM4MzBjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdApAQCAtNywyMCArNywxMiBAQAogLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0KICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5YAogCi0uLiBub3RlOjoKLQotICAgVGhlIGhlYWRlcnJlZ2lzdHJ5IG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCi0gICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQotICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBtb2R1bGUpIG1heSBvY2N1ciBpZiBkZWVtZWQKLSAgIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCiAtLS0tLS0tLS0tLS0tLQogCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXworCiBIZWFkZXJzIGFyZSByZXByZXNlbnRlZCBieSBjdXN0b21pemVkIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBzdHJgLiAgVGhlCiBwYXJ0aWN1bGFyIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGEgZ2l2ZW4gaGVhZGVyIGlzIGRldGVybWluZWQgYnkgdGhlCiA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeWAgb2YgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGluCkBAIC04NiwxMCArNzgsMTEgQEAKICAgIC4uIG1ldGhvZDo6IGZvbGQoKiwgcG9saWN5KQogCiAgICAgICBSZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubGluZXNlcGAKLSAgICAgIGNoYXJhY3RlcnMgYXMgcmVxdWlyZWQgdG8gY29ycmVjdGx5IGZvbGQgdGhlIGhlYWRlciBhY2NvcmRpbmcKLSAgICAgIHRvICpwb2xpY3kqLiAgQSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIG9mCi0gICAgICBgYDhiaXRgYCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBgYDdiaXRgYCwgc2luY2Ugc3RyaW5ncwotICAgICAgbWF5IG5vdCBjb250YWluIGJpbmFyeSBkYXRhLgorICAgICAgY2hhcmFjdGVycyBhcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgZm9sZCB0aGUgaGVhZGVyIGFjY29yZGluZyB0bworICAgICAgKnBvbGljeSouICBBIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgb2YgYGA4Yml0YGAgd2lsbCBiZQorICAgICAgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBgN2JpdGBgLCBzaW5jZSBoZWFkZXJzIG1heSBub3QgY29udGFpbiBhcmJpdHJhcnkKKyAgICAgIGJpbmFyeSBkYXRhLiAgSWYgOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kudXRmOGAgaXMgYGBGYWxzZWBgLAorICAgICAgbm9uLUFTQ0lJIGRhdGEgd2lsbCBiZSA6cmZjOmAyMDQ3YCBlbmNvZGVkLgogCiAKICAgIGBgQmFzZUhlYWRlcmBgIGJ5IGl0c2VsZiBjYW5ub3QgYmUgdXNlZCB0byBjcmVhdGUgYSBoZWFkZXIgb2JqZWN0LiAgSXQKQEAgLTEwNiw3ICs5OSw3IEBACiAgICB2YWx1ZXMgZm9yIGF0IGxlYXN0IHRoZSBrZXlzIGBgZGVjb2RlZGBgIGFuZCBgYGRlZmVjdHNgYC4gIGBgZGVjb2RlZGBgCiAgICBzaG91bGQgYmUgdGhlIHN0cmluZyB2YWx1ZSBmb3IgdGhlIGhlYWRlciAodGhhdCBpcywgdGhlIGhlYWRlciB2YWx1ZSBmdWxseQogICAgZGVjb2RlZCB0byB1bmljb2RlKS4gIFRoZSBwYXJzZSBtZXRob2Qgc2hvdWxkIGFzc3VtZSB0aGF0ICpzdHJpbmcqIG1heQotICAgY29udGFpbiB0cmFuc3BvcnQgZW5jb2RlZCBwYXJ0cywgYnV0IHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFsbCB2YWxpZAorICAgY29udGFpbiBjb250ZW50LXRyYW5zZmVyLWVuY29kZWQgcGFydHMsIGJ1dCBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhbGwgdmFsaWQKICAgIHVuaWNvZGUgY2hhcmFjdGVycyBhcyB3ZWxsIHNvIHRoYXQgaXQgY2FuIHBhcnNlIHVuLWVuY29kZWQgaGVhZGVyIHZhbHVlcy4KIAogICAgYGBCYXNlSGVhZGVyYGAncyBgYF9fbmV3X19gYCB0aGVuIGNyZWF0ZXMgdGhlIGhlYWRlciBpbnN0YW5jZSwgYW5kIGNhbGxzIGl0cwpAQCAtMTM1LDExICsxMjgsMTAgQEAKICAgIG1lY2hhbmlzbSBmb3IgZW5jb2Rpbmcgbm9uLUFTQ0lJIHRleHQgYXMgQVNDSUkgY2hhcmFjdGVycyB3aXRoaW4gYSBoZWFkZXIKICAgIHZhbHVlLiAgV2hlbiBhICp2YWx1ZSogY29udGFpbmluZyBlbmNvZGVkIHdvcmRzIGlzIHBhc3NlZCB0byB0aGUKICAgIGNvbnN0cnVjdG9yLCB0aGUgYGBVbnN0cnVjdHVyZWRIZWFkZXJgYCBwYXJzZXIgY29udmVydHMgc3VjaCBlbmNvZGVkIHdvcmRzCi0gICBiYWNrIGluIHRvIHRoZSBvcmlnaW5hbCB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvcgotICAgdW5zdHJ1Y3R1cmVkIHRleHQuICBUaGUgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluCi0gICBub24tY29tcGxpYW50IGVuY29kZWQgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwKLSAgIGFzIGRlZmVjdHMgZm9yIGlzc3VlcyBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IKLSAgIHRoZSBub24tZW5jb2RlZCB0ZXh0LgorICAgaW50byB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvciB1bnN0cnVjdHVyZWQgdGV4dC4gIFRoZQorICAgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluIG5vbi1jb21wbGlhbnQgZW5jb2RlZAorICAgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwgYXMgZGVmZWN0cyBmb3IgaXNzdWVzCisgICBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IgdGhlIG5vbi1lbmNvZGVkIHRleHQuCiAKICAgIFRoaXMgaGVhZGVyIHR5cGUgcHJvdmlkZXMgbm8gYWRkaXRpb25hbCBhdHRyaWJ1dGVzLgogCkBAIC0yMTMsMTUgKzIwNSwxNiBAQAogICAgICAgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIGlzICJmbGF0dGVuZWQiIGludG8gYSBvbmUgZGltZW5zaW9uYWwgbGlzdCkuCiAKICAgIFRoZSBgYGRlY29kZWRgYCB2YWx1ZSBvZiB0aGUgaGVhZGVyIHdpbGwgaGF2ZSBhbGwgZW5jb2RlZCB3b3JkcyBkZWNvZGVkIHRvCi0gICB1bmljb2RlLiAgOmNsYXNzOmB+ZW5jb2RpbmdzLmlkbmFgIGVuY29kZWQgZG9tYWluIG5hbWVzIGFyZSBhbHNvIGRlY29kZWQgdG8gdW5pY29kZS4gIFRoZQotICAgYGBkZWNvZGVkYGAgdmFsdWUgaXMgc2V0IGJ5IDphdHRyOmB+c3RyLmpvaW5gXCBpbmcgdGhlIDpjbGFzczpgc3RyYCB2YWx1ZSBvZgotICAgdGhlIGVsZW1lbnRzIG9mIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSB3aXRoIGBgJywgJ2BgLgorICAgdW5pY29kZS4gIDpjbGFzczpgfmVuY29kaW5ncy5pZG5hYCBlbmNvZGVkIGRvbWFpbiBuYW1lcyBhcmUgYWxzbyBkZWNvZGVkIHRvCisgICB1bmljb2RlLiAgVGhlIGBgZGVjb2RlZGBgIHZhbHVlIGlzIHNldCBieSA6YXR0cjpgfnN0ci5qb2luYFwgaW5nIHRoZQorICAgOmNsYXNzOmBzdHJgIHZhbHVlIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgYGBncm91cHNgYCBhdHRyaWJ1dGUgd2l0aCBgYCcsCisgICAnYGAuCiAKICAgIEEgbGlzdCBvZiA6Y2xhc3M6YC5BZGRyZXNzYCBhbmQgOmNsYXNzOmAuR3JvdXBgIG9iamVjdHMgaW4gYW55IGNvbWJpbmF0aW9uCiAgICBtYXkgYmUgdXNlZCB0byBzZXQgdGhlIHZhbHVlIG9mIGFuIGFkZHJlc3MgaGVhZGVyLiAgYGBHcm91cGBgIG9iamVjdHMgd2hvc2UKICAgIGBgZGlzcGxheV9uYW1lYGAgaXMgYGBOb25lYGAgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBzaW5nbGUgYWRkcmVzc2VzLCB3aGljaAogICAgYWxsb3dzIGFuIGFkZHJlc3MgbGlzdCB0byBiZSBjb3BpZWQgd2l0aCBncm91cHMgaW50YWN0IGJ5IHVzaW5nIHRoZSBsaXN0Ci0gICBvYnRhaW5lZCBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSBvZiB0aGUgc291cmNlIGhlYWRlci4KKyAgIG9idGFpbmVkIGZyb20gdGhlIGBgZ3JvdXBzYGAgYXR0cmlidXRlIG9mIHRoZSBzb3VyY2UgaGVhZGVyLgogCiAKIC4uIGNsYXNzOjogU2luZ2xlQWRkcmVzc0hlYWRlcgpAQCAtMjY3LDcgKzI2MCw3IEBACiAKIC4uIGNsYXNzOjogUGFyYW1ldGVyaXplZE1JTUVIZWFkZXIKIAotICAgIE1PTUUgaGVhZGVycyBhbGwgc3RhcnQgd2l0aCB0aGUgcHJlZml4ICdDb250ZW50LScuICBFYWNoIHNwZWNpZmljIGhlYWRlciBoYXMKKyAgICBNSU1FIGhlYWRlcnMgYWxsIHN0YXJ0IHdpdGggdGhlIHByZWZpeCAnQ29udGVudC0nLiAgRWFjaCBzcGVjaWZpYyBoZWFkZXIgaGFzCiAgICAgYSBjZXJ0YWluIHZhbHVlLCBkZXNjcmliZWQgdW5kZXIgdGhlIGNsYXNzIGZvciB0aGF0IGhlYWRlci4gIFNvbWUgY2FuCiAgICAgYWxzbyB0YWtlIGEgbGlzdCBvZiBzdXBwbGVtZW50YWwgcGFyYW1ldGVycywgd2hpY2ggaGF2ZSBhIGNvbW1vbiBmb3JtYXQuCiAgICAgVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBiYXNlIGZvciBhbGwgdGhlIE1JTUUgaGVhZGVycyB0aGF0IHRha2UgcGFyYW1ldGVycy4KQEAgLTQ1NCwzICs0NDcsOSBAQAogICAgICAgYGBkaXNwbGF5X25hbWVgYCBpcyBub25lIGFuZCB0aGVyZSBpcyBhIHNpbmdsZSBgYEFkZHJlc3NgYCBpbiB0aGUKICAgICAgIGBgYWRkcmVzc2VzYGAgbGlzdCwgdGhlIGBgc3RyYGAgdmFsdWUgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgYGBzdHJgYCBvZgogICAgICAgdGhhdCBzaW5nbGUgYGBBZGRyZXNzYGAuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBPcmluZ2FsbHkgYWRkZWQgaW4gMy4zIGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKaW5kZXggMjkwNzk3NS4uOTUxMzZkMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKQEAgLTMsOTEgKzMsMTAyIEBACiAKIC4uIG1vZHVsZTo6IGVtYWlsLm1lc3NhZ2UKICAgIDpzeW5vcHNpczogVGhlIGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGVtYWlsIG1lc3NhZ2VzLgorLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+LAorICAgICAgICAgICAgICAgICAgIEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4KIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvbWVzc2FnZS5weWAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhlIGNlbnRyYWwgY2xhc3MgaW4gdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzLAotaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwubWVzc2FnZWAgbW9kdWxlLiAgSXQgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIHRoZQotOm1vZDpgZW1haWxgIG9iamVjdCBtb2RlbC4gIDpjbGFzczpgTWVzc2FnZWAgcHJvdmlkZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IKLXNldHRpbmcgYW5kIHF1ZXJ5aW5nIGhlYWRlciBmaWVsZHMsIGFuZCBmb3IgYWNjZXNzaW5nIG1lc3NhZ2UgYm9kaWVzLgorLi4gdmVyc2lvbmFkZGVkOjogMy42IFsxXV8KIAotQ29uY2VwdHVhbGx5LCBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0IGNvbnNpc3RzIG9mICpoZWFkZXJzKiBhbmQgKnBheWxvYWRzKi4KLUhlYWRlcnMgYXJlIDpyZmM6YDI4MjJgIHN0eWxlIGZpZWxkIG5hbWVzIGFuZCB2YWx1ZXMgd2hlcmUgdGhlIGZpZWxkIG5hbWUgYW5kCi12YWx1ZSBhcmUgc2VwYXJhdGVkIGJ5IGEgY29sb24uICBUaGUgY29sb24gaXMgbm90IHBhcnQgb2YgZWl0aGVyIHRoZSBmaWVsZCBuYW1lCi1vciB0aGUgZmllbGQgdmFsdWUuCitUaGUgY2VudHJhbCBjbGFzcyBpbiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgdGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYAorY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLm1lc3NhZ2VgIG1vZHVsZS4gIEl0IGlzIHRoZSBiYXNlIGNsYXNzIGZvcgordGhlIDptb2Q6YGVtYWlsYCBvYmplY3QgbW9kZWwuICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgcHJvdmlkZXMgdGhlIGNvcmUKK2Z1bmN0aW9uYWxpdHkgZm9yIHNldHRpbmcgYW5kIHF1ZXJ5aW5nIGhlYWRlciBmaWVsZHMsIGZvciBhY2Nlc3NpbmcgbWVzc2FnZQorYm9kaWVzLCBhbmQgZm9yIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBzdHJ1Y3R1cmVkIG1lc3NhZ2VzLgogCi1IZWFkZXJzIGFyZSBzdG9yZWQgYW5kIHJldHVybmVkIGluIGNhc2UtcHJlc2VydmluZyBmb3JtIGJ1dCBhcmUgbWF0Y2hlZAotY2FzZS1pbnNlbnNpdGl2ZWx5LiAgVGhlcmUgbWF5IGFsc28gYmUgYSBzaW5nbGUgZW52ZWxvcGUgaGVhZGVyLCBhbHNvIGtub3duIGFzCi10aGUgKlVuaXgtRnJvbSogaGVhZGVyIG9yIHRoZSBgYEZyb21fYGAgaGVhZGVyLiAgVGhlIHBheWxvYWQgaXMgZWl0aGVyIGEgc3RyaW5nCi1pbiB0aGUgY2FzZSBvZiBzaW1wbGUgbWVzc2FnZSBvYmplY3RzIG9yIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgZm9yCi1NSU1FIGNvbnRhaW5lciBkb2N1bWVudHMgKGUuZy4gOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIGFuZAotOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApLgorQW4gZW1haWwgbWVzc2FnZSBjb25zaXN0cyBvZiAqaGVhZGVycyogYW5kIGEgKnBheWxvYWQqICh3aGljaCBpcyBhbHNvIHJlZmVycmVkCit0byBhcyB0aGUgKmNvbnRlbnQqKS4gIEhlYWRlcnMgYXJlIDpyZmM6YDUzMjJgIG9yIDpyZmM6YDY1MzJgIHN0eWxlIGZpZWxkIG5hbWVzCithbmQgdmFsdWVzLCB3aGVyZSB0aGUgZmllbGQgbmFtZSBhbmQgdmFsdWUgYXJlIHNlcGFyYXRlZCBieSBhIGNvbG9uLiAgVGhlIGNvbG9uCitpcyBub3QgcGFydCBvZiBlaXRoZXIgdGhlIGZpZWxkIG5hbWUgb3IgdGhlIGZpZWxkIHZhbHVlLiAgVGhlIHBheWxvYWQgbWF5IGJlIGEKK3NpbXBsZSB0ZXh0IG1lc3NhZ2UsIG9yIGEgYmluYXJ5IG9iamVjdCwgb3IgYSBzdHJ1Y3R1cmVkIHNlcXVlbmNlIG9mCitzdWItbWVzc2FnZXMgZWFjaCB3aXRoIHRoZWlyIG93biBzZXQgb2YgaGVhZGVycyBhbmQgdGhlaXIgb3duIHBheWxvYWQuICBUaGUKK2xhdHRlciB0eXBlIG9mIHBheWxvYWQgaXMgaW5kaWNhdGVkIGJ5IHRoZSBtZXNzYWdlIGhhdmluZyBhIE1JTUUgdHlwZSBzdWNoIGFzCis6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCiAKLTpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBwcm92aWRlIGEgbWFwcGluZyBzdHlsZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKLW1lc3NhZ2UgaGVhZGVycywgYW5kIGFuIGV4cGxpY2l0IGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIGJvdGggdGhlIGhlYWRlcnMgYW5kCi10aGUgcGF5bG9hZC4gIEl0IHByb3ZpZGVzIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGdlbmVyYXRpbmcgYSBmbGF0IHRleHQKLXJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCB0cmVlLCBmb3IgYWNjZXNzaW5nIGNvbW1vbmx5IHVzZWQgaGVhZGVyCi1wYXJhbWV0ZXJzLCBhbmQgZm9yIHJlY3Vyc2l2ZWx5IHdhbGtpbmcgb3ZlciB0aGUgb2JqZWN0IHRyZWUuCitUaGUgY29uY2VwdHVhbCBtb2RlbCBwcm92aWRlZCBieSBhbiA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0IGlzIHRoYXQgb2YgYW4KK29yZGVyZWQgZGljdGlvbmFyeSBvZiBoZWFkZXJzIGNvdXBsZWQgd2l0aCBhICpwYXlsb2FkKiB0aGF0IHJlcHJlc2VudHMgdGhlCis6cmZjOmA1MzIyYCBib2R5IG9mIHRoZSBtZXNzYWdlLCB3aGljaCBtaWdodCBiZSBhIGxpc3Qgb2Ygc3ViLWBgRW1haWxNZXNzYWdlYGAKK29iamVjdHMuICBJbiBhZGRpdGlvbiB0byB0aGUgbm9ybWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIHRoZSBoZWFkZXIKK25hbWVzIGFuZCB2YWx1ZXMsIHRoZXJlIGFyZSBtZXRob2RzIGZvciBhY2Nlc3Npbmcgc3BlY2lhbGl6ZWQgaW5mb3JtYXRpb24gZnJvbQordGhlIGhlYWRlcnMgKGZvciBleGFtcGxlIHRoZSBNSU1FIGNvbnRlbnQgdHlwZSksIGZvciBvcGVyYXRpbmcgb24gdGhlIHBheWxvYWQsCitmb3IgZ2VuZXJhdGluZyBhIHNlcmlhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbWVzc2FnZSwgYW5kIGZvciByZWN1cnNpdmVseSB3YWxraW5nCitvdmVyIHRoZSBvYmplY3QgdHJlZS4KIAotSGVyZSBhcmUgdGhlIG1ldGhvZHMgb2YgdGhlIDpjbGFzczpgTWVzc2FnZWAgY2xhc3M6CitUaGUgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIGRpY3Rpb25hcnktbGlrZSBpbnRlcmZhY2UgaXMgaW5kZXhlZCBieSB0aGUgaGVhZGVyCituYW1lcywgd2hpY2ggbXVzdCBiZSBBU0NJSSB2YWx1ZXMuICBUaGUgdmFsdWVzIG9mIHRoZSBkaWN0aW9uYXJ5IGFyZSBzdHJpbmdzCit3aXRoIHNvbWUgZXh0cmEgbWV0aG9kcy4gIEhlYWRlcnMgYXJlIHN0b3JlZCBhbmQgcmV0dXJuZWQgaW4gY2FzZS1wcmVzZXJ2aW5nCitmb3JtLCBidXQgZmllbGQgbmFtZXMgYXJlIG1hdGNoZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiAgVW5saWtlIGEgcmVhbCBkaWN0LAordGhlcmUgaXMgYW4gb3JkZXJpbmcgdG8gdGhlIGtleXMsIGFuZCB0aGVyZSBjYW4gYmUgZHVwbGljYXRlIGtleXMuICBBZGRpdGlvbmFsCittZXRob2RzIGFyZSBwcm92aWRlZCBmb3Igd29ya2luZyB3aXRoIGhlYWRlcnMgdGhhdCBoYXZlIGR1cGxpY2F0ZSBrZXlzLgorCitUaGUgKnBheWxvYWQqIGlzIGVpdGhlciBhIHN0cmluZyBvciBieXRlcyBvYmplY3QsIGluIHRoZSBjYXNlIG9mIHNpbXBsZSBtZXNzYWdlCitvYmplY3RzLCBvciBhIGxpc3Qgb2YgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMsIGZvciBNSU1FIGNvbnRhaW5lcgorZG9jdW1lbnRzIHN1Y2ggYXMgOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIGFuZCA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYAorbWVzc2FnZSBvYmplY3RzLgogCiAKLS4uIGNsYXNzOjogTWVzc2FnZShwb2xpY3k9Y29tcGF0MzIpCisuLiBjbGFzczo6IEVtYWlsTWVzc2FnZShwb2xpY3k9ZGVmYXVsdCkKIAotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgYW5kIHNlcmlhbGl6ZSB0aGUgcmVwcmVzZW50YXRpb24KLSAgIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVkcGF0ZSBhbmQgc2VyaWFsaXplCisgICB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuZGVmYXVsdGAgcG9saWN5LCB3aGljaCBmb2xsb3dzIHRoZSBydWxlcyBvZiB0aGUgZW1haWwKKyAgIFJGQ3MgZXhjZXB0IGZvciBsaW5lIGVuZGluZ3MgKGluc3RlYWQgb2YgdGhlIFJGQyBtYW5kYXRlZCBgYFxyXG5gYCwgaXQgdXNlcworICAgdGhlIFB5dGhvbiBzdGFuZGFyZCBgYFxuYGAgbGluZSBlbmRpbmdzKS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKICAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIFRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKyAgIC4uIG1ldGhvZDo6IGFzX3N0cmluZyh1bml4ZnJvbT1GYWxzZSwgbWF4aGVhZGVybGVuPU5vbmUsIHBvbGljeT1Ob25lKQogCisgICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIHN0cmluZy4gIFdoZW4gb3B0aW9uYWwKKyAgICAgICp1bml4ZnJvbSogaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQKKyAgICAgIHN0cmluZy4gICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgRm9yIGJhY2t3YXJkIGNvbXBhYml0aWxpdHkKKyAgICAgIHdpdGggdGhlIGJhc2UgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcyAqbWF4aGVhZGVybGVuKiBpcworICAgICAgYWNjZXB0ZWQsIGJ1dCBkZWZhdWx0cyB0byBgYE5vbmVgYCwgd2hpY2ggbWVhbnMgdGhhdCBieSBkZWZhdWx0IHRoZSBsaW5lCisgICAgICBsZW5ndGggaXMgY29udHJvbGxlZCBieSB0aGUKKyAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5Lm1heF9saW5lX2xlbmd0aGAgb2YgdGhlIHBvbGljeS4gIFRoZQorICAgICAgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkCisgICAgICBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlCisgICAgICBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZSBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZQorICAgICAgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYC4KIAotICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49MCwgcG9saWN5PU5vbmUpCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYAorICAgICAgaWYgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEKKyAgICAgIHN0cmluZyAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KIAotICAgICAgUmV0dXJuIHRoZSBlbnRpcmUgbWVzc2FnZSBmbGF0dGVuZWQgYXMgYSBzdHJpbmcuICBXaGVuIG9wdGlvbmFsICp1bml4ZnJvbSoKLSAgICAgIGlzIHRydWUsIHRoZSBlbnZlbG9wZSBoZWFkZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkIHN0cmluZy4KLSAgICAgICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgRm9yIGJhY2t3YXJkIGNvbXBhYml0aWxpdHkgcmVhc29ucywKLSAgICAgICptYXhoZWFkZXJsZW4qIGRlZmF1bHRzIHRvIGBgMGBgLCBzbyBpZiB5b3Ugd2FudCBhIGRpZmZlcmVudCB2YWx1ZSB5b3UKLSAgICAgIG11c3Qgb3ZlcnJpZGUgaXQgZXhwbGljaXRseSAodGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgKm1heF9saW5lX2xlbmd0aCogaW4KLSAgICAgIHRoZSBwb2xpY3kgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoaXMgbWV0aG9kKS4gIFRoZSAqcG9saWN5KiBhcmd1bWVudCBtYXkgYmUKLSAgICAgIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuCi0gICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUKLSAgICAgIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYGBHZW5lcmF0b3JgYC4KKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGJlIHRoZQorICAgICAgbW9zdCB1c2VmdWwgd2F5IHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyBpbiB5b3VyIGFwcGxpY2F0aW9uLCBlc3BlY2lhbGx5IGlmCisgICAgICB5b3UgYXJlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBtZXNzYWdlcy4gIFNlZQorICAgICAgOmNsYXNzOmBlbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBmb3IgYSBtb3JlIGZsZXhpYmxlIEFQSSBmb3IKKyAgICAgIHNlcmlhbGl6aW5nIG1lc3NhZ2VzLiAgTm90ZSBhbHNvIHRoYXQgdGhpcyBtZXRob2QgaXMgcmVzdHJpY3RlZCB0bworICAgICAgcHJvZHVjaW5nIG1lc3NhZ2VzIHNlcmlhbGl6ZWQgYXMgIjcgYml0IGNsZWFuIiB3aGVuCisgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS51dGY4YCBpcyBgYEZhbHNlYGAsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgogCi0gICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKLSAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZwotICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCi0KLSAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cwotICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCi0gICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCi0gICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBpbnN0YW5jZSBhbmQgdXNlIGl0cwotICAgICAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4gIEZvciBleGFtcGxlOjoKLQotICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KLSAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IKLSAgICAgICAgIGZwID0gU3RyaW5nSU8oKQotICAgICAgICAgZyA9IEdlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKLSAgICAgICAgIGcuZmxhdHRlbihtc2cpCi0gICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQotCi0gICAgICBJZiB0aGUgbWVzc2FnZSBvYmplY3QgY29udGFpbnMgYmluYXJ5IGRhdGEgdGhhdCBpcyBub3QgZW5jb2RlZCBhY2NvcmRpbmcKLSAgICAgIHRvIFJGQyBzdGFuZGFyZHMsIHRoZSBub24tY29tcGxpYW50IGRhdGEgd2lsbCBiZSByZXBsYWNlZCBieSB1bmljb2RlCi0gICAgICAidW5rbm93biBjaGFyYWN0ZXIiIGNvZGUgcG9pbnRzLiAgKFNlZSBhbHNvIDptZXRoOmAuYXNfYnl0ZXNgIGFuZAotICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4pCi0KLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IHRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IHRoZSBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gKm1heGhlYWRlcmxlbioKKyAgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQgd2FzIGNoYW5nZWQgZnJvbSBkZWZhdWx0aW5nIHRvIDAgdG8gZGVmYXVsdGluZworICAgICAgICAgdG8gdGhlIHZhbHVlIG9mICptYXhfbGluZV9sZW5ndGgqIGZyb20gdGhlIHBvbGljeS4KIAogCiAgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKIAotICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX3N0cmluZygpYC4gIEFsbG93cyBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhCi0gICAgICBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCisgICAgICBFcXVpdmFsZW50IHRvIGBhc19zdHJpbmcocG9saWN5PXNlbGYucG9saWN5LmNsb25lKHV0Zjg9VHJ1ZSlgLiAgQWxsb3dzCisgICAgICBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhIHN0cmluZyBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UgaW4gYQorICAgICAgcmVhZGFibGUgZm9ybWF0LgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCB0aGUgbWV0aG9kIHdhcyBjaGFuZ2VkIHRvIHVzZSBgYHV0Zjg9VHJ1ZWBgLAorICAgICAgICAgdGh1cyBwcm9kdWNpbmcgYW4gOnJmYzpgNjUzMWAtbGlrZSBtZXNzYWdlIHJlcHJlc2VudGF0aW9uLCBpbnN0ZWFkIG9mCisgICAgICAgICBiZWluZyBhIGRpcmVjdCBhbGlhcyBmb3IgOm1ldGg6YGFzX3N0cmluZ2AuCiAKIAogICAgLi4gbWV0aG9kOjogYXNfYnl0ZXModW5peGZyb209RmFsc2UsIHBvbGljeT1Ob25lKQpAQCAtOTgsNTIgKzEwOSw0MiBAQAogICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KICAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQogICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQotICAgICAgYGBCeXRlc0dlbmVyYXRvcmBgLgorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4KIAotICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmCi0gICAgICBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcKLSAgICAgIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgorICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAKKyAgICAgIGlmIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhCisgICAgICBzdHJpbmcgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCiAKLSAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cwotICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCi0gICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCi0gICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCi0gICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvci5mbGF0dGVuYCBtZXRob2QgZGlyZWN0bHkuCi0gICAgICBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgICAgIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KLSAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgotICAgICAgICAgZnAgPSBCeXRlc0lPKCkKLSAgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKLSAgICAgICAgIGcuZmxhdHRlbihtc2cpCi0gICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGJlIHRoZQorICAgICAgbW9zdCB1c2VmdWwgd2F5IHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyBpbiB5b3VyIGFwcGxpY2F0aW9uLCBlc3BlY2lhbGx5IGlmCisgICAgICB5b3UgYXJlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBtZXNzYWdlcy4gIFNlZQorICAgICAgOmNsYXNzOmBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGZvciBhIG1vcmUgZmxleGlibGUgQVBJIGZvcgorICAgICAgc2VyaWFsaXppbmcgbWVzc2FnZXMuCiAKIAogICAgLi4gbWV0aG9kOjogX19ieXRlc19fKCkKIAogICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX2J5dGVzKClgLiAgQWxsb3dzIGBgYnl0ZXMobXNnKWBgIHRvIHByb2R1Y2UgYQotICAgICAgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UuCiAKIAogICAgLi4gbWV0aG9kOjogaXNfbXVsdGlwYXJ0KCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpcyBhIGxpc3Qgb2Ygc3ViLVwKLSAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCisgICAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCiAgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgRmFsc2VgYCwgdGhlIHBheWxvYWQgc2hvdWxkIGJlIGEgc3RyaW5nCi0gICAgICBvYmplY3QuICAoTm90ZSB0aGF0IDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybmluZyBgYFRydWVgYCBkb2VzIG5vdAotICAgICAgbmVjZXNzYXJpbHkgbWVhbiB0aGF0ICJtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyIgd2lsbAotICAgICAgcmV0dXJuIHRoZSBgYFRydWVgYC4gICBGb3IgZXhhbXBsZSwgYGBpc19tdWx0aXBhcnRgYCB3aWxsIHJldHVybiBgYFRydWVgYAotICAgICAgd2hlbiB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpcyBvZiB0eXBlIGBgbWVzc2FnZS9yZmM4MjJgYC4pCisgICAgICBvYmplY3QgKHdoaWNoIG1pZ2h0IGJlIGEgQ1RFIGVuY29kZWQgYmluYXJ5IHBheWxvYWQpLiAgTm90ZSB0aGF0CisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5pbmcgYGBUcnVlYGAgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0CisgICAgICAibXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCciIHdpbGwgcmV0dXJuIHRoZSBgYFRydWVgYC4KKyAgICAgIEZvciBleGFtcGxlLCBgYGlzX211bHRpcGFydGBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIHdoZW4gdGhlCisgICAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgaXMgb2YgdHlwZSBgYG1lc3NhZ2UvcmZjODIyYGAuCiAKIAogICAgLi4gbWV0aG9kOjogc2V0X3VuaXhmcm9tKHVuaXhmcm9tKQogCi0gICAgICBTZXQgdGhlIG1lc3NhZ2UncyBlbnZlbG9wZSBoZWFkZXIgdG8gKnVuaXhmcm9tKiwgd2hpY2ggc2hvdWxkIGJlIGEgc3RyaW5nLgorICAgICAgU2V0IHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyIHRvICp1bml4ZnJvbSosIHdoaWNoIHNob3VsZCBiZSBhCisgICAgICBzdHJpbmcuICAoU2VlIDpjbGFzczpgfm1haWxib3gubWJveE1lc3NhZ2VgIGZvciBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mCisgICAgICB0aGlzIGhlYWRlci4pCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X3VuaXhmcm9tKCkKQEAgLTE1MiwxMDkgKzE1MywyMyBAQAogICAgICAgZW52ZWxvcGUgaGVhZGVyIHdhcyBuZXZlciBzZXQuCiAKIAotICAgLi4gbWV0aG9kOjogYXR0YWNoKHBheWxvYWQpCi0KLSAgICAgIEFkZCB0aGUgZ2l2ZW4gKnBheWxvYWQqIHRvIHRoZSBjdXJyZW50IHBheWxvYWQsIHdoaWNoIG11c3QgYmUgYGBOb25lYGAgb3IKLSAgICAgIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgYmVmb3JlIHRoZSBjYWxsLiBBZnRlciB0aGUgY2FsbCwgdGhlCi0gICAgICBwYXlsb2FkIHdpbGwgYWx3YXlzIGJlIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMuICBJZiB5b3Ugd2FudCB0bwotICAgICAgc2V0IHRoZSBwYXlsb2FkIHRvIGEgc2NhbGFyIG9iamVjdCAoZS5nLiBhIHN0cmluZyksIHVzZQotICAgICAgOm1ldGg6YHNldF9wYXlsb2FkYCBpbnN0ZWFkLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9wYXlsb2FkKGk9Tm9uZSwgZGVjb2RlPUZhbHNlKQotCi0gICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBhIGxpc3Qgb2YKLSAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgVHJ1ZWBgLCBvciBhCi0gICAgICBzdHJpbmcgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGAuICBJZiB0aGUgcGF5bG9hZCBpcyBhIGxpc3QKLSAgICAgIGFuZCB5b3UgbXV0YXRlIHRoZSBsaXN0IG9iamVjdCwgeW91IG1vZGlmeSB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaW4gcGxhY2UuCi0KLSAgICAgIFdpdGggb3B0aW9uYWwgYXJndW1lbnQgKmkqLCA6bWV0aDpgZ2V0X3BheWxvYWRgIHdpbGwgcmV0dXJuIHRoZSAqaSotdGgKLSAgICAgIGVsZW1lbnQgb2YgdGhlIHBheWxvYWQsIGNvdW50aW5nIGZyb20gemVybywgaWYgOm1ldGg6YGlzX211bHRpcGFydGAgaXMKLSAgICAgIGBgVHJ1ZWBgLiAgQW4gOmV4YzpgSW5kZXhFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzIGxlc3MgdGhhbiAwIG9yCi0gICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgcGF5bG9hZC4gIElmIHRoZQotICAgICAgcGF5bG9hZCBpcyBhIHN0cmluZyAoaS5lLiAgOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgKSBhbmQgKmkqIGlzCi0gICAgICBnaXZlbiwgYSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KLQotICAgICAgT3B0aW9uYWwgKmRlY29kZSogaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF5bG9hZCBzaG91bGQgYmUKLSAgICAgIGRlY29kZWQgb3Igbm90LCBhY2NvcmRpbmcgdG8gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAotICAgICAgaGVhZGVyLiBXaGVuIGBgVHJ1ZWBgIGFuZCB0aGUgbWVzc2FnZSBpcyBub3QgYSBtdWx0aXBhcnQsIHRoZSBwYXlsb2FkIHdpbGwKLSAgICAgIGJlIGRlY29kZWQgaWYgdGhpcyBoZWFkZXIncyB2YWx1ZSBpcyBgYHF1b3RlZC1wcmludGFibGVgYCBvciBgYGJhc2U2NGBgLgotICAgICAgSWYgc29tZSBvdGhlciBlbmNvZGluZyBpcyB1c2VkLCBvciA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKLSAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcwotICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQotICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKLSAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuICBJZiB0aGUgcGF5bG9hZCBpcyBiYXNlNjQgYW5kIGl0IHdhcyBub3QKLSAgICAgIHBlcmZlY3RseSBmb3JtZWQgKG1pc3NpbmcgcGFkZGluZywgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBiYXNlNjQKLSAgICAgIGFscGhhYmV0KSwgdGhlbiBhbiBhcHByb3ByaWF0ZSBkZWZlY3Qgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZSdzCi0gICAgICBkZWZlY3QgcHJvcGVydHkgKDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgb3IKLSAgICAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAsIHJlc3BlY3RpdmVseSkuCi0KLSAgICAgIFdoZW4gKmRlY29kZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGJvZHkgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcKLSAgICAgIHdpdGhvdXQgZGVjb2RpbmcgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIEhvd2V2ZXIsCi0gICAgICBmb3IgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCwgYW4gYXR0ZW1wdCBpcyBtYWRlCi0gICAgICB0byBkZWNvZGUgdGhlIG9yaWdpbmFsIGJ5dGVzIHVzaW5nIHRoZSBgYGNoYXJzZXRgYCBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHVzaW5nIHRoZSBgYHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyLgotICAgICAgSWYgbm8gYGBjaGFyc2V0YGAgaXMgc3BlY2lmaWVkLCBvciBpZiB0aGUgYGBjaGFyc2V0YGAgZ2l2ZW4gaXMgbm90Ci0gICAgICByZWNvZ25pemVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB0aGUgYm9keSBpcyBkZWNvZGVkIHVzaW5nIHRoZSBkZWZhdWx0Ci0gICAgICBBU0NJSSBjaGFyc2V0LgotCi0KLSAgIC4uIG1ldGhvZDo6IHNldF9wYXlsb2FkKHBheWxvYWQsIGNoYXJzZXQ9Tm9uZSkKLQotICAgICAgU2V0IHRoZSBlbnRpcmUgbWVzc2FnZSBvYmplY3QncyBwYXlsb2FkIHRvICpwYXlsb2FkKi4gIEl0IGlzIHRoZSBjbGllbnQncwotICAgICAgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoZSBwYXlsb2FkIGludmFyaWFudHMuICBPcHRpb25hbCAqY2hhcnNldCogc2V0cwotICAgICAgdGhlIG1lc3NhZ2UncyBkZWZhdWx0IGNoYXJhY3RlciBzZXQ7IHNlZSA6bWV0aDpgc2V0X2NoYXJzZXRgIGZvciBkZXRhaWxzLgotCi0gICAuLiBtZXRob2Q6OiBzZXRfY2hhcnNldChjaGFyc2V0KQotCi0gICAgICBTZXQgdGhlIGNoYXJhY3RlciBzZXQgb2YgdGhlIHBheWxvYWQgdG8gKmNoYXJzZXQqLCB3aGljaCBjYW4gZWl0aGVyIGJlIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgKHNlZSA6bW9kOmBlbWFpbC5jaGFyc2V0YCksIGEKLSAgICAgIHN0cmluZyBuYW1pbmcgYSBjaGFyYWN0ZXIgc2V0LCBvciBgYE5vbmVgYC4gIElmIGl0IGlzIGEgc3RyaW5nLCBpdCB3aWxsCi0gICAgICBiZSBjb252ZXJ0ZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlLiAgSWYgKmNoYXJzZXQqCi0gICAgICBpcyBgYE5vbmVgYCwgdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciAodGhlIG1lc3NhZ2Ugd2lsbCBub3QgYmUgb3RoZXJ3aXNlCi0gICAgICBtb2RpZmllZCkuICBBbnl0aGluZyBlbHNlIHdpbGwgZ2VuZXJhdGUgYSA6ZXhjOmBUeXBlRXJyb3JgLgotCi0gICAgICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXIgb25lIHdpbGwgYmUKLSAgICAgIGFkZGVkLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvbmUKLSAgICAgIHdpbGwgYmUgYWRkZWQgd2l0aCBhIHZhbHVlIG9mIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuICBXaGV0aGVyIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFscmVhZHkgZXhpc3RzIG9yIG5vdCwgaXRzIGBgY2hhcnNldGBgCi0gICAgICBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdG8gKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqLiAgIElmCi0gICAgICAqY2hhcnNldC5pbnB1dF9jaGFyc2V0KiBhbmQgKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqIGRpZmZlciwgdGhlIHBheWxvYWQKLSAgICAgIHdpbGwgYmUgcmUtZW5jb2RlZCB0byB0aGUgKm91dHB1dF9jaGFyc2V0Ki4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyLCB0aGVuIHRoZSBwYXlsb2FkIHdpbGwgYmUKLSAgICAgIHRyYW5zZmVyLWVuY29kZWQsIGlmIG5lZWRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAotICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCwgYW5kIGEgaGVhZGVyIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbHVlCi0gICAgICB3aWxsIGJlIGFkZGVkLiAgSWYgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyCi0gICAgICBhbHJlYWR5IGV4aXN0cywgdGhlIHBheWxvYWQgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGNvcnJlY3RseSBlbmNvZGVkCi0gICAgICB1c2luZyB0aGF0IDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBhbmQgaXMgbm90IG1vZGlmaWVkLgotCi0gICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldCgpCi0KLSAgICAgIFJldHVybiB0aGUgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICAgICBtZXNzYWdlJ3MgcGF5bG9hZC4KLQotICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCBhIG1hcHBpbmctbGlrZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKLSAgIG1lc3NhZ2UncyA6cmZjOmAyODIyYCBoZWFkZXJzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzb21lIHNlbWFudGljIGRpZmZlcmVuY2VzCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IHRoZSBtYXBwaW5nLWxpa2UgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhlCisgICBtZXNzYWdlJ3MgaGVhZGVycy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzZW1hbnRpYyBkaWZmZXJlbmNlcwogICAgYmV0d2VlbiB0aGVzZSBtZXRob2RzIGFuZCBhIG5vcm1hbCBtYXBwaW5nIChpLmUuIGRpY3Rpb25hcnkpIGludGVyZmFjZS4gIEZvcgogICAgZXhhbXBsZSwgaW4gYSBkaWN0aW9uYXJ5IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUga2V5cywgYnV0IGhlcmUgdGhlcmUgbWF5IGJlCiAgICBkdXBsaWNhdGUgbWVzc2FnZSBoZWFkZXJzLiAgQWxzbywgaW4gZGljdGlvbmFyaWVzIHRoZXJlIGlzIG5vIGd1YXJhbnRlZWQKLSAgIG9yZGVyIHRvIHRoZSBrZXlzIHJldHVybmVkIGJ5IDptZXRoOmBrZXlzYCwgYnV0IGluIGEgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3QsCi0gICBoZWFkZXJzIGFyZSBhbHdheXMgcmV0dXJuZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gdGhlIG9yaWdpbmFsCi0gICBtZXNzYWdlLCBvciB3ZXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlIGxhdGVyLiAgQW55IGhlYWRlciBkZWxldGVkIGFuZCB0aGVuCi0gICByZS1hZGRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGhlYWRlciBsaXN0LgorICAgb3JkZXIgdG8gdGhlIGtleXMgcmV0dXJuZWQgYnkgOm1ldGg6YGtleXNgLCBidXQgaW4gYW4gOmNsYXNzOmBFbWFpbE1lc3NhZ2VgCisgICBvYmplY3QsIGhlYWRlcnMgYXJlIGFsd2F5cyByZXR1cm5lZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiB0aGUKKyAgIG9yaWdpbmFsIG1lc3NhZ2UsIG9yIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBsYXRlci4gIEFueQorICAgaGVhZGVyIGRlbGV0ZWQgYW5kIHRoZW4gcmUtYWRkZWQgaXMgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlCisgICBoZWFkZXIgbGlzdC4KIAotICAgVGhlc2Ugc2VtYW50aWMgZGlmZmVyZW5jZXMgYXJlIGludGVudGlvbmFsIGFuZCBhcmUgYmlhc2VkIHRvd2FyZCBtYXhpbWFsCi0gICBjb252ZW5pZW5jZS4KKyAgIFRoZXNlIHNlbWFudGljIGRpZmZlcmVuY2VzIGFyZSBpbnRlbnRpb25hbCBhbmQgYXJlIGJpYXNlZCB0b3dhcmQKKyAgIGNvbnZlbmllbmNlIGluIHRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZXMuCiAKICAgIE5vdGUgdGhhdCBpbiBhbGwgY2FzZXMsIGFueSBlbnZlbG9wZSBoZWFkZXIgcHJlc2VudCBpbiB0aGUgbWVzc2FnZSBpcyBub3QKICAgIGluY2x1ZGVkIGluIHRoZSBtYXBwaW5nIGludGVyZmFjZS4KIAotICAgSW4gYSBtb2RlbCBnZW5lcmF0ZWQgZnJvbSBieXRlcywgYW55IGhlYWRlciB2YWx1ZXMgdGhhdCAoaW4gY29udHJhdmVudGlvbiBvZgotICAgdGhlIFJGQ3MpIGNvbnRhaW4gbm9uLUFTQ0lJIGJ5dGVzIHdpbGwsIHdoZW4gcmV0cmlldmVkIHRocm91Z2ggdGhpcwotICAgaW50ZXJmYWNlLCBiZSByZXByZXNlbnRlZCBhcyA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3RzIHdpdGgKLSAgIGEgY2hhcnNldCBvZiBgdW5rbm93bi04Yml0YC4KLQogCiAgICAuLiBtZXRob2Q6OiBfX2xlbl9fKCkKIApAQCAtMjY0LDggKzE3OSw4IEBACiAgICAuLiBtZXRob2Q6OiBfX2NvbnRhaW5zX18obmFtZSkKIAogICAgICAgUmV0dXJuIHRydWUgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGhhcyBhIGZpZWxkIG5hbWVkICpuYW1lKi4gTWF0Y2hpbmcgaXMKLSAgICAgIGRvbmUgY2FzZS1pbnNlbnNpdGl2ZWx5IGFuZCAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZyBjb2xvbi4KLSAgICAgIFVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IsIGUuZy46OgorICAgICAgZG9uZSB3aXRob3V0IHJlZ2FyZCB0byBjYXNlIGFuZCAqbmFtZSogZG9lcyBub3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcKKyAgICAgIGNvbG9uLiAgVXNlZCBmb3IgdGhlIGBgaW5gYCBvcGVyYXRvci4gIEZvciBleGFtcGxlOjoKIAogICAgICAgICAgICBpZiAnbWVzc2FnZS1pZCcgaW4gbXlNZXNzYWdlOgogICAgICAgICAgICAgICBwcmludCgnTWVzc2FnZS1JRDonLCBteU1lc3NhZ2VbJ21lc3NhZ2UtaWQnXSkKQEAgLTI3MywyMCArMTg4LDIzIEBACiAKICAgIC4uIG1ldGhvZDo6IF9fZ2V0aXRlbV9fKG5hbWUpCiAKLSAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICAqbmFtZSogZG9lcyBub3QgaW5jbHVkZSB0aGUKICAgICAgIGNvbG9uIGZpZWxkIHNlcGFyYXRvci4gIElmIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgYGBOb25lYGAgaXMgcmV0dXJuZWQ7IGEKICAgICAgIDpleGM6YEtleUVycm9yYCBpcyBuZXZlciByYWlzZWQuCiAKICAgICAgIE5vdGUgdGhhdCBpZiB0aGUgbmFtZWQgZmllbGQgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiB0aGUgbWVzc2FnZSdzCiAgICAgICBoZWFkZXJzLCBleGFjdGx5IHdoaWNoIG9mIHRob3NlIGZpZWxkIHZhbHVlcyB3aWxsIGJlIHJldHVybmVkIGlzCiAgICAgICB1bmRlZmluZWQuICBVc2UgdGhlIDptZXRoOmBnZXRfYWxsYCBtZXRob2QgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgYWxsIHRoZQotICAgICAgZXh0YW50IG5hbWVkIGhlYWRlcnMuCisgICAgICBleHRhbnQgaGVhZGVycyBuYW1lZCAqbmFtZSouCisKKyAgICAgIFVzaW5nIHRoZSBzdGFuZGFyZCAobm9uLWBgY29tcGF0MzJgYCkgcG9saWNpZXMsIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbgorICAgICAgaW5zdGFuY2Ugb2YgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YGVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXJgLgogCiAKICAgIC4uIG1ldGhvZDo6IF9fc2V0aXRlbV9fKG5hbWUsIHZhbCkKIAogICAgICAgQWRkIGEgaGVhZGVyIHRvIHRoZSBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSogYW5kIHZhbHVlICp2YWwqLiAgVGhlCi0gICAgICBmaWVsZCBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlJ3MgZXhpc3RpbmcgZmllbGRzLgorICAgICAgZmllbGQgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZSdzIGV4aXN0aW5nIGhlYWRlcnMuCiAKICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgKm5vdCogb3ZlcndyaXRlIG9yIGRlbGV0ZSBhbnkgZXhpc3RpbmcgaGVhZGVyIHdpdGggdGhlIHNhbWUKICAgICAgIG5hbWUuICBJZiB5b3Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IGhlYWRlciBpcyB0aGUgb25seSBvbmUgcHJlc2VudCBpbiB0aGUKQEAgLTI5NSw2ICsyMTMsMTMgQEAKICAgICAgICAgIGRlbCBtc2dbJ3N1YmplY3QnXQogICAgICAgICAgbXNnWydzdWJqZWN0J10gPSAnUHl0aG9uIHJvb2x6IScKIAorICAgICAgSWYgdGhlIDptb2Q6YHBvbGljeWAgZGVmaW5lcyBjZXJ0YWluIGhhZGVycyB0byBiZSB1bmlxdWUgKGFzIHRoZSBzdGFuZGFyZAorICAgICAgcG9saWNpZXMgZG8pLCB0aGlzIG1ldGhvZCBtYXkgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuIGFuIGF0dGVtcHQKKyAgICAgIGlzIG1hZGUgdG8gYXNzaWduIGEgdmFsdWUgdG8gc3VjaCBhIGhlYWRlciB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4gIFRoaXMKKyAgICAgIGJlaGF2aW9yIGlzIGludGVudGlvbmFsIGZvciBjb25zaXN0ZW5jeSdzIHNha2UsIGJ1dCBkbyBub3QgZGVwZW5kIG9uIGl0CisgICAgICBhcyB3ZSBtYXkgY2hvb3NlIHRvIG1ha2Ugc3VjaCBhc3NpZ25tZW50cyBkbyBhbiBhdXRvbWF0aWMgZGVsZXRpb24gb2YgdGhlCisgICAgICBleGlzdGluZyBoZWFkZXIgaW4gdGhlIGZ1dHVyZS4KKwogCiAgICAuLiBtZXRob2Q6OiBfX2RlbGl0ZW1fXyhuYW1lKQogCkBAIC0zMjMsOSArMjQ4LDEwIEBACiAKICAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gIFRoaXMgaXMgaWRlbnRpY2FsIHRvCiAgICAgICA6bWV0aDpgX19nZXRpdGVtX19gIGV4Y2VwdCB0aGF0IG9wdGlvbmFsICpmYWlsb2JqKiBpcyByZXR1cm5lZCBpZiB0aGUKLSAgICAgIG5hbWVkIGhlYWRlciBpcyBtaXNzaW5nIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCisgICAgICBuYW1lZCBoZWFkZXIgaXMgbWlzc2luZyAoKmZhaWxvYmoqIGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KIAotICAgSGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHVzZWZ1bCBtZXRob2RzOgorCisgICBIZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdXNlZnVsIGhlYWRlciByZWxhdGVkIG1ldGhvZHM6CiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2FsbChuYW1lLCBmYWlsb2JqPU5vbmUpCkBAIC0zNDYsMTcgKzI3MiwxOSBAQAogICAgICAgdGFrZW4gYXMgdGhlIHBhcmFtZXRlciBuYW1lLCB3aXRoIHVuZGVyc2NvcmVzIGNvbnZlcnRlZCB0byBkYXNoZXMgKHNpbmNlCiAgICAgICBkYXNoZXMgYXJlIGlsbGVnYWwgaW4gUHl0aG9uIGlkZW50aWZpZXJzKS4gIE5vcm1hbGx5LCB0aGUgcGFyYW1ldGVyIHdpbGwKICAgICAgIGJlIGFkZGVkIGFzIGBga2V5PSJ2YWx1ZSJgYCB1bmxlc3MgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlCi0gICAgICBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4gIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKLSAgICAgIGl0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUgZm9ybWF0Ci0gICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nIG5hbWluZyB0aGUKLSAgICAgIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuIHVzdWFsbHkgYmUgc2V0Ci0gICAgICB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyIHBvc3NpYmlsaXRpZXMpLAotICAgICAgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNvZGUgcG9pbnRzLiAgSWYKLSAgICAgIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAotICAgICAgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdCB1c2luZyBhIGBgQ0hBUlNFVGBgCi0gICAgICBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorICAgICAgb25seSB0aGUga2V5IHdpbGwgYmUgYWRkZWQuCiAKLSAgICAgIEhlcmUncyBhbiBleGFtcGxlOjoKKyAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywgdGhlIGNoYXJzZXQgYW5kIGxhbmd1YWdlIG1heQorICAgICAgYmUgZXhwbGljaXRseSBjb250cm9sbGVkIGJ5IHNwZWNpZmluZyB0aGUgdmFsdWUgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUKKyAgICAgIGZvcm1hdCBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nCisgICAgICBuYW1pbmcgdGhlIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuCisgICAgICB1c3VhbGx5IGJlIHNldCB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyCisgICAgICBwb3NzaWJpbGl0aWVzKSwgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJCisgICAgICBjb2RlIHBvaW50cy4gIElmIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zCisgICAgICBub24tQVNDSUkgY2hhcmFjdGVycywgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdAorICAgICAgdXNpbmcgYSBgYENIQVJTRVRgYCBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorCisgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6OgogCiAgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywgZmlsZW5hbWU9J2J1ZC5naWYnKQogCkBAIC0zNjQsMzcgKzI5MiwzNSBAQAogCiAgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iYnVkLmdpZiIKIAotICAgICAgQW4gZXhhbXBsZSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzOjoKKyAgICAgIEFuIGV4YW1wbGUgb2YgdGhlIGV4dGVuZGVkIGludGVyZmFjZSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzOjoKIAogICAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT0oJ2lzby04ODU5LTEnLCAnJywgJ0Z1w59iYWxsZXIucHB0JykpCiAKLSAgICAgIFdoaWNoIHByb2R1Y2VzIDo6Ci0KLSAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lKj0iaXNvLTg4NTktMScnRnUlREZiYWxsZXIucHB0IgotCiAKICAgIC4uIG1ldGhvZDo6IHJlcGxhY2VfaGVhZGVyKF9uYW1lLCBfdmFsdWUpCiAKICAgICAgIFJlcGxhY2UgYSBoZWFkZXIuICBSZXBsYWNlIHRoZSBmaXJzdCBoZWFkZXIgZm91bmQgaW4gdGhlIG1lc3NhZ2UgdGhhdAotICAgICAgbWF0Y2hlcyAqX25hbWUqLCByZXRhaW5pbmcgaGVhZGVyIG9yZGVyIGFuZCBmaWVsZCBuYW1lIGNhc2UuICBJZiBubwotICAgICAgbWF0Y2hpbmcgaGVhZGVyIHdhcyBmb3VuZCwgYSA6ZXhjOmBLZXlFcnJvcmAgaXMgcmFpc2VkLgorICAgICAgbWF0Y2hlcyAqX25hbWUqLCByZXRhaW5pbmcgaGVhZGVyIG9yZGVyIGFuZCBmaWVsZCBuYW1lIGNhc2Ugb2YgdGhlCisgICAgICBvcmlnaW5hbCBoZWFkZXIuICBJZiBubyBtYXRjaGluZyBoZWFkZXIgaXMgZm91bmQsIHJhaXNlIGEKKyAgICAgIDpleGM6YEtleUVycm9yYC4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF90eXBlKCkKIAotICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgY29udGVudCB0eXBlLiAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBjb2VyY2VkIHRvCi0gICAgICBsb3dlciBjYXNlIG9mIHRoZSBmb3JtIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAuICBJZiB0aGVyZSB3YXMgbm8KLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpbiB0aGUgbWVzc2FnZSB0aGUgZGVmYXVsdCB0eXBlIGFzIGdpdmVuCi0gICAgICBieSA6bWV0aDpgZ2V0X2RlZmF1bHRfdHlwZWAgd2lsbCBiZSByZXR1cm5lZC4gIFNpbmNlIGFjY29yZGluZyB0bwotICAgICAgOnJmYzpgMjA0NWAsIG1lc3NhZ2VzIGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB0eXBlLCA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAKLSAgICAgIHdpbGwgYWx3YXlzIHJldHVybiBhIHZhbHVlLgorICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgY29udGVudCB0eXBlLCBjb2VyY2VkIHRvIGxvd2VyIGNhc2Ugb2YgdGhlIGZvcm0KKyAgICAgIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAuICBJZiB0aGVyZSBpcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyIGluIHRoZSBtZXNzYWdlIHJldHVybiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKyAgICAgIDptZXRoOmBnZXRfZGVmYXVsdF90eXBlYC4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMKKyAgICAgIGludmFsaWQsIHJldHVybiBgYHRleHQvcGxhaW5gYC4KIAotICAgICAgOnJmYzpgMjA0NWAgZGVmaW5lcyBhIG1lc3NhZ2UncyBkZWZhdWx0IHR5cGUgdG8gYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYAotICAgICAgdW5sZXNzIGl0IGFwcGVhcnMgaW5zaWRlIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXIsIGluCi0gICAgICB3aGljaCBjYXNlIGl0IHdvdWxkIGJlIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLiAgSWYgdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaGFzIGFuIGludmFsaWQgdHlwZSBzcGVjaWZpY2F0aW9uLAotICAgICAgOnJmYzpgMjA0NWAgbWFuZGF0ZXMgdGhhdCB0aGUgZGVmYXVsdCB0eXBlIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuCisgICAgICAoQWNjb3JkaW5nIHRvIDpyZmM6YDIwNDVgLCBtZXNzYWdlcyBhbHdheXMgaGF2ZSBhIGRlZmF1bHQgdHlwZSwKKyAgICAgIDptZXRoOmBnZXRfY29udGVudF90eXBlYCB3aWxsIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS4gIDpyZmM6YDIwNDVgIGRlZmluZXMKKyAgICAgIGEgbWVzc2FnZSdzIGRlZmF1bHQgdHlwZSB0byBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gIHVubGVzcyBpdCBhcHBlYXJzCisgICAgICBpbnNpZGUgYSA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSBpdCB3b3VsZAorICAgICAgYmUgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuICBJZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyCisgICAgICBoYXMgYW4gaW52YWxpZCB0eXBlIHNwZWNpZmljYXRpb24sIDpyZmM6YDIwNDVgIG1hbmRhdGVzIHRoYXQgdGhlIGRlZmF1bHQKKyAgICAgIHR5cGUgYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4pCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKQpAQCAtNDIwLDgxICszNDYsNDEgQEAKICAgIC4uIG1ldGhvZDo6IHNldF9kZWZhdWx0X3R5cGUoY3R5cGUpCiAKICAgICAgIFNldCB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUuICAqY3R5cGUqIHNob3VsZCBlaXRoZXIgYmUKLSAgICAgIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAsIGFsdGhvdWdoIHRoaXMgaXMgbm90Ci0gICAgICBlbmZvcmNlZC4gIFRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBpcyBub3Qgc3RvcmVkIGluIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9wYXJhbXMoZmFpbG9iaj1Ob25lLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHVucXVvdGU9VHJ1ZSkKLQotICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgcGFyYW1ldGVycywgYXMgYSBsaXN0LgotICAgICAgVGhlIGVsZW1lbnRzIG9mIHRoZSByZXR1cm5lZCBsaXN0IGFyZSAyLXR1cGxlcyBvZiBrZXkvdmFsdWUgcGFpcnMsIGFzCi0gICAgICBzcGxpdCBvbiB0aGUgYGAnPSdgYCBzaWduLiAgVGhlIGxlZnQgaGFuZCBzaWRlIG9mIHRoZSBgYCc9J2BgIGlzIHRoZSBrZXksCi0gICAgICB3aGlsZSB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHRoZSB2YWx1ZS4gIElmIHRoZXJlIGlzIG5vIGBgJz0nYGAgc2lnbiBpbgotICAgICAgdGhlIHBhcmFtZXRlciB0aGUgdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyBhcwotICAgICAgZGVzY3JpYmVkIGluIDptZXRoOmBnZXRfcGFyYW1gIGFuZCBpcyB1bnF1b3RlZCBpZiBvcHRpb25hbCAqdW5xdW90ZSogaXMKLSAgICAgIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCkuCi0KLSAgICAgIE9wdGlvbmFsICpmYWlsb2JqKiBpcyB0aGUgb2JqZWN0IHRvIHJldHVybiBpZiB0aGVyZSBpcyBubwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgT3B0aW9uYWwgKmhlYWRlciogaXMgdGhlIGhlYWRlciB0bwotICAgICAgc2VhcmNoIGluc3RlYWQgb2YgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtKHBhcmFtLCBmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQotCi0gICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIncyBwYXJhbWV0ZXIKLSAgICAgICpwYXJhbSogYXMgYSBzdHJpbmcuICBJZiB0aGUgbWVzc2FnZSBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKLSAgICAgIGhlYWRlciBvciBpZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciwgdGhlbiAqZmFpbG9iaiogaXMgcmV0dXJuZWQKLSAgICAgIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCi0KLSAgICAgIE9wdGlvbmFsICpoZWFkZXIqIGlmIGdpdmVuLCBzcGVjaWZpZXMgdGhlIG1lc3NhZ2UgaGVhZGVyIHRvIHVzZSBpbnN0ZWFkIG9mCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KLQotICAgICAgUGFyYW1ldGVyIGtleXMgYXJlIGFsd2F5cyBjb21wYXJlZCBjYXNlIGluc2Vuc2l0aXZlbHkuICBUaGUgcmV0dXJuIHZhbHVlCi0gICAgICBjYW4gZWl0aGVyIGJlIGEgc3RyaW5nLCBvciBhIDMtdHVwbGUgaWYgdGhlIHBhcmFtZXRlciB3YXMgOnJmYzpgMjIzMWAKLSAgICAgIGVuY29kZWQuICBXaGVuIGl0J3MgYSAzLXR1cGxlLCB0aGUgZWxlbWVudHMgb2YgdGhlIHZhbHVlIGFyZSBvZiB0aGUgZm9ybQotICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLiAgTm90ZSB0aGF0IGJvdGggYGBDSEFSU0VUYGAgYW5kCi0gICAgICBgYExBTkdVQUdFYGAgY2FuIGJlIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlIHlvdSBzaG91bGQgY29uc2lkZXIgYGBWQUxVRWBgCi0gICAgICB0byBiZSBlbmNvZGVkIGluIHRoZSBgYHVzLWFzY2lpYGAgY2hhcnNldC4gIFlvdSBjYW4gdXN1YWxseSBpZ25vcmUKLSAgICAgIGBgTEFOR1VBR0VgYC4KLQotICAgICAgSWYgeW91ciBhcHBsaWNhdGlvbiBkb2Vzbid0IGNhcmUgd2hldGhlciB0aGUgcGFyYW1ldGVyIHdhcyBlbmNvZGVkIGFzIGluCi0gICAgICA6cmZjOmAyMjMxYCwgeW91IGNhbiBjb2xsYXBzZSB0aGUgcGFyYW1ldGVyIHZhbHVlIGJ5IGNhbGxpbmcKLSAgICAgIDpmdW5jOmBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlYCwgcGFzc2luZyBpbiB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICBmcm9tIDptZXRoOmBnZXRfcGFyYW1gLiAgVGhpcyB3aWxsIHJldHVybiBhIHN1aXRhYmx5IGRlY29kZWQgVW5pY29kZQotICAgICAgc3RyaW5nIHdoZW4gdGhlIHZhbHVlIGlzIGEgdHVwbGUsIG9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgdW5xdW90ZWQgaWYgaXQKLSAgICAgIGlzbid0LiAgRm9yIGV4YW1wbGU6OgotCi0gICAgICAgICByYXdwYXJhbSA9IG1zZy5nZXRfcGFyYW0oJ2ZvbycpCi0gICAgICAgICBwYXJhbSA9IGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWUocmF3cGFyYW0pCi0KLSAgICAgIEluIGFueSBjYXNlLCB0aGUgcGFyYW1ldGVyIHZhbHVlIChlaXRoZXIgdGhlIHJldHVybmVkIHN0cmluZywgb3IgdGhlCi0gICAgICBgYFZBTFVFYGAgaXRlbSBpbiB0aGUgMy10dXBsZSkgaXMgYWx3YXlzIHVucXVvdGVkLCB1bmxlc3MgKnVucXVvdGUqIGlzIHNldAotICAgICAgdG8gYGBGYWxzZWBgLgorICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCwgYWx0aG91Z2ggdGhpcyBpcworICAgICAgbm90IGVuZm9yY2VkLiAgVGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGlzIG5vdCBzdG9yZWQgaW4gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHNvIGl0IG9ubHkgYWZmZWN0cyB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICAgICB0aGUgYGBnZXRfY29udGVudF90eXBlYGAgbWV0aG9kcyB3aGVuIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIgaXMgcHJlc2VudCBpbiB0aGUgbWVzc2FnZS4KIAogCiAgICAuLiBtZXRob2Q6OiBzZXRfcGFyYW0ocGFyYW0sIHZhbHVlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9Tm9uZSwgbGFuZ3VhZ2U9JycsIHJlcGxhY2U9RmFsc2UpCiAKICAgICAgIFNldCBhIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgSWYgdGhlCi0gICAgICBwYXJhbWV0ZXIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGhlYWRlciwgaXRzIHZhbHVlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aAotICAgICAgKnZhbHVlKi4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYXMgbm90IHlldCBiZWVuIGRlZmluZWQKLSAgICAgIGZvciB0aGlzIG1lc3NhZ2UsIGl0IHdpbGwgYmUgc2V0IHRvIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgYW5kIHRoZSBuZXcKLSAgICAgIHBhcmFtZXRlciB2YWx1ZSB3aWxsIGJlIGFwcGVuZGVkIGFzIHBlciA6cmZjOmAyMDQ1YC4KKyAgICAgIHBhcmFtZXRlciBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaGVhZGVyLCByZXBsYWNlIGl0cyB2YWx1ZSB3aXRoICp2YWx1ZSouCisgICAgICBXaGVuICpoZWFkZXIqIGlzIGBgQ29udGVudC1UeXBlYGAgKHRoZSBkZWZhdWx0KSBhbmQgdGhlIGhlYWRlciBkb2VzIG5vdAorICAgICAgeWV0IGV4aXN0IGluIHRoZSBtZXNzYWdlLCBhZGQgaXQsIHNldCBpdHMgdmFsdWUgdG8KKyAgICAgIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAsIGFuZCBhcHBlbmQgdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWUuICBPcHRpb25hbAorICAgICAgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIGhlYWRlciB0byA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KIAotICAgICAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIGhlYWRlciB0bwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAsIGFuZCBhbGwgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkKLSAgICAgIHVubGVzcyBvcHRpb25hbCAqcmVxdW90ZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuCi0KLSAgICAgIElmIG9wdGlvbmFsICpjaGFyc2V0KiBpcyBzcGVjaWZpZWQsIHRoZSBwYXJhbWV0ZXIgd2lsbCBiZSBlbmNvZGVkCi0gICAgICBhY2NvcmRpbmcgdG8gOnJmYzpgMjIzMWAuIE9wdGlvbmFsICpsYW5ndWFnZSogc3BlY2lmaWVzIHRoZSBSRkMgMjIzMQotICAgICAgbGFuZ3VhZ2UsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHN0cmluZy4gIEJvdGggKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqCi0gICAgICBzaG91bGQgYmUgc3RyaW5ncy4KKyAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywgdGhlIGNoYXJzZXQgYW5kIGxhbmd1YWdlIG1heQorICAgICAgYmUgZXhwbGljaXR5IHNwZWNpZmllZCB1c2luZyB0aGUgb3B0aW9uYWwgKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqCisgICAgICBwYXJhbWV0ZXJzLiAgT3B0aW9uYWwgKmxhbmd1YWdlKiBzcGVjaWZpZXMgdGhlIDpyZmM6YDIyMzFgIGxhbmd1YWdlLAorICAgICAgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgc3RyaW5nLiAgQm90aCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSogc2hvdWxkIGJlCisgICAgICBzdHJpbmdzLiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBgYHV0ZjhgYCAqY2hhcnNldCogYW5kIGBgTm9uZWBgIGZvcgorICAgICAgdGhlICpsYW5ndWFnZSouCiAKICAgICAgIElmICpyZXBsYWNlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSB0aGUgaGVhZGVyIGlzIG1vdmVkIHRvIHRoZQogICAgICAgZW5kIG9mIHRoZSBsaXN0IG9mIGhlYWRlcnMuICBJZiAqcmVwbGFjZSogaXMgYGBUcnVlYGAsIHRoZSBoZWFkZXIKICAgICAgIHdpbGwgYmUgdXBkYXRlZCBpbiBwbGFjZS4KIAorICAgICAgVXNlIG9mIHRoZSAqcmVxdW90ZSogcGFyYW1ldGVyIHdpdGggOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMgaXMKKyAgICAgIGRlcHJlY2F0ZWQuCisKKyAgICAgIE5vdGUgdGhhdCBleGlzdGluZyBwYXJhbWV0ZXIgdmFsdWVzIG9mIGhlYWRlcnMgbWF5IGJlIGFjY2Vzc2VkIHRocm91Z2gKKyAgICAgIHRoZSA6YXR0cjpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIucGFyYW1zYCBhdHRyaWJ1dGUgb2YgdGhlCisgICAgICBoZWFkZXIgdmFsdWUgKGZvciBleGFtcGxlLCBgYG1zZ1snQ29udGVudC1UeXBlJ10ucGFyYW1zWydjaGFyc2V0J11gYC4KKwogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgYGByZXBsYWNlYGAga2V5d29yZCB3YXMgYWRkZWQuCiAKIApAQCAtNTAyLDI1ICszODgsMTEgQEAKIAogICAgICAgUmVtb3ZlIHRoZSBnaXZlbiBwYXJhbWV0ZXIgY29tcGxldGVseSBmcm9tIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAogICAgICAgaGVhZGVyLiAgVGhlIGhlYWRlciB3aWxsIGJlIHJlLXdyaXR0ZW4gaW4gcGxhY2Ugd2l0aG91dCB0aGUgcGFyYW1ldGVyIG9yCi0gICAgICBpdHMgdmFsdWUuICBBbGwgdmFsdWVzIHdpbGwgYmUgcXVvdGVkIGFzIG5lY2Vzc2FyeSB1bmxlc3MgKnJlcXVvdGUqIGlzCi0gICAgICBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgKS4gIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbgotICAgICAgYWx0ZXJuYXRpdmUgdG8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCisgICAgICBpdHMgdmFsdWUuICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgdG8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgogCi0KLSAgIC4uIG1ldGhvZDo6IHNldF90eXBlKHR5cGUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlKQotCi0gICAgICBTZXQgdGhlIG1haW4gdHlwZSBhbmQgc3VidHlwZSBmb3IgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCi0gICAgICBoZWFkZXIuICp0eXBlKiBtdXN0IGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAsCi0gICAgICBvdGhlcndpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCi0KLSAgICAgIFRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIGtlZXBpbmcgYWxsCi0gICAgICB0aGUgcGFyYW1ldGVycyBpbiBwbGFjZS4gIElmICpyZXF1b3RlKiBpcyBgYEZhbHNlYGAsIHRoaXMgbGVhdmVzIHRoZQotICAgICAgZXhpc3RpbmcgaGVhZGVyJ3MgcXVvdGluZyBhcyBpcywgb3RoZXJ3aXNlIHRoZSBwYXJhbWV0ZXJzIHdpbGwgYmUgcXVvdGVkCi0gICAgICAodGhlIGRlZmF1bHQpLgotCi0gICAgICBBbiBhbHRlcm5hdGl2ZSBoZWFkZXIgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgKmhlYWRlciogYXJndW1lbnQuIFdoZW4gdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMgc2V0IGEgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAKLSAgICAgIGhlYWRlciBpcyBhbHNvIGFkZGVkLgorICAgICAgVXNlIG9mIHRoZSAqcmVxdW90ZSogcGFyYW1ldGVyIHdpdGggOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMgaXMKKyAgICAgIGRlcHJlY2F0ZWQuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZhaWxvYmo9Tm9uZSkKQEAgLTU0OSwxMiArNDIxLDExIEBACiAgICAgICBuZWNlc3NhcnkuICBBIDpleGM6YH5lbWFpbC5lcnJvcnMuSGVhZGVyUGFyc2VFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZQogICAgICAgbWVzc2FnZSBvYmplY3QgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KIAotICAgICAgTm90ZSB0aGF0IHVzaW5nIHRoaXMgbWV0aG9kIGlzIHN1YnRseSBkaWZmZXJlbnQgdGhhbiBkZWxldGluZyB0aGUgb2xkCisgICAgICBOb3RlIHRoYXQgdXNpbmcgdGhpcyBtZXRob2QgaXMgc3VidGx5IGRpZmZlcmVudCBmcm9tIGRlbGV0aW5nIHRoZSBvbGQKICAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhbmQgYWRkaW5nIGEgbmV3IG9uZSB3aXRoIHRoZSBuZXcKICAgICAgIGJvdW5kYXJ5IHZpYSA6bWV0aDpgYWRkX2hlYWRlcmAsIGJlY2F1c2UgOm1ldGg6YHNldF9ib3VuZGFyeWAgcHJlc2VydmVzCiAgICAgICB0aGUgb3JkZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpbiB0aGUgbGlzdCBvZgotICAgICAgaGVhZGVycy4gSG93ZXZlciwgaXQgZG9lcyAqbm90KiBwcmVzZXJ2ZSBhbnkgY29udGludWF0aW9uIGxpbmVzIHdoaWNoIG1heQotICAgICAgaGF2ZSBiZWVuIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KKyAgICAgIGhlYWRlcnMuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfY2hhcnNldChmYWlsb2JqPU5vbmUpCkBAIC01NjMsOSArNDM0LDYgQEAKICAgICAgIGNvZXJjZWQgdG8gbG93ZXIgY2FzZS4gIElmIHRoZXJlIGlzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgb3IgaWYKICAgICAgIHRoYXQgaGVhZGVyIGhhcyBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsICpmYWlsb2JqKiBpcyByZXR1cm5lZC4KIAotICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSA6bWV0aDpgZ2V0X2NoYXJzZXRgIHdoaWNoIHJldHVybnMgdGhlCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIGZvciB0aGUgZGVmYXVsdCBlbmNvZGluZyBvZiB0aGUgbWVzc2FnZSBib2R5LgotCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jaGFyc2V0cyhmYWlsb2JqPU5vbmUpCiAKQEAgLTU3NSwxMCArNDQzLDE5IEBACiAKICAgICAgIEVhY2ggaXRlbSBpbiB0aGUgbGlzdCB3aWxsIGJlIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgIGBgY2hhcnNldGBgIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGZvciB0aGUKLSAgICAgIHJlcHJlc2VudGVkIHN1YnBhcnQuICBIb3dldmVyLCBpZiB0aGUgc3VicGFydCBoYXMgbm8KLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCBvciBpcyBub3Qgb2YKLSAgICAgIHRoZSA6bWltZXR5cGU6YHRleHRgIG1haW4gTUlNRSB0eXBlLCB0aGVuIHRoYXQgaXRlbSBpbiB0aGUgcmV0dXJuZWQgbGlzdAotICAgICAgd2lsbCBiZSAqZmFpbG9iaiouCisgICAgICByZXByZXNlbnRlZCBzdWJwYXJ0LiAgSWYgdGhlIHN1YnBhcnQgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIsIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgb3IgaXMgbm90IG9mIHRoZSA6bWltZXR5cGU6YHRleHRgIG1haW4KKyAgICAgIE1JTUUgdHlwZSwgdGhlbiB0aGF0IGl0ZW0gaW4gdGhlIHJldHVybmVkIGxpc3Qgd2lsbCBiZSAqZmFpbG9iaiouCisKKworICAgLi4gbWV0aG9kOjogaXNfYXR0YWNobWVudAorCisgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlcmUgaXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyCisgICAgICBhbmQgaXRzIChjYXNlIGluc2Vuc2l0aXZlKSB2YWx1ZSBpcyBgYGF0dGFjaG1lbnRgYCwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMgorICAgICAgICAgaXNfYXR0YWNobWVudCBpcyBub3cgYSBtZXRob2QgaW5zdGVhZCBvZiBhIHByb3BlcnR5LCBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgIHdpdGggOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YC4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9kaXNwb3NpdGlvbigpCkBAIC01OTAsNiArNDY3LDExIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisKKyAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyByZWxhdGUgdG8gaW50ZXJyb2dhdGluZyBhbmQgbWFuaXB1bGF0aW5nIHRoZSBjb250ZW50CisgICAocGF5bG9hZCkgb2YgdGhlIG1lc3NhZ2UuCisKKwogICAgLi4gbWV0aG9kOjogd2FsaygpCiAKICAgICAgIFRoZSA6bWV0aDpgd2Fsa2AgbWV0aG9kIGlzIGFuIGFsbC1wdXJwb3NlIGdlbmVyYXRvciB3aGljaCBjYW4gYmUgdXNlZCB0bwpAQCAtNjUxLDggKzUzMywxNjkgQEAKICAgICAgIGludG8gdGhlIHN1YnBhcnRzLgogCiAKLSAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBjYW4gYWxzbyBvcHRpb25hbGx5IGNvbnRhaW4gdHdvIGluc3RhbmNlIGF0dHJpYnV0ZXMsCi0gICB3aGljaCBjYW4gYmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHBsYWluIHRleHQgb2YgYSBNSU1FIG1lc3NhZ2UuCisgICAuLiBtZXRob2Q6OiBnZXRfYm9keShwcmVmZXJlbmNlbGlzdD0oJ3JlbGF0ZWQnLCAnaHRtbCcsICdwbGFpbicpKQorCisgICAgICBSZXR1cm4gdGhlIE1JTUUgcGFydCB0aGF0IGlzIHRoZSBiZXN0IGNhbmRpZGF0ZSB0byBiZSB0aGUgImJvZHkiIG9mIHRoZQorICAgICAgbWVzc2FnZS4KKworICAgICAgKnByZWZlcmVuY2VsaXN0KiBtdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBmcm9tIHRoZSBzZXQgYGByZWxhdGVkYGAsCisgICAgICBgYGh0bWxgYCwgYW5kIGBgcGxhaW5gYCwgYW5kIGluZGljYXRlcyB0aGUgb3JkZXIgb2YgcHJlZmVyZW5jZSBmb3IgdGhlCisgICAgICBjb250ZW50IHR5cGUgb2YgdGhlIHBhcnQgcmV0dXJuZWQuCisKKyAgICAgIFN0YXJ0IGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzIHdpdGggdGhlIG9iamVjdCBvbiB3aGljaCB0aGUKKyAgICAgIGBgZ2V0X2JvZHlgYCBtZXRob2QgaXMgY2FsbGVkLgorCisgICAgICBJZiBgYHJlbGF0ZWRgYCBpcyBub3QgaW5jbHVkZWQgaW4gKnByZWZlcmVuY2VsaXN0KiwgY29uc2lkZXIgdGhlIHJvb3QKKyAgICAgIHBhcnQgKG9yIHN1YnBhcnQgb2YgdGhlIHJvb3QgcGFydCkgb2YgYW55IHJlbGF0ZWQgZW5jb3VudGVyZWQgYXMgYQorICAgICAgY2FuZGlkYXRlIGlmIHRoZSAoc3ViLSlwYXJ0IG1hdGNoZXMgYSBwcmVmZXJlbmNlLgorCisgICAgICBXaGVuIGVuY291bnRlcmluZyBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY2hlY2sgdGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIKKyAgICAgIGFuZCBpZiBhIHBhcnQgd2l0aCBhIG1hdGNoaW5nIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBpcyBmb3VuZCwgY29uc2lkZXIKKyAgICAgIG9ubHkgaXQgd2hlbiBsb29raW5nIGZvciBjYW5kaWRhdGUgbWF0Y2hlcy4gIE90aGVyd2lzZSBjb25zaWRlciBvbmx5IHRoZQorICAgICAgZmlyc3QgKGRlZmF1bHQgcm9vdCkgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLgorCisgICAgICBJZiBhIHBhcnQgaGFzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgb25seSBjb25zaWRlcgorICAgICAgdGhlIHBhcnQgYSBjYW5kaWRhdGUgbWF0Y2ggaWYgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgaXMgYGBpbmxpbmVgYC4KKworICAgICAgSWYgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBtYXRjaGVzIGFueSBvZiB0aGUgcHJlZmVyZW5jZXMgaW4KKyAgICAgICpwcmVmZXJuZWNsaXN0KiwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICBOb3RlczogKDEpIEZvciBtb3N0IGFwcGxpY2F0aW9ucyB0aGUgb25seSAqcHJlZmVyZW5jZWxpc3QqIGNvbWJpbmF0aW9ucworICAgICAgdGhhdCByZWFsbHkgbWFrZSBzZW5zZSBhcmUgYGAoJ3BsYWluJywpYGAsIGBgKCdodG1sJywgJ3BsYWluJylgYCwgYW5kIHRoZQorICAgICAgZGVmYXVsdCBgYCgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJylgYC4gICgyKSBCZWNhdXNlIG1hdGNoaW5nIHN0YXJ0cworICAgICAgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIGBgZ2V0X2JvZHlgYCBpcyBjYWxsZWQsIGNhbGxpbmcgYGBnZXRfYm9keWBgIG9uCisgICAgICBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCB3aWxsIHJldHVybiB0aGUgb2JqZWN0IGl0c2VsZiB1bmxlc3MKKyAgICAgICpwcmVmZXJlbmNlbGlzdCogaGFzIGEgbm9uLWRlZmF1bHQgdmFsdWUuICgzKSBNZXNzYWdlcyAob3IgbWVzc2FnZSBwYXJ0cykKKyAgICAgIHRoYXQgZG8gbm90IHNwZWNpZnkgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBvciB3aG9zZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIGludmFsaWQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkKKyAgICAgIGFyZSBvZiB0eXBlIGBgdGV4dC9wbGFpbmBgLCB3aGljaCBtYXkgb2NjYXNpb25hbGx5IGNhdXNlIGBgZ2V0X2JvZHlgYCB0bworICAgICAgcmV0dXJuIHVuZXhwZWN0ZWQgcmVzdWx0cy4KKworCisgICAuLiBtZXRob2Q6OiBpdGVyX2F0dGFjaG1lbnRzKCkKKworICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBpbW1lZGlhdGUgc3ViLXBhcnRzIG9mIHRoZSBtZXNzYWdlCisgICAgICB0aGF0IGFyZSBub3QgY2FuZGlkYXRlICJib2R5IiBwYXJ0cy4gIFRoYXQgaXMsIHNraXAgdGhlIGZpcnN0IG9jY3VycmVuY2UKKyAgICAgIG9mIGVhY2ggb2YgYGB0ZXh0L3BsYWluYGAsIGBgdGV4dC9odG1sYGAsIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IKKyAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgKHVubGVzcyB0aGV5IGFyZSBleHBsaWNpdGx5IG1hcmtlZCBhcworICAgICAgYXR0YWNobWVudHMgdmlhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50YCksIGFuZAorICAgICAgcmV0dXJuIGFsbCByZW1haW5pbmcgcGFydHMuICBXaGVuIGFwcGxpZWQgZGlyZWN0bHkgdG8gYQorICAgICAgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCByZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgYWxsIHRoZSByZWxhdGVkIHBhcnRzCisgICAgICBleGNlcHQgdGhlIHJvb3QgcGFydCAoaWU6IHRoZSBwYXJ0IHBvaW50ZWQgdG8gYnkgdGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIsCisgICAgICBvciB0aGUgZmlyc3QgcGFydCBpZiB0aGVyZSBpcyBubyBgYHN0YXJ0YGAgcGFyYW1ldGVyIG9yIHRoZSBgYHN0YXJ0YGAKKyAgICAgIHBhcmFtZXRlciBkb2Vzbid0IG1hdGNoIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgb2YgYW55IG9mIHRoZQorICAgICAgcGFydHMpLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCBvciBhCisgICAgICBub24tYGBtdWx0aXBhcnRgYCwgcmV0dXJuIGFuIGVtcHR5IGl0ZXJhdG9yLgorCisKKyAgIC4uIG1ldGhvZDo6IGl0ZXJfcGFydHMoKQorCisgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgb2YgdGhlIGltbWVkaWF0ZSBzdWItcGFydHMgb2YgdGhlIG1lc3NhZ2UsCisgICAgICB3aGljaCB3aWxsIGJlIGVtcHR5IGZvciBhIG5vbi1gYG11bHRpcGFydGBgLiAgKFNlZSBhbHNvCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLndhbGtgLikKKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIENhbGwgdGhlIDptZXRoOmB+ZW1haWwuY29udGVudG1hbmFnZXIuQ29udGVudE1hbmFnZXIuZ2V0X2NvbnRlbnRgIG1ldGhvZAorICAgICAgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYgYXMgdGhlIG1lc3NhZ2Ugb2JqZWN0LCBhbmQgcGFzc2luZworICAgICAgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcyBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIElmCisgICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCisgICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIENhbGwgdGhlIDptZXRoOmB+ZW1haWwuY29udGVudG1hbmFnZXIuQ29udGVudE1hbmFnZXIuc2V0X2NvbnRlbnRgIG1ldGhvZAorICAgICAgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYgYXMgdGhlIG1lc3NhZ2Ugb2JqZWN0LCBhbmQgcGFzc2luZworICAgICAgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcyBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIElmCisgICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCisgICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKworCisgICAuLiBtZXRob2Q6OiBtYWtlX3JlbGF0ZWQoYm91bmRhcnk9Tm9uZSkKKworICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG1lc3NhZ2UgaW50byBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBtZXNzYWdlLAorICAgICAgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhCisgICAgICAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZQorICAgICAgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5CisgICAgICB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZQorICAgICAgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KKworCisgICAuLiBtZXRob2Q6OiBtYWtlX2FsdGVybmF0aXZlKGJvdW5kYXJ5PU5vbmUpCisKKyAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBvciBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBpbnRvIGEKKyAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYAorICAgICAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCisgICAgICAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwKKyAgICAgIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMKKyAgICAgIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCisKKworICAgLi4gbWV0aG9kOjogbWFrZV9taXhlZChib3VuZGFyeT1Ob25lKQorCisgICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvciBhCisgICAgICBgYG11bHRpcGFydC1hbHRlcm5hdGl2ZWBgIGludG8gYSBgYG11bHRpcGFydC9taXhlZGBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlCisgICAgICBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nCisgICAgICBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkKKyAgICAgIGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgorCisKKyAgIC4uIG1ldGhvZDo6IGFkZF9yZWxhdGVkKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCisgICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLAorICAgICAgYW5kIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgorICAgICAgdGhlIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgY2FsbCA6bWV0aDpgbWFrZV9yZWxhdGVkYCBhbmQgdGhlbgorICAgICAgcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsCisgICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQorICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorICAgICAgSWYgdGhlIGFkZGVkIHBhcnQgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsCisgICAgICBhZGQgb25lIHdpdGggdGhlIHZhbHVlIGBgaW5saW5lYGAuCisKKworICAgLi4gbWV0aG9kOjogYWRkX2FsdGVybmF0aXZlKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQorICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCisgICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjYWxsCisgICAgICA6bWV0aDpgbWFrZV9hbHRlcm5hdGl2ZWAgYW5kIHRoZW4gcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzCisgICAgICBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmCisgICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCisgICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKworCisgICAuLiBtZXRob2Q6OiBhZGRfYXR0YWNobWVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0LAorICAgICAgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQorICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCisgICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjYWxsIDptZXRoOmBtYWtlX21peGVkYCBhbmQgdGhlbiBwcm9jZWVkIGFzCisgICAgICBhYm92ZS4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgCisgICAgICBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuICBJZiB0aGUgYWRkZWQgcGFydAorICAgICAgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUKKyAgICAgIGBgYXR0YWNobWVudGBgLiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgYm90aCBmb3IgZXhwbGljaXQgYXR0YWNobWVudHMKKyAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGAgYW5kIGBgaW5saW5lYGAgYXR0YWNobWVudHMKKyAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lYCksIGJ5IHBhc3NpbmcgYXBwcm9wcmlhdGUKKyAgICAgIG9wdGlvbnMgdG8gdGhlIGBgY29udGVudF9tYW5hZ2VyYGAuCisKKworICAgLi4gbWV0aG9kOjogY2xlYXIoKQorCisgICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgaGVhZGVycy4KKworCisgICAuLiBtZXRob2Q6OiBjbGVhcl9jb250ZW50KCkKKworICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIDpleGM6YENvbnRlbnQtYCBoZWFkZXJzLCBsZWF2aW5nCisgICAgICBhbGwgb3RoZXIgaGVhZGVycyBpbnRhY3QgYW5kIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLgorCisKKyAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSBhdHRyaWJ1dGVzOgogCiAKICAgIC4uIGF0dHJpYnV0ZTo6IHByZWFtYmxlCkBAIC02ODIsMTEgKzcyNSw4IEBACiAKICAgICAgIFRoZSAqZXBpbG9ndWUqIGF0dHJpYnV0ZSBhY3RzIHRoZSBzYW1lIHdheSBhcyB0aGUgKnByZWFtYmxlKiBhdHRyaWJ1dGUsCiAgICAgICBleGNlcHQgdGhhdCBpdCBjb250YWlucyB0ZXh0IHRoYXQgYXBwZWFycyBiZXR3ZWVuIHRoZSBsYXN0IGJvdW5kYXJ5IGFuZAotICAgICAgdGhlIGVuZCBvZiB0aGUgbWVzc2FnZS4KLQotICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHNldCB0aGUgZXBpbG9ndWUgdG8gdGhlIGVtcHR5IHN0cmluZyBpbiBvcmRlciBmb3IgdGhlCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCB0byBwcmludCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGUKLSAgICAgIGZpbGUuCisgICAgICB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlLiAgQXMgd2l0aCB0aGUgOmF0dHI6YH5FbWFpbE1lc3NhZ2UucHJlYW1ibGVgLAorICAgICAgaWYgdGhlcmUgaXMgbm8gZXBpbG9nIHRleHQgdGhpcyBhdHRyaWJ1dGUgd2lsbCBiZSBgYE5vbmVgYC4KIAogCiAgICAuLiBhdHRyaWJ1dGU6OiBkZWZlY3RzCkBAIC02OTQsMyArNzM0LDE4IEBACiAgICAgICBUaGUgKmRlZmVjdHMqIGF0dHJpYnV0ZSBjb250YWlucyBhIGxpc3Qgb2YgYWxsIHRoZSBwcm9ibGVtcyBmb3VuZCB3aGVuCiAgICAgICBwYXJzaW5nIHRoaXMgbWVzc2FnZS4gIFNlZSA6bW9kOmBlbWFpbC5lcnJvcnNgIGZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uCiAgICAgICBvZiB0aGUgcG9zc2libGUgcGFyc2luZyBkZWZlY3RzLgorCisKKy4uIGNsYXNzOjogTUlNRVBhcnQocG9saWN5PWRlZmF1bHQpCisKKyAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzdWJwYXJ0IG9mIGEgTUlNRSBtZXNzYWdlLiAgSXQgaXMgaWRlbnRpY2FsIHRvCisgICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgLCBleGNlcHQgdGhhdCBubyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzIGFyZQorICAgIGFkZGVkIHdoZW4gOm1ldGg6YH5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGlzIGNhbGxlZCwgc2luY2Ugc3ViLXBhcnRzIGRvCisgICAgbm90IG5lZWQgdGhlaXIgb3duIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBPcmluZ2FsbHkgYWRkZWQgaW4gMy40IGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAuICBEb2NzIGZvciBsZWdhY3kgbWVzc2FnZSBjbGFzcyBtb3ZlZCB0bworICAgICAgIDpyZWY6YGNvbXBhdDMyX21lc3NhZ2VgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAppbmRleCA4Mjk3ZGVhLi5kOWRhZTlmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdApAQCAtOCw2ICs4LDExIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIGxlZ2FjeSAoYGBDb21wYXQzMmBgKSBlbWFpbCBBUEkuICBJdHMgZnVuY3Rpb25hbGl0eQoraXMgcGFydGlhbGx5IHJlcGxhY2VkIGJ5IHRoZSA6bW9kOmB+ZW1haWwuY29udGVudG1hbmFnZXJgIGluIHRoZSBuZXcgQVBJLCBidXQKK2luIGNlcnRhaW4gYXBwbGljYXRpb25zIHRoZXNlIGNsYXNzZXMgbWF5IHN0aWxsIGJlIHVzZWZ1bCwgZXZlbiBpbiBub24tbGVnYWN5Citjb2RlLgorCiBPcmRpbmFyaWx5LCB5b3UgZ2V0IGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGJ5IHBhc3NpbmcgYSBmaWxlIG9yIHNvbWUgdGV4dCB0bwogYSBwYXJzZXIsIHdoaWNoIHBhcnNlcyB0aGUgdGV4dCBhbmQgcmV0dXJucyB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIEhvd2V2ZXIKIHlvdSBjYW4gYWxzbyBidWlsZCBhIGNvbXBsZXRlIG1lc3NhZ2Ugc3RydWN0dXJlIGZyb20gc2NyYXRjaCwgb3IgZXZlbiBpbmRpdmlkdWFsCkBAIC0yNSw3ICszMCw3IEBACiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLmJhc2UKIAotLi4gY2xhc3M6OiBNSU1FQmFzZShfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVCYXNlKF9tYWludHlwZSwgX3N1YnR5cGUsICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuYmFzZWAKIApAQCAtNDEsMTAgKzQ2LDE3IEBACiAgICBrZXkvdmFsdWUgZGljdGlvbmFyeSBhbmQgaXMgcGFzc2VkIGRpcmVjdGx5IHRvIDptZXRoOmBNZXNzYWdlLmFkZF9oZWFkZXIKICAgIDxlbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYWRkX2hlYWRlcj5gLgogCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQsIChkZWZhdWx0cyB0byB0aGUKKyAgIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSkgaXQgd2lsbCBiZSBwYXNzZWQgdG8KKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAuCisKICAgIFRoZSA6Y2xhc3M6YE1JTUVCYXNlYCBjbGFzcyBhbHdheXMgYWRkcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcgogICAgKGJhc2VkIG9uICpfbWFpbnR5cGUqLCAqX3N1YnR5cGUqLCBhbmQgKl9wYXJhbXMqKSwgYW5kIGEKICAgIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlciAoYWx3YXlzIHNldCB0byBgYDEuMGBgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCisKIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0CiAKQEAgLTYyLDcgKzc0LDggQEAKIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUubXVsdGlwYXJ0CiAKLS4uIGNsYXNzOjogTUlNRU11bHRpcGFydChfc3VidHlwZT0nbWl4ZWQnLCBib3VuZGFyeT1Ob25lLCBfc3VicGFydHM9Tm9uZSwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FTXVsdGlwYXJ0KF9zdWJ0eXBlPSdtaXhlZCcsIGJvdW5kYXJ5PU5vbmUsIF9zdWJwYXJ0cz1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5tdWx0aXBhcnRgCiAKQEAgLTgyLDE0ICs5NSwyMCBAQAogICAgdG8gdGhlIG1lc3NhZ2UgYnkgdXNpbmcgdGhlIDptZXRoOmBNZXNzYWdlLmF0dGFjaAogICAgPGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2g+YCBtZXRob2QuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYXJlIHRha2VuIGZyb20KICAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50cywgb3IgcGFzc2VkIGludG8gdGhlICpfcGFyYW1zKiBhcmd1bWVudCwgd2hpY2ggaXMgYSBrZXl3b3JkCiAgICBkaWN0aW9uYXJ5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuYXBwbGljYXRpb24KIAotLi4gY2xhc3M6OiBNSU1FQXBwbGljYXRpb24oX2RhdGEsIF9zdWJ0eXBlPSdvY3RldC1zdHJlYW0nLCBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVBcHBsaWNhdGlvbihfZGF0YSwgX3N1YnR5cGU9J29jdGV0LXN0cmVhbScsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuYXBwbGljYXRpb25gCiAKQEAgLTEwOSwxMiArMTI4LDE4IEBACiAgICBvYmplY3QgYXMgbmVjZXNzYXJ5LiAgVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgYmFzZTY0LiAgU2VlIHRoZQogICAgOm1vZDpgZW1haWwuZW5jb2RlcnNgIG1vZHVsZSBmb3IgYSBsaXN0IG9mIHRoZSBidWlsdC1pbiBlbmNvZGVycy4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgICpfcGFyYW1zKiBhcmUgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIGJhc2UgY2xhc3MgY29uc3RydWN0b3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5hdWRpbwogCi0uLiBjbGFzczo6IE1JTUVBdWRpbyhfYXVkaW9kYXRhLCBfc3VidHlwZT1Ob25lLCBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVBdWRpbyhfYXVkaW9kYXRhLCBfc3VidHlwZT1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCBcCisgICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLmF1ZGlvYAogCkBAIC0xMzcsMTIgKzE2MiwxOCBAQAogICAgb2JqZWN0IGFzIG5lY2Vzc2FyeS4gIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIGJhc2U2NC4gIFNlZSB0aGUKICAgIDptb2Q6YGVtYWlsLmVuY29kZXJzYCBtb2R1bGUgZm9yIGEgbGlzdCBvZiB0aGUgYnVpbHQtaW4gZW5jb2RlcnMuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAqX3BhcmFtcyogYXJlIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuaW1hZ2UKIAotLi4gY2xhc3M6OiBNSU1FSW1hZ2UoX2ltYWdlZGF0YSwgX3N1YnR5cGU9Tm9uZSwgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FSW1hZ2UoX2ltYWdlZGF0YSwgX3N1YnR5cGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgXAorICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLmltYWdlYAogCkBAIC0xNjUsMTMgKzE5NiwxNyBAQAogICAgb2JqZWN0IGFzIG5lY2Vzc2FyeS4gIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIGJhc2U2NC4gIFNlZSB0aGUKICAgIDptb2Q6YGVtYWlsLmVuY29kZXJzYCBtb2R1bGUgZm9yIGEgbGlzdCBvZiB0aGUgYnVpbHQtaW4gZW5jb2RlcnMuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAqX3BhcmFtcyogYXJlIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5taW1lLmJhc2UuTUlNRUJhc2VgCiAgICBjb25zdHJ1Y3Rvci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLm1lc3NhZ2UKIAotLi4gY2xhc3M6OiBNSU1FTWVzc2FnZShfbXNnLCBfc3VidHlwZT0ncmZjODIyJykKKy4uIGNsYXNzOjogTUlNRU1lc3NhZ2UoX21zZywgX3N1YnR5cGU9J3JmYzgyMicsICosIHBvbGljeT1jb21wYXQzMikKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLm1lc3NhZ2VgCiAKQEAgLTE4NCwxMCArMjE5LDE0IEBACiAgICBPcHRpb25hbCAqX3N1YnR5cGUqIHNldHMgdGhlIHN1YnR5cGUgb2YgdGhlIG1lc3NhZ2U7IGl0IGRlZmF1bHRzIHRvCiAgICA6bWltZXR5cGU6YHJmYzgyMmAuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUudGV4dAogCi0uLiBjbGFzczo6IE1JTUVUZXh0KF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lKQorLi4gY2xhc3M6OiBNSU1FVGV4dChfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSwgKiwgcG9saWN5PWNvbXBhdDMyKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUudGV4dGAKIApAQCAtMjExLDUgKzI1MCwxMCBAQAogICAgd2lsbCBhdXRvbWF0aWNhbGx5IGVuY29kZSB0aGUgbmV3IHBheWxvYWQgKGFuZCBhZGQgYSBuZXcKICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIpLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgICpfY2hhcnNldCogYWxzbyBhY2NlcHRzIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2VzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CmluZGV4IGI4ZWI3YzUuLjJhYzFmOTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdApAQCAtOCwxOTAgKzgsMTU4IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLU1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZXMgY2FuIGJlIGNyZWF0ZWQgaW4gb25lIG9mIHR3byB3YXlzOiB0aGV5IGNhbiBiZSBjcmVhdGVkCi1mcm9tIHdob2xlIGNsb3RoIGJ5IGluc3RhbnRpYXRpbmcgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzIGFuZAotc3RyaW5naW5nIHRoZW0gdG9nZXRoZXIgdmlhIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgYW5kCi06bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5zZXRfcGF5bG9hZGAgY2FsbHMsIG9yIHRoZXkKLWNhbiBiZSBjcmVhdGVkIGJ5IHBhcnNpbmcgYSBmbGF0IHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVtYWlsIG1lc3NhZ2UuCitNZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmVzIGNhbiBiZSBjcmVhdGVkIGluIG9uZSBvZiB0d28gd2F5czogdGhleSBjYW4gYmUKK2NyZWF0ZWQgZnJvbSB3aG9sZSBjbG90aCBieSBjcmVhdGluZyBhbiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKK29iamVjdCwgYWRkaW5nIGhlYWRlcnMgdXNpbmcgdGhlIGRpY3Rpb25hcnkgaW50ZXJmYWNlLCBhbmQgYWRkaW5nIHBheWxvYWQocykKK3VzaW5nIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGFuZCByZWxhdGVkIG1ldGhvZHMsIG9yCit0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHBhcnNpbmcgYSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbWFpbAorbWVzc2FnZS4KIAogVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHByb3ZpZGVzIGEgc3RhbmRhcmQgcGFyc2VyIHRoYXQgdW5kZXJzdGFuZHMgbW9zdCBlbWFpbAotZG9jdW1lbnQgc3RydWN0dXJlcywgaW5jbHVkaW5nIE1JTUUgZG9jdW1lbnRzLiAgWW91IGNhbiBwYXNzIHRoZSBwYXJzZXIgYSBzdHJpbmcKLW9yIGEgZmlsZSBvYmplY3QsIGFuZCB0aGUgcGFyc2VyIHdpbGwgcmV0dXJuIHRvIHlvdSB0aGUgcm9vdAotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZSBvZiB0aGUgb2JqZWN0IHN0cnVjdHVyZS4gIEZvciBzaW1wbGUsCi1ub24tTUlNRSBtZXNzYWdlcyB0aGUgcGF5bG9hZCBvZiB0aGlzIHJvb3Qgb2JqZWN0IHdpbGwgbGlrZWx5IGJlIGEgc3RyaW5nCi1jb250YWluaW5nIHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLiAgRm9yIE1JTUUgbWVzc2FnZXMsIHRoZSByb290IG9iamVjdCB3aWxsCi1yZXR1cm4gYGBUcnVlYGAgZnJvbSBpdHMgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2QsIGFuZAotdGhlIHN1YnBhcnRzIGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYAotYW5kIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLndhbGtgIG1ldGhvZHMuCitkb2N1bWVudCBzdHJ1Y3R1cmVzLCBpbmNsdWRpbmcgTUlNRSBkb2N1bWVudHMuICBZb3UgY2FuIHBhc3MgdGhlIHBhcnNlciBhCitieXRlcywgc3RyaW5nIG9yIGZpbGUgb2JqZWN0LCBhbmQgdGhlIHBhcnNlciB3aWxsIHJldHVybiB0byB5b3UgdGhlIHJvb3QKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpbnN0YW5jZSBvZiB0aGUgb2JqZWN0IHN0cnVjdHVyZS4gIEZvcgorc2ltcGxlLCBub24tTUlNRSBtZXNzYWdlcyB0aGUgcGF5bG9hZCBvZiB0aGlzIHJvb3Qgb2JqZWN0IHdpbGwgbGlrZWx5IGJlIGEKK3N0cmluZyBjb250YWluaW5nIHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLiAgRm9yIE1JTUUgbWVzc2FnZXMsIHRoZSByb290IG9iamVjdAord2lsbCByZXR1cm4gYGBUcnVlYGAgZnJvbSBpdHMgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgCittZXRob2QsIGFuZCB0aGUgc3VicGFydHMgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgcGF5bG9hZCBtYW5pcHVsYXRpb24gbWV0aG9kcywKK3N1Y2ggYXMgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5nZXRfYm9keWAsCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLml0ZXJfcGFydHNgLCBhbmQKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uud2Fsa2AuCiAKLVRoZXJlIGFyZSBhY3R1YWxseSB0d28gcGFyc2VyIGludGVyZmFjZXMgYXZhaWxhYmxlIGZvciB1c2UsIHRoZSBjbGFzc2ljCi06Y2xhc3M6YFBhcnNlcmAgQVBJIGFuZCB0aGUgaW5jcmVtZW50YWwgOmNsYXNzOmBGZWVkUGFyc2VyYCBBUEkuICBUaGUgY2xhc3NpYwotOmNsYXNzOmBQYXJzZXJgIEFQSSBpcyBmaW5lIGlmIHlvdSBoYXZlIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgbWVzc2FnZSBpbiBtZW1vcnkKLWFzIGEgc3RyaW5nLCBvciBpZiB0aGUgZW50aXJlIG1lc3NhZ2UgbGl2ZXMgaW4gYSBmaWxlIG9uIHRoZSBmaWxlIHN5c3RlbS4KLTpjbGFzczpgRmVlZFBhcnNlcmAgaXMgbW9yZSBhcHByb3ByaWF0ZSBmb3Igd2hlbiB5b3UncmUgcmVhZGluZyB0aGUgbWVzc2FnZSBmcm9tCi1hIHN0cmVhbSB3aGljaCBtaWdodCBibG9jayB3YWl0aW5nIGZvciBtb3JlIGlucHV0IChlLmcuIHJlYWRpbmcgYW4gZW1haWwgbWVzc2FnZQotZnJvbSBhIHNvY2tldCkuICBUaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCBjYW4gY29uc3VtZSBhbmQgcGFyc2UgdGhlIG1lc3NhZ2UKLWluY3JlbWVudGFsbHksIGFuZCBvbmx5IHJldHVybnMgdGhlIHJvb3Qgb2JqZWN0IHdoZW4geW91IGNsb3NlIHRoZSBwYXJzZXIgWyNdXy4KK1RoZXJlIGFyZSBhY3R1YWxseSB0d28gcGFyc2VyIGludGVyZmFjZXMgYXZhaWxhYmxlIGZvciB1c2UsIHRoZSA6Y2xhc3M6YFBhcnNlcmAKK0FQSSBhbmQgdGhlIGluY3JlbWVudGFsIDpjbGFzczpgRmVlZFBhcnNlcmAgQVBJLiAgVGhlIDpjbGFzczpgUGFyc2VyYCBBUEkgaXMKK21vc3QgdXNlZnVsIGlmIHlvdSBoYXZlIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgbWVzc2FnZSBpbiBtZW1vcnksIG9yIGlmIHRoZQorZW50aXJlIG1lc3NhZ2UgbGl2ZXMgaW4gYSBmaWxlIG9uIHRoZSBmaWxlIHN5c3RlbS4gIDpjbGFzczpgRmVlZFBhcnNlcmAgaXMgbW9yZQorYXBwcm9wcmlhdGUgd2hlbiB5b3UgYXJlIHJlYWRpbmcgdGhlIG1lc3NhZ2UgZnJvbSBhIHN0cmVhbSB3aGljaCBtaWdodCBibG9jaword2FpdGluZyBmb3IgbW9yZSBpbnB1dCAoc3VjaCBhcyByZWFkaW5nIGFuIGVtYWlsIG1lc3NhZ2UgZnJvbSBhIHNvY2tldCkuICBUaGUKKzpjbGFzczpgRmVlZFBhcnNlcmAgY2FuIGNvbnN1bWUgYW5kIHBhcnNlIHRoZSBtZXNzYWdlIGluY3JlbWVudGFsbHksIGFuZCBvbmx5CityZXR1cm5zIHRoZSByb290IG9iamVjdCB3aGVuIHlvdSBjbG9zZSB0aGUgcGFyc2VyLgogCiBOb3RlIHRoYXQgdGhlIHBhcnNlciBjYW4gYmUgZXh0ZW5kZWQgaW4gbGltaXRlZCB3YXlzLCBhbmQgb2YgY291cnNlIHlvdSBjYW4KLWltcGxlbWVudCB5b3VyIG93biBwYXJzZXIgY29tcGxldGVseSBmcm9tIHNjcmF0Y2guICBUaGVyZSBpcyBubyBtYWdpY2FsCi1jb25uZWN0aW9uIGJldHdlZW4gdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlJ3MgYnVuZGxlZCBwYXJzZXIgYW5kIHRoZQotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcywgc28geW91ciBjdXN0b20gcGFyc2VyIGNhbiBjcmVhdGUgbWVzc2FnZQotb2JqZWN0IHRyZWVzIGFueSB3YXkgaXQgZmluZHMgbmVjZXNzYXJ5LgoraW1wbGVtZW50IHlvdXIgb3duIHBhcnNlciBjb21wbGV0ZWx5IGZyb20gc2NyYXRjaC4gIEFsbCBvZiB0aGUgbG9naWMgdGhhdAorY29ubmVjdHMgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlJ3MgYnVuZGxlZCBwYXJzZXIgYW5kIHRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGlzIGVtYm9kaWVkIGluIHRoZSA6bW9kOmBwb2xpY3lgCitjbGFzcywgc28gYSBjdXN0b20gcGFyc2VyIGNhbiBjcmVhdGUgbWVzc2FnZSBvYmplY3QgdHJlZXMgYW55IHdheSBpdCBmaW5kcworbmVjZXNzYXJ5IGJ5IGltcGxlbWVudGluZyBjdXN0b20gdmVyc2lvbnMgb2YgdGhlIGFwcHJvcHJpYXRlIDptb2Q6YHBvbGljeWAKK21ldGhvZHMuCiAKIAogRmVlZFBhcnNlciBBUEkKIF5eXl5eXl5eXl5eXl5eCiAKLVRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5mZWVkcGFyc2VyYCBtb2R1bGUsCi1wcm92aWRlcyBhbiBBUEkgdGhhdCBpcyBjb25kdWNpdmUgdG8gaW5jcmVtZW50YWwgcGFyc2luZyBvZiBlbWFpbCBtZXNzYWdlcywgc3VjaAotYXMgd291bGQgYmUgbmVjZXNzYXJ5IHdoZW4gcmVhZGluZyB0aGUgdGV4dCBvZiBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYSBzb3VyY2UKLXRoYXQgY2FuIGJsb2NrIChlLmcuIGEgc29ja2V0KS4gIFRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGNhbiBvZiBjb3Vyc2UgYmUgdXNlZAotdG8gcGFyc2UgYW4gZW1haWwgbWVzc2FnZSBmdWxseSBjb250YWluZWQgaW4gYSBzdHJpbmcgb3IgYSBmaWxlLCBidXQgdGhlIGNsYXNzaWMKLTpjbGFzczpgUGFyc2VyYCBBUEkgbWF5IGJlIG1vcmUgY29udmVuaWVudCBmb3Igc3VjaCB1c2UgY2FzZXMuICBUaGUgc2VtYW50aWNzCi1hbmQgcmVzdWx0cyBvZiB0aGUgdHdvIHBhcnNlciBBUElzIGFyZSBpZGVudGljYWwuCitUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5mZWVkcGFyc2VyYCBtb2R1bGUsCitwcm92aWRlcyBhbiBBUEkgdGhhdCBpcyBjb25kdWNpdmUgdG8gaW5jcmVtZW50YWwgcGFyc2luZyBvZiBlbWFpbCBtZXNzYWdlcywKK3N1Y2ggYXMgd291bGQgYmUgbmVjZXNzYXJ5IHdoZW4gcmVhZGluZyB0aGUgdGV4dCBvZiBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYQorc291cmNlIHRoYXQgY2FuIGJsb2NrIChzdWNoIGFzIGEgc29ja2V0KS4gIFRoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgY2FuIG9mCitjb3Vyc2UgYmUgdXNlZCB0byBwYXJzZSBhbiBlbWFpbCBtZXNzYWdlIGZ1bGx5IGNvbnRhaW5lZCBpbiBhIDp0ZXJtOmBieXRlcy1saWtlCitvYmplY3RgLCBzdHJpbmcsIG9yIGZpbGUsIGJ1dCB0aGUgOmNsYXNzOmBCeXRlc1BhcnNlcmAgQVBJIG1heSBiZSBtb3JlCitjb252ZW5pZW50IGZvciBzdWNoIHVzZSBjYXNlcy4gIFRoZSBzZW1hbnRpY3MgYW5kIHJlc3VsdHMgb2YgdGhlIHR3byBwYXJzZXIKK0FQSXMgYXJlIGlkZW50aWNhbC4KIAotVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAncyBBUEkgaXMgc2ltcGxlOyB5b3UgY3JlYXRlIGFuIGluc3RhbmNlLCBmZWVkIGl0IGEgYnVuY2gKLW9mIHRleHQgdW50aWwgdGhlcmUncyBubyBtb3JlIHRvIGZlZWQgaXQsIHRoZW4gY2xvc2UgdGhlIHBhcnNlciB0byByZXRyaWV2ZSB0aGUKLXJvb3QgbWVzc2FnZSBvYmplY3QuICBUaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCBpcyBleHRyZW1lbHkgYWNjdXJhdGUgd2hlbiBwYXJzaW5nCi1zdGFuZGFyZHMtY29tcGxpYW50IG1lc3NhZ2VzLCBhbmQgaXQgZG9lcyBhIHZlcnkgZ29vZCBqb2Igb2YgcGFyc2luZwotbm9uLWNvbXBsaWFudCBtZXNzYWdlcywgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGhvdyBhIG1lc3NhZ2Ugd2FzIGRlZW1lZAotYnJva2VuLiAgSXQgd2lsbCBwb3B1bGF0ZSBhIG1lc3NhZ2Ugb2JqZWN0J3MgKmRlZmVjdHMqIGF0dHJpYnV0ZSB3aXRoIGEgbGlzdCBvZgotYW55IHByb2JsZW1zIGl0IGZvdW5kIGluIGEgbWVzc2FnZS4gIFNlZSB0aGUgOm1vZDpgZW1haWwuZXJyb3JzYCBtb2R1bGUgZm9yIHRoZQorVGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCdzIEFQSSBpcyBzaW1wbGU7IHlvdSBjcmVhdGUgYW4gaW5zdGFuY2UsIGZlZWQgaXQgYQorYnVuY2ggb2YgYnl0ZXMgdW50aWwgdGhlcmUncyBubyBtb3JlIHRvIGZlZWQgaXQsIHRoZW4gY2xvc2UgdGhlIHBhcnNlciB0bworcmV0cmlldmUgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgIGlzIGV4dHJlbWVseQorYWNjdXJhdGUgd2hlbiBwYXJzaW5nIHN0YW5kYXJkcy1jb21wbGlhbnQgbWVzc2FnZXMsIGFuZCBpdCBkb2VzIGEgdmVyeSBnb29kIGpvYgorb2YgcGFyc2luZyBub24tY29tcGxpYW50IG1lc3NhZ2VzLCBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgaG93IGEgbWVzc2FnZQord2FzIGRlZW1lZCBicm9rZW4uICBJdCB3aWxsIHBvcHVsYXRlIGEgbWVzc2FnZSBvYmplY3QncworOmF0dHI6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5kZWZlY3RzYCBhdHRyaWJ1dGUgd2l0aCBhIGxpc3Qgb2YgYW55Citwcm9ibGVtcyBpdCBmb3VuZCBpbiBhIG1lc3NhZ2UuICBTZWUgdGhlIDptb2Q6YGVtYWlsLmVycm9yc2AgbW9kdWxlIGZvciB0aGUKIGxpc3Qgb2YgZGVmZWN0cyB0aGF0IGl0IGNhbiBmaW5kLgogCi1IZXJlIGlzIHRoZSBBUEkgZm9yIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgOgorSGVyZSBpcyB0aGUgQVBJIGZvciB0aGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgOgogCiAKLS4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisuLiBjbGFzczo6IEJ5dGVzRmVlZFBhcnNlcihfZmFjdG9yeT1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBDcmVhdGUgYSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGluc3RhbmNlLiAgT3B0aW9uYWwgKl9mYWN0b3J5KiBpcyBhIG5vLWFyZ3VtZW50Ci0gICBjYWxsYWJsZSB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0IGlzIG5lZWRlZC4gIEl0Ci0gICBkZWZhdWx0cyB0byB0aGUgOmNsYXNzOmBlbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzLgorICAgQ3JlYXRlIGEgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgIGluc3RhbmNlLiAgT3B0aW9uYWwgKl9mYWN0b3J5KiBpcyBhCisgICBuby1hcmd1bWVudCBjYWxsYWJsZTsgaWYgbm90IHNwZWNpZmllZCB1c2UgdGhlCisgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWVzc2FnZV9mYWN0b3J5YCBmcm9tIHRoZSAqcG9saWN5Ki4gIENhbGwKKyAgICpfZmFjdG9yeSogd2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSBvYmplY3QgaXMgbmVlZGVkLgogCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUKKyAgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZQorICAgOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQKKyAgIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGFuZCBwcm92aWRlcworICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBhcyB0aGUgZGVmYXVsdCBmYWN0b3J5LiAgQWxsIG90aGVyIHBvbGljaWVzCisgICBwcm92aWRlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBhcyB0aGUgZGVmYXVsdCAqX2ZhY3RvcnkqLiBGb3IKKyAgIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCBlbHNlICpwb2xpY3kqIGNvbnRyb2xzLCBzZWUgdGhlCiAgICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotICAgLi4gbWV0aG9kOjogZmVlZChkYXRhKQotCi0gICAgICBGZWVkIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIHNvbWUgbW9yZSBkYXRhLiAgKmRhdGEqIHNob3VsZCBiZSBhIHN0cmluZwotICAgICAgY29udGFpbmluZyBvbmUgb3IgbW9yZSBsaW5lcy4gIFRoZSBsaW5lcyBjYW4gYmUgcGFydGlhbCBhbmQgdGhlCi0gICAgICA6Y2xhc3M6YEZlZWRQYXJzZXJgIHdpbGwgc3RpdGNoIHN1Y2ggcGFydGlhbCBsaW5lcyB0b2dldGhlciBwcm9wZXJseS4gIFRoZQotICAgICAgbGluZXMgaW4gdGhlIHN0cmluZyBjYW4gaGF2ZSBhbnkgb2YgdGhlIGNvbW1vbiB0aHJlZSBsaW5lIGVuZGluZ3MsCi0gICAgICBjYXJyaWFnZSByZXR1cm4sIG5ld2xpbmUsIG9yIGNhcnJpYWdlIHJldHVybiBhbmQgbmV3bGluZSAodGhleSBjYW4gZXZlbiBiZQotICAgICAgbWl4ZWQpLgotCi0gICAuLiBtZXRob2Q6OiBjbG9zZSgpCi0KLSAgICAgIENsb3NpbmcgYSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGNvbXBsZXRlcyB0aGUgcGFyc2luZyBvZiBhbGwgcHJldmlvdXNseSBmZWQKLSAgICAgIGRhdGEsIGFuZCByZXR1cm5zIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSXQgaXMgdW5kZWZpbmVkIHdoYXQgaGFwcGVucwotICAgICAgaWYgeW91IGZlZWQgbW9yZSBkYXRhIHRvIGEgY2xvc2VkIDpjbGFzczpgRmVlZFBhcnNlcmAuCi0KLQotLi4gY2xhc3M6OiBCeXRlc0ZlZWRQYXJzZXIoX2ZhY3Rvcnk9ZW1haWwubWVzc2FnZS5NZXNzYWdlKQotCi0gICBXb3JrcyBleGFjdGx5IGxpa2UgOmNsYXNzOmBGZWVkUGFyc2VyYCBleGNlcHQgdGhhdCB0aGUgaW5wdXQgdG8gdGhlCi0gICA6bWV0aDpgfkZlZWRQYXJzZXIuZmVlZGAgbWV0aG9kIG11c3QgYmUgYnl0ZXMgYW5kIG5vdCBzdHJpbmcuCisgICBOb3RlOiAqKlRoZSBwb2xpY3kga2V5d29yZCBzaG91bGQgYWx3YXlzIGJlIHNwZWNpZmllZCoqOyBUaGUgZGVmYXVsdCB3aWxsCisgICBjaGFuZ2UgdG8gOmRhdGE6YGVtYWlsLnBvbGljeS5kZWZhdWx0YCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgX2ZhY3RvcnkgZGVmYXVsdHMgdG8gdGhlIHBvbGljeSBgYG1lc3NhZ2VfZmFjdG9yeWBgLgogCi1QYXJzZXIgY2xhc3MgQVBJCi1eXl5eXl5eXl5eXl5eXl5eCiAKLVRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlLAorICAgLi4gbWV0aG9kOjogZmVlZChkYXRhKQorCisgICAgICBGZWVkIHRoZSBwYXJzZXIgc29tZSBtb3JlIGRhdGEuICAqZGF0YSogc2hvdWxkIGJlIGEgOnRlcm06YGJ5dGVzLWxpa2UKKyAgICAgIG9iamVjdGAgY29udGFpbmluZyBvbmUgb3IgbW9yZSBsaW5lcy4gIFRoZSBsaW5lcyBjYW4gYmUgcGFydGlhbCBhbmQgdGhlCisgICAgICBwYXJzZXIgd2lsbCBzdGl0Y2ggc3VjaCBwYXJ0aWFsIGxpbmVzIHRvZ2V0aGVyIHByb3Blcmx5LiAgVGhlIGxpbmVzIGNhbgorICAgICAgaGF2ZSBhbnkgb2YgdGhlIHRocmVlIGNvbW1vbiBsaW5lIGVuZGluZ3M6IGNhcnJpYWdlIHJldHVybiwgbmV3bGluZSwgb3IKKyAgICAgIGNhcnJpYWdlIHJldHVybiBhbmQgbmV3bGluZSAodGhleSBjYW4gZXZlbiBiZSBtaXhlZCkuCisKKworICAgLi4gbWV0aG9kOjogY2xvc2UoKQorCisgICAgICBDb21wbGV0ZSB0aGUgcGFyc2luZyBvZiBhbGwgcHJldmlvdXNseSBmZWQgZGF0YSBhbmQgcmV0dXJuIHRoZSByb290CisgICAgICBtZXNzYWdlIG9iamVjdC4gIEl0IGlzIHVuZGVmaW5lZCB3aGF0IGhhcHBlbnMgaWYgOm1ldGg6YH5mZWVkYCBpcyBjYWxsZWQKKyAgICAgIGFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KKworCisuLiBjbGFzczo6IEZlZWRQYXJzZXIoX2ZhY3Rvcnk9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgV29ya3MgbGlrZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgZXhjZXB0IHRoYXQgdGhlIGlucHV0IHRvIHRoZQorICAgOm1ldGg6YH5CeXRlc0ZlZWRQYXJzZXIuZmVlZGAgbWV0aG9kIG11c3QgYmUgYSBzdHJpbmcuICBUaGlzIGlzIG9mIGxpbWl0ZWQKKyAgIHV0aWxpdHksIHNpbmNlIHRoZSBvbmx5IHdheSBmb3Igc3VjaCBhIG1lc3NhZ2UgdG8gYmUgdmFsaWQgaXMgZm9yIGl0IHRvCisgICBjb250YWluIG9ubHkgQVNDSUkgdGV4dCBvciwgaWYgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LnV0ZjhgIGlzCisgICBgYFRydWVgYCwgbm8gYmluYXJ5IGF0dGFjaG1lbnRzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworCitQYXJzZXIgQVBJCiteXl5eXl5eXl5eCisKK1RoZSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsCiBwcm92aWRlcyBhbiBBUEkgdGhhdCBjYW4gYmUgdXNlZCB0byBwYXJzZSBhIG1lc3NhZ2Ugd2hlbiB0aGUgY29tcGxldGUgY29udGVudHMKLW9mIHRoZSBtZXNzYWdlIGFyZSBhdmFpbGFibGUgaW4gYSBzdHJpbmcgb3IgZmlsZS4gIFRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgCi1tb2R1bGUgYWxzbyBwcm92aWRlcyBoZWFkZXItb25seSBwYXJzZXJzLCBjYWxsZWQgOmNsYXNzOmBIZWFkZXJQYXJzZXJgIGFuZAotOmNsYXNzOmBCeXRlc0hlYWRlclBhcnNlcmAsIHdoaWNoIGNhbiBiZSB1c2VkIGlmIHlvdSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlCi1oZWFkZXJzIG9mIHRoZSBtZXNzYWdlLiAgOmNsYXNzOmBIZWFkZXJQYXJzZXJgIGFuZCA6Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYAorb2YgdGhlIG1lc3NhZ2UgYXJlIGF2YWlsYWJsZSBpbiBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgb3IgZmlsZS4gIFRoZQorOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUgYWxzbyBwcm92aWRlcyA6Y2xhc3M6YFBhcnNlcmAgZm9yIHBhcnNpbmcgc3RyaW5ncywKK2FuZCBoZWFkZXItb25seSBwYXJzZXJzLCA6Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYCBhbmQKKzpjbGFzczpgSGVhZGVyUGFyc2VyYCwgd2hpY2ggY2FuIGJlIHVzZWQgaWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUKK2hlYWRlcnMgb2YgdGhlIG1lc3NhZ2UuICA6Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYCBhbmQgOmNsYXNzOmBIZWFkZXJQYXJzZXJgCiBjYW4gYmUgbXVjaCBmYXN0ZXIgaW4gdGhlc2Ugc2l0dWF0aW9ucywgc2luY2UgdGhleSBkbyBub3QgYXR0ZW1wdCB0byBwYXJzZSB0aGUKLW1lc3NhZ2UgYm9keSwgaW5zdGVhZCBzZXR0aW5nIHRoZSBwYXlsb2FkIHRvIHRoZSByYXcgYm9keSBhcyBhIHN0cmluZy4gIFRoZXkKLWhhdmUgdGhlIHNhbWUgQVBJIGFzIHRoZSA6Y2xhc3M6YFBhcnNlcmAgYW5kIDpjbGFzczpgQnl0ZXNQYXJzZXJgIGNsYXNzZXMuCi0KLS4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgVGhlIEJ5dGVzSGVhZGVyUGFyc2VyIGNsYXNzLgorbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5LgogCiAKLS4uIGNsYXNzOjogUGFyc2VyKF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisuLiBjbGFzczo6IEJ5dGVzUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MgdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQKLSAgICpfY2xhc3MqLiAgVGhpcyBtdXN0IGJlIGEgY2FsbGFibGUgZmFjdG9yeSAoc3VjaCBhcyBhIGZ1bmN0aW9uIG9yIGEgY2xhc3MpLCBhbmQKLSAgIGl0IGlzIHVzZWQgd2hlbmV2ZXIgYSBzdWItbWVzc2FnZSBvYmplY3QgbmVlZHMgdG8gYmUgY3JlYXRlZC4gIEl0IGRlZmF1bHRzIHRvCi0gICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIChzZWUgOm1vZDpgZW1haWwubWVzc2FnZWApLiAgVGhlIGZhY3Rvcnkgd2lsbAotICAgYmUgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLgorICAgQ3JlYXRlIGEgOmNsYXNzOmBCeXRlc1BhcnNlcmAgaW5zdGFuY2UuICBUaGUgKl9jbGFzcyogYW5kICpwb2xpY3kqCisgICBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFuZCBzZW1hdG5pY3MgYXMgdGhlICpfZmFjdG9yeSoKKyAgIGFuZCAqcG9saWN5KiBhcmd1bWVudHMgb2YgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgLgogCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQotICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KKyAgIE5vdGU6ICoqVGhlIHBvbGljeSBrZXl3b3JkIHNob3VsZCBhbHdheXMgYmUgc3BlY2lmaWVkKio7IFRoZSBkZWZhdWx0IHdpbGwKKyAgIGNoYW5nZSB0byA6ZGF0YTpgZW1haWwucG9saWN5LmRlZmF1bHRgIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQgdGhhdCB3YXMgZGVwcmVjYXRlZCBpbiAyLjQuICBBZGRlZCB0aGUKICAgICAgICpwb2xpY3kqIGtleXdvcmQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBfY2xhc3MgZGVmYXVsdHMgdG8gdGhlIHBvbGljeSBgYG1lc3NhZ2VfZmFjdG9yeWBgLgogCi0gICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgUGFyc2VyYCBtZXRob2RzIGFyZToKLQotCi0gICAuLiBtZXRob2Q6OiBwYXJzZShmcCwgaGVhZGVyc29ubHk9RmFsc2UpCi0KLSAgICAgIFJlYWQgYWxsIHRoZSBkYXRhIGZyb20gdGhlIGZpbGUtbGlrZSBvYmplY3QgKmZwKiwgcGFyc2UgdGhlIHJlc3VsdGluZwotICAgICAgdGV4dCwgYW5kIHJldHVybiB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gICpmcCogbXVzdCBzdXBwb3J0IGJvdGggdGhlCi0gICAgICA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGxpbmVgIGFuZCB0aGUgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRgCi0gICAgICBtZXRob2RzIG9uIGZpbGUtbGlrZSBvYmplY3RzLgotCi0gICAgICBUaGUgdGV4dCBjb250YWluZWQgaW4gKmZwKiBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGJsb2NrIG9mIDpyZmM6YDI4MjJgCi0gICAgICBzdHlsZSBoZWFkZXJzIGFuZCBoZWFkZXIgY29udGludWF0aW9uIGxpbmVzLCBvcHRpb25hbGx5IHByZWNlZGVkIGJ5IGFuCi0gICAgICBlbnZlbG9wZSBoZWFkZXIuICBUaGUgaGVhZGVyIGJsb2NrIGlzIHRlcm1pbmF0ZWQgZWl0aGVyIGJ5IHRoZSBlbmQgb2YgdGhlCi0gICAgICBkYXRhIG9yIGJ5IGEgYmxhbmsgbGluZS4gIEZvbGxvd2luZyB0aGUgaGVhZGVyIGJsb2NrIGlzIHRoZSBib2R5IG9mIHRoZQotICAgICAgbWVzc2FnZSAod2hpY2ggbWF5IGNvbnRhaW4gTUlNRS1lbmNvZGVkIHN1YnBhcnRzKS4KLQotICAgICAgT3B0aW9uYWwgKmhlYWRlcnNvbmx5KiBpcyBhIGZsYWcgc3BlY2lmeWluZyB3aGV0aGVyIHRvIHN0b3AgcGFyc2luZyBhZnRlcgotICAgICAgcmVhZGluZyB0aGUgaGVhZGVycyBvciBub3QuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAsIG1lYW5pbmcgaXQgcGFyc2VzCi0gICAgICB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgotCi0gICAuLiBtZXRob2Q6OiBwYXJzZXN0cih0ZXh0LCBoZWFkZXJzb25seT1GYWxzZSkKLQotICAgICAgU2ltaWxhciB0byB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QsIGV4Y2VwdCBpdCB0YWtlcyBhIHN0cmluZyBvYmplY3QKLSAgICAgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhIHN0cmluZyBpcyBleGFjdGx5Ci0gICAgICBlcXVpdmFsZW50IHRvIHdyYXBwaW5nICp0ZXh0KiBpbiBhIDpjbGFzczpgfmlvLlN0cmluZ0lPYCBpbnN0YW5jZSBmaXJzdCBhbmQKLSAgICAgIGNhbGxpbmcgOm1ldGg6YHBhcnNlYC4KLQotICAgICAgT3B0aW9uYWwgKmhlYWRlcnNvbmx5KiBpcyBhcyB3aXRoIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZC4KLQotCi0uLiBjbGFzczo6IEJ5dGVzUGFyc2VyKF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCi0KLSAgIFRoaXMgY2xhc3MgaXMgZXhhY3RseSBwYXJhbGxlbCB0byA6Y2xhc3M6YFBhcnNlcmAsIGJ1dCBoYW5kbGVzIGJ5dGVzIGlucHV0LgotICAgVGhlICpfY2xhc3MqIGFuZCAqc3RyaWN0KiBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IKLSAgIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY29uc3RydWN0b3IuCi0KLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KIAogICAgLi4gbWV0aG9kOjogcGFyc2UoZnAsIGhlYWRlcnNvbmx5PUZhbHNlKQogCiAgICAgICBSZWFkIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSBiaW5hcnkgZmlsZS1saWtlIG9iamVjdCAqZnAqLCBwYXJzZSB0aGUKICAgICAgIHJlc3VsdGluZyBieXRlcywgYW5kIHJldHVybiB0aGUgbWVzc2FnZSBvYmplY3QuICAqZnAqIG11c3Qgc3VwcG9ydAogICAgICAgYm90aCB0aGUgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVgIGFuZCB0aGUgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGAKLSAgICAgIG1ldGhvZHMgb24gZmlsZS1saWtlIG9iamVjdHMuCisgICAgICBtZXRob2RzLgogCi0gICAgICBUaGUgYnl0ZXMgY29udGFpbmVkIGluICpmcCogbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBibG9jayBvZiA6cmZjOmAyODIyYAorICAgICAgVGhlIGJ5dGVzIGNvbnRhaW5lZCBpbiAqZnAqIG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgYmxvY2sgb2YgOnJmYzpgNTMyMmAKKyAgICAgIChvciwgaWYgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LnV0ZjhgIGlzIGBgVHJ1ZWBgLCA6cmZjOmA2NTMyYCkKICAgICAgIHN0eWxlIGhlYWRlcnMgYW5kIGhlYWRlciBjb250aW51YXRpb24gbGluZXMsIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgYW4KICAgICAgIGVudmVsb3BlIGhlYWRlci4gIFRoZSBoZWFkZXIgYmxvY2sgaXMgdGVybWluYXRlZCBlaXRoZXIgYnkgdGhlIGVuZCBvZiB0aGUKICAgICAgIGRhdGEgb3IgYnkgYSBibGFuayBsaW5lLiAgRm9sbG93aW5nIHRoZSBoZWFkZXIgYmxvY2sgaXMgdGhlIGJvZHkgb2YgdGhlCkBAIC0yMDIsNzMgKzE3MCwxMjEgQEAKICAgICAgIHJlYWRpbmcgdGhlIGhlYWRlcnMgb3Igbm90LiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLCBtZWFuaW5nIGl0IHBhcnNlcwogICAgICAgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZmlsZS4KIAotICAgLi4gbWV0aG9kOjogcGFyc2VieXRlcyh0ZXh0LCBoZWFkZXJzb25seT1GYWxzZSkKKworICAgLi4gbWV0aG9kOjogcGFyc2VieXRlcyhieXRlcywgaGVhZGVyc29ubHk9RmFsc2UpCiAKICAgICAgIFNpbWlsYXIgdG8gdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLCBleGNlcHQgaXQgdGFrZXMgYSA6dGVybTpgYnl0ZXMtbGlrZQotICAgICAgb2JqZWN0YCBpbnN0ZWFkIG9mIGEgZmlsZS1saWtlIG9iamVjdC4gIENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudAotICAgICAgdG8gd3JhcHBpbmcgKnRleHQqIGluIGEgOmNsYXNzOmB+aW8uQnl0ZXNJT2AgaW5zdGFuY2UgZmlyc3QgYW5kIGNhbGxpbmcKLSAgICAgIDptZXRoOmBwYXJzZWAuCisgICAgICBvYmplY3RgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhCisgICAgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIGVxdWl2YWxlbnQgdG8gd3JhcHBpbmcgKmJ5dGVzKiBpbiBhCisgICAgICA6Y2xhc3M6YH5pby5CeXRlc0lPYCBpbnN0YW5jZSBmaXJzdCBhbmQgY2FsbGluZyA6bWV0aDpgcGFyc2VgLgogCiAgICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjbGFzczo6IEJ5dGVzSGVhZGVyUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBFeGFjdGx5IGxpa2UgOmNsYXNzOmBCeXRlc1BhcnNlcmAsIGV4Y2VwdCB0aGF0ICpoZWFkZXJzb25seSoKKyAgIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjbGFzczo6IFBhcnNlcihfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgVGhpcyBjbGFzcyBpcyBwYXJhbGxlbCB0byA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCwgYnV0IGhhbmRsZXMgc3RyaW5nIGlucHV0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IF9jbGFzcyBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCisKKworICAgLi4gbWV0aG9kOjogcGFyc2UoZnAsIGhlYWRlcnNvbmx5PUZhbHNlKQorCisgICAgICBSZWFkIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSB0ZXh0LW1vZGUgZmlsZS1saWtlIG9iamVjdCAqZnAqLCBwYXJzZSB0aGUKKyAgICAgIHJlc3VsdGluZyB0ZXh0LCBhbmQgcmV0dXJuIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgKmZwKiBtdXN0IHN1cHBvcnQKKyAgICAgIGJvdGggdGhlIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkbGluZWAgYW5kIHRoZQorICAgICAgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRgIG1ldGhvZHMgb24gZmlsZS1saWtlIG9iamVjdHMuCisKKyAgICAgIE90aGVyIHRoYW4gdGhlIHRleHQgbW9kZSByZXF1aXJlbWVudCwgdGhpcyBtZXRob2Qgb3BlcmF0ZXMgbGlrZQorICAgICAgOm1ldGg6YEJ5dGVzUGFyc2VyLnBhcnNlYC4KKworCisgICAuLiBtZXRob2Q6OiBwYXJzZXN0cih0ZXh0LCBoZWFkZXJzb25seT1GYWxzZSkKKworICAgICAgU2ltaWxhciB0byB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QsIGV4Y2VwdCBpdCB0YWtlcyBhIHN0cmluZyBvYmplY3QKKyAgICAgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhIHN0cmluZyBpcworICAgICAgZXF1aXZhbGVudCB0byB3cmFwcGluZyAqdGV4dCogaW4gYSA6Y2xhc3M6YH5pby5TdHJpbmdJT2AgaW5zdGFuY2UgZmlyc3QKKyAgICAgIGFuZCBjYWxsaW5nIDptZXRoOmBwYXJzZWAuCisKKyAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYXMgd2l0aCB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QuCisKKworLi4gY2xhc3M6OiBIZWFkZXJQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIEV4YWN0bHkgbGlrZSA6Y2xhc3M6YFBhcnNlcmAsIGV4Y2VwdCB0aGF0ICpoZWFkZXJzb25seSoKKyAgIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLgorCisKIFNpbmNlIGNyZWF0aW5nIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSBzdHJpbmcgb3IgYSBmaWxlIG9iamVjdCBpcyBzdWNoCiBhIGNvbW1vbiB0YXNrLCBmb3VyIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZS4gIFRoZXkgYXJlIGF2YWlsYWJsZQogaW4gdGhlIHRvcC1sZXZlbCA6bW9kOmBlbWFpbGAgcGFja2FnZSBuYW1lc3BhY2UuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbAogCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9zdHJpbmcocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nLiAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8KKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2J5dGVzKHMsIF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAuICBUaGlzIGlzCisgICBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZWJ5dGVzKHMpYGAuICBPcHRpb25hbCAqX2NsYXNzKiBhbmQKKyAgICpzdHJpY3QqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGNsYXNzCisgICBjb25zdHJ1Y3Rvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmcCwgX2NsYXNzPU5vbmUsICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgdHJlZSBmcm9tIGFuIG9wZW4gYmluYXJ5IDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZShmcClgYC4gICpfY2xhc3MqIGFuZAorICAgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgY2xhc3MKKyAgIGNvbnN0cnVjdG9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX3N0cmluZyhzLCBfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSBzdHJpbmcuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KICAgIGBgUGFyc2VyKCkucGFyc2VzdHIocylgYC4gICpfY2xhc3MqIGFuZCAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMKICAgIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzIGNvbnN0cnVjdG9yLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAotICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLiAgVGhpcyBpcyBleGFjdGx5Ci0gICBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZWJ5dGVzKHMpYGAuICBPcHRpb25hbCAqX2NsYXNzKiBhbmQKLSAgICpzdHJpY3QqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcwotICAgY29uc3RydWN0b3IuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCi0KLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2ZpbGUoZnAsIF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCiAgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgdHJlZSBmcm9tIGFuIG9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YC4KLSAgIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIGBgUGFyc2VyKCkucGFyc2UoZnApYGAuICAqX2NsYXNzKgotICAgYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcwotICAgY29uc3RydWN0b3IuCisgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBQYXJzZXIoKS5wYXJzZShmcClgYC4gICpfY2xhc3MqIGFuZCAqcG9saWN5KiBhcmUKKyAgIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzIGNvbnN0cnVjdG9yLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IF9jbGFzcyBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgdHJlZSBmcm9tIGFuIG9wZW4gYmluYXJ5IDp0ZXJtOmBmaWxlCi0gICBvYmplY3RgLiAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlKGZwKWBgLgotICAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZQotICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB5b3UgbWlnaHQgdXNlIHRoaXMgYXQgYW4gaW50ZXJhY3RpdmUgUHl0aG9uIHByb21wdDo6CitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgeW91IG1pZ2h0IHVzZSA6ZnVuYzpgbWVzc2FnZV9mcm9tX2J5dGVzYCBhdCBhbgoraW50ZXJhY3RpdmUgUHl0aG9uIHByb21wdDo6CiAKICAgID4+PiBpbXBvcnQgZW1haWwKLSAgID4+PiBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG15U3RyaW5nKSAgIyBkb2N0ZXN0OiArU0tJUAorICAgPj4+IG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhteUJ5dGVzKSAgIyBkb2N0ZXN0OiArU0tJUAogCiAKIEFkZGl0aW9uYWwgbm90ZXMKQEAgLTI3OCwzNSArMjk0LDI3IEBACiAKICogTW9zdCBub24tXCA6bWltZXR5cGU6YG11bHRpcGFydGAgdHlwZSBtZXNzYWdlcyBhcmUgcGFyc2VkIGFzIGEgc2luZ2xlIG1lc3NhZ2UKICAgb2JqZWN0IHdpdGggYSBzdHJpbmcgcGF5bG9hZC4gIFRoZXNlIG9iamVjdHMgd2lsbCByZXR1cm4gYGBGYWxzZWBgIGZvcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLiAgVGhlaXIKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIG1ldGhvZCB3aWxsIHJldHVybiBhIHN0cmluZyBvYmplY3QuCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCwgYW5kCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2Agd2lsbCB5aWVsZCBhbiBlbXB0eSBsaXN0LgogCiAqIEFsbCA6bWltZXR5cGU6YG11bHRpcGFydGAgdHlwZSBtZXNzYWdlcyB3aWxsIGJlIHBhcnNlZCBhcyBhIGNvbnRhaW5lciBtZXNzYWdlCiAgIG9iamVjdCB3aXRoIGEgbGlzdCBvZiBzdWItbWVzc2FnZSBvYmplY3RzIGZvciB0aGVpciBwYXlsb2FkLiAgVGhlIG91dGVyCiAgIGNvbnRhaW5lciBtZXNzYWdlIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIGZvcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIGFuZCB0aGVpcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBsaXN0IG9mCi0gIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgc3VicGFydHMuCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCwgYW5kCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2Agd2lsbCB5aWVsZCBhIGxpc3Qgb2Ygc3VicGFydHMuCiAKLSogTW9zdCBtZXNzYWdlcyB3aXRoIGEgY29udGVudCB0eXBlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9cKmAgKGUuZy4KLSAgOm1pbWV0eXBlOmBtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1c2AgYW5kIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgKSB3aWxsIGFsc28gYmUKLSAgcGFyc2VkIGFzIGNvbnRhaW5lciBvYmplY3QgY29udGFpbmluZyBhIGxpc3QgcGF5bG9hZCBvZiBsZW5ndGggMS4gIFRoZWlyCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgbWV0aG9kIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLgotICBUaGUgc2luZ2xlIGVsZW1lbnQgaW4gdGhlIGxpc3QgcGF5bG9hZCB3aWxsIGJlIGEgc3ViLW1lc3NhZ2Ugb2JqZWN0LgorKiBNb3N0IG1lc3NhZ2VzIHdpdGggYSBjb250ZW50IHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL1wqYCAoc3VjaCBhcworICA6bWltZXR5cGU6YG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApIHdpbGwgYWxzbworICBiZSBwYXJzZWQgYXMgY29udGFpbmVyIG9iamVjdCBjb250YWluaW5nIGEgbGlzdCBwYXlsb2FkIG9mIGxlbmd0aCAxLiAgVGhlaXIKKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCB3aWxsIHJldHVybiBgYFRydWVgYC4KKyAgVGhlIHNpbmdsZSBlbGVtZW50IHlpZWxkZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYAorICB3aWxsIGJlIGEgc3ViLW1lc3NhZ2Ugb2JqZWN0LgogCi0qIFNvbWUgbm9uLXN0YW5kYXJkcyBjb21wbGlhbnQgbWVzc2FnZXMgbWF5IG5vdCBiZSBpbnRlcm5hbGx5IGNvbnNpc3RlbnQgYWJvdXQKKyogU29tZSBub24tc3RhbmRhcmRzLWNvbXBsaWFudCBtZXNzYWdlcyBtYXkgbm90IGJlIGludGVybmFsbHkgY29uc2lzdGVudCBhYm91dAogICB0aGVpciA6bWltZXR5cGU6YG11bHRpcGFydGBcIC1lZG5lc3MuICBTdWNoIG1lc3NhZ2VzIG1heSBoYXZlIGEKICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIG9mIHR5cGUgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCBidXQgdGhlaXIKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBgYEZhbHNlYGAuCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBgYEZhbHNlYGAuCiAgIElmIHN1Y2ggbWVzc2FnZXMgd2VyZSBwYXJzZWQgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgLAogICB0aGV5IHdpbGwgaGF2ZSBhbiBpbnN0YW5jZSBvZiB0aGUKICAgOmNsYXNzOmB+ZW1haWwuZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdGAgY2xhc3MgaW4gdGhlaXIKICAgKmRlZmVjdHMqIGF0dHJpYnV0ZSBsaXN0LiAgU2VlIDptb2Q6YGVtYWlsLmVycm9yc2AgZm9yIGRldGFpbHMuCi0KLS4uIHJ1YnJpYzo6IEZvb3Rub3RlcwotCi0uLiBbI10gQXMgb2YgZW1haWwgcGFja2FnZSB2ZXJzaW9uIDMuMCwgaW50cm9kdWNlZCBpbiBQeXRob24gMi40LCB0aGUgY2xhc3NpYwotICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgd2FzIHJlLWltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoZQotICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgLCBzbyB0aGUgc2VtYW50aWNzIGFuZCByZXN1bHRzIGFyZQotICAgaWRlbnRpY2FsIGJldHdlZW4gdGhlIHR3byBwYXJzZXJzLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdAppbmRleCAyYTYwNDdkLi44YTQxODc3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKQEAgLTE4LDkgKzE4LDEyIEBACiBlbWFpbCBtZXNzYWdlcyAoYSBibG9jayBvZiBoZWFkZXIgZmllbGRzIGVhY2ggY29uc2lzdGluZyBvZiBhIG5hbWUgZm9sbG93ZWQgYnkKIGEgY29sb24gZm9sbG93ZWQgYnkgYSB2YWx1ZSwgdGhlIHdob2xlIGJsb2NrIGZvbGxvd2VkIGJ5IGEgYmxhbmsgbGluZSBhbmQgYW4KIGFyYml0cmFyeSAnYm9keScpLCBpcyBhIGZvcm1hdCB0aGF0IGhhcyBmb3VuZCB1dGlsaXR5IG91dHNpZGUgb2YgdGhlIHJlYWxtIG9mCi1lbWFpbC4gIFNvbWUgb2YgdGhlc2UgdXNlcyBjb25mb3JtIGZhaXJseSBjbG9zZWx5IHRvIHRoZSBtYWluIFJGQ3MsIHNvbWUgZG8KLW5vdC4gIEFuZCBldmVuIHdoZW4gd29ya2luZyB3aXRoIGVtYWlsLCB0aGVyZSBhcmUgdGltZXMgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8KLWJyZWFrIHN0cmljdCBjb21wbGlhbmNlIHdpdGggdGhlIFJGQ3MuCitlbWFpbC4gIFNvbWUgb2YgdGhlc2UgdXNlcyBjb25mb3JtIGZhaXJseSBjbG9zZWx5IHRvIHRoZSBtYWluIGVtYWlsIFJGQ3MsIHNvbWUKK2RvIG5vdC4gIEV2ZW4gd2hlbiB3b3JraW5nIHdpdGggZW1haWwsIHRoZXJlIGFyZSB0aW1lcyB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0bworYnJlYWsgc3RyaWN0IGNvbXBsaWFuY2Ugd2l0aCB0aGUgUkZDcywgc3VjaCBhcyBnZW5lcmF0aW5nIGVtYWlscyB0aGF0CitpbnRlcm9wZXJhdGUgd2l0aCBlbWFpbCBzZXJ2ZXJzIHRoYXQgZG8gbm90IHRoZW1zZWx2ZXMgZm9sbG93IHRoZSBzdGFuZGFyZHMsIG9yCit0aGF0IGltcGxlbWVudCBleHRlbnNpb25zIHlvdSB3YW50IHRvIHVzZSBpbiB3YXlzIHRoYXQgdmlvbGF0ZSB0aGUKK3N0YW5kYXJkcy4KIAogUG9saWN5IG9iamVjdHMgZ2l2ZSB0aGUgZW1haWwgcGFja2FnZSB0aGUgZmxleGliaWxpdHkgdG8gaGFuZGxlIGFsbCB0aGVzZQogZGlzcGFyYXRlIHVzZSBjYXNlcy4KQEAgLTMxLDI3ICszNCw0MCBAQAogZW1haWwgcGFja2FnZSB0byBhbHRlciB0aGUgZGVmYXVsdCBiZWhhdmlvci4gIFRoZSBzZXR0YWJsZSB2YWx1ZXMgYW5kIHRoZWlyCiBkZWZhdWx0cyBhcmUgZGVzY3JpYmVkIGJlbG93LgogCi1UaGVyZSBpcyBhIGRlZmF1bHQgcG9saWN5IHVzZWQgYnkgYWxsIGNsYXNzZXMgaW4gdGhlIGVtYWlsIHBhY2thZ2UuICBUaGlzCi1wb2xpY3kgaXMgbmFtZWQgOmNsYXNzOmBDb21wYXQzMmAsIHdpdGggYSBjb3JyZXNwb25kaW5nIHByZS1kZWZpbmVkIGluc3RhbmNlCi1uYW1lZCA6Y29uc3Q6YGNvbXBhdDMyYC4gIEl0IHByb3ZpZGVzIGZvciBjb21wbGV0ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IChpbgotc29tZSBjYXNlcywgaW5jbHVkaW5nIGJ1ZyBjb21wYXRpYmlsaXR5KSB3aXRoIHRoZSBwcmUtUHl0aG9uMy4zIHZlcnNpb24gb2YgdGhlCi1lbWFpbCBwYWNrYWdlLgorVGhlcmUgaXMgYSBkZWZhdWx0IHBvbGljeSB1c2VkIGJ5IGFsbCBjbGFzc2VzIGluIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIGFsbCBvZgordGhlIDptb2Q6YH5lbWFpbC5wYXJzZXJgIGNsYXNzZXMgYW5kIHRoZSByZWxhdGVkIGNvbnZlbmllbmNlIGZ1bmN0aW9ucywgYW5kIGZvcgordGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MsIHRoaXMgaXMgdGhlIDpjbGFzczpgQ29tcGF0MzJgCitwb2xpY3ksIHZpYSBpdHMgY29ycmVzcG9uZGluZyBwcmUtZGVmaW5lZCBpbnN0YW5jZSA6Y29uc3Q6YGNvbXBhdDMyYC4gIFRoaXMKK3BvbGljeSBwcm92aWRlcyBmb3IgY29tcGxldGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoaW4gc29tZSBjYXNlcywgaW5jbHVkaW5nCitidWcgY29tcGF0aWJpbGl0eSkgd2l0aCB0aGUgcHJlLVB5dGhvbjMuMyB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLgorCitUaGlzIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAqcG9saWN5KiBrZXl3b3JkIHRvCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaXMgdGhlIDpjbGFzczpgRW1haWxQb2xpY3lgIHBvbGljeSwgdmlhCitpdHMgcHJlLWRlZmluZWQgaW5zdGFuY2UgOmRhdGE6YH5kZWZhdWx0YC4KKworV2hlbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCitvYmplY3QgaXMgY3JlYXRlZCwgaXQgYWNxdWlyZXMgYSBwb2xpY3kuICBJZiB0aGUgbWVzc2FnZSBpcyBjcmVhdGVkIGJ5IGEKKzptb2Q6YH5lbWFpbC5wYXJzZXJgLCBhIHBvbGljeSBwYXNzZWQgdG8gdGhlIHBhcnNlciB3aWxsIGJlIHRoZSBwb2xpY3kgdXNlZCBieQordGhlIG1lc3NhZ2UgaXQgY3JlYXRlcy4gIElmIHRoZSBtZXNzYWdlIGlzIGNyZWF0ZWQgYnkgdGhlIHByb2dyYW0sIHRoZW4gdGhlCitwb2xpY3kgY2FuIGJlIHNwZWNpZmllZCB3aGVuIGl0IGlzIGNyZWF0ZWQuICBXaGVuIGEgbWVzc2FnZSBpcyBwYXNzZWQgdG8gYQorOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAsIHRoZSBnZW5lcmF0b3IgdXNlcyB0aGUgcG9saWN5IGZyb20gdGhlIG1lc3NhZ2UgYnkKK2RlZmF1bHQsIGJ1dCB5b3UgY2FuIGFsc28gcGFzcyBhIHNwZWNpZmljIHBvbGljeSB0byB0aGUgZ2VuZXJhdG9yIHRoYXQgd2lsbAorb3ZlcnJpZGUgdGhlIG9uZSBzdG9yZWQgb24gdGhlIG1lc3NhZ2Ugb2JqZWN0LgorCitUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICpwb2xpY3kqIGtleXdvcmQgZm9yIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIGNsYXNzZXMKK2FuZCB0aGUgcGFyc2VyIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKndpbGwgYmUgY2hhbmdpbmcqKiBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mCitQeXRob24uICBUaGVyZWZvcmUgeW91IHNob3VsZCAqKmFsd2F5cyBzcGVjaWZ5IGV4cGxpY2l0bHkgd2hpY2ggcG9saWN5IHlvdSB3YW50Cit0byB1c2UqKiB3aGVuIGNhbGxpbmcgYW55IG9mIHRoZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgZGVzY3JpYmVkIGluIHRoZQorOm1vZDpgfmVtYWlsLnBhcnNlcmAgbW9kdWxlLgogCiBUaGUgZmlyc3QgcGFydCBvZiB0aGlzIGRvY3VtZW50YXRpb24gY292ZXJzIHRoZSBmZWF0dXJlcyBvZiA6Y2xhc3M6YFBvbGljeWAsIGFuCi06dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgIHRoYXQgZGVmaW5lcyB0aGUgZmVhdHVyZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbAorOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIHRoYXQgZGVmaW5lcyB0aGUgZmVhdHVyZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbAogcG9saWN5IG9iamVjdHMsIGluY2x1ZGluZyA6Y29uc3Q6YGNvbXBhdDMyYC4gIFRoaXMgaW5jbHVkZXMgY2VydGFpbiBob29rCiBtZXRob2RzIHRoYXQgYXJlIGNhbGxlZCBpbnRlcm5hbGx5IGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB3aGljaCBhIGN1c3RvbSBwb2xpY3kKLWNvdWxkIG92ZXJyaWRlIHRvIG9idGFpbiBkaWZmZXJlbnQgYmVoYXZpb3IuCi0KLVdoZW4gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBhY3F1aXJlcyBhIHBvbGljeS4KLUJ5IGRlZmF1bHQgdGhpcyB3aWxsIGJlIDpjb25zdDpgY29tcGF0MzJgLCBidXQgYSBkaWZmZXJlbnQgcG9saWN5IGNhbiBiZQotc3BlY2lmaWVkLiAgSWYgdGhlIGBgTWVzc2FnZWBgIGlzIGNyZWF0ZWQgYnkgYSA6bW9kOmB+ZW1haWwucGFyc2VyYCwgYSBwb2xpY3kKLXBhc3NlZCB0byB0aGUgcGFyc2VyIHdpbGwgYmUgdGhlIHBvbGljeSB1c2VkIGJ5IHRoZSBgYE1lc3NhZ2VgYCBpdCBjcmVhdGVzLiAgSWYKLXRoZSBgYE1lc3NhZ2VgYCBpcyBjcmVhdGVkIGJ5IHRoZSBwcm9ncmFtLCB0aGVuIHRoZSBwb2xpY3kgY2FuIGJlIHNwZWNpZmllZAotd2hlbiBpdCBpcyBjcmVhdGVkLiAgV2hlbiBhIGBgTWVzc2FnZWBgIGlzIHBhc3NlZCB0byBhIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLAotdGhlIGdlbmVyYXRvciB1c2VzIHRoZSBwb2xpY3kgZnJvbSB0aGUgYGBNZXNzYWdlYGAgYnkgZGVmYXVsdCwgYnV0IHlvdSBjYW4gYWxzbwotcGFzcyBhIHNwZWNpZmljIHBvbGljeSB0byB0aGUgZ2VuZXJhdG9yIHRoYXQgd2lsbCBvdmVycmlkZSB0aGUgb25lIHN0b3JlZCBvbgotdGhlIGBgTWVzc2FnZWBgIG9iamVjdC4KK2NvdWxkIG92ZXJyaWRlIHRvIG9idGFpbiBkaWZmZXJlbnQgYmVoYXZpb3IuICBUaGUgc2Vjb25kIHBhcnQgZGVzY3JpYmVzIHRoZQorY29uY3JldGUgY2xhc3NlcyA6Y2xhc3M6YEVtYWlsUG9saWN5YCBhbmQgOmNsYXNzOmBDb21wYXQzMmAsIHdoaWNoIGltcGxlbWVudAordGhlIGhvb2tzIHRoYXQgcHJvdmlkZSB0aGUgc3RhbmRhcmQgYmVoYXZpb3IgYW5kIHRoZSBiYWNrd2FyZCBjb21wYXRpYmxlCitiZWhhdmlvciBhbmQgZmVhdHVyZXMsIHJlc3BlY3RpdmVseS4KIAogOmNsYXNzOmBQb2xpY3lgIGluc3RhbmNlcyBhcmUgaW1tdXRhYmxlLCBidXQgdGhleSBjYW4gYmUgY2xvbmVkLCBhY2NlcHRpbmcgdGhlCiBzYW1lIGtleXdvcmQgYXJndW1lbnRzIGFzIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBhbmQgcmV0dXJuaW5nIGEgbmV3CkBAIC0xNDcsNiArMTYzLDcgQEAKICAgIFRoaXMgY2xhc3MgZGVmaW5lcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMsIGFuZCB0aHVzIHZhbHVlcyBmb3IgdGhlCiAgICBmb2xsb3dpbmcgbWF5IGJlIHBhc3NlZCBpbiB0aGUgY29uc3RydWN0b3Igb2YgYW55IHBvbGljeSBjbGFzczoKIAorCiAgICAuLiBhdHRyaWJ1dGU6OiBtYXhfbGluZV9sZW5ndGgKIAogICAgICAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFueSBsaW5lIGluIHRoZSBzZXJpYWxpemVkIG91dHB1dCwgbm90IGNvdW50aW5nIHRoZQpAQCAtMTU0LDEyICsxNzEsMTQgQEAKICAgICAgIGBgMGBgIG9yIDpjb25zdDpgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbGluZSB3cmFwcGluZyBzaG91bGQgYmUKICAgICAgIGRvbmUgYXQgYWxsLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IGxpbmVzZXAKIAogICAgICAgVGhlIHN0cmluZyB0byBiZSB1c2VkIHRvIHRlcm1pbmF0ZSBsaW5lcyBpbiBzZXJpYWxpemVkIG91dHB1dC4gIFRoZQogICAgICAgZGVmYXVsdCBpcyBgYFxuYGAgYmVjYXVzZSB0aGF0J3MgdGhlIGludGVybmFsIGVuZC1vZi1saW5lIGRpc2NpcGxpbmUgdXNlZAogICAgICAgYnkgUHl0aG9uLCB0aG91Z2ggYGBcclxuYGAgaXMgcmVxdWlyZWQgYnkgdGhlIFJGQ3MuCiAKKwogICAgLi4gYXR0cmlidXRlOjogY3RlX3R5cGUKIAogICAgICAgQ29udHJvbHMgdGhlIHR5cGUgb2YgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZ3MgdGhhdCBtYXkgYmUgb3IgYXJlCkBAIC0xNzQsOCArMTkzLDggQEAKIAogICAgICAgYGA4Yml0YGAgIGRhdGEgaXMgbm90IGNvbnN0cmFpbmVkIHRvIGJlIDcgYml0IGNsZWFuLiAgRGF0YSBpbiBoZWFkZXJzIGlzCiAgICAgICAgICAgICAgICAgc3RpbGwgcmVxdWlyZWQgdG8gYmUgQVNDSUktb25seSBhbmQgc28gd2lsbCBiZSBlbmNvZGVkIChzZWUKLSAgICAgICAgICAgICAgICAnYmluYXJ5X2ZvbGQnIGJlbG93IGZvciBhbiBleGNlcHRpb24pLCBidXQgYm9keSBwYXJ0cyBtYXkgdXNlCi0gICAgICAgICAgICAgICAgdGhlIGBgOGJpdGBgIENURS4KKyAgICAgICAgICAgICAgICA6bWV0aDpgZm9sZF9iaW5hcnlgIGFuZCA6YXR0cjpgfkVtYWlsUG9saWN5LnV0ZjhgIGJlbG93IGZvcgorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMpLCBidXQgYm9keSBwYXJ0cyBtYXkgdXNlIHRoZSBgYDhiaXRgYCBDVEUuCiAgICAgICA9PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICAgICAgIEEgYGBjdGVfdHlwZWBgIHZhbHVlIG9mIGBgOGJpdGBgIG9ubHkgd29ya3Mgd2l0aCBgYEJ5dGVzR2VuZXJhdG9yYGAsIG5vdApAQCAtMTgzLDYgKzIwMiw3IEBACiAgICAgICBgYEdlbmVyYXRvcmBgIGlzIG9wZXJhdGluZyB1bmRlciBhIHBvbGljeSB0aGF0IHNwZWNpZmllcwogICAgICAgYGBjdGVfdHlwZT04Yml0YGAsIGl0IHdpbGwgYWN0IGFzIGlmIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYC4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiByYWlzZV9vbl9kZWZlY3QKIAogICAgICAgSWYgOmNvbnN0OmBUcnVlYCwgYW55IGRlZmVjdHMgZW5jb3VudGVyZWQgd2lsbCBiZSByYWlzZWQgYXMgZXJyb3JzLiAgSWYKQEAgLTE5MCw3ICsyMTAsNiBAQAogICAgICAgOm1ldGg6YHJlZ2lzdGVyX2RlZmVjdGAgbWV0aG9kLgogCiAKLQogICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21cXwogCiAgICAgICBJZiA6Y29uc3Q6YFRydWVgLCBsaW5lcyBzdGFydGluZyB3aXRoICoiRnJvbSAiKiBpbiB0aGUgYm9keSBhcmUKQEAgLTIwMSwxOSArMjIwLDMxIEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKICAgICAgICAgIFRoZSAqbWFuZ2xlX2Zyb21fKiBwYXJhbWV0ZXIuCiAKKworICAgLi4gYXR0cmlidXRlOjogbWVzc2FnZV9mYWN0b3J5CisKKyAgICAgIEEgZmFjdG9yeSBmdW5jdGlvbiBmb3IgY29uc3RydWN0aW5nIGEgbmV3IGVtcHR5IG1lc3NhZ2Ugb2JqZWN0LiAgVXNlZAorICAgICAgYnkgdGhlIHBhcnNlciB3aGVuIGJ1aWxkaW5nIG1lc3NhZ2VzLiAgRGVmYXVsdHMgdG8gYGBOb25lYGAsIGluCisgICAgICB3aGljaCBjYXNlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaXMgdXNlZC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKICAgIFRoZSBmb2xsb3dpbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgY29kZSB1c2luZwogICAgdGhlIGVtYWlsIGxpYnJhcnkgdG8gY3JlYXRlIHBvbGljeSBpbnN0YW5jZXMgd2l0aCBjdXN0b20gc2V0dGluZ3M6CiAKKwogICAgLi4gbWV0aG9kOjogY2xvbmUoKiprdykKIAogICAgICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgUG9saWN5YCBpbnN0YW5jZSB3aG9zZSBhdHRyaWJ1dGVzIGhhdmUgdGhlIHNhbWUKICAgICAgIHZhbHVlcyBhcyB0aGUgY3VycmVudCBpbnN0YW5jZSwgZXhjZXB0IHdoZXJlIHRob3NlIGF0dHJpYnV0ZXMgYXJlCiAgICAgICBnaXZlbiBuZXcgdmFsdWVzIGJ5IHRoZSBrZXl3b3JkIGFyZ3VtZW50cy4KIAorCiAgICBUaGUgcmVtYWluaW5nIDpjbGFzczpgUG9saWN5YCBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIGVtYWlsIHBhY2thZ2UgY29kZSwKICAgIGFuZCBhcmUgbm90IGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBhbiBhcHBsaWNhdGlvbiB1c2luZyB0aGUgZW1haWwgcGFja2FnZS4KICAgIEEgY3VzdG9tIHBvbGljeSBtdXN0IGltcGxlbWVudCBhbGwgb2YgdGhlc2UgbWV0aG9kcy4KIAorCiAgICAuLiBtZXRob2Q6OiBoYW5kbGVfZGVmZWN0KG9iaiwgZGVmZWN0KQogCiAgICAgICBIYW5kbGUgYSAqZGVmZWN0KiBmb3VuZCBvbiAqb2JqKi4gIFdoZW4gdGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcwpAQCAtMjI0LDYgKzI1NSw3IEBACiAgICAgICBpdCBpcyBgYFRydWVgYCwgKmRlZmVjdCogaXMgcmFpc2VkIGFzIGFuIGV4Y2VwdGlvbi4gIElmIGl0IGlzIGBgRmFsc2VgYAogICAgICAgKHRoZSBkZWZhdWx0KSwgKm9iaiogYW5kICpkZWZlY3QqIGFyZSBwYXNzZWQgdG8gOm1ldGg6YHJlZ2lzdGVyX2RlZmVjdGAuCiAKKwogICAgLi4gbWV0aG9kOjogcmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0KQogCiAgICAgICBSZWdpc3RlciBhICpkZWZlY3QqIG9uICpvYmoqLiAgSW4gdGhlIGVtYWlsIHBhY2thZ2UsICpkZWZlY3QqIHdpbGwgYWx3YXlzCkBAIC0yMzYsMTQgKzI2OCwxNiBAQAogICAgICAgY3VzdG9tIGBgTWVzc2FnZWBgIG9iamVjdHMpIHNob3VsZCBhbHNvIHByb3ZpZGUgc3VjaCBhbiBhdHRyaWJ1dGUsCiAgICAgICBvdGhlcndpc2UgZGVmZWN0cyBpbiBwYXJzZWQgbWVzc2FnZXMgd2lsbCByYWlzZSB1bmV4cGVjdGVkIGVycm9ycy4KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfbWF4X2NvdW50KG5hbWUpCiAKICAgICAgIFJldHVybiB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBoZWFkZXJzIG5hbWVkICpuYW1lKi4KIAotICAgICAgQ2FsbGVkIHdoZW4gYSBoZWFkZXIgaXMgYWRkZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgCi0gICAgICBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgbm90IGBgMGBgIG9yIGBgTm9uZWBgLCBhbmQgdGhlcmUgYXJlCi0gICAgICBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aCB0aGUgbmFtZSAqbmFtZSogZXF1YWwgdG8gdGhlIHZhbHVlCi0gICAgICByZXR1cm5lZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisgICAgICBDYWxsZWQgd2hlbiBhIGhlYWRlciBpcyBhZGRlZCB0byBhbiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKKyAgICAgIG9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0LiAgSWYgdGhlIHJldHVybmVkIHZhbHVlIGlzIG5vdAorICAgICAgYGAwYGAgb3IgYGBOb25lYGAsIGFuZCB0aGVyZSBhcmUgYWxyZWFkeSBhIG51bWJlciBvZiBoZWFkZXJzIHdpdGggdGhlCisgICAgICBuYW1lICpuYW1lKiBncmVhdGhlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSByZXR1cm5lZCwgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICAgICBCZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGBgTWVzc2FnZS5fX3NldGl0ZW1fX2BgIGlzIHRvIGFwcGVuZCB0aGUKICAgICAgIHZhbHVlIHRvIHRoZSBsaXN0IG9mIGhlYWRlcnMsIGl0IGlzIGVhc3kgdG8gY3JlYXRlIGR1cGxpY2F0ZSBoZWFkZXJzCkBAIC0yNTUsNiArMjg5LDcgQEAKIAogICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBgYE5vbmVgYCBmb3IgYWxsIGhlYWRlciBuYW1lcy4KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfc291cmNlX3BhcnNlKHNvdXJjZWxpbmVzKQogCiAgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIGEgbGlzdCBvZiBzdHJpbmdzLCBlYWNoIHN0cmluZwpAQCAtMjc0LDYgKzMwOSw3IEBACiAKICAgICAgIFRoZXJlIGlzIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlIG5hbWUgYW5kIHZhbHVlIHByb3ZpZGVkIGJ5CkBAIC0yODksNiArMzI1LDcgQEAKIAogICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgKm5hbWUqIGFuZCAqdmFsdWUqIGN1cnJlbnRseQpAQCAtMzA0LDYgKzM0MSw3IEBACiAKICAgICAgIFRoZXJlIGlzIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KIAorCiAgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIHRoZSAqbmFtZSogYW5kICp2YWx1ZSogY3VycmVudGx5CkBAIC0zMTYsNiArMzU0LDcgQEAKICAgICAgICp2YWx1ZSogbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4gIFRoZXJlIHNob3VsZCBiZSBubwogICAgICAgc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YSBpbiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IHRoZSBtZXRob2QuCiAKKwogICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCwgZXhjZXB0IHRoYXQgdGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBiZSBhCkBAIC0zMjUsNzMgKzM2NCw2IEBACiAgICAgICBjb252ZXJ0ZWQgYmFjayBpbnRvIGJpbmFyeSBkYXRhIGluIHRoZSByZXR1cm5lZCBieXRlcyBvYmplY3QuCiAKIAotLi4gY2xhc3M6OiBDb21wYXQzMigqKmt3KQotCi0gICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBwb2xpY3kuICBJdAotICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIFRoZQotICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgbW9kdWxlIGFsc28gZGVmaW5lcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLAotICAgOmNvbnN0OmBjb21wYXQzMmAsIHRoYXQgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBwb2xpY3kuICBUaHVzIHRoZSBkZWZhdWx0Ci0gICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpcyB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMi4KLQotICAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGhhdmUgdmFsdWVzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZQotICAgOmNsYXNzOmBQb2xpY3lgIGRlZmF1bHQ6Ci0KLSAgIC4uIGF0dHJpYnV0ZTo6IG1hbmdsZV9mcm9tXwotCi0gICAgICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYC4KLQotICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZQotICAgYWJzdHJhY3QgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6Ci0KLSAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCi0KLSAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnYGA6YGAnIGFuZCByZXR1cm5lZAotICAgICAgdW5tb2RpZmllZC4gIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmCi0gICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLAotICAgICAgYW5kIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCi0KLSAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKLQotICAgICAgVGhlIG5hbWUgYW5kIHZhbHVlIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgotCi0gICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCi0KLSAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBiaW5hcnkgZGF0YSwgaXQgaXMgY29udmVydGVkIGludG8gYQotICAgICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0IHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCi0gICAgICBPdGhlcndpc2UgaXQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KLQotICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKLQotICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCi0gICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcwotICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIE5vbi1BU0NJSSBiaW5hcnkgZGF0YSBhcmUKLSAgICAgIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCi0KLSAgIC4uIG1ldGhvZDo6IGZvbGRfYmluYXJ5KG5hbWUsIHZhbHVlKQotCi0gICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKLSAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCi0gICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgSWYgYGBjdGVfdHlwZWBgIGlzCi0gICAgICBgYDdiaXRgYCwgbm9uLWFzY2lpIGJpbmFyeSBkYXRhIGlzIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgCi0gICAgICBjaGFyc2V0LiAgT3RoZXJ3aXNlIHRoZSBvcmlnaW5hbCBzb3VyY2UgaGVhZGVyIGlzIHVzZWQsIHdpdGggaXRzIGV4aXN0aW5nCi0gICAgICBsaW5lIGJyZWFrcyBhbmQgYW55IChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaXQgbWF5IGNvbnRhaW4uCi0KLQotQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBDb21wYXQzMmAgaXMgcHJvdmlkZWQgYXMgYSBtb2R1bGUgY29uc3RhbnQ6Ci0KLS4uIGRhdGE6OiBjb21wYXQzMgotCi0gICBBbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCwgcHJvdmlkaW5nICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCi0gICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLgotCi0KLS4uIG5vdGU6OgotCi0gICBUaGUgZG9jdW1lbnRhdGlvbiBiZWxvdyBkZXNjcmliZXMgbmV3IHBvbGljaWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZQotICAgc3RhbmRhcmQgbGlicmFyeSBvbiBhIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLgotICAgQmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIGZlYXR1cmUpCi0gICBtYXkgb2NjdXIgaWYgZGVlbWVkIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCiAKIC4uIGNsYXNzOjogRW1haWxQb2xpY3koKiprdykKIApAQCAtNDA0LDkgKzM3NiwxNSBAQAogICAgb24gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLiAgVGhlIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtIGZ1bGx5IGltcGxlbWVudAogICAgOnJmYzpgMjA0N2AgYW5kIDpyZmM6YDUzMjJgLgogCisgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tZXNzYWdlX2ZhY3RvcnlgCisgICBhdHRyaWJ1dGUgaXMgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLgorCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0byBhbGwKICAgIHBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXworCisKICAgIC4uIGF0dHJpYnV0ZTo6IHV0ZjgKIAogICAgICAgSWYgYGBGYWxzZWBgLCBmb2xsb3cgOnJmYzpgNTMyMmAsIHN1cHBvcnRpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4KQEAgLTQxNSwxMyArMzkzLDE0IEBACiAgICAgICBmb3JtYXR0ZWQgaW4gdGhpcyB3YXkgbWF5IGJlIHBhc3NlZCB0byBTTVRQIHNlcnZlcnMgdGhhdCBzdXBwb3J0CiAgICAgICB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoOnJmYzpgNjUzMWApLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IHJlZm9sZF9zb3VyY2UKIAogICAgICAgSWYgdGhlIHZhbHVlIGZvciBhIGhlYWRlciBpbiB0aGUgYGBNZXNzYWdlYGAgb2JqZWN0IG9yaWdpbmF0ZWQgZnJvbSBhCiAgICAgICA6bW9kOmB+ZW1haWwucGFyc2VyYCAoYXMgb3Bwb3NlZCB0byBiZWluZyBzZXQgYnkgYSBwcm9ncmFtKSwgdGhpcwogICAgICAgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIGdlbmVyYXRvciBzaG91bGQgcmVmb2xkIHRoYXQgdmFsdWUKLSAgICAgIHdoZW4gdHJhbnNmb3JtaW5nIHRoZSBtZXNzYWdlIGJhY2sgaW50byBzdHJlYW0gZm9ybS4gIFRoZSBwb3NzaWJsZSB2YWx1ZXMKLSAgICAgIGFyZToKKyAgICAgIHdoZW4gdHJhbnNmb3JtaW5nIHRoZSBtZXNzYWdlIGJhY2sgaW50byBzZXJpYWxpemVkIGZvcm0uICBUaGUgcG9zc2libGUKKyAgICAgIHZhbHVlcyBhcmU6CiAKICAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgIGBgbm9uZWBgICBhbGwgc291cmNlIHZhbHVlcyB1c2Ugb3JpZ2luYWwgZm9sZGluZwpAQCAtNDM0LDIzICs0MTMsMjQgQEAKIAogICAgICAgVGhlIGRlZmF1bHQgaXMgYGBsb25nYGAuCiAKKwogICAgLi4gYXR0cmlidXRlOjogaGVhZGVyX2ZhY3RvcnkKIAogICAgICAgQSBjYWxsYWJsZSB0aGF0IHRha2VzIHR3byBhcmd1bWVudHMsIGBgbmFtZWBgIGFuZCBgYHZhbHVlYGAsIHdoZXJlCiAgICAgICBgYG5hbWVgYCBpcyBhIGhlYWRlciBmaWVsZCBuYW1lIGFuZCBgYHZhbHVlYGAgaXMgYW4gdW5mb2xkZWQgaGVhZGVyIGZpZWxkCiAgICAgICB2YWx1ZSwgYW5kIHJldHVybnMgYSBzdHJpbmcgc3ViY2xhc3MgdGhhdCByZXByZXNlbnRzIHRoYXQgaGVhZGVyLiAgQQogICAgICAgZGVmYXVsdCBgYGhlYWRlcl9mYWN0b3J5YGAgKHNlZSA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgKSBpcyBwcm92aWRlZAotICAgICAgdGhhdCB1bmRlcnN0YW5kcyBzb21lIG9mIHRoZSA6UkZDOmA1MzIyYCBoZWFkZXIgZmllbGQgdHlwZXMuICAoQ3VycmVudGx5Ci0gICAgICBhZGRyZXNzIGZpZWxkcyBhbmQgZGF0ZSBmaWVsZHMgaGF2ZSBzcGVjaWFsIHRyZWF0bWVudCwgd2hpbGUgYWxsIG90aGVyCi0gICAgICBmaWVsZHMgYXJlIHRyZWF0ZWQgYXMgdW5zdHJ1Y3R1cmVkLiAgVGhpcyBsaXN0IHdpbGwgYmUgY29tcGxldGVkIGJlZm9yZQotICAgICAgdGhlIGV4dGVuc2lvbiBpcyBtYXJrZWQgc3RhYmxlLikKKyAgICAgIHRoYXQgc3VwcG9ydHMgY3VzdG9tIHBhcnNpbmcgZm9yIHRoZSB2YXJpb3VzIGFkZHJlc3MgYW5kIGRhdGUgOlJGQzpgNTMyMmAKKyAgICAgIGhlYWRlciBmaWVsZCB0eXBlcywgYW5kIHRoZSBtYWpvciBNSU1FIGhlYWRlciBmaWVsZCBzdHlwZXMuICBTdXBwb3J0IGZvcgorICAgICAgYWRkaXRpb25hbCBjdXN0b20gcGFyc2luZyB3aWxsIGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCisKIAogICAgLi4gYXR0cmlidXRlOjogY29udGVudF9tYW5hZ2VyCiAKICAgICAgIEFuIG9iamVjdCB3aXRoIGF0IGxlYXN0IHR3byBtZXRob2RzOiBnZXRfY29udGVudCBhbmQgc2V0X2NvbnRlbnQuICBXaGVuCi0gICAgICB0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X2NvbnRlbnRgIG9yCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5zZXRfY29udGVudGAgbWV0aG9kIG9mIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNhbGxlZCwgaXQgY2FsbHMgdGhlCisgICAgICB0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5nZXRfY29udGVudGAgb3IKKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIG1ldGhvZCBvZiBhbgorICAgICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdCBpcyBjYWxsZWQsIGl0IGNhbGxzIHRoZQogICAgICAgY29ycmVzcG9uZGluZyBtZXRob2Qgb2YgdGhpcyBvYmplY3QsIHBhc3NpbmcgaXQgdGhlIG1lc3NhZ2Ugb2JqZWN0IGFzIGl0cwogICAgICAgZmlyc3QgYXJndW1lbnQsIGFuZCBhbnkgYXJndW1lbnRzIG9yIGtleXdvcmRzIHRoYXQgd2VyZSBwYXNzZWQgdG8gaXQgYXMKICAgICAgIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgQnkgZGVmYXVsdCBgYGNvbnRlbnRfbWFuYWdlcmBgIGlzIHNldCB0bwpAQCAtNDYyLDE2ICs0NDIsMjIgQEAKICAgIFRoZSBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgYWJzdHJhY3QKICAgIG1ldGhvZHMgb2YgOmNsYXNzOmBQb2xpY3lgOgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9tYXhfY291bnQobmFtZSkKIAogICAgICAgUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlCiAgICAgICA6YXR0cjpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIubWF4X2NvdW50YCBhdHRyaWJ1dGUgb2YgdGhlCiAgICAgICBzcGVjaWFsaXplZCBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaGVhZGVyIHdpdGggdGhlIGdpdmVuIG5hbWUuCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKIAotICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIGlzIHRoZSBzYW1lIGFzIHRoYXQgZm9yIHRoZQotICAgICAgOmNsYXNzOmBDb21wYXQzMmAgcG9saWN5LgorCisgICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJ2BgOmBgJyBhbmQgcmV0dXJuZWQKKyAgICAgIHVubW9kaWZpZWQuICBUaGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBzdHJpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIG9mZgorICAgICAgdGhlIHJlbWFpbmRlciBvZiB0aGUgZmlyc3QgbGluZSwgam9pbmluZyBhbGwgc3Vic2VxdWVudCBsaW5lcyB0b2dldGhlciwKKyAgICAgIGFuZCBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLgorCiAKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKIApAQCAtNDgyLDYgKzQ2OCw3IEBACiAgICAgICB0aGUgdmFsdWUuICBJbiB0aGlzIGNhc2UgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQgaWYgdGhlIGlucHV0IHZhbHVlCiAgICAgICBjb250YWlucyBDUiBvciBMRiBjaGFyYWN0ZXJzLgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKIAogICAgICAgSWYgdGhlIHZhbHVlIGhhcyBhIGBgbmFtZWBgIGF0dHJpYnV0ZSwgaXQgaXMgcmV0dXJuZWQgdG8gdW5tb2RpZmllZC4KQEAgLTQ5MCw2ICs0NzcsNyBAQAogICAgICAgaGVhZGVyIG9iamVjdCBpcyByZXR1cm5lZC4gIEFueSBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzIGdldCB0dXJuZWQgaW50bwogICAgICAgdGhlIHVuaWNvZGUgdW5rbm93bi1jaGFyYWN0ZXIgZ2x5cGguCiAKKwogICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKIAogICAgICAgSGVhZGVyIGZvbGRpbmcgaXMgY29udHJvbGxlZCBieSB0aGUgOmF0dHI6YHJlZm9sZF9zb3VyY2VgIHBvbGljeSBzZXR0aW5nLgpAQCAtNTA4LDYgKzQ5Niw3IEBACiAgICAgICByZWdhcmRsZXNzIG9mIHRoZSBgYHJlZm9sZF9zb3VyY2VgYCBzZXR0aW5nLCB3aGljaCBjYXVzZXMgdGhlIGJpbmFyeSBkYXRhCiAgICAgICB0byBiZSBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgogCisKICAgIC4uIG1ldGhvZDo6IGZvbGRfYmluYXJ5KG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgc2FtZSBhcyA6bWV0aDpgZm9sZGAgaWYgOmF0dHI6YH5Qb2xpY3kuY3RlX3R5cGVgIGlzIGBgN2JpdGBgLCBleGNlcHQKQEAgLTUxOSwyMyArNTA4LDI3IEBACiAgICAgICBgYHJlZm9sZF9oZWFkZXJgYCBzZXR0aW5nLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGV0aGVyIHRoZQogICAgICAgYmluYXJ5IGRhdGEgY29uc2lzdHMgb2Ygc2luZ2xlIGJ5dGUgY2hhcmFjdGVycyBvciBtdWx0aWJ5dGUgY2hhcmFjdGVycy4KIAorCiBUaGUgZm9sbG93aW5nIGluc3RhbmNlcyBvZiA6Y2xhc3M6YEVtYWlsUG9saWN5YCBwcm92aWRlIGRlZmF1bHRzIHN1aXRhYmxlIGZvcgogc3BlY2lmaWMgYXBwbGljYXRpb24gZG9tYWlucy4gIE5vdGUgdGhhdCBpbiB0aGUgZnV0dXJlIHRoZSBiZWhhdmlvciBvZiB0aGVzZQogaW5zdGFuY2VzIChpbiBwYXJ0aWN1bGFyIHRoZSBgYEhUVFBgYCBpbnN0YW5jZSkgbWF5IGJlIGFkanVzdGVkIHRvIGNvbmZvcm0gZXZlbgogbW9yZSBjbG9zZWx5IHRvIHRoZSBSRkNzIHJlbGV2YW50IHRvIHRoZWlyIGRvbWFpbnMuCiAKKwogLi4gZGF0YTo6IGRlZmF1bHQKIAogICAgQW4gaW5zdGFuY2Ugb2YgYGBFbWFpbFBvbGljeWBgIHdpdGggYWxsIGRlZmF1bHRzIHVuY2hhbmdlZC4gIFRoaXMgcG9saWN5CiAgICB1c2VzIHRoZSBzdGFuZGFyZCBQeXRob24gYGBcbmBgIGxpbmUgZW5kaW5ncyByYXRoZXIgdGhhbiB0aGUgUkZDLWNvcnJlY3QKICAgIGBgXHJcbmBgLgogCisKIC4uIGRhdGE6OiBTTVRQCiAKICAgIFN1aXRhYmxlIGZvciBzZXJpYWxpemluZyBtZXNzYWdlcyBpbiBjb25mb3JtYW5jZSB3aXRoIHRoZSBlbWFpbCBSRkNzLgogICAgTGlrZSBgYGRlZmF1bHRgYCwgYnV0IHdpdGggYGBsaW5lc2VwYGAgc2V0IHRvIGBgXHJcbmBgLCB3aGljaCBpcyBSRkMKICAgIGNvbXBsaWFudC4KIAorCiAuLiBkYXRhOjogU01UUFVURjgKIAogICAgVGhlIHNhbWUgYXMgYGBTTVRQYGAgZXhjZXB0IHRoYXQgOmF0dHI6YH5FbWFpbFBvbGljeS51dGY4YCBpcyBgYFRydWVgYC4KQEAgLTU0NCwxMSArNTM3LDEzIEBACiAgICBzZW5kZXIgb3IgcmVjaXBpZW50IGFkZHJlc3NlcyBoYXZlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzICh0aGUKICAgIDptZXRoOmBzbXRwbGliLlNNVFAuc2VuZF9tZXNzYWdlYCBtZXRob2QgaGFuZGxlcyB0aGlzIGF1dG9tYXRpY2FsbHkpLgogCisKIC4uIGRhdGE6OiBIVFRQCiAKICAgIFN1aXRhYmxlIGZvciBzZXJpYWxpemluZyBoZWFkZXJzIHdpdGggZm9yIHVzZSBpbiBIVFRQIHRyYWZmaWMuICBMaWtlCiAgICBgYFNNVFBgYCBleGNlcHQgdGhhdCBgYG1heF9saW5lX2xlbmd0aGBgIGlzIHNldCB0byBgYE5vbmVgYCAodW5saW1pdGVkKS4KIAorCiAuLiBkYXRhOjogc3RyaWN0CiAKICAgIENvbnZlbmllbmNlIGluc3RhbmNlLiAgVGhlIHNhbWUgYXMgYGBkZWZhdWx0YGAgZXhjZXB0IHRoYXQKQEAgLTU1Nyw2ICs1NTIsNyBAQAogCiAgICAgICAgIHNvbWVwb2xpY3kgKyBwb2xpY3kuc3RyaWN0CiAKKwogV2l0aCBhbGwgb2YgdGhlc2UgOmNsYXNzOmBFbWFpbFBvbGljaWVzIDwuRW1haWxQb2xpY3k+YCwgdGhlIGVmZmVjdGl2ZSBBUEkgb2YKIHRoZSBlbWFpbCBwYWNrYWdlIGlzIGNoYW5nZWQgZnJvbSB0aGUgUHl0aG9uIDMuMiBBUEkgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgogCkBAIC01NzMsNyArNTY5LDcgQEAKICAgICAgYW5kIGFsbG93ZWQuCiAKIEZyb20gdGhlIGFwcGxpY2F0aW9uIHZpZXcsIHRoaXMgbWVhbnMgdGhhdCBhbnkgaGVhZGVyIG9idGFpbmVkIHRocm91Z2ggdGhlCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGlzIGEgaGVhZGVyIG9iamVjdCB3aXRoIGV4dHJhCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaXMgYSBoZWFkZXIgb2JqZWN0IHdpdGggZXh0cmEKIGF0dHJpYnV0ZXMsIHdob3NlIHN0cmluZyB2YWx1ZSBpcyB0aGUgZnVsbHkgZGVjb2RlZCB1bmljb2RlIHZhbHVlIG9mIHRoZQogaGVhZGVyLiAgTGlrZXdpc2UsIGEgaGVhZGVyIG1heSBiZSBhc3NpZ25lZCBhIG5ldyB2YWx1ZSwgb3IgYSBuZXcgaGVhZGVyCiBjcmVhdGVkLCB1c2luZyBhIHVuaWNvZGUgc3RyaW5nLCBhbmQgdGhlIHBvbGljeSB3aWxsIHRha2UgY2FyZSBvZiBjb252ZXJ0aW5nCkBAIC01ODEsMyArNTc3LDc1IEBACiAKIFRoZSBoZWFkZXIgb2JqZWN0cyBhbmQgdGhlaXIgYXR0cmlidXRlcyBhcmUgZGVzY3JpYmVkIGluCiA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgLgorCisKKworLi4gY2xhc3M6OiBDb21wYXQzMigqKmt3KQorCisgICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBwb2xpY3kuICBJdAorICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIFRoZQorICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgbW9kdWxlIGFsc28gZGVmaW5lcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLAorICAgOmNvbnN0OmBjb21wYXQzMmAsIHRoYXQgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBwb2xpY3kuICBUaHVzIHRoZSBkZWZhdWx0CisgICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpcyB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMi4KKworICAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGhhdmUgdmFsdWVzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZQorICAgOmNsYXNzOmBQb2xpY3lgIGRlZmF1bHQ6CisKKworICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21fCisKKyAgICAgIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgLgorCisKKyAgIFRoZSBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUKKyAgIGFic3RyYWN0IG1ldGhvZHMgb2YgOmNsYXNzOmBQb2xpY3lgOgorCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCisKKyAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnYGA6YGAnIGFuZCByZXR1cm5lZAorICAgICAgdW5tb2RpZmllZC4gIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmCisgICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLAorICAgICAgYW5kIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCisKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCisKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgYmluYXJ5IGRhdGEsIGl0IGlzIGNvbnZlcnRlZCBpbnRvIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgorICAgICAgT3RoZXJ3aXNlIGl0IGlzIHJldHVybmVkIHVubW9kaWZpZWQuCisKKworICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKKworICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCisgICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcworICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIE5vbi1BU0NJSSBiaW5hcnkgZGF0YSBhcmUKKyAgICAgIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCisKKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZworICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKKyAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBJZiBgYGN0ZV90eXBlYGAgaXMKKyAgICAgIGBgN2JpdGBgLCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAKKyAgICAgIGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZSBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcKKyAgICAgIGxpbmUgYnJlYWtzIGFuZCBhbnkgKFJGQyBpbnZhbGlkKSBiaW5hcnkgZGF0YSBpdCBtYXkgY29udGFpbi4KKworCisuLiBkYXRhOjogY29tcGF0MzIKKworICAgQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBDb21wYXQzMmAsIHByb3ZpZGluZyAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZQorICAgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjMgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgZmVhdHVyZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKaW5kZXggZThiYjAyYi4uYzQxODdkZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnJzdApAQCAtMyw1MCArMywxMDQgQEAKIAogLi4gbW9kdWxlOjogZW1haWwKICAgIDpzeW5vcHNpczogUGFja2FnZSBzdXBwb3J0aW5nIHRoZSBwYXJzaW5nLCBtYW5pcHVsYXRpbmcsIGFuZCBnZW5lcmF0aW5nCi0gICAgICAgICAgICAgIGVtYWlsIG1lc3NhZ2VzLCBpbmNsdWRpbmcgTUlNRSBkb2N1bWVudHMuCi0KLS4uIG1vZHVsZWF1dGhvcjo6IEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4KLS4uIHNlY3Rpb25hdXRob3I6OiBCYXJyeSBBLiBXYXJzYXcgPGJhcnJ5QHB5dGhvbi5vcmc+Ci0uLiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICBlbWFpbCBtZXNzYWdlcy4KKy4uIG1vZHVsZWF1dGhvcjo6IEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4sCisgICAgICAgICAgICAgICAgICBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvX19pbml0X18ucHlgCiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyBhIGxpYnJhcnkgZm9yIG1hbmFnaW5nIGVtYWlsIG1lc3NhZ2VzLCBpbmNsdWRpbmcKLU1JTUUgYW5kIG90aGVyIDpyZmM6YDI4MjJgXCAtYmFzZWQgbWVzc2FnZSBkb2N1bWVudHMuICBJdCBpcyBzcGVjaWZpY2FsbHkgKm5vdCoKLWRlc2lnbmVkIHRvIGRvIGFueSBzZW5kaW5nIG9mIGVtYWlsIG1lc3NhZ2VzIHRvIFNNVFAgKDpyZmM6YDI4MjFgKSwgTk5UUCwgb3IKLW90aGVyIHNlcnZlcnM7IHRob3NlIGFyZSBmdW5jdGlvbnMgb2YgbW9kdWxlcyBzdWNoIGFzIDptb2Q6YHNtdHBsaWJgIGFuZAotOm1vZDpgbm50cGxpYmAuIFRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBhdHRlbXB0cyB0byBiZSBhcyBSRkMtY29tcGxpYW50IGFzCi1wb3NzaWJsZSwgc3VwcG9ydGluZyBpbiBhZGRpdGlvbiB0byA6cmZjOmAyODIyYCwgc3VjaCBNSU1FLXJlbGF0ZWQgUkZDcyBhcwotOnJmYzpgMjA0NWAsIDpyZmM6YDIwNDZgLCA6cmZjOmAyMDQ3YCwgYW5kIDpyZmM6YDIyMzFgLgorVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIGEgbGlicmFyeSBmb3IgbWFuYWdpbmcgZW1haWwgbWVzc2FnZXMuICBJdCBpcworc3BlY2lmaWNhbGx5ICpub3QqIGRlc2lnbmVkIHRvIGRvIGFueSBzZW5kaW5nIG9mIGVtYWlsIG1lc3NhZ2VzIHRvIFNNVFAKKyg6cmZjOmAyODIxYCksIE5OVFAsIG9yIG90aGVyIHNlcnZlcnM7IHRob3NlIGFyZSBmdW5jdGlvbnMgb2YgbW9kdWxlcyBzdWNoIGFzCis6bW9kOmBzbXRwbGliYCBhbmQgOm1vZDpgbm50cGxpYmAuICBUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgYXR0ZW1wdHMgdG8gYmUgYXMKK1JGQy1jb21wbGlhbnQgYXMgcG9zc2libGUsIHN1cHBvcnRpbmcgOnJmYzpgNTIzM2AgYW5kIDpyZmM6YDY1MzJgLCBhcyB3ZWxsIGFzCitzdWNoIE1JTUUtcmVsYXRlZCBSRkNzIGFzIDpyZmM6YDIwNDVgLCA6cmZjOmAyMDQ2YCwgOnJmYzpgMjA0N2AsIDpyZmM6YDIxODNgLAorYW5kIDpyZmM6YDIyMzFgLgogCi1UaGUgcHJpbWFyeSBkaXN0aW5ndWlzaGluZyBmZWF0dXJlIG9mIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyB0aGF0IGl0IHNwbGl0cwotdGhlIHBhcnNpbmcgYW5kIGdlbmVyYXRpbmcgb2YgZW1haWwgbWVzc2FnZXMgZnJvbSB0aGUgaW50ZXJuYWwgKm9iamVjdCBtb2RlbCoKLXJlcHJlc2VudGF0aW9uIG9mIGVtYWlsLiAgQXBwbGljYXRpb25zIHVzaW5nIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBkZWFsCi1wcmltYXJpbHkgd2l0aCBvYmplY3RzOyB5b3UgY2FuIGFkZCBzdWItb2JqZWN0cyB0byBtZXNzYWdlcywgcmVtb3ZlIHN1Yi1vYmplY3RzCi1mcm9tIG1lc3NhZ2VzLCBjb21wbGV0ZWx5IHJlLWFycmFuZ2UgdGhlIGNvbnRlbnRzLCBldGMuICBUaGVyZSBpcyBhIHNlcGFyYXRlCi1wYXJzZXIgYW5kIGEgc2VwYXJhdGUgZ2VuZXJhdG9yIHdoaWNoIGhhbmRsZXMgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZmxhdCB0ZXh0Ci10byB0aGUgb2JqZWN0IG1vZGVsLCBhbmQgdGhlbiBiYWNrIHRvIGZsYXQgdGV4dCBhZ2Fpbi4gIFRoZXJlIGFyZSBhbHNvIGhhbmR5Ci1zdWJjbGFzc2VzIGZvciBzb21lIGNvbW1vbiBNSU1FIG9iamVjdCB0eXBlcywgYW5kIGEgZmV3IG1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzCi10aGF0IGhlbHAgd2l0aCBzdWNoIGNvbW1vbiB0YXNrcyBhcyBleHRyYWN0aW5nIGFuZCBwYXJzaW5nIG1lc3NhZ2UgZmllbGQgdmFsdWVzLAotY3JlYXRpbmcgUkZDLWNvbXBsaWFudCBkYXRlcywgZXRjLgorVGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGNhbiBiZSBkaXZpZGVkIGludG8gdGhyZWUgbWFqb3IKK2NvbXBvbmVudHMsIHBsdXMgYSBmb3VydGggY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBvdGhlcgorY29tcG9uZW50cy4KKworVGhlIGNlbnRyYWwgY29tcG9uZW50IG9mIHRoZSBwYWNrYWdlIGlzIGFuICJvYmplY3QgbW9kZWwiIHRoYXQgcmVwcmVzZW50cyBlbWFpbAorbWVzc2FnZXMuICBBbiBhcHBsaWNhdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgcGFja2FnZSBwcmltYXJpbHkgdGhyb3VnaCB0aGUKK29iamVjdCBtb2RlbCBpbnRlcmZhY2UgZGVmaW5lZCBpbiB0aGUgOm1vZDpgfmVtYWlsLm1lc3NhZ2VgIHN1Yi1tb2R1bGUuICBUaGUKK2FwcGxpY2F0aW9uIGNhbiB1c2UgdGhpcyBBUEkgdG8gYXNrIHF1ZXN0aW9ucyBhYm91dCBhbiBleGlzdGluZyBlbWFpbCwgdG8KK2NvbnN0cnVjdCBhIG5ldyBlbWFpbCwgb3IgdG8gYWRkIG9yIHJlbW92ZSBlbWFpbCBzdWJjb21wb25lbnRzIHRoYXQgdGhlbXNlbHZlcwordXNlIHRoZSBzYW1lIG9iamVjdCBtb2RlbCBpbnRlcmZhY2UuICBUaGF0IGlzLCBmb2xsb3dpbmcgdGhlIG5hdHVyZSBvZiBlbWFpbAorbWVzc2FnZXMgYW5kIHRoZWlyIE1JTUUgc3ViY29tcG9uZW50cywgdGhlIGVtYWlsIG9iamVjdCBtb2RlbCBpcyBhIHRyZWUKK3N0cnVjdHVyZSBvZiBvYmplY3RzIHRoYXQgYWxsIHByb3ZpZGUgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorQVBJLgorCitUaGUgb3RoZXIgdHdvIG1ham9yIGNvbXBvbmVudHMgb2YgdGhlIHBhY2thZ2UgYXJlIHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBhbmQKK3RoZSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYC4gIFRoZSBwYXJzZXIgdGFrZXMgdGhlIHNlcmlhbGl6ZWQgdmVyc2lvbiBvZiBhbgorZW1haWwgbWVzc2FnZSAoYSBzdHJlYW0gb2YgYnl0ZXMpIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgdHJlZSBvZgorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdHMuICBUaGUgZ2VuZXJhdG9yIHRha2VzIGFuCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgYW5kIHR1cm5zIGl0IGJhY2sgaW50byBhIHNlcmlhbGl6ZWQgYnl0ZQorc3RyZWFtLiAgKFRoZSBwYXJzZXIgYW5kIGdlbmVyYXRvciBhbHNvIGhhbmRsZSBzdHJlYW1zIG9mIHRleHQgY2hhcmFjdGVycywgYnV0Cit0aGlzIHVzYWdlIGlzIGRpc2NvdXJhZ2VkIGFzIGl0IGlzIHRvbyBlYXN5IHRvIGVuZCB1cCB3aXRoIG1lc3NhZ2VzIHRoYXQgYXJlCitub3QgdmFsaWQgaW4gb25lIHdheSBvciBhbm90aGVyLikKKworVGhlIGNvbnRyb2wgY29tcG9uZW50IGlzIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBtb2R1bGUuICBFdmVyeQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLCBldmVyeSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCwgYW5kIGV2ZXJ5Cis6bW9kOmB+ZW1haWwucGFyc2VyYCBoYXMgYW4gYXNzb2NpYXRlZCA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdAorY29udHJvbHMgaXRzIGJlaGF2aW9yLiAgVXN1YWxseSBhbiBhcHBsaWNhdGlvbiBvbmx5IG5lZWRzIHRvIHNwZWNpZnkgdGhlIHBvbGljeQord2hlbiBhbiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaXMgY3JlYXRlZCwgZWl0aGVyIGJ5IGRpcmVjdGx5CitpbnN0YW50aWF0aW5nIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCAgdG8gY3JlYXRlIGEgbmV3IGVtYWlsLAorb3IgYnkgcGFyc2luZyBhbiBpbnB1dCBzdHJlYW0gdXNpbmcgYSA6bW9kOmB+ZW1haWwucGFyc2VyYC4gIEJ1dCB0aGUgcG9saWN5IGNhbgorYmUgY2hhbmdlZCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgdXNpbmcgYSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYC4KK1RoaXMgYWxsb3dzLCBmb3IgZXhhbXBsZSwgYSBnZW5lcmljIGVtYWlsIG1lc3NhZ2UgdG8gYmUgcGFyc2VkIGZyb20gZGlzaywgYnV0Cit0byBzZXJpYWxpemUgaXQgdXNpbmcgc3RhbmRhcmQgU01UUCBzZXR0aW5ncyB3aGVuIHNlbmRpbmcgaXQgdG8gYW4gZW1haWwKK3NlcnZlci4KKworVGhlIGVtYWlsIHBhY2thZ2UgZG9lcyBpdHMgYmVzdCB0byBoaWRlIHRoZSBkZXRhaWxzIG9mIHRoZSB2YXJpb3VzIGdvdmVybmluZworUkZDcyBmcm9tIHRoZSBhcHBsaWNhdGlvbi4gIENvbmNlcHR1YWxseSB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGJlIGFibGUgdG8KK3RyZWF0IHRoZSBlbWFpbCBtZXNzYWdlIGFzIGEgc3RydWN0dXJlZCB0cmVlIG9mIHVuaWNvZGUgdGV4dCBhbmQgYmluYXJ5CithdHRhY2htZW50cywgd2l0aG91dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQgaG93IHRoZXNlIGFyZSByZXByZXNlbnRlZCB3aGVuCitzZXJpYWxpemVkLiAgSW4gcHJhY3RpY2UsIGhvd2V2ZXIsIGl0IGlzIG9mdGVuIG5lY2Vzc2FyeSB0byBiZSBhd2FyZSBvZiBhdAorbGVhc3Qgc29tZSBvZiB0aGUgcnVsZXMgZ292ZXJuaW5nIE1JTUUgbWVzc2FnZXMgYW5kIHRoZWlyIHN0cnVjdHVyZSwKK3NwZWNpZmljYWxseSB0aGUgbmFtZXMgYW5kIG5hdHVyZSBvZiB0aGUgTUlNRSAiY29udGVudCB0eXBlcyIgYW5kIGhvdyB0aGV5CitpZGVudGlmeSBtdWx0aXBhcnQgZG9jdW1lbnRzLiAgRm9yIHRoZSBtb3N0IHBhcnQgdGhpcyBrbm93bGVkZ2Ugc2hvdWxkIG9ubHkgYmUKK3JlcXVpcmVkIGZvciBtb3JlIGNvbXBsZXggYXBwbGljYXRpb25zLCBhbmQgZXZlbiB0aGVuIGl0IHNob3VsZCBvbmx5IGJlIHRoZQoraGlnaCBsZXZlbCBzdHJ1Y3R1cmUgaW4gcXVlc3Rpb24sIGFuZCBub3QgdGhlIGRldGFpbHMgb2YgaG93IHRob3NlIHN0cnVjdHVyZXMKK2FyZSByZXByZXNlbnRlZC4gIFNpbmNlIE1JTUUgY29udGVudCB0eXBlcyBhcmUgdXNlZCB3aWRlbHkgaW4gbW9kZXJuIGludGVybmV0Citzb2Z0d2FyZSAobm90IGp1c3QgZW1haWwpLCB0aGlzIHdpbGwgYmUgYSBmYW1pbGlhciBjb25jZXB0IHRvIG1hbnkgcHJvZ3JhbW1lcnMuCiAKIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlLgotVGhlIG9yZGVyaW5nIGZvbGxvd3MgYSBwcm9ncmVzc2lvbiB0aGF0IHNob3VsZCBiZSBjb21tb24gaW4gYXBwbGljYXRpb25zOiBhbgotZW1haWwgbWVzc2FnZSBpcyByZWFkIGFzIGZsYXQgdGV4dCBmcm9tIGEgZmlsZSBvciBvdGhlciBzb3VyY2UsIHRoZSB0ZXh0IGlzCi1wYXJzZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0IHN0cnVjdHVyZSBvZiB0aGUgZW1haWwgbWVzc2FnZSwgdGhpcyBzdHJ1Y3R1cmUgaXMKLW1hbmlwdWxhdGVkLCBhbmQgZmluYWxseSwgdGhlIG9iamVjdCB0cmVlIGlzIHJlbmRlcmVkIGJhY2sgaW50byBmbGF0IHRleHQuCitXZSBzdGFydCB3aXRoIHRoZSA6bW9kOmB+ZW1haWwubWVzc2FnZWAgb2JqZWN0IG1vZGVsLCB3aGljaCBpcyB0aGUgcHJpbWFyeQoraW50ZXJmYWNlIGFuIGFwcGxpY2F0aW9uIHdpbGwgdXNlLCBhbmQgZm9sbG93IHRoYXQgd2l0aCB0aGUKKzptb2Q6YH5lbWFpbC5wYXJzZXJgIGFuZCA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCBjb21wb25lbnRzLiAgVGhlbiB3ZSBjb3ZlciB0aGUKKzptb2Q6YH5lbWFpbC5wb2xpY3lgIGNvbnRyb2xzLCB3aGljaCBjb21wbGV0ZXMgdGhlIHRyZWF0bWVudCBvZiB0aGUgbWFpbgorY29tcG9uZW50cyBvZiB0aGUgbGlicmFyeS4KIAotSXQgaXMgcGVyZmVjdGx5IGZlYXNpYmxlIHRvIGNyZWF0ZSB0aGUgb2JqZWN0IHN0cnVjdHVyZSBvdXQgb2Ygd2hvbGUgY2xvdGggLS0tCi1pLmUuIGNvbXBsZXRlbHkgZnJvbSBzY3JhdGNoLiAgRnJvbSB0aGVyZSwgYSBzaW1pbGFyIHByb2dyZXNzaW9uIGNhbiBiZSB0YWtlbiBhcwotYWJvdmUuCitUaGUgbmV4dCB0aHJlZSBzZWN0aW9ucyBjb3ZlciB0aGUgZXhjZXB0aW9ucyB0aGUgcGFja2FnZSBtYXkgcmFpc2UgYW5kIHRoZQorZGVmZWN0cyAobm9uLWNvbXBsaWFuY2Ugd2l0aCB0aGUgUkZDcykgdGhhdCB0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAgbWF5CitkZXRlY3QuICBUaGVuIHdlIGNvdmVyIHRoZSA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgIGFuZCB0aGUKKzptb2Q6YH5lbWFpbC5jb250ZW50bWFuYWdlcmAgc3ViLWNvbXBvbmVudHMsIHdoaWNoIHByb3ZpZGUgdG9vbHMgZm9yIGRvaW5nIG1vcmUKK2RldGFpbGVkIG1hbmlwdWxhdGlvbiBvZiBoZWFkZXJzIGFuZCBwYXlsb2FkcywgcmVzcGVjdGl2ZWx5LiAgQm90aCBvZiB0aGVzZQorY29tcG9uZW50cyBjb250YWluIGZlYXR1cmVzIHJlbGV2YW50IHRvIGNvbnN1bWluZyBhbmQgcHJvZHVjaW5nIG5vbi10cml2aWFsCittZXNzYWdlcywgYnV0IGFsc28gZG9jdW1lbnQgdGhlaXIgZXh0ZW5zaWJpbGl0eSBBUElzLCB3aGljaCB3aWxsIGJlIG9mIGludGVyZXN0Cit0byBhZHZhbmNlZCBhcHBsaWNhdGlvbnMuCiAKLUFsc28gaW5jbHVkZWQgYXJlIGRldGFpbGVkIHNwZWNpZmljYXRpb25zIG9mIGFsbCB0aGUgY2xhc3NlcyBhbmQgbW9kdWxlcyB0aGF0Ci10aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgcHJvdmlkZXMsIHRoZSBleGNlcHRpb24gY2xhc3NlcyB5b3UgbWlnaHQgZW5jb3VudGVyCi13aGlsZSB1c2luZyB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UsIHNvbWUgYXV4aWxpYXJ5IHV0aWxpdGllcywgYW5kIGEgZmV3Ci1leGFtcGxlcy4gIEZvciB1c2VycyBvZiB0aGUgb2xkZXIgOm1vZDpgbWltZWxpYmAgcGFja2FnZSwgb3IgcHJldmlvdXMgdmVyc2lvbnMKLW9mIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSwgYSBzZWN0aW9uIG9uIGRpZmZlcmVuY2VzIGFuZCBwb3J0aW5nIGlzIHByb3ZpZGVkLgorRm9sbG93aW5nIHRob3NlIGlzIGEgc2V0IG9mIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBmdW5kYW1lbnRhbCBwYXJ0cyBvZiB0aGUgQVBJcworY292ZXJlZCBpbiB0aGUgcHJlY2VkaW5nIHNlY3Rpb25zLgorCitUaGUgZm9yZ29pbmcgcmVwcmVzZW50IHRoZSBtb2Rlcm4gKHVuaWNvZGUgZnJpZW5kbHkpIEFQSSBvZiB0aGUgZW1haWwgcGFja2FnZS4KK1RoZSByZW1haW5pbmcgc2VjdGlvbnMsIHN0YXJ0aW5nIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAKK2NsYXNzLCBjb3ZlciB0aGUgbGVnYWN5IDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBBUEkgdGhhdCBkZWFscyBtdWNoIG1vcmUKK2RpcmVjdGx5IHdpdGggdGhlIGRldGFpbHMgb2YgaG93IGVtYWlsIG1lc3NhZ2VzIGFyZSByZXByZXNlbnRlZC4gIFRoZQorOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSSBkb2VzICpub3QqIGhpZGUgdGhlIGRldGFpbHMgb2YgdGhlIFJGQ3MgZnJvbQordGhlIGFwcGxpY2F0aW9uLCBidXQgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgdG8gb3BlcmF0ZSBhdCB0aGF0IGxldmVsLCB0aGV5CitjYW4gYmUgdXNlZnVsIHRvb2xzLiAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGFsc28gcmVsZXZhbnQgZm9yIGFwcGxpY2F0aW9ucyB0aGF0CithcmUgc3RpbGwgdXNpbmcgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSSBmb3IgYmFja3dhcmQKK2NvbXBhdGliaWxpdHkgcmVhc29ucy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIERvY3MgcmVvcmdhbml6ZWQgYW5kIHJld3JpdHRlbiB0byBwcm9tb3RlIHRoZSBuZXcKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYC86Y2xhc3M6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3lgCisgICBBUEkuCiAKIENvbnRlbnRzIG9mIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBkb2N1bWVudGF0aW9uOgogCkBAIC01NiwzMzUgKzExMCw0MyBAQAogICAgZW1haWwucGFyc2VyLnJzdAogICAgZW1haWwuZ2VuZXJhdG9yLnJzdAogICAgZW1haWwucG9saWN5LnJzdAorCisgICBlbWFpbC5lcnJvcnMucnN0CiAgICBlbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKICAgIGVtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdAorCisgICBlbWFpbC5leGFtcGxlcy5yc3QKKworTGVnYWN5IEFQSToKKworLi4gdG9jdHJlZTo6CisKKyAgIGVtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0CiAgICBlbWFpbC5taW1lLnJzdAogICAgZW1haWwuaGVhZGVyLnJzdAogICAgZW1haWwuY2hhcnNldC5yc3QKICAgIGVtYWlsLmVuY29kZXJzLnJzdAotICAgZW1haWwuZXJyb3JzLnJzdAogICAgZW1haWwudXRpbC5yc3QKICAgIGVtYWlsLml0ZXJhdG9ycy5yc3QKLSAgIGVtYWlsLWV4YW1wbGVzLnJzdAogCiAKIC4uIHNlZWFsc286OgogCiAgICBNb2R1bGUgOm1vZDpgc210cGxpYmAKLSAgICAgIFNNVFAgcHJvdG9jb2wgY2xpZW50CisgICAgICBTTVRQIChTaW1wbGUgTWFpbCBUcmFuc3BvcnQgUHJvdGNvbCkgY2xpZW50CisKKyAgIE1vZHVsZSA6bW9kOmBwb3BsaWJgCisgICAgICBQT1AgKFBvc3QgT2ZmaWNlIFByb3RvY29sKSBjbGllbnQKKworICAgTW9kdWxlIDptb2Q6YGltYXBsaWJgCisgICAgICBJTUFQIChJbnRlcm5ldCBNZXNzYWdlIEFjY2VzcyBQcm90b2NvbCkgY2xpZW50CiAKICAgIE1vZHVsZSA6bW9kOmBubnRwbGliYAotICAgICAgTk5UUCBwcm90b2NvbCBjbGllbnQKKyAgICAgIE5OVFAgKE5ldCBOZXdzIFRyYW5zcG9ydCBQcm90b2NvbCkgY2xpZW50CiAKKyAgIE1vZHVsZSA6bW9kOmBtYWlsYm94YAorICAgICAgVG9vbHMgZm9yIGNyZWF0aW5nLCByZWFkaW5nLCBhbmQgbWFuYWdpbmcgY29sbGVjdGlvbnMgb2YgbWVzc2FnZXMgb24gZGlzaworICAgICAgdXNpbmcgYSB2YXJpZXR5IHN0YW5kYXJkIGZvcm1hdHMuCiAKLS4uIF9lbWFpbC1wa2ctaGlzdG9yeToKLQotUGFja2FnZSBIaXN0b3J5Ci0tLS0tLS0tLS0tLS0tLS0KLQotVGhpcyB0YWJsZSBkZXNjcmliZXMgdGhlIHJlbGVhc2UgaGlzdG9yeSBvZiB0aGUgZW1haWwgcGFja2FnZSwgY29ycmVzcG9uZGluZyB0bwotdGhlIHZlcnNpb24gb2YgUHl0aG9uIHRoYXQgdGhlIHBhY2thZ2Ugd2FzIHJlbGVhc2VkIHdpdGguICBGb3IgcHVycG9zZXMgb2YgdGhpcwotZG9jdW1lbnQsIHdoZW4geW91IHNlZSBhIG5vdGUgYWJvdXQgY2hhbmdlIG9yIGFkZGVkIHZlcnNpb25zLCB0aGVzZSByZWZlciB0byB0aGUKLVB5dGhvbiB2ZXJzaW9uIHRoZSBjaGFuZ2Ugd2FzIG1hZGUgaW4sICpub3QqIHRoZSBlbWFpbCBwYWNrYWdlIHZlcnNpb24uICBUaGlzCi10YWJsZSBhbHNvIGRlc2NyaWJlcyB0aGUgUHl0aG9uIGNvbXBhdGliaWxpdHkgb2YgZWFjaCB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlLgotCi0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgZW1haWwgdmVyc2lvbiB8IGRpc3RyaWJ1dGVkIHdpdGggICAgICAgICAgICAgfCBjb21wYXRpYmxlIHdpdGggICAgICAgfAotKz09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpjb25zdDpgMS54YCAgfCBQeXRob24gMi4yLjAgdG8gUHl0aG9uIDIuMi4xIHwgKm5vIGxvbmdlciBzdXBwb3J0ZWQqIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDIuNWAgIHwgUHl0aG9uIDIuMi4yKyBhbmQgUHl0aG9uIDIuMyB8IFB5dGhvbiAyLjEgdG8gMi41ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmAzLjBgICB8IFB5dGhvbiAyLjQgYW5kIFB5dGhvbiAyLjUgICAgfCBQeXRob24gMi4zIHRvIDIuNiAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgNC4wYCAgfCBQeXRob24gMi41IHRvIFB5dGhvbiAyLjcgICAgIHwgUHl0aG9uIDIuMyB0byAyLjcgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDUuMGAgIHwgUHl0aG9uIDMuMCBhbmQgUHl0aG9uIDMuMSAgICB8IFB5dGhvbiAzLjAgdG8gMy4yICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmA1LjFgICB8IFB5dGhvbiAzLjIgICAgICAgICAgICAgICAgICAgfCBQeXRob24gMy4yICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLUFmdGVyIFZlcnNpb24gNS4xIChQeXRob24gMy4yKSwgdGhlIGVtYWlsIHBhY2thZ2Ugbm8gbG9uZ2VyIGhhcyBhIHZlcnNpb24gdGhhdAotaXMgc2VwYXJhdGUgZnJvbSB0aGUgUHl0aG9uIHZlcnNpb24uICAoU2VlIHRoZSA6cmVmOmB3aGF0c25ldy1pbmRleGAgZG9jdW1lbnRzCi1mb3IgdGhlIHJlc3BlY3RpdmUgUHl0aG9uIHZlcnNpb25zIGZvciBkZXRhaWxzIG9uIGNoYW5nZXMuKQotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiA1LjEgYW5kCi12ZXJzaW9uIDUuMDoKLQotKiBJdCBpcyBvbmNlIGFnYWluIHBvc3NpYmxlIHRvIHBhcnNlIG1lc3NhZ2VzIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGJ5dGVzLAotICBhbmQgdG8gcmVwcm9kdWNlIHN1Y2ggbWVzc2FnZXMgaWYgdGhlIGRhdGEgY29udGFpbmluZyB0aGUgbm9uLUFTQ0lJCi0gIGJ5dGVzIGlzIG5vdCBtb2RpZmllZC4KLQotKiBOZXcgZnVuY3Rpb25zIDpmdW5jOmBtZXNzYWdlX2Zyb21fYnl0ZXNgIGFuZCA6ZnVuYzpgbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlYCwKLSAgYW5kIG5ldyBjbGFzc2VzIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc0ZlZWRQYXJzZXJgIGFuZAotICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGFsbG93IGJpbmFyeSBtZXNzYWdlIGRhdGEgdG8gYmUgcGFyc2VkCi0gIGludG8gbW9kZWwgb2JqZWN0cy4KLQotKiBHaXZlbiBieXRlcyBpbnB1dCB0byB0aGUgbW9kZWwsIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYAotICB3aWxsIGJ5IGRlZmF1bHQgZGVjb2RlIGEgbWVzc2FnZSBib2R5IHRoYXQgaGFzIGEKLSAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGBgOGJpdGBgIHVzaW5nIHRoZSBjaGFyc2V0Ci0gIHNwZWNpZmllZCBpbiB0aGUgTUlNRSBoZWFkZXJzIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBzdHJpbmcuCi0KLSogR2l2ZW4gYnl0ZXMgaW5wdXQgdG8gdGhlIG1vZGVsLCA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCB3aWxsCi0gIGNvbnZlcnQgbWVzc2FnZSBib2RpZXMgdGhhdCBoYXZlIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mCi0gIDhiaXQgdG8gaW5zdGVhZCBoYXZlIGEgN2JpdCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLgotCi0qIE5ldyBjbGFzcyA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIHByb2R1Y2VzIGJ5dGVzCi0gIGFzIG91dHB1dCwgcHJlc2VydmluZyBhbnkgdW5jaGFuZ2VkIG5vbi1BU0NJSSBkYXRhIHRoYXQgd2FzCi0gIHByZXNlbnQgaW4gdGhlIGlucHV0IHVzZWQgdG8gYnVpbGQgdGhlIG1vZGVsLCBpbmNsdWRpbmcgbWVzc2FnZSBib2RpZXMKLSAgd2l0aCBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiA4Yml0LgotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiA1LjAgYW5kIHZlcnNpb24gNDoKLQotKiBBbGwgb3BlcmF0aW9ucyBhcmUgb24gdW5pY29kZSBzdHJpbmdzLiAgVGV4dCBpbnB1dHMgbXVzdCBiZSBzdHJpbmdzLAotICB0ZXh0IG91dHB1dHMgYXJlIHN0cmluZ3MuICBPdXRwdXRzIGFyZSBsaW1pdGVkIHRvIHRoZSBBU0NJSSBjaGFyYWN0ZXIKLSAgc2V0IGFuZCBzbyBjYW4gYmUgZW5jb2RlZCB0byBBU0NJSSBmb3IgdHJhbnNtaXNzaW9uLiAgSW5wdXRzIGFyZSBhbHNvCi0gIGxpbWl0ZWQgdG8gQVNDSUk7IHRoaXMgaXMgYW4gYWNrbm93bGVkZ2VkIGxpbWl0YXRpb24gb2YgZW1haWwgNS4wIGFuZAotICBtZWFucyBpdCBjYW4gb25seSBiZSB1c2VkIHRvIHBhcnNlIGVtYWlsIHRoYXQgaXMgN2JpdCBjbGVhbi4KLQotSGVyZSBhcmUgdGhlIG1ham9yIGRpZmZlcmVuY2VzIGJldHdlZW4gOm1vZDpgZW1haWxgIHZlcnNpb24gNCBhbmQgdmVyc2lvbiAzOgotCi0qIEFsbCBtb2R1bGVzIGhhdmUgYmVlbiByZW5hbWVkIGFjY29yZGluZyB0byA6cGVwOmA4YCBzdGFuZGFyZHMuICBGb3IgZXhhbXBsZSwKLSAgdGhlIHZlcnNpb24gMyBtb2R1bGUgOm1vZDpgZW1haWwuTWVzc2FnZWAgd2FzIHJlbmFtZWQgdG8gOm1vZDpgZW1haWwubWVzc2FnZWAgaW4KLSAgdmVyc2lvbiA0LgotCi0qIEEgbmV3IHN1YnBhY2thZ2UgOm1vZDpgZW1haWwubWltZWAgd2FzIGFkZGVkIGFuZCBhbGwgdGhlIHZlcnNpb24gMwotICA6bW9kOmBlbWFpbC5NSU1FXCpgIG1vZHVsZXMgd2VyZSByZW5hbWVkIGFuZCBzaXR1YXRlZCBpbnRvIHRoZSA6bW9kOmBlbWFpbC5taW1lYAotICBzdWJwYWNrYWdlLiAgRm9yIGV4YW1wbGUsIHRoZSB2ZXJzaW9uIDMgbW9kdWxlIDptb2Q6YGVtYWlsLk1JTUVUZXh0YCB3YXMgcmVuYW1lZAotICB0byA6bW9kOmBlbWFpbC5taW1lLnRleHRgLgotCi0gICpOb3RlIHRoYXQgdGhlIHZlcnNpb24gMyBuYW1lcyB3aWxsIGNvbnRpbnVlIHRvIHdvcmsgdW50aWwgUHl0aG9uIDIuNiouCi0KLSogVGhlIDptb2Q6YGVtYWlsLm1pbWUuYXBwbGljYXRpb25gIG1vZHVsZSB3YXMgYWRkZWQsIHdoaWNoIGNvbnRhaW5zIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5taW1lLmFwcGxpY2F0aW9uLk1JTUVBcHBsaWNhdGlvbmAgY2xhc3MuCi0KLSogTWV0aG9kcyB0aGF0IHdlcmUgZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDMgaGF2ZSBiZWVuIHJlbW92ZWQuICBUaGVzZSBpbmNsdWRlCi0gIDptZXRoOmBHZW5lcmF0b3IuX19jYWxsX19gLCA6bWV0aDpgTWVzc2FnZS5nZXRfdHlwZWAsCi0gIDptZXRoOmBNZXNzYWdlLmdldF9tYWluX3R5cGVgLCA6bWV0aDpgTWVzc2FnZS5nZXRfc3VidHlwZWAuCi0KLSogRml4ZXMgaGF2ZSBiZWVuIGFkZGVkIGZvciA6cmZjOmAyMjMxYCBzdXBwb3J0IHdoaWNoIGNhbiBjaGFuZ2Ugc29tZSBvZiB0aGUKLSAgcmV0dXJuIHR5cGVzIGZvciA6ZnVuYzpgTWVzc2FnZS5nZXRfcGFyYW0gPGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGFyYW0+YAotICBhbmQgZnJpZW5kcy4gIFVuZGVyIHNvbWUKLSAgY2lyY3Vtc3RhbmNlcywgdmFsdWVzIHdoaWNoIHVzZWQgdG8gcmV0dXJuIGEgMy10dXBsZSBub3cgcmV0dXJuIHNpbXBsZSBzdHJpbmdzCi0gIChzcGVjaWZpY2FsbHksIGlmIGFsbCBleHRlbmRlZCBwYXJhbWV0ZXIgc2VnbWVudHMgd2VyZSB1bmVuY29kZWQsIHRoZXJlIGlzIG5vCi0gIGxhbmd1YWdlIGFuZCBjaGFyc2V0IGRlc2lnbmF0aW9uIGV4cGVjdGVkLCBzbyB0aGUgcmV0dXJuIHR5cGUgaXMgbm93IGEgc2ltcGxlCi0gIHN0cmluZykuICBBbHNvLCAlLWRlY29kaW5nIHVzZWQgdG8gYmUgZG9uZSBmb3IgYm90aCBlbmNvZGVkIGFuZCB1bmVuY29kZWQKLSAgc2VnbWVudHM7IHRoaXMgZGVjb2RpbmcgaXMgbm93IGRvbmUgb25seSBmb3IgZW5jb2RlZCBzZWdtZW50cy4KLQotSGVyZSBhcmUgdGhlIG1ham9yIGRpZmZlcmVuY2VzIGJldHdlZW4gOm1vZDpgZW1haWxgIHZlcnNpb24gMyBhbmQgdmVyc2lvbiAyOgotCi0qIFRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAgY2xhc3Mgd2FzIGludHJvZHVjZWQsIGFuZCB0aGUKLSAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3Mgd2FzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAuICBBbGwgcGFyc2luZyB0aGVyZWZvcmUgaXMKLSAgbm9uLXN0cmljdCwgYW5kIHBhcnNpbmcgd2lsbCBtYWtlIGEgYmVzdCBlZmZvcnQgbmV2ZXIgdG8gcmFpc2UgYW4gZXhjZXB0aW9uLgotICBQcm9ibGVtcyBmb3VuZCB3aGlsZSBwYXJzaW5nIG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW4gdGhlIG1lc3NhZ2UncyAqZGVmZWN0KgotICBhdHRyaWJ1dGUuCi0KLSogQWxsIGFzcGVjdHMgb2YgdGhlIEFQSSB3aGljaCByYWlzZWQgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYFwgcyBpbiB2ZXJzaW9uIDIKLSAgaGF2ZSBiZWVuIHJlbW92ZWQuICBUaGVzZSBpbmNsdWRlIHRoZSAqX2VuY29kZXIqIGFyZ3VtZW50IHRvIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5taW1lLnRleHQuTUlNRVRleHRgIGNvbnN0cnVjdG9yLCB0aGUKLSAgOm1ldGg6YE1lc3NhZ2UuYWRkX3BheWxvYWRgIG1ldGhvZCwgdGhlIDpmdW5jOmBVdGlscy5kdW1wX2FkZHJlc3NfcGFpcmAKLSAgZnVuY3Rpb24sIGFuZCB0aGUgZnVuY3Rpb25zIDpmdW5jOmBVdGlscy5kZWNvZGVgIGFuZCA6ZnVuYzpgVXRpbHMuZW5jb2RlYC4KLQotKiBOZXcgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYFwgcyBoYXZlIGJlZW4gYWRkZWQgdG86Ci0gIDptZXRoOmBHZW5lcmF0b3IuX19jYWxsX19gLCA6bWV0aDpgTWVzc2FnZS5nZXRfdHlwZWAsCi0gIDptZXRoOmBNZXNzYWdlLmdldF9tYWluX3R5cGVgLCA6bWV0aDpgTWVzc2FnZS5nZXRfc3VidHlwZWAsIGFuZCB0aGUgKnN0cmljdCoKLSAgYXJndW1lbnQgdG8gdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzLiAgVGhlc2UgYXJlIGV4cGVjdGVkIHRvCi0gIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zLgotCi0qIFN1cHBvcnQgZm9yIFB5dGhvbnMgZWFybGllciB0aGFuIDIuMyBoYXMgYmVlbiByZW1vdmVkLgotCi1IZXJlIGFyZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiAyIGFuZCB2ZXJzaW9uIDE6Ci0KLSogVGhlIDptb2Q6YGVtYWlsLkhlYWRlcmAgYW5kIDptb2Q6YGVtYWlsLkNoYXJzZXRgIG1vZHVsZXMgaGF2ZSBiZWVuIGFkZGVkLgotCi0qIFRoZSBwaWNrbGUgZm9ybWF0IGZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlcyBoYXMgY2hhbmdlZC4KLSAgU2luY2UgdGhpcyB3YXMgbmV2ZXIgKGFuZCBzdGlsbCBpc24ndCkgZm9ybWFsbHkgZGVmaW5lZCwgdGhpcyBpc24ndAotICBjb25zaWRlcmVkIGEgYmFja3dhcmQgaW5jb21wYXRpYmlsaXR5LiAgSG93ZXZlciBpZiB5b3VyIGFwcGxpY2F0aW9uIHBpY2tsZXMKLSAgYW5kIHVucGlja2xlcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlcywgYmUgYXdhcmUgdGhhdCBpbgotICA6bW9kOmBlbWFpbGAgdmVyc2lvbiAyLCA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlcyBub3cgaGF2ZQotICBwcml2YXRlIHZhcmlhYmxlcyAqX2NoYXJzZXQqIGFuZCAqX2RlZmF1bHRfdHlwZSouCi0KLSogU2V2ZXJhbCBtZXRob2RzIGluIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzIGhhdmUgYmVlbgotICBkZXByZWNhdGVkLCBvciB0aGVpciBzaWduYXR1cmVzIGNoYW5nZWQuICBBbHNvLCBtYW55IG5ldyBtZXRob2RzIGhhdmUgYmVlbgotICBhZGRlZC4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MKLSAgZm9yIGRldGFpbHMuICBUaGUgY2hhbmdlcyBzaG91bGQgYmUgY29tcGxldGVseSBiYWNrd2FyZCBjb21wYXRpYmxlLgotCi0qIFRoZSBvYmplY3Qgc3RydWN0dXJlIGhhcyBjaGFuZ2VkIGluIHRoZSBmYWNlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgCi0gIGNvbnRlbnQgdHlwZXMuICBJbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiAxLCBzdWNoIGEgdHlwZSB3b3VsZCBiZSByZXByZXNlbnRlZAotICBieSBhIHNjYWxhciBwYXlsb2FkLCBpLmUuIHRoZSBjb250YWluZXIgbWVzc2FnZSdzCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgcmV0dXJuZWQgZmFsc2UsCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCB3YXMgbm90IGEgbGlzdCBvYmplY3QsIGJ1dCBhCi0gIHNpbmdsZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlLgotCi0gIFRoaXMgc3RydWN0dXJlIHdhcyBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgcGFja2FnZSwgc28gdGhlIG9iamVjdAotICByZXByZXNlbnRhdGlvbiBmb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAgY29udGVudCB0eXBlcyB3YXMgY2hhbmdlZC4gIEluCi0gIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDIsIHRoZSBjb250YWluZXIgKmRvZXMqIHJldHVybiBgYFRydWVgYCBmcm9tCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAsIGFuZAotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgcmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhIHNpbmdsZQotICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGl0ZW0uCi0KLSAgTm90ZSB0aGF0IHRoaXMgaXMgb25lIHBsYWNlIHRoYXQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBjb3VsZCBub3QgYmUKLSAgY29tcGxldGVseSBtYWludGFpbmVkLiAgSG93ZXZlciwgaWYgeW91J3JlIGFscmVhZHkgdGVzdGluZyB0aGUgcmV0dXJuIHR5cGUgb2YKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgLCB5b3Ugc2hvdWxkIGJlIGZpbmUuICBZb3UganVzdCBuZWVkCi0gIHRvIG1ha2Ugc3VyZSB5b3VyIGNvZGUgZG9lc24ndCBkbyBhIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9wYXlsb2FkYAotICB3aXRoIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZSBvbiBhIGNvbnRhaW5lciB3aXRoIGEgY29udGVudAotICB0eXBlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgotCi0qIFRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjb25zdHJ1Y3RvcidzICpzdHJpY3QqIGFyZ3VtZW50IHdhcyBhZGRlZCwKLSAgYW5kIGl0cyA6bWV0aDpgfmVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VgIGFuZAotICA6bWV0aDpgfmVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VzdHJgIG1ldGhvZHMgZ3JldyBhICpoZWFkZXJzb25seSogYXJndW1lbnQuCi0gIFRoZSAqc3RyaWN0KiBmbGFnIHdhcyBhbHNvIGFkZGVkIHRvIGZ1bmN0aW9ucyA6ZnVuYzpgZW1haWwubWVzc2FnZV9mcm9tX2ZpbGVgCi0gIGFuZCA6ZnVuYzpgZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZ2AuCi0KLSogOm1ldGg6YEdlbmVyYXRvci5fX2NhbGxfX2AgaXMgZGVwcmVjYXRlZDsgdXNlIDptZXRoOmBHZW5lcmF0b3IuZmxhdHRlbgotICA8ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvci5mbGF0dGVuPmAgaW5zdGVhZC4gIFRoZQotICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBjbGFzcyBoYXMgYWxzbyBncm93biB0aGUKLSAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmNsb25lYCBtZXRob2QuCi0KLSogVGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCBjbGFzcyBpbiB0aGUKLSAgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgd2FzIGFkZGVkLgotCi0qIFRoZSBpbnRlcm1lZGlhdGUgYmFzZSBjbGFzc2VzCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0Lk1JTUVOb25NdWx0aXBhcnRgIGFuZAotICA6Y2xhc3M6YH5lbWFpbC5taW1lLm11bHRpcGFydC5NSU1FTXVsdGlwYXJ0YCBoYXZlIGJlZW4gYWRkZWQsIGFuZCBpbnRlcnBvc2VkCi0gIGluIHRoZSBjbGFzcyBoaWVyYXJjaHkgZm9yIG1vc3Qgb2YgdGhlIG90aGVyIE1JTUUtcmVsYXRlZCBkZXJpdmVkIGNsYXNzZXMuCi0KLSogVGhlICpfZW5jb2RlciogYXJndW1lbnQgdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1pbWUudGV4dC5NSU1FVGV4dGAgY29uc3RydWN0b3IKLSAgaGFzIGJlZW4gZGVwcmVjYXRlZC4gIEVuY29kaW5nICBub3cgaGFwcGVucyBpbXBsaWNpdGx5IGJhc2VkIG9uIHRoZQotICAqX2NoYXJzZXQqIGFyZ3VtZW50LgotCi0qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBlbWFpbC5VdGlsc2AgbW9kdWxlIGhhdmUgYmVlbiBkZXByZWNhdGVkOgotICA6ZnVuYzpgZHVtcF9hZGRyZXNzX3BhaXJzYCwgOmZ1bmM6YGRlY29kZWAsIGFuZCA6ZnVuYzpgZW5jb2RlYC4gIFRoZSBmb2xsb3dpbmcKLSAgZnVuY3Rpb25zIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgbW9kdWxlOiA6ZnVuYzpgbWFrZV9tc2dpZGAsCi0gIDpmdW5jOmBkZWNvZGVfcmZjMjIzMWAsIDpmdW5jOmBlbmNvZGVfcmZjMjIzMWAsIGFuZCA6ZnVuYzpgZGVjb2RlX3BhcmFtc2AuCi0KLSogVGhlIG5vbi1wdWJsaWMgZnVuY3Rpb24gOmZ1bmM6YGVtYWlsLkl0ZXJhdG9ycy5fc3RydWN0dXJlYCB3YXMgYWRkZWQuCi0KLQotRGlmZmVyZW5jZXMgZnJvbSA6bW9kOmBtaW1lbGliYAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGUgOm1vZDpgZW1haWxgIHBhY2thZ2Ugd2FzIG9yaWdpbmFsbHkgcHJvdG90eXBlZCBhcyBhIHNlcGFyYXRlIGxpYnJhcnkgY2FsbGVkCi1gbWltZWxpYiA8aHR0cDovL21pbWVsaWIuc291cmNlZm9yZ2UubmV0Lz5gXy4gQ2hhbmdlcyBoYXZlIGJlZW4gbWFkZSBzbyB0aGF0IG1ldGhvZCBuYW1lcwotYXJlIG1vcmUgY29uc2lzdGVudCwgYW5kIHNvbWUgbWV0aG9kcyBvciBtb2R1bGVzIGhhdmUgZWl0aGVyIGJlZW4gYWRkZWQgb3IKLXJlbW92ZWQuICBUaGUgc2VtYW50aWNzIG9mIHNvbWUgb2YgdGhlIG1ldGhvZHMgaGF2ZSBhbHNvIGNoYW5nZWQuICBGb3IgdGhlIG1vc3QKLXBhcnQsIGFueSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBpbiA6bW9kOmBtaW1lbGliYCBpcyBzdGlsbCBhdmFpbGFibGUgaW4gdGhlCi06bW9kOmBlbWFpbGAgcGFja2FnZSwgYWxiZWl0IG9mdGVuIGluIGEgZGlmZmVyZW50IHdheS4gIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLWJldHdlZW4gdGhlIDptb2Q6YG1pbWVsaWJgIHBhY2thZ2UgYW5kIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB3YXMgbm90IGEKLXByaW9yaXR5LgotCi1IZXJlIGlzIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIDptb2Q6YG1pbWVsaWJgIGFuZAotdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlcywgYWxvbmcgd2l0aCBoaW50cyBvbiBob3cgdG8gcG9ydCB5b3VyIGFwcGxpY2F0aW9ucy4KLQotT2YgY291cnNlLCB0aGUgbW9zdCB2aXNpYmxlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHBhY2thZ2VzIGlzIHRoYXQgdGhlCi1wYWNrYWdlIG5hbWUgaGFzIGJlZW4gY2hhbmdlZCB0byA6bW9kOmBlbWFpbGAuICBJbiBhZGRpdGlvbiwgdGhlIHRvcC1sZXZlbAotcGFja2FnZSBoYXMgdGhlIGZvbGxvd2luZyBkaWZmZXJlbmNlczoKLQotKiA6ZnVuYzpgbWVzc2FnZUZyb21TdHJpbmdgIGhhcyBiZWVuIHJlbmFtZWQgdG8gOmZ1bmM6YG1lc3NhZ2VfZnJvbV9zdHJpbmdgLgotCi0qIDpmdW5jOmBtZXNzYWdlRnJvbUZpbGVgIGhhcyBiZWVuIHJlbmFtZWQgdG8gOmZ1bmM6YG1lc3NhZ2VfZnJvbV9maWxlYC4KLQotVGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgZGlmZmVyZW5jZXM6Ci0KLSogVGhlIG1ldGhvZCA6bWV0aDpgYXNTdHJpbmdgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZ2AuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgaXNtdWx0aXBhcnRgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAuCi0KLSogVGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCBtZXRob2QgaGFzIGdyb3duIGEgKmRlY29kZSoKLSAgb3B0aW9uYWwgYXJndW1lbnQuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0YWxsYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfYWxsYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBhZGRoZWFkZXJgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFkZF9oZWFkZXJgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHR5cGVgIHdhcyByZW5hbWVkIHRvIDptZXRoOmBnZXRfdHlwZWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0bWFpbnR5cGVgIHdhcyByZW5hbWVkIHRvIDptZXRoOmBnZXRfbWFpbl90eXBlYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRzdWJ0eXBlYCB3YXMgcmVuYW1lZCB0byA6bWV0aDpgZ2V0X3N1YnR5cGVgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHBhcmFtc2Agd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BhcmFtc2AuIEFsc28sIHdoZXJlYXMgOm1ldGg6YGdldHBhcmFtc2AKLSAgcmV0dXJuZWQgYSBsaXN0IG9mIHN0cmluZ3MsIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXJhbXNgIHJldHVybnMKLSAgYSBsaXN0IG9mIDItdHVwbGVzLCBlZmZlY3RpdmVseSB0aGUga2V5L3ZhbHVlIHBhaXJzIG9mIHRoZSBwYXJhbWV0ZXJzLCBzcGxpdAotICBvbiB0aGUgYGAnPSdgYCBzaWduLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHBhcmFtYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGFyYW1gLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGNoYXJzZXRzYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfY2hhcnNldHNgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGZpbGVuYW1lYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfZmlsZW5hbWVgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGJvdW5kYXJ5YCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfYm91bmRhcnlgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YHNldGJvdW5kYXJ5YCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5zZXRfYm91bmRhcnlgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGRlY29kZWRwYXlsb2FkYCB3YXMgcmVtb3ZlZC4gIFRvIGdldCBzaW1pbGFyCi0gIGZ1bmN0aW9uYWxpdHksIHBhc3MgdGhlIHZhbHVlIDEgdG8gdGhlICpkZWNvZGUqIGZsYWcgb2YgdGhlCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCBtZXRob2QuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0cGF5bG9hZGFzdGV4dGAgd2FzIHJlbW92ZWQuICBTaW1pbGFyIGZ1bmN0aW9uYWxpdHkgaXMKLSAgc3VwcG9ydGVkIGJ5IHRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvcmAgY2xhc3MgaW4gdGhlCi0gIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGJvZHlhc3RleHRgIHdhcyByZW1vdmVkLiAgWW91IGNhbiBnZXQgc2ltaWxhcgotICBmdW5jdGlvbmFsaXR5IGJ5IGNyZWF0aW5nIGFuIGl0ZXJhdG9yIHdpdGgKLSAgOmZ1bmM6YH5lbWFpbC5pdGVyYXRvcnMudHlwZWRfc3VicGFydF9pdGVyYXRvcmAgaW4gdGhlIDptb2Q6YGVtYWlsLml0ZXJhdG9yc2AKLSAgbW9kdWxlLgotCi1UaGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgaGFzIG5vIGRpZmZlcmVuY2VzIGluIGl0cyBwdWJsaWMKLWludGVyZmFjZS4gSXQgZG9lcyBoYXZlIHNvbWUgYWRkaXRpb25hbCBzbWFydHMgdG8gcmVjb2duaXplCi06bWltZXR5cGU6YG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzYCB0eXBlIG1lc3NhZ2VzLCB3aGljaCBpdCByZXByZXNlbnRzIGFzIGEKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2UgY29udGFpbmluZyBzZXBhcmF0ZQotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBzdWJwYXJ0cyBmb3IgZWFjaCBoZWFkZXIgYmxvY2sgaW4gdGhlIGRlbGl2ZXJ5Ci1zdGF0dXMgbm90aWZpY2F0aW9uIFsjXV8uCi0KLVRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBjbGFzcyBoYXMgbm8gZGlmZmVyZW5jZXMgaW4gaXRzIHB1YmxpYwotaW50ZXJmYWNlLiAgVGhlcmUgaXMgYSBuZXcgY2xhc3MgaW4gdGhlIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlIHRob3VnaCwKLWNhbGxlZCA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvcmAgd2hpY2ggcHJvdmlkZXMgbW9zdCBvZiB0aGUKLWZ1bmN0aW9uYWxpdHkgcHJldmlvdXNseSBhdmFpbGFibGUgaW4gdGhlIDptZXRoOmBNZXNzYWdlLmdldHBheWxvYWRhc3RleHRgCi1tZXRob2QuCi0KLVRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhbmQgY2xhc3NlcyBoYXZlIGJlZW4gY2hhbmdlZDoKLQotKiBUaGUgOmNsYXNzOmB+ZW1haWwubWltZS5iYXNlLk1JTUVCYXNlYCBjbGFzcyBjb25zdHJ1Y3RvciBhcmd1bWVudHMgKl9tYWpvcioKLSAgYW5kICpfbWlub3IqIGhhdmUgY2hhbmdlZCB0byAqX21haW50eXBlKiBhbmQgKl9zdWJ0eXBlKiByZXNwZWN0aXZlbHkuCi0KLSogVGhlIGBgSW1hZ2VgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgYE1JTUVJbWFnZWBgLiAgVGhlICpfbWlub3IqCi0gIGFyZ3VtZW50IGhhcyBiZWVuIHJlbmFtZWQgdG8gKl9zdWJ0eXBlKi4KLQotKiBUaGUgYGBUZXh0YGAgY2xhc3MvbW9kdWxlIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGBNSU1FVGV4dGBgLiAgVGhlICpfbWlub3IqCi0gIGFyZ3VtZW50IGhhcyBiZWVuIHJlbmFtZWQgdG8gKl9zdWJ0eXBlKi4KLQotKiBUaGUgYGBNZXNzYWdlUkZDODIyYGAgY2xhc3MvbW9kdWxlIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGBNSU1FTWVzc2FnZWBgLiAgTm90ZQotICB0aGF0IGFuIGVhcmxpZXIgdmVyc2lvbiBvZiA6bW9kOmBtaW1lbGliYCBjYWxsZWQgdGhpcyBjbGFzcy9tb2R1bGUgYGBSRkM4MjJgYCwKLSAgYnV0IHRoYXQgY2xhc2hlZCB3aXRoIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeSBtb2R1bGUgOm1vZDpgcmZjODIyYCBvbiBzb21lCi0gIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLgotCi0gIEFsc28sIHRoZSA6Y2xhc3M6YH5lbWFpbC5taW1lLm1lc3NhZ2UuTUlNRU1lc3NhZ2VgIGNsYXNzIG5vdyByZXByZXNlbnRzIGFueQotICBraW5kIG9mIE1JTUUgbWVzc2FnZQotICB3aXRoIG1haW4gdHlwZSA6bWltZXR5cGU6YG1lc3NhZ2VgLiAgSXQgdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgKl9zdWJ0eXBlKgotICB3aGljaCBpcyB1c2VkIHRvIHNldCB0aGUgTUlNRSBzdWJ0eXBlLiAgKl9zdWJ0eXBlKiBkZWZhdWx0cyB0bwotICA6bWltZXR5cGU6YHJmYzgyMmAuCi0KLTptb2Q6YG1pbWVsaWJgIHByb3ZpZGVkIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgaW4gaXRzIDptb2Q6YGFkZHJlc3NgIGFuZAotOm1vZDpgZGF0ZWAgbW9kdWxlcy4gIEFsbCBvZiB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vdmVkIHRvIHRoZQotOm1vZDpgZW1haWwudXRpbHNgIG1vZHVsZS4KLQotVGhlIGBgTXNnUmVhZGVyYGAgY2xhc3MvbW9kdWxlIGhhcyBiZWVuIHJlbW92ZWQuICBJdHMgZnVuY3Rpb25hbGl0eSBpcyBtb3N0Ci1jbG9zZWx5IHN1cHBvcnRlZCBpbiB0aGUgOmZ1bmM6YH5lbWFpbC5pdGVyYXRvcnMuYm9keV9saW5lX2l0ZXJhdG9yYCBmdW5jdGlvbgotaW4gdGhlIDptb2Q6YGVtYWlsLml0ZXJhdG9yc2AgbW9kdWxlLgotCi0uLiBydWJyaWM6OiBGb290bm90ZXMKLQotLi4gWyNdIERlbGl2ZXJ5IFN0YXR1cyBOb3RpZmljYXRpb25zIChEU04pIGFyZSBkZWZpbmVkIGluIDpyZmM6YDE4OTRgLgorICAgTW9kdWxlIDptb2Q6YHNtdHBkYAorICAgICAgU01UUCBzZXJ2ZXIgZnJhbWV3b3JrIChwcmltYXJpbHkgdXNlZnVsIGZvciB0ZXN0aW5nKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAppbmRleCA1Y2ZmNzQ2Li42M2ZhZTJhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdApAQCAtOCw3ICs4LDQzIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoZXJlIGFyZSBzZXZlcmFsIHVzZWZ1bCB1dGlsaXRpZXMgcHJvdmlkZWQgaW4gdGhlIDptb2Q6YGVtYWlsLnV0aWxzYCBtb2R1bGU6CitUaGVyZSBhcmUgYSBjb3VwbGUgb2YgdXNlZnVsIHV0aWxpdGllcyBwcm92aWRlZCBpbiB0aGUgOm1vZDpgZW1haWwudXRpbHNgCittb2R1bGU6CisKKy4uIGZ1bmN0aW9uOjogbG9jYWx0aW1lKGR0PU5vbmUpCisKKyAgICBSZXR1cm4gbG9jYWwgdGltZSBhcyBhbiBhd2FyZSBkYXRldGltZSBvYmplY3QuICBJZiBjYWxsZWQgd2l0aG91dAorICAgIGFyZ3VtZW50cywgcmV0dXJuIGN1cnJlbnQgdGltZS4gIE90aGVyd2lzZSAqZHQqIGFyZ3VtZW50IHNob3VsZCBiZSBhCisgICAgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGluc3RhbmNlLCBhbmQgaXQgaXMgY29udmVydGVkIHRvIHRoZSBsb2NhbCB0aW1lCisgICAgem9uZSBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSB0aW1lIHpvbmUgZGF0YWJhc2UuICBJZiAqZHQqIGlzIG5haXZlICh0aGF0CisgICAgaXMsIGBgZHQudHppbmZvYGAgaXMgYGBOb25lYGApLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIHRpbWUuICBJbiB0aGlzCisgICAgY2FzZSwgYSBwb3NpdGl2ZSBvciB6ZXJvIHZhbHVlIGZvciAqaXNkc3QqIGNhdXNlcyBgYGxvY2FsdGltZWBgIHRvIHByZXN1bWUKKyAgICBpbml0aWFsbHkgdGhhdCBzdW1tZXIgdGltZSAoZm9yIGV4YW1wbGUsIERheWxpZ2h0IFNhdmluZyBUaW1lKSBpcyBvciBpcyBub3QKKyAgICAocmVzcGVjdGl2ZWx5KSBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4gIEEgbmVnYXRpdmUgdmFsdWUgZm9yCisgICAgKmlzZHN0KiBjYXVzZXMgdGhlIGBgbG9jYWx0aW1lYGAgdG8gYXR0ZW1wdCB0byBkaXZpbmUgd2hldGhlciBzdW1tZXIgdGltZQorICAgIGlzIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBtYWtlX21zZ2lkKGlkc3RyaW5nPU5vbmUsIGRvbWFpbj1Ob25lKQorCisgICBSZXR1cm5zIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhbiA6cmZjOmAyODIyYFwgLWNvbXBsaWFudAorICAgOm1haWxoZWFkZXI6YE1lc3NhZ2UtSURgIGhlYWRlci4gIE9wdGlvbmFsICppZHN0cmluZyogaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nCisgICB1c2VkIHRvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgaWQuICBPcHRpb25hbCAqZG9tYWluKiBpZgorICAgZ2l2ZW4gcHJvdmlkZXMgdGhlIHBvcnRpb24gb2YgdGhlIG1zZ2lkIGFmdGVyIHRoZSAnQCcuICBUaGUgZGVmYXVsdCBpcyB0aGUKKyAgIGxvY2FsIGhvc3RuYW1lLiAgSXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBvdmVycmlkZSB0aGlzIGRlZmF1bHQsIGJ1dAorICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0CisgICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICBBZGRlZCB0aGUgKmRvbWFpbioga2V5d29yZC4KKworCitUaGUgcmVtYWluaW5nIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIFRoZXJlCitpcyBubyBuZWVkIHRvIGRpcmVjdGx5IHVzZSB0aGVzZSB3aXRoIHRoZSBuZXcgQVBJLCBzaW5jZSB0aGUgcGFyc2luZyBhbmQKK2Zvcm1hdHRpbmcgdGhleSBwcm92aWRlIGlzIGRvbmUgYXV0b21hdGljYWxseSBieSB0aGUgaGVhZGVyIHBhcnNpbmcgbWFjaGluZXJ5CitvZiB0aGUgbmV3IEFQSS4KIAogCiAuLiBmdW5jdGlvbjo6IHF1b3RlKHN0cikKQEAgLTE0MSwzNiArMTc3LDYgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGZ1bmN0aW9uOjogbG9jYWx0aW1lKGR0PU5vbmUpCi0KLSAgICBSZXR1cm4gbG9jYWwgdGltZSBhcyBhbiBhd2FyZSBkYXRldGltZSBvYmplY3QuICBJZiBjYWxsZWQgd2l0aG91dAotICAgIGFyZ3VtZW50cywgcmV0dXJuIGN1cnJlbnQgdGltZS4gIE90aGVyd2lzZSAqZHQqIGFyZ3VtZW50IHNob3VsZCBiZSBhCi0gICAgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGluc3RhbmNlLCBhbmQgaXQgaXMgY29udmVydGVkIHRvIHRoZSBsb2NhbCB0aW1lCi0gICAgem9uZSBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSB0aW1lIHpvbmUgZGF0YWJhc2UuICBJZiAqZHQqIGlzIG5haXZlICh0aGF0Ci0gICAgaXMsIGBgZHQudHppbmZvYGAgaXMgYGBOb25lYGApLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIHRpbWUuICBJbiB0aGlzCi0gICAgY2FzZSwgYSBwb3NpdGl2ZSBvciB6ZXJvIHZhbHVlIGZvciAqaXNkc3QqIGNhdXNlcyBgYGxvY2FsdGltZWBgIHRvIHByZXN1bWUKLSAgICBpbml0aWFsbHkgdGhhdCBzdW1tZXIgdGltZSAoZm9yIGV4YW1wbGUsIERheWxpZ2h0IFNhdmluZyBUaW1lKSBpcyBvciBpcyBub3QKLSAgICAocmVzcGVjdGl2ZWx5KSBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4gIEEgbmVnYXRpdmUgdmFsdWUgZm9yCi0gICAgKmlzZHN0KiBjYXVzZXMgdGhlIGBgbG9jYWx0aW1lYGAgdG8gYXR0ZW1wdCB0byBkaXZpbmUgd2hldGhlciBzdW1tZXIgdGltZQotICAgIGlzIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLgotCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0KLQotLi4gZnVuY3Rpb246OiBtYWtlX21zZ2lkKGlkc3RyaW5nPU5vbmUsIGRvbWFpbj1Ob25lKQotCi0gICBSZXR1cm5zIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhbiA6cmZjOmAyODIyYFwgLWNvbXBsaWFudAotICAgOm1haWxoZWFkZXI6YE1lc3NhZ2UtSURgIGhlYWRlci4gIE9wdGlvbmFsICppZHN0cmluZyogaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nCi0gICB1c2VkIHRvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgaWQuICBPcHRpb25hbCAqZG9tYWluKiBpZgotICAgZ2l2ZW4gcHJvdmlkZXMgdGhlIHBvcnRpb24gb2YgdGhlIG1zZ2lkIGFmdGVyIHRoZSAnQCcuICBUaGUgZGVmYXVsdCBpcyB0aGUKLSAgIGxvY2FsIGhvc3RuYW1lLiAgSXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBvdmVycmlkZSB0aGlzIGRlZmF1bHQsIGJ1dAotICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0Ci0gICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBBZGRlZCB0aGUgKmRvbWFpbioga2V5d29yZC4KLQotCiAuLiBmdW5jdGlvbjo6IGRlY29kZV9yZmMyMjMxKHMpCiAKICAgIERlY29kZSB0aGUgc3RyaW5nICpzKiBhY2NvcmRpbmcgdG8gOnJmYzpgMjIzMWAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbnVtLnJzdCBiL0RvYy9saWJyYXJ5L2VudW0ucnN0CmluZGV4IGEzZDVhZmMuLjg3YWE4YjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VudW0ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VudW0ucnN0CkBAIC0yMyw5ICsyMywxMCBAQAogTW9kdWxlIENvbnRlbnRzCiAtLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBtb2R1bGUgZGVmaW5lcyB0d28gZW51bWVyYXRpb24gY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB1bmlxdWUKLXNldHMgb2YgbmFtZXMgYW5kIHZhbHVlczogOmNsYXNzOmBFbnVtYCBhbmQgOmNsYXNzOmBJbnRFbnVtYC4gIEl0IGFsc28gZGVmaW5lcwotb25lIGRlY29yYXRvciwgOmZ1bmM6YHVuaXF1ZWAuCitUaGlzIG1vZHVsZSBkZWZpbmVzIGZvdXIgZW51bWVyYXRpb24gY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB1bmlxdWUKK3NldHMgb2YgbmFtZXMgYW5kIHZhbHVlczogOmNsYXNzOmBFbnVtYCwgOmNsYXNzOmBJbnRFbnVtYCwgYW5kCis6Y2xhc3M6YEludEZsYWdzYC4gIEl0IGFsc28gZGVmaW5lcyBvbmUgZGVjb3JhdG9yLCA6ZnVuYzpgdW5pcXVlYCwgYW5kIG9uZQoraGVscGVyLCA6Y2xhc3M6YGF1dG9gLgogCiAuLiBjbGFzczo6IEVudW0KIApAQCAtMzcsMTAgKzM4LDI3IEBACiAgICAgQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25zdGFudHMgdGhhdCBhcmUgYWxzbwogICAgIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBpbnRgLgogCisuLiBjbGFzczo6IEludEZsYWcKKworICAgIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIGVudW1lcmF0ZWQgY29uc3RhbnRzIHRoYXQgY2FuIGJlIGNvbWJpbmVkIHVzaW5nCisgICAgdGhlIGJpdHdpc2Ugb3BlcmF0b3JzIHdpdGhvdXQgbG9zaW5nIHRoZWlyIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVyc2hpcC4KKyAgICA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnMgYXJlIGFsc28gc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YGludGAuCisKKy4uIGNsYXNzOjogRmxhZworCisgICAgQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25zdGFudHMgdGhhdCBjYW4gYmUgY29tYmluZWQgdXNpbmcKKyAgICB0aGUgYml0d2lzZSBvcGVyYXRpb25zIHdpdGhvdXQgbG9zaW5nIHRoZWlyIDpjbGFzczpgRmxhZ2AgbWVtYmVyc2hpcC4KKwogLi4gZnVuY3Rpb246OiB1bmlxdWUKIAogICAgIEVudW0gY2xhc3MgZGVjb3JhdG9yIHRoYXQgZW5zdXJlcyBvbmx5IG9uZSBuYW1lIGlzIGJvdW5kIHRvIGFueSBvbmUgdmFsdWUuCiAKKy4uIGNsYXNzOjogYXV0bworCisgICAgSW5zdGFuY2VzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGZvciBFbnVtIG1lbWJlcnMuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNiAgYGBGbGFnYGAsIGBgSW50RmxhZ2BgLCBgYGF1dG9gYAorCiAKIENyZWF0aW5nIGFuIEVudW0KIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTU3LDYgKzc1LDEzIEBACiAgICAgLi4uICAgICBibHVlID0gMwogICAgIC4uLgogCisuLiBub3RlOjogRW51bSBtZW1iZXIgdmFsdWVzCisKKyAgICBNZW1iZXIgdmFsdWVzIGNhbiBiZSBhbnl0aGluZzogOmNsYXNzOmBpbnRgLCA6Y2xhc3M6YHN0cmAsIGV0Yy4uICBJZgorICAgIHRoZSBleGFjdCB2YWx1ZSBpcyB1bmltcG9ydGFudCB5b3UgbWF5IHVzZSA6Y2xhc3M6YGF1dG9gIGluc3RhbmNlcyBhbmQgYW4KKyAgICBhcHByb3ByaWF0ZSB2YWx1ZSB3aWxsIGJlIGNob3NlbiBmb3IgeW91LiAgQ2FyZSBtdXN0IGJlIHRha2VuIGlmIHlvdSBtaXgKKyAgICA6Y2xhc3M6YGF1dG9gIHdpdGggb3RoZXIgdmFsdWVzLgorCiAuLiBub3RlOjogTm9tZW5jbGF0dXJlCiAKICAgLSBUaGUgY2xhc3MgOmNsYXNzOmBDb2xvcmAgaXMgYW4gKmVudW1lcmF0aW9uKiAob3IgKmVudW0qKQpAQCAtMjEyLDYgKzIzNyw0MiBAQAogICAgIFZhbHVlRXJyb3I6IGR1cGxpY2F0ZSB2YWx1ZXMgZm91bmQgaW4gPGVudW0gJ01pc3Rha2UnPjogZm91ciAtPiB0aHJlZQogCiAKK1VzaW5nIGF1dG9tYXRpYyB2YWx1ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdGhlIGV4YWN0IHZhbHVlIGlzIHVuaW1wb3J0YW50IHlvdSBjYW4gdXNlIDpjbGFzczpgYXV0b2A6OgorCisgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgRW51bSwgYXV0bworICAgID4+PiBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChDb2xvcikKKyAgICBbPENvbG9yLnJlZDogMT4sIDxDb2xvci5ibHVlOiAyPiwgPENvbG9yLmdyZWVuOiAzPl0KKworVGhlIHZhbHVlcyBhcmUgY2hvc2VuIGJ5IDpmdW5jOmBfZ2VuZXJhdGVfbmV4dF92YWx1ZV9gLCB3aGljaCBjYW4gYmUKK292ZXJyaWRkZW46OgorCisgICAgPj4+IGNsYXNzIEF1dG9OYW1lKEVudW0pOgorICAgIC4uLiAgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3RfdmFsdWVzKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gbmFtZQorICAgIC4uLgorICAgID4+PiBjbGFzcyBPcmRpbmFsKEF1dG9OYW1lKToKKyAgICAuLi4gICAgIG5vcnRoID0gYXV0bygpCisgICAgLi4uICAgICBzb3V0aCA9IGF1dG8oKQorICAgIC4uLiAgICAgZWFzdCA9IGF1dG8oKQorICAgIC4uLiAgICAgd2VzdCA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBsaXN0KE9yZGluYWwpCisgICAgWzxPcmRpbmFsLm5vcnRoOiAnbm9ydGgnPiwgPE9yZGluYWwuc291dGg6ICdzb3V0aCc+LCA8T3JkaW5hbC5lYXN0OiAnZWFzdCc+LCA8T3JkaW5hbC53ZXN0OiAnd2VzdCc+XQorCisuLiBub3RlOjoKKworICAgIFRoZSBnb2FsIG9mIHRoZSBkZWZhdWx0IDptZXRoOmBfZ2VuZXJhdGVfbmV4dF92YWx1ZV9gIG1ldGhvZHMgaXMgdG8gcHJvdmlkZQorICAgIHRoZSBuZXh0IDpjbGFzczpgaW50YCBpbiBzZXF1ZW5jZSB3aXRoIHRoZSBsYXN0IDpjbGFzczpgaW50YCBwcm92aWRlZCwgYnV0CisgICAgdGhlIHdheSBpdCBkb2VzIHRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGFuZCBtYXkgY2hhbmdlLgorCiBJdGVyYXRpb24KIC0tLS0tLS0tLQogCkBAIC0yNTcsNyArMzE4LDcgQEAKICAgICA+Pj4gQ29sb3IucmVkIDwgQ29sb3IuYmx1ZQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci0gICAgVHlwZUVycm9yOiB1bm9yZGVyYWJsZSB0eXBlczogQ29sb3IoKSA8IENvbG9yKCkKKyAgICBUeXBlRXJyb3I6ICc8JyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICdDb2xvcicgYW5kICdDb2xvcicKIAogRXF1YWxpdHkgY29tcGFyaXNvbnMgYXJlIGRlZmluZWQgdGhvdWdoOjoKIApAQCAtNDc4LDcgKzUzOSw3IEBACiBJbnRFbnVtCiBeXl5eXl5eCiAKLUEgdmFyaWF0aW9uIG9mIDpjbGFzczpgRW51bWAgaXMgcHJvdmlkZWQgd2hpY2ggaXMgYWxzbyBhIHN1YmNsYXNzIG9mCitUaGUgZmlyc3QgdmFyaWF0aW9uIG9mIDpjbGFzczpgRW51bWAgdGhhdCBpcyBwcm92aWRlZCBpcyBhbHNvIGEgc3ViY2xhc3Mgb2YKIDpjbGFzczpgaW50YC4gIE1lbWJlcnMgb2YgYW4gOmNsYXNzOmBJbnRFbnVtYCBjYW4gYmUgY29tcGFyZWQgdG8gaW50ZWdlcnM7CiBieSBleHRlbnNpb24sIGludGVnZXIgZW51bWVyYXRpb25zIG9mIGRpZmZlcmVudCB0eXBlcyBjYW4gYWxzbyBiZSBjb21wYXJlZAogdG8gZWFjaCBvdGhlcjo6CkBAIC01MjEsMTMgKzU4MiwxMjQgQEAKICAgICA+Pj4gW2kgZm9yIGkgaW4gcmFuZ2UoU2hhcGUuc3F1YXJlKV0KICAgICBbMCwgMV0KIAotRm9yIHRoZSB2YXN0IG1ham9yaXR5IG9mIGNvZGUsIDpjbGFzczpgRW51bWAgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQsCi1zaW5jZSA6Y2xhc3M6YEludEVudW1gIGJyZWFrcyBzb21lIHNlbWFudGljIHByb21pc2VzIG9mIGFuIGVudW1lcmF0aW9uIChieQotYmVpbmcgY29tcGFyYWJsZSB0byBpbnRlZ2VycywgYW5kIHRodXMgYnkgdHJhbnNpdGl2aXR5IHRvIG90aGVyCi11bnJlbGF0ZWQgZW51bWVyYXRpb25zKS4gIEl0IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gc3BlY2lhbCBjYXNlcyB3aGVyZQotdGhlcmUncyBubyBvdGhlciBjaG9pY2U7IGZvciBleGFtcGxlLCB3aGVuIGludGVnZXIgY29uc3RhbnRzIGFyZQotcmVwbGFjZWQgd2l0aCBlbnVtZXJhdGlvbnMgYW5kIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGlzIHJlcXVpcmVkIHdpdGggY29kZQotdGhhdCBzdGlsbCBleHBlY3RzIGludGVnZXJzLgorCitJbnRGbGFnCiteXl5eXl5eCisKK1RoZSBuZXh0IHZhcmlhdGlvbiBvZiA6Y2xhc3M6YEVudW1gIHByb3ZpZGVkLCA6Y2xhc3M6YEludEZsYWdgLCBpcyBhbHNvIGJhc2VkCitvbiA6Y2xhc3M6YGludGAuICBUaGUgZGlmZmVyZW5jZSBiZWluZyA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnMgY2FuIGJlIGNvbWJpbmVkCit1c2luZyB0aGUgYml0d2lzZSBvcGVyYXRvcnMgKCYsIFx8LCBeLCB+KSBhbmQgdGhlIHJlc3VsdCBpcyBzdGlsbCBhbgorOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXIuICBIb3dldmVyLCBhcyB0aGUgbmFtZSBpbXBsaWVzLCA6Y2xhc3M6YEludEZsYWdgCittZW1iZXJzIGFsc28gc3ViY2xhc3MgOmNsYXNzOmBpbnRgIGFuZCBjYW4gYmUgdXNlZCB3aGVyZXZlciBhbiA6Y2xhc3M6YGludGAgaXMKK3VzZWQuICBBbnkgb3BlcmF0aW9uIG9uIGFuIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVyIGJlc2lkZXMgdGhlIGJpdC13aXNlCitvcGVyYXRpb25zIHdpbGwgbG9zZSB0aGUgOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXJzaGlwLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworU2FtcGxlIDpjbGFzczpgSW50RmxhZ2AgY2xhc3M6OgorCisgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgSW50RmxhZworICAgID4+PiBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgIC4uLiAgICAgUiA9IDQKKyAgICAuLi4gICAgIFcgPSAyCisgICAgLi4uICAgICBYID0gMQorICAgIC4uLgorICAgID4+PiBQZXJtLlIgfCBQZXJtLlcKKyAgICA8UGVybS5SfFc6IDY+CisgICAgPj4+IFBlcm0uUiArIFBlcm0uVworICAgIDYKKyAgICA+Pj4gUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICA+Pj4gUGVybS5SIGluIFJXCisgICAgVHJ1ZQorCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIG5hbWUgdGhlIGNvbWJpbmF0aW9uczo6CisKKyAgICA+Pj4gY2xhc3MgUGVybShJbnRGbGFnKToKKyAgICAuLi4gICAgIFIgPSA0CisgICAgLi4uICAgICBXID0gMgorICAgIC4uLiAgICAgWCA9IDEKKyAgICAuLi4gICAgIFJXWCA9IDcKKyAgICA+Pj4gUGVybS5SV1gKKyAgICA8UGVybS5SV1g6IDc+CisgICAgPj4+IH5QZXJtLlJXWAorICAgIDxQZXJtLi04OiAtOD4KKworQW5vdGhlciBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIDpjbGFzczpgSW50RmxhZ2AgYW5kIDpjbGFzczpgRW51bWAgaXMgdGhhdAoraWYgbm8gZmxhZ3MgYXJlIHNldCAodGhlIHZhbHVlIGlzIDApLCBpdHMgYm9vbGVhbiBldmFsdWF0aW9uIGlzIDpkYXRhOmBGYWxzZWA6OgorCisgICAgPj4+IFBlcm0uUiAmIFBlcm0uWAorICAgIDxQZXJtLjA6IDA+CisgICAgPj4+IGJvb2woUGVybS5SICYgUGVybS5YKQorICAgIEZhbHNlCisKK0JlY2F1c2UgOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXJzIGFyZSBhbHNvIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBpbnRgIHRoZXkgY2FuCitiZSBjb21iaW5lZCB3aXRoIHRoZW06OgorCisgICAgPj4+IFBlcm0uWCB8IDgKKyAgICA8UGVybS44fFg6IDk+CisKKworRmxhZworXl5eXgorCitUaGUgbGFzdCB2YXJpYXRpb24gaXMgOmNsYXNzOmBGbGFnYC4gIExpa2UgOmNsYXNzOmBJbnRGbGFnYCwgOmNsYXNzOmBGbGFnYAorbWVtYmVycyBjYW4gYmUgY29tYmluZWQgdXNpbmcgdGhlIGJpdHdpc2Ugb3BlcmF0b3JzICgmLCBcfCwgXiwgfikuICBVbmxpa2UKKzpjbGFzczpgSW50RmxhZ2AsIHRoZXkgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGgsIG5vciBjb21wYXJlZCBhZ2FpbnN0LCBhbnkKK290aGVyIDpjbGFzczpgRmxhZ2AgZW51bWVyYXRpb24sIG5vciA6Y2xhc3M6YGludGAuICBXaGlsZSBpdCBpcyBwb3NzaWJsZSB0bworc3BlY2lmeSB0aGUgdmFsdWVzIGRpcmVjdGx5IGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSA6Y2xhc3M6YGF1dG9gIGFzIHRoZQordmFsdWUgYW5kIGxldCA6Y2xhc3M6YEZsYWdgIHNlbGVjdCBhbiBhcHByb3ByaWF0ZSB2YWx1ZS4KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK0xpa2UgOmNsYXNzOmBJbnRGbGFnYCwgaWYgYSBjb21iaW5hdGlvbiBvZiA6Y2xhc3M6YEZsYWdgIG1lbWJlcnMgcmVzdWx0cyBpbiBubworZmxhZ3MgYmVpbmcgc2V0LCB0aGUgYm9vbGVhbiBldmFsdWF0aW9uIGlzIDpkYXRhOmBGYWxzZWA6OgorCisgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgRmxhZworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IucmVkICYgQ29sb3IuZ3JlZW4KKyAgICA8Q29sb3IuMDogMD4KKyAgICA+Pj4gYm9vbChDb2xvci5yZWQgJiBDb2xvci5ncmVlbikKKyAgICBGYWxzZQorCitJbmRpdmlkdWFsIGZsYWdzIHNob3VsZCBoYXZlIHZhbHVlcyB0aGF0IGFyZSBwb3dlcnMgb2YgdHdvICgxLCAyLCA0LCA4LCAuLi4pLAord2hpbGUgY29tYmluYXRpb25zIG9mIGZsYWdzIHdvbid0OjoKKworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4gICAgIHdoaXRlID0gcmVkIHwgYmx1ZSB8IGdyZWVuCisgICAgLi4uCisgICAgPj4+IENvbG9yLndoaXRlCisgICAgPENvbG9yLndoaXRlOiA3PgorCitHaXZpbmcgYSBuYW1lIHRvIHRoZSAibm8gZmxhZ3Mgc2V0IiBjb25kaXRpb24gZG9lcyBub3QgY2hhbmdlIGl0cyBib29sZWFuCit2YWx1ZTo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoRmxhZyk6CisgICAgLi4uICAgICBibGFjayA9IDAKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuYmxhY2sKKyAgICA8Q29sb3IuYmxhY2s6IDA+CisgICAgPj4+IGJvb2woQ29sb3IuYmxhY2spCisgICAgRmFsc2UKKworLi4gbm90ZTo6CisKKyAgICBGb3IgdGhlIG1ham9yaXR5IG9mIG5ldyBjb2RlLCA6Y2xhc3M6YEVudW1gIGFuZCA6Y2xhc3M6YEZsYWdgIGFyZSBzdHJvbmdseQorICAgIHJlY29tbWVuZGVkLCBzaW5jZSA6Y2xhc3M6YEludEVudW1gIGFuZCA6Y2xhc3M6YEludEZsYWdgIGJyZWFrIHNvbWUKKyAgICBzZW1hbnRpYyBwcm9taXNlcyBvZiBhbiBlbnVtZXJhdGlvbiAoYnkgYmVpbmcgY29tcGFyYWJsZSB0byBpbnRlZ2VycywgYW5kCisgICAgdGh1cyBieSB0cmFuc2l0aXZpdHkgdG8gb3RoZXIgdW5yZWxhdGVkIGVudW1lcmF0aW9ucykuICA6Y2xhc3M6YEludEVudW1gCisgICAgYW5kIDpjbGFzczpgSW50RmxhZ2Agc2hvdWxkIGJlIHVzZWQgb25seSBpbiBjYXNlcyB3aGVyZSA6Y2xhc3M6YEVudW1gIGFuZAorICAgIDpjbGFzczpgRmxhZ2Agd2lsbCBub3QgZG87IGZvciBleGFtcGxlLCB3aGVuIGludGVnZXIgY29uc3RhbnRzIGFyZSByZXBsYWNlZAorICAgIHdpdGggZW51bWVyYXRpb25zLCBvciBmb3IgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIG90aGVyIHN5c3RlbXMuCiAKIAogT3RoZXJzCkBAIC01NTgsNyArNzMwLDggQEAKIDQuICUtc3R5bGUgZm9ybWF0dGluZzogIGAlc2AgYW5kIGAlcmAgY2FsbCB0aGUgOmNsYXNzOmBFbnVtYCBjbGFzcydzCiAgICA6bWV0aDpgX19zdHJfX2AgYW5kIDptZXRoOmBfX3JlcHJfX2AgcmVzcGVjdGl2ZWx5OyBvdGhlciBjb2RlcyAoc3VjaCBhcwogICAgYCVpYCBvciBgJWhgIGZvciBJbnRFbnVtKSB0cmVhdCB0aGUgZW51bSBtZW1iZXIgYXMgaXRzIG1peGVkLWluIHR5cGUuCi01LiA6bWV0aDpgc3RyLmZvcm1hdGAgKG9yIDpmdW5jOmBmb3JtYXRgKSB3aWxsIHVzZSB0aGUgbWl4ZWQtaW4KKzUuIDpyZWY6YEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gLCA6bWV0aDpgc3RyLmZvcm1hdGAsCisgICBhbmQgOmZ1bmM6YGZvcm1hdGAgd2lsbCB1c2UgdGhlIG1peGVkLWluCiAgICB0eXBlJ3MgOm1ldGg6YF9fZm9ybWF0X19gLiAgSWYgdGhlIDpjbGFzczpgRW51bWAgY2xhc3MncyA6ZnVuYzpgc3RyYCBvcgogICAgOmZ1bmM6YHJlcHJgIGlzIGRlc2lyZWQsIHVzZSB0aGUgYCFzYCBvciBgIXJgIGZvcm1hdCBjb2Rlcy4KIApAQCAtNTY2LDE4ICs3MzksODcgQEAKIEludGVyZXN0aW5nIGV4YW1wbGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaGlsZSA6Y2xhc3M6YEVudW1gIGFuZCA6Y2xhc3M6YEludEVudW1gIGFyZSBleHBlY3RlZCB0byBjb3ZlciB0aGUgbWFqb3JpdHkgb2YKLXVzZS1jYXNlcywgdGhleSBjYW5ub3QgY292ZXIgdGhlbSBhbGwuICBIZXJlIGFyZSByZWNpcGVzIGZvciBzb21lIGRpZmZlcmVudAotdHlwZXMgb2YgZW51bWVyYXRpb25zIHRoYXQgY2FuIGJlIHVzZWQgZGlyZWN0bHksIG9yIGFzIGV4YW1wbGVzIGZvciBjcmVhdGluZwotb25lJ3Mgb3duLgorV2hpbGUgOmNsYXNzOmBFbnVtYCwgOmNsYXNzOmBJbnRFbnVtYCwgOmNsYXNzOmBJbnRGbGFnYCwgYW5kIDpjbGFzczpgRmxhZ2AgYXJlCitleHBlY3RlZCB0byBjb3ZlciB0aGUgbWFqb3JpdHkgb2YgdXNlLWNhc2VzLCB0aGV5IGNhbm5vdCBjb3ZlciB0aGVtIGFsbC4gIEhlcmUKK2FyZSByZWNpcGVzIGZvciBzb21lIGRpZmZlcmVudCB0eXBlcyBvZiBlbnVtZXJhdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCBkaXJlY3RseSwKK29yIGFzIGV4YW1wbGVzIGZvciBjcmVhdGluZyBvbmUncyBvd24uCiAKIAotQXV0b051bWJlcgotXl5eXl5eXl5eXgorT21pdHRpbmcgdmFsdWVzCiteXl5eXl5eXl5eXl5eXl4KIAotQXZvaWRzIGhhdmluZyB0byBzcGVjaWZ5IHRoZSB2YWx1ZSBmb3IgZWFjaCBlbnVtZXJhdGlvbiBtZW1iZXI6OgorSW4gbWFueSB1c2UtY2FzZXMgb25lIGRvZXNuJ3QgY2FyZSB3aGF0IHRoZSBhY3R1YWwgdmFsdWUgb2YgYW4gZW51bWVyYXRpb24KK2lzLiBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGRlZmluZSB0aGlzIHR5cGUgb2Ygc2ltcGxlIGVudW1lcmF0aW9uOgogCi0gICAgPj4+IGNsYXNzIEF1dG9OdW1iZXIoRW51bSk6CistIHVzZSBpbnN0YW5jZXMgb2YgOmNsYXNzOmBhdXRvYCBmb3IgdGhlIHZhbHVlCistIHVzZSBpbnN0YW5jZXMgb2YgOmNsYXNzOmBvYmplY3RgIGFzIHRoZSB2YWx1ZQorLSB1c2UgYSBkZXNjcmlwdGl2ZSBzdHJpbmcgYXMgdGhlIHZhbHVlCistIHVzZSBhIHR1cGxlIGFzIHRoZSB2YWx1ZSBhbmQgYSBjdXN0b20gOm1ldGg6YF9fbmV3X19gIHRvIHJlcGxhY2UgdGhlCisgIHR1cGxlIHdpdGggYW4gOmNsYXNzOmBpbnRgIHZhbHVlCisKK1VzaW5nIGFueSBvZiB0aGVzZSBtZXRob2RzIHNpZ25pZmllcyB0byB0aGUgdXNlciB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgbm90CitpbXBvcnRhbnQsIGFuZCBhbHNvIGVuYWJsZXMgb25lIHRvIGFkZCwgcmVtb3ZlLCBvciByZW9yZGVyIG1lbWJlcnMgd2l0aG91dAoraGF2aW5nIHRvIHJlbnVtYmVyIHRoZSByZW1haW5pbmcgbWVtYmVycy4KKworV2hpY2hldmVyIG1ldGhvZCB5b3UgY2hvb3NlLCB5b3Ugc2hvdWxkIHByb3ZpZGUgYSA6bWV0aDpgcmVwcmAgdGhhdCBhbHNvIGhpZGVzCit0aGUgKHVuaW1wb3J0YW50KSB2YWx1ZTo6CisKKyAgICA+Pj4gY2xhc3MgTm9WYWx1ZShFbnVtKToKKyAgICAuLi4gICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gJzwlcy4lcz4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUpCisgICAgLi4uCisKKworVXNpbmcgOmNsYXNzOmBhdXRvYAorIiIiIiIiIiIiIiIiIiIiIiIiIgorCitVc2luZyA6Y2xhc3M6YG9iamVjdGAgd291bGQgbG9vayBsaWtlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihOb1ZhbHVlKToKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuZ3JlZW4KKyAgICA8Q29sb3IuZ3JlZW4+CisKKworVXNpbmcgOmNsYXNzOmBvYmplY3RgCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworVXNpbmcgOmNsYXNzOmBvYmplY3RgIHdvdWxkIGxvb2sgbGlrZTo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoTm9WYWx1ZSk6CisgICAgLi4uICAgICByZWQgPSBvYmplY3QoKQorICAgIC4uLiAgICAgZ3JlZW4gPSBvYmplY3QoKQorICAgIC4uLiAgICAgYmx1ZSA9IG9iamVjdCgpCisgICAgLi4uCisgICAgPj4+IENvbG9yLmdyZWVuCisgICAgPENvbG9yLmdyZWVuPgorCisKK1VzaW5nIGEgZGVzY3JpcHRpdmUgc3RyaW5nCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitVc2luZyBhIHN0cmluZyBhcyB0aGUgdmFsdWUgd291bGQgbG9vayBsaWtlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihOb1ZhbHVlKToKKyAgICAuLi4gICAgIHJlZCA9ICdzdG9wJworICAgIC4uLiAgICAgZ3JlZW4gPSAnZ28nCisgICAgLi4uICAgICBibHVlID0gJ3RvbyBmYXN0IScKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuZ3JlZW4KKyAgICA8Q29sb3IuZ3JlZW4+CisgICAgPj4+IENvbG9yLmdyZWVuLnZhbHVlCisgICAgJ2dvJworCisKK1VzaW5nIGEgY3VzdG9tIDptZXRoOmBfX25ld19fYAorIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK1VzaW5nIGFuIGF1dG8tbnVtYmVyaW5nIDptZXRoOmBfX25ld19fYCB3b3VsZCBsb29rIGxpa2U6OgorCisgICAgPj4+IGNsYXNzIEF1dG9OdW1iZXIoTm9WYWx1ZSk6CiAgICAgLi4uICAgICBkZWYgX19uZXdfXyhjbHMpOgogICAgIC4uLiAgICAgICAgIHZhbHVlID0gbGVuKGNscy5fX21lbWJlcnNfXykgKyAxCiAgICAgLi4uICAgICAgICAgb2JqID0gb2JqZWN0Ll9fbmV3X18oY2xzKQpAQCAtNTg5LDggKzgzMSwxMSBAQAogICAgIC4uLiAgICAgZ3JlZW4gPSAoKQogICAgIC4uLiAgICAgYmx1ZSA9ICgpCiAgICAgLi4uCi0gICAgPj4+IENvbG9yLmdyZWVuLnZhbHVlID09IDIKLSAgICBUcnVlCisgICAgPj4+IENvbG9yLmdyZWVuCisgICAgPENvbG9yLmdyZWVuPgorICAgID4+PiBDb2xvci5ncmVlbi52YWx1ZQorICAgIDIKKwogCiAuLiBub3RlOjoKIApAQCAtNzMwLDEwICs5NzUsNjAgQEAKIEZpbmVyIFBvaW50cwogXl5eXl5eXl5eXl5eCiAKLTpjbGFzczpgRW51bWAgbWVtYmVycyBhcmUgaW5zdGFuY2VzIG9mIGFuIDpjbGFzczpgRW51bWAgY2xhc3MsIGFuZCBldmVuCi10aG91Z2ggdGhleSBhcmUgYWNjZXNzaWJsZSBhcyBgRW51bUNsYXNzLm1lbWJlcmAsIHRoZXkgc2hvdWxkIG5vdCBiZSBhY2Nlc3NlZAotZGlyZWN0bHkgZnJvbSB0aGUgbWVtYmVyIGFzIHRoYXQgbG9va3VwIG1heSBmYWlsIG9yLCB3b3JzZSwgcmV0dXJuIHNvbWV0aGluZwotYmVzaWRlcyB0aGUgOmNsYXNzOmBFbnVtYCBtZW1iZXIgeW91IGxvb2tpbmcgZm9yOjoKK1N1cHBvcnRlZCBgYF9fZHVuZGVyX19gYCBuYW1lcworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKzphdHRyOmBfX21lbWJlcnNfX2AgaXMgYW4gOmNsYXNzOmBPcmRlcmVkRGljdGAgb2YgYGBtZW1iZXJfbmFtZWBgOmBgbWVtYmVyYGAKK2l0ZW1zLiAgSXQgaXMgb25seSBhdmFpbGFibGUgb24gdGhlIGNsYXNzLgorCis6bWV0aDpgX19uZXdfX2AsIGlmIHNwZWNpZmllZCwgbXVzdCBjcmVhdGUgYW5kIHJldHVybiB0aGUgZW51bSBtZW1iZXJzOyBpdCBpcworYWxzbyBhIHZlcnkgZ29vZCBpZGVhIHRvIHNldCB0aGUgbWVtYmVyJ3MgOmF0dHI6YF92YWx1ZV9gIGFwcHJvcHJpYXRlbHkuICBPbmNlCithbGwgdGhlIG1lbWJlcnMgYXJlIGNyZWF0ZWQgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCisKKworU3VwcG9ydGVkIGBgX3N1bmRlcl9gYCBuYW1lcworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCistIGBgX25hbWVfYGAgLS0gbmFtZSBvZiB0aGUgbWVtYmVyCistIGBgX3ZhbHVlX2BgIC0tIHZhbHVlIG9mIHRoZSBtZW1iZXI7IGNhbiBiZSBzZXQgLyBtb2RpZmllZCBpbiBgYF9fbmV3X19gYAorCistIGBgX21pc3NpbmdfYGAgLS0gYSBsb29rdXAgZnVuY3Rpb24gdXNlZCB3aGVuIGEgdmFsdWUgaXMgbm90IGZvdW5kOyBtYXkgYmUKKyAgb3ZlcnJpZGRlbgorLSBgYF9vcmRlcl9gYCAtLSB1c2VkIGluIFB5dGhvbiAyLzMgY29kZSB0byBlbnN1cmUgbWVtYmVyIG9yZGVyIGlzIGNvbnNpc3RlbnQKKyAgKGNsYXNzIGF0dHJpYnV0ZSwgcmVtb3ZlZCBkdXJpbmcgY2xhc3MgY3JlYXRpb24pCistIGBgX2dlbmVyYXRlX25leHRfdmFsdWVfYGAgLS0gdXNlZCBieSB0aGUgYEZ1bmN0aW9uYWwgQVBJYF8gYW5kIGJ5CisgIDpjbGFzczpgYXV0b2AgdG8gZ2V0IGFuIGFwcHJvcHJpYXRlIHZhbHVlIGZvciBhbiBlbnVtIG1lbWJlcjsgbWF5IGJlCisgIG92ZXJyaWRkZW4KKworLi4gdmVyc2lvbmFkZGVkOjogMy42IGBgX21pc3NpbmdfYGAsIGBgX29yZGVyX2BgLCBgYF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2BgCisKK1RvIGhlbHAga2VlcCBQeXRob24gMiAvIFB5dGhvbiAzIGNvZGUgaW4gc3luYyBhbiA6YXR0cjpgX29yZGVyX2AgYXR0cmlidXRlIGNhbgorYmUgcHJvdmlkZWQuICBJdCB3aWxsIGJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgYWN0dWFsIG9yZGVyIG9mIHRoZSBlbnVtZXJhdGlvbgorYW5kIHJhaXNlIGFuIGVycm9yIGlmIHRoZSB0d28gZG8gbm90IG1hdGNoOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAuLi4gICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgLi4uICAgICByZWQgPSAxCisgICAgLi4uICAgICBibHVlID0gMworICAgIC4uLiAgICAgZ3JlZW4gPSAyCisgICAgLi4uCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFR5cGVFcnJvcjogbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8KKworLi4gbm90ZTo6CisKKyAgICBJbiBQeXRob24gMiBjb2RlIHRoZSA6YXR0cjpgX29yZGVyX2AgYXR0cmlidXRlIGlzIG5lY2Vzc2FyeSBhcyBkZWZpbml0aW9uCisgICAgb3JkZXIgaXMgbG9zdCBiZWZvcmUgaXQgY2FuIGJlIHJlY29yZGVkLgorCitgYEVudW1gYCBtZW1iZXIgdHlwZQorIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworOmNsYXNzOmBFbnVtYCBtZW1iZXJzIGFyZSBpbnN0YW5jZXMgb2YgdGhlaXIgOmNsYXNzOmBFbnVtYCBjbGFzcywgYW5kIGFyZQorbm9ybWFsbHkgYWNjZXNzZWQgYXMgYGBFbnVtQ2xhc3MubWVtYmVyYGAuICBVbmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgdGhleQorY2FuIGFsc28gYmUgYWNjZXNzZWQgYXMgYGBFbnVtQ2xhc3MubWVtYmVyLm1lbWJlcmBgLCBidXQgeW91IHNob3VsZCBuZXZlciBkbwordGhpcyBhcyB0aGF0IGxvb2t1cCBtYXkgZmFpbCBvciwgd29yc2UsIHJldHVybiBzb21ldGhpbmcgYmVzaWRlcyB0aGUKKzpjbGFzczpgRW51bWAgbWVtYmVyIHlvdSBhcmUgbG9va2luZyBmb3I6OgogCiAgICAgPj4+IGNsYXNzIEZpZWxkVHlwZXMoRW51bSk6CiAgICAgLi4uICAgICBuYW1lID0gMApAQCAtNzQ3LDcgKzEwNDIsMjQgQEAKIAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKIAotVGhlIDphdHRyOmBfX21lbWJlcnNfX2AgYXR0cmlidXRlIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHRoZSBjbGFzcy4KKworQm9vbGVhbiB2YWx1ZSBvZiBgYEVudW1gYCBjbGFzc2VzIGFuZCBtZW1iZXJzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworOmNsYXNzOmBFbnVtYCBtZW1iZXJzIHRoYXQgYXJlIG1peGVkIHdpdGggbm9uLTpjbGFzczpgRW51bWAgdHlwZXMgKHN1Y2ggYXMKKzpjbGFzczpgaW50YCwgOmNsYXNzOmBzdHJgLCBldGMuKSBhcmUgZXZhbHVhdGVkIGFjY29yZGluZyB0byB0aGUgbWl4ZWQtaW4KK3R5cGUncyBydWxlczsgb3RoZXJ3aXNlLCBhbGwgbWVtYmVycyBldmFsdWF0ZSBhcyA6ZGF0YTpgVHJ1ZWAuICBUbyBtYWtlIHlvdXIKK293biBFbnVtJ3MgYm9vbGVhbiBldmFsdWF0aW9uIGRlcGVuZCBvbiB0aGUgbWVtYmVyJ3MgdmFsdWUgYWRkIHRoZSBmb2xsb3dpbmcgdG8KK3lvdXIgY2xhc3M6OgorCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLnZhbHVlKQorCis6Y2xhc3M6YEVudW1gIGNsYXNzZXMgYWx3YXlzIGV2YWx1YXRlIGFzIDpkYXRhOmBUcnVlYC4KKworCitgYEVudW1gYCBjbGFzc2VzIHdpdGggbWV0aG9kcworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogSWYgeW91IGdpdmUgeW91ciA6Y2xhc3M6YEVudW1gIHN1YmNsYXNzIGV4dHJhIG1ldGhvZHMsIGxpa2UgdGhlIGBQbGFuZXRgXwogY2xhc3MgYWJvdmUsIHRob3NlIG1ldGhvZHMgd2lsbCBzaG93IHVwIGluIGEgOmZ1bmM6YGRpcmAgb2YgdGhlIG1lbWJlciwKQEAgLTc1OCwxMSArMTA3MCwyMyBAQAogICAgID4+PiBkaXIoUGxhbmV0LkVBUlRIKQogICAgIFsnX19jbGFzc19fJywgJ19fZG9jX18nLCAnX19tb2R1bGVfXycsICduYW1lJywgJ3N1cmZhY2VfZ3Jhdml0eScsICd2YWx1ZSddCiAKLVRoZSA6bWV0aDpgX19uZXdfX2AgbWV0aG9kIHdpbGwgb25seSBiZSB1c2VkIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlCi06Y2xhc3M6YEVudW1gIG1lbWJlcnMgLS0gYWZ0ZXIgdGhhdCBpdCBpcyByZXBsYWNlZC4gIEFueSBjdXN0b20gOm1ldGg6YF9fbmV3X19gCi1tZXRob2QgbXVzdCBjcmVhdGUgdGhlIG9iamVjdCBhbmQgc2V0IHRoZSA6YXR0cjpgX3ZhbHVlX2AgYXR0cmlidXRlCi1hcHByb3ByaWF0ZWx5LgogCi1JZiB5b3Ugd2lzaCB0byBjaGFuZ2UgaG93IDpjbGFzczpgRW51bWAgbWVtYmVycyBhcmUgbG9va2VkIHVwIHlvdSBzaG91bGQgZWl0aGVyCi13cml0ZSBhIGhlbHBlciBmdW5jdGlvbiBvciBhIDpmdW5jOmBjbGFzc21ldGhvZGAgZm9yIHRoZSA6Y2xhc3M6YEVudW1gCi1zdWJjbGFzcy4KK0NvbWJpbmluZyBtZW1iZXJzIG9mIGBgRmxhZ2BgCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitJZiBhIGNvbWJpbmF0aW9uIG9mIEZsYWcgbWVtYmVycyBpcyBub3QgbmFtZWQsIHRoZSA6ZnVuYzpgcmVwcmAgd2lsbCBpbmNsdWRlCithbGwgbmFtZWQgZmxhZ3MgYW5kIGFsbCBuYW1lZCBjb21iaW5hdGlvbnMgb2YgZmxhZ3MgdGhhdCBhcmUgaW4gdGhlIHZhbHVlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4gICAgIGJsdWUgPSBhdXRvKCkKKyAgICAuLi4gICAgIG1hZ2VudGEgPSByZWQgfCBibHVlCisgICAgLi4uICAgICB5ZWxsb3cgPSByZWQgfCBncmVlbgorICAgIC4uLiAgICAgY3lhbiA9IGdyZWVuIHwgYmx1ZQorICAgIC4uLgorICAgID4+PiBDb2xvcigzKSAgIyBuYW1lZCBjb21iaW5hdGlvbgorICAgIDxDb2xvci55ZWxsb3c6IDM+CisgICAgPj4+IENvbG9yKDcpICAgICAgIyBub3QgbmFtZWQgY29tYmluYXRpb24KKyAgICA8Q29sb3IuY3lhbnxtYWdlbnRhfGJsdWV8eWVsbG93fGdyZWVufHJlZDogNz4KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCA1YTcxOTMzLi5hNDI4ZjUxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMTcwLDggKzE3MCw5IEBACiAKIC4uIGV4Y2VwdGlvbjo6IEltcG9ydEVycm9yCiAKLSAgIFJhaXNlZCB3aGVuIGFuIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBmYWlscyB0byBmaW5kIHRoZSBtb2R1bGUgZGVmaW5pdGlvbgotICAgb3Igd2hlbiBhIGBgZnJvbSAuLi4gaW1wb3J0YGAgZmFpbHMgdG8gZmluZCBhIG5hbWUgdGhhdCBpcyB0byBiZSBpbXBvcnRlZC4KKyAgIFJhaXNlZCB3aGVuIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgaGFzIHRyb3VibGVzIHRyeWluZyB0bworICAgbG9hZCBhIG1vZHVsZS4gIEFsc28gcmFpc2VkIHdoZW4gdGhlICJmcm9tIGxpc3QiIGluIGBgZnJvbSAuLi4gaW1wb3J0YGAKKyAgIGhhcyBhIG5hbWUgdGhhdCBjYW5ub3QgYmUgZm91bmQuCiAKICAgIFRoZSA6YXR0cjpgbmFtZWAgYW5kIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQgdXNpbmcga2V5d29yZC1vbmx5CiAgICBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVjdG9yLiBXaGVuIHNldCB0aGV5IHJlcHJlc2VudCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlCkBAIC0xODEsNiArMTgyLDE0IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlIDphdHRyOmBuYW1lYCBhbmQgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZXMuCiAKKy4uIGV4Y2VwdGlvbjo6IE1vZHVsZU5vdEZvdW5kRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmAgd2hpY2ggaXMgcmFpc2VkIGJ5IDprZXl3b3JkOmBpbXBvcnRgCisgICB3aGVuIGEgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLiAgSXQgaXMgYWxzbyByYWlzZWQgd2hlbiBgYE5vbmVgYAorICAgaXMgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogLi4gZXhjZXB0aW9uOjogSW5kZXhFcnJvcgogCkBAIC0yMjgsOSArMjM3LDIxIEBACiAuLiBleGNlcHRpb246OiBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgIFRoaXMgZXhjZXB0aW9uIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgSW4gdXNlciBkZWZpbmVkIGJhc2UKLSAgIGNsYXNzZXMsIGFic3RyYWN0IG1ldGhvZHMgc2hvdWxkIHJhaXNlIHRoaXMgZXhjZXB0aW9uIHdoZW4gdGhleSByZXF1aXJlIGRlcml2ZWQKLSAgIGNsYXNzZXMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZC4KKyAgIGNsYXNzZXMsIGFic3RyYWN0IG1ldGhvZHMgc2hvdWxkIHJhaXNlIHRoaXMgZXhjZXB0aW9uIHdoZW4gdGhleSByZXF1aXJlCisgICBkZXJpdmVkIGNsYXNzZXMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZCwgb3Igd2hpbGUgdGhlIGNsYXNzIGlzIGJlaW5nCisgICBkZXZlbG9wZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVhbCBpbXBsZW1lbnRhdGlvbiBzdGlsbCBuZWVkcyB0byBiZSBhZGRlZC4KIAorICAgLi4gbm90ZTo6CisKKyAgICAgIEl0IHNob3VsZCBub3QgYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IGFuIG9wZXJhdGVyIG9yIG1ldGhvZCBpcyBub3QKKyAgICAgIG1lYW50IHRvIGJlIHN1cHBvcnRlZCBhdCBhbGwgLS0gaW4gdGhhdCBjYXNlIGVpdGhlciBsZWF2ZSB0aGUgb3BlcmF0b3IgLworICAgICAgbWV0aG9kIHVuZGVmaW5lZCBvciwgaWYgYSBzdWJjbGFzcywgc2V0IGl0IHRvIDpkYXRhOmBOb25lYC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIGBgTm90SW1wbGVtZW50ZWRFcnJvcmBgIGFuZCBgYE5vdEltcGxlbWVudGVkYGAgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUsCisgICAgICBldmVuIHRob3VnaCB0aGV5IGhhdmUgc2ltaWxhciBuYW1lcyBhbmQgcHVycG9zZXMuICBTZWUKKyAgICAgIDpkYXRhOmBOb3RJbXBsZW1lbnRlZGAgZm9yIGRldGFpbHMgb24gd2hlbiB0byB1c2UgaXQuCiAKIC4uIGV4Y2VwdGlvbjo6IE9TRXJyb3IoW2FyZ10pCiAgICAgICAgICAgICAgICBPU0Vycm9yKGVycm5vLCBzdHJlcnJvclssIGZpbGVuYW1lWywgd2luZXJyb3JbLCBmaWxlbmFtZTJdXV0pCkBAIC00MzYsNiArNDU3LDE1IEBACiAgICBSYWlzZWQgd2hlbiBhbiBvcGVyYXRpb24gb3IgZnVuY3Rpb24gaXMgYXBwbGllZCB0byBhbiBvYmplY3Qgb2YgaW5hcHByb3ByaWF0ZQogICAgdHlwZS4gIFRoZSBhc3NvY2lhdGVkIHZhbHVlIGlzIGEgc3RyaW5nIGdpdmluZyBkZXRhaWxzIGFib3V0IHRoZSB0eXBlIG1pc21hdGNoLgogCisgICBUaGlzIGV4Y2VwdGlvbiBtYXkgYmUgcmFpc2VkIGJ5IHVzZXIgY29kZSB0byBpbmRpY2F0ZSB0aGF0IGFuIGF0dGVtcHRlZAorICAgb3BlcmF0aW9uIG9uIGFuIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgaXMgbm90IG1lYW50IHRvIGJlLiBJZiBhbiBvYmplY3QKKyAgIGlzIG1lYW50IHRvIHN1cHBvcnQgYSBnaXZlbiBvcGVyYXRpb24gYnV0IGhhcyBub3QgeWV0IHByb3ZpZGVkIGFuCisgICBpbXBsZW1lbnRhdGlvbiwgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgdGhlIHByb3BlciBleGNlcHRpb24gdG8gcmFpc2UuCisKKyAgIFBhc3NpbmcgYXJndW1lbnRzIG9mIHRoZSB3cm9uZyB0eXBlIChlLmcuIHBhc3NpbmcgYSA6Y2xhc3M6YGxpc3RgIHdoZW4gYW4KKyAgIDpjbGFzczpgaW50YCBpcyBleHBlY3RlZCkgc2hvdWxkIHJlc3VsdCBpbiBhIDpleGM6YFR5cGVFcnJvcmAsIGJ1dCBwYXNzaW5nCisgICBhcmd1bWVudHMgd2l0aCB0aGUgd3JvbmcgdmFsdWUgKGUuZy4gYSBudW1iZXIgb3V0c2lkZSBleHBlY3RlZCBib3VuZGFyaWVzKQorICAgc2hvdWxkIHJlc3VsdCBpbiBhIDpleGM6YFZhbHVlRXJyb3JgLgogCiAuLiBleGNlcHRpb246OiBVbmJvdW5kTG9jYWxFcnJvcgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0IGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdAppbmRleCBkZWVkZWExLi5kMGM0Y2QwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKQEAgLTcwLDYgKzcwLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvciB0byB0aGlzIGZ1bmN0aW9uLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT24gV2luZG93cywgYSBoYW5kbGVyIGZvciBXaW5kb3dzIGV4Y2VwdGlvbiBpcyBhbHNvIGluc3RhbGxlZC4KKwogLi4gZnVuY3Rpb246OiBkaXNhYmxlKCkKIAogICAgRGlzYWJsZSB0aGUgZmF1bHQgaGFuZGxlcjogdW5pbnN0YWxsIHRoZSBzaWduYWwgaGFuZGxlcnMgaW5zdGFsbGVkIGJ5CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0IGIvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdAppbmRleCBhYTRjNTI5Li41ODgxZmVmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKQEAgLTcyLDkgKzcyLDggQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBDYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMgotICAgICAgVGhlICpidWZzaXplKiBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuCi0KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNiAzLjgKKyAgICAgIFRoZSAqYnVmc2l6ZSogcGFyYW1ldGVyLgogCiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB1c2UgdGhlIGdsb2JhbCBzdGF0ZSBjcmVhdGVkIGJ5IDpmdW5jOmBmaWxlaW5wdXQuaW5wdXRgOwogaWYgdGhlcmUgaXMgbm8gYWN0aXZlIHN0YXRlLCA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4KQEAgLTE2Nyw4ICsxNjYsOCBAQAogICAgLi4gZGVwcmVjYXRlZDo6IDMuNAogICAgICAgVGhlIGBgJ3JVJ2BgIGFuZCBgYCdVJ2BgIG1vZGVzLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4yCi0gICAgICBUaGUgKmJ1ZnNpemUqIHBhcmFtZXRlciBpcyBubyBsb25nZXIgdXNlZC4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNiAzLjgKKyAgICAgIFRoZSAqYnVmc2l6ZSogcGFyYW1ldGVyLgogCiAKICoqT3B0aW9uYWwgaW4tcGxhY2UgZmlsdGVyaW5nOioqIGlmIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGBgaW5wbGFjZT1UcnVlYGAgaXMKQEAgLTE5NSwxMCArMTk0LDE0IEBACiAgICBVc2FnZSBleGFtcGxlOiAgYGBmaSA9IGZpbGVpbnB1dC5GaWxlSW5wdXQob3Blbmhvb2s9ZmlsZWlucHV0Lmhvb2tfY29tcHJlc3NlZClgYAogCiAKLS4uIGZ1bmN0aW9uOjogaG9va19lbmNvZGVkKGVuY29kaW5nKQorLi4gZnVuY3Rpb246OiBob29rX2VuY29kZWQoZW5jb2RpbmcsIGVycm9ycz1Ob25lKQogCiAgICBSZXR1cm5zIGEgaG9vayB3aGljaCBvcGVucyBlYWNoIGZpbGUgd2l0aCA6ZnVuYzpgb3BlbmAsIHVzaW5nIHRoZSBnaXZlbgotICAgKmVuY29kaW5nKiB0byByZWFkIHRoZSBmaWxlLgorICAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogdG8gcmVhZCB0aGUgZmlsZS4KIAogICAgVXNhZ2UgZXhhbXBsZTogYGBmaSA9Ci0gICBmaWxlaW5wdXQuRmlsZUlucHV0KG9wZW5ob29rPWZpbGVpbnB1dC5ob29rX2VuY29kZWQoImlzby04ODU5LTEiKSlgYAorICAgZmlsZWlucHV0LkZpbGVJbnB1dChvcGVuaG9vaz1maWxlaW5wdXQuaG9va19lbmNvZGVkKCJ1dGYtOCIsCisgICAic3Vycm9nYXRlZXNjYXBlIikpYGAKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCAqZXJyb3JzKiBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAppbmRleCAxZTM1ZjM3Li5iOGMxZGNmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKQEAgLTk3LDYgKzk3LDEzIEBACiAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGFuZCAqU2VydmVyIE5hbWUgSW5kaWNhdGlvbiogKHNlZQogICAgICAgOmRhdGE6YHNzbC5IQVNfU05JYCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCiAgICBIZXJlJ3MgYSBzYW1wbGUgc2Vzc2lvbiB1c2luZyB0aGUgOmNsYXNzOmBGVFBfVExTYCBjbGFzczo6CiAKICAgICAgID4+PiBmdHBzID0gRlRQX1RMUygnZnRwLnB1cmVmdHBkLm9yZycpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAppbmRleCA1YWY5ZmU0Li5jNGZjZDk4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKQEAgLTI3MSw2ICsyNzEsOSBAQAogCiAgICBUaGUgY29tcGxleCB0eXBlIGlzIGRlc2NyaWJlZCBpbiA6cmVmOmB0eXBlc251bWVyaWNgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgR3JvdXBpbmcgZGlnaXRzIHdpdGggdW5kZXJzY29yZXMgYXMgaW4gY29kZSBsaXRlcmFscyBpcyBhbGxvd2VkLgorCiAKIC4uIGZ1bmN0aW9uOjogZGVsYXR0cihvYmplY3QsIG5hbWUpCiAKQEAgLTUzMSwxMSArNTM0LDE0IEBACiAKICAgIFRoZSBmbG9hdCB0eXBlIGlzIGRlc2NyaWJlZCBpbiA6cmVmOmB0eXBlc251bWVyaWNgLgogCi0gICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IF9fZm9ybWF0X18KLSAgICAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXQoKSAoYnVpbHQtaW4gZnVuY3Rpb24pCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgR3JvdXBpbmcgZGlnaXRzIHdpdGggdW5kZXJzY29yZXMgYXMgaW4gY29kZSBsaXRlcmFscyBpcyBhbGxvd2VkLgogCiAKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogX19mb3JtYXRfXworICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdCgpIChidWlsdC1pbiBmdW5jdGlvbikKKwogLi4gZnVuY3Rpb246OiBmb3JtYXQodmFsdWVbLCBmb3JtYXRfc3BlY10pCiAKICAgIENvbnZlcnQgYSAqdmFsdWUqIHRvIGEgImZvcm1hdHRlZCIgcmVwcmVzZW50YXRpb24sIGFzIGNvbnRyb2xsZWQgYnkKQEAgLTcwMiw2ICs3MDgsMTAgQEAKICAgICAgIDptZXRoOmBiYXNlLl9faW50X18gPG9iamVjdC5fX2ludF9fPmAgaW5zdGVhZCBvZiA6bWV0aDpgYmFzZS5fX2luZGV4X18KICAgICAgIDxvYmplY3QuX19pbmRleF9fPmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBHcm91cGluZyBkaWdpdHMgd2l0aCB1bmRlcnNjb3JlcyBhcyBpbiBjb2RlIGxpdGVyYWxzIGlzIGFsbG93ZWQuCisKKwogLi4gZnVuY3Rpb246OiBpc2luc3RhbmNlKG9iamVjdCwgY2xhc3NpbmZvKQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgKm9iamVjdCogYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlICpjbGFzc2luZm8qCkBAIC04NzgsMTEgKzg4OCwxMSBAQAogICAgT3BlbiAqZmlsZSogYW5kIHJldHVybiBhIGNvcnJlc3BvbmRpbmcgOnRlcm06YGZpbGUgb2JqZWN0YC4gIElmIHRoZSBmaWxlCiAgICBjYW5ub3QgYmUgb3BlbmVkLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKLSAgICpmaWxlKiBpcyBlaXRoZXIgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0IGdpdmluZyB0aGUgcGF0aG5hbWUgKGFic29sdXRlIG9yCi0gICByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkIG9yCi0gICBhbiBpbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBiZSB3cmFwcGVkLiAgKElmIGEgZmlsZSBkZXNjcmlwdG9yCi0gICBpcyBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlIHJldHVybmVkIEkvTyBvYmplY3QgaXMgY2xvc2VkLCB1bmxlc3MKLSAgICpjbG9zZWZkKiBpcyBzZXQgdG8gYGBGYWxzZWBgLikKKyAgICpmaWxlKiBpcyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBnaXZpbmcgdGhlIHBhdGhuYW1lIChhYnNvbHV0ZSBvcgorICAgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZCBvciBhbgorICAgaW50ZWdlciBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gYmUgd3JhcHBlZC4gIChJZiBhIGZpbGUgZGVzY3JpcHRvciBpcworICAgZ2l2ZW4sIGl0IGlzIGNsb3NlZCB3aGVuIHRoZSByZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzICpjbG9zZWZkKgorICAgaXMgc2V0IHRvIGBgRmFsc2VgYC4pCiAKICAgICptb2RlKiBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUgaXMKICAgIG9wZW5lZC4gIEl0IGRlZmF1bHRzIHRvIGBgJ3InYGAgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0IG1vZGUuCkBAIC0xMDU1LDI3ICsxMDY1LDM4IEBACiAgICAod2hlcmUgOmZ1bmM6YG9wZW5gIGlzIGRlY2xhcmVkKSwgOm1vZDpgb3NgLCA6bW9kOmBvcy5wYXRoYCwgOm1vZDpgdGVtcGZpbGVgLAogICAgYW5kIDptb2Q6YHNodXRpbGAuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBUaGUgKm9wZW5lciogcGFyYW1ldGVyIHdhcyBhZGRlZC4KLSAgICAgIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkLgotICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQsIGl0IGlzIG5vdyBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KLSAgICAgIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaXMgbm93IHJhaXNlZCBpZiB0aGUgZmlsZSBvcGVuZWQgaW4gZXhjbHVzaXZlCi0gICAgICBjcmVhdGlvbiBtb2RlIChgYCd4J2BgKSBhbHJlYWR5IGV4aXN0cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuMwogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAotICAgICAgVGhlIGZpbGUgaXMgbm93IG5vbi1pbmhlcml0YWJsZS4KKyAgICAgICAgICogVGhlICpvcGVuZXIqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisgICAgICAgICAqIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkLgorICAgICAgICAgKiA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCwgaXQgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorICAgICAgICAgKiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgdGhlIGZpbGUgb3BlbmVkIGluIGV4Y2x1c2l2ZQorICAgICAgICAgKiBjcmVhdGlvbiBtb2RlIChgYCd4J2BgKSBhbHJlYWR5IGV4aXN0cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgMy40CisKKyAgICAgICAgICogVGhlIGZpbGUgaXMgbm93IG5vbi1pbmhlcml0YWJsZS4KIAogICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy40IDQuMAogCiAgICAgICBUaGUgYGAnVSdgYCBtb2RlLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQotICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4KLSAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KLSAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgMy41CiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41Ci0gICAgICBUaGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlciB3YXMgYWRkZWQuCisgICAgICAgICAqIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKyAgICAgICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisgICAgICAgICAqIFRoZSBgYCduYW1lcmVwbGFjZSdgYCBlcnJvciBoYW5kbGVyIHdhcyBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgMy42CisKKyAgICAgICAgICogU3VwcG9ydCBhZGRlZCB0byBhY2NlcHQgb2JqZWN0cyBpbXBsZW1lbnRpbmcgOmNsYXNzOmBvcy5QYXRoTGlrZWAuCisgICAgICAgICAqIE9uIFdpbmRvd3MsIG9wZW5pbmcgYSBjb25zb2xlIGJ1ZmZlciBtYXkgcmV0dXJuIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgICAgOmNsYXNzOmBpby5SYXdJT0Jhc2VgIG90aGVyIHRoYW4gOmNsYXNzOmBpby5GaWxlSU9gLgogCiAuLiBmdW5jdGlvbjo6IG9yZChjKQogCkBAIC0xNDYwLDYgKzE0ODEsOSBAQAogCiAgICBTZWUgYWxzbyA6cmVmOmBibHRpbi10eXBlLW9iamVjdHNgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3ViY2xhc3NlcyBvZiA6Y2xhc3M6YHR5cGVgIHdoaWNoIGRvbid0IG92ZXJyaWRlIGBgdHlwZS5fX25ld19fYGAgbWF5IG5vCisgICAgICBsb25nZXIgdXNlIHRoZSBvbmUtYXJndW1lbnQgZm9ybSB0byBnZXQgdGhlIHR5cGUgb2YgYW4gb2JqZWN0LgogCiAuLiBmdW5jdGlvbjo6IHZhcnMoW29iamVjdF0pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2dsb2IucnN0IGIvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKaW5kZXggMzI4ZWVmMy4uYThhNWE1MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKQEAgLTE0LDcgKzE0LDcgQEAKIGFjY29yZGluZyB0byB0aGUgcnVsZXMgdXNlZCBieSB0aGUgVW5peCBzaGVsbCwgYWx0aG91Z2ggcmVzdWx0cyBhcmUgcmV0dXJuZWQgaW4KIGFyYml0cmFyeSBvcmRlci4gIE5vIHRpbGRlIGV4cGFuc2lvbiBpcyBkb25lLCBidXQgYGAqYGAsIGBgP2BgLCBhbmQgY2hhcmFjdGVyCiByYW5nZXMgZXhwcmVzc2VkIHdpdGggYGBbXWBgIHdpbGwgYmUgY29ycmVjdGx5IG1hdGNoZWQuICBUaGlzIGlzIGRvbmUgYnkgdXNpbmcKLXRoZSA6ZnVuYzpgb3MubGlzdGRpcmAgYW5kIDpmdW5jOmBmbm1hdGNoLmZubWF0Y2hgIGZ1bmN0aW9ucyBpbiBjb25jZXJ0LCBhbmQKK3RoZSA6ZnVuYzpgb3Muc2NhbmRpcmAgYW5kIDpmdW5jOmBmbm1hdGNoLmZubWF0Y2hgIGZ1bmN0aW9ucyBpbiBjb25jZXJ0LCBhbmQKIG5vdCBieSBhY3R1YWxseSBpbnZva2luZyBhIHN1YnNoZWxsLiAgTm90ZSB0aGF0IHVubGlrZSA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCwKIDptb2Q6YGdsb2JgIHRyZWF0cyBmaWxlbmFtZXMgYmVnaW5uaW5nIHdpdGggYSBkb3QgKGBgLmBgKSBhcyBzcGVjaWFsIGNhc2VzLgogKEZvciB0aWxkZSBhbmQgc2hlbGwgdmFyaWFibGUgZXhwYW5zaW9uLCB1c2UgOmZ1bmM6YG9zLnBhdGguZXhwYW5kdXNlcmAgYW5kCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9ncnAucnN0IGIvRG9jL2xpYnJhcnkvZ3JwLnJzdAppbmRleCBhMzBlNjIyLi43NGRlM2Y5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9ncnAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dycC5yc3QKQEAgLTQzLDYgKzQzLDkgQEAKICAgIFJldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIGdyb3VwIElELiA6ZXhjOmBLZXlFcnJvcmAKICAgIGlzIHJhaXNlZCBpZiB0aGUgZW50cnkgYXNrZWQgZm9yIGNhbm5vdCBiZSBmb3VuZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgU2luY2UgUHl0aG9uIDMuNiB0aGUgc3VwcG9ydCBvZiBub24taW50ZWdlciBhcmd1bWVudHMgbGlrZSBmbG9hdHMgb3IKKyAgICAgIHN0cmluZ3MgaW4gOmZ1bmM6YGdldGdyZ2lkYCBpcyBkZXByZWNhdGVkLgogCiAuLiBmdW5jdGlvbjo6IGdldGdybmFtKG5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2d6aXAucnN0IGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKaW5kZXggNzkyZDU3YS4uOWM2YjcyMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKQEAgLTU2LDYgKzU2LDggQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAneCdgYCwgYGAneGInYGAgYW5kIGBgJ3h0J2BgIG1vZGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAogLi4gY2xhc3M6OiBHemlwRmlsZShmaWxlbmFtZT1Ob25lLCBtb2RlPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSwgZmlsZW9iaj1Ob25lLCBtdGltZT1Ob25lKQogCkBAIC0xNTEsNiArMTUzLDkgQEAKICAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgogICAgICAgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi10cmVlLnBuZyBiL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLXRyZWUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMGRjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi10cmVlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi5yc3QgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1ZTQ0MQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLnJzdApAQCAtMCwwICsxLDQ0NCBAQAorLi4gX2hhc2hsaWItYmxha2UyOgorCis6bW9kOmBoYXNobGliYCAtLS0gQkxBS0UyIGhhc2ggZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGhhc2hsaWIKKyAgIDpzeW5vcHNpczogQkxBS0UyIGhhc2ggZnVuY3Rpb24gZm9yIFB5dGhvbgorLi4gc2VjdGlvbmF1dGhvcjo6IERtaXRyeSBDaGVzdG55a2gKKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBibGFrZTJiLCBibGFrZTJzCisKK0JMQUtFMl8gaXMgYSBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb24gZGVmaW5lZCBpbiBSRkMtNzY5M18gdGhhdCBjb21lcyBpbiB0d28KK2ZsYXZvcnM6CisKKyogKipCTEFLRTJiKiosIG9wdGltaXplZCBmb3IgNjQtYml0IHBsYXRmb3JtcyBhbmQgcHJvZHVjZXMgZGlnZXN0cyBvZiBhbnkgc2l6ZQorICBiZXR3ZWVuIDEgYW5kIDY0IGJ5dGVzLAorCisqICoqQkxBS0UycyoqLCBvcHRpbWl6ZWQgZm9yIDgtIHRvIDMyLWJpdCBwbGF0Zm9ybXMgYW5kIHByb2R1Y2VzIGRpZ2VzdHMgb2YgYW55CisgIHNpemUgYmV0d2VlbiAxIGFuZCAzMiBieXRlcy4KKworQkxBS0UyIHN1cHBvcnRzICoqa2V5ZWQgbW9kZSoqIChhIGZhc3RlciBhbmQgc2ltcGxlciByZXBsYWNlbWVudCBmb3IgSE1BQ18pLAorKipzYWx0ZWQgaGFzaGluZyoqLCAqKnBlcnNvbmFsaXphdGlvbioqLCBhbmQgKip0cmVlIGhhc2hpbmcqKi4KKworSGFzaCBvYmplY3RzIGZyb20gdGhpcyBtb2R1bGUgZm9sbG93IHRoZSBBUEkgb2Ygc3RhbmRhcmQgbGlicmFyeSdzCis6bW9kOmBoYXNobGliYCBvYmplY3RzLgorCisKK01vZHVsZQorPT09PT09CisKK0NyZWF0aW5nIGhhc2ggb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05ldyBoYXNoIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgY2FsbGluZyBjb25zdHJ1Y3RvciBmdW5jdGlvbnM6CisKKworLi4gZnVuY3Rpb246OiBibGFrZTJiKGRhdGE9YicnLCBkaWdlc3Rfc2l6ZT02NCwga2V5PWInJywgc2FsdD1iJycsIFwKKyAgICAgICAgICAgICAgICBwZXJzb249YicnLCBmYW5vdXQ9MSwgZGVwdGg9MSwgbGVhZl9zaXplPTAsIG5vZGVfb2Zmc2V0PTAsICBcCisgICAgICAgICAgICAgICAgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKworLi4gZnVuY3Rpb246OiBibGFrZTJzKGRhdGE9YicnLCBkaWdlc3Rfc2l6ZT0zMiwga2V5PWInJywgc2FsdD1iJycsIFwKKyAgICAgICAgICAgICAgICBwZXJzb249YicnLCBmYW5vdXQ9MSwgZGVwdGg9MSwgbGVhZl9zaXplPTAsIG5vZGVfb2Zmc2V0PTAsICBcCisgICAgICAgICAgICAgICAgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKworCitUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGhhc2ggb2JqZWN0cyBmb3IgY2FsY3VsYXRpbmcKK0JMQUtFMmIgb3IgQkxBS0Uycy4gVGhleSBvcHRpb25hbGx5IHRha2UgdGhlc2UgZ2VuZXJhbCBwYXJhbWV0ZXJzOgorCisqICpkYXRhKjogaW5pdGlhbCBjaHVuayBvZiBkYXRhIHRvIGhhc2gsIHdoaWNoIG11c3QgYmUgaW50ZXJwcmV0YWJsZSBhcyBidWZmZXIKKyAgb2YgYnl0ZXMuCisKKyogKmRpZ2VzdF9zaXplKjogc2l6ZSBvZiBvdXRwdXQgZGlnZXN0IGluIGJ5dGVzLgorCisqICprZXkqOiBrZXkgZm9yIGtleWVkIGhhc2hpbmcgKHVwIHRvIDY0IGJ5dGVzIGZvciBCTEFLRTJiLCB1cCB0byAzMiBieXRlcyBmb3IKKyAgQkxBS0UycykuCisKKyogKnNhbHQqOiBzYWx0IGZvciByYW5kb21pemVkIGhhc2hpbmcgKHVwIHRvIDE2IGJ5dGVzIGZvciBCTEFLRTJiLCB1cCB0byA4CisgIGJ5dGVzIGZvciBCTEFLRTJzKS4KKworKiAqcGVyc29uKjogcGVyc29uYWxpemF0aW9uIHN0cmluZyAodXAgdG8gMTYgYnl0ZXMgZm9yIEJMQUtFMmIsIHVwIHRvIDggYnl0ZXMKKyAgZm9yIEJMQUtFMnMpLgorCitUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIGxpbWl0cyBmb3IgZ2VuZXJhbCBwYXJhbWV0ZXJzIChpbiBieXRlcyk6CisKKz09PT09PT0gPT09PT09PT09PT0gPT09PT09PT0gPT09PT09PT09ID09PT09PT09PT09CitIYXNoICAgIGRpZ2VzdF9zaXplIGxlbihrZXkpIGxlbihzYWx0KSBsZW4ocGVyc29uKQorPT09PT09PSA9PT09PT09PT09PSA9PT09PT09PSA9PT09PT09PT0gPT09PT09PT09PT0KK0JMQUtFMmIgICAgIDY0ICAgICAgICAgNjQgICAgICAgMTYgICAgICAgIDE2CitCTEFLRTJzICAgICAzMiAgICAgICAgIDMyICAgICAgIDggICAgICAgICA4Cis9PT09PT09ID09PT09PT09PT09ID09PT09PT09ID09PT09PT09PSA9PT09PT09PT09PQorCisuLiBub3RlOjoKKworICAgIEJMQUtFMiBzcGVjaWZpY2F0aW9uIGRlZmluZXMgY29uc3RhbnQgbGVuZ3RocyBmb3Igc2FsdCBhbmQgcGVyc29uYWxpemF0aW9uCisgICAgcGFyYW1ldGVycywgaG93ZXZlciwgZm9yIGNvbnZlbmllbmNlLCB0aGlzIGltcGxlbWVudGF0aW9uIGFjY2VwdHMgYnl0ZQorICAgIHN0cmluZ3Mgb2YgYW55IHNpemUgdXAgdG8gdGhlIHNwZWNpZmllZCBsZW5ndGguIElmIHRoZSBsZW5ndGggb2YgdGhlCisgICAgcGFyYW1ldGVyIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQsIGl0IGlzIHBhZGRlZCB3aXRoIHplcm9zLCB0aHVzLCBmb3IKKyAgICBleGFtcGxlLCBgYGInc2FsdCdgYCBhbmQgYGBiJ3NhbHRceDAwJ2BgIGlzIHRoZSBzYW1lIHZhbHVlLiAoVGhpcyBpcyBub3QKKyAgICB0aGUgY2FzZSBmb3IgKmtleSouKQorCitUaGVzZSBzaXplcyBhcmUgYXZhaWxhYmxlIGFzIG1vZHVsZSBgY29uc3RhbnRzYF8gZGVzY3JpYmVkIGJlbG93LgorCitDb25zdHJ1Y3RvciBmdW5jdGlvbnMgYWxzbyBhY2NlcHQgdGhlIGZvbGxvd2luZyB0cmVlIGhhc2hpbmcgcGFyYW1ldGVyczoKKworKiAqZmFub3V0KjogZmFub3V0ICgwIHRvIDI1NSwgMCBpZiB1bmxpbWl0ZWQsIDEgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqZGVwdGgqOiBtYXhpbWFsIGRlcHRoIG9mIHRyZWUgKDEgdG8gMjU1LCAyNTUgaWYgdW5saW1pdGVkLCAxIGluCisgIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmxlYWZfc2l6ZSo6IG1heGltYWwgYnl0ZSBsZW5ndGggb2YgbGVhZiAoMCB0byAyKiozMi0xLCAwIGlmIHVubGltaXRlZCBvciBpbgorICBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpub2RlX29mZnNldCo6IG5vZGUgb2Zmc2V0ICgwIHRvIDIqKjY0LTEgZm9yIEJMQUtFMmIsIDAgdG8gMioqNDgtMSBmb3IKKyAgQkxBS0UycywgMCBmb3IgdGhlIGZpcnN0LCBsZWZ0bW9zdCwgbGVhZiwgb3IgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqbm9kZV9kZXB0aCo6IG5vZGUgZGVwdGggKDAgdG8gMjU1LCAwIGZvciBsZWF2ZXMsIG9yIGluIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmlubmVyX3NpemUqOiBpbm5lciBkaWdlc3Qgc2l6ZSAoMCB0byA2NCBmb3IgQkxBS0UyYiwgMCB0byAzMiBmb3IKKyAgQkxBS0UycywgMCBpbiBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpsYXN0X25vZGUqOiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgcHJvY2Vzc2VkIG5vZGUgaXMgdGhlIGxhc3QKKyAgb25lIChgRmFsc2VgIGZvciBzZXF1ZW50aWFsIG1vZGUpLgorCisuLiBmaWd1cmU6OiBoYXNobGliLWJsYWtlMi10cmVlLnBuZworICAgOmFsdDogRXhwbGFuYXRpb24gb2YgdHJlZSBtb2RlIHBhcmFtZXRlcnMuCisKK1NlZSBzZWN0aW9uIDIuMTAgaW4gYEJMQUtFMiBzcGVjaWZpY2F0aW9uCis8aHR0cHM6Ly9ibGFrZTIubmV0L2JsYWtlMl8yMDEzMDEyOS5wZGY+YF8gZm9yIGNvbXByZWhlbnNpdmUgcmV2aWV3IG9mIHRyZWUKK2hhc2hpbmcuCisKKworQ29uc3RhbnRzCistLS0tLS0tLS0KKworLi4gZGF0YTo6IGJsYWtlMmIuU0FMVF9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5TQUxUX1NJWkUKKworU2FsdCBsZW5ndGggKG1heGltdW0gbGVuZ3RoIGFjY2VwdGVkIGJ5IGNvbnN0cnVjdG9ycykuCisKKworLi4gZGF0YTo6IGJsYWtlMmIuUEVSU09OX1NJWkUKKy4uIGRhdGE6OiBibGFrZTJzLlBFUlNPTl9TSVpFCisKK1BlcnNvbmFsaXphdGlvbiBzdHJpbmcgbGVuZ3RoIChtYXhpbXVtIGxlbmd0aCBhY2NlcHRlZCBieSBjb25zdHJ1Y3RvcnMpLgorCisKKy4uIGRhdGE6OiBibGFrZTJiLk1BWF9LRVlfU0laRQorLi4gZGF0YTo6IGJsYWtlMnMuTUFYX0tFWV9TSVpFCisKK01heGltdW0ga2V5IHNpemUuCisKKworLi4gZGF0YTo6IGJsYWtlMmIuTUFYX0RJR0VTVF9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5NQVhfRElHRVNUX1NJWkUKKworTWF4aW11bSBkaWdlc3Qgc2l6ZSB0aGF0IHRoZSBoYXNoIGZ1bmN0aW9uIGNhbiBvdXRwdXQuCisKKworRXhhbXBsZXMKKz09PT09PT09CisKK1NpbXBsZSBoYXNoaW5nCistLS0tLS0tLS0tLS0tLQorCitUbyBjYWxjdWxhdGUgaGFzaCBvZiBzb21lIGRhdGEsIHlvdSBzaG91bGQgZmlyc3QgY29uc3RydWN0IGEgaGFzaCBvYmplY3QgYnkKK2NhbGxpbmcgdGhlIGFwcHJvcHJpYXRlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uICg6ZnVuYzpgYmxha2UyYmAgb3IKKzpmdW5jOmBibGFrZTJzYCksIHRoZW4gdXBkYXRlIGl0IHdpdGggdGhlIGRhdGEgYnkgY2FsbGluZyA6bWV0aDpgdXBkYXRlYCBvbiB0aGUKK29iamVjdCwgYW5kLCBmaW5hbGx5LCBnZXQgdGhlIGRpZ2VzdCBvdXQgb2YgdGhlIG9iamVjdCBieSBjYWxsaW5nCis6bWV0aDpgZGlnZXN0YCAob3IgOm1ldGg6YGhleGRpZ2VzdGAgZm9yIGhleC1lbmNvZGVkIHN0cmluZykuCisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKCkKKyAgICA+Pj4gaC51cGRhdGUoYidIZWxsbyB3b3JsZCcpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnNmZmODQzYmE2ODU4NDJhYTgyMDMxZDNmNTNjNDhiNjYzMjZkZjc2MzlhNjNkMTI4OTc0YzVjMTRmMzFhMGYzMzM0M2E4YzY1NTUxMTM0ZWQxYWUwZjJiMGRkMmJiNDk1ZGM4MTAzOWUzZWViMGFhMWJiMDM4OGJiZWFjMjkxODMnCisKKworQXMgYSBzaG9ydGN1dCwgeW91IGNhbiBwYXNzIHRoZSBmaXJzdCBjaHVuayBvZiBkYXRhIHRvIHVwZGF0ZSBkaXJlY3RseSB0byB0aGUKK2NvbnN0cnVjdG9yIGFzIHRoZSBmaXJzdCBhcmd1bWVudCAob3IgYXMgKmRhdGEqIGtleXdvcmQgYXJndW1lbnQpOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBibGFrZTJiKGInSGVsbG8gd29ybGQnKS5oZXhkaWdlc3QoKQorICAgICc2ZmY4NDNiYTY4NTg0MmFhODIwMzFkM2Y1M2M0OGI2NjMyNmRmNzYzOWE2M2QxMjg5NzRjNWMxNGYzMWEwZjMzMzQzYThjNjU1NTExMzRlZDFhZTBmMmIwZGQyYmI0OTVkYzgxMDM5ZTNlZWIwYWExYmIwMzg4YmJlYWMyOTE4MycKKworWW91IGNhbiBjYWxsIDptZXRoOmBoYXNoLnVwZGF0ZWAgYXMgbWFueSB0aW1lcyBhcyB5b3UgbmVlZCB0byBpdGVyYXRpdmVseQordXBkYXRlIHRoZSBoYXNoOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBpdGVtcyA9IFtiJ0hlbGxvJywgYicgJywgYid3b3JsZCddCisgICAgPj4+IGggPSBibGFrZTJiKCkKKyAgICA+Pj4gZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgLi4uICAgICBoLnVwZGF0ZShpdGVtKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzZmZjg0M2JhNjg1ODQyYWE4MjAzMWQzZjUzYzQ4YjY2MzI2ZGY3NjM5YTYzZDEyODk3NGM1YzE0ZjMxYTBmMzMzNDNhOGM2NTU1MTEzNGVkMWFlMGYyYjBkZDJiYjQ5NWRjODEwMzllM2VlYjBhYTFiYjAzODhiYmVhYzI5MTgzJworCisKK1VzaW5nIGRpZmZlcmVudCBkaWdlc3Qgc2l6ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQkxBS0UyIGhhcyBjb25maWd1cmFibGUgc2l6ZSBvZiBkaWdlc3RzIHVwIHRvIDY0IGJ5dGVzIGZvciBCTEFLRTJiIGFuZCB1cCB0byAzMgorYnl0ZXMgZm9yIEJMQUtFMnMuIEZvciBleGFtcGxlLCB0byByZXBsYWNlIFNIQS0xIHdpdGggQkxBS0UyYiB3aXRob3V0IGNoYW5naW5nCit0aGUgc2l6ZSBvZiBvdXRwdXQsIHdlIGNhbiB0ZWxsIEJMQUtFMmIgdG8gcHJvZHVjZSAyMC1ieXRlIGRpZ2VzdHM6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKGRpZ2VzdF9zaXplPTIwKQorICAgID4+PiBoLnVwZGF0ZShiJ1JlcGxhY2luZyBTSEExIHdpdGggdGhlIG1vcmUgc2VjdXJlIGZ1bmN0aW9uJykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICdkMjRmMjZjZjhkZTY2NDcyZDU4ZDRlMWIxNzc0YjRjOTE1OGIxZjRjJworICAgID4+PiBoLmRpZ2VzdF9zaXplCisgICAgMjAKKyAgICA+Pj4gbGVuKGguZGlnZXN0KCkpCisgICAgMjAKKworSGFzaCBvYmplY3RzIHdpdGggZGlmZmVyZW50IGRpZ2VzdCBzaXplcyBoYXZlIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dHMKKyhzaG9ydGVyIGhhc2hlcyBhcmUgKm5vdCogcHJlZml4ZXMgb2YgbG9uZ2VyIGhhc2hlcyk7IEJMQUtFMmIgYW5kIEJMQUtFMnMKK3Byb2R1Y2UgZGlmZmVyZW50IG91dHB1dHMgZXZlbiBpZiB0aGUgb3V0cHV0IGxlbmd0aCBpcyB0aGUgc2FtZToKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIsIGJsYWtlMnMKKyAgICA+Pj4gYmxha2UyYihkaWdlc3Rfc2l6ZT0xMCkuaGV4ZGlnZXN0KCkKKyAgICAnNmZhMWQ4ZmNmZDcxOTA0NmQ3NjInCisgICAgPj4+IGJsYWtlMmIoZGlnZXN0X3NpemU9MTEpLmhleGRpZ2VzdCgpCisgICAgJ2ViNmVjMTVkYWY5NTQ2MjU0ZjA4MDknCisgICAgPj4+IGJsYWtlMnMoZGlnZXN0X3NpemU9MTApLmhleGRpZ2VzdCgpCisgICAgJzFiZjIxYTk4Yzc4YTFjMzc2YWU5JworICAgID4+PiBibGFrZTJzKGRpZ2VzdF9zaXplPTExKS5oZXhkaWdlc3QoKQorICAgICc1NjcwMDRiZjk2ZTRhMjU3NzNlYmY0JworCisKK0tleWVkIGhhc2hpbmcKKy0tLS0tLS0tLS0tLS0KKworS2V5ZWQgaGFzaGluZyBjYW4gYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24gYXMgYSBmYXN0ZXIgYW5kIHNpbXBsZXIKK3JlcGxhY2VtZW50IGZvciBgSGFzaC1iYXNlZCBtZXNzYWdlIGF1dGhlbnRpY2F0aW9uIGNvZGUKKzxodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhc2gtYmFzZWRfbWVzc2FnZV9hdXRoZW50aWNhdGlvbl9jb2RlPmBfIChITUFDKS4KK0JMQUtFMiBjYW4gYmUgc2VjdXJlbHkgdXNlZCBpbiBwcmVmaXgtTUFDIG1vZGUgdGhhbmtzIHRvIHRoZQoraW5kaWZmZXJlbnRpYWJpbGl0eSBwcm9wZXJ0eSBpbmhlcml0ZWQgZnJvbSBCTEFLRS4KKworVGhpcyBleGFtcGxlIHNob3dzIGhvdyB0byBnZXQgYSAoaGV4LWVuY29kZWQpIDEyOC1iaXQgYXV0aGVudGljYXRpb24gY29kZSBmb3IKK21lc3NhZ2UgYGBiJ21lc3NhZ2UgZGF0YSdgYCB3aXRoIGtleSBgYGIncHNldWRvcmFuZG9tIGtleSdgYDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKGtleT1iJ3BzZXVkb3JhbmRvbSBrZXknLCBkaWdlc3Rfc2l6ZT0xNikKKyAgICA+Pj4gaC51cGRhdGUoYidtZXNzYWdlIGRhdGEnKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzNkMzYzZmY3NDAxZTAyMDI2ZjRhNDY4N2Q0ODYzY2VkJworCisKK0FzIGEgcHJhY3RpY2FsIGV4YW1wbGUsIGEgd2ViIGFwcGxpY2F0aW9uIGNhbiBzeW1tZXRyaWNhbGx5IHNpZ24gY29va2llcyBzZW50Cit0byB1c2VycyBhbmQgbGF0ZXIgdmVyaWZ5IHRoZW0gdG8gbWFrZSBzdXJlIHRoZXkgd2VyZW4ndCB0YW1wZXJlZCB3aXRoOjoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gZnJvbSBobWFjIGltcG9ydCBjb21wYXJlX2RpZ2VzdAorICAgID4+PgorICAgID4+PiBTRUNSRVRfS0VZID0gYidwc2V1ZG9yYW5kb21seSBnZW5lcmF0ZWQgc2VydmVyIHNlY3JldCBrZXknCisgICAgPj4+IEFVVEhfU0laRSA9IDE2CisgICAgPj4+CisgICAgPj4+IGRlZiBzaWduKGNvb2tpZSk6CisgICAgLi4uICAgICBoID0gYmxha2UyYihkYXRhPWNvb2tpZSwgZGlnZXN0X3NpemU9QVVUSF9TSVpFLCBrZXk9U0VDUkVUX0tFWSkKKyAgICAuLi4gICAgIHJldHVybiBoLmhleGRpZ2VzdCgpCisgICAgPj4+CisgICAgPj4+IGNvb2tpZSA9IGIndXNlcjp2YXRyb2dhc2FjJworICAgID4+PiBzaWcgPSBzaWduKGNvb2tpZSkKKyAgICA+Pj4gcHJpbnQoInswfSx7MX0iLmZvcm1hdChjb29raWUuZGVjb2RlKCd1dGYtOCcpLCBzaWcpKQorICAgIHVzZXI6dmF0cm9nYXNhYywzNDljZjkwNDUzMzc2N2VkMmQ3NTUyNzlhOGRmODRkMAorICAgID4+PiBjb21wYXJlX2RpZ2VzdChjb29raWUsIHNpZykKKyAgICBUcnVlCisgICAgPj4+IGNvbXBhcmVfZGlnZXN0KGIndXNlcjpwb2xpY2FqYWMnLCBzaWcpCisgICAgRmFsc2UKKyAgICA+Pj4gY29tcGFyZV9kaWdlc3R5KGNvb2tpZSwgJzAxMDIwMzA0MDUwNjA3MDgwOTBhMGIwYzBkMGUwZjAwJykKKyAgICBGYWxzZQorCitFdmVuIHRob3VnaCB0aGVyZSdzIGEgbmF0aXZlIGtleWVkIGhhc2hpbmcgbW9kZSwgQkxBS0UyIGNhbiwgb2YgY291cnNlLCBiZSB1c2VkCitpbiBITUFDIGNvbnN0cnVjdGlvbiB3aXRoIDptb2Q6YGhtYWNgIG1vZHVsZTo6CisKKyAgICA+Pj4gaW1wb3J0IGhtYWMsIGhhc2hsaWIKKyAgICA+Pj4gbSA9IGhtYWMubmV3KGInc2VjcmV0IGtleScsIGRpZ2VzdG1vZD1oYXNobGliLmJsYWtlMnMpCisgICAgPj4+IG0udXBkYXRlKGInbWVzc2FnZScpCisgICAgPj4+IG0uaGV4ZGlnZXN0KCkKKyAgICAnZTNjODEwMjg2OGQyOGI1ZmY4NWZjMzVkZGEwNzMyOTk3MGQxYTAxZTI3M2MzNzQ4MTMyNmZlMGM4NjFjODE0MicKKworCitSYW5kb21pemVkIGhhc2hpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitCeSBzZXR0aW5nICpzYWx0KiBwYXJhbWV0ZXIgdXNlcnMgY2FuIGludHJvZHVjZSByYW5kb21pemF0aW9uIHRvIHRoZSBoYXNoCitmdW5jdGlvbi4gUmFuZG9taXplZCBoYXNoaW5nIGlzIHVzZWZ1bCBmb3IgcHJvdGVjdGluZyBhZ2FpbnN0IGNvbGxpc2lvbiBhdHRhY2tzCitvbiB0aGUgaGFzaCBmdW5jdGlvbiB1c2VkIGluIGRpZ2l0YWwgc2lnbmF0dXJlcy4KKworICAgIFJhbmRvbWl6ZWQgaGFzaGluZyBpcyBkZXNpZ25lZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBvbmUgcGFydHksIHRoZSBtZXNzYWdlCisgICAgcHJlcGFyZXIsIGdlbmVyYXRlcyBhbGwgb3IgcGFydCBvZiBhIG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGJ5IGEgc2Vjb25kCisgICAgcGFydHksIHRoZSBtZXNzYWdlIHNpZ25lci4gSWYgdGhlIG1lc3NhZ2UgcHJlcGFyZXIgaXMgYWJsZSB0byBmaW5kCisgICAgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uIGNvbGxpc2lvbnMgKGkuZS4sIHR3byBtZXNzYWdlcyBwcm9kdWNpbmcgdGhlCisgICAgc2FtZSBoYXNoIHZhbHVlKSwgdGhlbiBzaGUgbWlnaHQgcHJlcGFyZSBtZWFuaW5nZnVsIHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCisgICAgdGhhdCB3b3VsZCBwcm9kdWNlIHRoZSBzYW1lIGhhc2ggdmFsdWUgYW5kIGRpZ2l0YWwgc2lnbmF0dXJlLCBidXQgd2l0aAorICAgIGRpZmZlcmVudCByZXN1bHRzIChlLmcuLCB0cmFuc2ZlcnJpbmcgJDEsMDAwLDAwMCB0byBhbiBhY2NvdW50LCByYXRoZXIgdGhhbgorICAgICQxMCkuIENyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbnMgaGF2ZSBiZWVuIGRlc2lnbmVkIHdpdGggY29sbGlzaW9uCisgICAgcmVzaXN0YW5jZSBhcyBhIG1ham9yIGdvYWwsIGJ1dCB0aGUgY3VycmVudCBjb25jZW50cmF0aW9uIG9uIGF0dGFja2luZworICAgIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbnMgbWF5IHJlc3VsdCBpbiBhIGdpdmVuIGNyeXB0b2dyYXBoaWMgaGFzaAorICAgIGZ1bmN0aW9uIHByb3ZpZGluZyBsZXNzIGNvbGxpc2lvbiByZXNpc3RhbmNlIHRoYW4gZXhwZWN0ZWQuIFJhbmRvbWl6ZWQKKyAgICBoYXNoaW5nIG9mZmVycyB0aGUgc2lnbmVyIGFkZGl0aW9uYWwgcHJvdGVjdGlvbiBieSByZWR1Y2luZyB0aGUgbGlrZWxpaG9vZAorICAgIHRoYXQgYSBwcmVwYXJlciBjYW4gZ2VuZXJhdGUgdHdvIG9yIG1vcmUgbWVzc2FnZXMgdGhhdCB1bHRpbWF0ZWx5IHlpZWxkIHRoZQorICAgIHNhbWUgaGFzaCB2YWx1ZSBkdXJpbmcgdGhlIGRpZ2l0YWwgc2lnbmF0dXJlIGdlbmVyYXRpb24gcHJvY2VzcyDigJMgZXZlbiBpZgorICAgIGl0IGlzIHByYWN0aWNhbCB0byBmaW5kIGNvbGxpc2lvbnMgZm9yIHRoZSBoYXNoIGZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgdXNlCisgICAgb2YgcmFuZG9taXplZCBoYXNoaW5nIG1heSByZWR1Y2UgdGhlIGFtb3VudCBvZiBzZWN1cml0eSBwcm92aWRlZCBieSBhCisgICAgZGlnaXRhbCBzaWduYXR1cmUgd2hlbiBhbGwgcG9ydGlvbnMgb2YgdGhlIG1lc3NhZ2UgYXJlIHByZXBhcmVkCisgICAgYnkgdGhlIHNpZ25lci4KKworICAgIChgTklTVCBTUC04MDAtMTA2ICJSYW5kb21pemVkIEhhc2hpbmcgZm9yIERpZ2l0YWwgU2lnbmF0dXJlcyIKKyAgICA8aHR0cDovL2NzcmMubmlzdC5nb3YvcHVibGljYXRpb25zL25pc3RwdWJzLzgwMC0xMDYvTklTVC1TUC04MDAtMTA2LnBkZj5gXykKKworSW4gQkxBS0UyIHRoZSBzYWx0IGlzIHByb2Nlc3NlZCBhcyBhIG9uZS10aW1lIGlucHV0IHRvIHRoZSBoYXNoIGZ1bmN0aW9uIGR1cmluZworaW5pdGlhbGl6YXRpb24sIHJhdGhlciB0aGFuIGFzIGFuIGlucHV0IHRvIGVhY2ggY29tcHJlc3Npb24gZnVuY3Rpb24uCisKKy4uIHdhcm5pbmc6OgorCisgICAgKlNhbHRlZCBoYXNoaW5nKiAob3IganVzdCBoYXNoaW5nKSB3aXRoIEJMQUtFMiBvciBhbnkgb3RoZXIgZ2VuZXJhbC1wdXJwb3NlCisgICAgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uLCBzdWNoIGFzIFNIQS0yNTYsIGlzIG5vdCBzdWl0YWJsZSBmb3IgaGFzaGluZworICAgIHBhc3N3b3Jkcy4gIFNlZSBgQkxBS0UyIEZBUSA8aHR0cHM6Ly9ibGFrZTIubmV0LyNxYT5gXyBmb3IgbW9yZQorICAgIGluZm9ybWF0aW9uLgorLi4KKworICAgID4+PiBpbXBvcnQgb3MKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IG1zZyA9IGInc29tZSBtZXNzYWdlJworICAgID4+PiAjIENhbGN1bGF0ZSB0aGUgZmlyc3QgaGFzaCB3aXRoIGEgcmFuZG9tIHNhbHQuCisgICAgPj4+IHNhbHQxID0gb3MudXJhbmRvbShibGFrZTJiLlNBTFRfU0laRSkKKyAgICA+Pj4gaDEgPSBibGFrZTJiKHNhbHQ9c2FsdDEpCisgICAgPj4+IGgxLnVwZGF0ZShtc2cpCisgICAgPj4+ICMgQ2FsY3VsYXRlIHRoZSBzZWNvbmQgaGFzaCB3aXRoIGEgZGlmZmVyZW50IHJhbmRvbSBzYWx0LgorICAgID4+PiBzYWx0MiA9IG9zLnVyYW5kb20oYmxha2UyYi5TQUxUX1NJWkUpCisgICAgPj4+IGgyID0gYmxha2UyYihzYWx0PXNhbHQyKQorICAgID4+PiBoMi51cGRhdGUobXNnKQorICAgID4+PiAjIFRoZSBkaWdlc3RzIGFyZSBkaWZmZXJlbnQuCisgICAgPj4+IGgxLmRpZ2VzdCgpICE9IGgyLmRpZ2VzdCgpCisgICAgVHJ1ZQorCisKK1BlcnNvbmFsaXphdGlvbgorLS0tLS0tLS0tLS0tLS0tCisKK1NvbWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gZm9yY2UgaGFzaCBmdW5jdGlvbiB0byBwcm9kdWNlIGRpZmZlcmVudCBkaWdlc3RzIGZvcgordGhlIHNhbWUgaW5wdXQgZm9yIGRpZmZlcmVudCBwdXJwb3Nlcy4gUXVvdGluZyB0aGUgYXV0aG9ycyBvZiB0aGUgU2tlaW4gaGFzaAorZnVuY3Rpb246CisKKyAgICBXZSByZWNvbW1lbmQgdGhhdCBhbGwgYXBwbGljYXRpb24gZGVzaWduZXJzIHNlcmlvdXNseSBjb25zaWRlciBkb2luZyB0aGlzOworICAgIHdlIGhhdmUgc2VlbiBtYW55IHByb3RvY29scyB3aGVyZSBhIGhhc2ggdGhhdCBpcyBjb21wdXRlZCBpbiBvbmUgcGFydCBvZgorICAgIHRoZSBwcm90b2NvbCBjYW4gYmUgdXNlZCBpbiBhbiBlbnRpcmVseSBkaWZmZXJlbnQgcGFydCBiZWNhdXNlIHR3byBoYXNoCisgICAgY29tcHV0YXRpb25zIHdlcmUgZG9uZSBvbiBzaW1pbGFyIG9yIHJlbGF0ZWQgZGF0YSwgYW5kIHRoZSBhdHRhY2tlciBjYW4KKyAgICBmb3JjZSB0aGUgYXBwbGljYXRpb24gdG8gbWFrZSB0aGUgaGFzaCBpbnB1dHMgdGhlIHNhbWUuIFBlcnNvbmFsaXppbmcgZWFjaAorICAgIGhhc2ggZnVuY3Rpb24gdXNlZCBpbiB0aGUgcHJvdG9jb2wgc3VtbWFyaWx5IHN0b3BzIHRoaXMgdHlwZSBvZiBhdHRhY2suCisKKyAgICAoYFRoZSBTa2VpbiBIYXNoIEZ1bmN0aW9uIEZhbWlseQorICAgIDxodHRwOi8vd3d3LnNrZWluLWhhc2guaW5mby9zaXRlcy9kZWZhdWx0L2ZpbGVzL3NrZWluMS4zLnBkZj5gXywKKyAgICBwLiAyMSkKKworQkxBS0UyIGNhbiBiZSBwZXJzb25hbGl6ZWQgYnkgcGFzc2luZyBieXRlcyB0byB0aGUgKnBlcnNvbiogYXJndW1lbnQ6OgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBGSUxFU19IQVNIX1BFUlNPTiA9IGInTXlBcHAgRmlsZXMgSGFzaCcKKyAgICA+Pj4gQkxPQ0tfSEFTSF9QRVJTT04gPSBiJ015QXBwIEJsb2NrIEhhc2gnCisgICAgPj4+IGggPSBibGFrZTJiKGRpZ2VzdF9zaXplPTMyLCBwZXJzb249RklMRVNfSEFTSF9QRVJTT04pCisgICAgPj4+IGgudXBkYXRlKGIndGhlIHNhbWUgY29udGVudCcpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnMjBkOWNkMDI0ZDRmYjA4NmFhZTgxOWExNDMyZGQyNDY2ZGUxMjk0NzgzMWI3NWM1YTMwY2YyNjc2MDk1ZDNiNCcKKyAgICA+Pj4gaCA9IGJsYWtlMmIoZGlnZXN0X3NpemU9MzIsIHBlcnNvbj1CTE9DS19IQVNIX1BFUlNPTikKKyAgICA+Pj4gaC51cGRhdGUoYid0aGUgc2FtZSBjb250ZW50JykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICdjZjY4ZmI1NzYxYjljNDRlNzg3OGJmYjJjNGM5YWVhNTIyNjRhODBiNzUwMDVlNjU2MTk3NzhkZTU5ZjM4M2EzJworCitQZXJzb25hbGl6YXRpb24gdG9nZXRoZXIgd2l0aCB0aGUga2V5ZWQgbW9kZSBjYW4gYWxzbyBiZSB1c2VkIHRvIGRlcml2ZSBkaWZmZXJlbnQKK2tleXMgZnJvbSBhIHNpbmdsZSBvbmUuCisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJzCisgICAgPj4+IGZyb20gYmFzZTY0IGltcG9ydCBiNjRkZWNvZGUsIGI2NGVuY29kZQorICAgID4+PiBvcmlnX2tleSA9IGI2NGRlY29kZShiJ1JtNUVQSmFpNzJxY0szUkdCcFczdlBOZlp5NU9ab3RoWStrSFk2aDIxS009JykKKyAgICA+Pj4gZW5jX2tleSA9IGJsYWtlMnMoa2V5PW9yaWdfa2V5LCBwZXJzb249YidrRW5jcnlwdCcpLmRpZ2VzdCgpCisgICAgPj4+IG1hY19rZXkgPSBibGFrZTJzKGtleT1vcmlnX2tleSwgcGVyc29uPWIna01BQycpLmRpZ2VzdCgpCisgICAgPj4+IHByaW50KGI2NGVuY29kZShlbmNfa2V5KS5kZWNvZGUoJ3V0Zi04JykpCisgICAgcmJQYjE1Uy9aOXQrYWdmZm5vNXd1aEI3N1ZiUmk2RjlJdjJxSXhVN1dIdz0KKyAgICA+Pj4gcHJpbnQoYjY0ZW5jb2RlKG1hY19rZXkpLmRlY29kZSgndXRmLTgnKSkKKyAgICBHOUd0SEZFMVlsdVhZMXpXUGxZazFlL25XZnUwV1NFYjBLUmNqaERlUC9vPQorCitUcmVlIG1vZGUKKy0tLS0tLS0tLQorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBoYXNoaW5nIGEgbWluaW1hbCB0cmVlIHdpdGggdHdvIGxlYWYgbm9kZXM6OgorCisgICAgICAgMTAKKyAgICAgIC8gIFwKKyAgICAgMDAgIDAxCisKK1RoaXMgZXhhbXBsZSB1c2VzIDY0LWJ5dGUgaW50ZXJuYWwgZGlnZXN0cywgYW5kIHJldHVybnMgdGhlIDMyLWJ5dGUgZmluYWwKK2RpZ2VzdDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+CisgICAgPj4+IEZBTk9VVCA9IDIKKyAgICA+Pj4gREVQVEggPSAyCisgICAgPj4+IExFQUZfU0laRSA9IDQwOTYKKyAgICA+Pj4gSU5ORVJfU0laRSA9IDY0CisgICAgPj4+CisgICAgPj4+IGJ1ZiA9IGJ5dGVhcnJheSg2MDAwKQorICAgID4+PgorICAgID4+PiAjIExlZnQgbGVhZgorICAgIC4uLiBoMDAgPSBibGFrZTJiKGJ1ZlswOkxFQUZfU0laRV0sIGZhbm91dD1GQU5PVVQsIGRlcHRoPURFUFRILAorICAgIC4uLiAgICAgICAgICAgICAgIGxlYWZfc2l6ZT1MRUFGX1NJWkUsIGlubmVyX3NpemU9SU5ORVJfU0laRSwKKyAgICAuLi4gICAgICAgICAgICAgICBub2RlX29mZnNldD0wLCBub2RlX2RlcHRoPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKyAgICA+Pj4gIyBSaWdodCBsZWFmCisgICAgLi4uIGgwMSA9IGJsYWtlMmIoYnVmW0xFQUZfU0laRTpdLCBmYW5vdXQ9RkFOT1VULCBkZXB0aD1ERVBUSCwKKyAgICAuLi4gICAgICAgICAgICAgICBsZWFmX3NpemU9TEVBRl9TSVpFLCBpbm5lcl9zaXplPUlOTkVSX1NJWkUsCisgICAgLi4uICAgICAgICAgICAgICAgbm9kZV9vZmZzZXQ9MSwgbm9kZV9kZXB0aD0wLCBsYXN0X25vZGU9VHJ1ZSkKKyAgICA+Pj4gIyBSb290IG5vZGUKKyAgICAuLi4gaDEwID0gYmxha2UyYihkaWdlc3Rfc2l6ZT0zMiwgZmFub3V0PUZBTk9VVCwgZGVwdGg9REVQVEgsCisgICAgLi4uICAgICAgICAgICAgICAgbGVhZl9zaXplPUxFQUZfU0laRSwgaW5uZXJfc2l6ZT1JTk5FUl9TSVpFLAorICAgIC4uLiAgICAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTAsIG5vZGVfZGVwdGg9MSwgbGFzdF9ub2RlPVRydWUpCisgICAgPj4+IGgxMC51cGRhdGUoaDAwLmRpZ2VzdCgpKQorICAgID4+PiBoMTAudXBkYXRlKGgwMS5kaWdlc3QoKSkKKyAgICA+Pj4gaDEwLmhleGRpZ2VzdCgpCisgICAgJzNhZDJhOWIzN2M2MDcwZTM3NGM3YThjNTA4ZmUyMGNhODZiNmVkNTRlMjg2ZTkzYTAzMThlOTVlODgxZGI1YWEnCisKK0NyZWRpdHMKKz09PT09PT0KKworQkxBS0UyXyB3YXMgZGVzaWduZWQgYnkgKkplYW4tUGhpbGlwcGUgQXVtYXNzb24qLCAqU2FtdWVsIE5ldmVzKiwgKlpvb2tvCitXaWxjb3gtTydIZWFybiosIGFuZCAqQ2hyaXN0aWFuIFdpbm5lcmxlaW4qIGJhc2VkIG9uIFNIQS0zXyBmaW5hbGlzdCBCTEFLRV8KK2NyZWF0ZWQgYnkgKkplYW4tUGhpbGlwcGUgQXVtYXNzb24qLCAqTHVjYSBIZW56ZW4qLCAqV2lsbGkgTWVpZXIqLCBhbmQKKypSYXBoYWVsIEMuLVcuIFBoYW4qLgorCitJdCB1c2VzIGNvcmUgYWxnb3JpdGhtIGZyb20gQ2hhQ2hhXyBjaXBoZXIgZGVzaWduZWQgYnkgKkRhbmllbCBKLiAgQmVybnN0ZWluKi4KKworVGhlIHN0ZGxpYiBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBweWJsYWtlMl8gbW9kdWxlLiBJdCB3YXMgd3JpdHRlbiBieQorKkRtaXRyeSBDaGVzdG55a2gqIGJhc2VkIG9uIEMgaW1wbGVtZW50YXRpb24gd3JpdHRlbiBieSAqU2FtdWVsIE5ldmVzKi4gVGhlCitkb2N1bWVudGF0aW9uIHdhcyBjb3BpZWQgZnJvbSBweWJsYWtlMl8gYW5kIHdyaXR0ZW4gYnkgKkRtaXRyeSBDaGVzdG55a2gqLgorCitUaGUgQyBjb2RlIHdhcyBwYXJ0bHkgcmV3cml0dGVuIGZvciBQeXRob24gYnkgKkNocmlzdGlhbiBIZWltZXMqLgorCitUaGUgZm9sbG93aW5nIHB1YmxpYyBkb21haW4gZGVkaWNhdGlvbiBhcHBsaWVzIGZvciBib3RoIEMgaGFzaCBmdW5jdGlvbgoraW1wbGVtZW50YXRpb24sIGV4dGVuc2lvbiBjb2RlLCBhbmQgdGhpcyBkb2N1bWVudGF0aW9uOgorCisgICBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGF1dGhvcihzKSBoYXZlIGRlZGljYXRlZCBhbGwgY29weXJpZ2h0CisgICBhbmQgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgc29mdHdhcmUgdG8gdGhlIHB1YmxpYyBkb21haW4KKyAgIHdvcmxkd2lkZS4gVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0IGFueSB3YXJyYW50eS4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgQ0MwIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbiBhbG9uZworICAgd2l0aCB0aGlzIHNvZnR3YXJlLiBJZiBub3QsIHNlZQorICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLy4KKworVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBoZWxwZWQgd2l0aCBkZXZlbG9wbWVudCBvciBjb250cmlidXRlZCB0aGVpciBjaGFuZ2VzCit0byB0aGUgcHJvamVjdCBhbmQgdGhlIHB1YmxpYyBkb21haW4gYWNjb3JkaW5nIHRvIHRoZSBDcmVhdGl2ZSBDb21tb25zIFB1YmxpYworRG9tYWluIERlZGljYXRpb24gMS4wIFVuaXZlcnNhbDoKKworKiAqQWxleGFuZHIgU29rb2xvdnNraXkqCisKKy4uIHNlZWFsc286OiBPZmZpY2lhbCBCTEFLRTIgd2Vic2l0ZTogaHR0cHM6Ly9ibGFrZTIubmV0CisKKy4uIF9SRkMtNzY5MzogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc2OTMKKy4uIF9CTEFLRTI6IGh0dHBzOi8vYmxha2UyLm5ldAorLi4gX0hNQUM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhc2gtYmFzZWRfbWVzc2FnZV9hdXRoZW50aWNhdGlvbl9jb2RlCisuLiBfQkxBS0U6IGh0dHBzOi8vMTMxMDAyLm5ldC9ibGFrZS8KKy4uIF9TSEEtMzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTklTVF9oYXNoX2Z1bmN0aW9uX2NvbXBldGl0aW9uCisuLiBfQ2hhQ2hhOiBodHRwczovL2NyLnlwLnRvL2NoYWNoYS5odG1sCisuLiBfcHlibGFrZTI6IGh0dHBzOi8vcHl0aG9uaG9zdGVkLm9yZy9weWJsYWtlMi8KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAppbmRleCBhMmU5NmNhLi4yY2IzYzc4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdApAQCAtNDQsOCArNDQsOCBAQAogLS0tLS0tLS0tLS0tLS0tCiAKIFRoZXJlIGlzIG9uZSBjb25zdHJ1Y3RvciBtZXRob2QgbmFtZWQgZm9yIGVhY2ggdHlwZSBvZiA6ZGZuOmBoYXNoYC4gIEFsbCByZXR1cm4KLWEgaGFzaCBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaW1wbGUgaW50ZXJmYWNlLiBGb3IgZXhhbXBsZTogdXNlIDpmdW5jOmBzaGExYCB0bwotY3JlYXRlIGEgU0hBMSBoYXNoIG9iamVjdC4gWW91IGNhbiBub3cgZmVlZCB0aGlzIG9iamVjdCB3aXRoIDp0ZXJtOmBieXRlcy1saWtlCithIGhhc2ggb2JqZWN0IHdpdGggdGhlIHNhbWUgc2ltcGxlIGludGVyZmFjZS4gRm9yIGV4YW1wbGU6IHVzZSA6ZnVuYzpgc2hhMjU2YCB0bworY3JlYXRlIGEgU0hBLTI1NiBoYXNoIG9iamVjdC4gWW91IGNhbiBub3cgZmVlZCB0aGlzIG9iamVjdCB3aXRoIDp0ZXJtOmBieXRlcy1saWtlCiBvYmplY3RzIDxieXRlcy1saWtlIG9iamVjdD5gIChub3JtYWxseSA6Y2xhc3M6YGJ5dGVzYCkgdXNpbmcgdGhlIDptZXRoOmB1cGRhdGVgIG1ldGhvZC4KIEF0IGFueSBwb2ludCB5b3UgY2FuIGFzayBpdCBmb3IgdGhlIDpkZm46YGRpZ2VzdGAgb2YgdGhlCiBjb25jYXRlbmF0aW9uIG9mIHRoZSBkYXRhIGZlZCB0byBpdCBzbyBmYXIgdXNpbmcgdGhlIDptZXRoOmBkaWdlc3RgIG9yCkBAIC02NCwyMSArNjQsMzMgQEAKIC4uIGluZGV4Ojogc2luZ2xlOiBPcGVuU1NMOyAodXNlIGluIG1vZHVsZSBoYXNobGliKQogCiBDb25zdHJ1Y3RvcnMgZm9yIGhhc2ggYWxnb3JpdGhtcyB0aGF0IGFyZSBhbHdheXMgcHJlc2VudCBpbiB0aGlzIG1vZHVsZSBhcmUKLTpmdW5jOmBtZDVgLCA6ZnVuYzpgc2hhMWAsIDpmdW5jOmBzaGEyMjRgLCA6ZnVuYzpgc2hhMjU2YCwgOmZ1bmM6YHNoYTM4NGAsCi1hbmQgOmZ1bmM6YHNoYTUxMmAuIEFkZGl0aW9uYWwgYWxnb3JpdGhtcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUgZGVwZW5kaW5nIHVwb24KLXRoZSBPcGVuU1NMIGxpYnJhcnkgdGhhdCBQeXRob24gdXNlcyBvbiB5b3VyIHBsYXRmb3JtLgorOmZ1bmM6YHNoYTFgLCA6ZnVuYzpgc2hhMjI0YCwgOmZ1bmM6YHNoYTI1NmAsIDpmdW5jOmBzaGEzODRgLAorOmZ1bmM6YHNoYTUxMmAsIDpmdW5jOmBibGFrZTJiYCwgYW5kIDpmdW5jOmBibGFrZTJzYC4KKzpmdW5jOmBtZDVgIGlzIG5vcm1hbGx5IGF2YWlsYWJsZSBhcyB3ZWxsLCB0aG91Z2ggaXQKK21heSBiZSBtaXNzaW5nIGlmIHlvdSBhcmUgdXNpbmcgYSByYXJlICJGSVBTIGNvbXBsaWFudCIgYnVpbGQgb2YgUHl0aG9uLgorQWRkaXRpb25hbCBhbGdvcml0aG1zIG1heSBhbHNvIGJlIGF2YWlsYWJsZSBkZXBlbmRpbmcgdXBvbiB0aGUgT3BlblNTTAorbGlicmFyeSB0aGF0IFB5dGhvbiB1c2VzIG9uIHlvdXIgcGxhdGZvcm0uIE9uIG1vc3QgcGxhdGZvcm1zIHRoZQorOmZ1bmM6YHNoYTNfMjI0YCwgOmZ1bmM6YHNoYTNfMjU2YCwgOmZ1bmM6YHNoYTNfMzg0YCwgOmZ1bmM6YHNoYTNfNTEyYCwKKzpmdW5jOmBzaGFrZV8xMjhgLCA6ZnVuYzpgc2hha2VfMjU2YCBhcmUgYWxzbyBhdmFpbGFibGUuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgU0hBMyAoS2VjY2FrKSBhbmQgU0hBS0UgY29uc3RydWN0b3JzIDpmdW5jOmBzaGEzXzIyNGAsIDpmdW5jOmBzaGEzXzI1NmAsCisgICA6ZnVuYzpgc2hhM18zODRgLCA6ZnVuYzpgc2hhM181MTJgLCA6ZnVuYzpgc2hha2VfMTI4YCwgOmZ1bmM6YHNoYWtlXzI1NmAuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgOmZ1bmM6YGJsYWtlMmJgIGFuZCA6ZnVuYzpgYmxha2Uyc2Agd2VyZSBhZGRlZC4KIAogRm9yIGV4YW1wbGUsIHRvIG9idGFpbiB0aGUgZGlnZXN0IG9mIHRoZSBieXRlIHN0cmluZyBgYGInTm9ib2R5IGluc3BlY3RzIHRoZQogc3BhbW1pc2ggcmVwZXRpdGlvbidgYDo6CiAKICAgID4+PiBpbXBvcnQgaGFzaGxpYgotICAgPj4+IG0gPSBoYXNobGliLm1kNSgpCisgICA+Pj4gbSA9IGhhc2hsaWIuc2hhMjU2KCkKICAgID4+PiBtLnVwZGF0ZShiIk5vYm9keSBpbnNwZWN0cyIpCiAgICA+Pj4gbS51cGRhdGUoYiIgdGhlIHNwYW1taXNoIHJlcGV0aXRpb24iKQogICAgPj4+IG0uZGlnZXN0KCkKLSAgIGInXHhiYmRceDljXHg4M1x4ZGRceDFlXHhhNVx4YzlceGQ5XHhkZVx4YzlceGExXHg4ZFx4ZjBceGZmXHhlOScKKyAgIGInXHgwM1x4MWVceGRkfUFlXHgxNVx4OTNceGM1XHhmZVxcXHgwMG9ceGE1dSs3XHhmZFx4ZGZceGY3XHhiY05ceDg0Olx4YTZceGFmXHgwY1x4OTVceDBmS1x4OTRceDA2JwogICAgPj4+IG0uZGlnZXN0X3NpemUKLSAgIDE2CisgICAzMgogICAgPj4+IG0uYmxvY2tfc2l6ZQogICAgNjQKIApAQCAtMTA3LDcgKzExOSw5IEBACiAuLiBkYXRhOjogYWxnb3JpdGhtc19ndWFyYW50ZWVkCiAKICAgIEEgc2V0IGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBoYXNoIGFsZ29yaXRobXMgZ3VhcmFudGVlZCB0byBiZSBzdXBwb3J0ZWQKLSAgIGJ5IHRoaXMgbW9kdWxlIG9uIGFsbCBwbGF0Zm9ybXMuCisgICBieSB0aGlzIG1vZHVsZSBvbiBhbGwgcGxhdGZvcm1zLiAgTm90ZSB0aGF0ICdtZDUnIGlzIGluIHRoaXMgbGlzdCBkZXNwaXRlCisgICBzb21lIHVwc3RyZWFtIHZlbmRvcnMgb2ZmZXJpbmcgYW4gb2RkICJGSVBTIGNvbXBsaWFudCIgUHl0aG9uIGJ1aWxkIHRoYXQKKyAgIGV4Y2x1ZGVzIGl0LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMTgxLDYgKzE5NSwyOCBAQAogICAgY29tcHV0ZSB0aGUgZGlnZXN0cyBvZiBkYXRhIHNoYXJpbmcgYSBjb21tb24gaW5pdGlhbCBzdWJzdHJpbmcuCiAKIAorU0hBS0UgdmFyaWFibGUgbGVuZ3RoIGRpZ2VzdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6ZnVuYzpgc2hha2VfMTI4YCBhbmQgOmZ1bmM6YHNoYWtlXzI1NmAgYWxnb3JpdGhtcyBwcm92aWRlIHZhcmlhYmxlCitsZW5ndGggZGlnZXN0cyB3aXRoIGxlbmd0aF9pbl9iaXRzLy8yIHVwIHRvIDEyOCBvciAyNTYgYml0cyBvZiBzZWN1cml0eS4KK0FzIHN1Y2gsIHRoZWlyIGRpZ2VzdCBtZXRob2RzIHJlcXVpcmUgYSBsZW5ndGguIE1heGltdW0gbGVuZ3RoIGlzIG5vdCBsaW1pdGVkCitieSB0aGUgU0hBS0UgYWxnb3JpdGhtLgorCisuLiBtZXRob2Q6OiBzaGFrZS5kaWdlc3QobGVuZ3RoKQorCisgICBSZXR1cm4gdGhlIGRpZ2VzdCBvZiB0aGUgZGF0YSBwYXNzZWQgdG8gdGhlIDptZXRoOmB1cGRhdGVgIG1ldGhvZCBzbyBmYXIuCisgICBUaGlzIGlzIGEgYnl0ZXMgb2JqZWN0IG9mIHNpemUgYGBsZW5ndGhgYCB3aGljaCBtYXkgY29udGFpbiBieXRlcyBpbgorICAgdGhlIHdob2xlIHJhbmdlIGZyb20gMCB0byAyNTUuCisKKworLi4gbWV0aG9kOjogc2hha2UuaGV4ZGlnZXN0KGxlbmd0aCkKKworICAgTGlrZSA6bWV0aDpgZGlnZXN0YCBleGNlcHQgdGhlIGRpZ2VzdCBpcyByZXR1cm5lZCBhcyBhIHN0cmluZyBvYmplY3Qgb2YKKyAgIGRvdWJsZSBsZW5ndGgsIGNvbnRhaW5pbmcgb25seSBoZXhhZGVjaW1hbCBkaWdpdHMuICBUaGlzIG1heSBiZSB1c2VkIHRvCisgICBleGNoYW5nZSB0aGUgdmFsdWUgc2FmZWx5IGluIGVtYWlsIG9yIG90aGVyIG5vbi1iaW5hcnkgZW52aXJvbm1lbnRzLgorCisKIEtleSBkZXJpdmF0aW9uCiAtLS0tLS0tLS0tLS0tLQogCkBAIC0yMjEsNiArMjU3LDI5IEBACiAgICAgICBQeXRob24gaW1wbGVtZW50YXRpb24gdXNlcyBhbiBpbmxpbmUgdmVyc2lvbiBvZiA6bW9kOmBobWFjYC4gSXQgaXMgYWJvdXQKICAgICAgIHRocmVlIHRpbWVzIHNsb3dlciBhbmQgZG9lc24ndCByZWxlYXNlIHRoZSBHSUwuCiAKKy4uIGZ1bmN0aW9uOjogc2NyeXB0KHBhc3N3b3JkLCAqLCBzYWx0LCBuLCByLCBwLCBtYXhtZW09MCwgZGtsZW49NjQpCisKKyAgIFRoZSBmdW5jdGlvbiBwcm92aWRlcyBzY3J5cHQgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gYXMKKyAgIGRlZmluZWQgaW4gOnJmYzpgNzkxNGAuCisKKyAgICpwYXNzd29yZCogYW5kICpzYWx0KiBtdXN0IGJlIGJ5dGVzLWxpa2Ugb2JqZWN0cy4gQXBwbGljYXRpb25zIGFuZAorICAgbGlicmFyaWVzIHNob3VsZCBsaW1pdCAqcGFzc3dvcmQqIHRvIGEgc2Vuc2libGUgbGVuZ3RoIChlLmcuIDEwMjQpLiAqc2FsdCoKKyAgIHNob3VsZCBiZSBhYm91dCAxNiBvciBtb3JlIGJ5dGVzIGZyb20gYSBwcm9wZXIgc291cmNlLCBlLmcuIDpmdW5jOmBvcy51cmFuZG9tYC4KKworICAgKm4qIGlzIHRoZSBDUFUvTWVtb3J5IGNvc3QgZmFjdG9yLCAqciogdGhlIGJsb2NrIHNpemUsICpwKiBwYXJhbGxlbGl6YXRpb24KKyAgIGZhY3RvciBhbmQgKm1heG1lbSogbGltaXRzIG1lbW9yeSAoT3BlblNTTCAxLjEuMCBkZWZhdWx0cyB0byAzMiBNQikuCisgICAqZGtsZW4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIGRlcml2ZWQga2V5LgorCisgICBBdmFpbGFiaWxpdHk6IE9wZW5TU0wgMS4xKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCitCTEFLRTIKKy0tLS0tLQorCitCTEFLRTIgdGFrZXMgYWRkaXRpb25hbCBhcmd1bWVudHMsIHNlZSA6cmVmOmBoYXNobGliLWJsYWtlMmAuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIzMCw2ICsyODksOCBAQAogICAgTW9kdWxlIDptb2Q6YGJhc2U2NGAKICAgICAgIEFub3RoZXIgd2F5IHRvIGVuY29kZSBiaW5hcnkgaGFzaGVzIGZvciBub24tYmluYXJ5IGVudmlyb25tZW50cy4KIAorICAgU2VlIDpyZWY6YGhhc2hsaWItYmxha2UyYC4KKwogICAgaHR0cDovL2NzcmMubmlzdC5nb3YvcHVibGljYXRpb25zL2ZpcHMvZmlwczE4MC0yL2ZpcHMxODAtMi5wZGYKICAgICAgIFRoZSBGSVBTIDE4MC0yIHB1YmxpY2F0aW9uIG9uIFNlY3VyZSBIYXNoIEFsZ29yaXRobXMuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAppbmRleCBkODYzZmU5Li4xN2YyODlkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CkBAIC02OSwxMyArNjksNiBAQAogICAgbXVzdCBiZSBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIHZhcmlvdXMgU1NMCiAgICBvcHRpb25zLgogCi0gICAqa2V5X2ZpbGUqIGFuZCAqY2VydF9maWxlKiBhcmUgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZQotICAgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0Ci0gICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQotICAgY2VydGlmaWNhdGVzIGZvciB5b3UuICBUaGUgKmNoZWNrX2hvc3RuYW1lKiBwYXJhbWV0ZXIgaXMgYWxzbyBkZXByZWNhdGVkOyB0aGUKLSAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYXR0cmlidXRlIG9mICpjb250ZXh0KiBzaG91bGQgYmUgdXNlZAotICAgaW5zdGVhZC4KLQogICAgUGxlYXNlIHJlYWQgOnJlZjpgc3NsLXNlY3VyaXR5YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBiZXN0IHByYWN0aWNlcy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKQEAgLTk1LDYgKzg4LDE3IEBACiAgICAgICA6ZnVuYzpgc3NsLl9jcmVhdGVfdW52ZXJpZmllZF9jb250ZXh0YCBjYW4gYmUgcGFzc2VkIHRvIHRoZSAqY29udGV4dCoKICAgICAgIHBhcmFtZXRlci4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleV9maWxlKiBhbmQgKmNlcnRfZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKworICAgICAgIFRoZSAqY2hlY2tfaG9zdG5hbWUqIHBhcmFtZXRlciBpcyBhbHNvIGRlcHJlY2F0ZWQ7IHRoZQorICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYXR0cmlidXRlIG9mICpjb250ZXh0KiBzaG91bGQKKyAgICAgICBiZSB1c2VkIGluc3RlYWQuCisKIAogLi4gY2xhc3M6OiBIVFRQUmVzcG9uc2Uoc29jaywgZGVidWdsZXZlbD0wLCBtZXRob2Q9Tm9uZSwgdXJsPU5vbmUpCiAKQEAgLTIxNywzOSArMjIxLDYxIEBACiA6Y2xhc3M6YEhUVFBDb25uZWN0aW9uYCBpbnN0YW5jZXMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CiAKIAotLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24ucmVxdWVzdChtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9KQorLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24ucmVxdWVzdChtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9LCAqLCBcCisgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1GYWxzZSkKIAogICAgVGhpcyB3aWxsIHNlbmQgYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIEhUVFAgcmVxdWVzdAogICAgbWV0aG9kICptZXRob2QqIGFuZCB0aGUgc2VsZWN0b3IgKnVybCouCiAKICAgIElmICpib2R5KiBpcyBzcGVjaWZpZWQsIHRoZSBzcGVjaWZpZWQgZGF0YSBpcyBzZW50IGFmdGVyIHRoZSBoZWFkZXJzIGFyZQotICAgZmluaXNoZWQuICBJdCBtYXkgYmUgYSBzdHJpbmcsIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCwgYW4gb3BlbgotICAgOnRlcm06YGZpbGUgb2JqZWN0YCwgb3IgYW4gaXRlcmFibGUgb2YgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YFxzLiAgSWYKLSAgICpib2R5KiBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZCBhcyBJU08tODg1OS0xLCB0aGUgZGVmYXVsdCBmb3IgSFRUUC4gIElmCi0gICBpdCBpcyBhIGJ5dGVzLWxpa2Ugb2JqZWN0IHRoZSBieXRlcyBhcmUgc2VudCBhcyBpcy4gIElmIGl0IGlzIGEgOnRlcm06YGZpbGUKLSAgIG9iamVjdGAsIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBpcyBzZW50OyB0aGlzIGZpbGUgb2JqZWN0IHNob3VsZCBzdXBwb3J0Ci0gICBhdCBsZWFzdCB0aGUgYGByZWFkKClgYCBtZXRob2QuICBJZiB0aGUgZmlsZSBvYmplY3QgaGFzIGEgYGBtb2RlYGAKLSAgIGF0dHJpYnV0ZSwgdGhlIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGBgcmVhZCgpYGAgbWV0aG9kIHdpbGwgYmUgZW5jb2RlZCBhcwotICAgSVNPLTg4NTktMSB1bmxlc3MgdGhlIGBgbW9kZWBgIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgc3Vic3RyaW5nIGBgYmBgLAotICAgb3RoZXJ3aXNlIHRoZSBkYXRhIHJldHVybmVkIGJ5IGBgcmVhZCgpYGAgaXMgc2VudCBhcyBpcy4gIElmICpib2R5KiBpcyBhbgotICAgaXRlcmFibGUsIHRoZSBlbGVtZW50cyBvZiB0aGUgaXRlcmFibGUgYXJlIHNlbnQgYXMgaXMgdW50aWwgdGhlIGl0ZXJhYmxlIGlzCi0gICBleGhhdXN0ZWQuCisgICBmaW5pc2hlZC4gIEl0IG1heSBiZSBhIDpjbGFzczpgc3RyYCwgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLCBhbgorICAgb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLCBvciBhbiBpdGVyYWJsZSBvZiA6Y2xhc3M6YGJ5dGVzYC4gIElmICpib2R5KgorICAgaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQgYXMgSVNPLTg4NTktMSwgdGhlIGRlZmF1bHQgZm9yIEhUVFAuICBJZiBpdAorICAgaXMgYSBieXRlcy1saWtlIG9iamVjdCwgdGhlIGJ5dGVzIGFyZSBzZW50IGFzIGlzLiAgSWYgaXQgaXMgYSA6dGVybTpgZmlsZQorICAgb2JqZWN0YCwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGlzIHNlbnQ7IHRoaXMgZmlsZSBvYmplY3Qgc2hvdWxkCisgICBzdXBwb3J0IGF0IGxlYXN0IHRoZSBgYHJlYWQoKWBgIG1ldGhvZC4gIElmIHRoZSBmaWxlIG9iamVjdCBpcyBhbgorICAgaW5zdGFuY2Ugb2YgOmNsYXNzOmBpby5UZXh0SU9CYXNlYCwgdGhlIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGBgcmVhZCgpYGAKKyAgIG1ldGhvZCB3aWxsIGJlIGVuY29kZWQgYXMgSVNPLTg4NTktMSwgb3RoZXJ3aXNlIHRoZSBkYXRhIHJldHVybmVkIGJ5CisgICBgYHJlYWQoKWBgIGlzIHNlbnQgYXMgaXMuICBJZiAqYm9keSogaXMgYW4gaXRlcmFibGUsIHRoZSBlbGVtZW50cyBvZiB0aGUKKyAgIGl0ZXJhYmxlIGFyZSBzZW50IGFzIGlzIHVudGlsIHRoZSBpdGVyYWJsZSBpcyBleGhhdXN0ZWQuCiAKLSAgIFRoZSAqaGVhZGVycyogYXJndW1lbnQgc2hvdWxkIGJlIGEgbWFwcGluZyBvZiBleHRyYSBIVFRQCi0gICBoZWFkZXJzIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC4KKyAgIFRoZSAqaGVhZGVycyogYXJndW1lbnQgc2hvdWxkIGJlIGEgbWFwcGluZyBvZiBleHRyYSBIVFRQIGhlYWRlcnMgdG8gc2VuZAorICAgd2l0aCB0aGUgcmVxdWVzdC4KIAotICAgSWYgKmhlYWRlcnMqIGRvZXMgbm90IGNvbnRhaW4gYSBDb250ZW50LUxlbmd0aCBpdGVtLCBvbmUgaXMgYWRkZWQKLSAgIGF1dG9tYXRpY2FsbHkgaWYgcG9zc2libGUuICBJZiAqYm9keSogaXMgYGBOb25lYGAsIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIKLSAgIGlzIHNldCB0byBgYDBgYCBmb3IgbWV0aG9kcyB0aGF0IGV4cGVjdCBhIGJvZHkgKGBgUFVUYGAsIGBgUE9TVGBgLCBhbmQKLSAgIGBgUEFUQ0hgYCkuICBJZiAqYm9keSogaXMgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0LCB0aGUgQ29udGVudC1MZW5ndGgKLSAgIGhlYWRlciBpcyBzZXQgdG8gaXRzIGxlbmd0aC4gIElmICpib2R5KiBpcyBhIDp0ZXJtOmBmaWxlIG9iamVjdGAgYW5kIGl0Ci0gICB3b3JrcyB0byBjYWxsIDpmdW5jOmB+b3MuZnN0YXRgIG9uIHRoZSByZXN1bHQgb2YgaXRzIGBgZmlsZW5vKClgYCBtZXRob2QsCi0gICB0aGVuIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMgc2V0IHRvIHRoZSBgYHN0X3NpemVgYCByZXBvcnRlZCBieSB0aGUKLSAgIGBgZnN0YXRgYCBjYWxsLiAgT3RoZXJ3aXNlIG5vIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpcyBhZGRlZC4KKyAgIElmICpoZWFkZXJzKiBjb250YWlucyBuZWl0aGVyIENvbnRlbnQtTGVuZ3RoIG5vciBUcmFuc2Zlci1FbmNvZGluZywKKyAgIGJ1dCB0aGVyZSBpcyBhIHJlcXVlc3QgYm9keSwgb25lIG9mIHRob3NlCisgICBoZWFkZXIgZmllbGRzIHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS4gIElmCisgICAqYm9keSogaXMgYGBOb25lYGAsIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMgc2V0IHRvIGBgMGBgIGZvcgorICAgbWV0aG9kcyB0aGF0IGV4cGVjdCBhIGJvZHkgKGBgUFVUYGAsIGBgUE9TVGBgLCBhbmQgYGBQQVRDSGBgKS4gIElmCisgICAqYm9keSogaXMgYSBzdHJpbmcgb3IgYSBieXRlcy1saWtlIG9iamVjdCB0aGF0IGlzIG5vdCBhbHNvIGEKKyAgIDp0ZXJtOmBmaWxlIDxmaWxlIG9iamVjdD5gLCB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGlzCisgICBzZXQgdG8gaXRzIGxlbmd0aC4gIEFueSBvdGhlciB0eXBlIG9mICpib2R5KiAoZmlsZXMKKyAgIGFuZCBpdGVyYWJsZXMgaW4gZ2VuZXJhbCkgd2lsbCBiZSBjaHVuay1lbmNvZGVkLCBhbmQgdGhlCisgICBUcmFuc2Zlci1FbmNvZGluZyBoZWFkZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHNldCBpbnN0ZWFkIG9mCisgICBDb250ZW50LUxlbmd0aC4KKworICAgVGhlICplbmNvZGVfY2h1bmtlZCogYXJndW1lbnQgaXMgb25seSByZWxldmFudCBpZiBUcmFuc2Zlci1FbmNvZGluZyBpcworICAgc3BlY2lmaWVkIGluICpoZWFkZXJzKi4gIElmICplbmNvZGVfY2h1bmtlZCogaXMgYGBGYWxzZWBgLCB0aGUKKyAgIEhUVFBDb25uZWN0aW9uIG9iamVjdCBhc3N1bWVzIHRoYXQgYWxsIGVuY29kaW5nIGlzIGhhbmRsZWQgYnkgdGhlCisgICBjYWxsaW5nIGNvZGUuICBJZiBpdCBpcyBgYFRydWVgYCwgdGhlIGJvZHkgd2lsbCBiZSBjaHVuay1lbmNvZGVkLgorCisgICAuLiBub3RlOjoKKyAgICAgIENodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIEhUVFAgcHJvdG9jb2wKKyAgICAgIHZlcnNpb24gMS4xLiAgVW5sZXNzIHRoZSBIVFRQIHNlcnZlciBpcyBrbm93biB0byBoYW5kbGUgSFRUUCAxLjEsCisgICAgICB0aGUgY2FsbGVyIG11c3QgZWl0aGVyIHNwZWNpZnkgdGhlIENvbnRlbnQtTGVuZ3RoLCBvciBtdXN0IHBhc3MgYQorICAgICAgOmNsYXNzOmBzdHJgIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0IHRoYXQgaXMgbm90IGFsc28gYSBmaWxlIGFzIHRoZQorICAgICAgYm9keSByZXByZXNlbnRhdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAgICAgICAqYm9keSogY2FuIG5vdyBiZSBhbiBpdGVyYWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIElmIG5laXRoZXIgQ29udGVudC1MZW5ndGggbm9yIFRyYW5zZmVyLUVuY29kaW5nIGFyZSBzZXQgaW4KKyAgICAgICpoZWFkZXJzKiwgZmlsZSBhbmQgaXRlcmFibGUgKmJvZHkqIG9iamVjdHMgYXJlIG5vdyBjaHVuay1lbmNvZGVkLgorICAgICAgVGhlICplbmNvZGVfY2h1bmtlZCogYXJndW1lbnQgd2FzIGFkZGVkLgorICAgICAgTm8gYXR0ZW1wdCBpcyBtYWRlIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1MZW5ndGggZm9yIGZpbGUKKyAgICAgIG9iamVjdHMuCisKIC4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLmdldHJlc3BvbnNlKCkKIAogICAgU2hvdWxkIGJlIGNhbGxlZCBhZnRlciBhIHJlcXVlc3QgaXMgc2VudCB0byBnZXQgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KQEAgLTMzNSwxMyArMzYxLDMyIEBACiAgICBhbiBhcmd1bWVudC4KIAogCi0uLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5lbmRoZWFkZXJzKG1lc3NhZ2VfYm9keT1Ob25lKQorLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uZW5kaGVhZGVycyhtZXNzYWdlX2JvZHk9Tm9uZSwgKiwgZW5jb2RlX2NodW5rZWQ9RmFsc2UpCiAKICAgIFNlbmQgYSBibGFuayBsaW5lIHRvIHRoZSBzZXJ2ZXIsIHNpZ25hbGxpbmcgdGhlIGVuZCBvZiB0aGUgaGVhZGVycy4gVGhlCiAgICBvcHRpb25hbCAqbWVzc2FnZV9ib2R5KiBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwYXNzIGEgbWVzc2FnZSBib2R5Ci0gICBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuICBUaGUgbWVzc2FnZSBib2R5IHdpbGwgYmUgc2VudCBpbiB0aGUgc2FtZQotICAgcGFja2V0IGFzIHRoZSBtZXNzYWdlIGhlYWRlcnMgaWYgaXQgaXMgc3RyaW5nLCBvdGhlcndpc2UgaXQgaXMgc2VudCBpbiBhCi0gICBzZXBhcmF0ZSBwYWNrZXQuCisgICBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuCisKKyAgIElmICplbmNvZGVfY2h1bmtlZCogaXMgYGBUcnVlYGAsIHRoZSByZXN1bHQgb2YgZWFjaCBpdGVyYXRpb24gb2YKKyAgICptZXNzYWdlX2JvZHkqIHdpbGwgYmUgY2h1bmstZW5jb2RlZCBhcyBzcGVjaWZpZWQgaW4gOnJmYzpgNzIzMGAsCisgICBTZWN0aW9uIDMuMy4xLiAgSG93IHRoZSBkYXRhIGlzIGVuY29kZWQgaXMgZGVwZW5kZW50IG9uIHRoZSB0eXBlIG9mCisgICAqbWVzc2FnZV9ib2R5Ki4gIElmICptZXNzYWdlX2JvZHkqIGltcGxlbWVudHMgdGhlIDpyZWY6YGJ1ZmZlciBpbnRlcmZhY2UKKyAgIDxidWZmZXJvYmplY3RzPmAgdGhlIGVuY29kaW5nIHdpbGwgcmVzdWx0IGluIGEgc2luZ2xlIGNodW5rLgorICAgSWYgKm1lc3NhZ2VfYm9keSogaXMgYSA6Y2xhc3M6YGNvbGxlY3Rpb25zLkl0ZXJhYmxlYCwgZWFjaCBpdGVyYXRpb24KKyAgIG9mICptZXNzYWdlX2JvZHkqIHdpbGwgcmVzdWx0IGluIGEgY2h1bmsuICBJZiAqbWVzc2FnZV9ib2R5KiBpcyBhCisgICA6dGVybTpgZmlsZSBvYmplY3RgLCBlYWNoIGNhbGwgdG8gYGAucmVhZCgpYGAgd2lsbCByZXN1bHQgaW4gYSBjaHVuay4KKyAgIFRoZSBtZXRob2QgYXV0b21hdGljYWxseSBzaWduYWxzIHRoZSBlbmQgb2YgdGhlIGNodW5rLWVuY29kZWQgZGF0YQorICAgaW1tZWRpYXRlbHkgYWZ0ZXIgKm1lc3NhZ2VfYm9keSouCisKKyAgIC4uIG5vdGU6OiBEdWUgdG8gdGhlIGNodW5rZWQgZW5jb2Rpbmcgc3BlY2lmaWNhdGlvbiwgZW1wdHkgY2h1bmtzCisgICAgICB5aWVsZGVkIGJ5IGFuIGl0ZXJhdG9yIGJvZHkgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSBjaHVuay1lbmNvZGVyLgorICAgICAgVGhpcyBpcyB0byBhdm9pZCBwcmVtYXR1cmUgdGVybWluYXRpb24gb2YgdGhlIHJlYWQgb2YgdGhlIHJlcXVlc3QgYnkKKyAgICAgIHRoZSB0YXJnZXQgc2VydmVyIGR1ZSB0byBtYWxmb3JtZWQgZW5jb2RpbmcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQ2h1bmtlZCBlbmNvZGluZyBzdXBwb3J0LiAgVGhlICplbmNvZGVfY2h1bmtlZCogcGFyYW1ldGVyIHdhcworICAgICAgYWRkZWQuCisKIAogLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uc2VuZChkYXRhKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKaW5kZXggMTZjNGZhYy4uYzFlYTg3MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdApAQCAtOTgsOCArOTgsOCBAQAogCiAgICAuLiBhdHRyaWJ1dGU6OiByZmlsZQogCi0gICAgICBDb250YWlucyBhbiBpbnB1dCBzdHJlYW0sIHBvc2l0aW9uZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBvcHRpb25hbCBpbnB1dAotICAgICAgZGF0YS4KKyAgICAgIEFuIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIGlucHV0IHN0cmVhbSwgcmVhZHkgdG8gcmVhZCBmcm9tCisgICAgICB0aGUgc3RhcnQgb2YgdGhlIG9wdGlvbmFsIGlucHV0IGRhdGEuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IHdmaWxlCiAKQEAgLTEwNyw2ICsxMDcsOSBAQAogICAgICAgY2xpZW50LiBQcm9wZXIgYWRoZXJlbmNlIHRvIHRoZSBIVFRQIHByb3RvY29sIG11c3QgYmUgdXNlZCB3aGVuIHdyaXRpbmcgdG8KICAgICAgIHRoaXMgc3RyZWFtLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgVGhpcyBpcyBhbiA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCBzdHJlYW0uCisKICAgIDpjbGFzczpgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcmAgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKIAogICAgLi4gYXR0cmlidXRlOjogc2VydmVyX3ZlcnNpb24KQEAgLTM2OSwxMCArMzcyLDkgQEAKIAogICAgSGFuZGxlciA9IGh0dHAuc2VydmVyLlNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcgogCi0gICBodHRwZCA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKCIiLCBQT1JUKSwgSGFuZGxlcikKLQotICAgcHJpbnQoInNlcnZpbmcgYXQgcG9ydCIsIFBPUlQpCi0gICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoIiIsIFBPUlQpLCBIYW5kbGVyKSBhcyBodHRwZDoKKyAgICAgICBwcmludCgic2VydmluZyBhdCBwb3J0IiwgUE9SVCkKKyAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAogLi4gX2h0dHAtc2VydmVyLWNsaToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAppbmRleCBjMjVlN2Q4Li43MDI0YTFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdApAQCAtMTAzLDYgKzEwMywxNCBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKnNzbF9jb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKKwogVGhlIHNlY29uZCBzdWJjbGFzcyBhbGxvd3MgZm9yIGNvbm5lY3Rpb25zIGNyZWF0ZWQgYnkgYSBjaGlsZCBwcm9jZXNzOgogCiAKQEAgLTUwMCw2ICs1MDgsMTcgQEAKICAgICAgICAgIE0uc3RvcmUobnVtLCAnK0ZMQUdTJywgJ1xcRGVsZXRlZCcpCiAgICAgICBNLmV4cHVuZ2UoKQogCisgICAuLiBub3RlOjoKKworICAgICAgQ3JlYXRpbmcgZmxhZ3MgY29udGFpbmluZyAnXScgKGZvciBleGFtcGxlOiAiW3Rlc3RdIikgdmlvbGF0ZXMKKyAgICAgIDpyZmM6YDM1MDFgICh0aGUgSU1BUCBwcm90b2NvbCkuICBIb3dldmVyLCBpbWFwbGliIGhhcyBoaXN0b3JpY2FsbHkKKyAgICAgIGFsbG93ZWQgY3JlYXRpb24gb2Ygc3VjaCB0YWdzLCBhbmQgcG9wdWxhciBJTUFQIHNlcnZlcnMsIHN1Y2ggYXMgR21haWwsCisgICAgICBhY2NlcHQgYW5kIHByb2R1Y2Ugc3VjaCBmbGFncy4gIFRoZXJlIGFyZSBub24tUHl0aG9uIHByb2dyYW1zIHdoaWNoIGFsc28KKyAgICAgIGNyZWF0ZSBzdWNoIHRhZ3MuICBBbHRob3VnaCBpdCBpcyBhbiBSRkMgdmlvbGF0aW9uIGFuZCBJTUFQIGNsaWVudHMgYW5kCisgICAgICBzZXJ2ZXJzIGFyZSBzdXBwb3NlZCB0byBiZSBzdHJpY3QsIGltYXBsaWIgbm9uZXRoZWxlc3MgY29udGludWVzIHRvIGFsbG93CisgICAgICBzdWNoIHRhZ3MgdG8gYmUgY3JlYXRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbmQgYXMgb2YKKyAgICAgIHB5dGhvbiAzLjYsIGhhbmRsZXMgdGhlbSBpZiB0aGV5IGFyZSBzZW50IGZyb20gdGhlIHNlcnZlciwgc2luY2UgdGhpcworICAgICAgaW1wcm92ZXMgcmVhbC13b3JsZCBjb21wYXRpYmlsaXR5LgogCiAuLiBtZXRob2Q6OiBJTUFQNC5zdWJzY3JpYmUobWFpbGJveCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1naGRyLnJzdCBiL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKaW5kZXggZjExZjZkYy4uODAwZTkxOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1naGRyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CkBAIC0yMCw2ICsyMCw5IEBACiAgICBzdHJpbmcgZGVzY3JpYmluZyB0aGUgaW1hZ2UgdHlwZS4gIElmIG9wdGlvbmFsICpoKiBpcyBwcm92aWRlZCwgdGhlICpmaWxlbmFtZSoKICAgIGlzIGlnbm9yZWQgYW5kICpoKiBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gdGhlIGJ5dGUgc3RyZWFtIHRvIHRlc3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiBUaGUgZm9sbG93aW5nIGltYWdlIHR5cGVzIGFyZSByZWNvZ25pemVkLCBhcyBsaXN0ZWQgYmVsb3cgd2l0aCB0aGUgcmV0dXJuIHZhbHVlCiBmcm9tIDpmdW5jOmB3aGF0YDoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wLnJzdCBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKaW5kZXggOTgyOGJhNi4uY2NmNWY5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXAucnN0CkBAIC04NSw3ICs4NSw5IEBACiAgICAuLiBkZXByZWNhdGVkOjogMy4zCiAgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLmZpbmRfc3BlY2AgaW5zdGVhZCB1bmxlc3MgUHl0aG9uIDMuMwogICAgICAgY29tcGF0aWJpbGl0eSBpcyByZXF1aXJlZCwgaW4gd2hpY2ggY2FzZSB1c2UKLSAgICAgIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgLgorICAgICAgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAuIEZvciBleGFtcGxlIHVzYWdlIG9mIHRoZSBmb3JtZXIgY2FzZSwKKyAgICAgIHNlZSB0aGUgOnJlZjpgaW1wb3J0bGliLWV4YW1wbGVzYCBzZWN0aW9uIG9mIHRoZSA6bW9kOmBpbXBvcnRsaWJgCisgICAgICBkb2N1bWVudGF0aW9uLgogCiAKIC4uIGZ1bmN0aW9uOjogbG9hZF9tb2R1bGUobmFtZSwgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uKQpAQCAtMTEyLDkgKzExNCwxMiBAQAogICAgICAgSWYgcHJldmlvdXNseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggOmZ1bmM6YGltcC5maW5kX21vZHVsZWAgdGhlbgogICAgICAgY29uc2lkZXIgdXNpbmcgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCwgb3RoZXJ3aXNlIHVzZSB0aGUgbG9hZGVyCiAgICAgICByZXR1cm5lZCBieSB0aGUgcmVwbGFjZW1lbnQgeW91IGNob3NlIGZvciA6ZnVuYzpgaW1wLmZpbmRfbW9kdWxlYC4gSWYgeW91Ci0gICAgICBjYWxsZWQgOmZ1bmM6YGltcC5sb2FkX21vZHVsZWAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGRpcmVjdGx5IHRoZW4gdXNlIHRoZQotICAgICAgY2xhc3NlcyBpbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YCwgZS5nLgotICAgICAgYGBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aCkubG9hZF9tb2R1bGUoKWBgLgorICAgICAgY2FsbGVkIDpmdW5jOmBpbXAubG9hZF9tb2R1bGVgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBkaXJlY3RseSB3aXRoIGZpbGUKKyAgICAgIHBhdGggYXJndW1lbnRzIHRoZW4gdXNlIGEgY29tYmluYXRpb24gb2YKKyAgICAgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbmAgYW5kCisgICAgICA6ZnVuYzpgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlY2AuIFNlZSB0aGUgOnJlZjpgaW1wb3J0bGliLWV4YW1wbGVzYAorICAgICAgc2VjdGlvbiBvZiB0aGUgOm1vZDpgaW1wb3J0bGliYCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9mIHRoZSB2YXJpb3VzCisgICAgICBhcHByb2FjaGVzLgogCiAKIC4uIGZ1bmN0aW9uOjogbmV3X21vZHVsZShuYW1lKQpAQCAtMTIzLDcgKzEyOCw3IEBACiAgICBpbiBgYHN5cy5tb2R1bGVzYGAuCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKLSAgICAgIFVzZSA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIGluc3RlYWQuCisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWNgIGluc3RlYWQuCiAKIAogLi4gZnVuY3Rpb246OiByZWxvYWQobW9kdWxlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKaW5kZXggM2Q4MzUwOS4uMGQzMTRhNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgIG1vZHVsZSBhbmQgKnBhdGgqIHdpbGwgYmUgdGhlIHZhbHVlIG9mIDphdHRyOmBfX3BhdGhfX2AgZnJvbSB0aGUKICAgICAgIHBhcmVudCBwYWNrYWdlLiBJZiBhIHNwZWMgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KICAgICAgIFdoZW4gcGFzc2VkIGluLCBgYHRhcmdldGBgIGlzIGEgbW9kdWxlIG9iamVjdCB0aGF0IHRoZSBmaW5kZXIgbWF5Ci0gICAgICB1c2UgdG8gbWFrZSBhIG1vcmUgZWR1Y2F0ZWQgYWJvdXQgd2hhdCBzcGVjIHRvIHJldHVybi4KKyAgICAgIHVzZSB0byBtYWtlIGEgbW9yZSBlZHVjYXRlZCBndWVzcyBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMzE3LDcgKzMxNyw3IEBACiAgICAgICB3aXRoaW4gdGhlIDp0ZXJtOmBwYXRoIGVudHJ5YCB0byB3aGljaCBpdCBpcyBhc3NpZ25lZC4gIElmIGEgc3BlYwogICAgICAgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4gIFdoZW4gcGFzc2VkIGluLCBgYHRhcmdldGBgCiAgICAgICBpcyBhIG1vZHVsZSBvYmplY3QgdGhhdCB0aGUgZmluZGVyIG1heSB1c2UgdG8gbWFrZSBhIG1vcmUgZWR1Y2F0ZWQKLSAgICAgIGFib3V0IHdoYXQgc3BlYyB0byByZXR1cm4uCisgICAgICBndWVzcyBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMzc5LDEwICszNzksMTQgQEAKIAogICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IGV4ZWN1dGVzIHRoZSBtb2R1bGUgaW4gaXRzIG93biBuYW1lc3BhY2UKICAgICAgICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG9yIHJlbG9hZGVkLiAgVGhlIG1vZHVsZSBzaG91bGQgYWxyZWFkeQotICAgICAgIGJlIGluaXRpYWxpemVkIHdoZW4gZXhlY19tb2R1bGUoKSBpcyBjYWxsZWQuCisgICAgICAgYmUgaW5pdGlhbGl6ZWQgd2hlbiBgYGV4ZWNfbW9kdWxlKClgYCBpcyBjYWxsZWQuIFdoZW4gdGhpcyBtZXRob2QgZXhpc3RzLAorICAgICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBiZSBkZWZpbmVkLgogCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBhbHNvIGJlIGRlZmluZWQuCisKICAgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKIAogICAgICAgICBBIGxlZ2FjeSBtZXRob2QgZm9yIGxvYWRpbmcgYSBtb2R1bGUuIElmIHRoZSBtb2R1bGUgY2Fubm90IGJlCkBAIC05MzYsNiArOTQwLDEwIEBACiAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHdoZXJlCiAgICAgICBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCBpcyBvcHRpb25hbC4KIAorICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgICBVc2UgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpbnN0ZWFkLgorCiAKIC4uIGNsYXNzOjogU291cmNlbGVzc0ZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCiAKQEAgLTk3NSw2ICs5ODMsMTAgQEAKICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgd2hlcmUKICAgIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIGlzIG9wdGlvbmFsLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgIFVzZSA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGluc3RlYWQuCisKIAogLi4gY2xhc3M6OiBFeHRlbnNpb25GaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQogCkBAIC0xMTM3LDYgKzExNDksOSBAQAogICAgICAgVGhlICpvcHRpbWl6YXRpb24qIHBhcmFtZXRlciB3YXMgYWRkZWQgYW5kIHRoZSAqZGVidWdfb3ZlcnJpZGUqIHBhcmFtZXRlcgogICAgICAgd2FzIGRlcHJlY2F0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIApAQCAtMTE1MCw2ICsxMTY1LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBmdW5jdGlvbjo6IGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKQogCiAgICBEZWNvZGUgdGhlIGdpdmVuIGJ5dGVzIHJlcHJlc2VudGluZyBzb3VyY2UgY29kZSBhbmQgcmV0dXJuIGl0IGFzIGEgc3RyaW5nCkBAIC0xMTkyLDEyICsxMjEwLDEzIEBACiAKIC4uIGZ1bmN0aW9uOjogbW9kdWxlX2Zyb21fc3BlYyhzcGVjKQogCi0gICBDcmVhdGUgYSBuZXcgbW9kdWxlIGJhc2VkIG9uICoqc3BlYyoqIGFuZCBgYHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoKWBgLgorICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBiYXNlZCBvbiAqKnNwZWMqKiBhbmQKKyAgIDptZXRoOmBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlIDxpbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlPmAuCiAKLSAgIElmIGBgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSgpYGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCB0aGVuIGFueQotICAgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUgcmVzZXQuIEFsc28sIG5vIDpleGM6YEF0dHJpYnV0ZUVycm9yYAotICAgd2lsbCBiZSByYWlzZWQgaWYgdHJpZ2dlcmVkIHdoaWxlIGFjY2Vzc2luZyAqKnNwZWMqKiBvciBzZXR0aW5nIGFuIGF0dHJpYnV0ZQotICAgb24gdGhlIG1vZHVsZS4KKyAgIElmIDptZXRoOmBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlIDxpbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlPmAKKyAgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgdGhlbiBhbnkgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUgcmVzZXQuCisgICBBbHNvLCBubyA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgdHJpZ2dlcmVkIHdoaWxlIGFjY2Vzc2luZworICAgKipzcGVjKiogb3Igc2V0dGluZyBhbiBhdHRyaWJ1dGUgb24gdGhlIG1vZHVsZS4KIAogICAgVGhpcyBmdW5jdGlvbiBpcyBwcmVmZXJyZWQgb3ZlciB1c2luZyA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIHRvIGNyZWF0ZSBhCiAgICBuZXcgbW9kdWxlIGFzICoqc3BlYyoqIGlzIHVzZWQgdG8gc2V0IGFzIG1hbnkgaW1wb3J0LWNvbnRyb2xsZWQgYXR0cmlidXRlcyBvbgpAQCAtMTI1OSw3ICsxMjc4LDggQEAKIAogLi4gZGVjb3JhdG9yOjogc2V0X3BhY2thZ2UKIAotICAgQSA6dGVybTpgZGVjb3JhdG9yYCBmb3IgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCB0byBzZXQgdGhlIDphdHRyOmBfX3BhY2thZ2VfX2AgYXR0cmlidXRlIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIElmIDphdHRyOmBfX3BhY2thZ2VfX2AKKyAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgdG8gc2V0IHRoZQorICAgOmF0dHI6YF9fcGFja2FnZV9fYCBhdHRyaWJ1dGUgb24gdGhlIHJldHVybmVkIG1vZHVsZS4gSWYgOmF0dHI6YF9fcGFja2FnZV9fYAogICAgaXMgc2V0IGFuZCBoYXMgYSB2YWx1ZSBvdGhlciB0aGFuIGBgTm9uZWBgIGl0IHdpbGwgbm90IGJlIGNoYW5nZWQuCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKQEAgLTEyODQsNiArMTMwNCw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogLi4gY2xhc3M6OiBMYXp5TG9hZGVyKGxvYWRlcikKIAogICAgQSBjbGFzcyB3aGljaCBwb3N0cG9uZXMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgbG9hZGVyIG9mIGEgbW9kdWxlIHVudGlsIHRoZQpAQCAtMTI5MiwxMyArMTMxNSwxMiBAQAogICAgVGhpcyBjbGFzcyAqKm9ubHkqKiB3b3JrcyB3aXRoIGxvYWRlcnMgdGhhdCBkZWZpbmUKICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGFzIGNvbnRyb2wgb3ZlciB3aGF0IG1vZHVsZSB0eXBlCiAgICBpcyB1c2VkIGZvciB0aGUgbW9kdWxlIGlzIHJlcXVpcmVkLiBGb3IgdGhvc2Ugc2FtZSByZWFzb25zLCB0aGUgbG9hZGVyJ3MKLSAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kIHdpbGwgYmUgaWdub3JlZCAoaS5lLiwgdGhlCi0gICBsb2FkZXIncyBtZXRob2Qgc2hvdWxkIG9ubHkgcmV0dXJuIGBgTm9uZWBgOyB0aGlzIGV4Y2x1ZGVzCi0gICA6Y2xhc3M6YEJ1aWx0aW5JbXBvcnRlcmAgYW5kIDpjbGFzczpgRXh0ZW5zaW9uRmlsZUxvYWRlcmApLiBGaW5hbGx5LAotICAgbW9kdWxlcyB3aGljaCBzdWJzdGl0dXRlIHRoZSBvYmplY3QgcGxhY2VkIGludG8gOmF0dHI6YHN5cy5tb2R1bGVzYCB3aWxsCi0gICBub3Qgd29yayBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcHJvcGVybHkgcmVwbGFjZSB0aGUgbW9kdWxlIHJlZmVyZW5jZXMKLSAgIHRocm91Z2hvdXQgdGhlIGludGVycHJldGVyIHNhZmVseTsgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHN1Y2ggYQotICAgc3Vic3RpdHV0aW9uIGlzIGRldGVjdGVkLgorICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtZXRob2QgbXVzdCByZXR1cm4gYGBOb25lYGAgb3IgYQorICAgdHlwZSBmb3Igd2hpY2ggaXRzIGBgX19jbGFzc19fYGAgYXR0cmlidXRlIGNhbiBiZSBtdXRhdGVkIGFsb25nIHdpdGggbm90CisgICB1c2luZyA6dGVybTpgc2xvdHMgPF9fc2xvdHNfXz5gLiBGaW5hbGx5LCBtb2R1bGVzIHdoaWNoIHN1YnN0aXR1dGUgdGhlIG9iamVjdAorICAgcGxhY2VkIGludG8gOmF0dHI6YHN5cy5tb2R1bGVzYCB3aWxsIG5vdCB3b3JrIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwcm9wZXJseQorICAgcmVwbGFjZSB0aGUgbW9kdWxlIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGUgaW50ZXJwcmV0ZXIgc2FmZWx5OworICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHN1Y2ggYSBzdWJzdGl0dXRpb24gaXMgZGV0ZWN0ZWQuCiAKICAgIC4uIG5vdGU6OgogICAgICAgRm9yIHByb2plY3RzIHdoZXJlIHN0YXJ0dXAgdGltZSBpcyBjcml0aWNhbCwgdGhpcyBjbGFzcyBhbGxvd3MgZm9yCkBAIC0xMzA5LDYgKzEzMzEsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBCZWdhbiBjYWxsaW5nIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAsIHJlbW92aW5nIHRoZQorICAgICAgY29tcGF0aWJpbGl0eSB3YXJuaW5nIGZvciA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyYCBhbmQKKyAgICAgIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyYC4KKwogICAgLi4gY2xhc3NtZXRob2Q6OiBmYWN0b3J5KGxvYWRlcikKIAogICAgICAgQSBzdGF0aWMgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjYWxsYWJsZSB0aGF0IGNyZWF0ZXMgYSBsYXp5IGxvYWRlci4gVGhpcwpAQCAtMTMyMCwzICsxMzQ3LDEzOSBAQAogICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIKICAgICAgICAgbGF6eV9sb2FkZXIgPSBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyLmZhY3RvcnkobG9hZGVyKQogICAgICAgICBmaW5kZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIocGF0aCwgKGxhenlfbG9hZGVyLCBzdWZmaXhlcykpCisKKy4uIF9pbXBvcnRsaWItZXhhbXBsZXM6CisKK0V4YW1wbGVzCistLS0tLS0tLQorCitJbXBvcnRpbmcgcHJvZ3JhbW1hdGljYWxseQorJycnJycnJycnJycnJycnJycnJycnJycnJycKKworVG8gcHJvZ3JhbW1hdGljYWxseSBpbXBvcnQgYSBtb2R1bGUsIHVzZSA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLgorOjoKKworICBpbXBvcnQgaW1wb3J0bGliCisKKyAgaXRlcnRvb2xzID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2l0ZXJ0b29scycpCisKKworQ2hlY2tpbmcgaWYgYSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkCisnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworSWYgeW91IG5lZWQgdG8gZmluZCBvdXQgaWYgYSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkIHdpdGhvdXQgYWN0dWFsbHkgZG9pbmcgdGhlCitpbXBvcnQsIHRoZW4geW91IHNob3VsZCB1c2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLmZpbmRfc3BlY2AuCis6OgorCisgIGltcG9ydCBpbXBvcnRsaWIudXRpbAorICBpbXBvcnQgc3lzCisKKyAgIyBGb3IgaWxsdXN0cmF0aXZlIHB1cnBvc2VzLgorICBuYW1lID0gJ2l0ZXJ0b29scycKKworICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCisgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgIHByaW50KCJjYW4ndCBmaW5kIHRoZSBpdGVydG9vbHMgbW9kdWxlIikKKyAgZWxzZToKKyAgICAgICMgSWYgeW91IGNob3NlIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCBpbXBvcnQgLi4uCisgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICAjIEFkZGluZyB0aGUgbW9kdWxlIHRvIHN5cy5tb2R1bGVzIGlzIG9wdGlvbmFsLgorICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKworCitJbXBvcnRpbmcgYSBzb3VyY2UgZmlsZSBkaXJlY3RseQorJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworVG8gaW1wb3J0IGEgUHl0aG9uIHNvdXJjZSBmaWxlIGRpcmVjdGx5LCB1c2UgdGhlIGZvbGxvd2luZyByZWNpcGUKKyhQeXRob24gMy40IGFuZCBuZXdlciBvbmx5KTo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi51dGlsCisgIGltcG9ydCBzeXMKKworICAjIEZvciBpbGx1c3RyYXRpdmUgcHVycG9zZXMuCisgIGltcG9ydCB0b2tlbml6ZQorICBmaWxlX3BhdGggPSB0b2tlbml6ZS5fX2ZpbGVfXworICBtb2R1bGVfbmFtZSA9IHRva2VuaXplLl9fbmFtZV9fCisKKyAgc3BlYyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG1vZHVsZV9uYW1lLCBmaWxlX3BhdGgpCisgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQorICAjIE9wdGlvbmFsOyBvbmx5IG5lY2Vzc2FyeSBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGltcG9ydCB0aGUgbW9kdWxlCisgICMgYnkgbmFtZSBsYXRlci4KKyAgc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdID0gbW9kdWxlCisKKworU2V0dGluZyB1cCBhbiBpbXBvcnRlcgorJycnJycnJycnJycnJycnJycnJycnJworCitGb3IgZGVlcCBjdXN0b21pemF0aW9ucyBvZiBpbXBvcnQsIHlvdSB0eXBpY2FsbHkgd2FudCB0byBpbXBsZW1lbnQgYW4KKzp0ZXJtOmBpbXBvcnRlcmAuIFRoaXMgbWVhbnMgbWFuYWdpbmcgYm90aCB0aGUgOnRlcm06YGZpbmRlcmAgYW5kIDp0ZXJtOmBsb2FkZXJgCitzaWRlIG9mIHRoaW5ncy4gRm9yIGZpbmRlcnMgdGhlcmUgYXJlIHR3byBmbGF2b3VycyB0byBjaG9vc2UgZnJvbSBkZXBlbmRpbmcgb24KK3lvdXIgbmVlZHM6IGEgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgIG9yIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYC4gVGhlCitmb3JtZXIgaXMgd2hhdCB5b3Ugd291bGQgcHV0IG9uIDphdHRyOmBzeXMubWV0YV9wYXRoYCB3aGlsZSB0aGUgbGF0dGVyIGlzIHdoYXQKK3lvdSBjcmVhdGUgdXNpbmcgYSA6dGVybTpgcGF0aCBlbnRyeSBob29rYCBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgIHdoaWNoIHdvcmtzCit3aXRoIDphdHRyOmBzeXMucGF0aGAgZW50cmllcyB0byBwb3RlbnRpYWxseSBjcmVhdGUgYSBmaW5kZXIuIFRoaXMgZXhhbXBsZSB3aWxsCitzaG93IHlvdSBob3cgdG8gcmVnaXN0ZXIgeW91ciBvd24gaW1wb3J0ZXJzIHNvIHRoYXQgaW1wb3J0IHdpbGwgdXNlIHRoZW0gKGZvcgorY3JlYXRpbmcgYW4gaW1wb3J0ZXIgZm9yIHlvdXJzZWxmLCByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXBwcm9wcmlhdGUKK2NsYXNzZXMgZGVmaW5lZCB3aXRoaW4gdGhpcyBwYWNrYWdlKTo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKKyAgaW1wb3J0IHN5cworCisgICMgRm9yIGlsbHVzdHJhdGl2ZSBwdXJwb3NlcyBvbmx5LgorICBTcGFtTWV0YVBhdGhGaW5kZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIKKyAgU3BhbVBhdGhFbnRyeUZpbmRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcgorICBsb2FkZXJfZGV0YWlscyA9IChpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKQorCisgICMgU2V0dGluZyB1cCBhIG1ldGEgcGF0aCBmaW5kZXIuCisgICMgTWFrZSBzdXJlIHRvIHB1dCB0aGUgZmluZGVyIGluIHRoZSBwcm9wZXIgbG9jYXRpb24gaW4gdGhlIGxpc3QgaW4gdGVybXMgb2YKKyAgIyBwcmlvcml0eS4KKyAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoU3BhbU1ldGFQYXRoRmluZGVyKQorCisgICMgU2V0dGluZyB1cCBhIHBhdGggZW50cnkgZmluZGVyLgorICAjIE1ha2Ugc3VyZSB0byBwdXQgdGhlIHBhdGggaG9vayBpbiB0aGUgcHJvcGVyIGxvY2F0aW9uIGluIHRoZSBsaXN0IGluIHRlcm1zCisgICMgb2YgcHJpb3JpdHkuCisgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChTcGFtUGF0aEVudHJ5RmluZGVyLnBhdGhfaG9vayhsb2FkZXJfZGV0YWlscykpCisKKworQXBwcm94aW1hdGluZyA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgCisnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworSW1wb3J0IGl0c2VsZiBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24gY29kZSwgbWFraW5nIGl0IHBvc3NpYmxlIHRvCitleHBvc2UgbW9zdCBvZiB0aGUgaW1wb3J0IG1hY2hpbmVyeSB0aHJvdWdoIGltcG9ydGxpYi4gVGhlIGZvbGxvd2luZworaGVscHMgaWxsdXN0cmF0ZSB0aGUgdmFyaW91cyBBUElzIHRoYXQgaW1wb3J0bGliIGV4cG9zZXMgYnkgcHJvdmlkaW5nIGFuCithcHByb3hpbWF0ZSBpbXBsZW1lbnRhdGlvbiBvZgorOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCAoUHl0aG9uIDMuNCBhbmQgbmV3ZXIgZm9yIHRoZSBpbXBvcnRsaWIgdXNhZ2UsCitQeXRob24gMy42IGFuZCBuZXdlciBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUpLgorOjoKKworICBpbXBvcnQgaW1wb3J0bGliLnV0aWwKKyAgaW1wb3J0IHN5cworCisgIGRlZiBpbXBvcnRfbW9kdWxlKG5hbWUsIHBhY2thZ2U9Tm9uZSk6CisgICAgICAiIiJBbiBhcHByb3hpbWF0ZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIiIiCisgICAgICBhYnNvbHV0ZV9uYW1lID0gaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpCisgICAgICB0cnk6CisgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW2Fic29sdXRlX25hbWVdCisgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgcGFzcworCisgICAgICBwYXRoID0gTm9uZQorICAgICAgaWYgJy4nIGluIGFic29sdXRlX25hbWU6CisgICAgICAgICAgcGFyZW50X25hbWUsIF8sIGNoaWxkX25hbWUgPSBhYnNvbHV0ZV9uYW1lLnJwYXJ0aXRpb24oJy4nKQorICAgICAgICAgIHBhcmVudF9tb2R1bGUgPSBpbXBvcnRfbW9kdWxlKHBhcmVudF9uYW1lKQorICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLnNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKKyAgICAgIGZvciBmaW5kZXIgaW4gc3lzLm1ldGFfcGF0aDoKKyAgICAgICAgICBzcGVjID0gZmluZGVyLmZpbmRfc3BlYyhhYnNvbHV0ZV9uYW1lLCBwYXRoKQorICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgIGJyZWFrCisgICAgICBlbHNlOgorICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKGYnTm8gbW9kdWxlIG5hbWVkIHthYnNvbHV0ZV9uYW1lIXJ9JykKKyAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICAgIHN5cy5tb2R1bGVzW2Fic29sdXRlX25hbWVdID0gbW9kdWxlCisgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgIHNldGF0dHIocGFyZW50X21vZHVsZSwgY2hpbGRfbmFtZSwgbW9kdWxlKQorICAgICAgcmV0dXJuIG1vZHVsZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAppbmRleCA4ZTdlZDE5Li41Y2I3YzIyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdApAQCAtMjM1LDI0ICsyMzUsNiBAQAogICAgICAgbGlzdGVkIGluIHRoZSBtZXRhY2xhc3MnIGN1c3RvbSA6bWV0aDpgX19kaXJfX2AuCiAKIAotLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVpbmZvKHBhdGgpCi0KLSAgIFJldHVybnMgYSA6dGVybTpgbmFtZWQgdHVwbGVgIGBgTW9kdWxlSW5mbyhuYW1lLCBzdWZmaXgsIG1vZGUsIG1vZHVsZV90eXBlKWBgCi0gICBvZiB2YWx1ZXMgdGhhdCBkZXNjcmliZSBob3cgUHl0aG9uIHdpbGwgaW50ZXJwcmV0IHRoZSBmaWxlIGlkZW50aWZpZWQgYnkKLSAgICpwYXRoKiBpZiBpdCBpcyBhIG1vZHVsZSwgb3IgYGBOb25lYGAgaWYgaXQgd291bGQgbm90IGJlIGlkZW50aWZpZWQgYXMgYQotICAgbW9kdWxlLiAgSW4gdGhhdCB0dXBsZSwgKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgd2l0aG91dCB0aGUgbmFtZSBvZgotICAgYW55IGVuY2xvc2luZyBwYWNrYWdlLCAqc3VmZml4KiBpcyB0aGUgdHJhaWxpbmcgcGFydCBvZiB0aGUgZmlsZSBuYW1lICh3aGljaAotICAgbWF5IG5vdCBiZSBhIGRvdC1kZWxpbWl0ZWQgZXh0ZW5zaW9uKSwgKm1vZGUqIGlzIHRoZSA6ZnVuYzpgb3BlbmAgbW9kZSB0aGF0Ci0gICB3b3VsZCBiZSB1c2VkIChgYCdyJ2BgIG9yIGBgJ3JiJ2BgKSwgYW5kICptb2R1bGVfdHlwZSogaXMgYW4gaW50ZWdlciBnaXZpbmcKLSAgIHRoZSB0eXBlIG9mIHRoZSBtb2R1bGUuICAqbW9kdWxlX3R5cGUqIHdpbGwgaGF2ZSBhIHZhbHVlIHdoaWNoIGNhbiBiZQotICAgY29tcGFyZWQgdG8gdGhlIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSA6bW9kOmBpbXBgIG1vZHVsZTsgc2VlIHRoZQotICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbW9kdWxlIHR5cGVzLgotCi0gICAuLiBkZXByZWNhdGVkOjogMy4zCi0gICAgICBZb3UgbWF5IGNoZWNrIHRoZSBmaWxlIHBhdGgncyBzdWZmaXggYWdhaW5zdCB0aGUgc3VwcG9ydGVkIHN1ZmZpeGVzCi0gICAgICBsaXN0ZWQgaW4gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgdG8gaW5mZXIgdGhlIHNhbWUgaW5mb3JtYXRpb24uCi0KLQogLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5IHRoZSBmaWxlICpwYXRoKiwgd2l0aG91dCBpbmNsdWRpbmcgdGhlCkBAIC0yNjYsOCArMjQ4LDcgQEAKICAgIHN0aWxsIHJldHVybiBgYE5vbmVgYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gdGhlCi0gICAgICBkZXByZWNhdGVkIDpmdW5jOmBnZXRtb2R1bGVpbmZvYC4KKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgLgogCiAKIC4uIGZ1bmN0aW9uOjogaXNtb2R1bGUob2JqZWN0KQpAQCAtNjQ2LDYgKzYyNywxNiBAQAogICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4gIFRoZSBuYW1lIG11c3QgYmUgYSB2YWxpZAogICAgICAgUHl0aG9uIGlkZW50aWZpZXIuCiAKKyAgICAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgICAgQ1B5dGhvbiBnZW5lcmF0ZXMgaW1wbGljaXQgcGFyYW1ldGVyIG5hbWVzIG9mIHRoZSBmb3JtIGBgLjBgYCBvbiB0aGUKKyAgICAgICAgIGNvZGUgb2JqZWN0cyB1c2VkIHRvIGltcGxlbWVudCBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yCisgICAgICAgICBleHByZXNzaW9ucy4KKworICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgICAgIFRoZXNlIHBhcmFtZXRlciBuYW1lcyBhcmUgZXhwb3NlZCBieSB0aGlzIG1vZHVsZSBhcyBuYW1lcyBsaWtlCisgICAgICAgICAgICBgYGltcGxpY2l0MGBgLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZGVmYXVsdAogCiAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlci4gIElmIHRoZSBwYXJhbWV0ZXIgaGFzIG5vIGRlZmF1bHQKQEAgLTg1NCw4ICs4NDUsNiBAQAogICAgZnJvbSBrd29ubHlhcmdzIHRvIGRlZmF1bHRzLiAgKmFubm90YXRpb25zKiBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhcmd1bWVudAogICAgbmFtZXMgdG8gYW5ub3RhdGlvbnMuCiAKLSAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIDpmdW5jOmBnZXRhcmdzcGVjYC4KLQogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IGJhc2VkIG9uIDpmdW5jOmBzaWduYXR1cmVgLCBidXQgc3RpbGwgaWdub3JlcwogICAgICAgYGBfX3dyYXBwZWRfX2BgIGF0dHJpYnV0ZXMgYW5kIGluY2x1ZGVzIHRoZSBhbHJlYWR5IGJvdW5kIGZpcnN0CkBAIC04ODQsNyArODczLDcgQEAKIC4uIGZ1bmN0aW9uOjogZm9ybWF0YXJnc3BlYyhhcmdzWywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnNbLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZSwgZm9ybWF0cmV0dXJucywgZm9ybWF0YW5ub3RhdGlvbnNdXSkKIAogICAgRm9ybWF0IGEgcHJldHR5IGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5Ci0gICA6ZnVuYzpgZ2V0YXJnc3BlY2Agb3IgOmZ1bmM6YGdldGZ1bGxhcmdzcGVjYC4KKyAgIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AuCiAKICAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChgYGFyZ3NgYCwgYGB2YXJhcmdzYGAsIGBgdmFya3dgYCwKICAgIGBgZGVmYXVsdHNgYCwgYGBrd29ubHlhcmdzYGAsIGBga3dvbmx5ZGVmYXVsdHNgYCwgYGBhbm5vdGF0aW9uc2BgKS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CmluZGV4IGRmYzFkZGMuLmIwZDBhOGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdApAQCAtNTkxLDcgKzU5MSwxMyBAQAogCiAuLiBmdW5jdGlvbjo6IHRlZShpdGVyYWJsZSwgbj0yKQogCi0gICBSZXR1cm4gKm4qIGluZGVwZW5kZW50IGl0ZXJhdG9ycyBmcm9tIGEgc2luZ2xlIGl0ZXJhYmxlLiAgUm91Z2hseSBlcXVpdmFsZW50IHRvOjoKKyAgIFJldHVybiAqbiogaW5kZXBlbmRlbnQgaXRlcmF0b3JzIGZyb20gYSBzaW5nbGUgaXRlcmFibGUuCisKKyAgIFRoZSBmb2xsb3dpbmcgUHl0aG9uIGNvZGUgaGVscHMgZXhwbGFpbiB3aGF0ICp0ZWUqIGRvZXMgKGFsdGhvdWdoIHRoZSBhY3R1YWwKKyAgIGltcGxlbWVudGF0aW9uIGlzIG1vcmUgY29tcGxleCBhbmQgdXNlcyBvbmx5IGEgc2luZ2xlIHVuZGVybHlpbmcKKyAgIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUpLgorCisgICBSb3VnaGx5IGVxdWl2YWxlbnQgdG86OgogCiAgICAgICAgIGRlZiB0ZWUoaXRlcmFibGUsIG49Mik6CiAgICAgICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9qc29uLnJzdCBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CmluZGV4IGVlNTgyNjYuLjMwMmY4MzkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2pzb24ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CkBAIC0xMjYsNyArMTI2LDcgQEAKIEJhc2ljIFVzYWdlCiAtLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGR1bXAob2JqLCBmcCwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCisuLiBmdW5jdGlvbjo6IGR1bXAob2JqLCBmcCwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCiAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgc29ydF9rZXlzPUZhbHNlLCAqKmt3KQpAQCAtMTg3LDggKzE4NywxMSBAQAogICAgOm1ldGg6YGRlZmF1bHRgIG1ldGhvZCB0byBzZXJpYWxpemUgYWRkaXRpb25hbCB0eXBlcyksIHNwZWNpZnkgaXQgd2l0aCB0aGUKICAgICpjbHMqIGt3YXJnOyBvdGhlcndpc2UgOmNsYXNzOmBKU09ORW5jb2RlcmAgaXMgdXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCiAKLS4uIGZ1bmN0aW9uOjogZHVtcHMob2JqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIFwKKworLi4gZnVuY3Rpb246OiBkdW1wcyhvYmosICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgXAogICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgIHNvcnRfa2V5cz1GYWxzZSwgKiprdykKQEAgLTIxMiw3ICsyMTUsNyBAQAogICAgICAgdGhlIG9yaWdpbmFsIG9uZS4gVGhhdCBpcywgYGBsb2FkcyhkdW1wcyh4KSkgIT0geGBgIGlmIHggaGFzIG5vbi1zdHJpbmcKICAgICAgIGtleXMuCiAKLS4uIGZ1bmN0aW9uOjogbG9hZChmcCwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQorLi4gZnVuY3Rpb246OiBsb2FkKGZwLCAqLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCiAKICAgIERlc2VyaWFsaXplICpmcCogKGEgYGAucmVhZCgpYGAtc3VwcG9ydGluZyA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAKICAgIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QgdXNpbmcgdGhpcyA6cmVmOmBjb252ZXJzaW9uCkBAIC0yNjAsMTAgKzI2MywxNCBAQAogICAgSWYgdGhlIGRhdGEgYmVpbmcgZGVzZXJpYWxpemVkIGlzIG5vdCBhIHZhbGlkIEpTT04gZG9jdW1lbnQsIGEKICAgIDpleGM6YEpTT05EZWNvZGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKLS4uIGZ1bmN0aW9uOjogbG9hZHMocywgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCiAKLSAgIERlc2VyaWFsaXplICpzKiAoYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2UgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEKLSAgIFB5dGhvbiBvYmplY3QgdXNpbmcgdGhpcyA6cmVmOmBjb252ZXJzaW9uIHRhYmxlIDxqc29uLXRvLXB5LXRhYmxlPmAuCisuLiBmdW5jdGlvbjo6IGxvYWRzKHMsICosIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKKworICAgRGVzZXJpYWxpemUgKnMqIChhIDpjbGFzczpgc3RyYCwgOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgCisgICBpbnN0YW5jZSBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0IHVzaW5nIHRoaXMKKyAgIDpyZWY6YGNvbnZlcnNpb24gdGFibGUgPGpzb24tdG8tcHktdGFibGU+YC4KIAogICAgVGhlIG90aGVyIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4gOmZ1bmM6YGxvYWRgLCBleGNlcHQKICAgICplbmNvZGluZyogd2hpY2ggaXMgaWdub3JlZCBhbmQgZGVwcmVjYXRlZC4KQEAgLTI3NCw3ICsyODEsNyBAQAogRW5jb2RlcnMgYW5kIERlY29kZXJzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gY2xhc3M6OiBKU09ORGVjb2RlcihvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgc3RyaWN0PVRydWUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUpCisuLiBjbGFzczo6IEpTT05EZWNvZGVyKCosIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBzdHJpY3Q9VHJ1ZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSkKIAogICAgU2ltcGxlIEpTT04gZGVjb2Rlci4KIApAQCAtMzQ0LDYgKzM1MSw5IEBACiAgICBJZiB0aGUgZGF0YSBiZWluZyBkZXNlcmlhbGl6ZWQgaXMgbm90IGEgdmFsaWQgSlNPTiBkb2N1bWVudCwgYQogICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKICAgIC4uIG1ldGhvZDo6IGRlY29kZShzKQogCiAgICAgICBSZXR1cm4gdGhlIFB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiAqcyogKGEgOmNsYXNzOmBzdHJgIGluc3RhbmNlCkBAIC0zNjIsNyArMzcyLDcgQEAKICAgICAgIGV4dHJhbmVvdXMgZGF0YSBhdCB0aGUgZW5kLgogCiAKLS4uIGNsYXNzOjogSlNPTkVuY29kZXIoc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgc29ydF9rZXlzPUZhbHNlLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUpCisuLiBjbGFzczo6IEpTT05FbmNvZGVyKCosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIHNvcnRfa2V5cz1GYWxzZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lKQogCiAgICBFeHRlbnNpYmxlIEpTT04gZW5jb2RlciBmb3IgUHl0aG9uIGRhdGEgc3RydWN0dXJlcy4KIApAQCAtNDQyLDYgKzQ1Miw5IEBACiAgICB0aGUgb2JqZWN0IG9yIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gIElmIG5vdCBzcGVjaWZpZWQsIDpleGM6YFR5cGVFcnJvcmAKICAgIGlzIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKIAogICAgLi4gbWV0aG9kOjogZGVmYXVsdChvKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CmluZGV4IDkxNmI3MDIuLjhlMjdhZDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CkBAIC04NCw2ICs4NCw5IEBACiAgICB3aXRoIHRoYXQgZW5jb2RpbmcuICBJZiAqZGVsYXkqIGlzIHRydWUsIHRoZW4gZmlsZSBvcGVuaW5nIGlzIGRlZmVycmVkIHVudGlsIHRoZQogICAgZmlyc3QgY2FsbCB0byA6bWV0aDpgZW1pdGAuIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIGdyb3dzIGluZGVmaW5pdGVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCiAKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIApAQCAtMTYwLDEyICsxNjMsMjMgQEAKICAgIHdpdGggdGhhdCBlbmNvZGluZy4gIElmICpkZWxheSogaXMgdHJ1ZSwgdGhlbiBmaWxlIG9wZW5pbmcgaXMgZGVmZXJyZWQgdW50aWwgdGhlCiAgICBmaXJzdCBjYWxsIHRvIDptZXRoOmBlbWl0YC4gIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIGdyb3dzIGluZGVmaW5pdGVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCisKKyAgIC4uIG1ldGhvZDo6IHJlb3BlbklmTmVlZGVkKCkKKworICAgICAgQ2hlY2tzIHRvIHNlZSBpZiB0aGUgZmlsZSBoYXMgY2hhbmdlZC4gIElmIGl0IGhhcywgdGhlIGV4aXN0aW5nIHN0cmVhbSBpcworICAgICAgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUgZmlsZSBvcGVuZWQgYWdhaW4sIHR5cGljYWxseSBhcyBhIHByZWN1cnNvciB0bworICAgICAgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAgICAuLiBtZXRob2Q6OiBlbWl0KHJlY29yZCkKIAotICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBidXQgZmlyc3QgY2hlY2tzIHRvIHNlZSBpZiB0aGUgZmlsZSBoYXMKLSAgICAgIGNoYW5nZWQuICBJZiBpdCBoYXMsIHRoZSBleGlzdGluZyBzdHJlYW0gaXMgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUKLSAgICAgIGZpbGUgb3BlbmVkIGFnYWluLCBiZWZvcmUgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgorICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBidXQgZmlyc3QgY2FsbHMgOm1ldGg6YHJlb3BlbklmTmVlZGVkYCB0bworICAgICAgcmVvcGVuIHRoZSBmaWxlIGlmIGl0IGhhcyBjaGFuZ2VkLgogCiAuLiBfYmFzZS1yb3RhdGluZy1oYW5kbGVyOgogCkBAIC0yNzksNiArMjkzLDkgQEAKICAgIDpmaWxlOmBhcHAubG9nLjJgLCBldGMuICBleGlzdCwgdGhlbiB0aGV5IGFyZSByZW5hbWVkIHRvIDpmaWxlOmBhcHAubG9nLjJgLAogICAgOmZpbGU6YGFwcC5sb2cuM2AgZXRjLiAgcmVzcGVjdGl2ZWx5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQXMgd2VsbCBhcyBzdHJpbmcgdmFsdWVzLCA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdHMgYXJlIGFsc28gYWNjZXB0ZWQKKyAgICAgIGZvciB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudC4KIAogICAgLi4gbWV0aG9kOjogZG9Sb2xsb3ZlcigpCiAKQEAgLTMxMCwyMSArMzI3LDI0IEBACiAgICBZb3UgY2FuIHVzZSB0aGUgKndoZW4qIHRvIHNwZWNpZnkgdGhlIHR5cGUgb2YgKmludGVydmFsKi4gVGhlIGxpc3Qgb2YgcG9zc2libGUKICAgIHZhbHVlcyBpcyBiZWxvdy4gIE5vdGUgdGhhdCB0aGV5IGFyZSBub3QgY2FzZSBzZW5zaXRpdmUuCiAKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBWYWx1ZSAgICAgICAgICB8IFR5cGUgb2YgaW50ZXJ2YWwgICAgICB8Ci0gICArPT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgYGAnUydgYCAgICAgICAgfCBTZWNvbmRzICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ00nYGAgICAgICAgIHwgTWludXRlcyAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdIJ2BgICAgICAgICB8IEhvdXJzICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnRCdgYCAgICAgICAgfCBEYXlzICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ1cwJy0nVzYnYGAgIHwgV2Vla2RheSAoMD1Nb25kYXkpICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdtaWRuaWdodCdgYCB8IFJvbGwgb3ZlciBhdCBtaWRuaWdodCB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgVmFsdWUgICAgICAgICAgfCBUeXBlIG9mIGludGVydmFsICAgICAgICAgICB8IElmL2hvdyAqYXRUaW1lKiBpcyB1c2VkIHwKKyAgICs9PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgYGAnUydgYCAgICAgICAgfCBTZWNvbmRzICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnTSdgYCAgICAgICAgfCBNaW51dGVzICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnSCdgYCAgICAgICAgfCBIb3VycyAgICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnRCdgYCAgICAgICAgfCBEYXlzICAgICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnVzAnLSdXNidgYCAgfCBXZWVrZGF5ICgwPU1vbmRheSkgICAgICAgICB8IFVzZWQgdG8gY29tcHV0ZSBpbml0aWFsIHwKKyAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJvbGxvdmVyIHRpbWUgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnbWlkbmlnaHQnYGAgfCBSb2xsIG92ZXIgYXQgbWlkbmlnaHQsIGlmICB8IFVzZWQgdG8gY29tcHV0ZSBpbml0aWFsIHwKKyAgIHwgICAgICAgICAgICAgICAgfCAqYXRUaW1lKiBub3Qgc3BlY2lmaWVkLCAgICB8IHJvbGxvdmVyIHRpbWUgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgfCBlbHNlIGF0IHRpbWUgKmF0VGltZSogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogICAgV2hlbiB1c2luZyB3ZWVrZGF5LWJhc2VkIHJvdGF0aW9uLCBzcGVjaWZ5ICdXMCcgZm9yIE1vbmRheSwgJ1cxJyBmb3IKICAgIFR1ZXNkYXksIGFuZCBzbyBvbiB1cCB0byAnVzYnIGZvciBTdW5kYXkuIEluIHRoaXMgY2FzZSwgdGhlIHZhbHVlIHBhc3NlZCBmb3IKQEAgLTM1MiwxNiArMzcyLDM1IEBACiAKICAgIElmICphdFRpbWUqIGlzIG5vdCBgYE5vbmVgYCwgaXQgbXVzdCBiZSBhIGBgZGF0ZXRpbWUudGltZWBgIGluc3RhbmNlIHdoaWNoCiAgICBzcGVjaWZpZXMgdGhlIHRpbWUgb2YgZGF5IHdoZW4gcm9sbG92ZXIgb2NjdXJzLCBmb3IgdGhlIGNhc2VzIHdoZXJlIHJvbGxvdmVyCi0gICBpcyBzZXQgdG8gaGFwcGVuICJhdCBtaWRuaWdodCIgb3IgIm9uIGEgcGFydGljdWxhciB3ZWVrZGF5Ii4KKyAgIGlzIHNldCB0byBoYXBwZW4gImF0IG1pZG5pZ2h0IiBvciAib24gYSBwYXJ0aWN1bGFyIHdlZWtkYXkiLiBOb3RlIHRoYXQgaW4KKyAgIHRoZXNlIGNhc2VzLCB0aGUgKmF0VGltZSogdmFsdWUgaXMgZWZmZWN0aXZlbHkgdXNlZCB0byBjb21wdXRlIHRoZSAqaW5pdGlhbCoKKyAgIHJvbGxvdmVyLCBhbmQgc3Vic2VxdWVudCByb2xsb3ZlcnMgd291bGQgYmUgY2FsY3VsYXRlZCB2aWEgdGhlIG5vcm1hbAorICAgaW50ZXJ2YWwgY2FsY3VsYXRpb24uCisKKyAgIC4uIG5vdGU6OiBDYWxjdWxhdGlvbiBvZiB0aGUgaW5pdGlhbCByb2xsb3ZlciB0aW1lIGlzIGRvbmUgd2hlbiB0aGUgaGFuZGxlcgorICAgICAgaXMgaW5pdGlhbGlzZWQuIENhbGN1bGF0aW9uIG9mIHN1YnNlcXVlbnQgcm9sbG92ZXIgdGltZXMgaXMgZG9uZSBvbmx5CisgICAgICB3aGVuIHJvbGxvdmVyIG9jY3VycywgYW5kIHJvbGxvdmVyIG9jY3VycyBvbmx5IHdoZW4gZW1pdHRpbmcgb3V0cHV0LiBJZgorICAgICAgdGhpcyBpcyBub3Qga2VwdCBpbiBtaW5kLCBpdCBtaWdodCBsZWFkIHRvIHNvbWUgY29uZnVzaW9uLiBGb3IgZXhhbXBsZSwKKyAgICAgIGlmIGFuIGludGVydmFsIG9mICJldmVyeSBtaW51dGUiIGlzIHNldCwgdGhhdCBkb2VzIG5vdCBtZWFuIHlvdSB3aWxsCisgICAgICBhbHdheXMgc2VlIGxvZyBmaWxlcyB3aXRoIHRpbWVzIChpbiB0aGUgZmlsZW5hbWUpIHNlcGFyYXRlZCBieSBhIG1pbnV0ZTsKKyAgICAgIGlmLCBkdXJpbmcgYXBwbGljYXRpb24gZXhlY3V0aW9uLCBsb2dnaW5nIG91dHB1dCBpcyBnZW5lcmF0ZWQgbW9yZQorICAgICAgZnJlcXVlbnRseSB0aGFuIG9uY2UgYSBtaW51dGUsICp0aGVuKiB5b3UgY2FuIGV4cGVjdCB0byBzZWUgbG9nIGZpbGVzCisgICAgICB3aXRoIHRpbWVzIHNlcGFyYXRlZCBieSBhIG1pbnV0ZS4gSWYsIG9uIHRoZSBvdGhlciBoYW5kLCBsb2dnaW5nIG1lc3NhZ2VzCisgICAgICBhcmUgb25seSBvdXRwdXQgb25jZSBldmVyeSBmaXZlIG1pbnV0ZXMgKHNheSksIHRoZW4gdGhlcmUgd2lsbCBiZSBnYXBzIGluCisgICAgICB0aGUgZmlsZSB0aW1lcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtaW51dGVzIHdoZXJlIG5vIG91dHB1dCAoYW5kIGhlbmNlIG5vCisgICAgICByb2xsb3Zlcikgb2NjdXJyZWQuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICAqYXRUaW1lKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQXMgd2VsbCBhcyBzdHJpbmcgdmFsdWVzLCA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdHMgYXJlIGFsc28gYWNjZXB0ZWQKKyAgICAgIGZvciB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudC4KKwogICAgLi4gbWV0aG9kOjogZG9Sb2xsb3ZlcigpCiAKICAgICAgIERvZXMgYSByb2xsb3ZlciwgYXMgZGVzY3JpYmVkIGFib3ZlLgogCi0KICAgIC4uIG1ldGhvZDo6IGVtaXQocmVjb3JkKQogCiAgICAgICBPdXRwdXRzIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUsIGNhdGVyaW5nIGZvciByb2xsb3ZlciBhcyBkZXNjcmliZWQgYWJvdmUuCkBAIC03OTgsMTIgKzgzNywxOCBAQAogICAgICAgb3ZlcnJpZGRlbiB0byBpbXBsZW1lbnQgY3VzdG9tIGZsdXNoaW5nIHN0cmF0ZWdpZXMuCiAKIAotLi4gY2xhc3M6OiBNZW1vcnlIYW5kbGVyKGNhcGFjaXR5LCBmbHVzaExldmVsPUVSUk9SLCB0YXJnZXQ9Tm9uZSkKKy4uIGNsYXNzOjogTWVtb3J5SGFuZGxlcihjYXBhY2l0eSwgZmx1c2hMZXZlbD1FUlJPUiwgdGFyZ2V0PU5vbmUsIGZsdXNoT25DbG9zZT1UcnVlKQogCiAgICBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YE1lbW9yeUhhbmRsZXJgIGNsYXNzLiBUaGUgaW5zdGFuY2UgaXMKICAgIGluaXRpYWxpemVkIHdpdGggYSBidWZmZXIgc2l6ZSBvZiAqY2FwYWNpdHkqLiBJZiAqZmx1c2hMZXZlbCogaXMgbm90IHNwZWNpZmllZCwKICAgIDpjb25zdDpgRVJST1JgIGlzIHVzZWQuIElmIG5vICp0YXJnZXQqIGlzIHNwZWNpZmllZCwgdGhlIHRhcmdldCB3aWxsIG5lZWQgdG8gYmUKLSAgIHNldCB1c2luZyA6bWV0aDpgc2V0VGFyZ2V0YCBiZWZvcmUgdGhpcyBoYW5kbGVyIGRvZXMgYW55dGhpbmcgdXNlZnVsLgorICAgc2V0IHVzaW5nIDptZXRoOmBzZXRUYXJnZXRgIGJlZm9yZSB0aGlzIGhhbmRsZXIgZG9lcyBhbnl0aGluZyB1c2VmdWwuIElmCisgICAqZmx1c2hPbkNsb3NlKiBpcyBzcGVjaWZpZWQgYXMgYGBGYWxzZWBgLCB0aGVuIHRoZSBidWZmZXIgaXMgKm5vdCogZmx1c2hlZCB3aGVuCisgICB0aGUgaGFuZGxlciBpcyBjbG9zZWQuIElmIG5vdCBzcGVjaWZpZWQgb3Igc3BlY2lmaWVkIGFzIGBgVHJ1ZWBgLCB0aGUgcHJldmlvdXMKKyAgIGJlaGF2aW91ciBvZiBmbHVzaGluZyB0aGUgYnVmZmVyIHdpbGwgb2NjdXIgd2hlbiB0aGUgaGFuZGxlciBpcyBjbG9zZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgKmZsdXNoT25DbG9zZSogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sem1hLnJzdCBiL0RvYy9saWJyYXJ5L2x6bWEucnN0CmluZGV4IDYxYjNiYTMuLjVlZGIyM2QgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2x6bWEucnN0CisrKyBiL0RvYy9saWJyYXJ5L2x6bWEucnN0CkBAIC0zOSw4ICszOSw5IEBACiAgICBvYmplY3RgLgogCiAgICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEKLSAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzCi0gICBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgYnl0ZXNgIG9yIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBvYmplY3QpLCBpbgorICAgd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdAorICAgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgogCiAgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2YgYGAiciJgYCwgYGAicmIiYGAsIGBgInciYGAsIGBgIndiImBgLAogICAgYGAieCJgYCwgYGAieGIiYGAsIGBgImEiYGAgb3IgYGAiYWIiYGAgZm9yIGJpbmFyeSBtb2RlLCBvciBgYCJydCJgYCwKQEAgLTY0LDYgKzY1LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAieCJgYCwgYGAieGIiYGAgYW5kIGBgInh0ImBgIG1vZGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBjbGFzczo6IExaTUFGaWxlKGZpbGVuYW1lPU5vbmUsIG1vZGU9InIiLCBcKiwgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQogCkBAIC03MSw5ICs3NSwxMCBAQAogCiAgICBBbiA6Y2xhc3M6YExaTUFGaWxlYCBjYW4gd3JhcCBhbiBhbHJlYWR5LW9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YCwgb3Igb3BlcmF0ZQogICAgZGlyZWN0bHkgb24gYSBuYW1lZCBmaWxlLiBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBzcGVjaWZpZXMgZWl0aGVyIHRoZSBmaWxlCi0gICBvYmplY3QgdG8gd3JhcCwgb3IgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gb3BlbiAoYXMgYSA6Y2xhc3M6YHN0cmAgb3IKLSAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCkuIFdoZW4gd3JhcHBpbmcgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIHRoZSB3cmFwcGVkCi0gICBmaWxlIHdpbGwgbm90IGJlIGNsb3NlZCB3aGVuIHRoZSA6Y2xhc3M6YExaTUFGaWxlYCBpcyBjbG9zZWQuCisgICBvYmplY3QgdG8gd3JhcCwgb3IgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gb3BlbiAoYXMgYSA6Y2xhc3M6YHN0cmAsCisgICA6Y2xhc3M6YGJ5dGVzYCBvciA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgb2JqZWN0KS4gV2hlbiB3cmFwcGluZyBhbgorICAgZXhpc3RpbmcgZmlsZSBvYmplY3QsIHRoZSB3cmFwcGVkIGZpbGUgd2lsbCBub3QgYmUgY2xvc2VkIHdoZW4gdGhlCisgICA6Y2xhc3M6YExaTUFGaWxlYCBpcyBjbG9zZWQuCiAKICAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBgYCJyImBgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgYGAidyJgYCBmb3IKICAgIG92ZXJ3cml0aW5nLCBgYCJ4ImBgIGZvciBleGNsdXNpdmUgY3JlYXRpb24sIG9yIGBgImEiYGAgZm9yIGFwcGVuZGluZy4gVGhlc2UKQEAgLTExOCw2ICsxMjMsOSBAQAogICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCiAgICAgICBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogQ29tcHJlc3NpbmcgYW5kIGRlY29tcHJlc3NpbmcgZGF0YSBpbiBtZW1vcnkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tYXRoLnJzdCBiL0RvYy9saWJyYXJ5L21hdGgucnN0CmluZGV4IDNmZGVhMTguLmRhMmI4Y2MgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21hdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L21hdGgucnN0CkBAIC00MjYsNiArNDI2LDE1IEBACiAKICAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgZSA9IDIuNzE4MjgxLi4uLCB0byBhdmFpbGFibGUgcHJlY2lzaW9uLgogCisuLiBkYXRhOjogdGF1CisKKyAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgz4QgPSA2LjI4MzE4NS4uLiwgdG8gYXZhaWxhYmxlIHByZWNpc2lvbi4KKyAgIFRhdSBpcyBhIGNpcmNsZSBjb25zdGFudCBlcXVhbCB0byAyz4AsIHRoZSByYXRpbyBvZiBhIGNpcmNsZSdzIGNpcmN1bWZlcmVuY2UgdG8KKyAgIGl0cyByYWRpdXMuIFRvIGxlYXJuIG1vcmUgYWJvdXQgVGF1LCBjaGVjayBvdXQgVmkgSGFydCdzIHZpZGVvIGBQaSBpcyAoc3RpbGwpCisgICBXcm9uZyA8aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1qRzd2aE1NWGFnUT5gXywgYW5kIHN0YXJ0IGNlbGVicmF0aW5nCisgICBgVGF1IGRheSA8aHR0cDovL3RhdWRheS5jb20vPmBfIGJ5IGVhdGluZyB0d2ljZSBhcyBtdWNoIHBpZSEKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIGRhdGE6OiBpbmYKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdAppbmRleCA4ZjUzODMzLi5jNTQ0YzgwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tbWFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdApAQCAtMjY0LDEzICsyNjQsMTggQEAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGJ5dGVzKQogCiAgICAgICBXcml0ZSB0aGUgYnl0ZXMgaW4gKmJ5dGVzKiBpbnRvIG1lbW9yeSBhdCB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUKLSAgICAgIGZpbGUgcG9pbnRlcjsgdGhlIGZpbGUgcG9zaXRpb24gaXMgdXBkYXRlZCB0byBwb2ludCBhZnRlciB0aGUgYnl0ZXMgdGhhdAotICAgICAgd2VyZSB3cml0dGVuLiBJZiB0aGUgbW1hcCB3YXMgY3JlYXRlZCB3aXRoIDpjb25zdDpgQUNDRVNTX1JFQURgLCB0aGVuCisgICAgICBmaWxlIHBvaW50ZXIgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gKG5ldmVyIGxlc3MgdGhhbgorICAgICAgYGBsZW4oYnl0ZXMpYGAsIHNpbmNlIGlmIHRoZSB3cml0ZSBmYWlscywgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlCisgICAgICByYWlzZWQpLiAgVGhlIGZpbGUgcG9zaXRpb24gaXMgdXBkYXRlZCB0byBwb2ludCBhZnRlciB0aGUgYnl0ZXMgdGhhdAorICAgICAgd2VyZSB3cml0dGVuLiAgSWYgdGhlIG1tYXAgd2FzIGNyZWF0ZWQgd2l0aCA6Y29uc3Q6YEFDQ0VTU19SRUFEYCwgdGhlbgogICAgICAgd3JpdGluZyB0byBpdCB3aWxsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCBleGNlcHRpb24uCiAKICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBpcyBub3cgcmV0dXJuZWQuCisKIAogICAgLi4gbWV0aG9kOjogd3JpdGVfYnl0ZShieXRlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0IGIvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAppbmRleCBhNTkxMmY3Li43OWM1Njg3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKQEAgLTY1MCw4ICs2NTAsOSBAQAogRm9yIHBhc3NpbmcgbWVzc2FnZXMgb25lIGNhbiB1c2UgOmZ1bmM6YFBpcGVgIChmb3IgYSBjb25uZWN0aW9uIGJldHdlZW4gdHdvCiBwcm9jZXNzZXMpIG9yIGEgcXVldWUgKHdoaWNoIGFsbG93cyBtdWx0aXBsZSBwcm9kdWNlcnMgYW5kIGNvbnN1bWVycykuCiAKLVRoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBTaW1wbGVRdWV1ZWAgYW5kIDpjbGFzczpgSm9pbmFibGVRdWV1ZWAgdHlwZXMgYXJlIG11bHRpLXByb2R1Y2VyLAotbXVsdGktY29uc3VtZXIgRklGTyBxdWV1ZXMgbW9kZWxsZWQgb24gdGhlIDpjbGFzczpgcXVldWUuUXVldWVgIGNsYXNzIGluIHRoZQorVGhlIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YFNpbXBsZVF1ZXVlYCBhbmQgOmNsYXNzOmBKb2luYWJsZVF1ZXVlYCB0eXBlcworYXJlIG11bHRpLXByb2R1Y2VyLCBtdWx0aS1jb25zdW1lciA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgCitxdWV1ZXMgbW9kZWxsZWQgb24gdGhlIDpjbGFzczpgcXVldWUuUXVldWVgIGNsYXNzIGluIHRoZQogc3RhbmRhcmQgbGlicmFyeS4gIFRoZXkgZGlmZmVyIGluIHRoYXQgOmNsYXNzOmBRdWV1ZWAgbGFja3MgdGhlCiA6bWV0aDpgfnF1ZXVlLlF1ZXVlLnRhc2tfZG9uZWAgYW5kIDptZXRoOmB+cXVldWUuUXVldWUuam9pbmAgbWV0aG9kcyBpbnRyb2R1Y2VkCiBpbnRvIFB5dGhvbiAyLjUncyA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcy4KQEAgLTg4OSw4ICs4OTAsMTMgQEAKIAogLi4gZnVuY3Rpb246OiBjcHVfY291bnQoKQogCi0gICBSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW0uICBNYXkgcmFpc2UKLSAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLgorCisgICBUaGlzIG51bWJlciBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIENQVXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBjYW4KKyAgIHVzZS4gIFRoZSBudW1iZXIgb2YgdXNhYmxlIENQVXMgY2FuIGJlIG9idGFpbmVkIHdpdGgKKyAgIGBgbGVuKG9zLnNjaGVkX2dldGFmZmluaXR5KDApKWBgCisKKyAgIE1heSByYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KIAogICAgLi4gc2VlYWxzbzo6CiAgICAgICA6ZnVuYzpgb3MuY3B1X2NvdW50YApAQCAtMTY3OSw3ICsxNjg1LDkgQEAKICAgIG9mIHByb2Nlc3Nlcy4gIE9iamVjdHMgb2YgdGhpcyB0eXBlIGFyZSByZXR1cm5lZCBieQogICAgOmZ1bmM6YG11bHRpcHJvY2Vzc2luZy5NYW5hZ2VyYC4KIAotICAgSXQgYWxzbyBzdXBwb3J0cyBjcmVhdGlvbiBvZiBzaGFyZWQgbGlzdHMgYW5kIGRpY3Rpb25hcmllcy4KKyAgIEl0cyBtZXRob2RzIGNyZWF0ZSBhbmQgcmV0dXJuIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYCBmb3IgYQorICAgbnVtYmVyIG9mIGNvbW1vbmx5IHVzZWQgZGF0YSB0eXBlcyB0byBiZSBzeW5jaHJvbml6ZWQgYWNyb3NzIHByb2Nlc3Nlcy4KKyAgIFRoaXMgbm90YWJseSBpbmNsdWRlcyBzaGFyZWQgbGlzdHMgYW5kIGRpY3Rpb25hcmllcy4KIAogICAgLi4gbWV0aG9kOjogQmFycmllcihwYXJ0aWVzWywgYWN0aW9uWywgdGltZW91dF1dKQogCkBAIC0xNzQyLDMxICsxNzUwLDE3IEBACiAgICAgICAgICAgICAgICBkaWN0KG1hcHBpbmcpCiAgICAgICAgICAgICAgICBkaWN0KHNlcXVlbmNlKQogCi0gICAgICBDcmVhdGUgYSBzaGFyZWQgYGBkaWN0YGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCisgICAgICBDcmVhdGUgYSBzaGFyZWQgOmNsYXNzOmBkaWN0YCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KIAogICAgLi4gbWV0aG9kOjogbGlzdCgpCiAgICAgICAgICAgICAgICBsaXN0KHNlcXVlbmNlKQogCi0gICAgICBDcmVhdGUgYSBzaGFyZWQgYGBsaXN0YGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCisgICAgICBDcmVhdGUgYSBzaGFyZWQgOmNsYXNzOmBsaXN0YCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIE1vZGlmaWNhdGlvbnMgdG8gbXV0YWJsZSB2YWx1ZXMgb3IgaXRlbXMgaW4gZGljdCBhbmQgbGlzdCBwcm94aWVzIHdpbGwgbm90Ci0gICAgICBiZSBwcm9wYWdhdGVkIHRocm91Z2ggdGhlIG1hbmFnZXIsIGJlY2F1c2UgdGhlIHByb3h5IGhhcyBubyB3YXkgb2Yga25vd2luZwotICAgICAgd2hlbiBpdHMgdmFsdWVzIG9yIGl0ZW1zIGFyZSBtb2RpZmllZC4gIFRvIG1vZGlmeSBzdWNoIGFuIGl0ZW0sIHlvdSBjYW4KLSAgICAgIHJlLWFzc2lnbiB0aGUgbW9kaWZpZWQgb2JqZWN0IHRvIHRoZSBjb250YWluZXIgcHJveHk6OgotCi0gICAgICAgICAjIGNyZWF0ZSBhIGxpc3QgcHJveHkgYW5kIGFwcGVuZCBhIG11dGFibGUgb2JqZWN0IChhIGRpY3Rpb25hcnkpCi0gICAgICAgICBscHJveHkgPSBtYW5hZ2VyLmxpc3QoKQotICAgICAgICAgbHByb3h5LmFwcGVuZCh7fSkKLSAgICAgICAgICMgbm93IG11dGF0ZSB0aGUgZGljdGlvbmFyeQotICAgICAgICAgZCA9IGxwcm94eVswXQotICAgICAgICAgZFsnYSddID0gMQotICAgICAgICAgZFsnYiddID0gMgotICAgICAgICAgIyBhdCB0aGlzIHBvaW50LCB0aGUgY2hhbmdlcyB0byBkIGFyZSBub3QgeWV0IHN5bmNlZCwgYnV0IGJ5Ci0gICAgICAgICAjIHJlYXNzaWduaW5nIHRoZSBkaWN0aW9uYXJ5LCB0aGUgcHJveHkgaXMgbm90aWZpZWQgb2YgdGhlIGNoYW5nZQotICAgICAgICAgbHByb3h5WzBdID0gZAotCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU2hhcmVkIG9iamVjdHMgYXJlIGNhcGFibGUgb2YgYmVpbmcgbmVzdGVkLiAgRm9yIGV4YW1wbGUsIGEgc2hhcmVkCisgICAgICBjb250YWluZXIgb2JqZWN0IHN1Y2ggYXMgYSBzaGFyZWQgbGlzdCBjYW4gY29udGFpbiBvdGhlciBzaGFyZWQgb2JqZWN0cworICAgICAgd2hpY2ggd2lsbCBhbGwgYmUgbWFuYWdlZCBhbmQgc3luY2hyb25pemVkIGJ5IHRoZSA6Y2xhc3M6YFN5bmNNYW5hZ2VyYC4KIAogLi4gY2xhc3M6OiBOYW1lc3BhY2UKIApAQCAtMTg3OCw2ICsxODcyLDggQEAKICAgICA+Pj4gcyA9IG0uZ2V0X3NlcnZlcigpCiAgICAgPj4+IHMuc2VydmVfZm9yZXZlcigpCiAKKy4uIF9tdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0czoKKwogUHJveHkgT2JqZWN0cwogfn5+fn5+fn5+fn5+fgogCkBAIC0xODg3LDggKzE4ODMsNyBAQAogCiBBIHByb3h5IG9iamVjdCBoYXMgbWV0aG9kcyB3aGljaCBpbnZva2UgY29ycmVzcG9uZGluZyBtZXRob2RzIG9mIGl0cyByZWZlcmVudAogKGFsdGhvdWdoIG5vdCBldmVyeSBtZXRob2Qgb2YgdGhlIHJlZmVyZW50IHdpbGwgbmVjZXNzYXJpbHkgYmUgYXZhaWxhYmxlIHRocm91Z2gKLXRoZSBwcm94eSkuICBBIHByb3h5IGNhbiB1c3VhbGx5IGJlIHVzZWQgaW4gbW9zdCBvZiB0aGUgc2FtZSB3YXlzIHRoYXQgaXRzCi1yZWZlcmVudCBjYW46Cit0aGUgcHJveHkpLiAgSW4gdGhpcyB3YXksIGEgcHJveHkgY2FuIGJlIHVzZWQganVzdCBsaWtlIGl0cyByZWZlcmVudCBjYW46CiAKIC4uIGRvY3Rlc3Q6OgogCkBAIC0xOTA5LDkgKzE5MDQsOSBAQAogdGhlIHByb3h5LgogCiBBbiBpbXBvcnRhbnQgZmVhdHVyZSBvZiBwcm94eSBvYmplY3RzIGlzIHRoYXQgdGhleSBhcmUgcGlja2xhYmxlIHNvIHRoZXkgY2FuIGJlCi1wYXNzZWQgYmV0d2VlbiBwcm9jZXNzZXMuICBOb3RlLCBob3dldmVyLCB0aGF0IGlmIGEgcHJveHkgaXMgc2VudCB0byB0aGUKLWNvcnJlc3BvbmRpbmcgbWFuYWdlcidzIHByb2Nlc3MgdGhlbiB1bnBpY2tsaW5nIGl0IHdpbGwgcHJvZHVjZSB0aGUgcmVmZXJlbnQKLWl0c2VsZi4gIFRoaXMgbWVhbnMsIGZvciBleGFtcGxlLCB0aGF0IG9uZSBzaGFyZWQgb2JqZWN0IGNhbiBjb250YWluIGEgc2Vjb25kOgorcGFzc2VkIGJldHdlZW4gcHJvY2Vzc2VzLiAgQXMgc3VjaCwgYSByZWZlcmVudCBjYW4gY29udGFpbgorOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgLiAgVGhpcyBwZXJtaXRzIG5lc3Rpbmcgb2YgdGhlc2UgbWFuYWdlZAorbGlzdHMsIGRpY3RzLCBhbmQgb3RoZXIgOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgOgogCiAuLiBkb2N0ZXN0OjoKIApAQCAtMTkxOSwxMCArMTkxNCw0NiBAQAogICAgPj4+IGIgPSBtYW5hZ2VyLmxpc3QoKQogICAgPj4+IGEuYXBwZW5kKGIpICAgICAgICAgIyByZWZlcmVudCBvZiBhIG5vdyBjb250YWlucyByZWZlcmVudCBvZiBiCiAgICA+Pj4gcHJpbnQoYSwgYikKLSAgIFtbXV0gW10KKyAgIFs8TGlzdFByb3h5IG9iamVjdCwgdHlwZWlkICdsaXN0JyBhdCAuLi4+XSBbXQogICAgPj4+IGIuYXBwZW5kKCdoZWxsbycpCi0gICA+Pj4gcHJpbnQoYSwgYikKLSAgIFtbJ2hlbGxvJ11dIFsnaGVsbG8nXQorICAgPj4+IHByaW50KGFbMF0sIGIpCisgICBbJ2hlbGxvJ10gWydoZWxsbyddCisKK1NpbWlsYXJseSwgZGljdCBhbmQgbGlzdCBwcm94aWVzIG1heSBiZSBuZXN0ZWQgaW5zaWRlIG9uZSBhbm90aGVyOjoKKworICAgPj4+IGxfb3V0ZXIgPSBtYW5hZ2VyLmxpc3QoWyBtYW5hZ2VyLmRpY3QoKSBmb3IgaSBpbiByYW5nZSgyKSBdKQorICAgPj4+IGRfZmlyc3RfaW5uZXIgPSBsX291dGVyWzBdCisgICA+Pj4gZF9maXJzdF9pbm5lclsnYSddID0gMQorICAgPj4+IGRfZmlyc3RfaW5uZXJbJ2InXSA9IDIKKyAgID4+PiBsX291dGVyWzFdWydjJ10gPSAzCisgICA+Pj4gbF9vdXRlclsxXVsneiddID0gMjYKKyAgID4+PiBwcmludChsX291dGVyWzBdKQorICAgeydhJzogMSwgJ2InOiAyfQorICAgPj4+IHByaW50KGxfb3V0ZXJbMV0pCisgICB7J2MnOiAzLCAneic6IDI2fQorCitJZiBzdGFuZGFyZCAobm9uLXByb3h5KSA6Y2xhc3M6YGxpc3RgIG9yIDpjbGFzczpgZGljdGAgb2JqZWN0cyBhcmUgY29udGFpbmVkCitpbiBhIHJlZmVyZW50LCBtb2RpZmljYXRpb25zIHRvIHRob3NlIG11dGFibGUgdmFsdWVzIHdpbGwgbm90IGJlIHByb3BhZ2F0ZWQKK3Rocm91Z2ggdGhlIG1hbmFnZXIgYmVjYXVzZSB0aGUgcHJveHkgaGFzIG5vIHdheSBvZiBrbm93aW5nIHdoZW4gdGhlIHZhbHVlcworY29udGFpbmVkIHdpdGhpbiBhcmUgbW9kaWZpZWQuICBIb3dldmVyLCBzdG9yaW5nIGEgdmFsdWUgaW4gYSBjb250YWluZXIgcHJveHkKKyh3aGljaCB0cmlnZ2VycyBhIGBgX19zZXRpdGVtX19gYCBvbiB0aGUgcHJveHkgb2JqZWN0KSBkb2VzIHByb3BhZ2F0ZSB0aHJvdWdoCit0aGUgbWFuYWdlciBhbmQgc28gdG8gZWZmZWN0aXZlbHkgbW9kaWZ5IHN1Y2ggYW4gaXRlbSwgb25lIGNvdWxkIHJlLWFzc2lnbiB0aGUKK21vZGlmaWVkIHZhbHVlIHRvIHRoZSBjb250YWluZXIgcHJveHk6OgorCisgICAjIGNyZWF0ZSBhIGxpc3QgcHJveHkgYW5kIGFwcGVuZCBhIG11dGFibGUgb2JqZWN0IChhIGRpY3Rpb25hcnkpCisgICBscHJveHkgPSBtYW5hZ2VyLmxpc3QoKQorICAgbHByb3h5LmFwcGVuZCh7fSkKKyAgICMgbm93IG11dGF0ZSB0aGUgZGljdGlvbmFyeQorICAgZCA9IGxwcm94eVswXQorICAgZFsnYSddID0gMQorICAgZFsnYiddID0gMgorICAgIyBhdCB0aGlzIHBvaW50LCB0aGUgY2hhbmdlcyB0byBkIGFyZSBub3QgeWV0IHN5bmNlZCwgYnV0IGJ5CisgICAjIHVwZGF0aW5nIHRoZSBkaWN0aW9uYXJ5LCB0aGUgcHJveHkgaXMgbm90aWZpZWQgb2YgdGhlIGNoYW5nZQorICAgbHByb3h5WzBdID0gZAorCitUaGlzIGFwcHJvYWNoIGlzIHBlcmhhcHMgbGVzcyBjb252ZW5pZW50IHRoYW4gZW1wbG95aW5nIG5lc3RlZAorOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgIGZvciBtb3N0IHVzZSBjYXNlcyBidXQgYWxzbworZGVtb25zdHJhdGVzIGEgbGV2ZWwgb2YgY29udHJvbCBvdmVyIHRoZSBzeW5jaHJvbml6YXRpb24uCiAKIC4uIG5vdGU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdCBiL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CmluZGV4IGJmMGRmYWMuLjQwNjA1NGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CkBAIC02MSw2ICs2MSw5IEBACiAgICBwbGF0Zm9ybXMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIHRoZSBmdW5jdGlvbiA6ZnVuYzpgbm9ybXBhdGhgIGFzCiAgICBmb2xsb3dzOiBgYG5vcm1wYXRoKGpvaW4ob3MuZ2V0Y3dkKCksIHBhdGgpKWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGJhc2VuYW1lKHBhdGgpCiAKQEAgLTcxLDYgKzc0LDkgQEAKICAgIGBgJy9mb28vYmFyLydgYCByZXR1cm5zIGBgJ2JhcidgYCwgdGhlIDpmdW5jOmBiYXNlbmFtZWAgZnVuY3Rpb24gcmV0dXJucyBhbgogICAgZW1wdHkgc3RyaW5nIChgYCcnYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbW1vbnBhdGgocGF0aHMpCiAKQEAgLTgzLDYgKzg5LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgc2VxdWVuY2Ugb2YgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAuCisKIAogLi4gZnVuY3Rpb246OiBjb21tb25wcmVmaXgobGlzdCkKIApAQCAtMTA0LDEyICsxMTMsMTggQEAKICAgICAgICAgPj4+IG9zLnBhdGguY29tbW9ucGF0aChbJy91c3IvbGliJywgJy91c3IvbG9jYWwvbGliJ10pCiAgICAgICAgICcvdXNyJwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGRpcm5hbWUocGF0aCkKIAogICAgUmV0dXJuIHRoZSBkaXJlY3RvcnkgbmFtZSBvZiBwYXRobmFtZSAqcGF0aCouICBUaGlzIGlzIHRoZSBmaXJzdCBlbGVtZW50IG9mCiAgICB0aGUgcGFpciByZXR1cm5lZCBieSBwYXNzaW5nICpwYXRoKiB0byB0aGUgZnVuY3Rpb24gOmZ1bmM6YHNwbGl0YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBleGlzdHMocGF0aCkKIApAQCAtMTIzLDYgKzEzOCw5IEBACiAgICAgICAqcGF0aCogY2FuIG5vdyBiZSBhbiBpbnRlZ2VyOiBgYFRydWVgYCBpcyByZXR1cm5lZCBpZiBpdCBpcyBhbgogICAgICAgIG9wZW4gZmlsZSBkZXNjcmlwdG9yLCBgYEZhbHNlYGAgb3RoZXJ3aXNlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGxleGlzdHMocGF0aCkKIApAQCAtMTMwLDYgKzE0OCw5IEBACiAgICBicm9rZW4gc3ltYm9saWMgbGlua3MuICAgRXF1aXZhbGVudCB0byA6ZnVuYzpgZXhpc3RzYCBvbiBwbGF0Zm9ybXMgbGFja2luZwogICAgOmZ1bmM6YG9zLmxzdGF0YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBleHBhbmR1c2VyKHBhdGgpCiAKQEAgLTE1MSw2ICsxNzIsOSBAQAogICAgSWYgdGhlIGV4cGFuc2lvbiBmYWlscyBvciBpZiB0aGUgcGF0aCBkb2VzIG5vdCBiZWdpbiB3aXRoIGEgdGlsZGUsIHRoZSBwYXRoIGlzCiAgICByZXR1cm5lZCB1bmNoYW5nZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZXhwYW5kdmFycyhwYXRoKQogCkBAIC0xNjIsNiArMTg2LDkgQEAKICAgIE9uIFdpbmRvd3MsIGBgJW5hbWUlYGAgZXhwYW5zaW9ucyBhcmUgc3VwcG9ydGVkIGluIGFkZGl0aW9uIHRvIGBgJG5hbWVgYCBhbmQKICAgIGBgJHtuYW1lfWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGF0aW1lKHBhdGgpCiAKQEAgLTE4Miw2ICsyMDksOSBAQAogICAgSWYgOmZ1bmM6YG9zLnN0YXRfZmxvYXRfdGltZXNgIHJldHVybnMgYGBUcnVlYGAsIHRoZSByZXN1bHQgaXMgYSBmbG9hdGluZyBwb2ludAogICAgbnVtYmVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGN0aW1lKHBhdGgpCiAKQEAgLTE5MSwxMiArMjIxLDE4IEBACiAgICB0aGUgIDptb2Q6YHRpbWVgIG1vZHVsZSkuICBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBvcgogICAgaXMgaW5hY2Nlc3NpYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldHNpemUocGF0aCkKIAogICAgUmV0dXJuIHRoZSBzaXplLCBpbiBieXRlcywgb2YgKnBhdGgqLiAgUmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGZpbGUgZG9lcwogICAgbm90IGV4aXN0IG9yIGlzIGluYWNjZXNzaWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc2FicyhwYXRoKQogCkBAIC0yMDQsMjQgKzI0MCwzNiBAQAogICAgYmVnaW5zIHdpdGggYSBzbGFzaCwgb24gV2luZG93cyB0aGF0IGl0IGJlZ2lucyB3aXRoIGEgKGJhY2spc2xhc2ggYWZ0ZXIgY2hvcHBpbmcKICAgIG9mZiBhIHBvdGVudGlhbCBkcml2ZSBsZXR0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNmaWxlKHBhdGgpCiAKICAgIFJldHVybiBgYFRydWVgYCBpZiAqcGF0aCogaXMgYW4gZXhpc3RpbmcgcmVndWxhciBmaWxlLiAgVGhpcyBmb2xsb3dzIHN5bWJvbGljCiAgICBsaW5rcywgc28gYm90aCA6ZnVuYzpgaXNsaW5rYCBhbmQgOmZ1bmM6YGlzZmlsZWAgY2FuIGJlIHRydWUgZm9yIHRoZSBzYW1lIHBhdGguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNkaXIocGF0aCkKIAogICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiBpcyBhbiBleGlzdGluZyBkaXJlY3RvcnkuICBUaGlzIGZvbGxvd3Mgc3ltYm9saWMKICAgIGxpbmtzLCBzbyBib3RoIDpmdW5jOmBpc2xpbmtgIGFuZCA6ZnVuYzpgaXNkaXJgIGNhbiBiZSB0cnVlIGZvciB0aGUgc2FtZSBwYXRoLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzbGluayhwYXRoKQogCiAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIHJlZmVycyB0byBhIGRpcmVjdG9yeSBlbnRyeSB0aGF0IGlzIGEgc3ltYm9saWMgbGluay4KICAgIEFsd2F5cyBgYEZhbHNlYGAgaWYgc3ltYm9saWMgbGlua3MgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIFB5dGhvbiBydW50aW1lLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzbW91bnQocGF0aCkKIApAQCAtMjM3LDYgKzI4NSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKICAgICAgIFN1cHBvcnQgZm9yIGRldGVjdGluZyBub24tcm9vdCBtb3VudCBwb2ludHMgb24gV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBqb2luKHBhdGgsICpwYXRocykKIApAQCAtMjU1LDEzICszMDYsMjAgQEAKICAgIGBgb3MucGF0aC5qb2luKCJjOiIsICJmb28iKWBgIHJlcHJlc2VudHMgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50CiAgICBkaXJlY3Rvcnkgb24gZHJpdmUgOmZpbGU6YEM6YCAoOmZpbGU6YGM6Zm9vYCksIG5vdCA6ZmlsZTpgYzpcXGZvb2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqcGF0aCogYW5kICpwYXRocyouCisKIAogLi4gZnVuY3Rpb246OiBub3JtY2FzZShwYXRoKQogCiAgICBOb3JtYWxpemUgdGhlIGNhc2Ugb2YgYSBwYXRobmFtZS4gIE9uIFVuaXggYW5kIE1hYyBPUyBYLCB0aGlzIHJldHVybnMgdGhlCiAgICBwYXRoIHVuY2hhbmdlZDsgb24gY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcywgaXQgY29udmVydHMgdGhlIHBhdGggdG8KICAgIGxvd2VyY2FzZS4gIE9uIFdpbmRvd3MsIGl0IGFsc28gY29udmVydHMgZm9yd2FyZCBzbGFzaGVzIHRvIGJhY2t3YXJkIHNsYXNoZXMuCi0gICBSYWlzZSBhIFR5cGVFcnJvciBpZiB0aGUgdHlwZSBvZiAqcGF0aCogaXMgbm90IGBgc3RyYGAgb3IgYGBieXRlc2BgLgorICAgUmFpc2UgYSBUeXBlRXJyb3IgaWYgdGhlIHR5cGUgb2YgKnBhdGgqIGlzIG5vdCBgYHN0cmBgIG9yIGBgYnl0ZXNgYCAoZGlyZWN0bHkKKyAgIG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIAogLi4gZnVuY3Rpb246OiBub3JtcGF0aChwYXRoKQpAQCAtMjcyLDEyICszMzAsMTggQEAKICAgIHRoYXQgY29udGFpbnMgc3ltYm9saWMgbGlua3MuICBPbiBXaW5kb3dzLCBpdCBjb252ZXJ0cyBmb3J3YXJkIHNsYXNoZXMgdG8KICAgIGJhY2t3YXJkIHNsYXNoZXMuIFRvIG5vcm1hbGl6ZSBjYXNlLCB1c2UgOmZ1bmM6YG5vcm1jYXNlYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZWFscGF0aChwYXRoKQogCiAgICBSZXR1cm4gdGhlIGNhbm9uaWNhbCBwYXRoIG9mIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUsIGVsaW1pbmF0aW5nIGFueSBzeW1ib2xpYwogICAgbGlua3MgZW5jb3VudGVyZWQgaW4gdGhlIHBhdGggKGlmIHRoZXkgYXJlIHN1cHBvcnRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVscGF0aChwYXRoLCBzdGFydD1vcy5jdXJkaXIpCiAKQEAgLTI5MCw2ICszNTQsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2FtZWZpbGUocGF0aDEsIHBhdGgyKQogCkBAIC0zMDUsNiArMzcyLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBXaW5kb3dzIG5vdyB1c2VzIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIGFzIGFsbCBvdGhlciBwbGF0Zm9ybXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2FtZW9wZW5maWxlKGZwMSwgZnAyKQogCkBAIC0zMTUsNiArMzg1LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2FtZXN0YXQoc3RhdDEsIHN0YXQyKQogCkBAIC0zMjgsNiArNDAxLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXQocGF0aCkKIApAQCAtMzQxLDYgKzQxNyw5IEBACiAgICAoYnV0IHRoZSBzdHJpbmdzIG1heSBkaWZmZXIpLiAgQWxzbyBzZWUgdGhlIGZ1bmN0aW9ucyA6ZnVuYzpgZGlybmFtZWAgYW5kCiAgICA6ZnVuYzpgYmFzZW5hbWVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0ZHJpdmUocGF0aCkKIApAQCAtMzU5LDYgKzQzOCw5IEBACiAgICBhbmQgc2hhcmUsIHVwIHRvIGJ1dCBub3QgaW5jbHVkaW5nIHRoZSBmb3VydGggc2VwYXJhdG9yLgogICAgZS5nLiBgYHNwbGl0ZHJpdmUoIi8vaG9zdC9jb21wdXRlci9kaXIiKWBgIHJldHVybnMgYGAoIi8vaG9zdC9jb21wdXRlciIsICIvZGlyIilgYAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0ZXh0KHBhdGgpCiAKQEAgLTM2Nyw2ICs0NDksOSBAQAogICAgcGVyaW9kLiBMZWFkaW5nIHBlcmlvZHMgb24gdGhlIGJhc2VuYW1lIGFyZSAgaWdub3JlZDsgYGBzcGxpdGV4dCgnLmNzaHJjJylgYAogICAgcmV0dXJucyAgYGAoJy5jc2hyYycsICcnKWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0dW5jKHBhdGgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnJzdCBiL0RvYy9saWJyYXJ5L29zLnJzdAppbmRleCAzMTBjZTE4Li45MjVhNzIyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucnN0CkBAIC01Nyw3ICs1Nyw3IEBACiAKICAgIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCBtb2R1bGUgaW1wb3J0ZWQuICBUaGUgZm9sbG93aW5nCiAgICBuYW1lcyBoYXZlIGN1cnJlbnRseSBiZWVuIHJlZ2lzdGVyZWQ6IGBgJ3Bvc2l4J2BgLCBgYCdudCdgYCwKLSAgIGBgJ2NlJ2BgLCBgYCdqYXZhJ2BgLgorICAgYGAnamF2YSdgYC4KIAogICAgLi4gc2VlYWxzbzo6CiAgICAgICA6YXR0cjpgc3lzLnBsYXRmb3JtYCBoYXMgYSBmaW5lciBncmFudWxhcml0eS4gIDpmdW5jOmBvcy51bmFtZWAgZ2l2ZXMKQEAgLTE3MSwyMyArMTcxLDYwIEBACiAKIC4uIGZ1bmN0aW9uOjogZnNlbmNvZGUoZmlsZW5hbWUpCiAKLSAgIEVuY29kZSAqZmlsZW5hbWUqIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgCi0gICBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24gV2luZG93czsgcmV0dXJuIDpjbGFzczpgYnl0ZXNgIHVuY2hhbmdlZC4KKyAgIEVuY29kZSA6dGVybTpgcGF0aC1saWtlIDxwYXRoLWxpa2Ugb2JqZWN0PmAgKmZpbGVuYW1lKiB0byB0aGUgZmlsZXN5c3RlbQorICAgZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgIG9uCisgICBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBieXRlc2AgdW5jaGFuZ2VkLgogCiAgICA6ZnVuYzpgZnNkZWNvZGVgIGlzIHRoZSByZXZlcnNlIGZ1bmN0aW9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnQgYWRkZWQgdG8gYWNjZXB0IG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYAorICAgICAgaW50ZXJmYWNlLgorCiAKIC4uIGZ1bmN0aW9uOjogZnNkZWNvZGUoZmlsZW5hbWUpCiAKLSAgIERlY29kZSAqZmlsZW5hbWUqIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAKLSAgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYCBvbiBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBzdHJgIHVuY2hhbmdlZC4KKyAgIERlY29kZSB0aGUgOnRlcm06YHBhdGgtbGlrZSA8cGF0aC1saWtlIG9iamVjdD5gICpmaWxlbmFtZSogZnJvbSB0aGUKKyAgIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgCisgICBvbiBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBzdHJgIHVuY2hhbmdlZC4KIAogICAgOmZ1bmM6YGZzZW5jb2RlYCBpcyB0aGUgcmV2ZXJzZSBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0IGFkZGVkIHRvIGFjY2VwdCBvYmplY3RzIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAKKyAgICAgIGludGVyZmFjZS4KKworCisuLiBmdW5jdGlvbjo6IGZzcGF0aChwYXRoKQorCisgICBSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXRoLgorCisgICBJZiA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2AgaXMgcGFzc2VkIGluLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuCisgICBPdGhlcndpc2UgOm1ldGg6YH5vcy5QYXRoTGlrZS5fX2ZzcGF0aF9fYCBpcyBjYWxsZWQgYW5kIGl0cyB2YWx1ZSBpcworICAgcmV0dXJuZWQgYXMgbG9uZyBhcyBpdCBpcyBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuCisgICBJbiBhbGwgb3RoZXIgY2FzZXMsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBjbGFzczo6IFBhdGhMaWtlCisKKyAgIEFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3Igb2JqZWN0cyByZXByZXNlbnRpbmcgYSBmaWxlIHN5c3RlbSBwYXRoLAorICAgZS5nLiA6Y2xhc3M6YHBhdGhsaWIuUHVyZVBhdGhgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gYWJzdHJhY3RtZXRob2Q6OiBfX2ZzcGF0aF9fKCkKKworICAgICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKKyAgICAgIFRoZSBtZXRob2Qgc2hvdWxkIG9ubHkgcmV0dXJuIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCwKKyAgICAgIHdpdGggdGhlIHByZWZlcmVuY2UgYmVpbmcgZm9yIDpjbGFzczpgc3RyYC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGVudihrZXksIGRlZmF1bHQ9Tm9uZSkKIApAQCAtODk2LDYgKzkzMyw5IEBACiAgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCiAgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGFyZSBvcHRpb25zIGZvciB0aGUgKmZsYWdzKiBwYXJhbWV0ZXIgdG8gdGhlCiA6ZnVuYzpgfm9zLm9wZW5gIGZ1bmN0aW9uLiAgVGhleSBjYW4gYmUgY29tYmluZWQgdXNpbmcgdGhlIGJpdHdpc2UgT1Igb3BlcmF0b3IKIGBgfGBgLiAgU29tZSBvZiB0aGVtIGFyZSBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuICBGb3IgZGVzY3JpcHRpb25zIG9mCkBAIC0xMzkyLDYgKzE0MzIsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiwgKmVmZmVjdGl2ZV9pZHMqLCBhbmQgKmZvbGxvd19zeW1saW5rcyogcGFyYW1ldGVycy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZGF0YTo6IEZfT0sKICAgICAgICAgICBSX09LCkBAIC0xNDE2LDYgKzE0NTksOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYSBmaWxlIGRlc2NyaXB0b3IKICAgICAgIG9uIHNvbWUgcGxhdGZvcm1zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNoZmxhZ3MocGF0aCwgZmxhZ3MsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNDQyLDYgKzE0ODgsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2htb2QocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNDgzLDYgKzE1MzIsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IsCiAgICAgICBhbmQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2hvd24ocGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTUwMiw2ICsxNTU0LDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKICAgICAgIGFuZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2hyb290KHBhdGgpCiAKQEAgLTE1MDksNiArMTU2NCw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBmY2hkaXIoZmQpCiAKQEAgLTE1MzcsNiArMTU5NSw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsY2htb2QocGF0aCwgbW9kZSkKIApAQCAtMTU0Nyw2ICsxNjA4LDggQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAogLi4gZnVuY3Rpb246OiBsY2hvd24ocGF0aCwgdWlkLCBnaWQpCiAKQEAgLTE1NTYsNiArMTYxOSw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsaW5rKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTE1NzMsNiArMTYzOSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSAqc3JjX2Rpcl9mZCosICpkc3RfZGlyX2ZkKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IGxpc3RkaXIocGF0aD0nLicpCiAKQEAgLTE1ODAsOCArMTY0OSw5IEBACiAgICAqcGF0aCouICBUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIsIGFuZCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsCiAgICBlbnRyaWVzIGBgJy4nYGAgYW5kIGBgJy4uJ2BgIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LgogCi0gICAqcGF0aCogbWF5IGJlIGVpdGhlciBvZiB0eXBlIGBgc3RyYGAgb3Igb2YgdHlwZSBgYGJ5dGVzYGAuICBJZiAqcGF0aCoKLSAgIGlzIG9mIHR5cGUgYGBieXRlc2BgLCB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBvZiB0eXBlIGBgYnl0ZXNgYDsKKyAgICpwYXRoKiBtYXkgYmUgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuICBJZiAqcGF0aCogaXMgb2YgdHlwZSBgYGJ5dGVzYGAKKyAgIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSksCisgICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBvZiB0eXBlIGBgYnl0ZXNgYDsKICAgIGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzLCB0aGV5IHdpbGwgYmUgb2YgdHlwZSBgYHN0cmBgLgogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvcgpAQCAtMTYwMiw2ICsxNjcyLDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGxzdGF0KHBhdGgsIFwqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTYyOCw2ICsxNzAxLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogbWtkaXIocGF0aCwgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE2NTIsNiArMTcyOCw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBtYWtlZGlycyhuYW1lLCBtb2RlPTBvNzc3LCBleGlzdF9vaz1GYWxzZSkKIApAQCAtMTY4NSw2ICsxNzY0LDkgQEAKICAgICAgIG1vZGUgb2YgdGhlIGV4aXN0aW5nIGRpcmVjdG9yeS4gU2luY2UgdGhpcyBiZWhhdmlvciB3YXMgaW1wb3NzaWJsZSB0bwogICAgICAgaW1wbGVtZW50IHNhZmVseSwgaXQgd2FzIHJlbW92ZWQgaW4gUHl0aG9uIDMuNC4xLiBTZWUgOmlzc3VlOmAyMTA4MmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWtmaWZvKHBhdGgsIG1vZGU9MG82NjYsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xNzA1LDYgKzE3ODcsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWtub2QocGF0aCwgbW9kZT0wbzYwMCwgZGV2aWNlPTAsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xNzI0LDYgKzE4MDksOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWFqb3IoZGV2aWNlKQogCkBAIC0xNzYyLDYgKzE4NTAsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBwYXRoY29uZl9uYW1lcwogCkBAIC0xNzc5LDkgKzE4NzAsMTAgQEAKICAgIG1heSBiZSBjb252ZXJ0ZWQgdG8gYW4gYWJzb2x1dGUgcGF0aG5hbWUgdXNpbmcKICAgIGBgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShwYXRoKSwgcmVzdWx0KWBgLgogCi0gICBJZiB0aGUgKnBhdGgqIGlzIGEgc3RyaW5nIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGFsc28gYmUgYSBzdHJpbmcgb2JqZWN0LAorICAgSWYgdGhlICpwYXRoKiBpcyBhIHN0cmluZyBvYmplY3QgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCBhCisgICA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLCB0aGUgcmVzdWx0IHdpbGwgYWxzbyBiZSBhIHN0cmluZyBvYmplY3QsCiAgICBhbmQgdGhlIGNhbGwgbWF5IHJhaXNlIGEgVW5pY29kZURlY29kZUVycm9yLiBJZiB0aGUgKnBhdGgqIGlzIGEgYnl0ZXMKLSAgIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgorICAgb2JqZWN0IChkaXJlY3Qgb3IgaW5kaXJlY3RseSksIHRoZSByZXN1bHQgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdC4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycwogICAgPGRpcl9mZD5gLgpAQCAtMTc5NCw2ICsxODg2LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbW92ZShwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTgxMiw2ICsxOTA3LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbW92ZWRpcnMobmFtZSkKIApAQCAtMTgyNiw2ICsxOTI0LDkgQEAKICAgIHRoZXkgYXJlIGVtcHR5LiBSYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGxlYWYgZGlyZWN0b3J5IGNvdWxkIG5vdCBiZQogICAgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVuYW1lKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSkKIApAQCAtMTg0NSw2ICsxOTQ2LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpzcmNfZGlyX2ZkKiBhbmQgKmRzdF9kaXJfZmQqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbmFtZXMob2xkLCBuZXcpCiAKQEAgLTE4NTgsNiArMTk2Miw5IEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGNhbiBmYWlsIHdpdGggdGhlIG5ldyBkaXJlY3Rvcnkgc3RydWN0dXJlIG1hZGUgaWYgeW91IGxhY2sKICAgICAgIHBlcm1pc3Npb25zIG5lZWRlZCB0byByZW1vdmUgdGhlIGxlYWYgZGlyZWN0b3J5IG9yIGZpbGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqb2xkKiBhbmQgKm5ldyouCisKIAogLi4gZnVuY3Rpb246OiByZXBsYWNlKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSkKIApAQCAtMTg3Miw2ICsxOTc5LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiBybWRpcihwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTg4NSwzOCArMTk5NSw1OCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNjYW5kaXIocGF0aD0nLicpCiAKLSAgIFJldHVybiBhbiBpdGVyYXRvciBvZiA6Y2xhc3M6YERpckVudHJ5YCBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudHJpZXMKLSAgIGluIHRoZSBkaXJlY3RvcnkgZ2l2ZW4gYnkgKnBhdGgqLiBUaGUgZW50cmllcyBhcmUgeWllbGRlZCBpbiBhcmJpdHJhcnkKLSAgIG9yZGVyLCBhbmQgdGhlIHNwZWNpYWwgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBhcmUgbm90IGluY2x1ZGVkLgorICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG9mIDpjbGFzczpgb3MuRGlyRW50cnlgIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUKKyAgIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeSBnaXZlbiBieSAqcGF0aCouIFRoZSBlbnRyaWVzIGFyZSB5aWVsZGVkIGluCisgICBhcmJpdHJhcnkgb3JkZXIsIGFuZCB0aGUgc3BlY2lhbCBlbnRyaWVzIGBgJy4nYGAgYW5kIGBgJy4uJ2BgIGFyZSBub3QKKyAgIGluY2x1ZGVkLgogCiAgICBVc2luZyA6ZnVuYzpgc2NhbmRpcmAgaW5zdGVhZCBvZiA6ZnVuYzpgbGlzdGRpcmAgY2FuIHNpZ25pZmljYW50bHkKICAgIGluY3JlYXNlIHRoZSBwZXJmb3JtYW5jZSBvZiBjb2RlIHRoYXQgYWxzbyBuZWVkcyBmaWxlIHR5cGUgb3IgZmlsZQotICAgYXR0cmlidXRlIGluZm9ybWF0aW9uLCBiZWNhdXNlIDpjbGFzczpgRGlyRW50cnlgIG9iamVjdHMgZXhwb3NlIHRoaXMKKyAgIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgYmVjYXVzZSA6Y2xhc3M6YG9zLkRpckVudHJ5YCBvYmplY3RzIGV4cG9zZSB0aGlzCiAgICBpbmZvcm1hdGlvbiBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyBpdCB3aGVuIHNjYW5uaW5nIGEgZGlyZWN0b3J5LgotICAgQWxsIDpjbGFzczpgRGlyRW50cnlgIG1ldGhvZHMgbWF5IHBlcmZvcm0gYSBzeXN0ZW0gY2FsbCwgYnV0Ci0gICA6ZnVuYzpgfkRpckVudHJ5LmlzX2RpcmAgYW5kIDpmdW5jOmB+RGlyRW50cnkuaXNfZmlsZWAgdXN1YWxseSBvbmx5Ci0gICByZXF1aXJlIGEgc3lzdGVtIGNhbGwgZm9yIHN5bWJvbGljIGxpbmtzOyA6ZnVuYzpgRGlyRW50cnkuc3RhdGAKKyAgIEFsbCA6Y2xhc3M6YG9zLkRpckVudHJ5YCBtZXRob2RzIG1heSBwZXJmb3JtIGEgc3lzdGVtIGNhbGwsIGJ1dAorICAgOmZ1bmM6YH5vcy5EaXJFbnRyeS5pc19kaXJgIGFuZCA6ZnVuYzpgfm9zLkRpckVudHJ5LmlzX2ZpbGVgIHVzdWFsbHkgb25seQorICAgcmVxdWlyZSBhIHN5c3RlbSBjYWxsIGZvciBzeW1ib2xpYyBsaW5rczsgOmZ1bmM6YG9zLkRpckVudHJ5LnN0YXRgCiAgICBhbHdheXMgcmVxdWlyZXMgYSBzeXN0ZW0gY2FsbCBvbiBVbml4IGJ1dCBvbmx5IHJlcXVpcmVzIG9uZSBmb3IKICAgIHN5bWJvbGljIGxpbmtzIG9uIFdpbmRvd3MuCiAKLSAgIE9uIFVuaXgsICpwYXRoKiBjYW4gYmUgb2YgdHlwZSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2AgKHVzZQorICAgT24gVW5peCwgKnBhdGgqIGNhbiBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCAoZWl0aGVyCisgICBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZTsgdXNlCiAgICA6ZnVuYzpgfm9zLmZzZW5jb2RlYCBhbmQgOmZ1bmM6YH5vcy5mc2RlY29kZWAgdG8gZW5jb2RlIGFuZCBkZWNvZGUKICAgIDpjbGFzczpgYnl0ZXNgIHBhdGhzKS4gT24gV2luZG93cywgKnBhdGgqIG11c3QgYmUgb2YgdHlwZSA6Y2xhc3M6YHN0cmAuCi0gICBPbiBib3RoIHN5c3RlbXMsIHRoZSB0eXBlIG9mIHRoZSA6YXR0cjpgfkRpckVudHJ5Lm5hbWVgIGFuZAotICAgOmF0dHI6YH5EaXJFbnRyeS5wYXRoYCBhdHRyaWJ1dGVzIG9mIGVhY2ggOmNsYXNzOmBEaXJFbnRyeWAgd2lsbCBiZSBvZgorICAgT24gYm90aCBzeXN0ZW1zLCB0aGUgdHlwZSBvZiB0aGUgOmF0dHI6YH5vcy5EaXJFbnRyeS5uYW1lYCBhbmQKKyAgIDphdHRyOmB+b3MuRGlyRW50cnkucGF0aGAgYXR0cmlidXRlcyBvZiBlYWNoIDpjbGFzczpgb3MuRGlyRW50cnlgIHdpbGwgYmUgb2YKICAgIHRoZSBzYW1lIHR5cGUgYXMgKnBhdGgqLgogCisgICBUaGUgOmZ1bmM6YHNjYW5kaXJgIGl0ZXJhdG9yIHN1cHBvcnRzIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbAorICAgYW5kIGhhcyB0aGUgZm9sbG93aW5nIG1ldGhvZDoKKworICAgLi4gbWV0aG9kOjogc2NhbmRpci5jbG9zZSgpCisKKyAgICAgIENsb3NlIHRoZSBpdGVyYXRvciBhbmQgZnJlZSBhY3F1aXJlZCByZXNvdXJjZXMuCisKKyAgICAgIFRoaXMgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgaXRlcmF0b3IgaXMgZXhoYXVzdGVkIG9yIGdhcmJhZ2UKKyAgICAgIGNvbGxlY3RlZCwgb3Igd2hlbiBhbiBlcnJvciBoYXBwZW5zIGR1cmluZyBpdGVyYXRpbmcuICBIb3dldmVyIGl0CisgICAgICBpcyBhZHZpc2FibGUgdG8gY2FsbCBpdCBleHBsaWNpdGx5IG9yIHVzZSB0aGUgOmtleXdvcmQ6YHdpdGhgCisgICAgICBzdGF0ZW1lbnQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgYSBzaW1wbGUgdXNlIG9mIDpmdW5jOmBzY2FuZGlyYCB0byBkaXNwbGF5IGFsbAogICAgdGhlIGZpbGVzIChleGNsdWRpbmcgZGlyZWN0b3JpZXMpIGluIHRoZSBnaXZlbiAqcGF0aCogdGhhdCBkb24ndCBzdGFydCB3aXRoCiAgICBgYCcuJ2BgLiBUaGUgYGBlbnRyeS5pc19maWxlKClgYCBjYWxsIHdpbGwgZ2VuZXJhbGx5IG5vdCBtYWtlIGFuIGFkZGl0aW9uYWwKICAgIHN5c3RlbSBjYWxsOjoKIAotICAgICAgZm9yIGVudHJ5IGluIG9zLnNjYW5kaXIocGF0aCk6Ci0gICAgICAgICBpZiBub3QgZW50cnkubmFtZS5zdGFydHN3aXRoKCcuJykgYW5kIGVudHJ5LmlzX2ZpbGUoKToKLSAgICAgICAgICAgICBwcmludChlbnRyeS5uYW1lKQorICAgICAgd2l0aCBvcy5zY2FuZGlyKHBhdGgpIGFzIGl0OgorICAgICAgICAgIGZvciBlbnRyeSBpbiBpdDoKKyAgICAgICAgICAgICAgaWYgbm90IGVudHJ5Lm5hbWUuc3RhcnRzd2l0aCgnLicpIGFuZCBlbnRyeS5pc19maWxlKCk6CisgICAgICAgICAgICAgICAgICBwcmludChlbnRyeS5uYW1lKQogCiAgICAuLiBub3RlOjoKIApAQCAtMTkzMiw2ICsyMDYyLDE0IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbCBhbmQgdGhlCisgICAgICA6ZnVuYzpgfnNjYW5kaXIuY2xvc2UoKWAgbWV0aG9kLiAgSWYgYSA6ZnVuYzpgc2NhbmRpcmAgaXRlcmF0b3IgaXMgbmVpdGhlcgorICAgICAgZXhoYXVzdGVkIG5vciBleHBsaWNpdGx5IGNsb3NlZCBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2lsbCBiZSBlbWl0dGVkCisgICAgICBpbiBpdHMgZGVzdHJ1Y3Rvci4KKworICAgICAgVGhlIGZ1bmN0aW9uIGFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBEaXJFbnRyeQogCkBAIC0xOTQwLDE5ICsyMDc4LDIyIEBACiAKICAgIDpmdW5jOmBzY2FuZGlyYCB3aWxsIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGlzIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlIHdpdGhvdXQKICAgIG1ha2luZyBhZGRpdGlvbmFsIHN5c3RlbSBjYWxscy4gV2hlbiBhIGBgc3RhdCgpYGAgb3IgYGBsc3RhdCgpYGAgc3lzdGVtIGNhbGwKLSAgIGlzIG1hZGUsIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0IHdpbGwgY2FjaGUgdGhlIHJlc3VsdC4KKyAgIGlzIG1hZGUsIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0IHdpbGwgY2FjaGUgdGhlIHJlc3VsdC4KIAotICAgYGBEaXJFbnRyeWBgIGluc3RhbmNlcyBhcmUgbm90IGludGVuZGVkIHRvIGJlIHN0b3JlZCBpbiBsb25nLWxpdmVkIGRhdGEKKyAgIGBgb3MuRGlyRW50cnlgYCBpbnN0YW5jZXMgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBzdG9yZWQgaW4gbG9uZy1saXZlZCBkYXRhCiAgICBzdHJ1Y3R1cmVzOyBpZiB5b3Uga25vdyB0aGUgZmlsZSBtZXRhZGF0YSBoYXMgY2hhbmdlZCBvciBpZiBhIGxvbmcgdGltZSBoYXMKICAgIGVsYXBzZWQgc2luY2UgY2FsbGluZyA6ZnVuYzpgc2NhbmRpcmAsIGNhbGwgYGBvcy5zdGF0KGVudHJ5LnBhdGgpYGAgdG8gZmV0Y2gKICAgIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCiAKLSAgIEJlY2F1c2UgdGhlIGBgRGlyRW50cnlgYCBtZXRob2RzIGNhbiBtYWtlIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMsIHRoZXkgbWF5CisgICBCZWNhdXNlIHRoZSBgYG9zLkRpckVudHJ5YGAgbWV0aG9kcyBjYW4gbWFrZSBvcGVyYXRpbmcgc3lzdGVtIGNhbGxzLCB0aGV5IG1heQogICAgYWxzbyByYWlzZSA6ZXhjOmBPU0Vycm9yYC4gSWYgeW91IG5lZWQgdmVyeSBmaW5lLWdyYWluZWQKICAgIGNvbnRyb2wgb3ZlciBlcnJvcnMsIHlvdSBjYW4gY2F0Y2ggOmV4YzpgT1NFcnJvcmAgd2hlbiBjYWxsaW5nIG9uZSBvZiB0aGUKLSAgIGBgRGlyRW50cnlgYCBtZXRob2RzIGFuZCBoYW5kbGUgYXMgYXBwcm9wcmlhdGUuCisgICBgYG9zLkRpckVudHJ5YGAgbWV0aG9kcyBhbmQgaGFuZGxlIGFzIGFwcHJvcHJpYXRlLgogCi0gICBBdHRyaWJ1dGVzIGFuZCBtZXRob2RzIG9uIGEgYGBEaXJFbnRyeWBgIGluc3RhbmNlIGFyZSBhcyBmb2xsb3dzOgorICAgVG8gYmUgZGlyZWN0bHkgdXNhYmxlIGFzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLCBgYG9zLkRpckVudHJ5YGAKKyAgIGltcGxlbWVudHMgdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZS4KKworICAgQXR0cmlidXRlcyBhbmQgbWV0aG9kcyBvbiBhIGBgb3MuRGlyRW50cnlgYCBpbnN0YW5jZSBhcmUgYXMgZm9sbG93czoKIAogICAgLi4gYXR0cmlidXRlOjogbmFtZQogCkBAIC0xOTc4LDggKzIxMTksOSBAQAogCiAgICAgICBSZXR1cm4gdGhlIGlub2RlIG51bWJlciBvZiB0aGUgZW50cnkuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBVc2UgYGBvcy5zdGF0KGVudHJ5LnBhdGgsCi0gICAgICBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLnN0X2lub2BgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdC4gVXNlCisgICAgICBgYG9zLnN0YXQoZW50cnkucGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5zdF9pbm9gYCB0byBmZXRjaCB1cC10by1kYXRlCisgICAgICBpbmZvcm1hdGlvbi4KIAogICAgICAgT24gdGhlIGZpcnN0LCB1bmNhY2hlZCBjYWxsLCBhIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkIG9uIFdpbmRvd3MgYnV0CiAgICAgICBub3Qgb24gVW5peC4KQEAgLTE5OTQsNyArMjEzNiw3IEBACiAgICAgICBpcyBhIGRpcmVjdG9yeSAod2l0aG91dCBmb2xsb3dpbmcgc3ltbGlua3MpOyByZXR1cm4gYGBGYWxzZWBgIGlmIHRoZQogICAgICAgZW50cnkgaXMgYW55IG90aGVyIGtpbmQgb2YgZmlsZSBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKICAgICAgIGZvciAqZm9sbG93X3N5bWxpbmtzKiBgYFRydWVgYCBhbmQgYGBGYWxzZWBgLiBDYWxsIDpmdW5jOmBvcy5zdGF0YCBhbG9uZwogICAgICAgd2l0aCA6ZnVuYzpgc3RhdC5TX0lTRElSYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgogCkBAIC0yMDE4LDggKzIxNjAsOCBAQAogICAgICAgaXMgYSBmaWxlICh3aXRob3V0IGZvbGxvd2luZyBzeW1saW5rcyk7IHJldHVybiBgYEZhbHNlYGAgaWYgdGhlIGVudHJ5IGlzCiAgICAgICBhIGRpcmVjdG9yeSBvciBvdGhlciBub24tZmlsZSBlbnRyeSwgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gQ2FjaGluZywgc3lzdGVtIGNhbGxzCi0gICAgICBtYWRlLCBhbmQgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGFzIHBlciA6ZnVuYzpgfkRpckVudHJ5LmlzX2RpcmAuCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdC4gQ2FjaGluZywgc3lzdGVtIGNhbGxzCisgICAgICBtYWRlLCBhbmQgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGFzIHBlciA6ZnVuYzpgfm9zLkRpckVudHJ5LmlzX2RpcmAuCiAKICAgIC4uIG1ldGhvZDo6IGlzX3N5bWxpbmsoKQogCkBAIC0yMDI3LDcgKzIxNjksNyBAQAogICAgICAgcmV0dXJuIGBgRmFsc2VgYCBpZiB0aGUgZW50cnkgcG9pbnRzIHRvIGEgZGlyZWN0b3J5IG9yIGFueSBraW5kIG9mIGZpbGUsCiAgICAgICBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBDYWxsCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdC4gQ2FsbAogICAgICAgOmZ1bmM6YG9zLnBhdGguaXNsaW5rYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgogCiAgICAgICBPbiB0aGUgZmlyc3QsIHVuY2FjaGVkIGNhbGwsIG5vIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkIGluIG1vc3QgY2FzZXMuCkBAIC0yMDUyLDIzICsyMTk0LDI4IEBACiAgICAgICA6Y2xhc3M6YHN0YXRfcmVzdWx0YCBhcmUgYWx3YXlzIHNldCB0byB6ZXJvLiBDYWxsIDpmdW5jOmBvcy5zdGF0YCB0bwogICAgICAgZ2V0IHRoZXNlIGF0dHJpYnV0ZXMuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKICAgICAgIGZvciAqZm9sbG93X3N5bWxpbmtzKiBgYFRydWVgYCBhbmQgYGBGYWxzZWBgLiBDYWxsIDpmdW5jOmBvcy5zdGF0YCB0bwogICAgICAgZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIAogICAgTm90ZSB0aGF0IHRoZXJlIGlzIGEgbmljZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIHNldmVyYWwgYXR0cmlidXRlcwotICAgYW5kIG1ldGhvZHMgb2YgYGBEaXJFbnRyeWBgIGFuZCBvZiA6Y2xhc3M6YHBhdGhsaWIuUGF0aGAuICBJbgotICAgcGFydGljdWxhciwgdGhlIGBgbmFtZWBgIGF0dHJpYnV0ZSBoYXMgdGhlIHNhbWUgbWVhbmluZywgYXMgZG8gdGhlCi0gICBgYGlzX2RpcigpYGAsIGBgaXNfZmlsZSgpYGAsIGBgaXNfc3ltbGluaygpYGAgYW5kIGBgc3RhdCgpYGAgbWV0aG9kcy4KKyAgIGFuZCBtZXRob2RzIG9mIGBgb3MuRGlyRW50cnlgYCBhbmQgb2YgOmNsYXNzOmBwYXRobGliLlBhdGhgLiAgSW4KKyAgIHBhcnRpY3VsYXIsIHRoZSBgYG5hbWVgYCBhdHRyaWJ1dGUgaGFzIHRoZSBzYW1lCisgICBtZWFuaW5nLCBhcyBkbyB0aGUgYGBpc19kaXIoKWBgLCBgYGlzX2ZpbGUoKWBgLCBgYGlzX3N5bWxpbmsoKWBgCisgICBhbmQgYGBzdGF0KClgYCBtZXRob2RzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSA6Y2xhc3M6YH5vcy5QYXRoTGlrZWAgaW50ZXJmYWNlLgorCiAKIC4uIGZ1bmN0aW9uOjogc3RhdChwYXRoLCBcKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBHZXQgdGhlIHN0YXR1cyBvZiBhIGZpbGUgb3IgYSBmaWxlIGRlc2NyaXB0b3IuIFBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgb2YgYQogICAgOmM6ZnVuYzpgc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguICpwYXRoKiBtYXkgYmUgc3BlY2lmaWVkIGFzCi0gICBlaXRoZXIgYSBzdHJpbmcgb3IgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIFJldHVybiBhIDpjbGFzczpgc3RhdF9yZXN1bHRgCisgICBlaXRoZXIgYSBzdHJpbmcgLS0gZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYAorICAgaW50ZXJmYWNlIC0tIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiBSZXR1cm4gYSA6Y2xhc3M6YHN0YXRfcmVzdWx0YAogICAgb2JqZWN0LgogCiAgICBUaGlzIGZ1bmN0aW9uIG5vcm1hbGx5IGZvbGxvd3Mgc3ltbGlua3M7IHRvIHN0YXQgYSBzeW1saW5rIGFkZCB0aGUgYXJndW1lbnQKQEAgLTIwOTgsNiArMjI0NSw5IEBACiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cywgc3BlY2lmeWluZyBhIGZpbGUKICAgICAgIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiBhIHBhdGguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogc3RhdF9yZXN1bHQKIApAQCAtMjMxOSwxOSArMjQ2OSwyMiBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4KIAorICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlIDpjb25zdDpgU1RfUkRPTkxZYCBhbmQgOmNvbnN0OmBTVF9OT1NVSURgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSA6Y29uc3Q6YFNUX05PREVWYCwgOmNvbnN0OmBTVF9OT0VYRUNgLCA6Y29uc3Q6YFNUX1NZTkNIUk9OT1VTYCwKICAgICAgIDpjb25zdDpgU1RfTUFORExPQ0tgLCA6Y29uc3Q6YFNUX1dSSVRFYCwgOmNvbnN0OmBTVF9BUFBFTkRgLAogICAgICAgOmNvbnN0OmBTVF9JTU1VVEFCTEVgLCA6Y29uc3Q6YFNUX05PQVRJTUVgLCA6Y29uc3Q6YFNUX05PRElSQVRJTUVgLAogICAgICAgYW5kIDpjb25zdDpgU1RfUkVMQVRJTUVgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIAogLi4gZGF0YTo6IHN1cHBvcnRzX2Rpcl9mZApAQCAtMjQ1Miw2ICsyNjA1LDkgQEAKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhcmd1bWVudCwgYW5kIG5vdyBhbGxvdyAqdGFyZ2V0X2lzX2RpcmVjdG9yeSoKICAgICAgIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHN5bmMoKQogCkBAIC0yNDc2LDYgKzI2MzIsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCisKIC4uIGZ1bmN0aW9uOjogdW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgVGhpcyBmdW5jdGlvbiBpcyBzZW1hbnRpY2FsbHkKQEAgLTI0ODYsNiArMjY0Niw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogdXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKlssIG5zXSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0yNTIzLDYgKzI2ODYsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiwgKmZvbGxvd19zeW1saW5rcyosIGFuZCAqbnMqIHBhcmFtZXRlcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogd2Fsayh0b3AsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCBmb2xsb3dsaW5rcz1GYWxzZSkKIApAQCAtMjYxMyw2ICsyNzc5LDkgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGNhbGxzIDpmdW5jOmBvcy5zY2FuZGlyYCBpbnN0ZWFkIG9mIDpmdW5jOmBvcy5saXN0ZGlyYCwKICAgICAgIG1ha2luZyBpdCBmYXN0ZXIgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjYWxscyB0byA6ZnVuYzpgb3Muc3RhdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZndhbGsodG9wPScuJywgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPU5vbmUpCiAKQEAgLTI2NjksNiArMjgzOCw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiBMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC0yNjgwLDEyICsyODUyLDE2IEBACiAuLiBmdW5jdGlvbjo6IGdldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZvcgotICAgKnBhdGgqLiAqYXR0cmlidXRlKiBjYW4gYmUgYnl0ZXMgb3Igc3RyLiBJZiBpdCBpcyBzdHIsIGl0IGlzIGVuY29kZWQKLSAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisgICAqcGF0aCouICphdHRyaWJ1dGUqIGNhbiBiZSBieXRlcyBvciBzdHIgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUKKyAgIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSkuIElmIGl0IGlzIHN0ciwgaXQgaXMgZW5jb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtCisgICBlbmNvZGluZy4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZnByICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZnVuY3Rpb246OiBsaXN0eGF0dHIocGF0aD1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMjY5NywyMSArMjg3MywyOSBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBSZW1vdmVzIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmcm9tICpwYXRoKi4KLSAgICphdHRyaWJ1dGUqIHNob3VsZCBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkCisgICAqYXR0cmlidXRlKiBzaG91bGQgYmUgYnl0ZXMgb3Igc3RyIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlCisgICA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZAogICAgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZnVuY3Rpb246OiBzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgU2V0IHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBvbiAqcGF0aCogdG8gKnZhbHVlKi4KLSAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzLiBJZiBpdCBpcyBhIHN0ciwKKyAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzIChkaXJlY3RseSBvcgorICAgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBhIHN0ciwKICAgIGl0IGlzIGVuY29kZWQgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4gICpmbGFncyogbWF5IGJlCiAgICA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgb3IgOmRhdGE6YFhBVFRSX0NSRUFURWAuIElmIDpkYXRhOmBYQVRUUl9SRVBMQUNFYCBpcwogICAgZ2l2ZW4gYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsIGBgRUVYSVNUU2BgIHdpbGwgYmUgcmFpc2VkLgpAQCAtMjcyNiw2ICsyOTEwLDkgQEAKICAgICAgIEEgYnVnIGluIExpbnV4IGtlcm5lbCB2ZXJzaW9ucyBsZXNzIHRoYW4gMi42LjM5IGNhdXNlZCB0aGUgZmxhZ3MgYXJndW1lbnQKICAgICAgIHRvIGJlIGlnbm9yZWQgb24gc29tZSBmaWxlc3lzdGVtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZGF0YTo6IFhBVFRSX1NJWkVfTUFYCiAKQEAgLTI4MjcsNiArMzAxNCw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCoKICAgICAgIGZvciA6ZnVuYzpgZXhlY3ZlYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIC4uIGZ1bmN0aW9uOjogX2V4aXQobikKIAogICAgRXhpdCB0aGUgcHJvY2VzcyB3aXRoIHN0YXR1cyAqbiosIHdpdGhvdXQgY2FsbGluZyBjbGVhbnVwIGhhbmRsZXJzLCBmbHVzaGluZwpAQCAtMzEzNyw2ICszMzI3LDkgQEAKICAgIDpmdW5jOmBzcGF3bnZlYCBhcmUgbm90IHRocmVhZC1zYWZlIG9uIFdpbmRvd3M7IHdlIGFkdmlzZSB5b3UgdG8gdXNlIHRoZQogICAgOm1vZDpgc3VicHJvY2Vzc2AgbW9kdWxlIGluc3RlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBQX05PV0FJVAogICAgICAgICAgIFBfTk9XQUlUTwpAQCAtMzYyMyw2ICszODE2LDExIEBACiAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4gUmV0dXJucyBOb25lIGlmIHVuZGV0ZXJtaW5lZC4KIAorICAgVGhpcyBudW1iZXIgaXMgbm90IGVxdWl2YWxlbnQgdG8gdGhlIG51bWJlciBvZiBDUFVzIHRoZSBjdXJyZW50IHByb2Nlc3MgY2FuCisgICB1c2UuICBUaGUgbnVtYmVyIG9mIHVzYWJsZSBDUFVzIGNhbiBiZSBvYnRhaW5lZCB3aXRoCisgICBgYGxlbihvcy5zY2hlZF9nZXRhZmZpbml0eSgwKSlgYAorCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAKQEAgLTM3MzgsMzUgKzM5MzYsODkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKLS4uIF9vcy1taXNjZnVuYzoKIAotTWlzY2VsbGFuZW91cyBGdW5jdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSYW5kb20gbnVtYmVycworLS0tLS0tLS0tLS0tLS0KIAogCi0uLiBmdW5jdGlvbjo6IHVyYW5kb20obikKKy4uIGZ1bmN0aW9uOjogZ2V0cmFuZG9tKHNpemUsIGZsYWdzPTApCiAKLSAgIFJldHVybiBhIHN0cmluZyBvZiAqbiogcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4KKyAgIEdldCB1cCB0byAqc2l6ZSogcmFuZG9tIGJ5dGVzLiBUaGUgZnVuY3Rpb24gY2FuIHJldHVybiBsZXNzIGJ5dGVzIHRoYW4KKyAgIHJlcXVlc3RlZC4KKworICAgVGhlc2UgYnl0ZXMgY2FuIGJlIHVzZWQgdG8gc2VlZCB1c2VyLXNwYWNlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9ycyBvciBmb3IKKyAgIGNyeXB0b2dyYXBoaWMgcHVycG9zZXMuCisKKyAgIGBgZ2V0cmFuZG9tKClgYCByZWxpZXMgb24gZW50cm9weSBnYXRoZXJlZCBmcm9tIGRldmljZSBkcml2ZXJzIGFuZCBvdGhlcgorICAgc291cmNlcyBvZiBlbnZpcm9ubWVudGFsIG5vaXNlLiBVbm5lY2Vzc2FyaWx5IHJlYWRpbmcgbGFyZ2UgcXVhbnRpdGllcyBvZgorICAgZGF0YSB3aWxsIGhhdmUgYSBuZWdhdGl2ZSBpbXBhY3Qgb24gIG90aGVyIHVzZXJzICBvZiB0aGUgYGAvZGV2L3JhbmRvbWBgIGFuZAorICAgYGAvZGV2L3VyYW5kb21gYCBkZXZpY2VzLgorCisgICBUaGUgZmxhZ3MgYXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBjb250YWluIHplcm8gb3IgbW9yZSBvZiB0aGUKKyAgIGZvbGxvd2luZyB2YWx1ZXMgT1JlZCB0b2dldGhlcjogOnB5OmRhdGE6YG9zLkdSTkRfUkFORE9NYCBhbmQKKyAgIDpweTpkYXRhOmBHUk5EX05PTkJMT0NLYC4KKworICAgU2VlIGFsc28gdGhlIGBMaW51eCBnZXRyYW5kb20oKSBtYW51YWwgcGFnZQorICAgPGh0dHA6Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMi9nZXRyYW5kb20uMi5odG1sPmBfLgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4IDMuMTcgYW5kIG5ld2VyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZnVuY3Rpb246OiB1cmFuZG9tKHNpemUpCisKKyAgIFJldHVybiBhIHN0cmluZyBvZiAqc2l6ZSogcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4KIAogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHJhbmRvbSBieXRlcyBmcm9tIGFuIE9TLXNwZWNpZmljIHJhbmRvbW5lc3Mgc291cmNlLiAgVGhlCiAgICByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSB1bnByZWRpY3RhYmxlIGVub3VnaCBmb3IgY3J5cHRvZ3JhcGhpYyBhcHBsaWNhdGlvbnMsCiAgICB0aG91Z2ggaXRzIGV4YWN0IHF1YWxpdHkgZGVwZW5kcyBvbiB0aGUgT1MgaW1wbGVtZW50YXRpb24uCiAKLSAgIE9uIExpbnV4LCBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBpcyB1c2VkIGlmIGF2YWlsYWJsZSBhbmQgdGhlIHVyYW5kb20KLSAgIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZCAoYGBnZXRyYW5kb20oKWBgIGRvZXMgbm90IGJsb2NrKS4KLSAgIE9uIGEgVW5peC1saWtlIHN5c3RlbSB0aGlzIHdpbGwgcXVlcnkgYGAvZGV2L3VyYW5kb21gYC4gT24gV2luZG93cywgaXQKLSAgIHdpbGwgdXNlIGBgQ3J5cHRHZW5SYW5kb20oKWBgLiAgSWYgYSByYW5kb21uZXNzIHNvdXJjZSBpcyBub3QgZm91bmQsCi0gICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIE9uIExpbnV4LCBpZiB0aGUgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgaXMgYXZhaWxhYmxlLCBpdCBpcyB1c2VkIGluCisgICBibG9ja2luZyBtb2RlOiBibG9jayB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkCisgICAoMTI4IGJpdHMgb2YgZW50cm9weSBhcmUgY29sbGVjdGVkIGJ5IHRoZSBrZXJuZWwpLiBTZWUgdGhlIDpwZXA6YDUyNGAgZm9yCisgICB0aGUgcmF0aW9uYWxlLiBPbiBMaW51eCwgdGhlIDpmdW5jOmBnZXRyYW5kb21gIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGdldAorICAgcmFuZG9tIGJ5dGVzIGluIG5vbi1ibG9ja2luZyBtb2RlICh1c2luZyB0aGUgOmRhdGE6YEdSTkRfTk9OQkxPQ0tgIGZsYWcpIG9yCisgICB0byBwb2xsIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQuCiAKLSAgIEZvciBhbiBlYXN5LXRvLXVzZSBpbnRlcmZhY2UgdG8gdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCi0gICBwcm92aWRlZCBieSB5b3VyIHBsYXRmb3JtLCBwbGVhc2Ugc2VlIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAuCisgICBPbiBhIFVuaXgtbGlrZSBzeXN0ZW0sIHJhbmRvbSBieXRlcyBhcmUgcmVhZCBmcm9tIHRoZSBgYC9kZXYvdXJhbmRvbWBgCisgICBkZXZpY2UuIElmIHRoZSBgYC9kZXYvdXJhbmRvbWBgIGRldmljZSBpcyBub3QgYXZhaWxhYmxlIG9yIG5vdCByZWFkYWJsZSwgdGhlCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICBPbiBXaW5kb3dzLCBpdCB3aWxsIHVzZSBgYENyeXB0R2VuUmFuZG9tKClgYC4KKworICAgLi4gc2VlYWxzbzo6CisgICAgICBUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIHByb3ZpZGVzIGhpZ2hlciBsZXZlbCBmdW5jdGlvbnMuIEZvciBhbgorICAgICAgZWFzeS10by11c2UgaW50ZXJmYWNlIHRvIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBwcm92aWRlZCBieSB5b3VyCisgICAgICBwbGF0Zm9ybSwgcGxlYXNlIHNlZSA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNi4wCisgICAgICBPbiBMaW51eCwgYGBnZXRyYW5kb20oKWBgIGlzIG5vdyB1c2VkIGluIGJsb2NraW5nIG1vZGUgdG8gaW5jcmVhc2UgdGhlCisgICAgICBzZWN1cml0eS4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMgotICAgICAgT24gTGludXgsIGlmIGBgZ2V0cmFuZG9tKClgYCBibG9ja3MgKHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBub3QKLSAgICAgIGluaXRpYWxpemVkIHlldCksIGZhbGwgYmFjayBvbiByZWFkaW5nIGBgL2Rldi91cmFuZG9tYGAuCisgICAgICBPbiBMaW51eCwgaWYgdGhlIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGJsb2NrcyAodGhlIHVyYW5kb20gZW50cm9weSBwb29sCisgICAgICBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0KSwgZmFsbCBiYWNrIG9uIHJlYWRpbmcgYGAvZGV2L3VyYW5kb21gYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyLCB0aGUgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgaXMgbm93IHVzZWQKICAgICAgIHdoZW4gYXZhaWxhYmxlLiAgT24gT3BlbkJTRCA1LjYgYW5kIG5ld2VyLCB0aGUgQyBgYGdldGVudHJvcHkoKWBgCiAgICAgICBmdW5jdGlvbiBpcyBub3cgdXNlZC4gVGhlc2UgZnVuY3Rpb25zIGF2b2lkIHRoZSB1c2FnZSBvZiBhbiBpbnRlcm5hbCBmaWxlCiAgICAgICBkZXNjcmlwdG9yLgorCisuLiBkYXRhOjogR1JORF9OT05CTE9DSworCisgICBCeSAgZGVmYXVsdCwgd2hlbiByZWFkaW5nIGZyb20gYGAvZGV2L3JhbmRvbWBgLCA6ZnVuYzpgZ2V0cmFuZG9tYCBibG9ja3MgaWYKKyAgIG5vIHJhbmRvbSBieXRlcyBhcmUgYXZhaWxhYmxlLCBhbmQgd2hlbiByZWFkaW5nIGZyb20gYGAvZGV2L3VyYW5kb21gYCwgaXQgYmxvY2tzCisgICBpZiB0aGUgZW50cm9weSBwb29sIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuCisKKyAgIElmIHRoZSA6cHk6ZGF0YTpgR1JORF9OT05CTE9DS2AgZmxhZyBpcyBzZXQsIHRoZW4gOmZ1bmM6YGdldHJhbmRvbWAgZG9lcyBub3QKKyAgIGJsb2NrIGluIHRoZXNlIGNhc2VzLCBidXQgaW5zdGVhZCBpbW1lZGlhdGVseSByYWlzZXMgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBHUk5EX1JBTkRPTQorCisgICBJZiAgdGhpcyAgYml0ICBpcyAgc2V0LCAgdGhlbiAgcmFuZG9tIGJ5dGVzIGFyZSBkcmF3biBmcm9tIHRoZQorICAgYGAvZGV2L3JhbmRvbWBgIHBvb2wgaW5zdGVhZCBvZiB0aGUgYGAvZGV2L3VyYW5kb21gYCBwb29sLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0IGIvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKaW5kZXggZmQ4M2E4MS4uNjE2MDBjNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKQEAgLTM1LDEyICszNSw2IEBACiAgICBhY2Nlc3NpbmcgdGhlIE9TLiBJbiB0aGlzIGNhc2UsIGluc3RhbnRpYXRpbmcgb25lIG9mIHRoZSBwdXJlIGNsYXNzZXMgbWF5IGJlCiAgICB1c2VmdWwgc2luY2UgdGhvc2Ugc2ltcGx5IGRvbid0IGhhdmUgYW55IE9TLWFjY2Vzc2luZyBvcGVyYXRpb25zLgogCi0uLiBub3RlOjoKLSAgIFRoaXMgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKLSAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCi0gICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIHBhY2thZ2UpIG1heSBvY2N1ciBpZiBkZWVtZWQKLSAgIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCiAuLiBzZWVhbHNvOjoKICAgIDpwZXA6YDQyOGA6IFRoZSBwYXRobGliIG1vZHVsZSAtLSBvYmplY3Qtb3JpZW50ZWQgZmlsZXN5c3RlbSBwYXRocy4KIApAQCAtMTExLDcgKzEwNSw4IEBACiAgICAgICBQdXJlUG9zaXhQYXRoKCdzZXR1cC5weScpCiAKICAgIEVhY2ggZWxlbWVudCBvZiAqcGF0aHNlZ21lbnRzKiBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhCi0gICBwYXRoIHNlZ21lbnQsIG9yIGFub3RoZXIgcGF0aCBvYmplY3Q6OgorICAgcGF0aCBzZWdtZW50LCBhbiBvYmplY3QgaW1wbGVtZW50aW5nIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UKKyAgIHdoaWNoIHJldHVybnMgYSBzdHJpbmcsIG9yIGFub3RoZXIgcGF0aCBvYmplY3Q6OgogCiAgICAgICA+Pj4gUHVyZVBhdGgoJ2ZvbycsICdzb21lL3BhdGgnLCAnYmFyJykKICAgICAgIFB1cmVQb3NpeFBhdGgoJ2Zvby9zb21lL3BhdGgvYmFyJykKQEAgLTE1Miw2ICsxNDcsMTIgQEAKICAgIHRvIGBgUHVyZVBvc2l4UGF0aCgnYmFyJylgYCwgd2hpY2ggaXMgd3JvbmcgaWYgYGBmb29gYCBpcyBhIHN5bWJvbGljIGxpbmsKICAgIHRvIGFub3RoZXIgZGlyZWN0b3J5KQogCisgICBQdXJlIHBhdGggb2JqZWN0cyBpbXBsZW1lbnQgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSwgYWxsb3dpbmcgdGhlbQorICAgdG8gYmUgdXNlZCBhbnl3aGVyZSB0aGUgaW50ZXJmYWNlIGlzIGFjY2VwdGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZS4KKwogLi4gY2xhc3M6OiBQdXJlUG9zaXhQYXRoKCpwYXRoc2VnbWVudHMpCiAKICAgIEEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBQdXJlUGF0aGAsIHRoaXMgcGF0aCBmbGF2b3VyIHJlcHJlc2VudHMgbm9uLVdpbmRvd3MKQEAgLTE5OSw3ICsyMDAsNyBAQAogICAgPj4+IFB1cmVXaW5kb3dzUGF0aCgnZm9vJykgPCBQdXJlUG9zaXhQYXRoKCdmb28nKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgVHlwZUVycm9yOiB1bm9yZGVyYWJsZSB0eXBlczogUHVyZVdpbmRvd3NQYXRoKCkgPCBQdXJlUG9zaXhQYXRoKCkKKyAgIFR5cGVFcnJvcjogJzwnIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJ1B1cmVXaW5kb3dzUGF0aCcgYW5kICdQdXJlUG9zaXhQYXRoJwogCiAKIE9wZXJhdG9ycwpAQCAtMjE2LDYgKzIxNywxNCBAQAogICAgPj4+ICcvdXNyJyAvIHEKICAgIFB1cmVQb3NpeFBhdGgoJy91c3IvYmluJykKIAorQSBwYXRoIG9iamVjdCBjYW4gYmUgdXNlZCBhbnl3aGVyZSBhbiBvYmplY3QgaW1wbGVtZW50aW5nIDpjbGFzczpgb3MuUGF0aExpa2VgCitpcyBhY2NlcHRlZDo6CisKKyAgID4+PiBpbXBvcnQgb3MKKyAgID4+PiBwID0gUHVyZVBhdGgoJy9ldGMnKQorICAgPj4+IG9zLmZzcGF0aChwKQorICAgJy9ldGMnCisKIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBwYXRoIGlzIHRoZSByYXcgZmlsZXN5c3RlbSBwYXRoIGl0c2VsZgogKGluIG5hdGl2ZSBmb3JtLCBlLmcuIHdpdGggYmFja3NsYXNoZXMgdW5kZXIgV2luZG93cyksIHdoaWNoIHlvdSBjYW4KIHBhc3MgdG8gYW55IGZ1bmN0aW9uIHRha2luZyBhIGZpbGUgcGF0aCBhcyBhIHN0cmluZzo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wZGIucnN0IGIvRG9jL2xpYnJhcnkvcGRiLnJzdAppbmRleCBkNzdkZTJlLi41MmJlZjY4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wZGIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKQEAgLTE0NCw3ICsxNDQsNyBAQAogYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6CiAKIC4uIGNsYXNzOjogUGRiKGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBcCi0gICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSkKKyAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSkKIAogICAgOmNsYXNzOmBQZGJgIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy4KIApAQCAtMTYwLDYgKzE2MCw5IEBACiAgICBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIgYWdhaW4gYnkgcHJlc3NpbmcgOmtiZDpgQ3RybC1DYC4gIElmIHlvdQogICAgd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSBTSUdJTlQgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG8gdHJ1ZS4KIAorICAgVGhlICpyZWFkcmMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRydWUgYW5kIGNvbnRyb2xzIHdoZXRoZXIgUGRiIHdpbGwgbG9hZAorICAgLnBkYnJjIGZpbGVzIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisKICAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjo6CiAKICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ2RqYW5nby4qJ10pLnNldF90cmFjZSgpCkBAIC0xNzEsNiArMTc0LDkgQEAKICAgICAgIFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlQgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5CiAgICAgICBQZGIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgKnJlYWRyYyogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpCiAgICAgICAgICAgICAgICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpCiAgICAgICAgICAgICAgICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdCBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKaW5kZXggMGQ2NDE5MS4uNmU4NDMwZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CkBAIC00OTIsNyArNDkyLDcgQEAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0bmV3YXJnc19leF9fKCkKIAotICAgSW4gcHJvdG9jb2xzIDQgYW5kIG5ld2VyLCBjbGFzc2VzIHRoYXQgaW1wbGVtZW50cyB0aGUKKyAgIEluIHByb3RvY29scyAyIGFuZCBuZXdlciwgY2xhc3NlcyB0aGF0IGltcGxlbWVudHMgdGhlCiAgICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIG1ldGhvZCBjYW4gZGljdGF0ZSB0aGUgdmFsdWVzIHBhc3NlZCB0byB0aGUKICAgIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLiAgVGhlIG1ldGhvZCBtdXN0IHJldHVybiBhIHBhaXIKICAgIGBgKGFyZ3MsIGt3YXJncylgYCB3aGVyZSAqYXJncyogaXMgYSB0dXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cwpAQCAtNTA0LDE1ICs1MDQsMjIgQEAKICAgIGNsYXNzIHJlcXVpcmVzIGtleXdvcmQtb25seSBhcmd1bWVudHMuICBPdGhlcndpc2UsIGl0IGlzIHJlY29tbWVuZGVkIGZvcgogICAgY29tcGF0aWJpbGl0eSB0byBpbXBsZW1lbnQgOm1ldGg6YF9fZ2V0bmV3YXJnc19fYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgaXMgbm93IHVzZWQgaW4gcHJvdG9jb2xzIDIgYW5kIDMuCisKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0bmV3YXJnc19fKCkKIAotICAgVGhpcyBtZXRob2Qgc2VydmUgYSBzaW1pbGFyIHB1cnBvc2UgYXMgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBidXQKLSAgIGZvciBwcm90b2NvbHMgMiBhbmQgbmV3ZXIuICBJdCBtdXN0IHJldHVybiBhIHR1cGxlIG9mIGFyZ3VtZW50cyBgYGFyZ3NgYAotICAgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLgorICAgVGhpcyBtZXRob2Qgc2VydmUgYSBzaW1pbGFyIHB1cnBvc2UgYXMgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCwgYnV0CisgICBzdXBwb3J0cyBvbmx5IHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgSXQgbXVzdCByZXR1cm4gYSB0dXBsZSBvZiBhcmd1bWVudHMKKyAgIGBgYXJnc2BgIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSA6bWV0aDpgX19uZXdfX2AgbWV0aG9kIHVwb24gdW5waWNrbGluZy4KIAotICAgSW4gcHJvdG9jb2xzIDQgYW5kIG5ld2VyLCA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdpbGwgbm90IGJlIGNhbGxlZCBpZgotICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcyBkZWZpbmVkLgorICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19fYCB3aWxsIG5vdCBiZSBjYWxsZWQgaWYgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcworICAgZGVmaW5lZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEJlZm9yZSBQeXRob24gMy42LCA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdhcyBjYWxsZWQgaW5zdGVhZCBvZgorICAgICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpbiBwcm90b2NvbHMgMiBhbmQgMy4KIAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19nZXRzdGF0ZV9fKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0IGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKaW5kZXggYzViYThkOC4uM2I2YzkyNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKQEAgLTExLDYgKzExLDExIEBACiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIHRoZSBpbXBvcnQgc3lzdGVtLCBpbiBwYXJ0aWN1bGFyIHBhY2thZ2UKIHN1cHBvcnQuCiAKKy4uIGNsYXNzOjogTW9kdWxlSW5mbyhtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZykKKworICAgIEEgbmFtZWR0dXBsZSB0aGF0IGhvbGRzIGEgYnJpZWYgc3VtbWFyeSBvZiBhIG1vZHVsZSdzIGluZm8uCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gZnVuY3Rpb246OiBleHRlbmRfcGF0aChwYXRoLCBuYW1lKQogCkBAIC0xMzksNyArMTQ0LDcgQEAKIAogLi4gZnVuY3Rpb246OiBpdGVyX21vZHVsZXMocGF0aD1Ob25lLCBwcmVmaXg9JycpCiAKLSAgIFlpZWxkcyBgYChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gKnBhdGgqLCBvciwgaWYKKyAgIFlpZWxkcyA6Y2xhc3M6YE1vZHVsZUluZm9gIGZvciBhbGwgc3VibW9kdWxlcyBvbiAqcGF0aCosIG9yLCBpZgogICAgKnBhdGgqIGlzIGBgTm9uZWBgLCBhbGwgdG9wLWxldmVsIG1vZHVsZXMgb24gYGBzeXMucGF0aGBgLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KQEAgLTE2MCw3ICsxNjUsNyBAQAogCiAuLiBmdW5jdGlvbjo6IHdhbGtfcGFja2FnZXMocGF0aD1Ob25lLCBwcmVmaXg9JycsIG9uZXJyb3I9Tm9uZSkKIAotICAgWWllbGRzIGBgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseSBvbgorICAgWWllbGRzIDpjbGFzczpgTW9kdWxlSW5mb2AgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCiAgICAqcGF0aCosIG9yLCBpZiAqcGF0aCogaXMgYGBOb25lYGAsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcG9wbGliLnJzdCBiL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKaW5kZXggZmZhYmMzMi4uZDcyYjY2MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcG9wbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CkBAIC02Miw2ICs2MiwxMyBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKwogT25lIGV4Y2VwdGlvbiBpcyBkZWZpbmVkIGFzIGFuIGF0dHJpYnV0ZSBvZiB0aGUgOm1vZDpgcG9wbGliYCBtb2R1bGU6CiAKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcXVldWUucnN0IGIvRG9jL2xpYnJhcnkvcXVldWUucnN0CmluZGV4IGUwMjZlNTIuLmVkNDA4ZjQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKQEAgLTE2LDggKzE2LDkgQEAKIG1vZHVsZS4KIAogVGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRocmVlIHR5cGVzIG9mIHF1ZXVlLCB3aGljaCBkaWZmZXIgb25seSBpbiB0aGUgb3JkZXIgaW4KLXdoaWNoIHRoZSBlbnRyaWVzIGFyZSByZXRyaWV2ZWQuICBJbiBhIEZJRk8gcXVldWUsIHRoZSBmaXJzdCB0YXNrcyBhZGRlZCBhcmUKLXRoZSBmaXJzdCByZXRyaWV2ZWQuIEluIGEgTElGTyBxdWV1ZSwgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZW50cnkgaXMKK3doaWNoIHRoZSBlbnRyaWVzIGFyZSByZXRyaWV2ZWQuICBJbiBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAKK3F1ZXVlLCB0aGUgZmlyc3QgdGFza3MgYWRkZWQgYXJlIHRoZSBmaXJzdCByZXRyaWV2ZWQuIEluIGEKKzphYmJyOmBMSUZPIChsYXN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSwgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZW50cnkgaXMKIHRoZSBmaXJzdCByZXRyaWV2ZWQgKG9wZXJhdGluZyBsaWtlIGEgc3RhY2spLiAgV2l0aCBhIHByaW9yaXR5IHF1ZXVlLAogdGhlIGVudHJpZXMgYXJlIGtlcHQgc29ydGVkICh1c2luZyB0aGUgOm1vZDpgaGVhcHFgIG1vZHVsZSkgYW5kIHRoZQogbG93ZXN0IHZhbHVlZCBlbnRyeSBpcyByZXRyaWV2ZWQgZmlyc3QuCkBAIC0yOSwxNCArMzAsMTYgQEAKIAogLi4gY2xhc3M6OiBRdWV1ZShtYXhzaXplPTApCiAKLSAgIENvbnN0cnVjdG9yIGZvciBhIEZJRk8gcXVldWUuICAqbWF4c2l6ZSogaXMgYW4gaW50ZWdlciB0aGF0IHNldHMgdGhlIHVwcGVyYm91bmQKKyAgIENvbnN0cnVjdG9yIGZvciBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUuICAqbWF4c2l6ZSogaXMKKyAgIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCiAgICBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgY2FuIGJlIHBsYWNlZCBpbiB0aGUgcXVldWUuICBJbnNlcnRpb24gd2lsbAogICAgYmxvY2sgb25jZSB0aGlzIHNpemUgaGFzIGJlZW4gcmVhY2hlZCwgdW50aWwgcXVldWUgaXRlbXMgYXJlIGNvbnN1bWVkLiAgSWYKICAgICptYXhzaXplKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybywgdGhlIHF1ZXVlIHNpemUgaXMgaW5maW5pdGUuCiAKIC4uIGNsYXNzOjogTGlmb1F1ZXVlKG1heHNpemU9MCkKIAotICAgQ29uc3RydWN0b3IgZm9yIGEgTElGTyBxdWV1ZS4gICptYXhzaXplKiBpcyBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAorICAgQ29uc3RydWN0b3IgZm9yIGEgOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlLiAgKm1heHNpemUqIGlzCisgICBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAogICAgbGltaXQgb24gdGhlIG51bWJlciBvZiBpdGVtcyB0aGF0IGNhbiBiZSBwbGFjZWQgaW4gdGhlIHF1ZXVlLiAgSW5zZXJ0aW9uIHdpbGwKICAgIGJsb2NrIG9uY2UgdGhpcyBzaXplIGhhcyBiZWVuIHJlYWNoZWQsIHVudGlsIHF1ZXVlIGl0ZW1zIGFyZSBjb25zdW1lZC4gIElmCiAgICAqbWF4c2l6ZSogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8sIHRoZSBxdWV1ZSBzaXplIGlzIGluZmluaXRlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdCBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKaW5kZXggMjJmMThhMC4uOWNiMTQ1ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CkBAIC00Niw3ICs0Niw4IEBACiAuLiB3YXJuaW5nOjoKIAogICAgVGhlIHBzZXVkby1yYW5kb20gZ2VuZXJhdG9ycyBvZiB0aGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHVzZWQgZm9yCi0gICBzZWN1cml0eSBwdXJwb3Nlcy4KKyAgIHNlY3VyaXR5IHB1cnBvc2VzLiAgRm9yIHNlY3VyaXR5IG9yIGNyeXB0b2dyYXBoaWMgdXNlcywgc2VlIHRoZQorICAgOm1vZDpgc2VjcmV0c2AgbW9kdWxlLgogCiAKIEJvb2trZWVwaW5nIGZ1bmN0aW9uczoKQEAgLTEyMyw2ICsxMjQsMjcgQEAKICAgIFJldHVybiBhIHJhbmRvbSBlbGVtZW50IGZyb20gdGhlIG5vbi1lbXB0eSBzZXF1ZW5jZSAqc2VxKi4gSWYgKnNlcSogaXMgZW1wdHksCiAgICByYWlzZXMgOmV4YzpgSW5kZXhFcnJvcmAuCiAKKy4uIGZ1bmN0aW9uOjogY2hvaWNlcyhwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUsIGs9MSkKKworICAgUmV0dXJuIGEgKmsqIHNpemVkIGxpc3Qgb2YgZWxlbWVudHMgY2hvc2VuIGZyb20gdGhlICpwb3B1bGF0aW9uKiB3aXRoIHJlcGxhY2VtZW50LgorICAgSWYgdGhlICpwb3B1bGF0aW9uKiBpcyBlbXB0eSwgcmFpc2VzIDpleGM6YEluZGV4RXJyb3JgLgorCisgICBJZiBhICp3ZWlnaHRzKiBzZXF1ZW5jZSBpcyBzcGVjaWZpZWQsIHNlbGVjdGlvbnMgYXJlIG1hZGUgYWNjb3JkaW5nIHRvIHRoZQorICAgcmVsYXRpdmUgd2VpZ2h0cy4gIEFsdGVybmF0aXZlbHksIGlmIGEgKmN1bV93ZWlnaHRzKiBzZXF1ZW5jZSBpcyBnaXZlbiwgdGhlCisgICBzZWxlY3Rpb25zIGFyZSBtYWRlIGFjY29yZGluZyB0byB0aGUgY3VtdWxhdGl2ZSB3ZWlnaHRzLiAgRm9yIGV4YW1wbGUsIHRoZQorICAgcmVsYXRpdmUgd2VpZ2h0cyBgYFsxMCwgNSwgMzAsIDVdYGAgYXJlIGVxdWl2YWxlbnQgdG8gdGhlIGN1bXVsYXRpdmUKKyAgIHdlaWdodHMgYGBbMTAsIDE1LCA0NSwgNTBdYGAuICBJbnRlcm5hbGx5LCB0aGUgcmVsYXRpdmUgd2VpZ2h0cyBhcmUKKyAgIGNvbnZlcnRlZCB0byBjdW11bGF0aXZlIHdlaWdodHMgYmVmb3JlIG1ha2luZyBzZWxlY3Rpb25zLCBzbyBzdXBwbHlpbmcgdGhlCisgICBjdW11bGF0aXZlIHdlaWdodHMgc2F2ZXMgd29yay4KKworICAgSWYgbmVpdGhlciAqd2VpZ2h0cyogbm9yICpjdW1fd2VpZ2h0cyogYXJlIHNwZWNpZmllZCwgc2VsZWN0aW9ucyBhcmUgbWFkZQorICAgd2l0aCBlcXVhbCBwcm9iYWJpbGl0eS4gIElmIGEgd2VpZ2h0cyBzZXF1ZW5jZSBpcyBzdXBwbGllZCwgaXQgbXVzdCBiZQorICAgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSAqcG9wdWxhdGlvbiogc2VxdWVuY2UuICBJdCBpcyBhIDpleGM6YFR5cGVFcnJvcmAKKyAgIHRvIHNwZWNpZnkgYm90aCAqd2VpZ2h0cyogYW5kICpjdW1fd2VpZ2h0cyouCisKKyAgIFRoZSAqd2VpZ2h0cyogb3IgKmN1bV93ZWlnaHRzKiBjYW4gdXNlIGFueSBudW1lcmljIHR5cGUgdGhhdCBpbnRlcm9wZXJhdGVzCisgICB3aXRoIHRoZSA6Y2xhc3M6YGZsb2F0YCB2YWx1ZXMgcmV0dXJuZWQgYnkgOmZ1bmM6YHJhbmRvbWAgKHRoYXQgaW5jbHVkZXMKKyAgIGludGVnZXJzLCBmbG9hdHMsIGFuZCBmcmFjdGlvbnMgYnV0IGV4Y2x1ZGVzIGRlY2ltYWxzKS4KIAogLi4gZnVuY3Rpb246OiBzaHVmZmxlKHhbLCByYW5kb21dKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZS5yc3QgYi9Eb2MvbGlicmFyeS9yZS5yc3QKaW5kZXggNTY5YjUyMi4uOGZmY2Q5YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlLnJzdApAQCAtMjI0LDEyICsyMjQsOCBAQAogICAgZmxhZ3MgYXJlIGRlc2NyaWJlZCBpbiA6cmVmOmBjb250ZW50cy1vZi1tb2R1bGUtcmVgLikgVGhpcwogICAgaXMgdXNlZnVsIGlmIHlvdSB3aXNoIHRvIGluY2x1ZGUgdGhlIGZsYWdzIGFzIHBhcnQgb2YgdGhlIHJlZ3VsYXIKICAgIGV4cHJlc3Npb24sIGluc3RlYWQgb2YgcGFzc2luZyBhICpmbGFnKiBhcmd1bWVudCB0byB0aGUKLSAgIDpmdW5jOmByZS5jb21waWxlYCBmdW5jdGlvbi4KLQotICAgTm90ZSB0aGF0IHRoZSBgYCg/eClgYCBmbGFnIGNoYW5nZXMgaG93IHRoZSBleHByZXNzaW9uIGlzIHBhcnNlZC4gSXQgc2hvdWxkIGJlCi0gICB1c2VkIGZpcnN0IGluIHRoZSBleHByZXNzaW9uIHN0cmluZywgb3IgYWZ0ZXIgb25lIG9yIG1vcmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgotICAgSWYgdGhlcmUgYXJlIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBmbGFnLCB0aGUgcmVzdWx0cyBhcmUKLSAgIHVuZGVmaW5lZC4KKyAgIDpmdW5jOmByZS5jb21waWxlYCBmdW5jdGlvbi4gIEZsYWdzIHNob3VsZCBiZSB1c2VkIGZpcnN0IGluIHRoZQorICAgZXhwcmVzc2lvbiBzdHJpbmcuCiAKIGBgKD86Li4uKWBgCiAgICBBIG5vbi1jYXB0dXJpbmcgdmVyc2lvbiBvZiByZWd1bGFyIHBhcmVudGhlc2VzLiAgTWF0Y2hlcyB3aGF0ZXZlciByZWd1bGFyCkBAIC0yMzcsNiArMjMzLDE2IEBACiAgICAqY2Fubm90KiBiZSByZXRyaWV2ZWQgYWZ0ZXIgcGVyZm9ybWluZyBhIG1hdGNoIG9yIHJlZmVyZW5jZWQgbGF0ZXIgaW4gdGhlCiAgICBwYXR0ZXJuLgogCitgYCg/aW1zeC1pbXN4Oi4uLilgYAorICAgKFplcm8gb3IgbW9yZSBsZXR0ZXJzIGZyb20gdGhlIHNldCBgYCdpJ2BgLCBgYCdtJ2BgLCBgYCdzJ2BgLCBgYCd4J2BgLAorICAgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBgYCctJ2BgIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGxldHRlcnMgZnJvbSB0aGUKKyAgIHNhbWUgc2V0LikgIFRoZSBsZXR0ZXJzIHNldCBvciByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGZsYWdzOgorICAgOmNvbnN0OmByZS5JYCAoaWdub3JlIGNhc2UpLCA6Y29uc3Q6YHJlLk1gIChtdWx0aS1saW5lKSwgOmNvbnN0OmByZS5TYAorICAgKGRvdCBtYXRjaGVzIGFsbCksIGFuZCA6Y29uc3Q6YHJlLlhgICh2ZXJib3NlKSwgZm9yIHRoZSBwYXJ0IG9mIHRoZQorICAgZXhwcmVzc2lvbi4gIChUaGUgZmxhZ3MgYXJlIGRlc2NyaWJlZCBpbiA6cmVmOmBjb250ZW50cy1vZi1tb2R1bGUtcmVgLikKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIGBgKD9QPG5hbWU+Li4uKWBgCiAgICBTaW1pbGFyIHRvIHJlZ3VsYXIgcGFyZW50aGVzZXMsIGJ1dCB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgdGhlIGdyb3VwIGlzCiAgICBhY2Nlc3NpYmxlIHZpYSB0aGUgc3ltYm9saWMgZ3JvdXAgbmFtZSAqbmFtZSouICBHcm91cCBuYW1lcyBtdXN0IGJlIHZhbGlkCkBAIC0zMjEsOCArMzI3LDkgQEAKIAogCiBUaGUgc3BlY2lhbCBzZXF1ZW5jZXMgY29uc2lzdCBvZiBgYCdcJ2BgIGFuZCBhIGNoYXJhY3RlciBmcm9tIHRoZSBsaXN0IGJlbG93LgotSWYgdGhlIG9yZGluYXJ5IGNoYXJhY3RlciBpcyBub3Qgb24gdGhlIGxpc3QsIHRoZW4gdGhlIHJlc3VsdGluZyBSRSB3aWxsIG1hdGNoCi10aGUgc2Vjb25kIGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYFwkYGAgbWF0Y2hlcyB0aGUgY2hhcmFjdGVyIGBgJyQnYGAuCitJZiB0aGUgb3JkaW5hcnkgY2hhcmFjdGVyIGlzIG5vdCBhbiBBU0NJSSBkaWdpdCBvciBhbiBBU0NJSSBsZXR0ZXIsIHRoZW4gdGhlCityZXN1bHRpbmcgUkUgd2lsbCBtYXRjaCB0aGUgc2Vjb25kIGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYFwkYGAgbWF0Y2hlcyB0aGUKK2NoYXJhY3RlciBgYCckJ2BgLgogCiBgYFxudW1iZXJgYAogICAgTWF0Y2hlcyB0aGUgY29udGVudHMgb2YgdGhlIGdyb3VwIG9mIHRoZSBzYW1lIG51bWJlci4gIEdyb3VwcyBhcmUgbnVtYmVyZWQKQEAgLTQ0Miw5ICs0NDksOCBAQAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgIFRoZSBgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBoYXZlIGJlZW4gYWRkZWQuCiAKLS4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKLSAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYQotICAgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IGFyZSBlcnJvcnMuCiAKIAogLi4gc2VlYWxzbzo6CkBAIC01MzIsMTEgKzUzOCwxMSBAQAogICAgY3VycmVudCBsb2NhbGUuIFRoZSB1c2Ugb2YgdGhpcyBmbGFnIGlzIGRpc2NvdXJhZ2VkIGFzIHRoZSBsb2NhbGUgbWVjaGFuaXNtCiAgICBpcyB2ZXJ5IHVucmVsaWFibGUsIGFuZCBpdCBvbmx5IGhhbmRsZXMgb25lICJjdWx0dXJlIiBhdCBhIHRpbWUgYW55d2F5OwogICAgeW91IHNob3VsZCB1c2UgVW5pY29kZSBtYXRjaGluZyBpbnN0ZWFkLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBpbiBQeXRob24gMwotICAgZm9yIFVuaWNvZGUgKHN0cikgcGF0dGVybnMuIFRoaXMgZmxhZyBtYWtlcyBzZW5zZSBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMuCisgICBmb3IgVW5pY29kZSAoc3RyKSBwYXR0ZXJucy4gVGhpcyBmbGFnIGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBieXRlcyBwYXR0ZXJucy4KIAotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgotICAgICAgRGVwcmVjYXRlZCB0aGUgdXNlIG9mICA6Y29uc3Q6YHJlLkxPQ0FMRWAgd2l0aCBzdHJpbmcgcGF0dGVybnMgb3IKLSAgICAgIDpjb25zdDpgcmUuQVNDSUlgLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDpjb25zdDpgcmUuTE9DQUxFYCBjYW4gYmUgdXNlZCBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMgYW5kIGlzCisgICAgICBub3QgY29tcGF0aWJsZSB3aXRoIDpjb25zdDpgcmUuQVNDSUlgLgogCiAKIC4uIGRhdGE6OiBNCkBAIC03NDIsOSArNzQ4LDggQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBVbm1hdGNoZWQgZ3JvdXBzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGVtcHR5IHN0cmluZy4KIAotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgotICAgICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Qgb2YgYGAnXCdgYCBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhCi0gICAgICBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbiBQeXRob24gMy42LgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIGFuIEFTQ0lJIGxldHRlciBub3cgYXJlIGVycm9ycy4KIAogCiAuLiBmdW5jdGlvbjo6IHN1Ym4ocGF0dGVybiwgcmVwbCwgc3RyaW5nLCBjb3VudD0wLCBmbGFncz0wKQpAQCAtMTAxMCw2ICsxMDE1LDIyIEBACiAgICAgICAnYzMnCiAKIAorLi4gbWV0aG9kOjogbWF0Y2guX19nZXRpdGVtX18oZykKKworICAgVGhpcyBpcyBpZGVudGljYWwgdG8gYGBtLmdyb3VwKGcpYGAuICBUaGlzIGFsbG93cyBlYXNpZXIgYWNjZXNzIHRvCisgICBhbiBpbmRpdmlkdWFsIGdyb3VwIGZyb20gYSBtYXRjaDoKKworICAgICAgPj4+IG0gPSByZS5tYXRjaChyIihcdyspIChcdyspIiwgIklzYWFjIE5ld3RvbiwgcGh5c2ljaXN0IikKKyAgICAgID4+PiBtWzBdICAgICAgICMgVGhlIGVudGlyZSBtYXRjaAorICAgICAgJ0lzYWFjIE5ld3RvbicKKyAgICAgID4+PiBtWzFdICAgICAgICMgVGhlIGZpcnN0IHBhcmVudGhlc2l6ZWQgc3ViZ3JvdXAuCisgICAgICAnSXNhYWMnCisgICAgICA+Pj4gbVsyXSAgICAgICAjIFRoZSBzZWNvbmQgcGFyZW50aGVzaXplZCBzdWJncm91cC4KKyAgICAgICdOZXd0b24nCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG1ldGhvZDo6IG1hdGNoLmdyb3VwcyhkZWZhdWx0PU5vbmUpCiAKICAgIFJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIHRoZSBzdWJncm91cHMgb2YgdGhlIG1hdGNoLCBmcm9tIDEgdXAgdG8gaG93ZXZlcgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0IGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CmluZGV4IDRkM2MwOTkuLjM3ZTQwMGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKQEAgLTE2Nyw2ICsxNjcsMjAgQEAKICAgIFRoaXMgY2FsbHMgOmM6ZnVuYzpgYWRkX2hpc3RvcnlgIGluIHRoZSB1bmRlcmx5aW5nIGxpYnJhcnkuCiAKIAorLi4gZnVuY3Rpb246OiBzZXRfYXV0b19oaXN0b3J5KGVuYWJsZWQpCisKKyAgIEVuYWJsZSBvciBkaXNhYmxlIGF1dG9tYXRpYyBjYWxscyB0byA6YzpmdW5jOmBhZGRfaGlzdG9yeWAgd2hlbiByZWFkaW5nCisgICBpbnB1dCB2aWEgcmVhZGxpbmUuICBUaGUgKmVuYWJsZWQqIGFyZ3VtZW50IHNob3VsZCBiZSBhIEJvb2xlYW4gdmFsdWUKKyAgIHRoYXQgd2hlbiB0cnVlLCBlbmFibGVzIGF1dG8gaGlzdG9yeSwgYW5kIHRoYXQgd2hlbiBGYWxzZSwgZGlzYWJsZXMKKyAgIGF1dG8gaGlzdG9yeS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgIC4uIGltcGwtZGV0YWlsOjoKKyAgICAgIEF1dG8gaGlzdG9yeSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFuZCBjaGFuZ2VzIHRvIHRoaXMgZG8gbm90IHBlcnNpc3QKKyAgICAgIGFjcm9zcyBtdWx0aXBsZSBzZXNzaW9ucy4KKworCiBTdGFydHVwIGhvb2tzCiAtLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NlY3JldHMucnN0IGIvRG9jL2xpYnJhcnkvc2VjcmV0cy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJmODQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3NlY3JldHMucnN0CkBAIC0wLDAgKzEsMTk4IEBACis6bW9kOmBzZWNyZXRzYCAtLS0gR2VuZXJhdGUgc2VjdXJlIHJhbmRvbSBudW1iZXJzIGZvciBtYW5hZ2luZyBzZWNyZXRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IHNlY3JldHMKKyAgIDpzeW5vcHNpczogR2VuZXJhdGUgc2VjdXJlIHJhbmRvbSBudW1iZXJzIGZvciBtYW5hZ2luZyBzZWNyZXRzLgorCisuLiBtb2R1bGVhdXRob3I6OiBTdGV2ZW4gRCdBcHJhbm8gPHN0ZXZlK3B5dGhvbkBwZWFyd29vZC5pbmZvPgorLi4gc2VjdGlvbmF1dGhvcjo6IFN0ZXZlbiBEJ0FwcmFubyA8c3RldmUrcHl0aG9uQHBlYXJ3b29kLmluZm8+CisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gdGVzdHNldHVwOjoKKworICAgZnJvbSBzZWNyZXRzIGltcG9ydCAqCisgICBfX25hbWVfXyA9ICc8ZG9jdGVzdD4nCisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3NlY3JldHMucHlgCisKKy0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZSBpcyB1c2VkIGZvciBnZW5lcmF0aW5nIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZworcmFuZG9tIG51bWJlcnMgc3VpdGFibGUgZm9yIG1hbmFnaW5nIGRhdGEgc3VjaCBhcyBwYXNzd29yZHMsIGFjY291bnQKK2F1dGhlbnRpY2F0aW9uLCBzZWN1cml0eSB0b2tlbnMsIGFuZCByZWxhdGVkIHNlY3JldHMuCisKK0luIHBhcnRpY3VsYXJseSwgOm1vZDpgc2VjcmV0c2Agc2hvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUKK2RlZmF1bHQgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGluIHRoZSA6bW9kOmByYW5kb21gIG1vZHVsZSwgd2hpY2gKK2lzIGRlc2lnbmVkIGZvciBtb2RlbGxpbmcgYW5kIHNpbXVsYXRpb24sIG5vdCBzZWN1cml0eSBvciBjcnlwdG9ncmFwaHkuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MDZgCisKKworUmFuZG9tIG51bWJlcnMKKy0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBtb3N0IHNlY3VyZSBzb3VyY2Ugb2YKK3JhbmRvbW5lc3MgdGhhdCB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gcHJvdmlkZXMuCisKKy4uIGNsYXNzOjogU3lzdGVtUmFuZG9tCisKKyAgIEEgY2xhc3MgZm9yIGdlbmVyYXRpbmcgcmFuZG9tIG51bWJlcnMgdXNpbmcgdGhlIGhpZ2hlc3QtcXVhbGl0eQorICAgc291cmNlcyBwcm92aWRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIFNlZQorICAgOmNsYXNzOmByYW5kb20uU3lzdGVtUmFuZG9tYCBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgorCisuLiBmdW5jdGlvbjo6IGNob2ljZShzZXF1ZW5jZSkKKworICAgUmV0dXJuIGEgcmFuZG9tbHktY2hvc2VuIGVsZW1lbnQgZnJvbSBhIG5vbi1lbXB0eSBzZXF1ZW5jZS4KKworLi4gZnVuY3Rpb246OiByYW5kYmVsb3cobikKKworICAgUmV0dXJuIGEgcmFuZG9tIGludCBpbiB0aGUgcmFuZ2UgWzAsICpuKikuCisKKy4uIGZ1bmN0aW9uOjogcmFuZGJpdHMoaykKKworICAgUmV0dXJuIGFuIGludCB3aXRoICprKiByYW5kb20gYml0cy4KKworCitHZW5lcmF0aW5nIHRva2VucworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZSBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgc2VjdXJlCit0b2tlbnMsIHN1aXRhYmxlIGZvciBhcHBsaWNhdGlvbnMgc3VjaCBhcyBwYXNzd29yZCByZXNldHMsCitoYXJkLXRvLWd1ZXNzIFVSTHMsIGFuZCBzaW1pbGFyLgorCisuLiBmdW5jdGlvbjo6IHRva2VuX2J5dGVzKFtuYnl0ZXM9Tm9uZV0pCisKKyAgIFJldHVybiBhIHJhbmRvbSBieXRlIHN0cmluZyBjb250YWluaW5nICpuYnl0ZXMqIG51bWJlciBvZiBieXRlcy4KKyAgIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlIGRlZmF1bHQgaXMKKyAgIHVzZWQuCisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gdG9rZW5fYnl0ZXMoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICAgYidceGViclx4MTdEKnRceGFlXHhkNFx4ZTNTXHhiNlx4ZTJceGViUDFceDhiJworCisKKy4uIGZ1bmN0aW9uOjogdG9rZW5faGV4KFtuYnl0ZXM9Tm9uZV0pCisKKyAgIFJldHVybiBhIHJhbmRvbSB0ZXh0IHN0cmluZywgaW4gaGV4YWRlY2ltYWwuICBUaGUgc3RyaW5nIGhhcyAqbmJ5dGVzKgorICAgcmFuZG9tIGJ5dGVzLCBlYWNoIGJ5dGUgY29udmVydGVkIHRvIHR3byBoZXggZGlnaXRzLiAgSWYgKm5ieXRlcyogaXMKKyAgIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlIGRlZmF1bHQgaXMgdXNlZC4KKworICAgLi4gZG9jdGVzdDo6CisKKyAgICAgID4+PiB0b2tlbl9oZXgoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICAgJ2Y5YmY3OGI5YTE4Y2U2ZDQ2YTBjZDJiMGI4NmRmOWRhJworCisuLiBmdW5jdGlvbjo6IHRva2VuX3VybHNhZmUoW25ieXRlcz1Ob25lXSkKKworICAgUmV0dXJuIGEgcmFuZG9tIFVSTC1zYWZlIHRleHQgc3RyaW5nLCBjb250YWluaW5nICpuYnl0ZXMqIHJhbmRvbQorICAgYnl0ZXMuICBUaGUgdGV4dCBpcyBCYXNlNjQgZW5jb2RlZCwgc28gb24gYXZlcmFnZSBlYWNoIGJ5dGUgcmVzdWx0cworICAgaW4gYXBwcm94aW1hdGVseSAxLjMgY2hhcmFjdGVycy4gIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdAorICAgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzIHVzZWQuCisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gdG9rZW5fdXJsc2FmZSgxNikgICNkb2N0ZXN0OitTS0lQCisgICAgICAnRHJtaHplNkVQY3YwZk5fODFCai1uQScKKworCitIb3cgbWFueSBieXRlcyBzaG91bGQgdG9rZW5zIHVzZT8KK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUbyBiZSBzZWN1cmUgYWdhaW5zdAorYGJydXRlLWZvcmNlIGF0dGFja3MgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JydXRlLWZvcmNlX2F0dGFjaz5gXywKK3Rva2VucyBuZWVkIHRvIGhhdmUgc3VmZmljaWVudCByYW5kb21uZXNzLiAgVW5mb3J0dW5hdGVseSwgd2hhdCBpcworY29uc2lkZXJlZCBzdWZmaWNpZW50IHdpbGwgbmVjZXNzYXJpbHkgaW5jcmVhc2UgYXMgY29tcHV0ZXJzIGdldCBtb3JlCitwb3dlcmZ1bCBhbmQgYWJsZSB0byBtYWtlIG1vcmUgZ3Vlc3NlcyBpbiBhIHNob3J0ZXIgcGVyaW9kLiAgQXMgb2YgMjAxNSwKK2l0IGlzIGJlbGlldmVkIHRoYXQgMzIgYnl0ZXMgKDI1NiBiaXRzKSBvZiByYW5kb21uZXNzIGlzIHN1ZmZpY2llbnQgZm9yCit0aGUgdHlwaWNhbCB1c2UtY2FzZSBleHBlY3RlZCBmb3IgdGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZS4KKworRm9yIHRob3NlIHdobyB3YW50IHRvIG1hbmFnZSB0aGVpciBvd24gdG9rZW4gbGVuZ3RoLCB5b3UgY2FuIGV4cGxpY2l0bHkKK3NwZWNpZnkgaG93IG11Y2ggcmFuZG9tbmVzcyBpcyB1c2VkIGZvciB0b2tlbnMgYnkgZ2l2aW5nIGFuIDpjbGFzczpgaW50YAorYXJndW1lbnQgdG8gdGhlIHZhcmlvdXMgYGB0b2tlbl8qYGAgZnVuY3Rpb25zLiAgVGhhdCBhcmd1bWVudCBpcyB0YWtlbgorYXMgdGhlIG51bWJlciBvZiBieXRlcyBvZiByYW5kb21uZXNzIHRvIHVzZS4KKworT3RoZXJ3aXNlLCBpZiBubyBhcmd1bWVudCBpcyBwcm92aWRlZCwgb3IgaWYgdGhlIGFyZ3VtZW50IGlzIGBgTm9uZWBgLAordGhlIGBgdG9rZW5fKmBgIGZ1bmN0aW9ucyB3aWxsIHVzZSBhIHJlYXNvbmFibGUgZGVmYXVsdCBpbnN0ZWFkLgorCisuLiBub3RlOjoKKworICAgVGhhdCBkZWZhdWx0IGlzIHN1YmplY3QgdG8gY2hhbmdlIGF0IGFueSB0aW1lLCBpbmNsdWRpbmcgZHVyaW5nCisgICBtYWludGVuYW5jZSByZWxlYXNlcy4KKworCitPdGhlciBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IGNvbXBhcmVfZGlnZXN0KGEsIGIpCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiBzdHJpbmdzICphKiBhbmQgKmIqIGFyZSBlcXVhbCwgb3RoZXJ3aXNlIGBgRmFsc2VgYCwKKyAgIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmVkdWNlIHRoZSByaXNrIG9mCisgICBgdGltaW5nIGF0dGFja3MgPGh0dHA6Ly9jb2RhaGFsZS5jb20vYS1sZXNzb24taW4tdGltaW5nLWF0dGFja3MvPmBfLgorICAgU2VlIDpmdW5jOmBobWFjLmNvbXBhcmVfZGlnZXN0YCBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgorCisKK1JlY2lwZXMgYW5kIGJlc3QgcHJhY3RpY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIHNlY3Rpb24gc2hvd3MgcmVjaXBlcyBhbmQgYmVzdCBwcmFjdGljZXMgZm9yIHVzaW5nIDptb2Q6YHNlY3JldHNgCit0byBtYW5hZ2UgYSBiYXNpYyBsZXZlbCBvZiBzZWN1cml0eS4KKworR2VuZXJhdGUgYW4gZWlnaHQtY2hhcmFjdGVyIGFscGhhbnVtZXJpYyBwYXNzd29yZDoKKworLi4gdGVzdGNvZGU6OgorCisgICBpbXBvcnQgc3RyaW5nCisgICBhbHBoYWJldCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cworICAgcGFzc3dvcmQgPSAnJy5qb2luKGNob2ljZShhbHBoYWJldCkgZm9yIGkgaW4gcmFuZ2UoOCkpCisKKworLi4gbm90ZTo6CisKKyAgIEFwcGxpY2F0aW9ucyBzaG91bGQgbm90CisgICBgc3RvcmUgcGFzc3dvcmRzIGluIGEgcmVjb3ZlcmFibGUgZm9ybWF0IDxodHRwOi8vY3dlLm1pdHJlLm9yZy9kYXRhL2RlZmluaXRpb25zLzI1Ny5odG1sPmBfLAorICAgd2hldGhlciBwbGFpbiB0ZXh0IG9yIGVuY3J5cHRlZC4gIFRoZXkgc2hvdWxkIGJlIHNhbHRlZCBhbmQgaGFzaGVkCisgICB1c2luZyBhIGNyeXB0b2dyYXBoaWNhbGx5LXN0cm9uZyBvbmUtd2F5IChpcnJldmVyc2libGUpIGhhc2ggZnVuY3Rpb24uCisKKworR2VuZXJhdGUgYSB0ZW4tY2hhcmFjdGVyIGFscGhhbnVtZXJpYyBwYXNzd29yZCB3aXRoIGF0IGxlYXN0IG9uZQorbG93ZXJjYXNlIGNoYXJhY3RlciwgYXQgbGVhc3Qgb25lIHVwcGVyY2FzZSBjaGFyYWN0ZXIsIGFuZCBhdCBsZWFzdAordGhyZWUgZGlnaXRzOgorCisuLiB0ZXN0Y29kZTo6CisKKyAgIGltcG9ydCBzdHJpbmcKKyAgIGFscGhhYmV0ID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzCisgICB3aGlsZSBUcnVlOgorICAgICAgIHBhc3N3b3JkID0gJycuam9pbihjaG9pY2UoYWxwaGFiZXQpIGZvciBpIGluIHJhbmdlKDEwKSkKKyAgICAgICBpZiAoYW55KGMuaXNsb3dlcigpIGZvciBjIGluIHBhc3N3b3JkKQorICAgICAgICAgICAgICAgYW5kIGFueShjLmlzdXBwZXIoKSBmb3IgYyBpbiBwYXNzd29yZCkKKyAgICAgICAgICAgICAgIGFuZCBzdW0oYy5pc2RpZ2l0KCkgZm9yIGMgaW4gcGFzc3dvcmQpID49IDMpOgorICAgICAgICAgICBicmVhaworCisKK0dlbmVyYXRlIGFuIGBYS0NELXN0eWxlIHBhc3NwaHJhc2UgPGh0dHA6Ly94a2NkLmNvbS85MzYvPmBfOgorCisuLiB0ZXN0Y29kZTo6CisKKyAgICMgT24gc3RhbmRhcmQgTGludXggc3lzdGVtcywgdXNlIGEgY29udmVuaWVudCBkaWN0aW9uYXJ5IGZpbGUuCisgICAjIE90aGVyIHBsYXRmb3JtcyBtYXkgbmVlZCB0byBwcm92aWRlIHRoZWlyIG93biB3b3JkLWxpc3QuCisgICB3aXRoIG9wZW4oJy91c3Ivc2hhcmUvZGljdC93b3JkcycpIGFzIGY6CisgICAgICAgd29yZHMgPSBbd29yZC5zdHJpcCgpIGZvciB3b3JkIGluIGZdCisgICAgICAgcGFzc3dvcmQgPSAnICcuam9pbihjaG9pY2Uod29yZHMpIGZvciBpIGluIHJhbmdlKDQpKQorCisKK0dlbmVyYXRlIGEgaGFyZC10by1ndWVzcyB0ZW1wb3JhcnkgVVJMIGNvbnRhaW5pbmcgYSBzZWN1cml0eSB0b2tlbgorc3VpdGFibGUgZm9yIHBhc3N3b3JkIHJlY292ZXJ5IGFwcGxpY2F0aW9uczoKKworLi4gdGVzdGNvZGU6OgorCisgICB1cmwgPSAnaHR0cHM6Ly9teWRvbWFpbi5jb20vcmVzZXQ9JyArIHRva2VuX3VybHNhZmUoKQorCisKKworLi4KKyAgICMgVGhpcyBtb2RlbGluZSBtdXN0IGFwcGVhciB3aXRoaW4gdGhlIGxhc3QgdGVuIGxpbmVzIG9mIHRoZSBmaWxlLgorICAga2F0ZTogaW5kZW50LXdpZHRoIDM7IHJlbW92ZS10cmFpbGluZy1zcGFjZSBvbjsgcmVwbGFjZS10YWJzIG9uOyBlbmNvZGluZyB1dGYtODsKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CmluZGV4IGE0NjVkMjUuLmM2MjE5NDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdApAQCAtMjY4LDM1ICsyNjgsNDMgQEAKIAogICAgKmV2ZW50bWFzayoKIAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBDb25zdGFudCAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwotICAgfCA6Y29uc3Q6YEVQT0xMSU5gICAgICAgfCBBdmFpbGFibGUgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMT1VUYCAgICAgfCBBdmFpbGFibGUgZm9yIHdyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMUFJJYCAgICAgfCBVcmdlbnQgZGF0YSBmb3IgcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMRVJSYCAgICAgfCBFcnJvciBjb25kaXRpb24gaGFwcGVuZWQgb24gdGhlIGFzc29jLiBmZCAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMSFVQYCAgICAgfCBIYW5nIHVwIGhhcHBlbmVkIG9uIHRoZSBhc3NvYy4gZmQgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMRVRgICAgICAgfCBTZXQgRWRnZSBUcmlnZ2VyIGJlaGF2aW9yLCB0aGUgZGVmYXVsdCBpcyAgICAgfAotICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCBMZXZlbCBUcmlnZ2VyIGJlaGF2aW9yICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMT05FU0hPVGAgfCBTZXQgb25lLXNob3QgYmVoYXZpb3IuIEFmdGVyIG9uZSBldmVudCBpcyAgICAgfAotICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCBwdWxsZWQgb3V0LCB0aGUgZmQgaXMgaW50ZXJuYWxseSBkaXNhYmxlZCAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMUkROT1JNYCAgfCBFcXVpdmFsZW50IHRvIDpjb25zdDpgRVBPTExJTmAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMUkRCQU5EYCAgfCBQcmlvcml0eSBkYXRhIGJhbmQgY2FuIGJlIHJlYWQuICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMV1JOT1JNYCAgfCBFcXVpdmFsZW50IHRvIDpjb25zdDpgRVBPTExPVVRgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMV1JCQU5EYCAgfCBQcmlvcml0eSBkYXRhIG1heSBiZSB3cml0dGVuLiAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMTVNHYCAgICAgfCBJZ25vcmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IENvbnN0YW50ICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICs9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICAgfCA6Y29uc3Q6YEVQT0xMSU5gICAgICAgICB8IEF2YWlsYWJsZSBmb3IgcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTE9VVGAgICAgICAgfCBBdmFpbGFibGUgZm9yIHdyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExQUklgICAgICAgIHwgVXJnZW50IGRhdGEgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMRVJSYCAgICAgICB8IEVycm9yIGNvbmRpdGlvbiBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTEhVUGAgICAgICAgfCBIYW5nIHVwIGhhcHBlbmVkIG9uIHRoZSBhc3NvYy4gZmQgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExFVGAgICAgICAgIHwgU2V0IEVkZ2UgVHJpZ2dlciBiZWhhdmlvciwgdGhlIGRlZmF1bHQgaXMgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXZlbCBUcmlnZ2VyIGJlaGF2aW9yICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExPTkVTSE9UYCAgIHwgU2V0IG9uZS1zaG90IGJlaGF2aW9yLiBBZnRlciBvbmUgZXZlbnQgaXMgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBwdWxsZWQgb3V0LCB0aGUgZmQgaXMgaW50ZXJuYWxseSBkaXNhYmxlZCAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExFWENMVVNJVkVgIHwgV2FrZSBvbmx5IG9uZSBlcG9sbCBvYmplY3Qgd2hlbiB0aGUgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBhc3NvY2lhdGVkIGZkIGhhcyBhbiBldmVudC4gVGhlIGRlZmF1bHQgKGlmICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoaXMgZmxhZyBpcyBub3Qgc2V0KSBpcyB0byB3YWtlIGFsbCBlcG9sbCAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2JqZWN0cyBwb2xsaW5nIG9uIG9uIGEgZmQuICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMUkRIVVBgICAgICB8IFN0cmVhbSBzb2NrZXQgcGVlciBjbG9zZWQgY29ubmVjdGlvbiBvciBzaHV0ICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZG93biB3cml0aW5nIGhhbGYgb2YgY29ubmVjdGlvbi4gICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMUkROT1JNYCAgICB8IEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBFUE9MTElOYCAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFJEQkFORGAgICAgfCBQcmlvcml0eSBkYXRhIGJhbmQgY2FuIGJlIHJlYWQuICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExXUk5PUk1gICAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMT1VUYCAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMV1JCQU5EYCAgICB8IFByaW9yaXR5IGRhdGEgbWF5IGJlIHdyaXR0ZW4uICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTE1TR2AgICAgICAgfCBJZ25vcmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIAogLi4gbWV0aG9kOjogZXBvbGwuY2xvc2UoKQpAQCAtMzg1LDYgKzM5Myw5IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDpjb25zdDpgUE9MTEhVUGAgIHwgSHVuZyB1cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgUE9MTFJESFVQYHwgU3RyZWFtIHNvY2tldCBwZWVyIGNsb3NlZCBjb25uZWN0aW9uLCBvciB8CisgICB8ICAgICAgICAgICAgICAgICAgIHwgc2h1dCBkb3duIHdyaXRpbmcgaGFsZiBvZiBjb25uZWN0aW9uICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDpjb25zdDpgUE9MTE5WQUxgIHwgSW52YWxpZCByZXF1ZXN0OiBkZXNjcmlwdG9yIG5vdCBvcGVuICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NobGV4LnJzdCBiL0RvYy9saWJyYXJ5L3NobGV4LnJzdAppbmRleCBlODFmOTgyLi4xYTg5YmY2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaGxleC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2hsZXgucnN0CkBAIC03MywxMSArNzMsMTEgQEAKIFRoZSA6bW9kOmBzaGxleGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzczoKIAogCi0uLiBjbGFzczo6IHNobGV4KGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSkKKy4uIGNsYXNzOjogc2hsZXgoaW5zdHJlYW09Tm9uZSwgaW5maWxlPU5vbmUsIHBvc2l4PUZhbHNlLCBwdW5jdHVhdGlvbl9jaGFycz1GYWxzZSkKIAogICAgQSA6Y2xhc3M6YH5zaGxleC5zaGxleGAgaW5zdGFuY2Ugb3Igc3ViY2xhc3MgaW5zdGFuY2UgaXMgYSBsZXhpY2FsIGFuYWx5emVyCiAgICBvYmplY3QuICBUaGUgaW5pdGlhbGl6YXRpb24gYXJndW1lbnQsIGlmIHByZXNlbnQsIHNwZWNpZmllcyB3aGVyZSB0byByZWFkCi0gICBjaGFyYWN0ZXJzIGZyb20uIEl0IG11c3QgYmUgYSBmaWxlLS9zdHJlYW0tbGlrZSBvYmplY3Qgd2l0aAorICAgY2hhcmFjdGVycyBmcm9tLiAgSXQgbXVzdCBiZSBhIGZpbGUtL3N0cmVhbS1saWtlIG9iamVjdCB3aXRoCiAgICA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGAgYW5kIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkbGluZWAgbWV0aG9kcywgb3IKICAgIGEgc3RyaW5nLiAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIGlucHV0IHdpbGwgYmUgdGFrZW4gZnJvbSBgYHN5cy5zdGRpbmBgLgogICAgVGhlIHNlY29uZCBvcHRpb25hbCBhcmd1bWVudCBpcyBhIGZpbGVuYW1lIHN0cmluZywgd2hpY2ggc2V0cyB0aGUgaW5pdGlhbApAQCAtODcsOCArODcsMTkgQEAKICAgIHdoZW4gKnBvc2l4KiBpcyBub3QgdHJ1ZSAoZGVmYXVsdCksIHRoZSA6Y2xhc3M6YH5zaGxleC5zaGxleGAgaW5zdGFuY2Ugd2lsbAogICAgb3BlcmF0ZSBpbiBjb21wYXRpYmlsaXR5IG1vZGUuICBXaGVuIG9wZXJhdGluZyBpbiBQT1NJWCBtb2RlLAogICAgOmNsYXNzOmB+c2hsZXguc2hsZXhgIHdpbGwgdHJ5IHRvIGJlIGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZSBQT1NJWCBzaGVsbAotICAgcGFyc2luZyBydWxlcy4KKyAgIHBhcnNpbmcgcnVsZXMuICBUaGUgKnB1bmN0dWF0aW9uX2NoYXJzKiBhcmd1bWVudCBwcm92aWRlcyBhIHdheSB0byBtYWtlIHRoZQorICAgYmVoYXZpb3VyIGV2ZW4gY2xvc2VyIHRvIGhvdyByZWFsIHNoZWxscyBwYXJzZS4gIFRoaXMgY2FuIHRha2UgYSBudW1iZXIgb2YKKyAgIHZhbHVlczogdGhlIGRlZmF1bHQgdmFsdWUsIGBgRmFsc2VgYCwgcHJlc2VydmVzIHRoZSBiZWhhdmlvdXIgc2VlbiB1bmRlcgorICAgUHl0aG9uIDMuNSBhbmQgZWFybGllci4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiBwYXJzaW5nIG9mIHRoZSBjaGFyYWN0ZXJzCisgICBgYCgpOzw+fCZgYCBpcyBjaGFuZ2VkOiBhbnkgcnVuIG9mIHRoZXNlIGNoYXJhY3RlcnMgKGNvbnNpZGVyZWQgcHVuY3R1YXRpb24KKyAgIGNoYXJhY3RlcnMpIGlzIHJldHVybmVkIGFzIGEgc2luZ2xlIHRva2VuLiAgSWYgc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZyBvZgorICAgY2hhcmFjdGVycywgdGhvc2UgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgYXMgdGhlIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMuICBBbnkKKyAgIGNoYXJhY3RlcnMgaW4gdGhlIDphdHRyOmB3b3JkY2hhcnNgIGF0dHJpYnV0ZSB0aGF0IGFwcGVhciBpbgorICAgKnB1bmN0dWF0aW9uX2NoYXJzKiB3aWxsIGJlIHJlbW92ZWQgZnJvbSA6YXR0cjpgd29yZGNoYXJzYC4gIFNlZQorICAgOnJlZjpgaW1wcm92ZWQtc2hlbGwtY29tcGF0aWJpbGl0eWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgKnB1bmN0dWF0aW9uX2NoYXJzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMTkxLDcgKzIwMiwxMyBAQAogLi4gYXR0cmlidXRlOjogc2hsZXgud29yZGNoYXJzCiAKICAgIFRoZSBzdHJpbmcgb2YgY2hhcmFjdGVycyB0aGF0IHdpbGwgYWNjdW11bGF0ZSBpbnRvIG11bHRpLWNoYXJhY3RlciB0b2tlbnMuICBCeQotICAgZGVmYXVsdCwgaW5jbHVkZXMgYWxsIEFTQ0lJIGFscGhhbnVtZXJpY3MgYW5kIHVuZGVyc2NvcmUuCisgICBkZWZhdWx0LCBpbmNsdWRlcyBhbGwgQVNDSUkgYWxwaGFudW1lcmljcyBhbmQgdW5kZXJzY29yZS4gIEluIFBPU0lYIG1vZGUsIHRoZQorICAgYWNjZW50ZWQgY2hhcmFjdGVycyBpbiB0aGUgTGF0aW4tMSBzZXQgYXJlIGFsc28gaW5jbHVkZWQuICBJZgorICAgOmF0dHI6YHB1bmN0dWF0aW9uX2NoYXJzYCBpcyBub3QgZW1wdHksIHRoZSBjaGFyYWN0ZXJzIGBgfi0uLyo/PWBgLCB3aGljaCBjYW4KKyAgIGFwcGVhciBpbiBmaWxlbmFtZSBzcGVjaWZpY2F0aW9ucyBhbmQgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMsIHdpbGwgYWxzbyBiZQorICAgaW5jbHVkZWQgaW4gdGhpcyBhdHRyaWJ1dGUsIGFuZCBhbnkgY2hhcmFjdGVycyB3aGljaCBhcHBlYXIgaW4KKyAgIGBgcHVuY3R1YXRpb25fY2hhcnNgYCB3aWxsIGJlIHJlbW92ZWQgZnJvbSBgYHdvcmRjaGFyc2BgIGlmIHRoZXkgYXJlIHByZXNlbnQKKyAgIHRoZXJlLgogCiAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LndoaXRlc3BhY2UKQEAgLTIyMiw5ICsyMzksMTMgQEAKIAogLi4gYXR0cmlidXRlOjogc2hsZXgud2hpdGVzcGFjZV9zcGxpdAogCi0gICBJZiBgYFRydWVgYCwgdG9rZW5zIHdpbGwgb25seSBiZSBzcGxpdCBpbiB3aGl0ZXNwYWNlcy4gVGhpcyBpcyB1c2VmdWwsIGZvcgorICAgSWYgYGBUcnVlYGAsIHRva2VucyB3aWxsIG9ubHkgYmUgc3BsaXQgaW4gd2hpdGVzcGFjZXMuICBUaGlzIGlzIHVzZWZ1bCwgZm9yCiAgICBleGFtcGxlLCBmb3IgcGFyc2luZyBjb21tYW5kIGxpbmVzIHdpdGggOmNsYXNzOmB+c2hsZXguc2hsZXhgLCBnZXR0aW5nCi0gICB0b2tlbnMgaW4gYSBzaW1pbGFyIHdheSB0byBzaGVsbCBhcmd1bWVudHMuCisgICB0b2tlbnMgaW4gYSBzaW1pbGFyIHdheSB0byBzaGVsbCBhcmd1bWVudHMuICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBgYFRydWVgYCwKKyAgIDphdHRyOmBwdW5jdHVhdGlvbl9jaGFyc2Agd2lsbCBoYXZlIG5vIGVmZmVjdCwgYW5kIHNwbGl0dGluZyB3aWxsIGhhcHBlbgorICAgb25seSBvbiB3aGl0ZXNwYWNlcy4gIFdoZW4gdXNpbmcgOmF0dHI6YHB1bmN0dWF0aW9uX2NoYXJzYCwgd2hpY2ggaXMKKyAgIGludGVuZGVkIHRvIHByb3ZpZGUgcGFyc2luZyBjbG9zZXIgdG8gdGhhdCBpbXBsZW1lbnRlZCBieSBzaGVsbHMsIGl0IGlzCisgICBhZHZpc2FibGUgdG8gbGVhdmUgYGB3aGl0ZXNwYWNlX3NwbGl0YGAgYXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCB2YWx1ZSkuCiAKIAogLi4gYXR0cmlidXRlOjogc2hsZXguaW5maWxlCkBAIC0yNDUsMTAgKzI2Niw5IEBACiAgICBUaGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYCBieSBkZWZhdWx0LiAgSWYgeW91IGFzc2lnbiBhIHN0cmluZyB0byBpdCwgdGhhdAogICAgc3RyaW5nIHdpbGwgYmUgcmVjb2duaXplZCBhcyBhIGxleGljYWwtbGV2ZWwgaW5jbHVzaW9uIHJlcXVlc3Qgc2ltaWxhciB0byB0aGUKICAgIGBgc291cmNlYGAga2V5d29yZCBpbiB2YXJpb3VzIHNoZWxscy4gIFRoYXQgaXMsIHRoZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdG9rZW4KLSAgIHdpbGwgYmUgb3BlbmVkIGFzIGEgZmlsZW5hbWUgYW5kIGlucHV0IHdpbGwKLSAgIGJlIHRha2VuIGZyb20gdGhhdCBzdHJlYW0gdW50aWwgRU9GLCBhdCB3aGljaAotICAgcG9pbnQgdGhlIDptZXRoOmB+aW8uSU9CYXNlLmNsb3NlYCBtZXRob2Qgb2YgdGhhdCBzdHJlYW0gd2lsbCBiZSBjYWxsZWQgYW5kCi0gICB0aGUgaW5wdXQgc291cmNlIHdpbGwgYWdhaW4gYmVjb21lIHRoZSBvcmlnaW5hbCBpbnB1dCBzdHJlYW0uICBTb3VyY2UKKyAgIHdpbGwgYmUgb3BlbmVkIGFzIGEgZmlsZW5hbWUgYW5kIGlucHV0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGF0IHN0cmVhbSB1bnRpbAorICAgRU9GLCBhdCB3aGljaCBwb2ludCB0aGUgOm1ldGg6YH5pby5JT0Jhc2UuY2xvc2VgIG1ldGhvZCBvZiB0aGF0IHN0cmVhbSB3aWxsIGJlCisgICBjYWxsZWQgYW5kIHRoZSBpbnB1dCBzb3VyY2Ugd2lsbCBhZ2FpbiBiZWNvbWUgdGhlIG9yaWdpbmFsIGlucHV0IHN0cmVhbS4gIFNvdXJjZQogICAgcmVxdWVzdHMgbWF5IGJlIHN0YWNrZWQgYW55IG51bWJlciBvZiBsZXZlbHMgZGVlcC4KIAogCkBAIC0yNzUsNiArMjk1LDE2IEBACiAgICAoYGAnJ2BgKSwgaW4gbm9uLVBPU0lYIG1vZGUsIGFuZCB0byBgYE5vbmVgYCBpbiBQT1NJWCBtb2RlLgogCiAKKy4uIGF0dHJpYnV0ZTo6IHNobGV4LnB1bmN0dWF0aW9uX2NoYXJzCisKKyAgIENoYXJhY3RlcnMgdGhhdCB3aWxsIGJlIGNvbnNpZGVyZWQgcHVuY3R1YXRpb24uIFJ1bnMgb2YgcHVuY3R1YXRpb24KKyAgIGNoYXJhY3RlcnMgd2lsbCBiZSByZXR1cm5lZCBhcyBhIHNpbmdsZSB0b2tlbi4gSG93ZXZlciwgbm90ZSB0aGF0IG5vCisgICBzZW1hbnRpYyB2YWxpZGl0eSBjaGVja2luZyB3aWxsIGJlIHBlcmZvcm1lZDogZm9yIGV4YW1wbGUsICc+Pj4nIGNvdWxkIGJlCisgICByZXR1cm5lZCBhcyBhIHRva2VuLCBldmVuIHRob3VnaCBpdCBtYXkgbm90IGJlIHJlY29nbmlzZWQgYXMgc3VjaCBieSBzaGVsbHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIF9zaGxleC1wYXJzaW5nLXJ1bGVzOgogCiBQYXJzaW5nIFJ1bGVzCkBAIC0zMjcsMyArMzU3LDYyIEBACiAqIEVPRiBpcyBzaWduYWxlZCB3aXRoIGEgOmNvbnN0OmBOb25lYCB2YWx1ZTsKIAogKiBRdW90ZWQgZW1wdHkgc3RyaW5ncyAoYGAnJ2BgKSBhcmUgYWxsb3dlZC4KKworLi4gX2ltcHJvdmVkLXNoZWxsLWNvbXBhdGliaWxpdHk6CisKK0ltcHJvdmVkIENvbXBhdGliaWxpdHkgd2l0aCBTaGVsbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK1RoZSA6Y2xhc3M6YHNobGV4YCBjbGFzcyBwcm92aWRlcyBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHBhcnNpbmcgcGVyZm9ybWVkIGJ5Citjb21tb24gVW5peCBzaGVsbHMgbGlrZSBgYGJhc2hgYCwgYGBkYXNoYGAsIGFuZCBgYHNoYGAuICBUbyB0YWtlIGFkdmFudGFnZSBvZgordGhpcyBjb21wYXRpYmlsaXR5LCBzcGVjaWZ5IHRoZSBgYHB1bmN0dWF0aW9uX2NoYXJzYGAgYXJndW1lbnQgaW4gdGhlCitjb25zdHJ1Y3Rvci4gIFRoaXMgZGVmYXVsdHMgdG8gYGBGYWxzZWBgLCB3aGljaCBwcmVzZXJ2ZXMgcHJlLTMuNiBiZWhhdmlvdXIuCitIb3dldmVyLCBpZiBpdCBpcyBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gcGFyc2luZyBvZiB0aGUgY2hhcmFjdGVycyBgYCgpOzw+fCZgYAoraXMgY2hhbmdlZDogYW55IHJ1biBvZiB0aGVzZSBjaGFyYWN0ZXJzIGlzIHJldHVybmVkIGFzIGEgc2luZ2xlIHRva2VuLiAgV2hpbGUKK3RoaXMgaXMgc2hvcnQgb2YgYSBmdWxsIHBhcnNlciBmb3Igc2hlbGxzICh3aGljaCB3b3VsZCBiZSBvdXQgb2Ygc2NvcGUgZm9yIHRoZQorc3RhbmRhcmQgbGlicmFyeSwgZ2l2ZW4gdGhlIG11bHRpcGxpY2l0eSBvZiBzaGVsbHMgb3V0IHRoZXJlKSwgaXQgZG9lcyBhbGxvdworeW91IHRvIHBlcmZvcm0gcHJvY2Vzc2luZyBvZiBjb21tYW5kIGxpbmVzIG1vcmUgZWFzaWx5IHRoYW4geW91IGNvdWxkCitvdGhlcndpc2UuICBUbyBpbGx1c3RyYXRlLCB5b3UgY2FuIHNlZSB0aGUgZGlmZmVyZW5jZSBpbiB0aGUgZm9sbG93aW5nIHNuaXBwZXQ6OgorCisgICAgaW1wb3J0IHNobGV4CisKKyAgICBmb3IgcHVuY3QgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgaWYgcHVuY3Q6CisgICAgICAgICAgICBtZXNzYWdlID0gJ09sZCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnTmV3JworICAgICAgICB0ZXh0ID0gImEgJiYgYjsgYyAmJiBkIHx8IGU7IGYgPidhYmMnOyAoZGVmIFwiZ2hpXCIpIgorICAgICAgICBzID0gc2hsZXguc2hsZXgodGV4dCwgcHVuY3R1YXRpb25fY2hhcnM9cHVuY3QpCisgICAgICAgIHByaW50KCclczogJXMnICUgKG1lc3NhZ2UsIGxpc3QocykpKQorCit3aGljaCBwcmludHMgb3V0OjoKKworICAgIE9sZDogWydhJywgJyYnLCAnJicsICdiJywgJzsnLCAnYycsICcmJywgJyYnLCAnZCcsICd8JywgJ3wnLCAnZScsICc7JywgJ2YnLCAnPicsICInYWJjJyIsICc7JywgJygnLCAnZGVmJywgJyJnaGkiJywgJyknXQorICAgIE5ldzogWydhJywgJyYmJywgJ2InLCAnOycsICdjJywgJyYmJywgJ2QnLCAnfHwnLCAnZScsICc7JywgJ2YnLCAnPicsICInYWJjJyIsICc7JywgJygnLCAnZGVmJywgJyJnaGkiJywgJyknXQorCitPZiBjb3Vyc2UsIHRva2VucyB3aWxsIGJlIHJldHVybmVkIHdoaWNoIGFyZSBub3QgdmFsaWQgZm9yIHNoZWxscywgYW5kIHlvdSdsbAorbmVlZCB0byBpbXBsZW1lbnQgeW91ciBvd24gZXJyb3IgY2hlY2tzIG9uIHRoZSByZXR1cm5lZCB0b2tlbnMuCisKK0luc3RlYWQgb2YgcGFzc2luZyBgYFRydWVgYCBhcyB0aGUgdmFsdWUgZm9yIHRoZSBwdW5jdHVhdGlvbl9jaGFycyBwYXJhbWV0ZXIsCit5b3UgY2FuIHBhc3MgYSBzdHJpbmcgd2l0aCBzcGVjaWZpYyBjaGFyYWN0ZXJzLCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lCit3aGljaCBjaGFyYWN0ZXJzIGNvbnN0aXR1dGUgcHVuY3R1YXRpb24uIEZvciBleGFtcGxlOjoKKworICAgID4+PiBpbXBvcnQgc2hsZXgKKyAgICA+Pj4gcyA9IHNobGV4LnNobGV4KCJhICYmIGIgfHwgYyIsIHB1bmN0dWF0aW9uX2NoYXJzPSJ8IikKKyAgICA+Pj4gbGlzdChzKQorICAgIFsnYScsICcmJywgJyYnLCAnYicsICd8fCcsICdjJ10KKworLi4gbm90ZTo6IFdoZW4gYGBwdW5jdHVhdGlvbl9jaGFyc2BgIGlzIHNwZWNpZmllZCwgdGhlIDphdHRyOmB+c2hsZXgud29yZGNoYXJzYAorICAgYXR0cmlidXRlIGlzIGF1Z21lbnRlZCB3aXRoIHRoZSBjaGFyYWN0ZXJzIGBgfi0uLyo/PWBgLiAgVGhhdCBpcyBiZWNhdXNlIHRoZXNlCisgICBjaGFyYWN0ZXJzIGNhbiBhcHBlYXIgaW4gZmlsZSBuYW1lcyAoaW5jbHVkaW5nIHdpbGRjYXJkcykgYW5kIGNvbW1hbmQtbGluZQorICAgYXJndW1lbnRzIChlLmcuIGBgLS1jb2xvcj1hdXRvYGApLiBIZW5jZTo6CisKKyAgICAgID4+PiBpbXBvcnQgc2hsZXgKKyAgICAgID4+PiBzID0gc2hsZXguc2hsZXgoJ34vYSAmJiBiLWMgLS1jb2xvcj1hdXRvIHx8IGQgKi5weT8nLAorICAgICAgLi4uICAgICAgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgPj4+IGxpc3QocykKKyAgICAgIFsnfi9hJywgJyYmJywgJ2ItYycsICctLWNvbG9yPWF1dG8nLCAnfHwnLCAnZCcsICcqLnB5PyddCisKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdCBiL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKaW5kZXggYTFjZjI0MS4uZmVmZDZhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CkBAIC00MjUsNyArNDI1LDcgQEAKICAgIGltcG9ydCBsb2dnaW5nCiAKICAgIGRlZiBfbG9ncGF0aChwYXRoLCBuYW1lcyk6Ci0gICAgICAgbG9nZ2luZy5pbmZvKCdXb3JraW5nIGluICVzJyAlIHBhdGgpCisgICAgICAgbG9nZ2luZy5pbmZvKCdXb3JraW5nIGluICVzJywgcGF0aCkKICAgICAgICByZXR1cm4gW10gICAjIG5vdGhpbmcgd2lsbCBiZSBpZ25vcmVkCiAKICAgIGNvcHl0cmVlKHNvdXJjZSwgZGVzdGluYXRpb24sIGlnbm9yZT1fbG9ncGF0aCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpdGUucnN0IGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKaW5kZXggMGE3M2Y1YS4uNDNkYWY3OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKQEAgLTUyLDcgKzUyLDggQEAKIEEgcGF0aCBjb25maWd1cmF0aW9uIGZpbGUgaXMgYSBmaWxlIHdob3NlIG5hbWUgaGFzIHRoZSBmb3JtIDpmaWxlOmB7bmFtZX0ucHRoYAogYW5kIGV4aXN0cyBpbiBvbmUgb2YgdGhlIGZvdXIgZGlyZWN0b3JpZXMgbWVudGlvbmVkIGFib3ZlOyBpdHMgY29udGVudHMgYXJlCiBhZGRpdGlvbmFsIGl0ZW1zIChvbmUgcGVyIGxpbmUpIHRvIGJlIGFkZGVkIHRvIGBgc3lzLnBhdGhgYC4gIE5vbi1leGlzdGluZyBpdGVtcwotYXJlIG5ldmVyIGFkZGVkIHRvIGBgc3lzLnBhdGhgYC4gIE5vIGl0ZW0gaXMgYWRkZWQgdG8gYGBzeXMucGF0aGBgIG1vcmUgdGhhbgorYXJlIG5ldmVyIGFkZGVkIHRvIGBgc3lzLnBhdGhgYCwgYW5kIG5vIGNoZWNrIGlzIG1hZGUgdGhhdCB0aGUgaXRlbSByZWZlcnMgdG8gYQorZGlyZWN0b3J5IHJhdGhlciB0aGFuIGEgZmlsZS4gIE5vIGl0ZW0gaXMgYWRkZWQgdG8gYGBzeXMucGF0aGBgIG1vcmUgdGhhbgogb25jZS4gIEJsYW5rIGxpbmVzIGFuZCBsaW5lcyBiZWdpbm5pbmcgd2l0aCBgYCNgYCBhcmUgc2tpcHBlZC4gIExpbmVzIHN0YXJ0aW5nCiB3aXRoIGBgaW1wb3J0YGAgKGZvbGxvd2VkIGJ5IHNwYWNlIG9yIHRhYikgYXJlIGV4ZWN1dGVkLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwZC5yc3QgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKaW5kZXggYTA5NmRlMC4uZTM4MzIwMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc210cGQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBkLnJzdApAQCAtMjksNyArMjksNyBAQAogCiAKIC4uIGNsYXNzOjogU01UUFNlcnZlcihsb2NhbGFkZHIsIHJlbW90ZWFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMixcCi0gICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUFNlcnZlcmAgb2JqZWN0LCB3aGljaCBiaW5kcyB0byBsb2NhbCBhZGRyZXNzCiAgICAqbG9jYWxhZGRyKi4gIEl0IHdpbGwgdHJlYXQgKnJlbW90ZWFkZHIqIGFzIGFuIHVwc3RyZWFtIFNNVFAgcmVsYXllci4gIEJvdGgKQEAgLTQ2LDIwICs0NiwxOSBAQAogICAgZ2xvYmFsIHNvY2tldCBtYXAgaXMgdXNlZC4KIAogICAgKmVuYWJsZV9TTVRQVVRGOCogZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uIChhcyBkZWZpbmVkCi0gICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuICBJZiBzZXQgdG8KLSAgIGBgVHJ1ZWBgLCAqZGVjb2RlX2RhdGEqIG11c3QgYmUgYGBGYWxzZWBgIChvdGhlcndpc2UgYW4gZXJyb3IgaXMgcmFpc2VkKS4KKyAgIGluIDpSRkM6YDY1MzFgKSBzaG91bGQgYmUgZW5hYmxlZC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KICAgIFdoZW4gYGBUcnVlYGAsIGBgU01UUFVURjhgYCBpcyBhY2NlcHRlZCBhcyBhIHBhcmFtZXRlciB0byB0aGUgYGBNQUlMYGAKICAgIGNvbW1hbmQgYW5kIHdoZW4gcHJlc2VudCBpcyBwYXNzZWQgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgaW4gdGhlCi0gICBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LgorICAgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4gICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqCisgICBjYW5ub3QgYmUgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lIHRpbWUuCiAKICAgICpkZWNvZGVfZGF0YSogc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGRhdGEgcG9ydGlvbiBvZiB0aGUgU01UUCB0cmFuc2FjdGlvbgotICAgc2hvdWxkIGJlIGRlY29kZWQgdXNpbmcgVVRGLTguICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYCBmb3IgYmFja3dhcmQKLSAgIGNvbXBhdGliaWxpdHkgcmVhc29ucywgYnV0IHdpbGwgY2hhbmdlIHRvIGBgRmFsc2VgYCBpbiBQeXRob24gMy42OyBzcGVjaWZ5Ci0gICB0aGUga2V5d29yZCB2YWx1ZSBleHBsaWNpdGx5IHRvIGF2b2lkIHRoZSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLiAgV2hlbgotICAgKmRlY29kZV9kYXRhKiBpcyBzZXQgdG8gYGBGYWxzZWBgIHRoZSBzZXJ2ZXIgYWR2ZXJ0aXNlcyB0aGUgYGA4QklUTUlNRWBgCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFdoZW4gKmRlY29kZV9kYXRhKiBpcyBgYEZhbHNlYGAgKHRoZQorICAgZGVmYXVsdCksIHRoZSBzZXJ2ZXIgYWR2ZXJ0aXNlcyB0aGUgYGA4QklUTUlNRWBgCiAgICBleHRlbnNpb24gKDpyZmM6YDYxNTJgKSwgYWNjZXB0cyB0aGUgYGBCT0RZPThCSVRNSU1FYGAgcGFyYW1ldGVyIHRvCiAgICB0aGUgYGBNQUlMYGAgY29tbWFuZCwgYW5kIHdoZW4gcHJlc2VudCBwYXNzZXMgaXQgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAKLSAgIGluIHRoZSBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LgorICAgaW4gdGhlIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqCisgICBjYW5ub3QgYmUgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lIHRpbWUuCiAKICAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgKiprd2FyZ3MpCiAKQEAgLTc2LDkgKzc1LDggQEAKICAgICAgIHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCiAKICAgICAgICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEl0IGlzIGVtcHR5Ci0gICAgICB1bmxlc3MgYXQgbGVhc3Qgb25lIG9mIGBgZGVjb2RlX2RhdGE9RmFsc2VgYCBvciBgYGVuYWJsZV9TTVRQVVRGOD1UcnVlYGAKLSAgICAgIHdhcyBnaXZlbiBhcyBhbiBpbml0IHBhcmFtZXRlciwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nCi0gICAgICBrZXlzOgorICAgICAgaWYgYGBkZWNvZGVfZGF0YT1UcnVlYGAgd2FzIGdpdmVuIGFzIGFuIGluaXQgYXJndW1lbnQsIG90aGVyd2lzZQorICAgICAgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZyBrZXlzOgogCiAgICAgICAgICAgKm1haWxfb3B0aW9ucyo6CiAgICAgICAgICAgICAgYSBsaXN0IG9mIGFsbCByZWNlaXZlZCBwYXJhbWV0ZXJzIHRvIHRoZSBgYE1BSUxgYApAQCAtMTA5LDkgKzEwNywxMiBAQAogICAgICAgKmxvY2FsYWRkciogYW5kICpyZW1vdGVhZGRyKiBtYXkgbm93IGNvbnRhaW4gSVB2NiBhZGRyZXNzZXMuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQotICAgICAgdGhlICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGNvbnN0cnVjdG9yIGFyZ3VtZW50cywgYW5kIHRoZQotICAgICAgKmt3YXJncyogYXJndW1lbnQgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgd2hlbiBvbmUgb3IgbW9yZSBvZiB0aGVzZSBpcwotICAgICAgc3BlY2lmaWVkLgorICAgICAgVGhlICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMsIGFuZCB0aGUKKyAgICAgICprd2FyZ3MqIHBhcmFtZXRlciB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYCB3aGVuICpkZWNvZGVfZGF0YSogaXMKKyAgICAgIGBgRmFsc2VgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpkZWNvZGVfZGF0YSogaXMgbm93IGBgRmFsc2VgYCBieSBkZWZhdWx0LgogCiAKIERlYnVnZ2luZ1NlcnZlciBPYmplY3RzCkBAIC0xNTEsNyArMTUyLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gY2xhc3M6OiBTTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMixcCi0gICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPUZhbHNlKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTTVRQQ2hhbm5lbGAgb2JqZWN0IHdoaWNoIG1hbmFnZXMgdGhlIGNvbW11bmljYXRpb24KICAgIGJldHdlZW4gdGhlIHNlcnZlciBhbmQgYSBzaW5nbGUgU01UUCBjbGllbnQuCkBAIC0xNjMsMjIgKzE2NCwyNSBAQAogICAgbGltaXQuCiAKICAgICplbmFibGVfU01UUFVURjgqIGRldGVybWluZXMgd2hldGhlciB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoYXMgZGVmaW5lZAotICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLiAgQQotICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIGJvdGggKmVuYWJsZV9TTVRQVVRGOCogYW5kICpkZWNvZGVfZGF0YSogYXJlCi0gICBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUgdGltZS4KKyAgIGluIDpSRkM6YDY1MzFgKSBzaG91bGQgYmUgZW5hYmxlZC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KKyAgICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGNhbm5vdCBiZSBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUKKyAgIHRpbWUuCiAKICAgIEEgZGljdGlvbmFyeSBjYW4gYmUgc3BlY2lmaWVkIGluICptYXAqIHRvIGF2b2lkIHVzaW5nIGEgZ2xvYmFsIHNvY2tldCBtYXAuCiAKICAgICpkZWNvZGVfZGF0YSogc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGRhdGEgcG9ydGlvbiBvZiB0aGUgU01UUCB0cmFuc2FjdGlvbgotICAgc2hvdWxkIGJlIGRlY29kZWQgdXNpbmcgVVRGLTguICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYCBmb3IgYmFja3dhcmQKLSAgIGNvbXBhdGliaWxpdHkgcmVhc29ucywgYnV0IHdpbGwgY2hhbmdlIHRvIGBgRmFsc2VgYCBpbiBQeXRob24gMy42LiAgU3BlY2lmeQotICAgdGhlIGtleXdvcmQgdmFsdWUgZXhwbGljaXRseSB0byBhdm9pZCB0aGUgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYC4KKyAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgorICAgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZQorICAgdGltZS4KIAogICAgVG8gdXNlIGEgY3VzdG9tIFNNVFBDaGFubmVsIGltcGxlbWVudGF0aW9uIHlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoZQogICAgOmF0dHI6YFNNVFBTZXJ2ZXIuY2hhbm5lbF9jbGFzc2Agb2YgeW91ciA6Y2xhc3M6YFNNVFBTZXJ2ZXJgLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQotICAgICAgdGhlICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGFyZ3VtZW50cyB3ZXJlIGFkZGVkLgorICAgICAgVGhlICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIHBhcmFtZXRlcnMgd2VyZSBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpkZWNvZGVfZGF0YSogaXMgbm93IGBgRmFsc2VgYCBieSBkZWZhdWx0LgogCiAgICBUaGUgOmNsYXNzOmBTTVRQQ2hhbm5lbGAgaGFzIHRoZSBmb2xsb3dpbmcgaW5zdGFuY2UgdmFyaWFibGVzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CmluZGV4IDgzZDVjMmQuLjFjYjNhYWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CkBAIC05NSw2ICs5NSwxNCBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKworCiAuLiBjbGFzczo6IExNVFAoaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIFRoZSBMTVRQIHByb3RvY29sLCB3aGljaCBpcyB2ZXJ5IHNpbWlsYXIgdG8gRVNNVFAsIGlzIGhlYXZpbHkgYmFzZWQgb24gdGhlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXQucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAppbmRleCA3OWM3NjA5Li42OTA5YTY0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKQEAgLTEzMyw2ICsxMzMsMjIgQEAKICAgICBzdHJpbmcgZm9ybWF0LiAoZXguIGBgYicxMjoyMzozNDo0NTo1Njo2NydgYCkgVGhpcyBwcm90b2NvbCBpcyBub3QKICAgICBzdXBwb3J0ZWQgdW5kZXIgRnJlZUJTRC4KIAorLSA6Y29uc3Q6YEFGX0FMR2AgaXMgYSBMaW51eC1vbmx5IHNvY2tldCBiYXNlZCBpbnRlcmZhY2UgdG8gS2VybmVsCisgIGNyeXB0b2dyYXBoeS4gQW4gYWxnb3JpdGhtIHNvY2tldCBpcyBjb25maWd1cmVkIHdpdGggYSB0dXBsZSBvZiB0d28gdG8gZm91cgorICBlbGVtZW50cyBgYCh0eXBlLCBuYW1lIFssIGZlYXQgWywgbWFza11dKWBgLCB3aGVyZToKKworICAtICp0eXBlKiBpcyB0aGUgYWxnb3JpdGhtIHR5cGUgYXMgc3RyaW5nLCBlLmcuIGBgYWVhZGBgLCBgYGhhc2hgYCwKKyAgICBgYHNrY2lwaGVyYGAgb3IgYGBybmdgYC4KKworICAtICpuYW1lKiBpcyB0aGUgYWxnb3JpdGhtIG5hbWUgYW5kIG9wZXJhdGlvbiBtb2RlIGFzIHN0cmluZywgZS5nLgorICAgIGBgc2hhMjU2YGAsIGBgaG1hYyhzaGEyNTYpYGAsIGBgY2JjKGFlcylgYCBvciBgYGRyYmdfbm9wcl9jdHJfYWVzMjU2YGAuCisKKyAgLSAqZmVhdCogYW5kICptYXNrKiBhcmUgdW5zaWduZWQgMzJiaXQgaW50ZWdlcnMuCisKKyAgQXZhaWxhYmlsaXR5IExpbnV4IDIuNi4zOCwgc29tZSBhbGdvcml0aG0gdHlwZXMgcmVxdWlyZSBtb3JlIHJlY2VudCBLZXJuZWxzLgorCisgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAtIENlcnRhaW4gb3RoZXIgYWRkcmVzcyBmYW1pbGllcyAoOmNvbnN0OmBBRl9QQUNLRVRgLCA6Y29uc3Q6YEFGX0NBTmApCiAgIHN1cHBvcnQgc3BlY2lmaWMgcmVwcmVzZW50YXRpb25zLgogCkBAIC0yODMsNiArMjk5LDEwIEBACiAgICBpbiB0aGUgVW5peCBoZWFkZXIgZmlsZXMgYXJlIGRlZmluZWQ7IGZvciBhIGZldyBzeW1ib2xzLCBkZWZhdWx0IHZhbHVlcyBhcmUKICAgIHByb3ZpZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgYGBTT19ET01BSU5gYCwgYGBTT19QUk9UT0NPTGBgLCBgYFNPX1BFRVJTRUNgYCwgYGBTT19QQVNTU0VDYGAKKyAgICAgIHdlcmUgYWRkZWQuCisKIC4uIGRhdGE6OiBBRl9DQU4KICAgICAgICAgICBQRl9DQU4KICAgICAgICAgICBTT0xfQ0FOXyoKQEAgLTMzMSwxOCArMzUxLDMzIEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBkYXRhOjogU0lPXyoKKy4uIGRhdGE6OiBTSU9fUkNWQUxMCisgICAgICAgICAgU0lPX0tFRVBBTElWRV9WQUxTCisgICAgICAgICAgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSAogICAgICAgICAgIFJDVkFMTF8qCiAKICAgIENvbnN0YW50cyBmb3IgV2luZG93cycgV1NBSW9jdGwoKS4gVGhlIGNvbnN0YW50cyBhcmUgdXNlZCBhcyBhcmd1bWVudHMgdG8gdGhlCiAgICA6bWV0aDpgfnNvY2tldC5zb2NrZXQuaW9jdGxgIG1ldGhvZCBvZiBzb2NrZXQgb2JqZWN0cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIGBgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSGBgIHdhcyBhZGRlZC4KKwogCiAuLiBkYXRhOjogVElQQ18qCiAKICAgIFRJUEMgcmVsYXRlZCBjb25zdGFudHMsIG1hdGNoaW5nIHRoZSBvbmVzIGV4cG9ydGVkIGJ5IHRoZSBDIHNvY2tldCBBUEkuIFNlZQogICAgdGhlIFRJUEMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAorLi4gZGF0YTo6IEFGX0FMRworICAgICAgICAgIFNPTF9BTEcKKyAgICAgICAgICBBTEdfKgorCisgICBDb25zdGFudHMgZm9yIExpbnV4IEtlcm5lbCBjcnlwdG9ncmFwaHkuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjM4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IEFGX0xJTksKIAogICBBdmFpbGFiaWxpdHk6IEJTRCwgT1NYLgpAQCAtODc0LDYgKzkwOSwxMCBAQAogICAgaXQgaXMgcmVjb21tZW5kZWQgdG8gOm1ldGg6YGNsb3NlYCB0aGVtIGV4cGxpY2l0bHksIG9yIHRvIHVzZSBhCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGFyb3VuZCB0aGVtLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmV4YzpgT1NFcnJvcmAgaXMgbm93IHJhaXNlZCBpZiBhbiBlcnJvciBvY2N1cnMgd2hlbiB0aGUgdW5kZXJseWluZworICAgICAgOmM6ZnVuYzpgY2xvc2VgIGNhbGwgaXMgbWFkZS4KKwogICAgLi4gbm90ZTo6CiAKICAgICAgIDptZXRoOmBjbG9zZSgpYCByZWxlYXNlcyB0aGUgcmVzb3VyY2UgYXNzb2NpYXRlZCB3aXRoIGEgY29ubmVjdGlvbiBidXQKQEAgLTk5NCw2ICsxMDMzLDEyIEBACiAgICBPbiBvdGhlciBwbGF0Zm9ybXMsIHRoZSBnZW5lcmljIDpmdW5jOmBmY250bC5mY250bGAgYW5kIDpmdW5jOmBmY250bC5pb2N0bGAKICAgIGZ1bmN0aW9ucyBtYXkgYmUgdXNlZDsgdGhleSBhY2NlcHQgYSBzb2NrZXQgb2JqZWN0IGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50LgogCisgICBDdXJyZW50bHkgb25seSB0aGUgZm9sbG93aW5nIGNvbnRyb2wgY29kZXMgYXJlIHN1cHBvcnRlZDoKKyAgIGBgU0lPX1JDVkFMTGBgLCBgYFNJT19LRUVQQUxJVkVfVkFMU2BgLCBhbmQgYGBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYFNJT19MT09QQkFDS19GQVNUX1BBVEhgYCB3YXMgYWRkZWQuCisKIC4uIG1ldGhvZDo6IHNvY2tldC5saXN0ZW4oW2JhY2tsb2ddKQogCiAgICBFbmFibGUgYSBzZXJ2ZXIgdG8gYWNjZXB0IGNvbm5lY3Rpb25zLiAgSWYgKmJhY2tsb2cqIGlzIHNwZWNpZmllZCwgaXQgbXVzdApAQCAtMTI3Nyw2ICsxMzIyLDE1IEBACiAgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZwogICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCiAKKy4uIG1ldGhvZDo6IHNvY2tldC5zZW5kbXNnX2FmYWxnKFttc2ddLCAqLCBvcFssIGl2WywgYXNzb2NsZW5bLCBmbGFnc11dXSkKKworICAgU3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiA6bWV0aDpgfnNvY2tldC5zZW5kbXNnYCBmb3IgOmNvbnN0OmBBRl9BTEdgIHNvY2tldC4KKyAgIFNldCBtb2RlLCBJViwgQUVBRCBhc3NvY2lhdGVkIGRhdGEgbGVuZ3RoIGFuZCBmbGFncyBmb3IgOmNvbnN0OmBBRl9BTEdgIHNvY2tldC4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCA+PSAyLjYuMzgKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIG1ldGhvZDo6IHNvY2tldC5zZW5kZmlsZShmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSkKIAogICAgU2VuZCBhIGZpbGUgdW50aWwgRU9GIGlzIHJlYWNoZWQgYnkgdXNpbmcgaGlnaC1wZXJmb3JtYW5jZQpAQCAtMTMyNSwyMSArMTM3OSwyOSBAQAogICAgRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24sIHBsZWFzZSBjb25zdWx0IHRoZSA6cmVmOmBub3RlcyBvbiBzb2NrZXQgdGltZW91dHMgPHNvY2tldC10aW1lb3V0cz5gLgogCiAKLS4uIG1ldGhvZDo6IHNvY2tldC5zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZSkKKy4uIG1ldGhvZDo6IHNvY2tldC5zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZTogaW50KQorLi4gbWV0aG9kOjogc29ja2V0LnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlOiBidWZmZXIpCisuLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgTm9uZSwgb3B0bGVuOiBpbnQpCiAKICAgIC4uIGluZGV4OjogbW9kdWxlOiBzdHJ1Y3QKIAogICAgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gc29ja2V0IG9wdGlvbiAoc2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlCiAgICA6bWFucGFnZTpgc2V0c29ja29wdCgyKWApLiAgVGhlIG5lZWRlZCBzeW1ib2xpYyBjb25zdGFudHMgYXJlIGRlZmluZWQgaW4gdGhlCi0gICA6bW9kOmBzb2NrZXRgIG1vZHVsZSAoOmNvbnN0OmBTT19cKmAgZXRjLikuICBUaGUgdmFsdWUgY2FuIGJlIGFuIGludGVnZXIgb3IKLSAgIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCByZXByZXNlbnRpbmcgYSBidWZmZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UgaXQgaXMKLSAgIHVwIHRvIHRoZSBjYWxsZXIgdG8KLSAgIGVuc3VyZSB0aGF0IHRoZSBieXRlc3RyaW5nIGNvbnRhaW5zIHRoZSBwcm9wZXIgYml0cyAoc2VlIHRoZSBvcHRpb25hbCBidWlsdC1pbgotICAgbW9kdWxlIDptb2Q6YHN0cnVjdGAgZm9yIGEgd2F5IHRvIGVuY29kZSBDIHN0cnVjdHVyZXMgYXMgYnl0ZXN0cmluZ3MpLgorICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyLAorICAgTm9uZSBvciBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiBJbiB0aGUgbGF0ZXIKKyAgIGNhc2UgaXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0byBlbnN1cmUgdGhhdCB0aGUgYnl0ZXN0cmluZyBjb250YWlucyB0aGUKKyAgIHByb3BlciBiaXRzIChzZWUgdGhlIG9wdGlvbmFsIGJ1aWx0LWluIG1vZHVsZSA6bW9kOmBzdHJ1Y3RgIGZvciBhIHdheSB0bworICAgZW5jb2RlIEMgc3RydWN0dXJlcyBhcyBieXRlc3RyaW5ncykuIFdoZW4gdmFsdWUgaXMgc2V0IHRvIE5vbmUsCisgICBvcHRsZW4gYXJndW1lbnQgaXMgcmVxdWlyZWQuIEl0J3MgZXF1aXZhbGVudCB0byBjYWxsIHNldHNvY2tvcHQgQworICAgZnVuY3Rpb24gd2l0aCBvcHR2YWw9TlVMTCBhbmQgb3B0bGVuPW9wdGxlbi4KKwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBzZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCBOb25lLCBvcHRsZW46IGludCkgZm9ybSBhZGRlZC4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2h1dGRvd24oaG93KQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAppbmRleCAwODdmNGUwLi4yMThhMzFjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKQEAgLTUyLDExICs1MiwxMiBAQAogb3ZlcnJpZGluZyBpdHMgOm1ldGg6YH5CYXNlUmVxdWVzdEhhbmRsZXIuaGFuZGxlYCBtZXRob2Q7CiB0aGlzIG1ldGhvZCB3aWxsIHByb2Nlc3MgaW5jb21pbmcKIHJlcXVlc3RzLiAgU2Vjb25kLCB5b3UgbXVzdCBpbnN0YW50aWF0ZSBvbmUgb2YgdGhlIHNlcnZlciBjbGFzc2VzLCBwYXNzaW5nIGl0Ci10aGUgc2VydmVyJ3MgYWRkcmVzcyBhbmQgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4gIFRoZW4gY2FsbCB0aGUKK3RoZSBzZXJ2ZXIncyBhZGRyZXNzIGFuZCB0aGUgcmVxdWVzdCBoYW5kbGVyIGNsYXNzLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UKK3RoZSBzZXJ2ZXIgaW4gYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiBUaGVuIGNhbGwgdGhlCiA6bWV0aDpgfkJhc2VTZXJ2ZXIuaGFuZGxlX3JlcXVlc3RgIG9yCiA6bWV0aDpgfkJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlcmAgbWV0aG9kIG9mIHRoZSBzZXJ2ZXIgb2JqZWN0IHRvCiBwcm9jZXNzIG9uZSBvciBtYW55IHJlcXVlc3RzLiAgRmluYWxseSwgY2FsbCA6bWV0aDpgfkJhc2VTZXJ2ZXIuc2VydmVyX2Nsb3NlYAotdG8gY2xvc2UgdGhlIHNvY2tldC4KK3RvIGNsb3NlIHRoZSBzb2NrZXQgKHVubGVzcyB5b3UgdXNlZCBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQpLgogCiBXaGVuIGluaGVyaXRpbmcgZnJvbSA6Y2xhc3M6YFRocmVhZGluZ01peEluYCBmb3IgdGhyZWFkZWQgY29ubmVjdGlvbiBiZWhhdmlvciwKIHlvdSBzaG91bGQgZXhwbGljaXRseSBkZWNsYXJlIGhvdyB5b3Ugd2FudCB5b3VyIHRocmVhZHMgdG8gYmVoYXZlIG9uIGFuIGFicnVwdApAQCAtMTExLDYgKzExMiw4IEBACiAgICA6Y2xhc3M6YFVEUFNlcnZlcmAuICBTZXR0aW5nIHRoZSB2YXJpb3VzIGF0dHJpYnV0ZXMgYWxzbyBjaGFuZ2VzIHRoZQogICAgYmVoYXZpb3Igb2YgdGhlIHVuZGVybHlpbmcgc2VydmVyIG1lY2hhbmlzbS4KIAorICAgOmNsYXNzOmBGb3JraW5nTWl4SW5gIGFuZCB0aGUgRm9ya2luZyBjbGFzc2VzIG1lbnRpb25lZCBiZWxvdyBhcmUKKyAgIG9ubHkgYXZhaWxhYmxlIG9uIFBPU0lYIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmZ1bmM6YH5vcy5mb3JrYC4KIAogLi4gY2xhc3M6OiBGb3JraW5nVENQU2VydmVyCiAgICAgICAgICAgIEZvcmtpbmdVRFBTZXJ2ZXIKQEAgLTMwNCw3ICszMDcsMTEgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGlmIHRoZSA6bWV0aDpgfkJhc2VSZXF1ZXN0SGFuZGxlci5oYW5kbGVgCiAgICAgICBtZXRob2Qgb2YgYSA6YXR0cjpgUmVxdWVzdEhhbmRsZXJDbGFzc2AgaW5zdGFuY2UgcmFpc2VzCiAgICAgICBhbiBleGNlcHRpb24uICBUaGUgZGVmYXVsdCBhY3Rpb24gaXMgdG8gcHJpbnQgdGhlIHRyYWNlYmFjayB0bwotICAgICAgc3RhbmRhcmQgb3V0cHV0IGFuZCBjb250aW51ZSBoYW5kbGluZyBmdXJ0aGVyIHJlcXVlc3RzLgorICAgICAgc3RhbmRhcmQgZXJyb3IgYW5kIGNvbnRpbnVlIGhhbmRsaW5nIGZ1cnRoZXIgcmVxdWVzdHMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBOb3cgb25seSBjYWxsZWQgZm9yIGV4Y2VwdGlvbnMgZGVyaXZlZCBmcm9tIHRoZSA6ZXhjOmBFeGNlcHRpb25gCisgICAgICAgICBjbGFzcy4KIAogCiAgICAuLiBtZXRob2Q6OiBoYW5kbGVfdGltZW91dCgpCkBAIC0zNDksNiArMzU2LDExIEBACiAgICAgICBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGFsd2F5cyByZXR1cm5zIDpjb25zdDpgVHJ1ZWAuCiAKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbCB3YXMgYWRkZWQuICBFeGl0aW5nIHRoZQorICAgICAgY29udGV4dCBtYW5hZ2VyIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyA6bWV0aDpgc2VydmVyX2Nsb3NlYC4KKworCiBSZXF1ZXN0IEhhbmRsZXIgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMzk3LDYgKzQwOSwxNSBAQAogICAgcmVhZCBvciB3cml0dGVuLCByZXNwZWN0aXZlbHksIHRvIGdldCB0aGUgcmVxdWVzdCBkYXRhIG9yIHJldHVybiBkYXRhCiAgICB0byB0aGUgY2xpZW50LgogCisgICBUaGUgOmF0dHI6YHJmaWxlYCBhdHRyaWJ1dGVzIG9mIGJvdGggY2xhc3NlcyBzdXBwb3J0IHRoZQorICAgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgcmVhZGFibGUgaW50ZXJmYWNlLCBhbmQKKyAgIDphdHRyOmBEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyLndmaWxlYCBzdXBwb3J0cyB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHdyaXRhYmxlIGludGVyZmFjZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTdHJlYW1SZXF1ZXN0SGFuZGxlci53ZmlsZWAgYWxzbyBzdXBwb3J0cyB0aGUKKyAgICAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHdyaXRhYmxlIGludGVyZmFjZS4KKwogCiBFeGFtcGxlcwogLS0tLS0tLS0KQEAgLTQyOSwxMSArNDUwLDEwIEBACiAgICAgICAgSE9TVCwgUE9SVCA9ICJsb2NhbGhvc3QiLCA5OTk5CiAKICAgICAgICAjIENyZWF0ZSB0aGUgc2VydmVyLCBiaW5kaW5nIHRvIGxvY2FsaG9zdCBvbiBwb3J0IDk5OTkKLSAgICAgICBzZXJ2ZXIgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCBQT1JUKSwgTXlUQ1BIYW5kbGVyKQotCi0gICAgICAgIyBBY3RpdmF0ZSB0aGUgc2VydmVyOyB0aGlzIHdpbGwga2VlcCBydW5uaW5nIHVudGlsIHlvdQotICAgICAgICMgaW50ZXJydXB0IHRoZSBwcm9ncmFtIHdpdGggQ3RybC1DCi0gICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VENQSGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICAjIEFjdGl2YXRlIHRoZSBzZXJ2ZXI7IHRoaXMgd2lsbCBrZWVwIHJ1bm5pbmcgdW50aWwgeW91CisgICAgICAgICAgICMgaW50ZXJydXB0IHRoZSBwcm9ncmFtIHdpdGggQ3RybC1DCisgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKIAogQW4gYWx0ZXJuYXRpdmUgcmVxdWVzdCBoYW5kbGVyIGNsYXNzIHRoYXQgbWFrZXMgdXNlIG9mIHN0cmVhbXMgKGZpbGUtbGlrZQogb2JqZWN0cyB0aGF0IHNpbXBsaWZ5IGNvbW11bmljYXRpb24gYnkgcHJvdmlkaW5nIHRoZSBzdGFuZGFyZCBmaWxlIGludGVyZmFjZSk6OgpAQCAtNTI1LDggKzU0NSw4IEBACiAKICAgIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgSE9TVCwgUE9SVCA9ICJsb2NhbGhvc3QiLCA5OTk5Ci0gICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlVEUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VURQSGFuZGxlcikKLSAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgd2l0aCBzb2NrZXRzZXJ2ZXIuVURQU2VydmVyKChIT1NULCBQT1JUKSwgTXlVRFBIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKIAogVGhpcyBpcyB0aGUgY2xpZW50IHNpZGU6OgogCkBAIC01ODUsMjIgKzYwNSwyMiBAQAogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgMAogCiAgICAgICAgc2VydmVyID0gVGhyZWFkZWRUQ1BTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBUaHJlYWRlZFRDUFJlcXVlc3RIYW5kbGVyKQotICAgICAgIGlwLCBwb3J0ID0gc2VydmVyLnNlcnZlcl9hZGRyZXNzCisgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgIGlwLCBwb3J0ID0gc2VydmVyLnNlcnZlcl9hZGRyZXNzCiAKLSAgICAgICAjIFN0YXJ0IGEgdGhyZWFkIHdpdGggdGhlIHNlcnZlciAtLSB0aGF0IHRocmVhZCB3aWxsIHRoZW4gc3RhcnQgb25lCi0gICAgICAgIyBtb3JlIHRocmVhZCBmb3IgZWFjaCByZXF1ZXN0Ci0gICAgICAgc2VydmVyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlcnZlci5zZXJ2ZV9mb3JldmVyKQotICAgICAgICMgRXhpdCB0aGUgc2VydmVyIHRocmVhZCB3aGVuIHRoZSBtYWluIHRocmVhZCB0ZXJtaW5hdGVzCi0gICAgICAgc2VydmVyX3RocmVhZC5kYWVtb24gPSBUcnVlCi0gICAgICAgc2VydmVyX3RocmVhZC5zdGFydCgpCi0gICAgICAgcHJpbnQoIlNlcnZlciBsb29wIHJ1bm5pbmcgaW4gdGhyZWFkOiIsIHNlcnZlcl90aHJlYWQubmFtZSkKKyAgICAgICAgICAgIyBTdGFydCBhIHRocmVhZCB3aXRoIHRoZSBzZXJ2ZXIgLS0gdGhhdCB0aHJlYWQgd2lsbCB0aGVuIHN0YXJ0IG9uZQorICAgICAgICAgICAjIG1vcmUgdGhyZWFkIGZvciBlYWNoIHJlcXVlc3QKKyAgICAgICAgICAgc2VydmVyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlcnZlci5zZXJ2ZV9mb3JldmVyKQorICAgICAgICAgICAjIEV4aXQgdGhlIHNlcnZlciB0aHJlYWQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdGVybWluYXRlcworICAgICAgICAgICBzZXJ2ZXJfdGhyZWFkLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgc2VydmVyX3RocmVhZC5zdGFydCgpCisgICAgICAgICAgIHByaW50KCJTZXJ2ZXIgbG9vcCBydW5uaW5nIGluIHRocmVhZDoiLCBzZXJ2ZXJfdGhyZWFkLm5hbWUpCiAKLSAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAxIikKLSAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAyIikKLSAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAzIikKKyAgICAgICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMSIpCisgICAgICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDIiKQorICAgICAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAzIikKIAotICAgICAgIHNlcnZlci5zaHV0ZG93bigpCi0gICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisgICAgICAgICAgIHNlcnZlci5zaHV0ZG93bigpCiAKIAogVGhlIG91dHB1dCBvZiB0aGUgZXhhbXBsZSBzaG91bGQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgpAQCAtNjE2LDMgKzYzNiw1IEBACiAKIFRoZSA6Y2xhc3M6YEZvcmtpbmdNaXhJbmAgY2xhc3MgaXMgdXNlZCBpbiB0aGUgc2FtZSB3YXksIGV4Y2VwdCB0aGF0IHRoZSBzZXJ2ZXIKIHdpbGwgc3Bhd24gYSBuZXcgcHJvY2VzcyBmb3IgZWFjaCByZXF1ZXN0LgorQXZhaWxhYmxlIG9ubHkgb24gUE9TSVggcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6ZnVuYzpgfm9zLmZvcmtgLgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zcHdkLnJzdCBiL0RvYy9saWJyYXJ5L3Nwd2QucnN0CmluZGV4IGZkM2M5YWQuLmM2Y2FkMmEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Nwd2QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Nwd2QucnN0CkBAIC01NSw2ICs1NSw5IEBACiAKICAgIFJldHVybiB0aGUgc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gdXNlciBuYW1lLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUmFpc2VzIGEgOmV4YzpgUGVybWlzc2lvbkVycm9yYCBpbnN0ZWFkIG9mIDpleGM6YEtleUVycm9yYCBpZiB0aGUgdXNlcgorICAgICAgZG9lc24ndCBoYXZlIHByaXZpbGVnZXMuCiAKIC4uIGZ1bmN0aW9uOjogZ2V0c3BhbGwoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdCBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CmluZGV4IGQxMDA1YjUuLjc2NjkzYmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CkBAIC02MjksOSArNjI5LDE2IEBACiAgICAuLiBhdHRyaWJ1dGU6OiBsYXN0cm93aWQKIAogICAgICAgVGhpcyByZWFkLW9ubHkgYXR0cmlidXRlIHByb3ZpZGVzIHRoZSByb3dpZCBvZiB0aGUgbGFzdCBtb2RpZmllZCByb3cuIEl0IGlzCi0gICAgICBvbmx5IHNldCBpZiB5b3UgaXNzdWVkIGFuIGBgSU5TRVJUYGAgc3RhdGVtZW50IHVzaW5nIHRoZSA6bWV0aDpgZXhlY3V0ZWAKLSAgICAgIG1ldGhvZC4gRm9yIG9wZXJhdGlvbnMgb3RoZXIgdGhhbiBgYElOU0VSVGBgIG9yIHdoZW4gOm1ldGg6YGV4ZWN1dGVtYW55YCBpcwotICAgICAgY2FsbGVkLCA6YXR0cjpgbGFzdHJvd2lkYCBpcyBzZXQgdG8gOmNvbnN0OmBOb25lYC4KKyAgICAgIG9ubHkgc2V0IGlmIHlvdSBpc3N1ZWQgYW4gYGBJTlNFUlRgYCBvciBhIGBgUkVQTEFDRWBgIHN0YXRlbWVudCB1c2luZyB0aGUKKyAgICAgIDptZXRoOmBleGVjdXRlYCBtZXRob2QuICBGb3Igb3BlcmF0aW9ucyBvdGhlciB0aGFuIGBgSU5TRVJUYGAgb3IKKyAgICAgIGBgUkVQTEFDRWBgIG9yIHdoZW4gOm1ldGg6YGV4ZWN1dGVtYW55YCBpcyBjYWxsZWQsIDphdHRyOmBsYXN0cm93aWRgIGlzCisgICAgICBzZXQgdG8gOmNvbnN0OmBOb25lYC4KKworICAgICAgSWYgdGhlIGBgSU5TRVJUYGAgb3IgYGBSRVBMQUNFYGAgc3RhdGVtZW50IGZhaWxlZCB0byBpbnNlcnQgdGhlIHByZXZpb3VzCisgICAgICBzdWNjZXNzZnVsIHJvd2lkIGlzIHJldHVybmVkLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgUkVQTEFDRWBgIHN0YXRlbWVudC4KIAogICAgLi4gYXR0cmlidXRlOjogZGVzY3JpcHRpb24KIApAQCAtOTE4LDkgKzkyNSw3IEBACiAKIEJ5IGRlZmF1bHQsIHRoZSA6bW9kOmBzcWxpdGUzYCBtb2R1bGUgb3BlbnMgdHJhbnNhY3Rpb25zIGltcGxpY2l0bHkgYmVmb3JlIGEKIERhdGEgTW9kaWZpY2F0aW9uIExhbmd1YWdlIChETUwpICBzdGF0ZW1lbnQgKGkuZS4KLWBgSU5TRVJUYGAvYGBVUERBVEVgYC9gYERFTEVURWBgL2BgUkVQTEFDRWBgKSwgYW5kIGNvbW1pdHMgdHJhbnNhY3Rpb25zCi1pbXBsaWNpdGx5IGJlZm9yZSBhIG5vbi1ETUwsIG5vbi1xdWVyeSBzdGF0ZW1lbnQgKGkuIGUuCi1hbnl0aGluZyBvdGhlciB0aGFuIGBgU0VMRUNUYGAgb3IgdGhlIGFmb3JlbWVudGlvbmVkKS4KK2BgSU5TRVJUYGAvYGBVUERBVEVgYC9gYERFTEVURWBgL2BgUkVQTEFDRWBgKS4KIAogU28gaWYgeW91IGFyZSB3aXRoaW4gYSB0cmFuc2FjdGlvbiBhbmQgaXNzdWUgYSBjb21tYW5kIGxpa2UgYGBDUkVBVEUgVEFCTEUKIC4uLmBgLCBgYFZBQ1VVTWBgLCBgYFBSQUdNQWBgLCB0aGUgOm1vZDpgc3FsaXRlM2AgbW9kdWxlIHdpbGwgY29tbWl0IGltcGxpY2l0bHkKQEAgLTk0MCw2ICs5NDUsOSBAQAogc3RhdGVtZW50LCBvciBzZXQgaXQgdG8gb25lIG9mIFNRTGl0ZSdzIHN1cHBvcnRlZCBpc29sYXRpb24gbGV2ZWxzOiAiREVGRVJSRUQiLAogIklNTUVESUFURSIgb3IgIkVYQ0xVU0lWRSIuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICA6bW9kOmBzcWxpdGUzYCB1c2VkIHRvIGltcGxpY2l0bHkgY29tbWl0IGFuIG9wZW4gdHJhbnNhY3Rpb24gYmVmb3JlIERETAorICAgc3RhdGVtZW50cy4gIFRoaXMgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLgogCiAKIFVzaW5nIDptb2Q6YHNxbGl0ZTNgIGVmZmljaWVudGx5CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zc2wucnN0IGIvRG9jL2xpYnJhcnkvc3NsLnJzdAppbmRleCAwMWQ4NmM4Li43NjAwM2VhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zc2wucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKQEAgLTQ5LDYgKzQ5LDEyIEBACiBoZWxwcyBtYW5hZ2Ugc2V0dGluZ3MgYW5kIGNlcnRpZmljYXRlcywgd2hpY2ggY2FuIHRoZW4gYmUgaW5oZXJpdGVkCiBieSBTU0wgc29ja2V0cyBjcmVhdGVkIHRocm91Z2ggdGhlIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YCBtZXRob2QuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgIE9wZW5TU0wgMC45LjgsIDEuMC4wIGFuZCAxLjAuMSBhcmUgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KKyAgIEluIHRoZSBmdXR1cmUgdGhlIHNzbCBtb2R1bGUgd2lsbCByZXF1aXJlIGF0IGxlYXN0IE9wZW5TU0wgMS4wLjIgb3IKKyAgIDEuMS4wLgorCiAKIEZ1bmN0aW9ucywgQ29uc3RhbnRzLCBhbmQgRXhjZXB0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xODYsMTYgKzE5MiwyMCBAQAogCiAgICAgIC4uIHRhYmxlOjoKIAotICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09Ci0gICAgICAgICpjbGllbnQqIC8gKipzZXJ2ZXIqKiAgICAqKlNTTHYyKiogICoqU1NMdjMqKiAgKipUTFMqKiAgICAgKipUTFN2MSoqICAqKlRMU3YxLjEqKiAgKipUTFN2MS4yKioKLSAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLQotICAgICAgICAqU1NMdjIqICAgICAgICAgICAgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCi0gICAgICAgICpTU0x2MyogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KLSAgICAgICAgKlRMUyogKCpTU0x2MjMqKSAgICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICB5ZXMKLSAgICAgICAgKlRMU3YxKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIHllcyAgICAgICAgbm8gICAgICAgICBubwotICAgICAgICAqVExTdjEuMSogICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIG5vCi0gICAgICAgICpUTFN2MS4yKiAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzCi0gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09PSAgPT09PT09PT09PT0KKyAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQorICAgICAgICAqY2xpZW50KiAvICoqc2VydmVyKiogICAgKipTU0x2MioqICAgICAqKlNTTHYzKiogICAgICoqVExTKiogICAgICAgICoqVExTdjEqKiAgKipUTFN2MS4xKiogICoqVExTdjEuMioqCisgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0KKyAgICAgICAgKlNTTHYyKiAgICAgICAgICAgICAgICAgICAgeWVzICAgICAgICAgICBubyAgICAgICAgICAgIG5vIFsxXV8gICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubworICAgICAgICAqU1NMdjMqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgbm8gWzJdXyAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCisgICAgICAgICpUTFMqICgqU1NMdjIzKikgICAgICAgICAgIG5vIFsxXV8gICAgICAgbm8gWzJdXyAgICAgICB5ZXMgICAgICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgeWVzCisgICAgICAgICpUTFN2MSogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgbm8KKyAgICAgICAgKlRMU3YxLjEqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICBubworICAgICAgICAqVExTdjEuMiogICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIG5vICAgICAgICAgICAgeWVzICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcworICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT0gID09PT09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09CisKKyAgIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcworICAgLi4gWzFdIDpjbGFzczpgU1NMQ29udGV4dGAgZGlzYWJsZXMgU1NMdjIgd2l0aCA6ZGF0YTpgT1BfTk9fU1NMdjJgIGJ5IGRlZmF1bHQuCisgICAuLiBbMl0gOmNsYXNzOmBTU0xDb250ZXh0YCBkaXNhYmxlcyBTU0x2MyB3aXRoIDpkYXRhOmBPUF9OT19TU0x2M2AgYnkgZGVmYXVsdC4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTIyNCw3ICsyMzQsNiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIE5ldyBvcHRpb25hbCBhcmd1bWVudCAqY2lwaGVycyouCiAKLQogQ29udGV4dCBjcmVhdGlvbgogXl5eXl5eXl5eXl5eXl5eXgogCkBAIC0yNzksNyArMjg4LDcgQEAKIAogICAgICBSQzQgd2FzIGRyb3BwZWQgZnJvbSB0aGUgZGVmYXVsdCBjaXBoZXIgc3RyaW5nLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgogCiAgICAgIENoYUNoYTIwL1BvbHkxMzA1IHdhcyBhZGRlZCB0byB0aGUgZGVmYXVsdCBjaXBoZXIgc3RyaW5nLgogCkBAIC0zMjIsNyArMzMxLDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIDpmdW5jOmBzc2wuUkFORF9wc2V1ZG9fYnl0ZXNgLCB1c2UKICAgICAgIDpmdW5jOmBzc2wuUkFORF9ieXRlc2AgaW5zdGVhZC4KQEAgLTUwOSw2ICs1MTgsMTAgQEAKIENvbnN0YW50cwogXl5eXl5eXl5eCiAKKyAgIEFsbCBjb25zdGFudHMgYXJlIG5vdyA6Y2xhc3M6YGVudW0uSW50RW51bWAgb3IgOmNsYXNzOmBlbnVtLkludEZsYWdgIGNvbGxlY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IENFUlRfTk9ORQogCiAgICBQb3NzaWJsZSB2YWx1ZSBmb3IgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X21vZGVgLCBvciB0aGUgYGBjZXJ0X3JlcXNgYApAQCAtNTQyLDYgKzU1NSwxMiBAQAogICAgYmUgcGFzc2VkLCBlaXRoZXIgdG8gOm1ldGg6YFNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zYCBvciBhcyBhCiAgICB2YWx1ZSBvZiB0aGUgYGBjYV9jZXJ0c2BgIHBhcmFtZXRlciB0byA6ZnVuYzpgd3JhcF9zb2NrZXRgLgogCisuLiBjbGFzczo6IFZlcmlmeU1vZGUKKworICAgOmNsYXNzOmBlbnVtLkludEVudW1gIGNvbGxlY3Rpb24gb2YgQ0VSVF8qIGNvbnN0YW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBWRVJJRllfREVGQVVMVAogCiAgICBQb3NzaWJsZSB2YWx1ZSBmb3IgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X2ZsYWdzYC4gSW4gdGhpcyBtb2RlLCBjZXJ0aWZpY2F0ZQpAQCAtNTgyLDE4ICs2MDEsNDAgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40LjQKIAorLi4gY2xhc3M6OiBWZXJpZnlGbGFncworCisgICA6Y2xhc3M6YGVudW0uSW50RmxhZ2AgY29sbGVjdGlvbiBvZiBWRVJJRllfKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogUFJPVE9DT0xfVExTCiAKICAgIFNlbGVjdHMgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiB0aGF0IGJvdGggdGhlIGNsaWVudCBhbmQgc2VydmVyIHN1cHBvcnQuCiAgICBEZXNwaXRlIHRoZSBuYW1lLCB0aGlzIG9wdGlvbiBjYW4gc2VsZWN0ICJUTFMiIHByb3RvY29scyBhcyB3ZWxsIGFzICJTU0wiLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBQUk9UT0NPTF9UTFNfQ0xJRU5UCisKKyAgIEF1dG8tbmVnb3RpYXRlIHRoZSB0aGUgaGlnaGVzdCBwcm90b2NvbCB2ZXJzaW9uIGxpa2UgOmRhdGE6YFBST1RPQ09MX1NTTHYyM2AsCisgICBidXQgb25seSBzdXBwb3J0IGNsaWVudC1zaWRlIDpjbGFzczpgU1NMU29ja2V0YCBjb25uZWN0aW9ucy4gVGhlIHByb3RvY29sCisgICBlbmFibGVzIDpkYXRhOmBDRVJUX1JFUVVJUkVEYCBhbmQgOmF0dHI6YH5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBieQorICAgZGVmYXVsdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBQUk9UT0NPTF9UTFNfU0VSVkVSCisKKyAgIEF1dG8tbmVnb3RpYXRlIHRoZSB0aGUgaGlnaGVzdCBwcm90b2NvbCB2ZXJzaW9uIGxpa2UgOmRhdGE6YFBST1RPQ09MX1NTTHYyM2AsCisgICBidXQgb25seSBzdXBwb3J0IHNlcnZlci1zaWRlIDpjbGFzczpgU1NMU29ja2V0YCBjb25uZWN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIGRhdGE6OiBQUk9UT0NPTF9TU0x2MjMKIAogICAgQWxpYXMgZm9yIGRhdGE6YFBST1RPQ09MX1RMU2AuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBVc2UgZGF0YTpgUFJPVE9DT0xfVExTYCBpbnN0ZWFkLgogCkBAIC02MDgsNyArNjQ5LDcgQEAKIAogICAgICAgU1NMIHZlcnNpb24gMiBpcyBpbnNlY3VyZS4gIEl0cyB1c2UgaXMgaGlnaGx5IGRpc2NvdXJhZ2VkLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgcmVtb3ZlZCBzdXBwb3J0IGZvciBTU0x2Mi4KIApAQCAtNjIzLDcgKzY2NCw3IEBACiAKICAgICAgIFNTTCB2ZXJzaW9uIDMgaXMgaW5zZWN1cmUuICBJdHMgdXNlIGlzIGhpZ2hseSBkaXNjb3VyYWdlZC4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjMyLDcgKzY3Myw3IEBACiAKICAgIFNlbGVjdHMgVExTIHZlcnNpb24gMS4wIGFzIHRoZSBjaGFubmVsIGVuY3J5cHRpb24gcHJvdG9jb2wuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTY0NCw3ICs2ODUsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjU3LDcgKzY5OCw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCBhbGwgdmVyc2lvbiBzcGVjaWZpYyBwcm90b2NvbHMuIFVzZSB0aGUgZGVmYXVsdAogICAgICAgcHJvdG9jb2wgZGF0YTpgUFJPVE9DT0xfVExTYCB3aXRoIGZsYWdzIGxpa2UgZGF0YTpgT1BfTk9fU1NMdjNgIGluc3RlYWQuCkBAIC02NzgsNyArNzE5LDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBTU0x2MiBpcyBkZXByZWNhdGVkCiAKQEAgLTY5MSw3ICs3MzIsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIFNTTHYzIGlzIGRlcHJlY2F0ZWQKIApAQCAtNzUxLDYgKzc5MiwxNiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorLi4gY2xhc3M6OiBPcHRpb25zCisKKyAgIDpjbGFzczpgZW51bS5JbnRGbGFnYCBjb2xsZWN0aW9uIG9mIE9QXyogY29uc3RhbnRzLgorCisuLiBkYXRhOjogT1BfTk9fVElDS0VUCisKKyAgIFByZXZlbnQgY2xpZW50IHNpZGUgZnJvbSByZXF1ZXN0aW5nIGEgc2Vzc2lvbiB0aWNrZXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogSEFTX0FMUE4KIAogICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciB0aGUgKkFwcGxpY2F0aW9uLUxheWVyCkBAIC04MzMsNiArODg0LDEyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBjbGFzczo6IEFsZXJ0RGVzY3JpcHRpb24KKworICAgOmNsYXNzOmBlbnVtLkludEVudW1gIGNvbGxlY3Rpb24gb2YgQUxFUlRfREVTQ1JJUFRJT05fKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogUHVycG9zZS5TRVJWRVJfQVVUSAogCiAgICBPcHRpb24gZm9yIDpmdW5jOmBjcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBhbmQKQEAgLTg1MSw2ICs5MDgsMTIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKy4uIGNsYXNzOjogU1NMRXJyb3JOdW1iZXIKKworICAgOmNsYXNzOmBlbnVtLkludEVudW1gIGNvbGxlY3Rpb24gb2YgU1NMX0VSUk9SXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiBTU0wgU29ja2V0cwogLS0tLS0tLS0tLS0KQEAgLTg4NSw3ICs5NDgsNyBAQAogICAgOnJlZjpgbm90ZXMgb24gbm9uLWJsb2NraW5nIHNvY2tldHMgPHNzbC1ub25ibG9ja2luZz5gLgogCiAgICBVc3VhbGx5LCA6Y2xhc3M6YFNTTFNvY2tldGAgYXJlIG5vdCBjcmVhdGVkIGRpcmVjdGx5LCBidXQgdXNpbmcgdGhlCi0gICA6ZnVuYzpgd3JhcF9zb2NrZXRgIGZ1bmN0aW9uIG9yIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgorICAgdGhlIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YCBtZXRob2QuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBUaGUgOm1ldGg6YHNlbmRmaWxlYCBtZXRob2Qgd2FzIGFkZGVkLgpAQCAtODk1LDYgKzk1OCwxMCBAQAogICAgICAgYXJlIHJlY2VpdmVkIG9yIHNlbnQuIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbgogICAgICAgb2YgdGhlIHNodXRkb3duLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBJdCBpcyBkZXByZWNhdGVkIHRvIGNyZWF0ZSBhIDpjbGFzczpgU1NMU29ja2V0YCBpbnN0YW5jZSBkaXJlY3RseSwgdXNlCisgICAgICA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgdG8gd3JhcCBhIHNvY2tldC4KKwogCiBTU0wgc29ja2V0cyBhbHNvIGhhdmUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKQEAgLTkxNSw2ICs5ODIsOSBAQAogICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHJlYWQgdXAgdG8gKmxlbioKICAgICAgIGJ5dGVzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBVc2UgOm1ldGg6YH5TU0xTb2NrZXQucmVjdmAgaW5zdGVhZCBvZiA6bWV0aDpgflNTTFNvY2tldC5yZWFkYC4KKwogLi4gbWV0aG9kOjogU1NMU29ja2V0LndyaXRlKGJ1ZikKIAogICAgV3JpdGUgKmJ1ZiogdG8gdGhlIFNTTCBzb2NrZXQgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIFRoZQpAQCAtOTMwLDYgKzEwMDAsOSBAQAogICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vIG1vcmUgcmVzZXQgZWFjaCB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LgogICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHdyaXRlICpidWYqLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBVc2UgOm1ldGg6YH5TU0xTb2NrZXQuc2VuZGAgaW5zdGVhZCBvZiA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAuCisKIC4uIG5vdGU6OgogCiAgICBUaGUgOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAgYW5kIDptZXRoOmB+U1NMU29ja2V0LndyaXRlYCBtZXRob2RzIGFyZSB0aGUKQEAgLTExMjcsNiArMTIwMCwxOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorLi4gYXR0cmlidXRlOjogU1NMU29ja2V0LnNlc3Npb24KKworICAgVGhlIDpjbGFzczpgU1NMU2Vzc2lvbmAgZm9yIHRoaXMgU1NMIGNvbm5lY3Rpb24uIFRoZSBzZXNzaW9uIGlzIGF2YWlsYWJsZQorICAgZm9yIGNsaWVudCBhbmQgc2VydmVyIHNpZGUgc29ja2V0cyBhZnRlciB0aGUgVExTIGhhbmRzaGFrZSBoYXMgYmVlbgorICAgcGVyZm9ybWVkLiBGb3IgY2xpZW50IHNvY2tldHMgdGhlIHNlc3Npb24gY2FuIGJlIHNldCBiZWZvcmUKKyAgIDptZXRoOmB+U1NMU29ja2V0LmRvX2hhbmRzaGFrZWAgaGFzIGJlZW4gY2FsbGVkIHRvIHJldXNlIGEgc2Vzc2lvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGF0dHJpYnV0ZTo6IFNTTFNvY2tldC5zZXNzaW9uX3JldXNlZAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiBTU0wgQ29udGV4dHMKIC0tLS0tLS0tLS0tLQpAQCAtMTE0OSw5ICsxMjM1LDE2IEBACiAgICAgICA6ZnVuYzpgY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgbGV0cyB0aGUgOm1vZDpgc3NsYCBtb2R1bGUgY2hvb3NlCiAgICAgICBzZWN1cml0eSBzZXR0aW5ncyBmb3IgYSBnaXZlbiBwdXJwb3NlLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgogCi0gICAgICA6ZGF0YTpgUFJPVE9DT0xfVExTYCBpcyB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICAgIFRoZSBjb250ZXh0IGlzIGNyZWF0ZWQgd2l0aCBzZWN1cmUgZGVmYXVsdCB2YWx1ZXMuIFRoZSBvcHRpb25zCisgICAgICA6ZGF0YTpgT1BfTk9fQ09NUFJFU1NJT05gLCA6ZGF0YTpgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFYCwKKyAgICAgIDpkYXRhOmBPUF9TSU5HTEVfREhfVVNFYCwgOmRhdGE6YE9QX1NJTkdMRV9FQ0RIX1VTRWAsCisgICAgICA6ZGF0YTpgT1BfTk9fU1NMdjJgIChleGNlcHQgZm9yIDpkYXRhOmBQUk9UT0NPTF9TU0x2MmApLAorICAgICAgYW5kIDpkYXRhOmBPUF9OT19TU0x2M2AgKGV4Y2VwdCBmb3IgOmRhdGE6YFBST1RPQ09MX1NTTHYzYCkgYXJlCisgICAgICBzZXQgYnkgZGVmYXVsdC4gVGhlIGluaXRpYWwgY2lwaGVyIHN1aXRlIGxpc3QgY29udGFpbnMgb25seSBgYEhJR0hgYAorICAgICAgY2lwaGVycywgbm8gYGBOVUxMYGAgY2lwaGVycyBhbmQgbm8gYGBNRDVgYCBjaXBoZXJzIChleGNlcHQgZm9yCisgICAgICA6ZGF0YTpgUFJPVE9DT0xfU1NMdjJgKS4KIAogCiA6Y2xhc3M6YFNTTENvbnRleHRgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CkBAIC0xMjU5LDYgKzEzNTIsNjIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQuZ2V0X2NpcGhlcnMoKQorCisgICBHZXQgYSBsaXN0IG9mIGVuYWJsZWQgY2lwaGVycy4gVGhlIGxpc3QgaXMgaW4gb3JkZXIgb2YgY2lwaGVyIHByaW9yaXR5LgorICAgU2VlIDptZXRoOmBTU0xDb250ZXh0LnNldF9jaXBoZXJzYC4KKworICAgRXhhbXBsZTo6CisKKyAgICAgICA+Pj4gY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICA+Pj4gY3R4LnNldF9jaXBoZXJzKCdFQ0RIRStBRVNHQ006IUVDRFNBJykKKyAgICAgICA+Pj4gY3R4LmdldF9jaXBoZXJzKCkgICMgT3BlblNTTCAxLjAueAorICAgICAgIFt7J2FsZ19iaXRzJzogMjU2LAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMjU2KSBNYWM9QUVBRCcsCisgICAgICAgICAnaWQnOiA1MDM4MDg0OCwKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCcsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEvU1NMdjMnLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAyNTZ9LAorICAgICAgICB7J2FsZ19iaXRzJzogMTI4LAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NiBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMTI4KSBNYWM9QUVBRCcsCisgICAgICAgICAnaWQnOiA1MDM4MDg0NywKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NicsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEvU1NMdjMnLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAxMjh9XQorCisgICBPbiBPcGVuU1NMIDEuMSBhbmQgbmV3ZXIgdGhlIGNpcGhlciBkaWN0IGNvbnRhaW5zIGFkZGl0aW9uYWwgZmllbGRzOjoKKyAgICAgICA+Pj4gY3R4LmdldF9jaXBoZXJzKCkgICMgT3BlblNTTCAxLjErCisgICAgICAgW3snYWVhZCc6IFRydWUsCisgICAgICAgICAnYWxnX2JpdHMnOiAyNTYsCisgICAgICAgICAnYXV0aCc6ICdhdXRoLXJzYScsCisgICAgICAgICAnZGVzY3JpcHRpb24nOiAnRUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0IFRMU3YxLjIgS3g9RUNESCAgICAgQXU9UlNBICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnRW5jPUFFU0dDTSgyNTYpIE1hYz1BRUFEJywKKyAgICAgICAgICdkaWdlc3QnOiBOb25lLAorICAgICAgICAgJ2lkJzogNTAzODA4NDgsCisgICAgICAgICAna2VhJzogJ2t4LWVjZGhlJywKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCcsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEuMicsCisgICAgICAgICAnc3RyZW5ndGhfYml0cyc6IDI1NiwKKyAgICAgICAgICdzeW1tZXRyaWMnOiAnYWVzLTI1Ni1nY20nfSwKKyAgICAgICAgeydhZWFkJzogVHJ1ZSwKKyAgICAgICAgICdhbGdfYml0cyc6IDEyOCwKKyAgICAgICAgICdhdXRoJzogJ2F1dGgtcnNhJywKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDEyOCkgTWFjPUFFQUQnLAorICAgICAgICAgJ2RpZ2VzdCc6IE5vbmUsCisgICAgICAgICAnaWQnOiA1MDM4MDg0NywKKyAgICAgICAgICdrZWEnOiAna3gtZWNkaGUnLAorICAgICAgICAgJ25hbWUnOiAnRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2JywKKyAgICAgICAgICdwcm90b2NvbCc6ICdUTFN2MS4yJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMTI4LAorICAgICAgICAgJ3N5bW1ldHJpYyc6ICdhZXMtMTI4LWdjbSd9XQorCisgICBBdmFpbGFiaWxpdHk6IE9wZW5TU0wgMS4wLjIrCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpCiAKICAgIExvYWQgYSBzZXQgb2YgZGVmYXVsdCAiY2VydGlmaWNhdGlvbiBhdXRob3JpdHkiIChDQSkgY2VydGlmaWNhdGVzIGZyb20KQEAgLTEzOTcsNyArMTU0Niw3IEBACiAKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX3NpZGU9RmFsc2UsIFwKICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PVRydWUsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIFwKLSAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKQorICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSkKIAogICAgV3JhcCBhbiBleGlzdGluZyBQeXRob24gc29ja2V0ICpzb2NrKiBhbmQgcmV0dXJuIGFuIDpjbGFzczpgU1NMU29ja2V0YAogICAgb2JqZWN0LiAgKnNvY2sqIG11c3QgYmUgYSA6ZGF0YTpgfnNvY2tldC5TT0NLX1NUUkVBTWAgc29ja2V0OyBvdGhlciBzb2NrZXQKQEAgLTE0MTQsMTkgKzE1NjMsMjcgQEAKICAgIHF1aXRlIHNpbWlsYXJseSB0byBIVFRQIHZpcnR1YWwgaG9zdHMuIFNwZWNpZnlpbmcgKnNlcnZlcl9ob3N0bmFtZSogd2lsbAogICAgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqc2VydmVyX3NpZGUqIGlzIHRydWUuCiAKKyAgICpzZXNzaW9uKiwgc2VlIDphdHRyOmB+U1NMU29ja2V0LnNlc3Npb25gLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWx3YXlzIGFsbG93IGEgc2VydmVyX2hvc3RuYW1lIHRvIGJlIHBhc3NlZCwgZXZlbiBpZiBPcGVuU1NMIGRvZXMgbm90CiAgICAgICBoYXZlIFNOSS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpzZXNzaW9uKiBhcmd1bWVudCB3YXMgYWRkZWQuCisKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1GYWxzZSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU1NMT2JqZWN0YCBpbnN0YW5jZSBieSB3cmFwcGluZyB0aGUgQklPIG9iamVjdHMKICAgICppbmNvbWluZyogYW5kICpvdXRnb2luZyouIFRoZSBTU0wgcm91dGluZXMgd2lsbCByZWFkIGlucHV0IGRhdGEgZnJvbSB0aGUKICAgIGluY29taW5nIEJJTyBhbmQgd3JpdGUgZGF0YSB0byB0aGUgb3V0Z29pbmcgQklPLgogCi0gICBUaGUgKnNlcnZlcl9zaWRlKiBhbmQgKnNlcnZlcl9ob3N0bmFtZSogcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMKLSAgIGluIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YC4KKyAgIFRoZSAqc2VydmVyX3NpZGUqLCAqc2VydmVyX2hvc3RuYW1lKiBhbmQgKnNlc3Npb24qIHBhcmFtZXRlcnMgaGF2ZSB0aGUKKyAgIHNhbWUgbWVhbmluZyBhcyBpbiA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqc2Vzc2lvbiogYXJndW1lbnQgd2FzIGFkZGVkLgogCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNlc3Npb25fc3RhdHMoKQogCkBAIC0xNDc4LDYgKzE2MzUsMTIgQEAKICAgICAgIHRvIHNldCBvcHRpb25zLCBub3QgdG8gY2xlYXIgdGhlbS4gIEF0dGVtcHRpbmcgdG8gY2xlYXIgYW4gb3B0aW9uCiAgICAgICAoYnkgcmVzZXR0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMpIHdpbGwgcmFpc2UgYSBgYFZhbHVlRXJyb3JgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0Lm9wdGlvbnNgIHJldHVybnMgOmNsYXNzOmBPcHRpb25zYCBmbGFnczoKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkub3B0aW9ucworICAgICAgICAgPE9wdGlvbnMuT1BfQUxMfE9QX05PX1NTTHYzfE9QX05PX1NTTHYyfE9QX05PX0NPTVBSRVNTSU9OOiAyMTk3OTQ3MzkxPgorCiAuLiBhdHRyaWJ1dGU6OiBTU0xDb250ZXh0LnByb3RvY29sCiAKICAgIFRoZSBwcm90b2NvbCB2ZXJzaW9uIGNob3NlbiB3aGVuIGNvbnN0cnVjdGluZyB0aGUgY29udGV4dC4gIFRoaXMgYXR0cmlidXRlCkBAIC0xNDkyLDEyICsxNjU1LDIzIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X2ZsYWdzYCByZXR1cm5zIDpjbGFzczpgVmVyaWZ5RmxhZ3NgIGZsYWdzOgorCisgICAgICAgICA+Pj4gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKS52ZXJpZnlfZmxhZ3MKKyAgICAgICAgIDxWZXJpZnlGbGFncy5WRVJJRllfWDUwOV9UUlVTVEVEX0ZJUlNUOiAzMjc2OD4KKwogLi4gYXR0cmlidXRlOjogU1NMQ29udGV4dC52ZXJpZnlfbW9kZQogCiAgICBXaGV0aGVyIHRvIHRyeSB0byB2ZXJpZnkgb3RoZXIgcGVlcnMnIGNlcnRpZmljYXRlcyBhbmQgaG93IHRvIGJlaGF2ZQogICAgaWYgdmVyaWZpY2F0aW9uIGZhaWxzLiAgVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBvbmUgb2YKICAgIDpkYXRhOmBDRVJUX05PTkVgLCA6ZGF0YTpgQ0VSVF9PUFRJT05BTGAgb3IgOmRhdGE6YENFUlRfUkVRVUlSRURgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X21vZGVgIHJldHVybnMgOmNsYXNzOmBWZXJpZnlNb2RlYCBlbnVtOgorCisgICAgICAgICA+Pj4gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKS52ZXJpZnlfbW9kZQorICAgICAgICAgPFZlcmlmeU1vZGUuQ0VSVF9SRVFVSVJFRDogMj4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IGNlcnRpZmljYXRlcwogCkBAIC0xOTE2LDYgKzIwOTAsOCBAQAogICAgLSA6YXR0cjpgflNTTFNvY2tldC5jb250ZXh0YAogICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXJ2ZXJfc2lkZWAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX2hvc3RuYW1lYAorICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uYAorICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uX3JldXNlZGAKICAgIC0gOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAKICAgIC0gOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LmdldHBlZXJjZXJ0YApAQCAtMTk5Nyw2ICsyMTczLDIyIEBACiAgICAgICBiZWNvbWUgdHJ1ZSBhZnRlciBhbGwgZGF0YSBjdXJyZW50bHkgaW4gdGhlIGJ1ZmZlciBoYXMgYmVlbiByZWFkLgogCiAKK1NTTCBzZXNzaW9uCistLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gY2xhc3M6OiBTU0xTZXNzaW9uCisKKyAgIFNlc3Npb24gb2JqZWN0IHVzZWQgYnkgOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbmAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlkCisgICAuLiBhdHRyaWJ1dGU6OiB0aW1lCisgICAuLiBhdHRyaWJ1dGU6OiB0aW1lb3V0CisgICAuLiBhdHRyaWJ1dGU6OiB0aWNrZXRfbGlmZXRpbWVfaGludAorICAgLi4gYXR0cmlidXRlOjogaGFzX3RpY2tldAorCisKIC4uIF9zc2wtc2VjdXJpdHk6CiAKIFNlY3VyaXR5IGNvbnNpZGVyYXRpb25zCkBAIC0yMDYzLDE4ICsyMjU1LDIwIEBACiAKIFNTTCB2ZXJzaW9ucyAyIGFuZCAzIGFyZSBjb25zaWRlcmVkIGluc2VjdXJlIGFuZCBhcmUgdGhlcmVmb3JlIGRhbmdlcm91cyB0bwogdXNlLiAgSWYgeW91IHdhbnQgbWF4aW11bSBjb21wYXRpYmlsaXR5IGJldHdlZW4gY2xpZW50cyBhbmQgc2VydmVycywgaXQgaXMKLXJlY29tbWVuZGVkIHRvIHVzZSA6Y29uc3Q6YFBST1RPQ09MX1RMU2AgYXMgdGhlIHByb3RvY29sIHZlcnNpb24gYW5kIHRoZW4KLWRpc2FibGUgU1NMdjIgYW5kIFNTTHYzIGV4cGxpY2l0bHkgdXNpbmcgdGhlIDpkYXRhOmBTU0xDb250ZXh0Lm9wdGlvbnNgCi1hdHRyaWJ1dGU6OgorcmVjb21tZW5kZWQgdG8gdXNlIDpjb25zdDpgUFJPVE9DT0xfVExTX0NMSUVOVGAgb3IKKzpjb25zdDpgUFJPVE9DT0xfVExTX1NFUlZFUmAgYXMgdGhlIHByb3RvY29sIHZlcnNpb24uIFNTTHYyIGFuZCBTU0x2MyBhcmUKK2Rpc2FibGVkIGJ5IGRlZmF1bHQuCiAKLSAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTKQotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19TU0x2MgotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19TU0x2MwotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MV8xCisgICA+Pj4gY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCkKKyAgID4+PiBjbGllbnRfY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQorICAgPj4+IGNsaWVudF9jb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxXzEKKwogCiBUaGUgU1NMIGNvbnRleHQgY3JlYXRlZCBhYm92ZSB3aWxsIG9ubHkgYWxsb3cgVExTdjEuMiBhbmQgbGF0ZXIgKGlmCi1zdXBwb3J0ZWQgYnkgeW91ciBzeXN0ZW0pIGNvbm5lY3Rpb25zLgorc3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtKSBjb25uZWN0aW9ucyB0byBhIHNlcnZlci4gOmNvbnN0OmBQUk9UT0NPTF9UTFNfQ0xJRU5UYAoraW1wbGllcyBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGFuZCBob3N0bmFtZSBjaGVja3MgYnkgZGVmYXVsdC4gWW91IGhhdmUgdG8KK2xvYWQgY2VydGlmaWNhdGVzIGludG8gdGhlIGNvbnRleHQuCisKIAogQ2lwaGVyIHNlbGVjdGlvbgogJycnJycnJycnJycnJycnJwpAQCAtMjA4NSw4ICsyMjc5LDkgQEAKIHNzbCBtb2R1bGUgZGlzYWJsZXMgY2VydGFpbiB3ZWFrIGNpcGhlcnMgYnkgZGVmYXVsdCwgYnV0IHlvdSBtYXkgd2FudAogdG8gZnVydGhlciByZXN0cmljdCB0aGUgY2lwaGVyIGNob2ljZS4gQmUgc3VyZSB0byByZWFkIE9wZW5TU0wncyBkb2N1bWVudGF0aW9uCiBhYm91dCB0aGUgYGNpcGhlciBsaXN0IGZvcm1hdCA8aHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9hcHBzL2NpcGhlcnMuaHRtbCNDSVBIRVItTElTVC1GT1JNQVQ+YF8uCi1JZiB5b3Ugd2FudCB0byBjaGVjayB3aGljaCBjaXBoZXJzIGFyZSBlbmFibGVkIGJ5IGEgZ2l2ZW4gY2lwaGVyIGxpc3QsIHVzZSB0aGUKLWBgb3BlbnNzbCBjaXBoZXJzYGAgY29tbWFuZCBvbiB5b3VyIHN5c3RlbS4KK0lmIHlvdSB3YW50IHRvIGNoZWNrIHdoaWNoIGNpcGhlcnMgYXJlIGVuYWJsZWQgYnkgYSBnaXZlbiBjaXBoZXIgbGlzdCwgdXNlCis6bWV0aDpgU1NMQ29udGV4dC5nZXRfY2lwaGVyc2Agb3IgdGhlIGBgb3BlbnNzbCBjaXBoZXJzYGAgY29tbWFuZCBvbiB5b3VyCitzeXN0ZW0uCiAKIE11bHRpLXByb2Nlc3NpbmcKIF5eXl5eXl5eXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0IGIvRG9jL2xpYnJhcnkvc3RhdGlzdGljcy5yc3QKaW5kZXggZWEzZDdkYS4uYzAyMGEzNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RhdGlzdGljcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RhdGlzdGljcy5yc3QKQEAgLTM5LDYgKzM5LDcgQEAKIAogPT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogOmZ1bmM6YG1lYW5gICAgICAgICAgICAgIEFyaXRobWV0aWMgbWVhbiAoImF2ZXJhZ2UiKSBvZiBkYXRhLgorOmZ1bmM6YGhhcm1vbmljX21lYW5gICAgIEhhcm1vbmljIG1lYW4gb2YgZGF0YS4KIDpmdW5jOmBtZWRpYW5gICAgICAgICAgICBNZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgZGF0YS4KIDpmdW5jOmBtZWRpYW5fbG93YCAgICAgICBMb3cgbWVkaWFuIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuX2hpZ2hgICAgICAgSGlnaCBtZWRpYW4gb2YgZGF0YS4KQEAgLTExMSw2ICsxMTIsMzggQEAKICAgICAgIGBgbWVhbihkYXRhKWBgIGlzIGVxdWl2YWxlbnQgdG8gY2FsY3VsYXRpbmcgdGhlIHRydWUgcG9wdWxhdGlvbiBtZWFuIM68LgogCiAKKy4uIGZ1bmN0aW9uOjogaGFybW9uaWNfbWVhbihkYXRhKQorCisgICBSZXR1cm4gdGhlIGhhcm1vbmljIG1lYW4gb2YgKmRhdGEqLCBhIHNlcXVlbmNlIG9yIGl0ZXJhdG9yIG9mCisgICByZWFsLXZhbHVlZCBudW1iZXJzLgorCisgICBUaGUgaGFybW9uaWMgbWVhbiwgc29tZXRpbWVzIGNhbGxlZCB0aGUgc3ViY29udHJhcnkgbWVhbiwgaXMgdGhlCisgICByZWNpcHJvY2FsIG9mIHRoZSBhcml0aG1ldGljIDpmdW5jOmBtZWFuYCBvZiB0aGUgcmVjaXByb2NhbHMgb2YgdGhlCisgICBkYXRhLiBGb3IgZXhhbXBsZSwgdGhlIGhhcm1vbmljIG1lYW4gb2YgdGhyZWUgdmFsdWVzICphKiwgKmIqIGFuZCAqYyoKKyAgIHdpbGwgYmUgZXF1aXZhbGVudCB0byBgYDMvKDEvYSArIDEvYiArIDEvYylgYC4KKworICAgVGhlIGhhcm1vbmljIG1lYW4gaXMgYSB0eXBlIG9mIGF2ZXJhZ2UsIGEgbWVhc3VyZSBvZiB0aGUgY2VudHJhbAorICAgbG9jYXRpb24gb2YgdGhlIGRhdGEuICBJdCBpcyBvZnRlbiBhcHByb3ByaWF0ZSB3aGVuIGF2ZXJhZ2luZyBxdWFudGl0aWVzCisgICB3aGljaCBhcmUgcmF0ZXMgb3IgcmF0aW9zLCBmb3IgZXhhbXBsZSBzcGVlZHMuIEZvciBleGFtcGxlOgorCisgICBTdXBwb3NlIGFuIGludmVzdG9yIHB1cmNoYXNlcyBhbiBlcXVhbCB2YWx1ZSBvZiBzaGFyZXMgaW4gZWFjaCBvZgorICAgdGhyZWUgY29tcGFuaWVzLCB3aXRoIFAvRSAocHJpY2UvZWFybmluZykgcmF0aW9zIG9mIDIuNSwgMyBhbmQgMTAuCisgICBXaGF0IGlzIHRoZSBhdmVyYWdlIFAvRSByYXRpbyBmb3IgdGhlIGludmVzdG9yJ3MgcG9ydGZvbGlvPworCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IGhhcm1vbmljX21lYW4oWzIuNSwgMywgMTBdKSAgIyBGb3IgYW4gZXF1YWwgaW52ZXN0bWVudCBwb3J0Zm9saW8uCisgICAgICAzLjYKKworICAgVXNpbmcgdGhlIGFyaXRobWV0aWMgbWVhbiB3b3VsZCBnaXZlIGFuIGF2ZXJhZ2Ugb2YgYWJvdXQgNS4xNjcsIHdoaWNoCisgICBpcyB0b28gaGlnaC4KKworICAgOmV4YzpgU3RhdGlzdGljc0Vycm9yYCBpcyByYWlzZWQgaWYgKmRhdGEqIGlzIGVtcHR5LCBvciBhbnkgZWxlbWVudAorICAgaXMgbGVzcyB0aGFuIHplcm8uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIGZ1bmN0aW9uOjogbWVkaWFuKGRhdGEpCiAKICAgIFJldHVybiB0aGUgbWVkaWFuIChtaWRkbGUgdmFsdWUpIG9mIG51bWVyaWMgZGF0YSwgdXNpbmcgdGhlIGNvbW1vbiAibWVhbiBvZgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CmluZGV4IGRhYzk5MmEuLmVjMGFjZTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKQEAgLTEzNjMsNiArMTM2MywxMSBAQAogICAgVGhlIDphdHRyOmB+cmFuZ2Uuc3RhcnRgLCA6YXR0cjpgfnJhbmdlLnN0b3BgIGFuZCA6YXR0cjpgfnJhbmdlLnN0ZXBgCiAgICBhdHRyaWJ1dGVzLgogCisuLiBzZWVhbHNvOjoKKworICAgKiBUaGUgYGxpbnNwYWNlIHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc5MDAwLz5gXworICAgICBzaG93cyBob3cgdG8gaW1wbGVtZW50IGEgbGF6eSB2ZXJzaW9uIG9mIHJhbmdlIHRoYXQgc3VpdGFibGUgZm9yIGZsb2F0aW5nCisgICAgIHBvaW50IGFwcGxpY2F0aW9ucy4KIAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBzdHJpbmc7IHRleHQgc2VxdWVuY2UgdHlwZQpAQCAtMTQ1Myw4ICsxNDU4LDggQEAKIAogICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGBgc3RyYGAgY2xhc3MgYW5kIGl0cyBtZXRob2RzLCBzZWUKICAgIDpyZWY6YHRleHRzZXFgIGFuZCB0aGUgOnJlZjpgc3RyaW5nLW1ldGhvZHNgIHNlY3Rpb24gYmVsb3cuICBUbyBvdXRwdXQKLSAgIGZvcm1hdHRlZCBzdHJpbmdzLCBzZWUgdGhlIDpyZWY6YGZvcm1hdHN0cmluZ3NgIHNlY3Rpb24uICBJbiBhZGRpdGlvbiwKLSAgIHNlZSB0aGUgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCisgICBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSA6cmVmOmBmLXN0cmluZ3NgIGFuZCA6cmVmOmBmb3JtYXRzdHJpbmdzYAorICAgc2VjdGlvbnMuICBJbiBhZGRpdGlvbiwgc2VlIHRoZSA6cmVmOmBzdHJpbmdzZXJ2aWNlc2Agc2VjdGlvbi4KIAogCiAuLiBpbmRleDo6CkBAIC0yMDU2LDggKzIwNjEsOCBAQAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBmb3JtYXR0aW5nLCBzdHJpbmcgKCUpCiAgICBzaW5nbGU6IGludGVycG9sYXRpb24sIHN0cmluZyAoJSkKLSAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXR0aW5nCi0gICBzaW5nbGU6IHN0cmluZzsgaW50ZXJwb2xhdGlvbgorICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdHRpbmcsIHByaW50ZgorICAgc2luZ2xlOiBzdHJpbmc7IGludGVycG9sYXRpb24sIHByaW50ZgogICAgc2luZ2xlOiBwcmludGYtc3R5bGUgZm9ybWF0dGluZwogICAgc2luZ2xlOiBzcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcKICAgIHNpbmdsZTogJSBmb3JtYXR0aW5nCkBAIC0yMDY3LDkgKzIwNzIsMTAgQEAKIAogICAgVGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9ucyBkZXNjcmliZWQgaGVyZSBleGhpYml0IGEgdmFyaWV0eSBvZiBxdWlya3MgdGhhdAogICAgbGVhZCB0byBhIG51bWJlciBvZiBjb21tb24gZXJyb3JzIChzdWNoIGFzIGZhaWxpbmcgdG8gZGlzcGxheSB0dXBsZXMgYW5kCi0gICBkaWN0aW9uYXJpZXMgY29ycmVjdGx5KS4gIFVzaW5nIHRoZSBuZXdlciA6bWV0aDpgc3RyLmZvcm1hdGAgaW50ZXJmYWNlCi0gICBoZWxwcyBhdm9pZCB0aGVzZSBlcnJvcnMsIGFuZCBhbHNvIHByb3ZpZGVzIGEgZ2VuZXJhbGx5IG1vcmUgcG93ZXJmdWwsCi0gICBmbGV4aWJsZSBhbmQgZXh0ZW5zaWJsZSBhcHByb2FjaCB0byBmb3JtYXR0aW5nIHRleHQuCisgICBkaWN0aW9uYXJpZXMgY29ycmVjdGx5KS4gIFVzaW5nIHRoZSBuZXdlciA6cmVmOmBmb3JtYXR0ZWQKKyAgIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgb3IgdGhlIDptZXRoOmBzdHIuZm9ybWF0YCBpbnRlcmZhY2UKKyAgIGhlbHBzIGF2b2lkIHRoZXNlIGVycm9ycy4gIFRoZXNlIGFsdGVybmF0aXZlcyBhbHNvIHByb3ZpZGUgbW9yZSBwb3dlcmZ1bCwKKyAgIGZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIGFwcHJvYWNoZXMgdG8gZm9ybWF0dGluZyB0ZXh0LgogCiBTdHJpbmcgb2JqZWN0cyBoYXZlIG9uZSB1bmlxdWUgYnVpbHQtaW4gb3BlcmF0aW9uOiB0aGUgYGAlYGAgb3BlcmF0b3IgKG1vZHVsbykuCiBUaGlzIGlzIGFsc28ga25vd24gYXMgdGhlIHN0cmluZyAqZm9ybWF0dGluZyogb3IgKmludGVycG9sYXRpb24qIG9wZXJhdG9yLgpAQCAtMjYzMCw4ICsyNjM2LDggQEAKICAgIFRoZSBwcmVmaXgoZXMpIHRvIHNlYXJjaCBmb3IgbWF5IGJlIGFueSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLgogCiAKLS4uIG1ldGhvZDo6IGJ5dGVzLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pCi0gICAgICAgICAgICBieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlWywgZGVsZXRlXSkKKy4uIG1ldGhvZDo6IGJ5dGVzLnRyYW5zbGF0ZSh0YWJsZSwgZGVsZXRlPWInJykKKyAgICAgICAgICAgIGJ5dGVhcnJheS50cmFuc2xhdGUodGFibGUsIGRlbGV0ZT1iJycpCiAKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3Qgd2hlcmUgYWxsIGJ5dGVzIG9jY3VycmluZyBpbgogICAgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpkZWxldGUqIGFyZSByZW1vdmVkLCBhbmQgdGhlIHJlbWFpbmluZyBieXRlcyBoYXZlCkBAIC0yNjQ3LDYgKzI2NTMsOSBAQAogICAgICAgPj4+IGIncmVhZCB0aGlzIHNob3J0IHRleHQnLnRyYW5zbGF0ZShOb25lLCBiJ2FlaW91JykKICAgICAgIGIncmQgdGhzIHNocnQgdHh0JwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmRlbGV0ZSogaXMgbm93IHN1cHBvcnRlZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuCisKIAogVGhlIGZvbGxvd2luZyBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBoYXZlIGRlZmF1bHQgYmVoYXZpb3VycwogdGhhdCBhc3N1bWUgdGhlIHVzZSBvZiBBU0NJSSBjb21wYXRpYmxlIGJpbmFyeSBmb3JtYXRzLCBidXQgY2FuIHN0aWxsIGJlIHVzZWQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CmluZGV4IGQ1ZDI0MzAuLjZkYmQzZjkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdApAQCAtMTg4LDcgKzE4OCw5IEBACiAKIFRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kIGFuZCB0aGUgOmNsYXNzOmBGb3JtYXR0ZXJgIGNsYXNzIHNoYXJlIHRoZSBzYW1lCiBzeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiA6Y2xhc3M6YEZvcm1hdHRlcmAsCi1zdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS4KK3N1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLiAgVGhlIHN5bnRheCBpcworcmVsYXRlZCB0byB0aGF0IG9mIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gLCBidXQKK3RoZXJlIGFyZSBkaWZmZXJlbmNlcy4KIAogRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5IGN1cmx5IGJyYWNlcyBgYHt9YGAuCiBBbnl0aGluZyB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gYnJhY2VzIGlzIGNvbnNpZGVyZWQgbGl0ZXJhbCB0ZXh0LCB3aGljaCBpcwpAQCAtMjgzLDcgKzI4NSw4IEBACiAKICJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgY29udGFpbmVkIHdpdGhpbiBhCiBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlIHByZXNlbnRlZCAoc2VlCi06cmVmOmBmb3JtYXRzdHJpbmdzYCkuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYnVpbHQtaW4KKzpyZWY6YGZvcm1hdHN0cmluZ3NgIGFuZCA6cmVmOmBmLXN0cmluZ3NgKS4KK1RoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBidWlsdC1pbgogOmZ1bmM6YGZvcm1hdGAgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3cgdGhlIGZvcm1hdAogc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC4KIApAQCAtMjk3LDE4ICszMDAsMjAgQEAKIFRoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6CiAKIC4uIHByb2R1Y3Rpb25saXN0Ojogc2YKLSAgIGZvcm1hdF9zcGVjOiBbW2BmaWxsYF1gYWxpZ25gXVtgc2lnbmBdWyNdWzBdW2B3aWR0aGBdWyxdWy5gcHJlY2lzaW9uYF1bYHR5cGVgXQorICAgZm9ybWF0X3NwZWM6IFtbYGZpbGxgXWBhbGlnbmBdW2BzaWduYF1bI11bMF1bYHdpZHRoYF1bYGdyb3VwaW5nX29wdGlvbmBdWy5gcHJlY2lzaW9uYF1bYHR5cGVgXQogICAgZmlsbDogPGFueSBjaGFyYWN0ZXI+CiAgICBhbGlnbjogIjwiIHwgIj4iIHwgIj0iIHwgIl4iCiAgICBzaWduOiAiKyIgfCAiLSIgfCAiICIKICAgIHdpZHRoOiBgaW50ZWdlcmAKKyAgIGdyb3VwaW5nX29wdGlvbjogIl8iIHwgIiwiCiAgICBwcmVjaXNpb246IGBpbnRlZ2VyYAogICAgdHlwZTogImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgIkYiIHwgImciIHwgIkciIHwgIm4iIHwgIm8iIHwgInMiIHwgIngiIHwgIlgiIHwgIiUiCiAKIElmIGEgdmFsaWQgKmFsaWduKiB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGNhbiBiZSBwcmVjZWRlZCBieSBhICpmaWxsKgogY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgc3BhY2UgaWYgb21pdHRlZC4KIEl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgYSBsaXRlcmFsIGN1cmx5IGJyYWNlICgiYGB7YGAiIG9yICJgYH1gYCIpIGFzCi10aGUgKmZpbGwqIGNoYXJhY3RlciB3aGVuIHVzaW5nIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAKK3RoZSAqZmlsbCogY2hhcmFjdGVyIGluIGEgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsCis8Zi1zdHJpbmdzPmAgb3Igd2hlbiB1c2luZyB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgCiBtZXRob2QuICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBpbnNlcnQgYSBjdXJseSBicmFjZQogd2l0aCBhIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZC4gIFRoaXMgbGltaXRhdGlvbiBkb2Vzbid0CiBhZmZlY3QgdGhlIDpmdW5jOmBmb3JtYXRgIGZ1bmN0aW9uLgpAQCAtMzc0LDYgKzM3OSwxNiBAQAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgIEFkZGVkIHRoZSBgYCcsJ2BgIG9wdGlvbiAoc2VlIGFsc28gOnBlcDpgMzc4YCkuCiAKK1RoZSBgYCdfJ2BgIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYW4gdW5kZXJzY29yZSBmb3IgYSB0aG91c2FuZHMKK3NlcGFyYXRvciBmb3IgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGFuZCBmb3IgaW50ZWdlcgorcHJlc2VudGF0aW9uIHR5cGUgYGAnZCdgYC4gIEZvciBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBgYCdiJ2BgLAorYGAnbydgYCwgYGAneCdgYCwgYW5kIGBgJ1gnYGAsIHVuZGVyc2NvcmVzIHdpbGwgYmUgaW5zZXJ0ZWQgZXZlcnkgNAorZGlnaXRzLiAgRm9yIG90aGVyIHByZXNlbnRhdGlvbiB0eXBlcywgc3BlY2lmeWluZyB0aGlzIG9wdGlvbiBpcyBhbgorZXJyb3IuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBBZGRlZCB0aGUgYGAnXydgYCBvcHRpb24gKHNlZSBhbHNvIDpwZXA6YDUxNWApLgorCiAqd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoLiAgSWYgbm90CiBzcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29udGVudC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdCBiL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKaW5kZXggYWUyZTM4Zi4uN2U4NjFmZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CkBAIC0yMTYsNiArMjE2LDggQEAKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBOYGAgIHwgOmM6dHlwZTpgc2l6ZV90YCAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgYGBlYGAgIHwgXCg3KSAgICAgICAgICAgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKKystLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBmYGAgIHwgOmM6dHlwZTpgZmxvYXRgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBkYGAgIHwgOmM6dHlwZTpgZG91YmxlYCAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKQEAgLTI1Nyw5ICsyNTksMTAgQEAKICAgIGZpdHMgeW91ciBhcHBsaWNhdGlvbi4KIAogKDUpCi0gICBGb3IgdGhlIGBgJ2YnYGAgYW5kIGBgJ2QnYGAgY29udmVyc2lvbiBjb2RlcywgdGhlIHBhY2tlZCByZXByZXNlbnRhdGlvbiB1c2VzCi0gICB0aGUgSUVFRSA3NTQgYmluYXJ5MzIgKGZvciBgYCdmJ2BgKSBvciBiaW5hcnk2NCAoZm9yIGBgJ2QnYGApIGZvcm1hdCwKLSAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGZsb2F0aW5nLXBvaW50IGZvcm1hdCB1c2VkIGJ5IHRoZSBwbGF0Zm9ybS4KKyAgIEZvciB0aGUgYGAnZidgYCwgYGAnZCdgYCBhbmQgYGAnZSdgYCBjb252ZXJzaW9uIGNvZGVzLCB0aGUgcGFja2VkCisgICByZXByZXNlbnRhdGlvbiB1c2VzIHRoZSBJRUVFIDc1NCBiaW5hcnkzMiwgYmluYXJ5NjQgb3IgYmluYXJ5MTYgZm9ybWF0IChmb3IKKyAgIGBgJ2YnYGAsIGBgJ2QnYGAgb3IgYGAnZSdgYCByZXNwZWN0aXZlbHkpLCByZWdhcmRsZXNzIG9mIHRoZSBmbG9hdGluZy1wb2ludAorICAgZm9ybWF0IHVzZWQgYnkgdGhlIHBsYXRmb3JtLgogCiAoNikKICAgIFRoZSBgYCdQJ2BgIGZvcm1hdCBjaGFyYWN0ZXIgaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZSBuYXRpdmUgYnl0ZSBvcmRlcmluZwpAQCAtMjY4LDYgKzI3MSwxNiBAQAogICAgb24gdGhlIGhvc3Qgc3lzdGVtLiBUaGUgc3RydWN0IG1vZHVsZSBkb2VzIG5vdCBpbnRlcnByZXQgdGhpcyBhcyBuYXRpdmUKICAgIG9yZGVyaW5nLCBzbyB0aGUgYGAnUCdgYCBmb3JtYXQgaXMgbm90IGF2YWlsYWJsZS4KIAorKDcpCisgICBUaGUgSUVFRSA3NTQgYmluYXJ5MTYgImhhbGYgcHJlY2lzaW9uIiB0eXBlIHdhcyBpbnRyb2R1Y2VkIGluIHRoZSAyMDA4CisgICByZXZpc2lvbiBvZiB0aGUgYElFRUUgNzU0IHN0YW5kYXJkIDxpZWVlIDc1NCBzdGFuZGFyZF8+YF8uIEl0IGhhcyBhIHNpZ24KKyAgIGJpdCwgYSA1LWJpdCBleHBvbmVudCBhbmQgMTEtYml0IHByZWNpc2lvbiAod2l0aCAxMCBiaXRzIGV4cGxpY2l0bHkgc3RvcmVkKSwKKyAgIGFuZCBjYW4gcmVwcmVzZW50IG51bWJlcnMgYmV0d2VlbiBhcHByb3hpbWF0ZWx5IGBgNi4xZS0wNWBgIGFuZCBgYDYuNWUrMDRgYAorICAgYXQgZnVsbCBwcmVjaXNpb24uIFRoaXMgdHlwZSBpcyBub3Qgd2lkZWx5IHN1cHBvcnRlZCBieSBDIGNvbXBpbGVyczogb24gYQorICAgdHlwaWNhbCBtYWNoaW5lLCBhbiB1bnNpZ25lZCBzaG9ydCBjYW4gYmUgdXNlZCBmb3Igc3RvcmFnZSwgYnV0IG5vdCBmb3IgbWF0aAorICAgb3BlcmF0aW9ucy4gU2VlIHRoZSBXaWtpcGVkaWEgcGFnZSBvbiB0aGUgYGhhbGYtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50CisgICBmb3JtYXQgPGhhbGYgcHJlY2lzaW9uIGZvcm1hdF8+YF8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKIAogQSBmb3JtYXQgY2hhcmFjdGVyIG1heSBiZSBwcmVjZWRlZCBieSBhbiBpbnRlZ3JhbCByZXBlYXQgY291bnQuICBGb3IgZXhhbXBsZSwKIHRoZSBmb3JtYXQgc3RyaW5nIGBgJzRoJ2BgIG1lYW5zIGV4YWN0bHkgdGhlIHNhbWUgYXMgYGAnaGhoaCdgYC4KQEAgLTQzMCwzICs0NDMsNyBAQAogICAgICAgVGhlIGNhbGN1bGF0ZWQgc2l6ZSBvZiB0aGUgc3RydWN0IChhbmQgaGVuY2Ugb2YgdGhlIGJ5dGVzIG9iamVjdCBwcm9kdWNlZAogICAgICAgYnkgdGhlIDptZXRoOmBwYWNrYCBtZXRob2QpIGNvcnJlc3BvbmRpbmcgdG8gOmF0dHI6YGZvcm1hdGAuCiAKKworLi4gX2hhbGYgcHJlY2lzaW9uIGZvcm1hdDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFsZi1wcmVjaXNpb25fZmxvYXRpbmctcG9pbnRfZm9ybWF0CisKKy4uIF9pZWVlIDc1NCBzdGFuZGFyZDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVFRV9mbG9hdGluZ19wb2ludCNJRUVFXzc1NC0yMDA4CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdCBiL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CmluZGV4IDM1NjYwNWYuLjA2NTVkYzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CkBAIC0zOCw3ICszOCw4IEBACiAKIAogLi4gZnVuY3Rpb246OiBydW4oYXJncywgKiwgc3RkaW49Tm9uZSwgaW5wdXQ9Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLFwKLSAgICAgICAgICAgICAgICAgIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUsIGNoZWNrPUZhbHNlKQorICAgICAgICAgICAgICAgICAgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSwgY2hlY2s9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKQogCiAgICBSdW4gdGhlIGNvbW1hbmQgZGVzY3JpYmVkIGJ5ICphcmdzKi4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KICAgIHJldHVybiBhIDpjbGFzczpgQ29tcGxldGVkUHJvY2Vzc2AgaW5zdGFuY2UuCkBAIC02MCwxNSArNjEsMjAgQEAKIAogICAgVGhlICppbnB1dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi5jb21tdW5pY2F0ZWAgYW5kIHRodXMgdG8gdGhlCiAgICBzdWJwcm9jZXNzJ3Mgc3RkaW4uICBJZiB1c2VkIGl0IG11c3QgYmUgYSBieXRlIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgotICAgYGB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZWBgLiAgV2hlbiB1c2VkLCB0aGUgaW50ZXJuYWwgOmNsYXNzOmBQb3BlbmAgb2JqZWN0Ci0gICBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2l0aCBgYHN0ZGluPVBJUEVgYCwgYW5kIHRoZSAqc3RkaW4qIGFyZ3VtZW50IG1heQotICAgbm90IGJlIHVzZWQgYXMgd2VsbC4KKyAgICplbmNvZGluZyogb3IgKmVycm9ycyogaXMgc3BlY2lmaWVkIG9yICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIFRydWUuICBXaGVuCisgICB1c2VkLCB0aGUgaW50ZXJuYWwgOmNsYXNzOmBQb3BlbmAgb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aXRoCisgICBgYHN0ZGluPVBJUEVgYCwgYW5kIHRoZSAqc3RkaW4qIGFyZ3VtZW50IG1heSBub3QgYmUgdXNlZCBhcyB3ZWxsLgogCiAgICBJZiAqY2hlY2sqIGlzIFRydWUsIGFuZCB0aGUgcHJvY2VzcyBleGl0cyB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlLCBhCiAgICA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4gQXR0cmlidXRlcyBvZiB0aGF0CiAgICBleGNlcHRpb24gaG9sZCB0aGUgYXJndW1lbnRzLCB0aGUgZXhpdCBjb2RlLCBhbmQgc3Rkb3V0IGFuZCBzdGRlcnIgaWYgdGhleQogICAgd2VyZSBjYXB0dXJlZC4KIAorICAgSWYgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmUgc3BlY2lmaWVkLCBvciAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBUcnVlLAorICAgZmlsZSBvYmplY3RzIGZvciBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgdXNpbmcgdGhlCisgICBzcGVjaWZpZWQgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogb3IgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZGVmYXVsdC4KKyAgIE90aGVyd2lzZSwgZmlsZSBvYmplY3RzIGFyZSBvcGVuZWQgaW4gYmluYXJ5IG1vZGUuCisKICAgIEV4YW1wbGVzOjoKIAogICAgICAgPj4+IHN1YnByb2Nlc3MucnVuKFsibHMiLCAiLWwiXSkgICMgZG9lc24ndCBjYXB0dXJlIG91dHB1dApAQCAtODUsNiArOTEsMTAgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgICAgIEFkZGVkICplbmNvZGluZyogYW5kICplcnJvcnMqIHBhcmFtZXRlcnMKKwogLi4gY2xhc3M6OiBDb21wbGV0ZWRQcm9jZXNzCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgZnJvbSA6ZnVuYzpgcnVuYCwgcmVwcmVzZW50aW5nIGEgcHJvY2VzcyB0aGF0IGhhcyBmaW5pc2hlZC4KQEAgLTEwNCw4ICsxMTQsOCBAQAogICAgLi4gYXR0cmlidXRlOjogc3Rkb3V0CiAKICAgICAgIENhcHR1cmVkIHN0ZG91dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBBIGJ5dGVzIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgotICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gTm9uZSBpZiBzdGRvdXQKLSAgICAgIHdhcyBub3QgY2FwdHVyZWQuCisgICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYW4gZW5jb2Rpbmcgb3IgZXJyb3JzLiBOb25lIGlmIHN0ZG91dCB3YXMgbm90CisgICAgICBjYXB0dXJlZC4KIAogICAgICAgSWYgeW91IHJhbiB0aGUgcHJvY2VzcyB3aXRoIGBgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUYGAsIHN0ZG91dCBhbmQKICAgICAgIHN0ZGVyciB3aWxsIGJlIGNvbWJpbmVkIGluIHRoaXMgYXR0cmlidXRlLCBhbmQgOmF0dHI6YHN0ZGVycmAgd2lsbCBiZQpAQCAtMTE0LDggKzEyNCw4IEBACiAgICAuLiBhdHRyaWJ1dGU6OiBzdGRlcnIKIAogICAgICAgQ2FwdHVyZWQgc3RkZXJyIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIEEgYnl0ZXMgc2VxdWVuY2UsIG9yIGEgc3RyaW5nIGlmCi0gICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYGB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZWBgLiBOb25lIGlmIHN0ZGVycgotICAgICAgd2FzIG5vdCBjYXB0dXJlZC4KKyAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBhbiBlbmNvZGluZyBvciBlcnJvcnMuIE5vbmUgaWYgc3RkZXJyIHdhcyBub3QKKyAgICAgIGNhcHR1cmVkLgogCiAgICAuLiBtZXRob2Q6OiBjaGVja19yZXR1cm5jb2RlKCkKIApAQCAtMjQ5LDE5ICsyNTksMjIgQEAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBzdWJwcm9jZXNzIG1vZHVsZQogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYEZhbHNlYGAgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQKLSAgICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzIGJpbmFyeSBzdHJlYW1zLCBhbmQgbm8gbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcwotICAgZG9uZS4KKyAgIElmICplbmNvZGluZyogb3IgKmVycm9ycyogYXJlIHNwZWNpZmllZCwgb3IgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgVHJ1ZSwKKyAgIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCogYW5kICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGluIHRleHQKKyAgIG1vZGUgdXNpbmcgdGhlICplbmNvZGluZyogYW5kICplcnJvcnMqIHNwZWNpZmllZCBpbiB0aGUgY2FsbCBvciB0aGUKKyAgIGRlZmF1bHRzIGZvciA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgLgogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlc2UgZmlsZSBvYmplY3RzCi0gICB3aWxsIGJlIG9wZW5lZCBhcyB0ZXh0IHN0cmVhbXMgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZQotICAgdXNpbmcgdGhlIGVuY29kaW5nIHJldHVybmVkIGJ5IDpmdW5jOmBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCi0gICA8bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nPmAuICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycwotICAgYGAnXG4nYGAgaW4gdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yCi0gICA6ZGF0YTpgb3MubGluZXNlcGAuICBGb3IgKnN0ZG91dCogYW5kICpzdGRlcnIqLCBhbGwgbGluZSBlbmRpbmdzIGluIHRoZQotICAgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvIGBgJ1xuJ2BgLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQotICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBjbGFzcyB3aGVuIHRoZSAqbmV3bGluZSoKLSAgIGFyZ3VtZW50IHRvIGl0cyBjb25zdHJ1Y3RvciBpcyBgYE5vbmVgYC4KKyAgIEZvciAqc3RkaW4qLCBsaW5lIGVuZGluZyBjaGFyYWN0ZXJzIGBgJ1xuJ2BgIGluIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZAorICAgdG8gdGhlIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IgOmRhdGE6YG9zLmxpbmVzZXBgLiBGb3IgKnN0ZG91dCogYW5kICpzdGRlcnIqLAorICAgYWxsIGxpbmUgZW5kaW5ncyBpbiB0aGUgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvIGBgJ1xuJ2BgLiAgRm9yIG1vcmUKKyAgIGluZm9ybWF0aW9uIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBjbGFzcworICAgd2hlbiB0aGUgKm5ld2xpbmUqIGFyZ3VtZW50IHRvIGl0cyBjb25zdHJ1Y3RvciBpcyBgYE5vbmVgYC4KKworICAgSWYgdGV4dCBtb2RlIGlzIG5vdCB1c2VkLCAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogd2lsbCBiZSBvcGVuZWQgYXMKKyAgIGJpbmFyeSBzdHJlYW1zLiBObyBlbmNvZGluZyBvciBsaW5lIGVuZGluZyBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzLgogCiAgICAuLiBub3RlOjoKIApAQCAtMzA2LDcgKzMxOSw4IEBACiAgICAgICAgICAgICAgICAgIHN0ZGVycj1Ob25lLCBwcmVleGVjX2ZuPU5vbmUsIGNsb3NlX2Zkcz1UcnVlLCBzaGVsbD1GYWxzZSwgXAogICAgICAgICAgICAgICAgICBjd2Q9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgXAogICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbz1Ob25lLCBjcmVhdGlvbmZsYWdzPTAsIHJlc3RvcmVfc2lnbmFscz1UcnVlLCBcCi0gICAgICAgICAgICAgICAgIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLCBwYXNzX2Zkcz0oKSkKKyAgICAgICAgICAgICAgICAgc3RhcnRfbmV3X3Nlc3Npb249RmFsc2UsIHBhc3NfZmRzPSgpLCAqLCBcCisgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKQogCiAgICBFeGVjdXRlIGEgY2hpbGQgcHJvZ3JhbSBpbiBhIG5ldyBwcm9jZXNzLiAgT24gUE9TSVgsIHRoZSBjbGFzcyB1c2VzCiAgICA6bWV0aDpgb3MuZXhlY3ZwYC1saWtlIGJlaGF2aW9yIHRvIGV4ZWN1dGUgdGhlIGNoaWxkIHByb2dyYW0uICBPbiBXaW5kb3dzLApAQCAtNDgyLDEwICs0OTYsMTQgQEAKIAogICAgLi4gX3NpZGUtYnktc2lkZSBhc3NlbWJseTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2lkZS1ieS1TaWRlX0Fzc2VtYmx5CiAKLSAgIElmICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgVHJ1ZWBgLCB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqCi0gICBhbmQgKnN0ZGVyciogYXJlIG9wZW5lZCBhcyB0ZXh0IHN0cmVhbXMgaW4gdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUsIGFzCi0gICBkZXNjcmliZWQgYWJvdmUgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AsIG90aGVyd2lzZSB0aGV5IGFyZQotICAgb3BlbmVkIGFzIGJpbmFyeSBzdHJlYW1zLgorICAgSWYgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmUgc3BlY2lmaWVkLCB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqCisgICBhbmQgKnN0ZGVyciogYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGFuZAorICAgKmVycm9ycyosIGFzIGRlc2NyaWJlZCBhYm92ZSBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYC4gSWYKKyAgICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgVHJ1ZWBgLCB0aGV5IGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIHdpdGggZGVmYXVsdAorICAgZW5jb2RpbmcuIE90aGVyd2lzZSwgdGhleSBhcmUgb3BlbmVkIGFzIGJpbmFyeSBzdHJlYW1zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgICplbmNvZGluZyogYW5kICplcnJvcnMqIHdlcmUgYWRkZWQuCiAKICAgIElmIGdpdmVuLCAqc3RhcnR1cGluZm8qIHdpbGwgYmUgYSA6Y2xhc3M6YFNUQVJUVVBJTkZPYCBvYmplY3QsIHdoaWNoIGlzCiAgICBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcgYGBDcmVhdGVQcm9jZXNzYGAgZnVuY3Rpb24uCkBAIC01MDIsNiArNTIwLDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgY29udGV4dCBtYW5hZ2VyIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBQb3BlbiBkZXN0cnVjdG9yIG5vdyBlbWl0cyBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2FybmluZyBpZiB0aGUgY2hpbGQKKyAgICAgIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4KKwogCiBFeGNlcHRpb25zCiBeXl5eXl5eXl5eCkBAIC01OTcsMTEgKzYxOSwxMiBAQAogICAgSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbSBzdGRvdXQgYW5kIHN0ZGVyciwKICAgIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbAogICAgKmlucHV0KiBhcmd1bWVudCBzaG91bGQgYmUgZGF0YSB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvcgotICAgYGBOb25lYGAsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLiAgVGhlIHR5cGUgb2YgKmlucHV0KgotICAgbXVzdCBiZSBieXRlcyBvciwgaWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogd2FzIGBgVHJ1ZWBgLCBhIHN0cmluZy4KKyAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4gIElmIHN0cmVhbXMgd2VyZSBvcGVuZWQgaW4KKyAgIHRleHQgbW9kZSwgKmlucHV0KiBtdXN0IGJlIGEgc3RyaW5nLiAgT3RoZXJ3aXNlLCBpdCBtdXN0IGJlIGJ5dGVzLgogCiAgICA6bWV0aDpgY29tbXVuaWNhdGVgIHJldHVybnMgYSB0dXBsZSBgYChzdGRvdXRfZGF0YSwgc3RkZXJyX2RhdGEpYGAuCi0gICBUaGUgZGF0YSB3aWxsIGJlIGJ5dGVzIG9yLCBpZiAqdW5pdmVyc2FsX25ld2xpbmVzKiB3YXMgYGBUcnVlYGAsIHN0cmluZ3MuCisgICBUaGUgZGF0YSB3aWxsIGJlIHN0cmluZ3MgaWYgc3RyZWFtcyB3ZXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGU7IG90aGVyd2lzZSwKKyAgIGJ5dGVzLgogCiAgICBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gc2VuZCBkYXRhIHRvIHRoZSBwcm9jZXNzJ3Mgc3RkaW4sIHlvdSBuZWVkIHRvIGNyZWF0ZQogICAgdGhlIFBvcGVuIG9iamVjdCB3aXRoIGBgc3RkaW49UElQRWBgLiAgU2ltaWxhcmx5LCB0byBnZXQgYW55dGhpbmcgb3RoZXIgdGhhbgpAQCAtNjY4LDI4ICs2OTEsMzAgQEAKIC4uIGF0dHJpYnV0ZTo6IFBvcGVuLnN0ZGluCiAKICAgIElmIHRoZSAqc3RkaW4qIGFyZ3VtZW50IHdhcyA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGEgd3JpdGVhYmxlCi0gICBzdHJlYW0gb2JqZWN0IGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcGVuYC4gSWYgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqCi0gICBhcmd1bWVudCB3YXMgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZQotICAgc3RyZWFtLiBJZiB0aGUgKnN0ZGluKiBhcmd1bWVudCB3YXMgbm90IDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMKLSAgIGBgTm9uZWBgLgorICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIElmIHRoZSAqZW5jb2RpbmcqIG9yICplcnJvcnMqCisgICBhcmd1bWVudHMgd2VyZSBzcGVjaWZpZWQgb3IgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwKKyAgIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZSAqc3RkaW4qCisgICBhcmd1bWVudCB3YXMgbm90IDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAuCiAKIAogLi4gYXR0cmlidXRlOjogUG9wZW4uc3Rkb3V0CiAKICAgIElmIHRoZSAqc3Rkb3V0KiBhcmd1bWVudCB3YXMgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIHJlYWRhYmxlCiAgICBzdHJlYW0gb2JqZWN0IGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcGVuYC4gUmVhZGluZyBmcm9tIHRoZSBzdHJlYW0gcHJvdmlkZXMKLSAgIG91dHB1dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBJZiB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyogYXJndW1lbnQgd2FzCi0gICBgYFRydWVgYCwgdGhlIHN0cmVhbSBpcyBhIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlIHN0cmVhbS4gSWYgdGhlCi0gICAqc3Rkb3V0KiBhcmd1bWVudCB3YXMgbm90IDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAuCisgICBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICplbmNvZGluZyogb3IgKmVycm9ycyogYXJndW1lbnRzIHdlcmUKKyAgIHNwZWNpZmllZCBvciB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyogYXJndW1lbnQgd2FzIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtIGlzIGEKKyAgIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlIHN0cmVhbS4gSWYgdGhlICpzdGRvdXQqIGFyZ3VtZW50IHdhcyBub3QKKyAgIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAuCiAKIAogLi4gYXR0cmlidXRlOjogUG9wZW4uc3RkZXJyCiAKICAgIElmIHRoZSAqc3RkZXJyKiBhcmd1bWVudCB3YXMgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIHJlYWRhYmxlCiAgICBzdHJlYW0gb2JqZWN0IGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcGVuYC4gUmVhZGluZyBmcm9tIHRoZSBzdHJlYW0gcHJvdmlkZXMKLSAgIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBJZiB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyogYXJndW1lbnQgd2FzCi0gICBgYFRydWVgYCwgdGhlIHN0cmVhbSBpcyBhIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlIHN0cmVhbS4gSWYgdGhlCi0gICAqc3RkZXJyKiBhcmd1bWVudCB3YXMgbm90IDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAuCisgICBlcnJvciBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICplbmNvZGluZyogb3IgKmVycm9ycyogYXJndW1lbnRzCisgICB3ZXJlIHNwZWNpZmllZCBvciB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyogYXJndW1lbnQgd2FzIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtCisgICBpcyBhIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlIHN0cmVhbS4gSWYgdGhlICpzdGRlcnIqIGFyZ3VtZW50IHdhcworICAgbm90IDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAuCiAKIC4uIHdhcm5pbmc6OgogCkBAIC04ODIsNyArOTA3LDkgQEAKICAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCiAKIAotLi4gZnVuY3Rpb246OiBjaGVja19vdXRwdXQoYXJncywgKiwgc3RkaW49Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQuCiAKQEAgLTExMzgsNyArMTE2NSw3IEBACiAgICBSZXR1cm4gYGAoc3RhdHVzLCBvdXRwdXQpYGAgb2YgZXhlY3V0aW5nICpjbWQqIGluIGEgc2hlbGwuCiAKICAgIEV4ZWN1dGUgdGhlIHN0cmluZyAqY21kKiBpbiBhIHNoZWxsIHdpdGggOm1ldGg6YFBvcGVuLmNoZWNrX291dHB1dGAgYW5kCi0gICByZXR1cm4gYSAyLXR1cGxlIGBgKHN0YXR1cywgb3V0cHV0KWBgLiBVbml2ZXJzYWwgbmV3bGluZXMgbW9kZSBpcyB1c2VkOworICAgcmV0dXJuIGEgMi10dXBsZSBgYChzdGF0dXMsIG91dHB1dClgYC4gVGhlIGxvY2FsZSBlbmNvZGluZyBpcyB1c2VkOwogICAgc2VlIHRoZSBub3RlcyBvbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCBmb3IgbW9yZSBkZXRhaWxzLgogCiAgICBBIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQgZnJvbSB0aGUgb3V0cHV0LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3lzLnJzdCBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKaW5kZXggZWQ1ZGIwNS4uNTViNzQ0ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3lzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeXMucnN0CkBAIC0yNTYsNyArMjU2LDcgQEAKICAgIChkZWZhdWx0aW5nIHRvIHplcm8pLCBvciBhbm90aGVyIHR5cGUgb2Ygb2JqZWN0LiAgSWYgaXQgaXMgYW4gaW50ZWdlciwgemVybwogICAgaXMgY29uc2lkZXJlZCAic3VjY2Vzc2Z1bCB0ZXJtaW5hdGlvbiIgYW5kIGFueSBub256ZXJvIHZhbHVlIGlzIGNvbnNpZGVyZWQKICAgICJhYm5vcm1hbCB0ZXJtaW5hdGlvbiIgYnkgc2hlbGxzIGFuZCB0aGUgbGlrZS4gIE1vc3Qgc3lzdGVtcyByZXF1aXJlIGl0IHRvIGJlCi0gICBpbiB0aGUgcmFuZ2UgMC0xMjcsIGFuZCBwcm9kdWNlIHVuZGVmaW5lZCByZXN1bHRzIG90aGVyd2lzZS4gIFNvbWUgc3lzdGVtcworICAgaW4gdGhlIHJhbmdlIDAtLTEyNywgYW5kIHByb2R1Y2UgdW5kZWZpbmVkIHJlc3VsdHMgb3RoZXJ3aXNlLiAgU29tZSBzeXN0ZW1zCiAgICBoYXZlIGEgY29udmVudGlvbiBmb3IgYXNzaWduaW5nIHNwZWNpZmljIG1lYW5pbmdzIHRvIHNwZWNpZmljIGV4aXQgY29kZXMsIGJ1dAogICAgdGhlc2UgYXJlIGdlbmVyYWxseSB1bmRlcmRldmVsb3BlZDsgVW5peCBwcm9ncmFtcyBnZW5lcmFsbHkgdXNlIDIgZm9yIGNvbW1hbmQKICAgIGxpbmUgc3ludGF4IGVycm9ycyBhbmQgMSBmb3IgYWxsIG90aGVyIGtpbmQgb2YgZXJyb3JzLiAgSWYgYW5vdGhlciB0eXBlIG9mCkBAIC0yNjksNiArMjY5LDExIEBACiAgICB0aGUgcHJvY2VzcyB3aGVuIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCwgYW5kIHRoZSBleGNlcHRpb24gaXMgbm90CiAgICBpbnRlcmNlcHRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIElmIGFuIGVycm9yIG9jY3VycyBpbiB0aGUgY2xlYW51cCBhZnRlciB0aGUgUHl0aG9uIGludGVycHJldGVyCisgICAgICBoYXMgY2F1Z2h0IDpleGM6YFN5c3RlbUV4aXRgIChzdWNoIGFzIGFuIGVycm9yIGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEKKyAgICAgIGluIHRoZSBzdGFuZGFyZCBzdHJlYW1zKSwgdGhlIGV4aXQgc3RhdHVzIGlzIGNoYW5nZWQgdG8gMTIwLgorCiAKIC4uIGRhdGE6OiBmbGFncwogCkBAIC00MjMsMjUgKzQyOCw0MiBAQAogCiAuLiBmdW5jdGlvbjo6IGdldGZpbGVzeXN0ZW1lbmNvZGluZygpCiAKLSAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdXNlZCB0byBjb252ZXJ0IFVuaWNvZGUgZmlsZW5hbWVzIGludG8KLSAgIHN5c3RlbSBmaWxlIG5hbWVzLiBUaGUgcmVzdWx0IHZhbHVlIGRlcGVuZHMgb24gdGhlIG9wZXJhdGluZyBzeXN0ZW06CisgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gY29udmVydCBiZXR3ZWVuIFVuaWNvZGUKKyAgIGZpbGVuYW1lcyBhbmQgYnl0ZXMgZmlsZW5hbWVzLiBGb3IgYmVzdCBjb21wYXRpYmlsaXR5LCBzdHIgc2hvdWxkIGJlCisgICB1c2VkIGZvciBmaWxlbmFtZXMgaW4gYWxsIGNhc2VzLCBhbHRob3VnaCByZXByZXNlbnRpbmcgZmlsZW5hbWVzIGFzIGJ5dGVzCisgICBpcyBhbHNvIHN1cHBvcnRlZC4gRnVuY3Rpb25zIGFjY2VwdGluZyBvciByZXR1cm5pbmcgZmlsZW5hbWVzIHNob3VsZCBzdXBwb3J0CisgICBlaXRoZXIgc3RyIG9yIGJ5dGVzIGFuZCBpbnRlcm5hbGx5IGNvbnZlcnQgdG8gdGhlIHN5c3RlbSdzIHByZWZlcnJlZAorICAgcmVwcmVzZW50YXRpb24uCisKKyAgIFRoaXMgZW5jb2RpbmcgaXMgYWx3YXlzIEFTQ0lJLWNvbXBhdGlibGUuCisKKyAgIDpmdW5jOmBvcy5mc2VuY29kZWAgYW5kIDpmdW5jOmBvcy5mc2RlY29kZWAgc2hvdWxkIGJlIHVzZWQgdG8gZW5zdXJlIHRoYXQKKyAgIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFuZCBlcnJvcnMgbW9kZSBhcmUgdXNlZC4KIAogICAgKiBPbiBNYWMgT1MgWCwgdGhlIGVuY29kaW5nIGlzIGBgJ3V0Zi04J2BgLgogCi0gICAqIE9uIFVuaXgsIHRoZSBlbmNvZGluZyBpcyB0aGUgdXNlcidzIHByZWZlcmVuY2UgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQgb2YKLSAgICAgbmxfbGFuZ2luZm8oQ09ERVNFVCkuCisgICAqIE9uIFVuaXgsIHRoZSBlbmNvZGluZyBpcyB0aGUgbG9jYWxlIGVuY29kaW5nLgogCi0gICAqIE9uIFdpbmRvd3MgTlQrLCBmaWxlIG5hbWVzIGFyZSBVbmljb2RlIG5hdGl2ZWx5LCBzbyBubyBjb252ZXJzaW9uIGlzCi0gICAgIHBlcmZvcm1lZC4gOmZ1bmM6YGdldGZpbGVzeXN0ZW1lbmNvZGluZ2Agc3RpbGwgcmV0dXJucyBgYCdtYmNzJ2BgLCBhcwotICAgICB0aGlzIGlzIHRoZSBlbmNvZGluZyB0aGF0IGFwcGxpY2F0aW9ucyBzaG91bGQgdXNlIHdoZW4gdGhleSBleHBsaWNpdGx5Ci0gICAgIHdhbnQgdG8gY29udmVydCBVbmljb2RlIHN0cmluZ3MgdG8gYnl0ZSBzdHJpbmdzIHRoYXQgYXJlIGVxdWl2YWxlbnQgd2hlbgotICAgICB1c2VkIGFzIGZpbGUgbmFtZXMuCi0KLSAgICogT24gV2luZG93cyA5eCwgdGhlIGVuY29kaW5nIGlzIGBgJ21iY3MnYGAuCisgICAqIE9uIFdpbmRvd3MsIHRoZSBlbmNvZGluZyBtYXkgYmUgYGAndXRmLTgnYGAgb3IgYGAnbWJjcydgYCwgZGVwZW5kaW5nCisgICAgIG9uIHVzZXIgY29uZmlndXJhdGlvbi4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIDpmdW5jOmBnZXRmaWxlc3lzdGVtZW5jb2RpbmdgIHJlc3VsdCBjYW5ub3QgYmUgYGBOb25lYGAgYW55bW9yZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFdpbmRvd3MgaXMgbm8gbG9uZ2VyIGd1YXJhbnRlZWQgdG8gcmV0dXJuIGBgJ21iY3MnYGAuIFNlZSA6cGVwOmA1MjlgCisgICAgICBhbmQgOmZ1bmM6YF9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZ2AgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKy4uIGZ1bmN0aW9uOjogZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycygpCisKKyAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZXJyb3IgbW9kZSB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBVbmljb2RlIGZpbGVuYW1lcworICAgYW5kIGJ5dGVzIGZpbGVuYW1lcy4gVGhlIGVuY29kaW5nIG5hbWUgaXMgcmV0dXJuZWQgZnJvbQorICAgOmZ1bmM6YGdldGZpbGVzeXN0ZW1lbmNvZGluZ2AuCisKKyAgIDpmdW5jOmBvcy5mc2VuY29kZWAgYW5kIDpmdW5jOmBvcy5mc2RlY29kZWAgc2hvdWxkIGJlIHVzZWQgdG8gZW5zdXJlIHRoYXQKKyAgIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFuZCBlcnJvcnMgbW9kZSBhcmUgdXNlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIGZ1bmN0aW9uOjogZ2V0cmVmY291bnQob2JqZWN0KQogCkBAIC01MzAsMjYgKzU1MiwxNSBAQAogICAgUmV0dXJuIGEgbmFtZWQgdHVwbGUgZGVzY3JpYmluZyB0aGUgV2luZG93cyB2ZXJzaW9uCiAgICBjdXJyZW50bHkgcnVubmluZy4gIFRoZSBuYW1lZCBlbGVtZW50cyBhcmUgKm1ham9yKiwgKm1pbm9yKiwKICAgICpidWlsZCosICpwbGF0Zm9ybSosICpzZXJ2aWNlX3BhY2sqLCAqc2VydmljZV9wYWNrX21pbm9yKiwKLSAgICpzZXJ2aWNlX3BhY2tfbWFqb3IqLCAqc3VpdGVfbWFzayosIGFuZCAqcHJvZHVjdF90eXBlKi4KLSAgICpzZXJ2aWNlX3BhY2sqIGNvbnRhaW5zIGEgc3RyaW5nIHdoaWxlIGFsbCBvdGhlciB2YWx1ZXMgYXJlCisgICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCAqcHJvZHVjdF90eXBlKiBhbmQKKyAgICpwbGF0Zm9ybV92ZXJzaW9uKi4gKnNlcnZpY2VfcGFjayogY29udGFpbnMgYSBzdHJpbmcsCisgICAqcGxhdGZvcm1fdmVyc2lvbiogYSAzLXR1cGxlIGFuZCBhbGwgb3RoZXIgdmFsdWVzIGFyZQogICAgaW50ZWdlcnMuIFRoZSBjb21wb25lbnRzIGNhbiBhbHNvIGJlIGFjY2Vzc2VkIGJ5IG5hbWUsIHNvCiAgICBgYHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpWzBdYGAgaXMgZXF1aXZhbGVudCB0bwogICAgYGBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKS5tYWpvcmBgLiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByaW9yCiAgICB2ZXJzaW9ucywgb25seSB0aGUgZmlyc3QgNSBlbGVtZW50cyBhcmUgcmV0cmlldmFibGUgYnkgaW5kZXhpbmcuCiAKLSAgICpwbGF0Zm9ybSogbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKLQotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IENvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBsYXRmb3JtICAgICAgICAgICAgICAgIHwKLSAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09KwotICAgfCA6Y29uc3Q6YDAgKFZFUl9QTEFURk9STV9XSU4zMnMpYCAgICAgICAgfCBXaW4zMnMgb24gV2luZG93cyAzLjEgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAxIChWRVJfUExBVEZPUk1fV0lOMzJfV0lORE9XUylgIHwgV2luZG93cyA5NS85OC9NRSAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgMiAoVkVSX1BMQVRGT1JNX1dJTjMyX05UKWAgICAgICB8IFdpbmRvd3MgTlQvMjAwMC9YUC94NjQgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YDMgKFZFUl9QTEFURk9STV9XSU4zMl9DRSlgICAgICAgfCBXaW5kb3dzIENFICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICpwbGF0Zm9ybSogd2lsbCBiZSA6Y29uc3Q6YDIgKFZFUl9QTEFURk9STV9XSU4zMl9OVClgLgogCiAgICAqcHJvZHVjdF90eXBlKiBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogCkBAIC01NjUsMTcgKzU3NiwyMyBAQAogICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSBkb21haW4gY29udHJvbGxlci4gICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAotCiAgICBUaGlzIGZ1bmN0aW9uIHdyYXBzIHRoZSBXaW4zMiA6YzpmdW5jOmBHZXRWZXJzaW9uRXhgIGZ1bmN0aW9uOyBzZWUgdGhlCiAgICBNaWNyb3NvZnQgZG9jdW1lbnRhdGlvbiBvbiA6YzpmdW5jOmBPU1ZFUlNJT05JTkZPRVhgIGZvciBtb3JlIGluZm9ybWF0aW9uCiAgICBhYm91dCB0aGVzZSBmaWVsZHMuCiAKKyAgICpwbGF0Zm9ybV92ZXJzaW9uKiByZXR1cm5zIHRoZSBhY2N1cmF0ZSBtYWpvciB2ZXJzaW9uLCBtaW5vciB2ZXJzaW9uIGFuZAorICAgYnVpbGQgbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0sIHJhdGhlciB0aGFuIHRoZSB2ZXJzaW9uIHRoYXQKKyAgIGlzIGJlaW5nIGVtdWxhdGVkIGZvciB0aGUgcHJvY2Vzcy4gSXQgaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBsb2dnaW5nIHJhdGhlcgorICAgdGhhbiBmb3IgZmVhdHVyZSBkZXRlY3Rpb24uCisKICAgIEF2YWlsYWJpbGl0eTogV2luZG93cy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIENoYW5nZWQgdG8gYSBuYW1lZCB0dXBsZSBhbmQgYWRkZWQgKnNlcnZpY2VfcGFja19taW5vciosCiAgICAgICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCBhbmQgKnByb2R1Y3RfdHlwZSouCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcGxhdGZvcm1fdmVyc2lvbioKIAogLi4gZnVuY3Rpb246OiBnZXRfY29yb3V0aW5lX3dyYXBwZXIoKQogCkBAIC0xMDgyLDE4ICsxMDk5LDYgQEAKICAgICAgIHRodXMgbWF5IG5vdCBiZSBhdmFpbGFibGUgaW4gYWxsIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuCiAKIAotLi4gZnVuY3Rpb246OiBzZXR0c2NkdW1wKG9uX2ZsYWcpCi0KLSAgIEFjdGl2YXRlIGR1bXBpbmcgb2YgVk0gbWVhc3VyZW1lbnRzIHVzaW5nIHRoZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyLCBpZgotICAgKm9uX2ZsYWcqIGlzIHRydWUuIERlYWN0aXZhdGUgdGhlc2UgZHVtcHMgaWYgKm9uX2ZsYWcqIGlzIG9mZi4gVGhlIGZ1bmN0aW9uIGlzCi0gICBhdmFpbGFibGUgb25seSBpZiBQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggYGAtLXdpdGgtdHNjYGAuIFRvIHVuZGVyc3RhbmQKLSAgIHRoZSBvdXRwdXQgb2YgdGhpcyBkdW1wLCByZWFkIDpmaWxlOmBQeXRob24vY2V2YWwuY2AgaW4gdGhlIFB5dGhvbiBzb3VyY2VzLgotCi0gICAuLiBpbXBsLWRldGFpbDo6Ci0gICAgICBUaGlzIGZ1bmN0aW9uIGlzIGludGltYXRlbHkgYm91bmQgdG8gQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZAotICAgICAgdGh1cyBub3QgbGlrZWx5IHRvIGJlIGltcGxlbWVudGVkIGVsc2V3aGVyZS4KLQotCiAuLiBmdW5jdGlvbjo6IHNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKQogCiAgICBBbGxvd3MgaW50ZXJjZXB0aW5nIGNyZWF0aW9uIG9mIDp0ZXJtOmBjb3JvdXRpbmVgIG9iamVjdHMgKG9ubHkgb25lcyB0aGF0CkBAIC0xMTMzLDYgKzExMzgsMTggQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQgb24gYSBwcm92aXNpb25hbCBiYXNpcyAoc2VlIDpwZXA6YDQxMWAKICAgICAgIGZvciBkZXRhaWxzLikgIFVzZSBpdCBvbmx5IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCiAKKy4uIGZ1bmN0aW9uOjogX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKCkKKworICAgQ2hhbmdlcyB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGVuY29kaW5nIGFuZCBlcnJvcnMgbW9kZSB0byAnbWJjcycgYW5kCisgICAncmVwbGFjZScgcmVzcGVjdGl2ZWx5LCBmb3IgY29uc2lzdGVuY3kgd2l0aCB2ZXJzaW9ucyBvZiBQeXRob24gcHJpb3IgdG8gMy42LgorCisgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZGVmaW5pbmcgdGhlIDplbnZ2YXI6YFBZVEhPTkxFR0FDWVdJTkRPV1NGU0VOQ09ESU5HYAorICAgZW52aXJvbm1lbnQgdmFyaWFibGUgYmVmb3JlIGxhdW5jaGluZyBQeXRob24uCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFNlZSA6cGVwOmA1MjlgIGZvciBtb3JlIGRldGFpbHMuCiAKIC4uIGRhdGE6OiBzdGRpbgogICAgICAgICAgIHN0ZG91dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdCBiL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QKaW5kZXggNmJhMDk0ZC4uMjkxNzdhMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0CkBAIC0xNjQsNyArMTY0LDcgQEAKIC4uIGZ1bmN0aW9uOjogZ2V0X3B5dGhvbl92ZXJzaW9uKCkKIAogICAgUmV0dXJuIHRoZSBgYE1BSk9SLk1JTk9SYGAgUHl0aG9uIHZlcnNpb24gbnVtYmVyIGFzIGEgc3RyaW5nLiAgU2ltaWxhciB0bwotICAgYGBzeXMudmVyc2lvbls6M11gYC4KKyAgIGBgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdYGAuCiAKIAogLi4gZnVuY3Rpb246OiBnZXRfcGxhdGZvcm0oKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdCBiL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKaW5kZXggYjk1MGU0MS4uZjljNTE1MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CkBAIC00Myw2ICs0MywxNyBAQAogICAgOmV4YzpgRU9GRXJyb3JgIHdoZW4gdGhlIGVuZCBvZiB0aGUgY29ubmVjdGlvbiBpcyByZWFkLCBiZWNhdXNlIHRoZXkgY2FuIHJldHVybgogICAgYW4gZW1wdHkgc3RyaW5nIGZvciBvdGhlciByZWFzb25zLiAgU2VlIHRoZSBpbmRpdmlkdWFsIGRlc2NyaXB0aW9ucyBiZWxvdy4KIAorICAgQSA6Y2xhc3M6YFRlbG5ldGAgb2JqZWN0IGlzIGEgY29udGV4dCBtYW5hZ2VyIGFuZCBjYW4gYmUgdXNlZCBpbiBhCisgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgV2hlbiB0aGUgOmtleXdvcmQ6YHdpdGhgIGJsb2NrIGVuZHMsIHRoZQorICAgOm1ldGg6YGNsb3NlYCBtZXRob2QgaXMgY2FsbGVkOjoKKworICAgICAgID4+PiBmcm9tIHRlbG5ldGxpYiBpbXBvcnQgVGVsbmV0CisgICAgICAgPj4+IHdpdGggVGVsbmV0KCdsb2NhbGhvc3QnLCAyMykgYXMgdG46CisgICAgICAgLi4uICAgICB0bi5pbnRlcmFjdCgpCisgICAgICAgLi4uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IENvbnRleHQgbWFuYWdlciBzdXBwb3J0IGFkZGVkCisKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0IGIvRG9jL2xpYnJhcnkvdGVzdC5yc3QKaW5kZXggMmVhOWMyNy4uNzExNGNkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVzdC5yc3QKQEAgLTU4Miw2ICs1ODIsNDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKKy4uIGZ1bmN0aW9uOjogY2hlY2tfX2FsbF9fKHRlc3RfY2FzZSwgbW9kdWxlLCBuYW1lX29mX21vZHVsZT1Ob25lLCBleHRyYT0oKSwgYmxhY2tsaXN0PSgpKQorCisgICBBc3NlcnQgdGhhdCB0aGUgYGBfX2FsbF9fYGAgdmFyaWFibGUgb2YgKm1vZHVsZSogY29udGFpbnMgYWxsIHB1YmxpYyBuYW1lcy4KKworICAgVGhlIG1vZHVsZSdzIHB1YmxpYyBuYW1lcyAoaXRzIEFQSSkgYXJlIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkKKyAgIGJhc2VkIG9uIHdoZXRoZXIgdGhleSBtYXRjaCB0aGUgcHVibGljIG5hbWUgY29udmVudGlvbiBhbmQgd2VyZSBkZWZpbmVkIGluCisgICAqbW9kdWxlKi4KKworICAgVGhlICpuYW1lX29mX21vZHVsZSogYXJndW1lbnQgY2FuIHNwZWNpZnkgKGFzIGEgc3RyaW5nIG9yIHR1cGxlIHRoZXJlb2YpIHdoYXQKKyAgIG1vZHVsZShzKSBhbiBBUEkgY291bGQgYmUgZGVmaW5lZCBpbiBpbiBvcmRlciB0byBiZSBkZXRlY3RlZCBhcyBhIHB1YmxpYworICAgQVBJLiBPbmUgY2FzZSBmb3IgdGhpcyBpcyB3aGVuICptb2R1bGUqIGltcG9ydHMgcGFydCBvZiBpdHMgcHVibGljIEFQSSBmcm9tCisgICBvdGhlciBtb2R1bGVzLCBwb3NzaWJseSBhIEMgYmFja2VuZCAobGlrZSBgYGNzdmBgIGFuZCBpdHMgYGBfY3N2YGApLgorCisgICBUaGUgKmV4dHJhKiBhcmd1bWVudCBjYW4gYmUgYSBzZXQgb2YgbmFtZXMgdGhhdCB3b3VsZG4ndCBvdGhlcndpc2UgYmUgYXV0b21hdGljYWxseQorICAgZGV0ZWN0ZWQgYXMgInB1YmxpYyIsIGxpa2Ugb2JqZWN0cyB3aXRob3V0IGEgcHJvcGVyIGBgX19tb2R1bGVfX2BgCisgICBhdHRyaWJ1dGUuIElmIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIG9uZXMuCisKKyAgIFRoZSAqYmxhY2tsaXN0KiBhcmd1bWVudCBjYW4gYmUgYSBzZXQgb2YgbmFtZXMgdGhhdCBtdXN0IG5vdCBiZSB0cmVhdGVkIGFzIHBhcnQgb2YKKyAgIHRoZSBwdWJsaWMgQVBJIGV2ZW4gdGhvdWdoIHRoZWlyIG5hbWVzIGluZGljYXRlIG90aGVyd2lzZS4KKworICAgRXhhbXBsZSB1c2U6OgorCisgICAgICBpbXBvcnQgYmFyCisgICAgICBpbXBvcnQgZm9vCisgICAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisgICAgICBjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZm9vKQorCisgICAgICBjbGFzcyBPdGhlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgIGV4dHJhID0geydCQVJfQ09OU1QnLCAnRk9PX0NPTlNUJ30KKyAgICAgICAgICAgICAgYmxhY2tsaXN0ID0geydiYXonfSAgIyBVbmRvY3VtZW50ZWQgbmFtZS4KKyAgICAgICAgICAgICAgIyBiYXIgaW1wb3J0cyBwYXJ0IG9mIGl0cyBBUEkgZnJvbSBfYmFyLgorICAgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBiYXIsICgnYmFyJywgJ19iYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIFRoZSA6bW9kOmB0ZXN0LnN1cHBvcnRgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3NlczoKIAogLi4gY2xhc3M6OiBUcmFuc2llbnRSZXNvdXJjZShleGMsICoqa3dhcmdzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZS5yc3QgYi9Eb2MvbGlicmFyeS90aW1lLnJzdAppbmRleCBlNjYyNmYyLi5hZTE3ZjZmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1lLnJzdApAQCAtODMsNiArODMsMTAgQEAKICAgICAgYW5kIDphdHRyOmB0bV96b25lYCBhdHRyaWJ1dGVzIHdoZW4gcGxhdGZvcm0gc3VwcG9ydHMgY29ycmVzcG9uZGluZwogICAgICBgYHN0cnVjdCB0bWBgIG1lbWJlcnMuCiAKKyAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgVGhlIDpjbGFzczpgc3RydWN0X3RpbWVgIGF0dHJpYnV0ZXMgOmF0dHI6YHRtX2dtdG9mZmAgYW5kIDphdHRyOmB0bV96b25lYAorICAgICBhcmUgbm93IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLgorCiAqIFVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBjb252ZXJ0IGJldHdlZW4gdGltZSByZXByZXNlbnRhdGlvbnM6CiAKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtNTY2LDEwICs1NzAsNiBAQAogICAgOmNsYXNzOmBzdHJ1Y3RfdGltZWAsIG9yIGhhdmluZyBlbGVtZW50cyBvZiB0aGUgd3JvbmcgdHlwZSwgYQogICAgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCiAKLSAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgOmF0dHI6YHRtX2dtdG9mZmAgYW5kIDphdHRyOmB0bV96b25lYCBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgb24gcGxhdGZvcm1zCi0gICAgIHdpdGggQyBsaWJyYXJ5IHN1cHBvcnRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIGluIGBgc3RydWN0IHRtYGAuCi0KIC4uIGZ1bmN0aW9uOjogdGltZSgpCiAKICAgIFJldHVybiB0aGUgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCBhcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlci4KQEAgLTYzNywxMSArNjM3LDExIEBACiAgICAgICAgICBpdCBpcyBwb3NzaWJsZSB0byByZWZlciB0byBGZWJydWFyeSAyOS4KIAogICAgICAgOnNhbXA6YE17bX0ue259LntkfWAKLSAgICAgICAgIFRoZSAqZCondGggZGF5ICgwIDw9ICpkKiA8PSA2KSBvciB3ZWVrICpuKiBvZiBtb250aCAqbSogb2YgdGhlIHllYXIgKDEKKyAgICAgICAgIFRoZSAqZCondGggZGF5ICgwIDw9ICpkKiA8PSA2KSBvZiB3ZWVrICpuKiBvZiBtb250aCAqbSogb2YgdGhlIHllYXIgKDEKICAgICAgICAgIDw9ICpuKiA8PSA1LCAxIDw9ICptKiA8PSAxMiwgd2hlcmUgd2VlayA1IG1lYW5zICJ0aGUgbGFzdCAqZCogZGF5IGluCiAgICAgICAgICBtb250aCAqbSoiIHdoaWNoIG1heSBvY2N1ciBpbiBlaXRoZXIgdGhlIGZvdXJ0aCBvciB0aGUgZmlmdGgKICAgICAgICAgIHdlZWspLiBXZWVrIDEgaXMgdGhlIGZpcnN0IHdlZWsgaW4gd2hpY2ggdGhlICpkKid0aCBkYXkgb2NjdXJzLiBEYXkKLSAgICAgICAgIHplcm8gaXMgU3VuZGF5LgorICAgICAgICAgemVybyBpcyBhIFN1bmRheS4KIAogICAgICAgYGB0aW1lYGAgaGFzIHRoZSBzYW1lIGZvcm1hdCBhcyBgYG9mZnNldGBgIGV4Y2VwdCB0aGF0IG5vIGxlYWRpbmcgc2lnbgogICAgICAgKCctJyBvciAnKycpIGlzIGFsbG93ZWQuIFRoZSBkZWZhdWx0LCBpZiB0aW1lIGlzIG5vdCBnaXZlbiwgaXMgMDI6MDA6MDAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1laXQucnN0IGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAppbmRleCA1N2E0ODM0Li41YmFlMzNiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1laXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKQEAgLTEwMCw4ICsxMDAsOCBAQAogICAgY2FuIGJlIGNvbnRyb2xsZWQgYnkgcGFzc2luZyBhIG5hbWVzcGFjZSB0byAqZ2xvYmFscyouCiAKICAgIFRvIG1lYXN1cmUgdGhlIGV4ZWN1dGlvbiB0aW1lIG9mIHRoZSBmaXJzdCBzdGF0ZW1lbnQsIHVzZSB0aGUgOm1ldGg6YC50aW1laXRgCi0gICBtZXRob2QuICBUaGUgOm1ldGg6YC5yZXBlYXRgIG1ldGhvZCBpcyBhIGNvbnZlbmllbmNlIHRvIGNhbGwgOm1ldGg6YC50aW1laXRgCi0gICBtdWx0aXBsZSB0aW1lcyBhbmQgcmV0dXJuIGEgbGlzdCBvZiByZXN1bHRzLgorICAgbWV0aG9kLiAgVGhlIDptZXRoOmAucmVwZWF0YCBhbmQgOm1ldGg6YC5hdXRvcmFuZ2VgIG1ldGhvZHMgYXJlIGNvbnZlbmllbmNlCisgICBtZXRob2RzIHRvIGNhbGwgOm1ldGg6YC50aW1laXRgIG11bHRpcGxlIHRpbWVzLgogCiAgICBUaGUgZXhlY3V0aW9uIHRpbWUgb2YgKnNldHVwKiBpcyBleGNsdWRlZCBmcm9tIHRoZSBvdmVyYWxsIHRpbWVkIGV4ZWN1dGlvbiBydW4uCiAKQEAgLTEzNCw2ICsxMzQsMjMgQEAKICAgICAgICAgICAgIHRpbWVpdC5UaW1lcignZm9yIGkgaW4gcmFuZ2UoMTApOiBvY3QoaSknLCAnZ2MuZW5hYmxlKCknKS50aW1laXQoKQogCiAKKyAgICAuLiBtZXRob2Q6OiBUaW1lci5hdXRvcmFuZ2UoY2FsbGJhY2s9Tm9uZSkKKworICAgICAgIEF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIGhvdyBtYW55IHRpbWVzIHRvIGNhbGwgOm1ldGg6YC50aW1laXRgLgorCisgICAgICAgVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgY2FsbHMgOm1ldGg6YC50aW1laXRgIHJlcGVhdGVkbHkKKyAgICAgICBzbyB0aGF0IHRoZSB0b3RhbCB0aW1lID49IDAuMiBzZWNvbmQsIHJldHVybmluZyB0aGUgZXZlbnR1YWwKKyAgICAgICAobnVtYmVyIG9mIGxvb3BzLCB0aW1lIHRha2VuIGZvciB0aGF0IG51bWJlciBvZiBsb29wcykuIEl0IGNhbGxzCisgICAgICAgOm1ldGg6YC50aW1laXRgIHdpdGggKm51bWJlciogc2V0IHRvIHN1Y2Nlc3NpdmUgcG93ZXJzIG9mIHRlbiAoMTAsCisgICAgICAgMTAwLCAxMDAwLCAuLi4pIHVwIHRvIGEgbWF4aW11bSBvZiBvbmUgYmlsbGlvbiwgdW50aWwgdGhlIHRpbWUgdGFrZW4KKyAgICAgICBpcyBhdCBsZWFzdCAwLjIgc2Vjb25kLCBvciB0aGUgbWF4aW11bSBpcyByZWFjaGVkLgorCisgICAgICAgIElmICpjYWxsYmFjayogaXMgZ2l2ZW4gYW5kIGlzIG5vdCAqTm9uZSosIGl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyCisgICAgICAgIGVhY2ggdHJpYWwgd2l0aCB0d28gYXJndW1lbnRzOiBgYGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbilgYC4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAgICAuLiBtZXRob2Q6OiBUaW1lci5yZXBlYXQocmVwZWF0PTMsIG51bWJlcj0xMDAwMDAwKQogCiAgICAgICBDYWxsIDptZXRoOmAudGltZWl0YCBhIGZldyB0aW1lcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdCBiL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdAppbmRleCA0MWYyMGRkLi4xMWVkNzU1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGtpbnRlci50aXgucnN0CkBAIC0xMCw2ICsxMCwxMCBAQAogCiAuLiBpbmRleDo6IHNpbmdsZTogVGl4CiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgIFRoaXMgVGsgZXh0ZW5zaW9uIGlzIHVubWFpbnRhaW5lZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIG5ldyBjb2RlLiAgVXNlCisgICA6bW9kOmB0a2ludGVyLnR0a2AgaW5zdGVhZC4KKwogLS0tLS0tLS0tLS0tLS0KIAogVGhlIDptb2Q6YHRraW50ZXIudGl4YCAoVGsgSW50ZXJmYWNlIEV4dGVuc2lvbikgbW9kdWxlIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CmluZGV4IDNjMWQ5YmIuLjA2NmVlOTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdApAQCAtMjkxLDYgKzI5MSwyMCBAQAogICAgICAgb2YgdHVwbGVzLiBFYWNoIHR1cGxlIHNob3VsZCBiZSBhIDQtdHVwbGUgd2l0aCBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLAogICAgICAgbGluZSBhcyB0aGUgZWxlbWVudHMuCiAKKyAgIC4uIG1ldGhvZDo6IGZvcm1hdCgpCisKKyAgICAgIFJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgcmVhZHkgZm9yIHByaW50aW5nLiAgRWFjaCBzdHJpbmcgaW4gdGhlCisgICAgICByZXN1bHRpbmcgbGlzdCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBmcmFtZSBmcm9tIHRoZSBzdGFjay4KKyAgICAgIEVhY2ggc3RyaW5nIGVuZHMgaW4gYSBuZXdsaW5lOyB0aGUgc3RyaW5ncyBtYXkgY29udGFpbiBpbnRlcm5hbAorICAgICAgbmV3bGluZXMgYXMgd2VsbCwgZm9yIHRob3NlIGl0ZW1zIHdpdGggc291cmNlIHRleHQgbGluZXMuCisKKyAgICAgIEZvciBsb25nIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBmcmFtZSBhbmQgbGluZSwgdGhlIGZpcnN0IGZldworICAgICAgcmVwZXRpdGlvbnMgYXJlIHNob3duLCBmb2xsb3dlZCBieSBhIHN1bW1hcnkgbGluZSBzdGF0aW5nIHRoZSBleGFjdAorICAgICAgbnVtYmVyIG9mIGZ1cnRoZXIgcmVwZXRpdGlvbnMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBMb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBmcmFtZXMgYXJlIG5vdyBhYmJyZXZpYXRlZC4KKwogCiA6Y2xhc3M6YEZyYW1lU3VtbWFyeWAgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdCBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdAppbmRleCAzYTBiMWUwLi5mNTZmMjdiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CkBAIC0zNTksMTAgKzM1OSwzMiBAQAogICAgU2VlIGFsc28gdGhlIDpmdW5jOmBnZXRfb2JqZWN0X3RyYWNlYmFja2AgZnVuY3Rpb24uCiAKIAorRG9tYWluRmlsdGVyCiteXl5eXl5eXl5eXl4KKworLi4gY2xhc3M6OiBEb21haW5GaWx0ZXIoaW5jbHVzaXZlOiBib29sLCBkb21haW46IGludCkKKworICAgRmlsdGVyIHRyYWNlcyBvZiBtZW1vcnkgYmxvY2tzIGJ5IHRoZWlyIGFkZHJlc3Mgc3BhY2UgKGRvbWFpbikuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBhdHRyaWJ1dGU6OiBpbmNsdXNpdmUKKworICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBtYXRjaCBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgaW4gdGhlIGFkZHJlc3Mgc3BhY2UgOmF0dHI6YGRvbWFpbmAuCisKKyAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgRmFsc2VgYCAoZXhjbHVkZSksIG1hdGNoIG1lbW9yeSBibG9ja3Mgbm90IGFsbG9jYXRlZAorICAgICAgaW4gdGhlIGFkZHJlc3Mgc3BhY2UgOmF0dHI6YGRvbWFpbmAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRvbWFpbgorCisgICAgICBBZGRyZXNzIHNwYWNlIG9mIGEgbWVtb3J5IGJsb2NrIChgYGludGBgKS4gUmVhZC1vbmx5IHByb3BlcnR5LgorCisKIEZpbHRlcgogXl5eXl5eCiAKLS4uIGNsYXNzOjogRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZmlsZW5hbWVfcGF0dGVybjogc3RyLCBsaW5lbm86IGludD1Ob25lLCBhbGxfZnJhbWVzOiBib29sPUZhbHNlKQorLi4gY2xhc3M6OiBGaWx0ZXIoaW5jbHVzaXZlOiBib29sLCBmaWxlbmFtZV9wYXR0ZXJuOiBzdHIsIGxpbmVubzogaW50PU5vbmUsIGFsbF9mcmFtZXM6IGJvb2w9RmFsc2UsIGRvbWFpbjogaW50PU5vbmUpCiAKICAgIEZpbHRlciBvbiB0cmFjZXMgb2YgbWVtb3J5IGJsb2Nrcy4KIApAQCAtMzgyLDkgKzQwNCwxNyBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFRoZSBgYCcucHlvJ2BgIGZpbGUgZXh0ZW5zaW9uIGlzIG5vIGxvbmdlciByZXBsYWNlZCB3aXRoIGBgJy5weSdgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSA6YXR0cjpgZG9tYWluYCBhdHRyaWJ1dGUuCisKKworICAgLi4gYXR0cmlidXRlOjogZG9tYWluCisKKyAgICAgIEFkZHJlc3Mgc3BhY2Ugb2YgYSBtZW1vcnkgYmxvY2sgKGBgaW50YGAgb3IgYGBOb25lYGApLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBpbmNsdXNpdmUKIAotICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBvbmx5IHRyYWNlIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCisgICAgICBJZiAqaW5jbHVzaXZlKiBpcyBgYFRydWVgYCAoaW5jbHVkZSksIG9ubHkgbWF0Y2ggbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQKICAgICAgIGluIGEgZmlsZSB3aXRoIGEgbmFtZSBtYXRjaGluZyA6YXR0cjpgZmlsZW5hbWVfcGF0dGVybmAgYXQgbGluZSBudW1iZXIKICAgICAgIDphdHRyOmBsaW5lbm9gLgogCkBAIC0zOTksNyArNDI5LDcgQEAKIAogICAgLi4gYXR0cmlidXRlOjogZmlsZW5hbWVfcGF0dGVybgogCi0gICAgICBGaWxlbmFtZSBwYXR0ZXJuIG9mIHRoZSBmaWx0ZXIgKGBgc3RyYGApLgorICAgICAgRmlsZW5hbWUgcGF0dGVybiBvZiB0aGUgZmlsdGVyIChgYHN0cmBgKS4gUmVhZC1vbmx5IHByb3BlcnR5LgogCiAgICAuLiBhdHRyaWJ1dGU6OiBhbGxfZnJhbWVzCiAKQEAgLTQ2MiwxNCArNDkyLDE3IEBACiAgICAuLiBtZXRob2Q6OiBmaWx0ZXJfdHJhY2VzKGZpbHRlcnMpCiAKICAgICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNuYXBzaG90YCBpbnN0YW5jZSB3aXRoIGEgZmlsdGVyZWQgOmF0dHI6YHRyYWNlc2AKLSAgICAgIHNlcXVlbmNlLCAqZmlsdGVycyogaXMgYSBsaXN0IG9mIDpjbGFzczpgRmlsdGVyYCBpbnN0YW5jZXMuICBJZiAqZmlsdGVycyoKLSAgICAgIGlzIGFuIGVtcHR5IGxpc3QsIHJldHVybiBhIG5ldyA6Y2xhc3M6YFNuYXBzaG90YCBpbnN0YW5jZSB3aXRoIGEgY29weSBvZgotICAgICAgdGhlIHRyYWNlcy4KKyAgICAgIHNlcXVlbmNlLCAqZmlsdGVycyogaXMgYSBsaXN0IG9mIDpjbGFzczpgRG9tYWluRmlsdGVyYCBhbmQKKyAgICAgIDpjbGFzczpgRmlsdGVyYCBpbnN0YW5jZXMuICBJZiAqZmlsdGVycyogaXMgYW4gZW1wdHkgbGlzdCwgcmV0dXJuIGEgbmV3CisgICAgICA6Y2xhc3M6YFNuYXBzaG90YCBpbnN0YW5jZSB3aXRoIGEgY29weSBvZiB0aGUgdHJhY2VzLgogCiAgICAgICBBbGwgaW5jbHVzaXZlIGZpbHRlcnMgYXJlIGFwcGxpZWQgYXQgb25jZSwgYSB0cmFjZSBpcyBpZ25vcmVkIGlmIG5vCiAgICAgICBpbmNsdXNpdmUgZmlsdGVycyBtYXRjaCBpdC4gQSB0cmFjZSBpcyBpZ25vcmVkIGlmIGF0IGxlYXN0IG9uZSBleGNsdXNpdmUKICAgICAgIGZpbHRlciBtYXRjaGVzIGl0LgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgOmNsYXNzOmBEb21haW5GaWx0ZXJgIGluc3RhbmNlcyBhcmUgbm93IGFsc28gYWNjZXB0ZWQgaW4gKmZpbHRlcnMqLgorCiAKICAgIC4uIGNsYXNzbWV0aG9kOjogbG9hZChmaWxlbmFtZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CmluZGV4IDExOGJjNGMuLjg5OGI5NWEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKQEAgLTU1LDYgKzU1LDEyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGBgbmFtZXNwYWNlYGAgZWxlbWVudCBvZiB0aGUgcmV0dXJuZWQKKyAgICAgIHR1cGxlIGhhcyBjaGFuZ2VkLiAgTm93IGFuIGluc2VydGlvbi1vcmRlci1wcmVzZXJ2aW5nIG1hcHBpbmcgaXMKKyAgICAgIHVzZWQgd2hlbiB0aGUgbWV0YWNsYXNzIGRvZXMgbm90IGhhdmUgYSBgYF9fcHJlcGFyZV9fYGAgbWV0aG9kLAorCiAuLiBzZWVhbHNvOjoKIAogICAgOnJlZjpgbWV0YWNsYXNzZXNgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90eXBpbmcucnN0IGIvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdAppbmRleCBjMjRjNzE1Li5mZGEzZGQ1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90eXBpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKQEAgLTEwLDcgKzEwLDcgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBtb2R1bGUgc3VwcG9ydHMgdHlwZSBoaW50cyBhcyBzcGVjaWZpZWQgYnkgOnBlcDpgNDg0YC4gIFRoZSBtb3N0CitUaGlzIG1vZHVsZSBzdXBwb3J0cyB0eXBlIGhpbnRzIGFzIHNwZWNpZmllZCBieSA6cGVwOmA0ODRgIGFuZCA6cGVwOmA1MjZgLiAgVGhlIG1vc3QKIGZ1bmRhbWVudGFsIHN1cHBvcnQgY29uc2lzdHMgb2YgdGhlIHR5cGUgOmNsYXNzOmBBbnlgLCA6Y2xhc3M6YFVuaW9uYCwKIDpjbGFzczpgVHVwbGVgLCA6Y2xhc3M6YENhbGxhYmxlYCwgOmNsYXNzOmBUeXBlVmFyYCwgYW5kCiA6Y2xhc3M6YEdlbmVyaWNgLiAgRm9yIGZ1bGwgc3BlY2lmaWNhdGlvbiBwbGVhc2Ugc2VlIDpwZXA6YDQ4NGAuICBGb3IKQEAgLTU4Nyw3ICs1ODcsMTMgQEAKIAogICAgQW4gYWxpYXMgdG8gOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2l6ZWRgCiAKLS4uIGNsYXNzOjogQWJzdHJhY3RTZXQoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10pCisuLiBjbGFzczo6IENvbGxlY3Rpb24oU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkNvbGxlY3Rpb25gCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBjbGFzczo6IEFic3RyYWN0U2V0KFNpemVkLCBDb2xsZWN0aW9uW1RfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2V0YC4KIApAQCAtNTk1LDcgKzYwMSw3IEBACiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2V0YC4KIAotLi4gY2xhc3M6OiBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZVtLVF0sIENvbnRhaW5lcltLVF0sIEdlbmVyaWNbVlRfY29dKQorLi4gY2xhc3M6OiBNYXBwaW5nKFNpemVkLCBDb2xsZWN0aW9uW0tUXSwgR2VuZXJpY1tWVF9jb10pCiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NYXBwaW5nYC4KIApAQCAtNjAzLDcgKzYwOSw3IEBACiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AuCiAKLS4uIGNsYXNzOjogU2VxdWVuY2UoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10pCisuLiBjbGFzczo6IFNlcXVlbmNlKFJldmVyc2libGVbVF9jb10sIENvbGxlY3Rpb25bVF9jb10pCiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZWAuCiAKQEAgLTY3MCw2ICs2NzYsMTIgQEAKIAogICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5Bc3luY0l0ZXJhdG9yYC4KIAorLi4gY2xhc3M6OiBDb250ZXh0TWFuYWdlcihHZW5lcmljW1RfY29dKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBjbGFzczo6IERpY3QoZGljdCwgTXV0YWJsZU1hcHBpbmdbS1QsIFZUXSkKIAogICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBkaWN0YC4KQEAgLTc5Nyw3ICs4MDksNyBAQAogCiAuLiBmdW5jdGlvbjo6IGdldF90eXBlX2hpbnRzKG9iaikKIAotICAgUmV0dXJuIHR5cGUgaGludHMgZm9yIGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdC4KKyAgIFJldHVybiB0eXBlIGhpbnRzIGZvciBhIGNsYXNzLCBtb2R1bGUsIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QuCiAKICAgIFRoaXMgaXMgb2Z0ZW4gdGhlIHNhbWUgYXMgYGBvYmouX19hbm5vdGF0aW9uc19fYGAsIGJ1dCBpdCBoYW5kbGVzCiAgICBmb3J3YXJkIHJlZmVyZW5jZXMgZW5jb2RlZCBhcyBzdHJpbmcgbGl0ZXJhbHMsIGFuZCBpZiBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuZG9jLnJzdCBiL0RvYy9saWJyYXJ5L3VuZG9jLnJzdAppbmRleCAyMDgzMGUyLi4yNDQ0MDgwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bmRvYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5kb2MucnN0CkBAIC0yMCw3ICsyMCw3IEBACiBkb2N1bWVudGVkIGJleW9uZCB0aGlzIG1lbnRpb24uICBUaGVyZSdzIGxpdHRsZSBuZWVkIHRvIGRvY3VtZW50IHRoZXNlLgogCiA6bW9kOmBudHBhdGhgCi0gICAtLS0gSW1wbGVtZW50YXRpb24gb2YgOm1vZDpgb3MucGF0aGAgb24gV2luMzIsIFdpbjY0LCBhbmQgV2luQ0UgcGxhdGZvcm1zLgorICAgLS0tIEltcGxlbWVudGF0aW9uIG9mIDptb2Q6YG9zLnBhdGhgIG9uIFdpbjMyIGFuZCBXaW42NCBwbGF0Zm9ybXMuCiAKIDptb2Q6YHBvc2l4cGF0aGAKICAgIC0tLSBJbXBsZW1lbnRhdGlvbiBvZiA6bW9kOmBvcy5wYXRoYCBvbiBQT1NJWC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdCBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAppbmRleCA2Y2Q4MTMyLi42NDMxODA5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CkBAIC0xNyw4ICsxNyw4IEBACiAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgKFVDRCkgd2hpY2gKIGRlZmluZXMgY2hhcmFjdGVyIHByb3BlcnRpZXMgZm9yIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMuIFRoZSBkYXRhIGNvbnRhaW5lZCBpbgotdGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gOC4wLjAKLTxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2Q+YF8uCit0aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA5LjAuMAorPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzkuMC4wL3VjZD5gXy4KIAogVGhlIG1vZHVsZSB1c2VzIHRoZSBzYW1lIG5hbWVzIGFuZCBzeW1ib2xzIGFzIGRlZmluZWQgYnkgVW5pY29kZQogU3RhbmRhcmQgQW5uZXggIzQ0LCBgIlVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIgpAQCAtMTY4LDYgKzE2OCw2IEBACiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL05hbWVBbGlhc2VzLnR4dAorLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzkuMC4wL3VjZC9OYW1lQWxpYXNlcy50eHQKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy85LjAuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CmluZGV4IGMxM2YwOTUuLjFiYzFlZGIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CkBAIC0yNjIsNiArMjYyLDM0IEBACiAgICAgdXNlZCB0byBzZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhZnRlciBpdCBpcyBjcmVhdGVkLiBTZWUgdGhlCiAgICAgOm1ldGg6YGNvbmZpZ3VyZV9tb2NrYCBtZXRob2QgZm9yIGRldGFpbHMuCiAKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBBc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZCgpCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX29uY2UoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIEFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgZXhhY3RseSBvbmNlLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWRfb25jZSgpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdtZXRob2QnIHRvIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpCiAKQEAgLTMzOSw3ICszNjcsNyBAQAogICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogCi0gICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygpCisgICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygqLCByZXR1cm5fdmFsdWU9RmFsc2UsIHNpZGVfZWZmZWN0PUZhbHNlKQogCiAgICAgICAgIFRoZSByZXNldF9tb2NrIG1ldGhvZCByZXNldHMgYWxsIHRoZSBjYWxsIGF0dHJpYnV0ZXMgb24gYSBtb2NrIG9iamVjdDoKIApAQCAtMzUxLDEyICszNzksMjAgQEAKICAgICAgICAgICAgID4+PiBtb2NrLmNhbGxlZAogICAgICAgICAgICAgRmFsc2UKIAorICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgICBBZGRlZCB0d28ga2V5d29yZCBvbmx5IGFyZ3VtZW50IHRvIHRoZSByZXNldF9tb2NrIGZ1bmN0aW9uLgorCiAgICAgICAgIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVyZSB5b3Ugd2FudCB0byBtYWtlIGEgc2VyaWVzIG9mIGFzc2VydGlvbnMgdGhhdAogICAgICAgICByZXVzZSB0aGUgc2FtZSBvYmplY3QuIE5vdGUgdGhhdCA6bWV0aDpgcmVzZXRfbW9ja2AgKmRvZXNuJ3QqIGNsZWFyIHRoZQogICAgICAgICByZXR1cm4gdmFsdWUsIDphdHRyOmBzaWRlX2VmZmVjdGAgb3IgYW55IGNoaWxkIGF0dHJpYnV0ZXMgeW91IGhhdmUKLSAgICAgICAgc2V0IHVzaW5nIG5vcm1hbCBhc3NpZ25tZW50LiBDaGlsZCBtb2NrcyBhbmQgdGhlIHJldHVybiB2YWx1ZSBtb2NrCisgICAgICAgIHNldCB1c2luZyBub3JtYWwgYXNzaWdubWVudCBieSBkZWZhdWx0LiBJbiBjYXNlIHlvdSB3YW50IHRvIHJlc2V0CisgICAgICAgICpyZXR1cm5fdmFsdWUqIG9yIDphdHRyOmBzaWRlX2VmZmVjdGAsIHRoZW4gcGFzcyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICBwYXJhbWV0ZXIgYXMgYGBUcnVlYGAuIENoaWxkIG1vY2tzIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG1vY2sKICAgICAgICAgKGlmIGFueSkgYXJlIHJlc2V0IGFzIHdlbGwuCiAKKyAgICAgICAgLi4gbm90ZTo6ICpyZXR1cm5fdmFsdWUqLCBhbmQgOmF0dHI6YHNpZGVfZWZmZWN0YCBhcmUga2V5d29yZCBvbmx5CisgICAgICAgICAgICAgICAgICBhcmd1bWVudC4KKwogCiAgICAgLi4gbWV0aG9kOjogbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CmluZGV4IDljY2E4ODEuLmRkMTg4YjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKQEAgLTEzOTMsOSArMTM5Myw5IEBACiAKICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciA6bWV0aDpgdGVhckRvd25gIHRvIGNsZWFudXAgcmVzb3VyY2VzCiAgICAgICB1c2VkIGR1cmluZyB0aGUgdGVzdC4gRnVuY3Rpb25zIHdpbGwgYmUgY2FsbGVkIGluIHJldmVyc2Ugb3JkZXIgdG8gdGhlCi0gICAgICBvcmRlciB0aGV5IGFyZSBhZGRlZCAoTElGTykuIFRoZXkgYXJlIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMgYW5kCi0gICAgICBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW50byA6bWV0aDpgYWRkQ2xlYW51cGAgd2hlbiB0aGV5IGFyZQotICAgICAgYWRkZWQuCisgICAgICBvcmRlciB0aGV5IGFyZSBhZGRlZCAoOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgKS4gIFRoZXkKKyAgICAgIGFyZSBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW50bworICAgICAgOm1ldGg6YGFkZENsZWFudXBgIHdoZW4gdGhleSBhcmUgYWRkZWQuCiAKICAgICAgIElmIDptZXRoOmBzZXRVcGAgZmFpbHMsIG1lYW5pbmcgdGhhdCA6bWV0aDpgdGVhckRvd25gIGlzIG5vdCBjYWxsZWQsCiAgICAgICB0aGVuIGFueSBjbGVhbnVwIGZ1bmN0aW9ucyBhZGRlZCB3aWxsIHN0aWxsIGJlIGNhbGxlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CmluZGV4IDAwN2U0ZGEuLmE2NmIxYzMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdApAQCAtMTE0LDggKzExNCw5IEBACiAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICB8IGlmIHByZXNlbnQgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBTZWUgc2VjdGlvbiA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0Ci0gICBvYmplY3QuCisgICBSZWFkaW5nIHRoZSA6YXR0cjpgcG9ydGAgYXR0cmlidXRlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZgorICAgYW4gaW52YWxpZCBwb3J0IGlzIHNwZWNpZmllZCBpbiB0aGUgVVJMLiAgU2VlIHNlY3Rpb24KKyAgIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQgb2JqZWN0LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgSVB2NiBVUkwgcGFyc2luZyBjYXBhYmlsaXRpZXMuCkBAIC0xMjUsNiArMTI2LDEwIEBACiAgICAgICBmYWxzZSksIGluIGFjY29yZGFuY2Ugd2l0aCA6cmZjOmAzOTg2YC4gIFByZXZpb3VzbHksIGEgd2hpdGVsaXN0IG9mCiAgICAgICBzY2hlbWVzIHRoYXQgc3VwcG9ydCBmcmFnbWVudHMgZXhpc3RlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIE91dC1vZi1yYW5nZSBwb3J0IG51bWJlcnMgbm93IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpbnN0ZWFkIG9mCisgICAgICByZXR1cm5pbmcgOmNvbnN0OmBOb25lYC4KKwogCiAuLiBmdW5jdGlvbjo6IHBhcnNlX3FzKHFzLCBrZWVwX2JsYW5rX3ZhbHVlcz1GYWxzZSwgc3RyaWN0X3BhcnNpbmc9RmFsc2UsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0ncmVwbGFjZScpCiAKQEAgLTIyNyw4ICsyMzIsMTMgQEAKICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgaWYgcHJlc2VudCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBTZWUgc2VjdGlvbiA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0Ci0gICBvYmplY3QuCisgICBSZWFkaW5nIHRoZSA6YXR0cjpgcG9ydGAgYXR0cmlidXRlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZgorICAgYW4gaW52YWxpZCBwb3J0IGlzIHNwZWNpZmllZCBpbiB0aGUgVVJMLiAgU2VlIHNlY3Rpb24KKyAgIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT3V0LW9mLXJhbmdlIHBvcnQgbnVtYmVycyBub3cgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGluc3RlYWQgb2YKKyAgICAgIHJldHVybmluZyA6Y29uc3Q6YE5vbmVgLgogCiAKIC4uIGZ1bmN0aW9uOjogdXJsdW5zcGxpdChwYXJ0cykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAppbmRleCAxMjkxYWViLi40OTFiZGVkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CkBAIC0zMCwxOCArMzAsOSBAQAogICAgT3BlbiB0aGUgVVJMICp1cmwqLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEKICAgIDpjbGFzczpgUmVxdWVzdGAgb2JqZWN0LgogCi0gICAqZGF0YSogbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvIHRoZQotICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAqZGF0YSogbWF5IGFsc28gYmUgYW4KLSAgIGl0ZXJhYmxlIG9iamVjdCBhbmQgaW4gdGhhdCBjYXNlIENvbnRlbnQtTGVuZ3RoIHZhbHVlIG11c3QgYmUgc3BlY2lmaWVkIGluCi0gICB0aGUgaGVhZGVycy4gQ3VycmVudGx5IEhUVFAgcmVxdWVzdHMgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCB1c2UgKmRhdGEqOyB0aGUKLSAgIEhUVFAgcmVxdWVzdCB3aWxsIGJlIGEgUE9TVCBpbnN0ZWFkIG9mIGEgR0VUIHdoZW4gdGhlICpkYXRhKiBwYXJhbWV0ZXIgaXMKLSAgIHByb3ZpZGVkLgotCi0gICAqZGF0YSogc2hvdWxkIGJlIGEgYnVmZmVyIGluIHRoZSBzdGFuZGFyZAotICAgOm1pbWV0eXBlOmBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGZvcm1hdC4gIFRoZQotICAgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRha2VzIGEgbWFwcGluZyBvciBzZXF1ZW5jZSBvZgotICAgMi10dXBsZXMgYW5kIHJldHVybnMgYW4gQVNDSUkgdGV4dCBzdHJpbmcgaW4gdGhpcyBmb3JtYXQuIEl0IHNob3VsZAotICAgYmUgZW5jb2RlZCB0byBieXRlcyBiZWZvcmUgYmVpbmcgdXNlZCBhcyB0aGUgKmRhdGEqIHBhcmFtZXRlci4KKyAgICpkYXRhKiBtdXN0IGJlIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvIHRoZQorICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgU2VlIDpjbGFzczpgUmVxdWVzdGAKKyAgIGZvciBkZXRhaWxzLgogCiAgICB1cmxsaWIucmVxdWVzdCBtb2R1bGUgdXNlcyBIVFRQLzEuMSBhbmQgaW5jbHVkZXMgYGBDb25uZWN0aW9uOmNsb3NlYGAgaGVhZGVyCiAgICBpbiBpdHMgSFRUUCByZXF1ZXN0cy4KQEAgLTEyMCw2ICsxMTEsMTIgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKICAgICAgICpjb250ZXh0KiB3YXMgYWRkZWQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICpjYWZpbGUqLCAqY2FwYXRoKiBhbmQgKmNhZGVmYXVsdCogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KIAogLi4gZnVuY3Rpb246OiBpbnN0YWxsX29wZW5lcihvcGVuZXIpCiAKQEAgLTE5MiwxNCArMTg5LDIxIEBACiAKICAgICp1cmwqIHNob3VsZCBiZSBhIHN0cmluZyBjb250YWluaW5nIGEgdmFsaWQgVVJMLgogCi0gICAqZGF0YSogbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBzZW5kIHRvIHRoZQotICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgQ3VycmVudGx5IEhUVFAgcmVxdWVzdHMgYXJlCi0gICB0aGUgb25seSBvbmVzIHRoYXQgdXNlICpkYXRhKjsgdGhlIEhUVFAgcmVxdWVzdCB3aWxsIGJlIGEgUE9TVCBpbnN0ZWFkIG9mIGEKLSAgIEdFVCB3aGVuIHRoZSAqZGF0YSogcGFyYW1ldGVyIGlzIHByb3ZpZGVkLiAgKmRhdGEqIHNob3VsZCBiZSBhIGJ1ZmZlciBpbiB0aGUKLSAgIHN0YW5kYXJkIDptaW1ldHlwZTpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBmb3JtYXQuCi0gICBUaGUgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRha2VzIGEgbWFwcGluZyBvciBzZXF1ZW5jZSBvZgotICAgMi10dXBsZXMgYW5kIHJldHVybnMgYW4gQVNDSUkgc3RyaW5nIGluIHRoaXMgZm9ybWF0LiBJdCBzaG91bGQgYmUKLSAgIGVuY29kZWQgdG8gYnl0ZXMgYmVmb3JlIGJlaW5nIHVzZWQgYXMgdGhlICpkYXRhKiBwYXJhbWV0ZXIuCisgICAqZGF0YSogbXVzdCBiZSBhbiBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gc2VuZCB0byB0aGUKKyAgIHNlcnZlciwgb3IgYGBOb25lYGAgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIEN1cnJlbnRseSBIVFRQCisgICByZXF1ZXN0cyBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IHVzZSAqZGF0YSouICBUaGUgc3VwcG9ydGVkIG9iamVjdAorICAgdHlwZXMgaW5jbHVkZSBieXRlcywgZmlsZS1saWtlIG9iamVjdHMsIGFuZCBpdGVyYWJsZXMuICBJZiBubworICAgYGBDb250ZW50LUxlbmd0aGBgIG5vciBgYFRyYW5zZmVyLUVuY29kaW5nYGAgaGVhZGVyIGZpZWxkCisgICBoYXMgYmVlbiBwcm92aWRlZCwgOmNsYXNzOmBIVFRQSGFuZGxlcmAgd2lsbCBzZXQgdGhlc2UgaGVhZGVycyBhY2NvcmRpbmcKKyAgIHRvIHRoZSB0eXBlIG9mICpkYXRhKi4gIGBgQ29udGVudC1MZW5ndGhgYCB3aWxsIGJlIHVzZWQgdG8gc2VuZAorICAgYnl0ZXMgb2JqZWN0cywgd2hpbGUgYGBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZGBgIGFzIHNwZWNpZmllZCBpbgorICAgOnJmYzpgNzIzMGAsIFNlY3Rpb24gMy4zLjEgd2lsbCBiZSB1c2VkIHRvIHNlbmQgZmlsZXMgYW5kIG90aGVyIGl0ZXJhYmxlcy4KKworICAgRm9yIGFuIEhUVFAgUE9TVCByZXF1ZXN0IG1ldGhvZCwgKmRhdGEqIHNob3VsZCBiZSBhIGJ1ZmZlciBpbiB0aGUKKyAgIHN0YW5kYXJkIDptaW1ldHlwZTpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBmb3JtYXQuICBUaGUKKyAgIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiB0YWtlcyBhIG1hcHBpbmcgb3Igc2VxdWVuY2UKKyAgIG9mIDItdHVwbGVzIGFuZCByZXR1cm5zIGFuIEFTQ0lJIHN0cmluZyBpbiB0aGlzIGZvcm1hdC4gSXQgc2hvdWxkCisgICBiZSBlbmNvZGVkIHRvIGJ5dGVzIGJlZm9yZSBiZWluZyB1c2VkIGFzIHRoZSAqZGF0YSogcGFyYW1ldGVyLgogCiAgICAqaGVhZGVycyogc2hvdWxkIGJlIGEgZGljdGlvbmFyeSwgYW5kIHdpbGwgYmUgdHJlYXRlZCBhcyBpZgogICAgOm1ldGg6YGFkZF9oZWFkZXJgIHdhcyBjYWxsZWQgd2l0aCBlYWNoIGtleSBhbmQgdmFsdWUgYXMgYXJndW1lbnRzLgpAQCAtMjExLDggKzIxNSwxMCBAQAogICAgOm1vZDpgdXJsbGliYCdzIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcgaXMKICAgIGBgIlB5dGhvbi11cmxsaWIvMi42ImBgIChvbiBQeXRob24gMi42KS4KIAotICAgQW4gZXhhbXBsZSBvZiB1c2luZyBgYENvbnRlbnQtVHlwZWBgIGhlYWRlciB3aXRoICpkYXRhKiBhcmd1bWVudCB3b3VsZCBiZQotICAgc2VuZGluZyBhIGRpY3Rpb25hcnkgbGlrZSBgYHsiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9YGAuCisgICBBbiBhcHByb3ByaWF0ZSBgYENvbnRlbnQtVHlwZWBgIGhlYWRlciBzaG91bGQgYmUgaW5jbHVkZWQgaWYgdGhlICpkYXRhKgorICAgYXJndW1lbnQgaXMgcHJlc2VudC4gIElmIHRoaXMgaGVhZGVyIGhhcyBub3QgYmVlbiBwcm92aWRlZCBhbmQgKmRhdGEqCisgICBpcyBub3QgTm9uZSwgYGBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGBgIHdpbGwKKyAgIGJlIGFkZGVkIGFzIGEgZGVmYXVsdC4KIAogICAgVGhlIGZpbmFsIHR3byBhcmd1bWVudHMgYXJlIG9ubHkgb2YgaW50ZXJlc3QgZm9yIGNvcnJlY3QgaGFuZGxpbmcKICAgIG9mIHRoaXJkLXBhcnR5IEhUVFAgY29va2llczoKQEAgLTIzNSwxNSArMjQxLDI4IEBACiAgICAqbWV0aG9kKiBzaG91bGQgYmUgYSBzdHJpbmcgdGhhdCBpbmRpY2F0ZXMgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgdGhhdAogICAgd2lsbCBiZSB1c2VkIChlLmcuIGBgJ0hFQUQnYGApLiAgSWYgcHJvdmlkZWQsIGl0cyB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlCiAgICA6YXR0cjpgflJlcXVlc3QubWV0aG9kYCBhdHRyaWJ1dGUgYW5kIGlzIHVzZWQgYnkgOm1ldGg6YGdldF9tZXRob2QoKWAuCi0gICBTdWJjbGFzc2VzIG1heSBpbmRpY2F0ZSBhIGRlZmF1bHQgbWV0aG9kIGJ5IHNldHRpbmcgdGhlCisgICBUaGUgZGVmYXVsdCBpcyBgYCdHRVQnYGAgaWYgKmRhdGEqIGlzIGBgTm9uZWBgIG9yIGBgJ1BPU1QnYGAgb3RoZXJ3aXNlLgorICAgU3ViY2xhc3NlcyBtYXkgaW5kaWNhdGUgYSBkaWZmZXJlbnQgZGVmYXVsdCBtZXRob2QgYnkgc2V0dGluZyB0aGUKICAgIDphdHRyOmB+UmVxdWVzdC5tZXRob2RgIGF0dHJpYnV0ZSBpbiB0aGUgY2xhc3MgaXRzZWxmLgogCisgICAuLiBub3RlOjoKKyAgICAgIFRoZSByZXF1ZXN0IHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgaWYgdGhlIGRhdGEgb2JqZWN0IGlzIHVuYWJsZQorICAgICAgdG8gZGVsaXZlciBpdHMgY29udGVudCBtb3JlIHRoYW4gb25jZSAoZS5nLiBhIGZpbGUgb3IgYW4gaXRlcmFibGUKKyAgICAgIHRoYXQgY2FuIHByb2R1Y2UgdGhlIGNvbnRlbnQgb25seSBvbmNlKSBhbmQgdGhlIHJlcXVlc3QgaXMgcmV0cmllZAorICAgICAgZm9yIEhUVFAgcmVkaXJlY3RzIG9yIGF1dGhlbnRpY2F0aW9uLiAgVGhlICpkYXRhKiBpcyBzZW50IHRvIHRoZQorICAgICAgSFRUUCBzZXJ2ZXIgcmlnaHQgYXdheSBhZnRlciB0aGUgaGVhZGVycy4gIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yCisgICAgICBhIDEwMC1jb250aW51ZSBleHBlY3RhdGlvbiBpbiB0aGUgbGlicmFyeS4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAgYXJndW1lbnQgaXMgYWRkZWQgdG8gdGhlIFJlcXVlc3QgY2xhc3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBEZWZhdWx0IDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAgbWF5IGJlIGluZGljYXRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBEbyBub3QgcmFpc2UgYW4gZXJyb3IgaWYgdGhlIGBgQ29udGVudC1MZW5ndGhgYCBoYXMgbm90IGJlZW4KKyAgICAgIHByb3ZpZGVkIGFuZCAqZGF0YSogaXMgbmVpdGhlciBgYE5vbmVgYCBub3IgYSBieXRlcyBvYmplY3QuCisgICAgICBGYWxsIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaW5zdGVhZC4KIAogLi4gY2xhc3M6OiBPcGVuZXJEaXJlY3RvcigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucm9ib3RwYXJzZXIucnN0CmluZGV4IGJhNzAxYzMuLjdkMzE5MzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJvYm90cGFyc2VyLnJzdApAQCAtNTcsMTUgKzU3LDQxIEBACiAgICAgICBTZXRzIHRoZSB0aW1lIHRoZSBgYHJvYm90cy50eHRgYCBmaWxlIHdhcyBsYXN0IGZldGNoZWQgdG8gdGhlIGN1cnJlbnQKICAgICAgIHRpbWUuCiAKKyAgIC4uIG1ldGhvZDo6IGNyYXdsX2RlbGF5KHVzZXJhZ2VudCkKIAotVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBiYXNpYyB1c2Ugb2YgdGhlIFJvYm90RmlsZVBhcnNlciBjbGFzcy4KKyAgICAgIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBgYENyYXdsLWRlbGF5YGAgcGFyYW1ldGVyIGZyb20gYGByb2JvdHMudHh0YGAKKyAgICAgIGZvciB0aGUgKnVzZXJhZ2VudCogaW4gcXVlc3Rpb24uICBJZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciBvciBpdAorICAgICAgZG9lc24ndCBhcHBseSB0byB0aGUgKnVzZXJhZ2VudCogc3BlY2lmaWVkIG9yIHRoZSBgYHJvYm90cy50eHRgYCBlbnRyeQorICAgICAgZm9yIHRoaXMgcGFyYW1ldGVyIGhhcyBpbnZhbGlkIHN5bnRheCwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gbWV0aG9kOjogcmVxdWVzdF9yYXRlKHVzZXJhZ2VudCkKKworICAgICAgUmV0dXJucyB0aGUgY29udGVudHMgb2YgdGhlIGBgUmVxdWVzdC1yYXRlYGAgcGFyYW1ldGVyIGZyb20KKyAgICAgIGBgcm9ib3RzLnR4dGBgIGluIHRoZSBmb3JtIG9mIGEgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYAorICAgICAgYGAocmVxdWVzdHMsIHNlY29uZHMpYGAuICBJZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciBvciBpdCBkb2Vzbid0CisgICAgICBhcHBseSB0byB0aGUgKnVzZXJhZ2VudCogc3BlY2lmaWVkIG9yIHRoZSBgYHJvYm90cy50eHRgYCBlbnRyeSBmb3IgdGhpcworICAgICAgcGFyYW1ldGVyIGhhcyBpbnZhbGlkIHN5bnRheCwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVtb25zdHJhdGVzIGJhc2ljIHVzZSBvZiB0aGUgOmNsYXNzOmBSb2JvdEZpbGVQYXJzZXJgCitjbGFzczo6CiAKICAgID4+PiBpbXBvcnQgdXJsbGliLnJvYm90cGFyc2VyCiAgICA+Pj4gcnAgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKICAgID4+PiBycC5zZXRfdXJsKCJodHRwOi8vd3d3Lm11c2ktY2FsLmNvbS9yb2JvdHMudHh0IikKICAgID4+PiBycC5yZWFkKCkKKyAgID4+PiBycmF0ZSA9IHJwLnJlcXVlc3RfcmF0ZSgiKiIpCisgICA+Pj4gcnJhdGUucmVxdWVzdHMKKyAgIDMKKyAgID4+PiBycmF0ZS5zZWNvbmRzCisgICAyMAorICAgPj4+IHJwLmNyYXdsX2RlbGF5KCIqIikKKyAgIDYKICAgID4+PiBycC5jYW5fZmV0Y2goIioiLCAiaHR0cDovL3d3dy5tdXNpLWNhbC5jb20vY2dpLWJpbi9zZWFyY2g/Y2l0eT1TYW4rRnJhbmNpc2NvIikKICAgIEZhbHNlCiAgICA+Pj4gcnAuY2FuX2ZldGNoKCIqIiwgImh0dHA6Ly93d3cubXVzaS1jYWwuY29tLyIpCiAgICBUcnVlCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ZlbnYucnN0IGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKaW5kZXggYWY0YTZkMS4uNmJmMjZmZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdmVudi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKQEAgLTMxLDQ0ICszMSw1MCBAQAogCiAuLiBfdmVudi1kZWY6CiAKLS4uIG5vdGU6OiBBIHZpcnR1YWwgZW52aXJvbm1lbnQgKGFsc28gY2FsbGVkIGEgYGB2ZW52YGApIGlzIGEgUHl0aG9uCi0gICBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgbGlicmFyaWVzIGFuZCBzY3JpcHRzCi0gICBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZSBpbnN0YWxsZWQgaW4gb3RoZXIgdmlydHVhbAotICAgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMgaW5zdGFsbGVkIGluIGEgInN5c3RlbSIgUHl0aG9uLAotICAgaS5lLiBvbmUgd2hpY2ggaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgeW91ciBvcGVyYXRpbmcgc3lzdGVtLgorLi4gbm90ZTo6IEEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhIFB5dGhvbiBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbgorICAgaW50ZXJwcmV0ZXIsIGxpYnJhcmllcyBhbmQgc2NyaXB0cyBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZQorICAgaW5zdGFsbGVkIGluIG90aGVyIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMKKyAgIGluc3RhbGxlZCBpbiBhICJzeXN0ZW0iIFB5dGhvbiwgaS5lLiwgb25lIHdoaWNoIGlzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHlvdXIKKyAgIG9wZXJhdGluZyBzeXN0ZW0uCiAKLSAgIEEgdmVudiBpcyBhIGRpcmVjdG9yeSB0cmVlIHdoaWNoIGNvbnRhaW5zIFB5dGhvbiBleGVjdXRhYmxlIGZpbGVzIGFuZAotICAgb3RoZXIgZmlsZXMgd2hpY2ggaW5kaWNhdGUgdGhhdCBpdCBpcyBhIHZlbnYuCisgICBBIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYSBkaXJlY3RvcnkgdHJlZSB3aGljaCBjb250YWlucyBQeXRob24gZXhlY3V0YWJsZQorICAgZmlsZXMgYW5kIG90aGVyIGZpbGVzIHdoaWNoIGluZGljYXRlIHRoYXQgaXQgaXMgYSB2aXJ0dWFsIGVudmlyb25tZW50LgogCiAgICBDb21tb24gaW5zdGFsbGF0aW9uIHRvb2xzIHN1Y2ggYXMgYGBTZXR1cHRvb2xzYGAgYW5kIGBgcGlwYGAgd29yayBhcwotICAgZXhwZWN0ZWQgd2l0aCB2ZW52cyAtIGkuZS4gd2hlbiBhIHZlbnYgaXMgYWN0aXZlLCB0aGV5IGluc3RhbGwgUHl0aG9uCi0gICBwYWNrYWdlcyBpbnRvIHRoZSB2ZW52IHdpdGhvdXQgbmVlZGluZyB0byBiZSB0b2xkIHRvIGRvIHNvIGV4cGxpY2l0bHkuCisgICBleHBlY3RlZCB3aXRoIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBJbiBvdGhlciB3b3Jkcywgd2hlbiBhIHZpcnR1YWwKKyAgIGVudmlyb25tZW50IGlzIGFjdGl2ZSwgdGhleSBpbnN0YWxsIFB5dGhvbiBwYWNrYWdlcyBpbnRvIHRoZSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCB3aXRob3V0IG5lZWRpbmcgdG8gYmUgdG9sZCB0byBkbyBzbyBleHBsaWNpdGx5LgogCi0gICBXaGVuIGEgdmVudiBpcyBhY3RpdmUgKGkuZS4gdGhlIHZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIgaXMgcnVubmluZyksIHRoZQotICAgYXR0cmlidXRlcyA6YXR0cjpgc3lzLnByZWZpeGAgYW5kIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBiYXNlCi0gICBkaXJlY3Rvcnkgb2YgdGhlIHZlbnYsIHdoZXJlYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCi0gICA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBub24tdmVudiBQeXRob24gaW5zdGFsbGF0aW9uCi0gICB3aGljaCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHZlbnYuIElmIGEgdmVudiBpcyBub3QgYWN0aXZlLCB0aGVuCi0gICA6YXR0cjpgc3lzLnByZWZpeGAgaXMgdGhlIHNhbWUgYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCi0gICA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBpcyB0aGUgc2FtZSBhcyA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgICh0aGV5Ci0gICBhbGwgcG9pbnQgdG8gYSBub24tdmVudiBQeXRob24gaW5zdGFsbGF0aW9uKS4KKyAgIFdoZW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2ZSAoaS5lLiwgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBQeXRob24KKyAgIGludGVycHJldGVyIGlzIHJ1bm5pbmcpLCB0aGUgYXR0cmlidXRlcyA6YXR0cjpgc3lzLnByZWZpeGAgYW5kCisgICA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgYmFzZSBkaXJlY3Rvcnkgb2YgdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50LCB3aGVyZWFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAorICAgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgbm9uLXZpcnR1YWwgZW52aXJvbm1lbnQgUHl0aG9uCisgICBpbnN0YWxsYXRpb24gd2hpY2ggd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBJZiBhIHZpcnR1YWwKKyAgIGVudmlyb25tZW50IGlzIG5vdCBhY3RpdmUsIHRoZW4gOmF0dHI6YHN5cy5wcmVmaXhgIGlzIHRoZSBzYW1lIGFzCisgICA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgaXMgdGhlIHNhbWUgYXMKKyAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgKHRoZXkgYWxsIHBvaW50IHRvIGEgbm9uLXZpcnR1YWwgZW52aXJvbm1lbnQKKyAgIFB5dGhvbiBpbnN0YWxsYXRpb24pLgogCi0gICBXaGVuIGEgdmVudiBpcyBhY3RpdmUsIGFueSBvcHRpb25zIHRoYXQgY2hhbmdlIHRoZSBpbnN0YWxsYXRpb24gcGF0aCB3aWxsIGJlCi0gICBpZ25vcmVkIGZyb20gYWxsIGRpc3R1dGlscyBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHByZXZlbnQgcHJvamVjdHMgYmVpbmcKLSAgIGluYWR2ZXJ0ZW50bHkgaW5zdGFsbGVkIG91dHNpZGUgb2YgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICBXaGVuIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhY3RpdmUsIGFueSBvcHRpb25zIHRoYXQgY2hhbmdlIHRoZQorICAgaW5zdGFsbGF0aW9uIHBhdGggd2lsbCBiZSBpZ25vcmVkIGZyb20gYWxsIGRpc3R1dGlscyBjb25maWd1cmF0aW9uIGZpbGVzIHRvCisgICBwcmV2ZW50IHByb2plY3RzIGJlaW5nIGluYWR2ZXJ0ZW50bHkgaW5zdGFsbGVkIG91dHNpZGUgb2YgdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50LgogCi0gICBXaGVuIHdvcmtpbmcgaW4gYSBjb21tYW5kIHNoZWxsLCB1c2VycyBjYW4gbWFrZSBhIHZlbnYgYWN0aXZlIGJ5IHJ1bm5pbmcgYW4KLSAgIGBgYWN0aXZhdGVgYCBzY3JpcHQgaW4gdGhlIHZlbnYncyBleGVjdXRhYmxlcyBkaXJlY3RvcnkgKHRoZSBwcmVjaXNlIGZpbGVuYW1lCi0gICBpcyBzaGVsbC1kZXBlbmRlbnQpLCB3aGljaCBwcmVwZW5kcyB0aGUgdmVudidzIGRpcmVjdG9yeSBmb3IgZXhlY3V0YWJsZXMgdG8KLSAgIHRoZSBgYFBBVEhgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhlIHJ1bm5pbmcgc2hlbGwuIFRoZXJlIHNob3VsZCBiZSBubwotICAgbmVlZCBpbiBvdGhlciBjaXJjdW1zdGFuY2VzIHRvIGFjdGl2YXRlIGEgdmVudiAtLSBzY3JpcHRzIGluc3RhbGxlZCBpbnRvCi0gICB2ZW52cyBoYXZlIGEgc2hlYmFuZyBsaW5lIHdoaWNoIHBvaW50cyB0byB0aGUgdmVudidzIFB5dGhvbiBpbnRlcnByZXRlci4gVGhpcwotICAgbWVhbnMgdGhhdCB0aGUgc2NyaXB0IHdpbGwgcnVuIHdpdGggdGhhdCBpbnRlcnByZXRlciByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZQotICAgb2YgYGBQQVRIYGAuIE9uIFdpbmRvd3MsIHNoZWJhbmcgbGluZSBwcm9jZXNzaW5nIGlzIHN1cHBvcnRlZCBpZiB5b3UgaGF2ZSB0aGUKLSAgIFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyBpbnN0YWxsZWQgKHRoaXMgd2FzIGFkZGVkIHRvIFB5dGhvbiBpbiAzLjMgLSBzZWUKLSAgIDpwZXA6YDM5N2AgZm9yIG1vcmUgZGV0YWlscykuIFRodXMsIGRvdWJsZS1jbGlja2luZyBhbiBpbnN0YWxsZWQgc2NyaXB0IGluCi0gICBhIFdpbmRvd3MgRXhwbG9yZXIgd2luZG93IHNob3VsZCBydW4gdGhlIHNjcmlwdCB3aXRoIHRoZSBjb3JyZWN0IGludGVycHJldGVyCi0gICB3aXRob3V0IHRoZXJlIG5lZWRpbmcgdG8gYmUgYW55IHJlZmVyZW5jZSB0byBpdHMgdmVudiBpbiBgYFBBVEhgYC4KKyAgIFdoZW4gd29ya2luZyBpbiBhIGNvbW1hbmQgc2hlbGwsIHVzZXJzIGNhbiBtYWtlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBhY3RpdmUKKyAgIGJ5IHJ1bm5pbmcgYW4gYGBhY3RpdmF0ZWBgIHNjcmlwdCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGV4ZWN1dGFibGVzCisgICBkaXJlY3RvcnkgKHRoZSBwcmVjaXNlIGZpbGVuYW1lIGlzIHNoZWxsLWRlcGVuZGVudCksIHdoaWNoIHByZXBlbmRzIHRoZQorICAgdmlydHVhbCBlbnZpcm9ubWVudCdzIGRpcmVjdG9yeSBmb3IgZXhlY3V0YWJsZXMgdG8gdGhlIGBgUEFUSGBgIGVudmlyb25tZW50CisgICB2YXJpYWJsZSBmb3IgdGhlIHJ1bm5pbmcgc2hlbGwuIFRoZXJlIHNob3VsZCBiZSBubyBuZWVkIGluIG90aGVyCisgICBjaXJjdW1zdGFuY2VzIHRvIGFjdGl2YXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudOKAlHNjcmlwdHMgaW5zdGFsbGVkIGludG8KKyAgIHZpcnR1YWwgZW52aXJvbm1lbnRzIGhhdmUgYSAic2hlYmFuZyIgbGluZSB3aGljaCBwb2ludHMgdG8gdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50J3MgUHl0aG9uIGludGVycHJldGVyLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNjcmlwdCB3aWxsIHJ1biB3aXRoCisgICB0aGF0IGludGVycHJldGVyIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGBgUEFUSGBgLiBPbiBXaW5kb3dzLCAic2hlYmFuZyIKKyAgIGxpbmUgcHJvY2Vzc2luZyBpcyBzdXBwb3J0ZWQgaWYgeW91IGhhdmUgdGhlIFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cworICAgaW5zdGFsbGVkICh0aGlzIHdhcyBhZGRlZCB0byBQeXRob24gaW4gMy4zIC0gc2VlIDpwZXA6YDM5N2AgZm9yIG1vcmUKKyAgIGRldGFpbHMpLiBUaHVzLCBkb3VibGUtY2xpY2tpbmcgYW4gaW5zdGFsbGVkIHNjcmlwdCBpbiBhIFdpbmRvd3MgRXhwbG9yZXIKKyAgIHdpbmRvdyBzaG91bGQgcnVuIHRoZSBzY3JpcHQgd2l0aCB0aGUgY29ycmVjdCBpbnRlcnByZXRlciB3aXRob3V0IHRoZXJlCisgICBuZWVkaW5nIHRvIGJlIGFueSByZWZlcmVuY2UgdG8gaXRzIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYGBQQVRIYGAuCiAKIAogLi4gX3ZlbnYtYXBpOgpAQCAtODMsNyArODksOCBAQAogY3JlYXRpb24gYWNjb3JkaW5nIHRvIHRoZWlyIG5lZWRzLCB0aGUgOmNsYXNzOmBFbnZCdWlsZGVyYCBjbGFzcy4KIAogLi4gY2xhc3M6OiBFbnZCdWlsZGVyKHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwgXAotICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ9Tm9uZSkKIAogICAgIFRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBvbgogICAgIGluc3RhbnRpYXRpb246CkBAIC0xMDcsOSArMTE0LDE2IEBACiAgICAgICBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoaXMgdXNlcyA6bW9kOmBlbnN1cmVwaXBgIHdpdGgKICAgICAgIHRoZSBgYC0tZGVmYXVsdC1waXBgYCBvcHRpb24uCiAKKyAgICAqIGBgcHJvbXB0YGAgLS0gYSBTdHJpbmcgdG8gYmUgdXNlZCBhZnRlciB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2YXRlZAorICAgICAgKGRlZmF1bHRzIHRvIGBgTm9uZWBgIHdoaWNoIG1lYW5zIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB3b3VsZAorICAgICAgYmUgdXNlZCkuCisKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgIEFkZGVkIHRoZSBgYHdpdGhfcGlwYGAgcGFyYW1ldGVyCiAKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgICBBZGRlZCB0aGUgYGBwcm9tcHRgYCBwYXJhbWV0ZXIKKwogCiAgICAgQ3JlYXRvcnMgb2YgdGhpcmQtcGFydHkgdmlydHVhbCBlbnZpcm9ubWVudCB0b29scyB3aWxsIGJlIGZyZWUgdG8gdXNlIHRoZQogICAgIHByb3ZpZGVkIGBgRW52QnVpbGRlcmBgIGNsYXNzIGFzIGEgYmFzZSBjbGFzcy4KQEAgLTIxOSw3ICsyMzMsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIGZvbGxvd2luZyBzY3JpcHQgc2hvd3MgaG93IHRvIGV4dGVuZCA6Y2xhc3M6YEVudkJ1aWxkZXJgIGJ5IGltcGxlbWVudGluZyBhCi1zdWJjbGFzcyB3aGljaCBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgaW50byBhIGNyZWF0ZWQgdmVudjo6CitzdWJjbGFzcyB3aGljaCBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgaW50byBhIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudDo6CiAKICAgICBpbXBvcnQgb3MKICAgICBpbXBvcnQgb3MucGF0aApAQCAtMjMzLDEyICsyNDcsMTIgQEAKICAgICBjbGFzcyBFeHRlbmRlZEVudkJ1aWxkZXIodmVudi5FbnZCdWlsZGVyKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgYnVpbGRlciBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgc28gdGhhdCB5b3UgY2FuIHBpcCBvcgotICAgICAgICBlYXN5X2luc3RhbGwgb3RoZXIgcGFja2FnZXMgaW50byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKyAgICAgICAgZWFzeV9pbnN0YWxsIG90aGVyIHBhY2thZ2VzIGludG8gdGhlIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudC4KIAogICAgICAgICA6cGFyYW0gbm9kaXN0OiBJZiBUcnVlLCBzZXR1cHRvb2xzIGFuZCBwaXAgYXJlIG5vdCBpbnN0YWxsZWQgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgICAgICA6cGFyYW0gbm9waXA6IElmIFRydWUsIHBpcCBpcyBub3QgaW5zdGFsbGVkIGludG8gdGhlIGNyZWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgICAgICA6cGFyYW0gcHJvZ3Jlc3M6IElmIHNldHVwdG9vbHMgb3IgcGlwIGFyZSBpbnN0YWxsZWQsIHRoZSBwcm9ncmVzcyBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gY2FuIGJlIG1vbml0b3JlZCBieSBwYXNzaW5nIGEgcHJvZ3Jlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZS4gSWYgc3BlY2lmaWVkLCBpdCBpcyBjYWxsZWQgd2l0aCB0d28KQEAgLTI2NCwxMCArMjc4LDEwIEBACiAgICAgICAgIGRlZiBwb3N0X3NldHVwKHNlbGYsIGNvbnRleHQpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBTZXQgdXAgYW55IHBhY2thZ2VzIHdoaWNoIG5lZWQgdG8gYmUgcHJlLWluc3RhbGxlZCBpbnRvIHRoZQotICAgICAgICAgICAgZW52aXJvbm1lbnQgYmVpbmcgY3JlYXRlZC4KKyAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQgYmVpbmcgY3JlYXRlZC4KIAotICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBvcy5lbnZpcm9uWydWSVJUVUFMX0VOViddID0gY29udGV4dC5lbnZfZGlyCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5ub2Rpc3Q6CkBAIC0zMDEsNyArMzE1LDcgQEAKICAgICAgICAgICAgIGZuID0gb3MucGF0aC5zcGxpdChwYXRoKVstMV0KICAgICAgICAgICAgIGJpbnBhdGggPSBjb250ZXh0LmJpbl9wYXRoCiAgICAgICAgICAgICBkaXN0cGF0aCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBmbikKLSAgICAgICAgICAgICMgRG93bmxvYWQgc2NyaXB0IGludG8gdGhlIGVudidzIGJpbmFyaWVzIGZvbGRlcgorICAgICAgICAgICAgIyBEb3dubG9hZCBzY3JpcHQgaW50byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGJpbmFyaWVzIGZvbGRlcgogICAgICAgICAgICAgdXJscmV0cmlldmUodXJsLCBkaXN0cGF0aCkKICAgICAgICAgICAgIHByb2dyZXNzID0gc2VsZi5wcm9ncmVzcwogICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NlOgpAQCAtMzEzLDcgKzMyNyw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0luc3RhbGxpbmcgJXMgLi4uJXMnICUgKG5hbWUsIHRlcm0pKQogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgIyBJbnN0YWxsIGluIHRoZSBlbnYKKyAgICAgICAgICAgICMgSW5zdGFsbCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAogICAgICAgICAgICAgYXJncyA9IFtjb250ZXh0LmVudl9leGUsIGZuXQogICAgICAgICAgICAgcCA9IFBvcGVuKGFyZ3MsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwgY3dkPWJpbnBhdGgpCiAgICAgICAgICAgICB0MSA9IFRocmVhZCh0YXJnZXQ9c2VsZi5yZWFkZXIsIGFyZ3M9KHAuc3Rkb3V0LCAnc3Rkb3V0JykpCkBAIC0zMzIsMTAgKzM0NiwxMCBAQAogCiAgICAgICAgIGRlZiBpbnN0YWxsX3NldHVwdG9vbHMoc2VsZiwgY29udGV4dCk6CiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIEluc3RhbGwgc2V0dXB0b29scyBpbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJbnN0YWxsIHNldHVwdG9vbHMgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLSAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgdXJsID0gJ2h0dHBzOi8vYml0YnVja2V0Lm9yZy9weXBhL3NldHVwdG9vbHMvZG93bmxvYWRzL2V6X3NldHVwLnB5JwogICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdChjb250ZXh0LCAnc2V0dXB0b29scycsIHVybCkKQEAgLTM0OCwxMCArMzYyLDEwIEBACiAKICAgICAgICAgZGVmIGluc3RhbGxfcGlwKHNlbGYsIGNvbnRleHQpOgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBJbnN0YWxsIHBpcCBpbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJbnN0YWxsIHBpcCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICB1cmwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9weXBhL3BpcC9tYXN0ZXIvY29udHJpYi9nZXQtcGlwLnB5JwogICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdChjb250ZXh0LCAncGlwJywgdXJsKQpAQCAtMzc0LDcgKzM4OCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0YXJnZXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yaWVzLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdkaXJzJywgbWV0YXZhcj0nRU5WX0RJUicsIG5hcmdzPScrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdBIGRpcmVjdG9yeSBpbiB3aGljaCB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpcnR1YWwgZW52aXJvbm1lbnQuJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tc2V0dXB0b29scycsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J25vZGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRvbid0IGluc3RhbGwgc2V0dXB0b29scyBvciBwaXAgaW4gdGhlICIKQEAgLTM5OCwxNCArNDEzLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBwbGF0Zm9ybS4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jbGVhcicsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NsZWFyJywgaGVscD0nRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxyZWFkeSBleGlzdHMsIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbCBlbnZpcm9ubWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3J5IGlmIGl0IGFscmVhZHkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0cywgYmVmb3JlIHZpcnR1YWwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGNyZWF0aW9uLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVwZ3JhZGUnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1cGdyYWRlJywgaGVscD0nVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXBncmFkZScsIGhlbHA9J1VwZ3JhZGUgdGhlIHZpcnR1YWwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSB0aGlzIHZlcnNpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uLCBhc3N1bWluZyBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW4tcGxhY2UuJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdmVyYm9zZScsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3ZlcmJvc2UnLCBoZWxwPSdEaXNwbGF5IHRoZSBvdXRwdXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gdGhlIHNjcmlwdHMgd2hpY2ggJwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0IGIvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CmluZGV4IDM3ZjY4NzQuLjVhNDJjYzYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdAorKysgYi9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKQEAgLTMwMSw3ICszMDEsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKLS4uIGZ1bmN0aW9uOjogd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEpCisuLiBmdW5jdGlvbjo6IHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xLCBzb3VyY2U9Tm9uZSkKIAogICAgSXNzdWUgYSB3YXJuaW5nLCBvciBtYXliZSBpZ25vcmUgaXQgb3IgcmFpc2UgYW4gZXhjZXB0aW9uLiAgVGhlICpjYXRlZ29yeSoKICAgIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhIHdhcm5pbmcgY2F0ZWdvcnkgY2xhc3MgKHNlZSBhYm92ZSk7IGl0IGRlZmF1bHRzIHRvCkBAIC0zMTksOCArMzE5LDE0IEBACiAgICBzb3VyY2Ugb2YgOmZ1bmM6YGRlcHJlY2F0aW9uYCBpdHNlbGYgKHNpbmNlIHRoZSBsYXR0ZXIgd291bGQgZGVmZWF0IHRoZSBwdXJwb3NlCiAgICBvZiB0aGUgd2FybmluZyBtZXNzYWdlKS4KIAorICAgKnNvdXJjZSosIGlmIHN1cHBsaWVkLCBpcyB0aGUgZGVzdHJveWVkIG9iamVjdCB3aGljaCBlbWl0dGVkIGEKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AuCiAKLS4uIGZ1bmN0aW9uOjogd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlPU5vbmUsIHJlZ2lzdHJ5PU5vbmUsIG1vZHVsZV9nbG9iYWxzPU5vbmUpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnNvdXJjZSogcGFyYW1ldGVyLgorCisKKy4uIGZ1bmN0aW9uOjogd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlPU5vbmUsIHJlZ2lzdHJ5PU5vbmUsIG1vZHVsZV9nbG9iYWxzPU5vbmUsIHNvdXJjZT1Ob25lKQogCiAgICBUaGlzIGlzIGEgbG93LWxldmVsIGludGVyZmFjZSB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZiA6ZnVuYzpgd2FybmAsIHBhc3NpbmcgaW4KICAgIGV4cGxpY2l0bHkgdGhlIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIsIGFuZCBvcHRpb25hbGx5IHRoZQpAQCAtMzM2LDYgKzM0MiwxMiBAQAogICAgc291cmNlIGZvciBtb2R1bGVzIGZvdW5kIGluIHppcGZpbGVzIG9yIG90aGVyIG5vbi1maWxlc3lzdGVtIGltcG9ydAogICAgc291cmNlcykuCiAKKyAgICpzb3VyY2UqLCBpZiBzdXBwbGllZCwgaXMgdGhlIGRlc3Ryb3llZCBvYmplY3Qgd2hpY2ggZW1pdHRlZCBhCisgICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkIHRoZSAqc291cmNlKiBwYXJhbWV0ZXIuCisKIAogLi4gZnVuY3Rpb246OiBzaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QgYi9Eb2MvbGlicmFyeS93aW5yZWcucnN0CmluZGV4IDUyZDU5MWEuLjQ4YmRmMTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2lucmVnLnJzdApAQCAtNjM1LDcgKzYzNSw3IEBACiAKIC4uIGRhdGE6OiBSRUdfRFdPUkRfTElUVExFX0VORElBTgogCi0gICBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuCisgICBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBSRUdfRFdPUkRgLgogCiAuLiBkYXRhOjogUkVHX0RXT1JEX0JJR19FTkRJQU4KIApAQCAtNjU5LDYgKzY1OSwxOCBAQAogCiAgICBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCiAKKy4uIGRhdGE6OiBSRUdfUVdPUkQKKworICAgQSA2NC1iaXQgbnVtYmVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IFJFR19RV09SRF9MSVRUTEVfRU5ESUFOCisKKyAgIEEgNjQtYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byA6Y29uc3Q6YFJFR19RV09SRGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogUkVHX1JFU09VUkNFX0xJU1QKIAogICAgQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QgYi9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QKaW5kZXggZDJjNDIxMC4uMzcyZjc5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2luc291bmQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dpbnNvdW5kLnJzdApAQCAtMjUsNyArMjUsOCBAQAogLi4gZnVuY3Rpb246OiBQbGF5U291bmQoc291bmQsIGZsYWdzKQogCiAgICBDYWxsIHRoZSB1bmRlcmx5aW5nIDpjOmZ1bmM6YFBsYXlTb3VuZGAgZnVuY3Rpb24gZnJvbSB0aGUgUGxhdGZvcm0gQVBJLiAgVGhlCi0gICAqc291bmQqIHBhcmFtZXRlciBtYXkgYmUgYSBmaWxlbmFtZSwgYXVkaW8gZGF0YSBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAuICBJdHMKKyAgICpzb3VuZCogcGFyYW1ldGVyIG1heSBiZSBhIGZpbGVuYW1lLCBhIHN5c3RlbSBzb3VuZCBhbGlhcywgYXVkaW8gZGF0YSBhcyBhCisgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLCBvciBgYE5vbmVgYC4gIEl0cwogICAgaW50ZXJwcmV0YXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgKmZsYWdzKiwgd2hpY2ggY2FuIGJlIGEgYml0d2lzZSBPUmVkCiAgICBjb21iaW5hdGlvbiBvZiB0aGUgY29uc3RhbnRzIGRlc2NyaWJlZCBiZWxvdy4gSWYgdGhlICpzb3VuZCogcGFyYW1ldGVyIGlzCiAgICBgYE5vbmVgYCwgYW55IGN1cnJlbnRseSBwbGF5aW5nIHdhdmVmb3JtIHNvdW5kIGlzIHN0b3BwZWQuIElmIHRoZSBzeXN0ZW0KQEAgLTM5LDcgKzQwLDggQEAKICAgIHNvdW5kIHRvIHBsYXk7IHBvc3NpYmxlIHZhbHVlcyBhcmUgYGAtMWBgLCBgYE1CX0lDT05BU1RFUklTS2BgLAogICAgYGBNQl9JQ09ORVhDTEFNQVRJT05gYCwgYGBNQl9JQ09OSEFORGBgLCBgYE1CX0lDT05RVUVTVElPTmBgLCBhbmQgYGBNQl9PS2BgLCBhbGwKICAgIGRlc2NyaWJlZCBiZWxvdy4gIFRoZSB2YWx1ZSBgYC0xYGAgcHJvZHVjZXMgYSAic2ltcGxlIGJlZXAiOyB0aGlzIGlzIHRoZSBmaW5hbAotICAgZmFsbGJhY2sgaWYgYSBzb3VuZCBjYW5ub3QgYmUgcGxheWVkIG90aGVyd2lzZS4KKyAgIGZhbGxiYWNrIGlmIGEgc291bmQgY2Fubm90IGJlIHBsYXllZCBvdGhlcndpc2UuICBJZiB0aGUgc3lzdGVtIGluZGljYXRlcyBhbgorICAgZXJyb3IsIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgogCiAKIC4uIGRhdGE6OiBTTkRfRklMRU5BTUUKQEAgLTkyLDcgKzk0LDcgQEAKIC4uIGRhdGE6OiBTTkRfTUVNT1JZCiAKICAgIFRoZSAqc291bmQqIHBhcmFtZXRlciB0byA6ZnVuYzpgUGxheVNvdW5kYCBpcyBhIG1lbW9yeSBpbWFnZSBvZiBhIFdBViBmaWxlLCBhcyBhCi0gICBzdHJpbmcuCisgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLgogCiAgICAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAppbmRleCBhYWQyN2E4Li5hMWQ0NDY5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdApAQCAtMTMzLDkgKzEzMyw5IEBACiAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGVudmlyb24uaXRlbXMoKV0KICAgICAgICAgICByZXR1cm4gcmV0CiAKLSAgICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIHNpbXBsZV9hcHApCi0gICAgICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQotICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBzaW1wbGVfYXBwKSBhcyBodHRwZDoKKyAgICAgICAgICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQorICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogCiAKIEluIGFkZGl0aW9uIHRvIHRoZSBlbnZpcm9ubWVudCBmdW5jdGlvbnMgYWJvdmUsIHRoZSA6bW9kOmB3c2dpcmVmLnV0aWxgIG1vZHVsZQpAQCAtMjg1LDE0ICsyODUsMTQgQEAKIAogICAgICAgZnJvbSB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIgaW1wb3J0IG1ha2Vfc2VydmVyLCBkZW1vX2FwcAogCi0gICAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkKLSAgICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24gcG9ydCA4MDAwLi4uIikKKyAgICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKSBhcyBodHRwZDoKKyAgICAgICAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIHBvcnQgODAwMC4uLiIpCiAKLSAgICAgICMgUmVzcG9uZCB0byByZXF1ZXN0cyB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAotICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgICAgIyBSZXNwb25kIHRvIHJlcXVlc3RzIHVudGlsIHByb2Nlc3MgaXMga2lsbGVkCisgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCiAKLSAgICAgICMgQWx0ZXJuYXRpdmU6IHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKLSAgICAgIGh0dHBkLmhhbmRsZV9yZXF1ZXN0KCkKKyAgICAgICAgICAjIEFsdGVybmF0aXZlOiBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0CisgICAgICAgICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKQogCiAKIC4uIGZ1bmN0aW9uOjogZGVtb19hcHAoZW52aXJvbiwgc3RhcnRfcmVzcG9uc2UpCkBAIC00MzIsOSArNDMyLDkgQEAKICAgICAgICMgVGhpcyBpcyB0aGUgYXBwbGljYXRpb24gd3JhcHBlZCBpbiBhIHZhbGlkYXRvcgogICAgICAgdmFsaWRhdG9yX2FwcCA9IHZhbGlkYXRvcihzaW1wbGVfYXBwKQogCi0gICAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCB2YWxpZGF0b3JfYXBwKQotICAgICAgcHJpbnQoIkxpc3RlbmluZyBvbiBwb3J0IDgwMDAuLi4uIikKLSAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgdmFsaWRhdG9yX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgICAgcHJpbnQoIkxpc3RlbmluZyBvbiBwb3J0IDgwMDAuLi4uIikKKyAgICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAogCiA6bW9kOmB3c2dpcmVmLmhhbmRsZXJzYCAtLSBzZXJ2ZXIvZ2F0ZXdheSBiYXNlIGNsYXNzZXMKQEAgLTc3NCw4ICs3NzQsOCBAQAogICAgICAgICMgVGhlIHJldHVybmVkIG9iamVjdCBpcyBnb2luZyB0byBiZSBwcmludGVkCiAgICAgICAgcmV0dXJuIFtiIkhlbGxvIFdvcmxkIl0KIAotICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgaGVsbG9fd29ybGRfYXBwKQotICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKKyAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGhlbGxvX3dvcmxkX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKIAotICAgIyBTZXJ2ZSB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAotICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgIyBTZXJ2ZSB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAorICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QgYi9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdAppbmRleCBlNzkxNmQyLi40OGQ1YTZlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdApAQCAtODgsOSArODgsMTMgQEAKICAgICs9PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCiAgICB8IGBgYm9vbGVhbmBgICAgICAgICAgIHwgOmNsYXNzOmBib29sYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGBpbnRgYCBvciBgYGk0YGAgICAgfCA6Y2xhc3M6YGludGAgaW4gcmFuZ2UgZnJvbSAtMjE0NzQ4MzY0OCB0byAyMTQ3NDgzNjQ3LiB8CisgICB8IGBgaW50YGAsIGBgaTFgYCwgICAgIHwgOmNsYXNzOmBpbnRgIGluIHJhbmdlIGZyb20gLTIxNDc0ODM2NDggdG8gMjE0NzQ4MzY0Ny4gfAorICAgfCBgYGkyYGAsICBgYGk0YGAsICAgICB8IFZhbHVlcyBnZXQgdGhlIGBgPGludD5gYCB0YWcuICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgYGBpOGBgIG9yICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IGBgYmlnaW50ZWdlcmBgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGBkb3VibGVgYCAgICAgICAgICAgfCA6Y2xhc3M6YGZsb2F0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IGBgZG91YmxlYGAgb3IgICAgICAgIHwgOmNsYXNzOmBmbG9hdGAuICBWYWx1ZXMgZ2V0IHRoZSBgYDxkb3VibGU+YGAgdGFnLiAgICAgfAorICAgfCBgYGZsb2F0YGAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgc3RyaW5nYGAgICAgICAgICAgIHwgOmNsYXNzOmBzdHJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTExNCw2ICsxMTgsOCBAQAogICAgfCBgYG5pbGBgICAgICAgICAgICAgICB8IFRoZSBgYE5vbmVgYCBjb25zdGFudC4gIFBhc3NpbmcgaXMgYWxsb3dlZCBvbmx5IGlmICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAqYWxsb3dfbm9uZSogaXMgdHJ1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYGJpZ2RlY2ltYWxgYCAgICAgICB8IDpjbGFzczpgZGVjaW1hbC5EZWNpbWFsYC4gIFJldHVybmVkIHR5cGUgb25seS4gICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIFRoaXMgaXMgdGhlIGZ1bGwgc2V0IG9mIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGJ5IFhNTC1SUEMuICBNZXRob2QgY2FsbHMgbWF5IGFsc28KICAgIHJhaXNlIGEgc3BlY2lhbCA6ZXhjOmBGYXVsdGAgaW5zdGFuY2UsIHVzZWQgdG8gc2lnbmFsIFhNTC1SUEMgc2VydmVyIGVycm9ycywgb3IKQEAgLTEzNyw2ICsxNDMsMTMgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCB0aGUgKmNvbnRleHQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBvZiB0eXBlIHRhZ3Mgd2l0aCBwcmVmaXhlcyAoZS5nLiBgYGV4Om5pbGBgKS4KKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgdW5tYXJzYWxsaW5nIGFkZGl0aW9uYWwgdHlwZXMgdXNlZCBieSBBcGFjaGUgWE1MLVJQQworICAgICAgaW1wbGVtZW50YXRpb24gZm9yIG51bWVyaWNzOiBgYGkxYGAsIGBgaTJgYCwgYGBpOGBgLCBgYGJpZ2ludGVnZXJgYCwKKyAgICAgIGBgZmxvYXRgYCBhbmQgYGBiaWdkZWNpbWFsYGAuCisgICAgICBTZWUgaHR0cDovL3dzLmFwYWNoZS5vcmcveG1scnBjL3R5cGVzLmh0bWwgZm9yIGEgZGVzY3JpcHRpb24uCisKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKaW5kZXggMWM3N2U4NC4uMDUxMWRkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKQEAgLTE0OCwyOSArMTQ4LDI5IEBACiAgICAgICAgcnBjX3BhdGhzID0gKCcvUlBDMicsKQogCiAgICAjIENyZWF0ZSBzZXJ2ZXIKLSAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyPVJlcXVlc3RIYW5kbGVyKQotICAgc2VydmVyLnJlZ2lzdGVyX2ludHJvc3BlY3Rpb25fZnVuY3Rpb25zKCkKKyAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcj1SZXF1ZXN0SGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnRyb3NwZWN0aW9uX2Z1bmN0aW9ucygpCiAKLSAgICMgUmVnaXN0ZXIgcG93KCkgZnVuY3Rpb247IHRoaXMgd2lsbCB1c2UgdGhlIHZhbHVlIG9mCi0gICAjIHBvdy5fX25hbWVfXyBhcyB0aGUgbmFtZSwgd2hpY2ggaXMganVzdCAncG93Jy4KLSAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCisgICAgICAgIyBSZWdpc3RlciBwb3coKSBmdW5jdGlvbjsgdGhpcyB3aWxsIHVzZSB0aGUgdmFsdWUgb2YKKyAgICAgICAjIHBvdy5fX25hbWVfXyBhcyB0aGUgbmFtZSwgd2hpY2ggaXMganVzdCAncG93Jy4KKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQogCi0gICAjIFJlZ2lzdGVyIGEgZnVuY3Rpb24gdW5kZXIgYSBkaWZmZXJlbnQgbmFtZQotICAgZGVmIGFkZGVyX2Z1bmN0aW9uKHgseSk6Ci0gICAgICAgcmV0dXJuIHggKyB5Ci0gICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24oYWRkZXJfZnVuY3Rpb24sICdhZGQnKQorICAgICAgICMgUmVnaXN0ZXIgYSBmdW5jdGlvbiB1bmRlciBhIGRpZmZlcmVudCBuYW1lCisgICAgICAgZGVmIGFkZGVyX2Z1bmN0aW9uKHgseSk6CisgICAgICAgICAgIHJldHVybiB4ICsgeQorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihhZGRlcl9mdW5jdGlvbiwgJ2FkZCcpCiAKLSAgICMgUmVnaXN0ZXIgYW4gaW5zdGFuY2U7IGFsbCB0aGUgbWV0aG9kcyBvZiB0aGUgaW5zdGFuY2UgYXJlCi0gICAjIHB1Ymxpc2hlZCBhcyBYTUwtUlBDIG1ldGhvZHMgKGluIHRoaXMgY2FzZSwganVzdCAnbXVsJykuCi0gICBjbGFzcyBNeUZ1bmNzOgotICAgICAgIGRlZiBtdWwoc2VsZiwgeCwgeSk6Ci0gICAgICAgICAgIHJldHVybiB4ICogeQorICAgICAgICMgUmVnaXN0ZXIgYW4gaW5zdGFuY2U7IGFsbCB0aGUgbWV0aG9kcyBvZiB0aGUgaW5zdGFuY2UgYXJlCisgICAgICAgIyBwdWJsaXNoZWQgYXMgWE1MLVJQQyBtZXRob2RzIChpbiB0aGlzIGNhc2UsIGp1c3QgJ211bCcpLgorICAgICAgIGNsYXNzIE15RnVuY3M6CisgICAgICAgICAgIGRlZiBtdWwoc2VsZiwgeCwgeSk6CisgICAgICAgICAgICAgICByZXR1cm4geCAqIHkKIAotICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKE15RnVuY3MoKSkKKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoTXlGdW5jcygpKQogCi0gICAjIFJ1biB0aGUgc2VydmVyJ3MgbWFpbiBsb29wCi0gICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgIyBSdW4gdGhlIHNlcnZlcidzIG1haW4gbG9vcAorICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKIAogVGhlIGZvbGxvd2luZyBjbGllbnQgY29kZSB3aWxsIGNhbGwgdGhlIG1ldGhvZHMgbWFkZSBhdmFpbGFibGUgYnkgdGhlIHByZWNlZGluZwogc2VydmVyOjoKQEAgLTIwNywxOCArMjA3LDE3IEBACiAgICAgICAgICAgICBkZWYgZ2V0Q3VycmVudFRpbWUoKToKICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKIAotICAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKEV4YW1wbGVTZXJ2aWNlKCksIGFsbG93X2RvdHRlZF9uYW1lcz1UcnVlKQotICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKLSAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQotICAgIHRyeToKLSAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCi0gICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQotICAgICAgICBzeXMuZXhpdCgwKQorICAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpIGFzIHNlcnZlcjoKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQorICAgICAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAogVGhpcyBFeGFtcGxlU2VydmljZSBkZW1vIGNhbiBiZSBpbnZva2VkIGZyb20gdGhlIGNvbW1hbmQgbGluZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0IGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKaW5kZXggMWQ2NTI2Yy4uYmY1MmZhMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKQEAgLTE0NywxMCArMTQ3LDEwIEBACiAgICAqY29tcHJlc3Npb24qIGlzIHRoZSBaSVAgY29tcHJlc3Npb24gbWV0aG9kIHRvIHVzZSB3aGVuIHdyaXRpbmcgdGhlIGFyY2hpdmUsCiAgICBhbmQgc2hvdWxkIGJlIDpjb25zdDpgWklQX1NUT1JFRGAsIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKICAgIDpjb25zdDpgWklQX0JaSVAyYCBvciA6Y29uc3Q6YFpJUF9MWk1BYDsgdW5yZWNvZ25pemVkCi0gICB2YWx1ZXMgd2lsbCBjYXVzZSA6ZXhjOmBSdW50aW1lRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKKyAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKICAgIDpjb25zdDpgWklQX0JaSVAyYCBvciA6Y29uc3Q6YFpJUF9MWk1BYCBpcyBzcGVjaWZpZWQgYnV0IHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZQogICAgKDptb2Q6YHpsaWJgLCA6bW9kOmBiejJgIG9yIDptb2Q6YGx6bWFgKSBpcyBub3QgYXZhaWxhYmxlLCA6ZXhjOmBSdW50aW1lRXJyb3JgCi0gICBpcyBhbHNvIHJhaXNlZC4gVGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBaSVBfU1RPUkVEYC4gIElmICphbGxvd1ppcDY0KiBpcworICAgaXMgcmFpc2VkLiBUaGUgZGVmYXVsdCBpcyA6Y29uc3Q6YFpJUF9TVE9SRURgLiAgSWYgKmFsbG93WmlwNjQqIGlzCiAgICBgYFRydWVgYCAodGhlIGRlZmF1bHQpIHppcGZpbGUgd2lsbCBjcmVhdGUgWklQIGZpbGVzIHRoYXQgdXNlIHRoZSBaSVA2NAogICAgZXh0ZW5zaW9ucyB3aGVuIHRoZSB6aXBmaWxlIGlzIGxhcmdlciB0aGFuIDIgR2lCLiBJZiBpdCBpcyAgZmFsc2UgOm1vZDpgemlwZmlsZWAKICAgIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIFpJUCBmaWxlIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucy4KQEAgLTE3OSw2ICsxNzksMTAgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHdyaXRpbmcgdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ3gnYGAgbW9kZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFByZXZpb3VzbHksIGEgcGxhaW4gOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkIGZvciB1bnJlY29nbml6ZWQKKyAgICAgIGNvbXByZXNzaW9uIHZhbHVlcy4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmNsb3NlKCkKIApAQCAtMjA1LDE4ICsyMDksMTIgQEAKICAgIFJldHVybiBhIGxpc3Qgb2YgYXJjaGl2ZSBtZW1iZXJzIGJ5IG5hbWUuCiAKIAotLi4gaW5kZXg6OgotICAgc2luZ2xlOiB1bml2ZXJzYWwgbmV3bGluZXM7IHppcGZpbGUuWmlwRmlsZS5vcGVuIG1ldGhvZAorLi4gbWV0aG9kOjogWmlwRmlsZS5vcGVuKG5hbWUsIG1vZGU9J3InLCBwd2Q9Tm9uZSwgKiwgZm9yY2VfemlwNjQ9RmFsc2UpCiAKLS4uIG1ldGhvZDo6IFppcEZpbGUub3BlbihuYW1lLCBtb2RlPSdyJywgcHdkPU5vbmUpCi0KLSAgIEV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSBhcyBhIGZpbGUtbGlrZSBvYmplY3QgKFppcEV4dEZpbGUpLiAqbmFtZSoKLSAgIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0LiBUaGUKLSAgICptb2RlKiBwYXJhbWV0ZXIsIGlmIGluY2x1ZGVkLCBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBgYCdyJ2BgICh0aGUKLSAgIGRlZmF1bHQpLCBgYCdVJ2BgLCBvciBgYCdyVSdgYC4gQ2hvb3NpbmcgYGAnVSdgYCBvciAgYGAnclUnYGAgd2lsbCBlbmFibGUKLSAgIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIHN1cHBvcnQgaW4gdGhlIHJlYWQtb25seSBvYmplY3QuICAqcHdkKiBpcyB0aGUKLSAgIHBhc3N3b3JkIHVzZWQgZm9yIGVuY3J5cHRlZCBmaWxlcy4gIENhbGxpbmcgIDptZXRoOmAub3BlbmAgb24gYSBjbG9zZWQKLSAgIFppcEZpbGUgd2lsbCByYWlzZSBhICA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgQWNjZXNzIGEgbWVtYmVyIG9mIHRoZSBhcmNoaXZlIGFzIGEgYmluYXJ5IGZpbGUtbGlrZSBvYmplY3QuICAqbmFtZSoKKyAgIGNhbiBiZSBlaXRoZXIgdGhlIG5hbWUgb2YgYSBmaWxlIHdpdGhpbiB0aGUgYXJjaGl2ZSBvciBhIDpjbGFzczpgWmlwSW5mb2AKKyAgIG9iamVjdC4gIFRoZSAqbW9kZSogcGFyYW1ldGVyLCBpZiBpbmNsdWRlZCwgbXVzdCBiZSBgYCdyJ2BgICh0aGUgZGVmYXVsdCkKKyAgIG9yIGBgJ3cnYGAuICAqcHdkKiBpcyB0aGUgcGFzc3dvcmQgdXNlZCB0byBkZWNyeXB0IGVuY3J5cHRlZCBaSVAgZmlsZXMuCiAKICAgIDptZXRoOmB+WmlwRmlsZS5vcGVuYCBpcyBhbHNvIGEgY29udGV4dCBtYW5hZ2VyIGFuZCB0aGVyZWZvcmUgc3VwcG9ydHMgdGhlCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50OjoKQEAgLTIyNSwxNyArMjIzLDIzIEBACiAgICAgICAgICAgd2l0aCBteXppcC5vcGVuKCdlZ2dzLnR4dCcpIGFzIG15ZmlsZToKICAgICAgICAgICAgICAgcHJpbnQobXlmaWxlLnJlYWQoKSkKIAotICAgLi4gbm90ZTo6CisgICBXaXRoICptb2RlKiBgYCdyJ2BgIHRoZSBmaWxlLWxpa2Ugb2JqZWN0CisgICAoYGBaaXBFeHRGaWxlYGApIGlzIHJlYWQtb25seSBhbmQgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorICAgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCwgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVgLAorICAgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVzYCwgOm1ldGg6YF9faXRlcl9fYCwKKyAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gLiAgVGhlc2Ugb2JqZWN0cyBjYW4gb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mCisgICB0aGUgWmlwRmlsZS4KIAotICAgICAgVGhlIGZpbGUtbGlrZSBvYmplY3QgaXMgcmVhZC1vbmx5IGFuZCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0gICAgICA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgLCA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZWAsCi0gICAgICA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZXNgLCA6bWV0aDpgX19pdGVyX19gLAotICAgICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AuCisgICBXaXRoIGBgbW9kZT0ndydgYCwgYSB3cml0YWJsZSBmaWxlIGhhbmRsZSBpcyByZXR1cm5lZCwgd2hpY2ggc3VwcG9ydHMgdGhlCisgICA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLndyaXRlYCBtZXRob2QuICBXaGlsZSBhIHdyaXRhYmxlIGZpbGUgaGFuZGxlIGlzIG9wZW4sCisgICBhdHRlbXB0aW5nIHRvIHJlYWQgb3Igd3JpdGUgb3RoZXIgZmlsZXMgaW4gdGhlIFpJUCBmaWxlIHdpbGwgcmFpc2UgYQorICAgOmV4YzpgVmFsdWVFcnJvcmAuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgICBPYmplY3RzIHJldHVybmVkIGJ5IDptZXRoOmAub3BlbmAgY2FuIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiB0aGUKLSAgICAgIFppcEZpbGUuCisgICBXaGVuIHdyaXRpbmcgYSBmaWxlLCBpZiB0aGUgZmlsZSBzaXplIGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIGJ1dCBtYXkgZXhjZWVkCisgICAyIEdpQiwgcGFzcyBgYGZvcmNlX3ppcDY0PVRydWVgYCB0byBlbnN1cmUgdGhhdCB0aGUgaGVhZGVyIGZvcm1hdCBpcworICAgY2FwYWJsZSBvZiBzdXBwb3J0aW5nIGxhcmdlIGZpbGVzLiAgSWYgdGhlIGZpbGUgc2l6ZSBpcyBrbm93biBpbiBhZHZhbmNlLAorICAgY29uc3RydWN0IGEgOmNsYXNzOmBaaXBJbmZvYCBvYmplY3Qgd2l0aCA6YXR0cjpgflppcEluZm8uZmlsZV9zaXplYCBzZXQsIGFuZAorICAgdXNlIHRoYXQgYXMgdGhlICpuYW1lKiBwYXJhbWV0ZXIuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0yNDMsMTAgKzI0NywxOSBAQAogICAgICAgb3IgYSA6Y2xhc3M6YFppcEluZm9gIG9iamVjdC4gIFlvdSB3aWxsIGFwcHJlY2lhdGUgdGhpcyB3aGVuIHRyeWluZyB0byByZWFkIGEKICAgICAgIFpJUCBmaWxlIHRoYXQgY29udGFpbnMgbWVtYmVycyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4KIAotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy40IDMuNgotICAgICAgVGhlIGBgJ1UnYGAgb3IgIGBgJ3JVJ2BgIG1vZGUuICBVc2UgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBmb3IgcmVhZGluZworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJlbW92ZWQgc3VwcG9ydCBvZiBgYG1vZGU9J1UnYGAuICBVc2UgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBmb3IgcmVhZGluZwogICAgICAgY29tcHJlc3NlZCB0ZXh0IGZpbGVzIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6bWV0aDpgb3BlbmAgY2FuIG5vdyBiZSB1c2VkIHRvIHdyaXRlIGZpbGVzIGludG8gdGhlIGFyY2hpdmUgd2l0aCB0aGUKKyAgICAgIGBgbW9kZT0ndydgYCBvcHRpb24uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmAub3BlbmAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuCisgICAgICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmV4dHJhY3QobWVtYmVyLCBwYXRoPU5vbmUsIHB3ZD1Ob25lKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnk7ICptZW1iZXIqCkBAIC0yNjcsNiArMjgwLDEwIEBACiAgICAgICBjaGFyYWN0ZXJzIChgYDpgYCwgYGA8YGAsIGBgPmBgLCBgYHxgYCwgYGAiYGAsIGBgP2BgLCBhbmQgYGAqYGApCiAgICAgICByZXBsYWNlZCBieSB1bmRlcnNjb3JlIChgYF9gYCkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmBleHRyYWN0YCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmV4dHJhY3RhbGwocGF0aD1Ob25lLCBtZW1iZXJzPU5vbmUsIHB3ZD1Ob25lKQogCkBAIC0yODMsNiArMzAwLDEwIEBACiAgICAgICBkb3RzIGBgIi4uImBgLiAgVGhpcyBtb2R1bGUgYXR0ZW1wdHMgdG8gcHJldmVudCB0aGF0LgogICAgICAgU2VlIDptZXRoOmBleHRyYWN0YCBub3RlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgZXh0cmFjdGFsbGAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS5wcmludGRpcigpCiAKQEAgLTMwMCwxOCArMzIxLDI0IEBACiAgICBmaWxlIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0LiAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIGZvcgogICAgcmVhZCBvciBhcHBlbmQuICpwd2QqIGlzIHRoZSBwYXNzd29yZCB1c2VkIGZvciBlbmNyeXB0ZWQgIGZpbGVzIGFuZCwgaWYgc3BlY2lmaWVkLAogICAgaXQgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXNzd29yZCBzZXQgd2l0aCA6bWV0aDpgc2V0cGFzc3dvcmRgLiAgQ2FsbGluZwotICAgOm1ldGg6YHJlYWRgIG9uIGEgY2xvc2VkIFppcEZpbGUgIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLiBDYWxsaW5nCiAgICA6bWV0aDpgcmVhZGAgb24gYSBaaXBGaWxlIHRoYXQgdXNlcyBhIGNvbXByZXNzaW9uIG1ldGhvZCBvdGhlciB0aGFuCiAgICA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsIDpjb25zdDpgWklQX0JaSVAyYCBvcgogICAgOmNvbnN0OmBaSVBfTFpNQWAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLiBBbiBlcnJvciB3aWxsIGFsc28KICAgIGJlIHJhaXNlZCBpZiB0aGUgY29ycmVzcG9uZGluZyBjb21wcmVzc2lvbiBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHJlYWRgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLgorICAgICAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS50ZXN0emlwKCkKIAogICAgUmVhZCBhbGwgdGhlIGZpbGVzIGluIHRoZSBhcmNoaXZlIGFuZCBjaGVjayB0aGVpciBDUkMncyBhbmQgZmlsZSBoZWFkZXJzLgotICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBiYWQgZmlsZSwgb3IgZWxzZSByZXR1cm4gYGBOb25lYGAuIENhbGxpbmcKLSAgIDptZXRoOmB0ZXN0emlwYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBiYWQgZmlsZSwgb3IgZWxzZSByZXR1cm4gYGBOb25lYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmB0ZXN0ZmlsZWAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCiAKIAogLi4gbWV0aG9kOjogWmlwRmlsZS53cml0ZShmaWxlbmFtZSwgYXJjbmFtZT1Ob25lLCBjb21wcmVzc190eXBlPU5vbmUpCkBAIC0zMjEsMTAgKzM0OCw3IEBACiAgICBsZXR0ZXIgYW5kIHdpdGggbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMgcmVtb3ZlZCkuICBJZiBnaXZlbiwgKmNvbXByZXNzX3R5cGUqCiAgICBvdmVycmlkZXMgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUgKmNvbXByZXNzaW9uKiBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIGZvcgogICAgdGhlIG5ldyBlbnRyeS4KLSAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcKLSAgIDptZXRoOmB3cml0ZWAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZyAgOm1ldGg6YHdyaXRlYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgLgogCiAgICAuLiBub3RlOjoKIApAQCAtMzQzLDE2ICszNjcsMTkgQEAKICAgICAgIElmIGBgYXJjbmFtZWBgIChvciBgYGZpbGVuYW1lYGAsIGlmIGBgYXJjbmFtZWBgIGlzICBub3QgZ2l2ZW4pIGNvbnRhaW5zIGEgbnVsbAogICAgICAgYnl0ZSwgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUgd2lsbCBiZSB0cnVuY2F0ZWQgYXQgdGhlIG51bGwgYnl0ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHdyaXRlYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCBvcgorICAgICAgYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LAorICAgICAgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKKwogLi4gbWV0aG9kOjogWmlwRmlsZS53cml0ZXN0cih6aW5mb19vcl9hcmNuYW1lLCBkYXRhWywgY29tcHJlc3NfdHlwZV0pCiAKICAgIFdyaXRlIHRoZSBzdHJpbmcgKmRhdGEqIHRvIHRoZSBhcmNoaXZlOyAqemluZm9fb3JfYXJjbmFtZSogaXMgZWl0aGVyIHRoZSBmaWxlCiAgICBuYW1lIGl0IHdpbGwgYmUgZ2l2ZW4gaW4gdGhlIGFyY2hpdmUsIG9yIGEgOmNsYXNzOmBaaXBJbmZvYCBpbnN0YW5jZS4gIElmIGl0J3MKICAgIGFuIGluc3RhbmNlLCBhdCBsZWFzdCB0aGUgZmlsZW5hbWUsIGRhdGUsIGFuZCB0aW1lIG11c3QgYmUgZ2l2ZW4uICBJZiBpdCdzIGEKICAgIG5hbWUsIHRoZSBkYXRlIGFuZCB0aW1lIGlzIHNldCB0byB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lLgotICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuZWQgd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCAtLSBjYWxsaW5nCi0gICA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgUnVudGltZUVycm9yYC4gIENhbGxpbmcgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwKLSAgIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbmVkIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAuCiAKICAgIElmIGdpdmVuLCAqY29tcHJlc3NfdHlwZSogb3ZlcnJpZGVzIHRoZSB2YWx1ZSBnaXZlbiBmb3IgdGhlICpjb21wcmVzc2lvbioKICAgIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IgZm9yIHRoZSBuZXcgZW50cnksIG9yIGluIHRoZSAqemluZm9fb3JfYXJjbmFtZSoKQEAgLTM2OCw2ICszOTUsMTIgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgKmNvbXByZXNzX3R5cGUqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIG9yCisgICAgICBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksCisgICAgICBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiBUaGUgZm9sbG93aW5nIGRhdGEgYXR0cmlidXRlcyBhcmUgYWxzbyBhdmFpbGFibGU6CiAKIApAQCAtNDY1LDcgKzQ5OCwzMSBAQAogOm1ldGg6YC5pbmZvbGlzdGAgbWV0aG9kcyBvZiA6Y2xhc3M6YFppcEZpbGVgIG9iamVjdHMuICBFYWNoIG9iamVjdCBzdG9yZXMKIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIG1lbWJlciBvZiB0aGUgWklQIGFyY2hpdmUuCiAKLUluc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKK1RoZXJlIGlzIG9uZSBjbGFzc21ldGhvZCB0byBtYWtlIGEgOmNsYXNzOmBaaXBJbmZvYCBpbnN0YW5jZSBmb3IgYSBmaWxlc3lzdGVtCitmaWxlOgorCisuLiBjbGFzc21ldGhvZDo6IFppcEluZm8uZnJvbV9maWxlKGZpbGVuYW1lLCBhcmNuYW1lPU5vbmUpCisKKyAgIENvbnN0cnVjdCBhIDpjbGFzczpgWmlwSW5mb2AgaW5zdGFuY2UgZm9yIGEgZmlsZSBvbiB0aGUgZmlsZXN5c3RlbSwgaW4KKyAgIHByZXBhcmF0aW9uIGZvciBhZGRpbmcgaXQgdG8gYSB6aXAgZmlsZS4KKworICAgKmZpbGVuYW1lKiBzaG91bGQgYmUgdGhlIHBhdGggdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBvbiB0aGUgZmlsZXN5c3RlbS4KKworICAgSWYgKmFyY25hbWUqIGlzIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyB0aGUgbmFtZSB3aXRoaW4gdGhlIGFyY2hpdmUuCisgICBJZiAqYXJjbmFtZSogaXMgbm90IHNwZWNpZmllZCwgdGhlIG5hbWUgd2lsbCBiZSB0aGUgc2FtZSBhcyAqZmlsZW5hbWUqLCBidXQKKyAgIHdpdGggYW55IGRyaXZlIGxldHRlciBhbmQgbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMgcmVtb3ZlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK0luc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKKworLi4gbWV0aG9kOjogWmlwSW5mby5pc19kaXIoKQorCisgICBSZXR1cm4gVHJ1ZSBpZiB0aGlzIGFyY2hpdmUgbWVtYmVyIGlzIGEgZGlyZWN0b3J5LgorCisgICBUaGlzIHVzZXMgdGhlIGVudHJ5J3MgbmFtZTogZGlyZWN0b3JpZXMgc2hvdWxkIGFsd2F5cyBlbmQgd2l0aCBgYC9gYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIAogLi4gYXR0cmlidXRlOjogWmlwSW5mby5maWxlbmFtZQpAQCAtNTc0LDQgKzYzMSw1IEBACiAKICAgIFNpemUgb2YgdGhlIHVuY29tcHJlc3NlZCBmaWxlLgogCisKIC4uIF9QS1pJUCBBcHBsaWNhdGlvbiBOb3RlOiBodHRwczovL3Brd2FyZS5jYWNoZWZseS5uZXQvd2ViZG9jcy9jYXNlc3R1ZGllcy9BUFBOT1RFLlRYVApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemxpYi5yc3QgYi9Eb2MvbGlicmFyeS96bGliLnJzdAppbmRleCAxZGU3YmFlLi4zZDc0MmFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS96bGliLnJzdApAQCAtNDcsMTQgKzQ3LDE5IEBACiAgICAgICBwbGF0Zm9ybXMsIHVzZSBgYGFkbGVyMzIoZGF0YSkgJiAweGZmZmZmZmZmYGAuCiAKIAotLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhWywgbGV2ZWxdKQorLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhLCBsZXZlbD0tMSkKIAogICAgQ29tcHJlc3NlcyB0aGUgYnl0ZXMgaW4gKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEuCi0gICAqbGV2ZWwqIGlzIGFuIGludGVnZXIgZnJvbSBgYDBgYCB0byBgYDlgYCBjb250cm9sbGluZyB0aGUgbGV2ZWwgb2YgY29tcHJlc3Npb247CisgICAqbGV2ZWwqIGlzIGFuIGludGVnZXIgZnJvbSBgYDBgYCB0byBgYDlgYCBvciBgYC0xYGAgY29udHJvbGxpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOwogICAgYGAxYGAgaXMgZmFzdGVzdCBhbmQgcHJvZHVjZXMgdGhlIGxlYXN0IGNvbXByZXNzaW9uLCBgYDlgYCBpcyBzbG93ZXN0IGFuZAotICAgcHJvZHVjZXMgdGhlIG1vc3QuICBgYDBgYCBpcyBubyBjb21wcmVzc2lvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgNmBgLgorICAgcHJvZHVjZXMgdGhlIG1vc3QuICBgYDBgYCBpcyBubyBjb21wcmVzc2lvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgLTFgYAorICAgKFpfREVGQVVMVF9DT01QUkVTU0lPTikuICBaX0RFRkFVTFRfQ09NUFJFU1NJT04gcmVwcmVzZW50cyBhIGRlZmF1bHQKKyAgIGNvbXByb21pc2UgYmV0d2VlbiBzcGVlZCBhbmQgY29tcHJlc3Npb24gKGN1cnJlbnRseSBlcXVpdmFsZW50IHRvIGxldmVsIDYpLgogICAgUmFpc2VzIHRoZSA6ZXhjOmBlcnJvcmAgZXhjZXB0aW9uIGlmIGFueSBlcnJvciBvY2N1cnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqbGV2ZWwqIGNhbiBub3cgYmUgdXNlZCBhcyBhIGtleXdvcmQgcGFyYW1ldGVyLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tcHJlc3NvYmoobGV2ZWw9LTEsIG1ldGhvZD1ERUZMQVRFRCwgd2JpdHM9MTUsIG1lbUxldmVsPTgsIHN0cmF0ZWd5PVpfREVGQVVMVF9TVFJBVEVHWVssIHpkaWN0XSkKIApAQCAtMTI0LDcgKzEyOSw3IEBACiAgICAgICBwbGF0Zm9ybXMsIHVzZSBgYGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZmBgLgogCiAKLS4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhWywgd2JpdHNbLCBidWZzaXplXV0pCisuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YSwgd2JpdHM9TUFYX1dCSVRTLCBidWZzaXplPURFRl9CVUZfU0laRSkKIAogICAgRGVjb21wcmVzc2VzIHRoZSBieXRlcyBpbiAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZQogICAgdW5jb21wcmVzc2VkIGRhdGEuICBUaGUgKndiaXRzKiBwYXJhbWV0ZXIgZGVwZW5kcyBvbgpAQCAtMTU5LDE0ICsxNjQsMTYgQEAKICAgIFdoZW4gZGVjb21wcmVzc2luZyBhIHN0cmVhbSwgdGhlIHdpbmRvdyBzaXplIG11c3Qgbm90IGJlIHNtYWxsZXIKICAgIHRoYW4gdGhlIHNpemUgb3JpZ2luYWxseSB1c2VkIHRvIGNvbXByZXNzIHRoZSBzdHJlYW07IHVzaW5nIGEgdG9vLXNtYWxsCiAgICB2YWx1ZSBtYXkgcmVzdWx0IGluIGFuIDpleGM6YGVycm9yYCBleGNlcHRpb24uIFRoZSBkZWZhdWx0ICp3Yml0cyogdmFsdWUKLSAgIGlzIDE1LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgbGFyZ2VzdCB3aW5kb3cgc2l6ZSBhbmQgcmVxdWlyZXMgYSB6bGliCi0gICBoZWFkZXIgYW5kIHRyYWlsZXIgdG8gYmUgaW5jbHVkZWQuCisgICBjb3JyZXNwb25kcyB0byB0aGUgbGFyZ2VzdCB3aW5kb3cgc2l6ZSBhbmQgcmVxdWlyZXMgYSB6bGliIGhlYWRlciBhbmQKKyAgIHRyYWlsZXIgdG8gYmUgaW5jbHVkZWQuCiAKICAgICpidWZzaXplKiBpcyB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBidWZmZXIgdXNlZCB0byBob2xkIGRlY29tcHJlc3NlZCBkYXRhLiAgSWYKICAgIG1vcmUgc3BhY2UgaXMgcmVxdWlyZWQsIHRoZSBidWZmZXIgc2l6ZSB3aWxsIGJlIGluY3JlYXNlZCBhcyBuZWVkZWQsIHNvIHlvdQogICAgZG9uJ3QgaGF2ZSB0byBnZXQgdGhpcyB2YWx1ZSBleGFjdGx5IHJpZ2h0OyB0dW5pbmcgaXQgd2lsbCBvbmx5IHNhdmUgYSBmZXcgY2FsbHMKLSAgIHRvIDpjOmZ1bmM6YG1hbGxvY2AuICBUaGUgZGVmYXVsdCBzaXplIGlzIDE2Mzg0LgorICAgdG8gOmM6ZnVuYzpgbWFsbG9jYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICp3Yml0cyogYW5kICpidWZzaXplKiBjYW4gYmUgdXNlZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KIAogLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzb2JqKHdiaXRzPTE1WywgemRpY3RdKQogCkBAIC0yNTIsNyArMjU5LDcgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIG1ldGhvZDo6IERlY29tcHJlc3MuZGVjb21wcmVzcyhkYXRhWywgbWF4X2xlbmd0aF0pCisuLiBtZXRob2Q6OiBEZWNvbXByZXNzLmRlY29tcHJlc3MoZGF0YSwgbWF4X2xlbmd0aD0wKQogCiAgICBEZWNvbXByZXNzICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhCiAgICBjb3JyZXNwb25kaW5nIHRvIGF0IGxlYXN0IHBhcnQgb2YgdGhlIGRhdGEgaW4gKnN0cmluZyouICBUaGlzIGRhdGEgc2hvdWxkIGJlCkBAIC0yNjQsOSArMjcxLDExIEBACiAgICBubyBsb25nZXIgdGhhbiAqbWF4X2xlbmd0aCouIFRoaXMgbWF5IG1lYW4gdGhhdCBub3QgYWxsIG9mIHRoZSBjb21wcmVzc2VkIGlucHV0CiAgICBjYW4gYmUgcHJvY2Vzc2VkOyBhbmQgdW5jb25zdW1lZCBkYXRhIHdpbGwgYmUgc3RvcmVkIGluIHRoZSBhdHRyaWJ1dGUKICAgIDphdHRyOmB1bmNvbnN1bWVkX3RhaWxgLiBUaGlzIGJ5dGVzdHJpbmcgbXVzdCBiZSBwYXNzZWQgdG8gYSBzdWJzZXF1ZW50IGNhbGwgdG8KLSAgIDptZXRoOmBkZWNvbXByZXNzYCBpZiBkZWNvbXByZXNzaW9uIGlzIHRvIGNvbnRpbnVlLiAgSWYgKm1heF9sZW5ndGgqIGlzIG5vdAotICAgc3VwcGxpZWQgdGhlbiB0aGUgd2hvbGUgaW5wdXQgaXMgZGVjb21wcmVzc2VkLCBhbmQgOmF0dHI6YHVuY29uc3VtZWRfdGFpbGAgaXMKLSAgIGVtcHR5LgorICAgOm1ldGg6YGRlY29tcHJlc3NgIGlmIGRlY29tcHJlc3Npb24gaXMgdG8gY29udGludWUuICBJZiAqbWF4X2xlbmd0aCogaXMgemVybworICAgdGhlbiB0aGUgd2hvbGUgaW5wdXQgaXMgZGVjb21wcmVzc2VkLCBhbmQgOmF0dHI6YHVuY29uc3VtZWRfdGFpbGAgaXMgZW1wdHkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqbWF4X2xlbmd0aCogY2FuIGJlIHVzZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LgogCiAKIC4uIG1ldGhvZDo6IERlY29tcHJlc3MuZmx1c2goW2xlbmd0aF0pCmRpZmYgLS1naXQgYS9Eb2MvbWFrZS5iYXQgYi9Eb2MvbWFrZS5iYXQKaW5kZXggNWFiODA4NS4uZGExZjg3NiAxMDA2NDQKLS0tIGEvRG9jL21ha2UuYmF0CisrKyBiL0RvYy9tYWtlLmJhdApAQCAtNDAsNyArNDAsNyBAQAogICAgIGdvdG8gZW5kDQogKQ0KIA0KLSVTUEhJTlhCVUlMRCUgMj4gbnVsDQorJVNQSElOWEJVSUxEJSA+bnVsIDI+IG51bA0KIGlmIGVycm9ybGV2ZWwgOTAwOSAoDQogICAgIGVjaG8uDQogICAgIGVjaG8uVGhlICdzcGhpbngtYnVpbGQnIGNvbW1hbmQgd2FzIG5vdCBmb3VuZC4gTWFrZSBzdXJlIHlvdSBoYXZlIFNwaGlueA0KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0IGIvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKaW5kZXggODhiOTRlYS4uNGZjNmFmMCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKQEAgLTQ3MSwxMCArNDcxLDEwIEBACiAgICBkZWNvcmF0b3JzOiBgZGVjb3JhdG9yYCsKICAgIGRlY29yYXRvcjogIkAiIGBkb3R0ZWRfbmFtZWAgWyIoIiBbYGFyZ3VtZW50X2xpc3RgIFsiLCJdXSAiKSJdIE5FV0xJTkUKICAgIGRvdHRlZF9uYW1lOiBgaWRlbnRpZmllcmAgKCIuIiBgaWRlbnRpZmllcmApKgotICAgcGFyYW1ldGVyX2xpc3Q6IChgZGVmcGFyYW1ldGVyYCAiLCIpKgotICAgICAgICAgICAgICAgICA6IHwgIioiIFtgcGFyYW1ldGVyYF0gKCIsIiBgZGVmcGFyYW1ldGVyYCkqIFsiLCIgIioqIiBgcGFyYW1ldGVyYF0KLSAgICAgICAgICAgICAgICAgOiB8ICIqKiIgYHBhcmFtZXRlcmAKLSAgICAgICAgICAgICAgICAgOiB8IGBkZWZwYXJhbWV0ZXJgIFsiLCJdICkKKyAgIHBhcmFtZXRlcl9saXN0OiBgZGVmcGFyYW1ldGVyYCAoIiwiIGBkZWZwYXJhbWV0ZXJgKSogWyIsIiBbYHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzYF1dCisgICAgICAgICAgICAgICAgIDogfCBgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NgCisgICBwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnczogIioiIFtgcGFyYW1ldGVyYF0gKCIsIiBgZGVmcGFyYW1ldGVyYCkqIFsiLCIgWyIqKiIgYHBhcmFtZXRlcmAgWyIsIl1dXQorICAgICAgICAgICAgICAgICAgICAgICAgIDogfCAiKioiIGBwYXJhbWV0ZXJgIFsiLCJdCiAgICBwYXJhbWV0ZXI6IGBpZGVudGlmaWVyYCBbIjoiIGBleHByZXNzaW9uYF0KICAgIGRlZnBhcmFtZXRlcjogYHBhcmFtZXRlcmAgWyI9IiBgZXhwcmVzc2lvbmBdCiAgICBmdW5jbmFtZTogYGlkZW50aWZpZXJgCkBAIC01NDYsMTEgKzU0NiwxMiBAQAogZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgbWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIKIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbSBrZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0CiB2YWx1ZXMuICBJZiB0aGUgZm9ybSAiYGAqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlCi1yZWNlaXZpbmcgYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYKLXRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ldyBkaWN0aW9uYXJ5Ci1yZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ldyBlbXB0eSBkaWN0aW9uYXJ5LgotUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yICJgYCppZGVudGlmaWVyYGAiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQKLW1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLgorcmVjZWl2aW5nIGFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4KK0lmIHRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ldworb3JkZXJlZCBtYXBwaW5nIHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEKK25ldyBlbXB0eSBtYXBwaW5nIG9mIHRoZSBzYW1lIHR5cGUuICBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IKKyJgYCppZGVudGlmaWVyYGAiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkCit1c2VkIGtleXdvcmQgYXJndW1lbnRzLgogCiAuLiBpbmRleDo6IHBhaXI6IGZ1bmN0aW9uOyBhbm5vdGF0aW9ucwogCkBAIC02MzIsNiArNjMzLDExIEBACiBkaWN0aW9uYXJ5LiAgVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsCiBuYW1lc3BhY2UuCiAKK1RoZSBvcmRlciBpbiB3aGljaCBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjbGFzcyBib2R5IGlzIHByZXNlcnZlZAoraW4gdGhlIG5ldyBjbGFzcydzIGBgX19kaWN0X19gYC4gIE5vdGUgdGhhdCB0aGlzIGlzIHJlbGlhYmxlIG9ubHkgcmlnaHQKK2FmdGVyIHRoZSBjbGFzcyBpcyBjcmVhdGVkIGFuZCBvbmx5IGZvciBjbGFzc2VzIHRoYXQgd2VyZSBkZWZpbmVkIHVzaW5nCit0aGUgZGVmaW5pdGlvbiBzeW50YXguCisKIENsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgOnJlZjpgbWV0YWNsYXNzZXMgPG1ldGFjbGFzc2VzPmAuCiAKIENsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucywgOjoKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdCBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAppbmRleCA2ODk0YzdjLi4yNDZlMmUzIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CkBAIC02ODYsMTAgKzY4NiwyOCBAQAogICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksIGUuZy4sCiAgICBgYG0ueCA9IDFgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdID0gMWBgLgogCisgICAuLiBpbmRleDo6CisgICAgICBzaW5nbGU6IF9fbmFtZV9fIChtb2R1bGUgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX2RvY19fIChtb2R1bGUgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX2ZpbGVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19hbm5vdGF0aW9uc19fIChtb2R1bGUgYXR0cmlidXRlKQorICAgICAgcGFpcjogbW9kdWxlOyBuYW1lc3BhY2UKKworICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6IDphdHRyOmBfX25hbWVfX2AgaXMgdGhlIG1vZHVsZSdzIG5hbWU7CisgICA6YXR0cjpgX19kb2NfX2AgaXMgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYCBpZgorICAgdW5hdmFpbGFibGU7IDphdHRyOmBfX2Fubm90YXRpb25zX19gIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcKKyAgIDp0ZXJtOmB2YXJpYWJsZSBhbm5vdGF0aW9ucyA8dmFyaWFibGUgYW5ub3RhdGlvbj5gIGNvbGxlY3RlZCBkdXJpbmcgbW9kdWxlCisgICBib2R5IGV4ZWN1dGlvbjsgOmF0dHI6YF9fZmlsZV9fYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGUKKyAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgOmF0dHI6YF9fZmlsZV9fYAorICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgQyBtb2R1bGVzCisgICB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yIGV4dGVuc2lvbiBtb2R1bGVzCisgICBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZAorICAgbGlicmFyeSBmaWxlLgorCiAgICAuLiBpbmRleDo6IHNpbmdsZTogX19kaWN0X18gKG1vZHVsZSBhdHRyaWJ1dGUpCiAKLSAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGlzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgYXMgYQotICAgZGljdGlvbmFyeSBvYmplY3QuCisgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6IDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBpcyB0aGUgbW9kdWxlJ3MKKyAgIG5hbWVzcGFjZSBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LgogCiAgICAuLiBpbXBsLWRldGFpbDo6CiAKQEAgLTY5OCwyMSArNzE2LDYgQEAKICAgICAgIGRpY3Rpb25hcnkgc3RpbGwgaGFzIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkKICAgICAgIG9yIGtlZXAgdGhlIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuCiAKLSAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCi0gICAgICBzaW5nbGU6IF9fZG9jX18gKG1vZHVsZSBhdHRyaWJ1dGUpCi0gICAgICBzaW5nbGU6IF9fZmlsZV9fIChtb2R1bGUgYXR0cmlidXRlKQotICAgICAgcGFpcjogbW9kdWxlOyBuYW1lc3BhY2UKLQotICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6IDphdHRyOmBfX25hbWVfX2AgaXMgdGhlIG1vZHVsZSdzIG5hbWU7Ci0gICA6YXR0cjpgX19kb2NfX2AgaXMgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYCBpZgotICAgdW5hdmFpbGFibGU7IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlCi0gICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AKLSAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIEMgbW9kdWxlcwotICAgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvciBleHRlbnNpb24gbW9kdWxlcwotICAgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQKLSAgIGxpYnJhcnkgZmlsZS4KLQogQ3VzdG9tIGNsYXNzZXMKICAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZSBzZWN0aW9uCiAgICA6cmVmOmBjbGFzc2ApLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4KQEAgLTc2MSwxMyArNzY0LDE3IEBACiAgICAgICBzaW5nbGU6IF9fZGljdF9fIChjbGFzcyBhdHRyaWJ1dGUpCiAgICAgICBzaW5nbGU6IF9fYmFzZXNfXyAoY2xhc3MgYXR0cmlidXRlKQogICAgICAgc2luZ2xlOiBfX2RvY19fIChjbGFzcyBhdHRyaWJ1dGUpCisgICAgICBzaW5nbGU6IF9fYW5ub3RhdGlvbnNfXyAoY2xhc3MgYXR0cmlidXRlKQogCiAgICBTcGVjaWFsIGF0dHJpYnV0ZXM6IDphdHRyOmB+ZGVmaW5pdGlvbi5fX25hbWVfX2AgaXMgdGhlIGNsYXNzIG5hbWU7IDphdHRyOmBfX21vZHVsZV9fYCBpcwogICAgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGlzIHRoZQogICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzcydzIG5hbWVzcGFjZTsgOmF0dHI6YH5jbGFzcy5fX2Jhc2VzX19gIGlzIGEKICAgIHR1cGxlIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiB0aGUKICAgIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgOmF0dHI6YF9fZG9jX19gIGlzIHRoZQotICAgY2xhc3MncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZiB1bmRlZmluZWQuCisgICBjbGFzcydzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmIHVuZGVmaW5lZDsKKyAgIDphdHRyOmBfX2Fubm90YXRpb25zX19gIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcKKyAgIDp0ZXJtOmB2YXJpYWJsZSBhbm5vdGF0aW9ucyA8dmFyaWFibGUgYW5ub3RhdGlvbj5gIGNvbGxlY3RlZCBkdXJpbmcKKyAgIGNsYXNzIGJvZHkgZXhlY3V0aW9uLgogCiBDbGFzcyBpbnN0YW5jZXMKICAgIC4uIGluZGV4OjoKQEAgLTEwNjMsNiArMTA3MCwxMiBAQAogb3BlcmF0aW9uIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHkKIDpleGM6YEF0dHJpYnV0ZUVycm9yYCBvciA6ZXhjOmBUeXBlRXJyb3JgKS4KIAorU2V0dGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGBgTm9uZWBgIGluZGljYXRlcyB0aGF0IHRoZSBjb3JyZXNwb25kaW5nCitvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4gIEZvciBleGFtcGxlLCBpZiBhIGNsYXNzIHNldHMKKzptZXRoOmBfX2l0ZXJfX2AgdG8gYGBOb25lYGAsIHRoZSBjbGFzcyBpcyBub3QgaXRlcmFibGUsIHNvIGNhbGxpbmcKKzpmdW5jOmBpdGVyYCBvbiBpdHMgaW5zdGFuY2VzIHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgICh3aXRob3V0CitmYWxsaW5nIGJhY2sgdG8gOm1ldGg6YF9fZ2V0aXRlbV9fYCkuIFsjXV8KKwogV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpcyBpbXBvcnRhbnQgdGhhdAogdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdCBtYWtlcyBzZW5zZSBmb3IgdGhlCiBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZSBzZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbApAQCAtMTIzMyw4ICsxMjQ2LDkgQEAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpCiAKLSAgIENhbGxlZCBieSB0aGUgOmZ1bmM6YGZvcm1hdGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZQotICAgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCBvZiBjbGFzcyA6Y2xhc3M6YHN0cmApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIgorICAgQ2FsbGVkIGJ5IHRoZSA6ZnVuYzpgZm9ybWF0YCBidWlsdC1pbiBmdW5jdGlvbiwKKyAgIGFuZCBieSBleHRlbnNpb24sIGV2YWx1YXRpb24gb2YgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscworICAgPGYtc3RyaW5ncz5gIGFuZCB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiCiAgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzCiAgICBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBkZXNpcmVkLgogICAgVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMgdXAgdG8gdGhlIHR5cGUKQEAgLTE0OTEsNiArMTUwNSwxNCBAQAogICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyIGNsYXNzLgogCiAKKy4uIG1ldGhvZDo6IG9iamVjdC5fX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpCisKKyAgIENhbGxlZCBhdCB0aGUgdGltZSB0aGUgb3duaW5nIGNsYXNzICpvd25lciogaXMgY3JlYXRlZC4gVGhlCisgICBkZXNjcmlwdG9yIGhhcyBiZWVuIGFzc2lnbmVkIHRvICpuYW1lKi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogVGhlIGF0dHJpYnV0ZSA6YXR0cjpgX19vYmpjbGFzc19fYCBpcyBpbnRlcnByZXRlZCBieSB0aGUgOm1vZDpgaW5zcGVjdGAgbW9kdWxlCiBhcyBzcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAoc2V0dGluZyB0aGlzCiBhcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mIGR5bmFtaWMgY2xhc3MgYXR0cmlidXRlcykuCkBAIC0xNjI4LDExICsxNjUwLDU2IEBACiAqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZSAqX19zbG90c19fKi4KIAogCi0uLiBfbWV0YWNsYXNzZXM6CisuLiBfY2xhc3MtY3VzdG9taXphdGlvbjoKIAogQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK1doZW5ldmVyIGEgY2xhc3MgaW5oZXJpdHMgZnJvbSBhbm90aGVyIGNsYXNzLCAqX19pbml0X3N1YmNsYXNzX18qIGlzCitjYWxsZWQgb24gdGhhdCBjbGFzcy4gVGhpcyB3YXksIGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlIGNsYXNzZXMgd2hpY2gKK2NoYW5nZSB0aGUgYmVoYXZpb3Igb2Ygc3ViY2xhc3Nlcy4gVGhpcyBpcyBjbG9zZWx5IHJlbGF0ZWQgdG8gY2xhc3MKK2RlY29yYXRvcnMsIGJ1dCB3aGVyZSBjbGFzcyBkZWNvcmF0b3JzIG9ubHkgYWZmZWN0IHRoZSBzcGVjaWZpYyBjbGFzcyB0aGV5J3JlCithcHBsaWVkIHRvLCBgYF9faW5pdF9zdWJjbGFzc19fYGAgc29sZWx5IGFwcGxpZXMgdG8gZnV0dXJlIHN1YmNsYXNzZXMgb2YgdGhlCitjbGFzcyBkZWZpbmluZyB0aGUgbWV0aG9kLgorCisuLiBjbGFzc21ldGhvZDo6IG9iamVjdC5fX2luaXRfc3ViY2xhc3NfXyhjbHMpCisKKyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgY29udGFpbmluZyBjbGFzcyBpcyBzdWJjbGFzc2VkLgorICAgKmNscyogaXMgdGhlbiB0aGUgbmV3IHN1YmNsYXNzLiBJZiBkZWZpbmVkIGFzIGEgbm9ybWFsIGluc3RhbmNlIG1ldGhvZCwKKyAgIHRoaXMgbWV0aG9kIGlzIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEgY2xhc3MgbWV0aG9kLgorCisgICBLZXl3b3JkIGFyZ3VtZW50cyB3aGljaCBhcmUgZ2l2ZW4gdG8gYSBuZXcgY2xhc3MgYXJlIHBhc3NlZCB0bworICAgdGhlIHBhcmVudCdzIGNsYXNzIGBgX19pbml0X3N1YmNsYXNzX19gYC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aAorICAgb3RoZXIgY2xhc3NlcyB1c2luZyBgYF9faW5pdF9zdWJjbGFzc19fYGAsIG9uZSBzaG91bGQgdGFrZSBvdXQgdGhlCisgICBuZWVkZWQga2V5d29yZCBhcmd1bWVudHMgYW5kIHBhc3MgdGhlIG90aGVycyBvdmVyIHRvIHRoZSBiYXNlCisgICBjbGFzcywgYXMgaW46OgorCisgICAgICAgY2xhc3MgUGhpbG9zb3BoZXI6CisgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIGRlZmF1bHRfbmFtZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgIGNscy5kZWZhdWx0X25hbWUgPSBkZWZhdWx0X25hbWUKKworICAgICAgIGNsYXNzIEF1c3RyYWxpYW5QaGlsb3NvcGhlcihQaGlsb3NvcGhlciwgZGVmYXVsdF9uYW1lPSJCcnVjZSIpOgorICAgICAgICAgICBwYXNzCisKKyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGBgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fYGAgZG9lcworICAgbm90aGluZywgYnV0IHJhaXNlcyBhbiBlcnJvciBpZiBpdCBpcyBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhlIG1ldGFjbGFzcyBoaW50IGBgbWV0YWNsYXNzYGAgaXMgY29uc3VtZWQgYnkgdGhlIHJlc3Qgb2YgdGhlIHR5cGUKKyAgICAgIG1hY2hpbmVyeSwgYW5kIGlzIG5ldmVyIHBhc3NlZCB0byBgYF9faW5pdF9zdWJjbGFzc19fYGAgaW1wbGVtZW50YXRpb25zLgorICAgICAgVGhlIGFjdHVhbCBtZXRhY2xhc3MgKHJhdGhlciB0aGFuIHRoZSBleHBsaWNpdCBoaW50KSBjYW4gYmUgYWNjZXNzZWQgYXMKKyAgICAgIGBgdHlwZShjbHMpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIF9tZXRhY2xhc3NlczoKKworTWV0YWNsYXNzZXMKK15eXl5eXl5eXl5eCisKIEJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIDpmdW5jOmB0eXBlYC4gVGhlIGNsYXNzIGJvZHkgaXMKIGV4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgbG9jYWxseSB0byB0aGUKIHJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSlgYC4KQEAgLTE2OTAsNyArMTc1Nyw3IEBACiBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWUgZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbikuCiAKIElmIHRoZSBtZXRhY2xhc3MgaGFzIG5vIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzIG5hbWVzcGFjZQotaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgOmZ1bmM6YGRpY3RgIGluc3RhbmNlLgoraXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgb3JkZXJlZCBtYXBwaW5nLgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMTczNCw5ICsxODAxLDkgQEAKIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuCiAKIFdoZW4gYSBuZXcgY2xhc3MgaXMgY3JlYXRlZCBieSBgYHR5cGUuX19uZXdfX2BgLCB0aGUgb2JqZWN0IHByb3ZpZGVkIGFzIHRoZQotbmFtZXNwYWNlIHBhcmFtZXRlciBpcyBjb3BpZWQgdG8gYSBzdGFuZGFyZCBQeXRob24gZGljdGlvbmFyeSBhbmQgdGhlIG9yaWdpbmFsCi1vYmplY3QgaXMgZGlzY2FyZGVkLiBUaGUgbmV3IGNvcHkgYmVjb21lcyB0aGUgOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGF0dHJpYnV0ZQotb2YgdGhlIGNsYXNzIG9iamVjdC4KK25hbWVzcGFjZSBwYXJhbWV0ZXIgaXMgY29waWVkIHRvIGEgbmV3IG9yZGVyZWQgbWFwcGluZyBhbmQgdGhlIG9yaWdpbmFsCitvYmplY3QgaXMgZGlzY2FyZGVkLiBUaGUgbmV3IGNvcHkgaXMgd3JhcHBlZCBpbiBhIHJlYWQtb25seSBwcm94eSwgd2hpY2gKK2JlY29tZXMgdGhlIDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBhdHRyaWJ1dGUgb2YgdGhlIGNsYXNzIG9iamVjdC4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIwNTksNyArMjEyNiw3IEBACiAgICAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGBAYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLCA6ZnVuYzpgZGl2bW9kYCwKICAgIDpmdW5jOmBwb3dgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsIGBgfGBgKSB3aXRoIHJlZmxlY3RlZAogICAgKHN3YXBwZWQpIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMKLSAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQKKyAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBbI11fIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudAogICAgdHlwZXMuIFsjXV8gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggLSB5YGAsIHdoZXJlICp5KiBpcwogICAgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiA6bWV0aDpgX19yc3ViX19gIG1ldGhvZCwgYGB5Ll9fcnN1Yl9fKHgpYGAKICAgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnMgKk5vdEltcGxlbWVudGVkKi4KQEAgLTI0NzUsNiArMjU0MiwxNyBAQAogICAgY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuJ3QgYSBnb29kIGlkZWEgdGhvdWdoLCBzaW5jZSBpdCBjYW4KICAgIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmIGl0IGlzIGhhbmRsZWQgaW5jb3JyZWN0bHkuCiAKKy4uIFsjXSBUaGUgOm1ldGg6YF9faGFzaF9fYCwgOm1ldGg6YF9faXRlcl9fYCwgOm1ldGg6YF9fcmV2ZXJzZWRfX2AsIGFuZAorICAgOm1ldGg6YF9fY29udGFpbnNfX2AgbWV0aG9kcyBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoaXM7IG90aGVycworICAgd2lsbCBzdGlsbCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAsIGJ1dCBtYXkgZG8gc28gYnkgcmVseWluZyBvbgorICAgdGhlIGJlaGF2aW9yIHRoYXQgYGBOb25lYGAgaXMgbm90IGNhbGxhYmxlLgorCisuLiBbI10gIkRvZXMgbm90IHN1cHBvcnQiIGhlcmUgbWVhbnMgdGhhdCB0aGUgY2xhc3MgaGFzIG5vIHN1Y2ggbWV0aG9kLCBvcgorICAgdGhlIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYC4gIERvIG5vdCBzZXQgdGhlIG1ldGhvZCB0bworICAgYGBOb25lYGAgaWYgeW91IHdhbnQgdG8gZm9yY2UgZmFsbGJhY2sgdG8gdGhlIHJpZ2h0IG9wZXJhbmQncyByZWZsZWN0ZWQKKyAgIG1ldGhvZC0tdGhhdCB3aWxsIGluc3RlYWQgaGF2ZSB0aGUgb3Bwb3NpdGUgZWZmZWN0IG9mIGV4cGxpY2l0bHkKKyAgICpibG9ja2luZyogc3VjaCBmYWxsYmFjay4KKwogLi4gWyNdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1yZWZsZWN0ZWQgbWV0aG9kCiAgICAoc3VjaCBhcyA6bWV0aDpgX19hZGRfX2ApIGZhaWxzIHRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCwgd2hpY2ggaXMgd2h5IHRoZQogICAgcmVmbGVjdGVkIG1ldGhvZCBpcyBub3QgY2FsbGVkLgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0IGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CmluZGV4IDY0MzAyYjguLjVlMmMxYzggMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKQEAgLTM2LDcgKzM2LDcgQEAKIAogV2hlbiBhIG1vZHVsZSBpcyBmaXJzdCBpbXBvcnRlZCwgUHl0aG9uIHNlYXJjaGVzIGZvciB0aGUgbW9kdWxlIGFuZCBpZiBmb3VuZCwKIGl0IGNyZWF0ZXMgYSBtb2R1bGUgb2JqZWN0IFsjZm5tb11fLCBpbml0aWFsaXppbmcgaXQuICBJZiB0aGUgbmFtZWQgbW9kdWxlCi1jYW5ub3QgYmUgZm91bmQsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBQeXRob24gaW1wbGVtZW50cyB2YXJpb3VzCitjYW5ub3QgYmUgZm91bmQsIGFuIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4gIFB5dGhvbiBpbXBsZW1lbnRzIHZhcmlvdXMKIHN0cmF0ZWdpZXMgdG8gc2VhcmNoIGZvciB0aGUgbmFtZWQgbW9kdWxlIHdoZW4gdGhlIGltcG9ydCBtYWNoaW5lcnkgaXMKIGludm9rZWQuICBUaGVzZSBzdHJhdGVnaWVzIGNhbiBiZSBtb2RpZmllZCBhbmQgZXh0ZW5kZWQgYnkgdXNpbmcgdmFyaW91cyBob29rcwogZGVzY3JpYmVkIGluIHRoZSBzZWN0aW9ucyBiZWxvdy4KQEAgLTE2Nyw3ICsxNjcsNyBAQAogVGhpcyBuYW1lIHdpbGwgYmUgdXNlZCBpbiB2YXJpb3VzIHBoYXNlcyBvZiB0aGUgaW1wb3J0IHNlYXJjaCwgYW5kIGl0IG1heSBiZQogdGhlIGRvdHRlZCBwYXRoIHRvIGEgc3VibW9kdWxlLCBlLmcuIGBgZm9vLmJhci5iYXpgYC4gIEluIHRoaXMgY2FzZSwgUHl0aG9uCiBmaXJzdCB0cmllcyB0byBpbXBvcnQgYGBmb29gYCwgdGhlbiBgYGZvby5iYXJgYCwgYW5kIGZpbmFsbHkgYGBmb28uYmFyLmJhemBgLgotSWYgYW55IG9mIHRoZSBpbnRlcm1lZGlhdGUgaW1wb3J0cyBmYWlsLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgorSWYgYW55IG9mIHRoZSBpbnRlcm1lZGlhdGUgaW1wb3J0cyBmYWlsLCBhbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuCiAKIAogVGhlIG1vZHVsZSBjYWNoZQpAQCAtMTg2LDcgKzE4Niw3IEBACiBEdXJpbmcgaW1wb3J0LCB0aGUgbW9kdWxlIG5hbWUgaXMgbG9va2VkIHVwIGluIDpkYXRhOmBzeXMubW9kdWxlc2AgYW5kIGlmCiBwcmVzZW50LCB0aGUgYXNzb2NpYXRlZCB2YWx1ZSBpcyB0aGUgbW9kdWxlIHNhdGlzZnlpbmcgdGhlIGltcG9ydCwgYW5kIHRoZQogcHJvY2VzcyBjb21wbGV0ZXMuICBIb3dldmVyLCBpZiB0aGUgdmFsdWUgaXMgYGBOb25lYGAsIHRoZW4gYW4KLTpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgbWlzc2luZywgUHl0aG9uIHdpbGwKKzpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBtaXNzaW5nLCBQeXRob24gd2lsbAogY29udGludWUgc2VhcmNoaW5nIGZvciB0aGUgbW9kdWxlLgogCiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGlzIHdyaXRhYmxlLiAgRGVsZXRpbmcgYSBrZXkgbWF5IG5vdCBkZXN0cm95IHRoZQpAQCAtMTk0LDcgKzE5NCw3IEBACiBidXQgaXQgd2lsbCBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyeSBmb3IgdGhlIG5hbWVkIG1vZHVsZSwgY2F1c2luZwogUHl0aG9uIHRvIHNlYXJjaCBhbmV3IGZvciB0aGUgbmFtZWQgbW9kdWxlIHVwb24gaXRzIG5leHQKIGltcG9ydC4gVGhlIGtleSBjYW4gYWxzbyBiZSBhc3NpZ25lZCB0byBgYE5vbmVgYCwgZm9yY2luZyB0aGUgbmV4dCBpbXBvcnQKLW9mIHRoZSBtb2R1bGUgdG8gcmVzdWx0IGluIGFuIDpleGM6YEltcG9ydEVycm9yYC4KK29mIHRoZSBtb2R1bGUgdG8gcmVzdWx0IGluIGFuIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgLgogCiBCZXdhcmUgdGhvdWdoLCBhcyBpZiB5b3Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgbW9kdWxlIG9iamVjdCwKIGludmFsaWRhdGUgaXRzIGNhY2hlIGVudHJ5IGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIGFuZCB0aGVuIHJlLWltcG9ydCB0aGUKQEAgLTI4OCw4ICsyODgsOCBAQAogSWYgdGhlIG1ldGEgcGF0aCBmaW5kZXIga25vd3MgaG93IHRvIGhhbmRsZSB0aGUgbmFtZWQgbW9kdWxlLCBpdCByZXR1cm5zIGEKIHNwZWMgb2JqZWN0LiAgSWYgaXQgY2Fubm90IGhhbmRsZSB0aGUgbmFtZWQgbW9kdWxlLCBpdCByZXR1cm5zIGBgTm9uZWBgLiAgSWYKIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBwcm9jZXNzaW5nIHJlYWNoZXMgdGhlIGVuZCBvZiBpdHMgbGlzdCB3aXRob3V0IHJldHVybmluZwotYSBzcGVjLCB0aGVuIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBBbnkgb3RoZXIgZXhjZXB0aW9ucyByYWlzZWQKLWFyZSBzaW1wbHkgcHJvcGFnYXRlZCB1cCwgYWJvcnRpbmcgdGhlIGltcG9ydCBwcm9jZXNzLgorYSBzcGVjLCB0aGVuIGEgOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgQW55IG90aGVyIGV4Y2VwdGlvbnMKK3JhaXNlZCBhcmUgc2ltcGx5IHByb3BhZ2F0ZWQgdXAsIGFib3J0aW5nIHRoZSBpbXBvcnQgcHJvY2Vzcy4KIAogVGhlIDptZXRoOmB+aW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlci5maW5kX3NwZWMoKWAgbWV0aG9kIG9mIG1ldGEgcGF0aAogZmluZGVycyBpcyBjYWxsZWQgd2l0aCB0d28gb3IgdGhyZWUgYXJndW1lbnRzLiAgVGhlIGZpcnN0IGlzIHRoZSBmdWxseQpAQCAtMjk4LDkgKzI5OCw5IEBACiB0b3AtbGV2ZWwgbW9kdWxlcywgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBgYE5vbmVgYCwgYnV0IGZvciBzdWJtb2R1bGVzIG9yCiBzdWJwYWNrYWdlcywgdGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgdGhlIHBhcmVudCBwYWNrYWdlJ3MKIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUuIElmIHRoZSBhcHByb3ByaWF0ZSBgYF9fcGF0aF9fYGAgYXR0cmlidXRlIGNhbm5vdAotYmUgYWNjZXNzZWQsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBUaGUgdGhpcmQgYXJndW1lbnQgaXMgYW4KLWV4aXN0aW5nIG1vZHVsZSBvYmplY3QgdGhhdCB3aWxsIGJlIHRoZSB0YXJnZXQgb2YgbG9hZGluZyBsYXRlci4gIFRoZQotaW1wb3J0IHN5c3RlbSBwYXNzZXMgaW4gYSB0YXJnZXQgbW9kdWxlIG9ubHkgZHVyaW5nIHJlbG9hZC4KK2JlIGFjY2Vzc2VkLCBhbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuICBUaGUgdGhpcmQgYXJndW1lbnQKK2lzIGFuIGV4aXN0aW5nIG1vZHVsZSBvYmplY3QgdGhhdCB3aWxsIGJlIHRoZSB0YXJnZXQgb2YgbG9hZGluZyBsYXRlci4KK1RoZSBpbXBvcnQgc3lzdGVtIHBhc3NlcyBpbiBhIHRhcmdldCBtb2R1bGUgb25seSBkdXJpbmcgcmVsb2FkLgogCiBUaGUgbWV0YSBwYXRoIG1heSBiZSB0cmF2ZXJzZWQgbXVsdGlwbGUgdGltZXMgZm9yIGEgc2luZ2xlIGltcG9ydCByZXF1ZXN0LgogRm9yIGV4YW1wbGUsIGFzc3VtaW5nIG5vbmUgb2YgdGhlIG1vZHVsZXMgaW52b2x2ZWQgaGFzIGFscmVhZHkgYmVlbiBjYWNoZWQsCkBAIC01NTQsMTkgKzU1NCwzMCBAQAogICAgZGV0YWlscy4KIAogICAgVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBpbnN0ZWFkIG9mIGBgX19uYW1lX19gYCB0byBjYWxjdWxhdGUgZXhwbGljaXQKLSAgIHJlbGF0aXZlIGltcG9ydHMgZm9yIG1haW4gbW9kdWxlcywgYXMgZGVmaW5lZCBpbiA6cGVwOmAzNjZgLgorICAgcmVsYXRpdmUgaW1wb3J0cyBmb3IgbWFpbiBtb2R1bGVzLCBhcyBkZWZpbmVkIGluIDpwZXA6YDM2NmAuIEl0IGlzCisgICBleHBlY3RlZCB0byBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIGBgX19zcGVjX18ucGFyZW50YGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgdmFsdWUgb2YgYGBfX3BhY2thZ2VfX2BgIGlzIGV4cGVjdGVkIHRvIGJlIHRoZSBzYW1lIGFzCisgICAgICBgYF9fc3BlY19fLnBhcmVudGBgLgogCiAuLiBhdHRyaWJ1dGU6OiBfX3NwZWNfXwogCiAgICBUaGUgYGBfX3NwZWNfX2BgIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCB0byB0aGUgbW9kdWxlIHNwZWMgdGhhdCB3YXMKLSAgIHVzZWQgd2hlbiBpbXBvcnRpbmcgdGhlIG1vZHVsZS4gIFRoaXMgaXMgdXNlZCBwcmltYXJpbHkgZm9yCi0gICBpbnRyb3NwZWN0aW9uIGFuZCBkdXJpbmcgcmVsb2FkaW5nLiAgU2V0dGluZyBgYF9fc3BlY19fYGAKKyAgIHVzZWQgd2hlbiBpbXBvcnRpbmcgdGhlIG1vZHVsZS4gU2V0dGluZyBgYF9fc3BlY19fYGAKICAgIGFwcHJvcHJpYXRlbHkgYXBwbGllcyBlcXVhbGx5IHRvIDpyZWY6YG1vZHVsZXMgaW5pdGlhbGl6ZWQgZHVyaW5nCiAgICBpbnRlcnByZXRlciBzdGFydHVwIDxwcm9ncmFtcz5gLiAgVGhlIG9uZSBleGNlcHRpb24gaXMgYGBfX21haW5fX2BgLAogICAgd2hlcmUgYGBfX3NwZWNfX2BgIGlzIDpyZWY6YHNldCB0byBOb25lIGluIHNvbWUgY2FzZXMgPG1haW5fc3BlYz5gLgogCisgICBXaGVuIGBgX19wYWNrYWdlX19gYCBpcyBub3QgZGVmaW5lZCwgYGBfX3NwZWNfXy5wYXJlbnRgYCBpcyB1c2VkIGFzCisgICBhIGZhbGxiYWNrLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIGBgX19zcGVjX18ucGFyZW50YGAgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIHdoZW4gYGBfX3BhY2thZ2VfX2BgIGlzCisgICAgICBub3QgZGVmaW5lZC4KKwogLi4gYXR0cmlidXRlOjogX19wYXRoX18KIAogICAgSWYgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UgKGVpdGhlciByZWd1bGFyIG9yIG5hbWVzcGFjZSksIHRoZSBtb2R1bGUKQEAgLTg3Niw3ICs4ODcsNyBAQAogCiBUbyBzZWxlY3RpdmVseSBwcmV2ZW50IGltcG9ydCBvZiBzb21lIG1vZHVsZXMgZnJvbSBhIGhvb2sgZWFybHkgb24gdGhlCiBtZXRhIHBhdGggKHJhdGhlciB0aGFuIGRpc2FibGluZyB0aGUgc3RhbmRhcmQgaW1wb3J0IHN5c3RlbSBlbnRpcmVseSksCi1pdCBpcyBzdWZmaWNpZW50IHRvIHJhaXNlIDpleGM6YEltcG9ydEVycm9yYCBkaXJlY3RseSBmcm9tCitpdCBpcyBzdWZmaWNpZW50IHRvIHJhaXNlIDpleGM6YE1vZHVsZU5vRm91bmRFcnJvcmAgZGlyZWN0bHkgZnJvbQogOm1ldGg6YH5pbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyLmZpbmRfc3BlY2AgaW5zdGVhZCBvZiByZXR1cm5pbmcKIGBgTm9uZWBgLiBUaGUgbGF0dGVyIGluZGljYXRlcyB0aGF0IHRoZSBtZXRhIHBhdGggc2VhcmNoIHNob3VsZCBjb250aW51ZSwKIHdoaWxlIHJhaXNpbmcgYW4gZXhjZXB0aW9uIHRlcm1pbmF0ZXMgaXQgaW1tZWRpYXRlbHkuCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0IGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAppbmRleCAzN2YyNWYxLi5hN2M2YTY4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKQEAgLTQwNSw3ICs0MDUsOCBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBzdHJpbmdsaXRlcmFsOiBbYHN0cmluZ3ByZWZpeGBdKGBzaG9ydHN0cmluZ2AgfCBgbG9uZ3N0cmluZ2ApCi0gICBzdHJpbmdwcmVmaXg6ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIgorICAgc3RyaW5ncHJlZml4OiAiciIgfCAidSIgfCAiUiIgfCAiVSIgfCAiZiIgfCAiRiIKKyAgICAgICAgICAgICAgIDogfCAiZnIiIHwgIkZyIiB8ICJmUiIgfCAiRlIiIHwgInJmIiB8ICJyRiIgfCAiUmYiIHwgIlJGIgogICAgc2hvcnRzdHJpbmc6ICInIiBgc2hvcnRzdHJpbmdpdGVtYCogIiciIHwgJyInIGBzaG9ydHN0cmluZ2l0ZW1gKiAnIicKICAgIGxvbmdzdHJpbmc6ICInJyciIGBsb25nc3RyaW5naXRlbWAqICInJyciIHwgJyIiIicgYGxvbmdzdHJpbmdpdGVtYCogJyIiIicKICAgIHNob3J0c3RyaW5naXRlbTogYHNob3J0c3RyaW5nY2hhcmAgfCBgc3RyaW5nZXNjYXBlc2VxYApAQCAtNDY0LDYgKzQ2NSwxMSBAQAogICAgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mIGR1YWwgUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4KICAgIFNlZSA6cGVwOmA0MTRgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCitBIHN0cmluZyBsaXRlcmFsIHdpdGggYGAnZidgYCBvciBgYCdGJ2BgIGluIGl0cyBwcmVmaXggaXMgYQorOmRmbjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsYDsgc2VlIDpyZWY6YGYtc3RyaW5nc2AuICBUaGUgYGAnZidgYCBtYXkgYmUKK2NvbWJpbmVkIHdpdGggYGAncidgYCwgYnV0IG5vdCB3aXRoIGBgJ2InYGAgb3IgYGAndSdgYCwgdGhlcmVmb3JlIHJhdworZm9ybWF0dGVkIHN0cmluZ3MgYXJlIHBvc3NpYmxlLCBidXQgZm9ybWF0dGVkIGJ5dGVzIGxpdGVyYWxzIGFyZSBub3QuCisKIEluIHRyaXBsZS1xdW90ZWQgbGl0ZXJhbHMsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSBhbGxvd2VkIChhbmQgYXJlCiByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3cgdGVybWluYXRlIHRoZSBsaXRlcmFsLiAgKEEKICJxdW90ZSIgaXMgdGhlIGNoYXJhY3RlciB1c2VkIHRvIG9wZW4gdGhlIGxpdGVyYWwsIGkuZS4gZWl0aGVyIGBgJ2BgIG9yIGBgImBgLikKQEAgLTU1NCw2ICs1NjAsMTAgQEAKIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZyBsaXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mCiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXMgbGl0ZXJhbHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVbnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBwcm9kdWNlIGEgRGVwcmVjYXRpb25XYXJuaW5nLiAgSW4KKyAgICAgIHNvbWUgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uIHRoZXkgd2lsbCBiZSBhIFN5bnRheEVycm9yLgorCiBFdmVuIGluIGEgcmF3IGxpdGVyYWwsIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCBidXQgdGhlCiBiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgYGByIlwiImBgIGlzIGEgdmFsaWQgc3RyaW5nCiBsaXRlcmFsIGNvbnNpc3Rpbmcgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhIGRvdWJsZSBxdW90ZTsgYGByIlwiYGAKQEAgLTU4Myw3ICs1OTMsMTA2IEBACiBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGlzIGRlZmluZWQgYXQgdGhlIHN5bnRhY3RpY2FsIGxldmVsLCBidXQgaW1wbGVtZW50ZWQgYXQKIGNvbXBpbGUgdGltZS4gIFRoZSAnKycgb3BlcmF0b3IgbXVzdCBiZSB1c2VkIHRvIGNvbmNhdGVuYXRlIHN0cmluZyBleHByZXNzaW9ucwogYXQgcnVuIHRpbWUuICBBbHNvIG5vdGUgdGhhdCBsaXRlcmFsIGNvbmNhdGVuYXRpb24gY2FuIHVzZSBkaWZmZXJlbnQgcXVvdGluZwotc3R5bGVzIGZvciBlYWNoIGNvbXBvbmVudCAoZXZlbiBtaXhpbmcgcmF3IHN0cmluZ3MgYW5kIHRyaXBsZSBxdW90ZWQgc3RyaW5ncykuCitzdHlsZXMgZm9yIGVhY2ggY29tcG9uZW50IChldmVuIG1peGluZyByYXcgc3RyaW5ncyBhbmQgdHJpcGxlIHF1b3RlZCBzdHJpbmdzKSwKK2FuZCBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIG1heSBiZSBjb25jYXRlbmF0ZWQgd2l0aCBwbGFpbiBzdHJpbmcgbGl0ZXJhbHMuCisKKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWwKKyAgIHNpbmdsZTogaW50ZXJwb2xhdGVkIHN0cmluZyBsaXRlcmFsCisgICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0dGVkIGxpdGVyYWwKKyAgIHNpbmdsZTogc3RyaW5nOyBpbnRlcnBvbGF0ZWQgbGl0ZXJhbAorICAgc2luZ2xlOiBmLXN0cmluZworLi4gX2Ytc3RyaW5nczoKKworRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworQSA6ZGZuOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxgIG9yIDpkZm46YGYtc3RyaW5nYCBpcyBhIHN0cmluZyBsaXRlcmFsCit0aGF0IGlzIHByZWZpeGVkIHdpdGggYGAnZidgYCBvciBgYCdGJ2BgLiAgVGhlc2Ugc3RyaW5ncyBtYXkgY29udGFpbgorcmVwbGFjZW1lbnQgZmllbGRzLCB3aGljaCBhcmUgZXhwcmVzc2lvbnMgZGVsaW1pdGVkIGJ5IGN1cmx5IGJyYWNlcyBgYHt9YGAuCitXaGlsZSBvdGhlciBzdHJpbmcgbGl0ZXJhbHMgYWx3YXlzIGhhdmUgYSBjb25zdGFudCB2YWx1ZSwgZm9ybWF0dGVkIHN0cmluZ3MKK2FyZSByZWFsbHkgZXhwcmVzc2lvbnMgZXZhbHVhdGVkIGF0IHJ1biB0aW1lLgorCitFc2NhcGUgc2VxdWVuY2VzIGFyZSBkZWNvZGVkIGxpa2UgaW4gb3JkaW5hcnkgc3RyaW5nIGxpdGVyYWxzIChleGNlcHQgd2hlbgorYSBsaXRlcmFsIGlzIGFsc28gbWFya2VkIGFzIGEgcmF3IHN0cmluZykuICBBZnRlciBkZWNvZGluZywgdGhlIGdyYW1tYXIKK2ZvciB0aGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBpczoKKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgZl9zdHJpbmc6IChgbGl0ZXJhbF9jaGFyYCB8ICJ7eyIgfCAifX0iIHwgYHJlcGxhY2VtZW50X2ZpZWxkYCkqCisgICByZXBsYWNlbWVudF9maWVsZDogInsiIGBmX2V4cHJlc3Npb25gIFsiISIgYGNvbnZlcnNpb25gXSBbIjoiIGBmb3JtYXRfc3BlY2BdICJ9IgorICAgZl9leHByZXNzaW9uOiAoYGNvbmRpdGlvbmFsX2V4cHJlc3Npb25gIHwgIioiIGBvcl9leHByYCkKKyAgICAgICAgICAgICAgIDogICAoIiwiIGBjb25kaXRpb25hbF9leHByZXNzaW9uYCB8ICIsIiAiKiIgYG9yX2V4cHJgKSogWyIsIl0KKyAgICAgICAgICAgICAgIDogfCBgeWllbGRfZXhwcmVzc2lvbmAKKyAgIGNvbnZlcnNpb246ICJzIiB8ICJyIiB8ICJhIgorICAgZm9ybWF0X3NwZWM6IChgbGl0ZXJhbF9jaGFyYCB8IE5VTEwgfCBgcmVwbGFjZW1lbnRfZmllbGRgKSoKKyAgIGxpdGVyYWxfY2hhcjogPGFueSBjb2RlIHBvaW50IGV4Y2VwdCAieyIsICJ9IiBvciBOVUxMPgorCitUaGUgcGFydHMgb2YgdGhlIHN0cmluZyBvdXRzaWRlIGN1cmx5IGJyYWNlcyBhcmUgdHJlYXRlZCBsaXRlcmFsbHksCitleGNlcHQgdGhhdCBhbnkgZG91YmxlZCBjdXJseSBicmFjZXMgYGAne3snYGAgb3IgYGAnfX0nYGAgYXJlIHJlcGxhY2VkCit3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHNpbmdsZSBjdXJseSBicmFjZS4gIEEgc2luZ2xlIG9wZW5pbmcgY3VybHkKK2JyYWNrZXQgYGAneydgYCBtYXJrcyBhIHJlcGxhY2VtZW50IGZpZWxkLCB3aGljaCBzdGFydHMgd2l0aCBhCitQeXRob24gZXhwcmVzc2lvbi4gIEFmdGVyIHRoZSBleHByZXNzaW9uLCB0aGVyZSBtYXkgYmUgYSBjb252ZXJzaW9uIGZpZWxkLAoraW50cm9kdWNlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCBgYCchJ2BgLiAgQSBmb3JtYXQgc3BlY2lmaWVyIG1heSBhbHNvCitiZSBhcHBlbmRlZCwgaW50cm9kdWNlZCBieSBhIGNvbG9uIGBgJzonYGAuICBBIHJlcGxhY2VtZW50IGZpZWxkIGVuZHMKK3dpdGggYSBjbG9zaW5nIGN1cmx5IGJyYWNrZXQgYGAnfSdgYC4KKworRXhwcmVzc2lvbnMgaW4gZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBhcmUgdHJlYXRlZCBsaWtlIHJlZ3VsYXIKK1B5dGhvbiBleHByZXNzaW9ucyBzdXJyb3VuZGVkIGJ5IHBhcmVudGhlc2VzLCB3aXRoIGEgZmV3IGV4Y2VwdGlvbnMuCitBbiBlbXB0eSBleHByZXNzaW9uIGlzIG5vdCBhbGxvd2VkLCBhbmQgYSA6a2V5d29yZDpgbGFtYmRhYCBleHByZXNzaW9uCittdXN0IGJlIHN1cnJvdW5kZWQgYnkgZXhwbGljaXQgcGFyZW50aGVzZXMuICBSZXBsYWNlbWVudCBleHByZXNzaW9ucworY2FuIGNvbnRhaW4gbGluZSBicmVha3MgKGUuZy4gaW4gdHJpcGxlLXF1b3RlZCBzdHJpbmdzKSwgYnV0IHRoZXkKK2Nhbm5vdCBjb250YWluIGNvbW1lbnRzLiAgRWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBpbiB0aGUgY29udGV4dAord2hlcmUgdGhlIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJzLCBpbiBvcmRlciBmcm9tIGxlZnQgdG8gcmlnaHQuCisKK0lmIGEgY29udmVyc2lvbiBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbgoraXMgY29udmVydGVkIGJlZm9yZSBmb3JtYXR0aW5nLiAgQ29udmVyc2lvbiBgYCchcydgYCBjYWxscyA6ZnVuYzpgc3RyYCBvbgordGhlIHJlc3VsdCwgYGAnIXInYGAgY2FsbHMgOmZ1bmM6YHJlcHJgLCBhbmQgYGAnIWEnYGAgY2FsbHMgOmZ1bmM6YGFzY2lpYC4KKworVGhlIHJlc3VsdCBpcyB0aGVuIGZvcm1hdHRlZCB1c2luZyB0aGUgOmZ1bmM6YGZvcm1hdGAgcHJvdG9jb2wuICBUaGUKK2Zvcm1hdCBzcGVjaWZpZXIgaXMgcGFzc2VkIHRvIHRoZSA6bWV0aDpgX19mb3JtYXRfX2AgbWV0aG9kIG9mIHRoZQorZXhwcmVzc2lvbiBvciBjb252ZXJzaW9uIHJlc3VsdC4gIEFuIGVtcHR5IHN0cmluZyBpcyBwYXNzZWQgd2hlbiB0aGUKK2Zvcm1hdCBzcGVjaWZpZXIgaXMgb21pdHRlZC4gIFRoZSBmb3JtYXR0ZWQgcmVzdWx0IGlzIHRoZW4gaW5jbHVkZWQgaW4KK3RoZSBmaW5hbCB2YWx1ZSBvZiB0aGUgd2hvbGUgc3RyaW5nLgorCitUb3AtbGV2ZWwgZm9ybWF0IHNwZWNpZmllcnMgbWF5IGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcy4KK1RoZXNlIG5lc3RlZCBmaWVsZHMgbWF5IGluY2x1ZGUgdGhlaXIgb3duIGNvbnZlcnNpb24gZmllbGRzIGFuZAorZm9ybWF0IHNwZWNpZmllcnMsIGJ1dCBtYXkgbm90IGluY2x1ZGUgbW9yZSBkZWVwbHktbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcy4KKworRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBtYXkgYmUgY29uY2F0ZW5hdGVkLCBidXQgcmVwbGFjZW1lbnQgZmllbGRzCitjYW5ub3QgYmUgc3BsaXQgYWNyb3NzIGxpdGVyYWxzLgorCitTb21lIGV4YW1wbGVzIG9mIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHM6OgorCisgICA+Pj4gbmFtZSA9ICJGcmVkIgorICAgPj4+IGYiSGUgc2FpZCBoaXMgbmFtZSBpcyB7bmFtZSFyfS4iCisgICAiSGUgc2FpZCBoaXMgbmFtZSBpcyAnRnJlZCcuIgorICAgPj4+IGYiSGUgc2FpZCBoaXMgbmFtZSBpcyB7cmVwcihuYW1lKX0uIiAgIyByZXByKCkgaXMgZXF1aXZhbGVudCB0byAhcgorICAgIkhlIHNhaWQgaGlzIG5hbWUgaXMgJ0ZyZWQnLiIKKyAgID4+PiB3aWR0aCA9IDEwCisgICA+Pj4gcHJlY2lzaW9uID0gNAorICAgPj4+IHZhbHVlID0gZGVjaW1hbC5EZWNpbWFsKCIxMi4zNDU2NyIpCisgICA+Pj4gZiJyZXN1bHQ6IHt2YWx1ZTp7d2lkdGh9LntwcmVjaXNpb259fSIgICMgbmVzdGVkIGZpZWxkcworICAgJ3Jlc3VsdDogICAgICAxMi4zNScKKworQSBjb25zZXF1ZW5jZSBvZiBzaGFyaW5nIHRoZSBzYW1lIHN5bnRheCBhcyByZWd1bGFyIHN0cmluZyBsaXRlcmFscyBpcwordGhhdCBjaGFyYWN0ZXJzIGluIHRoZSByZXBsYWNlbWVudCBmaWVsZHMgbXVzdCBub3QgY29uZmxpY3Qgd2l0aCB0aGUKK3F1b3RpbmcgdXNlZCBpbiB0aGUgb3V0ZXIgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsLiAgQWxzbywgZXNjYXBlCitzZXF1ZW5jZXMgbm9ybWFsbHkgYXBwbHkgdG8gdGhlIG91dGVyIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbCwKK3JhdGhlciB0aGFuIGlubmVyIHN0cmluZyBsaXRlcmFsczo6CisKKyAgIGYiYWJjIHthWyJ4Il19IGRlZiIgICAgIyBlcnJvcjogb3V0ZXIgc3RyaW5nIGxpdGVyYWwgZW5kZWQgcHJlbWF0dXJlbHkKKyAgIGYiYWJjIHthW1wieFwiXX0gZGVmIiAgIyB3b3JrYXJvdW5kOiBlc2NhcGUgdGhlIGlubmVyIHF1b3RlcworICAgZiJhYmMge2FbJ3gnXX0gZGVmIiAgICAjIHdvcmthcm91bmQ6IHVzZSBkaWZmZXJlbnQgcXVvdGluZworCisgICBmIm5ld2xpbmU6IHtvcmQoJ1xuJyl9IiAgICMgZXJyb3I6IGxpdGVyYWwgbGluZSBicmVhayBpbiBpbm5lciBzdHJpbmcKKyAgIGYibmV3bGluZToge29yZCgnXFxuJyl9IiAgIyB3b3JrYXJvdW5kOiBkb3VibGUgZXNjYXBpbmcKKyAgIGZyIm5ld2xpbmU6IHtvcmQoJ1xuJyl9IiAgIyB3b3JrYXJvdW5kOiByYXcgb3V0ZXIgc3RyaW5nCisKK1NlZSBhbHNvIDpwZXA6YDQ5OGAgZm9yIHRoZSBwcm9wb3NhbCB0aGF0IGFkZGVkIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMsCithbmQgOm1ldGg6YHN0ci5mb3JtYXRgLCB3aGljaCB1c2VzIGEgcmVsYXRlZCBmb3JtYXQgc3RyaW5nIG1lY2hhbmlzbS4KIAogCiAuLiBfbnVtYmVyczoKQEAgLTYxMiwyMCArNzIxLDI0IEBACiBJbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6Ci0gICBpbnRlZ2VyOiBgZGVjaW1hbGludGVnZXJgIHwgYG9jdGludGVnZXJgIHwgYGhleGludGVnZXJgIHwgYGJpbmludGVnZXJgCi0gICBkZWNpbWFsaW50ZWdlcjogYG5vbnplcm9kaWdpdGAgYGRpZ2l0YCogfCAiMCIrCisgICBpbnRlZ2VyOiBgZGVjaW50ZWdlcmAgfCBgYmluaW50ZWdlcmAgfCBgb2N0aW50ZWdlcmAgfCBgaGV4aW50ZWdlcmAKKyAgIGRlY2ludGVnZXI6IGBub256ZXJvZGlnaXRgIChbIl8iXSBgZGlnaXRgKSogfCAiMCIrIChbIl8iXSAiMCIpKgorICAgYmluaW50ZWdlcjogIjAiICgiYiIgfCAiQiIpIChbIl8iXSBgYmluZGlnaXRgKSsKKyAgIG9jdGludGVnZXI6ICIwIiAoIm8iIHwgIk8iKSAoWyJfIl0gYG9jdGRpZ2l0YCkrCisgICBoZXhpbnRlZ2VyOiAiMCIgKCJ4IiB8ICJYIikgKFsiXyJdIGBoZXhkaWdpdGApKwogICAgbm9uemVyb2RpZ2l0OiAiMSIuLi4iOSIKICAgIGRpZ2l0OiAiMCIuLi4iOSIKLSAgIG9jdGludGVnZXI6ICIwIiAoIm8iIHwgIk8iKSBgb2N0ZGlnaXRgKwotICAgaGV4aW50ZWdlcjogIjAiICgieCIgfCAiWCIpIGBoZXhkaWdpdGArCi0gICBiaW5pbnRlZ2VyOiAiMCIgKCJiIiB8ICJCIikgYGJpbmRpZ2l0YCsKKyAgIGJpbmRpZ2l0OiAiMCIgfCAiMSIKICAgIG9jdGRpZ2l0OiAiMCIuLi4iNyIKICAgIGhleGRpZ2l0OiBgZGlnaXRgIHwgImEiLi4uImYiIHwgIkEiLi4uIkYiCi0gICBiaW5kaWdpdDogIjAiIHwgIjEiCiAKIFRoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSB3aGF0IGNhbiBiZQogc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuCiAKK1VuZGVyc2NvcmVzIGFyZSBpZ25vcmVkIGZvciBkZXRlcm1pbmluZyB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgbGl0ZXJhbC4gIFRoZXkKK2NhbiBiZSB1c2VkIHRvIGdyb3VwIGRpZ2l0cyBmb3IgZW5oYW5jZWQgcmVhZGFiaWxpdHkuICBPbmUgdW5kZXJzY29yZSBjYW4gb2NjdXIKK2JldHdlZW4gZGlnaXRzLCBhbmQgYWZ0ZXIgYmFzZSBzcGVjaWZpZXJzIGxpa2UgYGAweGBgLgorCiBOb3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgYWxsb3dlZC4gVGhpcyBpcwogZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggUHl0aG9uIHVzZWQgYmVmb3JlIHZlcnNpb24KIDMuMC4KQEAgLTYzNCw2ICs3NDcsMTAgQEAKIAogICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDBvMTc3ICAgIDBiMTAwMTEwMTExCiAgICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHhkZWFkYmVlZgorICAgICAgICAgMTAwXzAwMF8wMDBfMDAwICAgICAgICAgICAgICAgICAgIDBiXzExMTBfMDEwMQorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgVW5kZXJzY29yZXMgYXJlIG5vdyBhbGxvd2VkIGZvciBncm91cGluZyBwdXJwb3NlcyBpbiBsaXRlcmFscy4KIAogCiAuLiBfZmxvYXRpbmc6CkBAIC02NDUsMjMgKzc2MiwyOCBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBmbG9hdG51bWJlcjogYHBvaW50ZmxvYXRgIHwgYGV4cG9uZW50ZmxvYXRgCi0gICBwb2ludGZsb2F0OiBbYGludHBhcnRgXSBgZnJhY3Rpb25gIHwgYGludHBhcnRgICIuIgotICAgZXhwb25lbnRmbG9hdDogKGBpbnRwYXJ0YCB8IGBwb2ludGZsb2F0YCkgYGV4cG9uZW50YAotICAgaW50cGFydDogYGRpZ2l0YCsKLSAgIGZyYWN0aW9uOiAiLiIgYGRpZ2l0YCsKLSAgIGV4cG9uZW50OiAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBgZGlnaXRgKworICAgcG9pbnRmbG9hdDogW2BkaWdpdHBhcnRgXSBgZnJhY3Rpb25gIHwgYGRpZ2l0cGFydGAgIi4iCisgICBleHBvbmVudGZsb2F0OiAoYGRpZ2l0cGFydGAgfCBgcG9pbnRmbG9hdGApIGBleHBvbmVudGAKKyAgIGRpZ2l0cGFydDogYGRpZ2l0YCAoWyJfIl0gYGRpZ2l0YCkqCisgICBmcmFjdGlvbjogIi4iIGBkaWdpdHBhcnRgCisgICBleHBvbmVudDogKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gYGRpZ2l0cGFydGAKIAogTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIGFuZCBleHBvbmVudCBwYXJ0cyBhcmUgYWx3YXlzIGludGVycHJldGVkIHVzaW5nIHJhZGl4IDEwLgogRm9yIGV4YW1wbGUsIGBgMDc3ZTAxMGBgIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZSBudW1iZXIgYXMgYGA3N2UxMGBgLiBUaGUKLWFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiBTb21lCi1leGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczo6CithbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gIEFzIGluCitpbnRlZ2VyIGxpdGVyYWxzLCB1bmRlcnNjb3JlcyBhcmUgc3VwcG9ydGVkIGZvciBkaWdpdCBncm91cGluZy4KIAotICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTAKK1NvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6OgorCisgICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMCAgICAzLjE0XzE1XzkzCiAKIE5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSBgYC0xYGAgaXMKIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIGBgLWBgIGFuZCB0aGUgbGl0ZXJhbAogYGAxYGAuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yIGdyb3VwaW5nIHB1cnBvc2VzIGluIGxpdGVyYWxzLgorCiAKIC4uIF9pbWFnaW5hcnk6CiAKQEAgLTY3MSw3ICs3OTMsNyBAQAogSW1hZ2luYXJ5IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6Ci0gICBpbWFnbnVtYmVyOiAoYGZsb2F0bnVtYmVyYCB8IGBpbnRwYXJ0YCkgKCJqIiB8ICJKIikKKyAgIGltYWdudW1iZXI6IChgZmxvYXRudW1iZXJgIHwgYGRpZ2l0cGFydGApICgiaiIgfCAiSiIpCiAKIEFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLiAgQ29tcGxleAogbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYW5kIGhhdmUgdGhlIHNhbWUKQEAgLTY3OSw3ICs4MDEsNyBAQAogcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LCBlLmcuLCBgYCgzKzRqKWBgLiAgU29tZSBleGFtcGxlcyBvZgogaW1hZ2luYXJ5IGxpdGVyYWxzOjoKIAotICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogIDMuMTRlLTEwagorICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogICAzLjE0ZS0xMGogICAzLjE0XzE1XzkzagogCiAKIC4uIF9vcGVyYXRvcnM6CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QgYi9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKaW5kZXggZDQwM2M0ZC4uM2RjNDQxOCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdApAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgICAgICA6IHwgYGFzc2VydF9zdG10YAogICAgICAgICAgICAgICA6IHwgYGFzc2lnbm1lbnRfc3RtdGAKICAgICAgICAgICAgICAgOiB8IGBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10YAorICAgICAgICAgICAgICA6IHwgYGFubm90YXRlZF9hc3NpZ25tZW50X3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgcGFzc19zdG10YAogICAgICAgICAgICAgICA6IHwgYGRlbF9zdG10YAogICAgICAgICAgICAgICA6IHwgYHJldHVybl9zdG10YApAQCAtODQsNyArODUsNyBAQAogICAgYXNzaWdubWVudF9zdG10OiAoYHRhcmdldF9saXN0YCAiPSIpKyAoYHN0YXJyZWRfZXhwcmVzc2lvbmAgfCBgeWllbGRfZXhwcmVzc2lvbmApCiAgICB0YXJnZXRfbGlzdDogYHRhcmdldGAgKCIsIiBgdGFyZ2V0YCkqIFsiLCJdCiAgICB0YXJnZXQ6IGBpZGVudGlmaWVyYAotICAgICAgICAgOiB8ICIoIiBgdGFyZ2V0X2xpc3RgICIpIgorICAgICAgICAgOiB8ICIoIiBbYHRhcmdldF9saXN0YF0gIikiCiAgICAgICAgICA6IHwgIlsiIFtgdGFyZ2V0X2xpc3RgXSAiXSIKICAgICAgICAgIDogfCBgYXR0cmlidXRlcmVmYAogICAgICAgICAgOiB8IGBzdWJzY3JpcHRpb25gCkBAIC0zMTIsNiArMzEzLDUwIEBACiBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyA8YXR0ci10YXJnZXQtbm90ZT5gIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuCiAKIAorLi4gX2FubmFzc2lnbjoKKworQW5ub3RhdGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICBwYWlyOiBhbm5vdGF0ZWQ7IGFzc2lnbm1lbnQKKyAgIHNpbmdsZTogc3RhdGVtZW50OyBhc3NpZ25tZW50LCBhbm5vdGF0ZWQKKworQW5ub3RhdGlvbiBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LAorb2YgYSB2YXJpYWJsZSBvciBhdHRyaWJ1dGUgYW5ub3RhdGlvbiBhbmQgYW4gb3B0aW9uYWwgYXNzaWdubWVudCBzdGF0ZW1lbnQ6CisKKy4uIHByb2R1Y3Rpb25saXN0OjoKKyAgIGFubm90YXRlZF9hc3NpZ25tZW50X3N0bXQ6IGBhdWd0YXJnZXRgICI6IiBgZXhwcmVzc2lvbmAgWyI9IiBgZXhwcmVzc2lvbmBdCisKK1RoZSBkaWZmZXJlbmNlIGZyb20gbm9ybWFsIDpyZWY6YGFzc2lnbm1lbnRgIGlzIHRoYXQgb25seSBzaW5nbGUgdGFyZ2V0IGFuZAorb25seSBzaW5nbGUgcmlnaHQgaGFuZCBzaWRlIHZhbHVlIGlzIGFsbG93ZWQuCisKK0ZvciBzaW1wbGUgbmFtZXMgYXMgYXNzaWdubWVudCB0YXJnZXRzLCBpZiBpbiBjbGFzcyBvciBtb2R1bGUgc2NvcGUsCit0aGUgYW5ub3RhdGlvbnMgYXJlIGV2YWx1YXRlZCBhbmQgc3RvcmVkIGluIGEgc3BlY2lhbCBjbGFzcyBvciBtb2R1bGUKK2F0dHJpYnV0ZSA6YXR0cjpgX19hbm5vdGF0aW9uc19fYAordGhhdCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBmcm9tIHZhcmlhYmxlIG5hbWVzIChtYW5nbGVkIGlmIHByaXZhdGUpIHRvCitldmFsdWF0ZWQgYW5ub3RhdGlvbnMuIFRoaXMgYXR0cmlidXRlIGlzIHdyaXRhYmxlIGFuZCBpcyBhdXRvbWF0aWNhbGx5CitjcmVhdGVkIGF0IHRoZSBzdGFydCBvZiBjbGFzcyBvciBtb2R1bGUgYm9keSBleGVjdXRpb24sIGlmIGFubm90YXRpb25zCithcmUgZm91bmQgc3RhdGljYWxseS4KKworRm9yIGV4cHJlc3Npb25zIGFzIGFzc2lnbm1lbnQgdGFyZ2V0cywgdGhlIGFubm90YXRpb25zIGFyZSBldmFsdWF0ZWQgaWYKK2luIGNsYXNzIG9yIG1vZHVsZSBzY29wZSwgYnV0IG5vdCBzdG9yZWQuCisKK0lmIGEgbmFtZSBpcyBhbm5vdGF0ZWQgaW4gYSBmdW5jdGlvbiBzY29wZSwgdGhlbiB0aGlzIG5hbWUgaXMgbG9jYWwgZm9yCit0aGF0IHNjb3BlLiBBbm5vdGF0aW9ucyBhcmUgbmV2ZXIgZXZhbHVhdGVkIGFuZCBzdG9yZWQgaW4gZnVuY3Rpb24gc2NvcGVzLgorCitJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHByZXNlbnQsIGFuIGFubm90YXRlZAorYXNzaWdubWVudCBwZXJmb3JtcyB0aGUgYWN0dWFsIGFzc2lnbm1lbnQgYmVmb3JlIGV2YWx1YXRpbmcgYW5ub3RhdGlvbnMKKyh3aGVyZSBhcHBsaWNhYmxlKS4gSWYgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyBub3QgcHJlc2VudCBmb3IgYW4gZXhwcmVzc2lvbgordGFyZ2V0LCB0aGVuIHRoZSBpbnRlcnByZXRlciBldmFsdWF0ZXMgdGhlIHRhcmdldCBleGNlcHQgZm9yIHRoZSBsYXN0Cis6bWV0aDpgX19zZXRpdGVtX19gIG9yIDptZXRoOmBfX3NldGF0dHJfX2AgY2FsbC4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUyNmAgLSBWYXJpYWJsZSBhbmQgYXR0cmlidXRlIGFubm90YXRpb24gc3ludGF4CisgICA6cGVwOmA0ODRgIC0gVHlwZSBoaW50cworCisKIC4uIF9hc3NlcnQ6CiAKIFRoZSA6a2V5d29yZDpgYXNzZXJ0YCBzdGF0ZW1lbnQKQEAgLTg1OSwxMSArOTA0LDEyIEBACiAKIE5hbWVzIGxpc3RlZCBpbiBhIDprZXl3b3JkOmBnbG9iYWxgIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbAogcGFyYW1ldGVycyBvciBpbiBhIDprZXl3b3JkOmBmb3JgIGxvb3AgY29udHJvbCB0YXJnZXQsIDprZXl3b3JkOmBjbGFzc2AKLWRlZmluaXRpb24sIGZ1bmN0aW9uIGRlZmluaXRpb24sIG9yIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4KK2RlZmluaXRpb24sIGZ1bmN0aW9uIGRlZmluaXRpb24sIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCwgb3IgdmFyaWFibGUKK2Fubm90YXRpb24uCiAKIC4uIGltcGwtZGV0YWlsOjoKIAotICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgZW5mb3JjZSB0aGUgdHdvIHJlc3RyaWN0aW9ucywgYnV0CisgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBlbmZvcmNlIHNvbWUgb2YgdGhlc2UgcmVzdHJpY3Rpb24sIGJ1dAogICAgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZSB0aGlzIGZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UKICAgIHRoZW0gb3Igc2lsZW50bHkgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLgogCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5IGIvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQppbmRleCA2MzExMjgzLi4yNzMxOTFiIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CisrKyBiL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKQEAgLTM0LDcgKzM0LDcgQEAKIAogCiBJU1NVRV9VUkkgPSAnaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUlcycKLVNPVVJDRV9VUkkgPSAnaHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjUvJXMnCitTT1VSQ0VfVVJJID0gJ2h0dHBzOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMy42LyVzJwogCiAjIG1vbmtleS1wYXRjaCByZVNUIHBhcnNlciB0byBkaXNhYmxlIGFscGhhYmV0aWMgYW5kIHJvbWFuIGVudW1lcmF0ZWQgbGlzdHMKIGZyb20gZG9jdXRpbHMucGFyc2Vycy5yc3Quc3RhdGVzIGltcG9ydCBCb2R5CmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvcnN0bGludC5weSBiL0RvYy90b29scy9yc3RsaW50LnB5CmluZGV4IGRlNzgwNDEuLjJjMTgxNmUgMTAwNzU1Ci0tLSBhL0RvYy90b29scy9yc3RsaW50LnB5CisrKyBiL0RvYy90b29scy9yc3RsaW50LnB5CkBAIC05LDggKzksNiBAQAogIyBUT0RPOiAtIHdyb25nIHZlcnNpb25zIGluIHZlcnNpb25hZGRlZC9jaGFuZ2VkCiAjICAgICAgIC0gd3JvbmcgbWFya3VwIGFmdGVyIHZlcnNpb25jaGFuZ2VkIGRpcmVjdGl2ZQogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdiBiL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CmluZGV4IGRiYTkzYmYuLjVkZTU1YTIgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CisrKyBiL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CkBAIC0yNSw2ICsyNSwzMCBAQAogaG93dG8vY3Vyc2VzLCw6bWFnZW50YSwiMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCA3OndoaXRlLiAgVGhlIgogaG93dG8vY3Vyc2VzLCw6Y3lhbiwiMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCA3OndoaXRlLiAgVGhlIgogaG93dG8vY3Vyc2VzLCw6d2hpdGUsIjI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQgNzp3aGl0ZS4gIFRoZSIKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOjoscHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbixweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOjoscHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24scHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6Y2FsbCwxNTY2NDEzNjA1MDIyODAgIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOnN0YXJ0LDE1NjY0MTM2MDUwMjI4MCAgZnVuY3Rpb24tZW50cnk6Y2FsbF9zdGFjay5weTpzdGFydDoyMworaG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTE4ODA0ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDUzMjc5NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTQ2ODA3IGZ1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTYzMzY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDU3ODM2NSAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo1Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1OTE3NTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDYwNTU1NiAgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDYxNzQ4MiBmdW5jdGlvbi1yZXR1cm46ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2Mjk4MTQgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDY0MjI4NSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2NTY3NzAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjY5NzA3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2ODc4NTMgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDcwMDcxOSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxNAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNzE5NjQwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjE4Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA3MzI1NjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmNhbGwsMTU2NjQxMzYwNzQ3MzcwIGZ1bmN0aW9uLXJldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpzdGFydCwxNTY2NDEzNjA3NDczNzAgZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKIGhvd3RvL2lwYWRkcmVzcywsOkRCOCw+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKIGhvd3RvL2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCiBob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKQEAgLTEwNiw2ICsxMzAsMTAgQEAKIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RlcCxhW3N0YXJ0OnN0b3A6c3RlcF0KIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RvcCwiYVtzdGFydDpzdG9wLCBpXSIKIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RvcCxhW3N0YXJ0OnN0b3A6c3RlcF0KK2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIsLDp2YXRyb2dhc2FjLD4+PiBjb29raWUgPSBiJ3VzZXI6dmF0cm9nYXNhYycKK2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIsLDp2YXRyb2dhc2FjLCJ1c2VyOnZhdHJvZ2FzYWMsMzQ5Y2Y5MDQ1MzM3NjdlZDJkNzU1Mjc5YThkZjg0ZDAiCitsaWJyYXJ5L2hhc2hsaWItYmxha2UyLCw6cG9saWNhamFjLCI+Pj4gY29tcGFyZV9kaWdlc3QoYid1c2VyOnBvbGljYWphYycsIHNpZykiCitsaWJyYXJ5L2hhc2hsaWItYmxha2UyLCw6TEVBRiwiaDAwID0gYmxha2UyYihidWZbMDpMRUFGX1NJWkVdLCBmYW5vdXQ9RkFOT1VULCBkZXB0aD1ERVBUSCwiCiBsaWJyYXJ5L2h0dHAuY2xpZW50LCw6cG9ydCxob3N0OnBvcnQKIGxpYnJhcnkvaHR0cC5jb29raWVzLCxgLCEjJCUmJyorLS5eX2B8fjoKIGxpYnJhcnkvaW1hcGxpYiwsOk1NLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTIgpAQCAtMjA1LDcgKzIzMyw4IEBACiBsaWJyYXJ5L3ZlbnYsLDpwYXJhbSwiOnBhcmFtIG5vZGlzdDogSWYgVHJ1ZSwgc2V0dXB0b29scyBhbmQgcGlwIGFyZSBub3QgaW5zdGFsbGVkIGludG8gdGhlIgogbGlicmFyeS92ZW52LCw6cGFyYW0sIjpwYXJhbSBwcm9ncmVzczogSWYgc2V0dXB0b29scyBvciBwaXAgYXJlIGluc3RhbGxlZCwgdGhlIHByb2dyZXNzIG9mIHRoZSIKIGxpYnJhcnkvdmVudiwsOnBhcmFtLCI6cGFyYW0gbm9waXA6IElmIFRydWUsIHBpcCBpcyBub3QgaW5zdGFsbGVkIGludG8gdGhlIGNyZWF0ZWQiCi1saWJyYXJ5L3ZlbnYsLDpwYXJhbSw6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorbGlicmFyeS92ZW52LCw6cGFyYW0sOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKK2xpYnJhcnkveG1scnBjLmNsaWVudCwsOm5pbCxleDpuaWwKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cGFzcyx1c2VyOnBhc3MKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBvcnQsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aApAQCAtMjM5LDcgKzI2OCw3IEBACiB1c2luZy9jbWRsaW5lLCw6bWVzc2FnZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQogdXNpbmcvY21kbGluZSwsOm1vZHVsZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQogdXNpbmcvdW5peCwsOlBhY2thZ2luZyxodHRwczovL2VuLm9wZW5zdXNlLm9yZy9Qb3J0YWw6UGFja2FnaW5nCi13aGF0c25ldy8yLjAsNDE4LDpsZW4sCit3aGF0c25ldy8yLjAsLDpsZW4sCiB3aGF0c25ldy8yLjMsLDo6LAogd2hhdHNuZXcvMi4zLCw6Y29uZmlnLAogd2hhdHNuZXcvMi4zLCw6Q3JpdGljYWwsCkBAIC0yNzIsMjcgKzMwMSwyNyBAQAogd2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKIHdoYXRzbmV3LzMuMiwsOmxvY2F0aW9uLHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KIHdoYXRzbmV3LzMuMiwsOnByZWZpeCx6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLXdoYXRzbmV3L2NoYW5nZWxvZywsOmd6LCI6IFRhckZpbGUgb3BlbmVkIHdpdGggZXh0ZXJuYWwgZmlsZW9iaiBhbmQgIiJ3Omd6IiIgbW9kZSBkaWRuJ3QiCi13aGF0c25ldy9jaGFuZ2Vsb2csLDo6LCI6IFVzZSAiIjEyNy4wLjAuMSIiIG9yICIiOjoxIiIgaW5zdGVhZCBvZiAiImxvY2FsaG9zdCIiIGFzIG11Y2ggYXMiCi1saWJyYXJ5L3RhcmZpbGUsMTQ5LDp4eiwneDp4eicKLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDI5MCw6c29tZXRhZyxwcmVmaXg6c29tZXRhZwotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpmaWN0aW9uYWwsIjxhY3RvcnMgeG1sbnM6ZmljdGlvbmFsPSIiaHR0cDovL2NoYXJhY3RlcnMuZXhhbXBsZS5jb20iIiIKLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkxhbmNlbG90PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+QXJjaGllIExlYWNoPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+U2lyIFJvYmluPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+R3VudGhlcjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkNvbW1hbmRlciBDbGVtZW50PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS90YXJmaWxlLCw6eHosJ3g6eHonCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOnNvbWV0YWcscHJlZml4OnNvbWV0YWcKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6ZmljdGlvbmFsLCI8YWN0b3JzIHhtbG5zOmZpY3Rpb25hbD0iImh0dHA6Ly9jaGFyYWN0ZXJzLmV4YW1wbGUuY29tIiIiCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5MYW5jZWxvdDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkFyY2hpZSBMZWFjaDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPlNpciBSb2JpbjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkd1bnRoZXI8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5Db21tYW5kZXIgQ2xlbWVudDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KIGxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6YWN0b3IsImZvciBhY3RvciBpbiByb290LmZpbmRhbGwoJ3JlYWxfcGVyc29uOmFjdG9yJywgbnMpOiIKIGxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6bmFtZSwibmFtZSA9IGFjdG9yLmZpbmQoJ3JlYWxfcGVyc29uOm5hbWUnLCBucykiCiBsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3RlciwiZm9yIGNoYXIgaW4gYWN0b3IuZmluZGFsbCgncm9sZTpjaGFyYWN0ZXInLCBucyk6IgotbGlicmFyeS96aXBhcHAsMzEsOm1haW4sIiQgcHl0aG9uIC1tIHppcGFwcCBteWFwcCAtbSAiIm15YXBwOm1haW4iIiIKLWxpYnJhcnkvemlwYXBwLDgyLDpmbiwiYXJndW1lbnQgc2hvdWxkIGhhdmUgdGhlIGZvcm0gIiJwa2cubW9kOmZuIiIsIHdoZXJlICIicGtnLm1vZCIiIGlzIGEiCi1saWJyYXJ5L3ppcGFwcCwxNTUsOmNhbGxhYmxlLCIiInBrZy5tb2R1bGU6Y2FsbGFibGUiIiBhbmQgdGhlIGFyY2hpdmUgd2lsbCBiZSBydW4gYnkgaW1wb3J0aW5nIgorbGlicmFyeS96aXBhcHAsLDptYWluLCIkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAgLW0gIiJteWFwcDptYWluIiIiCitsaWJyYXJ5L3ppcGFwcCwsOmZuLCJhcmd1bWVudCBzaG91bGQgaGF2ZSB0aGUgZm9ybSAiInBrZy5tb2Q6Zm4iIiwgd2hlcmUgIiJwa2cubW9kIiIgaXMgYSIKK2xpYnJhcnkvemlwYXBwLCw6Y2FsbGFibGUsIiIicGtnLm1vZHVsZTpjYWxsYWJsZSIiIGFuZCB0aGUgYXJjaGl2ZSB3aWxsIGJlIHJ1biBieSBpbXBvcnRpbmciCiBsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gbVs6OjJdLnRvbGlzdCgpCiBsaWJyYXJ5L3N5cywsYCwjIGBgd3JhcHBlcmBgIGNyZWF0ZXMgYSBgYHdyYXAoY29ybylgYCBjb3JvdXRpbmU6Ci10dXRvcmlhbC92ZW52LDc3LDpjN2I5NjQ1YTZmMzUsIlB5dGhvbiAzLjQuMysgKDMuNDpjN2I5NjQ1YTZmMzUrLCBNYXkgMjIgMjAxNSwgMDk6MzE6MjUpIgogd2hhdHNuZXcvMy41LCw6cm9vdCwnV0FSTklORzpyb290Ondhcm5pbmdcbicKIHdoYXRzbmV3LzMuNSwsOndhcm5pbmcsJ1dBUk5JTkc6cm9vdDp3YXJuaW5nXG4nCiB3aGF0c25ldy8zLjUsLDo6LD4+PiBhZGRyNiA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykKIHdoYXRzbmV3LzMuNSwsOnJvb3QsRVJST1I6cm9vdDpleGNlcHRpb24KIHdoYXRzbmV3LzMuNSwsOmV4Y2VwdGlvbixFUlJPUjpyb290OmV4Y2VwdGlvbgord2hhdHNuZXcvY2hhbmdlbG9nLCw6dmVyc2lvbixpbXBvcnQgc3lzOyBJID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQord2hhdHNuZXcvY2hhbmdlbG9nLCw6Z3osIjogVGFyRmlsZSBvcGVuZWQgd2l0aCBleHRlcm5hbCBmaWxlb2JqIGFuZCAiInc6Z3oiIiBtb2RlIGRpZG4ndCIKK3doYXRzbmV3L2NoYW5nZWxvZywsOjosIjogVXNlICIiMTI3LjAuMC4xIiIgb3IgIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIgYXMgbXVjaCBhcyIKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QgYi9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0CmluZGV4IDEyOTg5YjIuLmQ0MzQ2MTggMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2NvbnRyb2xmbG93LnJzdApAQCAtNzgsNiArNzgsOSBAQAogICAgPj4+IHdvcmRzCiAgICBbJ2RlZmVuZXN0cmF0ZScsICdjYXQnLCAnd2luZG93JywgJ2RlZmVuZXN0cmF0ZSddCiAKK1dpdGggYGBmb3IgdyBpbiB3b3JkczpgYCwgdGhlIGV4YW1wbGUgd291bGQgYXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5maW5pdGUgbGlzdCwKK2luc2VydGluZyBgYGRlZmVuZXN0cmF0ZWBgIG92ZXIgYW5kIG92ZXIgYWdhaW4uCisKIAogLi4gX3R1dC1yYW5nZToKIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdCBiL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QKaW5kZXggZGQ5YzdjZC4uYmVlYWFjMyAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0CkBAIC0yNSw3ICsyNSw4IEBACiBjb25jYXRlbmF0aW9uIG9wZXJhdGlvbnMgeW91IGNhbiBjcmVhdGUgYW55IGxheW91dCB5b3UgY2FuIGltYWdpbmUuICBUaGUKIHN0cmluZyB0eXBlIGhhcyBzb21lIG1ldGhvZHMgdGhhdCBwZXJmb3JtIHVzZWZ1bCBvcGVyYXRpb25zIGZvciBwYWRkaW5nCiBzdHJpbmdzIHRvIGEgZ2l2ZW4gY29sdW1uIHdpZHRoOyB0aGVzZSB3aWxsIGJlIGRpc2N1c3NlZCBzaG9ydGx5LiAgVGhlIHNlY29uZAotd2F5IGlzIHRvIHVzZSB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZC4KK3dheSBpcyB0byB1c2UgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAsIG9yIHRoZQorOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZC4KIAogVGhlIDptb2Q6YHN0cmluZ2AgbW9kdWxlIGNvbnRhaW5zIGEgOmNsYXNzOmB+c3RyaW5nLlRlbXBsYXRlYCBjbGFzcyB3aGljaCBvZmZlcnMKIHlldCBhbm90aGVyIHdheSB0byBzdWJzdGl0dXRlIHZhbHVlcyBpbnRvIHN0cmluZ3MuCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0IGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAppbmRleCBlOGQ4ZTJiLi5mYWY1N2EzIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKQEAgLTEwLDEzICsxMCwxMyBAQAogSW52b2tpbmcgdGhlIEludGVycHJldGVyCiA9PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c3VhbGx5IGluc3RhbGxlZCBhcyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMy41YAorVGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c3VhbGx5IGluc3RhbGxlZCBhcyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMy42YAogb24gdGhvc2UgbWFjaGluZXMgd2hlcmUgaXQgaXMgYXZhaWxhYmxlOyBwdXR0aW5nIDpmaWxlOmAvdXNyL2xvY2FsL2JpbmAgaW4geW91cgogVW5peCBzaGVsbCdzIHNlYXJjaCBwYXRoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHN0YXJ0IGl0IGJ5IHR5cGluZyB0aGUgY29tbWFuZDoKIAogLi4gY29kZS1ibG9jazo6IHRleHQKIAotICAgcHl0aG9uMy41CisgICBweXRob24zLjYKIAogdG8gdGhlIHNoZWxsLiBbI11fIFNpbmNlIHRoZSBjaG9pY2Ugb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgaW50ZXJwcmV0ZXIgbGl2ZXMKIGlzIGFuIGluc3RhbGxhdGlvbiBvcHRpb24sIG90aGVyIHBsYWNlcyBhcmUgcG9zc2libGU7IGNoZWNrIHdpdGggeW91ciBsb2NhbApAQCAtMjQsMTEgKzI0LDExIEBACiBwb3B1bGFyIGFsdGVybmF0aXZlIGxvY2F0aW9uLikKIAogT24gV2luZG93cyBtYWNoaW5lcywgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaXMgdXN1YWxseSBwbGFjZWQgaW4KLTpmaWxlOmBDOlxcUHl0aG9uMzVgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQorOmZpbGU6YEM6XFxQeXRob24zNmAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCiBpbnN0YWxsZXIuICBUbyBhZGQgdGhpcyBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCAgeW91IGNhbiB0eXBlIHRoZSBmb2xsb3dpbmcKIGNvbW1hbmQgaW50byB0aGUgY29tbWFuZCBwcm9tcHQgaW4gYSBET1MgYm94OjoKIAotICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjM1CisgICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzYKIAogVHlwaW5nIGFuIGVuZC1vZi1maWxlIGNoYXJhY3RlciAoOmtiZDpgQ29udHJvbC1EYCBvbiBVbml4LCA6a2JkOmBDb250cm9sLVpgIG9uCiBXaW5kb3dzKSBhdCB0aGUgcHJpbWFyeSBwcm9tcHQgY2F1c2VzIHRoZSBpbnRlcnByZXRlciB0byBleGl0IHdpdGggYSB6ZXJvIGV4aXQKQEAgLTk4LDggKzk4LDggQEAKIAogLi4gY29kZS1ibG9jazo6IHNoZWxsLXNlc3Npb24KIAotICAgJCBweXRob24zLjUKLSAgIFB5dGhvbiAzLjUgKGRlZmF1bHQsIFNlcCAxNiAyMDE1LCAwOToyNTowNCkKKyAgICQgcHl0aG9uMy42CisgICBQeXRob24gMy42IChkZWZhdWx0LCBTZXAgMTYgMjAxNSwgMDk6MjU6MDQpCiAgICBbR0NDIDQuOC4yXSBvbiBsaW51eAogICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgPj4+CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CmluZGV4IDIxNDAzMjkuLjdlOGVlM2UgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CkBAIC0zNTIsNiArMzUyLDkgQEAKICAgICAgIFN0cmluZ3Mgc3VwcG9ydCBhIGxhcmdlIG51bWJlciBvZiBtZXRob2RzIGZvcgogICAgICAgYmFzaWMgdHJhbnNmb3JtYXRpb25zIGFuZCBzZWFyY2hpbmcuCiAKKyAgIDpyZWY6YGYtc3RyaW5nc2AKKyAgICAgIFN0cmluZyBsaXRlcmFscyB0aGF0IGhhdmUgZW1iZWRkZWQgZXhwcmVzc2lvbnMuCisKICAgIDpyZWY6YGZvcm1hdHN0cmluZ3NgCiAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBzdHJpbmcgZm9ybWF0dGluZyB3aXRoIDptZXRoOmBzdHIuZm9ybWF0YC4KIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAppbmRleCA1MmZmZGJlLi4xZGQwNmMyIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdApAQCAtMTUsNyArMTUsNyBAQAogCiAgICA+Pj4gaW1wb3J0IG9zCiAgICA+Pj4gb3MuZ2V0Y3dkKCkgICAgICAjIFJldHVybiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQotICAgJ0M6XFxQeXRob24zNScKKyAgICdDOlxcUHl0aG9uMzYnCiAgICA+Pj4gb3MuY2hkaXIoJy9zZXJ2ZXIvYWNjZXNzbG9ncycpICAgIyBDaGFuZ2UgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQogICAgPj4+IG9zLnN5c3RlbSgnbWtkaXIgdG9kYXknKSAgICMgUnVuIHRoZSBjb21tYW5kIG1rZGlyIGluIHRoZSBzeXN0ZW0gc2hlbGwKICAgIDAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdCBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAppbmRleCAzNzE0Mzg0Li5iZjRjZjg3IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CkBAIC0yNzgsNyArMjc4LDcgQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgICAgICBkWydwcmltYXJ5J10gICAgICAgICAgICAgICAgIyBlbnRyeSB3YXMgYXV0b21hdGljYWxseSByZW1vdmVkCi0gICAgIEZpbGUgIkM6L3B5dGhvbjM1L2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KKyAgICAgRmlsZSAiQzovcHl0aG9uMzYvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXwogICAgICAgIG8gPSBzZWxmLmRhdGFba2V5XSgpCiAgICBLZXlFcnJvcjogJ3ByaW1hcnknCiAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC92ZW52LnJzdCBiL0RvYy90dXRvcmlhbC92ZW52LnJzdAppbmRleCAzYjJlZTJlLi5lMmRkNTdkIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvdmVudi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3ZlbnYucnN0CkBAIC0yMCwxNSArMjAsMTQgQEAKIHRoZSByZXF1aXJlbWVudHMgYXJlIGluIGNvbmZsaWN0IGFuZCBpbnN0YWxsaW5nIGVpdGhlciB2ZXJzaW9uIDEuMCBvciAyLjAKIHdpbGwgbGVhdmUgb25lIGFwcGxpY2F0aW9uIHVuYWJsZSB0byBydW4uCiAKLVRoZSBzb2x1dGlvbiBmb3IgdGhpcyBwcm9ibGVtIGlzIHRvIGNyZWF0ZSBhIDp0ZXJtOmB2aXJ0dWFsCi1lbnZpcm9ubWVudGAgKG9mdGVuIHNob3J0ZW5lZCB0byAidmlydHVhbGVudiIpLCBhIHNlbGYtY29udGFpbmVkCi1kaXJlY3RvcnkgdHJlZSB0aGF0IGNvbnRhaW5zIGEgUHl0aG9uIGluc3RhbGxhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyCi12ZXJzaW9uIG9mIFB5dGhvbiwgcGx1cyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIHBhY2thZ2VzLgorVGhlIHNvbHV0aW9uIGZvciB0aGlzIHByb2JsZW0gaXMgdG8gY3JlYXRlIGEgOnRlcm06YHZpcnR1YWwgZW52aXJvbm1lbnRgLCBhCitzZWxmLWNvbnRhaW5lZCBkaXJlY3RvcnkgdHJlZSB0aGF0IGNvbnRhaW5zIGEgUHl0aG9uIGluc3RhbGxhdGlvbiBmb3IgYQorcGFydGljdWxhciB2ZXJzaW9uIG9mIFB5dGhvbiwgcGx1cyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIHBhY2thZ2VzLgogCiBEaWZmZXJlbnQgYXBwbGljYXRpb25zIGNhbiB0aGVuIHVzZSBkaWZmZXJlbnQgdmlydHVhbCBlbnZpcm9ubWVudHMuCiBUbyByZXNvbHZlIHRoZSBlYXJsaWVyIGV4YW1wbGUgb2YgY29uZmxpY3RpbmcgcmVxdWlyZW1lbnRzLAogYXBwbGljYXRpb24gQSBjYW4gaGF2ZSBpdHMgb3duIHZpcnR1YWwgZW52aXJvbm1lbnQgd2l0aCB2ZXJzaW9uIDEuMAotaW5zdGFsbGVkIHdoaWxlIGFwcGxpY2F0aW9uIEIgaGFzIGFub3RoZXIgdmlydHVhbGVudiB3aXRoIHZlcnNpb24gMi4wLgoraW5zdGFsbGVkIHdoaWxlIGFwcGxpY2F0aW9uIEIgaGFzIGFub3RoZXIgdmlydHVhbCBlbnZpcm9ubWVudCB3aXRoIHZlcnNpb24gMi4wLgogSWYgYXBwbGljYXRpb24gQiByZXF1aXJlcyBhIGxpYnJhcnkgYmUgdXBncmFkZWQgdG8gdmVyc2lvbiAzLjAsIHRoaXMgd2lsbAogbm90IGFmZmVjdCBhcHBsaWNhdGlvbiBBJ3MgZW52aXJvbm1lbnQuCiAKQEAgLTM2LDI5ICszNSwyNiBAQAogQ3JlYXRpbmcgVmlydHVhbCBFbnZpcm9ubWVudHMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBzY3JpcHQgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmFnZSB2aXJ0dWFsIGVudmlyb25tZW50cyBpcyBjYWxsZWQKLTpwcm9ncmFtOmBweXZlbnZgLiAgOnByb2dyYW06YHB5dmVudmAgd2lsbCB1c3VhbGx5IGluc3RhbGwgdGhlIG1vc3QKLXJlY2VudCB2ZXJzaW9uIG9mIFB5dGhvbiB0aGF0IHlvdSBoYXZlIGF2YWlsYWJsZTsgdGhlIHNjcmlwdCBpcyBhbHNvCi1pbnN0YWxsZWQgd2l0aCBhIHZlcnNpb24gbnVtYmVyLCBzbyBpZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZgotUHl0aG9uIG9uIHlvdXIgc3lzdGVtIHlvdSBjYW4gc2VsZWN0IGEgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24gYnkKLXJ1bm5pbmcgYGBweXZlbnYtMy40YGAgb3Igd2hpY2hldmVyIHZlcnNpb24geW91IHdhbnQuCitUaGUgbW9kdWxlIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgdmlydHVhbCBlbnZpcm9ubWVudHMgaXMgY2FsbGVkCis6bW9kOmB2ZW52YC4gIDptb2Q6YHZlbnZgIHdpbGwgdXN1YWxseSBpbnN0YWxsIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mCitQeXRob24gdGhhdCB5b3UgaGF2ZSBhdmFpbGFibGUuIElmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiBvbiB5b3VyCitzeXN0ZW0sIHlvdSBjYW4gc2VsZWN0IGEgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24gYnkgcnVubmluZyBgYHB5dGhvbjNgYCBvcgord2hpY2hldmVyIHZlcnNpb24geW91IHdhbnQuCiAKLVRvIGNyZWF0ZSBhIHZpcnR1YWxlbnYsIGRlY2lkZSB1cG9uIGEgZGlyZWN0b3J5Ci13aGVyZSB5b3Ugd2FudCB0byBwbGFjZSBpdCBhbmQgcnVuIDpwcm9ncmFtOmBweXZlbnZgIHdpdGggdGhlCi1kaXJlY3RvcnkgcGF0aDo6CitUbyBjcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50LCBkZWNpZGUgdXBvbiBhIGRpcmVjdG9yeSB3aGVyZSB5b3Ugd2FudCB0bworcGxhY2UgaXQsIGFuZCBydW4gdGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBhcyBhIHNjcmlwdCB3aXRoIHRoZSBkaXJlY3RvcnkgcGF0aDo6CiAKLSAgIHB5dmVudiB0dXRvcmlhbC1lbnYKKyAgIHB5dGhvbjMgLW0gdmVudiB0dXRvcmlhbC1lbnYKIAogVGhpcyB3aWxsIGNyZWF0ZSB0aGUgYGB0dXRvcmlhbC1lbnZgYCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdCwKIGFuZCBhbHNvIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnNpZGUgaXQgY29udGFpbmluZyBhIGNvcHkgb2YgdGhlIFB5dGhvbgogaW50ZXJwcmV0ZXIsIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBhbmQgdmFyaW91cyBzdXBwb3J0aW5nIGZpbGVzLgogCi1PbmNlIHlvdSd2ZSBjcmVhdGVkIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgeW91IG5lZWQgdG8KLWFjdGl2YXRlIGl0LgorT25jZSB5b3UndmUgY3JlYXRlZCBhIHZpcnR1YWwgZW52aXJvbm1lbnQsIHlvdSBtYXkgYWN0aXZhdGUgaXQuCiAKIE9uIFdpbmRvd3MsIHJ1bjo6CiAKLSAgdHV0b3JpYWwtZW52L1NjcmlwdHMvYWN0aXZhdGUKKyAgdHV0b3JpYWwtZW52XFNjcmlwdHNcYWN0aXZhdGUuYmF0CiAKIE9uIFVuaXggb3IgTWFjT1MsIHJ1bjo6CiAKQEAgLTY5LDMzICs2NSwzNiBAQAogYGBhY3RpdmF0ZS5jc2hgYCBhbmQgYGBhY3RpdmF0ZS5maXNoYGAgc2NyaXB0cyB5b3Ugc2hvdWxkIHVzZQogaW5zdGVhZC4pCiAKLUFjdGl2YXRpbmcgdGhlIHZpcnR1YWxlbnYgd2lsbCBjaGFuZ2UgeW91ciBzaGVsbCdzIHByb21wdCB0byBzaG93IHdoYXQKLXZpcnR1YWxlbnYgeW91J3JlIHVzaW5nLCBhbmQgbW9kaWZ5IHRoZSBlbnZpcm9ubWVudCBzbyB0aGF0IHJ1bm5pbmcKLWBgcHl0aG9uYGAgd2lsbCBnZXQgeW91IHRoYXQgcGFydGljdWxhciB2ZXJzaW9uIGFuZCBpbnN0YWxsYXRpb24gb2YKLVB5dGhvbi4gIEZvciBleGFtcGxlOjoKK0FjdGl2YXRpbmcgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgd2lsbCBjaGFuZ2UgeW91ciBzaGVsbCdzIHByb21wdCB0byBzaG93IHdoYXQKK3ZpcnR1YWwgZW52aXJvbm1lbnQgeW91J3JlIHVzaW5nLCBhbmQgbW9kaWZ5IHRoZSBlbnZpcm9ubWVudCBzbyB0aGF0IHJ1bm5pbmcKK2BgcHl0aG9uYGAgd2lsbCBnZXQgeW91IHRoYXQgcGFydGljdWxhciB2ZXJzaW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgUHl0aG9uLgorRm9yIGV4YW1wbGU6CiAKLSAgLT4gc291cmNlIH4vZW52cy90dXRvcmlhbC1lbnYvYmluL2FjdGl2YXRlCi0gICh0dXRvcmlhbC1lbnYpIC0+IHB5dGhvbgotICBQeXRob24gMy40LjMrICgzLjQ6YzdiOTY0NWE2ZjM1KywgTWF5IDIyIDIwMTUsIDA5OjMxOjI1KQorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAkIHNvdXJjZSB+L2VudnMvdHV0b3JpYWwtZW52L2Jpbi9hY3RpdmF0ZQorICAodHV0b3JpYWwtZW52KSAkIHB5dGhvbgorICBQeXRob24gMy41LjEgKGRlZmF1bHQsIE1heSAgNiAyMDE2LCAxMDo1OTozNikKICAgICAuLi4KICAgPj4+IGltcG9ydCBzeXMKICAgPj4+IHN5cy5wYXRoCi0gIFsnJywgJy91c3IvbG9jYWwvbGliL3B5dGhvbjM0LnppcCcsIC4uLiwKLSAgJ34vZW52cy90dXRvcmlhbC1lbnYvbGliL3B5dGhvbjMuNC9zaXRlLXBhY2thZ2VzJ10KKyAgWycnLCAnL3Vzci9sb2NhbC9saWIvcHl0aG9uMzUuemlwJywgLi4uLAorICAnfi9lbnZzL3R1dG9yaWFsLWVudi9saWIvcHl0aG9uMy41L3NpdGUtcGFja2FnZXMnXQogICA+Pj4KIAogCiBNYW5hZ2luZyBQYWNrYWdlcyB3aXRoIHBpcAogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotT25jZSB5b3UndmUgYWN0aXZhdGVkIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgeW91IGNhbiBpbnN0YWxsLCB1cGdyYWRlLAotYW5kIHJlbW92ZSBwYWNrYWdlcyB1c2luZyBhIHByb2dyYW0gY2FsbGVkIDpwcm9ncmFtOmBwaXBgLiAgQnkgZGVmYXVsdAotYGBwaXBgYCB3aWxsIGluc3RhbGwgcGFja2FnZXMgZnJvbSB0aGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgsCi08aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT4uICBZb3UgY2FuIGJyb3dzZSB0aGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgKLWJ5IGdvaW5nIHRvIGl0IGluIHlvdXIgd2ViIGJyb3dzZXIsIG9yIHlvdSBjYW4gdXNlIGBgcGlwYGAncwotbGltaXRlZCBzZWFyY2ggZmVhdHVyZTo6CitZb3UgY2FuIGluc3RhbGwsIHVwZ3JhZGUsIGFuZCByZW1vdmUgcGFja2FnZXMgdXNpbmcgYSBwcm9ncmFtIGNhbGxlZAorOnByb2dyYW06YHBpcGAuICBCeSBkZWZhdWx0IGBgcGlwYGAgd2lsbCBpbnN0YWxsIHBhY2thZ2VzIGZyb20gdGhlIFB5dGhvbgorUGFja2FnZSBJbmRleCwgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+LiAgWW91IGNhbiBicm93c2UgdGhlIFB5dGhvbgorUGFja2FnZSBJbmRleCBieSBnb2luZyB0byBpdCBpbiB5b3VyIHdlYiBicm93c2VyLCBvciB5b3UgY2FuIHVzZSBgYHBpcGBgJ3MKK2xpbWl0ZWQgc2VhcmNoIGZlYXR1cmU6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIHNlYXJjaCBhc3Ryb25vbXkKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgc2VhcmNoIGFzdHJvbm9teQogICBza3lmaWVsZCAgICAgICAgICAgICAgIC0gRWxlZ2FudCBhc3Ryb25vbXkgZm9yIFB5dGhvbgogICBnYXJ5ICAgICAgICAgICAgICAgICAgIC0gR2FsYWN0aWMgYXN0cm9ub215IGFuZCBncmF2aXRhdGlvbmFsIGR5bmFtaWNzLgogICBub3ZhcyAgICAgICAgICAgICAgICAgIC0gVGhlIFVuaXRlZCBTdGF0ZXMgTmF2YWwgT2JzZXJ2YXRvcnkgTk9WQVMgYXN0cm9ub215IGxpYnJhcnkKQEAgLTEwNyw5ICsxMDYsMTEgQEAKICJmcmVlemUiLCBldGMuICAoQ29uc3VsdCB0aGUgOnJlZjpgaW5zdGFsbGluZy1pbmRleGAgZ3VpZGUgZm9yCiBjb21wbGV0ZSBkb2N1bWVudGF0aW9uIGZvciBgYHBpcGBgLikKIAotWW91IGNhbiBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIHBhY2thZ2UgYnkgc3BlY2lmeWluZyBhIHBhY2thZ2UncyBuYW1lOjoKK1lvdSBjYW4gaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYSBwYWNrYWdlIGJ5IHNwZWNpZnlpbmcgYSBwYWNrYWdlJ3MgbmFtZToKIAotICAtPiBwaXAgaW5zdGFsbCBub3ZhcworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBpbnN0YWxsIG5vdmFzCiAgIENvbGxlY3Rpbmcgbm92YXMKICAgICBEb3dubG9hZGluZyBub3Zhcy0zLjEuMS4zLnRhci5neiAoMTM2a0IpCiAgIEluc3RhbGxpbmcgY29sbGVjdGVkIHBhY2thZ2VzOiBub3ZhcwpAQCAtMTE3LDkgKzExOCwxMSBAQAogICBTdWNjZXNzZnVsbHkgaW5zdGFsbGVkIG5vdmFzLTMuMS4xLjMKIAogWW91IGNhbiBhbHNvIGluc3RhbGwgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgcGFja2FnZSBieSBnaXZpbmcgdGhlCi1wYWNrYWdlIG5hbWUgIGZvbGxvd2VkIGJ5IGBgPT1gYCBhbmQgdGhlIHZlcnNpb24gbnVtYmVyOjoKK3BhY2thZ2UgbmFtZSAgZm9sbG93ZWQgYnkgYGA9PWBgIGFuZCB0aGUgdmVyc2lvbiBudW1iZXI6CiAKLSAgLT4gcGlwIGluc3RhbGwgcmVxdWVzdHM9PTIuNi4wCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgcmVxdWVzdHM9PTIuNi4wCiAgIENvbGxlY3RpbmcgcmVxdWVzdHM9PTIuNi4wCiAgICAgVXNpbmcgY2FjaGVkIHJlcXVlc3RzLTIuNi4wLXB5Mi5weTMtbm9uZS1hbnkud2hsCiAgIEluc3RhbGxpbmcgY29sbGVjdGVkIHBhY2thZ2VzOiByZXF1ZXN0cwpAQCAtMTI4LDkgKzEzMSwxMSBAQAogSWYgeW91IHJlLXJ1biB0aGlzIGNvbW1hbmQsIGBgcGlwYGAgd2lsbCBub3RpY2UgdGhhdCB0aGUgcmVxdWVzdGVkCiB2ZXJzaW9uIGlzIGFscmVhZHkgaW5zdGFsbGVkIGFuZCBkbyBub3RoaW5nLiAgWW91IGNhbiBzdXBwbHkgYQogZGlmZmVyZW50IHZlcnNpb24gbnVtYmVyIHRvIGdldCB0aGF0IHZlcnNpb24sIG9yIHlvdSBjYW4gcnVuIGBgcGlwCi1pbnN0YWxsIC0tdXBncmFkZWBgIHRvIHVwZ3JhZGUgdGhlIHBhY2thZ2UgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uOjoKK2luc3RhbGwgLS11cGdyYWRlYGAgdG8gdXBncmFkZSB0aGUgcGFja2FnZSB0byB0aGUgbGF0ZXN0IHZlcnNpb246CiAKLSAgLT4gcGlwIGluc3RhbGwgLS11cGdyYWRlIHJlcXVlc3RzCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgLS11cGdyYWRlIHJlcXVlc3RzCiAgIENvbGxlY3RpbmcgcmVxdWVzdHMKICAgSW5zdGFsbGluZyBjb2xsZWN0ZWQgcGFja2FnZXM6IHJlcXVlc3RzCiAgICAgRm91bmQgZXhpc3RpbmcgaW5zdGFsbGF0aW9uOiByZXF1ZXN0cyAyLjYuMApAQCAtMTQxLDkgKzE0NiwxMSBAQAogYGBwaXAgdW5pbnN0YWxsYGAgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgcGFja2FnZSBuYW1lcyB3aWxsIHJlbW92ZSB0aGUKIHBhY2thZ2VzIGZyb20gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLWBgcGlwIHNob3dgYCB3aWxsIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIHBhY2thZ2U6OgorYGBwaXAgc2hvd2BgIHdpbGwgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgcGFja2FnZToKIAotICAodHV0b3JpYWwtZW52KSAtPiBwaXAgc2hvdyByZXF1ZXN0cworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBzaG93IHJlcXVlc3RzCiAgIC0tLQogICBNZXRhZGF0YS1WZXJzaW9uOiAyLjAKICAgTmFtZTogcmVxdWVzdHMKQEAgLTE1Nyw5ICsxNjQsMTEgQEAKICAgUmVxdWlyZXM6CiAKIGBgcGlwIGxpc3RgYCB3aWxsIGRpc3BsYXkgYWxsIG9mIHRoZSBwYWNrYWdlcyBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwKLWVudmlyb25tZW50OjoKK2Vudmlyb25tZW50OgogCi0gICh0dXRvcmlhbC1lbnYpIC0+IHBpcCBsaXN0CisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGxpc3QKICAgbm92YXMgKDMuMS4xLjMpCiAgIG51bXB5ICgxLjkuMikKICAgcGlwICg3LjAuMykKQEAgLTE2OCwxOSArMTc3LDIzIEBACiAKIGBgcGlwIGZyZWV6ZWBgIHdpbGwgcHJvZHVjZSBhIHNpbWlsYXIgbGlzdCBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLAogYnV0IHRoZSBvdXRwdXQgdXNlcyB0aGUgZm9ybWF0IHRoYXQgYGBwaXAgaW5zdGFsbGBgIGV4cGVjdHMuCi1BIGNvbW1vbiBjb252ZW50aW9uIGlzIHRvIHB1dCB0aGlzIGxpc3QgaW4gYSBgYHJlcXVpcmVtZW50cy50eHRgYCBmaWxlOjoKK0EgY29tbW9uIGNvbnZlbnRpb24gaXMgdG8gcHV0IHRoaXMgbGlzdCBpbiBhIGBgcmVxdWlyZW1lbnRzLnR4dGBgIGZpbGU6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIGZyZWV6ZSA+IHJlcXVpcmVtZW50cy50eHQKLSAgKHR1dG9yaWFsLWVudikgLT4gY2F0IHJlcXVpcmVtZW50cy50eHQKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgZnJlZXplID4gcmVxdWlyZW1lbnRzLnR4dAorICAodHV0b3JpYWwtZW52KSAkIGNhdCByZXF1aXJlbWVudHMudHh0CiAgIG5vdmFzPT0zLjEuMS4zCiAgIG51bXB5PT0xLjkuMgogICByZXF1ZXN0cz09Mi43LjAKIAogVGhlIGBgcmVxdWlyZW1lbnRzLnR4dGBgIGNhbiB0aGVuIGJlIGNvbW1pdHRlZCB0byB2ZXJzaW9uIGNvbnRyb2wgYW5kCiBzaGlwcGVkIGFzIHBhcnQgb2YgYW4gYXBwbGljYXRpb24uICBVc2VycyBjYW4gdGhlbiBpbnN0YWxsIGFsbCB0aGUKLW5lY2Vzc2FyeSBwYWNrYWdlcyB3aXRoIGBgaW5zdGFsbCAtcmBgOjoKK25lY2Vzc2FyeSBwYWNrYWdlcyB3aXRoIGBgaW5zdGFsbCAtcmBgOgogCi0gIC0+IHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0CiAgIENvbGxlY3Rpbmcgbm92YXM9PTMuMS4xLjMgKGZyb20gLXIgcmVxdWlyZW1lbnRzLnR4dCAobGluZSAxKSkKICAgICAuLi4KICAgQ29sbGVjdGluZyBudW1weT09MS45LjIgKGZyb20gLXIgcmVxdWlyZW1lbnRzLnR4dCAobGluZSAyKSkKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9jbWRsaW5lLnJzdCBiL0RvYy91c2luZy9jbWRsaW5lLnJzdAppbmRleCA1N2ZhZjg5Li43NWNiOGVhIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QKKysrIGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CkBAIC0zOTUsNiArMzk1LDggQEAKICAgICAgc3RvcmVkIGluIGEgdHJhY2ViYWNrIG9mIGEgdHJhY2UuIFVzZSBgYC1YIHRyYWNlbWFsbG9jPU5GUkFNRWBgIHRvIHN0YXJ0CiAgICAgIHRyYWNpbmcgd2l0aCBhIHRyYWNlYmFjayBsaW1pdCBvZiAqTkZSQU1FKiBmcmFtZXMuIFNlZSB0aGUKICAgICAgOmZ1bmM6YHRyYWNlbWFsbG9jLnN0YXJ0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICogYGAtWCBzaG93YWxsb2Njb3VudGBgIHRvIGVuYWJsZSB0aGUgb3V0cHV0IG9mIHRoZSB0b3RhbCBjb3VudCBvZiBhbGxvY2F0ZWQKKyAgICAgb2JqZWN0cyBmb3IgZWFjaCB0eXBlIChvbmx5IHdvcmtzIHdoZW4gYnVpbHQgd2l0aCBgYENPVU5UX0FMTE9DU2BgIGRlZmluZWQpOwogCiAgICBJdCBhbHNvIGFsbG93cyBwYXNzaW5nIGFyYml0cmFyeSB2YWx1ZXMgYW5kIHJldHJpZXZpbmcgdGhlbSB0aHJvdWdoIHRoZQogICAgOmRhdGE6YHN5cy5feG9wdGlvbnNgIGRpY3Rpb25hcnkuCkBAIC00MDgsNiArNDEwLDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogICAgICAgVGhlIGBgLVggc2hvd3JlZmNvdW50YGAgYW5kIGBgLVggdHJhY2VtYWxsb2NgYCBvcHRpb25zLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFRoZSBgYC1YIHNob3dhbGxvY2NvdW50YGAgb3B0aW9uLgorCiAKIE9wdGlvbnMgeW91IHNob3VsZG4ndCB1c2UKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTU1NCw2ICs1NTksMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgYGBlbmNvZGluZ25hbWVgYCBwYXJ0IGlzIG5vdyBvcHRpb25hbC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSBlbmNvZGluZyBzcGVjaWZpZWQgYnkgdGhpcyB2YXJpYWJsZSBpcyBpZ25vcmVkIGZvciBpbnRlcmFjdGl2ZQorICAgICAgY29uc29sZSBidWZmZXJzIHVubGVzcyA6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTSU9FTkNPRElOR2AgaXMgYWxzbyBzcGVjaWZpZWQuCisgICAgICBGaWxlcyBhbmQgcGlwZXMgcmVkaXJlY3RlZCB0aHJvdWdoIHRoZSBzdGFuZGFyZCBzdHJlYW1zIGFyZSBub3QgYWZmZWN0ZWQuCiAKIC4uIGVudnZhcjo6IFBZVEhPTk5PVVNFUlNJVEUKIApAQCAtNjE5LDYgKzYyOCw4MSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIAorLi4gZW52dmFyOjogUFlUSE9OTUFMTE9DCisKKyAgIFNldCB0aGUgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIGFuZC9vciBpbnN0YWxsIGRlYnVnIGhvb2tzLgorCisgICBTZXQgdGhlIGZhbWlseSBvZiBtZW1vcnkgYWxsb2NhdG9ycyB1c2VkIGJ5IFB5dGhvbjoKKworICAgKiBgYG1hbGxvY2BgOiB1c2UgdGhlIDpjOmZ1bmM6YG1hbGxvY2AgZnVuY3Rpb24gb2YgdGhlIEMgbGlicmFyeQorICAgICBmb3IgYWxsIGRvbWFpbnMgKDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9SQVdgLCA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCwKKyAgICAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmApLgorICAgKiBgYHB5bWFsbG9jYGA6IHVzZSB0aGUgOnJlZjpgcHltYWxsb2MgYWxsb2NhdG9yIDxweW1hbGxvYz5gIGZvcgorICAgICA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCBhbmQgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgZG9tYWlucyBhbmQgdXNlCisgICAgIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGZ1bmN0aW9uIGZvciB0aGUgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX1JBV2AgZG9tYWluLgorCisgICBJbnN0YWxsIGRlYnVnIGhvb2tzOgorCisgICAqIGBgZGVidWdgYDogaW5zdGFsbCBkZWJ1ZyBob29rcyBvbiB0b3Agb2YgdGhlIGRlZmF1bHQgbWVtb3J5IGFsbG9jYXRvcgorICAgKiBgYG1hbGxvY19kZWJ1Z2BgOiBzYW1lIGFzIGBgbWFsbG9jYGAgYnV0IGFsc28gaW5zdGFsbCBkZWJ1ZyBob29rcworICAgKiBgYHB5bWFsbG9jX2RlYnVnYGA6IHNhbWUgYXMgYGBweW1hbGxvY2BgIGJ1dCBhbHNvIGluc3RhbGwgZGVidWcgaG9va3MKKworICAgV2hlbiBQeXRob24gaXMgY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLCB0aGUgZGVmYXVsdCBpcyBgYHB5bWFsbG9jYGAuIFdoZW4KKyAgIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUsIHRoZSBkZWZhdWx0IGlzIGBgcHltYWxsb2NfZGVidWdgYCBhbmQgdGhlIGRlYnVnIGhvb2tzCisgICBhcmUgdXNlZCBhdXRvbWF0aWNhbGx5LgorCisgICBJZiBQeXRob24gaXMgY29uZmlndXJlZCB3aXRob3V0IGBgcHltYWxsb2NgYCBzdXBwb3J0LCBgYHB5bWFsbG9jYGAgYW5kCisgICBgYHB5bWFsbG9jX2RlYnVnYGAgYXJlIG5vdCBhdmFpbGFibGUsIHRoZSBkZWZhdWx0IGlzIGBgbWFsbG9jYGAgaW4gcmVsZWFzZQorICAgbW9kZSBhbmQgYGBtYWxsb2NfZGVidWdgYCBpbiBkZWJ1ZyBtb2RlLgorCisgICBTZWUgdGhlIDpjOmZ1bmM6YFB5TWVtX1NldHVwRGVidWdIb29rc2AgZnVuY3Rpb24gZm9yIGRlYnVnIGhvb2tzIG9uIFB5dGhvbgorICAgbWVtb3J5IGFsbG9jYXRvcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIGVudnZhcjo6IFBZVEhPTk1BTExPQ1NUQVRTCisKKyAgIElmIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIFB5dGhvbiB3aWxsIHByaW50IHN0YXRpc3RpY3Mgb2YgdGhlCisgICA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yIDxweW1hbGxvYz5gIGV2ZXJ5IHRpbWUgYSBuZXcgcHltYWxsb2Mgb2JqZWN0CisgICBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCisKKyAgIFRoaXMgdmFyaWFibGUgaXMgaWdub3JlZCBpZiB0aGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgaXMgdXNlZCB0byBmb3JjZSB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBhbGxvY2F0b3Igb2YgdGhlIEMgbGlicmFyeSwgb3IgaWYKKyAgIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGhvdXQgYGBweW1hbGxvY2BgIHN1cHBvcnQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGlzIHZhcmlhYmxlIGNhbiBub3cgYWxzbyBiZSB1c2VkIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuCisgICAgICBJdCBub3cgaGFzIG5vIGVmZmVjdCBpZiBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nLgorCisKKy4uIGVudnZhcjo6IFBZVEhPTkxFR0FDWVdJTkRPV1NGU0VOQ09ESU5HCisKKyAgIElmIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kIGVycm9ycyBtb2RlCisgICB3aWxsIHJldmVydCB0byB0aGVpciBwcmUtMy42IHZhbHVlcyBvZiAnbWJjcycgYW5kICdyZXBsYWNlJywgcmVzcGVjdGl2ZWx5LgorICAgT3RoZXJ3aXNlLCB0aGUgbmV3IGRlZmF1bHRzICd1dGYtOCcgYW5kICdzdXJyb2dhdGVwYXNzJyBhcmUgdXNlZC4KKworICAgVGhpcyBtYXkgYWxzbyBiZSBlbmFibGVkIGF0IHJ1bnRpbWUgd2l0aAorICAgOmZ1bmM6YHN5cy5fZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcoKWAuCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFNlZSA6cGVwOmA1MjlgIGZvciBtb3JlIGRldGFpbHMuCisKKy4uIGVudnZhcjo6IFBZVEhPTkxFR0FDWVdJTkRPV1NJT0VOQ09ESU5HCisKKyAgIElmIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIGRvZXMgbm90IHVzZSB0aGUgbmV3IGNvbnNvbGUgcmVhZGVyIGFuZAorICAgd3JpdGVyLiBUaGlzIG1lYW5zIHRoYXQgVW5pY29kZSBjaGFyYWN0ZXJzIHdpbGwgYmUgZW5jb2RlZCBhY2NvcmRpbmcgdG8KKyAgIHRoZSBhY3RpdmUgY29uc29sZSBjb2RlIHBhZ2UsIHJhdGhlciB0aGFuIHVzaW5nIHV0Zi04LgorCisgICBUaGlzIHZhcmlhYmxlIGlzIGlnbm9yZWQgaWYgdGhlIHN0YW5kYXJkIHN0cmVhbXMgYXJlIHJlZGlyZWN0ZWQgKHRvIGZpbGVzCisgICBvciBwaXBlcykgcmF0aGVyIHRoYW4gcmVmZXJyaW5nIHRvIGNvbnNvbGUgYnVmZmVycy4KKworICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiBEZWJ1Zy1tb2RlIHZhcmlhYmxlcwogfn5+fn5+fn5+fn5+fn5+fn5+fn4KIApAQCAtNjM0LDkgKzcxOCwzIEBACiAKICAgIElmIHNldCwgUHl0aG9uIHdpbGwgZHVtcCBvYmplY3RzIGFuZCByZWZlcmVuY2UgY291bnRzIHN0aWxsIGFsaXZlIGFmdGVyCiAgICBzaHV0dGluZyBkb3duIHRoZSBpbnRlcnByZXRlci4KLQotCi0uLiBlbnZ2YXI6OiBQWVRIT05NQUxMT0NTVEFUUwotCi0gICBJZiBzZXQsIFB5dGhvbiB3aWxsIHByaW50IG1lbW9yeSBhbGxvY2F0aW9uIHN0YXRpc3RpY3MgZXZlcnkgdGltZSBhIG5ldwotICAgb2JqZWN0IGFyZW5hIGlzIGNyZWF0ZWQsIGFuZCBvbiBzaHV0ZG93bi4KZGlmZiAtLWdpdCBhL0RvYy91c2luZy9pbmRleC5yc3QgYi9Eb2MvdXNpbmcvaW5kZXgucnN0CmluZGV4IDUwMmFmYTkuLmE1ZGY3MTMgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9pbmRleC5yc3QKKysrIGIvRG9jL3VzaW5nL2luZGV4LnJzdApAQCAtMTcsNCArMTcsMyBAQAogICAgdW5peC5yc3QKICAgIHdpbmRvd3MucnN0CiAgICBtYWMucnN0Ci0gICBzY3JpcHRzLnJzdApkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL21hYy5yc3QgYi9Eb2MvdXNpbmcvbWFjLnJzdAppbmRleCAwNWM5MWJiLi44ZjFhYzNmIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvbWFjLnJzdAorKysgYi9Eb2MvdXNpbmcvbWFjLnJzdApAQCAtMjUsNyArMjUsNyBAQAogCiBXaGF0IHlvdSBnZXQgYWZ0ZXIgaW5zdGFsbGluZyBpcyBhIG51bWJlciBvZiB0aGluZ3M6CiAKLSogQSA6ZmlsZTpgTWFjUHl0aG9uIDMuNWAgZm9sZGVyIGluIHlvdXIgOmZpbGU6YEFwcGxpY2F0aW9uc2AgZm9sZGVyLiBJbiBoZXJlCisqIEEgOmZpbGU6YE1hY1B5dGhvbiAzLjZgIGZvbGRlciBpbiB5b3VyIDpmaWxlOmBBcHBsaWNhdGlvbnNgIGZvbGRlci4gSW4gaGVyZQogICB5b3UgZmluZCBJRExFLCB0aGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGhhdCBpcyBhIHN0YW5kYXJkIHBhcnQgb2Ygb2ZmaWNpYWwKICAgUHl0aG9uIGRpc3RyaWJ1dGlvbnM7IFB5dGhvbkxhdW5jaGVyLCB3aGljaCBoYW5kbGVzIGRvdWJsZS1jbGlja2luZyBQeXRob24KICAgc2NyaXB0cyBmcm9tIHRoZSBGaW5kZXI7IGFuZCB0aGUgIkJ1aWxkIEFwcGxldCIgdG9vbCwgd2hpY2ggYWxsb3dzIHlvdSB0bwpAQCAtOTMsNyArOTMsNyBAQAogYW55dGhpbmcgdGhhdCBoYXMgYSBHVUkpIG5lZWQgdG8gYmUgcnVuIGluIGEgc3BlY2lhbCB3YXkuIFVzZSA6cHJvZ3JhbTpgcHl0aG9ud2AKIGluc3RlYWQgb2YgOnByb2dyYW06YHB5dGhvbmAgdG8gc3RhcnQgc3VjaCBzY3JpcHRzLgogCi1XaXRoIFB5dGhvbiAzLjUsIHlvdSBjYW4gdXNlIGVpdGhlciA6cHJvZ3JhbTpgcHl0aG9uYCBvciA6cHJvZ3JhbTpgcHl0aG9ud2AuCitXaXRoIFB5dGhvbiAzLjYsIHlvdSBjYW4gdXNlIGVpdGhlciA6cHJvZ3JhbTpgcHl0aG9uYCBvciA6cHJvZ3JhbTpgcHl0aG9ud2AuCiAKIAogQ29uZmlndXJhdGlvbgpAQCAtMTU5LDcgKzE1OSw3IEBACiBEaXN0cmlidXRpbmcgUHl0aG9uIEFwcGxpY2F0aW9ucyBvbiB0aGUgTWFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSAiQnVpbGQgQXBwbGV0IiB0b29sIHRoYXQgaXMgcGxhY2VkIGluIHRoZSBNYWNQeXRob24gMy41IGZvbGRlciBpcyBmaW5lIGZvcgorVGhlICJCdWlsZCBBcHBsZXQiIHRvb2wgdGhhdCBpcyBwbGFjZWQgaW4gdGhlIE1hY1B5dGhvbiAzLjYgZm9sZGVyIGlzIGZpbmUgZm9yCiBwYWNrYWdpbmcgc21hbGwgUHl0aG9uIHNjcmlwdHMgb24geW91ciBvd24gbWFjaGluZSB0byBydW4gYXMgYSBzdGFuZGFyZCBNYWMKIGFwcGxpY2F0aW9uLiBUaGlzIHRvb2wsIGhvd2V2ZXIsIGlzIG5vdCByb2J1c3QgZW5vdWdoIHRvIGRpc3RyaWJ1dGUgUHl0aG9uCiBhcHBsaWNhdGlvbnMgdG8gb3RoZXIgdXNlcnMuCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QgYi9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjODc0MTYuLjAwMDAwMDAKLS0tIGEvRG9jL3VzaW5nL3NjcmlwdHMucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLi4gX3Rvb2xzLWFuZC1zY3JpcHRzOgotCi1BZGRpdGlvbmFsIFRvb2xzIGFuZCBTY3JpcHRzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLS4uIF9zY3JpcHRzLXB5dmVudjoKLQotcHl2ZW52IC0gQ3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS4uIGluY2x1ZGU6OiB2ZW52LWNyZWF0ZS5pbmMKLQpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKaW5kZXggN2FkMzAwOC4uNTNmNDMxYiAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYworKysgYi9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCkBAIC0xLDMxICsxLDM5IEBACiBDcmVhdGlvbiBvZiA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50cyA8dmVudi1kZWY+YCBpcyBkb25lIGJ5IGV4ZWN1dGluZyB0aGUKLWBgcHl2ZW52YGAgc2NyaXB0OjoKK2NvbW1hbmQgYGB2ZW52YGA6OgogCi0gICAgcHl2ZW52IC9wYXRoL3RvL25ldy92aXJ0dWFsL2Vudmlyb25tZW50CisgICAgcHl0aG9uMyAtbSB2ZW52IC9wYXRoL3RvL25ldy92aXJ0dWFsL2Vudmlyb25tZW50CiAKIFJ1bm5pbmcgdGhpcyBjb21tYW5kIGNyZWF0ZXMgdGhlIHRhcmdldCBkaXJlY3RvcnkgKGNyZWF0aW5nIGFueSBwYXJlbnQKIGRpcmVjdG9yaWVzIHRoYXQgZG9uJ3QgZXhpc3QgYWxyZWFkeSkgYW5kIHBsYWNlcyBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgaW4gaXQKLXdpdGggYSBgYGhvbWVgYCBrZXkgcG9pbnRpbmcgdG8gdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gdGhlIGNvbW1hbmQgd2FzIHJ1bgotZnJvbS4gIEl0IGFsc28gY3JlYXRlcyBhIGBgYmluYGAgKG9yIGBgU2NyaXB0c2BgIG9uIFdpbmRvd3MpIHN1YmRpcmVjdG9yeQord2l0aCBhIGBgaG9tZWBgIGtleSBwb2ludGluZyB0byB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBmcm9tIHdoaWNoIHRoZSBjb21tYW5kCit3YXMgcnVuLiAgSXQgYWxzbyBjcmVhdGVzIGEgYGBiaW5gYCAob3IgYGBTY3JpcHRzYGAgb24gV2luZG93cykgc3ViZGlyZWN0b3J5CiBjb250YWluaW5nIGEgY29weSBvZiB0aGUgYGBweXRob25gYCBiaW5hcnkgKG9yIGJpbmFyaWVzLCBpbiB0aGUgY2FzZSBvZgogV2luZG93cykuICBJdCBhbHNvIGNyZWF0ZXMgYW4gKGluaXRpYWxseSBlbXB0eSkgYGBsaWIvcHl0aG9uWC5ZL3NpdGUtcGFja2FnZXNgYAogc3ViZGlyZWN0b3J5IChvbiBXaW5kb3dzLCB0aGlzIGlzIGBgTGliXHNpdGUtcGFja2FnZXNgYCkuCiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgIGBgcHl2ZW52YGAgd2FzIHRoZSByZWNvbW1lbmRlZCB0b29sIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cyBmb3IKKyAgIFB5dGhvbiAzLjMgYW5kIDMuNCwgYW5kIGlzIGBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjYKKyAgIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXYvd2hhdHNuZXcvMy42Lmh0bWwjZGVwcmVjYXRlZC1mZWF0dXJlcz5gXy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFRoZSB1c2Ugb2YgYGB2ZW52YGAgaXMgbm93IHJlY29tbWVuZGVkIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cy4KKwogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IENyZWF0aW5nIGFuZCB1c2luZyB2aXJ0dWFsIGVudmlyb25tZW50cwotICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2luc3RhbGxpbmcvI2NyZWF0aW5nLXZpcnR1YWwtZW52aXJvbm1lbnRzPmBfXworICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvaW5zdGFsbGluZy8jY3JlYXRpbmctdmlydHVhbC1lbnZpcm9ubWVudHM+YF9fCiAKIC4uIGhpZ2hsaWdodDo6IG5vbmUKIAotT24gV2luZG93cywgeW91IG1heSBoYXZlIHRvIGludm9rZSB0aGUgYGBweXZlbnZgYCBzY3JpcHQgYXMgZm9sbG93cywgaWYgeW91Ci1kb24ndCBoYXZlIHRoZSByZWxldmFudCBQQVRIIGFuZCBQQVRIRVhUIHNldHRpbmdzOjoKK09uIFdpbmRvd3MsIGludm9rZSB0aGUgYGB2ZW52YGAgY29tbWFuZCBhcyBmb2xsb3dzOjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzVccHl0aG9uIGM6XFB5dGhvbjM1XFRvb2xzXFNjcmlwdHNccHl2ZW52LnB5IG15ZW52CisgICAgYzpcPmM6XFB5dGhvbjM1XHB5dGhvbiAtbSB2ZW52IGM6XHBhdGhcdG9cbXllbnYKIAotb3IgZXF1aXZhbGVudGx5OjoKK0FsdGVybmF0aXZlbHksIGlmIHlvdSBjb25maWd1cmVkIHRoZSBgYFBBVEhgYCBhbmQgYGBQQVRIRVhUYGAgdmFyaWFibGVzIGZvcgoreW91ciA6cmVmOmBQeXRob24gaW5zdGFsbGF0aW9uIDx1c2luZy1vbi13aW5kb3dzPmA6OgogCi0gICAgYzpcVGVtcD5jOlxQeXRob24zNVxweXRob24gLW0gdmVudiBteWVudgorICAgIGM6XD5weXRob24gLW0gdmVudiBteWVudiBjOlxwYXRoXHRvXG15ZW52CiAKIFRoZSBjb21tYW5kLCBpZiBydW4gd2l0aCBgYC1oYGAsIHdpbGwgc2hvdyB0aGUgYXZhaWxhYmxlIG9wdGlvbnM6OgogCkBAIC0zNiwyNSArNDQsMjYgQEAKICAgICBDcmVhdGVzIHZpcnR1YWwgUHl0aG9uIGVudmlyb25tZW50cyBpbiBvbmUgb3IgbW9yZSB0YXJnZXQgZGlyZWN0b3JpZXMuCiAKICAgICBwb3NpdGlvbmFsIGFyZ3VtZW50czoKLSAgICAgIEVOVl9ESVIgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KKyAgICAgIEVOVl9ESVIgICAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgogCiAgICAgb3B0aW9uYWwgYXJndW1lbnRzOgotICAgICAgLWgsIC0taGVscCAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gICAgICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzIEdpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZS1wYWNrYWdlcyBkaXIuCi0gICAgICAtLXN5bWxpbmtzICAgICAgICAgICAgIFRyeSB0byB1c2Ugc3ltbGlua3MgcmF0aGVyIHRoYW4gY29waWVzLCB3aGVuIHN5bWxpbmtzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KLSAgICAgIC0tY29waWVzICAgICAgICAgICAgICAgVHJ5IHRvIHVzZSBjb3BpZXMgcmF0aGVyIHRoYW4gc3ltbGlua3MsIGV2ZW4gd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcyBhcmUgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KLSAgICAgIC0tY2xlYXIgICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCi0gICAgICAtLXVwZ3JhZGUgICAgICAgICAgICAgIFVwZ3JhZGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgotICAgICAgLS13aXRob3V0LXBpcCAgICAgICAgICBTa2lwcyBpbnN0YWxsaW5nIG9yIHVwZ3JhZGluZyBwaXAgaW4gdGhlIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgKHBpcCBpcyBib290c3RyYXBwZWQgYnkgZGVmYXVsdCkKKyAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l2ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGUtcGFja2FnZXMgZGlyLgorICAgICAgLS1zeW1saW5rcyAgICAgICAgICAgIFRyeSB0byB1c2Ugc3ltbGlua3MgcmF0aGVyIHRoYW4gY29waWVzLCB3aGVuIHN5bWxpbmtzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgorICAgICAgLS1jb3BpZXMgICAgICAgICAgICAgIFRyeSB0byB1c2UgY29waWVzIHJhdGhlciB0aGFuIHN5bWxpbmtzLCBldmVuIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcyBhcmUgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KKyAgICAgIC0tY2xlYXIgICAgICAgICAgICAgICBEZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGV4aXN0cywgYmVmb3JlIGVudmlyb25tZW50IGNyZWF0aW9uLgorICAgICAgLS11cGdyYWRlICAgICAgICAgICAgIFVwZ3JhZGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCisgICAgICAtLXdpdGhvdXQtcGlwICAgICAgICAgU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSB2aXJ0dWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgKHBpcCBpcyBib290c3RyYXBwZWQgYnkgZGVmYXVsdCkKIAotRGVwZW5kaW5nIG9uIGhvdyB0aGUgYGB2ZW52YGAgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBpbnZva2VkLCB0aGUgdXNhZ2UgbWVzc2FnZQotbWF5IHZhcnkgc2xpZ2h0bHksIGUuZy4gcmVmZXJlbmNpbmcgYGBweXZlbnZgYCByYXRoZXIgdGhhbiBgYHZlbnZgYC4KKyAgICBPbmNlIGFuIGVudmlyb25tZW50IGhhcyBiZWVuIGNyZWF0ZWQsIHlvdSBtYXkgd2lzaCB0byBhY3RpdmF0ZSBpdCwgZS5nLiBieQorICAgIHNvdXJjaW5nIGFuIGFjdGl2YXRlIHNjcmlwdCBpbiBpdHMgYmluIGRpcmVjdG9yeS4KIAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgIEluc3RhbGxzIHBpcCBieSBkZWZhdWx0LCBhZGRlZCB0aGUgYGAtLXdpdGhvdXQtcGlwYGAgIGFuZCBgYC0tY29waWVzYGAKQEAgLTczLDEyICs4MiwxMyBAQAogVW5sZXNzIHRoZSBgYC0td2l0aG91dC1waXBgYCBvcHRpb24gaXMgZ2l2ZW4sIDptb2Q6YGVuc3VyZXBpcGAgd2lsbCBiZQogaW52b2tlZCB0byBib290c3RyYXAgYGBwaXBgYCBpbnRvIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgogCi1NdWx0aXBsZSBwYXRocyBjYW4gYmUgZ2l2ZW4gdG8gYGBweXZlbnZgYCwgaW4gd2hpY2ggY2FzZSBhbiBpZGVudGljYWwKLXZpcnR1YWxlbnYgd2lsbCBiZSBjcmVhdGVkLCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG9wdGlvbnMsIGF0IGVhY2gKLXByb3ZpZGVkIHBhdGguCitNdWx0aXBsZSBwYXRocyBjYW4gYmUgZ2l2ZW4gdG8gYGB2ZW52YGAsIGluIHdoaWNoIGNhc2UgYW4gaWRlbnRpY2FsIHZpcnR1YWwKK2Vudmlyb25tZW50IHdpbGwgYmUgY3JlYXRlZCwgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBvcHRpb25zLCBhdCBlYWNoIHByb3ZpZGVkCitwYXRoLgogCi1PbmNlIGEgdmVudiBoYXMgYmVlbiBjcmVhdGVkLCBpdCBjYW4gYmUgImFjdGl2YXRlZCIgdXNpbmcgYSBzY3JpcHQgaW4gdGhlCi12ZW52J3MgYmluYXJ5IGRpcmVjdG9yeS4gVGhlIGludm9jYXRpb24gb2YgdGhlIHNjcmlwdCBpcyBwbGF0Zm9ybS1zcGVjaWZpYzoKK09uY2UgYSB2aXJ0dWFsIGVudmlyb25tZW50IGhhcyBiZWVuIGNyZWF0ZWQsIGl0IGNhbiBiZSAiYWN0aXZhdGVkIiB1c2luZyBhCitzY3JpcHQgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBiaW5hcnkgZGlyZWN0b3J5LiBUaGUgaW52b2NhdGlvbiBvZiB0aGUKK3NjcmlwdCBpcyBwbGF0Zm9ybS1zcGVjaWZpYzoKIAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IFBsYXRmb3JtICAgIHwgU2hlbGwgICAgICAgICAgIHwgQ29tbWFuZCB0byBhY3RpdmF0ZSB2aXJ0dWFsIGVudmlyb25tZW50IHwKQEAgLTk1LDE2ICsxMDUsMTcgQEAKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiBZb3UgZG9uJ3Qgc3BlY2lmaWNhbGx5ICpuZWVkKiB0byBhY3RpdmF0ZSBhbiBlbnZpcm9ubWVudDsgYWN0aXZhdGlvbiBqdXN0Ci1wcmVwZW5kcyB0aGUgdmVudidzIGJpbmFyeSBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCBzbyB0aGF0ICJweXRob24iIGludm9rZXMgdGhlCi12ZW52J3MgUHl0aG9uIGludGVycHJldGVyIGFuZCB5b3UgY2FuIHJ1biBpbnN0YWxsZWQgc2NyaXB0cyB3aXRob3V0IGhhdmluZyB0bwotdXNlIHRoZWlyIGZ1bGwgcGF0aC4gSG93ZXZlciwgYWxsIHNjcmlwdHMgaW5zdGFsbGVkIGluIGEgdmVudiBzaG91bGQgYmUKLXJ1bm5hYmxlIHdpdGhvdXQgYWN0aXZhdGluZyBpdCwgYW5kIHJ1biB3aXRoIHRoZSB2ZW52J3MgUHl0aG9uIGF1dG9tYXRpY2FsbHkuCitwcmVwZW5kcyB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGJpbmFyeSBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCBzbyB0aGF0CisicHl0aG9uIiBpbnZva2VzIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgUHl0aG9uIGludGVycHJldGVyIGFuZCB5b3UgY2FuIHJ1bgoraW5zdGFsbGVkIHNjcmlwdHMgd2l0aG91dCBoYXZpbmcgdG8gdXNlIHRoZWlyIGZ1bGwgcGF0aC4gSG93ZXZlciwgYWxsIHNjcmlwdHMKK2luc3RhbGxlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgc2hvdWxkIGJlIHJ1bm5hYmxlIHdpdGhvdXQgYWN0aXZhdGluZyBpdCwKK2FuZCBydW4gd2l0aCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIFB5dGhvbiBhdXRvbWF0aWNhbGx5LgogCi1Zb3UgY2FuIGRlYWN0aXZhdGUgYSB2ZW52IGJ5IHR5cGluZyAiZGVhY3RpdmF0ZSIgaW4geW91ciBzaGVsbC4gVGhlIGV4YWN0Ci1tZWNoYW5pc20gaXMgcGxhdGZvcm0tc3BlY2lmaWM6IGZvciBleGFtcGxlLCB0aGUgQmFzaCBhY3RpdmF0aW9uIHNjcmlwdCBkZWZpbmVzCi1hICJkZWFjdGl2YXRlIiBmdW5jdGlvbiwgd2hlcmVhcyBvbiBXaW5kb3dzIHRoZXJlIGFyZSBzZXBhcmF0ZSBzY3JpcHRzIGNhbGxlZAotYGBkZWFjdGl2YXRlLmJhdGBgIGFuZCBgYERlYWN0aXZhdGUucHMxYGAgd2hpY2ggYXJlIGluc3RhbGxlZCB3aGVuIHRoZSB2ZW52IGlzCi1jcmVhdGVkLgorWW91IGNhbiBkZWFjdGl2YXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBieSB0eXBpbmcgImRlYWN0aXZhdGUiIGluIHlvdXIgc2hlbGwuCitUaGUgZXhhY3QgbWVjaGFuaXNtIGlzIHBsYXRmb3JtLXNwZWNpZmljOiBmb3IgZXhhbXBsZSwgdGhlIEJhc2ggYWN0aXZhdGlvbgorc2NyaXB0IGRlZmluZXMgYSAiZGVhY3RpdmF0ZSIgZnVuY3Rpb24sIHdoZXJlYXMgb24gV2luZG93cyB0aGVyZSBhcmUgc2VwYXJhdGUKK3NjcmlwdHMgY2FsbGVkIGBgZGVhY3RpdmF0ZS5iYXRgYCBhbmQgYGBEZWFjdGl2YXRlLnBzMWBgIHdoaWNoIGFyZSBpbnN0YWxsZWQKK3doZW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgY3JlYXRlZC4KIAogLi4gdmVyc2lvbmFkZGVkOjogMy40CiAgICBgYGZpc2hgYCBhbmQgYGBjc2hgYCBhY3RpdmF0aW9uIHNjcmlwdHMuCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKaW5kZXggYTRhNmEzMC4uYjZjYTBkMiAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0CisrKyBiL0RvYy91c2luZy93aW5kb3dzLnJzdApAQCAtMjksMTUgKzI5LDE1IEBACiAKIEFzIHNwZWNpZmllZCBpbiA6cGVwOmAxMWAsIGEgUHl0aG9uIHJlbGVhc2Ugb25seSBzdXBwb3J0cyBhIFdpbmRvd3MgcGxhdGZvcm0KIHdoaWxlIE1pY3Jvc29mdCBjb25zaWRlcnMgdGhlIHBsYXRmb3JtIHVuZGVyIGV4dGVuZGVkIHN1cHBvcnQuIFRoaXMgbWVhbnMgdGhhdAotUHl0aG9uIDMuNSBzdXBwb3J0cyBXaW5kb3dzIFZpc3RhIGFuZCBuZXdlci4gSWYgeW91IHJlcXVpcmUgV2luZG93cyBYUCBzdXBwb3J0Ci10aGVuIHBsZWFzZSBpbnN0YWxsIFB5dGhvbiAzLjQuCitQeXRob24gfHZlcnNpb258IHN1cHBvcnRzIFdpbmRvd3MgVmlzdGEgYW5kIG5ld2VyLiBJZiB5b3UgcmVxdWlyZSBXaW5kb3dzIFhQCitzdXBwb3J0IHRoZW4gcGxlYXNlIGluc3RhbGwgUHl0aG9uIDMuNC4KIAogSW5zdGFsbGF0aW9uIFN0ZXBzCiAtLS0tLS0tLS0tLS0tLS0tLS0KIAotRm91ciBQeXRob24gMy41IGluc3RhbGxlcnMgYXJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgLSB0d28gZWFjaCBmb3IgdGhlIDMyLWJpdAotYW5kIDY0LWJpdCB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuIFRoZSAqd2ViIGluc3RhbGxlciogaXMgYSBzbWFsbCBpbml0aWFsCi1kb3dubG9hZCwgYW5kIGl0IHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBhcworRm91ciBQeXRob24gfHZlcnNpb258IGluc3RhbGxlcnMgYXJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgLSB0d28gZWFjaCBmb3IgdGhlCiszMi1iaXQgYW5kIDY0LWJpdCB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuIFRoZSAqd2ViIGluc3RhbGxlciogaXMgYSBzbWFsbAoraW5pdGlhbCBkb3dubG9hZCwgYW5kIGl0IHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBhcwogbmVjZXNzYXJ5LiBUaGUgKm9mZmxpbmUgaW5zdGFsbGVyKiBpbmNsdWRlcyB0aGUgY29tcG9uZW50cyBuZWNlc3NhcnkgZm9yIGEKIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGFuZCBvbmx5IHJlcXVpcmVzIGFuIGludGVybmV0IGNvbm5lY3Rpb24gZm9yIG9wdGlvbmFsCiBmZWF0dXJlcy4gU2VlIDpyZWY6YGluc3RhbGwtbGF5b3V0LW9wdGlvbmAgZm9yIG90aGVyIHdheXMgdG8gYXZvaWQgZG93bmxvYWRpbmcKQEAgLTc0LDYgKzc0LDMxIEBACiAqIElmIHNlbGVjdGVkLCB0aGUgaW5zdGFsbCBkaXJlY3Rvcnkgd2lsbCBiZSBhZGRlZCB0byB0aGUgc3lzdGVtIDplbnZ2YXI6YFBBVEhgCiAqIFNob3J0Y3V0cyBhcmUgYXZhaWxhYmxlIGZvciBhbGwgdXNlcnMKIAorLi4gX21heC1wYXRoOgorCitSZW1vdmluZyB0aGUgTUFYX1BBVEggTGltaXRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2luZG93cyBoaXN0b3JpY2FsbHkgaGFzIGxpbWl0ZWQgcGF0aCBsZW5ndGhzIHRvIDI2MCBjaGFyYWN0ZXJzLiBUaGlzIG1lYW50IHRoYXQKK3BhdGhzIGxvbmdlciB0aGFuIHRoaXMgd291bGQgbm90IHJlc29sdmUgYW5kIGVycm9ycyB3b3VsZCByZXN1bHQuCisKK0luIHRoZSBsYXRlc3QgdmVyc2lvbnMgb2YgV2luZG93cywgdGhpcyBsaW1pdGF0aW9uIGNhbiBiZSBleHBhbmRlZCB0bworYXBwcm94aW1hdGVseSAzMiwwMDAgY2hhcmFjdGVycy4gWW91ciBhZG1pbmlzdHJhdG9yIHdpbGwgbmVlZCB0byBhY3RpdmF0ZSB0aGUKKyJFbmFibGUgV2luMzIgbG9uZyBwYXRocyIgZ3JvdXAgcG9saWN5LCBvciBzZXQgdGhlIHJlZ2lzdHJ5IHZhbHVlCitgYEhLRVlfTE9DQUxfTUFDSElORVxTWVNURU1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxGaWxlU3lzdGVtQExvbmdQYXRoc0VuYWJsZWRgYAordG8gYGAxYGAuCisKK1RoaXMgYWxsb3dzIHRoZSA6ZnVuYzpgb3BlbmAgZnVuY3Rpb24sIHRoZSA6bW9kOmBvc2AgbW9kdWxlIGFuZCBtb3N0IG90aGVyCitwYXRoIGZ1bmN0aW9uYWxpdHkgdG8gYWNjZXB0IGFuZCByZXR1cm4gcGF0aHMgbG9uZ2VyIHRoYW4gMjYwIGNoYXJhY3RlcnMgd2hlbgordXNpbmcgc3RyaW5ncy4gKFVzZSBvZiBieXRlcyBhcyBwYXRocyBpcyBkZXByZWNhdGVkIG9uIFdpbmRvd3MsIGFuZCB0aGlzIGZlYXR1cmUKK2lzIG5vdCBhdmFpbGFibGUgd2hlbiB1c2luZyBieXRlcy4pCisKK0FmdGVyIGNoYW5naW5nIHRoZSBhYm92ZSBvcHRpb24sIG5vIGZ1cnRoZXIgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZC4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKworICAgU3VwcG9ydCBmb3IgbG9uZyBwYXRocyB3YXMgZW5hYmxlZCBpbiBQeXRob24uCisKIC4uIF9pbnN0YWxsLXF1aWV0LW9wdGlvbjoKIAogSW5zdGFsbGluZyBXaXRob3V0IFVJCkBAIC0xNjgsMTMgKzE5MywxMyBAQAogRm9yIGV4YW1wbGUsIHRvIHNpbGVudGx5IGluc3RhbGwgYSBkZWZhdWx0LCBzeXN0ZW0td2lkZSBQeXRob24gaW5zdGFsbGF0aW9uLAogeW91IGNvdWxkIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgKGZyb20gYW4gZWxldmF0ZWQgY29tbWFuZCBwcm9tcHQpOjoKIAotICAgIHB5dGhvbi0zLjUuMC5leGUgL3F1aWV0IEluc3RhbGxBbGxVc2Vycz0xIFByZXBlbmRQYXRoPTEgSW5jbHVkZV90ZXN0PTAKKyAgICBweXRob24tMy42LjAuZXhlIC9xdWlldCBJbnN0YWxsQWxsVXNlcnM9MSBQcmVwZW5kUGF0aD0xIEluY2x1ZGVfdGVzdD0wCiAKIFRvIGFsbG93IHVzZXJzIHRvIGVhc2lseSBpbnN0YWxsIGEgcGVyc29uYWwgY29weSBvZiBQeXRob24gd2l0aG91dCB0aGUgdGVzdAogc3VpdGUsIHlvdSBjb3VsZCBwcm92aWRlIGEgc2hvcnRjdXQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQuIFRoaXMgd2lsbAogZGlzcGxheSBhIHNpbXBsaWZpZWQgaW5pdGlhbCBwYWdlIGFuZCBkaXNhbGxvdyBjdXN0b21pemF0aW9uOjoKIAotICAgIHB5dGhvbi0zLjUuMC5leGUgSW5zdGFsbEFsbFVzZXJzPTAgSW5jbHVkZV9sYXVuY2hlcj0wIEluY2x1ZGVfdGVzdD0wCisgICAgcHl0aG9uLTMuNi4wLmV4ZSBJbnN0YWxsQWxsVXNlcnM9MCBJbmNsdWRlX2xhdW5jaGVyPTAgSW5jbHVkZV90ZXN0PTAKICAgICAgICAgU2ltcGxlSW5zdGFsbD0xIFNpbXBsZUluc3RhbGxEZXNjcmlwdGlvbj0iSnVzdCBmb3IgbWUsIG5vIHRlc3Qgc3VpdGUuIgogCiAoTm90ZSB0aGF0IG9taXR0aW5nIHRoZSBsYXVuY2hlciBhbHNvIG9taXRzIGZpbGUgYXNzb2NpYXRpb25zLCBhbmQgaXMgb25seQpAQCAtMjA5LDEzICsyMzQsMTMgQEAKIHVzZWZ1bCB0byBoYXZlIGEgbG9jYWxseSBjYWNoZWQgY29weS4KIAogRXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSBDb21tYW5kIFByb21wdCB0byBkb3dubG9hZCBhbGwgcG9zc2libGUKLXJlcXVpcmVkIGZpbGVzLiAgUmVtZW1iZXIgdG8gc3Vic3RpdHV0ZSBgYHB5dGhvbi0zLjUuMC5leGVgYCBmb3IgdGhlIGFjdHVhbAorcmVxdWlyZWQgZmlsZXMuICBSZW1lbWJlciB0byBzdWJzdGl0dXRlIGBgcHl0aG9uLTMuNi4wLmV4ZWBgIGZvciB0aGUgYWN0dWFsCiBuYW1lIG9mIHlvdXIgaW5zdGFsbGVyLCBhbmQgdG8gY3JlYXRlIGxheW91dHMgaW4gdGhlaXIgb3duIGRpcmVjdG9yaWVzIHRvCiBhdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gZmlsZXMgd2l0aCB0aGUgc2FtZSBuYW1lLgogCiA6OgogCi0gICAgcHl0aG9uLTMuNS4wLmV4ZSAvbGF5b3V0IFtvcHRpb25hbCB0YXJnZXQgZGlyZWN0b3J5XQorICAgIHB5dGhvbi0zLjYuMC5leGUgL2xheW91dCBbb3B0aW9uYWwgdGFyZ2V0IGRpcmVjdG9yeV0KIAogWW91IG1heSBhbHNvIHNwZWNpZnkgdGhlIGBgL3F1aWV0YGAgb3B0aW9uIHRvIGhpZGUgdGhlIHByb2dyZXNzIGRpc3BsYXkuCiAKQEAgLTMyMCw3ICszNDUsNyBAQAogVG8gdGVtcG9yYXJpbHkgc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcywgb3BlbiBDb21tYW5kIFByb21wdCBhbmQgdXNlIHRoZQogOmNvbW1hbmQ6YHNldGAgY29tbWFuZDo6CiAKLSAgICBDOlw+c2V0IFBBVEg9QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy41OyVQQVRIJQorICAgIEM6XD5zZXQgUEFUSD1DOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjY7JVBBVEglCiAgICAgQzpcPnNldCBQWVRIT05QQVRIPSVQWVRIT05QQVRIJTtDOlxNeV9weXRob25fbGliCiAgICAgQzpcPnB5dGhvbgogCkBAIC0zNzYsMTAgKzQwMSwxMCBAQAogCiBCZXNpZGVzIHVzaW5nIHRoZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgc3RhcnQgbWVudSBlbnRyeSBmb3IgdGhlIFB5dGhvbgogaW50ZXJwcmV0ZXIsIHlvdSBtaWdodCB3YW50IHRvIHN0YXJ0IFB5dGhvbiBpbiB0aGUgY29tbWFuZCBwcm9tcHQuIFRoZQotaW5zdGFsbGVyIGZvciBQeXRob24gMy41IGFuZCBsYXRlciBoYXMgYW4gb3B0aW9uIHRvIHNldCB0aGF0IHVwIGZvciB5b3UuCitpbnN0YWxsZXIgaGFzIGFuIG9wdGlvbiB0byBzZXQgdGhhdCB1cCBmb3IgeW91LgogCi1PbiB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgaW5zdGFsbGVyLCBhbiBvcHRpb24gbGFiZWxsZWQgIkFkZCBQeXRob24gMy41IHRvCi1QQVRIIiBjYW4gYmUgc2VsZWN0ZWQgdG8gaGF2ZSB0aGUgaW5zdGFsbGVyIGFkZCB0aGUgaW5zdGFsbCBsb2NhdGlvbiBpbnRvIHRoZQorT24gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGluc3RhbGxlciwgYW4gb3B0aW9uIGxhYmVsbGVkICJBZGQgUHl0aG9uIHRvIFBBVEgiCittYXkgYmUgc2VsZWN0ZWQgdG8gaGF2ZSB0aGUgaW5zdGFsbGVyIGFkZCB0aGUgaW5zdGFsbCBsb2NhdGlvbiBpbnRvIHRoZQogOmVudnZhcjpgUEFUSGAuICBUaGUgbG9jYXRpb24gb2YgdGhlIDpmaWxlOmBTY3JpcHRzXFxgIGZvbGRlciBpcyBhbHNvIGFkZGVkLgogVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUgOmNvbW1hbmQ6YHB5dGhvbmAgdG8gcnVuIHRoZSBpbnRlcnByZXRlciwgYW5kCiA6Y29tbWFuZDpgcGlwYCBmb3IgdGhlIHBhY2thZ2UgaW5zdGFsbGVyLiBUaHVzLCB5b3UgY2FuIGFsc28gZXhlY3V0ZSB5b3VyCkBAIC0zOTMsNyArNDE4LDcgQEAKIGV4YW1wbGUgdmFyaWFibGUgY291bGQgbG9vayBsaWtlIHRoaXMgKGFzc3VtaW5nIHRoZSBmaXJzdCB0d28gZW50cmllcyBhbHJlYWR5CiBleGlzdGVkKTo6CiAKLSAgICBDOlxXSU5ET1dTXHN5c3RlbTMyO0M6XFdJTkRPV1M7QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy41CisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMjtDOlxXSU5ET1dTO0M6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNgogCiAuLiBfbGF1bmNoZXI6CiAKQEAgLTQxOCw2ICs0NDMsOCBAQAogRnJvbSB0aGUgY29tbWFuZC1saW5lCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKwogU3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9ucyBvZiBQeXRob24gMy4zIGFuZCBsYXRlciB3aWxsIHB1dCB0aGUgbGF1bmNoZXIgb24geW91cgogOmVudnZhcjpgUEFUSGAuIFRoZSBsYXVuY2hlciBpcyBjb21wYXRpYmxlIHdpdGggYWxsIGF2YWlsYWJsZSB2ZXJzaW9ucyBvZgogUHl0aG9uLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hpY2ggdmVyc2lvbiBpcyBpbnN0YWxsZWQuIFRvIGNoZWNrIHRoYXQgdGhlCkBAIC00MjcsMjUgKzQ1NCwyNiBAQAogCiAgIHB5CiAKLVlvdSBzaG91bGQgZmluZCB0aGF0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMi54IHlvdSBoYXZlIGluc3RhbGxlZCBpcworWW91IHNob3VsZCBmaW5kIHRoYXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiB5b3UgaGF2ZSBpbnN0YWxsZWQgaXMKIHN0YXJ0ZWQgLSBpdCBjYW4gYmUgZXhpdGVkIGFzIG5vcm1hbCwgYW5kIGFueSBhZGRpdGlvbmFsIGNvbW1hbmQtbGluZQogYXJndW1lbnRzIHNwZWNpZmllZCB3aWxsIGJlIHNlbnQgZGlyZWN0bHkgdG8gUHl0aG9uLgogCi1JZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gMi54IGluc3RhbGxlZCAoZS5nLiwgMi42IGFuZCAyLjcpIHlvdQotd2lsbCBoYXZlIG5vdGljZWQgdGhhdCBQeXRob24gMi43IHdhcyBzdGFydGVkIC0gdG8gbGF1bmNoIFB5dGhvbiAyLjYsIHRyeSB0aGUKK0lmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiBpbnN0YWxsZWQgKGUuZy4sIDIuNyBhbmQgfHZlcnNpb258KSB5b3UKK3dpbGwgaGF2ZSBub3RpY2VkIHRoYXQgUHl0aG9uIHx2ZXJzaW9ufCB3YXMgc3RhcnRlZCAtIHRvIGxhdW5jaCBQeXRob24gMi43LCB0cnkKK3RoZSBjb21tYW5kOgorCis6OgorCisgIHB5IC0yLjcKKworSWYgeW91IHdhbnQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAyLnggeW91IGhhdmUgaW5zdGFsbGVkLCB0cnkgdGhlCiBjb21tYW5kOgogCiA6OgogCi0gIHB5IC0yLjYKKyAgcHkgLTIKIAotSWYgeW91IGhhdmUgYSBQeXRob24gMy54IGluc3RhbGxlZCwgdHJ5IHRoZSBjb21tYW5kOgotCi06OgotCi0gIHB5IC0zCi0KLVlvdSBzaG91bGQgZmluZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDMueCBzdGFydHMuCitZb3Ugc2hvdWxkIGZpbmQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAyLnggc3RhcnRzLgogCiBJZiB5b3Ugc2VlIHRoZSBmb2xsb3dpbmcgZXJyb3IsIHlvdSBkbyBub3QgaGF2ZSB0aGUgbGF1bmNoZXIgaW5zdGFsbGVkOgogCkBAIC01MDAsNiArNTI4LDExIEBACiBmaXJzdCBsaW5lIHRvIGBgIyEgcHl0aG9uMi42YGAgYW5kIHlvdSBzaG91bGQgZmluZCB0aGUgMi42IHZlcnNpb24KIGluZm9ybWF0aW9uIHByaW50ZWQuCiAKK05vdGUgdGhhdCB1bmxpa2UgaW50ZXJhY3RpdmUgdXNlLCBhIGJhcmUgInB5dGhvbiIgd2lsbCB1c2UgdGhlIGxhdGVzdAordmVyc2lvbiBvZiBQeXRob24gMi54IHRoYXQgeW91IGhhdmUgaW5zdGFsbGVkLiAgVGhpcyBpcyBmb3IgYmFja3dhcmQKK2NvbXBhdGliaWxpdHkgYW5kIGZvciBjb21wYXRpYmlsaXR5IHdpdGggVW5peCwgd2hlcmUgdGhlIGNvbW1hbmQgYGBweXRob25gYAordHlwaWNhbGx5IHJlZmVycyB0byBQeXRob24gMi4KKwogRnJvbSBmaWxlIGFzc29jaWF0aW9ucwogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCkBAIC02NzYsNyArNzA5LDcgQEAKIAogCiAKLS4uIGZpbmRpbmdfbW9kdWxlczoKKy4uIF9maW5kaW5nX21vZHVsZXM6CiAKIEZpbmRpbmcgbW9kdWxlcwogPT09PT09PT09PT09PT09CkBAIC02ODcsNyArNzIwLDI0IEBACiA6ZmlsZTpgQzpcXFB5dGhvblxcTGliXFxgIGFuZCB0aGlyZC1wYXJ0eSBtb2R1bGVzIHNob3VsZCBiZSBzdG9yZWQgaW4KIDpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXHNpdGUtcGFja2FnZXNcXGAuCiAKLVRoaXMgaXMgaG93IDpkYXRhOmBzeXMucGF0aGAgaXMgcG9wdWxhdGVkIG9uIFdpbmRvd3M6CitUbyBjb21wbGV0ZWx5IG92ZXJyaWRlIDpkYXRhOmBzeXMucGF0aGAsIGNyZWF0ZSBhIGBgLl9wdGhgYCBmaWxlIHdpdGggdGhlIHNhbWUKK25hbWUgYXMgdGhlIERMTCAoYGBweXRob24zNi5fcHRoYGApIG9yIHRoZSBleGVjdXRhYmxlIChgYHB5dGhvbi5fcHRoYGApIGFuZAorc3BlY2lmeSBvbmUgbGluZSBmb3IgZWFjaCBwYXRoIHRvIGFkZCB0byA6ZGF0YTpgc3lzLnBhdGhgLiBUaGUgZmlsZSBiYXNlZCBvbiB0aGUKK0RMTCBuYW1lIG92ZXJyaWRlcyB0aGUgb25lIGJhc2VkIG9uIHRoZSBleGVjdXRhYmxlLCB3aGljaCBhbGxvd3MgcGF0aHMgdG8gYmUKK3Jlc3RyaWN0ZWQgZm9yIGFueSBwcm9ncmFtIGxvYWRpbmcgdGhlIHJ1bnRpbWUgaWYgZGVzaXJlZC4KKworV2hlbiB0aGUgZmlsZSBleGlzdHMsIGFsbCByZWdpc3RyeSBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBpZ25vcmVkLAoraXNvbGF0ZWQgbW9kZSBpcyBlbmFibGVkLCBhbmQgOm1vZDpgc2l0ZWAgaXMgbm90IGltcG9ydGVkIHVubGVzcyBvbmUgbGluZSBpbiB0aGUKK2ZpbGUgc3BlY2lmaWVzIGBgaW1wb3J0IHNpdGVgYC4gQmxhbmsgcGF0aHMgYW5kIGxpbmVzIHN0YXJ0aW5nIHdpdGggYGAjYGAgYXJlCitpZ25vcmVkLiBFYWNoIHBhdGggbWF5IGJlIGFic29sdXRlIG9yIHJlbGF0aXZlIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlsZS4KK0ltcG9ydCBzdGF0ZW1lbnRzIG90aGVyIHRoYW4gdG8gYGBzaXRlYGAgYXJlIG5vdCBwZXJtaXR0ZWQsIGFuZCBhcmJpdHJhcnkgY29kZQorY2Fubm90IGJlIHNwZWNpZmllZC4KKworTm90ZSB0aGF0IGBgLnB0aGBgIGZpbGVzICh3aXRob3V0IGxlYWRpbmcgdW5kZXJzY29yZSkgd2lsbCBiZSBwcm9jZXNzZWQgbm9ybWFsbHkKK2J5IHRoZSA6bW9kOmBzaXRlYCBtb2R1bGUuCisKK1doZW4gbm8gYGAuX3B0aGBgIGZpbGUgaXMgZm91bmQsIHRoaXMgaXMgaG93IDpkYXRhOmBzeXMucGF0aGAgaXMgcG9wdWxhdGVkIG9uCitXaW5kb3dzOgogCiAqIEFuIGVtcHR5IGVudHJ5IGlzIGFkZGVkIGF0IHRoZSBzdGFydCwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGN1cnJlbnQKICAgZGlyZWN0b3J5LgpAQCAtNzA2LDEwICs3NTYsMTEgQEAKIAogKiBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgOmVudnZhcjpgUFlUSE9OSE9NRWAgaXMgc2V0LCBpdCBpcyBhc3N1bWVkIGFzCiAgICJQeXRob24gSG9tZSIuICBPdGhlcndpc2UsIHRoZSBwYXRoIG9mIHRoZSBtYWluIFB5dGhvbiBleGVjdXRhYmxlIGlzIHVzZWQgdG8KLSAgbG9jYXRlIGEgImxhbmRtYXJrIGZpbGUiIChgYExpYlxvcy5weWBgKSB0byBkZWR1Y2UgdGhlICJQeXRob24gSG9tZSIuICBJZiBhCi0gIFB5dGhvbiBob21lIGlzIGZvdW5kLCB0aGUgcmVsZXZhbnQgc3ViLWRpcmVjdG9yaWVzIGFkZGVkIHRvIDpkYXRhOmBzeXMucGF0aGAKLSAgKGBgTGliYGAsIGBgcGxhdC13aW5gYCwgZXRjKSBhcmUgYmFzZWQgb24gdGhhdCBmb2xkZXIuICBPdGhlcndpc2UsIHRoZSBjb3JlCi0gIFB5dGhvbiBwYXRoIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIFB5dGhvblBhdGggc3RvcmVkIGluIHRoZSByZWdpc3RyeS4KKyAgbG9jYXRlIGEgImxhbmRtYXJrIGZpbGUiIChlaXRoZXIgYGBMaWJcb3MucHlgYCBvciBgYHB5dGhvblhZLnppcGBgKSB0byBkZWR1Y2UKKyAgdGhlICJQeXRob24gSG9tZSIuICBJZiBhIFB5dGhvbiBob21lIGlzIGZvdW5kLCB0aGUgcmVsZXZhbnQgc3ViLWRpcmVjdG9yaWVzCisgIGFkZGVkIHRvIDpkYXRhOmBzeXMucGF0aGAgKGBgTGliYGAsIGBgcGxhdC13aW5gYCwgZXRjKSBhcmUgYmFzZWQgb24gdGhhdAorICBmb2xkZXIuICBPdGhlcndpc2UsIHRoZSBjb3JlIFB5dGhvbiBwYXRoIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIFB5dGhvblBhdGgKKyAgc3RvcmVkIGluIHRoZSByZWdpc3RyeS4KIAogKiBJZiB0aGUgUHl0aG9uIEhvbWUgY2Fubm90IGJlIGxvY2F0ZWQsIG5vIDplbnZ2YXI6YFBZVEhPTlBBVEhgIGlzIHNwZWNpZmllZCBpbgogICB0aGUgZW52aXJvbm1lbnQsIGFuZCBubyByZWdpc3RyeSBlbnRyaWVzIGNhbiBiZSBmb3VuZCwgYSBkZWZhdWx0IHBhdGggd2l0aApAQCAtNzIyLDEwICs3NzMsNiBAQAogICBwYXRoIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgcGF0aCB0byB0aGUgbWFpbiBleGVjdXRhYmxlIHdoZW4gZGVkdWNpbmcgdGhlCiAgIGhvbWUgbG9jYXRpb24uCiAKLSogSWYgYGBhcHBsb2NhbGBgIGlzIHNldCB0byB0cnVlLCB0aGUgYGBob21lYGAgcHJvcGVydHkgb3IgdGhlIG1haW4gZXhlY3V0YWJsZQotICBpcyBhbHdheXMgdXNlZCBhcyB0aGUgaG9tZSBwYXRoLCBhbmQgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciByZWdpc3RyeQotICB2YWx1ZXMgYWZmZWN0aW5nIHRoZSBwYXRoIGFyZSBpZ25vcmVkLiBUaGUgbGFuZG1hcmsgZmlsZSBpcyBub3QgY2hlY2tlZC4KLQogVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6CiAKICogV2hlbiBydW5uaW5nIDpmaWxlOmBweXRob24uZXhlYCwgb3IgYW55IG90aGVyIC5leGUgaW4gdGhlIG1haW4gUHl0aG9uCkBAIC03NDQsMTMgKzc5MSwxMiBAQAogRm9yIHRob3NlIHdobyB3YW50IHRvIGJ1bmRsZSBQeXRob24gaW50byB0aGVpciBhcHBsaWNhdGlvbiBvciBkaXN0cmlidXRpb24sIHRoZQogZm9sbG93aW5nIGFkdmljZSB3aWxsIHByZXZlbnQgY29uZmxpY3RzIHdpdGggb3RoZXIgaW5zdGFsbGF0aW9uczoKIAotKiBJbmNsdWRlIGEgYGBweXZlbnYuY2ZnYGAgZmlsZSBhbG9uZ3NpZGUgeW91ciBleGVjdXRhYmxlIGNvbnRhaW5pbmcKLSAgYGBhcHBsb2NhbCA9IHRydWVgYC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHlvdXIgb3duIGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQgdG8KLSAgcmVzb2x2ZSBwYXRocyBldmVuIGlmIHlvdSBoYXZlIGluY2x1ZGVkIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluIGEgWklQIGZpbGUuCi0gIEl0IHdpbGwgYWxzbyBpZ25vcmUgdXNlciBzaXRlLXBhY2thZ2VzIGFuZCBvdGhlciBwYXRocyBsaXN0ZWQgaW4gdGhlCi0gIHJlZ2lzdHJ5LgorKiBJbmNsdWRlIGEgYGAuX3B0aGBgIGZpbGUgYWxvbmdzaWRlIHlvdXIgZXhlY3V0YWJsZSBjb250YWluaW5nIHRoZQorICBkaXJlY3RvcmllcyB0byBpbmNsdWRlLiBUaGlzIHdpbGwgaWdub3JlIHBhdGhzIGxpc3RlZCBpbiB0aGUgcmVnaXN0cnkgYW5kCisgIGVudmlyb25tZW50IHZhcmlhYmxlcywgYW5kIGFsc28gaWdub3JlIDptb2Q6YHNpdGVgIHVubGVzcyBgYGltcG9ydCBzaXRlYGAgaXMKKyAgbGlzdGVkLgogCi0qIElmIHlvdSBhcmUgbG9hZGluZyA6ZmlsZTpgcHl0aG9uMy5kbGxgIG9yIDpmaWxlOmBweXRob24zNS5kbGxgIGluIHlvdXIgb3duCisqIElmIHlvdSBhcmUgbG9hZGluZyA6ZmlsZTpgcHl0aG9uMy5kbGxgIG9yIDpmaWxlOmBweXRob24zNi5kbGxgIGluIHlvdXIgb3duCiAgIGV4ZWN1dGFibGUsIGV4cGxpY2l0bHkgY2FsbCA6YzpmdW5jOmBQeV9TZXRQYXRoYCBvciAoYXQgbGVhc3QpCiAgIDpjOmZ1bmM6YFB5X1NldFByb2dyYW1OYW1lYCBiZWZvcmUgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAuCiAKQEAgLTc2MCw3ICs4MDYsOCBAQAogKiBJZiB5b3UgY2Fubm90IHVzZSB0aGUgcHJldmlvdXMgc3VnZ2VzdGlvbnMgKGZvciBleGFtcGxlLCB5b3UgYXJlIGEKICAgZGlzdHJpYnV0aW9uIHRoYXQgYWxsb3dzIHBlb3BsZSB0byBydW4gOmZpbGU6YHB5dGhvbi5leGVgIGRpcmVjdGx5KSwgZW5zdXJlCiAgIHRoYXQgdGhlIGxhbmRtYXJrIGZpbGUgKDpmaWxlOmBMaWJcXG9zLnB5YCkgZXhpc3RzIGluIHlvdXIgaW5zdGFsbCBkaXJlY3RvcnkuCi0gIChOb3RlIHRoYXQgaXQgd2lsbCBub3QgYmUgZGV0ZWN0ZWQgaW5zaWRlIGEgWklQIGZpbGUuKQorICAoTm90ZSB0aGF0IGl0IHdpbGwgbm90IGJlIGRldGVjdGVkIGluc2lkZSBhIFpJUCBmaWxlLCBidXQgYSBjb3JyZWN0bHkgbmFtZWQKKyAgWklQIGZpbGUgd2lsbCBiZSBkZXRlY3RlZCBpbnN0ZWFkLikKIAogVGhlc2Ugd2lsbCBlbnN1cmUgdGhhdCB0aGUgZmlsZXMgaW4gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24gd2lsbCBub3QgdGFrZQogcHJlY2VkZW5jZSBvdmVyIHRoZSBjb3B5IG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGJ1bmRsZWQgd2l0aCB5b3VyIGFwcGxpY2F0aW9uLgpAQCAtNzY4LDYgKzgxNSwxNCBAQAogdGhlIGZpcnN0IHN1Z2dlc3Rpb24gaXMgdGhlIGJlc3QsIGFzIHRoZSBvdGhlciBtYXkgc3RpbGwgYmUgc3VzY2VwdGlibGUgdG8KIG5vbi1zdGFuZGFyZCBwYXRocyBpbiB0aGUgcmVnaXN0cnkgYW5kIHVzZXIgc2l0ZS1wYWNrYWdlcy4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgMy42CisKKyAgICogQWRkcyBgYC5fcHRoYGAgZmlsZSBzdXBwb3J0IGFuZCByZW1vdmVzIGBgYXBwbG9jYWxgYCBvcHRpb24gZnJvbQorICAgICBgYHB5dmVudi5jZmdgYC4KKyAgICogQWRkcyBgYHB5dGhvblhYLnppcGBgIGFzIGEgcG90ZW50aWFsIGxhbmRtYXJrIHdoZW4gZGlyZWN0bHkgYWRqYWNlbnQKKyAgICAgdG8gdGhlIGV4ZWN1dGFibGUuCisKIEFkZGl0aW9uYWwgbW9kdWxlcwogPT09PT09PT09PT09PT09PT09CiAKQEAgLTg2Nyw3ICs5MjIsNyBAQAogV2hlbiBleHRyYWN0ZWQsIHRoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gaXMgKGFsbW9zdCkgZnVsbHkgaXNvbGF0ZWQgZnJvbSB0aGUKIHVzZXIncyBzeXN0ZW0sIGluY2x1ZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHN5c3RlbSByZWdpc3RyeSBzZXR0aW5ncywgYW5kCiBpbnN0YWxsZWQgcGFja2FnZXMuIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGluY2x1ZGVkIGFzIHByZS1jb21waWxlZCBhbmQKLW9wdGltaXplZCBgYC5weWNgYCBmaWxlcyBpbiBhIFpJUCwgYW5kIGBgcHl0aG9uMy5kbGxgYCwgYGBweXRob24zNS5kbGxgYCwKK29wdGltaXplZCBgYC5weWNgYCBmaWxlcyBpbiBhIFpJUCwgYW5kIGBgcHl0aG9uMy5kbGxgYCwgYGBweXRob24zNi5kbGxgYCwKIGBgcHl0aG9uLmV4ZWBgIGFuZCBgYHB5dGhvbncuZXhlYGAgYXJlIGFsbCBwcm92aWRlZC4gVGNsL3RrIChpbmNsdWRpbmcgYWxsCiBkZXBlbmRhbnRzLCBzdWNoIGFzIElkbGUpLCBwaXAgYW5kIHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbiBhcmUgbm90IGluY2x1ZGVkLgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi4xLnJzdCBiL0RvYy93aGF0c25ldy8yLjEucnN0CmluZGV4IDA2MzY2YjguLjZhYWU3MjYgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjEucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjEucnN0CkBAIC0zNjcsNyArMzY3LDcgQEAKIAogVGhpcyB2ZXJzaW9uIHdvcmtzIGZvciBzaW1wbGUgdGhpbmdzIHN1Y2ggYXMgaW50ZWdlcnMsIGJ1dCBpdCBoYXMgYSBzaWRlIGVmZmVjdDsKIHRoZSBgYF9jYWNoZWBgIGRpY3Rpb25hcnkgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIHJldHVybiB2YWx1ZXMsIHNvIHRoZXknbGwKLW5ldmVyIGJlIGRlYWxsb2NhdGVkIHVudGlsIHRoZSBQeXRob24gcHJvY2VzcyBleGl0cyBhbmQgY2xlYW5zIHVwIFRoaXMgaXNuJ3QKK25ldmVyIGJlIGRlYWxsb2NhdGVkIHVudGlsIHRoZSBQeXRob24gcHJvY2VzcyBleGl0cyBhbmQgY2xlYW5zIHVwLiBUaGlzIGlzbid0CiB2ZXJ5IG5vdGljZWFibGUgZm9yIGludGVnZXJzLCBidXQgaWYgOmZ1bmM6YGZgIHJldHVybnMgYW4gb2JqZWN0LCBvciBhIGRhdGEKIHN0cnVjdHVyZSB0aGF0IHRha2VzIHVwIGEgbG90IG9mIG1lbW9yeSwgdGhpcyBjYW4gYmUgYSBwcm9ibGVtLgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy4yLnJzdCBiL0RvYy93aGF0c25ldy8zLjIucnN0CmluZGV4IDlmMzU4NGQuLjNkMjM3ZWEgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjIucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjIucnN0CkBAIC0xMjUzLDkgKzEyNTMsOSBAQAogCiAgICAgQGNvbnRleHRtYW5hZ2VyCiAgICAgZGVmIHRyYWNrX2VudHJ5X2FuZF9leGl0KG5hbWUpOgotICAgICAgICBsb2dnaW5nLmluZm8oJ0VudGVyaW5nOiB7fScuZm9ybWF0KG5hbWUpKQorICAgICAgICBsb2dnaW5nLmluZm8oJ0VudGVyaW5nOiAlcycsIG5hbWUpCiAgICAgICAgIHlpZWxkCi0gICAgICAgIGxvZ2dpbmcuaW5mbygnRXhpdGluZzoge30nLmZvcm1hdChuYW1lKSkKKyAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiAlcycsIG5hbWUpCiAKIEZvcm1lcmx5LCB0aGlzIHdvdWxkIGhhdmUgb25seSBiZWVuIHVzYWJsZSBhcyBhIGNvbnRleHQgbWFuYWdlcjo6CiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjMucnN0IGIvRG9jL3doYXRzbmV3LzMuMy5yc3QKaW5kZXggMWNmYTkyNi4uNDhiOGEzYiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuMy5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuMy5yc3QKQEAgLTEwOCw3ICsxMDgsNyBAQAogd2l0aCB0aGUgaW50ZXJwcmV0ZXIgY29yZS4KIAogVGhpcyBQRVAgYWRkcyB0aGUgOm1vZDpgdmVudmAgbW9kdWxlIGZvciBwcm9ncmFtbWF0aWMgYWNjZXNzLCBhbmQgdGhlCi06cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgc2NyaXB0IGZvciBjb21tYW5kLWxpbmUgYWNjZXNzIGFuZAorYGBweXZlbnZgYCBzY3JpcHQgZm9yIGNvbW1hbmQtbGluZSBhY2Nlc3MgYW5kCiBhZG1pbmlzdHJhdGlvbi4gIFRoZSBQeXRob24gaW50ZXJwcmV0ZXIgY2hlY2tzIGZvciBhIGBgcHl2ZW52LmNmZ2BgLAogZmlsZSB3aG9zZSBleGlzdGVuY2Ugc2lnbmFscyB0aGUgYmFzZSBvZiBhIHZpcnR1YWwgZW52aXJvbm1lbnQncyBkaXJlY3RvcnkKIHRyZWUuCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy40LnJzdCBiL0RvYy93aGF0c25ldy8zLjQucnN0CmluZGV4IDFlNWM5ZDEuLjcyMzk4ZjkgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjQucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjQucnN0CkBAIC0xOTcsNyArMTk3LDcgQEAKIGBgcGlwYGAgY29tbWFuZCB0eXBpY2FsbHkgcmVmZXJzIHRvIHRoZSBzZXBhcmF0ZWx5IGluc3RhbGxlZCBQeXRob24gMgogdmVyc2lvbi4KIAotVGhlIDpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBjb21tYW5kIGxpbmUgdXRpbGl0eSBhbmQgdGhlIDptb2Q6YHZlbnZgCitUaGUgYGBweXZlbnZgYCBjb21tYW5kIGxpbmUgdXRpbGl0eSBhbmQgdGhlIDptb2Q6YHZlbnZgCiBtb2R1bGUgbWFrZSB1c2Ugb2YgdGhlIDptb2Q6YGVuc3VyZXBpcGAgbW9kdWxlIHRvIG1ha2UgYGBwaXBgYCByZWFkaWx5CiBhdmFpbGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMuIFdoZW4gdXNpbmcgdGhlIGNvbW1hbmQgbGluZSB1dGlsaXR5LAogYGBwaXBgYCBpcyBpbnN0YWxsZWQgYnkgZGVmYXVsdCwgd2hpbGUgd2hlbiB1c2luZyB0aGUgOm1vZDpgdmVudmAgbW9kdWxlCkBAIC04MjQsNyArODI0LDcgQEAKIDp0ZXJtOmBwcm92aXNpb25hbCBBUElgLiAgVGhlc2UgY2xhc3NlcyBwcm92aWRlIGEgbnVtYmVyIG9mIG5ldyBtZXRob2RzIHRoYXQKIG1ha2UgZXh0cmFjdGluZyBjb250ZW50IGZyb20gYW5kIGluc2VydGluZyBjb250ZW50IGludG8gZW1haWwgbWVzc2FnZXMgbXVjaAogZWFzaWVyLiAgRm9yIGRldGFpbHMsIHNlZSB0aGUgOm1vZDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyYCBkb2N1bWVudGF0aW9uIGFuZAotdGhlIDpyZWY6YGVtYWlsLWNvbnRlbnRtYW5hZ2VyLWFwaS1leGFtcGxlc2AuICBUaGVzZSBBUEkgYWRkaXRpb25zIGNvbXBsZXRlIHRoZQordGhlIDpyZWY6YGVtYWlsLWV4YW1wbGVzYC4gIFRoZXNlIEFQSSBhZGRpdGlvbnMgY29tcGxldGUgdGhlCiBidWxrIG9mIHRoZSB3b3JrIHRoYXQgd2FzIHBsYW5uZWQgYXMgcGFydCBvZiB0aGUgZW1haWw2IHByb2plY3QuICBUaGUgY3VycmVudGx5CiBwcm92aXNpb25hbCBBUEkgaXMgc2NoZWR1bGVkIHRvIGJlY29tZSBmaW5hbCBpbiBQeXRob24gMy41IChwb3NzaWJseSB3aXRoIGEgZmV3CiBtaW5vciBhZGRpdGlvbnMgaW4gdGhlIGFyZWEgb2YgZXJyb3IgaGFuZGxpbmcpLiAgKENvbnRyaWJ1dGVkIGJ5IFIuIERhdmlkCkBAIC0xOTg5LDExICsxOTg5LDExIEBACiAgIFN0aW5uZXIgdXNpbmcgaGlzIDpwZXA6YDQ0NWAtYmFzZWQgYGBweWZhaWxtYWxsb2NgYCB0b29sICg6aXNzdWU6YDE4NDA4YCwKICAgOmlzc3VlOmAxODUyMGApLgogCi0qIFRoZSA6cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgY29tbWFuZCBub3cgYWNjZXB0cyBhIGBgLS1jb3BpZXNgYCBvcHRpb24KKyogVGhlIGBgcHl2ZW52YGAgY29tbWFuZCBub3cgYWNjZXB0cyBhIGBgLS1jb3BpZXNgYCBvcHRpb24KICAgdG8gdXNlIGNvcGllcyByYXRoZXIgdGhhbiBzeW1saW5rcyBldmVuIG9uIHN5c3RlbXMgd2hlcmUgc3ltbGlua3MgYXJlIHRoZQogICBkZWZhdWx0LiAgKENvbnRyaWJ1dGVkIGJ5IFZpbmF5IFNhamlwIGluIDppc3N1ZTpgMTg4MDdgLikKIAotKiBUaGUgOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIGNvbW1hbmQgYWxzbyBhY2NlcHRzIGEgYGAtLXdpdGhvdXQtcGlwYGAKKyogVGhlIGBgcHl2ZW52YGAgY29tbWFuZCBhbHNvIGFjY2VwdHMgYSBgYC0td2l0aG91dC1waXBgYAogICBvcHRpb24gdG8gc3VwcHJlc3MgdGhlIG90aGVyd2lzZS1hdXRvbWF0aWMgYm9vdHN0cmFwcGluZyBvZiBwaXAgaW50bwogICB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gIChDb250cmlidXRlZCBieSBOaWNrIENvZ2hsYW4gaW4gOmlzc3VlOmAxOTU1MmAKICAgYXMgcGFydCBvZiB0aGUgOnBlcDpgNDUzYCBpbXBsZW1lbnRhdGlvbi4pCkBAIC0yNDU5LDcgKzI0NTksNyBAQAogICBzdHJlYW0gaW4gOm1vZDpgfmlvLlRleHRJT1dyYXBwZXJgIHRvIHVzZSBpdHMgKm5ld2xpbmUqIGFyZ3VtZW50CiAgICg6aXNzdWU6YDE1MjA0YCkuCiAKLSogSWYgeW91IHVzZSA6cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgaW4gYSBzY3JpcHQgYW5kIGRlc2lyZSB0aGF0IHBpcAorKiBJZiB5b3UgdXNlIGBgcHl2ZW52YGAgaW4gYSBzY3JpcHQgYW5kIGRlc2lyZSB0aGF0IHBpcAogICAqbm90KiBiZSBpbnN0YWxsZWQsIHlvdSBtdXN0IGFkZCBgYC0td2l0aG91dC1waXBgYCB0byB5b3VyIGNvbW1hbmQKICAgaW52b2NhdGlvbi4KIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuNS5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy41LnJzdAppbmRleCAyZWY0ZTkxLi4yNDZkOWM1IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy41LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy41LnJzdApAQCAtNDYsNyArNDYsOCBAQAogCiBUaGlzIGFydGljbGUgZXhwbGFpbnMgdGhlIG5ldyBmZWF0dXJlcyBpbiBQeXRob24gMy41LCBjb21wYXJlZCB0byAzLjQuCiBQeXRob24gMy41IHdhcyByZWxlYXNlZCBvbiBTZXB0ZW1iZXIgMTMsIDIwMTUuIMKgU2VlIHRoZQotOnJlZjpgY2hhbmdlbG9nIDxjaGFuZ2Vsb2c+YCBmb3IgYSBmdWxsIGxpc3Qgb2YgY2hhbmdlcy4KK2BjaGFuZ2Vsb2cgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNS93aGF0c25ldy9jaGFuZ2Vsb2cuaHRtbD5gXyBmb3IgYSBmdWxsCitsaXN0IG9mIGNoYW5nZXMuCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMTc1LDggKzIxNzYsNyBAQAogCiAqIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AsCiAqIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AsCi0qIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AsCi0qIDpjOmZ1bmM6YF9QeU9iamVjdF9HQ19DYWxsb2NgLgorKiA6YzpmdW5jOmBQeU9iamVjdF9DYWxsb2NgLgogCiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMTIzM2AuKQogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy42LnJzdCBiL0RvYy93aGF0c25ldy8zLjYucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkODQ4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2Mvd2hhdHNuZXcvMy42LnJzdApAQCAtMCwwICsxLDE0NzYgQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgV2hhdCdzIE5ldyBJbiBQeXRob24gMy42CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKzpSZWxlYXNlOiB8cmVsZWFzZXwKKzpEYXRlOiB8dG9kYXl8CisKKy4uIFJ1bGVzIGZvciBtYWludGVuYW5jZToKKworICAgKiBBbnlvbmUgY2FuIGFkZCB0ZXh0IHRvIHRoaXMgZG9jdW1lbnQuICBEbyBub3Qgc3BlbmQgdmVyeSBtdWNoIHRpbWUKKyAgIG9uIHRoZSB3b3JkaW5nIG9mIHlvdXIgY2hhbmdlcywgYmVjYXVzZSB5b3VyIHRleHQgd2lsbCBwcm9iYWJseQorICAgZ2V0IHJld3JpdHRlbiB0byBzb21lIGRlZ3JlZS4KKworICAgKiBUaGUgbWFpbnRhaW5lciB3aWxsIGdvIHRocm91Z2ggTWlzYy9ORVdTIHBlcmlvZGljYWxseSBhbmQgYWRkCisgICBjaGFuZ2VzOyBpdCdzIHRoZXJlZm9yZSBtb3JlIGltcG9ydGFudCB0byBhZGQgeW91ciBjaGFuZ2VzIHRvCisgICBNaXNjL05FV1MgdGhhbiB0byB0aGlzIGZpbGUuCisKKyAgICogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSBsaXN0IG9mIGV2ZXJ5IHNpbmdsZSBjaGFuZ2U7IGNvbXBsZXRlbmVzcworICAgaXMgdGhlIHB1cnBvc2Ugb2YgTWlzYy9ORVdTLiAgU29tZSBjaGFuZ2VzIEkgY29uc2lkZXIgdG9vIHNtYWxsCisgICBvciBlc290ZXJpYyB0byBpbmNsdWRlLiAgSWYgc3VjaCBhIGNoYW5nZSBpcyBhZGRlZCB0byB0aGUgdGV4dCwKKyAgIEknbGwganVzdCByZW1vdmUgaXQuICAoVGhpcyBpcyBhbm90aGVyIHJlYXNvbiB5b3Ugc2hvdWxkbid0IHNwZW5kCisgICB0b28gbXVjaCB0aW1lIG9uIHdyaXRpbmcgeW91ciBhZGRpdGlvbi4pCisKKyAgICogSWYgeW91IHdhbnQgdG8gZHJhdyB5b3VyIG5ldyB0ZXh0IHRvIHRoZSBhdHRlbnRpb24gb2YgdGhlCisgICBtYWludGFpbmVyLCBhZGQgJ1hYWCcgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWdyYXBoIG9yCisgICBzZWN0aW9uLgorCisgICAqIEl0J3MgT0sgdG8ganVzdCBhZGQgYSBmcmFnbWVudGFyeSBub3RlIGFib3V0IGEgY2hhbmdlLiAgRm9yCisgICBleGFtcGxlOiAiWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUKKyAgIHNvY2tldCBtb2R1bGUuIiAgVGhlIG1haW50YWluZXIgd2lsbCByZXNlYXJjaCB0aGUgY2hhbmdlIGFuZAorICAgd3JpdGUgdGhlIG5lY2Vzc2FyeSB0ZXh0LgorCisgICAqIFlvdSBjYW4gY29tbWVudCBvdXQgeW91ciBhZGRpdGlvbnMgaWYgeW91IGxpa2UsIGJ1dCBpdCdzIG5vdAorICAgbmVjZXNzYXJ5IChlc3BlY2lhbGx5IHdoZW4gYSBmaW5hbCByZWxlYXNlIGlzIHNvbWUgbW9udGhzIGF3YXkpLgorCisgICAqIENyZWRpdCB0aGUgYXV0aG9yIG9mIGEgcGF0Y2ggb3IgYnVnZml4LiAgIEp1c3QgdGhlIG5hbWUgaXMKKyAgIHN1ZmZpY2llbnQ7IHRoZSBlLW1haWwgYWRkcmVzcyBpc24ndCBuZWNlc3NhcnkuCisKKyAgICogSXQncyBoZWxwZnVsIHRvIGFkZCB0aGUgYnVnL3BhdGNoIG51bWJlciBhcyBhIGNvbW1lbnQ6CisKKyAgIFhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlIHNvY2tldAorICAgbW9kdWxlLgorICAgKENvbnRyaWJ1dGVkIGJ5IFAuWS4gRGV2ZWxvcGVyIGluIDppc3N1ZTpgMTIzNDVgLikKKworICAgVGhpcyBzYXZlcyB0aGUgbWFpbnRhaW5lciB0aGUgZWZmb3J0IG9mIGdvaW5nIHRocm91Z2ggdGhlIE1lcmN1cmlhbCBsb2cKKyAgIHdoZW4gcmVzZWFyY2hpbmcgYSBjaGFuZ2UuCisKK1RoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjYsIGNvbXBhcmVkIHRvIDMuNS4KKworRm9yIGZ1bGwgZGV0YWlscywgc2VlIHRoZSA6cmVmOmBjaGFuZ2Vsb2cgPGNoYW5nZWxvZz5gLgorCisuLiBub3RlOjoKKworICAgUHJlcmVsZWFzZSB1c2VycyBzaG91bGQgYmUgYXdhcmUgdGhhdCB0aGlzIGRvY3VtZW50IGlzIGN1cnJlbnRseSBpbiBkcmFmdAorICAgZm9ybS4gSXQgd2lsbCBiZSB1cGRhdGVkIHN1YnN0YW50aWFsbHkgYXMgUHl0aG9uIDMuNiBtb3ZlcyB0b3dhcmRzIHJlbGVhc2UsCisgICBzbyBpdCdzIHdvcnRoIGNoZWNraW5nIGJhY2sgZXZlbiBhZnRlciByZWFkaW5nIGVhcmxpZXIgdmVyc2lvbnMuCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIFRoaXMgc2VjdGlvbiBzaW5nbGVzIG91dCB0aGUgbW9zdCBpbXBvcnRhbnQgY2hhbmdlcyBpbiBQeXRob24gMy42LgorICAgQnJldml0eSBpcyBrZXkuCisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogQSBgYGdsb2JhbGBgIG9yIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQgbXVzdCBub3cgdGV4dHVhbGx5IGFwcGVhcgorICBiZWZvcmUgdGhlIGZpcnN0IHVzZSBvZiB0aGUgYWZmZWN0ZWQgbmFtZSBpbiB0aGUgc2FtZSBzY29wZS4KKyAgUHJldmlvdXNseSB0aGlzIHdhcyBhIFN5bnRheFdhcm5pbmcuCisKKyogUEVQIDQ5ODogOnJlZjpgRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8d2hhdHNuZXctZnN0cmluZ3M+YAorCisqIFBFUCA1MTU6IFVuZGVyc2NvcmVzIGluIE51bWVyaWMgTGl0ZXJhbHMKKworKiBQRVAgNTI2OiA6cmVmOmBTeW50YXggZm9yIFZhcmlhYmxlIEFubm90YXRpb25zIDx2YXJpYWJsZS1hbm5vdGF0aW9ucz5gCisKKyogUEVQIDUyNTogQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMKKworKiBQRVAgNTMwOiBBc3luY2hyb25vdXMgQ29tcHJlaGVuc2lvbnMKKworU3RhbmRhcmQgbGlicmFyeSBpbXByb3ZlbWVudHM6CisKK1NlY3VyaXR5IGltcHJvdmVtZW50czoKKworKiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBibG9ja3MgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbAorICBpcyBpbml0aWFsaXplZCB0byBpbmNyZWFzZSB0aGUgc2VjdXJpdHkuIFNlZSB0aGUgOnBlcDpgNTI0YCBmb3IgdGhlCisgIHJhdGlvbmFsZS4KKworKiA6bW9kOmBoYXNobGliYCBhbmQgOm1vZDpgc3NsYCBub3cgc3VwcG9ydCBPcGVuU1NMIDEuMS4wLgorCisqIFRoZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBmZWF0dXJlIHNldCBvZiB0aGUgOm1vZDpgc3NsYCBoYXZlIGJlZW4gaW1wcm92ZWQuCisKKyogVGhlIDptb2Q6YGhhc2hsaWJgIG1vZHVsZSBoYXMgZ290IHN1cHBvcnQgZm9yIEJMQUtFMiwgU0hBLTMgYW5kIFNIQUtFIGhhc2gKKyAgYWxnb3JpdGhtcyBhbmQgOmZ1bmM6YH5oYXNobGliLnNjcnlwdGAga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uCisKK1dpbmRvd3MgaW1wcm92ZW1lbnRzOgorCisqIFBFUCA1Mjk6IDpyZWY6YENoYW5nZSBXaW5kb3dzIGZpbGVzeXN0ZW0gZW5jb2RpbmcgdG8gVVRGLTggPHBlcC01Mjk+YAorCisqIFBFUCA1Mjg6IDpyZWY6YENoYW5nZSBXaW5kb3dzIGNvbnNvbGUgZW5jb2RpbmcgdG8gVVRGLTggPHBlcC01Mjg+YAorCisqIFRoZSBgYHB5LmV4ZWBgIGxhdW5jaGVyLCB3aGVuIHVzZWQgaW50ZXJhY3RpdmVseSwgbm8gbG9uZ2VyIHByZWZlcnMKKyAgUHl0aG9uIDIgb3ZlciBQeXRob24gMyB3aGVuIHRoZSB1c2VyIGRvZXNuJ3Qgc3BlY2lmeSBhIHZlcnNpb24gKHZpYQorICBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9yIGEgY29uZmlnIGZpbGUpLiAgSGFuZGxpbmcgb2Ygc2hlYmFuZyBsaW5lcworICByZW1haW5zIHVuY2hhbmdlZCAtICJweXRob24iIHJlZmVycyB0byBQeXRob24gMiBpbiB0aGF0IGNhc2UuCisKKyogYGBweXRob24uZXhlYGAgYW5kIGBgcHl0aG9udy5leGVgYCBoYXZlIGJlZW4gbWFya2VkIGFzIGxvbmctcGF0aCBhd2FyZSwKKyAgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSAyNjAgY2hhcmFjdGVyIHBhdGggbGltaXQgbWF5IG5vIGxvbmdlciBhcHBseS4KKyAgU2VlIDpyZWY6YHJlbW92aW5nIHRoZSBNQVhfUEFUSCBsaW1pdGF0aW9uIDxtYXgtcGF0aD5gIGZvciBkZXRhaWxzLgorCisqIEEgYGAuX3B0aGBgIGZpbGUgY2FuIGJlIGFkZGVkIHRvIGZvcmNlIGlzb2xhdGVkIG1vZGUgYW5kIGZ1bGx5IHNwZWNpZnkKKyAgYWxsIHNlYXJjaCBwYXRocyB0byBhdm9pZCByZWdpc3RyeSBhbmQgZW52aXJvbm1lbnQgbG9va3VwLiBTZWUKKyAgOnJlZjpgdGhlIGRvY3VtZW50YXRpb24gPGZpbmRpbmdfbW9kdWxlcz5gIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisqIEEgYGBweXRob24zNi56aXBgYCBmaWxlIG5vdyB3b3JrcyBhcyBhIGxhbmRtYXJrIHRvIGluZmVyCisgIDplbnZ2YXI6YFBZVEhPTkhPTUVgLiBTZWUgOnJlZjpgdGhlIGRvY3VtZW50YXRpb24gPGZpbmRpbmdfbW9kdWxlcz5gIGZvcgorICBtb3JlIGluZm9ybWF0aW9uLgorCisuLiBQRVAtc2l6ZWQgaXRlbXMgbmV4dC4KKworLi4gX3BlcC00WFg6CisKKy4uIFBFUCA0WFg6IFZpcnR1YWwgRW52aXJvbm1lbnRzCisuLiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKy4uIChJbXBsZW1lbnRlZCBieSBGb28gQmFyLikKKworLi4gLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0WFhgIC0gUHl0aG9uIFZpcnR1YWwgRW52aXJvbm1lbnRzCisgICAgICAgUEVQIHdyaXR0ZW4gYnkgQ2FybCBNZXllcgorCitOZXcgYnVpbHQtaW4gZmVhdHVyZXM6CisKKyogUEVQIDUyMDogOnJlZjpgUHJlc2VydmluZyBDbGFzcyBBdHRyaWJ1dGUgRGVmaW5pdGlvbiBPcmRlcjx3aGF0c25ldy1kZWZvcmRlcj5gCisKKyogUEVQIDQ2ODogOnJlZjpgUHJlc2VydmluZyBLZXl3b3JkIEFyZ3VtZW50IE9yZGVyPHdoYXRzbmV3LWt3YXJncz5gCisKK0EgY29tcGxldGUgbGlzdCBvZiBQRVAncyBpbXBsZW1lbnRlZCBpbiBQeXRob24gMy42OgorCisqIDpwZXA6YDQ2OGAsIDpyZWY6YFByZXNlcnZpbmcgS2V5d29yZCBBcmd1bWVudCBPcmRlcjx3aGF0c25ldy1rd2FyZ3M+YAorKiA6cGVwOmA0ODdgLCA6cmVmOmBTaW1wbGVyIGN1c3RvbWl6YXRpb24gb2YgY2xhc3MgY3JlYXRpb248d2hhdHNuZXctcGVwNDg3PmAKKyogOnBlcDpgNDk1YCwgTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbgorKiA6cGVwOmA0OThgLCA6cmVmOmBGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDx3aGF0c25ldy1mc3RyaW5ncz5gCisqIDpwZXA6YDUwNmAsIEFkZGluZyBBIFNlY3JldHMgTW9kdWxlIFRvIFRoZSBTdGFuZGFyZCBMaWJyYXJ5CisqIDpwZXA6YDUwOWAsIDpyZWY6YEFkZCBhIHByaXZhdGUgdmVyc2lvbiB0byBkaWN0PHdoYXRzbmV3LXBlcDUwOT5gCisqIDpwZXA6YDUxNWAsIDpyZWY6YFVuZGVyc2NvcmVzIGluIE51bWVyaWMgTGl0ZXJhbHM8cGVwLTUxNT5gCisqIDpwZXA6YDUxOWAsIDpyZWY6YEFkZGluZyBhIGZpbGUgc3lzdGVtIHBhdGggcHJvdG9jb2w8cGVwLTUxOT5gCisqIDpwZXA6YDUyMGAsIDpyZWY6YFByZXNlcnZpbmcgQ2xhc3MgQXR0cmlidXRlIERlZmluaXRpb24gT3JkZXI8d2hhdHNuZXctZGVmb3JkZXI+YAorKiA6cGVwOmA1MjNgLCA6cmVmOmBBZGRpbmcgYSBmcmFtZSBldmFsdWF0aW9uIEFQSSB0byBDUHl0aG9uPHBlcC01MjM+YAorKiA6cGVwOmA1MjRgLCBNYWtlIG9zLnVyYW5kb20oKSBibG9ja2luZyBvbiBMaW51eCAoZHVyaW5nIHN5c3RlbSBzdGFydHVwKQorKiA6cGVwOmA1MjVgLCBBc3luY2hyb25vdXMgR2VuZXJhdG9ycyAocHJvdmlzaW9uYWwpCisqIDpwZXA6YDUyNmAsIDpyZWY6YFN5bnRheCBmb3IgVmFyaWFibGUgQW5ub3RhdGlvbnMgKHByb3Zpc2lvbmFsKTx2YXJpYWJsZS1hbm5vdGF0aW9ucz5gCisqIDpwZXA6YDUyOGAsIDpyZWY6YENoYW5nZSBXaW5kb3dzIGNvbnNvbGUgZW5jb2RpbmcgdG8gVVRGLTggKHByb3Zpc2lvbmFsKTxwZXAtNTI4PmAKKyogOnBlcDpgNTI5YCwgOnJlZjpgQ2hhbmdlIFdpbmRvd3MgZmlsZXN5c3RlbSBlbmNvZGluZyB0byBVVEYtOCAocHJvdmlzaW9uYWwpPHBlcC01Mjk+YAorKiA6cGVwOmA1MzBgLCBBc3luY2hyb25vdXMgQ29tcHJlaGVuc2lvbnMKKworCitOZXcgRmVhdHVyZXMKKz09PT09PT09PT09PQorCisuLiBfcGVwLTUxNToKKworUEVQIDUxNTogVW5kZXJzY29yZXMgaW4gTnVtZXJpYyBMaXRlcmFscworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQcmlvciB0byBQRVAgNTE1LCB0aGVyZSB3YXMgbm8gc3VwcG9ydCBmb3Igd3JpdGluZyBsb25nIG51bWVyaWMKK2xpdGVyYWxzIHdpdGggc29tZSBmb3JtIG9mIHNlcGFyYXRvciB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LiBGb3IKK2luc3RhbmNlLCBob3cgYmlnIGlzIGBgMTAwMDAwMDAwMDAwMDAwMGBgPyBXaXRoIDpwZXA6YDUxNWAsIHRob3VnaCwKK3lvdSBjYW4gdXNlIHVuZGVyc2NvcmVzIHRvIHNlcGFyYXRlIGRpZ2l0cyBhcyBkZXNpcmVkIHRvIG1ha2UgbnVtZXJpYworbGl0ZXJhbHMgZWFzaWVyIHRvIHJlYWQ6IGBgMV8wMDBfMDAwXzAwMF8wMDBfMDAwYGAuIFVuZGVyc2NvcmVzIGNhbiBiZQordXNlZCB3aXRoIG90aGVyIG51bWVyaWMgbGl0ZXJhbHMgYmV5b25kIGludGVnZXJzLCBlLmcuCitgYDB4X0ZGX0ZGX0ZGX0ZGYGAuCisKK1NpbmdsZSB1bmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBiZXR3ZWVuIGRpZ2l0cyBhbmQgYWZ0ZXIgYW55IGJhc2UKK3NwZWNpZmllci4gTW9yZSB0aGFuIGEgc2luZ2xlIHVuZGVyc2NvcmUgaW4gYSByb3csIGxlYWRpbmcsIG9yCit0cmFpbGluZyB1bmRlcnNjb3JlcyBhcmUgbm90IGFsbG93ZWQuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MTVgIC0tIFVuZGVyc2NvcmVzIGluIE51bWVyaWMgTGl0ZXJhbHMKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEdlb3JnIEJyYW5kbCBhbmQgU2VyaGl5IFN0b3JjaGFrYS4KKworCisuLiBfcGVwLTUyMzoKKworUEVQIDUyMzogQWRkaW5nIGEgZnJhbWUgZXZhbHVhdGlvbiBBUEkgdG8gQ1B5dGhvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGlsZSBQeXRob24gcHJvdmlkZXMgZXh0ZW5zaXZlIHN1cHBvcnQgdG8gY3VzdG9taXplIGhvdyBjb2RlCitleGVjdXRlcywgb25lIHBsYWNlIGl0IGhhcyBub3QgZG9uZSBzbyBpcyBpbiB0aGUgZXZhbHVhdGlvbiBvZiBmcmFtZQorb2JqZWN0cy4gSWYgeW91IHdhbnRlZCBzb21lIHdheSB0byBpbnRlcmNlcHQgZnJhbWUgZXZhbHVhdGlvbiBpbgorUHl0aG9uIHRoZXJlIHJlYWxseSB3YXNuJ3QgYW55IHdheSB3aXRob3V0IGRpcmVjdGx5IG1hbmlwdWxhdGluZworZnVuY3Rpb24gcG9pbnRlcnMgZm9yIGRlZmluZWQgZnVuY3Rpb25zLgorCis6cGVwOmA1MjNgIGNoYW5nZXMgdGhpcyBieSBwcm92aWRpbmcgYW4gQVBJIHRvIG1ha2UgZnJhbWUKK2V2YWx1YXRpb24gcGx1Z2dhYmxlIGF0IHRoZSBDIGxldmVsLiBUaGlzIHdpbGwgYWxsb3cgZm9yIHRvb2xzIHN1Y2gKK2FzIGRlYnVnZ2VycyBhbmQgSklUcyB0byBpbnRlcmNlcHQgZnJhbWUgZXZhbHVhdGlvbiBiZWZvcmUgdGhlCitleGVjdXRpb24gb2YgUHl0aG9uIGNvZGUgYmVnaW5zLiBUaGlzIGVuYWJsZXMgdGhlIHVzZSBvZiBhbHRlcm5hdGl2ZQorZXZhbHVhdGlvbiBpbXBsZW1lbnRhdGlvbnMgZm9yIFB5dGhvbiBjb2RlLCB0cmFja2luZyBmcmFtZQorZXZhbHVhdGlvbiwgZXRjLgorCitUaGlzIEFQSSBpcyBub3QgcGFydCBvZiB0aGUgbGltaXRlZCBDIEFQSSBhbmQgaXMgbWFya2VkIGFzIHByaXZhdGUgdG8KK3NpZ25hbCB0aGF0IHVzYWdlIG9mIHRoaXMgQVBJIGlzIGV4cGVjdGVkIHRvIGJlIGxpbWl0ZWQgYW5kIG9ubHkKK2FwcGxpY2FibGUgdG8gdmVyeSBzZWxlY3QsIGxvdy1sZXZlbCB1c2UtY2FzZXMuIFNlbWFudGljcyBvZiB0aGUKK0FQSSB3aWxsIGNoYW5nZSB3aXRoIFB5dGhvbiBhcyBuZWNlc3NhcnkuCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNTIzYCAtLSBBZGRpbmcgYSBmcmFtZSBldmFsdWF0aW9uIEFQSSB0byBDUHl0aG9uCisgICAgICAgUEVQIHdyaXR0ZW4gYnkgQnJldHQgQ2Fubm9uIGFuZCBEaW5vIFZpZWhsYW5kLgorCisKKy4uIF9wZXAtNTE5OgorCitQRVAgNTE5OiBBZGRpbmcgYSBmaWxlIHN5c3RlbSBwYXRoIHByb3RvY29sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpbGUgc3lzdGVtIHBhdGhzIGhhdmUgaGlzdG9yaWNhbGx5IGJlZW4gcmVwcmVzZW50ZWQgYXMgOmNsYXNzOmBzdHJgCitvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzLiBUaGlzIGhhcyBsZWQgdG8gcGVvcGxlIHdobyB3cml0ZSBjb2RlIHdoaWNoCitvcGVyYXRlIG9uIGZpbGUgc3lzdGVtIHBhdGhzIHRvIGFzc3VtZSB0aGF0IHN1Y2ggb2JqZWN0cyBhcmUgb25seSBvbmUKK29mIHRob3NlIHR3byB0eXBlcyAoYW4gOmNsYXNzOmBpbnRgIHJlcHJlc2VudGluZyBhIGZpbGUgZGVzY3JpcHRvcgorZG9lcyBub3QgY291bnQgYXMgdGhhdCBpcyBub3QgYSBmaWxlIHBhdGgpLiBVbmZvcnR1bmF0ZWx5IHRoYXQKK2Fzc3VtcHRpb24gcHJldmVudHMgYWx0ZXJuYXRpdmUgb2JqZWN0IHJlcHJlc2VudGF0aW9ucyBvZiBmaWxlIHN5c3RlbQorcGF0aHMgbGlrZSA6bW9kOmBwYXRobGliYCBmcm9tIHdvcmtpbmcgd2l0aCBwcmUtZXhpc3RpbmcgY29kZSwKK2luY2x1ZGluZyBQeXRob24ncyBzdGFuZGFyZCBsaWJyYXJ5LgorCitUbyBmaXggdGhpcyBzaXR1YXRpb24sIGEgbmV3IGludGVyZmFjZSByZXByZXNlbnRlZCBieQorOmNsYXNzOmBvcy5QYXRoTGlrZWAgaGFzIGJlZW4gZGVmaW5lZC4gQnkgaW1wbGVtZW50aW5nIHRoZQorOm1ldGg6YH5vcy5QYXRoTGlrZS5fX2ZzcGF0aF9fYCBtZXRob2QsIGFuIG9iamVjdCBzaWduYWxzIHRoYXQgaXQKK3JlcHJlc2VudHMgYSBwYXRoLiBBbiBvYmplY3QgY2FuIHRoZW4gcHJvdmlkZSBhIGxvdy1sZXZlbAorcmVwcmVzZW50YXRpb24gb2YgYSBmaWxlIHN5c3RlbSBwYXRoIGFzIGEgOmNsYXNzOmBzdHJgIG9yCis6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuIFRoaXMgbWVhbnMgYW4gb2JqZWN0IGlzIGNvbnNpZGVyZWQKKzp0ZXJtOmBwYXRoLWxpa2UgPHBhdGgtbGlrZSBvYmplY3Q+YCBpZiBpdCBpbXBsZW1lbnRzCis6Y2xhc3M6YG9zLlBhdGhMaWtlYCBvciBpcyBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QKK3doaWNoIHJlcHJlc2VudHMgYSBmaWxlIHN5c3RlbSBwYXRoLiBDb2RlIGNhbiB1c2UgOmZ1bmM6YG9zLmZzcGF0aGAsCis6ZnVuYzpgb3MuZnNkZWNvZGVgLCBvciA6ZnVuYzpgb3MuZnNlbmNvZGVgIHRvIGV4cGxpY2l0bHkgZ2V0IGEKKzpjbGFzczpgc3RyYCBhbmQvb3IgOmNsYXNzOmBieXRlc2AgcmVwcmVzZW50YXRpb24gb2YgYSBwYXRoLWxpa2UKK29iamVjdC4KKworVGhlIGJ1aWx0LWluIDpmdW5jOmBvcGVuYCBmdW5jdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIGFjY2VwdAorOmNsYXNzOmBvcy5QYXRoTGlrZWAgb2JqZWN0cyBhcyBoYXZlIGFsbCByZWxldmFudCBmdW5jdGlvbnMgaW4gdGhlCis6bW9kOmBvc2AgYW5kIDptb2Q6YG9zLnBhdGhgIG1vZHVsZXMuIDpjOmZ1bmM6YFB5VW5pY29kZV9GU0NvbnZlcnRlcmAKK2FuZCA6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgIGhhdmUgYmVlbiBjaGFuZ2VkIHRvIGFjY2VwdAorcGF0aC1saWtlIG9iamVjdHMuIFRoZSA6Y2xhc3M6YG9zLkRpckVudHJ5YCBjbGFzcworYW5kIHJlbGV2YW50IGNsYXNzZXMgaW4gOm1vZDpgcGF0aGxpYmAgaGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0bworaW1wbGVtZW50IDpjbGFzczpgb3MuUGF0aExpa2VgLgorCitUaGUgaG9wZSBpbiBpcyB0aGF0IHVwZGF0aW5nIHRoZSBmdW5kYW1lbnRhbCBmdW5jdGlvbnMgZm9yIG9wZXJhdGluZworb24gZmlsZSBzeXN0ZW0gcGF0aHMgd2lsbCBsZWFkIHRvIHRoaXJkLXBhcnR5IGNvZGUgdG8gaW1wbGljaXRseQorc3VwcG9ydCBhbGwgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAgd2l0aG91dCBhbnkKK2NvZGUgY2hhbmdlcyBvciBhdCBsZWFzdCB2ZXJ5IG1pbmltYWwgb25lcyAoZS5nLiBjYWxsaW5nCis6ZnVuYzpgb3MuZnNwYXRoYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGNvZGUgYmVmb3JlIG9wZXJhdGluZyBvbiBhCitwYXRoLWxpa2Ugb2JqZWN0KS4KKworSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiBob3cgdGhlIG5ldyBpbnRlcmZhY2UgYWxsb3dzIGZvcgorOmNsYXNzOmBwYXRobGliLlBhdGhgIHRvIGJlIHVzZWQgbW9yZSBlYXNpbHkgYW5kIHRyYW5zcGFyZW50bHkgd2l0aAorcHJlLWV4aXN0aW5nIGNvZGU6OgorCisgID4+PiBpbXBvcnQgcGF0aGxpYgorICA+Pj4gd2l0aCBvcGVuKHBhdGhsaWIuUGF0aCgiUkVBRE1FIikpIGFzIGY6CisgIC4uLiAgICAgY29udGVudHMgPSBmLnJlYWQoKQorICAuLi4KKyAgPj4+IGltcG9ydCBvcy5wYXRoCisgID4+PiBvcy5wYXRoLnNwbGl0ZXh0KHBhdGhsaWIuUGF0aCgic29tZV9maWxlLnR4dCIpKQorICAoJ3NvbWVfZmlsZScsICcudHh0JykKKyAgPj4+IG9zLnBhdGguam9pbigiL2EvYiIsIHBhdGhsaWIuUGF0aCgiYyIpKQorICAnL2EvYi9jJworICA+Pj4gaW1wb3J0IG9zCisgID4+PiBvcy5mc3BhdGgocGF0aGxpYi5QYXRoKCJzb21lX2ZpbGUudHh0IikpCisgICdzb21lX2ZpbGUudHh0JworCisoSW1wbGVtZW50ZWQgYnkgQnJldHQgQ2Fubm9uLCBFdGhhbiBGdXJtYW4sIER1c3R5IFBoaWxsaXBzLCBhbmQgSmVsbGUgWmlqbHN0cmEuKQorCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDUxOWAgLS0gQWRkaW5nIGEgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbAorICAgICAgIFBFUCB3cml0dGVuIGJ5IEJyZXR0IENhbm5vbiBhbmQgS29vcyBaZXZlbmhvdmVuLgorCisKKy4uIF93aGF0c25ldy1mc3RyaW5nczoKKworUEVQIDQ5ODogRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIGFyZSBhIG5ldyBraW5kIG9mIHN0cmluZyBsaXRlcmFsLCBwcmVmaXhlZAord2l0aCBgYCdmJ2BgLiAgVGhleSBhcmUgc2ltaWxhciB0byB0aGUgZm9ybWF0IHN0cmluZ3MgYWNjZXB0ZWQgYnkKKzptZXRoOmBzdHIuZm9ybWF0YC4gIFRoZXkgY29udGFpbiByZXBsYWNlbWVudCBmaWVsZHMgc3Vycm91bmRlZCBieQorY3VybHkgYnJhY2VzLiAgVGhlIHJlcGxhY2VtZW50IGZpZWxkcyBhcmUgZXhwcmVzc2lvbnMsIHdoaWNoIGFyZQorZXZhbHVhdGVkIGF0IHJ1biB0aW1lLCBhbmQgdGhlbiBmb3JtYXR0ZWQgdXNpbmcgdGhlIDpmdW5jOmBmb3JtYXRgIHByb3RvY29sOjoKKworICAgID4+PiBuYW1lID0gIkZyZWQiCisgICAgPj4+IGYiSGUgc2FpZCBoaXMgbmFtZSBpcyB7bmFtZX0uIgorICAgICdIZSBzYWlkIGhpcyBuYW1lIGlzIEZyZWQuJworCitTZWUgOnBlcDpgNDk4YCBhbmQgdGhlIG1haW4gZG9jdW1lbnRhdGlvbiBhdCA6cmVmOmBmLXN0cmluZ3NgLgorCisKKy4uIF92YXJpYWJsZS1hbm5vdGF0aW9uczoKKworUEVQIDUyNjogU3ludGF4IGZvciB2YXJpYWJsZSBhbm5vdGF0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis6cGVwOmA0ODRgIGludHJvZHVjZWQgc3RhbmRhcmQgZm9yIHR5cGUgYW5ub3RhdGlvbnMgb2YgZnVuY3Rpb24gcGFyYW1ldGVycywKK2Euay5hLiB0eXBlIGhpbnRzLiBUaGlzIFBFUCBhZGRzIHN5bnRheCB0byBQeXRob24gZm9yIGFubm90YXRpbmcgdGhlCit0eXBlcyBvZiB2YXJpYWJsZXMgaW5jbHVkaW5nIGNsYXNzIHZhcmlhYmxlcyBhbmQgaW5zdGFuY2UgdmFyaWFibGVzOjoKKworICAgIHByaW1lczogTGlzdFtpbnRdID0gW10KKworICAgIGNhcHRhaW46IHN0ciAgIyBOb3RlOiBubyBpbml0aWFsIHZhbHVlIQorCisgICAgY2xhc3MgU3RhcnNoaXA6CisgICAgICAgIHN0YXRzOiBEaWN0W3N0ciwgaW50XSA9IHt9CisKK0p1c3QgYXMgZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLCB0aGUgUHl0aG9uIGludGVycHJldGVyIGRvZXMgbm90IGF0dGFjaCBhbnkKK3BhcnRpY3VsYXIgbWVhbmluZyB0byB2YXJpYWJsZSBhbm5vdGF0aW9ucyBhbmQgb25seSBzdG9yZXMgdGhlbSBpbiBhIHNwZWNpYWwKK2F0dHJpYnV0ZSBgYF9fYW5ub3RhdGlvbnNfX2BgIG9mIGEgY2xhc3Mgb3IgbW9kdWxlLgorSW4gY29udHJhc3QgdG8gdmFyaWFibGUgZGVjbGFyYXRpb25zIGluIHN0YXRpY2FsbHkgdHlwZWQgbGFuZ3VhZ2VzLAordGhlIGdvYWwgb2YgYW5ub3RhdGlvbiBzeW50YXggaXMgdG8gcHJvdmlkZSBhbiBlYXN5IHdheSB0byBzcGVjaWZ5IHN0cnVjdHVyZWQKK3R5cGUgbWV0YWRhdGEgZm9yIHRoaXJkIHBhcnR5IHRvb2xzIGFuZCBsaWJyYXJpZXMgdmlhIHRoZSBhYnN0cmFjdCBzeW50YXggdHJlZQorYW5kIHRoZSBgYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUyNmAgLS0gU3ludGF4IGZvciB2YXJpYWJsZSBhbm5vdGF0aW9ucy4KKyAgICAgIFBFUCB3cml0dGVuIGJ5IFJ5YW4gR29uemFsZXosIFBoaWxpcCBIb3VzZSwgSXZhbiBMZXZraXZza3lpLCBMaXNhIFJvYWNoLAorICAgICAgYW5kIEd1aWRvIHZhbiBSb3NzdW0uIEltcGxlbWVudGVkIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworICAgVG9vbHMgdGhhdCB1c2Ugb3Igd2lsbCB1c2UgdGhlIG5ldyBzeW50YXg6CisgICBgbXlweSA8aHR0cDovL2dpdGh1Yi5jb20vcHl0aG9uL215cHk+YF8sCisgICBgcHl0eXBlIDxodHRwOi8vZ2l0aHViLmNvbS9nb29nbGUvcHl0eXBlPmBfLCBQeUNoYXJtLCBldGMuCisKKworLi4gX3BlcC01Mjk6CisKK1BFUCA1Mjk6IENoYW5nZSBXaW5kb3dzIGZpbGVzeXN0ZW0gZW5jb2RpbmcgdG8gVVRGLTgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVwcmVzZW50aW5nIGZpbGVzeXN0ZW0gcGF0aHMgaXMgYmVzdCBwZXJmb3JtZWQgd2l0aCBzdHIgKFVuaWNvZGUpIHJhdGhlciB0aGFuCitieXRlcy4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgc2l0dWF0aW9ucyB3aGVyZSB1c2luZyBieXRlcyBpcyBzdWZmaWNpZW50IGFuZAorY29ycmVjdC4KKworUHJpb3IgdG8gUHl0aG9uIDMuNiwgZGF0YSBsb3NzIGNvdWxkIHJlc3VsdCB3aGVuIHVzaW5nIGJ5dGVzIHBhdGhzIG9uIFdpbmRvd3MuCitXaXRoIHRoaXMgY2hhbmdlLCB1c2luZyBieXRlcyB0byByZXByZXNlbnQgcGF0aHMgaXMgbm93IHN1cHBvcnRlZCBvbiBXaW5kb3dzLAorcHJvdmlkZWQgdGhvc2UgYnl0ZXMgYXJlIGVuY29kZWQgd2l0aCB0aGUgZW5jb2RpbmcgcmV0dXJuZWQgYnkKKzpmdW5jOmBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKClgLCB3aGljaCBub3cgZGVmYXVsdHMgdG8gYGAndXRmLTgnYGAuCisKK0FwcGxpY2F0aW9ucyB0aGF0IGRvIG5vdCB1c2Ugc3RyIHRvIHJlcHJlc2VudCBwYXRocyBzaG91bGQgdXNlCis6ZnVuYzpgb3MuZnNlbmNvZGUoKWAgYW5kIDpmdW5jOmBvcy5mc2RlY29kZSgpYCB0byBlbnN1cmUgdGhlaXIgYnl0ZXMgYXJlCitjb3JyZWN0bHkgZW5jb2RlZC4gVG8gcmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIsIHNldAorOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkdgIG9yIGNhbGwKKzpmdW5jOmBzeXMuX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nYC4KKworU2VlIDpwZXA6YDUyOWAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGRpc2N1c3Npb24gb2YgY29kZSBtb2RpZmljYXRpb25zIHRoYXQKK21heSBiZSByZXF1aXJlZC4KKworLi4gbm90ZTo6CisKKyAgIFRoaXMgY2hhbmdlIGlzIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsIGZvciAzLjYuMCBiZXRhIHJlbGVhc2VzLiBUaGUgZGVmYXVsdAorICAgZW5jb2RpbmcgbWF5IGNoYW5nZSBiZWZvcmUgdGhlIGZpbmFsIHJlbGVhc2UuCisKKy4uIF93aGF0c25ldy1wZXA0ODc6CisKK1BFUCA0ODc6IFNpbXBsZXIgY3VzdG9taXphdGlvbiBvZiBjbGFzcyBjcmVhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Vwb24gc3ViY2xhc3NpbmcgYSBjbGFzcywgdGhlIGBgX19pbml0X3N1YmNsYXNzX19gYCBjbGFzc21ldGhvZCAoaWYgZGVmaW5lZCkgaXMKK2NhbGxlZCBvbiB0aGUgYmFzZSBjbGFzcy4gVGhpcyBtYWtlcyBpdCBzdHJhaWdodGZvcndhcmQgdG8gd3JpdGUgY2xhc3NlcyB0aGF0CitjdXN0b21pemUgaW5pdGlhbGl6YXRpb24gb2YgZnV0dXJlIHN1YmNsYXNzZXMgd2l0aG91dCBpbnRyb2R1Y2luZyB0aGUKK2NvbXBsZXhpdHkgb2YgYSBmdWxsIGN1c3RvbSBtZXRhY2xhc3MuCisKK1RoZSBkZXNjcmlwdG9yIHByb3RvY29sIGhhcyBhbHNvIGJlZW4gZXhwYW5kZWQgdG8gaW5jbHVkZSBhIG5ldyBvcHRpb25hbCBtZXRob2QsCitgYF9fc2V0X25hbWVfX2BgLiBXaGVuZXZlciBhIG5ldyBjbGFzcyBpcyBkZWZpbmVkLCB0aGUgbmV3IG1ldGhvZCB3aWxsIGJlIGNhbGxlZAorb24gYWxsIGRlc2NyaXB0b3JzIGluY2x1ZGVkIGluIHRoZSBkZWZpbml0aW9uLCBwcm92aWRpbmcgdGhlbSB3aXRoIGEgcmVmZXJlbmNlCit0byB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCBhbmQgdGhlIG5hbWUgZ2l2ZW4gdG8gdGhlIGRlc2NyaXB0b3Igd2l0aGluIHRoZQorY2xhc3MgbmFtZXNwYWNlLgorCitBbHNvIHNlZSA6cGVwOmA0ODdgIGFuZCB0aGUgdXBkYXRlZCBjbGFzcyBjdXN0b21pemF0aW9uIGRvY3VtZW50YXRpb24gYXQKKzpyZWY6YGNsYXNzLWN1c3RvbWl6YXRpb25gIGFuZCA6cmVmOmBkZXNjcmlwdG9yc2AuCisKKyhDb250cmlidXRlZCBieSBNYXJ0aW4gVGVpY2htYW5uIGluIDppc3N1ZTpgMjczNjZgKQorCisuLiBfcGVwLTUyODoKKworUEVQIDUyODogQ2hhbmdlIFdpbmRvd3MgY29uc29sZSBlbmNvZGluZyB0byBVVEYtOAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZGVmYXVsdCBjb25zb2xlIG9uIFdpbmRvd3Mgd2lsbCBub3cgYWNjZXB0IGFsbCBVbmljb2RlIGNoYXJhY3RlcnMgYW5kCitwcm92aWRlIGNvcnJlY3RseSByZWFkIHN0ciBvYmplY3RzIHRvIFB5dGhvbiBjb2RlLiBgYHN5cy5zdGRpbmBgLAorYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIG5vdyBkZWZhdWx0IHRvIHV0Zi04IGVuY29kaW5nLgorCitUaGlzIGNoYW5nZSBvbmx5IGFwcGxpZXMgd2hlbiB1c2luZyBhbiBpbnRlcmFjdGl2ZSBjb25zb2xlLCBhbmQgbm90IHdoZW4KK3JlZGlyZWN0aW5nIGZpbGVzIG9yIHBpcGVzLiBUbyByZXZlcnQgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW91ciBmb3IgaW50ZXJhY3RpdmUKK2NvbnNvbGUgdXNlLCBzZXQgOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0lPRU5DT0RJTkdgLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTI4YCAtLSBDaGFuZ2UgV2luZG93cyBjb25zb2xlIGVuY29kaW5nIHRvIFVURi04CisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgU3RldmUgRG93ZXIuCisKK1BZVEhPTk1BTExPQyBlbnZpcm9ubWVudCB2YXJpYWJsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBuZXcgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbGxvd3Mgc2V0dGluZyB0aGUgUHl0aG9uCittZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rcy4KKworSXQgaXMgbm93IHBvc3NpYmxlIHRvIGluc3RhbGwgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG9uIFB5dGhvbgorY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlIHVzaW5nIGBgUFlUSE9OTUFMTE9DPWRlYnVnYGAuIEVmZmVjdHMgb2YgZGVidWcgaG9va3M6CisKKyogTmV3bHkgYWxsb2NhdGVkIG1lbW9yeSBpcyBmaWxsZWQgd2l0aCB0aGUgYnl0ZSBgYDB4Q0JgYAorKiBGcmVlZCBtZW1vcnkgaXMgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweERCYGAKKyogRGV0ZWN0IHZpb2xhdGlvbnMgb2YgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgQVBJLiBGb3IgZXhhbXBsZSwKKyAgOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAgY2FsbGVkIG9uIGEgbWVtb3J5IGJsb2NrIGFsbG9jYXRlZCBieQorICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLgorKiBEZXRlY3Qgd3JpdGUgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIChidWZmZXIgdW5kZXJmbG93KQorKiBEZXRlY3Qgd3JpdGUgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIChidWZmZXIgb3ZlcmZsb3cpCisqIENoZWNrIHRoYXQgdGhlIDp0ZXJtOmBHSUwgPGdsb2JhbCBpbnRlcnByZXRlciBsb2NrPmAgaXMgaGVsZCB3aGVuIGFsbG9jYXRvcgorICBmdW5jdGlvbnMgb2YgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgKGV4OiA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBhbmQKKyAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgKGV4OiA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgKSBkb21haW5zIGFyZSBjYWxsZWQuCisKK0NoZWNraW5nIGlmIHRoZSBHSUwgaXMgaGVsZCBpcyBhbHNvIGEgbmV3IGZlYXR1cmUgb2YgUHl0aG9uIDMuNi4KKworU2VlIHRoZSA6YzpmdW5jOmBQeU1lbV9TZXR1cERlYnVnSG9va3NgIGZ1bmN0aW9uIGZvciBkZWJ1ZyBob29rcyBvbiBQeXRob24KK21lbW9yeSBhbGxvY2F0b3JzLgorCitJdCBpcyBub3cgYWxzbyBwb3NzaWJsZSB0byBmb3JjZSB0aGUgdXNhZ2Ugb2YgdGhlIDpjOmZ1bmM6YG1hbGxvY2AgYWxsb2NhdG9yIG9mCit0aGUgQyBsaWJyYXJ5IGZvciBhbGwgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyB1c2luZyBgYFBZVEhPTk1BTExPQz1tYWxsb2NgYC4KK0l0IGhlbHBzIHRvIHVzZSBleHRlcm5hbCBtZW1vcnkgZGVidWdnZXJzIGxpa2UgVmFsZ3JpbmQgb24gYSBQeXRob24gY29tcGlsZWQgaW4KK3JlbGVhc2UgbW9kZS4KKworT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgbm93IHVzZSB0aGUKKzptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZSB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzCithbGxvY2F0ZWQuCisKK0V4YW1wbGUgb2YgZmF0YWwgZXJyb3Igb24gYnVmZmVyIG92ZXJmbG93IHVzaW5nCitgYHB5dGhvbjMuNiAtWCB0cmFjZW1hbGxvYz01YGAgKHN0b3JlIDUgZnJhbWVzIGluIHRyYWNlcyk6OgorCisgICAgRGVidWcgbWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgcD0weDdmYmNkNDE2NjZmODogQVBJICdvJworICAgICAgICA0IGJ5dGVzIG9yaWdpbmFsbHkgcmVxdWVzdGVkCisgICAgICAgIFRoZSA3IHBhZCBieXRlcyBhdCBwLTcgYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLgorICAgICAgICBUaGUgOCBwYWQgYnl0ZXMgYXQgdGFpbD0weDdmYmNkNDE2NjZmYyBhcmUgbm90IGFsbCBGT1JCSURERU5CWVRFICgweGZiKToKKyAgICAgICAgICAgIGF0IHRhaWwrMDogMHgwMiAqKiogT1VDSAorICAgICAgICAgICAgYXQgdGFpbCsxOiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzI6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrMzogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCs0OiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzU6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrNjogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCs3OiAweGZiCisgICAgICAgIFRoZSBibG9jayB3YXMgbWFkZSBieSBjYWxsICMxMjMzMzI5IHRvIGRlYnVnIG1hbGxvYy9yZWFsbG9jLgorICAgICAgICBEYXRhIGF0IHA6IDFhIDJiIDMwIDAwCisKKyAgICBNZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgIEZpbGUgInRlc3QvdGVzdF9ieXRlcy5weSIsIGxpbmUgMzIzCisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2MDAKKyAgICAgIEZpbGUgInVuaXR0ZXN0L2Nhc2UucHkiLCBsaW5lIDY0OAorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDEyMgorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDg0CisKKyAgICBGYXRhbCBQeXRob24gZXJyb3I6IGJhZCB0cmFpbGluZyBwYWQgYnl0ZQorCisgICAgQ3VycmVudCB0aHJlYWQgMHgwMDAwN2ZiY2RiZDMyNzAwIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgIEZpbGUgInRlc3QvdGVzdF9ieXRlcy5weSIsIGxpbmUgMzIzIGluIHRlc3RfaGV4CisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2MDAgaW4gcnVuCisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2NDggaW4gX19jYWxsX18KKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSAxMjIgaW4gcnVuCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgODQgaW4gX19jYWxsX18KKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSAxMjIgaW4gcnVuCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgODQgaW4gX19jYWxsX18KKyAgICAgIC4uLgorCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjUxNmAgYW5kIDppc3N1ZTpgMjY1NjRgLikKKworCitEVHJhY2UgYW5kIFN5c3RlbVRhcCBwcm9iaW5nIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQeXRob24gY2FuIG5vdyBiZSBidWlsdCBgYC0td2l0aC1kdHJhY2VgYCB3aGljaCBlbmFibGVzIHN0YXRpYyBtYXJrZXJzCitmb3IgdGhlIGZvbGxvd2luZyBldmVudHMgaW4gdGhlIGludGVycHJldGVyOgorCisqIGZ1bmN0aW9uIGNhbGwvcmV0dXJuCisKKyogZ2FyYmFnZSBjb2xsZWN0aW9uIHN0YXJ0ZWQvZmluaXNoZWQKKworKiBsaW5lIG9mIGNvZGUgZXhlY3V0ZWQuCisKK1RoaXMgY2FuIGJlIHVzZWQgdG8gaW5zdHJ1bWVudCBydW5uaW5nIGludGVycHJldGVycyBpbiBwcm9kdWN0aW9uLAord2l0aG91dCB0aGUgbmVlZCB0byByZWNvbXBpbGUgc3BlY2lmaWMgZGVidWcgYnVpbGRzIG9yIHByb3ZpZGluZworYXBwbGljYXRpb24tc3BlY2lmaWMgcHJvZmlsaW5nL2RlYnVnZ2luZyBjb2RlLgorCitNb3JlIGRldGFpbHMgaW4gOnJlZjpgaW5zdHJ1bWVudGF0aW9uYC4KKworVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdGVzdGVkIG9uIExpbnV4IGFuZCBtYWNPUy4gIEFkZGl0aW9uYWwKK21hcmtlcnMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCisKKyhDb250cmlidXRlZCBieSDFgXVrYXN6IExhbmdhIGluIDppc3N1ZTpgMjE1OTBgLCBiYXNlZCBvbiBwYXRjaGVzIGJ5CitKZXPDunMgQ2VhIEF2acOzbiwgRGF2aWQgTWFsY29sbSwgYW5kIE5pa2hpbCBCZW5lc2NoLikKKworCisuLiBfd2hhdHNuZXctZGVmb3JkZXI6CisKK1BFUCA1MjA6IFByZXNlcnZpbmcgQ2xhc3MgQXR0cmlidXRlIERlZmluaXRpb24gT3JkZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXR0cmlidXRlcyBpbiBhIGNsYXNzIGRlZmluaXRpb24gYm9keSBoYXZlIGEgbmF0dXJhbCBvcmRlcmluZzogdGhlIHNhbWUKK29yZGVyIGluIHdoaWNoIHRoZSBuYW1lcyBhcHBlYXIgaW4gdGhlIHNvdXJjZS4gIFRoaXMgb3JkZXIgaXMgbm93CitwcmVzZXJ2ZWQgaW4gdGhlIG5ldyBjbGFzcydzIGBgX19kaWN0X19gYCBhdHRyaWJ1dGUuCisKK0Fsc28sIHRoZSBlZmZlY3RpdmUgZGVmYXVsdCBjbGFzcyAqZXhlY3V0aW9uKiBuYW1lc3BhY2UgKHJldHVybmVkIGZyb20KK2BgdHlwZS5fX3ByZXBhcmVfXygpYGApIGlzIG5vdyBhbiBpbnNlcnRpb24tb3JkZXItcHJlc2VydmluZyBtYXBwaW5nLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTIwYCAtLSBQcmVzZXJ2aW5nIENsYXNzIEF0dHJpYnV0ZSBEZWZpbml0aW9uIE9yZGVyCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgRXJpYyBTbm93LgorCisKKy4uIF93aGF0c25ldy1rd2FyZ3M6CisKK1BFUCA0Njg6IFByZXNlcnZpbmcgS2V5d29yZCBBcmd1bWVudCBPcmRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2BgKiprd2FyZ3NgYCBpbiBhIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBub3cgZ3VhcmFudGVlZCB0byBiZSBhbgoraW5zZXJ0aW9uLW9yZGVyLXByZXNlcnZpbmcgbWFwcGluZy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ2OGAgLS0gUHJlc2VydmluZyBLZXl3b3JkIEFyZ3VtZW50IE9yZGVyCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgRXJpYyBTbm93LgorCisuLiBfd2hhdHNuZXctcGVwNTA5OgorCitQRVAgNTA5OiBBZGQgYSBwcml2YXRlIHZlcnNpb24gdG8gZGljdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWRkIGEgbmV3IHByaXZhdGUgdmVyc2lvbiB0byB0aGUgYnVpbHRpbiBgYGRpY3RgYCB0eXBlLCBpbmNyZW1lbnRlZCBhdAorZWFjaCBkaWN0aW9uYXJ5IGNyZWF0aW9uIGFuZCBhdCBlYWNoIGRpY3Rpb25hcnkgY2hhbmdlLCB0byBpbXBsZW1lbnQKK2Zhc3QgZ3VhcmRzIG9uIG5hbWVzcGFjZXMuCisKKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2MDU4YC4pCisKKworT3RoZXIgTGFuZ3VhZ2UgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHNtYWxsZXIgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb3JlIFB5dGhvbiBsYW5ndWFnZSBhcmU6CisKKyogOmZ1bmM6YGRpY3RgIG5vdyB1c2VzIGEgImNvbXBhY3QiIHJlcHJlc2VudGF0aW9uIGBwaW9uZWVyZWQgYnkgUHlQeQorICA8aHR0cHM6Ly9tb3JlcHlweS5ibG9nc3BvdC5jb20vMjAxNS8wMS9mYXN0ZXItbW9yZS1tZW1vcnktZWZmaWNpZW50LWFuZC1tb3JlLmh0bWw+YF8uCisgIFRoZSBtZW1vcnkgdXNhZ2Ugb2YgdGhlIG5ldyA6ZnVuYzpgZGljdGAgaXMgYmV0d2VlbiAyMCUgYW5kIDI1JSBzbWFsbGVyCisgIGNvbXBhcmVkIHRvIFB5dGhvbiAzLjUuCisgIDpwZXA6YDQ2OGAgKFByZXNlcnZpbmcgdGhlIG9yZGVyIG9mIGBgKiprd2FyZ3NgYCBpbiBhIGZ1bmN0aW9uLikgaXMKKyAgaW1wbGVtZW50ZWQgYnkgdGhpcy4gVGhlIG9yZGVyLXByZXNlcnZpbmcgYXNwZWN0IG9mIHRoaXMgbmV3CisgIGltcGxlbWVudGF0aW9uIGlzIGNvbnNpZGVyZWQgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGFuZCBzaG91bGQKKyAgbm90IGJlIHJlbGllZCB1cG9uICh0aGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwgYnV0IGl0IGlzIGRlc2lyZWQKKyAgdG8gaGF2ZSB0aGlzIG5ldyBkaWN0IGltcGxlbWVudGF0aW9uIGluIHRoZSBsYW5ndWFnZSBmb3IgYSBmZXcKKyAgcmVsZWFzZXMgYmVmb3JlIGNoYW5naW5nIHRoZSBsYW5ndWFnZSBzcGVjIHRvIG1hbmRhdGUKKyAgb3JkZXItcHJlc2VydmluZyBzZW1hbnRpY3MgZm9yIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUgUHl0aG9uCisgIGltcGxlbWVudGF0aW9uczsgdGhpcyBhbHNvIGhlbHBzIHByZXNlcnZlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5CisgIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgdGhlIGxhbmd1YWdlIHdoZXJlIHJhbmRvbSBpdGVyYXRpb24gb3JkZXIgaXMKKyAgc3RpbGwgaW4gZWZmZWN0LCBlLmcuIFB5dGhvbiAzLjUpLgorICAoQ29udHJpYnV0ZWQgYnkgSU5BREEgTmFva2kgaW4gOmlzc3VlOmAyNzM1MGAuIElkZWEKKyAgYG9yaWdpbmFsbHkgc3VnZ2VzdGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyCisgIDxodHRwczovL21haWwucHl0aG9uLm9yZy9waXBlcm1haWwvcHl0aG9uLWRldi8yMDEyLURlY2VtYmVyLzEyMzAyOC5odG1sPmBfLikKKworKiBMb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCB0cmFjZWJhY2sgbGluZXMgYXJlIG5vdyBhYmJyZXZpYXRlZCBhcworICBgYCJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdImBgIChzZWUKKyAgOnJlZjpgcHkzNi10cmFjZWJhY2tgIGZvciBhbiBleGFtcGxlKS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEVtYW51ZWwgQmFycnkgaW4gOmlzc3VlOmAyNjgyM2AuKQorCisqIEltcG9ydCBub3cgcmFpc2VzIHRoZSBuZXcgZXhjZXB0aW9uIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgCisgIChzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmApIHdoZW4gaXQgY2Fubm90IGZpbmQgYSBtb2R1bGUuICBDb2RlCisgIHRoYXQgY3VycmVudCBjaGVja3MgZm9yIEltcG9ydEVycm9yIChpbiB0cnktZXhjZXB0KSB3aWxsIHN0aWxsIHdvcmsuCisKKworTmV3IE1vZHVsZXMKKz09PT09PT09PT09CisKKyogTm9uZSB5ZXQuCisKKworSW1wcm92ZWQgTW9kdWxlcworPT09PT09PT09PT09PT09PQorCitPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBibG9ja3MgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbAoraXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LiBTZWUgdGhlIDpwZXA6YDUyNGAgZm9yIHRoZSByYXRpb25hbGUuCisKKworYXN5bmNpbworLS0tLS0tLQorCitTaW5jZSB0aGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIGlzIDp0ZXJtOmBwcm92aXNpb25hbCA8cHJvdmlzaW9uYWwgYXBpPmAsCithbGwgY2hhbmdlcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjYgaGF2ZSBhbHNvIGJlZW4gYmFja3BvcnRlZCB0byBQeXRob24KKzMuNS54LgorCitOb3RhYmxlIGNoYW5nZXMgaW4gdGhlIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSBzaW5jZSBQeXRob24gMy41LjA6CisKKyogVGhlIDpmdW5jOmB+YXN5bmNpby5lbnN1cmVfZnV0dXJlYCBmdW5jdGlvbiBhbmQgYWxsIGZ1bmN0aW9ucyB0aGF0CisgIHVzZSBpdCwgc3VjaCBhcyA6bWV0aDpgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLnJ1bl91bnRpbF9jb21wbGV0ZT5gLAorICBub3cgYWNjZXB0IGFsbCBraW5kcyBvZiA6dGVybTpgYXdhaXRhYmxlIG9iamVjdHMgPGF3YWl0YWJsZT5gLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIE5ldyA6ZnVuYzpgfmFzeW5jaW8ucnVuX2Nvcm91dGluZV90aHJlYWRzYWZlYCBmdW5jdGlvbiB0byBzdWJtaXQKKyAgY29yb3V0aW5lcyB0byBldmVudCBsb29wcyBmcm9tIG90aGVyIHRocmVhZHMuCisgIChDb250cmlidXRlZCBieSBWaW5jZW50IE1pY2hlbC4pCisKKyogTmV3IDptZXRoOmBUcmFuc3BvcnQuaXNfY2xvc2luZygpIDxhc3luY2lvLkJhc2VUcmFuc3BvcnQuaXNfY2xvc2luZz5gCisgIG1ldGhvZCB0byBjaGVjayBpZiB0aGUgdHJhbnNwb3J0IGlzIGNsb3Npbmcgb3IgY2xvc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIFRoZSA6bWV0aDpgbG9vcC5jcmVhdGVfc2VydmVyKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfc2VydmVyPmAKKyAgbWV0aG9kIGNhbiBub3cgYWNjZXB0IGEgbGlzdCBvZiBob3N0cy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFlhbm4gU2lvbm5lYXUuKQorCisqIE5ldyA6bWV0aDpgbG9vcC5jcmVhdGVfZnV0dXJlKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfZnV0dXJlPmAKKyAgbWV0aG9kIHRvIGNyZWF0ZSBGdXR1cmUgb2JqZWN0cy4gIFRoaXMgYWxsb3dzIGFsdGVybmF0aXZlIGV2ZW50CisgIGxvb3AgaW1wbGVtZW50YXRpb25zLCBzdWNoIGFzCisgIGB1dmxvb3AgPGh0dHBzOi8vZ2l0aHViLmNvbS9NYWdpY1N0YWNrL3V2bG9vcD5gXywgdG8gcHJvdmlkZSBhIGZhc3RlcgorICA6Y2xhc3M6YGFzeW5jaW8uRnV0dXJlYCBpbXBsZW1lbnRhdGlvbi4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBOZXcgOm1ldGg6YGxvb3AuZ2V0X2V4Y2VwdGlvbl9oYW5kbGVyKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5nZXRfZXhjZXB0aW9uX2hhbmRsZXI+YAorICBtZXRob2QgdG8gZ2V0IHRoZSBjdXJyZW50IGV4Y2VwdGlvbiBoYW5kbGVyLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIE5ldyA6bWV0aDpgU3RyZWFtUmVhZGVyLnJlYWR1bnRpbCgpIDxhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkdW50aWw+YAorICBtZXRob2QgdG8gcmVhZCBkYXRhIGZyb20gdGhlIHN0cmVhbSB1bnRpbCBhIHNlcGFyYXRvciBieXRlcworICBzZXF1ZW5jZSBhcHBlYXJzLgorICAoQ29udHJpYnV0ZWQgYnkgTWFyayBLb3JlbmJlcmcuKQorCisqIFRoZSA6bWV0aDpgbG9vcC5nZXRhZGRyaW5mbygpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuZ2V0YWRkcmluZm8+YAorICBtZXRob2QgaXMgb3B0aW1pemVkIHRvIGF2b2lkIGNhbGxpbmcgdGhlIHN5c3RlbSBgYGdldGFkZHJpbmZvYGAKKyAgZnVuY3Rpb24gaWYgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSByZXNvbHZlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEEuIEplc3NlIEppcnl1IERhdmlzLikKKworCitjb250ZXh0bGliCistLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcmAgY2xhc3MgaGFzIGJlZW4gYWRkZWQgdG8KK3Byb3ZpZGUgYW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgY29udGV4dCBtYW5hZ2Vycy4gSXQgcHJvdmlkZXMgYQorc2Vuc2libGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgYF9fZW50ZXJfXygpYCB3aGljaCByZXR1cm5zCitgYHNlbGZgYCBhbmQgbGVhdmVzIGBfX2V4aXRfXygpYCBhbiBhYnN0cmFjdCBtZXRob2QuIEEgbWF0Y2hpbmcKK2NsYXNzIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmB0eXBpbmdgIG1vZHVsZSBhcworOmNsYXNzOmB0eXBpbmcuQ29udGV4dE1hbmFnZXJgLgorKENvbnRyaWJ1dGVkIGJ5IEJyZXR0IENhbm5vbiBpbiA6aXNzdWU6YDI1NjA5YC4pCisKKwordmVudgorLS0tLQorCis6bW9kOmB2ZW52YCBhY2NlcHRzIGEgbmV3IHBhcmFtZXRlciBgYC0tcHJvbXB0YGAuIFRoaXMgcGFyYW1ldGVyIHByb3ZpZGVzIGFuCithbHRlcm5hdGl2ZSBwcmVmaXggZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiAoUHJvcG9zZWQgYnkgxYF1a2Fzei5CYWxjZXJ6YWsKK2FuZCBwb3J0ZWQgdG8gMy42IGJ5IFN0w6lwaGFuZSBXaXJ0ZWwgaW4gOmlzc3VlOmAyMjgyOWAuKQorCisKK2RhdGV0aW1lCistLS0tLS0tLQorCitUaGUgOm1ldGg6YGRhdGV0aW1lLnN0cmZ0aW1lKCkgPGRhdGV0aW1lLmRhdGV0aW1lLnN0cmZ0aW1lPmAgYW5kCis6bWV0aDpgZGF0ZS5zdHJmdGltZSgpIDxkYXRldGltZS5kYXRlLnN0cmZ0aW1lPmAgbWV0aG9kcyBub3cgc3VwcG9ydCBJU08gODYwMSBkYXRlCitkaXJlY3RpdmVzIGBgJUdgYCwgYGAldWBgIGFuZCBgYCVWYGAuCisoQ29udHJpYnV0ZWQgYnkgQXNobGV5IEFuZGVyc29uIGluIDppc3N1ZTpgMTIwMDZgLikKKworCitkaXN0dXRpbHMuY29tbWFuZC5zZGlzdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGBgZGVmYXVsdF9mb3JtYXRgYCBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tCis6Y2xhc3M6YGRpc3R1dGlscy5jb21tYW5kLnNkaXN0LnNkaXN0YCBhbmQgdGhlIGBgZm9ybWF0c2BgCithdHRyaWJ1dGUgZGVmYXVsdHMgdG8gYGBbJ2d6dGFyJ11gYC4gQWx0aG91Z2ggbm90IGFudGljaXBhdGVkLAorQW55IGNvZGUgcmVseWluZyBvbiB0aGUgcHJlc2VuY2Ugb2YgYGBkZWZhdWx0X2Zvcm1hdGBgIG1heQorbmVlZCB0byBiZSBhZGFwdGVkLiBTZWUgOmlzc3VlOmAyNzgxOWAgZm9yIG1vcmUgZGV0YWlscy4KKworCitlbWFpbAorLS0tLS0KKworVGhlIG5ldyBlbWFpbCBBUEksIGVuYWJsZWQgdmlhIHRoZSAqcG9saWN5KiBrZXl3b3JkIHRvIHZhcmlvdXMgY29uc3RydWN0b3JzLCBpcworbm8gbG9uZ2VyIHByb3Zpc2lvbmFsLiAgVGhlIDptb2Q6YGVtYWlsYCBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIHJlb3JnYW5pemVkIGFuZAorcmV3cml0dGVuIHRvIGZvY3VzIG9uIHRoZSBuZXcgQVBJLCB3aGlsZSByZXRhaW5pbmcgdGhlIG9sZCBkb2N1bWVudGF0aW9uIGZvcgordGhlIGxlZ2FjeSBBUEkuICAoQ29udHJpYnV0ZWQgYnkgUi4gRGF2aWQgTXVycmF5IGluIDppc3N1ZTpgMjQyNzdgLikKKworVGhlIDptb2Q6YGVtYWlsLm1pbWVgIGNsYXNzZXMgbm93IGFsbCBhY2NlcHQgYW4gb3B0aW9uYWwgKnBvbGljeSoga2V5d29yZC4KKyhDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjczMzFgLikKKworVGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCBub3cgc3VwcG9ydHMgdGhlICpwb2xpY3kqCitrZXl3b3JkLgorCitUaGVyZSBpcyBhIG5ldyA6bW9kOmB+ZW1haWwucG9saWN5YCBhdHRyaWJ1dGUsCis6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWVzc2FnZV9mYWN0b3J5YCwgdGhhdCBjb250cm9scyB3aGF0IGNsYXNzIGlzIHVzZWQKK2J5IGRlZmF1bHQgd2hlbiB0aGUgcGFyc2VyIGNyZWF0ZXMgbmV3IG1lc3NhZ2Ugb2JqZWN0cy4gIEZvciB0aGUKKzphdHRyOmBlbWFpbC5wb2xpY3kuY29tcGF0MzJgIHBvbGljeSB0aGlzIGlzIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAsCitmb3IgdGhlIG5ldyBwb2xpY2llcyBpdCBpcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAuCisoQ29udHJpYnV0ZWQgYnkgUi4gRGF2aWQgTXVycmF5IGluIDppc3N1ZTpgMjA0NzZgLikKKworCitlbmNvZGluZ3MKKy0tLS0tLS0tLQorCitPbiBXaW5kb3dzLCBhZGRlZCB0aGUgYGAnb2VtJ2BgIGVuY29kaW5nIHRvIHVzZSBgYENQX09FTUNQYGAgYW5kIHRoZSBgYCdhbnNpJ2BgCithbGlhcyBmb3IgdGhlIGV4aXN0aW5nIGBgJ21iY3MnYGAgZW5jb2RpbmcsIHdoaWNoIHVzZXMgdGhlIGBgQ1BfQUNQYGAgY29kZSBwYWdlLgorCisKK2ZhdWx0aGFuZGxlcgorLS0tLS0tLS0tLS0tCisKK09uIFdpbmRvd3MsIHRoZSA6bW9kOmBmYXVsdGhhbmRsZXJgIG1vZHVsZSBub3cgaW5zdGFsbHMgYSBoYW5kbGVyIGZvciBXaW5kb3dzCitleGNlcHRpb25zOiBzZWUgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgLiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4KKzppc3N1ZTpgMjM4NDhgLikKKworCitoYXNobGliCistLS0tLS0tCisKKzptb2Q6YGhhc2hsaWJgIHN1cHBvcnRzIE9wZW5TU0wgMS4xLjAuIFRoZSBtaW5pbXVtIHJlY29tbWVuZCB2ZXJzaW9uIGlzIDEuMC4yLgorSXQgaGFzIGJlZW4gdGVzdGVkIHdpdGggMC45Ljh6YywgMC45Ljh6aCBhbmQgMS4wLjF0IGFzIHdlbGwgYXMgTGlicmVTU0wgMi4zCithbmQgMi40LgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjQ3MGAuKQorCitCTEFLRTIgaGFzaCBmdW5jdGlvbnMgd2VyZSBhZGRlZCB0byB0aGUgbW9kdWxlLiA6ZnVuYzpgfmhhc2hsaWIuYmxha2UyYmAKK2FuZCA6ZnVuYzpgfmhhc2hsaWIuYmxha2Uyc2AgYXJlIGFsd2F5cyBhdmFpbGFibGUgYW5kIHN1cHBvcnQgdGhlIGZ1bGwKK2ZlYXR1cmUgc2V0IG9mIEJMQUtFMi4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjY3OThgIGJhc2VkIG9uIGNvZGUgYnkKK0RtaXRyeSBDaGVzdG55a2ggYW5kIFNhbXVlbCBOZXZlcy4gRG9jdW1lbnRhdGlvbiB3cml0dGVuIGJ5IERtaXRyeSBDaGVzdG55a2guKQorCitUaGUgU0hBLTMgaGFzaCBmdW5jdGlvbnMgOmZ1bmM6YH5oYXNobGliLnNoYTNfMjI0YCwgOmZ1bmM6YH5oYXNobGliLnNoYTNfMjU2YCwKKzpmdW5jOmB+aGFzaGxpYi5zaGEzXzM4NGAsIDpmdW5jOmB+aGFzaGxpYi5zaGEzXzUxMmAsIGFuZCBTSEFLRSBoYXNoIGZ1bmN0aW9ucworOmZ1bmM6YH5oYXNobGliLnNoYWtlXzEyOGAgYW5kIDpmdW5jOmB+aGFzaGxpYi5zaGFrZV8yNTZgIHdlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDE2MTEzYC4gS2VjY2FrIENvZGUgUGFja2FnZQorYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlLCBhbmQKK1Jvbm55IFZhbiBLZWVyLikKKworVGhlIHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIDpmdW5jOmB+aGFzaGxpYi5zY3J5cHRgIGlzIG5vdworYXZhaWxhYmxlIHdpdGggT3BlblNTTCAxLjEuMCBhbmQgbmV3ZXIuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3OTI4YC4pCisKK2h0dHAuY2xpZW50CistLS0tLS0tLS0tLQorCis6bWV0aDpgSFRUUENvbm5lY3Rpb24ucmVxdWVzdCgpIDxodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0PmAgYW5kCis6bWV0aDpgfmh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLmVuZGhlYWRlcnNgIGJvdGggbm93IHN1cHBvcnQKK2NodW5rZWQgZW5jb2RpbmcgcmVxdWVzdCBib2RpZXMuCisoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKworaWRsZWxpYiBhbmQgSURMRQorLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaWRsZWxpYiBwYWNrYWdlIGlzIGJlaW5nIG1vZGVybml6ZWQgYW5kIHJlZmFjdG9yZWQgdG8gbWFrZSBJRExFIGxvb2sgYW5kIHdvcmsgYmV0dGVyIGFuZCB0byBtYWtlIHRoZSBjb2RlIGVhc2llciB0byB1bmRlcnN0YW5kLCB0ZXN0LCBhbmQgaW1wcm92ZS4gUGFydCBvZiBtYWtpbmcgSURMRSBsb29rIGJldHRlciwgZXNwZWNpYWxseSBvbiBMaW51eCBhbmQgTWFjLCBpcyB1c2luZyB0dGsgd2lkZ2V0cywgbW9zdGx5IGluIHRoZSBkaWFsb2dzLiAgQXMgYSByZXN1bHQsIElETEUgbm8gbG9uZ2VyIHJ1bnMgd2l0aCB0Y2wvdGsgOC40LiAgSXQgbm93IHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgOC42LiAgV2UgcmVjb21tZW5kIHJ1bm5pbmcgdGhlIGxhdGVzdCByZWxlYXNlIG9mIGVpdGhlci4KKworJ01vZGVybml6aW5nJyBpbmNsdWRlcyByZW5hbWluZyBhbmQgY29uc29saWRhdGlvbiBvZiBpZGxlbGliIG1vZHVsZXMuIFRoZSByZW5hbWluZyBvZiBmaWxlcyB3aXRoIHBhcnRpYWwgdXBwZXJjYXNlIG5hbWVzIGlzIHNpbWlsYXIgdG8gdGhlIHJlbmFtaW5nIG9mLCBmb3IgaW5zdGFuY2UsIFRraW50ZXIgYW5kIFRrRm9udCB0byB0a2ludGVyIGFuZCB0a2ludGVyLmZvbnQgaW4gMy4wLiAgQXMgYSByZXN1bHQsIGltcG9ydHMgb2YgaWRsZWxpYiBmaWxlcyB0aGF0IHdvcmtlZCBpbiAzLjUgd2lsbCB1c3VhbGx5IG5vdCB3b3JrIGluIDMuNi4gIEF0IGxlYXN0IGEgbW9kdWxlIG5hbWUgY2hhbmdlIHdpbGwgYmUgbmVlZGVkIChzZWUgaWRsZWxpYi9SRUFETUUudHh0KSwgc29tZXRpbWVzIG1vcmUuICAoTmFtZSBjaGFuZ2VzIGNvbnRyaWJ1dGVkIGJ5IEFsIFN3aWVnYXJ0IGFuZCBUZXJyeSBSZWVkeSBpbiA6aXNzdWU6YDI0MjI1YC4gIE1vc3QgaWRsZWxpYiBwYXRjaGVzIHNpbmNlIGhhdmUgYmVlbiBhbmQgd2lsbCBiZSBwYXJ0IG9mIHRoZSBwcm9jZXNzLikKKworSW4gY29tcGVuc2F0aW9uLCB0aGUgZXZlbnR1YWwgcmVzdWx0IHdpdGggYmUgdGhhdCBzb21lIGlkbGVsaWIgY2xhc3NlcyB3aWxsIGJlIGVhc2llciB0byB1c2UsIHdpdGggYmV0dGVyIEFQSXMgYW5kIGRvY3N0cmluZ3MgZXhwbGFpbmluZyB0aGVtLiAgQWRkaXRpb25hbCB1c2VmdWwgaW5mb3JtYXRpb24gd2lsbCBiZSBhZGRlZCB0byBpZGxlbGliIHdoZW4gYXZhaWxhYmxlLgorCisKK2ltcG9ydGxpYgorLS0tLS0tLS0tCisKKzpjbGFzczpgaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlcmAgbm93IGNhbGxzCis6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG9uIHRoZSB3cmFwcGVkIGxvYWRlciwgcmVtb3ZpbmcgdGhlCityZXN0cmljdGlvbiB0aGF0IDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXJgIGFuZAorOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXJgIGNvdWxkbid0IGJlIHVzZWQgd2l0aAorOmNsYXNzOmBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyYC4KKworOmZ1bmM6YGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlYCwKKzpmdW5jOmBpbXBvcnRsaWIudXRpbC5zb3VyY2VfZnJvbV9jYWNoZWAsIGFuZAorOmZ1bmM6YGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uYCBub3cgYWNjZXB0IGEKKzp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKworCitqc29uCistLS0tCisKKzpmdW5jOmBqc29uLmxvYWRgIGFuZCA6ZnVuYzpganNvbi5sb2Fkc2Agbm93IHN1cHBvcnQgYmluYXJ5IGlucHV0LiAgRW5jb2RlZAorSlNPTiBzaG91bGQgYmUgcmVwcmVzZW50ZWQgdXNpbmcgZWl0aGVyIFVURi04LCBVVEYtMTYsIG9yIFVURi0zMi4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTc5MDlgLikKKworCitvcworLS0KKworQSBuZXcgOm1ldGg6YH5vcy5zY2FuZGlyLmNsb3NlYCBtZXRob2QgYWxsb3dzIGV4cGxpY2l0bHkgY2xvc2luZyBhCis6ZnVuYzpgfm9zLnNjYW5kaXJgIGl0ZXJhdG9yLiAgVGhlIDpmdW5jOmB+b3Muc2NhbmRpcmAgaXRlcmF0b3Igbm93CitzdXBwb3J0cyB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wuICBJZiBhIDpmdW5jOmBzY2FuZGlyYAoraXRlcmF0b3IgaXMgbmVpdGhlciBleGhhdXN0ZWQgbm9yIGV4cGxpY2l0bHkgY2xvc2VkIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYAord2lsbCBiZSBlbWl0dGVkIGluIGl0cyBkZXN0cnVjdG9yLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTk5NGAuKQorCitUaGUgTGludXggYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgKGdldCByYW5kb20gYnl0ZXMpIGlzIG5vdyBleHBvc2VkIGFzIHRoZSBuZXcKKzpmdW5jOmBvcy5nZXRyYW5kb21gIGZ1bmN0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyLCBwYXJ0IG9mIHRoZSA6cGVwOmA1MjRgKQorCitTZWUgdGhlIHN1bW1hcnkgZm9yIDpyZWY6YFBFUCA1MTkgPHBlcC01MTk+YCBmb3IgZGV0YWlscyBvbiBob3cgdGhlCis6bW9kOmBvc2AgYW5kIDptb2Q6YG9zLnBhdGhgIG1vZHVsZXMgbm93IHN1cHBvcnQKKzp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gLgorCisKK3BpY2tsZQorLS0tLS0tCisKK09iamVjdHMgdGhhdCBuZWVkIGNhbGxpbmcgYGBfX25ld19fYGAgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyBjYW4gbm93IGJlIHBpY2tsZWQKK3VzaW5nIDpyZWY6YHBpY2tsZSBwcm90b2NvbHMgPHBpY2tsZS1wcm90b2NvbHM+YCBvbGRlciB0aGFuIHByb3RvY29sIHZlcnNpb24gNC4KK1Byb3RvY29sIHZlcnNpb24gNCBhbHJlYWR5IHN1cHBvcnRzIHRoaXMgY2FzZS4gIChDb250cmlidXRlZCBieSBTZXJoaXkKK1N0b3JjaGFrYSBpbiA6aXNzdWU6YDI0MTY0YC4pCisKKworcmUKKy0tCisKK0FkZGVkIHN1cHBvcnQgb2YgbW9kaWZpZXIgc3BhbnMgaW4gcmVndWxhciBleHByZXNzaW9ucy4gIEV4YW1wbGVzOgorYGAnKD9pOnApeXRob24nYGAgbWF0Y2hlcyBgYCdweXRob24nYGAgYW5kIGBgJ1B5dGhvbidgYCwgYnV0IG5vdCBgYCdQWVRIT04nYGA7CitgYCcoP2kpZyg/LWk6dilyJ2BgIG1hdGNoZXMgYGAnR3ZSJ2BgIGFuZCBgYCdndnInYGAsIGJ1dCBub3QgYGAnR1ZSJ2BgLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmA0MzMwMjhgLikKKworTWF0Y2ggb2JqZWN0IGdyb3VwcyBjYW4gYmUgYWNjZXNzZWQgYnkgYGBfX2dldGl0ZW1fX2BgLCB3aGljaCBpcworZXF1aXZhbGVudCB0byBgYGdyb3VwKClgYC4gIFNvIGBgbW9bJ25hbWUnXWBgIGlzIG5vdyBlcXVpdmFsZW50IHRvCitgYG1vLmdyb3VwKCduYW1lJylgYC4gIChDb250cmlidXRlZCBieSBFcmljIFNtaXRoIGluIDppc3N1ZTpgMjQ0NTRgLikKKworCityZWFkbGluZQorLS0tLS0tLS0KKworQWRkZWQgOmZ1bmM6YH5yZWFkbGluZS5zZXRfYXV0b19oaXN0b3J5YCB0byBlbmFibGUgb3IgZGlzYWJsZQorYXV0b21hdGljIGFkZGl0aW9uIG9mIGlucHV0IHRvIHRoZSBoaXN0b3J5IGxpc3QuICAoQ29udHJpYnV0ZWQgYnkKK1R5bGVyIENyb21wdG9uIGluIDppc3N1ZTpgMjY4NzBgLikKKworCitybGNvbXBsZXRlcgorLS0tLS0tLS0tLS0KKworUHJpdmF0ZSBhbmQgc3BlY2lhbCBhdHRyaWJ1dGUgbmFtZXMgbm93IGFyZSBvbWl0dGVkIHVubGVzcyB0aGUgcHJlZml4IHN0YXJ0cword2l0aCB1bmRlcnNjb3Jlcy4gIEEgc3BhY2Ugb3IgYSBjb2xvbiBpcyBhZGRlZCBhZnRlciBzb21lIGNvbXBsZXRlZCBrZXl3b3Jkcy4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjUwMTFgIGFuZCA6aXNzdWU6YDI1MjA5YC4pCisKK05hbWVzIG9mIG1vc3QgYXR0cmlidXRlcyBsaXN0ZWQgYnkgOmZ1bmM6YGRpcmAgYXJlIG5vdyBjb21wbGV0ZWQuCitQcmV2aW91c2x5LCBuYW1lcyBvZiBwcm9wZXJ0aWVzIGFuZCBzbG90cyB3aGljaCB3ZXJlIG5vdCB5ZXQgY3JlYXRlZCBvbgorYW4gaW5zdGFuY2Ugd2VyZSBleGNsdWRlZC4gIChDb250cmlidXRlZCBieSBNYXJ0aW4gUGFudGVyIGluIDppc3N1ZTpgMjU1OTBgLikKKworCitzaXRlCistLS0tCisKK1doZW4gc3BlY2lmeWluZyBwYXRocyB0byBhZGQgdG8gOmF0dHI6YHN5cy5wYXRoYCBpbiBhIGAucHRoYCBmaWxlLAoreW91IG1heSBub3cgc3BlY2lmeSBmaWxlIHBhdGhzIG9uIHRvcCBvZiBkaXJlY3RvcmllcyAoZS5nLiB6aXAgZmlsZXMpLgorKENvbnRyaWJ1dGVkIGJ5IFdvbGZnYW5nIExhbmduZXIgaW4gOmlzc3VlOmAyNjU4N2ApLgorCisKK3NxbGl0ZTMKKy0tLS0tLS0KKworOmF0dHI6YHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZGAgbm93IHN1cHBvcnRzIHRoZSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQuCisoQ29udHJpYnV0ZWQgYnkgQWxleCBMb3JkVGhvcnNlbiBpbiA6aXNzdWU6YDE2ODY0YC4pCisKKworc29ja2V0CistLS0tLS0KKworVGhlIDpmdW5jOmB+c29ja2V0LnNvY2tldC5pb2N0bGAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIHRoZSA6ZGF0YTpgfnNvY2tldC5TSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYAorY29udHJvbCBjb2RlLgorKENvbnRyaWJ1dGVkIGJ5IERhbmllbCBTdG9rZXMgaW4gOmlzc3VlOmAyNjUzNmAuKQorCitUaGUgOm1ldGg6YH5zb2NrZXQuc29ja2V0LmdldHNvY2tvcHRgIGNvbnN0YW50cyBgYFNPX0RPTUFJTmBgLAorYGBTT19QUk9UT0NPTGBgLCBgYFNPX1BFRVJTRUNgYCwgYW5kIGBgU09fUEFTU1NFQ2BgIGFyZSBub3cgc3VwcG9ydGVkLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjkwN2AuKQorCitUaGUgc29ja2V0IG1vZHVsZSBub3cgc3VwcG9ydHMgdGhlIGFkZHJlc3MgZmFtaWx5Cis6ZGF0YTpgfnNvY2tldC5BRl9BTEdgIHRvIGludGVyZmFjZSB3aXRoIExpbnV4IEtlcm5lbCBjcnlwdG8gQVBJLiBgYEFMR18qYGAsCitgYFNPTF9BTEdgYCBhbmQgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNlbmRtc2dfYWZhbGdgIHdlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3NzQ0YCB3aXRoIHN1cHBvcnQgZnJvbQorVmljdG9yIFN0aW5uZXIuKQorCitzb2NrZXRzZXJ2ZXIKKy0tLS0tLS0tLS0tLQorCitTZXJ2ZXJzIGJhc2VkIG9uIHRoZSA6bW9kOmBzb2NrZXRzZXJ2ZXJgIG1vZHVsZSwgaW5jbHVkaW5nIHRob3NlCitkZWZpbmVkIGluIDptb2Q6YGh0dHAuc2VydmVyYCwgOm1vZDpgeG1scnBjLnNlcnZlcmAgYW5kCis6bW9kOmB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXJgLCBub3cgc3VwcG9ydCB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAKK3Byb3RvY29sLgorKENvbnRyaWJ1dGVkIGJ5IEF2aXYgUGFsaXZvZGEgaW4gOmlzc3VlOmAyNjQwNGAuKQorCitUaGUgOmF0dHI6YH5zb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIud2ZpbGVgIGF0dHJpYnV0ZSBvZgorOmNsYXNzOmB+c29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyYCBjbGFzc2VzIG5vdyBpbXBsZW1lbnRzCit0aGUgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgd3JpdGFibGUgaW50ZXJmYWNlLiAgSW4gcGFydGljdWxhciwKK2NhbGxpbmcgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS53cml0ZWAgaXMgbm93IGd1YXJhbnRlZWQgdG8gc2VuZCB0aGUKK2RhdGEgaW4gZnVsbC4gIChDb250cmlidXRlZCBieSBNYXJ0aW4gUGFudGVyIGluIDppc3N1ZTpgMjY3MjFgLikKKworc3NsCistLS0KKworOm1vZDpgc3NsYCBzdXBwb3J0cyBPcGVuU1NMIDEuMS4wLiBUaGUgbWluaW11bSByZWNvbW1lbmQgdmVyc2lvbiBpcyAxLjAuMi4KK0l0IGhhcyBiZWVuIHRlc3RlZCB3aXRoIDAuOS44emMsIDAuOS44emggYW5kIDEuMC4xdCBhcyB3ZWxsIGFzIExpYnJlU1NMIDIuMworYW5kIDIuNC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjY0NzBgLikKKworM0RFUyBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGRlZmF1bHQgY2lwaGVyIHN1aXRlcyBhbmQgQ2hhQ2hhMjAgUG9seTEzMDUKK2NpcGhlciBzdWl0ZXMgYXJlIG5vdyBpbiB0aGUgcmlnaHQgcG9zaXRpb24uCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3ODUwYCBhbmQgOmlzc3VlOmAyNzc2NmAuKQorCis6Y2xhc3M6YH5zc2wuU1NMQ29udGV4dGAgaGFzIGJldHRlciBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIG9wdGlvbnMKK2FuZCBjaXBoZXJzLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODA0M2AuKQorCitTU0wgc2Vzc2lvbiBjYW4gYmUgY29waWVkIGZyb20gb25lIGNsaWVudC1zaWRlIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgord2l0aCA6Y2xhc3M6YH5zc2wuU1NMU2Vzc2lvbmAuIFRMUyBzZXNzaW9uIHJlc3VtcHRpb24gY2FuIHNwZWVkIHVwCit0aGUgaW5pdGlhbCBoYW5kc2hha2UsIHJlZHVjZSBsYXRlbmN5IGFuZCBpbXByb3ZlIHBlcmZvcm1hbmNlCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDE5NTAwYCBiYXNlZCBvbiBhIGRyYWZ0IGJ5CitBbGV4IFdhcmhhd2suKQorCitBbGwgY29uc3RhbnRzIGFuZCBmbGFncyBoYXZlIGJlZW4gY29udmVydGVkIHRvIDpjbGFzczpgfmVudW0uSW50RW51bWAgYW5kCis6Y2xhc3M6YH5lbnVtLkludEZsYWdzYC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjgwMjVgLikKKworU2VydmVyIGFuZCBjbGllbnQtc2lkZSBzcGVjaWZpYyBUTFMgcHJvdG9jb2xzIGZvciA6Y2xhc3M6YH5zc2wuU1NMQ29udGV4dGAKK3dlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDg1YC4pCisKK0dlbmVyYWwgcmVzb3VyY2UgaWRzIChgYEdFTl9SSURgYCkgaW4gc3ViamVjdCBhbHRlcm5hdGl2ZSBuYW1lIGV4dGVuc2lvbnMKK25vIGxvbmdlciBjYXNlIGEgU3lzdGVtRXJyb3IuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3NjkxYC4pCisKK3N1YnByb2Nlc3MKKy0tLS0tLS0tLS0KKworOmNsYXNzOmBzdWJwcm9jZXNzLlBvcGVuYCBkZXN0cnVjdG9yIG5vdyBlbWl0cyBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2FybmluZworaWYgdGhlIGNoaWxkIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4gVXNlIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgKGBgd2l0aAorcHJvYzogLi4uYGApIG9yIGNhbGwgZXhwbGljaXRseSB0aGUgOm1ldGg6YH5zdWJwcm9jZXNzLlBvcGVuLndhaXRgIG1ldGhvZCB0bworcmVhZCB0aGUgZXhpdCBzdGF0dXMgb2YgdGhlIGNoaWxkIHByb2Nlc3MgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluCis6aXNzdWU6YDI2NzQxYCkuCisKK1RoZSA6Y2xhc3M6YHN1YnByb2Nlc3MuUG9wZW5gIGNvbnN0cnVjdG9yIGFuZCBhbGwgZnVuY3Rpb25zIHRoYXQgcGFzcyBhcmd1bWVudHMKK3Rocm91Z2ggdG8gaXQgbm93IGFjY2VwdCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBhcmd1bWVudHMuIFNwZWNpZnlpbmcgZWl0aGVyCitvZiB0aGVzZSB3aWxsIGVuYWJsZSB0ZXh0IG1vZGUgZm9yIHRoZSAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3RyZWFtcy4KKwordGVsbmV0bGliCistLS0tLS0tLS0KKworOmNsYXNzOmB+dGVsbmV0bGliLlRlbG5ldGAgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyIChjb250cmlidXRlZCBieQorU3TDqXBoYW5lIFdpcnRlbCBpbiA6aXNzdWU6YDI1NDg1YCkuCisKKwordGtpbnRlcgorLS0tLS0tLQorCitBZGRlZCBtZXRob2RzIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV9hZGRgLAorOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX3JlbW92ZWAgYW5kIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV9pbmZvYAoraW4gdGhlIDpjbGFzczpgdGtpbnRlci5WYXJpYWJsZWAgY2xhc3MuICBUaGV5IHJlcGxhY2Ugb2xkIG1ldGhvZHMKKzptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV92YXJpYWJsZWAsIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZWAsCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfdmRlbGV0ZWAgYW5kCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfdmluZm9gIHRoYXQgdXNlIG9ic29sZXRlIFRjbCBjb21tYW5kcyBhbmQgbWlnaHQKK25vdCB3b3JrIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBUY2wuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyMTE1YCkuCisKKworLi4gX3B5MzYtdHJhY2ViYWNrOgorCit0cmFjZWJhY2sKKy0tLS0tLS0tLQorCitCb3RoIHRoZSB0cmFjZWJhY2sgbW9kdWxlIGFuZCB0aGUgaW50ZXJwcmV0ZXIncyBidWlsdGluIGV4Y2VwdGlvbiBkaXNwbGF5IG5vdworYWJicmV2aWF0ZSBsb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBsaW5lcyBpbiB0cmFjZWJhY2tzIGFzIHNob3duIGluIHRoZQorZm9sbG93aW5nIGV4YW1wbGU6OgorCisgICAgPj4+IGRlZiBmKCk6IGYoKQorICAgIC4uLgorICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgOTk1IG1vcmUgdGltZXNdCisgICAgUmVjdXJzaW9uRXJyb3I6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkCisKKyhDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjY4MjNgLikKKworCit0eXBpbmcKKy0tLS0tLQorCitUaGUgOmNsYXNzOmB0eXBpbmcuQ29udGV4dE1hbmFnZXJgIGNsYXNzIGhhcyBiZWVuIGFkZGVkIGZvcgorcmVwcmVzZW50aW5nIDpjbGFzczpgY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyYC4KKyhDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNTYwOWAuKQorCisKK3VuaWNvZGVkYXRhCistLS0tLS0tLS0tLQorCitUaGUgaW50ZXJuYWwgZGF0YWJhc2UgaGFzIGJlZW4gdXBncmFkZWQgdG8gdXNlIFVuaWNvZGUgOS4wLjAuIChDb250cmlidXRlZCBieQorQmVuamFtaW4gUGV0ZXJzb24uKQorCisKK3VuaXR0ZXN0Lm1vY2sKKy0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfnVuaXR0ZXN0Lm1vY2suTW9ja2AgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgaW1wcm92ZW1lbnRzOgorCisqIFR3byBuZXcgbWV0aG9kcywgOm1ldGg6YE1vY2suYXNzZXJ0X2NhbGxlZCgpCisgIDx1bml0dGVzdC5tb2NrLk1vY2suYXNzZXJ0X2NhbGxlZD5gIGFuZCA6bWV0aDpgTW9jay5hc3NlcnRfY2FsbGVkX29uY2UoKQorICA8dW5pdHRlc3QubW9jay5Nb2NrLmFzc2VydF9jYWxsZWRfb25jZT5gIHRvIGNoZWNrIGlmIHRoZSBtb2NrIG9iamVjdAorICB3YXMgY2FsbGVkLgorICAoQ29udHJpYnV0ZWQgYnkgQW1pdCBTYWhhIGluIDppc3N1ZTpgMjYzMjNgLikKKworCit1cmxsaWIucmVxdWVzdAorLS0tLS0tLS0tLS0tLS0KKworSWYgYSBIVFRQIHJlcXVlc3QgaGFzIGEgZmlsZSBvciBpdGVyYWJsZSBib2R5IChvdGhlciB0aGFuIGEKK2J5dGVzIG9iamVjdCkgYnV0IG5vIENvbnRlbnQtTGVuZ3RoIGhlYWRlciwgcmF0aGVyIHRoYW4KK3Rocm93aW5nIGFuIGVycm9yLCA6Y2xhc3M6YH51cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyYCBub3cKK2ZhbGxzIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcuCisoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKwordXJsbGliLnJvYm90cGFyc2VyCistLS0tLS0tLS0tLS0tLS0tLS0KKworOmNsYXNzOmB+dXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcmAgbm93IHN1cHBvcnRzIHRoZSBgYENyYXdsLWRlbGF5YGAgYW5kCitgYFJlcXVlc3QtcmF0ZWBgIGV4dGVuc2lvbnMuCisoQ29udHJpYnV0ZWQgYnkgTmlrb2xheSBCb2dveWNoZXYgaW4gOmlzc3VlOmAxNjA5OWAuKQorCisKK3dhcm5pbmdzCistLS0tLS0tLQorCitBIG5ldyBvcHRpb25hbCAqc291cmNlKiBwYXJhbWV0ZXIgaGFzIGJlZW4gYWRkZWQgdG8gdGhlCis6ZnVuYzpgd2FybmluZ3Mud2Fybl9leHBsaWNpdGAgZnVuY3Rpb246IHRoZSBkZXN0cm95ZWQgb2JqZWN0IHdoaWNoIGVtaXR0ZWQgYQorOmV4YzpgUmVzb3VyY2VXYXJuaW5nYC4gQSAqc291cmNlKiBhdHRyaWJ1dGUgaGFzIGFsc28gYmVlbiBhZGRlZCB0bworOmNsYXNzOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAgKGNvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluCis6aXNzdWU6YDI2NTY4YCBhbmQgOmlzc3VlOmAyNjU2N2ApLgorCitXaGVuIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3YXJuaW5nIGlzIGxvZ2dlZCwgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBpcyBub3cKK3VzZWQgdG8gdHJ5IHRvIHJldHJpZXZlIHRoZSB0cmFjZWJhY2sgd2hlcmUgdGhlIGRldHJveWVkIG9iamVjdCB3YXMgYWxsb2NhdGVkLgorCitFeGFtcGxlIHdpdGggdGhlIHNjcmlwdCBgYGV4YW1wbGUucHlgYDo6CisKKyAgICBpbXBvcnQgd2FybmluZ3MKKworICAgIGRlZiBmdW5jKCk6CisgICAgICAgIHJldHVybiBvcGVuKF9fZmlsZV9fKQorCisgICAgZiA9IGZ1bmMoKQorICAgIGYgPSBOb25lCisKK091dHB1dCBvZiB0aGUgY29tbWFuZCBgYHB5dGhvbjMuNiAtV2QgLVggdHJhY2VtYWxsb2M9NSBleGFtcGxlLnB5YGA6OgorCisgICAgZXhhbXBsZS5weTo3OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPF9pby5UZXh0SU9XcmFwcGVyIG5hbWU9J2V4YW1wbGUucHknIG1vZGU9J3InIGVuY29kaW5nPSdVVEYtOCc+CisgICAgICBmID0gTm9uZQorICAgIE9iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgRmlsZSAiZXhhbXBsZS5weSIsIGxpbmVubyA0CisgICAgICAgIHJldHVybiBvcGVuKF9fZmlsZV9fKQorICAgICAgRmlsZSAiZXhhbXBsZS5weSIsIGxpbmVubyA2CisgICAgICAgIGYgPSBmdW5jKCkKKworVGhlICJPYmplY3QgYWxsb2NhdGVkIGF0IiB0cmFjZWJhY2sgaXMgbmV3IGFuZCBvbmx5IGRpc3BsYXllZCBpZgorOm1vZDpgdHJhY2VtYWxsb2NgIGlzIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgaWYgdGhlCis6bW9kOmB3YXJuaW5nc2Agd2FzIGFscmVhZHkgaW1wb3J0ZWQuCisKKword2lucmVnCistLS0tLS0KKworQWRkZWQgdGhlIDY0LWJpdCBpbnRlZ2VyIHR5cGUgOmRhdGE6YFJFR19RV09SRCA8d2lucmVnLlJFR19RV09SRD5gLgorKENvbnRyaWJ1dGVkIGJ5IENsZW1lbnQgUm91YXVsdCBpbiA6aXNzdWU6YDIzMDI2YC4pCisKKword2luc291bmQKKy0tLS0tLS0tCisKK0FsbG93ZWQga2V5d29yZCBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIDpmdW5jOmBCZWVwIDx3aW5zb3VuZC5CZWVwPmAsCis6ZnVuYzpgTWVzc2FnZUJlZXAgPHdpbnNvdW5kLk1lc3NhZ2VCZWVwPmAsIGFuZCA6ZnVuYzpgUGxheVNvdW5kCis8d2luc291bmQuUGxheVNvdW5kPmAgKDppc3N1ZTpgMjc5ODJgKS4KKworCit4bWxycGMuY2xpZW50CistLS0tLS0tLS0tLS0tCisKK1RoZSBtb2R1bGUgbm93IHN1cHBvcnRzIHVubWFyc2hhbGxpbmcgYWRkaXRpb25hbCBkYXRhIHR5cGVzIHVzZWQgYnkKK0FwYWNoZSBYTUwtUlBDIGltcGxlbWVudGF0aW9uIGZvciBudW1lcmljcyBhbmQgYGBOb25lYGAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI2ODg1YC4pCisKKworemlwZmlsZQorLS0tLS0tLQorCitBIG5ldyA6bWV0aDpgWmlwSW5mby5mcm9tX2ZpbGUoKSA8emlwZmlsZS5aaXBJbmZvLmZyb21fZmlsZT5gIGNsYXNzIG1ldGhvZAorYWxsb3dzIG1ha2luZyBhIDpjbGFzczpgfnppcGZpbGUuWmlwSW5mb2AgaW5zdGFuY2UgZnJvbSBhIGZpbGVzeXN0ZW0gZmlsZS4KK0EgbmV3IDptZXRoOmBaaXBJbmZvLmlzX2RpcigpIDx6aXBmaWxlLlppcEluZm8uaXNfZGlyPmAgbWV0aG9kIGNhbiBiZSB1c2VkCit0byBjaGVjayBpZiB0aGUgOmNsYXNzOmB+emlwZmlsZS5aaXBJbmZvYCBpbnN0YW5jZSByZXByZXNlbnRzIGEgZGlyZWN0b3J5LgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjYwMzlgLikKKworVGhlIDptZXRoOmBaaXBGaWxlLm9wZW4oKSA8emlwZmlsZS5aaXBGaWxlLm9wZW4+YCBtZXRob2QgY2FuIG5vdyBiZSB1c2VkIHRvCit3cml0ZSBkYXRhIGludG8gYSBaSVAgZmlsZSwgYXMgd2VsbCBhcyBmb3IgZXh0cmFjdGluZyBkYXRhLgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjYwMzlgLikKKworCit6bGliCistLS0tCisKK1RoZSA6ZnVuYzpgfnpsaWIuY29tcHJlc3NgIGZ1bmN0aW9uIG5vdyBhY2NlcHRzIGtleXdvcmQgYXJndW1lbnRzLgorKENvbnRyaWJ1dGVkIGJ5IEF2aXYgUGFsaXZvZGEgaW4gOmlzc3VlOmAyNjI0M2AuKQorCisKK2ZpbGVpbnB1dAorLS0tLS0tLS0tCisKKzpmdW5jOmB+ZmlsZWlucHV0Lmhvb2tfZW5jb2RlZGAgbm93IHN1cHBvcnRzIHRoZSAqZXJyb3JzKiBhcmd1bWVudC4KKyhDb250cmlidXRlZCBieSBKb3NlcGggSGFja21hbiBpbiA6aXNzdWU6YDI1Nzg4YC4pCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCisqIFRoZSBBU0NJSSBkZWNvZGVyIGlzIG5vdyB1cCB0byA2MCB0aW1lcyBhcyBmYXN0IGZvciBlcnJvciBoYW5kbGVycworICBgYHN1cnJvZ2F0ZWVzY2FwZWBgLCBgYGlnbm9yZWBgIGFuZCBgYHJlcGxhY2VgYCAoQ29udHJpYnV0ZWQKKyAgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNDg3MGApLgorCisqIFRoZSBBU0NJSSBhbmQgdGhlIExhdGluMSBlbmNvZGVycyBhcmUgbm93IHVwIHRvIDMgdGltZXMgYXMgZmFzdCBmb3IgdGhlCisgIGVycm9yIGhhbmRsZXIgYGBzdXJyb2dhdGVlc2NhcGVgYCAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTIyN2ApLgorCisqIFRoZSBVVEYtOCBlbmNvZGVyIGlzIG5vdyB1cCB0byA3NSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvciBoYW5kbGVycworICBgYGlnbm9yZWBgLCBgYHJlcGxhY2VgYCwgYGBzdXJyb2dhdGVlc2NhcGVgYCwgYGBzdXJyb2dhdGVwYXNzYGAgKENvbnRyaWJ1dGVkCisgIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUyNjdgKS4KKworKiBUaGUgVVRGLTggZGVjb2RlciBpcyBub3cgdXAgdG8gMTUgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IgaGFuZGxlcnMKKyAgYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAgYW5kIGBgc3Vycm9nYXRlZXNjYXBlYGAgKENvbnRyaWJ1dGVkCisgIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUzMDFgKS4KKworKiBgYGJ5dGVzICUgYXJnc2BgIGlzIG5vdyB1cCB0byAyIHRpbWVzIGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyCisgIGluIDppc3N1ZTpgMjUzNDlgKS4KKworKiBgYGJ5dGVhcnJheSAlIGFyZ3NgYCBpcyBub3cgYmV0d2VlbiAyLjUgYW5kIDUgdGltZXMgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkKKyAgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTM5OWApLgorCisqIE9wdGltaXplIDptZXRoOmBieXRlcy5mcm9taGV4YCBhbmQgOm1ldGg6YGJ5dGVhcnJheS5mcm9taGV4YDogdGhleSBhcmUgbm93CisgIGJldHdlZW4gMnggYW5kIDMuNXggZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTQwMWApLgorCisqIE9wdGltaXplIGBgYnl0ZXMucmVwbGFjZShiJycsIGInLicpYGAgYW5kIGBgYnl0ZWFycmF5LnJlcGxhY2UoYicnLCBiJy4nKWBgOgorICB1cCB0byA4MCUgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkgSm9zaCBTbmlkZXIgaW4gOmlzc3VlOmAyNjU3NGApLgorCisqIEFsbG9jYXRvciBmdW5jdGlvbnMgb2YgdGhlIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgZG9tYWluCisgICg6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCkgbm93IHVzZSB0aGUgOnJlZjpgcHltYWxsb2MgbWVtb3J5IGFsbG9jYXRvcgorICA8cHltYWxsb2M+YCBpbnN0ZWFkIG9mIDpjOmZ1bmM6YG1hbGxvY2AgZnVuY3Rpb24gb2YgdGhlIEMgbGlicmFyeS4gVGhlCisgIHB5bWFsbG9jIGFsbG9jYXRvciBpcyBvcHRpbWl6ZWQgZm9yIG9iamVjdHMgc21hbGxlciBvciBlcXVhbCB0byA1MTIgYnl0ZXMKKyAgd2l0aCBhIHNob3J0IGxpZmV0aW1lLCBhbmQgdXNlIDpjOmZ1bmM6YG1hbGxvY2AgZm9yIGxhcmdlciBtZW1vcnkgYmxvY2tzLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjI0OWApLgorCisqIDpmdW5jOmBwaWNrbGUubG9hZGAgYW5kIDpmdW5jOmBwaWNrbGUubG9hZHNgIGFyZSBub3cgdXAgdG8gMTAlIGZhc3RlciB3aGVuCisgIGRlc2VyaWFsaXppbmcgbWFueSBzbWFsbCBvYmplY3RzIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbgorICA6aXNzdWU6YDI3MDU2YCkuCisKKy0gUGFzc2luZyA6dGVybTpga2V5d29yZCBhcmd1bWVudHMgPGtleXdvcmQgYXJndW1lbnQ+YCB0byBhIGZ1bmN0aW9uIGhhcyBhbgorICBvdmVyaGVhZCBpbiBjb21wYXJpc29uIHdpdGggcGFzc2luZyA6dGVybTpgcG9zaXRpb25hbCBhcmd1bWVudHMKKyAgPHBvc2l0aW9uYWwgYXJndW1lbnQ+YC4gIE5vdyBpbiBleHRlbnNpb24gZnVuY3Rpb25zIGltcGxlbWVudGVkIHdpdGggdXNpbmcKKyAgQXJndW1lbnQgQ2xpbmljIHRoaXMgb3ZlcmhlYWQgaXMgc2lnbmlmaWNhbnRseSBkZWNyZWFzZWQuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjc1NzRgKS4KKworKiBPcHRpbWl6ZWQgOmZ1bmM6YH5nbG9iLmdsb2JgIGFuZCA6ZnVuYzpgfmdsb2IuaWdsb2JgIGZ1bmN0aW9ucyBpbiB0aGUKKyAgOm1vZDpgZ2xvYmAgbW9kdWxlOyB0aGV5IGFyZSBub3cgYWJvdXQgMy0tNiB0aW1lcyBmYXN0ZXIuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjU1OTZgKS4KKworKiBPcHRpbWl6ZWQgZ2xvYmJpbmcgaW4gOm1vZDpgcGF0aGxpYmAgYnkgdXNpbmcgOmZ1bmM6YG9zLnNjYW5kaXJgOworICBpdCBpcyBub3cgYWJvdXQgMS41LS00IHRpbWVzIGZhc3Rlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNjAzMmApLgorCitCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworKiBQeXRob24gbm93IHJlcXVpcmVzIHNvbWUgQzk5IHN1cHBvcnQgaW4gdGhlIHRvb2xjaGFpbiB0byBidWlsZC4gRm9yIG1vcmUKKyAgaW5mb3JtYXRpb24sIHNlZSA6cGVwOmA3YC4KKworKiBDcm9zcy1jb21waWxpbmcgQ1B5dGhvbiB3aXRoIHRoZSBBbmRyb2lkIE5ESyBhbmQgdGhlIEFuZHJvaWQgQVBJIGxldmVsIHNldCB0bworICAyMSAoQW5kcm9pZCA1LjAgTG9sbGlsb3ApIG9yIGdyZWF0ZXIsIHJ1bnMgc3VjY2Vzc2Z1bGx5LiBXaGlsZSBBbmRyb2lkIGlzIG5vdAorICB5ZXQgYSBzdXBwb3J0ZWQgcGxhdGZvcm0sIHRoZSBQeXRob24gdGVzdCBzdWl0ZSBydW5zIG9uIHRoZSBBbmRyb2lkIGVtdWxhdG9yCisgIHdpdGggb25seSBhYm91dCAxNiB0ZXN0cyBmYWlsdXJlcy4gU2VlIHRoZSBBbmRyb2lkIG1ldGEtaXNzdWUgOmlzc3VlOmAyNjg2NWAuCisKKyogVGhlIGBgLS13aXRoLW9wdGltaXphdGlvbnNgYCBjb25maWd1cmUgZmxhZyBoYXMgYmVlbiBhZGRlZC4gVHVybmluZyBpdCBvbgorICB3aWxsIGFjdGl2YXRlIExUTyBhbmQgUEdPIGJ1aWxkIHN1cHBvcnQgKHdoZW4gYXZhaWxhYmxlKS4KKyAgKE9yaWdpbmFsIHBhdGNoIGJ5IEFsZWNzYW5kcnUgUGF0cmFzY3Ugb2YgSW50ZWwgaW4gOmlzc3VlOmAyNjUzOWAuKQorCisqIE5ldyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBBUEkgd2hpY2ggaW5kaWNhdGVzIGlmIGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEKKyAgZmFpbGVkICg6aXNzdWU6YDUzMTlgKS4KKworKiA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNgIG5vdyBzdXBwb3J0cyA6cmVmOmBwb3NpdGlvbmFsLW9ubHkKKyAgcGFyYW1ldGVycyA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLiAgUG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgYXJlCisgIGRlZmluZWQgYnkgZW1wdHkgbmFtZXMuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjYyODJgKS4KKworKiBgYFB5VHJhY2ViYWNrX1ByaW50YGAgbWV0aG9kIG5vdyBhYmJyZXZpYXRlcyBsb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBsaW5lcworICBhcyBgYCJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdImBgLgorICAoQ29udHJpYnV0ZWQgYnkgRW1hbnVlbCBCYXJyeSBpbiA6aXNzdWU6YDI2ODIzYC4pCisKKworRGVwcmVjYXRlZAorPT09PT09PT09PQorCitEZXByZWNhdGVkIEJ1aWxkIE9wdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYGAtLXdpdGgtc3lzdGVtLWZmaWBgIGNvbmZpZ3VyZSBmbGFnIGlzIG5vdyBvbiBieSBkZWZhdWx0IG9uIG5vbi1PU1ggVU5JWAorcGxhdGZvcm1zLiAgSXQgbWF5IGJlIGRpc2FibGVkIGJ5IHVzaW5nIGBgLS13aXRob3V0LXN5c3RlbS1mZmlgYCwgYnV0IHVzaW5nIHRoZQorZmxhZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIG5vdCBiZSBhY2NlcHRlZCBpbiBQeXRob24gMy43LiAgT1NYIGlzIHVuYWZmZWN0ZWQKK2J5IHRoaXMgY2hhbmdlLiAgTm90ZSB0aGF0IG1hbnkgT1MgZGlzdHJpYnV0b3JzIGFscmVhZHkgdXNlIHRoZQorYGAtLXdpdGgtc3lzdGVtLWZmaWBgIGZsYWcgd2hlbiBidWlsZGluZyB0aGVpciBzeXN0ZW0gUHl0aG9uLgorCisKK05ldyBLZXl3b3JkcworLS0tLS0tLS0tLS0tCisKK2BgYXN5bmNgYCBhbmQgYGBhd2FpdGBgIGFyZSBub3QgcmVjb21tZW5kZWQgdG8gYmUgdXNlZCBhcyB2YXJpYWJsZSwgY2xhc3MsCitmdW5jdGlvbiBvciBtb2R1bGUgbmFtZXMuICBJbnRyb2R1Y2VkIGJ5IDpwZXA6YDQ5MmAgaW4gUHl0aG9uIDMuNSwgdGhleSB3aWxsCitiZWNvbWUgcHJvcGVyIGtleXdvcmRzIGluIFB5dGhvbiAzLjcuCisKKworRGVwcmVjYXRlZCBQeXRob24gbW9kdWxlcywgZnVuY3Rpb25zIGFuZCBtZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6bWV0aDpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLmxvYWRfbW9kdWxlYCBhbmQKKyAgOm1ldGg6YGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIubG9hZF9tb2R1bGVgIGFyZSBub3cKKyAgZGVwcmVjYXRlZC4gVGhleSB3ZXJlIHRoZSBvbmx5IHJlbWFpbmluZyBpbXBsZW1lbnRhdGlvbnMgb2YKKyAgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCBpbiA6bW9kOmBpbXBvcnRsaWJgIHRoYXQgaGFkIG5vdAorICBiZWVuIGRlcHJlY2F0ZWQgaW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgUHl0aG9uIGluIGZhdm91ciBvZgorICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgLgorCisqIFRoZSA6bW9kOmB0a2ludGVyLnRpeGAgbW9kdWxlIGlzIG5vdyBkZXByZWNhdGVkLiAgOm1vZDpgdGtpbnRlcmAgdXNlcnMgc2hvdWxkCisgIHVzZSA6bW9kOmB0a2ludGVyLnR0a2AgaW5zdGVhZC4KKworCitEZXByZWNhdGVkIGZ1bmN0aW9ucyBhbmQgdHlwZXMgb2YgdGhlIEMgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogTm9uZSB5ZXQuCisKKworRGVwcmVjYXRlZCBmZWF0dXJlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSBgYHB5dmVudmBgIHNjcmlwdCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBgYHB5dGhvbjMgLW0gdmVudmBgLgorICBUaGlzIHByZXZlbnRzIGNvbmZ1c2lvbiBhcyB0byB3aGF0IFB5dGhvbiBpbnRlcnByZXRlciBgYHB5dmVudmBgIGlzCisgIGNvbm5lY3RlZCB0byBhbmQgdGh1cyB3aGF0IFB5dGhvbiBpbnRlcnByZXRlciB3aWxsIGJlIHVzZWQgYnkgdGhlIHZpcnR1YWwKKyAgZW52aXJvbm1lbnQuIChDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNTE1NGAuKQorCisqIFdoZW4gcGVyZm9ybWluZyBhIHJlbGF0aXZlIGltcG9ydCwgZmFsbGluZyBiYWNrIG9uIGBgX19uYW1lX19gYCBhbmQKKyAgYGBfX3BhdGhfX2BgIGZyb20gdGhlIGNhbGxpbmcgbW9kdWxlIHdoZW4gYGBfX3NwZWNfX2BgIG9yCisgIGBgX19wYWNrYWdlX19gYCBhcmUgbm90IGRlZmluZWQgbm93IHJhaXNlcyBhbiA6ZXhjOmBJbXBvcnRXYXJuaW5nYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFJvc2UgQW1lcyBpbiA6aXNzdWU6YDI1NzkxYC4pCisKKyogVW5saWtlIHRvIG90aGVyIDptb2Q6YGRibWAgaW1wbGVtZW50YXRpb25zLCB0aGUgOm1vZDpgZGJtLmR1bWJgIG1vZHVsZQorICBjcmVhdGVzIGRhdGFiYXNlIGluIGBgJ3InYGAgYW5kIGBgJ3cnYGAgbW9kZXMgaWYgaXQgZG9lc24ndCBleGlzdCBhbmQKKyAgYWxsb3dzIG1vZGlmeWluZyBkYXRhYmFzZSBpbiBgYCdyJ2BgIG1vZGUuICBUaGlzIGJlaGF2aW9yIGlzIG5vdyBkZXByZWNhdGVkCisgIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy44LgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIxNzA4YC4pCisKKyogVW5kb2N1bWVudGVkIHN1cHBvcnQgb2YgZ2VuZXJhbCA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RzIDxieXRlcy1saWtlIG9iamVjdD5gCisgIGFzIHBhdGhzIGluIDptb2Q6YG9zYCBmdW5jdGlvbnMsIDpmdW5jOmBjb21waWxlYCBhbmQgc2ltaWxhciBmdW5jdGlvbnMgaXMKKyAgbm93IGRlcHJlY2F0ZWQuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjU3OTFgIGFuZCA6aXNzdWU6YDI2NzU0YC4pCisKKyogVGhlIHVuZG9jdW1lbnRlZCBgYGV4dHJhX3BhdGhgYCBhcmd1bWVudCB0byBhIGRpc3R1dGlscyBEaXN0cmlidXRpb24KKyAgaXMgbm93IGNvbnNpZGVyZWQKKyAgZGVwcmVjYXRlZCwgd2lsbCByYWlzZSBhIHdhcm5pbmcgZHVyaW5nIGluc3RhbGwgaWYgc2V0LiBTdXBwb3J0IGZvciB0aGlzCisgIHBhcmFtZXRlciB3aWxsIGJlIGRyb3BwZWQgaW4gYSBmdXR1cmUgUHl0aG9uIHJlbGVhc2UgYW5kIGxpa2VseSBlYXJsaWVyCisgIHRocm91Z2ggdGhpcmQgcGFydHkgdG9vbHMuIFNlZSA6aXNzdWU6YDI3OTE5YCBmb3IgZGV0YWlscy4KKworKiBBIGJhY2tzbGFzaC1jaGFyYWN0ZXIgcGFpciB0aGF0IGlzIG5vdCBhIHZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBub3cgZ2VuZXJhdGVzCisgIGEgRGVwcmVjYXRpb25XYXJuaW5nLiAgQWx0aG91Z2ggdGhpcyB3aWxsIGV2ZW50dWFsbHkgYmVjb21lIGEgU3ludGF4RXJyb3IsCisgIHRoYXQgd2lsbCBub3QgYmUgZm9yIHNldmVyYWwgUHl0aG9uIHJlbGVhc2VzLiAgKENvbnRyaWJ1dGVkIGJ5IEVtYW51ZWwgQmFycnkKKyAgaW4gOmlzc3VlOmAyNzM2NGAuKQorCisqIElubGluZSBmbGFncyBgYCg/bGV0dGVycylgYCBub3cgc2hvdWxkIGJlIHVzZWQgb25seSBhdCB0aGUgc3RhcnQgb2YgdGhlCisgIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIElubGluZSBmbGFncyBpbiB0aGUgbWlkZGxlIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24KKyAgYWZmZWN0cyBnbG9iYWwgZmxhZ3MgaW4gUHl0aG9uIDptb2Q6YHJlYCBtb2R1bGUuICBUaGlzIGlzIGFuIGV4Y2VwdGlvbiB0bworICBvdGhlciByZWd1bGFyIGV4cHJlc3Npb24gZW5naW5lcyB0aGF0IGVpdGhlciBhcHBseSBmbGFncyB0byBvbmx5IHBhcnQgb2YKKyAgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciB0cmVhdCB0aGVtIGFzIGFuIGVycm9yLiAgVG8gYXZvaWQgZGlzdGluZ3Vpc2hpbmcKKyAgaW5saW5lIGZsYWdzIGluIHRoZSBtaWRkbGUgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBub3cgZW1pdCBhIGRlcHJlY2F0aW9uCisgIHdhcm5pbmcuICBJdCB3aWxsIGJlIGFuIGVycm9yIGluIGZ1dHVyZSBQeXRob24gcmVsZWFzZXMuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjI0OTNgLikKKworKiBTU0wtcmVsYXRlZCBhcmd1bWVudHMgbGlrZSBgYGNlcnRmaWxlYGAsIGBga2V5ZmlsZWBgIGFuZCBgYGNoZWNrX2hvc3RuYW1lYGAKKyAgaW4gOm1vZDpgZnRwbGliYCwgOm1vZDpgaHR0cC5jbGllbnRgLCA6bW9kOmBpbWFwbGliYCwgOm1vZDpgcG9wbGliYCwKKyAgYW5kIDptb2Q6YHNtdHBsaWJgIGhhdmUgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBgY29udGV4dGBgLgorICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDIyYC4pCisKKyogQSBjb3VwbGUgb2YgcHJvdG9jb2xzIGFuZCBmdW5jdGlvbnMgb2YgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIGFyZSBub3cKKyAgZGVwcmVjYXRlZC4gU29tZSBmZWF0dXJlcyB3aWxsIG5vIGxvbmdlciBiZSBhdmFpbGFibGUgaW4gZnV0dXJlIHZlcnNpb25zCisgIG9mIE9wZW5TU0wuIE90aGVyIGZlYXR1cmVzIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGEgZGlmZmVyZW50IEFQSS4KKyAgKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODAyMmAgYW5kIDppc3N1ZTpgMjY0NzBgLikKKworCitEZXByZWNhdGVkIFB5dGhvbiBiZWhhdmlvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBSYWlzaW5nIHRoZSA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb24gaW5zaWRlIGEgZ2VuZXJhdG9yIHdpbGwgbm93IGdlbmVyYXRlIGEKKyAgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYCwgYW5kIHdpbGwgdHJpZ2dlciBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaW4gUHl0aG9uIDMuNy4KKyAgU2VlIDpyZWY6YHdoYXRzbmV3LXBlcC00NzlgIGZvciBkZXRhaWxzLgorCisKK1JlbW92ZWQKKz09PT09PT0KKworQVBJIGFuZCBGZWF0dXJlIFJlbW92YWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBgYGluc3BlY3QuZ2V0bW9kdWxlaW5mbygpYGAgd2FzIHJlbW92ZWQgKHdhcyBkZXByZWNhdGVkIHNpbmNlIENQeXRob24gMy4zKS4KKyAgOmZ1bmM6YGluc3BlY3QuZ2V0bW9kdWxlbmFtZWAgc2hvdWxkIGJlIHVzZWQgZm9yIG9idGFpbmluZyB0aGUgbW9kdWxlCisgIG5hbWUgZm9yIGEgZ2l2ZW4gcGF0aC4KKworKiBgYHRyYWNlYmFjay5JZ25vcmVgYCBjbGFzcyBhbmQgYGB0cmFjZWJhY2sudXNhZ2VgYCwgYGB0cmFjZWJhY2subW9kbmFtZWBgLAorICBgYHRyYWNlYmFjay5mdWxsbW9kbmFtZWBgLCBgYHRyYWNlYmFjay5maW5kX2xpbmVzX2Zyb21fY29kZWBgLAorICBgYHRyYWNlYmFjay5maW5kX2xpbmVzYGAsIGBgdHJhY2ViYWNrLmZpbmRfc3RyaW5nc2BgLAorICBgYHRyYWNlYmFjay5maW5kX2V4ZWN1dGFibGVfbGluZXNgYCBtZXRob2RzIHdlcmUgcmVtb3ZlZCBmcm9tIHRoZQorICA6bW9kOmB0cmFjZWJhY2tgIG1vZHVsZS4gVGhleSB3ZXJlIHVuZG9jdW1lbnRlZCBtZXRob2RzIGRlcHJlY2F0ZWQgc2luY2UKKyAgUHl0aG9uIDMuMiBhbmQgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSBmcm9tIHByaXZhdGUgbWV0aG9kcy4KKworKiBUaGUgYGB0a19tZW51QmFyKClgYCBhbmQgYGB0a19iaW5kRm9yVHJhdmVyc2FsKClgYCBkdW1teSBtZXRob2RzIGluCisgIDptb2Q6YHRraW50ZXJgIHdpZGdldCBjbGFzc2VzIHdlcmUgcmVtb3ZlZCAoY29ycmVzcG9uZGluZyBUayBjb21tYW5kcworICB3ZXJlIG9ic29sZXRlIHNpbmNlIFRrIDQuMCkuCisKKyogVGhlIDptZXRoOmB+emlwZmlsZS5aaXBGaWxlLm9wZW5gIG1ldGhvZCBvZiB0aGUgOmNsYXNzOmB6aXBmaWxlLlppcEZpbGVgCisgIGNsYXNzIG5vIGxvbmdlciBzdXBwb3J0cyB0aGUgYGAnVSdgYCBtb2RlICh3YXMgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMy40KS4KKyAgVXNlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZm9yIHJlYWRpbmcgY29tcHJlc3NlZCB0ZXh0IGZpbGVzIGluCisgIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUuCisKKyogVGhlIHVuZG9jdW1lbnRlZCBgYElOYGAsIGBgQ0RST01gYCwgYGBETEZDTmBgLCBgYFRZUEVTYGAsIGBgQ0RJT2BgLCBhbmQKKyAgYGBTVFJPUFRTYGAgbW9kdWxlcyBoYXZlIGJlZW4gcmVtb3ZlZC4gIFRoZXkgaGFkIGJlZW4gYXZhaWxhYmxlIGluIHRoZQorICBwbGF0Zm9ybSBzcGVjaWZpYyBgYExpYi9wbGF0LSovYGAgZGlyZWN0b3JpZXMsIGJ1dCB3ZXJlIGNocm9uaWNhbGx5IG91dCBvZgorICBkYXRlLCBpbmNvbnNpc3RlbnRseSBhdmFpbGFibGUgYWNyb3NzIHBsYXRmb3JtcywgYW5kIHVubWFpbnRhaW5lZC4gIFRoZQorICBzY3JpcHQgdGhhdCBjcmVhdGVkIHRoZXNlIG1vZHVsZXMgaXMgc3RpbGwgYXZhaWxhYmxlIGluIHRoZSBzb3VyY2UKKyAgZGlzdHJpYnV0aW9uIGF0IDpzb3VyY2U6YFRvb2xzL3NjcmlwdHMvaDJweS5weWAuCisKKworUG9ydGluZyB0byBQeXRob24gMy42Cis9PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBzZWN0aW9uIGxpc3RzIHByZXZpb3VzbHkgZGVzY3JpYmVkIGNoYW5nZXMgYW5kIG90aGVyIGJ1Z2ZpeGVzCit0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBjb2RlLgorCitDaGFuZ2VzIGluICdweXRob24nIENvbW1hbmQgQmVoYXZpb3IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSBvdXRwdXQgb2YgYSBzcGVjaWFsIFB5dGhvbiBidWlsZCB3aXRoIGRlZmluZWQgYGBDT1VOVF9BTExPQ1NgYCwKKyAgYGBTSE9XX0FMTE9DX0NPVU5UYGAgb3IgYGBTSE9XX1RSQUNLX0NPVU5UYGAgbWFjcm9zIGlzIG5vdyBvZmYgYnkKKyAgZGVmYXVsdC4gIEl0IGNhbiBiZSByZS1lbmFibGVkIHVzaW5nIHRoZSBgYC1YIHNob3dhbGxvY2NvdW50YGAgb3B0aW9uLgorICBJdCBub3cgb3V0cHV0cyB0byBgYHN0ZGVycmBgIGluc3RlYWQgb2YgYGBzdGRvdXRgYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzAzNGAuKQorCisKK0NoYW5nZXMgaW4gdGhlIFB5dGhvbiBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6bW9kOmBzcWxpdGUzYCBubyBsb25nZXIgaW1wbGljaXRseSBjb21taXQgYW4gb3BlbiB0cmFuc2FjdGlvbiBiZWZvcmUgRERMCisgIHN0YXRlbWVudHMuCisKKyogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgYmxvY2tzIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wKKyAgaXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LgorCisqIFdoZW4gOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpcyBkZWZpbmVkLAorICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBhbHNvIGJlIGRlZmluZWQuCisKKyogOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIG5vdyBzZXRzIDpleGM6YFR5cGVFcnJvcmAgd2hlbiBpdHMgKiptc2cqKgorICBhcmd1bWVudCBpcyBub3Qgc2V0LiBQcmV2aW91c2x5IG9ubHkgYGBOVUxMYGAgd2FzIHJldHVybmVkLgorCisqIFRoZSBmb3JtYXQgb2YgdGhlIGBgY29fbG5vdGFiYGAgYXR0cmlidXRlIG9mIGNvZGUgb2JqZWN0cyBjaGFuZ2VkIHRvIHN1cHBvcnQKKyAgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuIEJ5IGRlZmF1bHQsIFB5dGhvbiBkb2VzIG5vdCBlbWl0IGJ5dGVjb2RlIHdpdGgKKyAgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuIEZ1bmN0aW9ucyB1c2luZyBgYGZyYW1lLmZfbGluZW5vYGAsCisgIGBgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKClgYCBvciBgYFB5Q29kZV9BZGRyMkxpbmUoKWBgIGFyZSBub3QgYWZmZWN0ZWQuCisgIEZ1bmN0aW9ucyBkZWNvZGluZyBkaXJlY3RseSBgYGNvX2xub3RhYmBgIHNob3VsZCBiZSB1cGRhdGVkIHRvIHVzZSBhIHNpZ25lZAorICA4LWJpdCBpbnRlZ2VyIHR5cGUgZm9yIHRoZSBsaW5lIG51bWJlciBkZWx0YSwgYnV0IGl0J3Mgb25seSByZXF1aXJlZCB0bworICBzdXBwb3J0IGFwcGxpY2F0aW9ucyB1c2luZyBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4gU2VlCisgIGBgT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0YGAgZm9yIHRoZSBgYGNvX2xub3RhYmBgIGZvcm1hdCBhbmQgaG93IHRvIGRlY29kZQorICBpdCwgYW5kIHNlZSB0aGUgOnBlcDpgNTExYCBmb3IgdGhlIHJhdGlvbmFsZS4KKworKiBUaGUgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBjb21waWxlYWxsYCBtb2R1bGUgbm93IHJldHVybiBib29sZWFucyBpbnN0ZWFkCisgIG9mIGBgMWBgIG9yIGBgMGBgIHRvIHJlcHJlc2VudCBzdWNjZXNzIG9yIGZhaWx1cmUsIHJlc3BlY3RpdmVseS4gVGhhbmtzIHRvCisgIGJvb2xlYW5zIGJlaW5nIGEgc3ViY2xhc3Mgb2YgaW50ZWdlcnMsIHRoaXMgc2hvdWxkIG9ubHkgYmUgYW4gaXNzdWUgaWYgeW91CisgIHdlcmUgZG9pbmcgaWRlbnRpdHkgY2hlY2tzIGZvciBgYDFgYCBvciBgYDBgYC4gU2VlIDppc3N1ZTpgMjU3NjhgLgorCisqIFJlYWRpbmcgdGhlIDphdHRyOmB+dXJsbGliLnBhcnNlLlNwbGl0UmVzdWx0LnBvcnRgIGF0dHJpYnV0ZSBvZgorICA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybHNwbGl0YCBhbmQgOmZ1bmM6YH51cmxsaWIucGFyc2UudXJscGFyc2VgIHJlc3VsdHMKKyAgbm93IHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcywgcmF0aGVyIHRoYW4KKyAgcmV0dXJuaW5nIDpjb25zdDpgTm9uZWAuICBTZWUgOmlzc3VlOmAyMDA1OWAuCisKKyogVGhlIDptb2Q6YGltcGAgbW9kdWxlIG5vdyByYWlzZXMgYSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGluc3RlYWQgb2YKKyAgOmV4YzpgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2AuCisKKyogVGhlIGZvbGxvd2luZyBtb2R1bGVzIGhhdmUgaGFkIG1pc3NpbmcgQVBJcyBhZGRlZCB0byB0aGVpciA6YXR0cjpgX19hbGxfX2AKKyAgYXR0cmlidXRlcyB0byBtYXRjaCB0aGUgZG9jdW1lbnRlZCBBUElzOgorICA6bW9kOmBjYWxlbmRhcmAsIDptb2Q6YGNnaWAsIDptb2Q6YGNzdmAsCisgIDptb2Q6YH54bWwuZXRyZWUuRWxlbWVudFRyZWVgLCA6bW9kOmBlbnVtYCwKKyAgOm1vZDpgZmlsZWlucHV0YCwgOm1vZDpgZnRwbGliYCwgOm1vZDpgbG9nZ2luZ2AsIDptb2Q6YG1haWxib3hgLAorICA6bW9kOmBtaW1ldHlwZXNgLCA6bW9kOmBvcHRwYXJzZWAsIDptb2Q6YHBsaXN0bGliYCwgOm1vZDpgc210cGRgLAorICA6bW9kOmBzdWJwcm9jZXNzYCwgOm1vZDpgdGFyZmlsZWAsIDptb2Q6YHRocmVhZGluZ2AgYW5kCisgIDptb2Q6YHdhdmVgLiAgVGhpcyBtZWFucyB0aGV5IHdpbGwgZXhwb3J0IG5ldyBzeW1ib2xzIHdoZW4gYGBpbXBvcnQgKmBgCisgIGlzIHVzZWQuICBTZWUgOmlzc3VlOmAyMzg4M2AuCisKKyogV2hlbiBwZXJmb3JtaW5nIGEgcmVsYXRpdmUgaW1wb3J0LCBpZiBgYF9fcGFja2FnZV9fYGAgZG9lcyBub3QgY29tcGFyZSBlcXVhbAorICB0byBgYF9fc3BlY19fLnBhcmVudGBgIHRoZW4gOmV4YzpgSW1wb3J0V2FybmluZ2AgaXMgcmFpc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjU3OTFgLikKKworKiBXaGVuIGEgcmVsYXRpdmUgaW1wb3J0IGlzIHBlcmZvcm1lZCBhbmQgbm8gcGFyZW50IHBhY2thZ2UgaXMga25vd24sIHRoZW4KKyAgOmV4YzpgSW1wb3J0RXJyb3JgIHdpbGwgYmUgcmFpc2VkLiBQcmV2aW91c2x5LCA6ZXhjOmBTeXN0ZW1FcnJvcmAgY291bGQgYmUKKyAgcmFpc2VkLiAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMTgwMThgLikKKworKiBTZXJ2ZXJzIGJhc2VkIG9uIHRoZSA6bW9kOmBzb2NrZXRzZXJ2ZXJgIG1vZHVsZSwgaW5jbHVkaW5nIHRob3NlCisgIGRlZmluZWQgaW4gOm1vZDpgaHR0cC5zZXJ2ZXJgLCA6bW9kOmB4bWxycGMuc2VydmVyYCBhbmQKKyAgOm1vZDpgd3NnaXJlZi5zaW1wbGVfc2VydmVyYCwgbm93IG9ubHkgY2F0Y2ggZXhjZXB0aW9ucyBkZXJpdmVkCisgIGZyb20gOmV4YzpgRXhjZXB0aW9uYC4gVGhlcmVmb3JlIGlmIGEgcmVxdWVzdCBoYW5kbGVyIHJhaXNlcworICBhbiBleGNlcHRpb24gbGlrZSA6ZXhjOmBTeXN0ZW1FeGl0YCBvciA6ZXhjOmBLZXlib2FyZEludGVycnVwdGAsCisgIDptZXRoOmB+c29ja2V0c2VydmVyLkJhc2VTZXJ2ZXIuaGFuZGxlX2Vycm9yYCBpcyBubyBsb25nZXIgY2FsbGVkLCBhbmQKKyAgdGhlIGV4Y2VwdGlvbiB3aWxsIHN0b3AgYSBzaW5nbGUtdGhyZWFkZWQgc2VydmVyLiAoQ29udHJpYnV0ZWQgYnkKKyAgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDIzNDMwYC4pCisKKyogOmZ1bmM6YHNwd2QuZ2V0c3BuYW1gIG5vdyByYWlzZXMgYSA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgIGluc3RlYWQgb2YKKyAgOmV4YzpgS2V5RXJyb3JgIGlmIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgorCisqIFRoZSA6bWV0aDpgc29ja2V0LnNvY2tldC5jbG9zZWAgbWV0aG9kIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmCisgIGFuIGVycm9yIChlLmcuIEVCQURGKSB3YXMgcmVwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgc3lzdGVtIGNhbGwuCisgIFNlZSA6aXNzdWU6YDI2Njg1YC4KKworKiBUaGUgKmRlY29kZV9kYXRhKiBhcmd1bWVudCBmb3IgOmNsYXNzOmBzbXRwZC5TTVRQQ2hhbm5lbGAgYW5kCisgIDpjbGFzczpgc210cGQuU01UUFNlcnZlcmAgY29uc3RydWN0b3JzIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KKyAgVGhpcyBtZWFucyB0aGF0IHRoZSBhcmd1bWVudCBwYXNzZWQgdG8KKyAgOm1ldGg6YH5zbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZWAgaXMgbm93IGEgYnl0ZXMgb2JqZWN0IGJ5CisgIGRlZmF1bHQsIGFuZCBgYHByb2Nlc3NfbWVzc2FnZSgpYGAgd2lsbCBiZSBwYXNzZWQga2V5d29yZCBhcmd1bWVudHMuCisgIENvZGUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVwZGF0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBkZXByZWNhdGlvbgorICB3YXJuaW5nIGdlbmVyYXRlZCBieSAzLjUgd2lsbCBub3QgYmUgYWZmZWN0ZWQuCisKKyogQWxsIG9wdGlvbmFsIHBhcmFtZXRlcnMgb2YgdGhlIDpmdW5jOmB+anNvbi5kdW1wYCwgOmZ1bmM6YH5qc29uLmR1bXBzYCwKKyAgOmZ1bmM6YH5qc29uLmxvYWRgIGFuZCA6ZnVuYzpgfmpzb24ubG9hZHNgIGZ1bmN0aW9ucyBhbmQKKyAgOmNsYXNzOmB+anNvbi5KU09ORW5jb2RlcmAgYW5kIDpjbGFzczpgfmpzb24uSlNPTkRlY29kZXJgIGNsYXNzCisgIGNvbnN0cnVjdG9ycyBpbiB0aGUgOm1vZDpganNvbmAgbW9kdWxlIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5CisgIDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTg3MjZgLikKKworKiBBcyBwYXJ0IG9mIDpwZXA6YDQ4N2AsIHRoZSBoYW5kbGluZyBvZiBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgdG8KKyAgOmNsYXNzOmB0eXBlYCAob3RoZXIgdGhhbiB0aGUgbWV0YWNsYXNzIGhpbnQsIGBgbWV0YWNsYXNzYGApIGlzIG5vdworICBjb25zaXN0ZW50bHkgZGVsZWdhdGVkIHRvIDptZXRoOmBvYmplY3QuX19pbml0X3N1YmNsYXNzX19gLiBUaGlzIG1lYW5zIHRoYXQKKyAgOm1ldGg6YHR5cGUuX19uZXdfX2AgYW5kIDptZXRoOmB0eXBlLl9faW5pdF9fYCBib3RoIG5vdyBhY2NlcHQgYXJiaXRyYXJ5CisgIGtleXdvcmQgYXJndW1lbnRzLCBidXQgOm1ldGg6YG9iamVjdC5fX2luaXRfc3ViY2xhc3NfX2AgKHdoaWNoIGlzIGNhbGxlZCBmcm9tCisgIDptZXRoOmB0eXBlLl9fbmV3X19gKSB3aWxsIHJlamVjdCB0aGVtIGJ5IGRlZmF1bHQuIEN1c3RvbSBtZXRhY2xhc3NlcworICBhY2NlcHRpbmcgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cyB3aWxsIG5lZWQgdG8gYWRqdXN0IHRoZWlyIGNhbGxzIHRvCisgIDptZXRoOmB0eXBlLl9fbmV3X19gICh3aGV0aGVyIGRpcmVjdCBvciB2aWEgOmNsYXNzOmBzdXBlcmApIGFjY29yZGluZ2x5LgorCisqIEluIDpjbGFzczpgZGlzdHV0aWxzLmNvbW1hbmQuc2Rpc3Quc2Rpc3RgLCB0aGUgYGBkZWZhdWx0X2Zvcm1hdGBgCisgIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkIGFuZCBpcyBubyBsb25nZXIgaG9ub3JlZC4gSW5zdGVhZCwgdGhlCisgIGd6aXBwZWQgdGFyZmlsZSBmb3JtYXQgaXMgdGhlIGRlZmF1bHQgb24gYWxsIHBsYXRmb3JtcyBhbmQgbm8KKyAgcGxhdGZvcm0tc3BlY2lmaWMgc2VsZWN0aW9uIGlzIG1hZGUuCisgIEluIGVudmlyb25tZW50cyB3aGVyZSBkaXN0cmlidXRpb25zIGFyZQorICBidWlsdCBvbiBXaW5kb3dzIGFuZCB6aXAgZGlzdHJpYnV0aW9ucyBhcmUgcmVxdWlyZWQsIGNvbmZpZ3VyZQorICB0aGUgcHJvamVjdCB3aXRoIGEgYGBzZXR1cC5jZmdgYCBmaWxlIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZzo6CisKKyAgICBbc2Rpc3RdCisgICAgZm9ybWF0cz16aXAKKworICBUaGlzIGJlaGF2aW9yIGhhcyBhbHNvIGJlZW4gYmFja3BvcnRlZCB0byBlYXJsaWVyIFB5dGhvbiB2ZXJzaW9ucworICBieSBTZXR1cHRvb2xzIDI2LjAuMC4KKworKiBJbiB0aGUgOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSBhbmQgdGhlCisgIDptZXRoOmBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0YCBtZXRob2QsIGlmIG5vIENvbnRlbnQtTGVuZ3RoCisgIGhlYWRlciBmaWVsZCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIHRoZSByZXF1ZXN0IGJvZHkgaXMgYSBmaWxlIG9iamVjdCwKKyAgaXQgaXMgbm93IHNlbnQgd2l0aCBIVFRQIDEuMSBjaHVua2VkIGVuY29kaW5nLiBJZiBhIGZpbGUgb2JqZWN0IGhhcyB0bworICBiZSBzZW50IHRvIGEgSFRUUCAxLjAgc2VydmVyLCB0aGUgQ29udGVudC1MZW5ndGggdmFsdWUgbm93IGhhcyB0byBiZQorICBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4gU2VlIDppc3N1ZTpgMTIzMTlgLgorCitDaGFuZ2VzIGluIHRoZSBDIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIGFsbG9jYXRvciBmYW1pbHkgbm93IHVzZXMgdGhlIDpyZWY6YHB5bWFsbG9jIGFsbG9jYXRvcgorICA8cHltYWxsb2M+YCByYXRoZXIgdGhhbiBzeXN0ZW0gOmM6ZnVuYzpgbWFsbG9jYC4gQXBwbGljYXRpb25zIGNhbGxpbmcKKyAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCBjYW4gbm93IGNyYXNoLiBTZXQgdGhlCisgIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYGBkZWJ1Z2BgIHRvIHZhbGlkYXRlIHRoZQorICB1c2FnZSBvZiBtZW1vcnkgYWxsb2NhdG9ycyBpbiB5b3VyIGFwcGxpY2F0aW9uLiBTZWUgOmlzc3VlOmAyNjI0OWAuCisKKyogOmM6ZnVuYzpgUHlfRXhpdGAgKGFuZCB0aGUgbWFpbiBpbnRlcnByZXRlcikgbm93IG92ZXJyaWRlIHRoZSBleGl0IHN0YXR1cworICB3aXRoIDEyMCBpZiBmbHVzaGluZyBidWZmZXJlZCBkYXRhIGZhaWxlZC4gIFNlZSA6aXNzdWU6YDUzMTlgLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdCBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKaW5kZXggZWRiNTUwMi4uN2M5MjUyNCAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CkBAIC0xMSw2ICsxMSw3IEBACiAuLiB0b2N0cmVlOjoKICAgIDptYXhkZXB0aDogMgogCisgICAzLjYucnN0CiAgICAzLjUucnN0CiAgICAzLjQucnN0CiAgICAzLjMucnN0CmRpZmYgLS1naXQgYS9HcmFtbWFyL0dyYW1tYXIgYi9HcmFtbWFyL0dyYW1tYXIKaW5kZXggNDMwNzUyMy4uYjEzOWU5ZiAxMDA2NDQKLS0tIGEvR3JhbW1hci9HcmFtbWFyCisrKyBiL0dyYW1tYXIvR3JhbW1hcgpAQCAtMjcsMjUgKzI3LDMxIEBACiBmdW5jZGVmOiAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlCiAKIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCi10eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcKLSAgICAgICBbJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8ICcqKicgdGZwZGVmXV0KLSAgICAgfCAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8ICcqKicgdGZwZGVmKQordHlwZWRhcmdzbGlzdDogKHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHRmcGRlZiBbJywnXV1dCisgICAgICB8ICcqKicgdGZwZGVmIFsnLCddXV0KKyAgfCAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdGZwZGVmIFsnLCddXV0KKyAgfCAnKionIHRmcGRlZiBbJywnXSkKIHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi12YXJhcmdzbGlzdDogKHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnCi0gICAgICAgWycqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHZmcGRlZl0gfCAnKionIHZmcGRlZl1dCi0gICAgIHwgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHZmcGRlZl0gfCAnKionIHZmcGRlZikKK3ZhcmFyZ3NsaXN0OiAodmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ11dXQorICB8ICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICB8ICcqKicgdmZwZGVmIFsnLCddCispCiB2ZnBkZWY6IE5BTUUKIAogc3RtdDogc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10CiBzaW1wbGVfc3RtdDogc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXSBORVdMSU5FCiBzbWFsbF9zdG10OiAoZXhwcl9zdG10IHwgZGVsX3N0bXQgfCBwYXNzX3N0bXQgfCBmbG93X3N0bXQgfAogICAgICAgICAgICAgIGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBub25sb2NhbF9zdG10IHwgYXNzZXJ0X3N0bXQpCi1leHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CitleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYW5uYXNzaWduIHwgYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CiAgICAgICAgICAgICAgICAgICAgICAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0X3N0YXJfZXhwcikpKikKK2FubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddCiBhdWdhc3NpZ246ICgnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScgfAogICAgICAgICAgICAgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScpCi0jIEZvciBub3JtYWwgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgorIyBGb3Igbm9ybWFsIGFuZCBhbm5vdGF0ZWQgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgogZGVsX3N0bXQ6ICdkZWwnIGV4cHJsaXN0CiBwYXNzX3N0bXQ6ICdwYXNzJwogZmxvd19zdG10OiBicmVha19zdG10IHwgY29udGludWVfc3RtdCB8IHJldHVybl9zdG10IHwgcmFpc2Vfc3RtdCB8IHlpZWxkX3N0bXQKQEAgLTE0MCw3ICsxNDYsNyBAQAogICAgICAgICAgICAgJyonIHRlc3QgKQogCiBjb21wX2l0ZXI6IGNvbXBfZm9yIHwgY29tcF9pZgotY29tcF9mb3I6ICdmb3InIGV4cHJsaXN0ICdpbicgb3JfdGVzdCBbY29tcF9pdGVyXQorY29tcF9mb3I6IFtBU1lOQ10gJ2ZvcicgZXhwcmxpc3QgJ2luJyBvcl90ZXN0IFtjb21wX2l0ZXJdCiBjb21wX2lmOiAnaWYnIHRlc3Rfbm9jb25kIFtjb21wX2l0ZXJdCiAKICMgbm90IHVzZWQgaW4gZ3JhbW1hciwgYnV0IG1heSBhcHBlYXIgaW4gIm5vZGUiIHBhc3NlZCBmcm9tIFBhcnNlciB0byBDb21waWxlcgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24tYXN0LmggYi9JbmNsdWRlL1B5dGhvbi1hc3QuaAppbmRleCAyZDNlYWNiLi43MDQ5NGI3IDEwMDY0NAotLS0gYS9JbmNsdWRlL1B5dGhvbi1hc3QuaAorKysgYi9JbmNsdWRlL1B5dGhvbi1hc3QuaApAQCAtNjUsMTEgKzY1LDEyIEBACiAKIGVudW0gX3N0bXRfa2luZCB7RnVuY3Rpb25EZWZfa2luZD0xLCBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ9MiwgQ2xhc3NEZWZfa2luZD0zLAogICAgICAgICAgICAgICAgICAgUmV0dXJuX2tpbmQ9NCwgRGVsZXRlX2tpbmQ9NSwgQXNzaWduX2tpbmQ9NiwKLSAgICAgICAgICAgICAgICAgIEF1Z0Fzc2lnbl9raW5kPTcsIEZvcl9raW5kPTgsIEFzeW5jRm9yX2tpbmQ9OSwgV2hpbGVfa2luZD0xMCwKLSAgICAgICAgICAgICAgICAgIElmX2tpbmQ9MTEsIFdpdGhfa2luZD0xMiwgQXN5bmNXaXRoX2tpbmQ9MTMsIFJhaXNlX2tpbmQ9MTQsCi0gICAgICAgICAgICAgICAgICBUcnlfa2luZD0xNSwgQXNzZXJ0X2tpbmQ9MTYsIEltcG9ydF9raW5kPTE3LAotICAgICAgICAgICAgICAgICAgSW1wb3J0RnJvbV9raW5kPTE4LCBHbG9iYWxfa2luZD0xOSwgTm9ubG9jYWxfa2luZD0yMCwKLSAgICAgICAgICAgICAgICAgIEV4cHJfa2luZD0yMSwgUGFzc19raW5kPTIyLCBCcmVha19raW5kPTIzLCBDb250aW51ZV9raW5kPTI0fTsKKyAgICAgICAgICAgICAgICAgIEF1Z0Fzc2lnbl9raW5kPTcsIEFubkFzc2lnbl9raW5kPTgsIEZvcl9raW5kPTksCisgICAgICAgICAgICAgICAgICBBc3luY0Zvcl9raW5kPTEwLCBXaGlsZV9raW5kPTExLCBJZl9raW5kPTEyLCBXaXRoX2tpbmQ9MTMsCisgICAgICAgICAgICAgICAgICBBc3luY1dpdGhfa2luZD0xNCwgUmFpc2Vfa2luZD0xNSwgVHJ5X2tpbmQ9MTYsCisgICAgICAgICAgICAgICAgICBBc3NlcnRfa2luZD0xNywgSW1wb3J0X2tpbmQ9MTgsIEltcG9ydEZyb21fa2luZD0xOSwKKyAgICAgICAgICAgICAgICAgIEdsb2JhbF9raW5kPTIwLCBOb25sb2NhbF9raW5kPTIxLCBFeHByX2tpbmQ9MjIsIFBhc3Nfa2luZD0yMywKKyAgICAgICAgICAgICAgICAgIEJyZWFrX2tpbmQ9MjQsIENvbnRpbnVlX2tpbmQ9MjV9Owogc3RydWN0IF9zdG10IHsKICAgICBlbnVtIF9zdG10X2tpbmQga2luZDsKICAgICB1bmlvbiB7CkBAIC0xMTgsNiArMTE5LDEzIEBACiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB0YXJnZXQ7CisgICAgICAgICAgICBleHByX3R5IGFubm90YXRpb247CisgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgaW50IHNpbXBsZTsKKyAgICAgICAgfSBBbm5Bc3NpZ247CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgICAgICAgICBleHByX3R5IGl0ZXI7CiAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgIGFzZGxfc2VxICpvcmVsc2U7CkBAIC0yMDEsOSArMjA5LDEwIEBACiAgICAgICAgICAgICAgICAgICBTZXRDb21wX2tpbmQ9OSwgRGljdENvbXBfa2luZD0xMCwgR2VuZXJhdG9yRXhwX2tpbmQ9MTEsCiAgICAgICAgICAgICAgICAgICBBd2FpdF9raW5kPTEyLCBZaWVsZF9raW5kPTEzLCBZaWVsZEZyb21fa2luZD0xNCwKICAgICAgICAgICAgICAgICAgIENvbXBhcmVfa2luZD0xNSwgQ2FsbF9raW5kPTE2LCBOdW1fa2luZD0xNywgU3RyX2tpbmQ9MTgsCi0gICAgICAgICAgICAgICAgICBCeXRlc19raW5kPTE5LCBOYW1lQ29uc3RhbnRfa2luZD0yMCwgRWxsaXBzaXNfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTIyLCBTdWJzY3JpcHRfa2luZD0yMywgU3RhcnJlZF9raW5kPTI0LAotICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTI1LCBMaXN0X2tpbmQ9MjYsIFR1cGxlX2tpbmQ9Mjd9OworICAgICAgICAgICAgICAgICAgRm9ybWF0dGVkVmFsdWVfa2luZD0xOSwgSm9pbmVkU3RyX2tpbmQ9MjAsIEJ5dGVzX2tpbmQ9MjEsCisgICAgICAgICAgICAgICAgICBOYW1lQ29uc3RhbnRfa2luZD0yMiwgRWxsaXBzaXNfa2luZD0yMywgQ29uc3RhbnRfa2luZD0yNCwKKyAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTI1LCBTdWJzY3JpcHRfa2luZD0yNiwgU3RhcnJlZF9raW5kPTI3LAorICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTI4LCBMaXN0X2tpbmQ9MjksIFR1cGxlX2tpbmQ9MzB9Owogc3RydWN0IF9leHByIHsKICAgICBlbnVtIF9leHByX2tpbmQga2luZDsKICAgICB1bmlvbiB7CkBAIC0yOTcsNiArMzA2LDE2IEBACiAgICAgICAgIH0gU3RyOwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICBpbnQgY29udmVyc2lvbjsKKyAgICAgICAgICAgIGV4cHJfdHkgZm9ybWF0X3NwZWM7CisgICAgICAgIH0gRm9ybWF0dGVkVmFsdWU7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgYXNkbF9zZXEgKnZhbHVlczsKKyAgICAgICAgfSBKb2luZWRTdHI7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgYnl0ZXMgczsKICAgICAgICAgfSBCeXRlczsKICAgICAgICAgCkBAIC0zMDUsNiArMzI0LDEwIEBACiAgICAgICAgIH0gTmFtZUNvbnN0YW50OwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGNvbnN0YW50IHZhbHVlOworICAgICAgICB9IENvbnN0YW50OworICAgICAgICAKKyAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAgICAgICAgICAgICBpZGVudGlmaWVyIGF0dHI7CiAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwpAQCAtMzY2LDYgKzM4OSw3IEBACiAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgZXhwcl90eSBpdGVyOwogICAgIGFzZGxfc2VxICppZnM7CisgICAgaW50IGlzX2FzeW5jOwogfTsKIAogZW51bSBfZXhjZXB0aGFuZGxlcl9raW5kIHtFeGNlcHRIYW5kbGVyX2tpbmQ9MX07CkBAIC00NDYsNiArNDcwLDkgQEAKICNkZWZpbmUgQXVnQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9BdWdBc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIHN0bXRfdHkgX1B5X0F1Z0Fzc2lnbihleHByX3R5IHRhcmdldCwgb3BlcmF0b3JfdHkgb3AsIGV4cHJfdHkgdmFsdWUsIGludAogICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQW5uQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfQW5uQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQorc3RtdF90eSBfUHlfQW5uQXNzaWduKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGFubm90YXRpb24sIGV4cHJfdHkgdmFsdWUsIGludAorICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQogc3RtdF90eSBfUHlfRm9yKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKgogICAgICAgICAgICAgICAgIG9yZWxzZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTU0Myw2ICs1NzAsMTIgQEAKIGV4cHJfdHkgX1B5X051bShvYmplY3QgbiwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfU3RyKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfU3RyKHN0cmluZyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBGb3JtYXR0ZWRWYWx1ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfRm9ybWF0dGVkVmFsdWUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKK2V4cHJfdHkgX1B5X0Zvcm1hdHRlZFZhbHVlKGV4cHJfdHkgdmFsdWUsIGludCBjb252ZXJzaW9uLCBleHByX3R5IGZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgSm9pbmVkU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfSm9pbmVkU3RyKGEwLCBhMSwgYTIsIGEzKQorZXhwcl90eSBfUHlfSm9pbmVkU3RyKGFzZGxfc2VxICogdmFsdWVzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEJ5dGVzKGEwLCBhMSwgYTIsIGEzKSBfUHlfQnl0ZXMoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9CeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBOYW1lQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpIF9QeV9OYW1lQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpCkBAIC01NTAsNiArNTgzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJlbmEpOwogI2RlZmluZSBFbGxpcHNpcyhhMCwgYTEsIGEyKSBfUHlfRWxsaXBzaXMoYTAsIGExLCBhMikKIGV4cHJfdHkgX1B5X0VsbGlwc2lzKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIENvbnN0YW50KGEwLCBhMSwgYTIsIGEzKSBfUHlfQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9Db25zdGFudChjb25zdGFudCB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKKyAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEF0dHJpYnV0ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCiBleHByX3R5IF9QeV9BdHRyaWJ1dGUoZXhwcl90eSB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHRfdHkgY3R4LCBpbnQKICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CkBAIC01NzQsOSArNjEwLDkgQEAKIHNsaWNlX3R5IF9QeV9FeHRTbGljZShhc2RsX3NlcSAqIGRpbXMsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgSW5kZXgoYTAsIGExKSBfUHlfSW5kZXgoYTAsIGExKQogc2xpY2VfdHkgX1B5X0luZGV4KGV4cHJfdHkgdmFsdWUsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMykgX1B5X2NvbXByZWhlbnNpb24oYTAsIGExLCBhMiwgYTMpCisjZGVmaW5lIGNvbXByZWhlbnNpb24oYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMywgYTQpCiBjb21wcmVoZW5zaW9uX3R5IF9QeV9jb21wcmVoZW5zaW9uKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZzLCBQeUFyZW5hICphcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcywgaW50IGlzX2FzeW5jLCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEV4Y2VwdEhhbmRsZXIoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0V4Y2VwdEhhbmRsZXIoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4Y2VwdGhhbmRsZXJfdHkgX1B5X0V4Y2VwdEhhbmRsZXIoZXhwcl90eSB0eXBlLCBpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLmggYi9JbmNsdWRlL1B5dGhvbi5oCmluZGV4IDg1OGRiZDEuLjRjN2M5YTQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLmgKKysrIGIvSW5jbHVkZS9QeXRob24uaApAQCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSAicHlsaWZlY3ljbGUuaCIKICNpbmNsdWRlICJjZXZhbC5oIgogI2luY2x1ZGUgInN5c21vZHVsZS5oIgorI2luY2x1ZGUgIm9zbW9kdWxlLmgiCiAjaW5jbHVkZSAiaW50cmNoZWNrLmgiCiAjaW5jbHVkZSAiaW1wb3J0LmgiCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYWJzdHJhY3QuaCBiL0luY2x1ZGUvYWJzdHJhY3QuaAppbmRleCAzNmRmNWE3Li40NDEwN2E4IDEwMDY0NAotLS0gYS9JbmNsdWRlL2Fic3RyYWN0LmgKKysrIGIvSW5jbHVkZS9hYnN0cmFjdC5oCkBAIC03LDcgKzcsOSBAQAogI2lmZGVmIFBZX1NTSVpFX1RfQ0xFQU4KICNkZWZpbmUgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKICNkZWZpbmUgUHlPYmplY3RfQ2FsbE1ldGhvZCBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2RlZmluZSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBBYnN0cmFjdCBPYmplY3QgSW50ZXJmYWNlIChtYW55IHRoYW5rcyB0byBKaW0gRnVsdG9uKSAqLwpAQCAtMjY0LDE4ICsyNjYsOTYgQEAKICAgICAgICAqLwogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqY2FsbGFibGVfb2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncyk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5U3RhY2tfQXNUdXBsZSgKKyAgICAgICAgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncyk7CisKKyAgICAvKiBDb252ZXJ0IGtleXdvcmQgYXJndW1lbnRzIGZyb20gdGhlIChzdGFjaywga3duYW1lcykgZm9ybWF0IHRvIGEgUHl0aG9uCisgICAgICAgZGljdGlvbmFyeS4KKworICAgICAgIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUuIGt3bmFtZXMgaXMgbm90IGNoZWNrZWQsIHVzdWFsbHkgdGhlc2UgY2hlY2tzIGFyZSBkb25lIGJlZm9yZSBvciBsYXRlcgorICAgICAgIGNhbGxpbmcgX1B5U3RhY2tfQXNEaWN0KCkuIEZvciBleGFtcGxlLCBfUHlBcmdfUGFyc2VTdGFjaygpIHJhaXNlcyBhbgorICAgICAgIGVycm9yIGlmIGEga2V5IGlzIG5vdCBhIHN0cmluZy4gKi8KKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN0YWNrX0FzRGljdCgKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZXMsCisgICAgICAgIFB5T2JqZWN0ICprd25hbWVzKTsKKworICAgIC8qIENvbnZlcnQgKGFyZ3MsIG5hcmdzLCBrd2FyZ3MpIGludG8gYSAoc3RhY2ssIG5hcmdzLCBrd25hbWVzKS4KKworICAgICAgIFJldHVybiBhIG5ldyBzdGFjayB3aGljaCBzaG91bGQgYmUgcmVsZWFzZWQgYnkgUHlNZW1fRnJlZSgpLCBvciByZXR1cm4KKyAgICAgICBhcmdzIHVuY2hhbmdlZCBpZiBrd2FyZ3MgaXMgTlVMTCBvciBhbiBlbXB0eSBkaWN0aW9uYXJ5LgorCisgICAgICAgVGhlIHN0YWNrIHVzZXMgYm9ycm93ZWQgcmVmZXJlbmNlcy4KKworICAgICAgIFRoZSB0eXBlIG9mIGtleXdvcmQga2V5cyBpcyBub3QgY2hlY2tlZCwgdGhlc2UgY2hlY2tzIHNob3VsZCBiZSBkb25lCisgICAgICAgbGF0ZXIgKGV4OiBfUHlBcmdfUGFyc2VTdGFjaykuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKikgX1B5U3RhY2tfVW5wYWNrRGljdCgKKyAgICAgICAgUHlPYmplY3QgKiphcmdzLAorICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICBQeU9iamVjdCAqa3dhcmdzLAorICAgICAgICBQeU9iamVjdCAqKmt3bmFtZXMsCisgICAgICAgIFB5T2JqZWN0ICpmdW5jKTsKKworICAgIC8qIENhbGwgdGhlIGNhbGxhYmxlIG9iamVjdCBmdW5jIHdpdGggdGhlICJmYXN0IGNhbGwiIGNhbGxpbmcgY29udmVudGlvbjoKKyAgICAgICBhcmdzIGlzIGEgQyBhcnJheSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudHMgKG5hcmdzIGlzIHRoZSBudW1iZXIgb2YKKyAgICAgICBwb3NpdGlvbmFsIGFyZ3VtZW50cyksIGt3YXJncyBpcyBhIGRpY3Rpb25hcnkgZm9yIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgSWYgbmFyZ3MgaXMgZXF1YWwgdG8gemVybywgYXJncyBjYW4gYmUgTlVMTC4ga3dhcmdzIGNhbiBiZSBOVUxMLgorICAgICAgIG5hcmdzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byB6ZXJvLgorCisgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIG9uIHJldHVybiBOVUxMIG9uCisgICAgICAgZXJyb3IuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpOworCisgICAgLyogQ2FsbCB0aGUgY2FsbGFibGUgb2JqZWN0IGZ1bmMgd2l0aCB0aGUgImZhc3QgY2FsbCIgY2FsbGluZyBjb252ZW50aW9uOgorICAgICAgIGFyZ3MgaXMgYSBDIGFycmF5IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50cyBmb2xsb3dlZCBieSB2YWx1ZXMgb2YKKyAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4gS2V5cyBvZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3RvcmVkIGFzIGEgdHVwbGUKKyAgICAgICBvZiBzdHJpbmdzIGluIGt3bmFtZXMuIG5hcmdzIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGF0CisgICAgICAgdGhlIGJlZ2lubmluZyBvZiBzdGFjay4gVGhlIHNpemUgb2Yga3duYW1lcyBnaXZlcyB0aGUgbnVtYmVyIG9mIGtleXdvcmQKKyAgICAgICB2YWx1ZXMgaW4gdGhlIHN0YWNrIGFmdGVyIHBvc2l0aW9uYWwgYXJndW1lbnRzLgorCisgICAgICAga3duYW1lcyBtdXN0IG9ubHkgY29udGFpbnMgc3RyIHN0cmluZ3MsIG5vIHN1YmNsYXNzLCBhbmQgYWxsIGtleXMgbXVzdAorICAgICAgIGJlIHVuaXF1ZS4KKworICAgICAgIElmIG5hcmdzIGlzIGVxdWFsIHRvIHplcm8gYW5kIHRoZXJlIGlzIG5vIGtleXdvcmQgYXJndW1lbnQgKGt3bmFtZXMgaXMKKyAgICAgICBOVUxMIG9yIGl0cyBzaXplIGlzIHplcm8pLCBhcmdzIGNhbiBiZSBOVUxMLgorCisgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbgorICAgICAgIGVycm9yLiAqLworICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0Zhc3RDYWxsS2V5d29yZHMKKyAgICAgICAoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgIFB5T2JqZWN0ICoqYXJncywKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgUHlPYmplY3QgKmt3bmFtZXMpOworCisjZGVmaW5lIF9QeU9iamVjdF9GYXN0Q2FsbChmdW5jLCBhcmdzLCBuYXJncykgXAorICAgIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoKGZ1bmMpLCAoYXJncyksIChuYXJncyksIE5VTEwpCisKKyNkZWZpbmUgX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKSBcCisgICAgX1B5T2JqZWN0X0Zhc3RDYWxsKChmdW5jKSwgTlVMTCwgMCkKKworI2RlZmluZSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgYXJnKSBcCisgICAgX1B5T2JqZWN0X0Zhc3RDYWxsKChmdW5jKSwgJihhcmcpLCAxKQorCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncyk7CisKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChQeU9iamVjdCAqZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKndoZXJlKTsKLSNlbmRpZgorI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICAgIC8qCiAgICAgIENhbGwgYSBjYWxsYWJsZSBQeXRob24gb2JqZWN0LCBjYWxsYWJsZV9vYmplY3QsIHdpdGgKICAgICAgYXJndW1lbnRzIGFuZCBrZXl3b3JkcyBhcmd1bWVudHMuICBUaGUgJ2FyZ3MnIGFyZ3VtZW50IGNhbiBub3QgYmUKLSAgICAgTlVMTCwgYnV0IHRoZSAna3cnIGFyZ3VtZW50IGNhbiBiZSBOVUxMLgorICAgICBOVUxMLgogICAgICAgICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsT2JqZWN0KFB5T2JqZWN0ICpjYWxsYWJsZV9vYmplY3QsCkBAIC0zMTUsNiArMzk1LDcgQEAKICAgICAgUHl0aG9uIGV4cHJlc3Npb246IG8ubWV0aG9kKGFyZ3MpLgogICAgICAgICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKQEAgLTMyMyw2ICs0MDQsNyBAQAogICAgICAgICAgTGlrZSBQeU9iamVjdF9DYWxsTWV0aG9kLCBidXQgZXhwZWN0IGEgX1B5X0lkZW50aWZpZXIqIGFzIHRoZQogICAgICAgICAgbWV0aG9kIG5hbWUuCiAgICAgICAgKi8KKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LApAQCAtMzMxLDEwICs0MTMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0lkZW50aWZpZXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CkBAIC0zNTAsOSArNDM0LDExIEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWV0aG9kLCAuLi4pOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICAgIC8qCiAgICAgIENhbGwgdGhlIG1ldGhvZCBuYW1lZCBtIG9mIG9iamVjdCBvIHdpdGggYSB2YXJpYWJsZSBudW1iZXIgb2YKQEAgLTEyNzAsMTMgKzEzNTYsMTMgQEAKIFB5QVBJX0ZVTkMoY2hhciAqY29uc3QgKikgX1B5U2VxdWVuY2VfQnl0ZXNUb0NoYXJwQXJyYXkoUHlPYmplY3QqIHNlbGYpOwogCiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9GcmVlQ2hhclBBcnJheShjaGFyICpjb25zdCBhcnJheVtdKTsKLSNlbmRpZgogCiAvKiBGb3IgaW50ZXJuYWwgdXNlIGJ5IGJ1ZmZlciBBUEkgZnVuY3Rpb25zICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9hZGRfb25lX3RvX2luZGV4X0YoaW50IG5kLCBQeV9zc2l6ZV90ICppbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9hZGRfb25lX3RvX2luZGV4X0MoaW50IG5kLCBQeV9zc2l6ZV90ICppbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2FzZGwuaCBiL0luY2x1ZGUvYXNkbC5oCmluZGV4IDQ5NTE1M2MuLjM1ZTlmYTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYXNkbC5oCisrKyBiL0luY2x1ZGUvYXNkbC5oCkBAIC02LDYgKzYsNyBAQAogdHlwZWRlZiBQeU9iamVjdCAqIGJ5dGVzOwogdHlwZWRlZiBQeU9iamVjdCAqIG9iamVjdDsKIHR5cGVkZWYgUHlPYmplY3QgKiBzaW5nbGV0b247Cit0eXBlZGVmIFB5T2JqZWN0ICogY29uc3RhbnQ7CiAKIC8qIEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGFzZGxfYy5weSB3YXMgY29tcGxldGVseQogICAgaW5kZXBlbmRlbnQgb2YgUHl0aG9uLCBidXQgaXQgaXMgYSBnb2FsIHRoZSByZXF1aXJlcyB0b28gbXVjaCB3b3JrCmRpZmYgLS1naXQgYS9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBiL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCmluZGV4IDExZDVmNDIuLjdmYTc1NDAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCisrKyBiL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCkBAIC0xNyw5ICsxNywxOCBAQAogLyogVGhlc2Ugc3RvcmUgdGhlaXIgbGVuIHNpemVkIGFuc3dlciBpbiB0aGUgZ2l2ZW4gcHJlYWxsb2NhdGVkICpyZXN1bHQgYXJnLiAqLwogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX2xvd2VyKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqY3B0ciwgUHlfc3NpemVfdCBsZW4pOwogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3VwcGVyKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqY3B0ciwgUHlfc3NpemVfdCBsZW4pOwotZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3RpdGxlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOwotZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7Ci1leHRlcm4gdm9pZCBfUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7CitleHRlcm4gdm9pZCBfUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7CitleHRlcm4gdm9pZCBfUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIF9QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKKworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19pbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19yZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19yaW5kZXgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfY291bnQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIGludCBfUHlfYnl0ZXNfY29udGFpbnMoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19zdGFydHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX2VuZHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKIAogLyogVGhlIG1ha2V0cmFucygpIHN0YXRpYyBtZXRob2QuICovCiBleHRlcm4gUHlPYmplY3QqIF9QeV9ieXRlc19tYWtldHJhbnMoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pOwpAQCAtMzcsNyArNDYsMTkgQEAKIGV4dGVybiBjb25zdCBjaGFyIF9QeV90aXRsZV9fZG9jX19bXTsKIGV4dGVybiBjb25zdCBjaGFyIF9QeV9jYXBpdGFsaXplX19kb2NfX1tdOwogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3N3YXBjYXNlX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2NvdW50X19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2ZpbmRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfaW5kZXhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmZpbmRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmluZGV4X19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3N0YXJ0c3dpdGhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfZW5kc3dpdGhfX2RvY19fW107CiBleHRlcm4gY29uc3QgY2hhciBfUHlfbWFrZXRyYW5zX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2V4cGFuZHRhYnNfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfbGp1c3RfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmp1c3RfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfY2VudGVyX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3pmaWxsX19kb2NfX1tdOwogCiAvKiB0aGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgZG9jcyBhcmUgc2hhcmVkIGZyb20gdGhlIC5vLCBub3Qgc3RhdGljICovCiAjZGVmaW5lIFB5RG9jX1NUUlZBUl9zaGFyZWQobmFtZSxzdHIpIGNvbnN0IGNoYXIgbmFtZVtdID0gUHlEb2NfU1RSKHN0cikKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaCBiL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAppbmRleCA2YzFlMGMzLi4xMWQ4MjE4IDEwMDY0NAotLS0gYS9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCkBAIC02Miw3ICs2MiwxNCBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVzX0NvbmNhdEFuZERlbChQeU9iamVjdCAqKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5Qnl0ZXNfUmVzaXplKFB5T2JqZWN0ICoqLCBQeV9zc2l6ZV90KTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNfRm9ybWF0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeUJ5dGVzX0Zvcm1hdEV4KAorICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAgICBQeV9zc2l6ZV90IGZvcm1hdF9sZW4sCisgICAgUHlPYmplY3QgKmFyZ3MsCisgICAgaW50IHVzZV9ieXRlYXJyYXkpOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeUJ5dGVzX0Zyb21IZXgoCisgICAgUHlPYmplY3QgKnN0cmluZywKKyAgICBpbnQgdXNlX2J5dGVhcnJheSk7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LApAQCAtMTIzLDYgKzEzMCw4NyBAQAogI2RlZmluZSBGX0FMVAkoMTw8MykKICNkZWZpbmUgRl9aRVJPCSgxPDw0KQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBUaGUgX1B5Qnl0ZXNXcml0ZXIgc3RydWN0dXJlIGlzIGJpZzogaXQgY29udGFpbnMgYW4gZW1iZWRkZWQgInN0YWNrIGJ1ZmZlciIuCisgICBBIF9QeUJ5dGVzV3JpdGVyIHZhcmlhYmxlIG11c3QgYmUgZGVjbGFyZWQgYXQgdGhlIGVuZCBvZiB2YXJpYWJsZXMgaW4gYQorICAgZnVuY3Rpb24gdG8gb3B0aW1pemUgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG9uIHRoZSBzdGFjay4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICAvKiBieXRlcywgYnl0ZWFycmF5IG9yIE5VTEwgKHdoZW4gdGhlIHNtYWxsIGJ1ZmZlciBpcyB1c2VkKSAqLworICAgIFB5T2JqZWN0ICpidWZmZXI7CisKKyAgICAvKiBOdW1iZXIgb2YgYWxsb2NhdGVkIHNpemUuICovCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7CisKKyAgICAvKiBNaW5pbXVtIG51bWJlciBvZiBhbGxvY2F0ZWQgYnl0ZXMsCisgICAgICAgaW5jcmVtZW50ZWQgYnkgX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgpICovCisgICAgUHlfc3NpemVfdCBtaW5fc2l6ZTsKKworICAgIC8qIElmIG5vbi16ZXJvLCB1c2UgYSBieXRlYXJyYXkgaW5zdGVhZCBvZiBhIGJ5dGVzIG9iamVjdCBmb3IgYnVmZmVyLiAqLworICAgIGludCB1c2VfYnl0ZWFycmF5OworCisgICAgLyogSWYgbm9uLXplcm8sIG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIChkZWZhdWx0OiAwKS4KKyAgICAgICBUaGlzIGZsYWcgbXVzdCBiZSB6ZXJvIGlmIHVzZV9ieXRlYXJyYXkgaXMgbm9uLXplcm8uICovCisgICAgaW50IG92ZXJhbGxvY2F0ZTsKKworICAgIC8qIFN0YWNrIGJ1ZmZlciAqLworICAgIGludCB1c2Vfc21hbGxfYnVmZmVyOworICAgIGNoYXIgc21hbGxfYnVmZmVyWzUxMl07Cit9IF9QeUJ5dGVzV3JpdGVyOworCisvKiBJbml0aWFsaXplIGEgYnl0ZXMgd3JpdGVyCisKKyAgIEJ5IGRlZmF1bHQsIHRoZSBvdmVyYWxsb2NhdGlvbiBpcyBkaXNhYmxlZC4gU2V0IHRoZSBvdmVyYWxsb2NhdGUgYXR0cmlidXRlCisgICB0byBjb250cm9sIHRoZSBhbGxvY2F0aW9uIG9mIHRoZSBidWZmZXIuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeUJ5dGVzV3JpdGVyX0luaXQoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcik7CisKKy8qIEdldCB0aGUgYnVmZmVyIGNvbnRlbnQgYW5kIHJlc2V0IHRoZSB3cml0ZXIuCisgICBSZXR1cm4gYSBieXRlcyBvYmplY3QsIG9yIGEgYnl0ZWFycmF5IG9iamVjdCBpZiB1c2VfYnl0ZWFycmF5IGlzIG5vbi16ZXJvLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyKTsKKworLyogRGVhbGxvY2F0ZSBtZW1vcnkgb2YgYSB3cml0ZXIgKGNsZWFyIGl0cyBpbnRlcm5hbCBidWZmZXIpLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpOworCisvKiBBbGxvY2F0ZSB0aGUgYnVmZmVyIHRvIHdyaXRlIHNpemUgYnl0ZXMuCisgICBSZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiBidWZmZXIgZGF0YS4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlCeXRlc1dyaXRlcl9BbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIEVuc3VyZSB0aGF0IHRoZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoIHRvIHdyaXRlICpzaXplKiBieXRlcy4KKyAgIEFkZCBzaXplIHRvIHRoZSB3cml0ZXIgbWluaW11bSBzaXplIChtaW5fc2l6ZSBhdHRyaWJ1dGUpLgorCisgICBzdHIgaXMgdGhlIGN1cnJlbnQgcG9pbnRlciBpbnNpZGUgdGhlIGJ1ZmZlci4KKyAgIFJldHVybiB0aGUgdXBkYXRlZCBjdXJyZW50IHBvaW50ZXIgaW5zaWRlIHRoZSBidWZmZXIuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIHZvaWQgKnN0ciwKKyAgICBQeV9zc2l6ZV90IHNpemUpOworCisvKiBSZXNpemUgdGhlIGJ1ZmZlciB0byBtYWtlIGl0IGxhcmdlci4KKyAgIFRoZSBuZXcgYnVmZmVyIG1heSBiZSBsYXJnZXIgdGhhbiBzaXplIGJ5dGVzIGJlY2F1c2Ugb2Ygb3ZlcmFsbG9jYXRpb24uCisgICBSZXR1cm4gdGhlIHVwZGF0ZWQgY3VycmVudCBwb2ludGVyIGluc2lkZSB0aGUgYnVmZmVyLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4KKworICAgTm90ZTogc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGFsbG9jYXRlZCBieXRlcyBpbiB0aGUgd3JpdGVyLgorCisgICBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgdXNlIHRoZSB3cml0ZXIgbWluaW11bSBzaXplIChtaW5fc2l6ZSBhdHRyaWJ1dGUpLgorCisgICBTZWUgYWxzbyBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCkuCisgICAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIFdyaXRlIGJ5dGVzLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkModm9pZCopIF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICB2b2lkICpzdHIsCisgICAgY29uc3Qgdm9pZCAqYnl0ZXMsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKyNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NldmFsLmggYi9JbmNsdWRlL2NldmFsLmgKaW5kZXggYjUzNzNhOS4uODljNjA2MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jZXZhbC5oCisrKyBiL0luY2x1ZGUvY2V2YWwuaApAQCAtOCw3ICs4LDcgQEAKIC8qIEludGVyZmFjZSB0byByYW5kb20gcGFydHMgaW4gY2V2YWwuYyAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKAotICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworICAgIFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncyk7CiAKIC8qIElubGluZSB0aGlzICovCiAjZGVmaW5lIFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsYXJnKSBcCkBAIC0yNSw2ICsyNSwxMCBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfU2V0VHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9TZXRDb3JvdXRpbmVXcmFwcGVyKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFdmFsX0dldENvcm91dGluZVdyYXBwZXIodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0QXN5bmNHZW5GaXJzdGl0ZXIoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0QXN5bmNHZW5GaXJzdGl0ZXIodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0QXN5bmNHZW5GaW5hbGl6ZXIodm9pZCk7CiAjZW5kaWYKIAogc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KQEAgLTExOSw2ICsxMjMsOSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUV2YWxfR2V0Q2FsbFN0YXRzKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUV2YWxfRXZhbEZyYW1lKHN0cnVjdCBfZnJhbWUgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9FdmFsRnJhbWVFeChzdHJ1Y3QgX2ZyYW1lICpmLCBpbnQgZXhjKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KHN0cnVjdCBfZnJhbWUgKmYsIGludCBleGMpOworI2VuZGlmCiAKIC8qIEludGVyZmFjZSBmb3IgdGhyZWFkcy4KIApAQCAtMTcyLDcgKzE3OSw5IEBACiAKIFB5QVBJX0ZVTkMoaW50KSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX0luaXRUaHJlYWRzKHZvaWQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX0ZpbmlUaHJlYWRzKHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfQWNxdWlyZUxvY2sodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9SZWxlYXNlTG9jayh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX0FjcXVpcmVUaHJlYWQoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKQEAgLTE4NCw2ICsxOTMsMTAgQEAKIFB5QVBJX0ZVTkModW5zaWduZWQgbG9uZykgX1B5RXZhbF9HZXRTd2l0Y2hJbnRlcnZhbCh2b2lkKTsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeUV2YWxfUmVxdWVzdENvZGVFeHRyYUluZGV4KGZyZWVmdW5jKTsKKyNlbmRpZgorCiAjZGVmaW5lIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgeyBcCiAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpfc2F2ZTsgXAogICAgICAgICAgICAgICAgICAgICAgICAgX3NhdmUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpOwpAQCAtMjA2LDYgKzIxOSwxNCBAQAogUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX1NpZ25hbEFzeW5jRXhjKHZvaWQpOwogI2VuZGlmCiAKKy8qIE1hc2tzIGFuZCB2YWx1ZXMgdXNlZCBieSBGT1JNQVRfVkFMVUUgb3Bjb2RlLiAqLworI2RlZmluZSBGVkNfTUFTSyAgICAgIDB4MworI2RlZmluZSBGVkNfTk9ORSAgICAgIDB4MAorI2RlZmluZSBGVkNfU1RSICAgICAgIDB4MQorI2RlZmluZSBGVkNfUkVQUiAgICAgIDB4MgorI2RlZmluZSBGVkNfQVNDSUkgICAgIDB4MworI2RlZmluZSBGVlNfTUFTSyAgICAgIDB4NAorI2RlZmluZSBGVlNfSEFWRV9TUEVDIDB4NAogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZS5oIGIvSW5jbHVkZS9jb2RlLmgKaW5kZXggOGVjZjM4YS4uMDYxOTAyOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlLmgKKysrIGIvSW5jbHVkZS9jb2RlLmgKQEAgLTcsNiArNywxNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAordHlwZWRlZiB1aW50MTZfdCBfUHlfQ09ERVVOSVQ7CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgIGRlZmluZSBfUHlfT1BDT0RFKHdvcmQpICgod29yZCkgPj4gOCkKKyMgIGRlZmluZSBfUHlfT1BBUkcod29yZCkgKCh3b3JkKSAmIDI1NSkKKyNlbHNlCisjICBkZWZpbmUgX1B5X09QQ09ERSh3b3JkKSAoKHdvcmQpICYgMjU1KQorIyAgZGVmaW5lIF9QeV9PUEFSRyh3b3JkKSAoKHdvcmQpID4+IDgpCisjZW5kaWYKKwogLyogQnl0ZWNvZGUgb2JqZWN0ICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMTUsNiArMjUsNyBAQAogICAgIGludCBjb19ubG9jYWxzOwkJLyogI2xvY2FsIHZhcmlhYmxlcyAqLwogICAgIGludCBjb19zdGFja3NpemU7CQkvKiAjZW50cmllcyBuZWVkZWQgZm9yIGV2YWx1YXRpb24gc3RhY2sgKi8KICAgICBpbnQgY29fZmxhZ3M7CQkvKiBDT18uLi4sIHNlZSBiZWxvdyAqLworICAgIGludCBjb19maXJzdGxpbmVubzsgICAvKiBmaXJzdCBzb3VyY2UgbGluZSBudW1iZXIgKi8KICAgICBQeU9iamVjdCAqY29fY29kZTsJCS8qIGluc3RydWN0aW9uIG9wY29kZXMgKi8KICAgICBQeU9iamVjdCAqY29fY29uc3RzOwkvKiBsaXN0IChjb25zdGFudHMgdXNlZCkgKi8KICAgICBQeU9iamVjdCAqY29fbmFtZXM7CQkvKiBsaXN0IG9mIHN0cmluZ3MgKG5hbWVzIHVzZWQpICovCkBAIC0zMCwxMSArNDEsMTQgQEAKICAgICB1bnNpZ25lZCBjaGFyICpjb19jZWxsMmFyZzsgLyogTWFwcyBjZWxsIHZhcnMgd2hpY2ggYXJlIGFyZ3VtZW50cy4gKi8KICAgICBQeU9iamVjdCAqY29fZmlsZW5hbWU7CS8qIHVuaWNvZGUgKHdoZXJlIGl0IHdhcyBsb2FkZWQgZnJvbSkgKi8KICAgICBQeU9iamVjdCAqY29fbmFtZTsJCS8qIHVuaWNvZGUgKG5hbWUsIGZvciByZWZlcmVuY2UpICovCi0gICAgaW50IGNvX2ZpcnN0bGluZW5vOwkJLyogZmlyc3Qgc291cmNlIGxpbmUgbnVtYmVyICovCiAgICAgUHlPYmplY3QgKmNvX2xub3RhYjsJLyogc3RyaW5nIChlbmNvZGluZyBhZGRyPC0+bGluZW5vIG1hcHBpbmcpIFNlZQogCQkJCSAgIE9iamVjdHMvbG5vdGFiX25vdGVzLnR4dCBmb3IgZGV0YWlscy4gKi8KICAgICB2b2lkICpjb196b21iaWVmcmFtZTsgICAgIC8qIGZvciBvcHRpbWl6YXRpb24gb25seSAoc2VlIGZyYW1lb2JqZWN0LmMpICovCiAgICAgUHlPYmplY3QgKmNvX3dlYWtyZWZsaXN0OyAgIC8qIHRvIHN1cHBvcnQgd2Vha3JlZnMgdG8gY29kZSBvYmplY3RzICovCisgICAgLyogU2NyYXRjaCBzcGFjZSBmb3IgZXh0cmEgZGF0YSByZWxhdGluZyB0byB0aGUgY29kZSBvYmplY3QuX19pY2NfbmFuCisgICAgICAgVHlwZSBpcyBhIHZvaWQqIHRvIGtlZXAgdGhlIGZvcm1hdCBwcml2YXRlIGluIGNvZGVvYmplY3QuYyB0byBmb3JjZQorICAgICAgIHBlb3BsZSB0byBnbyB0aHJvdWdoIHRoZSBwcm9wZXIgQVBJcy4gKi8KKyAgICB2b2lkICpjb19leHRyYTsKIH0gUHlDb2RlT2JqZWN0OwogCiAvKiBNYXNrcyBmb3IgY29fZmxhZ3MgYWJvdmUgKi8KQEAgLTU1LDYgKzY5LDcgQEAKICAgIGBgYXN5bmMgZGVmYGAga2V5d29yZHMpICovCiAjZGVmaW5lIENPX0NPUk9VVElORSAgICAgICAgICAgIDB4MDA4MAogI2RlZmluZSBDT19JVEVSQUJMRV9DT1JPVVRJTkUgICAweDAxMDAKKyNkZWZpbmUgQ09fQVNZTkNfR0VORVJBVE9SICAgICAgMHgwMjAwCiAKIC8qIFRoZXNlIGFyZSBubyBsb25nZXIgdXNlZC4gKi8KICNpZiAwCkBAIC0xMjYsNyArMTQxLDE1IEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5Q29kZV9PcHRpbWl6ZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QqIGNvbnN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzLCBQeU9iamVjdCAqbGluZW5vX29iaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKmxub3RhYik7CisKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhpbnQpIF9QeUNvZGVfR2V0RXh0cmEoUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqZXh0cmEpOworUHlBUElfRlVOQyhpbnQpIF9QeUNvZGVfU2V0RXh0cmEoUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpleHRyYSk7CisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2RhdGV0aW1lLmggYi9JbmNsdWRlL2RhdGV0aW1lLmgKaW5kZXggMDZjYmM0YS4uM2JmMzVjYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kYXRldGltZS5oCisrKyBiL0luY2x1ZGUvZGF0ZXRpbWUuaApAQCAtODEsNiArODEsNyBAQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgICBfUHlEYXRlVGltZV9USU1FSEVBRAorICAgIHVuc2lnbmVkIGNoYXIgZm9sZDsKICAgICBQeU9iamVjdCAqdHppbmZvOwogfSBQeURhdGVUaW1lX1RpbWU7ICAgICAgICAgICAgICAvKiBoYXN0emluZm8gdHJ1ZSAqLwogCkBAIC0xMDgsNiArMTA5LDcgQEAKIHR5cGVkZWYgc3RydWN0CiB7CiAgICAgX1B5RGF0ZVRpbWVfREFURVRJTUVIRUFECisgICAgdW5zaWduZWQgY2hhciBmb2xkOwogICAgIFB5T2JqZWN0ICp0emluZm87CiB9IFB5RGF0ZVRpbWVfRGF0ZVRpbWU7ICAgICAgICAgIC8qIGhhc3R6aW5mbyB0cnVlICovCiAKQEAgLTEyNSw2ICsxMjcsNyBAQAogICAgICgoKChQeURhdGVUaW1lX0RhdGVUaW1lKilvKS0+ZGF0YVs3XSA8PCAxNikgfCAgICAgICBcCiAgICAgICgoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUqKW8pLT5kYXRhWzhdIDw8IDgpICB8ICAgICAgIFwKICAgICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmRhdGFbOV0pCisjZGVmaW5lIFB5RGF0ZVRpbWVfREFURV9HRVRfRk9MRChvKSAgICAgICAgKCgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmZvbGQpCiAKIC8qIEFwcGx5IGZvciB0aW1lIGluc3RhbmNlcy4gKi8KICNkZWZpbmUgUHlEYXRlVGltZV9USU1FX0dFVF9IT1VSKG8pICAgICAgICAoKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzBdKQpAQCAtMTM0LDYgKzEzNyw3IEBACiAgICAgKCgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbM10gPDwgMTYpIHwgICAgICAgICAgIFwKICAgICAgKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVs0XSA8PCA4KSAgfCAgICAgICAgICAgXAogICAgICAgKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzVdKQorI2RlZmluZSBQeURhdGVUaW1lX1RJTUVfR0VUX0ZPTEQobykgICAgICAgICgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmZvbGQpCiAKIC8qIEFwcGx5IGZvciB0aW1lIGRlbHRhIGluc3RhbmNlcyAqLwogI2RlZmluZSBQeURhdGVUaW1lX0RFTFRBX0dFVF9EQVlTKG8pICAgICAgICAgKCgoUHlEYXRlVGltZV9EZWx0YSopbyktPmRheXMpCkBAIC0xNjIsNiArMTY2LDExIEBACiAgICAgUHlPYmplY3QgKigqRGF0ZVRpbWVfRnJvbVRpbWVzdGFtcCkoUHlPYmplY3QqLCBQeU9iamVjdCosIFB5T2JqZWN0Kik7CiAgICAgUHlPYmplY3QgKigqRGF0ZV9Gcm9tVGltZXN0YW1wKShQeU9iamVjdCosIFB5T2JqZWN0Kik7CiAKKyAgICAvKiBQRVAgNDk1IGNvbnN0cnVjdG9ycyAqLworICAgIFB5T2JqZWN0ICooKkRhdGVUaW1lX0Zyb21EYXRlQW5kVGltZUFuZEZvbGQpKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKKyAgICAgICAgUHlPYmplY3QqLCBpbnQsIFB5VHlwZU9iamVjdCopOworICAgIFB5T2JqZWN0ICooKlRpbWVfRnJvbVRpbWVBbmRGb2xkKShpbnQsIGludCwgaW50LCBpbnQsIFB5T2JqZWN0KiwgaW50LCBQeVR5cGVPYmplY3QqKTsKKwogfSBQeURhdGVUaW1lX0NBUEk7CiAKICNkZWZpbmUgUHlEYXRlVGltZV9DQVBTVUxFX05BTUUgImRhdGV0aW1lLmRhdGV0aW1lX0NBUEkiCkBAIC0yMTcsMTAgKzIyNiwxOCBAQAogICAgIFB5RGF0ZVRpbWVBUEktPkRhdGVUaW1lX0Zyb21EYXRlQW5kVGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBcCiAgICAgICAgIG1pbiwgc2VjLCB1c2VjLCBQeV9Ob25lLCBQeURhdGVUaW1lQVBJLT5EYXRlVGltZVR5cGUpCiAKKyNkZWZpbmUgUHlEYXRlVGltZV9Gcm9tRGF0ZUFuZFRpbWVBbmRGb2xkKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbiwgc2VjLCB1c2VjLCBmb2xkKSBcCisgICAgUHlEYXRlVGltZUFQSS0+RGF0ZVRpbWVfRnJvbURhdGVBbmRUaW1lQW5kRm9sZCh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBcCisgICAgICAgIG1pbiwgc2VjLCB1c2VjLCBQeV9Ob25lLCBmb2xkLCBQeURhdGVUaW1lQVBJLT5EYXRlVGltZVR5cGUpCisKICNkZWZpbmUgUHlUaW1lX0Zyb21UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kKSBcCiAgICAgUHlEYXRlVGltZUFQSS0+VGltZV9Gcm9tVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgXAogICAgICAgICBQeV9Ob25lLCBQeURhdGVUaW1lQVBJLT5UaW1lVHlwZSkKIAorI2RlZmluZSBQeVRpbWVfRnJvbVRpbWVBbmRGb2xkKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBmb2xkKSBcCisgICAgUHlEYXRlVGltZUFQSS0+VGltZV9Gcm9tVGltZUFuZEZvbGQoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIFwKKyAgICAgICAgUHlfTm9uZSwgZm9sZCwgUHlEYXRlVGltZUFQSS0+VGltZVR5cGUpCisKICNkZWZpbmUgUHlEZWx0YV9Gcm9tRFNVKGRheXMsIHNlY29uZHMsIHVzZWNvbmRzKSBcCiAgICAgUHlEYXRlVGltZUFQSS0+RGVsdGFfRnJvbURlbHRhKGRheXMsIHNlY29uZHMsIHVzZWNvbmRzLCAxLCBcCiAgICAgICAgIFB5RGF0ZVRpbWVBUEktPkRlbHRhVHlwZSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaCBiL0luY2x1ZGUvZGVzY3JvYmplY3QuaAppbmRleCBlMmJhOTdmLi44ZjNlODRjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCkBAIC03OCw3ICs3OCw5IEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlNZXRob2REZXNjcl9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5V3JhcHBlckRlc2NyX1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlEaWN0UHJveHlfVHlwZTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlNZXRob2RXcmFwcGVyX1R5cGU7CisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURlc2NyX05ld01ldGhvZChQeVR5cGVPYmplY3QgKiwgUHlNZXRob2REZWYgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2QoUHlUeXBlT2JqZWN0ICosIFB5TWV0aG9kRGVmICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kaWN0b2JqZWN0LmggYi9JbmNsdWRlL2RpY3RvYmplY3QuaAppbmRleCBiYTkwYWFmLi5mMDZmMjQwIDEwMDY0NAotLS0gYS9JbmNsdWRlL2RpY3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2RpY3RvYmplY3QuaApAQCAtMjIsOCArMjIsMjEgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKKworICAgIC8qIE51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqLwogICAgIFB5X3NzaXplX3QgbWFfdXNlZDsKKworICAgIC8qIERpY3Rpb25hcnkgdmVyc2lvbjogZ2xvYmFsbHkgdW5pcXVlLCB2YWx1ZSBjaGFuZ2UgZWFjaCB0aW1lCisgICAgICAgdGhlIGRpY3Rpb25hcnkgaXMgbW9kaWZpZWQgKi8KKyAgICB1aW50NjRfdCBtYV92ZXJzaW9uX3RhZzsKKwogICAgIFB5RGljdEtleXNPYmplY3QgKm1hX2tleXM7CisKKyAgICAvKiBJZiBtYV92YWx1ZXMgaXMgTlVMTCwgdGhlIHRhYmxlIGlzICJjb21iaW5lZCI6IGtleXMgYW5kIHZhbHVlcworICAgICAgIGFyZSBzdG9yZWQgaW4gbWFfa2V5cy4KKworICAgICAgIElmIG1hX3ZhbHVlcyBpcyBub3QgTlVMTCwgdGhlIHRhYmxlIGlzIHNwbGl0dGVkOgorICAgICAgIGtleXMgYXJlIHN0b3JlZCBpbiBtYV9rZXlzIGFuZCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiBtYV92YWx1ZXMgKi8KICAgICBQeU9iamVjdCAqKm1hX3ZhbHVlczsKIH0gUHlEaWN0T2JqZWN0OwogCkBAIC02MCw5ICs3Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCk7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9TZXREZWZhdWx0KAogICAgIFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmF1bHRvYmopOwogI2VuZGlmCkBAIC0xMTksNiArMTMyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdmVycmlkZSk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIExpa2UgUHlEaWN0X01lcmdlLCBidXQgb3ZlcnJpZGUgY2FuIGJlIDAsIDEgb3IgMi4gIElmIG92ZXJyaWRlIGlzIDAsCisgICB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIGtleSB3aW5zLCBpZiBvdmVycmlkZSBpcyAxLCB0aGUgbGFzdCBvY2N1cnJlbmNlCisgICBvZiBhIGtleSB3aW5zLCBpZiBvdmVycmlkZSBpcyAyLCBhIEtleUVycm9yIHdpdGggY29uZmxpY3Rpbmcga2V5IGFzCisgICBhcmd1bWVudCBpcyByYWlzZWQuCisqLworUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfTWVyZ2VFeChQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICpvdGhlciwgaW50IG92ZXJyaWRlKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdFZpZXdfSW50ZXJzZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqb3RoZXIpOwogI2VuZGlmCiAKQEAgLTEzMiw5ICsxNTEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcnJpZGUpOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXksIFB5T2JqZWN0ICppdGVtKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X1NldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXkpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZpbGVvYmplY3QuaCBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCmluZGV4IDAzMTU1ZDMuLjAzOTg0YmEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCkBAIC0yMyw2ICsyMyw3IEBACiAgICBJZiBub24tTlVMTCwgdGhpcyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgZGVmYXVsdCBlbmNvZGluZyBmb3Igc3RyaW5ncwogKi8KIFB5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nOworUHlBUElfREFUQShjb25zdCBjaGFyICopIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzOwogUHlBUElfREFUQShpbnQpIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc7CiAKIC8qIEludGVybmFsIEFQSQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9maWxldXRpbHMuaCBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKaW5kZXggYjRhNjgzYy4uNDAxNjQzMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9maWxldXRpbHMuaAorKysgYi9JbmNsdWRlL2ZpbGV1dGlscy5oCkBAIC01LDggKzUsNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfZGV2aWNlX2VuY29kaW5nKGludCk7Ci0KIFB5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9EZWNvZGVMb2NhbGUoCiAgICAgY29uc3QgY2hhciAqYXJnLAogICAgIHNpemVfdCAqc2l6ZSk7CkBAIC0xNyw2ICsxNSw4IEBACiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfZGV2aWNlX2VuY29kaW5nKGludCk7CisKICNpZmRlZiBNU19XSU5ET1dTCiBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHsKICAgICB1bnNpZ25lZCBsb25nIHN0X2RldjsKQEAgLTQ2LDEzICs0NiwxMSBAQAogUHlBUElfRlVOQyhpbnQpIF9QeV9mc3RhdF9ub3JhaXNlKAogICAgIGludCBmZCwKICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpzdGF0dXMpOwotI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfRlVOQyhpbnQpIF9QeV9zdGF0KAogICAgIFB5T2JqZWN0ICpwYXRoLAogICAgIHN0cnVjdCBzdGF0ICpzdGF0dXMpOwogCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5X29wZW4oCiAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsCiAgICAgaW50IGZsYWdzKTsKQEAgLTYwLDcgKzU4LDYgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfb3Blbl9ub3JhaXNlKAogICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAogICAgIGludCBmbGFncyk7Ci0jZW5kaWYKIAogUHlBUElfRlVOQyhGSUxFICopIF9QeV93Zm9wZW4oCiAgICAgY29uc3Qgd2NoYXJfdCAqcGF0aCwKQEAgLTEwNyw3ICsxMDQsNiBAQAogICAgIHdjaGFyX3QgKmJ1ZiwKICAgICBzaXplX3Qgc2l6ZSk7CiAKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlfZ2V0X2luaGVyaXRhYmxlKGludCBmZCk7CiAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc2V0X2luaGVyaXRhYmxlKGludCBmZCwgaW50IGluaGVyaXRhYmxlLApAQCAtMTIxLDE4ICsxMTcsNiBAQAogUHlBUElfRlVOQyhpbnQpIF9QeV9zZXRfYmxvY2tpbmcoaW50IGZkLCBpbnQgYmxvY2tpbmcpOwogI2VuZGlmICAgLyogIU1TX1dJTkRPV1MgKi8KIAotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAKLS8qIEEgcm91dGluZSB0byBjaGVjayBpZiBhIGZpbGUgZGVzY3JpcHRvciBpcyB2YWxpZCBvbiBXaW5kb3dzLiAgUmV0dXJucyAwCi0gKiBhbmQgc2V0cyBlcnJubyB0byBFQkFERiBpZiBpdCBpc24ndC4gIFRoaXMgaXMgdG8gYXZvaWQgQXNzZXJ0aW9ucwotICogZnJvbSB2YXJpb3VzIGZ1bmN0aW9ucyBpbiB0aGUgV2luZG93cyBDUlQgYmVnaW5uaW5nIHdpdGgKLSAqIFZpc3VhbCBTdHVkaW8gMjAwNQotICovCi1pbnQgX1B5VmVyaWZ5X2ZkKGludCBmZCk7Ci0KLSNlbHNlCi0jZGVmaW5lIF9QeVZlcmlmeV9mZChBKSAoMSkgLyogZHVtbXkgKi8KLSNlbmRpZgotCiAjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmxvYXRvYmplY3QuaCBiL0luY2x1ZGUvZmxvYXRvYmplY3QuaAppbmRleCBlMjQwZmRiLi5mMTA0NGQ2IDEwMDY0NAotLS0gYS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mbG9hdG9iamVjdC5oCkBAIC03NCw5ICs3NCw5IEBACiAgKiBoYXBwZW5zIGluIHN1Y2ggY2FzZXMgaXMgcGFydGx5IGFjY2lkZW50YWwgKGFsYXMpLgogICovCiAKLS8qIFRoZSBwYWNrIHJvdXRpbmVzIHdyaXRlIDQgb3IgOCBieXRlcywgc3RhcnRpbmcgYXQgcC4gIGxlIGlzIGEgYm9vbAorLyogVGhlIHBhY2sgcm91dGluZXMgd3JpdGUgMiwgNCBvciA4IGJ5dGVzLCBzdGFydGluZyBhdCBwLiAgbGUgaXMgYSBib29sCiAgKiBhcmd1bWVudCwgdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgc3RyaW5nIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0IChleHBvbmVudAotICogbGFzdCwgYXQgcCszIG9yIHArNyksIGZhbHNlIGlmIHlvdSB3YW50IGJpZy1lbmRpYW4gZm9ybWF0IChleHBvbmVudAorICogbGFzdCwgYXQgcCsxLCBwKzMgb3IgcCs3KSwgZmFsc2UgaWYgeW91IHdhbnQgYmlnLWVuZGlhbiBmb3JtYXQgKGV4cG9uZW50CiAgKiBmaXJzdCwgYXQgcCkuCiAgKiBSZXR1cm4gdmFsdWU6ICAwIGlmIGFsbCBpcyBPSywgLTEgaWYgZXJyb3IgKGFuZCBhbiBleGNlcHRpb24gaXMKICAqIHNldCwgbW9zdCBsaWtlbHkgT3ZlcmZsb3dFcnJvcikuCkBAIC04NCw2ICs4NCw3IEBACiAgKiAxKTogIFdoYXQgdGhpcyBkb2VzIGlzIHVuZGVmaW5lZCBpZiB4IGlzIGEgTmFOIG9yIGluZmluaXR5LgogICogMik6ICAtMC4wIGFuZCArMC4wIHByb2R1Y2UgdGhlIHNhbWUgc3RyaW5nLgogICovCitQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfUGFjazIoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiBQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfUGFjazQoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiBQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfUGFjazgoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiAKQEAgLTk2LDE0ICs5NywxNSBAQAogUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X0RpZ2l0cyhjaGFyICpidWYsIGRvdWJsZSB2LCBpbnQgKnNpZ251bSk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUZsb2F0X0RpZ2l0c0luaXQodm9pZCk7CiAKLS8qIFRoZSB1bnBhY2sgcm91dGluZXMgcmVhZCA0IG9yIDggYnl0ZXMsIHN0YXJ0aW5nIGF0IHAuICBsZSBpcyBhIGJvb2wKKy8qIFRoZSB1bnBhY2sgcm91dGluZXMgcmVhZCAyLCA0IG9yIDggYnl0ZXMsIHN0YXJ0aW5nIGF0IHAuICBsZSBpcyBhIGJvb2wKICAqIGFyZ3VtZW50LCB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQgKGV4cG9uZW50Ci0gKiBsYXN0LCBhdCBwKzMgb3IgcCs3KSwgZmFsc2UgaWYgYmlnLWVuZGlhbiAoZXhwb25lbnQgZmlyc3QsIGF0IHApLgorICogbGFzdCwgYXQgcCsxLCBwKzMgb3IgcCs3KSwgZmFsc2UgaWYgYmlnLWVuZGlhbiAoZXhwb25lbnQgZmlyc3QsIGF0IHApLgogICogUmV0dXJuIHZhbHVlOiAgVGhlIHVucGFja2VkIGRvdWJsZS4gIE9uIGVycm9yLCB0aGlzIGlzIC0xLjAgYW5kCiAgKiBQeUVycl9PY2N1cnJlZCgpIGlzIHRydWUgKGFuZCBhbiBleGNlcHRpb24gaXMgc2V0LCBtb3N0IGxpa2VseQogICogT3ZlcmZsb3dFcnJvcikuICBOb3RlIHRoYXQgb24gYSBub24tSUVFRSBwbGF0Zm9ybSB0aGlzIHdpbGwgcmVmdXNlCiAgKiB0byB1bnBhY2sgYSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIGEgTmFOIG9yIGluZmluaXR5LgogICovCitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5RmxvYXRfVW5wYWNrMihjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogUHlBUElfRlVOQyhkb3VibGUpIF9QeUZsb2F0X1VucGFjazQoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKTsKIFB5QVBJX0ZVTkMoZG91YmxlKSBfUHlGbG9hdF9VbnBhY2s4KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZnVuY29iamVjdC5oIGIvSW5jbHVkZS9mdW5jb2JqZWN0LmgKaW5kZXggY2MxNDI2Yy4uNzdiYjhjMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mdW5jb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mdW5jb2JqZWN0LmgKQEAgLTU4LDYgKzU4LDIwIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fR2V0QW5ub3RhdGlvbnMoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucyhQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlGdW5jdGlvbl9GYXN0Q2FsbERpY3QoCisgICAgUHlPYmplY3QgKmZ1bmMsCisgICAgUHlPYmplY3QgKiphcmdzLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3YXJncyk7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcygKKyAgICBQeU9iamVjdCAqZnVuYywKKyAgICBQeU9iamVjdCAqKnN0YWNrLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3bmFtZXMpOworI2VuZGlmCisKIC8qIE1hY3JvcyBmb3IgZGlyZWN0IGFjY2VzcyB0byB0aGVzZSB2YWx1ZXMuIFR5cGUgY2hlY2tzIGFyZSAqbm90KgogICAgZG9uZSwgc28gdXNlIHdpdGggY2FyZS4gKi8KICNkZWZpbmUgUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKSBcCmRpZmYgLS1naXQgYS9JbmNsdWRlL2dlbm9iamVjdC5oIGIvSW5jbHVkZS9nZW5vYmplY3QuaAppbmRleCAxZmYzMmE4Li45NzNiZGQ1IDEwMDY0NAotLS0gYS9JbmNsdWRlL2dlbm9iamVjdC5oCisrKyBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKQEAgLTYxLDYgKzYxLDM3IEBACiBQeU9iamVjdCAqX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKFB5T2JqZWN0ICpvKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDb3JvX05ldyhzdHJ1Y3QgX2ZyYW1lICosCiAgICAgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSk7CisKKy8qIEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBfUHlHZW5PYmplY3RfSEVBRChhZykKKyAgICBQeU9iamVjdCAqYWdfZmluYWxpemVyOworCisgICAgLyogRmxhZyBpcyBzZXQgdG8gMSB3aGVuIGhvb2tzIHNldCB1cCBieSBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tzCisgICAgICAgd2VyZSBjYWxsZWQgb24gdGhlIGdlbmVyYXRvciwgdG8gYXZvaWQgY2FsbGluZyB0aGVtIG1vcmUKKyAgICAgICB0aGFuIG9uY2UuICovCisgICAgaW50IGFnX2hvb2tzX2luaXRlZDsKKworICAgIC8qIEZsYWcgaXMgc2V0IHRvIDEgd2hlbiBhY2xvc2UoKSBpcyBjYWxsZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCBvcgorICAgICAgIHdoZW4gYSBTdG9wQXN5bmNJdGVyYXRpb24gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKi8KKyAgICBpbnQgYWdfY2xvc2VkOworfSBQeUFzeW5jR2VuT2JqZWN0OworCitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlBc3luY0dlbl9UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeUFzeW5jR2VuQVNlbmRfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeUFzeW5jR2VuQVRocm93X1R5cGU7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlBc3luY0dlbl9OZXcoc3RydWN0IF9mcmFtZSAqLAorICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpOworCisjZGVmaW5lIFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeUFzeW5jR2VuX1R5cGUpCisKK1B5T2JqZWN0ICpfUHlBc3luY0dlblZhbHVlV3JhcHBlck5ldyhQeU9iamVjdCAqKTsKKworaW50IFB5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHModm9pZCk7CisKICNlbmRpZgogCiAjdW5kZWYgX1B5R2VuT2JqZWN0X0hFQUQKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbWluaXQuaCBiL0luY2x1ZGUvZ3JhbWluaXQuaAppbmRleCBkMDMwYmMzLi5lOWI0YTkzIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dyYW1pbml0LmgKKysrIGIvSW5jbHVkZS9ncmFtaW5pdC5oCkBAIC0xNyw3MSArMTcsNzIgQEAKICNkZWZpbmUgc2ltcGxlX3N0bXQgMjcwCiAjZGVmaW5lIHNtYWxsX3N0bXQgMjcxCiAjZGVmaW5lIGV4cHJfc3RtdCAyNzIKLSNkZWZpbmUgdGVzdGxpc3Rfc3Rhcl9leHByIDI3MwotI2RlZmluZSBhdWdhc3NpZ24gMjc0Ci0jZGVmaW5lIGRlbF9zdG10IDI3NQotI2RlZmluZSBwYXNzX3N0bXQgMjc2Ci0jZGVmaW5lIGZsb3dfc3RtdCAyNzcKLSNkZWZpbmUgYnJlYWtfc3RtdCAyNzgKLSNkZWZpbmUgY29udGludWVfc3RtdCAyNzkKLSNkZWZpbmUgcmV0dXJuX3N0bXQgMjgwCi0jZGVmaW5lIHlpZWxkX3N0bXQgMjgxCi0jZGVmaW5lIHJhaXNlX3N0bXQgMjgyCi0jZGVmaW5lIGltcG9ydF9zdG10IDI4MwotI2RlZmluZSBpbXBvcnRfbmFtZSAyODQKLSNkZWZpbmUgaW1wb3J0X2Zyb20gMjg1Ci0jZGVmaW5lIGltcG9ydF9hc19uYW1lIDI4NgotI2RlZmluZSBkb3R0ZWRfYXNfbmFtZSAyODcKLSNkZWZpbmUgaW1wb3J0X2FzX25hbWVzIDI4OAotI2RlZmluZSBkb3R0ZWRfYXNfbmFtZXMgMjg5Ci0jZGVmaW5lIGRvdHRlZF9uYW1lIDI5MAotI2RlZmluZSBnbG9iYWxfc3RtdCAyOTEKLSNkZWZpbmUgbm9ubG9jYWxfc3RtdCAyOTIKLSNkZWZpbmUgYXNzZXJ0X3N0bXQgMjkzCi0jZGVmaW5lIGNvbXBvdW5kX3N0bXQgMjk0Ci0jZGVmaW5lIGFzeW5jX3N0bXQgMjk1Ci0jZGVmaW5lIGlmX3N0bXQgMjk2Ci0jZGVmaW5lIHdoaWxlX3N0bXQgMjk3Ci0jZGVmaW5lIGZvcl9zdG10IDI5OAotI2RlZmluZSB0cnlfc3RtdCAyOTkKLSNkZWZpbmUgd2l0aF9zdG10IDMwMAotI2RlZmluZSB3aXRoX2l0ZW0gMzAxCi0jZGVmaW5lIGV4Y2VwdF9jbGF1c2UgMzAyCi0jZGVmaW5lIHN1aXRlIDMwMwotI2RlZmluZSB0ZXN0IDMwNAotI2RlZmluZSB0ZXN0X25vY29uZCAzMDUKLSNkZWZpbmUgbGFtYmRlZiAzMDYKLSNkZWZpbmUgbGFtYmRlZl9ub2NvbmQgMzA3Ci0jZGVmaW5lIG9yX3Rlc3QgMzA4Ci0jZGVmaW5lIGFuZF90ZXN0IDMwOQotI2RlZmluZSBub3RfdGVzdCAzMTAKLSNkZWZpbmUgY29tcGFyaXNvbiAzMTEKLSNkZWZpbmUgY29tcF9vcCAzMTIKLSNkZWZpbmUgc3Rhcl9leHByIDMxMwotI2RlZmluZSBleHByIDMxNAotI2RlZmluZSB4b3JfZXhwciAzMTUKLSNkZWZpbmUgYW5kX2V4cHIgMzE2Ci0jZGVmaW5lIHNoaWZ0X2V4cHIgMzE3Ci0jZGVmaW5lIGFyaXRoX2V4cHIgMzE4Ci0jZGVmaW5lIHRlcm0gMzE5Ci0jZGVmaW5lIGZhY3RvciAzMjAKLSNkZWZpbmUgcG93ZXIgMzIxCi0jZGVmaW5lIGF0b21fZXhwciAzMjIKLSNkZWZpbmUgYXRvbSAzMjMKLSNkZWZpbmUgdGVzdGxpc3RfY29tcCAzMjQKLSNkZWZpbmUgdHJhaWxlciAzMjUKLSNkZWZpbmUgc3Vic2NyaXB0bGlzdCAzMjYKLSNkZWZpbmUgc3Vic2NyaXB0IDMyNwotI2RlZmluZSBzbGljZW9wIDMyOAotI2RlZmluZSBleHBybGlzdCAzMjkKLSNkZWZpbmUgdGVzdGxpc3QgMzMwCi0jZGVmaW5lIGRpY3RvcnNldG1ha2VyIDMzMQotI2RlZmluZSBjbGFzc2RlZiAzMzIKLSNkZWZpbmUgYXJnbGlzdCAzMzMKLSNkZWZpbmUgYXJndW1lbnQgMzM0Ci0jZGVmaW5lIGNvbXBfaXRlciAzMzUKLSNkZWZpbmUgY29tcF9mb3IgMzM2Ci0jZGVmaW5lIGNvbXBfaWYgMzM3Ci0jZGVmaW5lIGVuY29kaW5nX2RlY2wgMzM4Ci0jZGVmaW5lIHlpZWxkX2V4cHIgMzM5Ci0jZGVmaW5lIHlpZWxkX2FyZyAzNDAKKyNkZWZpbmUgYW5uYXNzaWduIDI3MworI2RlZmluZSB0ZXN0bGlzdF9zdGFyX2V4cHIgMjc0CisjZGVmaW5lIGF1Z2Fzc2lnbiAyNzUKKyNkZWZpbmUgZGVsX3N0bXQgMjc2CisjZGVmaW5lIHBhc3Nfc3RtdCAyNzcKKyNkZWZpbmUgZmxvd19zdG10IDI3OAorI2RlZmluZSBicmVha19zdG10IDI3OQorI2RlZmluZSBjb250aW51ZV9zdG10IDI4MAorI2RlZmluZSByZXR1cm5fc3RtdCAyODEKKyNkZWZpbmUgeWllbGRfc3RtdCAyODIKKyNkZWZpbmUgcmFpc2Vfc3RtdCAyODMKKyNkZWZpbmUgaW1wb3J0X3N0bXQgMjg0CisjZGVmaW5lIGltcG9ydF9uYW1lIDI4NQorI2RlZmluZSBpbXBvcnRfZnJvbSAyODYKKyNkZWZpbmUgaW1wb3J0X2FzX25hbWUgMjg3CisjZGVmaW5lIGRvdHRlZF9hc19uYW1lIDI4OAorI2RlZmluZSBpbXBvcnRfYXNfbmFtZXMgMjg5CisjZGVmaW5lIGRvdHRlZF9hc19uYW1lcyAyOTAKKyNkZWZpbmUgZG90dGVkX25hbWUgMjkxCisjZGVmaW5lIGdsb2JhbF9zdG10IDI5MgorI2RlZmluZSBub25sb2NhbF9zdG10IDI5MworI2RlZmluZSBhc3NlcnRfc3RtdCAyOTQKKyNkZWZpbmUgY29tcG91bmRfc3RtdCAyOTUKKyNkZWZpbmUgYXN5bmNfc3RtdCAyOTYKKyNkZWZpbmUgaWZfc3RtdCAyOTcKKyNkZWZpbmUgd2hpbGVfc3RtdCAyOTgKKyNkZWZpbmUgZm9yX3N0bXQgMjk5CisjZGVmaW5lIHRyeV9zdG10IDMwMAorI2RlZmluZSB3aXRoX3N0bXQgMzAxCisjZGVmaW5lIHdpdGhfaXRlbSAzMDIKKyNkZWZpbmUgZXhjZXB0X2NsYXVzZSAzMDMKKyNkZWZpbmUgc3VpdGUgMzA0CisjZGVmaW5lIHRlc3QgMzA1CisjZGVmaW5lIHRlc3Rfbm9jb25kIDMwNgorI2RlZmluZSBsYW1iZGVmIDMwNworI2RlZmluZSBsYW1iZGVmX25vY29uZCAzMDgKKyNkZWZpbmUgb3JfdGVzdCAzMDkKKyNkZWZpbmUgYW5kX3Rlc3QgMzEwCisjZGVmaW5lIG5vdF90ZXN0IDMxMQorI2RlZmluZSBjb21wYXJpc29uIDMxMgorI2RlZmluZSBjb21wX29wIDMxMworI2RlZmluZSBzdGFyX2V4cHIgMzE0CisjZGVmaW5lIGV4cHIgMzE1CisjZGVmaW5lIHhvcl9leHByIDMxNgorI2RlZmluZSBhbmRfZXhwciAzMTcKKyNkZWZpbmUgc2hpZnRfZXhwciAzMTgKKyNkZWZpbmUgYXJpdGhfZXhwciAzMTkKKyNkZWZpbmUgdGVybSAzMjAKKyNkZWZpbmUgZmFjdG9yIDMyMQorI2RlZmluZSBwb3dlciAzMjIKKyNkZWZpbmUgYXRvbV9leHByIDMyMworI2RlZmluZSBhdG9tIDMyNAorI2RlZmluZSB0ZXN0bGlzdF9jb21wIDMyNQorI2RlZmluZSB0cmFpbGVyIDMyNgorI2RlZmluZSBzdWJzY3JpcHRsaXN0IDMyNworI2RlZmluZSBzdWJzY3JpcHQgMzI4CisjZGVmaW5lIHNsaWNlb3AgMzI5CisjZGVmaW5lIGV4cHJsaXN0IDMzMAorI2RlZmluZSB0ZXN0bGlzdCAzMzEKKyNkZWZpbmUgZGljdG9yc2V0bWFrZXIgMzMyCisjZGVmaW5lIGNsYXNzZGVmIDMzMworI2RlZmluZSBhcmdsaXN0IDMzNAorI2RlZmluZSBhcmd1bWVudCAzMzUKKyNkZWZpbmUgY29tcF9pdGVyIDMzNgorI2RlZmluZSBjb21wX2ZvciAzMzcKKyNkZWZpbmUgY29tcF9pZiAzMzgKKyNkZWZpbmUgZW5jb2RpbmdfZGVjbCAzMzkKKyNkZWZpbmUgeWllbGRfZXhwciAzNDAKKyNkZWZpbmUgeWllbGRfYXJnIDM0MQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ncmFtbWFyLmggYi9JbmNsdWRlL2dyYW1tYXIuaAppbmRleCA4NTEyMGI5Li5mNzc1Zjk2IDEwMDY0NAotLS0gYS9JbmNsdWRlL2dyYW1tYXIuaAorKysgYi9JbmNsdWRlL2dyYW1tYXIuaApAQCAtNjksNiArNjksNyBAQAogLyogRlVOQ1RJT05TICovCiAKIGdyYW1tYXIgKm5ld2dyYW1tYXIoaW50IHN0YXJ0KTsKK3ZvaWQgZnJlZWdyYW1tYXIoZ3JhbW1hciAqZyk7CiBkZmEgKmFkZGRmYShncmFtbWFyICpnLCBpbnQgdHlwZSwgY29uc3QgY2hhciAqbmFtZSk7CiBpbnQgYWRkc3RhdGUoZGZhICpkKTsKIHZvaWQgYWRkYXJjKGRmYSAqZCwgaW50IGZyb20sIGludCB0bywgaW50IGxibCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ltcG9ydC5oIGIvSW5jbHVkZS9pbXBvcnQuaAppbmRleCBhZmRmYWMyLi40NmMwZDhlIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ltcG9ydC5oCisrKyBiL0luY2x1ZGUvaW1wb3J0LmgKQEAgLTcsNyArNyw5IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydFppcF9Jbml0KHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiBQeU1PRElOSVRfRlVOQyBQeUluaXRfaW1wKHZvaWQpOwogUHlBUElfRlVOQyhsb25nKSBQeUltcG9ydF9HZXRNYWdpY051bWJlcih2b2lkKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvaW50cmNoZWNrLmggYi9JbmNsdWRlL2ludHJjaGVjay5oCmluZGV4IGY1M2ZlZTEuLjhmYjk2Y2YgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvaW50cmNoZWNrLmgKKysrIGIvSW5jbHVkZS9pbnRyY2hlY2suaApAQCAtOCwxMiArOCwxNSBAQAogUHlBUElfRlVOQyhpbnQpIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T1NfSW5pdEludGVycnVwdHModm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T1NfQWZ0ZXJGb3JrKHZvaWQpOworCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5T1NfSXNNYWluVGhyZWFkKHZvaWQpOwogCiAjaWZkZWYgTVNfV0lORE9XUwogLyogd2luZG93cy5oIGlzIG5vdCBpbmNsdWRlZCBieSBQeXRob24uaCBzbyB1c2Ugdm9pZCogaW5zdGVhZCBvZiBIQU5ETEUgKi8KIFB5QVBJX0ZVTkModm9pZCopIF9QeU9TX1NpZ2ludEV2ZW50KHZvaWQpOwogI2VuZGlmCisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25naW50cmVwci5oIGIvSW5jbHVkZS9sb25naW50cmVwci5oCmluZGV4IGJiYmE0ZDguLmEzYjc0YjQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ2ludHJlcHIuaAorKysgYi9JbmNsdWRlL2xvbmdpbnRyZXByLmgKQEAgLTQyLDE0ICs0MiwxMCBAQAogKi8KIAogI2lmIFBZTE9OR19CSVRTX0lOX0RJR0lUID09IDMwCi0jaWYgIShkZWZpbmVkIEhBVkVfVUlOVDY0X1QgJiYgZGVmaW5lZCBIQVZFX1VJTlQzMl9UICYmICAgICAgICAgIFwKLSAgICAgIGRlZmluZWQgSEFWRV9JTlQ2NF9UICYmIGRlZmluZWQgSEFWRV9JTlQzMl9UKQotI2Vycm9yICIzMC1iaXQgbG9uZyBkaWdpdHMgcmVxdWVzdGVkLCBidXQgdGhlIG5lY2Vzc2FyeSB0eXBlcyBhcmUgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIgotI2VuZGlmCi10eXBlZGVmIFBZX1VJTlQzMl9UIGRpZ2l0OwotdHlwZWRlZiBQWV9JTlQzMl9UIHNkaWdpdDsgLyogc2lnbmVkIHZhcmlhbnQgb2YgZGlnaXQgKi8KLXR5cGVkZWYgUFlfVUlOVDY0X1QgdHdvZGlnaXRzOwotdHlwZWRlZiBQWV9JTlQ2NF9UIHN0d29kaWdpdHM7IC8qIHNpZ25lZCB2YXJpYW50IG9mIHR3b2RpZ2l0cyAqLwordHlwZWRlZiB1aW50MzJfdCBkaWdpdDsKK3R5cGVkZWYgaW50MzJfdCBzZGlnaXQ7IC8qIHNpZ25lZCB2YXJpYW50IG9mIGRpZ2l0ICovCit0eXBlZGVmIHVpbnQ2NF90IHR3b2RpZ2l0czsKK3R5cGVkZWYgaW50NjRfdCBzdHdvZGlnaXRzOyAvKiBzaWduZWQgdmFyaWFudCBvZiB0d29kaWdpdHMgKi8KICNkZWZpbmUgUHlMb25nX1NISUZUCTMwCiAjZGVmaW5lIF9QeUxvbmdfREVDSU1BTF9TSElGVAk5IC8qIG1heChlIHN1Y2ggdGhhdCAxMCoqZSBmaXRzIGluIGEgZGlnaXQpICovCiAjZGVmaW5lIF9QeUxvbmdfREVDSU1BTF9CQVNFCSgoZGlnaXQpMTAwMDAwMDAwMCkgLyogMTAgKiogREVDSU1BTF9TSElGVCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25nb2JqZWN0LmggYi9JbmNsdWRlL2xvbmdvYmplY3QuaAppbmRleCAyYTJlZWNmLi5lZmQ0MDljIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdvYmplY3QuaAorKysgYi9JbmNsdWRlL2xvbmdvYmplY3QuaApAQCAtNjUsNyArNjUsOCBAQAogIyAgZXJyb3IgInZvaWQqIGRpZmZlcmVudCBpbiBzaXplIGZyb20gaW50LCBsb25nIGFuZCBsb25nIGxvbmciCiAjZW5kaWYgLyogU0laRU9GX1ZPSURfUCAqLwogCi0vKiBVc2VkIGJ5IFB5dGhvbi9teXN0cnRvdWwuYy4gKi8KKy8qIFVzZWQgYnkgUHl0aG9uL215c3RydG91bC5jLCBfUHlCeXRlc19Gcm9tSGV4KCksCisgICBfUHlCeXRlc19EZWNvZGVFc2NhcGVSZWNvZGUoKSwgZXRjLiAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfREFUQSh1bnNpZ25lZCBjaGFyKSBfUHlMb25nX0RpZ2l0VmFsdWVbMjU2XTsKICNlbmRpZgpAQCAtODQsMTQgKzg1LDEyIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVm9pZFB0cih2b2lkICopOwogUHlBUElfRlVOQyh2b2lkICopIFB5TG9uZ19Bc1ZvaWRQdHIoUHlPYmplY3QgKik7CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBQWV9MT05HX0xPTkcpOwotUHlBUElfRlVOQyhQWV9MT05HX0xPTkcpIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKFBZX0xPTkdfTE9ORykgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqLCBpbnQgKik7Ci0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Mb25nTG9uZyhsb25nIGxvbmcpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgbG9uZyBsb25nKTsKK1B5QVBJX0ZVTkMobG9uZyBsb25nKSBQeUxvbmdfQXNMb25nTG9uZyhQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkModW5zaWduZWQgbG9uZyBsb25nKSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nIGxvbmcpIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhsb25nIGxvbmcpIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coUHlPYmplY3QgKiwgaW50ICopOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKQEAgLTE4Miw2ICsxODEsMTMgQEAKICAgICBpbnQgYmFzZSwKICAgICBpbnQgYWx0ZXJuYXRlKTsKIAorUHlBUElfRlVOQyhjaGFyKikgX1B5TG9uZ19Gb3JtYXRCeXRlc1dyaXRlcigKKyAgICBfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIGNoYXIgKnN0ciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIGludCBiYXNlLAorICAgIGludCBhbHRlcm5hdGUpOworCiAvKiBGb3JtYXQgdGhlIG9iamVjdCBiYXNlZCBvbiB0aGUgZm9ybWF0X3NwZWMsIGFzIGRlZmluZWQgaW4gUEVQIDMxMDEKICAgIChBZHZhbmNlZCBTdHJpbmcgRm9ybWF0dGluZykuICovCiBQeUFQSV9GVU5DKGludCkgX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcigKQEAgLTE5OCw4ICsyMDQsMTAgQEAKIFB5QVBJX0ZVTkModW5zaWduZWQgbG9uZykgUHlPU19zdHJ0b3VsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKIFB5QVBJX0ZVTkMobG9uZykgUHlPU19zdHJ0b2woY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBGb3IgdXNlIGJ5IHRoZSBnY2QgZnVuY3Rpb24gaW4gbWF0aG1vZHVsZS5jICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfR0NEKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmggYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCmluZGV4IGUyYWQ4MDQuLjc5ZmFkODIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tZXRob2RvYmplY3QuaApAQCAtMTYsNiArMTYsOCBAQAogI2RlZmluZSBQeUNGdW5jdGlvbl9DaGVjayhvcCkgKFB5X1RZUEUob3ApID09ICZQeUNGdW5jdGlvbl9UeXBlKQogCiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Q0Z1bmN0aW9uKShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK3R5cGVkZWYgUHlPYmplY3QgKigqX1B5Q0Z1bmN0aW9uRmFzdCkgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcyk7CiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKShQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKik7CiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Tm9BcmdzRnVuY3Rpb24pKFB5T2JqZWN0ICopOwpAQCAtMzcsNiArMzksMTggQEAKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoUHlPYmplY3QgKmZ1bmMsCisgICAgUHlPYmplY3QgKiphcmdzLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3YXJncyk7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsCisgICAgUHlPYmplY3QgKipzdGFjaywKKyAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgIFB5T2JqZWN0ICprd25hbWVzKTsKKyNlbmRpZgorCiBzdHJ1Y3QgUHlNZXRob2REZWYgewogICAgIGNvbnN0IGNoYXIgICptbF9uYW1lOyAgIC8qIFRoZSBuYW1lIG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbi9tZXRob2QgKi8KICAgICBQeUNGdW5jdGlvbiBtbF9tZXRoOyAgICAvKiBUaGUgQyBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgaXQgKi8KQEAgLTcyLDYgKzg2LDggQEAKICNkZWZpbmUgTUVUSF9DT0VYSVNUICAgMHgwMDQwCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyNkZWZpbmUgTUVUSF9GQVNUQ0FMTCAgMHgwMDgwCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlNZXRob2REZWYgKm1fbWw7IC8qIERlc2NyaXB0aW9uIG9mIHRoZSBDIGZ1bmN0aW9uIHRvIGNhbGwgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbW9kc3VwcG9ydC5oIGIvSW5jbHVkZS9tb2RzdXBwb3J0LmgKaW5kZXggODI5YWFmOC4uODMzZTMzZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tb2RzdXBwb3J0LmgKKysrIGIvSW5jbHVkZS9tb2RzdXBwb3J0LmgKQEAgLTE1LDEyICsxNSwxNiBAQAogI2RlZmluZSBQeUFyZ19QYXJzZSAgICAgICAgICAgICAgICAgICAgIF9QeUFyZ19QYXJzZV9TaXplVAogI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlICAgICAgICAgICAgICAgIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCiAjZGVmaW5lIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyAgICAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2RlZmluZSBQeUFyZ19WYVBhcnNlICAgICAgICAgICAgICAgICAgIF9QeUFyZ19WYVBhcnNlX1NpemVUCiAjZGVmaW5lIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzICAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAjZGVmaW5lIFB5X0J1aWxkVmFsdWUgICAgICAgICAgICAgICAgICAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQKICNkZWZpbmUgUHlfVmFCdWlsZFZhbHVlICAgICAgICAgICAgICAgICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUCiAjZWxzZQorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAjZW5kaWYKIAogLyogRHVlIHRvIGEgZ2xpdGNoIGluIDMuMiwgdGhlIF9TaXplVCB2ZXJzaW9ucyB3ZXJlbid0IGV4cG9ydGVkIGZyb20gdGhlIERMTC4gKi8KQEAgLTQ0LDYgKzQ4LDMyIEBACiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlfVmFCdWlsZFZhbHVlKGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK3R5cGVkZWYgc3RydWN0IF9QeUFyZ19QYXJzZXIgeworICAgIGNvbnN0IGNoYXIgKmZvcm1hdDsKKyAgICBjb25zdCBjaGFyICogY29uc3QgKmtleXdvcmRzOworICAgIGNvbnN0IGNoYXIgKmZuYW1lOworICAgIGNvbnN0IGNoYXIgKmN1c3RvbV9tc2c7CisgICAgaW50IHBvczsgICAgICAgICAgICAvKiBudW1iZXIgb2YgcG9zaXRpb25hbC1vbmx5IGFyZ3VtZW50cyAqLworICAgIGludCBtaW47ICAgICAgICAgICAgLyogbWluaW1hbCBudW1iZXIgb2YgYXJndW1lbnRzICovCisgICAgaW50IG1heDsgICAgICAgICAgICAvKiBtYXhpbWFsIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqLworICAgIFB5T2JqZWN0ICprd3R1cGxlOyAgLyogdHVwbGUgb2Yga2V5d29yZCBwYXJhbWV0ZXIgbmFtZXMgKi8KKyAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqbmV4dDsKK30gX1B5QXJnX1BhcnNlcjsKKyNpZmRlZiBQWV9TU0laRV9UX0NMRUFOCisjZGVmaW5lIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0ICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVAorI2RlZmluZSBfUHlBcmdfUGFyc2VTdGFjayAgX1B5QXJnX1BhcnNlU3RhY2tfU2l6ZVQKKyNkZWZpbmUgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdCAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVAorI2VuZGlmCitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVN0YWNrKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCB2YV9saXN0KTsKK3ZvaWQgX1B5QXJnX0Zpbmkodm9pZCk7CisjZW5kaWYKKwogUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZE9iamVjdChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZEludENvbnN0YW50KFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgbG9uZyk7CiBQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaCBiL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKaW5kZXggYTQxMmYwNS4uMGM4ZDk1YyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaAorKysgYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCkBAIC03LDkgKzcsMTEgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlOYW1lc3BhY2VfVHlwZTsKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlOYW1lc3BhY2VfTmV3KFB5T2JqZWN0ICprd2RzKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamVjdC5oIGIvSW5jbHVkZS9vYmplY3QuaAppbmRleCA1MGQ5NzQ3Li4zMzhlYzFiIDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamVjdC5oCisrKyBiL0luY2x1ZGUvb2JqZWN0LmgKQEAgLTExOCw2ICsxMTgsNyBAQAogI2RlZmluZSBQeV9UWVBFKG9iKSAgICAgICAgICAgICAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCiAjZGVmaW5lIFB5X1NJWkUob2IpICAgICAgICAgICAgICgoKFB5VmFyT2JqZWN0Kikob2IpKS0+b2Jfc2l6ZSkKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyoqKioqKioqKioqKioqKioqKioqKiBTdHJpbmcgTGl0ZXJhbHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIFRoaXMgc3RydWN0dXJlIGhlbHBzIG1hbmFnaW5nIHN0YXRpYyBzdHJpbmdzLiBUaGUgYmFzaWMgdXNhZ2UgZ29lcyBsaWtlIHRoaXM6CiAgICBJbnN0ZWFkIG9mIGRvaW5nCkBAIC0xNDQsMTAgKzE0NSwxMiBAQAogICAgIFB5T2JqZWN0ICpvYmplY3Q7CiB9IF9QeV9JZGVudGlmaWVyOwogCi0jZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nX2luaXQodmFsdWUpIHsgMCwgdmFsdWUsIDAgfQorI2RlZmluZSBfUHlfc3RhdGljX3N0cmluZ19pbml0KHZhbHVlKSB7IC5uZXh0ID0gTlVMTCwgLnN0cmluZyA9IHZhbHVlLCAub2JqZWN0ID0gTlVMTCB9CiAjZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nKHZhcm5hbWUsIHZhbHVlKSAgc3RhdGljIF9QeV9JZGVudGlmaWVyIHZhcm5hbWUgPSBfUHlfc3RhdGljX3N0cmluZ19pbml0KHZhbHVlKQogI2RlZmluZSBfUHlfSURFTlRJRklFUih2YXJuYW1lKSBfUHlfc3RhdGljX3N0cmluZyhQeUlkXyMjdmFybmFtZSwgI3Zhcm5hbWUpCiAKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KKwogLyoKIFR5cGUgb2JqZWN0cyBjb250YWluIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHR5cGUgbmFtZSAodG8gaGVscCBzb21ld2hhdAogaW4gZGVidWdnaW5nKSwgdGhlIGFsbG9jYXRpb24gcGFyYW1ldGVycyAoc2VlIFB5T2JqZWN0X05ldygpIGFuZApAQCAtNTEyLDggKzUxNSw4IEBACiAjZW5kaWYKIAogLyogR2VuZXJpYyBvcGVyYXRpb25zIG9uIG9iamVjdHMgKi8KLXN0cnVjdCBfUHlfSWRlbnRpZmllcjsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK3N0cnVjdCBfUHlfSWRlbnRpZmllcjsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9QcmludChQeU9iamVjdCAqLCBGSUxFICosIGludCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9CcmVha1BvaW50KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRHVtcChQeU9iamVjdCAqKTsKQEAgLTUzMCwxMSArNTMzLDExIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfU2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9IYXNBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9Jc0Fic3RyYWN0KFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR2V0QXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfU2V0QXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfSGFzQXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqKTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKiopIF9QeU9iamVjdF9HZXREaWN0UHRyKFB5T2JqZWN0ICopOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X1NlbGZJdGVyKFB5T2JqZWN0ICopOwpAQCAtNTU3LDYgKzU2MCw3IEBACiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKFB5T2JqZWN0ICopOwogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFNhbWUgYXMgUHlPYmplY3RfR2VuZXJpY3tHZXQsU2V0fUF0dHIsIGJ1dCBwYXNzaW5nIHRoZSBhdHRyaWJ1dGVzCiAgICBkaWN0IGFzIHRoZSBsYXN0IHBhcmFtZXRlci4gKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikKQEAgLTU2NCw2ICs1NjgsNyBAQAogUHlBUElfRlVOQyhpbnQpCiBfUHlPYmplY3RfR2VuZXJpY1NldEF0dHJXaXRoRGljdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qIEhlbHBlciB0byBsb29rIHVwIGEgYnVpbHRpbiBvYmplY3QgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKQEAgLTcwOCw3ICs3MTMsNiBAQAogUHlBUElfREFUQShQeV9zc2l6ZV90KSBfUHlfUmVmVG90YWw7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9OZWdhdGl2ZVJlZmNvdW50KGNvbnN0IGNoYXIgKmZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBQeU9iamVjdCAqb3ApOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0R1bW15KHZvaWQpOwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfR2V0UmVmVG90YWwodm9pZCk7CiAjZGVmaW5lIF9QeV9JTkNfUkVGVE9UQUwgICAgICAgIF9QeV9SZWZUb3RhbCsrCiAjZGVmaW5lIF9QeV9ERUNfUkVGVE9UQUwgICAgICAgIF9QeV9SZWZUb3RhbC0tCkBAIC03ODUsNyArNzg5LDcgQEAKICAgICAgICAgLS0oX3B5X2RlY3JlZl90bXApLT5vYl9yZWZjbnQgIT0gMCkgICAgICAgICAgICAgXAogICAgICAgICAgICAgX1B5X0NIRUNLX1JFRkNOVChfcHlfZGVjcmVmX3RtcCkgICAgICAgICAgICBcCiAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgX1B5X0RlYWxsb2MoX3B5X2RlY3JlZl90bXApOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX1B5X0RlYWxsb2MoX3B5X2RlY3JlZl90bXApOyAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAogLyogU2FmZWx5IGRlY3JlZiBgb3BgIGFuZCBzZXQgYG9wYCB0byBOVUxMLCBlc3BlY2lhbGx5IHVzZWZ1bCBpbiB0cF9jbGVhcgpAQCAtODg5LDggKzg5MywxMCBAQAogUHlBUElfRlVOQyh2b2lkKSBQeV9JbmNSZWYoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5X0RlY1JlZihQeU9iamVjdCAqKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5vbmVfVHlwZTsKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlOb3RJbXBsZW1lbnRlZF9UeXBlOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKgogX1B5X05vbmVTdHJ1Y3QgaXMgYW4gb2JqZWN0IG9mIHVuZGVmaW5lZCB0eXBlIHdoaWNoIGNhbiBiZSB1c2VkIGluIGNvbnRleHRzCkBAIC05MjMsMTAgKzkyOSwxMiBAQAogI2RlZmluZSBQeV9HVCA0CiAjZGVmaW5lIFB5X0dFIDUKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogTWFwcyBQeV9MVCB0byBQeV9HVCwgLi4uLCBQeV9HRSB0byBQeV9MRS4KICAqIERlZmluZWQgaW4gb2JqZWN0LmMuCiAgKi8KIFB5QVBJX0RBVEEoaW50KSBfUHlfU3dhcHBlZE9wW107CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIAogLyoKQEAgLTEwMjMsMTIgKzEwMzEsMTQgQEAKIHdpdGggdGhlIGNhbGwgc3RhY2sgbmV2ZXIgZXhjZWVkaW5nIGEgZGVwdGggb2YgUHlUcmFzaF9VTldJTkRfTEVWRUwuCiAqLwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBUaGlzIGlzIHRoZSBvbGQgcHJpdmF0ZSBBUEksIGludm9rZWQgYnkgdGhlIG1hY3JvcyBiZWZvcmUgMy4yLjQuCiAgICBLZXB0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eSBvZiBleHRlbnNpb25zIHVzaW5nIHRoZSBzdGFibGUgQUJJLiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUcmFzaF9kZXBvc2l0X29iamVjdChQeU9iamVjdCopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlUcmFzaF9kZXN0cm95X2NoYWluKHZvaWQpOwogUHlBUElfREFUQShpbnQpIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBfUHlUcmFzaF9kZWxldGVfbGF0ZXI7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qIFRoZSBuZXcgdGhyZWFkLXNhZmUgcHJpdmF0ZSBBUEksIGludm9rZWQgYnkgdGhlIG1hY3JvcyBiZWxvdy4gKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5VHJhc2hfdGhyZWFkX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0Kik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamltcGwuaCBiL0luY2x1ZGUvb2JqaW1wbC5oCmluZGV4IDY1YjZkOTEuLmMwZWQ5YjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqaW1wbC5oCisrKyBiL0luY2x1ZGUvb2JqaW1wbC5oCkBAIC05OSw4ICs5OSwxMCBAQAogUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9GcmVlKHZvaWQgKnB0cik7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGFsbG9jYXRlZCBtZW1vcnkgYmxvY2tzLCByZWdhcmRsZXNzIG9mIHNpemUgKi8KIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5X0dldEFsbG9jYXRlZEJsb2Nrcyh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogTWFjcm9zICovCiAjaWZkZWYgV0lUSF9QWU1BTExPQwpAQCAtMjI0LDExICsyMjYsMTIgQEAKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKi8KIAotLyogQyBlcXVpdmFsZW50IG9mIGdjLmNvbGxlY3QoKS4gKi8KKy8qIEMgZXF1aXZhbGVudCBvZiBnYy5jb2xsZWN0KCkgd2hpY2ggaWdub3JlcyB0aGUgc3RhdGUgb2YgZ2MuZW5hYmxlZC4gKi8KIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlHQ19Db2xsZWN0KHZvaWQpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeUdDX0NvbGxlY3ROb0ZhaWwodm9pZCk7CitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQodm9pZCk7CiAjZW5kaWYKIAogLyogVGVzdCBpZiBhIHR5cGUgaGFzIGEgR0MgaGVhZCAqLwpAQCAtMzIyLDggKzMyNSwxMCBAQAogICAgICAgICAoIVB5VHVwbGVfQ2hlY2tFeGFjdChvYmopIHx8IF9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG9iaikpKQogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX01hbGxvYyhzaXplX3Qgc2l6ZSk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19DYWxsb2Moc2l6ZV90IHNpemUpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfTmV3KFB5VHlwZU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlWYXJPYmplY3QgKikgX1B5T2JqZWN0X0dDX05ld1ZhcihQeVR5cGVPYmplY3QgKiwgUHlfc3NpemVfdCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T2JqZWN0X0dDX1RyYWNrKHZvaWQgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL29wY29kZS5oIGIvSW5jbHVkZS9vcGNvZGUuaAppbmRleCAzZjkxN2ZiLi5iZTM2MGUxIDEwMDY0NAotLS0gYS9JbmNsdWRlL29wY29kZS5oCisrKyBiL0luY2x1ZGUvb3Bjb2RlLmgKQEAgLTYwLDYgKzYwLDcgQEAKICNkZWZpbmUgV0lUSF9DTEVBTlVQX0ZJTklTSCAgICAgIDgyCiAjZGVmaW5lIFJFVFVSTl9WQUxVRSAgICAgICAgICAgICA4MwogI2RlZmluZSBJTVBPUlRfU1RBUiAgICAgICAgICAgICAgODQKKyNkZWZpbmUgU0VUVVBfQU5OT1RBVElPTlMgICAgICAgIDg1CiAjZGVmaW5lIFlJRUxEX1ZBTFVFICAgICAgICAgICAgICA4NgogI2RlZmluZSBQT1BfQkxPQ0sgICAgICAgICAgICAgICAgODcKICNkZWZpbmUgRU5EX0ZJTkFMTFkgICAgICAgICAgICAgIDg4CkBAIC05OCwxOCArOTksMTcgQEAKICNkZWZpbmUgTE9BRF9GQVNUICAgICAgICAgICAgICAgMTI0CiAjZGVmaW5lIFNUT1JFX0ZBU1QgICAgICAgICAgICAgIDEyNQogI2RlZmluZSBERUxFVEVfRkFTVCAgICAgICAgICAgICAxMjYKKyNkZWZpbmUgU1RPUkVfQU5OT1RBVElPTiAgICAgICAgMTI3CiAjZGVmaW5lIFJBSVNFX1ZBUkFSR1MgICAgICAgICAgIDEzMAogI2RlZmluZSBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAxMzEKICNkZWZpbmUgTUFLRV9GVU5DVElPTiAgICAgICAgICAgMTMyCiAjZGVmaW5lIEJVSUxEX1NMSUNFICAgICAgICAgICAgIDEzMwotI2RlZmluZSBNQUtFX0NMT1NVUkUgICAgICAgICAgICAxMzQKICNkZWZpbmUgTE9BRF9DTE9TVVJFICAgICAgICAgICAgMTM1CiAjZGVmaW5lIExPQURfREVSRUYgICAgICAgICAgICAgIDEzNgogI2RlZmluZSBTVE9SRV9ERVJFRiAgICAgICAgICAgICAxMzcKICNkZWZpbmUgREVMRVRFX0RFUkVGICAgICAgICAgICAgMTM4Ci0jZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSICAgICAgIDE0MAogI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0tXICAgICAgICAxNDEKLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVJfS1cgICAgMTQyCisjZGVmaW5lIENBTExfRlVOQ1RJT05fRVggICAgICAgIDE0MgogI2RlZmluZSBTRVRVUF9XSVRIICAgICAgICAgICAgICAxNDMKICNkZWZpbmUgRVhURU5ERURfQVJHICAgICAgICAgICAgMTQ0CiAjZGVmaW5lIExJU1RfQVBQRU5EICAgICAgICAgICAgIDE0NQpAQCAtMTIyLDYgKzEyMiwxMCBAQAogI2RlZmluZSBCVUlMRF9UVVBMRV9VTlBBQ0sgICAgICAxNTIKICNkZWZpbmUgQlVJTERfU0VUX1VOUEFDSyAgICAgICAgMTUzCiAjZGVmaW5lIFNFVFVQX0FTWU5DX1dJVEggICAgICAgIDE1NAorI2RlZmluZSBGT1JNQVRfVkFMVUUgICAgICAgICAgICAxNTUKKyNkZWZpbmUgQlVJTERfQ09OU1RfS0VZX01BUCAgICAgMTU2CisjZGVmaW5lIEJVSUxEX1NUUklORyAgICAgICAgICAgIDE1NworI2RlZmluZSBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMIDE1OAogCiAvKiBFWENFUFRfSEFORExFUiBpcyBhIHNwZWNpYWwsIGltcGxpY2l0IGJsb2NrIHR5cGUgd2hpY2ggaXMgY3JlYXRlZCB3aGVuCiAgICBlbnRlcmluZyBhbiBleGNlcHQgaGFuZGxlci4gSXQgaXMgbm90IGFuIG9wY29kZSBidXQgd2UgZGVmaW5lIGl0IGhlcmUKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3Ntb2R1bGUuaCBiL0luY2x1ZGUvb3Ntb2R1bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTQ2NzU3Ci0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9vc21vZHVsZS5oCkBAIC0wLDAgKzEsMTUgQEAKKworLyogb3MgbW9kdWxlIGludGVyZmFjZSAqLworCisjaWZuZGVmIFB5X09TTU9EVUxFX0gKKyNkZWZpbmUgUHlfT1NNT0RVTEVfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T1NfRlNQYXRoKFB5T2JqZWN0ICpwYXRoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhUHlfT1NNT0RVTEVfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wYXRjaGxldmVsLmggYi9JbmNsdWRlL3BhdGNobGV2ZWwuaAppbmRleCA0NWU1NzM2Li5iNjIzNTA4IDEwMDY0NAotLS0gYS9JbmNsdWRlL3BhdGNobGV2ZWwuaAorKysgYi9JbmNsdWRlL3BhdGNobGV2ZWwuaApAQCAtMTcsMTMgKzE3LDEzIEBACiAvKiBWZXJzaW9uIHBhcnNlZCBvdXQgaW50byBudW1lcmljIHZhbHVlcyAqLwogLyotLXN0YXJ0IGNvbnN0YW50cy0tKi8KICNkZWZpbmUgUFlfTUFKT1JfVkVSU0lPTgkzCi0jZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JNQotI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTIKLSNkZWZpbmUgUFlfUkVMRUFTRV9MRVZFTAlQWV9SRUxFQVNFX0xFVkVMX0ZJTkFMCi0jZGVmaW5lIFBZX1JFTEVBU0VfU0VSSUFMCTAKKyNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgk2CisjZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMAorI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfQkVUQQorI2RlZmluZSBQWV9SRUxFQVNFX1NFUklBTAkxCiAKIC8qIFZlcnNpb24gYXMgYSBzdHJpbmcgKi8KLSNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy41LjIrIgorI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjYuMGIxKyIKIC8qLS1lbmQgY29uc3RhbnRzLS0qLwogCiAvKiBWZXJzaW9uIGFzIGEgc2luZ2xlIDQtYnl0ZSBoZXggbnVtYmVyLCBlLmcuIDB4MDEwNTAyQjIgPT0gMS41LjJiMi4KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlfY3Vyc2VzLmggYi9JbmNsdWRlL3B5X2N1cnNlcy5oCmluZGV4IGYyYzA4ZjYuLjNjMjE2OTcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlfY3Vyc2VzLmgKKysrIGIvSW5jbHVkZS9weV9jdXJzZXMuaApAQCAtMTAzLDggKzEwMyw4IEBACiAjZW5kaWYKIAogLyogZ2VuZXJhbCBlcnJvciBtZXNzYWdlcyAqLwotc3RhdGljIGNoYXIgKmNhdGNoYWxsX0VSUiAgPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIEVSUiI7Ci1zdGF0aWMgY2hhciAqY2F0Y2hhbGxfTlVMTCA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCI7CitzdGF0aWMgY29uc3QgY2hhciBjYXRjaGFsbF9FUlJbXSAgPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIEVSUiI7CitzdGF0aWMgY29uc3QgY2hhciBjYXRjaGFsbF9OVUxMW10gPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIE5VTEwiOwogCiAvKiBGdW5jdGlvbiBQcm90b3R5cGUgTWFjcm9zIC0gVGhleSBhcmUgdWdseSBidXQgdmVyeSwgdmVyeSB1c2VmdWwuIDstKQogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5YXRvbWljLmggYi9JbmNsdWRlL3B5YXRvbWljLmgKaW5kZXggODkwMjhlZi4uODkzZDMwZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWF0b21pYy5oCisrKyBiL0luY2x1ZGUvcHlhdG9taWMuaApAQCAtNjEsNyArNjEsNyBAQAogfSBfUHlfbWVtb3J5X29yZGVyOwogCiB0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2FkZHJlc3MgewotICAgIFB5X3VpbnRwdHJfdCBfdmFsdWU7CisgICAgdWludHB0cl90IF92YWx1ZTsKIH0gX1B5X2F0b21pY19hZGRyZXNzOwogCiB0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2ludCB7CkBAIC05OCw3ICs5OCw3IEBACiB9IF9QeV9tZW1vcnlfb3JkZXI7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7Ci0gICAgUHlfdWludHB0cl90IF92YWx1ZTsKKyAgICB1aW50cHRyX3QgX3ZhbHVlOwogfSBfUHlfYXRvbWljX2FkZHJlc3M7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfaW50IHsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlkZWJ1Zy5oIGIvSW5jbHVkZS9weWRlYnVnLmgKaW5kZXggMTliZWMyYi4uNmUyM2E4OSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWRlYnVnLmgKKysrIGIvSW5jbHVkZS9weWRlYnVnLmgKQEAgLTI0LDYgKzI0LDEwIEBACiBQeUFQSV9EQVRBKGludCkgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnOwogUHlBUElfREFUQShpbnQpIFB5X0lzb2xhdGVkRmxhZzsKIAorI2lmZGVmIE1TX1dJTkRPV1MKK1B5QVBJX0RBVEEoaW50KSBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnOworI2VuZGlmCisKIC8qIHRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBnZXRlbnYoKSB0aGF0IHBheXMgYXR0ZW50aW9uIHRvCiAgICBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcuICBJdCBzaG91bGQgYmUgdXNlZCBmb3IgZ2V0dGluZyB2YXJpYWJsZXMgbGlrZQogICAgUFlUSE9OUEFUSCBhbmQgUFlUSE9OSE9NRSBmcm9tIHRoZSBlbnZpcm9ubWVudCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWR0cmFjZS5kIGIvSW5jbHVkZS9weWR0cmFjZS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MzYwNTUKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5ZHRyYWNlLmQKQEAgLTAsMCArMSwxOSBAQAorLyogUHl0aG9uIERUcmFjZSBwcm92aWRlciAqLworCitwcm92aWRlciBweXRob24geworICAgIHByb2JlIGZ1bmN0aW9uX19lbnRyeShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyAgICBwcm9iZSBmdW5jdGlvbl9fcmV0dXJuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgIHByb2JlIGluc3RhbmNlX19uZXdfX3N0YXJ0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fbmV3X19kb25lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fZGVsZXRlX19zdGFydChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisgICAgcHJvYmUgaW5zdGFuY2VfX2RlbGV0ZV9fZG9uZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisgICAgcHJvYmUgbGluZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyAgICBwcm9iZSBnY19fc3RhcnQoaW50KTsKKyAgICBwcm9iZSBnY19fZG9uZShsb25nKTsKK307CisKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gcHJvdmlkZXIKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gbW9kdWxlCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIGZ1bmN0aW9uCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIG5hbWUKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gYXJncwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWR0cmFjZS5oIGIvSW5jbHVkZS9weWR0cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MGQyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5ZHRyYWNlLmgKQEAgLTAsMCArMSw1MyBAQAorLyogU3RhdGljIERUcmFjZSBwcm9iZXMgaW50ZXJmYWNlICovCisKKyNpZm5kZWYgUHlfRFRSQUNFX0gKKyNkZWZpbmUgUHlfRFRSQUNFX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lmZGVmIFdJVEhfRFRSQUNFCisKKyNpbmNsdWRlICJweWR0cmFjZV9wcm9iZXMuaCIKKworLyogcHlkdHJhY2VfcHJvYmVzLmgsIG9uIHN5c3RlbXMgd2l0aCBEVHJhY2UsIGlzIGF1dG8tZ2VuZXJhdGVkIHRvIGluY2x1ZGUKKyAgIGBQeURUcmFjZV97UFJPQkV9YCBhbmQgYFB5RFRyYWNlX3tQUk9CRX1fRU5BQkxFRCgpYCBtYWNyb3MgZm9yIGV2ZXJ5IHByb2JlCisgICBkZWZpbmVkIGluIHB5ZHRyYWNlX3Byb3ZpZGVyLmQuCisKKyAgIENhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIG11c3QgYmUgZ3VhcmRlZCBieSBhIGBQeURUcmFjZV97UFJPQkV9X0VOQUJMRUQoKWAKKyAgIGNoZWNrIHRvIG1pbmltaXplIHBlcmZvcm1hbmNlIGltcGFjdCB3aGVuIHByb2JpbmcgaXMgb2ZmLiBGb3IgZXhhbXBsZToKKworICAgICAgIGlmIChQeURUcmFjZV9GVU5DVElPTl9FTlRSWV9FTkFCTEVEKCkpCisgICAgICAgICAgIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGYpOworKi8KKworI2Vsc2UKKworLyogV2l0aG91dCBEVHJhY2UsIGNvbXBpbGUgdG8gbm90aGluZy4gKi8KKworaW5saW5lIHZvaWQgUHlEVHJhY2VfTElORShjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGNvbnN0IGNoYXIgKmFyZzAsIGNvbnN0IGNoYXIgKmFyZzEsIGludCBhcmcyKSAge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTihjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0dDX1NUQVJUKGludCBhcmcwKSB7fQoraW5saW5lIHZvaWQgUHlEVHJhY2VfR0NfRE9ORShpbnQgYXJnMCkge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVChpbnQgYXJnMCkge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19ET05FKGludCBhcmcwKSB7fQoraW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX1NUQVJUKGludCBhcmcwKSB7fQoraW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkUoaW50IGFyZzApIHt9CisKK2lubGluZSBpbnQgUHlEVHJhY2VfTElORV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK2lubGluZSBpbnQgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUllfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTl9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK2lubGluZSBpbnQgUHlEVHJhY2VfR0NfU1RBUlRfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0dDX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVF9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK2lubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9TVEFSVF9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK2lubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CisKKyNlbmRpZiAvKiAhV0lUSF9EVFJBQ0UgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhUHlfRFRSQUNFX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHllcnJvcnMuaCBiL0luY2x1ZGUvcHllcnJvcnMuaAppbmRleCAzNWFlZGI3Li4wM2NlZTNkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZXJyb3JzLmgKKysrIGIvSW5jbHVkZS9weWVycm9ycy5oCkBAIC0xNjAsNiArMTYwLDcgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19PU0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW5kZXhFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfS2V5RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0OwpAQCAtMjgzLDYgKzI4NCw5IEBACiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RXhjV2l0aEFyZ3NLd2FyZ3MoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICBQeU9iamVjdCAqKTsKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgUHlPYmplY3QgKik7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlnZXRvcHQuaCBiL0luY2x1ZGUvcHlnZXRvcHQuaAppbmRleCA0MjVjN2RkLi45NjI3MjBjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5Z2V0b3B0LmgKKysrIGIvSW5jbHVkZS9weWdldG9wdC5oCkBAIC0xMSw5ICsxMSw5IEBACiBQeUFQSV9EQVRBKHdjaGFyX3QgKikgX1B5T1Nfb3B0YXJnOwogCiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9TX1Jlc2V0R2V0T3B0KHZvaWQpOwotI2VuZGlmCiAKIFB5QVBJX0ZVTkMoaW50KSBfUHlPU19HZXRPcHQoaW50IGFyZ2MsIHdjaGFyX3QgKiphcmd2LCB3Y2hhcl90ICpvcHRzdHJpbmcpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHloYXNoLmggYi9JbmNsdWRlL3B5aGFzaC5oCmluZGV4IGE3Y2E5MzcuLmE4MTRhZjYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHloYXNoLmgKKysrIGIvSW5jbHVkZS9weWhhc2guaApAQCAtMzYsMTQgKzM2LDE0IEBACiAgKiBtZW1vcnkgbGF5b3V0IG9uIDY0IGJpdCBzeXN0ZW1zCiAgKiAgIGNjY2NjY2NjIGNjY2NjY2NjIGNjY2NjY2NjICB1YyAtLSB1bnNpZ25lZCBjaGFyWzI0XQogICogICBwcHBwcHBwcCBzc3Nzc3NzcyAuLi4uLi4uLiAgZm52IC0tIHR3byBQeV9oYXNoX3QKLSAqICAgazBrMGswazAgazFrMWsxazEgLi4uLi4uLi4gIHNpcGhhc2ggLS0gdHdvIFBZX1VJTlQ2NF9UCisgKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byB1aW50NjRfdAogICogICAuLi4uLi4uLiAuLi4uLi4uLiBzc3Nzc3NzcyAgZGpieDMzYSAtLSAxNiBieXRlcyBwYWRkaW5nICsgb25lIFB5X2hhc2hfdAogICogICAuLi4uLi4uLiAuLi4uLi4uLiBlZWVlZWVlZSAgcHlleHBhdCBYTUwgaGFzaCBzYWx0CiAgKgogICogbWVtb3J5IGxheW91dCBvbiAzMiBiaXQgc3lzdGVtcwogICogICBjY2NjY2NjYyBjY2NjY2NjYyBjY2NjY2NjYyAgdWMKICAqICAgcHBwcHNzc3MgLi4uLi4uLi4gLi4uLi4uLi4gIGZudiAtLSB0d28gUHlfaGFzaF90Ci0gKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byBQWV9VSU5UNjRfVCAoKikKKyAqICAgazBrMGswazAgazFrMWsxazEgLi4uLi4uLi4gIHNpcGhhc2ggLS0gdHdvIHVpbnQ2NF90ICgqKQogICogICAuLi4uLi4uLiAuLi4uLi4uLiBzc3NzLi4uLiAgZGpieDMzYSAtLSAxNiBieXRlcyBwYWRkaW5nICsgb25lIFB5X2hhc2hfdAogICogICAuLi4uLi4uLiAuLi4uLi4uLiBlZWVlLi4uLiAgcHlleHBhdCBYTUwgaGFzaCBzYWx0CiAgKgpAQCAtNTksMTMgKzU5LDExIEBACiAgICAgICAgIFB5X2hhc2hfdCBwcmVmaXg7CiAgICAgICAgIFB5X2hhc2hfdCBzdWZmaXg7CiAgICAgfSBmbnY7Ci0jaWZkZWYgUFlfVUlOVDY0X1QKICAgICAvKiB0d28gdWludDY0IGZvciBTaXBIYXNoMjQgKi8KICAgICBzdHJ1Y3QgewotICAgICAgICBQWV9VSU5UNjRfVCBrMDsKLSAgICAgICAgUFlfVUlOVDY0X1QgazE7CisgICAgICAgIHVpbnQ2NF90IGswOworICAgICAgICB1aW50NjRfdCBrMTsKICAgICB9IHNpcGhhc2g7Ci0jZW5kaWYKICAgICAvKiBhIGRpZmZlcmVudCAoISkgUHlfaGFzaF90IGZvciBzbWFsbCBzdHJpbmcgb3B0aW1pemF0aW9uICovCiAgICAgc3RydWN0IHsKICAgICAgICAgdW5zaWduZWQgY2hhciBwYWRkaW5nWzE2XTsKQEAgLTEyMSw4ICsxMTksNyBAQAogICogY29uZmlndXJlIHNjcmlwdC4KICAqCiAgKiAtIEZOViBpcyBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyBhbmQgYXJjaGl0ZWN0dXJlcy4KLSAqIC0gU0lQSEFTSDI0IG9ubHkgd29ya3Mgb24gcGxhZm9ybXMgdGhhdCBwcm92aWRlIFBZX1VJTlQ2NF9UIGFuZCBkb2Vzbid0Ci0gKiAgIHJlcXVpcmUgYWxpZ25lZCBtZW1vcnkgZm9yIGludGVnZXJzLgorICogLSBTSVBIQVNIMjQgb25seSB3b3JrcyBvbiBwbGFmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYWxpZ25lZCBtZW1vcnkgZm9yIGludGVnZXJzLgogICogLSBXaXRoIEVYVEVSTkFMIGVtYmVkZGVycyBjYW4gcHJvdmlkZSBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiB3aXRoOjoKICAqCiAgKiAgICAgUHlIYXNoX0Z1bmNEZWYgUHlIYXNoX0Z1bmMgPSB7Li4ufTsKQEAgLTEzNCw4ICsxMzEsNyBAQAogI2RlZmluZSBQeV9IQVNIX0ZOViAyCiAKICNpZm5kZWYgUHlfSEFTSF9BTEdPUklUSE0KLSMgIGlmIChkZWZpbmVkKFBZX1VJTlQ2NF9UKSAmJiBkZWZpbmVkKFBZX1VJTlQzMl9UKSBcCi0gICAgICAgJiYgIWRlZmluZWQoSEFWRV9BTElHTkVEX1JFUVVJUkVEKSkKKyMgIGlmbmRlZiBIQVZFX0FMSUdORURfUkVRVUlSRUQKICMgICAgZGVmaW5lIFB5X0hBU0hfQUxHT1JJVEhNIFB5X0hBU0hfU0lQSEFTSDI0CiAjICBlbHNlCiAjICAgIGRlZmluZSBQeV9IQVNIX0FMR09SSVRITSBQeV9IQVNIX0ZOVgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWxpZmVjeWNsZS5oIGIvSW5jbHVkZS9weWxpZmVjeWNsZS5oCmluZGV4IGNjZGViZTIuLjVhNjc2NjYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlsaWZlY3ljbGUuaAorKysgYi9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIFB5QVBJX0ZVTkModm9pZCkgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCwgaW50KTsKICNlbmRpZgogUHlBUElfRlVOQyh2b2lkKSBQeV9GaW5hbGl6ZSh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBQeV9GaW5hbGl6ZUV4KHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5X0lzSW5pdGlhbGl6ZWQodm9pZCk7CiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKik7CkBAIC0xMDYsNiArMTA3LDcgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlTbGljZV9GaW5pKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlUeXBlX0Zpbmkodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVJhbmRvbV9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUFzeW5jR2VuX0Zpbmkodm9pZCk7CiAKIFB5QVBJX0RBVEEoUHlUaHJlYWRTdGF0ZSAqKSBfUHlfRmluYWxpemluZzsKICNlbmRpZgpAQCAtMTE1LDggKzExNywxMSBAQAogUHlBUElfRlVOQyhQeU9TX3NpZ2hhbmRsZXJfdCkgUHlPU19nZXRzaWcoaW50KTsKIFB5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1Nfc2V0c2lnKGludCwgUHlPU19zaWdoYW5kbGVyX3QpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBSYW5kb20gKi8KLVB5QVBJX0ZVTkMoaW50KSBfUHlPU19VUmFuZG9tICh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7CitQeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7CitQeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbU5vbmJsb2NrKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWFjcm8uaCBiL0luY2x1ZGUvcHltYWNyby5oCmluZGV4IDNmNmY1ZGMuLjJhODM5YWIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltYWNyby5oCisrKyBiL0luY2x1ZGUvcHltYWNyby5oCkBAIC0xOCw2ICsxOCw5IEBACiAgICBieSAiX19MSU5FX18iLiAqLwogI2RlZmluZSBQeV9TVFJJTkdJRlkoeCkgX1B5X1hTVFJJTkdJRlkoeCkKIAorLyogR2V0IHRoZSBzaXplIG9mIGEgc3RydWN0dXJlIG1lbWJlciBpbiBieXRlcyAqLworI2RlZmluZSBQeV9NRU1CRVJfU0laRSh0eXBlLCBtZW1iZXIpIHNpemVvZigoKHR5cGUgKikwKS0+bWVtYmVyKQorCiAvKiBBcmd1bWVudCBtdXN0IGJlIGEgY2hhciBvciBhbiBpbnQgaW4gWy0xMjgsIDEyN10gb3IgWzAsIDI1NV0uICovCiAjZGVmaW5lIFB5X0NIQVJNQVNLKGMpICgodW5zaWduZWQgY2hhcikoKGMpICYgMHhmZikpCiAKQEAgLTM2LDYgKzM5LDEwIEBACiAjZGVmaW5lIFB5X0JVSUxEX0FTU0VSVF9FWFBSKGNvbmQpIFwKICAgICAoc2l6ZW9mKGNoYXIgWzEgLSAyKiEoY29uZCldKSAtIDEpCiAKKyNkZWZpbmUgUHlfQlVJTERfQVNTRVJUKGNvbmQpICBkbyB7ICAgICAgICAgXAorICAgICAgICAodm9pZClQeV9CVUlMRF9BU1NFUlRfRVhQUihjb25kKTsgICBcCisgICAgfSB3aGlsZSgwKQorCiAvKiBHZXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHZpc2libGUgYXJyYXkKIAogICAgVGhpcyBkb2VzIG5vdCB3b3JrIG9uIHBvaW50ZXJzLCBvciBhcnJheXMgZGVjbGFyZWQgYXMgW10sIG9yIGZ1bmN0aW9uCkBAIC03NSwxMiArODIsMTIgQEAKICNkZWZpbmUgX1B5X1NJWkVfUk9VTkRfVVAobiwgYSkgKCgoc2l6ZV90KShuKSArIFwKICAgICAgICAgKHNpemVfdCkoKGEpIC0gMSkpICYgfihzaXplX3QpKChhKSAtIDEpKQogLyogUm91bmQgcG9pbnRlciAicCIgZG93biB0byB0aGUgY2xvc2VzdCAiYSItYWxpZ25lZCBhZGRyZXNzIDw9ICJwIi4gKi8KLSNkZWZpbmUgX1B5X0FMSUdOX0RPV04ocCwgYSkgKCh2b2lkICopKChQeV91aW50cHRyX3QpKHApICYgfihQeV91aW50cHRyX3QpKChhKSAtIDEpKSkKKyNkZWZpbmUgX1B5X0FMSUdOX0RPV04ocCwgYSkgKCh2b2lkICopKCh1aW50cHRyX3QpKHApICYgfih1aW50cHRyX3QpKChhKSAtIDEpKSkKIC8qIFJvdW5kIHBvaW50ZXIgInAiIHVwIHRvIHRoZSBjbG9zZXN0ICJhIi1hbGlnbmVkIGFkZHJlc3MgPj0gInAiLiAqLwotI2RlZmluZSBfUHlfQUxJR05fVVAocCwgYSkgKCh2b2lkICopKCgoUHlfdWludHB0cl90KShwKSArIFwKLSAgICAgICAgKFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpICYgfihQeV91aW50cHRyX3QpKChhKSAtIDEpKSkKKyNkZWZpbmUgX1B5X0FMSUdOX1VQKHAsIGEpICgodm9pZCAqKSgoKHVpbnRwdHJfdCkocCkgKyBcCisgICAgICAgICh1aW50cHRyX3QpKChhKSAtIDEpKSAmIH4odWludHB0cl90KSgoYSkgLSAxKSkpCiAvKiBDaGVjayBpZiBwb2ludGVyICJwIiBpcyBhbGlnbmVkIHRvICJhIi1ieXRlcyBib3VuZGFyeS4gKi8KLSNkZWZpbmUgX1B5X0lTX0FMSUdORUQocCwgYSkgKCEoKFB5X3VpbnRwdHJfdCkocCkgJiAoUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisjZGVmaW5lIF9QeV9JU19BTElHTkVEKHAsIGEpICghKCh1aW50cHRyX3QpKHApICYgKHVpbnRwdHJfdCkoKGEpIC0gMSkpKQogCiAjaWZkZWYgX19HTlVDX18KICNkZWZpbmUgUHlfVU5VU0VEKG5hbWUpIF91bnVzZWRfICMjIG5hbWUgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYXRoLmggYi9JbmNsdWRlL3B5bWF0aC5oCmluZGV4IDFjOGQ3MTguLjcyMTZhMDkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltYXRoLmgKKysrIGIvSW5jbHVkZS9weW1hdGguaApAQCAtNTUsNiArNTUsMTIgQEAKICNkZWZpbmUgUHlfTUFUSF9FIDIuNzE4MjgxODI4NDU5MDQ1MjM1NAogI2VuZGlmCiAKKy8qIFRhdSAoMnBpKSB0byA0MCBkaWdpdHMsIHRha2VuIGZyb20gdGF1ZGF5LmNvbS90YXUtZGlnaXRzLiAqLworI2lmbmRlZiBQeV9NQVRIX1RBVQorI2RlZmluZSBQeV9NQVRIX1RBVSA2LjI4MzE4NTMwNzE3OTU4NjQ3NjkyNTI4Njc2NjU1OTAwNTc2ODM5NDNMCisjZW5kaWYKKworCiAvKiBPbiB4ODYsIFB5X0ZPUkNFX0RPVUJMRSBmb3JjZXMgYSBmbG9hdGluZy1wb2ludCBudW1iZXIgb3V0IG9mIGFuIHg4NyBGUFUKICAgIHJlZ2lzdGVyIGFuZCBpbnRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbiwgcm91bmRpbmcgZnJvbSBleHRlbmRlZAogICAgcHJlY2lzaW9uIHRvIGRvdWJsZSBwcmVjaXNpb24gaW4gdGhlIHByb2Nlc3MuICBPbiBvdGhlciBwbGF0Zm9ybXMgaXQgZG9lcwpAQCAtMTY5LDcgKzE3NSw3IEBACiAgICAgICAgICNwcmFnbWEgZmxvYXRfY29udHJvbCAocG9wKQogICAgICAgICAjZGVmaW5lIFB5X05BTiBfX2ljY19uYW4oKQogICAgICNlbHNlIC8qIElDQ19OQU5fUkVMQVhFRCBhcyBkZWZhdWx0IGZvciBJbnRlbCBDb21waWxlciAqLwotICAgICAgICBzdGF0aWMgdW5pb24geyB1bnNpZ25lZCBjaGFyIGJ1Zls4XTsgZG91YmxlIF9faWNjX25hbjsgfSBfX25hbl9zdG9yZSA9IHswLDAsMCwwLDAsMCwweGY4LDB4N2Z9OworICAgICAgICBzdGF0aWMgY29uc3QgdW5pb24geyB1bnNpZ25lZCBjaGFyIGJ1Zls4XTsgZG91YmxlIF9faWNjX25hbjsgfSBfX25hbl9zdG9yZSA9IHswLDAsMCwwLDAsMCwweGY4LDB4N2Z9OwogICAgICAgICAjZGVmaW5lIFB5X05BTiAoX19uYW5fc3RvcmUuX19pY2NfbmFuKQogICAgICNlbmRpZiAvKiBJQ0NfTkFOX1NUUklDVCAqLwogI2VuZGlmIC8qIF9fSU5URUxfQ09NUElMRVIgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltZW0uaCBiL0luY2x1ZGUvcHltZW0uaAppbmRleCAwNDNkYjY0Li5jZTYzYmY4IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWVtLmgKKysrIGIvSW5jbHVkZS9weW1lbS5oCkBAIC0xNiw4ICsxNiw1MSBAQAogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1Jhd0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1Jhd1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9SYXdGcmVlKHZvaWQgKnB0cik7CisKKy8qIENvbmZpZ3VyZSB0aGUgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzLiBQYXNzIE5VTEwgdG8gdXNlIGRlZmF1bHQKKyAgIGFsbG9jYXRvcnMuICovCitQeUFQSV9GVU5DKGludCkgX1B5TWVtX1NldHVwQWxsb2NhdG9ycyhjb25zdCBjaGFyICpvcHQpOworCisjaWZkZWYgV0lUSF9QWU1BTExPQworUHlBUElfRlVOQyhpbnQpIF9QeU1lbV9QeW1hbGxvY0VuYWJsZWQodm9pZCk7CiAjZW5kaWYKIAorLyogSWRlbnRpZmllciBvZiBhbiBhZGRyZXNzIHNwYWNlIChkb21haW4pIGluIHRyYWNlbWFsbG9jICovCit0eXBlZGVmIHVuc2lnbmVkIGludCBfUHlUcmFjZU1hbGxvY19kb21haW5fdDsKKworLyogVHJhY2sgYW4gYWxsb2NhdGVkIG1lbW9yeSBibG9jayBpbiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmV0dXJuIC0xIG9uIGVycm9yIChmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IHRvIHN0b3JlCisgICB0aGUgdHJhY2UpLgorCisgICBSZXR1cm4gLTIgaWYgdHJhY2VtYWxsb2MgaXMgZGlzYWJsZWQuCisKKyAgIElmIG1lbW9yeSBibG9jayBpcyBhbHJlYWR5IHRyYWNrZWQsIHVwZGF0ZSB0aGUgZXhpc3RpbmcgdHJhY2UuICovCitQeUFQSV9GVU5DKGludCkgX1B5VHJhY2VNYWxsb2NfVHJhY2soCisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLAorICAgIHVpbnRwdHJfdCBwdHIsCisgICAgc2l6ZV90IHNpemUpOworCisvKiBVbnRyYWNrIGFuIGFsbG9jYXRlZCBtZW1vcnkgYmxvY2sgaW4gdGhlIHRyYWNlbWFsbG9jIG1vZHVsZS4KKyAgIERvIG5vdGhpbmcgaWYgdGhlIGJsb2NrIHdhcyBub3QgdHJhY2tlZC4KKworICAgUmV0dXJuIC0yIGlmIHRyYWNlbWFsbG9jIGlzIGRpc2FibGVkLCBvdGhlcndpc2UgcmV0dXJuIDAuICovCitQeUFQSV9GVU5DKGludCkgX1B5VHJhY2VNYWxsb2NfVW50cmFjaygKKyAgICBfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sCisgICAgdWludHB0cl90IHB0cik7CisKKy8qIEdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuCisKKyAgIFJldHVybiBhIHR1cGxlIG9mIChmaWxlbmFtZTogc3RyLCBsaW5lbm86IGludCkgdHVwbGVzLgorCisgICBSZXR1cm4gTm9uZSBpZiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlIGlzIGRpc2FibGVkIG9yIGlmIHRoZSBtZW1vcnkgYmxvY2sKKyAgIGlzIG5vdCB0cmFja2VkIGJ5IHRyYWNlbWFsbG9jLgorCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFjaygKKyAgICBfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sCisgICAgdWludHB0cl90IHB0cik7CisjZW5kaWYgICAvKiAhUHlfTElNSVRFRF9BUEkgKi8KKwogCiAvKiBCRVdBUkU6CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlwb3J0LmggYi9JbmNsdWRlL3B5cG9ydC5oCmluZGV4IGU3ZTUxNzguLjIwZjNkYjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlwb3J0LmgKKysrIGIvSW5jbHVkZS9weXBvcnQuaApAQCAtMywxNSArMyw3IEBACiAKICNpbmNsdWRlICJweWNvbmZpZy5oIiAvKiBpbmNsdWRlIGZvciBkZWZpbmVzICovCiAKLS8qIFNvbWUgdmVyc2lvbnMgb2YgSFAtVVggJiBTb2xhcmlzIG5lZWQgaW50dHlwZXMuaCBmb3IgaW50MzJfdCwKLSAgIElOVDMyX01BWCwgZXRjLiAqLwotI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAogI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfU1RESU5UX0gKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNlbmRpZgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIFN5bWJvbHMgYW5kIG1hY3JvcyB0byBzdXBwbHkgcGxhdGZvcm0taW5kZXBlbmRlbnQgaW50ZXJmYWNlcyB0byBiYXNpYwpAQCAtMzEsMTQgKzIzLDYgQEAKIE1lYW5pbmc6ICBFeHRyYSBjaGVja3MgY29tcGlsZWQgaW4gZm9yIGRlYnVnIG1vZGUuCiBVc2VkIGluOiAgUHlfU0FGRV9ET1dOQ0FTVAogCi1IQVZFX1VJTlRQVFJfVAotTWVhbmluZzogIFRoZSBDOVggdHlwZSB1aW50cHRyX3QgaXMgc3VwcG9ydGVkIGJ5IHRoZSBjb21waWxlcgotVXNlZCBpbjogIFB5X3VpbnRwdHJfdAotCi1IQVZFX0xPTkdfTE9ORwotTWVhbmluZzogIFRoZSBjb21waWxlciBzdXBwb3J0cyB0aGUgQyB0eXBlICJsb25nIGxvbmciCi1Vc2VkIGluOiAgUFlfTE9OR19MT05HCi0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiB0eXBlZGVmcyBmb3Igc29tZSBDOVgtZGVmaW5lZCBzeW5vbnltcyBmb3IgaW50ZWdyYWwgdHlwZXMuCkBAIC01Myw5MSArMzcsMzAgQEAKICAqIGludGVncmFsIHN5bm9ueW1zLiAgT25seSBkZWZpbmUgdGhlIG9uZXMgd2UgYWN0dWFsbHkgbmVlZC4KICAqLwogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKKy8vIGxvbmcgbG9uZyBpcyByZXF1aXJlZCBub3cuIERlZmluZSBIQVZFX0xPTkdfTE9ORyB1bmNvbmRpdGlvbmFsbHkgZm9yCisvLyBjb21wYXRpYmlsaXR5LgorI2RlZmluZSBIQVZFX0xPTkdfTE9ORwogI2lmbmRlZiBQWV9MT05HX0xPTkcKICNkZWZpbmUgUFlfTE9OR19MT05HIGxvbmcgbG9uZwotI2lmIGRlZmluZWQoTExPTkdfTUFYKQogLyogSWYgTExPTkdfTUFYIGlzIGRlZmluZWQgaW4gbGltaXRzLmgsIHVzZSB0aGF0LiAqLwogI2RlZmluZSBQWV9MTE9OR19NSU4gTExPTkdfTUlOCiAjZGVmaW5lIFBZX0xMT05HX01BWCBMTE9OR19NQVgKICNkZWZpbmUgUFlfVUxMT05HX01BWCBVTExPTkdfTUFYCi0jZWxpZiBkZWZpbmVkKF9fTE9OR19MT05HX01BWF9fKQotLyogT3RoZXJ3aXNlLCBpZiBHQ0MgaGFzIGEgYnVpbHRpbiBkZWZpbmUsIHVzZSB0aGF0LiAgKERlZmluaXRpb24gb2YKLSAqIFBZX0xMT05HX01JTiBhc3N1bWVzIHR3bydzIGNvbXBsZW1lbnQgd2l0aCBubyB0cmFwIHJlcHJlc2VudGF0aW9uLikgKi8KLSNkZWZpbmUgUFlfTExPTkdfTUFYIF9fTE9OR19MT05HX01BWF9fCi0jZGVmaW5lIFBZX0xMT05HX01JTiAoLVBZX0xMT05HX01BWCAtIDEpCi0jZGVmaW5lIFBZX1VMTE9OR19NQVggKFBZX0xMT05HX01BWCAqIFB5X1VMTCgyKSArIDEpCi0jZWxpZiBkZWZpbmVkKFNJWkVPRl9MT05HX0xPTkcpCi0vKiBPdGhlcndpc2UgY29tcHV0ZSBmcm9tIFNJWkVPRl9MT05HX0xPTkcsIGFzc3VtaW5nIHR3bydzIGNvbXBsZW1lbnQsIG5vCi0gICBwYWRkaW5nIGJpdHMsIGFuZCBubyB0cmFwIHJlcHJlc2VudGF0aW9uLiAgTm90ZTogUFlfVUxMT05HX01BWCB3YXMKLSAgIHByZXZpb3VzbHkgI2RlZmluZWQgYXMgKH4wVUxMKSBoZXJlOyBidXQgdGhhdCdsbCBnaXZlIHRoZSB3cm9uZyB2YWx1ZSBpbiBhCi0gICBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbiBvbiBzeXN0ZW1zIHdoZXJlIGxvbmcgbG9uZyAhPSBpbnRtYXhfdC4gKi8KLSNkZWZpbmUgUFlfTExPTkdfTUFYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoMSArIDIgKiAoKFB5X0xMKDEpIDw8IChDSEFSX0JJVCAqIFNJWkVPRl9MT05HX0xPTkcgLSAyKSkgLSAxKSkKLSNkZWZpbmUgUFlfTExPTkdfTUlOICgtUFlfTExPTkdfTUFYIC0gMSkKLSNkZWZpbmUgUFlfVUxMT05HX01BWCAoUFlfTExPTkdfTUFYICogUHlfVUxMKDIpICsgMSkKLSNlbmRpZiAvKiBMTE9OR19NQVggKi8KLSNlbmRpZgotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCi0KLS8qIGEgYnVpbGQgd2l0aCAzMC1iaXQgZGlnaXRzIGZvciBQeXRob24gaW50ZWdlcnMgbmVlZHMgYW4gZXhhY3Qtd2lkdGgKLSAqIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgdG8gc3RvcmUgdGhvc2UgZGlnaXRzLiAgKFdlIGNvdWxkIGp1c3QgdXNlCi0gKiB0eXBlICd1bnNpZ25lZCBsb25nJywgYnV0IHRoYXQgd291bGQgYmUgd2FzdGVmdWwgb24gYSBzeXN0ZW0gd2hlcmUgbG9uZ3MKLSAqIGFyZSA2NC1iaXRzLikgIE9uIFVuaXggc3lzdGVtcywgdGhlIGF1dG9jb25mIG1hY3JvIEFDX1RZUEVfVUlOVDMyX1QgZGVmaW5lcwotICogdWludDMyX3QgdG8gYmUgc3VjaCBhIHR5cGUgdW5sZXNzIHN0ZGludC5oIG9yIGludHR5cGVzLmggZGVmaW5lcyB1aW50MzJfdC4KLSAqIEhvd2V2ZXIsIGl0IGRvZXNuJ3Qgc2V0IEhBVkVfVUlOVDMyX1QsIHNvIHdlIGRvIHRoYXQgaGVyZS4KLSAqLwotI2lmZGVmIHVpbnQzMl90Ci0jZGVmaW5lIEhBVkVfVUlOVDMyX1QgMQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX1VJTlQzMl9UCi0jaWZuZGVmIFBZX1VJTlQzMl9UCiAjZGVmaW5lIFBZX1VJTlQzMl9UIHVpbnQzMl90Ci0jZW5kaWYKLSNlbmRpZgotCi0vKiBNYWNyb3MgZm9yIGEgNjQtYml0IHVuc2lnbmVkIGludGVnZXIgdHlwZTsgdXNlZCBmb3IgdHlwZSAndHdvZGlnaXRzJyBpbiB0aGUKLSAqIGludGVnZXIgaW1wbGVtZW50YXRpb24sIHdoZW4gMzAtYml0IGRpZ2l0cyBhcmUgZW5hYmxlZC4KLSAqLwotI2lmZGVmIHVpbnQ2NF90Ci0jZGVmaW5lIEhBVkVfVUlOVDY0X1QgMQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1VJTlQ2NF9UCi0jaWZuZGVmIFBZX1VJTlQ2NF9UCiAjZGVmaW5lIFBZX1VJTlQ2NF9UIHVpbnQ2NF90Ci0jZW5kaWYKLSNlbmRpZgogCiAvKiBTaWduZWQgdmFyaWFudHMgb2YgdGhlIGFib3ZlICovCi0jaWZkZWYgaW50MzJfdAotI2RlZmluZSBIQVZFX0lOVDMyX1QgMQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0lOVDMyX1QKLSNpZm5kZWYgUFlfSU5UMzJfVAogI2RlZmluZSBQWV9JTlQzMl9UIGludDMyX3QKLSNlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBpbnQ2NF90Ci0jZGVmaW5lIEhBVkVfSU5UNjRfVCAxCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfSU5UNjRfVAotI2lmbmRlZiBQWV9JTlQ2NF9UCiAjZGVmaW5lIFBZX0lOVDY0X1QgaW50NjRfdAotI2VuZGlmCi0jZW5kaWYKIAogLyogSWYgUFlMT05HX0JJVFNfSU5fRElHSVQgaXMgbm90IGRlZmluZWQgdGhlbiB3ZSdsbCB1c2UgMzAtYml0IGRpZ2l0cyBpZiBhbGwKICAgIHRoZSBuZWNlc3NhcnkgaW50ZWdlciB0eXBlcyBhcmUgYXZhaWxhYmxlLCBhbmQgd2UncmUgb24gYSA2NC1iaXQgcGxhdGZvcm0KICAgIChhcyBkZXRlcm1pbmVkIGJ5IFNJWkVPRl9WT0lEX1ApOyBvdGhlcndpc2Ugd2UgdXNlIDE1LWJpdCBkaWdpdHMuICovCiAKICNpZm5kZWYgUFlMT05HX0JJVFNfSU5fRElHSVQKLSNpZiAoZGVmaW5lZCBIQVZFX1VJTlQ2NF9UICYmIGRlZmluZWQgSEFWRV9JTlQ2NF9UICYmIFwKLSAgICAgZGVmaW5lZCBIQVZFX1VJTlQzMl9UICYmIGRlZmluZWQgSEFWRV9JTlQzMl9UICYmIFNJWkVPRl9WT0lEX1AgPj0gOCkKKyNpZiBTSVpFT0ZfVk9JRF9QID49IDgKICNkZWZpbmUgUFlMT05HX0JJVFNfSU5fRElHSVQgMzAKICNlbHNlCiAjZGVmaW5lIFBZTE9OR19CSVRTX0lOX0RJR0lUIDE1CkBAIC0xNDksMjYgKzcyLDkgQEAKICAqIHdpdGhvdXQgbG9zcyBvZiBpbmZvcm1hdGlvbi4gIFNpbWlsYXJseSBmb3IgaW50cHRyX3QsIHdydCBhIHNpZ25lZAogICogaW50ZWdyYWwgdHlwZS4KICAqLwotI2lmZGVmIEhBVkVfVUlOVFBUUl9UCiB0eXBlZGVmIHVpbnRwdHJfdCAgICAgICBQeV91aW50cHRyX3Q7CiB0eXBlZGVmIGludHB0cl90ICAgICAgICBQeV9pbnRwdHJfdDsKIAotI2VsaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfSU5UCi10eXBlZGVmIHVuc2lnbmVkIGludCAgICBQeV91aW50cHRyX3Q7Ci10eXBlZGVmIGludCAgICAgICAgICAgICBQeV9pbnRwdHJfdDsKLQotI2VsaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORwotdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgUHlfdWludHB0cl90OwotdHlwZWRlZiBsb25nICAgICAgICAgICAgUHlfaW50cHRyX3Q7Ci0KLSNlbGlmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIChTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HX0xPTkcpCi10eXBlZGVmIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAgIFB5X3VpbnRwdHJfdDsKLXR5cGVkZWYgUFlfTE9OR19MT05HICAgICAgICAgICAgUHlfaW50cHRyX3Q7Ci0KLSNlbHNlCi0jICAgZXJyb3IgIlB5dGhvbiBuZWVkcyBhIHR5cGVkZWYgZm9yIFB5X3VpbnRwdHJfdCBpbiBweXBvcnQuaC4iCi0jZW5kaWYgLyogSEFWRV9VSU5UUFRSX1QgKi8KLQogLyogUHlfc3NpemVfdCBpcyBhIHNpZ25lZCBpbnRlZ3JhbCB0eXBlIHN1Y2ggdGhhdCBzaXplb2YoUHlfc3NpemVfdCkgPT0KICAqIHNpemVvZihzaXplX3QpLiAgQzk5IGRvZXNuJ3QgZGVmaW5lIHN1Y2ggYSB0aGluZyBkaXJlY3RseSAoc2l6ZV90IGlzIGFuCiAgKiB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlKS4gIFNlZSBQRVAgMzUzIGZvciBkZXRhaWxzLgpAQCAtMTk1LDE2ICsxMDEsOCBAQAogdHlwZWRlZiBpbnQgUHlfc3NpemVfY2xlYW5fdDsKICNlbmRpZgogCi0vKiBMYXJnZXN0IHBvc3NpYmxlIHZhbHVlIG9mIHNpemVfdC4KLSAgIFNJWkVfTUFYIGlzIHBhcnQgb2YgQzk5LCBzbyBpdCBtaWdodCBiZSBkZWZpbmVkIG9uIHNvbWUKLSAgIHBsYXRmb3Jtcy4gSWYgaXQgaXMgbm90IGRlZmluZWQsIChzaXplX3QpLTEgaXMgYSBwb3J0YWJsZQotICAgZGVmaW5pdGlvbiBmb3IgQzg5LCBkdWUgdG8gdGhlIHdheSBzaWduZWQtPnVuc2lnbmVkCi0gICBjb252ZXJzaW9uIGlzIGRlZmluZWQuICovCi0jaWZkZWYgU0laRV9NQVgKKy8qIExhcmdlc3QgcG9zc2libGUgdmFsdWUgb2Ygc2l6ZV90LiAqLwogI2RlZmluZSBQWV9TSVpFX01BWCBTSVpFX01BWAotI2Vsc2UKLSNkZWZpbmUgUFlfU0laRV9NQVggKChzaXplX3QpLTEpCi0jZW5kaWYKIAogLyogTGFyZ2VzdCBwb3NpdGl2ZSB2YWx1ZSBvZiB0eXBlIFB5X3NzaXplX3QuICovCiAjZGVmaW5lIFBZX1NTSVpFX1RfTUFYICgoUHlfc3NpemVfdCkoKChzaXplX3QpLTEpPj4xKSkKQEAgLTI0NywyMiArMTQ1LDYgQEAKICMgICBlbmRpZgogI2VuZGlmCiAKLS8qIFBZX0ZPUk1BVF9MT05HX0xPTkcgaXMgYW5hbG9nb3VzIHRvIFBZX0ZPUk1BVF9TSVpFX1QgYWJvdmUsIGJ1dCBmb3IKLSAqIHRoZSBsb25nIGxvbmcgdHlwZSBpbnN0ZWFkIG9mIHRoZSBzaXplX3QgdHlwZS4gIEl0J3Mgb25seSBhdmFpbGFibGUKLSAqIHdoZW4gSEFWRV9MT05HX0xPTkcgaXMgZGVmaW5lZC4gVGhlICJoaWdoIGxldmVsIiBQeXRob24gZm9ybWF0Ci0gKiBmdW5jdGlvbnMgbGlzdGVkIGFib3ZlIHdpbGwgaW50ZXJwcmV0ICJsbGQiIG9yICJsbHUiIGNvcnJlY3RseSBvbgotICogYWxsIHBsYXRmb3Jtcy4KLSAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jICAgaWZuZGVmIFBZX0ZPUk1BVF9MT05HX0xPTkcKLSMgICAgICAgaWZkZWYgTVNfV0lORE9XUwotIyAgICAgICAgICAgZGVmaW5lIFBZX0ZPUk1BVF9MT05HX0xPTkcgIkk2NCIKLSMgICAgICAgZWxzZQotIyAgICAgICAgICAgZXJyb3IgIlRoaXMgcGxhdGZvcm0ncyBweWNvbmZpZy5oIG5lZWRzIHRvIGRlZmluZSBQWV9GT1JNQVRfTE9OR19MT05HIgotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0jZW5kaWYKLQogLyogUHlfTE9DQUwgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBzdGF0aWMgdG8gZ2V0IHRoZSBmYXN0ZXN0IHBvc3NpYmxlIGNhbGxpbmcKICAqIGNvbnZlbnRpb24gZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBsb2NhbCB0byBhIGdpdmVuIG1vZHVsZS4KICAqCkBAIC0yOTgsMjYgKzE4MCw5IEBACiAjZGVmaW5lIFB5X0xPQ0FMX0lOTElORSh0eXBlKSBzdGF0aWMgdHlwZQogI2VuZGlmCiAKLS8qIFB5X01FTUNQWSBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIG1lbWNweSBpbiBjYXNlcyB3aGVyZSB0aGUgY29waWVkIGJsb2NrcwotICogYXJlIG9mdGVuIHZlcnkgc2hvcnQuICBXaGlsZSBtb3N0IHBsYXRmb3JtcyBoYXZlIGhpZ2hseSBvcHRpbWl6ZWQgY29kZSBmb3IKLSAqIGxhcmdlIHRyYW5zZmVycywgdGhlIHNldHVwIGNvc3RzIGZvciBtZW1jcHkgYXJlIG9mdGVuIHF1aXRlIGhpZ2guICBNRU1DUFkKLSAqIHNvbHZlcyB0aGlzIGJ5IGRvaW5nIHNob3J0IGNvcGllcyAiaW4gbGluZSIuCi0gKi8KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jZGVmaW5lIFB5X01FTUNQWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHNpemVfdCBpXywgbl8gPSAobGVuZ3RoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNoYXIgKnRfID0gKHZvaWQqKSAodGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNvbnN0IGNoYXIgKnNfID0gKHZvaWQqKSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChuXyA+PSAxNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBtZW1jcHkodF8sIHNfLCBuXyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBmb3IgKGlfID0gMDsgaV8gPCBuXzsgaV8rKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgdF9baV9dID0gc19baV9dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoMCkKLSNlbHNlCisvKiBQeV9NRU1DUFkgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksCisgKiBzZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyODEyNiAqLwogI2RlZmluZSBQeV9NRU1DUFkgbWVtY3B5Ci0jZW5kaWYKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCkBAIC01NzAsMTggKzQzNSwxOCBAQAogI2RlZmluZSBIQVZFX1BZX1NFVF81M0JJVF9QUkVDSVNJT04gMQogI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9IRUFERVIgXAogICB1bnNpZ25lZCBpbnQgb2xkX2ZwY3IsIG5ld19mcGNyCi0jZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX1NUQVJUCQkJCQlcCi0gIGRvIHsJCQkJCQkJCQlcCi0gICAgX19hc21fXyAoImZtb3ZlLmwgJSVmcGNyLCUwIiA6ICI9ZyIgKG9sZF9mcGNyKSk7CQkJXAotICAgIC8qIFNldCBkb3VibGUgcHJlY2lzaW9uIC8gcm91bmQgdG8gbmVhcmVzdC4gICovCQkJXAotICAgIG5ld19mcGNyID0gKG9sZF9mcGNyICYgfjB4ZjApIHwgMHg4MDsJCQkJXAotICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikJCQkJCQlcCi0gICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG5ld19mcGNyKSk7CVwKKyNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fU1RBUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfX2FzbV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAob2xkX2ZwY3IpKTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBTZXQgZG91YmxlIHByZWNpc2lvbiAvIHJvdW5kIHRvIG5lYXJlc3QuICAqLyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBuZXdfZnBjciA9IChvbGRfZnBjciAmIH4weGYwKSB8IDB4ODA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAobmV3X2ZwY3IpKTsgICAgICAgIFwKICAgfSB3aGlsZSAoMCkKLSNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fRU5ECQkJCQlcCi0gIGRvIHsJCQkJCQkJCQlcCi0gICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKQkJCQkJCVwKLSAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAob2xkX2ZwY3IpKTsJXAorI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9FTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChvbGRfZnBjcikpOyAgICAgICAgXAogICB9IHdoaWxlICgwKQogI2VuZGlmCiAKQEAgLTg1MCwxMCArNzE1LDYgQEAKICNwcmFnbWEgZXJyb3JfbWVzc2FnZXMgKG9mZixFX0VORF9PRl9MT09QX0NPREVfTk9UX1JFQUNIRUQpCiAjZW5kaWYKIAotLyoKLSAqIE9sZGVyIE1pY3Jvc29mdCBjb21waWxlcnMgZG9uJ3Qgc3VwcG9ydCB0aGUgQzk5IGxvbmcgbG9uZyBsaXRlcmFsIHN1ZmZpeGVzLAotICogc28gdGhlc2Ugd2lsbCBiZSBkZWZpbmVkIGluIFBDL3B5Y29uZmlnLmggZm9yIHRob3NlIGNvbXBpbGVycy4KLSAqLwogI2lmbmRlZiBQeV9MTAogI2RlZmluZSBQeV9MTCh4KSB4IyNMTAogI2VuZGlmCkBAIC04NjIsMTUgKzcyMyw3IEBACiAjZGVmaW5lIFB5X1VMTCh4KSBQeV9MTCh4IyNVKQogI2VuZGlmCiAKLSNpZmRlZiBWQV9MSVNUX0lTX0FSUkFZCi0jZGVmaW5lIFB5X1ZBX0NPUFkoeCwgeSkgUHlfTUVNQ1BZKCh4KSwgKHkpLCBzaXplb2YodmFfbGlzdCkpCi0jZWxzZQotI2lmZGVmIF9fdmFfY29weQotI2RlZmluZSBQeV9WQV9DT1BZIF9fdmFfY29weQotI2Vsc2UKLSNkZWZpbmUgUHlfVkFfQ09QWSh4LCB5KSAoeCkgPSAoeSkKLSNlbmRpZgotI2VuZGlmCisjZGVmaW5lIFB5X1ZBX0NPUFkgdmFfY29weQogCiAvKgogICogQ29udmVuaWVudCBtYWNyb3MgdG8gZGVhbCB3aXRoIGVuZGlhbm5lc3Mgb2YgdGhlIHBsYXRmb3JtLiBXT1JEU19CSUdFTkRJQU4gaXMKQEAgLTkwNiw0ICs3NTksOCBAQAogI2VuZGlmIC8qIF9NU0NfVkVSID49IDE5MDAgKi8KICNlbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCiAKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CisjZW5kaWYKKwogI2VuZGlmIC8qIFB5X1BZUE9SVF9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RhdGUuaCBiL0luY2x1ZGUvcHlzdGF0ZS5oCmluZGV4IDA0OTlhNzQuLmFmYzNjMGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlzdGF0ZS5oCisrKyBiL0luY2x1ZGUvcHlzdGF0ZS5oCkBAIC04LDE0ICs4LDIxIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisvKiBUaGlzIGxpbWl0YXRpb24gaXMgZm9yIHBlcmZvcm1hbmNlIGFuZCBzaW1wbGljaXR5LiBJZiBuZWVkZWQgaXQgY2FuIGJlCityZW1vdmVkICh3aXRoIGVmZm9ydCkuICovCisjZGVmaW5lIE1BWF9DT19FWFRSQV9VU0VSUyAyNTUKKwogLyogU3RhdGUgc2hhcmVkIGJldHdlZW4gdGhyZWFkcyAqLwogCiBzdHJ1Y3QgX3RzOyAvKiBGb3J3YXJkICovCiBzdHJ1Y3QgX2lzOyAvKiBGb3J3YXJkICovCitzdHJ1Y3QgX2ZyYW1lOyAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBQeUZyYW1lT2JqZWN0LiAqLwogCiAjaWZkZWYgUHlfTElNSVRFRF9BUEkKIHR5cGVkZWYgc3RydWN0IF9pcyBQeUludGVycHJldGVyU3RhdGU7CiAjZWxzZQordHlwZWRlZiBQeU9iamVjdCogKCpfUHlGcmFtZUV2YWxGdW5jdGlvbikoc3RydWN0IF9mcmFtZSAqLCBpbnQpOworCiB0eXBlZGVmIHN0cnVjdCBfaXMgewogCiAgICAgc3RydWN0IF9pcyAqbmV4dDsKQEAgLTM2LDE5ICs0MywxNyBAQAogI2lmZGVmIEhBVkVfRExPUEVOCiAgICAgaW50IGRsb3BlbmZsYWdzOwogI2VuZGlmCi0jaWZkZWYgV0lUSF9UU0MKLSAgICBpbnQgdHNjZHVtcDsKLSNlbmRpZgogCiAgICAgUHlPYmplY3QgKmJ1aWx0aW5zX2NvcHk7CisgICAgUHlPYmplY3QgKmltcG9ydF9mdW5jOworICAgIC8qIEluaXRpYWxpemVkIHRvIFB5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KCkuICovCisgICAgX1B5RnJhbWVFdmFsRnVuY3Rpb24gZXZhbF9mcmFtZTsKIH0gUHlJbnRlcnByZXRlclN0YXRlOwogI2VuZGlmCiAKIAogLyogU3RhdGUgdW5pcXVlIHBlciB0aHJlYWQgKi8KIAotc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KLQogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUHlfdHJhY2VmdW5jIHJldHVybiAtMSB3aGVuIHJhaXNpbmcgYW4gZXhjZXB0aW9uLCBvciAwIGZvciBzdWNjZXNzLiAqLwogdHlwZWRlZiBpbnQgKCpQeV90cmFjZWZ1bmMpKFB5T2JqZWN0ICosIHN0cnVjdCBfZnJhbWUgKiwgaW50LCBQeU9iamVjdCAqKTsKQEAgLTEzNyw2ICsxNDIsMTIgQEAKICAgICBQeU9iamVjdCAqY29yb3V0aW5lX3dyYXBwZXI7CiAgICAgaW50IGluX2Nvcm91dGluZV93cmFwcGVyOwogCisgICAgUHlfc3NpemVfdCBjb19leHRyYV91c2VyX2NvdW50OworICAgIGZyZWVmdW5jIGNvX2V4dHJhX2ZyZWVmdW5jc1tNQVhfQ09fRVhUUkFfVVNFUlNdOworCisgICAgUHlPYmplY3QgKmFzeW5jX2dlbl9maXJzdGl0ZXI7CisgICAgUHlPYmplY3QgKmFzeW5jX2dlbl9maW5hbGl6ZXI7CisKICAgICAvKiBYWFggc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBhbHNvIGJlIGhlcmUgKi8KIAogfSBQeVRocmVhZFN0YXRlOwpAQCAtMTQ2LDcgKzE1Nyw5IEBACiBQeUFQSV9GVU5DKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKSBQeUludGVycHJldGVyU3RhdGVfTmV3KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfQ2xlYXIoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiAvKiBOZXcgaW4gMy4zICovCiBQeUFQSV9GVU5DKGludCkgUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKQEAgLTE1OCwxNCArMTcxLDIwIEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5VGhyZWFkU3RhdGVfTmV3KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYyhQeUludGVycHJldGVyU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRocmVhZFN0YXRlX0luaXQoUHlUaHJlYWRTdGF0ZSAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRTdGF0ZV9DbGVhcihQeVRocmVhZFN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZFN0YXRlX0RlbGV0ZShQeVRocmVhZFN0YXRlICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlUaHJlYWRTdGF0ZV9EZWxldGVFeGNlcHQoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNpZmRlZiBXSVRIX1RIUkVBRAogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQodm9pZCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIF9QeUdJTFN0YXRlX1JlaW5pdCh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlLiBUaGUgZ2xvYmFsIGludGVycHJldGVyIGxvY2sgbXVzdCBiZSBoZWxkLgpAQCAtMTczLDkgKzE5MiwxMSBAQAogICogdGhlIGNhbGxlciBuZWVkbid0IGNoZWNrIGZvciBOVUxMKS4gKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX0dldCh2b2lkKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogU2ltaWxhciB0byBQeVRocmVhZFN0YXRlX0dldCgpLCBidXQgZG9uJ3QgaXNzdWUgYSBmYXRhbCBlcnJvcgogICogaWYgaXQgaXMgTlVMTC4gKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQodm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX1N3YXAoUHlUaHJlYWRTdGF0ZSAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlUaHJlYWRTdGF0ZV9HZXREaWN0KHZvaWQpOwpAQCAtMjQxLDExICsyNjIsMjMgQEAKICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUodm9pZCk7CiAKLS8qIEhlbHBlci9kaWFnbm9zdGljIGZ1bmN0aW9uIC0gcmV0dXJuIDEgaWYgdGhlIGN1cnJlbnQgdGhyZWFkCi0gKiBjdXJyZW50bHkgaG9sZHMgdGhlIEdJTCwgMCBvdGhlcndpc2UKLSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogSXNzdWUgIzI2NTU4OiBGbGFnIHRvIGRpc2FibGUgUHlHSUxTdGF0ZV9DaGVjaygpLgorICAgSWYgc2V0IHRvIG5vbi16ZXJvLCBQeUdJTFN0YXRlX0NoZWNrKCkgYWx3YXlzIHJldHVybiAxLiAqLworUHlBUElfREFUQShpbnQpIF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQ7CisKKy8qIEhlbHBlci9kaWFnbm9zdGljIGZ1bmN0aW9uIC0gcmV0dXJuIDEgaWYgdGhlIGN1cnJlbnQgdGhyZWFkCisgICBjdXJyZW50bHkgaG9sZHMgdGhlIEdJTCwgMCBvdGhlcndpc2UuCisKKyAgIFRoZSBmdW5jdGlvbiByZXR1cm5zIDEgaWYgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCBpcyBub24temVyby4gKi8KIFB5QVBJX0ZVTkMoaW50KSBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpOworCisvKiBVbnNhZmUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzaW5nbGUgUHlJbnRlcnByZXRlclN0YXRlIHVzZWQgYnkgdGhpcyBwcm9jZXNzJworICAgR0lMU3RhdGUgaW1wbGVtZW50YXRpb24uCisKKyAgIFJldHVybiBOVUxMIGJlZm9yZSBfUHlHSUxTdGF0ZV9Jbml0KCkgaXMgY2FsbGVkIGFuZCBhZnRlciBfUHlHSUxTdGF0ZV9GaW5pKCkKKyAgIGlzIGNhbGxlZC4gKi8KK1B5QVBJX0ZVTkMoUHlJbnRlcnByZXRlclN0YXRlICopIF9QeUdJTFN0YXRlX0dldEludGVycHJldGVyU3RhdGVVbnNhZmUodm9pZCk7CiAjZW5kaWYKIAogI2VuZGlmICAgLyogI2lmZGVmIFdJVEhfVEhSRUFEICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RyaGV4LmggYi9JbmNsdWRlL3B5c3RyaGV4LmgKaW5kZXggMWRjMTI1NS4uNjZhMzBlMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0cmhleC5oCisrKyBiL0luY2x1ZGUvcHlzdHJoZXguaApAQCAtNSwxMCArNSwxMiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmV0dXJucyBhIHN0cigpIGNvbnRhaW5pbmcgdGhlIGhleCByZXByZXNlbnRhdGlvbiBvZiBhcmdidWYuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X3N0cmhleChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKTsKIC8qIFJldHVybnMgYSBieXRlcygpIGNvbnRhaW5pbmcgdGhlIEFTQ0lJIGhleCByZXByZXNlbnRhdGlvbiBvZiBhcmdidWYuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X3N0cmhleF9ieXRlcyhjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RydG9kLmggYi9JbmNsdWRlL3B5c3RydG9kLmgKaW5kZXggMjNmZDFjNi4uYzFlODRkZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0cnRvZC5oCisrKyBiL0luY2x1ZGUvcHlzdHJ0b2QuaApAQCAtMTksNiArMTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0eXBlKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKAorICAgIGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIGNvbnN0IGNoYXIgKndoYXQsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmFyZywKKyAgICBQeU9iamVjdCAqKCppbm5lcmZ1bmMpKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwgdm9pZCAqKSk7CisKIFB5QVBJX0ZVTkMoZG91YmxlKSBfUHlfcGFyc2VfaW5mX29yX25hbihjb25zdCBjaGFyICpwLCBjaGFyICoqZW5kcHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhvbnJ1bi5oIGIvSW5jbHVkZS9weXRob25ydW4uaAppbmRleCA5YzJlODEzLi5jZmEwYTlmIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhvbnJ1bi5oCisrKyBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKQEAgLTY2LDggKzY2LDggQEAKICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCiAgICAgY29uc3QgY2hhciogZW5jLAogICAgIGludCBzdGFydCwKLSAgICBjaGFyICpwczEsCi0gICAgY2hhciAqcHMyLAorICAgIGNvbnN0IGNoYXIgKnBzMSwKKyAgICBjb25zdCBjaGFyICpwczIsCiAgICAgUHlDb21waWxlckZsYWdzICpmbGFncywKICAgICBpbnQgKmVycmNvZGUsCiAgICAgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNzYsOCArNzYsOCBAQAogICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwKICAgICBjb25zdCBjaGFyKiBlbmMsCiAgICAgaW50IHN0YXJ0LAotICAgIGNoYXIgKnBzMSwKLSAgICBjaGFyICpwczIsCisgICAgY29uc3QgY2hhciAqcHMxLAorICAgIGNvbnN0IGNoYXIgKnBzMiwKICAgICBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLAogICAgIGludCAqZXJyY29kZSwKICAgICBQeUFyZW5hICphcmVuYSk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhyZWFkLmggYi9JbmNsdWRlL3B5dGhyZWFkLmgKaW5kZXggNmU5ZjMwMy4uZGQ2ODFiZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRocmVhZC5oCisrKyBiL0luY2x1ZGUvcHl0aHJlYWQuaApAQCAtMzcsMTkgKzM3LDE0IEBACiAgICBtb2R1bGUgZXhwb3NlcyBhIGhpZ2hlci1sZXZlbCBBUEksIHdpdGggdGltZW91dHMgZXhwcmVzc2VkIGluIHNlY29uZHMKICAgIGFuZCBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFsbG93ZWQuCiAqLwotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpCi0jZGVmaW5lIFBZX1RJTUVPVVRfVCBQWV9MT05HX0xPTkcKKyNkZWZpbmUgUFlfVElNRU9VVF9UIGxvbmcgbG9uZwogI2RlZmluZSBQWV9USU1FT1VUX01BWCBQWV9MTE9OR19NQVgKLSNlbHNlCi0jZGVmaW5lIFBZX1RJTUVPVVRfVCBsb25nCi0jZGVmaW5lIFBZX1RJTUVPVVRfTUFYIExPTkdfTUFYCi0jZW5kaWYKIAogLyogSW4gdGhlIE5UIEFQSSwgdGhlIHRpbWVvdXQgaXMgYSBEV09SRCBhbmQgaXMgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcyAqLwogI2lmIGRlZmluZWQgKE5UX1RIUkVBRFMpCi0jaWYgKFB5X0xMKDB4RkZGRkZGRkYpICogMTAwMCA8IFBZX1RJTUVPVVRfTUFYKQorI2lmIDB4RkZGRkZGRkZMTCAqIDEwMDAgPCBQWV9USU1FT1VUX01BWAogI3VuZGVmIFBZX1RJTUVPVVRfTUFYCi0jZGVmaW5lIFBZX1RJTUVPVVRfTUFYIChQeV9MTCgweEZGRkZGRkZGKSAqIDEwMDApCisjZGVmaW5lIFBZX1RJTUVPVVRfTUFYICgweEZGRkZGRkZGTEwgKiAxMDAwKQogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRpbWUuaCBiL0luY2x1ZGUvcHl0aW1lLmgKaW5kZXggNDk0MzIyYy4uODdhYzdmYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRpbWUuaAorKysgYi9JbmNsdWRlL3B5dGltZS5oCkBAIC0xMywxNiArMTMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpZmRlZiBQWV9JTlQ2NF9UCiAvKiBfUHlUaW1lX3Q6IFB5dGhvbiB0aW1lc3RhbXAgd2l0aCBzdWJzZWNvbmQgcHJlY2lzaW9uLiBJdCBjYW4gYmUgdXNlZCB0bwogICAgc3RvcmUgYSBkdXJhdGlvbiwgYW5kIHNvIGluZGlyZWN0bHkgYSBkYXRlIChyZWxhdGVkIHRvIGFub3RoZXIgZGF0ZSwgbGlrZQogICAgVU5JWCBlcG9jaCkuICovCi10eXBlZGVmIFBZX0lOVDY0X1QgX1B5VGltZV90OwordHlwZWRlZiBpbnQ2NF90IF9QeVRpbWVfdDsKICNkZWZpbmUgX1B5VGltZV9NSU4gUFlfTExPTkdfTUlOCiAjZGVmaW5lIF9QeVRpbWVfTUFYIFBZX0xMT05HX01BWAotI2Vsc2UKLSMgIGVycm9yICJfUHlUaW1lX3QgbmVlZCBzaWduZWQgNjQtYml0IGludGVnZXIgdHlwZSIKLSNlbmRpZgogCiB0eXBlZGVmIGVudW0gewogICAgIC8qIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpLgpAQCAtMzAsNyArMjYsMTAgQEAKICAgICBfUHlUaW1lX1JPVU5EX0ZMT09SPTAsCiAgICAgLyogUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikuCiAgICAgICAgRm9yIGV4YW1wbGUsIHVzZWQgZm9yIHRpbWVvdXQgdG8gd2FpdCAiYXQgbGVhc3QiIE4gc2Vjb25kcy4gKi8KLSAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkcKKyAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkc9MSwKKyAgICAvKiBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlci4KKyAgICAgICBGb3IgZXhhbXBsZSwgdXNlZCB0byByb3VuZCBmcm9tIGEgUHl0aG9uIGZsb2F0LiAqLworICAgIF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOCiB9IF9QeVRpbWVfcm91bmRfdDsKIAogLyogQ29udmVydCBhIHRpbWVfdCB0byBhIFB5TG9uZy4gKi8KQEAgLTc1LDcgKzc0LDcgQEAKICAgICAgICAgICAgICgoX1B5VGltZV90KShzZWNvbmRzKSAqICgxMDAwICogMTAwMCAqIDEwMDApKQogCiAvKiBDcmVhdGUgYSB0aW1lc3RhbXAgZnJvbSBhIG51bWJlciBvZiBuYW5vc2Vjb25kcy4gKi8KLVB5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhQWV9MT05HX0xPTkcgbnMpOworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKGxvbmcgbG9uZyBucyk7CiAKIC8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcyAoUHl0aG9uIGZsb2F0IG9yIGludCkgdG8gYSB0aW1ldGFtcC4KICAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLCByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLwpAQCAtMTg1LDYgKzE4NCwxNCBAQAogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBQeUFQSV9GVU5DKGludCkgX1B5VGltZV9Jbml0KHZvaWQpOwogCisvKiBDb252ZXJ0cyBhIHRpbWVzdGFtcCB0byB0aGUgR3JlZ29yaWFuIHRpbWUsIHVzaW5nIHRoZSBsb2NhbCB0aW1lIHpvbmUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX2xvY2FsdGltZSh0aW1lX3QgdCwgc3RydWN0IHRtICp0bSk7CisKKy8qIENvbnZlcnRzIGEgdGltZXN0YW1wIHRvIHRoZSBHcmVnb3JpYW4gdGltZSwgYXNzdW1pbmcgVVRDLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9nbXRpbWUodGltZV90IHQsIHN0cnVjdCB0bSAqdG0pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zZXRvYmplY3QuaCBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKaW5kZXggZjE3YmMxYi4uODdlYzFjOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zZXRvYmplY3QuaAorKysgYi9JbmNsdWRlL3NldG9iamVjdC5oCkBAIC0xMCwxMiArMTAsMTMgQEAKIAogLyogVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGVudHJpZXMgaW4gdGhlIHRhYmxlOgogCi0xLiBVbnVzZWQ6ICBrZXkgPT0gTlVMTAotMi4gQWN0aXZlOiAga2V5ICE9IE5VTEwgYW5kIGtleSAhPSBkdW1teQotMy4gRHVtbXk6ICAga2V5ID09IGR1bW15CisxLiBVbnVzZWQ6ICBrZXkgPT0gTlVMTCBhbmQgaGFzaCA9PSAwCisyLiBEdW1teTogICBrZXkgPT0gZHVtbXkgYW5kIGhhc2ggPT0gLTEKKzMuIEFjdGl2ZTogIGtleSAhPSBOVUxMIGFuZCBrZXkgIT0gZHVtbXkgYW5kIGhhc2ggIT0gLTEKIAotVGhlIGhhc2ggZmllbGQgb2YgVW51c2VkIHNsb3RzIGhhdmUgbm8gbWVhbmluZy4KLVRoZSBoYXNoIGZpZWxkIG9mIER1bW1ueSBzbG90cyBhcmUgc2V0IHRvIC0xCitUaGUgaGFzaCBmaWVsZCBvZiBVbnVzZWQgc2xvdHMgaXMgYWx3YXlzIHplcm8uCisKK1RoZSBoYXNoIGZpZWxkIG9mIER1bW15IHNsb3RzIGFyZSBzZXQgdG8gLTEKIG1lYW5pbmcgdGhhdCBkdW1teSBlbnRyaWVzIGNhbiBiZSBkZXRlY3RlZCBieQogZWl0aGVyIGVudHJ5LT5rZXk9PWR1bW15IG9yIGJ5IGVudHJ5LT5oYXNoPT0tMS4KICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oIGIvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaAppbmRleCA5NDhmNjkwLi41ZGE4YTQ2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCisrKyBiL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKQEAgLTQ5LDEwICs0OSw4IEBACiAjZGVmaW5lIFRfT0JKRUNUX0VYIDE2ICAvKiBMaWtlIFRfT0JKRUNULCBidXQgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSB2YWx1ZSBpcyBOVUxMLCBpbnN0ZWFkIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0aW5nIHRvIE5vbmUuICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICNkZWZpbmUgVF9MT05HTE9ORyAgICAgIDE3CiAjZGVmaW5lIFRfVUxPTkdMT05HICAgICAxOAotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCiAKICNkZWZpbmUgVF9QWVNTSVpFVCAgICAgIDE5ICAgICAgLyogUHlfc3NpemVfdCAqLwogI2RlZmluZSBUX05PTkUgICAgICAgICAgMjAgICAgICAvKiBWYWx1ZSBpcyBhbHdheXMgTm9uZSAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeW10YWJsZS5oIGIvSW5jbHVkZS9zeW10YWJsZS5oCmluZGV4IDE0MDljZDkuLjg2YWUzYzIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3ltdGFibGUuaAorKysgYi9JbmNsdWRlL3N5bXRhYmxlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICB1bnNpZ25lZCBzdGVfY2hpbGRfZnJlZSA6IDE7ICAvKiB0cnVlIGlmIGEgY2hpbGQgYmxvY2sgaGFzIGZyZWUgdmFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgZnJlZSByZWZzIHRvIGdsb2JhbHMgKi8KICAgICB1bnNpZ25lZCBzdGVfZ2VuZXJhdG9yIDogMTsgICAvKiB0cnVlIGlmIG5hbWVzcGFjZSBpcyBhIGdlbmVyYXRvciAqLworICAgIHVuc2lnbmVkIHN0ZV9jb3JvdXRpbmUgOiAxOyAgIC8qIHRydWUgaWYgbmFtZXNwYWNlIGlzIGEgY29yb3V0aW5lICovCiAgICAgdW5zaWduZWQgc3RlX3ZhcmFyZ3MgOiAxOyAgICAgLyogdHJ1ZSBpZiBibG9jayBoYXMgdmFyYXJncyAqLwogICAgIHVuc2lnbmVkIHN0ZV92YXJrZXl3b3JkcyA6IDE7IC8qIHRydWUgaWYgYmxvY2sgaGFzIHZhcmtleXdvcmRzICovCiAgICAgdW5zaWduZWQgc3RlX3JldHVybnNfdmFsdWUgOiAxOyAgLyogdHJ1ZSBpZiBuYW1lc3BhY2UgdXNlcyByZXR1cm4gd2l0aApAQCAtOTEsNiArOTIsNyBAQAogI2RlZmluZSBERUZfRlJFRSAyPDw0ICAgICAgICAgIC8qIG5hbWUgdXNlZCBidXQgbm90IGRlZmluZWQgaW4gbmVzdGVkIGJsb2NrICovCiAjZGVmaW5lIERFRl9GUkVFX0NMQVNTIDI8PDUgICAgLyogZnJlZSB2YXJpYWJsZSBmcm9tIGNsYXNzJ3MgbWV0aG9kICovCiAjZGVmaW5lIERFRl9JTVBPUlQgMjw8NiAgICAgICAgLyogYXNzaWdubWVudCBvY2N1cnJlZCB2aWEgaW1wb3J0ICovCisjZGVmaW5lIERFRl9BTk5PVCAyPDw3ICAgICAgICAgLyogdGhpcyBuYW1lIGlzIGFubm90YXRlZCAqLwogCiAjZGVmaW5lIERFRl9CT1VORCAoREVGX0xPQ0FMIHwgREVGX1BBUkFNIHwgREVGX0lNUE9SVCkKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeXNtb2R1bGUuaCBiL0luY2x1ZGUvc3lzbW9kdWxlLmgKaW5kZXggY2RlMTBhYy4uYzU1NDdmZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zeXNtb2R1bGUuaAorKysgYi9JbmNsdWRlL3N5c21vZHVsZS5oCkBAIC04LDExICs4LDExIEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVN5c19HZXRPYmplY3QoY29uc3QgY2hhciAqKTsKK1B5QVBJX0ZVTkMoaW50KSBQeVN5c19TZXRPYmplY3QoY29uc3QgY2hhciAqLCBQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U3lzX0dldE9iamVjdElkKF9QeV9JZGVudGlmaWVyICprZXkpOwotI2VuZGlmCi1QeUFQSV9GVU5DKGludCkgUHlTeXNfU2V0T2JqZWN0KGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5U3lzX1NldE9iamVjdElkKF9QeV9JZGVudGlmaWVyICprZXksIFB5T2JqZWN0ICopOworI2VuZGlmCiAKIFB5QVBJX0ZVTkModm9pZCkgUHlTeXNfU2V0QXJndihpbnQsIHdjaGFyX3QgKiopOwogUHlBUElfRlVOQyh2b2lkKSBQeVN5c19TZXRBcmd2RXgoaW50LCB3Y2hhcl90ICoqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS90cmFjZWJhY2suaCBiL0luY2x1ZGUvdHJhY2ViYWNrLmgKaW5kZXggYzNlY2JlMi4uYjU4NzQxMCAxMDA2NDQKLS0tIGEvSW5jbHVkZS90cmFjZWJhY2suaAorKysgYi9JbmNsdWRlL3RyYWNlYmFjay5oCkBAIC0zMSw2ICszMSw3IEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlUcmFjZUJhY2tfVHlwZTsKICNkZWZpbmUgUHlUcmFjZUJhY2tfQ2hlY2sodikgKFB5X1RZUEUodikgPT0gJlB5VHJhY2VCYWNrX1R5cGUpCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFdyaXRlIHRoZSBQeXRob24gdHJhY2ViYWNrIGludG8gdGhlIGZpbGUgJ2ZkJy4gRm9yIGV4YW1wbGU6CiAKICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgpAQCAtNTMsMTkgKzU0LDY0IEBACiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKIAogLyogV3JpdGUgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBpbnRvIHRoZSBmaWxlICdmZCcuIGN1cnJlbnRfdGhyZWFkIGNhbiBiZQotICAgTlVMTC4gUmV0dXJuIE5VTEwgb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgbWVzc2FnZSBvbiBlcnJvci4KKyAgIE5VTEwuCisKKyAgIFJldHVybiBOVUxMIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgd3JpdHRlbiBmb3IgZGVidWcgcHVycG9zZSBvbmx5LiBJdCBjYWxscwogICAgX1B5X0R1bXBUcmFjZWJhY2soKSBmb3IgZWFjaCB0aHJlYWQsIGFuZCBzbyBoYXMgdGhlIHNhbWUgbGltaXRhdGlvbnMuIEl0CiAgICBvbmx5IHdyaXRlIHRoZSB0cmFjZWJhY2sgb2YgdGhlIGZpcnN0IDEwMCB0aHJlYWRzOiB3cml0ZSAiLi4uIiBpZiB0aGVyZSBhcmUKICAgIG1vcmUgdGhyZWFkcy4KIAorICAgSWYgY3VycmVudF90c3RhdGUgaXMgTlVMTCwgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIGdldCB0aGUgUHl0aG9uIHRocmVhZCBzdGF0ZQorICAgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLiBJdCBpcyBub3QgYW4gZXJyb3IgaWYgdGhlIGZ1bmN0aW9uIGlzIHVuYWJsZSB0byBnZXQKKyAgIHRoZSBjdXJyZW50IFB5dGhvbiB0aHJlYWQgc3RhdGUuCisKKyAgIElmIGludGVycCBpcyBOVUxMLCB0aGUgZnVuY3Rpb24gdHJpZXMgdG8gZ2V0IHRoZSBpbnRlcnByZXRlciBzdGF0ZSBmcm9tCisgICB0aGUgY3VycmVudCBQeXRob24gdGhyZWFkIHN0YXRlLCBvciBmcm9tCisgICBfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKCkgaW4gbGFzdCByZXNvcnQuCisKKyAgIEl0IGlzIGJldHRlciB0byBwYXNzIE5VTEwgdG8gaW50ZXJwIGFuZCBjdXJyZW50X3RzdGF0ZSwgdGhlIGZ1bmN0aW9uIHRyaWVzCisgICBkaWZmZXJlbnQgb3B0aW9ucyB0byByZXRyaWV2ZSB0aGVzZSBpbmZvcm1hdGlvbnMuCisKICAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCiAKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciopIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcygKLSAgICBpbnQgZmQsIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAotICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdGhyZWFkKTsKKyAgICBpbnQgZmQsCisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCisgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90c3RhdGUpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisKKy8qIFdyaXRlIGEgVW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLiBFbmNvZGUgdGhlIHN0cmluZyB0bworICAgQVNDSUkgdXNpbmcgdGhlIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlci4KKworICAgRG8gbm90aGluZyBpZiB0ZXh0IGlzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LiBUaGUgZnVuY3Rpb24gYWNjZXB0cyBVbmljb2RlCisgICBzdHJpbmcgd2hpY2ggaXMgbm90IHJlYWR5IChQeVVuaWNvZGVfV0NIQVJfS0lORCkuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9EdW1wQVNDSUkoaW50IGZkLCBQeU9iamVjdCAqdGV4dCk7CisKKy8qIEZvcm1hdCBhbiBpbnRlZ2VyIGFzIGRlY2ltYWwgaW50byB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlfRHVtcERlY2ltYWwoCisgICAgaW50IGZkLAorICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUpOworCisvKiBGb3JtYXQgYW4gaW50ZWdlciBhcyBoZXhhZGVjaW1hbCBpbnRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQgd2l0aCBhdCBsZWFzdAorICAgd2lkdGggZGlnaXRzLgorCisgICBUaGUgbWF4aW11bSB3aWR0aCBpcyBzaXplb2YodW5zaWduZWQgbG9uZykqMiBkaWdpdHMuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9EdW1wSGV4YWRlY2ltYWwoCisgICAgaW50IGZkLAorICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUsCisgICAgUHlfc3NpemVfdCB3aWR0aCk7CisKKyNlbmRpZiAgIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKaW5kZXggMmM0OTZlYS4uNjQzZDEwZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKQEAgLTEwMywxMCArMTAzLDYgQEAKICMgZW5kaWYKICNlbmRpZgogCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKQotIyAgZGVmaW5lIEhBVkVfTUJDUwotI2VuZGlmCi0KICNpZmRlZiBIQVZFX1dDSEFSX0gKIC8qIFdvcmsgYXJvdW5kIGEgY29zbWV0aWMgYnVnIGluIEJTREkgNC54IHdjaGFyLmg7IHRoYW5rcyB0byBUaG9tYXMgV291dGVycyAqLwogIyBpZmRlZiBfSEFWRV9CU0RJCkBAIC0xMTcsMjEgKzExMyw5IEBACiAKIC8qIFB5X1VDUzQgYW5kIFB5X1VDUzIgYXJlIHR5cGVkZWZzIGZvciB0aGUgcmVzcGVjdGl2ZQogICAgdW5pY29kZSByZXByZXNlbnRhdGlvbnMuICovCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci10eXBlZGVmIHVuc2lnbmVkIGludCBQeV9VQ1M0OwotI2VsaWYgU0laRU9GX0xPTkcgPT0gNAotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFB5X1VDUzQ7Ci0jZWxzZQotI2Vycm9yICJDb3VsZCBub3QgZmluZCBhIHByb3BlciB0eXBlZGVmIGZvciBQeV9VQ1M0IgotI2VuZGlmCi0KLSNpZiBTSVpFT0ZfU0hPUlQgPT0gMgotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBQeV9VQ1MyOwotI2Vsc2UKLSNlcnJvciAiQ291bGQgbm90IGZpbmQgYSBwcm9wZXIgdHlwZWRlZiBmb3IgUHlfVUNTMiIKLSNlbmRpZgotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgUHlfVUNTMTsKK3R5cGVkZWYgdWludDMyX3QgUHlfVUNTNDsKK3R5cGVkZWYgdWludDE2X3QgUHlfVUNTMjsKK3R5cGVkZWYgdWludDhfdCBQeV9VQ1MxOwogCiAvKiAtLS0gSW50ZXJuYWwgVW5pY29kZSBPcGVyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTcyLDcgKzE1Niw3IEBACiAgICAgUHlfVU5JQ09ERV9JU05VTUVSSUMoY2gpKQogCiAjZGVmaW5lIFB5X1VOSUNPREVfQ09QWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSBcCi0gICAgUHlfTUVNQ1BZKCh0YXJnZXQpLCAoc291cmNlKSwgKGxlbmd0aCkqc2l6ZW9mKFB5X1VOSUNPREUpKQorICAgIG1lbWNweSgodGFyZ2V0KSwgKHNvdXJjZSksIChsZW5ndGgpKnNpemVvZihQeV9VTklDT0RFKSkKIAogI2RlZmluZSBQeV9VTklDT0RFX0ZJTEwodGFyZ2V0LCB2YWx1ZSwgbGVuZ3RoKSBcCiAgICAgZG8ge1B5X3NzaXplX3QgaV87IFB5X1VOSUNPREUgKnRfID0gKHRhcmdldCk7IFB5X1VOSUNPREUgdl8gPSAodmFsdWUpO1wKQEAgLTkwMCw3ICs4ODQsNyBAQAogICAgIC8qIG1pbmltdW0gY2hhcmFjdGVyIChkZWZhdWx0OiAxMjcsIEFTQ0lJKSAqLwogICAgIFB5X1VDUzQgbWluX2NoYXI7CiAKLSAgICAvKiBJZiBub24temVybywgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgYnkgMjUlIChkZWZhdWx0OiAwKS4gKi8KKyAgICAvKiBJZiBub24temVybywgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgKGRlZmF1bHQ6IDApLiAqLwogICAgIHVuc2lnbmVkIGNoYXIgb3ZlcmFsbG9jYXRlOwogCiAgICAgLyogSWYgcmVhZG9ubHkgaXMgMSwgYnVmZmVyIGlzIGEgc2hhcmVkIHN0cmluZyAoY2Fubm90IGJlIG1vZGlmaWVkKQpAQCAtOTM0LDYgKzkxOCwyMyBAQAogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgbWF4Y2hhcik7CiAKKy8qIFByZXBhcmUgdGhlIGJ1ZmZlciB0byBoYXZlIGF0IGxlYXN0IHRoZSBraW5kIEtJTkQuCisgICBGb3IgZXhhbXBsZSwga2luZD1QeVVuaWNvZGVfMkJZVEVfS0lORCBlbnN1cmVzIHRoYXQgdGhlIHdyaXRlciB3aWxsCisgICBzdXBwb3J0IGNoYXJhY3RlcnMgaW4gcmFuZ2UgVSswMDAtVStGRkZGLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZChXUklURVIsIEtJTkQpICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydCgoS0lORCkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoS0lORCkgPD0gKFdSSVRFUiktPmtpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgPyAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIDogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZEludGVybmFsKChXUklURVIpLCAoS0lORCkpKQorCisvKiBEb24ndCBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIHVzZSB0aGUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgpCisgICBtYWNybyBpbnN0ZWFkLiAqLworUHlBUElfRlVOQyhpbnQpCitfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZCk7CisKIC8qIEFwcGVuZCBhIFVuaWNvZGUgY2hhcmFjdGVyLgogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBQeUFQSV9GVU5DKGludCkKQEAgLTE2NDAsMTMgKzE2NDEsMTMgQEAKICAgICApOwogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qIC0tLSBNQkNTIGNvZGVjcyBmb3IgV2luZG93cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZU1CQ1MoCiAgICAgY29uc3QgY2hhciAqc3RyaW5nLCAgICAgICAgIC8qIE1CQ1MgZW5jb2RlZCBzdHJpbmcgKi8KLSAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCisgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKIApAQCAtMTY4Myw3ICsxNjg0LDcgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOwogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gRGVjaW1hbCBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTkzOCw2ICsxOTM5LDE0IEBACiAgICAgUHlPYmplY3QgKnNlcSAgICAgICAgICAgICAgIC8qIFNlcXVlbmNlIG9iamVjdCAqLwogICAgICk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZV9Kb2luQXJyYXkoCisgICAgUHlPYmplY3QgKnNlcGFyYXRvciwKKyAgICBQeU9iamVjdCAqKml0ZW1zLAorICAgIFB5X3NzaXplX3Qgc2VxbGVuCisgICAgKTsKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLworCiAvKiBSZXR1cm4gMSBpZiBzdWJzdHIgbWF0Y2hlcyBzdHJbc3RhcnQ6ZW5kXSBhdCB0aGUgZ2l2ZW4gdGFpbCBlbmQsIDAKICAgIG90aGVyd2lzZS4gKi8KIApAQCAtMjI0OCwxMSArMjI1NywxNyBAQAogICAgIGludCBjaGVja19jb250ZW50KTsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBSZXR1cm4gYW4gaW50ZXJuZWQgVW5pY29kZSBvYmplY3QgZm9yIGFuIElkZW50aWZpZXI7IG1heSBmYWlsIGlmIHRoZXJlIGlzIG5vIG1lbW9yeS4qLwogUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRnJvbUlkKF9QeV9JZGVudGlmaWVyKik7CiAvKiBDbGVhciBhbGwgc3RhdGljIHN0cmluZ3MuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKHZvaWQpOwogCisvKiBGYXN0IGVxdWFsaXR5IGNoZWNrIHdoZW4gdGhlIGlucHV0cyBhcmUga25vd24gdG8gYmUgZXhhY3QgdW5pY29kZSB0eXBlcworICAgYW5kIHdoZXJlIHRoZSBoYXNoIHZhbHVlcyBhcmUgZXF1YWwgKGkuZS4gYSB2ZXJ5IHByb2JhYmxlIG1hdGNoKSAqLworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfRVEoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3dhcm5pbmdzLmggYi9JbmNsdWRlL3dhcm5pbmdzLmgKaW5kZXggZWZmYjlmYWQuLmMxYzY5OTIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvd2FybmluZ3MuaAorKysgYi9JbmNsdWRlL3dhcm5pbmdzLmgKQEAgLTE3LDYgKzE3LDEzIEBACiAgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKICAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgICAgICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCiAgICAgLi4uKTsKKworLyogRW1pdCBhIFJlc291cmNlV2FybmluZyB3YXJuaW5nICovCitQeUFQSV9GVU5DKGludCkgUHlFcnJfUmVzb3VyY2VXYXJuaW5nKAorICAgIFB5T2JqZWN0ICpzb3VyY2UsCisgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgICAgICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCisgICAgLi4uKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBQeUVycl9XYXJuRXhwbGljaXRPYmplY3QoCiAgICAgUHlPYmplY3QgKmNhdGVnb3J5LApkaWZmIC0tZ2l0IGEvTGliL19jb2xsZWN0aW9uc19hYmMucHkgYi9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQppbmRleCBmYzljOWYxLi5mMDM1OTcwIDEwMDY0NAotLS0gYS9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQorKysgYi9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQpAQCAtMTAsOCArMTAsOCBAQAogaW1wb3J0IHN5cwogCiBfX2FsbF9fID0gWyJBd2FpdGFibGUiLCAiQ29yb3V0aW5lIiwgIkFzeW5jSXRlcmFibGUiLCAiQXN5bmNJdGVyYXRvciIsCi0gICAgICAgICAgICJIYXNoYWJsZSIsICJJdGVyYWJsZSIsICJJdGVyYXRvciIsICJHZW5lcmF0b3IiLAotICAgICAgICAgICAiU2l6ZWQiLCAiQ29udGFpbmVyIiwgIkNhbGxhYmxlIiwKKyAgICAgICAgICAgIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwgIkdlbmVyYXRvciIsICJSZXZlcnNpYmxlIiwKKyAgICAgICAgICAgIlNpemVkIiwgIkNvbnRhaW5lciIsICJDYWxsYWJsZSIsICJDb2xsZWN0aW9uIiwKICAgICAgICAgICAgIlNldCIsICJNdXRhYmxlU2V0IiwKICAgICAgICAgICAgIk1hcHBpbmciLCAiTXV0YWJsZU1hcHBpbmciLAogICAgICAgICAgICAiTWFwcGluZ1ZpZXciLCAiS2V5c1ZpZXciLCAiSXRlbXNWaWV3IiwgIlZhbHVlc1ZpZXciLApAQCAtNjIsNiArNjIsMTggQEAKIAogIyMjIE9ORS1UUklDSyBQT05JRVMgIyMjCiAKK2RlZiBfY2hlY2tfbWV0aG9kcyhDLCAqbWV0aG9kcyk6CisgICAgbXJvID0gQy5fX21yb19fCisgICAgZm9yIG1ldGhvZCBpbiBtZXRob2RzOgorICAgICAgICBmb3IgQiBpbiBtcm86CisgICAgICAgICAgICBpZiBtZXRob2QgaW4gQi5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICBpZiBCLl9fZGljdF9fW21ldGhvZF0gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgIHJldHVybiBUcnVlCisKIGNsYXNzIEhhc2hhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCkBAIC03MywxMSArODUsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBIYXNoYWJsZToKLSAgICAgICAgICAgIGZvciBCIGluIEMuX19tcm9fXzoKLSAgICAgICAgICAgICAgICBpZiAiX19oYXNoX18iIGluIEIuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgIGlmIEIuX19kaWN0X19bIl9faGFzaF9fIl06Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2hhc2hfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTkyLDExICsxMDAsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBBd2FpdGFibGU6Ci0gICAgICAgICAgICBmb3IgQiBpbiBDLl9fbXJvX186Ci0gICAgICAgICAgICAgICAgaWYgIl9fYXdhaXRfXyIgaW4gQi5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgaWYgQi5fX2RpY3RfX1siX19hd2FpdF9fIl06Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2F3YWl0X18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0xMzcsMTQgKzE0MSw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIENvcm91dGluZToKLSAgICAgICAgICAgIG1ybyA9IEMuX19tcm9fXwotICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ19fYXdhaXRfXycsICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJyk6Ci0gICAgICAgICAgICAgICAgZm9yIGJhc2UgaW4gbXJvOgotICAgICAgICAgICAgICAgICAgICBpZiBtZXRob2QgaW4gYmFzZS5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICdfX2F3YWl0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTE2Miw4ICsxNTksNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBBc3luY0l0ZXJhYmxlOgotICAgICAgICAgICAgaWYgYW55KCJfX2FpdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2FpdGVyX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0xODIsOSArMTc4LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYXRvcjoKLSAgICAgICAgICAgIGlmIChhbnkoIl9fYW5leHRfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAotICAgICAgICAgICAgICAgIGFueSgiX19haXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fYW5leHRfXyIsICJfX2FpdGVyX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0yMDAsOCArMTk0LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgSXRlcmFibGU6Ci0gICAgICAgICAgICBpZiBhbnkoIl9faXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19pdGVyX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0yMjAsOSArMjEzLDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgSXRlcmF0b3I6Ci0gICAgICAgICAgICBpZiAoYW55KCJfX25leHRfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAotICAgICAgICAgICAgICAgIGFueSgiX19pdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19pdGVyX18nLCAnX19uZXh0X18nKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogSXRlcmF0b3IucmVnaXN0ZXIoYnl0ZXNfaXRlcmF0b3IpCkBAIC0yNDAsNiArMjMxLDIyIEBACiBJdGVyYXRvci5yZWdpc3Rlcih6aXBfaXRlcmF0b3IpCiAKIAorY2xhc3MgUmV2ZXJzaWJsZShJdGVyYWJsZSk6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKKyAgICAgICAgd2hpbGUgRmFsc2U6CisgICAgICAgICAgICB5aWVsZCBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgUmV2ZXJzaWJsZToKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19yZXZlcnNlZF9fIiwgIl9faXRlcl9fIikKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKwogY2xhc3MgR2VuZXJhdG9yKEl0ZXJhdG9yKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCkBAIC0yODMsMTcgKzI5MCwxMCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBHZW5lcmF0b3I6Ci0gICAgICAgICAgICBtcm8gPSBDLl9fbXJvX18KLSAgICAgICAgICAgIGZvciBtZXRob2QgaW4gKCdfX2l0ZXJfXycsICdfX25leHRfXycsICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJyk6Ci0gICAgICAgICAgICAgICAgZm9yIGJhc2UgaW4gbXJvOgotICAgICAgICAgICAgICAgICAgICBpZiBtZXRob2QgaW4gYmFzZS5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICdfX2l0ZXJfXycsICdfX25leHRfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAotCiBHZW5lcmF0b3IucmVnaXN0ZXIoZ2VuZXJhdG9yKQogCiAKQEAgLTMwOCw4ICszMDgsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBTaXplZDoKLSAgICAgICAgICAgIGlmIGFueSgiX19sZW5fXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fbGVuX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0zMjQsMTAgKzMyMywxOCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBDb250YWluZXI6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fY29udGFpbnNfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fY29udGFpbnNfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCitjbGFzcyBDb2xsZWN0aW9uKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQ29sbGVjdGlvbjoKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAgIl9fbGVuX18iLCAiX19pdGVyX18iLCAiX19jb250YWluc19fIikKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIGNsYXNzIENhbGxhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIApAQCAtMzQwLDE1ICszNDcsMTQgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQ2FsbGFibGU6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fY2FsbF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19jYWxsX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCiAjIyMgU0VUUyAjIyMKIAogCi1jbGFzcyBTZXQoU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgorY2xhc3MgU2V0KENvbGxlY3Rpb24pOgogCiAgICAgIiIiQSBzZXQgaXMgYSBmaW5pdGUsIGl0ZXJhYmxlIGNvbnRhaW5lci4KIApAQCAtNTczLDcgKzU3OSw3IEBACiAjIyMgTUFQUElOR1MgIyMjCiAKIAotY2xhc3MgTWFwcGluZyhTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CitjbGFzcyBNYXBwaW5nKENvbGxlY3Rpb24pOgogCiAgICAgX19zbG90c19fID0gKCkKIApAQCAtNjIxLDYgKzYyNyw4IEBACiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgcmV0dXJuIGRpY3Qoc2VsZi5pdGVtcygpKSA9PSBkaWN0KG90aGVyLml0ZW1zKCkpCiAKKyAgICBfX3JldmVyc2VkX18gPSBOb25lCisKIE1hcHBpbmcucmVnaXN0ZXIobWFwcGluZ3Byb3h5KQogCiAKQEAgLTY3MCw3ICs2NzgsNyBAQAogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB2ID09IHZhbHVlCisgICAgICAgICAgICByZXR1cm4gdiBpcyB2YWx1ZSBvciB2ID09IHZhbHVlCiAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fbWFwcGluZzoKQEAgLTY4NSw3ICs2OTMsOCBAQAogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fbWFwcGluZzoKLSAgICAgICAgICAgIGlmIHZhbHVlID09IHNlbGYuX21hcHBpbmdba2V5XToKKyAgICAgICAgICAgIHYgPSBzZWxmLl9tYXBwaW5nW2tleV0KKyAgICAgICAgICAgIGlmIHYgaXMgdmFsdWUgb3IgdiA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIApAQCAtNzk0LDcgKzgwMyw3IEBACiAjIyMgU0VRVUVOQ0VTICMjIwogCiAKLWNsYXNzIFNlcXVlbmNlKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKK2NsYXNzIFNlcXVlbmNlKFJldmVyc2libGUsIENvbGxlY3Rpb24pOgogCiAgICAgIiIiQWxsIHRoZSBvcGVyYXRpb25zIG9uIGEgcmVhZC1vbmx5IHNlcXVlbmNlLgogCkBAIC04MjAsNyArODI5LDcgQEAKIAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBmb3IgdiBpbiBzZWxmOgotICAgICAgICAgICAgaWYgdiA9PSB2YWx1ZToKKyAgICAgICAgICAgIGlmIHYgaXMgdmFsdWUgb3IgdiA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIApkaWZmIC0tZ2l0IGEvTGliL19jb21wYXRfcGlja2xlLnB5IGIvTGliL19jb21wYXRfcGlja2xlLnB5CmluZGV4IGMwZTA0NDMuLmY2ODQ5NmEgMTAwNjQ0Ci0tLSBhL0xpYi9fY29tcGF0X3BpY2tsZS5weQorKysgYi9MaWIvX2NvbXBhdF9waWNrbGUucHkKQEAgLTI0MiwzICsyNDIsMTAgQEAKIAogZm9yIGV4Y25hbWUgaW4gUFlUSE9OM19PU0VSUk9SX0VYQ0VQVElPTlM6CiAgICAgUkVWRVJTRV9OQU1FX01BUFBJTkdbKCdidWlsdGlucycsIGV4Y25hbWUpXSA9ICgnZXhjZXB0aW9ucycsICdPU0Vycm9yJykKKworUFlUSE9OM19JTVBPUlRFUlJPUl9FWENFUFRJT05TID0gKAorICAgICdNb2R1bGVOb3RGb3VuZEVycm9yJywKKykKKworZm9yIGV4Y25hbWUgaW4gUFlUSE9OM19JTVBPUlRFUlJPUl9FWENFUFRJT05TOgorICAgIFJFVkVSU0VfTkFNRV9NQVBQSU5HWygnYnVpbHRpbnMnLCBleGNuYW1lKV0gPSAoJ2V4Y2VwdGlvbnMnLCAnSW1wb3J0RXJyb3InKQpkaWZmIC0tZ2l0IGEvTGliL19vc3hfc3VwcG9ydC5weSBiL0xpYi9fb3N4X3N1cHBvcnQucHkKaW5kZXggMTNmY2Q4Yi4uZWFkZjA2ZiAxMDA2NDQKLS0tIGEvTGliL19vc3hfc3VwcG9ydC5weQorKysgYi9MaWIvX29zeF9zdXBwb3J0LnB5CkBAIC0yMTAsNyArMjEwLDcgQEAKICAgICAgICAgIyBEbyBub3QgYWx0ZXIgYSBjb25maWcgdmFyIGV4cGxpY2l0bHkgb3ZlcnJpZGRlbiBieSBlbnYgdmFyCiAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CiAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KLSAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCisgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzLCByZS5BU0NJSSkKICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctaXN5c3Jvb3QgW14gXHRdKicsICcgJywgZmxhZ3MpCiAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKIApAQCAtMjMyLDcgKzIzMiw3IEBACiAgICAgaWYgJ0NDJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICByZXR1cm4gX2NvbmZpZ192YXJzCiAKLSAgICBpZiByZS5zZWFyY2goJy1hcmNoXHMrcHBjJywgX2NvbmZpZ192YXJzWydDRkxBR1MnXSkgaXMgbm90IE5vbmU6CisgICAgaWYgcmUuc2VhcmNoKHInLWFyY2hccytwcGMnLCBfY29uZmlnX3ZhcnNbJ0NGTEFHUyddKSBpcyBub3QgTm9uZToKICAgICAgICAgIyBOT1RFOiBDYW5ub3QgdXNlIHN1YnByb2Nlc3MgaGVyZSBiZWNhdXNlIG9mIGJvb3RzdHJhcAogICAgICAgICAjIGlzc3VlcyB3aGVuIGJ1aWxkaW5nIFB5dGhvbiBpdHNlbGYKICAgICAgICAgc3RhdHVzID0gb3Muc3lzdGVtKApAQCAtMjUxLDcgKzI1MSw3IEBACiAgICAgICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKICAgICAgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrcHBjXHcqXHMnLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1hcmNoXHMrcHBjXHcqXHMnLCAnICcsIGZsYWdzKQogICAgICAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKIAogICAgIHJldHVybiBfY29uZmlnX3ZhcnMKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKICAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgJy1hcmNoJyBpbiBfY29uZmlnX3ZhcnNbY3ZdOgogICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQotICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQogICAgICAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgKyAnICcgKyBhcmNoCiAgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCiAKQEAgLTQ2NSw3ICs0NjUsNyBAQAogCiAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKIAotICAgICAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKCctYXJjaFxzKyhcUyspJywgY2ZsYWdzKQorICAgICAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKHInLWFyY2hccysoXFMrKScsIGNmbGFncykKICAgICAgICAgICAgIGFyY2hzID0gdHVwbGUoc29ydGVkKHNldChhcmNocykpKQogCiAgICAgICAgICAgICBpZiBsZW4oYXJjaHMpID09IDE6CmRpZmYgLS1naXQgYS9MaWIvX3B5ZGVjaW1hbC5weSBiL0xpYi9fcHlkZWNpbWFsLnB5CmluZGV4IGE1ZWEzNDAuLjBiNDA5MjggMTAwNjQ0Ci0tLSBhL0xpYi9fcHlkZWNpbWFsLnB5CisrKyBiL0xpYi9fcHlkZWNpbWFsLnB5CkBAIC0xNDgsNyArMTQ4LDcgQEAKIF9fbmFtZV9fID0gJ2RlY2ltYWwnICAgICMgRm9yIHBpY2tsaW5nCiBfX3ZlcnNpb25fXyA9ICcxLjcwJyAgICAjIEhpZ2hlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYyB0aGlzIGNvbXBsaWVzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICMgU2VlIGh0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbC8KLV9fbGlibXBkZWNfdmVyc2lvbl9fID0gIjIuNC4xIiAjIGNvbXBhdGlibGUgbGlibXBkZWMgdmVyc2lvbgorX19saWJtcGRlY192ZXJzaW9uX18gPSAiMi40LjIiICMgY29tcGF0aWJsZSBsaWJtcGRlYyB2ZXJzaW9uCiAKIGltcG9ydCBtYXRoIGFzIF9tYXRoCiBpbXBvcnQgbnVtYmVycyBhcyBfbnVtYmVycwpAQCAtNTg5LDcgKzU4OSw3IEBACiAgICAgICAgICMgRnJvbSBhIHN0cmluZwogICAgICAgICAjIFJFcyBpbnNpc3Qgb24gcmVhbCBzdHJpbmdzLCBzbyB3ZSBjYW4gdG9vLgogICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgotICAgICAgICAgICAgbSA9IF9wYXJzZXIodmFsdWUuc3RyaXAoKSkKKyAgICAgICAgICAgIG0gPSBfcGFyc2VyKHZhbHVlLnN0cmlwKCkucmVwbGFjZSgiXyIsICIiKSkKICAgICAgICAgICAgIGlmIG0gaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKQEAgLTEwMTAsNiArMTAxMCw1NiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIERlY2ltYWxUdXBsZShzZWxmLl9zaWduLCB0dXBsZShtYXAoaW50LCBzZWxmLl9pbnQpKSwgc2VsZi5fZXhwKQogCisgICAgZGVmIGFzX2ludGVnZXJfcmF0aW8oc2VsZik6CisgICAgICAgICIiIkV4cHJlc3MgYSBmaW5pdGUgRGVjaW1hbCBpbnN0YW5jZSBpbiB0aGUgZm9ybSBuIC8gZC4KKworICAgICAgICBSZXR1cm5zIGEgcGFpciAobiwgZCkgb2YgaW50ZWdlcnMuICBXaGVuIGNhbGxlZCBvbiBhbiBpbmZpbml0eQorICAgICAgICBvciBOYU4sIHJhaXNlcyBPdmVyZmxvd0Vycm9yIG9yIFZhbHVlRXJyb3IgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgID4+PiBEZWNpbWFsKCczLjE0JykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICgxNTcsIDUwKQorICAgICAgICA+Pj4gRGVjaW1hbCgnLTEyM2U1JykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICgtMTIzMDAwMDAsIDEpCisgICAgICAgID4+PiBEZWNpbWFsKCcwLjAwJykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICgwLCAxKQorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iKQorCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIDAsIDEKKworICAgICAgICAjIEZpbmQgbiwgZCBpbiBsb3dlc3QgdGVybXMgc3VjaCB0aGF0IGFicyhzZWxmKSA9PSBuIC8gZDsKKyAgICAgICAgIyB3ZSdsbCBkZWFsIHdpdGggdGhlIHNpZ24gbGF0ZXIuCisgICAgICAgIG4gPSBpbnQoc2VsZi5faW50KQorICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKKyAgICAgICAgICAgICMgc2VsZiBpcyBhbiBpbnRlZ2VyLgorICAgICAgICAgICAgbiwgZCA9IG4gKiAxMCoqc2VsZi5fZXhwLCAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEZpbmQgZDIsIGQ1IHN1Y2ggdGhhdCBhYnMoc2VsZikgPSBuIC8gKDIqKmQyICogNSoqZDUpLgorICAgICAgICAgICAgZDUgPSAtc2VsZi5fZXhwCisgICAgICAgICAgICB3aGlsZSBkNSA+IDAgYW5kIG4gJSA1ID09IDA6CisgICAgICAgICAgICAgICAgbiAvLz0gNQorICAgICAgICAgICAgICAgIGQ1IC09IDEKKworICAgICAgICAgICAgIyAobiAmIC1uKS5iaXRfbGVuZ3RoKCkgLSAxIGNvdW50cyB0cmFpbGluZyB6ZXJvcyBpbiBiaW5hcnkKKyAgICAgICAgICAgICMgcmVwcmVzZW50YXRpb24gb2YgbiAocHJvdmlkZWQgbiBpcyBub256ZXJvKS4KKyAgICAgICAgICAgIGQyID0gLXNlbGYuX2V4cAorICAgICAgICAgICAgc2hpZnQyID0gbWluKChuICYgLW4pLmJpdF9sZW5ndGgoKSAtIDEsIGQyKQorICAgICAgICAgICAgaWYgc2hpZnQyOgorICAgICAgICAgICAgICAgIG4gPj49IHNoaWZ0MgorICAgICAgICAgICAgICAgIGQyIC09IHNoaWZ0MgorCisgICAgICAgICAgICBkID0gNSoqZDUgPDwgZDIKKworICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgbiA9IC1uCisgICAgICAgIHJldHVybiBuLCBkCisKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICIiIlJlcHJlc2VudHMgdGhlIG51bWJlciBhcyBhbiBpbnN0YW5jZSBvZiBEZWNpbWFsLiIiIgogICAgICAgICAjIEludmFyaWFudDogIGV2YWwocmVwcihkKSkgPT0gZApAQCAtNDA3NSw3ICs0MTI1LDcgQEAKICAgICAgICAgVGhpcyB3aWxsIG1ha2UgaXQgcm91bmQgdXAgZm9yIHRoYXQgb3BlcmF0aW9uLgogICAgICAgICAiIiIKICAgICAgICAgcm91bmRpbmcgPSBzZWxmLnJvdW5kaW5nCi0gICAgICAgIHNlbGYucm91bmRpbmc9IHR5cGUKKyAgICAgICAgc2VsZi5yb3VuZGluZyA9IHR5cGUKICAgICAgICAgcmV0dXJuIHJvdW5kaW5nCiAKICAgICBkZWYgY3JlYXRlX2RlY2ltYWwoc2VsZiwgbnVtPScwJyk6CkBAIC00MDg0LDEwICs0MTM0LDEwIEBACiAgICAgICAgIFRoaXMgbWV0aG9kIGltcGxlbWVudHMgdGhlIHRvLW51bWJlciBvcGVyYXRpb24gb2YgdGhlCiAgICAgICAgIElCTSBEZWNpbWFsIHNwZWNpZmljYXRpb24uIiIiCiAKLSAgICAgICAgaWYgaXNpbnN0YW5jZShudW0sIHN0cikgYW5kIG51bSAhPSBudW0uc3RyaXAoKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShudW0sIHN0cikgYW5kIChudW0gIT0gbnVtLnN0cmlwKCkgb3IgJ18nIGluIG51bSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmFpc2VfZXJyb3IoQ29udmVyc2lvblN5bnRheCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gdHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVybWl0dGVkLiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWlsaW5nIG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmRlcnNjb3JlcyBhcmUgbm90IHBlcm1pdHRlZC4iKQogCiAgICAgICAgIGQgPSBEZWNpbWFsKG51bSwgY29udGV4dD1zZWxmKQogICAgICAgICBpZiBkLl9pc25hbigpIGFuZCBsZW4oZC5faW50KSA+IHNlbGYucHJlYyAtIHNlbGYuY2xhbXA6CmRpZmYgLS1naXQgYS9MaWIvX3B5aW8ucHkgYi9MaWIvX3B5aW8ucHkKaW5kZXggMGQ5OGI3NC4uZDA5NDdmMCAxMDA2NDQKLS0tIGEvTGliL19weWlvLnB5CisrKyBiL0xpYi9fcHlpby5weQpAQCAtNiw3ICs2LDYgQEAKIGltcG9ydCBhYmMKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwotaW1wb3J0IGFycmF5CiBpbXBvcnQgc3RhdAogaW1wb3J0IHN5cwogIyBJbXBvcnQgX3RocmVhZCBpbnN0ZWFkIG9mIHRocmVhZGluZyB0byByZWR1Y2Ugc3RhcnR1cCBjb3N0CkBAIC0xNjEsNiArMTYwLDggQEAKICAgICBvcGVuZWQgaW4gYSB0ZXh0IG1vZGUsIGFuZCBmb3IgYnl0ZXMgYSBCeXRlc0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlCiAgICAgb3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuCiAgICAgIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsZSwgaW50KToKKyAgICAgICAgZmlsZSA9IG9zLmZzcGF0aChmaWxlKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGUsIChzdHIsIGJ5dGVzLCBpbnQpKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGZpbGU6ICVyIiAlIGZpbGUpCiAgICAgaWYgbm90IGlzaW5zdGFuY2UobW9kZSwgc3RyKToKQEAgLTE4Miw4ICsxODMsOCBAQAogICAgIHRleHQgPSAidCIgaW4gbW9kZXMKICAgICBiaW5hcnkgPSAiYiIgaW4gbW9kZXMKICAgICBpZiAiVSIgaW4gbW9kZXM6Ci0gICAgICAgIGlmIGNyZWF0aW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgdXNlIFUgYW5kIHdyaXRpbmcgbW9kZSBhdCBvbmNlIikKKyAgICAgICAgaWYgY3JlYXRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmcgb3IgdXBkYXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIFUgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggJ3gnLCAndycsICdhJywgb3IgJysnIikKICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgIHdhcm5pbmdzLndhcm4oIidVJyBtb2RlIGlzIGRlcHJlY2F0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKQEAgLTE1MTYsNyArMTUxNyw3IEBACiAgICAgICAgIGlmIHNlbGYuX2ZkID49IDAgYW5kIHNlbGYuX2Nsb3NlZmQgYW5kIG5vdCBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybigndW5jbG9zZWQgZmlsZSAlcicgJSAoc2VsZiwpLCBSZXNvdXJjZVdhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yLCBzb3VyY2U9c2VsZikKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9fc3RycHRpbWUucHkgYi9MaWIvX3N0cnB0aW1lLnB5CmluZGV4IGY4NDIyN2IuLmZlOTQzNjEgMTAwNjQ0Ci0tLSBhL0xpYi9fc3RycHRpbWUucHkKKysrIGIvTGliL19zdHJwdGltZS5weQpAQCAtMTk5LDEyICsxOTksMTUgQEAKICAgICAgICAgICAgICdmJzogciIoP1A8Zj5bMC05XXsxLDZ9KSIsCiAgICAgICAgICAgICAnSCc6IHIiKD9QPEg+MlswLTNdfFswLTFdXGR8XGQpIiwKICAgICAgICAgICAgICdJJzogciIoP1A8ST4xWzAtMl18MFsxLTldfFsxLTldKSIsCisgICAgICAgICAgICAnRyc6IHIiKD9QPEc+XGRcZFxkXGQpIiwKICAgICAgICAgICAgICdqJzogciIoP1A8aj4zNlswLTZdfDNbMC01XVxkfFsxLTJdXGRcZHwwWzEtOV1cZHwwMFsxLTldfFsxLTldXGR8MFsxLTldfFsxLTldKSIsCiAgICAgICAgICAgICAnbSc6IHIiKD9QPG0+MVswLTJdfDBbMS05XXxbMS05XSkiLAogICAgICAgICAgICAgJ00nOiByIig/UDxNPlswLTVdXGR8XGQpIiwKICAgICAgICAgICAgICdTJzogciIoP1A8Uz42WzAtMV18WzAtNV1cZHxcZCkiLAogICAgICAgICAgICAgJ1UnOiByIig/UDxVPjVbMC0zXXxbMC00XVxkfFxkKSIsCiAgICAgICAgICAgICAndyc6IHIiKD9QPHc+WzAtNl0pIiwKKyAgICAgICAgICAgICd1JzogciIoP1A8dT5bMS03XSkiLAorICAgICAgICAgICAgJ1YnOiByIig/UDxWPjVbMC0zXXwwWzEtOV18WzEtNF1cZHxcZCkiLAogICAgICAgICAgICAgIyBXIGlzIHNldCBiZWxvdyBieSB1c2luZyAnVScKICAgICAgICAgICAgICd5JzogciIoP1A8eT5cZFxkKSIsCiAgICAgICAgICAgICAjWFhYOiBEb2VzICdZJyBuZWVkIHRvIHdvcnJ5IGFib3V0IGhhdmluZyBsZXNzIG9yIG1vcmUgdGhhbgpAQCAtMjk5LDYgKzMwMiwyMiBAQAogICAgICAgICByZXR1cm4gMSArIGRheXNfdG9fd2VlayArIGRheV9vZl93ZWVrCiAKIAorZGVmIF9jYWxjX2p1bGlhbl9mcm9tX1YoaXNvX3llYXIsIGlzb193ZWVrLCBpc29fd2Vla2RheSk6CisgICAgIiIiQ2FsY3VsYXRlIHRoZSBKdWxpYW4gZGF5IGJhc2VkIG9uIHRoZSBJU08gODYwMSB5ZWFyLCB3ZWVrLCBhbmQgd2Vla2RheS4KKyAgICBJU08gd2Vla3Mgc3RhcnQgb24gTW9uZGF5cywgd2l0aCB3ZWVrIDAxIGJlaW5nIHRoZSB3ZWVrIGNvbnRhaW5pbmcgNCBKYW4uCisgICAgSVNPIHdlZWsgZGF5cyByYW5nZSBmcm9tIDEgKE1vbmRheSkgdG8gNyAoU3VuZGF5KS4KKyAgICAiIiIKKyAgICBjb3JyZWN0aW9uID0gZGF0ZXRpbWVfZGF0ZShpc29feWVhciwgMSwgNCkuaXNvd2Vla2RheSgpICsgMworICAgIG9yZGluYWwgPSAoaXNvX3dlZWsgKiA3KSArIGlzb193ZWVrZGF5IC0gY29ycmVjdGlvbgorICAgICMgb3JkaW5hbCBtYXkgYmUgbmVnYXRpdmUgb3IgMCBub3csIHdoaWNoIG1lYW5zIHRoZSBkYXRlIGlzIGluIHRoZSBwcmV2aW91cworICAgICMgY2FsZW5kYXIgeWVhcgorICAgIGlmIG9yZGluYWwgPCAxOgorICAgICAgICBvcmRpbmFsICs9IGRhdGV0aW1lX2RhdGUoaXNvX3llYXIsIDEsIDEpLnRvb3JkaW5hbCgpCisgICAgICAgIGlzb195ZWFyIC09IDEKKyAgICAgICAgb3JkaW5hbCAtPSBkYXRldGltZV9kYXRlKGlzb195ZWFyLCAxLCAxKS50b29yZGluYWwoKQorICAgIHJldHVybiBpc29feWVhciwgb3JkaW5hbAorCisKIGRlZiBfc3RycHRpbWUoZGF0YV9zdHJpbmcsIGZvcm1hdD0iJWEgJWIgJWQgJUg6JU06JVMgJVkiKToKICAgICAiIiJSZXR1cm4gYSAyLXR1cGxlIGNvbnNpc3Rpbmcgb2YgYSB0aW1lIHN0cnVjdCBhbmQgYW4gaW50IGNvbnRhaW5pbmcKICAgICB0aGUgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBiYXNlZCBvbiB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUKQEAgLTM0NSwxNSArMzY0LDE1IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuY29udmVydGVkIGRhdGEgcmVtYWluczogJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJpbmdbZm91bmQuZW5kKCk6XSkKIAotICAgIHllYXIgPSBOb25lCisgICAgaXNvX3llYXIgPSB5ZWFyID0gTm9uZQogICAgIG1vbnRoID0gZGF5ID0gMQogICAgIGhvdXIgPSBtaW51dGUgPSBzZWNvbmQgPSBmcmFjdGlvbiA9IDAKICAgICB0eiA9IC0xCiAgICAgdHpvZmZzZXQgPSBOb25lCiAgICAgIyBEZWZhdWx0IHRvIC0xIHRvIHNpZ25pZnkgdGhhdCB2YWx1ZXMgbm90IGtub3duOyBub3QgY3JpdGljYWwgdG8gaGF2ZSwKICAgICAjIHRob3VnaAotICAgIHdlZWtfb2ZfeWVhciA9IC0xCi0gICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gLTEKKyAgICBpc29fd2VlayA9IHdlZWtfb2ZfeWVhciA9IE5vbmUKKyAgICB3ZWVrX29mX3llYXJfc3RhcnQgPSBOb25lCiAgICAgIyB3ZWVrZGF5IGFuZCBqdWxpYW4gZGVmYXVsdGVkIHRvIE5vbmUgc28gYXMgdG8gc2lnbmFsIG5lZWQgdG8gY2FsY3VsYXRlCiAgICAgIyB2YWx1ZXMKICAgICB3ZWVrZGF5ID0ganVsaWFuID0gTm9uZQpAQCAtMzc1LDYgKzM5NCw4IEBACiAgICAgICAgICAgICAgICAgeWVhciArPSAxOTAwCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdZJzoKICAgICAgICAgICAgIHllYXIgPSBpbnQoZm91bmRfZGljdFsnWSddKQorICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnRyc6CisgICAgICAgICAgICBpc29feWVhciA9IGludChmb3VuZF9kaWN0WydHJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdtJzoKICAgICAgICAgICAgIG1vbnRoID0gaW50KGZvdW5kX2RpY3RbJ20nXSkKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ0InOgpAQCAtNDIwLDYgKzQ0MSw5IEBACiAgICAgICAgICAgICAgICAgd2Vla2RheSA9IDYKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgd2Vla2RheSAtPSAxCisgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICd1JzoKKyAgICAgICAgICAgIHdlZWtkYXkgPSBpbnQoZm91bmRfZGljdFsndSddKQorICAgICAgICAgICAgd2Vla2RheSAtPSAxCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdqJzoKICAgICAgICAgICAgIGp1bGlhbiA9IGludChmb3VuZF9kaWN0WydqJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5IGluICgnVScsICdXJyk6CkBAIC00MzAsNiArNDU0LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBXIHN0YXJ0cyB3ZWVrIG9uIE1vbmRheS4KICAgICAgICAgICAgICAgICB3ZWVrX29mX3llYXJfc3RhcnQgPSAwCisgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdWJzoKKyAgICAgICAgICAgIGlzb193ZWVrID0gaW50KGZvdW5kX2RpY3RbJ1YnXSkKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ3onOgogICAgICAgICAgICAgeiA9IGZvdW5kX2RpY3RbJ3onXQogICAgICAgICAgICAgdHpvZmZzZXQgPSBpbnQoelsxOjNdKSAqIDYwICsgaW50KHpbMzo1XSkKQEAgLTQ1MCwzMiArNDc2LDYxIEBACiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICMgRGVhbCB3aXRoIHRoZSBjYXNlcyB3aGVyZSBhbWJpZ3VpdGllcyBhcml6ZQorICAgICMgZG9uJ3QgYXNzdW1lIGRlZmF1bHQgdmFsdWVzIGZvciBJU08gd2Vlay95ZWFyCisgICAgaWYgeWVhciBpcyBOb25lIGFuZCBpc29feWVhciBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgaXNvX3dlZWsgaXMgTm9uZSBvciB3ZWVrZGF5IGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJU08geWVhciBkaXJlY3RpdmUgJyVHJyBtdXN0IGJlIHVzZWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgSVNPIHdlZWsgZGlyZWN0aXZlICclVicgYW5kIGEgd2Vla2RheSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3RpdmUgKCclQScsICclYScsICcldycsIG9yICcldScpLiIpCisgICAgICAgIGlmIGp1bGlhbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkRheSBvZiB0aGUgeWVhciBkaXJlY3RpdmUgJyVqJyBpcyBub3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGF0aWJsZSB3aXRoIElTTyB5ZWFyIGRpcmVjdGl2ZSAnJUcnLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgJyVZJyBpbnN0ZWFkLiIpCisgICAgZWxpZiB3ZWVrX29mX3llYXIgaXMgTm9uZSBhbmQgaXNvX3dlZWsgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIHdlZWtkYXkgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIklTTyB3ZWVrIGRpcmVjdGl2ZSAnJVYnIG11c3QgYmUgdXNlZCB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBJU08geWVhciBkaXJlY3RpdmUgJyVHJyBhbmQgYSB3ZWVrZGF5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdGl2ZSAoJyVBJywgJyVhJywgJyV3Jywgb3IgJyV1JykuIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIklTTyB3ZWVrIGRpcmVjdGl2ZSAnJVYnIGlzIGluY29tcGF0aWJsZSB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSB5ZWFyIGRpcmVjdGl2ZSAnJVknLiBVc2UgdGhlIElTTyB5ZWFyICclRycgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGVhZC4iKQorCiAgICAgbGVhcF95ZWFyX2ZpeCA9IEZhbHNlCiAgICAgaWYgeWVhciBpcyBOb25lIGFuZCBtb250aCA9PSAyIGFuZCBkYXkgPT0gMjk6CiAgICAgICAgIHllYXIgPSAxOTA0ICAjIDE5MDQgaXMgZmlyc3QgbGVhcCB5ZWFyIG9mIDIwdGggY2VudHVyeQogICAgICAgICBsZWFwX3llYXJfZml4ID0gVHJ1ZQogICAgIGVsaWYgeWVhciBpcyBOb25lOgogICAgICAgICB5ZWFyID0gMTkwMAorCisKICAgICAjIElmIHdlIGtub3cgdGhlIHdlZWsgb2YgdGhlIHllYXIgYW5kIHdoYXQgZGF5IG9mIHRoYXQgd2Vlaywgd2UgY2FuIGZpZ3VyZQogICAgICMgb3V0IHRoZSBKdWxpYW4gZGF5IG9mIHRoZSB5ZWFyLgotICAgIGlmIGp1bGlhbiBpcyBOb25lIGFuZCB3ZWVrX29mX3llYXIgIT0gLTEgYW5kIHdlZWtkYXkgaXMgbm90IE5vbmU6Ci0gICAgICAgIHdlZWtfc3RhcnRzX01vbiA9IFRydWUgaWYgd2Vla19vZl95ZWFyX3N0YXJ0ID09IDAgZWxzZSBGYWxzZQotICAgICAgICBqdWxpYW4gPSBfY2FsY19qdWxpYW5fZnJvbV9VX29yX1coeWVhciwgd2Vla19vZl95ZWFyLCB3ZWVrZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrX3N0YXJ0c19Nb24pCi0gICAgICAgIGlmIGp1bGlhbiA8PSAwOgorICAgIGlmIGp1bGlhbiBpcyBOb25lIGFuZCB3ZWVrZGF5IGlzIG5vdCBOb25lOgorICAgICAgICBpZiB3ZWVrX29mX3llYXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3ZWVrX3N0YXJ0c19Nb24gPSBUcnVlIGlmIHdlZWtfb2ZfeWVhcl9zdGFydCA9PSAwIGVsc2UgRmFsc2UKKyAgICAgICAgICAgIGp1bGlhbiA9IF9jYWxjX2p1bGlhbl9mcm9tX1Vfb3JfVyh5ZWFyLCB3ZWVrX29mX3llYXIsIHdlZWtkYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrX3N0YXJ0c19Nb24pCisgICAgICAgIGVsaWYgaXNvX3llYXIgaXMgbm90IE5vbmUgYW5kIGlzb193ZWVrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgeWVhciwganVsaWFuID0gX2NhbGNfanVsaWFuX2Zyb21fVihpc29feWVhciwgaXNvX3dlZWssIHdlZWtkYXkgKyAxKQorICAgICAgICBpZiBqdWxpYW4gaXMgbm90IE5vbmUgYW5kIGp1bGlhbiA8PSAwOgogICAgICAgICAgICAgeWVhciAtPSAxCiAgICAgICAgICAgICB5ZGF5ID0gMzY2IGlmIGNhbGVuZGFyLmlzbGVhcCh5ZWFyKSBlbHNlIDM2NQogICAgICAgICAgICAganVsaWFuICs9IHlkYXkKLSAgICAjIENhbm5vdCBwcmUtY2FsY3VsYXRlIGRhdGV0aW1lX2RhdGUoKSBzaW5jZSBjYW4gY2hhbmdlIGluIEp1bGlhbgotICAgICMgY2FsY3VsYXRpb24gYW5kIHRodXMgY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWUgZm9yIHRoZSBkYXkgb2YgdGhlIHdlZWsKLSAgICAjIGNhbGN1bGF0aW9uLgorCiAgICAgaWYganVsaWFuIGlzIE5vbmU6CisgICAgICAgICMgQ2Fubm90IHByZS1jYWxjdWxhdGUgZGF0ZXRpbWVfZGF0ZSgpIHNpbmNlIGNhbiBjaGFuZ2UgaW4gSnVsaWFuCisgICAgICAgICMgY2FsY3VsYXRpb24gYW5kIHRodXMgY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWUgZm9yIHRoZSBkYXkgb2YKKyAgICAgICAgIyB0aGUgd2VlayBjYWxjdWxhdGlvbi4KICAgICAgICAgIyBOZWVkIHRvIGFkZCAxIHRvIHJlc3VsdCBzaW5jZSBmaXJzdCBkYXkgb2YgdGhlIHllYXIgaXMgMSwgbm90IDAuCiAgICAgICAgIGp1bGlhbiA9IGRhdGV0aW1lX2RhdGUoeWVhciwgbW9udGgsIGRheSkudG9vcmRpbmFsKCkgLSBcCiAgICAgICAgICAgICAgICAgICBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLnRvb3JkaW5hbCgpICsgMQotICAgIGVsc2U6ICAjIEFzc3VtZSB0aGF0IGlmIHRoZXkgYm90aGVyZWQgdG8gaW5jbHVkZSBKdWxpYW4gZGF5IGl0IHdpbGwKLSAgICAgICAgICAgIyBiZSBhY2N1cmF0ZS4KLSAgICAgICAgZGF0ZXRpbWVfcmVzdWx0ID0gZGF0ZXRpbWVfZGF0ZS5mcm9tb3JkaW5hbCgoanVsaWFuIC0gMSkgKyBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLnRvb3JkaW5hbCgpKQorICAgIGVsc2U6ICAjIEFzc3VtZSB0aGF0IGlmIHRoZXkgYm90aGVyZWQgdG8gaW5jbHVkZSBKdWxpYW4gZGF5IChvciBpZiBpdCB3YXMKKyAgICAgICAgICAgIyBjYWxjdWxhdGVkIGFib3ZlIHdpdGggeWVhci93ZWVrL3dlZWtkYXkpIGl0IHdpbGwgYmUgYWNjdXJhdGUuCisgICAgICAgIGRhdGV0aW1lX3Jlc3VsdCA9IGRhdGV0aW1lX2RhdGUuZnJvbW9yZGluYWwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGp1bGlhbiAtIDEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLnRvb3JkaW5hbCgpKQogICAgICAgICB5ZWFyID0gZGF0ZXRpbWVfcmVzdWx0LnllYXIKICAgICAgICAgbW9udGggPSBkYXRldGltZV9yZXN1bHQubW9udGgKICAgICAgICAgZGF5ID0gZGF0ZXRpbWVfcmVzdWx0LmRheQpkaWZmIC0tZ2l0IGEvTGliL2FpZmMucHkgYi9MaWIvYWlmYy5weQppbmRleCA3ZWJkYmViLi42OTJkMGJmIDEwMDY0NAotLS0gYS9MaWIvYWlmYy5weQorKysgYi9MaWIvYWlmYy5weQpAQCAtMjU3LDYgKzI1NywxNSBAQAogX2FpZmNfcGFyYW1zID0gbmFtZWR0dXBsZSgnX2FpZmNfcGFyYW1zJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25jaGFubmVscyBzYW1wd2lkdGggZnJhbWVyYXRlIG5mcmFtZXMgY29tcHR5cGUgY29tcG5hbWUnKQogCitfYWlmY19wYXJhbXMubmNoYW5uZWxzLl9fZG9jX18gPSAnTnVtYmVyIG9mIGF1ZGlvIGNoYW5uZWxzICgxIGZvciBtb25vLCAyIGZvciBzdGVyZW8pJworX2FpZmNfcGFyYW1zLnNhbXB3aWR0aC5fX2RvY19fID0gJ1NhbXBsZSB3aWR0aCBpbiBieXRlcycKK19haWZjX3BhcmFtcy5mcmFtZXJhdGUuX19kb2NfXyA9ICdTYW1wbGluZyBmcmVxdWVuY3knCitfYWlmY19wYXJhbXMubmZyYW1lcy5fX2RvY19fID0gJ051bWJlciBvZiBhdWRpbyBmcmFtZXMnCitfYWlmY19wYXJhbXMuY29tcHR5cGUuX19kb2NfXyA9ICdDb21wcmVzc2lvbiB0eXBlICgiTk9ORSIgZm9yIEFJRkYgZmlsZXMpJworX2FpZmNfcGFyYW1zLmNvbXBuYW1lLl9fZG9jX18gPSAoIiIiXAorQSBodW1hbi1yZWFkYWJsZSB2ZXJzaW9uIG9mIHRoZSBjb21wcmVzc2lvbiB0eXBlCisoJ25vdCBjb21wcmVzc2VkJyBmb3IgQUlGRiBmaWxlcykiIiIpCisKIAogY2xhc3MgQWlmY19yZWFkOgogICAgICMgVmFyaWFibGVzIHVzZWQgaW4gdGhpcyBjbGFzczoKZGlmZiAtLWdpdCBhL0xpYi9hcmdwYXJzZS5weSBiL0xpYi9hcmdwYXJzZS5weQppbmRleCA5YTA2NzE5Li4yMDliNGU5IDEwMDY0NAotLS0gYS9MaWIvYXJncGFyc2UucHkKKysrIGIvTGliL2FyZ3BhcnNlLnB5CkBAIC0xMTgsMTAgKzExOCwxNiBAQAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgdHlwZV9uYW1lID0gdHlwZShzZWxmKS5fX25hbWVfXwogICAgICAgICBhcmdfc3RyaW5ncyA9IFtdCisgICAgICAgIHN0YXJfYXJncyA9IHt9CiAgICAgICAgIGZvciBhcmcgaW4gc2VsZi5fZ2V0X2FyZ3MoKToKICAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZChyZXByKGFyZykpCiAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9nZXRfa3dhcmdzKCk6Ci0gICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQoJyVzPSVyJyAlIChuYW1lLCB2YWx1ZSkpCisgICAgICAgICAgICBpZiBuYW1lLmlzaWRlbnRpZmllcigpOgorICAgICAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZCgnJXM9JXInICUgKG5hbWUsIHZhbHVlKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3Rhcl9hcmdzW25hbWVdID0gdmFsdWUKKyAgICAgICAgaWYgc3Rhcl9hcmdzOgorICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKCcqKiVzJyAlIHJlcHIoc3Rhcl9hcmdzKSkKICAgICAgICAgcmV0dXJuICclcyglcyknICUgKHR5cGVfbmFtZSwgJywgJy5qb2luKGFyZ19zdHJpbmdzKSkKIAogICAgIGRlZiBfZ2V0X2t3YXJncyhzZWxmKToKQEAgLTIwNCw4ICsyMTAsNiBAQAogICAgICAgICAgICAgaWYgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5mb3JtYXR0ZXIuX2luZGVudCgpCiAgICAgICAgICAgICBqb2luID0gc2VsZi5mb3JtYXR0ZXIuX2pvaW5fcGFydHMKLSAgICAgICAgICAgIGZvciBmdW5jLCBhcmdzIGluIHNlbGYuaXRlbXM6Ci0gICAgICAgICAgICAgICAgZnVuYygqYXJncykKICAgICAgICAgICAgIGl0ZW1faGVscCA9IGpvaW4oW2Z1bmMoKmFyZ3MpIGZvciBmdW5jLCBhcmdzIGluIHNlbGYuaXRlbXNdKQogICAgICAgICAgICAgaWYgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5mb3JtYXR0ZXIuX2RlZGVudCgpCmRpZmYgLS1naXQgYS9MaWIvYXN0LnB5IGIvTGliL2FzdC5weQppbmRleCAwMTcwNDcyLi4xNTZhMWYyIDEwMDY0NAotLS0gYS9MaWIvYXN0LnB5CisrKyBiL0xpYi9hc3QucHkKQEAgLTM1LDYgKzM1LDggQEAKICAgICByZXR1cm4gY29tcGlsZShzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBQeUNGX09OTFlfQVNUKQogCiAKK19OVU1fVFlQRVMgPSAoaW50LCBmbG9hdCwgY29tcGxleCkKKwogZGVmIGxpdGVyYWxfZXZhbChub2RlX29yX3N0cmluZyk6CiAgICAgIiIiCiAgICAgU2FmZWx5IGV2YWx1YXRlIGFuIGV4cHJlc3Npb24gbm9kZSBvciBhIHN0cmluZyBjb250YWluaW5nIGEgUHl0aG9uCkBAIC00Nyw3ICs0OSw5IEBACiAgICAgaWYgaXNpbnN0YW5jZShub2RlX29yX3N0cmluZywgRXhwcmVzc2lvbik6CiAgICAgICAgIG5vZGVfb3Jfc3RyaW5nID0gbm9kZV9vcl9zdHJpbmcuYm9keQogICAgIGRlZiBfY29udmVydChub2RlKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCAoU3RyLCBCeXRlcykpOgorICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIENvbnN0YW50KToKKyAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCAoU3RyLCBCeXRlcykpOgogICAgICAgICAgICAgcmV0dXJuIG5vZGUucwogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgTnVtKToKICAgICAgICAgICAgIHJldHVybiBub2RlLm4KQEAgLTYyLDI0ICs2NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaW4gemlwKG5vZGUua2V5cywgbm9kZS52YWx1ZXMpKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgTmFtZUNvbnN0YW50KToKICAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBVbmFyeU9wKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5vcCwgKFVBZGQsIFVTdWIpKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5vcGVyYW5kLCAoTnVtLCBVbmFyeU9wLCBCaW5PcCkpOgorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgVW5hcnlPcCkgYW5kIGlzaW5zdGFuY2Uobm9kZS5vcCwgKFVBZGQsIFVTdWIpKToKICAgICAgICAgICAgIG9wZXJhbmQgPSBfY29udmVydChub2RlLm9wZXJhbmQpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIFVBZGQpOgotICAgICAgICAgICAgICAgIHJldHVybiArIG9wZXJhbmQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0gb3BlcmFuZAotICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQmluT3ApIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLm9wLCAoQWRkLCBTdWIpKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5yaWdodCwgKE51bSwgVW5hcnlPcCwgQmluT3ApKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5sZWZ0LCAoTnVtLCBVbmFyeU9wLCBCaW5PcCkpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvcGVyYW5kLCBfTlVNX1RZUEVTKToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIFVBZGQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKyBvcGVyYW5kCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0gb3BlcmFuZAorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQmluT3ApIGFuZCBpc2luc3RhbmNlKG5vZGUub3AsIChBZGQsIFN1YikpOgogICAgICAgICAgICAgbGVmdCA9IF9jb252ZXJ0KG5vZGUubGVmdCkKICAgICAgICAgICAgIHJpZ2h0ID0gX2NvbnZlcnQobm9kZS5yaWdodCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgQWRkKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCArIHJpZ2h0Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGVmdCwgX05VTV9UWVBFUykgYW5kIGlzaW5zdGFuY2UocmlnaHQsIF9OVU1fVFlQRVMpOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgQWRkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgKyByaWdodAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbWFsZm9ybWVkIG5vZGUgb3Igc3RyaW5nOiAnICsgcmVwcihub2RlKSkKICAgICByZXR1cm4gX2NvbnZlcnQobm9kZV9vcl9zdHJpbmcpCiAKQEAgLTE5NiwxMiArMTk3LDE5IEBACiAgICAgIiIiCiAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgKEFzeW5jRnVuY3Rpb25EZWYsIEZ1bmN0aW9uRGVmLCBDbGFzc0RlZiwgTW9kdWxlKSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXIgY2FuJ3QgaGF2ZSBkb2NzdHJpbmdzIiAlIG5vZGUuX19jbGFzc19fLl9fbmFtZV9fKQotICAgIGlmIG5vZGUuYm9keSBhbmQgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0sIEV4cHIpIGFuZCBcCi0gICAgICAgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0udmFsdWUsIFN0cik6Ci0gICAgICAgIGlmIGNsZWFuOgotICAgICAgICAgICAgaW1wb3J0IGluc3BlY3QKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0LmNsZWFuZG9jKG5vZGUuYm9keVswXS52YWx1ZS5zKQotICAgICAgICByZXR1cm4gbm9kZS5ib2R5WzBdLnZhbHVlLnMKKyAgICBpZiBub3Qobm9kZS5ib2R5IGFuZCBpc2luc3RhbmNlKG5vZGUuYm9keVswXSwgRXhwcikpOgorICAgICAgICByZXR1cm4KKyAgICBub2RlID0gbm9kZS5ib2R5WzBdLnZhbHVlCisgICAgaWYgaXNpbnN0YW5jZShub2RlLCBTdHIpOgorICAgICAgICB0ZXh0ID0gbm9kZS5zCisgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIENvbnN0YW50KSBhbmQgaXNpbnN0YW5jZShub2RlLnZhbHVlLCBzdHIpOgorICAgICAgICB0ZXh0ID0gbm9kZS52YWx1ZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybgorICAgIGlmIGNsZWFuOgorICAgICAgICBpbXBvcnQgaW5zcGVjdAorICAgICAgICB0ZXh0ID0gaW5zcGVjdC5jbGVhbmRvYyh0ZXh0KQorICAgIHJldHVybiB0ZXh0CiAKIAogZGVmIHdhbGsobm9kZSk6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNoYXQucHkgYi9MaWIvYXN5bmNoYXQucHkKaW5kZXggZjcyOGQxYi4uZmMxMTQ2YSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaGF0LnB5CisrKyBiL0xpYi9hc3luY2hhdC5weQpAQCAtMjg1LDM1ICsyODUsNiBAQAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKLWNsYXNzIGZpZm86Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpc3Q9Tm9uZSk6Ci0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKCdmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42JywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgaWYgbm90IGxpc3Q6Ci0gICAgICAgICAgICBzZWxmLmxpc3QgPSBkZXF1ZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmxpc3QgPSBkZXF1ZShsaXN0KQotCi0gICAgZGVmIF9fbGVuX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBsZW4oc2VsZi5saXN0KQotCi0gICAgZGVmIGlzX2VtcHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYubGlzdAotCi0gICAgZGVmIGZpcnN0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5saXN0WzBdCi0KLSAgICBkZWYgcHVzaChzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5saXN0LmFwcGVuZChkYXRhKQotCi0gICAgZGVmIHBvcChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5saXN0OgotICAgICAgICAgICAgcmV0dXJuICgxLCBzZWxmLmxpc3QucG9wbGVmdCgpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICgwLCBOb25lKQotCi0KICMgR2l2ZW4gJ2hheXN0YWNrJywgc2VlIGlmIGFueSBwcmVmaXggb2YgJ25lZWRsZScgaXMgYXQgaXRzIGVuZC4gIFRoaXMKICMgYXNzdW1lcyBhbiBleGFjdCBtYXRjaCBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQuICBSZXR1cm4gdGhlIG51bWJlciBvZgogIyBjaGFyYWN0ZXJzIG1hdGNoZWQuCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5CmluZGV4IDY0OGI5YjkuLjViNWZjZGUgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5CkBAIC00ODgsNyArNDg4LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19jbG9zZWQoKToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weSBiL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weQppbmRleCAyMzc0MmExLi5hMDBkOWQ1IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9iYXNlX3N1YnByb2Nlc3MucHkKKysrIGIvTGliL2FzeW5jaW8vYmFzZV9zdWJwcm9jZXNzLnB5CkBAIC0xMjcsNyArMTI3LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2VkOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIGdldF9waWQoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkgYi9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkKaW5kZXggZmVmMzIwNS4uZmYxMjg3NyAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3Byb2FjdG9yX2V2ZW50cy5weQpAQCAtOTIsNyArOTIsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3NvY2sgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgX2ZhdGFsX2Vycm9yKHNlbGYsIGV4YywgbWVzc2FnZT0nRmF0YWwgZXJyb3Igb24gcGlwZSB0cmFuc3BvcnQnKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weQppbmRleCAxMmQzNTdiLi45ZGJlNTUwIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vc2VsZWN0b3JfZXZlbnRzLnB5CkBAIC02MjcsNyArNjI3LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9zb2NrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuX3NvY2suY2xvc2UoKQogCiAgICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHRyYW5zcG9ydCcpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkgYi9MaWIvYXN5bmNpby9zc2xwcm90by5weQppbmRleCA4MDRjNWMzLi45OTFjNzdiIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9zc2xwcm90by5weQorKysgYi9MaWIvYXN5bmNpby9zc2xwcm90by5weQpAQCAtMzMxLDcgKzMzMSw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBwYXVzZV9yZWFkaW5nKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weSBiL0xpYi9hc3luY2lvL3Rlc3RfdXRpbHMucHkKaW5kZXggMzA3ZmZmYy4uZmRkM2JhMCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weQorKysgYi9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5CkBAIC0xMTksMTAgKzExOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCcsICd0ZXN0X2FzeW5jaW8nKQogICAgICAgICBrZXlmaWxlID0gb3MucGF0aC5qb2luKGhlcmUsICdzc2xfa2V5LnBlbScpCiAgICAgICAgIGNlcnRmaWxlID0gb3MucGF0aC5qb2luKGhlcmUsICdzc2xfY2VydC5wZW0nKQotICAgICAgICBzc29jayA9IHNzbC53cmFwX3NvY2tldChyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPWtleWZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlKQorICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZSkKKworICAgICAgICBzc29jayA9IGNvbnRleHQud3JhcF9zb2NrZXQocmVxdWVzdCwgc2VydmVyX3NpZGU9VHJ1ZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5SZXF1ZXN0SGFuZGxlckNsYXNzKHNzb2NrLCBjbGllbnRfYWRkcmVzcywgc2VsZikKICAgICAgICAgICAgIHNzb2NrLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3VuaXhfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkKaW5kZXggZTFmNWM1Mi4uYjIyN2VlMCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkKQEAgLTM5Myw3ICszOTMsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3BpcGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5fcGlwZS5jbG9zZSgpCiAKICAgICBkZWYgX2ZhdGFsX2Vycm9yKHNlbGYsIGV4YywgbWVzc2FnZT0nRmF0YWwgZXJyb3Igb24gcGlwZSB0cmFuc3BvcnQnKToKQEAgLTU5Myw3ICs1OTQsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3BpcGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5fcGlwZS5jbG9zZSgpCiAKICAgICBkZWYgYWJvcnQoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5IGIvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weQppbmRleCA4NzBjZDEzLi43YzYzZmI5IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5CisrKyBiL0xpYi9hc3luY2lvL3dpbmRvd3NfdXRpbHMucHkKQEAgLTE1OSw3ICsxNTksOCBAQAogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNvcmUucHkgYi9MaWIvYXN5bmNvcmUucHkKaW5kZXggM2I1MWYwZi4uNzA1ZTQwNiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jb3JlLnB5CisrKyBiL0xpYi9hc3luY29yZS5weQpAQCAtMzMzLDcgKzMzMyw3IEBACiAgICAgICAgIHNlbGYuY29ubmVjdGluZyA9IFRydWUKICAgICAgICAgZXJyID0gc2VsZi5zb2NrZXQuY29ubmVjdF9leChhZGRyZXNzKQogICAgICAgICBpZiBlcnIgaW4gKEVJTlBST0dSRVNTLCBFQUxSRUFEWSwgRVdPVUxEQkxPQ0spIFwKLSAgICAgICAgb3IgZXJyID09IEVJTlZBTCBhbmQgb3MubmFtZSBpbiAoJ250JywgJ2NlJyk6CisgICAgICAgIG9yIGVyciA9PSBFSU5WQUwgYW5kIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICAgICAgIHNlbGYuYWRkciA9IGFkZHJlc3MKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBlcnIgaW4gKDAsIEVJU0NPTk4pOgpAQCAtNTk1LDcgKzU5NSw4IEBACiAKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLmZkID49IDA6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZmlsZSAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZmlsZSAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgICAgIGRlZiByZWN2KHNlbGYsICphcmdzKToKZGlmZiAtLWdpdCBhL0xpYi9iYXNlNjQucHkgYi9MaWIvYmFzZTY0LnB5CmluZGV4IGFkYWVjMWQuLjU4ZjZhZDYgMTAwNzU1Ci0tLSBhL0xpYi9iYXNlNjQucHkKKysrIGIvTGliL2Jhc2U2NC5weQpAQCAtNTUsOCArNTUsNyBAQAogICAgIGFsdGVybmF0aXZlIGFscGhhYmV0IGZvciB0aGUgJysnIGFuZCAnLycgY2hhcmFjdGVycy4gIFRoaXMgYWxsb3dzIGFuCiAgICAgYXBwbGljYXRpb24gdG8gZS5nLiBnZW5lcmF0ZSB1cmwgb3IgZmlsZXN5c3RlbSBzYWZlIEJhc2U2NCBzdHJpbmdzLgogICAgICIiIgotICAgICMgU3RyaXAgb2ZmIHRoZSB0cmFpbGluZyBuZXdsaW5lCi0gICAgZW5jb2RlZCA9IGJpbmFzY2lpLmIyYV9iYXNlNjQocylbOi0xXQorICAgIGVuY29kZWQgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHMsIG5ld2xpbmU9RmFsc2UpCiAgICAgaWYgYWx0Y2hhcnMgaXMgbm90IE5vbmU6CiAgICAgICAgIGFzc2VydCBsZW4oYWx0Y2hhcnMpID09IDIsIHJlcHIoYWx0Y2hhcnMpCiAgICAgICAgIHJldHVybiBlbmNvZGVkLnRyYW5zbGF0ZShieXRlcy5tYWtldHJhbnMoYicrLycsIGFsdGNoYXJzKSkKQEAgLTE1Niw3ICsxNTUsNyBAQAogICAgIGxlZnRvdmVyID0gbGVuKHMpICUgNQogICAgICMgUGFkIHRoZSBsYXN0IHF1YW50dW0gd2l0aCB6ZXJvIGJpdHMgaWYgbmVjZXNzYXJ5CiAgICAgaWYgbGVmdG92ZXI6Ci0gICAgICAgIHMgPSBzICsgYnl0ZXMoNSAtIGxlZnRvdmVyKSAgIyBEb24ndCB1c2UgKz0gIQorICAgICAgICBzID0gcyArIGInXDAnICogKDUgLSBsZWZ0b3ZlcikgICMgRG9uJ3QgdXNlICs9ICEKICAgICBlbmNvZGVkID0gYnl0ZWFycmF5KCkKICAgICBmcm9tX2J5dGVzID0gaW50LmZyb21fYnl0ZXMKICAgICBiMzJ0YWIyID0gX2IzMnRhYjIKZGlmZiAtLWdpdCBhL0xpYi9iejIucHkgYi9MaWIvYnoyLnB5CmluZGV4IGJjNzhjNTQuLjZmNTYzMjggMTAwNjQ0Ci0tLSBhL0xpYi9iejIucHkKKysrIGIvTGliL2J6Mi5weQpAQCAtMTEsNiArMTEsNyBAQAogCiBmcm9tIGJ1aWx0aW5zIGltcG9ydCBvcGVuIGFzIF9idWlsdGluX29wZW4KIGltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBfY29tcHJlc3Npb24KIApAQCAtNDIsOSArNDMsOSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0iciIsIGJ1ZmZlcmluZz1Ob25lLCBjb21wcmVzc2xldmVsPTkpOgogICAgICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlLgogCi0gICAgICAgIElmIGZpbGVuYW1lIGlzIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgaXQgZ2l2ZXMgdGhlIG5hbWUKLSAgICAgICAgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUgb2JqZWN0LAotICAgICAgICB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgorICAgICAgICBJZiBmaWxlbmFtZSBpcyBhIHN0ciwgYnl0ZXMsIG9yIFBhdGhMaWtlIG9iamVjdCwgaXQgZ2l2ZXMgdGhlCisgICAgICAgIG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUKKyAgICAgICAgb2JqZWN0LCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgogCiAgICAgICAgIG1vZGUgY2FuIGJlICdyJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksICd3JyBmb3IgKG92ZXIpd3JpdGluZywKICAgICAgICAgJ3gnIGZvciBjcmVhdGluZyBleGNsdXNpdmVseSwgb3IgJ2EnIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbgpAQCAtOTEsNyArOTIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQogCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzLCBvcy5QYXRoTGlrZSkpOgogICAgICAgICAgICAgc2VsZi5fZnAgPSBfYnVpbHRpbl9vcGVuKGZpbGVuYW1lLCBtb2RlKQogICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKQEAgLTk5LDcgKzEwMCw3IEBACiAgICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCiAgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyLCBieXRlcywgZmlsZSBvciBQYXRoTGlrZSBvYmplY3QiKQogCiAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKICAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLApAQCAtMjg5LDggKzI5MCw5IEBACiAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCiAKLSAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMKLSAgICBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyLCBieXRlcywgb3IKKyAgICBQYXRoTGlrZSBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUKKyAgICB0by4KIAogICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIsICJ3IiwgIndiIiwgIngiLCAieGIiLCAiYSIgb3IKICAgICAiYWIiIGZvciBiaW5hcnkgbW9kZSwgb3IgInJ0IiwgInd0IiwgInh0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuCmRpZmYgLS1naXQgYS9MaWIvY2FsZW5kYXIucHkgYi9MaWIvY2FsZW5kYXIucHkKaW5kZXggYjU0NzJmMy4uOTIxNDliNyAxMDA2NDQKLS0tIGEvTGliL2NhbGVuZGFyLnB5CisrKyBiL0xpYi9jYWxlbmRhci5weQpAQCAtMTMsNyArMTMsOSBAQAogX19hbGxfXyA9IFsiSWxsZWdhbE1vbnRoRXJyb3IiLCAiSWxsZWdhbFdlZWtkYXlFcnJvciIsICJzZXRmaXJzdHdlZWtkYXkiLAogICAgICAgICAgICAiZmlyc3R3ZWVrZGF5IiwgImlzbGVhcCIsICJsZWFwZGF5cyIsICJ3ZWVrZGF5IiwgIm1vbnRocmFuZ2UiLAogICAgICAgICAgICAibW9udGhjYWxlbmRhciIsICJwcm1vbnRoIiwgIm1vbnRoIiwgInByY2FsIiwgImNhbGVuZGFyIiwKLSAgICAgICAgICAgInRpbWVnbSIsICJtb250aF9uYW1lIiwgIm1vbnRoX2FiYnIiLCAiZGF5X25hbWUiLCAiZGF5X2FiYnIiXQorICAgICAgICAgICAidGltZWdtIiwgIm1vbnRoX25hbWUiLCAibW9udGhfYWJiciIsICJkYXlfbmFtZSIsICJkYXlfYWJiciIsCisgICAgICAgICAgICJDYWxlbmRhciIsICJUZXh0Q2FsZW5kYXIiLCAiSFRNTENhbGVuZGFyIiwgIkxvY2FsZVRleHRDYWxlbmRhciIsCisgICAgICAgICAgICJMb2NhbGVIVE1MQ2FsZW5kYXIiLCAid2Vla2hlYWRlciJdCiAKICMgRXhjZXB0aW9uIHJhaXNlZCBmb3IgYmFkIGlucHV0ICh3aXRoIHN0cmluZyBwYXJhbWV0ZXIgZm9yIGRldGFpbHMpCiBlcnJvciA9IFZhbHVlRXJyb3IKQEAgLTYwNCw1MSArNjA2LDYzIEBACiAKIAogZGVmIG1haW4oYXJncyk6Ci0gICAgaW1wb3J0IG9wdHBhcnNlCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSJ1c2FnZTogJXByb2cgW29wdGlvbnNdIFt5ZWFyIFttb250aF1dIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBpbXBvcnQgYXJncGFyc2UKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgdGV4dGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgndGV4dCBvbmx5IGFyZ3VtZW50cycpCisgICAgaHRtbGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnaHRtbCBvbmx5IGFyZ3VtZW50cycpCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi13IiwgIi0td2lkdGgiLAotICAgICAgICBkZXN0PSJ3aWR0aCIsIHR5cGU9ImludCIsIGRlZmF1bHQ9MiwKLSAgICAgICAgaGVscD0id2lkdGggb2YgZGF0ZSBjb2x1bW4gKGRlZmF1bHQgMiwgdGV4dCBvbmx5KSIKKyAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9MiwKKyAgICAgICAgaGVscD0id2lkdGggb2YgZGF0ZSBjb2x1bW4gKGRlZmF1bHQgMikiCiAgICAgKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgIHRleHRncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICItbCIsICItLWxpbmVzIiwKLSAgICAgICAgZGVzdD0ibGluZXMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTEsCi0gICAgICAgIGhlbHA9Im51bWJlciBvZiBsaW5lcyBmb3IgZWFjaCB3ZWVrIChkZWZhdWx0IDEsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTEsCisgICAgICAgIGhlbHA9Im51bWJlciBvZiBsaW5lcyBmb3IgZWFjaCB3ZWVrIChkZWZhdWx0IDEpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLXMiLCAiLS1zcGFjaW5nIiwKLSAgICAgICAgZGVzdD0ic3BhY2luZyIsIHR5cGU9ImludCIsIGRlZmF1bHQ9NiwKLSAgICAgICAgaGVscD0ic3BhY2luZyBiZXR3ZWVuIG1vbnRocyAoZGVmYXVsdCA2LCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD02LAorICAgICAgICBoZWxwPSJzcGFjaW5nIGJldHdlZW4gbW9udGhzIChkZWZhdWx0IDYpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLW0iLCAiLS1tb250aHMiLAotICAgICAgICBkZXN0PSJtb250aHMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTMsCi0gICAgICAgIGhlbHA9Im1vbnRocyBwZXIgcm93IChkZWZhdWx0IDMsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTMsCisgICAgICAgIGhlbHA9Im1vbnRocyBwZXIgcm93IChkZWZhdWx0IDMpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBodG1sZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLWMiLCAiLS1jc3MiLAotICAgICAgICBkZXN0PSJjc3MiLCBkZWZhdWx0PSJjYWxlbmRhci5jc3MiLAotICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIChodG1sIG9ubHkpIgorICAgICAgICBkZWZhdWx0PSJjYWxlbmRhci5jc3MiLAorICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLUwiLCAiLS1sb2NhbGUiLAotICAgICAgICBkZXN0PSJsb2NhbGUiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgaGVscD0ibG9jYWxlIHRvIGJlIHVzZWQgZnJvbSBtb250aCBhbmQgd2Vla2RheSBuYW1lcyIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1lIiwgIi0tZW5jb2RpbmciLAotICAgICAgICBkZXN0PSJlbmNvZGluZyIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0iRW5jb2RpbmcgdG8gdXNlIGZvciBvdXRwdXQuIgorICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgIGhlbHA9ImVuY29kaW5nIHRvIHVzZSBmb3Igb3V0cHV0IgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLXQiLCAiLS10eXBlIiwKLSAgICAgICAgZGVzdD0idHlwZSIsIGRlZmF1bHQ9InRleHQiLAorICAgICAgICBkZWZhdWx0PSJ0ZXh0IiwKICAgICAgICAgY2hvaWNlcz0oInRleHQiLCAiaHRtbCIpLAogICAgICAgICBoZWxwPSJvdXRwdXQgdHlwZSAodGV4dCBvciBodG1sKSIKICAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgInllYXIiLAorICAgICAgICBuYXJncz0nPycsIHR5cGU9aW50LAorICAgICAgICBoZWxwPSJ5ZWFyIG51bWJlciAoMS05OTk5KSIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIm1vbnRoIiwKKyAgICAgICAgbmFyZ3M9Jz8nLCB0eXBlPWludCwKKyAgICAgICAgaGVscD0ibW9udGggbnVtYmVyICgxLTEyLCB0ZXh0IG9ubHkpIgorICAgICkKIAotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3NbMTpdKQogCiAgICAgaWYgb3B0aW9ucy5sb2NhbGUgYW5kIG5vdCBvcHRpb25zLmVuY29kaW5nOgogICAgICAgICBwYXJzZXIuZXJyb3IoImlmIC0tbG9jYWxlIGlzIHNwZWNpZmllZCAtLWVuY29kaW5nIGlzIHJlcXVpcmVkIikKQEAgLTY2NiwxMCArNjgwLDEwIEBACiAgICAgICAgICAgICBlbmNvZGluZyA9IHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKQogICAgICAgICBvcHRkaWN0ID0gZGljdChlbmNvZGluZz1lbmNvZGluZywgY3NzPW9wdGlvbnMuY3NzKQogICAgICAgICB3cml0ZSA9IHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlCi0gICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgorICAgICAgICBpZiBvcHRpb25zLnllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShkYXRldGltZS5kYXRlLnRvZGF5KCkueWVhciwgKipvcHRkaWN0KSkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShpbnQoYXJnc1sxXSksICoqb3B0ZGljdCkpCisgICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgorICAgICAgICAgICAgd3JpdGUoY2FsLmZvcm1hdHllYXJwYWdlKG9wdGlvbnMueWVhciwgKipvcHRkaWN0KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBhcnNlci5lcnJvcigiaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMiKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKQEAgLTY3OSwxOCArNjkzLDE1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjYWwgPSBUZXh0Q2FsZW5kYXIoKQogICAgICAgICBvcHRkaWN0ID0gZGljdCh3PW9wdGlvbnMud2lkdGgsIGw9b3B0aW9ucy5saW5lcykKLSAgICAgICAgaWYgbGVuKGFyZ3MpICE9IDM6CisgICAgICAgIGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKICAgICAgICAgICAgIG9wdGRpY3RbImMiXSA9IG9wdGlvbnMuc3BhY2luZwogICAgICAgICAgICAgb3B0ZGljdFsibSJdID0gb3B0aW9ucy5tb250aHMKLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDE6CisgICAgICAgIGlmIG9wdGlvbnMueWVhciBpcyBOb25lOgogICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdHllYXIoZGF0ZXRpbWUuZGF0ZS50b2RheSgpLnllYXIsICoqb3B0ZGljdCkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKGludChhcmdzWzFdKSwgKipvcHRkaWN0KQotICAgICAgICBlbGlmIGxlbihhcmdzKSA9PSAzOgotICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdG1vbnRoKGludChhcmdzWzFdKSwgaW50KGFyZ3NbMl0pLCAqKm9wdGRpY3QpCisgICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgorICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdHllYXIob3B0aW9ucy55ZWFyLCAqKm9wdGRpY3QpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXJzZXIuZXJyb3IoImluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIikKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0bW9udGgob3B0aW9ucy55ZWFyLCBvcHRpb25zLm1vbnRoLCAqKm9wdGRpY3QpCiAgICAgICAgIHdyaXRlID0gc3lzLnN0ZG91dC53cml0ZQogICAgICAgICBpZiBvcHRpb25zLmVuY29kaW5nOgogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmVuY29kZShvcHRpb25zLmVuY29kaW5nKQpkaWZmIC0tZ2l0IGEvTGliL2NnaS5weSBiL0xpYi9jZ2kucHkKaW5kZXggMTg5YzZkNS4uMjMzYTQ5NiAxMDA3NTUKLS0tIGEvTGliL2NnaS5weQorKysgYi9MaWIvY2dpLnB5CkBAIC00NSw3ICs0NSw3IEBACiAKIF9fYWxsX18gPSBbIk1pbmlGaWVsZFN0b3JhZ2UiLCAiRmllbGRTdG9yYWdlIiwKICAgICAgICAgICAgInBhcnNlIiwgInBhcnNlX3FzIiwgInBhcnNlX3FzbCIsICJwYXJzZV9tdWx0aXBhcnQiLAotICAgICAgICAgICAicGFyc2VfaGVhZGVyIiwgInByaW50X2V4Y2VwdGlvbiIsICJwcmludF9lbnZpcm9uIiwKKyAgICAgICAgICAgInBhcnNlX2hlYWRlciIsICJ0ZXN0IiwgInByaW50X2V4Y2VwdGlvbiIsICJwcmludF9lbnZpcm9uIiwKICAgICAgICAgICAgInByaW50X2Zvcm0iLCAicHJpbnRfZGlyZWN0b3J5IiwgInByaW50X2FyZ3VtZW50cyIsCiAgICAgICAgICAgICJwcmludF9lbnZpcm9uX3VzYWdlIiwgImVzY2FwZSJdCiAKZGlmZiAtLWdpdCBhL0xpYi9jb2RlLnB5IGIvTGliL2NvZGUucHkKaW5kZXggNTMyNDRlMy4uMjMyOTVmNCAxMDA2NDQKLS0tIGEvTGliL2NvZGUucHkKKysrIGIvTGliL2NvZGUucHkKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgICAgICAiIiJSZXNldCB0aGUgaW5wdXQgYnVmZmVyLiIiIgogICAgICAgICBzZWxmLmJ1ZmZlciA9IFtdCiAKLSAgICBkZWYgaW50ZXJhY3Qoc2VsZiwgYmFubmVyPU5vbmUpOgorICAgIGRlZiBpbnRlcmFjdChzZWxmLCBiYW5uZXI9Tm9uZSwgZXhpdG1zZz1Ob25lKToKICAgICAgICAgIiIiQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gY29uc29sZS4KIAogICAgICAgICBUaGUgb3B0aW9uYWwgYmFubmVyIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgYmFubmVyIHRvIHByaW50CkBAIC0xOTYsNiArMTk2LDExIEBACiAgICAgICAgIHRvIGNvbmZ1c2UgdGhpcyB3aXRoIHRoZSByZWFsIGludGVycHJldGVyIC0tIHNpbmNlIGl0J3Mgc28KICAgICAgICAgY2xvc2UhKS4KIAorICAgICAgICBUaGUgb3B0aW9uYWwgZXhpdG1zZyBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGV4aXQgbWVzc2FnZQorICAgICAgICBwcmludGVkIHdoZW4gZXhpdGluZy4gUGFzcyB0aGUgZW1wdHkgc3RyaW5nIHRvIHN1cHByZXNzCisgICAgICAgIHByaW50aW5nIGFuIGV4aXQgbWVzc2FnZS4gSWYgZXhpdG1zZyBpcyBub3QgZ2l2ZW4gb3IgTm9uZSwKKyAgICAgICAgYSBkZWZhdWx0IG1lc3NhZ2UgaXMgcHJpbnRlZC4KKwogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLnBzMQpAQCAtMjMwLDYgKzIzNSwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIlxuS2V5Ym9hcmRJbnRlcnJ1cHRcbiIpCiAgICAgICAgICAgICAgICAgc2VsZi5yZXNldGJ1ZmZlcigpCiAgICAgICAgICAgICAgICAgbW9yZSA9IDAKKyAgICAgICAgaWYgZXhpdG1zZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnbm93IGV4aXRpbmcgJXMuLi5cbicgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAgICAgZWxpZiBleGl0bXNnICE9ICcnOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnJXNcbicgJSBleGl0bXNnKQogCiAgICAgZGVmIHB1c2goc2VsZiwgbGluZSk6CiAgICAgICAgICIiIlB1c2ggYSBsaW5lIHRvIHRoZSBpbnRlcnByZXRlci4KQEAgLTI2Nyw3ICsyNzYsNyBAQAogCiAKIAotZGVmIGludGVyYWN0KGJhbm5lcj1Ob25lLCByZWFkZnVuYz1Ob25lLCBsb2NhbD1Ob25lKToKK2RlZiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSwgZXhpdG1zZz1Ob25lKToKICAgICAiIiJDbG9zZWx5IGVtdWxhdGUgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBpbnRlcnByZXRlci4KIAogICAgIFRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJsZSBpbnRlcmZhY2UgdG8gdGhlIEludGVyYWN0aXZlQ29uc29sZQpAQCAtMjc5LDYgKzI4OCw3IEBACiAgICAgYmFubmVyIC0tIHBhc3NlZCB0byBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoKQogICAgIHJlYWRmdW5jIC0tIGlmIG5vdCBOb25lLCByZXBsYWNlcyBJbnRlcmFjdGl2ZUNvbnNvbGUucmF3X2lucHV0KCkKICAgICBsb2NhbCAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVJbnRlcnByZXRlci5fX2luaXRfXygpCisgICAgZXhpdG1zZyAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVDb25zb2xlLmludGVyYWN0KCkKIAogICAgICIiIgogICAgIGNvbnNvbGUgPSBJbnRlcmFjdGl2ZUNvbnNvbGUobG9jYWwpCkBAIC0yODksNyArMjk5LDcgQEAKICAgICAgICAgICAgIGltcG9ydCByZWFkbGluZQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIpCisgICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIsIGV4aXRtc2cpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weSBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQppbmRleCBlYmU4ZWU3Li5iY2M0MjkxIDEwMDY0NAotLS0gYS9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKKysrIGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CkBAIC0zNTMsNyArMzUzLDcgQEAKICAgICB7bmFtZX0gPSBfcHJvcGVydHkoX2l0ZW1nZXR0ZXIoe2luZGV4OmR9KSwgZG9jPSdBbGlhcyBmb3IgZmllbGQgbnVtYmVyIHtpbmRleDpkfScpCiAnJycKIAotZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UpOgorZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCAqLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UsIG1vZHVsZT1Ob25lKToKICAgICAiIiJSZXR1cm5zIGEgbmV3IHN1YmNsYXNzIG9mIHR1cGxlIHdpdGggbmFtZWQgZmllbGRzLgogCiAgICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKQpAQCAtMzkzLDcgKzM5Myw3IEBACiAgICAgICAgICAgICAgICAgZmllbGRfbmFtZXNbaW5kZXhdID0gJ18lZCcgJSBpbmRleAogICAgICAgICAgICAgc2Vlbi5hZGQobmFtZSkKICAgICBmb3IgbmFtZSBpbiBbdHlwZW5hbWVdICsgZmllbGRfbmFtZXM6Ci0gICAgICAgIGlmIHR5cGUobmFtZSkgIT0gc3RyOgorICAgICAgICBpZiB0eXBlKG5hbWUpIGlzIG5vdCBzdHI6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIG11c3QgYmUgc3RyaW5ncycpCiAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgbXVzdCBiZSB2YWxpZCAnCkBAIC00MzQsMTEgKzQzNCwxNSBAQAogICAgICMgRm9yIHBpY2tsaW5nIHRvIHdvcmssIHRoZSBfX21vZHVsZV9fIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldCB0byB0aGUgZnJhbWUKICAgICAjIHdoZXJlIHRoZSBuYW1lZCB0dXBsZSBpcyBjcmVhdGVkLiAgQnlwYXNzIHRoaXMgc3RlcCBpbiBlbnZpcm9ubWVudHMgd2hlcmUKICAgICAjIHN5cy5fZ2V0ZnJhbWUgaXMgbm90IGRlZmluZWQgKEp5dGhvbiBmb3IgZXhhbXBsZSkgb3Igc3lzLl9nZXRmcmFtZSBpcyBub3QKLSAgICAjIGRlZmluZWQgZm9yIGFyZ3VtZW50cyBncmVhdGVyIHRoYW4gMCAoSXJvblB5dGhvbikuCi0gICAgdHJ5OgotICAgICAgICByZXN1bHQuX19tb2R1bGVfXyA9IF9zeXMuX2dldGZyYW1lKDEpLmZfZ2xvYmFscy5nZXQoJ19fbmFtZV9fJywgJ19fbWFpbl9fJykKLSAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgcGFzcworICAgICMgZGVmaW5lZCBmb3IgYXJndW1lbnRzIGdyZWF0ZXIgdGhhbiAwIChJcm9uUHl0aG9uKSwgb3Igd2hlcmUgdGhlIHVzZXIgaGFzCisgICAgIyBzcGVjaWZpZWQgYSBwYXJ0aWN1bGFyIG1vZHVsZS4KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9kdWxlID0gX3N5cy5fZ2V0ZnJhbWUoMSkuZl9nbG9iYWxzLmdldCgnX19uYW1lX18nLCAnX19tYWluX18nKQorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHBhc3MKKyAgICBpZiBtb2R1bGUgaXMgbm90IE5vbmU6CisgICAgICAgIHJlc3VsdC5fX21vZHVsZV9fID0gbW9kdWxlCiAKICAgICByZXR1cm4gcmVzdWx0CiAKQEAgLTg0Miw3ICs4NDYsNyBAQAogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjICBDaGFpbk1hcCAoaGVscGVyIGZvciBjb25maWdwYXJzZXIgYW5kIHN0cmluZy5UZW1wbGF0ZSkKKyMjIyAgQ2hhaW5NYXAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBjbGFzcyBDaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CkBAIC05NjksNyArOTczLDcgQEAKICAgICAgICAgICAgIGRpY3QgPSBrd2FyZ3MucG9wKCdkaWN0JykKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybigiUGFzc2luZyAnZGljdCcgYXMga2V5d29yZCBhcmd1bWVudCBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRpY3QgPSBOb25lCiAgICAgICAgIHNlbGYuZGF0YSA9IHt9CmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2M2UzOGUuLjAwMDAwMDAKLS0tIGEvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBTaW1wbGUgdGVzdHMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgdmVyaWZ5IHRoYXQgaW5zdGFuY2VzIGNhbiBiZSBwaWNrbGVkCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIHBpY2tsZSBpbXBvcnQgbG9hZHMsIGR1bXBzCi1Qb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3gsIHknLCBUcnVlKQotcCA9IFBvaW50KHg9MTAsIHk9MjApCi1hc3NlcnQgcCA9PSBsb2FkcyhkdW1wcyhwKSkKLQotIyB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIG1ldGhvZHMKLWNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICBfX3Nsb3RzX18gPSAoKQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBoeXBvdChzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQotCi1mb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNy4pOgotICAgIHByaW50IChwKQotCi1jbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgJ1BvaW50IGNsYXNzIHdpdGggb3B0aW1pemVkIF9tYWtlKCkgYW5kIF9yZXBsYWNlKCkgd2l0aG91dCBlcnJvci1jaGVja2luZycKLSAgICBfX3Nsb3RzX18gPSAoKQotICAgIF9tYWtlID0gY2xhc3NtZXRob2QodHVwbGUuX19uZXdfXykKLSAgICBkZWYgX3JlcGxhY2Uoc2VsZiwgX21hcD1tYXAsICoqa3dkcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9tYWtlKF9tYXAoa3dkcy5nZXQsICgneCcsICd5JyksIHNlbGYpKQotCi1wcmludChQb2ludCgxMSwgMjIpLl9yZXBsYWNlKHg9MTAwKSkKLQotUG9pbnQzRCA9IG5hbWVkdHVwbGUoJ1BvaW50M0QnLCBQb2ludC5fZmllbGRzICsgKCd6JywpKQotcHJpbnQoUG9pbnQzRC5fX2RvY19fKQotCi1pbXBvcnQgZG9jdGVzdCwgY29sbGVjdGlvbnMKLVRlc3RSZXN1bHRzID0gbmFtZWR0dXBsZSgnVGVzdFJlc3VsdHMnLCAnZmFpbGVkIGF0dGVtcHRlZCcpCi1wcmludChUZXN0UmVzdWx0cygqZG9jdGVzdC50ZXN0bW9kKGNvbGxlY3Rpb25zKSkpCmRpZmYgLS1naXQgYS9MaWIvY29tcGlsZWFsbC5weSBiL0xpYi9jb21waWxlYWxsLnB5CmluZGV4IDBjYzBjMWQuLjNlNDU3ODUgMTAwNjQ0Ci0tLSBhL0xpYi9jb21waWxlYWxsLnB5CisrKyBiL0xpYi9jb21waWxlYWxsLnB5CkBAIC0yNSw2ICsyNSw4IEBACiBfX2FsbF9fID0gWyJjb21waWxlX2RpciIsImNvbXBpbGVfZmlsZSIsImNvbXBpbGVfcGF0aCJdCiAKIGRlZiBfd2Fsa19kaXIoZGlyLCBkZGlyPU5vbmUsIG1heGxldmVscz0xMCwgcXVpZXQ9MCk6CisgICAgaWYgcXVpZXQgPCAyIGFuZCBpc2luc3RhbmNlKGRpciwgb3MuUGF0aExpa2UpOgorICAgICAgICBkaXIgPSBvcy5mc3BhdGgoZGlyKQogICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgcHJpbnQoJ0xpc3RpbmcgeyFyfS4uLicuZm9ybWF0KGRpcikpCiAgICAgdHJ5OgpAQCAtNjgsNyArNzAsNyBAQAogICAgICIiIgogICAgIGZpbGVzID0gX3dhbGtfZGlyKGRpciwgcXVpZXQ9cXVpZXQsIG1heGxldmVscz1tYXhsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgZGRpcj1kZGlyKQotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKICAgICBpZiB3b3JrZXJzIGlzIG5vdCBOb25lIGFuZCB3b3JrZXJzICE9IDEgYW5kIFByb2Nlc3NQb29sRXhlY3V0b3IgaXMgbm90IE5vbmU6CiAgICAgICAgIGlmIHdvcmtlcnMgPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignd29ya2VycyBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gMCcpCkBAIC04MSwxMiArODMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdhY3k9bGVnYWN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPW9wdGltaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMpCi0gICAgICAgICAgICBzdWNjZXNzID0gbWluKHJlc3VsdHMsIGRlZmF1bHQ9MSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBtaW4ocmVzdWx0cywgZGVmYXVsdD1UcnVlKQogICAgIGVsc2U6CiAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZmlsZShmaWxlLCBkZGlyLCBmb3JjZSwgcngsIHF1aWV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdhY3ksIG9wdGltaXplKToKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgIHJldHVybiBzdWNjZXNzCiAKIGRlZiBjb21waWxlX2ZpbGUoZnVsbG5hbWUsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsCkBAIC0xMDQsNyArMTA2LDkgQEAKICAgICBsZWdhY3k6ICAgIGlmIFRydWUsIHByb2R1Y2UgbGVnYWN5IHB5YyBwYXRocyBpbnN0ZWFkIG9mIFBFUCAzMTQ3IHBhdGhzCiAgICAgb3B0aW1pemU6ICBvcHRpbWl6YXRpb24gbGV2ZWwgb3IgLTEgZm9yIGxldmVsIG9mIHRoZSBpbnRlcnByZXRlcgogICAgICIiIgotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKKyAgICBpZiBxdWlldCA8IDIgYW5kIGlzaW5zdGFuY2UoZnVsbG5hbWUsIG9zLlBhdGhMaWtlKToKKyAgICAgICAgZnVsbG5hbWUgPSBvcy5mc3BhdGgoZnVsbG5hbWUpCiAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZnVsbG5hbWUpCiAgICAgaWYgZGRpciBpcyBub3QgTm9uZToKICAgICAgICAgZGZpbGUgPSBvcy5wYXRoLmpvaW4oZGRpciwgbmFtZSkKQEAgLTE0NCw3ICsxNDgsNyBAQAogICAgICAgICAgICAgICAgIG9rID0gcHlfY29tcGlsZS5jb21waWxlKGZ1bGxuYW1lLCBjZmlsZSwgZGZpbGUsIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9b3B0aW1pemUpCiAgICAgICAgICAgICBleGNlcHQgcHlfY29tcGlsZS5QeUNvbXBpbGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgICAgICBpZiBxdWlldCA+PSAyOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcwogICAgICAgICAgICAgICAgIGVsaWYgcXVpZXQ6CkBAIC0xNTcsNyArMTYxLDcgQEAKICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZGVjb2RlKHN5cy5zdGRvdXQuZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgcHJpbnQobXNnKQogICAgICAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgVW5pY29kZUVycm9yLCBPU0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgpAQCAtMTY3LDcgKzE3MSw3IEBACiAgICAgICAgICAgICAgICAgcHJpbnQoZS5fX2NsYXNzX18uX19uYW1lX18gKyAnOicsIGUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIG9rID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgIHJldHVybiBzdWNjZXNzCiAKIGRlZiBjb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9MSwgbWF4bGV2ZWxzPTAsIGZvcmNlPUZhbHNlLCBxdWlldD0wLApAQCAtMTgzLDcgKzE4Nyw3IEBACiAgICAgbGVnYWN5OiBhcyBmb3IgY29tcGlsZV9kaXIoKSAoZGVmYXVsdCBGYWxzZSkKICAgICBvcHRpbWl6ZTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgLTEpCiAgICAgIiIiCi0gICAgc3VjY2VzcyA9IDEKKyAgICBzdWNjZXNzID0gVHJ1ZQogICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CiAgICAgICAgIGlmIChub3QgZGlyIG9yIGRpciA9PSBvcy5jdXJkaXIpIGFuZCBza2lwX2N1cmRpcjoKICAgICAgICAgICAgIGlmIHF1aWV0IDwgMjoKZGlmZiAtLWdpdCBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKaW5kZXggOWMzYWVjOS4uMDNkMjc2YiAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKKysrIGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKQEAgLTgxLDEyICs4MSwxMyBAQAogICAgICAgICBfYmFzZS5MT0dHRVIuY3JpdGljYWwoJ0V4Y2VwdGlvbiBpbiB3b3JrZXInLCBleGNfaW5mbz1UcnVlKQogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3IoX2Jhc2UuRXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhfd29ya2Vycz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSwgdGhyZWFkX25hbWVfcHJlZml4PScnKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZXMgYSBuZXcgVGhyZWFkUG9vbEV4ZWN1dG9yIGluc3RhbmNlLgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBtYXhfd29ya2VyczogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgdGhhdCBjYW4gYmUgdXNlZCB0bwogICAgICAgICAgICAgICAgIGV4ZWN1dGUgdGhlIGdpdmVuIGNhbGxzLgorICAgICAgICAgICAgdGhyZWFkX25hbWVfcHJlZml4OiBBbiBvcHRpb25hbCBuYW1lIHByZWZpeCB0byBnaXZlIG91ciB0aHJlYWRzLgogICAgICAgICAiIiIKICAgICAgICAgaWYgbWF4X3dvcmtlcnMgaXMgTm9uZToKICAgICAgICAgICAgICMgVXNlIHRoaXMgbnVtYmVyIGJlY2F1c2UgVGhyZWFkUG9vbEV4ZWN1dG9yIGlzIG9mdGVuCkBAIC0xMDAsNiArMTAxLDcgQEAKICAgICAgICAgc2VsZi5fdGhyZWFkcyA9IHNldCgpCiAgICAgICAgIHNlbGYuX3NodXRkb3duID0gRmFsc2UKICAgICAgICAgc2VsZi5fc2h1dGRvd25fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5fdGhyZWFkX25hbWVfcHJlZml4ID0gdGhyZWFkX25hbWVfcHJlZml4CiAKICAgICBkZWYgc3VibWl0KHNlbGYsIGZuLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICB3aXRoIHNlbGYuX3NodXRkb3duX2xvY2s6CkBAIC0xMjEsOCArMTIzLDExIEBACiAgICAgICAgICAgICBxLnB1dChOb25lKQogICAgICAgICAjIFRPRE8oYnF1aW5sYW4pOiBTaG91bGQgYXZvaWQgY3JlYXRpbmcgbmV3IHRocmVhZHMgaWYgdGhlcmUgYXJlIG1vcmUKICAgICAgICAgIyBpZGxlIHRocmVhZHMgdGhhbiBpdGVtcyBpbiB0aGUgd29yayBxdWV1ZS4KLSAgICAgICAgaWYgbGVuKHNlbGYuX3RocmVhZHMpIDwgc2VsZi5fbWF4X3dvcmtlcnM6Ci0gICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X3dvcmtlciwKKyAgICAgICAgbnVtX3RocmVhZHMgPSBsZW4oc2VsZi5fdGhyZWFkcykKKyAgICAgICAgaWYgbnVtX3RocmVhZHMgPCBzZWxmLl9tYXhfd29ya2VyczoKKyAgICAgICAgICAgIHRocmVhZF9uYW1lID0gJyVzXyVkJyAlIChzZWxmLl90aHJlYWRfbmFtZV9wcmVmaXggb3Igc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fdGhyZWFkcykKKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKG5hbWU9dGhyZWFkX25hbWUsIHRhcmdldD1fd29ya2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0od2Vha3JlZi5yZWYoc2VsZiwgd2Vha3JlZl9jYiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93b3JrX3F1ZXVlKSkKICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2NvbnRleHRsaWIucHkgYi9MaWIvY29udGV4dGxpYi5weQppbmRleCBkNDRlZGQ2Li43ZDk0YTU3IDEwMDY0NAotLS0gYS9MaWIvY29udGV4dGxpYi5weQorKysgYi9MaWIvY29udGV4dGxpYi5weQpAQCAtMSwxMSArMSwzNCBAQAogIiIiVXRpbGl0aWVzIGZvciB3aXRoLXN0YXRlbWVudCBjb250ZXh0cy4gIFNlZSBQRVAgMzQzLiIiIgotCitpbXBvcnQgYWJjCiBpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiAKLV9fYWxsX18gPSBbImNvbnRleHRtYW5hZ2VyIiwgImNsb3NpbmciLCAiQ29udGV4dERlY29yYXRvciIsICJFeGl0U3RhY2siLAotICAgICAgICAgICAicmVkaXJlY3Rfc3Rkb3V0IiwgInJlZGlyZWN0X3N0ZGVyciIsICJzdXBwcmVzcyJdCitfX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkFic3RyYWN0Q29udGV4dE1hbmFnZXIiLAorICAgICAgICAgICAiQ29udGV4dERlY29yYXRvciIsICJFeGl0U3RhY2siLCAicmVkaXJlY3Rfc3Rkb3V0IiwKKyAgICAgICAgICAgInJlZGlyZWN0X3N0ZGVyciIsICJzdXBwcmVzcyJdCisKKworY2xhc3MgQWJzdHJhY3RDb250ZXh0TWFuYWdlcihhYmMuQUJDKToKKworICAgICIiIkFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNvbnRleHQgbWFuYWdlcnMuIiIiCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYHNlbGZgIHVwb24gZW50ZXJpbmcgdGhlIHJ1bnRpbWUgY29udGV4dC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgIiIiUmFpc2UgYW55IGV4Y2VwdGlvbiB0cmlnZ2VyZWQgd2l0aGluIHRoZSBydW50aW1lIGNvbnRleHQuIiIiCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQWJzdHJhY3RDb250ZXh0TWFuYWdlcjoKKyAgICAgICAgICAgIGlmIChhbnkoIl9fZW50ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAorICAgICAgICAgICAgICAgIGFueSgiX19leGl0X18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIAogY2xhc3MgQ29udGV4dERlY29yYXRvcihvYmplY3QpOgpAQCAtMzEsNyArNTQsNyBAQAogICAgICAgICByZXR1cm4gaW5uZXIKIAogCi1jbGFzcyBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIoQ29udGV4dERlY29yYXRvcik6CitjbGFzcyBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIoQ29udGV4dERlY29yYXRvciwgQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAgICAgIiIiSGVscGVyIGZvciBAY29udGV4dG1hbmFnZXIgZGVjb3JhdG9yLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmMsIGFyZ3MsIGt3ZHMpOgpAQCAtMTM3LDcgKzE2MCw3IEBACiAgICAgcmV0dXJuIGhlbHBlcgogCiAKLWNsYXNzIGNsb3Npbmcob2JqZWN0KToKK2NsYXNzIGNsb3NpbmcoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAgICAgIiIiQ29udGV4dCB0byBhdXRvbWF0aWNhbGx5IGNsb3NlIHNvbWV0aGluZyBhdCB0aGUgZW5kIG9mIGEgYmxvY2suCiAKICAgICBDb2RlIGxpa2UgdGhpczoKQEAgLTE2Miw3ICsxODUsNyBAQAogICAgICAgICBzZWxmLnRoaW5nLmNsb3NlKCkKIAogCi1jbGFzcyBfUmVkaXJlY3RTdHJlYW06CitjbGFzcyBfUmVkaXJlY3RTdHJlYW0oQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAKICAgICBfc3RyZWFtID0gTm9uZQogCkBAIC0yMDIsNyArMjI1LDcgQEAKICAgICBfc3RyZWFtID0gInN0ZGVyciIKIAogCi1jbGFzcyBzdXBwcmVzczoKK2NsYXNzIHN1cHByZXNzKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkNvbnRleHQgbWFuYWdlciB0byBzdXBwcmVzcyBzcGVjaWZpZWQgZXhjZXB0aW9ucwogCiAgICAgQWZ0ZXIgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBleGVjdXRpb24gcHJvY2VlZHMgd2l0aCB0aGUgbmV4dApAQCAtMjMzLDcgKzI1Niw3IEBACiAKIAogIyBJbnNwaXJlZCBieSBkaXNjdXNzaW9ucyBvbiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTM1ODUKLWNsYXNzIEV4aXRTdGFjayhvYmplY3QpOgorY2xhc3MgRXhpdFN0YWNrKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgZHluYW1pYyBtYW5hZ2VtZW50IG9mIGEgc3RhY2sgb2YgZXhpdCBjYWxsYmFja3MKIAogICAgIEZvciBleGFtcGxlOgpAQCAtMzEyLDkgKzMzNSw2IEBACiAgICAgICAgICIiIkltbWVkaWF0ZWx5IHVud2luZCB0aGUgY29udGV4dCBzdGFjayIiIgogICAgICAgICBzZWxmLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CiAgICAgICAgIHJlY2VpdmVkX2V4YyA9IGV4Y19kZXRhaWxzWzBdIGlzIG5vdCBOb25lCiAKZGlmZiAtLWdpdCBhL0xpYi9jb3B5LnB5IGIvTGliL2NvcHkucHkKaW5kZXggOTcyYjk0YS4uZjg2MDQwYSAxMDA2NDQKLS0tIGEvTGliL2NvcHkucHkKKysrIGIvTGliL2NvcHkucHkKQEAgLTUxLDcgKzUxLDYgQEAKIGltcG9ydCB0eXBlcwogaW1wb3J0IHdlYWtyZWYKIGZyb20gY29weXJlZyBpbXBvcnQgZGlzcGF0Y2hfdGFibGUKLWltcG9ydCBidWlsdGlucwogCiBjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTEwMiwzNyArMTAxLDMzIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCJ1bihzaGFsbG93KWNvcHlhYmxlIG9iamVjdCBvZiB0eXBlICVzIiAlIGNscykKIAotICAgIHJldHVybiBfcmVjb25zdHJ1Y3QoeCwgcnYsIDApCisgICAgaWYgaXNpbnN0YW5jZShydiwgc3RyKToKKyAgICAgICAgcmV0dXJuIHgKKyAgICByZXR1cm4gX3JlY29uc3RydWN0KHgsIE5vbmUsICpydikKIAogCiBfY29weV9kaXNwYXRjaCA9IGQgPSB7fQogCiBkZWYgX2NvcHlfaW1tdXRhYmxlKHgpOgogICAgIHJldHVybiB4Ci1mb3IgdCBpbiAodHlwZShOb25lKSwgaW50LCBmbG9hdCwgYm9vbCwgc3RyLCB0dXBsZSwKLSAgICAgICAgICBieXRlcywgZnJvemVuc2V0LCB0eXBlLCByYW5nZSwKLSAgICAgICAgICB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlLCB0eXBlKEVsbGlwc2lzKSwKK2ZvciB0IGluICh0eXBlKE5vbmUpLCBpbnQsIGZsb2F0LCBib29sLCBjb21wbGV4LCBzdHIsIHR1cGxlLAorICAgICAgICAgIGJ5dGVzLCBmcm96ZW5zZXQsIHR5cGUsIHJhbmdlLCBzbGljZSwKKyAgICAgICAgICB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlLCB0eXBlKEVsbGlwc2lzKSwgdHlwZShOb3RJbXBsZW1lbnRlZCksCiAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlLCB3ZWFrcmVmLnJlZik6CiAgICAgZFt0XSA9IF9jb3B5X2ltbXV0YWJsZQogdCA9IGdldGF0dHIodHlwZXMsICJDb2RlVHlwZSIsIE5vbmUpCiBpZiB0IGlzIG5vdCBOb25lOgogICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKLWZvciBuYW1lIGluICgiY29tcGxleCIsICJ1bmljb2RlIik6Ci0gICAgdCA9IGdldGF0dHIoYnVpbHRpbnMsIG5hbWUsIE5vbmUpCi0gICAgaWYgdCBpcyBub3QgTm9uZToKLSAgICAgICAgZFt0XSA9IF9jb3B5X2ltbXV0YWJsZQogCi1kZWYgX2NvcHlfd2l0aF9jb25zdHJ1Y3Rvcih4KToKLSAgICByZXR1cm4gdHlwZSh4KSh4KQotZm9yIHQgaW4gKGxpc3QsIGRpY3QsIHNldCk6Ci0gICAgZFt0XSA9IF9jb3B5X3dpdGhfY29uc3RydWN0b3IKK2RbbGlzdF0gPSBsaXN0LmNvcHkKK2RbZGljdF0gPSBkaWN0LmNvcHkKK2Rbc2V0XSA9IHNldC5jb3B5CitkW2J5dGVhcnJheV0gPSBieXRlYXJyYXkuY29weQogCi1kZWYgX2NvcHlfd2l0aF9jb3B5X21ldGhvZCh4KToKLSAgICByZXR1cm4geC5jb3B5KCkKIGlmIFB5U3RyaW5nTWFwIGlzIG5vdCBOb25lOgotICAgIGRbUHlTdHJpbmdNYXBdID0gX2NvcHlfd2l0aF9jb3B5X21ldGhvZAorICAgIGRbUHlTdHJpbmdNYXBdID0gUHlTdHJpbmdNYXAuY29weQogCi1kZWwgZAorZGVsIGQsIHQKIAogZGVmIGRlZXBjb3B5KHgsIG1lbW89Tm9uZSwgX25pbD1bXSk6CiAgICAgIiIiRGVlcCBjb3B5IG9wZXJhdGlvbiBvbiBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuCkBAIC0xNzksNyArMTc0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW4oZGVlcCljb3B5YWJsZSBvYmplY3Qgb2YgdHlwZSAlcyIgJSBjbHMpCi0gICAgICAgICAgICAgICAgeSA9IF9yZWNvbnN0cnVjdCh4LCBydiwgMSwgbWVtbykKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJ2LCBzdHIpOgorICAgICAgICAgICAgICAgICAgICB5ID0geAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHkgPSBfcmVjb25zdHJ1Y3QoeCwgbWVtbywgKnJ2KQogCiAgICAgIyBJZiBpcyBpdHMgb3duIGNvcHksIGRvbid0IG1lbW9pemUuCiAgICAgaWYgeSBpcyBub3QgeDoKQEAgLTE5MywxMyArMTkxLDExIEBACiAgICAgcmV0dXJuIHgKIGRbdHlwZShOb25lKV0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW3R5cGUoRWxsaXBzaXMpXSA9IF9kZWVwY29weV9hdG9taWMKK2RbdHlwZShOb3RJbXBsZW1lbnRlZCldID0gX2RlZXBjb3B5X2F0b21pYwogZFtpbnRdID0gX2RlZXBjb3B5X2F0b21pYwogZFtmbG9hdF0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW2Jvb2xdID0gX2RlZXBjb3B5X2F0b21pYwotdHJ5OgotICAgIGRbY29tcGxleF0gPSBfZGVlcGNvcHlfYXRvbWljCi1leGNlcHQgTmFtZUVycm9yOgotICAgIHBhc3MKK2RbY29tcGxleF0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW2J5dGVzXSA9IF9kZWVwY29weV9hdG9taWMKIGRbc3RyXSA9IF9kZWVwY29weV9hdG9taWMKIHRyeToKQEAgLTIxMSwxNSArMjA3LDE2IEBACiBkW3R5cGVzLkZ1bmN0aW9uVHlwZV0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW3dlYWtyZWYucmVmXSA9IF9kZWVwY29weV9hdG9taWMKIAotZGVmIF9kZWVwY29weV9saXN0KHgsIG1lbW8pOgorZGVmIF9kZWVwY29weV9saXN0KHgsIG1lbW8sIGRlZXBjb3B5PWRlZXBjb3B5KToKICAgICB5ID0gW10KICAgICBtZW1vW2lkKHgpXSA9IHkKKyAgICBhcHBlbmQgPSB5LmFwcGVuZAogICAgIGZvciBhIGluIHg6Ci0gICAgICAgIHkuYXBwZW5kKGRlZXBjb3B5KGEsIG1lbW8pKQorICAgICAgICBhcHBlbmQoZGVlcGNvcHkoYSwgbWVtbykpCiAgICAgcmV0dXJuIHkKIGRbbGlzdF0gPSBfZGVlcGNvcHlfbGlzdAogCi1kZWYgX2RlZXBjb3B5X3R1cGxlKHgsIG1lbW8pOgorZGVmIF9kZWVwY29weV90dXBsZSh4LCBtZW1vLCBkZWVwY29weT1kZWVwY29weSk6CiAgICAgeSA9IFtkZWVwY29weShhLCBtZW1vKSBmb3IgYSBpbiB4XQogICAgICMgV2UncmUgbm90IGdvaW5nIHRvIHB1dCB0aGUgdHVwbGUgaW4gdGhlIG1lbW8sIGJ1dCBpdCdzIHN0aWxsIGltcG9ydGFudCB3ZQogICAgICMgY2hlY2sgZm9yIGl0LCBpbiBjYXNlIHRoZSB0dXBsZSBjb250YWlucyByZWN1cnNpdmUgbXV0YWJsZSBzdHJ1Y3R1cmVzLgpAQCAtMjM2LDcgKzIzMyw3IEBACiAgICAgcmV0dXJuIHkKIGRbdHVwbGVdID0gX2RlZXBjb3B5X3R1cGxlCiAKLWRlZiBfZGVlcGNvcHlfZGljdCh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfZGljdCh4LCBtZW1vLCBkZWVwY29weT1kZWVwY29weSk6CiAgICAgeSA9IHt9CiAgICAgbWVtb1tpZCh4KV0gPSB5CiAgICAgZm9yIGtleSwgdmFsdWUgaW4geC5pdGVtcygpOgpAQCAtMjQ4LDcgKzI0NSw5IEBACiAKIGRlZiBfZGVlcGNvcHlfbWV0aG9kKHgsIG1lbW8pOiAjIENvcHkgaW5zdGFuY2UgbWV0aG9kcwogICAgIHJldHVybiB0eXBlKHgpKHguX19mdW5jX18sIGRlZXBjb3B5KHguX19zZWxmX18sIG1lbW8pKQotX2RlZXBjb3B5X2Rpc3BhdGNoW3R5cGVzLk1ldGhvZFR5cGVdID0gX2RlZXBjb3B5X21ldGhvZAorZFt0eXBlcy5NZXRob2RUeXBlXSA9IF9kZWVwY29weV9tZXRob2QKKworZGVsIGQKIAogZGVmIF9rZWVwX2FsaXZlKHgsIG1lbW8pOgogICAgICIiIktlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgeCBpbiB0aGUgbWVtby4KQEAgLTI2NiwzMSArMjY1LDE1IEBACiAgICAgICAgICMgYWhhLCB0aGlzIGlzIHRoZSBmaXJzdCBvbmUgOi0pCiAgICAgICAgIG1lbW9baWQobWVtbyldPVt4XQogCi1kZWYgX3JlY29uc3RydWN0KHgsIGluZm8sIGRlZXAsIG1lbW89Tm9uZSk6Ci0gICAgaWYgaXNpbnN0YW5jZShpbmZvLCBzdHIpOgotICAgICAgICByZXR1cm4geAotICAgIGFzc2VydCBpc2luc3RhbmNlKGluZm8sIHR1cGxlKQotICAgIGlmIG1lbW8gaXMgTm9uZToKLSAgICAgICAgbWVtbyA9IHt9Ci0gICAgbiA9IGxlbihpbmZvKQotICAgIGFzc2VydCBuIGluICgyLCAzLCA0LCA1KQotICAgIGNhbGxhYmxlLCBhcmdzID0gaW5mb1s6Ml0KLSAgICBpZiBuID4gMjoKLSAgICAgICAgc3RhdGUgPSBpbmZvWzJdCi0gICAgZWxzZToKLSAgICAgICAgc3RhdGUgPSBOb25lCi0gICAgaWYgbiA+IDM6Ci0gICAgICAgIGxpc3RpdGVyID0gaW5mb1szXQotICAgIGVsc2U6Ci0gICAgICAgIGxpc3RpdGVyID0gTm9uZQotICAgIGlmIG4gPiA0OgotICAgICAgICBkaWN0aXRlciA9IGluZm9bNF0KLSAgICBlbHNlOgotICAgICAgICBkaWN0aXRlciA9IE5vbmUKK2RlZiBfcmVjb25zdHJ1Y3QoeCwgbWVtbywgZnVuYywgYXJncywKKyAgICAgICAgICAgICAgICAgc3RhdGU9Tm9uZSwgbGlzdGl0ZXI9Tm9uZSwgZGljdGl0ZXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgZGVlcGNvcHk9ZGVlcGNvcHkpOgorICAgIGRlZXAgPSBtZW1vIGlzIG5vdCBOb25lCisgICAgaWYgZGVlcCBhbmQgYXJnczoKKyAgICAgICAgYXJncyA9IChkZWVwY29weShhcmcsIG1lbW8pIGZvciBhcmcgaW4gYXJncykKKyAgICB5ID0gZnVuYygqYXJncykKICAgICBpZiBkZWVwOgotICAgICAgICBhcmdzID0gZGVlcGNvcHkoYXJncywgbWVtbykKLSAgICB5ID0gY2FsbGFibGUoKmFyZ3MpCi0gICAgbWVtb1tpZCh4KV0gPSB5CisgICAgICAgIG1lbW9baWQoeCldID0geQogCiAgICAgaWYgc3RhdGUgaXMgbm90IE5vbmU6CiAgICAgICAgIGlmIGRlZXA6CkBAIC0zMDksMjIgKzI5MiwyMiBAQAogICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHksIGtleSwgdmFsdWUpCiAKICAgICBpZiBsaXN0aXRlciBpcyBub3QgTm9uZToKLSAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6Ci0gICAgICAgICAgICBpZiBkZWVwOgorICAgICAgICBpZiBkZWVwOgorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6CiAgICAgICAgICAgICAgICAgaXRlbSA9IGRlZXBjb3B5KGl0ZW0sIG1lbW8pCi0gICAgICAgICAgICB5LmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgIHkuYXBwZW5kKGl0ZW0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgaXRlbSBpbiBsaXN0aXRlcjoKKyAgICAgICAgICAgICAgICB5LmFwcGVuZChpdGVtKQogICAgIGlmIGRpY3RpdGVyIGlzIG5vdCBOb25lOgotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKLSAgICAgICAgICAgIGlmIGRlZXA6CisgICAgICAgIGlmIGRlZXA6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKICAgICAgICAgICAgICAgICBrZXkgPSBkZWVwY29weShrZXksIG1lbW8pCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBkZWVwY29weSh2YWx1ZSwgbWVtbykKLSAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCisgICAgICAgICAgICAgICAgeVtrZXldID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGRpY3RpdGVyOgorICAgICAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCiAgICAgcmV0dXJuIHkKIAotZGVsIGQKLQotZGVsIHR5cGVzCi0KLSMgSGVscGVyIGZvciBpbnN0YW5jZSBjcmVhdGlvbiB3aXRob3V0IGNhbGxpbmcgX19pbml0X18KLWNsYXNzIF9FbXB0eUNsYXNzOgotICAgIHBhc3MKK2RlbCB0eXBlcywgd2Vha3JlZiwgUHlTdHJpbmdNYXAKZGlmZiAtLWdpdCBhL0xpYi9jcnlwdC5weSBiL0xpYi9jcnlwdC5weQppbmRleCA0OWFiOTZlLi5mYmM1ZjRjIDEwMDY0NAotLS0gYS9MaWIvY3J5cHQucHkKKysrIGIvTGliL2NyeXB0LnB5CkBAIC01NCw5ICs1NCw4IEBACiBNRVRIT0RfU0hBNTEyID0gX01ldGhvZCgnU0hBNTEyJywgJzYnLCAxNiwgMTA2KQogCiBtZXRob2RzID0gW10KLWZvciBfbWV0aG9kIGluIChNRVRIT0RfU0hBNTEyLCBNRVRIT0RfU0hBMjU2LCBNRVRIT0RfTUQ1KToKK2ZvciBfbWV0aG9kIGluIChNRVRIT0RfU0hBNTEyLCBNRVRIT0RfU0hBMjU2LCBNRVRIT0RfTUQ1LCBNRVRIT0RfQ1JZUFQpOgogICAgIF9yZXN1bHQgPSBjcnlwdCgnJywgX21ldGhvZCkKICAgICBpZiBfcmVzdWx0IGFuZCBsZW4oX3Jlc3VsdCkgPT0gX21ldGhvZC50b3RhbF9zaXplOgogICAgICAgICBtZXRob2RzLmFwcGVuZChfbWV0aG9kKQotbWV0aG9kcy5hcHBlbmQoTUVUSE9EX0NSWVBUKQogZGVsIF9yZXN1bHQsIF9tZXRob2QKZGlmZiAtLWdpdCBhL0xpYi9jc3YucHkgYi9MaWIvY3N2LnB5CmluZGV4IGNhNDBlNWUuLjA0ODFlYTUgMTAwNjQ0Ci0tLSBhL0xpYi9jc3YucHkKKysrIGIvTGliL2Nzdi5weQpAQCAtMTEsMTMgKzExLDE1IEBACiAgICAgICAgICAgICAgICAgIF9fZG9jX18KIGZyb20gX2NzdiBpbXBvcnQgRGlhbGVjdCBhcyBfRGlhbGVjdAogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotX19hbGxfXyA9IFsgIlFVT1RFX01JTklNQUwiLCAiUVVPVEVfQUxMIiwgIlFVT1RFX05PTk5VTUVSSUMiLCAiUVVPVEVfTk9ORSIsCi0gICAgICAgICAgICAiRXJyb3IiLCAiRGlhbGVjdCIsICJfX2RvY19fIiwgImV4Y2VsIiwgImV4Y2VsX3RhYiIsCi0gICAgICAgICAgICAiZmllbGRfc2l6ZV9saW1pdCIsICJyZWFkZXIiLCAid3JpdGVyIiwKLSAgICAgICAgICAgICJyZWdpc3Rlcl9kaWFsZWN0IiwgImdldF9kaWFsZWN0IiwgImxpc3RfZGlhbGVjdHMiLCAiU25pZmZlciIsCi0gICAgICAgICAgICAidW5yZWdpc3Rlcl9kaWFsZWN0IiwgIl9fdmVyc2lvbl9fIiwgIkRpY3RSZWFkZXIiLCAiRGljdFdyaXRlciIgXQorX19hbGxfXyA9IFsiUVVPVEVfTUlOSU1BTCIsICJRVU9URV9BTEwiLCAiUVVPVEVfTk9OTlVNRVJJQyIsICJRVU9URV9OT05FIiwKKyAgICAgICAgICAgIkVycm9yIiwgIkRpYWxlY3QiLCAiX19kb2NfXyIsICJleGNlbCIsICJleGNlbF90YWIiLAorICAgICAgICAgICAiZmllbGRfc2l6ZV9saW1pdCIsICJyZWFkZXIiLCAid3JpdGVyIiwKKyAgICAgICAgICAgInJlZ2lzdGVyX2RpYWxlY3QiLCAiZ2V0X2RpYWxlY3QiLCAibGlzdF9kaWFsZWN0cyIsICJTbmlmZmVyIiwKKyAgICAgICAgICAgInVucmVnaXN0ZXJfZGlhbGVjdCIsICJfX3ZlcnNpb25fXyIsICJEaWN0UmVhZGVyIiwgIkRpY3RXcml0ZXIiLAorICAgICAgICAgICAidW5peF9kaWFsZWN0Il0KIAogY2xhc3MgRGlhbGVjdDoKICAgICAiIiJEZXNjcmliZSBhIENTViBkaWFsZWN0LgpAQCAtMTE1LDcgKzExNyw3IEBACiAgICAgICAgICMgdmFsdWVzCiAgICAgICAgIHdoaWxlIHJvdyA9PSBbXToKICAgICAgICAgICAgIHJvdyA9IG5leHQoc2VsZi5yZWFkZXIpCi0gICAgICAgIGQgPSBkaWN0KHppcChzZWxmLmZpZWxkbmFtZXMsIHJvdykpCisgICAgICAgIGQgPSBPcmRlcmVkRGljdCh6aXAoc2VsZi5maWVsZG5hbWVzLCByb3cpKQogICAgICAgICBsZiA9IGxlbihzZWxmLmZpZWxkbmFtZXMpCiAgICAgICAgIGxyID0gbGVuKHJvdykKICAgICAgICAgaWYgbGYgPCBscjoKQEAgLTIxMywxMCArMjE1LDEwIEBACiAgICAgICAgICIiIgogCiAgICAgICAgIG1hdGNoZXMgPSBbXQotICAgICAgICBmb3IgcmVzdHIgaW4gKCcoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A9ZGVsaW0pJywgIyAsIi4qPyIsCi0gICAgICAgICAgICAgICAgICAgICAgJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pJywgICAjICAiLio/IiwKLSAgICAgICAgICAgICAgICAgICAgICAnKD9QPGRlbGltPj5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJywgICMgLCIuKj8iCi0gICAgICAgICAgICAgICAgICAgICAgJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoPzokfFxuKScpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAiLio/IiAobm8gZGVsaW0sIG5vIHNwYWNlKQorICAgICAgICBmb3IgcmVzdHIgaW4gKHInKD9QPGRlbGltPlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD9QPWRlbGltKScsICMgLCIuKj8iLAorICAgICAgICAgICAgICAgICAgICAgIHInKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPyknLCAgICMgICIuKj8iLAorICAgICAgICAgICAgICAgICAgICAgIHInKD9QPGRlbGltPj5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJywgICMgLCIuKj8iCisgICAgICAgICAgICAgICAgICAgICAgcicoPzpefFxuKSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD86JHxcbiknKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIi4qPyIgKG5vIGRlbGltLCBubyBzcGFjZSkKICAgICAgICAgICAgIHJlZ2V4cCA9IHJlLmNvbXBpbGUocmVzdHIsIHJlLkRPVEFMTCB8IHJlLk1VTFRJTElORSkKICAgICAgICAgICAgIG1hdGNoZXMgPSByZWdleHAuZmluZGFsbChkYXRhKQogICAgICAgICAgICAgaWYgbWF0Y2hlczoKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvX19pbml0X18ucHkgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CmluZGV4IDBkODYwNzguLjFjOWQzYTUgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvX19pbml0X18ucHkKKysrIGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQpAQCAtMTYsNyArMTYsNyBAQAogaWYgX192ZXJzaW9uX18gIT0gX2N0eXBlc192ZXJzaW9uOgogICAgIHJhaXNlIEV4Y2VwdGlvbigiVmVyc2lvbiBudW1iZXIgbWlzbWF0Y2giLCBfX3ZlcnNpb25fXywgX2N0eXBlc192ZXJzaW9uKQogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogICAgIGZyb20gX2N0eXBlcyBpbXBvcnQgRm9ybWF0RXJyb3IKIAogREVGQVVMVF9NT0RFID0gUlRMRF9MT0NBTApAQCAtMTAzLDEyICsxMDMsOSBAQAogICAgICAgICBfY19mdW5jdHlwZV9jYWNoZVsocmVzdHlwZSwgYXJndHlwZXMsIGZsYWdzKV0gPSBDRnVuY3Rpb25UeXBlCiAgICAgICAgIHJldHVybiBDRnVuY3Rpb25UeXBlCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAgICAgZnJvbSBfY3R5cGVzIGltcG9ydCBMb2FkTGlicmFyeSBhcyBfZGxvcGVuCiAgICAgZnJvbSBfY3R5cGVzIGltcG9ydCBGVU5DRkxBR19TVERDQUxMIGFzIF9GVU5DRkxBR19TVERDQUxMCi0gICAgaWYgX29zLm5hbWUgPT0gImNlIjoKLSAgICAgICAgIyAnY2UnIGRvZXNuJ3QgaGF2ZSB0aGUgc3RkY2FsbCBjYWxsaW5nIGNvbnZlbnRpb24KLSAgICAgICAgX0ZVTkNGTEFHX1NURENBTEwgPSBfRlVOQ0ZMQUdfQ0RFQ0wKIAogICAgIF93aW5fZnVuY3R5cGVfY2FjaGUgPSB7fQogICAgIGRlZiBXSU5GVU5DVFlQRShyZXN0eXBlLCAqYXJndHlwZXMsICoqa3cpOgpAQCAtMjYyLDcgKzI1OSw3IEBACiBkZWYgX3Jlc2V0X2NhY2hlKCk6CiAgICAgX3BvaW50ZXJfdHlwZV9jYWNoZS5jbGVhcigpCiAgICAgX2NfZnVuY3R5cGVfY2FjaGUuY2xlYXIoKQotICAgIGlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKKyAgICBpZiBfb3MubmFtZSA9PSAibnQiOgogICAgICAgICBfd2luX2Z1bmN0eXBlX2NhY2hlLmNsZWFyKCkKICAgICAjIF9TaW1wbGVDRGF0YS5jX3djaGFyX3BfZnJvbV9wYXJhbQogICAgIFBPSU5URVIoY193Y2hhcikuZnJvbV9wYXJhbSA9IGNfd2NoYXJfcC5mcm9tX3BhcmFtCkBAIC0zNzQsNyArMzcxLDcgQEAKICAgICAiIiIKICAgICBfZnVuY19mbGFnc18gPSBfRlVOQ0ZMQUdfQ0RFQ0wgfCBfRlVOQ0ZMQUdfUFlUSE9OQVBJCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAKICAgICBjbGFzcyBXaW5ETEwoQ0RMTCk6CiAgICAgICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGRsbCBleHBvcnRpbmcgZnVuY3Rpb25zIHVzaW5nIHRoZQpAQCAtNDI3LDcgKzQyNCw3IEBACiBjZGxsID0gTGlicmFyeUxvYWRlcihDRExMKQogcHlkbGwgPSBMaWJyYXJ5TG9hZGVyKFB5RExMKQogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogICAgIHB5dGhvbmFwaSA9IFB5RExMKCJweXRob24gZGxsIiwgTm9uZSwgX3N5cy5kbGxoYW5kbGUpCiBlbGlmIF9zeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6CiAgICAgcHl0aG9uYXBpID0gUHlETEwoImxpYnB5dGhvbiVkLiVkLmRsbCIgJSBfc3lzLnZlcnNpb25faW5mb1s6Ml0pCkBAIC00MzUsNyArNDMyLDcgQEAKICAgICBweXRob25hcGkgPSBQeURMTChOb25lKQogCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAgICAgd2luZGxsID0gTGlicmFyeUxvYWRlcihXaW5ETEwpCiAgICAgb2xlZGxsID0gTGlicmFyeUxvYWRlcihPbGVETEwpCiAKQEAgLTUwMyw3ICs1MDAsNyBAQAogICAgICAgICByZXR1cm4gX3dzdHJpbmdfYXQocHRyLCBzaXplKQogCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKTogIyBDT00gc3R1ZmYKK2lmIF9vcy5uYW1lID09ICJudCI6ICMgQ09NIHN0dWZmCiAgICAgZGVmIERsbEdldENsYXNzT2JqZWN0KHJjbHNpZCwgcmlpZCwgcHB2KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgY2NvbSA9IF9faW1wb3J0X18oImNvbXR5cGVzLnNlcnZlci5pbnByb2NzZXJ2ZXIiLCBnbG9iYWxzKCksIGxvY2FscygpLCBbJyonXSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2JpdGZpZWxkcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2JpdGZpZWxkcy5weQppbmRleCBiMzlkODJjLi5jNzFkNzFkIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9iaXRmaWVsZHMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYml0ZmllbGRzLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKIAotaW1wb3J0IGN0eXBlcwogaW1wb3J0IF9jdHlwZXNfdGVzdAogCiBjbGFzcyBCSVRTKFN0cnVjdHVyZSk6CkBAIC0xOTcsNyArMTk2LDcgQEAKICAgICAgICAgY2xhc3MgWChTdHJ1Y3R1cmUpOgogICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJhIiwgY19ieXRlLCA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICgiYiIsIGNfaW50LCA0KV0KLSAgICAgICAgaWYgb3MubmFtZSBpbiAoIm50IiwgImNlIik6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZW9mKFgpLCBzaXplb2YoY19pbnQpKjIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSkKQEAgLTIyNSw3ICsyMjQsNyBAQAogICAgICAgICAjIE1TVkMgZG9lcyBOT1QgY29tYmluZSBjX3Nob3J0IGFuZCBjX2ludCBpbnRvIG9uZSBmaWVsZCwgR0NDCiAgICAgICAgICMgZG9lcyAodW5sZXNzIEdDQyBpcyBydW4gd2l0aCAnLW1tcy1iaXRmaWVsZHMnIHdoaWNoCiAgICAgICAgICMgcHJvZHVjZXMgY29kZSBjb21wYXRpYmxlIHdpdGggTVNWQykuCi0gICAgICAgIGlmIG9zLm5hbWUgaW4gKCJudCIsICJjZSIpOgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSAqIDQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSAqIDIpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9maW5kLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZmluZC5weQppbmRleCA5NGIwYjg5Li5iOTlmZGNiIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9maW5kLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2ZpbmQucHkKQEAgLTY5LDUgKzY5LDQ4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5sZXhpc3RzKHRlc3Quc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQpCiAKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4JyksCisgICAgICAgICAgICAgICAgICAgICAnVGVzdCBvbmx5IHZhbGlkIGZvciBMaW51eCcpCitjbGFzcyBMaWJQYXRoRmluZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2ZpbmRfb25fbGlicGF0aChzZWxmKToKKyAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICAgICAgaW1wb3J0IHRlbXBmaWxlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWydnY2MnLCAnLS12ZXJzaW9uJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKQorICAgICAgICAgICAgb3V0LCBfID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ2djYywgbmVlZGVkIGZvciB0ZXN0LCBub3QgYXZhaWxhYmxlJykKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyBkOgorICAgICAgICAgICAgIyBjcmVhdGUgYW4gZW1wdHkgdGVtcG9yYXJ5IGZpbGUKKyAgICAgICAgICAgIHNyY25hbWUgPSBvcy5wYXRoLmpvaW4oZCwgJ2R1bW15LmMnKQorICAgICAgICAgICAgbGlibmFtZSA9ICdweV9jdHlwZXNfdGVzdF9kdW1teScKKyAgICAgICAgICAgIGRzdG5hbWUgPSBvcy5wYXRoLmpvaW4oZCwgJ2xpYiVzLnNvJyAlIGxpYm5hbWUpCisgICAgICAgICAgICB3aXRoIG9wZW4oc3JjbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzcmNuYW1lKSkKKyAgICAgICAgICAgICMgY29tcGlsZSB0aGUgZmlsZSB0byBhIHNoYXJlZCBsaWJyYXJ5CisgICAgICAgICAgICBjbWQgPSBbJ2djYycsICctbycsIGRzdG5hbWUsICctLXNoYXJlZCcsCisgICAgICAgICAgICAgICAgICAgJy1XbCwtc29uYW1lLGxpYiVzLnNvJyAlIGxpYm5hbWUsIHNyY25hbWVdCisgICAgICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZHN0bmFtZSkpCisgICAgICAgICAgICAjIG5vdyBjaGVjayB0aGF0IHRoZSAuc28gY2FuJ3QgYmUgZm91bmQgKHNpbmNlIG5vdCBpbgorICAgICAgICAgICAgIyBMRF9MSUJSQVJZX1BBVEgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaW5kX2xpYnJhcnkobGlibmFtZSkpCisgICAgICAgICAgICAjIG5vdyBhZGQgdGhlIGxvY2F0aW9uIHRvIExEX0xJQlJBUllfUEFUSAorICAgICAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgICAgICBLRVkgPSAnTERfTElCUkFSWV9QQVRIJworICAgICAgICAgICAgICAgIGlmIEtFWSBub3QgaW4gZW52OgorICAgICAgICAgICAgICAgICAgICB2ID0gZAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHYgPSAnJXM6JXMnICUgKGVudltLRVldLCBkKQorICAgICAgICAgICAgICAgIGVudi5zZXQoS0VZLCB2KQorICAgICAgICAgICAgICAgICMgbm93IGNoZWNrIHRoYXQgdGhlIC5zbyBjYW4gYmUgZm91bmQgKHNpbmNlIGluCisgICAgICAgICAgICAgICAgIyBMRF9MSUJSQVJZX1BBVEgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5kX2xpYnJhcnkobGlibmFtZSksICdsaWIlcy5zbycgJSBsaWJuYW1lKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnVuY3B0ci5weQppbmRleCBmZjI1YzhmLi5mMzQ3MzRiIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Z1bmNwdHIucHkKQEAgLTEsNCArMSw0IEBACi1pbXBvcnQgb3MsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzIGltcG9ydCAqCiAKIHRyeToKQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgIyBwb3NzaWJsZSwgYXMgaW4gQywgdG8gY2FsbCBjZGVjbCBmdW5jdGlvbnMgd2l0aCBtb3JlIHBhcmFtZXRlcnMuCiAgICAgICAgICNzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIDEsIDIsIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYygxLCAyLCAzLCA0LCA1LCA2KSwgMykKLSAgICAgICAgaWYgbm90IFdJTkZVTkNUWVBFIGlzIENGVU5DVFlQRSBhbmQgb3MubmFtZSAhPSAiY2UiOgorICAgICAgICBpZiBub3QgV0lORlVOQ1RZUEUgaXMgQ0ZVTkNUWVBFOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzLCAxLCAyLCAzKQogCiAgICAgZGVmIHRlc3Rfc3RydWN0dXJlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CmluZGV4IDI4NDY4YzEuLjQ1NTcxZjMgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQpAQCAtMTEsOCArMTEsNiBAQAogICAgIGdsb2JhbCBsaWJjX25hbWUKICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgIGxpYmNfbmFtZSA9IGZpbmRfbGlicmFyeSgiYyIpCi0gICAgZWxpZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgICAgIGxpYmNfbmFtZSA9ICJjb3JlZGxsIgogICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgogICAgICAgICBsaWJjX25hbWUgPSAiY3lnd2luMS5kbGwiCiAgICAgZWxzZToKQEAgLTQ5LDggKzQ3LDggQEAKICAgICAgICAgICAgICAgICBjZGxsLkxvYWRMaWJyYXJ5KGxpYikKICAgICAgICAgICAgICAgICBDRExMKGxpYikKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgaW4gKCJudCIsICJjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MgKE5UL0NFKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MnKQogICAgIGRlZiB0ZXN0X2xvYWRfbGlicmFyeShzZWxmKToKICAgICAgICAgIyBDUlQgaXMgbm8gbG9uZ2VyIGRpcmVjdGx5IGxvYWRhYmxlLiBTZWUgaXNzdWUyMzYwNiBmb3IgdGhlCiAgICAgICAgICMgZGlzY3Vzc2lvbiBhYm91dCBhbHRlcm5hdGl2ZSBhcHByb2FjaGVzLgpAQCAtNjQsMTQgKzYyLDkgQEAKICAgICAgICAgICAgIHdpbmRsbFsia2VybmVsMzIiXS5HZXRNb2R1bGVIYW5kbGVXCiAgICAgICAgICAgICB3aW5kbGwuTG9hZExpYnJhcnkoImtlcm5lbDMyIikuR2V0TW9kdWxlSGFuZGxlVwogICAgICAgICAgICAgV2luRExMKCJrZXJuZWwzMiIpLkdldE1vZHVsZUhhbmRsZVcKLSAgICAgICAgZWxpZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgICAgICAgICB3aW5kbGwuY29yZWRsbC5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICB3aW5kbGxbImNvcmVkbGwiXS5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICB3aW5kbGwuTG9hZExpYnJhcnkoImNvcmVkbGwiKS5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICBXaW5ETEwoImNvcmVkbGwiKS5HZXRNb2R1bGVIYW5kbGVXCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lIGluICgibnQiLCAiY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzIChOVC9DRSknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gIm50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzJykKICAgICBkZWYgdGVzdF9sb2FkX29yZGluYWxfZnVuY3Rpb25zKHNlbGYpOgogICAgICAgICBpbXBvcnQgX2N0eXBlc190ZXN0CiAgICAgICAgIGRsbCA9IFdpbkRMTChfY3R5cGVzX3Rlc3QuX19maWxlX18pCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfb2JqZWN0cy5weQppbmRleCBlZjdiMjBiLi4xOWUzZGMxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X29iamVjdHMucHkKQEAgLTU0LDcgKzU0LDcgQEAKIAogJycnCiAKLWltcG9ydCB1bml0dGVzdCwgZG9jdGVzdCwgc3lzCitpbXBvcnQgdW5pdHRlc3QsIGRvY3Rlc3QKIAogaW1wb3J0IGN0eXBlcy50ZXN0LnRlc3Rfb2JqZWN0cwogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQppbmRleCBlNTZiY2NmLi4zNjNmNTg2IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKQEAgLTEsNCArMSw0IEBACi1pbXBvcnQgdW5pdHRlc3QsIHN5cworaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGN0eXBlcy50ZXN0IGltcG9ydCBuZWVkX3N5bWJvbAogCiBjbGFzcyBTaW1wbGVUeXBlc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogICAgICMgWFhYIFJlcGxhY2UgYnkgY19jaGFyX3AgdGVzdHMKICAgICBkZWYgdGVzdF9jc3RyaW5ncyhzZWxmKToKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfY2hhcl9wLCBieXJlZgorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY19jaGFyX3AKIAogICAgICAgICAjIGNfY2hhcl9wLmZyb21fcGFyYW0gb24gYSBQeXRob24gU3RyaW5nIHBhY2tzIHRoZSBzdHJpbmcKICAgICAgICAgIyBpbnRvIGEgY3BhcmFtIG9iamVjdApAQCAtNjgsNyArNjgsNyBAQAogCiAgICAgQG5lZWRfc3ltYm9sKCdjX3djaGFyX3AnKQogICAgIGRlZiB0ZXN0X2N3X3N0cmluZ3Moc2VsZik6Ci0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBieXJlZiwgY193Y2hhcl9wCisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBjX3djaGFyX3AKIAogICAgICAgICBjX3djaGFyX3AuZnJvbV9wYXJhbSgiMTIzIikKIApAQCAtOTgsNyArOTgsNyBAQAogICAgIGRlZiB0ZXN0X2J5cmVmX3BvaW50ZXIoc2VsZik6CiAgICAgICAgICMgVGhlIGZyb21fcGFyYW0gY2xhc3MgbWV0aG9kIG9mIFBPSU5URVIodHlwKSBjbGFzc2VzIGFjY2VwdHMgd2hhdCBpcwogICAgICAgICAjIHJldHVybmVkIGJ5IGJ5cmVmKG9iaiksIGl0IHR5cGUob2JqKSA9PSB0eXAKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfc2hvcnQsIGNfdWludCwgY19pbnQsIGNfbG9uZywgcG9pbnRlciwgUE9JTlRFUiwgYnlyZWYKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfc2hvcnQsIGNfdWludCwgY19pbnQsIGNfbG9uZywgUE9JTlRFUiwgYnlyZWYKICAgICAgICAgTFBJTlQgPSBQT0lOVEVSKGNfaW50KQogCiAgICAgICAgIExQSU5ULmZyb21fcGFyYW0oYnlyZWYoY19pbnQoNDIpKSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CmluZGV4IDMyZjgwMmMuLmQ2ODM5N2UgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKLWltcG9ydCByZSwgc3RydWN0LCBzeXMKK2ltcG9ydCByZSwgc3lzCiAKIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CiAgICAgVEhJU19FTkRJQU4gPSAiPCIKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JldHVybmZ1bmNwdHJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKaW5kZXggOTNlYmE2Yi4uMTk3NGY0MCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzIGltcG9ydCAqCi1pbXBvcnQgb3MKIAogaW1wb3J0IF9jdHlwZXNfdGVzdAogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zaXplcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CmluZGV4IGY5YjVlOTcuLjRjZWFjYmMgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CkBAIC0yLDcgKzIsNiBAQAogCiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0dXJlcy5weQppbmRleCBjNGE2NTFjLi44ZjZmZTVmIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdHVyZXMucHkKQEAgLTMyNiwxMSArMzI2LDggQEAKIAogICAgICAgICBjbHMsIG1zZyA9IHNlbGYuZ2V0X2V4Y2VwdChQZXJzb24sIGIiU29tZW9uZSIsIChiImEiLCBiImIiLCBiImMiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbHMsIFJ1bnRpbWVFcnJvcikKLSAgICAgICAgaWYgaXNzdWJjbGFzcyhFeGNlcHRpb24sIG9iamVjdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoUGhvbmUpIDxjbGFzcyAnVHlwZUVycm9yJz46IHRvbyBtYW55IGluaXRpYWxpemVycyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgIihQaG9uZSkgVHlwZUVycm9yOiB0b28gbWFueSBpbml0aWFsaXplcnMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihQaG9uZSkgPGNsYXNzICdUeXBlRXJyb3InPjogdG9vIG1hbnkgaW5pdGlhbGl6ZXJzIikKIAogICAgIGRlZiB0ZXN0X2h1Z2VfZmllbGRfbmFtZShzZWxmKToKICAgICAgICAgIyBpc3N1ZTEyODgxOiBzZWdmYXVsdCB3aXRoIGxhcmdlIHN0cnVjdHVyZSBmaWVsZCBuYW1lcwpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CmluZGV4IDVhM2E0N2YuLmU3MWI0ODAgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKQEAgLTc5LDkgKzc5LDkgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaXRlbXMuYXBwZW5kKChlbnRyeS5uYW1lLmRlY29kZSgiYXNjaWkiKSwgZW50cnkuc2l6ZSkpCiAKLSAgICAgICAgZXhwZWN0ZWQgPSBbKCJfX2hlbGxvX18iLCAxNjEpLAotICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18iLCAtMTYxKSwKLSAgICAgICAgICAgICAgICAgICAgKCJfX3BoZWxsb19fLnNwYW0iLCAxNjEpLAorICAgICAgICBleHBlY3RlZCA9IFsoIl9faGVsbG9fXyIsIDEzOSksCisgICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXyIsIC0xMzkpLAorICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18uc3BhbSIsIDEzOSksCiAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtcywgZXhwZWN0ZWQsICJQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIGV4YW1wbGUgIgogICAgICAgICAgICAgImluIERvYy9saWJyYXJ5L2N0eXBlcy5yc3QgbWF5IGJlIG91dCBvZiBkYXRlIikKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdXRpbC5weSBiL0xpYi9jdHlwZXMvdXRpbC5weQppbmRleCA3Njg0ZWFiLi4zMzlhZThhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3V0aWwucHkKKysrIGIvTGliL2N0eXBlcy91dGlsLnB5CkBAIC02NywxNiArNjcsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBmbmFtZQogICAgICAgICByZXR1cm4gTm9uZQogCi1pZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgIyBzZWFyY2ggcGF0aCBhY2NvcmRpbmcgdG8gTVNETjoKLSAgICAjIC0gYWJzb2x1dGUgcGF0aCBzcGVjaWZpZWQgYnkgZmlsZW5hbWUKLSAgICAjIC0gVGhlIC5leGUgbGF1bmNoIGRpcmVjdG9yeQotICAgICMgLSB0aGUgV2luZG93cyBkaXJlY3RvcnkKLSAgICAjIC0gUk9NIGRsbCBmaWxlcyAod2hlcmUgYXJlIHRoZXk/KQotICAgICMgLSBPRU0gc3BlY2lmaWVkIHNlYXJjaCBwYXRoOiBIS0xNXExvYWRlclxTeXN0ZW1QYXRoCi0gICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKLSAgICAgICAgcmV0dXJuIG5hbWUKLQogaWYgb3MubmFtZSA9PSAicG9zaXgiIGFuZCBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgZnJvbSBjdHlwZXMubWFjaG9saWIuZHlsZCBpbXBvcnQgZHlsZF9maW5kIGFzIF9keWxkX2ZpbmQKICAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgpAQCAtMjcxLDggKzI2MSw4IEBACiAgICAgICAgICAgICBhYmlfdHlwZSA9IG1hY2hfbWFwLmdldChtYWNoaW5lLCAnbGliYzYnKQogCiAgICAgICAgICAgICAjIFhYWCBhc3N1bWluZyBHTElCQydzIGxkY29uZmlnICh3aXRoIG9wdGlvbiAtcCkKLSAgICAgICAgICAgIHJlZ2V4ID0gb3MuZnNlbmNvZGUoCi0gICAgICAgICAgICAgICAgJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnICUgKHJlLmVzY2FwZShuYW1lKSwgYWJpX3R5cGUpKQorICAgICAgICAgICAgcmVnZXggPSByJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnCisgICAgICAgICAgICByZWdleCA9IG9zLmZzZW5jb2RlKHJlZ2V4ICUgKHJlLmVzY2FwZShuYW1lKSwgYWJpX3R5cGUpKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihbJy9zYmluL2xkY29uZmlnJywgJy1wJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuREVWTlVMTCwKQEAgLTI4NSw4ICsyNzUsMzIgQEAKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKIAorICAgICAgICBkZWYgX2ZpbmRMaWJfbGQobmFtZSk6CisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjOTk5OCBmb3Igd2h5IHRoaXMgaXMgbmVlZGVkCisgICAgICAgICAgICBleHByID0gcidbXlwoXClcc10qbGliJXNcLlteXChcKVxzXSonICUgcmUuZXNjYXBlKG5hbWUpCisgICAgICAgICAgICBjbWQgPSBbJ2xkJywgJy10J10KKyAgICAgICAgICAgIGxpYnBhdGggPSBvcy5lbnZpcm9uLmdldCgnTERfTElCUkFSWV9QQVRIJykKKyAgICAgICAgICAgIGlmIGxpYnBhdGg6CisgICAgICAgICAgICAgICAgZm9yIGQgaW4gbGlicGF0aC5zcGxpdCgnOicpOgorICAgICAgICAgICAgICAgICAgICBjbWQuZXh0ZW5kKFsnLUwnLCBkXSkKKyAgICAgICAgICAgIGNtZC5leHRlbmQoWyctbycsIG9zLmRldm51bGwsICctbCVzJyAlIG5hbWVdKQorICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgICAgICAgICAgICAgIG91dCwgXyA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChleHByLCBvcy5mc2RlY29kZShvdXQpKQorICAgICAgICAgICAgICAgIGlmIHJlczoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzLmdyb3VwKDApCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcGFzcyAgIyByZXN1bHQgd2lsbCBiZSBOb25lCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKICAgICAgICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKLSAgICAgICAgICAgIHJldHVybiBfZmluZFNvbmFtZV9sZGNvbmZpZyhuYW1lKSBvciBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkpCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjOTk5OAorICAgICAgICAgICAgcmV0dXJuIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpIG9yIFwKKyAgICAgICAgICAgICAgICAgICBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkgb3IgX2ZpbmRMaWJfbGQobmFtZSkpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgdGVzdCBjb2RlCmRpZmYgLS1naXQgYS9MaWIvZGF0ZXRpbWUucHkgYi9MaWIvZGF0ZXRpbWUucHkKaW5kZXggYTIxNzhjNy4uMzYzNzRhYSAxMDA2NDQKLS0tIGEvTGliL2RhdGV0aW1lLnB5CisrKyBiL0xpYi9kYXRldGltZS5weQpAQCAtMTUyLDEyICsxNTIsMjYgQEAKICAgICBkbnVtID0gX2RheXNfYmVmb3JlX21vbnRoKHksIG0pICsgZAogICAgIHJldHVybiBfdGltZS5zdHJ1Y3RfdGltZSgoeSwgbSwgZCwgaGgsIG1tLCBzcywgd2RheSwgZG51bSwgZHN0ZmxhZykpCiAKLWRlZiBfZm9ybWF0X3RpbWUoaGgsIG1tLCBzcywgdXMpOgotICAgICMgU2tpcCB0cmFpbGluZyBtaWNyb3NlY29uZHMgd2hlbiB1cz09MC4KLSAgICByZXN1bHQgPSAiJTAyZDolMDJkOiUwMmQiICUgKGhoLCBtbSwgc3MpCi0gICAgaWYgdXM6Ci0gICAgICAgIHJlc3VsdCArPSAiLiUwNmQiICUgdXMKLSAgICByZXR1cm4gcmVzdWx0CitkZWYgX2Zvcm1hdF90aW1lKGhoLCBtbSwgc3MsIHVzLCB0aW1lc3BlYz0nYXV0bycpOgorICAgIHNwZWNzID0geworICAgICAgICAnaG91cnMnOiAnezowMmR9JywKKyAgICAgICAgJ21pbnV0ZXMnOiAnezowMmR9Ons6MDJkfScsCisgICAgICAgICdzZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9JywKKyAgICAgICAgJ21pbGxpc2Vjb25kcyc6ICd7OjAyZH06ezowMmR9Ons6MDJkfS57OjAzZH0nLAorICAgICAgICAnbWljcm9zZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9Lns6MDZkfScKKyAgICB9CisKKyAgICBpZiB0aW1lc3BlYyA9PSAnYXV0byc6CisgICAgICAgICMgU2tpcCB0cmFpbGluZyBtaWNyb3NlY29uZHMgd2hlbiB1cz09MC4KKyAgICAgICAgdGltZXNwZWMgPSAnbWljcm9zZWNvbmRzJyBpZiB1cyBlbHNlICdzZWNvbmRzJworICAgIGVsaWYgdGltZXNwZWMgPT0gJ21pbGxpc2Vjb25kcyc6CisgICAgICAgIHVzIC8vPSAxMDAwCisgICAgdHJ5OgorICAgICAgICBmbXQgPSBzcGVjc1t0aW1lc3BlY10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1Vua25vd24gdGltZXNwZWMgdmFsdWUnKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBmbXQuZm9ybWF0KGhoLCBtbSwgc3MsIHVzKQogCiAjIENvcnJlY3RseSBzdWJzdGl0dXRlIGZvciAleiBhbmQgJVogZXNjYXBlcyBpbiBzdHJmdGltZSBmb3JtYXRzLgogZGVmIF93cmFwX3N0cmZ0aW1lKG9iamVjdCwgZm9ybWF0LCB0aW1ldHVwbGUpOgpAQCAtMjM2LDExICsyNTAsMTEgQEAKICAgICBpZiBub3QgaXNpbnN0YW5jZShvZmZzZXQsIHRpbWVkZWx0YSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHppbmZvLiVzKCkgbXVzdCByZXR1cm4gTm9uZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAib3IgdGltZWRlbHRhLCBub3QgJyVzJyIgJSAobmFtZSwgdHlwZShvZmZzZXQpKSkKLSAgICBpZiBvZmZzZXQgJSB0aW1lZGVsdGEobWludXRlcz0xKSBvciBvZmZzZXQubWljcm9zZWNvbmRzOgorICAgIGlmIG9mZnNldC5taWNyb3NlY29uZHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInR6aW5mby4lcygpIG11c3QgcmV0dXJuIGEgd2hvbGUgbnVtYmVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib2YgbWludXRlcywgZ290ICVzIiAlIChuYW1lLCBvZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBzZWNvbmRzLCBnb3QgJXMiICUgKG5hbWUsIG9mZnNldCkpCiAgICAgaWYgbm90IC10aW1lZGVsdGEoMSkgPCBvZmZzZXQgPCB0aW1lZGVsdGEoMSk6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzKCk9JXMsIG11c3QgYmUgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuICIKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMoKT0lcywgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIHRpbWVkZWx0YShob3Vycz0yNCkiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgb2Zmc2V0KSkKIApAQCAtMjc0LDcgKzI4OCw3IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2RheSBtdXN0IGJlIGluIDEuLiVkJyAlIGRpbSwgZGF5KQogICAgIHJldHVybiB5ZWFyLCBtb250aCwgZGF5CiAKLWRlZiBfY2hlY2tfdGltZV9maWVsZHMoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKToKK2RlZiBfY2hlY2tfdGltZV9maWVsZHMoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkKToKICAgICBob3VyID0gX2NoZWNrX2ludF9maWVsZChob3VyKQogICAgIG1pbnV0ZSA9IF9jaGVja19pbnRfZmllbGQobWludXRlKQogICAgIHNlY29uZCA9IF9jaGVja19pbnRfZmllbGQoc2Vjb25kKQpAQCAtMjg3LDcgKzMwMSw5IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlY29uZCBtdXN0IGJlIGluIDAuLjU5Jywgc2Vjb25kKQogICAgIGlmIG5vdCAwIDw9IG1pY3Jvc2Vjb25kIDw9IDk5OTk5OToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbWljcm9zZWNvbmQgbXVzdCBiZSBpbiAwLi45OTk5OTknLCBtaWNyb3NlY29uZCkKLSAgICByZXR1cm4gaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kCisgICAgaWYgZm9sZCBub3QgaW4gKDAsIDEpOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMScsIGZvbGQpCisgICAgcmV0dXJuIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZAogCiBkZWYgX2NoZWNrX3R6aW5mb19hcmcodHopOgogICAgIGlmIHR6IGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKQEAgLTMxNiw2ICszMzIsNyBAQAogCiAgICAgcmV0dXJuIHEKIAorCiBjbGFzcyB0aW1lZGVsdGE6CiAgICAgIiIiUmVwcmVzZW50IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGV0aW1lIG9iamVjdHMuCiAKQEAgLTkxNSw3ICs5MzIsNyBAQAogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIAotICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CisgICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICAgeWhpLCB5bG8gPSBkaXZtb2Qoc2VsZi5feWVhciwgMjU2KQogICAgICAgICByZXR1cm4gYnl0ZXMoW3loaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5XSksCiAKQEAgLTkyMyw4ICs5NDAsOCBAQAogICAgICAgICB5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSA9IHN0cmluZwogICAgICAgICBzZWxmLl95ZWFyID0geWhpICogMjU2ICsgeWxvCiAKLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKHByb3RvY29sKSkKIAogX2RhdGVfY2xhc3MgPSBkYXRlICAjIHNvIGZ1bmN0aW9ucyB3LyBhcmdzIG5hbWVkICJkYXRlIiBjYW4gZ2V0IGF0IHRoZSBjbGFzcwogCkBAIC05MzIsNiArOTQ5LDcgQEAKIGRhdGUubWF4ID0gZGF0ZSg5OTk5LCAxMiwgMzEpCiBkYXRlLnJlc29sdXRpb24gPSB0aW1lZGVsdGEoZGF5cz0xKQogCisKIGNsYXNzIHR6aW5mbzoKICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aW1lIHpvbmUgaW5mbyBjbGFzc2VzLgogCkBAIC0xMDIzLDExICsxMDQxLDExIEBACiAgICAgZHN0KCkKIAogICAgIFByb3BlcnRpZXMgKHJlYWRvbmx5KToKLSAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbworICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvLCBmb2xkCiAgICAgIiIiCi0gICAgX19zbG90c19fID0gJ19ob3VyJywgJ19taW51dGUnLCAnX3NlY29uZCcsICdfbWljcm9zZWNvbmQnLCAnX3R6aW5mbycsICdfaGFzaGNvZGUnCisgICAgX19zbG90c19fID0gJ19ob3VyJywgJ19taW51dGUnLCAnX3NlY29uZCcsICdfbWljcm9zZWNvbmQnLCAnX3R6aW5mbycsICdfaGFzaGNvZGUnLCAnX2ZvbGQnCiAKLSAgICBkZWYgX19uZXdfXyhjbHMsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6CisgICAgZGVmIF9fbmV3X18oY2xzLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUsICosIGZvbGQ9MCk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yLgogCiAgICAgICAgIEFyZ3VtZW50czoKQEAgLTEwMzUsMTUgKzEwNTMsMTYgQEAKICAgICAgICAgaG91ciwgbWludXRlIChyZXF1aXJlZCkKICAgICAgICAgc2Vjb25kLCBtaWNyb3NlY29uZCAoZGVmYXVsdCB0byB6ZXJvKQogICAgICAgICB0emluZm8gKGRlZmF1bHQgdG8gTm9uZSkKKyAgICAgICAgZm9sZCAoa2V5d29yZCBvbmx5LCBkZWZhdWx0IHRvIFRydWUpCiAgICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGhvdXIsIGJ5dGVzKSBhbmQgbGVuKGhvdXIpID09IDYgYW5kIGhvdXJbMF0gPCAyNDoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShob3VyLCBieXRlcykgYW5kIGxlbihob3VyKSA9PSA2IGFuZCBob3VyWzBdJjB4N0YgPCAyNDoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKICAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoaG91ciwgbWludXRlIG9yIE5vbmUpCiAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCi0gICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCisgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCA9IF9jaGVja190aW1lX2ZpZWxkcygKKyAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCkKICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQogICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICBzZWxmLl9ob3VyID0gaG91cgpAQCAtMTA1Miw2ICsxMDcxLDcgQEAKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQorICAgICAgICBzZWxmLl9mb2xkID0gZm9sZAogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMDgwLDYgKzExMDAsMTAgQEAKICAgICAgICAgIiIidGltZXpvbmUgaW5mbyBvYmplY3QiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3R6aW5mbwogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkCisKICAgICAjIFN0YW5kYXJkIGNvbnZlcnNpb25zLCBfX2hhc2hfXyAoYW5kIGhlbHBlcnMpCiAKICAgICAjIENvbXBhcmlzb25zIG9mIHRpbWUgb2JqZWN0cyB3aXRoIG90aGVyLgpAQCAtMTE0NSw5ICsxMTY5LDEzIEBACiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICAiIiJIYXNoLiIiIgogICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKLSAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgc2VsZi5mb2xkOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmLnJlcGxhY2UoZm9sZD0wKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ID0gc2VsZgorICAgICAgICAgICAgdHpvZmYgPSB0LnV0Y29mZnNldCgpCiAgICAgICAgICAgICBpZiBub3QgdHpvZmY6ICAjIHplcm8gb3IgTm9uZQotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0Ll9nZXRzdGF0ZSgpWzBdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBoLCBtID0gZGl2bW9kKHRpbWVkZWx0YShob3Vycz1zZWxmLmhvdXIsIG1pbnV0ZXM9c2VsZi5taW51dGUpIC0gdHpvZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoaG91cnM9MSkpCkBAIC0xMTcxLDEwICsxMTk5LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNpZ24gPSAiKyIKICAgICAgICAgICAgIGhoLCBtbSA9IGRpdm1vZChvZmYsIHRpbWVkZWx0YShob3Vycz0xKSkKLSAgICAgICAgICAgIGFzc2VydCBub3QgbW0gJSB0aW1lZGVsdGEobWludXRlcz0xKSwgIndob2xlIG1pbnV0ZSIKLSAgICAgICAgICAgIG1tIC8vPSB0aW1lZGVsdGEobWludXRlcz0xKQorICAgICAgICAgICAgbW0sIHNzID0gZGl2bW9kKG1tLCB0aW1lZGVsdGEobWludXRlcz0xKSkKICAgICAgICAgICAgIGFzc2VydCAwIDw9IGhoIDwgMjQKICAgICAgICAgICAgIG9mZiA9ICIlcyUwMmQlcyUwMmQiICUgKHNpZ24sIGhoLCBzZXAsIG1tKQorICAgICAgICAgICAgaWYgc3M6CisgICAgICAgICAgICAgICAgb2ZmICs9ICc6JTAyZCcgJSBzcy5zZWNvbmRzCiAgICAgICAgIHJldHVybiBvZmYKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTExOTEsMTYgKzEyMjAsMjIgQEAKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKICAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCB0emluZm89JXIiICUgc2VsZi5fdHppbmZvICsgIikiCisgICAgICAgIGlmIHNlbGYuX2ZvbGQ6CisgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgorICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIGZvbGQ9MSkiCiAgICAgICAgIHJldHVybiBzCiAKLSAgICBkZWYgaXNvZm9ybWF0KHNlbGYpOgorICAgIGRlZiBpc29mb3JtYXQoc2VsZiwgdGltZXNwZWM9J2F1dG8nKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gSVNPLgogCi0gICAgICAgIFRoaXMgaXMgJ0hIOk1NOlNTLm1tbW1tbSt6ejp6eicsIG9yICdISDpNTTpTUyt6ejp6eicgaWYKLSAgICAgICAgc2VsZi5taWNyb3NlY29uZCA9PSAwLgorICAgICAgICBUaGUgZnVsbCBmb3JtYXQgaXMgJ0hIOk1NOlNTLm1tbW1tbSt6ejp6eicuIEJ5IGRlZmF1bHQsIHRoZSBmcmFjdGlvbmFsCisgICAgICAgIHBhcnQgaXMgb21pdHRlZCBpZiBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCisKKyAgICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHRpbWVzcGVjIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgICAgICAgdGVybXMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZS4KICAgICAgICAgIiIiCiAgICAgICAgIHMgPSBfZm9ybWF0X3RpbWUoc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kLCB0aW1lc3BlYykKICAgICAgICAgdHogPSBzZWxmLl90enN0cigpCiAgICAgICAgIGlmIHR6OgogICAgICAgICAgICAgcyArPSB0egpAQCAtMTI2Niw3ICsxMzAxLDcgQEAKICAgICAgICAgcmV0dXJuIG9mZnNldAogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgaG91cj1Ob25lLCBtaW51dGU9Tm9uZSwgc2Vjb25kPU5vbmUsIG1pY3Jvc2Vjb25kPU5vbmUsCi0gICAgICAgICAgICAgICAgdHppbmZvPVRydWUpOgorICAgICAgICAgICAgICAgIHR6aW5mbz1UcnVlLCAqLCBmb2xkPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gYSBuZXcgdGltZSB3aXRoIG5ldyB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGRzLiIiIgogICAgICAgICBpZiBob3VyIGlzIE5vbmU6CiAgICAgICAgICAgICBob3VyID0gc2VsZi5ob3VyCkBAIC0xMjc4LDE0ICsxMzEzLDE5IEBACiAgICAgICAgICAgICBtaWNyb3NlY29uZCA9IHNlbGYubWljcm9zZWNvbmQKICAgICAgICAgaWYgdHppbmZvIGlzIFRydWU6CiAgICAgICAgICAgICB0emluZm8gPSBzZWxmLnR6aW5mbwotICAgICAgICByZXR1cm4gdGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbykKKyAgICAgICAgaWYgZm9sZCBpcyBOb25lOgorICAgICAgICAgICAgZm9sZCA9IHNlbGYuX2ZvbGQKKyAgICAgICAgcmV0dXJuIHRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8sIGZvbGQ9Zm9sZCkKIAogICAgICMgUGlja2xlIHN1cHBvcnQuCiAKLSAgICBkZWYgX2dldHN0YXRlKHNlbGYpOgorICAgIGRlZiBfZ2V0c3RhdGUoc2VsZiwgcHJvdG9jb2w9Myk6CiAgICAgICAgIHVzMiwgdXMzID0gZGl2bW9kKHNlbGYuX21pY3Jvc2Vjb25kLCAyNTYpCiAgICAgICAgIHVzMSwgdXMyID0gZGl2bW9kKHVzMiwgMjU2KQotICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCisgICAgICAgIGggPSBzZWxmLl9ob3VyCisgICAgICAgIGlmIHNlbGYuX2ZvbGQgYW5kIHByb3RvY29sID4gMzoKKyAgICAgICAgICAgIGggKz0gMTI4CisgICAgICAgIGJhc2VzdGF0ZSA9IGJ5dGVzKFtoLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzMSwgdXMyLCB1czNdKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiAoYmFzZXN0YXRlLCkKQEAgLTEyOTUsMTIgKzEzMzUsMTggQEAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6CiAgICAgICAgIGlmIHR6aW5mbyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQotICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMyA9IHN0cmluZworICAgICAgICBoLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMyA9IHN0cmluZworICAgICAgICBpZiBoID4gMTI3OgorICAgICAgICAgICAgc2VsZi5fZm9sZCA9IDEKKyAgICAgICAgICAgIHNlbGYuX2hvdXIgPSBoIC0gMTI4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMAorICAgICAgICAgICAgc2VsZi5faG91ciA9IGgKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSAoKCh1czEgPDwgOCkgfCB1czIpIDw8IDgpIHwgdXMzCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAodGltZSwgc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHJldHVybiAodGltZSwgc2VsZi5fZ2V0c3RhdGUocHJvdG9jb2wpKQogCiBfdGltZV9jbGFzcyA9IHRpbWUgICMgc28gZnVuY3Rpb25zIHcvIGFyZ3MgbmFtZWQgInRpbWUiIGNhbiBnZXQgYXQgdGhlIGNsYXNzCiAKQEAgLTEzMTcsMTYgKzEzNjMsMTYgQEAKICAgICBfX3Nsb3RzX18gPSBkYXRlLl9fc2xvdHNfXyArIHRpbWUuX19zbG90c19fCiAKICAgICBkZWYgX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoPU5vbmUsIGRheT1Ob25lLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwKLSAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gMTAgYW5kIDEgPD0geWVhclsyXSA8PSAxMjoKKyAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh5ZWFyLCBieXRlcykgYW5kIGxlbih5ZWFyKSA9PSAxMCBhbmQgMSA8PSB5ZWFyWzJdJjB4N0YgPD0gMTI6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CiAgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKHllYXIsIG1vbnRoKQogICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICAgeWVhciwgbW9udGgsIGRheSA9IF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQotICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCi0gICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCisgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCA9IF9jaGVja190aW1lX2ZpZWxkcygKKyAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCkKICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQogICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICBzZWxmLl95ZWFyID0geWVhcgpAQCAtMTMzOCw2ICsxMzg0LDcgQEAKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQorICAgICAgICBzZWxmLl9mb2xkID0gZm9sZAogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMzY2LDYgKzE0MTMsMTAgQEAKICAgICAgICAgIiIidGltZXpvbmUgaW5mbyBvYmplY3QiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3R6aW5mbwogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX2Zyb210aW1lc3RhbXAoY2xzLCB0LCB1dGMsIHR6KToKICAgICAgICAgIiIiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAobGlrZSB0aW1lLnRpbWUoKSkuCkBAIC0xMzg0LDcgKzE0MzUsMjMgQEAKICAgICAgICAgY29udmVydGVyID0gX3RpbWUuZ210aW1lIGlmIHV0YyBlbHNlIF90aW1lLmxvY2FsdGltZQogICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzLCB3ZWVrZGF5LCBqZGF5LCBkc3QgPSBjb252ZXJ0ZXIodCkKICAgICAgICAgc3MgPSBtaW4oc3MsIDU5KSAgICAjIGNsYW1wIG91dCBsZWFwIHNlY29uZHMgaWYgdGhlIHBsYXRmb3JtIGhhcyB0aGVtCi0gICAgICAgIHJldHVybiBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICByZXN1bHQgPSBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICBpZiB0eiBpcyBOb25lOgorICAgICAgICAgICAgIyBBcyBvZiB2ZXJzaW9uIDIwMTVmIG1heCBmb2xkIGluIElBTkEgZGF0YWJhc2UgaXMKKyAgICAgICAgICAgICMgMjMgaG91cnMgYXQgMTk2OS0wOS0zMCAxMzowMDowMCBpbiBLd2FqYWxlaW4uCisgICAgICAgICAgICAjIExldCdzIHByb2JlIDI0IGhvdXJzIGluIHRoZSBwYXN0IHRvIGRldGVjdCBhIHRyYW5zaXRpb246CisgICAgICAgICAgICBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwCisgICAgICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzID0gY29udmVydGVyKHQgLSBtYXhfZm9sZF9zZWNvbmRzKVs6Nl0KKyAgICAgICAgICAgIHByb2JlMSA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgICAgICB0cmFucyA9IHJlc3VsdCAtIHByb2JlMSAtIHRpbWVkZWx0YSgwLCBtYXhfZm9sZF9zZWNvbmRzKQorICAgICAgICAgICAgaWYgdHJhbnMuZGF5cyA8IDA6CisgICAgICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IGNvbnZlcnRlcih0ICsgdHJhbnMgLy8gdGltZWRlbHRhKDAsIDEpKVs6Nl0KKyAgICAgICAgICAgICAgICBwcm9iZTIgPSBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICAgICAgICAgIGlmIHByb2JlMiA9PSByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5fZm9sZCA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IHR6LmZyb211dGMocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZnJvbXRpbWVzdGFtcChjbHMsIHQsIHR6PU5vbmUpOgpAQCAtMTM5NCwxMCArMTQ2MSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0eikKIAotICAgICAgICByZXN1bHQgPSBjbHMuX2Zyb210aW1lc3RhbXAodCwgdHogaXMgbm90IE5vbmUsIHR6KQotICAgICAgICBpZiB0eiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJlc3VsdCA9IHR6LmZyb211dGMocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIHJldHVybiBjbHMuX2Zyb210aW1lc3RhbXAodCwgdHogaXMgbm90IE5vbmUsIHR6KQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHV0Y2Zyb210aW1lc3RhbXAoY2xzLCB0KToKQEAgLTE0MTcsMTUgKzE0ODEsMTcgQEAKICAgICAgICAgcmV0dXJuIGNscy51dGNmcm9tdGltZXN0YW1wKHQpCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY29tYmluZShjbHMsIGRhdGUsIHRpbWUpOgorICAgIGRlZiBjb21iaW5lKGNscywgZGF0ZSwgdGltZSwgdHppbmZvPVRydWUpOgogICAgICAgICAiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSBhIGdpdmVuIGRhdGUgYW5kIGEgZ2l2ZW4gdGltZS4iCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGUsIF9kYXRlX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGF0ZSBhcmd1bWVudCBtdXN0IGJlIGEgZGF0ZSBpbnN0YW5jZSIpCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRpbWUsIF90aW1lX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidGltZSBhcmd1bWVudCBtdXN0IGJlIGEgdGltZSBpbnN0YW5jZSIpCisgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgorICAgICAgICAgICAgdHppbmZvID0gdGltZS50emluZm8KICAgICAgICAgcmV0dXJuIGNscyhkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5LAogICAgICAgICAgICAgICAgICAgIHRpbWUuaG91ciwgdGltZS5taW51dGUsIHRpbWUuc2Vjb25kLCB0aW1lLm1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgIHRpbWUudHppbmZvKQorICAgICAgICAgICAgICAgICAgIHR6aW5mbywgZm9sZD10aW1lLmZvbGQpCiAKICAgICBkZWYgdGltZXR1cGxlKHNlbGYpOgogICAgICAgICAiUmV0dXJuIGxvY2FsIHRpbWUgdHVwbGUgY29tcGF0aWJsZSB3aXRoIHRpbWUubG9jYWx0aW1lKCkuIgpAQCAtMTQ0MCwxMiArMTUwNiw0NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdCkKIAorICAgIGRlZiBfbWt0aW1lKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gaW50ZWdlciBQT1NJWCB0aW1lc3RhbXAuIiIiCisgICAgICAgIGVwb2NoID0gZGF0ZXRpbWUoMTk3MCwgMSwgMSkKKyAgICAgICAgbWF4X2ZvbGRfc2Vjb25kcyA9IDI0ICogMzYwMAorICAgICAgICB0ID0gKHNlbGYgLSBlcG9jaCkgLy8gdGltZWRlbHRhKDAsIDEpCisgICAgICAgIGRlZiBsb2NhbCh1KToKKyAgICAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MgPSBfdGltZS5sb2NhbHRpbWUodSlbOjZdCisgICAgICAgICAgICByZXR1cm4gKGRhdGV0aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MpIC0gZXBvY2gpIC8vIHRpbWVkZWx0YSgwLCAxKQorCisgICAgICAgICMgT3VyIGdvYWwgaXMgdG8gc29sdmUgdCA9IGxvY2FsKHUpIGZvciB1LgorICAgICAgICBhID0gbG9jYWwodCkgLSB0CisgICAgICAgIHUxID0gdCAtIGEKKyAgICAgICAgdDEgPSBsb2NhbCh1MSkKKyAgICAgICAgaWYgdDEgPT0gdDoKKyAgICAgICAgICAgICMgV2UgZm91bmQgb25lIHNvbHV0aW9uLCBidXQgaXQgbWF5IG5vdCBiZSB0aGUgb25lIHdlIG5lZWQuCisgICAgICAgICAgICAjIExvb2sgZm9yIGFuIGVhcmxpZXIgc29sdXRpb24gKGlmIGBmb2xkYCBpcyAwKSwgb3IgYQorICAgICAgICAgICAgIyBsYXRlciBvbmUgKGlmIGBmb2xkYCBpcyAxKS4KKyAgICAgICAgICAgIHUyID0gdTEgKyAoLW1heF9mb2xkX3NlY29uZHMsIG1heF9mb2xkX3NlY29uZHMpW3NlbGYuZm9sZF0KKyAgICAgICAgICAgIGIgPSBsb2NhbCh1MikgLSB1MgorICAgICAgICAgICAgaWYgYSA9PSBiOgorICAgICAgICAgICAgICAgIHJldHVybiB1MQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYiA9IHQxIC0gdTEKKyAgICAgICAgICAgIGFzc2VydCBhICE9IGIKKyAgICAgICAgdTIgPSB0IC0gYgorICAgICAgICB0MiA9IGxvY2FsKHUyKQorICAgICAgICBpZiB0MiA9PSB0OgorICAgICAgICAgICAgcmV0dXJuIHUyCisgICAgICAgIGlmIHQxID09IHQ6CisgICAgICAgICAgICByZXR1cm4gdTEKKyAgICAgICAgIyBXZSBoYXZlIGZvdW5kIGJvdGggb2Zmc2V0cyBhIGFuZCBiLCBidXQgbmVpdGhlciB0IC0gYSBub3IgdCAtIGIgaXMKKyAgICAgICAgIyBhIHNvbHV0aW9uLiAgVGhpcyBtZWFucyB0IGlzIGluIHRoZSBnYXAuCisgICAgICAgIHJldHVybiAobWF4LCBtaW4pW3NlbGYuZm9sZF0odTEsIHUyKQorCisKICAgICBkZWYgdGltZXN0YW1wKHNlbGYpOgogICAgICAgICAiUmV0dXJuIFBPU0lYIHRpbWVzdGFtcCBhcyBmbG9hdCIKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gX3RpbWUubWt0aW1lKChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgLTEsIC0xKSkgKyBzZWxmLm1pY3Jvc2Vjb25kIC8gMWU2CisgICAgICAgICAgICBzID0gc2VsZi5fbWt0aW1lKCkKKyAgICAgICAgICAgIHJldHVybiBzICsgc2VsZi5taWNyb3NlY29uZCAvIDFlNgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIChzZWxmIC0gX0VQT0NIKS50b3RhbF9zZWNvbmRzKCkKIApAQCAtMTQ2NCwxNSArMTU2NCwxNiBAQAogCiAgICAgZGVmIHRpbWUoc2VsZik6CiAgICAgICAgICJSZXR1cm4gdGhlIHRpbWUgcGFydCwgd2l0aCB0emluZm8gTm9uZS4iCi0gICAgICAgIHJldHVybiB0aW1lKHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kKQorICAgICAgICByZXR1cm4gdGltZShzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCwgZm9sZD1zZWxmLmZvbGQpCiAKICAgICBkZWYgdGltZXR6KHNlbGYpOgogICAgICAgICAiUmV0dXJuIHRoZSB0aW1lIHBhcnQsIHdpdGggc2FtZSB0emluZm8uIgogICAgICAgICByZXR1cm4gdGltZShzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHppbmZvKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl90emluZm8sIGZvbGQ9c2VsZi5mb2xkKQogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgeWVhcj1Ob25lLCBtb250aD1Ob25lLCBkYXk9Tm9uZSwgaG91cj1Ob25lLAotICAgICAgICAgICAgICAgIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwgdHppbmZvPVRydWUpOgorICAgICAgICAgICAgICAgIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwgdHppbmZvPVRydWUsCisgICAgICAgICAgICAgICAgKiwgZm9sZD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIGEgbmV3IGRhdGV0aW1lIHdpdGggbmV3IHZhbHVlcyBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZHMuIiIiCiAgICAgICAgIGlmIHllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHllYXIgPSBzZWxmLnllYXIKQEAgLTE0OTAsNDYgKzE1OTEsNDUgQEAKICAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKICAgICAgICAgICAgIHR6aW5mbyA9IHNlbGYudHppbmZvCi0gICAgICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pCisgICAgICAgIGlmIGZvbGQgaXMgTm9uZToKKyAgICAgICAgICAgIGZvbGQgPSBzZWxmLmZvbGQKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZCwgdHppbmZvLCBmb2xkPWZvbGQpCisKKyAgICBkZWYgX2xvY2FsX3RpbWV6b25lKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnR6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgdHMgPSBzZWxmLl9ta3RpbWUoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHMgPSAoc2VsZiAtIF9FUE9DSCkgLy8gdGltZWRlbHRhKHNlY29uZHM9MSkKKyAgICAgICAgbG9jYWx0bSA9IF90aW1lLmxvY2FsdGltZSh0cykKKyAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRXh0cmFjdCBUWiBkYXRhIGlmIGF2YWlsYWJsZQorICAgICAgICAgICAgZ210b2ZmID0gbG9jYWx0bS50bV9nbXRvZmYKKyAgICAgICAgICAgIHpvbmUgPSBsb2NhbHRtLnRtX3pvbmUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgZGVsdGEgPSBsb2NhbCAtIGRhdGV0aW1lKCpfdGltZS5nbXRpbWUodHMpWzo2XSkKKyAgICAgICAgICAgIHpvbmUgPSBfdGltZS5zdHJmdGltZSgnJVonLCBsb2NhbHRtKQorICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSwgem9uZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHR6ID0gdGltZXpvbmUodGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKSwgem9uZSkKKyAgICAgICAgcmV0dXJuIHR6CiAKICAgICBkZWYgYXN0aW1lem9uZShzZWxmLCB0ej1Ob25lKToKICAgICAgICAgaWYgdHogaXMgTm9uZToKLSAgICAgICAgICAgIGlmIHNlbGYudHppbmZvIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXN0aW1lem9uZSgpIHJlcXVpcmVzIGFuIGF3YXJlIGRhdGV0aW1lIikKLSAgICAgICAgICAgIHRzID0gKHNlbGYgLSBfRVBPQ0gpIC8vIHRpbWVkZWx0YShzZWNvbmRzPTEpCi0gICAgICAgICAgICBsb2NhbHRtID0gX3RpbWUubG9jYWx0aW1lKHRzKQotICAgICAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBFeHRyYWN0IFRaIGRhdGEgaWYgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgZ210b2ZmID0gbG9jYWx0bS50bV9nbXRvZmYKLSAgICAgICAgICAgICAgICB6b25lID0gbG9jYWx0bS50bV96b25lCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBDb21wdXRlIFVUQyBvZmZzZXQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgdmFsdWUgaW1wbGllZAotICAgICAgICAgICAgICAgICMgYnkgdG1faXNkc3QuICBJZiB0aGUgdmFsdWVzIG1hdGNoLCB1c2UgdGhlIHpvbmUgbmFtZQotICAgICAgICAgICAgICAgICMgaW1wbGllZCBieSB0bV9pc2RzdC4KLSAgICAgICAgICAgICAgICBkZWx0YSA9IGxvY2FsIC0gZGF0ZXRpbWUoKl90aW1lLmdtdGltZSh0cylbOjZdKQotICAgICAgICAgICAgICAgIGRzdCA9IF90aW1lLmRheWxpZ2h0IGFuZCBsb2NhbHRtLnRtX2lzZHN0ID4gMAotICAgICAgICAgICAgICAgIGdtdG9mZiA9IC0oX3RpbWUuYWx0em9uZSBpZiBkc3QgZWxzZSBfdGltZS50aW1lem9uZSkKLSAgICAgICAgICAgICAgICBpZiBkZWx0YSA9PSB0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpOgotICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhLCBfdGltZS50em5hbWVbZHN0XSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZiksIHpvbmUpCi0KKyAgICAgICAgICAgIHR6ID0gc2VsZi5fbG9jYWxfdGltZXpvbmUoKQogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0eiBhcmd1bWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHR6aW5mbyIpCiAKICAgICAgICAgbXl0eiA9IHNlbGYudHppbmZvCiAgICAgICAgIGlmIG15dHogaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCisgICAgICAgICAgICBteXR6ID0gc2VsZi5fbG9jYWxfdGltZXpvbmUoKQogCiAgICAgICAgIGlmIHR6IGlzIG15dHo6CiAgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgICAgICMgQ29udmVydCBzZWxmIHRvIFVUQywgYW5kIGF0dGFjaCB0aGUgbmV3IHRpbWUgem9uZSBvYmplY3QuCi0gICAgICAgIG15b2Zmc2V0ID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICBteW9mZnNldCA9IG15dHoudXRjb2Zmc2V0KHNlbGYpCiAgICAgICAgIGlmIG15b2Zmc2V0IGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhc3RpbWV6b25lKCkgcmVxdWlyZXMgYW4gYXdhcmUgZGF0ZXRpbWUiKQogICAgICAgICB1dGMgPSAoc2VsZiAtIG15b2Zmc2V0KS5yZXBsYWNlKHR6aW5mbz10eikKQEAgLTE1NDksMjEgKzE2NDksMjUgQEAKICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgc2VsZi5feWVhcikKIAotICAgIGRlZiBpc29mb3JtYXQoc2VsZiwgc2VwPSdUJyk6CisgICAgZGVmIGlzb2Zvcm1hdChzZWxmLCBzZXA9J1QnLCB0aW1lc3BlYz0nYXV0bycpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byBJU08uCiAKLSAgICAgICAgVGhpcyBpcyAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0nLCBvciAnWVlZWS1NTS1ERCBISDpNTTpTUycgaWYKLSAgICAgICAgc2VsZi5taWNyb3NlY29uZCA9PSAwLgorICAgICAgICBUaGUgZnVsbCBmb3JtYXQgbG9va3MgbGlrZSAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0nLgorICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzIG9taXR0ZWQgaWYgc2VsZi5taWNyb3NlY29uZCA9PSAwLgogCiAgICAgICAgIElmIHNlbGYudHppbmZvIGlzIG5vdCBOb25lLCB0aGUgVVRDIG9mZnNldCBpcyBhbHNvIGF0dGFjaGVkLCBnaXZpbmcKLSAgICAgICAgJ1lZWVktTU0tREQgSEg6TU06U1MubW1tbW1tK0hIOk1NJyBvciAnWVlZWS1NTS1ERCBISDpNTTpTUytISDpNTScuCisgICAgICAgIGdpdmluZyBhIGZ1bGwgZm9ybWF0IG9mICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbStISDpNTScuCiAKICAgICAgICAgT3B0aW9uYWwgYXJndW1lbnQgc2VwIHNwZWNpZmllcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gZGF0ZSBhbmQKICAgICAgICAgdGltZSwgZGVmYXVsdCAnVCcuCisKKyAgICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHRpbWVzcGVjIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgICAgICAgdGVybXMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZS4KICAgICAgICAgIiIiCiAgICAgICAgIHMgPSAoIiUwNGQtJTAyZC0lMDJkJWMiICUgKHNlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlcCkgKwogICAgICAgICAgICAgIF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCwgdGltZXNwZWMpKQorCiAgICAgICAgIG9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKICAgICAgICAgaWYgb2ZmIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgb2ZmLmRheXMgPCAwOgpAQCAtMTU3Miw5ICsxNjc2LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNpZ24gPSAiKyIKICAgICAgICAgICAgIGhoLCBtbSA9IGRpdm1vZChvZmYsIHRpbWVkZWx0YShob3Vycz0xKSkKLSAgICAgICAgICAgIGFzc2VydCBub3QgbW0gJSB0aW1lZGVsdGEobWludXRlcz0xKSwgIndob2xlIG1pbnV0ZSIKLSAgICAgICAgICAgIG1tIC8vPSB0aW1lZGVsdGEobWludXRlcz0xKQorICAgICAgICAgICAgbW0sIHNzID0gZGl2bW9kKG1tLCB0aW1lZGVsdGEobWludXRlcz0xKSkKICAgICAgICAgICAgIHMgKz0gIiVzJTAyZDolMDJkIiAlIChzaWduLCBoaCwgbW0pCisgICAgICAgICAgICBpZiBzczoKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHNzLm1pY3Jvc2Vjb25kcworICAgICAgICAgICAgICAgIHMgKz0gIjolMDJkIiAlIHNzLnNlY29uZHMKICAgICAgICAgcmV0dXJuIHMKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTE1OTEsNiArMTY5Nyw5IEBACiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCiAgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgdHppbmZvPSVyIiAlIHNlbGYuX3R6aW5mbyArICIpIgorICAgICAgICBpZiBzZWxmLl9mb2xkOgorICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKKyAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCBmb2xkPTEpIgogICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0xNjkzLDYgKzE4MDIsMTIgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG15b2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICAgICAgb3RvZmYgPSBvdGhlci51dGNvZmZzZXQoKQorICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBhbGxvd19taXhlZCBtZWFucyB0aGF0IHdlIGFyZSBjYWxsZWQgZnJvbSBfX2VxX18KKyAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgorICAgICAgICAgICAgICAgIGlmIG15b2ZmICE9IHNlbGYucmVwbGFjZShmb2xkPW5vdCBzZWxmLmZvbGQpLnV0Y29mZnNldCgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMgorICAgICAgICAgICAgICAgIGlmIG90b2ZmICE9IG90aGVyLnJlcGxhY2UoZm9sZD1ub3Qgb3RoZXIuZm9sZCkudXRjb2Zmc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyCiAgICAgICAgICAgICBiYXNlX2NvbXBhcmUgPSBteW9mZiA9PSBvdG9mZgogCiAgICAgICAgIGlmIGJhc2VfY29tcGFyZToKQEAgLTE3NjAsOSArMTg3NSwxMyBAQAogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKLSAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgc2VsZi5mb2xkOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmLnJlcGxhY2UoZm9sZD0wKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ID0gc2VsZgorICAgICAgICAgICAgdHpvZmYgPSB0LnV0Y29mZnNldCgpCiAgICAgICAgICAgICBpZiB0em9mZiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0Ll9nZXRzdGF0ZSgpWzBdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkYXlzID0gX3ltZDJvcmQoc2VsZi55ZWFyLCBzZWxmLm1vbnRoLCBzZWxmLmRheSkKICAgICAgICAgICAgICAgICBzZWNvbmRzID0gc2VsZi5ob3VyICogMzYwMCArIHNlbGYubWludXRlICogNjAgKyBzZWxmLnNlY29uZApAQCAtMTc3MSwxMSArMTg5MCwxNCBAQAogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIAotICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CisgICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICAgeWhpLCB5bG8gPSBkaXZtb2Qoc2VsZi5feWVhciwgMjU2KQogICAgICAgICB1czIsIHVzMyA9IGRpdm1vZChzZWxmLl9taWNyb3NlY29uZCwgMjU2KQogICAgICAgICB1czEsIHVzMiA9IGRpdm1vZCh1czIsIDI1NikKLSAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW3loaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LAorICAgICAgICBtID0gc2VsZi5fbW9udGgKKyAgICAgICAgaWYgc2VsZi5fZm9sZCBhbmQgcHJvdG9jb2wgPiAzOgorICAgICAgICAgICAgbSArPSAxMjgKKyAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW3loaSwgeWxvLCBtLCBzZWxmLl9kYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzMSwgdXMyLCB1czNdKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKQEAgLTE3ODYsMTQgKzE5MDgsMjAgQEAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6CiAgICAgICAgIGlmIHR6aW5mbyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQotICAgICAgICAoeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlbGYuX2hvdXIsCisgICAgICAgICh5aGksIHlsbywgbSwgc2VsZi5fZGF5LCBzZWxmLl9ob3VyLAogICAgICAgICAgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsIHVzMSwgdXMyLCB1czMpID0gc3RyaW5nCisgICAgICAgIGlmIG0gPiAxMjc6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMQorICAgICAgICAgICAgc2VsZi5fbW9udGggPSBtIC0gMTI4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMAorICAgICAgICAgICAgc2VsZi5fbW9udGggPSBtCiAgICAgICAgIHNlbGYuX3llYXIgPSB5aGkgKiAyNTYgKyB5bG8KICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSAoKCh1czEgPDwgOCkgfCB1czIpIDw8IDgpIHwgdXMzCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKCkpCisgICAgZGVmIF9fcmVkdWNlX2V4X18oc2VsZiwgcHJvdG9jb2wpOgorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZShwcm90b2NvbCkpCiAKIAogZGF0ZXRpbWUubWluID0gZGF0ZXRpbWUoMSwgMSwgMSkKQEAgLTE5MTMsNiArMjA0MSw4IEBACiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9uYW1lX2Zyb21fb2Zmc2V0KGRlbHRhKToKKyAgICAgICAgaWYgbm90IGRlbHRhOgorICAgICAgICAgICAgcmV0dXJuICdVVEMnCiAgICAgICAgIGlmIGRlbHRhIDwgdGltZWRlbHRhKDApOgogICAgICAgICAgICAgc2lnbiA9ICctJwogICAgICAgICAgICAgZGVsdGEgPSAtZGVsdGEKZGlmZiAtLWdpdCBhL0xpYi9kYm0vZHVtYi5weSBiL0xpYi9kYm0vZHVtYi5weQppbmRleCA3Nzc3YTdjLi5lN2M2NDQwIDEwMDY0NAotLS0gYS9MaWIvZGJtL2R1bWIucHkKKysrIGIvTGliL2RibS9kdW1iLnB5CkBAIC00Nyw2ICs0Nyw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZWJhc2VuYW1lLCBtb2RlLCBmbGFnPSdjJyk6CiAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlCisgICAgICAgIHNlbGYuX3JlYWRvbmx5ID0gKGZsYWcgPT0gJ3InKQogCiAgICAgICAgICMgVGhlIGRpcmVjdG9yeSBmaWxlIGlzIGEgdGV4dCBmaWxlLiAgRWFjaCBsaW5lIGxvb2tzIGxpa2UKICAgICAgICAgIyAgICAiJXIsICglZCwgJWQpXG4iICUgKGtleSwgcG9zLCBzaXopCkBAIC04MCw2ICs4MSwxMSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3InLCBlbmNvZGluZz0iTGF0aW4tMSIpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgaWYgZmxhZyBub3QgaW4gKCdjJywgJ24nKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgZGF0YWJhc2UgZmlsZSBpcyBtaXNzaW5nLCB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbWFudGljcyBvZiB0aGUgJ2MnIGZsYWcgd2lsbCBiZSB1c2VkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NCkKICAgICAgICAgICAgIHdpdGggX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3cnLCBlbmNvZGluZz0iTGF0aW4tMSIpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2htb2Qoc2VsZi5fZGF0ZmlsZSkKICAgICAgICAgZWxzZToKQEAgLTE3OCw2ICsxODQsMTAgQEAKICAgICAgICAgICAgIGYud3JpdGUoIiVyLCAlclxuIiAlIChrZXkuZGVjb2RlKCJMYXRpbi0xIiksIHBvc19hbmRfc2l6X3BhaXIpKQogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsKToKKyAgICAgICAgaWYgc2VsZi5fcmVhZG9ubHk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShrZXksIChieXRlcywgYnl0ZWFycmF5KSk6CkBAIC0yMTIsNiArMjIyLDEwIEBACiAgICAgICAgICAgICAjIChzbyB0aGF0IF9jb21taXQoKSBuZXZlciBnZXRzIGNhbGxlZCkuCiAKICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgaWYgc2VsZi5fcmVhZG9ubHk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgc2VsZi5fdmVyaWZ5X29wZW4oKQpAQCAtMzAwLDQgKzMxNCw4IEBACiAgICAgZWxzZToKICAgICAgICAgIyBUdXJuIG9mZiBhbnkgYml0cyB0aGF0IGFyZSBzZXQgaW4gdGhlIHVtYXNrCiAgICAgICAgIG1vZGUgPSBtb2RlICYgKH51bSkKKyAgICBpZiBmbGFnIG5vdCBpbiAoJ3InLCAndycsICdjJywgJ24nKToKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm4oIkZsYWcgbXVzdCBiZSBvbmUgb2YgJ3InLCAndycsICdjJywgb3IgJ24nIiwKKyAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gX0RhdGFiYXNlKGZpbGUsIG1vZGUsIGZsYWc9ZmxhZykKZGlmZiAtLWdpdCBhL0xpYi9kaWZmbGliLnB5IGIvTGliL2RpZmZsaWIucHkKaW5kZXggMDc2YmJhYy4uMjA5NWE1ZSAxMDA2NDQKLS0tIGEvTGliL2RpZmZsaWIucHkKKysrIGIvTGliL2RpZmZsaWIucHkKQEAgLTE0MTUsNyArMTQxNSw3IEBACiAgICAgaW1wb3J0IHJlCiAKICAgICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgZmluZGluZyBpbnRyYWxpbmUgY2hhbmdlIGluZGljZXMKLSAgICBjaGFuZ2VfcmUgPSByZS5jb21waWxlKCcoXCsrfFwtK3xcXispJykKKyAgICBjaGFuZ2VfcmUgPSByZS5jb21waWxlKHInKFwrK3xcLSt8XF4rKScpCiAKICAgICAjIGNyZWF0ZSB0aGUgZGlmZmVyZW5jZSBpdGVyYXRvciB0byBnZW5lcmF0ZSB0aGUgZGlmZmVyZW5jZXMKICAgICBkaWZmX2xpbmVzX2l0ZXJhdG9yID0gbmRpZmYoZnJvbWxpbmVzLHRvbGluZXMsbGluZWp1bmssY2hhcmp1bmspCmRpZmYgLS1naXQgYS9MaWIvZGlzLnB5IGIvTGliL2Rpcy5weQppbmRleCBmN2UzYzdmLi4zYTcwNmJlIDEwMDY0NAotLS0gYS9MaWIvZGlzLnB5CisrKyBiL0xpYi9kaXMucHkKQEAgLTg3LDYgKzg3LDcgQEAKICAgICA2NDogIk5PRlJFRSIsCiAgICAxMjg6ICJDT1JPVVRJTkUiLAogICAgMjU2OiAiSVRFUkFCTEVfQ09ST1VUSU5FIiwKKyAgIDUxMjogIkFTWU5DX0dFTkVSQVRPUiIsCiB9CiAKIGRlZiBwcmV0dHlfZmxhZ3MoZmxhZ3MpOgpAQCAtMTYzLDYgKzE2NCwxNSBAQAogX0luc3RydWN0aW9uID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiX0luc3RydWN0aW9uIiwKICAgICAgIm9wbmFtZSBvcGNvZGUgYXJnIGFyZ3ZhbCBhcmdyZXByIG9mZnNldCBzdGFydHNfbGluZSBpc19qdW1wX3RhcmdldCIpCiAKK19JbnN0cnVjdGlvbi5vcG5hbWUuX19kb2NfXyA9ICJIdW1hbiByZWFkYWJsZSBuYW1lIGZvciBvcGVyYXRpb24iCitfSW5zdHJ1Y3Rpb24ub3Bjb2RlLl9fZG9jX18gPSAiTnVtZXJpYyBjb2RlIGZvciBvcGVyYXRpb24iCitfSW5zdHJ1Y3Rpb24uYXJnLl9fZG9jX18gPSAiTnVtZXJpYyBhcmd1bWVudCB0byBvcGVyYXRpb24gKGlmIGFueSksIG90aGVyd2lzZSBOb25lIgorX0luc3RydWN0aW9uLmFyZ3ZhbC5fX2RvY19fID0gIlJlc29sdmVkIGFyZyB2YWx1ZSAoaWYga25vd24pLCBvdGhlcndpc2Ugc2FtZSBhcyBhcmciCitfSW5zdHJ1Y3Rpb24uYXJncmVwci5fX2RvY19fID0gIkh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIG9wZXJhdGlvbiBhcmd1bWVudCIKK19JbnN0cnVjdGlvbi5vZmZzZXQuX19kb2NfXyA9ICJTdGFydCBpbmRleCBvZiBvcGVyYXRpb24gd2l0aGluIGJ5dGVjb2RlIHNlcXVlbmNlIgorX0luc3RydWN0aW9uLnN0YXJ0c19saW5lLl9fZG9jX18gPSAiTGluZSBzdGFydGVkIGJ5IHRoaXMgb3Bjb2RlIChpZiBhbnkpLCBvdGhlcndpc2UgTm9uZSIKK19JbnN0cnVjdGlvbi5pc19qdW1wX3RhcmdldC5fX2RvY19fID0gIlRydWUgaWYgb3RoZXIgY29kZSBqdW1wcyB0byBoZXJlLCBvdGhlcndpc2UgRmFsc2UiCisKIGNsYXNzIEluc3RydWN0aW9uKF9JbnN0cnVjdGlvbik6CiAgICAgIiIiRGV0YWlscyBmb3IgYSBieXRlY29kZSBvcGVyYXRpb24KIApAQCAtMjc2LDcgKzI4Niw2IEBACiAgICAgIiIiCiAgICAgbGFiZWxzID0gZmluZGxhYmVscyhjb2RlKQogICAgIHN0YXJ0c19saW5lID0gTm9uZQotICAgIGZyZWUgPSBOb25lCiAgICAgZm9yIG9mZnNldCwgb3AsIGFyZyBpbiBfdW5wYWNrX29wYXJncyhjb2RlKToKICAgICAgICAgaWYgbGluZXN0YXJ0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHN0YXJ0c19saW5lID0gbGluZXN0YXJ0cy5nZXQob2Zmc2V0LCBOb25lKQpAQCAtMjk2LDcgKzMwNSw3IEBACiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hbWU6CiAgICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9uYW1lX2luZm8oYXJnLCBuYW1lcykKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzanJlbDoKLSAgICAgICAgICAgICAgICBhcmd2YWwgPSBvZmZzZXQgKyAzICsgYXJnCisgICAgICAgICAgICAgICAgYXJndmFsID0gb2Zmc2V0ICsgMiArIGFyZwogICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAidG8gIiArIHJlcHIoYXJndmFsKQogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNsb2NhbDoKICAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBfZ2V0X25hbWVfaW5mbyhhcmcsIHZhcm5hbWVzKQpAQCAtMzA1LDggKzMxNCw2IEBACiAgICAgICAgICAgICAgICAgYXJncmVwciA9IGFyZ3ZhbAogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNmcmVlOgogICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgY2VsbHMpCi0gICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hcmdzOgotICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAiJWQgcG9zaXRpb25hbCwgJWQga2V5d29yZCBwYWlyIiAlIChhcmclMjU2LCBhcmcvLzI1NikKICAgICAgICAgeWllbGQgSW5zdHJ1Y3Rpb24ob3BuYW1lW29wXSwgb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgYXJndmFsLCBhcmdyZXByLAogICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIHN0YXJ0c19saW5lLCBpc19qdW1wX3RhcmdldCkKQEAgLTM0MywyMyArMzUwLDE1IEBACiBkaXNjbyA9IGRpc2Fzc2VtYmxlICAgICAgICAgICAgICAgICAgICAgIyBYWFggRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAKIGRlZiBfdW5wYWNrX29wYXJncyhjb2RlKToKLSAgICAjIGVudW1lcmF0ZSgpIGlzIG5vdCBhbiBvcHRpb24sIHNpbmNlIHdlIHNvbWV0aW1lcyBwcm9jZXNzCi0gICAgIyBtdWx0aXBsZSBlbGVtZW50cyBvbiBhIHNpbmdsZSBwYXNzIHRocm91Z2ggdGhlIGxvb3AKICAgICBleHRlbmRlZF9hcmcgPSAwCi0gICAgbiA9IGxlbihjb2RlKQotICAgIGkgPSAwCi0gICAgd2hpbGUgaSA8IG46CisgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGNvZGUpLCAyKToKICAgICAgICAgb3AgPSBjb2RlW2ldCi0gICAgICAgIG9mZnNldCA9IGkKLSAgICAgICAgaSA9IGkrMQotICAgICAgICBhcmcgPSBOb25lCiAgICAgICAgIGlmIG9wID49IEhBVkVfQVJHVU1FTlQ6Ci0gICAgICAgICAgICBhcmcgPSBjb2RlW2ldICsgY29kZVtpKzFdKjI1NiArIGV4dGVuZGVkX2FyZwotICAgICAgICAgICAgZXh0ZW5kZWRfYXJnID0gMAotICAgICAgICAgICAgaSA9IGkrMgotICAgICAgICAgICAgaWYgb3AgPT0gRVhURU5ERURfQVJHOgotICAgICAgICAgICAgICAgIGV4dGVuZGVkX2FyZyA9IGFyZyo2NTUzNgotICAgICAgICB5aWVsZCAob2Zmc2V0LCBvcCwgYXJnKQorICAgICAgICAgICAgYXJnID0gY29kZVtpKzFdIHwgZXh0ZW5kZWRfYXJnCisgICAgICAgICAgICBleHRlbmRlZF9hcmcgPSAoYXJnIDw8IDgpIGlmIG9wID09IEVYVEVOREVEX0FSRyBlbHNlIDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZyA9IE5vbmUKKyAgICAgICAgeWllbGQgKGksIG9wLCBhcmcpCiAKIGRlZiBmaW5kbGFiZWxzKGNvZGUpOgogICAgICIiIkRldGVjdCBhbGwgb2Zmc2V0cyBpbiBhIGJ5dGUgY29kZSB3aGljaCBhcmUganVtcCB0YXJnZXRzLgpAQCAtMzcwLDE0ICszNjksMTQgQEAKICAgICBsYWJlbHMgPSBbXQogICAgIGZvciBvZmZzZXQsIG9wLCBhcmcgaW4gX3VucGFja19vcGFyZ3MoY29kZSk6CiAgICAgICAgIGlmIGFyZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxhYmVsID0gLTEKICAgICAgICAgICAgIGlmIG9wIGluIGhhc2pyZWw6Ci0gICAgICAgICAgICAgICAgbGFiZWwgPSBvZmZzZXQgKyAzICsgYXJnCisgICAgICAgICAgICAgICAgbGFiZWwgPSBvZmZzZXQgKyAyICsgYXJnCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2phYnM6CiAgICAgICAgICAgICAgICAgbGFiZWwgPSBhcmcKLSAgICAgICAgICAgIGlmIGxhYmVsID49IDA6Ci0gICAgICAgICAgICAgICAgaWYgbGFiZWwgbm90IGluIGxhYmVsczoKLSAgICAgICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChsYWJlbCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGxhYmVsIG5vdCBpbiBsYWJlbHM6CisgICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChsYWJlbCkKICAgICByZXR1cm4gbGFiZWxzCiAKIGRlZiBmaW5kbGluZXN0YXJ0cyhjb2RlKToKQEAgLTM4Niw4ICszODUsOCBAQAogICAgIEdlbmVyYXRlIHBhaXJzIChvZmZzZXQsIGxpbmVubykgYXMgZGVzY3JpYmVkIGluIFB5dGhvbi9jb21waWxlLmMuCiAKICAgICAiIiIKLSAgICBieXRlX2luY3JlbWVudHMgPSBsaXN0KGNvZGUuY29fbG5vdGFiWzA6OjJdKQotICAgIGxpbmVfaW5jcmVtZW50cyA9IGxpc3QoY29kZS5jb19sbm90YWJbMTo6Ml0pCisgICAgYnl0ZV9pbmNyZW1lbnRzID0gY29kZS5jb19sbm90YWJbMDo6Ml0KKyAgICBsaW5lX2luY3JlbWVudHMgPSBjb2RlLmNvX2xub3RhYlsxOjoyXQogCiAgICAgbGFzdGxpbmVubyA9IE5vbmUKICAgICBsaW5lbm8gPSBjb2RlLmNvX2ZpcnN0bGluZW5vCkBAIC0zOTgsNiArMzk3LDkgQEAKICAgICAgICAgICAgICAgICB5aWVsZCAoYWRkciwgbGluZW5vKQogICAgICAgICAgICAgICAgIGxhc3RsaW5lbm8gPSBsaW5lbm8KICAgICAgICAgICAgIGFkZHIgKz0gYnl0ZV9pbmNyCisgICAgICAgIGlmIGxpbmVfaW5jciA+PSAweDgwOgorICAgICAgICAgICAgIyBsaW5lX2luY3JlbWVudHMgaXMgYW4gYXJyYXkgb2YgOC1iaXQgc2lnbmVkIGludGVnZXJzCisgICAgICAgICAgICBsaW5lX2luY3IgLT0gMHgxMDAKICAgICAgICAgbGluZW5vICs9IGxpbmVfaW5jcgogICAgIGlmIGxpbmVubyAhPSBsYXN0bGluZW5vOgogICAgICAgICB5aWVsZCAoYWRkciwgbGluZW5vKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQppbmRleCBiZWQxMzg0Li43OGFlNTc1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihkaXJwYXRoLCBuYW1lKSkKICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICAgICB6aXAud3JpdGUocGF0aCwgcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJhZGRpbmcgJyVzJyIgJSBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oImFkZGluZyAnJXMnIiwgcGF0aCkKICAgICAgICAgICAgIHppcC5jbG9zZSgpCiAKICAgICByZXR1cm4gemlwX2ZpbGVuYW1lCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NtZC5weSBiL0xpYi9kaXN0dXRpbHMvY21kLnB5CmluZGV4IGM4OWQ1ZWYuLjkzOWY3OTUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY21kLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY21kLnB5CkBAIC0yMjEsNyArMjIxLDcgQEAKICAgICAgICAgc2VsZi5fZW5zdXJlX3N0cmluZ2xpa2Uob3B0aW9uLCAic3RyaW5nIiwgZGVmYXVsdCkKIAogICAgIGRlZiBlbnN1cmVfc3RyaW5nX2xpc3Qoc2VsZiwgb3B0aW9uKToKLSAgICAgICAgIiIiRW5zdXJlIHRoYXQgJ29wdGlvbicgaXMgYSBsaXN0IG9mIHN0cmluZ3MuICBJZiAnb3B0aW9uJyBpcworICAgICAgICByIiIiRW5zdXJlIHRoYXQgJ29wdGlvbicgaXMgYSBsaXN0IG9mIHN0cmluZ3MuICBJZiAnb3B0aW9uJyBpcwogICAgICAgICBjdXJyZW50bHkgYSBzdHJpbmcsIHdlIHNwbGl0IGl0IGVpdGhlciBvbiAvLFxzKi8gb3IgL1xzKy8sIHNvCiAgICAgICAgICJmb28gYmFyIGJheiIsICJmb28sYmFyLGJheiIsIGFuZCAiZm9vLCAgIGJhciBiYXoiIGFsbCBiZWNvbWUKICAgICAgICAgWyJmb28iLCAiYmFyIiwgImJheiJdLgpAQCAtMzI5LDggKzMyOSw3IEBACiAgICAgIyAtLSBFeHRlcm5hbCB3b3JsZCBtYW5pcHVsYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIGRlZiB3YXJuKHNlbGYsIG1zZyk6Ci0gICAgICAgIGxvZy53YXJuKCJ3YXJuaW5nOiAlczogJXNcbiIgJQotICAgICAgICAgICAgICAgIChzZWxmLmdldF9jb21tYW5kX25hbWUoKSwgbXNnKSkKKyAgICAgICAgbG9nLndhcm4oIndhcm5pbmc6ICVzOiAlc1xuIiwgc2VsZi5nZXRfY29tbWFuZF9uYW1lKCksIG1zZykKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIGZ1bmMsIGFyZ3MsIG1zZz1Ob25lLCBsZXZlbD0xKToKICAgICAgICAgdXRpbC5leGVjdXRlKGZ1bmMsIGFyZ3MsIG1zZywgZHJ5X3J1bj1zZWxmLmRyeV9ydW4pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CmluZGV4IGYxYmZiMjQuLmU5Mjc0ZDkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgIGluc3RhbGwuc2tpcF9idWlsZCA9IHNlbGYuc2tpcF9idWlsZAogICAgICAgICBpbnN0YWxsLndhcm5fZGlyID0gMAogCi0gICAgICAgIGxvZy5pbmZvKCJpbnN0YWxsaW5nIHRvICVzIiAlIHNlbGYuYmRpc3RfZGlyKQorICAgICAgICBsb2cuaW5mbygiaW5zdGFsbGluZyB0byAlcyIsIHNlbGYuYmRpc3RfZGlyKQogICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCdpbnN0YWxsJykKIAogICAgICAgICAjIEFuZCBtYWtlIGFuIGFyY2hpdmUgcmVsYXRpdmUgdG8gdGhlIHJvb3Qgb2YgdGhlCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X21zaS5weQppbmRleCBiM2NmZTljLi5hNGJkNWE1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9tc2kucHkKQEAgLTE5OSw3ICsxOTksNyBAQAogICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzZWxmLnRhcmdldF92ZXJzaW9uCiAgICAgICAgICAgICBpZiBub3QgdGFyZ2V0X3ZlcnNpb246CiAgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYuc2tpcF9idWlsZCwgIlNob3VsZCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGlzIgotICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gc3lzLnZlcnNpb25bMDozXQorICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgICAgICAgICBwbGF0X3NwZWNpZmllciA9ICIuJXMtJXMiICUgKHNlbGYucGxhdF9uYW1lLCB0YXJnZXRfdmVyc2lvbikKICAgICAgICAgICAgIGJ1aWxkID0gc2VsZi5nZXRfZmluYWxpemVkX2NvbW1hbmQoJ2J1aWxkJykKICAgICAgICAgICAgIGJ1aWxkLmJ1aWxkX2xpYiA9IG9zLnBhdGguam9pbihidWlsZC5idWlsZF9iYXNlLApAQCAtNjIzLDcgKzYyMyw3IEBACiAgICAgICAgIGNvc3QgPSBQeURpYWxvZyhkYiwgIkRpc2tDb3N0RGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIk9LIiwgIk9LIiwgIk9LIiwgYml0bWFwPUZhbHNlKQogICAgICAgICBjb3N0LnRleHQoIlRpdGxlIiwgMTUsIDYsIDIwMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICAie1xEbGdGb250Qm9sZDh9RGlzayBTcGFjZSBSZXF1aXJlbWVudHMiKQorICAgICAgICAgICAgICAgICByIntcRGxnRm9udEJvbGQ4fURpc2sgU3BhY2UgUmVxdWlyZW1lbnRzIikKICAgICAgICAgY29zdC50ZXh0KCJEZXNjcmlwdGlvbiIsIDIwLCAyMCwgMjgwLCAyMCwgMHgzMDAwMywKICAgICAgICAgICAgICAgICAgICJUaGUgZGlzayBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZXMuIikKICAgICAgICAgY29zdC50ZXh0KCJUZXh0IiwgMjAsIDUzLCAzMzAsIDYwLCAzLApAQCAtNjcwLDcgKzY3MCw3IEBACiAgICAgICAgIHByb2dyZXNzID0gUHlEaWFsb2coZGIsICJQcm9ncmVzc0RsZyIsIHgsIHksIHcsIGgsIG1vZGVsZXNzLCB0aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiwgIkNhbmNlbCIsICJDYW5jZWwiLCBiaXRtYXA9RmFsc2UpCiAgICAgICAgIHByb2dyZXNzLnRleHQoIlRpdGxlIiwgMjAsIDE1LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgICAgICJ7XERsZ0ZvbnRCb2xkOH1bUHJvZ3Jlc3MxXSBbUHJvZHVjdE5hbWVdIikKKyAgICAgICAgICAgICAgICAgICAgIHIie1xEbGdGb250Qm9sZDh9W1Byb2dyZXNzMV0gW1Byb2R1Y3ROYW1lXSIpCiAgICAgICAgIHByb2dyZXNzLnRleHQoIlRleHQiLCAzNSwgNjUsIDMwMCwgMzAsIDMsCiAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBJbnN0YWxsZXIgW1Byb2dyZXNzMl0gW1Byb2R1Y3ROYW1lXS4gIgogICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG1heSB0YWtlIHNldmVyYWwgbWludXRlcy4iKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQppbmRleCAwYzBlMmMxLi5kM2UxZDNhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IHNlbGYudGFyZ2V0X3ZlcnNpb24KICAgICAgICAgICAgIGlmIG5vdCB0YXJnZXRfdmVyc2lvbjoKICAgICAgICAgICAgICAgICBhc3NlcnQgc2VsZi5za2lwX2J1aWxkLCAiU2hvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoaXMiCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzeXMudmVyc2lvblswOjNdCisgICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KICAgICAgICAgICAgIHBsYXRfc3BlY2lmaWVyID0gIi4lcy0lcyIgJSAoc2VsZi5wbGF0X25hbWUsIHRhcmdldF92ZXJzaW9uKQogICAgICAgICAgICAgYnVpbGQgPSBzZWxmLmdldF9maW5hbGl6ZWRfY29tbWFuZCgnYnVpbGQnKQogICAgICAgICAgICAgYnVpbGQuYnVpbGRfbGliID0gb3MucGF0aC5qb2luKGJ1aWxkLmJ1aWxkX2Jhc2UsCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKaW5kZXggMzM3ZGQwYi4uYzZmNTJlNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQpAQCAtODEsNyArODEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXBsYXQtbmFtZSBvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzICh0cnkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2luZyAnLi9jb25maWd1cmUgLS1oZWxwJyBvbiB5b3VyIHBsYXRmb3JtKSIpCiAKLSAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVzIiAlIChzZWxmLnBsYXRfbmFtZSwgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVkLiVkIiAlIChzZWxmLnBsYXRfbmFtZSwgKnN5cy52ZXJzaW9uX2luZm9bOjJdKQogCiAgICAgICAgICMgTWFrZSBpdCBzbyBQeXRob24gMi54IGFuZCBQeXRob24gMi54IHdpdGggLS13aXRoLXB5ZGVidWcgZG9uJ3QKICAgICAgICAgIyBzaGFyZSB0aGUgc2FtZSBidWlsZCBkaXJlY3Rvcmllcy4gRG9pbmcgc28gY29uZnVzZXMgdGhlIGJ1aWxkCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVtcCcgKyBwbGF0X3NwZWNpZmllcikKICAgICAgICAgaWYgc2VsZi5idWlsZF9zY3JpcHRzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmJ1aWxkX3NjcmlwdHMgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF9iYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzLScgKyBzeXMudmVyc2lvblswOjNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzLSVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogCiAgICAgICAgIGlmIHNlbGYuZXhlY3V0YWJsZSBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY3V0YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CmluZGV4IDdjMjc4ZWYuLjc0ZGU3ODIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQpAQCAtMzY0LDkgKzM2NCw5IEBACiAKICAgICAgICAgICAgIGV4dF9uYW1lLCBidWlsZF9pbmZvID0gZXh0CiAKLSAgICAgICAgICAgIGxvZy53YXJuKCgib2xkLXN0eWxlIChleHRfbmFtZSwgYnVpbGRfaW5mbykgdHVwbGUgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICJleHRfbW9kdWxlcyBmb3IgZXh0ZW5zaW9uICclcyciCi0gICAgICAgICAgICAgICAgICAgICAgIi0tIHBsZWFzZSBjb252ZXJ0IHRvIEV4dGVuc2lvbiBpbnN0YW5jZSIgJSBleHRfbmFtZSkpCisgICAgICAgICAgICBsb2cud2Fybigib2xkLXN0eWxlIChleHRfbmFtZSwgYnVpbGRfaW5mbykgdHVwbGUgZm91bmQgaW4gIgorICAgICAgICAgICAgICAgICAgICAgImV4dF9tb2R1bGVzIGZvciBleHRlbnNpb24gJyVzJyIKKyAgICAgICAgICAgICAgICAgICAgICItLSBwbGVhc2UgY29udmVydCB0byBFeHRlbnNpb24gaW5zdGFuY2UiLCBleHRfbmFtZSkKIAogICAgICAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKGV4dF9uYW1lLCBzdHIpIGFuZAogICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25fbmFtZV9yZS5tYXRjaChleHRfbmFtZSkpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQppbmRleCA5MGE4MzgwLi5jY2M3MGU2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQpAQCAtNTEsNyArNTEsNyBAQAogCiAKICAgICBkZWYgY29weV9zY3JpcHRzKHNlbGYpOgotICAgICAgICAiIiJDb3B5IGVhY2ggc2NyaXB0IGxpc3RlZCBpbiAnc2VsZi5zY3JpcHRzJzsgaWYgaXQncyBtYXJrZWQgYXMgYQorICAgICAgICByIiIiQ29weSBlYWNoIHNjcmlwdCBsaXN0ZWQgaW4gJ3NlbGYuc2NyaXB0cyc7IGlmIGl0J3MgbWFya2VkIGFzIGEKICAgICAgICAgUHl0aG9uIHNjcmlwdCBpbiB0aGUgVW5peCB3YXkgKGZpcnN0IGxpbmUgbWF0Y2hlcyAnZmlyc3RfbGluZV9yZScsCiAgICAgICAgIGllLiBzdGFydHMgd2l0aCAiXCMhIiBhbmQgY29udGFpbnMgInB5dGhvbiIpLCB0aGVuIGFkanVzdCB0aGUgZmlyc3QKICAgICAgICAgbGluZSB0byByZWZlciB0byB0aGUgY3VycmVudCBQeXRob24gaW50ZXJwcmV0ZXIgYXMgd2UgY29weS4KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvY29uZmlnLnB5CmluZGV4IDg0N2U4NTguLjRhZTE1M2QgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2NvbmZpZy5weQpAQCAtOSw3ICs5LDcgQEAKIHRoaXMgaGVhZGVyIGZpbGUgbGl2ZXMiLgogIiIiCiAKLWltcG9ydCBzeXMsIG9zLCByZQoraW1wb3J0IG9zLCByZQogCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBDb21tYW5kCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgpAQCAtMzM3LDcgKzMzNyw3IEBACiAgICAgSWYgaGVhZCBpcyBub3QgTm9uZSwgd2lsbCBiZSBkdW1wZWQgYmVmb3JlIHRoZSBmaWxlIGNvbnRlbnQuCiAgICAgIiIiCiAgICAgaWYgaGVhZCBpcyBOb25lOgotICAgICAgICBsb2cuaW5mbygnJXMnICUgZmlsZW5hbWUpCisgICAgICAgIGxvZy5pbmZvKCclcycsIGZpbGVuYW1lKQogICAgIGVsc2U6CiAgICAgICAgIGxvZy5pbmZvKGhlYWQpCiAgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CmluZGV4IDY3ZGIwMDcuLjAyNThkM2RlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQpAQCAtMTc1LDYgKzE3NSw3IEBACiAgICAgICAgIHNlbGYuY29tcGlsZSA9IE5vbmUKICAgICAgICAgc2VsZi5vcHRpbWl6ZSA9IE5vbmUKIAorICAgICAgICAjIERlcHJlY2F0ZWQKICAgICAgICAgIyBUaGVzZSB0d28gYXJlIGZvciBwdXR0aW5nIG5vbi1wYWNrYWdpemVkIGRpc3RyaWJ1dGlvbnMgaW50byB0aGVpcgogICAgICAgICAjIG93biBkaXJlY3RvcnkgYW5kIGNyZWF0aW5nIGEgLnB0aCBmaWxlIGlmIGl0IG1ha2VzIHNlbnNlLgogICAgICAgICAjICdleHRyYV9wYXRoJyBjb21lcyBmcm9tIHRoZSBzZXR1cCBmaWxlOyAnaW5zdGFsbF9wYXRoX2ZpbGUnIGNhbgpAQCAtMjkwLDggKzI5MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RfdmVyc2lvbic6IHNlbGYuZGlzdHJpYnV0aW9uLmdldF92ZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RfZnVsbG5hbWUnOiBzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfZnVsbG5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbic6IHB5X3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fc2hvcnQnOiBweV92ZXJzaW9uWzA6M10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fbm9kb3QnOiBweV92ZXJzaW9uWzBdICsgcHlfdmVyc2lvblsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9zaG9ydCc6ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9ub2RvdCc6ICclZCVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXNfcHJlZml4JzogcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmVmaXgnOiBwcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c19leGVjX3ByZWZpeCc6IGV4ZWNfcHJlZml4LApAQCAtMzQ0LDYgKzM0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cycsICdkYXRhJywgJ2hlYWRlcnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJiYXNlJywgJ3VzZXJzaXRlJykKIAorICAgICAgICAjIERlcHJlY2F0ZWQKICAgICAgICAgIyBXZWxsLCB3ZSdyZSBub3QgYWN0dWFsbHkgZnVsbHkgY29tcGxldGVseSBmaW5hbGl6ZWQgeWV0OiB3ZSBzdGlsbAogICAgICAgICAjIGhhdmUgdG8gZGVhbCB3aXRoICdleHRyYV9wYXRoJywgd2hpY2ggaXMgdGhlIGhhY2sgZm9yIGFsbG93aW5nCiAgICAgICAgICMgbm9uLXBhY2thZ2l6ZWQgbW9kdWxlIGRpc3RyaWJ1dGlvbnMgKGhlbGxvLCBOdW1lcmljYWwgUHl0aG9uISkgdG8KQEAgLTM4NSw3ICszODcsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBvcHRfbmFtZSA9IG9wdF9uYW1lLnRyYW5zbGF0ZShsb25nb3B0X3hsYXRlKQogICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIoc2VsZiwgb3B0X25hbWUpCi0gICAgICAgICAgICBsb2cuZGVidWcoIiAgJXM6ICVzIiAlIChvcHRfbmFtZSwgdmFsKSkKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiICAlczogJXMiLCBvcHRfbmFtZSwgdmFsKQogCiAgICAgZGVmIGZpbmFsaXplX3VuaXgoc2VsZik6CiAgICAgICAgICIiIkZpbmFsaXplcyBvcHRpb25zIGZvciBwb3NpeCBwbGF0Zm9ybXMuIiIiCkBAIC00OTAsNiArNDkyLDEwIEBACiAgICAgICAgICAgICBzZWxmLmV4dHJhX3BhdGggPSBzZWxmLmRpc3RyaWJ1dGlvbi5leHRyYV9wYXRoCiAKICAgICAgICAgaWYgc2VsZi5leHRyYV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9nLndhcm4oCisgICAgICAgICAgICAgICAgIkRpc3RyaWJ1dGlvbiBvcHRpb24gZXh0cmFfcGF0aCBpcyBkZXByZWNhdGVkLiAiCisgICAgICAgICAgICAgICAgIlNlZSBpc3N1ZTI3OTE5IGZvciBkZXRhaWxzLiIKKyAgICAgICAgICAgICkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5leHRyYV9wYXRoLCBzdHIpOgogICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFfcGF0aCA9IHNlbGYuZXh0cmFfcGF0aC5zcGxpdCgnLCcpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2VnZ19pbmZvLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKaW5kZXggYzJhN2Q2NC4uMGRkYzczNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKQEAgLTIxLDEwICsyMSwxMCBAQAogCiAgICAgZGVmIGZpbmFsaXplX29wdGlvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuc2V0X3VuZGVmaW5lZF9vcHRpb25zKCdpbnN0YWxsX2xpYicsKCdpbnN0YWxsX2RpcicsJ2luc3RhbGxfZGlyJykpCi0gICAgICAgIGJhc2VuYW1lID0gIiVzLSVzLXB5JXMuZWdnLWluZm8iICUgKAorICAgICAgICBiYXNlbmFtZSA9ICIlcy0lcy1weSVkLiVkLmVnZy1pbmZvIiAlICgKICAgICAgICAgICAgIHRvX2ZpbGVuYW1lKHNhZmVfbmFtZShzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfbmFtZSgpKSksCiAgICAgICAgICAgICB0b19maWxlbmFtZShzYWZlX3ZlcnNpb24oc2VsZi5kaXN0cmlidXRpb24uZ2V0X3ZlcnNpb24oKSkpLAotICAgICAgICAgICAgc3lzLnZlcnNpb25bOjNdCisgICAgICAgICAgICAqc3lzLnZlcnNpb25faW5mb1s6Ml0KICAgICAgICAgKQogICAgICAgICBzZWxmLnRhcmdldCA9IG9zLnBhdGguam9pbihzZWxmLmluc3RhbGxfZGlyLCBiYXNlbmFtZSkKICAgICAgICAgc2VsZi5vdXRwdXRzID0gW3NlbGYudGFyZ2V0XQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5CmluZGV4IDg2MzQzYzguLjBmYWM5NGUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9yZWdpc3Rlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvcmVnaXN0ZXIucHkKQEAgLTUsNyArNSw3IEBACiAKICMgY3JlYXRlZCAyMDAyLzEwLzIxLCBSaWNoYXJkIEpvbmVzCiAKLWltcG9ydCBvcywgc3RyaW5nLCBnZXRwYXNzCitpbXBvcnQgZ2V0cGFzcwogaW1wb3J0IGlvCiBpbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdAogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICAnJycKICAgICAgICAgIyBzZW5kIHRoZSBpbmZvIHRvIHRoZSBzZXJ2ZXIgYW5kIHJlcG9ydCB0aGUgcmVzdWx0CiAgICAgICAgIChjb2RlLCByZXN1bHQpID0gc2VsZi5wb3N0X3RvX3NlcnZlcihzZWxmLmJ1aWxkX3Bvc3RfZGF0YSgndmVyaWZ5JykpCi0gICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnICUgKGNvZGUsIHJlc3VsdCkpCisgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnLCBjb2RlLCByZXN1bHQpCiAKICAgICBkZWYgc2VuZF9tZXRhZGF0YShzZWxmKToKICAgICAgICAgJycnIFNlbmQgdGhlIG1ldGFkYXRhIHRvIHRoZSBwYWNrYWdlIGluZGV4IHNlcnZlci4KQEAgLTIwNSw3ICsyMDUsNyBAQAogICAgICAgICAgICAgICAgIGRhdGFbJ2VtYWlsJ10gPSBpbnB1dCgnICAgRU1haWw6ICcpCiAgICAgICAgICAgICBjb2RlLCByZXN1bHQgPSBzZWxmLnBvc3RfdG9fc2VydmVyKGRhdGEpCiAgICAgICAgICAgICBpZiBjb2RlICE9IDIwMDoKLSAgICAgICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJyAlIChjb2RlLCByZXN1bHQpKQorICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnLCBjb2RlLCByZXN1bHQpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdZb3Ugd2lsbCByZWNlaXZlIGFuIGVtYWlsIHNob3J0bHkuJykKICAgICAgICAgICAgICAgICBsb2cuaW5mbygoJ0ZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIGl0IHRvICcKQEAgLTIxNiw3ICsyMTYsNyBAQAogICAgICAgICAgICAgd2hpbGUgbm90IGRhdGFbJ2VtYWlsJ106CiAgICAgICAgICAgICAgICAgZGF0YVsnZW1haWwnXSA9IGlucHV0KCdZb3VyIGVtYWlsIGFkZHJlc3M6ICcpCiAgICAgICAgICAgICBjb2RlLCByZXN1bHQgPSBzZWxmLnBvc3RfdG9fc2VydmVyKGRhdGEpCi0gICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJyAlIChjb2RlLCByZXN1bHQpKQorICAgICAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycsIGNvZGUsIHJlc3VsdCkKIAogICAgIGRlZiBidWlsZF9wb3N0X2RhdGEoc2VsZiwgYWN0aW9uKToKICAgICAgICAgIyBmaWd1cmUgdGhlIGRhdGEgdG8gc2VuZCAtIHRoZSBtZXRhZGF0YSBwbHVzIHNvbWUgYWRkaXRpb25hbApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5CmluZGV4IDdlYTNkNWYuLjRmZDFkNDcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9zZGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvc2Rpc3QucHkKQEAgLTMsNyArMyw2IEBACiBJbXBsZW1lbnRzIHRoZSBEaXN0dXRpbHMgJ3NkaXN0JyBjb21tYW5kIChjcmVhdGUgYSBzb3VyY2UgZGlzdHJpYnV0aW9uKS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCAqCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKQEAgLTkyLDkgKzkxLDYgQEAKICAgICBuZWdhdGl2ZV9vcHQgPSB7J25vLWRlZmF1bHRzJzogJ3VzZS1kZWZhdWx0cycsCiAgICAgICAgICAgICAgICAgICAgICduby1wcnVuZSc6ICdwcnVuZScgfQogCi0gICAgZGVmYXVsdF9mb3JtYXQgPSB7J3Bvc2l4JzogJ2d6dGFyJywKLSAgICAgICAgICAgICAgICAgICAgICAnbnQnOiAnemlwJyB9Ci0KICAgICBzdWJfY29tbWFuZHMgPSBbKCdjaGVjaycsIGNoZWNraW5nX21ldGFkYXRhKV0KIAogICAgIGRlZiBpbml0aWFsaXplX29wdGlvbnMoc2VsZik6CkBAIC0xMTEsNyArMTA3LDcgQEAKICAgICAgICAgc2VsZi5tYW5pZmVzdF9vbmx5ID0gMAogICAgICAgICBzZWxmLmZvcmNlX21hbmlmZXN0ID0gMAogCi0gICAgICAgIHNlbGYuZm9ybWF0cyA9IE5vbmUKKyAgICAgICAgc2VsZi5mb3JtYXRzID0gWydnenRhciddCiAgICAgICAgIHNlbGYua2VlcF90ZW1wID0gMAogICAgICAgICBzZWxmLmRpc3RfZGlyID0gTm9uZQogCkBAIC0xMjcsMTMgKzEyMyw2IEBACiAgICAgICAgICAgICBzZWxmLnRlbXBsYXRlID0gIk1BTklGRVNULmluIgogCiAgICAgICAgIHNlbGYuZW5zdXJlX3N0cmluZ19saXN0KCdmb3JtYXRzJykKLSAgICAgICAgaWYgc2VsZi5mb3JtYXRzIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5mb3JtYXRzID0gW3NlbGYuZGVmYXVsdF9mb3JtYXRbb3MubmFtZV1dCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3Qga25vdyBob3cgdG8gY3JlYXRlIHNvdXJjZSBkaXN0cmlidXRpb25zICIKLSAgICAgICAgICAgICAgICAgICAgICAib24gcGxhdGZvcm0gJXMiICUgb3MubmFtZSkKIAogICAgICAgICBiYWRfZm9ybWF0ID0gYXJjaGl2ZV91dGlsLmNoZWNrX2FyY2hpdmVfZm9ybWF0cyhzZWxmLmZvcm1hdHMpCiAgICAgICAgIGlmIGJhZF9mb3JtYXQ6CkBAIC00MjMsNyArNDEyLDcgQEAKICAgICAgICAgICAgIGxvZy5pbmZvKG1zZykKICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoZmlsZSk6Ci0gICAgICAgICAgICAgICAgbG9nLndhcm4oIiclcycgbm90IGEgcmVndWxhciBmaWxlIC0tIHNraXBwaW5nIiAlIGZpbGUpCisgICAgICAgICAgICAgICAgbG9nLndhcm4oIiclcycgbm90IGEgcmVndWxhciBmaWxlIC0tIHNraXBwaW5nIiwgZmlsZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgZmlsZSkKICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShmaWxlLCBkZXN0LCBsaW5rPWxpbmspCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvcmUucHkgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKaW5kZXggZjA1YjM0Yi4uZDYwM2Q0YSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29yZS5weQpAQCAtMjA0LDE2ICsyMDQsMTUgQEAKICAgICBnbG9iYWwgX3NldHVwX3N0b3BfYWZ0ZXIsIF9zZXR1cF9kaXN0cmlidXRpb24KICAgICBfc2V0dXBfc3RvcF9hZnRlciA9IHN0b3BfYWZ0ZXIKIAotICAgIHNhdmVfYXJndiA9IHN5cy5hcmd2CisgICAgc2F2ZV9hcmd2ID0gc3lzLmFyZ3YuY29weSgpCiAgICAgZyA9IHsnX19maWxlX18nOiBzY3JpcHRfbmFtZX0KLSAgICBsID0ge30KICAgICB0cnk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5hcmd2WzBdID0gc2NyaXB0X25hbWUKICAgICAgICAgICAgIGlmIHNjcmlwdF9hcmdzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHN5cy5hcmd2WzE6XSA9IHNjcmlwdF9hcmdzCiAgICAgICAgICAgICB3aXRoIG9wZW4oc2NyaXB0X25hbWUsICdyYicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwgZywgbCkKKyAgICAgICAgICAgICAgICBleGVjKGYucmVhZCgpLCBnKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLmFyZ3YgPSBzYXZlX2FyZ3YKICAgICAgICAgICAgIF9zZXR1cF9zdG9wX2FmdGVyID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQppbmRleCBjODc5NjQ2Li4xYzM2OTkwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQpAQCAtMzY4LDcgKzM2OCw3IEBACiAgICAgICAgIHJldHVybiAoQ09ORklHX0hfVU5DRVJUQUlOLAogICAgICAgICAgICAgICAgICJjb3VsZG4ndCByZWFkICclcyc6ICVzIiAlIChmbiwgZXhjLnN0cmVycm9yKSkKIAotUkVfVkVSU0lPTiA9IHJlLmNvbXBpbGUoYicoXGQrXC5cZCsoXC5cZCspKiknKQorUkVfVkVSU0lPTiA9IHJlLmNvbXBpbGUoYnInKFxkK1wuXGQrKFwuXGQrKSopJykKIAogZGVmIF9maW5kX2V4ZV92ZXJzaW9uKGNtZCk6CiAgICAgIiIiRmluZCB0aGUgdmVyc2lvbiBvZiBhbiBleGVjdXRhYmxlIGJ5IHJ1bm5pbmcgYGNtZGAgaW4gdGhlIHNoZWxsLgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9kaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9kaXN0LnB5CmluZGV4IGZmYjMzZmY2Li42MmEyNDUxIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2Rpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9kaXN0LnB5CkBAIC0xMDE4LDggKzEwMTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJtYWludGFpbmVyIiwgIm1haW50YWluZXJfZW1haWwiLCAidXJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibGljZW5zZSIsICJkZXNjcmlwdGlvbiIsICJsb25nX2Rlc2NyaXB0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMiLCAicGxhdGZvcm1zIiwgImZ1bGxuYW1lIiwgImNvbnRhY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJjb250YWN0X2VtYWlsIiwgImxpY2Vuc2UiLCAiY2xhc3NpZmllcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJkb3dubG9hZF91cmwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb250YWN0X2VtYWlsIiwgImNsYXNzaWZpZXJzIiwgImRvd25sb2FkX3VybCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQRVAgMzE0CiAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3ZpZGVzIiwgInJlcXVpcmVzIiwgIm9ic29sZXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkgYi9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weQppbmRleCA3ZWZiYjc0Li5jNTA3ZGEzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weQorKysgYi9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weQpAQCAtNCw3ICs0LDYgQEAKIG1vZHVsZXMgaW4gc2V0dXAgc2NyaXB0cy4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKIAogIyBUaGlzIGNsYXNzIGlzIHJlYWxseSBvbmx5IHVzZWQgYnkgdGhlICJidWlsZF9leHQiIGNvbW1hbmQsIHNvIGl0IG1pZ2h0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9maWxlbGlzdC5weQppbmRleCA2NTIyZTY5Li5jOTJkNWZkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkKQEAgLTMwMiwyMSArMzAyLDI2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gcGF0dGVybgogCisgICAgIyBkaXRjaCBzdGFydCBhbmQgZW5kIGNoYXJhY3RlcnMKKyAgICBzdGFydCwgXywgZW5kID0gZ2xvYl90b19yZSgnXycpLnBhcnRpdGlvbignXycpCisKICAgICBpZiBwYXR0ZXJuOgogICAgICAgICBwYXR0ZXJuX3JlID0gZ2xvYl90b19yZShwYXR0ZXJuKQorICAgICAgICBhc3NlcnQgcGF0dGVybl9yZS5zdGFydHN3aXRoKHN0YXJ0KSBhbmQgcGF0dGVybl9yZS5lbmRzd2l0aChlbmQpCiAgICAgZWxzZToKICAgICAgICAgcGF0dGVybl9yZSA9ICcnCiAKICAgICBpZiBwcmVmaXggaXMgbm90IE5vbmU6Ci0gICAgICAgICMgZGl0Y2ggZW5kIG9mIHBhdHRlcm4gY2hhcmFjdGVyCi0gICAgICAgIGVtcHR5X3BhdHRlcm4gPSBnbG9iX3RvX3JlKCcnKQotICAgICAgICBwcmVmaXhfcmUgPSBnbG9iX3RvX3JlKHByZWZpeClbOi1sZW4oZW1wdHlfcGF0dGVybildCisgICAgICAgIHByZWZpeF9yZSA9IGdsb2JfdG9fcmUocHJlZml4KQorICAgICAgICBhc3NlcnQgcHJlZml4X3JlLnN0YXJ0c3dpdGgoc3RhcnQpIGFuZCBwcmVmaXhfcmUuZW5kc3dpdGgoZW5kKQorICAgICAgICBwcmVmaXhfcmUgPSBwcmVmaXhfcmVbbGVuKHN0YXJ0KTogbGVuKHByZWZpeF9yZSkgLSBsZW4oZW5kKV0KICAgICAgICAgc2VwID0gb3Muc2VwCiAgICAgICAgIGlmIG9zLnNlcCA9PSAnXFwnOgogICAgICAgICAgICAgc2VwID0gcidcXCcKLSAgICAgICAgcGF0dGVybl9yZSA9ICJeIiArIHNlcC5qb2luKChwcmVmaXhfcmUsICIuKiIgKyBwYXR0ZXJuX3JlKSkKKyAgICAgICAgcGF0dGVybl9yZSA9IHBhdHRlcm5fcmVbbGVuKHN0YXJ0KTogbGVuKHBhdHRlcm5fcmUpIC0gbGVuKGVuZCldCisgICAgICAgIHBhdHRlcm5fcmUgPSByJyVzXEElcyVzLiolcyVzJyAlIChzdGFydCwgcHJlZml4X3JlLCBzZXAsIHBhdHRlcm5fcmUsIGVuZCkKICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vIHByZWZpeCAtLSByZXNwZWN0IGFuY2hvciBmbGFnCiAgICAgICAgIGlmIGFuY2hvcjoKLSAgICAgICAgICAgIHBhdHRlcm5fcmUgPSAiXiIgKyBwYXR0ZXJuX3JlCisgICAgICAgICAgICBwYXR0ZXJuX3JlID0gciclc1xBJXMnICUgKHN0YXJ0LCBwYXR0ZXJuX3JlW2xlbihzdGFydCk6XSkKIAogICAgIHJldHVybiByZS5jb21waWxlKHBhdHRlcm5fcmUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKaW5kZXggMGIxZmQxOS4uMjExOTEyNyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQpAQCAtNzE2LDcgKzcxNiw3IEBACiAgICAgICAgICAgICAgICAgciIiIlZDXGR7Mn1cLkNSVCgifCcpLio/KC8+fDwvYXNzZW1ibHlJZGVudGl0eT4pIiIiLAogICAgICAgICAgICAgICAgIHJlLkRPVEFMTCkKICAgICAgICAgICAgIG1hbmlmZXN0X2J1ZiA9IHJlLnN1YihwYXR0ZXJuLCAiIiwgbWFuaWZlc3RfYnVmKQotICAgICAgICAgICAgcGF0dGVybiA9ICI8ZGVwZW5kZW50QXNzZW1ibHk+XHMqPC9kZXBlbmRlbnRBc3NlbWJseT4iCisgICAgICAgICAgICBwYXR0ZXJuID0gciI8ZGVwZW5kZW50QXNzZW1ibHk+XHMqPC9kZXBlbmRlbnRBc3NlbWJseT4iCiAgICAgICAgICAgICBtYW5pZmVzdF9idWYgPSByZS5zdWIocGF0dGVybiwgIiIsIG1hbmlmZXN0X2J1ZikKICAgICAgICAgICAgICMgTm93IHNlZSBpZiBhbnkgb3RoZXIgYXNzZW1ibGllcyBhcmUgcmVmZXJlbmNlZCAtIGlmIG5vdCwgd2UKICAgICAgICAgICAgICMgZG9uJ3Qgd2FudCBhIG1hbmlmZXN0IGVtYmVkZGVkLgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQppbmRleCA1NzM3MjRkLi44YmYxYTcwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQpAQCAtNzAsNyArNzAsNyBAQAogICAgIGxlYXZpbmcgb2ZmIHRoZSBwYXRjaGxldmVsLiAgU2FtcGxlIHJldHVybiB2YWx1ZXMgY291bGQgYmUgJzEuNScKICAgICBvciAnMi4yJy4KICAgICAiIiIKLSAgICByZXR1cm4gc3lzLnZlcnNpb25bOjNdCisgICAgcmV0dXJuICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogCiAKIGRlZiBnZXRfcHl0aG9uX2luYyhwbGF0X3NwZWNpZmljPTAsIHByZWZpeD1Ob25lKToKQEAgLTI0Miw2ICsyNDIsOCBAQAogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBwcm9qZWN0X2Jhc2UsICJNYWtlZmlsZSIpCiAgICAgbGliX2RpciA9IGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTEpCiAgICAgY29uZmlnX2ZpbGUgPSAnY29uZmlnLXt9e30nLmZvcm1hdChnZXRfcHl0aG9uX3ZlcnNpb24oKSwgYnVpbGRfZmxhZ3MpCisgICAgaWYgaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJyk6CisgICAgICAgIGNvbmZpZ19maWxlICs9ICctJXMnICUgc3lzLmltcGxlbWVudGF0aW9uLl9tdWx0aWFyY2gKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGxpYl9kaXIsIGNvbmZpZ19maWxlLCAnTWFrZWZpbGUnKQogCiAKQEAgLTI3Niw3ICsyNzgsNyBAQAogCiAjIFJlZ2V4ZXMgbmVlZGVkIGZvciBwYXJzaW5nIE1ha2VmaWxlIChhbmQgc2ltaWxhciBzeW50YXhlcywKICMgbGlrZSBvbGQtc3R5bGUgU2V0dXAgZmlsZXMpLgotX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZSgiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCitfdmFyaWFibGVfcnggPSByZS5jb21waWxlKHIiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCiBfZmluZHZhcjFfcnggPSByZS5jb21waWxlKHIiXCRcKChbQS1aYS16XVtBLVphLXowLTlfXSopXCkiKQogX2ZpbmR2YXIyX3J4ID0gcmUuY29tcGlsZShyIlwkeyhbQS1aYS16XVtBLVphLXowLTlfXSopfSIpCiAKQEAgLTQxNSwzOCArNDE3LDE4IEBACiAKIGRlZiBfaW5pdF9wb3NpeCgpOgogICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKLSAgICBnID0ge30KLSAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBNYWtlZmlsZToKLSAgICB0cnk6Ci0gICAgICAgIGZpbGVuYW1lID0gZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKLSAgICAgICAgcGFyc2VfbWFrZWZpbGUoZmlsZW5hbWUsIGcpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgotICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQotICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6Ci0gICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCi0KLSAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihteV9tc2cpCi0KLSAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBweWNvbmZpZy5oOgotICAgIHRyeToKLSAgICAgICAgZmlsZW5hbWUgPSBnZXRfY29uZmlnX2hfZmlsZW5hbWUoKQotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZpbGU6Ci0gICAgICAgICAgICBwYXJzZV9jb25maWdfaChmaWxlLCBnKQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKLSAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKLSAgICAgICAgaWYgaGFzYXR0cihtc2csICJzdHJlcnJvciIpOgotICAgICAgICAgICAgbXlfbXNnID0gbXlfbXNnICsgIiAoJXMpIiAlIG1zZy5zdHJlcnJvcgotCi0gICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IobXlfbXNnKQotCi0gICAgIyBPbiBBSVgsIHRoZXJlIGFyZSB3cm9uZyBwYXRocyB0byB0aGUgbGlua2VyIHNjcmlwdHMgaW4gdGhlIE1ha2VmaWxlCi0gICAgIyAtLSB0aGVzZSBwYXRocyBhcmUgcmVsYXRpdmUgdG8gdGhlIFB5dGhvbiBzb3VyY2UsIGJ1dCB3aGVuIGluc3RhbGxlZAotICAgICMgdGhlIHNjcmlwdHMgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LgotICAgIGlmIHB5dGhvbl9idWlsZDoKLSAgICAgICAgZ1snTERTSEFSRUQnXSA9IGdbJ0JMRFNIQVJFRCddCi0KKyAgICAjIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBzZWUgdGhlIHN5c2NvbmZpZyBtb2R1bGUKKyAgICBuYW1lID0gb3MuZW52aXJvbi5nZXQoJ19QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FJywKKyAgICAgICAgJ19zeXNjb25maWdkYXRhX3thYml9X3twbGF0Zm9ybX1fe211bHRpYXJjaH0nLmZvcm1hdCgKKyAgICAgICAgYWJpPXN5cy5hYmlmbGFncywKKyAgICAgICAgcGxhdGZvcm09c3lzLnBsYXRmb3JtLAorICAgICAgICBtdWx0aWFyY2g9Z2V0YXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJywgJycpLAorICAgICkpCisgICAgX3RlbXAgPSBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFsnYnVpbGRfdGltZV92YXJzJ10sIDApCisgICAgYnVpbGRfdGltZV92YXJzID0gX3RlbXAuYnVpbGRfdGltZV92YXJzCiAgICAgZ2xvYmFsIF9jb25maWdfdmFycwotICAgIF9jb25maWdfdmFycyA9IGcKKyAgICBfY29uZmlnX3ZhcnMgPSB7fQorICAgIF9jb25maWdfdmFycy51cGRhdGUoYnVpbGRfdGltZV92YXJzKQogCiAKIGRlZiBfaW5pdF9udCgpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKaW5kZXggMjVjMTRhYi4uYzFhMmEwNCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CkBAIC0zLDE2ICszLDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBvcwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc2h1dGlsCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IERpc3RyaWJ1dGlvbgogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5iZGlzdF9ycG0gaW1wb3J0IGJkaXN0X3JwbQogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKLWZyb20gZGlzdHV0aWxzIGltcG9ydCBzcGF3bgotZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNFeGVjRXJyb3IKIAogU0VUVVBfUFkgPSAiIiJcCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5CmluZGV4IDMzOTFmMzYuLmIwMjBhNWIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgIyBidWlsZF9wbGF0bGliIGlzICdidWlsZC9saWIucGxhdGZvcm0teC54Wy1weWRlYnVnXScKICAgICAgICAgIyBleGFtcGxlczoKICAgICAgICAgIyAgIGJ1aWxkL2xpYi5tYWNvc3gtMTAuMy1pMzg2LTIuNwotICAgICAgICBwbGF0X3NwZWMgPSAnLiVzLSVzJyAlIChjbWQucGxhdF9uYW1lLCBzeXMudmVyc2lvblswOjNdKQorICAgICAgICBwbGF0X3NwZWMgPSAnLiVzLSVkLiVkJyAlIChjbWQucGxhdF9uYW1lLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtZC5idWlsZF9wbGF0bGliLmVuZHN3aXRoKCctcHlkZWJ1ZycpKQogICAgICAgICAgICAgcGxhdF9zcGVjICs9ICctcHlkZWJ1ZycKQEAgLTQyLDcgKzQyLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuYnVpbGRfdGVtcCwgd2FudGVkKQogCiAgICAgICAgICMgYnVpbGRfc2NyaXB0cyBpcyBidWlsZC9zY3JpcHRzLXgueAotICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oY21kLmJ1aWxkX2Jhc2UsICdzY3JpcHRzLScgKyAgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKGNtZC5idWlsZF9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdHMtJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLmJ1aWxkX3NjcmlwdHMsIHdhbnRlZCkKIAogICAgICAgICAjIGV4ZWN1dGFibGUgaXMgb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY3V0YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CmluZGV4IGYzZGY1NjQuLjZiZTBjYTIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQpAQCAtMTY2LDcgKzE2Niw2IEBACiAgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKIAotICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCiAgICAgICAgIHB5X2luY2x1ZGUgPSBzeXNjb25maWcuZ2V0X3B5dGhvbl9pbmMoKQogICAgICAgICBzZWxmLmFzc2VydEluKHB5X2luY2x1ZGUsIGNtZC5pbmNsdWRlX2RpcnMpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQppbmRleCAxODI4M2RjLi4wNzEyZTkyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CkBAIC0xNjgsNyArMTY4LDggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gb2xkX2RvbnRfd3JpdGVfYnl0ZWNvZGUKIAotICAgICAgICBzZWxmLmFzc2VydEluKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZCcsIHNlbGYubG9nc1swXVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nc1swXVsxXSAlIHNlbGYubG9nc1swXVsyXSkKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5CmluZGV4IGI2NGYzMDAuLmM2MDVhZmQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jbGVhbi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuY2xlYW4uIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGdldHBhc3MKIAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5jbGVhbiBpbXBvcnQgY2xlYW4KIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weQppbmRleCBhMzg0NDk3Li43N2VmNzg4IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnB5cGlyYy5weXBpcmMuIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCiAKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IFB5UElSQ0NvbW1hbmQKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IERpc3RyaWJ1dGlvbgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvcmUucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29yZS5weQppbmRleCA2NTQyMjdjLi4yN2NlNzMyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29yZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29yZS5weQpAQCAtMjksNiArMjksMjEgQEAKIHNldHVwKCkKICIiIgogCitzZXR1cF9kb2VzX25vdGhpbmcgPSAiIiJcCitmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cAorc2V0dXAoKQorIiIiCisKKworc2V0dXBfZGVmaW5lc19zdWJjbGFzcyA9ICIiIlwKK2Zyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwCitmcm9tIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGwgaW1wb3J0IGluc3RhbGwgYXMgX2luc3RhbGwKKworY2xhc3MgaW5zdGFsbChfaW5zdGFsbCk6CisgICAgc3ViX2NvbW1hbmRzID0gX2luc3RhbGwuc3ViX2NvbW1hbmRzICsgWydjbWQnXQorCitzZXR1cChjbWRjbGFzcz17J2luc3RhbGwnOiBpbnN0YWxsfSkKKyIiIgogCiBjbGFzcyBDb3JlVGVzdENhc2Uoc3VwcG9ydC5FbnZpcm9uR3VhcmQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNjcsNiArODIsMjEgQEAKICAgICAgICAgZGlzdHV0aWxzLmNvcmUucnVuX3NldHVwKAogICAgICAgICAgICAgc2VsZi53cml0ZV9zZXR1cChzZXR1cF91c2luZ19fX2ZpbGVfXykpCiAKKyAgICBkZWYgdGVzdF9ydW5fc2V0dXBfcHJlc2VydmVzX3N5c19hcmd2KHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSBydW5fc2V0dXAgZG9lcyBub3QgY2xvYmJlciBzeXMuYXJndgorICAgICAgICBhcmd2X2NvcHkgPSBzeXMuYXJndi5jb3B5KCkKKyAgICAgICAgZGlzdHV0aWxzLmNvcmUucnVuX3NldHVwKAorICAgICAgICAgICAgc2VsZi53cml0ZV9zZXR1cChzZXR1cF9kb2VzX25vdGhpbmcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5hcmd2LCBhcmd2X2NvcHkpCisKKyAgICBkZWYgdGVzdF9ydW5fc2V0dXBfZGVmaW5lc19zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhlIHNjcmlwdCBjYW4gdXNlIF9fZmlsZV9fOyBpZiB0aGF0J3MgbWlzc2luZywgdGhlIHRlc3QKKyAgICAgICAgIyBzZXR1cC5weSBzY3JpcHQgd2lsbCByYWlzZSBOYW1lRXJyb3IuCisgICAgICAgIGRpc3QgPSBkaXN0dXRpbHMuY29yZS5ydW5fc2V0dXAoCisgICAgICAgICAgICBzZWxmLndyaXRlX3NldHVwKHNldHVwX2RlZmluZXNfc3ViY2xhc3MpKQorICAgICAgICBpbnN0YWxsID0gZGlzdC5nZXRfY29tbWFuZF9vYmooJ2luc3RhbGwnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjbWQnLCBpbnN0YWxsLnN1Yl9jb21tYW5kcykKKwogICAgIGRlZiB0ZXN0X3J1bl9zZXR1cF91c2VzX2N1cnJlbnRfZGlyKHNlbGYpOgogICAgICAgICAjIFRoaXMgdGVzdHMgdGhhdCB0aGUgc2V0dXAgc2NyaXB0IGlzIHJ1biB3aXRoIHRoZSBjdXJyZW50IGRpcmVjdG9yeQogICAgICAgICAjIGFzIGl0cyBvd24gY3VycmVudCBkaXJlY3Rvcnk7IHRoaXMgd2FzIHRlbXBvcmFyaWx5IGJyb2tlbiBieSBhCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY3lnd2luY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2N5Z3dpbmNjb21waWxlci5weQppbmRleCA4NTY5MjE2Li45ZGM4NjlkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY3lnd2luY2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkKQEAgLTMsMTEgKzMsMTAgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwotaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGN5Z3dpbmNjb21waWxlcgotZnJvbSBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyIGltcG9ydCAoQ3lnd2luQ0NvbXBpbGVyLCBjaGVja19jb25maWdfaCwKK2Zyb20gZGlzdHV0aWxzLmN5Z3dpbmNjb21waWxlciBpbXBvcnQgKGNoZWNrX2NvbmZpZ19oLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0hfT0ssIENPTkZJR19IX05PVE9LLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0hfVU5DRVJUQUlOLCBnZXRfdmVyc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfbXN2Y3IpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZGVwX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZGVwX3V0aWwucHkKaW5kZXggM2UxYzM2Ni4uYzZmYWUzOSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2RlcF91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuZGVwX3V0aWwuIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotaW1wb3J0IHRpbWUKIAogZnJvbSBkaXN0dXRpbHMuZGVwX3V0aWwgaW1wb3J0IG5ld2VyLCBuZXdlcl9wYWlyd2lzZSwgbmV3ZXJfZ3JvdXAKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRmlsZUVycm9yCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZV91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVfdXRpbC5weQppbmRleCBhNmQwNGYwLi4wMzA0MGFmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZV91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkKQEAgLTEsNyArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmZpbGVfdXRpbC4iIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgZXJybm8KIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVsaXN0LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVsaXN0LnB5CmluZGV4IDM5MWFmM2MuLmM3MTM0MmQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlbGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkKQEAgLTUxLDE0ICs1MSwxNCBAQAogCiAgICAgICAgIGZvciBnbG9iLCByZWdleCBpbiAoCiAgICAgICAgICAgICAjIHNpbXBsZSBjYXNlcwotICAgICAgICAgICAgKCdmb28qJywgcidmb29bXiUoc2VwKXNdKlxaKD9tcyknKSwKLSAgICAgICAgICAgICgnZm9vPycsIHInZm9vW14lKHNlcClzXVxaKD9tcyknKSwKLSAgICAgICAgICAgICgnZm9vPz8nLCByJ2Zvb1teJShzZXApc11bXiUoc2VwKXNdXFooP21zKScpLAorICAgICAgICAgICAgKCdmb28qJywgcicoP3M6Zm9vW14lKHNlcClzXSopXFonKSwKKyAgICAgICAgICAgICgnZm9vPycsIHInKD9zOmZvb1teJShzZXApc10pXFonKSwKKyAgICAgICAgICAgICgnZm9vPz8nLCByJyg/czpmb29bXiUoc2VwKXNdW14lKHNlcClzXSlcWicpLAogICAgICAgICAgICAgIyBzcGVjaWFsIGNhc2VzCi0gICAgICAgICAgICAocidmb29cXConLCByJ2Zvb1xcXFxbXiUoc2VwKXNdKlxaKD9tcyknKSwKLSAgICAgICAgICAgIChyJ2Zvb1xcXConLCByJ2Zvb1xcXFxcXFteJShzZXApc10qXFooP21zKScpLAotICAgICAgICAgICAgKCdmb28/Pz8/Jywgcidmb29bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc11bXiUoc2VwKXNdXFooP21zKScpLAotICAgICAgICAgICAgKHInZm9vXFw/PycsIHInZm9vXFxcXFteJShzZXApc11bXiUoc2VwKXNdXFooP21zKScpKToKKyAgICAgICAgICAgIChyJ2Zvb1xcKicsIHInKD9zOmZvb1xcXFxbXiUoc2VwKXNdKilcWicpLAorICAgICAgICAgICAgKHInZm9vXFxcKicsIHInKD9zOmZvb1xcXFxcXFteJShzZXApc10qKVxaJyksCisgICAgICAgICAgICAoJ2Zvbz8/Pz8nLCByJyg/czpmb29bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc11bXiUoc2VwKXNdKVxaJyksCisgICAgICAgICAgICAocidmb29cXD8/JywgcicoP3M6Zm9vXFxcXFteJShzZXApc11bXiUoc2VwKXNdKVxaJykpOgogICAgICAgICAgICAgcmVnZXggPSByZWdleCAlIHsnc2VwJzogc2VwfQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iX3RvX3JlKGdsb2IpLCByZWdleCkKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfZGF0YS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2RhdGEucHkKaW5kZXggNGQ4YzAwYS4uMzJhYjI5NiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfZGF0YS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGxfZGF0YS4iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgZ2V0cGFzcwogCiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGxfZGF0YSBpbXBvcnQgaW5zdGFsbF9kYXRhCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfaGVhZGVycy5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2hlYWRlcnMucHkKaW5kZXggZDk1MzE1Ny4uMjIxN2IzMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfaGVhZGVycy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGxfaGVhZGVycy4iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgZ2V0cGFzcwogCiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGxfaGVhZGVycyBpbXBvcnQgaW5zdGFsbF9oZWFkZXJzCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CmluZGV4IDUzNzhhYTguLmZkYTYzMTUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKQEAgLTEwNCw3ICsxMDQsOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBvbGRfZG9udF93cml0ZV9ieXRlY29kZQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywgc2VsZi5sb2dzWzBdWzFdKQorICAgICAgICBzZWxmLmFzc2VydEluKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZCcsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dzWzBdWzFdICUgc2VsZi5sb2dzWzBdWzJdKQogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkKaW5kZXggNmM3ZWIyMC4uNWVkYzI0YSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weQpAQCAtMSwxMSArMSwxMSBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5zcGF3bi4iIiIKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cwogaW1wb3J0IG9zCi1pbXBvcnQgdGltZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dCwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bml4X3NoZWxsCiAKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBfbnRfcXVvdGVfYXJncwotZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IHNwYXduLCBmaW5kX2V4ZWN1dGFibGUKK2Zyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3bgogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNFeGVjRXJyb3IKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CiAKQEAgLTMwLDkgKzMwLDkgQEAKIAogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyBleGVjdXRhYmxlCiAgICAgICAgICMgdGhyb3VnaCB0aGUgc2hlbGwgdGhhdCByZXR1cm5zIDEKLSAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKICAgICAgICAgICAgIGV4ZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmb28uc2gnKQotICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJyMhL2Jpbi9zaFxuZXhpdCAxJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICcjISVzXG5leGl0IDEnICUgdW5peF9zaGVsbCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4ZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmb28uYmF0JykKICAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICdleGl0IDEnKQpAQCAtNDEsOSArNDEsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEaXN0dXRpbHNFeGVjRXJyb3IsIHNwYXduLCBbZXhlXSkKIAogICAgICAgICAjIG5vdyBzb21ldGhpbmcgdGhhdCB3b3JrcwotICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5zaCcpCi0gICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyEvYmluL3NoXG5leGl0IDAnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJyMhJXNcbmV4aXQgMCcgJSB1bml4X3NoZWxsKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5iYXQnKQogICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJ2V4aXQgMCcpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdW5peGNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5CmluZGV4IGUxNzFlZTkuLmVmYmEyN2UgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5CkBAIC0xLDUgKzEsNCBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy51bml4Y2NvbXBpbGVyLiIiIgotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBFbnZpcm9ubWVudFZhckd1YXJkLCBydW5fdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGV4dF9maWxlLnB5IGIvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkKaW5kZXggNDc4MzM2Zi4uOTNhYmFkMyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkKQEAgLTQsNyArNCw3IEBACiB0aGF0IChvcHRpb25hbGx5KSB0YWtlcyBjYXJlIG9mIHN0cmlwcGluZyBjb21tZW50cywgaWdub3JpbmcgYmxhbmsKIGxpbmVzLCBhbmQgam9pbmluZyBsaW5lcyB3aXRoIGJhY2tzbGFzaGVzLiIiIgogCi1pbXBvcnQgc3lzLCBvcywgaW8KK2ltcG9ydCBzeXMsIGlvCiAKIAogY2xhc3MgVGV4dEZpbGU6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKaW5kZXggZTQyMzMyNS4uZmRjZjZmYSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQpAQCAtNyw4ICs3LDggQEAKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCBzdHJpbmcKK2ltcG9ydCBzeXMKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgogZnJvbSBkaXN0dXRpbHMuZGVwX3V0aWwgaW1wb3J0IG5ld2VyCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24KQEAgLTM1MCw2ICszNTAsMTEgQEAKICAgICBnZW5lcmF0ZWQgaW4gaW5kaXJlY3QgbW9kZTsgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLCBsZWF2ZQogICAgIGl0IHNldCB0byBOb25lLgogICAgICIiIgorCisgICAgIyBMYXRlIGltcG9ydCB0byBmaXggYSBib290c3RyYXAgaXNzdWU6IF9wb3NpeHN1YnByb2Nlc3MgaXMgYnVpbHQgYnkKKyAgICAjIHNldHVwLnB5LCBidXQgc2V0dXAucHkgdXNlcyBkaXN0dXRpbHMuCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKwogICAgICMgbm90aGluZyBpcyBkb25lIGlmIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGlzIFRydWUKICAgICBpZiBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKICAgICAgICAgcmFpc2UgRGlzdHV0aWxzQnl0ZUNvbXBpbGVFcnJvcignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQuJykKQEAgLTQxMiwxMSArNDE3LDkgQEAKIAogICAgICAgICAgICAgc2NyaXB0LmNsb3NlKCkKIAotICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsIHNjcmlwdF9uYW1lXQotICAgICAgICBpZiBvcHRpbWl6ZSA9PSAxOgotICAgICAgICAgICAgY21kLmluc2VydCgxLCAiLU8iKQotICAgICAgICBlbGlmIG9wdGltaXplID09IDI6Ci0gICAgICAgICAgICBjbWQuaW5zZXJ0KDEsICItT08iKQorICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGVdCisgICAgICAgIGNtZC5leHRlbmQoc3VicHJvY2Vzcy5fb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkpCisgICAgICAgIGNtZC5hcHBlbmQoc2NyaXB0X25hbWUpCiAgICAgICAgIHNwYXduKGNtZCwgZHJ5X3J1bj1kcnlfcnVuKQogICAgICAgICBleGVjdXRlKG9zLnJlbW92ZSwgKHNjcmlwdF9uYW1lLCksICJyZW1vdmluZyAlcyIgJSBzY3JpcHRfbmFtZSwKICAgICAgICAgICAgICAgICBkcnlfcnVuPWRyeV9ydW4pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkgYi9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkKaW5kZXggYjBkZDlmNC4uMDYyYzk4ZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy92ZXJzaW9ucHJlZGljYXRlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weQpAQCAtMTU0LDcgKzE1NCw3IEBACiAgICAgZ2xvYmFsIF9wcm92aXNpb25fcngKICAgICBpZiBfcHJvdmlzaW9uX3J4IGlzIE5vbmU6CiAgICAgICAgIF9wcm92aXNpb25fcnggPSByZS5jb21waWxlKAotICAgICAgICAgICAgIihbYS16QS1aX11cdyooPzpcLlthLXpBLVpfXVx3KikqKSg/OlxzKlwoXHMqKFteKVxzXSspXHMqXCkpPyQiLAorICAgICAgICAgICAgciIoW2EtekEtWl9dXHcqKD86XC5bYS16QS1aX11cdyopKikoPzpccypcKFxzKihbXilcc10rKVxzKlwpKT8kIiwKICAgICAgICAgICAgIHJlLkFTQ0lJKQogICAgIHZhbHVlID0gdmFsdWUuc3RyaXAoKQogICAgIG0gPSBfcHJvdmlzaW9uX3J4Lm1hdGNoKHZhbHVlKQpkaWZmIC0tZ2l0IGEvTGliL2RvY3Rlc3QucHkgYi9MaWIvZG9jdGVzdC5weQppbmRleCAzOGZkZDgwLi4wYjc4NTQ0IDEwMDY0NAotLS0gYS9MaWIvZG9jdGVzdC5weQorKysgYi9MaWIvZG9jdGVzdC5weQpAQCAtMzgxLDEyICszODEsMTUgQEAKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogCiAjIFtYWF0gTm9ybWFsaXplIHdpdGggcmVzcGVjdCB0byBvcy5wYXRoLnBhcmRpcj8KLWRlZiBfbW9kdWxlX3JlbGF0aXZlX3BhdGgobW9kdWxlLCBwYXRoKToKK2RlZiBfbW9kdWxlX3JlbGF0aXZlX3BhdGgobW9kdWxlLCB0ZXN0X3BhdGgpOgogICAgIGlmIG5vdCBpbnNwZWN0LmlzbW9kdWxlKG1vZHVsZSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRXhwZWN0ZWQgYSBtb2R1bGU6ICVyJyAlIG1vZHVsZSkKLSAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoJy8nKToKKyAgICBpZiB0ZXN0X3BhdGguc3RhcnRzd2l0aCgnLycpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNb2R1bGUtcmVsYXRpdmUgZmlsZXMgbWF5IG5vdCBoYXZlIGFic29sdXRlIHBhdGhzJykKIAorICAgICMgTm9ybWFsaXplIHRoZSBwYXRoLiBPbiBXaW5kb3dzLCByZXBsYWNlICIvIiB3aXRoICJcIi4KKyAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oKih0ZXN0X3BhdGguc3BsaXQoJy8nKSkpCisKICAgICAjIEZpbmQgdGhlIGJhc2UgZGlyZWN0b3J5IGZvciB0aGUgcGF0aC4KICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6CiAgICAgICAgICMgQSBub3JtYWwgbW9kdWxlL3BhY2thZ2UKQEAgLTM5OCwxMyArNDAxLDE5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBiYXNlZGlyID0gb3MuY3VyZGlyCiAgICAgZWxzZToKKyAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgorICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBtb2R1bGUuX19wYXRoX186CisgICAgICAgICAgICAgICAgZnVsbHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCB0ZXN0X3BhdGgpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZnVsbHBhdGgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVsbHBhdGgKKwogICAgICAgICAjIEEgbW9kdWxlIHcvbyBfX2ZpbGVfXyAodGhpcyBpbmNsdWRlcyBidWlsdGlucykKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgcmVzb2x2ZSBwYXRocyByZWxhdGl2ZSB0byB0aGUgbW9kdWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiJXIgKGl0IGhhcyBubyBfX2ZpbGVfXykiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJSBtb2R1bGUuX19uYW1lX18pCiAKLSAgICAjIENvbWJpbmUgdGhlIGJhc2UgZGlyZWN0b3J5IGFuZCB0aGUgcGF0aC4KLSAgICByZXR1cm4gb3MucGF0aC5qb2luKGJhc2VkaXIsICoocGF0aC5zcGxpdCgnLycpKSkKKyAgICAjIENvbWJpbmUgdGhlIGJhc2UgZGlyZWN0b3J5IGFuZCB0aGUgdGVzdCBwYXRoLgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYmFzZWRpciwgdGVzdF9wYXRoKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyAyLiBFeGFtcGxlICYgRG9jVGVzdApAQCAtNzU2LDcgKzc2NSw3IEBACiAKICAgICAjIFRoaXMgcmVndWxhciBleHByZXNzaW9uIGZpbmRzIHRoZSBpbmRlbnRhdGlvbiBvZiBldmVyeSBub24tYmxhbmsKICAgICAjIGxpbmUgaW4gYSBzdHJpbmcuCi0gICAgX0lOREVOVF9SRSA9IHJlLmNvbXBpbGUoJ14oWyBdKikoPz1cUyknLCByZS5NVUxUSUxJTkUpCisgICAgX0lOREVOVF9SRSA9IHJlLmNvbXBpbGUocideKFsgXSopKD89XFMpJywgcmUuTVVMVElMSU5FKQogCiAgICAgZGVmIF9taW5faW5kZW50KHNlbGYsIHMpOgogICAgICAgICAiUmV0dXJuIHRoZSBtaW5pbXVtIGluZGVudGF0aW9uIG9mIGFueSBub24tYmxhbmsgbGluZSBpbiBgc2AiCkBAIC0xMDk3LDcgKzExMDYsNyBAQAogICAgICAgICBpZiBsaW5lbm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBzb3VyY2VfbGluZXMgaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gbGluZW5vKzEKLSAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJyhefC4qOilccypcdyooInxcJyknKQorICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJyhefC4qOilccypcdyooInxcJyknKQogICAgICAgICAgICAgZm9yIGxpbmVubyBpbiByYW5nZShsaW5lbm8sIGxlbihzb3VyY2VfbGluZXMpKToKICAgICAgICAgICAgICAgICBpZiBwYXQubWF0Y2goc291cmNlX2xpbmVzW2xpbmVub10pOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZW5vCkBAIC0xNTk5LDExICsxNjA4LDExIEBACiAgICAgICAgICMgYmxhbmsgbGluZSwgdW5sZXNzIHRoZSBET05UX0FDQ0VQVF9CTEFOS0xJTkUgZmxhZyBpcyB1c2VkLgogICAgICAgICBpZiBub3QgKG9wdGlvbmZsYWdzICYgRE9OVF9BQ0NFUFRfQkxBTktMSU5FKToKICAgICAgICAgICAgICMgUmVwbGFjZSA8QkxBTktMSU5FPiBpbiB3YW50IHdpdGggYSBibGFuayBsaW5lLgotICAgICAgICAgICAgd2FudCA9IHJlLnN1YignKD9tKV4lc1xzKj8kJyAlIHJlLmVzY2FwZShCTEFOS0xJTkVfTUFSS0VSKSwKKyAgICAgICAgICAgIHdhbnQgPSByZS5zdWIocicoP20pXiVzXHMqPyQnICUgcmUuZXNjYXBlKEJMQU5LTElORV9NQVJLRVIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgd2FudCkKICAgICAgICAgICAgICMgSWYgYSBsaW5lIGluIGdvdCBjb250YWlucyBvbmx5IHNwYWNlcywgdGhlbiByZW1vdmUgdGhlCiAgICAgICAgICAgICAjIHNwYWNlcy4KLSAgICAgICAgICAgIGdvdCA9IHJlLnN1YignKD9tKV5ccyo/JCcsICcnLCBnb3QpCisgICAgICAgICAgICBnb3QgPSByZS5zdWIocicoP20pXlxzKj8kJywgJycsIGdvdCkKICAgICAgICAgICAgIGlmIGdvdCA9PSB3YW50OgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weSBiL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQppbmRleCA1ZGY5NTExLi41N2QwMWZiIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CkBAIC02NTIsOCArNjUyLDggQEAKICAgICAgICAgaWYgdmFsdWUudG9rZW5fdHlwZSA9PSAnY29tbWVudCc6CiAgICAgICAgICAgICByZXR1cm4gc3RyKHZhbHVlKQogICAgICAgICByZXR1cm4gc3RyKHZhbHVlKS5yZXBsYWNlKCdcXCcsICdcXFxcJykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCcsICdcKCcpLnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyknLCAnXCknKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgcidcKCcpLnJlcGxhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyknLCByJ1wpJykKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjb250ZW50KHNlbGYpOgpAQCAtMTM1NiwxNSArMTM1NiwxNSBAQAogCiBfd3NwX3NwbGl0dGVyID0gcmUuY29tcGlsZShyJyhbe31dKyknLmZvcm1hdCgnJy5qb2luKFdTUCkpKS5zcGxpdAogX25vbl9hdG9tX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oQVRPTV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgJycuam9pbihBVE9NX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLHInXF0nKSkpLm1hdGNoCiBfbm9uX3ByaW50YWJsZV9maW5kZXIgPSByZS5jb21waWxlKHIiW1x4MDAtXHgyMFx4N0ZdIikuZmluZGFsbAogX25vbl90b2tlbl9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKLSAgICAnJy5qb2luKFRPS0VOX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKFRPS0VOX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLHInXF0nKSkpLm1hdGNoCiBfbm9uX2F0dHJpYnV0ZV9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKLSAgICAnJy5qb2luKEFUVFJJQlVURV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgJycuam9pbihBVFRSSUJVVEVfRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fZXh0ZW5kZWRfYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAogICAgICcnLmpvaW4oRVhURU5ERURfQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLHInXF0nKSkpLm1hdGNoCiAKIGRlZiBfdmFsaWRhdGVfeHRleHQoeHRleHQpOgogICAgICIiIklmIGlucHV0IHRva2VuIGNvbnRhaW5zIEFTQ0lJIG5vbi1wcmludGFibGVzLCByZWdpc3RlciBhIGRlZmVjdC4iIiIKQEAgLTE1MTcsNyArMTUxNyw3IEBACiAgICAgcmV0dXJuIHVuc3RydWN0dXJlZAogCiBkZWYgZ2V0X3FwX2N0ZXh0KHZhbHVlKToKLSAgICAiIiJjdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgKCApPgorICAgIHIiIiJjdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgKCApPgogCiAgICAgVGhpcyBpcyBub3QgdGhlIFJGQyBjdGV4dCwgc2luY2Ugd2UgYXJlIGhhbmRsaW5nIG5lc3RlZCBjb21tZW50cyBpbiBjb21tZW50CiAgICAgYW5kIHVucXVvdGluZyBxdW90ZWQtcGFpcnMgaGVyZS4gIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgJygpJwpAQCAtMTg3OCw3ICsxODc4LDcgQEAKICAgICByZXR1cm4gb2JzX2xvY2FsX3BhcnQsIHZhbHVlCiAKIGRlZiBnZXRfZHRleHQodmFsdWUpOgotICAgICIiIiBkdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgWyBdPiAvIG9icy1kdGV4dAorICAgIHIiIiIgZHRleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcIFsgXT4gLyBvYnMtZHRleHQKICAgICAgICAgb2JzLWR0ZXh0ID0gb2JzLU5PLVdTLUNUTCAvIHF1b3RlZC1wYWlyCiAKICAgICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlIGV4Y2x1ZGVkIGNoYXJhY3RlcnMsIGJ1dCBpZiB3ZSBmaW5kIGFueQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5IGIvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CmluZGV4IGMwZDk4YTQuLmRmNDY0OTYgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQorKysgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKQEAgLTE1NCw2ICsxNTQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbS4gVGhpcyBpcyB1c2VkIHdoZW4gdGhlIG1lc3NhZ2UgaXMgYmVpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgYnkgYSBnZW5lcmF0b3IuIERlZmF1bHQ6IFRydWUuCiAKKyAgICBtZXNzYWdlX2ZhY3RvcnkgICAgIC0tIHRoZSBjbGFzcyB0byB1c2UgdG8gY3JlYXRlIG5ldyBtZXNzYWdlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgdmFsdWUgaXMgTm9uZSwgdGhlIGRlZmF1bHQgaXMgTWVzc2FnZS4KKwogICAgICIiIgogCiAgICAgcmFpc2Vfb25fZGVmZWN0ID0gRmFsc2UKQEAgLTE2MSw2ICsxNjQsNyBAQAogICAgIGN0ZV90eXBlID0gJzhiaXQnCiAgICAgbWF4X2xpbmVfbGVuZ3RoID0gNzgKICAgICBtYW5nbGVfZnJvbV8gPSBGYWxzZQorICAgIG1lc3NhZ2VfZmFjdG9yeSA9IE5vbmUKIAogICAgIGRlZiBoYW5kbGVfZGVmZWN0KHNlbGYsIG9iaiwgZGVmZWN0KToKICAgICAgICAgIiIiQmFzZWQgb24gcG9saWN5LCBlaXRoZXIgcmFpc2UgZGVmZWN0IG9yIGNhbGwgcmVnaXN0ZXJfZGVmZWN0LgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5IGIvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5CmluZGV4IGI5OGNlMjcuLmI5MDRkZWQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weQorKysgYi9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkKQEAgLTE0Miw3ICsxNDIsNyBAQAogZGVmIF9lbmNvZGVfdGV4dChzdHJpbmcsIGNoYXJzZXQsIGN0ZSwgcG9saWN5KToKICAgICBsaW5lcyA9IHN0cmluZy5lbmNvZGUoY2hhcnNldCkuc3BsaXRsaW5lcygpCiAgICAgbGluZXNlcCA9IHBvbGljeS5saW5lc2VwLmVuY29kZSgnYXNjaWknKQotICAgIGRlZiBlbWJlZGVkX2JvZHkobGluZXMpOiByZXR1cm4gbGluZXNlcC5qb2luKGxpbmVzKSArIGxpbmVzZXAKKyAgICBkZWYgZW1iZWRkZWRfYm9keShsaW5lcyk6IHJldHVybiBsaW5lc2VwLmpvaW4obGluZXMpICsgbGluZXNlcAogICAgIGRlZiBub3JtYWxfYm9keShsaW5lcyk6IHJldHVybiBiJ1xuJy5qb2luKGxpbmVzKSArIGInXG4nCiAgICAgaWYgY3RlPT1Ob25lOgogICAgICAgICAjIFVzZSBoZXVyaXN0aWNzIHRvIGRlY2lkZSBvbiB0aGUgImJlc3QiIGVuY29kaW5nLgpAQCAtMTUzLDcgKzE1Myw3IEBACiAgICAgICAgIGlmIChwb2xpY3kuY3RlX3R5cGUgPT0gJzhiaXQnIGFuZAogICAgICAgICAgICAgICAgIG1heChsZW4oeCkgZm9yIHggaW4gbGluZXMpIDw9IHBvbGljeS5tYXhfbGluZV9sZW5ndGgpOgogICAgICAgICAgICAgcmV0dXJuICc4Yml0Jywgbm9ybWFsX2JvZHkobGluZXMpLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKLSAgICAgICAgc25pZmYgPSBlbWJlZGVkX2JvZHkobGluZXNbOjEwXSkKKyAgICAgICAgc25pZmYgPSBlbWJlZGRlZF9ib2R5KGxpbmVzWzoxMF0pCiAgICAgICAgIHNuaWZmX3FwID0gcXVvcHJpbWltZS5ib2R5X2VuY29kZShzbmlmZi5kZWNvZGUoJ2xhdGluLTEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgICAgIHNuaWZmX2Jhc2U2NCA9IGJpbmFzY2lpLmIyYV9iYXNlNjQoc25pZmYpCkBAIC0xNzIsNyArMTcyLDcgQEAKICAgICAgICAgZGF0YSA9IHF1b3ByaW1pbWUuYm9keV9lbmNvZGUobm9ybWFsX2JvZHkobGluZXMpLmRlY29kZSgnbGF0aW4tMScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQogICAgIGVsaWYgY3RlID09ICdiYXNlNjQnOgotICAgICAgICBkYXRhID0gX2VuY29kZV9iYXNlNjQoZW1iZWRlZF9ib2R5KGxpbmVzKSwgcG9saWN5Lm1heF9saW5lX2xlbmd0aCkKKyAgICAgICAgZGF0YSA9IF9lbmNvZGVfYmFzZTY0KGVtYmVkZGVkX2JvZHkobGluZXMpLCBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gY29udGVudCB0cmFuc2ZlciBlbmNvZGluZyB7fSIuZm9ybWF0KGN0ZSkpCiAgICAgcmV0dXJuIGN0ZSwgZGF0YQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQppbmRleCAwYjMxMmU1Li43YzA3Y2E4IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weQorKysgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQpAQCAtMjQsMTUgKzI0LDE0IEBACiBpbXBvcnQgcmUKIAogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCi1mcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlCiBmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKLU5MQ1JFID0gcmUuY29tcGlsZSgnXHJcbnxccnxcbicpCi1OTENSRV9ib2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbiknKQotTkxDUkVfZW9sID0gcmUuY29tcGlsZSgnKFxyXG58XHJ8XG4pXFonKQotTkxDUkVfY3JhY2sgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbiknKQorTkxDUkUgPSByZS5jb21waWxlKHInXHJcbnxccnxcbicpCitOTENSRV9ib2wgPSByZS5jb21waWxlKHInKFxyXG58XHJ8XG4pJykKK05MQ1JFX2VvbCA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbilcWicpCitOTENSRV9jcmFjayA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbiknKQogIyBSRkMgMjgyMiAkMy42LjggT3B0aW9uYWwgZmllbGRzLiAgZnRleHQgaXMgJWQzMy01NyAvICVkNTktMTI2LCBBbnkgY2hhcmFjdGVyCiAjIGV4Y2VwdCBjb250cm9scywgU1AsIGFuZCAiOiIuCiBoZWFkZXJSRSA9IHJlLmNvbXBpbGUocideKEZyb20gfFtcMDQxLVwwNzFcMDczLVwxNzZdKjp8W1x0IF0pJykKQEAgLTE0OCwxMyArMTQ3LDExIEBACiAgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CiAgICAgICAgIHNlbGYuX29sZF9zdHlsZV9mYWN0b3J5ID0gRmFsc2UKICAgICAgICAgaWYgX2ZhY3RvcnkgaXMgTm9uZToKLSAgICAgICAgICAgICMgV2hhdCB0aGlzIHNob3VsZCBiZToKLSAgICAgICAgICAgICNzZWxmLl9mYWN0b3J5ID0gcG9saWN5LmRlZmF1bHRfbWVzc2FnZV9mYWN0b3J5Ci0gICAgICAgICAgICAjIGJ1dCwgYmVjYXVzZSB3ZSBhcmUgcG9zdCAzLjQgZmVhdHVyZSBmcmVlemUsIGZpeCB3aXRoIHRlbXAgaGFjazoKLSAgICAgICAgICAgIGlmIHNlbGYucG9saWN5IGlzIGNvbXBhdDMyOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBtZXNzYWdlLk1lc3NhZ2UKKyAgICAgICAgICAgIGlmIHBvbGljeS5tZXNzYWdlX2ZhY3RvcnkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKKyAgICAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gTWVzc2FnZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gbWVzc2FnZS5FbWFpbE1lc3NhZ2UKKyAgICAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gcG9saWN5Lm1lc3NhZ2VfZmFjdG9yeQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IF9mYWN0b3J5CiAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5IGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQppbmRleCAyNTYyNzhkLi5hZTY3MGMyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CisrKyBiL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKQEAgLTQ0OCw3ICs0NDgsOCBAQAogICAgIExpa2UgdGhlIEdlbmVyYXRvciBiYXNlIGNsYXNzLCBleGNlcHQgdGhhdCBub24tdGV4dCBwYXJ0cyBhcmUgc3Vic3RpdHV0ZWQKICAgICB3aXRoIGEgZm9ybWF0IHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhcnQuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPTc4LCBmbXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsIGZtdD1Ob25lLCAqLAorICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkxpa2UgR2VuZXJhdG9yLl9faW5pdF9fKCkgZXhjZXB0IHRoYXQgYW4gYWRkaXRpb25hbCBvcHRpb25hbAogICAgICAgICBhcmd1bWVudCBpcyBhbGxvd2VkLgogCkBAIC00NzAsNyArNDcxLDggQEAKIAogICAgICAgICBbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXQogICAgICAgICAiIiIKLSAgICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV8sIG1heGhlYWRlcmxlbikKKyAgICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV8sIG1heGhlYWRlcmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kpCiAgICAgICAgIGlmIGZtdCBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5fZm10ID0gX0ZNVAogICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2hlYWRlci5weSBiL0xpYi9lbWFpbC9oZWFkZXIucHkKaW5kZXggNjgyMGVhMS4uYzdiMmRkOSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2hlYWRlci5weQorKysgYi9MaWIvZW1haWwvaGVhZGVyLnB5CkBAIC00OSw3ICs0OSw3IEBACiAKICMgRmluZCBhIGhlYWRlciBlbWJlZGRlZCBpbiBhIHB1dGF0aXZlIGhlYWRlciB2YWx1ZS4gIFVzZWQgdG8gY2hlY2sgZm9yCiAjIGhlYWRlciBpbmplY3Rpb24gYXR0YWNrLgotX2VtYmVkZWRfaGVhZGVyID0gcmUuY29tcGlsZShyJ1xuW14gXHRdKzonKQorX2VtYmVkZGVkX2hlYWRlciA9IHJlLmNvbXBpbGUocidcblteIFx0XSs6JykKIAogCiAMCkBAIC0zODUsNyArMzg1LDcgQEAKICAgICAgICAgaWYgc2VsZi5fY2h1bmtzOgogICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKICAgICAgICAgdmFsdWUgPSBmb3JtYXR0ZXIuX3N0cihsaW5lc2VwKQotICAgICAgICBpZiBfZW1iZWRlZF9oZWFkZXIuc2VhcmNoKHZhbHVlKToKKyAgICAgICAgaWYgX2VtYmVkZGVkX2hlYWRlci5zZWFyY2godmFsdWUpOgogICAgICAgICAgICAgcmFpc2UgSGVhZGVyUGFyc2VFcnJvcigiaGVhZGVyIHZhbHVlIGFwcGVhcnMgdG8gY29udGFpbiAiCiAgICAgICAgICAgICAgICAgImFuIGVtYmVkZGVkIGhlYWRlcjogeyFyfSIuZm9ybWF0KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CmluZGV4IDRiMDQyODMuLmI2NTEyZjIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CkBAIC00LDE4ICs0LDE3IEBACiAKICIiIkJhc2ljIG1lc3NhZ2Ugb2JqZWN0IGZvciB0aGUgZW1haWwgcGFja2FnZSBvYmplY3QgbW9kZWwuIiIiCiAKLV9fYWxsX18gPSBbJ01lc3NhZ2UnXQorX19hbGxfXyA9IFsnTWVzc2FnZScsICdFbWFpbE1lc3NhZ2UnXQogCiBpbXBvcnQgcmUKIGltcG9ydCB1dQogaW1wb3J0IHF1b3ByaQotaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTwogCiAjIEludHJhcGFja2FnZSBpbXBvcnRzCiBmcm9tIGVtYWlsIGltcG9ydCB1dGlscwogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCi1mcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgUG9saWN5LCBjb21wYXQzMgogZnJvbSBlbWFpbCBpbXBvcnQgY2hhcnNldCBhcyBfY2hhcnNldAogZnJvbSBlbWFpbC5fZW5jb2RlZF93b3JkcyBpbXBvcnQgZGVjb2RlX2IKIENoYXJzZXQgPSBfY2hhcnNldC5DaGFyc2V0CkBAIC05NTEsNiArOTUwLDI2IEBACiAgICAgICAgICAgICBwb2xpY3kgPSBkZWZhdWx0CiAgICAgICAgIE1lc3NhZ2UuX19pbml0X18oc2VsZiwgcG9saWN5KQogCisKKyAgICBkZWYgYXNfc3RyaW5nKHNlbGYsIHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49Tm9uZSwgcG9saWN5PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGVudGlyZSBmb3JtYXR0ZWQgbWVzc2FnZSBhcyBhIHN0cmluZy4KKworICAgICAgICBPcHRpb25hbCAndW5peGZyb20nLCB3aGVuIHRydWUsIG1lYW5zIGluY2x1ZGUgdGhlIFVuaXggRnJvbV8gZW52ZWxvcGUKKyAgICAgICAgaGVhZGVyLiAgbWF4aGVhZGVybGVuIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCisgICAgICAgIGJhc2UgTWVzc2FnZSBjbGFzcywgYnV0IGRlZmF1bHRzIHRvIE5vbmUsIG1lYW5pbmcgdGhhdCB0aGUgcG9saWN5IHZhbHVlCisgICAgICAgIGZvciBtYXhfbGluZV9sZW5ndGggY29udHJvbHMgdGhlIGhlYWRlciBtYXhpbXVtIGxlbmd0aC4gICdwb2xpY3knIGlzCisgICAgICAgIHBhc3NlZCB0byB0aGUgR2VuZXJhdG9yIGluc3RhbmNlIHVzZWQgdG8gc2VyaWFsaXplIHRoZSBtZXNhc2dlOyBpZiBpdAorICAgICAgICBpcyBub3Qgc3BlY2lmaWVkIHRoZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXNzYWdlIGluc3RhbmNlIGlzCisgICAgICAgIHVzZWQuCisgICAgICAgICIiIgorICAgICAgICBwb2xpY3kgPSBzZWxmLnBvbGljeSBpZiBwb2xpY3kgaXMgTm9uZSBlbHNlIHBvbGljeQorICAgICAgICBpZiBtYXhoZWFkZXJsZW4gaXMgTm9uZToKKyAgICAgICAgICAgIG1heGhlYWRlcmxlbiA9IHBvbGljeS5tYXhfbGluZV9sZW5ndGgKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuYXNfc3RyaW5nKG1heGhlYWRlcmxlbj1tYXhoZWFkZXJsZW4sIHBvbGljeT1wb2xpY3kpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNfc3RyaW5nKHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZSh1dGY4PVRydWUpKQorCiAgICAgZGVmIGlzX2F0dGFjaG1lbnQoc2VsZik6CiAgICAgICAgIGNfZCA9IHNlbGYuZ2V0KCdjb250ZW50LWRpc3Bvc2l0aW9uJykKICAgICAgICAgcmV0dXJuIEZhbHNlIGlmIGNfZCBpcyBOb25lIGVsc2UgY19kLmNvbnRlbnRfZGlzcG9zaXRpb24gPT0gJ2F0dGFjaG1lbnQnCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9hcHBsaWNhdGlvbi5weSBiL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5CmluZGV4IGY1YzU5MDUuLjY4NzdlNTUgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5CkBAIC0xNCw3ICsxNCw3IEBACiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgYXBwbGljYXRpb24vKiBNSU1FIGRvY3VtZW50cy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfZGF0YSwgX3N1YnR5cGU9J29jdGV0LXN0cmVhbScsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gYXBwbGljYXRpb24vKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2RhdGEgaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmF3IGFwcGxpY2F0aW9uIGRhdGEuCkBAIC0zMSw2ICszMSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdJbnZhbGlkIGFwcGxpY2F0aW9uIE1JTUUgc3VidHlwZScpCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2FwcGxpY2F0aW9uJywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXBwbGljYXRpb24nLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX2RhdGEpCiAgICAgICAgIF9lbmNvZGVyKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9hdWRpby5weSBiL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5CmluZGV4IGZiYzExODkuLjRiY2Q3YjIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5CkBAIC00Myw3ICs0Myw3IEBACiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgYXVkaW8vKiBNSU1FIGRvY3VtZW50cy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfYXVkaW9kYXRhLCBfc3VidHlwZT1Ob25lLAotICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpOgorICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAgIiIiQ3JlYXRlIGFuIGF1ZGlvLyogdHlwZSBNSU1FIGRvY3VtZW50LgogCiAgICAgICAgIF9hdWRpb2RhdGEgaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmF3IGF1ZGlvIGRhdGEuICBJZiB0aGlzIGRhdGEKQEAgLTY4LDYgKzY4LDcgQEAKICAgICAgICAgICAgIF9zdWJ0eXBlID0gX3doYXRzbmQoX2F1ZGlvZGF0YSkKICAgICAgICAgaWYgX3N1YnR5cGUgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ291bGQgbm90IGZpbmQgYXVkaW8gTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXVkaW8nLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhdWRpbycsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfYXVkaW9kYXRhKQogICAgICAgICBfZW5jb2RlcihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvYmFzZS5weSBiL0xpYi9lbWFpbC9taW1lL2Jhc2UucHkKaW5kZXggYWM5MTkyNS4uMWEzZjliNSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYmFzZS5weQorKysgYi9MaWIvZW1haWwvbWltZS9iYXNlLnB5CkBAIC02LDYgKzYsOCBAQAogCiBfX2FsbF9fID0gWydNSU1FQmFzZSddCiAKK2ltcG9ydCBlbWFpbC5wb2xpY3kKKwogZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZQogCiAKQEAgLTEzLDE0ICsxNSwxNiBAQAogY2xhc3MgTUlNRUJhc2UobWVzc2FnZS5NZXNzYWdlKToKICAgICAiIiJCYXNlIGNsYXNzIGZvciBNSU1FIHNwZWNpYWxpemF0aW9ucy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAgIiIiVGhpcyBjb25zdHJ1Y3RvciBhZGRzIGEgQ29udGVudC1UeXBlOiBhbmQgYSBNSU1FLVZlcnNpb246IGhlYWRlci4KIAogICAgICAgICBUaGUgQ29udGVudC1UeXBlOiBoZWFkZXIgaXMgdGFrZW4gZnJvbSB0aGUgX21haW50eXBlIGFuZCBfc3VidHlwZQogICAgICAgICBhcmd1bWVudHMuICBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoaXMgaGVhZGVyIGFyZSB0YWtlbiBmcm9tIHRoZQogICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCi0gICAgICAgIG1lc3NhZ2UuTWVzc2FnZS5fX2luaXRfXyhzZWxmKQorICAgICAgICBpZiBwb2xpY3kgaXMgTm9uZToKKyAgICAgICAgICAgIHBvbGljeSA9IGVtYWlsLnBvbGljeS5jb21wYXQzMgorICAgICAgICBtZXNzYWdlLk1lc3NhZ2UuX19pbml0X18oc2VsZiwgcG9saWN5PXBvbGljeSkKICAgICAgICAgY3R5cGUgPSAnJXMvJXMnICUgKF9tYWludHlwZSwgX3N1YnR5cGUpCiAgICAgICAgIHNlbGYuYWRkX2hlYWRlcignQ29udGVudC1UeXBlJywgY3R5cGUsICoqX3BhcmFtcykKICAgICAgICAgc2VsZlsnTUlNRS1WZXJzaW9uJ10gPSAnMS4wJwpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvaW1hZ2UucHkgYi9MaWIvZW1haWwvbWltZS9pbWFnZS5weQppbmRleCA1NTYzODIzLi45MjcyNDY0IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9pbWFnZS5weQorKysgYi9MaWIvZW1haWwvbWltZS9pbWFnZS5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIGltYWdlLyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfaW1hZ2VkYXRhLCBfc3VidHlwZT1Ob25lLAotICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpOgorICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAgIiIiQ3JlYXRlIGFuIGltYWdlLyogdHlwZSBNSU1FIGRvY3VtZW50LgogCiAgICAgICAgIF9pbWFnZWRhdGEgaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmF3IGltYWdlIGRhdGEuICBJZiB0aGlzIGRhdGEKQEAgLTQxLDYgKzQxLDcgQEAKICAgICAgICAgICAgIF9zdWJ0eXBlID0gaW1naGRyLndoYXQoTm9uZSwgX2ltYWdlZGF0YSkKICAgICAgICAgaWYgX3N1YnR5cGUgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ291bGQgbm90IGd1ZXNzIGltYWdlIE1JTUUgc3VidHlwZScpCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2ltYWdlJywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnaW1hZ2UnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX2ltYWdlZGF0YSkKICAgICAgICAgX2VuY29kZXIoc2VsZikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkgYi9MaWIvZW1haWwvbWltZS9tZXNzYWdlLnB5CmluZGV4IDI3NWRiZmQuLjA3ZTRmMmQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkKKysrIGIvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weQpAQCAtMTQsNyArMTQsNyBAQAogY2xhc3MgTUlNRU1lc3NhZ2UoTUlNRU5vbk11bHRpcGFydCk6CiAgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIG1lc3NhZ2UvKiBNSU1FIGRvY3VtZW50cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfbXNnLCBfc3VidHlwZT0ncmZjODIyJyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInLCAqLCBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIG1lc3NhZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX21zZyBpcyBhIG1lc3NhZ2Ugb2JqZWN0IGFuZCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIE1lc3NhZ2UsIG9yIGEKQEAgLTI0LDcgKzI0LDcgQEAKICAgICAgICAgZGVmYXVsdCBpcyAicmZjODIyIiAodGhpcyBpcyBkZWZpbmVkIGJ5IHRoZSBNSU1FIHN0YW5kYXJkLCBldmVuIHRob3VnaAogICAgICAgICB0aGUgdGVybSAicmZjODIyIiBpcyB0ZWNobmljYWxseSBvdXRkYXRlZCBieSBSRkMgMjgyMikuCiAgICAgICAgICIiIgotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdtZXNzYWdlJywgX3N1YnR5cGUpCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ21lc3NhZ2UnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSkKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoX21zZywgbWVzc2FnZS5NZXNzYWdlKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQXJndW1lbnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIE1lc3NhZ2UnKQogICAgICAgICAjIEl0J3MgY29udmVuaWVudCB0byB1c2UgdGhpcyBiYXNlIGNsYXNzIG1ldGhvZC4gIFdlIG5lZWQgdG8gZG8gaXQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weSBiL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weQppbmRleCA5NjYxODY1Li4yZDNmMjg4IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9tdWx0aXBhcnQucHkKKysrIGIvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5CkBAIC0xNCw2ICsxNCw3IEBACiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgTUlNRSBtdWx0aXBhcnQvKiB0eXBlIG1lc3NhZ2VzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9zdWJ0eXBlPSdtaXhlZCcsIGJvdW5kYXJ5PU5vbmUsIF9zdWJwYXJ0cz1Ob25lLAorICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Tm9uZSwKICAgICAgICAgICAgICAgICAgKipfcGFyYW1zKToKICAgICAgICAgIiIiQ3JlYXRlcyBhIG11bHRpcGFydC8qIHR5cGUgbWVzc2FnZS4KIApAQCAtMzMsNyArMzQsNyBAQAogICAgICAgICBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyIGFyZSB0YWtlbiBmcm9tIHRoZQogICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cyAob3IgcGFzc2VkIGludG8gdGhlIF9wYXJhbXMgYXJndW1lbnQpLgogICAgICAgICAiIiIKLSAgICAgICAgTUlNRUJhc2UuX19pbml0X18oc2VsZiwgJ211bHRpcGFydCcsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisgICAgICAgIE1JTUVCYXNlLl9faW5pdF9fKHNlbGYsICdtdWx0aXBhcnQnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwgKipfcGFyYW1zKQogCiAgICAgICAgICMgSW5pdGlhbGlzZSBfcGF5bG9hZCB0byBhbiBlbXB0eSBsaXN0IGFzIHRoZSBNZXNzYWdlIHN1cGVyY2xhc3MncwogICAgICAgICAjIGltcGxlbWVudGF0aW9uIG9mIGlzX211bHRpcGFydCBhc3N1bWVzIHRoYXQgX3BheWxvYWQgaXMgYSBsaXN0IGZvcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvdGV4dC5weSBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKaW5kZXggZGEwMzA4Ni4uMzViNDQyMyAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvdGV4dC5weQorKysgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CkBAIC0xNCw3ICsxNCw3IEBACiBjbGFzcyBNSU1FVGV4dChNSU1FTm9uTXVsdGlwYXJ0KToKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyB0ZXh0LyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lLCAqLCBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX3RleHQgaXMgdGhlIHN0cmluZyBmb3IgdGhpcyBtZXNzYWdlIG9iamVjdC4KQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgX2NoYXJzZXQgPSAndXRmLTgnCiAKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAndGV4dCcsIF9zdWJ0eXBlLAorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICd0ZXh0JywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKip7J2NoYXJzZXQnOiBzdHIoX2NoYXJzZXQpfSkKIAogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF90ZXh0LCBfY2hhcnNldCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9wb2xpY3kucHkgYi9MaWIvZW1haWwvcG9saWN5LnB5CmluZGV4IDM1ZDBlNjkuLjUxMzEzMTFhYyAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3BvbGljeS5weQorKysgYi9MaWIvZW1haWwvcG9saWN5LnB5CkBAIC03LDYgKzcsNyBAQAogZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCiBmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBIZWFkZXJSZWdpc3RyeSBhcyBIZWFkZXJSZWdpc3RyeQogZnJvbSBlbWFpbC5jb250ZW50bWFuYWdlciBpbXBvcnQgcmF3X2RhdGFfbWFuYWdlcgorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKIAogX19hbGxfXyA9IFsKICAgICAnQ29tcGF0MzInLApAQCAtODIsNiArODMsNyBAQAogCiAgICAgIiIiCiAKKyAgICBtZXNzYWdlX2ZhY3RvcnkgPSBFbWFpbE1lc3NhZ2UKICAgICB1dGY4ID0gRmFsc2UKICAgICByZWZvbGRfc291cmNlID0gJ2xvbmcnCiAgICAgaGVhZGVyX2ZhY3RvcnkgPSBIZWFkZXJSZWdpc3RyeSgpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5IGIvTGliL2VuY29kaW5ncy9fX2luaXRfXy5weQppbmRleCA4ZGQ3MTMwLi5hYTJmYjdjIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkKQEAgLTI5LDYgKzI5LDcgQEAKICIiIiMiCiAKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBzeXMKIGZyb20gLiBpbXBvcnQgYWxpYXNlcwogCiBfY2FjaGUgPSB7fQpAQCAtNTQsNiArNTUsNyBAQAogICAgICIiIgogICAgIGlmIGlzaW5zdGFuY2UoZW5jb2RpbmcsIGJ5dGVzKToKICAgICAgICAgZW5jb2RpbmcgPSBzdHIoZW5jb2RpbmcsICJhc2NpaSIpCisKICAgICBjaGFycyA9IFtdCiAgICAgcHVuY3QgPSBGYWxzZQogICAgIGZvciBjIGluIGVuY29kaW5nOgpAQCAtOTcsNiArOTksOCBAQAogICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXygnZW5jb2RpbmdzLicgKyBtb2RuYW1lLCBmcm9tbGlzdD1faW1wb3J0X3RhaWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTApCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICMgSW1wb3J0RXJyb3IgbWF5IG9jY3VyIGJlY2F1c2UgJ2VuY29kaW5ncy4obW9kbmFtZSknIGRvZXMgbm90IGV4aXN0LAorICAgICAgICAgICAgIyBvciBiZWNhdXNlIGl0IGltcG9ydHMgYSBuYW1lIHRoYXQgZG9lcyBub3QgZXhpc3QgKHNlZSBtYmNzIGFuZCBvZW0pCiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBicmVhawpAQCAtMTUwLDMgKzE1NCwxNiBAQAogCiAjIFJlZ2lzdGVyIHRoZSBzZWFyY2hfZnVuY3Rpb24gaW4gdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeQogY29kZWNzLnJlZ2lzdGVyKHNlYXJjaF9mdW5jdGlvbikKKworaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgZGVmIF9hbGlhc19tYmNzKGVuY29kaW5nKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlCisgICAgICAgICAgICBpZiBlbmNvZGluZyA9PSBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGVuY29kaW5ncy5tYmNzCisgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5ncy5tYmNzLmdldHJlZ2VudHJ5KCkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgIyBJbXBvcnRzIG1heSBmYWlsIHdoaWxlIHdlIGFyZSBzaHV0dGluZyBkb3duCisgICAgICAgICAgICBwYXNzCisKKyAgICBjb2RlY3MucmVnaXN0ZXIoX2FsaWFzX21iY3MpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkgYi9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKaW5kZXggNjdjODI4ZC4uMmU2M2MyZiAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQpAQCAtNDU4LDYgKzQ1OCw3IEBACiAgICAgJ21hY3R1cmtpc2gnICAgICAgICAgOiAnbWFjX3R1cmtpc2gnLAogCiAgICAgIyBtYmNzIGNvZGVjCisgICAgJ2Fuc2knICAgICAgICAgICAgICAgOiAnbWJjcycsCiAgICAgJ2RiY3MnICAgICAgICAgICAgICAgOiAnbWJjcycsCiAKICAgICAjIHB0Y3AxNTQgY29kZWMKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3Mvb2VtLnB5IGIvTGliL2VuY29kaW5ncy9vZW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMzNDI2YgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbmNvZGluZ3Mvb2VtLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyIiIiBQeXRob24gJ29lbScgQ29kZWMgZm9yIFdpbmRvd3MKKworIiIiCisjIEltcG9ydCB0aGVtIGV4cGxpY2l0bHkgdG8gY2F1c2UgYW4gSW1wb3J0RXJyb3IKKyMgb24gbm9uLVdpbmRvd3Mgc3lzdGVtcworZnJvbSBjb2RlY3MgaW1wb3J0IG9lbV9lbmNvZGUsIG9lbV9kZWNvZGUKKyMgZm9yIEluY3JlbWVudGFsRGVjb2RlciwgSW5jcmVtZW50YWxFbmNvZGVyLCAuLi4KK2ltcG9ydCBjb2RlY3MKKworIyMjIENvZGVjIEFQSXMKKworZW5jb2RlID0gb2VtX2VuY29kZQorCitkZWYgZGVjb2RlKGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgorICAgIHJldHVybiBvZW1fZGVjb2RlKGlucHV0LCBlcnJvcnMsIFRydWUpCisKK2NsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKKyAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CisgICAgICAgIHJldHVybiBvZW1fZW5jb2RlKGlucHV0LCBzZWxmLmVycm9ycylbMF0KKworY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlcik6CisgICAgX2J1ZmZlcl9kZWNvZGUgPSBvZW1fZGVjb2RlCisKK2NsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKKyAgICBlbmNvZGUgPSBvZW1fZW5jb2RlCisKK2NsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKKyAgICBkZWNvZGUgPSBvZW1fZGVjb2RlCisKKyMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQorCitkZWYgZ2V0cmVnZW50cnkoKToKKyAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKKyAgICAgICAgbmFtZT0nb2VtJywKKyAgICAgICAgZW5jb2RlPWVuY29kZSwKKyAgICAgICAgZGVjb2RlPWRlY29kZSwKKyAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKKyAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKKyAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKKyAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKKyAgICApCmRpZmYgLS1naXQgYS9MaWIvZW51bS5weSBiL0xpYi9lbnVtLnB5CmluZGV4IGI4Nzg3ZDEuLjRiZWIxODcgMTAwNjQ0Ci0tLSBhL0xpYi9lbnVtLnB5CisrKyBiL0xpYi9lbnVtLnB5CkBAIC0xLDggKzEsMjAgQEAKIGltcG9ydCBzeXMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIHR5cGVzIGltcG9ydCBNYXBwaW5nUHJveHlUeXBlLCBEeW5hbWljQ2xhc3NBdHRyaWJ1dGUKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2UKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IG9yXyBhcyBfb3JfLCBhbmRfIGFzIF9hbmRfLCB4b3IsIG5lZwogCi1fX2FsbF9fID0gWydFbnVtJywgJ0ludEVudW0nLCAndW5pcXVlJ10KKyMgdHJ5IF9jb2xsZWN0aW9ucyBmaXJzdCB0byByZWR1Y2Ugc3RhcnR1cCBjb3N0Cit0cnk6CisgICAgZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKKworCitfX2FsbF9fID0gWworICAgICAgICAnRW51bU1ldGEnLAorICAgICAgICAnRW51bScsICdJbnRFbnVtJywgJ0ZsYWcnLCAnSW50RmxhZycsCisgICAgICAgICdhdXRvJywgJ3VuaXF1ZScsCisgICAgICAgIF0KIAogCiBkZWYgX2lzX2Rlc2NyaXB0b3Iob2JqKToKQEAgLTI4LDcgKzQwLDYgQEAKICAgICAgICAgICAgIG5hbWVbLTI6LTFdICE9ICdfJyBhbmQKICAgICAgICAgICAgIGxlbihuYW1lKSA+IDIpCiAKLQogZGVmIF9tYWtlX2NsYXNzX3VucGlja2xhYmxlKGNscyk6CiAgICAgIiIiTWFrZSB0aGUgZ2l2ZW4gY2xhc3MgdW4tcGlja2xhYmxlLiIiIgogICAgIGRlZiBfYnJlYWtfb25fY2FsbF9yZWR1Y2Uoc2VsZiwgcHJvdG8pOgpAQCAtMzYsNiArNDcsMTMgQEAKICAgICBjbHMuX19yZWR1Y2VfZXhfXyA9IF9icmVha19vbl9jYWxsX3JlZHVjZQogICAgIGNscy5fX21vZHVsZV9fID0gJzx1bmtub3duPicKIAorX2F1dG9fbnVsbCA9IG9iamVjdCgpCitjbGFzcyBhdXRvOgorICAgICIiIgorICAgIEluc3RhbmNlcyBhcmUgcmVwbGFjZWQgd2l0aCBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBpbiBFbnVtIGNsYXNzIHN1aXRlcy4KKyAgICAiIiIKKyAgICB2YWx1ZSA9IF9hdXRvX251bGwKKwogCiBjbGFzcyBfRW51bURpY3QoZGljdCk6CiAgICAgIiIiVHJhY2sgZW51bSBtZW1iZXIgb3JkZXIgYW5kIGVuc3VyZSBtZW1iZXIgbmFtZXMgYXJlIG5vdCByZXVzZWQuCkBAIC00Nyw2ICs2NSw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICAgc2VsZi5fbWVtYmVyX25hbWVzID0gW10KKyAgICAgICAgc2VsZi5fbGFzdF92YWx1ZXMgPSBbXQogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICAiIiJDaGFuZ2VzIGFueXRoaW5nIG5vdCBkdW5kZXJlZCBvciBub3QgYSBkZXNjcmlwdG9yLgpAQCAtNTgsMjEgKzc3LDMyIEBACiAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIF9pc19zdW5kZXIoa2V5KToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ19uYW1lc18gYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgRW51bSB1c2UnKQorICAgICAgICAgICAgaWYga2V5IG5vdCBpbiAoCisgICAgICAgICAgICAgICAgICAgICdfb3JkZXJfJywgJ19jcmVhdGVfcHNldWRvX21lbWJlcl8nLAorICAgICAgICAgICAgICAgICAgICAnX2dlbmVyYXRlX25leHRfdmFsdWVfJywgJ19taXNzaW5nXycsCisgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignX25hbWVzXyBhcmUgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBFbnVtIHVzZScpCisgICAgICAgICAgICBpZiBrZXkgPT0gJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlXyc6CisgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAnX2dlbmVyYXRlX25leHRfdmFsdWUnLCB2YWx1ZSkKICAgICAgICAgZWxpZiBfaXNfZHVuZGVyKGtleSk6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBpZiBrZXkgPT0gJ19fb3JkZXJfXyc6CisgICAgICAgICAgICAgICAga2V5ID0gJ19vcmRlcl8nCiAgICAgICAgIGVsaWYga2V5IGluIHNlbGYuX21lbWJlcl9uYW1lczoKICAgICAgICAgICAgICMgZGVzY3JpcHRvciBvdmVyd3JpdGluZyBhbiBlbnVtPwogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBdHRlbXB0ZWQgdG8gcmV1c2Uga2V5OiAlcicgJSBrZXkpCiAgICAgICAgIGVsaWYgbm90IF9pc19kZXNjcmlwdG9yKHZhbHVlKToKICAgICAgICAgICAgIGlmIGtleSBpbiBzZWxmOgogICAgICAgICAgICAgICAgICMgZW51bSBvdmVyd3JpdGluZyBhIGRlc2NyaXB0b3I/Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdLZXkgYWxyZWFkeSBkZWZpbmVkIGFzOiAlcicgJSBzZWxmW2tleV0pCisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBhbHJlYWR5IGRlZmluZWQgYXM6ICVyJyAlIChrZXksIHNlbGZba2V5XSkpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBhdXRvKToKKyAgICAgICAgICAgICAgICBpZiB2YWx1ZS52YWx1ZSA9PSBfYXV0b19udWxsOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZS52YWx1ZSA9IHNlbGYuX2dlbmVyYXRlX25leHRfdmFsdWUoa2V5LCAxLCBsZW4oc2VsZi5fbWVtYmVyX25hbWVzKSwgc2VsZi5fbGFzdF92YWx1ZXNbOl0pCisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52YWx1ZQogICAgICAgICAgICAgc2VsZi5fbWVtYmVyX25hbWVzLmFwcGVuZChrZXkpCisgICAgICAgICAgICBzZWxmLl9sYXN0X3ZhbHVlcy5hcHBlbmQodmFsdWUpCiAgICAgICAgIHN1cGVyKCkuX19zZXRpdGVtX18oa2V5LCB2YWx1ZSkKIAogCi0KICMgRHVtbXkgdmFsdWUgZm9yIEVudW0gYXMgRW51bU1ldGEgZXhwbGljaXRseSBjaGVja3MgZm9yIGl0LCBidXQgb2YgY291cnNlCiAjIHVudGlsIEVudW1NZXRhIGZpbmlzaGVzIHJ1bm5pbmcgdGhlIGZpcnN0IHRpbWUgdGhlIEVudW0gY2xhc3MgZG9lc24ndCBleGlzdC4KICMgVGhpcyBpcyBhbHNvIHdoeSB0aGVyZSBhcmUgY2hlY2tzIGluIEVudW1NZXRhIGxpa2UgYGlmIEVudW0gaXMgbm90IE5vbmVgCkBAIC04Myw3ICsxMTMsMTMgQEAKICAgICAiIiJNZXRhY2xhc3MgZm9yIEVudW0iIiIKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgY2xzLCBiYXNlcyk6Ci0gICAgICAgIHJldHVybiBfRW51bURpY3QoKQorICAgICAgICAjIGNyZWF0ZSB0aGUgbmFtZXNwYWNlIGRpY3QKKyAgICAgICAgZW51bV9kaWN0ID0gX0VudW1EaWN0KCkKKyAgICAgICAgIyBpbmhlcml0IHByZXZpb3VzIGZsYWdzIGFuZCBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8gZnVuY3Rpb24KKyAgICAgICAgbWVtYmVyX3R5cGUsIGZpcnN0X2VudW0gPSBtZXRhY2xzLl9nZXRfbWl4aW5zXyhiYXNlcykKKyAgICAgICAgaWYgZmlyc3RfZW51bSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGVudW1fZGljdFsnX2dlbmVyYXRlX25leHRfdmFsdWVfJ10gPSBnZXRhdHRyKGZpcnN0X2VudW0sICdfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nLCBOb25lKQorICAgICAgICByZXR1cm4gZW51bV9kaWN0CiAKICAgICBkZWYgX19uZXdfXyhtZXRhY2xzLCBjbHMsIGJhc2VzLCBjbGFzc2RpY3QpOgogICAgICAgICAjIGFuIEVudW0gY2xhc3MgaXMgZmluYWwgb25jZSBlbnVtZXJhdGlvbiBpdGVtcyBoYXZlIGJlZW4gZGVmaW5lZDsgaXQKQEAgLTk2LDEyICsxMzIsMTUgQEAKIAogICAgICAgICAjIHNhdmUgZW51bSBpdGVtcyBpbnRvIHNlcGFyYXRlIG1hcHBpbmcgc28gdGhleSBkb24ndCBnZXQgYmFrZWQgaW50bwogICAgICAgICAjIHRoZSBuZXcgY2xhc3MKLSAgICAgICAgbWVtYmVycyA9IHtrOiBjbGFzc2RpY3Rba10gZm9yIGsgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXN9CisgICAgICAgIGVudW1fbWVtYmVycyA9IHtrOiBjbGFzc2RpY3Rba10gZm9yIGsgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXN9CiAgICAgICAgIGZvciBuYW1lIGluIGNsYXNzZGljdC5fbWVtYmVyX25hbWVzOgogICAgICAgICAgICAgZGVsIGNsYXNzZGljdFtuYW1lXQogCisgICAgICAgICMgYWRqdXN0IHRoZSBzdW5kZXJzCisgICAgICAgIF9vcmRlcl8gPSBjbGFzc2RpY3QucG9wKCdfb3JkZXJfJywgTm9uZSkKKwogICAgICAgICAjIGNoZWNrIGZvciBpbGxlZ2FsIGVudW0gbmFtZXMgKGFueSBvdGhlcnM/KQotICAgICAgICBpbnZhbGlkX25hbWVzID0gc2V0KG1lbWJlcnMpICYgeydtcm8nLCB9CisgICAgICAgIGludmFsaWRfbmFtZXMgPSBzZXQoZW51bV9tZW1iZXJzKSAmIHsnbXJvJywgfQogICAgICAgICBpZiBpbnZhbGlkX25hbWVzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBlbnVtIG1lbWJlciBuYW1lOiB7MH0nLmZvcm1hdCgKICAgICAgICAgICAgICAgICAnLCcuam9pbihpbnZhbGlkX25hbWVzKSkpCkBAIC0xNDUsNyArMTg0LDcgQEAKICAgICAgICAgIyBhIGN1c3RvbSBfX25ld19fIGlzIGRvaW5nIHNvbWV0aGluZyBmdW5reSB3aXRoIHRoZSB2YWx1ZXMgLS0gc3VjaCBhcwogICAgICAgICAjIGF1dG8tbnVtYmVyaW5nIDspCiAgICAgICAgIGZvciBtZW1iZXJfbmFtZSBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lczoKLSAgICAgICAgICAgIHZhbHVlID0gbWVtYmVyc1ttZW1iZXJfbmFtZV0KKyAgICAgICAgICAgIHZhbHVlID0gZW51bV9tZW1iZXJzW21lbWJlcl9uYW1lXQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKICAgICAgICAgICAgICAgICBhcmdzID0gKHZhbHVlLCApCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTU5LDcgKzE5OCwxMCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlbnVtX21lbWJlciA9IF9fbmV3X18oZW51bV9jbGFzcywgKmFyZ3MpCiAgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZW51bV9tZW1iZXIsICdfdmFsdWVfJyk6Ci0gICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSBtZW1iZXJfdHlwZSgqYXJncykKKyAgICAgICAgICAgICAgICAgICAgaWYgbWVtYmVyX3R5cGUgaXMgb2JqZWN0OgorICAgICAgICAgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBlbnVtX21lbWJlci5fdmFsdWVfID0gbWVtYmVyX3R5cGUoKmFyZ3MpCiAgICAgICAgICAgICB2YWx1ZSA9IGVudW1fbWVtYmVyLl92YWx1ZV8KICAgICAgICAgICAgIGVudW1fbWVtYmVyLl9uYW1lXyA9IG1lbWJlcl9uYW1lCiAgICAgICAgICAgICBlbnVtX21lbWJlci5fX29iamNsYXNzX18gPSBlbnVtX2NsYXNzCkBAIC0yMDQsNiArMjQ2LDE0IEBACiAgICAgICAgICAgICBpZiBzYXZlX25ldzoKICAgICAgICAgICAgICAgICBlbnVtX2NsYXNzLl9fbmV3X21lbWJlcl9fID0gX19uZXdfXwogICAgICAgICAgICAgZW51bV9jbGFzcy5fX25ld19fID0gRW51bS5fX25ld19fCisKKyAgICAgICAgIyBweTMgc3VwcG9ydCBmb3IgZGVmaW5pdGlvbiBvcmRlciAoaGVscHMga2VlcCBweTIvcHkzIGNvZGUgaW4gc3luYykKKyAgICAgICAgaWYgX29yZGVyXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoX29yZGVyXywgc3RyKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gX29yZGVyXy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCisgICAgICAgICAgICBpZiBfb3JkZXJfICE9IGVudW1fY2xhc3MuX21lbWJlcl9uYW1lc186CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpCisKICAgICAgICAgcmV0dXJuIGVudW1fY2xhc3MKIAogICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKQEAgLTMyNSwxMyArMzc1LDE5IEBACiAgICAgICAgICIiIgogICAgICAgICBtZXRhY2xzID0gY2xzLl9fY2xhc3NfXwogICAgICAgICBiYXNlcyA9IChjbHMsICkgaWYgdHlwZSBpcyBOb25lIGVsc2UgKHR5cGUsIGNscykKKyAgICAgICAgXywgZmlyc3RfZW51bSA9IGNscy5fZ2V0X21peGluc18oYmFzZXMpCiAgICAgICAgIGNsYXNzZGljdCA9IG1ldGFjbHMuX19wcmVwYXJlX18oY2xhc3NfbmFtZSwgYmFzZXMpCiAKICAgICAgICAgIyBzcGVjaWFsIHByb2Nlc3NpbmcgbmVlZGVkIGZvciBuYW1lcz8KICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgc3RyKToKICAgICAgICAgICAgIG5hbWVzID0gbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQogICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWVzLCAodHVwbGUsIGxpc3QpKSBhbmQgaXNpbnN0YW5jZShuYW1lc1swXSwgc3RyKToKLSAgICAgICAgICAgIG5hbWVzID0gWyhlLCBpKSBmb3IgKGksIGUpIGluIGVudW1lcmF0ZShuYW1lcywgc3RhcnQpXQorICAgICAgICAgICAgb3JpZ2luYWxfbmFtZXMsIG5hbWVzID0gbmFtZXMsIFtdCisgICAgICAgICAgICBsYXN0X3ZhbHVlcyA9IFtdCisgICAgICAgICAgICBmb3IgY291bnQsIG5hbWUgaW4gZW51bWVyYXRlKG9yaWdpbmFsX25hbWVzKToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGZpcnN0X2VudW0uX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXNbOl0pCisgICAgICAgICAgICAgICAgbGFzdF92YWx1ZXMuYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZCgobmFtZSwgdmFsdWUpKQogCiAgICAgICAgICMgSGVyZSwgbmFtZXMgaXMgZWl0aGVyIGFuIGl0ZXJhYmxlIG9mIChuYW1lLCB2YWx1ZSkgb3IgYSBtYXBwaW5nLgogICAgICAgICBmb3IgaXRlbSBpbiBuYW1lczoKQEAgLTQ3Myw2ICs1MjksMjAgQEAKICAgICAgICAgICAgIGZvciBtZW1iZXIgaW4gY2xzLl9tZW1iZXJfbWFwXy52YWx1ZXMoKToKICAgICAgICAgICAgICAgICBpZiBtZW1iZXIuX3ZhbHVlXyA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbWJlcgorICAgICAgICAjIHN0aWxsIG5vdCBmb3VuZCAtLSB0cnkgX21pc3NpbmdfIGhvb2sKKyAgICAgICAgcmV0dXJuIGNscy5fbWlzc2luZ18odmFsdWUpCisKKyAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXMpOgorICAgICAgICBmb3IgbGFzdF92YWx1ZSBpbiByZXZlcnNlZChsYXN0X3ZhbHVlcyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RfdmFsdWUgKyAxCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzdGFydAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9taXNzaW5nXyhjbHMsIHZhbHVlKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXIgaXMgbm90IGEgdmFsaWQgJXMiICUgKHZhbHVlLCBjbHMuX19uYW1lX18pKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtNTQ0LDggKzYxNCwyMSBAQAogICAgICAgICAgICAgc291cmNlID0gdmFycyhzb3VyY2UpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzb3VyY2UgPSBtb2R1bGVfZ2xvYmFscwotICAgICAgICBtZW1iZXJzID0ge25hbWU6IHZhbHVlIGZvciBuYW1lLCB2YWx1ZSBpbiBzb3VyY2UuaXRlbXMoKQotICAgICAgICAgICAgICAgIGlmIGZpbHRlcihuYW1lKX0KKyAgICAgICAgIyBXZSB1c2UgYW4gT3JkZXJlZERpY3Qgb2Ygc29ydGVkIHNvdXJjZSBrZXlzIHNvIHRoYXQgdGhlCisgICAgICAgICMgX3ZhbHVlMm1lbWJlcl9tYXAgaXMgcG9wdWxhdGVkIGluIHRoZSBzYW1lIG9yZGVyIGV2ZXJ5IHRpbWUKKyAgICAgICAgIyBmb3IgYSBjb25zaXN0ZW50IHJldmVyc2UgbWFwcGluZyBvZiBudW1iZXIgdG8gbmFtZSB3aGVuIHRoZXJlCisgICAgICAgICMgYXJlIG11bHRpcGxlIG5hbWVzIGZvciB0aGUgc2FtZSBudW1iZXIgcmF0aGVyIHRoYW4gdmFyeWluZworICAgICAgICAjIGJldHdlZW4gcnVucyBkdWUgdG8gaGFzaCByYW5kb21pemF0aW9uIG9mIHRoZSBtb2R1bGUgZGljdGlvbmFyeS4KKyAgICAgICAgbWVtYmVycyA9IFsKKyAgICAgICAgICAgICAgICAobmFtZSwgc291cmNlW25hbWVdKQorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIHNvdXJjZS5rZXlzKCkKKyAgICAgICAgICAgICAgICBpZiBmaWx0ZXIobmFtZSldCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgc29ydCBieSB2YWx1ZQorICAgICAgICAgICAgbWVtYmVycy5zb3J0KGtleT1sYW1iZGEgdDogKHRbMV0sIHRbMF0pKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgIyB1bmxlc3Mgc29tZSB2YWx1ZXMgYXJlbid0IGNvbXBhcmFibGUsIGluIHdoaWNoIGNhc2Ugc29ydCBieSBuYW1lCisgICAgICAgICAgICBtZW1iZXJzLnNvcnQoa2V5PWxhbWJkYSB0OiB0WzBdKQogICAgICAgICBjbHMgPSBjbHMobmFtZSwgbWVtYmVycywgbW9kdWxlPW1vZHVsZSkKICAgICAgICAgY2xzLl9fcmVkdWNlX2V4X18gPSBfcmVkdWNlX2V4X2J5X25hbWUKICAgICAgICAgbW9kdWxlX2dsb2JhbHMudXBkYXRlKGNscy5fX21lbWJlcnNfXykKQEAgLTU2MCw2ICs2NDMsMTgwIEBACiBkZWYgX3JlZHVjZV9leF9ieV9uYW1lKHNlbGYsIHByb3RvKToKICAgICByZXR1cm4gc2VsZi5uYW1lCiAKK2NsYXNzIEZsYWcoRW51bSk6CisgICAgIiIiU3VwcG9ydCBmb3IgZmxhZ3MiIiIKKworICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0X3ZhbHVlcyk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0ZSB0aGUgbmV4dCB2YWx1ZSB3aGVuIG5vdCBnaXZlbi4KKworICAgICAgICBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgbWVtYmVyCisgICAgICAgIHN0YXJ0OiB0aGUgaW5pdGl0YWwgc3RhcnQgdmFsdWUgb3IgTm9uZQorICAgICAgICBjb3VudDogdGhlIG51bWJlciBvZiBleGlzdGluZyBtZW1iZXJzCisgICAgICAgIGxhc3RfdmFsdWU6IHRoZSBsYXN0IHZhbHVlIGFzc2lnbmVkIG9yIE5vbmUKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBjb3VudDoKKyAgICAgICAgICAgIHJldHVybiBzdGFydCBpZiBzdGFydCBpcyBub3QgTm9uZSBlbHNlIDEKKyAgICAgICAgZm9yIGxhc3RfdmFsdWUgaW4gcmV2ZXJzZWQobGFzdF92YWx1ZXMpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGhpZ2hfYml0ID0gX2hpZ2hfYml0KGxhc3RfdmFsdWUpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdJbnZhbGlkIEZsYWcgdmFsdWU6ICVyJyAlIGxhc3RfdmFsdWUpIGZyb20gTm9uZQorICAgICAgICByZXR1cm4gMiAqKiAoaGlnaF9iaXQrMSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWlzc2luZ18oY2xzLCB2YWx1ZSk6CisgICAgICAgIG9yaWdpbmFsX3ZhbHVlID0gdmFsdWUKKyAgICAgICAgaWYgdmFsdWUgPCAwOgorICAgICAgICAgICAgdmFsdWUgPSB+dmFsdWUKKyAgICAgICAgcG9zc2libGVfbWVtYmVyID0gY2xzLl9jcmVhdGVfcHNldWRvX21lbWJlcl8odmFsdWUpCisgICAgICAgIGlmIG9yaWdpbmFsX3ZhbHVlIDwgMDoKKyAgICAgICAgICAgIHBvc3NpYmxlX21lbWJlciA9IH5wb3NzaWJsZV9tZW1iZXIKKyAgICAgICAgcmV0dXJuIHBvc3NpYmxlX21lbWJlcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jcmVhdGVfcHNldWRvX21lbWJlcl8oY2xzLCB2YWx1ZSk6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgYSBjb21wb3NpdGUgbWVtYmVyIGlmZiB2YWx1ZSBjb250YWlucyBvbmx5IG1lbWJlcnMuCisgICAgICAgICIiIgorICAgICAgICBwc2V1ZG9fbWVtYmVyID0gY2xzLl92YWx1ZTJtZW1iZXJfbWFwXy5nZXQodmFsdWUsIE5vbmUpCisgICAgICAgIGlmIHBzZXVkb19tZW1iZXIgaXMgTm9uZToKKyAgICAgICAgICAgICMgdmVyaWZ5IGFsbCBiaXRzIGFyZSBhY2NvdW50ZWQgZm9yCisgICAgICAgICAgICBfLCBleHRyYV9mbGFncyA9IF9kZWNvbXBvc2UoY2xzLCB2YWx1ZSkKKyAgICAgICAgICAgIGlmIGV4dHJhX2ZsYWdzOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVyIGlzIG5vdCBhIHZhbGlkICVzIiAlICh2YWx1ZSwgY2xzLl9fbmFtZV9fKSkKKyAgICAgICAgICAgICMgY29uc3RydWN0IGEgc2luZ2xldG9uIGVudW0gcHNldWRvLW1lbWJlcgorICAgICAgICAgICAgcHNldWRvX21lbWJlciA9IG9iamVjdC5fX25ld19fKGNscykKKyAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX25hbWVfID0gTm9uZQorICAgICAgICAgICAgcHNldWRvX21lbWJlci5fdmFsdWVfID0gdmFsdWUKKyAgICAgICAgICAgIGNscy5fdmFsdWUybWVtYmVyX21hcF9bdmFsdWVdID0gcHNldWRvX21lbWJlcgorICAgICAgICByZXR1cm4gcHNldWRvX21lbWJlcgorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG90aGVyLl92YWx1ZV8gJiBzZWxmLl92YWx1ZV8gPT0gb3RoZXIuX3ZhbHVlXworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBjbHMgPSBzZWxmLl9fY2xhc3NfXworICAgICAgICBpZiBzZWxmLl9uYW1lXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAnPCVzLiVzOiAlcj4nICUgKGNscy5fX25hbWVfXywgc2VsZi5fbmFtZV8sIHNlbGYuX3ZhbHVlXykKKyAgICAgICAgbWVtYmVycywgdW5jb3ZlcmVkID0gX2RlY29tcG9zZShjbHMsIHNlbGYuX3ZhbHVlXykKKyAgICAgICAgcmV0dXJuICc8JXMuJXM6ICVyPicgJSAoCisgICAgICAgICAgICAgICAgY2xzLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICd8Jy5qb2luKFtzdHIobS5fbmFtZV8gb3IgbS5fdmFsdWVfKSBmb3IgbSBpbiBtZW1iZXJzXSksCisgICAgICAgICAgICAgICAgc2VsZi5fdmFsdWVfLAorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBjbHMgPSBzZWxmLl9fY2xhc3NfXworICAgICAgICBpZiBzZWxmLl9uYW1lXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAnJXMuJXMnICUgKGNscy5fX25hbWVfXywgc2VsZi5fbmFtZV8pCisgICAgICAgIG1lbWJlcnMsIHVuY292ZXJlZCA9IF9kZWNvbXBvc2UoY2xzLCBzZWxmLl92YWx1ZV8pCisgICAgICAgIGlmIGxlbihtZW1iZXJzKSA9PSAxIGFuZCBtZW1iZXJzWzBdLl9uYW1lXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuICclcy4lcicgJSAoY2xzLl9fbmFtZV9fLCBtZW1iZXJzWzBdLl92YWx1ZV8pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJyVzLiVzJyAlICgKKyAgICAgICAgICAgICAgICAgICAgY2xzLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAnfCcuam9pbihbc3RyKG0uX25hbWVfIG9yIG0uX3ZhbHVlXykgZm9yIG0gaW4gbWVtYmVyc10pLAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYuX3ZhbHVlXykKKworICAgIGRlZiBfX29yX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18pOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl92YWx1ZV8gfCBvdGhlci5fdmFsdWVfKQorCisgICAgZGVmIF9fYW5kX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18pOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl92YWx1ZV8gJiBvdGhlci5fdmFsdWVfKQorCisgICAgZGVmIF9feG9yX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18pOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl92YWx1ZV8gXiBvdGhlci5fdmFsdWVfKQorCisgICAgZGVmIF9faW52ZXJ0X18oc2VsZik6CisgICAgICAgIG1lbWJlcnMsIHVuY292ZXJlZCA9IF9kZWNvbXBvc2Uoc2VsZi5fX2NsYXNzX18sIHNlbGYuX3ZhbHVlXykKKyAgICAgICAgaW52ZXJ0ZWRfbWVtYmVycyA9IFsKKyAgICAgICAgICAgICAgICBtIGZvciBtIGluIHNlbGYuX19jbGFzc19fCisgICAgICAgICAgICAgICAgaWYgbSBub3QgaW4gbWVtYmVycyBhbmQgbm90IG0uX3ZhbHVlXyAmIHNlbGYuX3ZhbHVlXworICAgICAgICAgICAgICAgIF0KKyAgICAgICAgaW52ZXJ0ZWQgPSByZWR1Y2UoX29yXywgaW52ZXJ0ZWRfbWVtYmVycywgc2VsZi5fX2NsYXNzX18oMCkpCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhpbnZlcnRlZCkKKworCitjbGFzcyBJbnRGbGFnKGludCwgRmxhZyk6CisgICAgIiIiU3VwcG9ydCBmb3IgaW50ZWdlci1iYXNlZCBGbGFncyIiIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9taXNzaW5nXyhjbHMsIHZhbHVlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlciBpcyBub3QgYSB2YWxpZCAlcyIgJSAodmFsdWUsIGNscy5fX25hbWVfXykpCisgICAgICAgIG5ld19tZW1iZXIgPSBjbHMuX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyh2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5ld19tZW1iZXIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY3JlYXRlX3BzZXVkb19tZW1iZXJfKGNscywgdmFsdWUpOgorICAgICAgICBwc2V1ZG9fbWVtYmVyID0gY2xzLl92YWx1ZTJtZW1iZXJfbWFwXy5nZXQodmFsdWUsIE5vbmUpCisgICAgICAgIGlmIHBzZXVkb19tZW1iZXIgaXMgTm9uZToKKyAgICAgICAgICAgIG5lZWRfdG9fY3JlYXRlID0gW3ZhbHVlXQorICAgICAgICAgICAgIyBnZXQgdW5hY2NvdW50ZWQgZm9yIGJpdHMKKyAgICAgICAgICAgIF8sIGV4dHJhX2ZsYWdzID0gX2RlY29tcG9zZShjbHMsIHZhbHVlKQorICAgICAgICAgICAgIyB0aW1lciA9IDEwCisgICAgICAgICAgICB3aGlsZSBleHRyYV9mbGFnczoKKyAgICAgICAgICAgICAgICAjIHRpbWVyIC09IDEKKyAgICAgICAgICAgICAgICBiaXQgPSBfaGlnaF9iaXQoZXh0cmFfZmxhZ3MpCisgICAgICAgICAgICAgICAgZmxhZ192YWx1ZSA9IDIgKiogYml0CisgICAgICAgICAgICAgICAgaWYgKGZsYWdfdmFsdWUgbm90IGluIGNscy5fdmFsdWUybWVtYmVyX21hcF8gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlIG5vdCBpbiBuZWVkX3RvX2NyZWF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgbmVlZF90b19jcmVhdGUuYXBwZW5kKGZsYWdfdmFsdWUpCisgICAgICAgICAgICAgICAgaWYgZXh0cmFfZmxhZ3MgPT0gLWZsYWdfdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIGV4dHJhX2ZsYWdzID0gMAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGV4dHJhX2ZsYWdzIF49IGZsYWdfdmFsdWUKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiByZXZlcnNlZChuZWVkX3RvX2NyZWF0ZSk6CisgICAgICAgICAgICAgICAgIyBjb25zdHJ1Y3Qgc2luZ2xldG9uIHBzZXVkby1tZW1iZXJzCisgICAgICAgICAgICAgICAgcHNldWRvX21lbWJlciA9IGludC5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgICAgICAgICAgcHNldWRvX21lbWJlci5fbmFtZV8gPSBOb25lCisgICAgICAgICAgICAgICAgcHNldWRvX21lbWJlci5fdmFsdWVfID0gdmFsdWUKKyAgICAgICAgICAgICAgICBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfW3ZhbHVlXSA9IHBzZXVkb19tZW1iZXIKKyAgICAgICAgcmV0dXJuIHBzZXVkb19tZW1iZXIKKworICAgIGRlZiBfX29yX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgKHNlbGYuX19jbGFzc19fLCBpbnQpKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXN1bHQgPSBzZWxmLl9fY2xhc3NfXyhzZWxmLl92YWx1ZV8gfCBzZWxmLl9fY2xhc3NfXyhvdGhlcikuX3ZhbHVlXykKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9fYW5kX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgKHNlbGYuX19jbGFzc19fLCBpbnQpKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfICYgc2VsZi5fX2NsYXNzX18ob3RoZXIpLl92YWx1ZV8pCisKKyAgICBkZWYgX194b3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoc2VsZi5fX2NsYXNzX18sIGludCkpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl92YWx1ZV8gXiBzZWxmLl9fY2xhc3NfXyhvdGhlcikuX3ZhbHVlXykKKworICAgIF9fcm9yX18gPSBfX29yX18KKyAgICBfX3JhbmRfXyA9IF9fYW5kX18KKyAgICBfX3J4b3JfXyA9IF9feG9yX18KKworICAgIGRlZiBfX2ludmVydF9fKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBzZWxmLl9fY2xhc3NfXyh+c2VsZi5fdmFsdWVfKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKworZGVmIF9oaWdoX2JpdCh2YWx1ZSk6CisgICAgIiIicmV0dXJucyBpbmRleCBvZiBoaWdoZXN0IGJpdCwgb3IgLTEgaWYgdmFsdWUgaXMgemVybyBvciBuZWdhdGl2ZSIiIgorICAgIHJldHVybiB2YWx1ZS5iaXRfbGVuZ3RoKCkgLSAxCisKIGRlZiB1bmlxdWUoZW51bWVyYXRpb24pOgogICAgICIiIkNsYXNzIGRlY29yYXRvciBmb3IgZW51bWVyYXRpb25zIGVuc3VyaW5nIHVuaXF1ZSBtZW1iZXIgdmFsdWVzLiIiIgogICAgIGR1cGxpY2F0ZXMgPSBbXQpAQCAtNTcyLDMgKzgyOSw0MCBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdkdXBsaWNhdGUgdmFsdWVzIGZvdW5kIGluICVyOiAlcycgJQogICAgICAgICAgICAgICAgIChlbnVtZXJhdGlvbiwgYWxpYXNfZGV0YWlscykpCiAgICAgcmV0dXJuIGVudW1lcmF0aW9uCisKK2RlZiBfZGVjb21wb3NlKGZsYWcsIHZhbHVlKToKKyAgICAiIiJFeHRyYWN0IGFsbCBtZW1iZXJzIGZyb20gdGhlIHZhbHVlLiIiIgorICAgICMgX2RlY29tcG9zZSBpcyBvbmx5IGNhbGxlZCBpZiB0aGUgdmFsdWUgaXMgbm90IG5hbWVkCisgICAgbm90X2NvdmVyZWQgPSB2YWx1ZQorICAgIG5lZ2F0aXZlID0gdmFsdWUgPCAwCisgICAgaWYgbmVnYXRpdmU6CisgICAgICAgICMgb25seSBjaGVjayBmb3IgbmFtZWQgZmxhZ3MKKyAgICAgICAgZmxhZ3NfdG9fY2hlY2sgPSBbCisgICAgICAgICAgICAgICAgKG0sIHYpCisgICAgICAgICAgICAgICAgZm9yIHYsIG0gaW4gZmxhZy5fdmFsdWUybWVtYmVyX21hcF8uaXRlbXMoKQorICAgICAgICAgICAgICAgIGlmIG0ubmFtZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIF0KKyAgICBlbHNlOgorICAgICAgICAjIGNoZWNrIGZvciBuYW1lZCBmbGFncyBhbmQgcG93ZXJzLW9mLXR3byBmbGFncworICAgICAgICBmbGFnc190b19jaGVjayA9IFsKKyAgICAgICAgICAgICAgICAobSwgdikKKyAgICAgICAgICAgICAgICBmb3IgdiwgbSBpbiBmbGFnLl92YWx1ZTJtZW1iZXJfbWFwXy5pdGVtcygpCisgICAgICAgICAgICAgICAgaWYgbS5uYW1lIGlzIG5vdCBOb25lIG9yIF9wb3dlcl9vZl90d28odikKKyAgICAgICAgICAgICAgICBdCisgICAgbWVtYmVycyA9IFtdCisgICAgZm9yIG1lbWJlciwgbWVtYmVyX3ZhbHVlIGluIGZsYWdzX3RvX2NoZWNrOgorICAgICAgICBpZiBtZW1iZXJfdmFsdWUgYW5kIG1lbWJlcl92YWx1ZSAmIHZhbHVlID09IG1lbWJlcl92YWx1ZToKKyAgICAgICAgICAgIG1lbWJlcnMuYXBwZW5kKG1lbWJlcikKKyAgICAgICAgICAgIG5vdF9jb3ZlcmVkICY9IH5tZW1iZXJfdmFsdWUKKyAgICBpZiBub3QgbWVtYmVycyBhbmQgdmFsdWUgaW4gZmxhZy5fdmFsdWUybWVtYmVyX21hcF86CisgICAgICAgIG1lbWJlcnMuYXBwZW5kKGZsYWcuX3ZhbHVlMm1lbWJlcl9tYXBfW3ZhbHVlXSkKKyAgICBtZW1iZXJzLnNvcnQoa2V5PWxhbWJkYSBtOiBtLl92YWx1ZV8sIHJldmVyc2U9VHJ1ZSkKKyAgICBpZiBsZW4obWVtYmVycykgPiAxIGFuZCBtZW1iZXJzWzBdLnZhbHVlID09IHZhbHVlOgorICAgICAgICAjIHdlIGhhdmUgdGhlIGJyZWFrZG93biwgZG9uJ3QgbmVlZCB0aGUgdmFsdWUgbWVtYmVyIGl0c2VsZgorICAgICAgICBtZW1iZXJzLnBvcCgwKQorICAgIHJldHVybiBtZW1iZXJzLCBub3RfY292ZXJlZAorCitkZWYgX3Bvd2VyX29mX3R3byh2YWx1ZSk6CisgICAgaWYgdmFsdWUgPCAxOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gdmFsdWUgPT0gMiAqKiBfaGlnaF9iaXQodmFsdWUpCmRpZmYgLS1naXQgYS9MaWIvZmlsZWlucHV0LnB5IGIvTGliL2ZpbGVpbnB1dC5weQppbmRleCBkMmI1MjA2Li43MjFmZTljIDEwMDY0NAotLS0gYS9MaWIvZmlsZWlucHV0LnB5CisrKyBiL0xpYi9maWxlaW5wdXQucHkKQEAgLTc1LDEzICs3NSwxMSBAQAogaW1wb3J0IHN5cywgb3MKIAogX19hbGxfXyA9IFsiaW5wdXQiLCAiY2xvc2UiLCAibmV4dGZpbGUiLCAiZmlsZW5hbWUiLCAibGluZW5vIiwgImZpbGVsaW5lbm8iLAotICAgICAgICAgICAiaXNmaXJzdGxpbmUiLCAiaXNzdGRpbiIsICJGaWxlSW5wdXQiXQorICAgICAgICAgICAiZmlsZW5vIiwgImlzZmlyc3RsaW5lIiwgImlzc3RkaW4iLCAiRmlsZUlucHV0IiwgImhvb2tfY29tcHJlc3NlZCIsCisgICAgICAgICAgICJob29rX2VuY29kZWQiXQogCiBfc3RhdGUgPSBOb25lCiAKLSMgTm8gbG9uZ2VyIHVzZWQKLURFRkFVTFRfQlVGU0laRSA9IDgqMTAyNAotCiBkZWYgaW5wdXQoZmlsZXM9Tm9uZSwgaW5wbGFjZT1GYWxzZSwgYmFja3VwPSIiLCBidWZzaXplPTAsCiAgICAgICAgICAgbW9kZT0iciIsIG9wZW5ob29rPU5vbmUpOgogICAgICIiIlJldHVybiBhbiBpbnN0YW5jZSBvZiB0aGUgRmlsZUlucHV0IGNsYXNzLCB3aGljaCBjYW4gYmUgaXRlcmF0ZWQuCkBAIC0yMDEsNiArMTk5LDEwIEBACiAgICAgICAgIHNlbGYuX2ZpbGVzID0gZmlsZXMKICAgICAgICAgc2VsZi5faW5wbGFjZSA9IGlucGxhY2UKICAgICAgICAgc2VsZi5fYmFja3VwID0gYmFja3VwCisgICAgICAgIGlmIGJ1ZnNpemU6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2J1ZnNpemUgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBzZWxmLl9zYXZlc3Rkb3V0ID0gTm9uZQogICAgICAgICBzZWxmLl9vdXRwdXQgPSBOb25lCiAgICAgICAgIHNlbGYuX2ZpbGVuYW1lID0gTm9uZQpAQCAtMzk4LDkgKzQwMCw5IEBACiAgICAgICAgIHJldHVybiBvcGVuKGZpbGVuYW1lLCBtb2RlKQogCiAKLWRlZiBob29rX2VuY29kZWQoZW5jb2RpbmcpOgorZGVmIGhvb2tfZW5jb2RlZChlbmNvZGluZywgZXJyb3JzPU5vbmUpOgogICAgIGRlZiBvcGVuaG9vayhmaWxlbmFtZSwgbW9kZSk6Ci0gICAgICAgIHJldHVybiBvcGVuKGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1lbmNvZGluZykKKyAgICAgICAgcmV0dXJuIG9wZW4oZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQogICAgIHJldHVybiBvcGVuaG9vawogCiAKZGlmZiAtLWdpdCBhL0xpYi9mbm1hdGNoLnB5IGIvTGliL2ZubWF0Y2gucHkKaW5kZXggNjMzMGIwYy4uZmQzYjUxNCAxMDA2NDQKLS0tIGEvTGliL2ZubWF0Y2gucHkKKysrIGIvTGliL2ZubWF0Y2gucHkKQEAgLTEwNiw0ICsxMDYsNCBAQAogICAgICAgICAgICAgICAgIHJlcyA9ICclc1slc10nICUgKHJlcywgc3R1ZmYpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXMgPSByZXMgKyByZS5lc2NhcGUoYykKLSAgICByZXR1cm4gcmVzICsgJ1xaKD9tcyknCisgICAgcmV0dXJuIHInKD9zOiVzKVxaJyAlIHJlcwpkaWZmIC0tZ2l0IGEvTGliL2ZyYWN0aW9ucy5weSBiL0xpYi9mcmFjdGlvbnMucHkKaW5kZXggOWFhYmFiMy4uODMzMDIwMiAxMDA2NDQKLS0tIGEvTGliL2ZyYWN0aW9ucy5weQorKysgYi9MaWIvZnJhY3Rpb25zLnB5CkBAIC04MSw3ICs4MSw3IEBACiAgICAgX19zbG90c19fID0gKCdfbnVtZXJhdG9yJywgJ19kZW5vbWluYXRvcicpCiAKICAgICAjIFdlJ3JlIGltbXV0YWJsZSwgc28gdXNlIF9fbmV3X18gbm90IF9faW5pdF9fCi0gICAgZGVmIF9fbmV3X18oY2xzLCBudW1lcmF0b3I9MCwgZGVub21pbmF0b3I9Tm9uZSwgX25vcm1hbGl6ZT1UcnVlKToKKyAgICBkZWYgX19uZXdfXyhjbHMsIG51bWVyYXRvcj0wLCBkZW5vbWluYXRvcj1Ob25lLCAqLCBfbm9ybWFsaXplPVRydWUpOgogICAgICAgICAiIiJDb25zdHJ1Y3RzIGEgUmF0aW9uYWwuCiAKICAgICAgICAgVGFrZXMgYSBzdHJpbmcgbGlrZSAnMy8yJyBvciAnMS41JywgYW5vdGhlciBSYXRpb25hbCBpbnN0YW5jZSwgYQpAQCAtMTI1LDE3ICsxMjUsOSBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2Rlbm9taW5hdG9yID0gbnVtZXJhdG9yLmRlbm9taW5hdG9yCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKIAotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgZmxvYXQpOgotICAgICAgICAgICAgICAgICMgRXhhY3QgY29udmVyc2lvbiBmcm9tIGZsb2F0Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBGcmFjdGlvbi5mcm9tX2Zsb2F0KG51bWVyYXRvcikKLSAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IgPSB2YWx1ZS5fbnVtZXJhdG9yCi0gICAgICAgICAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSB2YWx1ZS5fZGVub21pbmF0b3IKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobnVtZXJhdG9yLCBEZWNpbWFsKToKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IEZyYWN0aW9uLmZyb21fZGVjaW1hbChudW1lcmF0b3IpCi0gICAgICAgICAgICAgICAgc2VsZi5fbnVtZXJhdG9yID0gdmFsdWUuX251bWVyYXRvcgotICAgICAgICAgICAgICAgIHNlbGYuX2Rlbm9taW5hdG9yID0gdmFsdWUuX2Rlbm9taW5hdG9yCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobnVtZXJhdG9yLCAoZmxvYXQsIERlY2ltYWwpKToKKyAgICAgICAgICAgICAgICAjIEV4YWN0IGNvbnZlcnNpb24KKyAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IsIHNlbGYuX2Rlbm9taW5hdG9yID0gbnVtZXJhdG9yLmFzX2ludGVnZXJfcmF0aW8oKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIHN0cik6CkBAIC0yMTAsMTAgKzIwMiw2IEBACiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoZiwgZmxvYXQpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcy5mcm9tX2Zsb2F0KCkgb25seSB0YWtlcyBmbG9hdHMsIG5vdCAlciAoJXMpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNscy5fX25hbWVfXywgZiwgdHlwZShmKS5fX25hbWVfXykpCi0gICAgICAgIGlmIG1hdGguaXNuYW4oZik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3QgY29udmVydCAlciB0byAlcy4iICUgKGYsIGNscy5fX25hbWVfXykpCi0gICAgICAgIGlmIG1hdGguaXNpbmYoZik6Ci0gICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJDYW5ub3QgY29udmVydCAlciB0byAlcy4iICUgKGYsIGNscy5fX25hbWVfXykpCiAgICAgICAgIHJldHVybiBjbHMoKmYuYXNfaW50ZWdlcl9yYXRpbygpKQogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC0yMjYsMTkgKzIxNCw3IEBACiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgIiVzLmZyb21fZGVjaW1hbCgpIG9ubHkgdGFrZXMgRGVjaW1hbHMsIG5vdCAlciAoJXMpIiAlCiAgICAgICAgICAgICAgICAgKGNscy5fX25hbWVfXywgZGVjLCB0eXBlKGRlYykuX19uYW1lX18pKQotICAgICAgICBpZiBkZWMuaXNfaW5maW5pdGUoKToKLSAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoCi0gICAgICAgICAgICAgICAgIkNhbm5vdCBjb252ZXJ0ICVzIHRvICVzLiIgJSAoZGVjLCBjbHMuX19uYW1lX18pKQotICAgICAgICBpZiBkZWMuaXNfbmFuKCk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3QgY29udmVydCAlcyB0byAlcy4iICUgKGRlYywgY2xzLl9fbmFtZV9fKSkKLSAgICAgICAgc2lnbiwgZGlnaXRzLCBleHAgPSBkZWMuYXNfdHVwbGUoKQotICAgICAgICBkaWdpdHMgPSBpbnQoJycuam9pbihtYXAoc3RyLCBkaWdpdHMpKSkKLSAgICAgICAgaWYgc2lnbjoKLSAgICAgICAgICAgIGRpZ2l0cyA9IC1kaWdpdHMKLSAgICAgICAgaWYgZXhwID49IDA6Ci0gICAgICAgICAgICByZXR1cm4gY2xzKGRpZ2l0cyAqIDEwICoqIGV4cCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBjbHMoZGlnaXRzLCAxMCAqKiAtZXhwKQorICAgICAgICByZXR1cm4gY2xzKCpkZWMuYXNfaW50ZWdlcl9yYXRpbygpKQogCiAgICAgZGVmIGxpbWl0X2Rlbm9taW5hdG9yKHNlbGYsIG1heF9kZW5vbWluYXRvcj0xMDAwMDAwKToKICAgICAgICAgIiIiQ2xvc2VzdCBGcmFjdGlvbiB0byBzZWxmIHdpdGggZGVub21pbmF0b3IgYXQgbW9zdCBtYXhfZGVub21pbmF0b3IuCmRpZmYgLS1naXQgYS9MaWIvZnRwbGliLnB5IGIvTGliL2Z0cGxpYi5weQppbmRleCBjNDE2ZDg1Li44ZjM2ZjUzIDEwMDY0NAotLS0gYS9MaWIvZnRwbGliLnB5CisrKyBiL0xpYi9mdHBsaWIucHkKQEAgLTM2LDEzICszNiwxMiBAQAogIyBNb2RpZmllZCBieSBHaWFtcGFvbG8gUm9kb2xhJyB0byBhZGQgVExTIHN1cHBvcnQuCiAjCiAKLWltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHNvY2tldAotaW1wb3J0IHdhcm5pbmdzCiBmcm9tIHNvY2tldCBpbXBvcnQgX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQKIAotX19hbGxfXyA9IFsiRlRQIl0KK19fYWxsX18gPSBbIkZUUCIsICJlcnJvcl9yZXBseSIsICJlcnJvcl90ZW1wIiwgImVycm9yX3Blcm0iLCAiZXJyb3JfcHJvdG8iLAorICAgICAgICAgICAiYWxsX2Vycm9ycyJdCiAKICMgTWFnaWMgbnVtYmVyIGZyb20gPHNvY2tldC5oPgogTVNHX09PQiA9IDB4MSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHJvY2VzcyBkYXRhIG91dCBvZiBiYW5kCkBAIC03MjksNiArNzI4LDEwIEBACiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgpAQCAtODIyLDcgKzgyNSw3IEBACiAgICAgaWYgXzE1MF9yZSBpcyBOb25lOgogICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgXzE1MF9yZSA9IHJlLmNvbXBpbGUoCi0gICAgICAgICAgICAiMTUwIC4qIFwoKFxkKykgYnl0ZXNcKSIsIHJlLklHTk9SRUNBU0UgfCByZS5BU0NJSSkKKyAgICAgICAgICAgIHIiMTUwIC4qIFwoKFxkKykgYnl0ZXNcKSIsIHJlLklHTk9SRUNBU0UgfCByZS5BU0NJSSkKICAgICBtID0gXzE1MF9yZS5tYXRjaChyZXNwKQogICAgIGlmIG5vdCBtOgogICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2Z1bmN0b29scy5weSBiL0xpYi9mdW5jdG9vbHMucHkKaW5kZXggMjE0NTIzYy4uOTg0NWRmMiAxMDA2NDQKLS0tIGEvTGliL2Z1bmN0b29scy5weQorKysgYi9MaWIvZnVuY3Rvb2xzLnB5CkBAIC0yMSw2ICsyMSw3IEBACiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIHR5cGVzIGltcG9ydCBNYXBwaW5nUHJveHlUeXBlCiBmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtLZXlEaWN0aW9uYXJ5Citmcm9tIHJlcHJsaWIgaW1wb3J0IHJlY3Vyc2l2ZV9yZXByCiB0cnk6CiAgICAgZnJvbSBfdGhyZWFkIGltcG9ydCBSTG9jawogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjM3LDI2ICsyMzgsODMgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgUHVyZWx5IGZ1bmN0aW9uYWwsIG5vIGRlc2NyaXB0b3IgYmVoYXZpb3VyCi1kZWYgcGFydGlhbChmdW5jLCAqYXJncywgKiprZXl3b3Jkcyk6CitjbGFzcyBwYXJ0aWFsOgogICAgICIiIk5ldyBmdW5jdGlvbiB3aXRoIHBhcnRpYWwgYXBwbGljYXRpb24gb2YgdGhlIGdpdmVuIGFyZ3VtZW50cwogICAgIGFuZCBrZXl3b3Jkcy4KICAgICAiIiIKLSAgICBpZiBoYXNhdHRyKGZ1bmMsICdmdW5jJyk6Ci0gICAgICAgIGFyZ3MgPSBmdW5jLmFyZ3MgKyBhcmdzCi0gICAgICAgIHRtcGt3ID0gZnVuYy5rZXl3b3Jkcy5jb3B5KCkKLSAgICAgICAgdG1wa3cudXBkYXRlKGtleXdvcmRzKQotICAgICAgICBrZXl3b3JkcyA9IHRtcGt3Ci0gICAgICAgIGRlbCB0bXBrdwotICAgICAgICBmdW5jID0gZnVuYy5mdW5jCiAKLSAgICBkZWYgbmV3ZnVuYygqZmFyZ3MsICoqZmtleXdvcmRzKToKLSAgICAgICAgbmV3a2V5d29yZHMgPSBrZXl3b3Jkcy5jb3B5KCkKLSAgICAgICAgbmV3a2V5d29yZHMudXBkYXRlKGZrZXl3b3JkcykKLSAgICAgICAgcmV0dXJuIGZ1bmMoKihhcmdzICsgZmFyZ3MpLCAqKm5ld2tleXdvcmRzKQotICAgIG5ld2Z1bmMuZnVuYyA9IGZ1bmMKLSAgICBuZXdmdW5jLmFyZ3MgPSBhcmdzCi0gICAgbmV3ZnVuYy5rZXl3b3JkcyA9IGtleXdvcmRzCi0gICAgcmV0dXJuIG5ld2Z1bmMKKyAgICBfX3Nsb3RzX18gPSAiZnVuYyIsICJhcmdzIiwgImtleXdvcmRzIiwgIl9fZGljdF9fIiwgIl9fd2Vha3JlZl9fIgorCisgICAgZGVmIF9fbmV3X18oKmFyZ3MsICoqa2V5d29yZHMpOgorICAgICAgICBpZiBub3QgYXJnczoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGVzY3JpcHRvciAnX19uZXdfXycgb2YgcGFydGlhbCBuZWVkcyBhbiBhcmd1bWVudCIpCisgICAgICAgIGlmIGxlbihhcmdzKSA8IDI6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR5cGUgJ3BhcnRpYWwnIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpCisgICAgICAgIGNscywgZnVuYywgKmFyZ3MgPSBhcmdzCisgICAgICAgIGlmIG5vdCBjYWxsYWJsZShmdW5jKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgY2FsbGFibGUiKQorICAgICAgICBhcmdzID0gdHVwbGUoYXJncykKKworICAgICAgICBpZiBoYXNhdHRyKGZ1bmMsICJmdW5jIik6CisgICAgICAgICAgICBhcmdzID0gZnVuYy5hcmdzICsgYXJncworICAgICAgICAgICAgdG1wa3cgPSBmdW5jLmtleXdvcmRzLmNvcHkoKQorICAgICAgICAgICAgdG1wa3cudXBkYXRlKGtleXdvcmRzKQorICAgICAgICAgICAga2V5d29yZHMgPSB0bXBrdworICAgICAgICAgICAgZGVsIHRtcGt3CisgICAgICAgICAgICBmdW5jID0gZnVuYy5mdW5jCisKKyAgICAgICAgc2VsZiA9IHN1cGVyKHBhcnRpYWwsIGNscykuX19uZXdfXyhjbHMpCisKKyAgICAgICAgc2VsZi5mdW5jID0gZnVuYworICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYua2V5d29yZHMgPSBrZXl3b3JkcworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fY2FsbF9fKCphcmdzLCAqKmtleXdvcmRzKToKKyAgICAgICAgaWYgbm90IGFyZ3M6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRlc2NyaXB0b3IgJ19fY2FsbF9fJyBvZiBwYXJ0aWFsIG5lZWRzIGFuIGFyZ3VtZW50IikKKyAgICAgICAgc2VsZiwgKmFyZ3MgPSBhcmdzCisgICAgICAgIG5ld2tleXdvcmRzID0gc2VsZi5rZXl3b3Jkcy5jb3B5KCkKKyAgICAgICAgbmV3a2V5d29yZHMudXBkYXRlKGtleXdvcmRzKQorICAgICAgICByZXR1cm4gc2VsZi5mdW5jKCpzZWxmLmFyZ3MsICphcmdzLCAqKm5ld2tleXdvcmRzKQorCisgICAgQHJlY3Vyc2l2ZV9yZXByKCkKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHF1YWxuYW1lID0gdHlwZShzZWxmKS5fX3F1YWxuYW1lX18KKyAgICAgICAgYXJncyA9IFtyZXByKHNlbGYuZnVuYyldCisgICAgICAgIGFyZ3MuZXh0ZW5kKHJlcHIoeCkgZm9yIHggaW4gc2VsZi5hcmdzKQorICAgICAgICBhcmdzLmV4dGVuZChmIntrfT17diFyfSIgZm9yIChrLCB2KSBpbiBzZWxmLmtleXdvcmRzLml0ZW1zKCkpCisgICAgICAgIGlmIHR5cGUoc2VsZikuX19tb2R1bGVfXyA9PSAiZnVuY3Rvb2xzIjoKKyAgICAgICAgICAgIHJldHVybiBmImZ1bmN0b29scy57cXVhbG5hbWV9KHsnLCAnLmpvaW4oYXJncyl9KSIKKyAgICAgICAgcmV0dXJuIGYie3F1YWxuYW1lfSh7JywgJy5qb2luKGFyZ3MpfSkiCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHR5cGUoc2VsZiksIChzZWxmLmZ1bmMsKSwgKHNlbGYuZnVuYywgc2VsZi5hcmdzLAorICAgICAgICAgICAgICAgc2VsZi5rZXl3b3JkcyBvciBOb25lLCBzZWxmLl9fZGljdF9fIG9yIE5vbmUpCisKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3RhdGUsIHR1cGxlKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgdG8gX19zZXRzdGF0ZV9fIG11c3QgYmUgYSB0dXBsZSIpCisgICAgICAgIGlmIGxlbihzdGF0ZSkgIT0gNDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmImV4cGVjdGVkIDQgaXRlbXMgaW4gc3RhdGUsIGdvdCB7bGVuKHN0YXRlKX0iKQorICAgICAgICBmdW5jLCBhcmdzLCBrd2RzLCBuYW1lc3BhY2UgPSBzdGF0ZQorICAgICAgICBpZiAobm90IGNhbGxhYmxlKGZ1bmMpIG9yIG5vdCBpc2luc3RhbmNlKGFyZ3MsIHR1cGxlKSBvcgorICAgICAgICAgICAoa3dkcyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2Uoa3dkcywgZGljdCkpIG9yCisgICAgICAgICAgIChuYW1lc3BhY2UgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKG5hbWVzcGFjZSwgZGljdCkpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBwYXJ0aWFsIHN0YXRlIikKKworICAgICAgICBhcmdzID0gdHVwbGUoYXJncykgIyBqdXN0IGluIGNhc2UgaXQncyBhIHN1YmNsYXNzCisgICAgICAgIGlmIGt3ZHMgaXMgTm9uZToKKyAgICAgICAgICAgIGt3ZHMgPSB7fQorICAgICAgICBlbGlmIHR5cGUoa3dkcykgaXMgbm90IGRpY3Q6ICMgWFhYIGRvZXMgaXQgbmVlZCB0byBiZSAqZXhhY3RseSogZGljdD8KKyAgICAgICAgICAgIGt3ZHMgPSBkaWN0KGt3ZHMpCisgICAgICAgIGlmIG5hbWVzcGFjZSBpcyBOb25lOgorICAgICAgICAgICAgbmFtZXNwYWNlID0ge30KKworICAgICAgICBzZWxmLl9fZGljdF9fID0gbmFtZXNwYWNlCisgICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLmtleXdvcmRzID0ga3dkcwogCiB0cnk6CiAgICAgZnJvbSBfZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCmRpZmYgLS1naXQgYS9MaWIvZ2VuZXJpY3BhdGgucHkgYi9MaWIvZ2VuZXJpY3BhdGgucHkKaW5kZXggNjcxNDA2MS4uMzAzYjNiMyAxMDA2NDQKLS0tIGEvTGliL2dlbmVyaWNwYXRoLnB5CisrKyBiL0xpYi9nZW5lcmljcGF0aC5weQpAQCAtNjksNiArNjksMTIgQEAKIGRlZiBjb21tb25wcmVmaXgobSk6CiAgICAgIkdpdmVuIGEgbGlzdCBvZiBwYXRobmFtZXMsIHJldHVybnMgdGhlIGxvbmdlc3QgY29tbW9uIGxlYWRpbmcgY29tcG9uZW50IgogICAgIGlmIG5vdCBtOiByZXR1cm4gJycKKyAgICAjIFNvbWUgcGVvcGxlIHBhc3MgaW4gYSBsaXN0IG9mIHBhdGhuYW1lIHBhcnRzIHRvIG9wZXJhdGUgaW4gYW4gT1MtYWdub3N0aWMKKyAgICAjIGZhc2hpb247IGRvbid0IHRyeSB0byB0cmFuc2xhdGUgaW4gdGhhdCBjYXNlIGFzIHRoYXQncyBhbiBhYnVzZSBvZiB0aGUKKyAgICAjIEFQSSBhbmQgdGhleSBhcmUgYWxyZWFkeSBkb2luZyB3aGF0IHRoZXkgbmVlZCB0byBiZSBPUy1hZ25vc3RpYyBhbmQgc28KKyAgICAjIHRoZXkgbW9zdCBsaWtlbHkgd29uJ3QgYmUgdXNpbmcgYW4gb3MuUGF0aExpa2Ugb2JqZWN0IGluIHRoZSBzdWJsaXN0cy4KKyAgICBpZiBub3QgaXNpbnN0YW5jZShtWzBdLCAobGlzdCwgdHVwbGUpKToKKyAgICAgICAgbSA9IHR1cGxlKG1hcChvcy5mc3BhdGgsIG0pKQogICAgIHMxID0gbWluKG0pCiAgICAgczIgPSBtYXgobSkKICAgICBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoczEpOgpkaWZmIC0tZ2l0IGEvTGliL2dsb2IucHkgYi9MaWIvZ2xvYi5weQppbmRleCAxNjMzMGQ4Li4wMDJjZDkyIDEwMDY0NAotLS0gYS9MaWIvZ2xvYi5weQorKysgYi9MaWIvZ2xvYi5weQpAQCAtMzAsMTUgKzMwLDE2IEBACiAgICAgSWYgcmVjdXJzaXZlIGlzIHRydWUsIHRoZSBwYXR0ZXJuICcqKicgd2lsbCBtYXRjaCBhbnkgZmlsZXMgYW5kCiAgICAgemVybyBvciBtb3JlIGRpcmVjdG9yaWVzIGFuZCBzdWJkaXJlY3Rvcmllcy4KICAgICAiIiIKLSAgICBpdCA9IF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlKQorICAgIGl0ID0gX2lnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmUsIEZhbHNlKQogICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKHBhdGhuYW1lKToKICAgICAgICAgcyA9IG5leHQoaXQpICAjIHNraXAgZW1wdHkgc3RyaW5nCiAgICAgICAgIGFzc2VydCBub3QgcwogICAgIHJldHVybiBpdAogCi1kZWYgX2lnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmUpOgorZGVmIF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlLCBkaXJvbmx5KToKICAgICBkaXJuYW1lLCBiYXNlbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aG5hbWUpCiAgICAgaWYgbm90IGhhc19tYWdpYyhwYXRobmFtZSk6CisgICAgICAgIGFzc2VydCBub3QgZGlyb25seQogICAgICAgICBpZiBiYXNlbmFtZToKICAgICAgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyhwYXRobmFtZSk6CiAgICAgICAgICAgICAgICAgeWllbGQgcGF0aG5hbWUKQEAgLTQ5LDQ3ICs1MCwzOSBAQAogICAgICAgICByZXR1cm4KICAgICBpZiBub3QgZGlybmFtZToKICAgICAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUoYmFzZW5hbWUpOgotICAgICAgICAgICAgeWllbGQgZnJvbSBnbG9iMihkaXJuYW1lLCBiYXNlbmFtZSkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gX2dsb2IyKGRpcm5hbWUsIGJhc2VuYW1lLCBkaXJvbmx5KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgeWllbGQgZnJvbSBnbG9iMShkaXJuYW1lLCBiYXNlbmFtZSkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gX2dsb2IxKGRpcm5hbWUsIGJhc2VuYW1lLCBkaXJvbmx5KQogICAgICAgICByZXR1cm4KICAgICAjIGBvcy5wYXRoLnNwbGl0KClgIHJldHVybnMgdGhlIGFyZ3VtZW50IGl0c2VsZiBhcyBhIGRpcm5hbWUgaWYgaXQgaXMgYQogICAgICMgZHJpdmUgb3IgVU5DIHBhdGguICBQcmV2ZW50IGFuIGluZmluaXRlIHJlY3Vyc2lvbiBpZiBhIGRyaXZlIG9yIFVOQyBwYXRoCiAgICAgIyBjb250YWlucyBtYWdpYyBjaGFyYWN0ZXJzIChpLmUuIHInXFw/XEM6JykuCiAgICAgaWYgZGlybmFtZSAhPSBwYXRobmFtZSBhbmQgaGFzX21hZ2ljKGRpcm5hbWUpOgotICAgICAgICBkaXJzID0gX2lnbG9iKGRpcm5hbWUsIHJlY3Vyc2l2ZSkKKyAgICAgICAgZGlycyA9IF9pZ2xvYihkaXJuYW1lLCByZWN1cnNpdmUsIFRydWUpCiAgICAgZWxzZToKICAgICAgICAgZGlycyA9IFtkaXJuYW1lXQogICAgIGlmIGhhc19tYWdpYyhiYXNlbmFtZSk6CiAgICAgICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKGJhc2VuYW1lKToKLSAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjIKKyAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gX2dsb2IyCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IxCisgICAgICAgICAgICBnbG9iX2luX2RpciA9IF9nbG9iMQogICAgIGVsc2U6Ci0gICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjAKKyAgICAgICAgZ2xvYl9pbl9kaXIgPSBfZ2xvYjAKICAgICBmb3IgZGlybmFtZSBpbiBkaXJzOgotICAgICAgICBmb3IgbmFtZSBpbiBnbG9iX2luX2RpcihkaXJuYW1lLCBiYXNlbmFtZSk6CisgICAgICAgIGZvciBuYW1lIGluIGdsb2JfaW5fZGlyKGRpcm5hbWUsIGJhc2VuYW1lLCBkaXJvbmx5KToKICAgICAgICAgICAgIHlpZWxkIG9zLnBhdGguam9pbihkaXJuYW1lLCBuYW1lKQogCiAjIFRoZXNlIDIgaGVscGVyIGZ1bmN0aW9ucyBub24tcmVjdXJzaXZlbHkgZ2xvYiBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KLSMgVGhleSByZXR1cm4gYSBsaXN0IG9mIGJhc2VuYW1lcy4gYGdsb2IxYCBhY2NlcHRzIGEgcGF0dGVybiB3aGlsZSBgZ2xvYjBgCisjIFRoZXkgcmV0dXJuIGEgbGlzdCBvZiBiYXNlbmFtZXMuICBfZ2xvYjEgYWNjZXB0cyBhIHBhdHRlcm4gd2hpbGUgX2dsb2IwCiAjIHRha2VzIGEgbGl0ZXJhbCBiYXNlbmFtZSAoc28gaXQgb25seSBoYXMgdG8gY2hlY2sgZm9yIGl0cyBleGlzdGVuY2UpLgogCi1kZWYgZ2xvYjEoZGlybmFtZSwgcGF0dGVybik6Ci0gICAgaWYgbm90IGRpcm5hbWU6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgYnl0ZXMpOgotICAgICAgICAgICAgZGlybmFtZSA9IGJ5dGVzKG9zLmN1cmRpciwgJ0FTQ0lJJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5jdXJkaXIKLSAgICB0cnk6Ci0gICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXJuYW1lKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICByZXR1cm4gW10KK2RlZiBfZ2xvYjEoZGlybmFtZSwgcGF0dGVybiwgZGlyb25seSk6CisgICAgbmFtZXMgPSBsaXN0KF9pdGVyZGlyKGRpcm5hbWUsIGRpcm9ubHkpKQogICAgIGlmIG5vdCBfaXNoaWRkZW4ocGF0dGVybik6Ci0gICAgICAgIG5hbWVzID0gW3ggZm9yIHggaW4gbmFtZXMgaWYgbm90IF9pc2hpZGRlbih4KV0KKyAgICAgICAgbmFtZXMgPSAoeCBmb3IgeCBpbiBuYW1lcyBpZiBub3QgX2lzaGlkZGVuKHgpKQogICAgIHJldHVybiBmbm1hdGNoLmZpbHRlcihuYW1lcywgcGF0dGVybikKIAotZGVmIGdsb2IwKGRpcm5hbWUsIGJhc2VuYW1lKToKK2RlZiBfZ2xvYjAoZGlybmFtZSwgYmFzZW5hbWUsIGRpcm9ubHkpOgogICAgIGlmIG5vdCBiYXNlbmFtZToKICAgICAgICAgIyBgb3MucGF0aC5zcGxpdCgpYCByZXR1cm5zIGFuIGVtcHR5IGJhc2VuYW1lIGZvciBwYXRocyBlbmRpbmcgd2l0aCBhCiAgICAgICAgICMgZGlyZWN0b3J5IHNlcGFyYXRvci4gICdxKngvJyBzaG91bGQgbWF0Y2ggb25seSBkaXJlY3Rvcmllcy4KQEAgLTEwMCwzMCArOTMsNDkgQEAKICAgICAgICAgICAgIHJldHVybiBbYmFzZW5hbWVdCiAgICAgcmV0dXJuIFtdCiAKKyMgRm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgbm90IHB1YmxpYyBidXQgY2FuIGJlIHVzZWQgYnkgdGhpcmQtcGFydHkgY29kZS4KKworZGVmIGdsb2IwKGRpcm5hbWUsIHBhdHRlcm4pOgorICAgIHJldHVybiBfZ2xvYjAoZGlybmFtZSwgcGF0dGVybiwgRmFsc2UpCisKK2RlZiBnbG9iMShkaXJuYW1lLCBwYXR0ZXJuKToKKyAgICByZXR1cm4gX2dsb2IxKGRpcm5hbWUsIHBhdHRlcm4sIEZhbHNlKQorCiAjIFRoaXMgaGVscGVyIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5IHlpZWxkcyByZWxhdGl2ZSBwYXRobmFtZXMgaW5zaWRlIGEgbGl0ZXJhbAogIyBkaXJlY3RvcnkuCiAKLWRlZiBnbG9iMihkaXJuYW1lLCBwYXR0ZXJuKToKK2RlZiBfZ2xvYjIoZGlybmFtZSwgcGF0dGVybiwgZGlyb25seSk6CiAgICAgYXNzZXJ0IF9pc3JlY3Vyc2l2ZShwYXR0ZXJuKQogICAgIHlpZWxkIHBhdHRlcm5bOjBdCi0gICAgeWllbGQgZnJvbSBfcmxpc3RkaXIoZGlybmFtZSkKKyAgICB5aWVsZCBmcm9tIF9ybGlzdGRpcihkaXJuYW1lLCBkaXJvbmx5KQogCi0jIFJlY3Vyc2l2ZWx5IHlpZWxkcyByZWxhdGl2ZSBwYXRobmFtZXMgaW5zaWRlIGEgbGl0ZXJhbCBkaXJlY3RvcnkuCi1kZWYgX3JsaXN0ZGlyKGRpcm5hbWUpOgorIyBJZiBkaXJvbmx5IGlzIGZhbHNlLCB5aWVsZHMgYWxsIGZpbGUgbmFtZXMgaW5zaWRlIGEgZGlyZWN0b3J5LgorIyBJZiBkaXJvbmx5IGlzIHRydWUsIHlpZWxkcyBvbmx5IGRpcmVjdG9yeSBuYW1lcy4KK2RlZiBfaXRlcmRpcihkaXJuYW1lLCBkaXJvbmx5KToKICAgICBpZiBub3QgZGlybmFtZToKICAgICAgICAgaWYgaXNpbnN0YW5jZShkaXJuYW1lLCBieXRlcyk6CiAgICAgICAgICAgICBkaXJuYW1lID0gYnl0ZXMob3MuY3VyZGlyLCAnQVNDSUknKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZGlybmFtZSA9IG9zLmN1cmRpcgogICAgIHRyeToKLSAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcm5hbWUpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICB3aXRoIG9zLnNjYW5kaXIoZGlybmFtZSkgYXMgaXQ6CisgICAgICAgICAgICBmb3IgZW50cnkgaW4gaXQ6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGlyb25seSBvciBlbnRyeS5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVudHJ5Lm5hbWUKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4KKworIyBSZWN1cnNpdmVseSB5aWVsZHMgcmVsYXRpdmUgcGF0aG5hbWVzIGluc2lkZSBhIGxpdGVyYWwgZGlyZWN0b3J5LgorZGVmIF9ybGlzdGRpcihkaXJuYW1lLCBkaXJvbmx5KToKKyAgICBuYW1lcyA9IGxpc3QoX2l0ZXJkaXIoZGlybmFtZSwgZGlyb25seSkpCiAgICAgZm9yIHggaW4gbmFtZXM6CiAgICAgICAgIGlmIG5vdCBfaXNoaWRkZW4oeCk6CiAgICAgICAgICAgICB5aWVsZCB4CiAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIHgpIGlmIGRpcm5hbWUgZWxzZSB4Ci0gICAgICAgICAgICBmb3IgeSBpbiBfcmxpc3RkaXIocGF0aCk6CisgICAgICAgICAgICBmb3IgeSBpbiBfcmxpc3RkaXIocGF0aCwgZGlyb25seSk6CiAgICAgICAgICAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKHgsIHkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL2d6aXAucHkgYi9MaWIvZ3ppcC5weQppbmRleCBkYTQ0NzllLi43NmFiNDk3IDEwMDY0NAotLS0gYS9MaWIvZ3ppcC5weQorKysgYi9MaWIvZ3ppcC5weQpAQCAtNDksNyArNDksNyBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ25ld2xpbmUnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQogCiAgICAgZ3pfbW9kZSA9IG1vZGUucmVwbGFjZSgidCIsICIiKQotICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMsIG9zLlBhdGhMaWtlKSk6CiAgICAgICAgIGJpbmFyeV9maWxlID0gR3ppcEZpbGUoZmlsZW5hbWUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwpCiAgICAgZWxpZiBoYXNhdHRyKGZpbGVuYW1lLCAicmVhZCIpIG9yIGhhc2F0dHIoZmlsZW5hbWUsICJ3cml0ZSIpOgogICAgICAgICBiaW5hcnlfZmlsZSA9IEd6aXBGaWxlKE5vbmUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwsIGZpbGVuYW1lKQpAQCAtMTY1LDYgKzE2NSw4IEBACiAgICAgICAgICAgICBmaWxlbmFtZSA9IGdldGF0dHIoZmlsZW9iaiwgJ25hbWUnLCAnJykKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gJycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQogICAgICAgICBpZiBtb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICBtb2RlID0gZ2V0YXR0cihmaWxlb2JqLCAnbW9kZScsICdyYicpCiAKQEAgLTM1NywxMCArMzU5LDEwIEBACiAgICAgICAgICAgICBpZiBvZmZzZXQgPCBzZWxmLm9mZnNldDoKICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdOZWdhdGl2ZSBzZWVrIGluIHdyaXRlIG1vZGUnKQogICAgICAgICAgICAgY291bnQgPSBvZmZzZXQgLSBzZWxmLm9mZnNldAotICAgICAgICAgICAgY2h1bmsgPSBieXRlcygxMDI0KQorICAgICAgICAgICAgY2h1bmsgPSBiJ1wwJyAqIDEwMjQKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGNvdW50IC8vIDEwMjQpOgogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoY2h1bmspCi0gICAgICAgICAgICBzZWxmLndyaXRlKGJ5dGVzKGNvdW50ICUgMTAyNCkpCisgICAgICAgICAgICBzZWxmLndyaXRlKGInXDAnICogKGNvdW50ICUgMTAyNCkpCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlID09IFJFQUQ6CiAgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKZGlmZiAtLWdpdCBhL0xpYi9oYXNobGliLnB5IGIvTGliL2hhc2hsaWIucHkKaW5kZXggMzE2Y2VjZS4uMDUzYTdhZCAxMDA2NDQKLS0tIGEvTGliL2hhc2hsaWIucHkKKysrIGIvTGliL2hhc2hsaWIucHkKQEAgLTQsMTQgKzQsMTUgQEAKIAogX19kb2NfXyA9ICIiImhhc2hsaWIgbW9kdWxlIC0gQSBjb21tb24gaW50ZXJmYWNlIHRvIG1hbnkgaGFzaCBmdW5jdGlvbnMuCiAKLW5ldyhuYW1lLCBkYXRhPWInJykgLSByZXR1cm5zIGEgbmV3IGhhc2ggb2JqZWN0IGltcGxlbWVudGluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBoYXNoIGZ1bmN0aW9uOyBpbml0aWFsaXppbmcgdGhlIGhhc2gKLSAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZ2l2ZW4gYmluYXJ5IGRhdGEuCituZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKSAtIHJldHVybnMgYSBuZXcgaGFzaCBvYmplY3QgaW1wbGVtZW50aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBoYXNoIGZ1bmN0aW9uOyBpbml0aWFsaXppbmcgdGhlIGhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIGdpdmVuIGJpbmFyeSBkYXRhLgogCiBOYW1lZCBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgYXJlIGFsc28gYXZhaWxhYmxlLCB0aGVzZSBhcmUgZmFzdGVyCiB0aGFuIHVzaW5nIG5ldyhuYW1lKToKIAotbWQ1KCksIHNoYTEoKSwgc2hhMjI0KCksIHNoYTI1NigpLCBzaGEzODQoKSwgYW5kIHNoYTUxMigpCittZDUoKSwgc2hhMSgpLCBzaGEyMjQoKSwgc2hhMjU2KCksIHNoYTM4NCgpLCBzaGE1MTIoKSwgYmxha2UyYigpLCBibGFrZTJzKCksCitzaGEzXzIyNCwgc2hhM18yNTYsIHNoYTNfMzg0LCBzaGEzXzUxMiwgc2hha2VfMTI4LCBhbmQgc2hha2VfMjU2LgogCiBNb3JlIGFsZ29yaXRobXMgbWF5IGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtIGJ1dCB0aGUgYWJvdmUgYXJlIGd1YXJhbnRlZWQKIHRvIGV4aXN0LiAgU2VlIHRoZSBhbGdvcml0aG1zX2d1YXJhbnRlZWQgYW5kIGFsZ29yaXRobXNfYXZhaWxhYmxlIGF0dHJpYnV0ZXMKQEAgLTU0LDcgKzU1LDExIEBACiAKICMgVGhpcyB0dXBsZSBhbmQgX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcigpIG11c3QgYmUgbW9kaWZpZWQgaWYgYSBuZXcKICMgYWx3YXlzIGF2YWlsYWJsZSBhbGdvcml0aG0gaXMgYWRkZWQuCi1fX2Fsd2F5c19zdXBwb3J0ZWQgPSAoJ21kNScsICdzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicpCitfX2Fsd2F5c19zdXBwb3J0ZWQgPSAoJ21kNScsICdzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicsCisgICAgICAgICAgICAgICAgICAgICAgJ2JsYWtlMmInLCAnYmxha2UycycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NoYTNfMjI0JywgJ3NoYTNfMjU2JywgJ3NoYTNfMzg0JywgJ3NoYTNfNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAnc2hha2VfMTI4JywgJ3NoYWtlXzI1NicpCisKIAogYWxnb3JpdGhtc19ndWFyYW50ZWVkID0gc2V0KF9fYWx3YXlzX3N1cHBvcnRlZCkKIGFsZ29yaXRobXNfYXZhaWxhYmxlID0gc2V0KF9fYWx3YXlzX3N1cHBvcnRlZCkKQEAgLTg1LDYgKzkwLDE5IEBACiAgICAgICAgICAgICBpbXBvcnQgX3NoYTUxMgogICAgICAgICAgICAgY2FjaGVbJ1NIQTM4NCddID0gY2FjaGVbJ3NoYTM4NCddID0gX3NoYTUxMi5zaGEzODQKICAgICAgICAgICAgIGNhY2hlWydTSEE1MTInXSA9IGNhY2hlWydzaGE1MTInXSA9IF9zaGE1MTIuc2hhNTEyCisgICAgICAgIGVsaWYgbmFtZSBpbiAoJ2JsYWtlMmInLCAnYmxha2UycycpOgorICAgICAgICAgICAgaW1wb3J0IF9ibGFrZTIKKyAgICAgICAgICAgIGNhY2hlWydibGFrZTJiJ10gPSBfYmxha2UyLmJsYWtlMmIKKyAgICAgICAgICAgIGNhY2hlWydibGFrZTJzJ10gPSBfYmxha2UyLmJsYWtlMnMKKyAgICAgICAgZWxpZiBuYW1lIGluIHsnc2hhM18yMjQnLCAnc2hhM18yNTYnLCAnc2hhM18zODQnLCAnc2hhM181MTInLAorICAgICAgICAgICAgICAgICAgICAgICdzaGFrZV8xMjgnLCAnc2hha2VfMjU2J306CisgICAgICAgICAgICBpbXBvcnQgX3NoYTMKKyAgICAgICAgICAgIGNhY2hlWydzaGEzXzIyNCddID0gX3NoYTMuc2hhM18yMjQKKyAgICAgICAgICAgIGNhY2hlWydzaGEzXzI1NiddID0gX3NoYTMuc2hhM18yNTYKKyAgICAgICAgICAgIGNhY2hlWydzaGEzXzM4NCddID0gX3NoYTMuc2hhM18zODQKKyAgICAgICAgICAgIGNhY2hlWydzaGEzXzUxMiddID0gX3NoYTMuc2hhM181MTIKKyAgICAgICAgICAgIGNhY2hlWydzaGFrZV8xMjgnXSA9IF9zaGEzLnNoYWtlXzEyOAorICAgICAgICAgICAgY2FjaGVbJ3NoYWtlXzI1NiddID0gX3NoYTMuc2hha2VfMjU2CiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzICAjIG5vIGV4dGVuc2lvbiBtb2R1bGUsIHRoaXMgaGFzaCBpcyB1bnN1cHBvcnRlZC4KIApAQCAtOTYsNiArMTE0LDkgQEAKIAogCiBkZWYgX19nZXRfb3BlbnNzbF9jb25zdHJ1Y3RvcihuYW1lKToKKyAgICBpZiBuYW1lIGluIHsnYmxha2UyYicsICdibGFrZTJzJ306CisgICAgICAgICMgUHJlZmVyIG91ciBibGFrZTIgaW1wbGVtZW50YXRpb24uCisgICAgICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpCiAgICAgdHJ5OgogICAgICAgICBmID0gZ2V0YXR0cihfaGFzaGxpYiwgJ29wZW5zc2xfJyArIG5hbWUpCiAgICAgICAgICMgQWxsb3cgdGhlIEMgbW9kdWxlIHRvIHJhaXNlIFZhbHVlRXJyb3IuICBUaGUgZnVuY3Rpb24gd2lsbCBiZQpAQCAtMTA3LDE3ICsxMjgsMjMgQEAKICAgICAgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkKIAogCi1kZWYgX19weV9uZXcobmFtZSwgZGF0YT1iJycpOgorZGVmIF9fcHlfbmV3KG5hbWUsIGRhdGE9YicnLCAqKmt3YXJncyk6CisgICAgIiIibmV3KG5hbWUsIGRhdGE9YicnLCAqKmt3YXJncykgLSBSZXR1cm4gYSBuZXcgaGFzaGluZyBvYmplY3QgdXNpbmcgdGhlCisgICAgbmFtZWQgYWxnb3JpdGhtOyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggZGF0YSAod2hpY2ggbXVzdCBiZSBieXRlcykuCisgICAgIiIiCisgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkoZGF0YSwgKiprd2FyZ3MpCisKKworZGVmIF9faGFzaF9uZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKToKICAgICAiIiJuZXcobmFtZSwgZGF0YT1iJycpIC0gUmV0dXJuIGEgbmV3IGhhc2hpbmcgb2JqZWN0IHVzaW5nIHRoZSBuYW1lZCBhbGdvcml0aG07CiAgICAgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGRhdGEgKHdoaWNoIG11c3QgYmUgYnl0ZXMpLgogICAgICIiIgotICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpKGRhdGEpCi0KLQotZGVmIF9faGFzaF9uZXcobmFtZSwgZGF0YT1iJycpOgotICAgICIiIm5ldyhuYW1lLCBkYXRhPWInJykgLSBSZXR1cm4gYSBuZXcgaGFzaGluZyBvYmplY3QgdXNpbmcgdGhlIG5hbWVkIGFsZ29yaXRobTsKLSAgICBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggZGF0YSAod2hpY2ggbXVzdCBiZSBieXRlcykuCi0gICAgIiIiCisgICAgaWYgbmFtZSBpbiB7J2JsYWtlMmInLCAnYmxha2Uycyd9OgorICAgICAgICAjIFByZWZlciBvdXIgYmxha2UyIGltcGxlbWVudGF0aW9uLgorICAgICAgICAjIE9wZW5TU0wgMS4xLjAgY29tZXMgd2l0aCBhIGxpbWl0ZWQgaW1wbGVtZW50YXRpb24gb2YgYmxha2UyYi9zLgorICAgICAgICAjIEl0IGRvZXMgbmVpdGhlciBzdXBwb3J0IGtleWVkIGJsYWtlMiBub3IgYWR2YW5jZWQgZmVhdHVyZXMgbGlrZQorICAgICAgICAjIHNhbHQsIHBlcnNvbmFsLCB0cmVlIGhhc2hpbmcgb3IgU1NFLgorICAgICAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKShkYXRhLCAqKmt3YXJncykKICAgICB0cnk6CiAgICAgICAgIHJldHVybiBfaGFzaGxpYi5uZXcobmFtZSwgZGF0YSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKQEAgLTIwMiw2ICsyMjksMTIgQEAKIAogICAgICAgICByZXR1cm4gZGtleVs6ZGtsZW5dCiAKK3RyeToKKyAgICAjIE9wZW5TU0wncyBzY3J5cHQgcmVxdWlyZXMgT3BlblNTTCAxLjErCisgICAgZnJvbSBfaGFzaGxpYiBpbXBvcnQgc2NyeXB0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworCiAKIGZvciBfX2Z1bmNfbmFtZSBpbiBfX2Fsd2F5c19zdXBwb3J0ZWQ6CiAgICAgIyB0cnkgdGhlbSBhbGwsIHNvbWUgbWF5IG5vdCB3b3JrIGR1ZSB0byB0aGUgT3BlblNTTApAQCAtMjEyLDYgKzI0NSw3IEBACiAgICAgICAgIGltcG9ydCBsb2dnaW5nCiAgICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKCdjb2RlIGZvciBoYXNoICVzIHdhcyBub3QgZm91bmQuJywgX19mdW5jX25hbWUpCiAKKwogIyBDbGVhbnVwIGxvY2FscygpCiBkZWwgX19hbHdheXNfc3VwcG9ydGVkLCBfX2Z1bmNfbmFtZSwgX19nZXRfaGFzaAogZGVsIF9fcHlfbmV3LCBfX2hhc2hfbmV3LCBfX2dldF9vcGVuc3NsX2NvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9MaWIvaG1hYy5weSBiL0xpYi9obWFjLnB5CmluZGV4IDc3Nzg1YTIuLjEyMTAyOWEgMTAwNjQ0Ci0tLSBhL0xpYi9obWFjLnB5CisrKyBiL0xpYi9obWFjLnB5CkBAIC03Nyw3ICs3Nyw3IEBACiAgICAgICAgIGlmIGxlbihrZXkpID4gYmxvY2tzaXplOgogICAgICAgICAgICAga2V5ID0gc2VsZi5kaWdlc3RfY29ucyhrZXkpLmRpZ2VzdCgpCiAKLSAgICAgICAga2V5ID0ga2V5ICsgYnl0ZXMoYmxvY2tzaXplIC0gbGVuKGtleSkpCisgICAgICAgIGtleSA9IGtleS5sanVzdChibG9ja3NpemUsIGInXDAnKQogICAgICAgICBzZWxmLm91dGVyLnVwZGF0ZShrZXkudHJhbnNsYXRlKHRyYW5zXzVDKSkKICAgICAgICAgc2VsZi5pbm5lci51cGRhdGUoa2V5LnRyYW5zbGF0ZSh0cmFuc18zNikpCiAgICAgICAgIGlmIG1zZyBpcyBub3QgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9odG1sL3BhcnNlci5weSBiL0xpYi9odG1sL3BhcnNlci5weQppbmRleCBiNzgxYzYzLi5lZjg2OWJjIDEwMDY0NAotLS0gYS9MaWIvaHRtbC9wYXJzZXIucHkKKysrIGIvTGliL2h0bWwvcGFyc2VyLnB5CkBAIC0zNCw3ICszNCw3IEBACiAjICAgICBleHBsb2RlLCBzbyBkb24ndCBkbyBpdC4KICMgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI3RhZy1vcGVuLXN0YXRlCiAjIGFuZCBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90b2tlbml6YXRpb24uaHRtbCN0YWctbmFtZS1zdGF0ZQotdGFnZmluZF90b2xlcmFudCA9IHJlLmNvbXBpbGUoJyhbYS16QS1aXVteXHRcblxyXGYgLz5ceDAwXSopKD86XHN8Lyg/IT4pKSonKQordGFnZmluZF90b2xlcmFudCA9IHJlLmNvbXBpbGUocicoW2EtekEtWl1bXlx0XG5cclxmIC8+XHgwMF0qKSg/OlxzfC8oPyE+KSkqJykKIGF0dHJmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZSgKICAgICByJygoPzw9W1wnIlxzL10pW15ccy8+XVteXHMvPT5dKikoXHMqPStccyonCiAgICAgcicoXCdbXlwnXSpcJ3wiW14iXSoifCg/IVtcJyJdKVtePlxzXSopKT8oPzpcc3wvKD8hPikpKicpCkBAIC01Niw3ICs1Niw3IEBACiBlbmRlbmR0YWcgPSByZS5jb21waWxlKCc+JykKICMgdGhlIEhUTUwgNSBzcGVjLCBzZWN0aW9uIDguMS4yLjIsIGRvZXNuJ3QgYWxsb3cgc3BhY2VzIGJldHdlZW4KICMgPC8gYW5kIHRoZSB0YWcgbmFtZSwgc28gbWF5YmUgdGhpcyBzaG91bGQgYmUgZml4ZWQKLWVuZHRhZ2ZpbmQgPSByZS5jb21waWxlKCc8L1xzKihbYS16QS1aXVstLmEtekEtWjAtOTpfXSopXHMqPicpCitlbmR0YWdmaW5kID0gcmUuY29tcGlsZShyJzwvXHMqKFthLXpBLVpdWy0uYS16QS1aMC05Ol9dKilccyo+JykKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2NsaWVudC5weSBiL0xpYi9odHRwL2NsaWVudC5weQppbmRleCAzNTJjMTAxLi5hOGU1OWI5IDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jbGllbnQucHkKKysrIGIvTGliL2h0dHAvY2xpZW50LnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiSFRUUC8xLjEgY2xpZW50IGxpYnJhcnkKK3IiIiJIVFRQLzEuMSBjbGllbnQgbGlicmFyeQogCiA8aW50cm8gc3R1ZmYgZ29lcyBoZXJlPgogPG90aGVyIHN0dWZmLCB0b28+CkBAIC00MjAsNiArNDIwLDcgQEAKICAgICAgICAgICAgIHNlbGYuZnAuZmx1c2goKQogCiAgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJBbHdheXMgcmV0dXJucyBUcnVlIiIiCiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAjIEVuZCBvZiAicmF3IHN0cmVhbSIgbWV0aG9kcwpAQCAtNDY3LDYgKzQ2OCwxMCBAQAogICAgICAgICAgICAgcmV0dXJuIHMKIAogICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgIiIiUmVhZCB1cCB0byBsZW4oYikgYnl0ZXMgaW50byBieXRlYXJyYXkgYiBhbmQgcmV0dXJuIHRoZSBudW1iZXIKKyAgICAgICAgb2YgYnl0ZXMgcmVhZC4KKyAgICAgICAgIiIiCisKICAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIDAKIApAQCAtNzA2LDYgKzcxMSwxNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5mcC5maWxlbm8oKQogCiAgICAgZGVmIGdldGhlYWRlcihzZWxmLCBuYW1lLCBkZWZhdWx0PU5vbmUpOgorICAgICAgICAnJydSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIG1hdGNoaW5nICpuYW1lKi4KKworICAgICAgICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hpbmcgaGVhZGVycywgdGhlIHZhbHVlcyBhcmUKKyAgICAgICAgY29tYmluZWQgaW50byBhIHNpbmdsZSBzdHJpbmcgc2VwYXJhdGVkIGJ5IGNvbW1hcyBhbmQgc3BhY2VzLgorCisgICAgICAgIElmIG5vIG1hdGNoaW5nIGhlYWRlciBpcyBmb3VuZCwgcmV0dXJucyAqZGVmYXVsdCogb3IgTm9uZSBpZgorICAgICAgICB0aGUgKmRlZmF1bHQqIGlzIG5vdCBzcGVjaWZpZWQuCisKKyAgICAgICAgSWYgdGhlIGhlYWRlcnMgYXJlIHVua25vd24sIHJhaXNlcyBodHRwLmNsaWVudC5SZXNwb25zZU5vdFJlYWR5LgorCisgICAgICAgICcnJwogICAgICAgICBpZiBzZWxmLmhlYWRlcnMgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFJlc3BvbnNlTm90UmVhZHkoKQogICAgICAgICBoZWFkZXJzID0gc2VsZi5oZWFkZXJzLmdldF9hbGwobmFtZSkgb3IgZGVmYXVsdApAQCAtNzI4LDEyICs3NDQsNDUgQEAKICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkLXN0eWxlIHVybGxpYiByZXNwb25zZXMuCiAKICAgICBkZWYgaW5mbyhzZWxmKToKKyAgICAgICAgJycnUmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgbWltZXRvb2xzLk1lc3NhZ2UgY29udGFpbmluZworICAgICAgICBtZXRhLWluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgVVJMLgorCisgICAgICAgIFdoZW4gdGhlIG1ldGhvZCBpcyBIVFRQLCB0aGVzZSBoZWFkZXJzIGFyZSB0aG9zZSByZXR1cm5lZCBieQorICAgICAgICB0aGUgc2VydmVyIGF0IHRoZSBoZWFkIG9mIHRoZSByZXRyaWV2ZWQgSFRNTCBwYWdlIChpbmNsdWRpbmcKKyAgICAgICAgQ29udGVudC1MZW5ndGggYW5kIENvbnRlbnQtVHlwZSkuCisKKyAgICAgICAgV2hlbiB0aGUgbWV0aG9kIGlzIEZUUCwgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIgd2lsbCBiZQorICAgICAgICBwcmVzZW50IGlmIChhcyBpcyBub3cgdXN1YWwpIHRoZSBzZXJ2ZXIgcGFzc2VkIGJhY2sgYSBmaWxlCisgICAgICAgIGxlbmd0aCBpbiByZXNwb25zZSB0byB0aGUgRlRQIHJldHJpZXZhbCByZXF1ZXN0LiBBCisgICAgICAgIENvbnRlbnQtVHlwZSBoZWFkZXIgd2lsbCBiZSBwcmVzZW50IGlmIHRoZSBNSU1FIHR5cGUgY2FuIGJlCisgICAgICAgIGd1ZXNzZWQuCisKKyAgICAgICAgV2hlbiB0aGUgbWV0aG9kIGlzIGxvY2FsLWZpbGUsIHJldHVybmVkIGhlYWRlcnMgd2lsbCBpbmNsdWRlCisgICAgICAgIGEgRGF0ZSByZXByZXNlbnRpbmcgdGhlIGZpbGUncyBsYXN0LW1vZGlmaWVkIHRpbWUsIGEKKyAgICAgICAgQ29udGVudC1MZW5ndGggZ2l2aW5nIGZpbGUgc2l6ZSwgYW5kIGEgQ29udGVudC1UeXBlCisgICAgICAgIGNvbnRhaW5pbmcgYSBndWVzcyBhdCB0aGUgZmlsZSdzIHR5cGUuIFNlZSBhbHNvIHRoZQorICAgICAgICBkZXNjcmlwdGlvbiBvZiB0aGUgbWltZXRvb2xzIG1vZHVsZS4KKworICAgICAgICAnJycKICAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVycwogCiAgICAgZGVmIGdldHVybChzZWxmKToKKyAgICAgICAgJycnUmV0dXJuIHRoZSByZWFsIFVSTCBvZiB0aGUgcGFnZS4KKworICAgICAgICBJbiBzb21lIGNhc2VzLCB0aGUgSFRUUCBzZXJ2ZXIgcmVkaXJlY3RzIGEgY2xpZW50IHRvIGFub3RoZXIKKyAgICAgICAgVVJMLiBUaGUgdXJsb3BlbigpIGZ1bmN0aW9uIGhhbmRsZXMgdGhpcyB0cmFuc3BhcmVudGx5LCBidXQgaW4KKyAgICAgICAgc29tZSBjYXNlcyB0aGUgY2FsbGVyIG5lZWRzIHRvIGtub3cgd2hpY2ggVVJMIHRoZSBjbGllbnQgd2FzCisgICAgICAgIHJlZGlyZWN0ZWQgdG8uIFRoZSBnZXR1cmwoKSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gZ2V0IGF0IHRoaXMKKyAgICAgICAgcmVkaXJlY3RlZCBVUkwuCisKKyAgICAgICAgJycnCiAgICAgICAgIHJldHVybiBzZWxmLnVybAogCiAgICAgZGVmIGdldGNvZGUoc2VsZik6CisgICAgICAgICcnJ1JldHVybiB0aGUgSFRUUCBzdGF0dXMgY29kZSB0aGF0IHdhcyBzZW50IHdpdGggdGhlIHJlc3BvbnNlLAorICAgICAgICBvciBOb25lIGlmIHRoZSBVUkwgaXMgbm90IGFuIEhUVFAgVVJMLgorCisgICAgICAgICcnJwogICAgICAgICByZXR1cm4gc2VsZi5zdGF0dXMKIAogY2xhc3MgSFRUUENvbm5lY3Rpb246CkBAIC03NDYsNiArNzk1LDQ0IEBACiAgICAgYXV0b19vcGVuID0gMQogICAgIGRlYnVnbGV2ZWwgPSAwCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9pc190ZXh0SU8oc3RyZWFtKToKKyAgICAgICAgIiIiVGVzdCB3aGV0aGVyIGEgZmlsZS1saWtlIG9iamVjdCBpcyBhIHRleHQgb3IgYSBiaW5hcnkgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uoc3RyZWFtLCBpby5UZXh0SU9CYXNlKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZ2V0X2NvbnRlbnRfbGVuZ3RoKGJvZHksIG1ldGhvZCk6CisgICAgICAgICIiIkdldCB0aGUgY29udGVudC1sZW5ndGggYmFzZWQgb24gdGhlIGJvZHkuCisKKyAgICAgICAgSWYgdGhlIGJvZHkgaXMgTm9uZSwgd2Ugc2V0IENvbnRlbnQtTGVuZ3RoOiAwIGZvciBtZXRob2RzIHRoYXQgZXhwZWN0CisgICAgICAgIGEgYm9keSAoUkZDIDcyMzAsIFNlY3Rpb24gMy4zLjIpLiBXZSBhbHNvIHNldCB0aGUgQ29udGVudC1MZW5ndGggZm9yCisgICAgICAgIGFueSBtZXRob2QgaWYgdGhlIGJvZHkgaXMgYSBzdHIgb3IgYnl0ZXMtbGlrZSBvYmplY3QgYW5kIG5vdCBhIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBib2R5IGlzIE5vbmU6CisgICAgICAgICAgICAjIGRvIGFuIGV4cGxpY2l0IGNoZWNrIGZvciBub3QgTm9uZSBoZXJlIHRvIGRpc3Rpbmd1aXNoCisgICAgICAgICAgICAjIGJldHdlZW4gdW5zZXQgYW5kIHNldCBidXQgZW1wdHkKKyAgICAgICAgICAgIGlmIG1ldGhvZC51cHBlcigpIGluIF9NRVRIT0RTX0VYUEVDVElOR19CT0RZOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgaGFzYXR0cihib2R5LCAncmVhZCcpOgorICAgICAgICAgICAgIyBmaWxlLWxpa2Ugb2JqZWN0LgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIGRvZXMgaXQgaW1wbGVtZW50IHRoZSBidWZmZXIgcHJvdG9jb2wgKGJ5dGVzLCBieXRlYXJyYXksIGFycmF5KT8KKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhib2R5KQorICAgICAgICAgICAgcmV0dXJuIG12Lm5ieXRlcworICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYm9keSwgc3RyKToKKyAgICAgICAgICAgIHJldHVybiBsZW4oYm9keSkKKworICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQ9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CkBAIC04ODQsMTggKzk3MSw5IEBACiAgICAgICAgIGlmIGhhc2F0dHIoZGF0YSwgInJlYWQiKSA6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgIHByaW50KCJzZW5kSW5nIGEgcmVhZCgpYWJsZSIpCi0gICAgICAgICAgICBlbmNvZGUgPSBGYWxzZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZGUgPSBkYXRhLm1vZGUKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAjIGlvLkJ5dGVzSU8gYW5kIG90aGVyIGZpbGUtbGlrZSBvYmplY3RzIGRvbid0IGhhdmUgYSBgbW9kZWAKLSAgICAgICAgICAgICAgICAjIGF0dHJpYnV0ZS4KLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmICJiIiBub3QgaW4gbW9kZToKLSAgICAgICAgICAgICAgICAgICAgZW5jb2RlID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoImVuY29kaW5nIGZpbGUgdXNpbmcgaXNvLTg4NTktMSIpCisgICAgICAgICAgICBlbmNvZGUgPSBzZWxmLl9pc190ZXh0SU8oZGF0YSkKKyAgICAgICAgICAgIGlmIGVuY29kZSBhbmQgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgICAgICBwcmludCgiZW5jb2RpbmcgZmlsZSB1c2luZyBpc28tODg1OS0xIikKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgZGF0YWJsb2NrID0gZGF0YS5yZWFkKGJsb2Nrc2l6ZSkKICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YWJsb2NrOgpAQCAtOTIxLDcgKzk5OSwyMiBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fYnVmZmVyLmFwcGVuZChzKQogCi0gICAgZGVmIF9zZW5kX291dHB1dChzZWxmLCBtZXNzYWdlX2JvZHk9Tm9uZSk6CisgICAgZGVmIF9yZWFkX3JlYWRhYmxlKHNlbGYsIHJlYWRhYmxlKToKKyAgICAgICAgYmxvY2tzaXplID0gODE5MgorICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgcHJpbnQoInNlbmRJbmcgYSByZWFkKClhYmxlIikKKyAgICAgICAgZW5jb2RlID0gc2VsZi5faXNfdGV4dElPKHJlYWRhYmxlKQorICAgICAgICBpZiBlbmNvZGUgYW5kIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICBwcmludCgiZW5jb2RpbmcgZmlsZSB1c2luZyBpc28tODg1OS0xIikKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGRhdGFibG9jayA9IHJlYWRhYmxlLnJlYWQoYmxvY2tzaXplKQorICAgICAgICAgICAgaWYgbm90IGRhdGFibG9jazoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgZW5jb2RlOgorICAgICAgICAgICAgICAgIGRhdGFibG9jayA9IGRhdGFibG9jay5lbmNvZGUoImlzby04ODU5LTEiKQorICAgICAgICAgICAgeWllbGQgZGF0YWJsb2NrCisKKyAgICBkZWYgX3NlbmRfb3V0cHV0KHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lLCBlbmNvZGVfY2h1bmtlZD1GYWxzZSk6CiAgICAgICAgICIiIlNlbmQgdGhlIGN1cnJlbnRseSBidWZmZXJlZCByZXF1ZXN0IGFuZCBjbGVhciB0aGUgYnVmZmVyLgogCiAgICAgICAgIEFwcGVuZHMgYW4gZXh0cmEgXFxyXFxuIHRvIHRoZSBidWZmZXIuCkBAIC05MzAsMTAgKzEwMjMsNTAgQEAKICAgICAgICAgc2VsZi5fYnVmZmVyLmV4dGVuZCgoYiIiLCBiIiIpKQogICAgICAgICBtc2cgPSBiIlxyXG4iLmpvaW4oc2VsZi5fYnVmZmVyKQogICAgICAgICBkZWwgc2VsZi5fYnVmZmVyWzpdCi0KICAgICAgICAgc2VsZi5zZW5kKG1zZykKKwogICAgICAgICBpZiBtZXNzYWdlX2JvZHkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNlbmQobWVzc2FnZV9ib2R5KQorCisgICAgICAgICAgICAjIGNyZWF0ZSBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIHRvIG1lc3NhZ2VfYm9keQorICAgICAgICAgICAgaWYgaGFzYXR0cihtZXNzYWdlX2JvZHksICdyZWFkJyk6CisgICAgICAgICAgICAgICAgIyBMZXQgZmlsZS1saWtlIHRha2UgcHJlY2VkZW5jZSBvdmVyIGJ5dGUtbGlrZS4gIFRoaXMKKyAgICAgICAgICAgICAgICAjIGlzIG5lZWRlZCB0byBhbGxvdyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiBtbWFwJ2VkCisgICAgICAgICAgICAgICAgIyBmaWxlcyB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQuCisgICAgICAgICAgICAgICAgY2h1bmtzID0gc2VsZi5fcmVhZF9yZWFkYWJsZShtZXNzYWdlX2JvZHkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGlzIHNvbGVseSB0byBjaGVjayB0byBzZWUgaWYgbWVzc2FnZV9ib2R5CisgICAgICAgICAgICAgICAgICAgICMgaW1wbGVtZW50cyB0aGUgYnVmZmVyIEFQSS4gIGl0IC93b3VsZC8gYmUgZWFzaWVyCisgICAgICAgICAgICAgICAgICAgICMgdG8gY2FwdHVyZSBpZiBQeU9iamVjdF9DaGVja0J1ZmZlciB3YXMgZXhwb3NlZAorICAgICAgICAgICAgICAgICAgICAjIHRvIFB5dGhvbi4KKyAgICAgICAgICAgICAgICAgICAgbWVtb3J5dmlldyhtZXNzYWdlX2JvZHkpCisgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzID0gaXRlcihtZXNzYWdlX2JvZHkpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm1lc3NhZ2VfYm9keSBzaG91bGQgYmUgYSBieXRlcy1saWtlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IG9yIGFuIGl0ZXJhYmxlLCBnb3QgJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSB0eXBlKG1lc3NhZ2VfYm9keSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgb2JqZWN0IGltcGxlbWVudHMgdGhlIGJ1ZmZlciBpbnRlcmZhY2UgYW5kCisgICAgICAgICAgICAgICAgICAgICMgY2FuIGJlIHBhc3NlZCBkaXJlY3RseSBpbnRvIHNvY2tldCBtZXRob2RzCisgICAgICAgICAgICAgICAgICAgIGNodW5rcyA9IChtZXNzYWdlX2JvZHksKQorCisgICAgICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBjaHVuazoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdaZXJvIGxlbmd0aCBjaHVuayBpZ25vcmVkJykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGVuY29kZV9jaHVua2VkIGFuZCBzZWxmLl9odHRwX3ZzbiA9PSAxMToKKyAgICAgICAgICAgICAgICAgICAgIyBjaHVua2VkIGVuY29kaW5nCisgICAgICAgICAgICAgICAgICAgIGNodW5rID0gZid7bGVuKGNodW5rKTpYfVxyXG4nLmVuY29kZSgnYXNjaWknKSArIGNodW5rIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICsgYidcclxuJworICAgICAgICAgICAgICAgIHNlbGYuc2VuZChjaHVuaykKKworICAgICAgICAgICAgaWYgZW5jb2RlX2NodW5rZWQgYW5kIHNlbGYuX2h0dHBfdnNuID09IDExOgorICAgICAgICAgICAgICAgICMgZW5kIGNodW5rZWQgdHJhbnNmZXIKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmQoYicwXHJcblxyXG4nKQogCiAgICAgZGVmIHB1dHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIHNraXBfaG9zdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICBza2lwX2FjY2VwdF9lbmNvZGluZz1GYWxzZSk6CkBAIC0xMDg3LDUyICsxMjIwLDI3IEBACiAgICAgICAgIGhlYWRlciA9IGhlYWRlciArIGInOiAnICsgdmFsdWUKICAgICAgICAgc2VsZi5fb3V0cHV0KGhlYWRlcikKIAotICAgIGRlZiBlbmRoZWFkZXJzKHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lKToKKyAgICBkZWYgZW5kaGVhZGVycyhzZWxmLCBtZXNzYWdlX2JvZHk9Tm9uZSwgKiwgZW5jb2RlX2NodW5rZWQ9RmFsc2UpOgogICAgICAgICAiIiJJbmRpY2F0ZSB0aGF0IHRoZSBsYXN0IGhlYWRlciBsaW5lIGhhcyBiZWVuIHNlbnQgdG8gdGhlIHNlcnZlci4KIAogICAgICAgICBUaGlzIG1ldGhvZCBzZW5kcyB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLiAgVGhlIG9wdGlvbmFsIG1lc3NhZ2VfYm9keQogICAgICAgICBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwYXNzIGEgbWVzc2FnZSBib2R5IGFzc29jaWF0ZWQgd2l0aCB0aGUKLSAgICAgICAgcmVxdWVzdC4gIFRoZSBtZXNzYWdlIGJvZHkgd2lsbCBiZSBzZW50IGluIHRoZSBzYW1lIHBhY2tldCBhcyB0aGUKLSAgICAgICAgbWVzc2FnZSBoZWFkZXJzIGlmIGl0IGlzIGEgc3RyaW5nLCBvdGhlcndpc2UgaXQgaXMgc2VudCBhcyBhIHNlcGFyYXRlCi0gICAgICAgIHBhY2tldC4KKyAgICAgICAgcmVxdWVzdC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYuX19zdGF0ZSA9PSBfQ1NfUkVRX1NUQVJURUQ6CiAgICAgICAgICAgICBzZWxmLl9fc3RhdGUgPSBfQ1NfUkVRX1NFTlQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIENhbm5vdFNlbmRIZWFkZXIoKQotICAgICAgICBzZWxmLl9zZW5kX291dHB1dChtZXNzYWdlX2JvZHkpCisgICAgICAgIHNlbGYuX3NlbmRfb3V0cHV0KG1lc3NhZ2VfYm9keSwgZW5jb2RlX2NodW5rZWQ9ZW5jb2RlX2NodW5rZWQpCiAKLSAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9KToKKyAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9LCAqLAorICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgIiIiU2VuZCBhIGNvbXBsZXRlIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4iIiIKLSAgICAgICAgc2VsZi5fc2VuZF9yZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzKQorICAgICAgICBzZWxmLl9zZW5kX3JlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMsIGVuY29kZV9jaHVua2VkKQogCi0gICAgZGVmIF9zZXRfY29udGVudF9sZW5ndGgoc2VsZiwgYm9keSwgbWV0aG9kKToKLSAgICAgICAgIyBTZXQgdGhlIGNvbnRlbnQtbGVuZ3RoIGJhc2VkIG9uIHRoZSBib2R5LiBJZiB0aGUgYm9keSBpcyAiZW1wdHkiLCB3ZQotICAgICAgICAjIHNldCBDb250ZW50LUxlbmd0aDogMCBmb3IgbWV0aG9kcyB0aGF0IGV4cGVjdCBhIGJvZHkgKFJGQyA3MjMwLAotICAgICAgICAjIFNlY3Rpb24gMy4zLjIpLiBJZiB0aGUgYm9keSBpcyBzZXQgZm9yIG90aGVyIG1ldGhvZHMsIHdlIHNldCB0aGUKLSAgICAgICAgIyBoZWFkZXIgcHJvdmlkZWQgd2UgY2FuIGZpZ3VyZSBvdXQgd2hhdCB0aGUgbGVuZ3RoIGlzLgotICAgICAgICB0aGVsZW4gPSBOb25lCi0gICAgICAgIG1ldGhvZF9leHBlY3RzX2JvZHkgPSBtZXRob2QudXBwZXIoKSBpbiBfTUVUSE9EU19FWFBFQ1RJTkdfQk9EWQotICAgICAgICBpZiBib2R5IGlzIE5vbmUgYW5kIG1ldGhvZF9leHBlY3RzX2JvZHk6Ci0gICAgICAgICAgICB0aGVsZW4gPSAnMCcKLSAgICAgICAgZWxpZiBib2R5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRoZWxlbiA9IHN0cihsZW4oYm9keSkpCi0gICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgICAgICMgSWYgdGhpcyBpcyBhIGZpbGUtbGlrZSBvYmplY3QsIHRyeSB0bwotICAgICAgICAgICAgICAgICMgZnN0YXQgaXRzIGZpbGUgZGVzY3JpcHRvcgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgdGhlbGVuID0gc3RyKG9zLmZzdGF0KGJvZHkuZmlsZW5vKCkpLnN0X3NpemUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qgc2VuZCBhIGxlbmd0aCBpZiB0aGlzIGZhaWxlZAotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOiBwcmludCgiQ2Fubm90IHN0YXQhISIpCi0KLSAgICAgICAgaWYgdGhlbGVuIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgdGhlbGVuKQotCi0gICAgZGVmIF9zZW5kX3JlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpOgorICAgIGRlZiBfc2VuZF9yZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzLCBlbmNvZGVfY2h1bmtlZCk6CiAgICAgICAgICMgSG9ub3IgZXhwbGljaXRseSByZXF1ZXN0ZWQgSG9zdDogYW5kIEFjY2VwdC1FbmNvZGluZzogaGVhZGVycy4KLSAgICAgICAgaGVhZGVyX25hbWVzID0gZGljdC5mcm9ta2V5cyhbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnNdKQorICAgICAgICBoZWFkZXJfbmFtZXMgPSBmcm96ZW5zZXQoay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnMpCiAgICAgICAgIHNraXBzID0ge30KICAgICAgICAgaWYgJ2hvc3QnIGluIGhlYWRlcl9uYW1lczoKICAgICAgICAgICAgIHNraXBzWydza2lwX2hvc3QnXSA9IDEKQEAgLTExNDEsMTUgKzEyNDksNDAgQEAKIAogICAgICAgICBzZWxmLnB1dHJlcXVlc3QobWV0aG9kLCB1cmwsICoqc2tpcHMpCiAKKyAgICAgICAgIyBjaHVua2VkIGVuY29kaW5nIHdpbGwgaGFwcGVuIGlmIEhUVFAvMS4xIGlzIHVzZWQgYW5kIGVpdGhlcgorICAgICAgICAjIHRoZSBjYWxsZXIgcGFzc2VzIGVuY29kZV9jaHVua2VkPVRydWUgb3IgdGhlIGZvbGxvd2luZworICAgICAgICAjIGNvbmRpdGlvbnMgaG9sZDoKKyAgICAgICAgIyAxLiBjb250ZW50LWxlbmd0aCBoYXMgbm90IGJlZW4gZXhwbGljaXRseSBzZXQKKyAgICAgICAgIyAyLiB0aGUgYm9keSBpcyBhIGZpbGUgb3IgaXRlcmFibGUsIGJ1dCBub3QgYSBzdHIgb3IgYnl0ZXMtbGlrZQorICAgICAgICAjIDMuIFRyYW5zZmVyLUVuY29kaW5nIGhhcyBOT1QgYmVlbiBleHBsaWNpdGx5IHNldCBieSB0aGUgY2FsbGVyCisKICAgICAgICAgaWYgJ2NvbnRlbnQtbGVuZ3RoJyBub3QgaW4gaGVhZGVyX25hbWVzOgotICAgICAgICAgICAgc2VsZi5fc2V0X2NvbnRlbnRfbGVuZ3RoKGJvZHksIG1ldGhvZCkKKyAgICAgICAgICAgICMgb25seSBjaHVuayBib2R5IGlmIG5vdCBleHBsaWNpdGx5IHNldCBmb3IgYmFja3dhcmRzCisgICAgICAgICAgICAjIGNvbXBhdGliaWxpdHksIGFzc3VtaW5nIHRoZSBjbGllbnQgY29kZSBpcyBhbHJlYWR5IGhhbmRsaW5nIHRoZQorICAgICAgICAgICAgIyBjaHVua2luZworICAgICAgICAgICAgaWYgJ3RyYW5zZmVyLWVuY29kaW5nJyBub3QgaW4gaGVhZGVyX25hbWVzOgorICAgICAgICAgICAgICAgICMgaWYgY29udGVudC1sZW5ndGggY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZCwgZmFsbAorICAgICAgICAgICAgICAgICMgYmFjayB0byBjaHVua2VkIGVuY29kaW5nCisgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gc2VsZi5fZ2V0X2NvbnRlbnRfbGVuZ3RoKGJvZHksIG1ldGhvZCkKKyAgICAgICAgICAgICAgICBpZiBjb250ZW50X2xlbmd0aCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiBib2R5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnVW5hYmxlIHRvIGRldGVybWluZSBzaXplIG9mICVyJyAlIGJvZHkpCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKCdUcmFuc2Zlci1FbmNvZGluZycsICdjaHVua2VkJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnB1dGhlYWRlcignQ29udGVudC1MZW5ndGgnLCBzdHIoY29udGVudF9sZW5ndGgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQgPSBGYWxzZQorCiAgICAgICAgIGZvciBoZHIsIHZhbHVlIGluIGhlYWRlcnMuaXRlbXMoKToKICAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKGhkciwgdmFsdWUpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYm9keSwgc3RyKToKICAgICAgICAgICAgICMgUkZDIDI2MTYgU2VjdGlvbiAzLjcuMSBzYXlzIHRoYXQgdGV4dCBkZWZhdWx0IGhhcyBhCiAgICAgICAgICAgICAjIGRlZmF1bHQgY2hhcnNldCBvZiBpc28tODg1OS0xLgogICAgICAgICAgICAgYm9keSA9IF9lbmNvZGUoYm9keSwgJ2JvZHknKQotICAgICAgICBzZWxmLmVuZGhlYWRlcnMoYm9keSkKKyAgICAgICAgc2VsZi5lbmRoZWFkZXJzKGJvZHksIGVuY29kZV9jaHVua2VkPWVuY29kZV9jaHVua2VkKQogCiAgICAgZGVmIGdldHJlc3BvbnNlKHNlbGYpOgogICAgICAgICAiIiJHZXQgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KQEAgLTEyMzIsNiArMTM2NSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWU9Tm9uZSk6CiAgICAgICAgICAgICBzdXBlcihIVFRQU0Nvbm5lY3Rpb24sIHNlbGYpLl9faW5pdF9fKGhvc3QsIHBvcnQsIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzKQorICAgICAgICAgICAgaWYgKGtleV9maWxlIGlzIG5vdCBOb25lIG9yIGNlcnRfZmlsZSBpcyBub3QgTm9uZSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWUgaXMgbm90IE5vbmUpOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleV9maWxlLCBjZXJ0X2ZpbGUgYW5kIGNoZWNrX2hvc3RuYW1lIGFyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVwcmVjYXRlZCwgdXNlIGEgY3VzdG9tIGNvbnRleHQgaW5zdGVhZC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlfZmlsZSA9IGtleV9maWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRfZmlsZSA9IGNlcnRfZmlsZQogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llamFyLnB5IGIvTGliL2h0dHAvY29va2llamFyLnB5CmluZGV4IDZkNDU3MmEuLmFkZjk1NmQgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZWphci5weQorKysgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKQEAgLTIwMCw3ICsyMDAsNyBAQAogCiBTVFJJQ1RfREFURV9SRSA9IHJlLmNvbXBpbGUoCiAgICAgciJeW1NNVFdGXVthLXpdW2Etel0sIChcZFxkKSAoW0pGTUFTT05EXVthLXpdW2Etel0pICIKLSAgICAiKFxkXGRcZFxkKSAoXGRcZCk6KFxkXGQpOihcZFxkKSBHTVQkIiwgcmUuQVNDSUkpCisgICAgciIoXGRcZFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQiLCByZS5BU0NJSSkKIFdFRUtEQVlfUkUgPSByZS5jb21waWxlKAogICAgIHIiXig/OlN1bnxNb258VHVlfFdlZHxUaHV8RnJpfFNhdClbYS16XSosP1xzKiIsIHJlLkkgfCByZS5BU0NJSSkKIExPT1NFX0hUVFBfREFURV9SRSA9IHJlLmNvbXBpbGUoCkBAIC0yNzcsNyArMjc3LDcgQEAKICAgICByZXR1cm4gX3N0cjJ0aW1lKGRheSwgbW9uLCB5ciwgaHIsIG1pbiwgc2VjLCB0eikKIAogSVNPX0RBVEVfUkUgPSByZS5jb21waWxlKAotICAgICIiIl4KKyAgICByIiIiXgogICAgIChcZHs0fSkgICAgICAgICAgICAgICMgeWVhcgogICAgICAgIFstXC9dPwogICAgIChcZFxkPykgICAgICAgICAgICAgICMgbnVtZXJpY2FsIG1vbnRoCkBAIC00MTEsNyArNDExLDcgQEAKICAgICAgICAgICAgICAgICBwYWlycyA9IFtdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgc2tpcCBqdW5rCi0gICAgICAgICAgICAgICAgbm9uX2p1bmssIG5yX2p1bmtfY2hhcnMgPSByZS5zdWJuKCJeWz1ccztdKiIsICIiLCB0ZXh0KQorICAgICAgICAgICAgICAgIG5vbl9qdW5rLCBucl9qdW5rX2NoYXJzID0gcmUuc3VibihyIl5bPVxzO10qIiwgIiIsIHRleHQpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IG5yX2p1bmtfY2hhcnMgPiAwLCAoCiAgICAgICAgICAgICAgICAgICAgICJzcGxpdF9oZWFkZXJfd29yZHMgYnVnOiAnJXMnLCAnJXMnLCAlcyIgJQogICAgICAgICAgICAgICAgICAgICAob3JpZ190ZXh0LCB0ZXh0LCBwYWlycykpCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jb29raWVzLnB5IGIvTGliL2h0dHAvY29va2llcy5weQppbmRleCBhNzNmZTM4Li5iZTNiMDgwIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jb29raWVzLnB5CisrKyBiL0xpYi9odHRwL2Nvb2tpZXMucHkKQEAgLTQ1Niw5ICs0NTYsOCBAQAogIwogCiBfTGVnYWxLZXlDaGFycyAgPSByIlx3XGQhIyUmJ35fYD48QCw6L1wkXCpcK1wtXC5cXlx8XClcKFw/XH1ce1w9IgotX0xlZ2FsVmFsdWVDaGFycyA9IF9MZWdhbEtleUNoYXJzICsgJ1xbXF0nCitfTGVnYWxWYWx1ZUNoYXJzID0gX0xlZ2FsS2V5Q2hhcnMgKyByJ1xbXF0nCiBfQ29va2llUGF0dGVybiA9IHJlLmNvbXBpbGUociIiIgotICAgICg/eCkgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSB2ZXJib3NlIHBhdHRlcm4KICAgICBccyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbCB3aGl0ZXNwYWNlIGF0IHN0YXJ0IG9mIGNvb2tpZQogICAgICg/UDxrZXk+ICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXJ0IG9mIGdyb3VwICdrZXknCiAgICAgWyIiIiArIF9MZWdhbEtleUNoYXJzICsgciIiIl0rPyAgICMgQW55IHdvcmQgb2YgYXQgbGVhc3Qgb25lIGxldHRlcgpAQCAtNDc1LDcgKzQ3NCw3IEBACiAgICAgKT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIG9wdGlvbmFsIHZhbHVlIGdyb3VwCiAgICAgXHMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQW55IG51bWJlciBvZiBzcGFjZXMuCiAgICAgKFxzK3w7fCQpICAgICAgICAgICAgICAgICAgICAgICMgRW5kaW5nIGVpdGhlciBhdCBzcGFjZSwgc2VtaWNvbG9uLCBvciBFT1MuCi0gICAgIiIiLCByZS5BU0NJSSkgICAgICAgICAgICAgICAgICMgTWF5IGJlIHJlbW92ZWQgaWYgc2FmZS4KKyAgICAiIiIsIHJlLkFTQ0lJIHwgcmUuVkVSQk9TRSkgICAgIyByZS5BU0NJSSBtYXkgYmUgcmVtb3ZlZCBpZiBzYWZlLgogCiAKICMgQXQgbG9uZyBsYXN0LCBoZXJlIGlzIHRoZSBjb29raWUgY2xhc3MuICBVc2luZyB0aGlzIGNsYXNzIGlzIGFsbW9zdCBqdXN0IGxpa2UKZGlmZiAtLWdpdCBhL0xpYi9odHRwL3NlcnZlci5weSBiL0xpYi9odHRwL3NlcnZlci5weQppbmRleCAwMDYyMGQxLi5lMTJlNDViIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9zZXJ2ZXIucHkKKysrIGIvTGliL2h0dHAvc2VydmVyLnB5CkBAIC04Nyw2ICs4Nyw3IEBACiAgICAgIlNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlciIsICJDR0lIVFRQUmVxdWVzdEhhbmRsZXIiLAogXQogCitpbXBvcnQgZW1haWwudXRpbHMKIGltcG9ydCBodG1sCiBpbXBvcnQgaHR0cC5jbGllbnQKIGltcG9ydCBpbwpAQCAtMTI2LDkgKzEyNyw2IEBACiAKIERFRkFVTFRfRVJST1JfQ09OVEVOVF9UWVBFID0gInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IgogCi1kZWYgX3F1b3RlX2h0bWwoaHRtbCk6Ci0gICAgcmV0dXJuIGh0bWwucmVwbGFjZSgiJiIsICImYW1wOyIpLnJlcGxhY2UoIjwiLCAiJmx0OyIpLnJlcGxhY2UoIj4iLCAiJmd0OyIpCi0KIGNsYXNzIEhUVFBTZXJ2ZXIoc29ja2V0c2VydmVyLlRDUFNlcnZlcik6CiAKICAgICBhbGxvd19yZXVzZV9hZGRyZXNzID0gMSAgICAjIFNlZW1zIHRvIG1ha2Ugc2Vuc2UgaW4gdGVzdGluZyBlbnZpcm9ubWVudApAQCAtMTM2LDcgKzEzNCw3IEBACiAgICAgZGVmIHNlcnZlcl9iaW5kKHNlbGYpOgogICAgICAgICAiIiJPdmVycmlkZSBzZXJ2ZXJfYmluZCB0byBzdG9yZSB0aGUgc2VydmVyIG5hbWUuIiIiCiAgICAgICAgIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2JpbmQoc2VsZikKLSAgICAgICAgaG9zdCwgcG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNzWzoyXQogICAgICAgICBzZWxmLnNlcnZlcl9uYW1lID0gc29ja2V0LmdldGZxZG4oaG9zdCkKICAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IHBvcnQKIApAQCAtMjgyLDEyICsyODAsOSBAQAogICAgICAgICB3b3JkcyA9IHJlcXVlc3RsaW5lLnNwbGl0KCkKICAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAzOgogICAgICAgICAgICAgY29tbWFuZCwgcGF0aCwgdmVyc2lvbiA9IHdvcmRzCi0gICAgICAgICAgICBpZiB2ZXJzaW9uWzo1XSAhPSAnSFRUUC8nOgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKLSAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCwKLSAgICAgICAgICAgICAgICAgICAgIkJhZCByZXF1ZXN0IHZlcnNpb24gKCVyKSIgJSB2ZXJzaW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHZlcnNpb25bOjVdICE9ICdIVFRQLyc6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgICAgICBiYXNlX3ZlcnNpb25fbnVtYmVyID0gdmVyc2lvbi5zcGxpdCgnLycsIDEpWzFdCiAgICAgICAgICAgICAgICAgdmVyc2lvbl9udW1iZXIgPSBiYXNlX3ZlcnNpb25fbnVtYmVyLnNwbGl0KCIuIikKICAgICAgICAgICAgICAgICAjIFJGQyAyMTQ1IHNlY3Rpb24gMy4xIHNheXMgdGhlcmUgY2FuIGJlIG9ubHkgb25lICIuIiBhbmQKQEAgLTMwOSw3ICszMDQsNyBAQAogICAgICAgICAgICAgaWYgdmVyc2lvbl9udW1iZXIgPj0gKDIsIDApOgogICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKICAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5IVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCwKLSAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgSFRUUCBWZXJzaW9uICglcykiICUgYmFzZV92ZXJzaW9uX251bWJlcikKKyAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgSFRUUCB2ZXJzaW9uICglcykiICUgYmFzZV92ZXJzaW9uX251bWJlcikKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxpZiBsZW4od29yZHMpID09IDI6CiAgICAgICAgICAgICBjb21tYW5kLCBwYXRoID0gd29yZHMKQEAgLTMzMiwxMCArMzI3LDExIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuaGVhZGVycyA9IGh0dHAuY2xpZW50LnBhcnNlX2hlYWRlcnMoc2VsZi5yZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NsYXNzPXNlbGYuTWVzc2FnZUNsYXNzKQotICAgICAgICBleGNlcHQgaHR0cC5jbGllbnQuTGluZVRvb0xvbmc6CisgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5MaW5lVG9vTG9uZyBhcyBlcnI6CiAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCi0gICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCwKLSAgICAgICAgICAgICAgICAiTGluZSB0b28gbG9uZyIpCisgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5SRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFLAorICAgICAgICAgICAgICAgICJMaW5lIHRvbyBsb25nIiwKKyAgICAgICAgICAgICAgICBzdHIoZXJyKSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBleGNlcHQgaHR0cC5jbGllbnQuSFRUUEV4Y2VwdGlvbiBhcyBlcnI6CiAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCkBAIC00NjUsOCArNDYxLDggQEAKICAgICAgICAgICAgICMgKHNlZSBidWcgIzExMDAyMDEpCiAgICAgICAgICAgICBjb250ZW50ID0gKHNlbGYuZXJyb3JfbWVzc2FnZV9mb3JtYXQgJSB7CiAgICAgICAgICAgICAgICAgJ2NvZGUnOiBjb2RlLAotICAgICAgICAgICAgICAgICdtZXNzYWdlJzogX3F1b3RlX2h0bWwobWVzc2FnZSksCi0gICAgICAgICAgICAgICAgJ2V4cGxhaW4nOiBfcXVvdGVfaHRtbChleHBsYWluKQorICAgICAgICAgICAgICAgICdtZXNzYWdlJzogaHRtbC5lc2NhcGUobWVzc2FnZSwgcXVvdGU9RmFsc2UpLAorICAgICAgICAgICAgICAgICdleHBsYWluJzogaHRtbC5lc2NhcGUoZXhwbGFpbiwgcXVvdGU9RmFsc2UpCiAgICAgICAgICAgICB9KQogICAgICAgICAgICAgYm9keSA9IGNvbnRlbnQuZW5jb2RlKCdVVEYtOCcsICdyZXBsYWNlJykKICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtVHlwZSIsIHNlbGYuZXJyb3JfY29udGVudF90eXBlKQpAQCAtNDkxLDEyICs0ODcsMTIgQEAKIAogICAgIGRlZiBzZW5kX3Jlc3BvbnNlX29ubHkoc2VsZiwgY29kZSwgbWVzc2FnZT1Ob25lKToKICAgICAgICAgIiIiU2VuZCB0aGUgcmVzcG9uc2UgaGVhZGVyIG9ubHkuIiIiCi0gICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIGNvZGUgaW4gc2VsZi5yZXNwb25zZXM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVzcG9uc2VzW2NvZGVdWzBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJwogICAgICAgICBpZiBzZWxmLnJlcXVlc3RfdmVyc2lvbiAhPSAnSFRUUC8wLjknOgorICAgICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIGNvZGUgaW4gc2VsZi5yZXNwb25zZXM6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnJlc3BvbnNlc1tjb2RlXVswXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJwogICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19oZWFkZXJzX2J1ZmZlcicpOgogICAgICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyID0gW10KICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyLmFwcGVuZCgoIiVzICVkICVzXHJcbiIgJQpAQCAtNTgzLDEyICs1NzksNyBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBmb3JtYXR0ZWQgZm9yIGEgbWVzc2FnZSBoZWFkZXIuIiIiCiAgICAgICAgIGlmIHRpbWVzdGFtcCBpcyBOb25lOgogICAgICAgICAgICAgdGltZXN0YW1wID0gdGltZS50aW1lKCkKLSAgICAgICAgeWVhciwgbW9udGgsIGRheSwgaGgsIG1tLCBzcywgd2QsIHksIHogPSB0aW1lLmdtdGltZSh0aW1lc3RhbXApCi0gICAgICAgIHMgPSAiJXMsICUwMmQgJTNzICU0ZCAlMDJkOiUwMmQ6JTAyZCBHTVQiICUgKAotICAgICAgICAgICAgICAgIHNlbGYud2Vla2RheW5hbWVbd2RdLAotICAgICAgICAgICAgICAgIGRheSwgc2VsZi5tb250aG5hbWVbbW9udGhdLCB5ZWFyLAotICAgICAgICAgICAgICAgIGhoLCBtbSwgc3MpCi0gICAgICAgIHJldHVybiBzCisgICAgICAgIHJldHVybiBlbWFpbC51dGlscy5mb3JtYXRkYXRlKHRpbWVzdGFtcCwgdXNlZ210PVRydWUpCiAKICAgICBkZWYgbG9nX2RhdGVfdGltZV9zdHJpbmcoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCB0aW1lIGZvcm1hdHRlZCBmb3IgbG9nZ2luZy4iIiIKQEAgLTcyNiw3ICs3MTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9J3N1cnJvZ2F0ZXBhc3MnKQogICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgogICAgICAgICAgICAgZGlzcGxheXBhdGggPSB1cmxsaWIucGFyc2UudW5xdW90ZShwYXRoKQotICAgICAgICBkaXNwbGF5cGF0aCA9IGh0bWwuZXNjYXBlKGRpc3BsYXlwYXRoKQorICAgICAgICBkaXNwbGF5cGF0aCA9IGh0bWwuZXNjYXBlKGRpc3BsYXlwYXRoLCBxdW90ZT1GYWxzZSkKICAgICAgICAgZW5jID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCiAgICAgICAgIHRpdGxlID0gJ0RpcmVjdG9yeSBsaXN0aW5nIGZvciAlcycgJSBkaXNwbGF5cGF0aAogICAgICAgICByLmFwcGVuZCgnPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAnCkBAIC03NTAsNyArNzQxLDcgQEAKICAgICAgICAgICAgIHIuYXBwZW5kKCc8bGk+PGEgaHJlZj0iJXMiPiVzPC9hPjwvbGk+JwogICAgICAgICAgICAgICAgICAgICAlICh1cmxsaWIucGFyc2UucXVvdGUobGlua25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9J3N1cnJvZ2F0ZXBhc3MnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5lc2NhcGUoZGlzcGxheW5hbWUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5lc2NhcGUoZGlzcGxheW5hbWUsIHF1b3RlPUZhbHNlKSkpCiAgICAgICAgIHIuYXBwZW5kKCc8L3VsPlxuPGhyPlxuPC9ib2R5PlxuPC9odG1sPlxuJykKICAgICAgICAgZW5jb2RlZCA9ICdcbicuam9pbihyKS5lbmNvZGUoZW5jLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQpAQCAtMTE5MSwxNiArMTE4MiwxNSBAQAogICAgIHNlcnZlcl9hZGRyZXNzID0gKGJpbmQsIHBvcnQpCiAKICAgICBIYW5kbGVyQ2xhc3MucHJvdG9jb2xfdmVyc2lvbiA9IHByb3RvY29sCi0gICAgaHR0cGQgPSBTZXJ2ZXJDbGFzcyhzZXJ2ZXJfYWRkcmVzcywgSGFuZGxlckNsYXNzKQotCi0gICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQotICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24iLCBzYVswXSwgInBvcnQiLCBzYVsxXSwgIi4uLiIpCi0gICAgdHJ5OgotICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQotICAgICAgICBodHRwZC5zZXJ2ZXJfY2xvc2UoKQotICAgICAgICBzeXMuZXhpdCgwKQorICAgIHdpdGggU2VydmVyQ2xhc3Moc2VydmVyX2FkZHJlc3MsIEhhbmRsZXJDbGFzcykgYXMgaHR0cGQ6CisgICAgICAgIHNhID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKCkKKyAgICAgICAgc2VydmVfbWVzc2FnZSA9ICJTZXJ2aW5nIEhUVFAgb24ge2hvc3R9IHBvcnQge3BvcnR9IChodHRwOi8ve2hvc3R9Ontwb3J0fS8pIC4uLiIKKyAgICAgICAgcHJpbnQoc2VydmVfbWVzc2FnZS5mb3JtYXQoaG9zdD1zYVswXSwgcG9ydD1zYVsxXSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKKyAgICAgICAgICAgIHN5cy5leGl0KDApCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTXVsdGlTdGF0dXNCYXIucHkgYi9MaWIvaWRsZWxpYi9NdWx0aVN0YXR1c0Jhci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTgyYmE5YS4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9NdWx0aVN0YXR1c0Jhci5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLWZyb20gdGtpbnRlciBpbXBvcnQgKgotCi1jbGFzcyBNdWx0aVN0YXR1c0JhcihGcmFtZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUsICoqa3cpOgotICAgICAgICBpZiBtYXN0ZXIgaXMgTm9uZToKLSAgICAgICAgICAgIG1hc3RlciA9IFRrKCkKLSAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyLCAqKmt3KQotICAgICAgICBzZWxmLmxhYmVscyA9IHt9Ci0KLSAgICBkZWYgc2V0X2xhYmVsKHNlbGYsIG5hbWUsIHRleHQ9JycsIHNpZGU9TEVGVCwgd2lkdGg9MCk6Ci0gICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYubGFiZWxzOgotICAgICAgICAgICAgbGFiZWwgPSBMYWJlbChzZWxmLCBib3JkZXJ3aWR0aD0wLCBhbmNob3I9VykKLSAgICAgICAgICAgIGxhYmVsLnBhY2soc2lkZT1zaWRlLCBwYWR5PTAsIHBhZHg9NCkKLSAgICAgICAgICAgIHNlbGYubGFiZWxzW25hbWVdID0gbGFiZWwKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxhYmVsID0gc2VsZi5sYWJlbHNbbmFtZV0KLSAgICAgICAgaWYgd2lkdGggIT0gMDoKLSAgICAgICAgICAgIGxhYmVsLmNvbmZpZyh3aWR0aD13aWR0aCkKLSAgICAgICAgbGFiZWwuY29uZmlnKHRleHQ9dGV4dCkKLQotZGVmIF9tdWx0aXN0YXR1c19iYXIocGFyZW50KToKLSAgICByb290ID0gVGsoKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiICUoeCwgeSArIDE1MCkpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBtdWx0aXN0YXR1cyBiYXIiKQotICAgIGZyYW1lID0gRnJhbWUocm9vdCkKLSAgICB0ZXh0ID0gVGV4dChmcmFtZSkKLSAgICB0ZXh0LnBhY2soKQotICAgIG1zYiA9IE11bHRpU3RhdHVzQmFyKGZyYW1lKQotICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJoZWxsbyIpCi0gICAgbXNiLnNldF9sYWJlbCgidHdvIiwgIndvcmxkIikKLSAgICBtc2IucGFjayhzaWRlPUJPVFRPTSwgZmlsbD1YKQotCi0gICAgZGVmIGNoYW5nZSgpOgotICAgICAgICBtc2Iuc2V0X2xhYmVsKCJvbmUiLCAiZm9vIikKLSAgICAgICAgbXNiLnNldF9sYWJlbCgidHdvIiwgImJhciIpCi0KLSAgICBidXR0b24gPSBCdXR0b24ocm9vdCwgdGV4dD0iVXBkYXRlIHN0YXR1cyIsIGNvbW1hbmQ9Y2hhbmdlKQotICAgIGJ1dHRvbi5wYWNrKHNpZGU9Qk9UVE9NKQotICAgIGZyYW1lLnBhY2soKQotICAgIGZyYW1lLm1haW5sb29wKCkKLSAgICByb290Lm1haW5sb29wKCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KLSAgICBydW4oX211bHRpc3RhdHVzX2JhcikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL05FV1MudHh0IGIvTGliL2lkbGVsaWIvTkVXUy50eHQKaW5kZXggNzI5MDVjMS4uYTNmYzUwMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvTkVXUy50eHQKKysrIGIvTGliL2lkbGVsaWIvTkVXUy50eHQKQEAgLTEsNDUgKzEsMTAxIEBACi1XaGF0J3MgTmV3IGluIElETEUgMy41LjM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAyMDE3LTAxLTAxPyoKK1doYXQncyBOZXcgaW4gSURMRSAzLjYuMD8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorKlJlbGVhc2UgZGF0ZTogMjAxNi0xMi0xNj8qCiAKIC0gSXNzdWUgIzE1MzA4OiBBZGQgJ2ludGVycnVwdCBleGVjdXRpb24nICheQykgdG8gU2hlbGwgbWVudS4KICAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3ksIHVwZGF0ZWQgYnkgQmF5YXJkIFJhbmRlbC4KIAogLSBJc3N1ZSAjMjc5MjI6IFN0b3AgSURMRSB0ZXN0cyBmcm9tICdmbGFzaGluZycgZ3VpIHdpZGdldHMgb24gdGhlIHNjcmVlbi4KIAorLSBJc3N1ZSAjMjc4OTE6IENvbnNpc3RlbnRseSBncm91cCBhbmQgc29ydCBpbXBvcnRzIHdpdGhpbiBpZGxlbGliIG1vZHVsZXMuCisKKy0gSXNzdWUgIzE3NjQyOiBhZGQgbGFyZ2VyIGZvbnQgc2l6ZXMgZm9yIGNsYXNzcm9vbSBwcm9qZWN0aW9uLgorCiAtIEFkZCB2ZXJzaW9uIHRvIHRpdGxlIG9mIElETEUgaGVscCB3aW5kb3cuCiAKIC0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0CiAgIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCiAKKy0gSXNzdWUgIzI3ODIxOiBGaXggMy42LjBhMyByZWdyZXNzaW9uIHRoYXQgcHJldmVudGVkIGN1c3RvbSBrZXkgc2V0cworICBmcm9tIGJlaW5nIHNlbGVjdGVkIHdoZW4gbm8gY3VzdG9tIHRoZW1lIHdhcyBkZWZpbmVkLgorCiAtIElzc3VlICMyNzcxNDogdGV4dF90ZXh0dmlldyBhbmQgdGVzdF9hdXRvY29tcGxldGUgbm93IHBhc3Mgd2hlbiByZS1ydW4KICAgaW4gdGhlIHNhbWUgcHJvY2Vzcy4gIFRoaXMgb2NjdXJzIHdoZW4gdGVzdF9pZGxlIGZhaWxzIHdoZW4gcnVuIHdpdGggdGhlCiAgIC13IG9wdGlvbiBidXQgd2l0aG91dCAtam4uICBGaXggd2FybmluZyBmcm9tIHRlc3RfY29uZmlnLgogCistIElzc3VlICMyNzYyMTogUHV0IHF1ZXJ5IHJlc3BvbnNlIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMgaW4gdGhlIHF1ZXJ5CisgIGJveCBpdHNlbGYgaW5zdGVhZCBvZiBpbiBhIHNlcGFyYXRlIG1hc3NhZ2Vib3guICBSZWRvIHRlc3RzIHRvIG1hdGNoLgorICBBZGQgTWFjIE9TWCByZWZpbmVtZW50cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjc2MjA6IEVzY2FwZSBrZXkgbm93IGNsb3NlcyBRdWVyeSBib3ggYXMgY2FuY2VsbGVkLgorCistIElzc3VlICMyNzYwOTogSURMRTogdGFiIGFmdGVyIGluaXRpYWwgd2hpdGVzcGFjZSBzaG91bGQgdGFiLCBub3QKKyAgYXV0b2NvbXBsZXRlLiBUaGlzIGZpeGVzIHByb2JsZW0gd2l0aCB3cml0aW5nIGRvY3N0cmluZ3MgYXQgbGVhc3QKKyAgdHdpY2UgaW5kZW50ZWQuCisKKy0gSXNzdWUgIzI3NjA5OiBFeHBsaWNpdGx5IHJldHVybiBOb25lIHdoZW4gdGhlcmUgYXJlIGFsc28gbm9uLU5vbmUKKyAgcmV0dXJucy4gSW4gYSBmZXcgY2FzZXMsIHJldmVyc2UgYSBjb25kaXRpb24gYW5kIGVsaW1pbmF0ZSBhIHJldHVybi4KKwogLSBJc3N1ZSAjMjU1MDc6IElETEUgbm8gbG9uZ2VyIHJ1bnMgYnVnZ3kgY29kZSBiZWNhdXNlIG9mIGl0cyB0a2ludGVyIGltcG9ydHMuCiAgIFVzZXJzIG11c3QgaW5jbHVkZSB0aGUgc2FtZSBpbXBvcnRzIHJlcXVpcmVkIHRvIHJ1biBkaXJlY3RseSBpbiBQeXRob24uCiAKKy0gSXNzdWUgIzI3MTczOiBBZGQgJ0lETEUgTW9kZXJuIFVuaXgnIHRvIHRoZSBidWlsdC1pbiBrZXkgc2V0cy4KKyAgTWFrZSB0aGUgZGVmYXVsdCBrZXkgc2V0IGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0uCisgIEFkZCB0ZXN0cyBmb3IgdGhlIGNoYW5nZXMgdG8gdGhlIGNvbmZpZyBtb2R1bGUuCisKIC0gSXNzdWUgIzI3NDUyOiBhZGQgbGluZSBjb3VudGVyIGFuZCBjcmMgdG8gSURMRSBjb25maWdIYW5kbGVyIHRlc3QgZHVtcC4KIAorLSBJc3N1ZSAjMjc0Nzc6IElETEUgc2VhcmNoIGRpYWxvZ3Mgbm93IHVzZSB0dGsgd2lkZ2V0cy4KKworLSBJc3N1ZSAjMjcxNzM6IEFkZCAnSURMRSBNb2Rlcm4gVW5peCcgdG8gdGhlIGJ1aWx0LWluIGtleSBzZXRzLgorICBNYWtlIHRoZSBkZWZhdWx0IGtleSBzZXQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybS4KKyAgQWRkIHRlc3RzIGZvciB0aGUgY2hhbmdlcyB0byB0aGUgY29uZmlnIG1vZHVsZS4KKworLSBJc3N1ZSAjMjc0NTI6IG1ha2UgY29tbWFuZCBsaW5lICJpZGxlLXRlc3Q+IHB5dGhvbiB0ZXN0X2hlbHAucHkiIHdvcmsuCisgIF9fZmlsZV9fIGlzIHJlbGF0aXZlIHdoZW4gcHl0aG9uIGlzIHN0YXJ0ZWQgaW4gdGhlIGZpbGUncyBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzI3NDUyOiBhZGQgbGluZSBjb3VudGVyIGFuZCBjcmMgdG8gSURMRSBjb25maWdIYW5kbGVyIHRlc3QgZHVtcC4KKworLSBJc3N1ZSAjMjczODA6IElETEU6IGFkZCBxdWVyeS5weSB3aXRoIGJhc2UgUXVlcnkgZGlhbG9nIGFuZCB0dGsgd2lkZ2V0cy4KKyAgTW9kdWxlIGhhZCBzdWJjbGFzc2VzIFNlY3Rpb25OYW1lLCBNb2R1bGVOYW1lLCBhbmQgSGVscFNvdXJjZSwgd2hpY2ggYXJlCisgIHVzZWQgdG8gZ2V0IGluZm9ybWF0aW9uIGZyb20gdXNlcnMgYnkgY29uZmlnZGlhbG9nIGFuZCBmaWxlID0+TG9hZCBNb2R1bGUuCisgIEVhY2ggc3ViY2xhc3MgaGFzIGl0dyBvd24gdmFsaWRpdHkgY2hlY2tzLiAgVXNpbmcgTW9kdWxlTmFtZSBhbGxvd3MgdXNlcnMKKyAgdG8gZWRpdCBiYWQgbW9kdWxlIG5hbWVzIGluc3RlYWQgb2Ygc3RhcnRpbmcgb3Zlci4KKyAgQWRkIHRlc3RzIGFuZCBkZWxldGUgdGhlIHR3byBmaWxlcyBjb21iaW5lZCBpbnRvIHRoZSBuZXcgb25lLgorCistIElzc3VlICMyNzM3MjogVGVzdF9pZGxlIG5vIGxvbmdlciBjaGFuZ2VzIHRoZSBsb2NhbGUuCisKIC0gSXNzdWUgIzI3MzY1OiBBbGxvdyBub24tYXNjaWkgY2hhcnMgaW4gSURMRSBORVdTLnR4dCwgZm9yIGNvbnRyaWJ1dG9yIG5hbWVzLgogCiAtIElzc3VlICMyNzI0NTogSURMRTogQ2xlYW5seSBkZWxldGUgY3VzdG9tIHRoZW1lcyBhbmQga2V5IGJpbmRpbmdzLgogICBQcmV2aW91c2x5LCB3aGVuIElETEUgd2FzIHN0YXJ0ZWQgZnJvbSBhIGNvbnNvbGUgb3IgYnkgaW1wb3J0LCBhIGNhc2NhZGUKICAgb2Ygd2FybmluZ3Mgd2FzIGVtaXR0ZWQuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCistIElzc3VlICMyNDEzNzogUnVuIElETEUsIHRlc3RfaWRsZSwgYW5kIGh0ZXN0IHdpdGggdGtpbnRlciBkZWZhdWx0IHJvb3QgZGlzYWJsZWQuCisgIEZpeCBjb2RlIGFuZCB0ZXN0cyB0aGF0IGZhaWwgd2l0aCB0aGlzIHJlc3RyaWN0aW9uLgorICBGaXggaHRlc3RzIHRvIG5vdCBjcmVhdGUgYSBzZWNvbmQgYW5kIHJlZHVuZGFudCByb290IGFuZCBtYWlubG9vcC4KIAotV2hhdCdzIE5ldyBpbiBJRExFIDMuNS4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNi0wNi0yNioKKy0gSXNzdWUgIzI3MzEwOiBGaXggSURMRS5hcHAgZmFpbHVyZSB0byBsYXVuY2ggb24gT1MgWCBkdWUgdG8gdmVzdGlnaWFsIGltcG9ydC4KIAogLSBJc3N1ZSAjNTEyNDogUGFzdGUgd2l0aCB0ZXh0IHNlbGVjdGVkIG5vdyByZXBsYWNlcyB0aGUgc2VsZWN0aW9uIG9uIFgxMS4KICAgVGhpcyBtYXRjaGVzIGhvdyBwYXN0ZSB3b3JrcyBvbiBXaW5kb3dzLCBNYWMsIG1vc3QgbW9kZXJuIExpbnV4IGFwcHMsCiAgIGFuZCB0dGsgd2lkZ2V0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKKy0gSXNzdWUgIzI0NzUwOiBTd2l0Y2ggYWxsIHNjcm9sbGJhcnMgaW4gSURMRSB0byB0dGsgdmVyc2lvbnMuCisgIFdoZXJlIG5lZWRlZCwgbWluaW1hbCB0ZXN0cyBhcmUgYWRkZWQgdG8gY292ZXIgY2hhbmdlcy4KKworLSBJc3N1ZSAjMjQ3NTk6IElETEUgcmVxdWlyZXMgdGsgOC41IGFuZCBhdmFpbGFiaWxpdHkgdHRrIHdpZGdldHMuCisgIERlbGV0ZSBub3cgdW5uZWVkZWQgdGsgdmVyc2lvbiB0ZXN0cyBhbmQgY29kZSBmb3Igb2xkZXIgdmVyc2lvbnMuCisgIEFkZCB0ZXN0IGZvciBJRExFIHN5bnRheCBjb2xvcml6ZXIuCisKKy0gSXNzdWUgIzI3MjM5OiBpZGxlbGliLm1hY29zeC5pc1h5elRrIGZ1bmN0aW9ucyBpbml0aWFsaXplIGFzIG5lZWRlZC4KKworLSBJc3N1ZSAjMjcyNjI6IG1vdmUgQXF1YSB1bmJpbmRpbmcgY29kZSwgd2hpY2ggZW5hYmxlIGNvbnRleHQgbWVudXMsIHRvIG1heG9zeC4KKwogLSBJc3N1ZSAjMjQ3NTk6IE1ha2UgY2xlYXIgaW4gaWRsZWxpYi5pZGxlX3Rlc3QuX19pbml0X18gdGhhdCB0aGUgZGlyZWN0b3J5CiAgIGlzIGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0LnRlc3RfaWRsZSBhbmQgdG9vbCBmb3IgbWFpbnRhaW5lcnMuCiAKLS0gSXNzdWUgIzI3MTk2OiBTdG9wICdUaGVtZUNoYW5nZWYnIHdhcm5pbmdzIHdoZW4gcnVubmluZyBJRExFIHRlc3RzLgorLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZCcgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCiAgIFRoZXNlIHBlcnNpc3RlZCBhZnRlciBvdGhlciB3YXJuaW5ncyB3ZXJlIHN1cHByZXNzZWQgaW4gIzIwNTY3LgogICBBcHBseSBTZXJoaXkgU3RvcmNoYWthJ3MgdXBkYXRlX2lkbGV0YXNrcyBzb2x1dGlvbiB0byBmb3VyIHRlc3QgZmlsZXMuCiAgIFJlY29yZCB0aGlzIGFkZGl0aW9uYWwgYWR2aWNlIGluIGlkbGVfdGVzdC9SRUFETUUudHh0CkBAIC00Nyw5ICsxMDMsMjYgQEAKIC0gSXNzdWUgIzIwNTY3OiBSZXZpc2UgaWRsZV90ZXN0L1JFQURNRS50eHQgd2l0aCBhZHZpY2UgYWJvdXQgYXZvaWRpbmcKICAgdGsgd2FybmluZyBtZXNzYWdlcyBmcm9tIHRlc3RzLiAgQXBwbHkgYWR2aWNlIHRvIHNldmVyYWwgSURMRSB0ZXN0cy4KIAorLSBJc3N1ZSAjIDI0MjI1OiBVcGRhdGUgaWRsZWxpYi9SRUFETUUudHh0IHdpdGggbmV3IGZpbGUgbmFtZXMKKyAgYW5kIGV2ZW50IGhhbmRsZXJzLgorCistIElzc3VlICMyNzE1NjogUmVtb3ZlIG9ic29sZXRlIGNvZGUgbm90IHVzZWQgYnkgSURMRS4gIFJlcGxhY2VtZW50czoKKyAgMS4gaGVscC50eHQsIHJlcGxhY2VkIGJ5IGhlbHAuaHRtbCwgaXMgb3V0LW9mLWRhdGUgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4KKyAgSXRzIGRlZGljYXRlZCB2aWV3ZXIgaGFzIGJlIHJlcGxhY2VkIGJ5IHRoZSBodG1sIHZpZXdlciBpbiBoZWxwLnB5LgorICAyLiAnaW1wb3J0IGlkbGV2ZXI7IEkgPSBpZGxldmVyLklETEVfVkVSU0lPTicgaXMgdGhlIHNhbWUgYXMKKyAgJ2ltcG9ydCBzeXM7IEkgPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldJworICAzLiBBZnRlciAnb2IgPSBzdGFja3ZpZXdlci5WYXJpYWJsZXNUcmVlSXRlbSgqYXJncyknLAorICAnb2Iua2V5cygpJyA9PSAnbGlzdChvYi5vYmplY3Qua2V5cykuCisgIDQuIEluIG1hY29zYywgcnVubmluZ0FzT1NYQVBQID09IGlzQXF1YVRrOyBpZENhcmJvbkFxdWFUayA9PSBpc0NhcmJvblRrCisKIC0gSXNzdWUgIzI3MTE3OiBNYWtlIGNvbG9yaXplciBodGVzdCBhbmQgdHVydGxlZGVtbyB3b3JrIHdpdGggZGFyayB0aGVtZXMuCiAgIE1vdmUgY29kZSBmb3IgY29uZmlndXJpbmcgdGV4dCB3aWRnZXQgY29sb3JzIHRvIGEgbmV3IGZ1bmN0aW9uLgogCistIElzc3VlICMyNDIyNTogUmVuYW1lIG1hbnkgaWRsZWxpYi8qLnB5IGFuZCBpZGxlX3Rlc3QvdGVzdF8qLnB5IGZpbGVzLgorICBFZGl0IGZpbGVzIHRvIHJlcGxhY2Ugb2xkIG5hbWVzIHdpdGggbmV3IG5hbWVzIHdoZW4gdGhlIG9sZCBuYW1lCisgIHJlZmVycmVkIHRvIHRoZSBtb2R1bGUgcmF0aGVyIHRoYW4gdGhlIGNsYXNzIGl0IGNvbnRhaW5lZC4KKyAgU2VlIHRoZSBpc3N1ZSBhbmQgSURMRSBzZWN0aW9uIGluIFdoYXQncyBOZXcgaW4gMy42IGZvciBtb3JlLgorCiAtIElzc3VlICMyNjY3MzogV2hlbiB0ayByZXBvcnRzIGZvbnQgc2l6ZSBhcyAwLCBjaGFuZ2UgdG8gc2l6ZSAxMC4KICAgU3VjaCBmb250cyBvbiBMaW51eCBwcmV2ZW50ZWQgdGhlIGNvbmZpZ3VyYXRpb24gZGlhbG9nIGZyb20gb3BlbmluZy4KIApAQCAtNjIsOCArMTM1LDggQEAKIC0gSXNzdWUgIzE4NDEwOiBBZGQgdGVzdCBmb3IgSURMRSdzIHNlYXJjaCBkaWFsb2cuCiAgIE9yaWdpbmFsIHBhdGNoIGJ5IFdlc3RsZXkgTWFydMOtbmV6LgogCi0tIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIHVuZG8gZGVsZWdhdG9yLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIgLgorLSBJc3N1ZSAjMjE3MDM6IEFkZCB0ZXN0IGZvciB1bmRvIGRlbGVnYXRvci4gIFBhdGNoIG1vc3RseSBieQorICBTYWltYWRoYXYgSGVibGlrYXIgLgogCiAtIElzc3VlICMyNzA0NDogQWRkIENvbmZpZ0RpYWxvZy5yZW1vdmVfdmFyX2NhbGxiYWNrcyB0byBzdG9wIG1lbW9yeSBsZWFrcy4KIApAQCAtODIsMTEgKzE1NSw2IEBACiAgIE1BUksgaW4gUkVBRE1FLnR4dCBhbmQgb3BlbiB0aGlzIGFuZCBORVdTLnR4dCB3aXRoICdhc2NpaScuCiAgIFJlLWVuY29kZSBDUkVESVRTLnR4dCB0byB1dGYtOCBhbmQgb3BlbiBpdCB3aXRoICd1dGYtOCcuCiAKLQotV2hhdCdzIE5ldyBpbiBJRExFIDMuNS4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNS0xMi0wNioKLQogLSBJc3N1ZSAxNTM0ODogU3RvcCB0aGUgZGVidWdnZXIgZW5naW5lIChub3JtYWxseSBpbiBhIHVzZXIgcHJvY2VzcykKICAgYmVmb3JlIGNsb3NpbmcgdGhlIGRlYnVnZ2VyIHdpbmRvdyAocnVubmluZyBpbiB0aGUgSURMRSBwcm9jZXNzKS4KICAgVGhpcyBwcmV2ZW50cyB0aGUgUnVudGltZUVycm9ycyB0aGF0IHdlcmUgYmVpbmcgY2F1Z2h0IGFuZCBpZ25vcmVkLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUkVBRE1FLnR4dCBiL0xpYi9pZGxlbGliL1JFQURNRS50eHQKaW5kZXggZmY0NDUwNC4uNTFlOGVmNSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUkVBRE1FLnR4dAorKysgYi9MaWIvaWRsZWxpYi9SRUFETUUudHh0CkBAIC0yOSw2MSArMjksNjEgQEAKIAogSW1wbGVtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0tCi1BdXRvQ29tcGxldGUucHkgICAjIENvbXBsZXRlIGF0dHJpYnV0ZSBuYW1lcyBvciBmaWxlbmFtZXMuCi1BdXRvQ29tcGxldGVXaW5kb3cucHkgICMgRGlzcGxheSBjb21wbGV0aW9ucy4KLUF1dG9FeHBhbmQucHkgICAgICMgRXhwYW5kIHdvcmQgd2l0aCBwcmV2aW91cyB3b3JkIGluIGZpbGUuCi1CaW5kaW5ncy5weSAgICAgICAjIERlZmluZSBtb3N0IG9mIElETEUgbWVudS4KLUNhbGxUaXBXaW5kb3cucHkgICMgRGlzcGxheSBjYWxsdGlwLgotQ2FsbFRpcHMucHkgICAgICAgIyBDcmVhdGUgY2FsbHRpcCB0ZXh0LgotQ2xhc3NCcm93c2VyLnB5ICAgIyBDcmVhdGUgbW9kdWxlIGJyb3dzZXIgd2luZG93LgotQ29kZUNvbnRleHQucHkgICAgIyBTaG93IGNvbXBvdW5kIHN0YXRlbWVudCBoZWFkZXJzIG90aGVyd2lzZSBub3QgdmlzaWJsZS4KLUNvbG9yRGVsZWdhdG9yLnB5ICMgQ29sb3JpemUgdGV4dCAobmltKS4KLURlYnVnZ2VyLnB5ICAgICAgICMgRGVidWcgY29kZSBydW4gZnJvbSBlZGl0b3I7IHNob3cgd2luZG93LgotRGVsZWdhdG9yLnB5ICAgICAgIyBEZWZpbmUgYmFzZSBjbGFzcyBmb3IgZGVsZWdhdG9ycyAobmltKS4KLUVkaXRvcldpbmRvdy5weSAgICMgRGVmaW5lIG1vc3Qgb2YgZWRpdG9yIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucy4KLUZpbGVMaXN0LnB5ICAgICAgICMgT3BlbiBmaWxlcyBhbmQgbWFuYWdlIGxpc3Qgb2Ygb3BlbiB3aW5kb3dzIChuaW0pLgotRm9ybWF0UGFyYWdyYXBoLnB5IyBSZS13cmFwIG11bHRpbGluZSBzdHJpbmdzIGFuZCBjb21tZW50cy4KLUdyZXBEaWFsb2cucHkgICAgICMgRmluZCBhbGwgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBtdWx0aXBsZSBmaWxlcy4KLUh5cGVyUGFyc2VyLnB5ICAgICMgUGFyc2UgY29kZSBhcm91bmQgYSBnaXZlbiBpbmRleC4KLUlPQmluZGluZy5weSAgICAgICMgT3BlbiwgcmVhZCwgYW5kIHdyaXRlIGZpbGVzCi1JZGxlSGlzdG9yeS5weSAgICAjIEdldCBwcmV2aW91cyBvciBuZXh0IHVzZXIgaW5wdXQgaW4gc2hlbGwgKG5pbSkKLU11bHRpQ2FsbC5weSAgICAgICMgV3JhcCB0ayB3aWRnZXQgdG8gYWxsb3cgbXVsdGlwbGUgY2FsbHMgcGVyIGV2ZW50IChuaW0pLgotTXVsdGlTdGF0dXNCYXIucHkgIyBEZWZpbmUgc3RhdHVzIGJhciBmb3Igd2luZG93cyAobmltKS4KLU9iamVjdEJyb3dzZXIucHkgICMgRGVmaW5lIGNsYXNzIHVzZWQgaW4gU3RhY2tWaWV3ZXIgKG5pbSkuCi1PdXRwdXRXaW5kb3cucHkgICAjIENyZWF0ZSB3aW5kb3cgZm9yIGdyZXAgb3V0cHV0LgotUGFyZW5NYXRjaC5weSAgICAgIyBNYXRjaCBmZW5jZXBvc3RzOiAoKSwgW10sIGFuZCB7fS4KLVBhdGhCcm93c2VyLnB5ICAgICMgQ3JlYXRlIHBhdGggYnJvd3NlciB3aW5kb3cuCi1QZXJjb2xhdG9yLnB5ICAgICAjIE1hbmFnZSBkZWxlZ2F0b3Igc3RhY2sgKG5pbSkuCi1QeVBhcnNlLnB5ICAgICAgICAjIEdpdmUgaW5mb3JtYXRpb24gb24gY29kZSBpbmRlbnRhdGlvbgotUHlTaGVsbC5weSAgICAgICAgIyBTdGFydCBJRExFLCBtYW5hZ2Ugc2hlbGwsIGNvbXBsZXRlIGVkaXRvciB3aW5kb3cKLVJlbW90ZURlYnVnZ2VyLnB5ICMgRGVidWcgY29kZSBydW4gaW4gcmVtb3RlIHByb2Nlc3MuCi1SZW1vdGVPYmplY3RCcm93c2VyLnB5ICMgQ29tbXVuaWNhdGUgb2JqZWN0cyBiZXR3ZWVuIHByb2Nlc3NlcyB3aXRoIHJwYyAobmltKS4KLVJlcGxhY2VEaWFsb2cucHkgICMgU2VhcmNoIGFuZCByZXBsYWNlIHBhdHRlcm4gaW4gdGV4dC4KLVJzdHJpcEV4dGVuc2lvbi5weSMgU3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZQotU2NyaXB0QmluZGluZy5weSAgIyBDaGVjayBhbmQgcnVuIHVzZXIgY29kZS4KLVNjcm9sbGVkTGlzdC5weSAgICMgRGVmaW5lIFNjcm9sbGVkTGlzdCB3aWRnZXQgZm9yIElETEUgKG5pbSkuCi1TZWFyY2hEaWFsb2cucHkgICAjIFNlYXJjaCBmb3IgcGF0dGVybiBpbiB0ZXh0LgotU2VhcmNoRGlhbG9nQmFzZS5weSAgIyBEZWZpbmUgYmFzZSBmb3Igc2VhcmNoLCByZXBsYWNlLCBhbmQgZ3JlcCBkaWFsb2dzLgotU2VhcmNoRW5naW5lLnB5ICAgIyBEZWZpbmUgZW5naW5lIGZvciBhbGwgMyBzZWFyY2ggZGlhbG9ncy4KLVN0YWNrVmlld2VyLnB5ICAgICMgVmlldyBzdGFjayBhZnRlciBleGNlcHRpb24uCi1UcmVlV2lkZ2V0LnB5ICAgICAjIERlZmluZSB0cmVlIHdpZGdlciwgdXNlZCBpbiBicm93c2VycyAobmltKS4KLVVuZG9EZWxlZ2F0b3IucHkgICMgTWFuYWdlIHVuZG8gc3RhY2suCi1XaWRnZXRSZWRpcmVjdG9yLnB5ICMgSW50ZXJjZXB0IHdpZGdldCBzdWJjb21tYW5kcyAoZm9yIHBlcmNvbGF0b3IpIChuaW0pLgotV2luZG93TGlzdC5weSAgICAgIyBNYW5hZ2Ugd2luZG93IGxpc3QgYW5kIGRlZmluZSBsaXN0ZWQgdG9wIGxldmVsLgotWm9vbUhlaWdodC5weSAgICAgIyBab29tIHdpbmRvdyB0byBmdWxsIGhlaWdodCBvZiBzY3JlZW4uCi1hYm91dERpYWxvZy5weSAgICAjIERpc3BsYXkgQWJvdXQgSURMRSBkaWFsb2cuCi1jb25maWdEaWFsb2cucHkgICAjIERpc3BsYXkgdXNlciBjb25maWd1cmF0aW9uIGRpYWxvZ3MuCi1jb25maWdIYW5kbGVyLnB5ICAjIExvYWQsIGZldGNoLCBhbmQgc2F2ZSBjb25maWd1cmF0aW9uIChuaW0pLgotY29uZmlnSGVscFNvdXJjZUVkaXQucHkgICMgU3BlY2lmeSBoZWxwIHNvdXJjZS4KLWNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5ICAjIFNwZWZpZnkgdXNlciBjb25maWcgc2VjdGlvbiBuYW1lCi1keW5PcHRpb25NZW51V2lkZ2V0LnB5ICAjIGRlZmluZSBtdXRhYmxlIE9wdGlvbk1lbnUgd2lkZ2V0IChuaW0pLgorYXV0b2NvbXBsZXRlLnB5ICAgIyBDb21wbGV0ZSBhdHRyaWJ1dGUgbmFtZXMgb3IgZmlsZW5hbWVzLgorYXV0b2NvbXBsZXRlX3cucHkgIyBEaXNwbGF5IGNvbXBsZXRpb25zLgorYXV0b2V4cGFuZC5weSAgICAgIyBFeHBhbmQgd29yZCB3aXRoIHByZXZpb3VzIHdvcmQgaW4gZmlsZS4KK2Jyb3dzZXIucHkgICAgICAgICMgQ3JlYXRlIG1vZHVsZSBicm93c2VyIHdpbmRvdy4KK2NhbGx0aXBfdy5weSAgICAgICMgRGlzcGxheSBjYWxsdGlwLgorY2FsbHRpcHMucHkgICAgICAgIyBDcmVhdGUgY2FsbHRpcCB0ZXh0LgorY29kZWNvbnRleHQucHkgICAgIyBTaG93IGNvbXBvdW5kIHN0YXRlbWVudCBoZWFkZXJzIG90aGVyd2lzZSBub3QgdmlzaWJsZS4KK2NvbG9yaXplci5weSAgICAgICMgQ29sb3JpemUgdGV4dCAobmltKQorY29uZmlnLnB5ICAgICAgICAgIyBMb2FkLCBmZXRjaCwgYW5kIHNhdmUgY29uZmlndXJhdGlvbiAobmltKS4KK2NvbmZpZ2RpYWxvZy5weSAgICMgRGlzcGxheSB1c2VyIGNvbmZpZ3VyYXRpb24gZGlhbG9ncy4KK2NvbmZpZ19oZWxwLnB5ICAgICMgU3BlY2lmeSBoZWxwIHNvdXJjZSBpbiBjb25maWdkaWFsb2cuCitjb25maWdfa2V5LnB5ICAgICAjIENoYW5nZSBrZXliaW5kaW5ncy4KK2R5bm9wdGlvbi5weSAgICAgICMgRGVmaW5lIG11dGFibGUgT3B0aW9uTWVudSB3aWRnZXQgKG5pbSkuCitkZWJ1Z29iai5weSAgICAgICAjIERlZmluZSBjbGFzcyB1c2VkIGluIHN0YWNrdmlld2VyLgorZGVidWdvYmpfci5weSAgICAgIyBDb21tdW5pY2F0ZSBvYmplY3RzIGJldHdlZW4gcHJvY2Vzc2VzIHdpdGggcnBjIChuaW0pLgorZGVidWdnZXIucHkgICAgICAgIyBEZWJ1ZyBjb2RlIHJ1biBmcm9tIHNoZWxsIG9yIGVkaXRvcjsgc2hvdyB3aW5kb3cuCitkZWJ1Z2dlcl9yLnB5ICAgICAjIERlYnVnIGNvZGUgcnVuIGluIHJlbW90ZSBwcm9jZXNzLgorZGVsZWdhdG9yLnB5ICAgICAgIyBEZWZpbmUgYmFzZSBjbGFzcyBmb3IgZGVsZWdhdG9ycyAobmltKS4KK2VkaXRvci5weSAgICAgICAgICMgRGVmaW5lIG1vc3Qgb2YgZWRpdG9yIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucy4KK2ZpbGVsaXN0LnB5ICAgICAgICMgT3BlbiBmaWxlcyBhbmQgbWFuYWdlIGxpc3Qgb2Ygb3BlbiB3aW5kb3dzIChuaW0pLgorZ3JlcC5weSAgICAgICAgICAgIyBGaW5kIGFsbCBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIG11bHRpcGxlIGZpbGVzLgogaGVscC5weSAgICAgICAgICAgIyBEaXNwbGF5IElETEUncyBodG1sIGRvYy4KLWtleWJpbmRpbmdEaWFsb2cucHkgICMgQ2hhbmdlIGtleWJpbmRpbmdzLgotbWFjb3N4U3VwcG9ydC5weSAgIyBIZWxwIElETEUgcnVuIG9uIE1hY3MgKG5pbSkuCitoZWxwX2Fib3V0LnB5ICAgICAjIERpc3BsYXkgQWJvdXQgSURMRSBkaWFsb2cuCitoaXN0b3J5LnB5ICAgICAgICAjIEdldCBwcmV2aW91cyBvciBuZXh0IHVzZXIgaW5wdXQgaW4gc2hlbGwgKG5pbSkKK2h5cGVycGFyc2VyLnB5ICAgICMgUGFyc2UgY29kZSBhcm91bmQgYSBnaXZlbiBpbmRleC4KK2lvbWVudS5weSAgICAgICAgICMgT3BlbiwgcmVhZCwgYW5kIHdyaXRlIGZpbGVzCittYWNvc3gucHkgICAgICAgICAjIEhlbHAgSURMRSBydW4gb24gTWFjcyAobmltKS4KK21haW5tZW51LnB5ICAgICAgICMgRGVmaW5lIG1vc3Qgb2YgSURMRSBtZW51LgorbXVsdGljYWxsLnB5ICAgICAgIyBXcmFwIHRrIHdpZGdldCB0byBhbGxvdyBtdWx0aXBsZSBjYWxscyBwZXIgZXZlbnQgKG5pbSkuCitvdXR3aW4ucHkgICAgICAgICAjIENyZWF0ZSB3aW5kb3cgZm9yIGdyZXAgb3V0cHV0LgorcGFyYWdyYXBoLnB5ICAgICAgIyBSZS13cmFwIG11bHRpbGluZSBzdHJpbmdzIGFuZCBjb21tZW50cy4KK3BhcmVubWF0Y2gucHkgICAgICMgTWF0Y2ggZmVuY2Vwb3N0czogKCksIFtdLCBhbmQge30uCitwYXRoYnJvd3Nlci5weSAgICAjIENyZWF0ZSBwYXRoIGJyb3dzZXIgd2luZG93LgorcGVyY29sYXRvci5weSAgICAgIyBNYW5hZ2UgZGVsZWdhdG9yIHN0YWNrIChuaW0pLgorcHlwYXJzZS5weSAgICAgICAgIyBHaXZlIGluZm9ybWF0aW9uIG9uIGNvZGUgaW5kZW50YXRpb24KK3B5c2hlbGwucHkgICAgICAgICMgU3RhcnQgSURMRSwgbWFuYWdlIHNoZWxsLCBjb21wbGV0ZSBlZGl0b3Igd2luZG93CitxdWVyeS5weSAgICAgICAgICAjIFF1ZXJ5IHVzZXIgZm9yIGluZm9ybWF0aW9uCityZWRpcmVjdG9yLnB5ICAgICAjIEludGVyY2VwdCB3aWRnZXQgc3ViY29tbWFuZHMgKGZvciBwZXJjb2xhdG9yKSAobmltKS4KK3JlcGxhY2UucHkgICAgICAgICMgU2VhcmNoIGFuZCByZXBsYWNlIHBhdHRlcm4gaW4gdGV4dC4KIHJwYy5weSAgICAgICAgICAgICMgQ29tbXVpY2F0ZSBiZXR3ZWVuIGlkbGUgYW5kIHVzZXIgcHJvY2Vzc2VzIChuaW0pLgorcnN0cmlwLnB5ICAgICAgICAgIyBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlLgogcnVuLnB5ICAgICAgICAgICAgIyBNYW5hZ2UgdXNlciBjb2RlIGV4ZWN1dGlvbiBzdWJwcm9jZXNzLgorcnVuc2NyaXB0LnB5ICAgICAgIyBDaGVjayBhbmQgcnVuIHVzZXIgY29kZS4KK3Njcm9sbGVkbGlzdC5weSAgICMgRGVmaW5lIHNjcm9sbGVkbGlzdCB3aWRnZXQgZm9yIElETEUgKG5pbSkuCitzZWFyY2gucHkgICAgICAgICAjIFNlYXJjaCBmb3IgcGF0dGVybiBpbiB0ZXh0Lgorc2VhcmNoYmFzZS5weSAgICAgIyBEZWZpbmUgYmFzZSBmb3Igc2VhcmNoLCByZXBsYWNlLCBhbmQgZ3JlcCBkaWFsb2dzLgorc2VhcmNoZW5naW5lLnB5ICAgIyBEZWZpbmUgZW5naW5lIGZvciBhbGwgMyBzZWFyY2ggZGlhbG9ncy4KK3N0YWNrdmlld2VyLnB5ICAgICMgVmlldyBzdGFjayBhZnRlciBleGNlcHRpb24uCitzdGF0dXNiYXIucHkgICAgICAjIERlZmluZSBzdGF0dXMgYmFyIGZvciB3aW5kb3dzIChuaW0pLgogdGFiYmVkcGFnZXMucHkgICAgIyBEZWZpbmUgdGFiYmVkIHBhZ2VzIHdpZGdldCAobmltKS4KLXRleHRWaWV3LnB5ICAgICAgICMgRGVmaW5lIHJlYWQtb25seSB0ZXh0IHdpZGdldCAobmltKS4KK3RleHR2aWV3LnB5ICAgICAgICMgRGVmaW5lIHJlYWQtb25seSB0ZXh0IHdpZGdldCAobmltKS4KK3RyZWUucHkgICAgICAgICAgICMgRGVmaW5lIHRyZWUgd2lkZ2VyLCB1c2VkIGluIGJyb3dzZXJzIChuaW0pLgordW5kby5weSAgICAgICAgICAgIyBNYW5hZ2UgdW5kbyBzdGFjay4KK3dpbmRvd3MucHkgICAgICAgICMgTWFuYWdlIHdpbmRvdyBsaXN0IGFuZCBkZWZpbmUgbGlzdGVkIHRvcCBsZXZlbC4KK3pvb21oZWlnaHQucHkgICAgICMgWm9vbSB3aW5kb3cgdG8gZnVsbCBoZWlnaHQgb2Ygc2NyZWVuLgogCiBDb25maWd1cmF0aW9uCiAtLS0tLS0tLS0tLS0tCkBAIC0xMDQsMTI3ICsxMDQsMTQ4IEBACiAKIFN1YmRpcmVjdG9yaWVzCiAtLS0tLS0tLS0tLS0tLQotSWNvbnMgICMgc21hbGwgaW1hZ2UgZmlsZXMKLWlkbGVfdGVzdCAgIyBmaWxlcyBmb3IgaHVtYW4gdGVzdCBhbmQgYXV0b21hdGVkIHVuaXQgdGVzdHMKK0ljb25zICAgICAgICAjIHNtYWxsIGltYWdlIGZpbGVzCitpZGxlX3Rlc3QgICAgIyBmaWxlcyBmb3IgaHVtYW4gdGVzdCBhbmQgYXV0b21hdGVkIHVuaXQgdGVzdHMKIAogVW51c2VkIGFuZCBEZXByZWNhdGVkIGZpbGVzIGFuZCBvYmplY3RzIChuaW0pCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUVkaXRvcldpbmRvdy5weTogSGVscGRpYWxvZyBhbmQgaGVscERpYWxvZwotVG9vbFRpcC5weTogdW51c2VkLgotaGVscC50eHQKLWlkbGV2ZXIucHkKK3Rvb2x0aXAucHkgIyB1bnVzZWQKKwogCiAKIElETEUgTUVOVVMKLVRvcCBsZXZlbCBpdGVtcyBhbmQgbW9zdCBzdWJtZW51IGl0ZW1zIGFyZSBkZWZpbmVkIGluIEJpbmRpbmdzLgorVG9wIGxldmVsIGl0ZW1zIGFuZCBtb3N0IHN1Ym1lbnUgaXRlbXMgYXJlIGRlZmluZWQgaW4gbWFpbm1lbnUuCiBFeHRlbnN0aW9ucyBhZGQgc3VibWVudSBpdGVtcyB3aGVuIGFjdGl2ZS4gIFRoZSBuYW1lcyBnaXZlbiBhcmUKIGZvdW5kLCBxdW90ZWQsIGluIG9uZSBvZiB0aGVzZSBtb2R1bGVzLCBwYWlyZWQgd2l0aCBhICc8PHBzZXVkb2V2ZW50Pj4nLgogRWFjaCBwc2V1ZG9ldmVudCBpcyBib3VuZCB0byBhbiBldmVudCBoYW5kbGVyLiAgU29tZSBldmVudCBoYW5kbGVycwogY2FsbCBhbm90aGVyIGZ1bmN0aW9uIHRoYXQgZG9lcyB0aGUgYWN0dWFsIHdvcmsuICBUaGUgYW5ub3RhdGlvbnMgYmVsb3cKIGFyZSBpbnRlbmRlZCB0byBhdCBsZWFzdCBnaXZlIHRoZSBtb2R1bGUgd2hlcmUgdGhlIGFjdHVhbCB3b3JrIGlzIGRvbmUuCisnZUVXJyA9IGVkaXRvci5FZGl0b3JXaW5kb3cKIAotRmlsZSAgIyBJT0JpbmRpZyBleGNlcHQgYXMgbm90ZWQKLSAgTmV3IEZpbGUKLSAgT3Blbi4uLiAgIyBJT0JpbmRpbmcub3BlbgotICBPcGVuIE1vZHVsZQorRmlsZQorICBOZXcgRmlsZSAgICAgICAgICMgZUVXLm5ld19jYWxsYmFjaworICBPcGVuLi4uICAgICAgICAgICMgaW9tZW51Lm9wZW4KKyAgT3BlbiBNb2R1bGUgICAgICAjIGVFdy5vcGVuX21vZHVsZQogICBSZWNlbnQgRmlsZXMKLSAgQ2xhc3MgQnJvd3NlciAgIyBDbGFzcyBCcm93c2VyCi0gIFBhdGggQnJvd3NlciAgIyBQYXRoIEJyb3dzZXIKKyAgQ2xhc3MgQnJvd3NlciAgICAjIGVFVy5vcGVuX2NsYXNzX2Jyb3dzZXIsIGJyb3dzZXIuQ2xhc3NCcm93c2VyCisgIFBhdGggQnJvd3NlciAgICAgIyBlRVcub3Blbl9wYXRoX2Jyb3dzZXIsIHBhdGhicm93c2VyCiAgIC0tLQotICBTYXZlICAjIElEQmluZGluZy5zYXZlCi0gIFNhdmUgQXMuLi4gICMgSU9CaW5kaW5nLnNhdmVfYXMKLSAgU2F2ZSBDb3B5IEFzLi4uICAjIElPQmluZGxpbmcuc2F2ZV9hX2NvcHkKKyAgU2F2ZSAgICAgICAgICAgICAjIGlvbWVudS5zYXZlCisgIFNhdmUgQXMuLi4gICAgICAgIyBpb21lbnUuc2F2ZV9hcworICBTYXZlIENvcHkgQXMuLi4gICMgaW9tZW51LnNhdmVfYV9jb3B5CiAgIC0tLQotICBQcmludCBXaW5kb3cgICMgSU9CaW5kaW5nLnByaW50X3dpbmRvdworICBQcmludCBXaW5kb3cgICAgICMgaW9tZW51LnByaW50X3dpbmRvdwogICAtLS0KLSAgQ2xvc2UKLSAgRXhpdAorICBDbG9zZSAgICAgICAgICAgICMgZUVXLmNsb3NlX2V2ZW50CisgIEV4aXQgICAgICAgICAgICAgIyBmbGlzdC5jbG9zZV9hbGxfY2FsbGJhY2sgKGJvdW5kIGluIGVFVykKIAogRWRpdAotICBVbmRvICAjIHVuZG9EZWxlZ2F0b3IKLSAgUmVkbyAgIyB1bmRvRGVsZWdhdG9yCi0gIC0tLQotICBDdXQKLSAgQ29weQotICBQYXN0ZQotICBTZWxlY3QgQWxsCi0gIC0tLSAgIyBOZXh0IDUgaXRlbXMgdXNlIFNlYXJjaEVuZ2luZTsgZGlhbG9ncyB1c2UgU2VhcmNoRGlhbG9nQmFzZQotICBGaW5kICAjIFNlYXJjaCBEaWFsb2cKLSAgRmluZCBBZ2FpbgotICBGaW5kIFNlbGVjdGlvbgotICBGaW5kIGluIEZpbGVzLi4uICAjIEdyZXBEaWFsb2cKLSAgUmVwbGFjZS4uLiAgIyBSZXBsYWNlRGlhbG9nCi0gIEdvIHRvIExpbmUKLSAgU2hvdyBDb21wbGV0aW9ucyAgIyBBdXRvQ29tcGxldGUgZXh0ZW5zaW9uIGFuZCBBdXRvQ29tcGxldGVXaWRvdyAoJkhQKQotICBFeHBhbmQgV29yZCAgIyBBdXRvRXhwYW5kIGV4dGVuc2lvbgotICBTaG93IGNhbGwgdGlwICAjIENhbGx0aXBzIGV4dGVuc2lvbiBhbmQgQ2FsbHRpcFdpbmRvdyAoJiBIeXBlcnBhcnNlcikKLSAgU2hvdyBzdXJyb3VuZGluZyBwYXJlbnMgICMgUGFyZW5NYXRjaCAoJiBIeXBlcnBhcnNlcikKKyAgVW5kbyAgICAgICAgICAgICAjIHVuZG9kZWxlZ2F0b3IKKyAgUmVkbyAgICAgICAgICAgICAjIHVuZG9kZWxlZ2F0b3IKKyAgLS0tICAgICAgICAgICAgICAjIGVFVy5yaWdodF9tZW51X2V2ZW50CisgIEN1dCAgICAgICAgICAgICAgIyBlRVcuY3V0CisgIENvcHkgICAgICAgICAgICAgIyBlRVcuY29weQorICBQYXN0ZSAgICAgICAgICAgICMgZUVXLnBhc3QKKyAgU2VsZWN0IEFsbCAgICAgICAjIGVFVy5zZWxlY3RfYWxsICgrIHNlZSBlRVcucmVtb3ZlX3NlbGVjdGlvbikKKyAgLS0tICAgICAgICAgICAgICAjIE5leHQgNSBpdGVtcyB1c2Ugc2VhcmNoZW5naW5lOyBkaWFsb2dzIHVzZSBzZWFyY2hiYXNlCisgIEZpbmQgICAgICAgICAgICAgIyBlRVcuZmluZF9ldmVudCwgc2VhcmNoLlNlYXJjaERpYWxvZy5maW5kCisgIEZpbmQgQWdhaW4gICAgICAgIyBlRVcuZmluZF9hZ2Fpbl9ldmVudCwgc1NELmZpbmRfYWdhaW4KKyAgRmluZCBTZWxlY3Rpb24gICAjIGVFVy5maW5kX3NlbGVjdGlvbl9ldmVudCwgc1NELmZpbmRfc2VsZWN0aW9uCisgIEZpbmQgaW4gRmlsZXMuLi4gIyBlRVcuZmluZF9pbl9maWxlc19ldmVudCwgZ3JlcAorICBSZXBsYWNlLi4uICAgICAgICMgZUVXLnJlcGxhY2VfZXZlbnQsIHJlcGxhY2UuUmVwbGFjZURpYWxvZy5yZXBsYWNlCisgIEdvIHRvIExpbmUgICAgICAgIyBlRVcuZ290b19saW5lX2V2ZW50CisgIFNob3cgQ29tcGxldGlvbnMgIyBhdXRvY29tcGxldGUgZXh0ZW5zaW9uIGFuZCBhdXRvY29tcGxldGVXaWRvdyAoJkhQKQorICBFeHBhbmQgV29yZCAgICAgICMgYXV0b2V4cGFuZCBleHRlbnNpb24KKyAgU2hvdyBjYWxsIHRpcCAgICAjIENhbGx0aXBzIGV4dGVuc2lvbiBhbmQgQ2FsbHRpcFdpbmRvdyAoJiBIeXBlcnBhcnNlcikKKyAgU2hvdyBzdXJyb3VuZGluZyBwYXJlbnMgICMgcGFyZW5tYXRjaCAoJiBIeXBlcnBhcnNlcikKIAotU2hlbGwgICMgUHlTaGVsbAotICBWaWV3IExhc3QgUmVzdGFydCAgICAjIFB5U2hlbGwuUHlTaGVsbC52aWV3X3Jlc3RhcnRfbWFyawotICBSZXN0YXJ0IFNoZWxsICAgICAgICAjIFB5U2hlbGwuUHlTaGVsbC5yZXN0YXJ0X3NoZWxsCitTaGVsbCAgIyBweXNoZWxsCisgIFZpZXcgTGFzdCBSZXN0YXJ0ICAgICMgcHlzaGVsbC5QeVNoZWxsLnZpZXdfcmVzdGFydF9tYXJrCisgIFJlc3RhcnQgU2hlbGwgICAgICAgICMgcHlzaGVsbC5QeVNoZWxsLnJlc3RhcnRfc2hlbGwKICAgSW50ZXJydXB0IEV4ZWN1dGlvbiAgIyBweXNoZWxsLlB5U2hlbGwuY2FuY2VsX2NhbGxiYWNrCiAKIERlYnVnIChTaGVsbCBvbmx5KQogICBHbyB0byBGaWxlL0xpbmUKLSAgRGVidWdnZXIgICAgICAgICAgICAgICAjIERlYnVnZ2VyLCBSZW1vdGVEZWJ1Z2dlciwgUHlTaGVsbC50b2dnbGVfZGVidWdlcgotICBTdGFjayBWaWV3ZXIgICAgICAgICAgICMgU3RhY2tWaWV3ZXIsIFB5U2hlbGwub3Blbl9zdGFja192aWV3ZXIKLSAgQXV0by1vcGVuIFN0YWNrIFZpZXdlciAjIFN0YWNrVmlld2VyCisgIGRlYnVnZ2VyICAgICAgICAgIyBkZWJ1Z2dlciwgZGVidWdnZXJfciwgUHlTaGVsbC50b2dnbGVfZGVidWdlcgorICBTdGFjayBWaWV3ZXIgICAgICMgc3RhY2t2aWV3ZXIsIFB5U2hlbGwub3Blbl9zdGFja192aWV3ZXIKKyAgQXV0by1vcGVuIFN0YWNrIFZpZXdlciAgIyBzdGFja3ZpZXdlcgogCiBGb3JtYXQgKEVkaXRvciBvbmx5KQotICBJbmRlbnQgUmVnaW9uCi0gIERlZGVudCBSZWdpb24KLSAgQ29tbWVudCBPdXQgUmVnaW9uCi0gIFVuY29tbWVudCBSZWdpb24KLSAgVGFiaWZ5IFJlZ2lvbgotICBVbnRhYmlmeSBSZWdpb24KLSAgVG9nZ2xlIFRhYnMKLSAgTmV3IEluZGVudCBXaWR0aAotICBGb3JtYXQgUGFyYWdyYXBoICAjIEZvcm1hdFBhcmFncmFwaCBleHRlbnNpb24KKyAgSW5kZW50IFJlZ2lvbiAgICAjIGVFVy5pbmRlbnRfcmVnaW9uX2V2ZW50CisgIERlZGVudCBSZWdpb24gICAgIyBlRVcuZGVkZW50X3JlZ2lvbl9ldmVudAorICBDb21tZW50IE91dCBSZWcuICMgZUVXLmNvbW1lbnRfcmVnaW9uX2V2ZW50CisgIFVuY29tbWVudCBSZWdpb24gIyBlRVcudW5jb21tZW50X3JlZ2lvbl9ldmVudAorICBUYWJpZnkgUmVnaW9uICAgICMgZUVXLnRhYmlmeV9yZWdpb25fZXZlbnQKKyAgVW50YWJpZnkgUmVnaW9uICAjIGVFVy51bnRhYmlmeV9yZWdpb25fZXZlbnQKKyAgVG9nZ2xlIFRhYnMgICAgICAjIGVFVy50b2dnbGVfdGFic19ldmVudAorICBOZXcgSW5kZW50IFdpZHRoICMgZUVXLmNoYW5nZV9pbmRlbnR3aWR0aF9ldmVudAorICBGb3JtYXQgUGFyYWdyYXBoICMgcGFyYWdyYXBoIGV4dGVuc2lvbgogICAtLS0KLSAgU3RyaXAgdGFpbGluZyB3aGl0ZXNwYWNlICAjIFJzdHJpcEV4dGVuc2lvbiBleHRlbnNpb24KKyAgU3RyaXAgdGFpbGluZyB3aGl0ZXNwYWNlICAjIHJzdHJpcCBleHRlbnNpb24KIAogUnVuIChFZGl0b3Igb25seSkKLSAgUHl0aG9uIFNoZWxsICAjIFB5U2hlbGwKKyAgUHl0aG9uIFNoZWxsICAgICAjIHB5c2hlbGwKICAgLS0tCi0gIENoZWNrIE1vZHVsZSAgIyBTY3JpcHRCaW5kaW5nCi0gIFJ1biBNb2R1bGUgICMgU2NyaXB0QmluZGluZworICBDaGVjayBNb2R1bGUgICAgICMgcnVuc2NyaXB0CisgIFJ1biBNb2R1bGUgICAgICAgIyBydW5zY3JpcHQKIAogT3B0aW9ucwotICBDb25maWd1cmUgSURMRSAgIyBjb25maWdEaWFsb2cKKyAgQ29uZmlndXJlIElETEUgICAjIGVFVy5jb25maWdfZGlhbG9nLCBjb25maWdkaWFsb2cKICAgICAodGFicyBpbiB0aGUgZGlhbG9nKQotICAgIEZvbnQgdGFiICAjIG9uZmlnLW1haW4uZGVmCi0gICAgSGlnaGxpZ2h0IHRhYiAgIyBjb25maWdTZWN0aW9uTmFtZURpYWxvZywgY29uZmlnLWhpZ2hsaWdodC5kZWYKLSAgICBLZXlzIHRhYiAgIyBrZXliaW5kaW5nRGlhbG9nLCBjb25maWdTZWN0aW9uTmFtZURpYWxvZywgb25maWcta2V1cy5kZWYKLSAgICBHZW5lcmFsIHRhYiAgIyBjb25maWdIZWxwU291cmNlRWRpdCwgY29uZmlnLW1haW4uZGVmCi0gIENvbmZpZ3VyZSBFeHRlbnNpb25zICAjIGNvbmZpZ0RpYWxvZwotICAgIFh5eiB0YWIgICMgeHl6LnB5LCBjb25maWctZXh0ZW5zaW9ucy5kZWYKKyAgICBGb250IHRhYiAgICAgICAjIGNvbmZpZy1tYWluLmRlZgorICAgIEhpZ2hsaWdodCB0YWIgICMgcXVlcnksIGNvbmZpZy1oaWdobGlnaHQuZGVmCisgICAgS2V5cyB0YWIgICAgICAgIyBxdWVyeSwgY29uZmlnX2tleSwgY29uZmlnX2tleXMuZGVmCisgICAgR2VuZXJhbCB0YWIgICAgIyBjb25maWdfaGVscCwgY29uZmlnLW1haW4uZGVmCisgICAgRXh0ZW5zaW9ucyB0YWIgIyBjb25maWctZXh0ZW5zaW9ucy5kZWYsIGNvcnJlc3BvbmRpbmcgLnB5CiAgIC0tLQotICBDb2RlIENvbnRleHQgKGVkaXRvciBvbmx5KSAgIyBDb2RlQ29udGV4dCBleHRlbnNpb24KKyAgQ29kZSBDb250ZXh0IChlZCkjIGNvZGVjb250ZXh0IGV4dGVuc2lvbgogCiBXaW5kb3cKLSAgWm9vbWhlaWdodCAgIyBab29tSGVpZ2h0IGV4dGVuc2lvbgorICBab29taGVpZ2h0ICAgICAgICMgem9vbWhlaWdodCBleHRlbnNpb24KICAgLS0tCi0gIDxvcGVuIHdpbmRvd3M+ICAjIFdpbmRvd0xpc3QKKyAgPG9wZW4gd2luZG93cz4gICAjIHdpbmRvd3MKIAogSGVscAotICBBYm91dCBJRExFICAjIGFib3V0RGlhbG9nCisgIEFib3V0IElETEUgICAgICAgIyBlRVcuYWJvdXRfZGlhbG9nLCBoZWxwX2Fib3V0LkFib3V0RGlhbG9nIAogICAtLS0KLSAgSURMRSBIZWxwICAjIGhlbHAKLSAgUHl0aG9uIERvYwotICBUdXJ0bGUgRGVtbworICBJRExFIEhlbHAgICAgICAgICMgZUVXLmhlbHBfZGlhbG9nLCBoZWxwc2hvd19pZGxlaGVscAorICBQeXRob24gRG9jICAgICAgICMgZUVXLnB5dGhvbl9kb2NzCisgIFR1cnRsZSBEZW1vICAgICAgIyBlRVcub3Blbl90dXJ0bGVfZGVtbwogICAtLS0KICAgPG90aGVyIGhlbHAgc291cmNlcz4KIAogPENvbnRleHQgTWVudT4gKHJpZ2h0IGNsaWNrKQotRGVmaW5lZCBpbiBFZGl0b3JXaW5kb3csIFB5U2hlbGwsIE91dHB1dAotICAgQ3V0Ci0gICBDb3B5Ci0gICBQYXN0ZQotICAgLS0tCi0gICBHbyB0byBmaWxlL2xpbmUgKHNoZWxsIGFuZCBvdXRwdXQgb25seSkKLSAgIFNldCBCcmVha3BvaW50IChlZGl0b3Igb25seSkKLSAgIENsZWFyIEJyZWFrcG9pbnQgKGVkaXRvciBvbmx5KQotIERlZmluZWQgaW4gRGVidWdnZXIKLSAgIEdvIHRvIHNvdXJjZSBsaW5lCi0gICBTaG93IHN0YWNrIGZyYW1lCisgIERlZmluZWQgaW4gZWRpdG9yLCBQeVNoZWxweXNoZWxsdXQKKyAgICBDdXQKKyAgICBDb3B5CisgICAgUGFzdGUKKyAgICAtLS0KKyAgICBHbyB0byBmaWxlL2xpbmUgKHNoZWxsIGFuZCBvdXRwdXQgb25seSkKKyAgICBTZXQgQnJlYWtwb2ludCAoZWRpdG9yIG9ubHkpCisgICAgQ2xlYXIgQnJlYWtwb2ludCAoZWRpdG9yIG9ubHkpCisgIERlZmluZWQgaW4gZGVidWdnZXIKKyAgICBHbyB0byBzb3VyY2UgbGluZQorICAgIFNob3cgc3RhY2sgZnJhbWUKKworPE5vIG1lbnU+CitDZW50ZXIgSW5zZXJ0ICAgICAgIyBlRVcuY2VudGVyX2luc2VydF9ldmVudAorCisgIAorQ09ERSBTVFlMRSAtLSBHZW5lcmFsbHkgUEVQIDguCisKK2ltcG9ydAorLS0tLS0tCitQdXQgaW1wb3J0IGF0IHRoZSB0b3AsIHVubGVzcyB0aGVyZSBpcyBhIGdvb2QgcmVhc29uIG90aGVyd2lzZS4KK1BFUCA4IHNheXMgdG8gZ3JvdXAgc3RkbGliLCAzcmQtcGFydHkgZGVwZW5kZW5jaWVzLCBhbmQgcGFja2FnZSBpbXBvcnRzLgorRm9yIGlkbGVsaWIsIHRoZSBncm91cHMgYXJlIGdlbmVyYWwgc3RkbGliLCB0a2ludGVyLCBhbmQgaWRsZWxpYi4KK1NvcnQgbW9kdWxlcyB3aXRoaW4gZWFjaCBncm91cCwgZXhjZXB0IHRoYXQgdGtpbnRlci50dGsgZm9sbG93cyB0a2ludGVyLgorU29ydCAnZnJvbSBpZGxlbGliIGltcG9ydCBtb2QxJyBhbmQgJ2Zyb20gaWRsZWxpYi5tb2QyIGltcG9ydCBvYmplY3QnCit0b2dldGhlciBieSBtb2R1bGUsIGlnbm9yaW5nIHdpdGhpbiBtb2R1bGUgb2JqZWN0cy4KK1B1dCAnaW1wb3J0IF9fbWFpbl9fJyBhZnRlciBvdGhlciBpZGxlbGliIGltcG9ydHMuCisKK0ltcG9ydHMgb25seSBuZWVkZWQgZm9yIHRlc3RpbmcgYXJlIHB1dCBub3QgYXQgdGhlIHRvcCBidXQgaW4gYW4KK2h0ZXN0IGZ1bmN0aW9uIGRlZiBvciAiaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJyIgY2xhdXNlLgorCitXaXRoaW4gbW9kdWxlIGltcG9ydHMgbGlrZSAiZnJvbSBpZGxlbGliLm1vZCBpbXBvcnQgY2xhc3MiIG1heSBjYXVzZQorY2lyY3VsYXIgaW1wb3J0cyB0byBkZWFkbG9jay4gIEV2ZW4gd2l0aG91dCB0aGlzLCBjaXJjdWxhciBpbXBvcnRzIG1heQorcmVxdWlyZSBhdCBsZWFzdCBvbmUgb2YgdGhlIGltcG9ydHMgdG8gYmUgZGVsYXllZCB1bnRpbCBhIGZ1bmN0aW9uIGNhbGwuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9fX2luaXRfXy5weSBiL0xpYi9pZGxlbGliL19faW5pdF9fLnB5CmluZGV4IDcxMWY2MWIuLjc5MWRkZWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL19faW5pdF9fLnB5CisrKyBiL0xpYi9pZGxlbGliL19faW5pdF9fLnB5CkBAIC0xLDggKzEsMTAgQEAKICIiIlRoZSBpZGxlbGliIHBhY2thZ2UgaW1wbGVtZW50cyB0aGUgSWRsZSBhcHBsaWNhdGlvbi4KIAogSWRsZSBpbmNsdWRlcyBhbiBpbnRlcmFjdGl2ZSBzaGVsbCBhbmQgZWRpdG9yLgorU3RhcnRpbmcgd2l0aCBQeXRob24gMy42LCBJRExFIHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgbGF0ZXIuCiBVc2UgdGhlIGZpbGVzIG5hbWVkIGlkbGUuKiB0byBzdGFydCBJZGxlLgogCiBUaGUgb3RoZXIgZmlsZXMgYXJlIHByaXZhdGUgaW1wbGVtZW50YXRpb25zLiAgVGhlaXIgZGV0YWlscyBhcmUgc3ViamVjdCB0bwogY2hhbmdlLiAgU2VlIFBFUCA0MzQgZm9yIG1vcmUuICBJbXBvcnQgdGhlbSBhdCB5b3VyIG93biByaXNrLgogIiIiCit0ZXN0aW5nID0gRmFsc2UgICMgU2V0IFRydWUgYnkgdGVzdC50ZXN0X2lkbGUuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9fX21haW5fXy5weSBiL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5CmluZGV4IDJlZGY1ZjcuLjYzNDllYzcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5CisrKyBiL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5CkBAIC0zLDYgKzMsNiBAQAogCiBSdW4gSURMRSBhcyBweXRob24gLW0gaWRsZWxpYgogIiIiCi1pbXBvcnQgaWRsZWxpYi5QeVNoZWxsCi1pZGxlbGliLlB5U2hlbGwubWFpbigpCitpbXBvcnQgaWRsZWxpYi5weXNoZWxsCitpZGxlbGliLnB5c2hlbGwubWFpbigpCiAjIFRoaXMgZmlsZSBkb2VzIG5vdCB3b3JrIGZvciAyLjc7IFNlZSBpc3N1ZSAyNDIxMi4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weSBiL0xpYi9pZGxlbGliL2F1dG9jb21wbGV0ZS5weQpzaW1pbGFyaXR5IGluZGV4IDg1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2F1dG9jb21wbGV0ZS5weQppbmRleCBmZjA4NWQ1Li4xZTQ0ZmE1IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkKKysrIGIvTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlLnB5CkBAIC0xLDI5ICsxLDMwIEBACi0iIiJBdXRvQ29tcGxldGUucHkgLSBBbiBJRExFIGV4dGVuc2lvbiBmb3IgYXV0b21hdGljYWxseSBjb21wbGV0aW5nIG5hbWVzLgorIiIiYXV0b2NvbXBsZXRlLnB5IC0gQW4gSURMRSBleHRlbnNpb24gZm9yIGF1dG9tYXRpY2FsbHkgY29tcGxldGluZyBuYW1lcy4KIAogVGhpcyBleHRlbnNpb24gY2FuIGNvbXBsZXRlIGVpdGhlciBhdHRyaWJ1dGUgbmFtZXMgb3IgZmlsZSBuYW1lcy4gSXQgY2FuIHBvcAogYSB3aW5kb3cgd2l0aCBhbGwgYXZhaWxhYmxlIG5hbWVzLCBmb3IgdGhlIHVzZXIgdG8gc2VsZWN0IGZyb20uCiAiIiIKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHN0cmluZworaW1wb3J0IHN5cwogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKLQotIyBUaGlzIHN0cmluZyBpbmNsdWRlcyBhbGwgY2hhcnMgdGhhdCBtYXkgYmUgaW4gYW4gaWRlbnRpZmllcgotSURfQ0hBUlMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiXyIKLQotIyBUaGVzZSBjb25zdGFudHMgcmVwcmVzZW50IHRoZSB0d28gZGlmZmVyZW50IHR5cGVzIG9mIGNvbXBsZXRpb25zCisjIFRoZXNlIGNvbnN0YW50cyByZXByZXNlbnQgdGhlIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcGxldGlvbnMuCisjIFRoZXkgbXVzdCBiZSBkZWZpbmVkIGhlcmUgc28gYXV0b2NvbXBsZV93IGNhbiBpbXBvcnQgdGhlbS4KIENPTVBMRVRFX0FUVFJJQlVURVMsIENPTVBMRVRFX0ZJTEVTID0gcmFuZ2UoMSwgMisxKQogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IEF1dG9Db21wbGV0ZVdpbmRvdwotZnJvbSBpZGxlbGliLkh5cGVyUGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgotCitmcm9tIGlkbGVsaWIgaW1wb3J0IGF1dG9jb21wbGV0ZV93Citmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmh5cGVycGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgogaW1wb3J0IF9fbWFpbl9fCiAKKyMgVGhpcyBzdHJpbmcgaW5jbHVkZXMgYWxsIGNoYXJzIHRoYXQgbWF5IGJlIGluIGFuIGlkZW50aWZpZXIuCisjIFRPRE8gVXBkYXRlIHRoaXMgaGVyZSBhbmQgZWxzZXdoZXJlLgorSURfQ0hBUlMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiXyIKKwogU0VQUyA9IG9zLnNlcAogaWYgb3MuYWx0c2VwOiAgIyBlLmcuICcvJyBvbiBXaW5kb3dzLi4uCiAgICAgU0VQUyArPSBvcy5hbHRzZXAKIAorCiBjbGFzcyBBdXRvQ29tcGxldGU6CiAKICAgICBtZW51ZGVmcyA9IFsKQEAgLTM3LDE5ICszOCwxNyBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVkaXR3aW49Tm9uZSk6CiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KLSAgICAgICAgaWYgZWRpdHdpbiBpcyBOb25lOiAgIyBzdWJwcm9jZXNzIGFuZCB0ZXN0Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi50ZXh0ID0gZWRpdHdpbi50ZXh0Ci0gICAgICAgIHNlbGYuYXV0b2NvbXBsZXRld2luZG93ID0gTm9uZQotCi0gICAgICAgICMgaWQgb2YgZGVsYXllZCBjYWxsLCBhbmQgdGhlIGluZGV4IG9mIHRoZSB0ZXh0IGluc2VydCB3aGVuIHRoZSBkZWxheWVkCi0gICAgICAgICMgY2FsbCB3YXMgaXNzdWVkLiBJZiBfZGVsYXllZF9jb21wbGV0aW9uX2lkIGlzIE5vbmUsIHRoZXJlIGlzIG5vCi0gICAgICAgICMgZGVsYXllZCBjYWxsLgotICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faWQgPSBOb25lCi0gICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleCA9IE5vbmUKKyAgICAgICAgaWYgZWRpdHdpbiBpcyBub3QgTm9uZTogICMgbm90IGluIHN1YnByb2Nlc3Mgb3IgdGVzdAorICAgICAgICAgICAgc2VsZi50ZXh0ID0gZWRpdHdpbi50ZXh0CisgICAgICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdyA9IE5vbmUKKyAgICAgICAgICAgICMgaWQgb2YgZGVsYXllZCBjYWxsLCBhbmQgdGhlIGluZGV4IG9mIHRoZSB0ZXh0IGluc2VydCB3aGVuCisgICAgICAgICAgICAjIHRoZSBkZWxheWVkIGNhbGwgd2FzIGlzc3VlZC4gSWYgX2RlbGF5ZWRfY29tcGxldGlvbl9pZCBpcworICAgICAgICAgICAgIyBOb25lLCB0aGVyZSBpcyBubyBkZWxheWVkIGNhbGwuCisgICAgICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXggPSBOb25lCiAKICAgICBkZWYgX21ha2VfYXV0b2NvbXBsZXRlX3dpbmRvdyhzZWxmKToKLSAgICAgICAgcmV0dXJuIEF1dG9Db21wbGV0ZVdpbmRvdy5BdXRvQ29tcGxldGVXaW5kb3coc2VsZi50ZXh0KQorICAgICAgICByZXR1cm4gYXV0b2NvbXBsZXRlX3cuQXV0b0NvbXBsZXRlV2luZG93KHNlbGYudGV4dCkKIAogICAgIGRlZiBfcmVtb3ZlX2F1dG9jb21wbGV0ZV93aW5kb3coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIGlmIHNlbGYuYXV0b2NvbXBsZXRld2luZG93OgpAQCAtODAsMTYgKzc5LDE3IEBACiAgICAgICAgIG9wZW4gYSBjb21wbGV0aW9uIGxpc3QgYWZ0ZXIgdGhhdCAoaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZQogICAgICAgICBjb21wbGV0aW9uKQogICAgICAgICAiIiIKLSAgICAgICAgaWYgaGFzYXR0cihldmVudCwgIm1jX3N0YXRlIikgYW5kIGV2ZW50Lm1jX3N0YXRlOgotICAgICAgICAgICAgIyBBIG1vZGlmaWVyIHdhcyBwcmVzc2VkIGFsb25nIHdpdGggdGhlIHRhYiwgY29udGludWUgYXMgdXN1YWwuCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaGFzYXR0cihldmVudCwgIm1jX3N0YXRlIikgYW5kIGV2ZW50Lm1jX3N0YXRlIG9yXAorICAgICAgICAgICAgICAgIG5vdCBzZWxmLnRleHQuZ2V0KCJpbnNlcnQgbGluZXN0YXJ0IiwgImluc2VydCIpLnN0cmlwKCk6CisgICAgICAgICAgICAjIEEgbW9kaWZpZXIgd2FzIHByZXNzZWQgYWxvbmcgd2l0aCB0aGUgdGFiIG9yCisgICAgICAgICAgICAjIHRoZXJlIGlzIG9ubHkgcHJldmlvdXMgd2hpdGVzcGFjZSBvbiB0aGlzIGxpbmUsIHNvIHRhYi4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGlmIHNlbGYuYXV0b2NvbXBsZXRld2luZG93IGFuZCBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdy5pc19hY3RpdmUoKToKICAgICAgICAgICAgIHNlbGYuYXV0b2NvbXBsZXRld2luZG93LmNvbXBsZXRlKCkKICAgICAgICAgICAgIHJldHVybiAiYnJlYWsiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvcGVuZWQgPSBzZWxmLm9wZW5fY29tcGxldGlvbnMoRmFsc2UsIFRydWUsIFRydWUpCi0gICAgICAgICAgICBpZiBvcGVuZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJicmVhayIKKyAgICAgICAgICAgIHJldHVybiAiYnJlYWsiIGlmIG9wZW5lZCBlbHNlIE5vbmUKIAogICAgIGRlZiBfb3Blbl9jb21wbGV0aW9uc19sYXRlcihzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleCA9IHNlbGYudGV4dC5pbmRleCgiaW5zZXJ0IikKQEAgLTEwMSw5ICsxMDEsOCBAQAogCiAgICAgZGVmIF9kZWxheWVkX29wZW5fY29tcGxldGlvbnMoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faWQgPSBOb25lCi0gICAgICAgIGlmIHNlbGYudGV4dC5pbmRleCgiaW5zZXJ0IikgIT0gc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4OgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYub3Blbl9jb21wbGV0aW9ucygqYXJncykKKyAgICAgICAgaWYgc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKSA9PSBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXg6CisgICAgICAgICAgICBzZWxmLm9wZW5fY29tcGxldGlvbnMoKmFyZ3MpCiAKICAgICBkZWYgb3Blbl9jb21wbGV0aW9ucyhzZWxmLCBldmFsZnVuY3MsIGNvbXBsZXRlLCB1c2VyV2FudHNXaW4sIG1vZGU9Tm9uZSk6CiAgICAgICAgICIiIkZpbmQgdGhlIGNvbXBsZXRpb25zIGFuZCBjcmVhdGUgdGhlIEF1dG9Db21wbGV0ZVdpbmRvdy4KQEAgLTE0OCwxNyArMTQ3LDE3IEBACiAgICAgICAgICAgICAgICAgY29tcF93aGF0ID0gaHAuZ2V0X2V4cHJlc3Npb24oKQogICAgICAgICAgICAgICAgIGlmIG5vdCBjb21wX3doYXQgb3IgXAogICAgICAgICAgICAgICAgICAgIChub3QgZXZhbGZ1bmNzIGFuZCBjb21wX3doYXQuZmluZCgnKCcpICE9IC0xKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNvbXBfd2hhdCA9ICIiCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgaWYgY29tcGxldGUgYW5kIG5vdCBjb21wX3doYXQgYW5kIG5vdCBjb21wX3N0YXJ0OgotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBjb21wX2xpc3RzID0gc2VsZi5mZXRjaF9jb21wbGV0aW9ucyhjb21wX3doYXQsIG1vZGUpCiAgICAgICAgIGlmIG5vdCBjb21wX2xpc3RzWzBdOgotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdyA9IHNlbGYuX21ha2VfYXV0b2NvbXBsZXRlX3dpbmRvdygpCiAgICAgICAgIHJldHVybiBub3Qgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cuc2hvd193aW5kb3coCiAgICAgICAgICAgICAgICAgY29tcF9saXN0cywgImluc2VydC0lZGMiICUgbGVuKGNvbXBfc3RhcnQpLApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlV2luZG93LnB5IGIvTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlX3cucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlV2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9hdXRvY29tcGxldGVfdy5weQppbmRleCAyZWU2ODc4Li4zMzc0YzZlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGVXaW5kb3cucHkKKysrIGIvTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlX3cucHkKQEAgLTEsOSArMSwxMSBAQAogIiIiCi1BbiBhdXRvLWNvbXBsZXRpb24gd2luZG93IGZvciBJRExFLCB1c2VkIGJ5IHRoZSBBdXRvQ29tcGxldGUgZXh0ZW5zaW9uCitBbiBhdXRvLWNvbXBsZXRpb24gd2luZG93IGZvciBJRExFLCB1c2VkIGJ5IHRoZSBhdXRvY29tcGxldGUgZXh0ZW5zaW9uCiAiIiIKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliLk11bHRpQ2FsbCBpbXBvcnQgTUNfU0hJRlQKLWZyb20gaWRsZWxpYi5BdXRvQ29tcGxldGUgaW1wb3J0IENPTVBMRVRFX0ZJTEVTLCBDT01QTEVURV9BVFRSSUJVVEVTCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliLmF1dG9jb21wbGV0ZSBpbXBvcnQgQ09NUExFVEVfRklMRVMsIENPTVBMRVRFX0FUVFJJQlVURVMKK2Zyb20gaWRsZWxpYi5tdWx0aWNhbGwgaW1wb3J0IE1DX1NISUZUCiAKIEhJREVfVklSVFVBTF9FVkVOVF9OQU1FID0gIjw8YXV0b2NvbXBsZXRld2luZG93LWhpZGU+PiIKIEhJREVfU0VRVUVOQ0VTID0gKCI8Rm9jdXNPdXQ+IiwgIjxCdXR0b25QcmVzcz4iKQpAQCAtMzQsOCArMzYsOCBAQAogICAgICAgICBzZWxmLmNvbXBsZXRpb25zID0gTm9uZQogICAgICAgICAjIEEgbGlzdCB3aXRoIG1vcmUgY29tcGxldGlvbnMsIG9yIE5vbmUKICAgICAgICAgc2VsZi5tb3JlY29tcGxldGlvbnMgPSBOb25lCi0gICAgICAgICMgVGhlIGNvbXBsZXRpb24gbW9kZS4gRWl0aGVyIEF1dG9Db21wbGV0ZS5DT01QTEVURV9BVFRSSUJVVEVTIG9yCi0gICAgICAgICMgQXV0b0NvbXBsZXRlLkNPTVBMRVRFX0ZJTEVTCisgICAgICAgICMgVGhlIGNvbXBsZXRpb24gbW9kZS4gRWl0aGVyIGF1dG9jb21wbGV0ZS5DT01QTEVURV9BVFRSSUJVVEVTIG9yCisgICAgICAgICMgYXV0b2NvbXBsZXRlLkNPTVBMRVRFX0ZJTEVTCiAgICAgICAgIHNlbGYubW9kZSA9IE5vbmUKICAgICAgICAgIyBUaGUgY3VycmVudCBjb21wbGV0aW9uIHN0YXJ0LCBvbiB0aGUgdGV4dCBib3ggKGEgc3RyaW5nKQogICAgICAgICBzZWxmLnN0YXJ0ID0gTm9uZQpAQCAtMjE1LDYgKzIxNyw3IEBACiAgICAgICAgIHNlbGYud2luY29uZmlnaWQgPSBhY3cuYmluZChXSU5DT05GSUdfU0VRVUVOQ0UsIHNlbGYud2luY29uZmlnX2V2ZW50KQogICAgICAgICBzZWxmLmRvdWJsZWNsaWNraWQgPSBsaXN0Ym94LmJpbmQoRE9VQkxFQ0xJQ0tfU0VRVUVOQ0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvdWJsZWNsaWNrX2V2ZW50KQorICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIHdpbmNvbmZpZ19ldmVudChzZWxmLCBldmVudCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgpAQCAtMjM4LDE2ICsyNDEsMTQgQEAKICAgICAgICAgYWN3LndtX2dlb21ldHJ5KCIrJWQrJWQiICUgKG5ld194LCBuZXdfeSkpCiAKICAgICBkZWYgaGlkZV9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQorICAgICAgICBpZiBzZWxmLmlzX2FjdGl2ZSgpOgorICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCiAKICAgICBkZWYgbGlzdHNlbGVjdF9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYudXNlcndhbnRzd2luZG93ID0gVHJ1ZQotICAgICAgICBjdXJzZWwgPSBpbnQoc2VsZi5saXN0Ym94LmN1cnNlbGVjdGlvbigpWzBdKQotICAgICAgICBzZWxmLl9jaGFuZ2Vfc3RhcnQoc2VsZi5jb21wbGV0aW9uc1tjdXJzZWxdKQorICAgICAgICBpZiBzZWxmLmlzX2FjdGl2ZSgpOgorICAgICAgICAgICAgc2VsZi51c2Vyd2FudHN3aW5kb3cgPSBUcnVlCisgICAgICAgICAgICBjdXJzZWwgPSBpbnQoc2VsZi5saXN0Ym94LmN1cnNlbGVjdGlvbigpWzBdKQorICAgICAgICAgICAgc2VsZi5fY2hhbmdlX3N0YXJ0KHNlbGYuY29tcGxldGlvbnNbY3Vyc2VsXSkKIAogICAgIGRlZiBkb3VibGVjbGlja19ldmVudChzZWxmLCBldmVudCk6CiAgICAgICAgICMgUHV0IHRoZSBzZWxlY3RlZCBjb21wbGV0aW9uIGluIHRoZSB0ZXh0LCBhbmQgY2xvc2UgdGhlIGxpc3QKQEAgLTI1Nyw3ICsyNTgsNyBAQAogCiAgICAgZGVmIGtleXByZXNzX2V2ZW50KHNlbGYsIGV2ZW50KToKICAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGtleXN5bSA9IGV2ZW50LmtleXN5bQogICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAibWNfc3RhdGUiKToKICAgICAgICAgICAgIHN0YXRlID0gZXZlbnQubWNfc3RhdGUKQEAgLTI4Miw3ICsyODMsNyBAQAogICAgICAgICAgICAgICAgICMga2V5c3ltID09ICJCYWNrU3BhY2UiCiAgICAgICAgICAgICAgICAgaWYgbGVuKHNlbGYuc3RhcnQpID09IDA6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICBzZWxmLl9jaGFuZ2Vfc3RhcnQoc2VsZi5zdGFydFs6LTFdKQogICAgICAgICAgICAgc2VsZi5sYXN0dHlwZWRzdGFydCA9IHNlbGYuc3RhcnQKICAgICAgICAgICAgIHNlbGYubGlzdGJveC5zZWxlY3RfY2xlYXIoMCwgaW50KHNlbGYubGlzdGJveC5jdXJzZWxlY3Rpb24oKVswXSkpCkBAIC0yOTIsNyArMjkzLDcgQEAKIAogICAgICAgICBlbGlmIGtleXN5bSA9PSAiUmV0dXJuIjoKICAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGVsaWYgKHNlbGYubW9kZSA9PSBDT01QTEVURV9BVFRSSUJVVEVTIGFuZCBrZXlzeW0gaW4KICAgICAgICAgICAgICAgKCJwZXJpb2QiLCAic3BhY2UiLCAicGFyZW5sZWZ0IiwgInBhcmVucmlnaHQiLCAiYnJhY2tldGxlZnQiLApAQCAtMzA4LDcgKzMwOSw3IEBACiAgICAgICAgICAgICAgICBhbmQgKHNlbGYubW9kZSA9PSBDT01QTEVURV9BVFRSSUJVVEVTIG9yIHNlbGYuc3RhcnQpOgogICAgICAgICAgICAgICAgIHNlbGYuX2NoYW5nZV9zdGFydChzZWxmLmNvbXBsZXRpb25zW2N1cnNlbF0pCiAgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBlbGlmIGtleXN5bSBpbiAoIkhvbWUiLCAiRW5kIiwgIlByaW9yIiwgIk5leHQiLCAiVXAiLCAiRG93biIpIGFuZCBcCiAgICAgICAgICAgICAgbm90IHN0YXRlOgpAQCAtMzQ5LDEyICszNTAsMTIgQEAKICAgICAgICAgICAgICAgICAjIGZpcnN0IHRhYjsgbGV0IEF1dG9Db21wbGV0ZSBoYW5kbGUgdGhlIGNvbXBsZXRpb24KICAgICAgICAgICAgICAgICBzZWxmLnVzZXJ3YW50c3dpbmRvdyA9IFRydWUKICAgICAgICAgICAgICAgICBzZWxmLmxhc3RrZXlfd2FzX3RhYiA9IFRydWUKLSAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGVsaWYgYW55KHMgaW4ga2V5c3ltIGZvciBzIGluICgiU2hpZnQiLCAiQ29udHJvbCIsICJBbHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ldGEiLCAiQ29tbWFuZCIsICJPcHRpb24iKSk6CiAgICAgICAgICAgICAjIEEgbW9kaWZpZXIga2V5LCBzbyBpZ25vcmUKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBlbGlmIGV2ZW50LmNoYXIgYW5kIGV2ZW50LmNoYXIgPj0gJyAnOgogICAgICAgICAgICAgIyBSZWd1bGFyIGNoYXJhY3RlciB3aXRoIGEgbm9uLWxlbmd0aC0xIGtleWNvZGUKQEAgLTM2OCw3ICszNjksNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBVbmtub3duIGV2ZW50LCBjbG9zZSB0aGUgd2luZG93IGFuZCBsZXQgaXQgdGhyb3VnaC4KICAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIGtleXJlbGVhc2VfZXZlbnQoc2VsZiwgZXZlbnQpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0F1dG9FeHBhbmQucHkgYi9MaWIvaWRsZWxpYi9hdXRvZXhwYW5kLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0F1dG9FeHBhbmQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2F1dG9leHBhbmQucHkKaW5kZXggNzA1OTA1NC4uNmI0NmJlZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQXV0b0V4cGFuZC5weQorKysgYi9MaWIvaWRsZWxpYi9hdXRvZXhwYW5kLnB5CkBAIC0xMiw4ICsxMiw4IEBACiAKIFRoaXMgaXMgYW4gZXh0ZW5zaW9uIGZpbGUgYW5kIHRoZXJlIGlzIG9ubHkgb25lIGluc3RhbmNlIG9mIEF1dG9FeHBhbmQuCiAnJycKLWltcG9ydCBzdHJpbmcKIGltcG9ydCByZQoraW1wb3J0IHN0cmluZwogCiAjIyMkIGV2ZW50IDw8ZXhwYW5kLXdvcmQ+PgogIyMjJCB3aW4gPEFsdC1zbGFzaD4KQEAgLTMxLDYgKzMxLDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlZGl0d2luKToKICAgICAgICAgc2VsZi50ZXh0ID0gZWRpdHdpbi50ZXh0CisgICAgICAgIHNlbGYuYmVsbCA9IHNlbGYudGV4dC5iZWxsCiAgICAgICAgIHNlbGYuc3RhdGUgPSBOb25lCiAKICAgICBkZWYgZXhwYW5kX3dvcmRfZXZlbnQoc2VsZiwgZXZlbnQpOgpAQCAtNDYsMTQgKzQ3LDE0IEBACiAgICAgICAgICAgICAgICAgd29yZHMgPSBzZWxmLmdldHdvcmRzKCkKICAgICAgICAgICAgICAgICBpbmRleCA9IDAKICAgICAgICAgaWYgbm90IHdvcmRzOgotICAgICAgICAgICAgc2VsZi50ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybiAiYnJlYWsiCiAgICAgICAgIHdvcmQgPSBzZWxmLmdldHByZXZ3b3JkKCkKICAgICAgICAgc2VsZi50ZXh0LmRlbGV0ZSgiaW5zZXJ0IC0gJWQgY2hhcnMiICUgbGVuKHdvcmQpLCAiaW5zZXJ0IikKICAgICAgICAgbmV3d29yZCA9IHdvcmRzW2luZGV4XQogICAgICAgICBpbmRleCA9IChpbmRleCArIDEpICUgbGVuKHdvcmRzKQogICAgICAgICBpZiBpbmRleCA9PSAwOgotICAgICAgICAgICAgc2VsZi50ZXh0LmJlbGwoKSAgICAgICAgICAgICMgV2FybiB3ZSBjeWNsZWQgYXJvdW5kCisgICAgICAgICAgICBzZWxmLmJlbGwoKSAgICAgICAgICAgICMgV2FybiB3ZSBjeWNsZWQgYXJvdW5kCiAgICAgICAgIHNlbGYudGV4dC5pbnNlcnQoImluc2VydCIsIG5ld3dvcmQpCiAgICAgICAgIGN1cmluc2VydCA9IHNlbGYudGV4dC5pbmRleCgiaW5zZXJ0IikKICAgICAgICAgY3VybGluZSA9IHNlbGYudGV4dC5nZXQoImluc2VydCBsaW5lc3RhcnQiLCAiaW5zZXJ0IGxpbmVlbmQiKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ2xhc3NCcm93c2VyLnB5IGIvTGliL2lkbGVsaWIvYnJvd3Nlci5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9DbGFzc0Jyb3dzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2Jyb3dzZXIucHkKaW5kZXggZDA5YzUyZi4uZWEwNTYzOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ2xhc3NCcm93c2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2Jyb3dzZXIucHkKQEAgLTExLDE2ICsxMSwxNiBAQAogIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHB5Y2xicgoraW1wb3J0IHN5cwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKLWZyb20gaWRsZWxpYi5XaW5kb3dMaXN0IGltcG9ydCBMaXN0ZWRUb3BsZXZlbAotZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVOb2RlLCBUcmVlSXRlbSwgU2Nyb2xsZWRDYW52YXMKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlzaGVsbAorZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFRyZWVOb2RlLCBUcmVlSXRlbSwgU2Nyb2xsZWRDYW52YXMKK2Zyb20gaWRsZWxpYi53aW5kb3dzIGltcG9ydCBMaXN0ZWRUb3BsZXZlbAogCiBmaWxlX29wZW4gPSBOb25lICAjIE1ldGhvZC4uLkl0ZW0gYW5kIENsYXNzLi4uSXRlbSB1c2UgdGhpcy4KLSMgTm9ybWFsbHkgUHlTaGVsbC5mbGlzdC5vcGVuLCBidXQgdGhlcmUgaXMgbm8gUHlTaGVsbC5mbGlzdCBmb3IgaHRlc3QuCisjIE5vcm1hbGx5IHB5c2hlbGwuZmxpc3Qub3BlbiwgYnV0IHRoZXJlIGlzIG5vIHB5c2hlbGwuZmxpc3QgZm9yIGh0ZXN0LgogCiBjbGFzcyBDbGFzc0Jyb3dzZXI6CiAKQEAgLTMyLDcgKzMyLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGdsb2JhbCBmaWxlX29wZW4KICAgICAgICAgaWYgbm90IF9odGVzdDoKLSAgICAgICAgICAgIGZpbGVfb3BlbiA9IFB5U2hlbGwuZmxpc3Qub3BlbgorICAgICAgICAgICAgZmlsZV9vcGVuID0gcHlzaGVsbC5mbGlzdC5vcGVuCiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5maWxlID0gb3MucGF0aC5qb2luKHBhdGhbMF0sIHNlbGYubmFtZSArICIucHkiKQogICAgICAgICBzZWxmLl9odGVzdCA9IF9odGVzdApAQCAtOTUsNyArOTUsNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmZpbGUpOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIFB5U2hlbGwuZmxpc3Qub3BlbihzZWxmLmZpbGUpCisgICAgICAgIHB5c2hlbGwuZmxpc3Qub3BlbihzZWxmLmZpbGUpCiAKICAgICBkZWYgSXNFeHBhbmRhYmxlKHNlbGYpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtY2FzZShzZWxmLmZpbGVbLTM6XSkgPT0gIi5weSIKQEAgLTIyNiw3ICsyMjYsNyBAQAogICAgICAgICAgICAgZmlsZSA9IHN5cy5hcmd2WzBdCiAgICAgZGlyLCBmaWxlID0gb3MucGF0aC5zcGxpdChmaWxlKQogICAgIG5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGUpWzBdCi0gICAgZmxpc3QgPSBQeVNoZWxsLlB5U2hlbGxGaWxlTGlzdChwYXJlbnQpCisgICAgZmxpc3QgPSBweXNoZWxsLlB5U2hlbGxGaWxlTGlzdChwYXJlbnQpCiAgICAgZ2xvYmFsIGZpbGVfb3BlbgogICAgIGZpbGVfb3BlbiA9IGZsaXN0Lm9wZW4KICAgICBDbGFzc0Jyb3dzZXIoZmxpc3QsIG5hbWUsIFtkaXJdLCBfaHRlc3Q9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NhbGxUaXBXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9jYWxsdGlwX3cucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ2FsbFRpcFdpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY2FsbHRpcF93LnB5CmluZGV4IDllZWMxNzUuLmM3MzYxZDEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NhbGxUaXBXaW5kb3cucHkKKysrIGIvTGliL2lkbGVsaWIvY2FsbHRpcF93LnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiQSBDYWxsVGlwIHdpbmRvdyBjbGFzcyBmb3IgVGtpbnRlci9JRExFLgogCi1BZnRlciBUb29sVGlwLnB5LCB3aGljaCB1c2VzIGlkZWFzIGdsZWFuZWQgZnJvbSBQeVNvbAotVXNlZCBieSB0aGUgQ2FsbFRpcHMgSURMRSBleHRlbnNpb24uCitBZnRlciB0b29sdGlwLnB5LCB3aGljaCB1c2VzIGlkZWFzIGdsZWFuZWQgZnJvbSBQeVNvbAorVXNlZCBieSB0aGUgY2FsbHRpcHMgSURMRSBleHRlbnNpb24uCiAiIiIKIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIExhYmVsLCBMRUZULCBTT0xJRCwgVGNsRXJyb3IKIApAQCAtMTM4LDggKzEzOCw4IEBACiAKICAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXN0IGNhbGx0aXBzIikKLSAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHBhcmVudC53aW5mb19yb290eCgpICsgMjAwLAotICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHggKyAyNTAsIHkgKyAxNzUpKQogICAgIHRleHQgPSBUZXh0KHRvcCkKICAgICB0ZXh0LnBhY2soc2lkZT1MRUZULCBmaWxsPUJPVEgsIGV4cGFuZD0xKQogICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCAic3RyaW5nLnNwbGl0IikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NhbGxUaXBzLnB5IGIvTGliL2lkbGVsaWIvY2FsbHRpcHMucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ2FsbFRpcHMucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NhbGx0aXBzLnB5CmluZGV4IDgxYmQ1ZjEuLjRjNWFlYTIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NhbGxUaXBzLnB5CisrKyBiL0xpYi9pZGxlbGliL2NhbGx0aXBzLnB5CkBAIC0xLDE5ICsxLDE5IEBACi0iIiJDYWxsVGlwcy5weSAtIEFuIElETEUgRXh0ZW5zaW9uIHRvIEpvZyBZb3VyIE1lbW9yeQorIiIiY2FsbHRpcHMucHkgLSBBbiBJRExFIEV4dGVuc2lvbiB0byBKb2cgWW91ciBNZW1vcnkKIAogQ2FsbCBUaXBzIGFyZSBmbG9hdGluZyB3aW5kb3dzIHdoaWNoIGRpc3BsYXkgZnVuY3Rpb24sIGNsYXNzLCBhbmQgbWV0aG9kCiBwYXJhbWV0ZXIgYW5kIGRvY3N0cmluZyBpbmZvcm1hdGlvbiB3aGVuIHlvdSB0eXBlIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMsIGFuZAogd2hpY2ggZGlzYXBwZWFyIHdoZW4geW91IHR5cGUgYSBjbG9zaW5nIHBhcmVudGhlc2lzLgogCiAiIiIKLWltcG9ydCBfX21haW5fXwogaW1wb3J0IGluc3BlY3QKIGltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdHlwZXMKIAotZnJvbSBpZGxlbGliIGltcG9ydCBDYWxsVGlwV2luZG93Ci1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IGNhbGx0aXBfdworZnJvbSBpZGxlbGliLmh5cGVycGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgoraW1wb3J0IF9fbWFpbl9fCiAKIGNsYXNzIENhbGxUaXBzOgogCkBAIC0zNyw3ICszNyw3IEBACiAKICAgICBkZWYgX21ha2VfdGtfY2FsbHRpcF93aW5kb3coc2VsZik6CiAgICAgICAgICMgU2VlIF9faW5pdF9fIGZvciB1c2FnZQotICAgICAgICByZXR1cm4gQ2FsbFRpcFdpbmRvdy5DYWxsVGlwKHNlbGYudGV4dCkKKyAgICAgICAgcmV0dXJuIGNhbGx0aXBfdy5DYWxsVGlwKHNlbGYudGV4dCkKIAogICAgIGRlZiBfcmVtb3ZlX2NhbGx0aXBfd2luZG93KHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICBpZiBzZWxmLmFjdGl2ZV9jYWxsdGlwOgpAQCAtMTIwLDcgKzEyMCw3IEBACiBfTUFYX0NPTFMgPSA4NQogX01BWF9MSU5FUyA9IDUgICMgZW5vdWdoIGZvciBieXRlcwogX0lOREVOVCA9ICcgJyo0ICAjIGZvciB3cmFwcGVkIHNpZ25hdHVyZXMKLV9maXJzdF9wYXJhbSA9IHJlLmNvbXBpbGUoJyg/PD1cKClcdypcLD9ccyonKQorX2ZpcnN0X3BhcmFtID0gcmUuY29tcGlsZShyJyg/PD1cKClcdypcLD9ccyonKQogX2RlZmF1bHRfY2FsbGFibGVfYXJnc3BlYyA9ICJTZWUgc291cmNlIG9yIGRvYyIKIAogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Db2RlQ29udGV4dC5weSBiL0xpYi9pZGxlbGliL2NvZGVjb250ZXh0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jb2RlY29udGV4dC5weQppbmRleCA3ZDI1YWRhLi5mMjVlMWIzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Db2RlQ29udGV4dC5weQorKysgYi9MaWIvaWRsZWxpYi9jb2RlY29udGV4dC5weQpAQCAtMSwxOSArMSwyMSBAQAotIiIiQ29kZUNvbnRleHQgLSBFeHRlbnNpb24gdG8gZGlzcGxheSB0aGUgYmxvY2sgY29udGV4dCBhYm92ZSB0aGUgZWRpdCB3aW5kb3cKKyIiImNvZGVjb250ZXh0IC0gRXh0ZW5zaW9uIHRvIGRpc3BsYXkgdGhlIGJsb2NrIGNvbnRleHQgYWJvdmUgdGhlIGVkaXQgd2luZG93CiAKIE9uY2UgY29kZSBoYXMgc2Nyb2xsZWQgb2ZmIHRoZSB0b3Agb2YgYSB3aW5kb3csIGl0IGNhbiBiZSBkaWZmaWN1bHQgdG8KIGRldGVybWluZSB3aGljaCBibG9jayB5b3UgYXJlIGluLiAgVGhpcyBleHRlbnNpb24gaW1wbGVtZW50cyBhIHBhbmUgYXQgdGhlIHRvcAogb2YgZWFjaCBJRExFIGVkaXQgd2luZG93IHdoaWNoIHByb3ZpZGVzIGJsb2NrIHN0cnVjdHVyZSBoaW50cy4gIFRoZXNlIGhpbnRzIGFyZQogdGhlIGxpbmVzIHdoaWNoIGNvbnRhaW4gdGhlIGJsb2NrIG9wZW5pbmcga2V5d29yZHMsIGUuZy4gJ2lmJywgZm9yIHRoZQogZW5jbG9zaW5nIGJsb2NrLiAgVGhlIG51bWJlciBvZiBoaW50IGxpbmVzIGlzIGRldGVybWluZWQgYnkgdGhlIG51bWxpbmVzCi12YXJpYWJsZSBpbiB0aGUgQ29kZUNvbnRleHQgc2VjdGlvbiBvZiBjb25maWctZXh0ZW5zaW9ucy5kZWYuIExpbmVzIHdoaWNoIGRvCit2YXJpYWJsZSBpbiB0aGUgY29kZWNvbnRleHQgc2VjdGlvbiBvZiBjb25maWctZXh0ZW5zaW9ucy5kZWYuIExpbmVzIHdoaWNoIGRvCiBub3Qgb3BlbiBibG9ja3MgYXJlIG5vdCBzaG93biBpbiB0aGUgY29udGV4dCBoaW50cyBwYW5lLgogCiAiIiIKLWltcG9ydCB0a2ludGVyCi1mcm9tIHRraW50ZXIuY29uc3RhbnRzIGltcG9ydCBUT1AsIExFRlQsIFgsIFcsIFNVTktFTgogaW1wb3J0IHJlCiBmcm9tIHN5cyBpbXBvcnQgbWF4c2l6ZSBhcyBJTkZJTklUWQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCisKK2ltcG9ydCB0a2ludGVyCitmcm9tIHRraW50ZXIuY29uc3RhbnRzIGltcG9ydCBUT1AsIExFRlQsIFgsIFcsIFNVTktFTgorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCiBCTE9DS09QRU5FUlMgPSB7ImNsYXNzIiwgImRlZiIsICJlbGlmIiwgImVsc2UiLCAiZXhjZXB0IiwgImZpbmFsbHkiLCAiZm9yIiwKICAgICAgICAgICAgICAgICAgICAgImlmIiwgInRyeSIsICJ3aGlsZSIsICJ3aXRoIn0KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvY29sb3JpemVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jb2xvcml6ZXIucHkKaW5kZXggMDJlYWM0Ny4uNzMxMGJiMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvY29sb3JpemVyLnB5CkBAIC0xLDEwICsxLDEwIEBACi1pbXBvcnQgdGltZQotaW1wb3J0IHJlCi1pbXBvcnQga2V5d29yZAogaW1wb3J0IGJ1aWx0aW5zCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrVmVyc2lvbgotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2ltcG9ydCBrZXl3b3JkCitpbXBvcnQgcmUKK2ltcG9ydCB0aW1lCisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKIAogREVCVUcgPSBGYWxzZQogCkBAIC00OSwxMSArNDksOCBAQAogICAgICAgICBpbnNlcnRiYWNrZ3JvdW5kPWN1cnNvcl9jb2xvciwKICAgICAgICAgc2VsZWN0Zm9yZWdyb3VuZD1zZWxlY3RfY29sb3JzWydmb3JlZ3JvdW5kJ10sCiAgICAgICAgIHNlbGVjdGJhY2tncm91bmQ9c2VsZWN0X2NvbG9yc1snYmFja2dyb3VuZCddLAotICAgICAgICApCi0gICAgaWYgVGtWZXJzaW9uID49IDguNToKLSAgICAgICAgdGV4dC5jb25maWcoCi0gICAgICAgICAgICBpbmFjdGl2ZXNlbGVjdGJhY2tncm91bmQ9c2VsZWN0X2NvbG9yc1snYmFja2dyb3VuZCddKQotCisgICAgICAgIGluYWN0aXZlc2VsZWN0YmFja2dyb3VuZD1zZWxlY3RfY29sb3JzWydiYWNrZ3JvdW5kJ10sICAjIG5ldyBpbiA4LjUKKyAgICApCiAKIGNsYXNzIENvbG9yRGVsZWdhdG9yKERlbGVnYXRvcik6CiAKQEAgLTI1OSwxMiArMjU2LDEyIEBACiAKIGRlZiBfY29sb3JfZGVsZWdhdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0Ci0gICAgZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKKyAgICBmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgogCiAgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQogICAgIHRvcC50aXRsZSgiVGVzdCBDb2xvckRlbGVnYXRvciIpCi0gICAgdG9wLmdlb21ldHJ5KCIyMDB4MTAwKyVkKyVkIiAlIChwYXJlbnQud2luZm9fcm9vdHgoKSArIDIwMCwKLSAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIyMDB4MTAwKyVkKyVkIiAlICh4ICsgMjUwLCB5ICsgMTc1KSkKICAgICBzb3VyY2UgPSAiaWYgc29tZW5hbWU6IHggPSAnYWJjJyAjIGNvbW1lbnRcbnByaW50XG4iCiAgICAgdGV4dCA9IFRleHQodG9wLCBiYWNrZ3JvdW5kPSJ3aGl0ZSIpCiAgICAgdGV4dC5wYWNrKGV4cGFuZD0xLCBmaWxsPSJib3RoIikKQEAgLTI3Nyw1ICsyNzQsOSBAQAogICAgIHAuaW5zZXJ0ZmlsdGVyKGQpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9jb2xvcml6ZXInLAorICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX2NvbG9yX2RlbGVnYXRvcikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZy1rZXlzLmRlZiBiL0xpYi9pZGxlbGliL2NvbmZpZy1rZXlzLmRlZgppbmRleCAzYmZjYjY5Li42NDc4OGY5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWcta2V5cy5kZWYKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmCkBAIC0xMDksNiArMTA5LDU3IEBACiBkZWwtd29yZC1sZWZ0PTxBbHQtS2V5LUJhY2tTcGFjZT4KIGRlbC13b3JkLXJpZ2h0PTxBbHQtS2V5LWQ+CiAKK1tJRExFIE1vZGVybiBVbml4XQorY29weSA9IDxDb250cm9sLVNoaWZ0LUtleS1DPiA8Q29udHJvbC1LZXktSW5zZXJ0PgorY3V0ID0gPENvbnRyb2wtS2V5LXg+IDxTaGlmdC1LZXktRGVsZXRlPgorcGFzdGUgPSA8Q29udHJvbC1LZXktdj4gPFNoaWZ0LUtleS1JbnNlcnQ+CitiZWdpbm5pbmctb2YtbGluZSA9IDxLZXktSG9tZT4KK2NlbnRlci1pbnNlcnQgPSA8Q29udHJvbC1LZXktbD4KK2Nsb3NlLWFsbC13aW5kb3dzID0gPENvbnRyb2wtS2V5LXE+CitjbG9zZS13aW5kb3cgPSA8Q29udHJvbC1LZXktdz4gPENvbnRyb2wtU2hpZnQtS2V5LVc+Citkby1ub3RoaW5nID0gPENvbnRyb2wtS2V5LUYxMj4KK2VuZC1vZi1maWxlID0gPENvbnRyb2wtS2V5LWQ+CitoaXN0b3J5LW5leHQgPSA8QWx0LUtleS1uPiA8TWV0YS1LZXktbj4KK2hpc3RvcnktcHJldmlvdXMgPSA8QWx0LUtleS1wPiA8TWV0YS1LZXktcD4KK2ludGVycnVwdC1leGVjdXRpb24gPSA8Q29udHJvbC1LZXktYz4KK3ZpZXctcmVzdGFydCA9IDxLZXktRjY+CityZXN0YXJ0LXNoZWxsID0gPENvbnRyb2wtS2V5LUY2Pgorb3Blbi1jbGFzcy1icm93c2VyID0gPENvbnRyb2wtS2V5LWI+CitvcGVuLW1vZHVsZSA9IDxDb250cm9sLUtleS1tPgorb3Blbi1uZXctd2luZG93ID0gPENvbnRyb2wtS2V5LW4+CitvcGVuLXdpbmRvdy1mcm9tLWZpbGUgPSA8Q29udHJvbC1LZXktbz4KK3BsYWluLW5ld2xpbmUtYW5kLWluZGVudCA9IDxDb250cm9sLUtleS1qPgorcHJpbnQtd2luZG93ID0gPENvbnRyb2wtS2V5LXA+CitweXRob24tY29udGV4dC1oZWxwID0gPFNoaWZ0LUtleS1GMT4KK3B5dGhvbi1kb2NzID0gPEtleS1GMT4KK3JlZG8gPSA8Q29udHJvbC1TaGlmdC1LZXktWj4KK3JlbW92ZS1zZWxlY3Rpb24gPSA8S2V5LUVzY2FwZT4KK3NhdmUtY29weS1vZi13aW5kb3ctYXMtZmlsZSA9IDxBbHQtU2hpZnQtS2V5LVM+CitzYXZlLXdpbmRvdy1hcy1maWxlID0gPENvbnRyb2wtU2hpZnQtS2V5LVM+CitzYXZlLXdpbmRvdyA9IDxDb250cm9sLUtleS1zPgorc2VsZWN0LWFsbCA9IDxDb250cm9sLUtleS1hPgordG9nZ2xlLWF1dG8tY29sb3JpbmcgPSA8Q29udHJvbC1LZXktc2xhc2g+Cit1bmRvID0gPENvbnRyb2wtS2V5LXo+CitmaW5kID0gPENvbnRyb2wtS2V5LWY+CitmaW5kLWFnYWluID0gPEtleS1GMz4KK2ZpbmQtaW4tZmlsZXMgPSA8Q29udHJvbC1TaGlmdC1LZXktZj4KK2ZpbmQtc2VsZWN0aW9uID0gPENvbnRyb2wtS2V5LWg+CityZXBsYWNlID0gPENvbnRyb2wtS2V5LXI+Citnb3RvLWxpbmUgPSA8Q29udHJvbC1LZXktZz4KK3NtYXJ0LWJhY2tzcGFjZSA9IDxLZXktQmFja1NwYWNlPgorbmV3bGluZS1hbmQtaW5kZW50ID0gPEtleS1SZXR1cm4+IDxLZXktS1BfRW50ZXI+CitzbWFydC1pbmRlbnQgPSA8S2V5LVRhYj4KK2luZGVudC1yZWdpb24gPSA8Q29udHJvbC1LZXktYnJhY2tldHJpZ2h0PgorZGVkZW50LXJlZ2lvbiA9IDxDb250cm9sLUtleS1icmFja2V0bGVmdD4KK2NvbW1lbnQtcmVnaW9uID0gPENvbnRyb2wtS2V5LWQ+Cit1bmNvbW1lbnQtcmVnaW9uID0gPENvbnRyb2wtU2hpZnQtS2V5LUQ+Cit0YWJpZnktcmVnaW9uID0gPEFsdC1LZXktNT4KK3VudGFiaWZ5LXJlZ2lvbiA9IDxBbHQtS2V5LTY+Cit0b2dnbGUtdGFicyA9IDxDb250cm9sLUtleS1UPgorY2hhbmdlLWluZGVudHdpZHRoID0gPEFsdC1LZXktdT4KK2RlbC13b3JkLWxlZnQgPSA8Q29udHJvbC1LZXktQmFja1NwYWNlPgorZGVsLXdvcmQtcmlnaHQgPSA8Q29udHJvbC1LZXktRGVsZXRlPgorCiBbSURMRSBDbGFzc2ljIE1hY10KIGNvcHk9PENvbW1hbmQtS2V5LWM+CiBjdXQ9PENvbW1hbmQtS2V5LXg+CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWctbWFpbi5kZWYgYi9MaWIvaWRsZWxpYi9jb25maWctbWFpbi5kZWYKaW5kZXggOGViYmMxYi4uYTYxYmJhNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnLW1haW4uZGVmCisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZgpAQCAtNzAsNyArNzAsOSBAQAogCiBbS2V5c10KIGRlZmF1bHQ9IDEKLW5hbWU9IElETEUgQ2xhc3NpYyBXaW5kb3dzCituYW1lPQorbmFtZTI9CisjIG5hbWUyIHNldCBpbiB1c2VyIGNvbmZpZy1tYWluLmNmZyBmb3Iga2V5cyBhZGRlZCBhZnRlciAyMDE2IEp1bHkgMQogCiBbSGlzdG9yeV0KIGN5Y2xpYz0xCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnLnB5CnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbmZpZy5weQppbmRleCA4OTU0NDg4Li4xMGZlM2JhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZy5weQpAQCAtNyw3ICs3LDcgQEAKIGFuZCBpZiBhIGZpbGUgYmVjb21lcyBlbXB0eSwgaXQgd2lsbCBiZSBkZWxldGVkLgogCiBUaGUgY29udGVudHMgb2YgdGhlIHVzZXIgZmlsZXMgbWF5IGJlIGFsdGVyZWQgdXNpbmcgdGhlIE9wdGlvbnMvQ29uZmlndXJlIElETEUKLW1lbnUgdG8gYWNjZXNzIHRoZSBjb25maWd1cmF0aW9uIEdVSSAoY29uZmlnRGlhbG9nLnB5KSwgb3IgbWFudWFsbHkuCittZW51IHRvIGFjY2VzcyB0aGUgY29uZmlndXJhdGlvbiBHVUkgKGNvbmZpZ2RpYWxvZy5weSksIG9yIG1hbnVhbGx5LgogCiBUaHJvdWdob3V0IHRoaXMgbW9kdWxlIHRoZXJlIGlzIGFuIGVtcGhhc2lzIG9uIHJldHVybmluZyB1c2VhYmxlIGRlZmF1bHRzCiB3aGVuIGEgcHJvYmxlbSBvY2N1cnMgaW4gcmV0dXJuaW5nIGEgcmVxdWVzdGVkIGNvbmZpZ3VyYXRpb24gdmFsdWUgYmFjayB0bwpAQCAtMTgsMTEgKzE4LDEwIEBACiAiIiIKICMgVE9ET3MgYWRkZWQgT2N0IDIwMTQsIHRqcgogCitmcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIAotZnJvbSBjb25maWdwYXJzZXIgaW1wb3J0IENvbmZpZ1BhcnNlcgotZnJvbSB0a2ludGVyIGltcG9ydCBUa1ZlcnNpb24KIGZyb20gdGtpbnRlci5mb250IGltcG9ydCBGb250LCBuYW1ldG9mb250CiAKIGNsYXNzIEludmFsaWRDb25maWdUeXBlKEV4Y2VwdGlvbik6IHBhc3MKQEAgLTIzMCwxNSArMjI5LDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudXNlckNmZ1tjb25maWdUeXBlXS5HZXQoc2VjdGlvbiwgb3B0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9dHlwZSwgcmF3PXJhdykKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWdIYW5kbGVyLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKKyAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZy5weSAtIElkbGVDb25mLkdldE9wdGlvbiAtXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgaW52YWxpZCAlciB2YWx1ZSBmb3IgY29uZmlndXJhdGlvbiBvcHRpb24gJXJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBmcm9tIHNlY3Rpb24gJXI6ICVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlLCBvcHRpb24sIHNlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXNlckNmZ1tjb25maWdUeXBlXS5HZXQoc2VjdGlvbiwgb3B0aW9uLCByYXc9cmF3KSkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcHJpbnQod2FybmluZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgX3dhcm4od2FybmluZywgY29uZmlnVHlwZSwgc2VjdGlvbiwgb3B0aW9uKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlZmF1bHRDZmdbY29uZmlnVHlwZV0uaGFzX29wdGlvbihzZWN0aW9uLG9wdGlvbik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdENmZ1tjb25maWdUeXBlXS5HZXQoCkBAIC0yNDcsMTUgKzI0MywxMiBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICAjcmV0dXJuaW5nIGRlZmF1bHQsIHByaW50IHdhcm5pbmcKICAgICAgICAgaWYgd2Fybl9vbl9kZWZhdWx0OgotICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnSGFuZGxlci5weSAtIElkbGVDb25mLkdldE9wdGlvbiAtXG4nCisgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIHByb2JsZW0gcmV0cmlldmluZyBjb25maWd1cmF0aW9uIG9wdGlvbiAlclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIGZyb20gc2VjdGlvbiAlci5cbicKICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZTogJXInICUKICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbiwgc2VjdGlvbiwgZGVmYXVsdCkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcHJpbnQod2FybmluZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgX3dhcm4od2FybmluZywgY29uZmlnVHlwZSwgc2VjdGlvbiwgb3B0aW9uKQogICAgICAgICByZXR1cm4gZGVmYXVsdAogCiAgICAgZGVmIFNldE9wdGlvbihzZWxmLCBjb25maWdUeXBlLCBzZWN0aW9uLCBvcHRpb24sIHZhbHVlKToKQEAgLTM1OCw1MiArMzUxLDczIEBACiAgICAgICAgIGZvciBlbGVtZW50IGluIHRoZW1lOgogICAgICAgICAgICAgaWYgbm90IGNmZ1BhcnNlci5oYXNfb3B0aW9uKHRoZW1lTmFtZSwgZWxlbWVudCk6CiAgICAgICAgICAgICAgICAgIyBQcmludCB3YXJuaW5nIHRoYXQgd2lsbCByZXR1cm4gYSBkZWZhdWx0IGNvbG9yCi0gICAgICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnSGFuZGxlci5JZGxlQ29uZi5HZXRUaGVtZURpY3QnCisgICAgICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnLklkbGVDb25mLkdldFRoZW1lRGljdCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLVxuIHByb2JsZW0gcmV0cmlldmluZyB0aGVtZSBlbGVtZW50ICVyJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuIGZyb20gdGhlbWUgJXIuXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJldHVybmluZyBkZWZhdWx0IGNvbG9yOiAlcicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVsZW1lbnQsIHRoZW1lTmFtZSwgdGhlbWVbZWxlbWVudF0pKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQod2FybmluZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgX3dhcm4od2FybmluZywgJ2hpZ2hsaWdodCcsIHRoZW1lTmFtZSwgZWxlbWVudCkKICAgICAgICAgICAgIHRoZW1lW2VsZW1lbnRdID0gY2ZnUGFyc2VyLkdldCgKICAgICAgICAgICAgICAgICAgICAgdGhlbWVOYW1lLCBlbGVtZW50LCBkZWZhdWx0PXRoZW1lW2VsZW1lbnRdKQogICAgICAgICByZXR1cm4gdGhlbWUKIAogICAgIGRlZiBDdXJyZW50VGhlbWUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB0ZXh0IGNvbG9yIHRoZW1lLgorICAgICAgICAiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRleHQgY29sb3IgdGhlbWUuIgorICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cygnVGhlbWUnKQogCi0gICAgICAgIGlkbGVsaWIuY29uZmlnLW1haW4uZGVmIGluY2x1ZGVzIHRoaXMgc2VjdGlvbgorICAgIGRlZiBDdXJyZW50S2V5cyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGtleSBzZXQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRfY29sb3JzX2FuZF9rZXlzKCdLZXlzJykKKworICAgIGRlZiBjdXJyZW50X2NvbG9yc19hbmRfa2V5cyhzZWxmLCBzZWN0aW9uKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIG5hbWUgZm9yIFRoZW1lIG9yIEtleXMgc2VjdGlvbi4KKworICAgICAgICBpZGxlbGliLmNvbmZpZy1tYWluLmRlZiAoJ2RlZmF1bHQnKSBpbmNsdWRlcyB0aGVzZSBzZWN0aW9ucworCiAgICAgICAgIFtUaGVtZV0KICAgICAgICAgZGVmYXVsdD0gMQogICAgICAgICBuYW1lPSBJRExFIENsYXNzaWMKICAgICAgICAgbmFtZTI9Ci0gICAgICAgICMgbmFtZTIgc2V0IGluIHVzZXIgY29uZmlnLW1haW4uY2ZnIGZvciB0aGVtZXMgYWRkZWQgYWZ0ZXIgMjAxNSBPY3QgMQogCi0gICAgICAgIEl0ZW0gbmFtZTIgaXMgbmVlZGVkIGJlY2F1c2Ugc2V0dGluZyBuYW1lIHRvIGEgbmV3IGJ1aWx0aW4KLSAgICAgICAgY2F1c2VzIG9sZGVyIElETEVzIHRvIGRpc3BsYXkgbXVsdGlwbGUgZXJyb3IgbWVzc2FnZXMgb3IgcXVpdC4KKyAgICAgICAgW0tleXNdCisgICAgICAgIGRlZmF1bHQ9IDEKKyAgICAgICAgbmFtZT0KKyAgICAgICAgbmFtZTI9CisKKyAgICAgICAgSXRlbSAnbmFtZTInLCBpcyB1c2VkIGZvciBidWlsdC1pbiAoJ2RlZmF1bHQnKSB0aGVtZXMgYW5kIGtleXMKKyAgICAgICAgYWRkZWQgYWZ0ZXIgMjAxNSBPY3QgMSBhbmQgMjAxNiBKdWx5IDEuICBUaGlzIGtsdWRnZSBpcyBuZWVkZWQKKyAgICAgICAgYmVjYXVzZSBzZXR0aW5nICduYW1lJyB0byBhIGJ1aWx0aW4gbm90IGRlZmluZWQgaW4gb2xkZXIgSURMRXMKKyAgICAgICAgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlcyBvciBxdWl0LgogICAgICAgICBTZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNTMxMy4KLSAgICAgICAgV2hlbiBkZWZhdWx0ID0gVHJ1ZSwgbmFtZTIgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG5hbWUsCi0gICAgICAgIHdoaWxlIG9sZGVyIElETEVzIHdpbGwganVzdCB1c2UgbmFtZS4KKyAgICAgICAgV2hlbiBkZWZhdWx0ID0gVHJ1ZSwgJ25hbWUyJyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgJ25hbWUnLAorICAgICAgICB3aGlsZSBvbGRlciBJRExFcyB3aWxsIGp1c3QgdXNlIG5hbWUuICBXaGVuIGRlZmF1bHQgPSBGYWxzZSwKKyAgICAgICAgJ25hbWUyJyBtYXkgc3RpbGwgYmUgc2V0LCBidXQgaXQgaXMgaWdub3JlZC4KICAgICAgICAgIiIiCi0gICAgICAgIGRlZmF1bHQgPSBzZWxmLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICdkZWZhdWx0JywKKyAgICAgICAgY2ZnbmFtZSA9ICdoaWdobGlnaHQnIGlmIHNlY3Rpb24gPT0gJ1RoZW1lJyBlbHNlICdrZXlzJworICAgICAgICBkZWZhdWx0ID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCBzZWN0aW9uLCAnZGVmYXVsdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdib29sJywgZGVmYXVsdD1UcnVlKQorICAgICAgICBuYW1lID0gJycKICAgICAgICAgaWYgZGVmYXVsdDoKLSAgICAgICAgICAgIHRoZW1lID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZTInLCBkZWZhdWx0PScnKQotICAgICAgICBpZiBkZWZhdWx0IGFuZCBub3QgdGhlbWUgb3Igbm90IGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aGVtZSA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgJ1RoZW1lJywgJ25hbWUnLCBkZWZhdWx0PScnKQotICAgICAgICBzb3VyY2UgPSBzZWxmLmRlZmF1bHRDZmcgaWYgZGVmYXVsdCBlbHNlIHNlbGYudXNlckNmZwotICAgICAgICBpZiBzb3VyY2VbJ2hpZ2hsaWdodCddLmhhc19zZWN0aW9uKHRoZW1lKToKLSAgICAgICAgICAgIHJldHVybiB0aGVtZQorICAgICAgICAgICAgbmFtZSA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgc2VjdGlvbiwgJ25hbWUyJywgZGVmYXVsdD0nJykKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBuYW1lID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCBzZWN0aW9uLCAnbmFtZScsIGRlZmF1bHQ9JycpCisgICAgICAgIGlmIG5hbWU6CisgICAgICAgICAgICBzb3VyY2UgPSBzZWxmLmRlZmF1bHRDZmcgaWYgZGVmYXVsdCBlbHNlIHNlbGYudXNlckNmZworICAgICAgICAgICAgaWYgc291cmNlW2NmZ25hbWVdLmhhc19zZWN0aW9uKG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCisgICAgICAgIHJldHVybiAiSURMRSBDbGFzc2ljIiBpZiBzZWN0aW9uID09ICdUaGVtZScgZWxzZSBzZWxmLmRlZmF1bHRfa2V5cygpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGRlZmF1bHRfa2V5cygpOgorICAgICAgICBpZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgorICAgICAgICAgICAgcmV0dXJuICdJRExFIENsYXNzaWMgV2luZG93cycKKyAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICByZXR1cm4gJ0lETEUgQ2xhc3NpYyBPU1gnCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIklETEUgQ2xhc3NpYyIKKyAgICAgICAgICAgIHJldHVybiAnSURMRSBNb2Rlcm4gVW5peCcKIAotICAgIGRlZiBDdXJyZW50S2V5cyhzZWxmKToKLSAgICAgICAgIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBrZXkgc2V0LiIKLSAgICAgICAgcmV0dXJuIHNlbGYuR2V0T3B0aW9uKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIGRlZmF1bHQ9JycpCi0KLSAgICBkZWYgR2V0RXh0ZW5zaW9ucyhzZWxmLCBhY3RpdmVfb25seT1UcnVlLCBlZGl0b3Jfb25seT1GYWxzZSwgc2hlbGxfb25seT1GYWxzZSk6CisgICAgZGVmIEdldEV4dGVuc2lvbnMoc2VsZiwgYWN0aXZlX29ubHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBlZGl0b3Jfb25seT1GYWxzZSwgc2hlbGxfb25seT1GYWxzZSk6CiAgICAgICAgICIiIlJldHVybiBleHRlbnNpb25zIGluIGRlZmF1bHQgYW5kIHVzZXIgY29uZmlnLWV4dGVuc2lvbnMgZmlsZXMuCiAKICAgICAgICAgSWYgYWN0aXZlX29ubHkgVHJ1ZSwgb25seSByZXR1cm4gYWN0aXZlIChlbmFibGVkKSBleHRlbnNpb25zCkBAIC00MjMsNyArNDM3LDcgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLkdldE9wdGlvbignZXh0ZW5zaW9ucycsIGV4dG4sICdlbmFibGUnLCBkZWZhdWx0PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nYm9vbCcpOgogICAgICAgICAgICAgICAgICAgICAjdGhlIGV4dGVuc2lvbiBpcyBlbmFibGVkCi0gICAgICAgICAgICAgICAgICAgIGlmIGVkaXRvcl9vbmx5IG9yIHNoZWxsX29ubHk6ICAjIFRPRE8gaWYgYm90aCwgY29udHJhZGljdG9yeQorICAgICAgICAgICAgICAgICAgICBpZiBlZGl0b3Jfb25seSBvciBzaGVsbF9vbmx5OiAgIyBUT0RPIGJvdGggVHJ1ZSBjb250cmFkaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlZGl0b3Jfb25seToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gPSAiZW5hYmxlX2VkaXRvciIKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC01MjgsNyArNTQyLDggQEAKICAgICAgICAgZXZlbnRTdHIgLSB2aXJ0dWFsIGV2ZW50LCBpbmNsdWRpbmcgYnJhY2tldHMsIGFzIGluICc8PGV2ZW50Pj4nLgogICAgICAgICAiIiIKICAgICAgICAgZXZlbnROYW1lID0gZXZlbnRTdHJbMjotMl0gI3RyaW0gb2ZmIHRoZSBhbmdsZSBicmFja2V0cwotICAgICAgICBiaW5kaW5nID0gc2VsZi5HZXRPcHRpb24oJ2tleXMnLCBrZXlTZXROYW1lLCBldmVudE5hbWUsIGRlZmF1bHQ9JycpLnNwbGl0KCkKKyAgICAgICAgYmluZGluZyA9IHNlbGYuR2V0T3B0aW9uKCdrZXlzJywga2V5U2V0TmFtZSwgZXZlbnROYW1lLCBkZWZhdWx0PScnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fybl9vbl9kZWZhdWx0PUZhbHNlKS5zcGxpdCgpCiAgICAgICAgIHJldHVybiBiaW5kaW5nCiAKICAgICBkZWYgR2V0Q3VycmVudEtleVNldChzZWxmKToKQEAgLTYzOSwyMCArNjU0LDI4IEBACiAgICAgICAgICAgICAnPDxkZWwtd29yZC1yaWdodD4+JzogWyc8Q29udHJvbC1LZXktRGVsZXRlPiddCiAgICAgICAgICAgICB9CiAgICAgICAgIGlmIGtleVNldE5hbWU6Ci0gICAgICAgICAgICBmb3IgZXZlbnQgaW4ga2V5QmluZGluZ3M6Ci0gICAgICAgICAgICAgICAgYmluZGluZyA9IHNlbGYuR2V0S2V5QmluZGluZyhrZXlTZXROYW1lLCBldmVudCkKLSAgICAgICAgICAgICAgICBpZiBiaW5kaW5nOgotICAgICAgICAgICAgICAgICAgICBrZXlCaW5kaW5nc1tldmVudF0gPSBiaW5kaW5nCi0gICAgICAgICAgICAgICAgZWxzZTogI3dlIGFyZSBnb2luZyB0byByZXR1cm4gYSBkZWZhdWx0LCBwcmludCB3YXJuaW5nCi0gICAgICAgICAgICAgICAgICAgIHdhcm5pbmc9KCdcbiBXYXJuaW5nOiBjb25maWdIYW5kbGVyLnB5IC0gSWRsZUNvbmYuR2V0Q29yZUtleXMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtXG4gcHJvYmxlbSByZXRyaWV2aW5nIGtleSBiaW5kaW5nIGZvciBldmVudCAlcicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4gZnJvbSBrZXkgc2V0ICVyLlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWU6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LCBrZXlTZXROYW1lLCBrZXlCaW5kaW5nc1tldmVudF0pKQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgaWYgbm90IChzZWxmLnVzZXJDZmdbJ2tleXMnXS5oYXNfc2VjdGlvbihrZXlTZXROYW1lKSBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLmRlZmF1bHRDZmdbJ2tleXMnXS5oYXNfc2VjdGlvbihrZXlTZXROYW1lKSk6CisgICAgICAgICAgICAgICAgd2FybmluZyA9ICgKKyAgICAgICAgICAgICAgICAgICAgJ1xuIFdhcm5pbmc6IGNvbmZpZy5weSAtIElkbGVDb25mLkdldENvcmVLZXlzIC1cbicKKyAgICAgICAgICAgICAgICAgICAgJyBrZXkgc2V0ICVyIGlzIG5vdCBkZWZpbmVkLCB1c2luZyBkZWZhdWx0IGJpbmRpbmdzLicgJQorICAgICAgICAgICAgICAgICAgICAoa2V5U2V0TmFtZSwpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsICdrZXlzJywga2V5U2V0TmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZm9yIGV2ZW50IGluIGtleUJpbmRpbmdzOgorICAgICAgICAgICAgICAgICAgICBiaW5kaW5nID0gc2VsZi5HZXRLZXlCaW5kaW5nKGtleVNldE5hbWUsIGV2ZW50KQorICAgICAgICAgICAgICAgICAgICBpZiBiaW5kaW5nOgorICAgICAgICAgICAgICAgICAgICAgICAga2V5QmluZGluZ3NbZXZlbnRdID0gYmluZGluZworICAgICAgICAgICAgICAgICAgICBlbHNlOiAjd2UgYXJlIGdvaW5nIHRvIHJldHVybiBhIGRlZmF1bHQsIHByaW50IHdhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuIFdhcm5pbmc6IGNvbmZpZy5weSAtIElkbGVDb25mLkdldENvcmVLZXlzIC1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHByb2JsZW0gcmV0cmlldmluZyBrZXkgYmluZGluZyBmb3IgZXZlbnQgJXJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGZyb20ga2V5IHNldCAlci5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJldHVybmluZyBkZWZhdWx0IHZhbHVlOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudCwga2V5U2V0TmFtZSwga2V5QmluZGluZ3NbZXZlbnRdKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgX3dhcm4od2FybmluZywgJ2tleXMnLCBrZXlTZXROYW1lLCBldmVudCkKICAgICAgICAgcmV0dXJuIGtleUJpbmRpbmdzCiAKICAgICBkZWYgR2V0RXh0cmFIZWxwU291cmNlTGlzdChzZWxmLCBjb25maWdTZXQpOgpAQCAtNzEzLDE2ICs3MzYsMTMgQEAKICAgICAgICAgYm9sZCA9IHNlbGYuR2V0T3B0aW9uKGNvbmZpZ1R5cGUsIHNlY3Rpb24sICdmb250LWJvbGQnLCBkZWZhdWx0PTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdib29sJykKICAgICAgICAgaWYgKGZhbWlseSA9PSAnVGtGaXhlZEZvbnQnKToKLSAgICAgICAgICAgIGlmIFRrVmVyc2lvbiA8IDguNToKLSAgICAgICAgICAgICAgICBmYW1pbHkgPSAnQ291cmllcicKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZiA9IEZvbnQobmFtZT0nVGtGaXhlZEZvbnQnLCBleGlzdHM9VHJ1ZSwgcm9vdD1yb290KQotICAgICAgICAgICAgICAgIGFjdHVhbEZvbnQgPSBGb250LmFjdHVhbChmKQotICAgICAgICAgICAgICAgIGZhbWlseSA9IGFjdHVhbEZvbnRbJ2ZhbWlseSddCi0gICAgICAgICAgICAgICAgc2l6ZSA9IGFjdHVhbEZvbnRbJ3NpemUnXQotICAgICAgICAgICAgICAgIGlmIHNpemUgPD0gMDoKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwICAjIGlmIGZvbnQgaW4gcGl4ZWxzLCBpZ25vcmUgYWN0dWFsIHNpemUKLSAgICAgICAgICAgICAgICBib2xkID0gYWN0dWFsRm9udFsnd2VpZ2h0J109PSdib2xkJworICAgICAgICAgICAgZiA9IEZvbnQobmFtZT0nVGtGaXhlZEZvbnQnLCBleGlzdHM9VHJ1ZSwgcm9vdD1yb290KQorICAgICAgICAgICAgYWN0dWFsRm9udCA9IEZvbnQuYWN0dWFsKGYpCisgICAgICAgICAgICBmYW1pbHkgPSBhY3R1YWxGb250WydmYW1pbHknXQorICAgICAgICAgICAgc2l6ZSA9IGFjdHVhbEZvbnRbJ3NpemUnXQorICAgICAgICAgICAgaWYgc2l6ZSA8PSAwOgorICAgICAgICAgICAgICAgIHNpemUgPSAxMCAgIyBpZiBmb250IGluIHBpeGVscywgaWdub3JlIGFjdHVhbCBzaXplCisgICAgICAgICAgICBib2xkID0gYWN0dWFsRm9udFsnd2VpZ2h0J10gPT0gJ2JvbGQnCiAgICAgICAgIHJldHVybiAoZmFtaWx5LCBzaXplLCAnYm9sZCcgaWYgYm9sZCBlbHNlICdub3JtYWwnKQogCiAgICAgZGVmIExvYWRDZmdGaWxlcyhzZWxmKToKQEAgLTczOSw2ICs3NTksMTggQEAKIAogaWRsZUNvbmYgPSBJZGxlQ29uZigpCiAKKworX3dhcm5lZCA9IHNldCgpCitkZWYgX3dhcm4obXNnLCAqa2V5KToKKyAgICBrZXkgPSAobXNnLCkgKyBrZXkKKyAgICBpZiBrZXkgbm90IGluIF93YXJuZWQ6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgX3dhcm5lZC5hZGQoa2V5KQorCisKICMgVE9ETyBSZXZpc2UgdGVzdCBvdXRwdXQsIHdyaXRlIGV4cGFuZGVkIHVuaXR0ZXN0CiAjCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnSGVscFNvdXJjZUVkaXQucHkgYi9MaWIvaWRsZWxpYi9jb25maWdIZWxwU291cmNlRWRpdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RlODExOC4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdIZWxwU291cmNlRWRpdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0iRGlhbG9nIHRvIHNwZWNpZnkgb3IgZWRpdCB0aGUgcGFyYW1ldGVycyBmb3IgYSB1c2VyIGNvbmZpZ3VyZWQgaGVscCBzb3VyY2UuIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAotaW1wb3J0IHRraW50ZXIuZmlsZWRpYWxvZyBhcyB0a0ZpbGVEaWFsb2cKLQotY2xhc3MgR2V0SGVscFNvdXJjZURpYWxvZyhUb3BsZXZlbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lbnVJdGVtPScnLCBmaWxlUGF0aD0nJywgX2h0ZXN0PUZhbHNlKToKLSAgICAgICAgIiIiR2V0IG1lbnUgZW50cnkgYW5kIHVybC8gbG9jYWwgZmlsZSBsb2NhdGlvbiBmb3IgQWRkaXRpb25hbCBIZWxwCi0KLSAgICAgICAgVXNlciBzZWxlY3RzIGEgbmFtZSBmb3IgdGhlIEhlbHAgcmVzb3VyY2UgYW5kIHByb3ZpZGVzIGEgd2ViIHVybAotICAgICAgICBvciBhIGxvY2FsIGZpbGUgYXMgaXRzIHNvdXJjZS4gIFRoZSB1c2VyIGNhbiBlbnRlciBhIHVybCBvciBicm93c2UKLSAgICAgICAgZm9yIHRoZSBmaWxlLgotCi0gICAgICAgIF9odGVzdCAtIGJvb2wsIGNoYW5nZSBib3ggbG9jYXRpb24gd2hlbiBydW5uaW5nIGh0ZXN0Ci0gICAgICAgICIiIgotICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCi0gICAgICAgIHNlbGYuY29uZmlndXJlKGJvcmRlcndpZHRoPTUpCi0gICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GQUxTRSwgd2lkdGg9RkFMU0UpCi0gICAgICAgIHNlbGYudGl0bGUodGl0bGUpCi0gICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKLSAgICAgICAgc2VsZi5ncmFiX3NldCgpCi0gICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLmNhbmNlbCkKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKLSAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCi0gICAgICAgIHNlbGYuY3JlYXRlX3dpZGdldHMoKQotICAgICAgICBzZWxmLm1lbnUuc2V0KG1lbnVJdGVtKQotICAgICAgICBzZWxmLnBhdGguc2V0KGZpbGVQYXRoKQotICAgICAgICBzZWxmLndpdGhkcmF3KCkgI2hpZGUgd2hpbGUgc2V0dGluZyBnZW9tZXRyeQotICAgICAgICAjbmVlZHMgdG8gYmUgZG9uZSBoZXJlIHNvIHRoYXQgdGhlIHdpbmZvX3JlcXdpZHRoIGlzIHZhbGlkCi0gICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpCi0gICAgICAgICNjZW50cmUgZGlhbG9nIG92ZXIgcGFyZW50LiBiZWxvdyBwYXJlbnQgaWYgcnVubmluZyBodGVzdC4KLSAgICAgICAgc2VsZi5nZW9tZXRyeSgKLSAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKwotICAgICAgICAgICAgICAgICAgICAocGFyZW50LndpbmZvX3dpZHRoKCkvMiAtIHNlbGYud2luZm9fcmVxd2lkdGgoKS8yKSwKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKwotICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTUwKSkpCi0gICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgI2dlb21ldHJ5IHNldCwgdW5oaWRlCi0gICAgICAgIHNlbGYuYmluZCgnPFJldHVybj4nLCBzZWxmLm9rKQotICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKLQotICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5tZW51ID0gU3RyaW5nVmFyKHNlbGYpCi0gICAgICAgIHNlbGYucGF0aCA9IFN0cmluZ1ZhcihzZWxmKQotICAgICAgICBzZWxmLmZvbnRTaXplID0gU3RyaW5nVmFyKHNlbGYpCi0gICAgICAgIHNlbGYuZnJhbWVNYWluID0gRnJhbWUoc2VsZiwgYm9yZGVyd2lkdGg9MiwgcmVsaWVmPUdST09WRSkKLSAgICAgICAgc2VsZi5mcmFtZU1haW4ucGFjayhzaWRlPVRPUCwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKLSAgICAgICAgbGFiZWxNZW51ID0gTGFiZWwoc2VsZi5mcmFtZU1haW4sIGFuY2hvcj1XLCBqdXN0aWZ5PUxFRlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9J01lbnUgSXRlbTonKQotICAgICAgICBzZWxmLmVudHJ5TWVudSA9IEVudHJ5KHNlbGYuZnJhbWVNYWluLCB0ZXh0dmFyaWFibGU9c2VsZi5tZW51LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTMwKQotICAgICAgICBzZWxmLmVudHJ5TWVudS5mb2N1c19zZXQoKQotICAgICAgICBsYWJlbFBhdGggPSBMYWJlbChzZWxmLmZyYW1lTWFpbiwgYW5jaG9yPVcsIGp1c3RpZnk9TEVGVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0nSGVscCBGaWxlIFBhdGg6IEVudGVyIFVSTCBvciBicm93c2UgZm9yIGZpbGUnKQotICAgICAgICBzZWxmLmVudHJ5UGF0aCA9IEVudHJ5KHNlbGYuZnJhbWVNYWluLCB0ZXh0dmFyaWFibGU9c2VsZi5wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTQwKQotICAgICAgICBzZWxmLmVudHJ5TWVudS5mb2N1c19zZXQoKQotICAgICAgICBsYWJlbE1lbnUucGFjayhhbmNob3I9VywgcGFkeD01LCBwYWR5PTMpCi0gICAgICAgIHNlbGYuZW50cnlNZW51LnBhY2soYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT0zKQotICAgICAgICBsYWJlbFBhdGgucGFjayhhbmNob3I9VywgcGFkeD01LCBwYWR5PTMpCi0gICAgICAgIHNlbGYuZW50cnlQYXRoLnBhY2soYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT0zKQotICAgICAgICBicm93c2VCdXR0b24gPSBCdXR0b24oc2VsZi5mcmFtZU1haW4sIHRleHQ9J0Jyb3dzZScsIHdpZHRoPTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuYnJvd3NlX2ZpbGUpCi0gICAgICAgIGJyb3dzZUJ1dHRvbi5wYWNrKHBhZHk9MykKLSAgICAgICAgZnJhbWVCdXR0b25zID0gRnJhbWUoc2VsZikKLSAgICAgICAgZnJhbWVCdXR0b25zLnBhY2soc2lkZT1CT1RUT00sIGZpbGw9WCkKLSAgICAgICAgc2VsZi5idXR0b25PayA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J09LJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD04LCBkZWZhdWx0PUFDVElWRSwgIGNvbW1hbmQ9c2VsZi5vaykKLSAgICAgICAgc2VsZi5idXR0b25Pay5ncmlkKHJvdz0wLCBjb2x1bW49MCwgcGFkeD01LHBhZHk9NSkKLSAgICAgICAgc2VsZi5idXR0b25DYW5jZWwgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdDYW5jZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD04LCBjb21tYW5kPXNlbGYuY2FuY2VsKQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbC5ncmlkKHJvdz0wLCBjb2x1bW49MSwgcGFkeD01LCBwYWR5PTUpCi0KLSAgICBkZWYgYnJvd3NlX2ZpbGUoc2VsZik6Ci0gICAgICAgIGZpbGV0eXBlcyA9IFsKLSAgICAgICAgICAgICgiSFRNTCBGaWxlcyIsICIqLmh0bSAqLmh0bWwiLCAiVEVYVCIpLAotICAgICAgICAgICAgKCJQREYgRmlsZXMiLCAiKi5wZGYiLCAiVEVYVCIpLAotICAgICAgICAgICAgKCJXaW5kb3dzIEhlbHAgRmlsZXMiLCAiKi5jaG0iKSwKLSAgICAgICAgICAgICgiVGV4dCBGaWxlcyIsICIqLnR4dCIsICJURVhUIiksCi0gICAgICAgICAgICAoIkFsbCBGaWxlcyIsICIqIildCi0gICAgICAgIHBhdGggPSBzZWxmLnBhdGguZ2V0KCkKLSAgICAgICAgaWYgcGF0aDoKLSAgICAgICAgICAgIGRpciwgYmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJhc2UgPSBOb25lCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgotICAgICAgICAgICAgICAgIGRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCAnRG9jJykKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkaXIpOgotICAgICAgICAgICAgICAgICAgICBkaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICBvcGVuZGlhbG9nID0gdGtGaWxlRGlhbG9nLk9wZW4ocGFyZW50PXNlbGYsIGZpbGV0eXBlcz1maWxldHlwZXMpCi0gICAgICAgIGZpbGUgPSBvcGVuZGlhbG9nLnNob3coaW5pdGlhbGRpcj1kaXIsIGluaXRpYWxmaWxlPWJhc2UpCi0gICAgICAgIGlmIGZpbGU6Ci0gICAgICAgICAgICBzZWxmLnBhdGguc2V0KGZpbGUpCi0KLSAgICBkZWYgbWVudV9vayhzZWxmKToKLSAgICAgICAgIlNpbXBsZSB2YWxpZGl0eSBjaGVjayBmb3IgYSBzZW5zaWJsZSBtZW51IGl0ZW0gbmFtZSIKLSAgICAgICAgbWVudV9vayA9IFRydWUKLSAgICAgICAgbWVudSA9IHNlbGYubWVudS5nZXQoKQotICAgICAgICBtZW51LnN0cmlwKCkKLSAgICAgICAgaWYgbm90IG1lbnU6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdNZW51IEl0ZW0gRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdObyBtZW51IGl0ZW0gc3BlY2lmaWVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBzZWxmLmVudHJ5TWVudS5mb2N1c19zZXQoKQotICAgICAgICAgICAgbWVudV9vayA9IEZhbHNlCi0gICAgICAgIGVsaWYgbGVuKG1lbnUpID4gMzA6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdNZW51IEl0ZW0gRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdNZW51IGl0ZW0gdG9vIGxvbmc6JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbkxpbWl0IDMwIGNoYXJhY3RlcnMuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBzZWxmLmVudHJ5TWVudS5mb2N1c19zZXQoKQotICAgICAgICAgICAgbWVudV9vayA9IEZhbHNlCi0gICAgICAgIHJldHVybiBtZW51X29rCi0KLSAgICBkZWYgcGF0aF9vayhzZWxmKToKLSAgICAgICAgIlNpbXBsZSB2YWxpZGl0eSBjaGVjayBmb3IgbWVudSBmaWxlIHBhdGgiCi0gICAgICAgIHBhdGhfb2sgPSBUcnVlCi0gICAgICAgIHBhdGggPSBzZWxmLnBhdGguZ2V0KCkKLSAgICAgICAgcGF0aC5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBwYXRoOiAjbm8gcGF0aCBzcGVjaWZpZWQKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J0ZpbGUgUGF0aCBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05vIGhlbHAgZmlsZSBwYXRoIHNwZWNpZmllZC4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIHNlbGYuZW50cnlQYXRoLmZvY3VzX3NldCgpCi0gICAgICAgICAgICBwYXRoX29rID0gRmFsc2UKLSAgICAgICAgZWxpZiBwYXRoLnN0YXJ0c3dpdGgoKCd3d3cuJywgJ2h0dHAnKSk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBwYXRoWzo1XSA9PSAnZmlsZTonOgotICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoWzU6XQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J0ZpbGUgUGF0aCBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxwIGZpbGUgcGF0aCBkb2VzIG5vdCBleGlzdC4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICAgICAgc2VsZi5lbnRyeVBhdGguZm9jdXNfc2V0KCkKLSAgICAgICAgICAgICAgICBwYXRoX29rID0gRmFsc2UKLSAgICAgICAgcmV0dXJuIHBhdGhfb2sKLQotICAgIGRlZiBvayhzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgaWYgc2VsZi5tZW51X29rKCkgYW5kIHNlbGYucGF0aF9vaygpOgotICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSAoc2VsZi5tZW51LmdldCgpLnN0cmlwKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGguZ2V0KCkuc3RyaXAoKSkKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgICAgICBwYXRoID0gc2VsZi5yZXN1bHRbMV0KLSAgICAgICAgICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoKCd3d3cnLCAnZmlsZTonLCAnaHR0cDonLCAnaHR0cHM6JykpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBNYWMgU2FmYXJpIGluc2lzdHMgb24gdXNpbmcgdGhlIFVSSSBmb3JtIGZvciBsb2NhbCBmaWxlcwotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IGxpc3Qoc2VsZi5yZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0WzFdID0gImZpbGU6Ly8iICsgcGF0aAotICAgICAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotICAgIGRlZiBjYW5jZWwoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQotICAgICAgICBzZWxmLmRlc3Ryb3koKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfY29uZmlnX2hlbHAnLAotICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQotCi0gICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCi0gICAgcnVuKEdldEhlbHBTb3VyY2VEaWFsb2cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTM3ODM2Li4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotIiIiCi1EaWFsb2cgdGhhdCBhbGxvd3MgdXNlciB0byBzcGVjaWZ5IGEgbmV3IGNvbmZpZyBmaWxlIHNlY3Rpb24gbmFtZS4KLVVzZWQgdG8gZ2V0IG5ldyBoaWdobGlnaHQgdGhlbWUgYW5kIGtleWJpbmRpbmcgc2V0IG5hbWVzLgotVGhlICdyZXR1cm4gdmFsdWUnIGZvciB0aGUgZGlhbG9nLCB1c2VkIHR3byBwbGFjZWQgaW4gY29uZmlnRGlhbG9nLnB5LAotaXMgdGhlIC5yZXN1bHQgYXR0cmlidXRlIHNldCBpbiB0aGUgT2sgYW5kIENhbmNlbCBtZXRob2RzLgotIiIiCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci0KLWNsYXNzIEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nKFRvcGxldmVsKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdXNlZF9uYW1lcywgX2h0ZXN0PUZhbHNlKToKLSAgICAgICAgIiIiCi0gICAgICAgIG1lc3NhZ2UgLSBzdHJpbmcsIGluZm9ybWF0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5Ci0gICAgICAgIHVzZWRfbmFtZXMgLSBzdHJpbmcgY29sbGVjdGlvbiwgbmFtZXMgYWxyZWFkeSBpbiB1c2UgZm9yIHZhbGlkaXR5IGNoZWNrCi0gICAgICAgIF9odGVzdCAtIGJvb2wsIGNoYW5nZSBib3ggbG9jYXRpb24gd2hlbiBydW5uaW5nIGh0ZXN0Ci0gICAgICAgICIiIgotICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCi0gICAgICAgIHNlbGYuY29uZmlndXJlKGJvcmRlcndpZHRoPTUpCi0gICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GQUxTRSwgd2lkdGg9RkFMU0UpCi0gICAgICAgIHNlbGYudGl0bGUodGl0bGUpCi0gICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKLSAgICAgICAgc2VsZi5ncmFiX3NldCgpCi0gICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLkNhbmNlbCkKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotICAgICAgICBzZWxmLnVzZWRfbmFtZXMgPSB1c2VkX25hbWVzCi0gICAgICAgIHNlbGYuY3JlYXRlX3dpZGdldHMoKQotICAgICAgICBzZWxmLndpdGhkcmF3KCkgICNoaWRlIHdoaWxlIHNldHRpbmcgZ2VvbWV0cnkKLSAgICAgICAgc2VsZi51cGRhdGVfaWRsZXRhc2tzKCkKLSAgICAgICAgI25lZWRzIHRvIGJlIGRvbmUgaGVyZSBzbyB0aGF0IHRoZSB3aW5mb19yZXF3aWR0aCBpcyB2YWxpZAotICAgICAgICBzZWxmLm1lc3NhZ2VJbmZvLmNvbmZpZyh3aWR0aD1zZWxmLmZyYW1lTWFpbi53aW5mb19yZXF3aWR0aCgpKQotICAgICAgICBzZWxmLmdlb21ldHJ5KAotICAgICAgICAgICAgICAgICIrJWQrJWQiICUgKAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArCi0gICAgICAgICAgICAgICAgICAgIChwYXJlbnQud2luZm9fd2lkdGgoKS8yIC0gc2VsZi53aW5mb19yZXF3aWR0aCgpLzIpLAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArCi0gICAgICAgICAgICAgICAgICAgICgocGFyZW50LndpbmZvX2hlaWdodCgpLzIgLSBzZWxmLndpbmZvX3JlcWhlaWdodCgpLzIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaHRlc3QgZWxzZSAxMDApCi0gICAgICAgICAgICAgICAgKSApICAjY2VudHJlIGRpYWxvZyBvdmVyIHBhcmVudCAob3IgYmVsb3cgaHRlc3QgYm94KQotICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICAjZ2VvbWV0cnkgc2V0LCB1bmhpZGUKLSAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCi0KLSAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6Ci0gICAgICAgIHNlbGYubmFtZSA9IFN0cmluZ1ZhcihzZWxmLnBhcmVudCkKLSAgICAgICAgc2VsZi5mb250U2l6ZSA9IFN0cmluZ1ZhcihzZWxmLnBhcmVudCkKLSAgICAgICAgc2VsZi5mcmFtZU1haW4gPSBGcmFtZShzZWxmLCBib3JkZXJ3aWR0aD0yLCByZWxpZWY9U1VOS0VOKQotICAgICAgICBzZWxmLmZyYW1lTWFpbi5wYWNrKHNpZGU9VE9QLCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQotICAgICAgICBzZWxmLm1lc3NhZ2VJbmZvID0gTWVzc2FnZShzZWxmLmZyYW1lTWFpbiwgYW5jaG9yPVcsIGp1c3RpZnk9TEVGVCwKLSAgICAgICAgICAgICAgICAgICAgcGFkeD01LCBwYWR5PTUsIHRleHQ9c2VsZi5tZXNzYWdlKSAjLGFzcGVjdD0yMDApCi0gICAgICAgIGVudHJ5TmFtZSA9IEVudHJ5KHNlbGYuZnJhbWVNYWluLCB0ZXh0dmFyaWFibGU9c2VsZi5uYW1lLCB3aWR0aD0zMCkKLSAgICAgICAgZW50cnlOYW1lLmZvY3VzX3NldCgpCi0gICAgICAgIHNlbGYubWVzc2FnZUluZm8ucGFjayhwYWR4PTUsIHBhZHk9NSkgIywgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKLSAgICAgICAgZW50cnlOYW1lLnBhY2socGFkeD01LCBwYWR5PTUpCi0KLSAgICAgICAgZnJhbWVCdXR0b25zID0gRnJhbWUoc2VsZiwgcGFkeT0yKQotICAgICAgICBmcmFtZUJ1dHRvbnMucGFjayhzaWRlPUJPVFRPTSkKLSAgICAgICAgc2VsZi5idXR0b25PayA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J09rJywKLSAgICAgICAgICAgICAgICB3aWR0aD04LCBjb21tYW5kPXNlbGYuT2spCi0gICAgICAgIHNlbGYuYnV0dG9uT2sucGFjayhzaWRlPUxFRlQsIHBhZHg9NSkKLSAgICAgICAgc2VsZi5idXR0b25DYW5jZWwgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdDYW5jZWwnLAotICAgICAgICAgICAgICAgIHdpZHRoPTgsIGNvbW1hbmQ9c2VsZi5DYW5jZWwpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsLnBhY2soc2lkZT1SSUdIVCwgcGFkeD01KQotCi0gICAgZGVmIG5hbWVfb2soc2VsZik6Ci0gICAgICAgICcnJyBBZnRlciBzdHJpcHBpbmcgZW50ZXJlZCBuYW1lLCBjaGVjayB0aGF0IGl0IGlzIGEgIHNlbnNpYmxlCi0gICAgICAgIENvbmZpZ1BhcnNlciBmaWxlIHNlY3Rpb24gbmFtZS4gUmV0dXJuIGl0IGlmIGl0IGlzLCAnJyBpZiBub3QuCi0gICAgICAgICcnJwotICAgICAgICBuYW1lID0gc2VsZi5uYW1lLmdldCgpLnN0cmlwKCkKLSAgICAgICAgaWYgbm90IG5hbWU6ICNubyBuYW1lIHNwZWNpZmllZAotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTmFtZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05vIG5hbWUgc3BlY2lmaWVkLicsIHBhcmVudD1zZWxmKQotICAgICAgICBlbGlmIGxlbihuYW1lKT4zMDogI25hbWUgdG9vIGxvbmcKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J05hbWUgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdOYW1lIHRvbyBsb25nLiBJdCBzaG91bGQgYmUgbm8gbW9yZSB0aGFuICcrCi0gICAgICAgICAgICAgICAgICAgICczMCBjaGFyYWN0ZXJzLicsIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgIGVsaWYgbmFtZSBpbiBzZWxmLnVzZWRfbmFtZXM6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdOYW1lIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nVGhpcyBuYW1lIGlzIGFscmVhZHkgaW4gdXNlLicsIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgIHJldHVybiBuYW1lCi0KLSAgICBkZWYgT2soc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIG5hbWUgPSBzZWxmLm5hbWVfb2soKQotICAgICAgICBpZiBuYW1lOgotICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBuYW1lCi0gICAgICAgICAgICBzZWxmLmRlc3Ryb3koKQotCi0gICAgZGVmIENhbmNlbChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgc2VsZi5yZXN1bHQgPSAnJwotICAgICAgICBzZWxmLmRlc3Ryb3koKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfY29uZmlnX25hbWUnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKLQotICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgotICAgIHJ1bihHZXRDZmdTZWN0aW9uTmFtZURpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2tleWJpbmRpbmdEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9jb25maWdfa2V5LnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2tleWJpbmRpbmdEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbmZpZ19rZXkucHkKaW5kZXggZTY0MzhiZi4uMjYwMjI5MyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIva2V5YmluZGluZ0RpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9jb25maWdfa2V5LnB5CkBAIC0yLDMxICsyLDM1IEBACiBEaWFsb2cgZm9yIGJ1aWxkaW5nIFRraW50ZXIgYWNjZWxlcmF0b3Iga2V5IGJpbmRpbmdzCiAiIiIKIGZyb20gdGtpbnRlciBpbXBvcnQgKgorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogCiBjbGFzcyBHZXRLZXlzRGlhbG9nKFRvcGxldmVsKToKLSAgICBkZWYgX19pbml0X18oc2VsZixwYXJlbnQsdGl0bGUsYWN0aW9uLGN1cnJlbnRLZXlTZXF1ZW5jZXMsX2h0ZXN0PUZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgYWN0aW9uLCBjdXJyZW50S2V5U2VxdWVuY2VzLAorICAgICAgICAgICAgICAgICBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBhY3Rpb24gLSBzdHJpbmcsIHRoZSBuYW1lIG9mIHRoZSB2aXJ0dWFsIGV2ZW50IHRoZXNlIGtleXMgd2lsbCBiZQogICAgICAgICAgICAgICAgICBtYXBwZWQgdG8KICAgICAgICAgY3VycmVudEtleXMgLSBsaXN0LCBhIGxpc3Qgb2YgYWxsIGtleSBzZXF1ZW5jZSBsaXN0cyBjdXJyZW50bHkgbWFwcGVkCiAgICAgICAgICAgICAgICAgIHRvIHZpcnR1YWwgZXZlbnRzLCBmb3Igb3ZlcmxhcCBjaGVja2luZworICAgICAgICBfdXRlc3QgLSBib29sLCBkbyBub3Qgd2FpdCB3aGVuIHJ1bm5pbmcgdW5pdHRlc3QKICAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKICAgICAgICAgIiIiCiAgICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKKyAgICAgICAgc2VsZi53aXRoZHJhdygpICNoaWRlIHdoaWxlIHNldHRpbmcgZ2VvbWV0cnkKICAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLHdpZHRoPUZBTFNFKQorICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0UsIHdpZHRoPUZBTFNFKQogICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQogICAgICAgICBzZWxmLnRyYW5zaWVudChwYXJlbnQpCiAgICAgICAgIHNlbGYuZ3JhYl9zZXQoKQogICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5DYW5jZWwpCiAgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CiAgICAgICAgIHNlbGYuYWN0aW9uPWFjdGlvbgotICAgICAgICBzZWxmLmN1cnJlbnRLZXlTZXF1ZW5jZXM9Y3VycmVudEtleVNlcXVlbmNlcwotICAgICAgICBzZWxmLnJlc3VsdD0nJwotICAgICAgICBzZWxmLmtleVN0cmluZz1TdHJpbmdWYXIoc2VsZikKKyAgICAgICAgc2VsZi5jdXJyZW50S2V5U2VxdWVuY2VzID0gY3VycmVudEtleVNlcXVlbmNlcworICAgICAgICBzZWxmLnJlc3VsdCA9ICcnCisgICAgICAgIHNlbGYua2V5U3RyaW5nID0gU3RyaW5nVmFyKHNlbGYpCiAgICAgICAgIHNlbGYua2V5U3RyaW5nLnNldCgnJykKICAgICAgICAgc2VsZi5TZXRNb2RpZmllcnNGb3JQbGF0Zm9ybSgpICMgc2V0IHNlbGYubW9kaWZpZXJzLCBzZWxmLm1vZGlmaWVyX2xhYmVsCiAgICAgICAgIHNlbGYubW9kaWZpZXJfdmFycyA9IFtdCkBAIC0zNyw3ICs0MSw2IEBACiAgICAgICAgIHNlbGYuYWR2YW5jZWQgPSBGYWxzZQogICAgICAgICBzZWxmLkNyZWF0ZVdpZGdldHMoKQogICAgICAgICBzZWxmLkxvYWRGaW5hbEtleUxpc3QoKQotICAgICAgICBzZWxmLndpdGhkcmF3KCkgI2hpZGUgd2hpbGUgc2V0dGluZyBnZW9tZXRyeQogICAgICAgICBzZWxmLnVwZGF0ZV9pZGxldGFza3MoKQogICAgICAgICBzZWxmLmdlb21ldHJ5KAogICAgICAgICAgICAgICAgICIrJWQrJWQiICUgKApAQCAtNDcsOCArNTAsOSBAQAogICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTUwKQogICAgICAgICAgICAgICAgICkgKSAgI2NlbnRyZSBkaWFsb2cgb3ZlciBwYXJlbnQgKG9yIGJlbG93IGh0ZXN0IGJveCkKLSAgICAgICAgc2VsZi5kZWljb25pZnkoKSAjZ2VvbWV0cnkgc2V0LCB1bmhpZGUKLSAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCisgICAgICAgIGlmIG5vdCBfdXRlc3Q6CisgICAgICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICNnZW9tZXRyeSBzZXQsIHVuaGlkZQorICAgICAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCiAKICAgICBkZWYgQ3JlYXRlV2lkZ2V0cyhzZWxmKToKICAgICAgICAgZnJhbWVNYWluID0gRnJhbWUoc2VsZixib3JkZXJ3aWR0aD0yLHJlbGllZj1TVU5LRU4pCkBAIC0yNjEsNiArMjY1LDcgQEAKICAgICAgICAgICAgIGtleXNPSyA9IFRydWUKICAgICAgICAgcmV0dXJuIGtleXNPSwogCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKEdldEtleXNEaWFsb2cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9jb25maWdkaWFsb2cucHkKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvY29uZmlnRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jb25maWdkaWFsb2cucHkKaW5kZXggNWY1YmQzNi4uZmE0N2FhYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZ2RpYWxvZy5weQpAQCAtMTAsMTggKzEwLDE4IEBACiAKICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCiBpbXBvcnQgdGtpbnRlci5jb2xvcmNob29zZXIgYXMgdGtDb2xvckNob29zZXIKIGltcG9ydCB0a2ludGVyLmZvbnQgYXMgdGtGb250CitpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKLWZyb20gaWRsZWxpYi5keW5PcHRpb25NZW51V2lkZ2V0IGltcG9ydCBEeW5PcHRpb25NZW51Ci1mcm9tIGlkbGVsaWIua2V5YmluZGluZ0RpYWxvZyBpbXBvcnQgR2V0S2V5c0RpYWxvZwotZnJvbSBpZGxlbGliLmNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIGltcG9ydCBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZwotZnJvbSBpZGxlbGliLmNvbmZpZ0hlbHBTb3VyY2VFZGl0IGltcG9ydCBHZXRIZWxwU291cmNlRGlhbG9nCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmNvbmZpZ19rZXkgaW1wb3J0IEdldEtleXNEaWFsb2cKK2Zyb20gaWRsZWxpYi5keW5vcHRpb24gaW1wb3J0IER5bk9wdGlvbk1lbnUKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIucXVlcnkgaW1wb3J0IFNlY3Rpb25OYW1lLCBIZWxwU291cmNlCiBmcm9tIGlkbGVsaWIudGFiYmVkcGFnZXMgaW1wb3J0IFRhYmJlZFBhZ2VTZXQKLWZyb20gaWRsZWxpYi50ZXh0VmlldyBpbXBvcnQgdmlld190ZXh0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gaWRsZWxpYi50ZXh0dmlldyBpbXBvcnQgdmlld190ZXh0CiAKIGNsYXNzIENvbmZpZ0RpYWxvZyhUb3BsZXZlbCk6CiAKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAgICAgc2VsZi5jcmVhdGVfYWN0aW9uX2J1dHRvbnMoKS5wYWNrKHNpZGU9Qk9UVE9NKQogCiAgICAgZGVmIGNyZWF0ZV9hY3Rpb25fYnV0dG9ucyhzZWxmKToKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgICAgICMgQ2hhbmdpbmcgdGhlIGRlZmF1bHQgcGFkZGluZyBvbiBPU1ggcmVzdWx0cyBpbiB1bnJlYWRhYmxlCiAgICAgICAgICAgICAjIHRleHQgaW4gdGhlIGJ1dHRvbnMKICAgICAgICAgICAgIHBhZGRpbmdBcmdzID0ge30KQEAgLTM0MSw2ICszNDEsNyBAQAogICAgICAgICBidXR0b25TYXZlQ3VzdG9tS2V5cyA9IEJ1dHRvbigKICAgICAgICAgICAgICAgICBmcmFtZXNbMV0sIHRleHQ9J1NhdmUgYXMgTmV3IEN1c3RvbSBLZXkgU2V0JywKICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuU2F2ZUFzTmV3S2V5U2V0KQorICAgICAgICBzZWxmLm5ld19jdXN0b21fa2V5cyA9IExhYmVsKGZyYW1lc1swXSwgYmQ9MikKIAogICAgICAgICAjI3dpZGdldCBwYWNraW5nCiAgICAgICAgICNib2R5CkBAIC0zNjEsNiArMzYyLDcgQEAKICAgICAgICAgc2VsZi5yYWRpb0tleXNDdXN0b20uZ3JpZChyb3c9MSwgY29sdW1uPTAsIHN0aWNreT1XK05TKQogICAgICAgICBzZWxmLm9wdE1lbnVLZXlzQnVpbHRpbi5ncmlkKHJvdz0wLCBjb2x1bW49MSwgc3RpY2t5PU5TRVcpCiAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uZ3JpZChyb3c9MSwgY29sdW1uPTEsIHN0aWNreT1OU0VXKQorICAgICAgICBzZWxmLm5ld19jdXN0b21fa2V5cy5ncmlkKHJvdz0wLCBjb2x1bW49Miwgc3RpY2t5PU5TRVcsIHBhZHg9NSwgcGFkeT01KQogICAgICAgICBzZWxmLmJ1dHRvbkRlbGV0ZUN1c3RvbUtleXMucGFjayhzaWRlPUxFRlQsIGZpbGw9WCwgZXhwYW5kPVRydWUsIHBhZHg9MikKICAgICAgICAgYnV0dG9uU2F2ZUN1c3RvbUtleXMucGFjayhzaWRlPUxFRlQsIGZpbGw9WCwgZXhwYW5kPVRydWUsIHBhZHg9MikKICAgICAgICAgZnJhbWVzWzBdLnBhY2soc2lkZT1UT1AsIGZpbGw9Qk9USCwgZXhwYW5kPVRydWUpCkBAIC00NjQsMjQgKzQ2NiwyNCBAQAogICAgICAgICByZXR1cm4gZnJhbWUKIAogICAgIGRlZiBBdHRhY2hWYXJDYWxsYmFja3Moc2VsZik6Ci0gICAgICAgIHNlbGYuZm9udFNpemUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKLSAgICAgICAgc2VsZi5mb250TmFtZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQotICAgICAgICBzZWxmLmZvbnRCb2xkLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCi0gICAgICAgIHNlbGYuc3BhY2VOdW0udHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfc3BhY2VOdW0pCi0gICAgICAgIHNlbGYuY29sb3VyLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2NvbG91cikKLSAgICAgICAgc2VsZi5idWlsdGluVGhlbWUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpblRoZW1lKQotICAgICAgICBzZWxmLmN1c3RvbVRoZW1lLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2N1c3RvbVRoZW1lKQotICAgICAgICBzZWxmLnRoZW1lSXNCdWlsdGluLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3RoZW1lSXNCdWlsdGluKQotICAgICAgICBzZWxmLmhpZ2hsaWdodFRhcmdldC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9oaWdobGlnaHRUYXJnZXQpCi0gICAgICAgIHNlbGYua2V5QmluZGluZy50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9rZXlCaW5kaW5nKQotICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2J1aWx0aW5LZXlzKQotICAgICAgICBzZWxmLmN1c3RvbUtleXMudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tS2V5cykKLSAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9rZXlzQXJlQnVpbHRpbikKLSAgICAgICAgc2VsZi53aW5XaWR0aC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF93aW5XaWR0aCkKLSAgICAgICAgc2VsZi53aW5IZWlnaHQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfd2luSGVpZ2h0KQotICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3N0YXJ0dXBFZGl0KQotICAgICAgICBzZWxmLmF1dG9TYXZlLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2F1dG9TYXZlKQotICAgICAgICBzZWxmLmVuY29kaW5nLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2VuY29kaW5nKQorICAgICAgICBzZWxmLmZvbnRTaXplLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKKyAgICAgICAgc2VsZi5mb250TmFtZS50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCisgICAgICAgIHNlbGYuZm9udEJvbGQudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQorICAgICAgICBzZWxmLnNwYWNlTnVtLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfc3BhY2VOdW0pCisgICAgICAgIHNlbGYuY29sb3VyLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY29sb3VyKQorICAgICAgICBzZWxmLmJ1aWx0aW5UaGVtZS50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2J1aWx0aW5UaGVtZSkKKyAgICAgICAgc2VsZi5jdXN0b21UaGVtZS50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2N1c3RvbVRoZW1lKQorICAgICAgICBzZWxmLnRoZW1lSXNCdWlsdGluLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfdGhlbWVJc0J1aWx0aW4pCisgICAgICAgIHNlbGYuaGlnaGxpZ2h0VGFyZ2V0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfaGlnaGxpZ2h0VGFyZ2V0KQorICAgICAgICBzZWxmLmtleUJpbmRpbmcudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9rZXlCaW5kaW5nKQorICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpbktleXMpCisgICAgICAgIHNlbGYuY3VzdG9tS2V5cy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2N1c3RvbUtleXMpCisgICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9rZXlzQXJlQnVpbHRpbikKKyAgICAgICAgc2VsZi53aW5XaWR0aC50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX3dpbldpZHRoKQorICAgICAgICBzZWxmLndpbkhlaWdodC50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX3dpbkhlaWdodCkKKyAgICAgICAgc2VsZi5zdGFydHVwRWRpdC50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX3N0YXJ0dXBFZGl0KQorICAgICAgICBzZWxmLmF1dG9TYXZlLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfYXV0b1NhdmUpCisgICAgICAgIHNlbGYuZW5jb2RpbmcudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9lbmNvZGluZykKIAogICAgIGRlZiByZW1vdmVfdmFyX2NhbGxiYWNrcyhzZWxmKToKICAgICAgICAgIlJlbW92ZSBjYWxsYmFja3MgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuIgpAQCAtNDkyLDcgKzQ5NCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5rZXlCaW5kaW5nLCBzZWxmLmJ1aWx0aW5LZXlzLCBzZWxmLmN1c3RvbUtleXMsCiAgICAgICAgICAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbiwgc2VsZi53aW5XaWR0aCwgc2VsZi53aW5IZWlnaHQsCiAgICAgICAgICAgICAgICAgc2VsZi5zdGFydHVwRWRpdCwgc2VsZi5hdXRvU2F2ZSwgc2VsZi5lbmNvZGluZywpOgotICAgICAgICAgICAgdmFyLnRyYWNlX3ZkZWxldGUoJ3cnLCB2YXIudHJhY2VfdmluZm8oKVswXVsxXSkKKyAgICAgICAgICAgIHZhci50cmFjZV9yZW1vdmUoJ3dyaXRlJywgdmFyLnRyYWNlX2luZm8oKVswXVsxXSkKIAogICAgIGRlZiBWYXJDaGFuZ2VkX2ZvbnQoc2VsZiwgKnBhcmFtcyk6CiAgICAgICAgICcnJ1doZW4gb25lIGZvbnQgYXR0cmlidXRlIGNoYW5nZXMsIHNhdmUgdGhlbSBhbGwsIGFzIHRoZXkgYXJlCkBAIC01MTQsMTAgKzUxNiwxMSBAQAogICAgICAgICBzZWxmLk9uTmV3Q29sb3VyU2V0KCkKIAogICAgIGRlZiBWYXJDaGFuZ2VkX2J1aWx0aW5UaGVtZShzZWxmLCAqcGFyYW1zKToKKyAgICAgICAgb2xkdGhlbWVzID0gKCdJRExFIENsYXNzaWMnLCAnSURMRSBOZXcnKQogICAgICAgICB2YWx1ZSA9IHNlbGYuYnVpbHRpblRoZW1lLmdldCgpCi0gICAgICAgIGlmIHZhbHVlID09ICdJRExFIERhcmsnOgotICAgICAgICAgICAgaWYgaWRsZUNvbmYuR2V0T3B0aW9uKCdtYWluJywgJ1RoZW1lJywgJ25hbWUnKSAhPSAnSURMRSBOZXcnOgotICAgICAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScsICdJRExFIENsYXNzaWMnKQorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xkdGhlbWVzOgorICAgICAgICAgICAgaWYgaWRsZUNvbmYuR2V0T3B0aW9uKCdtYWluJywgJ1RoZW1lJywgJ25hbWUnKSBub3QgaW4gb2xkdGhlbWVzOgorICAgICAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScsIG9sZHRoZW1lc1swXSkKICAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnVGhlbWUnLCAnbmFtZTInLCB2YWx1ZSkKICAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV90aGVtZS5jb25maWcodGV4dD0nTmV3IHRoZW1lLCBzZWUgSGVscCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZnPScjNTAwMDAwJykKQEAgLTU1Nyw4ICs1NjAsMjMgQEAKICAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ2V4dGVuc2lvbnMnLCBleHRLZXliaW5kU2VjdGlvbiwgZXZlbnQsIHZhbHVlKQogCiAgICAgZGVmIFZhckNoYW5nZWRfYnVpbHRpbktleXMoc2VsZiwgKnBhcmFtcyk6CisgICAgICAgIG9sZGtleXMgPSAoCisgICAgICAgICAgICAnSURMRSBDbGFzc2ljIFdpbmRvd3MnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBVbml4JywKKyAgICAgICAgICAgICdJRExFIENsYXNzaWMgTWFjJywKKyAgICAgICAgICAgICdJRExFIENsYXNzaWMgT1NYJywKKyAgICAgICAgKQogICAgICAgICB2YWx1ZSA9IHNlbGYuYnVpbHRpbktleXMuZ2V0KCkKLSAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdLZXlzJywgJ25hbWUnLCB2YWx1ZSkKKyAgICAgICAgaWYgdmFsdWUgbm90IGluIG9sZGtleXM6CisgICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnS2V5cycsICduYW1lJykgbm90IGluIG9sZGtleXM6CisgICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdLZXlzJywgJ25hbWUnLCBvbGRrZXlzWzBdKQorICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdLZXlzJywgJ25hbWUyJywgdmFsdWUpCisgICAgICAgICAgICBzZWxmLm5ld19jdXN0b21fa2V5cy5jb25maWcodGV4dD0nTmV3IGtleSBzZXQsIHNlZSBIZWxwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz0nIzUwMDAwMCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdLZXlzJywgJ25hbWUyJywgJycpCisgICAgICAgICAgICBzZWxmLm5ld19jdXN0b21fa2V5cy5jb25maWcodGV4dD0nJywgZmc9J2JsYWNrJykKICAgICAgICAgc2VsZi5Mb2FkS2V5c0xpc3QodmFsdWUpCiAKICAgICBkZWYgVmFyQ2hhbmdlZF9jdXN0b21LZXlzKHNlbGYsICpwYXJhbXMpOgpAQCAtNjgzLDcgKzcwMSw3IEBACiAgICAgZGVmIEdldE5ld0tleXNOYW1lKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICB1c2VkTmFtZXMgPSAoaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ3VzZXInLCAna2V5cycpICsKICAgICAgICAgICAgICAgICBpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgnZGVmYXVsdCcsICdrZXlzJykpCi0gICAgICAgIG5ld0tleVNldCA9IEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nKAorICAgICAgICBuZXdLZXlTZXQgPSBTZWN0aW9uTmFtZSgKICAgICAgICAgICAgICAgICBzZWxmLCAnTmV3IEN1c3RvbSBLZXkgU2V0JywgbWVzc2FnZSwgdXNlZE5hbWVzKS5yZXN1bHQKICAgICAgICAgcmV0dXJuIG5ld0tleVNldAogCkBAIC03NjcsOCArNzg1LDEwIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLm9wdE1lbnVLZXlzQ3VzdG9tLlNldE1lbnUoaXRlbUxpc3QsIGl0ZW1MaXN0WzBdKQogICAgICAgICAjcmV2ZXJ0IHRvIGRlZmF1bHQga2V5IHNldAotICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ2RlZmF1bHQnKSkKLSAgICAgICAgc2VsZi5idWlsdGluS2V5cy5zZXQoaWRsZUNvbmYuZGVmYXVsdENmZ1snbWFpbiddLkdldCgnS2V5cycsICduYW1lJykpCisgICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4uc2V0KGlkbGVDb25mLmRlZmF1bHRDZmdbJ21haW4nXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuR2V0KCdLZXlzJywgJ2RlZmF1bHQnKSkKKyAgICAgICAgc2VsZi5idWlsdGluS2V5cy5zZXQoaWRsZUNvbmYuZGVmYXVsdENmZ1snbWFpbiddLkdldCgnS2V5cycsICduYW1lJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgaWRsZUNvbmYuZGVmYXVsdF9rZXlzKCkpCiAgICAgICAgICN1c2VyIGNhbid0IGJhY2sgb3V0IG9mIHRoZXNlIGNoYW5nZXMsIHRoZXkgbXVzdCBiZSBhcHBsaWVkIG5vdwogICAgICAgICBzZWxmLlNhdmVBbGxDaGFuZ2VkQ29uZmlncygpCiAgICAgICAgIHNlbGYuQWN0aXZhdGVDb25maWdDaGFuZ2VzKCkKQEAgLTgzNiw3ICs4NTYsNyBAQAogICAgIGRlZiBHZXROZXdUaGVtZU5hbWUoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHVzZWROYW1lcyA9IChpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgndXNlcicsICdoaWdobGlnaHQnKSArCiAgICAgICAgICAgICAgICAgaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ2RlZmF1bHQnLCAnaGlnaGxpZ2h0JykpCi0gICAgICAgIG5ld1RoZW1lID0gR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2coCisgICAgICAgIG5ld1RoZW1lID0gU2VjdGlvbk5hbWUoCiAgICAgICAgICAgICAgICAgc2VsZiwgJ05ldyBDdXN0b20gVGhlbWUnLCBtZXNzYWdlLCB1c2VkTmFtZXMpLnJlc3VsdAogICAgICAgICByZXR1cm4gbmV3VGhlbWUKIApAQCAtOTM5LDcgKzk1OSw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5idXR0b25IZWxwTGlzdFJlbW92ZS5jb25maWcoc3RhdGU9RElTQUJMRUQpCiAKICAgICBkZWYgSGVscExpc3RJdGVtQWRkKHNlbGYpOgotICAgICAgICBoZWxwU291cmNlID0gR2V0SGVscFNvdXJjZURpYWxvZyhzZWxmLCAnTmV3IEhlbHAgU291cmNlJykucmVzdWx0CisgICAgICAgIGhlbHBTb3VyY2UgPSBIZWxwU291cmNlKHNlbGYsICdOZXcgSGVscCBTb3VyY2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnJlc3VsdAogICAgICAgICBpZiBoZWxwU291cmNlOgogICAgICAgICAgICAgc2VsZi51c2VySGVscExpc3QuYXBwZW5kKChoZWxwU291cmNlWzBdLCBoZWxwU291cmNlWzFdKSkKICAgICAgICAgICAgIHNlbGYubGlzdEhlbHAuaW5zZXJ0KEVORCwgaGVscFNvdXJjZVswXSkKQEAgLTk0OSwxNiArOTcwLDE3IEBACiAgICAgZGVmIEhlbHBMaXN0SXRlbUVkaXQoc2VsZik6CiAgICAgICAgIGl0ZW1JbmRleCA9IHNlbGYubGlzdEhlbHAuaW5kZXgoQU5DSE9SKQogICAgICAgICBoZWxwU291cmNlID0gc2VsZi51c2VySGVscExpc3RbaXRlbUluZGV4XQotICAgICAgICBuZXdIZWxwU291cmNlID0gR2V0SGVscFNvdXJjZURpYWxvZygKLSAgICAgICAgICAgICAgICBzZWxmLCAnRWRpdCBIZWxwIFNvdXJjZScsIG1lbnVJdGVtPWhlbHBTb3VyY2VbMF0sCi0gICAgICAgICAgICAgICAgZmlsZVBhdGg9aGVscFNvdXJjZVsxXSkucmVzdWx0Ci0gICAgICAgIGlmIChub3QgbmV3SGVscFNvdXJjZSkgb3IgKG5ld0hlbHBTb3VyY2UgPT0gaGVscFNvdXJjZSk6Ci0gICAgICAgICAgICByZXR1cm4gI25vIGNoYW5nZXMKLSAgICAgICAgc2VsZi51c2VySGVscExpc3RbaXRlbUluZGV4XSA9IG5ld0hlbHBTb3VyY2UKLSAgICAgICAgc2VsZi5saXN0SGVscC5kZWxldGUoaXRlbUluZGV4KQotICAgICAgICBzZWxmLmxpc3RIZWxwLmluc2VydChpdGVtSW5kZXgsIG5ld0hlbHBTb3VyY2VbMF0pCi0gICAgICAgIHNlbGYuVXBkYXRlVXNlckhlbHBDaGFuZ2VkSXRlbXMoKQotICAgICAgICBzZWxmLlNldEhlbHBMaXN0QnV0dG9uU3RhdGVzKCkKKyAgICAgICAgbmV3SGVscFNvdXJjZSA9IEhlbHBTb3VyY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgJ0VkaXQgSGVscCBTb3VyY2UnLAorICAgICAgICAgICAgICAgIG1lbnVpdGVtPWhlbHBTb3VyY2VbMF0sCisgICAgICAgICAgICAgICAgZmlsZXBhdGg9aGVscFNvdXJjZVsxXSwKKyAgICAgICAgICAgICAgICApLnJlc3VsdAorICAgICAgICBpZiBuZXdIZWxwU291cmNlIGFuZCBuZXdIZWxwU291cmNlICE9IGhlbHBTb3VyY2U6CisgICAgICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdID0gbmV3SGVscFNvdXJjZQorICAgICAgICAgICAgc2VsZi5saXN0SGVscC5kZWxldGUoaXRlbUluZGV4KQorICAgICAgICAgICAgc2VsZi5saXN0SGVscC5pbnNlcnQoaXRlbUluZGV4LCBuZXdIZWxwU291cmNlWzBdKQorICAgICAgICAgICAgc2VsZi5VcGRhdGVVc2VySGVscENoYW5nZWRJdGVtcygpCisgICAgICAgICAgICBzZWxmLlNldEhlbHBMaXN0QnV0dG9uU3RhdGVzKCkKIAogICAgIGRlZiBIZWxwTGlzdEl0ZW1SZW1vdmUoc2VsZik6CiAgICAgICAgIGl0ZW1JbmRleCA9IHNlbGYubGlzdEhlbHAuaW5kZXgoQU5DSE9SKQpAQCAtOTk2LDcgKzEwMTgsOCBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICAjI2ZvbnQgc2l6ZSBkcm9wZG93bgogICAgICAgICBzZWxmLm9wdE1lbnVGb250U2l6ZS5TZXRNZW51KCgnNycsICc4JywgJzknLCAnMTAnLCAnMTEnLCAnMTInLCAnMTMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTQnLCAnMTYnLCAnMTgnLCAnMjAnLCAnMjInKSwgZm9udFNpemUgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTQnLCAnMTYnLCAnMTgnLCAnMjAnLCAnMjInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjUnLCAnMjknLCAnMzQnLCAnNDAnKSwgZm9udFNpemUgKQogICAgICAgICAjI2ZvbnRXZWlnaHQKICAgICAgICAgc2VsZi5mb250Qm9sZC5zZXQoZm9udEJvbGQpCiAgICAgICAgICMjZm9udCBzYW1wbGUKQEAgLTEwNjUsNyArMTA4OCw3IEBACiAgICAgICAgICAgICBzZWxmLm9wdE1lbnVLZXlzQ3VzdG9tLlNldE1lbnUoaXRlbUxpc3QsIGN1cnJlbnRPcHRpb24pCiAgICAgICAgICAgICBpdGVtTGlzdCA9IGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCdkZWZhdWx0JywgJ2tleXMnKQogICAgICAgICAgICAgaXRlbUxpc3Quc29ydCgpCi0gICAgICAgICAgICBzZWxmLm9wdE1lbnVLZXlzQnVpbHRpbi5TZXRNZW51KGl0ZW1MaXN0LCBpdGVtTGlzdFswXSkKKyAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNCdWlsdGluLlNldE1lbnUoaXRlbUxpc3QsIGlkbGVDb25mLmRlZmF1bHRfa2V5cygpKQogICAgICAgICBzZWxmLlNldEtleXNUeXBlKCkKICAgICAgICAgIyNsb2FkIGtleXNldCBlbGVtZW50IGxpc3QKICAgICAgICAga2V5U2V0TmFtZSA9IGlkbGVDb25mLkN1cnJlbnRLZXlzKCkKQEAgLTEzNjcsMTIgKzEzOTAsMTggQEAKIFtDYW5jZWxdIG9ubHkgY2FuY2VscyBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3Qgc2F2ZS4KICcnJwogaGVscF9wYWdlcyA9IHsKLSAgICAnSGlnaGxpZ2h0aW5nJzonJycKKyAgICAnSGlnaGxpZ2h0aW5nJzogJycnCiBIaWdobGlnaHRpbmc6CiBUaGUgSURMRSBEYXJrIGNvbG9yIHRoZW1lIGlzIG5ldyBpbiBPY3RvYmVyIDIwMTUuICBJdCBjYW4gb25seQogYmUgdXNlZCB3aXRoIG9sZGVyIElETEUgcmVsZWFzZXMgaWYgaXQgaXMgc2F2ZWQgYXMgYSBjdXN0b20KIHRoZW1lLCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCi0nJycKKycnJywKKyAgICAnS2V5cyc6ICcnJworS2V5czoKK1RoZSBJRExFIE1vZGVybiBVbml4IGtleSBzZXQgaXMgbmV3IGluIEp1bmUgMjAxNi4gIEl0IGNhbiBvbmx5CitiZSB1c2VkIHdpdGggb2xkZXIgSURMRSByZWxlYXNlcyBpZiBpdCBpcyBzYXZlZCBhcyBhIGN1c3RvbQora2V5IHNldCwgd2l0aCBhIGRpZmZlcmVudCBuYW1lLgorJycnLAogfQogCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0RlYnVnZ2VyLnB5IGIvTGliL2lkbGVsaWIvZGVidWdnZXIucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvRGVidWdnZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlYnVnZ2VyLnB5CmluZGV4IGQ1ZTIxN2QuLjExNGQwZDEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0RlYnVnZ2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2RlYnVnZ2VyLnB5CkBAIC0xLDkgKzEsMTIgQEAKLWltcG9ydCBvcwogaW1wb3J0IGJkYgoraW1wb3J0IG9zCisKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliLldpbmRvd0xpc3QgaW1wb3J0IExpc3RlZFRvcGxldmVsCi1mcm9tIGlkbGVsaWIuU2Nyb2xsZWRMaXN0IGltcG9ydCBTY3JvbGxlZExpc3QKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCisKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIuc2Nyb2xsZWRsaXN0IGltcG9ydCBTY3JvbGxlZExpc3QKK2Zyb20gaWRsZWxpYi53aW5kb3dzIGltcG9ydCBMaXN0ZWRUb3BsZXZlbAogCiAKIGNsYXNzIElkYihiZGIuQmRiKToKQEAgLTM0LDggKzM3LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcHJldl9mcmFtZSA9IGZyYW1lLmZfYmFjawotICAgICAgICAgICAgaWYgcHJldl9mcmFtZS5mX2NvZGUuY29fZmlsZW5hbWUuY291bnQoJ0RlYnVnZ2VyLnB5Jyk6Ci0gICAgICAgICAgICAgICAgIyAodGhhdCB0ZXN0IHdpbGwgY2F0Y2ggYm90aCBEZWJ1Z2dlci5weSBhbmQgUmVtb3RlRGVidWdnZXIucHkpCisgICAgICAgICAgICBwcmV2X25hbWUgPSBwcmV2X2ZyYW1lLmZfY29kZS5jb19maWxlbmFtZQorICAgICAgICAgICAgaWYgJ2lkbGVsaWInIGluIHByZXZfbmFtZSBhbmQgJ2RlYnVnZ2VyJyBpbiBwcmV2X25hbWU6CisgICAgICAgICAgICAgICAgIyBjYXRjaCBib3RoIGlkbGVsaWIvZGVidWdnZXIucHkgYW5kIGlkbGVsaWIvZGVidWdnZXJfci5weQorICAgICAgICAgICAgICAgICMgb24gYm90aCBwb3NpeCBhbmQgd2luZG93cwogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5fcnBjX2NvZGUocHJldl9mcmFtZSkKIApAQCAtMzcwLDcgKzM3NSw3IEBACiBjbGFzcyBTdGFja1ZpZXdlcihTY3JvbGxlZExpc3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3RlciwgZmxpc3QsIGd1aSk6Ci0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICAgICAjIEF0IGxlYXN0IG9uIHdpdGggdGhlIHN0b2NrIEFxdWFUayB2ZXJzaW9uIG9uIE9TWCAxMC40IHlvdSdsbAogICAgICAgICAgICAgIyBnZXQgYSBzaGFraW5nIEdVSSB0aGF0IGV2ZW50dWFsbHkga2lsbHMgSURMRSBpZiB0aGUgd2lkdGgKICAgICAgICAgICAgICMgYXJndW1lbnQgaXMgc3BlY2lmaWVkLgpAQCAtNTAyLDcgKzUwNyw3IEBACiAgICAgICAgICAgICAjCiAgICAgICAgICAgICAjIFRoZXJlIGlzIGFsc28gYW4gb2JzY3VyZSBidWcgaW4gc29ydGVkKGRpY3QpIHdoZXJlIHRoZQogICAgICAgICAgICAgIyBpbnRlcnByZXRlciBnZXRzIGludG8gYSBsb29wIHJlcXVlc3Rpbmcgbm9uLWV4aXN0aW5nIGRpY3RbMF0sCi0gICAgICAgICAgICAjIGRpY3RbMV0sIGRpY3RbMl0sIGV0YyBmcm9tIHRoZSBSZW1vdGVEZWJ1Z2dlci5EaWN0UHJveHkuCisgICAgICAgICAgICAjIGRpY3RbMV0sIGRpY3RbMl0sIGV0YyBmcm9tIHRoZSBkZWJ1Z2dlcl9yLkRpY3RQcm94eS4KICAgICAgICAgICAgICMjIwogICAgICAgICAgICAga2V5c19saXN0ID0gZGljdC5rZXlzKCkKICAgICAgICAgICAgIG5hbWVzID0gc29ydGVkKGtleXNfbGlzdCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5IGIvTGliL2lkbGVsaWIvZGVidWdnZXJfci5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9SZW1vdGVEZWJ1Z2dlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVidWdnZXJfci5weQppbmRleCBiZTIyNjJmLi5iYzk3MTI3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9SZW1vdGVEZWJ1Z2dlci5weQorKysgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CkBAIC0yMSw3ICsyMSw3IEBACiAiIiIKIAogaW1wb3J0IHR5cGVzCi1mcm9tIGlkbGVsaWIgaW1wb3J0IERlYnVnZ2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyCiAKIGRlYnVnZ2luZyA9IDAKIApAQCAtMTg3LDcgKzE4Nyw3IEBACiAKICAgICAiIiIKICAgICBndWlfcHJveHkgPSBHVUlQcm94eShycGNoYW5kbGVyLCBndWlfYWRhcF9vaWQpCi0gICAgaWRiID0gRGVidWdnZXIuSWRiKGd1aV9wcm94eSkKKyAgICBpZGIgPSBkZWJ1Z2dlci5JZGIoZ3VpX3Byb3h5KQogICAgIGlkYl9hZGFwID0gSWRiQWRhcHRlcihpZGIpCiAgICAgcnBjaGFuZGxlci5yZWdpc3RlcihpZGJfYWRhcF9vaWQsIGlkYl9hZGFwKQogICAgIHJldHVybiBpZGJfYWRhcF9vaWQKQEAgLTM2Miw3ICszNjIsNyBAQAogICAgIGlkYl9hZGFwX29pZCA9IHJwY2NsdC5yZW1vdGVjYWxsKCJleGVjIiwgInN0YXJ0X3RoZV9kZWJ1Z2dlciIsXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3VpX2FkYXBfb2lkLCksIHt9KQogICAgIGlkYl9wcm94eSA9IElkYlByb3h5KHJwY2NsdCwgcHlzaGVsbCwgaWRiX2FkYXBfb2lkKQotICAgIGd1aSA9IERlYnVnZ2VyLkRlYnVnZ2VyKHB5c2hlbGwsIGlkYl9wcm94eSkKKyAgICBndWkgPSBkZWJ1Z2dlci5EZWJ1Z2dlcihweXNoZWxsLCBpZGJfcHJveHkpCiAgICAgZ3VpX2FkYXAgPSBHVUlBZGFwdGVyKHJwY2NsdCwgZ3VpKQogICAgIHJwY2NsdC5yZWdpc3RlcihndWlfYWRhcF9vaWQsIGd1aV9hZGFwKQogICAgIHJldHVybiBndWkKQEAgLTM3Myw3ICszNzMsNyBAQAogICAgIFJlcXVlc3QgdGhhdCB0aGUgUlBDU2VydmVyIHNodXQgZG93biB0aGUgc3VicHJvY2VzcyBkZWJ1Z2dlciBhbmQgbGluay4KICAgICBVbnJlZ2lzdGVyIHRoZSBHVUlBZGFwdGVyLCB3aGljaCB3aWxsIGNhdXNlIGEgR0Mgb24gdGhlIElkbGUgcHJvY2VzcwogICAgIGRlYnVnZ2VyIGFuZCBSUEMgbGluayBvYmplY3RzLiAgKFRoZSBzZWNvbmQgcmVmZXJlbmNlIHRvIHRoZSBkZWJ1Z2dlciBHVUkKLSAgICBpcyBkZWxldGVkIGluIFB5U2hlbGwuY2xvc2VfcmVtb3RlX2RlYnVnZ2VyKCkuKQorICAgIGlzIGRlbGV0ZWQgaW4gcHlzaGVsbC5jbG9zZV9yZW1vdGVfZGVidWdnZXIoKS4pCiAKICAgICAiIiIKICAgICBjbG9zZV9zdWJwcm9jZXNzX2RlYnVnZ2VyKHJwY2NsdCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z29iai5weQpzaW1pbGFyaXR5IGluZGV4IDg4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9PYmplY3RCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z29iai5weQppbmRleCA3YjU3YWE0Li5iNzBiMTNjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9PYmplY3RCcm93c2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2RlYnVnb2JqLnB5CkBAIC04LDEzICs4LDEwIEBACiAKICMgWFhYIFRPIERPOgogIyAtIGZvciBjbGFzc2VzL21vZHVsZXMsIGFkZCAib3BlbiBzb3VyY2UiIHRvIG9iamVjdCBicm93c2VyCi0KLWltcG9ydCByZQotCi1mcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgVHJlZUl0ZW0sIFRyZWVOb2RlLCBTY3JvbGxlZENhbnZhcwotCiBmcm9tIHJlcHJsaWIgaW1wb3J0IFJlcHIKIAorZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFRyZWVJdGVtLCBUcmVlTm9kZSwgU2Nyb2xsZWRDYW52YXMKKwogbXlyZXByID0gUmVwcigpCiBteXJlcHIubWF4c3RyaW5nID0gMTAwCiBteXJlcHIubWF4b3RoZXIgPSAxMDAKQEAgLTEyMiwyMSArMTE5LDIwIEBACiAgICAgcmV0dXJuIGMobGFiZWx0ZXh0LCBvYmplY3QsIHNldGZ1bmN0aW9uKQogCiAKLWRlZiBfb2JqZWN0X2Jyb3dzZXIocGFyZW50KToKK2RlZiBfb2JqZWN0X2Jyb3dzZXIocGFyZW50KTogICMgaHRlc3QgIwogICAgIGltcG9ydCBzeXMKLSAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRrCi0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IE9iamVjdEJyb3dzZXIiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICByb290LmNvbmZpZ3VyZShiZD0wLCBiZz0ieWVsbG93IikKLSAgICByb290LmZvY3VzX3NldCgpCi0gICAgc2MgPSBTY3JvbGxlZENhbnZhcyhyb290LCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbAorICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgZGVidWcgb2JqZWN0IGJyb3dzZXIiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCArIDEwMCwgeSArIDE3NSkpCisgICAgdG9wLmNvbmZpZ3VyZShiZD0wLCBiZz0ieWVsbG93IikKKyAgICB0b3AuZm9jdXNfc2V0KCkKKyAgICBzYyA9IFNjcm9sbGVkQ2FudmFzKHRvcCwgYmc9IndoaXRlIiwgaGlnaGxpZ2h0dGhpY2tuZXNzPTAsIHRha2Vmb2N1cz0xKQogICAgIHNjLmZyYW1lLnBhY2soZXhwYW5kPTEsIGZpbGw9ImJvdGgiKQogICAgIGl0ZW0gPSBtYWtlX29iamVjdHRyZWVpdGVtKCJzeXMiLCBzeXMpCiAgICAgbm9kZSA9IFRyZWVOb2RlKHNjLmNhbnZhcywgTm9uZSwgaXRlbSkKICAgICBub2RlLnVwZGF0ZSgpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SZW1vdGVPYmplY3RCcm93c2VyLnB5IGIvTGliL2lkbGVsaWIvZGVidWdvYmpfci5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUmVtb3RlT2JqZWN0QnJvd3Nlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVidWdvYmpfci5weQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvZGVsZWdhdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9EZWxlZ2F0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlbGVnYXRvci5weQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvZHluT3B0aW9uTWVudVdpZGdldC5weSBiL0xpYi9pZGxlbGliL2R5bm9wdGlvbi5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9keW5vcHRpb24ucHkKaW5kZXggNTE1YjRiYS4uOWM2ZmZhNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvZHluT3B0aW9uTWVudVdpZGdldC5weQorKysgYi9MaWIvaWRsZWxpYi9keW5vcHRpb24ucHkKQEAgLTMsNiArMyw3IEBACiBhbmQgc2V0dGluZyBvZiBoaWdobGlnaHR0aGlja25lc3MKICIiIgogaW1wb3J0IGNvcHkKKwogZnJvbSB0a2ludGVyIGltcG9ydCBPcHRpb25NZW51LCBfc2V0aXQsIFN0cmluZ1ZhciwgQnV0dG9uCiAKIGNsYXNzIER5bk9wdGlvbk1lbnUoT3B0aW9uTWVudSk6CkBAIC0zNCwxMiArMzUsMTIgQEAKICAgICAgICAgICAgIHNlbGYudmFyaWFibGUuc2V0KHZhbHVlKQogCiBkZWYgX2R5bl9vcHRpb25fbWVudShwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbAorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwgIyArIFN0cmluZ1ZhciwgQnV0dG9uCiAKLSAgICB0b3AgPSBUb3BsZXZlbCgpCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQogICAgIHRvcC50aXRsZSgiVGV0cyBkeW5hbWljIG9wdGlvbiBtZW51IikKLSAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHBhcmVudC53aW5mb19yb290eCgpICsgMjAwLAotICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHggKyAyNTAsIHkgKyAxNzUpKQogICAgIHRvcC5mb2N1c19zZXQoKQogCiAgICAgdmFyID0gU3RyaW5nVmFyKHRvcCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weSBiL0xpYi9pZGxlbGliL2VkaXRvci5weQpzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2VkaXRvci5weQppbmRleCA5OTQ0ZGEzLi5hZTQ3NWNiIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkKKysrIGIvTGliL2lkbGVsaWIvZWRpdG9yLnB5CkBAIC02LDI4ICs2LDM0IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKLWZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIuc2ltcGxlZGlhbG9nIGFzIHRrU2ltcGxlRGlhbG9nCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAoraW1wb3J0IHRva2VuaXplCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgd2ViYnJvd3NlcgogCi1mcm9tIGlkbGVsaWIuTXVsdGlDYWxsIGltcG9ydCBNdWx0aUNhbGxDcmVhdG9yCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFdpbmRvd0xpc3QKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRGlhbG9nCi1mcm9tIGlkbGVsaWIgaW1wb3J0IEdyZXBEaWFsb2cKLWZyb20gaWRsZWxpYiBpbXBvcnQgUmVwbGFjZURpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBQeVBhcnNlCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKLWZyb20gaWRsZWxpYiBpbXBvcnQgYWJvdXREaWFsb2csIHRleHRWaWV3LCBjb25maWdEaWFsb2cKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSB0a2ludGVyIGltcG9ydCAqCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKK2ltcG9ydCB0a2ludGVyLnNpbXBsZWRpYWxvZyBhcyB0a1NpbXBsZURpYWxvZworaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnZGlhbG9nCitmcm9tIGlkbGVsaWIgaW1wb3J0IGdyZXAKIGZyb20gaWRsZWxpYiBpbXBvcnQgaGVscAorZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwX2Fib3V0Citmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliLm11bHRpY2FsbCBpbXBvcnQgTXVsdGlDYWxsQ3JlYXRvcgorZnJvbSBpZGxlbGliIGltcG9ydCBweXBhcnNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHF1ZXJ5Citmcm9tIGlkbGVsaWIgaW1wb3J0IHJlcGxhY2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRleHR2aWV3Citmcm9tIGlkbGVsaWIgaW1wb3J0IHdpbmRvd3MKIAogIyBUaGUgZGVmYXVsdCB0YWIgc2V0dGluZyBmb3IgYSBUZXh0IHdpZGdldCwgaW4gYXZlcmFnZS13aWR0aCBjaGFyYWN0ZXJzLgogVEtfVEFCV0lEVEhfREVGQVVMVCA9IDgKLQogX3B5X3ZlcnNpb24gPSAnICglcyknICUgcGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKQogCisKIGRlZiBfc3BoaW54X3ZlcnNpb24oKToKICAgICAiRm9ybWF0IHN5cy52ZXJzaW9uX2luZm8gdG8gcHJvZHVjZSB0aGUgU3BoaW54IHZlcnNpb24gc3RyaW5nIHVzZWQgdG8gaW5zdGFsbCB0aGUgY2htIGRvY3MiCiAgICAgbWFqb3IsIG1pbm9yLCBtaWNybywgbGV2ZWwsIHNlcmlhbCA9IHN5cy52ZXJzaW9uX2luZm8KQEAgLTQwLDYzICs0NiwxNiBAQAogICAgIHJldHVybiByZWxlYXNlCiAKIAotY2xhc3MgSGVscERpYWxvZyhvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnBhcmVudCA9IE5vbmUgICAgICAjIHBhcmVudCBvZiBoZWxwIHdpbmRvdwotICAgICAgICBzZWxmLmRsZyA9IE5vbmUgICAgICAgICAjIHRoZSBoZWxwIHdpbmRvdyBpdGVzZWxmCi0KLSAgICBkZWYgZGlzcGxheShzZWxmLCBwYXJlbnQsIG5lYXI9Tm9uZSk6Ci0gICAgICAgICIiIiBEaXNwbGF5IHRoZSBoZWxwIGRpYWxvZy4KLQotICAgICAgICAgICAgcGFyZW50IC0gcGFyZW50IHdpZGdldCBmb3IgdGhlIGhlbHAgd2luZG93Ci0KLSAgICAgICAgICAgIG5lYXIgLSBhIFRvcGxldmVsIHdpZGdldCAoZS5nLiBFZGl0b3JXaW5kb3cgb3IgUHlTaGVsbCkKLSAgICAgICAgICAgICAgICAgICB0byB1c2UgYXMgYSByZWZlcmVuY2UgZm9yIHBsYWNpbmcgdGhlIGhlbHAgd2luZG93Ci0gICAgICAgICIiIgotICAgICAgICBpbXBvcnQgd2FybmluZ3MgYXMgdwotICAgICAgICB3Lndhcm4oIkVkaXRvcldpbmRvdy5IZWxwRGlhbG9nIGlzIG5vIGxvbmdlciB1c2VkIGJ5IElkbGUuXG4iCi0gICAgICAgICAgICAgICAiSXQgd2lsbCBiZSByZW1vdmVkIGluIDMuNiBvciBsYXRlci5cbiIKLSAgICAgICAgICAgICAgICJJdCBoYXMgYmVlbiByZXBsYWNlZCBieSBwcml2YXRlIGhlbHAuSGVscFdpbmRvd1xuIiwKLSAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICBpZiBzZWxmLmRsZyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5zaG93X2RpYWxvZyhwYXJlbnQpCi0gICAgICAgIGlmIG5lYXI6Ci0gICAgICAgICAgICBzZWxmLm5lYXJ3aW5kb3cobmVhcikKLQotICAgIGRlZiBzaG93X2RpYWxvZyhzZWxmLCBwYXJlbnQpOgotICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAotICAgICAgICBmbj1vcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCdoZWxwLnR4dCcpCi0gICAgICAgIHNlbGYuZGxnID0gZGxnID0gdGV4dFZpZXcudmlld19maWxlKHBhcmVudCwnSGVscCcsZm4sIG1vZGFsPUZhbHNlKQotICAgICAgICBkbGcuYmluZCgnPERlc3Ryb3k+Jywgc2VsZi5kZXN0cm95LCAnKycpCi0KLSAgICBkZWYgbmVhcndpbmRvdyhzZWxmLCBuZWFyKToKLSAgICAgICAgIyBQbGFjZSB0aGUgaGVscCBkaWFsb2cgbmVhciB0aGUgd2luZG93IHNwZWNpZmllZCBieSBwYXJlbnQuCi0gICAgICAgICMgTm90ZSAtIHRoaXMgbWF5IG5vdCByZXBvc2l0aW9uIHRoZSB3aW5kb3cgaW4gTWV0YWNpdHkKLSAgICAgICAgIyAgaWYgIi9hcHBzL21ldGFjaXR5L2dlbmVyYWwvZGlzYWJsZV93b3JrYXJvdW5kcyIgaXMgZW5hYmxlZAotICAgICAgICBkbGcgPSBzZWxmLmRsZwotICAgICAgICBnZW9tID0gKG5lYXIud2luZm9fcm9vdHgoKSArIDEwLCBuZWFyLndpbmZvX3Jvb3R5KCkgKyAxMCkKLSAgICAgICAgZGxnLndpdGhkcmF3KCkKLSAgICAgICAgZGxnLmdlb21ldHJ5KCI9KyVkKyVkIiAlIGdlb20pCi0gICAgICAgIGRsZy5kZWljb25pZnkoKQotICAgICAgICBkbGcubGlmdCgpCi0KLSAgICBkZWYgZGVzdHJveShzZWxmLCBldj1Ob25lKToKLSAgICAgICAgc2VsZi5kbGcgPSBOb25lCi0gICAgICAgIHNlbGYucGFyZW50ID0gTm9uZQotCi1oZWxwRGlhbG9nID0gSGVscERpYWxvZygpICAjIHNpbmdsZXRvbiBpbnN0YW5jZSwgbm8gbG9uZ2VyIHVzZWQKLQotCiBjbGFzcyBFZGl0b3JXaW5kb3cob2JqZWN0KToKLSAgICBmcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgotICAgIGZyb20gaWRsZWxpYi5Db2xvckRlbGVnYXRvciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IsIGNvbG9yX2NvbmZpZwotICAgIGZyb20gaWRsZWxpYi5VbmRvRGVsZWdhdG9yIGltcG9ydCBVbmRvRGVsZWdhdG9yCi0gICAgZnJvbSBpZGxlbGliLklPQmluZGluZyBpbXBvcnQgSU9CaW5kaW5nLCBmaWxlc3lzdGVtZW5jb2RpbmcsIGVuY29kaW5nCi0gICAgZnJvbSBpZGxlbGliIGltcG9ydCBCaW5kaW5ncworICAgIGZyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCisgICAgZnJvbSBpZGxlbGliLmNvbG9yaXplciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IsIGNvbG9yX2NvbmZpZworICAgIGZyb20gaWRsZWxpYi51bmRvIGltcG9ydCBVbmRvRGVsZWdhdG9yCisgICAgZnJvbSBpZGxlbGliLmlvbWVudSBpbXBvcnQgSU9CaW5kaW5nLCBlbmNvZGluZworICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgbWFpbm1lbnUKICAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCi0gICAgZnJvbSBpZGxlbGliLk11bHRpU3RhdHVzQmFyIGltcG9ydCBNdWx0aVN0YXR1c0JhcgorICAgIGZyb20gaWRsZWxpYi5zdGF0dXNiYXIgaW1wb3J0IE11bHRpU3RhdHVzQmFyCiAKKyAgICBmaWxlc3lzdGVtZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgICMgZm9yIGZpbGUgbmFtZXMKICAgICBoZWxwX3VybCA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCBmaWxlbmFtZT1Ob25lLCBrZXk9Tm9uZSwgcm9vdD1Ob25lKToKQEAgLTEzNiwxMSArOTUsMTEgQEAKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgc3lzLnBzMSA9ICc+Pj4gJwogICAgICAgICBzZWxmLm1lbnViYXIgPSBNZW51KHJvb3QpCi0gICAgICAgIHNlbGYudG9wID0gdG9wID0gV2luZG93TGlzdC5MaXN0ZWRUb3BsZXZlbChyb290LCBtZW51PXNlbGYubWVudWJhcikKKyAgICAgICAgc2VsZi50b3AgPSB0b3AgPSB3aW5kb3dzLkxpc3RlZFRvcGxldmVsKHJvb3QsIG1lbnU9c2VsZi5tZW51YmFyKQogICAgICAgICBpZiBmbGlzdDoKICAgICAgICAgICAgIHNlbGYudGtpbnRlcl92YXJzID0gZmxpc3QudmFycwogICAgICAgICAgICAgI3NlbGYudG9wLmluc3RhbmNlX2RpY3QgbWFrZXMgZmxpc3QuaW52ZXJzZWRpY3QgYXZhaWxhYmxlIHRvCi0gICAgICAgICAgICAjY29uZmlnRGlhbG9nLnB5IHNvIGl0IGNhbiBhY2Nlc3MgYWxsIEVkaXRvcldpbmRvdyBpbnN0YW5jZXMKKyAgICAgICAgICAgICNjb25maWdkaWFsb2cucHkgc28gaXQgY2FuIGFjY2VzcyBhbGwgRWRpdG9yV2luZG93IGluc3RhbmNlcwogICAgICAgICAgICAgc2VsZi50b3AuaW5zdGFuY2VfZGljdCA9IGZsaXN0LmludmVyc2VkaWN0CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnRraW50ZXJfdmFycyA9IHt9ICAjIGtleXM6IFRraW50ZXIgZXZlbnQgbmFtZXMKQEAgLTE1OCwxMyArMTE3LDEwIEBACiAgICAgICAgICAgICAgICAgJ3dyYXAnOiAnbm9uZScsCiAgICAgICAgICAgICAgICAgJ2hpZ2hsaWdodHRoaWNrbmVzcyc6IDAsCiAgICAgICAgICAgICAgICAgJ3dpZHRoJzogc2VsZi53aWR0aCwKLSAgICAgICAgICAgICAgICAnaGVpZ2h0JzogaWRsZUNvbmYuR2V0T3B0aW9uKCdtYWluJywgJ0VkaXRvcldpbmRvdycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JywgdHlwZT0naW50Jyl9Ci0gICAgICAgIGlmIFRrVmVyc2lvbiA+PSA4LjU6Ci0gICAgICAgICAgICAjIFN0YXJ0aW5nIHdpdGggdGsgOC41IHdlIGhhdmUgdG8gc2V0IHRoZSBuZXcgdGFic3R5bGUgb3B0aW9uCi0gICAgICAgICAgICAjIHRvICd3b3JkcHJvY2Vzc29yJyB0byBhY2hpZXZlIHRoZSBzYW1lIGRpc3BsYXkgb2YgdGFicyBhcyBpbgotICAgICAgICAgICAgIyBvbGRlciB0ayB2ZXJzaW9ucy4KLSAgICAgICAgICAgIHRleHRfb3B0aW9uc1sndGFic3R5bGUnXSA9ICd3b3JkcHJvY2Vzc29yJworICAgICAgICAgICAgICAgICd0YWJzdHlsZSc6ICd3b3JkcHJvY2Vzc29yJywgICMgbmV3IGluIDguNQorICAgICAgICAgICAgICAgICdoZWlnaHQnOiBpZGxlQ29uZi5HZXRPcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnaGVpZ2h0JywgdHlwZT0naW50JyksCisgICAgICAgICAgICAgICAgfQogICAgICAgICBzZWxmLnRleHQgPSB0ZXh0ID0gTXVsdGlDYWxsQ3JlYXRvcihUZXh0KSh0ZXh0X2ZyYW1lLCAqKnRleHRfb3B0aW9ucykKICAgICAgICAgc2VsZi50b3AuZm9jdXNlZF93aWRnZXQgPSBzZWxmLnRleHQKIApAQCAtMTczLDcgKzEyOSw3IEBACiAKICAgICAgICAgc2VsZi50b3AucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLmNsb3NlKQogICAgICAgICBzZWxmLnRvcC5iaW5kKCI8PGNsb3NlLXdpbmRvdz4+Iiwgc2VsZi5jbG9zZV9ldmVudCkKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgICAgICMgQ29tbWFuZC1XIG9uIGVkaXRvcndpbmRvd3MgZG9lc24ndCB3b3JrIHdpdGhvdXQgdGhpcy4KICAgICAgICAgICAgIHRleHQuYmluZCgnPDxjbG9zZS13aW5kb3c+PicsIHNlbGYuY2xvc2VfZXZlbnQpCiAgICAgICAgICAgICAjIFNvbWUgT1MgWCBzeXN0ZW1zIGhhdmUgb25seSBvbmUgbW91c2UgYnV0dG9uLCBzbyB1c2UKQEAgLTMwOSw3ICsyNjUsNyBAQAogICAgICAgICAgICAgICAgIG1lbnUuYWRkX3NlcGFyYXRvcigpCiAgICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQogICAgICAgICAgICAgc2VsZi53bWVudV9lbmQgPSBlbmQKLSAgICAgICAgICAgIFdpbmRvd0xpc3QucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCisgICAgICAgICAgICB3aW5kb3dzLnJlZ2lzdGVyX2NhbGxiYWNrKHNlbGYucG9zdHdpbmRvd3NtZW51KQogCiAgICAgICAgICMgU29tZSBhYnN0cmFjdGlvbnMgc28gSURMRSBleHRlbnNpb25zIGFyZSBjcm9zcy1JREUKICAgICAgICAgc2VsZi5hc2t5ZXNubyA9IHRrTWVzc2FnZUJveC5hc2t5ZXNubwpAQCAtNDE4LDcgKzM3NCw3IEBACiAgICAgICAgICAgICB1bmRlcmxpbmUsIGxhYmVsID0gcHJlcHN0cihsYWJlbCkKICAgICAgICAgICAgIG1lbnVkaWN0W25hbWVdID0gbWVudSA9IE1lbnUobWJhciwgbmFtZT1uYW1lLCB0ZWFyb2ZmPTApCiAgICAgICAgICAgICBtYmFyLmFkZF9jYXNjYWRlKGxhYmVsPWxhYmVsLCBtZW51PW1lbnUsIHVuZGVybGluZT11bmRlcmxpbmUpCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNDYXJib25UaygpOgorICAgICAgICBpZiBtYWNvc3guaXNDYXJib25UaygpOgogICAgICAgICAgICAgIyBJbnNlcnQgdGhlIGFwcGxpY2F0aW9uIG1lbnUKICAgICAgICAgICAgIG1lbnVkaWN0WydhcHBsaWNhdGlvbiddID0gbWVudSA9IE1lbnUobWJhciwgbmFtZT0nYXBwbGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFyb2ZmPTApCkBAIC00MzksNyArMzk1LDcgQEAKICAgICAgICAgICAgIGVuZCA9IC0xCiAgICAgICAgIGlmIGVuZCA+IHNlbGYud21lbnVfZW5kOgogICAgICAgICAgICAgbWVudS5kZWxldGUoc2VsZi53bWVudV9lbmQrMSwgZW5kKQotICAgICAgICBXaW5kb3dMaXN0LmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKKyAgICAgICAgd2luZG93cy5hZGRfd2luZG93c190b19tZW51KG1lbnUpCiAKICAgICBybWVudSA9IE5vbmUKIApAQCAtNTA3LDE3ICs0NjMsMTcgQEAKIAogICAgIGRlZiBhYm91dF9kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnQWJvdXQgSURMRScgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggbWFjb3N4U3VwcG9ydC5vdmVycmlkZVJvb3RNZW51LmFib3V0X2RpYWxvZy4KLSAgICAgICAgYWJvdXREaWFsb2cuQWJvdXREaWFsb2coc2VsZi50b3AsJ0Fib3V0IElETEUnKQorICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggbWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUuYWJvdXRfZGlhbG9nLgorICAgICAgICBoZWxwX2Fib3V0LkFib3V0RGlhbG9nKHNlbGYudG9wLCdBYm91dCBJRExFJykKIAogICAgIGRlZiBjb25maWdfZGlhbG9nKHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIE9wdGlvbnMgJ0NvbmZpZ3VyZSBJRExFJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuY29uZmlnX2RpYWxvZy4KLSAgICAgICAgY29uZmlnRGlhbG9nLkNvbmZpZ0RpYWxvZyhzZWxmLnRvcCwnU2V0dGluZ3MnKQorICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggbWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUuY29uZmlnX2RpYWxvZy4KKyAgICAgICAgY29uZmlnZGlhbG9nLkNvbmZpZ0RpYWxvZyhzZWxmLnRvcCwnU2V0dGluZ3MnKQogCiAgICAgZGVmIGhlbHBfZGlhbG9nKHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIEhlbHAgJ0lETEUgSGVscCcgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggbWFjb3N4U3VwcG9ydC5vdmVycmlkZVJvb3RNZW51LmhlbHBfZGlhbG9nLgorICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggbWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUuaGVscF9kaWFsb2cuCiAgICAgICAgIGlmIHNlbGYucm9vdDoKICAgICAgICAgICAgIHBhcmVudCA9IHNlbGYucm9vdAogICAgICAgICBlbHNlOgpAQCAtNTkwLDIzICs1NDYsMjMgQEAKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiBmaW5kX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgU2VhcmNoRGlhbG9nLmZpbmQoc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZChzZWxmLnRleHQpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZmluZF9hZ2Fpbl9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIFNlYXJjaERpYWxvZy5maW5kX2FnYWluKHNlbGYudGV4dCkKKyAgICAgICAgc2VhcmNoLmZpbmRfYWdhaW4oc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfc2VsZWN0aW9uX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgU2VhcmNoRGlhbG9nLmZpbmRfc2VsZWN0aW9uKHNlbGYudGV4dCkKKyAgICAgICAgc2VhcmNoLmZpbmRfc2VsZWN0aW9uKHNlbGYudGV4dCkKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiBmaW5kX2luX2ZpbGVzX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgR3JlcERpYWxvZy5ncmVwKHNlbGYudGV4dCwgc2VsZi5pbywgc2VsZi5mbGlzdCkKKyAgICAgICAgZ3JlcC5ncmVwKHNlbGYudGV4dCwgc2VsZi5pbywgc2VsZi5mbGlzdCkKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiByZXBsYWNlX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgUmVwbGFjZURpYWxvZy5yZXBsYWNlKHNlbGYudGV4dCkKKyAgICAgICAgcmVwbGFjZS5yZXBsYWNlKHNlbGYudGV4dCkKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiBnb3RvX2xpbmVfZXZlbnQoc2VsZiwgZXZlbnQpOgpAQCAtNjIyLDQ2ICs1NzgsMjcgQEAKICAgICAgICAgdGV4dC5zZWUoImluc2VydCIpCiAKICAgICBkZWYgb3Blbl9tb2R1bGUoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgICMgWFhYIFNob3VsZG4ndCB0aGlzIGJlIGluIElPQmluZGluZz8KKyAgICAgICAgIiIiR2V0IG1vZHVsZSBuYW1lIGZyb20gdXNlciBhbmQgb3BlbiBpdC4KKworICAgICAgICBSZXR1cm4gbW9kdWxlIHBhdGggb3IgTm9uZSBmb3IgY2FsbHMgYnkgb3Blbl9jbGFzc19icm93c2VyCisgICAgICAgIHdoZW4gbGF0dGVyIGlzIG5vdCBpbnZva2VkIGluIG5hbWVkIGVkaXRvciB3aW5kb3cuCisgICAgICAgICIiIgorICAgICAgICAjIFhYWCBUaGlzLCBvcGVuX2NsYXNzX2Jyb3dzZXIsIGFuZCBvcGVuX3BhdGhfYnJvd3NlcgorICAgICAgICAjIHdvdWxkIGZpdCBiZXR0ZXIgaW4gaW9tZW51LklPQmluZGluZy4KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbmFtZSA9IHNlbGYudGV4dC5nZXQoInNlbC5maXJzdCIsICJzZWwubGFzdCIpCisgICAgICAgICAgICBuYW1lID0gc2VsZi50ZXh0LmdldCgic2VsLmZpcnN0IiwgInNlbC5sYXN0Iikuc3RyaXAoKQogICAgICAgICBleGNlcHQgVGNsRXJyb3I6Ci0gICAgICAgICAgICBuYW1lID0gIiIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN0cmlwKCkKLSAgICAgICAgbmFtZSA9IHRrU2ltcGxlRGlhbG9nLmFza3N0cmluZygiTW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgIkVudGVyIHRoZSBuYW1lIG9mIGEgUHl0aG9uIG1vZHVsZVxuIgotICAgICAgICAgICAgICAgICAidG8gc2VhcmNoIG9uIHN5cy5wYXRoIGFuZCBvcGVuOiIsCi0gICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmLnRleHQsIGluaXRpYWx2YWx1ZT1uYW1lKQotICAgICAgICBpZiBuYW1lOgotICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3RyaXAoKQotICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICAjIFhYWCBPdWdodCB0byBpbnNlcnQgY3VycmVudCBmaWxlJ3MgZGlyZWN0b3J5IGluIGZyb250IG9mIHBhdGgKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQotICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEltcG9ydEVycm9yKSBhcyBtc2c6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJbXBvcnQgZXJyb3IiLCBzdHIobXNnKSwgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBzcGVjIGlzIE5vbmU6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJbXBvcnQgZXJyb3IiLCAibW9kdWxlIG5vdCBmb3VuZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmLnRleHQpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3BlYy5sb2FkZXIsIGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyKToKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsICJub3QgYSBzb3VyY2UtYmFzZWQgbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlX3BhdGggPSBzcGVjLmxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSW1wb3J0IGVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvYWRlciBkb2VzIG5vdCBzdXBwb3J0IGdldF9maWxlbmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmLnRleHQpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgc2VsZi5mbGlzdDoKLSAgICAgICAgICAgIHNlbGYuZmxpc3Qub3BlbihmaWxlX3BhdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmlvLmxvYWRmaWxlKGZpbGVfcGF0aCkKKyAgICAgICAgICAgIG5hbWUgPSAnJworICAgICAgICBmaWxlX3BhdGggPSBxdWVyeS5Nb2R1bGVOYW1lKAorICAgICAgICAgICAgICAgIHNlbGYudGV4dCwgIk9wZW4gTW9kdWxlIiwKKyAgICAgICAgICAgICAgICAiRW50ZXIgdGhlIG5hbWUgb2YgYSBQeXRob24gbW9kdWxlXG4iCisgICAgICAgICAgICAgICAgInRvIHNlYXJjaCBvbiBzeXMucGF0aCBhbmQgb3BlbjoiLAorICAgICAgICAgICAgICAgIG5hbWUpLnJlc3VsdAorICAgICAgICBpZiBmaWxlX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLmZsaXN0OgorICAgICAgICAgICAgICAgIHNlbGYuZmxpc3Qub3BlbihmaWxlX3BhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuaW8ubG9hZGZpbGUoZmlsZV9wYXRoKQogICAgICAgICByZXR1cm4gZmlsZV9wYXRoCiAKICAgICBkZWYgb3Blbl9jbGFzc19icm93c2VyKHNlbGYsIGV2ZW50PU5vbmUpOgpAQCAtNjczLDEyICs2MTAsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaGVhZCwgdGFpbCA9IG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpCiAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQodGFpbCkKLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBDbGFzc0Jyb3dzZXIKLSAgICAgICAgQ2xhc3NCcm93c2VyLkNsYXNzQnJvd3NlcihzZWxmLmZsaXN0LCBiYXNlLCBbaGVhZF0pCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgYnJvd3NlcgorICAgICAgICBicm93c2VyLkNsYXNzQnJvd3NlcihzZWxmLmZsaXN0LCBiYXNlLCBbaGVhZF0pCiAKICAgICBkZWYgb3Blbl9wYXRoX2Jyb3dzZXIoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgUGF0aEJyb3dzZXIKLSAgICAgICAgUGF0aEJyb3dzZXIuUGF0aEJyb3dzZXIoc2VsZi5mbGlzdCkKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBwYXRoYnJvd3NlcgorICAgICAgICBwYXRoYnJvd3Nlci5QYXRoQnJvd3NlcihzZWxmLmZsaXN0KQogCiAgICAgZGVmIG9wZW5fdHVydGxlX2RlbW8oc2VsZiwgZXZlbnQgPSBOb25lKToKICAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTczOSw3ICs2NzYsNyBAQAogCiAgICAgZGVmIFJlc2V0Q29sb3JpemVyKHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSBjb2xvciB0aGVtZSIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBzZWxmLmZpbGVuYW1lX2NoYW5nZV9ob29rIGFuZCBmcm9tIGNvbmZpZ0RpYWxvZy5weQorICAgICAgICAjIENhbGxlZCBmcm9tIHNlbGYuZmlsZW5hbWVfY2hhbmdlX2hvb2sgYW5kIGZyb20gY29uZmlnZGlhbG9nLnB5CiAgICAgICAgIHNlbGYuX3JtY29sb3JpemVyKCkKICAgICAgICAgc2VsZi5fYWRkY29sb3JpemVyKCkKICAgICAgICAgRWRpdG9yV2luZG93LmNvbG9yX2NvbmZpZyhzZWxmLnRleHQpCkBAIC03NTksMTQgKzY5NiwxNCBAQAogCiAgICAgZGVmIFJlc2V0Rm9udChzZWxmKToKICAgICAgICAgIlVwZGF0ZSB0aGUgdGV4dCB3aWRnZXRzJyBmb250IGlmIGl0IGlzIGNoYW5nZWQiCi0gICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnRGlhbG9nLnB5CisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CiAKICAgICAgICAgc2VsZi50ZXh0Wydmb250J10gPSBpZGxlQ29uZi5HZXRGb250KHNlbGYucm9vdCwgJ21haW4nLCdFZGl0b3JXaW5kb3cnKQogCiAgICAgZGVmIFJlbW92ZUtleWJpbmRpbmdzKHNlbGYpOgogICAgICAgICAiUmVtb3ZlIHRoZSBrZXliaW5kaW5ncyBiZWZvcmUgdGhleSBhcmUgY2hhbmdlZC4iCi0gICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnRGlhbG9nLnB5Ci0gICAgICAgIHNlbGYuQmluZGluZ3MuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQorICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ2RpYWxvZy5weQorICAgICAgICBzZWxmLm1haW5tZW51LmRlZmF1bHRfa2V5ZGVmcyA9IGtleWRlZnMgPSBpZGxlQ29uZi5HZXRDdXJyZW50S2V5U2V0KCkKICAgICAgICAgZm9yIGV2ZW50LCBrZXlsaXN0IGluIGtleWRlZnMuaXRlbXMoKToKICAgICAgICAgICAgIHNlbGYudGV4dC5ldmVudF9kZWxldGUoZXZlbnQsICprZXlsaXN0KQogICAgICAgICBmb3IgZXh0ZW5zaW9uTmFtZSBpbiBzZWxmLmdldF9zdGFuZGFyZF9leHRlbnNpb25fbmFtZXMoKToKQEAgLTc3Nyw4ICs3MTQsOCBAQAogCiAgICAgZGVmIEFwcGx5S2V5YmluZGluZ3Moc2VsZik6CiAgICAgICAgICJVcGRhdGUgdGhlIGtleWJpbmRpbmdzIGFmdGVyIHRoZXkgYXJlIGNoYW5nZWQiCi0gICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnRGlhbG9nLnB5Ci0gICAgICAgIHNlbGYuQmluZGluZ3MuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQorICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ2RpYWxvZy5weQorICAgICAgICBzZWxmLm1haW5tZW51LmRlZmF1bHRfa2V5ZGVmcyA9IGtleWRlZnMgPSBpZGxlQ29uZi5HZXRDdXJyZW50S2V5U2V0KCkKICAgICAgICAgc2VsZi5hcHBseV9iaW5kaW5ncygpCiAgICAgICAgIGZvciBleHRlbnNpb25OYW1lIGluIHNlbGYuZ2V0X3N0YW5kYXJkX2V4dGVuc2lvbl9uYW1lcygpOgogICAgICAgICAgICAgeGtleWRlZnMgPSBpZGxlQ29uZi5HZXRFeHRlbnNpb25CaW5kaW5ncyhleHRlbnNpb25OYW1lKQpAQCAtNzg2LDcgKzcyMyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hcHBseV9iaW5kaW5ncyh4a2V5ZGVmcykKICAgICAgICAgI3VwZGF0ZSBtZW51IGFjY2VsZXJhdG9ycwogICAgICAgICBtZW51RXZlbnREaWN0ID0ge30KLSAgICAgICAgZm9yIG1lbnUgaW4gc2VsZi5CaW5kaW5ncy5tZW51ZGVmczoKKyAgICAgICAgZm9yIG1lbnUgaW4gc2VsZi5tYWlubWVudS5tZW51ZGVmczoKICAgICAgICAgICAgIG1lbnVFdmVudERpY3RbbWVudVswXV0gPSB7fQogICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbWVudVsxXToKICAgICAgICAgICAgICAgICBpZiBpdGVtOgpAQCAtODEzLDcgKzc1MCw3IEBACiAKICAgICBkZWYgc2V0X25vdGFic19pbmRlbnR3aWR0aChzZWxmKToKICAgICAgICAgIlVwZGF0ZSB0aGUgaW5kZW50d2lkdGggaWYgY2hhbmdlZCBhbmQgbm90IHVzaW5nIHRhYnMgaW4gdGhpcyB3aW5kb3ciCi0gICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnRGlhbG9nLnB5CisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CiAgICAgICAgIGlmIG5vdCBzZWxmLnVzZXRhYnM6CiAgICAgICAgICAgICBzZWxmLmluZGVudHdpZHRoID0gaWRsZUNvbmYuR2V0T3B0aW9uKCdtYWluJywgJ0luZGVudCcsJ251bS1zcGFjZXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnKQpAQCAtOTkzLDcgKzkzMCw3IEBACiAgICAgZGVmIF9jbG9zZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5pby5maWxlbmFtZToKICAgICAgICAgICAgIHNlbGYudXBkYXRlX3JlY2VudF9maWxlc19saXN0KG5ld19maWxlPXNlbGYuaW8uZmlsZW5hbWUpCi0gICAgICAgIFdpbmRvd0xpc3QudW5yZWdpc3Rlcl9jYWxsYmFjayhzZWxmLnBvc3R3aW5kb3dzbWVudSkKKyAgICAgICAgd2luZG93cy51bnJlZ2lzdGVyX2NhbGxiYWNrKHNlbGYucG9zdHdpbmRvd3NtZW51KQogICAgICAgICBzZWxmLnVubG9hZF9leHRlbnNpb25zKCkKICAgICAgICAgc2VsZi5pby5jbG9zZSgpCiAgICAgICAgIHNlbGYuaW8gPSBOb25lCkBAIC0xMDMxLDEyICs5NjgsMjUgQEAKICAgICBkZWYgZ2V0X3N0YW5kYXJkX2V4dGVuc2lvbl9uYW1lcyhzZWxmKToKICAgICAgICAgcmV0dXJuIGlkbGVDb25mLkdldEV4dGVuc2lvbnMoZWRpdG9yX29ubHk9VHJ1ZSkKIAorICAgIGV4dGZpbGVzID0geyAgIyBtYXAgY29uZmlnLWV4dGVuc2lvbiBzZWN0aW9uIG5hbWVzIHRvIG5ldyBmaWxlIG5hbWVzCisgICAgICAgICdBdXRvQ29tcGxldGUnOiAnYXV0b2NvbXBsZXRlJywKKyAgICAgICAgJ0F1dG9FeHBhbmQnOiAnYXV0b2V4cGFuZCcsCisgICAgICAgICdDYWxsVGlwcyc6ICdjYWxsdGlwcycsCisgICAgICAgICdDb2RlQ29udGV4dCc6ICdjb2RlY29udGV4dCcsCisgICAgICAgICdGb3JtYXRQYXJhZ3JhcGgnOiAncGFyYWdyYXBoJywKKyAgICAgICAgJ1BhcmVuTWF0Y2gnOiAncGFyZW5tYXRjaCcsCisgICAgICAgICdSc3RyaXBFeHRlbnNpb24nOiAncnN0cmlwJywKKyAgICAgICAgJ1NjcmlwdEJpbmRpbmcnOiAncnVuc2NyaXB0JywKKyAgICAgICAgJ1pvb21IZWlnaHQnOiAnem9vbWhlaWdodCcsCisgICAgICAgIH0KKwogICAgIGRlZiBsb2FkX2V4dGVuc2lvbihzZWxmLCBuYW1lKToKKyAgICAgICAgZm5hbWUgPSBzZWxmLmV4dGZpbGVzLmdldChuYW1lLCBuYW1lKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJy4nICsgbmFtZSwgcGFja2FnZT1fX3BhY2thZ2VfXykKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLicgKyBmbmFtZSwgcGFja2FnZT1fX3BhY2thZ2VfXykKICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIFR5cGVFcnJvcik6Ci0gICAgICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShmbmFtZSkKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgcHJpbnQoIlxuRmFpbGVkIHRvIGltcG9ydCBleHRlbnNpb246ICIsIG5hbWUpCiAgICAgICAgICAgICByYWlzZQpAQCAtMTA2MCw3ICsxMDEwLDcgQEAKIAogICAgIGRlZiBhcHBseV9iaW5kaW5ncyhzZWxmLCBrZXlkZWZzPU5vbmUpOgogICAgICAgICBpZiBrZXlkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBrZXlkZWZzID0gc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMKKyAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLm1haW5tZW51LmRlZmF1bHRfa2V5ZGVmcwogICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0CiAgICAgICAgIHRleHQua2V5ZGVmcyA9IGtleWRlZnMKICAgICAgICAgZm9yIGV2ZW50LCBrZXlsaXN0IGluIGtleWRlZnMuaXRlbXMoKToKQEAgLTEwNzMsOSArMTAyMyw5IEBACiAgICAgICAgIE1lbnVzIHRoYXQgYXJlIGFic2VudCBvciBOb25lIGluIHNlbGYubWVudWRpY3QgYXJlIGlnbm9yZWQuCiAgICAgICAgICIiIgogICAgICAgICBpZiBtZW51ZGVmcyBpcyBOb25lOgotICAgICAgICAgICAgbWVudWRlZnMgPSBzZWxmLkJpbmRpbmdzLm1lbnVkZWZzCisgICAgICAgICAgICBtZW51ZGVmcyA9IHNlbGYubWFpbm1lbnUubWVudWRlZnMKICAgICAgICAgaWYga2V5ZGVmcyBpcyBOb25lOgotICAgICAgICAgICAga2V5ZGVmcyA9IHNlbGYuQmluZGluZ3MuZGVmYXVsdF9rZXlkZWZzCisgICAgICAgICAgICBrZXlkZWZzID0gc2VsZi5tYWlubWVudS5kZWZhdWx0X2tleWRlZnMKICAgICAgICAgbWVudWRpY3QgPSBzZWxmLm1lbnVkaWN0CiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgZm9yIG1uYW1lLCBlbnRyeWxpc3QgaW4gbWVudWRlZnM6CkBAIC0xMzAyLDcgKzEyNTIsNyBAQAogICAgICAgICAgICAgIyBhZGp1c3QgaW5kZW50YXRpb24gZm9yIGNvbnRpbnVhdGlvbnMgYW5kIGJsb2NrCiAgICAgICAgICAgICAjIG9wZW4vY2xvc2UgZmlyc3QgbmVlZCB0byBmaW5kIHRoZSBsYXN0IHN0bXQKICAgICAgICAgICAgIGxubyA9IGluZGV4MmxpbmUodGV4dC5pbmRleCgnaW5zZXJ0JykpCi0gICAgICAgICAgICB5ID0gUHlQYXJzZS5QYXJzZXIoc2VsZi5pbmRlbnR3aWR0aCwgc2VsZi50YWJ3aWR0aCkKKyAgICAgICAgICAgIHkgPSBweXBhcnNlLlBhcnNlcihzZWxmLmluZGVudHdpZHRoLCBzZWxmLnRhYndpZHRoKQogICAgICAgICAgICAgaWYgbm90IHNlbGYuY29udGV4dF91c2VfcHMxOgogICAgICAgICAgICAgICAgIGZvciBjb250ZXh0IGluIHNlbGYubnVtX2NvbnRleHRfbGluZXM6CiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0YXQgPSBtYXgobG5vIC0gY29udGV4dCwgMSkKQEAgLTEzMjYsMjIgKzEyNzYsMjIgQEAKICAgICAgICAgICAgICAgICB5LnNldF9sbygwKQogCiAgICAgICAgICAgICBjID0geS5nZXRfY29udGludWF0aW9uX3R5cGUoKQotICAgICAgICAgICAgaWYgYyAhPSBQeVBhcnNlLkNfTk9ORToKKyAgICAgICAgICAgIGlmIGMgIT0gcHlwYXJzZS5DX05PTkU6CiAgICAgICAgICAgICAgICAgIyBUaGUgY3VycmVudCBzdG10IGhhc24ndCBlbmRlZCB5ZXQuCi0gICAgICAgICAgICAgICAgaWYgYyA9PSBQeVBhcnNlLkNfU1RSSU5HX0ZJUlNUX0xJTkU6CisgICAgICAgICAgICAgICAgaWYgYyA9PSBweXBhcnNlLkNfU1RSSU5HX0ZJUlNUX0xJTkU6CiAgICAgICAgICAgICAgICAgICAgICMgYWZ0ZXIgdGhlIGZpcnN0IGxpbmUgb2YgYSBzdHJpbmc7IGRvIG5vdCBpbmRlbnQgYXQgYWxsCiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbGlmIGMgPT0gUHlQYXJzZS5DX1NUUklOR19ORVhUX0xJTkVTOgorICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBweXBhcnNlLkNfU1RSSU5HX05FWFRfTElORVM6CiAgICAgICAgICAgICAgICAgICAgICMgaW5zaWRlIGEgc3RyaW5nIHdoaWNoIHN0YXJ0ZWQgYmVmb3JlIHRoaXMgbGluZTsKICAgICAgICAgICAgICAgICAgICAgIyBqdXN0IG1pbWljIHRoZSBjdXJyZW50IGluZGVudAogICAgICAgICAgICAgICAgICAgICB0ZXh0Lmluc2VydCgiaW5zZXJ0IiwgaW5kZW50KQotICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBQeVBhcnNlLkNfQlJBQ0tFVDoKKyAgICAgICAgICAgICAgICBlbGlmIGMgPT0gcHlwYXJzZS5DX0JSQUNLRVQ6CiAgICAgICAgICAgICAgICAgICAgICMgbGluZSB1cCB3aXRoIHRoZSBmaXJzdCAoaWYgYW55KSBlbGVtZW50IG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAjIGxhc3Qgb3BlbiBicmFja2V0IHN0cnVjdHVyZTsgZWxzZSBpbmRlbnQgb25lCiAgICAgICAgICAgICAgICAgICAgICMgbGV2ZWwgYmV5b25kIHRoZSBpbmRlbnQgb2YgdGhlIGxpbmUgd2l0aCB0aGUKICAgICAgICAgICAgICAgICAgICAgIyBsYXN0IG9wZW4gYnJhY2tldAogICAgICAgICAgICAgICAgICAgICBzZWxmLnJlaW5kZW50X3RvKHkuY29tcHV0ZV9icmFja2V0X2luZGVudCgpKQotICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBQeVBhcnNlLkNfQkFDS1NMQVNIOgorICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBweXBhcnNlLkNfQkFDS1NMQVNIOgogICAgICAgICAgICAgICAgICAgICAjIGlmIG1vcmUgdGhhbiBvbmUgbGluZSBpbiB0aGlzIHN0bXQgYWxyZWFkeSwganVzdAogICAgICAgICAgICAgICAgICAgICAjIG1pbWljIHRoZSBjdXJyZW50IGluZGVudDsgZWxzZSBpZiBpbml0aWFsIGxpbmUKICAgICAgICAgICAgICAgICAgICAgIyBoYXMgYSBzdGFydCBvbiBhbiBhc3NpZ25tZW50IHN0bXQsIGluZGVudCB0bwpAQCAtMTU2OSw5ICsxNTE5LDYgQEAKICAgICAgICAgICAgIGJyZWFrCiAgICAgcmV0dXJuIHJhdywgZWZmZWN0aXZlCiAKLWltcG9ydCB0b2tlbml6ZQotX3Rva2VuaXplID0gdG9rZW5pemUKLWRlbCB0b2tlbml6ZQogCiBjbGFzcyBJbmRlbnRTZWFyY2hlcihvYmplY3QpOgogCkBAIC0xNTk2LDggKzE1NDMsOCBAQAogICAgICAgICByZXR1cm4gc2VsZi50ZXh0LmdldChtYXJrLCBtYXJrICsgIiBsaW5lZW5kKzFjIikKIAogICAgIGRlZiB0b2tlbmVhdGVyKHNlbGYsIHR5cGUsIHRva2VuLCBzdGFydCwgZW5kLCBsaW5lLAotICAgICAgICAgICAgICAgICAgIElOREVOVD1fdG9rZW5pemUuSU5ERU5ULAotICAgICAgICAgICAgICAgICAgIE5BTUU9X3Rva2VuaXplLk5BTUUsCisgICAgICAgICAgICAgICAgICAgSU5ERU5UPXRva2VuaXplLklOREVOVCwKKyAgICAgICAgICAgICAgICAgICBOQU1FPXRva2VuaXplLk5BTUUsCiAgICAgICAgICAgICAgICAgICAgT1BFTkVSUz0oJ2NsYXNzJywgJ2RlZicsICdmb3InLCAnaWYnLCAndHJ5JywgJ3doaWxlJykpOgogICAgICAgICBpZiBzZWxmLmZpbmlzaGVkOgogICAgICAgICAgICAgcGFzcwpAQCAtMTYwOCwxOSArMTU1NSwxOSBAQAogICAgICAgICAgICAgc2VsZi5maW5pc2hlZCA9IDEKIAogICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHNhdmVfdGFic2l6ZSA9IF90b2tlbml6ZS50YWJzaXplCi0gICAgICAgIF90b2tlbml6ZS50YWJzaXplID0gc2VsZi50YWJ3aWR0aAorICAgICAgICBzYXZlX3RhYnNpemUgPSB0b2tlbml6ZS50YWJzaXplCisgICAgICAgIHRva2VuaXplLnRhYnNpemUgPSBzZWxmLnRhYndpZHRoCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0b2tlbnMgPSBfdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKHNlbGYucmVhZGxpbmUpCisgICAgICAgICAgICAgICAgdG9rZW5zID0gdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKHNlbGYucmVhZGxpbmUpCiAgICAgICAgICAgICAgICAgZm9yIHRva2VuIGluIHRva2VuczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbmVhdGVyKCp0b2tlbikKLSAgICAgICAgICAgIGV4Y2VwdCAoX3Rva2VuaXplLlRva2VuRXJyb3IsIFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4Y2VwdCAodG9rZW5pemUuVG9rZW5FcnJvciwgU3ludGF4RXJyb3IpOgogICAgICAgICAgICAgICAgICMgc2luY2Ugd2UgY3V0IG9mZiB0aGUgdG9rZW5pemVyIGVhcmx5LCB3ZSBjYW4gdHJpZ2dlcgogICAgICAgICAgICAgICAgICMgc3B1cmlvdXMgZXJyb3JzCiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgX3Rva2VuaXplLnRhYnNpemUgPSBzYXZlX3RhYnNpemUKKyAgICAgICAgICAgIHRva2VuaXplLnRhYnNpemUgPSBzYXZlX3RhYnNpemUKICAgICAgICAgcmV0dXJuIHNlbGYuYmxrb3BlbmxpbmUsIHNlbGYuaW5kZW50ZWRsaW5lCiAKICMjIyBlbmQgYXV0b2luZGVudCBjb2RlICMjIwpAQCAtMTY0NCw3ICsxNTkxLDcgQEAKICAgICBrZXlsaXN0ID0ga2V5ZGVmcy5nZXQoZXZlbnRuYW1lKQogICAgICMgaXNzdWUxMDk0MDogdGVtcG9yYXJ5IHdvcmthcm91bmQgdG8gcHJldmVudCBoYW5nIHdpdGggT1MgWCBDb2NvYSBUayA4LjUKICAgICAjIGlmIG5vdCBrZXlsaXN0OgotICAgIGlmIChub3Qga2V5bGlzdCkgb3IgKG1hY29zeFN1cHBvcnQuaXNDb2NvYVRrKCkgYW5kIGV2ZW50bmFtZSBpbiB7CisgICAgaWYgKG5vdCBrZXlsaXN0KSBvciAobWFjb3N4LmlzQ29jb2FUaygpIGFuZCBldmVudG5hbWUgaW4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8PG9wZW4tbW9kdWxlPj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8PGdvdG8tbGluZT4+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPDxjaGFuZ2UtaW5kZW50d2lkdGg+PiJ9KToKQEAgLTE2NzksMTIgKzE2MjYsMTUgQEAKICAgICAgICAgZmlsZW5hbWUgPSBzeXMuYXJndlsxXQogICAgIGVsc2U6CiAgICAgICAgIGZpbGVuYW1lID0gTm9uZQotICAgIG1hY29zeFN1cHBvcnQuc2V0dXBBcHAocm9vdCwgTm9uZSkKKyAgICBtYWNvc3guc2V0dXBBcHAocm9vdCwgTm9uZSkKICAgICBlZGl0ID0gRWRpdG9yV2luZG93KHJvb3Q9cm9vdCwgZmlsZW5hbWU9ZmlsZW5hbWUpCiAgICAgZWRpdC50ZXh0LmJpbmQoIjw8Y2xvc2UtYWxsLXdpbmRvd3M+PiIsIGVkaXQuY2xvc2VfZXZlbnQpCiAgICAgIyBEb2VzIG5vdCBzdG9wIGVycm9yLCBuZWl0aGVyIGRvZXMgZm9sbG93aW5nCiAgICAgIyBlZGl0LnRleHQuYmluZCgiPDxjbG9zZS13aW5kb3c+PiIsIGVkaXQuY2xvc2VfZXZlbnQpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9lZGl0b3InLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfZWRpdG9yX3dpbmRvdykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0ZpbGVMaXN0LnB5IGIvTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvRmlsZUxpc3QucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2ZpbGVsaXN0LnB5CmluZGV4IGE5OTg5YTguLmY0NmFkN2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0ZpbGVMaXN0LnB5CisrKyBiL0xpYi9pZGxlbGliL2ZpbGVsaXN0LnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IG9zCisKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIApAQCAtNiw3ICs3LDcgQEAKIGNsYXNzIEZpbGVMaXN0OgogCiAgICAgIyBOLkIuIHRoaXMgaW1wb3J0IG92ZXJyaWRkZW4gaW4gUHlTaGVsbEZpbGVMaXN0LgotICAgIGZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdworICAgIGZyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdwogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3QpOgogICAgICAgICBzZWxmLnJvb3QgPSByb290CkBAIC0xMTEsNyArMTEyLDcgQEAKIAogCiBkZWYgX3Rlc3QoKToKLSAgICBmcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBmaXh3b3JkYnJlYWtzCisgICAgZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgZml4d29yZGJyZWFrcwogICAgIGltcG9ydCBzeXMKICAgICByb290ID0gVGsoKQogICAgIGZpeHdvcmRicmVha3Mocm9vdCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0dyZXBEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9ncmVwLnB5CnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0dyZXBEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2dyZXAucHkKaW5kZXggNzIxYjIzMS4uNjRiYTI4ZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9ncmVwLnB5CkBAIC0xLDE3ICsxLDE5IEBACi1pbXBvcnQgb3MKIGltcG9ydCBmbm1hdGNoCi1pbXBvcnQgcmUgICMgZm9yIGh0ZXN0CitpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWZyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBCb29sZWFuVmFyLCBDaGVja2J1dHRvbiAgIyBmb3IgR3JlcERpYWxvZwotZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dCwgQnV0dG9uLCBTRUwsIEVORCAgIyBmb3IgaHRlc3QKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lCi1mcm9tIGlkbGVsaWIuU2VhcmNoRGlhbG9nQmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQotIyBJbXBvcnRpbmcgT3V0cHV0V2luZG93IGZhaWxzIGR1ZSB0byBpbXBvcnQgbG9vcAorCitmcm9tIHRraW50ZXIgaW1wb3J0IFN0cmluZ1ZhciwgQm9vbGVhblZhcgorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgQ2hlY2tidXR0b24KKworZnJvbSBpZGxlbGliLnNlYXJjaGJhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lCisKKyMgSW1wb3J0aW5nIE91dHB1dFdpbmRvdyBoZXJlIGZhaWxzIGR1ZSB0byBpbXBvcnQgbG9vcAogIyBFZGl0b3JXaW5kb3cgLT4gR3JlcERpYWxvcCAtPiBPdXRwdXRXaW5kb3cgLT4gRWRpdG9yV2luZG93CiAKIGRlZiBncmVwKHRleHQsIGlvPU5vbmUsIGZsaXN0PU5vbmUpOgogICAgIHJvb3QgPSB0ZXh0Ll9yb290KCkKLSAgICBlbmdpbmUgPSBTZWFyY2hFbmdpbmUuZ2V0KHJvb3QpCisgICAgZW5naW5lID0gc2VhcmNoZW5naW5lLmdldChyb290KQogICAgIGlmIG5vdCBoYXNhdHRyKGVuZ2luZSwgIl9ncmVwZGlhbG9nIik6CiAgICAgICAgIGVuZ2luZS5fZ3JlcGRpYWxvZyA9IEdyZXBEaWFsb2cocm9vdCwgZW5naW5lLCBmbGlzdCkKICAgICBkaWFsb2cgPSBlbmdpbmUuX2dyZXBkaWFsb2cKQEAgLTQ3LDEzICs0OSwxMCBAQAogICAgICAgICBzZWxmLmdsb2JlbnQgPSBzZWxmLm1ha2VfZW50cnkoIkluIGZpbGVzOiIsIHNlbGYuZ2xvYnZhcilbMF0KIAogICAgIGRlZiBjcmVhdGVfb3RoZXJfYnV0dG9ucyhzZWxmKToKLSAgICAgICAgZiA9IHNlbGYubWFrZV9mcmFtZSgpWzBdCi0KLSAgICAgICAgYnRuID0gQ2hlY2tidXR0b24oZiwgYW5jaG9yPSJ3IiwKLSAgICAgICAgICAgICAgICB2YXJpYWJsZT1zZWxmLnJlY3ZhciwKKyAgICAgICAgYnRuID0gQ2hlY2tidXR0b24oCisgICAgICAgICAgICAgICAgc2VsZi5tYWtlX2ZyYW1lKClbMF0sIHZhcmlhYmxlPXNlbGYucmVjdmFyLAogICAgICAgICAgICAgICAgIHRleHQ9IlJlY3Vyc2UgZG93biBzdWJkaXJlY3RvcmllcyIpCiAgICAgICAgIGJ0bi5wYWNrKHNpZGU9InRvcCIsIGZpbGw9ImJvdGgiKQotICAgICAgICBidG4uc2VsZWN0KCkKIAogICAgIGRlZiBjcmVhdGVfY29tbWFuZF9idXR0b25zKHNlbGYpOgogICAgICAgICBTZWFyY2hEaWFsb2dCYXNlLmNyZWF0ZV9jb21tYW5kX2J1dHRvbnMoc2VsZikKQEAgLTY3LDcgKzY2LDcgQEAKICAgICAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgICAgICBzZWxmLnRvcC5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBmcm9tIGlkbGVsaWIuT3V0cHV0V2luZG93IGltcG9ydCBPdXRwdXRXaW5kb3cgICMgbGVhdmUgaGVyZSEKKyAgICAgICAgZnJvbSBpZGxlbGliLm91dHdpbiBpbXBvcnQgT3V0cHV0V2luZG93ICAjIGxlYXZlIGhlcmUhCiAgICAgICAgIHNhdmUgPSBzeXMuc3Rkb3V0CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBPdXRwdXRXaW5kb3coc2VsZi5mbGlzdCkKQEAgLTEzMSwxNCArMTMwLDE2IEBACiAKIAogZGVmIF9ncmVwX2RpYWxvZyhwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBHcmVwRGlhbG9nIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dCwgU0VMLCBFTkQKKyAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBCdXR0b24KKyAgICBmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0CisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBHcmVwRGlhbG9nIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogCi0gICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3Qocm9vdCkKLSAgICB0ZXh0ID0gVGV4dChyb290LCBoZWlnaHQ9NSkKKyAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdCh0b3ApCisgICAgdGV4dCA9IFRleHQodG9wLCBoZWlnaHQ9NSkKICAgICB0ZXh0LnBhY2soKQogCiAgICAgZGVmIHNob3dfZ3JlcF9kaWFsb2coKToKQEAgLTE0Niw5ICsxNDcsOCBAQAogICAgICAgICBncmVwKHRleHQsIGZsaXN0PWZsaXN0KQogICAgICAgICB0ZXh0LnRhZ19yZW1vdmUoU0VMLCAiMS4wIiwgRU5EKQogCi0gICAgYnV0dG9uID0gQnV0dG9uKHJvb3QsIHRleHQ9IlNob3cgR3JlcERpYWxvZyIsIGNvbW1hbmQ9c2hvd19ncmVwX2RpYWxvZykKKyAgICBidXR0b24gPSBCdXR0b24odG9wLCB0ZXh0PSJTaG93IEdyZXBEaWFsb2ciLCBjb21tYW5kPXNob3dfZ3JlcF9kaWFsb2cpCiAgICAgYnV0dG9uLnBhY2soKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaGVscC5weSBiL0xpYi9pZGxlbGliL2hlbHAucHkKaW5kZXggYTcwMDhlOS4uNzdlMDFhMyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaGVscC5weQorKysgYi9MaWIvaWRsZWxpYi9oZWxwLnB5CkBAIC00LDcgKzQsNyBAQAogCiBIZWxwID0+IEFib3V0IElETEU6IGRpcGxheSBBYm91dCBJZGxlIGRpYWxvZwogCi08dG8gYmUgbW92ZWQgaGVyZSBmcm9tIGFib3V0RGlhbG9nLnB5PgorPHRvIGJlIG1vdmVkIGhlcmUgZnJvbSBoZWxwX2Fib3V0LnB5PgogCiAKIEhlbHAgPT4gSURMRSBIZWxwOiBEaXNwbGF5IGhlbHAuaHRtbCB3aXRoIHByb3BlciBmb3JtYXR0aW5nLgpAQCAtMjUsMTUgKzI1LDE0IEBACiBzaG93X2lkbGVoZWxwIC0gQ3JlYXRlIEhlbHBXaW5kb3cuICBDYWxsZWQgaW4gRWRpdG9yV2luZG93LmhlbHBfZGlhbG9nLgogIiIiCiBmcm9tIGh0bWwucGFyc2VyIGltcG9ydCBIVE1MUGFyc2VyCi1mcm9tIG9zLnBhdGggaW1wb3J0IGFic3BhdGgsIGRpcm5hbWUsIGlzZGlyLCBpc2ZpbGUsIGpvaW4KK2Zyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aCwgZGlybmFtZSwgaXNmaWxlLCBqb2luCiBmcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25fdmVyc2lvbgotZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVG9wbGV2ZWwsIEZyYW1lLCBUZXh0LCBTY3JvbGxiYXIsIE1lbnUsIE1lbnVidXR0b24KLWZyb20gdGtpbnRlciBpbXBvcnQgZm9udCBhcyB0a2ZvbnQKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgogCi11c2VfdHRrID0gRmFsc2UgIyB1bnRpbCBhdmFpbGFibGUgdG8gaW1wb3J0Ci1pZiB1c2VfdHRrOgotICAgIGZyb20gdGtpbnRlci50dGsgaW1wb3J0IE1lbnVidXR0b24KK2Zyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIEZyYW1lLCBUZXh0LCBNZW51Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBNZW51YnV0dG9uLCBTY3JvbGxiYXIKK2Zyb20gdGtpbnRlciBpbXBvcnQgZm9udCBhcyB0a2ZvbnQKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogIyMgQWJvdXQgSURMRSAjIwogCkBAIC0xOTcsMTUgKzE5NiwxOCBAQAogICAgICJEaXNwbGF5IGh0bWwgdGV4dCwgc2Nyb2xsYmFyLCBhbmQgdG9jLiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBmaWxlbmFtZSk6CiAgICAgICAgIEZyYW1lLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKLSAgICAgICAgdGV4dCA9IEhlbHBUZXh0KHNlbGYsIGZpbGVuYW1lKQorICAgICAgICAjIGtlZXAgcmVmZXJlbmNlcyB0byB3aWRnZXRzIGZvciB0ZXN0IGFjY2Vzcy4KKyAgICAgICAgc2VsZi50ZXh0ID0gdGV4dCA9IEhlbHBUZXh0KHNlbGYsIGZpbGVuYW1lKQogICAgICAgICBzZWxmWydiYWNrZ3JvdW5kJ10gPSB0ZXh0WydiYWNrZ3JvdW5kJ10KLSAgICAgICAgc2Nyb2xsID0gU2Nyb2xsYmFyKHNlbGYsIGNvbW1hbmQ9dGV4dC55dmlldykKKyAgICAgICAgc2VsZi50b2MgPSB0b2MgPSBzZWxmLnRvY19tZW51KHRleHQpCisgICAgICAgIHNlbGYuc2Nyb2xsID0gc2Nyb2xsID0gU2Nyb2xsYmFyKHNlbGYsIGNvbW1hbmQ9dGV4dC55dmlldykKICAgICAgICAgdGV4dFsneXNjcm9sbGNvbW1hbmQnXSA9IHNjcm9sbC5zZXQKKwogICAgICAgICBzZWxmLnJvd2NvbmZpZ3VyZSgwLCB3ZWlnaHQ9MSkKICAgICAgICAgc2VsZi5jb2x1bW5jb25maWd1cmUoMSwgd2VpZ2h0PTEpICAjIHRleHQKLSAgICAgICAgc2VsZi50b2NfbWVudSh0ZXh0KS5ncmlkKGNvbHVtbj0wLCByb3c9MCwgc3RpY2t5PSdudycpCi0gICAgICAgIHRleHQuZ3JpZChjb2x1bW49MSwgcm93PTAsIHN0aWNreT0nbnNldycpCi0gICAgICAgIHNjcm9sbC5ncmlkKGNvbHVtbj0yLCByb3c9MCwgc3RpY2t5PSducycpCisgICAgICAgIHRvYy5ncmlkKHJvdz0wLCBjb2x1bW49MCwgc3RpY2t5PSdudycpCisgICAgICAgIHRleHQuZ3JpZChyb3c9MCwgY29sdW1uPTEsIHN0aWNreT0nbnNldycpCisgICAgICAgIHNjcm9sbC5ncmlkKHJvdz0wLCBjb2x1bW49Miwgc3RpY2t5PSducycpCiAKICAgICBkZWYgdG9jX21lbnUoc2VsZiwgdGV4dCk6CiAgICAgICAgICJDcmVhdGUgdGFibGUgb2YgY29udGVudHMgYXMgZHJvcC1kb3duIG1lbnUuIgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaGVscC50eHQgYi9MaWIvaWRsZWxpYi9oZWxwLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlmYmUwYi4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9oZWxwLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDM3MiArMCwwIEBACi1UaGlzIGZpbGUsIGlkbGVsaWIvaGVscC50eHQgaXMgb3V0LW9mLWRhdGUgYW5kIG5vIGxvbmdlciB1c2VkIGJ5IElkbGUuCi1JdCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZSwgcG9zc2libHkgaW4gMy42Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVtTZWUgdGhlIGVuZCBvZiB0aGlzIGZpbGUgZm9yICoqIFRJUFMgKiogb24gdXNpbmcgSURMRSAhIV0KLQotSURMRSBpcyB0aGUgUHl0aG9uIElERSBidWlsdCB3aXRoIHRoZSB0a2ludGVyIEdVSSB0b29sa2l0LgotCi1JRExFIGhhcyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOgotLWNvZGVkIGluIDEwMCUgcHVyZSBQeXRob24sIHVzaW5nIHRoZSB0a2ludGVyIEdVSSB0b29sa2l0Ci0tY3Jvc3MtcGxhdGZvcm06IHdvcmtzIG9uIFdpbmRvd3MsIFVuaXgsIGFuZCBPUyBYCi0tbXVsdGktd2luZG93IHRleHQgZWRpdG9yIHdpdGggbXVsdGlwbGUgdW5kbywgUHl0aG9uIGNvbG9yaXppbmcsIHNtYXJ0IGluZGVudCwKLWNhbGwgdGlwcywgYW5kIG1hbnkgb3RoZXIgZmVhdHVyZXMKLS1QeXRob24gc2hlbGwgd2luZG93IChhLmsuYSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlcikKLS1kZWJ1Z2dlciAobm90IGNvbXBsZXRlLCBidXQgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMsIHZpZXcgYW5kIHN0ZXApCi0KLU1lbnVzOgotCi1JRExFIGhhcyB0d28gd2luZG93IHR5cGVzIHRoZSBTaGVsbCB3aW5kb3cgYW5kIHRoZSBFZGl0b3Igd2luZG93LiBJdCBpcwotcG9zc2libGUgdG8gaGF2ZSBtdWx0aXBsZSBlZGl0b3Igd2luZG93cyBzaW11bHRhbmVvdXNseS4gSURMRSdzCi1tZW51cyBkeW5hbWljYWxseSBjaGFuZ2UgYmFzZWQgb24gd2hpY2ggd2luZG93IGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gRWFjaCBtZW51Ci1kb2N1bWVudGVkIGJlbG93IGluZGljYXRlcyB3aGljaCB3aW5kb3cgdHlwZSBpdCBpcyBhc3NvY2lhdGVkIHdpdGguIAotCi1GaWxlIE1lbnUgKFNoZWxsIGFuZCBFZGl0b3IpOgotCi0gICAgICAgIE5ldyBGaWxlICAgICAgICAgLS0gQ3JlYXRlIGEgbmV3IGZpbGUgZWRpdGluZyB3aW5kb3cKLSAgICAgICAgT3Blbi4uLiAgICAgICAgICAtLSBPcGVuIGFuIGV4aXN0aW5nIGZpbGUKLSAgICAgICAgT3BlbiBNb2R1bGUuLi4gICAtLSBPcGVuIGFuIGV4aXN0aW5nIG1vZHVsZSAoc2VhcmNoZXMgc3lzLnBhdGgpCi0gICAgICAgIFJlY2VudCBGaWxlcy4uLiAgLS0gT3BlbiBhIGxpc3Qgb2YgcmVjZW50IGZpbGVzCi0gICAgICAgIENsYXNzIEJyb3dzZXIgICAgLS0gU2hvdyBjbGFzc2VzIGFuZCBtZXRob2RzIGluIGN1cnJlbnQgZmlsZQotICAgICAgICBQYXRoIEJyb3dzZXIgICAgIC0tIFNob3cgc3lzLnBhdGggZGlyZWN0b3JpZXMsIG1vZHVsZXMsIGNsYXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1ldGhvZHMKLSAgICAgICAgLS0tCi0gICAgICAgIFNhdmUgICAgICAgICAgICAgLS0gU2F2ZSBjdXJyZW50IHdpbmRvdyB0byB0aGUgYXNzb2NpYXRlZCBmaWxlICh1bnNhdmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93cyBoYXZlIGEgKiBiZWZvcmUgYW5kIGFmdGVyIHRoZSB3aW5kb3cgdGl0bGUpCi0KLSAgICAgICAgU2F2ZSBBcy4uLiAgICAgICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIG5ldyBmaWxlLCB3aGljaCBiZWNvbWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFzc29jaWF0ZWQgZmlsZQotICAgICAgICBTYXZlIENvcHkgQXMuLi4gIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gZGlmZmVyZW50IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGNoYW5naW5nIHRoZSBhc3NvY2lhdGVkIGZpbGUKLSAgICAgICAgLS0tCi0gICAgICAgIFByaW50IFdpbmRvdyAgICAgLS0gUHJpbnQgdGhlIGN1cnJlbnQgd2luZG93Ci0gICAgICAgIC0tLQotICAgICAgICBDbG9zZSAgICAgICAgICAgIC0tIENsb3NlIGN1cnJlbnQgd2luZG93IChhc2tzIHRvIHNhdmUgaWYgdW5zYXZlZCkKLSAgICAgICAgRXhpdCAgICAgICAgICAgICAtLSBDbG9zZSBhbGwgd2luZG93cywgcXVpdCAoYXNrcyB0byBzYXZlIGlmIHVuc2F2ZWQpCi0KLUVkaXQgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgVW5kbyAgICAgICAgICAgICAtLSBVbmRvIGxhc3QgY2hhbmdlIHRvIGN1cnJlbnQgd2luZG93Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgbWF4aW11bSBvZiAxMDAwIGNoYW5nZXMgbWF5IGJlIHVuZG9uZSkKLSAgICAgICAgUmVkbyAgICAgICAgICAgICAtLSBSZWRvIGxhc3QgdW5kb25lIGNoYW5nZSB0byBjdXJyZW50IHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgQ3V0ICAgICAgICAgICAgICAtLSBDb3B5IGEgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gZGVsZXRlIHRoZSBzZWxlY3Rpb24KLSAgICAgICAgQ29weSAgICAgICAgICAgICAtLSBDb3B5IHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZAotICAgICAgICBQYXN0ZSAgICAgICAgICAgIC0tIEluc2VydCBzeXN0ZW0td2lkZSBjbGlwYm9hcmQgaW50byB3aW5kb3cKLSAgICAgICAgU2VsZWN0IEFsbCAgICAgICAtLSBTZWxlY3QgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZWRpdCBidWZmZXIKLSAgICAgICAgLS0tCi0gICAgICAgIEZpbmQuLi4gICAgICAgICAgLS0gT3BlbiBhIHNlYXJjaCBkaWFsb2cgYm94IHdpdGggbWFueSBvcHRpb25zCi0gICAgICAgIEZpbmQgQWdhaW4gICAgICAgLS0gUmVwZWF0IGxhc3Qgc2VhcmNoCi0gICAgICAgIEZpbmQgU2VsZWN0aW9uICAgLS0gU2VhcmNoIGZvciB0aGUgc3RyaW5nIGluIHRoZSBzZWxlY3Rpb24KLSAgICAgICAgRmluZCBpbiBGaWxlcy4uLiAtLSBPcGVuIGEgc2VhcmNoIGRpYWxvZyBib3ggZm9yIHNlYXJjaGluZyBmaWxlcwotICAgICAgICBSZXBsYWNlLi4uICAgICAgIC0tIE9wZW4gYSBzZWFyY2gtYW5kLXJlcGxhY2UgZGlhbG9nIGJveAotICAgICAgICBHbyB0byBMaW5lICAgICAgIC0tIEFzayBmb3IgYSBsaW5lIG51bWJlciBhbmQgc2hvdyB0aGF0IGxpbmUKLSAgICAgICAgRXhwYW5kIFdvcmQgICAgICAtLSBFeHBhbmQgdGhlIHdvcmQgeW91IGhhdmUgdHlwZWQgdG8gbWF0Y2ggYW5vdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQgaW4gdGhlIHNhbWUgYnVmZmVyOyByZXBlYXQgdG8gZ2V0IGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgZXhwYW5zaW9uCi0gICAgICAgIFNob3cgQ2FsbHRpcCAgICAgLS0gQWZ0ZXIgYW4gdW5jbG9zZWQgcGFyZW50aGVzaXMgZm9yIGEgZnVuY3Rpb24sIG9wZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHNtYWxsIHdpbmRvdyB3aXRoIGZ1bmN0aW9uIHBhcmFtZXRlciBoaW50cwotICAgICAgICBTaG93IFBhcmVucyAgICAgIC0tIEhpZ2hsaWdodCB0aGUgc3Vycm91bmRpbmcgcGFyZW50aGVzaXMKLSAgICAgICAgU2hvdyBDb21wbGV0aW9ucyAtLSBPcGVuIGEgc2Nyb2xsIHdpbmRvdyBhbGxvd2luZyBzZWxlY3Rpb24ga2V5d29yZHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYXR0cmlidXRlcy4gKHNlZSAnKlRJUFMqJywgYmVsb3cpCi0KLUZvcm1hdCBNZW51IChFZGl0b3Igd2luZG93IG9ubHkpOgotCi0gICAgICAgIEluZGVudCBSZWdpb24gICAgICAgLS0gU2hpZnQgc2VsZWN0ZWQgbGluZXMgcmlnaHQgYnkgdGhlIGluZGVudCB3aWR0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDQgc3BhY2VzKQotICAgICAgICBEZWRlbnQgUmVnaW9uICAgICAgIC0tIFNoaWZ0IHNlbGVjdGVkIGxpbmVzIGxlZnQgYnkgdGhlIGluZGVudCB3aWR0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDQgc3BhY2VzKQotICAgICAgICBDb21tZW50IE91dCBSZWdpb24gIC0tIEluc2VydCAjIyBpbiBmcm9udCBvZiBzZWxlY3RlZCBsaW5lcwotICAgICAgICBVbmNvbW1lbnQgUmVnaW9uICAgIC0tIFJlbW92ZSBsZWFkaW5nICMgb3IgIyMgZnJvbSBzZWxlY3RlZCBsaW5lcwotICAgICAgICBUYWJpZnkgUmVnaW9uICAgICAgIC0tIFR1cm5zICpsZWFkaW5nKiBzdHJldGNoZXMgb2Ygc3BhY2VzIGludG8gdGFicy4KLSAgICAgICAgICAgICAgICAoTm90ZTogV2UgcmVjb21tZW5kIHVzaW5nIDQgc3BhY2UgYmxvY2tzIHRvIGluZGVudCBQeXRob24gY29kZS4pCi0gICAgICAgIFVudGFiaWZ5IFJlZ2lvbiAgICAgLS0gVHVybiAqYWxsKiB0YWJzIGludG8gdGhlIGNvcnJlbnQgbnVtYmVyIG9mIHNwYWNlcwotICAgICAgICBUb2dnbGUgdGFicyAgICAgICAgIC0tIE9wZW4gYSBkaWFsb2cgdG8gc3dpdGNoIGJldHdlZW4gaW5kZW50aW5nIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZXMgYW5kIHRhYnMuCi0gICAgICAgIE5ldyBJbmRlbnQgV2lkdGguLi4gLS0gT3BlbiBhIGRpYWxvZyB0byBjaGFuZ2UgaW5kZW50IHdpZHRoLiAgVGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWQgZGVmYXVsdCBieSB0aGUgUHl0aG9uIGNvbW11bml0eSBpcyA0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VzLgotICAgICAgICBGb3JtYXQgUGFyYWdyYXBoICAgIC0tIFJlZm9ybWF0IHRoZSBjdXJyZW50IGJsYW5rLWxpbmUtc2VwYXJhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoLiBBbGwgbGluZXMgaW4gdGhlIHBhcmFncmFwaCB3aWxsIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkIHRvIGxlc3MgdGhhbiA4MCBjb2x1bW5zLgotICAgICAgICAtLS0KLSAgICAgICAgU3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZSAtLSBSZW1vdmVkIGFueSBzcGFjZSBjaGFyYWN0ZXJzIGFmdGVyIHRoZSBlbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgbGFzdCBub24tc3BhY2UgY2hhcmFjdGVyCi0KLVJ1biBNZW51IChFZGl0b3Igd2luZG93IG9ubHkpOgotCi0gICAgICAgIFB5dGhvbiBTaGVsbCAtLSBPcGVuIG9yIHdha2UgdXAgdGhlIFB5dGhvbiBzaGVsbCB3aW5kb3cKLSAgICAgICAgLS0tCi0gICAgICAgIENoZWNrIE1vZHVsZSAtLSBDaGVjayB0aGUgc3ludGF4IG9mIHRoZSBtb2R1bGUgY3VycmVudGx5IG9wZW4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBFZGl0b3Igd2luZG93LiAgSWYgdGhlIG1vZHVsZSBoYXMgbm90IGJlZW4gc2F2ZWQgSURMRQotICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBwcm9tcHQgdGhlIHVzZXIgdG8gc2F2ZSB0aGUgY29kZS4KLSAgICAgICAgUnVuIE1vZHVsZSAgIC0tIFJlc3RhcnQgdGhlIHNoZWxsIHRvIGNsZWFuIHRoZSBlbnZpcm9ubWVudCwgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZSB0aGUgY3VycmVudGx5IG9wZW4gbW9kdWxlLiBJZiB0aGUgbW9kdWxlIGhhcwotICAgICAgICAgICAgICAgICAgICAgICAgbm90IGJlZW4gc2F2ZWQgSURMRSB3aWxsIHByb21wdCB0aGUgdXNlciB0byBzYXZlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgY29kZS4KLQotU2hlbGwgTWVudSAoU2hlbGwgd2luZG93IG9ubHkpOgotCi0gICAgICAgIFZpZXcgTGFzdCBSZXN0YXJ0IC0tIFNjcm9sbCB0aGUgc2hlbGwgd2luZG93IHRvIHRoZSBsYXN0IFNoZWxsIHJlc3RhcnQKLSAgICAgICAgUmVzdGFydCBTaGVsbCAgICAgLS0gUmVzdGFydCB0aGUgc2hlbGwgdG8gY2xlYW4gdGhlIGVudmlyb25tZW50Ci0KLURlYnVnIE1lbnUgKFNoZWxsIHdpbmRvdyBvbmx5KToKLQotICAgICAgICBHbyB0byBGaWxlL0xpbmUgICAtLSBMb29rIGFyb3VuZCB0aGUgaW5zZXJ0IHBvaW50IGZvciBhIGZpbGVuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsaW5lIG51bWJlciwgb3BlbiB0aGUgZmlsZSwgYW5kIHNob3cgdGhlIGxpbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZWZ1bCB0byB2aWV3IHRoZSBzb3VyY2UgbGluZXMgcmVmZXJlbmNlZCBpbiBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24gdHJhY2ViYWNrLiAgQXZhaWxhYmxlIGluIHRoZSBjb250ZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUgb2YgdGhlIFNoZWxsIHdpbmRvdy4KLSAgICAgICAgRGVidWdnZXIgKHRvZ2dsZSkgLS0gVGhpcyBmZWF0dXJlIGlzIG5vdCBjb21wbGV0ZSBhbmQgY29uc2lkZXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlcmltZW50YWwuIFJ1biBjb21tYW5kcyBpbiB0aGUgc2hlbGwgdW5kZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyLgotICAgICAgICBTdGFjayBWaWV3ZXIgICAgICAtLSBTaG93IHRoZSBzdGFjayB0cmFjZWJhY2sgb2YgdGhlIGxhc3QgZXhjZXB0aW9uCi0gICAgICAgIEF1dG8tb3BlbiBTdGFjayBWaWV3ZXIgKHRvZ2dsZSkgLS0gVG9nZ2xlIGF1dG9tYXRpY2FsbHkgb3BlbmluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayB2aWV3ZXIgb24gdW5oYW5kbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uCi0KLU9wdGlvbnMgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgQ29uZmlndXJlIElETEUgLS0gT3BlbiBhIGNvbmZpZ3VyYXRpb24gZGlhbG9nLiAgRm9udHMsIGluZGVudGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBrZXliaW5kaW5ncywgYW5kIGNvbG9yIHRoZW1lcyBtYXkgYmUgYWx0ZXJlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnR1cCBQcmVmZXJlbmNlcyBtYXkgYmUgc2V0LCBhbmQgYWRkaXRpb25hbCBIZWxwCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMgY2FuIGJlIHNwZWNpZmllZC4gIE9uIE9TIFgsIG9wZW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZGlhbG9nIGJ5IHNlbGVjdGluZyBQcmVmZXJlbmNlcwotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYXBwbGljYXRpb24gbWVudS4KLQotICAgICAgICAtLS0KLSAgICAgICAgQ29kZSBDb250ZXh0ICh0b2dnbGUpIC0tIE9wZW4gYSBwYW5lIGF0IHRoZSB0b3Agb2YgdGhlIGVkaXQgd2luZG93Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBzaG93cyB0aGUgYmxvY2sgY29udGV4dCBvZiB0aGUgc2VjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgY29kZSB3aGljaCBpcyBzY3JvbGxpbmcgb2ZmIHRoZSB0b3Agb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuIFRoaXMgaXMgbm90IHByZXNlbnQgaW4gdGhlIFNoZWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cgb25seSB0aGUgRWRpdG9yIHdpbmRvdy4KLQotV2luZG93IE1lbnUgKFNoZWxsIGFuZCBFZGl0b3IpOgotCi0gICAgICAgIFpvb20gSGVpZ2h0IC0tIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIG5vcm1hbCBzaXplICg0MHg4MCBpbml0aWFsCi0gICAgICAgIHNldHRpbmcpIGFuZCBtYXhpbXVtIGhlaWdodC4gIFRoZSBpbml0aWFsIHNpemUgaXMgaW4gdGhlIENvbmZpZ3VyZQotICAgICAgICBJRExFIGRpYWxvZyB1bmRlciB0aGUgZ2VuZXJhbCB0YWIuCi0gICAgICAgIC0tLQotICAgICAgICBUaGUgcmVzdCBvZiB0aGlzIG1lbnUgbGlzdHMgdGhlIG5hbWVzIG9mIGFsbCBvcGVuIHdpbmRvd3M7Ci0gICAgICAgIHNlbGVjdCBvbmUgdG8gYnJpbmcgaXQgdG8gdGhlIGZvcmVncm91bmQgKGRlaWNvbmlmeWluZyBpdCBpZgotICAgICAgICBuZWNlc3NhcnkpLgotCi1IZWxwIE1lbnU6Ci0KLSAgICAgICAgQWJvdXQgSURMRSAgLS0gVmVyc2lvbiwgY29weXJpZ2h0LCBsaWNlbnNlLCBjcmVkaXRzCi0gICAgICAgIC0tLQotICAgICAgICBJRExFIEhlbHAgICAtLSBEaXNwbGF5IHRoaXMgZmlsZSB3aGljaCBpcyBhIGhlbHAgZmlsZSBmb3IgSURMRQotICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxpbmcgdGhlIG1lbnUgb3B0aW9ucywgYmFzaWMgZWRpdGluZyBhbmQgbmF2aWdhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIG90aGVyIHRpcHMuCi0gICAgICAgIFB5dGhvbiBEb2NzIC0tIEFjY2VzcyBsb2NhbCBQeXRob24gZG9jdW1lbnRhdGlvbiwgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLiAgT3Igd2lsbCBzdGFydCBhIHdlYiBicm93c2VyIGFuZCBvcGVuCi0gICAgICAgICAgICAgICAgICAgICAgIGRvY3MucHl0aG9uLm9yZyBzaG93aW5nIHRoZSBsYXRlc3QgUHl0aG9uIGRvY3VtZW50YXRpb24uCi0gICAgICAgIC0tLQotICAgICAgICBBZGRpdGlvbmFsIGhlbHAgc291cmNlcyBtYXkgYmUgYWRkZWQgaGVyZSB3aXRoIHRoZSBDb25maWd1cmUgSURMRQotICAgICAgICBkaWFsb2cgdW5kZXIgdGhlIEdlbmVyYWwgdGFiLgotCi1FZGl0b3IgY29udGV4dCBtZW51IChSaWdodC1jbGljayAvIENvbnRyb2wtY2xpY2sgb24gT1MgWCBpbiBFZGl0IHdpbmRvdyk6Ci0KLSAgICAgICAgQ3V0ICAgICAgICAgICAgICAtLSBDb3B5IGEgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gZGVsZXRlIHRoZSBzZWxlY3Rpb24KLSAgICAgICAgQ29weSAgICAgICAgICAgICAtLSBDb3B5IHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZAotICAgICAgICBQYXN0ZSAgICAgICAgICAgIC0tIEluc2VydCBzeXN0ZW0td2lkZSBjbGlwYm9hcmQgaW50byB3aW5kb3cKLSAgICAgICAgU2V0IEJyZWFrcG9pbnQgICAtLSBTZXRzIGEgYnJlYWtwb2ludC4gQnJlYWtwb2ludHMgYXJlIG9ubHkgZW5hYmxlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIG9wZW4uCi0gICAgICAgIENsZWFyIEJyZWFrcG9pbnQgLS0gQ2xlYXJzIHRoZSBicmVha3BvaW50IG9uIHRoYXQgbGluZQotCi1TaGVsbCBjb250ZXh0IG1lbnUgKFJpZ2h0LWNsaWNrIC8gQ29udHJvbC1jbGljayBvbiBPUyBYIGluIFNoZWxsIHdpbmRvdyk6Ci0KLSAgICAgICAgQ3V0ICAgICAgICAgICAgICAtLSBDb3B5IGEgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gZGVsZXRlIHRoZSBzZWxlY3Rpb24KLSAgICAgICAgQ29weSAgICAgICAgICAgICAtLSBDb3B5IHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZAotICAgICAgICBQYXN0ZSAgICAgICAgICAgIC0tIEluc2VydCBzeXN0ZW0td2lkZSBjbGlwYm9hcmQgaW50byB3aW5kb3cKLSAgICAgICAgLS0tCi0gICAgICAgIEdvIHRvIGZpbGUvbGluZSAgLS0gU2FtZSBhcyBpbiBEZWJ1ZyBtZW51Ci0KLQotKiogVElQUyAqKgotPT09PT09PT09PQotCi1BZGRpdGlvbmFsIEhlbHAgU291cmNlczoKLQotICAgICAgICBXaW5kb3dzIHVzZXJzIGNhbiBHb29nbGUgb24gem9wZXNoZWxmLmNobSB0byBhY2Nlc3MgWm9wZSBoZWxwIGZpbGVzIGluCi0gICAgICAgIHRoZSBXaW5kb3dzIGhlbHAgZm9ybWF0LiAgVGhlIEFkZGl0aW9uYWwgSGVscCBTb3VyY2VzIGZlYXR1cmUgb2YgdGhlCi0gICAgICAgIGNvbmZpZ3VyYXRpb24gR1VJIHN1cHBvcnRzIC5jaG0sIGFsb25nIHdpdGggYW55IG90aGVyIGZpbGV0eXBlcwotICAgICAgICBzdXBwb3J0ZWQgYnkgeW91ciBicm93c2VyLiAgU3VwcGx5IGEgTWVudSBJdGVtIHRpdGxlLCBhbmQgZW50ZXIgdGhlCi0gICAgICAgIGxvY2F0aW9uIGluIHRoZSBIZWxwIEZpbGUgUGF0aCBzbG90IG9mIHRoZSBOZXcgSGVscCBTb3VyY2UgZGlhbG9nLiAgVXNlCi0gICAgICAgIGh0dHA6Ly8gYW5kL29yIHd3dy4gdG8gaWRlbnRpZnkgZXh0ZXJuYWwgVVJMcywgb3IgZG93bmxvYWQgdGhlIGZpbGUgYW5kCi0gICAgICAgIGJyb3dzZSBmb3IgaXRzIHBhdGggb24geW91ciBtYWNoaW5lIHVzaW5nIHRoZSBCcm93c2UgYnV0dG9uLgotCi0gICAgICAgIEFsbCB1c2VycyBjYW4gYWNjZXNzIHRoZSBleHRlbnNpdmUgc291cmNlcyBvZiBoZWxwLCBpbmNsdWRpbmcKLSAgICAgICAgdHV0b3JpYWxzLCBhdmFpbGFibGUgYXQgZG9jcy5weXRob24ub3JnLiAgU2VsZWN0ZWQgVVJMcyBjYW4gYmUgYWRkZWQKLSAgICAgICAgb3IgcmVtb3ZlZCBmcm9tIHRoZSBIZWxwIG1lbnUgYXQgYW55IHRpbWUgdXNpbmcgQ29uZmlndXJlIElETEUuCi0KLUJhc2ljIGVkaXRpbmcgYW5kIG5hdmlnYXRpb246Ci0KLSAgICAgICAgQmFja3NwYWNlIGRlbGV0ZXMgY2hhciB0byB0aGUgbGVmdDsgREVMIGRlbGV0ZXMgY2hhciB0byB0aGUgcmlnaHQuCi0gICAgICAgIENvbnRyb2wtYmFja3NwYWNlIGRlbGV0ZXMgd29yZCBsZWZ0LCBDb250cm9sLURFTCBkZWxldGVzIHdvcmQgcmlnaHQuCi0gICAgICAgIEFycm93IGtleXMgYW5kIFBhZ2UgVXAvRG93biBtb3ZlIGFyb3VuZC4KLSAgICAgICAgQ29udHJvbC1sZWZ0L3JpZ2h0IEFycm93IG1vdmVzIGJ5IHdvcmRzIGluIGEgc3RyYW5nZSBidXQgdXNlZnVsIHdheS4KLSAgICAgICAgSG9tZS9FbmQgZ28gdG8gYmVnaW4vZW5kIG9mIGxpbmUuCi0gICAgICAgIENvbnRyb2wtSG9tZS9FbmQgZ28gdG8gYmVnaW4vZW5kIG9mIGZpbGUuCi0gICAgICAgIFNvbWUgdXNlZnVsIEVtYWNzIGJpbmRpbmdzIGFyZSBpbmhlcml0ZWQgZnJvbSBUY2wvVGs6Ci0gICAgICAgICAgICAgICAgQ29udHJvbC1hICAgICBiZWdpbm5pbmcgb2YgbGluZQotICAgICAgICAgICAgICAgIENvbnRyb2wtZSAgICAgZW5kIG9mIGxpbmUKLSAgICAgICAgICAgICAgICBDb250cm9sLWsgICAgIGtpbGwgbGluZSAoYnV0IGRvZXNuJ3QgcHV0IGl0IGluIGNsaXBib2FyZCkKLSAgICAgICAgICAgICAgICBDb250cm9sLWwgICAgIGNlbnRlciB3aW5kb3cgYXJvdW5kIHRoZSBpbnNlcnRpb24gcG9pbnQKLSAgICAgICAgU3RhbmRhcmQga2V5YmluZGluZ3MgKGxpa2UgQ29udHJvbC1jIHRvIGNvcHkgYW5kIENvbnRyb2wtdiB0bwotICAgICAgICBwYXN0ZSkgbWF5IHdvcmsuICBLZXliaW5kaW5ncyBhcmUgc2VsZWN0ZWQgaW4gdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZy4KLQotQXV0b21hdGljIGluZGVudGF0aW9uOgotCi0gICAgICAgIEFmdGVyIGEgYmxvY2stb3BlbmluZyBzdGF0ZW1lbnQsIHRoZSBuZXh0IGxpbmUgaXMgaW5kZW50ZWQgYnkgNCBzcGFjZXMKLSAgICAgICAgKGluIHRoZSBQeXRob24gU2hlbGwgd2luZG93IGJ5IG9uZSB0YWIpLiAgQWZ0ZXIgY2VydGFpbiBrZXl3b3JkcwotICAgICAgICAoYnJlYWssIHJldHVybiBldGMuKSB0aGUgbmV4dCBsaW5lIGlzIGRlZGVudGVkLiAgSW4gbGVhZGluZwotICAgICAgICBpbmRlbnRhdGlvbiwgQmFja3NwYWNlIGRlbGV0ZXMgdXAgdG8gNCBzcGFjZXMgaWYgdGhleSBhcmUgdGhlcmUuICBUYWIKLSAgICAgICAgaW5zZXJ0cyBzcGFjZXMgKGluIHRoZSBQeXRob24gU2hlbGwgd2luZG93IG9uZSB0YWIpLCBudW1iZXIgZGVwZW5kcyBvbgotICAgICAgICBJbmRlbnQgV2lkdGguIEN1cnJlbnRseSB0YWJzIGFyZSByZXN0cmljdGVkIHRvIGZvdXIgc3BhY2VzIGR1ZQotICAgICAgICB0byBUY2wvVGsgbGltaXRhdGlvbnMuCi0KLSAgICAgICAgU2VlIGFsc28gdGhlIGluZGVudC9kZWRlbnQgcmVnaW9uIGNvbW1hbmRzIGluIHRoZSBlZGl0IG1lbnUuCi0KLUNvbXBsZXRpb25zOgotCi0gICAgICAgIENvbXBsZXRpb25zIGFyZSBzdXBwbGllZCBmb3IgZnVuY3Rpb25zLCBjbGFzc2VzLCBhbmQgYXR0cmlidXRlcyBvZgotICAgICAgICBjbGFzc2VzLCBib3RoIGJ1aWx0LWluIGFuZCB1c2VyLWRlZmluZWQuICBDb21wbGV0aW9ucyBhcmUgYWxzbyBwcm92aWRlZAotICAgICAgICBmb3IgZmlsZW5hbWVzLgotCi0gICAgICAgIFRoZSBBdXRvQ29tcGxldGVXaW5kb3cgKEFDVykgd2lsbCBvcGVuIGFmdGVyIGEgcHJlZGVmaW5lZCBkZWxheQotICAgICAgICAoZGVmYXVsdCBpcyB0d28gc2Vjb25kcykgYWZ0ZXIgYSAnLicgb3IgKGluIGEgc3RyaW5nKSBhbiBvcy5zZXAgaXMKLSAgICAgICAgdHlwZWQuICBJZiBhZnRlciBvbmUgb2YgdGhvc2UgY2hhcmFjdGVycyAocGx1cyB6ZXJvIG9yIG1vcmUgb3RoZXIKLSAgICAgICAgY2hhcmFjdGVycykgYSB0YWIgaXMgdHlwZWQgdGhlIEFDVyB3aWxsIG9wZW4gaW1tZWRpYXRlbHkgaWYgYSBwb3NzaWJsZQotICAgICAgICBjb250aW51YXRpb24gaXMgZm91bmQuCi0KLSAgICAgICAgSWYgdGhlcmUgaXMgb25seSBvbmUgcG9zc2libGUgY29tcGxldGlvbiBmb3IgdGhlIGNoYXJhY3RlcnMgZW50ZXJlZCwgYQotICAgICAgICB0YWIgd2lsbCBzdXBwbHkgdGhhdCBjb21wbGV0aW9uIHdpdGhvdXQgb3BlbmluZyB0aGUgQUNXLgotCi0gICAgICAgICdTaG93IENvbXBsZXRpb25zJyB3aWxsIGZvcmNlIG9wZW4gYSBjb21wbGV0aW9ucyB3aW5kb3csIGJ5IGRlZmF1bHQgdGhlCi0gICAgICAgIENvbnRyb2wtc3BhY2Uga2V5cyB3aWxsIG9wZW4gYSBjb21wbGV0aW9ucyB3aW5kb3cuICBJbiBhbiBlbXB0eQotICAgICAgICBzdHJpbmcsIHRoaXMgd2lsbCBjb250YWluIHRoZSBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBPbiBhCi0gICAgICAgIGJsYW5rIGxpbmUsIGl0IHdpbGwgY29udGFpbiB0aGUgYnVpbHQtaW4gYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kCi0gICAgICAgIGNsYXNzZXMgaW4gdGhlIGN1cnJlbnQgbmFtZSBzcGFjZXMsIHBsdXMgYW55IG1vZHVsZXMgaW1wb3J0ZWQuICBJZiBzb21lCi0gICAgICAgIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIGVudGVyZWQsIHRoZSBBQ1cgd2lsbCBhdHRlbXB0IHRvIGJlIG1vcmUgc3BlY2lmaWMuCi0KLSAgICAgICAgSWYgc3RyaW5nIG9mIGNoYXJhY3RlcnMgaXMgdHlwZWQsIHRoZSBBQ1cgc2VsZWN0aW9uIHdpbGwganVtcCB0byB0aGUKLSAgICAgICAgZW50cnkgbW9zdCBjbG9zZWx5IG1hdGNoaW5nIHRob3NlIGNoYXJhY3RlcnMuIEVudGVyaW5nIGEgdGFiIHdpbGwgY2F1c2UKLSAgICAgICAgdGhlIGxvbmdlc3Qgbm9uLWFtYmlndW91cyBtYXRjaCB0byBiZSBlbnRlcmVkIGluIHRoZSBFZGl0IHdpbmRvdyBvcgotICAgICAgICBTaGVsbC4gIFR3byB0YWJzIGluIGEgcm93IHdpbGwgc3VwcGx5IHRoZSBjdXJyZW50IEFDVyBzZWxlY3Rpb24sIGFzCi0gICAgICAgIHdpbGwgcmV0dXJuIG9yIGEgZG91YmxlIGNsaWNrLiAgQ3Vyc29yIGtleXMsIFBhZ2UgVXAvRG93biwgbW91c2UKLSAgICAgICAgc2VsZWN0aW9uLCBhbmQgdGhlIHNjcm9sbCB3aGVlbCBhbGwgb3BlcmF0ZSBvbiB0aGUgQUNXLgotCi0gICAgICAgICJIaWRkZW4iIGF0dHJpYnV0ZXMgY2FuIGJlIGFjY2Vzc2VkIGJ5IHR5cGluZyB0aGUgYmVnaW5uaW5nIG9mIGhpZGRlbgotICAgICAgICBuYW1lIGFmdGVyIGEgJy4nLCAgZS5nLiAnXycuICBUaGlzIGFsbG93cyBhY2Nlc3MgdG8gbW9kdWxlcyB3aXRoCi0gICAgICAgICdfX2FsbF9fJyBzZXQsIG9yIHRvIGNsYXNzLXByaXZhdGUgYXR0cmlidXRlcy4KLQotICAgICAgICBDb21wbGV0aW9ucyBhbmQgdGhlICdFeHBhbmQgV29yZCcgZmFjaWxpdHkgY2FuIHNhdmUgYSBsb3Qgb2YgdHlwaW5nIQotCi0gICAgICAgIENvbXBsZXRpb25zIGFyZSBjdXJyZW50bHkgbGltaXRlZCB0byB0aG9zZSBpbiB0aGUgbmFtZXNwYWNlcy4gIE5hbWVzIGluCi0gICAgICAgIGFuIEVkaXRvciB3aW5kb3cgd2hpY2ggYXJlIG5vdCB2aWEgX19tYWluX18gb3Igc3lzLm1vZHVsZXMgd2lsbCBub3QgYmUKLSAgICAgICAgZm91bmQuICBSdW4gdGhlIG1vZHVsZSBvbmNlIHdpdGggeW91ciBpbXBvcnRzIHRvIGNvcnJlY3QgdGhpcwotICAgICAgICBzaXR1YXRpb24uICBOb3RlIHRoYXQgSURMRSBpdHNlbGYgcGxhY2VzIHF1aXRlIGEgZmV3IG1vZHVsZXMgaW4KLSAgICAgICAgc3lzLm1vZHVsZXMsIHNvIG11Y2ggY2FuIGJlIGZvdW5kIGJ5IGRlZmF1bHQsIGUuZy4gdGhlIHJlIG1vZHVsZS4KLQotICAgICAgICBJZiB5b3UgZG9uJ3QgbGlrZSB0aGUgQUNXIHBvcHBpbmcgdXAgdW5iaWRkZW4sIHNpbXBseSBtYWtlIHRoZSBkZWxheQotICAgICAgICBsb25nZXIgb3IgZGlzYWJsZSB0aGUgZXh0ZW5zaW9uLiAgT3IgYW5vdGhlciBvcHRpb24gaXMgdGhlIGRlbGF5IGNvdWxkCi0gICAgICAgIGJlIHNldCB0byB6ZXJvLiBBbm90aGVyIGFsdGVybmF0aXZlIHRvIHByZXZlbnRpbmcgQUNXIHBvcHVwcyBpcyB0bwotICAgICAgICBkaXNhYmxlIHRoZSBjYWxsIHRpcHMgZXh0ZW5zaW9uLgotCi1QeXRob24gU2hlbGwgd2luZG93OgotCi0gICAgICAgIENvbnRyb2wtYyBpbnRlcnJ1cHRzIGV4ZWN1dGluZyBjb21tYW5kLgotICAgICAgICBDb250cm9sLWQgc2VuZHMgZW5kLW9mLWZpbGU7IGNsb3NlcyB3aW5kb3cgaWYgdHlwZWQgYXQgPj4+IHByb21wdC4KLSAgICAgICAgQWx0LS8gZXhwYW5kIHdvcmQgaXMgYWxzbyB1c2VmdWwgdG8gcmVkdWNlIHR5cGluZy4KLQotICAgIENvbW1hbmQgaGlzdG9yeToKLQotICAgICAgICBBbHQtcCByZXRyaWV2ZXMgcHJldmlvdXMgY29tbWFuZCBtYXRjaGluZyB3aGF0IHlvdSBoYXZlIHR5cGVkLiBPbiBPUyBYCi0gICAgICAgIHVzZSBDb250cm9sLXAuCi0gICAgICAgIEFsdC1uIHJldHJpZXZlcyBuZXh0LiBPbiBPUyBYIHVzZSBDb250cm9sLW4uCi0gICAgICAgIFJldHVybiB3aGlsZSBjdXJzb3IgaXMgb24gYSBwcmV2aW91cyBjb21tYW5kIHJldHJpZXZlcyB0aGF0IGNvbW1hbmQuCi0KLSAgICBTeW50YXggY29sb3JzOgotCi0gICAgICAgIFRoZSBjb2xvcmluZyBpcyBhcHBsaWVkIGluIGEgYmFja2dyb3VuZCAidGhyZWFkIiwgc28geW91IG1heQotICAgICAgICBvY2Nhc2lvbmFsbHkgc2VlIHVuY29sb3JpemVkIHRleHQuICBUbyBjaGFuZ2UgdGhlIGNvbG9yCi0gICAgICAgIHNjaGVtZSwgdXNlIHRoZSBDb25maWd1cmUgSURMRSAvIEhpZ2hsaWdodGluZyBkaWFsb2cuCi0KLSAgICBQeXRob24gZGVmYXVsdCBzeW50YXggY29sb3JzOgotCi0gICAgICAgIEtleXdvcmRzICAgICAgICBvcmFuZ2UKLSAgICAgICAgQnVpbHRpbnMgICAgICAgIHJveWFsIHB1cnBsZQotICAgICAgICBTdHJpbmdzICAgICAgICAgZ3JlZW4KLSAgICAgICAgQ29tbWVudHMgICAgICAgIHJlZAotICAgICAgICBEZWZpbml0aW9ucyAgICAgYmx1ZQotCi0gICAgU2hlbGwgZGVmYXVsdCBjb2xvcnM6Ci0KLSAgICAgICAgQ29uc29sZSBvdXRwdXQgIGJyb3duCi0gICAgICAgIHN0ZG91dCAgICAgICAgICBibHVlCi0gICAgICAgIHN0ZGVyciAgICAgICAgICByZWQKLSAgICAgICAgc3RkaW4gICAgICAgICAgIGJsYWNrCi0KLU90aGVyIHByZWZlcmVuY2VzOgotCi0gICAgICAgIFRoZSBmb250IHByZWZlcmVuY2VzLCBoaWdobGlnaHRpbmcsIGtleXMsIGFuZCBnZW5lcmFsIHByZWZlcmVuY2VzIGNhbgotICAgICAgICBiZSBjaGFuZ2VkIHZpYSB0aGUgQ29uZmlndXJlIElETEUgbWVudSBvcHRpb24uICBCZSBzdXJlIHRvIG5vdGUgdGhhdAotICAgICAgICBrZXlzIGNhbiBiZSB1c2VyIGRlZmluZWQsIElETEUgc2hpcHMgd2l0aCBmb3VyIGJ1aWx0IGluIGtleSBzZXRzLiBJbgotICAgICAgICBhZGRpdGlvbiBhIHVzZXIgY2FuIGNyZWF0ZSBhIGN1c3RvbSBrZXkgc2V0IGluIHRoZSBDb25maWd1cmUgSURMRQotICAgICAgICBkaWFsb2cgdW5kZXIgdGhlIGtleXMgdGFiLgotCi1Db21tYW5kIGxpbmUgdXNhZ2U6Ci0KLSAgICAgICAgRW50ZXIgaWRsZSAtaCBhdCB0aGUgY29tbWFuZCBwcm9tcHQgdG8gZ2V0IGEgdXNhZ2UgbWVzc2FnZS4KLQotICAgICAgICBpZGxlLnB5IFstYyBjb21tYW5kXSBbLWRdIFstZV0gWy1zXSBbLXQgdGl0bGVdIFthcmddIC4uLgotCi0gICAgICAgIC1jIGNvbW1hbmQgIHJ1biB0aGlzIGNvbW1hbmQKLSAgICAgICAgLWQgICAgICAgICAgZW5hYmxlIGRlYnVnZ2VyCi0gICAgICAgIC1lICAgICAgICAgIGVkaXQgbW9kZTsgYXJndW1lbnRzIGFyZSBmaWxlcyB0byBiZSBlZGl0ZWQKLSAgICAgICAgLXMgICAgICAgICAgcnVuICRJRExFU1RBUlRVUCBvciAkUFlUSE9OU1RBUlRVUCBmaXJzdAotICAgICAgICAtdCB0aXRsZSAgICBzZXQgdGl0bGUgb2Ygc2hlbGwgd2luZG93Ci0KLSAgICAgICAgSWYgdGhlcmUgYXJlIGFyZ3VtZW50czoKLSAgICAgICAgMS4gSWYgLWUgaXMgdXNlZCwgYXJndW1lbnRzIGFyZSBmaWxlcyBvcGVuZWQgZm9yIGVkaXRpbmcgYW5kIHN5cy5hcmd2Ci0gICAgICAgICAgIHJlZmxlY3RzIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIElETEUgaXRzZWxmLgotICAgICAgICAyLiBPdGhlcndpc2UsIGlmIC1jIGlzIHVzZWQsIGFsbCBhcmd1bWVudHMgYXJlIHBsYWNlZCBpbgotICAgICAgICAgICBzeXMuYXJndlsxOi4uLl0sIHdpdGggc3lzLmFyZ3ZbMF0gc2V0IHRvIC1jLgotICAgICAgICAzLiBPdGhlcndpc2UsIGlmIG5laXRoZXIgLWUgbm9yIC1jIGlzIHVzZWQsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhCi0gICAgICAgICAgIHNjcmlwdCB3aGljaCBpcyBleGVjdXRlZCB3aXRoIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIGluCi0gICAgICAgICAgIHN5cy5hcmd2WzE6Li4uXSAgYW5kIHN5cy5hcmd2WzBdIHNldCB0byB0aGUgc2NyaXB0IG5hbWUuICBJZiB0aGUKLSAgICAgICAgICAgc2NyaXB0IG5hbWUgaXMgLSwgbm8gc2NyaXB0IGlzIGV4ZWN1dGVkIGJ1dCBhbiBpbnRlcmFjdGl2ZSBQeXRob24KLSAgICAgICAgICAgc2Vzc2lvbiBpcyBzdGFydGVkOyB0aGUgYXJndW1lbnRzIGFyZSBzdGlsbCBhdmFpbGFibGUgaW4gc3lzLmFyZ3YuCi0KLVJ1bm5pbmcgd2l0aG91dCBhIHN1YnByb2Nlc3M6IChERVBSRUNBVEVEIGluIFB5dGhvbiAzLjQgc2VlIElzc3VlIDE2MTIzKQotCi0gICAgICAgIElmIElETEUgaXMgc3RhcnRlZCB3aXRoIHRoZSAtbiBjb21tYW5kIGxpbmUgc3dpdGNoIGl0IHdpbGwgcnVuIGluIGEKLSAgICAgICAgc2luZ2xlIHByb2Nlc3MgYW5kIHdpbGwgbm90IGNyZWF0ZSB0aGUgc3VicHJvY2VzcyB3aGljaCBydW5zIHRoZSBSUEMKLSAgICAgICAgUHl0aG9uIGV4ZWN1dGlvbiBzZXJ2ZXIuICBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgUHl0aG9uIGNhbm5vdCBjcmVhdGUKLSAgICAgICAgdGhlIHN1YnByb2Nlc3Mgb3IgdGhlIFJQQyBzb2NrZXQgaW50ZXJmYWNlIG9uIHlvdXIgcGxhdGZvcm0uICBIb3dldmVyLAotICAgICAgICBpbiB0aGlzIG1vZGUgdXNlciBjb2RlIGlzIG5vdCBpc29sYXRlZCBmcm9tIElETEUgaXRzZWxmLiAgQWxzbywgdGhlCi0gICAgICAgIGVudmlyb25tZW50IGlzIG5vdCByZXN0YXJ0ZWQgd2hlbiBSdW4vUnVuIE1vZHVsZSAoRjUpIGlzIHNlbGVjdGVkLiAgSWYKLSAgICAgICAgeW91ciBjb2RlIGhhcyBiZWVuIG1vZGlmaWVkLCB5b3UgbXVzdCByZWxvYWQoKSB0aGUgYWZmZWN0ZWQgbW9kdWxlcyBhbmQKLSAgICAgICAgcmUtaW1wb3J0IGFueSBzcGVjaWZpYyBpdGVtcyAoZS5nLiBmcm9tIGZvbyBpbXBvcnQgYmF6KSBpZiB0aGUgY2hhbmdlcwotICAgICAgICBhcmUgdG8gdGFrZSBlZmZlY3QuICBGb3IgdGhlc2UgcmVhc29ucywgaXQgaXMgcHJlZmVyYWJsZSB0byBydW4gSURMRQotICAgICAgICB3aXRoIHRoZSBkZWZhdWx0IHN1YnByb2Nlc3MgaWYgYXQgYWxsIHBvc3NpYmxlLgotCi1FeHRlbnNpb25zOgotCi0gICAgICAgIElETEUgY29udGFpbnMgYW4gZXh0ZW5zaW9uIGZhY2lsaXR5LiAgU2VlIHRoZSBiZWdpbm5pbmcgb2YKLSAgICAgICAgY29uZmlnLWV4dGVuc2lvbnMuZGVmIGluIHRoZSBpZGxlbGliIGRpcmVjdG9yeSBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KLSAgICAgICAgVGhlIGRlZmF1bHQgZXh0ZW5zaW9ucyBhcmUgY3VycmVudGx5OgotCi0gICAgICAgICAgICAgICAgRm9ybWF0UGFyYWdyYXBoCi0gICAgICAgICAgICAgICAgQXV0b0V4cGFuZAotICAgICAgICAgICAgICAgIFpvb21IZWlnaHQKLSAgICAgICAgICAgICAgICBTY3JpcHRCaW5kaW5nCi0gICAgICAgICAgICAgICAgQ2FsbFRpcHMKLSAgICAgICAgICAgICAgICBQYXJlbk1hdGNoCi0gICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlCi0gICAgICAgICAgICAgICAgQ29kZUNvbnRleHQKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvaGVscF9hYm91dC5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9hYm91dERpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaGVscF9hYm91dC5weQppbmRleCBhOGY3NWQyLi4wNzFiZDNlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9hYm91dERpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CkBAIC0xLDExICsxLDEzIEBACiAiIiJBYm91dCBEaWFsb2cgZm9yIElETEUKIAogIiIiCi0KIGltcG9ydCBvcwogZnJvbSBzeXMgaW1wb3J0IHZlcnNpb24KKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIgaW1wb3J0IHRleHRWaWV3CisKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGV4dHZpZXcKKwogCiBjbGFzcyBBYm91dERpYWxvZyhUb3BsZXZlbCk6CiAgICAgIiIiTW9kYWwgYWJvdXQgZGlhbG9nIGZvciBpZGxlCkBAIC0xMzUsMTcgKzEzNywxOCBAQAogICAgIGRlZiBkaXNwbGF5X3ByaW50ZXJfdGV4dChzZWxmLCB0aXRsZSwgcHJpbnRlcik6CiAgICAgICAgIHByaW50ZXIuX1ByaW50ZXJfX3NldHVwKCkKICAgICAgICAgdGV4dCA9ICdcbicuam9pbihwcmludGVyLl9QcmludGVyX19saW5lcykKLSAgICAgICAgdGV4dFZpZXcudmlld190ZXh0KHNlbGYsIHRpdGxlLCB0ZXh0KQorICAgICAgICB0ZXh0dmlldy52aWV3X3RleHQoc2VsZiwgdGl0bGUsIHRleHQpCiAKICAgICBkZWYgZGlzcGxheV9maWxlX3RleHQoc2VsZiwgdGl0bGUsIGZpbGVuYW1lLCBlbmNvZGluZz1Ob25lKToKICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCBmaWxlbmFtZSkKLSAgICAgICAgdGV4dFZpZXcudmlld19maWxlKHNlbGYsIHRpdGxlLCBmbiwgZW5jb2RpbmcpCisgICAgICAgIHRleHR2aWV3LnZpZXdfZmlsZShzZWxmLCB0aXRsZSwgZm4sIGVuY29kaW5nKQogCiAgICAgZGVmIE9rKHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICBzZWxmLmRlc3Ryb3koKQogCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9oZWxwYWJvdXQnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hlbHBfYWJvdXQnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oQWJvdXREaWFsb2cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weSBiL0xpYi9pZGxlbGliL2hpc3RvcnkucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvSWRsZUhpc3RvcnkucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2hpc3RvcnkucHkKaW5kZXggMDc4YWYyOS4uNTZmNTNhMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvSWRsZUhpc3RvcnkucHkKKysrIGIvTGliL2lkbGVsaWIvaGlzdG9yeS5weQpAQCAtMSwxMSArMSwxMiBAQAogIkltcGxlbWVudCBJZGxlIFNoZWxsIGhpc3RvcnkgbWVjaGFuaXNtIHdpdGggSGlzdG9yeSBjbGFzcyIKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorCiAKIGNsYXNzIEhpc3Rvcnk6CiAgICAgJycnIEltcGxlbWVudCBJZGxlIFNoZWxsIGhpc3RvcnkgbWVjaGFuaXNtLgogCi0gICAgc3RvcmUgLSBTdG9yZSBzb3VyY2Ugc3RhdGVtZW50IChjYWxsZWQgZnJvbSBQeVNoZWxsLnJlc2V0b3V0cHV0KS4KKyAgICBzdG9yZSAtIFN0b3JlIHNvdXJjZSBzdGF0ZW1lbnQgKGNhbGxlZCBmcm9tIHB5c2hlbGwucmVzZXRvdXRwdXQpLgogICAgIGZldGNoIC0gRmV0Y2ggc3RvcmVkIHN0YXRlbWVudCBtYXRjaGluZyBwcmVmaXggYWxyZWFkeSBlbnRlcmVkLgogICAgIGhpc3RvcnlfbmV4dCAtIEJvdW5kIHRvIDw8aGlzdG9yeS1uZXh0Pj4gZXZlbnQgKGRlZmF1bHQgQWx0LU4pLgogICAgIGhpc3RvcnlfcHJldiAtIEJvdW5kIHRvIDw8aGlzdG9yeS1wcmV2Pj4gZXZlbnQgKGRlZmF1bHQgQWx0LVApLgpAQCAtOTksNiArMTAwLDcgQEAKICAgICAgICAgc2VsZi5wb2ludGVyID0gTm9uZQogICAgICAgICBzZWxmLnByZWZpeCA9IE5vbmUKIAorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1haW4KLSAgICBtYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2lkbGVoaXN0b3J5JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisgICAgbWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9oaXN0b3J5JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9IeXBlclBhcnNlci5weSBiL0xpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9oeXBlcnBhcnNlci5weQppbmRleCA3N2NiMDU3Li40NTBhNzA5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9IeXBlclBhcnNlci5weQorKysgYi9MaWIvaWRsZWxpYi9oeXBlcnBhcnNlci5weQpAQCAtNCwxMSArNCwxMCBAQAogcHJvcGVyIGluZGVudGF0aW9uIG9mIGNvZGUuICBIeXBlclBhcnNlciBnaXZlcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uCiB0aGUgc3RydWN0dXJlIG9mIGNvZGUuCiAiIiIKLQotaW1wb3J0IHN0cmluZwogZnJvbSBrZXl3b3JkIGltcG9ydCBpc2tleXdvcmQKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlQYXJzZQoraW1wb3J0IHN0cmluZwogCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5cGFyc2UKIAogIyBhbGwgQVNDSUkgY2hhcnMgdGhhdCBtYXkgYmUgaW4gYW4gaWRlbnRpZmllcgogX0FTQ0lJX0lEX0NIQVJTID0gZnJvemVuc2V0KHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICJfIikKQEAgLTMwLDcgKzI5LDcgQEAKICAgICAgICAgc2VsZi5lZGl0d2luID0gZWRpdHdpbgogICAgICAgICBzZWxmLnRleHQgPSB0ZXh0ID0gZWRpdHdpbi50ZXh0CiAKLSAgICAgICAgcGFyc2VyID0gUHlQYXJzZS5QYXJzZXIoZWRpdHdpbi5pbmRlbnR3aWR0aCwgZWRpdHdpbi50YWJ3aWR0aCkKKyAgICAgICAgcGFyc2VyID0gcHlwYXJzZS5QYXJzZXIoZWRpdHdpbi5pbmRlbnR3aWR0aCwgZWRpdHdpbi50YWJ3aWR0aCkKIAogICAgICAgICBkZWYgaW5kZXgybGluZShpbmRleCk6CiAgICAgICAgICAgICByZXR1cm4gaW50KGZsb2F0KGluZGV4KSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGUucHkgYi9MaWIvaWRsZWxpYi9pZGxlLnB5CmluZGV4IDE0MTUzNGQuLjQ4NWQ1YTcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZS5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKKwogIyBFbmFibGUgcnVubmluZyBJRExFIHdpdGggaWRsZWxpYiBpbiBhIG5vbi1zdGFuZGFyZCBsb2NhdGlvbi4KICMgVGhpcyB3YXMgb25jZSB1c2VkIHRvIHJ1biBkZXZlbG9wbWVudCB2ZXJzaW9ucyBvZiBJRExFLgogIyBCZWNhdXNlIFBFUCA0MzQgZGVjbGFyZWQgaWRsZS5weSBhIHB1YmxpYyBpbnRlcmZhY2UsCkBAIC05LDUgKzEwLDUgQEAKIGlmIGlkbGVsaWJfZGlyIG5vdCBpbiBzeXMucGF0aDoKICAgICBzeXMucGF0aC5pbnNlcnQoMCwgaWRsZWxpYl9kaXIpCiAKLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBtYWluICAjIFRoaXMgaXMgc3ViamVjdCB0byBjaGFuZ2UKK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBtYWluICAjIFRoaXMgaXMgc3ViamVjdCB0byBjaGFuZ2UKIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZS5weXcgYi9MaWIvaWRsZWxpYi9pZGxlLnB5dwppbmRleCAxNDJjYjMyLi5lNzNjMDQ5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlLnB5dworKysgYi9MaWIvaWRsZWxpYi9pZGxlLnB5dwpAQCAtMSwxMCArMSwxMCBAQAogdHJ5OgotICAgIGltcG9ydCBpZGxlbGliLlB5U2hlbGwKKyAgICBpbXBvcnQgaWRsZWxpYi5weXNoZWxsCiBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgIyBJRExFIGlzIG5vdCBpbnN0YWxsZWQsIGJ1dCBtYXliZSBQeVNoZWxsIGlzIG9uIHN5cy5wYXRoOgotICAgIGZyb20gLiBpbXBvcnQgUHlTaGVsbAorICAgICMgSURMRSBpcyBub3QgaW5zdGFsbGVkLCBidXQgbWF5YmUgcHlzaGVsbCBpcyBvbiBzeXMucGF0aDoKKyAgICBmcm9tIC4gaW1wb3J0IHB5c2hlbGwKICAgICBpbXBvcnQgb3MKLSAgICBpZGxlZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChQeVNoZWxsLl9fZmlsZV9fKSkKKyAgICBpZGxlZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChweXNoZWxsLl9fZmlsZV9fKSkKICAgICBpZiBpZGxlZGlyICE9IG9zLmdldGN3ZCgpOgogICAgICAgICAjIFdlJ3JlIG5vdCBpbiB0aGUgSURMRSBkaXJlY3RvcnksIGhlbHAgdGhlIHN1YnByb2Nlc3MgZmluZCBydW4ucHkKICAgICAgICAgcHlwYXRoID0gb3MuZW52aXJvbi5nZXQoJ1BZVEhPTlBBVEgnLCAnJykKQEAgLTEyLDYgKzEyLDYgQEAKICAgICAgICAgICAgIG9zLmVudmlyb25bJ1BZVEhPTlBBVEgnXSA9IHB5cGF0aCArICc6JyArIGlkbGVkaXIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9zLmVudmlyb25bJ1BZVEhPTlBBVEgnXSA9IGlkbGVkaXIKLSAgICBQeVNoZWxsLm1haW4oKQorICAgIHB5c2hlbGwubWFpbigpCiBlbHNlOgotICAgIGlkbGVsaWIuUHlTaGVsbC5tYWluKCkKKyAgICBpZGxlbGliLnB5c2hlbGwubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvX19pbml0X18ucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvX19pbml0X18ucHkKaW5kZXggODQ1YzkyZC4uYWQwNjdiNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L19faW5pdF9fLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weQpAQCAtMSw2ICsxLDggQEAKICcnJ2lkbGVsaWIuaWRsZV90ZXN0IGlzIGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0LnRlc3RfaWRsZSwKIHdoaWNoIHRlc3RzIHRoZSBJRExFIGFwcGxpY2F0aW9uIGFzIHBhcnQgb2YgdGhlIHN0ZGxpYiB0ZXN0IHN1aXRlLgogUnVuIElETEUgdGVzdHMgYWxvbmUgd2l0aCAicHl0aG9uIC1tIHRlc3QudGVzdF9pZGxlIi4KK1N0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNiwgSURMRSByZXF1aXJlcyB0Y2wvdGsgOC41IG9yIGxhdGVyLgorCiBUaGlzIHBhY2thZ2UgYW5kIGl0cyBjb250YWluZWQgbW9kdWxlcyBhcmUgc3ViamVjdCB0byBjaGFuZ2UgYW5kCiBhbnkgZGlyZWN0IHVzZSBpcyBhdCB5b3VyIG93biByaXNrLgogJycnCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkKaW5kZXggNThlNjJjYi4uNmY2NzZhZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weQpAQCAtNTksMTkgKzU5LDIwIEBACiAKIAogTW9kdWxlcyBhbmQgY2xhc3NlcyBub3QgYmVpbmcgdGVzdGVkIGF0IHRoZSBtb21lbnQ6Ci1QeVNoZWxsLlB5U2hlbGxFZGl0b3JXaW5kb3cKLURlYnVnZ2VyLkRlYnVnZ2VyCi1BdXRvQ29tcGxldGVXaW5kb3cuQXV0b0NvbXBsZXRlV2luZG93Ci1PdXRwdXRXaW5kb3cuT3V0cHV0V2luZG93IChpbmRpcmVjdGx5IGJlaW5nIHRlc3RlZCB3aXRoIGdyZXAgdGVzdCkKK3B5c2hlbGwuUHlTaGVsbEVkaXRvcldpbmRvdworZGVidWdnZXIuRGVidWdnZXIKK2F1dG9jb21wbGV0ZV93LkF1dG9Db21wbGV0ZVdpbmRvdworb3V0d2luLk91dHB1dFdpbmRvdyAoaW5kaXJlY3RseSBiZWluZyB0ZXN0ZWQgd2l0aCBncmVwIHRlc3QpCiAnJycKIAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGltcG9ydF9tb2R1bGUKLWZyb20gaWRsZWxpYi5tYWNvc3hTdXBwb3J0IGltcG9ydCBfaW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzCiBpbXBvcnQgdGtpbnRlciBhcyB0aworZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCit0ay5Ob0RlZmF1bHRSb290KCkKIAogQWJvdXREaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdhYm91dERpYWxvZycsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ2Fib3V0RGlhbG9nIHRlc3QnLAorICAgICdmaWxlJzogJ2hlbHBfYWJvdXQnLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdoZWxwX2Fib3V0IHRlc3QnLAogICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlLAogICAgICAgICAgICAgIH0sCiAgICAgJ21zZyc6ICJUZXN0IGV2ZXJ5IGJ1dHRvbi4gRW5zdXJlIFB5dGhvbiwgVEsgYW5kIElETEUgdmVyc2lvbnMgIgpAQCAtNzksMTQgKzgwLDE0IEBACiAgICAgfQogCiBfY2FsbHRpcF93aW5kb3dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdDYWxsVGlwV2luZG93JywKKyAgICAnZmlsZSc6ICdjYWxsdGlwX3cnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUeXBpbmcgJygnIHNob3VsZCBkaXNwbGF5IGEgY2FsbHRpcC5cbiIKICAgICAgICAgICAgIlR5cGluZyAnKSBzaG91bGQgaGlkZSB0aGUgY2FsbHRpcC5cbiIKICAgICB9CiAKIF9jbGFzc19icm93c2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnQ2xhc3NCcm93c2VyJywKKyAgICAnZmlsZSc6ICdicm93c2VyJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiSW5zcGVjdCBuYW1lcyBvZiBtb2R1bGUsIGNsYXNzKHdpdGggc3VwZXJjbGFzcyBpZiAiCiAgICAgICAgICAgICJhcHBsaWNhYmxlKSwgbWV0aG9kcyBhbmQgZnVuY3Rpb25zLlxuVG9nZ2xlIG5lc3RlZCBpdGVtcy5cbiIKQEAgLTk1LDcgKzk2LDcgQEAKICAgICB9CiAKIF9jb2xvcl9kZWxlZ2F0b3Jfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdDb2xvckRlbGVnYXRvcicsCisgICAgJ2ZpbGUnOiAnY29sb3JpemVyJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGhlIHRleHQgaXMgc2FtcGxlIFB5dGhvbiBjb2RlLlxuIgogICAgICAgICAgICAiRW5zdXJlIGNvbXBvbmVudHMgbGlrZSBjb21tZW50cywga2V5d29yZHMsIGJ1aWx0aW5zLFxuIgpAQCAtMTA0LDcgKzEwNSw3IEBACiAgICAgfQogCiBDb25maWdEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdEaWFsb2cnLAorICAgICdmaWxlJzogJ2NvbmZpZ2RpYWxvZycsCiAgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ0NvbmZpZ0RpYWxvZ1Rlc3QnLAogICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlLH0sCiAgICAgJ21zZyc6ICJJRExFIHByZWZlcmVuY2VzIGRpYWxvZy5cbiIKQEAgLTEyMSw3ICsxMjIsNyBAQAogCiAjIFRPRE8gSW1wcm92ZSBtZXNzYWdlCiBfZHluX29wdGlvbl9tZW51X3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnZHluT3B0aW9uTWVudVdpZGdldCcsCisgICAgJ2ZpbGUnOiAnZHlub3B0aW9uJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiU2VsZWN0IG9uZSBvZiB0aGUgbWFueSBvcHRpb25zIGluIHRoZSAnb2xkIG9wdGlvbiBzZXQnLlxuIgogICAgICAgICAgICAiQ2xpY2sgdGhlIGJ1dHRvbiB0byBjaGFuZ2UgdGhlIG9wdGlvbiBzZXQuXG4iCkBAIC0xMzAsMzkgKzEzMSwxNSBAQAogCiAjIFRPRE8gZWRpdCB3cmFwcGVyCiBfZWRpdG9yX3dpbmRvd19zcGVjID0gewotICAgJ2ZpbGUnOiAnRWRpdG9yV2luZG93JywKKyAgICdmaWxlJzogJ2VkaXRvcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRlc3QgZWRpdG9yIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC5cbiIKICAgICAgICAgICAgIkJlc3QgdG8gY2xvc2UgZWRpdG9yIGZpcnN0LiIKICAgICB9CiAKLUdldENmZ1NlY3Rpb25OYW1lRGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cnLAotICAgICdrd2RzJzogeyd0aXRsZSc6J0dldCBOYW1lJywKLSAgICAgICAgICAgICAnbWVzc2FnZSc6J0VudGVyIHNvbWV0aGluZycsCi0gICAgICAgICAgICAgJ3VzZWRfbmFtZXMnOiB7J2FiYyd9LAotICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKLSAgICAnbXNnJzogIkFmdGVyIHRoZSB0ZXh0IGVudGVyZWQgd2l0aCBbT2tdIGlzIHN0cmlwcGVkLCA8bm90aGluZz4sICIKLSAgICAgICAgICAgIidhYmMnLCBvciBtb3JlIHRoYXQgMzAgY2hhcnMgYXJlIGVycm9ycy5cbiIKLSAgICAgICAgICAgIkNsb3NlICdHZXQgTmFtZScgd2l0aCBhIHZhbGlkIGVudHJ5IChwcmludGVkIHRvIFNoZWxsKSwgIgotICAgICAgICAgICAiW0NhbmNlbF0sIG9yIFtYXSIsCi0gICAgfQotCi1HZXRIZWxwU291cmNlRGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnY29uZmlnSGVscFNvdXJjZUVkaXQnLAotICAgICdrd2RzJzogeyd0aXRsZSc6ICdHZXQgaGVscHNvdXJjZScsCi0gICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAotICAgICdtc2cnOiAiRW50ZXIgbWVudSBpdGVtIG5hbWUgYW5kIGhlbHAgZmlsZSBwYXRoXG4gIgotICAgICAgICAgICAiPG5vdGhpbmc+IGFuZCBtb3JlIHRoYW4gMzAgY2hhcnMgYXJlIGludmFsaWQgbWVudSBpdGVtIG5hbWVzLlxuIgotICAgICAgICAgICAiPG5vdGhpbmc+LCBmaWxlIGRvZXMgbm90IGV4aXN0IGFyZSBpbnZhbGlkIHBhdGggaXRlbXMuXG4iCi0gICAgICAgICAgICJUZXN0IGZvciBpbmNvbXBsZXRlIHdlYiBhZGRyZXNzIGZvciBoZWxwIGZpbGUgcGF0aC5cbiIKLSAgICAgICAgICAgIkEgdmFsaWQgZW50cnkgd2lsbCBiZSBwcmludGVkIHRvIHNoZWxsIHdpdGggWzBrXS5cbiIKLSAgICAgICAgICAgIltDYW5jZWxdIHdpbGwgcHJpbnQgTm9uZSB0byBzaGVsbCIsCi0gICAgfQotCiAjIFVwZGF0ZSBvbmNlIGlzc3VlMjE1MTkgaXMgcmVzb2x2ZWQuCiBHZXRLZXlzRGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAna2V5YmluZGluZ0RpYWxvZycsCisgICAgJ2ZpbGUnOiAnY29uZmlnX2tleScsCiAgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ1Rlc3Qga2V5YmluZGluZ3MnLAogICAgICAgICAgICAgICdhY3Rpb24nOiAnZmluZC1hZ2FpbicsCiAgICAgICAgICAgICAgJ2N1cnJlbnRLZXlTZXF1ZW5jZXMnOiBbJyddICwKQEAgLTE3Nyw3ICsxNTQsNyBAQAogICAgIH0KIAogX2dyZXBfZGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnR3JlcERpYWxvZycsCisgICAgJ2ZpbGUnOiAnZ3JlcCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkNsaWNrIHRoZSAnU2hvdyBHcmVwRGlhbG9nJyBidXR0b24uXG4iCiAgICAgICAgICAgICJUZXN0IHRoZSB2YXJpb3VzICdGaW5kLWluLWZpbGVzJyBmdW5jdGlvbnMuXG4iCkBAIC0xODYsOCArMTYzLDI0IEBACiAgICAgICAgICAgICJzaG91bGQgb3BlbiB0aGF0IGZpbGUgXG5pbiBhIG5ldyBFZGl0b3JXaW5kb3cuIgogICAgIH0KIAorSGVscFNvdXJjZV9zcGVjID0geworICAgICdmaWxlJzogJ3F1ZXJ5JywKKyAgICAna3dkcyc6IHsndGl0bGUnOiAnSGVscCBuYW1lIGFuZCBzb3VyY2UnLAorICAgICAgICAgICAgICdtZW51aXRlbSc6ICd0ZXN0JywKKyAgICAgICAgICAgICAnZmlsZXBhdGgnOiBfX2ZpbGVfXywKKyAgICAgICAgICAgICAndXNlZF9uYW1lcyc6IHsnYWJjJ30sCisgICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAorICAgICdtc2cnOiAiRW50ZXIgbWVudSBpdGVtIG5hbWUgYW5kIGhlbHAgZmlsZSBwYXRoXG4iCisgICAgICAgICAgICInJywgPiB0aGFuIDMwIGNoYXJzLCBhbmQgJ2FiYycgYXJlIGludmFsaWQgbWVudSBpdGVtIG5hbWVzLlxuIgorICAgICAgICAgICAiJycgYW5kIGZpbGUgZG9lcyBub3QgZXhpc3QgYXJlIGludmFsaWQgcGF0aCBpdGVtcy5cbiIKKyAgICAgICAgICAgIkFueSB1cmwgKCd3d3cuLi4nLCAnaHR0cC4uLicpIGlzIGFjY2VwdGVkLlxuIgorICAgICAgICAgICAiVGVzdCBCcm93c2Ugd2l0aCBhbmQgd2l0aG91dCBwYXRoLCBhcyBjYW5ub3QgdW5pdHRlc3QuXG4iCisgICAgICAgICAgICJbT2tdIG9yIDxSZXR1cm4+IHByaW50cyB2YWxpZCBlbnRyeSB0byBzaGVsbFxuIgorICAgICAgICAgICAiW0NhbmNlbF0gb3IgPEVzY2FwZT4gcHJpbnRzIE5vbmUgdG8gc2hlbGwiCisgICAgfQorCiBfaW9fYmluZGluZ19zcGVjID0gewotICAgICdmaWxlJzogJ0lPQmluZGluZycsCisgICAgJ2ZpbGUnOiAnaW9tZW51JywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGVzdCB0aGUgZm9sbG93aW5nIGJpbmRpbmdzLlxuIgogICAgICAgICAgICAiPENvbnRyb2wtbz4gdG8gb3BlbiBmaWxlIGZyb20gZGlhbG9nLlxuIgpAQCAtMjAwLDcgKzE5Myw3IEBACiAgICAgfQogCiBfbXVsdGlfY2FsbF9zcGVjID0gewotICAgICdmaWxlJzogJ011bHRpQ2FsbCcsCisgICAgJ2ZpbGUnOiAnbXVsdGljYWxsJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGhlIGZvbGxvd2luZyBhY3Rpb25zIHNob3VsZCB0cmlnZ2VyIGEgcHJpbnQgdG8gY29uc29sZSBvciBJRExFIgogICAgICAgICAgICAiIFNoZWxsLlxuRW50ZXJpbmcgYW5kIGxlYXZpbmcgdGhlIHRleHQgYXJlYSwga2V5IGVudHJ5LCAiCkBAIC0yMTAsMTQgKzIwMywxNCBAQAogICAgIH0KIAogX211bHRpc3RhdHVzX2Jhcl9zcGVjID0gewotICAgICdmaWxlJzogJ011bHRpU3RhdHVzQmFyJywKKyAgICAnZmlsZSc6ICdzdGF0dXNiYXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJFbnN1cmUgcHJlc2VuY2Ugb2YgbXVsdGktc3RhdHVzIGJhciBiZWxvdyB0ZXh0IGFyZWEuXG4iCiAgICAgICAgICAgICJDbGljayAnVXBkYXRlIFN0YXR1cycgdG8gY2hhbmdlIHRoZSBtdWx0aS1zdGF0dXMgdGV4dCIKICAgICB9CiAKIF9vYmplY3RfYnJvd3Nlcl9zcGVjID0gewotICAgICdmaWxlJzogJ09iamVjdEJyb3dzZXInLAorICAgICdmaWxlJzogJ2RlYnVnb2JqJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiRG91YmxlIGNsaWNrIG9uIGl0ZW1zIHVwdG8gdGhlIGxvd2VzdCBsZXZlbC5cbiIKICAgICAgICAgICAgIkF0dHJpYnV0ZXMgb2YgdGhlIG9iamVjdHMgYW5kIHJlbGF0ZWQgaW5mb3JtYXRpb24gIgpAQCAtMjI1LDcgKzIxOCw3IEBACiAgICAgfQogCiBfcGF0aF9icm93c2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUGF0aEJyb3dzZXInLAorICAgICdmaWxlJzogJ3BhdGhicm93c2VyJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGVzdCBmb3IgY29ycmVjdCBkaXNwbGF5IG9mIGFsbCBwYXRocyBpbiBzeXMucGF0aC5cbiIKICAgICAgICAgICAgIlRvZ2dsZSBuZXN0ZWQgaXRlbXMgdXB0byB0aGUgbG93ZXN0IGxldmVsLlxuIgpAQCAtMjM0LDcgKzIyNyw3IEBACiAgICAgfQogCiBfcGVyY29sYXRvcl9zcGVjID0gewotICAgICdmaWxlJzogJ1BlcmNvbGF0b3InLAorICAgICdmaWxlJzogJ3BlcmNvbGF0b3InLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGVyZSBhcmUgdHdvIHRyYWNlcnMgd2hpY2ggY2FuIGJlIHRvZ2dsZWQgdXNpbmcgYSBjaGVja2JveC5cbiIKICAgICAgICAgICAgIlRvZ2dsaW5nIGEgdHJhY2VyICdvbicgYnkgY2hlY2tpbmcgaXQgc2hvdWxkIHByaW50IHRyYWNlciIKQEAgLTI0NCw4ICsyMzcsMjAgQEAKICAgICAgICAgICAgIlRlc3QgZm9yIGFjdGlvbnMgbGlrZSB0ZXh0IGVudHJ5LCBhbmQgcmVtb3ZhbC4iCiAgICAgfQogCitRdWVyeV9zcGVjID0geworICAgICdmaWxlJzogJ3F1ZXJ5JywKKyAgICAna3dkcyc6IHsndGl0bGUnOiAnUXVlcnknLAorICAgICAgICAgICAgICdtZXNzYWdlJzogJ0VudGVyIHNvbWV0aGluZycsCisgICAgICAgICAgICAgJ3RleHQwJzogJ0dvJywKKyAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCisgICAgJ21zZyc6ICJFbnRlciB3aXRoIDxSZXR1cm4+IG9yIFtPa10uICBQcmludCB2YWxpZCBlbnRyeSB0byBTaGVsbFxuIgorICAgICAgICAgICAiQmxhbmsgbGluZSwgYWZ0ZXIgc3RyaXBwaW5nLCBpcyBpZ25vcmVkXG4iCisgICAgICAgICAgICJDbG9zZSBkaWFsb2cgd2l0aCB2YWxpZCBlbnRyeSwgPEVzY2FwZT4sIFtDYW5jZWxdLCBbWF0iCisgICAgfQorCisKIF9yZXBsYWNlX2RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ1JlcGxhY2VEaWFsb2cnLAorICAgICdmaWxlJzogJ3JlcGxhY2UnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJDbGljayB0aGUgJ1JlcGxhY2UnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdmFyaW91cyByZXBsYWNlIG9wdGlvbnMgaW4gdGhlICdSZXBsYWNlIGRpYWxvZycuXG4iCkBAIC0yNTMsMTUgKzI1OCwyMiBAQAogICAgIH0KIAogX3NlYXJjaF9kaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTZWFyY2hEaWFsb2cnLAorICAgICdmaWxlJzogJ3NlYXJjaCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkNsaWNrIHRoZSAnU2VhcmNoJyBidXR0b24uXG4iCiAgICAgICAgICAgICJUZXN0IHZhcmlvdXMgc2VhcmNoIG9wdGlvbnMgaW4gdGhlICdTZWFyY2ggZGlhbG9nJy5cbiIKICAgICAgICAgICAgIkNsaWNrIFtDbG9zZV0gb3IgW1hdIHRvIGNsb3NlIHRoZSAnU2VhcmNoIERpYWxvZycuIgogICAgIH0KIAorX3NlYXJjaGJhc2Vfc3BlYyA9IHsKKyAgICAnZmlsZSc6ICdzZWFyY2hiYXNlJywKKyAgICAna3dkcyc6IHt9LAorICAgICdtc2cnOiAiQ2hlY2sgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGJhc2Ugc2VhcmNoIGRpYWxvZ1xuIgorICAgICAgICAgICAiSXRzIG9ubHkgYWN0aW9uIGlzIHRvIGNsb3NlLiIKKyAgICB9CisKIF9zY3JvbGxlZF9saXN0X3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnU2Nyb2xsZWRMaXN0JywKKyAgICAnZmlsZSc6ICdzY3JvbGxlZGxpc3QnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJZb3Ugc2hvdWxkIHNlZSBhIHNjcm9sbGFibGUgbGlzdCBvZiBpdGVtc1xuIgogICAgICAgICAgICAiU2VsZWN0aW5nIChjbGlja2luZykgb3IgZG91YmxlIGNsaWNraW5nIGFuIGl0ZW0gIgpAQCAtMjc3LDcgKzI4OSw3IEBACiAgICAgfQogCiBfc3RhY2tfdmlld2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnU3RhY2tWaWV3ZXInLAorICAgICdmaWxlJzogJ3N0YWNrdmlld2VyJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQSBzdGFja3RyYWNlIGZvciBhIE5hbWVFcnJvciBleGNlcHRpb24uXG4iCiAgICAgICAgICAgICJFeHBhbmQgJ2lkbGVsaWIgLi4uJyBhbmQgJzxsb2NhbHM+Jy5cbiIKQEAgLTI5NSw4ICszMDcsOCBAQAogICAgIH0KIAogVGV4dFZpZXdlcl9zcGVjID0gewotICAgICdmaWxlJzogJ3RleHRWaWV3JywKLSAgICAna3dkcyc6IHsndGl0bGUnOiAnVGVzdCB0ZXh0VmlldycsCisgICAgJ2ZpbGUnOiAndGV4dHZpZXcnLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdUZXN0IHRleHR2aWV3JywKICAgICAgICAgICAgICAndGV4dCc6J1RoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuXG4nKjM1LAogICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKICAgICAnbXNnJzogIlRlc3QgZm9yIHJlYWQtb25seSBwcm9wZXJ0eSBvZiB0ZXh0LlxuIgpAQCAtMzA0LDIxICszMTYsMjEgQEAKICAgICAgfQogCiBfdG9vbHRpcF9zcGVjID0gewotICAgICdmaWxlJzogJ1Rvb2xUaXAnLAorICAgICdmaWxlJzogJ3Rvb2x0aXAnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJQbGFjZSBtb3VzZSBjdXJzb3Igb3ZlciBib3RoIHRoZSBidXR0b25zXG4iCiAgICAgICAgICAgICJBIHRvb2x0aXAgc2hvdWxkIGFwcGVhciB3aXRoIHNvbWUgdGV4dC4iCiAgICAgfQogCiBfdHJlZV93aWRnZXRfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdUcmVlV2lkZ2V0JywKKyAgICAnZmlsZSc6ICd0cmVlJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGhlIGNhbnZhcyBpcyBzY3JvbGxhYmxlLlxuIgogICAgICAgICAgICAiQ2xpY2sgb24gZm9sZGVycyB1cHRvIHRvIHRoZSBsb3dlc3QgbGV2ZWwuIgogICAgIH0KIAogX3VuZG9fZGVsZWdhdG9yX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnVW5kb0RlbGVnYXRvcicsCisgICAgJ2ZpbGUnOiAndW5kbycsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkNsaWNrIFtVbmRvXSB0byB1bmRvIGFueSBhY3Rpb24uXG4iCiAgICAgICAgICAgICJDbGljayBbUmVkb10gdG8gcmVkbyBhbnkgYWN0aW9uLlxuIgpAQCAtMzI3LDcgKzMzOSw3IEBACiAgICAgfQogCiBfd2lkZ2V0X3JlZGlyZWN0b3Jfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdXaWRnZXRSZWRpcmVjdG9yJywKKyAgICAnZmlsZSc6ICdyZWRpcmVjdG9yJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiRXZlcnkgdGV4dCBpbnNlcnQgc2hvdWxkIGJlIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUuIgogICAgICAgICAgICAib3IgdGhlIElETEUgc2hlbGwuIgpAQCAtMzM3LDE0ICszNDksMTMgQEAKICAgICByb290ID0gdGsuVGsoKQogICAgIHJvb3QudGl0bGUoJ0lETEUgaHRlc3QnKQogICAgIHJvb3QucmVzaXphYmxlKDAsIDApCi0gICAgX2luaXRpYWxpemVUa1ZhcmlhbnRUZXN0cyhyb290KQogCiAgICAgIyBhIHNjcm9sbGFibGUgTGFiZWwgbGlrZSBjb25zdGFudCB3aWR0aCB0ZXh0IHdpZGdldC4KICAgICBmcmFtZUxhYmVsID0gdGsuRnJhbWUocm9vdCwgcGFkeD0xMCkKICAgICBmcmFtZUxhYmVsLnBhY2soKQogICAgIHRleHQgPSB0ay5UZXh0KGZyYW1lTGFiZWwsIHdyYXA9J3dvcmQnKQogICAgIHRleHQuY29uZmlndXJlKGJnPXJvb3QuY2dldCgnYmcnKSwgcmVsaWVmPSdmbGF0JywgaGVpZ2h0PTQsIHdpZHRoPTcwKQotICAgIHNjcm9sbGJhciA9IHRrLlNjcm9sbGJhcihmcmFtZUxhYmVsLCBjb21tYW5kPXRleHQueXZpZXcpCisgICAgc2Nyb2xsYmFyID0gU2Nyb2xsYmFyKGZyYW1lTGFiZWwsIGNvbW1hbmQ9dGV4dC55dmlldykKICAgICB0ZXh0LmNvbmZpZyh5c2Nyb2xsY29tbWFuZD1zY3JvbGxiYXIuc2V0KQogICAgIHNjcm9sbGJhci5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neScsIGV4cGFuZD1GYWxzZSkKICAgICB0ZXh0LnBhY2soc2lkZT0nbGVmdCcsIGZpbGw9J2JvdGgnLCBleHBhbmQ9VHJ1ZSkKQEAgLTM2NSwxMSArMzc2LDExIEBACiAgICAgICAgICAgICAgICAgdGVzdCA9IGdldGF0dHIobW9kLCB0ZXN0X25hbWUpCiAgICAgICAgICAgICAgICAgdGVzdF9saXN0LmFwcGVuZCgodGVzdF9zcGVjLCB0ZXN0KSkKIAotICAgIHRlc3RfbmFtZSA9IHRrLlN0cmluZ1ZhcignJykKKyAgICB0ZXN0X25hbWUgPSB0ay5TdHJpbmdWYXIocm9vdCkKICAgICBjYWxsYWJsZV9vYmplY3QgPSBOb25lCiAgICAgdGVzdF9rd2RzID0gTm9uZQogCi0gICAgZGVmIG5leHQoKToKKyAgICBkZWYgbmV4dF90ZXN0KCk6CiAKICAgICAgICAgbm9ubG9jYWwgdGVzdF9uYW1lLCBjYWxsYWJsZV9vYmplY3QsIHRlc3Rfa3dkcwogICAgICAgICBpZiBsZW4odGVzdF9saXN0KSA9PSAxOgpAQCAtMzg0LDIwICszOTUsMjYgQEAKICAgICAgICAgdGV4dC5pbnNlcnQoIjEuMCIsdGVzdF9zcGVjWydtc2cnXSkKICAgICAgICAgdGV4dC5jb25maWd1cmUoc3RhdGU9J2Rpc2FibGVkJykgIyBwcmVzZXJ2ZSByZWFkLW9ubHkgcHJvcGVydHkKIAotICAgIGRlZiBydW5fdGVzdCgpOgorICAgIGRlZiBydW5fdGVzdChfPU5vbmUpOgogICAgICAgICB3aWRnZXQgPSBjYWxsYWJsZV9vYmplY3QoKip0ZXN0X2t3ZHMpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHByaW50KHdpZGdldC5yZXN1bHQpCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAotICAgIGJ1dHRvbiA9IHRrLkJ1dHRvbihyb290LCB0ZXh0dmFyaWFibGU9dGVzdF9uYW1lLCBjb21tYW5kPXJ1bl90ZXN0KQorICAgIGRlZiBjbG9zZShfPU5vbmUpOgorICAgICAgICByb290LmRlc3Ryb3koKQorCisgICAgYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHR2YXJpYWJsZT10ZXN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J2FjdGl2ZScsIGNvbW1hbmQ9cnVuX3Rlc3QpCisgICAgbmV4dF9idXR0b24gPSB0ay5CdXR0b24ocm9vdCwgdGV4dD0iTmV4dCIsIGNvbW1hbmQ9bmV4dF90ZXN0KQogICAgIGJ1dHRvbi5wYWNrKCkKLSAgICBuZXh0X2J1dHRvbiA9IHRrLkJ1dHRvbihyb290LCB0ZXh0PSJOZXh0IiwgY29tbWFuZD1uZXh0KQogICAgIG5leHRfYnV0dG9uLnBhY2soKQorICAgIG5leHRfYnV0dG9uLmZvY3VzX3NldCgpCisgICAgcm9vdC5iaW5kKCc8S2V5LVJldHVybj4nLCBydW5fdGVzdCkKKyAgICByb290LmJpbmQoJzxLZXktRXNjYXBlPicsIGNsb3NlKQogCi0gICAgbmV4dCgpCi0KKyAgICBuZXh0X3Rlc3QoKQogICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L21vY2tfaWRsZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9tb2NrX2lkbGUucHkKaW5kZXggMTY3MmEzNC4uYzdiNDllZiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L21vY2tfaWRsZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5CkBAIC0zMyw3ICszMyw3IEBACiAKIAogY2xhc3MgRWRpdG9yOgotICAgICcnJ01pbmltYWxseSBpbWl0YXRlIEVkaXRvcldpbmRvdy5FZGl0b3JXaW5kb3cgY2xhc3MuCisgICAgJycnTWluaW1hbGx5IGltaXRhdGUgZWRpdG9yLkVkaXRvcldpbmRvdyBjbGFzcy4KICAgICAnJycKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmxpc3Q9Tm9uZSwgZmlsZW5hbWU9Tm9uZSwga2V5PU5vbmUsIHJvb3Q9Tm9uZSk6CiAgICAgICAgIHNlbGYudGV4dCA9IFRleHQoKQpAQCAtNDYsNyArNDYsNyBAQAogCiAKIGNsYXNzIFVuZG9EZWxlZ2F0b3I6Ci0gICAgJycnTWluaW1hbGx5IGltaXRhdGUgVW5kb0RlbGVnYXRvcixVbmRvRGVsZWdhdG9yIGNsYXNzLgorICAgICcnJ01pbmltYWxseSBpbWl0YXRlIHVuZG8uVW5kb0RlbGVnYXRvciBjbGFzcy4KICAgICAnJycKICAgICAjIEEgcmVhbCB1bmRvIGJsb2NrIGlzIG9ubHkgbmVlZGVkIGZvciB1c2VyIGludGVyYWN0aW9uLgogICAgIGRlZiB1bmRvX2Jsb2NrX3N0YXJ0KCphcmdzKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9jb21wbGV0ZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9jb21wbGV0ZS5weQppbmRleCA1ZmM4OTlkLi5mM2YyZGVhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvY29tcGxldGUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5CkBAIC0xLDkgKzEsMTMgQEAKKycnJyBUZXN0IGF1dG9jb21wbGV0ZSBhbmQgYXV0b2NvbXBsZV93CisKK0NvdmVyYWdlIG9mIGF1dG9jb21wbGU6IDU2JQorJycnCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAogCi1pbXBvcnQgaWRsZWxpYi5BdXRvQ29tcGxldGUgYXMgYWMKLWltcG9ydCBpZGxlbGliLkF1dG9Db21wbGV0ZVdpbmRvdyBhcyBhY3cKK2ltcG9ydCBpZGxlbGliLmF1dG9jb21wbGV0ZSBhcyBhYworaW1wb3J0IGlkbGVsaWIuYXV0b2NvbXBsZXRlX3cgYXMgYWN3CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBFdmVudAogCkBAIC05MSw2ICs5NSwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhdXRvY29tcGxldGUuYXV0b2NvbXBsZXRlX2V2ZW50KGV2KSkKICAgICAgICAgZGVsIGV2Lm1jX3N0YXRlCiAKKyAgICAgICAgIyBUZXN0IHRoYXQgdGFiIGFmdGVyIHdoaXRlc3BhY2UgaXMgaWdub3JlZC4KKyAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgnMS4wJywgJyAgICAgICAgIiIiRG9jc3RyaW5nLlxuICAgICcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVfZXZlbnQoZXYpKQorICAgICAgICBzZWxmLnRleHQuZGVsZXRlKCcxLjAnLCAnZW5kJykKKwogICAgICAgICAjIElmIGF1dG9jb21wbGV0ZSB3aW5kb3cgaXMgb3BlbiwgY29tcGxldGUoKSBtZXRob2QgaXMgY2FsbGVkCiAgICAgICAgIHNlbGYudGV4dC5pbnNlcnQoJzEuMCcsICdyZS4nKQogICAgICAgICAjIFRoaXMgbXVzdCBjYWxsIGF1dG9jb21wbGV0ZS5fbWFrZV9hdXRvY29tcGxldGVfd2luZG93KCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9leHBhbmQucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvZXhwYW5kLnB5CmluZGV4IGQyYTMxNTYuLmFlODE4NmMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9leHBhbmQucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weQpAQCAtMSw5ICsxLDkgQEAKLSIiIlVuaXQgdGVzdHMgZm9yIGlkbGVsaWIuQXV0b0V4cGFuZCIiIgorIiIiVW5pdCB0ZXN0cyBmb3IgaWRsZWxpYi5hdXRvZXhwYW5kIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCBUZXh0LCBUawogI2Zyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dAotZnJvbSBpZGxlbGliLkF1dG9FeHBhbmQgaW1wb3J0IEF1dG9FeHBhbmQKK2Zyb20gaWRsZWxpYi5hdXRvZXhwYW5kIGltcG9ydCBBdXRvRXhwYW5kCiAKIAogY2xhc3MgRHVtbXlfRWRpdHdpbjoKQEAgLTIyLDYgKzIyLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNscy50ZXh0ID0gVGV4dCgpCiAgICAgICAgIGNscy5hdXRvX2V4cGFuZCA9IEF1dG9FeHBhbmQoRHVtbXlfRWRpdHdpbihjbHMudGV4dCkpCisgICAgICAgIGNscy5hdXRvX2V4cGFuZC5iZWxsID0gbGFtYmRhOiBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgpAQCAtMTM3LDUgKzEzOCw2IEBACiAgICAgICAgIG5ld19zdGF0ZSA9IHNlbGYuYXV0b19leHBhbmQuc3RhdGUKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbml0aWFsX3N0YXRlLCBuZXdfc3RhdGUpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY2FsbHRpcHMucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jYWxsdGlwcy5weQppbmRleCBiMmE3MzNjLi4wYjExNjAyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jYWxsdGlwcy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jYWxsdGlwcy5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGlkbGVsaWIuQ2FsbFRpcHMgYXMgY3QKK2ltcG9ydCBpZGxlbGliLmNhbGx0aXBzIGFzIGN0CiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0eXBlcwogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb2xvcml6ZXIucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb2xvcml6ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM4YmMzZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weQpAQCAtMCwwICsxLDU2IEBACisnJydUZXN0IGlkbGVsaWIvY29sb3JpemVyLnB5CisKK1BlcmZvcm0gbWluaW1hbCBzYW5pdHkgY2hlY2tzIHRoYXQgbW9kdWxlIGltcG9ydHMgYW5kIHNvbWUgdGhpbmdzIHJ1bi4KKworQ292ZXJhZ2UgMjIlLgorJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbG9yaXplciAgIyBhbHdheXMgdGVzdCBpbXBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAoraW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgRnVuY3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FueShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbG9yaXplci5hbnkoJ3Rlc3QnLCAoJ2EnLCAnYicpKSkKKworICAgIGRlZiB0ZXN0X21ha2VfcGF0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29sb3JpemVyLm1ha2VfcGF0KCkpCisKKworY2xhc3MgQ29sb3JDb25maWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKyAgICAgICAgY2xzLnRleHQgPSBUZXh0KGNscy5yb290KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgZGVsIGNscy50ZXh0CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2NvbG9yaXplcihzZWxmKToKKyAgICAgICAgY29sb3JpemVyLmNvbG9yX2NvbmZpZyhzZWxmLnRleHQpCisKK2NsYXNzIENvbG9yRGVsZWdhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgdGVzdF9jb2xvcml6ZXIoc2VsZik6CisgICAgICAgIGNvbG9yaXplci5Db2xvckRlbGVnYXRvcigpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZmExYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkKQEAgLTAsMCArMSwxNjAgQEAKKycnJ1Rlc3QgaWRsZWxpYi5jb25maWcuCisKK011Y2ggaXMgdGVzdGVkIGJ5IG9wZW5pbmcgY29uZmlnIGRpYWxvZyBsaXZlIG9yIGluIHRlc3RfY29uZmlnZGlhbG9nLgorQ292ZXJhZ2U6IDI3JQorJycnCitmcm9tIHN5cyBpbXBvcnQgbW9kdWxlcworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZGVycgorZnJvbSB0a2ludGVyIGltcG9ydCBUaworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZworCisjIFRlc3RzIHNob3VsZCBub3QgZGVwZW5kIG9uIGZvcnR1aXRvdXMgdXNlciBjb25maWd1cmF0aW9ucy4KKyMgVGhleSBtdXN0IG5vdCBhZmZlY3QgYWN0dWFsIHVzZXIgLmNmZyBmaWxlcy4KKyMgUmVwbGFjZSB1c2VyIHBhcnNlcnMgd2l0aCBlbXB0eSBwYXJzZXJzIHRoYXQgY2Fubm90IGJlIHNhdmVkLgorCitpZGxlQ29uZiA9IGNvbmZpZy5pZGxlQ29uZgordXNlcmNmZyA9IGlkbGVDb25mLnVzZXJDZmcKK3Rlc3RjZmcgPSB7fQordXNlcm1haW4gPSB0ZXN0Y2ZnWydtYWluJ10gPSBjb25maWcuSWRsZVVzZXJDb25mUGFyc2VyKCcnKSAgIyBmaWxlbmFtZQordXNlcmhpZ2ggPSB0ZXN0Y2ZnWydoaWdobGlnaHQnXSA9IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpCit1c2Vya2V5cyA9IHRlc3RjZmdbJ2tleXMnXSA9IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpCisKK2RlZiBzZXRVcE1vZHVsZSgpOgorICAgIGlkbGVDb25mLnVzZXJDZmcgPSB0ZXN0Y2ZnCisKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgorICAgIGlkbGVDb25mLnVzZXJDZmcgPSB1c2VyY2ZnCisKKworY2xhc3MgQ3VycmVudENvbG9yS2V5c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIiBUZXN0IGNvbG9ya2V5cyBmdW5jdGlvbiB3aXRoIHVzZXIgY29uZmlnIFtUaGVtZV0gYW5kIFtLZXlzXSBwYXR0ZXJucy4KKworICAgICAgICBjb2xvcmtleXMgPSBjb25maWcuSWRsZUNvbmYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMKKyAgICAgICAgVGVzdCBhbGwgcGF0dGVybnMgd3JpdHRlbiBieSBJRExFIGFuZCBzb21lIGVycm9ycworICAgICAgICBJdGVtICdkZWZhdWx0JyBzaG91bGQgcmVhbGx5IGJlICdidWlsdGluJyAodmVyc3VzICdjdXN0b20pLgorICAgICIiIgorICAgIGNvbG9ya2V5cyA9IGlkbGVDb25mLmN1cnJlbnRfY29sb3JzX2FuZF9rZXlzCisgICAgZGVmYXVsdF90aGVtZSA9ICdJRExFIENsYXNzaWMnCisgICAgZGVmYXVsdF9rZXlzID0gaWRsZUNvbmYuZGVmYXVsdF9rZXlzKCkKKworICAgIGRlZiB0ZXN0X29sZF9idWlsdGluX3RoZW1lKHNlbGYpOgorICAgICAgICAjIE9uIGluaXRpYWwgaW5zdGFsbGF0aW9uLCB1c2VyIG1haW4gaXMgYmxhbmsuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgIyBGb3Igb2xkIGRlZmF1bHQsIG5hbWUyIG11c3QgYmUgYmxhbmsuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW1RoZW1lXQorICAgICAgICAgICAgZGVmYXVsdCA9IFRydWUKKyAgICAgICAgICAgICcnJykKKyAgICAgICAgIyBJRExFIG9taXRzICduYW1lJyBmb3IgZGVmYXVsdCBvbGQgYnVpbHRpbiB0aGVtZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICAjIElETEUgYWRkcyAnbmFtZScgZm9yIG5vbi1kZWZhdWx0IG9sZCBidWlsdGluIHRoZW1lLgorICAgICAgICB1c2VybWFpblsnVGhlbWUnXVsnbmFtZSddID0gJ0lETEUgTmV3JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCAnSURMRSBOZXcnKQorICAgICAgICAjIEVycm9uZW91cyBub24tZGVmYXVsdCBvbGQgYnVpbHRpbiByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdUaGVtZScpCisKKyAgICBkZWYgdGVzdF9uZXdfYnVpbHRpbl90aGVtZShzZWxmKToKKyAgICAgICAgIyBJRExFIHdyaXRlcyBuYW1lMiBmb3IgbmV3IGJ1aWx0aW5zLgorICAgICAgICB1c2VybWFpbi5yZWFkX3N0cmluZygnJycKKyAgICAgICAgICAgIFtUaGVtZV0KKyAgICAgICAgICAgIGRlZmF1bHQgPSBUcnVlCisgICAgICAgICAgICBuYW1lMiA9IElETEUgRGFyaworICAgICAgICAgICAgJycnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCAnSURMRSBEYXJrJykKKyAgICAgICAgIyBMZWZ0b3ZlciAnbmFtZScsIG5vdCByZW1vdmVkLCBpcyBpZ25vcmVkLgorICAgICAgICB1c2VybWFpblsnVGhlbWUnXVsnbmFtZSddID0gJ0lETEUgTmV3JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCAnSURMRSBEYXJrJykKKyAgICAgICAgIyBFcnJvbmVvdXMgbm9uLWRlZmF1bHQgbmV3IGJ1aWx0aW4gcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpblsnVGhlbWUnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKworICAgIGRlZiB0ZXN0X3VzZXJfb3ZlcnJpZGVfdGhlbWUoc2VsZik6CisgICAgICAgICMgRXJyb25lb3VzIGN1c3RvbSBuYW1lIChubyBkZWZpbml0aW9uKSByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW1RoZW1lXQorICAgICAgICAgICAgZGVmYXVsdCA9IEZhbHNlCisgICAgICAgICAgICBuYW1lID0gQ3VzdG9tIERhcmsKKyAgICAgICAgICAgICcnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICAjIEN1c3RvbSBuYW1lIGlzIHZhbGlkIHdpdGggbWF0Y2hpbmcgU2VjdGlvbiBuYW1lLgorICAgICAgICB1c2VyaGlnaC5yZWFkX3N0cmluZygnW0N1c3RvbSBEYXJrXVxuYT1iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0N1c3RvbSBEYXJrJykKKyAgICAgICAgIyBOYW1lMiBpcyBpZ25vcmVkLgorICAgICAgICB1c2VybWFpblsnVGhlbWUnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdDdXN0b20gRGFyaycpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdUaGVtZScpCisgICAgICAgIHVzZXJoaWdoLnJlbW92ZV9zZWN0aW9uKCdDdXN0b20gRGFyaycpCisKKyAgICBkZWYgdGVzdF9vbGRfYnVpbHRpbl9rZXlzKHNlbGYpOgorICAgICAgICAjIE9uIGluaXRpYWwgaW5zdGFsbGF0aW9uLCB1c2VyIG1haW4gaXMgYmxhbmsuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgICMgRm9yIG9sZCBkZWZhdWx0LCBuYW1lMiBtdXN0IGJlIGJsYW5rLCBuYW1lIGlzIGFsd2F5cyB1c2VkLgorICAgICAgICB1c2VybWFpbi5yZWFkX3N0cmluZygnJycKKyAgICAgICAgICAgIFtLZXlzXQorICAgICAgICAgICAgZGVmYXVsdCA9IFRydWUKKyAgICAgICAgICAgIG5hbWUgPSBJRExFIENsYXNzaWMgVW5peAorICAgICAgICAgICAgJycnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksICdJRExFIENsYXNzaWMgVW5peCcpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG9sZCBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZSddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCBzZWxmLmRlZmF1bHRfa2V5cykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ0tleXMnKQorCisgICAgZGVmIHRlc3RfbmV3X2J1aWx0aW5fa2V5cyhzZWxmKToKKyAgICAgICAgIyBJRExFIHdyaXRlcyBuYW1lMiBmb3IgbmV3IGJ1aWx0aW5zLgorICAgICAgICB1c2VybWFpbi5yZWFkX3N0cmluZygnJycKKyAgICAgICAgICAgIFtLZXlzXQorICAgICAgICAgICAgZGVmYXVsdCA9IFRydWUKKyAgICAgICAgICAgIG5hbWUyID0gSURMRSBNb2Rlcm4gVW5peAorICAgICAgICAgICAgJycnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksICdJRExFIE1vZGVybiBVbml4JykKKyAgICAgICAgIyBMZWZ0b3ZlciAnbmFtZScsIG5vdCByZW1vdmVkLCBpcyBpZ25vcmVkLgorICAgICAgICB1c2VybWFpblsnS2V5cyddWyduYW1lJ10gPSAnSURMRSBDbGFzc2ljIFVuaXgnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgTW9kZXJuIFVuaXgnKQorICAgICAgICAjIEVycm9uZW91cyBub24tZGVmYXVsdCBuZXcgYnVpbHRpbiByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluWydLZXlzJ11bJ25hbWUyJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksIHNlbGYuZGVmYXVsdF9rZXlzKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignS2V5cycpCisKKyAgICBkZWYgdGVzdF91c2VyX292ZXJyaWRlX2tleXMoc2VsZik6CisgICAgICAgICMgRXJyb25lb3VzIGN1c3RvbSBuYW1lIChubyBkZWZpbml0aW9uKSByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gRmFsc2UKKyAgICAgICAgICAgIG5hbWUgPSBDdXN0b20gS2V5cworICAgICAgICAgICAgJycnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksIHNlbGYuZGVmYXVsdF9rZXlzKQorICAgICAgICAjIEN1c3RvbSBuYW1lIGlzIHZhbGlkIHdpdGggbWF0Y2hpbmcgU2VjdGlvbiBuYW1lLgorICAgICAgICB1c2Vya2V5cy5yZWFkX3N0cmluZygnW0N1c3RvbSBLZXlzXVxuYT1iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnQ3VzdG9tIEtleXMnKQorICAgICAgICAjIE5hbWUyIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydLZXlzJ11bJ25hbWUyJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksICdDdXN0b20gS2V5cycpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdLZXlzJykKKyAgICAgICAgdXNlcmtleXMucmVtb3ZlX3NlY3Rpb24oJ0N1c3RvbSBLZXlzJykKKworCitjbGFzcyBXYXJuaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF93YXJuKHNlbGYpOgorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgY29uZmlnLl93YXJuZWQgPSBzZXQoKQorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgIGNvbmZpZy5fd2Fybignd2FybmluZycsICdrZXknKQorICAgICAgICBFcXVhbChjb25maWcuX3dhcm5lZCwgeygnd2FybmluZycsJ2tleScpfSkKKyAgICAgICAgRXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICd3YXJuaW5nJysnXG4nKQorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgIGNvbmZpZy5fd2Fybignd2FybmluZycsICdrZXknKQorICAgICAgICBFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuMicsICd5ZWsnKQorICAgICAgICBFcXVhbChjb25maWcuX3dhcm5lZCwgeygnd2FybmluZycsJ2tleScpLCAoJ3dhcm4yJywneWVrJyl9KQorICAgICAgICBFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJ3dhcm4yJysnXG4nKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19oZWxwLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2hlbHAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2NGY4ZWQuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2hlbHAucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotIiIiVW5pdHRlc3RzIGZvciBpZGxlbGliLmNvbmZpZ0hlbHBTb3VyY2VFZGl0IiIiCi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyLCBNYm94LCBFbnRyeQotZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdIZWxwU291cmNlRWRpdCBhcyBoZWxwX2RpYWxvZ19tb2R1bGUKLQotaGVscF9kaWFsb2cgPSBoZWxwX2RpYWxvZ19tb2R1bGUuR2V0SGVscFNvdXJjZURpYWxvZwotCi0KLWNsYXNzIER1bW15X2hlbHBfZGlhbG9nOgotICAgICMgTW9jayBmb3IgdGVzdGluZyB0aGUgZm9sbG93aW5nIG1ldGhvZHMgb2YgaGVscF9kaWFsb2cKLSAgICBtZW51X29rID0gaGVscF9kaWFsb2cubWVudV9vawotICAgIHBhdGhfb2sgPSBoZWxwX2RpYWxvZy5wYXRoX29rCi0gICAgb2sgPSBoZWxwX2RpYWxvZy5vawotICAgIGNhbmNlbCA9IGhlbHBfZGlhbG9nLmNhbmNlbAotICAgICMgQXR0cmlidXRlcywgY29uc3RhbnQgb3IgdmFyaWFibGUsIG5lZWRlZCBmb3IgdGVzdHMKLSAgICBtZW51ID0gVmFyKCkKLSAgICBlbnRyeU1lbnUgPSBFbnRyeSgpCi0gICAgcGF0aCA9IFZhcigpCi0gICAgZW50cnlQYXRoID0gRW50cnkoKQotICAgIHJlc3VsdCA9IE5vbmUKLSAgICBkZXN0cm95ZWQgPSBGYWxzZQotCi0gICAgZGVmIGRlc3Ryb3koc2VsZik6Ci0gICAgICAgIHNlbGYuZGVzdHJveWVkID0gVHJ1ZQotCi0KLSMgbWVudV9vayBhbmQgcGF0aF9vayBjYWxsIE1ib3guc2hvd2Vycm9yIGlmIG1lbnUgYW5kIHBhdGggYXJlIG5vdCBvay4KLW9yaWdfbWJveCA9IGhlbHBfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3gKLXNob3dlcnJvciA9IE1ib3guc2hvd2Vycm9yCi0KLQotY2xhc3MgQ29uZmlnSGVscFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRpYWxvZyA9IER1bW15X2hlbHBfZGlhbG9nKCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGhlbHBfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBNYm94Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBoZWxwX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94ID0gb3JpZ19tYm94Ci0KLSAgICBkZWYgdGVzdF9ibGFua19tZW51KHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmRpYWxvZy5tZW51X29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTWVudSBJdGVtIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignTm8nLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2xvbmdfbWVudShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubWVudS5zZXQoJ2hlbGxvJyAqIDEwKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLm1lbnVfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdNZW51IEl0ZW0gRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdsb25nJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9nb29kX21lbnUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm1lbnUuc2V0KCdoZWxwJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cubWVudV9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X2JsYW5rX3BhdGgoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCcnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF9maWxlX3BhdGgoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCdmb29iYXInICogMTAwKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2ludmFsaWRfdXJsX3BhdGgoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCd3dy5mb29iYXIuY29tJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmRpYWxvZy5wYXRoX29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnRmlsZSBQYXRoIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IGV4aXN0Jywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2h0dC5mb29iYXIuY29tJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmRpYWxvZy5wYXRoX29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnRmlsZSBQYXRoIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IGV4aXN0Jywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9nb29kX3BhdGgoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCdodHRwczovL2RvY3MucHl0aG9uLm9yZycpCi0gICAgICAgIHNob3dlcnJvci50aXRsZSA9ICdObyBFcnJvcicgICMgc2hvdWxkIG5vdCBiZSBjYWxsZWQKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdObyBFcnJvcicpCi0KLSAgICBkZWYgdGVzdF9vayhzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveWVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5kaWFsb2cubWVudS5zZXQoJ2hlbHAnKQotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcnKQotICAgICAgICBzZWxmLmRpYWxvZy5vaygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cucmVzdWx0LCAoJ2hlbHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodHRwczovL2RvY3MucHl0aG9uLm9yZycpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi0gICAgZGVmIHRlc3RfY2FuY2VsKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5jYW5jZWwoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLnJlc3VsdCwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmRlc3Ryb3llZCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19rZXkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUzZjJjOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19rZXkucHkKQEAgLTAsMCArMSwzMyBAQAorJycnIFRlc3QgaWRsZWxpYi5jb25maWdfa2V5LgorCitDb3ZlcmFnZTogNTYlIGZyb20gY3JlYXRpbmcgYW5kIGNsb3NpbmcgZGlhbG9nLgorJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ19rZXkKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworcmVxdWlyZXMoJ2d1aScpCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKKworCitjbGFzcyBHZXRLZXlzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlKCkgICMgU3RvcCAiY2FuJ3QgcnVuIGV2ZW50IGNvbW1hbmQiIHdhcm5pbmcuCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgZGlhID0gY29uZmlnX2tleS5HZXRLZXlzRGlhbG9nKAorICAgICAgICAgICAgc2VsZi5yb290LCAndGVzdCcsICc8PFRlc3Q+PicsIFsnPEtleS1GMTI+J10sIF91dGVzdD1UcnVlKQorICAgICAgICBkaWEuQ2FuY2VsKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfbmFtZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19uYW1lLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGU3MmI5Li4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19uYW1lLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotIiIiVW5pdCB0ZXN0cyBmb3IgaWRsZWxpYi5jb25maWdTZWN0aW9uTmFtZURpYWxvZyIiIgotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFZhciwgTWJveAotZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdTZWN0aW9uTmFtZURpYWxvZyBhcyBuYW1lX2RpYWxvZ19tb2R1bGUKLQotbmFtZV9kaWFsb2cgPSBuYW1lX2RpYWxvZ19tb2R1bGUuR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2cKLQotY2xhc3MgRHVtbXlfbmFtZV9kaWFsb2c6Ci0gICAgIyBNb2NrIGZvciB0ZXN0aW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvZiBuYW1lX2RpYWxvZwotICAgIG5hbWVfb2sgPSBuYW1lX2RpYWxvZy5uYW1lX29rCi0gICAgT2sgPSBuYW1lX2RpYWxvZy5PawotICAgIENhbmNlbCA9IG5hbWVfZGlhbG9nLkNhbmNlbAotICAgICMgQXR0cmlidXRlcywgY29uc3RhbnQgb3IgdmFyaWFibGUsIG5lZWRlZCBmb3IgdGVzdHMKLSAgICB1c2VkX25hbWVzID0gWyd1c2VkJ10KLSAgICBuYW1lID0gVmFyKCkKLSAgICByZXN1bHQgPSBOb25lCi0gICAgZGVzdHJveWVkID0gRmFsc2UKLSAgICBkZWYgZGVzdHJveShzZWxmKToKLSAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSBUcnVlCi0KLSMgbmFtZV9vayBjYWxscyBNYm94LnNob3dlcnJvciBpZiBuYW1lIGlzIG5vdCBvawotb3JpZ19tYm94ID0gbmFtZV9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveAotc2hvd2Vycm9yID0gTWJveC5zaG93ZXJyb3IKLQotY2xhc3MgQ29uZmlnTmFtZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRpYWxvZyA9IER1bW15X25hbWVfZGlhbG9nKCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIG5hbWVfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBNYm94Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBuYW1lX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94ID0gb3JpZ19tYm94Ci0KLSAgICBkZWYgdGVzdF9ibGFua19uYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgnICcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cubmFtZV9vaygpLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdOYW1lIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignTm8nLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X3VzZWRfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubmFtZS5zZXQoJ3VzZWQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTmFtZSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3VzZScsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfbG9uZ19uYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgnZ29vZCcqOCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5uYW1lX29rKCksICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05hbWUgRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCd0b28gbG9uZycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfZ29vZF9uYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgnICBnb29kICcpCi0gICAgICAgIHNob3dlcnJvci50aXRsZSA9ICdObyBFcnJvcicgICMgc2hvdWxkIG5vdCBiZSBjYWxsZWQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5uYW1lX29rKCksICdnb29kJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdObyBFcnJvcicpCi0KLSAgICBkZWYgdGVzdF9vayhzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveWVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5kaWFsb2cubmFtZS5zZXQoJ2dvb2QnKQotICAgICAgICBzZWxmLmRpYWxvZy5PaygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cucmVzdWx0LCAnZ29vZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5kZXN0cm95ZWQpCi0KLSAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3llZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGlhbG9nLkNhbmNlbCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cucmVzdWx0LCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmRlc3Ryb3llZCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdkaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdkaWFsb2cucHkKaW5kZXggNWMwOTc5MC4uNzBiZDE0ZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnZGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weQpAQCAtMSwxNCArMSwxMyBAQAotJycnVGVzdCBpZGxlbGliLmNvbmZpZ0RpYWxvZy4KKycnJ1Rlc3QgaWRsZWxpYi5jb25maWdkaWFsb2cuCiAKIENvdmVyYWdlOiA0NiUganVzdCBieSBjcmVhdGluZyBkaWFsb2cuCiBUaGUgb3RoZXIgaGFsZiBpcyBjb2RlIGZvciB3b3JraW5nIHdpdGggdXNlciBjdXN0b21pemF0aW9ucy4KICcnJwotZnJvbSBpZGxlbGliLmNvbmZpZ0RpYWxvZyBpbXBvcnQgQ29uZmlnRGlhbG9nICAjIGFsd2F5cyB0ZXN0IGltcG9ydAorZnJvbSBpZGxlbGliLmNvbmZpZ2RpYWxvZyBpbXBvcnQgQ29uZmlnRGlhbG9nICAjIGFsd2F5cyB0ZXN0IGltcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0IGFzIG1hY29zeAogCiBjbGFzcyBDb25maWdEaWFsb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTYsNyArMTUsNiBAQAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5yb290ID0gVGsoKQogICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCi0gICAgICAgIG1hY29zeC5faW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzKGNscy5yb290KQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKQEAgLTI0LDcgKzIyLDcgQEAKICAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCiAgICAgICAgIGRlbCBjbHMucm9vdAogCi0gICAgZGVmIHRlc3RfZGlhbG9nKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NvbmZpZ2RpYWxvZyhzZWxmKToKICAgICAgICAgZCA9IENvbmZpZ0RpYWxvZyhzZWxmLnJvb3QsICdUZXN0JywgX3V0ZXN0PVRydWUpCiAgICAgICAgIGQucmVtb3ZlX3Zhcl9jYWxsYmFja3MoKQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWJ1Z2dlci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYmE5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWJ1Z2dlci5weQpAQCAtMCwwICsxLDI5IEBACisnJycgVGVzdCBpZGxlbGliLmRlYnVnZ2VyLgorCitDb3ZlcmFnZTogMTklCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworcmVxdWlyZXMoJ2d1aScpCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKKworCitjbGFzcyBOYW1lU3BhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBkZWJ1Z2dlci5OYW1lc3BhY2VWaWV3ZXIoc2VsZi5yb290LCAnVGVzdCcpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5CmluZGV4IDFmMGJhYTkuLjg1NjI0ZmIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlbGVnYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYi5EZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorZnJvbSBpZGxlbGliLmRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCiAKIGNsYXNzIERlbGVnYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0bWVudS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5CmluZGV4IGEyNThlMjkuLjE3ZWIyNWMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5CkBAIC01LDggKzUsOSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIGltcG9ydCB0a2ludGVyIGFzIHRrCitmcm9tIHRraW50ZXIgaW1wb3J0IHR0awogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlzaGVsbAogCiBjbGFzcyBQYXN0ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICcnJ1Rlc3QgcGFzdGluZyBpbnRvIHdpZGdldHMgdGhhdCBhbGxvdyBwYXN0aW5nLgpAQCAtMTYsMTcgKzE3LDE4IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgY2xzLnJvb3QgPSByb290ID0gdGsuVGsoKQotICAgICAgICByb290LndpdGhkcmF3KCkKLSAgICAgICAgUHlTaGVsbC5maXhfeDExX3Bhc3RlKHJvb3QpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKyAgICAgICAgcHlzaGVsbC5maXhfeDExX3Bhc3RlKHJvb3QpCiAgICAgICAgIGNscy50ZXh0ID0gdGsuVGV4dChyb290KQogICAgICAgICBjbHMuZW50cnkgPSB0ay5FbnRyeShyb290KQorICAgICAgICBjbHMudGVudHJ5ID0gdHRrLkVudHJ5KHJvb3QpCiAgICAgICAgIGNscy5zcGluID0gdGsuU3BpbmJveChyb290KQogICAgICAgICByb290LmNsaXBib2FyZF9jbGVhcigpCiAgICAgICAgIHJvb3QuY2xpcGJvYXJkX2FwcGVuZCgndHdvJykKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGRlbCBjbHMudGV4dCwgY2xzLmVudHJ5LCBjbHMuc3BpbgorICAgICAgICBkZWwgY2xzLnRleHQsIGNscy5lbnRyeSwgY2xzLnRlbnRyeQogICAgICAgICBjbHMucm9vdC5jbGlwYm9hcmRfY2xlYXIoKQogICAgICAgICBjbHMucm9vdC51cGRhdGVfaWRsZXRhc2tzKCkKICAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCkBAIC00NCwxNiArNDYsMTYgQEAKIAogICAgIGRlZiB0ZXN0X3Bhc3RlX2VudHJ5KHNlbGYpOgogICAgICAgICAiVGVzdCBwYXN0aW5nIGludG8gYW4gZW50cnkgd2l0aCBhbmQgd2l0aG91dCBhIHNlbGVjdGlvbi4iCi0gICAgICAgICMgT24gMy42LCBnZW5lcmF0ZWQgPDxQYXN0ZT4+IGZhaWxzIHdpdGhvdXQgZW1wdHkgc2VsZWN0IHJhbmdlCi0gICAgICAgICMgZm9yICdubyBzZWxlY3Rpb24nLiAgTGl2ZSB3aWRnZXQgd29ya3MgZmluZS4KLSAgICAgICAgZW50cnkgPSBzZWxmLmVudHJ5Ci0gICAgICAgIGZvciBlbmQsIGFucyBpbiAoMCwgJ29uZXR3bycpLCAoJ2VuZCcsICd0d28nKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVudHJ5PWVudHJ5LCBlbmQ9ZW5kLCBhbnM9YW5zKToKLSAgICAgICAgICAgICAgICBlbnRyeS5kZWxldGUoMCwgJ2VuZCcpCi0gICAgICAgICAgICAgICAgZW50cnkuaW5zZXJ0KDAsICdvbmUnKQotICAgICAgICAgICAgICAgIGVudHJ5LnNlbGVjdF9yYW5nZSgwLCBlbmQpICAjIHNlZSBub3RlCi0gICAgICAgICAgICAgICAgZW50cnkuZXZlbnRfZ2VuZXJhdGUoJzw8UGFzdGU+PicpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5nZXQoKSwgYW5zKQorICAgICAgICAjIEdlbmVyYXRlZCA8PFBhc3RlPj4gZmFpbHMgZm9yIHRrIGVudHJ5IHdpdGhvdXQgZW1wdHkgc2VsZWN0CisgICAgICAgICMgcmFuZ2UgZm9yICdubyBzZWxlY3Rpb24nLiAgTGl2ZSB3aWRnZXQgd29ya3MgZmluZS4KKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cnksIHNlbGYudGVudHJ5OgorICAgICAgICAgICAgZm9yIGVuZCwgYW5zIGluICgwLCAnb25ldHdvJyksICgnZW5kJywgJ3R3bycpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVudHJ5PWVudHJ5LCBlbmQ9ZW5kLCBhbnM9YW5zKToKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuZGVsZXRlKDAsICdlbmQnKQorICAgICAgICAgICAgICAgICAgICBlbnRyeS5pbnNlcnQoMCwgJ29uZScpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LnNlbGVjdF9yYW5nZSgwLCBlbmQpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmV2ZW50X2dlbmVyYXRlKCc8PFBhc3RlPj4nKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmdldCgpLCBhbnMpCiAKICAgICBkZWYgdGVzdF9wYXN0ZV9zcGluKHNlbGYpOgogICAgICAgICAiVGVzdCBwYXN0aW5nIGludG8gYSBzcGluYm94IHdpdGggYW5kIHdpdGhvdXQgYSBzZWxlY3Rpb24uIgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5CmluZGV4IGEzMWQyNmQuLmU5ZDI5ZDQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIAogY2xhc3MgRWRpdG9yX2Z1bmNfdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZ3JlcC5weQppbmRleCAwZDhmZjBkLi42YjU0YzEzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkKQEAgLTEsNSArMSw1IEBACiAiIiIgIUNoYW5naW5nIHRoaXMgbGluZSB3aWxsIGJyZWFrIFRlc3RfZmluZGZpbGUudGVzdF9mb3VuZCEKLU5vbi1ndWkgdW5pdCB0ZXN0cyBmb3IgaWRsZWxpYi5HcmVwRGlhbG9nIG1ldGhvZHMuCitOb24tZ3VpIHVuaXQgdGVzdHMgZm9yIGdyZXAuR3JlcERpYWxvZyBtZXRob2RzLgogZHVtbXlfY29tbWFuZCBjYWxscyBncmVwX2l0IGNhbGxzIGZpbmRmaWxlcy4KIEFuIGV4Y2VwdGlvbiByYWlzZWQgaW4gb25lIG1ldGhvZCB3aWxsIGZhaWwgY2FsbGVycy4KIE90aGVyd2lzZSwgdGVzdHMgYXJlIG1vc3RseSBpbmRlcGVuZGVudC4KQEAgLTgsNyArOCw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyCi1mcm9tIGlkbGVsaWIuR3JlcERpYWxvZyBpbXBvcnQgR3JlcERpYWxvZworZnJvbSBpZGxlbGliLmdyZXAgaW1wb3J0IEdyZXBEaWFsb2cKIGltcG9ydCByZQogCiBjbGFzcyBEdW1teV9zZWFyY2hlbmdpbmU6CkBAIC03Miw3ICs3Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1s0XS5zdGFydHN3aXRoKCcoSGludDonKSkKIAogY2xhc3MgRGVmYXVsdF9jb21tYW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBUbyB3cml0ZSB0aGlzLCBtb2RlIE91dHB1dFdpbmRvdyBpbXBvcnQgdG8gdG9wIG9mIEdyZXBEaWFsb2cKKyAgICAjIFRvIHdyaXRlIHRoaXMsIG1vdmUgb3V0d2luIGltcG9ydCB0byB0b3Agb2YgR3JlcERpYWxvZwogICAgICMgc28gaXQgY2FuIGJlIHJlcGxhY2VkIGJ5IGNhcHR1cmVkX3N0ZG91dCBpbiBjbGFzcyBzZXR1cC90ZWFyZG93bi4KICAgICBwYXNzCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNjhlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwLnB5CkBAIC0wLDAgKzEsMzQgQEAKKycnJ1Rlc3QgaWRsZWxpYi5oZWxwLgorCitDb3ZlcmFnZTogODclCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaGVscAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2Zyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aCwgZGlybmFtZSwgam9pbgorZnJvbSB0a2ludGVyIGltcG9ydCBUaworaW1wb3J0IHVuaXR0ZXN0CisKK2NsYXNzIEhlbHBGcmFtZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgIkJ5IGl0c2VsZiwgdGhpcyB0ZXN0cyB0aGF0IGZpbGUgcGFyc2VkIHdpdGhvdXQgZXhjZXB0aW9uLiIKKyAgICAgICAgY2xzLnJvb3QgPSByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgaGVscGZpbGUgPSBqb2luKGRpcm5hbWUoZGlybmFtZShhYnNwYXRoKF9fZmlsZV9fKSkpLCAnaGVscC5odG1sJykKKyAgICAgICAgY2xzLmZyYW1lID0gaGVscC5IZWxwRnJhbWUocm9vdCwgaGVscGZpbGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLmZyYW1lCisgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgdGVzdF9saW5lMShzZWxmKToKKyAgICAgICAgdGV4dCA9IHNlbGYuZnJhbWUudGV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQuZ2V0KCcxLjAnLCAnMS5lbmQnKSwgJyBJRExFICcpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwX2Fib3V0LnB5CmluZGV4IGQwYTAxMjcuLjg0M2VmYjkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weQpAQCAtMiwxMCArMiwxMCBAQAogCiBDb3ZlcmFnZToKICcnJwotZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZyBhcyBoZWxwX2Fib3V0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IHRleHRWaWV3IGFzIHRleHR2aWV3Citmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGV4dHZpZXcKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCi1mcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IE1ib3gKK2Zyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveF9mdW5jCiBpbXBvcnQgdW5pdHRlc3QKIAogQWJvdXQgPSBoZWxwX2Fib3V0LkFib3V0RGlhbG9nCkBAIC0xOSwzMyArMTksMzMgQEAKIAogCiBjbGFzcyBEaXNwbGF5RmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICJUZXN0IHRoYXQgLnR4dCBmaWxlcyBhcmUgZm91bmQgYW5kIHByb3Blcmx5IGRlY29kZWQuIgogICAgIGRpYWxvZyA9IER1bW15X2Fib3V0X2RpYWxvZygpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMub3JpZ19tYm94ID0gdGV4dHZpZXcudGtNZXNzYWdlQm94CisgICAgICAgIGNscy5vcmlnX2Vycm9yID0gdGV4dHZpZXcuc2hvd2Vycm9yCiAgICAgICAgIGNscy5vcmlnX3ZpZXcgPSB0ZXh0dmlldy52aWV3X3RleHQKLSAgICAgICAgY2xzLm1ib3ggPSBNYm94KCkKKyAgICAgICAgY2xzLmVycm9yID0gTWJveF9mdW5jKCkKICAgICAgICAgY2xzLnZpZXcgPSBGdW5jKCkKLSAgICAgICAgdGV4dHZpZXcudGtNZXNzYWdlQm94ID0gY2xzLm1ib3gKKyAgICAgICAgdGV4dHZpZXcuc2hvd2Vycm9yID0gY2xzLmVycm9yCiAgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dCA9IGNscy52aWV3CiAgICAgICAgIGNscy5BYm91dCA9IER1bW15X2Fib3V0X2RpYWxvZygpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICB0ZXh0dmlldy50a01lc3NhZ2VCb3ggPSBjbHMub3JpZ19tYm94CisgICAgICAgIHRleHR2aWV3LnNob3dlcnJvciA9IGNscy5vcmlnX2Vycm9yCiAgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dCA9IGNscy5vcmlnX3ZpZXcKIAogICAgIGRlZiB0ZXN0X2ZpbGVfaXNwbGF5KHNlbGYpOgogICAgICAgICBmb3IgaGFuZGxlciBpbiAoc2VsZi5kaWFsb2cuaWRsZV9jcmVkaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWFsb2cuaWRsZV9yZWFkbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpYWxvZy5pZGxlX25ld3MpOgotICAgICAgICAgICAgc2VsZi5tYm94LnNob3dlcnJvci5tZXNzYWdlID0gJycKKyAgICAgICAgICAgIHNlbGYuZXJyb3IubWVzc2FnZSA9ICcnCiAgICAgICAgICAgICBzZWxmLnZpZXcuY2FsbGVkID0gRmFsc2UKLSAgICAgICAgICAgIGhhbmRsZXIoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm1ib3guc2hvd2Vycm9yLm1lc3NhZ2UsICcnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnZpZXcuY2FsbGVkLCBUcnVlKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaGFuZGxlcj1oYW5kbGVyKToKKyAgICAgICAgICAgICAgICBoYW5kbGVyKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXJyb3IubWVzc2FnZSwgJycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnZpZXcuY2FsbGVkLCBUcnVlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hpc3RvcnkucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaWRsZWhpc3RvcnkucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hpc3RvcnkucHkKaW5kZXggNmU3YzZjMy4uYjI3ODAxMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaWRsZWhpc3RvcnkucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQpAQCAtNCw4ICs0LDggQEAKIGltcG9ydCB0a2ludGVyIGFzIHRrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQgYXMgdGtUZXh0CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQgYXMgbWtUZXh0Ci1mcm9tIGlkbGVsaWIuSWRsZUhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKIGxpbmUxID0gJ2EgPSA3JwogbGluZTIgPSAnYiA9IGEnCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oeXBlcnBhcnNlci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5CmluZGV4IDljZTNmMmMuLjczYzgyODEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5CkBAIC0xLDkgKzEsOSBAQAotIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuSHlwZXJQYXJzZXIiIiIKKyIiIlVuaXR0ZXN0IGZvciBpZGxlbGliLmh5cGVycGFyc2VyLnB5LiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdwotZnJvbSBpZGxlbGliLkh5cGVyUGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgorZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIuaHlwZXJwYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCiAKIGNsYXNzIER1bW15RWRpdHdpbjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pby5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvbWVudS5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pby5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CmluZGV4IGUwZTNiOTguLjY1YmY1OTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvbWVudS5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGlvCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHNldWRvSW5wdXRGaWxlLCBQc2V1ZG9PdXRwdXRGaWxlCisKK2Zyb20gaWRsZWxpYi5ydW4gaW1wb3J0IFBzZXVkb0lucHV0RmlsZSwgUHNldWRvT3V0cHV0RmlsZQogCiAKIGNsYXNzIFMoc3RyKToKQEAgLTIzMCw0ICsyMzEsNCBAQAogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X21hY29zeC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X21hY29zeC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWU3NWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5CkBAIC0wLDAgKzEsMTAzIEBACisnJydUZXN0IGlkbGVsaWIubWFjb3N4LnB5LgorCitDb3ZlcmFnZTogNzElIG9uIFdpbmRvd3MuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK2ltcG9ydCBzeXMKK2ltcG9ydCB0a2ludGVyIGFzIHRrCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdC5tb2NrIGFzIG1vY2sKK2Zyb20gaWRsZWxpYi5maWxlbGlzdCBpbXBvcnQgRmlsZUxpc3QKKworbWFjdHlwZXMgPSB7J2NhcmJvbicsICdjb2NvYScsICd4cXVhcnR6J30KK25vbnR5cGVzID0geydvdGhlcid9CithbGx0eXBlcyA9IG1hY3R5cGVzIHwgbm9udHlwZXMKKworCitjbGFzcyBJbml0VGt0eXBlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgX2luaXRfdGtfdHlwZS4iCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSB0ay5UaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKyAgICAgICAgY2xzLm9yaWdfcGxhdGZvcm0gPSBtYWNvc3gucGxhdGZvcm0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisgICAgICAgIG1hY29zeC5wbGF0Zm9ybSA9IGNscy5vcmlnX3BsYXRmb3JtCisKKyAgICBkZWYgdGVzdF9pbml0X3NldHNfdGt0eXBlKHNlbGYpOgorICAgICAgICAiVGVzdCB0aGF0IF9pbml0X3RrX3R5cGUgc2V0cyBfdGtfdHlwZSBhY2NvcmRpbmcgdG8gcGxhdGZvcm0uIgorICAgICAgICBmb3IgcGxhdGZvcm0sIHR5cGVzIGluICgnZGFyd2luJywgYWxsdHlwZXMpLCAoJ290aGVyJywgbm9udHlwZXMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGxhdGZvcm09cGxhdGZvcm0pOgorICAgICAgICAgICAgICAgIG1hY29zeC5wbGF0Zm9ybSA9IHBsYXRmb3JtCisgICAgICAgICAgICAgICAgbWFjb3N4Ll90a190eXBlID09IE5vbmUKKyAgICAgICAgICAgICAgICBtYWNvc3guX2luaXRfdGtfdHlwZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtYWNvc3guX3RrX3R5cGUsIHR5cGVzKQorCisKK2NsYXNzIElzVHlwZVRrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgZWFjaCBvZiB0aGUgZm91ciBpc1R5cGVUayBwcmVkZWNhdGVzLiIKKyAgICBpc2Z1bmNzID0gKChtYWNvc3guaXNBcXVhVGssICgnY2FyYm9uJywgJ2NvY29hJykpLAorICAgICAgICAgICAgICAgKG1hY29zeC5pc0NhcmJvblRrLCAoJ2NhcmJvbicpKSwKKyAgICAgICAgICAgICAgIChtYWNvc3guaXNDb2NvYVRrLCAoJ2NvY29hJykpLAorICAgICAgICAgICAgICAgKG1hY29zeC5pc1hRdWFydHosICgneHF1YXJ0eicpKSwKKyAgICAgICAgICAgICAgICkKKworICAgIEBtb2NrLnBhdGNoKCdpZGxlbGliLm1hY29zeC5faW5pdF90a190eXBlJykKKyAgICBkZWYgdGVzdF9pc19jYWxsc19pbml0KHNlbGYsIG1vY2tpbml0KToKKyAgICAgICAgIlRlc3QgdGhhdCBlYWNoIGlzVHlwZVRrIGNhbGxzIF9pbml0X3RrX3R5cGUgd2hlbiBfdGtfdHlwZSBpcyBOb25lLiIKKyAgICAgICAgbWFjb3N4Ll90a190eXBlID0gTm9uZQorICAgICAgICBmb3IgZnVuYywgd2hlbnRydWUgaW4gc2VsZi5pc2Z1bmNzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZnVuYz1mdW5jKToKKyAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9ja2luaXQuY2FsbGVkKQorICAgICAgICAgICAgICAgIG1vY2tpbml0LnJlc2V0X21vY2soKQorCisgICAgZGVmIHRlc3RfaXNmdW5jcyhzZWxmKToKKyAgICAgICAgIlRlc3QgdGhhdCBlYWNoIGlzVHlwZVRrIHJldHVybiBjb3JyZWN0IGJvb2wuIgorICAgICAgICBmb3IgZnVuYywgd2hlbnRydWUgaW4gc2VsZi5pc2Z1bmNzOgorICAgICAgICAgICAgZm9yIHRrdHlwZSBpbiBhbGx0eXBlczoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmdW5jPWZ1bmMsIHdoZW50cnVlPXdoZW50cnVlLCB0a3R5cGU9dGt0eXBlKToKKyAgICAgICAgICAgICAgICAgICAgbWFjb3N4Ll90a190eXBlID0gdGt0eXBlCisgICAgICAgICAgICAgICAgICAgIChzZWxmLmFzc2VydFRydWUgaWYgdGt0eXBlIGluIHdoZW50cnVlIGVsc2Ugc2VsZi5hc3NlcnRGYWxzZSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmMoKSkKKworCitjbGFzcyBTZXR1cFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IHNldHVwQXBwLiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IHRrLlRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIEBtb2NrLnBhdGNoKCdpZGxlbGliLm1hY29zeC5vdmVycmlkZVJvb3RNZW51JykgICMyNzMxMgorICAgIGRlZiB0ZXN0X3NldHVwYXBwKHNlbGYsIG92ZXJyaWRlUm9vdE1lbnUpOgorICAgICAgICAiQ2FsbCBzZXR1cEFwcCB3aXRoIGVhY2ggcG9zc2libGUgZ3JhcGhpY3MgdHlwZS4iCisgICAgICAgIHJvb3QgPSBzZWxmLnJvb3QKKyAgICAgICAgZmxpc3QgPSBGaWxlTGlzdChyb290KQorICAgICAgICBmb3IgdGt0eXBlIGluIGFsbHR5cGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodGt0eXBlPXRrdHlwZSk6CisgICAgICAgICAgICAgICAgbWFjb3N4Ll90a190eXBlID0gdGt0eXBlCisgICAgICAgICAgICAgICAgbWFjb3N4LnNldHVwQXBwKHJvb3QsIGZsaXN0KQorICAgICAgICAgICAgICAgIGlmIHRrdHlwZSBpbiAoJ2NhcmJvbicsICdjb2NvYScpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3ZlcnJpZGVSb290TWVudS5jYWxsZWQpCisgICAgICAgICAgICAgICAgb3ZlcnJpZGVSb290TWVudS5yZXNldF9tb2NrKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJhZ3JhcGgucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZm9ybWF0cGFyYWdyYXBoLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJhZ3JhcGgucHkKaW5kZXggYjZlYjJmMy4uYmEzNTBjOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZm9ybWF0cGFyYWdyYXBoLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQpAQCAtMSw3ICsxLDcgQEAKLSMgVGVzdCB0aGUgZnVuY3Rpb25zIGFuZCBtYWluIGNsYXNzIG1ldGhvZCBvZiBGb3JtYXRQYXJhZ3JhcGgucHkKKyMgVGVzdCB0aGUgZnVuY3Rpb25zIGFuZCBtYWluIGNsYXNzIG1ldGhvZCBvZiBwYXJhZ3JhcGgucHkKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBGb3JtYXRQYXJhZ3JhcGggYXMgZnAKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliIGltcG9ydCBwYXJhZ3JhcGggYXMgZnAKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiAKQEAgLTM4LDcgKzM4LDcgQEAKIAogCiBjbGFzcyBGaW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdCB0aGUgZmluZF9wYXJhZ3JhcGggZnVuY3Rpb24gaW4gRm9ybWF0UGFyYWdyYXBoLgorICAgICIiIlRlc3QgdGhlIGZpbmRfcGFyYWdyYXBoIGZ1bmN0aW9uIGluIHBhcmFncmFwaCBtb2R1bGUuCiAKICAgICBVc2luZyB0aGUgcnVuY2FzZSgpIGZ1bmN0aW9uLCBmaW5kX3BhcmFncmFwaCgpIGlzIGNhbGxlZCB3aXRoICdtYXJrJyBzZXQgYXQKICAgICBtdWx0aXBsZSBpbmRleGVzIGJlZm9yZSBhbmQgaW5zaWRlIHRoZSB0ZXN0IHBhcmFncmFwaC4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJlbm1hdGNoLnB5CmluZGV4IDk1Y2MyMmMuLjA1MWY3ZWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weQpAQCAtMSw0ICsxLDQgQEAKLScnJ1Rlc3QgaWRsZWxpYi5QYXJlbk1hdGNoLgorJycnVGVzdCBpZGxlbGliLnBhcmVubWF0Y2guCiAKIFRoaXMgbXVzdCBjdXJyZW50bHkgYmUgYSBndWkgdGVzdCBiZWNhdXNlIFBhcmVuTWF0Y2ggbWV0aG9kcyB1c2UKIHNldmVyYWwgdGV4dCBtZXRob2RzIG5vdCBkZWZpbmVkIG9uIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsuVGV4dC4KQEAgLTksNyArOSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jawogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLlBhcmVuTWF0Y2ggaW1wb3J0IFBhcmVuTWF0Y2gKK2Zyb20gaWRsZWxpYi5wYXJlbm1hdGNoIGltcG9ydCBQYXJlbk1hdGNoCiAKIGNsYXNzIER1bW15RWRpdHdpbjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCk6CkBAIC0zOCwxMiArMzgsMTcgQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYudGV4dC5kZWxldGUoJzEuMCcsICdlbmQnKQogCisgICAgZGVmIGdldF9wYXJlbm1hdGNoKHNlbGYpOgorICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbS5iZWxsID0gbGFtYmRhOiBOb25lCisgICAgICAgIHJldHVybiBwbQorCiAgICAgZGVmIHRlc3RfcGFyZW5fZXhwcmVzc2lvbihzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFRlc3QgUGFyZW5NYXRjaCB3aXRoICdleHByZXNzaW9uJyBzdHlsZS4KICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKICAgICAgICAgcG0uc2V0X3N0eWxlKCdleHByZXNzaW9uJykKIAogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJ2RlZiBmb29iYXIoYSwgYicpCkBAIC02Niw3ICs3MSw3IEBACiAgICAgICAgIFRlc3QgUGFyZW5NYXRjaCB3aXRoICdkZWZhdWx0JyBzdHlsZS4KICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKICAgICAgICAgcG0uc2V0X3N0eWxlKCdkZWZhdWx0JykKIAogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJ2RlZiBmb29iYXIoYSwgYicpCkBAIC04Niw3ICs5MSw3IEBACiAgICAgICAgIFRoZXNlIGNhc2VzIGZvcmNlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gYW5kIGFsdGVybmF0ZSBwYXRocy4KICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKIAogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJyMgdGhpcyBpcyBhIGNvbW1lbiknKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwbS5wYXJlbl9jbG9zZWRfZXZlbnQoJ2V2ZW50JykpCkBAIC05OSw3ICsxMDQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwbS5wYXJlbl9jbG9zZWRfZXZlbnQoJ2V2ZW50JykpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfcmVzdG9yZV90aW1lcihzZWxmKToKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKICAgICAgICAgcG0ucmVzdG9yZV9ldmVudCA9IE1vY2soKQogICAgICAgICBwbS5oYW5kbGVfcmVzdG9yZV90aW1lcigwKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG0ucmVzdG9yZV9ldmVudC5jYWxsZWQpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXRoYnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5CmluZGV4IGFmYjg4NmYuLjgxM2NiY2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5CkBAIC0yLDEzICsyLDEzIEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpZGxlbGliCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFBhdGhCcm93c2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IHBhdGhicm93c2VyCiAKIGNsYXNzIFBhdGhCcm93c2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9EaXJCcm93c2VyVHJlZUl0ZW0oc2VsZik6CiAgICAgICAgICMgSXNzdWUxNjIyNiAtIG1ha2Ugc3VyZSB0aGF0IGdldHRpbmcgYSBzdWJsaXN0IHdvcmtzCi0gICAgICAgIGQgPSBQYXRoQnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0oJycpCisgICAgICAgIGQgPSBwYXRoYnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0oJycpCiAgICAgICAgIGQuR2V0U3ViTGlzdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGQuR2V0VGV4dCgpKQogCkBAIC0xNywxMSArMTcsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmlzcGFja2FnZWRpcihkaXIgKyAnL0ljb25zJyksIEZhbHNlKQogCiAgICAgZGVmIHRlc3RfUGF0aEJyb3dzZXJUcmVlSXRlbShzZWxmKToKLSAgICAgICAgcCA9IFBhdGhCcm93c2VyLlBhdGhCcm93c2VyVHJlZUl0ZW0oKQorICAgICAgICBwID0gcGF0aGJyb3dzZXIuUGF0aEJyb3dzZXJUcmVlSXRlbSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5HZXRUZXh0KCksICdzeXMucGF0aCcpCiAgICAgICAgIHN1YiA9IHAuR2V0U3ViTGlzdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN1YiksIGxlbihzeXMucGF0aCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzdWJbMF0pLCBQYXRoQnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzdWJbMF0pLCBwYXRoYnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0pCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wZXJjb2xhdG9yLnB5CmluZGV4IDRjMGE3YWQuLjU3M2I5YTEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weQpAQCAtMSwxMCArMSwxMCBAQAotJycnVGVzdCBQZXJjb2xhdG9yJycnCisnJydUZXN0IHBlcmNvbGF0b3IucHkuJycnCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCwgVGssIEVORAotZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IsIERlbGVnYXRvcgorZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IsIERlbGVnYXRvcgogCiAKIGNsYXNzIE15RmlsdGVyKERlbGVnYXRvcik6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9xdWVyeS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YWY4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9xdWVyeS5weQpAQCAtMCwwICsxLDM1MyBAQAorIiIiVGVzdCBpZGxlbGliLnF1ZXJ5LgorCitOb24tZ3VpIHRlc3RzIGZvciBRdWVyeSwgU2VjdGlvbk5hbWUsIE1vZHVsZU5hbWUsIGFuZCBIZWxwU291cmNlIHVzZQorZHVtbXkgdmVyc2lvbnMgdGhhdCBleHRyYWN0IHRoZSBub24tZ3VpIG1ldGhvZHMgYW5kIGFkZCBvdGhlciBuZWVkZWQKK2F0dHJpYnV0ZXMuICBHVUkgdGVzdHMgY3JlYXRlIGFuIGluc3RhbmNlIG9mIGVhY2ggY2xhc3MgYW5kIHNpbXVsYXRlCitlbnRyaWVzIGFuZCBidXR0b24gY2xpY2tzLiAgU3ViY2xhc3MgdGVzdHMgb25seSB0YXJnZXQgdGhlIG5ldyBjb2RlIGluCit0aGUgc3ViY2xhc3MgZGVmaW5pdGlvbi4KKworVGhlIGFwcGVhcmFuY2Ugb2YgdGhlIHdpZGdldHMgaXMgY2hlY2tlZCBieSB0aGUgUXVlcnkgYW5kCitIZWxwU291cmNlIGh0ZXN0cy4gIFRoZXNlIGFyZSBydW4gYnkgcnVubmluZyBxdWVyeS5weS4KKworQ292ZXJhZ2U6IDk0JSAoMTAwJSBmb3IgUXVlcnkgYW5kIFNlY3Rpb25OYW1lKS4KKzYgb2YgOCBtaXNzaW5nIGFyZSBNb2R1bGVOYW1lIGV4Y2VwdGlvbnMgSSBkb24ndCBrbm93IGhvdyB0byB0cmlnZ2VyLgorIiIiCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK2ltcG9ydCBzeXMKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcXVlcnkKKworCisjIE5PTi1HVUkgVEVTVFMKKworY2xhc3MgUXVlcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBRdWVyeSBiYXNlIGNsYXNzLiIKKworICAgIGNsYXNzIER1bW15X1F1ZXJ5OgorICAgICAgICAjIFRlc3QgdGhlIGZvbGxvd2luZyBRdWVyeSBtZXRob2RzLgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LlF1ZXJ5LmVudHJ5X29rCisgICAgICAgIG9rID0gcXVlcnkuUXVlcnkub2sKKyAgICAgICAgY2FuY2VsID0gcXVlcnkuUXVlcnkuY2FuY2VsCisgICAgICAgICMgQWRkIGF0dHJpYnV0ZXMgYW5kIGluaXRpYWxpemF0aW9uIG5lZWRlZCBmb3IgdGVzdHMuCisgICAgICAgIGVudHJ5ID0gVmFyKCkKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfZW50cnkpOgorICAgICAgICAgICAgc2VsZi5lbnRyeS5zZXQoZHVtbXlfZW50cnkpCisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCisgICAgICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IEZhbHNlCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisgICAgICAgIGRlZiBkZXN0cm95KHNlbGYpOgorICAgICAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSBUcnVlCisKKyAgICBkZWYgdGVzdF9lbnRyeV9va19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdibGFuayBsaW5lJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9lbnRyeV9va19nb29kKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCcgIGdvb2QgJykKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCAnZ29vZCcpCisgICAgICAgIEVxdWFsKChkaWFsb2cucmVzdWx0LCBkaWFsb2cuZGVzdHJveWVkKSwgKE5vbmUsIEZhbHNlKSkKKyAgICAgICAgRXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisgICAgZGVmIHRlc3Rfb2tfYmxhbmsoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfUXVlcnkoJycpCisgICAgICAgIGRpYWxvZy5lbnRyeS5mb2N1c19zZXQgPSBtb2NrLk1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlhbG9nLmVudHJ5LmZvY3VzX3NldC5jYWxsZWQpCisgICAgICAgIGRlbCBkaWFsb2cuZW50cnkuZm9jdXNfc2V0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgRmFsc2UpKQorCisgICAgZGVmIHRlc3Rfb2tfZ29vZChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnZ29vZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLm9rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoJ2dvb2QnLCBUcnVlKSkKKworICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnZG9lcyBub3QgbWF0dGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuY2FuY2VsKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgVHJ1ZSkpCisKKworY2xhc3MgU2VjdGlvbk5hbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBTZWN0aW9uTmFtZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9TZWN0aW9uTmFtZToKKyAgICAgICAgZW50cnlfb2sgPSBxdWVyeS5TZWN0aW9uTmFtZS5lbnRyeV9vayAgIyBGdW5jdGlvbiBiZWluZyB0ZXN0ZWQuCisgICAgICAgIHVzZWRfbmFtZXMgPSBbJ3VzZWQnXQorICAgICAgICBlbnRyeSA9IFZhcigpCisgICAgICAgIGVudHJ5X2Vycm9yID0ge30KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1bW15X2VudHJ5KToKKyAgICAgICAgICAgIHNlbGYuZW50cnkuc2V0KGR1bW15X2VudHJ5KQorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9IG1lc3NhZ2UKKworICAgIGRlZiB0ZXN0X2JsYW5rX3NlY3Rpb25fbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9TZWN0aW9uTmFtZSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vIG5hbWUnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X3VzZWRfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCd1c2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9sb25nX3NlY3Rpb25fbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9TZWN0aW9uTmFtZSgnZ29vZCcqOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbG9uZ2VyIHRoYW4gMzAnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2dvb2Rfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCcgIGdvb2QgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgJ2dvb2QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddLCAnJykKKworCitjbGFzcyBNb2R1bGVOYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgTW9kdWxlTmFtZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9Nb2R1bGVOYW1lOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5Lk1vZHVsZU5hbWUuZW50cnlfb2sgICMgRnVuY3Rpb24gYmVpbmcgdGVzdGVkLgorICAgICAgICB0ZXh0MCA9ICcnCisgICAgICAgIGVudHJ5ID0gVmFyKCkKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfZW50cnkpOgorICAgICAgICAgICAgc2VsZi5lbnRyeS5zZXQoZHVtbXlfZW50cnkpCisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gbWVzc2FnZQorCisgICAgZGVmIHRlc3RfYmxhbmtfbW9kdWxlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vIG5hbWUnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2JvZ3VzX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJ19fbmFtZV94eXoxMjNfc2hvdWxkX25vdF9leGlzdF9fJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IGZvdW5kJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9jX3NvdXJjZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJ2l0ZXJ0b29scycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NvdXJjZS1iYXNlZCcsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfZ29vZF9tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9Nb2R1bGVOYW1lKCdpZGxlbGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5lbnRyeV9vaygpLmVuZHN3aXRoKCdfX2luaXRfXy5weScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddLCAnJykKKworCisjIDMgSGVscFNvdXJjZSB0ZXN0IGNsYXNzZXMgZWFjaCB0ZXN0IG9uZSBmdW5jdGlvbi4KKworb3JpZ19wbGF0Zm9ybSA9IHF1ZXJ5LnBsYXRmb3JtCisKK2NsYXNzIEhlbHBzb3VyY2VCcm93c2VmaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgYnJvd3NlX2ZpbGUgbWV0aG9kIG9mIE1vZHVsZU5hbWUgc3ViY2xhc3Mgb2YgUXVlcnkuIgorCisgICAgY2xhc3MgRHVtbXlfSGVscFNvdXJjZToKKyAgICAgICAgYnJvd3NlX2ZpbGUgPSBxdWVyeS5IZWxwU291cmNlLmJyb3dzZV9maWxlCisgICAgICAgIHBhdGh2YXIgPSBWYXIoKQorCisgICAgZGVmIHRlc3RfZmlsZV9yZXBsYWNlc19wYXRoKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoKQorICAgICAgICAjIFBhdGggaXMgd2lkZ2V0IGVudHJ5LCBlaXRoZXIgJycgb3Igc29tZXRoaW5nLgorICAgICAgICAjIEZ1bmMgcmV0dXJuIGlzIGZpbGUgZGlhbG9nIHJldHVybiwgZWl0aGVyICcnIG9yIHNvbWV0aGluZy4KKyAgICAgICAgIyBGdW5jIHJldHVybiBzaG91bGQgb3ZlcnJpZGUgd2lkZ2V0IGVudHJ5LgorICAgICAgICAjIFdlIG5lZWQgYWxsIDQgY29tYmluYXRpb24gdG8gdGVzdCBhbGwgKG1vc3QpIGNvZGUgcGF0aHMuCisgICAgICAgIGZvciBwYXRoLCBmdW5jLCByZXN1bHQgaW4gKAorICAgICAgICAgICAgICAgICgnJywgbGFtYmRhIGEsYixjOicnLCAnJyksCisgICAgICAgICAgICAgICAgKCcnLCBsYW1iZGEgYSxiLGM6IF9fZmlsZV9fLCBfX2ZpbGVfXyksCisgICAgICAgICAgICAgICAgKCdodGVzdCcsIGxhbWJkYSBhLGIsYzonJywgJ2h0ZXN0JyksCisgICAgICAgICAgICAgICAgKCdodGVzdCcsIGxhbWJkYSBhLGIsYzogX19maWxlX18sIF9fZmlsZV9fKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgpOgorICAgICAgICAgICAgICAgIGRpYWxvZy5wYXRodmFyLnNldChwYXRoKQorICAgICAgICAgICAgICAgIGRpYWxvZy5hc2tmaWxlbmFtZSA9IGZ1bmMKKyAgICAgICAgICAgICAgICBkaWFsb2cuYnJvd3NlX2ZpbGUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGh2YXIuZ2V0KCksIHJlc3VsdCkKKworCitjbGFzcyBIZWxwc291cmNlUGF0aG9rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgcGF0aF9vayBtZXRob2Qgb2YgSGVscFNvdXJjZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBwYXRoX29rID0gcXVlcnkuSGVscFNvdXJjZS5wYXRoX29rCisgICAgICAgIHBhdGggPSBWYXIoKQorICAgICAgICBwYXRoX2Vycm9yID0ge30KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1bW15X3BhdGgpOgorICAgICAgICAgICAgc2VsZi5wYXRoLnNldChkdW1teV9wYXRoKQorICAgICAgICAgICAgc2VsZi5wYXRoX2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UsIHdpZGdldD1Ob25lKToKKyAgICAgICAgICAgIHNlbGYucGF0aF9lcnJvclsndGV4dCddID0gbWVzc2FnZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgcXVlcnkucGxhdGZvcm0gPSBvcmlnX3BsYXRmb3JtCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vIGhlbHAgZmlsZScsIGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX2JhZChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKF9fZmlsZV9fICsgJ2JhZC1iYWQtYmFkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBkaWFsb2cucGF0aF9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfcGF0aF9va193ZWIoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgnJykKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIGZvciB1cmwgaW4gJ3d3dy5weS5vcmcnLCAnaHR0cDovL3B5Lm9yZyc6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgpOgorICAgICAgICAgICAgICAgIGRpYWxvZy5wYXRoLnNldCh1cmwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9vaygpLCB1cmwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9lcnJvclsndGV4dCddLCAnJykKKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfZmlsZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCcnKQorICAgICAgICBmb3IgcGxhdGZvcm0sIHByZWZpeCBpbiAoJ2RhcndpbicsICdmaWxlOi8vJyksICgnb3RoZXInLCAnJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgpOgorICAgICAgICAgICAgICAgIHF1ZXJ5LnBsYXRmb3JtID0gcGxhdGZvcm0KKyAgICAgICAgICAgICAgICBkaWFsb2cucGF0aC5zZXQoX19maWxlX18pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9vaygpLCBwcmVmaXggKyBfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10sICcnKQorCisKK2NsYXNzIEhlbHBzb3VyY2VFbnRyeW9rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgZW50cnlfb2sgbWV0aG9kIG9mIEhlbHBTb3VyY2Ugc3ViY2xhc3Mgb2YgUXVlcnkuIgorCisgICAgY2xhc3MgRHVtbXlfSGVscFNvdXJjZToKKyAgICAgICAgZW50cnlfb2sgPSBxdWVyeS5IZWxwU291cmNlLmVudHJ5X29rCisgICAgICAgIGVudHJ5X2Vycm9yID0ge30KKyAgICAgICAgcGF0aF9lcnJvciA9IHt9CisgICAgICAgIGRlZiBpdGVtX29rKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQorICAgICAgICBkZWYgcGF0aF9vayhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2hlbHBzb3VyY2Uoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgpCisgICAgICAgIGZvciBuYW1lLCBwYXRoLCByZXN1bHQgaW4gKChOb25lLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICdkb2MudHh0JywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZG9jJywgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZG9jJywgJ2RvYy50eHQnLCAoJ2RvYycsICdkb2MudHh0JykpKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLm5hbWUsIGRpYWxvZy5wYXRoID0gbmFtZSwgcGF0aAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIHJlc3VsdCkKKworCisjIEdVSSBURVNUUworCitjbGFzcyBRdWVyeUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gcm9vdCA9IFRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBjbHMuZGlhbG9nID0gcXVlcnkuUXVlcnkocm9vdCwgJ1RFU1QnLCAndGVzdCcsIF91dGVzdD1UcnVlKQorICAgICAgICBjbHMuZGlhbG9nLmRlc3Ryb3kgPSBtb2NrLk1vY2soKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgZGVsIGNscy5kaWFsb2cKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRpYWxvZy5lbnRyeS5kZWxldGUoMCwgJ2VuZCcpCisgICAgICAgIHNlbGYuZGlhbG9nLnJlc3VsdCA9IE5vbmUKKyAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveS5yZXNldF9tb2NrKCkKKworICAgIGRlZiB0ZXN0X2NsaWNrX29rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLmRpYWxvZworICAgICAgICBkaWFsb2cuZW50cnkuaW5zZXJ0KDAsICdhYmMnKQorICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZGVzdHJveS5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9jbGlja19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5kaWFsb2cKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9vay5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5yZXN1bHQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGlhbG9nLmRlc3Ryb3kuY2FsbGVkKQorCisgICAgZGVmIHRlc3RfY2xpY2tfY2FuY2VsKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLmRpYWxvZworICAgICAgICBkaWFsb2cuZW50cnkuaW5zZXJ0KDAsICdhYmMnKQorICAgICAgICBkaWFsb2cuYnV0dG9uX2NhbmNlbC5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5yZXN1bHQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZGVzdHJveS5jYWxsZWQpCisKKworY2xhc3MgU2VjdGlvbm5hbWVHdWlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorCisgICAgZGVmIHRlc3RfY2xpY2tfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5LlNlY3Rpb25OYW1lKHJvb3QsICdUJywgJ3QnLCB7J2FiYyd9LCBfdXRlc3Q9VHJ1ZSkKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnVzZWRfbmFtZXMsIHsnYWJjJ30pCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ29rYXknKQorICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgJ29rYXknKQorICAgICAgICBkZWwgZGlhbG9nCisgICAgICAgIHJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCByb290CisKKworY2xhc3MgTW9kdWxlbmFtZUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisKKyAgICBkZWYgdGVzdF9jbGlja19tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgcm9vdCA9IFRrKCkKKyAgICAgICAgcm9vdC53aXRoZHJhdygpCisgICAgICAgIGRpYWxvZyA9ICBxdWVyeS5Nb2R1bGVOYW1lKHJvb3QsICdUJywgJ3QnLCAnaWRsZWxpYicsIF91dGVzdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy50ZXh0MCwgJ2lkbGVsaWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeS5nZXQoKSwgJ2lkbGVsaWInKQorICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cucmVzdWx0LmVuZHN3aXRoKCdfX2luaXRfXy5weScpKQorICAgICAgICBkZWwgZGlhbG9nCisgICAgICAgIHJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCByb290CisKKworY2xhc3MgSGVscHNvdXJjZUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisKKyAgICBkZWYgdGVzdF9jbGlja19oZWxwX3NvdXJjZShzZWxmKToKKyAgICAgICAgcm9vdCA9IFRrKCkKKyAgICAgICAgcm9vdC53aXRoZHJhdygpCisgICAgICAgIGRpYWxvZyA9ICBxdWVyeS5IZWxwU291cmNlKHJvb3QsICdUJywgbWVudWl0ZW09J19fdGVzdF9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXBhdGg9X19maWxlX18sIF91dGVzdD1UcnVlKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgRXF1YWwoZGlhbG9nLmVudHJ5LmdldCgpLCAnX190ZXN0X18nKQorICAgICAgICBFcXVhbChkaWFsb2cucGF0aC5nZXQoKSwgX19maWxlX18pCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgcHJlZml4ID0gImZpbGU6Ly8iIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBlbHNlICcnCisgICAgICAgIEVxdWFsKGRpYWxvZy5yZXN1bHQsICgnX190ZXN0X18nLCBwcmVmaXggKyBfX2ZpbGVfXykpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlZGlyZWN0b3IucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2lkZ2V0cmVkaXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlZGlyZWN0b3IucHkKaW5kZXggYmFhOTc1ZC4uYjAzODVmYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2lkZ2V0cmVkaXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQpAQCAtMSw0ICsxLDQgQEAKLScnJ1Rlc3QgaWRsZWxpYi5XaWRnZXRSZWRpcmVjdG9yLgorJycnVGVzdCBpZGxlbGliLnJlZGlyZWN0b3IuCiAKIDEwMCUgY292ZXJhZ2UKICcnJwpAQCAtNiw3ICs2LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQsIFRjbEVycm9yCi1mcm9tIGlkbGVsaWIuV2lkZ2V0UmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgorZnJvbSBpZGxlbGliLnJlZGlyZWN0b3IgaW1wb3J0IFdpZGdldFJlZGlyZWN0b3IKIAogCiBjbGFzcyBJbml0Q2xvc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEyMCw2ICsxMjAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucm9vdC5jYWxsKHNlbGYudGV4dC5fdywgJ2luc2VydCcsICdib28nKSwgJycpCiAKIAotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlZGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZS5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlZGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CmluZGV4IGZmNDQ4MjAuLjk5MTNlZDIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZS5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIlVuaXR0ZXN0IGZvciBpZGxlbGliLlJlcGxhY2VEaWFsb2ciIiIKKyIiIlVuaXR0ZXN0IGZvciBpZGxlbGliLnJlcGxhY2UucHkiIiIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogcmVxdWlyZXMoJ2d1aScpCiAKQEAgLTYsOCArNiw4IEBACiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAotaW1wb3J0IGlkbGVsaWIuU2VhcmNoRW5naW5lIGFzIHNlCi1pbXBvcnQgaWRsZWxpYi5SZXBsYWNlRGlhbG9nIGFzIHJkCitpbXBvcnQgaWRsZWxpYi5zZWFyY2hlbmdpbmUgYXMgc2UKK2Zyb20gaWRsZWxpYi5yZXBsYWNlIGltcG9ydCBSZXBsYWNlRGlhbG9nCiAKIG9yaWdfbWJveCA9IHNlLnRrTWVzc2FnZUJveAogc2hvd2Vycm9yID0gTWJveC5zaG93ZXJyb3IKQEAgLTIxLDcgKzIxLDggQEAKICAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQogICAgICAgICBzZS50a01lc3NhZ2VCb3ggPSBNYm94CiAgICAgICAgIGNscy5lbmdpbmUgPSBzZS5TZWFyY2hFbmdpbmUoY2xzLnJvb3QpCi0gICAgICAgIGNscy5kaWFsb2cgPSByZC5SZXBsYWNlRGlhbG9nKGNscy5yb290LCBjbHMuZW5naW5lKQorICAgICAgICBjbHMuZGlhbG9nID0gUmVwbGFjZURpYWxvZyhjbHMucm9vdCwgY2xzLmVuZ2luZSkKKyAgICAgICAgY2xzLmRpYWxvZy5iZWxsID0gbGFtYmRhOiBOb25lCiAgICAgICAgIGNscy5kaWFsb2cub2sgPSBNb2NrKCkKICAgICAgICAgY2xzLnRleHQgPSBUZXh0KGNscy5yb290KQogICAgICAgICBjbHMudGV4dC51bmRvX2Jsb2NrX3N0YXJ0ID0gTW9jaygpCkBAIC03MCw3ICs3MSw2IEBACiAgICAgICAgICMgdGV4dCBmb3VuZCBhbmQgcmVwbGFjZWQKICAgICAgICAgcHYuc2V0KCdhJykKICAgICAgICAgcnYuc2V0KCdhc2RmJykKLSAgICAgICAgc2VsZi5kaWFsb2cub3BlbihzZWxmLnRleHQpCiAgICAgICAgIHJlcGxhY2UoKQogICAgICAgICBlcXVhbCh0ZXh0LmdldCgnMS44JywgJzEuMTInKSwgJ2FzZGYnKQogCkBAIC05MSw3ICs5MSw3IEBACiAgICAgICAgIHRleHQubWFya19zZXQoJ2luc2VydCcsICdlbmQnKQogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJ1xubGluZTQyOicpCiAgICAgICAgIGJlZm9yZV90ZXh0ID0gdGV4dC5nZXQoJzEuMCcsICdlbmQnKQotICAgICAgICBwdi5zZXQoJ1thLXpdW1xkXSsnKQorICAgICAgICBwdi5zZXQocidbYS16XVtcZF0rJykKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGFmdGVyX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCiAgICAgICAgIGVxdWFsKGJlZm9yZV90ZXh0LCBhZnRlcl90ZXh0KQpAQCAtMTkyLDcgKzE5Miw3IEBACiAgICAgICAgIHNlbGYuZW5naW5lLnJldmFyLnNldChUcnVlKQogCiAgICAgICAgIGJlZm9yZV90ZXh0ID0gdGV4dC5nZXQoJzEuMCcsICdlbmQnKQotICAgICAgICBwdi5zZXQoJ1thLXpdW1xkXSsnKQorICAgICAgICBwdi5zZXQocidbYS16XVtcZF0rJykKICAgICAgICAgcnYuc2V0KCdoZWxsbycpCiAgICAgICAgIHJlcGxhY2UoKQogICAgICAgICBhZnRlcl90ZXh0ID0gdGV4dC5nZXQoJzEuMCcsICdlbmQnKQpAQCAtMjA3LDcgKzIwNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Vycm9yJywgc2hvd2Vycm9yLnRpdGxlKQogICAgICAgICBzZWxmLmFzc2VydEluKCdFbXB0eScsIHNob3dlcnJvci5tZXNzYWdlKQogCi0gICAgICAgIHB2LnNldCgnW1xkJykKKyAgICAgICAgcHYuc2V0KHInW1xkJykKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Vycm9yJywgc2hvd2Vycm9yLnRpdGxlKQogICAgICAgICBzZWxmLmFzc2VydEluKCdQYXR0ZXJuJywgc2hvd2Vycm9yLm1lc3NhZ2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkKaW5kZXggMWM5MGI5My4uMTMwZTZiZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcnN0cmlwLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGlkbGVsaWIuUnN0cmlwRXh0ZW5zaW9uIGFzIHJzCitpbXBvcnQgaWRsZWxpYi5yc3RyaXAgYXMgcnMKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBFZGl0b3IKIAogY2xhc3MgcnN0cmlwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yMSw3ICsyMSw3IEBACiAgICAgZGVmIHRlc3RfcnN0cmlwX211bHRpcGxlKHNlbGYpOgogICAgICAgICBlZGl0b3IgPSBFZGl0b3IoKQogICAgICAgICAjICBVbmNvbW1lbnQgZm9sbG93aW5nIHRvIHZlcmlmeSB0aGF0IHRlc3QgcGFzc2VzIHdpdGggcmVhbCB3aWRnZXRzLgotIyMgICAgICAgIGZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdyBhcyBFZGl0b3IKKyMjICAgICAgICBmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cgYXMgRWRpdG9yCiAjIyAgICAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUawogIyMgICAgICAgIGVkaXRvciA9IEVkaXRvcihyb290PVRrKCkpCiAgICAgICAgIHRleHQgPSBlZGl0b3IudGV4dApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2Nyb2xsZWRsaXN0LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2Nyb2xsZWRsaXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YWFiZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkKQEAgLTAsMCArMSwyOSBAQAorJycnIFRlc3QgaWRsZWxpYi5zY3JvbGxlZGxpc3QuCisKK0NvdmVyYWdlOiAzOSUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBzY3JvbGxlZGxpc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworcmVxdWlyZXMoJ2d1aScpCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKKworCitjbGFzcyBTY3JvbGxlZExpc3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBzY3JvbGxlZGxpc3QuU2Nyb2xsZWRMaXN0KHNlbGYucm9vdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2gucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2gucHkKaW5kZXggMTkwYzg2Ni4uODBmYTkzYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIlRlc3QgU2VhcmNoRGlhbG9nIGNsYXNzIGluIFNlYXJjaERpYWxvZ3VlLnB5IiIiCisiIiJUZXN0IFNlYXJjaERpYWxvZyBjbGFzcyBpbiBpZGxlbGliLnNlYXJjaC5weSIiIgogCiAjIERvZXMgbm90IGN1cnJlbnRseSB0ZXN0IHRoZSBldmVudCBoYW5kbGVyIHdyYXBwZXJzLgogIyBBIHVzYWdlIHRlc3Qgc2hvdWxkIHNpbXVsYXRlIGNsaWNrcyBhbmQgY2hlY2sgaGlsaWdodGluZy4KQEAgLTExLDggKzExLDggQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRraW50ZXIgYXMgdGsKIGZyb20gdGtpbnRlciBpbXBvcnQgQm9vbGVhblZhcgotaW1wb3J0IGlkbGVsaWIuU2VhcmNoRW5naW5lIGFzIHNlCi1pbXBvcnQgaWRsZWxpYi5TZWFyY2hEaWFsb2cgYXMgc2QKK2ltcG9ydCBpZGxlbGliLnNlYXJjaGVuZ2luZSBhcyBzZQoraW1wb3J0IGlkbGVsaWIuc2VhcmNoIGFzIHNkCiAKIAogY2xhc3MgU2VhcmNoRGlhbG9nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yOSw2ICsyOSw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmVuZ2luZSA9IHNlLlNlYXJjaEVuZ2luZShzZWxmLnJvb3QpCiAgICAgICAgIHNlbGYuZGlhbG9nID0gc2QuU2VhcmNoRGlhbG9nKHNlbGYucm9vdCwgc2VsZi5lbmdpbmUpCisgICAgICAgIHNlbGYuZGlhbG9nLmJlbGwgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgc2VsZi50ZXh0ID0gdGsuVGV4dChzZWxmLnJvb3QpCiAgICAgICAgIHNlbGYudGV4dC5pbnNlcnQoJzEuMCcsICdIZWxsbyBXb3JsZCEnKQogCkBAIC0zOCw2ICszOSw3IEBACiAKICAgICAgICAgc2VsZi5lbmdpbmUuc2V0cGF0KCcnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLmZpbmRfYWdhaW4odGV4dCkpCisgICAgICAgIHNlbGYuZGlhbG9nLmJlbGwgPSBsYW1iZGE6IE5vbmUKIAogICAgICAgICBzZWxmLmVuZ2luZS5zZXRwYXQoJ0hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmZpbmRfYWdhaW4odGV4dCkpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2diYXNlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoYmFzZS5weQpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2diYXNlLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CmluZGV4IDgwMzZiOTEuLmQ3NjlmYTIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoYmFzZS5weQpAQCAtMSwxNCArMSwxMyBAQAotJycnVW5pdHRlc3RzIGZvciBpZGxlbGliL1NlYXJjaERpYWxvZ0Jhc2UucHkKKycnJ3Rlc3RzIGlkbGVsaWIuc2VhcmNoYmFzZS4KIAogQ292ZXJhZ2U6IDk5JS4gVGhlIG9ubHkgdGhpbmcgbm90IGNvdmVyZWQgaXMgaW5jb25zZXF1ZW50aWFsIC0tCiB0ZXN0aW5nIHNraXBwaW5nIG9mIHN1aXRlIHdoZW4gc2VsZi5uZWVkd3JhcGJ1dHRvbiBpcyBmYWxzZS4KLQogJycnCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVG9wbGV2ZWwsIEZyYW1lICMjLCBCb29sZWFuVmFyLCBTdHJpbmdWYXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lIGFzIHNlCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UgYXMgc2RiCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZSBhcyBzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hiYXNlIGFzIHNkYgogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKICMjIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyCiAKQEAgLTc0LDcgKzczLDcgQEAKICAgICBkZWYgdGVzdF9tYWtlX2VudHJ5KHNlbGYpOgogICAgICAgICBlcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgc2VsZi5kaWFsb2cucm93ID0gMAotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBlbnRyeSwgbGFiZWwgPSBzZWxmLmRpYWxvZy5tYWtlX2VudHJ5KCJUZXN0OiIsICdoZWxsbycpCiAgICAgICAgIGVxdWFsKGxhYmVsWyd0ZXh0J10sICdUZXN0OicpCiAKQEAgLTg3LDYgKzg2LDcgQEAKICAgICAgICAgZXF1YWwoc2VsZi5kaWFsb2cucm93LCAxKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX2VudHJpZXMoc2VsZik6CisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCiAgICAgICAgIHNlbGYuZW5naW5lLnNldHBhdCgnaGVsbG8nKQogICAgICAgICBzZWxmLmRpYWxvZy5jcmVhdGVfZW50cmllcygpCkBAIC05NCw3ICs5NCw3IEBACiAKICAgICBkZWYgdGVzdF9tYWtlX2ZyYW1lKHNlbGYpOgogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCi0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIGZyYW1lLCBsYWJlbCA9IHNlbGYuZGlhbG9nLm1ha2VfZnJhbWUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhYmVsLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZyYW1lLCBGcmFtZSkKQEAgLTEwNCw3ICsxMDQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnJhbWUsIEZyYW1lKQogCiAgICAgZGVmIGJ0bl90ZXN0X3NldHVwKHNlbGYsIG1ldGgpOgotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCiAgICAgICAgIHJldHVybiBtZXRoKCkKIApAQCAtMTE5LDExICsxMTksNiBAQAogICAgICAgICAgICAgICAgIHZhciwgbGFiZWwgPSBzcGVjCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidXR0b25bJ3RleHQnXSwgbGFiZWwpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXIuZ2V0KCksIHN0YXRlKQotICAgICAgICAgICAgICAgIGlmIHN0YXRlID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kZXNlbGVjdCgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXIuZ2V0KCksIDEgLSBzdGF0ZSkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9vdGhlcl9idXR0b25zKHNlbGYpOgogICAgICAgICBmb3Igc3RhdGUgaW4gKEZhbHNlLCBUcnVlKToKQEAgLTEzOSwxOCArMTM0LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICMgaGl0IG90aGVyIGJ1dHRvbiwgdGhlbiB0aGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAjIGluZGV4ZXMgZGVwZW5kIG9uIGJ1dHRvbiBvcmRlcgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgc3RhdGUpCi0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnNbdmFsXS5zZWxlY3QoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgMSAtIHN0YXRlKQotICAgICAgICAgICAgICAgICAgICBidXR0b25zWzEtdmFsXS5zZWxlY3QoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgc3RhdGUpCiAKICAgICBkZWYgdGVzdF9tYWtlX2J1dHRvbihzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgc2VsZi5kaWFsb2cuYnV0dG9uZnJhbWUgPSBGcmFtZShzZWxmLmRpYWxvZy50b3ApCiAgICAgICAgIGJ0biA9IHNlbGYuZGlhbG9nLm1ha2VfYnV0dG9uKCdUZXN0Jywgc2VsZi5kaWFsb2cuY2xvc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnRuWyd0ZXh0J10sICdUZXN0JykKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9jb21tYW5kX2J1dHRvbnMoc2VsZik6CisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5jcmVhdGVfY29tbWFuZF9idXR0b25zKCkKICAgICAgICAgIyBMb29rIGZvciBjbG9zZSBidXR0b24gY29tbWFuZCBpbiBidXR0b25mcmFtZQogICAgICAgICBjbG9zZWJ1dHRvbmNvbW1hbmQgPSAnJwpAQCAtMTYwLDYgKzE1Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Nsb3NlJywgY2xvc2VidXR0b25jb21tYW5kKQogCiAKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKaW5kZXggZWRiZDU1OC4uYjNhYThlYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQpAQCAtMSw0ICsxLDQgQEAKLScnJ1Rlc3QgZnVuY3Rpb25zIGFuZCBTZWFyY2hFbmdpbmUgY2xhc3MgaW4gU2VhcmNoRW5naW5lLnB5LicnJworJycnVGVzdCBmdW5jdGlvbnMgYW5kIFNlYXJjaEVuZ2luZSBjbGFzcyBpbiBpZGxlbGliLnNlYXJjaGVuZ2luZS5weS4nJycKIAogIyBXaXRoIG1vY2sgcmVwbGFjZW1lbnRzLCB0aGUgbW9kdWxlIGRvZXMgbm90IHVzZSBhbnkgZ3VpIHdpZGdldHMuCiAjIFRoZSB1c2Ugb2YgdGsuVGV4dCBpcyBhdm9pZGVkIChmb3Igbm93LCB1bnRpbCBtb2NrIFRleHQgaXMgaW1wcm92ZWQpCkBAIC0xMCw3ICsxMCw3IEBACiAjIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCAgQm9vbGVhblZhciwgU3RyaW5nVmFyLCBUY2xFcnJvciAgIyAsVGssIFRleHQKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaEVuZ2luZSBhcyBzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUgYXMgc2UKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyLCBNYm94CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQgYXMgbW9ja1RleHQKIApAQCAtMTM5LDEwICsxMzksMTAgQEAKIAogICAgIGRlZiB0ZXN0X3NldGNvb2tlZHBhdChzZWxmKToKICAgICAgICAgZW5naW5lID0gc2VsZi5lbmdpbmUKLSAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdCgnXHMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgJ1xzJykKKyAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdChyJ1xzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmdpbmUuZ2V0cGF0KCksIHInXHMnKQogICAgICAgICBlbmdpbmUucmV2YXIuc2V0KDEpCi0gICAgICAgIGVuZ2luZS5zZXRjb29rZWRwYXQoJ1xzJykKKyAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdChyJ1xzJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmdpbmUuZ2V0cGF0KCksIHInXFxzJykKIAogICAgIGRlZiB0ZXN0X2dldGNvb2tlZHBhdChzZWxmKToKQEAgLTE1NiwxMCArMTU2LDEwIEBACiAgICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgcidcYmhlbGxvXGInKQogICAgICAgICBlbmdpbmUud29yZHZhci5zZXQoRmFsc2UpCiAKLSAgICAgICAgZW5naW5lLnNldHBhdCgnXHMnKQorICAgICAgICBlbmdpbmUuc2V0cGF0KHInXHMnKQogICAgICAgICBFcXVhbChlbmdpbmUuZ2V0Y29va2VkcGF0KCksIHInXFxzJykKICAgICAgICAgZW5naW5lLnJldmFyLnNldChUcnVlKQotICAgICAgICBFcXVhbChlbmdpbmUuZ2V0Y29va2VkcGF0KCksICdccycpCisgICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgcidccycpCiAKICAgICBkZWYgdGVzdF9nZXRwcm9nKHNlbGYpOgogICAgICAgICBlbmdpbmUgPSBzZWxmLmVuZ2luZQpAQCAtMjgyLDcgKzI4Miw3IEBACiAgICAgICAgIGNscy5wYXQgPSByZS5jb21waWxlKCd0YXJnZXQnKQogICAgICAgICBjbHMucmVzID0gKDIsICgxMCwgMTYpKSAgIyBsaW5lLCBzbGljZSBpbmRleGVzIG9mICd0YXJnZXQnCiAgICAgICAgIGNscy5mYWlscGF0ID0gcmUuY29tcGlsZSgneHl6JykgICMgbm90IGluIHRleHQKLSAgICAgICAgY2xzLmVtcHR5cGF0ID0gcmUuY29tcGlsZSgnXHcqJykgICMgZW1wdHkgbWF0Y2ggcG9zc2libGUKKyAgICAgICAgY2xzLmVtcHR5cGF0ID0gcmUuY29tcGlsZShyJ1x3KicpICAjIGVtcHR5IG1hdGNoIHBvc3NpYmxlCiAKICAgICBkZWYgbWFrZV9zZWFyY2goc2VsZiwgZnVuYyk6CiAgICAgICAgIGRlZiBzZWFyY2gocGF0LCBsaW5lLCBjb2wsIHdyYXAsIG9rPTApOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHQucHkKaW5kZXggN2U4MjNkZi4uYTViYTdiYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5CkBAIC0xLDE3ICsxLDE5IEBACi0jIFRlc3QgbW9ja190ay5UZXh0IGNsYXNzIGFnYWluc3QgdGtpbnRlci5UZXh0IGNsYXNzIGJ5IHJ1bm5pbmcgc2FtZSB0ZXN0cyB3aXRoIGJvdGguCisnJycgVGVzdCBtb2NrX3RrLlRleHQgY2xhc3MgYWdhaW5zdCB0a2ludGVyLlRleHQgY2xhc3MKKworUnVuIHNhbWUgdGVzdHMgd2l0aCBib3RoIGJ5IGNyZWF0aW5nIGEgbWl4aW4gY2xhc3MuCisnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCi0KIGZyb20gX3RraW50ZXIgaW1wb3J0IFRjbEVycm9yCiAKIGNsYXNzIFRleHRUZXN0KG9iamVjdCk6CisgICAgIkRlZmluZSBpdGVtcyBjb21tb24gdG8gYm90aCBzZXRzIG9mIHRlc3RzLiIKIAotICAgIGh3ID0gJ2hlbGxvXG53b3JsZCcgICMgdXN1YWwgaW5pdGlhbCBpbnNlcnQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24KKyAgICBodyA9ICdoZWxsb1xud29ybGQnICAjIFNldmVyYWwgdGVzdHMgaW5zZXJ0IHRoaXMgYWZ0ZXIgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uCiAgICAgaHduID0gaHcrJ1xuJyAgIyBcbiBwcmVzZW50IGF0IGluaXRpYWxpemF0aW9uLCBiZWZvcmUgaW5zZXJ0CiAKLSAgICBUZXh0ID0gTm9uZQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi50ZXh0ID0gc2VsZi5UZXh0KCkKKyAgICAjIHNldFVwQ2xhc3MgZGVmaW5lcyBjbHMuVGV4dCBhbmQgbWF5YmUgY2xzLnJvb3QuCisgICAgIyBzZXRVcCBkZWZpbmVzIHNlbGYudGV4dCBmcm9tIFRleHQgYW5kIG1heWJlIHJvb3QuCiAKICAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGV4dC5nZXQoJzEuMCcpLCAnXG4nKQpAQCAtMTk2LDYgKzE5OCwxMCBAQAogICAgICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQKICAgICAgICAgY2xzLlRleHQgPSBUZXh0CiAKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYudGV4dCA9IHNlbGYuVGV4dCgpCisKKwogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKICAgICAgICAgIyB0ZXN0IGVuZGZsYWdzICgtMSwgMCkgbm90IHRlc3RlZCBieSB0ZXN0X2luZGV4ICh3aGljaCB1c2VzICsxKQogICAgICAgICBkZWNvZGUgPSBzZWxmLnRleHQuX2RlY29kZQpAQCAtMjIyLDYgKzIyOCw5IEBACiAgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQogICAgICAgICBkZWwgY2xzLnJvb3QKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZXh0ID0gc2VsZi5UZXh0KHNlbGYucm9vdCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0dmlldy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5CmluZGV4IDVkMmU2MDAuLmYwMThmNWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5CkBAIC0xLDIxICsxLDIxIEBACi0nJydUZXN0IGlkbGVsaWIudGV4dFZpZXcuCisnJydUZXN0IGlkbGVsaWIudGV4dHZpZXcuCiAKIFNpbmNlIGFsbCBtZXRob2RzIGFuZCBmdW5jdGlvbnMgY3JlYXRlIChvciBkZXN0cm95KSBhIFRleHRWaWV3ZXIsIHdoaWNoCiBpcyBhIHdpZGdldCBjb250YWluaW5nIG11bHRpcGxlIHdpZGdldHMsIGFsbCB0ZXN0cyBtdXN0IGJlIGd1aSB0ZXN0cy4KIFVzaW5nIG1vY2sgVGV4dCB3b3VsZCBub3QgY2hhbmdlIHRoaXMuICBPdGhlciBtb2NrcyBhcmUgdXNlZCB0byByZXRyaWV2ZQogaW5mb3JtYXRpb24gYWJvdXQgY2FsbHMuCiAKLVRoZSBjb3ZlcmFnZSBpcyBlc3NlbnRpYWxseSAxMDAlLgorQ292ZXJhZ2U6IDk0JS4KICcnJworZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldyBhcyB0dgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcgYXMgdHYKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCi1mcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IE1ib3gKK2Zyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveF9mdW5jCiAKIGRlZiBzZXRVcE1vZHVsZSgpOgogICAgIGdsb2JhbCByb290CkBAIC02NCwxNyArNjQsMTcgQEAKICAgICAgICAgdmlldy5kZXN0cm95KCkKIAogCi1jbGFzcyB0ZXh0dmlld1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVmlld0Z1bmN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMub3JpZ19tYm94ID0gdHYudGtNZXNzYWdlQm94Ci0gICAgICAgIHR2LnRrTWVzc2FnZUJveCA9IE1ib3gKKyAgICAgICAgY2xzLm9yaWdfZXJyb3IgPSB0di5zaG93ZXJyb3IKKyAgICAgICAgdHYuc2hvd2Vycm9yID0gTWJveF9mdW5jKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIHR2LnRrTWVzc2FnZUJveCA9IGNscy5vcmlnX21ib3gKLSAgICAgICAgZGVsIGNscy5vcmlnX21ib3gKKyAgICAgICAgdHYuc2hvd2Vycm9yID0gY2xzLm9yaWdfZXJyb3IKKyAgICAgICAgZGVsIGNscy5vcmlnX2Vycm9yCiAKICAgICBkZWYgdGVzdF92aWV3X3RleHQoc2VsZik6CiAgICAgICAgICMgSWYgbW9kYWwgVHJ1ZSwgZ2V0IHRrIGVycm9yICdjYW4ndCBpbnZva2UgImV2ZW50IiBjb21tYW5kJy4KQEAgLTkwLDcgKzkwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignVGVzdCcsIHZpZXcudGV4dFZpZXcuZ2V0KCcxLjAnLCAnMS5lbmQnKSkKICAgICAgICAgdmlldy5PaygpCiAKLSAgICAgICAgIyBNb2NrIG1lc3NhZ2Vib3ggd2lsbCBiZSB1c2VkIGFuZCB2aWV3X2ZpbGUgd2lsbCBub3QgcmV0dXJuIGFueXRoaW5nCisgICAgICAgICMgTW9jayBzaG93ZXJyb3Igd2lsbCBiZSB1c2VkOyB2aWV3X2ZpbGUgd2lsbCByZXR1cm4gTm9uZS4KICAgICAgICAgdGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdF9kaXIsICcuLi9ub3R0aGVyZS5weScpCiAgICAgICAgIHZpZXcgPSB0di52aWV3X2ZpbGUocm9vdCwgJ1RpdGxlJywgdGVzdGZpbGUsIG1vZGFsPUZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh2aWV3KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RyZWUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDliYTk2NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RyZWUucHkKQEAgLTAsMCArMSwzNiBAQAorJycnIFRlc3QgaWRsZWxpYi50cmVlLgorCitDb3ZlcmFnZTogNTYlCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdHJlZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRraW50ZXIgaW1wb3J0IFRrCisKKworY2xhc3MgVHJlZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgICMgU3RhcnQgd2l0aCBjb2RlIHNsaWdodGx5IGFkYXB0ZWQgZnJvbSBodGVzdC4KKyAgICAgICAgc2MgPSB0cmVlLlNjcm9sbGVkQ2FudmFzKAorICAgICAgICAgICAgc2VsZi5yb290LCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCisgICAgICAgIHNjLmZyYW1lLnBhY2soZXhwYW5kPTEsIGZpbGw9ImJvdGgiLCBzaWRlPSdsZWZ0JykKKyAgICAgICAgaXRlbSA9IHRyZWUuRmlsZVRyZWVJdGVtKHRyZWUuSUNPTkRJUikKKyAgICAgICAgbm9kZSA9IHRyZWUuVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQorICAgICAgICBub2RlLmV4cGFuZCgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kb2RlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG8ucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kb2RlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQppbmRleCAyYjgzYzk5Li5lODcyOTI3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG8ucHkKQEAgLTEsNCArMSw0IEBACi0iIiJVbml0dGVzdCBmb3IgVW5kb0RlbGVnYXRvciBpbiBpZGxlbGliLlVuZG9EZWxlZ2F0b3IuCisiIiJVbml0dGVzdCBmb3IgVW5kb0RlbGVnYXRvciBpbiBpZGxlbGliLnVuZG8ucHkuCiAKIENvdmVyYWdlIGFib3V0IDgwJSAocmV0ZXN0KS4KICIiIgpAQCAtOCw4ICs4LDggQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQsIFRrCi1mcm9tIGlkbGVsaWIuVW5kb0RlbGVnYXRvciBpbXBvcnQgVW5kb0RlbGVnYXRvcgotZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKK2Zyb20gaWRsZWxpYi51bmRvIGltcG9ydCBVbmRvRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgogCiAKIGNsYXNzIFVuZG9EZWxlZ2F0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI5LDggKzI5LDggQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5kZWxlZ2F0b3IgPSBVbmRvRGVsZWdhdG9yKCkKKyAgICAgICAgc2VsZi5kZWxlZ2F0b3IuYmVsbCA9IE1vY2soKQogICAgICAgICBzZWxmLnBlcmNvbGF0b3IuaW5zZXJ0ZmlsdGVyKHNlbGYuZGVsZWdhdG9yKQotICAgICAgICBzZWxmLmRlbGVnYXRvci5iZWxsID0gTW9jayh3cmFwcz1zZWxmLmRlbGVnYXRvci5iZWxsKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnBlcmNvbGF0b3IucmVtb3ZlZmlsdGVyKHNlbGYuZGVsZWdhdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dhcm5pbmcucHkKaW5kZXggMTg2MjdkZC4uZjMyNjlmMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCB3YXJuaW5ncyByZXBsYWNlbWVudCBpbiBQeVNoZWxsLnB5IGFuZCBydW4ucHkuCisnJydUZXN0IHdhcm5pbmdzIHJlcGxhY2VtZW50IGluIHB5c2hlbGwucHkgYW5kIHJ1bi5weS4KIAogVGhpcyBmaWxlIGNvdWxkIGJlIGV4cGFuZGVkIHRvIGluY2x1ZGUgdHJhY2ViYWNrIG92ZXJyaWRlcwogKGluIHNhbWUgdHdvIG1vZHVsZXMpLiBJZiBzbywgY2hhbmdlIG5hbWUuCkBAIC0xNyw5ICsxNyw5IEBACiBydW5uaW5nX2luX2lkbGUgPSAnaWRsZScgaW4gc2hvd3dhcm5pbmcuX19uYW1lX18KIAogZnJvbSBpZGxlbGliIGltcG9ydCBydW4KLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbCBhcyBzaGVsbAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsIGFzIHNoZWxsCiAKLSMgVGhlIGZvbGxvd2luZyB3YXMgZ2VuZXJhdGVkIGZyb20gUHlTaGVsbC5pZGxlX2Zvcm1hdHdhcm5pbmcKKyMgVGhlIGZvbGxvd2luZyB3YXMgZ2VuZXJhdGVkIGZyb20gcHlzaGVsbC5pZGxlX2Zvcm1hdHdhcm5pbmcKICMgYW5kIGNoZWNrZWQgYXMgbWF0Y2hpbmcgZXhwZWN0YXRpb24uCiBpZGxlbXNnID0gJycnCiBXYXJuaW5nIChmcm9tIHdhcm5pbmdzIG1vZHVsZSk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5IGIvTGliL2lkbGVsaWIvaWRsZXZlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U5ZjY5YS4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIiIiCi1UaGUgc2VwYXJhdGUgSWRsZSB2ZXJzaW9uIHdhcyBlbGltaW5hdGVkIHllYXJzIGFnbzsKLWlkbGVsaWIuaWRsZXZlciBpcyBubyBsb25nZXIgdXNlZCBieSBJZGxlCi1hbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNiBvciBsYXRlci4gIFVzZQotICAgIGZyb20gc3lzIGltcG9ydCB2ZXJzaW9uCi0gICAgSURMRV9WRVJTSU9OID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQotIiIiCi0jIEtlcHQgZm9yIG5vdyBvbmx5IGZvciBwb3NzaWJsZSBleGlzdGluZyBleHRlbnNpb24gdXNlCi1pbXBvcnQgd2FybmluZ3MgYXMgdwotdy53YXJuKF9fZG9jX18sIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotZnJvbSBzeXMgaW1wb3J0IHZlcnNpb24KLUlETEVfVkVSU0lPTiA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV0KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weSBiL0xpYi9pZGxlbGliL2lvbWVudS5weQpzaW1pbGFyaXR5IGluZGV4IDg4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lvbWVudS5weQppbmRleCA4NGYzOWEyLi4zNDE0YzdiIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvaW9tZW51LnB5CkBAIC0xMCw1NyArMTAsNjAgQEAKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiBmcm9tIHRraW50ZXIuc2ltcGxlZGlhbG9nIGltcG9ydCBhc2tzdHJpbmcKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitpbXBvcnQgaWRsZWxpYgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAotCi0jIFRyeSBzZXR0aW5nIHRoZSBsb2NhbGUsIHNvIHRoYXQgd2UgY2FuIGZpbmQgb3V0Ci0jIHdoYXQgZW5jb2RpbmcgdG8gdXNlCi10cnk6Ci0gICAgaW1wb3J0IGxvY2FsZQotICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFLCAiIikKLWV4Y2VwdCAoSW1wb3J0RXJyb3IsIGxvY2FsZS5FcnJvcik6Ci0gICAgcGFzcwotCi0jIEVuY29kaW5nIGZvciBmaWxlIG5hbWVzCi1maWxlc3lzdGVtZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgICMjIyBjdXJyZW50bHkgdW51c2VkCi0KLWxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICMgT24gV2luZG93cywgd2UgY291bGQgdXNlICJtYmNzIi4gSG93ZXZlciwgdG8gZ2l2ZSB0aGUgdXNlcgotICAgICMgYSBwb3J0YWJsZSBlbmNvZGluZyBuYW1lLCB3ZSBuZWVkIHRvIGZpbmQgdGhlIGNvZGUgcGFnZQotICAgIHRyeToKLSAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldGRlZmF1bHRsb2NhbGUoKVsxXQotICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICBleGNlcHQgTG9va3VwRXJyb3I6Ci0gICAgICAgIHBhc3MKK2lmIGlkbGVsaWIudGVzdGluZzogICMgU2V0IFRydWUgYnkgdGVzdC50ZXN0X2lkbGUgdG8gYXZvaWQgc2V0bG9jYWxlLgorICAgIGVuY29kaW5nID0gJ3V0Zi04JwogZWxzZToKKyAgICAjIFRyeSBzZXR0aW5nIHRoZSBsb2NhbGUsIHNvIHRoYXQgd2UgY2FuIGZpbmQgb3V0CisgICAgIyB3aGF0IGVuY29kaW5nIHRvIHVzZQogICAgIHRyeToKLSAgICAgICAgIyBEaWZmZXJlbnQgdGhpbmdzIGNhbiBmYWlsIGhlcmU6IHRoZSBsb2NhbGUgbW9kdWxlIG1heSBub3QgYmUKLSAgICAgICAgIyBsb2FkZWQsIGl0IG1heSBub3Qgb2ZmZXIgbmxfbGFuZ2luZm8sIG9yIENPREVTRVQsIG9yIHRoZQotICAgICAgICAjIHJlc3VsdGluZyBjb2Rlc2V0IG1heSBiZSB1bmtub3duIHRvIFB5dGhvbi4gV2UgaWdub3JlIGFsbAotICAgICAgICAjIHRoZXNlIHByb2JsZW1zLCBmYWxsaW5nIGJhY2sgdG8gQVNDSUkKLSAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLm5sX2xhbmdpbmZvKGxvY2FsZS5DT0RFU0VUKQotICAgICAgICBpZiBsb2NhbGVfZW5jb2RpbmcgaXMgTm9uZSBvciBsb2NhbGVfZW5jb2RpbmcgaXMgJyc6Ci0gICAgICAgICAgICAjIHNpdHVhdGlvbiBvY2N1cnMgb24gTWFjIE9TIFgKLSAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKLSAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCi0gICAgZXhjZXB0IChOYW1lRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBMb29rdXBFcnJvcik6Ci0gICAgICAgICMgVHJ5IGdldGRlZmF1bHRsb2NhbGU6IGl0IHBhcnNlcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsCi0gICAgICAgICMgd2hpY2ggbWF5IGdpdmUgYSBjbHVlLiBVbmZvcnR1bmF0ZWx5LCBnZXRkZWZhdWx0bG9jYWxlIGhhcwotICAgICAgICAjIGJ1Z3MgdGhhdCBjYW4gY2F1c2UgVmFsdWVFcnJvci4KKyAgICAgICAgaW1wb3J0IGxvY2FsZQorICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSwgIiIpCisgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgbG9jYWxlLkVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgbG9jYWxlX2RlY29kZSA9ICdhc2NpaScKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgIyBPbiBXaW5kb3dzLCB3ZSBjb3VsZCB1c2UgIm1iY3MiLiBIb3dldmVyLCB0byBnaXZlIHRoZSB1c2VyCisgICAgICAgICMgYSBwb3J0YWJsZSBlbmNvZGluZyBuYW1lLCB3ZSBuZWVkIHRvIGZpbmQgdGhlIGNvZGUgcGFnZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0ZGVmYXVsdGxvY2FsZSgpWzFdCisgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKKyAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRGlmZmVyZW50IHRoaW5ncyBjYW4gZmFpbCBoZXJlOiB0aGUgbG9jYWxlIG1vZHVsZSBtYXkgbm90IGJlCisgICAgICAgICAgICAjIGxvYWRlZCwgaXQgbWF5IG5vdCBvZmZlciBubF9sYW5naW5mbywgb3IgQ09ERVNFVCwgb3IgdGhlCisgICAgICAgICAgICAjIHJlc3VsdGluZyBjb2Rlc2V0IG1heSBiZSB1bmtub3duIHRvIFB5dGhvbi4gV2UgaWdub3JlIGFsbAorICAgICAgICAgICAgIyB0aGVzZSBwcm9ibGVtcywgZmFsbGluZyBiYWNrIHRvIEFTQ0lJCisgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUubmxfbGFuZ2luZm8obG9jYWxlLkNPREVTRVQpCiAgICAgICAgICAgICBpZiBsb2NhbGVfZW5jb2RpbmcgaXMgTm9uZSBvciBsb2NhbGVfZW5jb2RpbmcgaXMgJyc6CiAgICAgICAgICAgICAgICAgIyBzaXR1YXRpb24gb2NjdXJzIG9uIE1hYyBPUyBYCiAgICAgICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwogICAgICAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgTG9va3VwRXJyb3IpOgotICAgICAgICAgICAgcGFzcworICAgICAgICBleGNlcHQgKE5hbWVFcnJvciwgQXR0cmlidXRlRXJyb3IsIExvb2t1cEVycm9yKToKKyAgICAgICAgICAgICMgVHJ5IGdldGRlZmF1bHRsb2NhbGU6IGl0IHBhcnNlcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsCisgICAgICAgICAgICAjIHdoaWNoIG1heSBnaXZlIGEgY2x1ZS4gVW5mb3J0dW5hdGVseSwgZ2V0ZGVmYXVsdGxvY2FsZSBoYXMKKyAgICAgICAgICAgICMgYnVncyB0aGF0IGNhbiBjYXVzZSBWYWx1ZUVycm9yLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRkZWZhdWx0bG9jYWxlKClbMV0KKyAgICAgICAgICAgICAgICBpZiBsb2NhbGVfZW5jb2RpbmcgaXMgTm9uZSBvciBsb2NhbGVfZW5jb2RpbmcgaXMgJyc6CisgICAgICAgICAgICAgICAgICAgICMgc2l0dWF0aW9uIG9jY3VycyBvbiBNYWMgT1MgWAorICAgICAgICAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSAnYXNjaWknCisgICAgICAgICAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIExvb2t1cEVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCiAKLWxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZV9lbmNvZGluZy5sb3dlcigpCisgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nLmxvd2VyKCkKIAotZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcgICMjIyBLQksgMDdTZXAwNyAgVGhpcyBpcyB1c2VkIGFsbCBvdmVyIElETEUsIGNoZWNrIQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIyAnZW5jb2RpbmcnIGlzIHVzZWQgYmVsb3cgaW4gZW5jb2RlKCksIGNoZWNrIQorICAgIGVuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nCisgICAgIyBFbmNvZGluZyBpcyB1c2VkIGluIG11bHRpcGxlIGZpbGVzOyBsb2NhbGVfZW5jb2Rpbmcgbm93aGVyZS4KKyAgICAjIFRoZSBvbmx5IHVzZSBvZiAnZW5jb2RpbmcnIGJlbG93IGlzIGluIF9kZWNvZGUgYXMgaW5pdGlhbCB2YWx1ZQorICAgICMgb2YgZGVwcmVjYXRlZCBibG9jayBhc2tpbmcgdXNlciBmb3IgZW5jb2RpbmcuCisgICAgIyBQZXJoYXBzIHVzZSBlbHNld2hlcmUgc2hvdWxkIGJlIHJldmlld2VkLgogCiBjb2RpbmdfcmUgPSByZS5jb21waWxlKHInXlsgXHRcZl0qIy4qP2NvZGluZ1s6PV1bIFx0XSooWy1cdy5dKyknLCByZS5BU0NJSSkKIGJsYW5rX3JlID0gcmUuY29tcGlsZShyJ15bIFx0XGZdKig/OlsjXHJcbl18JCknLCByZS5BU0NJSSkKQEAgLTEwNyw2ICsxMTAsOSBAQAogCiAKIGNsYXNzIElPQmluZGluZzoKKyMgT25lIGluc3RhbmNlIHBlciBlZGl0b3IgV2luZG93IHNvIG1ldGhvZHMga25vdyB3aGljaCB0byBzYXZlLCBjbG9zZS4KKyMgT3BlbiByZXR1cm5zIGZvY3VzIHRvIHNlbGYuZWRpdHdpbiBpZiBhYm9ydGVkLgorIyBFZGl0b3JXaW5kb3cub3Blbl9tb2R1bGUsIG90aGVycywgYmVsb25nIGhlcmUuCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbik6CiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KQEAgLTMwMSw3ICszMDcsNyBAQAogICAgICAgICAgICAgICAgICJUaGUgZmlsZSdzIGVuY29kaW5nIGlzIGludmFsaWQgZm9yIFB5dGhvbiAzLnguXG4iCiAgICAgICAgICAgICAgICAgIklETEUgd2lsbCBjb252ZXJ0IGl0IHRvIFVURi04LlxuIgogICAgICAgICAgICAgICAgICJXaGF0IGlzIHRoZSBjdXJyZW50IGVuY29kaW5nIG9mIHRoZSBmaWxlPyIsCi0gICAgICAgICAgICAgICAgaW5pdGlhbHZhbHVlID0gbG9jYWxlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgIGluaXRpYWx2YWx1ZSA9IGVuY29kaW5nLAogICAgICAgICAgICAgICAgIHBhcmVudCA9IHNlbGYuZWRpdHdpbi50ZXh0KQogCiAgICAgICAgICAgICBpZiBlbmM6CkBAIC01MjksOCArNTM1LDggQEAKIAogICAgIHJvb3QgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgcm9vdC50aXRsZSgiVGVzdCBJT0JpbmRpbmciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKICAgICBjbGFzcyBNeUVkaXRXaW46CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKICAgICAgICAgICAgIHNlbGYudGV4dCA9IHRleHQKQEAgLTU2MSw1ICs1NjcsOCBAQAogICAgIElPQmluZGluZyhlZGl0d2luKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIGltcG9ydCB1bml0dGVzdAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaW9tZW51JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX2lvX2JpbmRpbmcpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5IGIvTGliL2lkbGVsaWIvbWFjb3N4LnB5CnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL21hY29zeC5weQppbmRleCBiOTZiYWUxLi5jMjI1ZGQ5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5CisrKyBiL0xpYi9pZGxlbGliL21hY29zeC5weQpAQCAtMSwzMCArMSwyNSBAQAogIiIiCiBBIG51bWJlciBvZiBmdW5jdGlvbnMgdGhhdCBlbmhhbmNlIElETEUgb24gTWFjIE9TWC4KICIiIgotaW1wb3J0IHN5cwotaW1wb3J0IHRraW50ZXIKLWZyb20gb3MgaW1wb3J0IHBhdGgKK2Zyb20gc3lzIGltcG9ydCBwbGF0Zm9ybSAgIyBVc2VkIGluIF9pbml0X3RrX3R5cGUsIGNoYW5nZWQgYnkgdGVzdC4KIGltcG9ydCB3YXJuaW5ncwogCi1kZWYgcnVubmluZ0FzT1NYQXBwKCk6Ci0gICAgd2FybmluZ3Mud2FybigicnVubmluZ0FzT1NYQXBwKCkgaXMgZGVwcmVjYXRlZCwgdXNlIGlzQXF1YVRrKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuIGlzQXF1YVRrKCkKK2ltcG9ydCB0a2ludGVyCiAKLWRlZiBpc0NhcmJvbkFxdWFUayhyb290KToKLSAgICB3YXJuaW5ncy53YXJuKCJpc0NhcmJvbkFxdWFUayhyb290KSBpcyBkZXByZWNhdGVkLCB1c2UgaXNDYXJib25UaygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgIHJldHVybiBpc0NhcmJvblRrKCkKKworIyMgRGVmaW5lIGZ1bmN0aW9ucyB0aGF0IHF1ZXJ5IHRoZSBNYWMgZ3JhcGhpY3MgdHlwZS4KKyMjIF90a190eXBlIGFuZCBpdHMgaW5pdGlhbGl6ZXIgYXJlIHByaXZhdGUgdG8gdGhpcyBzZWN0aW9uLgogCiBfdGtfdHlwZSA9IE5vbmUKIAotZGVmIF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMocm9vdCk6CitkZWYgX2luaXRfdGtfdHlwZSgpOgogICAgICIiIgogICAgIEluaXRpYWxpemVzIE9TIFggVGsgdmFyaWFudCB2YWx1ZXMgZm9yCiAgICAgaXNBcXVhVGsoKSwgaXNDYXJib25UaygpLCBpc0NvY29hVGsoKSwgYW5kIGlzWFF1YXJ0eigpLgogICAgICIiIgogICAgIGdsb2JhbCBfdGtfdHlwZQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgcm9vdCA9IHRraW50ZXIuVGsoKQogICAgICAgICB3cyA9IHJvb3QudGsuY2FsbCgndGsnLCAnd2luZG93aW5nc3lzdGVtJykKICAgICAgICAgaWYgJ3gxMScgaW4gd3M6CiAgICAgICAgICAgICBfdGtfdHlwZSA9ICJ4cXVhcnR6IgpAQCAtMzQsNiArMjksNyBAQAogICAgICAgICAgICAgX3RrX3R5cGUgPSAiY29jb2EiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfdGtfdHlwZSA9ICJjYXJib24iCisgICAgICAgIHJvb3QuZGVzdHJveSgpCiAgICAgZWxzZToKICAgICAgICAgX3RrX3R5cGUgPSAib3RoZXIiCiAKQEAgLTQxLDcgKzM3LDggQEAKICAgICAiIiIKICAgICBSZXR1cm5zIFRydWUgaWYgSURMRSBpcyB1c2luZyBhIG5hdGl2ZSBPUyBYIFRrIChDb2NvYSBvciBDYXJib24pLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJjb2NvYSIgb3IgX3RrX3R5cGUgPT0gImNhcmJvbiIKIAogZGVmIGlzQ2FyYm9uVGsoKToKQEAgLTQ5LDIzICs0NiwyNyBAQAogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGEgQ2FyYm9uIEFxdWEgVGsgKGluc3RlYWQgb2YgdGhlCiAgICAgbmV3ZXIgQ29jb2EgQXF1YSBUaykuCiAgICAgIiIiCi0gICAgYXNzZXJ0IF90a190eXBlIGlzIG5vdCBOb25lCisgICAgaWYgbm90IF90a190eXBlOgorICAgICAgICBfaW5pdF90a190eXBlKCkKICAgICByZXR1cm4gX3RrX3R5cGUgPT0gImNhcmJvbiIKIAogZGVmIGlzQ29jb2FUaygpOgogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGEgQ29jb2EgQXF1YSBUay4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAiY29jb2EiCiAKIGRlZiBpc1hRdWFydHooKToKICAgICAiIiIKICAgICBSZXR1cm5zIFRydWUgaWYgSURMRSBpcyB1c2luZyBhbiBPUyBYIFgxMSBUay4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAieHF1YXJ0eiIKIAorCiBkZWYgdGtWZXJzaW9uV2FybmluZyhyb290KToKICAgICAiIiIKICAgICBSZXR1cm5zIGEgc3RyaW5nIHdhcm5pbmcgbWVzc2FnZSBpZiB0aGUgVGsgdmVyc2lvbiBpbiB1c2UgYXBwZWFycyB0bwpAQCAtODYsNiArODcsOSBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBGYWxzZQogCisKKyMjIEZpeCB0aGUgbWVudSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCisKIGRlZiBhZGRPcGVuRXZlbnRTdXBwb3J0KHJvb3QsIGZsaXN0KToKICAgICAiIiIKICAgICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXBwbGljYXRpb24gd2lsbCByZXNwb25kIHRvIG9wZW4gQXBwbGVFdmVudHMsIHdoaWNoCkBAIC0xMjQsMjMgKzEyOCwyMyBAQAogICAgICMgRHVlIHRvIGEgKG1pcy0pZmVhdHVyZSBvZiBUa0FxdWEgdGhlIHVzZXIgd2lsbCBhbHNvIHNlZSBhbiBlbXB0eSBIZWxwCiAgICAgIyBtZW51LgogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgTWVudQotICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgQmluZGluZ3MKLSAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IFdpbmRvd0xpc3QKKyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IG1haW5tZW51CisgICAgZnJvbSBpZGxlbGliIGltcG9ydCB3aW5kb3dzCiAKLSAgICBjbG9zZUl0ZW0gPSBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXVstMl0KKyAgICBjbG9zZUl0ZW0gPSBtYWlubWVudS5tZW51ZGVmc1swXVsxXVstMl0KIAogICAgICMgUmVtb3ZlIHRoZSBsYXN0IDMgaXRlbXMgb2YgdGhlIGZpbGUgbWVudTogYSBzZXBhcmF0b3IsIGNsb3NlIHdpbmRvdyBhbmQKICAgICAjIHF1aXQuIENsb3NlIHdpbmRvdyB3aWxsIGJlIHJlaW5zZXJ0ZWQganVzdCBhYm92ZSB0aGUgc2F2ZSBpdGVtLCB3aGVyZQogICAgICMgaXQgc2hvdWxkIGJlIGFjY29yZGluZyB0byB0aGUgSElHLiBRdWl0IGlzIGluIHRoZSBhcHBsaWNhdGlvbiBtZW51LgotICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXVstMzpdCi0gICAgQmluZGluZ3MubWVudWRlZnNbMF1bMV0uaW5zZXJ0KDYsIGNsb3NlSXRlbSkKKyAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbMF1bMV1bLTM6XQorICAgIG1haW5tZW51Lm1lbnVkZWZzWzBdWzFdLmluc2VydCg2LCBjbG9zZUl0ZW0pCiAKICAgICAjIFJlbW92ZSB0aGUgJ0Fib3V0JyBlbnRyeSBmcm9tIHRoZSBoZWxwIG1lbnUsIGl0IGlzIGluIHRoZSBhcHBsaWNhdGlvbgogICAgICMgbWVudQotICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1stMV1bMV1bMDoyXQorICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1stMV1bMV1bMDoyXQogICAgICMgUmVtb3ZlIHRoZSAnQ29uZmlndXJlIElkbGUnIGVudHJ5IGZyb20gdGhlIG9wdGlvbnMgbWVudSwgaXQgaXMgaW4gdGhlCiAgICAgIyBhcHBsaWNhdGlvbiBtZW51IGFzICdQcmVmZXJlbmNlcycKLSAgICBkZWwgQmluZGluZ3MubWVudWRlZnNbLTJdWzFdWzBdCisgICAgZGVsIG1haW5tZW51Lm1lbnVkZWZzWy0yXVsxXVswXQogICAgIG1lbnViYXIgPSBNZW51KHJvb3QpCiAgICAgcm9vdC5jb25maWd1cmUobWVudT1tZW51YmFyKQogICAgIG1lbnVkaWN0ID0ge30KQEAgLTE1NSwzMCArMTU5LDMwIEBACiAKICAgICAgICAgaWYgZW5kID4gMDoKICAgICAgICAgICAgIG1lbnUuZGVsZXRlKDAsIGVuZCkKLSAgICAgICAgV2luZG93TGlzdC5hZGRfd2luZG93c190b19tZW51KG1lbnUpCi0gICAgV2luZG93TGlzdC5yZWdpc3Rlcl9jYWxsYmFjayhwb3N0d2luZG93c21lbnUpCisgICAgICAgIHdpbmRvd3MuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQorICAgIHdpbmRvd3MucmVnaXN0ZXJfY2FsbGJhY2socG9zdHdpbmRvd3NtZW51KQogCiAgICAgZGVmIGFib3V0X2RpYWxvZyhldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdBYm91dCBJRExFJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBFZGl0b3JXaW5kb3cuRWRpdG9yV2luZG93LmFib3V0X2RpYWxvZy4KLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZwotICAgICAgICBhYm91dERpYWxvZy5BYm91dERpYWxvZyhyb290LCAnQWJvdXQgSURMRScpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBlZGl0b3IuRWRpdG9yV2luZG93LmFib3V0X2RpYWxvZy4KKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwX2Fib3V0CisgICAgICAgIGhlbHBfYWJvdXQuQWJvdXREaWFsb2cocm9vdCwgJ0Fib3V0IElETEUnKQogCiAgICAgZGVmIGNvbmZpZ19kaWFsb2coZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgT3B0aW9ucyAnQ29uZmlndXJlIElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIEVkaXRvcldpbmRvdy5FZGl0b3JXaW5kb3cuY29uZmlnX2RpYWxvZy4KLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdEaWFsb2cKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIGVkaXRvci5FZGl0b3JXaW5kb3cuY29uZmlnX2RpYWxvZy4KKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdkaWFsb2cKIAogICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSByb290IG9iamVjdCBoYXMgYW4gaW5zdGFuY2VfZGljdCBhdHRyaWJ1dGUsCiAgICAgICAgICMgbWlycm9ycyBjb2RlIGluIEVkaXRvcldpbmRvdyAoYWx0aG91Z2ggdGhhdCBzZXRzIHRoZSBhdHRyaWJ1dGUKICAgICAgICAgIyBvbiBhbiBFZGl0b3JXaW5kb3cgaW5zdGFuY2UgdGhhdCBpcyB0aGVuIHBhc3NlZCBhcyB0aGUgZmlyc3QKICAgICAgICAgIyBhcmd1bWVudCB0byBDb25maWdEaWFsb2cpCiAgICAgICAgIHJvb3QuaW5zdGFuY2VfZGljdCA9IGZsaXN0LmludmVyc2VkaWN0Ci0gICAgICAgIGNvbmZpZ0RpYWxvZy5Db25maWdEaWFsb2cocm9vdCwgJ1NldHRpbmdzJykKKyAgICAgICAgY29uZmlnZGlhbG9nLkNvbmZpZ0RpYWxvZyhyb290LCAnU2V0dGluZ3MnKQogCiAgICAgZGVmIGhlbHBfZGlhbG9nKGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIEhlbHAgJ0lETEUgSGVscCcgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdy5oZWxwX2RpYWxvZy4KKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIGVkaXRvci5FZGl0b3JXaW5kb3cuaGVscF9kaWFsb2cuCiAgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgaGVscAogICAgICAgICBoZWxwLnNob3dfaWRsZWhlbHAocm9vdCkKIApAQCAtMTk4LDI5ICsyMDIsMzMgQEAKICAgICAgICAgbWVudWRpY3RbJ2FwcGxpY2F0aW9uJ10gPSBtZW51ID0gTWVudShtZW51YmFyLCBuYW1lPSdhcHBsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcm9mZj0wKQogICAgICAgICBtZW51YmFyLmFkZF9jYXNjYWRlKGxhYmVsPSdJRExFJywgbWVudT1tZW51KQotICAgICAgICBCaW5kaW5ncy5tZW51ZGVmcy5pbnNlcnQoMCwKKyAgICAgICAgbWFpbm1lbnUubWVudWRlZnMuaW5zZXJ0KDAsCiAgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uJywgWwogICAgICAgICAgICAgICAgICgnQWJvdXQgSURMRScsICc8PGFib3V0LWlkbGU+PicpLAogICAgICAgICAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgICAgIF0pKQotICAgICAgICB0a3ZlcnNpb24gPSByb290LnRrLmV2YWwoJ2luZm8gcGF0Y2hsZXZlbCcpCi0gICAgICAgIGlmIHR1cGxlKG1hcChpbnQsIHRrdmVyc2lvbi5zcGxpdCgnLicpKSkgPCAoOCwgNCwgMTQpOgotICAgICAgICAgICAgIyBmb3IgZWFybGllciBBcXVhVGsgdmVyc2lvbnMsIHN1cHBseSBhIFByZWZlcmVuY2VzIG1lbnUgaXRlbQotICAgICAgICAgICAgQmluZGluZ3MubWVudWRlZnNbMF1bMV0uYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAoJ19QcmVmZXJlbmNlcy4uLi4nLCAnPDxvcGVuLWNvbmZpZy1kaWFsb2c+PicpLAotICAgICAgICAgICAgICAgICkKICAgICBpZiBpc0NvY29hVGsoKToKICAgICAgICAgIyByZXBsYWNlIGRlZmF1bHQgQWJvdXQgZGlhbG9nIHdpdGggQWJvdXQgSURMRSBvbmUKICAgICAgICAgcm9vdC5jcmVhdGVjb21tYW5kKCd0a0Fib3V0RGlhbG9nJywgYWJvdXRfZGlhbG9nKQogICAgICAgICAjIHJlcGxhY2UgZGVmYXVsdCAiSGVscCIgaXRlbSBpbiBIZWxwIG1lbnUKICAgICAgICAgcm9vdC5jcmVhdGVjb21tYW5kKCc6OnRrOjptYWM6OlNob3dIZWxwJywgaGVscF9kaWFsb2cpCiAgICAgICAgICMgcmVtb3ZlIHJlZHVuZGFudCAiSURMRSBIZWxwIiBmcm9tIG1lbnUKLSAgICAgICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWy0xXVsxXVswXQorICAgICAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbLTFdWzFdWzBdCisKK2RlZiBmaXhiMmNvbnRleHQocm9vdCk6CisgICAgJycnUmVtb3ZlZCBiYWQgQXF1YVRrIEJ1dHRvbi0yIChyaWdodCkgYW5kIFBhc3RlIGJpbmRpbmdzLgorCisgICAgVGhleSBwcmV2ZW50IGNvbnRleHQgbWVudSBhY2Nlc3MgYW5kIHNlZW0gdG8gYmUgZ29uZSBpbiBBcXVhVGs4LjYuCisgICAgU2VlIGlzc3VlICMyNDgwMS4KKyAgICAnJycKKyAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjI+JykKKyAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjItTW90aW9uPicpCisgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPDxQYXN0ZVNlbGVjdGlvbj4+JykKIAogZGVmIHNldHVwQXBwKHJvb3QsIGZsaXN0KToKICAgICAiIiIKICAgICBQZXJmb3JtIGluaXRpYWwgT1MgWCBjdXN0b21pemF0aW9ucyBpZiBuZWVkZWQuCi0gICAgQ2FsbGVkIGZyb20gUHlTaGVsbC5tYWluKCkgYWZ0ZXIgaW5pdGlhbCBjYWxscyB0byBUaygpCisgICAgQ2FsbGVkIGZyb20gcHlzaGVsbC5tYWluKCkgYWZ0ZXIgaW5pdGlhbCBjYWxscyB0byBUaygpCiAKICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHRocmVlIG1ham9yIHZlcnNpb25zIG9mIFRrIGluIHVzZSBvbiBPUyBYOgogICAgICAgICAxLiBBcXVhIENvY29hIFRrIChuYXRpdmUgZGVmYXVsdCBzaW5jZSBPUyBYIDEwLjYpCkBAIC0yMzMsOCArMjQxLDEzIEBACiAgICAgaXNBcXVhVGsoKSwgaXNDYXJib25UaygpLCBpc0NvY29hVGsoKSwgaXNYUXVhcnR6KCkgZnVuY3Rpb25zIHdoaWNoCiAgICAgYXJlIGluaXRpYWxpemVkIGhlcmUgYXMgd2VsbC4KICAgICAiIiIKLSAgICBfaW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzKHJvb3QpCiAgICAgaWYgaXNBcXVhVGsoKToKICAgICAgICAgaGlkZVRrQ29uc29sZShyb290KQogICAgICAgICBvdmVycmlkZVJvb3RNZW51KHJvb3QsIGZsaXN0KQogICAgICAgICBhZGRPcGVuRXZlbnRTdXBwb3J0KHJvb3QsIGZsaXN0KQorICAgICAgICBmaXhiMmNvbnRleHQocm9vdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1haW4KKyAgICBtYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X21hY29zeCcsIHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQmluZGluZ3MucHkgYi9MaWIvaWRsZWxpYi9tYWlubWVudS5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9CaW5kaW5ncy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvbWFpbm1lbnUucHkKaW5kZXggZTE5YTI3OS4uNjUzNDVjZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQmluZGluZ3MucHkKKysrIGIvTGliL2lkbGVsaWIvbWFpbm1lbnUucHkKQEAgLTEwLDkgKzEwLDkgQEAKICIiIgogZnJvbSBpbXBvcnRsaWIudXRpbCBpbXBvcnQgZmluZF9zcGVjCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAotIyAgIFdhcm5pbmc6IG1lbnVkZWZzIGlzIGFsdGVyZWQgaW4gbWFjb3N4U3VwcG9ydC5vdmVycmlkZVJvb3RNZW51KCkKKyMgICBXYXJuaW5nOiBtZW51ZGVmcyBpcyBhbHRlcmVkIGluIG1hY29zeC5vdmVycmlkZVJvb3RNZW51KCkKICMgICBhZnRlciBpdCBpcyBkZXRlcm1pbmVkIHRoYXQgYW4gT1MgWCBBcXVhIFRrIGlzIGluIHVzZSwKICMgICB3aGljaCBjYW5ub3QgYmUgZG9uZSB1bnRpbCBhZnRlciBUaygpIGlzIGZpcnN0IGNhbGxlZC4KICMgICBEbyBub3QgYWx0ZXIgdGhlICdmaWxlJywgJ29wdGlvbnMnLCBvciAnaGVscCcgY2FzY2FkZXMgaGVyZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5IGIvTGliL2lkbGVsaWIvbXVsdGljYWxsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL011bHRpQ2FsbC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvbXVsdGljYWxsLnB5CmluZGV4IDg0NjI4NTQuLmI3NGZlZDQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL011bHRpQ2FsbC5weQorKysgYi9MaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKQEAgLTI4LDkgKzI4LDkgQEAKICAgIHVubGVzcyB0aGlzIGNvbmZsaWN0cyB3aXRoIHRoZSBmaXJzdCBydWxlLgogRWFjaCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhdCBtb3N0IG9uY2UgZm9yIGVhY2ggZXZlbnQuCiAiIiIKLQotaW1wb3J0IHN5cwogaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKIGltcG9ydCB0a2ludGVyCiAKICMgdGhlIGV2ZW50IHR5cGUgY29uc3RhbnRzLCB3aGljaCBkZWZpbmUgdGhlIG1lYW5pbmcgb2YgbWNfdHlwZQpAQCAtNDE0LDEyICs0MTQsMTIgQEAKICAgICByZXR1cm4gTXVsdGlDYWxsCiAKIAotZGVmIF9tdWx0aV9jYWxsKHBhcmVudCk6Ci0gICAgcm9vdCA9IHRraW50ZXIuVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgTXVsdGlDYWxsIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgdGV4dCA9IE11bHRpQ2FsbENyZWF0b3IodGtpbnRlci5UZXh0KShyb290KQorZGVmIF9tdWx0aV9jYWxsKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSB0a2ludGVyLlRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgTXVsdGlDYWxsIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQorICAgIHRleHQgPSBNdWx0aUNhbGxDcmVhdG9yKHRraW50ZXIuVGV4dCkodG9wKQogICAgIHRleHQucGFjaygpCiAgICAgZGVmIGJpbmRzZXEoc2VxLCBuPVswXSk6CiAgICAgICAgIGRlZiBoYW5kbGVyKGV2ZW50KToKQEAgLTQzOSw3ICs0MzksNiBAQAogICAgIGJpbmRzZXEoIjxGb2N1c091dD4iKQogICAgIGJpbmRzZXEoIjxFbnRlcj4iKQogICAgIGJpbmRzZXEoIjxMZWF2ZT4iKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5IGIvTGliL2lkbGVsaWIvb3V0d2luLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL091dHB1dFdpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvb3V0d2luLnB5CmluZGV4IGU2MTRmOWIuLmY2ZDI5MTUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL091dHB1dFdpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9vdXR3aW4ucHkKQEAgLTEsOCArMSwxMSBAQAotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3cKIGltcG9ydCByZQorCitmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IElPQmluZGluZworCitmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaW9tZW51CisKIAogY2xhc3MgT3V0cHV0V2luZG93KEVkaXRvcldpbmRvdyk6CiAKQEAgLTM2LDcgKzM5LDcgQEAKIAogICAgIGRlZiB3cml0ZShzZWxmLCBzLCB0YWdzPSgpLCBtYXJrPSJpbnNlcnQiKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzLCAoYnl0ZXMsIGJ5dGVzKSk6Ci0gICAgICAgICAgICBzID0gcy5kZWNvZGUoSU9CaW5kaW5nLmVuY29kaW5nLCAicmVwbGFjZSIpCisgICAgICAgICAgICBzID0gcy5kZWNvZGUoaW9tZW51LmVuY29kaW5nLCAicmVwbGFjZSIpCiAgICAgICAgIHNlbGYudGV4dC5pbnNlcnQobWFyaywgcywgdGFncykKICAgICAgICAgc2VsZi50ZXh0LnNlZShtYXJrKQogICAgICAgICBzZWxmLnRleHQudXBkYXRlKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weSBiL0xpYi9pZGxlbGliL3BhcmFncmFwaC5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Gb3JtYXRQYXJhZ3JhcGgucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BhcmFncmFwaC5weQppbmRleCA3YTlkMTg1Li5mMTFiZGFlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Gb3JtYXRQYXJhZ3JhcGgucHkKKysrIGIvTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CkBAIC0xNCw5ICsxNCwxMCBAQAogICBzcGFjZXMsIHRoZXkgd2lsbCBub3QgYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBzYW1lIGJsb2NrLgogKiBGYW5jeSBjb21tZW50cywgbGlrZSB0aGlzIGJ1bGxldGVkIGxpc3QsIGFyZW4ndCBoYW5kbGVkIDotKQogIiIiCi0KIGltcG9ydCByZQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCisKIAogY2xhc3MgRm9ybWF0UGFyYWdyYXBoOgogCkBAIC0xMjksNyArMTMwLDcgQEAKICAgICBwYXJ0aWFsID0gaW5kZW50MQogICAgIHdoaWxlIGkgPCBuIGFuZCBub3QgaXNfYWxsX3doaXRlKGxpbmVzW2ldKToKICAgICAgICAgIyBYWFggU2hvdWxkIHRha2UgZG91YmxlIHNwYWNlIGFmdGVyIHBlcmlvZCAoZXRjLikgaW50byBhY2NvdW50Ci0gICAgICAgIHdvcmRzID0gcmUuc3BsaXQoIihccyspIiwgbGluZXNbaV0pCisgICAgICAgIHdvcmRzID0gcmUuc3BsaXQociIoXHMrKSIsIGxpbmVzW2ldKQogICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBsZW4od29yZHMpLCAyKToKICAgICAgICAgICAgIHdvcmQgPSB3b3Jkc1tqXQogICAgICAgICAgICAgaWYgbm90IHdvcmQ6CkBAIC0xODksNyArMTkwLDggQEAKICAgICBpZiBtIGlzIE5vbmU6IHJldHVybiAiIgogICAgIHJldHVybiBtLmdyb3VwKDEpCiAKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2Zvcm1hdHBhcmFncmFwaCcsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9wYXJhZ3JhcGgnLAogICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QYXJlbk1hdGNoLnB5IGIvTGliL2lkbGVsaWIvcGFyZW5tYXRjaC5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9QYXJlbk1hdGNoLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CmluZGV4IDQ3ZTEwZjMuLmNjZWM3MDggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkKKysrIGIvTGliL2lkbGVsaWIvcGFyZW5tYXRjaC5weQpAQCAtNCw5ICs0LDggQEAKIHBhcmVuLiAgUGFyZW4gaGVyZSBpcyB1c2VkIGdlbmVyaWNhbGx5OyB0aGUgbWF0Y2hpbmcgYXBwbGllcyB0bwogcGFyZW50aGVzZXMsIHNxdWFyZSBicmFja2V0cywgYW5kIGN1cmx5IGJyYWNlcy4KICIiIgotCi1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKIF9vcGVuZXJzID0geycpJzonKCcsJ10nOidbJywnfSc6J3snfQogQ0hFQ0tfREVMQVkgPSAxMDAgIyBtaWxsaXNlY29uZHMKQEAgLTY0LDYgKzYzLDcgQEAKICAgICAgICAgIyBhbmQgZGVhY3RpdmF0ZV9yZXN0b3JlICh3aGljaCBjYWxscyBldmVudF9kZWxldGUpLgogICAgICAgICBlZGl0d2luLnRleHQuYmluZChzZWxmLlJFU1RPUkVfVklSVFVBTF9FVkVOVF9OQU1FLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3RvcmVfZXZlbnQpCisgICAgICAgIHNlbGYuYmVsbCA9IHNlbGYudGV4dC5iZWxsIGlmIHNlbGYuQkVMTCBlbHNlIGxhbWJkYTogTm9uZQogICAgICAgICBzZWxmLmNvdW50ZXIgPSAwCiAgICAgICAgIHNlbGYuaXNfcmVzdG9yZV9hY3RpdmUgPSAwCiAgICAgICAgIHNlbGYuc2V0X3N0eWxlKHNlbGYuU1RZTEUpCkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgIGluZGljZXMgPSAoSHlwZXJQYXJzZXIoc2VsZi5lZGl0d2luLCAiaW5zZXJ0IikKICAgICAgICAgICAgICAgICAgICAuZ2V0X3N1cnJvdW5kaW5nX2JyYWNrZXRzKCkpCiAgICAgICAgIGlmIGluZGljZXMgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYud2Fybl9taXNtYXRjaGVkKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hY3RpdmF0ZV9yZXN0b3JlKCkKICAgICAgICAgc2VsZi5jcmVhdGVfdGFnKGluZGljZXMpCkBAIC0xMDksNyArMTA5LDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpbmRpY2VzID0gaHAuZ2V0X3N1cnJvdW5kaW5nX2JyYWNrZXRzKF9vcGVuZXJzW2Nsb3Nlcl0sIFRydWUpCiAgICAgICAgIGlmIGluZGljZXMgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYud2Fybl9taXNtYXRjaGVkKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hY3RpdmF0ZV9yZXN0b3JlKCkKICAgICAgICAgc2VsZi5jcmVhdGVfdGFnKGluZGljZXMpCkBAIC0xMjQsMTAgKzEyNCw2IEBACiAgICAgICAgIGlmIHRpbWVyX2NvdW50ID09IHNlbGYuY291bnRlcjoKICAgICAgICAgICAgIHNlbGYucmVzdG9yZV9ldmVudCgpCiAKLSAgICBkZWYgd2Fybl9taXNtYXRjaGVkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLkJFTEw6Ci0gICAgICAgICAgICBzZWxmLnRleHQuYmVsbCgpCi0KICAgICAjIGFueSBvbmUgb2YgdGhlIGNyZWF0ZV90YWdfWFhYIG1ldGhvZHMgY2FuIGJlIHVzZWQgZGVwZW5kaW5nIG9uCiAgICAgIyB0aGUgc3R5bGUKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGF0aGJyb3dzZXIucHkKaW5kZXggOWFiNzYzMi4uNmMxOTUwOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvcGF0aGJyb3dzZXIucHkKQEAgLTEsMTAgKzEsMTAgQEAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiAKLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlSXRlbQotZnJvbSBpZGxlbGliLkNsYXNzQnJvd3NlciBpbXBvcnQgQ2xhc3NCcm93c2VyLCBNb2R1bGVCcm93c2VyVHJlZUl0ZW0KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKK2Zyb20gaWRsZWxpYi5icm93c2VyIGltcG9ydCBDbGFzc0Jyb3dzZXIsIE1vZHVsZUJyb3dzZXJUcmVlSXRlbQorZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFRyZWVJdGVtCiAKIAogY2xhc3MgUGF0aEJyb3dzZXIoQ2xhc3NCcm93c2VyKToKQEAgLTI0LDYgKzI0LDcgQEAKICAgICBkZWYgcm9vdG5vZGUoc2VsZik6CiAgICAgICAgIHJldHVybiBQYXRoQnJvd3NlclRyZWVJdGVtKCkKIAorCiBjbGFzcyBQYXRoQnJvd3NlclRyZWVJdGVtKFRyZWVJdGVtKToKIAogICAgIGRlZiBHZXRUZXh0KHNlbGYpOgpAQCAtMzYsNiArMzcsNyBAQAogICAgICAgICAgICAgc3VibGlzdC5hcHBlbmQoaXRlbSkKICAgICAgICAgcmV0dXJuIHN1Ymxpc3QKIAorCiBjbGFzcyBEaXJCcm93c2VyVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpciwgcGFja2FnZXM9W10pOgpAQCAtOTUsNiArOTcsNyBAQAogICAgICAgICBzb3J0ZWQuc29ydCgpCiAgICAgICAgIHJldHVybiBzb3J0ZWQKIAorCiBkZWYgX3BhdGhfYnJvd3NlcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3QocGFyZW50KQogICAgIFBhdGhCcm93c2VyKGZsaXN0LCBfaHRlc3Q9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BlcmNvbGF0b3IucHkgYi9MaWIvaWRsZWxpYi9wZXJjb2xhdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BlcmNvbGF0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKaW5kZXggYjhiZTJhYS4uZDE4ZGFmMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGVyY29sYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9wZXJjb2xhdG9yLnB5CkBAIC0xLDUgKzEsNSBAQAotZnJvbSBpZGxlbGliLldpZGdldFJlZGlyZWN0b3IgaW1wb3J0IFdpZGdldFJlZGlyZWN0b3IKLWZyb20gaWRsZWxpYi5EZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorZnJvbSBpZGxlbGliLmRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIucmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgogCiAKIGNsYXNzIFBlcmNvbGF0b3I6CkBAIC01Nyw3ICs1Nyw2IEBACiAKIGRlZiBfcGVyY29sYXRvcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgaW1wb3J0IHRraW50ZXIgYXMgdGsKLSAgICBpbXBvcnQgcmUKIAogICAgIGNsYXNzIFRyYWNlcihEZWxlZ2F0b3IpOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CkBAIC03NCw4ICs3Myw4IEBACiAKICAgICBib3ggPSB0ay5Ub3BsZXZlbChwYXJlbnQpCiAgICAgYm94LnRpdGxlKCJUZXN0IFBlcmNvbGF0b3IiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICBib3guZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKICAgICB0ZXh0ID0gdGsuVGV4dChib3gpCiAgICAgcCA9IFBlcmNvbGF0b3IodGV4dCkKICAgICBwaW4gPSBwLmluc2VydGZpbHRlcgpAQCAtODksMTAgKzg4LDEwIEBACiAgICAgICAgIChwaW4gaWYgdmFyMi5nZXQoKSBlbHNlIHBvdXQpKHQyKQogCiAgICAgdGV4dC5wYWNrKCkKLSAgICB2YXIxID0gdGsuSW50VmFyKCkKKyAgICB2YXIxID0gdGsuSW50VmFyKHBhcmVudCkKICAgICBjYjEgPSB0ay5DaGVja2J1dHRvbihib3gsIHRleHQ9IlRyYWNlcjEiLCBjb21tYW5kPXRvZ2dsZTEsIHZhcmlhYmxlPXZhcjEpCiAgICAgY2IxLnBhY2soKQotICAgIHZhcjIgPSB0ay5JbnRWYXIoKQorICAgIHZhcjIgPSB0ay5JbnRWYXIocGFyZW50KQogICAgIGNiMiA9IHRrLkNoZWNrYnV0dG9uKGJveCwgdGV4dD0iVHJhY2VyMiIsIGNvbW1hbmQ9dG9nZ2xlMiwgdmFyaWFibGU9dmFyMikKICAgICBjYjIucGFjaygpCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1B5UGFyc2UucHkgYi9MaWIvaWRsZWxpYi9weXBhcnNlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1B5UGFyc2UucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3B5cGFyc2UucHkKaW5kZXggOWNjYmIyNS4uNjczOWRmZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUHlQYXJzZS5weQorKysgYi9MaWIvaWRsZWxpYi9weXBhcnNlLnB5CkBAIC0xLDYgKzEsNiBAQAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTWFwcGluZwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nCiAKICMgUmVhc29uIGxhc3Qgc3RtdCBpcyBjb250aW51ZWQgKG9yIENfTk9ORSBpZiBpdCdzIG5vdCkuCiAoQ19OT05FLCBDX0JBQ0tTTEFTSCwgQ19TVFJJTkdfRklSU1RfTElORSwKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1B5U2hlbGwucHkgYi9MaWIvaWRsZWxpYi9weXNoZWxsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1B5U2hlbGwucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3B5c2hlbGwucHkKaW5kZXggNWRlYzY4ZS4uZTFlYWRlMSAxMDA3NTUKLS0tIGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weQorKysgYi9MaWIvaWRsZWxpYi9weXNoZWxsLnB5CkBAIC0xLDIxICsxLDUgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCiAKLWltcG9ydCBnZXRvcHQKLWltcG9ydCBvcwotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCB0aW1lCi1pbXBvcnQgdG9rZW5pemUKLWltcG9ydCBpbwotCi1pbXBvcnQgbGluZWNhY2hlCi1mcm9tIGNvZGUgaW1wb3J0IEludGVyYWN0aXZlSW50ZXJwcmV0ZXIKLWZyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uLCBzeXN0ZW0KLQogdHJ5OgogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgKgogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjMsMTcgKzcsNDIgQEAKICAgICAgICAgICAiWW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUay4gKioiLCBmaWxlPXN5cy5fX3N0ZGVycl9fKQogICAgIHN5cy5leGl0KDEpCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAoraWYgVGtWZXJzaW9uIDwgOC41OgorICAgIHJvb3QgPSBUaygpICAjIG90aGVyd2lzZSBjcmVhdGUgcm9vdCBpbiBtYWluCisgICAgcm9vdC53aXRoZHJhdygpCisgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSWRsZSBDYW5ub3QgU3RhcnQiLAorICAgICAgICAgICAgIklkbGUgcmVxdWlyZXMgdGNsL3RrIDguNSssIG5vdCAkcy4iICUgVGtWZXJzaW9uLAorICAgICAgICAgICAgcGFyZW50PXJvb3QpCisgICAgc3lzLmV4aXQoMSkKIAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93LCBmaXh3b3JkYnJlYWtzCi1mcm9tIGlkbGVsaWIuRmlsZUxpc3QgaW1wb3J0IEZpbGVMaXN0Ci1mcm9tIGlkbGVsaWIuQ29sb3JEZWxlZ2F0b3IgaW1wb3J0IENvbG9yRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuVW5kb0RlbGVnYXRvciBpbXBvcnQgVW5kb0RlbGVnYXRvcgotZnJvbSBpZGxlbGliLk91dHB1dFdpbmRvdyBpbXBvcnQgT3V0cHV0V2luZG93Ci1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gY29kZSBpbXBvcnQgSW50ZXJhY3RpdmVJbnRlcnByZXRlcgoraW1wb3J0IGdldG9wdAoraW1wb3J0IGlvCitpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitmcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25fdmVyc2lvbiwgc3lzdGVtCitpbXBvcnQgcmUKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGltZQoraW1wb3J0IHRva2VuaXplCitpbXBvcnQgd2FybmluZ3MKKworZnJvbSBpZGxlbGliIGltcG9ydCB0ZXN0aW5nICAjIGJvb2wgdmFsdWUKK2Zyb20gaWRsZWxpYi5jb2xvcml6ZXIgaW1wb3J0IENvbG9yRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcgorZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcl9yCitmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3csIGZpeHdvcmRicmVha3MKK2Zyb20gaWRsZWxpYi5maWxlbGlzdCBpbXBvcnQgRmlsZUxpc3QKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIub3V0d2luIGltcG9ydCBPdXRwdXRXaW5kb3cKIGZyb20gaWRsZWxpYiBpbXBvcnQgcnBjCi1mcm9tIGlkbGVsaWIgaW1wb3J0IERlYnVnZ2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZURlYnVnZ2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gaWRsZWxpYi5ydW4gaW1wb3J0IGlkbGVfZm9ybWF0d2FybmluZywgUHNldWRvSW5wdXRGaWxlLCBQc2V1ZG9PdXRwdXRGaWxlCitmcm9tIGlkbGVsaWIudW5kbyBpbXBvcnQgVW5kb0RlbGVnYXRvcgogCiBIT1NUID0gJzEyNy4wLjAuMScgIyBweXRob24gZXhlY3V0aW9uIHNlcnZlciBvbiBsb2NhbGhvc3QgbG9vcGJhY2sKIFBPUlQgPSAwICAjIHNvbWVkYXkgcGFzcyBpbiBob3N0LCBwb3J0IGZvciByZW1vdGUgZGVidWcgY2FwYWJpbGl0eQpAQCAtNDMsMjAgKzUyLDYgQEAKICMgdGVtcG9yYXJpbHkgcmVkaXJlY3QgdGhlIHN0cmVhbSB0byB0aGUgc2hlbGwgd2luZG93IHRvIGRpc3BsYXkgd2FybmluZ3Mgd2hlbgogIyBjaGVja2luZyB1c2VyJ3MgY29kZS4KIHdhcm5pbmdfc3RyZWFtID0gc3lzLl9fc3RkZXJyX18gICMgTm9uZSwgYXQgbGVhc3Qgb24gV2luZG93cywgaWYgbm8gY29uc29sZS4KLWltcG9ydCB3YXJuaW5ncwotCi1kZWYgaWRsZV9mb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lPU5vbmUpOgotICAgICIiIkZvcm1hdCB3YXJuaW5ncyB0aGUgSURMRSB3YXkuIiIiCi0KLSAgICBzID0gIlxuV2FybmluZyAoZnJvbSB3YXJuaW5ncyBtb2R1bGUpOlxuIgotICAgIHMgKz0gJyAgRmlsZSBcIiVzXCIsIGxpbmUgJXNcbicgJSAoZmlsZW5hbWUsIGxpbmVubykKLSAgICBpZiBsaW5lIGlzIE5vbmU6Ci0gICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vKQotICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICBpZiBsaW5lOgotICAgICAgICBzICs9ICIgICAgJXNcbiIgJSBsaW5lCi0gICAgcyArPSAiJXM6ICVzXG4iICUgKGNhdGVnb3J5Ll9fbmFtZV9fLCBtZXNzYWdlKQotICAgIHJldHVybiBzCiAKIGRlZiBpZGxlX3Nob3d3YXJuaW5nKAogICAgICAgICBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpOgpAQCAtNDEwLDcgKzQwNSw3IEBACiAgICAgICAgICMgcnVuIGZyb20gdGhlIElETEUgc291cmNlIGRpcmVjdG9yeS4KICAgICAgICAgZGVsX2V4aXRmID0gaWRsZUNvbmYuR2V0T3B0aW9uKCdtYWluJywgJ0dlbmVyYWwnLCAnZGVsZXRlLWV4aXRmdW5jJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIHR5cGU9J2Jvb2wnKQotICAgICAgICBpZiBfX25hbWVfXyA9PSAnaWRsZWxpYi5QeVNoZWxsJzoKKyAgICAgICAgaWYgX19uYW1lX18gPT0gJ2lkbGVsaWIucHlzaGVsbCc6CiAgICAgICAgICAgICBjb21tYW5kID0gIl9faW1wb3J0X18oJ2lkbGVsaWIucnVuJykucnVuLm1haW4oJXIpIiAlIChkZWxfZXhpdGYsKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29tbWFuZCA9ICJfX2ltcG9ydF9fKCdydW4nKS5tYWluKCVyKSIgJSAoZGVsX2V4aXRmLCkKQEAgLTQ2OCw3ICs0NjMsNyBAQAogICAgICAgICBpZiBkZWJ1ZzoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAjIE9ubHkgY2xvc2Ugc3VicHJvY2VzcyBkZWJ1Z2dlciwgZG9uJ3QgdW5yZWdpc3RlciBndWlfYWRhcCEKLSAgICAgICAgICAgICAgICBSZW1vdGVEZWJ1Z2dlci5jbG9zZV9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQorICAgICAgICAgICAgICAgIGRlYnVnZ2VyX3IuY2xvc2Vfc3VicHJvY2Vzc19kZWJ1Z2dlcihzZWxmLnJwY2NsdCkKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgS2lsbCBzdWJwcm9jZXNzLCBzcGF3biBhIG5ldyBvbmUsIGFjY2VwdCBjb25uZWN0aW9uLgpAQCAtNDk3LDcgKzQ5Miw3IEBACiAgICAgICAgICMgcmVzdGFydCBzdWJwcm9jZXNzIGRlYnVnZ2VyCiAgICAgICAgIGlmIGRlYnVnOgogICAgICAgICAgICAgIyBSZXN0YXJ0ZWQgZGVidWdnZXIgY29ubmVjdHMgdG8gY3VycmVudCBpbnN0YW5jZSBvZiBkZWJ1ZyBHVUkKLSAgICAgICAgICAgIFJlbW90ZURlYnVnZ2VyLnJlc3RhcnRfc3VicHJvY2Vzc19kZWJ1Z2dlcihzZWxmLnJwY2NsdCkKKyAgICAgICAgICAgIGRlYnVnZ2VyX3IucmVzdGFydF9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQogICAgICAgICAgICAgIyByZWxvYWQgcmVtb3RlIGRlYnVnZ2VyIGJyZWFrcG9pbnRzIGZvciBhbGwgUHlTaGVsbEVkaXRXaW5kb3dzCiAgICAgICAgICAgICBkZWJ1Zy5sb2FkX2JyZWFrcG9pbnRzKCkKICAgICAgICAgc2VsZi5jb21waWxlLmNvbXBpbGVyLmZsYWdzID0gc2VsZi5vcmlnaW5hbF9jb21waWxlcl9mbGFncwpAQCAtNTc4LDcgKzU3Myw3IEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi50a2NvbnNvbGUuZ2V0dmFyKCI8PHRvZ2dsZS1qaXQtc3RhY2stdmlld2VyPj4iKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdGVfc3RhY2tfdmlld2VyKCkKICAgICAgICAgICAgIGVsaWYgaG93ID09ICJFUlJPUiI6Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gIlB5U2hlbGwuTW9kaWZpZWRJbnRlcnByZXRlcjogU3VicHJvY2VzcyBFUlJPUjpcbiIKKyAgICAgICAgICAgICAgICBlcnJtc2cgPSAicHlzaGVsbC5Nb2RpZmllZEludGVycHJldGVyOiBTdWJwcm9jZXNzIEVSUk9SOlxuIgogICAgICAgICAgICAgICAgIHByaW50KGVycm1zZywgd2hhdCwgZmlsZT1zeXMuX19zdGRlcnJfXykKICAgICAgICAgICAgICAgICBwcmludChlcnJtc2csIHdoYXQsIGZpbGU9Y29uc29sZSkKICAgICAgICAgICAgICMgd2UgcmVjZWl2ZWQgYSByZXNwb25zZSB0byB0aGUgY3VycmVudGx5IGFjdGl2ZSBzZXEgbnVtYmVyOgpAQCAtNjEzLDEzICs2MDgsMTMgQEAKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgcmVtb3RlX3N0YWNrX3ZpZXdlcihzZWxmKToKLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBSZW1vdGVPYmplY3RCcm93c2VyCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdvYmpfcgogICAgICAgICBvaWQgPSBzZWxmLnJwY2NsdC5yZW1vdGVxdWV1ZSgiZXhlYyIsICJzdGFja3ZpZXdlciIsICgiZmxpc3QiLCksIHt9KQogICAgICAgICBpZiBvaWQgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYudGtjb25zb2xlLnJvb3QuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaXRlbSA9IFJlbW90ZU9iamVjdEJyb3dzZXIuU3R1Yk9iamVjdFRyZWVJdGVtKHNlbGYucnBjY2x0LCBvaWQpCi0gICAgICAgIGZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBTY3JvbGxlZENhbnZhcywgVHJlZU5vZGUKKyAgICAgICAgaXRlbSA9IGRlYnVnb2JqX3IuU3R1Yk9iamVjdFRyZWVJdGVtKHNlbGYucnBjY2x0LCBvaWQpCisgICAgICAgIGZyb20gaWRsZWxpYi50cmVlIGltcG9ydCBTY3JvbGxlZENhbnZhcywgVHJlZU5vZGUKICAgICAgICAgdG9wID0gVG9wbGV2ZWwoc2VsZi50a2NvbnNvbGUucm9vdCkKICAgICAgICAgdGhlbWUgPSBpZGxlQ29uZi5DdXJyZW50VGhlbWUoKQogICAgICAgICBiYWNrZ3JvdW5kID0gaWRsZUNvbmYuR2V0SGlnaGxpZ2h0KHRoZW1lLCAnbm9ybWFsJylbJ2JhY2tncm91bmQnXQpAQCAtNjYyLDkgKzY1Nyw5IEBACiAgICAgICAgICMgYXQgdGhlIG1vbWVudCwgSW50ZXJhY3RpdmVJbnRlcnByZXRlciBleHBlY3RzIHN0cgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzb3VyY2UsIHN0cikKICAgICAgICAgI2lmIGlzaW5zdGFuY2Uoc291cmNlLCBzdHIpOgotICAgICAgICAjICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCisgICAgICAgICMgICAgZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUKICAgICAgICAgIyAgICB0cnk6Ci0gICAgICAgICMgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5lbmNvZGUoSU9CaW5kaW5nLmVuY29kaW5nKQorICAgICAgICAjICAgICAgICBzb3VyY2UgPSBzb3VyY2UuZW5jb2RlKGlvbWVudS5lbmNvZGluZykKICAgICAgICAgIyAgICBleGNlcHQgVW5pY29kZUVycm9yOgogICAgICAgICAjICAgICAgICBzZWxmLnRrY29uc29sZS5yZXNldG91dHB1dCgpCiAgICAgICAgICMgICAgICAgIHNlbGYud3JpdGUoIlVuc3VwcG9ydGVkIGNoYXJhY3RlcnMgaW4gaW5wdXRcbiIpCkBAIC04NTAsNyArODQ1LDcgQEAKIAogCiAgICAgIyBOZXcgY2xhc3NlcwotICAgIGZyb20gaWRsZWxpYi5JZGxlSGlzdG9yeSBpbXBvcnQgSGlzdG9yeQorICAgIGZyb20gaWRsZWxpYi5oaXN0b3J5IGltcG9ydCBIaXN0b3J5CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmxpc3Q9Tm9uZSk6CiAgICAgICAgIGlmIHVzZV9zdWJwcm9jZXNzOgpAQCAtODg4LDExICs4ODMsMTEgQEAKICAgICAgICAgc2VsZi5zYXZlX3N0ZG91dCA9IHN5cy5zdGRvdXQKICAgICAgICAgc2VsZi5zYXZlX3N0ZGVyciA9IHN5cy5zdGRlcnIKICAgICAgICAgc2VsZi5zYXZlX3N0ZGluID0gc3lzLnN0ZGluCi0gICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCi0gICAgICAgIHNlbGYuc3RkaW4gPSBQc2V1ZG9JbnB1dEZpbGUoc2VsZiwgInN0ZGluIiwgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzZWxmLnN0ZG91dCA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZG91dCIsIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc2VsZi5zdGRlcnIgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJzdGRlcnIiLCBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHNlbGYuY29uc29sZSA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgImNvbnNvbGUiLCBJT0JpbmRpbmcuZW5jb2RpbmcpCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgaW9tZW51CisgICAgICAgIHNlbGYuc3RkaW4gPSBQc2V1ZG9JbnB1dEZpbGUoc2VsZiwgInN0ZGluIiwgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzZWxmLnN0ZG91dCA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZG91dCIsIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJzdGRlcnIiLCBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHNlbGYuY29uc29sZSA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgImNvbnNvbGUiLCBpb21lbnUuZW5jb2RpbmcpCiAgICAgICAgIGlmIG5vdCB1c2Vfc3VicHJvY2VzczoKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzZWxmLnN0ZG91dAogICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNlbGYuc3RkZXJyCkBAIC05MDAsNyArODk1LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBwYWdlIGhlbHAoKSB0ZXh0IHRvIHNoZWxsLgogICAgICAgICAgICAgaW1wb3J0IHB5ZG9jICMgaW1wb3J0IG11c3QgYmUgZG9uZSBoZXJlIHRvIGNhcHR1cmUgaS9vIHJlYmluZGluZy4KLSAgICAgICAgICAgICMgWFhYIEtCSyAyN0RlYzA3IHVzZSBhIHRleHRWaWV3IHNvbWVkYXksIGJ1dCBtdXN0IHdvcmsgdy9vIHN1YnByb2MKKyAgICAgICAgICAgICMgWFhYIEtCSyAyN0RlYzA3IHVzZSBUZXh0Vmlld2VyIHNvbWVkYXksIGJ1dCBtdXN0IHdvcmsgdy9vIHN1YnByb2MKICAgICAgICAgICAgIHB5ZG9jLnBhZ2VyID0gcHlkb2MucGxhaW5wYWdlcgogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3lzLl9fc3RkZXJyX18KQEAgLTk1NCw3ICs5NDksNyBAQAogICAgICAgICAgICAgc2VsZi5pbnRlcnAuc2V0ZGVidWdnZXIoTm9uZSkKICAgICAgICAgICAgIGRiLmNsb3NlKCkKICAgICAgICAgICAgIGlmIHNlbGYuaW50ZXJwLnJwY2NsdDoKLSAgICAgICAgICAgICAgICBSZW1vdGVEZWJ1Z2dlci5jbG9zZV9yZW1vdGVfZGVidWdnZXIoc2VsZi5pbnRlcnAucnBjY2x0KQorICAgICAgICAgICAgICAgIGRlYnVnZ2VyX3IuY2xvc2VfcmVtb3RlX2RlYnVnZ2VyKHNlbGYuaW50ZXJwLnJwY2NsdCkKICAgICAgICAgICAgIHNlbGYucmVzZXRvdXRwdXQoKQogICAgICAgICAgICAgc2VsZi5jb25zb2xlLndyaXRlKCJbREVCVUcgT0ZGXVxuIikKICAgICAgICAgICAgIHN5cy5wczEgPSAiPj4+ICIKQEAgLTk2MywxMCArOTU4LDEwIEBACiAKICAgICBkZWYgb3Blbl9kZWJ1Z2dlcihzZWxmKToKICAgICAgICAgaWYgc2VsZi5pbnRlcnAucnBjY2x0OgotICAgICAgICAgICAgZGJnX2d1aSA9IFJlbW90ZURlYnVnZ2VyLnN0YXJ0X3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQsCisgICAgICAgICAgICBkYmdfZ3VpID0gZGVidWdnZXJfci5zdGFydF9yZW1vdGVfZGVidWdnZXIoc2VsZi5pbnRlcnAucnBjY2x0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGJnX2d1aSA9IERlYnVnZ2VyLkRlYnVnZ2VyKHNlbGYpCisgICAgICAgICAgICBkYmdfZ3VpID0gZGVidWdnZXIuRGVidWdnZXIoc2VsZikKICAgICAgICAgc2VsZi5pbnRlcnAuc2V0ZGVidWdnZXIoZGJnX2d1aSkKICAgICAgICAgZGJnX2d1aS5sb2FkX2JyZWFrcG9pbnRzKCkKICAgICAgICAgc3lzLnBzMSA9ICJbREVCVUcgT05dXG4+Pj4gIgpAQCAtMTI0MSw3ICsxMjM2LDcgQEAKICAgICAgICAgICAgICAgICAiKHN5cy5sYXN0X3RyYWNlYmFjayBpcyBub3QgZGVmaW5lZCkiLAogICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmLnRleHQpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZnJvbSBpZGxlbGliLlN0YWNrVmlld2VyIGltcG9ydCBTdGFja0Jyb3dzZXIKKyAgICAgICAgZnJvbSBpZGxlbGliLnN0YWNrdmlld2VyIGltcG9ydCBTdGFja0Jyb3dzZXIKICAgICAgICAgU3RhY2tCcm93c2VyKHNlbGYucm9vdCwgc2VsZi5mbGlzdCkKIAogICAgIGRlZiB2aWV3X3Jlc3RhcnRfbWFyayhzZWxmLCBldmVudD1Ob25lKToKQEAgLTEzMDksOTIgKzEzMDQsNiBAQAogICAgICAgICAgICAgcmV0dXJuICdkaXNhYmxlZCcKICAgICAgICAgcmV0dXJuIHN1cGVyKCkucm1lbnVfY2hlY2tfcGFzdGUoKQogCi1jbGFzcyBQc2V1ZG9GaWxlKGlvLlRleHRJT0Jhc2UpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZz1Ob25lKToKLSAgICAgICAgc2VsZi5zaGVsbCA9IHNoZWxsCi0gICAgICAgIHNlbGYudGFncyA9IHRhZ3MKLSAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSBlbmNvZGluZwotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGVuY29kaW5nKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZW5jb2RpbmcKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gJzwlcz4nICUgc2VsZi50YWdzCi0KLSAgICBkZWYgaXNhdHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0KLWNsYXNzIFBzZXVkb091dHB1dEZpbGUoUHNldWRvRmlsZSk6Ci0KLSAgICBkZWYgd3JpdGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgcyk6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigid3JpdGUgdG8gY2xvc2VkIGZpbGUiKQotICAgICAgICBpZiB0eXBlKHMpIGlzIG5vdCBzdHI6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBzdHIpOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBzdHIsIG5vdCAnICsgdHlwZShzKS5fX25hbWVfXykKLSAgICAgICAgICAgICMgU2VlIGlzc3VlICMxOTQ4MQotICAgICAgICAgICAgcyA9IHN0ci5fX3N0cl9fKHMpCi0gICAgICAgIHJldHVybiBzZWxmLnNoZWxsLndyaXRlKHMsIHNlbGYudGFncykKLQotCi1jbGFzcyBQc2V1ZG9JbnB1dEZpbGUoUHNldWRvRmlsZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICBQc2V1ZG9GaWxlLl9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZykKLSAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSAnJwotCi0gICAgZGVmIHJlYWRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKLSAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgc2l6ZSA9IC0xCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5fbGluZV9idWZmZXIKLSAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSAnJwotICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuc2hlbGwucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhawotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBsaW5lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3aGlsZSBsZW4ocmVzdWx0KSA8IHNpemU6Ci0gICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuc2hlbGwucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhawotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBsaW5lCi0gICAgICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9IHJlc3VsdFtzaXplOl0KLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFs6c2l6ZV0KLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCi0gICAgICAgIGlmIHNpemUgaXMgTm9uZToKLSAgICAgICAgICAgIHNpemUgPSAtMQotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgaW50LCBub3QgJyArIHR5cGUoc2l6ZSkuX19uYW1lX18pCi0gICAgICAgIGxpbmUgPSBzZWxmLl9saW5lX2J1ZmZlciBvciBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKLSAgICAgICAgaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICBzaXplID0gbGVuKGxpbmUpCi0gICAgICAgIGVvbCA9IGxpbmUuZmluZCgnXG4nLCAwLCBzaXplKQotICAgICAgICBpZiBlb2wgPj0gMDoKLSAgICAgICAgICAgIHNpemUgPSBlb2wgKyAxCi0gICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gbGluZVtzaXplOl0KLSAgICAgICAgcmV0dXJuIGxpbmVbOnNpemVdCi0KLSAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuc2hlbGwuY2xvc2UoKQotCiAKIGRlZiBmaXhfeDExX3Bhc3RlKHJvb3QpOgogICAgICJNYWtlIHBhc3RlIHJlcGxhY2Ugc2VsZWN0aW9uIG9uIHgxMS4gIFNlZSBpc3N1ZSAjNTEyNC4iCkBAIC0xNTQwLDcgKzE0NDksMTAgQEAKICAgICBlbmFibGVfZWRpdCA9IGVuYWJsZV9lZGl0IG9yIGVkaXRfc3RhcnQKICAgICBlbmFibGVfc2hlbGwgPSBlbmFibGVfc2hlbGwgb3Igbm90IGVuYWJsZV9lZGl0CiAKLSAgICAjIHN0YXJ0IGVkaXRvciBhbmQvb3Igc2hlbGwgd2luZG93czoKKyAgICAjIFNldHVwIHJvb3QuICBEb24ndCBicmVhayB1c2VyIGNvZGUgcnVuIGluIElETEUgcHJvY2Vzcy4KKyAgICAjIERvbid0IGNoYW5nZSBlbnZpcm9ubWVudCB3aGVuIHRlc3RpbmcuCisgICAgaWYgdXNlX3N1YnByb2Nlc3MgYW5kIG5vdCB0ZXN0aW5nOgorICAgICAgICBOb0RlZmF1bHRSb290KCkKICAgICByb290ID0gVGsoY2xhc3NOYW1lPSJJZGxlIikKICAgICByb290LndpdGhkcmF3KCkKIApAQCAtMTU0OSwyNSArMTQ2MSwxOSBAQAogICAgIGlmIHN5c3RlbSgpID09ICdXaW5kb3dzJzoKICAgICAgICAgaWNvbmZpbGUgPSBvcy5wYXRoLmpvaW4oaWNvbmRpciwgJ2lkbGUuaWNvJykKICAgICAgICAgcm9vdC53bV9pY29uYml0bWFwKGRlZmF1bHQ9aWNvbmZpbGUpCi0gICAgZWxpZiBUa1ZlcnNpb24gPj0gOC41OgorICAgIGVsc2U6CiAgICAgICAgIGV4dCA9ICcucG5nJyBpZiBUa1ZlcnNpb24gPj0gOC42IGVsc2UgJy5naWYnCiAgICAgICAgIGljb25maWxlcyA9IFtvcy5wYXRoLmpvaW4oaWNvbmRpciwgJ2lkbGVfJWQlcycgJSAoc2l6ZSwgZXh0KSkKICAgICAgICAgICAgICAgICAgICAgIGZvciBzaXplIGluICgxNiwgMzIsIDQ4KV0KLSAgICAgICAgaWNvbnMgPSBbUGhvdG9JbWFnZShmaWxlPWljb25maWxlKSBmb3IgaWNvbmZpbGUgaW4gaWNvbmZpbGVzXQorICAgICAgICBpY29ucyA9IFtQaG90b0ltYWdlKG1hc3Rlcj1yb290LCBmaWxlPWljb25maWxlKQorICAgICAgICAgICAgICAgICBmb3IgaWNvbmZpbGUgaW4gaWNvbmZpbGVzXQogICAgICAgICByb290LndtX2ljb25waG90byhUcnVlLCAqaWNvbnMpCiAKKyAgICAjIHN0YXJ0IGVkaXRvciBhbmQvb3Igc2hlbGwgd2luZG93czoKICAgICBmaXh3b3JkYnJlYWtzKHJvb3QpCiAgICAgZml4X3gxMV9wYXN0ZShyb290KQogICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHJvb3QpCi0gICAgbWFjb3N4U3VwcG9ydC5zZXR1cEFwcChyb290LCBmbGlzdCkKLQotICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKLSAgICAgICAgIyBUaGVyZSBhcmUgc29tZSBzY3Jld2VkIHVwIDwyPiBjbGFzcyBiaW5kaW5ncyBmb3IgdGV4dAotICAgICAgICAjIHdpZGdldHMgZGVmaW5lZCBpbiBUayB3aGljaCB3ZSBuZWVkIHRvIGRvIGF3YXkgd2l0aC4KLSAgICAgICAgIyBTZWUgaXNzdWUgIzI0ODAxLgotICAgICAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjI+JykKLSAgICAgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPEIyLU1vdGlvbj4nKQotICAgICAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8PFBhc3RlU2VsZWN0aW9uPj4nKQorICAgIG1hY29zeC5zZXR1cEFwcChyb290LCBmbGlzdCkKIAogICAgIGlmIGVuYWJsZV9lZGl0OgogICAgICAgICBpZiBub3QgKGNtZCBvciBzY3JpcHQpOgpAQCAtMTU4Miw3ICsxNDg4LDcgQEAKICAgICAgICAgc2hlbGwgPSBmbGlzdC5vcGVuX3NoZWxsKCkKICAgICAgICAgaWYgbm90IHNoZWxsOgogICAgICAgICAgICAgcmV0dXJuICMgY291bGRuJ3Qgb3BlbiBzaGVsbAotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCkgYW5kIGZsaXN0LmRpY3Q6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpIGFuZCBmbGlzdC5kaWN0OgogICAgICAgICAgICAgIyBPbiBPU1g6IHdoZW4gdGhlIHVzZXIgaGFzIGRvdWJsZS1jbGlja2VkIG9uIGEgZmlsZSB0aGF0IGNhdXNlcwogICAgICAgICAgICAgIyBJRExFIHRvIGJlIGxhdW5jaGVkIHRoZSBzaGVsbCB3aW5kb3cgd2lsbCBvcGVuIGp1c3QgaW4gZnJvbnQgb2YKICAgICAgICAgICAgICMgdGhlIGZpbGUgc2hlIHdhbnRzIHRvIHNlZS4gTG93ZXIgdGhlIGludGVycHJldGVyIHdpbmRvdyB3aGVuCkBAIC0xNjE2LDcgKzE1MjIsNyBAQAogICAgICAgICAjIGNoZWNrIGZvciBwcm9ibGVtYXRpYyBPUyBYIFRrIHZlcnNpb25zIGFuZCBwcmludCBhIHdhcm5pbmcKICAgICAgICAgIyBtZXNzYWdlIGluIHRoZSBJRExFIHNoZWxsIHdpbmRvdzsgdGhpcyBpcyBsZXNzIGludHJ1c2l2ZQogICAgICAgICAjIHRoYW4gYWx3YXlzIG9wZW5pbmcgYSBzZXBhcmF0ZSB3aW5kb3cuCi0gICAgICAgIHRrdmVyc2lvbndhcm5pbmcgPSBtYWNvc3hTdXBwb3J0LnRrVmVyc2lvbldhcm5pbmcocm9vdCkKKyAgICAgICAgdGt2ZXJzaW9ud2FybmluZyA9IG1hY29zeC50a1ZlcnNpb25XYXJuaW5nKHJvb3QpCiAgICAgICAgIGlmIHRrdmVyc2lvbndhcm5pbmc6CiAgICAgICAgICAgICBzaGVsbC5pbnRlcnAucnVuY29tbWFuZCgicHJpbnQoJyVzJykiICUgdGt2ZXJzaW9ud2FybmluZykKIApAQCAtMTYyNiw3ICsxNTMyLDcgQEAKICAgICBjYXB0dXJlX3dhcm5pbmdzKEZhbHNlKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHN5cy5tb2R1bGVzWydQeVNoZWxsJ10gPSBzeXMubW9kdWxlc1snX19tYWluX18nXQorICAgIHN5cy5tb2R1bGVzWydweXNoZWxsJ10gPSBzeXMubW9kdWxlc1snX19tYWluX18nXQogICAgIG1haW4oKQogCiBjYXB0dXJlX3dhcm5pbmdzKEZhbHNlKSAgIyBNYWtlIHN1cmUgdHVybmVkIG9mZjsgc2VlIGlzc3VlIDE4MDgxCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9xdWVyeS5weSBiL0xpYi9pZGxlbGliL3F1ZXJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMWYxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9xdWVyeS5weQpAQCAtMCwwICsxLDMwOCBAQAorIiIiCitEaWFsb2dzIHRoYXQgcXVlcnkgdXNlcnMgYW5kIHZlcmlmeSB0aGUgYW5zd2VyIGJlZm9yZSBhY2NlcHRpbmcuCitVc2UgdHRrIHdpZGdldHMsIGxpbWl0aW5nIHVzZSB0byB0Y2wvdGsgOC41KywgYXMgaW4gSURMRSAzLjYrLgorCitRdWVyeSBpcyB0aGUgZ2VuZXJpYyBiYXNlIGNsYXNzIGZvciBhIHBvcHVwIGRpYWxvZy4KK1RoZSB1c2VyIG11c3QgZWl0aGVyIGVudGVyIGEgdmFsaWQgYW5zd2VyIG9yIGNsb3NlIHRoZSBkaWFsb2cuCitFbnRyaWVzIGFyZSB2YWxpZGF0ZWQgd2hlbiA8UmV0dXJuPiBpcyBlbnRlcmVkIG9yIFtPa10gaXMgY2xpY2tlZC4KK0VudHJpZXMgYXJlIGlnbm9yZWQgd2hlbiBbQ2FuY2VsXSBvciBbWF0gYXJlIGNsaWNrZWQuCitUaGUgJ3JldHVybiB2YWx1ZScgaXMgLnJlc3VsdCBzZXQgdG8gZWl0aGVyIGEgdmFsaWQgYW5zd2VyIG9yIE5vbmUuCisKK1N1YmNsYXNzIFNlY3Rpb25OYW1lIGdldHMgYSBuYW1lIGZvciBhIG5ldyBjb25maWcgZmlsZSBzZWN0aW9uLgorQ29uZmlnZGlhbG9nIHVzZXMgaXQgZm9yIG5ldyBoaWdobGlnaHQgdGhlbWUgYW5kIGtleWJpbmRpbmcgc2V0IG5hbWVzLgorU3ViY2xhc3MgTW9kdWxlTmFtZSBnZXRzIGEgbmFtZSBmb3IgRmlsZSA9PiBPcGVuIE1vZHVsZS4KK1N1YmNsYXNzIEhlbHBTb3VyY2UgZ2V0cyBtZW51IGl0ZW0gYW5kIHBhdGggZm9yIGFkZGl0aW9ucyB0byBIZWxwIG1lbnUuCisiIiIKKyMgUXVlcnkgYW5kIFNlY3Rpb24gbmFtZSByZXN1bHQgZnJvbSBzcGxpdHRpbmcgR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2cKKyMgb2YgY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkgKHRlbXBvcmFyaWx5IGNvbmZpZ19zZWMucHkpIGludG8KKyMgZ2VuZXJpYyBhbmQgc3BlY2lmaWMgcGFydHMuICAzLjYgb25seSwgSnVseSAyMDE2LgorIyBNb2R1bGVOYW1lLmVudHJ5X29rIGNhbWUgZnJvbSBlZGl0b3IuRWRpdG9yV2luZG93LmxvYWRfbW9kdWxlLgorIyBIZWxwU291cmNlIHdhcyBleHRyYWN0ZWQgZnJvbSBjb25maWdIZWxwU291cmNlRWRpdC5weSAodGVtcG9yYXJpbHkKKyMgY29uZmlnX2hlbHAucHkpLCB3aXRoIGRhcndpbiBjb2RlIG1vdmVkIGZyb20gb2sgdG8gcGF0aF9vay4KKworaW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IG9zCitmcm9tIHN5cyBpbXBvcnQgZXhlY3V0YWJsZSwgcGxhdGZvcm0gICMgUGxhdGZvcm0gaXMgc2V0IGZvciBvbmUgdGVzdC4KKworZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgU3RyaW5nVmFyLCBXLCBFLCBOLCBTCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBGcmFtZSwgQnV0dG9uLCBFbnRyeSwgTGFiZWwKK2Zyb20gdGtpbnRlciBpbXBvcnQgZmlsZWRpYWxvZworZnJvbSB0a2ludGVyLmZvbnQgaW1wb3J0IEZvbnQKKworY2xhc3MgUXVlcnkoVG9wbGV2ZWwpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIGdldHRpbmcgdmVyaWZpZWQgYW5zd2VyIGZyb20gYSB1c2VyLgorCisgICAgRm9yIHRoaXMgYmFzZSBjbGFzcywgYWNjZXB0IGFueSBub24tYmxhbmsgc3RyaW5nLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCAqLCB0ZXh0MD0nJywgdXNlZF9uYW1lcz17fSwKKyAgICAgICAgICAgICAgICAgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgorICAgICAgICAiIiJDcmVhdGUgcG9wdXAsIGRvIG5vdCByZXR1cm4gdW50aWwgdGsgd2lkZ2V0IGRlc3Ryb3llZC4KKworICAgICAgICBBZGRpdGlvbmFsIHN1YmNsYXNzIGluaXQgbXVzdCBiZSBkb25lIGJlZm9yZSBjYWxsaW5nIHRoaXMKKyAgICAgICAgdW5sZXNzICBfdXRlc3Q9VHJ1ZSBpcyBwYXNzZWQgdG8gc3VwcHJlc3Mgd2FpdF93aW5kb3coKS4KKworICAgICAgICB0aXRsZSAtIHN0cmluZywgdGl0bGUgb2YgcG9wdXAgZGlhbG9nCisgICAgICAgIG1lc3NhZ2UgLSBzdHJpbmcsIGluZm9ybWF0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5CisgICAgICAgIHRleHQwIC0gaW5pdGlhbCB2YWx1ZSBmb3IgZW50cnkKKyAgICAgICAgdXNlZF9uYW1lcyAtIG5hbWVzIGFscmVhZHkgaW4gdXNlCisgICAgICAgIF9odGVzdCAtIGJvb2wsIGNoYW5nZSBib3ggbG9jYXRpb24gd2hlbiBydW5uaW5nIGh0ZXN0CisgICAgICAgIF91dGVzdCAtIGJvb2wsIGxlYXZlIHdpbmRvdyBoaWRkZW4gYW5kIG5vdCBtb2RhbAorICAgICAgICAiIiIKKyAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQorICAgICAgICBzZWxmLndpdGhkcmF3KCkgICMgSGlkZSB3aGlsZSBjb25maWd1cmluZywgZXNwZWNpYWxseSBnZW9tZXRyeS4KKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKKyAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQorICAgICAgICBzZWxmLnRleHQwID0gdGV4dDAKKyAgICAgICAgc2VsZi51c2VkX25hbWVzID0gdXNlZF9uYW1lcworICAgICAgICBzZWxmLnRyYW5zaWVudChwYXJlbnQpCisgICAgICAgIHNlbGYuZ3JhYl9zZXQoKQorICAgICAgICB3aW5kb3dpbmdzeXN0ZW0gPSBzZWxmLnRrLmNhbGwoJ3RrJywgJ3dpbmRvd2luZ3N5c3RlbScpCisgICAgICAgIGlmIHdpbmRvd2luZ3N5c3RlbSA9PSAnYXF1YSc6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi50ay5jYWxsKCc6OnRrOjp1bnN1cHBvcnRlZDo6TWFjV2luZG93U3R5bGUnLCAnc3R5bGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93LCAnbW92ZWFibGVNb2RhbCcsICcnKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNlbGYuYmluZCgiPENvbW1hbmQtLj4iLCBzZWxmLmNhbmNlbCkKKyAgICAgICAgc2VsZi5iaW5kKCc8S2V5LUVzY2FwZT4nLCBzZWxmLmNhbmNlbCkKKyAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuY2FuY2VsKQorICAgICAgICBzZWxmLmJpbmQoJzxLZXktUmV0dXJuPicsIHNlbGYub2spCisgICAgICAgIHNlbGYuYmluZCgiPEtQX0VudGVyPiIsIHNlbGYub2spCisgICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GYWxzZSwgd2lkdGg9RmFsc2UpCisgICAgICAgIHNlbGYuY3JlYXRlX3dpZGdldHMoKQorICAgICAgICBzZWxmLnVwZGF0ZV9pZGxldGFza3MoKSAgIyBOZWVkZWQgaGVyZSBmb3Igd2luZm9fcmVxd2lkdGggYmVsb3cuCisgICAgICAgIHNlbGYuZ2VvbWV0cnkoICAjIENlbnRlciBkaWFsb2cgb3ZlciBwYXJlbnQgKG9yIGJlbG93IGh0ZXN0IGJveCkuCisgICAgICAgICAgICAgICAgIislZCslZCIgJSAoCisgICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eCgpICsKKyAgICAgICAgICAgICAgICAgICAgKHBhcmVudC53aW5mb193aWR0aCgpLzIgLSBzZWxmLndpbmZvX3JlcXdpZHRoKCkvMiksCisgICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsKKyAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDE1MCkKKyAgICAgICAgICAgICAgICApICkKKyAgICAgICAgaWYgbm90IF91dGVzdDoKKyAgICAgICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgICMgVW5oaWRlIG5vdyB0aGF0IGdlb21ldHJ5IHNldC4KKyAgICAgICAgICAgIHNlbGYud2FpdF93aW5kb3coKQorCisgICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOiAgIyBDYWxsIGZyb20gb3ZlcnJpZGUsIGlmIGFueS4KKyAgICAgICAgIyBCaW5kIHRvIHNlbGYgd2lkZ2V0cyBuZWVkZWQgZm9yIGVudHJ5X29rIG9yIHVuaXR0ZXN0LgorICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWUgPSBGcmFtZShzZWxmLCBwYWRkaW5nPTEwKQorICAgICAgICBmcmFtZS5ncmlkKGNvbHVtbj0wLCByb3c9MCwgc3RpY2t5PSduZXdzJykKKyAgICAgICAgZnJhbWUuZ3JpZF9jb2x1bW5jb25maWd1cmUoMCwgd2VpZ2h0PTEpCisKKyAgICAgICAgZW50cnlsYWJlbCA9IExhYmVsKGZyYW1lLCBhbmNob3I9J3cnLCBqdXN0aWZ5PSdsZWZ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9c2VsZi5tZXNzYWdlKQorICAgICAgICBzZWxmLmVudHJ5dmFyID0gU3RyaW5nVmFyKHNlbGYsIHNlbGYudGV4dDApCisgICAgICAgIHNlbGYuZW50cnkgPSBFbnRyeShmcmFtZSwgd2lkdGg9MzAsIHRleHR2YXJpYWJsZT1zZWxmLmVudHJ5dmFyKQorICAgICAgICBzZWxmLmVudHJ5LmZvY3VzX3NldCgpCisgICAgICAgIHNlbGYuZXJyb3JfZm9udCA9IEZvbnQobmFtZT0nVGtDYXB0aW9uRm9udCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzPVRydWUsIHJvb3Q9c2VsZi5wYXJlbnQpCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3IgPSBMYWJlbChmcmFtZSwgdGV4dD0nICcsIGZvcmVncm91bmQ9J3JlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250PXNlbGYuZXJyb3JfZm9udCkKKyAgICAgICAgc2VsZi5idXR0b25fb2sgPSBCdXR0b24oCisgICAgICAgICAgICAgICAgZnJhbWUsIHRleHQ9J09LJywgZGVmYXVsdD0nYWN0aXZlJywgY29tbWFuZD1zZWxmLm9rKQorICAgICAgICBzZWxmLmJ1dHRvbl9jYW5jZWwgPSBCdXR0b24oCisgICAgICAgICAgICAgICAgZnJhbWUsIHRleHQ9J0NhbmNlbCcsIGNvbW1hbmQ9c2VsZi5jYW5jZWwpCisKKyAgICAgICAgZW50cnlsYWJlbC5ncmlkKGNvbHVtbj0wLCByb3c9MCwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsIHN0aWNreT1XKQorICAgICAgICBzZWxmLmVudHJ5LmdyaWQoY29sdW1uPTAsIHJvdz0xLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwgc3RpY2t5PVcrRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZHk9WzEwLDBdKQorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yLmdyaWQoY29sdW1uPTAsIHJvdz0yLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreT1XK0UpCisgICAgICAgIHNlbGYuYnV0dG9uX29rLmdyaWQoY29sdW1uPTEsIHJvdz05OSwgcGFkeD01KQorICAgICAgICBzZWxmLmJ1dHRvbl9jYW5jZWwuZ3JpZChjb2x1bW49Miwgcm93PTk5LCBwYWR4PTUpCisKKyAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UsIHdpZGdldD1Ob25lKToKKyAgICAgICAgI3NlbGYuYmVsbChkaXNwbGF5b2Y9c2VsZikKKyAgICAgICAgKHdpZGdldCBvciBzZWxmLmVudHJ5X2Vycm9yKVsndGV4dCddID0gJ0VSUk9SOiAnICsgbWVzc2FnZQorCisgICAgZGVmIGVudHJ5X29rKHNlbGYpOiAgIyBFeGFtcGxlOiB1c3VhbGx5IHJlcGxhY2UuCisgICAgICAgICJSZXR1cm4gbm9uLWJsYW5rIGVudHJ5IG9yIE5vbmUuIgorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBlbnRyeSA9IHNlbGYuZW50cnkuZ2V0KCkuc3RyaXAoKQorICAgICAgICBpZiBub3QgZW50cnk6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignYmxhbmsgbGluZS4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGVudHJ5CisKKyAgICBkZWYgb2soc2VsZiwgZXZlbnQ9Tm9uZSk6ICAjIERvIG5vdCByZXBsYWNlLgorICAgICAgICAnJydJZiBlbnRyeSBpcyB2YWxpZCwgYmluZCBpdCB0byAncmVzdWx0JyBhbmQgZGVzdHJveSB0ayB3aWRnZXQuCisKKyAgICAgICAgT3RoZXJ3aXNlIGxlYXZlIGRpYWxvZyBvcGVuIGZvciB1c2VyIHRvIGNvcnJlY3QgZW50cnkgb3IgY2FuY2VsLgorICAgICAgICAnJycKKyAgICAgICAgZW50cnkgPSBzZWxmLmVudHJ5X29rKCkKKyAgICAgICAgaWYgZW50cnkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IGVudHJ5CisgICAgICAgICAgICBzZWxmLmRlc3Ryb3koKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBbT2tdIG1vdmVzIGZvY3VzLiAgKDxSZXR1cm4+IGRvZXMgbm90LikgIE1vdmUgaXQgYmFjay4KKyAgICAgICAgICAgIHNlbGYuZW50cnkuZm9jdXNfc2V0KCkKKworICAgIGRlZiBjYW5jZWwoc2VsZiwgZXZlbnQ9Tm9uZSk6ICAjIERvIG5vdCByZXBsYWNlLgorICAgICAgICAiU2V0IGRpYWxvZyByZXN1bHQgdG8gTm9uZSBhbmQgZGVzdHJveSB0ayB3aWRnZXQuIgorICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKKyAgICAgICAgc2VsZi5kZXN0cm95KCkKKworCitjbGFzcyBTZWN0aW9uTmFtZShRdWVyeSk6CisgICAgIkdldCBhIG5hbWUgZm9yIGEgY29uZmlnIGZpbGUgc2VjdGlvbiBuYW1lLiIKKyAgICAjIFVzZWQgaW4gQ29uZmlnRGlhbG9nLkdldE5ld0tleXNOYW1lLCAuR2V0TmV3VGhlbWVOYW1lICg4MzcpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdXNlZF9uYW1lcywKKyAgICAgICAgICAgICAgICAgKiwgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHVzZWRfbmFtZXM9dXNlZF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBfaHRlc3Q9X2h0ZXN0LCBfdXRlc3Q9X3V0ZXN0KQorCisgICAgZGVmIGVudHJ5X29rKHNlbGYpOgorICAgICAgICAiUmV0dXJuIHNlbnNpYmxlIENvbmZpZ1BhcnNlciBzZWN0aW9uIG5hbWUgb3IgTm9uZS4iCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIG5hbWUgPSBzZWxmLmVudHJ5LmdldCgpLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbm8gbmFtZSBzcGVjaWZpZWQuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgbGVuKG5hbWUpPjMwOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25hbWUgaXMgbG9uZ2VyIHRoYW4gMzAgY2hhcmFjdGVycy4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBuYW1lIGluIHNlbGYudXNlZF9uYW1lczoKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCduYW1lIGlzIGFscmVhZHkgaW4gdXNlLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gbmFtZQorCisKK2NsYXNzIE1vZHVsZU5hbWUoUXVlcnkpOgorICAgICJHZXQgYSBtb2R1bGUgbmFtZSBmb3IgT3BlbiBNb2R1bGUgbWVudSBlbnRyeS4iCisgICAgIyBVc2VkIGluIG9wZW5fbW9kdWxlIChlZGl0b3IuRWRpdG9yV2luZG93IHVudGlsIG1vdmUgdG8gaW9iaW5kaW5nKS4KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB0ZXh0MCwKKyAgICAgICAgICAgICAgICAgKiwgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHRleHQwPXRleHQwLAorICAgICAgICAgICAgICAgICAgICAgICBfaHRlc3Q9X2h0ZXN0LCBfdXRlc3Q9X3V0ZXN0KQorCisgICAgZGVmIGVudHJ5X29rKHNlbGYpOgorICAgICAgICAiUmV0dXJuIGVudGVyZWQgbW9kdWxlIG5hbWUgYXMgZmlsZSBwYXRoIG9yIE5vbmUuIgorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBuYW1lID0gc2VsZi5lbnRyeS5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25vIG5hbWUgc3BlY2lmaWVkLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIFhYWCBPdWdodCB0byBpbnNlcnQgY3VycmVudCBmaWxlJ3MgZGlyZWN0b3J5IGluIGZyb250IG9mIHBhdGguCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWMobmFtZSkKKyAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbXBvcnRFcnJvcikgYXMgbXNnOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3Ioc3RyKG1zZykpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcigibW9kdWxlIG5vdCBmb3VuZCIpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzcGVjLmxvYWRlciwgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIpOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoIm5vdCBhIHNvdXJjZS1iYXNlZCBtb2R1bGUiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZV9wYXRoID0gc3BlYy5sb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCJsb2FkZXIgZG9lcyBub3Qgc3VwcG9ydCBnZXRfZmlsZW5hbWUiLAorICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGZpbGVfcGF0aAorCisKK2NsYXNzIEhlbHBTb3VyY2UoUXVlcnkpOgorICAgICJHZXQgbWVudSBuYW1lIGFuZCBoZWxwIHNvdXJjZSBmb3IgSGVscCBtZW51LiIKKyAgICAjIFVzZWQgaW4gQ29uZmlnRGlhbG9nLkhlbHBMaXN0SXRlbUFkZC9FZGl0LCAoOTQxLzkpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgKiwgbWVudWl0ZW09JycsIGZpbGVwYXRoPScnLAorICAgICAgICAgICAgICAgICB1c2VkX25hbWVzPXt9LCBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgICIiIkdldCBtZW51IGVudHJ5IGFuZCB1cmwvbG9jYWwgZmlsZSBmb3IgQWRkaXRpb25hbCBIZWxwLgorCisgICAgICAgIFVzZXIgZW50ZXJzIGEgbmFtZSBmb3IgdGhlIEhlbHAgcmVzb3VyY2UgYW5kIGEgd2ViIHVybCBvciBmaWxlCisgICAgICAgIG5hbWUuIFRoZSB1c2VyIGNhbiBicm93c2UgZm9yIHRoZSBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5maWxlcGF0aCA9IGZpbGVwYXRoCisgICAgICAgIG1lc3NhZ2UgPSAnTmFtZSBmb3IgaXRlbSBvbiBIZWxwIG1lbnU6JworICAgICAgICBzdXBlcigpLl9faW5pdF9fKAorICAgICAgICAgICAgICAgIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHRleHQwPW1lbnVpdGVtLAorICAgICAgICAgICAgICAgIHVzZWRfbmFtZXM9dXNlZF9uYW1lcywgX2h0ZXN0PV9odGVzdCwgX3V0ZXN0PV91dGVzdCkKKworICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKKyAgICAgICAgc3VwZXIoKS5jcmVhdGVfd2lkZ2V0cygpCisgICAgICAgIGZyYW1lID0gc2VsZi5mcmFtZQorICAgICAgICBwYXRobGFiZWwgPSBMYWJlbChmcmFtZSwgYW5jaG9yPSd3JywganVzdGlmeT0nbGVmdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9J0hlbHAgRmlsZSBQYXRoOiBFbnRlciBVUkwgb3IgYnJvd3NlIGZvciBmaWxlJykKKyAgICAgICAgc2VsZi5wYXRodmFyID0gU3RyaW5nVmFyKHNlbGYsIHNlbGYuZmlsZXBhdGgpCisgICAgICAgIHNlbGYucGF0aCA9IEVudHJ5KGZyYW1lLCB0ZXh0dmFyaWFibGU9c2VsZi5wYXRodmFyLCB3aWR0aD00MCkKKyAgICAgICAgYnJvd3NlID0gQnV0dG9uKGZyYW1lLCB0ZXh0PSdCcm93c2UnLCB3aWR0aD04LAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLmJyb3dzZV9maWxlKQorICAgICAgICBzZWxmLnBhdGhfZXJyb3IgPSBMYWJlbChmcmFtZSwgdGV4dD0nICcsIGZvcmVncm91bmQ9J3JlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ9c2VsZi5lcnJvcl9mb250KQorCisgICAgICAgIHBhdGhsYWJlbC5ncmlkKGNvbHVtbj0wLCByb3c9MTAsIGNvbHVtbnNwYW49MywgcGFkeD01LCBwYWR5PVsxMCwwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5PVcpCisgICAgICAgIHNlbGYucGF0aC5ncmlkKGNvbHVtbj0wLCByb3c9MTEsIGNvbHVtbnNwYW49MiwgcGFkeD01LCBzdGlja3k9VytFLAorICAgICAgICAgICAgICAgICAgICAgICBwYWR5PVsxMCwwXSkKKyAgICAgICAgYnJvd3NlLmdyaWQoY29sdW1uPTIsIHJvdz0xMSwgcGFkeD01LCBzdGlja3k9VytTKQorICAgICAgICBzZWxmLnBhdGhfZXJyb3IuZ3JpZChjb2x1bW49MCwgcm93PTEyLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5PVcrRSkKKworICAgIGRlZiBhc2tmaWxlbmFtZShzZWxmLCBmaWxldHlwZXMsIGluaXRkaXIsIGluaXRmaWxlKTogICMgaHRlc3QgIworICAgICAgICAjIEV4dHJhY3RlZCBmcm9tIGJyb3dzZV9maWxlIHNvIGNhbiBtb2NrIGZvciB1bml0dGVzdHMuCisgICAgICAgICMgQ2Fubm90IHVuaXR0ZXN0IGFzIGNhbm5vdCBzaW11bGF0ZSBidXR0b24gY2xpY2tzLgorICAgICAgICAjIFRlc3QgYnkgcnVubmluZyBodGVzdCwgc3VjaCBhcyBieSBydW5uaW5nIHRoaXMgZmlsZS4KKyAgICAgICAgcmV0dXJuIGZpbGVkaWFsb2cuT3BlbihwYXJlbnQ9c2VsZiwgZmlsZXR5cGVzPWZpbGV0eXBlcylcCisgICAgICAgICAgICAgICAuc2hvdyhpbml0aWFsZGlyPWluaXRkaXIsIGluaXRpYWxmaWxlPWluaXRmaWxlKQorCisgICAgZGVmIGJyb3dzZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxldHlwZXMgPSBbCisgICAgICAgICAgICAoIkhUTUwgRmlsZXMiLCAiKi5odG0gKi5odG1sIiwgIlRFWFQiKSwKKyAgICAgICAgICAgICgiUERGIEZpbGVzIiwgIioucGRmIiwgIlRFWFQiKSwKKyAgICAgICAgICAgICgiV2luZG93cyBIZWxwIEZpbGVzIiwgIiouY2htIiksCisgICAgICAgICAgICAoIlRleHQgRmlsZXMiLCAiKi50eHQiLCAiVEVYVCIpLAorICAgICAgICAgICAgKCJBbGwgRmlsZXMiLCAiKiIpXQorICAgICAgICBwYXRoID0gc2VsZi5wYXRodmFyLmdldCgpCisgICAgICAgIGlmIHBhdGg6CisgICAgICAgICAgICBkaXIsIGJhc2UgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYXNlID0gTm9uZQorICAgICAgICAgICAgaWYgcGxhdGZvcm1bOjNdID09ICd3aW4nOgorICAgICAgICAgICAgICAgIGRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoZXhlY3V0YWJsZSksICdEb2MnKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRpcik6CisgICAgICAgICAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCisgICAgICAgIGZpbGUgPSBzZWxmLmFza2ZpbGVuYW1lKGZpbGV0eXBlcywgZGlyLCBiYXNlKQorICAgICAgICBpZiBmaWxlOgorICAgICAgICAgICAgc2VsZi5wYXRodmFyLnNldChmaWxlKQorCisgICAgaXRlbV9vayA9IFNlY3Rpb25OYW1lLmVudHJ5X29rICAjIGxvY2FsaXplIGZvciB0ZXN0IG92ZXJyaWRlCisKKyAgICBkZWYgcGF0aF9vayhzZWxmKToKKyAgICAgICAgIlNpbXBsZSB2YWxpZGl0eSBjaGVjayBmb3IgbWVudSBmaWxlIHBhdGgiCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGguZ2V0KCkuc3RyaXAoKQorICAgICAgICBpZiBub3QgcGF0aDogI25vIHBhdGggc3BlY2lmaWVkCisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbm8gaGVscCBmaWxlIHBhdGggc3BlY2lmaWVkLicsIHNlbGYucGF0aF9lcnJvcikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgbm90IHBhdGguc3RhcnRzd2l0aCgoJ3d3dy4nLCAnaHR0cCcpKToKKyAgICAgICAgICAgIGlmIHBhdGhbOjVdID09ICdmaWxlOic6CisgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGhbNTpdCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ2hlbHAgZmlsZSBwYXRoIGRvZXMgbm90IGV4aXN0LicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoX2Vycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJzogICMgZm9yIE1hYyBTYWZhcmkKKyAgICAgICAgICAgICAgICBwYXRoID0gICJmaWxlOi8vIiArIHBhdGgKKyAgICAgICAgcmV0dXJuIHBhdGgKKworICAgIGRlZiBlbnRyeV9vayhzZWxmKToKKyAgICAgICAgIlJldHVybiBhcHBhcmVudGx5IHZhbGlkIChuYW1lLCBwYXRoKSBvciBOb25lIgorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBzZWxmLnBhdGhfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIG5hbWUgPSBzZWxmLml0ZW1fb2soKQorICAgICAgICBwYXRoID0gc2VsZi5wYXRoX29rKCkKKyAgICAgICAgcmV0dXJuIE5vbmUgaWYgbmFtZSBpcyBOb25lIG9yIHBhdGggaXMgTm9uZSBlbHNlIChuYW1lLCBwYXRoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9xdWVyeScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCisgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCisgICAgcnVuKFF1ZXJ5LCBIZWxwU291cmNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weSBiL0xpYi9pZGxlbGliL3JlZGlyZWN0b3IucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcmVkaXJlY3Rvci5weQppbmRleCBiNjZiZTllLi5lYzY4MWRlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL3JlZGlyZWN0b3IucHkKQEAgLTEwNCw3ICsxMDQsNyBAQAogCiAgICAgICAgIE5vdGUgdGhhdCBpZiBhIHJlZ2lzdGVyZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCB0aGUgb3BlcmF0aW9uIGlzIG5vdAogICAgICAgICBwYXNzZWQgdGhyb3VnaCB0byBUay4gIEFwcGx5IHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBzZWxmLnJlZ2lzdGVyKCkKLSAgICAgICAgdG8gKmFyZ3MgdG8gYWNjb21wbGlzaCB0aGF0LiAgRm9yIGFuIGV4YW1wbGUsIHNlZSBDb2xvckRlbGVnYXRvci5weS4KKyAgICAgICAgdG8gKmFyZ3MgdG8gYWNjb21wbGlzaCB0aGF0LiAgRm9yIGFuIGV4YW1wbGUsIHNlZSBjb2xvcml6ZXIucHkuCiAKICAgICAgICAgJycnCiAgICAgICAgIG0gPSBzZWxmLl9vcGVyYXRpb25zLmdldChvcGVyYXRpb24pCkBAIC0xNTEsMTQgKzE1MSwxMyBAQAogCiAKIGRlZiBfd2lkZ2V0X3JlZGlyZWN0b3IocGFyZW50KTogICMgaHRlc3QgIwotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKLSAgICBpbXBvcnQgcmUKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0CiAKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgV2lkZ2V0UmVkaXJlY3RvciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIHRleHQgPSBUZXh0KHJvb3QpCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBXaWRnZXRSZWRpcmVjdG9yIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQorICAgIHRleHQgPSBUZXh0KHRvcCkKICAgICB0ZXh0LnBhY2soKQogICAgIHRleHQuZm9jdXNfc2V0KCkKICAgICByZWRpciA9IFdpZGdldFJlZGlyZWN0b3IodGV4dCkKQEAgLTE2NiwxMSArMTY1LDExIEBACiAgICAgICAgIHByaW50KCJpbnNlcnQiLCBhcmdzKQogICAgICAgICBvcmlnaW5hbF9pbnNlcnQoKmFyZ3MpCiAgICAgb3JpZ2luYWxfaW5zZXJ0ID0gcmVkaXIucmVnaXN0ZXIoImluc2VydCIsIG15X2luc2VydCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3dpZGdldHJlZGlyJywKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3JlZGlyZWN0b3InLAogICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX3dpZGdldF9yZWRpcmVjdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUmVwbGFjZURpYWxvZy5weSBiL0xpYi9pZGxlbGliL3JlcGxhY2UucHkKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUmVwbGFjZURpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcmVwbGFjZS5weQppbmRleCBmMmVhMjJlLi5hYmQ5ZTU5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9SZXBsYWNlRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL3JlcGxhY2UucHkKQEAgLTMsMTggKzMsMTggQEAKIERlZmluZXMgdmFyaW91cyByZXBsYWNlIHJlbGF0ZWQgZnVuY3Rpb25zIGxpa2UgcmVwbGFjZSwgcmVwbGFjZSBhbGwsCiByZXBsYWNlK2ZpbmQuCiAiIiIKLWZyb20gdGtpbnRlciBpbXBvcnQgKgotCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaEVuZ2luZQotZnJvbSBpZGxlbGliLlNlYXJjaERpYWxvZ0Jhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKIGltcG9ydCByZQogCitmcm9tIHRraW50ZXIgaW1wb3J0IFN0cmluZ1ZhciwgVGNsRXJyb3IKKworZnJvbSBpZGxlbGliLnNlYXJjaGJhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lCiAKIGRlZiByZXBsYWNlKHRleHQpOgogICAgICIiIlJldHVybnMgYSBzaW5nbGV0b24gUmVwbGFjZURpYWxvZyBpbnN0YW5jZS5UaGUgc2luZ2xlIGRpYWxvZwogICAgICBzYXZlcyB1c2VyIGVudHJpZXMgYW5kIHByZWZlcmVuY2VzIGFjcm9zcyBpbnN0YW5jZXMuIiIiCiAgICAgcm9vdCA9IHRleHQuX3Jvb3QoKQotICAgIGVuZ2luZSA9IFNlYXJjaEVuZ2luZS5nZXQocm9vdCkKKyAgICBlbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHJvb3QpCiAgICAgaWYgbm90IGhhc2F0dHIoZW5naW5lLCAiX3JlcGxhY2VkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9yZXBsYWNlZGlhbG9nID0gUmVwbGFjZURpYWxvZyhyb290LCBlbmdpbmUpCiAgICAgZGlhbG9nID0gZW5naW5lLl9yZXBsYWNlZGlhbG9nCkBAIC05NSw3ICs5NSw3IEBACiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgcmVzID0gc2VsZi5lbmdpbmUuc2VhcmNoX3RleHQodGV4dCwgcHJvZykKICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgIHRleHQuYmVsbCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRleHQudGFnX3JlbW92ZSgic2VsIiwgIjEuMCIsICJlbmQiKQogICAgICAgICB0ZXh0LnRhZ19yZW1vdmUoImhpdCIsICIxLjAiLCAiZW5kIikKQEAgLTE0Miw3ICsxNDIsNyBAQAogICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0CiAgICAgICAgIHJlcyA9IHNlbGYuZW5naW5lLnNlYXJjaF90ZXh0KHRleHQsIE5vbmUsIG9rKQogICAgICAgICBpZiBub3QgcmVzOgotICAgICAgICAgICAgdGV4dC5iZWxsKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgbGluZSwgbSA9IHJlcwogICAgICAgICBpLCBqID0gbS5zcGFuKCkKQEAgLTE2NCw3ICsxNjQsNyBAQAogICAgICAgICAgICAgcG9zID0gTm9uZQogICAgICAgICBpZiBub3QgcG9zOgogICAgICAgICAgICAgZmlyc3QgPSBsYXN0ID0gcG9zID0gdGV4dC5pbmRleCgiaW5zZXJ0IikKLSAgICAgICAgbGluZSwgY29sID0gU2VhcmNoRW5naW5lLmdldF9saW5lX2NvbChwb3MpCisgICAgICAgIGxpbmUsIGNvbCA9IHNlYXJjaGVuZ2luZS5nZXRfbGluZV9jb2wocG9zKQogICAgICAgICBjaGFycyA9IHRleHQuZ2V0KCIlZC4wIiAlIGxpbmUsICIlZC4wIiAlIChsaW5lKzEpKQogICAgICAgICBtID0gcHJvZy5tYXRjaChjaGFycywgY29sKQogICAgICAgICBpZiBub3QgcHJvZzoKQEAgLTIwNCwxMSArMjA0LDEzIEBACiAKIAogZGVmIF9yZXBsYWNlX2RpYWxvZyhwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgIiIiaHRlc3Qgd3JhcHBlciBmdW5jdGlvbiIiIgorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQsIEVORCwgU0VMCisgICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgQnV0dG9uCisKICAgICBib3ggPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgYm94LnRpdGxlKCJUZXN0IFJlcGxhY2VEaWFsb2ciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICBib3guZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICBib3guZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKICAgICAjIG1vY2sgdW5kbyBkZWxlZ2F0b3IgbWV0aG9kcwogICAgIGRlZiB1bmRvX2Jsb2NrX3N0YXJ0KCk6CkBAIC0yMzQsNyArMjM2LDcgQEAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3JlcGxhY2VkaWFsb2cnLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcmVwbGFjZScsCiAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCiAKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3JwYy5weSBiL0xpYi9pZGxlbGliL3JwYy5weQppbmRleCA0ODEwNWYyLi44ZjU3ZWRiOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvcnBjLnB5CisrKyBiL0xpYi9pZGxlbGliL3JwYy5weQpAQCAtMjYsMjMgKzI2LDIxIEBACiBhY2NvbXBsaXNoZWQgaW4gSWRsZS4KIAogIiIiCi0KLWltcG9ydCBzeXMKLWltcG9ydCBvcworaW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgY29weXJlZwogaW1wb3J0IGlvCi1pbXBvcnQgc29ja2V0CitpbXBvcnQgbWFyc2hhbAoraW1wb3J0IG9zCitpbXBvcnQgcGlja2xlCitpbXBvcnQgcXVldWUKIGltcG9ydCBzZWxlY3QKK2ltcG9ydCBzb2NrZXQKIGltcG9ydCBzb2NrZXRzZXJ2ZXIKIGltcG9ydCBzdHJ1Y3QKLWltcG9ydCBwaWNrbGUKK2ltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCBxdWV1ZQogaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IGNvcHlyZWcKIGltcG9ydCB0eXBlcwotaW1wb3J0IG1hcnNoYWwKLWltcG9ydCBidWlsdGlucwotCiAKIGRlZiB1bnBpY2tsZV9jb2RlKG1zKToKICAgICBjbyA9IG1hcnNoYWwubG9hZHMobXMpCkBAIC02MCwxMCArNTgsMTIgQEAKICAgICBwLmR1bXAob2JqKQogICAgIHJldHVybiBmLmdldHZhbHVlKCkKIAorCiBjbGFzcyBDb2RlUGlja2xlcihwaWNrbGUuUGlja2xlcik6CiAgICAgZGlzcGF0Y2hfdGFibGUgPSB7dHlwZXMuQ29kZVR5cGU6IHBpY2tsZV9jb2RlfQogICAgIGRpc3BhdGNoX3RhYmxlLnVwZGF0ZShjb3B5cmVnLmRpc3BhdGNoX3RhYmxlKQogCisKIEJVRlNJWkUgPSA4KjEwMjQKIExPQ0FMSE9TVCA9ICcxMjcuMC4wLjEnCiAKQEAgLTQ4NywxNiArNDg3LDE5IEBACiAgICAgIyBUb2tlbiBtaXgtaW4gY2xhc3MKICAgICBwYXNzCiAKKwogZGVmIHJlbW90ZXJlZihvYmopOgogICAgIG9pZCA9IGlkKG9iaikKICAgICBvYmplY3R0YWJsZVtvaWRdID0gb2JqCiAgICAgcmV0dXJuIFJlbW90ZVByb3h5KG9pZCkKIAorCiBjbGFzcyBSZW1vdGVQcm94eShvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9pZCk6CiAgICAgICAgIHNlbGYub2lkID0gb2lkCiAKKwogY2xhc3MgUlBDSGFuZGxlcihzb2NrZXRzZXJ2ZXIuQmFzZVJlcXVlc3RIYW5kbGVyLCBTb2NrZXRJTyk6CiAKICAgICBkZWJ1Z2dpbmcgPSBGYWxzZQpAQCAtNTE0LDYgKzUxNyw3IEBACiAgICAgZGVmIGdldF9yZW1vdGVfcHJveHkoc2VsZiwgb2lkKToKICAgICAgICAgcmV0dXJuIFJQQ1Byb3h5KHNlbGYsIG9pZCkKIAorCiBjbGFzcyBSUENDbGllbnQoU29ja2V0SU8pOgogCiAgICAgZGVidWdnaW5nID0gRmFsc2UKQEAgLTUzOSw2ICs1NDMsNyBAQAogICAgIGRlZiBnZXRfcmVtb3RlX3Byb3h5KHNlbGYsIG9pZCk6CiAgICAgICAgIHJldHVybiBSUENQcm94eShzZWxmLCBvaWQpCiAKKwogY2xhc3MgUlBDUHJveHkob2JqZWN0KToKIAogICAgIF9fbWV0aG9kcyA9IE5vbmUKQEAgLTU4Nyw2ICs1OTIsNyBAQAogICAgICAgICBpZiBub3QgY2FsbGFibGUoYXR0cik6CiAgICAgICAgICAgICBhdHRyaWJ1dGVzW25hbWVdID0gMQogCisKIGNsYXNzIE1ldGhvZFByb3h5KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2lvLCBvaWQsIG5hbWUpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUnN0cmlwRXh0ZW5zaW9uLnB5IGIvTGliL2lkbGVsaWIvcnN0cmlwLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Sc3RyaXBFeHRlbnNpb24ucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3JzdHJpcC5weQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcnVuLnB5IGIvTGliL2lkbGVsaWIvcnVuLnB5CmluZGV4IDI4Y2U0MjAuLmFmYTk3NDQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3J1bi5weQorKysgYi9MaWIvaWRsZWxpYi9ydW4ucHkKQEAgLTEsMzMgKzEsNDUgQEAKLWltcG9ydCBzeXMKK2ltcG9ydCBpbwogaW1wb3J0IGxpbmVjYWNoZQoraW1wb3J0IHF1ZXVlCitpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IF90aHJlYWQgYXMgdGhyZWFkCiBpbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgcXVldWUKLWltcG9ydCB0a2ludGVyCitpbXBvcnQgd2FybmluZ3MKIAotZnJvbSBpZGxlbGliIGltcG9ydCBDYWxsVGlwcwotZnJvbSBpZGxlbGliIGltcG9ydCBBdXRvQ29tcGxldGUKK2ltcG9ydCB0a2ludGVyICAjIFRjbCwgZGVsZXRpb25zLCBtZXNzYWdlYm94IGlmIHN0YXJ0dXAgZmFpbHMKIAotZnJvbSBpZGxlbGliIGltcG9ydCBSZW1vdGVEZWJ1Z2dlcgotZnJvbSBpZGxlbGliIGltcG9ydCBSZW1vdGVPYmplY3RCcm93c2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFN0YWNrVmlld2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IHJwYwotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsCi1mcm9tIGlkbGVsaWIgaW1wb3J0IElPQmluZGluZwotCitmcm9tIGlkbGVsaWIgaW1wb3J0IGF1dG9jb21wbGV0ZSAgIyBBdXRvQ29tcGxldGUsIGZldGNoX2VuY29kaW5ncworZnJvbSBpZGxlbGliIGltcG9ydCBjYWxsdGlwcyAgIyBDYWxsVGlwcworZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcl9yICAjIHN0YXJ0X2RlYnVnZ2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnb2JqX3IgICMgcmVtb3RlX29iamVjdF90cmVlX2l0ZW0KK2Zyb20gaWRsZWxpYiBpbXBvcnQgaW9tZW51ICAjIGVuY29kaW5nCitmcm9tIGlkbGVsaWIgaW1wb3J0IHJwYyAgIyBtdWx0aXBsZSBvYmplY3RzCitmcm9tIGlkbGVsaWIgaW1wb3J0IHN0YWNrdmlld2VyICAjIFN0YWNrVHJlZUl0ZW0KIGltcG9ydCBfX21haW5fXwogCiBmb3IgbW9kIGluICgnc2ltcGxlZGlhbG9nJywgJ21lc3NhZ2Vib3gnLCAnZm9udCcsCiAgICAgICAgICAgICAnZGlhbG9nJywgJ2ZpbGVkaWFsb2cnLCAnY29tbW9uZGlhbG9nJywKLSAgICAgICAgICAgICdjb2xvcmNob29zZXInKToKKyAgICAgICAgICAgICd0dGsnKToKICAgICBkZWxhdHRyKHRraW50ZXIsIG1vZCkKICAgICBkZWwgc3lzLm1vZHVsZXNbJ3RraW50ZXIuJyArIG1vZF0KIAogTE9DQUxIT1NUID0gJzEyNy4wLjAuMScKIAotaW1wb3J0IHdhcm5pbmdzCisKK2RlZiBpZGxlX2Zvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmU9Tm9uZSk6CisgICAgIiIiRm9ybWF0IHdhcm5pbmdzIHRoZSBJRExFIHdheS4iIiIKKworICAgIHMgPSAiXG5XYXJuaW5nIChmcm9tIHdhcm5pbmdzIG1vZHVsZSk6XG4iCisgICAgcyArPSAnICBGaWxlIFwiJXNcIiwgbGluZSAlc1xuJyAlIChmaWxlbmFtZSwgbGluZW5vKQorICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgIGlmIGxpbmU6CisgICAgICAgIHMgKz0gIiAgICAlc1xuIiAlIGxpbmUKKyAgICBzICs9ICIlczogJXNcbiIgJSAoY2F0ZWdvcnkuX19uYW1lX18sIG1lc3NhZ2UpCisgICAgcmV0dXJuIHMKIAogZGVmIGlkbGVfc2hvd3dhcm5pbmdfc3VicHJvYygKICAgICAgICAgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKToKQEAgLTM4LDcgKzUwLDcgQEAKICAgICBpZiBmaWxlIGlzIE5vbmU6CiAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCiAgICAgdHJ5OgotICAgICAgICBmaWxlLndyaXRlKFB5U2hlbGwuaWRsZV9mb3JtYXR3YXJuaW5nKAorICAgICAgICBmaWxlLndyaXRlKGlkbGVfZm9ybWF0d2FybmluZygKICAgICAgICAgICAgICAgICBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZSkpCiAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgIHBhc3MgIyB0aGUgZmlsZSAocHJvYmFibHkgc3RkZXJyKSBpcyBpbnZhbGlkIC0gdGhpcyB3YXJuaW5nIGdldHMgbG9zdC4KQEAgLTg4LDcgKzEwMCw3IEBACiAgICAgTXlIYW5kbGVyIG9iamVjdC4gIFRoYXQgcmVmZXJlbmNlIGlzIHNhdmVkIGFzIGF0dHJpYnV0ZSBycGNoYW5kbGVyIG9mIHRoZQogICAgIEV4ZWN1dGl2ZSBpbnN0YW5jZS4gIFRoZSBFeGVjdXRpdmUgbWV0aG9kcyBoYXZlIGFjY2VzcyB0byB0aGUgcmVmZXJlbmNlIGFuZAogICAgIGNhbiBwYXNzIGl0IG9uIHRvIGVudGl0aWVzIHRoYXQgdGhleSBjb21tYW5kCi0gICAgKGUuZy4gUmVtb3RlRGVidWdnZXIuRGVidWdnZXIuc3RhcnRfZGVidWdnZXIoKSkuICBUaGUgbGF0dGVyLCBpbiB0dXJuLCBjYW4KKyAgICAoZS5nLiBkZWJ1Z2dlcl9yLkRlYnVnZ2VyLnN0YXJ0X2RlYnVnZ2VyKCkpLiAgVGhlIGxhdHRlciwgaW4gdHVybiwgY2FuCiAgICAgY2FsbCBNeUhhbmRsZXIoU29ja2V0SU8pIHJlZ2lzdGVyL3VucmVnaXN0ZXIgbWV0aG9kcyB2aWEgdGhlIHJlZmVyZW5jZSB0bwogICAgIHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyIHRoZW1zZWx2ZXMuCiAKQEAgLTIxMCw3ICsyMjIsNyBAQAogICAgICAgICAgICAgdGJlID0gdHJhY2ViYWNrLmV4dHJhY3RfdGIodGIpCiAgICAgICAgICAgICBwcmludCgnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOicsIGZpbGU9ZWZpbGUpCiAgICAgICAgICAgICBleGNsdWRlID0gKCJydW4ucHkiLCAicnBjLnB5IiwgInRocmVhZGluZy5weSIsICJxdWV1ZS5weSIsCi0gICAgICAgICAgICAgICAgICAgICAgICJSZW1vdGVEZWJ1Z2dlci5weSIsICJiZGIucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAiZGVidWdnZXJfci5weSIsICJiZGIucHkiKQogICAgICAgICAgICAgY2xlYW51cF90cmFjZWJhY2sodGJlLCBleGNsdWRlKQogICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2xpc3QodGJlLCBmaWxlPWVmaWxlKQogICAgICAgICBsaW5lcyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwLCBleGMpCkBAIC0yNjcsNiArMjc5LDcgQEAKICAgICBjYXB0dXJlX3dhcm5pbmdzKEZhbHNlKQogICAgIHN5cy5leGl0KDApCiAKKwogY2xhc3MgTXlSUENTZXJ2ZXIocnBjLlJQQ1NlcnZlcik6CiAKICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKQEAgLTI5Nyw2ICszMTAsOTYgQEAKICAgICAgICAgICAgIHF1aXR0aW5nID0gVHJ1ZQogICAgICAgICAgICAgdGhyZWFkLmludGVycnVwdF9tYWluKCkKIAorCisjIFBzZXVkb2ZpbGVzIGZvciBzaGVsbC1yZW1vdGUgY29tbXVuaWNhdGlvbiAoYWxzbyB1c2VkIGluIHB5c2hlbGwpCisKK2NsYXNzIFBzZXVkb0ZpbGUoaW8uVGV4dElPQmFzZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nPU5vbmUpOgorICAgICAgICBzZWxmLnNoZWxsID0gc2hlbGwKKyAgICAgICAgc2VsZi50YWdzID0gdGFncworICAgICAgICBzZWxmLl9lbmNvZGluZyA9IGVuY29kaW5nCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZW5jb2Rpbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9lbmNvZGluZworCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAnPCVzPicgJSBzZWxmLnRhZ3MKKworICAgIGRlZiBpc2F0dHkoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKworY2xhc3MgUHNldWRvT3V0cHV0RmlsZShQc2V1ZG9GaWxlKToKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBzKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3cml0ZSB0byBjbG9zZWQgZmlsZSIpCisgICAgICAgIGlmIHR5cGUocykgaXMgbm90IHN0cjoKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIHN0cik6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIHN0ciwgbm90ICcgKyB0eXBlKHMpLl9fbmFtZV9fKQorICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzE5NDgxCisgICAgICAgICAgICBzID0gc3RyLl9fc3RyX18ocykKKyAgICAgICAgcmV0dXJuIHNlbGYuc2hlbGwud3JpdGUocywgc2VsZi50YWdzKQorCisKK2NsYXNzIFBzZXVkb0lucHV0RmlsZShQc2V1ZG9GaWxlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6CisgICAgICAgIFBzZXVkb0ZpbGUuX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nKQorICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCisKKyAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQorICAgICAgICBpZiBzaXplIGlzIE5vbmU6CisgICAgICAgICAgICBzaXplID0gLTEKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQorICAgICAgICByZXN1bHQgPSBzZWxmLl9saW5lX2J1ZmZlcgorICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdoaWxlIGxlbihyZXN1bHQpIDwgc2l6ZToKKyAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKKyAgICAgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gcmVzdWx0W3NpemU6XQorICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzpzaXplXQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2l6ZSA9IC0xCisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKKyAgICAgICAgbGluZSA9IHNlbGYuX2xpbmVfYnVmZmVyIG9yIHNlbGYuc2hlbGwucmVhZGxpbmUoKQorICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHNpemUgPSBsZW4obGluZSkKKyAgICAgICAgZW9sID0gbGluZS5maW5kKCdcbicsIDAsIHNpemUpCisgICAgICAgIGlmIGVvbCA+PSAwOgorICAgICAgICAgICAgc2l6ZSA9IGVvbCArIDEKKyAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSBsaW5lW3NpemU6XQorICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5zaGVsbC5jbG9zZSgpCisKKwogY2xhc3MgTXlIYW5kbGVyKHJwYy5SUENIYW5kbGVyKToKIAogICAgIGRlZiBoYW5kbGUoc2VsZik6CkBAIC0zMDQsMTIgKzQwNywxMiBAQAogICAgICAgICBleGVjdXRpdmUgPSBFeGVjdXRpdmUoc2VsZikKICAgICAgICAgc2VsZi5yZWdpc3RlcigiZXhlYyIsIGV4ZWN1dGl2ZSkKICAgICAgICAgc2VsZi5jb25zb2xlID0gc2VsZi5nZXRfcmVtb3RlX3Byb3h5KCJjb25zb2xlIikKLSAgICAgICAgc3lzLnN0ZGluID0gUHlTaGVsbC5Qc2V1ZG9JbnB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3RkaW4iLAotICAgICAgICAgICAgICAgIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc3lzLnN0ZG91dCA9IFB5U2hlbGwuUHNldWRvT3V0cHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRvdXQiLAotICAgICAgICAgICAgICAgIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc3lzLnN0ZGVyciA9IFB5U2hlbGwuUHNldWRvT3V0cHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRlcnIiLAotICAgICAgICAgICAgICAgIElPQmluZGluZy5lbmNvZGluZykKKyAgICAgICAgc3lzLnN0ZGluID0gUHNldWRvSW5wdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGluIiwKKyAgICAgICAgICAgICAgICBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHN5cy5zdGRvdXQgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZG91dCIsCisgICAgICAgICAgICAgICAgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzeXMuc3RkZXJyID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRlcnIiLAorICAgICAgICAgICAgICAgIGlvbWVudS5lbmNvZGluZykKIAogICAgICAgICBzeXMuZGlzcGxheWhvb2sgPSBycGMuZGlzcGxheWhvb2sKICAgICAgICAgIyBwYWdlIGhlbHAoKSB0ZXh0IHRvIHNoZWxsLgpAQCAtMzQ1LDggKzQ0OCw4IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJwY2hhbmRsZXIpOgogICAgICAgICBzZWxmLnJwY2hhbmRsZXIgPSBycGNoYW5kbGVyCiAgICAgICAgIHNlbGYubG9jYWxzID0gX19tYWluX18uX19kaWN0X18KLSAgICAgICAgc2VsZi5jYWxsdGlwID0gQ2FsbFRpcHMuQ2FsbFRpcHMoKQotICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZSA9IEF1dG9Db21wbGV0ZS5BdXRvQ29tcGxldGUoKQorICAgICAgICBzZWxmLmNhbGx0aXAgPSBjYWxsdGlwcy5DYWxsVGlwcygpCisgICAgICAgIHNlbGYuYXV0b2NvbXBsZXRlID0gYXV0b2NvbXBsZXRlLkF1dG9Db21wbGV0ZSgpCiAKICAgICBkZWYgcnVuY29kZShzZWxmLCBjb2RlKToKICAgICAgICAgZ2xvYmFsIGludGVycnVwdGFibGUKQEAgLTM3OCw3ICs0ODEsNyBAQAogICAgICAgICAgICAgdGhyZWFkLmludGVycnVwdF9tYWluKCkKIAogICAgIGRlZiBzdGFydF90aGVfZGVidWdnZXIoc2VsZiwgZ3VpX2FkYXBfb2lkKToKLSAgICAgICAgcmV0dXJuIFJlbW90ZURlYnVnZ2VyLnN0YXJ0X2RlYnVnZ2VyKHNlbGYucnBjaGFuZGxlciwgZ3VpX2FkYXBfb2lkKQorICAgICAgICByZXR1cm4gZGVidWdnZXJfci5zdGFydF9kZWJ1Z2dlcihzZWxmLnJwY2hhbmRsZXIsIGd1aV9hZGFwX29pZCkKIAogICAgIGRlZiBzdG9wX3RoZV9kZWJ1Z2dlcihzZWxmLCBpZGJfYWRhcF9vaWQpOgogICAgICAgICAiVW5yZWdpc3RlciB0aGUgSWRiIEFkYXB0ZXIuICBMaW5rIG9iamVjdHMgYW5kIElkYiB0aGVuIHN1YmplY3QgdG8gR0MiCkBAIC00MDIsNyArNTA1LDcgQEAKICAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAogICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwCiAgICAgICAgIHN5cy5sYXN0X3ZhbHVlID0gdmFsCi0gICAgICAgIGl0ZW0gPSBTdGFja1ZpZXdlci5TdGFja1RyZWVJdGVtKGZsaXN0LCB0YikKLSAgICAgICAgcmV0dXJuIFJlbW90ZU9iamVjdEJyb3dzZXIucmVtb3RlX29iamVjdF90cmVlX2l0ZW0oaXRlbSkKKyAgICAgICAgaXRlbSA9IHN0YWNrdmlld2VyLlN0YWNrVHJlZUl0ZW0oZmxpc3QsIHRiKQorICAgICAgICByZXR1cm4gZGVidWdvYmpfci5yZW1vdGVfb2JqZWN0X3RyZWVfaXRlbShpdGVtKQogCiBjYXB0dXJlX3dhcm5pbmdzKEZhbHNlKSAgIyBNYWtlIHN1cmUgdHVybmVkIG9mZjsgc2VlIGlzc3VlIDE4MDgxCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5IGIvTGliL2lkbGVsaWIvcnVuc2NyaXB0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3J1bnNjcmlwdC5weQppbmRleCA1Y2I4MThkLi43OWQ4NmFkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL3J1bnNjcmlwdC5weQpAQCAtMjAsMTEgKzIwLDEyIEBACiBpbXBvcnQgb3MKIGltcG9ydCB0YWJuYW5ueQogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0CitpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlzaGVsbAogCiBpbmRlbnRfbWVzc2FnZSA9ICIiIkVycm9yOiBJbmNvbnNpc3RlbnQgaW5kZW50YXRpb24gZGV0ZWN0ZWQhCiAKQEAgLTQ2LDEyICs0NywxMiBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVkaXR3aW4pOgogICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luCi0gICAgICAgICMgUHJvdmlkZSBpbnN0YW5jZSB2YXJpYWJsZXMgcmVmZXJlbmNlZCBieSBEZWJ1Z2dlcgorICAgICAgICAjIFByb3ZpZGUgaW5zdGFuY2UgdmFyaWFibGVzIHJlZmVyZW5jZWQgYnkgZGVidWdnZXIKICAgICAgICAgIyBYWFggVGhpcyBzaG91bGQgYmUgZG9uZSBkaWZmZXJlbnRseQogICAgICAgICBzZWxmLmZsaXN0ID0gc2VsZi5lZGl0d2luLmZsaXN0CiAgICAgICAgIHNlbGYucm9vdCA9IHNlbGYuZWRpdHdpbi5yb290CiAKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0NvY29hVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQ29jb2FUaygpOgogICAgICAgICAgICAgc2VsZi5lZGl0d2luLnRleHRfZnJhbWUuYmluZCgnPDxydW4tbW9kdWxlLWV2ZW50LTI+PicsIHNlbGYuX3J1bl9tb2R1bGVfZXZlbnQpCiAKICAgICBkZWYgY2hlY2tfbW9kdWxlX2V2ZW50KHNlbGYsIGV2ZW50KToKQEAgLTExMiw3ICsxMTMsNyBAQAogICAgICAgICAgICAgc2hlbGwuc2V0X3dhcm5pbmdfc3RyZWFtKHNhdmVkX3N0cmVhbSkKIAogICAgIGRlZiBydW5fbW9kdWxlX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0NvY29hVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQ29jb2FUaygpOgogICAgICAgICAgICAgIyBUay1Db2NvYSBpbiBNYWNPU1ggaXMgYnJva2VuIHVudGlsIGF0IGxlYXN0CiAgICAgICAgICAgICAjIFRrIDguNS45LCBhbmQgd2l0aG91dCB0aGlzIHJhdGhlcgogICAgICAgICAgICAgIyBjcnVkZSB3b3JrYXJvdW5kIElETEUgd291bGQgaGFuZyB3aGVuIGEgdXNlcgpAQCAtMTQyLDcgKzE0Myw3IEBACiAgICAgICAgIGlmIG5vdCBzZWxmLnRhYm5hbm55KGZpbGVuYW1lKToKICAgICAgICAgICAgIHJldHVybiAnYnJlYWsnCiAgICAgICAgIGludGVycCA9IHNlbGYuc2hlbGwuaW50ZXJwCi0gICAgICAgIGlmIFB5U2hlbGwudXNlX3N1YnByb2Nlc3M6CisgICAgICAgIGlmIHB5c2hlbGwudXNlX3N1YnByb2Nlc3M6CiAgICAgICAgICAgICBpbnRlcnAucmVzdGFydF9zdWJwcm9jZXNzKHdpdGhfY3dkPUZhbHNlLCBmaWxlbmFtZT0KICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZWRpdHdpbi5fZmlsZW5hbWVfdG9fdW5pY29kZShmaWxlbmFtZSkpCiAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCkBAIC0xNjEsNyArMTYyLDcgQEAKICAgICAgICAgaW50ZXJwLnByZXBlbmRfc3lzcGF0aChmaWxlbmFtZSkKICAgICAgICAgIyBYWFggS0JLIDAzSnVsMDQgV2hlbiBydW4gdy9vIHN1YnByb2Nlc3MsIHJ1bnRpbWUgd2FybmluZ3Mgc3RpbGwKICAgICAgICAgIyAgICAgICAgIGdvIHRvIF9fc3RkZXJyX18uICBXaXRoIHN1YnByb2Nlc3MsIHRoZXkgZ28gdG8gdGhlIHNoZWxsLgotICAgICAgICAjICAgICAgICAgTmVlZCB0byBjaGFuZ2Ugc3RyZWFtcyBpbiBQeVNoZWxsLk1vZGlmaWVkSW50ZXJwcmV0ZXIuCisgICAgICAgICMgICAgICAgICBOZWVkIHRvIGNoYW5nZSBzdHJlYW1zIGluIHB5c2hlbGwuTW9kaWZpZWRJbnRlcnByZXRlci4KICAgICAgICAgaW50ZXJwLnJ1bmNvZGUoY29kZSkKICAgICAgICAgcmV0dXJuICdicmVhaycKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2Nyb2xsZWRMaXN0LnB5IGIvTGliL2lkbGVsaWIvc2Nyb2xsZWRsaXN0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1Njcm9sbGVkTGlzdC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc2Nyb2xsZWRsaXN0LnB5CmluZGV4IDUzNTc2YjUuLmNjMDhjMjYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1Njcm9sbGVkTGlzdC5weQorKysgYi9MaWIvaWRsZWxpYi9zY3JvbGxlZGxpc3QucHkKQEAgLTEsNSArMSw4IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCisKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4CisKIAogY2xhc3MgU2Nyb2xsZWRMaXN0OgogCkBAIC0yMyw3ICsyNiw3IEBACiAgICAgICAgICMgQmluZCBldmVudHMgdG8gdGhlIGxpc3QgYm94CiAgICAgICAgIGxpc3Rib3guYmluZCgiPEJ1dHRvblJlbGVhc2UtMT4iLCBzZWxmLmNsaWNrX2V2ZW50KQogICAgICAgICBsaXN0Ym94LmJpbmQoIjxEb3VibGUtQnV0dG9uUmVsZWFzZS0xPiIsIHNlbGYuZG91YmxlX2NsaWNrX2V2ZW50KQotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgbGlzdGJveC5iaW5kKCI8QnV0dG9uUHJlc3MtMj4iLCBzZWxmLnBvcHVwX2V2ZW50KQogICAgICAgICAgICAgbGlzdGJveC5iaW5kKCI8Q29udHJvbC1CdXR0b24tMT4iLCBzZWxmLnBvcHVwX2V2ZW50KQogICAgICAgICBlbHNlOgpAQCAtMTI0LDIyICsxMjcsMjAgQEAKICAgICAgICAgcGFzcwogCiAKLWRlZiBfc2Nyb2xsZWRfbGlzdChwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBTY3JvbGxlZExpc3QiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKK2RlZiBfc2Nyb2xsZWRfbGlzdChwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCsyMDAsIHkgKyAxNzUpKQogICAgIGNsYXNzIE15U2Nyb2xsZWRMaXN0KFNjcm9sbGVkTGlzdCk6CiAgICAgICAgIGRlZiBmaWxsX21lbnUoc2VsZik6IHNlbGYubWVudS5hZGRfY29tbWFuZChsYWJlbD0icmlnaHQgY2xpY2siKQogICAgICAgICBkZWYgb25fc2VsZWN0KHNlbGYsIGluZGV4KTogcHJpbnQoInNlbGVjdCIsIHNlbGYuZ2V0KGluZGV4KSkKICAgICAgICAgZGVmIG9uX2RvdWJsZShzZWxmLCBpbmRleCk6IHByaW50KCJkb3VibGUiLCBzZWxmLmdldChpbmRleCkpCiAKLSAgICBzY3JvbGxlZF9saXN0ID0gTXlTY3JvbGxlZExpc3Qocm9vdCkKKyAgICBzY3JvbGxlZF9saXN0ID0gTXlTY3JvbGxlZExpc3QodG9wKQogICAgIGZvciBpIGluIHJhbmdlKDMwKToKICAgICAgICAgc2Nyb2xsZWRfbGlzdC5hcHBlbmQoIkl0ZW0gJTAyZCIgJSBpKQogCi0gICAgcm9vdC5tYWlubG9vcCgpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgIyBBdCB0aGUgbW9tZW50LCB0ZXN0X3Njcm9sbGVkbGlzdCBtZXJlbHkgY3JlYXRlcyBpbnN0YW5jZSwgbGlrZSBodGVzdC4KICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX3Njcm9sbGVkX2xpc3QpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9zZWFyY2gucHkKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zZWFyY2gucHkKaW5kZXggNzY1ZDUzZi4uNGI5MDY1OSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL3NlYXJjaC5weQpAQCAtMSwxMiArMSwxMiBAQAotZnJvbSB0a2ludGVyIGltcG9ydCAqCitmcm9tIHRraW50ZXIgaW1wb3J0IFRjbEVycm9yCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lCi1mcm9tIGlkbGVsaWIuU2VhcmNoRGlhbG9nQmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKK2Zyb20gaWRsZWxpYi5zZWFyY2hiYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCiAKIGRlZiBfc2V0dXAodGV4dCk6CiAgICAgIkNyZWF0ZSBvciBmaW5kIHRoZSBzaW5nbGV0b24gU2VhcmNoRGlhbG9nIGluc3RhbmNlLiIKICAgICByb290ID0gdGV4dC5fcm9vdCgpCi0gICAgZW5naW5lID0gU2VhcmNoRW5naW5lLmdldChyb290KQorICAgIGVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocm9vdCkKICAgICBpZiBub3QgaGFzYXR0cihlbmdpbmUsICJfc2VhcmNoZGlhbG9nIik6CiAgICAgICAgIGVuZ2luZS5fc2VhcmNoZGlhbG9nID0gU2VhcmNoRGlhbG9nKHJvb3QsIGVuZ2luZSkKICAgICByZXR1cm4gZW5naW5lLl9zZWFyY2hkaWFsb2cKQEAgLTI0LDYgKzI0LDcgQEAKICAgICAiSGFuZGxlIHRoZSBlZGl0b3IgZWRpdCBtZW51IGl0ZW0gYW5kIGNvcnJlc3BvbmRpbmcgZXZlbnQuIgogICAgIHJldHVybiBfc2V0dXAodGV4dCkuZmluZF9zZWxlY3Rpb24odGV4dCkKIAorCiBjbGFzcyBTZWFyY2hEaWFsb2coU2VhcmNoRGlhbG9nQmFzZSk6CiAKICAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6CkBAIC01MSw3ICs1Miw3IEBACiAgICAgICAgICAgICAgICAgc2VsZmlyc3QgPSB0ZXh0LmluZGV4KCJzZWwuZmlyc3QiKQogICAgICAgICAgICAgICAgIHNlbGxhc3QgPSB0ZXh0LmluZGV4KCJzZWwubGFzdCIpCiAgICAgICAgICAgICAgICAgaWYgc2VsZmlyc3QgPT0gZmlyc3QgYW5kIHNlbGxhc3QgPT0gbGFzdDoKLSAgICAgICAgICAgICAgICAgICAgdGV4dC5iZWxsKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBleGNlcHQgVGNsRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwpAQCAtNjEsNyArNjIsNyBAQAogICAgICAgICAgICAgdGV4dC5zZWUoImluc2VydCIpCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGV4dC5iZWxsKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBmaW5kX3NlbGVjdGlvbihzZWxmLCB0ZXh0KToKQEAgLTcyLDI2ICs3MywzMCBAQAogCiAKIGRlZiBfc2VhcmNoX2RpYWxvZyhwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgJycnRGlzcGxheSBzZWFyY2ggdGVzdCBib3guJycnCisgICAgIkRpc3BsYXkgc2VhcmNoIHRlc3QgYm94LiIKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0CisgICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgQnV0dG9uCisKICAgICBib3ggPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgYm94LnRpdGxlKCJUZXN0IFNlYXJjaERpYWxvZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKICAgICB0ZXh0ID0gVGV4dChib3gsIGluYWN0aXZlc2VsZWN0YmFja2dyb3VuZD0nZ3JheScpCiAgICAgdGV4dC5wYWNrKCkKICAgICB0ZXh0Lmluc2VydCgiaW5zZXJ0IiwiVGhpcyBpcyBhIHNhbXBsZSBzdHJpbmcuXG4iKjUpCiAKICAgICBkZWYgc2hvd19maW5kKCk6Ci0gICAgICAgIHRleHQudGFnX2FkZChTRUwsICIxLjAiLCBFTkQpCisgICAgICAgIHRleHQudGFnX2FkZCgnc2VsJywgJzEuMCcsICdlbmQnKQogICAgICAgICBfc2V0dXAodGV4dCkub3Blbih0ZXh0KQotICAgICAgICB0ZXh0LnRhZ19yZW1vdmUoU0VMLCAiMS4wIiwgRU5EKQorICAgICAgICB0ZXh0LnRhZ19yZW1vdmUoJ3NlbCcsICcxLjAnLCAnZW5kJykKIAogICAgIGJ1dHRvbiA9IEJ1dHRvbihib3gsIHRleHQ9IlNlYXJjaCAoc2VsZWN0aW9uIGlnbm9yZWQpIiwgY29tbWFuZD1zaG93X2ZpbmQpCiAgICAgYnV0dG9uLnBhY2soKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfc2VhcmNoZGlhbG9nJywKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaCcsCiAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfc2VhcmNoX2RpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NlYXJjaERpYWxvZ0Jhc2UucHkgYi9MaWIvaWRsZWxpYi9zZWFyY2hiYXNlLnB5CnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1NlYXJjaERpYWxvZ0Jhc2UucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3NlYXJjaGJhc2UucHkKaW5kZXggNWZhODRlMi4uNWY4MTc4NSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weQorKysgYi9MaWIvaWRsZWxpYi9zZWFyY2hiYXNlLnB5CkBAIC0xLDcgKzEsOCBAQAogJycnRGVmaW5lIFNlYXJjaERpYWxvZ0Jhc2UgdXNlZCBieSBTZWFyY2gsIFJlcGxhY2UsIGFuZCBHcmVwIGRpYWxvZ3MuJycnCiAKLWZyb20gdGtpbnRlciBpbXBvcnQgKFRvcGxldmVsLCBGcmFtZSwgRW50cnksIExhYmVsLCBCdXR0b24sCi0gICAgICAgICAgICAgICAgICAgICBDaGVja2J1dHRvbiwgUmFkaW9idXR0b24pCitmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBGcmFtZQorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgRW50cnksIExhYmVsLCBCdXR0b24sIENoZWNrYnV0dG9uLCBSYWRpb2J1dHRvbgorCiAKIGNsYXNzIFNlYXJjaERpYWxvZ0Jhc2U6CiAgICAgJycnQ3JlYXRlIG1vc3Qgb2YgYSAzIG9yIDQgcm93LCAzIGNvbHVtbiBzZWFyY2ggZGlhbG9nLgpAQCAtNzksNiArODAsNyBAQAogICAgICAgICB0b3Aud21fdGl0bGUoc2VsZi50aXRsZSkKICAgICAgICAgdG9wLndtX2ljb25uYW1lKHNlbGYuaWNvbikKICAgICAgICAgc2VsZi50b3AgPSB0b3AKKyAgICAgICAgc2VsZi5iZWxsID0gdG9wLmJlbGwKIAogICAgICAgICBzZWxmLnJvdyA9IDAKICAgICAgICAgc2VsZi50b3AuZ3JpZF9jb2x1bW5jb25maWd1cmUoMCwgcGFkPTIsIHdlaWdodD0wKQpAQCAtMTI1LDcgKzEyNyw3IEBACiAgICAgZGVmIGNyZWF0ZV9vcHRpb25fYnV0dG9ucyhzZWxmKToKICAgICAgICAgJycnUmV0dXJuIChmaWxsZWQgZnJhbWUsIG9wdGlvbnMpIGZvciB0ZXN0aW5nLgogCi0gICAgICAgIE9wdGlvbnMgaXMgYSBsaXN0IG9mIFNlYXJjaEVuZ2luZSBib29sZWFudmFyLCBsYWJlbCBwYWlycy4KKyAgICAgICAgT3B0aW9ucyBpcyBhIGxpc3Qgb2Ygc2VhcmNoZW5naW5lIGJvb2xlYW52YXIsIGxhYmVsIHBhaXJzLgogICAgICAgICBBIGdyaWRkZWQgZnJhbWUgZnJvbSBtYWtlX2ZyYW1lIGlzIGZpbGxlZCB3aXRoIGEgQ2hlY2tidXR0b24KICAgICAgICAgZm9yIGVhY2ggcGFpciwgYm91bmQgdG8gdGhlIHZhciwgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBsYWJlbC4KICAgICAgICAgJycnCkBAIC0xMzcsMTAgKzEzOSw4IEBACiAgICAgICAgIGlmIHNlbGYubmVlZHdyYXBidXR0b246CiAgICAgICAgICAgICBvcHRpb25zLmFwcGVuZCgoZW5naW5lLndyYXB2YXIsICJXcmFwIGFyb3VuZCIpKQogICAgICAgICBmb3IgdmFyLCBsYWJlbCBpbiBvcHRpb25zOgotICAgICAgICAgICAgYnRuID0gQ2hlY2tidXR0b24oZnJhbWUsIGFuY2hvcj0idyIsIHZhcmlhYmxlPXZhciwgdGV4dD1sYWJlbCkKKyAgICAgICAgICAgIGJ0biA9IENoZWNrYnV0dG9uKGZyYW1lLCB2YXJpYWJsZT12YXIsIHRleHQ9bGFiZWwpCiAgICAgICAgICAgICBidG4ucGFjayhzaWRlPSJsZWZ0IiwgZmlsbD0iYm90aCIpCi0gICAgICAgICAgICBpZiB2YXIuZ2V0KCk6Ci0gICAgICAgICAgICAgICAgYnRuLnNlbGVjdCgpCiAgICAgICAgIHJldHVybiBmcmFtZSwgb3B0aW9ucwogCiAgICAgZGVmIGNyZWF0ZV9vdGhlcl9idXR0b25zKHNlbGYpOgpAQCAtMTUzLDExICsxNTMsOCBAQAogICAgICAgICB2YXIgPSBzZWxmLmVuZ2luZS5iYWNrdmFyCiAgICAgICAgIG90aGVycyA9IFsoMSwgJ1VwJyksICgwLCAnRG93bicpXQogICAgICAgICBmb3IgdmFsLCBsYWJlbCBpbiBvdGhlcnM6Ci0gICAgICAgICAgICBidG4gPSBSYWRpb2J1dHRvbihmcmFtZSwgYW5jaG9yPSJ3IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlPXZhciwgdmFsdWU9dmFsLCB0ZXh0PWxhYmVsKQorICAgICAgICAgICAgYnRuID0gUmFkaW9idXR0b24oZnJhbWUsIHZhcmlhYmxlPXZhciwgdmFsdWU9dmFsLCB0ZXh0PWxhYmVsKQogICAgICAgICAgICAgYnRuLnBhY2soc2lkZT0ibGVmdCIsIGZpbGw9ImJvdGgiKQotICAgICAgICAgICAgaWYgdmFyLmdldCgpID09IHZhbDoKLSAgICAgICAgICAgICAgICBidG4uc2VsZWN0KCkKICAgICAgICAgcmV0dXJuIGZyYW1lLCBvdGhlcnMKIAogICAgIGRlZiBtYWtlX2J1dHRvbihzZWxmLCBsYWJlbCwgY29tbWFuZCwgaXNkZWY9MCk6CkBAIC0xNzgsNyArMTc1LDI2IEBACiAgICAgICAgIGIgPSBzZWxmLm1ha2VfYnV0dG9uKCJjbG9zZSIsIHNlbGYuY2xvc2UpCiAgICAgICAgIGIubG93ZXIoKQogCisKK2NsYXNzIF9zZWFyY2hiYXNlKFNlYXJjaERpYWxvZ0Jhc2UpOiAgIyBodGVzdCAjCisgICAgIkNyZWF0ZSBhdXRvLW9wZW5pbmcgZGlhbG9nIHdpdGggbm8gdGV4dCBjb25uZWN0aW9uLiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICBpbXBvcnQgcmUKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKKworICAgICAgICBzZWxmLnJvb3QgPSBwYXJlbnQKKyAgICAgICAgc2VsZi5lbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHBhcmVudCkKKyAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCisgICAgICAgIHByaW50KHBhcmVudC5nZW9tZXRyeSgpKQorICAgICAgICB3aWR0aCxoZWlnaHQsIHgseSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQorICAgICAgICBzZWxmLnRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgNDAsIHkgKyAxNzUpKQorCisgICAgZGVmIGRlZmF1bHRfY29tbWFuZChzZWxmLCBkdW1teSk6IHBhc3MKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKAotICAgICAgICAnaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9zZWFyY2hkaWFsb2diYXNlJywgdmVyYm9zaXR5PTIpCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9zZWFyY2hiYXNlJywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKKyAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KKyAgICBydW4oX3NlYXJjaGJhc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TZWFyY2hFbmdpbmUucHkgYi9MaWIvaWRsZWxpYi9zZWFyY2hlbmdpbmUucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2VhcmNoRW5naW5lLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zZWFyY2hlbmdpbmUucHkKaW5kZXggMzc4ODNiZi4uMjUzZjFiMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2VhcmNoRW5naW5lLnB5CisrKyBiL0xpYi9pZGxlbGliL3NlYXJjaGVuZ2luZS5weQpAQCAtMSw1ICsxLDYgQEAKICcnJ0RlZmluZSBTZWFyY2hFbmdpbmUgZm9yIHNlYXJjaCBkaWFsb2dzLicnJwogaW1wb3J0IHJlCisKIGZyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBCb29sZWFuVmFyLCBUY2xFcnJvcgogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIApAQCAtMTQsNiArMTUsNyBAQAogICAgICAgICAjIFRoaXMgY3JlYXRlcyBhIGN5Y2xlIHRoYXQgcGVyc2lzdHMgdW50aWwgcm9vdCBpcyBkZWxldGVkLgogICAgIHJldHVybiByb290Ll9zZWFyY2hlbmdpbmUKIAorCiBjbGFzcyBTZWFyY2hFbmdpbmU6CiAgICAgIiIiSGFuZGxlcyBzZWFyY2hpbmcgYSB0ZXh0IHdpZGdldCBmb3IgRmluZCwgUmVwbGFjZSwgYW5kIEdyZXAuIiIiCiAKQEAgLTU3LDcgKzU5LDcgQEAKIAogICAgIGRlZiBzZXRjb29rZWRwYXQoc2VsZiwgcGF0KToKICAgICAgICAgIlNldCBwYXR0ZXJuIGFmdGVyIGVzY2FwaW5nIGlmIHJlLiIKLSAgICAgICAgIyBjYWxsZWQgb25seSBpbiBTZWFyY2hEaWFsb2cucHk6IDY2CisgICAgICAgICMgY2FsbGVkIG9ubHkgaW4gc2VhcmNoLnB5OiA2NgogICAgICAgICBpZiBzZWxmLmlzcmUoKToKICAgICAgICAgICAgIHBhdCA9IHJlLmVzY2FwZShwYXQpCiAgICAgICAgIHNlbGYuc2V0cGF0KHBhdCkKQEAgLTE4Niw2ICsxODgsNyBAQAogICAgICAgICAgICAgY29sID0gbGVuKGNoYXJzKSAtIDEKICAgICAgICAgcmV0dXJuIE5vbmUKIAorCiBkZWYgc2VhcmNoX3JldmVyc2UocHJvZywgY2hhcnMsIGNvbCk6CiAgICAgJycnU2VhcmNoIGJhY2t3YXJkcyBhbmQgcmV0dXJuIGFuIHJlIG1hdGNoIG9iamVjdCBvciBOb25lLgogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TdGFja1ZpZXdlci5weSBiL0xpYi9pZGxlbGliL3N0YWNrdmlld2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1N0YWNrVmlld2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zdGFja3ZpZXdlci5weQppbmRleCBjY2M3NTVjLi4wNjk4ZGVmIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TdGFja1ZpZXdlci5weQorKysgYi9MaWIvaWRsZWxpYi9zdGFja3ZpZXdlci5weQpAQCAtMSwxMiArMSwxMiBAQAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgb3MKIGltcG9ydCByZQoraW1wb3J0IHN5cworCiBpbXBvcnQgdGtpbnRlciBhcyB0awogCi1mcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgVHJlZU5vZGUsIFRyZWVJdGVtLCBTY3JvbGxlZENhbnZhcwotZnJvbSBpZGxlbGliLk9iamVjdEJyb3dzZXIgaW1wb3J0IE9iamVjdFRyZWVJdGVtLCBtYWtlX29iamVjdHRyZWVpdGVtCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Citmcm9tIGlkbGVsaWIuZGVidWdvYmogaW1wb3J0IE9iamVjdFRyZWVJdGVtLCBtYWtlX29iamVjdHRyZWVpdGVtCitmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZU5vZGUsIFRyZWVJdGVtLCBTY3JvbGxlZENhbnZhcwogCiBkZWYgU3RhY2tCcm93c2VyKHJvb3QsIGZsaXN0PU5vbmUsIHRiPU5vbmUsIHRvcD1Ob25lKToKICAgICBpZiB0b3AgaXMgTm9uZToKQEAgLTE3LDYgKzE3LDcgQEAKICAgICBub2RlID0gVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQogICAgIG5vZGUuZXhwYW5kKCkKIAorCiBjbGFzcyBTdGFja1RyZWVJdGVtKFRyZWVJdGVtKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCB0Yj1Ob25lKToKQEAgLTU1LDYgKzU2LDcgQEAKICAgICAgICAgICAgIHN1Ymxpc3QuYXBwZW5kKGl0ZW0pCiAgICAgICAgIHJldHVybiBzdWJsaXN0CiAKKwogY2xhc3MgRnJhbWVUcmVlSXRlbShUcmVlSXRlbSk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW5mbywgZmxpc3QpOgpAQCAtOTYsNiArOTgsNyBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgIHNlbGYuZmxpc3QuZ290b2ZpbGVsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCiAKKwogY2xhc3MgVmFyaWFibGVzVHJlZUl0ZW0oT2JqZWN0VHJlZUl0ZW0pOgogCiAgICAgZGVmIEdldFRleHQoc2VsZik6CkBAIC0xMjAsMTUgKzEyMywxNCBAQAogICAgICAgICAgICAgc3VibGlzdC5hcHBlbmQoaXRlbSkKICAgICAgICAgcmV0dXJuIHN1Ymxpc3QKIAotICAgIGRlZiBrZXlzKHNlbGYpOiAgIyB1bnVzZWQsIGxlZnQgZm9yIHBvc3NpYmxlIDNyZCBwYXJ0eSB1c2UKLSAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5vYmplY3Qua2V5cygpKQogCi1kZWYgX3N0YWNrX3ZpZXdlcihwYXJlbnQpOgotICAgIHJvb3QgPSB0ay5UaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBTdGFja1ZpZXdlciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHJvb3QpCitkZWYgX3N0YWNrX3ZpZXdlcihwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorICAgIHRvcCA9IHRrLlRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgU3RhY2tWaWV3ZXIiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCArIDUwLCB5ICsgMTc1KSkKKyAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdCh0b3ApCiAgICAgdHJ5OiAjIHRvIG9idGFpbiBhIHRyYWNlYmFjayBvYmplY3QKICAgICAgICAgaW50ZW50aW9uYWxfbmFtZV9lcnJvcgogICAgIGV4Y2VwdCBOYW1lRXJyb3I6CkBAIC0xMzksNyArMTQxLDcgQEAKICAgICBzeXMubGFzdF92YWx1ZSA9IGV4Y192YWx1ZQogICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IGV4Y190YgogCi0gICAgU3RhY2tCcm93c2VyKHJvb3QsIGZsaXN0PWZsaXN0LCB0b3A9cm9vdCwgdGI9ZXhjX3RiKQorICAgIFN0YWNrQnJvd3Nlcih0b3AsIGZsaXN0PWZsaXN0LCB0b3A9dG9wLCB0Yj1leGNfdGIpCiAKICAgICAjIHJlc3RvcmUgc3lzIHRvIG9yaWdpbmFsIHN0YXRlCiAgICAgZGVsIHN5cy5sYXN0X3R5cGUKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3N0YXR1c2Jhci5weSBiL0xpYi9pZGxlbGliL3N0YXR1c2Jhci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjE4NTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvc3RhdHVzYmFyLnB5CkBAIC0wLDAgKzEsNDYgQEAKK2Zyb20gdGtpbnRlciBpbXBvcnQgRnJhbWUsIExhYmVsCisKKworY2xhc3MgTXVsdGlTdGF0dXNCYXIoRnJhbWUpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3RlciwgKiprdyk6CisgICAgICAgIEZyYW1lLl9faW5pdF9fKHNlbGYsIG1hc3RlciwgKiprdykKKyAgICAgICAgc2VsZi5sYWJlbHMgPSB7fQorCisgICAgZGVmIHNldF9sYWJlbChzZWxmLCBuYW1lLCB0ZXh0PScnLCBzaWRlPSdsZWZ0Jywgd2lkdGg9MCk6CisgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYubGFiZWxzOgorICAgICAgICAgICAgbGFiZWwgPSBMYWJlbChzZWxmLCBib3JkZXJ3aWR0aD0wLCBhbmNob3I9J3cnKQorICAgICAgICAgICAgbGFiZWwucGFjayhzaWRlPXNpZGUsIHBhZHk9MCwgcGFkeD00KQorICAgICAgICAgICAgc2VsZi5sYWJlbHNbbmFtZV0gPSBsYWJlbAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGFiZWwgPSBzZWxmLmxhYmVsc1tuYW1lXQorICAgICAgICBpZiB3aWR0aCAhPSAwOgorICAgICAgICAgICAgbGFiZWwuY29uZmlnKHdpZHRoPXdpZHRoKQorICAgICAgICBsYWJlbC5jb25maWcodGV4dD10ZXh0KQorCisKK2RlZiBfbXVsdGlzdGF0dXNfYmFyKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBGcmFtZSwgVGV4dCwgQnV0dG9uCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSh4LCB5ICsgMTc1KSkKKyAgICB0b3AudGl0bGUoIlRlc3QgbXVsdGlzdGF0dXMgYmFyIikKKyAgICBmcmFtZSA9IEZyYW1lKHRvcCkKKyAgICB0ZXh0ID0gVGV4dChmcmFtZSwgaGVpZ2h0PTUsIHdpZHRoPTQwKQorICAgIHRleHQucGFjaygpCisgICAgbXNiID0gTXVsdGlTdGF0dXNCYXIoZnJhbWUpCisgICAgbXNiLnNldF9sYWJlbCgib25lIiwgImhlbGxvIikKKyAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAid29ybGQiKQorICAgIG1zYi5wYWNrKHNpZGU9J2JvdHRvbScsIGZpbGw9J3gnKQorCisgICAgZGVmIGNoYW5nZSgpOgorICAgICAgICBtc2Iuc2V0X2xhYmVsKCJvbmUiLCAiZm9vIikKKyAgICAgICAgbXNiLnNldF9sYWJlbCgidHdvIiwgImJhciIpCisKKyAgICBidXR0b24gPSBCdXR0b24odG9wLCB0ZXh0PSJVcGRhdGUgc3RhdHVzIiwgY29tbWFuZD1jaGFuZ2UpCisgICAgYnV0dG9uLnBhY2soc2lkZT0nYm90dG9tJykKKyAgICBmcmFtZS5wYWNrKCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KKyAgICBydW4oX211bHRpc3RhdHVzX2JhcikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3RhYmJlZHBhZ2VzLnB5IGIvTGliL2lkbGVsaWIvdGFiYmVkcGFnZXMucHkKaW5kZXggOTY1ZjlmOC4uNDE4NmZhMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvdGFiYmVkcGFnZXMucHkKKysrIGIvTGliL2lkbGVsaWIvdGFiYmVkcGFnZXMucHkKQEAgLTI4NSw2ICsyODUsNyBAQAogICAgICAgICAgICAgIyBwbGFjZWQgaGlkZSBpdAogICAgICAgICAgICAgc2VsZi50YWJfc2V0Lmxvd2VyKCkKIAorCiBjbGFzcyBUYWJiZWRQYWdlU2V0KEZyYW1lKToKICAgICAiIiJBIFRraW50ZXIgdGFiYmVkLXBhbmUgd2lkZ2V0LgogCkBAIC0zMDIsNiArMzAzLDcgQEAKICAgICByZW1vdmVfcGFnZSgpIG1ldGhvZHMuCiAKICAgICAiIiIKKwogICAgIGNsYXNzIFBhZ2Uob2JqZWN0KToKICAgICAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgVGFiYmVkUGFnZVNldCdzIHBhZ2VzLgogCkBAIC00NjcsMzEgKzQ2OSwyOSBAQAogCiAgICAgICAgIHNlbGYuX3RhYl9zZXQuc2V0X3NlbGVjdGVkX3RhYihwYWdlX25hbWUpCiAKLWRlZiBfdGFiYmVkX3BhZ2VzKHBhcmVudCk6Ci0gICAgIyB0ZXN0IGRpYWxvZwotICAgIHJvb3Q9VGsoKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTc1KSkKLSAgICByb290LnRpdGxlKCJUZXN0IHRhYmJlZCBwYWdlcyIpCi0gICAgdGFiUGFnZT1UYWJiZWRQYWdlU2V0KHJvb3QsIHBhZ2VfbmFtZXM9WydGb29iYXInLCdCYXonXSwgbl9yb3dzPTAsCisKK2RlZiBfdGFiYmVkX3BhZ2VzKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3A9VG9wbGV2ZWwocGFyZW50KQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCisgICAgdG9wLnRpdGxlKCJUZXN0IHRhYmJlZCBwYWdlcyIpCisgICAgdGFiUGFnZT1UYWJiZWRQYWdlU2V0KHRvcCwgcGFnZV9uYW1lcz1bJ0Zvb2JhcicsJ0JheiddLCBuX3Jvd3M9MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kX3RhYnM9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICB0YWJQYWdlLnBhY2soc2lkZT1UT1AsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCiAgICAgTGFiZWwodGFiUGFnZS5wYWdlc1snRm9vYmFyJ10uZnJhbWUsIHRleHQ9J0ZvbycsIHBhZHk9MjApLnBhY2soKQogICAgIExhYmVsKHRhYlBhZ2UucGFnZXNbJ0Zvb2JhciddLmZyYW1lLCB0ZXh0PSdCYXInLCBwYWR5PTIwKS5wYWNrKCkKICAgICBMYWJlbCh0YWJQYWdlLnBhZ2VzWydCYXonXS5mcmFtZSwgdGV4dD0nQmF6JykucGFjaygpCi0gICAgZW50cnlQZ05hbWU9RW50cnkocm9vdCkKLSAgICBidXR0b25BZGQ9QnV0dG9uKHJvb3QsIHRleHQ9J0FkZCBQYWdlJywKKyAgICBlbnRyeVBnTmFtZT1FbnRyeSh0b3ApCisgICAgYnV0dG9uQWRkPUJ1dHRvbih0b3AsIHRleHQ9J0FkZCBQYWdlJywKICAgICAgICAgICAgIGNvbW1hbmQ9bGFtYmRhOnRhYlBhZ2UuYWRkX3BhZ2UoZW50cnlQZ05hbWUuZ2V0KCkpKQotICAgIGJ1dHRvblJlbW92ZT1CdXR0b24ocm9vdCwgdGV4dD0nUmVtb3ZlIFBhZ2UnLAorICAgIGJ1dHRvblJlbW92ZT1CdXR0b24odG9wLCB0ZXh0PSdSZW1vdmUgUGFnZScsCiAgICAgICAgICAgICBjb21tYW5kPWxhbWJkYTp0YWJQYWdlLnJlbW92ZV9wYWdlKGVudHJ5UGdOYW1lLmdldCgpKSkKLSAgICBsYWJlbFBnTmFtZT1MYWJlbChyb290LCB0ZXh0PSduYW1lIG9mIHBhZ2UgdG8gYWRkL3JlbW92ZTonKQorICAgIGxhYmVsUGdOYW1lPUxhYmVsKHRvcCwgdGV4dD0nbmFtZSBvZiBwYWdlIHRvIGFkZC9yZW1vdmU6JykKICAgICBidXR0b25BZGQucGFjayhwYWR4PTUsIHBhZHk9NSkKICAgICBidXR0b25SZW1vdmUucGFjayhwYWR4PTUsIHBhZHk9NSkKICAgICBsYWJlbFBnTmFtZS5wYWNrKHBhZHg9NSkKICAgICBlbnRyeVBnTmFtZS5wYWNrKHBhZHg9NSkKLSAgICByb290Lm1haW5sb29wKCkKLQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvdGV4dFZpZXcucHkgYi9MaWIvaWRsZWxpYi90ZXh0dmlldy5weQpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi90ZXh0Vmlldy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvdGV4dHZpZXcucHkKaW5kZXggMTJhYzMxOS4uYWRlZTMyNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvdGV4dFZpZXcucHkKKysrIGIvTGliL2lkbGVsaWIvdGV4dHZpZXcucHkKQEAgLTEsMTQgKzEsMTQgQEAKICIiIlNpbXBsZSB0ZXh0IGJyb3dzZXIgZm9yIElETEUKIAogIiIiCi0KIGZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorZnJvbSB0a2ludGVyLm1lc3NhZ2Vib3ggaW1wb3J0IHNob3dlcnJvcgorCiAKIGNsYXNzIFRleHRWaWV3ZXIoVG9wbGV2ZWwpOgotICAgICIiIkEgc2ltcGxlIHRleHQgdmlld2VyIGRpYWxvZyBmb3IgSURMRQorICAgICJBIHNpbXBsZSB0ZXh0IHZpZXdlciBkaWFsb2cgZm9yIElETEUuIgogCi0gICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIHRleHQsIG1vZGFsPVRydWUsIF9odGVzdD1GYWxzZSk6CiAgICAgICAgICIiIlNob3cgdGhlIGdpdmVuIHRleHQgaW4gYSBzY3JvbGxhYmxlIHdpbmRvdyB3aXRoIGEgJ2Nsb3NlJyBidXR0b24KIApAQCAtMjAsMTEgKzIwLDExIEBACiAgICAgICAgICIiIgogICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCiAgICAgICAgIHNlbGYuY29uZmlndXJlKGJvcmRlcndpZHRoPTUpCi0gICAgICAgICMgcGxhY2UgZGlhbG9nIGJlbG93IHBhcmVudCBpZiBydW5uaW5nIGh0ZXN0CisgICAgICAgICMgUGxhY2UgZGlhbG9nIGJlbG93IHBhcmVudCBpZiBydW5uaW5nIGh0ZXN0LgogICAgICAgICBzZWxmLmdlb21ldHJ5KCI9JWR4JWQrJWQrJWQiICUgKDc1MCwgNTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsgKDEwIGlmIG5vdCBfaHRlc3QgZWxzZSAxMDApKSkKLSAgICAgICAgI2VsZ3VhdmFzIC0gY29uZmlnIHBsYWNlaG9sZGVycyB0aWwgY29uZmlnIHN0dWZmIGNvbXBsZXRlZAorICAgICAgICAjIFRPRE86IGdldCBmZy9iZyBmcm9tIHRoZW1lLgogICAgICAgICBzZWxmLmJnID0gJyNmZmZmZmYnCiAgICAgICAgIHNlbGYuZmcgPSAnIzAwMDAwMCcKIApAQCAtMzMsOSArMzMsOSBAQAogICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5PaykKICAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKICAgICAgICAgc2VsZi50ZXh0Vmlldy5mb2N1c19zZXQoKQotICAgICAgICAja2V5IGJpbmRpbmdzIGZvciB0aGlzIGRpYWxvZwotICAgICAgICBzZWxmLmJpbmQoJzxSZXR1cm4+JyxzZWxmLk9rKSAjZGlzbWlzcyBkaWFsb2cKLSAgICAgICAgc2VsZi5iaW5kKCc8RXNjYXBlPicsc2VsZi5PaykgI2Rpc21pc3MgZGlhbG9nCisgICAgICAgICMgQmluZCBrZXlzIGZvciBjbG9zaW5nIHRoaXMgZGlhbG9nLgorICAgICAgICBzZWxmLmJpbmQoJzxSZXR1cm4+JyxzZWxmLk9rKQorICAgICAgICBzZWxmLmJpbmQoJzxFc2NhcGU+JyxzZWxmLk9rKQogICAgICAgICBzZWxmLnRleHRWaWV3Lmluc2VydCgwLjAsIHRleHQpCiAgICAgICAgIHNlbGYudGV4dFZpZXcuY29uZmlnKHN0YXRlPURJU0FCTEVEKQogCkBAIC01MCw3ICs1MCw3IEBACiAgICAgICAgIHNlbGYuYnV0dG9uT2sgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdDbG9zZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLk9rLCB0YWtlZm9jdXM9RkFMU0UpCiAgICAgICAgIHNlbGYuc2Nyb2xsYmFyVmlldyA9IFNjcm9sbGJhcihmcmFtZVRleHQsIG9yaWVudD1WRVJUSUNBTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vmb2N1cz1GQUxTRSwgaGlnaGxpZ2h0dGhpY2tuZXNzPTApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlZm9jdXM9RkFMU0UpCiAgICAgICAgIHNlbGYudGV4dFZpZXcgPSBUZXh0KGZyYW1lVGV4dCwgd3JhcD1XT1JELCBoaWdobGlnaHR0aGlja25lc3M9MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9c2VsZi5mZywgYmc9c2VsZi5iZykKICAgICAgICAgc2VsZi5zY3JvbGxiYXJWaWV3LmNvbmZpZyhjb21tYW5kPXNlbGYudGV4dFZpZXcueXZpZXcpCkBAIC03MiwxNCArNzIsMTQgQEAKICAgICB0cnk6CiAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3InLCBlbmNvZGluZz1lbmNvZGluZykgYXMgZmlsZToKICAgICAgICAgICAgIGNvbnRlbnRzID0gZmlsZS5yZWFkKCkKLSAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nRmlsZSBMb2FkIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdVbmFibGUgdG8gbG9hZCBmaWxlICVyIC4nICUgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXBhcmVudCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgc2hvd2Vycm9yKHRpdGxlPSdGaWxlIExvYWQgRXJyb3InLAorICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nVW5hYmxlIHRvIGxvYWQgZmlsZSAlciAuJyAlIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgcGFyZW50PXBhcmVudCkKICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGVycjoKLSAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nVW5pY29kZSBEZWNvZGUgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9c3RyKGVyciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXBhcmVudCkKKyAgICAgICAgc2hvd2Vycm9yKHRpdGxlPSdVbmljb2RlIERlY29kZSBFcnJvcicsCisgICAgICAgICAgICAgICAgICBtZXNzYWdlPXN0cihlcnIpLAorICAgICAgICAgICAgICAgICAgcGFyZW50PXBhcmVudCkKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gdmlld190ZXh0KHBhcmVudCwgdGl0bGUsIGNvbnRlbnRzLCBtb2RhbCkKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvVG9vbFRpcC5weSBiL0xpYi9pZGxlbGliL3Rvb2x0aXAucHkKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvVG9vbFRpcC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvdG9vbHRpcC5weQppbmRleCA5NjQxMDdlLi44NDNmYjRhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Ub29sVGlwLnB5CisrKyBiL0xpYi9pZGxlbGliL3Rvb2x0aXAucHkKQEAgLTEsNCArMSw0IEBACi0jIGdlbmVyYWwgcHVycG9zZSAndG9vbHRpcCcgcm91dGluZXMgLSBjdXJyZW50bHkgdW51c2VkIGluIGlkbGVmb3JrCisjIGdlbmVyYWwgcHVycG9zZSAndG9vbHRpcCcgcm91dGluZXMgLSBjdXJyZW50bHkgdW51c2VkIGluIGlkbGVsaWIKICMgKGFsdGhvdWdoIHRoZSAnY2FsbHRpcHMnIGV4dGVuc2lvbiBpcyBwYXJ0bHkgYmFzZWQgb24gdGhpcyBjb2RlKQogIyBtYXkgYmUgdXNlZnVsIGZvciBzb21lIHB1cnBvc2VzIGluIChvciBhbG1vc3QgaW4gOykgdGhlIGN1cnJlbnQgcHJvamVjdCBzY29wZQogIyBJZGVhcyBnbGVhbmVkIGZyb20gUHlTb2wKQEAgLTc2LDIxICs3NiwyMCBAQAogICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLml0ZW1zOgogICAgICAgICAgICAgbGlzdGJveC5pbnNlcnQoRU5ELCBpdGVtKQogCi1kZWYgX3Rvb2x0aXAocGFyZW50KToKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgdG9vbHRpcCIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIGxhYmVsID0gTGFiZWwocm9vdCwgdGV4dD0iUGxhY2UgeW91ciBtb3VzZSBvdmVyIGJ1dHRvbnMiKQorZGVmIF90b29sdGlwKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IHRvb2x0aXAiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE1MCkpCisgICAgbGFiZWwgPSBMYWJlbCh0b3AsIHRleHQ9IlBsYWNlIHlvdXIgbW91c2Ugb3ZlciBidXR0b25zIikKICAgICBsYWJlbC5wYWNrKCkKLSAgICBidXR0b24xID0gQnV0dG9uKHJvb3QsIHRleHQ9IkJ1dHRvbiAxIikKLSAgICBidXR0b24yID0gQnV0dG9uKHJvb3QsIHRleHQ9IkJ1dHRvbiAyIikKKyAgICBidXR0b24xID0gQnV0dG9uKHRvcCwgdGV4dD0iQnV0dG9uIDEiKQorICAgIGJ1dHRvbjIgPSBCdXR0b24odG9wLCB0ZXh0PSJCdXR0b24gMiIpCiAgICAgYnV0dG9uMS5wYWNrKCkKICAgICBidXR0b24yLnBhY2soKQogICAgIFRvb2xUaXAoYnV0dG9uMSwgIlRoaXMgaXMgdG9vbHRpcCB0ZXh0IGZvciBidXR0b24xLiIpCiAgICAgTGlzdGJveFRvb2xUaXAoYnV0dG9uMiwgWyJUaGlzIGlzIiwibXVsdGlwbGUgbGluZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2x0aXAgdGV4dCIsImZvciBidXR0b24yIl0pCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9UcmVlV2lkZ2V0LnB5IGIvTGliL2lkbGVsaWIvdHJlZS5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9UcmVlV2lkZ2V0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi90cmVlLnB5CmluZGV4IGExOTU3OGYuLjI5MmNlMzYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkKKysrIGIvTGliL2lkbGVsaWIvdHJlZS5weQpAQCAtMTUsMTAgKzE1LDEyIEBACiAjIC0gb3B0aW1pemUgdHJlZSByZWRyYXcgYWZ0ZXIgZXhwYW5kIG9mIHN1Ym5vZGUKIAogaW1wb3J0IG9zCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKIAotZnJvbSBpZGxlbGliIGltcG9ydCBab29tSGVpZ2h0Ci1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gdGtpbnRlciBpbXBvcnQgKgorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IHpvb21oZWlnaHQKIAogSUNPTkRJUiA9ICJJY29ucyIKIApAQCAtNDQ1LDIyICs0NDcsMjEgQEAKICAgICAgICAgc2VsZi5jYW52YXMueXZpZXdfc2Nyb2xsKDEsICJ1bml0IikKICAgICAgICAgcmV0dXJuICJicmVhayIKICAgICBkZWYgem9vbV9oZWlnaHQoc2VsZiwgZXZlbnQpOgotICAgICAgICBab29tSGVpZ2h0Lnpvb21faGVpZ2h0KHNlbGYubWFzdGVyKQorICAgICAgICB6b29taGVpZ2h0Lnpvb21faGVpZ2h0KHNlbGYubWFzdGVyKQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAKLWRlZiBfdHJlZV93aWRnZXQocGFyZW50KToKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgVHJlZVdpZGdldCIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIHNjID0gU2Nyb2xsZWRDYW52YXMocm9vdCwgYmc9IndoaXRlIiwgaGlnaGxpZ2h0dGhpY2tuZXNzPTAsIHRha2Vmb2N1cz0xKQorZGVmIF90cmVlX3dpZGdldChwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCs1MCwgeSsxNzUpKQorICAgIHNjID0gU2Nyb2xsZWRDYW52YXModG9wLCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCiAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIsIHNpZGU9TEVGVCkKLSAgICBpdGVtID0gRmlsZVRyZWVJdGVtKG9zLmdldGN3ZCgpKQorICAgIGl0ZW0gPSBGaWxlVHJlZUl0ZW0oSUNPTkRJUikKICAgICBub2RlID0gVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQogICAgIG5vZGUuZXhwYW5kKCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICAjIHRlc3RfdHJlZSBpcyBjdXJyZW50bHkgYSBjb3B5IG9mIHRoaXMKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX3RyZWVfd2lkZ2V0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvVW5kb0RlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL3VuZG8ucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvVW5kb0RlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvdW5kby5weQppbmRleCAxYzI1MDJkLi40MzMyZjEwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9VbmRvRGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL3VuZG8ucHkKQEAgLTEsNyArMSw5IEBACiBpbXBvcnQgc3RyaW5nCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKIAotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKKworIyB0a2ludHRlciBpbXBvcnQgbm90IG5lZWRlZCBiZWNhdXNlIG1vZHVsZSBkb2VzIG5vdCBjcmVhdGUgd2lkZ2V0cywKKyMgYWx0aG91Z2ggbWFueSBtZXRob2RzIG9wZXJhdGUgb24gdGV4dCB3aWRnZXQgYXJndW1lbnRzLgogCiAjJCBldmVudCA8PHJlZG8+PgogIyQgd2luIDxDb250cm9sLXk+CkBAIC0xNTgsNyArMTYwLDYgQEAKIAogCiBjbGFzcyBDb21tYW5kOgotCiAgICAgIyBCYXNlIGNsYXNzIGZvciBVbmRvYWJsZSBjb21tYW5kcwogCiAgICAgdGFncyA9IE5vbmUKQEAgLTIwNCw3ICsyMDUsNiBAQAogCiAKIGNsYXNzIEluc2VydENvbW1hbmQoQ29tbWFuZCk6Ci0KICAgICAjIFVuZG9hYmxlIGluc2VydCBjb21tYW5kCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXgxLCBjaGFycywgdGFncz1Ob25lKToKQEAgLTI2Miw3ICsyNjIsNiBAQAogCiAKIGNsYXNzIERlbGV0ZUNvbW1hbmQoQ29tbWFuZCk6Ci0KICAgICAjIFVuZG9hYmxlIGRlbGV0ZSBjb21tYW5kCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXgxLCBpbmRleDI9Tm9uZSk6CkBAIC0yOTcsOCArMjk2LDggQEAKICAgICAgICAgdGV4dC5zZWUoJ2luc2VydCcpCiAgICAgICAgICMjc3lzLl9fc3RkZXJyX18ud3JpdGUoInVuZG86ICVzXG4iICUgc2VsZikKIAotY2xhc3MgQ29tbWFuZFNlcXVlbmNlKENvbW1hbmQpOgogCitjbGFzcyBDb21tYW5kU2VxdWVuY2UoQ29tbWFuZCk6CiAgICAgIyBXcmFwcGVyIGZvciBhIHNlcXVlbmNlIG9mIHVuZG9hYmxlIGNtZHMgdG8gYmUgdW5kb25lL3JlZG9uZQogICAgICMgYXMgYSB1bml0CiAKQEAgLTMzOCwxMyArMzM3LDEyIEBACiAKIAogZGVmIF91bmRvX2RlbGVnYXRvcihwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgaW1wb3J0IHJlCi0gICAgaW1wb3J0IHRraW50ZXIgYXMgdGsKLSAgICBmcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgotICAgIHVuZG93aW4gPSB0ay5Ub3BsZXZlbCgpCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dCwgQnV0dG9uCisgICAgZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKKyAgICB1bmRvd2luID0gVG9wbGV2ZWwocGFyZW50KQogICAgIHVuZG93aW4udGl0bGUoIlRlc3QgVW5kb0RlbGVnYXRvciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHVuZG93aW4uZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB1bmRvd2luLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogCiAgICAgdGV4dCA9IFRleHQodW5kb3dpbiwgaGVpZ2h0PTEwKQogICAgIHRleHQucGFjaygpCkBAIC0zNjIsNyArMzYwLDcgQEAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3VuZG9kZWxlZ2F0b3InLCB2ZXJib3NpdHk9MiwKLSAgICAgICAgICAgICAgICAgIGV4aXQ9RmFsc2UpCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF91bmRvJywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX3VuZG9fZGVsZWdhdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvV2luZG93TGlzdC5weSBiL0xpYi9pZGxlbGliL3dpbmRvd3MucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvV2luZG93TGlzdC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvd2luZG93cy5weQppbmRleCBiYzc0MzQ4Li5hM2Y4NThhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9XaW5kb3dMaXN0LnB5CisrKyBiL0xpYi9pZGxlbGliL3dpbmRvd3MucHkKQEAgLTEsNSArMSw2IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIAorCiBjbGFzcyBXaW5kb3dMaXN0OgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtNDgsNiArNDksNyBAQAogICAgICAgICAgICAgICAgIHQsIHYsIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgICAgICBwcmludCgid2FybmluZzogY2FsbGJhY2sgZmFpbGVkIGluIFdpbmRvd0xpc3QiLCB0LCAiOiIsIHYpCiAKKwogcmVnaXN0cnkgPSBXaW5kb3dMaXN0KCkKIAogYWRkX3dpbmRvd3NfdG9fbWVudSA9IHJlZ2lzdHJ5LmFkZF93aW5kb3dzX3RvX21lbnUKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1pvb21IZWlnaHQucHkgYi9MaWIvaWRsZWxpYi96b29taGVpZ2h0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1pvb21IZWlnaHQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3pvb21oZWlnaHQucHkKaW5kZXggYTVkNjc5ZS4uYWE0YTQyNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvWm9vbUhlaWdodC5weQorKysgYi9MaWIvaWRsZWxpYi96b29taGVpZ2h0LnB5CkBAIC0zLDcgKzMsOCBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKKwogCiBjbGFzcyBab29tSGVpZ2h0OgogCkBAIC0yMCw2ICsyMSw3IEBACiAgICAgICAgIHRvcCA9IHNlbGYuZWRpdHdpbi50b3AKICAgICAgICAgem9vbV9oZWlnaHQodG9wKQogCisKIGRlZiB6b29tX2hlaWdodCh0b3ApOgogICAgIGdlb20gPSB0b3Aud21fZ2VvbWV0cnkoKQogICAgIG0gPSByZS5tYXRjaChyIihcZCspeChcZCspXCsoLT9cZCspXCsoLT9cZCspIiwgZ2VvbSkKQEAgLTMyLDcgKzM0LDcgQEAKICAgICAgICAgbmV3eSA9IDAKICAgICAgICAgbmV3aGVpZ2h0ID0gbmV3aGVpZ2h0IC0gNzIKIAotICAgIGVsaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgIGVsaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICMgVGhlICc4OCcgYmVsb3cgaXMgYSBtYWdpYyBudW1iZXIgdGhhdCBhdm9pZHMgcGxhY2luZyB0aGUgYm90dG9tCiAgICAgICAgICMgb2YgdGhlIHdpbmRvdyBiZWxvdyB0aGUgcGFuZWwgb24gbXkgbWFjaGluZS4gSSBkb24ndCBrbm93IGhvdwogICAgICAgICAjIHRvIGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgdGhpcyB3aXRoIHRraW50ZXIuCmRpZmYgLS1naXQgYS9MaWIvaW1hcGxpYi5weSBiL0xpYi9pbWFwbGliLnB5CmluZGV4IDRlOGE0YmIuLmNhZDUwOGEgMTAwNjQ0Ci0tLSBhL0xpYi9pbWFwbGliLnB5CisrKyBiL0xpYi9pbWFwbGliLnB5CkBAIC0xMTEsNyArMTExLDE1IEBACiAjIExpdGVyYWwgaXMgbm8gbG9uZ2VyIHVzZWQ7IGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCiBMaXRlcmFsID0gcmUuY29tcGlsZShicicuKnsoP1A8c2l6ZT5cZCspfSQnLCByZS5BU0NJSSkKIE1hcENSTEYgPSByZS5jb21waWxlKGJyJ1xyXG58XHJ8XG4nKQotUmVzcG9uc2VfY29kZSA9IHJlLmNvbXBpbGUoYnInXFsoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGE+W15cXV0qKSk/XF0nKQorIyBXZSBubyBsb25nZXIgZXhjbHVkZSB0aGUgJ10nIGNoYXJhY3RlciBmcm9tIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIHJlc3BvbnNlCisjIGNvZGUsIGV2ZW4gdGhvdWdoIGl0IHZpb2xhdGVzIHRoZSBSRkMuICBQb3B1bGFyIElNQVAgc2VydmVycyBzdWNoIGFzIEdtYWlsCisjIGFsbG93IGZsYWdzIHdpdGggJ10nLCBhbmQgdGhlcmUgYXJlIHByb2dyYW1zIChpbmNsdWRpbmcgaW1hcGxpYiEpIHRoYXQgY2FuCisjIHByb2R1Y2UgdGhlbS4gIFRoZSBwcm9ibGVtIHdpdGggdGhpcyBpcyBpZiB0aGUgJ3RleHQnIHBvcnRpb24gb2YgdGhlIHJlc3BvbnNlCisjIGluY2x1ZGVzIGEgJ10nIHdlJ2xsIHBhcnNlIHRoZSByZXNwb25zZSB3cm9uZyAod2hpY2ggaXMgdGhlIHBvaW50IG9mIHRoZSBSRkMKKyMgcmVzdHJpY3Rpb24pLiAgSG93ZXZlciwgdGhhdCBzZWVtcyBsZXNzIGxpa2VseSB0byBiZSBhIHByb2JsZW0gaW4gcHJhY3RpY2UKKyMgdGhhbiBiZWluZyB1bmFibGUgdG8gY29ycmVjdGx5IHBhcnNlIGZsYWdzIHRoYXQgaW5jbHVkZSAnXScgY2hhcnMsIHdoaWNoCisjIHdhcyByZXBvcnRlZCBhcyBhIHJlYWwtd29ybGQgcHJvYmxlbSBpbiBpc3N1ZSAjMjE4MTUuCitSZXNwb25zZV9jb2RlID0gcmUuY29tcGlsZShicidcWyg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT4uKikpP1xdJykKIFVudGFnZ2VkX3Jlc3BvbnNlID0gcmUuY29tcGlsZShicidcKiAoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGE+LiopKT8nKQogIyBVbnRhZ2dlZF9zdGF0dXMgaXMgbm8gbG9uZ2VyIHVzZWQ7IGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKIFVudGFnZ2VkX3N0YXR1cyA9IHJlLmNvbXBpbGUoCkBAIC0xMjQsNyArMTMyLDcgQEAKIAogY2xhc3MgSU1BUDQ6CiAKLSAgICAiIiJJTUFQNCBjbGllbnQgY2xhc3MuCisgICAgciIiIklNQVA0IGNsaWVudCBjbGFzcy4KIAogICAgIEluc3RhbnRpYXRlIHdpdGg6IElNQVA0KFtob3N0WywgcG9ydF1dKQogCkBAIC0xMjU5LDcgKzEyNjcsMTAgQEAKICAgICAgICAgICAgIGlmIHNzbF9jb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzc2xfY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKLQorICAgICAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIHNzbF9jb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIHNzbF9jb250ZXh0IGlzIE5vbmU6CkBAIC0xNTI3LDcgKzE1MzgsNyBAQAogICAgICgnc2VsZWN0JywgKCcvdG1wL3l5eiAyJywpKSwKICAgICAoJ3NlYXJjaCcsIChOb25lLCAnU1VCSkVDVCcsICd0ZXN0JykpLAogICAgICgnZmV0Y2gnLCAoJzEnLCAnKEZMQUdTIElOVEVSTkFMREFURSBSRkM4MjIpJykpLAotICAgICgnc3RvcmUnLCAoJzEnLCAnRkxBR1MnLCAnKFxEZWxldGVkKScpKSwKKyAgICAoJ3N0b3JlJywgKCcxJywgJ0ZMQUdTJywgcicoXERlbGV0ZWQpJykpLAogICAgICgnbmFtZXNwYWNlJywgKCkpLAogICAgICgnZXhwdW5nZScsICgpKSwKICAgICAoJ3JlY2VudCcsICgpKSwKZGlmZiAtLWdpdCBhL0xpYi9pbWdoZHIucHkgYi9MaWIvaW1naGRyLnB5CmluZGV4IGIyNjc5MjUuLjc2ZThhYmIgMTAwNjQ0Ci0tLSBhL0xpYi9pbWdoZHIucHkKKysrIGIvTGliL2ltZ2hkci5weQpAQCAtMSw1ICsxLDcgQEAKICIiIlJlY29nbml6ZSBpbWFnZSBmaWxlIGZvcm1hdHMgYmFzZWQgb24gdGhlaXIgZmlyc3QgZmV3IGJ5dGVzLiIiIgogCitmcm9tIG9zIGltcG9ydCBQYXRoTGlrZQorCiBfX2FsbF9fID0gWyJ3aGF0Il0KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCkBAIC0xMCw3ICsxMiw3IEBACiAgICAgZiA9IE5vbmUKICAgICB0cnk6CiAgICAgICAgIGlmIGggaXMgTm9uZToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgc3RyKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgKHN0ciwgUGF0aExpa2UpKToKICAgICAgICAgICAgICAgICBmID0gb3BlbihmaWxlLCAncmInKQogICAgICAgICAgICAgICAgIGggPSBmLnJlYWQoMzIpCiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL2ltcC5weSBiL0xpYi9pbXAucHkKaW5kZXggZTI2NDM5MS4uNzgxZmYyMyAxMDA2NDQKLS0tIGEvTGliL2ltcC5weQorKysgYi9MaWIvaW1wLnB5CkBAIC0zMCw3ICszMCw3IEBACiAKIHdhcm5pbmdzLndhcm4oInRoZSBpbXAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGltcG9ydGxpYjsgIgogICAgICAgICAgICAgICAic2VlIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGZvciBhbHRlcm5hdGl2ZSB1c2VzIiwKLSAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKIAogIyBERVBSRUNBVEVECiBTRUFSQ0hfRVJST1IgPSAwCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKaW5kZXggOWVlY2JmZS4uYTUzMWEwMyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQpAQCAtMzYsMjMgKzM2LDYgQEAKICAgICByZXR1cm4gdHlwZShzeXMpKG5hbWUpCiAKIAotY2xhc3MgX01hbmFnZVJlbG9hZDoKLQotICAgICIiIk1hbmFnZXMgdGhlIHBvc3NpYmxlIGNsZWFuLXVwIG9mIHN5cy5tb2R1bGVzIGZvciBsb2FkX21vZHVsZSgpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5faXNfcmVsb2FkID0gc2VsZi5fbmFtZSBpbiBzeXMubW9kdWxlcwotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKLSAgICAgICAgaWYgYW55KGFyZyBpcyBub3QgTm9uZSBmb3IgYXJnIGluIGFyZ3MpIGFuZCBub3Qgc2VsZi5faXNfcmVsb2FkOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tzZWxmLl9uYW1lXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQogIyBNb2R1bGUtbGV2ZWwgbG9ja2luZyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIEEgZGljdCBtYXBwaW5nIG1vZHVsZSBuYW1lcyB0byB3ZWFrcmVmcyBvZiBfTW9kdWxlTG9jayBpbnN0YW5jZXMKQEAgLTI3MCw3ICsyNTMsNyBAQAogIyBNb2R1bGUgc3BlY2lmaWNhdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBkZWYgX21vZHVsZV9yZXByKG1vZHVsZSk6Ci0gICAgIyBUaGUgaW1wbGVtZW50YXRpb24gb2YgTW9kdWxlVHlwZV9fcmVwcl9fKCkuCisgICAgIyBUaGUgaW1wbGVtZW50YXRpb24gb2YgTW9kdWxlVHlwZS5fX3JlcHJfXygpLgogICAgIGxvYWRlciA9IGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpCiAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdtb2R1bGVfcmVwcicpOgogICAgICAgICAjIEFzIHNvb24gYXMgQnVpbHRpbkltcG9ydGVyLCBGcm96ZW5JbXBvcnRlciwgYW5kIE5hbWVzcGFjZUxvYWRlcgpAQCAtNTc2LDkgKzU1OSw4IEBACiAgICAgICAgICMgbW9kdWxlIGNyZWF0aW9uIHNob3VsZCBiZSB1c2VkLgogICAgICAgICBtb2R1bGUgPSBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCiAgICAgZWxpZiBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKLSAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N0YXJ0aW5nIGluIFB5dGhvbiAzLjYsIGxvYWRlcnMgZGVmaW5pbmcgZXhlY19tb2R1bGUoKSAnCi0gICAgICAgICAgICAgICAgICAgICAgICdtdXN0IGFsc28gZGVmaW5lIGNyZWF0ZV9tb2R1bGUoKScsCi0gICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbG9hZGVycyB0aGF0IGRlZmluZSBleGVjX21vZHVsZSgpICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ211c3QgYWxzbyBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJykKICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgbW9kdWxlID0gX25ld19tb2R1bGUoc3BlYy5uYW1lKQogICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUpCkBAIC02MDMsNyArNTg1LDcgQEAKIAogIyBVc2VkIGJ5IGltcG9ydGxpYi5yZWxvYWQoKSBhbmQgX2xvYWRfbW9kdWxlX3NoaW0oKS4KIGRlZiBfZXhlYyhzcGVjLCBtb2R1bGUpOgotICAgICIiIkV4ZWN1dGUgdGhlIHNwZWMgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgorICAgICIiIkV4ZWN1dGUgdGhlIHNwZWMncyBzcGVjaWZpZWQgbW9kdWxlIGluIGFuIGV4aXN0aW5nIG1vZHVsZSdzIG5hbWVzcGFjZS4iIiIKICAgICBuYW1lID0gc3BlYy5uYW1lCiAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQogICAgIHdpdGggX01vZHVsZUxvY2tNYW5hZ2VyKG5hbWUpOgpAQCAtODc3LDE0ICs4NTksMjEgQEAKIAogCiBkZWYgX2ZpbmRfc3BlYyhuYW1lLCBwYXRoLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgIiIiRmluZCBhIG1vZHVsZSdzIGxvYWRlci4iIiIKLSAgICBpZiBzeXMubWV0YV9wYXRoIGlzIG5vdCBOb25lIGFuZCBub3Qgc3lzLm1ldGFfcGF0aDoKKyAgICAiIiJGaW5kIGEgbW9kdWxlJ3Mgc3BlYy4iIiIKKyAgICBtZXRhX3BhdGggPSBzeXMubWV0YV9wYXRoCisgICAgaWYgbWV0YV9wYXRoIGlzIE5vbmU6CisgICAgICAgICMgUHlJbXBvcnRfQ2xlYW51cCgpIGlzIHJ1bm5pbmcgb3IgaGFzIGJlZW4gY2FsbGVkLgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigic3lzLm1ldGFfcGF0aCBpcyBOb25lLCBQeXRob24gaXMgbGlrZWx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNodXR0aW5nIGRvd24iKQorCisgICAgaWYgbm90IG1ldGFfcGF0aDoKICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5tZXRhX3BhdGggaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQorCiAgICAgIyBXZSBjaGVjayBzeXMubW9kdWxlcyBoZXJlIGZvciB0aGUgcmVsb2FkIGNhc2UuICBXaGlsZSBhIHBhc3NlZC1pbgogICAgICMgdGFyZ2V0IHdpbGwgdXN1YWxseSBpbmRpY2F0ZSBhIHJlbG9hZCB0aGVyZSBpcyBubyBndWFyYW50ZWUsIHdoZXJlYXMKICAgICAjIHN5cy5tb2R1bGVzIHByb3ZpZGVzIG9uZS4KICAgICBpc19yZWxvYWQgPSBuYW1lIGluIHN5cy5tb2R1bGVzCi0gICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgIGZvciBmaW5kZXIgaW4gbWV0YV9wYXRoOgogICAgICAgICB3aXRoIF9JbXBvcnRMb2NrQ29udGV4dCgpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGZpbmRfc3BlYyA9IGZpbmRlci5maW5kX3NwZWMKQEAgLTkyNSw2ICs5MTQsOSBAQAogICAgIGlmIGxldmVsID4gMDoKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFja2FnZSwgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignX19wYWNrYWdlX18gbm90IHNldCB0byBhIHN0cmluZycpCisgICAgICAgIGVsaWYgbm90IHBhY2thZ2U6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCB3aXRoIG5vIGtub3duIHBhcmVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFja2FnZScpCiAgICAgICAgIGVsaWYgcGFja2FnZSBub3QgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICBtc2cgPSAoJ1BhcmVudCBtb2R1bGUgeyFyfSBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAnCiAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCcpCkBAIC05NTAsMTAgKzk0MiwxMCBAQAogICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuX19wYXRoX18KICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsgeyFyfSBpcyBub3QgYSBwYWNrYWdlJykuZm9ybWF0KG5hbWUsIHBhcmVudCkKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1uYW1lKSBmcm9tIE5vbmUKKyAgICAgICAgICAgIHJhaXNlIE1vZHVsZU5vdEZvdW5kRXJyb3IobXNnLCBuYW1lPW5hbWUpIGZyb20gTm9uZQogICAgIHNwZWMgPSBfZmluZF9zcGVjKG5hbWUsIHBhdGgpCiAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihfRVJSX01TRy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKKyAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcihfRVJSX01TRy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKICAgICBlbHNlOgogICAgICAgICBtb2R1bGUgPSBfbG9hZF91bmxvY2tlZChzcGVjKQogICAgIGlmIHBhcmVudDoKQEAgLTk4OSwxMCArOTgxLDExIEBACiAgICAgICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKICAgICAgICAgbWVzc2FnZSA9ICgnaW1wb3J0IG9mIHt9IGhhbHRlZDsgJwogICAgICAgICAgICAgICAgICAgICdOb25lIGluIHN5cy5tb2R1bGVzJy5mb3JtYXQobmFtZSkpCi0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKKyAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcihtZXNzYWdlLCBuYW1lPW5hbWUpCiAgICAgX2xvY2tfdW5sb2NrX21vZHVsZShuYW1lKQogICAgIHJldHVybiBtb2R1bGUKIAorCiBkZWYgX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBpbXBvcnRfKToKICAgICAiIiJGaWd1cmUgb3V0IHdoYXQgX19pbXBvcnRfXyBzaG91bGQgcmV0dXJuLgogCkBAIC0xMDE0LDEzICsxMDA3LDEyIEBACiAgICAgICAgICAgICAgICAgZnJvbV9uYW1lID0gJ3t9Lnt9Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fLCB4KQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChpbXBvcnRfLCBmcm9tX25hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZGljdGF0ZXMgd2UgaWdub3JlIGZhaWxlZAogICAgICAgICAgICAgICAgICAgICAjIGltcG9ydHMgdHJpZ2dlcmVkIGJ5IGZyb21saXN0IGZvciBtb2R1bGVzIHRoYXQgZG9uJ3QKICAgICAgICAgICAgICAgICAgICAgIyBleGlzdC4KLSAgICAgICAgICAgICAgICAgICAgaWYgc3RyKGV4Yykuc3RhcnRzd2l0aChfRVJSX01TR19QUkVGSVgpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gZnJvbV9uYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09IGZyb21fbmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgcmV0dXJuIG1vZHVsZQogCkBAIC0xMDMzLDcgKzEwMjUsMTkgQEAKIAogICAgICIiIgogICAgIHBhY2thZ2UgPSBnbG9iYWxzLmdldCgnX19wYWNrYWdlX18nKQotICAgIGlmIHBhY2thZ2UgaXMgTm9uZToKKyAgICBzcGVjID0gZ2xvYmFscy5nZXQoJ19fc3BlY19fJykKKyAgICBpZiBwYWNrYWdlIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBwYWNrYWdlICE9IHNwZWMucGFyZW50OgorICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oIl9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmIih7cGFja2FnZSFyfSAhPSB7c3BlYy5wYXJlbnQhcn0pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydFdhcm5pbmcsIHN0YWNrbGV2ZWw9MykKKyAgICAgICAgcmV0dXJuIHBhY2thZ2UKKyAgICBlbGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBzcGVjLnBhcmVudAorICAgIGVsc2U6CisgICAgICAgIF93YXJuaW5ncy53YXJuKCJjYW4ndCByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvciBfX3BhY2thZ2VfXywgIgorICAgICAgICAgICAgICAgICAgICAgICAiZmFsbGluZyBiYWNrIG9uIF9fbmFtZV9fIGFuZCBfX3BhdGhfXyIsCisgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydFdhcm5pbmcsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgcGFja2FnZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KICAgICAgICAgaWYgJ19fcGF0aF9fJyBub3QgaW4gZ2xvYmFsczoKICAgICAgICAgICAgIHBhY2thZ2UgPSBwYWNrYWdlLnJwYXJ0aXRpb24oJy4nKVswXQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5CmluZGV4IGU1NGQ2OTEuLjVjYjU4YWIgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQorKysgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKQEAgLTEzNywxMCArMTM3LDYgQEAKICMgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCiAjIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCiAjCi0jIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKLSMgLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgotIyBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KLSMKICMgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KICMgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQogIyAxMC4KQEAgLTIzMSw2ICsyMjcsMTggQEAKICMgICAgIFB5dGhvbiAzLjViMiAgMzM0MCAoZml4IGRpY3Rpb25hcnkgZGlzcGxheSBldmFsdWF0aW9uIG9yZGVyICMxMTIwNSkKICMgICAgIFB5dGhvbiAzLjViMiAgMzM1MCAoYWRkIEdFVF9ZSUVMRF9GUk9NX0lURVIgb3Bjb2RlICMyNDQwMCkKICMgICAgIFB5dGhvbiAzLjUuMiAgMzM1MSAoZml4IEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMIG9wY29kZSAjMjcyODYpCisjICAgICBQeXRob24gMy42YTAgIDMzNjAgKGFkZCBGT1JNQVRfVkFMVUUgb3Bjb2RlICMyNTQ4MworIyAgICAgUHl0aG9uIDMuNmEwICAzMzYxIChsaW5lbm8gZGVsdGEgb2YgY29kZS5jb19sbm90YWIgYmVjb21lcyBzaWduZWQpCisjICAgICBQeXRob24gMy42YTEgIDMzNzAgKDE2IGJpdCB3b3JkY29kZSkKKyMgICAgIFB5dGhvbiAzLjZhMSAgMzM3MSAoYWRkIEJVSUxEX0NPTlNUX0tFWV9NQVAgb3Bjb2RlICMyNzE0MCkKKyMgICAgIFB5dGhvbiAzLjZhMSAgMzM3MiAoTUFLRV9GVU5DVElPTiBzaW1wbGlmaWNhdGlvbiwgcmVtb3ZlIE1BS0VfQ0xPU1VSRQorIyAgICAgICAgICAgICAgICAgICAgICAgICAjMjcwOTUpCisjICAgICBQeXRob24gMy42YjEgIDMzNzMgKGFkZCBCVUlMRF9TVFJJTkcgb3Bjb2RlICMyNzA3OCkKKyMgICAgIFB5dGhvbiAzLjZiMSAgMzM3NSAoYWRkIFNFVFVQX0FOTk9UQVRJT05TIGFuZCBTVE9SRV9BTk5PVEFUSU9OIG9wY29kZXMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIzI3OTg1KQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzc2IChzaW1wbGlmeSBDQUxMX0ZVTkNUSU9OcyAmIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMKQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzc3IChzZXQgX19jbGFzc19fIGNlbGwgZnJvbSB0eXBlLl9fbmV3X18gIzIzNzIyKQorIyAgICAgUHl0aG9uIDMuNmIyICAzMzc4IChhZGQgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCAjMjgyNTcpCiAjCiAjIE1BR0lDIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBieXRlY29kZSBlbWl0dGVkIGJ5IHRoZSBjb21waWxlciBtYXkgbm8KICMgbG9uZ2VyIGJlIHVuZGVyc3Rvb2QgYnkgb2xkZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBldmFsIGxvb3AgKHVzdWFsbHkKQEAgLTIzOSw3ICsyNDcsNyBAQAogIyBXaGVuZXZlciBNQUdJQ19OVU1CRVIgaXMgY2hhbmdlZCwgdGhlIHJhbmdlcyBpbiB0aGUgbWFnaWNfdmFsdWVzIGFycmF5CiAjIGluIFBDL2xhdW5jaGVyLmMgbXVzdCBhbHNvIGJlIHVwZGF0ZWQuCiAKLU1BR0lDX05VTUJFUiA9ICgzMzUxKS50b19ieXRlcygyLCAnbGl0dGxlJykgKyBiJ1xyXG4nCitNQUdJQ19OVU1CRVIgPSAoMzM3OCkudG9fYnl0ZXMoMiwgJ2xpdHRsZScpICsgYidcclxuJwogX1JBV19NQUdJQ19OVU1CRVIgPSBpbnQuZnJvbV9ieXRlcyhNQUdJQ19OVU1CRVIsICdsaXR0bGUnKSAgIyBGb3IgaW1wb3J0LmMKIAogX1BZQ0FDSEUgPSAnX19weWNhY2hlX18nCkBAIC0yNzYsNiArMjg0LDcgQEAKICAgICAgICAgICAgIG1lc3NhZ2UgPSAnZGVidWdfb3ZlcnJpZGUgb3Igb3B0aW1pemF0aW9uIG11c3QgYmUgc2V0IHRvIE5vbmUnCiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobWVzc2FnZSkKICAgICAgICAgb3B0aW1pemF0aW9uID0gJycgaWYgZGVidWdfb3ZlcnJpZGUgZWxzZSAxCisgICAgcGF0aCA9IF9vcy5mc3BhdGgocGF0aCkKICAgICBoZWFkLCB0YWlsID0gX3BhdGhfc3BsaXQocGF0aCkKICAgICBiYXNlLCBzZXAsIHJlc3QgPSB0YWlsLnJwYXJ0aXRpb24oJy4nKQogICAgIHRhZyA9IHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKQEAgLTMwNiw2ICszMTUsNyBAQAogICAgICIiIgogICAgIGlmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBwYXRoID0gX29zLmZzcGF0aChwYXRoKQogICAgIGhlYWQsIHB5Y2FjaGVfZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChwYXRoKQogICAgIGhlYWQsIHB5Y2FjaGUgPSBfcGF0aF9zcGxpdChoZWFkKQogICAgIGlmIHB5Y2FjaGUgIT0gX1BZQ0FDSEU6CkBAIC0zNzEsMTQgKzM4MSw2IEBACiAgICAgcmV0dXJuIG1vZGUKIAogCi1kZWYgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlLCAqYXJncywgdmVyYm9zaXR5PTEpOgotICAgICIiIlByaW50IHRoZSBtZXNzYWdlIHRvIHN0ZGVyciBpZiAtdi9QWVRIT05WRVJCT1NFIGlzIHR1cm5lZCBvbi4iIiIKLSAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZSA+PSB2ZXJib3NpdHk6Ci0gICAgICAgIGlmIG5vdCBtZXNzYWdlLnN0YXJ0c3dpdGgoKCcjJywgJ2ltcG9ydCAnKSk6Ci0gICAgICAgICAgICBtZXNzYWdlID0gJyMgJyArIG1lc3NhZ2UKLSAgICAgICAgcHJpbnQobWVzc2FnZS5mb3JtYXQoKmFyZ3MpLCBmaWxlPXN5cy5zdGRlcnIpCi0KLQogZGVmIF9jaGVja19uYW1lKG1ldGhvZCk6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBtb2R1bGUgYmVpbmcgcmVxdWVzdGVkIG1hdGNoZXMgdGhlIG9uZSB0aGUKICAgICBsb2FkZXIgY2FuIGhhbmRsZS4KQEAgLTQ0OCwxNSArNDUwLDE1IEBACiAgICAgcmF3X3NpemUgPSBkYXRhWzg6MTJdCiAgICAgaWYgbWFnaWMgIT0gTUFHSUNfTlVNQkVSOgogICAgICAgICBtZXNzYWdlID0gJ2JhZCBtYWdpYyBudW1iZXIgaW4geyFyfTogeyFyfScuZm9ybWF0KG5hbWUsIG1hZ2ljKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQogICAgIGVsaWYgbGVuKHJhd190aW1lc3RhbXApICE9IDQ6CiAgICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyB0aW1lc3RhbXAgaW4geyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCiAgICAgZWxpZiBsZW4ocmF3X3NpemUpICE9IDQ6CiAgICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyBzaXplIG9mIHNvdXJjZSBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKICAgICBpZiBzb3VyY2Vfc3RhdHMgaXMgbm90IE5vbmU6CiAgICAgICAgIHRyeToKQEAgLTQ2Niw3ICs0NjgsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdieXRlY29kZSBpcyBzdGFsZSBmb3IgeyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvdXJjZV9zaXplID0gc291cmNlX3N0YXRzWydzaXplJ10gJiAweEZGRkZGRkZGCkBAIC00ODMsNyArNDg1LDcgQEAKICAgICAiIiJDb21waWxlIGJ5dGVjb2RlIGFzIHJldHVybmVkIGJ5IF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoKS4iIiIKICAgICBjb2RlID0gbWFyc2hhbC5sb2FkcyhkYXRhKQogICAgIGlmIGlzaW5zdGFuY2UoY29kZSwgX2NvZGVfdHlwZSk6Ci0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIGJ5dGVjb2RlX3BhdGgpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgaWYgc291cmNlX3BhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBfaW1wLl9maXhfY29fZmlsZW5hbWUoY29kZSwgc291cmNlX3BhdGgpCiAgICAgICAgIHJldHVybiBjb2RlCkBAIC01NDEsNiArNTQzLDggQEAKICAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgbG9jYXRpb24gPSBfb3MuZnNwYXRoKGxvY2F0aW9uKQogCiAgICAgIyBJZiB0aGUgbG9jYXRpb24gaXMgb24gdGhlIGZpbGVzeXN0ZW0sIGJ1dCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0LAogICAgICMgd2UgY291bGQgcmV0dXJuIE5vbmUgaGVyZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBub3QKQEAgLTYxMCw3ICs2MTQsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWQogICAgICAgICBrZXkgPSByZWdpc3RyeV9rZXkuZm9ybWF0KGZ1bGxuYW1lPWZ1bGxuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj0nJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggY2xzLl9vcGVuX3JlZ2lzdHJ5KGtleSkgYXMgaGtleToKICAgICAgICAgICAgICAgICBmaWxlcGF0aCA9IF93aW5yZWcuUXVlcnlWYWx1ZShoa2V5LCAnJykKQEAgLTY3Myw2ICs2NzcsNyBAQAogICAgICAgICBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZXhlYywgY29kZSwgbW9kdWxlLl9fZGljdF9fKQogCiAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiVGhpcyBtb2R1bGUgaXMgZGVwcmVjYXRlZC4iIiIKICAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpCiAKIApAQCAtNzY2LDIxICs3NzEsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30gbWF0Y2hlcyB7fScsIGJ5dGVjb2RlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb21waWxlX2J5dGVjb2RlKGJ5dGVzX2RhdGEsIG5hbWU9ZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aD1ieXRlY29kZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoPXNvdXJjZV9wYXRoKQogICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQogICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYuc291cmNlX3RvX2NvZGUoc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsIHNvdXJjZV9wYXRoKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKICAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKICAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgogICAgICAgICAgICAgZGF0YSA9IF9jb2RlX3RvX2J5dGVjb2RlKGNvZGVfb2JqZWN0LCBzb3VyY2VfbXRpbWUsCiAgICAgICAgICAgICAgICAgICAgIGxlbihzb3VyY2VfYnl0ZXMpKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnd3JvdGUgeyFyfScsIGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHJldHVybiBjb2RlX29iamVjdApAQCAtODYwLDE0ICs4NjUsMTYgQEAKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0CiAgICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQorICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LCBleGMpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF93cml0ZV9hdG9taWMocGF0aCwgZGF0YSwgX21vZGUpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjcmVhdGVkIHshcn0nLCBwYXRoKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjcmVhdGVkIHshcn0nLCBwYXRoKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAjIFNhbWUgYXMgYWJvdmU6IGp1c3QgZG9uJ3Qgd3JpdGUgdGhlIGJ5dGVjb2RlLgotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGF0aCwgZXhjKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YykKIAogCiBjbGFzcyBTb3VyY2VsZXNzRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKQEAgLTkxMiwxNCArOTE5LDE0IEBACiAgICAgICAgICIiIkNyZWF0ZSBhbiB1bml0aWFsaXplZCBleHRlbnNpb24gbW9kdWxlIiIiCiAgICAgICAgIG1vZHVsZSA9IF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCgKICAgICAgICAgICAgIF9pbXAuY3JlYXRlX2R5bmFtaWMsIHNwZWMpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBsb2FkZWQgZnJvbSB7IXJ9JywKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gbG9hZGVkIGZyb20geyFyfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy5uYW1lLCBzZWxmLnBhdGgpCiAgICAgICAgIHJldHVybiBtb2R1bGUKIAogICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuIGV4dGVuc2lvbiBtb2R1bGUiIiIKICAgICAgICAgX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuZXhlY19keW5hbWljLCBtb2R1bGUpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBleGVjdXRlZCBmcm9tIHshcn0nLAorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBleGVjdXRlZCBmcm9tIHshcn0nLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZSwgc2VsZi5wYXRoKQogCiAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgpAQCAtOTg1LDYgKzk5Miw5IEBACiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9yZWNhbGN1bGF0ZSgpKQogCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCBwYXRoKToKKyAgICAgICAgc2VsZi5fcGF0aFtpbmRleF0gPSBwYXRoCisKICAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9yZWNhbGN1bGF0ZSgpKQogCkBAIC0xMDM0LDcgKzEwNDQsOCBAQAogCiAgICAgICAgICIiIgogICAgICAgICAjIFRoZSBpbXBvcnQgc3lzdGVtIG5ldmVyIGNhbGxzIHRoaXMgbWV0aG9kLgotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsIHNlbGYuX3BhdGgpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnbmFtZXNwYWNlIG1vZHVsZSBsb2FkZWQgd2l0aCBwYXRoIHshcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGF0aCkKICAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpCiAKIApAQCAtMTA1NCwxMSArMTA2NSw3IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX3BhdGhfaG9va3MoY2xzLCBwYXRoKToKLSAgICAgICAgIiIiU2VhcmNoIHNlcXVlbmNlIG9mIGhvb2tzIGZvciBhIGZpbmRlciBmb3IgJ3BhdGgnLgotCi0gICAgICAgIElmICdob29rcycgaXMgZmFsc2UgdGhlbiB1c2Ugc3lzLnBhdGhfaG9va3MuCi0KLSAgICAgICAgIiIiCisgICAgICAgICIiIlNlYXJjaCBzeXMucGF0aF9ob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4iIiIKICAgICAgICAgaWYgc3lzLnBhdGhfaG9va3MgaXMgbm90IE5vbmUgYW5kIG5vdCBzeXMucGF0aF9ob29rczoKICAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMucGF0aF9ob29rcyBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCiAgICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgpAQCAtMTE0MCw4ICsxMTQ3LDEwIEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKKyAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBzcGVjIGZvciAnZnVsbG5hbWUnIG9uIHN5cy5wYXRoIG9yICdwYXRoJy4KKworICAgICAgICBUaGUgc2VhcmNoIGlzIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAogICAgICAgICBzcGVjID0gY2xzLl9nZXRfc3BlYyhmdWxsbmFtZSwgcGF0aCwgdGFyZ2V0KQpAQCAtMTIyMSw4ICsxMjMwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1zbXNsKQogCiAgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICAiIiJUcnkgdG8gZmluZCBhIHNwZWMgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLiAgUmV0dXJucyB0aGUKLSAgICAgICAgbWF0Y2hpbmcgc3BlYywgb3IgTm9uZSBpZiBub3QgZm91bmQuIiIiCisgICAgICAgICIiIlRyeSB0byBmaW5kIGEgc3BlYyBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbWF0Y2hpbmcgc3BlYywgb3IgTm9uZSBpZiBub3QgZm91bmQuCisgICAgICAgICIiIgogICAgICAgICBpc19uYW1lc3BhY2UgPSBGYWxzZQogICAgICAgICB0YWlsX21vZHVsZSA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVsyXQogICAgICAgICB0cnk6CkBAIC0xMjU0LDEyICsxMjY1LDEzIEBACiAgICAgICAgICMgQ2hlY2sgZm9yIGEgZmlsZSB3LyBhIHByb3BlciBzdWZmaXggZXhpc3RzLgogICAgICAgICBmb3Igc3VmZml4LCBsb2FkZXJfY2xhc3MgaW4gc2VsZi5fbG9hZGVyczoKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSArIHN1ZmZpeCkKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3RyeWluZyB7fScuZm9ybWF0KGZ1bGxfcGF0aCksIHZlcmJvc2l0eT0yKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd0cnlpbmcge30nLCBmdWxsX3BhdGgsIHZlcmJvc2l0eT0yKQogICAgICAgICAgICAgaWYgY2FjaGVfbW9kdWxlICsgc3VmZml4IGluIGNhY2hlOgogICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X3NwZWMobG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgZnVsbF9wYXRoLCBOb25lLCB0YXJnZXQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCB0YXJnZXQpCiAgICAgICAgIGlmIGlzX25hbWVzcGFjZToKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3Bvc3NpYmxlIG5hbWVzcGFjZSBmb3Ige30nLmZvcm1hdChiYXNlX3BhdGgpKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdwb3NzaWJsZSBuYW1lc3BhY2UgZm9yIHt9JywgYmFzZV9wYXRoKQogICAgICAgICAgICAgc3BlYyA9IF9ib290c3RyYXAuTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKICAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBbYmFzZV9wYXRoXQogICAgICAgICAgICAgcmV0dXJuIHNwZWMKQEAgLTE0MzAsOCArMTQ0MiwzIEBACiAgICAgaWYgX29zLl9fbmFtZV9fID09ICdudCc6CiAgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFdpbmRvd3NSZWdpc3RyeUZpbmRlcikKICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChQYXRoRmluZGVyKQotCi0gICAgIyBYWFggV2UgZXhwb3NlIGEgY291cGxlIG9mIGNsYXNzZXMgaW4gX2Jvb3RzdHJhcCBmb3IgdGhlIHNha2Ugb2YKLSAgICAjIGEgc2V0dXB0b29scyBidWcgKGh0dHBzOi8vYml0YnVja2V0Lm9yZy9weXBhL3NldHVwdG9vbHMvaXNzdWUvMzc4KS4KLSAgICBfYm9vdHN0cmFwX21vZHVsZS5GaWxlRmluZGVyID0gRmlsZUZpbmRlcgotICAgIF9ib290c3RyYXBfbW9kdWxlLlNvdXJjZUZpbGVMb2FkZXIgPSBTb3VyY2VGaWxlTG9hZGVyCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKaW5kZXggZTFmYTA3YS4uNmJkZjBkNCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMjIsOCArMjIsOCBAQAogICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJy4nKToKICAgICAgICAgcmV0dXJuIG5hbWUKICAgICBlbGlmIG5vdCBwYWNrYWdlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhIHJlbGF0aXZlIG5hbWUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICcobm8gbGVhZGluZyBkb3QpJy5mb3JtYXQobmFtZSkpCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZidubyBwYWNrYWdlIHNwZWNpZmllZCBmb3Ige3JlcHIobmFtZSl9ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKHJlcXVpcmVkIGZvciByZWxhdGl2ZSBtb2R1bGUgbmFtZXMpJykKICAgICBsZXZlbCA9IDAKICAgICBmb3IgY2hhcmFjdGVyIGluIG5hbWU6CiAgICAgICAgIGlmIGNoYXJhY3RlciAhPSAnLic6CkBAIC0yMDQsMTEgKzIwNCw2IEBACiAgICAgcmV0dXJuIG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIKIAogCi1jbGFzcyBfTW9kdWxlKHR5cGVzLk1vZHVsZVR5cGUpOgotCi0gICAgIiIiQSBzdWJjbGFzcyBvZiB0aGUgbW9kdWxlIHR5cGUgdG8gYWxsb3cgX19jbGFzc19fIG1hbmlwdWxhdGlvbi4iIiIKLQotCiBjbGFzcyBfTGF6eU1vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKIAogICAgICIiIkEgc3ViY2xhc3Mgb2YgdGhlIG1vZHVsZSB0eXBlIHdoaWNoIHRyaWdnZXJzIGxvYWRpbmcgdXBvbiBhdHRyaWJ1dGUgYWNjZXNzLiIiIgpAQCAtMjE4LDEzICsyMTMsMTQgQEAKICAgICAgICAgIyBBbGwgbW9kdWxlIG1ldGFkYXRhIG11c3QgYmUgZ2FybmVyZWQgZnJvbSBfX3NwZWNfXyBpbiBvcmRlciB0byBhdm9pZAogICAgICAgICAjIHVzaW5nIG11dGF0ZWQgdmFsdWVzLgogICAgICAgICAjIFN0b3AgdHJpZ2dlcmluZyB0aGlzIG1ldGhvZC4KLSAgICAgICAgc2VsZi5fX2NsYXNzX18gPSBfTW9kdWxlCisgICAgICAgIHNlbGYuX19jbGFzc19fID0gdHlwZXMuTW9kdWxlVHlwZQogICAgICAgICAjIEdldCB0aGUgb3JpZ2luYWwgbmFtZSB0byBtYWtlIHN1cmUgbm8gb2JqZWN0IHN1YnN0aXR1dGlvbiBvY2N1cnJlZAogICAgICAgICAjIGluIHN5cy5tb2R1bGVzLgogICAgICAgICBvcmlnaW5hbF9uYW1lID0gc2VsZi5fX3NwZWNfXy5uYW1lCiAgICAgICAgICMgRmlndXJlIG91dCBleGFjdGx5IHdoYXQgYXR0cmlidXRlcyB3ZXJlIG11dGF0ZWQgYmV0d2VlbiB0aGUgY3JlYXRpb24KICAgICAgICAgIyBvZiB0aGUgbW9kdWxlIGFuZCBub3cuCi0gICAgICAgIGF0dHJzX3RoZW4gPSBzZWxmLl9fc3BlY19fLmxvYWRlcl9zdGF0ZQorICAgICAgICBhdHRyc190aGVuID0gc2VsZi5fX3NwZWNfXy5sb2FkZXJfc3RhdGVbJ19fZGljdF9fJ10KKyAgICAgICAgb3JpZ2luYWxfdHlwZSA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlWydfX2NsYXNzX18nXQogICAgICAgICBhdHRyc19ub3cgPSBzZWxmLl9fZGljdF9fCiAgICAgICAgIGF0dHJzX3VwZGF0ZWQgPSB7fQogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBhdHRyc19ub3cuaXRlbXMoKToKQEAgLTIzOSw5ICsyMzUsOSBAQAogICAgICAgICAjIG9iamVjdCB3YXMgcHV0IGludG8gc3lzLm1vZHVsZXMuCiAgICAgICAgIGlmIG9yaWdpbmFsX25hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICBpZiBpZChzZWxmKSAhPSBpZChzeXMubW9kdWxlc1tvcmlnaW5hbF9uYW1lXSk6Ci0gICAgICAgICAgICAgICAgbXNnID0gKCdtb2R1bGUgb2JqZWN0IGZvciB7IXJ9IHN1YnN0aXR1dGVkIGluIHN5cy5tb2R1bGVzICcKLSAgICAgICAgICAgICAgICAgICAgICAgJ2R1cmluZyBhIGxhenkgbG9hZCcpCi0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cuZm9ybWF0KG9yaWdpbmFsX25hbWUpKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJtb2R1bGUgb2JqZWN0IGZvciB7b3JpZ2luYWxfbmFtZSFyfSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnN0aXR1dGVkIGluIHN5cy5tb2R1bGVzIGR1cmluZyBhIGxhenkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2FkIikKICAgICAgICAgIyBVcGRhdGUgYWZ0ZXIgbG9hZGluZyBzaW5jZSB0aGF0J3Mgd2hhdCB3b3VsZCBoYXBwZW4gaW4gYW4gZWFnZXIKICAgICAgICAgIyBsb2FkaW5nIHNpdHVhdGlvbi4KICAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoYXR0cnNfdXBkYXRlZCkKQEAgLTI3NSw4ICsyNzEsNyBAQAogICAgICAgICBzZWxmLmxvYWRlciA9IGxvYWRlcgogCiAgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIG1vZHVsZSB3aGljaCBjYW4gaGF2ZSBpdHMgX19jbGFzc19fIG1hbmlwdWxhdGVkLiIiIgotICAgICAgICByZXR1cm4gX01vZHVsZShzcGVjLm5hbWUpCisgICAgICAgIHJldHVybiBzZWxmLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCiAKICAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKICAgICAgICAgIiIiTWFrZSB0aGUgbW9kdWxlIGxvYWQgbGF6aWx5LiIiIgpAQCAtMjg2LDUgKzI4MSw4IEBACiAgICAgICAgICMgb24gYW4gb2JqZWN0IHdvdWxkIGhhdmUgdHJpZ2dlcmVkIHRoZSBsb2FkLAogICAgICAgICAjIGUuZy4gYGBtb2R1bGUuX19zcGVjX18ubG9hZGVyID0gTm9uZWBgIHdvdWxkIHRyaWdnZXIgYSBsb2FkIGZyb20KICAgICAgICAgIyB0cnlpbmcgdG8gYWNjZXNzIG1vZHVsZS5fX3NwZWNfXy4KLSAgICAgICAgbW9kdWxlLl9fc3BlY19fLmxvYWRlcl9zdGF0ZSA9IG1vZHVsZS5fX2RpY3RfXy5jb3B5KCkKKyAgICAgICAgbG9hZGVyX3N0YXRlID0ge30KKyAgICAgICAgbG9hZGVyX3N0YXRlWydfX2RpY3RfXyddID0gbW9kdWxlLl9fZGljdF9fLmNvcHkoKQorICAgICAgICBsb2FkZXJfc3RhdGVbJ19fY2xhc3NfXyddID0gbW9kdWxlLl9fY2xhc3NfXworICAgICAgICBtb2R1bGUuX19zcGVjX18ubG9hZGVyX3N0YXRlID0gbG9hZGVyX3N0YXRlCiAgICAgICAgIG1vZHVsZS5fX2NsYXNzX18gPSBfTGF6eU1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL2luc3BlY3QucHkgYi9MaWIvaW5zcGVjdC5weQppbmRleCBjYTFkNTUxLi4yMzgwMDk1IDEwMDY0NAotLS0gYS9MaWIvaW5zcGVjdC5weQorKysgYi9MaWIvaW5zcGVjdC5weQpAQCAtMTYsNyArMTYsNyBAQAogICAgIGdldG1vZHVsZSgpIC0gZGV0ZXJtaW5lIHRoZSBtb2R1bGUgdGhhdCBhbiBvYmplY3QgY2FtZSBmcm9tCiAgICAgZ2V0Y2xhc3N0cmVlKCkgLSBhcnJhbmdlIGNsYXNzZXMgc28gYXMgdG8gcmVwcmVzZW50IHRoZWlyIGhpZXJhcmNoeQogCi0gICAgZ2V0YXJnc3BlYygpLCBnZXRhcmd2YWx1ZXMoKSwgZ2V0Y2FsbGFyZ3MoKSAtIGdldCBpbmZvIGFib3V0IGZ1bmN0aW9uIGFyZ3VtZW50cworICAgIGdldGFyZ3ZhbHVlcygpLCBnZXRjYWxsYXJncygpIC0gZ2V0IGluZm8gYWJvdXQgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgZ2V0ZnVsbGFyZ3NwZWMoKSAtIHNhbWUsIHdpdGggc3VwcG9ydCBmb3IgUHl0aG9uIDMgZmVhdHVyZXMKICAgICBmb3JtYXRhcmdzcGVjKCksIGZvcm1hdGFyZ3ZhbHVlcygpIC0gZm9ybWF0IGFuIGFyZ3VtZW50IHNwZWMKICAgICBnZXRvdXRlcmZyYW1lcygpLCBnZXRpbm5lcmZyYW1lcygpIC0gZ2V0IGluZm8gYWJvdXQgZnJhbWVzCkBAIC0xODUsNiArMTg1LDEzIEBACiAgICAgcmV0dXJuIGJvb2woKGlzZnVuY3Rpb24ob2JqZWN0KSBvciBpc21ldGhvZChvYmplY3QpKSBhbmQKICAgICAgICAgICAgICAgICBvYmplY3QuX19jb2RlX18uY29fZmxhZ3MgJiBDT19DT1JPVVRJTkUpCiAKK2RlZiBpc2FzeW5jZ2VuZnVuY3Rpb24ob2JqZWN0KToKKyAgICByZXR1cm4gYm9vbCgoaXNmdW5jdGlvbihvYmplY3QpIG9yIGlzbWV0aG9kKG9iamVjdCkpIGFuZAorICAgICAgICAgICAgICAgIG9iamVjdC5fX2NvZGVfXy5jb19mbGFncyAmIENPX0FTWU5DX0dFTkVSQVRPUikKKworZGVmIGlzYXN5bmNnZW4ob2JqZWN0KToKKyAgICByZXR1cm4gaXNpbnN0YW5jZShvYmplY3QsIHR5cGVzLkFzeW5jR2VuZXJhdG9yVHlwZSkKKwogZGVmIGlzZ2VuZXJhdG9yKG9iamVjdCk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdlbmVyYXRvci4KIApAQCAtNjIzLDIzICs2MzAsNiBAQAogICAgIHJhaXNlIFR5cGVFcnJvcigneyFyfSBpcyBub3QgYSBtb2R1bGUsIGNsYXNzLCBtZXRob2QsICcKICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uLCB0cmFjZWJhY2ssIGZyYW1lLCBvciBjb2RlIG9iamVjdCcuZm9ybWF0KG9iamVjdCkpCiAKLU1vZHVsZUluZm8gPSBuYW1lZHR1cGxlKCdNb2R1bGVJbmZvJywgJ25hbWUgc3VmZml4IG1vZGUgbW9kdWxlX3R5cGUnKQotCi1kZWYgZ2V0bW9kdWxlaW5mbyhwYXRoKToKLSAgICAiIiJHZXQgdGhlIG1vZHVsZSBuYW1lLCBzdWZmaXgsIG1vZGUsIGFuZCBtb2R1bGUgdHlwZSBmb3IgYSBnaXZlbiBmaWxlLiIiIgotICAgIHdhcm5pbmdzLndhcm4oJ2luc3BlY3QuZ2V0bW9kdWxlaW5mbygpIGlzIGRlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAyKQotICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICBpbXBvcnQgaW1wCi0gICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCi0gICAgc3VmZml4ZXMgPSBbKC1sZW4oc3VmZml4KSwgc3VmZml4LCBtb2RlLCBtdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbW9kZSwgbXR5cGUgaW4gaW1wLmdldF9zdWZmaXhlcygpXQotICAgIHN1ZmZpeGVzLnNvcnQoKSAjIHRyeSBsb25nZXN0IHN1ZmZpeGVzIGZpcnN0LCBpbiBjYXNlIHRoZXkgb3ZlcmxhcAotICAgIGZvciBuZWdsZW4sIHN1ZmZpeCwgbW9kZSwgbXR5cGUgaW4gc3VmZml4ZXM6Ci0gICAgICAgIGlmIGZpbGVuYW1lW25lZ2xlbjpdID09IHN1ZmZpeDoKLSAgICAgICAgICAgIHJldHVybiBNb2R1bGVJbmZvKGZpbGVuYW1lWzpuZWdsZW5dLCBzdWZmaXgsIG1vZGUsIG10eXBlKQotCiBkZWYgZ2V0bW9kdWxlbmFtZShwYXRoKToKICAgICAiIiJSZXR1cm4gdGhlIG1vZHVsZSBuYW1lIGZvciBhIGdpdmVuIGZpbGUsIG9yIE5vbmUuIiIiCiAgICAgZm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCkBAIC0xMDYwLDggKzEwNTAsNiBAQAogICAgICdrd29ubHlkZWZhdWx0cycgaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgbmFtZXMgZnJvbSBrd29ubHlhcmdzIHRvIGRlZmF1bHRzLgogICAgICdhbm5vdGF0aW9ucycgaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgYXJndW1lbnQgbmFtZXMgdG8gYW5ub3RhdGlvbnMuCiAKLSAgICBUaGUgZmlyc3QgZm91ciBpdGVtcyBpbiB0aGUgdHVwbGUgY29ycmVzcG9uZCB0byBnZXRhcmdzcGVjKCkuCi0KICAgICBUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSBpbnNwZWN0LnNpZ25hdHVyZSgpIGluc3RlYWQuCiAgICAgIiIiCiAKQEAgLTExNzIsOCArMTE2MCw3IEBACiAgICAgICAgICAgICAgICAgICBmb3JtYXR2YWx1ZT1sYW1iZGEgdmFsdWU6ICc9JyArIHJlcHIodmFsdWUpLAogICAgICAgICAgICAgICAgICAgZm9ybWF0cmV0dXJucz1sYW1iZGEgdGV4dDogJyAtPiAnICsgdGV4dCwKICAgICAgICAgICAgICAgICAgIGZvcm1hdGFubm90YXRpb249Zm9ybWF0YW5ub3RhdGlvbik6Ci0gICAgIiIiRm9ybWF0IGFuIGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IGdldGFyZ3NwZWMKLSAgICBvciBnZXRmdWxsYXJnc3BlYy4KKyAgICAiIiJGb3JtYXQgYW4gYXJndW1lbnQgc3BlYyBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgZ2V0ZnVsbGFyZ3NwZWMuCiAKICAgICBUaGUgZmlyc3Qgc2V2ZW4gYXJndW1lbnRzIGFyZSAoYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLAogICAgIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm5vdGF0aW9ucykuICBUaGUgb3RoZXIgZml2ZSBhcmd1bWVudHMKQEAgLTI0MTUsNiArMjQwMiwyMCBAQAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJuYW1lIG11c3QgYmUgYSBzdHIsIG5vdCBhIHshcn0iLmZvcm1hdChuYW1lKSkKIAorICAgICAgICBpZiBuYW1lWzBdID09ICcuJyBhbmQgbmFtZVsxOl0uaXNkaWdpdCgpOgorICAgICAgICAgICAgIyBUaGVzZSBhcmUgaW1wbGljaXQgYXJndW1lbnRzIGdlbmVyYXRlZCBieSBjb21wcmVoZW5zaW9ucy4gSW4KKyAgICAgICAgICAgICMgb3JkZXIgdG8gcHJvdmlkZSBhIGZyaWVuZGxpZXIgaW50ZXJmYWNlIHRvIHVzZXJzLCB3ZSByZWNhc3QKKyAgICAgICAgICAgICMgdGhlaXIgbmFtZSBhcyAiaW1wbGljaXROIiBhbmQgdHJlYXQgdGhlbSBhcyBwb3NpdGlvbmFsLW9ubHkuCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAxOTYxMS4KKyAgICAgICAgICAgIGlmIGtpbmQgIT0gX1BPU0lUSU9OQUxfT1JfS0VZV09SRDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAnaW1wbGljaXQgYXJndW1lbnRzIG11c3QgYmUgcGFzc2VkIGluIGFzIHt9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBfUE9TSVRJT05BTF9PUl9LRVlXT1JECisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9raW5kID0gX1BPU0lUSU9OQUxfT05MWQorICAgICAgICAgICAgbmFtZSA9ICdpbXBsaWNpdHt9Jy5mb3JtYXQobmFtZVsxOl0pCisKICAgICAgICAgaWYgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJy5mb3JtYXQobmFtZSkpCiAKZGlmZiAtLWdpdCBhL0xpYi9pby5weSBiL0xpYi9pby5weQppbmRleCBlMDNkYjk3Li45NjhlZTUwIDEwMDY0NAotLS0gYS9MaWIvaW8ucHkKKysrIGIvTGliL2lvLnB5CkBAIC05MCwzICs5MCwxMCBAQAogZm9yIGtsYXNzIGluIChTdHJpbmdJTywgVGV4dElPV3JhcHBlcik6CiAgICAgVGV4dElPQmFzZS5yZWdpc3RlcihrbGFzcykKIGRlbCBrbGFzcworCit0cnk6CisgICAgZnJvbSBfaW8gaW1wb3J0IF9XaW5kb3dzQ29uc29sZUlPCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworZWxzZToKKyAgICBSYXdJT0Jhc2UucmVnaXN0ZXIoX1dpbmRvd3NDb25zb2xlSU8pCmRpZmYgLS1naXQgYS9MaWIvaXBhZGRyZXNzLnB5IGIvTGliL2lwYWRkcmVzcy5weQppbmRleCAxZjkwMDU4Li4yMGYzM2NiIDEwMDY0NAotLS0gYS9MaWIvaXBhZGRyZXNzLnB5CisrKyBiL0xpYi9pcGFkZHJlc3MucHkKQEAgLTYzNiwxMiArNjM2LDEyIEBACiAgICAgICAgIGJyb2FkY2FzdCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQogICAgICAgICBpZiBuID49IDA6CiAgICAgICAgICAgICBpZiBuZXR3b3JrICsgbiA+IGJyb2FkY2FzdDoKLSAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yCisgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcignYWRkcmVzcyBvdXQgb2YgcmFuZ2UnKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NfY2xhc3MobmV0d29yayArIG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBuICs9IDEKICAgICAgICAgICAgIGlmIGJyb2FkY2FzdCArIG4gPCBuZXR3b3JrOgotICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCdhZGRyZXNzIG91dCBvZiByYW5nZScpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhicm9hZGNhc3QgKyBuKQogCiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CmRpZmYgLS1naXQgYS9MaWIvanNvbi9fX2luaXRfXy5weSBiL0xpYi9qc29uL19faW5pdF9fLnB5CmluZGV4IGY3MmIwNTguLjhkY2M2NzggMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL19faW5pdF9fLnB5CisrKyBiL0xpYi9qc29uL19faW5pdF9fLnB5CkBAIC0xMDUsNiArMTA1LDcgQEAKIAogZnJvbSAuZGVjb2RlciBpbXBvcnQgSlNPTkRlY29kZXIsIEpTT05EZWNvZGVFcnJvcgogZnJvbSAuZW5jb2RlciBpbXBvcnQgSlNPTkVuY29kZXIKK2ltcG9ydCBjb2RlY3MKIAogX2RlZmF1bHRfZW5jb2RlciA9IEpTT05FbmNvZGVyKAogICAgIHNraXBrZXlzPUZhbHNlLApAQCAtMTE2LDcgKzExNyw3IEBACiAgICAgZGVmYXVsdD1Ob25lLAogKQogCi1kZWYgZHVtcChvYmosIGZwLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsCitkZWYgZHVtcChvYmosIGZwLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsCiAgICAgICAgIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwKICAgICAgICAgZGVmYXVsdD1Ob25lLCBzb3J0X2tleXM9RmFsc2UsICoqa3cpOgogICAgICIiIlNlcmlhbGl6ZSBgYG9iamBgIGFzIGEgSlNPTiBmb3JtYXR0ZWQgc3RyZWFtIHRvIGBgZnBgYCAoYQpAQCAtMTc5LDcgKzE4MCw3IEBACiAgICAgICAgIGZwLndyaXRlKGNodW5rKQogCiAKLWRlZiBkdW1wcyhvYmosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwKK2RlZiBkdW1wcyhvYmosICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwKICAgICAgICAgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLAogICAgICAgICBkZWZhdWx0PU5vbmUsIHNvcnRfa2V5cz1GYWxzZSwgKiprdyk6CiAgICAgIiIiU2VyaWFsaXplIGBgb2JqYGAgdG8gYSBKU09OIGZvcm1hdHRlZCBgYHN0cmBgLgpAQCAtMjQwLDcgKzI0MSwzNiBAQAogX2RlZmF1bHRfZGVjb2RlciA9IEpTT05EZWNvZGVyKG9iamVjdF9ob29rPU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUpCiAKIAotZGVmIGxvYWQoZnAsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAorZGVmIGRldGVjdF9lbmNvZGluZyhiKToKKyAgICBic3RhcnRzd2l0aCA9IGIuc3RhcnRzd2l0aAorICAgIGlmIGJzdGFydHN3aXRoKChjb2RlY3MuQk9NX1VURjMyX0JFLCBjb2RlY3MuQk9NX1VURjMyX0xFKSk6CisgICAgICAgIHJldHVybiAndXRmLTMyJworICAgIGlmIGJzdGFydHN3aXRoKChjb2RlY3MuQk9NX1VURjE2X0JFLCBjb2RlY3MuQk9NX1VURjE2X0xFKSk6CisgICAgICAgIHJldHVybiAndXRmLTE2JworICAgIGlmIGJzdGFydHN3aXRoKGNvZGVjcy5CT01fVVRGOCk6CisgICAgICAgIHJldHVybiAndXRmLTgtc2lnJworCisgICAgaWYgbGVuKGIpID49IDQ6CisgICAgICAgIGlmIG5vdCBiWzBdOgorICAgICAgICAgICAgIyAwMCAwMCAtLSAtLSAtIHV0Zi0zMi1iZQorICAgICAgICAgICAgIyAwMCBYWCAtLSAtLSAtIHV0Zi0xNi1iZQorICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtYmUnIGlmIGJbMV0gZWxzZSAndXRmLTMyLWJlJworICAgICAgICBpZiBub3QgYlsxXToKKyAgICAgICAgICAgICMgWFggMDAgMDAgMDAgLSB1dGYtMzItbGUKKyAgICAgICAgICAgICMgWFggMDAgWFggWFggLSB1dGYtMTYtbGUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWxlJyBpZiBiWzJdIG9yIGJbM10gZWxzZSAndXRmLTMyLWxlJworICAgIGVsaWYgbGVuKGIpID09IDI6CisgICAgICAgIGlmIG5vdCBiWzBdOgorICAgICAgICAgICAgIyAwMCBYWCAtIHV0Zi0xNi1iZQorICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtYmUnCisgICAgICAgIGlmIG5vdCBiWzFdOgorICAgICAgICAgICAgIyBYWCAwMCAtIHV0Zi0xNi1sZQorICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtbGUnCisgICAgIyBkZWZhdWx0CisgICAgcmV0dXJuICd1dGYtOCcKKworCitkZWYgbG9hZChmcCwgKiwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCiAgICAgICAgIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KToKICAgICAiIiJEZXNlcmlhbGl6ZSBgYGZwYGAgKGEgYGAucmVhZCgpYGAtc3VwcG9ydGluZyBmaWxlLWxpa2Ugb2JqZWN0IGNvbnRhaW5pbmcKICAgICBhIEpTT04gZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdC4KQEAgLTI2OCwxMCArMjk4LDEwIEBACiAgICAgICAgIHBhcnNlX2NvbnN0YW50PXBhcnNlX2NvbnN0YW50LCBvYmplY3RfcGFpcnNfaG9vaz1vYmplY3RfcGFpcnNfaG9vaywgKiprdykKIAogCi1kZWYgbG9hZHMocywgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCitkZWYgbG9hZHMocywgKiwgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCiAgICAgICAgIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KToKLSAgICAiIiJEZXNlcmlhbGl6ZSBgYHNgYCAoYSBgYHN0cmBgIGluc3RhbmNlIGNvbnRhaW5pbmcgYSBKU09OCi0gICAgZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdC4KKyAgICAiIiJEZXNlcmlhbGl6ZSBgYHNgYCAoYSBgYHN0cmBgLCBgYGJ5dGVzYGAgb3IgYGBieXRlYXJyYXlgYCBpbnN0YW5jZQorICAgIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QuCiAKICAgICBgYG9iamVjdF9ob29rYGAgaXMgYW4gb3B0aW9uYWwgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZQogICAgIHJlc3VsdCBvZiBhbnkgb2JqZWN0IGxpdGVyYWwgZGVjb2RlIChhIGBgZGljdGBgKS4gVGhlIHJldHVybiB2YWx1ZSBvZgpAQCAtMzA3LDEyICszMzcsMTYgQEAKICAgICBUaGUgYGBlbmNvZGluZ2BgIGFyZ3VtZW50IGlzIGlnbm9yZWQgYW5kIGRlcHJlY2F0ZWQuCiAKICAgICAiIiIKLSAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBzdHIpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0ciwgbm90IHshcn0nLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLl9fY2xhc3NfXy5fX25hbWVfXykpCi0gICAgaWYgcy5zdGFydHN3aXRoKHUnXHVmZWZmJyk6Ci0gICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW5leHBlY3RlZCBVVEYtOCBCT00gKGRlY29kZSB1c2luZyB1dGYtOC1zaWcpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIDApCisgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgorICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoJ1x1ZmVmZicpOgorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJVbmV4cGVjdGVkIFVURi04IEJPTSAoZGVjb2RlIHVzaW5nIHV0Zi04LXNpZykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIDApCisgICAgZWxzZToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocywgKGJ5dGVzLCBieXRlYXJyYXkpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndGhlIEpTT04gb2JqZWN0IG11c3QgYmUgc3RyLCBieXRlcyBvciBieXRlYXJyYXksICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90IHshcn0nLmZvcm1hdChzLl9fY2xhc3NfXy5fX25hbWVfXykpCisgICAgICAgIHMgPSBzLmRlY29kZShkZXRlY3RfZW5jb2RpbmcocyksICdzdXJyb2dhdGVwYXNzJykKKwogICAgIGlmIChjbHMgaXMgTm9uZSBhbmQgb2JqZWN0X2hvb2sgaXMgTm9uZSBhbmQKICAgICAgICAgICAgIHBhcnNlX2ludCBpcyBOb25lIGFuZCBwYXJzZV9mbG9hdCBpcyBOb25lIGFuZAogICAgICAgICAgICAgcGFyc2VfY29uc3RhbnQgaXMgTm9uZSBhbmQgb2JqZWN0X3BhaXJzX2hvb2sgaXMgTm9uZSBhbmQgbm90IGt3KToKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2RlY29kZXIucHkgYi9MaWIvanNvbi9kZWNvZGVyLnB5CmluZGV4IDBmMDNmMjAuLjI0MjJjNmEgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2RlY29kZXIucHkKKysrIGIvTGliL2pzb24vZGVjb2Rlci5weQpAQCAtMjgwLDcgKzI4MCw3IEBACiAKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAogICAgICAgICAgICAgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIHN0cmljdD1UcnVlLAogICAgICAgICAgICAgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSk6CiAgICAgICAgICIiImBgb2JqZWN0X2hvb2tgYCwgaWYgc3BlY2lmaWVkLCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2VuY29kZXIucHkgYi9MaWIvanNvbi9lbmNvZGVyLnB5CmluZGV4IGQ1OTY0ODkuLjQxYTQ5N2MgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2VuY29kZXIucHkKKysrIGIvTGliL2pzb24vZW5jb2Rlci5weQpAQCAtMTAxLDcgKzEwMSw3IEBACiAgICAgIiIiCiAgICAgaXRlbV9zZXBhcmF0b3IgPSAnLCAnCiAgICAga2V5X3NlcGFyYXRvciA9ICc6ICcKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsCiAgICAgICAgICAgICBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgc29ydF9rZXlzPUZhbHNlLAogICAgICAgICAgICAgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IgZm9yIEpTT05FbmNvZGVyLCB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzLgpAQCAtMTc2LDcgKzE3Niw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT05FbmNvZGVyLmRlZmF1bHQoc2VsZiwgbykKIAogICAgICAgICAiIiIKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKHJlcHIobykgKyAiIGlzIG5vdCBKU09OIHNlcmlhbGl6YWJsZSIpCisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiT2JqZWN0IG9mIHR5cGUgJyVzJyBpcyBub3QgSlNPTiBzZXJpYWxpemFibGUiICUKKyAgICAgICAgICAgICAgICAgICAgICAgIG8uX19jbGFzc19fLl9fbmFtZV9fKQogCiAgICAgZGVmIGVuY29kZShzZWxmLCBvKToKICAgICAgICAgIiIiUmV0dXJuIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBQeXRob24gZGF0YSBzdHJ1Y3R1cmUuCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dCBiL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CmluZGV4IDg4Zjc4ODQuLjJmMDJlNmYgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CisrKyBiL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CkBAIC01NCwxMiArNTQsMTMgQEAKIHNpbXBsZV9zdG10OiBzbWFsbF9zdG10ICgnOycgc21hbGxfc3RtdCkqIFsnOyddIE5FV0xJTkUKIHNtYWxsX3N0bXQ6IChleHByX3N0bXQgfCBwcmludF9zdG10ICB8IGRlbF9zdG10IHwgcGFzc19zdG10IHwgZmxvd19zdG10IHwKICAgICAgICAgICAgICBpbXBvcnRfc3RtdCB8IGdsb2JhbF9zdG10IHwgZXhlY19zdG10IHwgYXNzZXJ0X3N0bXQpCi1leHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CitleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYW5uYXNzaWduIHwgYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CiAgICAgICAgICAgICAgICAgICAgICAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0X3N0YXJfZXhwcikpKikKK2FubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddCiBhdWdhc3NpZ246ICgnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScgfAogICAgICAgICAgICAgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScpCi0jIEZvciBub3JtYWwgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgorIyBGb3Igbm9ybWFsIGFuZCBhbm5vdGF0ZWQgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgogcHJpbnRfc3RtdDogJ3ByaW50JyAoIFsgdGVzdCAoJywnIHRlc3QpKiBbJywnXSBdIHwKICAgICAgICAgICAgICAgICAgICAgICAnPj4nIHRlc3QgWyAoJywnIHRlc3QpKyBbJywnXSBdICkKIGRlbF9zdG10OiAnZGVsJyBleHBybGlzdApAQCAtMTYwLDcgKzE2MSw3IEBACiAJICAgIHN0YXJfZXhwciApCiAKIGNvbXBfaXRlcjogY29tcF9mb3IgfCBjb21wX2lmCi1jb21wX2ZvcjogJ2ZvcicgZXhwcmxpc3QgJ2luJyB0ZXN0bGlzdF9zYWZlIFtjb21wX2l0ZXJdCitjb21wX2ZvcjogW0FTWU5DXSAnZm9yJyBleHBybGlzdCAnaW4nIHRlc3RsaXN0X3NhZmUgW2NvbXBfaXRlcl0KIGNvbXBfaWY6ICdpZicgb2xkX3Rlc3QgW2NvbXBfaXRlcl0KIAogdGVzdGxpc3QxOiB0ZXN0ICgnLCcgdGVzdCkqCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weQppbmRleCA0NDUwMmJmLi5iYWJlNmNiIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkKQEAgLTEsOCArMSw2IEBACiAiIiJVdGlsaXR5IGZ1bmN0aW9ucywgbm9kZSBjb25zdHJ1Y3Rpb24gbWFjcm9zLCBldGMuIiIiCiAjIEF1dGhvcjogQ29sbGluIFdpbnRlcgogCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgaXNsaWNlCi0KICMgTG9jYWwgaW1wb3J0cwogZnJvbSAucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC5weXRyZWUgaW1wb3J0IExlYWYsIE5vZGUKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2RpY3QucHkKaW5kZXggOTYzZjk1Mi4uZDM2NTVjOSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2RpY3QucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2RpY3QucHkKQEAgLTMwLDkgKzMwLDggQEAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSAuLiBpbXBvcnQgcHl0cmVlCiBmcm9tIC4uIGltcG9ydCBwYXRjb21wCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgTFBhcmVuLCBSUGFyZW4sIEFyZ0xpc3QsIERvdAorZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIERvdAogZnJvbSAuLiBpbXBvcnQgZml4ZXJfdXRpbAogCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2V4ZWMucHkKaW5kZXggMmM5YjcyZC4uYWI5MjFlZSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2V4ZWMucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2V4ZWMucHkKQEAgLTEwLDcgKzEwLDYgQEAKICIiIgogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gLi4gaW1wb3J0IHB5dHJlZQogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IENvbW1hLCBOYW1lLCBDYWxsCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9maWx0ZXIucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5CmluZGV4IDM5MTg4OWYuLmJiNjcxOGMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9maWx0ZXIucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weQpAQCAtMTQsNyArMTQsNiBAQAogIiIiCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIExpc3RDb21wLCBpbl9zcGVjaWFsX2NvbnRleHQKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfaGFzX2tleS5weQppbmRleCAxOGM1NjBmLi40Mzk3MDhjIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfaGFzX2tleS5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfaGFzX2tleS5weQpAQCAtMzEsNyArMzEsNiBAQAogCiAjIExvY2FsIGltcG9ydHMKIGZyb20gLi4gaW1wb3J0IHB5dHJlZQotZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIHBhcmVudGhlc2l6ZQogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfbWV0YWNsYXNzLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weQppbmRleCA0NmM3YWFmLi44ZTM0NDYzIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfbWV0YWNsYXNzLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkKQEAgLTIwLDcgKzIwLDcgQEAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLnB5Z3JhbSBpbXBvcnQgdG9rZW4KLWZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBzeW1zLCBOb2RlLCBMZWFmCitmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgc3ltcywgTm9kZSwgTGVhZgogCiAKIGRlZiBoYXNfbWV0YWNsYXNzKHBhcmVudCk6CmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9ub256ZXJvLnB5CmluZGV4IGFkOTFhMjkuLmMyMjk1OTYgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9ub256ZXJvLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9ub256ZXJvLnB5CkBAIC0zLDcgKzMsNyBAQAogCiAjIExvY2FsIGltcG9ydHMKIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKLWZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBzeW1zCitmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZQogCiBjbGFzcyBGaXhOb256ZXJvKGZpeGVyX2Jhc2UuQmFzZUZpeCk6CiAgICAgQk1fY29tcGF0aWJsZSA9IFRydWUKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9wcmludC5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9wcmludC5weQppbmRleCBhMWZlMmY1Li44NzgwMzIyIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5CkBAIC0xOCw3ICsxOCw3IEBACiBmcm9tIC4uIGltcG9ydCBweXRyZWUKIGZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKLWZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBDb21tYSwgU3RyaW5nLCBpc190dXBsZQorZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIENvbW1hLCBTdHJpbmcKIAogCiBwYXJlbmRfZXhwciA9IHBhdGNvbXAuY29tcGlsZV9wYXR0ZXJuKApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3R5cGVzLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3R5cGVzLnB5CmluZGV4IGRiMzQxMDQuLjY3YmY1MWYgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkKQEAgLTIwLDcgKzIwLDYgQEAKICIiIgogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lCiAKQEAgLTQyLDcgKzQxLDcgQEAKICAgICAgICAgJ05vdEltcGxlbWVudGVkVHlwZScgOiAndHlwZShOb3RJbXBsZW1lbnRlZCknLAogICAgICAgICAnU2xpY2VUeXBlJyA6ICdzbGljZScsCiAgICAgICAgICdTdHJpbmdUeXBlJzogJ2J5dGVzJywgIyBYWFggPwotICAgICAgICAnU3RyaW5nVHlwZXMnIDogJ3N0cicsICMgWFhYID8KKyAgICAgICAgJ1N0cmluZ1R5cGVzJyA6ICcoc3RyLCknLCAjIFhYWCA/CiAgICAgICAgICdUdXBsZVR5cGUnOiAndHVwbGUnLAogICAgICAgICAnVHlwZVR5cGUnIDogJ3R5cGUnLAogICAgICAgICAnVW5pY29kZVR5cGUnOiAnc3RyJywKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF91cmxsaWIucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5CmluZGV4IDE0ODFjZDkuLjVhMzYwNDkgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF91cmxsaWIucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weQpAQCAtNiw3ICs2LDYgQEAKIAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIGxpYjJ0bzMuZml4ZXMuZml4X2ltcG9ydHMgaW1wb3J0IGFsdGVybmF0ZXMsIEZpeEltcG9ydHMKLWZyb20gbGliMnRvMyBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSBsaWIydG8zLmZpeGVyX3V0aWwgaW1wb3J0IChOYW1lLCBDb21tYSwgRnJvbUltcG9ydCwgTmV3bGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9pbmRlbnRhdGlvbiwgTm9kZSwgc3ltcykKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkgYi9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQppbmRleCAwNzI4MDgzLi5jNWExYWEyIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQorKysgYi9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQpAQCAtOCw4ICs4LDYgQEAKIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIHRvIHdyaXRlIHlvdXIgb3duIHJlZmFjdG9yaW5nIHRvb2wuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBfX2F1dGhvcl9fID0gIkd1aWRvIHZhbiBSb3NzdW0gPGd1aWRvQHB5dGhvbi5vcmc+IgogCiAKQEAgLTI2LDcgKzI0LDYgQEAKIGZyb20gLnBnZW4yIGltcG9ydCBkcml2ZXIsIHRva2VuaXplLCB0b2tlbgogZnJvbSAuZml4ZXJfdXRpbCBpbXBvcnQgZmluZF9yb290CiBmcm9tIC4gaW1wb3J0IHB5dHJlZSwgcHlncmFtCi1mcm9tIC4gaW1wb3J0IGJ0bV91dGlscyBhcyBidQogZnJvbSAuIGltcG9ydCBidG1fbWF0Y2hlciBhcyBibQogCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL2RhdGEvcHkzX3Rlc3RfZ3JhbW1hci5weSBiL0xpYi9saWIydG8zL3Rlc3RzL2RhdGEvcHkzX3Rlc3RfZ3JhbW1hci5weQppbmRleCBjMGJmN2YyLi5jZjMxYTU0IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5CkBAIC0zMTksNyArMzE5LDcgQEAKICAgICAgICAgZGVmIGYoeCkgLT4gbGlzdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmLl9fYW5ub3RhdGlvbnNfXywgeydyZXR1cm4nOiBsaXN0fSkKIAotICAgICAgICAjIHRlc3QgTUFLRV9DTE9TVVJFIHdpdGggYSB2YXJpZXR5IG9mIG9wYXJnJ3MKKyAgICAgICAgIyB0ZXN0IGNsb3N1cmVzIHdpdGggYSB2YXJpZXR5IG9mIG9wYXJnJ3MKICAgICAgICAgY2xvc3VyZSA9IDEKICAgICAgICAgZGVmIGYoKTogcmV0dXJuIGNsb3N1cmUKICAgICAgICAgZGVmIGYoeD0xKTogcmV0dXJuIGNsb3N1cmUKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3N1cHBvcnQucHkgYi9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5CmluZGV4IDA4OTcxNzcuLmFlN2NmZTggMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3N1cHBvcnQucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weQpAQCAtMywxMCArMyw4IEBACiAKICMgUHl0aG9uIGltcG9ydHMKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAotaW1wb3J0IHJlCiBmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKIAogIyBMb2NhbCBpbXBvcnRzCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2FsbF9maXhlcnMucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2FsbF9maXhlcnMucHkKaW5kZXggMTUwNzlmZS4uYzA1MDdjZiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weQpAQCAtMTAsNyArMTAsNiBAQAogaW1wb3J0IHRlc3Quc3VwcG9ydAogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gbGliMnRvMyBpbXBvcnQgcmVmYWN0b3IKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAogCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9maXhlcnMucHkKaW5kZXggNjQwZGNlZi4uYjNmMjY4MCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9maXhlcnMucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9maXhlcnMucHkKQEAgLTIsMTIgKzIsMTEgQEAKIAogIyBQeXRob24gaW1wb3J0cwogaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgogZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gbGliMnRvMyBpbXBvcnQgcHlncmFtLCBweXRyZWUsIHJlZmFjdG9yLCBmaXhlcl91dGlsCitmcm9tIGxpYjJ0bzMgaW1wb3J0IHB5Z3JhbSwgZml4ZXJfdXRpbAogZnJvbSBsaWIydG8zLnRlc3RzIGltcG9ydCBzdXBwb3J0CiAKIApAQCAtMzIzNCw2ICszMjMzLDEwIEBACiAgICAgICAgIGEgPSAiIiJ0eXBlKE5vbmUpIiIiCiAgICAgICAgIHNlbGYuY2hlY2soYiwgYSkKIAorICAgICAgICBiID0gInR5cGVzLlN0cmluZ1R5cGVzIgorICAgICAgICBhID0gIihzdHIsKSIKKyAgICAgICAgc2VsZi5jaGVjayhiLCBhKQorCiBjbGFzcyBUZXN0X2lkaW9tcyhGaXhlclRlc3RDYXNlKToKICAgICBmaXhlciA9ICJpZGlvbXMiCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKaW5kZXggZTRhMDE5NC4uOWE5NjllOCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKQEAgLTgsNyArOCw3IEBACiAKICMgVGVzdGluZyBpbXBvcnRzCiBmcm9tIC4gaW1wb3J0IHN1cHBvcnQKLWZyb20gLnN1cHBvcnQgaW1wb3J0IGRyaXZlciwgdGVzdF9kaXIKK2Zyb20gLnN1cHBvcnQgaW1wb3J0IGRyaXZlcgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UKIAogIyBQeXRob24gaW1wb3J0cwpAQCAtMTM0LDYgKzEzNCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICIiIikKIAogICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2kgYXN5bmMgZm9yIGkgaW4gYl0KKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpIGZvciBpIGluIGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gYSBpZiBhd2FpdCBpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gaX0KKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthd2FpdCBpIGZvciBpIGluIGIgaWYgYXdhaXQgY10KKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgaSBmb3IgaSBpbiBiIGlmIGNdCisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgogCiAgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKIApAQCAtMjcyLDYgKzI5MCwzNiBAQAogICAgICAgICBzZWxmLnZhbGlkYXRlKHMpCiAKIAorIyBBZGFwdGVkIGZyb20gUHl0aG9uIDMncyBMaWIvdGVzdC90ZXN0X2dyYW1tYXIucHk6R3JhbW1hclRlc3RzLnRlc3RfdmFyX2Fubm90CitjbGFzcyBUZXN0VmFyQW5ub3RhdGlvbnMoR3JhbW1hclRlc3QpOgorICAgIGRlZiB0ZXN0XzEoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoInZhcjE6IGludCA9IDUiKQorCisgICAgZGVmIHRlc3RfMihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgidmFyMjogW2ludCwgc3RyXSIpCisKKyAgICBkZWYgdGVzdF8zKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgc3Q6IHN0ciA9ICdIZWxsbydcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIGEuYjogaW50ID0gKDEsIDIpXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gc3RcbiIpCisKKyAgICBkZWYgdGVzdF80KHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJkZWYgZmJhZCgpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBwcmludCh4KVxuIikKKworICAgIGRlZiB0ZXN0XzUoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHM6IHN0ciA9ICdhdHRyJ1xuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgeiA9IDJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICBzZWxmLng6IGludCA9IHhcbiIpCisKKyAgICBkZWYgdGVzdF82KHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJsc3Q6IExpc3RbaW50XSA9IFtdIikKKwogY2xhc3MgVGVzdEV4Y2VwdChHcmFtbWFyVGVzdCk6CiAgICAgZGVmIHRlc3RfbmV3KHNlbGYpOgogICAgICAgICBzID0gIiIiCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CmluZGV4IDRkNTg1YTguLjE3NzEyNmQgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CkBAIC05LDExICs5LDYgQEAKIGVzcGVjaWFsbHkgd2hlbiBkZWJ1Z2dpbmcgYSB0ZXN0LgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCi0KICMgVGVzdGluZyBpbXBvcnRzCiBmcm9tIC4gaW1wb3J0IHN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9yZWZhY3Rvci5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkKaW5kZXggODU2MzAwMS4uZTliYWU1ZSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9yZWZhY3Rvci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5CkBAIC0yLDI0ICsyLDE4IEBACiBVbml0IHRlc3RzIGZvciByZWZhY3Rvci5weS4KICIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IGNvZGVjcwotaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgaW8KIGltcG9ydCByZQogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB3YXJuaW5ncwogCiBmcm9tIGxpYjJ0bzMgaW1wb3J0IHJlZmFjdG9yLCBweWdyYW0sIGZpeGVyX2Jhc2UKIGZyb20gbGliMnRvMy5wZ2VuMiBpbXBvcnQgdG9rZW4KIAotZnJvbSAuIGltcG9ydCBzdXBwb3J0Ci0KIAogVEVTVF9EQVRBX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiZGF0YSIpCiBGSVhFUl9ESVIgPSBvcy5wYXRoLmpvaW4oVEVTVF9EQVRBX0RJUiwgImZpeGVycyIpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3V0aWwucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3V0aWwucHkKaW5kZXggZDJiZTgyYy4uYzZjNjEzOSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weQpAQCAtMyw5ICszLDYgQEAKICMgVGVzdGluZyBpbXBvcnRzCiBmcm9tIC4gaW1wb3J0IHN1cHBvcnQKIAotIyBQeXRob24gaW1wb3J0cwotaW1wb3J0IG9zLnBhdGgKLQogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIGxpYjJ0bzMucHl0cmVlIGltcG9ydCBOb2RlLCBMZWFmCiBmcm9tIGxpYjJ0bzMgaW1wb3J0IGZpeGVyX3V0aWwKZGlmZiAtLWdpdCBhL0xpYi9sb2NhbGUucHkgYi9MaWIvbG9jYWxlLnB5CmluZGV4IDZkNTljZDguLjRkZTAwOTAgMTAwNjQ0Ci0tLSBhL0xpYi9sb2NhbGUucHkKKysrIGIvTGliL2xvY2FsZS5weQpAQCAtMzAyLDEyICszMDIsMTYgQEAKIAogZGVmIGRlbG9jYWxpemUoc3RyaW5nKToKICAgICAiUGFyc2VzIGEgc3RyaW5nIGFzIGEgbm9ybWFsaXplZCBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgc2V0dGluZ3MuIgorCisgICAgY29udiA9IGxvY2FsZWNvbnYoKQorCiAgICAgI0ZpcnN0LCBnZXQgcmlkIG9mIHRoZSBncm91cGluZwotICAgIHRzID0gbG9jYWxlY29udigpWyd0aG91c2FuZHNfc2VwJ10KKyAgICB0cyA9IGNvbnZbJ3Rob3VzYW5kc19zZXAnXQogICAgIGlmIHRzOgogICAgICAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSh0cywgJycpCisKICAgICAjbmV4dCwgcmVwbGFjZSB0aGUgZGVjaW1hbCBwb2ludCB3aXRoIGEgZG90Ci0gICAgZGQgPSBsb2NhbGVjb252KClbJ2RlY2ltYWxfcG9pbnQnXQorICAgIGRkID0gY29udlsnZGVjaW1hbF9wb2ludCddCiAgICAgaWYgZGQ6CiAgICAgICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGRkLCAnLicpCiAgICAgcmV0dXJuIHN0cmluZwpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkgYi9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQppbmRleCAyMjc0NGUxLi4yNTkwZDY1IDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQorKysgYi9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQpAQCAtMzMsOCArMzMsOSBAQAogICAgICAgICAgICAnU3RyZWFtSGFuZGxlcicsICdXQVJOJywgJ1dBUk5JTkcnLCAnYWRkTGV2ZWxOYW1lJywgJ2Jhc2ljQ29uZmlnJywKICAgICAgICAgICAgJ2NhcHR1cmVXYXJuaW5ncycsICdjcml0aWNhbCcsICdkZWJ1ZycsICdkaXNhYmxlJywgJ2Vycm9yJywKICAgICAgICAgICAgJ2V4Y2VwdGlvbicsICdmYXRhbCcsICdnZXRMZXZlbE5hbWUnLCAnZ2V0TG9nZ2VyJywgJ2dldExvZ2dlckNsYXNzJywKLSAgICAgICAgICAgJ2luZm8nLCAnbG9nJywgJ21ha2VMb2dSZWNvcmQnLCAnc2V0TG9nZ2VyQ2xhc3MnLCAnd2FybicsICd3YXJuaW5nJywKLSAgICAgICAgICAgJ2dldExvZ1JlY29yZEZhY3RvcnknLCAnc2V0TG9nUmVjb3JkRmFjdG9yeScsICdsYXN0UmVzb3J0J10KKyAgICAgICAgICAgJ2luZm8nLCAnbG9nJywgJ21ha2VMb2dSZWNvcmQnLCAnc2V0TG9nZ2VyQ2xhc3MnLCAnc2h1dGRvd24nLAorICAgICAgICAgICAnd2FybicsICd3YXJuaW5nJywgJ2dldExvZ1JlY29yZEZhY3RvcnknLCAnc2V0TG9nUmVjb3JkRmFjdG9yeScsCisgICAgICAgICAgICdsYXN0UmVzb3J0JywgJ3JhaXNlRXhjZXB0aW9ucyddCiAKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0xMDcsNiArMTA4LDcgQEAKIH0KIF9uYW1lVG9MZXZlbCA9IHsKICAgICAnQ1JJVElDQUwnOiBDUklUSUNBTCwKKyAgICAnRkFUQUwnOiBGQVRBTCwKICAgICAnRVJST1InOiBFUlJPUiwKICAgICAnV0FSTic6IFdBUk5JTkcsCiAgICAgJ1dBUk5JTkcnOiBXQVJOSU5HLApAQCAtOTM1LDYgKzkzNywxMCBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBkZWwgdCwgdiwgdGIKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5sZXZlbCkKKyAgICAgICAgcmV0dXJuICc8JXMgKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBsZXZlbCkKKwogY2xhc3MgU3RyZWFtSGFuZGxlcihIYW5kbGVyKToKICAgICAiIiIKICAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggd3JpdGVzIGxvZ2dpbmcgcmVjb3JkcywgYXBwcm9wcmlhdGVseSBmb3JtYXR0ZWQsCkBAIC05ODYsNiArOTkyLDE0IEBACiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5sZXZlbCkKKyAgICAgICAgbmFtZSA9IGdldGF0dHIoc2VsZi5zdHJlYW0sICduYW1lJywgJycpCisgICAgICAgIGlmIG5hbWU6CisgICAgICAgICAgICBuYW1lICs9ICcgJworICAgICAgICByZXR1cm4gJzwlcyAlcyglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSwgbGV2ZWwpCisKKwogY2xhc3MgRmlsZUhhbmRsZXIoU3RyZWFtSGFuZGxlcik6CiAgICAgIiIiCiAgICAgQSBoYW5kbGVyIGNsYXNzIHdoaWNoIHdyaXRlcyBmb3JtYXR0ZWQgbG9nZ2luZyByZWNvcmRzIHRvIGRpc2sgZmlsZXMuCkBAIC05OTQsNiArMTAwOCw4IEBACiAgICAgICAgICIiIgogICAgICAgICBPcGVuIHRoZSBzcGVjaWZpZWQgZmlsZSBhbmQgdXNlIGl0IGFzIHRoZSBzdHJlYW0gZm9yIGxvZ2dpbmcuCiAgICAgICAgICIiIgorICAgICAgICAjIElzc3VlICMyNzQ5MzogYWRkIHN1cHBvcnQgZm9yIFBhdGggb2JqZWN0cyB0byBiZSBwYXNzZWQgaW4KKyAgICAgICAgZmlsZW5hbWUgPSBvcy5mc3BhdGgoZmlsZW5hbWUpCiAgICAgICAgICNrZWVwIHRoZSBhYnNvbHV0ZSBwYXRoLCBvdGhlcndpc2UgZGVyaXZlZCBjbGFzc2VzIHdoaWNoIHVzZSB0aGlzCiAgICAgICAgICNtYXkgY29tZSBhIGNyb3BwZXIgd2hlbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgY2hhbmdlcwogICAgICAgICBzZWxmLmJhc2VGaWxlbmFtZSA9IG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkKQEAgLTEwNDgsNiArMTA2NCwxMSBAQAogICAgICAgICAgICAgc2VsZi5zdHJlYW0gPSBzZWxmLl9vcGVuKCkKICAgICAgICAgU3RyZWFtSGFuZGxlci5lbWl0KHNlbGYsIHJlY29yZCkKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5sZXZlbCkKKyAgICAgICAgcmV0dXJuICc8JXMgJXMgKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLmJhc2VGaWxlbmFtZSwgbGV2ZWwpCisKKwogY2xhc3MgX1N0ZGVyckhhbmRsZXIoU3RyZWFtSGFuZGxlcik6CiAgICAgIiIiCiAgICAgVGhpcyBjbGFzcyBpcyBsaWtlIGEgU3RyZWFtSGFuZGxlciB1c2luZyBzeXMuc3RkZXJyLCBidXQgYWx3YXlzIHVzZXMKQEAgLTE1NDAsNiArMTU2MSwxMSBAQAogICAgICAgICAgICAgc3VmZml4ID0gJy4nLmpvaW4oKHNlbGYubmFtZSwgc3VmZml4KSkKICAgICAgICAgcmV0dXJuIHNlbGYubWFuYWdlci5nZXRMb2dnZXIoc3VmZml4KQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmdldEVmZmVjdGl2ZUxldmVsKCkpCisgICAgICAgIHJldHVybiAnPCVzICVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLCBsZXZlbCkKKworCiBjbGFzcyBSb290TG9nZ2VyKExvZ2dlcik6CiAgICAgIiIiCiAgICAgQSByb290IGxvZ2dlciBpcyBub3QgdGhhdCBkaWZmZXJlbnQgdG8gYW55IG90aGVyIGxvZ2dlciwgZXhjZXB0IHRoYXQKQEAgLTE2NjYsNiArMTY5MiwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYubG9nZ2VyLmhhc0hhbmRsZXJzKCkKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbG9nZ2VyID0gc2VsZi5sb2dnZXIKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUobG9nZ2VyLmdldEVmZmVjdGl2ZUxldmVsKCkpCisgICAgICAgIHJldHVybiAnPCVzICVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbG9nZ2VyLm5hbWUsIGxldmVsKQorCiByb290ID0gUm9vdExvZ2dlcihXQVJOSU5HKQogTG9nZ2VyLnJvb3QgPSByb290CiBMb2dnZXIubWFuYWdlciA9IE1hbmFnZXIoTG9nZ2VyLnJvb3QpCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9oYW5kbGVycy5weSBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CmluZGV4IGMzOWE1NmYuLjdkNzc5NzMgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CisrKyBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CkBAIC0yNDYsNiArMjQ2LDkgQEAKIAogICAgICAgICBzZWxmLmV4dE1hdGNoID0gcmUuY29tcGlsZShzZWxmLmV4dE1hdGNoLCByZS5BU0NJSSkKICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IHNlbGYuaW50ZXJ2YWwgKiBpbnRlcnZhbCAjIG11bHRpcGx5IGJ5IHVuaXRzIHJlcXVlc3RlZAorICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbGluZSBhZGRlZCBiZWNhdXNlIHRoZSBmaWxlbmFtZSBwYXNzZWQgaW4gY291bGQgYmUgYQorICAgICAgICAjIHBhdGggb2JqZWN0IChzZWUgSXNzdWUgIzI3NDkzKSwgYnV0IHNlbGYuYmFzZUZpbGVuYW1lIHdpbGwgYmUgYSBzdHJpbmcKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmJhc2VGaWxlbmFtZQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICB0ID0gb3Muc3RhdChmaWxlbmFtZSlbU1RfTVRJTUVdCiAgICAgICAgIGVsc2U6CkBAIC00NDAsMTEgKzQ0MywxMSBAQAogICAgICAgICAgICAgc3JlcyA9IG9zLmZzdGF0KHNlbGYuc3RyZWFtLmZpbGVubygpKQogICAgICAgICAgICAgc2VsZi5kZXYsIHNlbGYuaW5vID0gc3Jlc1tTVF9ERVZdLCBzcmVzW1NUX0lOT10KIAotICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CisgICAgZGVmIHJlb3BlbklmTmVlZGVkKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgRW1pdCBhIHJlY29yZC4KKyAgICAgICAgUmVvcGVuIGxvZyBmaWxlIGlmIG5lZWRlZC4KIAotICAgICAgICBGaXJzdCBjaGVjayBpZiB0aGUgdW5kZXJseWluZyBmaWxlIGhhcyBjaGFuZ2VkLCBhbmQgaWYgaXQKKyAgICAgICAgQ2hlY2tzIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUgaGFzIGNoYW5nZWQsIGFuZCBpZiBpdAogICAgICAgICBoYXMsIGNsb3NlIHRoZSBvbGQgc3RyZWFtIGFuZCByZW9wZW4gdGhlIGZpbGUgdG8gZ2V0IHRoZQogICAgICAgICBjdXJyZW50IHN0cmVhbS4KICAgICAgICAgIiIiCkBAIC00NjcsNiArNDcwLDE1IEBACiAgICAgICAgICAgICAgICAgIyBvcGVuIGEgbmV3IGZpbGUgaGFuZGxlIGFuZCBnZXQgbmV3IHN0YXQgaW5mbyBmcm9tIHRoYXQgZmQKICAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbSA9IHNlbGYuX29wZW4oKQogICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRzdHJlYW0oKQorCisgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgIiIiCisgICAgICAgIEVtaXQgYSByZWNvcmQuCisKKyAgICAgICAgSWYgdW5kZXJseWluZyBmaWxlIGhhcyBjaGFuZ2VkLCByZW9wZW4gdGhlIGZpbGUgYmVmb3JlIGVtaXR0aW5nIHRoZQorICAgICAgICByZWNvcmQgdG8gaXQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnJlb3BlbklmTmVlZGVkKCkKICAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5lbWl0KHNlbGYsIHJlY29yZCkKIAogCkBAIC0xMjI5LDE3ICsxMjQxLDI1IEBACiAgICAgZmx1c2hpbmcgdGhlbSB0byBhIHRhcmdldCBoYW5kbGVyLiBGbHVzaGluZyBvY2N1cnMgd2hlbmV2ZXIgdGhlIGJ1ZmZlcgogICAgIGlzIGZ1bGwsIG9yIHdoZW4gYW4gZXZlbnQgb2YgYSBjZXJ0YWluIHNldmVyaXR5IG9yIGdyZWF0ZXIgaXMgc2Vlbi4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2FwYWNpdHksIGZsdXNoTGV2ZWw9bG9nZ2luZy5FUlJPUiwgdGFyZ2V0PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eSwgZmx1c2hMZXZlbD1sb2dnaW5nLkVSUk9SLCB0YXJnZXQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgZmx1c2hPbkNsb3NlPVRydWUpOgogICAgICAgICAiIiIKICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgaGFuZGxlciB3aXRoIHRoZSBidWZmZXIgc2l6ZSwgdGhlIGxldmVsIGF0IHdoaWNoCiAgICAgICAgIGZsdXNoaW5nIHNob3VsZCBvY2N1ciBhbmQgYW4gb3B0aW9uYWwgdGFyZ2V0LgogCiAgICAgICAgIE5vdGUgdGhhdCB3aXRob3V0IGEgdGFyZ2V0IGJlaW5nIHNldCBlaXRoZXIgaGVyZSBvciB2aWEgc2V0VGFyZ2V0KCksCiAgICAgICAgIGEgTWVtb3J5SGFuZGxlciBpcyBubyB1c2UgdG8gYW55b25lIQorCisgICAgICAgIFRoZSBgYGZsdXNoT25DbG9zZWBgIGFyZ3VtZW50IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CisgICAgICAgIHJlYXNvbnMgLSB0aGUgb2xkIGJlaGF2aW91ciBpcyB0aGF0IHdoZW4gdGhlIGhhbmRsZXIgaXMgY2xvc2VkLCB0aGUKKyAgICAgICAgYnVmZmVyIGlzIGZsdXNoZWQsIGV2ZW4gaWYgdGhlIGZsdXNoIGxldmVsIGhhc24ndCBiZWVuIGV4Y2VlZGVkIG5vciB0aGUKKyAgICAgICAgY2FwYWNpdHkgZXhjZWVkZWQuIFRvIHByZXZlbnQgdGhpcywgc2V0IGBgZmx1c2hPbkNsb3NlYGAgdG8gYGBGYWxzZWBgLgogICAgICAgICAiIiIKICAgICAgICAgQnVmZmVyaW5nSGFuZGxlci5fX2luaXRfXyhzZWxmLCBjYXBhY2l0eSkKICAgICAgICAgc2VsZi5mbHVzaExldmVsID0gZmx1c2hMZXZlbAogICAgICAgICBzZWxmLnRhcmdldCA9IHRhcmdldAorICAgICAgICAjIFNlZSBJc3N1ZSAjMjY1NTkgZm9yIHdoeSB0aGlzIGhhcyBiZWVuIGFkZGVkCisgICAgICAgIHNlbGYuZmx1c2hPbkNsb3NlID0gZmx1c2hPbkNsb3NlCiAKICAgICBkZWYgc2hvdWxkRmx1c2goc2VsZiwgcmVjb3JkKToKICAgICAgICAgIiIiCkBAIC0xMjczLDEwICsxMjkzLDEyIEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBGbHVzaCwgc2V0IHRoZSB0YXJnZXQgdG8gTm9uZSBhbmQgbG9zZSB0aGUgYnVmZmVyLgorICAgICAgICBGbHVzaCwgaWYgYXBwcm9wcmlhdGVseSBjb25maWd1cmVkLCBzZXQgdGhlIHRhcmdldCB0byBOb25lIGFuZCBsb3NlIHRoZQorICAgICAgICBidWZmZXIuCiAgICAgICAgICIiIgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmZsdXNoKCkKKyAgICAgICAgICAgIGlmIHNlbGYuZmx1c2hPbkNsb3NlOgorICAgICAgICAgICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5hY3F1aXJlKCkKICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9sem1hLnB5IGIvTGliL2x6bWEucHkKaW5kZXggN2RmZjFjMy4uMDgxN2I4NyAxMDA2NDQKLS0tIGEvTGliL2x6bWEucHkKKysrIGIvTGliL2x6bWEucHkKQEAgLTIzLDYgKzIzLDcgQEAKIAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW8KK2ltcG9ydCBvcwogZnJvbSBfbHptYSBpbXBvcnQgKgogZnJvbSBfbHptYSBpbXBvcnQgX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcywgX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcwogaW1wb3J0IF9jb21wcmVzc2lvbgpAQCAtNDksOSArNTAsMTAgQEAKICAgICAgICAgICAgICAgICAgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKToKICAgICAgICAgIiIiT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgbW9kZS4KIAotICAgICAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyIG9yCi0gICAgICAgIGJ5dGVzIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4KLSAgICAgICAgYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorICAgICAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyLAorICAgICAgICBieXRlcywgb3IgUGF0aExpa2Ugb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcworICAgICAgICBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3IKKyAgICAgICAgd3JpdGUgdG8uCiAKICAgICAgICAgbW9kZSBjYW4gYmUgInIiIGZvciByZWFkaW5nIChkZWZhdWx0KSwgInciIGZvciAob3Zlcil3cml0aW5nLAogICAgICAgICAieCIgZm9yIGNyZWF0aW5nIGV4Y2x1c2l2ZWx5LCBvciAiYSIgZm9yIGFwcGVuZGluZy4gVGhlc2UgY2FuCkBAIC0xMTIsNyArMTE0LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQogCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzLCBvcy5QYXRoTGlrZSkpOgogICAgICAgICAgICAgaWYgImIiIG5vdCBpbiBtb2RlOgogICAgICAgICAgICAgICAgIG1vZGUgKz0gImIiCiAgICAgICAgICAgICBzZWxmLl9mcCA9IGJ1aWx0aW5zLm9wZW4oZmlsZW5hbWUsIG1vZGUpCkBAIC0xMjIsNyArMTI0LDcgQEAKICAgICAgICAgICAgIHNlbGYuX2ZwID0gZmlsZW5hbWUKICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciBvciBieXRlcyBvYmplY3QsIG9yIGEgZmlsZSIpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIsIGJ5dGVzLCBmaWxlIG9yIFBhdGhMaWtlIG9iamVjdCIpCiAKICAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEOgogICAgICAgICAgICAgcmF3ID0gX2NvbXByZXNzaW9uLkRlY29tcHJlc3NSZWFkZXIoc2VsZi5fZnAsIExaTUFEZWNvbXByZXNzb3IsCkBAIC0yNjMsOSArMjY1LDkgQEAKICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgogICAgICIiIk9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZS4KIAotICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIgb3IgYnl0ZXMKLSAgICBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuCi0gICAgZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIsIGJ5dGVzLAorICAgIG9yIFBhdGhMaWtlIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdAorICAgIGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCiAKICAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiIChkZWZhdWx0KSwgInciLCAid2IiLCAieCIsICJ4YiIsCiAgICAgImEiLCBvciAiYWIiIGZvciBiaW5hcnkgbW9kZSwgb3IgInJ0IiwgInd0IiwgInh0Iiwgb3IgImF0IiBmb3IgdGV4dApkaWZmIC0tZ2l0IGEvTGliL21haWxib3gucHkgYi9MaWIvbWFpbGJveC5weQppbmRleCAwMjcwZTI1Li4wZTIzOTg3IDEwMDY0NAotLS0gYS9MaWIvbWFpbGJveC5weQorKysgYi9MaWIvbWFpbGJveC5weQpAQCAtMjMsOSArMjMsMTAgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmY250bCA9IE5vbmUKIAotX19hbGxfXyA9IFsgJ01haWxib3gnLCAnTWFpbGRpcicsICdtYm94JywgJ01IJywgJ0JhYnlsJywgJ01NREYnLAotICAgICAgICAgICAgJ01lc3NhZ2UnLCAnTWFpbGRpck1lc3NhZ2UnLCAnbWJveE1lc3NhZ2UnLCAnTUhNZXNzYWdlJywKLSAgICAgICAgICAgICdCYWJ5bE1lc3NhZ2UnLCAnTU1ERk1lc3NhZ2UnXQorX19hbGxfXyA9IFsnTWFpbGJveCcsICdNYWlsZGlyJywgJ21ib3gnLCAnTUgnLCAnQmFieWwnLCAnTU1ERicsCisgICAgICAgICAgICdNZXNzYWdlJywgJ01haWxkaXJNZXNzYWdlJywgJ21ib3hNZXNzYWdlJywgJ01ITWVzc2FnZScsCisgICAgICAgICAgICdCYWJ5bE1lc3NhZ2UnLCAnTU1ERk1lc3NhZ2UnLCAnRXJyb3InLCAnTm9TdWNoTWFpbGJveEVycm9yJywKKyAgICAgICAgICAgJ05vdEVtcHR5RXJyb3InLCAnRXh0ZXJuYWxDbGFzaEVycm9yJywgJ0Zvcm1hdEVycm9yJ10KIAogbGluZXNlcCA9IG9zLmxpbmVzZXAuZW5jb2RlKCdhc2NpaScpCiAKZGlmZiAtLWdpdCBhL0xpYi9taW1ldHlwZXMucHkgYi9MaWIvbWltZXR5cGVzLnB5CmluZGV4IDBiZTc2YWQuLjlhODg2ODAgMTAwNjQ0Ci0tLSBhL0xpYi9taW1ldHlwZXMucHkKKysrIGIvTGliL21pbWV0eXBlcy5weQpAQCAtMzMsOCArMzMsMTAgQEAKICAgICBfd2lucmVnID0gTm9uZQogCiBfX2FsbF9fID0gWwotICAgICJndWVzc190eXBlIiwiZ3Vlc3NfZXh0ZW5zaW9uIiwiZ3Vlc3NfYWxsX2V4dGVuc2lvbnMiLAotICAgICJhZGRfdHlwZSIsInJlYWRfbWltZV90eXBlcyIsImluaXQiCisgICAgImtub3duZmlsZXMiLCAiaW5pdGVkIiwgIk1pbWVUeXBlcyIsCisgICAgImd1ZXNzX3R5cGUiLCAiZ3Vlc3NfYWxsX2V4dGVuc2lvbnMiLCAiZ3Vlc3NfZXh0ZW5zaW9uIiwKKyAgICAiYWRkX3R5cGUiLCAiaW5pdCIsICJyZWFkX21pbWVfdHlwZXMiLAorICAgICJzdWZmaXhfbWFwIiwgImVuY29kaW5nc19tYXAiLCAidHlwZXNfbWFwIiwgImNvbW1vbl90eXBlcyIKIF0KIAoga25vd25maWxlcyA9IFsKZGlmZiAtLWdpdCBhL0xpYi9tb2R1bGVmaW5kZXIucHkgYi9MaWIvbW9kdWxlZmluZGVyLnB5CmluZGV4IDgxMDM1MDIuLmUyMjAzMTUgMTAwNjQ0Ci0tLSBhL0xpYi9tb2R1bGVmaW5kZXIucHkKKysrIGIvTGliL21vZHVsZWZpbmRlci5weQpAQCAtMTAsNyArMTAsNyBAQAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHdhcm5pbmdzCiB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgIGltcG9ydCBpbXAKIAogTE9BRF9DT05TVCA9IGRpcy5vcG1hcFsnTE9BRF9DT05TVCddCkBAIC0zMzYsOCArMzM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lID0gbmFtZSArICIuIiArIHN1YgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkX2JhZG1vZHVsZShmdWxsbmFtZSwgY2FsbGVyKQogCi0gICAgZGVmIHNjYW5fb3Bjb2Rlc18yNShzZWxmLCBjbywKLSAgICAgICAgICAgICAgICAgICAgIHVucGFjayA9IHN0cnVjdC51bnBhY2spOgorICAgIGRlZiBzY2FuX29wY29kZXMoc2VsZiwgY28pOgogICAgICAgICAjIFNjYW4gdGhlIGNvZGUsIGFuZCB5aWVsZCAnaW50ZXJlc3RpbmcnIG9wY29kZSBjb21iaW5hdGlvbnMKICAgICAgICAgY29kZSA9IGNvLmNvX2NvZGUKICAgICAgICAgbmFtZXMgPSBjby5jb19uYW1lcwpAQCAtMzYwLDcgKzM1OSw3IEBACiAKICAgICBkZWYgc2Nhbl9jb2RlKHNlbGYsIGNvLCBtKToKICAgICAgICAgY29kZSA9IGNvLmNvX2NvZGUKLSAgICAgICAgc2Nhbm5lciA9IHNlbGYuc2Nhbl9vcGNvZGVzXzI1CisgICAgICAgIHNjYW5uZXIgPSBzZWxmLnNjYW5fb3Bjb2RlcwogICAgICAgICBmb3Igd2hhdCwgYXJncyBpbiBzY2FubmVyKGNvKToKICAgICAgICAgICAgIGlmIHdoYXQgPT0gInN0b3JlIjoKICAgICAgICAgICAgICAgICBuYW1lLCA9IGFyZ3MKZGlmZiAtLWdpdCBhL0xpYi9tc2lsaWIvX19pbml0X18ucHkgYi9MaWIvbXNpbGliL19faW5pdF9fLnB5CmluZGV4IDZkMGEyOGYuLmYwMzcwYzIgMTAwNjQ0Ci0tLSBhL0xpYi9tc2lsaWIvX19pbml0X18ucHkKKysrIGIvTGliL21zaWxpYi9fX2luaXRfXy5weQpAQCAtMSw3ICsxLDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA1IE1hcnRpbiB2LiBMw7Z3aXMKICMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogZnJvbSBfbXNpIGltcG9ydCAqCi1pbXBvcnQgZ2xvYgoraW1wb3J0IGZubWF0Y2gKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3RyaW5nCkBAIC0yODksNyArMjg5LDcgQEAKICAgICBkZWYgbWFrZV9zaG9ydChzZWxmLCBmaWxlKToKICAgICAgICAgb2xkZmlsZSA9IGZpbGUKICAgICAgICAgZmlsZSA9IGZpbGUucmVwbGFjZSgnKycsICdfJykKLSAgICAgICAgZmlsZSA9ICcnLmpvaW4oYyBmb3IgYyBpbiBmaWxlIGlmIG5vdCBjIGluICcgIi9cW106Oz0sJykKKyAgICAgICAgZmlsZSA9ICcnLmpvaW4oYyBmb3IgYyBpbiBmaWxlIGlmIG5vdCBjIGluIHInICIvXFtdOjs9LCcpCiAgICAgICAgIHBhcnRzID0gZmlsZS5zcGxpdCgiLiIpCiAgICAgICAgIGlmIGxlbihwYXJ0cykgPiAxOgogICAgICAgICAgICAgcHJlZml4ID0gIiIuam9pbihwYXJ0c1s6LTFdKS51cHBlcigpCkBAIC0zNzksNyArMzc5LDEzIEBACiAgICAgZGVmIGdsb2Ioc2VsZiwgcGF0dGVybiwgZXhjbHVkZSA9IE5vbmUpOgogICAgICAgICAiIiJBZGQgYSBsaXN0IG9mIGZpbGVzIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBhcyBzcGVjaWZpZWQgaW4gdGhlCiAgICAgICAgIGdsb2IgcGF0dGVybi4gSW5kaXZpZHVhbCBmaWxlcyBjYW4gYmUgZXhjbHVkZWQgaW4gdGhlIGV4Y2x1ZGUgbGlzdC4iIiIKLSAgICAgICAgZmlsZXMgPSBnbG9iLmdsb2IxKHNlbGYuYWJzb2x1dGUsIHBhdHRlcm4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbGVzID0gb3MubGlzdGRpcihzZWxmLmFic29sdXRlKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBpZiBwYXR0ZXJuWzoxXSAhPSAnLic6CisgICAgICAgICAgICBmaWxlcyA9IChmIGZvciBmIGluIGZpbGVzIGlmIGZbMF0gIT0gJy4nKQorICAgICAgICBmaWxlcyA9IGZubWF0Y2guZmlsdGVyKGZpbGVzLCBwYXR0ZXJuKQogICAgICAgICBmb3IgZiBpbiBmaWxlczoKICAgICAgICAgICAgIGlmIGV4Y2x1ZGUgYW5kIGYgaW4gZXhjbHVkZTogY29udGludWUKICAgICAgICAgICAgIHNlbGYuYWRkX2ZpbGUoZikKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQppbmRleCBkMGExYjg2Li5kNDllOGYwIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CkBAIC0yMCwxMSArMjAsMTEgQEAKIAogaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKIAotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogCiBmcm9tIC4gaW1wb3J0IEF1dGhlbnRpY2F0aW9uRXJyb3IsIEJ1ZmZlclRvb1Nob3J0Ci1mcm9tIC5yZWR1Y3Rpb24gaW1wb3J0IEZvcmtpbmdQaWNrbGVyCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24KK19Gb3JraW5nUGlja2xlciA9IHJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgogCiB0cnk6CiAgICAgaW1wb3J0IF93aW5hcGkKQEAgLTIwMyw3ICsyMDMsNyBAQAogICAgICAgICAiIiJTZW5kIGEgKHBpY2tsYWJsZSkgb2JqZWN0IiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgIHNlbGYuX2NoZWNrX3dyaXRhYmxlKCkKLSAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhGb3JraW5nUGlja2xlci5kdW1wcyhvYmopKQorICAgICAgICBzZWxmLl9zZW5kX2J5dGVzKF9Gb3JraW5nUGlja2xlci5kdW1wcyhvYmopKQogCiAgICAgZGVmIHJlY3ZfYnl0ZXMoc2VsZiwgbWF4bGVuZ3RoPU5vbmUpOgogICAgICAgICAiIiIKQEAgLTI0OCw3ICsyNDgsNyBAQAogICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCiAgICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3ZfYnl0ZXMoKQotICAgICAgICByZXR1cm4gRm9ya2luZ1BpY2tsZXIubG9hZHMoYnVmLmdldGJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gX0ZvcmtpbmdQaWNrbGVyLmxvYWRzKGJ1Zi5nZXRidWZmZXIoKSkKIAogICAgIGRlZiBwb2xsKHNlbGYsIHRpbWVvdXQ9MC4wKToKICAgICAgICAgIiIiV2hldGhlciB0aGVyZSBpcyBhbnkgaW5wdXQgYXZhaWxhYmxlIHRvIGJlIHJlYWQiIiIKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weQppbmRleCA2Mzg0OWY5Li4wOTQ1NWUyIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5CkBAIC0zLDYgKzMsNyBAQAogaW1wb3J0IHRocmVhZGluZwogCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKK2Zyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiAKIF9fYWxsX18gPSBbXSAgICAgICAgICAgICMgdGhpbmdzIGFyZSBjb3BpZWQgZnJvbSBoZXJlIHRvIF9faW5pdF9fLnB5CiAKQEAgLTE5OCw2ICsxOTksMTYgQEAKICAgICBkZWYgc2V0X3N0YXJ0X21ldGhvZChzZWxmLCBtZXRob2Q9Tm9uZSk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2Nhbm5vdCBzZXQgc3RhcnQgbWV0aG9kIG9mIGNvbmNyZXRlIGNvbnRleHQnKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJlZHVjZXIoc2VsZik6CisgICAgICAgICcnJ0NvbnRyb2xzIGhvdyBvYmplY3RzIHdpbGwgYmUgcmVkdWNlZCB0byBhIGZvcm0gdGhhdCBjYW4gYmUKKyAgICAgICAgc2hhcmVkIHdpdGggb3RoZXIgcHJvY2Vzc2VzLicnJworICAgICAgICByZXR1cm4gZ2xvYmFscygpLmdldCgncmVkdWN0aW9uJykKKworICAgIEByZWR1Y2VyLnNldHRlcgorICAgIGRlZiByZWR1Y2VyKHNlbGYsIHJlZHVjdGlvbik6CisgICAgICAgIGdsb2JhbHMoKVsncmVkdWN0aW9uJ10gPSByZWR1Y3Rpb24KKwogICAgIGRlZiBfY2hlY2tfYXZhaWxhYmxlKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAgLTI0NSw3ICsyNTYsNiBAQAogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgIHJldHVybiBbJ3NwYXduJ10KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiAgICAgICAgICAgICBpZiByZWR1Y3Rpb24uSEFWRV9TRU5EX0hBTkRMRToKICAgICAgICAgICAgICAgICByZXR1cm4gWydmb3JrJywgJ3NwYXduJywgJ2ZvcmtzZXJ2ZXInXQogICAgICAgICAgICAgZWxzZToKQEAgLTI5Miw3ICszMDIsNiBAQAogICAgICAgICBfbmFtZSA9ICdmb3Jrc2VydmVyJwogICAgICAgICBQcm9jZXNzID0gRm9ya1NlcnZlclByb2Nlc3MKICAgICAgICAgZGVmIF9jaGVja19hdmFpbGFibGUoc2VsZik6Ci0gICAgICAgICAgICBmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogICAgICAgICAgICAgaWYgbm90IHJlZHVjdGlvbi5IQVZFX1NFTkRfSEFORExFOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ZvcmtzZXJ2ZXIgc3RhcnQgbWV0aG9kIG5vdCBhdmFpbGFibGUnKQogCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKaW5kZXggYWQwMWVkZS4uZjJjMTc5ZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQpAQCAtOSw3ICs5LDcgQEAKIAogZnJvbSAuIGltcG9ydCBjb25uZWN0aW9uCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgc2VtYXBob3JlX3RyYWNrZXIKIGZyb20gLiBpbXBvcnQgc3Bhd24KIGZyb20gLiBpbXBvcnQgdXRpbApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CmluZGV4IDQ0ZDk2MzguLjQ0MzMyMTUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKQEAgLTE0LDggKzE0LDcgQEAKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRocmVhZGluZwogCi1mcm9tIC4gaW1wb3J0IGNvbnRleHQKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIGFzc2VydF9zcGF3bmluZwogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ0J1ZmZlcldyYXBwZXInXQpAQCAtNDgsNyArNDcsNyBAQAogICAgICAgICAgICAgc2VsZi5fc3RhdGUgPSAoc2VsZi5zaXplLCBzZWxmLm5hbWUpCiAKICAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKLSAgICAgICAgICAgIGNvbnRleHQuYXNzZXJ0X3NwYXduaW5nKHNlbGYpCisgICAgICAgICAgICBhc3NlcnRfc3Bhd25pbmcoc2VsZikKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0ZQogCiAgICAgICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKaW5kZXggYjE3NTQ3MC4uYjljZTg0YiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CkBAIC0yMywxMCArMjMsOSBAQAogZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGMKIAogZnJvbSAuIGltcG9ydCBjb25uZWN0aW9uCi1mcm9tIC4gaW1wb3J0IGNvbnRleHQKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgZ2V0X3NwYXduaW5nX3BvcGVuCiBmcm9tIC4gaW1wb3J0IHBvb2wKIGZyb20gLiBpbXBvcnQgcHJvY2VzcwotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCBnZXRfY29udGV4dAogCkBAIC0xNDIsNyArMTQxLDggQEAKIAogICAgICAgICBzZWxmLmlkX3RvX29iaiA9IHsnMCc6IChOb25lLCAoKSl9CiAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnQgPSB7fQotICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLlJMb2NrKCkKKyAgICAgICAgc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmogPSB7fQorICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLkxvY2soKQogCiAgICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZik6CiAgICAgICAgICcnJwpAQCAtMjI3LDcgKzIyNywxNCBAQAogICAgICAgICAgICAgICAgIG1ldGhvZG5hbWUgPSBvYmogPSBOb25lCiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IHJlY3YoKQogICAgICAgICAgICAgICAgIGlkZW50LCBtZXRob2RuYW1lLCBhcmdzLCBrd2RzID0gcmVxdWVzdAotICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gaWRfdG9fb2JqW2lkZW50XQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBpZF90b19vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGtlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29ialtpZGVudF0KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIHNlY29uZF9rZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGtlCiAKICAgICAgICAgICAgICAgICBpZiBtZXRob2RuYW1lIG5vdCBpbiBleHBvc2VkOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKQEAgLTMwOCw3ICszMTUsNyBAQAogICAgICAgICAnJycKICAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgICAgIGtleXMgPSBsaXN0KHNlbGYuaWRfdG9fb2JqLmtleXMoKSkKKyAgICAgICAgICAgIGtleXMgPSBsaXN0KHNlbGYuaWRfdG9fcmVmY291bnQua2V5cygpKQogICAgICAgICAgICAga2V5cy5zb3J0KCkKICAgICAgICAgICAgIGZvciBpZGVudCBpbiBrZXlzOgogICAgICAgICAgICAgICAgIGlmIGlkZW50ICE9ICcwJzoKQEAgLTMyMSw3ICszMjgsOCBAQAogICAgICAgICAnJycKICAgICAgICAgTnVtYmVyIG9mIHNoYXJlZCBvYmplY3RzCiAgICAgICAgICcnJwotICAgICAgICByZXR1cm4gbGVuKHNlbGYuaWRfdG9fb2JqKSAtIDEgICAgICAjIGRvbid0IGNvdW50IGlkZW50PScwJworICAgICAgICAjIERvZXNuJ3QgdXNlIChsZW4oc2VsZi5pZF90b19vYmopIC0gMSkgYXMgd2Ugc2hvdWxkbid0IGNvdW50IGlkZW50PScwJworICAgICAgICByZXR1cm4gbGVuKHNlbGYuaWRfdG9fcmVmY291bnQpCiAKICAgICBkZWYgc2h1dGRvd24oc2VsZiwgYyk6CiAgICAgICAgICcnJwpAQCAtMzYzLDEzICszNzEsOSBAQAogICAgICAgICAgICAgc2VsZi5pZF90b19vYmpbaWRlbnRdID0gKG9iaiwgc2V0KGV4cG9zZWQpLCBtZXRob2RfdG9fdHlwZWlkKQogICAgICAgICAgICAgaWYgaWRlbnQgbm90IGluIHNlbGYuaWRfdG9fcmVmY291bnQ6CiAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPSAwCi0gICAgICAgICAgICAjIGluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IGltbWVkaWF0ZWx5LCB0byBhdm9pZAotICAgICAgICAgICAgIyB0aGlzIG9iamVjdCBiZWluZyBnYXJiYWdlIGNvbGxlY3RlZCBiZWZvcmUgYSBQcm94eQotICAgICAgICAgICAgIyBvYmplY3QgZm9yIGl0IGNhbiBiZSBjcmVhdGVkLiAgVGhlIGNhbGxlciBvZiBjcmVhdGUoKQotICAgICAgICAgICAgIyBpcyByZXNwb25zaWJsZSBmb3IgZG9pbmcgYSBkZWNyZWYgb25jZSB0aGUgUHJveHkgb2JqZWN0Ci0gICAgICAgICAgICAjIGhhcyBiZWVuIGNyZWF0ZWQuCi0gICAgICAgICAgICBzZWxmLmluY3JlZihjLCBpZGVudCkKLSAgICAgICAgICAgIHJldHVybiBpZGVudCwgdHVwbGUoZXhwb3NlZCkKKworICAgICAgICBzZWxmLmluY3JlZihjLCBpZGVudCkKKyAgICAgICAgcmV0dXJuIGlkZW50LCB0dXBsZShleHBvc2VkKQogCiAgICAgZGVmIGdldF9tZXRob2RzKHNlbGYsIGMsIHRva2VuKToKICAgICAgICAgJycnCkBAIC0zODcsMTUgKzM5MSw0NSBAQAogCiAgICAgZGVmIGluY3JlZihzZWxmLCBjLCBpZGVudCk6CiAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKLSAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdICs9IDEKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSArPSAxCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMga2U6CisgICAgICAgICAgICAgICAgIyBJZiBubyBleHRlcm5hbCByZWZlcmVuY2VzIGV4aXN0IGJ1dCBhbiBpbnRlcm5hbCAodG8gdGhlCisgICAgICAgICAgICAgICAgIyBtYW5hZ2VyKSBzdGlsbCBkb2VzIGFuZCBhIG5ldyBleHRlcm5hbCByZWZlcmVuY2UgaXMgY3JlYXRlZAorICAgICAgICAgICAgICAgICMgZnJvbSBpdCwgcmVzdG9yZSB0aGUgbWFuYWdlcidzIHRyYWNraW5nIG9mIGl0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgIyBwcmV2aW91c2x5IHN0YXNoZWQgaW50ZXJuYWwgcmVmLgorICAgICAgICAgICAgICAgIGlmIGlkZW50IGluIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9IDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19vYmpbaWRlbnRdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gc2VsZi5pZF90b19vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ1NlcnZlciByZS1lbmFibGVkIHRyYWNraW5nICYgSU5DUkVGICVyJywgaWRlbnQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Uga2UKIAogICAgIGRlZiBkZWNyZWYoc2VsZiwgYywgaWRlbnQpOgorICAgICAgICBpZiBpZGVudCBub3QgaW4gc2VsZi5pZF90b19yZWZjb3VudCBhbmQgXAorICAgICAgICAgICAgaWRlbnQgaW4gc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmo6CisgICAgICAgICAgICB1dGlsLmRlYnVnKCdTZXJ2ZXIgREVDUkVGIHNraXBwaW5nICVyJywgaWRlbnQpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgICBhc3NlcnQgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPj0gMQogICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gLT0gMQogICAgICAgICAgICAgaWYgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPT0gMDoKLSAgICAgICAgICAgICAgICBkZWwgc2VsZi5pZF90b19vYmpbaWRlbnRdLCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XQotICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ2Rpc3Bvc2luZyBvZiBvYmogd2l0aCBpZCAlcicsIGlkZW50KQorICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XQorCisgICAgICAgIGlmIGlkZW50IG5vdCBpbiBzZWxmLmlkX3RvX3JlZmNvdW50OgorICAgICAgICAgICAgIyBUd28tc3RlcCBwcm9jZXNzIGluIGNhc2UgdGhlIG9iamVjdCB0dXJucyBvdXQgdG8gY29udGFpbiBvdGhlcgorICAgICAgICAgICAgIyBwcm94eSBvYmplY3RzIChlLmcuIGEgbWFuYWdlZCBsaXN0IG9mIG1hbmFnZWQgbGlzdHMpLgorICAgICAgICAgICAgIyBPdGhlcndpc2UsIGRlbGV0aW5nIHNlbGYuaWRfdG9fb2JqW2lkZW50XSB3b3VsZCB0cmlnZ2VyIHRoZQorICAgICAgICAgICAgIyBkZWxldGluZyBvZiB0aGUgc3RvcmVkIHZhbHVlIChhbm90aGVyIG1hbmFnZWQgb2JqZWN0KSB3aGljaCB3b3VsZAorICAgICAgICAgICAgIyBpbiB0dXJuIGF0dGVtcHQgdG8gYWNxdWlyZSB0aGUgbXV0ZXggdGhhdCBpcyBhbHJlYWR5IGhlbGQgaGVyZS4KKyAgICAgICAgICAgIHNlbGYuaWRfdG9fb2JqW2lkZW50XSA9IChOb25lLCAoKSwgTm9uZSkgICMgdGhyZWFkLXNhZmUKKyAgICAgICAgICAgIHV0aWwuZGVidWcoJ2Rpc3Bvc2luZyBvZiBvYmogd2l0aCBpZCAlcicsIGlkZW50KQorICAgICAgICAgICAgd2l0aCBzZWxmLm11dGV4OgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX29ialtpZGVudF0KKwogCiAjCiAjIENsYXNzIHRvIHJlcHJlc2VudCBzdGF0ZSBvZiBhIG1hbmFnZXIKQEAgLTY1OCw3ICs2OTIsNyBAQAogICAgIF9tdXRleCA9IHV0aWwuRm9ya0F3YXJlVGhyZWFkTG9jaygpCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdG9rZW4sIHNlcmlhbGl6ZXIsIG1hbmFnZXI9Tm9uZSwKLSAgICAgICAgICAgICAgICAgYXV0aGtleT1Ob25lLCBleHBvc2VkPU5vbmUsIGluY3JlZj1UcnVlKToKKyAgICAgICAgICAgICAgICAgYXV0aGtleT1Ob25lLCBleHBvc2VkPU5vbmUsIGluY3JlZj1UcnVlLCBtYW5hZ2VyX293bmVkPUZhbHNlKToKICAgICAgICAgd2l0aCBCYXNlUHJveHkuX211dGV4OgogICAgICAgICAgICAgdGxzX2lkc2V0ID0gQmFzZVByb3h5Ll9hZGRyZXNzX3RvX2xvY2FsLmdldCh0b2tlbi5hZGRyZXNzLCBOb25lKQogICAgICAgICAgICAgaWYgdGxzX2lkc2V0IGlzIE5vbmU6CkBAIC02ODAsNiArNzE0LDEyIEBACiAgICAgICAgIHNlbGYuX3NlcmlhbGl6ZXIgPSBzZXJpYWxpemVyCiAgICAgICAgIHNlbGYuX0NsaWVudCA9IGxpc3RlbmVyX2NsaWVudFtzZXJpYWxpemVyXVsxXQogCisgICAgICAgICMgU2hvdWxkIGJlIHNldCB0byBUcnVlIG9ubHkgd2hlbiBhIHByb3h5IG9iamVjdCBpcyBiZWluZyBjcmVhdGVkCisgICAgICAgICMgb24gdGhlIG1hbmFnZXIgc2VydmVyOyBwcmltYXJ5IHVzZSBjYXNlOiBuZXN0ZWQgcHJveHkgb2JqZWN0cy4KKyAgICAgICAgIyBSZWJ1aWxkUHJveHkgZGV0ZWN0cyB3aGVuIGEgcHJveHkgaXMgYmVpbmcgY3JlYXRlZCBvbiB0aGUgbWFuYWdlcgorICAgICAgICAjIGFuZCBzZXRzIHRoaXMgdmFsdWUgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgc2VsZi5fb3duZWRfYnlfbWFuYWdlciA9IG1hbmFnZXJfb3duZWQKKwogICAgICAgICBpZiBhdXRoa2V5IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5fYXV0aGtleSA9IHByb2Nlc3MuQXV0aGVudGljYXRpb25TdHJpbmcoYXV0aGtleSkKICAgICAgICAgZWxpZiBzZWxmLl9tYW5hZ2VyIGlzIG5vdCBOb25lOgpAQCAtNzM4LDYgKzc3OCwxMCBAQAogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnI0dFVFZBTFVFJykKIAogICAgIGRlZiBfaW5jcmVmKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9vd25lZF9ieV9tYW5hZ2VyOgorICAgICAgICAgICAgdXRpbC5kZWJ1Zygnb3duZWRfYnlfbWFuYWdlciBza2lwcGVkIElOQ1JFRiBvZiAlcicsIHNlbGYuX3Rva2VuLmlkKQorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgY29ubiA9IHNlbGYuX0NsaWVudChzZWxmLl90b2tlbi5hZGRyZXNzLCBhdXRoa2V5PXNlbGYuX2F1dGhrZXkpCiAgICAgICAgIGRpc3BhdGNoKGNvbm4sIE5vbmUsICdpbmNyZWYnLCAoc2VsZi5faWQsKSkKICAgICAgICAgdXRpbC5kZWJ1ZygnSU5DUkVGICVyJywgc2VsZi5fdG9rZW4uaWQpCkBAIC03ODgsNyArODMyLDcgQEAKIAogICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICBrd2RzID0ge30KLSAgICAgICAgaWYgY29udGV4dC5nZXRfc3Bhd25pbmdfcG9wZW4oKSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgZ2V0X3NwYXduaW5nX3BvcGVuKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBrd2RzWydhdXRoa2V5J10gPSBzZWxmLl9hdXRoa2V5CiAKICAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCAnX2lzYXV0bycsIEZhbHNlKToKQEAgLTgyMiwxOSArODY2LDE5IEBACiBkZWYgUmVidWlsZFByb3h5KGZ1bmMsIHRva2VuLCBzZXJpYWxpemVyLCBrd2RzKToKICAgICAnJycKICAgICBGdW5jdGlvbiB1c2VkIGZvciB1bnBpY2tsaW5nIHByb3h5IG9iamVjdHMuCi0KLSAgICBJZiBwb3NzaWJsZSB0aGUgc2hhcmVkIG9iamVjdCBpcyByZXR1cm5lZCwgb3Igb3RoZXJ3aXNlIGEgcHJveHkgZm9yIGl0LgogICAgICcnJwogICAgIHNlcnZlciA9IGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19tYW5hZ2VyX3NlcnZlcicsIE5vbmUpCi0KICAgICBpZiBzZXJ2ZXIgYW5kIHNlcnZlci5hZGRyZXNzID09IHRva2VuLmFkZHJlc3M6Ci0gICAgICAgIHJldHVybiBzZXJ2ZXIuaWRfdG9fb2JqW3Rva2VuLmlkXVswXQotICAgIGVsc2U6Ci0gICAgICAgIGluY3JlZiA9ICgKLSAgICAgICAgICAgIGt3ZHMucG9wKCdpbmNyZWYnLCBUcnVlKSBhbmQKLSAgICAgICAgICAgIG5vdCBnZXRhdHRyKHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCksICdfaW5oZXJpdGluZycsIEZhbHNlKQotICAgICAgICAgICAgKQotICAgICAgICByZXR1cm4gZnVuYyh0b2tlbiwgc2VyaWFsaXplciwgaW5jcmVmPWluY3JlZiwgKiprd2RzKQorICAgICAgICB1dGlsLmRlYnVnKCdSZWJ1aWxkIGEgcHJveHkgb3duZWQgYnkgbWFuYWdlciwgdG9rZW49JXInLCB0b2tlbikKKyAgICAgICAga3dkc1snbWFuYWdlcl9vd25lZCddID0gVHJ1ZQorICAgICAgICBpZiB0b2tlbi5pZCBub3QgaW4gc2VydmVyLmlkX3RvX2xvY2FsX3Byb3h5X29iajoKKyAgICAgICAgICAgIHNlcnZlci5pZF90b19sb2NhbF9wcm94eV9vYmpbdG9rZW4uaWRdID0gXAorICAgICAgICAgICAgICAgIHNlcnZlci5pZF90b19vYmpbdG9rZW4uaWRdCisgICAgaW5jcmVmID0gKAorICAgICAgICBrd2RzLnBvcCgnaW5jcmVmJywgVHJ1ZSkgYW5kCisgICAgICAgIG5vdCBnZXRhdHRyKHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCksICdfaW5oZXJpdGluZycsIEZhbHNlKQorICAgICAgICApCisgICAgcmV0dXJuIGZ1bmModG9rZW4sIHNlcmlhbGl6ZXIsIGluY3JlZj1pbmNyZWYsICoqa3dkcykKIAogIwogIyBGdW5jdGlvbnMgdG8gY3JlYXRlIHByb3hpZXMgYW5kIHByb3h5IHR5cGVzCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKaW5kZXggNmQyNTQ2OS4uZmZkZjQyNiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQpAQCAtNjM4LDIyICs2MzgsMjYgQEAKICAgICAgICAgICAgIHNlbGYuX251bWJlcl9sZWZ0ID0gbGVuZ3RoLy9jaHVua3NpemUgKyBib29sKGxlbmd0aCAlIGNodW5rc2l6ZSkKIAogICAgIGRlZiBfc2V0KHNlbGYsIGksIHN1Y2Nlc3NfcmVzdWx0KToKKyAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgLT0gMQogICAgICAgICBzdWNjZXNzLCByZXN1bHQgPSBzdWNjZXNzX3Jlc3VsdAotICAgICAgICBpZiBzdWNjZXNzOgorICAgICAgICBpZiBzdWNjZXNzIGFuZCBzZWxmLl9zdWNjZXNzOgogICAgICAgICAgICAgc2VsZi5fdmFsdWVbaSpzZWxmLl9jaHVua3NpemU6KGkrMSkqc2VsZi5fY2h1bmtzaXplXSA9IHJlc3VsdAotICAgICAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgLT0gMQogICAgICAgICAgICAgaWYgc2VsZi5fbnVtYmVyX2xlZnQgPT0gMDoKICAgICAgICAgICAgICAgICBpZiBzZWxmLl9jYWxsYmFjazoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2soc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KICAgICAgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fc3VjY2VzcyA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLl92YWx1ZSA9IHJlc3VsdAotICAgICAgICAgICAgaWYgc2VsZi5fZXJyb3JfY2FsbGJhY2s6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2soc2VsZi5fdmFsdWUpCi0gICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKKyAgICAgICAgICAgIGlmIG5vdCBzdWNjZXNzIGFuZCBzZWxmLl9zdWNjZXNzOgorICAgICAgICAgICAgICAgICMgb25seSBzdG9yZSBmaXJzdCBleGNlcHRpb24KKyAgICAgICAgICAgICAgICBzZWxmLl9zdWNjZXNzID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl92YWx1ZSA9IHJlc3VsdAorICAgICAgICAgICAgaWYgc2VsZi5fbnVtYmVyX2xlZnQgPT0gMDoKKyAgICAgICAgICAgICAgICAjIG9ubHkgY29uc2lkZXIgdGhlIHJlc3VsdCByZWFkeSBvbmNlIGFsbCBqb2JzIGFyZSBkb25lCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZXJyb3JfY2FsbGJhY2s6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCisgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKIAogIwogIyBDbGFzcyB3aG9zZSBpbnN0YW5jZXMgYXJlIHJldHVybmVkIGJ5IGBQb29sLmltYXAoKWAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weQppbmRleCBlNzkyMTk0Li4yMjJkYjJkIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5CkBAIC0xLDEwICsxLDkgQEAKIGltcG9ydCBpbwogaW1wb3J0IG9zCiAKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIHNldF9zcGF3bmluZ19wb3BlbgogaWYgbm90IHJlZHVjdGlvbi5IQVZFX1NFTkRfSEFORExFOgogICAgIHJhaXNlIEltcG9ydEVycm9yKCdObyBzdXBwb3J0IGZvciBzZW5kaW5nIGZkcyBiZXR3ZWVuIHByb2Nlc3NlcycpCi1mcm9tIC4gaW1wb3J0IGNvbnRleHQKIGZyb20gLiBpbXBvcnQgZm9ya3NlcnZlcgogZnJvbSAuIGltcG9ydCBwb3Blbl9mb3JrCiBmcm9tIC4gaW1wb3J0IHNwYXduCkBAIC00MiwxMiArNDEsMTIgQEAKICAgICBkZWYgX2xhdW5jaChzZWxmLCBwcm9jZXNzX29iaik6CiAgICAgICAgIHByZXBfZGF0YSA9IHNwYXduLmdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQogICAgICAgICBidWYgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKKyAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByZXBfZGF0YSwgYnVmKQogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJvY2Vzc19vYmosIGJ1ZikKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCisgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKIAogICAgICAgICBzZWxmLnNlbnRpbmVsLCB3ID0gZm9ya3NlcnZlci5jb25uZWN0X3RvX25ld19wcm9jZXNzKHNlbGYuX2ZkcykKICAgICAgICAgdXRpbC5GaW5hbGl6ZShzZWxmLCBvcy5jbG9zZSwgKHNlbGYuc2VudGluZWwsKSkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3Bvc2l4LnB5CmluZGV4IDZiMGE4ZDYuLjk4ZjhmMGEgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weQpAQCAtMSw5ICsxLDggQEAKIGltcG9ydCBpbwogaW1wb3J0IG9zCiAKLWZyb20gLiBpbXBvcnQgY29udGV4dAorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBzZXRfc3Bhd25pbmdfcG9wZW4KIGZyb20gLiBpbXBvcnQgcG9wZW5fZm9yawotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgc3Bhd24KIGZyb20gLiBpbXBvcnQgdXRpbAogCkBAIC00MiwxMiArNDEsMTIgQEAKICAgICAgICAgc2VsZi5fZmRzLmFwcGVuZCh0cmFja2VyX2ZkKQogICAgICAgICBwcmVwX2RhdGEgPSBzcGF3bi5nZXRfcHJlcGFyYXRpb25fZGF0YShwcm9jZXNzX29iai5fbmFtZSkKICAgICAgICAgZnAgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKKyAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByZXBfZGF0YSwgZnApCiAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgZnApCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihOb25lKQorICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCiAKICAgICAgICAgcGFyZW50X3IgPSBjaGlsZF93ID0gY2hpbGRfciA9IHBhcmVudF93ID0gTm9uZQogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl93aW4zMi5weQppbmRleCAzYjUzMDY4Li42ZmQ1ODhmIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkKQEAgLTQsOSArNCw4IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgX3dpbmFwaQogCi1mcm9tIC4gaW1wb3J0IGNvbnRleHQKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgZ2V0X3NwYXduaW5nX3BvcGVuLCBzZXRfc3Bhd25pbmdfcG9wZW4KIGZyb20gLiBpbXBvcnQgc3Bhd24KLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnUG9wZW4nXQpAQCAtNjAsMTUgKzU5LDE1IEBACiAgICAgICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIF93aW5hcGkuQ2xvc2VIYW5kbGUsIChzZWxmLnNlbnRpbmVsLCkpCiAKICAgICAgICAgICAgICMgc2VuZCBpbmZvcm1hdGlvbiB0byBjaGlsZAotICAgICAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKKyAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihzZWxmKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByZXBfZGF0YSwgdG9fY2hpbGQpCiAgICAgICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJvY2Vzc19vYmosIHRvX2NoaWxkKQogICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihOb25lKQorICAgICAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihOb25lKQogCiAgICAgZGVmIGR1cGxpY2F0ZV9mb3JfY2hpbGQoc2VsZiwgaGFuZGxlKToKLSAgICAgICAgYXNzZXJ0IHNlbGYgaXMgY29udGV4dC5nZXRfc3Bhd25pbmdfcG9wZW4oKQorICAgICAgICBhc3NlcnQgc2VsZiBpcyBnZXRfc3Bhd25pbmdfcG9wZW4oKQogICAgICAgICByZXR1cm4gcmVkdWN0aW9uLmR1cGxpY2F0ZShoYW5kbGUsIHNlbGYuc2VudGluZWwpCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQppbmRleCA3ODZhMzAzLi5kZGEwM2RkIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQpAQCAtMjMsOSArMjMsOSBAQAogCiBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KIGZyb20gLiBpbXBvcnQgY29udGV4dAorX0ZvcmtpbmdQaWNrbGVyID0gY29udGV4dC5yZWR1Y3Rpb24uRm9ya2luZ1BpY2tsZXIKIAogZnJvbSAudXRpbCBpbXBvcnQgZGVidWcsIGluZm8sIEZpbmFsaXplLCByZWdpc3Rlcl9hZnRlcl9mb3JrLCBpc19leGl0aW5nCi1mcm9tIC5yZWR1Y3Rpb24gaW1wb3J0IEZvcmtpbmdQaWNrbGVyCiAKICMKICMgUXVldWUgdHlwZSB1c2luZyBhIHBpcGUsIGJ1ZmZlciBhbmQgdGhyZWFkCkBAIC0xMTAsNyArMTEwLDcgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmxvY2sucmVsZWFzZSgpCiAgICAgICAgICMgdW5zZXJpYWxpemUgdGhlIGRhdGEgYWZ0ZXIgaGF2aW5nIHJlbGVhc2VkIHRoZSBsb2NrCi0gICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCisgICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQogCiAgICAgZGVmIHFzaXplKHNlbGYpOgogICAgICAgICAjIFJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yIG9uIE1hYyBPU1ggYmVjYXVzZSBvZiBicm9rZW4gc2VtX2dldHZhbHVlKCkKQEAgLTIzOCw3ICsyMzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICAgICAgICAgICAgICAgICAjIHNlcmlhbGl6ZSB0aGUgZGF0YSBiZWZvcmUgYWNxdWlyaW5nIHRoZSBsb2NrCi0gICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBGb3JraW5nUGlja2xlci5kdW1wcyhvYmopCisgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBfRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgd2FjcXVpcmUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX2J5dGVzKG9iaikKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zNDIsMTEgKzM0MiwxMSBAQAogICAgICAgICB3aXRoIHNlbGYuX3Jsb2NrOgogICAgICAgICAgICAgcmVzID0gc2VsZi5fcmVhZGVyLnJlY3ZfYnl0ZXMoKQogICAgICAgICAjIHVuc2VyaWFsaXplIHRoZSBkYXRhIGFmdGVyIGhhdmluZyByZWxlYXNlZCB0aGUgbG9jawotICAgICAgICByZXR1cm4gRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQorICAgICAgICByZXR1cm4gX0ZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKIAogICAgIGRlZiBwdXQoc2VsZiwgb2JqKToKICAgICAgICAgIyBzZXJpYWxpemUgdGhlIGRhdGEgYmVmb3JlIGFjcXVpcmluZyB0aGUgbG9jawotICAgICAgICBvYmogPSBGb3JraW5nUGlja2xlci5kdW1wcyhvYmopCisgICAgICAgIG9iaiA9IF9Gb3JraW5nUGlja2xlci5kdW1wcyhvYmopCiAgICAgICAgIGlmIHNlbGYuX3dsb2NrIGlzIE5vbmU6CiAgICAgICAgICAgICAjIHdyaXRlcyB0byBhIG1lc3NhZ2Ugb3JpZW50ZWQgd2luMzIgcGlwZSBhcmUgYXRvbWljCiAgICAgICAgICAgICBzZWxmLl93cml0ZXIuc2VuZF9ieXRlcyhvYmopCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CmluZGV4IDhmMjA5YjQuLmMwNDNjOWEgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CkBAIC03LDYgKzcsNyBAQAogIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKK2Zyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogaW1wb3J0IGNvcHlyZWcKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbwpAQCAtMjM4LDMgKzIzOSwzNiBAQAogICAgICAgICBmZCA9IGRmLmRldGFjaCgpCiAgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KGZhbWlseSwgdHlwZSwgcHJvdG8sIGZpbGVubz1mZCkKICAgICByZWdpc3Rlcihzb2NrZXQuc29ja2V0LCBfcmVkdWNlX3NvY2tldCkKKworCitjbGFzcyBBYnN0cmFjdFJlZHVjZXIobWV0YWNsYXNzPUFCQ01ldGEpOgorICAgICcnJ0Fic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHVzZSBpbiBpbXBsZW1lbnRpbmcgYSBSZWR1Y3Rpb24gY2xhc3MKKyAgICBzdWl0YWJsZSBmb3IgdXNlIGluIHJlcGxhY2luZyB0aGUgc3RhbmRhcmQgcmVkdWN0aW9uIG1lY2hhbmlzbQorICAgIHVzZWQgaW4gbXVsdGlwcm9jZXNzaW5nLicnJworICAgIEZvcmtpbmdQaWNrbGVyID0gRm9ya2luZ1BpY2tsZXIKKyAgICByZWdpc3RlciA9IHJlZ2lzdGVyCisgICAgZHVtcCA9IGR1bXAKKyAgICBzZW5kX2hhbmRsZSA9IHNlbmRfaGFuZGxlCisgICAgcmVjdl9oYW5kbGUgPSByZWN2X2hhbmRsZQorCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIHN0ZWFsX2hhbmRsZSA9IHN0ZWFsX2hhbmRsZQorICAgICAgICBkdXBsaWNhdGUgPSBkdXBsaWNhdGUKKyAgICAgICAgRHVwSGFuZGxlID0gRHVwSGFuZGxlCisgICAgZWxzZToKKyAgICAgICAgc2VuZGZkcyA9IHNlbmRmZHMKKyAgICAgICAgcmVjdmZkcyA9IHJlY3ZmZHMKKyAgICAgICAgRHVwRmQgPSBEdXBGZAorCisgICAgX3JlZHVjZV9tZXRob2QgPSBfcmVkdWNlX21ldGhvZAorICAgIF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IgPSBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yCisgICAgX3JlYnVpbGRfcGFydGlhbCA9IF9yZWJ1aWxkX3BhcnRpYWwKKyAgICBfcmVkdWNlX3NvY2tldCA9IF9yZWR1Y2Vfc29ja2V0CisgICAgX3JlYnVpbGRfc29ja2V0ID0gX3JlYnVpbGRfc29ja2V0CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICByZWdpc3Rlcih0eXBlKF9DKCkuZiksIF9yZWR1Y2VfbWV0aG9kKQorICAgICAgICByZWdpc3Rlcih0eXBlKGxpc3QuYXBwZW5kKSwgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvcikKKyAgICAgICAgcmVnaXN0ZXIodHlwZShpbnQuX19hZGRfXyksIF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IpCisgICAgICAgIHJlZ2lzdGVyKGZ1bmN0b29scy5wYXJ0aWFsLCBfcmVkdWNlX3BhcnRpYWwpCisgICAgICAgIHJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIF9yZWR1Y2Vfc29ja2V0KQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9yZXNvdXJjZV9zaGFyZXIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Jlc291cmNlX3NoYXJlci5weQppbmRleCA1ZTQ2ZmM2Li5lNDRhNzI4IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Jlc291cmNlX3NoYXJlci5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Jlc291cmNlX3NoYXJlci5weQpAQCAtMTUsNyArMTUsNyBAQAogaW1wb3J0IHRocmVhZGluZwogCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogCiBfX2FsbF9fID0gWydzdG9wJ10KZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKaW5kZXggNDI1OGY1OS4uMjVjYmNmMiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKQEAgLTEzLDggKzEzLDggQEAKIGZyb20gLiBpbXBvcnQgaGVhcAogZnJvbSAuIGltcG9ydCBnZXRfY29udGV4dAogCi1mcm9tIC5jb250ZXh0IGltcG9ydCBhc3NlcnRfc3Bhd25pbmcKLWZyb20gLnJlZHVjdGlvbiBpbXBvcnQgRm9ya2luZ1BpY2tsZXIKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgYXNzZXJ0X3NwYXduaW5nCitfRm9ya2luZ1BpY2tsZXIgPSByZWR1Y3Rpb24uRm9ya2luZ1BpY2tsZXIKIAogX19hbGxfXyA9IFsnUmF3VmFsdWUnLCAnUmF3QXJyYXknLCAnVmFsdWUnLCAnQXJyYXknLCAnY29weScsICdzeW5jaHJvbml6ZWQnXQogCkBAIC0xMzQsNyArMTM0LDcgQEAKIGRlZiByZWJ1aWxkX2N0eXBlKHR5cGVfLCB3cmFwcGVyLCBsZW5ndGgpOgogICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZToKICAgICAgICAgdHlwZV8gPSB0eXBlXyAqIGxlbmd0aAotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHR5cGVfLCByZWR1Y2VfY3R5cGUpCisgICAgX0ZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHR5cGVfLCByZWR1Y2VfY3R5cGUpCiAgICAgYnVmID0gd3JhcHBlci5jcmVhdGVfbWVtb3J5dmlldygpCiAgICAgb2JqID0gdHlwZV8uZnJvbV9idWZmZXIoYnVmKQogICAgIG9iai5fd3JhcHBlciA9IHdyYXBwZXIKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5CmluZGV4IDRkNzY5NTEuLmRmYjlmNjUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weQpAQCAtOSwxMyArOSwxMyBAQAogIwogCiBpbXBvcnQgb3MKLWltcG9ydCBwaWNrbGUKIGltcG9ydCBzeXMKIGltcG9ydCBydW5weQogaW1wb3J0IHR5cGVzCiAKIGZyb20gLiBpbXBvcnQgZ2V0X3N0YXJ0X21ldGhvZCwgc2V0X3N0YXJ0X21ldGhvZAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogCiBfX2FsbF9fID0gWydfbWFpbicsICdmcmVlemVfc3VwcG9ydCcsICdzZXRfZXhlY3V0YWJsZScsICdnZXRfZXhlY3V0YWJsZScsCkBAIC05Niw4ICs5Niw3IEBACiAgICAgYXNzZXJ0IGlzX2Zvcmtpbmcoc3lzLmFyZ3YpCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgIGltcG9ydCBtc3ZjcnQKLSAgICAgICAgZnJvbSAucmVkdWN0aW9uIGltcG9ydCBzdGVhbF9oYW5kbGUKLSAgICAgICAgbmV3X2hhbmRsZSA9IHN0ZWFsX2hhbmRsZShwYXJlbnRfcGlkLCBwaXBlX2hhbmRsZSkKKyAgICAgICAgbmV3X2hhbmRsZSA9IHJlZHVjdGlvbi5zdGVhbF9oYW5kbGUocGFyZW50X3BpZCwgcGlwZV9oYW5kbGUpCiAgICAgICAgIGZkID0gbXN2Y3J0Lm9wZW5fb3NmaGFuZGxlKG5ld19oYW5kbGUsIG9zLk9fUkRPTkxZKQogICAgIGVsc2U6CiAgICAgICAgIGZyb20gLiBpbXBvcnQgc2VtYXBob3JlX3RyYWNrZXIKQEAgLTExMSw5ICsxMTAsOSBAQAogICAgIHdpdGggb3MuZmRvcGVuKGZkLCAncmInLCBjbG9zZWZkPVRydWUpIGFzIGZyb21fcGFyZW50OgogICAgICAgICBwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLl9pbmhlcml0aW5nID0gVHJ1ZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwcmVwYXJhdGlvbl9kYXRhID0gcGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCisgICAgICAgICAgICBwcmVwYXJhdGlvbl9kYXRhID0gcmVkdWN0aW9uLnBpY2tsZS5sb2FkKGZyb21fcGFyZW50KQogICAgICAgICAgICAgcHJlcGFyZShwcmVwYXJhdGlvbl9kYXRhKQotICAgICAgICAgICAgc2VsZiA9IHBpY2tsZS5sb2FkKGZyb21fcGFyZW50KQorICAgICAgICAgICAgc2VsZiA9IHJlZHVjdGlvbi5waWNrbGUubG9hZChmcm9tX3BhcmVudCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGRlbCBwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLl9pbmhlcml0aW5nCiAgICAgcmV0dXJuIHNlbGYuX2Jvb3RzdHJhcCgpCmRpZmYgLS1naXQgYS9MaWIvbnRwYXRoLnB5IGIvTGliL250cGF0aC5weQppbmRleCBhZjZhNzA5Li5hOGY0YjM3IDEwMDY0NAotLS0gYS9MaWIvbnRwYXRoLnB5CisrKyBiL0xpYi9udHBhdGgucHkKQEAgLTI4LDggKzI4LDYgQEAKIHBhdGhzZXAgPSAnOycKIGFsdHNlcCA9ICcvJwogZGVmcGF0aCA9ICcuO0M6XFxiaW4nCi1pZiAnY2UnIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKLSAgICBkZWZwYXRoID0gJ1xcV2luZG93cycKIGRldm51bGwgPSAnbnVsJwogCiBkZWYgX2dldF9ib3Roc2VwcyhwYXRoKToKQEAgLTQ2LDYgKzQ0LDcgQEAKICAgICAiIiJOb3JtYWxpemUgY2FzZSBvZiBwYXRobmFtZS4KIAogICAgIE1ha2VzIGFsbCBjaGFyYWN0ZXJzIGxvd2VyY2FzZSBhbmQgYWxsIHNsYXNoZXMgaW50byBiYWNrc2xhc2hlcy4iIiIKKyAgICBzID0gb3MuZnNwYXRoKHMpCiAgICAgdHJ5OgogICAgICAgICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKToKICAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoYicvJywgYidcXCcpLmxvd2VyKCkKQEAgLTY2LDEyICs2NSwxNCBAQAogCiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICBzID0gc3BsaXRkcml2ZShzKVsxXQogICAgIHJldHVybiBsZW4ocykgPiAwIGFuZCBzWzBdIGluIF9nZXRfYm90aHNlcHMocykKIAogCiAjIEpvaW4gdHdvIChvciBtb3JlKSBwYXRocy4KIGRlZiBqb2luKHBhdGgsICpwYXRocyk6CisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICBzZXBzID0gYidcXC8nCkBAIC04NCw3ICs4NSw3IEBACiAgICAgICAgIGlmIG5vdCBwYXRoczoKICAgICAgICAgICAgIHBhdGhbOjBdICsgc2VwICAjMjM3ODA6IEVuc3VyZSBjb21wYXRpYmxlIGRhdGEgdHlwZSBldmVuIGlmIHAgaXMgbnVsbC4KICAgICAgICAgcmVzdWx0X2RyaXZlLCByZXN1bHRfcGF0aCA9IHNwbGl0ZHJpdmUocGF0aCkKLSAgICAgICAgZm9yIHAgaW4gcGF0aHM6CisgICAgICAgIGZvciBwIGluIG1hcChvcy5mc3BhdGgsIHBhdGhzKToKICAgICAgICAgICAgIHBfZHJpdmUsIHBfcGF0aCA9IHNwbGl0ZHJpdmUocCkKICAgICAgICAgICAgIGlmIHBfcGF0aCBhbmQgcF9wYXRoWzBdIGluIHNlcHM6CiAgICAgICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyBhYnNvbHV0ZQpAQCAtMTM2LDYgKzEzNyw3IEBACiAgICAgUGF0aHMgY2Fubm90IGNvbnRhaW4gYm90aCBhIGRyaXZlIGxldHRlciBhbmQgYSBVTkMgcGF0aC4KIAogICAgICIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBsZW4ocCkgPj0gMjoKICAgICAgICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CiAgICAgICAgICAgICBzZXAgPSBiJ1xcJwpAQCAtMTk5LDcgKzIwMSw3IEBACiAKICAgICBSZXR1cm4gdHVwbGUgKGhlYWQsIHRhaWwpIHdoZXJlIHRhaWwgaXMgZXZlcnl0aGluZyBhZnRlciB0aGUgZmluYWwgc2xhc2guCiAgICAgRWl0aGVyIHBhcnQgbWF5IGJlIGVtcHR5LiIiIgotCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHNlcHMgPSBfZ2V0X2JvdGhzZXBzKHApCiAgICAgZCwgcCA9IHNwbGl0ZHJpdmUocCkKICAgICAjIHNldCBpIHRvIGluZGV4IGJleW9uZCBwJ3MgbGFzdCBzbGFzaApAQCAtMjE4LDYgKzIyMCw3IEBACiAjIEl0IGlzIGFsd2F5cyB0cnVlIHRoYXQgcm9vdCArIGV4dCA9PSBwLgogCiBkZWYgc3BsaXRleHQocCk6CisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgogICAgICAgICByZXR1cm4gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0KHAsIGInXFwnLCBiJy8nLCBiJy4nKQogICAgIGVsc2U6CkBAIC0yNzgsNiArMjgxLDcgQEAKIGRlZiBpc21vdW50KHBhdGgpOgogICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYSBtb3VudCBwb2ludCAoYSBkcml2ZSByb290LCB0aGUgcm9vdCBvZiBhCiAgICAgc2hhcmUsIG9yIGEgbW91bnRlZCB2b2x1bWUpIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIHNlcHMgPSBfZ2V0X2JvdGhzZXBzKHBhdGgpCiAgICAgcGF0aCA9IGFic3BhdGgocGF0aCkKICAgICByb290LCByZXN0ID0gc3BsaXRkcml2ZShwYXRoKQpAQCAtMzA1LDYgKzMwOSw3IEBACiAgICAgIiIiRXhwYW5kIH4gYW5kIH51c2VyIGNvbnN0cnVjdHMuCiAKICAgICBJZiB1c2VyIG9yICRIT01FIGlzIHVua25vd24sIGRvIG5vdGhpbmcuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICB0aWxkZSA9IGInficKICAgICBlbHNlOgpAQCAtMzU0LDYgKzM1OSw3IEBACiAgICAgIiIiRXhwYW5kIHNoZWxsIHZhcmlhYmxlcyBvZiB0aGUgZm9ybXMgJHZhciwgJHt2YXJ9IGFuZCAldmFyJS4KIAogICAgIFVua25vd24gdmFyaWFibGVzIGFyZSBsZWZ0IHVuY2hhbmdlZC4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIGlmIGInJCcgbm90IGluIHBhdGggYW5kIGInJScgbm90IGluIHBhdGg6CiAgICAgICAgICAgICByZXR1cm4gcGF0aApAQCAtNDY0LDYgKzQ3MCw3IEBACiAKIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIGFsdHNlcCA9IGInLycKQEAgLTUxOCw2ICs1MjUsNyBAQAogZXhjZXB0IEltcG9ydEVycm9yOiAjIG5vdCBydW5uaW5nIG9uIFdpbmRvd3MgLSBtb2NrIHVwIHNvbWV0aGluZyBzZW5zaWJsZQogICAgIGRlZiBhYnNwYXRoKHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGFic29sdXRlIHZlcnNpb24gb2YgYSBwYXRoLiIiIgorICAgICAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgICAgIGlmIG5vdCBpc2FicyhwYXRoKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZGIoKQpAQCAtNTMxLDYgKzUzOSw3IEBACiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgdmVyc2lvbiBvZiBhIHBhdGguIiIiCiAKICAgICAgICAgaWYgcGF0aDogIyBFbXB0eSBwYXRoIG11c3QgcmV0dXJuIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisgICAgICAgICAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IF9nZXRmdWxscGF0aG5hbWUocGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgpAQCAtNTQ5LDYgKzU1OCw3IEBACiAKIGRlZiByZWxwYXRoKHBhdGgsIHN0YXJ0PU5vbmUpOgogICAgICIiIlJldHVybiBhIHJlbGF0aXZlIHZlcnNpb24gb2YgYSBwYXRoIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICBjdXJkaXIgPSBiJy4nCkBAIC01NjQsNiArNTc0LDcgQEAKICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm8gcGF0aCBzcGVjaWZpZWQiKQogCisgICAgc3RhcnQgPSBvcy5mc3BhdGgoc3RhcnQpCiAgICAgdHJ5OgogICAgICAgICBzdGFydF9hYnMgPSBhYnNwYXRoKG5vcm1wYXRoKHN0YXJ0KSkKICAgICAgICAgcGF0aF9hYnMgPSBhYnNwYXRoKG5vcm1wYXRoKHBhdGgpKQpAQCAtNjA3LDYgKzYxOCw3IEBACiAgICAgaWYgbm90IHBhdGhzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjb21tb25wYXRoKCkgYXJnIGlzIGFuIGVtcHR5IHNlcXVlbmNlJykKIAorICAgIHBhdGhzID0gdHVwbGUobWFwKG9zLmZzcGF0aCwgcGF0aHMpKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aHNbMF0sIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgYWx0c2VwID0gYicvJwpkaWZmIC0tZ2l0IGEvTGliL29wY29kZS5weSBiL0xpYi9vcGNvZGUucHkKaW5kZXggNGM4MjZhNy4uYjU5MTZiNiAxMDA2NDQKLS0tIGEvTGliL29wY29kZS5weQorKysgYi9MaWIvb3Bjb2RlLnB5CkBAIC0zMSwxMiArMzEsMTAgQEAKIGhhc2xvY2FsID0gW10KIGhhc2NvbXBhcmUgPSBbXQogaGFzZnJlZSA9IFtdCi1oYXNuYXJncyA9IFtdCitoYXNuYXJncyA9IFtdICMgdW51c2VkCiAKIG9wbWFwID0ge30KLW9wbmFtZSA9IFsnJ10gKiAyNTYKLWZvciBvcCBpbiByYW5nZSgyNTYpOiBvcG5hbWVbb3BdID0gJzwlcj4nICUgKG9wLCkKLWRlbCBvcAorb3BuYW1lID0gWyc8JXI+JyAlIChvcCwpIGZvciBvcCBpbiByYW5nZSgyNTYpXQogCiBkZWYgZGVmX29wKG5hbWUsIG9wKToKICAgICBvcG5hbWVbb3BdID0gbmFtZQpAQCAtMTIxLDcgKzExOSw3IEBACiAKIGRlZl9vcCgnUkVUVVJOX1ZBTFVFJywgODMpCiBkZWZfb3AoJ0lNUE9SVF9TVEFSJywgODQpCi0KK2RlZl9vcCgnU0VUVVBfQU5OT1RBVElPTlMnLCA4NSkKIGRlZl9vcCgnWUlFTERfVkFMVUUnLCA4NikKIGRlZl9vcCgnUE9QX0JMT0NLJywgODcpCiBkZWZfb3AoJ0VORF9GSU5BTExZJywgODgpCkBAIC0xNzEsMTMgKzE2OSwxMiBAQAogaGFzbG9jYWwuYXBwZW5kKDEyNSkKIGRlZl9vcCgnREVMRVRFX0ZBU1QnLCAxMjYpICAgICAgIyBMb2NhbCB2YXJpYWJsZSBudW1iZXIKIGhhc2xvY2FsLmFwcGVuZCgxMjYpCituYW1lX29wKCdTVE9SRV9BTk5PVEFUSU9OJywgMTI3KSAjIEluZGV4IGluIG5hbWUgbGlzdAogCiBkZWZfb3AoJ1JBSVNFX1ZBUkFSR1MnLCAxMzApICAgICMgTnVtYmVyIG9mIHJhaXNlIGFyZ3VtZW50cyAoMSwgMiwgb3IgMykKLWRlZl9vcCgnQ0FMTF9GVU5DVElPTicsIDEzMSkgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCi1oYXNuYXJncy5hcHBlbmQoMTMxKQotZGVmX29wKCdNQUtFX0ZVTkNUSU9OJywgMTMyKSAgICAjIE51bWJlciBvZiBhcmdzIHdpdGggZGVmYXVsdCB2YWx1ZXMKK2RlZl9vcCgnQ0FMTF9GVU5DVElPTicsIDEzMSkgICAgIyAjYXJncworZGVmX29wKCdNQUtFX0ZVTkNUSU9OJywgMTMyKSAgICAjIEZsYWdzCiBkZWZfb3AoJ0JVSUxEX1NMSUNFJywgMTMzKSAgICAgICMgTnVtYmVyIG9mIGl0ZW1zCi1kZWZfb3AoJ01BS0VfQ0xPU1VSRScsIDEzNCkKIGRlZl9vcCgnTE9BRF9DTE9TVVJFJywgMTM1KQogaGFzZnJlZS5hcHBlbmQoMTM1KQogZGVmX29wKCdMT0FEX0RFUkVGJywgMTM2KQpAQCAtMTg3LDEyICsxODQsOCBAQAogZGVmX29wKCdERUxFVEVfREVSRUYnLCAxMzgpCiBoYXNmcmVlLmFwcGVuZCgxMzgpCiAKLWRlZl9vcCgnQ0FMTF9GVU5DVElPTl9WQVInLCAxNDApICAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxNDApCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT05fS1cnLCAxNDEpICAgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCi1oYXNuYXJncy5hcHBlbmQoMTQxKQotZGVmX29wKCdDQUxMX0ZVTkNUSU9OX1ZBUl9LVycsIDE0MikgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDE0MikKK2RlZl9vcCgnQ0FMTF9GVU5DVElPTl9LVycsIDE0MSkgICMgI2FyZ3MgKyAja3dhcmdzCitkZWZfb3AoJ0NBTExfRlVOQ1RJT05fRVgnLCAxNDIpICAjIEZsYWdzCiAKIGpyZWxfb3AoJ1NFVFVQX1dJVEgnLCAxNDMpCiAKQEAgLTIwMyw4ICsxOTYsNiBAQAogZGVmX29wKCdMT0FEX0NMQVNTREVSRUYnLCAxNDgpCiBoYXNmcmVlLmFwcGVuZCgxNDgpCiAKLWpyZWxfb3AoJ1NFVFVQX0FTWU5DX1dJVEgnLCAxNTQpCi0KIGRlZl9vcCgnRVhURU5ERURfQVJHJywgMTQ0KQogRVhURU5ERURfQVJHID0gMTQ0CiAKQEAgLTIxNCw0ICsyMDUsMTEgQEAKIGRlZl9vcCgnQlVJTERfVFVQTEVfVU5QQUNLJywgMTUyKQogZGVmX29wKCdCVUlMRF9TRVRfVU5QQUNLJywgMTUzKQogCitqcmVsX29wKCdTRVRVUF9BU1lOQ19XSVRIJywgMTU0KQorCitkZWZfb3AoJ0ZPUk1BVF9WQUxVRScsIDE1NSkKK2RlZl9vcCgnQlVJTERfQ09OU1RfS0VZX01BUCcsIDE1NikKK2RlZl9vcCgnQlVJTERfU1RSSU5HJywgMTU3KQorZGVmX29wKCdCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMJywgMTU4KQorCiBkZWwgZGVmX29wLCBuYW1lX29wLCBqcmVsX29wLCBqYWJzX29wCmRpZmYgLS1naXQgYS9MaWIvb3B0cGFyc2UucHkgYi9MaWIvb3B0cGFyc2UucHkKaW5kZXggNzRiM2IzNi4uZThhYzFlMSAxMDA2NDQKLS0tIGEvTGliL29wdHBhcnNlLnB5CisrKyBiL0xpYi9vcHRwYXJzZS5weQpAQCAtMzgsNyArMzgsOCBAQAogICAgICAgICAgICAnT3B0aW9uRXJyb3InLAogICAgICAgICAgICAnT3B0aW9uQ29uZmxpY3RFcnJvcicsCiAgICAgICAgICAgICdPcHRpb25WYWx1ZUVycm9yJywKLSAgICAgICAgICAgJ0JhZE9wdGlvbkVycm9yJ10KKyAgICAgICAgICAgJ0JhZE9wdGlvbkVycm9yJywKKyAgICAgICAgICAgJ2NoZWNrX2Nob2ljZSddCiAKIF9fY29weXJpZ2h0X18gPSAiIiIKIENvcHlyaWdodCAoYykgMjAwMS0yMDA2IEdyZWdvcnkgUC4gV2FyZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCmRpZmYgLS1naXQgYS9MaWIvb3MucHkgYi9MaWIvb3MucHkKaW5kZXggYjRjNjUxZC4uMGM5MTA3YyAxMDA2NDQKLS0tIGEvTGliL29zLnB5CisrKyBiL0xpYi9vcy5weQpAQCAtMSwxMiArMSwxMiBAQAogciIiIk9TIHJvdXRpbmVzIGZvciBOVCBvciBQb3NpeCBkZXBlbmRpbmcgb24gd2hhdCBzeXN0ZW0gd2UncmUgb24uCiAKIFRoaXMgZXhwb3J0czoKLSAgLSBhbGwgZnVuY3Rpb25zIGZyb20gcG9zaXgsIG50IG9yIGNlLCBlLmcuIHVubGluaywgc3RhdCwgZXRjLgorICAtIGFsbCBmdW5jdGlvbnMgZnJvbSBwb3NpeCBvciBudCwgZS5nLiB1bmxpbmssIHN0YXQsIGV0Yy4KICAgLSBvcy5wYXRoIGlzIGVpdGhlciBwb3NpeHBhdGggb3IgbnRwYXRoCi0gIC0gb3MubmFtZSBpcyBlaXRoZXIgJ3Bvc2l4JywgJ250JyBvciAnY2UnLgotICAtIG9zLmN1cmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgZGlyZWN0b3J5ICgnLicgb3IgJzonKQotICAtIG9zLnBhcmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhcmVudCBkaXJlY3RvcnkgKCcuLicgb3IgJzo6JykKLSAgLSBvcy5zZXAgaXMgdGhlIChvciBhIG1vc3QgY29tbW9uKSBwYXRobmFtZSBzZXBhcmF0b3IgKCcvJyBvciAnOicgb3IgJ1xcJykKKyAgLSBvcy5uYW1lIGlzIGVpdGhlciAncG9zaXgnIG9yICdudCcKKyAgLSBvcy5jdXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAoYWx3YXlzICcuJykKKyAgLSBvcy5wYXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXJlbnQgZGlyZWN0b3J5IChhbHdheXMgJy4uJykKKyAgLSBvcy5zZXAgaXMgdGhlIChvciBhIG1vc3QgY29tbW9uKSBwYXRobmFtZSBzZXBhcmF0b3IgKCcvJyBvciAnXFwnKQogICAtIG9zLmV4dHNlcCBpcyB0aGUgZXh0ZW5zaW9uIHNlcGFyYXRvciAoYWx3YXlzICcuJykKICAgLSBvcy5hbHRzZXAgaXMgdGhlIGFsdGVybmF0ZSBwYXRobmFtZSBzZXBhcmF0b3IgKE5vbmUgb3IgJy8nKQogICAtIG9zLnBhdGhzZXAgaXMgdGhlIGNvbXBvbmVudCBzZXBhcmF0b3IgdXNlZCBpbiAkUEFUSCBldGMKQEAgLTIyLDcgKzIyLDcgQEAKICIiIgogCiAjJwotCitpbXBvcnQgYWJjCiBpbXBvcnQgc3lzLCBlcnJubwogaW1wb3J0IHN0YXQgYXMgc3QKIApAQCAtODUsMjcgKzg1LDYgQEAKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MKIAotZWxpZiAnY2UnIGluIF9uYW1lczoKLSAgICBuYW1lID0gJ2NlJwotICAgIGxpbmVzZXAgPSAnXHJcbicKLSAgICBmcm9tIGNlIGltcG9ydCAqCi0gICAgdHJ5OgotICAgICAgICBmcm9tIGNlIGltcG9ydCBfZXhpdAotICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotICAgICMgV2UgY2FuIHVzZSB0aGUgc3RhbmRhcmQgV2luZG93cyBwYXRoLgotICAgIGltcG9ydCBudHBhdGggYXMgcGF0aAotCi0gICAgaW1wb3J0IGNlCi0gICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3QoY2UpKQotICAgIGRlbCBjZQotCi0gICAgdHJ5OgotICAgICAgICBmcm9tIGNlIGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLQogZWxzZToKICAgICByYWlzZSBJbXBvcnRFcnJvcignbm8gb3Mgc3BlY2lmaWMgbW9kdWxlIGZvdW5kJykKIApAQCAtMzUzLDkgKzMzMiwxMCBAQAogICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcwogCiAgICAgIiIiCi0KKyAgICB0b3AgPSBmc3BhdGgodG9wKQogICAgIGRpcnMgPSBbXQogICAgIG5vbmRpcnMgPSBbXQorICAgIHdhbGtfZGlycyA9IFtdCiAKICAgICAjIFdlIG1heSBub3QgaGF2ZSByZWFkIHBlcm1pc3Npb24gZm9yIHRvcCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW4ndAogICAgICMgZ2V0IGEgbGlzdCBvZiB0aGUgZmlsZXMgdGhlIGRpcmVjdG9yeSBjb250YWlucy4gIG9zLndhbGsKQEAgLTM2Myw0OCArMzQzLDU1IEBACiAgICAgIyBtaW5vciByZWFzb24gd2hlbiAoc2F5KSBhIHRob3VzYW5kIHJlYWRhYmxlIGRpcmVjdG9yaWVzIGFyZSBzdGlsbAogICAgICMgbGVmdCB0byB2aXNpdC4gIFRoYXQgbG9naWMgaXMgY29waWVkIGhlcmUuCiAgICAgdHJ5OgotICAgICAgICBpZiBuYW1lID09ICdudCcgYW5kIGlzaW5zdGFuY2UodG9wLCBieXRlcyk6Ci0gICAgICAgICAgICBzY2FuZGlyX2l0ID0gX2R1bW15X3NjYW5kaXIodG9wKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBOb3RlIHRoYXQgc2NhbmRpciBpcyBnbG9iYWwgaW4gdGhpcyBtb2R1bGUgZHVlCi0gICAgICAgICAgICAjIHRvIGVhcmxpZXIgaW1wb3J0LSouCi0gICAgICAgICAgICBzY2FuZGlyX2l0ID0gc2NhbmRpcih0b3ApCi0gICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXJfaXQpCisgICAgICAgICMgTm90ZSB0aGF0IHNjYW5kaXIgaXMgZ2xvYmFsIGluIHRoaXMgbW9kdWxlIGR1ZQorICAgICAgICAjIHRvIGVhcmxpZXIgaW1wb3J0LSouCisgICAgICAgIHNjYW5kaXJfaXQgPSBzY2FuZGlyKHRvcCkKICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIG9uZXJyb3IoZXJyb3IpCiAgICAgICAgIHJldHVybgogCi0gICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlzX2RpciA9IGVudHJ5LmlzX2RpcigpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgIyBJZiBpc19kaXIoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUgZW50cnkgaXMgbm90Ci0gICAgICAgICAgICAjIGEgZGlyZWN0b3J5LCBzYW1lIGJlaGF2aW91ciB0aGFuIG9zLnBhdGguaXNkaXIoKS4KLSAgICAgICAgICAgIGlzX2RpciA9IEZhbHNlCi0KLSAgICAgICAgaWYgaXNfZGlyOgotICAgICAgICAgICAgZGlycy5hcHBlbmQoZW50cnkubmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCi0KLSAgICAgICAgaWYgbm90IHRvcGRvd24gYW5kIGlzX2RpcjoKLSAgICAgICAgICAgICMgQm90dG9tLXVwOiByZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yeSwgYnV0IGV4Y2x1ZGUgc3ltbGlua3MgdG8KLSAgICAgICAgICAgICMgZGlyZWN0b3JpZXMgaWYgZm9sbG93bGlua3MgaXMgRmFsc2UKLSAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzOgotICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IFRydWUKLSAgICAgICAgICAgIGVsc2U6CisgICAgd2l0aCBzY2FuZGlyX2l0OgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IGVudHJ5LmlzX3N5bWxpbmsoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICAjIElmIGlzX3N5bWxpbmsoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBlbnRyeSBpcyBub3QgYSBzeW1ib2xpYyBsaW5rLCBzYW1lIGJlaGF2aW91ciB0aGFuCi0gICAgICAgICAgICAgICAgICAgICMgb3MucGF0aC5pc2xpbmsoKS4KLSAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IEZhbHNlCi0gICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gbm90IGlzX3N5bWxpbmsKKyAgICAgICAgICAgICAgICAgICAgZW50cnkgPSBuZXh0KHNjYW5kaXJfaXQpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICAgICBpZiB3YWxrX2ludG86Ci0gICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKGVudHJ5LnBhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlzX2RpciA9IGVudHJ5LmlzX2RpcigpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAjIElmIGlzX2RpcigpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZSBlbnRyeSBpcyBub3QKKyAgICAgICAgICAgICAgICAjIGEgZGlyZWN0b3J5LCBzYW1lIGJlaGF2aW91ciB0aGFuIG9zLnBhdGguaXNkaXIoKS4KKyAgICAgICAgICAgICAgICBpc19kaXIgPSBGYWxzZQorCisgICAgICAgICAgICBpZiBpc19kaXI6CisgICAgICAgICAgICAgICAgZGlycy5hcHBlbmQoZW50cnkubmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQoZW50cnkubmFtZSkKKworICAgICAgICAgICAgaWYgbm90IHRvcGRvd24gYW5kIGlzX2RpcjoKKyAgICAgICAgICAgICAgICAjIEJvdHRvbS11cDogcmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcnksIGJ1dCBleGNsdWRlIHN5bWxpbmtzIHRvCisgICAgICAgICAgICAgICAgIyBkaXJlY3RvcmllcyBpZiBmb2xsb3dsaW5rcyBpcyBGYWxzZQorICAgICAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzOgorICAgICAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBUcnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IGVudHJ5LmlzX3N5bWxpbmsoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgaXNfc3ltbGluaygpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBlbnRyeSBpcyBub3QgYSBzeW1ib2xpYyBsaW5rLCBzYW1lIGJlaGF2aW91ciB0aGFuCisgICAgICAgICAgICAgICAgICAgICAgICAjIG9zLnBhdGguaXNsaW5rKCkuCisgICAgICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gbm90IGlzX3N5bWxpbmsKKworICAgICAgICAgICAgICAgIGlmIHdhbGtfaW50bzoKKyAgICAgICAgICAgICAgICAgICAgd2Fsa19kaXJzLmFwcGVuZChlbnRyeS5wYXRoKQogCiAgICAgIyBZaWVsZCBiZWZvcmUgcmVjdXJzaW9uIGlmIGdvaW5nIHRvcCBkb3duCiAgICAgaWYgdG9wZG93bjoKQEAgLTQyMSw1NyArNDA4LDEyIEBACiAgICAgICAgICAgICBpZiBmb2xsb3dsaW5rcyBvciBub3QgaXNsaW5rKG5ld19wYXRoKToKICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQogICAgIGVsc2U6CisgICAgICAgICMgUmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcmllcworICAgICAgICBmb3IgbmV3X3BhdGggaW4gd2Fsa19kaXJzOgorICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKICAgICAgICAgIyBZaWVsZCBhZnRlciByZWN1cnNpb24gaWYgZ29pbmcgYm90dG9tIHVwCiAgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwogCi1jbGFzcyBfRHVtbXlEaXJFbnRyeToKLSAgICAiIiJEdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBEaXJFbnRyeQotCi0gICAgT25seSB1c2VkIGludGVybmFsbHkgYnkgb3Mud2FsayhieXRlcykuIFNpbmNlIG9zLndhbGsoKSBkb2Vzbid0IG5lZWQgdGhlCi0gICAgZm9sbG93X3N5bWxpbmtzIHBhcmFtZXRlcjogZG9uJ3QgaW1wbGVtZW50IGl0LCBhbHdheXMgZm9sbG93IHN5bWJvbGljCi0gICAgbGlua3MuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGlyLCBuYW1lKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLnBhdGggPSBwYXRoLmpvaW4oZGlyLCBuYW1lKQotICAgICAgICAjIE1pbWljayBGaW5kRmlyc3RGaWxlL0ZpbmROZXh0RmlsZTogd2Ugc2hvdWxkIGdldCBmaWxlIGF0dHJpYnV0ZXMKLSAgICAgICAgIyB3aGlsZSBpdGVyYXRpbmcgb24gYSBkaXJlY3RvcnkKLSAgICAgICAgc2VsZi5fc3RhdCA9IE5vbmUKLSAgICAgICAgc2VsZi5fbHN0YXQgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIHN0YXQoc2VsZiwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgotICAgICAgICBpZiBmb2xsb3dfc3ltbGlua3M6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zdGF0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc3RhdCA9IHN0YXQoc2VsZi5wYXRoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHNlbGYuX2xzdGF0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbHN0YXQgPSBzdGF0KHNlbGYucGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xzdGF0Ci0KLSAgICBkZWYgaXNfZGlyKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9sc3RhdCBpcyBub3QgTm9uZSBhbmQgbm90IHNlbGYuaXNfc3ltbGluaygpOgotICAgICAgICAgICAgIyB1c2UgdGhlIGNhY2hlIGxzdGF0Ci0gICAgICAgICAgICBzdGF0ID0gc2VsZi5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgICAgIHJldHVybiBzdC5TX0lTRElSKHN0YXQuc3RfbW9kZSkKLQotICAgICAgICBzdGF0ID0gc2VsZi5zdGF0KCkKLSAgICAgICAgcmV0dXJuIHN0LlNfSVNESVIoc3RhdC5zdF9tb2RlKQotCi0gICAgZGVmIGlzX3N5bWxpbmsoc2VsZik6Ci0gICAgICAgIHN0YXQgPSBzZWxmLnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQotICAgICAgICByZXR1cm4gc3QuU19JU0xOSyhzdGF0LnN0X21vZGUpCi0KLWRlZiBfZHVtbXlfc2NhbmRpcihkaXIpOgotICAgICMgbGlzdGRpci1iYXNlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYnl0ZXMgcGF0Y2hlcyBvbiBXaW5kb3dzCi0gICAgZm9yIG5hbWUgaW4gbGlzdGRpcihkaXIpOgotICAgICAgICB5aWVsZCBfRHVtbXlEaXJFbnRyeShkaXIsIG5hbWUpCi0KIF9fYWxsX18uYXBwZW5kKCJ3YWxrIikKIAogaWYge29wZW4sIHN0YXR9IDw9IHN1cHBvcnRzX2Rpcl9mZCBhbmQge2xpc3RkaXIsIHN0YXR9IDw9IHN1cHBvcnRzX2ZkOgpAQCAtNTA5LDYgKzQ1MSw4IEBACiAgICAgICAgICAgICBpZiAnQ1ZTJyBpbiBkaXJzOgogICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdDVlMnKSAgIyBkb24ndCB2aXNpdCBDVlMgZGlyZWN0b3JpZXMKICAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRvcCwgaW50KSBvciBub3QgaGFzYXR0cih0b3AsICdfX2luZGV4X18nKToKKyAgICAgICAgICAgIHRvcCA9IGZzcGF0aCh0b3ApCiAgICAgICAgICMgTm90ZTogVG8gZ3VhcmQgYWdhaW5zdCBzeW1saW5rIHJhY2VzLCB3ZSB1c2UgdGhlIHN0YW5kYXJkCiAgICAgICAgICMgbHN0YXQoKS9vcGVuKCkvZnN0YXQoKSB0cmljay4KICAgICAgICAgb3JpZ19zdCA9IHN0YXQodG9wLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1kaXJfZmQpCkBAIC04NDMsMzYgKzc4NywzMSBAQAogCiBkZWYgX2ZzY29kZWMoKToKICAgICBlbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQotICAgIGlmIGVuY29kaW5nID09ICdtYmNzJzoKLSAgICAgICAgZXJyb3JzID0gJ3N0cmljdCcKLSAgICBlbHNlOgotICAgICAgICBlcnJvcnMgPSAnc3Vycm9nYXRlZXNjYXBlJworICAgIGVycm9ycyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKCkKIAogICAgIGRlZiBmc2VuY29kZShmaWxlbmFtZSk6CisgICAgICAgICIiIkVuY29kZSBmaWxlbmFtZSAoYW4gb3MuUGF0aExpa2UsIGJ5dGVzLCBvciBzdHIpIHRvIHRoZSBmaWxlc3lzdGVtCisgICAgICAgIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlciwgcmV0dXJuIGJ5dGVzIHVuY2hhbmdlZC4KKyAgICAgICAgT24gV2luZG93cywgdXNlICdzdHJpY3QnIGVycm9yIGhhbmRsZXIgaWYgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzCisgICAgICAgICdtYmNzJyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcpLgogICAgICAgICAiIiIKLSAgICAgICAgRW5jb2RlIGZpbGVuYW1lIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IKLSAgICAgICAgaGFuZGxlciwgcmV0dXJuIGJ5dGVzIHVuY2hhbmdlZC4gT24gV2luZG93cywgdXNlICdzdHJpY3QnIGVycm9yIGhhbmRsZXIgaWYKLSAgICAgICAgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzICdtYmNzJyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcpLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgYnl0ZXMpOgotICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgc3RyKToKKyAgICAgICAgZmlsZW5hbWUgPSBmc3BhdGgoZmlsZW5hbWUpICAjIERvZXMgdHlwZS1jaGVja2luZyBvZiBgZmlsZW5hbWVgLgorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBzdHIpOgogICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmVuY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3QgYnl0ZXMgb3Igc3RyLCBub3QgJXMiICUgdHlwZShmaWxlbmFtZSkuX19uYW1lX18pCisgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKIAogICAgIGRlZiBmc2RlY29kZShmaWxlbmFtZSk6CisgICAgICAgICIiIkRlY29kZSBmaWxlbmFtZSAoYW4gb3MuUGF0aExpa2UsIGJ5dGVzLCBvciBzdHIpIGZyb20gdGhlIGZpbGVzeXN0ZW0KKyAgICAgICAgZW5jb2Rpbmcgd2l0aCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVyLCByZXR1cm4gc3RyIHVuY2hhbmdlZC4gT24KKyAgICAgICAgV2luZG93cywgdXNlICdzdHJpY3QnIGVycm9yIGhhbmRsZXIgaWYgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzCisgICAgICAgICdtYmNzJyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcpLgogICAgICAgICAiIiIKLSAgICAgICAgRGVjb2RlIGZpbGVuYW1lIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvcgotICAgICAgICBoYW5kbGVyLCByZXR1cm4gc3RyIHVuY2hhbmdlZC4gT24gV2luZG93cywgdXNlICdzdHJpY3QnIGVycm9yIGhhbmRsZXIgaWYKLSAgICAgICAgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzICdtYmNzJyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcpLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgc3RyKToKLSAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIGJ5dGVzKToKKyAgICAgICAgZmlsZW5hbWUgPSBmc3BhdGgoZmlsZW5hbWUpICAjIERvZXMgdHlwZS1jaGVja2luZyBvZiBgZmlsZW5hbWVgLgorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBieXRlcyk6CiAgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdCBieXRlcyBvciBzdHIsIG5vdCAlcyIgJSB0eXBlKGZpbGVuYW1lKS5fX25hbWVfXykKKyAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZQogCiAgICAgcmV0dXJuIGZzZW5jb2RlLCBmc2RlY29kZQogCkBAIC0xMDcwLDMgKzEwMDksNTUgQEAKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGZkIHR5cGUgKCVzLCBleHBlY3RlZCBpbnRlZ2VyKSIgJSB0eXBlKGZkKSkKICAgICBpbXBvcnQgaW8KICAgICByZXR1cm4gaW8ub3BlbihmZCwgKmFyZ3MsICoqa3dhcmdzKQorCisKKyMgRm9yIHRlc3RpbmcgcHVycG9zZXMsIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIHdoZW4gdGhlIEMKKyMgaW1wbGVtZW50YXRpb24gZXhpc3RzLgorZGVmIF9mc3BhdGgocGF0aCk6CisgICAgIiIiUmV0dXJuIHRoZSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIGEgcGF0aC1saWtlIG9iamVjdC4KKworICAgIElmIHN0ciBvciBieXRlcyBpcyBwYXNzZWQgaW4sIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4gT3RoZXJ3aXNlIHRoZQorICAgIG9zLlBhdGhMaWtlIGludGVyZmFjZSBpcyB1c2VkIHRvIGdldCB0aGUgcGF0aCByZXByZXNlbnRhdGlvbi4gSWYgdGhlCisgICAgcGF0aCByZXByZXNlbnRhdGlvbiBpcyBub3Qgc3RyIG9yIGJ5dGVzLCBUeXBlRXJyb3IgaXMgcmFpc2VkLiBJZiB0aGUKKyAgICBwcm92aWRlZCBwYXRoIGlzIG5vdCBzdHIsIGJ5dGVzLCBvciBvcy5QYXRoTGlrZSwgVHlwZUVycm9yIGlzIHJhaXNlZC4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIHJldHVybiBwYXRoCisKKyAgICAjIFdvcmsgZnJvbSB0aGUgb2JqZWN0J3MgdHlwZSB0byBtYXRjaCBtZXRob2QgcmVzb2x1dGlvbiBvZiBvdGhlciBtYWdpYworICAgICMgbWV0aG9kcy4KKyAgICBwYXRoX3R5cGUgPSB0eXBlKHBhdGgpCisgICAgdHJ5OgorICAgICAgICBwYXRoX3JlcHIgPSBwYXRoX3R5cGUuX19mc3BhdGhfXyhwYXRoKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgaWYgaGFzYXR0cihwYXRoX3R5cGUsICdfX2ZzcGF0aF9fJyk6CisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBzdHIsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIG9iamVjdCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgIiArIHBhdGhfdHlwZS5fX25hbWVfXykKKyAgICBpZiBpc2luc3RhbmNlKHBhdGhfcmVwciwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgcmV0dXJuIHBhdGhfcmVwcgorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQge30uX19mc3BhdGhfXygpIHRvIHJldHVybiBzdHIgb3IgYnl0ZXMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJub3Qge30iLmZvcm1hdChwYXRoX3R5cGUuX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZShwYXRoX3JlcHIpLl9fbmFtZV9fKSkKKworIyBJZiB0aGVyZSBpcyBubyBDIGltcGxlbWVudGF0aW9uLCBtYWtlIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uIHRoZQorIyBpbXBsZW1lbnRhdGlvbiBhcyB0cmFuc3BhcmVudGx5IGFzIHBvc3NpYmxlLgoraWYgbm90IF9leGlzdHMoJ2ZzcGF0aCcpOgorICAgIGZzcGF0aCA9IF9mc3BhdGgKKyAgICBmc3BhdGguX19uYW1lX18gPSAiZnNwYXRoIgorCisKK2NsYXNzIFBhdGhMaWtlKGFiYy5BQkMpOgorCisgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wbGVtZW50aW5nIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHByb3RvY29sLiIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBzdWJjbGFzcyk6CisgICAgICAgIHJldHVybiBoYXNhdHRyKHN1YmNsYXNzLCAnX19mc3BhdGhfXycpCmRpZmYgLS1naXQgYS9MaWIvcGF0aGxpYi5weSBiL0xpYi9wYXRobGliLnB5CmluZGV4IDE0ODBlMmYuLjFiNWFiMzggMTAwNjQ0Ci0tLSBhL0xpYi9wYXRobGliLnB5CisrKyBiL0xpYi9wYXRobGliLnB5CkBAIC0zODUsNiArMzg1LDggQEAKIAogICAgIGxpc3RkaXIgPSBfd3JhcF9zdHJmdW5jKG9zLmxpc3RkaXIpCiAKKyAgICBzY2FuZGlyID0gX3dyYXBfc3RyZnVuYyhvcy5zY2FuZGlyKQorCiAgICAgY2htb2QgPSBfd3JhcF9zdHJmdW5jKG9zLmNobW9kKQogCiAgICAgaWYgaGFzYXR0cihvcywgImxjaG1vZCIpOgpAQCAtNDI5LDI1ICs0MzEsNiBAQAogIyBHbG9iYmluZyBoZWxwZXJzCiAjCiAKLUBjb250ZXh0bWFuYWdlcgotZGVmIF9jYWNoZWQoZnVuYyk6Ci0gICAgdHJ5OgotICAgICAgICBmdW5jLl9fY2FjaGVkX18KLSAgICAgICAgeWllbGQgZnVuYwotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgY2FjaGUgPSB7fQotICAgICAgICBkZWYgd3JhcHBlcigqYXJncyk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlW2FyZ3NdCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBjYWNoZVthcmdzXSA9IGZ1bmMoKmFyZ3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCi0gICAgICAgIHdyYXBwZXIuX19jYWNoZWRfXyA9IFRydWUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgeWllbGQgd3JhcHBlcgotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY2FjaGUuY2xlYXIoKQotCiBkZWYgX21ha2Vfc2VsZWN0b3IocGF0dGVybl9wYXJ0cyk6CiAgICAgcGF0ID0gcGF0dGVybl9wYXJ0c1swXQogICAgIGNoaWxkX3BhcnRzID0gcGF0dGVybl9wYXJ0c1sxOl0KQEAgLTQ3Myw4ICs0NTYsMTAgQEAKICAgICAgICAgc2VsZi5jaGlsZF9wYXJ0cyA9IGNoaWxkX3BhcnRzCiAgICAgICAgIGlmIGNoaWxkX3BhcnRzOgogICAgICAgICAgICAgc2VsZi5zdWNjZXNzb3IgPSBfbWFrZV9zZWxlY3RvcihjaGlsZF9wYXJ0cykKKyAgICAgICAgICAgIHNlbGYuZGlyb25seSA9IFRydWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc3VjY2Vzc29yID0gX1Rlcm1pbmF0aW5nU2VsZWN0b3IoKQorICAgICAgICAgICAgc2VsZi5kaXJvbmx5ID0gRmFsc2UKIAogICAgIGRlZiBzZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCk6CiAgICAgICAgICIiIkl0ZXJhdGUgb3ZlciBhbGwgY2hpbGQgcGF0aHMgb2YgYHBhcmVudF9wYXRoYCBtYXRjaGVkIGJ5IHRoaXMKQEAgLTQ4MiwxMyArNDY3LDE1IEBACiAgICAgICAgIHBhdGhfY2xzID0gdHlwZShwYXJlbnRfcGF0aCkKICAgICAgICAgaXNfZGlyID0gcGF0aF9jbHMuaXNfZGlyCiAgICAgICAgIGV4aXN0cyA9IHBhdGhfY2xzLmV4aXN0cwotICAgICAgICBsaXN0ZGlyID0gcGFyZW50X3BhdGguX2FjY2Vzc29yLmxpc3RkaXIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NlbGVjdF9mcm9tKHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcikKKyAgICAgICAgc2NhbmRpciA9IHBhcmVudF9wYXRoLl9hY2Nlc3Nvci5zY2FuZGlyCisgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgorICAgICAgICAgICAgcmV0dXJuIGl0ZXIoW10pCisgICAgICAgIHJldHVybiBzZWxmLl9zZWxlY3RfZnJvbShwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpCiAKIAogY2xhc3MgX1Rlcm1pbmF0aW5nU2VsZWN0b3I6CiAKLSAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgogICAgICAgICB5aWVsZCBwYXJlbnRfcGF0aAogCiAKQEAgLTQ5OCwxMyArNDg1LDExIEBACiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgX1NlbGVjdG9yLl9faW5pdF9fKHNlbGYsIGNoaWxkX3BhcnRzKQogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChzZWxmLm5hbWUpCi0gICAgICAgICAgICBpZiBleGlzdHMocGF0aCk6Ci0gICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICAgICAgICAgIGlmIChpc19kaXIgaWYgc2VsZi5kaXJvbmx5IGVsc2UgZXhpc3RzKShwYXRoKToKKyAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20ocGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgogICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTUxNiwxNyArNTAxLDE4IEBACiAgICAgICAgIHNlbGYucGF0ID0gcmUuY29tcGlsZShmbm1hdGNoLnRyYW5zbGF0ZShwYXQpKQogICAgICAgICBfU2VsZWN0b3IuX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMpCiAKLSAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3QgaXNfZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGNmID0gcGFyZW50X3BhdGguX2ZsYXZvdXIuY2FzZWZvbGQKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGxpc3RkaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIGNhc2Vmb2xkZWQgPSBjZihuYW1lKQotICAgICAgICAgICAgICAgIGlmIHNlbGYucGF0Lm1hdGNoKGNhc2Vmb2xkZWQpOgotICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChuYW1lKQotICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20ocGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAorICAgICAgICAgICAgZW50cmllcyA9IGxpc3Qoc2NhbmRpcihwYXJlbnRfcGF0aCkpCisgICAgICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5kaXJvbmx5IG9yIGVudHJ5LmlzX2RpcigpOgorICAgICAgICAgICAgICAgICAgICBuYW1lID0gZW50cnkubmFtZQorICAgICAgICAgICAgICAgICAgICBjYXNlZm9sZGVkID0gY2YobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5wYXQubWF0Y2goY2FzZWZvbGRlZCk6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtNTM3LDMyICs1MjMsMzAgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0LCBjaGlsZF9wYXJ0cyk6CiAgICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cykKIAotICAgIGRlZiBfaXRlcmF0ZV9kaXJlY3RvcmllcyhzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBsaXN0ZGlyKToKKyAgICBkZWYgX2l0ZXJhdGVfZGlyZWN0b3JpZXMoc2VsZiwgcGFyZW50X3BhdGgsIGlzX2Rpciwgc2NhbmRpcik6CiAgICAgICAgIHlpZWxkIHBhcmVudF9wYXRoCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGxpc3RkaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgaXNfZGlyKHBhdGgpIGFuZCBub3QgcGF0aC5pc19zeW1saW5rKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuX2l0ZXJhdGVfZGlyZWN0b3JpZXMocGF0aCwgaXNfZGlyLCBsaXN0ZGlyKToKKyAgICAgICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXIocGFyZW50X3BhdGgpKQorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgICAgICAgICAgICAgaWYgZW50cnkuaXNfZGlyKCkgYW5kIG5vdCBlbnRyeS5pc19zeW1saW5rKCk6CisgICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKGVudHJ5Lm5hbWUpCisgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuX2l0ZXJhdGVfZGlyZWN0b3JpZXMocGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKICAgICAgICAgICAgIHJldHVybgogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICB3aXRoIF9jYWNoZWQobGlzdGRpcikgYXMgbGlzdGRpcjoKLSAgICAgICAgICAgICAgICB5aWVsZGVkID0gc2V0KCkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3Nvcl9zZWxlY3QgPSBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20KLSAgICAgICAgICAgICAgICAgICAgZm9yIHN0YXJ0aW5nX3BvaW50IGluIHNlbGYuX2l0ZXJhdGVfZGlyZWN0b3JpZXMocGFyZW50X3BhdGgsIGlzX2RpciwgbGlzdGRpcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzdWNjZXNzb3Jfc2VsZWN0KHN0YXJ0aW5nX3BvaW50LCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcCBub3QgaW4geWllbGRlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZGVkLmFkZChwKQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkZWQuY2xlYXIoKQorICAgICAgICAgICAgeWllbGRlZCA9IHNldCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3VjY2Vzc29yX3NlbGVjdCA9IHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbQorICAgICAgICAgICAgICAgIGZvciBzdGFydGluZ19wb2ludCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhcmVudF9wYXRoLCBpc19kaXIsIHNjYW5kaXIpOgorICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzdWNjZXNzb3Jfc2VsZWN0KHN0YXJ0aW5nX3BvaW50LCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwIG5vdCBpbiB5aWVsZGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZGVkLmFkZChwKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB5aWVsZGVkLmNsZWFyKCkKICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKICAgICAgICAgICAgIHJldHVybgogCkBAIC02MzQsMTMgKzYxOCwxNiBAQAogICAgICAgICBmb3IgYSBpbiBhcmdzOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBQdXJlUGF0aCk6CiAgICAgICAgICAgICAgICAgcGFydHMgKz0gYS5fcGFydHMKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhLCBzdHIpOgotICAgICAgICAgICAgICAgICMgRm9yY2UtY2FzdCBzdHIgc3ViY2xhc3NlcyB0byBzdHIgKGlzc3VlICMyMTEyNykKLSAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoc3RyKGEpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgYSBwYXRoIG9yIHN0ciBvYmplY3QsIG5vdCAlciIKLSAgICAgICAgICAgICAgICAgICAgJSB0eXBlKGEpKQorICAgICAgICAgICAgICAgIGEgPSBvcy5mc3BhdGgoYSkKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIHN0cik6CisgICAgICAgICAgICAgICAgICAgICMgRm9yY2UtY2FzdCBzdHIgc3ViY2xhc3NlcyB0byBzdHIgKGlzc3VlICMyMTEyNykKKyAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHN0cihhKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyIG9iamVjdCBvciBhbiBvcy5QYXRoTGlrZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IHJldHVybmluZyBzdHIsIG5vdCAlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgdHlwZShhKSkKICAgICAgICAgcmV0dXJuIGNscy5fZmxhdm91ci5wYXJzZV9wYXJ0cyhwYXJ0cykKIAogICAgIEBjbGFzc21ldGhvZApAQCAtNjkzLDYgKzY4MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnRzKSBvciAnLicKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdHIKIAorICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYpCisKICAgICBkZWYgYXNfcG9zaXgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXRoIHdpdGggZm9yd2FyZCAoLykKICAgICAgICAgc2xhc2hlcy4iIiIKQEAgLTk0Myw2ICs5MzMsMTAgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKIAorIyBDYW4ndCBzdWJjbGFzcyBvcy5QYXRoTGlrZSBmcm9tIFB1cmVQYXRoIGFuZCBrZWVwIHRoZSBjb25zdHJ1Y3RvcgorIyBvcHRpbWl6YXRpb25zIGluIFB1cmVQYXRoLl9wYXJzZV9hcmdzKCkuCitvcy5QYXRoTGlrZS5yZWdpc3RlcihQdXJlUGF0aCkKKwogCiBjbGFzcyBQdXJlUG9zaXhQYXRoKFB1cmVQYXRoKToKICAgICBfZmxhdm91ciA9IF9wb3NpeF9mbGF2b3VyCmRpZmYgLS1naXQgYS9MaWIvcGRiLnB5IGIvTGliL3BkYi5weQppbmRleCBiMTFhYzBhLi43ZWI3OGI5IDEwMDc1NQotLS0gYS9MaWIvcGRiLnB5CisrKyBiL0xpYi9wZGIucHkKQEAgLTUyLDcgKzUyLDggQEAKIGRpcmVjdG9yeSwgaXQgaXMgcmVhZCBpbiBhbmQgZXhlY3V0ZWQgYXMgaWYgaXQgaGFkIGJlZW4gdHlwZWQgYXQgdGhlCiBkZWJ1Z2dlciBwcm9tcHQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGFsaWFzZXMuICBJZiBib3RoCiBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCBhbmQgYWxpYXNlcwotZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS4KK2RlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuICBUaGlzIGJlaGF2aW9yIGNhbiBiZQorZGlzYWJsZWQgYnkgcGFzc2luZyB0aGUgInJlYWRyYz1GYWxzZSIgYXJndW1lbnQgdG8gdGhlIFBkYiBjb25zdHJ1Y3Rvci4KIAogQXNpZGUgZnJvbSBhbGlhc2VzLCB0aGUgZGVidWdnZXIgaXMgbm90IGRpcmVjdGx5IHByb2dyYW1tYWJsZTsgYnV0IGl0CiBpcyBpbXBsZW1lbnRlZCBhcyBhIGNsYXNzIGZyb20gd2hpY2ggeW91IGNhbiBkZXJpdmUgeW91ciBvd24gZGVidWdnZXIKQEAgLTEzNSw3ICsxMzYsNyBAQAogY2xhc3MgUGRiKGJkYi5CZGIsIGNtZC5DbWQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLAotICAgICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSk6CiAgICAgICAgIGJkYi5CZGIuX19pbml0X18oc2VsZiwgc2tpcD1za2lwKQogICAgICAgICBjbWQuQ21kLl9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5LCBzdGRpbiwgc3Rkb3V0KQogICAgICAgICBpZiBzdGRvdXQ6CkBAIC0xNTgsMTggKzE1OSwxOSBAQAogCiAgICAgICAgICMgUmVhZCAkSE9NRS8ucGRicmMgYW5kIC4vLnBkYnJjCiAgICAgICAgIHNlbGYucmNMaW5lcyA9IFtdCi0gICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgZW52SG9tZSA9IG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICBpZiByZWFkcmM6CisgICAgICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBlbnZIb21lID0gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbigiLnBkYnJjIikgYXMgcmNGaWxlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnJjTGluZXMuZXh0ZW5kKHJjRmlsZSkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKCIucGRicmMiKSBhcyByY0ZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIHNlbGYuY29tbWFuZHMgPSB7fSAjIGFzc29jaWF0ZXMgYSBjb21tYW5kIGxpc3QgdG8gYnJlYWtwb2ludCBudW1iZXJzCiAgICAgICAgIHNlbGYuY29tbWFuZHNfZG9wcm9tcHQgPSB7fSAjIGZvciBlYWNoIGJwIG51bSwgdGVsbHMgaWYgdGhlIHByb21wdApkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZS5weSBiL0xpYi9waWNrbGUucHkKaW5kZXggMDQwZWNiMi4uYzgzNzBjOSAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZS5weQorKysgYi9MaWIvcGlja2xlLnB5CkBAIC0yNyw2ICsyNyw3IEBACiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IF9leHRlbnNpb25fcmVnaXN0cnksIF9pbnZlcnRlZF9yZWdpc3RyeSwgX2V4dGVuc2lvbl9jYWNoZQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKIGltcG9ydCBzeXMKIGZyb20gc3lzIGltcG9ydCBtYXhzaXplCiBmcm9tIHN0cnVjdCBpbXBvcnQgcGFjaywgdW5wYWNrCkBAIC01NDgsNyArNTQ5LDcgQEAKICAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCiAKICAgICAgICAgZnVuY19uYW1lID0gZ2V0YXR0cihmdW5jLCAiX19uYW1lX18iLCAiIikKLSAgICAgICAgaWYgc2VsZi5wcm90byA+PSA0IGFuZCBmdW5jX25hbWUgPT0gIl9fbmV3b2JqX2V4X18iOgorICAgICAgICBpZiBzZWxmLnByb3RvID49IDIgYW5kIGZ1bmNfbmFtZSA9PSAiX19uZXdvYmpfZXhfXyI6CiAgICAgICAgICAgICBjbHMsIGFyZ3MsIGt3YXJncyA9IGFyZ3MKICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGNscywgIl9fbmV3X18iKToKICAgICAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKCJhcmdzWzBdIGZyb20ge30gYXJncyBoYXMgbm8gX19uZXdfXyIKQEAgLTU1NiwxMCArNTU3LDE2IEBACiAgICAgICAgICAgICBpZiBvYmogaXMgbm90IE5vbmUgYW5kIGNscyBpcyBub3Qgb2JqLl9fY2xhc3NfXzoKICAgICAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKCJhcmdzWzBdIGZyb20ge30gYXJncyBoYXMgdGhlIHdyb25nIGNsYXNzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChmdW5jX25hbWUpKQotICAgICAgICAgICAgc2F2ZShjbHMpCi0gICAgICAgICAgICBzYXZlKGFyZ3MpCi0gICAgICAgICAgICBzYXZlKGt3YXJncykKLSAgICAgICAgICAgIHdyaXRlKE5FV09CSl9FWCkKKyAgICAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNDoKKyAgICAgICAgICAgICAgICBzYXZlKGNscykKKyAgICAgICAgICAgICAgICBzYXZlKGFyZ3MpCisgICAgICAgICAgICAgICAgc2F2ZShrd2FyZ3MpCisgICAgICAgICAgICAgICAgd3JpdGUoTkVXT0JKX0VYKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmdW5jID0gcGFydGlhbChjbHMuX19uZXdfXywgY2xzLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgc2F2ZShmdW5jKQorICAgICAgICAgICAgICAgIHNhdmUoKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoUkVEVUNFKQogICAgICAgICBlbGlmIHNlbGYucHJvdG8gPj0gMiBhbmQgZnVuY19uYW1lID09ICJfX25ld29ial9fIjoKICAgICAgICAgICAgICMgQSBfX3JlZHVjZV9fIGltcGxlbWVudGF0aW9uIGNhbiBkaXJlY3QgcHJvdG9jb2wgMiBvciBuZXdlciB0bwogICAgICAgICAgICAgIyB1c2UgdGhlIG1vcmUgZWZmaWNpZW50IE5FV09CSiBvcGNvZGUsIHdoaWxlIHN0aWxsCkBAIC0xMDI4LDcgKzEwMzUsNyBAQAogICAgICAgICBzZWxmLl91bmZyYW1lciA9IF9VbmZyYW1lcihzZWxmLl9maWxlX3JlYWQsIHNlbGYuX2ZpbGVfcmVhZGxpbmUpCiAgICAgICAgIHNlbGYucmVhZCA9IHNlbGYuX3VuZnJhbWVyLnJlYWQKICAgICAgICAgc2VsZi5yZWFkbGluZSA9IHNlbGYuX3VuZnJhbWVyLnJlYWRsaW5lCi0gICAgICAgIHNlbGYubWFyayA9IG9iamVjdCgpICMgYW55IG5ldyB1bmlxdWUgb2JqZWN0CisgICAgICAgIHNlbGYubWV0YXN0YWNrID0gW10KICAgICAgICAgc2VsZi5zdGFjayA9IFtdCiAgICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5zdGFjay5hcHBlbmQKICAgICAgICAgc2VsZi5wcm90byA9IDAKQEAgLTEwNDQsMjAgKzEwNTEsMTIgQEAKICAgICAgICAgZXhjZXB0IF9TdG9wIGFzIHN0b3BpbnN0OgogICAgICAgICAgICAgcmV0dXJuIHN0b3BpbnN0LnZhbHVlCiAKLSAgICAjIFJldHVybiBsYXJnZXN0IGluZGV4IGsgc3VjaCB0aGF0IHNlbGYuc3RhY2tba10gaXMgc2VsZi5tYXJrLgotICAgICMgSWYgdGhlIHN0YWNrIGRvZXNuJ3QgY29udGFpbiBhIG1hcmssIGV2ZW50dWFsbHkgcmFpc2VzIEluZGV4RXJyb3IuCi0gICAgIyBUaGlzIGNvdWxkIGJlIHNwZWQgYnkgbWFpbnRhaW5pbmcgYW5vdGhlciBzdGFjaywgb2YgaW5kaWNlcyBhdCB3aGljaAotICAgICMgdGhlIG1hcmsgYXBwZWFycy4gIEZvciB0aGF0IG1hdHRlciwgdGhlIGxhdHRlciBzdGFjayB3b3VsZCBzdWZmaWNlLAotICAgICMgYW5kIHdlIHdvdWxkbid0IG5lZWQgdG8gcHVzaCBtYXJrIG9iamVjdHMgb24gc2VsZi5zdGFjayBhdCBhbGwuCi0gICAgIyBEb2luZyBzbyBpcyBwcm9iYWJseSBhIGdvb2QgdGhpbmcsIHRob3VnaCwgc2luY2UgaWYgdGhlIHBpY2tsZSBpcwotICAgICMgY29ycnVwdCAob3IgaG9zdGlsZSkgd2UgbWF5IGdldCBhIGNsdWUgZnJvbSBmaW5kaW5nIHNlbGYubWFyayBlbWJlZGRlZAotICAgICMgaW4gdW5waWNrbGVkIG9iamVjdHMuCi0gICAgZGVmIG1hcmtlcihzZWxmKToKLSAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCi0gICAgICAgIG1hcmsgPSBzZWxmLm1hcmsKLSAgICAgICAgayA9IGxlbihzdGFjayktMQotICAgICAgICB3aGlsZSBzdGFja1trXSBpcyBub3QgbWFyazogayA9IGstMQotICAgICAgICByZXR1cm4gaworICAgICMgUmV0dXJuIGEgbGlzdCBvZiBpdGVtcyBwdXNoZWQgaW4gdGhlIHN0YWNrIGFmdGVyIGxhc3QgTUFSSyBpbnN0cnVjdGlvbi4KKyAgICBkZWYgcG9wX21hcmsoc2VsZik6CisgICAgICAgIGl0ZW1zID0gc2VsZi5zdGFjaworICAgICAgICBzZWxmLnN0YWNrID0gc2VsZi5tZXRhc3RhY2sucG9wKCkKKyAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLnN0YWNrLmFwcGVuZAorICAgICAgICByZXR1cm4gaXRlbXMKIAogICAgIGRlZiBwZXJzaXN0ZW50X2xvYWQoc2VsZiwgcGlkKToKICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJ1bnN1cHBvcnRlZCBwZXJzaXN0ZW50IGlkIGVuY291bnRlcmVkIikKQEAgLTEyMzgsOCArMTIzNyw4IEBACiAgICAgZGlzcGF0Y2hbU0hPUlRfQklOVU5JQ09ERVswXV0gPSBsb2FkX3Nob3J0X2JpbnVuaWNvZGUKIAogICAgIGRlZiBsb2FkX3R1cGxlKHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFt0dXBsZShzZWxmLnN0YWNrW2srMTpdKV0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgc2VsZi5hcHBlbmQodHVwbGUoaXRlbXMpKQogICAgIGRpc3BhdGNoW1RVUExFWzBdXSA9IGxvYWRfdHVwbGUKIAogICAgIGRlZiBsb2FkX2VtcHR5X3R1cGxlKHNlbGYpOgpAQCAtMTI3MSwyMSArMTI3MCwyMCBAQAogICAgIGRpc3BhdGNoW0VNUFRZX1NFVFswXV0gPSBsb2FkX2VtcHR5X3NldAogCiAgICAgZGVmIGxvYWRfZnJvemVuc2V0KHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFtmcm96ZW5zZXQoc2VsZi5zdGFja1trKzE6XSldCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIHNlbGYuYXBwZW5kKGZyb3plbnNldChpdGVtcykpCiAgICAgZGlzcGF0Y2hbRlJPWkVOU0VUWzBdXSA9IGxvYWRfZnJvemVuc2V0CiAKICAgICBkZWYgbG9hZF9saXN0KHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFtzZWxmLnN0YWNrW2srMTpdXQorICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQorICAgICAgICBzZWxmLmFwcGVuZChpdGVtcykKICAgICBkaXNwYXRjaFtMSVNUWzBdXSA9IGxvYWRfbGlzdAogCiAgICAgZGVmIGxvYWRfZGljdChzZWxmKToKLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgaXRlbXMgPSBzZWxmLnN0YWNrW2srMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCiAgICAgICAgIGQgPSB7aXRlbXNbaV06IGl0ZW1zW2krMV0KICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oaXRlbXMpLCAyKX0KLSAgICAgICAgc2VsZi5zdGFja1trOl0gPSBbZF0KKyAgICAgICAgc2VsZi5hcHBlbmQoZCkKICAgICBkaXNwYXRjaFtESUNUWzBdXSA9IGxvYWRfZGljdAogCiAgICAgIyBJTlNUIGFuZCBPQkogZGlmZmVyIG9ubHkgaW4gaG93IHRoZXkgZ2V0IGEgY2xhc3Mgb2JqZWN0LiAgSXQncyBub3QKQEAgLTEyOTMsOSArMTI5MSw3IEBACiAgICAgIyBwcmV2aW91c2x5IGRpdmVyZ2VkIGFuZCBncmV3IGRpZmZlcmVudCBidWdzLgogICAgICMga2xhc3MgaXMgdGhlIGNsYXNzIHRvIGluc3RhbnRpYXRlLCBhbmQgayBwb2ludHMgdG8gdGhlIHRvcG1vc3QgbWFyawogICAgICMgb2JqZWN0LCBmb2xsb3dpbmcgd2hpY2ggYXJlIHRoZSBhcmd1bWVudHMgZm9yIGtsYXNzLl9faW5pdF9fLgotICAgIGRlZiBfaW5zdGFudGlhdGUoc2VsZiwga2xhc3MsIGspOgotICAgICAgICBhcmdzID0gdHVwbGUoc2VsZi5zdGFja1trKzE6XSkKLSAgICAgICAgZGVsIHNlbGYuc3RhY2tbazpdCisgICAgZGVmIF9pbnN0YW50aWF0ZShzZWxmLCBrbGFzcywgYXJncyk6CiAgICAgICAgIGlmIChhcmdzIG9yIG5vdCBpc2luc3RhbmNlKGtsYXNzLCB0eXBlKSBvcgogICAgICAgICAgICAgaGFzYXR0cihrbGFzcywgIl9fZ2V0aW5pdGFyZ3NfXyIpKToKICAgICAgICAgICAgIHRyeToKQEAgLTEzMTEsMTQgKzEzMDcsMTQgQEAKICAgICAgICAgbW9kdWxlID0gc2VsZi5yZWFkbGluZSgpWzotMV0uZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgIG5hbWUgPSBzZWxmLnJlYWRsaW5lKClbOi0xXS5kZWNvZGUoImFzY2lpIikKICAgICAgICAga2xhc3MgPSBzZWxmLmZpbmRfY2xhc3MobW9kdWxlLCBuYW1lKQotICAgICAgICBzZWxmLl9pbnN0YW50aWF0ZShrbGFzcywgc2VsZi5tYXJrZXIoKSkKKyAgICAgICAgc2VsZi5faW5zdGFudGlhdGUoa2xhc3MsIHNlbGYucG9wX21hcmsoKSkKICAgICBkaXNwYXRjaFtJTlNUWzBdXSA9IGxvYWRfaW5zdAogCiAgICAgZGVmIGxvYWRfb2JqKHNlbGYpOgogICAgICAgICAjIFN0YWNrIGlzIC4uLiBtYXJrb2JqZWN0IGNsYXNzb2JqZWN0IGFyZzEgYXJnMiAuLi4KLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAga2xhc3MgPSBzZWxmLnN0YWNrLnBvcChrKzEpCi0gICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGtsYXNzLCBrKQorICAgICAgICBhcmdzID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIGNscyA9IGFyZ3MucG9wKDApCisgICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGNscywgYXJncykKICAgICBkaXNwYXRjaFtPQkpbMF1dID0gbG9hZF9vYmoKIAogICAgIGRlZiBsb2FkX25ld29iaihzZWxmKToKQEAgLTE0MDMsMTIgKzEzOTksMTQgQEAKICAgICBkaXNwYXRjaFtSRURVQ0VbMF1dID0gbG9hZF9yZWR1Y2UKIAogICAgIGRlZiBsb2FkX3BvcChzZWxmKToKLSAgICAgICAgZGVsIHNlbGYuc3RhY2tbLTFdCisgICAgICAgIGlmIHNlbGYuc3RhY2s6CisgICAgICAgICAgICBkZWwgc2VsZi5zdGFja1stMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucG9wX21hcmsoKQogICAgIGRpc3BhdGNoW1BPUFswXV0gPSBsb2FkX3BvcAogCiAgICAgZGVmIGxvYWRfcG9wX21hcmsoc2VsZik6Ci0gICAgICAgIGsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIGRlbCBzZWxmLnN0YWNrW2s6XQorICAgICAgICBzZWxmLnBvcF9tYXJrKCkKICAgICBkaXNwYXRjaFtQT1BfTUFSS1swXV0gPSBsb2FkX3BvcF9tYXJrCiAKICAgICBkZWYgbG9hZF9kdXAoc2VsZik6CkBAIC0xNDY0LDE3ICsxNDYyLDE0IEBACiAgICAgZGlzcGF0Y2hbQVBQRU5EWzBdXSA9IGxvYWRfYXBwZW5kCiAKICAgICBkZWYgbG9hZF9hcHBlbmRzKHNlbGYpOgotICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKLSAgICAgICAgbWFyayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgbGlzdF9vYmogPSBzdGFja1ttYXJrIC0gMV0KLSAgICAgICAgaXRlbXMgPSBzdGFja1ttYXJrICsgMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIGxpc3Rfb2JqID0gc2VsZi5zdGFja1stMV0KICAgICAgICAgaWYgaXNpbnN0YW5jZShsaXN0X29iaiwgbGlzdCk6CiAgICAgICAgICAgICBsaXN0X29iai5leHRlbmQoaXRlbXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhcHBlbmQgPSBsaXN0X29iai5hcHBlbmQKICAgICAgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgogICAgICAgICAgICAgICAgIGFwcGVuZChpdGVtKQotICAgICAgICBkZWwgc3RhY2tbbWFyazpdCiAgICAgZGlzcGF0Y2hbQVBQRU5EU1swXV0gPSBsb2FkX2FwcGVuZHMKIAogICAgIGRlZiBsb2FkX3NldGl0ZW0oc2VsZik6CkBAIC0xNDg2LDI3ICsxNDgxLDIxIEBACiAgICAgZGlzcGF0Y2hbU0VUSVRFTVswXV0gPSBsb2FkX3NldGl0ZW0KIAogICAgIGRlZiBsb2FkX3NldGl0ZW1zKHNlbGYpOgotICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKLSAgICAgICAgbWFyayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgZGljdCA9IHN0YWNrW21hcmsgLSAxXQotICAgICAgICBmb3IgaSBpbiByYW5nZShtYXJrICsgMSwgbGVuKHN0YWNrKSwgMik6Ci0gICAgICAgICAgICBkaWN0W3N0YWNrW2ldXSA9IHN0YWNrW2kgKyAxXQotCi0gICAgICAgIGRlbCBzdGFja1ttYXJrOl0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgZGljdCA9IHNlbGYuc3RhY2tbLTFdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihpdGVtcyksIDIpOgorICAgICAgICAgICAgZGljdFtpdGVtc1tpXV0gPSBpdGVtc1tpICsgMV0KICAgICBkaXNwYXRjaFtTRVRJVEVNU1swXV0gPSBsb2FkX3NldGl0ZW1zCiAKICAgICBkZWYgbG9hZF9hZGRpdGVtcyhzZWxmKToKLSAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCi0gICAgICAgIG1hcmsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIHNldF9vYmogPSBzdGFja1ttYXJrIC0gMV0KLSAgICAgICAgaXRlbXMgPSBzdGFja1ttYXJrICsgMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIHNldF9vYmogPSBzZWxmLnN0YWNrWy0xXQogICAgICAgICBpZiBpc2luc3RhbmNlKHNldF9vYmosIHNldCk6CiAgICAgICAgICAgICBzZXRfb2JqLnVwZGF0ZShpdGVtcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFkZCA9IHNldF9vYmouYWRkCiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgICAgICBhZGQoaXRlbSkKLSAgICAgICAgZGVsIHN0YWNrW21hcms6XQogICAgIGRpc3BhdGNoW0FERElURU1TWzBdXSA9IGxvYWRfYWRkaXRlbXMKIAogICAgIGRlZiBsb2FkX2J1aWxkKHNlbGYpOgpAQCAtMTUzNCw3ICsxNTIzLDkgQEAKICAgICBkaXNwYXRjaFtCVUlMRFswXV0gPSBsb2FkX2J1aWxkCiAKICAgICBkZWYgbG9hZF9tYXJrKHNlbGYpOgotICAgICAgICBzZWxmLmFwcGVuZChzZWxmLm1hcmspCisgICAgICAgIHNlbGYubWV0YXN0YWNrLmFwcGVuZChzZWxmLnN0YWNrKQorICAgICAgICBzZWxmLnN0YWNrID0gW10KKyAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLnN0YWNrLmFwcGVuZAogICAgIGRpc3BhdGNoW01BUktbMF1dID0gbG9hZF9tYXJrCiAKICAgICBkZWYgbG9hZF9zdG9wKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZXRvb2xzLnB5IGIvTGliL3BpY2tsZXRvb2xzLnB5CmluZGV4IDE2YWU3ZDUuLjVlMTI5YjUgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGV0b29scy5weQorKysgYi9MaWIvcGlja2xldG9vbHMucHkKQEAgLTcwNyw3ICs3MDcsNyBAQAogICAgID4+PiBlbmMgPSBzLmVuY29kZSgndXRmLTgnKQogICAgID4+PiBlbmMKICAgICBiJ2FiY2RceGVhXHhhZlx4OGQnCi0gICAgPj4+IG4gPSBieXRlcyhbbGVuKGVuYyldKSArIGJ5dGVzKDcpICAjIGxpdHRsZS1lbmRpYW4gOC1ieXRlIGxlbmd0aAorICAgID4+PiBuID0gYnl0ZXMoW2xlbihlbmMpXSkgKyBiJ1wwJyAqIDcgICMgbGl0dGxlLWVuZGlhbiA4LWJ5dGUgbGVuZ3RoCiAgICAgPj4+IHQgPSByZWFkX3VuaWNvZGVzdHJpbmc4KGlvLkJ5dGVzSU8obiArIGVuYyArIGInanVuaycpKQogICAgID4+PiBzID09IHQKICAgICBUcnVlCkBAIC0yNDQwLDYgKzI0NDAsNyBAQAogICAgICAgICBpZiBvcGNvZGUubmFtZSBpbiAoIlBVVCIsICJCSU5QVVQiLCAiTE9OR19CSU5QVVQiLCAiTUVNT0laRSIpOgogICAgICAgICAgICAgaWYgb3Bjb2RlLm5hbWUgPT0gIk1FTU9JWkUiOgogICAgICAgICAgICAgICAgIG1lbW9faWR4ID0gbGVuKG1lbW8pCisgICAgICAgICAgICAgICAgbWFya21zZyA9ICIoYXMgJWQpIiAlIG1lbW9faWR4CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGFzc2VydCBhcmcgaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgICBtZW1vX2lkeCA9IGFyZwpkaWZmIC0tZ2l0IGEvTGliL3BrZ3V0aWwucHkgYi9MaWIvcGtndXRpbC5weQppbmRleCA4MWQ0MThkLi5lMzdhZDQ1IDEwMDY0NAotLS0gYS9MaWIvcGtndXRpbC5weQorKysgYi9MaWIvcGtndXRpbC5weQpAQCAtMSw1ICsxLDYgQEAKICIiIlV0aWxpdGllcyB0byBzdXBwb3J0IHBhY2thZ2VzLiIiIgogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgc2luZ2xlZGlzcGF0Y2ggYXMgc2ltcGxlZ2VuZXJpYwogaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IGltcG9ydGxpYi51dGlsCkBAIC0xNCw5ICsxNSwxNCBAQAogICAgICdnZXRfaW1wb3J0ZXInLCAnaXRlcl9pbXBvcnRlcnMnLCAnZ2V0X2xvYWRlcicsICdmaW5kX2xvYWRlcicsCiAgICAgJ3dhbGtfcGFja2FnZXMnLCAnaXRlcl9tb2R1bGVzJywgJ2dldF9kYXRhJywKICAgICAnSW1wSW1wb3J0ZXInLCAnSW1wTG9hZGVyJywgJ3JlYWRfY29kZScsICdleHRlbmRfcGF0aCcsCisgICAgJ01vZHVsZUluZm8nLAogXQogCiAKK01vZHVsZUluZm8gPSBuYW1lZHR1cGxlKCdNb2R1bGVJbmZvJywgJ21vZHVsZV9maW5kZXIgbmFtZSBpc3BrZycpCitNb2R1bGVJbmZvLl9fZG9jX18gPSAnQSBuYW1lZHR1cGxlIHdpdGggbWluaW1hbCBpbmZvIGFib3V0IGEgbW9kdWxlLicKKworCiBkZWYgX2dldF9zcGVjKGZpbmRlciwgbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRoZSBmaW5kZXItc3BlY2lmaWMgbW9kdWxlIHNwZWMuIiIiCiAgICAgIyBXb3JrcyB3aXRoIGxlZ2FjeSBmaW5kZXJzLgpAQCAtNDUsNyArNTEsNyBAQAogCiAKIGRlZiB3YWxrX3BhY2thZ2VzKHBhdGg9Tm9uZSwgcHJlZml4PScnLCBvbmVycm9yPU5vbmUpOgotICAgICIiIllpZWxkcyAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseQorICAgICIiIllpZWxkcyBNb2R1bGVJbmZvIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseQogICAgIG9uIHBhdGgsIG9yLCBpZiBwYXRoIGlzIE5vbmUsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCiAKICAgICAncGF0aCcgc2hvdWxkIGJlIGVpdGhlciBOb25lIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvcgpAQCAtNzgsMzEgKzg0LDMxIEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBtW3BdID0gVHJ1ZQogCi0gICAgZm9yIGltcG9ydGVyLCBuYW1lLCBpc3BrZyBpbiBpdGVyX21vZHVsZXMocGF0aCwgcHJlZml4KToKLSAgICAgICAgeWllbGQgaW1wb3J0ZXIsIG5hbWUsIGlzcGtnCisgICAgZm9yIGluZm8gaW4gaXRlcl9tb2R1bGVzKHBhdGgsIHByZWZpeCk6CisgICAgICAgIHlpZWxkIGluZm8KIAotICAgICAgICBpZiBpc3BrZzoKKyAgICAgICAgaWYgaW5mby5pc3BrZzoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICAgICAgX19pbXBvcnRfXyhpbmZvLm5hbWUpCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgb25lcnJvcihuYW1lKQorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGluZm8ubmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgb25lcnJvcihuYW1lKQorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGluZm8ubmFtZSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1tuYW1lXSwgJ19fcGF0aF9fJywgTm9uZSkgb3IgW10KKyAgICAgICAgICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1tpbmZvLm5hbWVdLCAnX19wYXRoX18nLCBOb25lKSBvciBbXQogCiAgICAgICAgICAgICAgICAgIyBkb24ndCB0cmF2ZXJzZSBwYXRoIGl0ZW1zIHdlJ3ZlIHNlZW4gYmVmb3JlCiAgICAgICAgICAgICAgICAgcGF0aCA9IFtwIGZvciBwIGluIHBhdGggaWYgbm90IHNlZW4ocCldCiAKLSAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGtfcGFja2FnZXMocGF0aCwgbmFtZSsnLicsIG9uZXJyb3IpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrX3BhY2thZ2VzKHBhdGgsIGluZm8ubmFtZSsnLicsIG9uZXJyb3IpCiAKIAogZGVmIGl0ZXJfbW9kdWxlcyhwYXRoPU5vbmUsIHByZWZpeD0nJyk6Ci0gICAgIiIiWWllbGRzIChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZykgZm9yIGFsbCBzdWJtb2R1bGVzIG9uIHBhdGgsCisgICAgIiIiWWllbGRzIE1vZHVsZUluZm8gZm9yIGFsbCBzdWJtb2R1bGVzIG9uIHBhdGgsCiAgICAgb3IsIGlmIHBhdGggaXMgTm9uZSwgYWxsIHRvcC1sZXZlbCBtb2R1bGVzIG9uIHN5cy5wYXRoLgogCiAgICAgJ3BhdGgnIHNob3VsZCBiZSBlaXRoZXIgTm9uZSBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IKQEAgLTExMSw3ICsxMTcsNiBAQAogICAgICdwcmVmaXgnIGlzIGEgc3RyaW5nIHRvIG91dHB1dCBvbiB0aGUgZnJvbnQgb2YgZXZlcnkgbW9kdWxlIG5hbWUKICAgICBvbiBvdXRwdXQuCiAgICAgIiIiCi0KICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAgICAgIGltcG9ydGVycyA9IGl0ZXJfaW1wb3J0ZXJzKCkKICAgICBlbHNlOgpAQCAtMTIyLDcgKzEyNyw3IEBACiAgICAgICAgIGZvciBuYW1lLCBpc3BrZyBpbiBpdGVyX2ltcG9ydGVyX21vZHVsZXMoaSwgcHJlZml4KToKICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHlpZWxkZWQ6CiAgICAgICAgICAgICAgICAgeWllbGRlZFtuYW1lXSA9IDEKLSAgICAgICAgICAgICAgICB5aWVsZCBpLCBuYW1lLCBpc3BrZworICAgICAgICAgICAgICAgIHlpZWxkIE1vZHVsZUluZm8oaSwgbmFtZSwgaXNwa2cpCiAKIAogQHNpbXBsZWdlbmVyaWMKQEAgLTE4MCw3ICsxODUsNyBAQAogZGVmIF9pbXBvcnRfaW1wKCk6CiAgICAgZ2xvYmFsIGltcAogICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgaW1wID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2ltcCcpCiAKIGNsYXNzIEltcEltcG9ydGVyOgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtYWl4NC9JTi5weSBiL0xpYi9wbGF0LWFpeDQvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZjhmMjMuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtYWl4NC9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gbmV0L25oLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoaW5lLmgKLUxJVFRMRV9FTkRJQU4gPSAxMjM0Ci1CSUdfRU5ESUFOID0gNDMyMQotUERQX0VORElBTiA9IDM0MTIKLUJZVEVfT1JERVIgPSBCSUdfRU5ESUFOCi1ERUZBVUxUX0dQUiA9IDB4REVBREJFRUYKLU1TUl9FRSA9IDB4ODAwMAotTVNSX1BSID0gMHg0MDAwCi1NU1JfRlAgPSAweDIwMDAKLU1TUl9NRSA9IDB4MTAwMAotTVNSX0ZFID0gMHgwODAwCi1NU1JfRkUwID0gMHgwODAwCi1NU1JfU0UgPSAweDA0MDAKLU1TUl9CRSA9IDB4MDIwMAotTVNSX0lFID0gMHgwMTAwCi1NU1JfRkUxID0gMHgwMTAwCi1NU1JfQUwgPSAweDAwODAKLU1TUl9JUCA9IDB4MDA0MAotTVNSX0lSID0gMHgwMDIwCi1NU1JfRFIgPSAweDAwMTAKLU1TUl9QTSA9IDB4MDAwNAotREVGQVVMVF9NU1IgPSAoTVNSX0VFIHwgTVNSX01FIHwgTVNSX0FMIHwgTVNSX0lSIHwgTVNSX0RSKQotREVGQVVMVF9VU0VSX01TUiA9IChERUZBVUxUX01TUiB8IE1TUl9QUikKLUNSX0xUID0gMHg4MDAwMDAwMAotQ1JfR1QgPSAweDQwMDAwMDAwCi1DUl9FUSA9IDB4MjAwMDAwMDAKLUNSX1NPID0gMHgxMDAwMDAwMAotQ1JfRlggPSAweDA4MDAwMDAwCi1DUl9GRVggPSAweDA0MDAwMDAwCi1DUl9WWCA9IDB4MDIwMDAwMDAKLUNSX09YID0gMHgwMTAwMDAwMAotWEVSX1NPID0gMHg4MDAwMDAwMAotWEVSX09WID0gMHg0MDAwMDAwMAotWEVSX0NBID0gMHgyMDAwMDAwMAotZGVmIFhFUl9DT01QX0JZVEUoeGVyKTogcmV0dXJuICgoeGVyID4+IDgpICYgMHgwMDAwMDBGRikKLQotZGVmIFhFUl9MRU5HVEgoeGVyKTogcmV0dXJuICh4ZXIgJiAweDAwMDAwMDdGKQotCi1EU0lTUl9JTyA9IDB4ODAwMDAwMDAKLURTSVNSX1BGVCA9IDB4NDAwMDAwMDAKLURTSVNSX0xPQ0sgPSAweDIwMDAwMDAwCi1EU0lTUl9GUElPID0gMHgxMDAwMDAwMAotRFNJU1JfUFJPVCA9IDB4MDgwMDAwMDAKLURTSVNSX0xPT1AgPSAweDA0MDAwMDAwCi1EU0lTUl9EUlNUID0gMHgwNDAwMDAwMAotRFNJU1JfU1QgPSAweDAyMDAwMDAwCi1EU0lTUl9TRUdCID0gMHgwMTAwMDAwMAotRFNJU1JfREFCUiA9IDB4MDA0MDAwMDAKLURTSVNSX0VBUiA9IDB4MDAxMDAwMDAKLVNSUl9JU19QRlQgPSAweDQwMDAwMDAwCi1TUlJfSVNfSVNQRUMgPSAweDIwMDAwMDAwCi1TUlJfSVNfSUlPID0gMHgxMDAwMDAwMAotU1JSX0lTX0dVQVJEID0gMHgxMDAwMDAwMAotU1JSX0lTX1BST1QgPSAweDA4MDAwMDAwCi1TUlJfSVNfTE9PUCA9IDB4MDQwMDAwMDAKLVNSUl9QUl9GUEVOID0gMHgwMDEwMDAwMAotU1JSX1BSX0lOVkFMID0gMHgwMDA4MDAwMAotU1JSX1BSX1BSSVYgPSAweDAwMDQwMDAwCi1TUlJfUFJfVFJBUCA9IDB4MDAwMjAwMDAKLVNSUl9QUl9JTVBSRSA9IDB4MDAwMTAwMDAKLWRlZiBCVUlEXzdGX1NSVkFMKHJhZGRyKTogcmV0dXJuICgweDg3RjAwMDAwIHwgKCgodWludCkocmFkZHIpKSA+PiAyOCkpCi0KLUJUXzI1Nk0gPSAweDFGRkMKLUJUXzEyOE0gPSAweDBGRkMKLUJUXzY0TSA9IDB4MDdGQwotQlRfMzJNID0gMHgwM0ZDCi1CVF8xNk0gPSAweDAxRkMKLUJUXzhNID0gMHgwMEZDCi1CVF80TSA9IDB4MDA3QwotQlRfMk0gPSAweDAwM0MKLUJUXzFNID0gMHgwMDFDCi1CVF81MTJLID0gMHgwMDBDCi1CVF8yNTZLID0gMHgwMDA0Ci1CVF8xMjhLID0gMHgwMDAwCi1CVF9OT0FDQ0VTUyA9IDB4MAotQlRfUkRPTkxZID0gMHgxCi1CVF9XUklURSA9IDB4MgotQlRfVlMgPSAweDIKLUJUX1ZQID0gMHgxCi1kZWYgQkFUX0VTRUcoZGJhdHUpOiByZXR1cm4gKCgodWludCkoZGJhdHUpID4+IDI4KSkKLQotTUlOX0JBVF9TSVpFID0gMHgwMDAyMDAwMAotTUFYX0JBVF9TSVpFID0gMHgxMDAwMDAwMAotZGVmIG50b2hsKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbmwoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gKHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fTE9DQUwgPSA2MwotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19CSVAgPSAweDUzCi1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JUFBPUlRfVElNRVNFUlZFUiA9IDM3Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotSU5BRERSX1VOU1BFQ19HUk9VUCA9IDB4ZTAwMDAwMDAKLUlOQUREUl9BTExIT1NUU19HUk9VUCA9IDB4ZTAwMDAwMDEKLUlOQUREUl9NQVhfTE9DQUxfR1JPVVAgPSAweGUwMDAwMGZmCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZTAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfQU5ZID0gMHgwMDAwMDAwMAotSU5BRERSX0JST0FEQ0FTVCA9IDB4ZmZmZmZmZmYKLUlOQUREUl9MT09QQkFDSyA9IDB4N2YwMDAwMDEKLUlOQUREUl9OT05FID0gMHhmZmZmZmZmZgotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtYWl4NC9yZWdlbiBiL0xpYi9wbGF0LWFpeDQvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU3YTcxYzQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtYWl4NC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXN2YCBpbgotJ0FJWCA0JyopICA7OwotKikgICAgICBlY2hvIFByb2JhYmx5IG5vdCBvbiBhbiBBSVggNCBzeXN0ZW0gMT4mMgotICAgICAgICBleGl0IDE7OwotZXNhYwotc2V0IC12Ci1oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZGFyd2luL0lOLnB5IGIvTGliL3BsYXQtZGFyd2luL0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjZiZTMzLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWRhcndpbi9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDY2MiArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2FwcGxlYXBpb3B0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiBwcm90b3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2F0dHJpYnV0ZV9fKHgpOiByZXR1cm4KLQotZGVmIF9fQ09QWVJJR0hUKHMpOiByZXR1cm4gX19JRFNUUklORyhjb3B5cmlnaHQscykKLQotZGVmIF9fUkNTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKHJjc2lkLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoc2Njc2lkLHMpCi0KLWRlZiBfX1BST0pFQ1RfVkVSU0lPTihzKTogcmV0dXJuIF9fSURTVFJJTkcocHJvamVjdF92ZXJzaW9uLHMpCi0KLV9fREFSV0lOX1VOSVgwMyA9IDEKLV9fREFSV0lOX1VOSVgwMyA9IDAKLV9fREFSV0lOX1VOSVgwMyA9IDAKLV9fREFSV0lOX1VOSVgwMyA9IDEKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDEKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDAKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDAKLV9fREFSV0lOX05PTl9DQU5DRUxBQkxFID0gMAotX19EQVJXSU5fVkVSU18xMDUwID0gMQotX19EQVJXSU5fVkVSU18xMDUwID0gMAotX19EQVJXSU5fU1VGX1VOSVgwMyA9ICIkVU5JWDIwMDMiCi1fX0RBUldJTl9TVUZfVU5JWDAzX1NFVCA9IDEKLV9fREFSV0lOX1NVRl9VTklYMDNfU0VUID0gMAotX19EQVJXSU5fU1VGXzY0X0JJVF9JTk9fVCA9ICIkSU5PREU2NCIKLV9fREFSV0lOX1NVRl9OT05fQ0FOQ0VMQUJMRSA9ICIkTk9DQU5DRUwiCi1fX0RBUldJTl9TVUZfMTA1MCA9ICIkMTA1MCIKLV9fREFSV0lOX1NVRl9VTklYMDNfU0VUID0gMAotX19EQVJXSU5fU1VGX0VYVFNOID0gIiREQVJXSU5fRVhUU04iCi1fX0RBUldJTl9MT05HX0RPVUJMRV9JU19ET1VCTEUgPSAwCi1kZWYgX19EQVJXSU5fTERCTF9DT01QQVQoeCk6IHJldHVybgotCi1kZWYgX19EQVJXSU5fTERCTF9DT01QQVQyKHgpOiByZXR1cm4KLQotX19EQVJXSU5fTE9OR19ET1VCTEVfSVNfRE9VQkxFID0gMQotZGVmIF9fREFSV0lOX0xEQkxfQ09NUEFUKHgpOiByZXR1cm4KLQotZGVmIF9fREFSV0lOX0xEQkxfQ09NUEFUMih4KTogcmV0dXJuCi0KLV9fREFSV0lOX0xPTkdfRE9VQkxFX0lTX0RPVUJMRSA9IDAKLV9EQVJXSU5fRkVBVFVSRV9MT05HX0RPVUJMRV9JU19ET1VCTEUgPSAxCi1fREFSV0lOX0ZFQVRVUkVfVU5JWF9DT05GT1JNQU5DRSA9IDMKLV9EQVJXSU5fRkVBVFVSRV82NF9CSVRfSU5PREUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL190eXBlcy5oCi1fX1BUSFJFQURfU0laRV9fID0gMTE2OAotX19QVEhSRUFEX0FUVFJfU0laRV9fID0gNTYKLV9fUFRIUkVBRF9NVVRFWEFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX01VVEVYX1NJWkVfXyA9IDU2Ci1fX1BUSFJFQURfQ09OREFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX0NPTkRfU0laRV9fID0gNDAKLV9fUFRIUkVBRF9PTkNFX1NJWkVfXyA9IDgKLV9fUFRIUkVBRF9SV0xPQ0tfU0laRV9fID0gMTkyCi1fX1BUSFJFQURfUldMT0NLQVRUUl9TSVpFX18gPSAxNgotX19QVEhSRUFEX1NJWkVfXyA9IDU5NgotX19QVEhSRUFEX0FUVFJfU0laRV9fID0gMzYKLV9fUFRIUkVBRF9NVVRFWEFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX01VVEVYX1NJWkVfXyA9IDQwCi1fX1BUSFJFQURfQ09OREFUVFJfU0laRV9fID0gNAotX19QVEhSRUFEX0NPTkRfU0laRV9fID0gMjQKLV9fUFRIUkVBRF9PTkNFX1NJWkVfXyA9IDQKLV9fUFRIUkVBRF9SV0xPQ0tfU0laRV9fID0gMTI0Ci1fX1BUSFJFQURfUldMT0NLQVRUUl9TSVpFX18gPSAxMgotX19EQVJXSU5fTlVMTCA9IDAKLQotIyBJbmNsdWRlZCBmcm9tIHN0ZGludC5oCi1fX1dPUkRTSVpFID0gNjQKLV9fV09SRFNJWkUgPSAzMgotSU5UOF9NQVggPSAxMjcKLUlOVDE2X01BWCA9IDMyNzY3Ci1JTlQzMl9NQVggPSAyMTQ3NDgzNjQ3Ci1JTlQ4X01JTiA9IC0xMjgKLUlOVDE2X01JTiA9IC0zMjc2OAotSU5UMzJfTUlOID0gKC1JTlQzMl9NQVgtMSkKLVVJTlQ4X01BWCA9IDI1NQotVUlOVDE2X01BWCA9IDY1NTM1Ci1JTlRfTEVBU1Q4X01JTiA9IElOVDhfTUlOCi1JTlRfTEVBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9MRUFTVDMyX01JTiA9IElOVDMyX01JTgotSU5UX0xFQVNUOF9NQVggPSBJTlQ4X01BWAotSU5UX0xFQVNUMTZfTUFYID0gSU5UMTZfTUFYCi1JTlRfTEVBU1QzMl9NQVggPSBJTlQzMl9NQVgKLVVJTlRfTEVBU1Q4X01BWCA9IFVJTlQ4X01BWAotVUlOVF9MRUFTVDE2X01BWCA9IFVJTlQxNl9NQVgKLUlOVF9GQVNUOF9NSU4gPSBJTlQ4X01JTgotSU5UX0ZBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9GQVNUMzJfTUlOID0gSU5UMzJfTUlOCi1JTlRfRkFTVDhfTUFYID0gSU5UOF9NQVgKLUlOVF9GQVNUMTZfTUFYID0gSU5UMTZfTUFYCi1JTlRfRkFTVDMyX01BWCA9IElOVDMyX01BWAotVUlOVF9GQVNUOF9NQVggPSBVSU5UOF9NQVgKLVVJTlRfRkFTVDE2X01BWCA9IFVJTlQxNl9NQVgKLUlOVFBUUl9NSU4gPSBJTlQzMl9NSU4KLUlOVFBUUl9NQVggPSBJTlQzMl9NQVgKLVBUUkRJRkZfTUlOID0gSU5UMzJfTUlOCi1QVFJESUZGX01BWCA9IElOVDMyX01BWAotV0NIQVJfTUFYID0gMHg3ZmZmZmZmZgotV0NIQVJfTUlOID0gMAotV0NIQVJfTUlOID0gKC1XQ0hBUl9NQVgtMSkKLVdJTlRfTUlOID0gSU5UMzJfTUlOCi1XSU5UX01BWCA9IElOVDMyX01BWAotU0lHX0FUT01JQ19NSU4gPSBJTlQzMl9NSU4KLVNJR19BVE9NSUNfTUFYID0gSU5UMzJfTUFYCi1kZWYgSU5UOF9DKHYpOiByZXR1cm4gKHYpCi0KLWRlZiBJTlQxNl9DKHYpOiByZXR1cm4gKHYpCi0KLWRlZiBJTlQzMl9DKHYpOiByZXR1cm4gKHYpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zb2NrZXQuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fcGFyYW0uaAotU09DS19TVFJFQU0gPSAxCi1TT0NLX0RHUkFNID0gMgotU09DS19SQVcgPSAzCi1TT0NLX1JETSA9IDQKLVNPQ0tfU0VRUEFDS0VUID0gNQotU09fREVCVUcgPSAweDAwMDEKLVNPX0FDQ0VQVENPTk4gPSAweDAwMDIKLVNPX1JFVVNFQUREUiA9IDB4MDAwNAotU09fS0VFUEFMSVZFID0gMHgwMDA4Ci1TT19ET05UUk9VVEUgPSAweDAwMTAKLVNPX0JST0FEQ0FTVCA9IDB4MDAyMAotU09fVVNFTE9PUEJBQ0sgPSAweDAwNDAKLVNPX0xJTkdFUiA9IDB4MDA4MAotU09fTElOR0VSID0gMHgxMDgwCi1TT19PT0JJTkxJTkUgPSAweDAxMDAKLVNPX1JFVVNFUE9SVCA9IDB4MDIwMAotU09fVElNRVNUQU1QID0gMHgwNDAwCi1TT19BQ0NFUFRGSUxURVIgPSAweDEwMDAKLVNPX0RPTlRUUlVOQyA9IDB4MjAwMAotU09fV0FOVE1PUkUgPSAweDQwMDAKLVNPX1dBTlRPT0JGTEFHID0gMHg4MDAwCi1TT19TTkRCVUYgPSAweDEwMDEKLVNPX1JDVkJVRiA9IDB4MTAwMgotU09fU05ETE9XQVQgPSAweDEwMDMKLVNPX1JDVkxPV0FUID0gMHgxMDA0Ci1TT19TTkRUSU1FTyA9IDB4MTAwNQotU09fUkNWVElNRU8gPSAweDEwMDYKLVNPX0VSUk9SID0gMHgxMDA3Ci1TT19UWVBFID0gMHgxMDA4Ci1TT19OUkVBRCA9IDB4MTAyMAotU09fTktFID0gMHgxMDIxCi1TT19OT1NJR1BJUEUgPSAweDEwMjIKLVNPX05PQUREUkVSUiA9IDB4MTAyMwotU09fTldSSVRFID0gMHgxMDI0Ci1TT19SRVVTRVNIQVJFVUlEID0gMHgxMDI1Ci1TT19OT1RJRllDT05GTElDVCA9IDB4MTAyNgotU09fTElOR0VSX1NFQyA9IDB4MTA4MAotU09fUkVTVFJJQ1RJT05TID0gMHgxMDgxCi1TT19SRVNUUklDVF9ERU5ZSU4gPSAweDAwMDAwMDAxCi1TT19SRVNUUklDVF9ERU5ZT1VUID0gMHgwMDAwMDAwMgotU09fUkVTVFJJQ1RfREVOWVNFVCA9ICgtMjE0NzQ4MzY0OCkKLVNPX0xBQkVMID0gMHgxMDEwCi1TT19QRUVSTEFCRUwgPSAweDEwMTEKLVNPTF9TT0NLRVQgPSAweGZmZmYKLUFGX1VOU1BFQyA9IDAKLUFGX1VOSVggPSAxCi1BRl9MT0NBTCA9IEFGX1VOSVgKLUFGX0lORVQgPSAyCi1BRl9JTVBMSU5LID0gMwotQUZfUFVQID0gNAotQUZfQ0hBT1MgPSA1Ci1BRl9OUyA9IDYKLUFGX0lTTyA9IDcKLUFGX09TSSA9IEFGX0lTTwotQUZfRUNNQSA9IDgKLUFGX0RBVEFLSVQgPSA5Ci1BRl9DQ0lUVCA9IDEwCi1BRl9TTkEgPSAxMQotQUZfREVDbmV0ID0gMTIKLUFGX0RMSSA9IDEzCi1BRl9MQVQgPSAxNAotQUZfSFlMSU5LID0gMTUKLUFGX0FQUExFVEFMSyA9IDE2Ci1BRl9ST1VURSA9IDE3Ci1BRl9MSU5LID0gMTgKLXBzZXVkb19BRl9YVFAgPSAxOQotQUZfQ09JUCA9IDIwCi1BRl9DTlQgPSAyMQotcHNldWRvX0FGX1JUSVAgPSAyMgotQUZfSVBYID0gMjMKLUFGX1NJUCA9IDI0Ci1wc2V1ZG9fQUZfUElQID0gMjUKLUFGX05EUlYgPSAyNwotQUZfSVNETiA9IDI4Ci1BRl9FMTY0ID0gQUZfSVNETgotcHNldWRvX0FGX0tFWSA9IDI5Ci1BRl9JTkVUNiA9IDMwCi1BRl9OQVRNID0gMzEKLUFGX1NZU1RFTSA9IDMyCi1BRl9ORVRCSU9TID0gMzMKLUFGX1BQUCA9IDM0Ci1BRl9BVE0gPSAzMAotcHNldWRvX0FGX0hEUkNNUExUID0gMzUKLUFGX1JFU0VSVkVEXzM2ID0gMzYKLUFGX05FVEdSQVBIID0gMzIKLUFGX01BWCA9IDM3Ci1TT0NLX01BWEFERFJMRU4gPSAyNTUKLV9TU19NQVhTSVpFID0gMTI4Ci1QRl9VTlNQRUMgPSBBRl9VTlNQRUMKLVBGX0xPQ0FMID0gQUZfTE9DQUwKLVBGX1VOSVggPSBQRl9MT0NBTAotUEZfSU5FVCA9IEFGX0lORVQKLVBGX0lNUExJTksgPSBBRl9JTVBMSU5LCi1QRl9QVVAgPSBBRl9QVVAKLVBGX0NIQU9TID0gQUZfQ0hBT1MKLVBGX05TID0gQUZfTlMKLVBGX0lTTyA9IEFGX0lTTwotUEZfT1NJID0gQUZfSVNPCi1QRl9FQ01BID0gQUZfRUNNQQotUEZfREFUQUtJVCA9IEFGX0RBVEFLSVQKLVBGX0NDSVRUID0gQUZfQ0NJVFQKLVBGX1NOQSA9IEFGX1NOQQotUEZfREVDbmV0ID0gQUZfREVDbmV0Ci1QRl9ETEkgPSBBRl9ETEkKLVBGX0xBVCA9IEFGX0xBVAotUEZfSFlMSU5LID0gQUZfSFlMSU5LCi1QRl9BUFBMRVRBTEsgPSBBRl9BUFBMRVRBTEsKLVBGX1JPVVRFID0gQUZfUk9VVEUKLVBGX0xJTksgPSBBRl9MSU5LCi1QRl9YVFAgPSBwc2V1ZG9fQUZfWFRQCi1QRl9DT0lQID0gQUZfQ09JUAotUEZfQ05UID0gQUZfQ05UCi1QRl9TSVAgPSBBRl9TSVAKLVBGX0lQWCA9IEFGX0lQWAotUEZfUlRJUCA9IHBzZXVkb19BRl9SVElQCi1QRl9QSVAgPSBwc2V1ZG9fQUZfUElQCi1QRl9ORFJWID0gQUZfTkRSVgotUEZfSVNETiA9IEFGX0lTRE4KLVBGX0tFWSA9IHBzZXVkb19BRl9LRVkKLVBGX0lORVQ2ID0gQUZfSU5FVDYKLVBGX05BVE0gPSBBRl9OQVRNCi1QRl9TWVNURU0gPSBBRl9TWVNURU0KLVBGX05FVEJJT1MgPSBBRl9ORVRCSU9TCi1QRl9QUFAgPSBBRl9QUFAKLVBGX1JFU0VSVkVEXzM2ID0gQUZfUkVTRVJWRURfMzYKLVBGX0FUTSA9IEFGX0FUTQotUEZfTkVUR1JBUEggPSBBRl9ORVRHUkFQSAotUEZfTUFYID0gQUZfTUFYCi1ORVRfTUFYSUQgPSBBRl9NQVgKLU5FVF9SVF9EVU1QID0gMQotTkVUX1JUX0ZMQUdTID0gMgotTkVUX1JUX0lGTElTVCA9IDMKLU5FVF9SVF9TVEFUID0gNAotTkVUX1JUX1RSQVNIID0gNQotTkVUX1JUX0lGTElTVDIgPSA2Ci1ORVRfUlRfRFVNUDIgPSA3Ci1ORVRfUlRfTUFYSUQgPSA4Ci1TT01BWENPTk4gPSAxMjgKLU1TR19PT0IgPSAweDEKLU1TR19QRUVLID0gMHgyCi1NU0dfRE9OVFJPVVRFID0gMHg0Ci1NU0dfRU9SID0gMHg4Ci1NU0dfVFJVTkMgPSAweDEwCi1NU0dfQ1RSVU5DID0gMHgyMAotTVNHX1dBSVRBTEwgPSAweDQwCi1NU0dfRE9OVFdBSVQgPSAweDgwCi1NU0dfRU9GID0gMHgxMDAKLU1TR19XQUlUU1RSRUFNID0gMHgyMDAKLU1TR19GTFVTSCA9IDB4NDAwCi1NU0dfSE9MRCA9IDB4ODAwCi1NU0dfU0VORCA9IDB4MTAwMAotTVNHX0hBVkVNT1JFID0gMHgyMDAwCi1NU0dfUkNWTU9SRSA9IDB4NDAwMAotTVNHX05FRURTQSA9IDB4MTAwMDAKLUNNR1JPVVBfTUFYID0gMTYKLVNDTV9SSUdIVFMgPSAweDAxCi1TQ01fVElNRVNUQU1QID0gMHgwMgotU0NNX0NSRURTID0gMHgwMwotU0hVVF9SRCA9IDAKLVNIVVRfV1IgPSAxCi1TSFVUX1JEV1IgPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL2VuZGlhbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX2VuZGlhbi5oCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIE5UT0hMKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBOVE9IUyh4KTogcmV0dXJuICh4KQotCi1kZWYgSFRPTkwoeCk6IHJldHVybiAoeCkKLQotZGVmIEhUT05TKHgpOiByZXR1cm4gKHgpCi0KLQotIyBJbmNsdWRlZCBmcm9tIGxpYmtlcm4vX09TQnl0ZU9yZGVyLmgKLWRlZiBfX0RBUldJTl9PU1N3YXBDb25zdEludDE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwQ29uc3RJbnQzMih4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcENvbnN0SW50NjQoeCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIGxpYmtlcm4vaTM4Ni9fT1NCeXRlT3JkZXIuaAotZGVmIF9fREFSV0lOX09TU3dhcEludDE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50MzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQ2NCh4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcEludDE2KHgpOiByZXR1cm4gX09TU3dhcEludDE2KHgpCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQzMih4KTogcmV0dXJuIF9PU1N3YXBJbnQzMih4KQotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50NjQoeCk6IHJldHVybiBfT1NTd2FwSW50NjQoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MTYoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MTYoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MzIoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MzIoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX0RJVkVSVCA9IDI1NAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLV9fREFSV0lOX0lQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9SRVNFUlZFRCA9IF9fREFSV0lOX0lQUE9SVF9SRVNFUlZFRAotSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOX0NMQVNTRF9ORVQgPSAoLTI2ODQzNTQ1NikKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotSU5BRERSX05PTkUgPSAoLTEpCi1kZWYgSU5fTElOS0xPQ0FMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIElOX0NMQVNTQl9ORVQpID09IElOX0xJTktMT0NBTE5FVE5VTSkKLQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX1NUUklQSERSID0gMjMKLUlQX1JFQ1ZUVEwgPSAyNAotSVBfRldfQUREID0gNDAKLUlQX0ZXX0RFTCA9IDQxCi1JUF9GV19GTFVTSCA9IDQyCi1JUF9GV19aRVJPID0gNDMKLUlQX0ZXX0dFVCA9IDQ0Ci1JUF9GV19SRVNFVExPRyA9IDQ1Ci1JUF9PTERfRldfQUREID0gNTAKLUlQX09MRF9GV19ERUwgPSA1MQotSVBfT0xEX0ZXX0ZMVVNIID0gNTIKLUlQX09MRF9GV19aRVJPID0gNTMKLUlQX09MRF9GV19HRVQgPSA1NAotSVBfTkFUX19YWFggPSA1NQotSVBfT0xEX0ZXX1JFU0VUTE9HID0gNTYKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX1RSQUZGSUNfTUdUX0JBQ0tHUk9VTkQgPSA2NQotSVBfRk9SQ0VfT1VUX0lGUCA9IDY5Ci1UUkFGRklDX01HVF9TT19CQUNLR1JPVU5EID0gMHgwMDAxCi1UUkFGRklDX01HVF9TT19CR19TVVBQUkVTU0VEID0gMHgwMDAyCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiMjAwMTA1MjgvYXBwbGUtZGFyd2luIgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2X1BLVElORk8gPSAxOQotSVBWNl9IT1BMSU1JVCA9IDIwCi1JUFY2X05FWFRIT1AgPSAyMQotSVBWNl9IT1BPUFRTID0gMjIKLUlQVjZfRFNUT1BUUyA9IDIzCi1JUFY2X1JUSERSID0gMjQKLUlQVjZfUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfVjZPTkxZID0gMjcKLUlQVjZfQklORFY2T05MWSA9IElQVjZfVjZPTkxZCi1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX1Y2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfVVNFVEVNUEFERFIgPSAzMgotSVBWNkNUTF9URU1QUExUSU1FID0gMzMKLUlQVjZDVExfVEVNUFZMVElNRSA9IDM0Ci1JUFY2Q1RMX0FVVE9fTElOS0xPQ0FMID0gMzUKLUlQVjZDVExfUklQNlNUQVRTID0gMzYKLUlQVjZDVExfTUFYRlJBR1MgPSA0MQotSVBWNkNUTF9NQVhJRCA9IDQyCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1kYXJ3aW4vcmVnZW4gYi9MaWIvcGxhdC1kYXJ3aW4vcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGEyMGNkYzEuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZGFyd2luL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiRFWEUgLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDQvSU4ucHkgYi9MaWIvcGxhdC1mcmVlYnNkNC9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNhMjQxOC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNC9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1NSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX0RJVkVSVCA9IDI1NAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHg4MDAwMDAwMCkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9IDB4ZmYwMDAwMDAKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4YzAwMDAwMDApID09IDB4ODAwMDAwMDApCi0KLUlOX0NMQVNTQl9ORVQgPSAweGZmZmYwMDAwCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZTAwMDAwMDApID09IDB4YzAwMDAwMDApCi0KLUlOX0NMQVNTQ19ORVQgPSAweGZmZmZmZjAwCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfTk9ORSA9IDB4ZmZmZmZmZmYKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcXVldWUuaAotZGVmIFNMSVNUX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBTTElTVF9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIFNUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgU1RBSUxRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgTElTVF9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIFRBSUxRX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBUQUlMUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIENJUkNMRVFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLV9fS0FNRV9WRVJTSU9OID0gIjIwMDAwNzAxL0ZyZWVCU0QtY3VycmVudCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweGZmMDEwMDAwCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHhmZjAyMDAwMAotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHhmZmZmMDAwMAotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2X1BLVElORk8gPSAxOQotSVBWNl9IT1BMSU1JVCA9IDIwCi1JUFY2X05FWFRIT1AgPSAyMQotSVBWNl9IT1BPUFRTID0gMjIKLUlQVjZfRFNUT1BUUyA9IDIzCi1JUFY2X1JUSERSID0gMjQKLUlQVjZfUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfQklORFY2T05MWSA9IDI3Ci1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX0JJTkRWNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX01BWElEID0gMjgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q0L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDQvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDQvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q1L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDUvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYTI0MTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDUvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNTUgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fUElNID0gMTAzCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19ESVZFUlQgPSAyNTQKLUlQUFJPVE9fUkFXID0gMjU1Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQUk9UT19ET05FID0gMjU3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotSVBQT1JUX0hJRklSU1RBVVRPID0gNDkxNTIKLUlQUE9SVF9ISUxBU1RBVVRPID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRFNUQVJUID0gNjAwCi1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3F1ZXVlLmgKLWRlZiBTTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgU0xJU1RfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBTVEFJTFFfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIFNUQUlMUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIExJU1RfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIExJU1RfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgVEFJTFFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBDSVJDTEVRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1fX0tBTUVfVkVSU0lPTiA9ICIyMDAwMDcwMS9GcmVlQlNELWN1cnJlbnQiCi1JUFY2UE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQVjZQT1JUX0FOT05NSU4gPSA0OTE1MgotSVBWNlBPUlRfQU5PTk1BWCA9IDY1NTM1Ci1JUFY2UE9SVF9SRVNFUlZFRE1JTiA9IDYwMAotSVBWNlBPUlRfUkVTRVJWRURNQVggPSAoSVBWNlBPUlRfUkVTRVJWRUQtMSkKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDEKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAyCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHhmZjAxMDAwMAotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4ZmYwMjAwMDAKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4ZmZmZjAwMDAKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweDgwZmUKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGMwZmUKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweDAyZmYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl9QS1RJTkZPID0gMTkKLUlQVjZfSE9QTElNSVQgPSAyMAotSVBWNl9ORVhUSE9QID0gMjEKLUlQVjZfSE9QT1BUUyA9IDIyCi1JUFY2X0RTVE9QVFMgPSAyMwotSVBWNl9SVEhEUiA9IDI0Ci1JUFY2X1BLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X0JJTkRWNk9OTFkgPSAyNwotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9CSU5EVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9NQVhJRCA9IDI4CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNS9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q1L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q1L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNi9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q2L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjBiZjg0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q2L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTUxICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX19HTlVDTElLRV9BU00gPSAzCi1fX0dOVUNMSUtFX0FTTSA9IDIKLV9fR05VQ0xJS0VfX19UWVBFT0YgPSAxCi1fX0dOVUNMSUtFX19fT0ZGU0VUT0YgPSAxCi1fX0dOVUNMSUtFX19fU0VDVElPTiA9IDEKLV9fR05VQ0xJS0VfQVRUUklCVVRFX01PREVfREkgPSAxCi1fX0dOVUNMSUtFX0NUT1JfU0VDVElPTl9IQU5ETElORyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9DT05TVEFOVF9QID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBUkFSR1MgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fU1REQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBQUxJU1QgPSAxCi1fX0dOVUNfVkFfTElTVF9DT01QQVRJQklMSVRZID0gMQotX19HTlVDTElLRV9CVUlMVElOX05FWFRfQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX01FTUNQWSA9IDEKLV9fQ0NfU1VQUE9SVFNfSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkVfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfX19GVU5DX18gPSAxCi1fX0NDX1NVUFBPUlRTX1dBUk5JTkcgPSAxCi1fX0NDX1NVUFBPUlRTX1ZBUkFESUNfWFhYID0gMQotX19DQ19TVVBQT1JUU19EWU5BTUlDX0FSUkFZX0lOSVQgPSAxCi1fX0NDX0lOVF9JU18zMkJJVCA9IDEKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19YU1RSSU5HKHgpOiByZXR1cm4gX19TVFJJTkcoeCkKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX25vbm51bGwoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyh4KSkpCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMSkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMCkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19mb3JtYXRfYXJnKGZtdGFyZyk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9hcmdfXyAoZm10YXJnKSkpCi0KLWRlZiBfX0ZCU0RJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSURfU09VUkNFKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkX3NvdXJjZV8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19zY2NzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19DT1BZUklHSFQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fY29weXJpZ2h0XyxfX0xJTkVfXykscykKLQotX1BPU0lYX0NfU09VUkNFID0gMTk5MDA5Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkyMDkKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDUwMAotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTg4MDgKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMTk5NTA2Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkzMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTIwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MDA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTg4MDgKLV9fSVNPX0NfVklTSUJMRSA9IDAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9fQlNEX1ZJU0lCTEUgPSAxCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvZW5kaWFuLmgKLV9RVUFEX0hJR0hXT1JEID0gMQotX1FVQURfTE9XV09SRCA9IDAKLV9MSVRUTEVfRU5ESUFOID0gMTIzNAotX0JJR19FTkRJQU4gPSA0MzIxCi1fUERQX0VORElBTiA9IDM0MTIKLV9CWVRFX09SREVSID0gX0xJVFRMRV9FTkRJQU4KLUxJVFRMRV9FTkRJQU4gPSBfTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfQllURV9PUkRFUgotZGVmIF9fd29yZF9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnQoeCk6IHJldHVybiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50KHgpOiByZXR1cm4gX19ieXRlX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfbG9uZ192YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9sb25nX2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfbG9uZyh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX2xvbmdfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkKHgpOiByZXR1cm4gX19ieXRlX3N3YXBfd29yZF92YXIoeCkKLQotZGVmIF9faHRvbmwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9faHRvbnMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotZGVmIF9fbnRvaGwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9fbnRvaHMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19VRFAgPSAxNwotZGVmIGh0b25sKHgpOiByZXR1cm4gX19odG9ubCh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX2h0b25zKHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fbnRvaGwoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19udG9ocyh4KQotCi1JUFBST1RPX1JBVyA9IDI1NQotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19NT0JJTEUgPSA1NQotSVBQUk9UT19UTFNQID0gNTYKLUlQUFJPVE9fU0tJUCA9IDU3Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19TQ1RQID0gMTMyCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19DQVJQID0gMTEyCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19QRlNZTkMgPSAyNDAKLUlQUFJPVE9fT0xEX0RJVkVSVCA9IDI1NAotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQUk9UT19ESVZFUlQgPSAyNTgKLUlQUFJPVE9fU1BBQ0VSID0gMzI3NjcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotSVBQT1JUX01BWCA9IDY1NTM1Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9TRU5EU1JDQUREUiA9IElQX1JFQ1ZEU1RBRERSCi1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9PTkVTQkNBU1QgPSAyMwotSVBfRldfVEFCTEVfQUREID0gNDAKLUlQX0ZXX1RBQkxFX0RFTCA9IDQxCi1JUF9GV19UQUJMRV9GTFVTSCA9IDQyCi1JUF9GV19UQUJMRV9HRVRTSVpFID0gNDMKLUlQX0ZXX1RBQkxFX0xJU1QgPSA0NAotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9SRUNWVFRMID0gNjUKLUlQX01JTlRUTCA9IDY2Ci1JUF9ET05URlJBRyA9IDY3Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci1kZWYgaW5fbnVsbGhvc3QoeCk6IHJldHVybiAoKHgpLnNfYWRkciA9PSBJTkFERFJfQU5ZKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiRnJlZUJTRCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweGZmMDEwMDAwCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHhmZjAyMDAwMAotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHhmZmZmMDAwMAotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0lOVEZBQ0VMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19ERVBSRUNBVEVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19JTlZBTElEKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl8yMjkyUEtUSU5GTyA9IDE5Ci1JUFY2XzIyOTJIT1BMSU1JVCA9IDIwCi1JUFY2XzIyOTJORVhUSE9QID0gMjEKLUlQVjZfMjI5MkhPUE9QVFMgPSAyMgotSVBWNl8yMjkyRFNUT1BUUyA9IDIzCi1JUFY2XzIyOTJSVEhEUiA9IDI0Ci1JUFY2XzIyOTJQS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9WNk9OTFkgPSAyNwotSVBWNl9CSU5EVjZPTkxZID0gSVBWNl9WNk9OTFkKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUkRTVE9QVFMgPSAzNQotSVBWNl9SRUNWUEtUSU5GTyA9IDM2Ci1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDM3Ci1JUFY2X1JFQ1ZSVEhEUiA9IDM4Ci1JUFY2X1JFQ1ZIT1BPUFRTID0gMzkKLUlQVjZfUkVDVkRTVE9QVFMgPSA0MAotSVBWNl9SRUNWUlRIRFJEU1RPUFRTID0gNDEKLUlQVjZfVVNFX01JTl9NVFUgPSA0MgotSVBWNl9SRUNWUEFUSE1UVSA9IDQzCi1JUFY2X1BBVEhNVFUgPSA0NAotSVBWNl9SRUFDSENPTkYgPSA0NQotSVBWNl9QS1RJTkZPID0gNDYKLUlQVjZfSE9QTElNSVQgPSA0NwotSVBWNl9ORVhUSE9QID0gNDgKLUlQVjZfSE9QT1BUUyA9IDQ5Ci1JUFY2X0RTVE9QVFMgPSA1MAotSVBWNl9SVEhEUiA9IDUxCi1JUFY2X1BLVE9QVElPTlMgPSA1MgotSVBWNl9SRUNWVENMQVNTID0gNTcKLUlQVjZfQVVUT0ZMT1dMQUJFTCA9IDU5Ci1JUFY2X1RDTEFTUyA9IDYxCi1JUFY2X0RPTlRGUkFHID0gNjIKLUlQVjZfUFJFRkVSX1RFTVBBRERSID0gNjMKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX1Y2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfVVNFVEVNUEFERFIgPSAzMgotSVBWNkNUTF9URU1QUExUSU1FID0gMzMKLUlQVjZDVExfVEVNUFZMVElNRSA9IDM0Ci1JUFY2Q1RMX0FVVE9fTElOS0xPQ0FMID0gMzUKLUlQVjZDVExfUklQNlNUQVRTID0gMzYKLUlQVjZDVExfUFJFRkVSX1RFTVBBRERSID0gMzcKLUlQVjZDVExfQUREUkNUTFBPTElDWSA9IDM4Ci1JUFY2Q1RMX1VTRV9ERUZBVUxUWk9ORSA9IDM5Ci1JUFY2Q1RMX01BWEZSQUdTID0gNDEKLUlQVjZDVExfSUZRID0gNDIKLUlQVjZDVExfSVNBVEFQUlRSID0gNDMKLUlQVjZDVExfTUNBU1RfUE1UVSA9IDQ0Ci1JUFY2Q1RMX1NURUFMVEggPSA0NQotSVBWNkNUTF9NQVhJRCA9IDQ2CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNi9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q2L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q2L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNy9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q3L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTNiM2EyLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q3L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTcxICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX19HTlVDTElLRV9BU00gPSAzCi1fX0dOVUNMSUtFX0FTTSA9IDIKLV9fR05VQ0xJS0VfX19UWVBFT0YgPSAxCi1fX0dOVUNMSUtFX19fT0ZGU0VUT0YgPSAxCi1fX0dOVUNMSUtFX19fU0VDVElPTiA9IDEKLV9fR05VQ0xJS0VfQVRUUklCVVRFX01PREVfREkgPSAxCi1fX0dOVUNMSUtFX0NUT1JfU0VDVElPTl9IQU5ETElORyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9DT05TVEFOVF9QID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBUkFSR1MgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fU1REQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBQUxJU1QgPSAxCi1fX0dOVUNfVkFfTElTVF9DT01QQVRJQklMSVRZID0gMQotX19HTlVDTElLRV9CVUlMVElOX05FWFRfQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX01FTUNQWSA9IDEKLV9fQ0NfU1VQUE9SVFNfSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkVfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfX19GVU5DX18gPSAxCi1fX0NDX1NVUFBPUlRTX1dBUk5JTkcgPSAxCi1fX0NDX1NVUFBPUlRTX1ZBUkFESUNfWFhYID0gMQotX19DQ19TVVBQT1JUU19EWU5BTUlDX0FSUkFZX0lOSVQgPSAxCi1fX0NDX0lOVF9JU18zMkJJVCA9IDEKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19YU1RSSU5HKHgpOiByZXR1cm4gX19TVFJJTkcoeCkKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX25vbm51bGwoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyh4KSkpCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMSkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMCkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19mb3JtYXRfYXJnKGZtdGFyZyk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9hcmdfXyAoZm10YXJnKSkpCi0KLWRlZiBfX0ZCU0RJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSURfU09VUkNFKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkX3NvdXJjZV8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19zY2NzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19DT1BZUklHSFQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fY29weXJpZ2h0XyxfX0xJTkVfXykscykKLQotX1BPU0lYX0NfU09VUkNFID0gMTk5MDA5Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkyMDkKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDUwMAotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTg4MDgKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMTk5NTA2Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkzMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTIwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MDA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTg4MDgKLV9fSVNPX0NfVklTSUJMRSA9IDAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9fQlNEX1ZJU0lCTEUgPSAxCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvZW5kaWFuLmgKLV9RVUFEX0hJR0hXT1JEID0gMQotX1FVQURfTE9XV09SRCA9IDAKLV9MSVRUTEVfRU5ESUFOID0gMTIzNAotX0JJR19FTkRJQU4gPSA0MzIxCi1fUERQX0VORElBTiA9IDM0MTIKLV9CWVRFX09SREVSID0gX0xJVFRMRV9FTkRJQU4KLUxJVFRMRV9FTkRJQU4gPSBfTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfQllURV9PUkRFUgotZGVmIF9fd29yZF9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnQoeCk6IHJldHVybiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50KHgpOiByZXR1cm4gX19ieXRlX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfd29yZF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfd29yZCh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX3dvcmRfdmFyKHgpCi0KLWRlZiBfX2h0b25sKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX2h0b25zKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLWRlZiBfX250b2hsKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX250b2hzKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fVURQID0gMTcKLWRlZiBodG9ubCh4KTogcmV0dXJuIF9faHRvbmwoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19odG9ucyh4KQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiBfX250b2hsKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuIF9fbnRvaHMoeCkKLQotSVBQUk9UT19SQVcgPSAyNTUKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19TVCA9IDcKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QSUdQID0gOQotSVBQUk9UT19SQ0NNT04gPSAxMAotSVBQUk9UT19OVlBJSSA9IDExCi1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX0FSR1VTID0gMTMKLUlQUFJPVE9fRU1DT04gPSAxNAotSVBQUk9UT19YTkVUID0gMTUKLUlQUFJPVE9fQ0hBT1MgPSAxNgotSVBQUk9UT19NVVggPSAxOAotSVBQUk9UT19NRUFTID0gMTkKLUlQUFJPVE9fSE1QID0gMjAKLUlQUFJPVE9fUFJNID0gMjEKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFJVTksxID0gMjMKLUlQUFJPVE9fVFJVTksyID0gMjQKLUlQUFJPVE9fTEVBRjEgPSAyNQotSVBQUk9UT19MRUFGMiA9IDI2Ci1JUFBST1RPX1JEUCA9IDI3Ci1JUFBST1RPX0lSVFAgPSAyOAotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0JMVCA9IDMwCi1JUFBST1RPX05TUCA9IDMxCi1JUFBST1RPX0lOUCA9IDMyCi1JUFBST1RPX1NFUCA9IDMzCi1JUFBST1RPXzNQQyA9IDM0Ci1JUFBST1RPX0lEUFIgPSAzNQotSVBQUk9UT19YVFAgPSAzNgotSVBQUk9UT19ERFAgPSAzNwotSVBQUk9UT19DTVRQID0gMzgKLUlQUFJPVE9fVFBYWCA9IDM5Ci1JUFBST1RPX0lMID0gNDAKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1NEUlAgPSA0MgotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19JRFJQID0gNDUKLUlQUFJPVE9fUlNWUCA9IDQ2Ci1JUFBST1RPX0dSRSA9IDQ3Ci1JUFBST1RPX01IUlAgPSA0OAotSVBQUk9UT19CSEEgPSA0OQotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lOTFNQID0gNTIKLUlQUFJPVE9fU1dJUEUgPSA1MwotSVBQUk9UT19OSFJQID0gNTQKLUlQUFJPVE9fTU9CSUxFID0gNTUKLUlQUFJPVE9fVExTUCA9IDU2Ci1JUFBST1RPX1NLSVAgPSA1NwotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fU0NUUCA9IDEzMgotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fQ0FSUCA9IDExMgotSVBQUk9UT19QR00gPSAxMTMKLUlQUFJPVE9fUEZTWU5DID0gMjQwCi1JUFBST1RPX09MRF9ESVZFUlQgPSAyNTQKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUFJPVE9fRElWRVJUID0gMjU4Ci1JUFBST1RPX1NQQUNFUiA9IDMyNzY3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLUlQUE9SVF9NQVggPSA2NTUzNQotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOX0NMQVNTRF9ORVQgPSAoLTI2ODQzNTQ1NikKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0xJTktMT0NBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTY1NTM2KSkgPT0gKC0xNDQyOTcxNjQ4KSkKLQotZGVmIElOX0xPQ0FMX0dST1VQKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjU2KSkgPT0gKC01MzY4NzA5MTIpKQotCi1JTkFERFJfTk9ORSA9ICgtMSkKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1NFTkRTUkNBRERSID0gSVBfUkVDVkRTVEFERFIKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX09ORVNCQ0FTVCA9IDIzCi1JUF9GV19UQUJMRV9BREQgPSA0MAotSVBfRldfVEFCTEVfREVMID0gNDEKLUlQX0ZXX1RBQkxFX0ZMVVNIID0gNDIKLUlQX0ZXX1RBQkxFX0dFVFNJWkUgPSA0MwotSVBfRldfVEFCTEVfTElTVCA9IDQ0Ci1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0ZXX05BVF9DRkcgPSA1NgotSVBfRldfTkFUX0RFTCA9IDU3Ci1JUF9GV19OQVRfR0VUX0NPTkZJRyA9IDU4Ci1JUF9GV19OQVRfR0VUX0xPRyA9IDU5Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9SRUNWVFRMID0gNjUKLUlQX01JTlRUTCA9IDY2Ci1JUF9ET05URlJBRyA9IDY3Ci1JUF9BRERfU09VUkNFX01FTUJFUlNISVAgPSA3MAotSVBfRFJPUF9TT1VSQ0VfTUVNQkVSU0hJUCA9IDcxCi1JUF9CTE9DS19TT1VSQ0UgPSA3MgotSVBfVU5CTE9DS19TT1VSQ0UgPSA3MwotSVBfTVNGSUxURVIgPSA3NAotTUNBU1RfSk9JTl9HUk9VUCA9IDgwCi1NQ0FTVF9MRUFWRV9HUk9VUCA9IDgxCi1NQ0FTVF9KT0lOX1NPVVJDRV9HUk9VUCA9IDgyCi1NQ0FTVF9MRUFWRV9TT1VSQ0VfR1JPVVAgPSA4MwotTUNBU1RfQkxPQ0tfU09VUkNFID0gODQKLU1DQVNUX1VOQkxPQ0tfU09VUkNFID0gODUKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NSU5fTUVNQkVSU0hJUFMgPSAzMQotSVBfTUFYX01FTUJFUlNISVBTID0gNDA5NQotSVBfTUFYX1NPVVJDRV9GSUxURVIgPSAxMDI0Ci1NQ0FTVF9JTkNMVURFID0gMQotTUNBU1RfRVhDTFVERSA9IDIKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci1kZWYgaW5fbnVsbGhvc3QoeCk6IHJldHVybiAoKHgpLnNfYWRkciA9PSBJTkFERFJfQU5ZKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiRnJlZUJTRCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAoLTE2NzExNjgwKQotSVBWNl9BRERSX0lOVDMyX01MTCA9ICgtMTY2NDYxNDQpCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHgwMDAwZmZmZgotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ZmU4MAotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4ZmVjMAotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4ZmYwMgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDB4MDEwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAweDAyMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHgwMDAwMDFmZgotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4MDAwMDAyZmYKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAoLTY1NTM2KQotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0lOVEZBQ0VMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX1NDT1BFX0VNQkVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19ERVBSRUNBVEVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19JTlZBTElEKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl8yMjkyUEtUSU5GTyA9IDE5Ci1JUFY2XzIyOTJIT1BMSU1JVCA9IDIwCi1JUFY2XzIyOTJORVhUSE9QID0gMjEKLUlQVjZfMjI5MkhPUE9QVFMgPSAyMgotSVBWNl8yMjkyRFNUT1BUUyA9IDIzCi1JUFY2XzIyOTJSVEhEUiA9IDI0Ci1JUFY2XzIyOTJQS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9WNk9OTFkgPSAyNwotSVBWNl9CSU5EVjZPTkxZID0gSVBWNl9WNk9OTFkKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUkRTVE9QVFMgPSAzNQotSVBWNl9SRUNWUEtUSU5GTyA9IDM2Ci1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDM3Ci1JUFY2X1JFQ1ZSVEhEUiA9IDM4Ci1JUFY2X1JFQ1ZIT1BPUFRTID0gMzkKLUlQVjZfUkVDVkRTVE9QVFMgPSA0MAotSVBWNl9SRUNWUlRIRFJEU1RPUFRTID0gNDEKLUlQVjZfVVNFX01JTl9NVFUgPSA0MgotSVBWNl9SRUNWUEFUSE1UVSA9IDQzCi1JUFY2X1BBVEhNVFUgPSA0NAotSVBWNl9SRUFDSENPTkYgPSA0NQotSVBWNl9QS1RJTkZPID0gNDYKLUlQVjZfSE9QTElNSVQgPSA0NwotSVBWNl9ORVhUSE9QID0gNDgKLUlQVjZfSE9QT1BUUyA9IDQ5Ci1JUFY2X0RTVE9QVFMgPSA1MAotSVBWNl9SVEhEUiA9IDUxCi1JUFY2X1BLVE9QVElPTlMgPSA1MgotSVBWNl9SRUNWVENMQVNTID0gNTcKLUlQVjZfQVVUT0ZMT1dMQUJFTCA9IDU5Ci1JUFY2X1RDTEFTUyA9IDYxCi1JUFY2X0RPTlRGUkFHID0gNjIKLUlQVjZfUFJFRkVSX1RFTVBBRERSID0gNjMKLUlQVjZfTVNGSUxURVIgPSA3NAotSVBWNl9SVEhEUl9MT09TRSA9IDAKLUlQVjZfUlRIRFJfU1RSSUNUID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0hPUFMgPSAxCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUFY2X1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBWNl9QT1JUUkFOR0VfSElHSCA9IDEKLUlQVjZfUE9SVFJBTkdFX0xPVyA9IDIKLUlQVjZQUk9UT19NQVhJRCA9IChJUFBST1RPX1BJTSArIDEpCi1JUFY2Q1RMX0ZPUldBUkRJTkcgPSAxCi1JUFY2Q1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUFY2Q1RMX0RFRkhMSU0gPSAzCi1JUFY2Q1RMX0RFRk1UVSA9IDQKLUlQVjZDVExfRk9SV1NSQ1JUID0gNQotSVBWNkNUTF9TVEFUUyA9IDYKLUlQVjZDVExfTVJUU1RBVFMgPSA3Ci1JUFY2Q1RMX01SVFBST1RPID0gOAotSVBWNkNUTF9NQVhGUkFHUEFDS0VUUyA9IDkKLUlQVjZDVExfU09VUkNFQ0hFQ0sgPSAxMAotSVBWNkNUTF9TT1VSQ0VDSEVDS19MT0dJTlQgPSAxMQotSVBWNkNUTF9BQ0NFUFRfUlRBRFYgPSAxMgotSVBWNkNUTF9LRUVQRkFJVEggPSAxMwotSVBWNkNUTF9MT0dfSU5URVJWQUwgPSAxNAotSVBWNkNUTF9IRFJORVNUTElNSVQgPSAxNQotSVBWNkNUTF9EQURfQ09VTlQgPSAxNgotSVBWNkNUTF9BVVRPX0ZMT1dMQUJFTCA9IDE3Ci1JUFY2Q1RMX0RFRk1DQVNUSExJTSA9IDE4Ci1JUFY2Q1RMX0dJRl9ITElNID0gMTkKLUlQVjZDVExfS0FNRV9WRVJTSU9OID0gMjAKLUlQVjZDVExfVVNFX0RFUFJFQ0FURUQgPSAyMQotSVBWNkNUTF9SUl9QUlVORSA9IDIyCi1JUFY2Q1RMX01BUFBFRF9BRERSID0gMjMKLUlQVjZDVExfVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9VU0VURU1QQUREUiA9IDMyCi1JUFY2Q1RMX1RFTVBQTFRJTUUgPSAzMwotSVBWNkNUTF9URU1QVkxUSU1FID0gMzQKLUlQVjZDVExfQVVUT19MSU5LTE9DQUwgPSAzNQotSVBWNkNUTF9SSVA2U1RBVFMgPSAzNgotSVBWNkNUTF9QUkVGRVJfVEVNUEFERFIgPSAzNwotSVBWNkNUTF9BRERSQ1RMUE9MSUNZID0gMzgKLUlQVjZDVExfVVNFX0RFRkFVTFRaT05FID0gMzkKLUlQVjZDVExfTUFYRlJBR1MgPSA0MQotSVBWNkNUTF9JRlEgPSA0MgotSVBWNkNUTF9JU0FUQVBSVFIgPSA0MwotSVBWNkNUTF9NQ0FTVF9QTVRVID0gNDQKLUlQVjZDVExfU1RFQUxUSCA9IDQ1Ci1JUFY2Q1RMX01BWElEID0gNDYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q3L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDcvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDcvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q4L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDgvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlM2IzYTIuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDgvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NzEgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1fX0dOVUNMSUtFX0FTTSA9IDMKLV9fR05VQ0xJS0VfQVNNID0gMgotX19HTlVDTElLRV9fX1RZUEVPRiA9IDEKLV9fR05VQ0xJS0VfX19PRkZTRVRPRiA9IDEKLV9fR05VQ0xJS0VfX19TRUNUSU9OID0gMQotX19HTlVDTElLRV9BVFRSSUJVVEVfTU9ERV9ESSA9IDEKLV9fR05VQ0xJS0VfQ1RPUl9TRUNUSU9OX0hBTkRMSU5HID0gMQotX19HTlVDTElLRV9CVUlMVElOX0NPTlNUQU5UX1AgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFSQVJHUyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9TVERBUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFBTElTVCA9IDEKLV9fR05VQ19WQV9MSVNUX0NPTVBBVElCSUxJVFkgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTkVYVF9BUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTUVNQ1BZID0gMQotX19DQ19TVVBQT1JUU19JTkxJTkUgPSAxCi1fX0NDX1NVUFBPUlRTX19fSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORV9fID0gMQotX19DQ19TVVBQT1JUU19fX0ZVTkNfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfV0FSTklORyA9IDEKLV9fQ0NfU1VQUE9SVFNfVkFSQURJQ19YWFggPSAxCi1fX0NDX1NVUFBPUlRTX0RZTkFNSUNfQVJSQVlfSU5JVCA9IDEKLV9fQ0NfSU5UX0lTXzMyQklUID0gMQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1hTVFJJTkcoeCk6IHJldHVybiBfX1NUUklORyh4KQotCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiAoKQotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAieCIKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fbm9ubnVsbCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKHgpKSkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAxKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAwKQotCi1kZWYgX19wcmVkaWN0X3RydWUoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX3ByZWRpY3RfZmFsc2UoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX2Zvcm1hdF9hcmcoZm10YXJnKTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X2FyZ19fIChmbXRhcmcpKSkKLQotZGVmIF9fRkJTRElEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19SQ1NJRF9TT1VSQ0Uocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfc291cmNlXyxfX0xJTkVfXykscykKLQotZGVmIF9fU0NDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3NjY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX0NPUFlSSUdIVChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19jb3B5cmlnaHRfLF9fTElORV9fKSxzKQotCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkwMDkKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTIwOQotX19YU0lfVklTSUJMRSA9IDYwMAotX1BPU0lYX0NfU09VUkNFID0gMjAwMTEyCi1fX1hTSV9WSVNJQkxFID0gNTAwCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9DX1NPVVJDRSA9IDE5ODgwOAotX19QT1NJWF9WSVNJQkxFID0gMjAwMTEyCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAxOTk1MDYKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTMwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MjA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkwMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5ODgwOAotX19JU09fQ19WSVNJQkxFID0gMAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAwCi1fX1hTSV9WSVNJQkxFID0gMAotX19CU0RfVklTSUJMRSA9IDAKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDYwMAotX19CU0RfVklTSUJMRSA9IDEKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9lbmRpYW4uaAotX1FVQURfSElHSFdPUkQgPSAxCi1fUVVBRF9MT1dXT1JEID0gMAotX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fQklHX0VORElBTiA9IDQzMjEKLV9QRFBfRU5ESUFOID0gMzQxMgotX0JZVEVfT1JERVIgPSBfTElUVExFX0VORElBTgotTElUVExFX0VORElBTiA9IF9MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX0JJR19FTkRJQU4KLVBEUF9FTkRJQU4gPSBfUERQX0VORElBTgotQllURV9PUkRFUiA9IF9CWVRFX09SREVSCi1kZWYgX193b3JkX3N3YXBfaW50X3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludCh4KTogcmV0dXJuIF9fd29yZF9zd2FwX2ludF92YXIoeCkKLQotZGVmIF9fYnl0ZV9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnQoeCk6IHJldHVybiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkKHgpOiByZXR1cm4gX19ieXRlX3N3YXBfd29yZF92YXIoeCkKLQotZGVmIF9faHRvbmwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9faHRvbnMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotZGVmIF9fbnRvaGwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9fbnRvaHMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19VRFAgPSAxNwotZGVmIGh0b25sKHgpOiByZXR1cm4gX19odG9ubCh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX2h0b25zKHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fbnRvaGwoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19udG9ocyh4KQotCi1JUFBST1RPX1JBVyA9IDI1NQotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19NT0JJTEUgPSA1NQotSVBQUk9UT19UTFNQID0gNTYKLUlQUFJPVE9fU0tJUCA9IDU3Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19TQ1RQID0gMTMyCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19DQVJQID0gMTEyCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19QRlNZTkMgPSAyNDAKLUlQUFJPVE9fT0xEX0RJVkVSVCA9IDI1NAotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQUk9UT19ESVZFUlQgPSAyNTgKLUlQUFJPVE9fU1BBQ0VSID0gMzI3NjcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotSVBQT1JUX01BWCA9IDY1NTM1Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjE0NzQ4MzY0OCkpID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAoLTE2Nzc3MjE2KQotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0xMDczNzQxODI0KSkgPT0gKC0yMTQ3NDgzNjQ4KSkKLQotSU5fQ0xBU1NCX05FVCA9ICgtNjU1MzYpCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC0xMDczNzQxODI0KSkKLQotSU5fQ0xBU1NDX05FVCA9ICgtMjU2KQotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtNTM2ODcwOTEyKSkKLQotSU5fQ0xBU1NEX05FVCA9ICgtMjY4NDM1NDU2KQotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC0yNjg0MzU0NTYpKQotCi1kZWYgSU5fTElOS0xPQ0FMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNjU1MzYpKSA9PSAoLTE0NDI5NzE2NDgpKQotCi1kZWYgSU5fTE9DQUxfR1JPVVAoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOQUREUl9OT05FID0gKC0xKQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfU0VORFNSQ0FERFIgPSBJUF9SRUNWRFNUQUREUgotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfT05FU0JDQVNUID0gMjMKLUlQX0ZXX1RBQkxFX0FERCA9IDQwCi1JUF9GV19UQUJMRV9ERUwgPSA0MQotSVBfRldfVEFCTEVfRkxVU0ggPSA0MgotSVBfRldfVEFCTEVfR0VUU0laRSA9IDQzCi1JUF9GV19UQUJMRV9MSVNUID0gNDQKLUlQX0ZXX0FERCA9IDUwCi1JUF9GV19ERUwgPSA1MQotSVBfRldfRkxVU0ggPSA1MgotSVBfRldfWkVSTyA9IDUzCi1JUF9GV19HRVQgPSA1NAotSVBfRldfUkVTRVRMT0cgPSA1NQotSVBfRldfTkFUX0NGRyA9IDU2Ci1JUF9GV19OQVRfREVMID0gNTcKLUlQX0ZXX05BVF9HRVRfQ09ORklHID0gNTgKLUlQX0ZXX05BVF9HRVRfTE9HID0gNTkKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX1JFQ1ZUVEwgPSA2NQotSVBfTUlOVFRMID0gNjYKLUlQX0RPTlRGUkFHID0gNjcKLUlQX0FERF9TT1VSQ0VfTUVNQkVSU0hJUCA9IDcwCi1JUF9EUk9QX1NPVVJDRV9NRU1CRVJTSElQID0gNzEKLUlQX0JMT0NLX1NPVVJDRSA9IDcyCi1JUF9VTkJMT0NLX1NPVVJDRSA9IDczCi1JUF9NU0ZJTFRFUiA9IDc0Ci1NQ0FTVF9KT0lOX0dST1VQID0gODAKLU1DQVNUX0xFQVZFX0dST1VQID0gODEKLU1DQVNUX0pPSU5fU09VUkNFX0dST1VQID0gODIKLU1DQVNUX0xFQVZFX1NPVVJDRV9HUk9VUCA9IDgzCi1NQ0FTVF9CTE9DS19TT1VSQ0UgPSA4NAotTUNBU1RfVU5CTE9DS19TT1VSQ0UgPSA4NQotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01JTl9NRU1CRVJTSElQUyA9IDMxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSA0MDk1Ci1JUF9NQVhfU09VUkNFX0ZJTFRFUiA9IDEwMjQKLU1DQVNUX0lOQ0xVREUgPSAxCi1NQ0FTVF9FWENMVURFID0gMgotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLWRlZiBpbl9udWxsaG9zdCh4KTogcmV0dXJuICgoeCkuc19hZGRyID09IElOQUREUl9BTlkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi1fX0tBTUVfVkVSU0lPTiA9ICJGcmVlQlNEIgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAxCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMgotSVBWNl9BRERSX0lOVDMyX01OTCA9ICgtMTY3MTE2ODApCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gKC0xNjY0NjE0NCkKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9ICgtNjU1MzYpCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHg4MGZlCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhjMGZlCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHgwMmZmCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYSk6IHJldHVybiBcCi0KLUlQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfSU5URkFDRUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfRU1CRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0RFUFJFQ0FURUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0lOVkFMSUQoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2XzIyOTJQS1RJTkZPID0gMTkKLUlQVjZfMjI5MkhPUExJTUlUID0gMjAKLUlQVjZfMjI5Mk5FWFRIT1AgPSAyMQotSVBWNl8yMjkySE9QT1BUUyA9IDIyCi1JUFY2XzIyOTJEU1RPUFRTID0gMjMKLUlQVjZfMjI5MlJUSERSID0gMjQKLUlQVjZfMjI5MlBLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X1Y2T05MWSA9IDI3Ci1JUFY2X0JJTkRWNk9OTFkgPSBJUFY2X1Y2T05MWQotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSRFNUT1BUUyA9IDM1Ci1JUFY2X1JFQ1ZQS1RJTkZPID0gMzYKLUlQVjZfUkVDVkhPUExJTUlUID0gMzcKLUlQVjZfUkVDVlJUSERSID0gMzgKLUlQVjZfUkVDVkhPUE9QVFMgPSAzOQotSVBWNl9SRUNWRFNUT1BUUyA9IDQwCi1JUFY2X1JFQ1ZSVEhEUkRTVE9QVFMgPSA0MQotSVBWNl9VU0VfTUlOX01UVSA9IDQyCi1JUFY2X1JFQ1ZQQVRITVRVID0gNDMKLUlQVjZfUEFUSE1UVSA9IDQ0Ci1JUFY2X1JFQUNIQ09ORiA9IDQ1Ci1JUFY2X1BLVElORk8gPSA0NgotSVBWNl9IT1BMSU1JVCA9IDQ3Ci1JUFY2X05FWFRIT1AgPSA0OAotSVBWNl9IT1BPUFRTID0gNDkKLUlQVjZfRFNUT1BUUyA9IDUwCi1JUFY2X1JUSERSID0gNTEKLUlQVjZfUEtUT1BUSU9OUyA9IDUyCi1JUFY2X1JFQ1ZUQ0xBU1MgPSA1NwotSVBWNl9BVVRPRkxPV0xBQkVMID0gNTkKLUlQVjZfVENMQVNTID0gNjEKLUlQVjZfRE9OVEZSQUcgPSA2MgotSVBWNl9QUkVGRVJfVEVNUEFERFIgPSA2MwotSVBWNl9NU0ZJTFRFUiA9IDc0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9WNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX1VTRVRFTVBBRERSID0gMzIKLUlQVjZDVExfVEVNUFBMVElNRSA9IDMzCi1JUFY2Q1RMX1RFTVBWTFRJTUUgPSAzNAotSVBWNkNUTF9BVVRPX0xJTktMT0NBTCA9IDM1Ci1JUFY2Q1RMX1JJUDZTVEFUUyA9IDM2Ci1JUFY2Q1RMX1BSRUZFUl9URU1QQUREUiA9IDM3Ci1JUFY2Q1RMX0FERFJDVExQT0xJQ1kgPSAzOAotSVBWNkNUTF9VU0VfREVGQVVMVFpPTkUgPSAzOQotSVBWNkNUTF9NQVhGUkFHUyA9IDQxCi1JUFY2Q1RMX0lGUSA9IDQyCi1JUFY2Q1RMX0lTQVRBUFJUUiA9IDQzCi1JUFY2Q1RMX01DQVNUX1BNVFUgPSA0NAotSVBWNkNUTF9TVEVBTFRIID0gNDUKLUlQVjZDVExfTUFYSUQgPSA0NgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDgvcmVnZW4gYi9MaWIvcGxhdC1mcmVlYnNkOC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkOC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1weXRob24gLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbiBiL0xpYi9wbGF0LWdlbmVyaWMvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM5NjE2N2QuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1ldmFsICRQWVRIT05fRk9SX0JVSUxEIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAiJyh1X2xvbmcpJyIgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvQ0RST00ucHkgYi9MaWIvcGxhdC1saW51eC9DRFJPTS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM0MDkzNi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9DRFJPTS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwNyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL2xpbnV4L2Nkcm9tLmgKLQotQ0RST01QQVVTRSA9IDB4NTMwMQotQ0RST01SRVNVTUUgPSAweDUzMDIKLUNEUk9NUExBWU1TRiA9IDB4NTMwMwotQ0RST01QTEFZVFJLSU5EID0gMHg1MzA0Ci1DRFJPTVJFQURUT0NIRFIgPSAweDUzMDUKLUNEUk9NUkVBRFRPQ0VOVFJZID0gMHg1MzA2Ci1DRFJPTVNUT1AgPSAweDUzMDcKLUNEUk9NU1RBUlQgPSAweDUzMDgKLUNEUk9NRUpFQ1QgPSAweDUzMDkKLUNEUk9NVk9MQ1RSTCA9IDB4NTMwYQotQ0RST01TVUJDSE5MID0gMHg1MzBiCi1DRFJPTVJFQURNT0RFMiA9IDB4NTMwYwotQ0RST01SRUFETU9ERTEgPSAweDUzMGQKLUNEUk9NUkVBREFVRElPID0gMHg1MzBlCi1DRFJPTUVKRUNUX1NXID0gMHg1MzBmCi1DRFJPTU1VTFRJU0VTU0lPTiA9IDB4NTMxMAotQ0RST01fR0VUX01DTiA9IDB4NTMxMQotQ0RST01fR0VUX1VQQyA9IENEUk9NX0dFVF9NQ04KLUNEUk9NUkVTRVQgPSAweDUzMTIKLUNEUk9NVk9MUkVBRCA9IDB4NTMxMwotQ0RST01SRUFEUkFXID0gMHg1MzE0Ci1DRFJPTVJFQURDT09LRUQgPSAweDUzMTUKLUNEUk9NU0VFSyA9IDB4NTMxNgotQ0RST01QTEFZQkxLID0gMHg1MzE3Ci1DRFJPTVJFQURBTEwgPSAweDUzMTgKLUNEUk9NR0VUU1BJTkRPV04gPSAweDUzMWQKLUNEUk9NU0VUU1BJTkRPV04gPSAweDUzMWUKLUNEUk9NQ0xPU0VUUkFZID0gMHg1MzE5Ci1DRFJPTV9TRVRfT1BUSU9OUyA9IDB4NTMyMAotQ0RST01fQ0xFQVJfT1BUSU9OUyA9IDB4NTMyMQotQ0RST01fU0VMRUNUX1NQRUVEID0gMHg1MzIyCi1DRFJPTV9TRUxFQ1RfRElTQyA9IDB4NTMyMwotQ0RST01fTUVESUFfQ0hBTkdFRCA9IDB4NTMyNQotQ0RST01fRFJJVkVfU1RBVFVTID0gMHg1MzI2Ci1DRFJPTV9ESVNDX1NUQVRVUyA9IDB4NTMyNwotQ0RST01fQ0hBTkdFUl9OU0xPVFMgPSAweDUzMjgKLUNEUk9NX0xPQ0tET09SID0gMHg1MzI5Ci1DRFJPTV9ERUJVRyA9IDB4NTMzMAotQ0RST01fR0VUX0NBUEFCSUxJVFkgPSAweDUzMzEKLUNEUk9NQVVESU9CVUZTSVogPSAweDUzODIKLURWRF9SRUFEX1NUUlVDVCA9IDB4NTM5MAotRFZEX1dSSVRFX1NUUlVDVCA9IDB4NTM5MQotRFZEX0FVVEggPSAweDUzOTIKLUNEUk9NX1NFTkRfUEFDS0VUID0gMHg1MzkzCi1DRFJPTV9ORVhUX1dSSVRBQkxFID0gMHg1Mzk0Ci1DRFJPTV9MQVNUX1dSSVRURU4gPSAweDUzOTUKLUNEUk9NX1BBQ0tFVF9TSVpFID0gMTIKLUNHQ19EQVRBX1VOS05PV04gPSAwCi1DR0NfREFUQV9XUklURSA9IDEKLUNHQ19EQVRBX1JFQUQgPSAyCi1DR0NfREFUQV9OT05FID0gMwotQ0RfTUlOUyA9IDc0Ci1DRF9TRUNTID0gNjAKLUNEX0ZSQU1FUyA9IDc1Ci1DRF9TWU5DX1NJWkUgPSAxMgotQ0RfTVNGX09GRlNFVCA9IDE1MAotQ0RfQ0hVTktfU0laRSA9IDI0Ci1DRF9OVU1fT0ZfQ0hVTktTID0gOTgKLUNEX0ZSQU1FU0laRV9TVUIgPSA5NgotQ0RfSEVBRF9TSVpFID0gNAotQ0RfU1VCSEVBRF9TSVpFID0gOAotQ0RfRURDX1NJWkUgPSA0Ci1DRF9aRVJPX1NJWkUgPSA4Ci1DRF9FQ0NfU0laRSA9IDI3NgotQ0RfRlJBTUVTSVpFID0gMjA0OAotQ0RfRlJBTUVTSVpFX1JBVyA9IDIzNTIKLUNEX0ZSQU1FU0laRV9SQVdFUiA9IDI2NDYKLUNEX0ZSQU1FU0laRV9SQVcxID0gKENEX0ZSQU1FU0laRV9SQVctQ0RfU1lOQ19TSVpFKQotQ0RfRlJBTUVTSVpFX1JBVzAgPSAoQ0RfRlJBTUVTSVpFX1JBVy1DRF9TWU5DX1NJWkUtQ0RfSEVBRF9TSVpFKQotQ0RfWEFfSEVBRCA9IChDRF9IRUFEX1NJWkUrQ0RfU1VCSEVBRF9TSVpFKQotQ0RfWEFfVEFJTCA9IChDRF9FRENfU0laRStDRF9FQ0NfU0laRSkKLUNEX1hBX1NZTkNfSEVBRCA9IChDRF9TWU5DX1NJWkUrQ0RfWEFfSEVBRCkKLUNEUk9NX0xCQSA9IDB4MDEKLUNEUk9NX01TRiA9IDB4MDIKLUNEUk9NX0RBVEFfVFJBQ0sgPSAweDA0Ci1DRFJPTV9MRUFET1VUID0gMHhBQQotQ0RST01fQVVESU9fSU5WQUxJRCA9IDB4MDAKLUNEUk9NX0FVRElPX1BMQVkgPSAweDExCi1DRFJPTV9BVURJT19QQVVTRUQgPSAweDEyCi1DRFJPTV9BVURJT19DT01QTEVURUQgPSAweDEzCi1DRFJPTV9BVURJT19FUlJPUiA9IDB4MTQKLUNEUk9NX0FVRElPX05PX1NUQVRVUyA9IDB4MTUKLUNEQ19DTE9TRV9UUkFZID0gMHgxCi1DRENfT1BFTl9UUkFZID0gMHgyCi1DRENfTE9DSyA9IDB4NAotQ0RDX1NFTEVDVF9TUEVFRCA9IDB4OAotQ0RDX1NFTEVDVF9ESVNDID0gMHgxMAotQ0RDX01VTFRJX1NFU1NJT04gPSAweDIwCi1DRENfTUNOID0gMHg0MAotQ0RDX01FRElBX0NIQU5HRUQgPSAweDgwCi1DRENfUExBWV9BVURJTyA9IDB4MTAwCi1DRENfUkVTRVQgPSAweDIwMAotQ0RDX0lPQ1RMUyA9IDB4NDAwCi1DRENfRFJJVkVfU1RBVFVTID0gMHg4MDAKLUNEQ19HRU5FUklDX1BBQ0tFVCA9IDB4MTAwMAotQ0RDX0NEX1IgPSAweDIwMDAKLUNEQ19DRF9SVyA9IDB4NDAwMAotQ0RDX0RWRCA9IDB4ODAwMAotQ0RDX0RWRF9SID0gMHgxMDAwMAotQ0RDX0RWRF9SQU0gPSAweDIwMDAwCi1DRFNfTk9fSU5GTyA9IDAKLUNEU19OT19ESVNDID0gMQotQ0RTX1RSQVlfT1BFTiA9IDIKLUNEU19EUklWRV9OT1RfUkVBRFkgPSAzCi1DRFNfRElTQ19PSyA9IDQKLUNEU19BVURJTyA9IDEwMAotQ0RTX0RBVEFfMSA9IDEwMQotQ0RTX0RBVEFfMiA9IDEwMgotQ0RTX1hBXzJfMSA9IDEwMwotQ0RTX1hBXzJfMiA9IDEwNAotQ0RTX01JWEVEID0gMTA1Ci1DRE9fQVVUT19DTE9TRSA9IDB4MQotQ0RPX0FVVE9fRUpFQ1QgPSAweDIKLUNET19VU0VfRkZMQUdTID0gMHg0Ci1DRE9fTE9DSyA9IDB4OAotQ0RPX0NIRUNLX1RZUEUgPSAweDEwCi1DRF9QQVJUX01BWCA9IDY0Ci1DRF9QQVJUX01BU0sgPSAoQ0RfUEFSVF9NQVggLSAxKQotR1BDTURfQkxBTksgPSAweGExCi1HUENNRF9DTE9TRV9UUkFDSyA9IDB4NWIKLUdQQ01EX0ZMVVNIX0NBQ0hFID0gMHgzNQotR1BDTURfRk9STUFUX1VOSVQgPSAweDA0Ci1HUENNRF9HRVRfQ09ORklHVVJBVElPTiA9IDB4NDYKLUdQQ01EX0dFVF9FVkVOVF9TVEFUVVNfTk9USUZJQ0FUSU9OID0gMHg0YQotR1BDTURfR0VUX1BFUkZPUk1BTkNFID0gMHhhYwotR1BDTURfSU5RVUlSWSA9IDB4MTIKLUdQQ01EX0xPQURfVU5MT0FEID0gMHhhNgotR1BDTURfTUVDSEFOSVNNX1NUQVRVUyA9IDB4YmQKLUdQQ01EX01PREVfU0VMRUNUXzEwID0gMHg1NQotR1BDTURfTU9ERV9TRU5TRV8xMCA9IDB4NWEKLUdQQ01EX1BBVVNFX1JFU1VNRSA9IDB4NGIKLUdQQ01EX1BMQVlfQVVESU9fMTAgPSAweDQ1Ci1HUENNRF9QTEFZX0FVRElPX01TRiA9IDB4NDcKLUdQQ01EX1BMQVlfQVVESU9fVEkgPSAweDQ4Ci1HUENNRF9QTEFZX0NEID0gMHhiYwotR1BDTURfUFJFVkVOVF9BTExPV19NRURJVU1fUkVNT1ZBTCA9IDB4MWUKLUdQQ01EX1JFQURfMTAgPSAweDI4Ci1HUENNRF9SRUFEXzEyID0gMHhhOAotR1BDTURfUkVBRF9DRFZEX0NBUEFDSVRZID0gMHgyNQotR1BDTURfUkVBRF9DRCA9IDB4YmUKLUdQQ01EX1JFQURfQ0RfTVNGID0gMHhiOQotR1BDTURfUkVBRF9ESVNDX0lORk8gPSAweDUxCi1HUENNRF9SRUFEX0RWRF9TVFJVQ1RVUkUgPSAweGFkCi1HUENNRF9SRUFEX0ZPUk1BVF9DQVBBQ0lUSUVTID0gMHgyMwotR1BDTURfUkVBRF9IRUFERVIgPSAweDQ0Ci1HUENNRF9SRUFEX1RSQUNLX1JaT05FX0lORk8gPSAweDUyCi1HUENNRF9SRUFEX1NVQkNIQU5ORUwgPSAweDQyCi1HUENNRF9SRUFEX1RPQ19QTUFfQVRJUCA9IDB4NDMKLUdQQ01EX1JFUEFJUl9SWk9ORV9UUkFDSyA9IDB4NTgKLUdQQ01EX1JFUE9SVF9LRVkgPSAweGE0Ci1HUENNRF9SRVFVRVNUX1NFTlNFID0gMHgwMwotR1BDTURfUkVTRVJWRV9SWk9ORV9UUkFDSyA9IDB4NTMKLUdQQ01EX1NDQU4gPSAweGJhCi1HUENNRF9TRUVLID0gMHgyYgotR1BDTURfU0VORF9EVkRfU1RSVUNUVVJFID0gMHhhZAotR1BDTURfU0VORF9FVkVOVCA9IDB4YTIKLUdQQ01EX1NFTkRfS0VZID0gMHhhMwotR1BDTURfU0VORF9PUEMgPSAweDU0Ci1HUENNRF9TRVRfUkVBRF9BSEVBRCA9IDB4YTcKLUdQQ01EX1NFVF9TVFJFQU1JTkcgPSAweGI2Ci1HUENNRF9TVEFSVF9TVE9QX1VOSVQgPSAweDFiCi1HUENNRF9TVE9QX1BMQVlfU0NBTiA9IDB4NGUKLUdQQ01EX1RFU1RfVU5JVF9SRUFEWSA9IDB4MDAKLUdQQ01EX1ZFUklGWV8xMCA9IDB4MmYKLUdQQ01EX1dSSVRFXzEwID0gMHgyYQotR1BDTURfV1JJVEVfQU5EX1ZFUklGWV8xMCA9IDB4MmUKLUdQQ01EX1NFVF9TUEVFRCA9IDB4YmIKLUdQQ01EX1BMQVlBVURJT19USSA9IDB4NDgKLUdQQ01EX0dFVF9NRURJQV9TVEFUVVMgPSAweGRhCi1HUE1PREVfUl9XX0VSUk9SX1BBR0UgPSAweDAxCi1HUE1PREVfV1JJVEVfUEFSTVNfUEFHRSA9IDB4MDUKLUdQTU9ERV9BVURJT19DVExfUEFHRSA9IDB4MGUKLUdQTU9ERV9QT1dFUl9QQUdFID0gMHgxYQotR1BNT0RFX0ZBVUxUX0ZBSUxfUEFHRSA9IDB4MWMKLUdQTU9ERV9UT19QUk9URUNUX1BBR0UgPSAweDFkCi1HUE1PREVfQ0FQQUJJTElUSUVTX1BBR0UgPSAweDJhCi1HUE1PREVfQUxMX1BBR0VTID0gMHgzZgotR1BNT0RFX0NEUk9NX1BBR0UgPSAweDBkCi1EVkRfU1RSVUNUX1BIWVNJQ0FMID0gMHgwMAotRFZEX1NUUlVDVF9DT1BZUklHSFQgPSAweDAxCi1EVkRfU1RSVUNUX0RJU0NLRVkgPSAweDAyCi1EVkRfU1RSVUNUX0JDQSA9IDB4MDMKLURWRF9TVFJVQ1RfTUFOVUZBQ1QgPSAweDA0Ci1EVkRfTEFZRVJTID0gNAotRFZEX0xVX1NFTkRfQUdJRCA9IDAKLURWRF9IT1NUX1NFTkRfQ0hBTExFTkdFID0gMQotRFZEX0xVX1NFTkRfS0VZMSA9IDIKLURWRF9MVV9TRU5EX0NIQUxMRU5HRSA9IDMKLURWRF9IT1NUX1NFTkRfS0VZMiA9IDQKLURWRF9BVVRIX0VTVEFCTElTSEVEID0gNQotRFZEX0FVVEhfRkFJTFVSRSA9IDYKLURWRF9MVV9TRU5EX1RJVExFX0tFWSA9IDcKLURWRF9MVV9TRU5EX0FTRiA9IDgKLURWRF9JTlZBTElEQVRFX0FHSUQgPSA5Ci1EVkRfTFVfU0VORF9SUENfU1RBVEUgPSAxMAotRFZEX0hPU1RfU0VORF9SUENfU1RBVEUgPSAxMQotRFZEX0NQTV9OT19DT1BZUklHSFQgPSAwCi1EVkRfQ1BNX0NPUFlSSUdIVEVEID0gMQotRFZEX0NQX1NFQ19OT05FID0gMAotRFZEX0NQX1NFQ19FWElTVCA9IDEKLURWRF9DR01TX1VOUkVTVFJJQ1RFRCA9IDAKLURWRF9DR01TX1NJTkdMRSA9IDIKLURWRF9DR01TX1JFU1RSSUNURUQgPSAzCi0KLUNEUk9NX01BWF9TTE9UUyA9IDI1NgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvRExGQ04ucHkgYi9MaWIvcGxhdC1saW51eC9ETEZDTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQxMGFjNC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9ETEZDTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvZGxmY24uaAotX0RMRkNOX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBmZWF0dXJlcy5oCi1fRkVBVFVSRVNfSCA9IDEKLV9fVVNFX0FOU0kgPSAxCi1fX0ZBVk9SX0JTRCA9IDEKLV9JU09DOTlfU09VUkNFID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1hPUEVOX1NPVVJDRSA9IDYwMAotX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX19VU0VfSVNPQzk5ID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX19VU0VfUE9TSVggPSAxCi1fX1VTRV9QT1NJWDIgPSAxCi1fX1VTRV9QT1NJWDE5OTMwOSA9IDEKLV9fVVNFX1BPU0lYMTk5NTA2ID0gMQotX19VU0VfWE9QRU4gPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX1VOSVg5OCA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX19VU0VfWE9QRU4ySyA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9GSUxFX09GRlNFVDY0ID0gMQotX19VU0VfTUlTQyA9IDEKLV9fVVNFX0JTRCA9IDEKLV9fVVNFX1NWSUQgPSAxCi1fX1VTRV9HTlUgPSAxCi1fX1VTRV9SRUVOVFJBTlQgPSAxCi1fX1NURENfSUVDXzU1OV9fID0gMQotX19TVERDX0lFQ181NTlfQ09NUExFWF9fID0gMQotX19TVERDX0lTT18xMDY0Nl9fID0gMjAwMDA5Ci1fX0dOVV9MSUJSQVJZX18gPSA2Ci1fX0dMSUJDX18gPSAyCi1fX0dMSUJDX01JTk9SX18gPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX1NZU19DREVGU19IID0gMQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMF0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMV0KLWRlZiBfX0FTTU5BTUUoY25hbWUpOiByZXR1cm4gX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKLQotZGVmIF9fYXR0cmlidXRlX18oeHl6KTogcmV0dXJuCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuCi0KLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRVhURVJOX0lOTElORVMgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBnbnUvc3R1YnMuaAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9kbGZjbi5oCi1SVExEX0xBWlkgPSAweDAwMDAxCi1SVExEX05PVyA9IDB4MDAwMDIKLVJUTERfQklORElOR19NQVNLID0gMHgzCi1SVExEX05PTE9BRCA9IDB4MDAwMDQKLVJUTERfR0xPQkFMID0gMHgwMDEwMAotUlRMRF9MT0NBTCA9IDAKLVJUTERfTk9ERUxFVEUgPSAweDAxMDAwCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eC9JTi5weSBiL0xpYi9wbGF0LWxpbnV4L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2QzMDAyLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWxpbnV4L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjE1ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1fTkVUSU5FVF9JTl9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZmVhdHVyZXMuaAotX0ZFQVRVUkVTX0ggPSAxCi1fX1VTRV9BTlNJID0gMQotX19GQVZPUl9CU0QgPSAxCi1fSVNPQzk5X1NPVVJDRSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9YT1BFTl9TT1VSQ0UgPSA2MDAKLV9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0JTRF9TT1VSQ0UgPSAxCi1fU1ZJRF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9fVVNFX1BPU0lYID0gMQotX19VU0VfUE9TSVgyID0gMQotX19VU0VfUE9TSVgxOTkzMDkgPSAxCi1fX1VTRV9QT1NJWDE5OTUwNiA9IDEKLV9fVVNFX1hPUEVOID0gMQotX19VU0VfWE9QRU5fRVhURU5ERUQgPSAxCi1fX1VTRV9VTklYOTggPSAxCi1fTEFSR0VGSUxFX1NPVVJDRSA9IDEKLV9fVVNFX1hPUEVOMksgPSAxCi1fX1VTRV9JU09DOTkgPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRklMRV9PRkZTRVQ2NCA9IDEKLV9fVVNFX01JU0MgPSAxCi1fX1VTRV9CU0QgPSAxCi1fX1VTRV9TVklEID0gMQotX19VU0VfR05VID0gMQotX19VU0VfUkVFTlRSQU5UID0gMQotX19TVERDX0lFQ181NTlfXyA9IDEKLV9fU1REQ19JRUNfNTU5X0NPTVBMRVhfXyA9IDEKLV9fU1REQ19JU09fMTA2NDZfXyA9IDIwMDAwOQotX19HTlVfTElCUkFSWV9fID0gNgotX19HTElCQ19fID0gMgotX19HTElCQ19NSU5PUl9fID0gMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLV9TWVNfQ0RFRlNfSCA9IDEKLWRlZiBfX1BNVChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzBdCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzFdCi1kZWYgX19BU01OQU1FKGNuYW1lKTogcmV0dXJuIF9fQVNNTkFNRTIgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgY25hbWUpCi0KLWRlZiBfX2F0dHJpYnV0ZV9fKHh5eik6IHJldHVybgotCi1kZWYgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X2FyZ19fICh4KSkpCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybgotCi1fX1VTRV9MQVJHRUZJTEUgPSAxCi1fX1VTRV9MQVJHRUZJTEU2NCA9IDEKLV9fVVNFX0VYVEVSTl9JTkxJTkVTID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZ251L3N0dWJzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN0ZGludC5oCi1fU1RESU5UX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3djaGFyLmgKLV9CSVRTX1dDSEFSX0ggPSAxCi1fX1dDSEFSX01JTiA9ICgtMjE0NzQ4MzY0NyAtIDEpCi1fX1dDSEFSX01BWCA9ICgyMTQ3NDgzNjQ3KQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy93b3Jkc2l6ZS5oCi1fX1dPUkRTSVpFID0gMzIKLWRlZiBfX0lOVDY0X0MoYyk6IHJldHVybiBjICMjIEwKLQotZGVmIF9fVUlOVDY0X0MoYyk6IHJldHVybiBjICMjIFVMCi0KLWRlZiBfX0lOVDY0X0MoYyk6IHJldHVybiBjICMjIExMCi0KLWRlZiBfX1VJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBVTEwKLQotSU5UOF9NSU4gPSAoLTEyOCkKLUlOVDE2X01JTiA9ICgtMzI3NjctMSkKLUlOVDMyX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UNjRfTUlOID0gKC1fX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNyktMSkKLUlOVDhfTUFYID0gKDEyNykKLUlOVDE2X01BWCA9ICgzMjc2NykKLUlOVDMyX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UNjRfTUFYID0gKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KSkKLVVJTlQ4X01BWCA9ICgyNTUpCi1VSU5UMTZfTUFYID0gKDY1NTM1KQotVUlOVDY0X01BWCA9IChfX1VJTlQ2NF9DKDE4NDQ2NzQ0MDczNzA5NTUxNjE1KSkKLUlOVF9MRUFTVDhfTUlOID0gKC0xMjgpCi1JTlRfTEVBU1QxNl9NSU4gPSAoLTMyNzY3LTEpCi1JTlRfTEVBU1QzMl9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9MRUFTVDY0X01JTiA9ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCi1JTlRfTEVBU1Q4X01BWCA9ICgxMjcpCi1JTlRfTEVBU1QxNl9NQVggPSAoMzI3NjcpCi1JTlRfTEVBU1QzMl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVF9MRUFTVDY0X01BWCA9IChfX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNykpCi1VSU5UX0xFQVNUOF9NQVggPSAoMjU1KQotVUlOVF9MRUFTVDE2X01BWCA9ICg2NTUzNSkKLVVJTlRfTEVBU1Q2NF9NQVggPSAoX19VSU5UNjRfQygxODQ0Njc0NDA3MzcwOTU1MTYxNSkpCi1JTlRfRkFTVDhfTUlOID0gKC0xMjgpCi1JTlRfRkFTVDE2X01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotSU5UX0ZBU1QzMl9NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLUlOVF9GQVNUMTZfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfRkFTVDMyX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UX0ZBU1Q2NF9NSU4gPSAoLV9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KS0xKQotSU5UX0ZBU1Q4X01BWCA9ICgxMjcpCi1JTlRfRkFTVDE2X01BWCA9ICg5MjIzMzcyMDM2ODU0Nzc1ODA3KQotSU5UX0ZBU1QzMl9NQVggPSAoOTIyMzM3MjAzNjg1NDc3NTgwNykKLUlOVF9GQVNUMTZfTUFYID0gKDIxNDc0ODM2NDcpCi1JTlRfRkFTVDMyX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UX0ZBU1Q2NF9NQVggPSAoX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKQotVUlOVF9GQVNUOF9NQVggPSAoMjU1KQotVUlOVF9GQVNUNjRfTUFYID0gKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQotSU5UUFRSX01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotSU5UUFRSX01BWCA9ICg5MjIzMzcyMDM2ODU0Nzc1ODA3KQotSU5UUFRSX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UUFRSX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UTUFYX01JTiA9ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCi1JTlRNQVhfTUFYID0gKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KSkKLVVJTlRNQVhfTUFYID0gKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQotUFRSRElGRl9NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLVBUUkRJRkZfTUFYID0gKDkyMjMzNzIwMzY4NTQ3NzU4MDcpCi1QVFJESUZGX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotUFRSRElGRl9NQVggPSAoMjE0NzQ4MzY0NykKLVNJR19BVE9NSUNfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1TSUdfQVRPTUlDX01BWCA9ICgyMTQ3NDgzNjQ3KQotV0NIQVJfTUlOID0gX19XQ0hBUl9NSU4KLVdDSEFSX01BWCA9IF9fV0NIQVJfTUFYCi1kZWYgSU5UOF9DKGMpOiByZXR1cm4gYwotCi1kZWYgSU5UMTZfQyhjKTogcmV0dXJuIGMKLQotZGVmIElOVDMyX0MoYyk6IHJldHVybiBjCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBMCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBMTAotCi1kZWYgVUlOVDhfQyhjKTogcmV0dXJuIGMgIyMgVQotCi1kZWYgVUlOVDE2X0MoYyk6IHJldHVybiBjICMjIFUKLQotZGVmIFVJTlQzMl9DKGMpOiByZXR1cm4gYyAjIyBVCi0KLWRlZiBVSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgVUwKLQotZGVmIFVJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBVTEwKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gYyAjIyBMCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiBjICMjIFVMCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIGMgIyMgTEwKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIGMgIyMgVUxMCi0KLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvdHlwZXMuaAotX0JJVFNfVFlQRVNfSCA9IDEKLV9fRkRfU0VUU0laRSA9IDEwMjQKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvcHRocmVhZHR5cGVzLmgKLV9CSVRTX1BUSFJFQURUWVBFU19IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zY2hlZC5oCi1TQ0hFRF9PVEhFUiA9IDAKLVNDSEVEX0ZJRk8gPSAxCi1TQ0hFRF9SUiA9IDIKLUNTSUdOQUwgPSAweDAwMDAwMGZmCi1DTE9ORV9WTSA9IDB4MDAwMDAxMDAKLUNMT05FX0ZTID0gMHgwMDAwMDIwMAotQ0xPTkVfRklMRVMgPSAweDAwMDAwNDAwCi1DTE9ORV9TSUdIQU5EID0gMHgwMDAwMDgwMAotQ0xPTkVfUElEID0gMHgwMDAwMTAwMAotQ0xPTkVfUFRSQUNFID0gMHgwMDAwMjAwMAotQ0xPTkVfVkZPUksgPSAweDAwMDA0MDAwCi1fX2RlZmluZWRfc2NoZWRwYXJhbSA9IDEKLWRlZiBJTl9DTEFTU0EoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAoKC0xKSAmIH5JTl9DTEFTU0FfTkVUKQotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9ICgoLTEpICYgfklOX0NMQVNTQl9ORVQpCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9ICgoLTEpICYgfklOX0NMQVNTQ19ORVQpCi1kZWYgSU5fQ0xBU1NEKGEpOiByZXR1cm4gKCgoKGluX2FkZHJfdCkoYSkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLWRlZiBJTl9NVUxUSUNBU1QoYSk6IHJldHVybiBJTl9DTEFTU0QoYSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC01MzY4NzA5MTIpKQotCi1kZWYgSU5fQkFEQ0xBU1MoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JTkVUNl9BRERSU1RSTEVOID0gNDYKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc29ja2V0LmgKLQotIyBJbmNsdWRlZCBmcm9tIGxpbWl0cy5oCi1fTElCQ19MSU1JVFNfSF8gPSAxCi1NQl9MRU5fTUFYID0gMTYKLV9MSU1JVFNfSCA9IDEKLUNIQVJfQklUID0gOAotU0NIQVJfTUlOID0gKC0xMjgpCi1TQ0hBUl9NQVggPSAxMjcKLVVDSEFSX01BWCA9IDI1NQotQ0hBUl9NSU4gPSAwCi1DSEFSX01BWCA9IFVDSEFSX01BWAotQ0hBUl9NSU4gPSBTQ0hBUl9NSU4KLUNIQVJfTUFYID0gU0NIQVJfTUFYCi1TSFJUX01JTiA9ICgtMzI3NjgpCi1TSFJUX01BWCA9IDMyNzY3Ci1VU0hSVF9NQVggPSA2NTUzNQotSU5UX01BWCA9IDIxNDc0ODM2NDcKLUxPTkdfTUFYID0gOTIyMzM3MjAzNjg1NDc3NTgwNwotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtTE9OR19NQVggLSAxKQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wb3NpeDFfbGltLmgKLV9CSVRTX1BPU0lYMV9MSU1fSCA9IDEKLV9QT1NJWF9BSU9fTElTVElPX01BWCA9IDIKLV9QT1NJWF9BSU9fTUFYID0gMQotX1BPU0lYX0FSR19NQVggPSA0MDk2Ci1fUE9TSVhfQ0hJTERfTUFYID0gNgotX1BPU0lYX0RFTEFZVElNRVJfTUFYID0gMzIKLV9QT1NJWF9MSU5LX01BWCA9IDgKLV9QT1NJWF9NQVhfQ0FOT04gPSAyNTUKLV9QT1NJWF9NQVhfSU5QVVQgPSAyNTUKLV9QT1NJWF9NUV9PUEVOX01BWCA9IDgKLV9QT1NJWF9NUV9QUklPX01BWCA9IDMyCi1fUE9TSVhfTkdST1VQU19NQVggPSAwCi1fUE9TSVhfT1BFTl9NQVggPSAxNgotX1BPU0lYX0ZEX1NFVFNJWkUgPSBfUE9TSVhfT1BFTl9NQVgKLV9QT1NJWF9OQU1FX01BWCA9IDE0Ci1fUE9TSVhfUEFUSF9NQVggPSAyNTYKLV9QT1NJWF9QSVBFX0JVRiA9IDUxMgotX1BPU0lYX1JUU0lHX01BWCA9IDgKLV9QT1NJWF9TRU1fTlNFTVNfTUFYID0gMjU2Ci1fUE9TSVhfU0VNX1ZBTFVFX01BWCA9IDMyNzY3Ci1fUE9TSVhfU0lHUVVFVUVfTUFYID0gMzIKLV9QT1NJWF9TU0laRV9NQVggPSAzMjc2NwotX1BPU0lYX1NUUkVBTV9NQVggPSA4Ci1fUE9TSVhfVFpOQU1FX01BWCA9IDYKLV9QT1NJWF9RTElNSVQgPSAxCi1fUE9TSVhfSElXQVQgPSBfUE9TSVhfUElQRV9CVUYKLV9QT1NJWF9VSU9fTUFYSU9WID0gMTYKLV9QT1NJWF9UVFlfTkFNRV9NQVggPSA5Ci1fUE9TSVhfVElNRVJfTUFYID0gMzIKLV9QT1NJWF9MT0dJTl9OQU1FX01BWCA9IDkKLV9QT1NJWF9DTE9DS1JFU19NSU4gPSAyMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9sb2NhbF9saW0uaAotCi0jIEluY2x1ZGVkIGZyb20gbGludXgvbGltaXRzLmgKLU5SX09QRU4gPSAxMDI0Ci1OR1JPVVBTX01BWCA9IDMyCi1BUkdfTUFYID0gMTMxMDcyCi1DSElMRF9NQVggPSA5OTkKLU9QRU5fTUFYID0gMjU2Ci1MSU5LX01BWCA9IDEyNwotTUFYX0NBTk9OID0gMjU1Ci1NQVhfSU5QVVQgPSAyNTUKLU5BTUVfTUFYID0gMjU1Ci1QQVRIX01BWCA9IDQwOTYKLVBJUEVfQlVGID0gNDA5NgotUlRTSUdfTUFYID0gMzIKLV9QT1NJWF9USFJFQURfS0VZU19NQVggPSAxMjgKLVBUSFJFQURfS0VZU19NQVggPSAxMDI0Ci1fUE9TSVhfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDQKLVBUSFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TID0gX1BPU0lYX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMKLV9QT1NJWF9USFJFQURfVEhSRUFEU19NQVggPSA2NAotUFRIUkVBRF9USFJFQURTX01BWCA9IDEwMjQKLUFJT19QUklPX0RFTFRBX01BWCA9IDIwCi1QVEhSRUFEX1NUQUNLX01JTiA9IDE2Mzg0Ci1USU1FUl9NQVggPSAyNTYKLVNTSVpFX01BWCA9IExPTkdfTUFYCi1OR1JPVVBTX01BWCA9IF9QT1NJWF9OR1JPVVBTX01BWAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wb3NpeDJfbGltLmgKLV9CSVRTX1BPU0lYMl9MSU1fSCA9IDEKLV9QT1NJWDJfQkNfQkFTRV9NQVggPSA5OQotX1BPU0lYMl9CQ19ESU1fTUFYID0gMjA0OAotX1BPU0lYMl9CQ19TQ0FMRV9NQVggPSA5OQotX1BPU0lYMl9CQ19TVFJJTkdfTUFYID0gMTAwMAotX1BPU0lYMl9DT0xMX1dFSUdIVFNfTUFYID0gMgotX1BPU0lYMl9FWFBSX05FU1RfTUFYID0gMzIKLV9QT1NJWDJfTElORV9NQVggPSAyMDQ4Ci1fUE9TSVgyX1JFX0RVUF9NQVggPSAyNTUKLV9QT1NJWDJfQ0hBUkNMQVNTX05BTUVfTUFYID0gMTQKLUJDX0JBU0VfTUFYID0gX1BPU0lYMl9CQ19CQVNFX01BWAotQkNfRElNX01BWCA9IF9QT1NJWDJfQkNfRElNX01BWAotQkNfU0NBTEVfTUFYID0gX1BPU0lYMl9CQ19TQ0FMRV9NQVgKLUJDX1NUUklOR19NQVggPSBfUE9TSVgyX0JDX1NUUklOR19NQVgKLUNPTExfV0VJR0hUU19NQVggPSAyNTUKLUVYUFJfTkVTVF9NQVggPSBfUE9TSVgyX0VYUFJfTkVTVF9NQVgKLUxJTkVfTUFYID0gX1BPU0lYMl9MSU5FX01BWAotQ0hBUkNMQVNTX05BTUVfTUFYID0gMjA0OAotUkVfRFVQX01BWCA9ICgweDdmZmYpCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3hvcGVuX2xpbS5oCi1fWE9QRU5fTElNX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3N0ZGlvX2xpbS5oCi1MX3RtcG5hbSA9IDIwCi1UTVBfTUFYID0gMjM4MzI4Ci1GSUxFTkFNRV9NQVggPSA0MDk2Ci1MX2N0ZXJtaWQgPSA5Ci1MX2N1c2VyaWQgPSA5Ci1GT1BFTl9NQVggPSAxNgotSU9WX01BWCA9IDEwMjQKLV9YT1BFTl9JT1ZfTUFYID0gX1BPU0lYX1VJT19NQVhJT1YKLU5MX0FSR01BWCA9IF9QT1NJWF9BUkdfTUFYCi1OTF9MQU5HTUFYID0gX1BPU0lYMl9MSU5FX01BWAotTkxfTVNHTUFYID0gSU5UX01BWAotTkxfTk1BWCA9IElOVF9NQVgKLU5MX1NFVE1BWCA9IElOVF9NQVgKLU5MX1RFWFRNQVggPSBJTlRfTUFYCi1OWkVSTyA9IDIwCi1XT1JEX0JJVCA9IDE2Ci1XT1JEX0JJVCA9IDMyCi1XT1JEX0JJVCA9IDY0Ci1XT1JEX0JJVCA9IDE2Ci1XT1JEX0JJVCA9IDMyCi1XT1JEX0JJVCA9IDY0Ci1XT1JEX0JJVCA9IDMyCi1MT05HX0JJVCA9IDMyCi1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDMyCi1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDMyCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1QRl9VTlNQRUMgPSAwCi1QRl9MT0NBTCA9IDEKLVBGX1VOSVggPSBQRl9MT0NBTAotUEZfRklMRSA9IFBGX0xPQ0FMCi1QRl9JTkVUID0gMgotUEZfQVgyNSA9IDMKLVBGX0lQWCA9IDQKLVBGX0FQUExFVEFMSyA9IDUKLVBGX05FVFJPTSA9IDYKLVBGX0JSSURHRSA9IDcKLVBGX0FUTVBWQyA9IDgKLVBGX1gyNSA9IDkKLVBGX0lORVQ2ID0gMTAKLVBGX1JPU0UgPSAxMQotUEZfREVDbmV0ID0gMTIKLVBGX05FVEJFVUkgPSAxMwotUEZfU0VDVVJJVFkgPSAxNAotUEZfS0VZID0gMTUKLVBGX05FVExJTksgPSAxNgotUEZfUk9VVEUgPSBQRl9ORVRMSU5LCi1QRl9QQUNLRVQgPSAxNwotUEZfQVNIID0gMTgKLVBGX0VDT05FVCA9IDE5Ci1QRl9BVE1TVkMgPSAyMAotUEZfU05BID0gMjIKLVBGX0lSREEgPSAyMwotUEZfUFBQT1ggPSAyNAotUEZfV0FOUElQRSA9IDI1Ci1QRl9CTFVFVE9PVEggPSAzMQotUEZfTUFYID0gMzIKLUFGX1VOU1BFQyA9IFBGX1VOU1BFQwotQUZfTE9DQUwgPSBQRl9MT0NBTAotQUZfVU5JWCA9IFBGX1VOSVgKLUFGX0ZJTEUgPSBQRl9GSUxFCi1BRl9JTkVUID0gUEZfSU5FVAotQUZfQVgyNSA9IFBGX0FYMjUKLUFGX0lQWCA9IFBGX0lQWAotQUZfQVBQTEVUQUxLID0gUEZfQVBQTEVUQUxLCi1BRl9ORVRST00gPSBQRl9ORVRST00KLUFGX0JSSURHRSA9IFBGX0JSSURHRQotQUZfQVRNUFZDID0gUEZfQVRNUFZDCi1BRl9YMjUgPSBQRl9YMjUKLUFGX0lORVQ2ID0gUEZfSU5FVDYKLUFGX1JPU0UgPSBQRl9ST1NFCi1BRl9ERUNuZXQgPSBQRl9ERUNuZXQKLUFGX05FVEJFVUkgPSBQRl9ORVRCRVVJCi1BRl9TRUNVUklUWSA9IFBGX1NFQ1VSSVRZCi1BRl9LRVkgPSBQRl9LRVkKLUFGX05FVExJTksgPSBQRl9ORVRMSU5LCi1BRl9ST1VURSA9IFBGX1JPVVRFCi1BRl9QQUNLRVQgPSBQRl9QQUNLRVQKLUFGX0FTSCA9IFBGX0FTSAotQUZfRUNPTkVUID0gUEZfRUNPTkVUCi1BRl9BVE1TVkMgPSBQRl9BVE1TVkMKLUFGX1NOQSA9IFBGX1NOQQotQUZfSVJEQSA9IFBGX0lSREEKLUFGX1BQUE9YID0gUEZfUFBQT1gKLUFGX1dBTlBJUEUgPSBQRl9XQU5QSVBFCi1BRl9CTFVFVE9PVEggPSBQRl9CTFVFVE9PVEgKLUFGX01BWCA9IFBGX01BWAotU09MX1JBVyA9IDI1NQotU09MX0RFQ05FVCA9IDI2MQotU09MX1gyNSA9IDI2MgotU09MX1BBQ0tFVCA9IDI2MwotU09MX0FUTSA9IDI2NAotU09MX0FBTCA9IDI2NQotU09MX0lSREEgPSAyNjYKLVNPTUFYQ09OTiA9IDEyOAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zb2NrYWRkci5oCi1fQklUU19TT0NLQUREUl9IID0gMQotZGVmIF9fU09DS0FERFJfQ09NTU9OKHNhX3ByZWZpeCk6IHJldHVybiBcCi0KLV9TU19TSVpFID0gMTI4Ci1kZWYgQ01TR19GSVJTVEhEUihtaGRyKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gYXNtL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBhc20vc29ja2lvcy5oCi1GSU9TRVRPV04gPSAweDg5MDEKLVNJT0NTUEdSUCA9IDB4ODkwMgotRklPR0VUT1dOID0gMHg4OTAzCi1TSU9DR1BHUlAgPSAweDg5MDQKLVNJT0NBVE1BUksgPSAweDg5MDUKLVNJT0NHU1RBTVAgPSAweDg5MDYKLVNPTF9TT0NLRVQgPSAxCi1TT19ERUJVRyA9IDEKLVNPX1JFVVNFQUREUiA9IDIKLVNPX1RZUEUgPSAzCi1TT19FUlJPUiA9IDQKLVNPX0RPTlRST1VURSA9IDUKLVNPX0JST0FEQ0FTVCA9IDYKLVNPX1NOREJVRiA9IDcKLVNPX1JDVkJVRiA9IDgKLVNPX0tFRVBBTElWRSA9IDkKLVNPX09PQklOTElORSA9IDEwCi1TT19OT19DSEVDSyA9IDExCi1TT19QUklPUklUWSA9IDEyCi1TT19MSU5HRVIgPSAxMwotU09fQlNEQ09NUEFUID0gMTQKLVNPX1BBU1NDUkVEID0gMTYKLVNPX1BFRVJDUkVEID0gMTcKLVNPX1JDVkxPV0FUID0gMTgKLVNPX1NORExPV0FUID0gMTkKLVNPX1JDVlRJTUVPID0gMjAKLVNPX1NORFRJTUVPID0gMjEKLVNPX1NFQ1VSSVRZX0FVVEhFTlRJQ0FUSU9OID0gMjIKLVNPX1NFQ1VSSVRZX0VOQ1JZUFRJT05fVFJBTlNQT1JUID0gMjMKLVNPX1NFQ1VSSVRZX0VOQ1JZUFRJT05fTkVUV09SSyA9IDI0Ci1TT19CSU5EVE9ERVZJQ0UgPSAyNQotU09fQVRUQUNIX0ZJTFRFUiA9IDI2Ci1TT19ERVRBQ0hfRklMVEVSID0gMjcKLVNPX1BFRVJOQU1FID0gMjgKLVNPX1RJTUVTVEFNUCA9IDI5Ci1TQ01fVElNRVNUQU1QID0gU09fVElNRVNUQU1QCi1TT19BQ0NFUFRDT05OID0gMzAKLVNPQ0tfU1RSRUFNID0gMQotU09DS19ER1JBTSA9IDIKLVNPQ0tfUkFXID0gMwotU09DS19SRE0gPSA0Ci1TT0NLX1NFUVBBQ0tFVCA9IDUKLVNPQ0tfUEFDS0VUID0gMTAKLVNPQ0tfTUFYID0gKFNPQ0tfUEFDS0VUKzEpCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2luLmgKLUlQX1RPUyA9IDEKLUlQX1RUTCA9IDIKLUlQX0hEUklOQ0wgPSAzCi1JUF9PUFRJT05TID0gNAotSVBfUk9VVEVSX0FMRVJUID0gNQotSVBfUkVDVk9QVFMgPSA2Ci1JUF9SRVRPUFRTID0gNwotSVBfUEtUSU5GTyA9IDgKLUlQX1BLVE9QVElPTlMgPSA5Ci1JUF9QTVRVRElTQyA9IDEwCi1JUF9NVFVfRElTQ09WRVIgPSAxMAotSVBfUkVDVkVSUiA9IDExCi1JUF9SRUNWVFRMID0gMTIKLUlQX1JFQ1ZUT1MgPSAxMwotSVBfTVVMVElDQVNUX0lGID0gMzIKLUlQX01VTFRJQ0FTVF9UVEwgPSAzMwotSVBfTVVMVElDQVNUX0xPT1AgPSAzNAotSVBfQUREX01FTUJFUlNISVAgPSAzNQotSVBfRFJPUF9NRU1CRVJTSElQID0gMzYKLUlQX1JFQ1ZSRVRPUFRTID0gSVBfUkVUT1BUUwotSVBfUE1UVURJU0NfRE9OVCA9IDAKLUlQX1BNVFVESVNDX1dBTlQgPSAxCi1JUF9QTVRVRElTQ19ETyA9IDIKLVNPTF9JUCA9IDAKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBWNl9BRERSRk9STSA9IDEKLUlQVjZfUEtUSU5GTyA9IDIKLUlQVjZfSE9QT1BUUyA9IDMKLUlQVjZfRFNUT1BUUyA9IDQKLUlQVjZfUlRIRFIgPSA1Ci1JUFY2X1BLVE9QVElPTlMgPSA2Ci1JUFY2X0NIRUNLU1VNID0gNwotSVBWNl9IT1BMSU1JVCA9IDgKLUlQVjZfTkVYVEhPUCA9IDkKLUlQVjZfQVVUSEhEUiA9IDEwCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDE2Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDE3Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMTgKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAxOQotSVBWNl9KT0lOX0dST1VQID0gMjAKLUlQVjZfTEVBVkVfR1JPVVAgPSAyMQotSVBWNl9ST1VURVJfQUxFUlQgPSAyMgotSVBWNl9NVFVfRElTQ09WRVIgPSAyMwotSVBWNl9NVFUgPSAyNAotSVBWNl9SRUNWRVJSID0gMjUKLUlQVjZfUlhIT1BPUFRTID0gSVBWNl9IT1BPUFRTCi1JUFY2X1JYRFNUT1BUUyA9IElQVjZfRFNUT1BUUwotSVBWNl9BRERfTUVNQkVSU0hJUCA9IElQVjZfSk9JTl9HUk9VUAotSVBWNl9EUk9QX01FTUJFUlNISVAgPSBJUFY2X0xFQVZFX0dST1VQCi1JUFY2X1BNVFVESVNDX0RPTlQgPSAwCi1JUFY2X1BNVFVESVNDX1dBTlQgPSAxCi1JUFY2X1BNVFVESVNDX0RPID0gMgotU09MX0lQVjYgPSA0MQotU09MX0lDTVBWNiA9IDU4Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLQotIyBJbmNsdWRlZCBmcm9tIGVuZGlhbi5oCi1fRU5ESUFOX0ggPSAxCi1fX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fX0JJR19FTkRJQU4gPSA0MzIxCi1fX1BEUF9FTkRJQU4gPSAzNDEyCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2VuZGlhbi5oCi1fX0JZVEVfT1JERVIgPSBfX0xJVFRMRV9FTkRJQU4KLV9fRkxPQVRfV09SRF9PUkRFUiA9IF9fQllURV9PUkRFUgotTElUVExFX0VORElBTiA9IF9fTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9fQklHX0VORElBTgotUERQX0VORElBTiA9IF9fUERQX0VORElBTgotQllURV9PUkRFUiA9IF9fQllURV9PUkRFUgotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9ieXRlc3dhcC5oCi1fQklUU19CWVRFU1dBUF9IID0gMQotZGVmIF9fYnN3YXBfY29uc3RhbnRfMTYoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8xNih4KTogcmV0dXJuIF9fYnN3YXBfY29uc3RhbnRfMTYgKHgpCi0KLWRlZiBfX2Jzd2FwX2NvbnN0YW50XzMyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8zMih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnN3YXBfMzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzMyKHgpOiByZXR1cm4gX19ic3dhcF9jb25zdGFudF8zMiAoeCkKLQotZGVmIF9fYnN3YXBfY29uc3RhbnRfNjQoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzY0KHgpOiByZXR1cm4gXAotCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19ic3dhcF8zMiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19ic3dhcF8xNiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gX19ic3dhcF8zMiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19ic3dhcF8xNiAoeCkKLQotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvVFlQRVMucHkgYi9MaWIvcGxhdC1saW51eC9UWVBFUy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdhMzI0Yi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9UWVBFUy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oCi1fU1lTX1RZUEVTX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBmZWF0dXJlcy5oCi1fRkVBVFVSRVNfSCA9IDEKLV9fVVNFX0FOU0kgPSAxCi1fX0ZBVk9SX0JTRCA9IDEKLV9JU09DOTlfU09VUkNFID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1hPUEVOX1NPVVJDRSA9IDYwMAotX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX19VU0VfSVNPQzk5ID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX19VU0VfUE9TSVggPSAxCi1fX1VTRV9QT1NJWDIgPSAxCi1fX1VTRV9QT1NJWDE5OTMwOSA9IDEKLV9fVVNFX1BPU0lYMTk5NTA2ID0gMQotX19VU0VfWE9QRU4gPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX1VOSVg5OCA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX19VU0VfWE9QRU4ySyA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9GSUxFX09GRlNFVDY0ID0gMQotX19VU0VfTUlTQyA9IDEKLV9fVVNFX0JTRCA9IDEKLV9fVVNFX1NWSUQgPSAxCi1fX1VTRV9HTlUgPSAxCi1fX1VTRV9SRUVOVFJBTlQgPSAxCi1fX1NURENfSUVDXzU1OV9fID0gMQotX19TVERDX0lFQ181NTlfQ09NUExFWF9fID0gMQotX19TVERDX0lTT18xMDY0Nl9fID0gMjAwMDA5Ci1fX0dOVV9MSUJSQVJZX18gPSA2Ci1fX0dMSUJDX18gPSAyCi1fX0dMSUJDX01JTk9SX18gPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX1NZU19DREVGU19IID0gMQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMF0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMV0KLWRlZiBfX0FTTU5BTUUoY25hbWUpOiByZXR1cm4gX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKLQotZGVmIF9fYXR0cmlidXRlX18oeHl6KTogcmV0dXJuCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuCi0KLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRVhURVJOX0lOTElORVMgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBnbnUvc3R1YnMuaAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy90eXBlcy5oCi1fQklUU19UWVBFU19IID0gMQotX19GRF9TRVRTSVpFID0gMTAyNAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wdGhyZWFkdHlwZXMuaAotX0JJVFNfUFRIUkVBRFRZUEVTX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NjaGVkLmgKLVNDSEVEX09USEVSID0gMAotU0NIRURfRklGTyA9IDEKLVNDSEVEX1JSID0gMgotQ1NJR05BTCA9IDB4MDAwMDAwZmYKLUNMT05FX1ZNID0gMHgwMDAwMDEwMAotQ0xPTkVfRlMgPSAweDAwMDAwMjAwCi1DTE9ORV9GSUxFUyA9IDB4MDAwMDA0MDAKLUNMT05FX1NJR0hBTkQgPSAweDAwMDAwODAwCi1DTE9ORV9QSUQgPSAweDAwMDAxMDAwCi1DTE9ORV9QVFJBQ0UgPSAweDAwMDAyMDAwCi1DTE9ORV9WRk9SSyA9IDB4MDAwMDQwMDAKLV9fZGVmaW5lZF9zY2hlZHBhcmFtID0gMQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1fVElNRV9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy90aW1lLmgKLV9CSVRTX1RJTUVfSCA9IDEKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotQ0xPQ0tfUkVBTFRJTUUgPSAwCi1DTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQgPSAyCi1DTE9DS19USFJFQURfQ1BVVElNRV9JRCA9IDMKLVRJTUVSX0FCU1RJTUUgPSAxCi1fU1RSVUNUX1RJTUVWQUwgPSAxCi1DTEtfVENLID0gQ0xPQ0tTX1BFUl9TRUMKLV9fY2xvY2tfdF9kZWZpbmVkID0gMQotX190aW1lX3RfZGVmaW5lZCA9IDEKLV9fY2xvY2tpZF90X2RlZmluZWQgPSAxCi1fX3RpbWVyX3RfZGVmaW5lZCA9IDEKLV9fdGltZXNwZWNfZGVmaW5lZCA9IDEKLWRlZiBfX2lzbGVhcCh5ZWFyKTogcmV0dXJuIFwKLQotX19CSVRfVFlQRVNfREVGSU5FRF9fID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZW5kaWFuLmgKLV9FTkRJQU5fSCA9IDEKLV9fTElUVExFX0VORElBTiA9IDEyMzQKLV9fQklHX0VORElBTiA9IDQzMjEKLV9fUERQX0VORElBTiA9IDM0MTIKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvZW5kaWFuLmgKLV9fQllURV9PUkRFUiA9IF9fTElUVExFX0VORElBTgotX19GTE9BVF9XT1JEX09SREVSID0gX19CWVRFX09SREVSCi1MSVRUTEVfRU5ESUFOID0gX19MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX19CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX19QRFBfRU5ESUFOCi1CWVRFX09SREVSID0gX19CWVRFX09SREVSCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLV9TWVNfU0VMRUNUX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NlbGVjdC5oCi1kZWYgX19GRF9aRVJPKGZkc3ApOiByZXR1cm4gXAotCi1kZWYgX19GRF9aRVJPKHNldCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc2lnc2V0LmgKLV9TSUdTRVRfSF90eXBlcyA9IDEKLV9TSUdTRVRfSF9mbnMgPSAxCi1kZWYgX19zaWdtYXNrKHNpZyk6IHJldHVybiBcCi0KLWRlZiBfX3NpZ2VtcHR5c2V0KHNldCk6IHJldHVybiBcCi0KLWRlZiBfX3NpZ2ZpbGxzZXQoc2V0KTogcmV0dXJuIFwKLQotZGVmIF9fc2lnaXNlbXB0eXNldChzZXQpOiByZXR1cm4gXAotCi1kZWYgX19GREVMVChkKTogcmV0dXJuICgoZCkgLyBfX05GREJJVFMpCi0KLUZEX1NFVFNJWkUgPSBfX0ZEX1NFVFNJWkUKLWRlZiBGRF9aRVJPKGZkc2V0cCk6IHJldHVybiBfX0ZEX1pFUk8gKGZkc2V0cCkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5c21hY3Jvcy5oCi1fU1lTX1NZU01BQ1JPU19IID0gMQotZGVmIG1ham9yKGRldik6IHJldHVybiAoKGludCkoKChkZXYpID4+IDgpICYgMHhmZikpCi0KLWRlZiBtaW5vcihkZXYpOiByZXR1cm4gKChpbnQpKChkZXYpICYgMHhmZikpCi0KLWRlZiBtYWpvcihkZXYpOiByZXR1cm4gKCgoZGV2KS5fX3ZhbFsxXSA+PiA4KSAmIDB4ZmYpCi0KLWRlZiBtaW5vcihkZXYpOiByZXR1cm4gKChkZXYpLl9fdmFsWzFdICYgMHhmZikKLQotZGVmIG1ham9yKGRldik6IHJldHVybiAoKChkZXYpLl9fdmFsWzBdID4+IDgpICYgMHhmZikKLQotZGVmIG1pbm9yKGRldik6IHJldHVybiAoKGRldikuX192YWxbMF0gJiAweGZmKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvcmVnZW4gYi9MaWIvcGxhdC1saW51eC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzc2OTUwZS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWVgIGluCi1MaW51eCopCTs7Ci0qKQllY2hvIFByb2JhYmx5IG5vdCBvbiBhIExpbnV4IHN5c3RlbSAxPiYyCi0JZXhpdCAxOzsKLWVzYWMKLXNldCAtdgotaDJweSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIC91c3IvaW5jbHVkZS9kbGZjbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXRic2QxL0lOLnB5IGIvTGliL3BsYXQtbmV0YnNkMS9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0YzUxZS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1uZXRic2QxL0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBJUCA9IDQKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotZGVmIF9fSVBBRERSKHgpOiByZXR1cm4gKCh1X2ludDMyX3QpKHgpKQotCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9NQVggPSAxMjgKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9SRUNWSUYgPSAyMAotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fSURQICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfRk9SV1NSQ1JUID0gNQotSVBDVExfRElSRUNURURCQ0FTVCA9IDYKLUlQQ1RMX0FMTE9XU1JDUlQgPSA3Ci1JUENUTF9NQVhJRCA9IDgKLWRlZiBpbl9udWxsaG9zdCh4KTogcmV0dXJuICgoeCkuc19hZGRyID09IElOQUREUl9BTlkpCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXRic2QxL3JlZ2VuIGIvTGliL3BsYXQtbmV0YnNkMS9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1uZXRic2QxL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXh0My9yZWdlbiBiL0xpYi9wbGF0LW5leHQzL3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3YTAzNjEzLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LW5leHQzL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLUlOQ0xVREU9Ii9OZXh0RGV2ZWxvcGVyL0hlYWRlcnM7L05leHREZXZlbG9wZXIvSGVhZGVycy9hbnNpOy9OZXh0RGV2ZWxvcGVyL0hlYWRlcnMvYnNkIgotZXhwb3J0IElOQ0xVREUKLQotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9ic2QvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvQ0RJTy5weSBiL0xpYi9wbGF0LXN1bm9zNS9DRElPLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY2YjUwLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9DRElPLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvY2Rpby5oCi1DRFJPTV9MQkEgPSAweDAxCi1DRFJPTV9NU0YgPSAweDAyCi1DRFJPTV9EQVRBX1RSQUNLID0gMHgwNAotQ0RST01fTEVBRE9VVCA9IDB4QUEKLUNEUk9NX0FVRElPX0lOVkFMSUQgPSAweDAwCi1DRFJPTV9BVURJT19QTEFZID0gMHgxMQotQ0RST01fQVVESU9fUEFVU0VEID0gMHgxMgotQ0RST01fQVVESU9fQ09NUExFVEVEID0gMHgxMwotQ0RST01fQVVESU9fRVJST1IgPSAweDE0Ci1DRFJPTV9BVURJT19OT19TVEFUVVMgPSAweDE1Ci1DRFJPTV9EQV9OT19TVUJDT0RFID0gMHgwMAotQ0RST01fREFfU1VCUSA9IDB4MDEKLUNEUk9NX0RBX0FMTF9TVUJDT0RFID0gMHgwMgotQ0RST01fREFfU1VCQ09ERV9PTkxZID0gMHgwMwotQ0RST01fWEFfREFUQSA9IDB4MDAKLUNEUk9NX1hBX1NFQ1RPUl9EQVRBID0gMHgwMQotQ0RST01fWEFfREFUQV9XX0VSUk9SID0gMHgwMgotQ0RST01fQkxLXzUxMiA9IDUxMgotQ0RST01fQkxLXzEwMjQgPSAxMDI0Ci1DRFJPTV9CTEtfMjA0OCA9IDIwNDgKLUNEUk9NX0JMS18yMDU2ID0gMjA1NgotQ0RST01fQkxLXzIzMzYgPSAyMzM2Ci1DRFJPTV9CTEtfMjM0MCA9IDIzNDAKLUNEUk9NX0JMS18yMzUyID0gMjM1MgotQ0RST01fQkxLXzIzNjggPSAyMzY4Ci1DRFJPTV9CTEtfMjQ0OCA9IDI0NDgKLUNEUk9NX0JMS18yNjQ2ID0gMjY0NgotQ0RST01fQkxLXzI2NDcgPSAyNjQ3Ci1DRFJPTV9CTEtfU1VCQ09ERSA9IDk2Ci1DRFJPTV9OT1JNQUxfU1BFRUQgPSAweDAwCi1DRFJPTV9ET1VCTEVfU1BFRUQgPSAweDAxCi1DRFJPTV9RVUFEX1NQRUVEID0gMHgwMwotQ0RST01fVFdFTFZFX1NQRUVEID0gMHgwQwotQ0RST01fTUFYSU1VTV9TUEVFRCA9IDB4ZmYKLUNESU9DID0gKDB4MDQgPDwgOCkKLUNEUk9NUEFVU0UgPSAoQ0RJT0N8MTUxKQotQ0RST01SRVNVTUUgPSAoQ0RJT0N8MTUyKQotQ0RST01QTEFZTVNGID0gKENESU9DfDE1MykKLUNEUk9NUExBWVRSS0lORCA9IChDRElPQ3wxNTQpCi1DRFJPTVJFQURUT0NIRFIgPSAoQ0RJT0N8MTU1KQotQ0RST01SRUFEVE9DRU5UUlkgPSAoQ0RJT0N8MTU2KQotQ0RST01TVE9QID0gKENESU9DfDE1NykKLUNEUk9NU1RBUlQgPSAoQ0RJT0N8MTU4KQotQ0RST01FSkVDVCA9IChDRElPQ3wxNTkpCi1DRFJPTVZPTENUUkwgPSAoQ0RJT0N8MTYwKQotQ0RST01TVUJDSE5MID0gKENESU9DfDE2MSkKLUNEUk9NUkVBRE1PREUyID0gKENESU9DfDE2MikKLUNEUk9NUkVBRE1PREUxID0gKENESU9DfDE2MykKLUNEUk9NUkVBRE9GRlNFVCA9IChDRElPQ3wxNjQpCi1DRFJPTUdCTEtNT0RFID0gKENESU9DfDE2NSkKLUNEUk9NU0JMS01PREUgPSAoQ0RJT0N8MTY2KQotQ0RST01DRERBID0gKENESU9DfDE2NykKLUNEUk9NQ0RYQSA9IChDRElPQ3wxNjgpCi1DRFJPTVNVQkNPREUgPSAoQ0RJT0N8MTY5KQotQ0RST01HRFJWU1BFRUQgPSAoQ0RJT0N8MTcwKQotQ0RST01TRFJWU1BFRUQgPSAoQ0RJT0N8MTcxKQotU0NNRF9SRUFEX1RPQyA9IDB4NDMKLVNDTURfUExBWUFVRElPX01TRiA9IDB4NDcKLVNDTURfUExBWUFVRElPX1RJID0gMHg0OAotU0NNRF9QQVVTRV9SRVNVTUUgPSAweDRCCi1TQ01EX1JFQURfU1VCQ0hBTk5FTCA9IDB4NDIKLVNDTURfUExBWUFVRElPMTAgPSAweDQ1Ci1TQ01EX1BMQVlUUkFDS19SRUwxMCA9IDB4NDkKLVNDTURfUkVBRF9IRUFERVIgPSAweDQ0Ci1TQ01EX1BMQVlBVURJTzEyID0gMHhBNQotU0NNRF9QTEFZVFJBQ0tfUkVMMTIgPSAweEE5Ci1TQ01EX0NEX1BMQVlCQUNLX0NPTlRST0wgPSAweEM5Ci1TQ01EX0NEX1BMQVlCQUNLX1NUQVRVUyA9IDB4QzQKLVNDTURfUkVBRF9DRERBID0gMHhEOAotU0NNRF9SRUFEX0NEWEEgPSAweERCCi1TQ01EX1JFQURfQUxMX1NVQkNPREVTID0gMHhERgotQ0RST01fTU9ERTJfU0laRSA9IDIzMzYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9ETEZDTi5weSBiL0xpYi9wbGF0LXN1bm9zNS9ETEZDTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ5MjM1MC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvRExGQ04ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL2RsZmNuLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVJUTERfTEFaWSA9IDB4MDAwMDEKLVJUTERfTk9XID0gMHgwMDAwMgotUlRMRF9OT0xPQUQgPSAweDAwMDA0Ci1SVExEX0dMT0JBTCA9IDB4MDAxMDAKLVJUTERfTE9DQUwgPSAweDAwMDAwCi1SVExEX1BBUkVOVCA9IDB4MDAyMDAKLVJUTERfR1JPVVAgPSAweDAwNDAwCi1SVExEX1dPUkxEID0gMHgwMDgwMAotUlRMRF9OT0RFTEVURSA9IDB4MDEwMDAKLVJUTERfQ09ORkdFTiA9IDB4MTAwMDAKLVJUTERfUkVMX1JFTEFUSVZFID0gMHgwMDAwMQotUlRMRF9SRUxfRVhFQyA9IDB4MDAwMDIKLVJUTERfUkVMX0RFUEVORFMgPSAweDAwMDA0Ci1SVExEX1JFTF9QUkVMT0FEID0gMHgwMDAwOAotUlRMRF9SRUxfU0VMRiA9IDB4MDAwMTAKLVJUTERfUkVMX1dFQUsgPSAweDAwMDIwCi1SVExEX1JFTF9BTEwgPSAweDAwZmZmCi1SVExEX01FTU9SWSA9IDB4MDEwMDAKLVJUTERfU1RSSVAgPSAweDAyMDAwCi1SVExEX05PSEVBUCA9IDB4MDQwMDAKLVJUTERfQ09ORlNFVCA9IDB4MTAwMDAKLVJUTERfRElfTE1JRCA9IDEKLVJUTERfRElfTElOS01BUCA9IDIKLVJUTERfRElfQ09ORklHQUREUiA9IDMKLVJUTERfRElfTUFYID0gMwpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L0lOLnB5IGIvTGliL3BsYXQtc3Vub3M1L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTcyZWFkLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MjEgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mZWF0dXJlX3Rlc3RzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc2FfZGVmcy5oCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA0Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDQKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAwCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDgKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX1BPU0lYX0NfU09VUkNFID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX0ZJTEVfT0ZGU0VUX0JJVFMgPSA2NAotX0ZJTEVfT0ZGU0VUX0JJVFMgPSAzMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgPSAxCi1fWE9QRU5fVkVSU0lPTiA9IDUwMAotX1hPUEVOX1ZFUlNJT04gPSA0Ci1fWE9QRU5fVkVSU0lPTiA9IDMKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJlYW0uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Zub2RlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90X2xvY2suaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hsb2NrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUxPQ0tfSEVMRF9WQUxVRSA9IDB4ZmYKLWRlZiBTUElOX0xPQ0socGwpOiByZXR1cm4gKChwbCkgPiBpcGx0b3NwbChMT0NLX0xFVkVMKSkKLQotZGVmIExPQ0tfU0FNUExFX0lOVEVSVkFMKGkpOiByZXR1cm4gKCgoaSkgJiAweGZmKSA9PSAwKQotCi1DTE9DS19MRVZFTCA9IDEwCi1MT0NLX0xFVkVMID0gMTAKLURJU1BfTEVWRUwgPSAoTE9DS19MRVZFTCArIDEpCi1QVFIyNF9MU0IgPSA1Ci1QVFIyNF9NU0IgPSAoUFRSMjRfTFNCICsgMjQpCi1QVFIyNF9BTElHTiA9IDMyCi1QVFIyNF9CQVNFID0gMHhlMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BhcmFtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9QT1NJWF9WRElTQUJMRSA9IDAKLU1BWF9JTlBVVCA9IDUxMgotTUFYX0NBTk9OID0gMjU2Ci1VSURfTk9CT0RZID0gNjAwMDEKLUdJRF9OT0JPRFkgPSBVSURfTk9CT0RZCi1VSURfTk9BQ0NFU1MgPSA2MDAwMgotTUFYX1RBU0tJRCA9IDk5OTk5OQotTUFYX01BWFBJRCA9IDk5OTk5OQotREVGQVVMVF9NQVhQSUQgPSA5OTk5OTkKLURFRkFVTFRfSlVNUFBJRCA9IDEwMDAwMAotREVGQVVMVF9NQVhQSUQgPSAzMDAwMAotREVGQVVMVF9KVU1QUElEID0gMAotTUFYVUlEID0gMjE0NzQ4MzY0NwotTUFYUFJPSklEID0gTUFYVUlECi1NQVhMSU5LID0gMzI3NjcKLU5NT1VOVCA9IDQwCi1DQU5CU0laID0gMjU2Ci1OT0ZJTEUgPSAyMAotTkdST1VQU19VTUlOID0gMAotTkdST1VQU19VTUFYID0gMzIKLU5HUk9VUFNfTUFYX0RFRkFVTFQgPSAxNgotTlpFUk8gPSAyMAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTUFTSyA9IDBvMjIKLUNETElNSVQgPSAoMTw8MTEpCi1OQlBTID0gMHgyMDAwMAotTkJQU0NUUiA9IDUxMgotVUJTSVpFID0gNTEyCi1TQ1RSU0hGVCA9IDkKLVNZU05BTUUgPSA5Ci1QUkVNT1RFID0gMzkKLU1BWFBBVEhMRU4gPSAxMDI0Ci1NQVhTWU1MSU5LUyA9IDIwCi1NQVhOQU1FTEVOID0gMjU2Ci1OQUREUiA9IDEzCi1QSVBFX0JVRiA9IDUxMjAKLVBJUEVfTUFYID0gNTEyMAotTkJCWSA9IDgKLU1BWEJTSVpFID0gODE5MgotREVWX0JTSVpFID0gNTEyCi1ERVZfQlNISUZUID0gOQotTUFYRlJBRyA9IDgKLU1BWE9GRjMyX1QgPSAweDdmZmZmZmZmCi1NQVhPRkZfVCA9IDB4N2ZmZmZmZmZmZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmZmZmZmZmZmYKLU1BWE9GRl9UID0gMHg3ZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmCi1kZWYgYnRvZGIoYnl0ZXMpOiByZXR1cm4gICBcCi0KLWRlZiBkYnRvYihkYik6IHJldHVybiAgIFwKLQotZGVmIGxidG9kYihieXRlcyk6IHJldHVybiAgIFwKLQotZGVmIGxkYnRvYihkYik6IHJldHVybiAgIFwKLQotTkNBUkdTMzIgPSAweDEwMDAwMAotTkNBUkdTNjQgPSAweDIwMDAwMAotTkNBUkdTID0gTkNBUkdTNjQKLU5DQVJHUyA9IE5DQVJHUzMyCi1GU0hJRlQgPSA4Ci1GU0NBTEUgPSAoMTw8RlNISUZUKQotZGVmIERFTEFZKG4pOiByZXR1cm4gZHJ2X3VzZWN3YWl0KG4pCi0KLWRlZiBtbXVfcHRvYih4KTogcmV0dXJuICgoeCkgPDwgTU1VX1BBR0VTSElGVCkKLQotZGVmIG1tdV9idG9wKHgpOiByZXR1cm4gKCgoeCkpID4+IE1NVV9QQUdFU0hJRlQpCi0KLWRlZiBtbXVfYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBNTVVfUEFHRU9GRlNFVCkgPj4gTU1VX1BBR0VTSElGVCkpCi0KLWRlZiBtbXVfcHRvZCh4KTogcmV0dXJuICgoeCkgPDwgKE1NVV9QQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2QoeCk6IHJldHVybiAoKHgpIDw8IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2IoeCk6IHJldHVybiAoKHgpIDw8IFBBR0VTSElGVCkKLQotZGVmIGJ0b3AoeCk6IHJldHVybiAoKCh4KSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBQQUdFT0ZGU0VUKSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgZHRvcChERCk6IHJldHVybiAoKChERCkgKyBORFBQIC0gMSkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgZHRvcHQoREQpOiByZXR1cm4gKChERCkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1fQUlPX0xJU1RJT19NQVggPSAoNDA5NikKLV9BSU9fTUFYID0gKC0xKQotX01RX09QRU5fTUFYID0gKDMyKQotX01RX1BSSU9fTUFYID0gKDMyKQotX1NFTV9OU0VNU19NQVggPSBJTlRfTUFYCi1fU0VNX1ZBTFVFX01BWCA9IElOVF9NQVgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91bmlzdGQuaAotX0NTX1BBVEggPSA2NQotX0NTX0xGU19DRkxBR1MgPSA2OAotX0NTX0xGU19MREZMQUdTID0gNjkKLV9DU19MRlNfTElCUyA9IDcwCi1fQ1NfTEZTX0xJTlRGTEFHUyA9IDcxCi1fQ1NfTEZTNjRfQ0ZMQUdTID0gNzIKLV9DU19MRlM2NF9MREZMQUdTID0gNzMKLV9DU19MRlM2NF9MSUJTID0gNzQKLV9DU19MRlM2NF9MSU5URkxBR1MgPSA3NQotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0gNzAwCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTID0gNzAxCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTID0gNzAyCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxBR1MgPSA3MDMKLV9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MgPSA3MDUKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTID0gNzA2Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUyA9IDcwNwotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUyA9IDcwOAotX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MgPSA3MDkKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUyA9IDcxMAotX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTID0gNzExCi1fQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUyA9IDcxMgotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUyA9IDcxMwotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MgPSA3MTQKLV9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTID0gNzE1Ci1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTID0gNzE2Ci1fU0NfQVJHX01BWCA9IDEKLV9TQ19DSElMRF9NQVggPSAyCi1fU0NfQ0xLX1RDSyA9IDMKLV9TQ19OR1JPVVBTX01BWCA9IDQKLV9TQ19PUEVOX01BWCA9IDUKLV9TQ19KT0JfQ09OVFJPTCA9IDYKLV9TQ19TQVZFRF9JRFMgPSA3Ci1fU0NfVkVSU0lPTiA9IDgKLV9TQ19QQVNTX01BWCA9IDkKLV9TQ19MT0dOQU1FX01BWCA9IDEwCi1fU0NfUEFHRVNJWkUgPSAxMQotX1NDX1hPUEVOX1ZFUlNJT04gPSAxMgotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX1NUUkVBTV9NQVggPSAxNgotX1NDX1RaTkFNRV9NQVggPSAxNwotX1NDX0FJT19MSVNUSU9fTUFYID0gMTgKLV9TQ19BSU9fTUFYID0gMTkKLV9TQ19BSU9fUFJJT19ERUxUQV9NQVggPSAyMAotX1NDX0FTWU5DSFJPTk9VU19JTyA9IDIxCi1fU0NfREVMQVlUSU1FUl9NQVggPSAyMgotX1NDX0ZTWU5DID0gMjMKLV9TQ19NQVBQRURfRklMRVMgPSAyNAotX1NDX01FTUxPQ0sgPSAyNQotX1NDX01FTUxPQ0tfUkFOR0UgPSAyNgotX1NDX01FTU9SWV9QUk9URUNUSU9OID0gMjcKLV9TQ19NRVNTQUdFX1BBU1NJTkcgPSAyOAotX1NDX01RX09QRU5fTUFYID0gMjkKLV9TQ19NUV9QUklPX01BWCA9IDMwCi1fU0NfUFJJT1JJVElaRURfSU8gPSAzMQotX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSAzMgotX1NDX1JFQUxUSU1FX1NJR05BTFMgPSAzMwotX1NDX1JUU0lHX01BWCA9IDM0Ci1fU0NfU0VNQVBIT1JFUyA9IDM1Ci1fU0NfU0VNX05TRU1TX01BWCA9IDM2Ci1fU0NfU0VNX1ZBTFVFX01BWCA9IDM3Ci1fU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTID0gMzgKLV9TQ19TSUdRVUVVRV9NQVggPSAzOQotX1NDX1NJR1JUX01JTiA9IDQwCi1fU0NfU0lHUlRfTUFYID0gNDEKLV9TQ19TWU5DSFJPTklaRURfSU8gPSA0MgotX1NDX1RJTUVSUyA9IDQzCi1fU0NfVElNRVJfTUFYID0gNDQKLV9TQ18yX0NfQklORCA9IDQ1Ci1fU0NfMl9DX0RFViA9IDQ2Ci1fU0NfMl9DX1ZFUlNJT04gPSA0NwotX1NDXzJfRk9SVF9ERVYgPSA0OAotX1NDXzJfRk9SVF9SVU4gPSA0OQotX1NDXzJfTE9DQUxFREVGID0gNTAKLV9TQ18yX1NXX0RFViA9IDUxCi1fU0NfMl9VUEUgPSA1MgotX1NDXzJfVkVSU0lPTiA9IDUzCi1fU0NfQkNfQkFTRV9NQVggPSA1NAotX1NDX0JDX0RJTV9NQVggPSA1NQotX1NDX0JDX1NDQUxFX01BWCA9IDU2Ci1fU0NfQkNfU1RSSU5HX01BWCA9IDU3Ci1fU0NfQ09MTF9XRUlHSFRTX01BWCA9IDU4Ci1fU0NfRVhQUl9ORVNUX01BWCA9IDU5Ci1fU0NfTElORV9NQVggPSA2MAotX1NDX1JFX0RVUF9NQVggPSA2MQotX1NDX1hPUEVOX0NSWVBUID0gNjIKLV9TQ19YT1BFTl9FTkhfSTE4TiA9IDYzCi1fU0NfWE9QRU5fU0hNID0gNjQKLV9TQ18yX0NIQVJfVEVSTSA9IDY2Ci1fU0NfWE9QRU5fWENVX1ZFUlNJT04gPSA2NwotX1NDX0FURVhJVF9NQVggPSA3NgotX1NDX0lPVl9NQVggPSA3NwotX1NDX1hPUEVOX1VOSVggPSA3OAotX1NDX1BBR0VfU0laRSA9IF9TQ19QQUdFU0laRQotX1NDX1RfSU9WX01BWCA9IDc5Ci1fU0NfUEhZU19QQUdFUyA9IDUwMAotX1NDX0FWUEhZU19QQUdFUyA9IDUwMQotX1NDX0NPSEVSX0JMS1NaID0gNTAzCi1fU0NfU1BMSVRfQ0FDSEUgPSA1MDQKLV9TQ19JQ0FDSEVfU1ogPSA1MDUKLV9TQ19EQ0FDSEVfU1ogPSA1MDYKLV9TQ19JQ0FDSEVfTElORVNaID0gNTA3Ci1fU0NfRENBQ0hFX0xJTkVTWiA9IDUwOAotX1NDX0lDQUNIRV9CTEtTWiA9IDUwOQotX1NDX0RDQUNIRV9CTEtTWiA9IDUxMAotX1NDX0RDQUNIRV9UQkxLU1ogPSA1MTEKLV9TQ19JQ0FDSEVfQVNTT0MgPSA1MTIKLV9TQ19EQ0FDSEVfQVNTT0MgPSA1MTMKLV9TQ19NQVhQSUQgPSA1MTQKLV9TQ19TVEFDS19QUk9UID0gNTE1Ci1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU2OAotX1NDX0dFVEdSX1JfU0laRV9NQVggPSA1NjkKLV9TQ19HRVRQV19SX1NJWkVfTUFYID0gNTcwCi1fU0NfTE9HSU5fTkFNRV9NQVggPSA1NzEKLV9TQ19USFJFQURfS0VZU19NQVggPSA1NzIKLV9TQ19USFJFQURfU1RBQ0tfTUlOID0gNTczCi1fU0NfVEhSRUFEX1RIUkVBRFNfTUFYID0gNTc0Ci1fU0NfVFRZX05BTUVfTUFYID0gNTc1Ci1fU0NfVEhSRUFEUyA9IDU3NgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA9IDU3NwotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDU3OAotX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HID0gNTc5Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU4MAotX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgPSA1ODEKLV9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQgPSA1ODIKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA1ODMKLV9TQ19YT1BFTl9MRUdBQ1kgPSA3MTcKLV9TQ19YT1BFTl9SRUFMVElNRSA9IDcxOAotX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgPSA3MTkKLV9TQ19YQlM1X0lMUDMyX09GRjMyID0gNzIwCi1fU0NfWEJTNV9JTFAzMl9PRkZCSUcgPSA3MjEKLV9TQ19YQlM1X0xQNjRfT0ZGNjQgPSA3MjIKLV9TQ19YQlM1X0xQQklHX09GRkJJRyA9IDcyMwotX1BDX0xJTktfTUFYID0gMQotX1BDX01BWF9DQU5PTiA9IDIKLV9QQ19NQVhfSU5QVVQgPSAzCi1fUENfTkFNRV9NQVggPSA0Ci1fUENfUEFUSF9NQVggPSA1Ci1fUENfUElQRV9CVUYgPSA2Ci1fUENfTk9fVFJVTkMgPSA3Ci1fUENfVkRJU0FCTEUgPSA4Ci1fUENfQ0hPV05fUkVTVFJJQ1RFRCA9IDkKLV9QQ19BU1lOQ19JTyA9IDEwCi1fUENfUFJJT19JTyA9IDExCi1fUENfU1lOQ19JTyA9IDEyCi1fUENfRklMRVNJWkVCSVRTID0gNjcKLV9QQ19MQVNUID0gNjcKLV9QT1NJWF9WRVJTSU9OID0gMTk5NTA2Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fWE9QRU5fWENVX1ZFUlNJT04gPSA0Ci1fWE9QRU5fUkVBTFRJTUUgPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fU0hNID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfTE9DQUxFREVGID0gMQotX1BPU0lYMl9DX0RFViA9IDEKLV9QT1NJWDJfU1dfREVWID0gMQotX1BPU0lYMl9VUEUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yd2xvY2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIFJXX1JFQURfSEVMRCh4KTogcmV0dXJuIChyd19yZWFkX2hlbGQoKHgpKSkKLQotZGVmIFJXX1dSSVRFX0hFTEQoeCk6IHJldHVybiAocndfd3JpdGVfaGVsZCgoeCkpKQotCi1kZWYgUldfTE9DS19IRUxEKHgpOiByZXR1cm4gKHJ3X2xvY2tfaGVsZCgoeCkpKQotCi1kZWYgUldfSVNXUklURVIoeCk6IHJldHVybiAocndfaXN3cml0ZXIoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZW1hcGhvcmUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RocmVhZC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva2x3cC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29uZHZhci5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMzMi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X3R5cGVzLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi1kZWYgVElDS19UT19TRUModGljayk6IHJldHVybiAoKHRpY2spIC8gaHopCi0KLWRlZiBTRUNfVE9fVElDSyhzZWMpOiByZXR1cm4gKChzZWMpICogaHopCi0KLWRlZiBUSUNLX1RPX01TRUModGljayk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0sobXNlYyk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0tfUk9VTkRVUChtc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fVVNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLKHVzZWMpOiByZXR1cm4gKCh1c2VjKSAvIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0tfUk9VTkRVUCh1c2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fTlNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLKG5zZWMpOiByZXR1cm4gKChuc2VjKSAvIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0tfUk9VTkRVUChuc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJTUVWQUxfVE9fVElDSyh0dnApOiByZXR1cm4gXAotCi1kZWYgVElNRVNUUlVDX1RPX1RJQ0sodHNwKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBpc28vdGltZV9pc28uaAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2lnbmFsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc28vc2lnbmFsX2lzby5oCi1TSUdIVVAgPSAxCi1TSUdJTlQgPSAyCi1TSUdRVUlUID0gMwotU0lHSUxMID0gNAotU0lHVFJBUCA9IDUKLVNJR0lPVCA9IDYKLVNJR0FCUlQgPSA2Ci1TSUdFTVQgPSA3Ci1TSUdGUEUgPSA4Ci1TSUdLSUxMID0gOQotU0lHQlVTID0gMTAKLVNJR1NFR1YgPSAxMQotU0lHU1lTID0gMTIKLVNJR1BJUEUgPSAxMwotU0lHQUxSTSA9IDE0Ci1TSUdURVJNID0gMTUKLVNJR1VTUjEgPSAxNgotU0lHVVNSMiA9IDE3Ci1TSUdDTEQgPSAxOAotU0lHQ0hMRCA9IDE4Ci1TSUdQV1IgPSAxOQotU0lHV0lOQ0ggPSAyMAotU0lHVVJHID0gMjEKLVNJR1BPTEwgPSAyMgotU0lHSU8gPSBTSUdQT0xMCi1TSUdTVE9QID0gMjMKLVNJR1RTVFAgPSAyNAotU0lHQ09OVCA9IDI1Ci1TSUdUVElOID0gMjYKLVNJR1RUT1UgPSAyNwotU0lHVlRBTFJNID0gMjgKLVNJR1BST0YgPSAyOQotU0lHWENQVSA9IDMwCi1TSUdYRlNaID0gMzEKLVNJR1dBSVRJTkcgPSAzMgotU0lHTFdQID0gMzMKLVNJR0ZSRUVaRSA9IDM0Ci1TSUdUSEFXID0gMzUKLVNJR0NBTkNFTCA9IDM2Ci1TSUdMT1NUID0gMzcKLV9TSUdSVE1JTiA9IDM4Ci1fU0lHUlRNQVggPSA0NQotU0lHX0JMT0NLID0gMQotU0lHX1VOQkxPQ0sgPSAyCi1TSUdfU0VUTUFTSyA9IDMKLVNJR05PX01BU0sgPSAweEZGCi1TSUdERUZFUiA9IDB4MTAwCi1TSUdIT0xEID0gMHgyMDAKLVNJR1JFTFNFID0gMHg0MDAKLVNJR0lHTk9SRSA9IDB4ODAwCi1TSUdQQVVTRSA9IDB4MTAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NpZ2luZm8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotU0lHRVZfTk9ORSA9IDEKLVNJR0VWX1NJR05BTCA9IDIKLVNJR0VWX1RIUkVBRCA9IDMKLVNJX05PSU5GTyA9IDMyNzY3Ci1TSV9VU0VSID0gMAotU0lfTFdQID0gKC0xKQotU0lfUVVFVUUgPSAoLTIpCi1TSV9USU1FUiA9ICgtMykKLVNJX0FTWU5DSU8gPSAoLTQpCi1TSV9NRVNHUSA9ICgtNSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoc2lnLmgKLUlMTF9JTExPUEMgPSAxCi1JTExfSUxMT1BOID0gMgotSUxMX0lMTEFEUiA9IDMKLUlMTF9JTExUUlAgPSA0Ci1JTExfUFJWT1BDID0gNQotSUxMX1BSVlJFRyA9IDYKLUlMTF9DT1BST0MgPSA3Ci1JTExfQkFEU1RLID0gOAotTlNJR0lMTCA9IDgKLUVNVF9UQUdPVkYgPSAxCi1FTVRfQ1BDT1ZGID0gMgotTlNJR0VNVCA9IDIKLUZQRV9JTlRESVYgPSAxCi1GUEVfSU5UT1ZGID0gMgotRlBFX0ZMVERJViA9IDMKLUZQRV9GTFRPVkYgPSA0Ci1GUEVfRkxUVU5EID0gNQotRlBFX0ZMVFJFUyA9IDYKLUZQRV9GTFRJTlYgPSA3Ci1GUEVfRkxUU1VCID0gOAotTlNJR0ZQRSA9IDgKLVNFR1ZfTUFQRVJSID0gMQotU0VHVl9BQ0NFUlIgPSAyCi1OU0lHU0VHViA9IDIKLUJVU19BRFJBTE4gPSAxCi1CVVNfQURSRVJSID0gMgotQlVTX09CSkVSUiA9IDMKLU5TSUdCVVMgPSAzCi1UUkFQX0JSS1BUID0gMQotVFJBUF9UUkFDRSA9IDIKLVRSQVBfUldBVENIID0gMwotVFJBUF9XV0FUQ0ggPSA0Ci1UUkFQX1hXQVRDSCA9IDUKLU5TSUdUUkFQID0gNQotQ0xEX0VYSVRFRCA9IDEKLUNMRF9LSUxMRUQgPSAyCi1DTERfRFVNUEVEID0gMwotQ0xEX1RSQVBQRUQgPSA0Ci1DTERfU1RPUFBFRCA9IDUKLUNMRF9DT05USU5VRUQgPSA2Ci1OU0lHQ0xEID0gNgotUE9MTF9JTiA9IDEKLVBPTExfT1VUID0gMgotUE9MTF9NU0cgPSAzCi1QT0xMX0VSUiA9IDQKLVBPTExfUFJJID0gNQotUE9MTF9IVVAgPSA2Ci1OU0lHUE9MTCA9IDYKLVBST0ZfU0lHID0gMQotTlNJR1BST0YgPSAxCi1TSV9NQVhTWiA9IDI1NgotU0lfTUFYU1ogPSAxMjgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX3N0ZF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVNJMzJfTUFYU1ogPSAxMjgKLWRlZiBTSV9DQU5RVUVVRShjKTogcmV0dXJuICgoYykgPD0gU0lfUVVFVUUpCi0KLVNBX05PQ0xEU1RPUCA9IDB4MDAwMjAwMDAKLVNBX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TQV9SRVNFVEhBTkQgPSAweDAwMDAwMDAyCi1TQV9SRVNUQVJUID0gMHgwMDAwMDAwNAotU0FfU0lHSU5GTyA9IDB4MDAwMDAwMDgKLVNBX05PREVGRVIgPSAweDAwMDAwMDEwCi1TQV9OT0NMRFdBSVQgPSAweDAwMDEwMDAwCi1TQV9XQUlUU0lHID0gMHgwMDAxMDAwMAotTlNJRyA9IDQ2Ci1NQVhTSUcgPSA0NQotU19TSUdOQUwgPSAxCi1TX1NJR1NFVCA9IDIKLVNfU0lHQUNUSU9OID0gMwotU19OT05FID0gNAotTUlOU0lHU1RLU1ogPSAyMDQ4Ci1TSUdTVEtTWiA9IDgxOTIKLVNTX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TU19ESVNBQkxFID0gMHgwMDAwMDAwMgotU05fUFJPQyA9IDEKLVNOX0NBTkNFTCA9IDIKLVNOX1NFTkQgPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWNvbnRleHQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3JlZ3NldC5oCi1SRUdfQ0NSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUEMgPSAoMSkKLVJFR19uUEMgPSAoMikKLVJFR19ZID0gKDMpCi1SRUdfRzEgPSAoNCkKLVJFR19HMiA9ICg1KQotUkVHX0czID0gKDYpCi1SRUdfRzQgPSAoNykKLVJFR19HNSA9ICg4KQotUkVHX0c2ID0gKDkpCi1SRUdfRzcgPSAoMTApCi1SRUdfTzAgPSAoMTEpCi1SRUdfTzEgPSAoMTIpCi1SRUdfTzIgPSAoMTMpCi1SRUdfTzMgPSAoMTQpCi1SRUdfTzQgPSAoMTUpCi1SRUdfTzUgPSAoMTYpCi1SRUdfTzYgPSAoMTcpCi1SRUdfTzcgPSAoMTgpCi1SRUdfQVNJID0gKDE5KQotUkVHX0ZQUlMgPSAoMjApCi1SRUdfUFMgPSBSRUdfUFNSCi1SRUdfU1AgPSBSRUdfTzYKLVJFR19SMCA9IFJFR19PMAotUkVHX1IxID0gUkVHX08xCi1fTkdSRUcgPSAyMQotX05HUkVHID0gMTkKLU5HUkVHID0gX05HUkVHCi1fTkdSRUczMiA9IDE5Ci1fTkdSRUc2NCA9IDIxCi1TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotTUFYRlBRID0gMTYKLVhSU19JRCA9IDB4Nzg3MjczMDAKLQotIyBJbmNsdWRlZCBmcm9tIHY3L3N5cy9wcml2cmVncy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2Ny9zeXMvcHNyLmgKLVBTUl9DV1AgPSAweDAwMDAwMDFGCi1QU1JfRVQgPSAweDAwMDAwMDIwCi1QU1JfUFMgPSAweDAwMDAwMDQwCi1QU1JfUyA9IDB4MDAwMDAwODAKLVBTUl9QSUwgPSAweDAwMDAwRjAwCi1QU1JfRUYgPSAweDAwMDAxMDAwCi1QU1JfRUMgPSAweDAwMDAyMDAwCi1QU1JfUlNWID0gMHgwMDBGQzAwMAotUFNSX0lDQyA9IDB4MDBGMDAwMDAKLVBTUl9DID0gMHgwMDEwMDAwMAotUFNSX1YgPSAweDAwMjAwMDAwCi1QU1JfWiA9IDB4MDA0MDAwMDAKLVBTUl9OID0gMHgwMDgwMDAwMAotUFNSX1ZFUiA9IDB4MEYwMDAwMDAKLVBTUl9JTVBMID0gMHhGMDAwMDAwMAotUFNMX0FMTENDID0gUFNSX0lDQwotUFNMX1VTRVIgPSAoUFNSX1MpCi1QU0xfVVNFUk1BU0sgPSAoUFNSX0lDQykKLVBTTF9VQklUUyA9IChQU1JfSUNDfFBTUl9FRikKLWRlZiBVU0VSTU9ERShwcyk6IHJldHVybiAoKChwcykgJiBQU1JfUFMpID09IDApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mc3IuaAotRlNSX0NFWEMgPSAweDAwMDAwMDFmCi1GU1JfQUVYQyA9IDB4MDAwMDAzZTAKLUZTUl9GQ0MgPSAweDAwMDAwYzAwCi1GU1JfUFIgPSAweDAwMDAxMDAwCi1GU1JfUU5FID0gMHgwMDAwMjAwMAotRlNSX0ZUVCA9IDB4MDAwMWMwMDAKLUZTUl9WRVIgPSAweDAwMGUwMDAwCi1GU1JfVEVNID0gMHgwZjgwMDAwMAotRlNSX1JQID0gMHgzMDAwMDAwMAotRlNSX1JEID0gMHhjMDAwMDAwMAotRlNSX1ZFUl9TSElGVCA9IDE3Ci1GU1JfRkNDMSA9IDB4MDAwMDAwMDMKLUZTUl9GQ0MyID0gMHgwMDAwMDAwQwotRlNSX0ZDQzMgPSAweDAwMDAwMDMwCi1GU1JfQ0VYQ19OWCA9IDB4MDAwMDAwMDEKLUZTUl9DRVhDX0RaID0gMHgwMDAwMDAwMgotRlNSX0NFWENfVUYgPSAweDAwMDAwMDA0Ci1GU1JfQ0VYQ19PRiA9IDB4MDAwMDAwMDgKLUZTUl9DRVhDX05WID0gMHgwMDAwMDAxMAotRlNSX0FFWENfTlggPSAoMHgxIDw8IDUpCi1GU1JfQUVYQ19EWiA9ICgweDIgPDwgNSkKLUZTUl9BRVhDX1VGID0gKDB4NCA8PCA1KQotRlNSX0FFWENfT0YgPSAoMHg4IDw8IDUpCi1GU1JfQUVYQ19OViA9ICgweDEwIDw8IDUpCi1GVFRfTk9ORSA9IDAKLUZUVF9JRUVFID0gMQotRlRUX1VORklOID0gMgotRlRUX1VOSU1QID0gMwotRlRUX1NFUSA9IDQKLUZUVF9BTElHTiA9IDUKLUZUVF9ERkFVTFQgPSA2Ci1GU1JfRlRUX1NISUZUID0gMTQKLUZTUl9GVFRfSUVFRSA9IChGVFRfSUVFRSAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1VORklOID0gKEZUVF9VTkZJTiAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfVU5JTVAgPSAoRlRUX1VOSU1QICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9TRVEgPSAoRlRUX1NFUSAgICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9BTElHTiA9IChGVFRfQUxJR04gIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX0RGQVVMVCA9IChGVFRfREZBVUxUIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfVEVNX05YID0gKDB4MSA8PCAyMykKLUZTUl9URU1fRFogPSAoMHgyIDw8IDIzKQotRlNSX1RFTV9VRiA9ICgweDQgPDwgMjMpCi1GU1JfVEVNX09GID0gKDB4OCA8PCAyMykKLUZTUl9URU1fTlYgPSAoMHgxMCA8PCAyMykKLVJQX0RCTEVYVCA9IDAKLVJQX1NJTkdMRSA9IDEKLVJQX0RPVUJMRSA9IDIKLVJQX1JFU0VSVkVEID0gMwotUkRfTkVBUiA9IDAKLVJEX1pFUjAgPSAxCi1SRF9QT1NJTkYgPSAyCi1SRF9ORUdJTkYgPSAzCi1GUFJTX0RMID0gMHgxCi1GUFJTX0RVID0gMHgyCi1GUFJTX0ZFRiA9IDB4NAotUElMX01BWCA9IDB4ZgotZGVmIFNBVkVfR0xPQkFMUyhSUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX0dMT0JBTFMoUlApOiByZXR1cm4gXAotCi1kZWYgU0FWRV9PVVRTKFJQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfT1VUUyhSUCk6IHJldHVybiBcCi0KLWRlZiBTQVZFX1dJTkRPVyhTQlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9XSU5ET1coU0JQKTogcmV0dXJuIFwKLQotZGVmIFNUT1JFX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLWRlZiBMT0FEX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLV9TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotX1hSU19JRCA9IDB4Nzg3MjczMDAKLUdFVENPTlRFWFQgPSAwCi1TRVRDT05URVhUID0gMQotVUNfU0lHTUFTSyA9IDBvMDEKLVVDX1NUQUNLID0gMG8wMgotVUNfQ1BVID0gMG8wNAotVUNfTUFVID0gMG8xMAotVUNfRlBVID0gVUNfTUFVCi1VQ19JTlRSID0gMG8yMAotVUNfQVNSID0gMG80MAotVUNfTUNPTlRFWFQgPSAoVUNfQ1BVfFVDX0ZQVXxVQ19BU1IpCi1VQ19BTEwgPSAoVUNfU0lHTUFTS3xVQ19TVEFDS3xVQ19NQ09OVEVYVCkKLV9TSUdRVUVVRV9NQVggPSAzMgotX1NJR05PVElGWV9NQVggPSAzMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BjYi5oCi1JTlNUUl9WQUxJRCA9IDB4MDIKLU5PUk1BTF9TVEVQID0gMHgwNAotV0FUQ0hfU1RFUCA9IDB4MDgKLUNQQ19PVkVSRkxPVyA9IDB4MTAKLUFTWU5DX0hXRVJSID0gMHgyMAotU1RFUF9OT05FID0gMAotU1RFUF9SRVFVRVNURUQgPSAxCi1TVEVQX0FDVElWRSA9IDIKLVNURVBfV0FTQUNUSVZFID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21zYWNjdC5oCi1MTVNfVVNFUiA9IDAKLUxNU19TWVNURU0gPSAxCi1MTVNfVFJBUCA9IDIKLUxNU19URkFVTFQgPSAzCi1MTVNfREZBVUxUID0gNAotTE1TX0tGQVVMVCA9IDUKLUxNU19VU0VSX0xPQ0sgPSA2Ci1MTVNfU0xFRVAgPSA3Ci1MTVNfV0FJVF9DUFUgPSA4Ci1MTVNfU1RPUFBFRCA9IDkKLU5NU1RBVEVTID0gMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9sd3AuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5bmNoLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVVTWU5DX1RIUkVBRCA9IDB4MDAKLVVTWU5DX1BST0NFU1MgPSAweDAxCi1MT0NLX05PUk1BTCA9IDB4MDAKLUxPQ0tfRVJST1JDSEVDSyA9IDB4MDIKLUxPQ0tfUkVDVVJTSVZFID0gMHgwNAotVVNZTkNfUFJPQ0VTU19ST0JVU1QgPSAweDA4Ci1MT0NLX1BSSU9fTk9ORSA9IDB4MDAKLUxPQ0tfUFJJT19JTkhFUklUID0gMHgxMAotTE9DS19QUklPX1BST1RFQ1QgPSAweDIwCi1MT0NLX1NUQUxMX05QID0gMHgwMAotTE9DS19ST0JVU1RfTlAgPSAweDQwCi1MT0NLX09XTkVSREVBRCA9IDB4MQotTE9DS19OT1RSRUNPVkVSQUJMRSA9IDB4MgotTE9DS19JTklURUQgPSAweDQKLUxPQ0tfVU5NQVBQRUQgPSAweDgKLUxXUF9ERVRBQ0hFRCA9IDB4MDAwMDAwNDAKLUxXUF9TVVNQRU5ERUQgPSAweDAwMDAwMDgwCi1fX0xXUF9BU0xXUCA9IDB4MDAwMDAxMDAKLU1BWFNZU0FSR1MgPSA4Ci1OT1JNQUxSRVRVUk4gPSAwCi1KVVNUUkVUVVJOID0gMQotTFdQX1VTRVIgPSAweDAxCi1MV1BfU1lTID0gMHgwMgotVFNfRlJFRSA9IDB4MDAKLVRTX1NMRUVQID0gMHgwMQotVFNfUlVOID0gMHgwMgotVFNfT05QUk9DID0gMHgwNAotVFNfWk9NQiA9IDB4MDgKLVRTX1NUT1BQRUQgPSAweDEwCi1UX0lOVFJfVEhSRUFEID0gMHgwMDAxCi1UX1dBS0VBQkxFID0gMHgwMDAyCi1UX1RPTUFTSyA9IDB4MDAwNAotVF9UQUxMT0NTVEsgPSAweDAwMDgKLVRfV09VTERCTE9DSyA9IDB4MDAyMAotVF9ET05UQkxPQ0sgPSAweDAwNDAKLVRfRE9OVFBFTkQgPSAweDAwODAKLVRfU1lTX1BST0YgPSAweDAxMDAKLVRfV0FJVENWU0VNID0gMHgwMjAwCi1UX1dBVENIUFQgPSAweDA0MDAKLVRfUEFOSUMgPSAweDA4MDAKLVRQX0hPTERMV1AgPSAweDAwMDIKLVRQX1RXQUlUID0gMHgwMDA0Ci1UUF9MV1BFWElUID0gMHgwMDA4Ci1UUF9QUlNUT1AgPSAweDAwMTAKLVRQX0NIS1BUID0gMHgwMDIwCi1UUF9FWElUTFdQID0gMHgwMDQwCi1UUF9QUlZTVE9QID0gMHgwMDgwCi1UUF9NU0FDQ1QgPSAweDAxMDAKLVRQX1NUT1BQSU5HID0gMHgwMjAwCi1UUF9XQVRDSFBUID0gMHgwNDAwCi1UUF9QQVVTRSA9IDB4MDgwMAotVFBfQ0hBTkdFQklORCA9IDB4MTAwMAotVFNfTE9BRCA9IDB4MDAwMQotVFNfRE9OVF9TV0FQID0gMHgwMDAyCi1UU19TV0FQRU5RID0gMHgwMDA0Ci1UU19PTl9TV0FQUSA9IDB4MDAwOAotVFNfQ1NUQVJUID0gMHgwMTAwCi1UU19VTlBBVVNFID0gMHgwMjAwCi1UU19YU1RBUlQgPSAweDA0MDAKLVRTX1BTVEFSVCA9IDB4MDgwMAotVFNfUkVTVU1FID0gMHgxMDAwCi1UU19DUkVBVEUgPSAweDIwMDAKLVRTX0FMTFNUQVJUID0gXAotICAgICAgICAoVFNfQ1NUQVJUfFRTX1VOUEFVU0V8VFNfWFNUQVJUfFRTX1BTVEFSVHxUU19SRVNVTUV8VFNfQ1JFQVRFKQotZGVmIENQUl9WU1RPUFBFRCh0KTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9UUkFOU0lUSU9OKHRwKTogcmV0dXJuIHRocmVhZF90cmFuc2l0aW9uKHRwKTsKLQotZGVmIFRIUkVBRF9TVE9QKHRwKTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9aT01CKHRwKTogcmV0dXJuIFRIUkVBRF9TRVRfU1RBVEUodHAsIFRTX1pPTUIsIE5VTEwpCi0KLWRlZiBTRU1BX0hFTEQoeCk6IHJldHVybiAoc2VtYV9oZWxkKCh4KSkpCi0KLU5PX0xPQ0tTX0hFTEQgPSAxCi1OT19DT01QRVRJTkdfVEhSRUFEUyA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jcmVkLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91aW8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Jlc291cmNlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVBSSU9fUFJPQ0VTUyA9IDAKLVBSSU9fUEdSUCA9IDEKLVBSSU9fVVNFUiA9IDIKLVJMSU1JVF9DUFUgPSAwCi1STElNSVRfRlNJWkUgPSAxCi1STElNSVRfREFUQSA9IDIKLVJMSU1JVF9TVEFDSyA9IDMKLVJMSU1JVF9DT1JFID0gNAotUkxJTUlUX05PRklMRSA9IDUKLVJMSU1JVF9WTUVNID0gNgotUkxJTUlUX0FTID0gUkxJTUlUX1ZNRU0KLVJMSU1fTkxJTUlUUyA9IDcKLVJMSU1fSU5GSU5JVFkgPSAoLTMpCi1STElNX1NBVkVEX01BWCA9ICgtMikKLVJMSU1fU0FWRURfQ1VSID0gKC0xKQotUkxJTV9JTkZJTklUWSA9IDB4N2ZmZmZmZmYKLVJMSU1fU0FWRURfTUFYID0gMHg3ZmZmZmZmZQotUkxJTV9TQVZFRF9DVVIgPSAweDdmZmZmZmZkCi1STElNMzJfSU5GSU5JVFkgPSAweDdmZmZmZmZmCi1STElNMzJfU0FWRURfTUFYID0gMHg3ZmZmZmZmZQotUkxJTTMyX1NBVkVEX0NVUiA9IDB4N2ZmZmZmZmQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tb2RlbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGVidWcuaAotZGVmIEFTU0VSVDY0KHgpOiByZXR1cm4gQVNTRVJUKHgpCi0KLWRlZiBBU1NFUlQzMih4KTogcmV0dXJuIEFTU0VSVCh4KQotCi1EQVRBTU9ERUxfTUFTSyA9IDB4MEZGMDAwMDAKLURBVEFNT0RFTF9JTFAzMiA9IDB4MDAxMDAwMDAKLURBVEFNT0RFTF9MUDY0ID0gMHgwMDIwMDAwMAotREFUQU1PREVMX05PTkUgPSAwCi1EQVRBTU9ERUxfTkFUSVZFID0gREFUQU1PREVMX0xQNjQKLURBVEFNT0RFTF9OQVRJVkUgPSBEQVRBTU9ERUxfSUxQMzIKLWRlZiBTVFJVQ1RfU0laRShoYW5kbGUpOiByZXR1cm4gXAotCi1kZWYgU1RSVUNUX0JVRihoYW5kbGUpOiByZXR1cm4gKChoYW5kbGUpLnB0ci5tNjQpCi0KLWRlZiBTSVpFT0ZfUFRSKHVtb2RlbCk6IHJldHVybiBcCi0KLWRlZiBTVFJVQ1RfU0laRShoYW5kbGUpOiByZXR1cm4gKHNpemVvZiAoKihoYW5kbGUpLnB0cikpCi0KLWRlZiBTVFJVQ1RfQlVGKGhhbmRsZSk6IHJldHVybiAoKGhhbmRsZSkucHRyKQotCi1kZWYgU0laRU9GX1BUUih1bW9kZWwpOiByZXR1cm4gc2l6ZW9mIChjYWRkcl90KQotCi1kZWYgbHdwX2dldGRhdGFtb2RlbCh0KTogcmV0dXJuIERBVEFNT0RFTF9JTFAzMgotCi1SVVNBR0VfU0VMRiA9IDAKLVJVU0FHRV9DSElMRFJFTiA9IC0xCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9zZWdfZW51bS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnVmLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc3RhdC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1LU1RBVF9TVFJMRU4gPSAzMQotZGVmIEtTVEFUX0VOVEVSKGspOiByZXR1cm4gXAotCi1kZWYgS1NUQVRfRVhJVChrKTogcmV0dXJuIFwKLQotS1NUQVRfVFlQRV9SQVcgPSAwCi1LU1RBVF9UWVBFX05BTUVEID0gMQotS1NUQVRfVFlQRV9JTlRSID0gMgotS1NUQVRfVFlQRV9JTyA9IDMKLUtTVEFUX1RZUEVfVElNRVIgPSA0Ci1LU1RBVF9OVU1fVFlQRVMgPSA1Ci1LU1RBVF9GTEFHX1ZJUlRVQUwgPSAweDAxCi1LU1RBVF9GTEFHX1ZBUl9TSVpFID0gMHgwMgotS1NUQVRfRkxBR19XUklUQUJMRSA9IDB4MDQKLUtTVEFUX0ZMQUdfUEVSU0lTVEVOVCA9IDB4MDgKLUtTVEFUX0ZMQUdfRE9STUFOVCA9IDB4MTAKLUtTVEFUX0ZMQUdfSU5WQUxJRCA9IDB4MjAKLUtTVEFUX1JFQUQgPSAwCi1LU1RBVF9XUklURSA9IDEKLUtTVEFUX0RBVEFfQ0hBUiA9IDAKLUtTVEFUX0RBVEFfSU5UMzIgPSAxCi1LU1RBVF9EQVRBX1VJTlQzMiA9IDIKLUtTVEFUX0RBVEFfSU5UNjQgPSAzCi1LU1RBVF9EQVRBX1VJTlQ2NCA9IDQKLUtTVEFUX0RBVEFfTE9ORyA9IEtTVEFUX0RBVEFfSU5UMzIKLUtTVEFUX0RBVEFfVUxPTkcgPSBLU1RBVF9EQVRBX1VJTlQzMgotS1NUQVRfREFUQV9MT05HID0gS1NUQVRfREFUQV9JTlQ2NAotS1NUQVRfREFUQV9VTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDY0Ci1LU1RBVF9EQVRBX0xPTkcgPSA3Ci1LU1RBVF9EQVRBX1VMT05HID0gOAotS1NUQVRfREFUQV9MT05HTE9ORyA9IEtTVEFUX0RBVEFfSU5UNjQKLUtTVEFUX0RBVEFfVUxPTkdMT05HID0gS1NUQVRfREFUQV9VSU5UNjQKLUtTVEFUX0RBVEFfRkxPQVQgPSA1Ci1LU1RBVF9EQVRBX0RPVUJMRSA9IDYKLUtTVEFUX0lOVFJfSEFSRCA9IDAKLUtTVEFUX0lOVFJfU09GVCA9IDEKLUtTVEFUX0lOVFJfV0FUQ0hET0cgPSAyCi1LU1RBVF9JTlRSX1NQVVJJT1VTID0gMwotS1NUQVRfSU5UUl9NVUxUU1ZDID0gNAotS1NUQVRfTlVNX0lOVFJTID0gNQotQl9CVVNZID0gMHgwMDAxCi1CX0RPTkUgPSAweDAwMDIKLUJfRVJST1IgPSAweDAwMDQKLUJfUEFHRUlPID0gMHgwMDEwCi1CX1BIWVMgPSAweDAwMjAKLUJfUkVBRCA9IDB4MDA0MAotQl9XUklURSA9IDB4MDEwMAotQl9LRVJOQlVGID0gMHgwMDA4Ci1CX1dBTlRFRCA9IDB4MDA4MAotQl9BR0UgPSAweDAwMDIwMAotQl9BU1lOQyA9IDB4MDAwNDAwCi1CX0RFTFdSSSA9IDB4MDAwODAwCi1CX1NUQUxFID0gMHgwMDEwMDAKLUJfRE9OVE5FRUQgPSAweDAwMjAwMAotQl9SRU1BUFBFRCA9IDB4MDA0MDAwCi1CX0ZSRUUgPSAweDAwODAwMAotQl9JTlZBTCA9IDB4MDEwMDAwCi1CX0ZPUkNFID0gMHgwMjAwMDAKLUJfSEVBRCA9IDB4MDQwMDAwCi1CX05PQ0FDSEUgPSAweDA4MDAwMAotQl9UUlVOQyA9IDB4MTAwMDAwCi1CX1NIQURPVyA9IDB4MjAwMDAwCi1CX1JFVFJZV1JJID0gMHg0MDAwMDAKLWRlZiBub3RhdmFpbChicCk6IHJldHVybiBcCi0KLWRlZiBCV1JJVEUoYnApOiByZXR1cm4gXAotCi1kZWYgQldSSVRFMihicCk6IHJldHVybiBcCi0KLVZST09UID0gMHgwMQotVk5PQ0FDSEUgPSAweDAyCi1WTk9NQVAgPSAweDA0Ci1WRFVQID0gMHgwOAotVk5PU1dBUCA9IDB4MTAKLVZOT01PVU5UID0gMHgyMAotVklTU1dBUCA9IDB4NDAKLVZTV0FQTElLRSA9IDB4ODAKLVZWRlNMT0NLID0gMHgxMDAKLVZWRlNXQUlUID0gMHgyMDAKLVZWTUxPQ0sgPSAweDQwMAotVkRJUk9QRU4gPSAweDgwMAotVlZNRVhFQyA9IDB4MTAwMAotVlBYRlMgPSAweDIwMDAKLUFUX1RZUEUgPSAweDAwMDEKLUFUX01PREUgPSAweDAwMDIKLUFUX1VJRCA9IDB4MDAwNAotQVRfR0lEID0gMHgwMDA4Ci1BVF9GU0lEID0gMHgwMDEwCi1BVF9OT0RFSUQgPSAweDAwMjAKLUFUX05MSU5LID0gMHgwMDQwCi1BVF9TSVpFID0gMHgwMDgwCi1BVF9BVElNRSA9IDB4MDEwMAotQVRfTVRJTUUgPSAweDAyMDAKLUFUX0NUSU1FID0gMHgwNDAwCi1BVF9SREVWID0gMHgwODAwCi1BVF9CTEtTSVpFID0gMHgxMDAwCi1BVF9OQkxPQ0tTID0gMHgyMDAwCi1BVF9WQ09ERSA9IDB4NDAwMAotQVRfQUxMID0gKEFUX1RZUEV8QVRfTU9ERXxBVF9VSUR8QVRfR0lEfEFUX0ZTSUR8QVRfTk9ERUlEfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX05MSU5LfEFUX1NJWkV8QVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUV8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfUkRFVnxBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1BVF9TVEFUID0gKEFUX01PREV8QVRfVUlEfEFUX0dJRHxBVF9GU0lEfEFUX05PREVJRHxBVF9OTElOS3xcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9TSVpFfEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FfEFUX1JERVYpCi1BVF9USU1FUyA9IChBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRSkKLUFUX05PU0VUID0gKEFUX05MSU5LfEFUX1JERVZ8QVRfRlNJRHxBVF9OT0RFSUR8QVRfVFlQRXxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1WU1VJRCA9IDBvNDAwMAotVlNHSUQgPSAwbzIwMDAKLVZTVlRYID0gMG8xMDAwCi1WUkVBRCA9IDBvMDQwMAotVldSSVRFID0gMG8wMjAwCi1WRVhFQyA9IDBvMDEwMAotTU9ERU1BU0sgPSAwbzc3NzcKLVBFUk1NQVNLID0gMG8wNzc3Ci1kZWYgTUFORE1PREUobW9kZSk6IHJldHVybiAoKChtb2RlKSAmIChWU0dJRHwoVkVYRUM+PjMpKSkgPT0gVlNHSUQpCi0KLVZTQV9BQ0wgPSAweDAwMDEKLVZTQV9BQ0xDTlQgPSAweDAwMDIKLVZTQV9ERkFDTCA9IDB4MDAwNAotVlNBX0RGQUNMQ05UID0gMHgwMDA4Ci1MT09LVVBfRElSID0gMHgwMQotRFVNUF9BTExPQyA9IDAKLURVTVBfRlJFRSA9IDEKLURVTVBfU0NBTiA9IDIKLUFUVFJfVVRJTUUgPSAweDAxCi1BVFRSX0VYRUMgPSAweDAyCi1BVFRSX0NPTU0gPSAweDA0Ci1BVFRSX0hJTlQgPSAweDA4Ci1BVFRSX1JFQUwgPSAweDEwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcG9sbC5oCi1QT0xMSU4gPSAweDAwMDEKLVBPTExQUkkgPSAweDAwMDIKLVBPTExPVVQgPSAweDAwMDQKLVBPTExSRE5PUk0gPSAweDAwNDAKLVBPTExXUk5PUk0gPSBQT0xMT1VUCi1QT0xMUkRCQU5EID0gMHgwMDgwCi1QT0xMV1JCQU5EID0gMHgwMTAwCi1QT0xMTk9STSA9IFBPTExSRE5PUk0KLVBPTExFUlIgPSAweDAwMDgKLVBPTExIVVAgPSAweDAwMTAKLVBPTExOVkFMID0gMHgwMDIwCi1QT0xMUkVNT1ZFID0gMHgwODAwCi1QT0xMUkREQVRBID0gMHgwMjAwCi1QT0xMTk9FUlIgPSAweDA0MDAKLVBPTExDTE9TRUQgPSAweDgwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJtZGVwLmgKLWRlZiBzdHJfYWxpZ25lZChYKTogcmV0dXJuICgoKHVsb25nX3QpKFgpICYgKHNpemVvZiAoaW50KSAtIDEpKSA9PSAwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RyZnQuaAotdGRlbHRhX3Rfc3ogPSAxMgotRlRFVl9NQVNLID0gMHgxRkZGCi1GVEVWX0lTV1IgPSAweDgwMDAKLUZURVZfQ1MgPSAweDQwMDAKLUZURVZfUFMgPSAweDIwMDAKLUZURVZfUU1BU0sgPSAweDFGMDAKLUZURVZfQUxMT0NNQVNLID0gMHgxRkY4Ci1GVEVWX0FMTE9DQiA9IDB4MDAwMAotRlRFVl9FU0JBTExPQyA9IDB4MDAwMQotRlRFVl9ERVNCQUxMT0MgPSAweDAwMDIKLUZURVZfRVNCQUxMT0NBID0gMHgwMDAzCi1GVEVWX0RFU0JBTExPQ0EgPSAweDAwMDQKLUZURVZfQUxMT0NCSUcgPSAweDAwMDUKLUZURVZfQUxMT0NCVyA9IDB4MDAwNgotRlRFVl9GUkVFQiA9IDB4MDAwOAotRlRFVl9EVVBCID0gMHgwMDA5Ci1GVEVWX0NPUFlCID0gMHgwMDBBCi1GVEVWX0NBTExFUiA9IDB4MDAwRgotRlRFVl9QVVQgPSAweDAxMDAKLUZURVZfRlNZTkNRID0gMHgwMTAzCi1GVEVWX0RTWU5DUSA9IDB4MDEwNAotRlRFVl9QVVRRID0gMHgwMTA1Ci1GVEVWX0dFVFEgPSAweDAxMDYKLUZURVZfUk1WUSA9IDB4MDEwNwotRlRFVl9JTlNRID0gMHgwMTA4Ci1GVEVWX1BVVEJRID0gMHgwMTA5Ci1GVEVWX0ZMVVNIUSA9IDB4MDEwQQotRlRFVl9SRVBMWVEgPSAweDAxMEIKLUZURVZfUFVUTkVYVCA9IDB4MDEwRAotRlRFVl9SV05FWFQgPSAweDAxMEUKLUZURVZfUVdJTk5FUiA9IDB4MDEwRgotRlRFVl9HRVdSSVRFID0gMHgwMTAxCi1kZWYgRlRGTFdfSEFTSChoKTogcmV0dXJuICgoKHVuc2lnbmVkKShoKSklZnRmbHdfaGFzaF9zeikKLQotRlRCTEtfRVZOVFMgPSAweDkKLVFFTkFCID0gMHgwMDAwMDAwMQotUVdBTlRSID0gMHgwMDAwMDAwMgotUVdBTlRXID0gMHgwMDAwMDAwNAotUUZVTEwgPSAweDAwMDAwMDA4Ci1RUkVBRFIgPSAweDAwMDAwMDEwCi1RVVNFID0gMHgwMDAwMDAyMAotUU5PRU5CID0gMHgwMDAwMDA0MAotUUJBQ0sgPSAweDAwMDAwMTAwCi1RSExJU1QgPSAweDAwMDAwMjAwCi1RUEFJUiA9IDB4MDAwMDA4MDAKLVFQRVJRID0gMHgwMDAwMTAwMAotUVBFUk1PRCA9IDB4MDAwMDIwMDAKLVFNVFNBRkUgPSAweDAwMDA0MDAwCi1RTVRPVVRQRVJJTSA9IDB4MDAwMDgwMDAKLVFNVF9UWVBFTUFTSyA9IChRUEFJUnxRUEVSUXxRUEVSTU9EfFFNVFNBRkV8UU1UT1VUUEVSSU0pCi1RSU5TRVJWSUNFID0gMHgwMDAxMDAwMAotUVdDTE9TRSA9IDB4MDAwMjAwMDAKLVFFTkQgPSAweDAwMDQwMDAwCi1RV0FOVFdTWU5DID0gMHgwMDA4MDAwMAotUVNZTkNTVFIgPSAweDAwMTAwMDAwCi1RSVNEUlYgPSAweDAwMjAwMDAwCi1RSE9UID0gMHgwMDQwMDAwMAotUU5FWFRIT1QgPSAweDAwODAwMDAwCi1fUUlOU0VSVElORyA9IDB4MDQwMDAwMDAKLV9RUkVNT1ZJTkcgPSAweDA4MDAwMDAwCi1RX1NRUVVFVUVEID0gMHgwMQotUV9TUURSQUlOSU5HID0gMHgwMgotUUJfRlVMTCA9IDB4MDEKLVFCX1dBTlRXID0gMHgwMgotUUJfQkFDSyA9IDB4MDQKLU5CQU5EID0gMjU2Ci1TVFJVSU9UX05PTkUgPSAtMQotU1RSVUlPVF9ET05UQ0FSRSA9IDAKLVNUUlVJT1RfU1RBTkRBUkQgPSAxCi1TVFJVSU9UX0lQID0gMgotREJMS19SRUZNSU4gPSAweDAxCi1TVFJVSU9fU1BFQyA9IDB4MDEKLVNUUlVJT19ET05FID0gMHgwMgotU1RSVUlPX0lQID0gMHgwNAotU1RSVUlPX1pDID0gMHgwOAotU1RSVUlPX0lDSyA9IDB4MTAKLU1TR01BUksgPSAweDAxCi1NU0dOT0xPT1AgPSAweDAyCi1NU0dERUxJTSA9IDB4MDQKLU1TR05PR0VUID0gMHgwOAotTVNHTUFSS05FWFQgPSAweDEwCi1NU0dOT1RNQVJLTkVYVCA9IDB4MjAKLU1fREFUQSA9IDB4MDAKLU1fUFJPVE8gPSAweDAxCi1NX0JSRUFLID0gMHgwOAotTV9QQVNTRlAgPSAweDA5Ci1NX0VWRU5UID0gMHgwYQotTV9TSUcgPSAweDBiCi1NX0RFTEFZID0gMHgwYwotTV9DVEwgPSAweDBkCi1NX0lPQ1RMID0gMHgwZQotTV9TRVRPUFRTID0gMHgxMAotTV9SU0UgPSAweDExCi1NX0lPQ0FDSyA9IDB4ODEKLU1fSU9DTkFLID0gMHg4MgotTV9QQ1BST1RPID0gMHg4MwotTV9QQ1NJRyA9IDB4ODQKLU1fUkVBRCA9IDB4ODUKLU1fRkxVU0ggPSAweDg2Ci1NX1NUT1AgPSAweDg3Ci1NX1NUQVJUID0gMHg4OAotTV9IQU5HVVAgPSAweDg5Ci1NX0VSUk9SID0gMHg4YQotTV9DT1BZSU4gPSAweDhiCi1NX0NPUFlPVVQgPSAweDhjCi1NX0lPQ0RBVEEgPSAweDhkCi1NX1BDUlNFID0gMHg4ZQotTV9TVE9QSSA9IDB4OGYKLU1fU1RBUlRJID0gMHg5MAotTV9QQ0VWRU5UID0gMHg5MQotTV9VTkhBTkdVUCA9IDB4OTIKLVFOT1JNID0gMHgwMAotUVBDVEwgPSAweDgwCi1JT0NfTU9ERUxTID0gREFUQU1PREVMX01BU0sKLUlPQ19JTFAzMiA9IERBVEFNT0RFTF9JTFAzMgotSU9DX0xQNjQgPSBEQVRBTU9ERUxfTFA2NAotSU9DX05BVElWRSA9IERBVEFNT0RFTF9OQVRJVkUKLUlPQ19OT05FID0gREFUQU1PREVMX05PTkUKLVNUUkNBTk9OID0gMHgwMQotUkVDT1BZID0gMHgwMgotU09fQUxMID0gMHgwMDNmCi1TT19SRUFET1BUID0gMHgwMDAxCi1TT19XUk9GRiA9IDB4MDAwMgotU09fTUlOUFNaID0gMHgwMDA0Ci1TT19NQVhQU1ogPSAweDAwMDgKLVNPX0hJV0FUID0gMHgwMDEwCi1TT19MT1dBVCA9IDB4MDAyMAotU09fTVJFQURPTiA9IDB4MDA0MAotU09fTVJFQURPRkYgPSAweDAwODAKLVNPX05ERUxPTiA9IDB4MDEwMAotU09fTkRFTE9GRiA9IDB4MDIwMAotU09fSVNUVFkgPSAweDA0MDAKLVNPX0lTTlRUWSA9IDB4MDgwMAotU09fVE9TVE9QID0gMHgxMDAwCi1TT19UT05TVE9QID0gMHgyMDAwCi1TT19CQU5EID0gMHg0MDAwCi1TT19ERUxJTSA9IDB4ODAwMAotU09fTk9ERUxJTSA9IDB4MDEwMDAwCi1TT19TVFJIT0xEID0gMHgwMjAwMDAKLVNPX0VSUk9QVCA9IDB4MDQwMDAwCi1TT19DT1BZT1BUID0gMHgwODAwMDAKLVNPX01BWEJMSyA9IDB4MTAwMDAwCi1ERUZfSU9WX01BWCA9IDE2Ci1JTkZPRF9GSVJTVEJZVEVTID0gMHgwMgotSU5GT0RfQllURVMgPSAweDA0Ci1JTkZPRF9DT1VOVCA9IDB4MDgKLUlORk9EX0NPUFlPVVQgPSAweDEwCi1NT0RPUEVOID0gMHgxCi1DTE9ORU9QRU4gPSAweDIKLUNPTlNPUEVOID0gMHg0Ci1PUEVORkFJTCA9IC0xCi1CUFJJX0xPID0gMQotQlBSSV9NRUQgPSAyCi1CUFJJX0hJID0gMwotQlBSSV9GVCA9IDQKLUlORlBTWiA9IC0xCi1GTFVTSEFMTCA9IDEKLUZMVVNIREFUQSA9IDAKLVNUUkhJR0ggPSA1MTIwCi1TVFJMT1cgPSAxMDI0Ci1NQVhJT0NCU1ogPSAxMDI0Ci1QRVJJTV9JTk5FUiA9IDEKLVBFUklNX09VVEVSID0gMgotZGVmIGRhdGFtc2codHlwZSk6IHJldHVybiBcCi0KLWRlZiBzdHJhbG4oYSk6IHJldHVybiAoY2FkZHJfdCkoKGludHB0cl90KShhKSAmIH4oc2l6ZW9mIChpbnQpLTEpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnl0ZW9yZGVyLmgKLWRlZiBudG9obCh4KTogcmV0dXJuICh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuICh4KQotCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0VOQ0FQID0gNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfRUNITyA9IDcKLUlQUE9SVF9ESVNDQVJEID0gOQotSVBQT1JUX1NZU1RBVCA9IDExCi1JUFBPUlRfREFZVElNRSA9IDEzCi1JUFBPUlRfTkVUU1RBVCA9IDE1Ci1JUFBPUlRfRlRQID0gMjEKLUlQUE9SVF9URUxORVQgPSAyMwotSVBQT1JUX1NNVFAgPSAyNQotSVBQT1JUX1RJTUVTRVJWRVIgPSAzNwotSVBQT1JUX05BTUVTRVJWRVIgPSA0MgotSVBQT1JUX1dIT0lTID0gNDMKLUlQUE9SVF9NVFAgPSA1NwotSVBQT1JUX0JPT1RQUyA9IDY3Ci1JUFBPUlRfQk9PVFBDID0gNjgKLUlQUE9SVF9URlRQID0gNjkKLUlQUE9SVF9SSkUgPSA3NwotSVBQT1JUX0ZJTkdFUiA9IDc5Ci1JUFBPUlRfVFRZTElOSyA9IDg3Ci1JUFBPUlRfU1VQRFVQID0gOTUKLUlQUE9SVF9FWEVDU0VSVkVSID0gNTEyCi1JUFBPUlRfTE9HSU5TRVJWRVIgPSA1MTMKLUlQUE9SVF9DTURTRVJWRVIgPSA1MTQKLUlQUE9SVF9FRlNTRVJWRVIgPSA1MjAKLUlQUE9SVF9CSUZGVURQID0gNTEyCi1JUFBPUlRfV0hPU0VSVkVSID0gNTEzCi1JUFBPUlRfUk9VVEVTRVJWRVIgPSA1MjAKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JTVBMSU5LX0lQID0gMTU1Ci1JTVBMSU5LX0xPV0VYUEVSID0gMTU2Ci1JTVBMSU5LX0hJR0hFWFBFUiA9IDE1OAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfTUFYID0gMTI4Ci1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1JTl9MT09QQkFDS05FVCA9IDEyNwotZGVmIElOX1NFVF9MT09QQkFDS19BRERSKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTVVMVElDQVNUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTVVMVElDQVNUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEX0FOWShhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEX0FOWShhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19SRVNFUlZFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1JFU0VSVkVEKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhZGRyKTogcmV0dXJuIFwKLQotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gMHgxMAotSVBfTVVMVElDQVNUX1RUTCA9IDB4MTEKLUlQX01VTFRJQ0FTVF9MT09QID0gMHgxMgotSVBfQUREX01FTUJFUlNISVAgPSAweDEzCi1JUF9EUk9QX01FTUJFUlNISVAgPSAweDE0Ci1JUF9TRUNfT1BUID0gMHgyMgotSVBTRUNfUFJFRl9ORVZFUiA9IDB4MDEKLUlQU0VDX1BSRUZfUkVRVUlSRUQgPSAweDAyCi1JUFNFQ19QUkVGX1VOSVFVRSA9IDB4MDQKLUlQX0FERF9QUk9YWV9BRERSID0gMHg0MAotSVBfQk9VTkRfSUYgPSAweDQxCi1JUF9VTlNQRUNfU1JDID0gMHg0MgotSVBfUkVVU0VBRERSID0gMHgxMDQKLUlQX0RPTlRST1VURSA9IDB4MTA1Ci1JUF9CUk9BRENBU1QgPSAweDEwNgotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9VTklDQVNUX0hPUFMgPSAweDUKLUlQVjZfTVVMVElDQVNUX0lGID0gMHg2Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMHg3Ci1JUFY2X01VTFRJQ0FTVF9MT09QID0gMHg4Ci1JUFY2X0pPSU5fR1JPVVAgPSAweDkKLUlQVjZfTEVBVkVfR1JPVVAgPSAweGEKLUlQVjZfQUREX01FTUJFUlNISVAgPSAweDkKLUlQVjZfRFJPUF9NRU1CRVJTSElQID0gMHhhCi1JUFY2X1BLVElORk8gPSAweGIKLUlQVjZfSE9QTElNSVQgPSAweGMKLUlQVjZfTkVYVEhPUCA9IDB4ZAotSVBWNl9IT1BPUFRTID0gMHhlCi1JUFY2X0RTVE9QVFMgPSAweGYKLUlQVjZfUlRIRFIgPSAweDEwCi1JUFY2X1JUSERSRFNUT1BUUyA9IDB4MTEKLUlQVjZfUkVDVlBLVElORk8gPSAweDEyCi1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDB4MTMKLUlQVjZfUkVDVkhPUE9QVFMgPSAweDE0Ci1JUFY2X1JFQ1ZEU1RPUFRTID0gMHgxNQotSVBWNl9SRUNWUlRIRFIgPSAweDE2Ci1JUFY2X1JFQ1ZSVEhEUkRTVE9QVFMgPSAweDE3Ci1JUFY2X0NIRUNLU1VNID0gMHgxOAotSVBWNl9CT1VORF9JRiA9IDB4NDEKLUlQVjZfVU5TUEVDX1NSQyA9IDB4NDIKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfUEFEMV9PUFQgPSAwCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvU1RST1BUUy5weSBiL0xpYi9wbGF0LXN1bm9zNS9TVFJPUFRTLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjczNWM0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9TVFJPUFRTLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTgxMyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy9zdHJvcHRzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mZWF0dXJlX3Rlc3RzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc2FfZGVmcy5oCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA0Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDQKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAwCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDgKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX1BPU0lYX0NfU09VUkNFID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX0ZJTEVfT0ZGU0VUX0JJVFMgPSA2NAotX0ZJTEVfT0ZGU0VUX0JJVFMgPSAzMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgPSAxCi1fWE9QRU5fVkVSU0lPTiA9IDUwMAotX1hPUEVOX1ZFUlNJT04gPSA0Ci1fWE9QRU5fVkVSU0lPTiA9IDMKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jb25mLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90X2xvY2suaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hsb2NrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUxPQ0tfSEVMRF9WQUxVRSA9IDB4ZmYKLWRlZiBTUElOX0xPQ0socGwpOiByZXR1cm4gKChwbCkgPiBpcGx0b3NwbChMT0NLX0xFVkVMKSkKLQotZGVmIExPQ0tfU0FNUExFX0lOVEVSVkFMKGkpOiByZXR1cm4gKCgoaSkgJiAweGZmKSA9PSAwKQotCi1DTE9DS19MRVZFTCA9IDEwCi1MT0NLX0xFVkVMID0gMTAKLURJU1BfTEVWRUwgPSAoTE9DS19MRVZFTCArIDEpCi1QVFIyNF9MU0IgPSA1Ci1QVFIyNF9NU0IgPSAoUFRSMjRfTFNCICsgMjQpCi1QVFIyNF9BTElHTiA9IDMyCi1QVFIyNF9CQVNFID0gMHhlMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BhcmFtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9QT1NJWF9WRElTQUJMRSA9IDAKLU1BWF9JTlBVVCA9IDUxMgotTUFYX0NBTk9OID0gMjU2Ci1VSURfTk9CT0RZID0gNjAwMDEKLUdJRF9OT0JPRFkgPSBVSURfTk9CT0RZCi1VSURfTk9BQ0NFU1MgPSA2MDAwMgotTUFYX1RBU0tJRCA9IDk5OTk5OQotTUFYX01BWFBJRCA9IDk5OTk5OQotREVGQVVMVF9NQVhQSUQgPSA5OTk5OTkKLURFRkFVTFRfSlVNUFBJRCA9IDEwMDAwMAotREVGQVVMVF9NQVhQSUQgPSAzMDAwMAotREVGQVVMVF9KVU1QUElEID0gMAotTUFYVUlEID0gMjE0NzQ4MzY0NwotTUFYUFJPSklEID0gTUFYVUlECi1NQVhMSU5LID0gMzI3NjcKLU5NT1VOVCA9IDQwCi1DQU5CU0laID0gMjU2Ci1OT0ZJTEUgPSAyMAotTkdST1VQU19VTUlOID0gMAotTkdST1VQU19VTUFYID0gMzIKLU5HUk9VUFNfTUFYX0RFRkFVTFQgPSAxNgotTlpFUk8gPSAyMAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTUFTSyA9IDBvMjIKLUNETElNSVQgPSAoMTw8MTEpCi1OQlBTID0gMHgyMDAwMAotTkJQU0NUUiA9IDUxMgotVUJTSVpFID0gNTEyCi1TQ1RSU0hGVCA9IDkKLVNZU05BTUUgPSA5Ci1QUkVNT1RFID0gMzkKLU1BWFBBVEhMRU4gPSAxMDI0Ci1NQVhTWU1MSU5LUyA9IDIwCi1NQVhOQU1FTEVOID0gMjU2Ci1OQUREUiA9IDEzCi1QSVBFX0JVRiA9IDUxMjAKLVBJUEVfTUFYID0gNTEyMAotTkJCWSA9IDgKLU1BWEJTSVpFID0gODE5MgotREVWX0JTSVpFID0gNTEyCi1ERVZfQlNISUZUID0gOQotTUFYRlJBRyA9IDgKLU1BWE9GRjMyX1QgPSAweDdmZmZmZmZmCi1NQVhPRkZfVCA9IDB4N2ZmZmZmZmZmZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmZmZmZmZmZmYKLU1BWE9GRl9UID0gMHg3ZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmCi1kZWYgYnRvZGIoYnl0ZXMpOiByZXR1cm4gICBcCi0KLWRlZiBkYnRvYihkYik6IHJldHVybiAgIFwKLQotZGVmIGxidG9kYihieXRlcyk6IHJldHVybiAgIFwKLQotZGVmIGxkYnRvYihkYik6IHJldHVybiAgIFwKLQotTkNBUkdTMzIgPSAweDEwMDAwMAotTkNBUkdTNjQgPSAweDIwMDAwMAotTkNBUkdTID0gTkNBUkdTNjQKLU5DQVJHUyA9IE5DQVJHUzMyCi1GU0hJRlQgPSA4Ci1GU0NBTEUgPSAoMTw8RlNISUZUKQotZGVmIERFTEFZKG4pOiByZXR1cm4gZHJ2X3VzZWN3YWl0KG4pCi0KLWRlZiBtbXVfcHRvYih4KTogcmV0dXJuICgoeCkgPDwgTU1VX1BBR0VTSElGVCkKLQotZGVmIG1tdV9idG9wKHgpOiByZXR1cm4gKCgoeCkpID4+IE1NVV9QQUdFU0hJRlQpCi0KLWRlZiBtbXVfYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBNTVVfUEFHRU9GRlNFVCkgPj4gTU1VX1BBR0VTSElGVCkpCi0KLWRlZiBtbXVfcHRvZCh4KTogcmV0dXJuICgoeCkgPDwgKE1NVV9QQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2QoeCk6IHJldHVybiAoKHgpIDw8IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2IoeCk6IHJldHVybiAoKHgpIDw8IFBBR0VTSElGVCkKLQotZGVmIGJ0b3AoeCk6IHJldHVybiAoKCh4KSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBQQUdFT0ZGU0VUKSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgZHRvcChERCk6IHJldHVybiAoKChERCkgKyBORFBQIC0gMSkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgZHRvcHQoREQpOiByZXR1cm4gKChERCkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1fQUlPX0xJU1RJT19NQVggPSAoNDA5NikKLV9BSU9fTUFYID0gKC0xKQotX01RX09QRU5fTUFYID0gKDMyKQotX01RX1BSSU9fTUFYID0gKDMyKQotX1NFTV9OU0VNU19NQVggPSBJTlRfTUFYCi1fU0VNX1ZBTFVFX01BWCA9IElOVF9NQVgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91bmlzdGQuaAotX0NTX1BBVEggPSA2NQotX0NTX0xGU19DRkxBR1MgPSA2OAotX0NTX0xGU19MREZMQUdTID0gNjkKLV9DU19MRlNfTElCUyA9IDcwCi1fQ1NfTEZTX0xJTlRGTEFHUyA9IDcxCi1fQ1NfTEZTNjRfQ0ZMQUdTID0gNzIKLV9DU19MRlM2NF9MREZMQUdTID0gNzMKLV9DU19MRlM2NF9MSUJTID0gNzQKLV9DU19MRlM2NF9MSU5URkxBR1MgPSA3NQotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0gNzAwCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTID0gNzAxCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTID0gNzAyCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxBR1MgPSA3MDMKLV9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MgPSA3MDUKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTID0gNzA2Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUyA9IDcwNwotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUyA9IDcwOAotX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MgPSA3MDkKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUyA9IDcxMAotX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTID0gNzExCi1fQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUyA9IDcxMgotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUyA9IDcxMwotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MgPSA3MTQKLV9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTID0gNzE1Ci1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTID0gNzE2Ci1fU0NfQVJHX01BWCA9IDEKLV9TQ19DSElMRF9NQVggPSAyCi1fU0NfQ0xLX1RDSyA9IDMKLV9TQ19OR1JPVVBTX01BWCA9IDQKLV9TQ19PUEVOX01BWCA9IDUKLV9TQ19KT0JfQ09OVFJPTCA9IDYKLV9TQ19TQVZFRF9JRFMgPSA3Ci1fU0NfVkVSU0lPTiA9IDgKLV9TQ19QQVNTX01BWCA9IDkKLV9TQ19MT0dOQU1FX01BWCA9IDEwCi1fU0NfUEFHRVNJWkUgPSAxMQotX1NDX1hPUEVOX1ZFUlNJT04gPSAxMgotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX1NUUkVBTV9NQVggPSAxNgotX1NDX1RaTkFNRV9NQVggPSAxNwotX1NDX0FJT19MSVNUSU9fTUFYID0gMTgKLV9TQ19BSU9fTUFYID0gMTkKLV9TQ19BSU9fUFJJT19ERUxUQV9NQVggPSAyMAotX1NDX0FTWU5DSFJPTk9VU19JTyA9IDIxCi1fU0NfREVMQVlUSU1FUl9NQVggPSAyMgotX1NDX0ZTWU5DID0gMjMKLV9TQ19NQVBQRURfRklMRVMgPSAyNAotX1NDX01FTUxPQ0sgPSAyNQotX1NDX01FTUxPQ0tfUkFOR0UgPSAyNgotX1NDX01FTU9SWV9QUk9URUNUSU9OID0gMjcKLV9TQ19NRVNTQUdFX1BBU1NJTkcgPSAyOAotX1NDX01RX09QRU5fTUFYID0gMjkKLV9TQ19NUV9QUklPX01BWCA9IDMwCi1fU0NfUFJJT1JJVElaRURfSU8gPSAzMQotX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSAzMgotX1NDX1JFQUxUSU1FX1NJR05BTFMgPSAzMwotX1NDX1JUU0lHX01BWCA9IDM0Ci1fU0NfU0VNQVBIT1JFUyA9IDM1Ci1fU0NfU0VNX05TRU1TX01BWCA9IDM2Ci1fU0NfU0VNX1ZBTFVFX01BWCA9IDM3Ci1fU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTID0gMzgKLV9TQ19TSUdRVUVVRV9NQVggPSAzOQotX1NDX1NJR1JUX01JTiA9IDQwCi1fU0NfU0lHUlRfTUFYID0gNDEKLV9TQ19TWU5DSFJPTklaRURfSU8gPSA0MgotX1NDX1RJTUVSUyA9IDQzCi1fU0NfVElNRVJfTUFYID0gNDQKLV9TQ18yX0NfQklORCA9IDQ1Ci1fU0NfMl9DX0RFViA9IDQ2Ci1fU0NfMl9DX1ZFUlNJT04gPSA0NwotX1NDXzJfRk9SVF9ERVYgPSA0OAotX1NDXzJfRk9SVF9SVU4gPSA0OQotX1NDXzJfTE9DQUxFREVGID0gNTAKLV9TQ18yX1NXX0RFViA9IDUxCi1fU0NfMl9VUEUgPSA1MgotX1NDXzJfVkVSU0lPTiA9IDUzCi1fU0NfQkNfQkFTRV9NQVggPSA1NAotX1NDX0JDX0RJTV9NQVggPSA1NQotX1NDX0JDX1NDQUxFX01BWCA9IDU2Ci1fU0NfQkNfU1RSSU5HX01BWCA9IDU3Ci1fU0NfQ09MTF9XRUlHSFRTX01BWCA9IDU4Ci1fU0NfRVhQUl9ORVNUX01BWCA9IDU5Ci1fU0NfTElORV9NQVggPSA2MAotX1NDX1JFX0RVUF9NQVggPSA2MQotX1NDX1hPUEVOX0NSWVBUID0gNjIKLV9TQ19YT1BFTl9FTkhfSTE4TiA9IDYzCi1fU0NfWE9QRU5fU0hNID0gNjQKLV9TQ18yX0NIQVJfVEVSTSA9IDY2Ci1fU0NfWE9QRU5fWENVX1ZFUlNJT04gPSA2NwotX1NDX0FURVhJVF9NQVggPSA3NgotX1NDX0lPVl9NQVggPSA3NwotX1NDX1hPUEVOX1VOSVggPSA3OAotX1NDX1BBR0VfU0laRSA9IF9TQ19QQUdFU0laRQotX1NDX1RfSU9WX01BWCA9IDc5Ci1fU0NfUEhZU19QQUdFUyA9IDUwMAotX1NDX0FWUEhZU19QQUdFUyA9IDUwMQotX1NDX0NPSEVSX0JMS1NaID0gNTAzCi1fU0NfU1BMSVRfQ0FDSEUgPSA1MDQKLV9TQ19JQ0FDSEVfU1ogPSA1MDUKLV9TQ19EQ0FDSEVfU1ogPSA1MDYKLV9TQ19JQ0FDSEVfTElORVNaID0gNTA3Ci1fU0NfRENBQ0hFX0xJTkVTWiA9IDUwOAotX1NDX0lDQUNIRV9CTEtTWiA9IDUwOQotX1NDX0RDQUNIRV9CTEtTWiA9IDUxMAotX1NDX0RDQUNIRV9UQkxLU1ogPSA1MTEKLV9TQ19JQ0FDSEVfQVNTT0MgPSA1MTIKLV9TQ19EQ0FDSEVfQVNTT0MgPSA1MTMKLV9TQ19NQVhQSUQgPSA1MTQKLV9TQ19TVEFDS19QUk9UID0gNTE1Ci1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU2OAotX1NDX0dFVEdSX1JfU0laRV9NQVggPSA1NjkKLV9TQ19HRVRQV19SX1NJWkVfTUFYID0gNTcwCi1fU0NfTE9HSU5fTkFNRV9NQVggPSA1NzEKLV9TQ19USFJFQURfS0VZU19NQVggPSA1NzIKLV9TQ19USFJFQURfU1RBQ0tfTUlOID0gNTczCi1fU0NfVEhSRUFEX1RIUkVBRFNfTUFYID0gNTc0Ci1fU0NfVFRZX05BTUVfTUFYID0gNTc1Ci1fU0NfVEhSRUFEUyA9IDU3NgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA9IDU3NwotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDU3OAotX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HID0gNTc5Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU4MAotX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgPSA1ODEKLV9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQgPSA1ODIKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA1ODMKLV9TQ19YT1BFTl9MRUdBQ1kgPSA3MTcKLV9TQ19YT1BFTl9SRUFMVElNRSA9IDcxOAotX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgPSA3MTkKLV9TQ19YQlM1X0lMUDMyX09GRjMyID0gNzIwCi1fU0NfWEJTNV9JTFAzMl9PRkZCSUcgPSA3MjEKLV9TQ19YQlM1X0xQNjRfT0ZGNjQgPSA3MjIKLV9TQ19YQlM1X0xQQklHX09GRkJJRyA9IDcyMwotX1BDX0xJTktfTUFYID0gMQotX1BDX01BWF9DQU5PTiA9IDIKLV9QQ19NQVhfSU5QVVQgPSAzCi1fUENfTkFNRV9NQVggPSA0Ci1fUENfUEFUSF9NQVggPSA1Ci1fUENfUElQRV9CVUYgPSA2Ci1fUENfTk9fVFJVTkMgPSA3Ci1fUENfVkRJU0FCTEUgPSA4Ci1fUENfQ0hPV05fUkVTVFJJQ1RFRCA9IDkKLV9QQ19BU1lOQ19JTyA9IDEwCi1fUENfUFJJT19JTyA9IDExCi1fUENfU1lOQ19JTyA9IDEyCi1fUENfRklMRVNJWkVCSVRTID0gNjcKLV9QQ19MQVNUID0gNjcKLV9QT1NJWF9WRVJTSU9OID0gMTk5NTA2Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fWE9QRU5fWENVX1ZFUlNJT04gPSA0Ci1fWE9QRU5fUkVBTFRJTUUgPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fU0hNID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfTE9DQUxFREVGID0gMQotX1BPU0lYMl9DX0RFViA9IDEKLV9QT1NJWDJfU1dfREVWID0gMQotX1BPU0lYMl9VUEUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yd2xvY2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIFJXX1JFQURfSEVMRCh4KTogcmV0dXJuIChyd19yZWFkX2hlbGQoKHgpKSkKLQotZGVmIFJXX1dSSVRFX0hFTEQoeCk6IHJldHVybiAocndfd3JpdGVfaGVsZCgoeCkpKQotCi1kZWYgUldfTE9DS19IRUxEKHgpOiByZXR1cm4gKHJ3X2xvY2tfaGVsZCgoeCkpKQotCi1kZWYgUldfSVNXUklURVIoeCk6IHJldHVybiAocndfaXN3cml0ZXIoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZW1hcGhvcmUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RocmVhZC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva2x3cC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29uZHZhci5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMzMi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X3R5cGVzLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi1kZWYgVElDS19UT19TRUModGljayk6IHJldHVybiAoKHRpY2spIC8gaHopCi0KLWRlZiBTRUNfVE9fVElDSyhzZWMpOiByZXR1cm4gKChzZWMpICogaHopCi0KLWRlZiBUSUNLX1RPX01TRUModGljayk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0sobXNlYyk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0tfUk9VTkRVUChtc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fVVNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLKHVzZWMpOiByZXR1cm4gKCh1c2VjKSAvIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0tfUk9VTkRVUCh1c2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fTlNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLKG5zZWMpOiByZXR1cm4gKChuc2VjKSAvIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0tfUk9VTkRVUChuc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJTUVWQUxfVE9fVElDSyh0dnApOiByZXR1cm4gXAotCi1kZWYgVElNRVNUUlVDX1RPX1RJQ0sodHNwKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBpc28vdGltZV9pc28uaAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2lnbmFsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc28vc2lnbmFsX2lzby5oCi1TSUdIVVAgPSAxCi1TSUdJTlQgPSAyCi1TSUdRVUlUID0gMwotU0lHSUxMID0gNAotU0lHVFJBUCA9IDUKLVNJR0lPVCA9IDYKLVNJR0FCUlQgPSA2Ci1TSUdFTVQgPSA3Ci1TSUdGUEUgPSA4Ci1TSUdLSUxMID0gOQotU0lHQlVTID0gMTAKLVNJR1NFR1YgPSAxMQotU0lHU1lTID0gMTIKLVNJR1BJUEUgPSAxMwotU0lHQUxSTSA9IDE0Ci1TSUdURVJNID0gMTUKLVNJR1VTUjEgPSAxNgotU0lHVVNSMiA9IDE3Ci1TSUdDTEQgPSAxOAotU0lHQ0hMRCA9IDE4Ci1TSUdQV1IgPSAxOQotU0lHV0lOQ0ggPSAyMAotU0lHVVJHID0gMjEKLVNJR1BPTEwgPSAyMgotU0lHSU8gPSBTSUdQT0xMCi1TSUdTVE9QID0gMjMKLVNJR1RTVFAgPSAyNAotU0lHQ09OVCA9IDI1Ci1TSUdUVElOID0gMjYKLVNJR1RUT1UgPSAyNwotU0lHVlRBTFJNID0gMjgKLVNJR1BST0YgPSAyOQotU0lHWENQVSA9IDMwCi1TSUdYRlNaID0gMzEKLVNJR1dBSVRJTkcgPSAzMgotU0lHTFdQID0gMzMKLVNJR0ZSRUVaRSA9IDM0Ci1TSUdUSEFXID0gMzUKLVNJR0NBTkNFTCA9IDM2Ci1TSUdMT1NUID0gMzcKLV9TSUdSVE1JTiA9IDM4Ci1fU0lHUlRNQVggPSA0NQotU0lHX0JMT0NLID0gMQotU0lHX1VOQkxPQ0sgPSAyCi1TSUdfU0VUTUFTSyA9IDMKLVNJR05PX01BU0sgPSAweEZGCi1TSUdERUZFUiA9IDB4MTAwCi1TSUdIT0xEID0gMHgyMDAKLVNJR1JFTFNFID0gMHg0MDAKLVNJR0lHTk9SRSA9IDB4ODAwCi1TSUdQQVVTRSA9IDB4MTAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NpZ2luZm8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotU0lHRVZfTk9ORSA9IDEKLVNJR0VWX1NJR05BTCA9IDIKLVNJR0VWX1RIUkVBRCA9IDMKLVNJX05PSU5GTyA9IDMyNzY3Ci1TSV9VU0VSID0gMAotU0lfTFdQID0gKC0xKQotU0lfUVVFVUUgPSAoLTIpCi1TSV9USU1FUiA9ICgtMykKLVNJX0FTWU5DSU8gPSAoLTQpCi1TSV9NRVNHUSA9ICgtNSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoc2lnLmgKLUlMTF9JTExPUEMgPSAxCi1JTExfSUxMT1BOID0gMgotSUxMX0lMTEFEUiA9IDMKLUlMTF9JTExUUlAgPSA0Ci1JTExfUFJWT1BDID0gNQotSUxMX1BSVlJFRyA9IDYKLUlMTF9DT1BST0MgPSA3Ci1JTExfQkFEU1RLID0gOAotTlNJR0lMTCA9IDgKLUVNVF9UQUdPVkYgPSAxCi1FTVRfQ1BDT1ZGID0gMgotTlNJR0VNVCA9IDIKLUZQRV9JTlRESVYgPSAxCi1GUEVfSU5UT1ZGID0gMgotRlBFX0ZMVERJViA9IDMKLUZQRV9GTFRPVkYgPSA0Ci1GUEVfRkxUVU5EID0gNQotRlBFX0ZMVFJFUyA9IDYKLUZQRV9GTFRJTlYgPSA3Ci1GUEVfRkxUU1VCID0gOAotTlNJR0ZQRSA9IDgKLVNFR1ZfTUFQRVJSID0gMQotU0VHVl9BQ0NFUlIgPSAyCi1OU0lHU0VHViA9IDIKLUJVU19BRFJBTE4gPSAxCi1CVVNfQURSRVJSID0gMgotQlVTX09CSkVSUiA9IDMKLU5TSUdCVVMgPSAzCi1UUkFQX0JSS1BUID0gMQotVFJBUF9UUkFDRSA9IDIKLVRSQVBfUldBVENIID0gMwotVFJBUF9XV0FUQ0ggPSA0Ci1UUkFQX1hXQVRDSCA9IDUKLU5TSUdUUkFQID0gNQotQ0xEX0VYSVRFRCA9IDEKLUNMRF9LSUxMRUQgPSAyCi1DTERfRFVNUEVEID0gMwotQ0xEX1RSQVBQRUQgPSA0Ci1DTERfU1RPUFBFRCA9IDUKLUNMRF9DT05USU5VRUQgPSA2Ci1OU0lHQ0xEID0gNgotUE9MTF9JTiA9IDEKLVBPTExfT1VUID0gMgotUE9MTF9NU0cgPSAzCi1QT0xMX0VSUiA9IDQKLVBPTExfUFJJID0gNQotUE9MTF9IVVAgPSA2Ci1OU0lHUE9MTCA9IDYKLVBST0ZfU0lHID0gMQotTlNJR1BST0YgPSAxCi1TSV9NQVhTWiA9IDI1NgotU0lfTUFYU1ogPSAxMjgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX3N0ZF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVNJMzJfTUFYU1ogPSAxMjgKLWRlZiBTSV9DQU5RVUVVRShjKTogcmV0dXJuICgoYykgPD0gU0lfUVVFVUUpCi0KLVNBX05PQ0xEU1RPUCA9IDB4MDAwMjAwMDAKLVNBX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TQV9SRVNFVEhBTkQgPSAweDAwMDAwMDAyCi1TQV9SRVNUQVJUID0gMHgwMDAwMDAwNAotU0FfU0lHSU5GTyA9IDB4MDAwMDAwMDgKLVNBX05PREVGRVIgPSAweDAwMDAwMDEwCi1TQV9OT0NMRFdBSVQgPSAweDAwMDEwMDAwCi1TQV9XQUlUU0lHID0gMHgwMDAxMDAwMAotTlNJRyA9IDQ2Ci1NQVhTSUcgPSA0NQotU19TSUdOQUwgPSAxCi1TX1NJR1NFVCA9IDIKLVNfU0lHQUNUSU9OID0gMwotU19OT05FID0gNAotTUlOU0lHU1RLU1ogPSAyMDQ4Ci1TSUdTVEtTWiA9IDgxOTIKLVNTX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TU19ESVNBQkxFID0gMHgwMDAwMDAwMgotU05fUFJPQyA9IDEKLVNOX0NBTkNFTCA9IDIKLVNOX1NFTkQgPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWNvbnRleHQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3JlZ3NldC5oCi1SRUdfQ0NSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUEMgPSAoMSkKLVJFR19uUEMgPSAoMikKLVJFR19ZID0gKDMpCi1SRUdfRzEgPSAoNCkKLVJFR19HMiA9ICg1KQotUkVHX0czID0gKDYpCi1SRUdfRzQgPSAoNykKLVJFR19HNSA9ICg4KQotUkVHX0c2ID0gKDkpCi1SRUdfRzcgPSAoMTApCi1SRUdfTzAgPSAoMTEpCi1SRUdfTzEgPSAoMTIpCi1SRUdfTzIgPSAoMTMpCi1SRUdfTzMgPSAoMTQpCi1SRUdfTzQgPSAoMTUpCi1SRUdfTzUgPSAoMTYpCi1SRUdfTzYgPSAoMTcpCi1SRUdfTzcgPSAoMTgpCi1SRUdfQVNJID0gKDE5KQotUkVHX0ZQUlMgPSAoMjApCi1SRUdfUFMgPSBSRUdfUFNSCi1SRUdfU1AgPSBSRUdfTzYKLVJFR19SMCA9IFJFR19PMAotUkVHX1IxID0gUkVHX08xCi1fTkdSRUcgPSAyMQotX05HUkVHID0gMTkKLU5HUkVHID0gX05HUkVHCi1fTkdSRUczMiA9IDE5Ci1fTkdSRUc2NCA9IDIxCi1TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotTUFYRlBRID0gMTYKLVhSU19JRCA9IDB4Nzg3MjczMDAKLQotIyBJbmNsdWRlZCBmcm9tIHY3L3N5cy9wcml2cmVncy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2Ny9zeXMvcHNyLmgKLVBTUl9DV1AgPSAweDAwMDAwMDFGCi1QU1JfRVQgPSAweDAwMDAwMDIwCi1QU1JfUFMgPSAweDAwMDAwMDQwCi1QU1JfUyA9IDB4MDAwMDAwODAKLVBTUl9QSUwgPSAweDAwMDAwRjAwCi1QU1JfRUYgPSAweDAwMDAxMDAwCi1QU1JfRUMgPSAweDAwMDAyMDAwCi1QU1JfUlNWID0gMHgwMDBGQzAwMAotUFNSX0lDQyA9IDB4MDBGMDAwMDAKLVBTUl9DID0gMHgwMDEwMDAwMAotUFNSX1YgPSAweDAwMjAwMDAwCi1QU1JfWiA9IDB4MDA0MDAwMDAKLVBTUl9OID0gMHgwMDgwMDAwMAotUFNSX1ZFUiA9IDB4MEYwMDAwMDAKLVBTUl9JTVBMID0gMHhGMDAwMDAwMAotUFNMX0FMTENDID0gUFNSX0lDQwotUFNMX1VTRVIgPSAoUFNSX1MpCi1QU0xfVVNFUk1BU0sgPSAoUFNSX0lDQykKLVBTTF9VQklUUyA9IChQU1JfSUNDfFBTUl9FRikKLWRlZiBVU0VSTU9ERShwcyk6IHJldHVybiAoKChwcykgJiBQU1JfUFMpID09IDApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mc3IuaAotRlNSX0NFWEMgPSAweDAwMDAwMDFmCi1GU1JfQUVYQyA9IDB4MDAwMDAzZTAKLUZTUl9GQ0MgPSAweDAwMDAwYzAwCi1GU1JfUFIgPSAweDAwMDAxMDAwCi1GU1JfUU5FID0gMHgwMDAwMjAwMAotRlNSX0ZUVCA9IDB4MDAwMWMwMDAKLUZTUl9WRVIgPSAweDAwMGUwMDAwCi1GU1JfVEVNID0gMHgwZjgwMDAwMAotRlNSX1JQID0gMHgzMDAwMDAwMAotRlNSX1JEID0gMHhjMDAwMDAwMAotRlNSX1ZFUl9TSElGVCA9IDE3Ci1GU1JfRkNDMSA9IDB4MDAwMDAwMDMKLUZTUl9GQ0MyID0gMHgwMDAwMDAwQwotRlNSX0ZDQzMgPSAweDAwMDAwMDMwCi1GU1JfQ0VYQ19OWCA9IDB4MDAwMDAwMDEKLUZTUl9DRVhDX0RaID0gMHgwMDAwMDAwMgotRlNSX0NFWENfVUYgPSAweDAwMDAwMDA0Ci1GU1JfQ0VYQ19PRiA9IDB4MDAwMDAwMDgKLUZTUl9DRVhDX05WID0gMHgwMDAwMDAxMAotRlNSX0FFWENfTlggPSAoMHgxIDw8IDUpCi1GU1JfQUVYQ19EWiA9ICgweDIgPDwgNSkKLUZTUl9BRVhDX1VGID0gKDB4NCA8PCA1KQotRlNSX0FFWENfT0YgPSAoMHg4IDw8IDUpCi1GU1JfQUVYQ19OViA9ICgweDEwIDw8IDUpCi1GVFRfTk9ORSA9IDAKLUZUVF9JRUVFID0gMQotRlRUX1VORklOID0gMgotRlRUX1VOSU1QID0gMwotRlRUX1NFUSA9IDQKLUZUVF9BTElHTiA9IDUKLUZUVF9ERkFVTFQgPSA2Ci1GU1JfRlRUX1NISUZUID0gMTQKLUZTUl9GVFRfSUVFRSA9IChGVFRfSUVFRSAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1VORklOID0gKEZUVF9VTkZJTiAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfVU5JTVAgPSAoRlRUX1VOSU1QICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9TRVEgPSAoRlRUX1NFUSAgICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9BTElHTiA9IChGVFRfQUxJR04gIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX0RGQVVMVCA9IChGVFRfREZBVUxUIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfVEVNX05YID0gKDB4MSA8PCAyMykKLUZTUl9URU1fRFogPSAoMHgyIDw8IDIzKQotRlNSX1RFTV9VRiA9ICgweDQgPDwgMjMpCi1GU1JfVEVNX09GID0gKDB4OCA8PCAyMykKLUZTUl9URU1fTlYgPSAoMHgxMCA8PCAyMykKLVJQX0RCTEVYVCA9IDAKLVJQX1NJTkdMRSA9IDEKLVJQX0RPVUJMRSA9IDIKLVJQX1JFU0VSVkVEID0gMwotUkRfTkVBUiA9IDAKLVJEX1pFUjAgPSAxCi1SRF9QT1NJTkYgPSAyCi1SRF9ORUdJTkYgPSAzCi1GUFJTX0RMID0gMHgxCi1GUFJTX0RVID0gMHgyCi1GUFJTX0ZFRiA9IDB4NAotUElMX01BWCA9IDB4ZgotZGVmIFNBVkVfR0xPQkFMUyhSUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX0dMT0JBTFMoUlApOiByZXR1cm4gXAotCi1kZWYgU0FWRV9PVVRTKFJQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfT1VUUyhSUCk6IHJldHVybiBcCi0KLWRlZiBTQVZFX1dJTkRPVyhTQlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9XSU5ET1coU0JQKTogcmV0dXJuIFwKLQotZGVmIFNUT1JFX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLWRlZiBMT0FEX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLV9TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotX1hSU19JRCA9IDB4Nzg3MjczMDAKLUdFVENPTlRFWFQgPSAwCi1TRVRDT05URVhUID0gMQotVUNfU0lHTUFTSyA9IDBvMDEKLVVDX1NUQUNLID0gMG8wMgotVUNfQ1BVID0gMG8wNAotVUNfTUFVID0gMG8xMAotVUNfRlBVID0gVUNfTUFVCi1VQ19JTlRSID0gMG8yMAotVUNfQVNSID0gMG80MAotVUNfTUNPTlRFWFQgPSAoVUNfQ1BVfFVDX0ZQVXxVQ19BU1IpCi1VQ19BTEwgPSAoVUNfU0lHTUFTS3xVQ19TVEFDS3xVQ19NQ09OVEVYVCkKLV9TSUdRVUVVRV9NQVggPSAzMgotX1NJR05PVElGWV9NQVggPSAzMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BjYi5oCi1JTlNUUl9WQUxJRCA9IDB4MDIKLU5PUk1BTF9TVEVQID0gMHgwNAotV0FUQ0hfU1RFUCA9IDB4MDgKLUNQQ19PVkVSRkxPVyA9IDB4MTAKLUFTWU5DX0hXRVJSID0gMHgyMAotU1RFUF9OT05FID0gMAotU1RFUF9SRVFVRVNURUQgPSAxCi1TVEVQX0FDVElWRSA9IDIKLVNURVBfV0FTQUNUSVZFID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21zYWNjdC5oCi1MTVNfVVNFUiA9IDAKLUxNU19TWVNURU0gPSAxCi1MTVNfVFJBUCA9IDIKLUxNU19URkFVTFQgPSAzCi1MTVNfREZBVUxUID0gNAotTE1TX0tGQVVMVCA9IDUKLUxNU19VU0VSX0xPQ0sgPSA2Ci1MTVNfU0xFRVAgPSA3Ci1MTVNfV0FJVF9DUFUgPSA4Ci1MTVNfU1RPUFBFRCA9IDkKLU5NU1RBVEVTID0gMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9sd3AuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5bmNoLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVVTWU5DX1RIUkVBRCA9IDB4MDAKLVVTWU5DX1BST0NFU1MgPSAweDAxCi1MT0NLX05PUk1BTCA9IDB4MDAKLUxPQ0tfRVJST1JDSEVDSyA9IDB4MDIKLUxPQ0tfUkVDVVJTSVZFID0gMHgwNAotVVNZTkNfUFJPQ0VTU19ST0JVU1QgPSAweDA4Ci1MT0NLX1BSSU9fTk9ORSA9IDB4MDAKLUxPQ0tfUFJJT19JTkhFUklUID0gMHgxMAotTE9DS19QUklPX1BST1RFQ1QgPSAweDIwCi1MT0NLX1NUQUxMX05QID0gMHgwMAotTE9DS19ST0JVU1RfTlAgPSAweDQwCi1MT0NLX09XTkVSREVBRCA9IDB4MQotTE9DS19OT1RSRUNPVkVSQUJMRSA9IDB4MgotTE9DS19JTklURUQgPSAweDQKLUxPQ0tfVU5NQVBQRUQgPSAweDgKLUxXUF9ERVRBQ0hFRCA9IDB4MDAwMDAwNDAKLUxXUF9TVVNQRU5ERUQgPSAweDAwMDAwMDgwCi1fX0xXUF9BU0xXUCA9IDB4MDAwMDAxMDAKLU1BWFNZU0FSR1MgPSA4Ci1OT1JNQUxSRVRVUk4gPSAwCi1KVVNUUkVUVVJOID0gMQotTFdQX1VTRVIgPSAweDAxCi1MV1BfU1lTID0gMHgwMgotVFNfRlJFRSA9IDB4MDAKLVRTX1NMRUVQID0gMHgwMQotVFNfUlVOID0gMHgwMgotVFNfT05QUk9DID0gMHgwNAotVFNfWk9NQiA9IDB4MDgKLVRTX1NUT1BQRUQgPSAweDEwCi1UX0lOVFJfVEhSRUFEID0gMHgwMDAxCi1UX1dBS0VBQkxFID0gMHgwMDAyCi1UX1RPTUFTSyA9IDB4MDAwNAotVF9UQUxMT0NTVEsgPSAweDAwMDgKLVRfV09VTERCTE9DSyA9IDB4MDAyMAotVF9ET05UQkxPQ0sgPSAweDAwNDAKLVRfRE9OVFBFTkQgPSAweDAwODAKLVRfU1lTX1BST0YgPSAweDAxMDAKLVRfV0FJVENWU0VNID0gMHgwMjAwCi1UX1dBVENIUFQgPSAweDA0MDAKLVRfUEFOSUMgPSAweDA4MDAKLVRQX0hPTERMV1AgPSAweDAwMDIKLVRQX1RXQUlUID0gMHgwMDA0Ci1UUF9MV1BFWElUID0gMHgwMDA4Ci1UUF9QUlNUT1AgPSAweDAwMTAKLVRQX0NIS1BUID0gMHgwMDIwCi1UUF9FWElUTFdQID0gMHgwMDQwCi1UUF9QUlZTVE9QID0gMHgwMDgwCi1UUF9NU0FDQ1QgPSAweDAxMDAKLVRQX1NUT1BQSU5HID0gMHgwMjAwCi1UUF9XQVRDSFBUID0gMHgwNDAwCi1UUF9QQVVTRSA9IDB4MDgwMAotVFBfQ0hBTkdFQklORCA9IDB4MTAwMAotVFNfTE9BRCA9IDB4MDAwMQotVFNfRE9OVF9TV0FQID0gMHgwMDAyCi1UU19TV0FQRU5RID0gMHgwMDA0Ci1UU19PTl9TV0FQUSA9IDB4MDAwOAotVFNfQ1NUQVJUID0gMHgwMTAwCi1UU19VTlBBVVNFID0gMHgwMjAwCi1UU19YU1RBUlQgPSAweDA0MDAKLVRTX1BTVEFSVCA9IDB4MDgwMAotVFNfUkVTVU1FID0gMHgxMDAwCi1UU19DUkVBVEUgPSAweDIwMDAKLVRTX0FMTFNUQVJUID0gXAotICAgICAgICAoVFNfQ1NUQVJUfFRTX1VOUEFVU0V8VFNfWFNUQVJUfFRTX1BTVEFSVHxUU19SRVNVTUV8VFNfQ1JFQVRFKQotZGVmIENQUl9WU1RPUFBFRCh0KTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9UUkFOU0lUSU9OKHRwKTogcmV0dXJuIHRocmVhZF90cmFuc2l0aW9uKHRwKTsKLQotZGVmIFRIUkVBRF9TVE9QKHRwKTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9aT01CKHRwKTogcmV0dXJuIFRIUkVBRF9TRVRfU1RBVEUodHAsIFRTX1pPTUIsIE5VTEwpCi0KLWRlZiBTRU1BX0hFTEQoeCk6IHJldHVybiAoc2VtYV9oZWxkKCh4KSkpCi0KLU5PX0xPQ0tTX0hFTEQgPSAxCi1OT19DT01QRVRJTkdfVEhSRUFEUyA9IDEKLUZNTkFNRVNaID0gOAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5c3RtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9wcm9jLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jcmVkLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91c2VyLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yZXNvdXJjZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1QUklPX1BST0NFU1MgPSAwCi1QUklPX1BHUlAgPSAxCi1QUklPX1VTRVIgPSAyCi1STElNSVRfQ1BVID0gMAotUkxJTUlUX0ZTSVpFID0gMQotUkxJTUlUX0RBVEEgPSAyCi1STElNSVRfU1RBQ0sgPSAzCi1STElNSVRfQ09SRSA9IDQKLVJMSU1JVF9OT0ZJTEUgPSA1Ci1STElNSVRfVk1FTSA9IDYKLVJMSU1JVF9BUyA9IFJMSU1JVF9WTUVNCi1STElNX05MSU1JVFMgPSA3Ci1STElNX0lORklOSVRZID0gKC0zKQotUkxJTV9TQVZFRF9NQVggPSAoLTIpCi1STElNX1NBVkVEX0NVUiA9ICgtMSkKLVJMSU1fSU5GSU5JVFkgPSAweDdmZmZmZmZmCi1STElNX1NBVkVEX01BWCA9IDB4N2ZmZmZmZmUKLVJMSU1fU0FWRURfQ1VSID0gMHg3ZmZmZmZmZAotUkxJTTMyX0lORklOSVRZID0gMHg3ZmZmZmZmZgotUkxJTTMyX1NBVkVEX01BWCA9IDB4N2ZmZmZmZmUKLVJMSU0zMl9TQVZFRF9DVVIgPSAweDdmZmZmZmZkCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbW9kZWwuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RlYnVnLmgKLWRlZiBBU1NFUlQ2NCh4KTogcmV0dXJuIEFTU0VSVCh4KQotCi1kZWYgQVNTRVJUMzIoeCk6IHJldHVybiBBU1NFUlQoeCkKLQotREFUQU1PREVMX01BU0sgPSAweDBGRjAwMDAwCi1EQVRBTU9ERUxfSUxQMzIgPSAweDAwMTAwMDAwCi1EQVRBTU9ERUxfTFA2NCA9IDB4MDAyMDAwMDAKLURBVEFNT0RFTF9OT05FID0gMAotREFUQU1PREVMX05BVElWRSA9IERBVEFNT0RFTF9MUDY0Ci1EQVRBTU9ERUxfTkFUSVZFID0gREFUQU1PREVMX0lMUDMyCi1kZWYgU1RSVUNUX1NJWkUoaGFuZGxlKTogcmV0dXJuIFwKLQotZGVmIFNUUlVDVF9CVUYoaGFuZGxlKTogcmV0dXJuICgoaGFuZGxlKS5wdHIubTY0KQotCi1kZWYgU0laRU9GX1BUUih1bW9kZWwpOiByZXR1cm4gXAotCi1kZWYgU1RSVUNUX1NJWkUoaGFuZGxlKTogcmV0dXJuIChzaXplb2YgKCooaGFuZGxlKS5wdHIpKQotCi1kZWYgU1RSVUNUX0JVRihoYW5kbGUpOiByZXR1cm4gKChoYW5kbGUpLnB0cikKLQotZGVmIFNJWkVPRl9QVFIodW1vZGVsKTogcmV0dXJuIHNpemVvZiAoY2FkZHJfdCkKLQotZGVmIGx3cF9nZXRkYXRhbW9kZWwodCk6IHJldHVybiBEQVRBTU9ERUxfSUxQMzIKLQotUlVTQUdFX1NFTEYgPSAwCi1SVVNBR0VfQ0hJTERSRU4gPSAtMQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2F1eHYuaAotQVRfTlVMTCA9IDAKLUFUX0lHTk9SRSA9IDEKLUFUX0VYRUNGRCA9IDIKLUFUX1BIRFIgPSAzCi1BVF9QSEVOVCA9IDQKLUFUX1BITlVNID0gNQotQVRfUEFHRVNaID0gNgotQVRfQkFTRSA9IDcKLUFUX0ZMQUdTID0gOAotQVRfRU5UUlkgPSA5Ci1BVF9EQ0FDSEVCU0laRSA9IDEwCi1BVF9JQ0FDSEVCU0laRSA9IDExCi1BVF9VQ0FDSEVCU0laRSA9IDEyCi1BVF9TVU5fVUlEID0gMjAwMAotQVRfU1VOX1JVSUQgPSAyMDAxCi1BVF9TVU5fR0lEID0gMjAwMgotQVRfU1VOX1JHSUQgPSAyMDAzCi1BVF9TVU5fTERFTEYgPSAyMDA0Ci1BVF9TVU5fTERTSERSID0gMjAwNQotQVRfU1VOX0xETkFNRSA9IDIwMDYKLUFUX1NVTl9MUEFHRVNaID0gMjAwNwotQVRfU1VOX1BMQVRGT1JNID0gMjAwOAotQVRfU1VOX0hXQ0FQID0gMjAwOQotQVRfU1VOX0lGTFVTSCA9IDIwMTAKLUFUX1NVTl9DUFUgPSAyMDExCi1BVF9TVU5fRU1VTF9FTlRSWSA9IDIwMTIKLUFUX1NVTl9FTVVMX0VYRUNGRCA9IDIwMTMKLUFUX1NVTl9FWEVDTkFNRSA9IDIwMTQKLUFUX1NVTl9NTVUgPSAyMDE1Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZXJybm8uaAotRVBFUk0gPSAxCi1FTk9FTlQgPSAyCi1FU1JDSCA9IDMKLUVJTlRSID0gNAotRUlPID0gNQotRU5YSU8gPSA2Ci1FMkJJRyA9IDcKLUVOT0VYRUMgPSA4Ci1FQkFERiA9IDkKLUVDSElMRCA9IDEwCi1FQUdBSU4gPSAxMQotRU5PTUVNID0gMTIKLUVBQ0NFUyA9IDEzCi1FRkFVTFQgPSAxNAotRU5PVEJMSyA9IDE1Ci1FQlVTWSA9IDE2Ci1FRVhJU1QgPSAxNwotRVhERVYgPSAxOAotRU5PREVWID0gMTkKLUVOT1RESVIgPSAyMAotRUlTRElSID0gMjEKLUVJTlZBTCA9IDIyCi1FTkZJTEUgPSAyMwotRU1GSUxFID0gMjQKLUVOT1RUWSA9IDI1Ci1FVFhUQlNZID0gMjYKLUVGQklHID0gMjcKLUVOT1NQQyA9IDI4Ci1FU1BJUEUgPSAyOQotRVJPRlMgPSAzMAotRU1MSU5LID0gMzEKLUVQSVBFID0gMzIKLUVET00gPSAzMwotRVJBTkdFID0gMzQKLUVOT01TRyA9IDM1Ci1FSURSTSA9IDM2Ci1FQ0hSTkcgPSAzNwotRUwyTlNZTkMgPSAzOAotRUwzSExUID0gMzkKLUVMM1JTVCA9IDQwCi1FTE5STkcgPSA0MQotRVVOQVRDSCA9IDQyCi1FTk9DU0kgPSA0MwotRUwySExUID0gNDQKLUVERUFETEsgPSA0NQotRU5PTENLID0gNDYKLUVDQU5DRUxFRCA9IDQ3Ci1FTk9UU1VQID0gNDgKLUVEUVVPVCA9IDQ5Ci1FQkFERSA9IDUwCi1FQkFEUiA9IDUxCi1FWEZVTEwgPSA1MgotRU5PQU5PID0gNTMKLUVCQURSUUMgPSA1NAotRUJBRFNMVCA9IDU1Ci1FREVBRExPQ0sgPSA1NgotRUJGT05UID0gNTcKLUVPV05FUkRFQUQgPSA1OAotRU5PVFJFQ09WRVJBQkxFID0gNTkKLUVOT1NUUiA9IDYwCi1FTk9EQVRBID0gNjEKLUVUSU1FID0gNjIKLUVOT1NSID0gNjMKLUVOT05FVCA9IDY0Ci1FTk9QS0cgPSA2NQotRVJFTU9URSA9IDY2Ci1FTk9MSU5LID0gNjcKLUVBRFYgPSA2OAotRVNSTU5UID0gNjkKLUVDT01NID0gNzAKLUVQUk9UTyA9IDcxCi1FTE9DS1VOTUFQUEVEID0gNzIKLUVOT1RBQ1RJVkUgPSA3MwotRU1VTFRJSE9QID0gNzQKLUVCQURNU0cgPSA3NwotRU5BTUVUT09MT05HID0gNzgKLUVPVkVSRkxPVyA9IDc5Ci1FTk9UVU5JUSA9IDgwCi1FQkFERkQgPSA4MQotRVJFTUNIRyA9IDgyCi1FTElCQUNDID0gODMKLUVMSUJCQUQgPSA4NAotRUxJQlNDTiA9IDg1Ci1FTElCTUFYID0gODYKLUVMSUJFWEVDID0gODcKLUVJTFNFUSA9IDg4Ci1FTk9TWVMgPSA4OQotRUxPT1AgPSA5MAotRVJFU1RBUlQgPSA5MQotRVNUUlBJUEUgPSA5MgotRU5PVEVNUFRZID0gOTMKLUVVU0VSUyA9IDk0Ci1FTk9UU09DSyA9IDk1Ci1FREVTVEFERFJSRVEgPSA5NgotRU1TR1NJWkUgPSA5NwotRVBST1RPVFlQRSA9IDk4Ci1FTk9QUk9UT09QVCA9IDk5Ci1FUFJPVE9OT1NVUFBPUlQgPSAxMjAKLUVTT0NLVE5PU1VQUE9SVCA9IDEyMQotRU9QTk9UU1VQUCA9IDEyMgotRVBGTk9TVVBQT1JUID0gMTIzCi1FQUZOT1NVUFBPUlQgPSAxMjQKLUVBRERSSU5VU0UgPSAxMjUKLUVBRERSTk9UQVZBSUwgPSAxMjYKLUVORVRET1dOID0gMTI3Ci1FTkVUVU5SRUFDSCA9IDEyOAotRU5FVFJFU0VUID0gMTI5Ci1FQ09OTkFCT1JURUQgPSAxMzAKLUVDT05OUkVTRVQgPSAxMzEKLUVOT0JVRlMgPSAxMzIKLUVJU0NPTk4gPSAxMzMKLUVOT1RDT05OID0gMTM0Ci1FU0hVVERPV04gPSAxNDMKLUVUT09NQU5ZUkVGUyA9IDE0NAotRVRJTUVET1VUID0gMTQ1Ci1FQ09OTlJFRlVTRUQgPSAxNDYKLUVIT1NURE9XTiA9IDE0NwotRUhPU1RVTlJFQUNIID0gMTQ4Ci1FV09VTERCTE9DSyA9IEVBR0FJTgotRUFMUkVBRFkgPSAxNDkKLUVJTlBST0dSRVNTID0gMTUwCi1FU1RBTEUgPSAxNTEKLVBTQVJHU1ogPSA4MAotUFNDT01TSVogPSAxNAotTUFYQ09NTEVOID0gMTYKLV9fS0VSTl9OQVVYVl9JTVBMID0gMTkKLV9fS0VSTl9OQVVYVl9JTVBMID0gMjEKLV9fS0VSTl9OQVVYVl9JTVBMID0gMjEKLVBTQVJHU1ogPSA4MAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3dhdGNocG9pbnQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gdm0vc2VnX2VudW0uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvcHlvcHMuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J1Zi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3N0YXQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotS1NUQVRfU1RSTEVOID0gMzEKLWRlZiBLU1RBVF9FTlRFUihrKTogcmV0dXJuIFwKLQotZGVmIEtTVEFUX0VYSVQoayk6IHJldHVybiBcCi0KLUtTVEFUX1RZUEVfUkFXID0gMAotS1NUQVRfVFlQRV9OQU1FRCA9IDEKLUtTVEFUX1RZUEVfSU5UUiA9IDIKLUtTVEFUX1RZUEVfSU8gPSAzCi1LU1RBVF9UWVBFX1RJTUVSID0gNAotS1NUQVRfTlVNX1RZUEVTID0gNQotS1NUQVRfRkxBR19WSVJUVUFMID0gMHgwMQotS1NUQVRfRkxBR19WQVJfU0laRSA9IDB4MDIKLUtTVEFUX0ZMQUdfV1JJVEFCTEUgPSAweDA0Ci1LU1RBVF9GTEFHX1BFUlNJU1RFTlQgPSAweDA4Ci1LU1RBVF9GTEFHX0RPUk1BTlQgPSAweDEwCi1LU1RBVF9GTEFHX0lOVkFMSUQgPSAweDIwCi1LU1RBVF9SRUFEID0gMAotS1NUQVRfV1JJVEUgPSAxCi1LU1RBVF9EQVRBX0NIQVIgPSAwCi1LU1RBVF9EQVRBX0lOVDMyID0gMQotS1NUQVRfREFUQV9VSU5UMzIgPSAyCi1LU1RBVF9EQVRBX0lOVDY0ID0gMwotS1NUQVRfREFUQV9VSU5UNjQgPSA0Ci1LU1RBVF9EQVRBX0xPTkcgPSBLU1RBVF9EQVRBX0lOVDMyCi1LU1RBVF9EQVRBX1VMT05HID0gS1NUQVRfREFUQV9VSU5UMzIKLUtTVEFUX0RBVEFfTE9ORyA9IEtTVEFUX0RBVEFfSU5UNjQKLUtTVEFUX0RBVEFfVUxPTkcgPSBLU1RBVF9EQVRBX1VJTlQ2NAotS1NUQVRfREFUQV9MT05HID0gNwotS1NUQVRfREFUQV9VTE9ORyA9IDgKLUtTVEFUX0RBVEFfTE9OR0xPTkcgPSBLU1RBVF9EQVRBX0lOVDY0Ci1LU1RBVF9EQVRBX1VMT05HTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDY0Ci1LU1RBVF9EQVRBX0ZMT0FUID0gNQotS1NUQVRfREFUQV9ET1VCTEUgPSA2Ci1LU1RBVF9JTlRSX0hBUkQgPSAwCi1LU1RBVF9JTlRSX1NPRlQgPSAxCi1LU1RBVF9JTlRSX1dBVENIRE9HID0gMgotS1NUQVRfSU5UUl9TUFVSSU9VUyA9IDMKLUtTVEFUX0lOVFJfTVVMVFNWQyA9IDQKLUtTVEFUX05VTV9JTlRSUyA9IDUKLUJfQlVTWSA9IDB4MDAwMQotQl9ET05FID0gMHgwMDAyCi1CX0VSUk9SID0gMHgwMDA0Ci1CX1BBR0VJTyA9IDB4MDAxMAotQl9QSFlTID0gMHgwMDIwCi1CX1JFQUQgPSAweDAwNDAKLUJfV1JJVEUgPSAweDAxMDAKLUJfS0VSTkJVRiA9IDB4MDAwOAotQl9XQU5URUQgPSAweDAwODAKLUJfQUdFID0gMHgwMDAyMDAKLUJfQVNZTkMgPSAweDAwMDQwMAotQl9ERUxXUkkgPSAweDAwMDgwMAotQl9TVEFMRSA9IDB4MDAxMDAwCi1CX0RPTlRORUVEID0gMHgwMDIwMDAKLUJfUkVNQVBQRUQgPSAweDAwNDAwMAotQl9GUkVFID0gMHgwMDgwMDAKLUJfSU5WQUwgPSAweDAxMDAwMAotQl9GT1JDRSA9IDB4MDIwMDAwCi1CX0hFQUQgPSAweDA0MDAwMAotQl9OT0NBQ0hFID0gMHgwODAwMDAKLUJfVFJVTkMgPSAweDEwMDAwMAotQl9TSEFET1cgPSAweDIwMDAwMAotQl9SRVRSWVdSSSA9IDB4NDAwMDAwCi1kZWYgbm90YXZhaWwoYnApOiByZXR1cm4gXAotCi1kZWYgQldSSVRFKGJwKTogcmV0dXJuIFwKLQotZGVmIEJXUklURTIoYnApOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYWlvX3JlcS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWlvLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVdQX05PV0FUQ0ggPSAweDAxCi1XUF9TRVRQUk9UID0gMHgwMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVyLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9USU1FUl9NQVggPSAzMgotSVRMS19MT0NLRUQgPSAweDAxCi1JVExLX1dBTlRFRCA9IDB4MDIKLUlUTEtfUkVNT1ZFID0gMHgwNAotSVRfUEVSTFdQID0gMHgwMQotSVRfU0lHTkFMID0gMHgwMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3V0cmFwLmgKLVVUX0lOU1RSVUNUSU9OX0RJU0FCTEVEID0gMQotVVRfSU5TVFJVQ1RJT05fRVJST1IgPSAyCi1VVF9JTlNUUlVDVElPTl9QUk9URUNUSU9OID0gMwotVVRfSUxMVFJBUF9JTlNUUlVDVElPTiA9IDQKLVVUX0lMTEVHQUxfSU5TVFJVQ1RJT04gPSA1Ci1VVF9QUklWSUxFR0VEX09QQ09ERSA9IDYKLVVUX0ZQX0RJU0FCTEVEID0gNwotVVRfRlBfRVhDRVBUSU9OX0lFRUVfNzU0ID0gOAotVVRfRlBfRVhDRVBUSU9OX09USEVSID0gOQotVVRfVEFHX09WRVJGTE9XID0gMTAKLVVUX0RJVklTSU9OX0JZX1pFUk8gPSAxMQotVVRfREFUQV9FWENFUFRJT04gPSAxMgotVVRfREFUQV9FUlJPUiA9IDEzCi1VVF9EQVRBX1BST1RFQ1RJT04gPSAxNAotVVRfTUVNX0FERFJFU1NfTk9UX0FMSUdORUQgPSAxNQotVVRfUFJJVklMRUdFRF9BQ1RJT04gPSAxNgotVVRfQVNZTkNfREFUQV9FUlJPUiA9IDE3Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzE2ID0gMTgKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMTcgPSAxOQotVVRfVFJBUF9JTlNUUlVDVElPTl8xOCA9IDIwCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzE5ID0gMjEKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjAgPSAyMgotVVRfVFJBUF9JTlNUUlVDVElPTl8yMSA9IDIzCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzIyID0gMjQKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjMgPSAyNQotVVRfVFJBUF9JTlNUUlVDVElPTl8yNCA9IDI2Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI1ID0gMjcKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjYgPSAyOAotVVRfVFJBUF9JTlNUUlVDVElPTl8yNyA9IDI5Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI4ID0gMzAKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjkgPSAzMQotVVRfVFJBUF9JTlNUUlVDVElPTl8zMCA9IDMyCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzMxID0gMzMKLVVUUkFQX1Y4UF9GUF9ESVNBQkxFRCA9IFVUX0ZQX0RJU0FCTEVECi1VVFJBUF9WOFBfTUVNX0FERFJFU1NfTk9UX0FMSUdORUQgPSBVVF9NRU1fQUREUkVTU19OT1RfQUxJR05FRAotVVRfUFJFQ0lTRV9NQVhUUkFQUyA9IDMzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcmVmc3RyLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90YXNrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVRBU0tfTk9STUFMID0gMHgwCi1UQVNLX0ZJTkFMID0gMHgxCi1UQVNLX0ZJTkFMSVRZID0gMHgxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaWRfc3BhY2UuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3ZtZW0uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotVk1fU0xFRVAgPSAweDAwMDAwMDAwCi1WTV9OT1NMRUVQID0gMHgwMDAwMDAwMQotVk1fUEFOSUMgPSAweDAwMDAwMDAyCi1WTV9LTUZMQUdTID0gMHgwMDAwMDBmZgotVk1fQkVTVEZJVCA9IDB4MDAwMDAxMDAKLVZNRU1fQUxMT0MgPSAweDAxCi1WTUVNX0ZSRUUgPSAweDAyCi1WTUVNX1NQQU4gPSAweDEwCi1JU1BfTk9STUFMID0gMHgwCi1JU1BfUkVTRVJWRSA9IDB4MQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2V4YWNjdF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rbWVtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUtNX1NMRUVQID0gMHgwMDAwCi1LTV9OT1NMRUVQID0gMHgwMDAxCi1LTV9QQU5JQyA9IDB4MDAwMgotS01fVk1GTEFHUyA9IDB4MDBmZgotS01fRkxBR1MgPSAweGZmZmYKLUtNQ19OT1RPVUNIID0gMHgwMDAxMDAwMAotS01DX05PREVCVUcgPSAweDAwMDIwMDAwCi1LTUNfTk9NQUdBWklORSA9IDB4MDAwNDAwMDAKLUtNQ19OT0hBU0ggPSAweDAwMDgwMDAwCi1LTUNfUUNBQ0hFID0gMHgwMDEwMDAwMAotX0lTQV9JQTMyID0gMAotX0lTQV9JQTY0ID0gMQotU1NMRUVQID0gMQotU1JVTiA9IDIKLVNaT01CID0gMwotU1NUT1AgPSA0Ci1TSURMID0gNQotU09OUFJPQyA9IDYKLUNMRFBFTkQgPSAweDAwMDEKLUNMRENPTlQgPSAweDAwMDIKLVNTWVMgPSAweDAwMDAwMDAxCi1TVFJDID0gMHgwMDAwMDAwMgotU0xPQUQgPSAweDAwMDAwMDA4Ci1TTE9DSyA9IDB4MDAwMDAwMTAKLVNQUkVYRUMgPSAweDAwMDAwMDIwCi1TUFJPQ1RSID0gMHgwMDAwMDA0MAotU1BSRk9SSyA9IDB4MDAwMDAwODAKLVNLSUxMRUQgPSAweDAwMDAwMTAwCi1TVUxPQUQgPSAweDAwMDAwMjAwCi1TUlVOTENMID0gMHgwMDAwMDQwMAotU0JQVEFESiA9IDB4MDAwMDA4MDAKLVNLSUxMQ0wgPSAweDAwMDAxMDAwCi1TT1dFVVBDID0gMHgwMDAwMjAwMAotU0VYRUNFRCA9IDB4MDAwMDQwMDAKLVNQQVNZTkMgPSAweDAwMDA4MDAwCi1TSkNUTCA9IDB4MDAwMTAwMDAKLVNOT1dBSVQgPSAweDAwMDIwMDAwCi1TVkZPUksgPSAweDAwMDQwMDAwCi1TVkZXQUlUID0gMHgwMDA4MDAwMAotRVhJVExXUFMgPSAweDAwMTAwMDAwCi1IT0xERk9SSyA9IDB4MDAyMDAwMDAKLVNXQUlUU0lHID0gMHgwMDQwMDAwMAotSE9MREZPUksxID0gMHgwMDgwMDAwMAotQ09SRURVTVAgPSAweDAxMDAwMDAwCi1TTVNBQ0NUID0gMHgwMjAwMDAwMAotQVNMV1AgPSAweDA0MDAwMDAwCi1TUFJMT0NLID0gMHgwODAwMDAwMAotTk9DRCA9IDB4MTAwMDAwMDAKLUhPTERXQVRDSCA9IDB4MjAwMDAwMDAKLVNNU0ZPUksgPSAweDQwMDAwMDAwCi1TRE9DT1JFID0gMHg4MDAwMDAwMAotRk9SUkVBTCA9IDAKLUpVU1RMT09LSU5HID0gMQotU1VTUEVORF9OT1JNQUwgPSAwCi1TVVNQRU5EX1BBVVNFID0gMQotTk9DTEFTUyA9ICgtMSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGl0eXBlcy5oCi1ERElfREVWSUNFX0FUVFJfVjAgPSAweDAwMDEKLURESV9ORVZFUlNXQVBfQUNDID0gMHgwMAotRERJX1NUUlVDVFVSRV9MRV9BQ0MgPSAweDAxCi1ERElfU1RSVUNUVVJFX0JFX0FDQyA9IDB4MDIKLURESV9TVFJJQ1RPUkRFUl9BQ0MgPSAweDAwCi1ERElfVU5PUkRFUkVEX09LX0FDQyA9IDB4MDEKLURESV9NRVJHSU5HX09LX0FDQyA9IDB4MDIKLURESV9MT0FEQ0FDSElOR19PS19BQ0MgPSAweDAzCi1ERElfU1RPUkVDQUNISU5HX09LX0FDQyA9IDB4MDQKLURESV9EQVRBX1NaMDFfQUNDID0gMQotRERJX0RBVEFfU1owMl9BQ0MgPSAyCi1ERElfREFUQV9TWjA0X0FDQyA9IDQKLURESV9EQVRBX1NaMDhfQUNDID0gOAotVkVSU19BQ0NIREwgPSAweDAwMDEKLURFVklEX05PTkUgPSAwCi1ERVZJRF9TQ1NJM19XV04gPSAxCi1ERVZJRF9TQ1NJX1NFUklBTCA9IDIKLURFVklEX0ZBQiA9IDMKLURFVklEX0VOQ0FQID0gNAotREVWSURfTUFYVFlQRSA9IDQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92YXJhcmdzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92YV9saXN0LmgKLVZBX0FMSUdOID0gOAotZGVmIF9BUkdTSVpFT0YodCk6IHJldHVybiAoKHNpemVvZiAodCkgKyBWQV9BTElHTiAtIDEpICYgfihWQV9BTElHTiAtIDEpKQotCi1WQV9BTElHTiA9IDgKLWRlZiBfQVJHU0laRU9GKHQpOiByZXR1cm4gKChzaXplb2YgKHQpICsgVkFfQUxJR04gLSAxKSAmIH4oVkFfQUxJR04gLSAxKSkKLQotTlNZU0NBTEwgPSAyNTYKLVNFXzMyUlZBTDEgPSAweDAKLVNFXzMyUlZBTDIgPSAweDEKLVNFXzY0UlZBTCA9IDB4MgotU0VfUlZBTF9NQVNLID0gMHgzCi1TRV9MT0FEQUJMRSA9IDB4MDgKLVNFX0xPQURFRCA9IDB4MTAKLVNFX05PVU5MT0FEID0gMHgyMAotU0VfQVJHQyA9IDB4NDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZXZvcHMuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BvbGwuaAotUE9MTElOID0gMHgwMDAxCi1QT0xMUFJJID0gMHgwMDAyCi1QT0xMT1VUID0gMHgwMDA0Ci1QT0xMUkROT1JNID0gMHgwMDQwCi1QT0xMV1JOT1JNID0gUE9MTE9VVAotUE9MTFJEQkFORCA9IDB4MDA4MAotUE9MTFdSQkFORCA9IDB4MDEwMAotUE9MTE5PUk0gPSBQT0xMUkROT1JNCi1QT0xMRVJSID0gMHgwMDA4Ci1QT0xMSFVQID0gMHgwMDEwCi1QT0xMTlZBTCA9IDB4MDAyMAotUE9MTFJFTU9WRSA9IDB4MDgwMAotUE9MTFJEREFUQSA9IDB4MDIwMAotUE9MTE5PRVJSID0gMHgwNDAwCi1QT0xMQ0xPU0VEID0gMHg4MDAwCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9hcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9zZWcuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Zub2RlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVZST09UID0gMHgwMQotVk5PQ0FDSEUgPSAweDAyCi1WTk9NQVAgPSAweDA0Ci1WRFVQID0gMHgwOAotVk5PU1dBUCA9IDB4MTAKLVZOT01PVU5UID0gMHgyMAotVklTU1dBUCA9IDB4NDAKLVZTV0FQTElLRSA9IDB4ODAKLVZWRlNMT0NLID0gMHgxMDAKLVZWRlNXQUlUID0gMHgyMDAKLVZWTUxPQ0sgPSAweDQwMAotVkRJUk9QRU4gPSAweDgwMAotVlZNRVhFQyA9IDB4MTAwMAotVlBYRlMgPSAweDIwMDAKLUFUX1RZUEUgPSAweDAwMDEKLUFUX01PREUgPSAweDAwMDIKLUFUX1VJRCA9IDB4MDAwNAotQVRfR0lEID0gMHgwMDA4Ci1BVF9GU0lEID0gMHgwMDEwCi1BVF9OT0RFSUQgPSAweDAwMjAKLUFUX05MSU5LID0gMHgwMDQwCi1BVF9TSVpFID0gMHgwMDgwCi1BVF9BVElNRSA9IDB4MDEwMAotQVRfTVRJTUUgPSAweDAyMDAKLUFUX0NUSU1FID0gMHgwNDAwCi1BVF9SREVWID0gMHgwODAwCi1BVF9CTEtTSVpFID0gMHgxMDAwCi1BVF9OQkxPQ0tTID0gMHgyMDAwCi1BVF9WQ09ERSA9IDB4NDAwMAotQVRfQUxMID0gKEFUX1RZUEV8QVRfTU9ERXxBVF9VSUR8QVRfR0lEfEFUX0ZTSUR8QVRfTk9ERUlEfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX05MSU5LfEFUX1NJWkV8QVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUV8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfUkRFVnxBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1BVF9TVEFUID0gKEFUX01PREV8QVRfVUlEfEFUX0dJRHxBVF9GU0lEfEFUX05PREVJRHxBVF9OTElOS3xcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9TSVpFfEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FfEFUX1JERVYpCi1BVF9USU1FUyA9IChBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRSkKLUFUX05PU0VUID0gKEFUX05MSU5LfEFUX1JERVZ8QVRfRlNJRHxBVF9OT0RFSUR8QVRfVFlQRXxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1WU1VJRCA9IDBvNDAwMAotVlNHSUQgPSAwbzIwMDAKLVZTVlRYID0gMG8xMDAwCi1WUkVBRCA9IDBvMDQwMAotVldSSVRFID0gMG8wMjAwCi1WRVhFQyA9IDBvMDEwMAotTU9ERU1BU0sgPSAwbzc3NzcKLVBFUk1NQVNLID0gMG8wNzc3Ci1kZWYgTUFORE1PREUobW9kZSk6IHJldHVybiAoKChtb2RlKSAmIChWU0dJRHwoVkVYRUM+PjMpKSkgPT0gVlNHSUQpCi0KLVZTQV9BQ0wgPSAweDAwMDEKLVZTQV9BQ0xDTlQgPSAweDAwMDIKLVZTQV9ERkFDTCA9IDB4MDAwNAotVlNBX0RGQUNMQ05UID0gMHgwMDA4Ci1MT09LVVBfRElSID0gMHgwMQotRFVNUF9BTExPQyA9IDAKLURVTVBfRlJFRSA9IDEKLURVTVBfU0NBTiA9IDIKLUFUVFJfVVRJTUUgPSAweDAxCi1BVFRSX0VYRUMgPSAweDAyCi1BVFRSX0NPTU0gPSAweDA0Ci1BVFRSX0hJTlQgPSAweDA4Ci1BVFRSX1JFQUwgPSAweDEwCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9mYXVsdGNvZGUuaAotRkNfSFdFUlIgPSAweDEKLUZDX0FMSUdOID0gMHgyCi1GQ19PQkpFUlIgPSAweDMKLUZDX1BST1QgPSAweDQKLUZDX05PTUFQID0gMHg1Ci1GQ19OT1NVUFBPUlQgPSAweDYKLWRlZiBGQ19NQUtFX0VSUihlKTogcmV0dXJuICgoKGUpIDw8IDgpIHwgRkNfT0JKRVJSKQotCi1kZWYgRkNfQ09ERShmYyk6IHJldHVybiAoKGZjKSAmIDB4ZmYpCi0KLWRlZiBGQ19FUlJOTyhmYyk6IHJldHVybiAoKHVuc2lnbmVkKShmYykgPj4gOCkKLQotCi0jIEluY2x1ZGVkIGZyb20gdm0vaGF0LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHZtL3BhZ2UuaAotUEFHRV9IQVNIQVZFTEVOID0gNAotUEFHRV9IQVNIVlBTSElGVCA9IDYKLVBHX0VYQ0wgPSAweDAwMDEKLVBHX1dBSVQgPSAweDAwMDIKLVBHX1BIWVNDT05USUcgPSAweDAwMDQKLVBHX01BVENIX0NPTE9SID0gMHgwMDA4Ci1QR19OT1JFTE9DID0gMHgwMDEwCi1QR19GUkVFX0xJU1QgPSAxCi1QR19DQUNIRV9MSVNUID0gMgotUEdfTElTVF9UQUlMID0gMAotUEdfTElTVF9IRUFEID0gMQotZGVmIHBhZ2VfbmV4dF9yYXcoUFApOiByZXR1cm4gcGFnZV9uZXh0bl9yYXcoKFBQKSwgMSkKLQotUEFHRV9JT19JTlVTRSA9IDB4MQotUEFHRV9JT19XQU5URUQgPSAweDIKLVBHUkVMX05PVFJFTCA9IDB4MQotUEdSRUxfQ0xFQU4gPSAweDIKLVBHUkVMX01PRCA9IDB4MwotUF9GUkVFID0gMHg4MAotUF9OT1JFTE9DID0gMHg0MAotZGVmIFBQX1NFVEFHRUQocHApOiByZXR1cm4gQVNTRVJUKFBQX0lTQUdFRChwcCkpCi0KLUhBVF9GTEFHU19SRVNWID0gMHhGRjAwMDAwMAotSEFUX0xPQUQgPSAweDAwCi1IQVRfTE9BRF9MT0NLID0gMHgwMQotSEFUX0xPQURfQURWID0gMHgwNAotSEFUX0xPQURfQ09OVElHID0gMHgxMAotSEFUX0xPQURfTk9DT05TSVNUID0gMHgyMAotSEFUX0xPQURfU0hBUkUgPSAweDQwCi1IQVRfTE9BRF9SRU1BUCA9IDB4ODAKLUhBVF9SRUxPQURfU0hBUkUgPSAweDEwMAotSEFUX1BMQVRfQVRUUl9NQVNLID0gMHhGMDAwMDAKLUhBVF9QUk9UX01BU0sgPSAweDBGCi1IQVRfTk9GQVVMVCA9IDB4MTAKLUhBVF9OT1NZTkMgPSAweDIwCi1IQVRfU1RSSUNUT1JERVIgPSAweDAwMDAKLUhBVF9VTk9SREVSRURfT0sgPSAweDAxMDAKLUhBVF9NRVJHSU5HX09LID0gMHgwMjAwCi1IQVRfTE9BRENBQ0hJTkdfT0sgPSAweDAzMDAKLUhBVF9TVE9SRUNBQ0hJTkdfT0sgPSAweDA0MDAKLUhBVF9PUkRFUl9NQVNLID0gMHgwNzAwCi1IQVRfTkVWRVJTV0FQID0gMHgwMDAwCi1IQVRfU1RSVUNUVVJFX0JFID0gMHgxMDAwCi1IQVRfU1RSVUNUVVJFX0xFID0gMHgyMDAwCi1IQVRfRU5ESUFOX01BU0sgPSAweDMwMDAKLUhBVF9DT1cgPSAweDAwMDEKLUhBVF9VTkxPQUQgPSAweDAwCi1IQVRfVU5MT0FEX05PU1lOQyA9IDB4MDIKLUhBVF9VTkxPQURfVU5MT0NLID0gMHgwNAotSEFUX1VOTE9BRF9PVEhFUiA9IDB4MDgKLUhBVF9VTkxPQURfVU5NQVAgPSAweDEwCi1IQVRfU1lOQ19ET05UWkVSTyA9IDB4MDAKLUhBVF9TWU5DX1pFUk9STSA9IDB4MDEKLUhBVF9TWU5DX1NUT1BPTl9SRUYgPSAweDAyCi1IQVRfU1lOQ19TVE9QT05fTU9EID0gMHgwNAotSEFUX1NZTkNfU1RPUE9OX1JNID0gKEhBVF9TWU5DX1NUT1BPTl9SRUYgfCBIQVRfU1lOQ19TVE9QT05fTU9EKQotSEFUX0RVUF9BTEwgPSAxCi1IQVRfRFVQX0NPVyA9IDIKLUhBVF9NQVAgPSAweDAwCi1IQVRfQURWX1BHVU5MT0FEID0gMHgwMAotSEFUX0ZPUkNFX1BHVU5MT0FEID0gMHgwMQotUF9NT0QgPSAweDEKLVBfUkVGID0gMHgyCi1QX1JPID0gMHg0Ci1kZWYgaGF0X2lzbW9kKHBwKTogcmV0dXJuIChoYXRfcGFnZV9nZXRhdHRyKHBwLCBQX01PRCkpCi0KLWRlZiBoYXRfaXNyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX2dldGF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9pc3JvKHBwKTogcmV0dXJuIChoYXRfcGFnZV9nZXRhdHRyKHBwLCBQX1JPKSkKLQotZGVmIGhhdF9zZXRtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfTU9EKSkKLQotZGVmIGhhdF9zZXRyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9zZXRyZWZtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfUkVGfFBfTU9EKSkKLQotZGVmIGhhdF9jbHJtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfTU9EKSkKLQotZGVmIGhhdF9jbHJyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9jbHJyZWZtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfUkVGfFBfTU9EKSkKLQotZGVmIGhhdF9wYWdlX2lzX21hcHBlZChwcCk6IHJldHVybiAoaGF0X3BhZ2VfZ2V0c2hhcmUocHApKQotCi1IQVRfRE9OVEFMTE9DID0gMAotSEFUX0FMTE9DID0gMQotSFJNX1NISUZUID0gNAotSFJNX0JZVEVTID0gKDEgPDwgSFJNX1NISUZUKQotSFJNX1BBR0VTID0gKChIUk1fQllURVMgKiBOQkJZKSAvIDIpCi1IUk1fUEdQRVJCWVRFID0gKE5CQlkvMikKLUhSTV9QR0JZVEVNQVNLID0gKEhSTV9QR1BFUkJZVEUtMSkKLUhSTV9IQVNIU0laRSA9IDB4MjAwCi1IUk1fSEFTSE1BU0sgPSAoSFJNX0hBU0hTSVpFIC0gMSkKLUhSTV9CTElTVF9JTkNSID0gMHgyMDAKLUhSTV9TV1NNT05JRCA9IDEKLVNTTF9OTEVWRUxTID0gNAotU1NMX0JGQUNUT1IgPSA0Ci1TU0xfTE9HMkJGID0gMgotU0VHUF9BU1lOQ19GTFVTSCA9IDB4MQotU0VHUF9GT1JDRV9XSVJFRCA9IDB4MgotU0VHUF9TVUNDRVNTID0gMAotU0VHUF9GQUlMID0gMQotZGVmIHNlZ19wYWdlcyhzZWcpOiByZXR1cm4gXAotCi1JRV9OT01FTSA9IC0xCi1BU19QQUdMQ0sgPSAweDgwCi1BU19DTEFJTUdBUCA9IDB4NDAKLUFTX1VOTUFQV0FJVCA9IDB4MjAKLWRlZiBBU19UWVBFXzY0QklUKGFzXyk6IHJldHVybiBcCi0KLUFTX0xSRVBfTElOS0VETElTVCA9IDAKLUFTX0xSRVBfU0tJUExJU1QgPSAxCi1BU19NVVRBVElPTl9USFJFU0ggPSAyMjUKLUFIX0RJUiA9IDB4MQotQUhfTE8gPSAweDAKLUFIX0hJID0gMHgxCi1BSF9DT05UQUlOID0gMHgyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGRpZG1hcmVxLmgKLURNQV9VTklUXzggPSAxCi1ETUFfVU5JVF8xNiA9IDIKLURNQV9VTklUXzMyID0gNAotRE1BTElNX1ZFUjAgPSAoKDB4ODYwMDAwMDApICsgMCkKLURESV9ETUFfRk9SQ0VfUEhZU0lDQUwgPSAweDAxMDAKLURNQV9BVFRSX1YwID0gMAotRE1BX0FUVFJfVkVSU0lPTiA9IERNQV9BVFRSX1YwCi1ERElfRE1BX0NBTExCQUNLX1JVTk9VVCA9IDAKLURESV9ETUFfQ0FMTEJBQ0tfRE9ORSA9IDEKLURESV9ETUFfV1JJVEUgPSAweDAwMDEKLURESV9ETUFfUkVBRCA9IDB4MDAwMgotRERJX0RNQV9SRFdSID0gKERESV9ETUFfUkVBRCB8IERESV9ETUFfV1JJVEUpCi1ERElfRE1BX1JFRFpPTkUgPSAweDAwMDQKLURESV9ETUFfUEFSVElBTCA9IDB4MDAwOAotRERJX0RNQV9DT05TSVNURU5UID0gMHgwMDEwCi1ERElfRE1BX0VYQ0xVU0lWRSA9IDB4MDAyMAotRERJX0RNQV9TVFJFQU1JTkcgPSAweDAwNDAKLURESV9ETUFfU0JVU182NEJJVCA9IDB4MjAwMAotRERJX0RNQV9NQVBQRUQgPSAwCi1ERElfRE1BX01BUE9LID0gMAotRERJX0RNQV9QQVJUSUFMX01BUCA9IDEKLURESV9ETUFfRE9ORSA9IDIKLURESV9ETUFfTk9SRVNPVVJDRVMgPSAtMQotRERJX0RNQV9OT01BUFBJTkcgPSAtMgotRERJX0RNQV9UT09CSUcgPSAtMwotRERJX0RNQV9UT09TTUFMTCA9IC00Ci1ERElfRE1BX0xPQ0tFRCA9IC01Ci1ERElfRE1BX0JBRExJTUlUUyA9IC02Ci1ERElfRE1BX1NUQUxFID0gLTcKLURESV9ETUFfQkFEQVRUUiA9IC04Ci1ERElfRE1BX0lOVVNFID0gLTkKLURESV9ETUFfU1lOQ19GT1JERVYgPSAweDAKLURESV9ETUFfU1lOQ19GT1JDUFUgPSAweDEKLURESV9ETUFfU1lOQ19GT1JLRVJORUwgPSAweDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGltYXByZXEuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21tYW4uaAotUFJPVF9SRUFEID0gMHgxCi1QUk9UX1dSSVRFID0gMHgyCi1QUk9UX0VYRUMgPSAweDQKLVBST1RfVVNFUiA9IDB4OAotUFJPVF9aRk9EID0gKFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMgfCBQUk9UX1VTRVIpCi1QUk9UX0FMTCA9IChQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwgUFJPVF9FWEVDIHwgUFJPVF9VU0VSKQotUFJPVF9OT05FID0gMHgwCi1NQVBfU0hBUkVEID0gMQotTUFQX1BSSVZBVEUgPSAyCi1NQVBfVFlQRSA9IDB4ZgotTUFQX0ZJWEVEID0gMHgxMAotTUFQX05PUkVTRVJWRSA9IDB4NDAKLU1BUF9BTk9OID0gMHgxMDAKLU1BUF9BTk9OWU1PVVMgPSBNQVBfQU5PTgotTUFQX1JFTkFNRSA9IDB4MjAKLVBST0NfVEVYVCA9IChQUk9UX0VYRUMgfCBQUk9UX1JFQUQpCi1QUk9DX0RBVEEgPSAoUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfRVhFQykKLVNIQVJFRCA9IDB4MTAKLVBSSVZBVEUgPSAweDIwCi1WQUxJRF9BVFRSID0gKFBST1RfUkVBRHxQUk9UX1dSSVRFfFBST1RfRVhFQ3xTSEFSRUR8UFJJVkFURSkKLVBST1RfRVhDTCA9IDB4MjAKLV9NQVBfTE9XMzIgPSAweDgwCi1fTUFQX05FVyA9IDB4ODAwMDAwMDAKLWZyb20gVFlQRVMgaW1wb3J0ICoKLU1BRFZfTk9STUFMID0gMAotTUFEVl9SQU5ET00gPSAxCi1NQURWX1NFUVVFTlRJQUwgPSAyCi1NQURWX1dJTExORUVEID0gMwotTUFEVl9ET05UTkVFRCA9IDQKLU1BRFZfRlJFRSA9IDUKLU1TX09MRFNZTkMgPSAweDAKLU1TX1NZTkMgPSAweDQKLU1TX0FTWU5DID0gMHgxCi1NU19JTlZBTElEQVRFID0gMHgyCi1NQ19TWU5DID0gMQotTUNfTE9DSyA9IDIKLU1DX1VOTE9DSyA9IDMKLU1DX0FEVklTRSA9IDQKLU1DX0xPQ0tBUyA9IDUKLU1DX1VOTE9DS0FTID0gNgotTUNMX0NVUlJFTlQgPSAweDEKLU1DTF9GVVRVUkUgPSAweDIKLURESV9NQVBfVkVSU0lPTiA9IDB4MDAwMQotRERJX01GX1VTRVJfTUFQUElORyA9IDB4MQotRERJX01GX0tFUk5FTF9NQVBQSU5HID0gMHgyCi1ERElfTUZfREVWSUNFX01BUFBJTkcgPSAweDQKLURESV9NRV9HRU5FUklDID0gKC0xKQotRERJX01FX1VOSU1QTEVNRU5URUQgPSAoLTIpCi1ERElfTUVfTk9SRVNPVVJDRVMgPSAoLTMpCi1ERElfTUVfVU5TVVBQT1JURUQgPSAoLTQpCi1ERElfTUVfUkVHU1BFQ19SQU5HRSA9ICgtNSkKLURESV9NRV9STlVNQkVSX1JBTkdFID0gKC02KQotRERJX01FX0lOVkFMID0gKC03KQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaXByb3BkZWZzLmgKLWRlZiBDRUxMU18xMjc1X1RPX0JZVEVTKG4pOiByZXR1cm4gKChuKSAqIFBST1BfMTI3NV9DRUxMX1NJWkUpCi0KLWRlZiBCWVRFU19UT18xMjc1X0NFTExTKG4pOiByZXR1cm4gKChuKSAvIFBST1BfMTI3NV9DRUxMX1NJWkUpCi0KLVBIX0ZST01fUFJPTSA9IDB4MDEKLURESV9QUk9QX1NVQ0NFU1MgPSAwCi1ERElfUFJPUF9OT1RfRk9VTkQgPSAxCi1ERElfUFJPUF9VTkRFRklORUQgPSAyCi1ERElfUFJPUF9OT19NRU1PUlkgPSAzCi1ERElfUFJPUF9JTlZBTF9BUkcgPSA0Ci1ERElfUFJPUF9CVUZfVE9PX1NNQUxMID0gNQotRERJX1BST1BfQ0FOTk9UX0RFQ09ERSA9IDYKLURESV9QUk9QX0NBTk5PVF9FTkNPREUgPSA3Ci1ERElfUFJPUF9FTkRfT0ZfREFUQSA9IDgKLURESV9QUk9QX0ZPVU5EXzEyNzUgPSAyNTUKLVBST1BfMTI3NV9JTlRfU0laRSA9IDQKLURESV9QUk9QX0RPTlRQQVNTID0gMHgwMDAxCi1ERElfUFJPUF9DQU5TTEVFUCA9IDB4MDAwMgotRERJX1BST1BfU1lTVEVNX0RFRiA9IDB4MDAwNAotRERJX1BST1BfTk9UUFJPTSA9IDB4MDAwOAotRERJX1BST1BfRE9OVFNMRUVQID0gMHgwMDEwCi1ERElfUFJPUF9TVEFDS19DUkVBVEUgPSAweDAwMjAKLURESV9QUk9QX1VOREVGX0lUID0gMHgwMDQwCi1ERElfUFJPUF9IV19ERUYgPSAweDAwODAKLURESV9QUk9QX1RZUEVfSU5UID0gMHgwMTAwCi1ERElfUFJPUF9UWVBFX1NUUklORyA9IDB4MDIwMAotRERJX1BST1BfVFlQRV9CWVRFID0gMHgwNDAwCi1ERElfUFJPUF9UWVBFX0NPTVBPU0lURSA9IDB4MDgwMAotRERJX1BST1BfVFlQRV9BTlkgPSAoRERJX1BST1BfVFlQRV9JTlQgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfU1RSSU5HICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQllURSAgICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQ09NUE9TSVRFKQotRERJX1BST1BfVFlQRV9NQVNLID0gKERESV9QUk9QX1RZUEVfSU5UIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfU1RSSU5HICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQllURSAgICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQ09NUE9TSVRFKQotRERJX1JFTEFUSVZFX0FERFJFU1NJTkcgPSAicmVsYXRpdmUtYWRkcmVzc2luZyIKLURESV9HRU5FUklDX0FERFJFU1NJTkcgPSAiZ2VuZXJpYy1hZGRyZXNzaW5nIgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaWRldm1hcC5oCi1LTUVNX1BBR0VBQkxFID0gMHgxMDAKLUtNRU1fTk9OX1BBR0VBQkxFID0gMHgyMDAKLVVNRU1fTE9DS0VEID0gMHg0MDAKLVVNRU1fVFJBU0ggPSAweDgwMAotREVWTUFQX09QU19SRVYgPSAxCi1ERVZNQVBfREVGQVVMVFMgPSAweDAwCi1ERVZNQVBfTUFQUElOR19JTlZBTElEID0gMHgwMQotREVWTUFQX0FMTE9XX1JFTUFQID0gMHgwMgotREVWTUFQX1VTRV9QQUdFU0laRSA9IDB4MDQKLURFVk1BUF9TRVRVUF9GTEFHUyA9IFwKLSAgICAgICAgKERFVk1BUF9NQVBQSU5HX0lOVkFMSUQgfCBERVZNQVBfQUxMT1dfUkVNQVAgfCBERVZNQVBfVVNFX1BBR0VTSVpFKQotREVWTUFQX1NFVFVQX0RPTkUgPSAweDEwMAotREVWTUFQX0xPQ0tfSU5JVEVEID0gMHgyMDAKLURFVk1BUF9GQVVMVElORyA9IDB4NDAwCi1ERVZNQVBfTE9DS0VEID0gMHg4MDAKLURFVk1BUF9GTEFHX0xBUkdFID0gMHgxMDAwCi1ERElfVU1FTV9TTEVFUCA9IDB4MAotRERJX1VNRU1fTk9TTEVFUCA9IDB4MDEKLURESV9VTUVNX1BBR0VBQkxFID0gMHgwMgotRERJX1VNRU1fVFJBU0ggPSAweDA0Ci1ERElfVU1FTUxPQ0tfUkVBRCA9IDB4MDEKLURESV9VTUVNTE9DS19XUklURSA9IDB4MDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9uZXh1c2RlZnMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL25leHVzaW50ci5oCi1CVVNPX1JFViA9IDQKLUJVU09fUkVWXzMgPSAzCi1CVVNPX1JFVl80ID0gNAotREVWT19SRVYgPSAzCi1DQl9SRVYgPSAxCi1ERElfSURFTlRJRklFRCA9ICgwKQotRERJX05PVF9JREVOVElGSUVEID0gKC0xKQotRERJX1BST0JFX0ZBSUxVUkUgPSBFTlhJTwotRERJX1BST0JFX0RPTlRDQVJFID0gMAotRERJX1BST0JFX1BBUlRJQUwgPSAxCi1ERElfUFJPQkVfU1VDQ0VTUyA9IDIKLU1BUERFVl9SRVYgPSAxCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1EX05FVyA9IDB4MDAKLV9EX09MRCA9IDB4MDEKLURfVEFQRSA9IDB4MDgKLURfTVRTQUZFID0gMHgwMDIwCi1fRF9RTkVYVExFU1MgPSAweDAwNDAKLV9EX01UT0NTSEFSRUQgPSAweDAwODAKLURfTVRPQ0VYQ0wgPSAweDA4MDAKLURfTVRQVVRTSEFSRUQgPSAweDEwMDAKLURfTVRQRVJRID0gMHgyMDAwCi1EX01UUVBBSVIgPSAweDQwMDAKLURfTVRQRVJNT0QgPSAweDYwMDAKLURfTVRPVVRQRVJJTSA9IDB4ODAwMAotX0RfTVRDQlNIQVJFRCA9IDB4MTAwMDAKLURfTVRJTk5FUl9NT0QgPSAoRF9NVFBVVFNIQVJFRHxfRF9NVE9DU0hBUkVEfF9EX01UQ0JTSEFSRUQpCi1EX01UT1VURVJfTU9EID0gKERfTVRPQ0VYQ0wpCi1EX01QID0gRF9NVFNBRkUKLURfNjRCSVQgPSAweDIwMAotRF9TWU5DU1RSID0gMHg0MDAKLURfREVWTUFQID0gMHgxMDAKLURfSE9UUExVRyA9IDB4NAotU05EWkVSTyA9IDB4MDAxCi1TTkRQSVBFID0gMHgwMDIKLVJOT1JNID0gMHgwMDAKLVJNU0dEID0gMHgwMDEKLVJNU0dOID0gMHgwMDIKLVJNT0RFTUFTSyA9IDB4MDAzCi1SUFJPVERBVCA9IDB4MDA0Ci1SUFJPVERJUyA9IDB4MDA4Ci1SUFJPVE5PUk0gPSAweDAxMAotUlBST1RNQVNLID0gMHgwMWMKLVJGTFVTSE1BU0sgPSAweDAyMAotUkZMVVNIUENQUk9UID0gMHgwMjAKLVJFUlJOT1JNID0gMHgwMDEKLVJFUlJOT05QRVJTSVNUID0gMHgwMDIKLVJFUlJNQVNLID0gKFJFUlJOT1JNfFJFUlJOT05QRVJTSVNUKQotV0VSUk5PUk0gPSAweDAwNAotV0VSUk5PTlBFUlNJU1QgPSAweDAwOAotV0VSUk1BU0sgPSAoV0VSUk5PUk18V0VSUk5PTlBFUlNJU1QpCi1GTFVTSFIgPSAweDAxCi1GTFVTSFcgPSAweDAyCi1GTFVTSFJXID0gMHgwMwotRkxVU0hCQU5EID0gMHgwNAotTUFQSU5PSyA9IDB4MDEKLU5PTUFQSU4gPSAweDAyCi1SRU1BUE9LID0gMHgwNAotTk9SRU1BUCA9IDB4MDgKLVNfSU5QVVQgPSAweDAwMDEKLVNfSElQUkkgPSAweDAwMDIKLVNfT1VUUFVUID0gMHgwMDA0Ci1TX01TRyA9IDB4MDAwOAotU19FUlJPUiA9IDB4MDAxMAotU19IQU5HVVAgPSAweDAwMjAKLVNfUkROT1JNID0gMHgwMDQwCi1TX1dSTk9STSA9IFNfT1VUUFVUCi1TX1JEQkFORCA9IDB4MDA4MAotU19XUkJBTkQgPSAweDAxMDAKLVNfQkFORFVSRyA9IDB4MDIwMAotUlNfSElQUkkgPSAweDAxCi1TVFJVSU9fUE9TVFBPTkUgPSAweDA4Ci1TVFJVSU9fTUFQSU4gPSAweDEwCi1NU0dfSElQUkkgPSAweDAxCi1NU0dfQU5ZID0gMHgwMgotTVNHX0JBTkQgPSAweDA0Ci1NU0dfWFBHNCA9IDB4MDgKLU1TR19JUEVFSyA9IDB4MTAKLU1TR19ESVNDQVJEVEFJTCA9IDB4MjAKLU1TR19IT0xEU0lHID0gMHg0MAotTVNHX0lHTkVSUk9SID0gMHg4MAotTVNHX0RFTEFZRVJST1IgPSAweDEwMAotTVNHX0lHTkZMT1cgPSAweDIwMAotTVNHX05PTUFSSyA9IDB4NDAwCi1NT1JFQ1RMID0gMQotTU9SRURBVEEgPSAyCi1NVVhJRF9BTEwgPSAoLTEpCi1BTllNQVJLID0gMHgwMQotTEFTVE1BUksgPSAweDAyCi1fSU5GVElNID0gLTEKLUlORlRJTSA9IF9JTkZUSU0KZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9UWVBFUy5weSBiL0xpYi9wbGF0LXN1bm9zNS9UWVBFUy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE0ZTZiMS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvVFlQRVMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lzYV9kZWZzLmgKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gMTYKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDgKLV9NQVhfQUxJR05NRU5UID0gMTYKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAxCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDQKLV9ET1VCTEVfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gNAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDAKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gOAotX0xPTkdfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZmVhdHVyZV90ZXN0cy5oCi1fUE9TSVhfQ19TT1VSQ0UgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0xBUkdFRklMRV9TT1VSQ0UgPSAxCi1fRklMRV9PRkZTRVRfQklUUyA9IDY0Ci1fRklMRV9PRkZTRVRfQklUUyA9IDMyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUyA9IDEKLV9YT1BFTl9WRVJTSU9OID0gNTAwCi1fWE9QRU5fVkVSU0lPTiA9IDQKLV9YT1BFTl9WRVJTSU9OID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2h0eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50dHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF90eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X2xpbWl0cy5oCi1JTlQ4X01BWCA9ICgxMjcpCi1JTlQxNl9NQVggPSAoMzI3NjcpCi1JTlQzMl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVE1BWF9NQVggPSBJTlQzMl9NQVgKLUlOVF9MRUFTVDhfTUFYID0gSU5UOF9NQVgKLUlOVF9MRUFTVDE2X01BWCA9IElOVDE2X01BWAotSU5UX0xFQVNUMzJfTUFYID0gSU5UMzJfTUFYCi1JTlQ4X01JTiA9ICgtMTI4KQotSU5UMTZfTUlOID0gKC0zMjc2Ny0xKQotSU5UMzJfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRNQVhfTUlOID0gSU5UMzJfTUlOCi1JTlRfTEVBU1Q4X01JTiA9IElOVDhfTUlOCi1JTlRfTEVBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9MRUFTVDMyX01JTiA9IElOVDMyX01JTgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF9jb25zdC5oCi1kZWYgSU5UOF9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQxNl9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQzMl9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGwpCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGxsKQotCi1kZWYgVUlOVDhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1KQotCi1kZWYgVUlOVDE2X0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdSkKLQotZGVmIFVJTlQzMl9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHUpCi0KLWRlZiBVSU5UNjRfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1bCkKLQotZGVmIFVJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHVsbCkKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGwpCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdWwpCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyxsbCkKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1bGwpCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIChjKQotCi1kZWYgVUlOVE1BWF9DKGMpOiByZXR1cm4gKGMpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnRfZm10aW8uaAotUFJJZDggPSAiZCIKLVBSSWQxNiA9ICJkIgotUFJJZDMyID0gImQiCi1QUklkNjQgPSAibGQiCi1QUklkNjQgPSAibGxkIgotUFJJZExFQVNUOCA9ICJkIgotUFJJZExFQVNUMTYgPSAiZCIKLVBSSWRMRUFTVDMyID0gImQiCi1QUklkTEVBU1Q2NCA9ICJsZCIKLVBSSWRMRUFTVDY0ID0gImxsZCIKLVBSSWk4ID0gImkiCi1QUklpMTYgPSAiaSIKLVBSSWkzMiA9ICJpIgotUFJJaTY0ID0gImxpIgotUFJJaTY0ID0gImxsaSIKLVBSSWlMRUFTVDggPSAiaSIKLVBSSWlMRUFTVDE2ID0gImkiCi1QUklpTEVBU1QzMiA9ICJpIgotUFJJaUxFQVNUNjQgPSAibGkiCi1QUklpTEVBU1Q2NCA9ICJsbGkiCi1QUklvOCA9ICJvIgotUFJJbzE2ID0gIm8iCi1QUklvMzIgPSAibyIKLVBSSW82NCA9ICJsbyIKLVBSSW82NCA9ICJsbG8iCi1QUklvTEVBU1Q4ID0gIm8iCi1QUklvTEVBU1QxNiA9ICJvIgotUFJJb0xFQVNUMzIgPSAibyIKLVBSSW9MRUFTVDY0ID0gImxvIgotUFJJb0xFQVNUNjQgPSAibGxvIgotUFJJeDggPSAieCIKLVBSSXgxNiA9ICJ4IgotUFJJeDMyID0gIngiCi1QUkl4NjQgPSAibHgiCi1QUkl4NjQgPSAibGx4IgotUFJJeExFQVNUOCA9ICJ4IgotUFJJeExFQVNUMTYgPSAieCIKLVBSSXhMRUFTVDMyID0gIngiCi1QUkl4TEVBU1Q2NCA9ICJseCIKLVBSSXhMRUFTVDY0ID0gImxseCIKLVBSSVg4ID0gIlgiCi1QUklYMTYgPSAiWCIKLVBSSVgzMiA9ICJYIgotUFJJWDY0ID0gImxYIgotUFJJWDY0ID0gImxsWCIKLVBSSVhMRUFTVDggPSAiWCIKLVBSSVhMRUFTVDE2ID0gIlgiCi1QUklYTEVBU1QzMiA9ICJYIgotUFJJWExFQVNUNjQgPSAibFgiCi1QUklYTEVBU1Q2NCA9ICJsbFgiCi1QUkl1OCA9ICJ1IgotUFJJdTE2ID0gInUiCi1QUkl1MzIgPSAidSIKLVBSSXU2NCA9ICJsdSIKLVBSSXU2NCA9ICJsbHUiCi1QUkl1TEVBU1Q4ID0gInUiCi1QUkl1TEVBU1QxNiA9ICJ1IgotUFJJdUxFQVNUMzIgPSAidSIKLVBSSXVMRUFTVDY0ID0gImx1IgotUFJJdUxFQVNUNjQgPSAibGx1IgotU0NOZDE2ID0gImhkIgotU0NOZDMyID0gImQiCi1TQ05kNjQgPSAibGQiCi1TQ05kNjQgPSAibGxkIgotU0NOaTE2ID0gImhpIgotU0NOaTMyID0gImkiCi1TQ05pNjQgPSAibGkiCi1TQ05pNjQgPSAibGxpIgotU0NObzE2ID0gImhvIgotU0NObzMyID0gIm8iCi1TQ05vNjQgPSAibG8iCi1TQ05vNjQgPSAibGxvIgotU0NOdTE2ID0gImh1IgotU0NOdTMyID0gInUiCi1TQ051NjQgPSAibHUiCi1TQ051NjQgPSAibGx1IgotU0NOeDE2ID0gImh4IgotU0NOeDMyID0gIngiCi1TQ054NjQgPSAibHgiCi1TQ054NjQgPSAibGx4IgotUFJJZE1BWCA9ICJsZCIKLVBSSW9NQVggPSAibG8iCi1QUkl4TUFYID0gImx4IgotUFJJdU1BWCA9ICJsdSIKLVBSSWRNQVggPSAibGxkIgotUFJJb01BWCA9ICJsbG8iCi1QUkl4TUFYID0gImxseCIKLVBSSXVNQVggPSAibGx1IgotUFJJZE1BWCA9ICJkIgotUFJJb01BWCA9ICJvIgotUFJJeE1BWCA9ICJ4IgotUFJJdU1BWCA9ICJ1IgotU0NOaU1BWCA9ICJsaSIKLVNDTmRNQVggPSAibGQiCi1TQ05vTUFYID0gImxvIgotU0NOeE1BWCA9ICJseCIKLVNDTmlNQVggPSAibGxpIgotU0NOZE1BWCA9ICJsbGQiCi1TQ05vTUFYID0gImxsbyIKLVNDTnhNQVggPSAibGx4IgotU0NOaU1BWCA9ICJpIgotU0NOZE1BWCA9ICJkIgotU0NOb01BWCA9ICJvIgotU0NOeE1BWCA9ICJ4IgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3R5cGVzMzIuaAotU0hSVF9NSU4gPSAoLTMyNzY4KQotU0hSVF9NQVggPSAzMjc2NwotVVNIUlRfTUFYID0gNjU1MzUKLUlOVF9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotTE9OR19NQVggPSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci1MT05HX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1QX01ZSUQgPSAoLTEpCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLWRlZiBUSUNLX1RPX1NFQyh0aWNrKTogcmV0dXJuICgodGljaykgLyBoeikKLQotZGVmIFNFQ19UT19USUNLKHNlYyk6IHJldHVybiAoKHNlYykgKiBoeikKLQotZGVmIFRJQ0tfVE9fTVNFQyh0aWNrKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDSyhtc2VjKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDS19ST1VORFVQKG1zZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19VU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0sodXNlYyk6IHJldHVybiAoKHVzZWMpIC8gdXNlY19wZXJfdGljaykKLQotZGVmIFVTRUNfVE9fVElDS19ST1VORFVQKHVzZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19OU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0sobnNlYyk6IHJldHVybiAoKG5zZWMpIC8gbnNlY19wZXJfdGljaykKLQotZGVmIE5TRUNfVE9fVElDS19ST1VORFVQKG5zZWMpOiByZXR1cm4gXAotCi1kZWYgVElNRVZBTF9UT19USUNLKHR2cCk6IHJldHVybiBcCi0KLWRlZiBUSU1FU1RSVUNfVE9fVElDSyh0c3ApOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSB0aW1lLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIGlzby90aW1lX2lzby5oCi1OVUxMID0gMAotTlVMTCA9IDAKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L3JlZ2VuIGIvTGliL3BsYXQtc3Vub3M1L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3OGNiN2RlLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXNyYCBpbgotJ1N1bk9TIDUuJyopCTs7Ci0qKQllY2hvIFByb2JhYmx5IG5vdCBvbiBhIFNvbGFyaXMgMiBzeXN0ZW0gMT4mMgotCWV4aXQgMTs7Ci1lc2FjCi1zZXQgLXYKLWgycHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCAvdXNyL2luY2x1ZGUvc3lzL3N0cm9wdHMuaCAvdXNyL2luY2x1ZGUvZGxmY24uaAotCmRpZmYgLS1naXQgYS9MaWIvcGxhdC11bml4d2FyZTcvSU4ucHkgYi9MaWIvcGxhdC11bml4d2FyZTcvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMDIzYjQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtdW5peHdhcmU3L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODM2ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luX2YuaAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKGludCkoaSkgJiAweDgwMDAwMDAwKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gMHhmZjAwMDAwMAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhjMDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkKLQotSU5fQ0xBU1NCX05FVCA9IDB4ZmZmZjAwMDAKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhjMDAwMDAwMCkKLQotSU5fQ0xBU1NDX05FVCA9IDB4ZmZmZmZmMDAKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotSU5fQ0xBU1NEX05FVCA9IDB4ZjAwMDAwMDAKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLUlOQUREUl9BTlkgPSAweDAwMDAwMDAwCi1JTkFERFJfTE9PUEJBQ0sgPSAweDdmMDAwMDAxCi1JTkFERFJfQlJPQURDQVNUID0gMHhmZmZmZmZmZgotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5BRERSX1VOU1BFQ19HUk9VUCA9IDB4ZTAwMDAwMDAKLUlOQUREUl9BTExIT1NUU19HUk9VUCA9IDB4ZTAwMDAwMDEKLUlOQUREUl9BTExSVFJTX0dST1VQID0gMHhlMDAwMDAwMgotSU5BRERSX01BWF9MT0NBTF9HUk9VUCA9IDB4ZTAwMDAwZmYKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQvaW42LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90eXBlcy5oCi1kZWYgcXVhZF9sb3coeCk6IHJldHVybiB4LnZhbFswXQotCi1BRFRfRU1BU0tTSVpFID0gOAotU0hSVF9NSU4gPSAtMzI3NjgKLVNIUlRfTUFYID0gMzI3NjcKLUlOVF9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1PRkYzMl9NQVggPSBMT05HX01BWAotSVNUQVRfQVNTRVJURUQgPSAwCi1JU1RBVF9BU1NVTUVEID0gMQotSVNUQVRfTk9ORSA9IDIKLU9GRl9NQVggPSBPRkYzMl9NQVgKLUNMT0NLX01BWCA9IExPTkdfTUFYCi1QX01ZSUQgPSAoLTEpCi1QX01ZSE9TVElEID0gKC0xKQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbGVjdC5oCi1GRF9TRVRTSVpFID0gNDA5NgotTkJCWSA9IDgKLU5VTEwgPSAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYml0eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luNl9mLmgKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIElONl9BRERSX0VRVUFMX0woYSwgMCwgMCwgMCwgMCkKLQotZGVmIElONl9TRVRfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIElONl9BRERSX0NPUFlfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X0lTX0FERFJfQU5ZKGEpOiByZXR1cm4gSU42X0FERFJfRVFVQUxfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X1NFVF9BRERSX0FOWShhKTogcmV0dXJuIElONl9BRERSX0NPUFlfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBJTjZfQUREUl9FUVVBTF9MKGEsIDAsIDAsIDAsIDB4MDEwMDAwMDApCi0KLWRlZiBJTjZfU0VUX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBJTjZfQUREUl9DT1BZX0woYSwgMCwgMCwgMCwgMHgwMTAwMDAwMCkKLQotSU42X01DX0ZMQUdfUEVSTUFORU5UID0gMHgwCi1JTjZfTUNfRkxBR19UUkFOU0lFTlQgPSAweDEKLUlONl9NQ19TQ09QRV9OT0RFTE9DQUwgPSAweDEKLUlONl9NQ19TQ09QRV9MSU5LTE9DQUwgPSAweDIKLUlONl9NQ19TQ09QRV9TSVRFTE9DQUwgPSAweDUKLUlONl9NQ19TQ09QRV9PUkdMT0NBTCA9IDB4OAotSU42X01DX1NDT1BFX0dMT0JBTCA9IDB4RQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29udnNhLmgKLV9fTkVUTElCX1VXMjExX1NWUjQgPSAxCi1fX05FVExJQl9VVzIxMV9YUEc0ID0gMgotX19ORVRMSUJfR0VNSU5JX1NWUjQgPSAzCi1fX05FVExJQl9HRU1JTklfWFBHNCA9IDQKLV9fTkVUTElCX0ZQMV9TVlI0ID0gNQotX19ORVRMSUJfRlAxX1hQRzQgPSA2Ci1fX05FVExJQl9CQVNFX1ZFUlNJT05fXyA9IF9fTkVUTElCX1VXMjExX1NWUjQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0ZQMV9TVlI0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9GUDFfWFBHNAotX19ORVRMSUJfVkVSU0lPTl9fID0gX19ORVRMSUJfR0VNSU5JX1NWUjQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0dFTUlOSV9YUEc0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9VVzIxMV9TVlI0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9VVzIxMV9YUEc0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9GUDFfWFBHNAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J5dGVvcmRlci5oCi1MSVRUTEVfRU5ESUFOID0gMTIzNAotQklHX0VORElBTiA9IDQzMjEKLVBEUF9FTkRJQU4gPSAzNDEyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnl0ZW9yZGVyX2YuaAotQllURV9PUkRFUiA9IExJVFRMRV9FTkRJQU4KLWRlZiBodG9ubChobCk6IHJldHVybiBfX2h0b25sKGhsKQotCi1kZWYgbnRvaGwobmwpOiByZXR1cm4gX19udG9obChubCkKLQotZGVmIGh0b25zKGhzKTogcmV0dXJuIF9faHRvbnMoaHMpCi0KLWRlZiBudG9ocyhucyk6IHJldHVybiBfX250b2hzKG5zKQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSVNfWFBHNCh2ZXJzaW9uKTogcmV0dXJuICgoKHZlcnNpb24pICUgMikgPT0gMCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSEFTX1NBTEVOKHZlcnNpb24pOiByZXR1cm4gKCh2ZXJzaW9uKSA+PSBfX05FVExJQl9HRU1JTklfU1ZSNCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSVNfSUtTKHZlcnNpb24pOiByZXR1cm4gKCh2ZXJzaW9uKSA+PSBfX05FVExJQl9GUDFfU1ZSNCkKLQotZGVmIFNBX0ZBTUlMWV9HRVQoc2EpOiByZXR1cm4gXAotCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfVU5JQ0FTVF9IT1BTID0gMwotSVBWNl9BRERSRk9STSA9IDI0Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMjUKLUlQVjZfTVVMVElDQVNUX0lGID0gMjYKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAyNwotSVBWNl9BRERfTUVNQkVSU0hJUCA9IDI4Ci1JUFY2X0RST1BfTUVNQkVSU0hJUCA9IDI5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW5zcmVtLmgKLWRlZiBMSVNUX0lOSVQoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBMSVNUX0lOSVQoaGVhZCk6IHJldHVybiBcCi0KLWRlZiByZW1xdWUoYSk6IHJldHVybiBSRU1RVUUoYSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWlvLmgKLVNIVVRfUkQgPSAwCi1TSFVUX1dSID0gMQotU0hVVF9SRFdSID0gMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL25ldGNvbmZpZy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuICgpCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICJ4IgotCi1ORVRDT05GSUcgPSAiL2V0Yy9uZXRjb25maWciCi1ORVRQQVRIID0gIk5FVFBBVEgiCi1OQ19UUElfQ0xUUyA9IDEKLU5DX1RQSV9DT1RTID0gMgotTkNfVFBJX0NPVFNfT1JEID0gMwotTkNfVFBJX1JBVyA9IDQKLU5DX05PRkxBRyA9IDAwCi1OQ19WSVNJQkxFID0gMG8xCi1OQ19CUk9BRENBU1QgPSAwbzIKLU5DX05PUFJPVE9GTUxZID0gIi0iCi1OQ19MT09QQkFDSyA9ICJsb29wYmFjayIKLU5DX0lORVQgPSAiaW5ldCIKLU5DX0lORVQ2ID0gImluZXQ2IgotTkNfSU1QTElOSyA9ICJpbXBsaW5rIgotTkNfUFVQID0gInB1cCIKLU5DX0NIQU9TID0gImNoYW9zIgotTkNfTlMgPSAibnMiCi1OQ19OQlMgPSAibmJzIgotTkNfRUNNQSA9ICJlY21hIgotTkNfREFUQUtJVCA9ICJkYXRha2l0IgotTkNfQ0NJVFQgPSAiY2NpdHQiCi1OQ19TTkEgPSAic25hIgotTkNfREVDTkVUID0gImRlY25ldCIKLU5DX0RMSSA9ICJkbGkiCi1OQ19MQVQgPSAibGF0IgotTkNfSFlMSU5LID0gImh5bGluayIKLU5DX0FQUExFVEFMSyA9ICJhcHBsZXRhbGsiCi1OQ19OSVQgPSAibml0IgotTkNfSUVFRTgwMiA9ICJpZWVlODAyIgotTkNfT1NJID0gIm9zaSIKLU5DX1gyNSA9ICJ4MjUiCi1OQ19PU0lORVQgPSAib3NpbmV0IgotTkNfR09TSVAgPSAiZ29zaXAiCi1OQ19ORVRXQVJFID0gIm5ldHdhcmUiCi1OQ19OT1BST1RPID0gIi0iCi1OQ19UQ1AgPSAidGNwIgotTkNfVURQID0gInVkcCIKLU5DX0lDTVAgPSAiaWNtcCIKLU5DX0lQWCA9ICJpcHgiCi1OQ19TUFggPSAic3B4IgotTkNfVFBJX0NMVFMgPSAxCi1OQ19UUElfQ09UUyA9IDIKLU5DX1RQSV9DT1RTX09SRCA9IDMKLU5DX1RQSV9SQVcgPSA0Ci1TT0NLX1NUUkVBTSA9IDIKLVNPQ0tfREdSQU0gPSAxCi1TT0NLX1JBVyA9IDQKLVNPQ0tfUkRNID0gNQotU09DS19TRVFQQUNLRVQgPSA2Ci1TT19ERUJVRyA9IDB4MDAwMQotU09fQUNDRVBUQ09OTiA9IDB4MDAwMgotU09fUkVVU0VBRERSID0gMHgwMDA0Ci1TT19LRUVQQUxJVkUgPSAweDAwMDgKLVNPX0RPTlRST1VURSA9IDB4MDAxMAotU09fQlJPQURDQVNUID0gMHgwMDIwCi1TT19VU0VMT09QQkFDSyA9IDB4MDA0MAotU09fTElOR0VSID0gMHgwMDgwCi1TT19PT0JJTkxJTkUgPSAweDAxMDAKLVNPX09SRFJFTCA9IDB4MDIwMAotU09fSU1BU09DS0VUID0gMHgwNDAwCi1TT19NR01UID0gMHgwODAwCi1TT19SRVVTRVBPUlQgPSAweDEwMDAKLVNPX0xJU1RFTklORyA9IDB4MjAwMAotU09fUkRXUiA9IDB4NDAwMAotU09fU0VNQSA9IDB4ODAwMAotU09fRE9OVExJTkdFUiA9ICh+U09fTElOR0VSKQotU09fU05EQlVGID0gMHgxMDAxCi1TT19SQ1ZCVUYgPSAweDEwMDIKLVNPX1NORExPV0FUID0gMHgxMDAzCi1TT19SQ1ZMT1dBVCA9IDB4MTAwNAotU09fU05EVElNRU8gPSAweDEwMDUKLVNPX1JDVlRJTUVPID0gMHgxMDA2Ci1TT19FUlJPUiA9IDB4MTAwNwotU09fVFlQRSA9IDB4MTAwOAotU09fUFJPVE9UWVBFID0gMHgxMDA5Ci1TT19BTExSQVcgPSAweDEwMGEKLVNPTF9TT0NLRVQgPSAweGZmZmYKLUFGX1VOU1BFQyA9IDAKLUFGX1VOSVggPSAxCi1BRl9MT0NBTCA9IEFGX1VOSVgKLUFGX0lORVQgPSAyCi1BRl9JTVBMSU5LID0gMwotQUZfUFVQID0gNAotQUZfQ0hBT1MgPSA1Ci1BRl9OUyA9IDYKLUFGX05CUyA9IDcKLUFGX0VDTUEgPSA4Ci1BRl9EQVRBS0lUID0gOQotQUZfQ0NJVFQgPSAxMAotQUZfU05BID0gMTEKLUFGX0RFQ25ldCA9IDEyCi1BRl9ETEkgPSAxMwotQUZfTEFUID0gMTQKLUFGX0hZTElOSyA9IDE1Ci1BRl9BUFBMRVRBTEsgPSAxNgotQUZfTklUID0gMTcKLUFGXzgwMiA9IDE4Ci1BRl9PU0kgPSAxOQotQUZfSVNPID0gQUZfT1NJCi1BRl9YMjUgPSAyMAotQUZfT1NJTkVUID0gMjEKLUFGX0dPU0lQID0gMjIKLUFGX1lORVQgPSAyMwotQUZfUk9VVEUgPSAyNAotQUZfTElOSyA9IDI1Ci1wc2V1ZG9fQUZfWFRQID0gMjYKLUFGX0lORVQ2ID0gMjcKLUFGX01BWCA9IDI3Ci1BRl9JTkVUX0JTV0FQID0gMHgwMjAwCi1QRl9VTlNQRUMgPSBBRl9VTlNQRUMKLVBGX1VOSVggPSBBRl9VTklYCi1QRl9MT0NBTCA9IEFGX0xPQ0FMCi1QRl9JTkVUID0gQUZfSU5FVAotUEZfSU1QTElOSyA9IEFGX0lNUExJTksKLVBGX1BVUCA9IEFGX1BVUAotUEZfQ0hBT1MgPSBBRl9DSEFPUwotUEZfTlMgPSBBRl9OUwotUEZfTkJTID0gQUZfTkJTCi1QRl9FQ01BID0gQUZfRUNNQQotUEZfREFUQUtJVCA9IEFGX0RBVEFLSVQKLVBGX0NDSVRUID0gQUZfQ0NJVFQKLVBGX1NOQSA9IEFGX1NOQQotUEZfREVDbmV0ID0gQUZfREVDbmV0Ci1QRl9ETEkgPSBBRl9ETEkKLVBGX0xBVCA9IEFGX0xBVAotUEZfSFlMSU5LID0gQUZfSFlMSU5LCi1QRl9BUFBMRVRBTEsgPSBBRl9BUFBMRVRBTEsKLVBGX05JVCA9IEFGX05JVAotUEZfODAyID0gQUZfODAyCi1QRl9PU0kgPSBBRl9PU0kKLVBGX0lTTyA9IFBGX09TSQotUEZfWDI1ID0gQUZfWDI1Ci1QRl9PU0lORVQgPSBBRl9PU0lORVQKLVBGX0dPU0lQID0gQUZfR09TSVAKLVBGX1lORVQgPSBBRl9ZTkVUCi1QRl9ST1VURSA9IEFGX1JPVVRFCi1QRl9MSU5LID0gQUZfTElOSwotcHNldWRvX1BGX1hUUCA9IHBzZXVkb19BRl9YVFAKLVBGX0lORVQ2ID0gQUZfSU5FVDYKLVBGX01BWCA9IEFGX01BWAotU09NQVhDT05OID0gNQotU0NNX1JJR0hUUyA9IDEKLU1TR19PT0IgPSAweDEKLU1TR19QRUVLID0gMHgyCi1NU0dfRE9OVFJPVVRFID0gMHg0Ci1NU0dfQ1RSVU5DID0gMHg4Ci1NU0dfVFJVTkMgPSAweDEwCi1NU0dfRU9SID0gMHgzMAotTVNHX1dBSVRBTEwgPSAweDIwCi1NU0dfTUFYSU9WTEVOID0gMTYKLWRlZiBPUFRMRU4oeCk6IHJldHVybiAoKCgoeCkgKyBzaXplb2YoaW50KSAtIDEpIC8gc2l6ZW9mKGludCkpICogc2l6ZW9mKGludCkpCi0KLUdJQVJHID0gMHgxCi1DT05USSA9IDB4MgotR0lUQUIgPSAweDQKLVNPQ0tFVFNZUyA9IDg4Ci1TT0NLRVRTWVMgPSA4MwotU09fQUNDRVBUID0gMQotU09fQklORCA9IDIKLVNPX0NPTk5FQ1QgPSAzCi1TT19HRVRQRUVSTkFNRSA9IDQKLVNPX0dFVFNPQ0tOQU1FID0gNQotU09fR0VUU09DS09QVCA9IDYKLVNPX0xJU1RFTiA9IDcKLVNPX1JFQ1YgPSA4Ci1TT19SRUNWRlJPTSA9IDkKLVNPX1NFTkQgPSAxMAotU09fU0VORFRPID0gMTEKLVNPX1NFVFNPQ0tPUFQgPSAxMgotU09fU0hVVERPV04gPSAxMwotU09fU09DS0VUID0gMTQKLVNPX1NPQ0tQT0xMID0gMTUKLVNPX0dFVElQRE9NQUlOID0gMTYKLVNPX1NFVElQRE9NQUlOID0gMTcKLVNPX0FESlRJTUUgPSAxOAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N0cmVhbS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY3JlZC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3N5bmNoLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kbC5oCi1TSUdOQklUID0gMHg4MDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lwbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGlzcF9wLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90cmFwLmgKLURJVkVSUiA9IDAKLVNHTFNUUCA9IDEKLU5NSUZMVCA9IDIKLUJQVEZMVCA9IDMKLUlOVE9GTFQgPSA0Ci1CT1VOREZMVCA9IDUKLUlOVk9QRkxUID0gNgotTk9FWFRGTFQgPSA3Ci1EQkxGTFQgPSA4Ci1FWFRPVlJGTFQgPSA5Ci1JTlZUU1NGTFQgPSAxMAotU0VHTlBGTFQgPSAxMQotU1RLRkxUID0gMTIKLUdQRkxUID0gMTMKLVBHRkxUID0gMTQKLUVYVEVSUkZMVCA9IDE2Ci1BTElHTkZMVCA9IDE3Ci1NQ0VGTFQgPSAxOAotVVNFUkZMVCA9IDB4MTAwCi1UUlBfUFJFRU1QVCA9IDB4MjAwCi1UUlBfVU5VU0VEID0gMHgyMDEKLVBGX0VSUl9NQVNLID0gMHgwMQotUEZfRVJSX1BBR0UgPSAwCi1QRl9FUlJfUFJPVCA9IDEKLVBGX0VSUl9XUklURSA9IDIKLVBGX0VSUl9VU0VSID0gNAotRVZUX1NUUlNDSEVEID0gMHgwNAotRVZUX0dMT0JDQUxMT1VUID0gMHgwOAotRVZUX0xDTENBTExPVVQgPSAweDEwCi1FVlRfU09GVElOVE1BU0sgPSAoRVZUX1NUUlNDSEVEfEVWVF9HTE9CQ0FMTE9VVHxFVlRfTENMQ0FMTE9VVCkKLVBMMCA9IDAKLVBMMSA9IDEKLVBMMiA9IDIKLVBMMyA9IDMKLVBMNCA9IDQKLVBMNSA9IDUKLVBMNiA9IDYKLVBMSEkgPSA4Ci1QTDcgPSBQTEhJCi1QTEJBU0UgPSBQTDAKLVBMVElNRU9VVCA9IFBMMQotUExESVNLID0gUEw1Ci1QTFNUUiA9IFBMNgotUExUVFkgPSBQTFNUUgotUExNSU4gPSBQTDAKLVBMTUlOID0gUEwxCi1NQVhfSU5UUl9MRVZFTFMgPSAxMAotTUFYX0lOVFJfTkVTVElORyA9IDUwCi1TVFJTQ0hFRCA9IEVWVF9TVFJTQ0hFRAotR0xPQkFMU09GVElOVCA9IEVWVF9HTE9CQ0FMTE9VVAotTE9DQUxTT0ZUSU5UID0gRVZUX0xDTENBTExPVVQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc3luY2hfcC5oCi1kZWYgR0VUX1RJTUUodGltZXApOiByZXR1cm4gXAotCi1MS19USFJFU0hPTEQgPSA1MDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9saXN0LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9saXN0YXNtLmgKLWRlZiByZW1xdWVfbnVsbChlKTogcmV0dXJuIFwKLQotZGVmIExTX0lTRU1QVFkobGlzdHApOiByZXR1cm4gXAotCi1MS19CQVNJQyA9IDB4MQotTEtfU0xFRVAgPSAweDIKLUxLX05PU1RBVFMgPSAweDQKLWRlZiBDWUNMRVNfU0lOQ0UoYyk6IHJldHVybiBDWUNMRVNfQkVUV0VFTigoYyksIENZQ0xFUygpKQotCi1MU0JfTkxLRFMgPSA5MgotRVZUX1JVTlJVTiA9IDB4MDEKLUVWVF9LUFJVTlJVTiA9IDB4MDIKLVNQX1VOTE9DS0VEID0gMAotU1BfTE9DS0VEID0gMQotS1NfTE9DS1RFU1QgPSAweDAxCi1LU19NUFNUQVRTID0gMHgwMgotS1NfREVJTklURUQgPSAweDA0Ci1LU19OVkxUVFJBQ0UgPSAweDA4Ci1SV1NfUkVBRCA9IChvcmQoJ3InKSkKLVJXU19XUklURSA9IChvcmQoJ3cnKSkKLVJXU19VTkxPQ0tFRCA9IChvcmQoJ3UnKSkKLVJXU19CVVNZID0gKG9yZCgnYicpKQotZGVmIFNMRUVQX0xPQ0tPV05FRChsa3ApOiByZXR1cm4gXAotCi1kZWYgU0xFRVBfRElTT1dOKGxrcCk6IHJldHVybiBcCi0KLUtTX05PUFJNUFQgPSAweDAwMDAwMDAxCi1fX0tTX0xPQ0tURVNUID0gS1NfTE9DS1RFU1QKLV9fS1NfTE9DS1RFU1QgPSAwCi1fX0tTX01QU1RBVFMgPSBLU19NUFNUQVRTCi1fX0tTX01QU1RBVFMgPSAwCi1fX0tTX05WTFRUUkFDRSA9IEtTX05WTFRUUkFDRQotX19LU19OVkxUVFJBQ0UgPSAwCi1LU0ZMQUdTID0gKF9fS1NfTE9DS1RFU1R8X19LU19NUFNUQVRTfF9fS1NfTlZMVFRSQUNFKQotS1NWVU5JUFJPQyA9IDEKLUtTVk1QREVCVUcgPSAyCi1LU1ZNUE5PREVCVUcgPSAzCi1LU1ZGTEFHID0gS1NWVU5JUFJPQwotS1NWRkxBRyA9IEtTVk1QREVCVUcKLUtTVkZMQUcgPSBLU1ZNUE5PREVCVUcKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc2lubGluZS5oCi1fQV9TUF9MT0NLRUQgPSAxCi1fQV9TUF9VTkxPQ0tFRCA9IDAKLV9BX0lOVlBMID0gLTEKLWRlZiBfQVRPTUlDX0lOVF9JTkNSKGF0b21pY19pbnRwKTogcmV0dXJuIFwKLQotZGVmIF9BVE9NSUNfSU5UX0RFQ1IoYXRvbWljX2ludHApOiByZXR1cm4gXAotCi1kZWYgQVRPTUlDX0lOVF9SRUFEKGF0b21pY19pbnRwKTogcmV0dXJuIF9BVE9NSUNfSU5UX1JFQUQoYXRvbWljX2ludHApCi0KLWRlZiBBVE9NSUNfSU5UX0lOQ1IoYXRvbWljX2ludHApOiByZXR1cm4gX0FUT01JQ19JTlRfSU5DUihhdG9taWNfaW50cCkKLQotZGVmIEFUT01JQ19JTlRfREVDUihhdG9taWNfaW50cCk6IHJldHVybiBfQVRPTUlDX0lOVF9ERUNSKGF0b21pY19pbnRwKQotCi1kZWYgRlNQSU5fSU5JVChscCk6IHJldHVybgotCi1kZWYgRlNQSU5fTE9DSyhsKTogcmV0dXJuIERJU0FCTEUoKQotCi1kZWYgRlNQSU5fVFJZTE9DSyhsKTogcmV0dXJuIChESVNBQkxFKCksIEJfVFJVRSkKLQotZGVmIEZTUElOX1VOTE9DSyhsKTogcmV0dXJuIEVOQUJMRSgpCi0KLWRlZiBMT0NLX0RFSU5JVChscCk6IHJldHVybgotCi1kZWYgTE9DS19ERUFMTE9DKGxwKTogcmV0dXJuCi0KLWRlZiBMT0NLX09XTkVEKGxwKTogcmV0dXJuIChCX1RSVUUpCi0KLWRlZiBSV19ERUlOSVQobHApOiByZXR1cm4KLQotZGVmIFJXX0RFQUxMT0MobHApOiByZXR1cm4KLQotZGVmIFJXX09XTkVEKGxwKTogcmV0dXJuIChCX1RSVUUpCi0KLWRlZiBJU19MT0NLRUQobG9ja3ApOiByZXR1cm4gQl9GQUxTRQotCi1kZWYgTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBcCi0KLWRlZiBUUllMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfUExNSU4obG9ja3ApCi0KLWRlZiBMT0NLX1NIX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfUExNSU4obG9ja3ApCi0KLWRlZiBSV19SRExPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gTE9DS19QTE1JTihsb2NrcCkKLQotZGVmIFJXX1dSTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1BMTUlOKGxvY2twKQotCi1kZWYgTE9DS19ERUlOSVQobCk6IHJldHVybgotCi1kZWYgTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLKChsb2NrcCksIFBMTUlOKQotCi1kZWYgVFJZTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBUUllMT0NLKChsb2NrcCksIFBMTUlOKQotCi1kZWYgTE9DS19TSF9QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1NIKChsb2NrcCksIFBMTUlOKQotCi1kZWYgUldfUkRMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIFJXX1JETE9DSygobG9ja3ApLCBQTE1JTikKLQotZGVmIFJXX1dSTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBSV19XUkxPQ0soKGxvY2twKSwgUExNSU4pCi0KLWRlZiBGU1BJTl9JU19MT0NLRUQoZnNwKTogcmV0dXJuIEJfRkFMU0UKLQotZGVmIFNQSU5fSVNfTE9DS0VEKGxvY2twKTogcmV0dXJuIEJfRkFMU0UKLQotZGVmIEZTUElOX09XTkVEKGwpOiByZXR1cm4gKEJfVFJVRSkKLQotQ1JfTUxEUkVBTCA9IDB4MDAwMDAwMDEKLUNSX1JEVU1QID0gMHgwMDAwMDAwMgotZGVmIGNyaG9sZChjcmVkcCk6IHJldHVybiBjcmhvbGRuKChjcmVkcCksIDEpCi0KLWRlZiBjcmZyZWUoY3JlZHApOiByZXR1cm4gY3JmcmVlbigoY3JlZHApLCAxKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RybWRlcC5oCi1kZWYgc3RyX2FsaWduZWQoWCk6IHJldHVybiAoKCh1aW50KShYKSAmIChzaXplb2YoaW50KSAtIDEpKSA9PSAwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZW5naW5lLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jbG9jay5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi1EU1RfTk9ORSA9IDAKLURTVF9VU0EgPSAxCi1EU1RfQVVTVCA9IDIKLURTVF9XRVQgPSAzCi1EU1RfTUVUID0gNAotRFNUX0VFVCA9IDUKLURTVF9DQU4gPSA2Ci1EU1RfR0IgPSA3Ci1EU1RfUlVNID0gOAotRFNUX1RVUiA9IDkKLURTVF9BVVNUQUxUID0gMTAKLUlUSU1FUl9SRUFMID0gMAotSVRJTUVSX1ZJUlRVQUwgPSAxCi1JVElNRVJfUFJPRiA9IDIKLUZEX1NFVFNJWkUgPSA0MDk2Ci1GRF9OQkJZID0gOAotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1OVUxMID0gMAotQ0xPQ0tTX1BFUl9TRUMgPSAxMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2xvY2tfcC5oCi1DR0JJVFMgPSA0Ci1JREJJVFMgPSAyOAotZGVmIHRvaWRfdW5wYWNrY2coaWR2YWwpOiByZXR1cm4gKCgoaWR2YWwpID4+IElEQklUUykgJiAweGYpCi0KLWRlZiB0b2lkX3VucGFja2lkKGlkdmFsKTogcmV0dXJuICgoaWR2YWwpICYgMHhmZmZmZmZmKQotCi1kZWYgdG9pZF91bnBhY2tjZyhpZHZhbCk6IHJldHVybiAwCi0KLWRlZiB0b2lkX3VucGFja2lkKGlkdmFsKTogcmV0dXJuIChpZHZhbCkKLQotTkNBTExPVVRfSEFTSCA9IDEwMjQKLUNBTExPVVRfTUFYVkFMID0gMHg3ZmZmZmZmZgotVE9fUEVSSU9ESUMgPSAweDgwMDAwMDAwCi1UT19JTU1FRElBVEUgPSAweDgwMDAwMDAwCi1TRUMgPSAxCi1NSUxMSVNFQyA9IDEwMDAKLU1JQ1JPU0VDID0gMTAwMDAwMAotTkFOT1NFQyA9IDEwMDAwMDAwMDAKLVNFQ0hSID0gKDYwKjYwKQotU0VDREFZID0gKDI0KlNFQ0hSKQotU0VDWVIgPSAoMzY1KlNFQ0RBWSkKLWRlZiBUSU1FX09XTkVEX1IoY2dudW0pOiByZXR1cm4gKEJfVFJVRSkKLQotTE9PUFNFQ09ORFMgPSAxODAwCi1MT09QTUlDUk9TRUNPTkRTID0gKExPT1BTRUNPTkRTICogTUlDUk9TRUMpCi1kZWYgVElDS1NfU0lOQ0UodCk6IHJldHVybiBUSUNLU19CRVRXRUVOKHQsIFRJQ0tTKCkpCi0KLU1BWFJRUyA9IDIKLUVfT0ZGTElORSA9IDB4MDEKLUVfQkFEID0gMHgwMgotRV9TSFVURE9XTiA9IDB4MDQKLUVfRFJJVkVSID0gMHgwOAotRV9ERUZBVUxUS0VFUCA9IDB4MTAwCi1FX0RSSVZFUkJPVU5EID0gMHgyMDAKLUVfRVhDTFVTSVZFID0gMHg0MDAKLUVfQ0dMRUFERVIgPSAweDgwMAotRV9OT1dBWSA9IChFX09GRkxJTkV8RV9CQUR8RV9TSFVURE9XTikKLUVfQk9VTkQgPSAweDAxCi1FX0dMT0JBTCA9IDB4MDAKLUVfVU5BVkFJTCA9IC0xCi1FTkdJTkVfT05MSU5FID0gMQotZGVmIFBST0NFU1NPUl9VTk1BUChlKTogcmV0dXJuICgoZSkgLSBlbmdpbmUpCi0KLUJPT1RFTkcgPSAwCi1RTU9WRUQgPSAweDAwMDEKLVFXQU5UUiA9IDB4MDAwMgotUVdBTlRXID0gMHgwMDA0Ci1RRlVMTCA9IDB4MDAwOAotUVJFQURSID0gMHgwMDEwCi1RVVNFID0gMHgwMDIwCi1RTk9FTkIgPSAweDAwNDAKLVFVUCA9IDB4MDA4MAotUUJBQ0sgPSAweDAxMDAKLVFJTlRFUiA9IDB4MDIwMAotUVBST0NTT04gPSAweDA0MDAKLVFUT0VOQUIgPSAweDA4MDAKLVFGUkVFWkUgPSAweDEwMDAKLVFCT1VORCA9IDB4MjAwMAotUURFRkNOVCA9IDB4NDAwMAotUUVOQUIgPSAweDAwMDEKLVFTVkNCVVNZID0gMHgwMDAyCi1TVFJNX1BVVENOVF9UQUJMRVMgPSAzMQotZGVmIFNUUk1fTVlFTkdfUFVUQ05UKHNkcCk6IHJldHVybiBTVFJNX1BVVENOVChsLmVuZ19udW0sIHNkcCkKLQotUUJfRlVMTCA9IDB4MDEKLVFCX1dBTlRXID0gMHgwMgotUUJfQkFDSyA9IDB4MDQKLU5CQU5EID0gMjU2Ci1EQl9XQVNEVVBFRCA9IDB4MQotREJfMlBJRUNFID0gMHgyCi1TVFJMRUFLSEFTSFNaID0gMTAyMQotTVNHTUFSSyA9IDB4MDEKLU1TR05PTE9PUCA9IDB4MDIKLU1TR0RFTElNID0gMHgwNAotTVNHTk9HRVQgPSAweDA4Ci1NU0dMT0cgPSAweDEwCi1NX0RBVEEgPSAweDAwCi1NX1BST1RPID0gMHgwMQotTV9CUkVBSyA9IDB4MDgKLU1fUEFTU0ZQID0gMHgwOQotTV9TSUcgPSAweDBiCi1NX0RFTEFZID0gMHgwYwotTV9DVEwgPSAweDBkCi1NX0lPQ1RMID0gMHgwZQotTV9TRVRPUFRTID0gMHgxMAotTV9SU0UgPSAweDExCi1NX1RSQUlMID0gMHgxMgotTV9JT0NBQ0sgPSAweDgxCi1NX0lPQ05BSyA9IDB4ODIKLU1fUENQUk9UTyA9IDB4ODMKLU1fUENTSUcgPSAweDg0Ci1NX1JFQUQgPSAweDg1Ci1NX0ZMVVNIID0gMHg4NgotTV9TVE9QID0gMHg4NwotTV9TVEFSVCA9IDB4ODgKLU1fSEFOR1VQID0gMHg4OQotTV9FUlJPUiA9IDB4OGEKLU1fQ09QWUlOID0gMHg4YgotTV9DT1BZT1VUID0gMHg4YwotTV9JT0NEQVRBID0gMHg4ZAotTV9QQ1JTRSA9IDB4OGUKLU1fU1RPUEkgPSAweDhmCi1NX1NUQVJUSSA9IDB4OTAKLU1fUENDVEwgPSAweDkxCi1NX1BDU0VUT1BUUyA9IDB4OTIKLVFOT1JNID0gMHgwMAotUVBDVEwgPSAweDgwCi1TVFJDQU5PTiA9IDB4MDEKLVJFQ09QWSA9IDB4MDIKLVNPX0FMTCA9IDB4MDAzZgotU09fUkVBRE9QVCA9IDB4MDAwMQotU09fV1JPRkYgPSAweDAwMDIKLVNPX01JTlBTWiA9IDB4MDAwNAotU09fTUFYUFNaID0gMHgwMDA4Ci1TT19ISVdBVCA9IDB4MDAxMAotU09fTE9XQVQgPSAweDAwMjAKLVNPX01SRUFET04gPSAweDAwNDAKLVNPX01SRUFET0ZGID0gMHgwMDgwCi1TT19OREVMT04gPSAweDAxMDAKLVNPX05ERUxPRkYgPSAweDAyMDAKLVNPX0lTVFRZID0gMHgwNDAwCi1TT19JU05UVFkgPSAweDA4MDAKLVNPX1RPU1RPUCA9IDB4MTAwMAotU09fVE9OU1RPUCA9IDB4MjAwMAotU09fQkFORCA9IDB4NDAwMAotU09fREVMSU0gPSAweDgwMDAKLVNPX05PREVMSU0gPSAweDAxMDAwMAotU09fU1RSSE9MRCA9IDB4MDIwMDAwCi1TT19MT09QID0gMHgwNDAwMDAKLURSVk9QRU4gPSAweDAKLU1PRE9QRU4gPSAweDEKLUNMT05FT1BFTiA9IDB4MgotT1BFTkZBSUwgPSAtMQotQlBSSV9MTyA9IDEKLUJQUklfTUVEID0gMgotQlBSSV9ISSA9IDMKLUlORlBTWiA9IC0xCi1GTFVTSEFMTCA9IDEKLUZMVVNIREFUQSA9IDAKLVNUUkhJR0ggPSA1MTIwCi1TVFJMT1cgPSAxMDI0Ci1NQVhJT0NCU1ogPSAxMDI0Ci1kZWYgc3RyYWxuKGEpOiByZXR1cm4gKGNhZGRyX3QpKChpbnQpKGEpICYgfihzaXplb2YoaW50KS0xKSkKLQotSVBNX0lEID0gMjAwCi1JQ01QTV9JRCA9IDIwMQotVENQTV9JRCA9IDIwMgotVURQTV9JRCA9IDIwMwotQVJQTV9JRCA9IDIwNAotQVBQTV9JRCA9IDIwNQotUklQTV9JRCA9IDIwNgotUFBQTV9JRCA9IDIwNwotQUhETENNX0lEID0gMjA4Ci1NSERMQ1JJUE1fSUQgPSAyMDkKLUhETENNX0lEID0gMjEwCi1QUENJRF9JRCA9IDIxMQotSUdNUE1fSUQgPSAyMTIKLUlQSVBNX0lEID0gMjEzCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQSVAgPSA0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19VRFAgPSAxNwotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUE9SVF9FQ0hPID0gNwotSVBQT1JUX0RJU0NBUkQgPSA5Ci1JUFBPUlRfU1lTVEFUID0gMTEKLUlQUE9SVF9EQVlUSU1FID0gMTMKLUlQUE9SVF9ORVRTVEFUID0gMTUKLUlQUE9SVF9GVFAgPSAyMQotSVBQT1JUX1RFTE5FVCA9IDIzCi1JUFBPUlRfU01UUCA9IDI1Ci1JUFBPUlRfVElNRVNFUlZFUiA9IDM3Ci1JUFBPUlRfTkFNRVNFUlZFUiA9IDQyCi1JUFBPUlRfV0hPSVMgPSA0MwotSVBQT1JUX01UUCA9IDU3Ci1JUFBPUlRfVEZUUCA9IDY5Ci1JUFBPUlRfUkpFID0gNzcKLUlQUE9SVF9GSU5HRVIgPSA3OQotSVBQT1JUX1RUWUxJTksgPSA4NwotSVBQT1JUX1NVUERVUCA9IDk1Ci1JUFBPUlRfRVhFQ1NFUlZFUiA9IDUxMgotSVBQT1JUX0xPR0lOU0VSVkVSID0gNTEzCi1JUFBPUlRfQ01EU0VSVkVSID0gNTE0Ci1JUFBPUlRfRUZTU0VSVkVSID0gNTIwCi1JUFBPUlRfQklGRlVEUCA9IDUxMgotSVBQT1JUX1dIT1NFUlZFUiA9IDUxMwotSVBQT1JUX1JPVVRFU0VSVkVSID0gNTIwCi1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRF9MT1cgPSA1MTIKLUlQUE9SVF9SRVNFUlZFRF9ISUdIID0gMTAyMwotSVBQT1JUX1VTRVJSRVNFUlZFRF9MT1cgPSAzMjc2OAotSVBQT1JUX1VTRVJSRVNFUlZFRF9ISUdIID0gNjU1MzUKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUF9PUFRJT05TID0gMQotSVBfVE9TID0gMgotSVBfVFRMID0gMwotSVBfSERSSU5DTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfTE9PUCA9IDEwCi1JUF9BRERfTUVNQkVSU0hJUCA9IDExCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMgotSVBfQlJPQURDQVNUX0lGID0gMTQKLUlQX1JFQ1ZJRklOREVYID0gMTUKLUlQX01VTFRJQ0FTVF9UVEwgPSAxNgotTVJUX0lOSVQgPSAxNwotTVJUX0RPTkUgPSAxOAotTVJUX0FERF9WSUYgPSAxOQotTVJUX0RFTF9WSUYgPSAyMAotTVJUX0FERF9NRkMgPSAyMQotTVJUX0RFTF9NRkMgPSAyMgotTVJUX1ZFUlNJT04gPSAyMwotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JTkFERFJfVU5TUEVDX0dST1VQID0gMHhlMDAwMDAwMAotSU5BRERSX0FMTEhPU1RTX0dST1VQID0gMHhlMDAwMDAwMQotSU5BRERSX0FMTFJUUlNfR1JPVVAgPSAweGUwMDAwMDAyCi1JTkFERFJfTUFYX0xPQ0FMX0dST1VQID0gMHhlMDAwMDBmZgotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldC9pbl9tcC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luX21wX2RkaS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW5saW5lLmgKLUlQX0hJRVJfQkFTRSA9ICgyMCkKLWRlZiBBU1NFUlRfTE9DSyh4KTogcmV0dXJuCi0KLWRlZiBBU1NFUlRfV1JMT0NLKHgpOiByZXR1cm4KLQotZGVmIEFTU0VSVF9VTkxPQ0soeCk6IHJldHVybgotCi1kZWYgQ0FOUFVUKHEpOiByZXR1cm4gY2FucHV0KChxKSkKLQotZGVmIENBTlBVVE5FWFQocSk6IHJldHVybiBjYW5wdXRuZXh0KChxKSkKLQotSU5FVF9ERUJVRyA9IDEKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXVuaXh3YXJlNy9TVFJPUFRTLnB5IGIvTGliL3BsYXQtdW5peHdhcmU3L1NUUk9QVFMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNTBhOWMuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtdW5peHdhcmU3L1NUUk9QVFMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvc3Ryb3B0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAotZGVmIHF1YWRfbG93KHgpOiByZXR1cm4geC52YWxbMF0KLQotQURUX0VNQVNLU0laRSA9IDgKLVNIUlRfTUlOID0gLTMyNzY4Ci1TSFJUX01BWCA9IDMyNzY3Ci1JTlRfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfTUFYID0gMjE0NzQ4MzY0NwotTE9OR19NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUxPTkdfTUFYID0gMjE0NzQ4MzY0NwotT0ZGMzJfTUFYID0gTE9OR19NQVgKLUlTVEFUX0FTU0VSVEVEID0gMAotSVNUQVRfQVNTVU1FRCA9IDEKLUlTVEFUX05PTkUgPSAyCi1PRkZfTUFYID0gT0ZGMzJfTUFYCi1DTE9DS19NQVggPSBMT05HX01BWAotUF9NWUlEID0gKC0xKQotUF9NWUhPU1RJRCA9ICgtMSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDQwOTYKLU5CQlkgPSA4Ci1OVUxMID0gMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvbmYuaAotRF9ORVcgPSAweDAwCi1EX09MRCA9IDB4MDEKLURfRE1BID0gMHgwMgotRF9CTEtPRkYgPSAweDQwMAotRF9MRlMgPSAweDgwMDAKLURfU1RSID0gMHgwODAwCi1EX01PRCA9IDB4MTAwMAotRF9QU0VVRE8gPSAweDIwMDAKLURfUkFORE9NID0gMHg0MDAwCi1EX0hPVCA9IDB4MTAwMDAKLURfU0VFS05FRyA9IDB4MDQKLURfVEFQRSA9IDB4MDgKLURfTk9CUktVUCA9IDB4MTAKLURfSU5JVFBVQiA9IDB4MjAKLURfTk9TUEVDTUFDREFUQSA9IDB4NDAKLURfUkRXRVEgPSAweDgwCi1TRUNNQVNLID0gKERfSU5JVFBVQnxEX05PU1BFQ01BQ0RBVEF8RF9SRFdFUSkKLURBRl9SRVFETUEgPSAweDEKLURBRl9QSFlTUkVRID0gMHgyCi1EQUZfUFJFOCA9IDB4NAotREFGX1NUQVRJQyA9IDB4OAotREFGX1NUUiA9IDB4MTAKLURfTVAgPSAweDEwMAotRF9VUEYgPSAweDIwMAotUk9PVEZTX05BTUVTWiA9IDcKLUZNTkFNRVNaID0gOAotTUNEX1ZFUlNJT04gPSAxCi1ESV9CQ0JQID0gMAotRElfTUVESUEgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2Vjc3lzLmgKLUVTX01BQ09QRU5MSUQgPSAxCi1FU19NQUNTWVNMSUQgPSAyCi1FU19NQUNST09UTElEID0gMwotRVNfUFJWSU5GTyA9IDQKLUVTX1BSVlNFVENOVCA9IDUKLUVTX1BSVlNFVFMgPSA2Ci1FU19NQUNBRFRMSUQgPSA3Ci1FU19QUlZJRCA9IDgKLUVTX1RQR0VUTUFKT1IgPSA5Ci1TQV9FWEVDID0gMG8wMQotU0FfV1JJVEUgPSAwbzAyCi1TQV9SRUFEID0gMG8wNAotU0FfU1VCU0laRSA9IDBvMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJvcHRzX2YuaAotWF9TVFIgPSAob3JkKCdTJyk8PDgpCi1YX0lfQkFTRSA9IChYX1NUUnwwbzIwMCkKLVhfSV9OUkVBRCA9IChYX1NUUnwwbzIwMSkKLVhfSV9QVVNIID0gKFhfU1RSfDBvMjAyKQotWF9JX1BPUCA9IChYX1NUUnwwbzIwMykKLVhfSV9MT09LID0gKFhfU1RSfDBvMjA0KQotWF9JX0ZMVVNIID0gKFhfU1RSfDBvMjA1KQotWF9JX1NSRE9QVCA9IChYX1NUUnwwbzIwNikKLVhfSV9HUkRPUFQgPSAoWF9TVFJ8MG8yMDcpCi1YX0lfU1RSID0gKFhfU1RSfDBvMjEwKQotWF9JX1NFVFNJRyA9IChYX1NUUnwwbzIxMSkKLVhfSV9HRVRTSUcgPSAoWF9TVFJ8MG8yMTIpCi1YX0lfRklORCA9IChYX1NUUnwwbzIxMykKLVhfSV9MSU5LID0gKFhfU1RSfDBvMjE0KQotWF9JX1VOTElOSyA9IChYX1NUUnwwbzIxNSkKLVhfSV9QRUVLID0gKFhfU1RSfDBvMjE3KQotWF9JX0ZESU5TRVJUID0gKFhfU1RSfDBvMjIwKQotWF9JX1NFTkRGRCA9IChYX1NUUnwwbzIyMSkKLVhfSV9SRUNWRkQgPSAoWF9TVFJ8MG8yMjIpCi0KLSMgSW5jbHVkZWQgZnJvbSB1bmlzdGQuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3VuaXN0ZC5oCi1SX09LID0gMG8wNAotV19PSyA9IDBvMDIKLVhfT0sgPSAwbzAxCi1GX09LID0gMDAwCi1FRkZfT05MWV9PSyA9IDBvMTAKLUVYX09LID0gMG8yMAotU0VFS19TRVQgPSAwCi1TRUVLX0NVUiA9IDEKLVNFRUtfRU5EID0gMgotX1NDX0FSR19NQVggPSAxCi1fU0NfQ0hJTERfTUFYID0gMgotX1NDX0NMS19UQ0sgPSAzCi1fU0NfTkdST1VQU19NQVggPSA0Ci1fU0NfT1BFTl9NQVggPSA1Ci1fU0NfSk9CX0NPTlRST0wgPSA2Ci1fU0NfU0FWRURfSURTID0gNwotX1NDX1ZFUlNJT04gPSA4Ci1fU0NfUEFTU19NQVggPSA5Ci1fU0NfTE9HTkFNRV9NQVggPSAxMAotX1NDX1BBR0VTSVpFID0gMTEKLV9TQ19QQUdFX1NJWkUgPSBfU0NfUEFHRVNJWkUKLV9TQ19YT1BFTl9WRVJTSU9OID0gMTIKLV9TQ19OQUNMU19NQVggPSAxMwotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX05QUk9DRVNTRVMgPSAzOQotX1NDX1RPVEFMX01FTU9SWSA9IDQwCi1fU0NfVVNFQUJMRV9NRU1PUlkgPSA0MQotX1NDX0dFTkVSQUxfTUVNT1JZID0gNDIKLV9TQ19ERURJQ0FURURfTUVNT1JZID0gNDMKLV9TQ19OQ0dTX0NPTkYgPSA0NAotX1NDX05DR1NfT05MTiA9IDQ1Ci1fU0NfTUFYX0NQVVNfUEVSX0NHID0gNDYKLV9TQ19DR19TSU1QTEVfSU1QTCA9IDQ3Ci1fU0NfQ0FDSEVfTElORSA9IDQ4Ci1fU0NfU1lTVEVNX0lEID0gNDkKLV9TQ19USFJFQURTID0gNTEKLV9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIgPSA1MgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDUzCi1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU0Ci1fU0NfVEhSRUFEX0tFWVNfTUFYID0gNTUKLV9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyA9IDU2Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU3Ci1fU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCA9IDU4Ci1fU0NfVEhSRUFEX1NUQUNLX01JTiA9IDU5Ci1fU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVEID0gNjAKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA2MQotX1NDX1RIUkVBRF9USFJFQURTX01BWCA9IDYyCi1fU0NfS0VSTkVMX1ZNID0gNjMKLV9TQ19UWk5BTUVfTUFYID0gMzIwCi1fU0NfU1RSRUFNX01BWCA9IDMyMQotX1NDX1hPUEVOX0NSWVBUID0gMzIzCi1fU0NfWE9QRU5fRU5IX0kxOE4gPSAzMjQKLV9TQ19YT1BFTl9TSE0gPSAzMjUKLV9TQ19YT1BFTl9YQ1VfVkVSU0lPTiA9IDMyNwotX1NDX0FFU19PU19WRVJTSU9OID0gMzMwCi1fU0NfQVRFWElUX01BWCA9IDMzMQotX1NDXzJfQ19CSU5EID0gMzUwCi1fU0NfMl9DX0RFViA9IDM1MQotX1NDXzJfQ19WRVJTSU9OID0gMzUyCi1fU0NfMl9DSEFSX1RFUk0gPSAzNTMKLV9TQ18yX0ZPUlRfREVWID0gMzU0Ci1fU0NfMl9GT1JUX1JVTiA9IDM1NQotX1NDXzJfTE9DQUxFREVGID0gMzU2Ci1fU0NfMl9TV19ERVYgPSAzNTcKLV9TQ18yX1VQRSA9IDM1OAotX1NDXzJfVkVSU0lPTiA9IDM1OQotX1NDX0JDX0JBU0VfTUFYID0gMzcwCi1fU0NfQkNfRElNX01BWCA9IDM3MQotX1NDX0JDX1NDQUxFX01BWCA9IDM3MgotX1NDX0JDX1NUUklOR19NQVggPSAzNzMKLV9TQ19DT0xMX1dFSUdIVFNfTUFYID0gMzgwCi1fU0NfRVhQUl9ORVNUX01BWCA9IDM4MQotX1NDX0xJTkVfTUFYID0gMzgyCi1fU0NfUkVfRFVQX01BWCA9IDM4MwotX1NDX0lPVl9NQVggPSAzOTAKLV9TQ19OUFJPQ19DT05GID0gMzkxCi1fU0NfTlBST0NfT05MTiA9IDM5MgotX1NDX1hPUEVOX1VOSVggPSA0MDAKLV9TQ19TRU1BUEhPUkVTID0gNDQwCi1fQ1NfUEFUSCA9IDEKLV9fT19DU19IT1NUTkFNRSA9IDIKLV9DU19SRUxFQVNFID0gMwotX0NTX1ZFUlNJT04gPSA0Ci1fX09fQ1NfTUFDSElORSA9IDUKLV9fT19DU19BUkNISVRFQ1RVUkUgPSA2Ci1fQ1NfSFdfU0VSSUFMID0gNwotX19PX0NTX0hXX1BST1ZJREVSID0gOAotX0NTX1NSUENfRE9NQUlOID0gOQotX0NTX0lOSVRUQUJfTkFNRSA9IDEwCi1fX09fQ1NfU1lTTkFNRSA9IDExCi1fQ1NfTEZTX0NGTEFHUyA9IDIwCi1fQ1NfTEZTX0xERkxBR1MgPSAyMQotX0NTX0xGU19MSUJTID0gMjIKLV9DU19MRlNfTElOVEZMQUdTID0gMjMKLV9DU19MRlM2NF9DRkxBR1MgPSAyNAotX0NTX0xGUzY0X0xERkxBR1MgPSAyNQotX0NTX0xGUzY0X0xJQlMgPSAyNgotX0NTX0xGUzY0X0xJTlRGTEFHUyA9IDI3Ci1fQ1NfQVJDSElURUNUVVJFID0gMTAwCi1fQ1NfQlVTVFlQRVMgPSAxMDEKLV9DU19IT1NUTkFNRSA9IDEwMgotX0NTX0hXX1BST1ZJREVSID0gMTAzCi1fQ1NfS0VSTkVMX1NUQU1QID0gMTA0Ci1fQ1NfTUFDSElORSA9IDEwNQotX0NTX09TX0JBU0UgPSAxMDYKLV9DU19PU19QUk9WSURFUiA9IDEwNwotX0NTX1NZU05BTUUgPSAxMDgKLV9DU19VU0VSX0xJTUlUID0gMTA5Ci1fUENfTElOS19NQVggPSAxCi1fUENfTUFYX0NBTk9OID0gMgotX1BDX01BWF9JTlBVVCA9IDMKLV9QQ19OQU1FX01BWCA9IDQKLV9QQ19QQVRIX01BWCA9IDUKLV9QQ19QSVBFX0JVRiA9IDYKLV9QQ19OT19UUlVOQyA9IDcKLV9QQ19WRElTQUJMRSA9IDgKLV9QQ19DSE9XTl9SRVNUUklDVEVEID0gOQotX1BDX0ZJTEVTSVpFQklUUyA9IDEwCi1fUE9TSVhfVkVSU0lPTiA9IDE5OTAwOQotX1hPUEVOX1ZFUlNJT04gPSA0Ci1HRl9QQVRIID0gIi9ldGMvZ3JvdXAiCi1QRl9QQVRIID0gIi9ldGMvcGFzc3dkIgotRl9VTE9DSyA9IDAKLUZfTE9DSyA9IDEKLUZfVExPQ0sgPSAyCi1GX1RFU1QgPSAzCi1fUE9TSVhfSk9CX0NPTlRST0wgPSAxCi1fUE9TSVhfU0FWRURfSURTID0gMQotX1BPU0lYX1ZESVNBQkxFID0gMAotTlVMTCA9IDAKLVNURElOX0ZJTEVOTyA9IDAKLVNURE9VVF9GSUxFTk8gPSAxCi1TVERFUlJfRklMRU5PID0gMgotX1hPUEVOX1VOSVggPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fWFBHNCA9IDEKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9YT1BFTl9YQ1VfVkVSU0lPTiA9IDQKLV9QT1NJWF9TRU1BUEhPUkVTID0gMQotX1BPU0lYX1RIUkVBRFMgPSAxCi1fUE9TSVhfVEhSRUFEX0FUVFJfU1RBQ0tBRERSID0gMQotX1BPU0lYX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDEKLV9QT1NJWF9USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyA9IDEKLV9QT1NJWF9USFJFQURfUFJPQ0VTU19TSEFSRUQgPSAxCi1fUE9TSVhfVEhSRUFEX1NBRkVfRlVOQ1RJT05TID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfRk9SVF9SVU4gPSAxCi1fUE9TSVgyX0xPQ0FMRURFRiA9IDEKLV9QT1NJWDJfVVBFID0gMQotX0xGU19BU1lOQ0hST05PVVNfSU8gPSAxCi1fTEZTX0xBUkdFRklMRSA9IDEKLV9MRlM2NF9BU1lOQ0hST05PVVNfSU8gPSAxCi1fTEZTNjRfTEFSR0VGSUxFID0gMQotX0xGUzY0X1NURElPID0gMQotRk1OQU1FU1ogPSA4Ci1TTkRaRVJPID0gMHgwMDEKLVNORFBJUEUgPSAweDAwMgotUk5PUk0gPSAweDAwMAotUk1TR0QgPSAweDAwMQotUk1TR04gPSAweDAwMgotUk1PREVNQVNLID0gMHgwMDMKLVJQUk9UREFUID0gMHgwMDQKLVJQUk9URElTID0gMHgwMDgKLVJQUk9UTk9STSA9IDB4MDEwCi1SUFJPVE1BU0sgPSAweDAxYwotRkxVU0hSID0gMHgwMQotRkxVU0hXID0gMHgwMgotRkxVU0hSVyA9IDB4MDMKLUZMVVNIQkFORCA9IDB4MDQKLVNfSU5QVVQgPSAweDAwMDEKLVNfSElQUkkgPSAweDAwMDIKLVNfT1VUUFVUID0gMHgwMDA0Ci1TX01TRyA9IDB4MDAwOAotU19FUlJPUiA9IDB4MDAxMAotU19IQU5HVVAgPSAweDAwMjAKLVNfUkROT1JNID0gMHgwMDQwCi1TX1dSTk9STSA9IFNfT1VUUFVUCi1TX1JEQkFORCA9IDB4MDA4MAotU19XUkJBTkQgPSAweDAxMDAKLVNfQkFORFVSRyA9IDB4MDIwMAotUlNfSElQUkkgPSAweDAxCi1NU0dfSElQUkkgPSAweDAxCi1NU0dfQU5ZID0gMHgwMgotTVNHX0JBTkQgPSAweDA0Ci1NU0dfRElTQ0FSRCA9IDB4MDgKLU1TR19QRUVLSU9DVEwgPSAweDEwCi1NT1JFQ1RMID0gMQotTU9SRURBVEEgPSAyCi1NVVhJRF9BTEwgPSAoLTEpCi1BTllNQVJLID0gMHgwMQotTEFTVE1BUksgPSAweDAyCi1TVFIgPSAob3JkKCdTJyk8PDgpCi1JX05SRUFEID0gKFNUUnwwbzEpCi1JX1BVU0ggPSAoU1RSfDBvMikKLUlfUE9QID0gKFNUUnwwbzMpCi1JX0xPT0sgPSAoU1RSfDBvNCkKLUlfRkxVU0ggPSAoU1RSfDBvNSkKLUlfU1JET1BUID0gKFNUUnwwbzYpCi1JX0dSRE9QVCA9IChTVFJ8MG83KQotSV9TVFIgPSAoU1RSfDBvMTApCi1JX1NFVFNJRyA9IChTVFJ8MG8xMSkKLUlfR0VUU0lHID0gKFNUUnwwbzEyKQotSV9GSU5EID0gKFNUUnwwbzEzKQotSV9MSU5LID0gKFNUUnwwbzE0KQotSV9VTkxJTksgPSAoU1RSfDBvMTUpCi1JX1BFRUsgPSAoU1RSfDBvMTcpCi1JX0ZESU5TRVJUID0gKFNUUnwwbzIwKQotSV9TRU5ERkQgPSAoU1RSfDBvMjEpCi1JX1JFQ1ZGRCA9IChTVFJ8MG8yMikKLUlfRV9SRUNWRkQgPSAoU1RSfDBvMTYpCi1JX1JFQ1ZGRCA9IChTVFJ8MG8xNikKLUlfUkVDVkZEID0gKFNUUnwwbzIyKQotSV9TV1JPUFQgPSAoU1RSfDBvMjMpCi1JX0dXUk9QVCA9IChTVFJ8MG8yNCkKLUlfTElTVCA9IChTVFJ8MG8yNSkKLUlfUExJTksgPSAoU1RSfDBvMjYpCi1JX1BVTkxJTksgPSAoU1RSfDBvMjcpCi1JX0ZMVVNIQkFORCA9IChTVFJ8MG8zNCkKLUlfQ0tCQU5EID0gKFNUUnwwbzM1KQotSV9HRVRCQU5EID0gKFNUUnwwbzM2KQotSV9BVE1BUksgPSAoU1RSfDBvMzcpCi1JX1NFVENMVElNRSA9IChTVFJ8MG80MCkKLUlfR0VUQ0xUSU1FID0gKFNUUnwwbzQxKQotSV9DQU5QVVQgPSAoU1RSfDBvNDIpCi1JX1NfUkVDVkZEID0gKFNUUnwwbzQzKQotSV9TVEFUUyA9IChTVFJ8MG80NCkKLUlfQklHUElQRSA9IChTVFJ8MG80NSkKLUlfR0VUVFAgPSAoU1RSfDBvNDYpCi1JTkZUSU0gPSAtMQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtdW5peHdhcmU3L3JlZ2VuIGIvTGliL3BsYXQtdW5peHdhcmU3L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ODk5OGE3Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXVuaXh3YXJlNy9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXNyYCBpbgotVW5peFdhcmUqKQk7OwotKikJZWNobyBQcm9iYWJseSBub3Qgb24gYSBVbml4V2FyZSBzeXN0ZW0gMT4mMgotCWV4aXQgMTs7Ci1lc2FjCi1zZXQgLXYKLWgycHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1oMnB5IC91c3IvaW5jbHVkZS9zeXMvc3Ryb3B0cy5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdGZvcm0ucHkgYi9MaWIvcGxhdGZvcm0ucHkKaW5kZXggM2U3MjZhNy4uZTQ4YWQwYiAxMDA3NTUKLS0tIGEvTGliL3BsYXRmb3JtLnB5CisrKyBiL0xpYi9wbGF0Zm9ybS5weQpAQCAtMTMsNyArMTMsNiBAQAogIyAgICBQeXRob24gYnVnIHRyYWNrZXIgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcpIGFuZCBhc3NpZ24gdGhlbSB0byAibGVtYnVyZyIuCiAjCiAjICAgIFN0aWxsIG5lZWRlZDoKLSMgICAgKiBtb3JlIHN1cHBvcnQgZm9yIFdpbkNFCiAjICAgICogc3VwcG9ydCBmb3IgTVMtRE9TIChQeXRob25EWCA/KQogIyAgICAqIHN1cHBvcnQgZm9yIEFtaWdhIGFuZCBvdGhlciBzdGlsbCB1bnN1cHBvcnRlZCBwbGF0Zm9ybXMgcnVubmluZyBQeXRob24KICMgICAgKiBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIExpbnV4IGRpc3RyaWJ1dGlvbnMKQEAgLTI1MiwxMyArMjUxLDEzIEBACiAKIF9yZWxlYXNlX2ZpbGVuYW1lID0gcmUuY29tcGlsZShyJyhcdyspWy1fXShyZWxlYXNlfHZlcnNpb24pJywgcmUuQVNDSUkpCiBfbHNiX3JlbGVhc2VfdmVyc2lvbiA9IHJlLmNvbXBpbGUocicoLispJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJlbGVhc2UgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKFtcZC5dKyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyByZWxlYXNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyhbXGQuXSspJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInW14oXSooPzpcKCguKylcKSk/JywgcmUuQVNDSUkpCiBfcmVsZWFzZV92ZXJzaW9uID0gcmUuY29tcGlsZShyJyhbXjAtOV0rKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKD86IHJlbGVhc2UgKT8nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhbXGQuXSspJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInKD86IHJlbGVhc2UgKT8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyhbXGQuXSspJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKIAogIyBTZWUgYWxzbyBodHRwOi8vd3d3Lm5vdmVsbC5jb20vY29vbHNvbHV0aW9ucy9mZWF0dXJlLzExMjUxLmh0bWwKICMgYW5kIGh0dHA6Ly9saW51eG1hZmlhLmNvbS9mYXEvQWRtaW4vcmVsZWFzZS1maWxlcy5odG1sCkBAIC00MDgsOCArNDA3LDggQEAKICAgICByZXR1cm4gdmVyc2lvbgogCiBfdmVyX291dHB1dCA9IHJlLmNvbXBpbGUocicoPzooW1x3IF0rKSAoW1x3Ll0rKSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJy4qJwotICAgICAgICAgICAgICAgICAgICAgICAgICdcWy4qIChbXGQuXSspXF0pJykKKyAgICAgICAgICAgICAgICAgICAgICAgICByJy4qJworICAgICAgICAgICAgICAgICAgICAgICAgIHInXFsuKiAoW1xkLl0rKVxdKScpCiAKICMgRXhhbXBsZXMgb2YgVkVSIGNvbW1hbmQgb3V0cHV0OgogIwpAQCAtNTA5LDcgKzUwOCw3IEBACiAgICAgICAgIGZyb20gX3dpbnJlZyBpbXBvcnQgT3BlbktleUV4LCBRdWVyeVZhbHVlRXgsIENsb3NlS2V5LCBIS0VZX0xPQ0FMX01BQ0hJTkUKIAogICAgIHdpbnZlciA9IGdldHdpbmRvd3N2ZXJzaW9uKCkKLSAgICBtYWosIG1pbiwgYnVpbGQgPSB3aW52ZXIuX3BsYXRmb3JtX3ZlcnNpb24gb3Igd2ludmVyWzozXQorICAgIG1haiwgbWluLCBidWlsZCA9IHdpbnZlci5wbGF0Zm9ybV92ZXJzaW9uIG9yIHdpbnZlcls6M10KICAgICB2ZXJzaW9uID0gJ3swfS57MX0uezJ9Jy5mb3JtYXQobWFqLCBtaW4sIGJ1aWxkKQogCiAgICAgcmVsZWFzZSA9IChfV0lOMzJfQ0xJRU5UX1JFTEVBU0VTLmdldCgobWFqLCBtaW4pKSBvcgpAQCAtMTA5NSwyMiArMTA5NCwyMiBAQAogCiBfaXJvbnB5dGhvbl9zeXNfdmVyc2lvbl9wYXJzZXIgPSByZS5jb21waWxlKAogICAgIHInSXJvblB5dGhvblxzKicKLSAgICAnKFtcZFwuXSspJwotICAgICcoPzogXCgoW1xkXC5dKylcKSk/JwotICAgICcgb24gKC5ORVQgW1xkXC5dKyknLCByZS5BU0NJSSkKKyAgICByJyhbXGRcLl0rKScKKyAgICByJyg/OiBcKChbXGRcLl0rKVwpKT8nCisgICAgcicgb24gKC5ORVQgW1xkXC5dKyknLCByZS5BU0NJSSkKIAogIyBJcm9uUHl0aG9uIGNvdmVyaW5nIDIuNiBhbmQgMi43CiBfaXJvbnB5dGhvbjI2X3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICAgcicoW1xkLl0rKVxzKicKLSAgICAnXChJcm9uUHl0aG9uXHMqJwotICAgICdbXGQuXStccyonCi0gICAgJ1woKFtcZC5dKylcKSBvbiAoW1x3Ll0rIFtcZC5dKyg/OiBcKFxkKy1iaXRcKSk/KVwpJworICAgIHInXChJcm9uUHl0aG9uXHMqJworICAgIHInW1xkLl0rXHMqJworICAgIHInXCgoW1xkLl0rKVwpIG9uIChbXHcuXSsgW1xkLl0rKD86IFwoXGQrLWJpdFwpKT8pXCknCiApCiAKIF9weXB5X3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICAgcicoW1x3LitdKylccyonCi0gICAgJ1woIz8oW14sXSspLFxzKihbXHcgXSspLFxzKihbXHcgOl0rKVwpXHMqJwotICAgICdcW1B5UHkgW15cXV0rXF0/JykKKyAgICByJ1woIz8oW14sXSspLFxzKihbXHcgXSspLFxzKihbXHcgOl0rKVwpXHMqJworICAgIHInXFtQeVB5IFteXF1dK1xdPycpCiAKIF9zeXNfdmVyc2lvbl9jYWNoZSA9IHt9CiAKQEAgLTEzNDUsNyArMTM0NCw3IEBACiAgICAgICAgICAgICAjIHNlZSBpc3N1ZSAjMTMyMiBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3BsaXN0bGliLnB5IGIvTGliL3BsaXN0bGliLnB5CmluZGV4IDI1MDJiMzkuLjA5YmU1ZmQgMTAwNjQ0Ci0tLSBhL0xpYi9wbGlzdGxpYi5weQorKysgYi9MaWIvcGxpc3RsaWIucHkKQEAgLTQ3LDcgKzQ3LDcgQEAKICIiIgogX19hbGxfXyA9IFsKICAgICAicmVhZFBsaXN0IiwgIndyaXRlUGxpc3QiLCAicmVhZFBsaXN0RnJvbUJ5dGVzIiwgIndyaXRlUGxpc3RUb0J5dGVzIiwKLSAgICAiUGxpc3QiLCAiRGF0YSIsICJEaWN0IiwgIkZNVF9YTUwiLCAiRk1UX0JJTkFSWSIsCisgICAgIlBsaXN0IiwgIkRhdGEiLCAiRGljdCIsICJJbnZhbGlkRmlsZUV4Y2VwdGlvbiIsICJGTVRfWE1MIiwgIkZNVF9CSU5BUlkiLAogICAgICJsb2FkIiwgImR1bXAiLCAibG9hZHMiLCAiZHVtcHMiCiBdCiAKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IGY2NzIzOTAuLmNhZTY5NTAgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtNDMxLDYgKzQzMSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IGQ5ZjNmOTkuLjZkYmRhYjIgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtNDksNiArNDksNyBAQAogCiBkZWYgbm9ybWNhc2Uocyk6CiAgICAgIiIiTm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuICBIYXMgbm8gZWZmZWN0IHVuZGVyIFBvc2l4IiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgc3RyKSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAne30nIi5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQpAQCAtNjAsNiArNjEsNyBAQAogCiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICBzZXAgPSBfZ2V0X3NlcChzKQogICAgIHJldHVybiBzLnN0YXJ0c3dpdGgoc2VwKQogCkBAIC03MywxMiArNzUsMTMgQEAKICAgICBJZiBhbnkgY29tcG9uZW50IGlzIGFuIGFic29sdXRlIHBhdGgsIGFsbCBwcmV2aW91cyBwYXRoIGNvbXBvbmVudHMKICAgICB3aWxsIGJlIGRpc2NhcmRlZC4gIEFuIGVtcHR5IGxhc3QgcGFydCB3aWxsIHJlc3VsdCBpbiBhIHBhdGggdGhhdAogICAgIGVuZHMgd2l0aCBhIHNlcGFyYXRvci4iIiIKKyAgICBhID0gb3MuZnNwYXRoKGEpCiAgICAgc2VwID0gX2dldF9zZXAoYSkKICAgICBwYXRoID0gYQogICAgIHRyeToKICAgICAgICAgaWYgbm90IHA6CiAgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCi0gICAgICAgIGZvciBiIGluIHA6CisgICAgICAgIGZvciBiIGluIG1hcChvcy5mc3BhdGgsIHApOgogICAgICAgICAgICAgaWYgYi5zdGFydHN3aXRoKHNlcCk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IGIKICAgICAgICAgICAgIGVsaWYgbm90IHBhdGggb3IgcGF0aC5lbmRzd2l0aChzZXApOgpAQCAtOTksNiArMTAyLDcgQEAKIGRlZiBzcGxpdChwKToKICAgICAiIiJTcGxpdCBhIHBhdGhuYW1lLiAgUmV0dXJucyB0dXBsZSAiKGhlYWQsIHRhaWwpIiB3aGVyZSAidGFpbCIgaXMKICAgICBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4gIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQsIHRhaWwgPSBwWzppXSwgcFtpOl0KQEAgLTExMyw2ICsxMTcsNyBAQAogIyBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IHJvb3QgKyBleHQgPT0gcC4KIAogZGVmIHNwbGl0ZXh0KHApOgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYicvJwogICAgICAgICBleHRzZXAgPSBiJy4nCkBAIC0xMjgsNiArMTMzLDcgQEAKIGRlZiBzcGxpdGRyaXZlKHApOgogICAgICIiIlNwbGl0IGEgcGF0aG5hbWUgaW50byBkcml2ZSBhbmQgcGF0aC4gT24gUG9zaXgsIGRyaXZlIGlzIGFsd2F5cwogICAgIGVtcHR5LiIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICByZXR1cm4gcFs6MF0sIHAKIAogCkBAIC0xMzUsNiArMTQxLDcgQEAKIAogZGVmIGJhc2VuYW1lKHApOgogICAgICIiIlJldHVybnMgdGhlIGZpbmFsIGNvbXBvbmVudCBvZiBhIHBhdGhuYW1lIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHNlcCA9IF9nZXRfc2VwKHApCiAgICAgaSA9IHAucmZpbmQoc2VwKSArIDEKICAgICByZXR1cm4gcFtpOl0KQEAgLTE0NCw2ICsxNTEsNyBAQAogCiBkZWYgZGlybmFtZShwKToKICAgICAiIiJSZXR1cm5zIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50IG9mIGEgcGF0aG5hbWUiIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQgPSBwWzppXQpAQCAtMjIyLDYgKzIzMCw3IEBACiBkZWYgZXhwYW5kdXNlcihwYXRoKToKICAgICAiIiJFeHBhbmQgfiBhbmQgfnVzZXIgY29uc3RydWN0aW9ucy4gIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwKICAgICBkbyBub3RoaW5nLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgdGlsZGUgPSBiJ34nCiAgICAgZWxzZToKQEAgLTI2Nyw2ICsyNzYsNyBAQAogZGVmIGV4cGFuZHZhcnMocGF0aCk6CiAgICAgIiIiRXhwYW5kIHNoZWxsIHZhcmlhYmxlcyBvZiBmb3JtICR2YXIgYW5kICR7dmFyfS4gIFVua25vd24gdmFyaWFibGVzCiAgICAgYXJlIGxlZnQgdW5jaGFuZ2VkLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBnbG9iYWwgX3ZhcnByb2csIF92YXJwcm9nYgogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoOgpAQCAtMzE4LDYgKzMyOCw3IEBACiAKIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInLycKICAgICAgICAgZW1wdHkgPSBiJycKQEAgLTM1NSw2ICszNjYsNyBAQAogCiBkZWYgYWJzcGF0aChwYXRoKToKICAgICAiIiJSZXR1cm4gYW4gYWJzb2x1dGUgcGF0aC4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgbm90IGlzYWJzKHBhdGgpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZGIoKQpAQCAtMzcwLDYgKzM4Miw3IEBACiBkZWYgcmVhbHBhdGgoZmlsZW5hbWUpOgogICAgICIiIlJldHVybiB0aGUgY2Fub25pY2FsIHBhdGggb2YgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSwgZWxpbWluYXRpbmcgYW55CiBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGF0aC4iIiIKKyAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICBwYXRoLCBvayA9IF9qb2lucmVhbHBhdGgoZmlsZW5hbWVbOjBdLCBmaWxlbmFtZSwge30pCiAgICAgcmV0dXJuIGFic3BhdGgocGF0aCkKIApAQCAtNDM0LDYgKzQ0Nyw3IEBACiAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKIAorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgY3VyZGlyID0gYicuJwogICAgICAgICBzZXAgPSBiJy8nCkBAIC00NDUsNiArNDU5LDggQEAKIAogICAgIGlmIHN0YXJ0IGlzIE5vbmU6CiAgICAgICAgIHN0YXJ0ID0gY3VyZGlyCisgICAgZWxzZToKKyAgICAgICAgc3RhcnQgPSBvcy5mc3BhdGgoc3RhcnQpCiAKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHN0YXJ0KS5zcGxpdChzZXApIGlmIHhdCkBAIC00NzIsNiArNDg4LDcgQEAKICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQogCisgICAgcGF0aHMgPSB0dXBsZShtYXAob3MuZnNwYXRoLCBwYXRocykpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJy8nCiAgICAgICAgIGN1cmRpciA9IGInLicKZGlmZiAtLWdpdCBhL0xpYi9weWNsYnIucHkgYi9MaWIvcHljbGJyLnB5CmluZGV4IDRkNDBiODcuLmQ3ZGJhOTcgMTAwNjQ0Ci0tLSBhL0xpYi9weWNsYnIucHkKKysrIGIvTGliL3B5Y2xici5weQpAQCAtNDAsMTIgKzQwLDEwIEBACiAiIiIKIAogaW1wb3J0IGlvCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHRva2VuaXplCiBmcm9tIHRva2VuIGltcG9ydCBOQU1FLCBERURFTlQsIE9QCi1mcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKIF9fYWxsX18gPSBbInJlYWRtb2R1bGUiLCAicmVhZG1vZHVsZV9leCIsICJDbGFzcyIsICJGdW5jdGlvbiJdCiAKQEAgLTMyOCw2ICszMjYsNyBAQAogZGVmIF9tYWluKCk6CiAgICAgIyBNYWluIHByb2dyYW0gZm9yIHRlc3RpbmcuCiAgICAgaW1wb3J0IG9zCisgICAgZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgogICAgIG1vZCA9IHN5cy5hcmd2WzFdCiAgICAgaWYgb3MucGF0aC5leGlzdHMobW9kKToKICAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUobW9kKV0KZGlmZiAtLWdpdCBhL0xpYi9weWRvYy5weSBiL0xpYi9weWRvYy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDBkMGQwYWIuLjM5ZGIzOTEKLS0tIGEvTGliL3B5ZG9jLnB5CisrKyBiL0xpYi9weWRvYy5weQpAQCAtMjA5LDYgKzIwOSwxOCBAQAogICAgICAgICByZXN1bHRzLmFwcGVuZCgobmFtZSwga2luZCwgY2xzLCB2YWx1ZSkpCiAgICAgcmV0dXJuIHJlc3VsdHMKIAorZGVmIHNvcnRfYXR0cmlidXRlcyhhdHRycywgb2JqZWN0KToKKyAgICAnU29ydCB0aGUgYXR0cnMgbGlzdCBpbi1wbGFjZSBieSBfZmllbGRzIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IGJ5IG5hbWUnCisgICAgIyBUaGlzIGFsbG93cyBkYXRhIGRlc2NyaXB0b3JzIHRvIGJlIG9yZGVyZWQgYWNjb3JkaW5nCisgICAgIyB0byBhIF9maWVsZHMgYXR0cmlidXRlIGlmIHByZXNlbnQuCisgICAgZmllbGRzID0gZ2V0YXR0cihvYmplY3QsICdfZmllbGRzJywgW10pCisgICAgdHJ5OgorICAgICAgICBmaWVsZF9vcmRlciA9IHtuYW1lIDogaS1sZW4oZmllbGRzKSBmb3IgKGksIG5hbWUpIGluIGVudW1lcmF0ZShmaWVsZHMpfQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIGZpZWxkX29yZGVyID0ge30KKyAgICBrZXlmdW5jID0gbGFtYmRhIGF0dHI6IChmaWVsZF9vcmRlci5nZXQoYXR0clswXSwgMCksIGF0dHJbMF0pCisgICAgYXR0cnMuc29ydChrZXk9a2V5ZnVuYykKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtb2R1bGUgbWFuaXB1bGF0aW9uCiAKIGRlZiBpc3BhY2thZ2UocGF0aCk6CkBAIC0zMzgsNyArMzUwLDcgQEAKICAgICAgICAgZWxpZiBleGMgaXMgU3ludGF4RXJyb3I6CiAgICAgICAgICAgICAjIEEgU3ludGF4RXJyb3Igb2NjdXJyZWQgYmVmb3JlIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIG1vZHVsZS4KICAgICAgICAgICAgIHJhaXNlIEVycm9yRHVyaW5nSW1wb3J0KHZhbHVlLmZpbGVuYW1lLCBpbmZvKQotICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgorICAgICAgICBlbGlmIGlzc3ViY2xhc3MoZXhjLCBJbXBvcnRFcnJvcikgYW5kIHZhbHVlLm5hbWUgPT0gcGF0aDoKICAgICAgICAgICAgICMgTm8gc3VjaCBtb2R1bGUgaW4gdGhlIHBhdGguCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBlbHNlOgpAQCAtODY4LDggKzg4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQogICAgICAgICAgICAgdGFnICs9ICc6PGJyPlxuJwogCi0gICAgICAgICAgICAjIFNvcnQgYXR0cnMgYnkgbmFtZS4KLSAgICAgICAgICAgIGF0dHJzLnNvcnQoa2V5PWxhbWJkYSB0OiB0WzBdKQorICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCdNZXRob2RzICVzJyAlIHRhZywgYXR0cnMsCkBAIC0xMjg3LDggKzEyOTgsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0YWcgPSAiaW5oZXJpdGVkIGZyb20gJXMiICUgY2xhc3NuYW1lKHRoaXNjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQotICAgICAgICAgICAgIyBTb3J0IGF0dHJzIGJ5IG5hbWUuCi0gICAgICAgICAgICBhdHRycy5zb3J0KCkKKworICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCJNZXRob2RzICVzOlxuIiAlIHRhZywgYXR0cnMsCkBAIC0xNDE4LDEzICsxNDI5LDE0IEBACiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgbm90IHN5cy5zdGRpbi5pc2F0dHkoKSBvciBub3Qgc3lzLnN0ZG91dC5pc2F0dHkoKToKICAgICAgICAgcmV0dXJuIHBsYWlucGFnZXIKLSAgICBpZiAnUEFHRVInIGluIG9zLmVudmlyb246CisgICAgdXNlX3BhZ2VyID0gb3MuZW52aXJvbi5nZXQoJ01BTlBBR0VSJykgb3Igb3MuZW52aXJvbi5nZXQoJ1BBR0VSJykKKyAgICBpZiB1c2VfcGFnZXI6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOiAjIHBpcGVzIGNvbXBsZXRlbHkgYnJva2VuIGluIFdpbmRvd3MKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgdXNlX3BhZ2VyKQogICAgICAgICBlbGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogcGlwZXBhZ2VyKHBsYWluKHRleHQpLCB1c2VfcGFnZXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcih0ZXh0LCBvcy5lbnZpcm9uWydQQUdFUiddKQorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIodGV4dCwgdXNlX3BhZ2VyKQogICAgIGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6CiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CkBAIC0xOTAxLDEwICsxOTEzLDEwIEBACiAKICAgICBkZWYgaW50cm8oc2VsZik6CiAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCcnJwotV2VsY29tZSB0byBQeXRob24gJXMncyBoZWxwIHV0aWxpdHkhCitXZWxjb21lIHRvIFB5dGhvbiB7MH0ncyBoZWxwIHV0aWxpdHkhCiAKIElmIHRoaXMgaXMgeW91ciBmaXJzdCB0aW1lIHVzaW5nIFB5dGhvbiwgeW91IHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIG91dAotdGhlIHR1dG9yaWFsIG9uIHRoZSBJbnRlcm5ldCBhdCBodHRwOi8vZG9jcy5weXRob24ub3JnLyVzL3R1dG9yaWFsLy4KK3RoZSB0dXRvcmlhbCBvbiB0aGUgSW50ZXJuZXQgYXQgaHR0cDovL2RvY3MucHl0aG9uLm9yZy97MH0vdHV0b3JpYWwvLgogCiBFbnRlciB0aGUgbmFtZSBvZiBhbnkgbW9kdWxlLCBrZXl3b3JkLCBvciB0b3BpYyB0byBnZXQgaGVscCBvbiB3cml0aW5nCiBQeXRob24gcHJvZ3JhbXMgYW5kIHVzaW5nIFB5dGhvbiBtb2R1bGVzLiAgVG8gcXVpdCB0aGlzIGhlbHAgdXRpbGl0eSBhbmQKQEAgLTE5MTQsNyArMTkyNiw3IEBACiAibW9kdWxlcyIsICJrZXl3b3JkcyIsICJzeW1ib2xzIiwgb3IgInRvcGljcyIuICBFYWNoIG1vZHVsZSBhbHNvIGNvbWVzCiB3aXRoIGEgb25lLWxpbmUgc3VtbWFyeSBvZiB3aGF0IGl0IGRvZXM7IHRvIGxpc3QgdGhlIG1vZHVsZXMgd2hvc2UgbmFtZQogb3Igc3VtbWFyeSBjb250YWluIGEgZ2l2ZW4gc3RyaW5nIHN1Y2ggYXMgInNwYW0iLCB0eXBlICJtb2R1bGVzIHNwYW0iLgotJycnICUgdHVwbGUoW3N5cy52ZXJzaW9uWzozXV0qMikpCisnJycuZm9ybWF0KCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkpCiAKICAgICBkZWYgbGlzdChzZWxmLCBpdGVtcywgY29sdW1ucz00LCB3aWR0aD04MCk6CiAgICAgICAgIGl0ZW1zID0gbGlzdChzb3J0ZWQoaXRlbXMpKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CmluZGV4IGQ2ZjEzNjYuLjM1Nzk0ODQgMTAwNjQ0Ci0tLSBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQorKysgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKQEAgLTEsNzkgKzEsMTI5NDkgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCi0jIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBKdW4gMjUgMTQ6MDg6NDQgMjAxNgotdG9waWNzID0geydhc3NlcnQnOiB1J1xuVGhlICJhc3NlcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgImFzc2VydCBleHByZXNzaW9uIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG5cblRoZSBleHRlbmRlZCBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24xLCBleHByZXNzaW9uMiIsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCAiX19kZWJ1Z19fIiBhbmQgIkFzc2VydGlvbkVycm9yIiByZWZlclxudG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgIl9fZGVidWdfXyIgaXMgIlRydWUiIHVuZGVyXG5ub3JtYWwgY2lyY3Vtc3RhbmNlcywgIkZhbHNlIiB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgKGNvbW1hbmRcbmxpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGUgZm9yIGFuXG5hc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlIHRpbWUuICBOb3RlXG50aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZXhwcmVzc2lvblxudGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzIHBhcnQgb2YgdGhlXG5zdGFjayB0cmFjZS5cblxuQXNzaWdubWVudHMgdG8gIl9fZGVidWdfXyIgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAotICdhc3NpZ25tZW50JzogdSdcbkFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2lnbm1lbnQgc3RhdGVtZW50cyBhcmUgdXNlZCB0byAocmUpYmluZCBuYW1lcyB0byB2YWx1ZXMgYW5kIHRvXG5tb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG5cbiAgIGFzc2lnbm1lbnRfc3RtdCA6Oj0gKHRhcmdldF9saXN0ICI9IikrIChzdGFycmVkX2V4cHJlc3Npb24gfCB5aWVsZF9leHByZXNzaW9uKVxuICAgdGFyZ2V0X2xpc3QgICAgIDo6PSB0YXJnZXQgKCIsIiB0YXJnZXQpKiBbIiwiXVxuICAgdGFyZ2V0ICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICAgICAgICAgIHwgIigiIHRhcmdldF9saXN0ICIpIlxuICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3JcbiphdHRyaWJ1dGVyZWYqLCAqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG5cbkFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0IChyZW1lbWJlciB0aGF0XG50aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSBsYXR0ZXJcbnlpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byBlYWNoIG9mXG50aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlIHRhcmdldFxuKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gYXR0cmlidXRlXG5yZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbnVsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyB2YWxpZGl0eSwgYW5kXG5tYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSBydWxlc1xub2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiB3aXRoIHRoZVxuZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGVcbmhpZXJhcmNoeSopLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkIGluXG5wYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuIGVtcHR5XG4gIGl0ZXJhYmxlLlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIHNpbmdsZSB0YXJnZXQgaW4gcGFyZW50aGVzZXM6IFRoZSBvYmplY3RcbiAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0cywgb3IgYVxuICBzaW5nbGUgdGFyZ2V0IGluIHNxdWFyZSBicmFja2V0czogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlXG4gIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXRcbiAgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlXG4gIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbiAgICBhc3RlcmlzaywgY2FsbGVkIGEgInN0YXJyZWQiIHRhcmdldDogVGhlIG9iamVjdCBtdXN0IGJlIGFuXG4gICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZVxuICAgIHRhcmdldCBsaXN0LCBtaW51cyBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIGl0ZXJhYmxlIGFyZVxuICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvIHRoZVxuICAgIHRhcmdldHMgYWZ0ZXIgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgaXRlbXNcbiAgICBpbiB0aGUgaXRlcmFibGUgaXMgdGhlbiBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0XG4gICAgY2FuIGJlIGVtcHR5KS5cblxuICAqIEVsc2U6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZlxuICAgIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiIHN0YXRlbWVudFxuICAgIGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2s6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlXG4gICAgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UuXG5cbiAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuICAgIG5hbWVzcGFjZSBvciB0aGUgb3V0ZXIgbmFtZXNwYWNlIGRldGVybWluZWQgYnkgIm5vbmxvY2FsIixcbiAgICByZXNwZWN0aXZlbHkuXG5cbiAgVGhlIG5hbWUgaXMgcmVib3VuZCBpZiBpdCB3YXMgYWxyZWFkeSBib3VuZC4gIFRoaXMgbWF5IGNhdXNlIHRoZVxuICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgbmFtZSB0byByZWFjaFxuICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyBkZXN0cnVjdG9yIChpZiBpdFxuICBoYXMgb25lKSB0byBiZSBjYWxsZWQuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluXG4gIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4gIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsICJUeXBlRXJyb3IiIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSAiQXR0cmlidXRlRXJyb3IiKS5cblxuICBOb3RlOiBJZiB0aGUgb2JqZWN0IGlzIGEgY2xhc3MgaW5zdGFuY2UgYW5kIHRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlXG4gIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTIGV4cHJlc3Npb24sXG4gICJhLngiIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gaW5zdGFuY2VcbiAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCAiYS54IiBpcyBhbHdheXNcbiAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgVGh1cywgdGhlXG4gIHR3byBvY2N1cnJlbmNlcyBvZiAiYS54IiBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlIHNhbWVcbiAgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgYXR0cmlidXRlLCB0aGVcbiAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4gIGFzc2lnbm1lbnQ6XG5cbiAgICAgY2xhc3MgQ2xzOlxuICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuICAgICBpbnN0ID0gQ2xzKClcbiAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggYXMgM1xuXG4gIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoICJwcm9wZXJ0eSgpIi5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIkluZGV4RXJyb3IiIGlzIHJhaXNlZCAoYXNzaWdubWVudCB0byBhXG4gIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgaGF2ZSBhIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSBtYXBwaW5nXCdzIGtleSB0eXBlLFxuICBhbmQgdGhlIG1hcHBpbmcgaXMgdGhlbiBhc2tlZCB0byBjcmVhdGUgYSBrZXkvZGF0dW0gcGFpciB3aGljaCBtYXBzXG4gIHRoZSBzdWJzY3JpcHQgdG8gdGhlIGFzc2lnbmVkIG9iamVjdC4gIFRoaXMgY2FuIGVpdGhlciByZXBsYWNlIGFuXG4gIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSBuZXdcbiAga2V5L3ZhbHVlIHBhaXIgKGlmIG5vIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlIGV4aXN0ZWQpLlxuXG4gIEZvciB1c2VyLWRlZmluZWQgb2JqZWN0cywgdGhlICJfX3NldGl0ZW1fXygpIiBtZXRob2QgaXMgY2FsbGVkIHdpdGhcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3RcbiAgKHN1Y2ggYXMgYSBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2JqZWN0XG4gIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kIGV4cHJlc3Npb25zIGFyZVxuICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kIHRoZVxuICBzZXF1ZW5jZVwncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSWZcbiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlXG4gIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCwgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byByZXBsYWNlXG4gIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgbGVuZ3RoIG9mXG4gIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UsXG4gIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgdGFyZ2V0XG4gIHNlcXVlbmNlIGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5BbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwcyBiZXR3ZWVuXG50aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2ltdWx0YW5lb3VzXCcgKGZvclxuZXhhbXBsZSAiYSwgYiA9IGIsIGEiIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiB0aGVcbmNvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsIHNvbWV0aW1lc1xucmVzdWx0aW5nIGluIGNvbmZ1c2lvbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtIHByaW50c1xuIlswLCAyXSI6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMiAgICAgICAgICMgaSBpcyB1cGRhdGVkLCB0aGVuIHhbaV0gaXMgdXBkYXRlZFxuICAgcHJpbnQoeClcblxuU2VlIGFsc286ICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG5cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCi0gJ2F0b20taWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgKE5hbWVzKVxuKioqKioqKioqKioqKioqKioqKlxuXG5BbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSBzZWN0aW9uXG4qSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKiBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uICpOYW1pbmdcbmFuZCBiaW5kaW5nKiBmb3IgZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG5cbldoZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSBhdG9tIHlpZWxkc1xudGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byBldmFsdWF0ZSBpdFxucmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgc2luZ2xlIHVuZGVyc2NvcmVcbmluc2VydGVkLCBpbiBmcm9udCBvZiB0aGUgbmFtZS4gIEZvciBleGFtcGxlLCB0aGUgaWRlbnRpZmllciAiX19zcGFtIlxub2NjdXJyaW5nIGluIGEgY2xhc3MgbmFtZWQgIkhhbSIgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byAiX0hhbV9fc3BhbSIuXG5UaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCBjb250ZXh0IGluIHdoaWNoXG50aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlIHRyYW5zZm9ybWVkIG5hbWUgaXMgZXh0cmVtZWx5IGxvbmdcbihsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdHJ1bmNhdGlvbiBtYXlcbmhhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm9cbnRyYW5zZm9ybWF0aW9uIGlzIGRvbmUuXG4nLAotICdhdG9tLWxpdGVyYWxzJzogdSJcbkxpdGVyYWxzXG4qKioqKioqKlxuXG5QeXRob24gc3VwcG9ydHMgc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBhbmQgdmFyaW91cyBudW1lcmljXG5saXRlcmFsczpcblxuICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG5cbkV2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgKHN0cmluZyxcbmJ5dGVzLCBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggbnVtYmVyKSB3aXRoIHRoZSBnaXZlblxudmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiBmbG9hdGluZyBwb2ludFxuYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiAqTGl0ZXJhbHMqIGZvciBkZXRhaWxzLlxuXG5BbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kIGhlbmNlIHRoZVxub2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICBNdWx0aXBsZVxuZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSBzYW1lXG5vY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgbWF5IG9idGFpblxudGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLlxuIiwKLSAnYXR0cmlidXRlLWFjY2Vzcyc6IHUnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbj09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cbicsCi0gJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJzogdSdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllci4gIFRoaXNcbnByb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZC5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBleGNlcHRpb24gIkF0dHJpYnV0ZUVycm9yIiBpc1xucmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIG9iamVjdCBwcm9kdWNlZCBpc1xuZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgdGhlIHNhbWUgYXR0cmlidXRlXG5yZWZlcmVuY2UgbWF5IHlpZWxkIGRpZmZlcmVudCBvYmplY3RzLlxuJywKLSAnYXVnYXNzaWduJzogdSdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdiaW5hcnknOiB1J1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIkAiIG1fZXhwciB8XG4gICAgICAgICAgICAgIG1fZXhwciAiLy8iIHVfZXhwcnwgbV9leHByICIvIiB1X2V4cHIgfFxuICAgICAgICAgICAgICBtX2V4cHIgIiUiIHVfZXhwclxuICAgYV9leHByIDo6PSBtX2V4cHIgfCBhX2V4cHIgIisiIG1fZXhwciB8IGFfZXhwciAiLSIgbV9leHByXG5cblRoZSAiKiIgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzLCBvciBvbmUgYXJndW1lbnQgbXVzdCBiZSBhblxuaW50ZWdlciBhbmQgdGhlIG90aGVyIG11c3QgYmUgYSBzZXF1ZW5jZS4gSW4gdGhlIGZvcm1lciBjYXNlLCB0aGVcbm51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlIGFuZCB0aGVuIG11bHRpcGxpZWQgdG9nZXRoZXIuXG5JbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhIG5lZ2F0aXZlXG5yZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSAiQCIgKGF0KSBvcGVyYXRvciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBtYXRyaXhcbm11bHRpcGxpY2F0aW9uLiAgTm8gYnVpbHRpbiBQeXRob24gdHlwZXMgaW1wbGVtZW50IHRoaXMgb3BlcmF0b3IuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNS5cblxuVGhlICIvIiAoZGl2aXNpb24pIGFuZCAiLy8iIChmbG9vciBkaXZpc2lvbikgb3BlcmF0b3JzIHlpZWxkIHRoZVxucXVvdGllbnQgb2YgdGhlaXIgYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuIERpdmlzaW9uIG9mIGludGVnZXJzIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSAiWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi5cblxuVGhlICIlIiAobW9kdWxvKSBvcGVyYXRvciB5aWVsZHMgdGhlIHJlbWFpbmRlciBmcm9tIHRoZSBkaXZpc2lvbiBvZlxudGhlIGZpcnN0IGFyZ3VtZW50IGJ5IHRoZSBzZWNvbmQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIEEgemVybyByaWdodCBhcmd1bWVudCByYWlzZXMgdGhlXG4iWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCAiMy4xNCUwLjciIGVxdWFscyAiMC4zNCIgKHNpbmNlICIzLjE0IiBlcXVhbHMgIjQqMC43ICtcbjAuMzQiLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoIHRoZSBzYW1lIHNpZ25cbmFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcmVzdWx0IGlzXG5zdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiAieCA9PSAoeC8veSkqeSArICh4JXkpIi4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlIGFsc29cbmNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZGl2bW9kKCkiOiAiZGl2bW9kKHgsIHkpID09XG4oeC8veSwgeCV5KSIuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgIiUiXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICJkaXZtb2QoKSJcbmZ1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhXG5mbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAotICdiaXR3aXNlJzogdSdcbkJpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbDpcblxuICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuICAgeG9yX2V4cHIgOjo9IGFuZF9leHByIHwgeG9yX2V4cHIgIl4iIGFuZF9leHByXG4gICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuXG5UaGUgIiYiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgaW50ZWdlcnMuXG5cblRoZSAiXiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIFhPUiAoZXhjbHVzaXZlIE9SKSBvZiBpdHNcbmFyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cblxuVGhlICJ8IiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgaXRzIGFyZ3VtZW50cyxcbndoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nLAotICdibHRpbi1jb2RlLW9iamVjdHMnOiB1J1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gImNvbXBpbGUoKSIgZnVuY3Rpb24gYW5kIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBmdW5jdGlvbiBvYmplY3RzXG50aHJvdWdoIHRoZWlyICJfX2NvZGVfXyIgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgImNvZGUiIG1vZHVsZS5cblxuQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuc291cmNlIHN0cmluZykgdG8gdGhlICJleGVjKCkiIG9yICJldmFsKCkiICBidWlsdC1pbiBmdW5jdGlvbnMuXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6IHUnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbiJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShFbGxpcHNpcykoKSIgcHJvZHVjZXMgdGhlXG4iRWxsaXBzaXMiIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyAiRWxsaXBzaXMiIG9yICIuLi4iLlxuJywKLSAnYmx0aW4tbnVsbC1vYmplY3QnOiB1J1xuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuIGFcbnZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbFxub2JqZWN0LCBuYW1lZCAiTm9uZSIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShOb25lKSgpIiBwcm9kdWNlcyB0aGVcbnNhbWUgc2luZ2xldG9uLlxuXG5JdCBpcyB3cml0dGVuIGFzICJOb25lIi5cbicsCi0gJ2JsdGluLXR5cGUtb2JqZWN0cyc6IHUnXG5UeXBlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5UeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuIG9iamVjdFwncyB0eXBlIGlzXG5hY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInR5cGUoKSIuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgInR5cGVzIiBkZWZpbmVzIG5hbWVzIGZvclxuYWxsIHN0YW5kYXJkIGJ1aWx0LWluIHR5cGVzLlxuXG5UeXBlcyBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8Y2xhc3MgXCdpbnRcJz4iLlxuJywKLSAnYm9vbGVhbnMnOiB1J1xuQm9vbGVhbiBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKipcblxuICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4gICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuICAgbm90X3Rlc3QgOjo9IGNvbXBhcmlzb24gfCAibm90IiBub3RfdGVzdFxuXG5JbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gZXhwcmVzc2lvbnMgYXJlXG51c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIGZhbHNlOiAiRmFsc2UiLCAiTm9uZSIsIG51bWVyaWMgemVybyBvZiBhbGwgdHlwZXMsIGFuZCBlbXB0eVxuc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG5kaWN0aW9uYXJpZXMsIHNldHMgYW5kIGZyb3plbnNldHMpLiAgQWxsIG90aGVyIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlIGJ5XG5wcm92aWRpbmcgYSAiX19ib29sX18oKSIgbWV0aG9kLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCIgeWllbGRzICJUcnVlIiBpZiBpdHMgYXJndW1lbnQgaXMgZmFsc2UsICJGYWxzZSJcbm90aGVyd2lzZS5cblxuVGhlIGV4cHJlc3Npb24gInggYW5kIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuVGhlIGV4cHJlc3Npb24gInggb3IgeSIgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIHRydWUsIGl0cyB2YWx1ZVxuaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZSBpc1xucmV0dXJuZWQuXG5cbihOb3RlIHRoYXQgbmVpdGhlciAiYW5kIiBub3IgIm9yIiByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgdGhleVxucmV0dXJuIHRvICJGYWxzZSIgYW5kICJUcnVlIiwgYnV0IHJhdGhlciByZXR1cm4gdGhlIGxhc3QgZXZhbHVhdGVkXG5hcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG4icyBvciBcJ2Zvb1wnIiB5aWVsZHMgdGhlIGRlc2lyZWQgdmFsdWUuICBCZWNhdXNlICJub3QiIGhhcyB0byBjcmVhdGUgYVxubmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIGl0c1xuYXJndW1lbnQgKGZvciBleGFtcGxlLCAibm90IFwnZm9vXCciIHByb2R1Y2VzICJGYWxzZSIgcmF0aGVyIHRoYW4gIlwnXCciLilcbicsCi0gJ2JyZWFrJzogdSdcblRoZSAiYnJlYWsiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGJyZWFrX3N0bXQgOjo9ICJicmVhayJcblxuImJyZWFrIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gdGhhdFxubG9vcC5cblxuSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICJlbHNlIlxuY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG5cbklmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG5rZWVwcyBpdHMgY3VycmVudCB2YWx1ZS5cblxuV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgImZpbmFsbHkiXG5jbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgdGhlXG5sb29wLlxuJywKLSAnY2FsbGFibGUtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicsCi0gJ2NhbGxzJzogdSdcbkNhbGxzXG4qKioqKlxuXG5BIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgKmZ1bmN0aW9uKikgd2l0aCBhIHBvc3NpYmx5XG5lbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIgc3RhcnJlZF9hbmRfa2V5d29yZHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZHNfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgfCBzdGFycmVkX2FuZF9rZXl3b3JkcyBbIiwiIGtleXdvcmRzX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZHNfYXJndW1lbnRzXG4gICBwb3NpdGlvbmFsX2FyZ3VtZW50cyA6Oj0gWyIqIl0gZXhwcmVzc2lvbiAoIiwiIFsiKiJdIGV4cHJlc3Npb24pKlxuICAgc3RhcnJlZF9hbmRfa2V5d29yZHMgOjo9ICgiKiIgZXhwcmVzc2lvbiB8IGtleXdvcmRfaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiICIqIiBleHByZXNzaW9uIHwgIiwiIGtleXdvcmRfaXRlbSkqXG4gICBrZXl3b3Jkc19hcmd1bWVudHMgICA6Oj0gKGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBrZXl3b3JkX2l0ZW0gfCAiKioiIGV4cHJlc3Npb24pKlxuICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cblxuQW4gb3B0aW9uYWwgdHJhaWxpbmcgY29tbWEgbWF5IGJlIHByZXNlbnQgYWZ0ZXIgdGhlIHBvc2l0aW9uYWwgYW5kXG5rZXl3b3JkIGFyZ3VtZW50cyBidXQgZG9lcyBub3QgYWZmZWN0IHRoZSBzZW1hbnRpY3MuXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYSBjYWxsYWJsZSBvYmplY3QgKHVzZXItZGVmaW5lZFxuZnVuY3Rpb25zLCBidWlsdC1pbiBmdW5jdGlvbnMsIG1ldGhvZHMgb2YgYnVpbHQtaW4gb2JqZWN0cywgY2xhc3Ncbm9iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgYWxsIG9iamVjdHMgaGF2aW5nIGFcbiJfX2NhbGxfXygpIiBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbipGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgZm9ybWFsICpwYXJhbWV0ZXIqIGxpc3RzLlxuXG5JZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcHJlc2VudCwgdGhleSBhcmUgZmlyc3QgY29udmVydGVkIHRvXG5wb3NpdGlvbmFsIGFyZ3VtZW50cywgYXMgZm9sbG93cy4gIEZpcnN0LCBhIGxpc3Qgb2YgdW5maWxsZWQgc2xvdHMgaXNcbmNyZWF0ZWQgZm9yIHRoZSBmb3JtYWwgcGFyYW1ldGVycy4gIElmIHRoZXJlIGFyZSBOIHBvc2l0aW9uYWxcbmFyZ3VtZW50cywgdGhleSBhcmUgcGxhY2VkIGluIHRoZSBmaXJzdCBOIHNsb3RzLiAgTmV4dCwgZm9yIGVhY2hcbmtleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuY29ycmVzcG9uZGluZyBzbG90IChpZiB0aGUgaWRlbnRpZmllciBpcyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgZm9ybWFsXG5wYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90IGlzXG5hbHJlYWR5IGZpbGxlZCwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZVxudmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiB0aGVcbmV4cHJlc3Npb24gaXMgIk5vbmUiLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggdGhlXG5jb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIChEZWZhdWx0XG52YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbm11dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlIHdpbGxcbmJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb25cJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgYW55XG51bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgIlR5cGVFcnJvciJcbmV4Y2VwdGlvbiBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBsaXN0IG9mIGZpbGxlZCBzbG90cyBpcyB1c2VkIGFzXG50aGUgYXJndW1lbnQgbGlzdCBmb3IgdGhlIGNhbGwuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbmJ1aWx0LWluIGZ1bmN0aW9ucyB3aG9zZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgbmFtZXMsIGV2ZW5cbmlmIHRoZXkgYXJlIFwnbmFtZWRcJyBmb3IgdGhlIHB1cnBvc2Ugb2YgZG9jdW1lbnRhdGlvbiwgYW5kIHdoaWNoXG50aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSBjYXNlXG5mb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGluIEMgdGhhdCB1c2UgIlB5QXJnX1BhcnNlVHVwbGUoKSIgdG8gcGFyc2VcbnRoZWlyIGFyZ3VtZW50cy5cblxuSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsIHBhcmFtZXRlclxuc2xvdHMsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCBmb3JtYWxcbnBhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuKG9yIGFuIGVtcHR5IHR1cGxlIGlmIHRoZXJlIHdlcmUgbm8gZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzKS5cblxuSWYgYW55IGtleXdvcmQgYXJndW1lbnQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGZvcm1hbCBwYXJhbWV0ZXJcbm5hbWUsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG5hcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG5jb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlIG5vXG5leGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG5cbklmIHRoZSBzeW50YXggIipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLCAiZXhwcmVzc2lvbiJcbm11c3QgZXZhbHVhdGUgdG8gYW4gKml0ZXJhYmxlKi4gIEVsZW1lbnRzIGZyb20gdGhlc2UgaXRlcmFibGVzIGFyZVxudHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gIEZvciB0aGUgY2FsbFxuImYoeDEsIHgyLCAqeSwgeDMsIHg0KSIsIGlmICp5KiBldmFsdWF0ZXMgdG8gYSBzZXF1ZW5jZSAqeTEqLCAuLi4sXG4qeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHdpdGggTSs0IHBvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosXG4qeDIqLCAqeTEqLCAuLi4sICp5TSosICp4MyosICp4NCouXG5cbkEgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCBtYXlcbmFwcGVhciAqYWZ0ZXIqIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnRzLCBpdCBpcyBwcm9jZXNzZWQgKmJlZm9yZSpcbnRoZSBrZXl3b3JkIGFyZ3VtZW50cyAoYW5kIGFueSAiKipleHByZXNzaW9uIiBhcmd1bWVudHMgLS0gc2VlIGJlbG93KS5cblNvOlxuXG4gICA+Pj4gZGVmIGYoYSwgYik6XG4gICAuLi4gICAgIHByaW50KGEsIGIpXG4gICAuLi5cbiAgID4+PiBmKGI9MSwgKigyLCkpXG4gICAyIDFcbiAgID4+PiBmKGE9MSwgKigyLCkpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgXCdhXCdcbiAgID4+PiBmKDEsICooMiwpKVxuICAgMSAyXG5cbkl0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheFxudG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzIG5vdFxuYXJpc2UuXG5cbklmIHRoZSBzeW50YXggIioqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbiJleHByZXNzaW9uIiBtdXN0IGV2YWx1YXRlIHRvIGEgKm1hcHBpbmcqLCB0aGUgY29udGVudHMgb2Ygd2hpY2ggYXJlXG50cmVhdGVkIGFzIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMuICBJZiBhIGtleXdvcmQgaXMgYWxyZWFkeVxucHJlc2VudCAoYXMgYW4gZXhwbGljaXQga2V5d29yZCBhcmd1bWVudCwgb3IgZnJvbSBhbm90aGVyIHVucGFja2luZyksXG5hICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5cbkZvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNTogRnVuY3Rpb24gY2FsbHMgYWNjZXB0IGFueSBudW1iZXIgb2YgIioiIGFuZFxuIioqIiB1bnBhY2tpbmdzLCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBtYXkgZm9sbG93IGl0ZXJhYmxlIHVucGFja2luZ3NcbigiKiIpLCBhbmQga2V5d29yZCBhcmd1bWVudHMgbWF5IGZvbGxvdyBkaWN0aW9uYXJ5IHVucGFja2luZ3MgKCIqKiIpLlxuT3JpZ2luYWxseSBwcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cblxuQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5ICJOb25lIiwgdW5sZXNzIGl0IHJhaXNlcyBhblxuZXhjZXB0aW9uLiAgSG93IHRoaXMgdmFsdWUgaXMgY29tcHV0ZWQgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiB0aGVcbmNhbGxhYmxlIG9iamVjdC5cblxuSWYgaXQgaXMtLS1cblxuYSB1c2VyLWRlZmluZWQgZnVuY3Rpb246XG4gICBUaGUgY29kZSBibG9jayBmb3IgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLCBwYXNzaW5nIGl0IHRoZVxuICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgdGhlXG4gICBmb3JtYWwgcGFyYW1ldGVycyB0byB0aGUgYXJndW1lbnRzOyB0aGlzIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4gICAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICJyZXR1cm4iXG4gICBzdGF0ZW1lbnQsIHRoaXMgc3BlY2lmaWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuXG5cbmEgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kOlxuICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSAqQnVpbHQtaW4gRnVuY3Rpb25zKiBmb3JcbiAgIHRoZSBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuXG5hIGNsYXNzIG9iamVjdDpcbiAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG5cbmEgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiBhcmd1bWVudFxuICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4gICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cblxuYSBjbGFzcyBpbnN0YW5jZTpcbiAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiB0aGVcbiAgIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCi0gJ2NsYXNzJzogdSdcbkNsYXNzIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbYXJndW1lbnRfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICIic2VsZi5uYW1lIiIsXG5hbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZVxud2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgZGVmYXVsdHNcbmZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgdG9cbnVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG52YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4gIENsYXNzIERlY29yYXRvcnNcbicsCi0gJ2NvbXBhcmlzb25zJzogdSdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiBpc1xuZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxub25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHoiLCBleGNlcHRcbnRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuXG4qYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICh0aG91Z2hcbnBlcmhhcHMgbm90IHByZXR0eSkuXG5cblxuVmFsdWUgY29tcGFyaXNvbnNcbj09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgdGhlIHZhbHVlc1xub2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBkbyBub3QgbmVlZCB0byBoYXZlIHRoZSBzYW1lIHR5cGUuXG5cbkNoYXB0ZXIgKk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXMqIHN0YXRlcyB0aGF0IG9iamVjdHMgaGF2ZSBhIHZhbHVlXG4oaW4gYWRkaXRpb24gdG8gdHlwZSBhbmQgaWRlbnRpdHkpLiAgVGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcyBhXG5yYXRoZXIgYWJzdHJhY3Qgbm90aW9uIGluIFB5dGhvbjogRm9yIGV4YW1wbGUsIHRoZXJlIGlzIG5vIGNhbm9uaWNhbFxuYWNjZXNzIG1ldGhvZCBmb3IgYW4gb2JqZWN0XCdzIHZhbHVlLiAgQWxzbywgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnRcbnRoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBzaG91bGQgYmUgY29uc3RydWN0ZWQgaW4gYSBwYXJ0aWN1bGFyIHdheSxcbmUuZy4gY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9yc1xuaW1wbGVtZW50IGEgcGFydGljdWxhciBub3Rpb24gb2Ygd2hhdCB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzLiAgT25lXG5jYW4gdGhpbmsgb2YgdGhlbSBhcyBkZWZpbmluZyB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGluZGlyZWN0bHksIGJ5XG5tZWFucyBvZiB0aGVpciBjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLlxuXG5CZWNhdXNlIGFsbCB0eXBlcyBhcmUgKGRpcmVjdCBvciBpbmRpcmVjdCkgc3VidHlwZXMgb2YgIm9iamVjdCIsIHRoZXlcbmluaGVyaXQgdGhlIGRlZmF1bHQgY29tcGFyaXNvbiBiZWhhdmlvciBmcm9tICJvYmplY3QiLiAgVHlwZXMgY2FuXG5jdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciBieSBpbXBsZW1lbnRpbmcgKnJpY2ggY29tcGFyaXNvblxubWV0aG9kcyogbGlrZSAiX19sdF9fKCkiLCBkZXNjcmliZWQgaW4gKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbiAoIj09IiBhbmQgIiE9IikgaXMgYmFzZWRcbm9uIHRoZSBpZGVudGl0eSBvZiB0aGUgb2JqZWN0cy4gIEhlbmNlLCBlcXVhbGl0eSBjb21wYXJpc29uIG9mXG5pbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBpZGVudGl0eSByZXN1bHRzIGluIGVxdWFsaXR5LCBhbmQgZXF1YWxpdHlcbmNvbXBhcmlzb24gb2YgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMgcmVzdWx0cyBpblxuaW5lcXVhbGl0eS4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoZSBkZXNpcmUgdGhhdFxuYWxsIG9iamVjdHMgc2hvdWxkIGJlIHJlZmxleGl2ZSAoaS5lLiAieCBpcyB5IiBpbXBsaWVzICJ4ID09IHkiKS5cblxuQSBkZWZhdWx0IG9yZGVyIGNvbXBhcmlzb24gKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgaXMgbm90IHByb3ZpZGVkO1xuYW4gYXR0ZW1wdCByYWlzZXMgIlR5cGVFcnJvciIuICBBIG1vdGl2YXRpb24gZm9yIHRoaXMgZGVmYXVsdCBiZWhhdmlvclxuaXMgdGhlIGxhY2sgb2YgYSBzaW1pbGFyIGludmFyaWFudCBhcyBmb3IgZXF1YWxpdHkuXG5cblRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uLCB0aGF0IGluc3RhbmNlcyB3aXRoXG5kaWZmZXJlbnQgaWRlbnRpdGllcyBhcmUgYWx3YXlzIHVuZXF1YWwsIG1heSBiZSBpbiBjb250cmFzdCB0byB3aGF0XG50eXBlcyB3aWxsIG5lZWQgdGhhdCBoYXZlIGEgc2Vuc2libGUgZGVmaW5pdGlvbiBvZiBvYmplY3QgdmFsdWUgYW5kXG52YWx1ZS1iYXNlZCBlcXVhbGl0eS4gIFN1Y2ggdHlwZXMgd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSB0aGVpclxuY29tcGFyaXNvbiBiZWhhdmlvciwgYW5kIGluIGZhY3QsIGEgbnVtYmVyIG9mIGJ1aWx0LWluIHR5cGVzIGhhdmUgZG9uZVxudGhhdC5cblxuVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgY29tcGFyaXNvbiBiZWhhdmlvciBvZiB0aGUgbW9zdFxuaW1wb3J0YW50IGJ1aWx0LWluIHR5cGVzLlxuXG4qIE51bWJlcnMgb2YgYnVpbHQtaW4gbnVtZXJpYyB0eXBlcyAoKk51bWVyaWMgVHlwZXMgLS0tIGludCwgZmxvYXQsXG4gIGNvbXBsZXgqKSBhbmQgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdHlwZXMgImZyYWN0aW9ucy5GcmFjdGlvbiIgYW5kXG4gICJkZWNpbWFsLkRlY2ltYWwiIGNhbiBiZSBjb21wYXJlZCB3aXRoaW4gYW5kIGFjcm9zcyB0aGVpciB0eXBlcyxcbiAgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdCBjb21wbGV4IG51bWJlcnMgZG8gbm90IHN1cHBvcnQgb3JkZXJcbiAgY29tcGFyaXNvbi4gIFdpdGhpbiB0aGUgbGltaXRzIG9mIHRoZSB0eXBlcyBpbnZvbHZlZCwgdGhleSBjb21wYXJlXG4gIG1hdGhlbWF0aWNhbGx5IChhbGdvcml0aG1pY2FsbHkpIGNvcnJlY3Qgd2l0aG91dCBsb3NzIG9mIHByZWNpc2lvbi5cblxuICBUaGUgbm90LWEtbnVtYmVyIHZhbHVlcyAiZmxvYXQoXCdOYU5cJykiIGFuZCAiRGVjaW1hbChcJ05hTlwnKSIgYXJlXG4gIHNwZWNpYWwuICBUaGV5IGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcyAoInggaXMgeCIgaXMgdHJ1ZSkgYnV0XG4gIGFyZSBub3QgZXF1YWwgdG8gdGhlbXNlbHZlcyAoInggPT0geCIgaXMgZmFsc2UpLiAgQWRkaXRpb25hbGx5LFxuICBjb21wYXJpbmcgYW55IG51bWJlciB0byBhIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiAiRmFsc2UiLlxuICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8IGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpIDwgMyIgd2lsbFxuICByZXR1cm4gIkZhbHNlIi5cblxuKiBCaW5hcnkgc2VxdWVuY2VzIChpbnN0YW5jZXMgb2YgImJ5dGVzIiBvciAiYnl0ZWFycmF5IikgY2FuIGJlXG4gIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLiAgVGhleSBjb21wYXJlXG4gIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIChpbnN0YW5jZXMgb2YgInN0ciIpIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlXG4gIG51bWVyaWNhbCBVbmljb2RlIGNvZGUgcG9pbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAib3JkKCkiKSBvZiB0aGVpciBjaGFyYWN0ZXJzLiBbM11cblxuICBTdHJpbmdzIGFuZCBiaW5hcnkgc2VxdWVuY2VzIGNhbm5vdCBiZSBkaXJlY3RseSBjb21wYXJlZC5cblxuKiBTZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAidHVwbGUiLCAibGlzdCIsIG9yICJyYW5nZSIpIGNhbiBiZVxuICBjb21wYXJlZCBvbmx5IHdpdGhpbiBlYWNoIG9mIHRoZWlyIHR5cGVzLCB3aXRoIHRoZSByZXN0cmljdGlvbiB0aGF0XG4gIHJhbmdlcyBkbyBub3Qgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uLiAgRXF1YWxpdHkgY29tcGFyaXNvbiBhY3Jvc3NcbiAgdGhlc2UgdHlwZXMgcmVzdWx0cyBpbiB1bmVxdWFsaXR5LCBhbmQgb3JkZXJpbmcgY29tcGFyaXNvbiBhY3Jvc3NcbiAgdGhlc2UgdHlwZXMgcmFpc2VzICJUeXBlRXJyb3IiLlxuXG4gIFNlcXVlbmNlcyBjb21wYXJlIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gb2ZcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgd2hlcmVieSByZWZsZXhpdml0eSBvZiB0aGUgZWxlbWVudHMgaXNcbiAgZW5mb3JjZWQuXG5cbiAgSW4gZW5mb3JjaW5nIHJlZmxleGl2aXR5IG9mIGVsZW1lbnRzLCB0aGUgY29tcGFyaXNvbiBvZiBjb2xsZWN0aW9uc1xuICBhc3N1bWVzIHRoYXQgZm9yIGEgY29sbGVjdGlvbiBlbGVtZW50ICJ4IiwgInggPT0geCIgaXMgYWx3YXlzIHRydWUuXG4gIEJhc2VkIG9uIHRoYXQgYXNzdW1wdGlvbiwgZWxlbWVudCBpZGVudGl0eSBpcyBjb21wYXJlZCBmaXJzdCwgYW5kXG4gIGVsZW1lbnQgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgZWxlbWVudHMuICBUaGlzXG4gIGFwcHJvYWNoIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgYSBzdHJpY3QgZWxlbWVudCBjb21wYXJpc29uXG4gIHdvdWxkLCBpZiB0aGUgY29tcGFyZWQgZWxlbWVudHMgYXJlIHJlZmxleGl2ZS4gIEZvciBub24tcmVmbGV4aXZlXG4gIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvciBzdHJpY3QgZWxlbWVudFxuICBjb21wYXJpc29uLCBhbmQgbWF5IGJlIHN1cnByaXNpbmc6ICBUaGUgbm9uLXJlZmxleGl2ZSBub3QtYS1udW1iZXJcbiAgdmFsdWVzIGZvciBleGFtcGxlIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGNvbXBhcmlzb24gYmVoYXZpb3Igd2hlblxuICB1c2VkIGluIGEgbGlzdDpcblxuICAgICA+Pj4gbmFuID0gZmxvYXQoXCdOYU5cJylcbiAgICAgPj4+IG5hbiBpcyBuYW5cbiAgICAgVHJ1ZVxuICAgICA+Pj4gbmFuID09IG5hblxuICAgICBGYWxzZSAgICAgICAgICAgICAgICAgPC0tIHRoZSBkZWZpbmVkIG5vbi1yZWZsZXhpdmUgYmVoYXZpb3Igb2YgTmFOXG4gICAgID4+PiBbbmFuXSA9PSBbbmFuXVxuICAgICBUcnVlICAgICAgICAgICAgICAgICAgPC0tIGxpc3QgZW5mb3JjZXMgcmVmbGV4aXZpdHkgYW5kIHRlc3RzIGlkZW50aXR5IGZpcnN0XG5cbiAgTGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gYmV0d2VlbiBidWlsdC1pbiBjb2xsZWN0aW9ucyB3b3JrcyBhc1xuICBmb2xsb3dzOlxuXG4gICogRm9yIHR3byBjb2xsZWN0aW9ucyB0byBjb21wYXJlIGVxdWFsLCB0aGV5IG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgICB0eXBlLCBoYXZlIHRoZSBzYW1lIGxlbmd0aCwgYW5kIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nXG4gICAgZWxlbWVudHMgbXVzdCBjb21wYXJlIGVxdWFsIChmb3IgZXhhbXBsZSwgIlsxLDJdID09ICgxLDIpIiBpc1xuICAgIGZhbHNlIGJlY2F1c2UgdGhlIHR5cGUgaXMgbm90IHRoZSBzYW1lKS5cblxuICAqIENvbGxlY3Rpb25zIHRoYXQgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uIGFyZSBvcmRlcmVkIHRoZSBzYW1lXG4gICAgYXMgdGhlaXIgZmlyc3QgdW5lcXVhbCBlbGVtZW50cyAoZm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9IFsxLDIseV0iXG4gICAgaGFzIHRoZSBzYW1lIHZhbHVlIGFzICJ4IDw9IHkiKS4gIElmIGEgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXNcbiAgICBub3QgZXhpc3QsIHRoZSBzaG9ydGVyIGNvbGxlY3Rpb24gaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsXG4gICAgIlsxLDJdIDwgWzEsMiwzXSIgaXMgdHJ1ZSkuXG5cbiogTWFwcGluZ3MgKGluc3RhbmNlcyBvZiAiZGljdCIpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleVxuICBoYXZlIGVxdWFsICooa2V5LCB2YWx1ZSkqIHBhaXJzLiBFcXVhbGl0eSBjb21wYXJpc29uIG9mIHRoZSBrZXlzIGFuZFxuICBlbGVtZW50cyBlbmZvcmNlcyByZWZsZXhpdml0eS5cblxuICBPcmRlciBjb21wYXJpc29ucyAoIjwiLCAiPiIsICI8PSIsIGFuZCAiPj0iKSByYWlzZSAiVHlwZUVycm9yIi5cblxuKiBTZXRzIChpbnN0YW5jZXMgb2YgInNldCIgb3IgImZyb3plbnNldCIpIGNhbiBiZSBjb21wYXJlZCB3aXRoaW5cbiAgYW5kIGFjcm9zcyB0aGVpciB0eXBlcy5cblxuICBUaGV5IGRlZmluZSBvcmRlciBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmQgc3VwZXJzZXRcbiAgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKGZvciBleGFtcGxlLFxuICB0aGUgdHdvIHNldHMgInsxLDJ9IiBhbmQgInsyLDN9IiBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZ1xuICAoZm9yIGV4YW1wbGUsICJtaW4oKSIsICJtYXgoKSIsIGFuZCAic29ydGVkKCkiIHByb2R1Y2UgdW5kZWZpbmVkXG4gIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzKS5cblxuICBDb21wYXJpc29uIG9mIHNldHMgZW5mb3JjZXMgcmVmbGV4aXZpdHkgb2YgaXRzIGVsZW1lbnRzLlxuXG4qIE1vc3Qgb3RoZXIgYnVpbHQtaW4gdHlwZXMgaGF2ZSBubyBjb21wYXJpc29uIG1ldGhvZHMgaW1wbGVtZW50ZWQsXG4gIHNvIHRoZXkgaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yLlxuXG5Vc2VyLWRlZmluZWQgY2xhc3NlcyB0aGF0IGN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yIHNob3VsZFxuZm9sbG93IHNvbWUgY29uc2lzdGVuY3kgcnVsZXMsIGlmIHBvc3NpYmxlOlxuXG4qIEVxdWFsaXR5IGNvbXBhcmlzb24gc2hvdWxkIGJlIHJlZmxleGl2ZS4gSW4gb3RoZXIgd29yZHMsIGlkZW50aWNhbFxuICBvYmplY3RzIHNob3VsZCBjb21wYXJlIGVxdWFsOlxuXG4gICAgICJ4IGlzIHkiIGltcGxpZXMgInggPT0geSJcblxuKiBDb21wYXJpc29uIHNob3VsZCBiZSBzeW1tZXRyaWMuIEluIG90aGVyIHdvcmRzLCB0aGUgZm9sbG93aW5nXG4gIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcblxuICAgICAieCA9PSB5IiBhbmQgInkgPT0geCJcblxuICAgICAieCAhPSB5IiBhbmQgInkgIT0geCJcblxuICAgICAieCA8IHkiIGFuZCAieSA+IHgiXG5cbiAgICAgInggPD0geSIgYW5kICJ5ID49IHgiXG5cbiogQ29tcGFyaXNvbiBzaG91bGQgYmUgdHJhbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyAobm9uLWV4aGF1c3RpdmUpXG4gIGV4YW1wbGVzIGlsbHVzdHJhdGUgdGhhdDpcblxuICAgICAieCA+IHkgYW5kIHkgPiB6IiBpbXBsaWVzICJ4ID4geiJcblxuICAgICAieCA8IHkgYW5kIHkgPD0geiIgaW1wbGllcyAieCA8IHoiXG5cbiogSW52ZXJzZSBjb21wYXJpc29uIHNob3VsZCByZXN1bHQgaW4gdGhlIGJvb2xlYW4gbmVnYXRpb24uIEluIG90aGVyXG4gIHdvcmRzLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcblxuICAgICAieCA9PSB5IiBhbmQgIm5vdCB4ICE9IHkiXG5cbiAgICAgInggPCB5IiBhbmQgIm5vdCB4ID49IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG5cbiAgICAgInggPiB5IiBhbmQgIm5vdCB4IDw9IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG5cbiAgVGhlIGxhc3QgdHdvIGV4cHJlc3Npb25zIGFwcGx5IHRvIHRvdGFsbHkgb3JkZXJlZCBjb2xsZWN0aW9ucyAoZS5nLlxuICB0byBzZXF1ZW5jZXMsIGJ1dCBub3QgdG8gc2V0cyBvciBtYXBwaW5ncykuIFNlZSBhbHNvIHRoZVxuICAidG90YWxfb3JkZXJpbmcoKSIgZGVjb3JhdG9yLlxuXG5QeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy4gSW4gZmFjdCwgdGhlXG5ub3QtYS1udW1iZXIgdmFsdWVzIGFyZSBhbiBleGFtcGxlIGZvciBub3QgZm9sbG93aW5nIHRoZXNlIHJ1bGVzLlxuXG5cbk1lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG5ub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iIHRlc3RzXG53aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG5saXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpIi5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBpc1xuYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgRW1wdHlcbnN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG5zbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG5pbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbmRlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbiJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbiJpbiIuXG5cblxuSWRlbnRpdHkgY29tcGFyaXNvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAieCBpcyB5IiBpc1xudHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgInggaXMgbm90IHkiXG55aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnY29tcG91bmQnOiB1J1xuQ29tcG91bmQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSBhZmZlY3Rcbm9yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgSW5cbmdlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gc2ltcGxlXG5pbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgbGluZS5cblxuVGhlICJpZiIsICJ3aGlsZSIgYW5kICJmb3IiIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsIGNvbnRyb2xcbmZsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXBcbmNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgYWxsb3dzIHRoZVxuZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYSBibG9jayBvZlxuY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5IGNvbXBvdW5kXG5zdGF0ZW1lbnRzLlxuXG5BIGNvbXBvdW5kIHN0YXRlbWVudCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2YgYSBzdWl0ZSBjYW4gY29udGFpbiBuZXN0ZWQgY29tcG91bmRcbnN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuXCd0IGJlXG5jbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkIGJlbG9uZzpcblxuICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuXG5BbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gdGhpc1xuY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGVcbiJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG5cbiAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuXG5TdW1tYXJpemluZzpcblxuICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aGlsZV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGFzeW5jX3dpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mdW5jZGVmXG4gICBzdWl0ZSAgICAgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIHN0YXRlbWVudCsgREVERU5UXG4gICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbiAgIHN0bXRfbGlzdCAgICAgOjo9IHNpbXBsZV9zdG10ICgiOyIgc2ltcGxlX3N0bXQpKiBbIjsiXVxuXG5Ob3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5IGZvbGxvd2VkIGJ5IGFcbiJERURFTlQiLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzIGJlZ2luXG53aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbmFtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyAiZWxzZSJcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiBQeXRob24gYnlcbnJlcXVpcmluZyBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgImlmIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PVxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG5cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWRcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgYmFja1xudG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgImZvciIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09XG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG5cblxuVGhlICJ0cnkiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuIG5vXG5leGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yIGFuXG5leGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCBjbGF1c2VzXG5pbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuIGV4cHJlc3Npb24tXG5sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbmV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG5pcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG53aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSBleGNlcHRpb25cbm9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgcmFpc2VkXG50aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZlxucHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4ic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgdGhlXG5leGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gdGhlXG5wcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyBhcmVcbnJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlIGFyZVxubm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuXG5JZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAidHJ5IlxuY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmIGFuXG5leGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gIElmXG50aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICJmaW5hbGx5IlxuY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb25cbmlzIGRpc2NhcmRlZDpcblxuICAgPj4+IGRlZiBmKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIDEvMFxuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4gICAuLi5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cblxuV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluIHRoZVxuInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlIGlzXG5hbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsIGluXG50aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cblRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG5zdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbiJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSB0aGVcbmxhc3Qgb25lIGV4ZWN1dGVkOlxuXG4gICA+Pj4gZGVmIGZvbygpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCd0cnlcJ1xuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnZmluYWxseVwnXG4gICAuLi5cbiAgID4+PiBmb28oKVxuICAgXCdmaW5hbGx5XCdcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG5cblRoZSAid2l0aCIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG51c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCBhbHdheXMgYmVcbiAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgdGhyZWVcbiAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgcmVyYWlzZWQuXG4gICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbiAgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOiAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuXG5cbkZ1bmN0aW9uIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PT09PVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzXG5pcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gdGhlXG5mdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpc1xuZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtXG5jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudFxudG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhXG5saXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnlcbmFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC5cblRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZVxuIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnlcbmV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlXG5mb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgZm9sbG93aW5nXG50aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiB0aG9zZVxub2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgaGF2ZVxuInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgcGFyYW1ldGVyXG5saXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgYXJlXG5ldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zIG1heVxuYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbmZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbmRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGUgIl9fYW5ub3RhdGlvbnNfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbmV4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiImRlZiIiXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbmZ1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkXG5pbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcblxuICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFthcmd1bWVudF9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuXG5cbkNvcm91dGluZXNcbj09PT09PT09PT1cblxuTmV3IGluIHZlcnNpb24gMy41LlxuXG5cbkNvcm91dGluZSBmdW5jdGlvbiBkZWZpbml0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY19mdW5jZGVmIDo6PSBbZGVjb3JhdG9yc10gImFzeW5jIiAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG5cbkV4ZWN1dGlvbiBvZiBQeXRob24gY29yb3V0aW5lcyBjYW4gYmUgc3VzcGVuZGVkIGFuZCByZXN1bWVkIGF0IG1hbnlcbnBvaW50cyAoc2VlICpjb3JvdXRpbmUqKS4gIEluIHRoZSBib2R5IG9mIGEgY29yb3V0aW5lLCBhbnkgImF3YWl0IiBhbmRcbiJhc3luYyIgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyAiYXdhaXQiIGV4cHJlc3Npb25zLFxuImFzeW5jIGZvciIgYW5kICJhc3luYyB3aXRoIiBjYW4gb25seSBiZSB1c2VkIGluIGNvcm91dGluZSBib2RpZXMuXG5cbkZ1bmN0aW9ucyBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIgc3ludGF4IGFyZSBhbHdheXMgY29yb3V0aW5lXG5mdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiAiYXdhaXQiIG9yICJhc3luYyIga2V5d29yZHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgInlpZWxkIiBleHByZXNzaW9ucyBpbiAiYXN5bmMgZGVmIlxuY29yb3V0aW5lcy5cblxuQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjpcblxuICAgYXN5bmMgZGVmIGZ1bmMocGFyYW0xLCBwYXJhbTIpOlxuICAgICAgIGRvX3N0dWZmKClcbiAgICAgICBhd2FpdCBzb21lX2Nvcm91dGluZSgpXG5cblxuVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY19mb3Jfc3RtdCA6Oj0gImFzeW5jIiBmb3Jfc3RtdFxuXG5BbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzXG4qaXRlciogaW1wbGVtZW50YXRpb24sIGFuZCAqYXN5bmNocm9ub3VzIGl0ZXJhdG9yKiBjYW4gY2FsbFxuYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzICpuZXh0KiBtZXRob2QuXG5cblRoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnQgYWxsb3dzIGNvbnZlbmllbnQgaXRlcmF0aW9uIG92ZXJcbmFzeW5jaHJvbm91cyBpdGVyYXRvcnMuXG5cblRoZSBmb2xsb3dpbmcgY29kZTpcblxuICAgYXN5bmMgZm9yIFRBUkdFVCBpbiBJVEVSOlxuICAgICAgIEJMT0NLXG4gICBlbHNlOlxuICAgICAgIEJMT0NLMlxuXG5JcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcblxuICAgaXRlciA9IChJVEVSKVxuICAgaXRlciA9IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpXG4gICBydW5uaW5nID0gVHJ1ZVxuICAgd2hpbGUgcnVubmluZzpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIFRBUkdFVCA9IGF3YWl0IHR5cGUoaXRlcikuX19hbmV4dF9fKGl0ZXIpXG4gICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjpcbiAgICAgICAgICAgcnVubmluZyA9IEZhbHNlXG4gICAgICAgZWxzZTpcbiAgICAgICAgICAgQkxPQ0tcbiAgIGVsc2U6XG4gICAgICAgQkxPQ0syXG5cblNlZSBhbHNvICJfX2FpdGVyX18oKSIgYW5kICJfX2FuZXh0X18oKSIgZm9yIGRldGFpbHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIGZvciIgc3RhdGVtZW50IG91dHNpZGUgb2YgYW5cbiJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuXG5cblRoZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY193aXRoX3N0bXQgOjo9ICJhc3luYyIgd2l0aF9zdG10XG5cbkFuICphc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyKiBpcyBhICpjb250ZXh0IG1hbmFnZXIqIHRoYXQgaXMgYWJsZVxudG8gc3VzcGVuZCBleGVjdXRpb24gaW4gaXRzICplbnRlciogYW5kICpleGl0KiBtZXRob2RzLlxuXG5UaGUgZm9sbG93aW5nIGNvZGU6XG5cbiAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6XG4gICAgICAgQkxPQ0tcblxuSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG5cbiAgIG1nciA9IChFWFBSKVxuICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fXG4gICBhZW50ZXIgPSB0eXBlKG1ncikuX19hZW50ZXJfXyhtZ3IpXG4gICBleGMgPSBUcnVlXG5cbiAgIFZBUiA9IGF3YWl0IGFlbnRlclxuICAgdHJ5OlxuICAgICAgIEJMT0NLXG4gICBleGNlcHQ6XG4gICAgICAgaWYgbm90IGF3YWl0IGFleGl0KG1nciwgKnN5cy5leGNfaW5mbygpKTpcbiAgICAgICAgICAgcmFpc2VcbiAgIGVsc2U6XG4gICAgICAgYXdhaXQgYWV4aXQobWdyLCBOb25lLCBOb25lLCBOb25lKVxuXG5TZWUgYWxzbyAiX19hZW50ZXJfXygpIiBhbmQgIl9fYWV4aXRfXygpIiBmb3IgZGV0YWlscy5cblxuSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50IG91dHNpZGUgb2YgYW5cbiJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuXG5TZWUgYWxzbzogKipQRVAgNDkyKiogLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheFxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbiAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4gICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbiAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuICAgICJicmVhayIgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCi0gJ2NvbnRleHQtbWFuYWdlcnMnOiB1J1xuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgY29udGV4dCBtYW5hZ2VyXG5oYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZSBjb250ZXh0XG5mb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG5pbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiAqVGhlIHdpdGhcbnN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciBtZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAid2l0aCJcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSAiTm9uZSIuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286ICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG4nLAotICdjb250aW51ZSc6IHUnXG5UaGUgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG5cbiJjb250aW51ZSIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG5sb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgImZpbmFsbHkiXG5jbGF1c2Ugd2l0aGluIHRoYXQgbG9vcC4gIEl0IGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGN5Y2xlIG9mIHRoZVxubmVhcmVzdCBlbmNsb3NpbmcgbG9vcC5cblxuV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbiJmaW5hbGx5IiBjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5zdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKLSAnY29udmVyc2lvbnMnOiB1J1xuQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5XaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSBwaHJhc2VcbiJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhpcyBtZWFuc1xudGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIGFzIGZvbGxvd3M6XG5cbiogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyBjb252ZXJ0ZWQgdG9cbiAgY29tcGxleDtcblxuKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgdGhlXG4gIG90aGVyIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcblxuKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpcyBuZWNlc3NhcnkuXG5cblNvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgc3RyaW5nIGFzIGFcbmxlZnQgYXJndW1lbnQgdG8gdGhlIFwnJVwnIG9wZXJhdG9yKS4gIEV4dGVuc2lvbnMgbXVzdCBkZWZpbmUgdGhlaXIgb3duXG5jb252ZXJzaW9uIGJlaGF2aW9yLlxuJywKLSAnY3VzdG9taXphdGlvbic6IHUnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAiX19uZXdfXygpIiBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHkgYW5cbiAgIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4gICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAiX19uZXdfXygpIi5cblxuICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAiX19uZXdfXygpIiksIGJ1dFxuICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCwgaWZcbiAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZiB0aGVcbiAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cblxuICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gY29uc3RydWN0aW5nXG4gICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gY3VzdG9taXNlXG4gICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICJfX2luaXRfXygpIjsgZG9pbmcgc29cbiAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiBtZXRob2QsIHRoZVxuICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXRcbiAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2UuXG4gICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgdGhlXG4gICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgbGF0dGVyIGlzXG4gICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lIGNvbW1vblxuICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3QgZnJvbVxuICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiBvYmplY3RzIChlLmcuLFxuICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBwYXJlbnQgYW5kXG4gICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgb2ZcbiAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSByZWZlcmVuY2VcbiAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gdW5oYW5kbGVkXG4gICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGVcbiAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgdGhpcmQgY2FuXG4gICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICJzeXMubGFzdF90cmFjZWJhY2siLiBDaXJjdWxhclxuICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCB1cCB3aGVuIHRoZVxuICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnkgZGVmYXVsdCkuIFJlZmVyXG4gICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICAgYWJvdXQgdGhpcyB0b3BpYy5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2hcbiAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZ1xuICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0b1xuICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyBpbnZva2VkIGluXG4gICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZVxuICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICJfX2RlbF9fKCkiXG4gICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZ1xuICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpc1xuICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZFxuICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSxcbiAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgIm9mZmljaWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpc1xuICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZCB0b1xuICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgIl9fcmVwcl9fKCkiIGJ1dFxuICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAiaW5mb3JtYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImZvcm1hdCgpIiBhbmRcbiAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgc3RyaW5nXG4gICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAqc3RyaW5nKlxuICAgb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gIm9iamVjdC5fX3JlcHJfXygpIiBpbiB0aGF0IHRoZXJlIGlzIG5vXG4gICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhXG4gICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cblxuICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSAib2JqZWN0IlxuICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICAic3RyLmZvcm1hdCgpIiBtZXRob2Qgb2YgY2xhc3MgInN0ciIpIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgYVxuICAgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgdXAgdG9cbiAgIHRoZSB0eXBlIGltcGxlbWVudGluZyAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0IGNsYXNzZXMgd2lsbFxuICAgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGFcbiAgIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiBpdHNlbGZcbiAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgInguX19sZV9fKHkpIixcbiAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgIng+eSIgY2FsbHNcbiAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAiTm90SW1wbGVtZW50ZWQiXG4gICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mXG4gICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgZm9yIGFcbiAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuIGFueSB2YWx1ZSxcbiAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuIGNvbnRleHQgKGUuZy4sXG4gICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAiYm9vbCgpIlxuICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kIGludmVydHMgdGhlXG4gICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgaW1wbGllZFxuICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciBleGFtcGxlLCB0aGVcbiAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvIGF1dG9tYXRpY2FsbHlcbiAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290IG9wZXJhdGlvbiwgc2VlXG4gICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG4gICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi4gSWYgdGhlXG4gICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGFcbiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kXCdzIHR5cGUsIHRoZVxuICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksIG90aGVyd2lzZSB0aGVcbiAgIGxlZnQgb3BlcmFuZFwncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCBzdWJjbGFzc2luZyBpcyBub3RcbiAgIGNvbnNpZGVyZWQuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zIG9uIG1lbWJlcnNcbiAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgImRpY3QiLlxuICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5IHJlcXVpcmVkIHByb3BlcnR5XG4gICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWU7IGl0IGlzXG4gICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2hcbiAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW5cbiAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuIG9iamVjdFwnc1xuICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICJQeV9zc2l6ZV90Ii4gIFRoaXNcbiAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAzMi1iaXRcbiAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCBpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4gICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uIGFsbFxuICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICJweXRob24gLWNcbiAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiIuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICJfX2VxX18oKSJcbiAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyBpdGVtcyBpblxuICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzIGFuZFxuICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbiAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlIGNvbGxlY3Rpb25zXG4gICByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0XCdzIGhhc2hcbiAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgbWV0aG9kcyBieVxuICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSBoYXNoKHkpIi5cblxuICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgIl9faGFzaF9fKCkiXG4gICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICBXaGVuIHRoZVxuICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc1xuICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0b1xuICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgaW50ZXJwcmV0ZXJcbiAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgY2xhc3NcbiAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiBjYWxsLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZFxuICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzIG1ldGhvZCBpcyBub3RcbiAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSBvYmplY3QgaXNcbiAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG4nLAotICdkZWJ1Z2dlcic6IHUnXG4icGRiIiAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKipTb3VyY2UgY29kZToqKiBMaWIvcGRiLnB5XG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG1vZHVsZSAicGRiIiBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG4iUGRiIi4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieSByZWFkaW5nXG50aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyAiYmRiIiBhbmQgImNtZCIuXG5cblRoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgIihQZGIpIi4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtIHVuZGVyXG5jb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgInJlYWRsaW5lIiBtb2R1bGUgaXNcbmF2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50IGdsb2JhbFxuYW5kIGxvY2FsIG5hbWVzIGFyZSBvZmZlcmVkIGFzIGFyZ3VtZW50cyBvZiB0aGUgInAiIGNvbW1hbmQuXG5cbiJwZGIucHkiIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy4gIEZvclxuZXhhbXBsZTpcblxuICAgcHl0aG9uMyAtbSBwZGIgbXlzY3JpcHQucHlcblxuV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyIHBvc3QtbW9ydGVtXG5kZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyIHBvc3QtXG5tb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiB3aWxsXG5yZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYlwncyBzdGF0ZSAoc3VjaFxuYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgdGhlXG5kZWJ1Z2dlciB1cG9uIHByb2dyYW1cJ3MgZXhpdC5cblxuTmV3IGluIHZlcnNpb24gMy4yOiAicGRiLnB5IiBub3cgYWNjZXB0cyBhICItYyIgb3B0aW9uIHRoYXQgZXhlY3V0ZXNcbmNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgIi5wZGJyYyIgZmlsZSwgc2VlICpEZWJ1Z2dlciBDb21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlICJjb250aW51ZSIgY29tbWFuZC5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBteW1vZHVsZS50ZXN0KClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4gICAgICAgdGVzdDIoKVxuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuICAgICAgIHByaW50KHNwYW0pXG4gICBOYW1lRXJyb3I6IHNwYW1cbiAgID4+PiBwZGIucG0oKVxuICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuICAgLT4gcHJpbnQoc3BhbSlcbiAgIChQZGIpXG5cblRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlIGRlYnVnZ2VyXG5pbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG5cbnBkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdCkgdW5kZXJcbiAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSBjb2RlIGlzXG4gICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91IGNhblxuICAgc3RlcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgdXNpbmcgInN0ZXAiIG9yICJuZXh0IiAoYWxsIHRoZXNlXG4gICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICpsb2NhbHMqXG4gICBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgZXhlY3V0ZWQ7IGJ5XG4gICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgIl9fbWFpbl9fIiBpcyB1c2VkLiAgKFNlZSB0aGVcbiAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyB0aGVcbiAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0b1xuICAgInJ1bigpIi5cblxucGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG5cbiAgIENhbGwgdGhlICpmdW5jdGlvbiogKGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdCwgbm90IGEgc3RyaW5nKVxuICAgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiAgV2hlbiAicnVuY2FsbCgpIiByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG5UaGUgInJ1bioiIGZ1bmN0aW9ucyBhbmQgInNldF90cmFjZSgpIiBhcmUgYWxpYXNlcyBmb3IgaW5zdGFudGlhdGluZ1xudGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSB3YW50XG50byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpcyB5b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgIlBkYiIgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuXG4gICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlXG4gICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cblxuICAgVGhlICpza2lwKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgZ2xvYi1zdHlsZVxuICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyB0aGF0XG4gICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gWzFdXG5cbiAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoIGlzIHNlbnRcbiAgIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyAiQ3RybC1DIiBvbiB0aGUgY29uc29sZSkgd2hlbiB5b3UgZ2l2ZSBhXG4gICAiY29udGludWUiIGNvbW1hbmQuIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlclxuICAgYWdhaW4gYnkgcHJlc3NpbmcgIkN0cmwtQyIuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZVxuICAgU0lHSU5UIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuImgoZWxwKSIgbWVhbnMgdGhhdCBlaXRoZXIgImgiIG9yICJoZWxwIiBjYW4gYmUgdXNlZCB0byBlbnRlciB0aGUgaGVscFxuY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgKHNwYWNlcyBvclxudGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAoIltdIikgaW5cbnRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKCJ8IikuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSBsaXN0ZWQuXG5cbkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuXCd0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSBQeXRob25cbnN0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uXG5wb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnkgIjs7Ii5cbihBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgY29tbWFuZHNcbmluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBObyBpbnRlbGxpZ2VuY2UgaXNcbmFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdCBhdCB0aGUgZmlyc3RcbiI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cblxuSWYgYSBmaWxlICIucGRicmMiIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiB0aGVcbmN1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZFxuYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmXG5ib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZFxuYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzICJjb250aW51ZSIgb3IgIm5leHQiLiAgUHJldmlvdXNseSwgdGhlc2VcbmNvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG5cbmgoZWxwKSBbY29tbWFuZF1cblxuICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCBhXG4gICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgcGRiIlxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgInBkYiJcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgImhlbHBcbiAgIGV4ZWMiIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgIiEiIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gInN5cy5wYXRoIi4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciAiYnJlYWsiLlxuXG5jbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzIGF0XG4gICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyXG4gICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0IGZpcnN0XG4gICBhc2sgY29uZmlybWF0aW9uKS5cblxuZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90IGNhdXNlXG4gICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhIGJyZWFrcG9pbnQsIGl0XG4gICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuXG5lbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cblxuaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cblxuICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmIGNvdW50IGlzXG4gICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgYWN0aXZlXG4gICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSBicmVha3BvaW50XG4gICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cblxuY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG5cbiAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICpjb25kaXRpb24qXG4gICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cblxuY29tbWFuZHMgW2JwbnVtYmVyXVxuXG4gICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gIFRoZVxuICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSBsaW5lXG4gICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4gICAgICAoY29tKSBlbmRcbiAgICAgIChQZGIpXG5cbiAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kIGZvbGxvd1xuICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAibmV4dCIgYW5kICJzdGVwIlxuICAgaXMgdGhhdCAic3RlcCIgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZSAibmV4dCJcbiAgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seSBzdG9wcGluZyBhdFxuICAgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG5cbnVudChpbCkgW2xpbmVub11cblxuICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cblxuICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW5cbiAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lIG51bWJlci5cblxucihldHVybilcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG5cbmMob250KGludWUpKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmNvdW50ZXJlZC5cblxuaih1bXApIGxpbmVub1xuXG4gICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiB0aGVcbiAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSBhZ2FpbixcbiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uXCd0IHdhbnQgdG8gcnVuLlxuXG4gICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciBpbnN0YW5jZVxuICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgImZvciIgbG9vcCBvciBvdXRcbiAgIG9mIGEgImZpbmFsbHkiIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCAiLiIgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuICBXaXRoXG4gICBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4gICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGxlc3NcbiAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuXG4gICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSAiLT4iLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5ICI+PiIsIGlmIGl0IGRpZmZlcnNcbiAgIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgIj4+IiBtYXJrZXIuXG5cbmxsIHwgbG9uZ2xpc3RcblxuICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgImxpc3QiLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucCBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxuICAgTm90ZTogInByaW50KCkiIGNhbiBhbHNvIGJlIHVzZWQsIGJ1dCBpcyBub3QgYSBkZWJ1Z2dlciBjb21tYW5kXG4gICAgIC0tLSB0aGlzIGV4ZWN1dGVzIHRoZSBQeXRob24gInByaW50KCkiIGZ1bmN0aW9uLlxuXG5wcCBleHByZXNzaW9uXG5cbiAgIExpa2UgdGhlICJwIiBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzIHByZXR0eS1cbiAgIHByaW50ZWQgdXNpbmcgdGhlICJwcHJpbnQiIG1vZHVsZS5cblxud2hhdGlzIGV4cHJlc3Npb25cblxuICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cblxuc291cmNlIGV4cHJlc3Npb25cblxuICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbiAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cblxuICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxudW5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5pbnRlcmFjdFxuXG4gICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgImNvZGUiIG1vZHVsZSkgd2hvc2VcbiAgIGdsb2JhbCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSAoZ2xvYmFsIGFuZCBsb2NhbCkgbmFtZXMgZm91bmQgaW5cbiAgIHRoZSBjdXJyZW50IHNjb3BlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmFsaWFzIFtuYW1lIFtjb21tYW5kXV1cblxuICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgY29tbWFuZFxuICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiBiZVxuICAgaW5kaWNhdGVkIGJ5ICIlMSIsICIlMiIsIGFuZCBzbyBvbiwgd2hpbGUgIiUqIiBpcyByZXBsYWNlZCBieSBhbGxcbiAgIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyBmb3JcbiAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlIGxpc3RlZC5cblxuICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSBsZWdhbGx5XG4gICB0eXBlZCBhdCB0aGUgcGRiIHByb21wdC4gIE5vdGUgdGhhdCBpbnRlcm5hbCBwZGIgY29tbWFuZHMgKmNhbiogYmVcbiAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsIHRoZVxuICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBjb21tYW5kIGxpbmU7IGFsbCBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgbGVmdFxuICAgYWxvbmUuXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuIHBsYWNlZFxuICAgaW4gdGhlICIucGRicmMiIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgImdsb2JhbCIgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG5cbiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFtcJy1sXCddXG4gICAgICAoUGRiKVxuXG5ydW4gW2FyZ3MgLi4uXVxucmVzdGFydCBbYXJncyAuLi5dXG5cbiAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgc3VwcGxpZWQsXG4gICBpdCBpcyBzcGxpdCB3aXRoICJzaGxleCIgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4gICAic3lzLmFyZ3YiLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9ucyBhcmVcbiAgIHByZXNlcnZlZC4gInJlc3RhcnQiIGlzIGFuIGFsaWFzIGZvciAicnVuIi5cblxucSh1aXQpXG5cbiAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gbW9kdWxlXG4gICAgaXMgZGV0ZXJtaW5lZCBieSB0aGUgIl9fbmFtZV9fIiBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCi0gJ2RlbCc6IHUnXG5UaGUgImRlbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgImdsb2JhbCJcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuXG5EZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgcGFzc2VkXG50byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG5lcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCBldmVuXG50aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbmZyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkXG5ibG9jay5cbicsCi0gJ2RpY3QnOiB1J1xuRGljdGlvbmFyeSBkaXNwbGF5c1xuKioqKioqKioqKioqKioqKioqKlxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbmVuY2xvc2VkIGluIGN1cmx5IGJyYWNlczpcblxuICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAifSJcbiAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbiAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiB8ICIqKiIgb3JfZXhwclxuICAgZGljdF9jb21wcmVoZW5zaW9uIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIGNvbXBfZm9yXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cblxuSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlIGRpY3Rpb25hcnk6XG5lYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG5tdWx0aXBsZSB0aW1lcyBpbiB0aGUga2V5L2RhdHVtIGxpc3QsIGFuZCB0aGUgZmluYWwgZGljdGlvbmFyeVwncyB2YWx1ZVxuZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuXG5BIGRvdWJsZSBhc3RlcmlzayAiKioiIGRlbm90ZXMgKmRpY3Rpb25hcnkgdW5wYWNraW5nKi4gSXRzIG9wZXJhbmRcbm11c3QgYmUgYSAqbWFwcGluZyouICBFYWNoIG1hcHBpbmcgaXRlbSBpcyBhZGRlZCB0byB0aGUgbmV3XG5kaWN0aW9uYXJ5LiAgTGF0ZXIgdmFsdWVzIHJlcGxhY2UgdmFsdWVzIGFscmVhZHkgc2V0IGJ5IGVhcmxpZXJcbmtleS9kYXR1bSBwYWlycyBhbmQgZWFybGllciBkaWN0aW9uYXJ5IHVucGFja2luZ3MuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNTogVW5wYWNraW5nIGludG8gZGljdGlvbmFyeSBkaXNwbGF5cywgb3JpZ2luYWxseVxucHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG5cbkEgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG5uZWVkcyB0d28gZXhwcmVzc2lvbnMgc2VwYXJhdGVkIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSB0aGUgdXN1YWxcbiJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgcmVzdWx0aW5nXG5rZXkgYW5kIHZhbHVlIGVsZW1lbnRzIGFyZSBpbnNlcnRlZCBpbiB0aGUgbmV3IGRpY3Rpb25hcnkgaW4gdGhlIG9yZGVyXG50aGV5IGFyZSBwcm9kdWNlZC5cblxuUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSouICAoVG8gc3VtbWFyaXplLCB0aGUga2V5IHR5cGVcbnNob3VsZCBiZSAqaGFzaGFibGUqLCB3aGljaCBleGNsdWRlcyBhbGwgbXV0YWJsZSBvYmplY3RzLikgIENsYXNoZXNcbmJldHdlZW4gZHVwbGljYXRlIGtleXMgYXJlIG5vdCBkZXRlY3RlZDsgdGhlIGxhc3QgZGF0dW0gKHRleHR1YWxseVxucmlnaHRtb3N0IGluIHRoZSBkaXNwbGF5KSBzdG9yZWQgZm9yIGEgZ2l2ZW4ga2V5IHZhbHVlIHByZXZhaWxzLlxuJywKLSAnZHluYW1pYy1mZWF0dXJlcyc6IHUnXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCi0gJ2Vsc2UnOiB1J1xuVGhlICJpZiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKipcblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKLSAnZXhjZXB0aW9ucyc6IHUnXG5FeGNlcHRpb25zXG4qKioqKioqKioqXG5cbkV4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiBjb250cm9sXG5vZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciBleGNlcHRpb25hbFxuY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGVycm9yIGlzXG5kZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciBieSBhbnlcbmNvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgd2hlcmVcbnRoZSBlcnJvciBvY2N1cnJlZC5cblxuVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhIHJ1bi10aW1lXG5lcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbmV4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiBFeGNlcHRpb25cbmhhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gIFRoZVxuImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY2xlYW51cFxuY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkIHdoZXRoZXIgYW5cbmV4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuXG5QeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgYW4gb3V0ZXJcbmxldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSB0aGVcbmZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSBvZiBjb2RlXG5mcm9tIHRoZSB0b3ApLlxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciB0ZXJtaW5hdGVzXG5leGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gbG9vcC4gIEluXG5laXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgZXhjZXB0aW9uIGlzXG4iU3lzdGVtRXhpdCIuXG5cbkV4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiIGNsYXVzZSBpc1xuc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgcmVmZXJlbmNlIHRoZVxuY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlIGNhbiBiZVxucmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuXG5Ob3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgdHJ5XG5zdGF0ZW1lbnQqIGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBieVxuICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlIGlzXG4gICAgY29tcGlsZWQuXG4nLAotICdleGVjbW9kZWwnOiB1J1xuRXhlY3V0aW9uIG1vZGVsXG4qKioqKioqKioqKioqKipcblxuXG5TdHJ1Y3R1cmUgb2YgYSBwcm9ncmFtXG49PT09PT09PT09PT09PT09PT09PT09XG5cbkEgUHl0aG9uIHByb2dyYW0gaXMgY29uc3RydWN0ZWQgZnJvbSBjb2RlIGJsb2Nrcy4gQSAqYmxvY2sqIGlzIGEgcGllY2Vcbm9mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhIHVuaXQuIFRoZSBmb2xsb3dpbmcgYXJlXG5ibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzIGRlZmluaXRpb24uIEVhY2hcbmNvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHQgZmlsZSAoYSBmaWxlIGdpdmVuXG5hcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkIGFzIGEgY29tbWFuZCBsaW5lXG5hcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEEgc2NyaXB0IGNvbW1hbmQgKGFcbmNvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmUgd2l0aCB0aGUgXCcqKi1jKipcJ1xub3B0aW9uKSBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgYnVpbHQtaW5cbmZ1bmN0aW9ucyAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgaXMgYSBjb2RlIGJsb2NrLlxuXG5BIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lIGNvbnRhaW5zXG5zb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkZXRlcm1pbmVzXG53aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2tcJ3MgZXhlY3V0aW9uIGhhc1xuY29tcGxldGVkLlxuXG5cbk5hbWluZyBhbmQgYmluZGluZ1xuPT09PT09PT09PT09PT09PT09XG5cblxuQmluZGluZyBvZiBuYW1lc1xuLS0tLS0tLS0tLS0tLS0tLVxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZVxubW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGVcbmNvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZVxuYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgKmJpbmRpbmcqXG5vZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG5cblxuUmVzb2x1dGlvbiBvZiBuYW1lc1xuLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIElmXG50aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWxcbnZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVcbm5hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbiJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzIG5vdFxuZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgYXJlXG5zcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuXG5leGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgcmVmZXJlbmNlc1xuZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0XG51bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBUaGVcbm5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSBvZlxudGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG9cbnRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tXG50aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmVcbmltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZ1xud2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuXG5CdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cblxuXG5FeGNlcHRpb25zXG49PT09PT09PT09XG5cbkV4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiBjb250cm9sXG5vZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciBleGNlcHRpb25hbFxuY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGVycm9yIGlzXG5kZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciBieSBhbnlcbmNvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgd2hlcmVcbnRoZSBlcnJvciBvY2N1cnJlZC5cblxuVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhIHJ1bi10aW1lXG5lcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbmV4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiBFeGNlcHRpb25cbmhhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gIFRoZVxuImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY2xlYW51cFxuY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkIHdoZXRoZXIgYW5cbmV4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuXG5QeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgYW4gb3V0ZXJcbmxldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSB0aGVcbmZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSBvZiBjb2RlXG5mcm9tIHRoZSB0b3ApLlxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciB0ZXJtaW5hdGVzXG5leGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gbG9vcC4gIEluXG5laXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgZXhjZXB0aW9uIGlzXG4iU3lzdGVtRXhpdCIuXG5cbkV4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiIGNsYXVzZSBpc1xuc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgcmVmZXJlbmNlIHRoZVxuY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlIGNhbiBiZVxucmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuXG5Ob3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgdHJ5XG5zdGF0ZW1lbnQqIGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBieVxuICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlIGlzXG4gICAgY29tcGlsZWQuXG4nLAotICdleHBybGlzdHMnOiB1J1xuRXhwcmVzc2lvbiBsaXN0c1xuKioqKioqKioqKioqKioqKlxuXG4gICBleHByZXNzaW9uX2xpc3QgICAgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuICAgc3RhcnJlZF9saXN0ICAgICAgIDo6PSBzdGFycmVkX2l0ZW0gKCAiLCIgc3RhcnJlZF9pdGVtICkqIFsiLCJdXG4gICBzdGFycmVkX2V4cHJlc3Npb24gOjo9IGV4cHJlc3Npb24gfCAoIHN0YXJyZWRfaXRlbSAiLCIgKSogW3N0YXJyZWRfaXRlbV1cbiAgIHN0YXJyZWRfaXRlbSAgICAgICA6Oj0gZXhwcmVzc2lvbiB8ICIqIiBvcl9leHByXG5cbkV4Y2VwdCB3aGVuIHBhcnQgb2YgYSBsaXN0IG9yIHNldCBkaXNwbGF5LCBhbiBleHByZXNzaW9uIGxpc3RcbmNvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGNvbW1hIHlpZWxkcyBhIHR1cGxlLiAgVGhlIGxlbmd0aCBvZiB0aGUgdHVwbGVcbmlzIHRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMgaW4gdGhlIGxpc3QuICBUaGUgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5BbiBhc3RlcmlzayAiKiIgZGVub3RlcyAqaXRlcmFibGUgdW5wYWNraW5nKi4gIEl0cyBvcGVyYW5kIG11c3QgYmUgYW5cbippdGVyYWJsZSouICBUaGUgaXRlcmFibGUgaXMgZXhwYW5kZWQgaW50byBhIHNlcXVlbmNlIG9mIGl0ZW1zLCB3aGljaFxuYXJlIGluY2x1ZGVkIGluIHRoZSBuZXcgdHVwbGUsIGxpc3QsIG9yIHNldCwgYXQgdGhlIHNpdGUgb2YgdGhlXG51bnBhY2tpbmcuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNTogSXRlcmFibGUgdW5wYWNraW5nIGluIGV4cHJlc3Npb24gbGlzdHMsIG9yaWdpbmFsbHlcbnByb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuXG5UaGUgdHJhaWxpbmcgY29tbWEgaXMgcmVxdWlyZWQgb25seSB0byBjcmVhdGUgYSBzaW5nbGUgdHVwbGUgKGEuay5hLiBhXG4qc2luZ2xldG9uKik7IGl0IGlzIG9wdGlvbmFsIGluIGFsbCBvdGhlciBjYXNlcy4gIEEgc2luZ2xlIGV4cHJlc3Npb25cbndpdGhvdXQgYSB0cmFpbGluZyBjb21tYSBkb2VzblwndCBjcmVhdGUgYSB0dXBsZSwgYnV0IHJhdGhlciB5aWVsZHMgdGhlXG52YWx1ZSBvZiB0aGF0IGV4cHJlc3Npb24uIChUbyBjcmVhdGUgYW4gZW1wdHkgdHVwbGUsIHVzZSBhbiBlbXB0eSBwYWlyXG5vZiBwYXJlbnRoZXNlczogIigpIi4pXG4nLAotICdmbG9hdGluZyc6IHUnXG5GbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbmRlZmluaXRpb25zOlxuXG4gICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuICAgcG9pbnRmbG9hdCAgICA6Oj0gW2ludHBhcnRdIGZyYWN0aW9uIHwgaW50cGFydCAiLiJcbiAgIGV4cG9uZW50ZmxvYXQgOjo9IChpbnRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbiAgIGludHBhcnQgICAgICAgOjo9IGRpZ2l0K1xuICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0K1xuICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXQrXG5cbk5vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCB1c2luZ1xucmFkaXggMTAuIEZvciBleGFtcGxlLCAiMDc3ZTAxMCIgaXMgbGVnYWwsIGFuZCBkZW5vdGVzIHRoZSBzYW1lIG51bWJlclxuYXMgIjc3ZTEwIi4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbmltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcblxuICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICItMSJcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yICItIiBhbmQgdGhlXG5saXRlcmFsICIxIi5cbicsCi0gJ2Zvcic6IHUnXG5UaGUgImZvciIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAotICdmb3JtYXRzdHJpbmdzJzogdSdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kIGFuZCB0aGUgIkZvcm1hdHRlciIgY2xhc3Mgc2hhcmUgdGhlIHNhbWVcbnN5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mICJGb3JtYXR0ZXIiLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbiJ7fSIuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsXG50ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCB0byBpbmNsdWRlXG5hIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSBkb3VibGluZzpcbiJ7eyIgYW5kICJ9fSIuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50ICJcJyFcJyIsIGFuZCBhICpmb3JtYXRfc3BlYyosIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhIGNvbG9uICJcJzpcJyIuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgZm9ybWF0IGZvciB0aGVcbnJlcGxhY2VtZW50IHZhbHVlLlxuXG5TZWUgYWxzbyB0aGUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIHNlY3Rpb24uXG5cblRoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyBlaXRoZXIgYVxubnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0XCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSBwb3NpdGlvbmFsXG5hcmd1bWVudCwgYW5kIGlmIGl0XCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQga2V5d29yZFxuYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgYXJlIDAsIDEsIDIsXG4uLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSBhbmQgdGhlXG5udW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCBvcmRlci5cbkJlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgcG9zc2libGUgdG9cbnNwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgIlwnMTBcJyIgb3JcbiJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5IGFueVxubnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybVxuIlwnLm5hbWVcJyIgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nICJnZXRhdHRyKCkiLCB3aGlsZSBhblxuZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwIHVzaW5nXG4iX19nZXRpdGVtX18oKSIuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgY2FuIGJlXG5vbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICAjIFJlZmVyZW5jZXMgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgYXJndW1lbnQgXCduYW1lXCdcbiAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAiX19mb3JtYXRfXygpIlxubWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzIGl0IGlzIGRlc2lyYWJsZSB0b1xuZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZywgb3ZlcnJpZGluZyBpdHMgb3duXG5kZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhIHN0cmluZyBiZWZvcmVcbmNhbGxpbmcgIl9fZm9ybWF0X18oKSIsIHRoZSBub3JtYWwgZm9ybWF0dGluZyBsb2dpYyBpcyBieXBhc3NlZC5cblxuVGhyZWUgY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogIlwnIXNcJyIgd2hpY2ggY2FsbHNcbiJzdHIoKSIgb24gdGhlIHZhbHVlLCAiXCchclwnIiB3aGljaCBjYWxscyAicmVwcigpIiBhbmQgIlwnIWFcJyIgd2hpY2hcbmNhbGxzICJhc2NpaSgpIi5cblxuU29tZSBleGFtcGxlczpcblxuICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJNb3JlIHshYX0iICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbHMgYXNjaWkoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcblxuVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGUgdmFsdWVcbnNob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsIGFsaWdubWVudCxcbnBhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gZGVmaW5lIGl0c1xub3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAqZm9ybWF0X3NwZWMqLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlLCB3aGljaFxuaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG5cbkEgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHNcbndpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBtYXkgY29udGFpbiBhIGZpZWxkIG5hbWUsXG5jb252ZXJzaW9uIGZsYWcgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9uLCBidXQgZGVlcGVyIG5lc3RpbmcgaXMgbm90XG5hbGxvd2VkLiAgVGhlIHJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjIGFyZVxuc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZSAqZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gVGhpc1xuYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGEgdmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgc3BlY2lmaWVkLlxuXG5TZWUgdGhlICpGb3JtYXQgZXhhbXBsZXMqIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG5cblxuRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZFxud2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWRcbihzZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KikuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGVcbmJ1aWx0LWluICJmb3JtYXQoKSIgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nICgiIiIiKSBwcm9kdWNlc1xudGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkICJzdHIoKSIgb24gdGhlIHZhbHVlLiBBIG5vbi1lbXB0eVxuZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cblxuVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcblxuICAgZm9ybWF0X3NwZWMgOjo9IFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdXG4gICBmaWxsICAgICAgICA6Oj0gPGFueSBjaGFyYWN0ZXI+XG4gICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4gICBzaWduICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4gICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbiAgIHR5cGUgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcblxuSWYgYSB2YWxpZCAqYWxpZ24qIHZhbHVlIGlzIHNwZWNpZmllZCwgaXQgY2FuIGJlIHByZWNlZGVkIGJ5IGEgKmZpbGwqXG5jaGFyYWN0ZXIgdGhhdCBjYW4gYmUgYW55IGNoYXJhY3RlciBhbmQgZGVmYXVsdHMgdG8gYSBzcGFjZSBpZlxub21pdHRlZC4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBhIGxpdGVyYWwgY3VybHkgYnJhY2UgKCIieyIiIG9yXG4iIn0iIikgYXMgdGhlICpmaWxsKiBjaGFyYWN0ZXIgd2hlbiB1c2luZyB0aGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kLlxuSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gaW5zZXJ0IGEgY3VybHkgYnJhY2Ugd2l0aCBhIG5lc3RlZFxucmVwbGFjZW1lbnQgZmllbGQuICBUaGlzIGxpbWl0YXRpb24gZG9lc25cJ3QgYWZmZWN0IHRoZSAiZm9ybWF0KCkiXG5mdW5jdGlvbi5cblxuVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgZm9sbG93czpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCc8XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCBvYmplY3RzKS4gICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJz5cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnPVwnIiAgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyIHRoZSBzaWduIChpZiBhbnkpICAgIHxcbiAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciBwcmludGluZyBmaWVsZHMgICB8XG4gICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtIFwnKzAwMDAwMDEyMFwnLiBUaGlzIGFsaWdubWVudCBvcHRpb24gaXMgb25seSAgICB8XG4gICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgSXQgYmVjb21lcyB0aGUgZGVmYXVsdCB3aGVuIFwnMFwnICB8XG4gICB8ICAgICAgICAgICB8IGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBmaWVsZCB3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnXlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgZmllbGQgd2lkdGhcbndpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gdGhhdCB0aGVcbmFsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuXG5UaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gYmUgb25lIG9mXG50aGUgZm9sbG93aW5nOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJytcJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4gICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnLVwnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlIHVzZWQgb24gcG9zaXRpdmUgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgIlwnI1wnIiBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgZm9yIHRoZVxuY29udmVyc2lvbi4gIFRoZSBhbHRlcm5hdGUgZm9ybSBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBkaWZmZXJlbnRcbnR5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsIGNvbXBsZXggYW5kXG5EZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgaGV4YWRlY2ltYWwgb3V0cHV0XG5pcyB1c2VkLCB0aGlzIG9wdGlvbiBhZGRzIHRoZSBwcmVmaXggcmVzcGVjdGl2ZSAiXCcwYlwnIiwgIlwnMG9cJyIsIG9yXG4iXCcweFwnIiB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCBEZWNpbWFsIHRoZVxuYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gYWx3YXlzIGNvbnRhaW4gYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC4gTm9ybWFsbHksIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjb252ZXJzaW9uc1xub25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgIlwnZ1wnIiBhbmQgIlwnR1wnIlxuY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuXG5cblRoZSAiXCcsXCciIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSB0aG91c2FuZHMgc2VwYXJhdG9yLlxuRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSAiXCduXCciIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVcbmluc3RlYWQuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHRoZSAiXCcsXCciIG9wdGlvbiAoc2VlIGFsc28gKipQRVAgMzc4KiopLlxuXG4qd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoLiAgSWYgbm90XG5zcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29udGVudC5cblxuV2hlbiBubyBleHBsaWNpdCBhbGlnbm1lbnQgaXMgZ2l2ZW4sIHByZWNlZGluZyB0aGUgKndpZHRoKiBmaWVsZCBieSBhXG56ZXJvICgiXCcwXCciKSBjaGFyYWN0ZXIgZW5hYmxlcyBzaWduLWF3YXJlIHplcm8tcGFkZGluZyBmb3IgbnVtZXJpY1xudHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAqZmlsbCogY2hhcmFjdGVyIG9mICJcJzBcJyIgd2l0aCBhblxuKmFsaWdubWVudCogdHlwZSBvZiAiXCc9XCciLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggIlwnZlwnIiBhbmQgIlwnRlwnIiwgb3IgYmVmb3JlIGFuZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludFxuZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgZm9ybWF0dGVkIHdpdGggIlwnZ1wnIiBvciAiXCdHXCciLiAgRm9yIG5vbi1cbm51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpbiBvdGhlclxud29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuIFRoZVxuKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAiXCdzXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnYlwnIiAgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ29cJyIgICAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCd4XCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ1hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZFwnIiwgZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAiXCdkXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0ICJcJ25cJyJcbmFuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgImZsb2F0KCkiIGlzIHVzZWQgdG8gY29udmVydCB0aGUgaW50ZWdlciB0b1xuYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG5cblRoZSBhdmFpbGFibGUgcHJlc2VudGF0aW9uIHR5cGVzIGZvciBmbG9hdGluZyBwb2ludCBhbmQgZGVjaW1hbCB2YWx1ZXNcbmFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCdlXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiBzY2llbnRpZmljICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyIFwnZVwnIHRvIGluZGljYXRlIHRoZSBleHBvbmVudC4gICAgfFxuICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgIlwnZVwnIiBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnRlwnIiAgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyAiXCdmXCciLCBidXQgY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuICAgfCAgICAgICAgICAgfCBhbmQgImluZiIgdG8gIklORiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gInAgPj0gMSIsIHRoaXMgICAgICB8XG4gICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvICJwIiBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50IGZvcm1hdCBvciBpbiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICBUaGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCB0aGUgcmVzdWx0ICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCBwcmVjaXNpb24gInAtMSIgfFxuICAgfCAgICAgICAgICAgfCB3b3VsZCBoYXZlIGV4cG9uZW50ICJleHAiLiAgVGhlbiBpZiAiLTQgPD0gZXhwIDwgcCIsIHRoZSAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2ZcJyIgYW5kICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgICB8XG4gICB8ICAgICAgICAgICB8IHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZVwnIiBhbmQgcHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4gICB8ICAgICAgICAgICB8IGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlIHJlbW92ZWQgZnJvbSB0aGUgICAgfFxuICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzIGFsc28gcmVtb3ZlZCBpZiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nIGl0LiAgUG9zaXRpdmUgYW5kICB8XG4gICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgemVybywgYW5kIG5hbnMsICAgfFxuICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgIi0wIiBhbmQgIm5hbiIgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSBwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4gICB8ICAgICAgICAgICB8ICIwIiBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgdG8gYSBwcmVjaXNpb24gb2YgIjEiLiBUaGUgICAgfFxuICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgIlwnZ1wnIiBleGNlcHQgc3dpdGNoZXMgdG8gIlwnRVwnIiBpZiAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgcmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5IHxcbiAgIHwgICAgICAgICAgIHwgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgdG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCBleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4gICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJyVcJyIgICAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4gICB8ICAgICAgICAgICB8IGZpeGVkICgiXCdmXCciKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgcGVyY2VudCBzaWduLiAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvICJcJ2dcJyIsIGV4Y2VwdCB0aGF0IGZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuICAgfCAgICAgICAgICAgfCB1c2VkLCBoYXMgYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgdGhlIGRlY2ltYWwgcG9pbnQuIFRoZSAgIHxcbiAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSAgICB8XG4gICB8ICAgICAgICAgICB8IHBhcnRpY3VsYXIgdmFsdWUuIFRoZSBvdmVyYWxsIGVmZmVjdCBpcyB0byBtYXRjaCB0aGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBvdXRwdXQgb2YgInN0cigpIiBhcyBhbHRlcmVkIGJ5IHRoZSBvdGhlciBmb3JtYXQgICAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgInN0ci5mb3JtYXQoKSIgc3ludGF4IGFuZFxuY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG5cbkluIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLFxud2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlICJ7fSIgYW5kIHdpdGggIjoiIHVzZWQgaW5zdGVhZCBvZiAiJSIuIEZvclxuZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMy4xKyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludDpcbiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4gICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnUG9pbnQoe3NlbGYueH0sIHtzZWxmLnl9KVwnLmZvcm1hdChzZWxmPXNlbGYpXG4gICAuLi5cbiAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4gICBcJ1BvaW50KDQsIDIpXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGl0ZW1zOlxuXG4gICA+Pj4gY29vcmQgPSAoMywgNSlcbiAgID4+PiBcJ1g6IHswWzBdfTsgIFk6IHswWzFdfVwnLmZvcm1hdChjb29yZClcbiAgIFwnWDogMzsgIFk6IDVcJ1xuXG5SZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcblxuICAgPj4+ICJyZXByKCkgc2hvd3MgcXVvdGVzOiB7IXJ9OyBzdHIoKSBkb2VzblwndDogeyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuXG5BbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuXG4gICA+Pj4gXCd7OjwzMH1cJy5mb3JtYXQoXCdsZWZ0IGFsaWduZWRcJylcbiAgIFwnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6PjMwfVwnLmZvcm1hdChcJ3JpZ2h0IGFsaWduZWRcJylcbiAgIFwnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkXCdcbiAgID4+PiBcJ3s6XjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpXG4gICBcJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7OipeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJykgICMgdXNlIFwnKlwnIGFzIGEgZmlsbCBjaGFyXG4gICBcJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKlwnXG5cblJlcGxhY2luZyAiJStmIiwgIiUtZiIsIGFuZCAiJSBmIiBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG5cbiAgID4+PiBcJ3s6K2Z9OyB7OitmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCBhbHdheXNcbiAgIFwnKzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezogZn07IHs6IGZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgZm9yIHBvc2l0aXZlIG51bWJlcnNcbiAgIFwnIDMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezotZn07IHs6LWZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgdGhlIG1pbnVzIC0tIHNhbWUgYXMgXCd7OmZ9OyB7OmZ9XCdcbiAgIFwnMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG5cblJlcGxhY2luZyAiJXgiIGFuZCAiJW8iIGFuZCBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBkaWZmZXJlbnQgYmFzZXM6XG5cbiAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogezA6Yn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTBcJ1xuICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46IHswOiNifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMFwnXG5cblVzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG5cbiAgID4+PiBcJ3s6LH1cJy5mb3JtYXQoMTIzNDU2Nzg5MClcbiAgIFwnMSwyMzQsNTY3LDg5MFwnXG5cbkV4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuXG4gICA+Pj4gcG9pbnRzID0gMTlcbiAgID4+PiB0b3RhbCA9IDIyXG4gICA+Pj4gXCdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfVwnLmZvcm1hdChwb2ludHMvdG90YWwpXG4gICBcJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlXCdcblxuVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuXG4gICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4gICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4gICA+Pj4gXCd7OiVZLSVtLSVkICVIOiVNOiVTfVwnLmZvcm1hdChkKVxuICAgXCcyMDEwLTA3LTA0IDEyOjE1OjU4XCdcblxuTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcblxuICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoXCc8Xj5cJywgW1wnbGVmdFwnLCBcJ2NlbnRlclwnLCBcJ3JpZ2h0XCddKTpcbiAgIC4uLiAgICAgXCd7MDp7ZmlsbH17YWxpZ259MTZ9XCcuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sIGFsaWduPWFsaWduKVxuICAgLi4uXG4gICBcJ2xlZnQ8PDw8PDw8PDw8PDxcJ1xuICAgXCdeXl5eXmNlbnRlcl5eXl5eXCdcbiAgIFwnPj4+Pj4+Pj4+Pj5yaWdodFwnXG4gICA+Pj5cbiAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4gICA+Pj4gXCd7OjAyWH17OjAyWH17OjAyWH17OjAyWH1cJy5mb3JtYXQoKm9jdGV0cylcbiAgIFwnQzBBODAwMDFcJ1xuICAgPj4+IGludChfLCAxNilcbiAgIDMyMzIyMzU1MjFcbiAgID4+PlxuICAgPj4+IHdpZHRoID0gNVxuICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0VcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKLSAnZnVuY3Rpb24nOiB1J1xuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFthcmd1bWVudF9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgIHwgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSogWyIsIiAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXNcbmlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiB0aGVcbmZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzXG5ldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1cbmNvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50XG50byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGFcbmxpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieVxuYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLlxuVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlXG4iTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZVxuZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuIiIqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueVxuZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGVcbmZvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiBmb2xsb3dpbmdcbnRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuIHRob3NlXG5vZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSBoYXZlXG4icmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSBwYXJhbWV0ZXJcbmxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCBhcmVcbmV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgbWF5XG5iZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuXG5UaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZSAiX19hbm5vdGF0aW9uc19fIlxuYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhXG5leHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247XG5hIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvclxuYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGFcbmV4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIiZGVmIiJcbnN0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWRcbmluIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuXG4gICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCi0gJ2dsb2JhbCc6IHUnXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaXMgYSBkZWNsYXJhdGlvbiB3aGljaCBob2xkcyBmb3IgdGhlIGVudGlyZVxuY3VycmVudCBjb2RlIGJsb2NrLiAgSXQgbWVhbnMgdGhhdCB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIGFyZSB0byBiZVxuaW50ZXJwcmV0ZWQgYXMgZ2xvYmFscy4gIEl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gYXNzaWduIHRvIGEgZ2xvYmFsXG52YXJpYWJsZSB3aXRob3V0ICJnbG9iYWwiLCBhbHRob3VnaCBmcmVlIHZhcmlhYmxlcyBtYXkgcmVmZXIgdG9cbmdsb2JhbHMgd2l0aG91dCBiZWluZyBkZWNsYXJlZCBnbG9iYWwuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lIGNvZGVcbmJsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCAiZ2xvYmFsIiBzdGF0ZW1lbnQuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbFxucGFyYW1ldGVycyBvciBpbiBhICJmb3IiIGxvb3AgY29udHJvbCB0YXJnZXQsICJjbGFzcyIgZGVmaW5pdGlvbixcbmZ1bmN0aW9uIGRlZmluaXRpb24sIG9yICJpbXBvcnQiIHN0YXRlbWVudC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdFxuZW5mb3JjZSB0aGUgdHdvIHJlc3RyaWN0aW9ucywgYnV0IHByb2dyYW1zIHNob3VsZCBub3QgYWJ1c2UgdGhpc1xuZnJlZWRvbSwgYXMgZnV0dXJlIGltcGxlbWVudGF0aW9ucyBtYXkgZW5mb3JjZSB0aGVtIG9yIHNpbGVudGx5IGNoYW5nZVxudGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0uXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIHRoZSAiZ2xvYmFsIiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgcGFyc2VyLiAgSXRcbmFwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSAiZ2xvYmFsIlxuc3RhdGVtZW50LiBJbiBwYXJ0aWN1bGFyLCBhICJnbG9iYWwiIHN0YXRlbWVudCBjb250YWluZWQgaW4gYSBzdHJpbmdcbm9yIGNvZGUgb2JqZWN0IHN1cHBsaWVkIHRvIHRoZSBidWlsdC1pbiAiZXhlYygpIiBmdW5jdGlvbiBkb2VzIG5vdFxuYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbmNvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgImdsb2JhbCIgc3RhdGVtZW50cyBpbiB0aGVcbmNvZGUgY29udGFpbmluZyB0aGUgZnVuY3Rpb24gY2FsbC4gIFRoZSBzYW1lIGFwcGxpZXMgdG8gdGhlICJldmFsKCkiXG5hbmQgImNvbXBpbGUoKSIgZnVuY3Rpb25zLlxuJywKLSAnaWQtY2xhc3Nlcyc6IHUnXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbiJfKiJcbiAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllciAiXyJcbiAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlXG4gICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICBXaGVuIG5vdFxuICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCBkZWZpbmVkLlxuICAgU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuIl9fKl9fIlxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lcyBub3RcbiAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlIHdpdGhvdXRcbiAgIHdhcm5pbmcuXG5cbiJfXyoiXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKLSAnaWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSB0aGVcbmZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuXG5UaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBzdGFuZGFyZFxuYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7IHNlZSBhbHNvXG4qKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cblxuV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyBmb3JcbmlkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2VcbmxldHRlcnMgIkEiIHRocm91Z2ggIloiLCB0aGUgdW5kZXJzY29yZSAiXyIgYW5kLCBleGNlcHQgZm9yIHRoZSBmaXJzdFxuY2hhcmFjdGVyLCB0aGUgZGlnaXRzICIwIiB0aHJvdWdoICI5Ii5cblxuUHl0aG9uIDMuMCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBmcm9tIG91dHNpZGUgdGhlIEFTQ0lJXG5yYW5nZSAoc2VlICoqUEVQIDMxMzEqKikuICBGb3IgdGhlc2UgY2hhcmFjdGVycywgdGhlIGNsYXNzaWZpY2F0aW9uXG51c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyBpbmNsdWRlZCBpbiB0aGVcbiJ1bmljb2RlZGF0YSIgbW9kdWxlLlxuXG5JZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG5cbiAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbiAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyBMdSwgTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4gICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyBjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCB0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4gICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuXG5UaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuXG4qICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuXG4qICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuXG4qICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuXG4qICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG5cbiogKkxvKiAtIG90aGVyIGxldHRlcnNcblxuKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcblxuKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuXG4qICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuXG4qICpOZCogLSBkZWNpbWFsIG51bWJlcnNcblxuKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuXG4qICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gUHJvcExpc3QudHh0IHRvXG4gIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcblxuQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyB3aGlsZSBwYXJzaW5nO1xuY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuXG5BIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVycyBmb3JcblVuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL3d3dy5kY2wuaHBpLnVuaS1cbnBvdHNkYW0uZGUvaG9tZS9sb2V3aXMvdGFibGUtMzEzMS5odG1sLlxuXG5cbktleXdvcmRzXG49PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIGlkZW50aWZpZXJzIGFyZSB1c2VkIGFzIHJlc2VydmVkIHdvcmRzLCBvciAqa2V5d29yZHMqIG9mXG50aGUgbGFuZ3VhZ2UsIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBvcmRpbmFyeSBpZGVudGlmaWVycy4gIFRoZXkgbXVzdFxuYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcblxuICAgRmFsc2UgICAgICBjbGFzcyAgICAgIGZpbmFsbHkgICAgaXMgICAgICAgICByZXR1cm5cbiAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4gICBUcnVlICAgICAgIGRlZiAgICAgICAgZnJvbSAgICAgICBub25sb2NhbCAgIHdoaWxlXG4gICBhbmQgICAgICAgIGRlbCAgICAgICAgZ2xvYmFsICAgICBub3QgICAgICAgIHdpdGhcbiAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbiAgIGFzc2VydCAgICAgZWxzZSAgICAgICBpbXBvcnQgICAgIHBhc3NcbiAgIGJyZWFrICAgICAgZXhjZXB0ICAgICBpbiAgICAgICAgIHJhaXNlXG5cblxuUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5DZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgc3BlY2lhbFxubWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiBsZWFkaW5nIGFuZFxudHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuXG4iXyoiXG4gICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXIgIl8iXG4gICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZVxuICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgV2hlbiBub3RcbiAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgZGVmaW5lZC5cbiAgIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbiJfXypfXyJcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXMgbm90XG4gICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSB3aXRob3V0XG4gICB3YXJuaW5nLlxuXG4iX18qIlxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCi0gJ2lmJzogdSdcblRoZSAiaWYiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqXG5cblRoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCi0gJ2ltYWdpbmFyeSc6IHUnXG5JbWFnaW5hcnkgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKlxuXG5JbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGludHBhcnQpICgiaiIgfCAiSiIpXG5cbkFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLlxuQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVyc1xuYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgY29tcGxleFxubnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LFxuZS5nLiwgIigzKzRqKSIuICBTb21lIGV4YW1wbGVzIG9mIGltYWdpbmFyeSBsaXRlcmFsczpcblxuICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogIDMuMTRlLTEwalxuJywKLSAnaW1wb3J0JzogdSdcblRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4gICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbiAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4gICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vICJmcm9tIiBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuc3RlcHM6XG5cbjEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcblxuMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGVcbiAgIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5XaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5IGNvbW1hcykgdGhlXG50d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0IGFzIHRob3VnaFxudGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWR1YWwgaW1wb3J0IHN0YXRlbWVudHMuXG5cblRoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgYXJlXG5kZXNjcmliZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlICppbXBvcnQgc3lzdGVtKixcbndoaWNoIGFsc28gZGVzY3JpYmVzIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHBhY2thZ2VzIGFuZCBtb2R1bGVzIHRoYXRcbmNhbiBiZSBpbXBvcnRlZCwgYXMgd2VsbCBhcyBhbGwgdGhlIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbmN1c3RvbWl6ZSB0aGUgaW1wb3J0IHN5c3RlbS4gTm90ZSB0aGF0IGZhaWx1cmVzIGluIHRoaXMgc3RlcCBtYXlcbmluZGljYXRlIGVpdGhlciB0aGF0IHRoZSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQsICpvciogdGhhdCBhblxuZXJyb3Igb2NjdXJyZWQgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGUsIHdoaWNoIGluY2x1ZGVzIGV4ZWN1dGlvblxub2YgdGhlIG1vZHVsZVwncyBjb2RlLlxuXG5JZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlIG1hZGVcbmF2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOlxuXG4qIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSAiYXMiLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuICAiYXMiIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG5cbiogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGFcbiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZVwncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2VcbiAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuXG4qIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZVxuICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW5cbiAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZVxuICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuICByYXRoZXIgdGhhbiBkaXJlY3RseVxuXG5UaGUgImZyb20iIGZvcm0gdXNlcyBhIHNsaWdodGx5IG1vcmUgY29tcGxleCBwcm9jZXNzOlxuXG4xLiBmaW5kIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIHRoZSAiZnJvbSIgY2xhdXNlLCBsb2FkaW5nIGFuZFxuICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcblxuMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgImltcG9ydCIgY2xhdXNlczpcblxuICAgMS4gY2hlY2sgaWYgdGhlIGltcG9ydGVkIG1vZHVsZSBoYXMgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZVxuXG4gICAyLiBpZiBub3QsIGF0dGVtcHQgdG8gaW1wb3J0IGEgc3VibW9kdWxlIHdpdGggdGhhdCBuYW1lIGFuZCB0aGVuXG4gICAgICBjaGVjayB0aGUgaW1wb3J0ZWQgbW9kdWxlIGFnYWluIGZvciB0aGF0IGF0dHJpYnV0ZVxuXG4gICAzLiBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBmb3VuZCwgIkltcG9ydEVycm9yIiBpcyByYWlzZWQuXG5cbiAgIDQuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlIGxvY2FsXG4gICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSAiYXMiIGNsYXVzZSBpZiBpdCBpcyBwcmVzZW50LFxuICAgICAgb3RoZXJ3aXNlIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbmFtZVxuXG5FeGFtcGxlczpcblxuICAgaW1wb3J0IGZvbyAgICAgICAgICAgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiAgICAgICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQsIGZvbyBib3VuZCBsb2NhbGx5XG4gICBpbXBvcnQgZm9vLmJhci5iYXogYXMgZmJiICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBmYmJcbiAgIGZyb20gZm9vLmJhciBpbXBvcnQgYmF6ICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGJhelxuICAgZnJvbSBmb28gaW1wb3J0IGF0dHIgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGZvby5hdHRyIGJvdW5kIGFzIGF0dHJcblxuSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyICgiXCcqXCciKSwgYWxsIHB1YmxpY1xubmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGVcbnNjb3BlIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgIl9fYWxsX18iOyBpZiBkZWZpbmVkLCBpdCBtdXN0XG5iZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdFxubW9kdWxlLiAgVGhlIG5hbWVzIGdpdmVuIGluICJfX2FsbF9fIiBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljIGFuZFxuYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgIl9fYWxsX18iIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpY1xubmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoIGRvIG5vdFxuYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoIlwnX1wnIikuICAiX19hbGxfXyIgc2hvdWxkIGNvbnRhaW5cbnRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGV4cG9ydGluZ1xuaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggd2VyZVxuaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiIC0tLSBpcyBvbmx5XG5hbGxvd2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuICBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvclxuZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyICJmcm9tIiB5b3VcbmNhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG53aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxucGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgdXBcbm9uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91IGV4ZWN1dGVcbiJmcm9tIC4gaW1wb3J0IG1vZCIgZnJvbSBhIG1vZHVsZSBpbiB0aGUgInBrZyIgcGFja2FnZSB0aGVuIHlvdSB3aWxsXG5lbmQgdXAgaW1wb3J0aW5nICJwa2cubW9kIi4gSWYgeW91IGV4ZWN1dGUgImZyb20gLi5zdWJwa2cyIGltcG9ydCBtb2QiXG5mcm9tIHdpdGhpbiAicGtnLnN1YnBrZzEiIHlvdSB3aWxsIGltcG9ydCAicGtnLnN1YnBrZzIubW9kIi4gVGhlXG5zcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzIGNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbiJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyB0aGF0XG5kZXRlcm1pbmUgZHluYW1pY2FsbHkgdGhlIG1vZHVsZXMgdG8gYmUgbG9hZGVkLlxuXG5cbkZ1dHVyZSBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PVxuXG5BICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhIHBhcnRpY3VsYXJcbm1vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbmF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24gd2hlcmUgdGhlIGZlYXR1cmVcbmJlY29tZXMgc3RhbmRhcmQuXG5cblRoZSBmdXR1cmUgc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSB2ZXJzaW9uc1xub2YgUHl0aG9uIHRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gIEl0XG5hbGxvd3MgdXNlIG9mIHRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGVcbnJlbGVhc2UgaW4gd2hpY2ggdGhlIGZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cblxuICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbiAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlIG9ubHlcbmxpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcblxuKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcblxuKiBjb21tZW50cyxcblxuKiBibGFuayBsaW5lcywgYW5kXG5cbiogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG5cblRoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAzLjAgYXJlICJhYnNvbHV0ZV9pbXBvcnQiLFxuImRpdmlzaW9uIiwgImdlbmVyYXRvcnMiLCAidW5pY29kZV9saXRlcmFscyIsICJwcmludF9mdW5jdGlvbiIsXG4ibmVzdGVkX3Njb3BlcyIgYW5kICJ3aXRoX3N0YXRlbWVudCIuICBUaGV5IGFyZSBhbGwgcmVkdW5kYW50IGJlY2F1c2VcbnRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblxuQSBmdXR1cmUgc3RhdGVtZW50IGlzIHJlY29nbml6ZWQgYW5kIHRyZWF0ZWQgc3BlY2lhbGx5IGF0IGNvbXBpbGVcbnRpbWU6IENoYW5nZXMgdG8gdGhlIHNlbWFudGljcyBvZiBjb3JlIGNvbnN0cnVjdHMgYXJlIG9mdGVuXG5pbXBsZW1lbnRlZCBieSBnZW5lcmF0aW5nIGRpZmZlcmVudCBjb2RlLiAgSXQgbWF5IGV2ZW4gYmUgdGhlIGNhc2VcbnRoYXQgYSBuZXcgZmVhdHVyZSBpbnRyb2R1Y2VzIG5ldyBpbmNvbXBhdGlibGUgc3ludGF4IChzdWNoIGFzIGEgbmV3XG5yZXNlcnZlZCB3b3JkKSwgaW4gd2hpY2ggY2FzZSB0aGUgY29tcGlsZXIgbWF5IG5lZWQgdG8gcGFyc2UgdGhlXG5tb2R1bGUgZGlmZmVyZW50bHkuICBTdWNoIGRlY2lzaW9ucyBjYW5ub3QgYmUgcHVzaGVkIG9mZiB1bnRpbFxucnVudGltZS5cblxuRm9yIGFueSBnaXZlbiByZWxlYXNlLCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZmVhdHVyZSBuYW1lcyBoYXZlXG5iZWVuIGRlZmluZWQsIGFuZCByYWlzZXMgYSBjb21waWxlLXRpbWUgZXJyb3IgaWYgYSBmdXR1cmUgc3RhdGVtZW50XG5jb250YWlucyBhIGZlYXR1cmUgbm90IGtub3duIHRvIGl0LlxuXG5UaGUgZGlyZWN0IHJ1bnRpbWUgc2VtYW50aWNzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IGltcG9ydCBzdGF0ZW1lbnQ6XG50aGVyZSBpcyBhIHN0YW5kYXJkIG1vZHVsZSAiX19mdXR1cmVfXyIsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0IHdpbGxcbmJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJleGVjKCkiIGFuZFxuImNvbXBpbGUoKSIgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSAiTSIgY29udGFpbmluZyBhIGZ1dHVyZSBzdGF0ZW1lbnRcbndpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZCB3aXRoIHRoZVxuZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG4iY29tcGlsZSgpIiAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzogKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG5cbiAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAotICdpbic6IHUnXG5NZW1iZXJzaGlwIHRlc3Qgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxubm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiB0ZXN0c1xud2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xubGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KSIuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogaXNcbmEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG5zdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG5kZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbmlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbmR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4iX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4iaW4iLlxuJywKLSAnaW50ZWdlcnMnOiB1J1xuSW50ZWdlciBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5JbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpbnRlZ2VyICAgICAgICA6Oj0gZGVjaW1hbGludGVnZXIgfCBvY3RpbnRlZ2VyIHwgaGV4aW50ZWdlciB8IGJpbmludGVnZXJcbiAgIGRlY2ltYWxpbnRlZ2VyIDo6PSBub256ZXJvZGlnaXQgZGlnaXQqIHwgIjAiK1xuICAgbm9uemVyb2RpZ2l0ICAgOjo9ICIxIi4uLiI5IlxuICAgZGlnaXQgICAgICAgICAgOjo9ICIwIi4uLiI5IlxuICAgb2N0aW50ZWdlciAgICAgOjo9ICIwIiAoIm8iIHwgIk8iKSBvY3RkaWdpdCtcbiAgIGhleGludGVnZXIgICAgIDo6PSAiMCIgKCJ4IiB8ICJYIikgaGV4ZGlnaXQrXG4gICBiaW5pbnRlZ2VyICAgICA6Oj0gIjAiICgiYiIgfCAiQiIpIGJpbmRpZ2l0K1xuICAgb2N0ZGlnaXQgICAgICAgOjo9ICIwIi4uLiI3IlxuICAgaGV4ZGlnaXQgICAgICAgOjo9IGRpZ2l0IHwgImEiLi4uImYiIHwgIkEiLi4uIkYiXG4gICBiaW5kaWdpdCAgICAgICA6Oj0gIjAiIHwgIjEiXG5cblRoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSB3aGF0XG5jYW4gYmUgc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuXG5cbk5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCBhbGxvd2VkLlxuVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCBQeXRob25cbnVzZWQgYmVmb3JlIHZlcnNpb24gMy4wLlxuXG5Tb21lIGV4YW1wbGVzIG9mIGludGVnZXIgbGl0ZXJhbHM6XG5cbiAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuICAgMyAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgIDBvMzc3ICAgIDB4ZGVhZGJlZWZcbicsCi0gJ2xhbWJkYSc6IHUnXG5MYW1iZGFzXG4qKioqKioqXG5cbiAgIGxhbWJkYV9leHByICAgICAgICA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvblxuICAgbGFtYmRhX2V4cHJfbm9jb25kIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uX25vY29uZFxuXG5MYW1iZGEgZXhwcmVzc2lvbnMgKHNvbWV0aW1lcyBjYWxsZWQgbGFtYmRhIGZvcm1zKSBhcmUgdXNlZCB0byBjcmVhdGVcbmFub255bW91cyBmdW5jdGlvbnMuIFRoZSBleHByZXNzaW9uICJsYW1iZGEgYXJndW1lbnRzOiBleHByZXNzaW9uIlxueWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LiAgVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIGZ1bmN0aW9uXG5vYmplY3QgZGVmaW5lZCB3aXRoXG5cbiAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuICAgICAgIHJldHVybiBleHByZXNzaW9uXG5cblNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyIGxpc3RzLlxuTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGV4cHJlc3Npb25zIGNhbm5vdCBjb250YWluXG5zdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKLSAnbGlzdHMnOiB1J1xuTGlzdCBkaXNwbGF5c1xuKioqKioqKioqKioqKlxuXG5BIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCBpblxuc3F1YXJlIGJyYWNrZXRzOlxuXG4gICBsaXN0X2Rpc3BsYXkgOjo9ICJbIiBbc3RhcnJlZF9saXN0IHwgY29tcHJlaGVuc2lvbl0gIl0iXG5cbkEgbGlzdCBkaXNwbGF5IHlpZWxkcyBhIG5ldyBsaXN0IG9iamVjdCwgdGhlIGNvbnRlbnRzIGJlaW5nIHNwZWNpZmllZFxuYnkgZWl0aGVyIGEgbGlzdCBvZiBleHByZXNzaW9ucyBvciBhIGNvbXByZWhlbnNpb24uICBXaGVuIGEgY29tbWEtXG5zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpcyBzdXBwbGllZCwgaXRzIGVsZW1lbnRzIGFyZSBldmFsdWF0ZWRcbmZyb20gbGVmdCB0byByaWdodCBhbmQgcGxhY2VkIGludG8gdGhlIGxpc3Qgb2JqZWN0IGluIHRoYXQgb3JkZXIuXG5XaGVuIGEgY29tcHJlaGVuc2lvbiBpcyBzdXBwbGllZCwgdGhlIGxpc3QgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGVcbmVsZW1lbnRzIHJlc3VsdGluZyBmcm9tIHRoZSBjb21wcmVoZW5zaW9uLlxuJywKLSAnbmFtaW5nJzogdSdcbk5hbWluZyBhbmQgYmluZGluZ1xuKioqKioqKioqKioqKioqKioqXG5cblxuQmluZGluZyBvZiBuYW1lc1xuPT09PT09PT09PT09PT09PVxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZVxubW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGVcbmNvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZVxuYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgKmJpbmRpbmcqXG5vZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG5cblxuUmVzb2x1dGlvbiBvZiBuYW1lc1xuPT09PT09PT09PT09PT09PT09PVxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIElmXG50aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWxcbnZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVcbm5hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbiJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzIG5vdFxuZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgYXJlXG5zcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuXG5leGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgcmVmZXJlbmNlc1xuZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0XG51bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBUaGVcbm5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSBvZlxudGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG9cbnRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tXG50aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmVcbmltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZ1xud2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuXG5CdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCi0gJ25vbmxvY2FsJzogdSdcblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBleGNsdWRpbmdcbmdsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGJpbmRpbmcgaXNcbnRvIHNlYXJjaCB0aGUgbG9jYWwgbmFtZXNwYWNlIGZpcnN0LiAgVGhlIHN0YXRlbWVudCBhbGxvd3NcbmVuY2Fwc3VsYXRlZCBjb2RlIHRvIHJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgc2NvcGVcbmJlc2lkZXMgdGhlIGdsb2JhbCAobW9kdWxlKSBzY29wZS5cblxuTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQsIHVubGlrZSB0aG9zZSBsaXN0ZWQgaW4gYVxuImdsb2JhbCIgc3RhdGVtZW50LCBtdXN0IHJlZmVyIHRvIHByZS1leGlzdGluZyBiaW5kaW5ncyBpbiBhblxuZW5jbG9zaW5nIHNjb3BlICh0aGUgc2NvcGUgaW4gd2hpY2ggYSBuZXcgYmluZGluZyBzaG91bGQgYmUgY3JlYXRlZFxuY2Fubm90IGJlIGRldGVybWluZWQgdW5hbWJpZ3VvdXNseSkuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50IG11c3Qgbm90IGNvbGxpZGUgd2l0aCBwcmUtXG5leGlzdGluZyBiaW5kaW5ncyBpbiB0aGUgbG9jYWwgc2NvcGUuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAibm9ubG9jYWwiIHN0YXRlbWVudC5cbicsCi0gJ251bWJlcnMnOiB1J1xuTnVtZXJpYyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBhbmQgaW1hZ2luYXJ5IG51bWJlcnMuICBUaGVyZSBhcmUgbm8gY29tcGxleCBsaXRlcmFsc1xuKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuaW1hZ2luYXJ5IG51bWJlcikuXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAiLTEiXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciBcJyItIlwnIGFuZCB0aGVcbmxpdGVyYWwgIjEiLlxuJywKLSAnbnVtZXJpYy10eXBlcyc6IHUnXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuXG4gICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZ1xuICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0b1xuICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdFxuICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW5cbiAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZClcbiAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXNcbiAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLFxuICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG9cbiAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWNcbiAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlXG4gICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3NcbiAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9XG4gICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpblxuICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9yc1xuICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZVxuICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YVxuICAgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuJywKLSAnb2JqZWN0cyc6IHUnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciBjb21wYXJlcyB0aGVcbmlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUgImlkKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgImlkKHgpIiBpcyB0aGUgbWVtb3J5XG5hZGRyZXNzIHdoZXJlICJ4IiBpcyBzdG9yZWQuXG5cbkFuIG9iamVjdFwncyB0eXBlIGRldGVybWluZXMgdGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzXG4oZS5nLiwgImRvZXMgaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXNcbmZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSAidHlwZSgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFwnc1xudHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0XCdzXG4qdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuXG5UaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG5jaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlYWJsZVxub25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbmltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlXG5vYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXJcJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciB0aGVcbmNvbnRhaW5lciBpcyBzdGlsbCBjb25zaWRlcmVkIGltbXV0YWJsZSwgYmVjYXVzZSB0aGUgY29sbGVjdGlvbiBvZlxub2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG5zdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlIHN1YnRsZS4pXG5BbiBvYmplY3RcJ3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG5udW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzIGFuZFxubGlzdHMgYXJlIG11dGFibGUuXG5cbk9iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG5hbGxvd2VkIHRvIHBvc3Rwb25lIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBvbWl0IGl0IGFsdG9nZXRoZXIgLS0tIGl0IGlzXG5hIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbmltcGxlbWVudGVkLCBhcyBsb25nIGFzIG5vIG9iamVjdHMgYXJlIGNvbGxlY3RlZCB0aGF0IGFyZSBzdGlsbFxucmVhY2hhYmxlLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSByZWZlcmVuY2UtXG5jb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgbGlua2VkXG5nYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgImdjIiBtb2R1bGUgZm9yXG5pbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gT3RoZXJcbmltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90IGRlcGVuZFxub24gaW1tZWRpYXRlIGZpbmFsaXphdGlvbiBvZiBvYmplY3RzIHdoZW4gdGhleSBiZWNvbWUgdW5yZWFjaGFibGUgKHNvXG55b3Ugc2hvdWxkIGFsd2F5cyBjbG9zZSBmaWxlcyBleHBsaWNpdGx5KS5cblxuTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uXCdzIHRyYWNpbmcgb3IgZGVidWdnaW5nXG5mYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBjb2xsZWN0YWJsZS5cbkFsc28gbm90ZSB0aGF0IGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIGEgXCcidHJ5Ii4uLiJleGNlcHQiXCdcbnN0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvICJleHRlcm5hbCIgcmVzb3VyY2VzIHN1Y2ggYXMgb3BlblxuZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlIGZyZWVkXG53aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbm5vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiwgc3VjaCBvYmplY3RzIGFsc28gcHJvdmlkZSBhbiBleHBsaWNpdCB3YXkgdG9cbnJlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgImNsb3NlKCkiIG1ldGhvZC4gUHJvZ3JhbXNcbmFyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuXCcidHJ5Ii4uLiJmaW5hbGx5IlwnIHN0YXRlbWVudCBhbmQgdGhlIFwnIndpdGgiXCcgc3RhdGVtZW50IHByb3ZpZGVcbmNvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSBjYWxsZWRcbipjb250YWluZXJzKi4gRXhhbXBsZXMgb2YgY29udGFpbmVycyBhcmUgdHVwbGVzLCBsaXN0cyBhbmRcbmRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyXCdzIHZhbHVlLiAgSW5cbm1vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5IHRoZVxudmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCB3aGVuIHdlXG50YWxrIGFib3V0IHRoZSBtdXRhYmlsaXR5IG9mIGEgY29udGFpbmVyLCBvbmx5IHRoZSBpZGVudGl0aWVzIG9mIHRoZVxuaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG5jb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlIG9iamVjdCwgaXRzXG52YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cblxuVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yIGltbXV0YWJsZVxudHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiBhXG5yZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCB3aGlsZVxuZm9yIG11dGFibGUgb2JqZWN0cyB0aGlzIGlzIG5vdCBhbGxvd2VkLiAgRS5nLiwgYWZ0ZXIgImEgPSAxOyBiID0gMSIsXG4iYSIgYW5kICJiIiBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGUgdmFsdWVcbm9uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyICJjID0gW107IGQgPSBbXSIsICJjIlxuYW5kICJkIiBhcmUgZ3VhcmFudGVlZCB0byByZWZlciB0byB0d28gZGlmZmVyZW50LCB1bmlxdWUsIG5ld2x5XG5jcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0ICJjID0gZCA9IFtdIiBhc3NpZ25zIHRoZSBzYW1lIG9iamVjdFxudG8gYm90aCAiYyIgYW5kICJkIi4pXG4nLAotICdvcGVyYXRvci1zdW1tYXJ5JzogdSdcbk9wZXJhdG9yIHByZWNlZGVuY2VcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlIGluIFB5dGhvbiwgZnJvbVxubG93ZXN0IHByZWNlZGVuY2UgKGxlYXN0IGJpbmRpbmcpIHRvIGhpZ2hlc3QgcHJlY2VkZW5jZSAobW9zdFxuYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZS4gIFVubGVzc1xudGhlIHN5bnRheCBpcyBleHBsaWNpdGx5IGdpdmVuLCBvcGVyYXRvcnMgYXJlIGJpbmFyeS4gIE9wZXJhdG9ycyBpblxudGhlIHNhbWUgYm94IGdyb3VwIGxlZnQgdG8gcmlnaHQgKGV4Y2VwdCBmb3IgZXhwb25lbnRpYXRpb24sIHdoaWNoXG5ncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cblxuTm90ZSB0aGF0IGNvbXBhcmlzb25zLCBtZW1iZXJzaGlwIHRlc3RzLCBhbmQgaWRlbnRpdHkgdGVzdHMsIGFsbCBoYXZlXG50aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBoYXZlIGEgbGVmdC10by1yaWdodCBjaGFpbmluZyBmZWF0dXJlIGFzXG5kZXNjcmliZWQgaW4gdGhlICpDb21wYXJpc29ucyogc2VjdGlvbi5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xufCAibGFtYmRhIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbWJkYSBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaWYiIC0tICJlbHNlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbmRpdGlvbmFsIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAib3IiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYW5kIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAibm90IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gTk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaW4iLCAibm90IGluIiwgImlzIiwgImlzIG5vdCIsICI8IiwgIjw9IiwgIj4iLCB8IENvbXBhcmlzb25zLCBpbmNsdWRpbmcgbWVtYmVyc2hpcCAgICAgfFxufCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cyAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8IE11bHRpcGxpY2F0aW9uLCBtYXRyaXggbXVsdGlwbGljYXRpb24gfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiK3giLCAiLXgiLCAifngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKioiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYXdhaXQiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAieFtpbmRleF0iLCAieFtpbmRleDppbmRleF0iLCAgICAgICAgICAgICAgICAgICB8IFN1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxufCAieChhcmd1bWVudHMuLi4pIiwgInguYXR0cmlidXRlIiAgICAgICAgICAgICAgICB8IGF0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKGV4cHJlc3Npb25zLi4uKSIsICJbZXhwcmVzc2lvbnMuLi5dIiwgIntrZXk6ICB8IEJpbmRpbmcgb3IgdHVwbGUgZGlzcGxheSwgbGlzdCAgICAgICAgfFxufCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8IGRpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoaWxlICJhYnMoeCV5KSA8IGFicyh5KSIgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0c1xuICAgIGl0IG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCAiLTFlLTEwMCAlIDFlMTAwIiBoYXZlIHRoZSBzYW1lXG4gICAgc2lnbiBhcyAiMWUxMDAiLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzICItMWUtMTAwICsgMWUxMDAiLCB3aGljaFxuICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSBmdW5jdGlvblxuICAgICJtYXRoLmZtb2QoKSIgcmV0dXJucyBhIHJlc3VsdCB3aG9zZSBzaWduIG1hdGNoZXMgdGhlIHNpZ24gb2YgdGhlXG4gICAgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgIi0xZS0xMDAiIGluIHRoaXMgY2FzZS5cbiAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlIGFwcGxpY2F0aW9uLlxuXG5bMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgeSwgaXRcJ3NcbiAgICBwb3NzaWJsZSBmb3IgIngvL3kiIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiAiKHgteCV5KS8veSIgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0ICJkaXZtb2QoeCx5KVswXSAqIHkgKyB4ICUgeSIgYmUgdmVyeSBjbG9zZVxuICAgIHRvICJ4Ii5cblxuWzNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSBwb2ludHMqIChlLmcuXG4gICAgVSswMDQxKSBhbmQgKmFic3RyYWN0IGNoYXJhY3RlcnMqIChlLmcuICJMQVRJTiBDQVBJVEFMIExFVFRFUiBBIikuXG4gICAgV2hpbGUgbW9zdCBhYnN0cmFjdCBjaGFyYWN0ZXJzIGluIFVuaWNvZGUgYXJlIG9ubHkgcmVwcmVzZW50ZWRcbiAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgY2hhcmFjdGVyc1xuICAgIHRoYXQgY2FuIGluIGFkZGl0aW9uIGJlIHJlcHJlc2VudGVkIHVzaW5nIGEgc2VxdWVuY2Ugb2YgbW9yZSB0aGFuXG4gICAgb25lIGNvZGUgcG9pbnQuICBGb3IgZXhhbXBsZSwgdGhlIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlXG4gICAgKnByZWNvbXBvc2VkIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwQzcsIG9yIGFzIGEgc2VxdWVuY2VcbiAgICBvZiBhICpiYXNlIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwNDMgKExBVElOIENBUElUQUxcbiAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb25cbiAgICBVKzAzMjcgKENPTUJJTklORyBDRURJTExBKS5cblxuICAgIFRoZSBjb21wYXJpc29uIG9wZXJhdG9ycyBvbiBzdHJpbmdzIGNvbXBhcmUgYXQgdGhlIGxldmVsIG9mXG4gICAgVW5pY29kZSBjb2RlIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gaHVtYW5zLiAgRm9yXG4gICAgZXhhbXBsZSwgIiJcXHUwMEM3IiA9PSAiXFx1MDA0M1xcdTAzMjciIiBpcyAiRmFsc2UiLCBldmVuIHRob3VnaCBib3RoXG4gICAgc3RyaW5ncyByZXByZXNlbnQgdGhlIHNhbWUgYWJzdHJhY3QgY2hhcmFjdGVyICJMQVRJTiBDQVBJVEFMXG4gICAgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cblxuICAgIFRvIGNvbXBhcmUgc3RyaW5ncyBhdCB0aGUgbGV2ZWwgb2YgYWJzdHJhY3QgY2hhcmFjdGVycyAodGhhdCBpcyxcbiAgICBpbiBhIHdheSBpbnR1aXRpdmUgdG8gaHVtYW5zKSwgdXNlICJ1bmljb2RlZGF0YS5ub3JtYWxpemUoKSIuXG5cbls0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgYW5kIHRoZVxuICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSBzZWVtaW5nbHkgdW51c3VhbFxuICAgIGJlaGF2aW91ciBpbiBjZXJ0YWluIHVzZXMgb2YgdGhlICJpcyIgb3BlcmF0b3IsIGxpa2UgdGhvc2VcbiAgICBpbnZvbHZpbmcgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuXG4gICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuXG5bNV0gVGhlICIlIiBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuIGFyaXRobWV0aWNcbiAgICBvciBiaXR3aXNlIHVuYXJ5IG9wZXJhdG9yIG9uIGl0cyByaWdodCwgdGhhdCBpcywgIjIqKi0xIiBpcyAiMC41Ii5cbicsCi0gJ3Bhc3MnOiB1J1xuVGhlICJwYXNzIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG5cbiJwYXNzIiBpcyBhIG51bGwgb3BlcmF0aW9uIC0tLSB3aGVuIGl0IGlzIGV4ZWN1dGVkLCBub3RoaW5nIGhhcHBlbnMuXG5JdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG5zeW50YWN0aWNhbGx5LCBidXQgbm8gY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCwgZm9yIGV4YW1wbGU6XG5cbiAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG5cbiAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKLSAncG93ZXInOiB1J1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9ICggYXdhaXRfZXhwciB8IHByaW1hcnkgKSBbIioqIiB1X2V4cHJdXG5cblRodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCB0aGVcbm9wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCBjb25zdHJhaW5cbnRoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiAiLTEqKjIiIHJlc3VsdHMgaW4gIi0xIi5cblxuVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbmZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCBhcmd1bWVudFxucmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlXG5maXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuXG5Gb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyB1bmxlc3NcbnRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbmNvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbiIxMCoqMiIgcmV0dXJucyAiMTAwIiwgYnV0ICIxMCoqLTIiIHJldHVybnMgIjAuMDEiLlxuXG5SYWlzaW5nICIwLjAiIHRvIGEgbmVnYXRpdmUgcG93ZXIgcmVzdWx0cyBpbiBhICJaZXJvRGl2aXNpb25FcnJvciIuXG5SYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgImNvbXBsZXgiXG5udW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhICJWYWx1ZUVycm9yIi4pXG4nLAotICdyYWlzZSc6IHUnXG5UaGUgInJhaXNlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCBleGNlcHRpb25cbnRoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgaW5cbnRoZSBjdXJyZW50IHNjb3BlLCBhICJSdW50aW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5kaWNhdGluZ1xudGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuXG5PdGhlcndpc2UsICJyYWlzZSIgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbiJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG5vYnRhaW5lZCB3aGVuIG5lZWRlZCBieSBpbnN0YW50aWF0aW5nIHRoZSBjbGFzcyB3aXRoIG5vIGFyZ3VtZW50cy5cblxuVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2VcJ3MgY2xhc3MsIHRoZVxuKnZhbHVlKiBpcyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuXG5BIHRyYWNlYmFjayBvYmplY3QgaXMgbm9ybWFsbHkgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYW4gZXhjZXB0aW9uXG5pcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCB3aGljaFxuaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayBpblxub25lIHN0ZXAgdXNpbmcgdGhlICJ3aXRoX3RyYWNlYmFjaygpIiBleGNlcHRpb24gbWV0aG9kICh3aGljaCByZXR1cm5zXG50aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzIGFyZ3VtZW50KSxcbmxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgc2Vjb25kXG4qZXhwcmVzc2lvbiogbXVzdCBiZSBhbm90aGVyIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSwgd2hpY2ggd2lsbFxudGhlbiBiZSBhdHRhY2hlZCB0byB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBhcyB0aGUgIl9fY2F1c2VfXyIgYXR0cmlidXRlXG4od2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbmV4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlXG5hbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXNcbnRoZW4gYXR0YWNoZWQgYXMgdGhlIG5ldyBleGNlcHRpb25cJ3MgIl9fY29udGV4dF9fIiBhdHRyaWJ1dGU6XG5cbiAgID4+PiB0cnk6XG4gICAuLi4gICAgIHByaW50KDEgLyAwKVxuICAgLi4uIGV4Y2VwdDpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIilcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbiAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIGFib3V0IGhhbmRsaW5nIGV4Y2VwdGlvbnMgaXMgaW4gc2VjdGlvblxuKlRoZSB0cnkgc3RhdGVtZW50Ki5cbicsCi0gJ3JldHVybic6IHUnXG5UaGUgInJldHVybiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG4icmV0dXJuIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24sXG5ub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG5cbklmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgIk5vbmUiIGlzXG5zdWJzdGl0dXRlZC5cblxuInJldHVybiIgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0IChvclxuIk5vbmUiKSBhcyByZXR1cm4gdmFsdWUuXG5cbldoZW4gInJldHVybiIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAiZmluYWxseSJcbmNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyB0aGVcbmZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlICJyZXR1cm4iIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlICJTdG9wSXRlcmF0aW9uIiB0byBiZSByYWlzZWQuIFRoZVxucmV0dXJuZWQgdmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3RcbiJTdG9wSXRlcmF0aW9uIiBhbmQgYmVjb21lcyB0aGUgIlN0b3BJdGVyYXRpb24udmFsdWUiIGF0dHJpYnV0ZS5cbicsCi0gJ3NlcXVlbmNlLXR5cGVzJzogdSdcbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4nLAotICdzaGlmdGluZyc6IHUnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGZsb29yIGRpdmlzaW9uIGJ5ICJwb3coMixuKSIuXG5BIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICJwb3coMixuKSIuXG5cbk5vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4gIHJlcXVpcmVkIHRvIGJlIGF0IG1vc3QgInN5cy5tYXhzaXplIi4gIElmIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbiAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCi0gJ3NsaWNpbmdzJzogdSdcblNsaWNpbmdzXG4qKioqKioqKlxuXG5BIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCBhXG5zdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgYXNcbnRhcmdldHMgaW4gYXNzaWdubWVudCBvciAiZGVsIiBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYSBzbGljaW5nOlxuXG4gICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbiAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiIFtzdHJpZGVdIF1cbiAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cblxuVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZVxuYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSBzdWJzY3JpcHRpb25cbmNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyIGNvbXBsaWNhdGluZyB0aGVcbnN5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgaW5kZXhlZFxuKHVzaW5nIHRoZSBzYW1lICJfX2dldGl0ZW1fXygpIiBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgd2l0aCBhXG5rZXkgdGhhdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlIHNsaWNlXG5saXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG5jb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgbG9uZVxuc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgYW5cbmV4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgaXMgYVxuc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kikgd2hvc2VcbiJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlXG5leHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbnJlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nICJOb25lIiBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCi0gJ3NwZWNpYWxhdHRycyc6IHUnXG5TcGVjaWFsIEF0dHJpYnV0ZXNcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRvIHNldmVyYWxcbm9iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSBub3QgcmVwb3J0ZWRcbmJ5IHRoZSAiZGlyKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuXG5jbGFzcy5fX3N1YmNsYXNzZXNfXygpXG5cbiAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW1tZWRpYXRlXG4gICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlIHJlZmVyZW5jZXNcbiAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuXG4gICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbiAgICAgIFs8Y2xhc3MgXCdib29sXCc+XVxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlc2Ugc3BlY2lhbCBtZXRob2RzIG1heSBiZSBmb3VuZFxuICAgIGluIHRoZSBQeXRob24gUmVmZXJlbmNlIE1hbnVhbCAoKkJhc2ljIGN1c3RvbWl6YXRpb24qKS5cblxuWzJdIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBsaXN0ICJbMSwgMl0iIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICAiWzEuMCwgMi4wXSIsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksXG4gICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbiAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiB1J1xuU3BlY2lhbCBtZXRob2QgbmFtZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSBzcGVjaWFsXG5zeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgc2xpY2luZykgYnlcbmRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvblwncyBhcHByb2FjaCB0b1xuKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duIGJlaGF2aW9yXG53aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGRlZmluZXNcbmEgbWV0aG9kIG5hbWVkICJfX2dldGl0ZW1fXygpIiwgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLFxudGhlbiAieFtpXSIgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvICJ0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsIGkpIi5cbkV4Y2VwdCB3aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uIHJhaXNlIGFuXG5leGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5XG4iQXR0cmlidXRlRXJyb3IiIG9yICJUeXBlRXJyb3IiKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG4iTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG5cblxuQmFzaWMgY3VzdG9taXphdGlvblxuPT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlXG4gICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlIHRoaXJkIGNhblxuICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbiAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGVcbiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlclxuICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXNcbiAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG9cbiAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXRcbiAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJmb3JtYXQoKSIgYW5kXG4gICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlIHN0cmluZ1xuICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgKnN0cmluZypcbiAgIG9iamVjdC5cblxuICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgIm9iamVjdCJcbiAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGFcbiAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvXG4gICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGxcbiAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhXG4gICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgaXRzZWxmXG4gICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICJ4Ll9fbGVfXyh5KSIsXG4gICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4gICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gIk5vdEltcGxlbWVudGVkIlxuICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciBvZlxuICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkIGZvciBhXG4gICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiBhbnkgdmFsdWUsXG4gICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiBjb250ZXh0IChlLmcuLFxuICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgImJvb2woKSJcbiAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCBpbnZlcnRzIHRoZVxuICAgcmVzdWx0IHVubGVzcyBpdCBpcyAiTm90SW1wbGVtZW50ZWQiLiAgVGhlcmUgYXJlIG5vIG90aGVyIGltcGxpZWRcbiAgIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBmb3IgZXhhbXBsZSwgdGhlXG4gICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyBhdXRvbWF0aWNhbGx5XG4gICBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdCBvcGVyYXRpb24sIHNlZVxuICAgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cblxuICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzIHJlZmxlY3Rpb24sXG4gICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uIElmIHRoZVxuICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhXG4gICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwncyB0eXBlLCB0aGVcbiAgIHJlZmxlY3RlZCBtZXRob2Qgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaGFzIHByaW9yaXR5LCBvdGhlcndpc2UgdGhlXG4gICBsZWZ0IG9wZXJhbmRcJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgaXMgbm90XG4gICBjb25zaWRlcmVkLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4gICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICJkaWN0Ii5cbiAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlOyBpdCBpc1xuICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpIHRoZSBoYXNoXG4gICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSBwYXJ0IGluXG4gICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiBvYmplY3RcJ3NcbiAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAiUHlfc3NpemVfdCIuICBUaGlzXG4gICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0XG4gICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiBhbGxcbiAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAicHl0aG9uIC1jXG4gICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAiX19lcV9fKCkiXG4gICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgaXRlbXMgaW5cbiAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyBhbmRcbiAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4gICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSBjb2xsZWN0aW9uc1xuICAgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlIG9iamVjdFwncyBoYXNoXG4gICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiIG1ldGhvZHMgYnlcbiAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgPT0gaGFzaCh5KSIuXG5cbiAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICJfX2hhc2hfXygpIlxuICAgd2lsbCBoYXZlIGl0cyAiX19oYXNoX18oKSIgaW1wbGljaXRseSBzZXQgdG8gIk5vbmUiLiAgV2hlbiB0aGVcbiAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3NcbiAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG9cbiAgIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlIGludGVycHJldGVyXG4gICBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgIl9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgIl9fZXFfXygpIiB3aXNoZXMgdG8gc3VwcHJlc3NcbiAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlIGNsYXNzXG4gICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgdGhhdFxuICAgZXhwbGljaXRseSByYWlzZXMgYSAiVHlwZUVycm9yIiB3b3VsZCBiZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgY2FsbC5cblxuICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmRcbiAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyAiUFlUSE9OSEFTSFNFRUQiLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIi4gIFdoZW4gdGhpcyBtZXRob2QgaXMgbm90XG4gICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0IGlzXG4gICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ib29sX18oKSIsIGFsbCBpdHMgaW5zdGFuY2VzIGFyZVxuICAgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAieC5uYW1lIikgZm9yXG5jbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLiBUaGlzXG4gICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzIGRvbmUgYm90aCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbiAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlIHRoYXQgYXRcbiAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5IG5vdFxuICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICJfX2dldGF0dHJfXygpIixcbiAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAiX19nZXRhdHRyaWJ1dGVfXygpIiBlaXRoZXJcbiAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuIFRoaXMgbWV0aG9kXG4gICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpblxuICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3NcbiAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3JcbiAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbFxuICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4XG4gICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICAib2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKSIuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiAiZGVsIG9iai5uYW1lIiBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gImRpcigpIiBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gImRpcigpIiBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSBsaXN0IGFuZFxuICAgc29ydHMgaXQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICJOb25lIiB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gIkF0dHJpYnV0ZUVycm9yIlxuICAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5UaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAiaW5zcGVjdCIgbW9kdWxlIGFzXG5zcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAoc2V0dGluZyB0aGlzXG5hcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mIGR5bmFtaWMgY2xhc3NcbmF0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiBpbnN0YW5jZSBvZiB0aGVcbmdpdmVuIHR5cGUgKG9yIGEgc3ViY2xhc3MpIGlzIGV4cGVjdGVkIG9yIHJlcXVpcmVkIGFzIHRoZSBmaXJzdFxucG9zaXRpb25hbCBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIENQeXRob24gc2V0cyB0aGlzIGF0dHJpYnV0ZSBmb3JcbnVuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCBhbmRcbiJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LCBpdFxuaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiYS54IiBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG4idHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCAiYS54Ii4gSG93XG50aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpIi5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAic3VwZXIoQixcbiAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlIGJhc2UgY2xhc3MgIkEiXG4gICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3Igd2l0aCB0aGVcbiAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXykiLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbmRvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsIHJldHVyblxudGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGUgb2JqZWN0XCdzXG5pbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiBhbmQvb3JcbiJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyBuZWl0aGVyLCBpdCBpc1xuYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lIGJvdGhcbiJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZVxuIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAiX19nZXRfXygpIlxuZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluXG5jb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICJjbGFzc21ldGhvZCgpIikgYXJlXG5pbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuLS0tLS0tLS0tXG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICpfX3Nsb3RzX18qXG4gICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgdGhlXG4gICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3IgZWFjaFxuICAgaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAiQXR0cmlidXRlRXJyb3IiLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXNcbiAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0c1xuICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZVxuICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlXG4gIChleGNlcHQgYnkgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS5cbiAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAiYnl0ZXMiIGFuZCAidHVwbGUiLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3NcbiAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuXG5cbkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyAidHlwZSgpIi4gVGhlIGNsYXNzIGJvZHkgaXNcbmV4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgbG9jYWxseSB0byB0aGVcbnJlc3VsdCBvZiAidHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKSIuXG5cblRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pc2VkIGJ5IHBhc3NpbmcgdGhlXG4ibWV0YWNsYXNzIiBrZXl3b3JkIGFyZ3VtZW50IGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGxpbmUsIG9yIGJ5XG5pbmhlcml0aW5nIGZyb20gYW4gZXhpc3RpbmcgY2xhc3MgdGhhdCBpbmNsdWRlZCBzdWNoIGFuIGFyZ3VtZW50LiBJblxudGhlIGZvbGxvd2luZyBleGFtcGxlLCBib3RoICJNeUNsYXNzIiBhbmQgIk15U3ViY2xhc3MiIGFyZSBpbnN0YW5jZXNcbm9mICJNZXRhIjpcblxuICAgY2xhc3MgTWV0YSh0eXBlKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU1ldGEpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlTdWJjbGFzcyhNeUNsYXNzKTpcbiAgICAgICBwYXNzXG5cbkFueSBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbmFyZSBwYXNzZWQgdGhyb3VnaCB0byBhbGwgbWV0YWNsYXNzIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGJlbG93LlxuXG5XaGVuIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBleGVjdXRlZCwgdGhlIGZvbGxvd2luZyBzdGVwcyBvY2N1cjpcblxuKiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWRcblxuKiB0aGUgY2xhc3MgbmFtZXNwYWNlIGlzIHByZXBhcmVkXG5cbiogdGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWRcblxuKiB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWRcblxuXG5EZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgZm9yIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBkZXRlcm1pbmVkIGFzXG5mb2xsb3dzOlxuXG4qIGlmIG5vIGJhc2VzIGFuZCBubyBleHBsaWNpdCBtZXRhY2xhc3MgYXJlIGdpdmVuLCB0aGVuICJ0eXBlKCkiIGlzXG4gIHVzZWRcblxuKiBpZiBhbiBleHBsaWNpdCBtZXRhY2xhc3MgaXMgZ2l2ZW4gYW5kIGl0IGlzICpub3QqIGFuIGluc3RhbmNlIG9mXG4gICJ0eXBlKCkiLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzc1xuXG4qIGlmIGFuIGluc3RhbmNlIG9mICJ0eXBlKCkiIGlzIGdpdmVuIGFzIHRoZSBleHBsaWNpdCBtZXRhY2xhc3MsIG9yXG4gIGJhc2VzIGFyZSBkZWZpbmVkLCB0aGVuIHRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHVzZWRcblxuVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWRcbm1ldGFjbGFzcyAoaWYgYW55KSBhbmQgdGhlIG1ldGFjbGFzc2VzIChpLmUuICJ0eXBlKGNscykiKSBvZiBhbGxcbnNwZWNpZmllZCBiYXNlIGNsYXNzZXMuIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIG9uZSB3aGljaCBpcyBhXG5zdWJ0eXBlIG9mICphbGwqIG9mIHRoZXNlIGNhbmRpZGF0ZSBtZXRhY2xhc3Nlcy4gSWYgbm9uZSBvZiB0aGVcbmNhbmRpZGF0ZSBtZXRhY2xhc3NlcyBtZWV0cyB0aGF0IGNyaXRlcmlvbiwgdGhlbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxud2lsbCBmYWlsIHdpdGggIlR5cGVFcnJvciIuXG5cblxuUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhICJfX3ByZXBhcmVfXyIgYXR0cmlidXRlLFxuaXQgaXMgY2FsbGVkIGFzICJuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSwgYmFzZXMsXG4qKmt3ZHMpIiAod2hlcmUgdGhlIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgY29tZSBmcm9tXG50aGUgY2xhc3MgZGVmaW5pdGlvbikuXG5cbklmIHRoZSBtZXRhY2xhc3MgaGFzIG5vICJfX3ByZXBhcmVfXyIgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5ICJkaWN0KCkiIGluc3RhbmNlLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDBcblxuICAgICBJbnRyb2R1Y2VkIHRoZSAiX19wcmVwYXJlX18iIG5hbWVzcGFjZSBob29rXG5cblxuRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzICJleGVjKGJvZHksIGdsb2JhbHMoKSxcbm5hbWVzcGFjZSkiLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbCBjYWxsIHRvICJleGVjKCkiIGlzIHRoYXRcbmxleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgbWV0aG9kcykgdG9cbnJlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgY2xhc3NcbmRlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuXG5Ib3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sXG5tZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlXG5jbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3RcbnBhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbFxuZnJvbSBzdGF0aWMgbWV0aG9kcy5cblxuXG5DcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSBjbGFzc1xuYm9keSwgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgIm1ldGFjbGFzcyhuYW1lLCBiYXNlcyxcbm5hbWVzcGFjZSwgKiprd2RzKSIgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSB0aGUgc2FtZVxuYXMgdGhvc2UgcGFzc2VkIHRvICJfX3ByZXBhcmVfXyIpLlxuXG5UaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSB6ZXJvLVxuYXJndW1lbnQgZm9ybSBvZiAic3VwZXIoKSIuICJfX2NsYXNzX18iIGlzIGFuIGltcGxpY2l0IGNsb3N1cmVcbnJlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzIGJvZHkgcmVmZXJcbnRvIGVpdGhlciAiX19jbGFzc19fIiBvciAic3VwZXIiLiBUaGlzIGFsbG93cyB0aGUgemVybyBhcmd1bWVudCBmb3JtXG5vZiAic3VwZXIoKSIgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkIGJhc2VkIG9uXG5sZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkIHRvIG1ha2UgdGhlXG5jdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoZVxubWV0aG9kLlxuXG5BZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3NcbmRlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLlxuXG5XaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgInR5cGUuX19uZXdfXyIsIHRoZSBvYmplY3QgcHJvdmlkZWQgYXNcbnRoZSBuYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIHN0YW5kYXJkIFB5dGhvbiBkaWN0aW9uYXJ5IGFuZFxudGhlIG9yaWdpbmFsIG9iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBiZWNvbWVzIHRoZSAiX19kaWN0X18iXG5hdHRyaWJ1dGUgb2YgdGhlIGNsYXNzIG9iamVjdC5cblxuU2VlIGFsc286ICoqUEVQIDMxMzUqKiAtIE5ldyBzdXBlclxuXG4gICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgIl9fY2xhc3NfXyIgY2xvc3VyZSByZWZlcmVuY2VcblxuXG5NZXRhY2xhc3MgZXhhbXBsZVxuLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG4iY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiIHRvIHJlbWVtYmVyIHRoZSBvcmRlciB0aGF0IGNsYXNzIHZhcmlhYmxlc1xuYXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgIEBjbGFzc21ldGhvZFxuICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbiAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSlcbiAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4gICAgICAgICAgIHJldHVybiByZXN1bHRcblxuICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbiAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG5cbiAgID4+PiBBLm1lbWJlcnNcbiAgIChcJ19fbW9kdWxlX19cJywgXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnLCBcJ2ZvdXJcJylcblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzIGJlZ2luc1xud2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgIl9fcHJlcGFyZV9fKCkiIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSAiY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHMgYW5kXG5hdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgZ2V0c1xuaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSBvcmRlcmVkXG5kaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCAibWVtYmVycyIuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG4iaXNpbnN0YW5jZSgpIiBhbmQgImlzc3ViY2xhc3MoKSIgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5JbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzICJhYmMuQUJDTWV0YSIgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzIGluXG5vcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpIi5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgICJpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcykiLlxuXG5Ob3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlIChtZXRhY2xhc3MpIG9mIGFcbmNsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSBhY3R1YWwgY2xhc3MuXG5UaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWRcbm9uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhIGNsYXNzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG5cbiAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nICJpc2luc3RhbmNlKCkiIGFuZFxuICAgICAiaXNzdWJjbGFzcygpIiBiZWhhdmlvciB0aHJvdWdoICJfX2luc3RhbmNlY2hlY2tfXygpIiBhbmRcbiAgICAgIl9fc3ViY2xhc3NjaGVja19fKCkiLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSBpblxuICAgICB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlICJhYmMiXG4gICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrIDwgTiIgd2hlcmVcbipOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggZGVmaW5lIGFcbnJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGUgdGhlXG5tZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICJjbGVhcigpIixcbiJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAidXBkYXRlKCkiXG5iZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLlxuVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiBhYnN0cmFjdCBiYXNlXG5jbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsXG4iX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlc1xuc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIixcbiJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob25cbnN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnRcbmFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIixcbiJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZFxuYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0IGlzXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4iX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iIG9wZXJhdG9yO1xuZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yIHNlcXVlbmNlcywgaXRcbnNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCB0aGF0IGJvdGhcbm1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvIGFsbG93XG5lZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAiX19pdGVyX18oKSJcbnNob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGVcbnRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiBvYmplY3QgdGhhdFxuICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgIl9fbGVuX18oKSIgbWV0aG9kXG4gICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkIHJldHVybiBhblxuICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuXG4gICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gVGhpc1xuICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkIGZvclxuICAgY29ycmVjdG5lc3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLlxuICBBIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoICJOb25lIi5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3Igc2VxdWVuY2UgdHlwZXMsXG4gICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICBOb3RlIHRoYXRcbiAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSBjbGFzcyB3aXNoZXNcbiAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbiAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlIHJhaXNlZDsgaWYgb2ZcbiAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55XG4gICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiBzaG91bGQgYmVcbiAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGVcbiAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iIGZvciBkaWN0XG4gICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAicmV2ZXJzZWQoKSJcbiAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAoIl9fbGVuX18oKSJcbiAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sXG4gICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSBhblxuICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnlcbiAgICJyZXZlcnNlZCgpIi5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlIG1lbWJlcnNoaXAgdGVzdFxuICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCBzZXF1ZW5jZVxuICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSAqdGhpcyBzZWN0aW9uIGluIHRoZVxuICAgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuXG4gICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZ1xuICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0b1xuICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdFxuICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW5cbiAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZClcbiAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXNcbiAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLFxuICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG9cbiAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWNcbiAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlXG4gICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3NcbiAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9XG4gICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpblxuICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9yc1xuICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZVxuICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YVxuICAgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuXG5cbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlIGNvbnRleHQgbWFuYWdlclxuaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWUgY29udGV4dFxuZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZSBub3JtYWxseVxuaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gKlRoZSB3aXRoXG5zdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgbWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgIndpdGgiXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgIk5vbmUiLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOiAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuXG5cblNwZWNpYWwgbWV0aG9kIGxvb2t1cFxuPT09PT09PT09PT09PT09PT09PT09XG5cbkZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzIGFyZSBvbmx5XG5ndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0XCdzIHR5cGUsIG5vdCBpblxudGhlIG9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgVGhhdCBiZWhhdmlvdXIgaXMgdGhlIHJlYXNvbiB3aHlcbnRoZSBmb2xsb3dpbmcgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXyA9IGxhbWJkYTogNVxuICAgPj4+IGxlbihjKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBvYmplY3Qgb2YgdHlwZSBcJ0NcJyBoYXMgbm8gbGVuKClcblxuVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mIHNwZWNpYWxcbm1ldGhvZHMgc3VjaCBhcyAiX19oYXNoX18oKSIgYW5kICJfX3JlcHJfXygpIiB0aGF0IGFyZSBpbXBsZW1lbnRlZCBieVxuYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2YgdGhlc2Vcbm1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWwgd2hlblxuaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyBtZXRhY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uIHByb3ZpZGVzXG5zaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlIGludGVycHJldGVyLCBhdFxudGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCBtZXRob2RzICh0aGVcbnNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gb3JkZXIgdG8gYmVcbmNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG4nLAotICdzdHJpbmctbWV0aG9kcyc6IHUnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSAic3RyLmZvcm1hdCgpIixcbipGb3JtYXQgU3RyaW5nIFN5bnRheCogYW5kICpDdXN0b20gU3RyaW5nIEZvcm1hdHRpbmcqKSBhbmQgdGhlIG90aGVyXG5iYXNlZCBvbiBDICJwcmludGYiIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2ZcbnR5cGVzIGFuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3JcbnRoZSBjYXNlcyBpdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG5cblRoZSAqVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzKiBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGNvdmVyc1xuYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgdXRpbGl0aWVzXG4oaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSAicmUiIG1vZHVsZSkuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jYXNlZm9sZCgpXG5cbiAgIFJldHVybiBhIGNhc2Vmb2xkZWQgY29weSBvZiB0aGUgc3RyaW5nLiBDYXNlZm9sZGVkIHN0cmluZ3MgbWF5IGJlXG4gICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cblxuICAgQ2FzZWZvbGRpbmcgaXMgc2ltaWxhciB0byBsb3dlcmNhc2luZyBidXQgbW9yZSBhZ2dyZXNzaXZlIGJlY2F1c2VcbiAgIGl0IGlzIGludGVuZGVkIHRvIHJlbW92ZSBhbGwgY2FzZSBkaXN0aW5jdGlvbnMgaW4gYSBzdHJpbmcuIEZvclxuICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyICJcJ1x4ZGZcJyIgaXMgZXF1aXZhbGVudCB0byAiInNzIiIuXG4gICBTaW5jZSBpdCBpcyBhbHJlYWR5IGxvd2VyY2FzZSwgImxvd2VyKCkiIHdvdWxkIGRvIG5vdGhpbmcgdG8gIlwnXHhkZlwnIjtcbiAgICJjYXNlZm9sZCgpIiBjb252ZXJ0cyBpdCB0byAiInNzIiIuXG5cbiAgIFRoZSBjYXNlZm9sZGluZyBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSSBzcGFjZSkuIFRoZVxuICAgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAibGVuKHMpIi5cblxuc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKnN1YipcbiAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kXG4gICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cbnN0ci5lbmNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyBvYmplY3QuIERlZmF1bHRcbiAgIGVuY29kaW5nIGlzICJcJ3V0Zi04XCciLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyAiXCdzdHJpY3RcJyIsXG4gICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuIE90aGVyIHBvc3NpYmxlXG4gICB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiwgIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIsXG4gICAiXCdiYWNrc2xhc2hyZXBsYWNlXCciIGFuZCBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHZpYVxuICAgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gKkVycm9yIEhhbmRsZXJzKi4gRm9yIGEgbGlzdFxuICAgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmQgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG5cbnN0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN1ZmZpeGVzXG4gICB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyh0YWJzaXplPTgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSBvbmUgb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZVxuICAgZ2l2ZW4gdGFiIHNpemUuICBUYWIgcG9zaXRpb25zIG9jY3VyIGV2ZXJ5ICp0YWJzaXplKiBjaGFyYWN0ZXJzXG4gICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2IGFuZCBzbyBvbikuXG4gICBUbyBleHBhbmQgdGhlIHN0cmluZywgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHNldCB0byB6ZXJvIGFuZCB0aGVcbiAgIHN0cmluZyBpcyBleGFtaW5lZCBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyLiAgSWYgdGhlIGNoYXJhY3RlciBpcyBhXG4gICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHJlc3VsdFxuICAgdW50aWwgdGhlIGN1cnJlbnQgY29sdW1uIGlzIGVxdWFsIHRvIHRoZSBuZXh0IHRhYiBwb3NpdGlvbi4gKFRoZVxuICAgdGFiIGNoYXJhY3RlciBpdHNlbGYgaXMgbm90IGNvcGllZC4pICBJZiB0aGUgY2hhcmFjdGVyIGlzIGEgbmV3bGluZVxuICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudCBjb2x1bW4gaXNcbiAgIHJlc2V0IHRvIHplcm8uICBBbnkgb3RoZXIgY2hhcmFjdGVyIGlzIGNvcGllZCB1bmNoYW5nZWQgYW5kIHRoZVxuICAgY3VycmVudCBjb2x1bW4gaXMgaW5jcmVtZW50ZWQgYnkgb25lIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZVxuICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cblxuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKClcbiAgIFwnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzRcJ1xuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKDQpXG4gICBcJzAxICAwMTIgMDEyMyAgICAwMTIzNFwnXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCB3aXRoaW4gdGhlIHNsaWNlICJzW3N0YXJ0OmVuZF0iLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCpcbiAgIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uICBSZXR1cm4gIi0xIiBpZlxuICAgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgImZpbmQoKSIgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91IG5lZWQgdG8ga25vd1xuICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciBub3QsXG4gICAgIHVzZSB0aGUgImluIiBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzICJ7fSIuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byAic3RyLmZvcm1hdCgqKm1hcHBpbmcpIiwgZXhjZXB0IHRoYXQgIm1hcHBpbmciIGlzIHVzZWRcbiAgIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgImRpY3QiLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yIGV4YW1wbGVcbiAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlICJmaW5kKCkiLCBidXQgcmFpc2UgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyICJjIlxuICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgIlRydWUiOlxuICAgImMuaXNhbHBoYSgpIiwgImMuaXNkZWNpbWFsKCkiLCAiYy5pc2RpZ2l0KCkiLCBvciAiYy5pc251bWVyaWMoKSIuXG5cbnN0ci5pc2FscGhhKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEFscGhhYmV0aWNcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSB0aGF0IHRoaXMgaXNcbiAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgU3RhbmRhcmQuXG5cbnN0ci5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsIGNoYXJhY3RlcnNcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIERlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzIGNhdGVnb3J5XG4gICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgaW5jbHVkZSBkZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggYXMgdGhlXG4gICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyXG4gICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4gICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cblxuc3RyLmlzaWRlbnRpZmllcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGFjY29yZGluZyB0byB0aGVcbiAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyouXG5cbiAgIFVzZSAia2V5d29yZC5pc2tleXdvcmQoKSIgdG8gdGVzdCBmb3IgcmVzZXJ2ZWQgaWRlbnRpZmllcnMgc3VjaCBhc1xuICAgImRlZiIgYW5kICJjbGFzcyIuXG5cbnN0ci5pc2xvd2VyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIGxvd2VyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzbnVtZXJpYygpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgY2hhcmFjdGVycyxcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIE51bWVyaWNcbiAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OXG4gICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIHRoZVxuICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG5cbnN0ci5pc3ByaW50YWJsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIHByaW50YWJsZSBvciB0aGVcbiAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlXG4gICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGFzXG4gICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICgweDIwKSB3aGljaCBpc1xuICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoaXNcbiAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuICJyZXByKCkiIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gInN5cy5zdGRvdXQiIG9yICJzeXMuc3RkZXJyIi4pXG5cbnN0ci5pc3NwYWNlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmdcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4gICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCBiaWRpcmVjdGlvbmFsXG4gICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG5cbnN0ci5pc3RpdGxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCB0aGVyZSBpcyBhdFxuICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5IG9ubHlcbiAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy5cbiAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmpvaW4oaXRlcmFibGUpXG5cbiAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncyBpbiB0aGVcbiAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgIlR5cGVFcnJvciIgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbiAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgICAgXCdzcGFjaW91cyAgIFwnXG4gICAgICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICAic3RyLnRyYW5zbGF0ZSgpIi5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvciBzcGxpdHRpbmdcbiAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggaXNcbiAgIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICAgICBcJyAgIHNwYWNpb3VzXCdcbiAgICAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICAgICBcJ21pc3Npc3NcJ1xuXG5zdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgIm1heHNwbGl0KzEiXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgdGhlbiB0aGVyZSBpc1xuICAgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICAiXCcxLCwyXCcuc3BsaXQoXCcsXCcpIiByZXR1cm5zICJbXCcxXCcsIFwnXCcsIFwnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4gICBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgICJcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpIiByZXR1cm5zICJbXCcxXCcsIFwnMlwnLCBcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4gICBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyAiW1wnXCddIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcsIG1heHNwbGl0PTEpXG4gICAgICBbXCcxXCcsIFwnMiwzXCddXG4gICAgICA+Pj4gXCcxLDIsLDMsXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJ1wnLCBcJzNcJywgXCdcJ11cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyAiTm9uZSIsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhICJOb25lIiBzZXBhcmF0b3IgcmV0dXJucyAiW10iLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnMSAyIDNcJy5zcGxpdCgpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEgMiAzXCcuc3BsaXQobWF4c3BsaXQ9MSlcbiAgICAgIFtcJzFcJywgXCcyIDNcJ11cbiAgICAgID4+PiBcJyAgIDEgICAyICAgMyAgIFwnLnNwbGl0KClcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG4gICBUaGlzIG1ldGhvZCBzcGxpdHMgb24gdGhlIGZvbGxvd2luZyBsaW5lIGJvdW5kYXJpZXMuICBJblxuICAgcGFydGljdWxhciwgdGhlIGJvdW5kYXJpZXMgYXJlIGEgc3VwZXJzZXQgb2YgKnVuaXZlcnNhbCBuZXdsaW5lcyouXG5cbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFJlcHJlc2VudGF0aW9uICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlxcbiIgICAgICAgICAgICAgICAgICAgIHwgTGluZSBGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcciIgICAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcclxcbiIgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiArIExpbmUgRmVlZCAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHYiIG9yICJcXHgwYiIgICAgICAgICAgfCBMaW5lIFRhYnVsYXRpb24gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFxmIiBvciAiXFx4MGMiICAgICAgICAgIHwgRm9ybSBGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFjIiAgICAgICAgICAgICAgICAgIHwgRmlsZSBTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFkIiAgICAgICAgICAgICAgICAgIHwgR3JvdXAgU2VwYXJhdG9yICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFlIiAgICAgICAgICAgICAgICAgIHwgUmVjb3JkIFNlcGFyYXRvciAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDg1IiAgICAgICAgICAgICAgICAgIHwgTmV4dCBMaW5lIChDMSBDb250cm9sIENvZGUpICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdTIwMjgiICAgICAgICAgICAgICAgIHwgTGluZSBTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdTIwMjkiICAgICAgICAgICAgICAgIHwgUGFyYWdyYXBoIFNlcGFyYXRvciAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIlxcdiIgYW5kICJcXGYiIGFkZGVkIHRvIGxpc3Qgb2YgbGluZVxuICAgYm91bmRhcmllcy5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcygpXG4gICAgICBbXCdhYiBjXCcsIFwnXCcsIFwnZGUgZmdcJywgXCdrbFwnXVxuICAgICAgPj4+IFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXG4gICAgICBbXCdhYiBjXFxuXCcsIFwnXFxuXCcsIFwnZGUgZmdcXHJcJywgXCdrbFxcclxcblwnXVxuXG4gICBVbmxpa2UgInNwbGl0KCkiIHdoZW4gYSBkZWxpbWl0ZXIgc3RyaW5nICpzZXAqIGlzIGdpdmVuLCB0aGlzXG4gICBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciB0aGUgZW1wdHkgc3RyaW5nLCBhbmQgYSB0ZXJtaW5hbFxuICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZTpcblxuICAgICAgPj4+ICIiLnNwbGl0bGluZXMoKVxuICAgICAgW11cbiAgICAgID4+PiAiT25lIGxpbmVcXG4iLnNwbGl0bGluZXMoKVxuICAgICAgW1wnT25lIGxpbmVcJ11cblxuICAgRm9yIGNvbXBhcmlzb24sICJzcGxpdChcJ1xcblwnKSIgZ2l2ZXM6XG5cbiAgICAgID4+PiBcJ1wnLnNwbGl0KFwnXFxuXCcpXG4gICAgICBbXCdcJ11cbiAgICAgID4+PiBcJ1R3byBsaW5lc1xcblwnLnNwbGl0KFwnXFxuXCcpXG4gICAgICBbXCdUd28gbGluZXNcJywgXCdcJ11cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuICJUcnVlIiBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2UgcmV0dXJuXG4gICAiRmFsc2UiLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2sgZm9yLlxuICAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cbiAgIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzXG4gICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmVcbiAgIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgICAgIFwnc3BhY2lvdXNcJ1xuICAgICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZVwnXG5cbiAgIFRoZSBvdXRlcm1vc3QgbGVhZGluZyBhbmQgdHJhaWxpbmcgKmNoYXJzKiBhcmd1bWVudCB2YWx1ZXMgYXJlXG4gICBzdHJpcHBlZCBmcm9tIHRoZSBzdHJpbmcuIENoYXJhY3RlcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgbGVhZGluZ1xuICAgZW5kIHVudGlsIHJlYWNoaW5nIGEgc3RyaW5nIGNoYXJhY3RlciB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyBpbiAqY2hhcnMqLiBBIHNpbWlsYXIgYWN0aW9uIHRha2VzIHBsYWNlIG9uIHRoZVxuICAgdHJhaWxpbmcgZW5kLiBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nID0gXCcjLi4uLi4uLiBTZWN0aW9uIDMuMi4xIElzc3VlICMzMiAuLi4uLi4uXCdcbiAgICAgID4+PiBjb21tZW50X3N0cmluZy5zdHJpcChcJy4jISBcJylcbiAgICAgIFwnU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzJcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgICJzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzIi5cblxuc3RyLnRpdGxlKClcblxuICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgc3RhcnQgd2l0aCBhblxuICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBsb3dlcmNhc2UuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCdIZWxsbyB3b3JsZFwnLnRpdGxlKClcbiAgICAgIFwnSGVsbG8gV29ybGRcJ1xuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbiAgICAgIC4uLlxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZSh0YWJsZSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGluIHdoaWNoIGVhY2ggY2hhcmFjdGVyIGhhcyBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuICBUaGUgdGFibGUgbXVzdCBiZSBhbiBvYmplY3RcbiAgIHRoYXQgaW1wbGVtZW50cyBpbmRleGluZyB2aWEgIl9fZ2V0aXRlbV9fKCkiLCB0eXBpY2FsbHkgYSAqbWFwcGluZypcbiAgIG9yICpzZXF1ZW5jZSouICBXaGVuIGluZGV4ZWQgYnkgYSBVbmljb2RlIG9yZGluYWwgKGFuIGludGVnZXIpLCB0aGVcbiAgIHRhYmxlIG9iamVjdCBjYW4gZG8gYW55IG9mIHRoZSBmb2xsb3dpbmc6IHJldHVybiBhIFVuaWNvZGUgb3JkaW5hbFxuICAgb3IgYSBzdHJpbmcsIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIG9uZSBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnM7XG4gICByZXR1cm4gIk5vbmUiLCB0byBkZWxldGUgdGhlIGNoYXJhY3RlciBmcm9tIHRoZSByZXR1cm4gc3RyaW5nOyBvclxuICAgcmFpc2UgYSAiTG9va3VwRXJyb3IiIGV4Y2VwdGlvbiwgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgdG8gaXRzZWxmLlxuXG4gICBZb3UgY2FuIHVzZSAic3RyLm1ha2V0cmFucygpIiB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgU2VlIGFsc28gdGhlICJjb2RlY3MiIG1vZHVsZSBmb3IgYSBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIHRvIGN1c3RvbVxuICAgY2hhcmFjdGVyIG1hcHBpbmdzLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0ICJzdHIudXBwZXIoKS5pc3VwcGVyKCkiIG1pZ2h0IGJlXG4gICAiRmFsc2UiIGlmICJzIiBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCBBU0NJSSAiXCcwXCciIGRpZ2l0cyB0b1xuICAgbWFrZSBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gQSBsZWFkaW5nIHNpZ24gcHJlZml4XG4gICAoIlwnK1wnIi8iXCctXCciKSBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAqYWZ0ZXIqIHRoZSBzaWduXG4gICBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gYmVmb3JlLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmXG4gICAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiAiNDIiLnpmaWxsKDUpXG4gICAgICBcJzAwMDQyXCdcbiAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuICAgICAgXCctMDA0MlwnXG4nLAotICdzdHJpbmdzJzogdSdcblN0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgInUiIHwgIlIiIHwgIlUiXG4gICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG5cbiAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAicmIiIHwgInJCIiB8ICJSYiIgfCAiUkIiXG4gICBzaG9ydGJ5dGVzICAgICA6Oj0gIlwnIiBzaG9ydGJ5dGVzaXRlbSogIlwnIiB8IFwnIlwnIHNob3J0Ynl0ZXNpdGVtKiBcJyJcJ1xuICAgbG9uZ2J5dGVzICAgICAgOjo9ICJcJ1wnXCciIGxvbmdieXRlc2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyBsb25nYnl0ZXNpdGVtKiBcJyIiIlwnXG4gICBzaG9ydGJ5dGVzaXRlbSA6Oj0gc2hvcnRieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgbG9uZ2J5dGVzaXRlbSAgOjo9IGxvbmdieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgc2hvcnRieXRlc2NoYXIgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgb3IgdGhlIHF1b3RlPlxuICAgbG9uZ2J5dGVzY2hhciAgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgYnl0ZXNlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBBU0NJSSBjaGFyYWN0ZXI+XG5cbk9uZSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gbm90IGluZGljYXRlZCBieSB0aGVzZSBwcm9kdWN0aW9ucyBpcyB0aGF0XG53aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIG9yICJieXRlc3ByZWZpeCJcbmFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IGlzIGRlZmluZWQgYnlcbnRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmcgZGVjbGFyYXRpb24gaXNcbmdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nIGRlY2xhcmF0aW9ucyouXG5cbkluIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nXG5zaW5nbGUgcXVvdGVzICgiXCciKSBvciBkb3VibGUgcXVvdGVzICgiIiIpLiAgVGhleSBjYW4gYWxzbyBiZSBlbmNsb3NlZFxuaW4gbWF0Y2hpbmcgZ3JvdXBzIG9mIHRocmVlIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzICh0aGVzZSBhcmVcbmdlbmVyYWxseSByZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgYmFja3NsYXNoXG4oIlxcIikgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSBhXG5zcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG5jaGFyYWN0ZXIuXG5cbkJ5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAiXCdiXCciIG9yICJcJ0JcJyI7IHRoZXkgcHJvZHVjZVxuYW4gaW5zdGFuY2Ugb2YgdGhlICJieXRlcyIgdHlwZSBpbnN0ZWFkIG9mIHRoZSAic3RyIiB0eXBlLiAgVGhleSBtYXlcbm9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzOyBieXRlcyB3aXRoIGEgbnVtZXJpYyB2YWx1ZSBvZiAxMjggb3JcbmdyZWF0ZXIgbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLlxuXG5BcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCBzdHJpbmcgbGl0ZXJhbHMgd2l0aCBhXG4idSIgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggY29kZWJhc2VzLlxuXG5Cb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhXG5sZXR0ZXIgIlwnclwnIiBvciAiXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZCB0cmVhdFxuYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZyBsaXRlcmFscyxcbiJcJ1xcVVwnIiBhbmQgIlwnXFx1XCciIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkIHNwZWNpYWxseS5cbkdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmUgZGlmZmVyZW50bHkgdGhhblxuUHl0aG9uIDMueFwncyB0aGUgIlwndXJcJyIgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJcJ3JiXCciIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzIGJlZW5cbmFkZGVkIGFzIGEgc3lub255bSBvZiAiXCdiclwnIi5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuKCJ1XCd2YWx1ZVwnIikgd2FzIHJlaW50cm9kdWNlZCB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgZHVhbFxuUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4gU2VlICoqUEVQIDQxNCoqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5JbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZFxuKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG50ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxubGl0ZXJhbCwgaS5lLiBlaXRoZXIgIlwnIiBvciAiIiIuKVxuXG5Vbmxlc3MgYW4gIlwnclwnIiBvciAiXCdSXCciIHByZWZpeCBpcyBwcmVzZW50LCBlc2NhcGUgc2VxdWVuY2VzIGluIHN0cmluZ1xuYW5kIGJ5dGVzIGxpdGVyYWxzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byB0aG9zZVxudXNlZCBieSBTdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgIlxcbmV3bGluZSIgICAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFxcIiAgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKCJcXCIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFwnIiAgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKCJcJyIpICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXCIiICAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoIiIiKSAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxhIiAgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcYiIgICAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGYiICAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxuIiAgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcciIgICAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHQiICAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx2IiAgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcb29vIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgKDEsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHhoaCIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICgyLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Fc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58ICJcXE57bmFtZX0iICAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx1eHh4eCIgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcVXh4eHh4eHh4IiAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSAgIHwgKDYpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuXG4yLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjMuIEluIGEgYnl0ZXMgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlIHRoZVxuICAgYnl0ZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlc1xuICAgZGVub3RlIGEgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG5cbjQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbiAgIGFkZGVkLlxuXG41LiBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjYuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheS4gIEV4YWN0bHkgZWlnaHRcbiAgIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgcmVzdWx0Ki4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IGxpdGVyYWwsIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCBidXQgdGhlXG5iYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSB2YWxpZFxuc3RyaW5nIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgZG91YmxlXG5xdW90ZTsgInIiXFwiIiBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhdyBzdHJpbmcgY2Fubm90XG5lbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyBsaXRlcmFsXG5jYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2ggd291bGQgZXNjYXBlXG50aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZSBiYWNrc2xhc2hcbmZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVycyBhcyBwYXJ0XG5vZiB0aGUgbGl0ZXJhbCwgKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicsCi0gJ3N1YnNjcmlwdGlvbnMnOiB1J1xuU3Vic2NyaXB0aW9uc1xuKioqKioqKioqKioqKlxuXG5BIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSBvciBsaXN0KVxub3IgbWFwcGluZyAoZGljdGlvbmFyeSkgb2JqZWN0OlxuXG4gICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBzdWJzY3JpcHRpb25cbihsaXN0cyBvciBkaWN0aW9uYXJpZXMgZm9yIGV4YW1wbGUpLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIHN1cHBvcnRcbnN1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbkZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBzdXBwb3J0XG5zdWJzY3JpcHRpb246XG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGFuXG5vYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgdGhlXG5zdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0XG5rZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgZXhhY3RseSBvbmVcbml0ZW0uKVxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCBldmFsdWF0ZSB0b1xuYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uKS5cblxuVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlIGluZGljZXMgaW5cbnNlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgIl9fZ2V0aXRlbV9fKCkiXG5tZXRob2QgdGhhdCBpbnRlcnByZXRzIG5lZ2F0aXZlIGluZGljZXMgYnkgYWRkaW5nIHRoZSBsZW5ndGggb2YgdGhlXG5zZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgInhbLTFdIiBzZWxlY3RzIHRoZSBsYXN0IGl0ZW0gb2YgIngiKS5cblRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuIHRoZSBudW1iZXJcbm9mIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSwgYW5kIHRoZSBzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgaXRlbSB3aG9zZVxuaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnQgZm9yXG5uZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0XCdzICJfX2dldGl0ZW1fXygpIlxubWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkXG50aGF0IHN1cHBvcnQuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKLSAndHJ1dGgnOiB1J1xuVHJ1dGggVmFsdWUgVGVzdGluZ1xuKioqKioqKioqKioqKioqKioqKlxuXG5Bbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbiJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qICJOb25lIlxuXG4qICJGYWxzZSJcblxuKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwLjAiLCAiMGoiLlxuXG4qIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsICJcJ1wnIiwgIigpIiwgIltdIi5cblxuKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG5cbiogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4gICJfX2Jvb2xfXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbiAgaW50ZWdlciB6ZXJvIG9yICJib29sIiB2YWx1ZSAiRmFsc2UiLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgdW5sZXNzXG5vdGhlcndpc2Ugc3RhdGVkLiAoSW1wb3J0YW50IGV4Y2VwdGlvbjogdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyAib3IiXG5hbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKLSAndHJ5JzogdSdcblRoZSAidHJ5IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cbicsCi0gJ3R5cGVzJzogdSdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuIEl0XG4gICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsIGUuZy4sXG4gICBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuICAgc2hvdWxkIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvclxuICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuICAgcmVmbGVjdGVkIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZVxuICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiAgIFNlZSAqSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMqIGZvciBtb3JlIGRldGFpbHMuXG5cbkVsbGlwc2lzXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuIm51bWJlcnMuTnVtYmVyIlxuICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyBieVxuICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgTnVtZXJpY1xuICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbiAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbiAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgcmVwcmVzZW50YXRpb25cbiAgIGluIGNvbXB1dGVycy5cblxuICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kXG4gICBjb21wbGV4IG51bWJlcnM6XG5cbiAgICJudW1iZXJzLkludGVncmFsIlxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoImludCIpXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoImJvb2wiKVxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4gICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgdGhlXG4gICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlXG4gICAgICAgICBpbnRlZ2VyIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kXG4gICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG5cbiAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCBzZXRcbiAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogaXNcbiAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqIHdoZXJlXG4gICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgQSBzdHJpbmcgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVW5pY29kZSBjb2RlXG4gICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSBVKzEwRkZGRiJcbiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2VzblwndCBoYXZlIGEgImNoYXIiXG4gICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgcmVwcmVzZW50ZWRcbiAgICAgICAgIGFzIGEgc3RyaW5nIG9iamVjdCB3aXRoIGxlbmd0aCAiMSIuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4gICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiI7ICJjaHIoKSIgY29udmVydHMgYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyBsZW5ndGhcbiAgICAgICAgICIxIiBzdHJpbmcgb2JqZWN0LiAic3RyLmVuY29kZSgpIiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFcbiAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuICAgICAgICAgImJ5dGVzLmRlY29kZSgpIiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS5cblxuICAgICAgVHVwbGVzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSB0dXBsZSBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiBUdXBsZXMgb2ZcbiAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4gICAgICAgICBleHByZXNzaW9ucy4gIEEgdHVwbGUgb2Ygb25lIGl0ZW0gKGEgXCdzaW5nbGV0b25cJykgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYWZmaXhpbmcgYSBjb21tYSB0byBhbiBleHByZXNzaW9uIChhbiBleHByZXNzaW9uIGJ5XG4gICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbiAgICAgICAgIHVzYWJsZSBmb3IgZ3JvdXBpbmcgb2YgZXhwcmVzc2lvbnMpLiAgQW4gZW1wdHkgdHVwbGUgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cblxuICAgICAgQnl0ZXNcbiAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgOC1iaXRcbiAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbiAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICJkZWNvZGUoKSJcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gImJ5dGVhcnJheSgpIiBjb25zdHJ1Y3Rvci4gIEFzaWRlIGZyb20gYmVpbmdcbiAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlIHByb3ZpZGVcbiAgICAgICAgIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSBhcyBpbW11dGFibGUgYnl0ZXNcbiAgICAgICAgIG9iamVjdHMuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlICJhcnJheSIgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mIGFcbiAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgZmFzdFxuICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4gICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuXG4gICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4gICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3JcbiAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgc2V2ZXJhbFxuICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzIGltbXV0YWJsZVxuICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgYW5vdGhlclxuICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAiayJcbiAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyB0aGVcbiAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAiMS4wIilcbiAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbiAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG5cbiAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuICAgICAgYWRkaXRpb25hbCBleGFtcGxlcyBvZiBtYXBwaW5nIHR5cGVzLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiXG4gICAgICBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgIk5vbmUiIGlmICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX3F1YWxuYW1lX18iICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19tb2R1bGVfXyIgICAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2RpY3RfXyIgICAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2Nsb3N1cmVfXyIgICAgICAgICAgICAgfCAiTm9uZSIgb3IgYSB0dXBsZSBvZiBjZWxscyB0aGF0IHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fYW5ub3RhdGlvbnNfXyIgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCAiXCdyZXR1cm5cJyIgZm9yIHRoZSByZXR1cm4gICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19rd2RlZmF1bHRzX18iICAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIG9iamVjdCwgIl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAiX19uYW1lX18iXG4gICAgICBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgIl9fZnVuY19fLl9fbmFtZV9fIik7ICJfX21vZHVsZV9fIlxuICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAiTm9uZSJcbiAgICAgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCBvYmplY3RcbiAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpc1xuICAgICAgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciBpc1xuICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgIl9fZnVuY19fIlxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGVcbiAgICAgIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXMgdGhlXG4gICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKCJfX3NlbGZfXyIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLCB3aGVuXG4gICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gImYoKSIsXG4gICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICBjYWxsaW5nICJDLmYoeCwgMSkiLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgYWN0dWFsbHlcbiAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgIkMuZigxKSJcbiAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlICJ5aWVsZCIgc3RhdGVtZW50IChzZWVcbiAgICAgIHNlY3Rpb24gKlRoZSB5aWVsZCBzdGF0ZW1lbnQqKSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yIGZ1bmN0aW9uKi5cbiAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yIG9iamVjdFxuICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICBjYWxsaW5nXG4gICAgICB0aGUgaXRlcmF0b3JcJ3MgIml0ZXJhdG9yLl9fbmV4dF9fKCkiIG1ldGhvZCB3aWxsIGNhdXNlIHRoZVxuICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAieWllbGQiXG4gICAgICBzdGF0ZW1lbnQuICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCBvclxuICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIENvcm91dGluZSBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIGlzIGRlZmluZWQgdXNpbmcgImFzeW5jIGRlZiIgaXNcbiAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCxcbiAgICAgIHJldHVybnMgYSAqY29yb3V0aW5lKiBvYmplY3QuICBJdCBtYXkgY29udGFpbiAiYXdhaXQiXG4gICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiIHN0YXRlbWVudHMuXG4gICAgICBTZWUgYWxzbyB0aGUgKkNvcm91dGluZSBPYmplY3RzKiBzZWN0aW9uLlxuXG4gICBCdWlsdC1pbiBmdW5jdGlvbnNcbiAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSAibGVuKCkiIGFuZCAibWF0aC5zaW4oKSJcbiAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlIG9mXG4gICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsIHJlYWQtXG4gICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGU7ICJfX25hbWVfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzXG4gICAgICBuYW1lOyAiX19zZWxmX18iIGlzIHNldCB0byAiTm9uZSIgKGJ1dCBzZWUgdGhlIG5leHQgaXRlbSk7XG4gICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWRcbiAgICAgIGluIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvIHRoZVxuICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cblxuICAgQ2xhc3Nlc1xuICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXNcbiAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSBmb3JcbiAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvICJfX25ld19fKCkiIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG5cbiAgIENsYXNzIEluc3RhbmNlc1xuICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5IGRlZmluaW5nXG4gICAgICBhICJfX2NhbGxfXygpIiBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSAiaW1wb3J0IlxuICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4gICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSBtb2R1bGVcbiAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpc1xuICAgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgIl9fZ2xvYmFsc19fIiBhdHRyaWJ1dGUgb2ZcbiAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4gICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyBlcXVpdmFsZW50XG4gICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlXG4gICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lO1xuICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuICAgdW5hdmFpbGFibGU7ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlXG4gICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbiAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIENcbiAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuICAgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXNcbiAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ3VzdG9tIGNsYXNzZXNcbiAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZVxuICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkXG4gICBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZFxuICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbiAgICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2ggYWxsb3dcbiAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgaXNcbiAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cblxuICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgeWllbGQgYVxuICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCBhXG4gICBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWQgYnlcbiAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycypcbiAgIGZvciBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5XG4gICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iIGlzXG4gICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyAiX19kaWN0X18iIGlzIHRoZVxuICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgdHVwbGVcbiAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiB0aGVcbiAgIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgIl9fZG9jX18iIGlzIHRoZVxuICAgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWYgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbiAgICJDbGFzc2VzIi4gIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqIGZvciBhbm90aGVyIHdheVxuICAgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3NcJ3MgIl9fZGljdF9fIi5cbiAgIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3RcJ3MgY2xhc3MgaGFzIGFcbiAgICJfX2dldGF0dHJfXygpIiBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlIGxvb2t1cC5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZVwnc1xuICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzc1wncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4gICAiX19zZXRhdHRyX18oKSIgb3IgIl9fZGVsYXR0cl9fKCkiIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWQgaW5zdGVhZFxuICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuICAgIl9fY2xhc3NfXyIgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyAib3MucG9wZW4oKSIsICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiIG1ldGhvZFxuICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG5cbkludGVybmFsIHR5cGVzXG4gICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvIHRoZVxuICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbiAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cblxuICAgQ29kZSBvYmplY3RzXG4gICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlLFxuICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4gICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuIGV4cGxpY2l0XG4gICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uXCdzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgd2FzXG4gICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCBub3RcbiAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCBhdFxuICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgaW1tdXRhYmxlXG4gICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byBtdXRhYmxlXG4gICAgICBvYmplY3RzLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiY29fbmFtZSIgZ2l2ZXMgdGhlIGZ1bmN0aW9uIG5hbWU7XG4gICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciBvZlxuICAgICAgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmcgYXJndW1lbnRzKTtcbiAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiIGlzIGFcbiAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWUgdmFyaWFibGVzOyAiY29fY29kZSIgaXMgYSBzdHJpbmdcbiAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAiY29fY29uc3RzIlxuICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzIGNvbXBpbGVkO1xuICAgICAgImNvX2ZpcnN0bGluZW5vIiBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4gICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciBlbmNvZGluZyBhXG4gICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yICJjb19mbGFncyI6IGJpdCAiMHgwNCJcbiAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgYW5cbiAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIioqa2V5d29yZHMiIHN5bnRheCB0byBhY2NlcHQgYXJiaXRyYXJ5XG4gICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbiAgICAgIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiIpXG4gICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgb2JqZWN0XG4gICAgICB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXQgIjB4MjAwMCIgaXNcbiAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uIGVuYWJsZWQ7XG4gICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbiAgICAgIFB5dGhvbi5cblxuICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuXG4gICBGcmFtZSBvYmplY3RzXG4gICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbiAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgc3RhY2tcbiAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4gICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluIHRoaXNcbiAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgImZfYnVpbHRpbnMiIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzOyAiZl9sYXN0aSJcbiAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4gICAgICBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbiAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzIGlzXG4gICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2xpbmVubyIgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgb2ZcbiAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24ganVtcHNcbiAgICAgIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQSBkZWJ1Z2dlclxuICAgICAgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkgYnkgd3JpdGluZ1xuICAgICAgdG8gZl9saW5lbm8uXG5cbiAgICAgIEZyYW1lIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBmcmFtZS5jbGVhcigpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCBieVxuICAgICAgICAgdGhlIGZyYW1lLiAgQWxzbywgaWYgdGhlIGZyYW1lIGJlbG9uZ2VkIHRvIGEgZ2VuZXJhdG9yLCB0aGVcbiAgICAgICAgIGdlbmVyYXRvciBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXNcbiAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4gICAgICAgICBleGNlcHRpb24gYW5kIHN0b3JpbmcgaXRzIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS5cblxuICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLlxuXG4gICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyBub1xuICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSBmb3JtYXR0ZWQpXG4gICAgICB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXMgaW50ZXJhY3RpdmUsXG4gICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gdGhlXG4gICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksIG9yXG4gICAgICAiTm9uZSIgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgInRiX2ZyYW1lIiBwb2ludHMgdG8gdGhlXG4gICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSBsaW5lXG4gICAgICBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZDsgInRiX2xhc3RpIiBpbmRpY2F0ZXMgdGhlXG4gICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uIGluXG4gICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4gICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIG5vXG4gICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAiX19nZXRpdGVtX18oKSJcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluICJzbGljZSgpIlxuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJzdGFydCIgaXMgdGhlIGxvd2VyIGJvdW5kOyAic3RvcCJcbiAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICJOb25lIiBpZlxuICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICAic3RhdGljbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuXG4gICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgd3JhcHBlclxuICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCBvYmplY3RcbiAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciBvZlxuICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4gICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZFxuICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCi0gJ3R5cGVzZnVuY3Rpb25zJzogdSdcbkZ1bmN0aW9uc1xuKioqKioqKioqXG5cbkZ1bmN0aW9uIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBUaGUgb25seVxub3BlcmF0aW9uIG9uIGEgZnVuY3Rpb24gb2JqZWN0IGlzIHRvIGNhbGwgaXQ6ICJmdW5jKGFyZ3VtZW50LWxpc3QpIi5cblxuVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiBidWlsdC1pbiBmdW5jdGlvbnNcbmFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lIG9wZXJhdGlvbiAodG8gY2FsbFxudGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlIHRoZVxuZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cblxuU2VlICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICd0eXBlc21hcHBpbmcnOiB1J1xuTWFwcGluZyBUeXBlcyAtLS0gImRpY3QiXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuXG5NYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkXG5tYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdC1cbmluICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuKVxuXG5BIGRpY3Rpb25hcnlcJ3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyB0aGF0IGFyZVxubm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCBkaWN0aW9uYXJpZXMgb3Jcbm90aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXlcbnRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbFxuKHN1Y2ggYXMgIjEiIGFuZCAiMS4wIikgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleFxudGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzIHN0b3JlXG5mbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvIHVzZVxudGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICJrZXk6XG52YWx1ZSIgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6ICJ7XCdqYWNrXCc6IDQwOTgsIFwnc2pvZXJkXCc6XG40MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgImRpY3QiXG5jb25zdHJ1Y3Rvci5cblxuY2xhc3MgY2xhc3MgZGljdCgqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcblxuICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCBwb3NpdGlvbmFsXG4gICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuXG5cbiAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgY3JlYXRlZC5cbiAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nIG9iamVjdCwgYVxuICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzIHRoZSBtYXBwaW5nXG4gICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gKml0ZXJhYmxlKlxuICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiBpdGVyYWJsZSB3aXRoXG4gICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gYmVjb21lcyBhIGtleVxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSBmb3IgdGhhdCBrZXlcbiAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlaXJcbiAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlIHZhbHVlIGZyb21cbiAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC5cblxuICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgZGljdGlvbmFyeSBlcXVhbFxuICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcblxuICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbiAgICAgID4+PiBiID0ge1wnb25lXCc6IDEsIFwndHdvXCc6IDIsIFwndGhyZWVcJzogM31cbiAgICAgID4+PiBjID0gZGljdCh6aXAoW1wnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJ10sIFsxLCAyLCAzXSkpXG4gICAgICA+Pj4gZCA9IGRpY3QoWyhcJ3R3b1wnLCAyKSwgKFwnb25lXCcsIDEpLCAoXCd0aHJlZVwnLCAzKV0pXG4gICAgICA+Pj4gZSA9IGRpY3Qoe1wndGhyZWVcJzogMywgXCdvbmVcJzogMSwgXCd0d29cJzogMn0pXG4gICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4gICAgICBUcnVlXG5cbiAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSBvbmx5IHdvcmtzIGZvclxuICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSB2YWxpZCBrZXlzXG4gICBjYW4gYmUgdXNlZC5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCAiX19taXNzaW5nX18oKSIgYW5kICprZXkqXG4gICAgICBpcyBub3QgcHJlc2VudCwgdGhlICJkW2tleV0iIG9wZXJhdGlvbiBjYWxscyB0aGF0IG1ldGhvZCB3aXRoXG4gICAgICB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlICJkW2tleV0iIG9wZXJhdGlvbiB0aGVuIHJldHVybnNcbiAgICAgIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4gICAgICAiX19taXNzaW5nX18oa2V5KSIgY2FsbC4gTm8gb3RoZXIgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZVxuICAgICAgIl9fbWlzc2luZ19fKCkiLiBJZiAiX19taXNzaW5nX18oKSIgaXMgbm90IGRlZmluZWQsICJLZXlFcnJvciJcbiAgICAgIGlzIHJhaXNlZC4gIl9fbWlzc2luZ19fKCkiIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhblxuICAgICAgaW5zdGFuY2UgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFRoZSBleGFtcGxlIGFib3ZlIHNob3dzIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgICAiY29sbGVjdGlvbnMuQ291bnRlciIuICBBIGRpZmZlcmVudCAiX19taXNzaW5nX18iIG1ldGhvZCBpcyB1c2VkXG4gICAgICBieSAiY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QiLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICprZXkqIGlzIG5vdFxuICAgICAgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG5cbiAgIGtleSBub3QgaW4gZFxuXG4gICAgICBFcXVpdmFsZW50IHRvICJub3Qga2V5IGluIGQiLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgIml0ZXIoZC5rZXlzKCkpIi5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgZGljdGlvbmFyeS5cbiAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvICJOb25lIiwgc29cbiAgICAgIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgaXRlbXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksIHZhbHVlKSJcbiAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgIktleUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgIihrZXksIHZhbHVlKSIgcGFpciBmcm9tIHRoZVxuICAgICAgZGljdGlvbmFyeS5cblxuICAgICAgInBvcGl0ZW0oKSIgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgInBvcGl0ZW0oKSIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiBub3QsIGluc2VydFxuICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICpkZWZhdWx0KlxuICAgICAgZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuICJOb25lIi5cblxuICAgICAgInVwZGF0ZSgpIiBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yIGFuXG4gICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciBpdGVyYWJsZXMgb2ZcbiAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogImQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKSIuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIERpY3Rpb25hcmllcyBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSAiKGtleSxcbiAgIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIChcJzxcJywgXCc8PVwnLCBcJz49XCcsIFwnPlwnKSByYWlzZVxuICAgIlR5cGVFcnJvciIuXG5cblNlZSBhbHNvOiAidHlwZXMuTWFwcGluZ1Byb3h5VHlwZSIgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgcmVhZC1vbmx5XG4gIHZpZXcgb2YgYSAiZGljdCIuXG5cblxuRGljdGlvbmFyeSB2aWV3IG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvYmplY3RzIHJldHVybmVkIGJ5ICJkaWN0LmtleXMoKSIsICJkaWN0LnZhbHVlcygpIiBhbmRcbiJkaWN0Lml0ZW1zKCkiIGFyZSAqdmlldyBvYmplY3RzKi4gIFRoZXkgcHJvdmlkZSBhIGR5bmFtaWMgdmlldyBvbiB0aGVcbmRpY3Rpb25hcnlcJ3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5IGNoYW5nZXMsXG50aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuXG5EaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyIHJlc3BlY3RpdmUgZGF0YSxcbmFuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG5cbmxlbihkaWN0dmlldylcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cblxuaXRlcihkaWN0dmlldylcblxuICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAocmVwcmVzZW50ZWQgYXNcbiAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiBwYWlycyB1c2luZ1xuICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyIHdheSB0b1xuICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluIGQuaXRlbXMoKV0iLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3Mga2V5cywgdmFsdWVzXG4gICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksIHZhbHVlKSJcbiAgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0ICIoa2V5LCB2YWx1ZSkiIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgImNvbGxlY3Rpb25zLmFiYy5TZXQiIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCAiPT0iLFxuIjwiLCBvciAiXiIpLlxuXG5BbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcblxuICAgPj4+IGRpc2hlcyA9IHtcJ2VnZ3NcJzogMiwgXCdzYXVzYWdlXCc6IDEsIFwnYmFjb25cJzogMSwgXCdzcGFtXCc6IDUwMH1cbiAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuXG4gICA+Pj4gIyBpdGVyYXRpb25cbiAgID4+PiBuID0gMFxuICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuICAgLi4uICAgICBuICs9IHZhbFxuICAgPj4+IHByaW50KG4pXG4gICA1MDRcblxuICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lIG9yZGVyXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2F1c2FnZVwnLCBcJ3NwYW1cJ11cbiAgID4+PiBsaXN0KHZhbHVlcylcbiAgIFsyLCAxLCAxLCA1MDBdXG5cbiAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbiAgID4+PiBkZWwgZGlzaGVzW1wnZWdnc1wnXVxuICAgPj4+IGRlbCBkaXNoZXNbXCdzYXVzYWdlXCddXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnc3BhbVwnLCBcJ2JhY29uXCddXG5cbiAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4gICA+Pj4ga2V5cyAmIHtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhbGFkXCd9XG4gICB7XCdiYWNvblwnfVxuICAgPj4+IGtleXMgXiB7XCdzYXVzYWdlXCcsIFwnanVpY2VcJ31cbiAgIHtcJ2p1aWNlXCcsIFwnc2F1c2FnZVwnLCBcJ2JhY29uXCcsIFwnc3BhbVwnfVxuJywKLSAndHlwZXNtZXRob2RzJzogdSdcbk1ldGhvZHNcbioqKioqKipcblxuTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlIG5vdGF0aW9uLlxuVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICJhcHBlbmQoKSIgb24gbGlzdHMpXG5hbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZCB3aXRoIHRoZVxudHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cbklmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzIG5hbWVzcGFjZSlcbnRocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgbWV0aG9kKiAoYWxzb1xuY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCB0aGUgInNlbGYiXG5hcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d28gc3BlY2lhbCByZWFkLVxub25seSBhdHRyaWJ1dGVzOiAibS5fX3NlbGZfXyIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgbWV0aG9kXG5vcGVyYXRlcywgYW5kICJtLl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nIHRoZSBtZXRob2QuXG5DYWxsaW5nICJtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiIGlzIGNvbXBsZXRlbHkgZXF1aXZhbGVudCB0b1xuY2FsbGluZyAibS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIi5cblxuTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0IGdldHRpbmcgYXJiaXRyYXJ5XG5hdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBvblxudGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0ICgibWV0aC5fX2Z1bmNfXyIpLCBzZXR0aW5nIG1ldGhvZFxuYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvIHNldCBhblxuYXR0cmlidXRlIG9uIGEgbWV0aG9kIHJlc3VsdHMgaW4gYW4gIkF0dHJpYnV0ZUVycm9yIiBiZWluZyByYWlzZWQuICBJblxub3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlXG51bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4gICAuLi4gICAgICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gXCdteSBuYW1lIGlzIG1ldGhvZFwnICAjIGNhblwndCBzZXQgb24gdGhlIG1ldGhvZFxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgQXR0cmlidXRlRXJyb3I6IFwnbWV0aG9kXCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgXCd3aG9hbWlcJ1xuICAgPj4+IGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9IFwnbXkgbmFtZSBpcyBtZXRob2RcJ1xuICAgPj4+IGMubWV0aG9kLndob2FtaVxuICAgXCdteSBuYW1lIGlzIG1ldGhvZFwnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ3R5cGVzbW9kdWxlcyc6IHUnXG5Nb2R1bGVzXG4qKioqKioqXG5cblRoZSBvbmx5IHNwZWNpYWwgb3BlcmF0aW9uIG9uIGEgbW9kdWxlIGlzIGF0dHJpYnV0ZSBhY2Nlc3M6ICJtLm5hbWUiLFxud2hlcmUgKm0qIGlzIGEgbW9kdWxlIGFuZCAqbmFtZSogYWNjZXNzZXMgYSBuYW1lIGRlZmluZWQgaW4gKm0qXCdzXG5zeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlIHRoYXQgdGhlXG4iaW1wb3J0IiBzdGF0ZW1lbnQgaXMgbm90LCBzdHJpY3RseSBzcGVha2luZywgYW4gb3BlcmF0aW9uIG9uIGEgbW9kdWxlXG5vYmplY3Q7ICJpbXBvcnQgZm9vIiBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdCBuYW1lZCAqZm9vKiB0b1xuZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKiBmb3IgYSBtb2R1bGVcbm5hbWVkICpmb28qIHNvbWV3aGVyZS4pXG5cbkEgc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzICJfX2RpY3RfXyIuIFRoaXMgaXMgdGhlXG5kaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZVwncyBzeW1ib2wgdGFibGUuIE1vZGlmeWluZyB0aGlzXG5kaWN0aW9uYXJ5IHdpbGwgYWN0dWFsbHkgY2hhbmdlIHRoZSBtb2R1bGVcJ3Mgc3ltYm9sIHRhYmxlLCBidXQgZGlyZWN0XG5hc3NpZ25tZW50IHRvIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSBjYW4gd3JpdGVcbiJtLl9fZGljdF9fW1wnYVwnXSA9IDEiLCB3aGljaCBkZWZpbmVzICJtLmEiIHRvIGJlICIxIiwgYnV0IHlvdSBjYW5cJ3RcbndyaXRlICJtLl9fZGljdF9fID0ge30iKS4gIE1vZGlmeWluZyAiX19kaWN0X18iIGRpcmVjdGx5IGlzIG5vdFxucmVjb21tZW5kZWQuXG5cbk1vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAiPG1vZHVsZVxuXCdzeXNcJyAoYnVpbHQtaW4pPiIuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlIHdyaXR0ZW4gYXNcbiI8bW9kdWxlIFwnb3NcJyBmcm9tIFwnL3Vzci9sb2NhbC9saWIvcHl0aG9uWC5ZL29zLnB5Y1wnPiIuXG4nLAotICd0eXBlc3NlcSc6IHUnXG5TZXF1ZW5jZSBUeXBlcyAtLS0gImxpc3QiLCAidHVwbGUiLCAicmFuZ2UiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZXJlIGFyZSB0aHJlZSBiYXNpYyBzZXF1ZW5jZSB0eXBlczogbGlzdHMsIHR1cGxlcywgYW5kIHJhbmdlXG5vYmplY3RzLiBBZGRpdGlvbmFsIHNlcXVlbmNlIHR5cGVzIHRhaWxvcmVkIGZvciBwcm9jZXNzaW5nIG9mICpiaW5hcnlcbmRhdGEqIGFuZCAqdGV4dCBzdHJpbmdzKiBhcmUgZGVzY3JpYmVkIGluIGRlZGljYXRlZCBzZWN0aW9ucy5cblxuXG5Db21tb24gU2VxdWVuY2UgT3BlcmF0aW9uc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3Qgc2VxdWVuY2VcbnR5cGVzLCBib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQ1xuaXMgcHJvdmlkZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zXG5vbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG5cblRoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyBwcmlvcml0eS5cbkluIHRoZSB0YWJsZSwgKnMqIGFuZCAqdCogYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlLCAqbiosICppKixcbipqKiBhbmQgKmsqIGFyZSBpbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnlcbnR5cGUgYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cblxuVGhlICJpbiIgYW5kICJub3QgaW4iIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZVxuY29tcGFyaXNvbiBvcGVyYXRpb25zLiBUaGUgIisiIChjb25jYXRlbmF0aW9uKSBhbmQgIioiIChyZXBldGl0aW9uKVxub3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWNcbm9wZXJhdGlvbnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgInggaW4gcyIgICAgICAgICAgICAgICAgICAgfCAiVHJ1ZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiRmFsc2UiICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInggbm90IGluIHMiICAgICAgICAgICAgICAgfCAiRmFsc2UiIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiVHJ1ZSIgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMgKyB0IiAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiB8ICg2KSg3KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzICogbiIgb3IgIm4gKiBzIiAgICAgICAgIHwgZXF1aXZhbGVudCB0byBhZGRpbmcgKnMqIHRvICAgICAgfCAoMikoNykgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdHNlbGYgKm4qIHRpbWVzICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2ldIiAgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAic1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDQpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgImxlbihzKSIgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJtaW4ocykiICAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAibWF4KHMpIiAgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMuaW5kZXgoeFssIGlbLCBqXV0pIiAgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB8ICg4KSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyIGluZGV4ICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicy5jb3VudCh4KSIgICAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuXG5TZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLFxudHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG5jb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbmVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG50eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAqQ29tcGFyaXNvbnMqIGluXG50aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLilcblxuTm90ZXM6XG5cbjEuIFdoaWxlIHRoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yIHNpbXBsZVxuICAgY29udGFpbm1lbnQgdGVzdGluZyBpbiB0aGUgZ2VuZXJhbCBjYXNlLCBzb21lIHNwZWNpYWxpc2VkIHNlcXVlbmNlc1xuICAgKHN1Y2ggYXMgInN0ciIsICJieXRlcyIgYW5kICJieXRlYXJyYXkiKSBhbHNvIHVzZSB0aGVtIGZvclxuICAgc3Vic2VxdWVuY2UgdGVzdGluZzpcblxuICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4gICAgICBUcnVlXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuICIwIiBhcmUgdHJlYXRlZCBhcyAiMCIgKHdoaWNoIHlpZWxkcyBhblxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSB0aGF0IGl0ZW1zIGluIHRoZVxuICAgc2VxdWVuY2UgKnMqIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlIHRpbWVzLlxuICAgVGhpcyBvZnRlbiBoYXVudHMgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbXSwgW10sIFtdXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbM10sIFszXV1cblxuICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCAiW1tdXSIgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmdcbiAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiAiW1tdXSAqIDMiIGFyZSByZWZlcmVuY2VzXG4gICB0byB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgICJsaXN0cyIgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4gICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbiAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzVdLCBbN11dXG5cbiAgIEZ1cnRoZXIgZXhwbGFuYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBGQVEgZW50cnkgKkhvdyBkbyBJIGNyZWF0ZVxuICAgYSBtdWx0aWRpbWVuc2lvbmFsIGxpc3Q/Ki5cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2ZcbiAgIHRoZSBzdHJpbmc6ICJsZW4ocykgKyBpIiBvciAibGVuKHMpICsgaiIgaXMgc3Vic3RpdHV0ZWQuICBCdXQgbm90ZVxuICAgdGhhdCAiLTAiIGlzIHN0aWxsICIwIi5cblxuNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2Ugb2ZcbiAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCAiaSA8PSBrIDwgaiIuICBJZiAqaSogb3IgKmoqIGlzXG4gICBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpcyBvbWl0dGVkIG9yICJOb25lIixcbiAgIHVzZSAiMCIuICBJZiAqaiogaXMgb21pdHRlZCBvciAiTm9uZSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpc1xuICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzIGVtcHR5LlxuXG41LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgdGhlXG4gICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICAieCA9IGkgKyBuKmsiIHN1Y2ggdGhhdCAiMCA8PSBuIDxcbiAgIChqLWkpL2siLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSAiaSIsICJpK2siLCAiaSsyKmsiLFxuICAgImkrMyprIiBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dCBuZXZlclxuICAgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlXG4gICAibGVuKHMpIi4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGV5IGJlY29tZSAiZW5kIlxuICAgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqIGNhbm5vdCBiZVxuICAgemVyby4gSWYgKmsqIGlzICJOb25lIiwgaXQgaXMgdHJlYXRlZCBsaWtlICIxIi5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3XG4gICBvYmplY3QuIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkXG4gICBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsXG4gICBzZXF1ZW5jZSBsZW5ndGguIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0b1xuICAgb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyAic3RyIiBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgICJzdHIuam9pbigpIiBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYW4gImlvLlN0cmluZ0lPIlxuICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJieXRlcyIgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgICJieXRlcy5qb2luKCkiIG9yICJpby5CeXRlc0lPIiwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSAiYnl0ZWFycmF5IiBvYmplY3QuICAiYnl0ZWFycmF5IiBvYmplY3RzIGFyZVxuICAgICBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJ0dXBsZSIgb2JqZWN0cywgZXh0ZW5kIGEgImxpc3QiIGluc3RlYWRcblxuICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyBkb2N1bWVudGF0aW9uXG5cbjcuIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgInJhbmdlIikgb25seSBzdXBwb3J0IGl0ZW1cbiAgIHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvblwndCBzdXBwb3J0XG4gICBzZXF1ZW5jZSBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG5cbjguICJpbmRleCIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiBXaGVuXG4gICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kIGFsbG93XG4gICBlZmZpY2llbnQgc2VhcmNoaW5nIG9mIHN1YnNlY3Rpb25zIG9mIHRoZSBzZXF1ZW5jZS4gUGFzc2luZyB0aGVcbiAgIGV4dHJhIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgInNbaTpqXS5pbmRleCh4KSIsXG4gICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmdcbiAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZVxuICAgc2xpY2UuXG5cblxuSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSBpbXBsZW1lbnRcbnRoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyBzdXBwb3J0IGZvclxudGhlICJoYXNoKCkiIGJ1aWx0LWluLlxuXG5UaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgInR1cGxlIiBpbnN0YW5jZXMsIHRvXG5iZSB1c2VkIGFzICJkaWN0IiBrZXlzIGFuZCBzdG9yZWQgaW4gInNldCIgYW5kICJmcm96ZW5zZXQiIGluc3RhbmNlcy5cblxuQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGVcbnZhbHVlcyB3aWxsIHJlc3VsdCBpbiAiVHlwZUVycm9yIi5cblxuXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSBzZXF1ZW5jZVxudHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgImJ5dGVhcnJheSIgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gMjU1IikuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSBbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlIGxpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5leHRlbmQodCkiIG9yICJzICs9IHQiICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0IHBhcnQgdGhlIHNhbWUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgInNbbGVuKHMpOmxlbihzKV0gPSB0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzIGNvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qIHRpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSB4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG5cbjQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvclxuICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzXG4gICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkXG4gICBzZXF1ZW5jZS5cblxuNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG5cbjYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IGltcGxlbWVudGluZ1xuICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgdGhlIHNlcXVlbmNlLlxuICAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlXG4gICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyICpDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9ucyouXG5cblxuTGlzdHNcbj09PT09XG5cbkxpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnlcbmFwcGxpY2F0aW9uKS5cblxuY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuXG4gICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiAiW10iXG5cbiAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiW2FdIixcbiAgICAgIlthLCBiLCBjXSJcblxuICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogIlt4IGZvciB4IGluIGl0ZXJhYmxlXSJcblxuICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogImxpc3QoKSIgb3IgImxpc3QoaXRlcmFibGUpIlxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gIml0ZXJhYmxlWzpdIi4gRm9yIGV4YW1wbGUsICJsaXN0KFwnYWJjXCcpIlxuICAgcmV0dXJucyAiW1wnYVwnLCBcJ2JcJywgXCdjXCddIiBhbmQgImxpc3QoICgxLCAyLCAzKSApIiByZXR1cm5zICJbMSwgMixcbiAgIDNdIi4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5XG4gICBsaXN0LCAiW10iLlxuXG4gICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlICJzb3J0ZWQoKSJcbiAgIGJ1aWx0LWluLlxuXG4gICBMaXN0cyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBhbmQgKm11dGFibGUqIHNlcXVlbmNlXG4gICBvcGVyYXRpb25zLiBMaXN0cyBhbHNvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZDpcblxuICAgc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKVxuXG4gICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSAiPCIgY29tcGFyaXNvbnNcbiAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55IGNvbXBhcmlzb25cbiAgICAgIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCB0aGVcbiAgICAgIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuXG5cbiAgICAgICJzb3J0KCkiIGFjY2VwdHMgdHdvIGFyZ3VtZW50cyB0aGF0IGNhbiBvbmx5IGJlIHBhc3NlZCBieVxuICAgICAga2V5d29yZCAoKmtleXdvcmQtb25seSBhcmd1bWVudHMqKTpcblxuICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0b1xuICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLFxuICAgICAgImtleT1zdHIubG93ZXIiKS4gVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZCB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyBwcm9jZXNzLlxuICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgIk5vbmUiIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgc29ydGVkXG4gICAgICBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuXG4gICAgICBUaGUgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYVxuICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gIlRydWUiLCB0aGVuIHRoZSBsaXN0XG4gICAgICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2Ygc3BhY2VcbiAgICAgIHdoZW4gc29ydGluZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgb3BlcmF0ZXNcbiAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAodXNlXG4gICAgICAic29ydGVkKCkiIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuXG5cbiAgICAgIFRoZSAic29ydCgpIiBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXNcbiAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mXG4gICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpblxuICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeVxuICAgICAgZ3JhZGUpLlxuXG4gICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gZGV0ZWN0XG4gICAgICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuXG5UdXBsZXNcbj09PT09PVxuXG5UdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mXG5oZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZSAiZW51bWVyYXRlKCkiXG5idWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgc2VxdWVuY2Vcbm9mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nIHN0b3JhZ2UgaW4gYSAic2V0IiBvclxuImRpY3QiIGluc3RhbmNlKS5cblxuY2xhc3MgY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcblxuICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiAiKCkiXG5cbiAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6ICJhLCIgb3IgIihhLCkiXG5cbiAgICogU2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogImEsIGIsIGMiIG9yICIoYSwgYiwgYykiXG5cbiAgICogVXNpbmcgdGhlICJ0dXBsZSgpIiBidWlsdC1pbjogInR1cGxlKCkiIG9yICJ0dXBsZShpdGVyYWJsZSkiXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgInR1cGxlKFwnYWJjXCcpIiByZXR1cm5zICIoXCdhXCcsIFwnYlwnLCBcJ2NcJykiXG4gICBhbmQgInR1cGxlKCBbMSwgMiwgM10gKSIgcmV0dXJucyAiKDEsIDIsIDMpIi4gSWYgbm8gYXJndW1lbnQgaXNcbiAgIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgIigpIi5cblxuICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgdGhlXG4gICBwYXJlbnRoZXNlcy4gVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSBlbXB0eVxuICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljIGFtYmlndWl0eS5cbiAgIEZvciBleGFtcGxlLCAiZihhLCBiLCBjKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgYXJndW1lbnRzLFxuICAgd2hpbGUgImYoKGEsIGIsIGMpKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlIGFzIHRoZSBzb2xlXG4gICBhcmd1bWVudC5cblxuICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG5cbkZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlclxudGhhbiBhY2Nlc3MgYnkgaW5kZXgsICJjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkiIG1heSBiZSBhIG1vcmVcbmFwcHJvcHJpYXRlIGNob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC5cblxuXG5SYW5nZXNcbj09PT09PVxuXG5UaGUgInJhbmdlIiB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzXG5jb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluICJmb3IiIGxvb3BzLlxuXG5jbGFzcyBjbGFzcyByYW5nZShzdG9wKVxuY2xhc3MgY2xhc3MgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSlcblxuICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAoZWl0aGVyXG4gICBidWlsdC1pbiAiaW50IiBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgIl9faW5kZXhfXyJcbiAgIHNwZWNpYWwgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG9cbiAgICIxIi4gSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gIjAiLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sICJWYWx1ZUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgInIiIGFyZSBkZXRlcm1pbmVkXG4gICBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiB3aGVyZSAiaSA+PSAwIiBhbmQgInJbaV0gPFxuICAgc3RvcCIuXG5cbiAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbiAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSAiaSA+PSAwIiBhbmQgInJbaV0gPiBzdG9wIi5cblxuICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiAiclswXSIgZG9lcyBub3QgbWVldCB0aGUgdmFsdWVcbiAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSBhcmVcbiAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgZGV0ZXJtaW5lZCBieVxuICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG5cbiAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzICJsZW4oKSIpIG1heSByYWlzZVxuICAgIk92ZXJmbG93RXJyb3IiLlxuXG4gICBSYW5nZSBleGFtcGxlczpcblxuICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4gICAgICBbMCwgMywgNiwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbiAgICAgIFtdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbiAgICAgIFtdXG5cbiAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zIGV4Y2VwdFxuICAgY29uY2F0ZW5hdGlvbiBhbmQgcmVwZXRpdGlvbiAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmFuZ2Ugb2JqZWN0c1xuICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuIGFuZFxuICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0IHBhdHRlcm4pLlxuXG4gICBzdGFydFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGFydCogcGFyYW1ldGVyIChvciAiMCIgaWYgdGhlIHBhcmFtZXRlciB3YXNcbiAgICAgIG5vdCBzdXBwbGllZClcblxuICAgc3RvcFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdG9wKiBwYXJhbWV0ZXJcblxuICAgc3RlcFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yICIxIiBpZiB0aGUgcGFyYW1ldGVyIHdhc1xuICAgICAgbm90IHN1cHBsaWVkKVxuXG5UaGUgYWR2YW50YWdlIG9mIHRoZSAicmFuZ2UiIHR5cGUgb3ZlciBhIHJlZ3VsYXIgImxpc3QiIG9yICJ0dXBsZSIgaXNcbnRoYXQgYSAicmFuZ2UiIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbCkgYW1vdW50IG9mXG5tZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQgb25seVxuc3RvcmVzIHRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiB2YWx1ZXMsIGNhbGN1bGF0aW5nIGluZGl2aWR1YWxcbml0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQywgYW5kXG5wcm92aWRlIGZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLFxuc2xpY2luZyBhbmQgc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlICpTZXF1ZW5jZSBUeXBlcyAtLS1cbmxpc3QsIHR1cGxlLCByYW5nZSopOlxuXG4+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuPj4+IHJcbnJhbmdlKDAsIDIwLCAyKVxuPj4+IDExIGluIHJcbkZhbHNlXG4+Pj4gMTAgaW4gclxuVHJ1ZVxuPj4+IHIuaW5kZXgoMTApXG41XG4+Pj4gcls1XVxuMTBcbj4+PiByWzo1XVxucmFuZ2UoMCwgMTAsIDIpXG4+Pj4gclstMV1cbjE4XG5cblRlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCAiPT0iIGFuZCAiIT0iIGNvbXBhcmVzIHRoZW0gYXNcbnNlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmIHRoZXlcbnJlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZSBvYmplY3RzXG50aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCJcbmF0dHJpYnV0ZXMsIGZvciBleGFtcGxlICJyYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKSIgb3IgInJhbmdlKDAsIDMsXG4yKSA9PSByYW5nZSgwLCA0LCAyKSIuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCAiaW50IiBvYmplY3RzIGZvciBtZW1iZXJzaGlwIGluIGNvbnN0YW50XG50aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggYWxsIGl0ZW1zLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBEZWZpbmUgXCc9PVwnIGFuZCBcJyE9XCcgdG8gY29tcGFyZSByYW5nZSBvYmplY3RzXG5iYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mIGNvbXBhcmluZ1xuYmFzZWQgb24gb2JqZWN0IGlkZW50aXR5KS5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcy5cbicsCi0gJ3R5cGVzc2VxLW11dGFibGUnOiB1J1xuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiIG9ubHlcbmFjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4IDw9IDI1NSIpLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6al0gPSB0IiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSBsaXN0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9IFt4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY2xlYXIoKSIgICAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsIHNbOl0iKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiAicyIgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKGZvciB0aGUgbW9zdCBwYXJ0IHRoZSBzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldID0gdCIpICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyBjb250ZW50cyAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiB0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9IFt4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0geCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbiAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2Vyc1xuICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZFxuICAgc2VxdWVuY2UuXG5cbjUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuXG42LiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCBpbXBsZW1lbnRpbmdcbiAgICJfX2luZGV4X18oKSIuICBaZXJvIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgb2YgKm4qIGNsZWFyIHRoZSBzZXF1ZW5jZS5cbiAgIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZVxuICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciAqQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnMqLlxuJywKLSAndW5hcnknOiB1J1xuVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5OlxuXG4gICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG5cblRoZSB1bmFyeSAiLSIgKG1pbnVzKSBvcGVyYXRvciB5aWVsZHMgdGhlIG5lZ2F0aW9uIG9mIGl0cyBudW1lcmljXG5hcmd1bWVudC5cblxuVGhlIHVuYXJ5ICIrIiAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50IHVuY2hhbmdlZC5cblxuVGhlIHVuYXJ5ICJ+IiAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGl0c1xuaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAieCIgaXMgZGVmaW5lZCBhc1xuIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cblxuSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsIGFcbiJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAotICd3aGlsZSc6IHUnXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyBiYWNrXG50byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKLSAnd2l0aCc6IHUnXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cbicsCi0gJ3lpZWxkJzogdSdcblRoZSAieWllbGQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cblxuQSAieWllbGQiIHN0YXRlbWVudCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0byBhICp5aWVsZFxuZXhwcmVzc2lvbiouIFRoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgcGFyZW50aGVzZXNcbnRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHJlcXVpcmVkIGluIHRoZSBlcXVpdmFsZW50IHlpZWxkIGV4cHJlc3Npb25cbnN0YXRlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSB5aWVsZCBzdGF0ZW1lbnRzXG5cbiAgIHlpZWxkIDxleHByPlxuICAgeWllbGQgZnJvbSA8ZXhwcj5cblxuYXJlIGVxdWl2YWxlbnQgdG8gdGhlIHlpZWxkIGV4cHJlc3Npb24gc3RhdGVtZW50c1xuXG4gICAoeWllbGQgPGV4cHI+KVxuICAgKHlpZWxkIGZyb20gPGV4cHI+KVxuXG5ZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuKmdlbmVyYXRvciogZnVuY3Rpb24sIGFuZCBhcmUgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3JcbmZ1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gY2F1c2VcbnRoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuZnVuY3Rpb24uXG5cbkZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSAqWWllbGRcbmV4cHJlc3Npb25zKiBzZWN0aW9uLlxuJ30KKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gTW9uIFNlcCAxMiAxMDo0NzoxMSAyMDE2Cit0b3BpY3MgPSB7J2Fzc2VydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyAnCisgICAgICAgICAgICdhc3NlcnRpb25zXG4nCisgICAgICAgICAgICdpbnRvIGEgcHJvZ3JhbTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaWYgX19kZWJ1Z19fOlxuJworICAgICAgICAgICAnICAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyAnCisgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGlmIF9fZGVidWdfXzpcbicKKyAgICAgICAgICAgJyAgICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgJworICAgICAgICAgICAncmVmZXJcbicKKyAgICAgICAgICAgJ3RvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG4nCisgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxuJworICAgICAgICAgICAnbm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgJyhjb21tYW5kXG4nCisgICAgICAgICAgICdsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuJworICAgICAgICAgICAnYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgJworICAgICAgICAgICAnTm90ZVxuJworICAgICAgICAgICAndGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgJ3RoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc3RhY2sgdHJhY2UuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Fzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgJworICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKKyAnYXNzaWdubWVudCc6ICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCAnCisgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICdtb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKHN0YXJyZWRfZXhwcmVzc2lvbiAnCisgICAgICAgICAgICAgICAnfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbicKKyAgICAgICAgICAgICAgICcgICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIigiIFt0YXJnZXRfbGlzdF0gIikiXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IHNsaWNpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIioiIHRhcmdldFxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICcqYXR0cmlidXRlcmVmKixcbicKKyAgICAgICAgICAgICAgICcqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAgICAgJyhyZW1lbWJlciB0aGF0XG4nCisgICAgICAgICAgICAgICAndGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgJworICAgICAgICAgICAgICAgJ2xhdHRlclxuJworICAgICAgICAgICAgICAgJ3lpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byAnCisgICAgICAgICAgICAgICAnZWFjaCBvZlxuJworICAgICAgICAgICAgICAgJ3RoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxuJworICAgICAgICAgICAgICAgJ3VsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyAnCisgICAgICAgICAgICAgICAndmFsaWRpdHksIGFuZFxuJworICAgICAgICAgICAgICAgJ21heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdydWxlc1xuJworICAgICAgICAgICAgICAgJ29ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gJworICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZVxuJworICAgICAgICAgICAgICAgJ2hpZXJhcmNoeSkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCAnCisgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICdwYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuICcKKyAgICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICAgJyAgaXRlcmFibGUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0IGluIHBhcmVudGhlc2VzOiBUaGUgJworICAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAgJyAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzLCBvciAnCisgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgJyAgc2luZ2xlIHRhcmdldCBpbiBzcXVhcmUgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAnaXRlcmFibGVcbicKKyAgICAgICAgICAgICAgICcgIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICcgICAgYXN0ZXJpc2ssIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICcgICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzICcKKyAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0IGxpc3QsIG1pbnVzIG9uZS4gIFRoZSBmaXJzdCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgJworICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlICcKKyAgICAgICAgICAgICAgICdzdGFycmVkXG4nCisgICAgICAgICAgICAgICAnICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZCB0YXJnZXQuICBBIGxpc3Qgb2YgdGhlIHJlbWFpbmluZyAnCisgICAgICAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGl0ZXJhYmxlIGlzIHRoZW4gYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICcKKyAgICAgICAgICAgICAgICcodGhlIGxpc3RcbicKKyAgICAgICAgICAgICAgICcgICAgY2FuIGJlIGVtcHR5KS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyICcKKyAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgJyAgICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgJ2l0ZW1zIGFyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgICAndGFyZ2V0cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgJworICAgICAgICAgICAgICAgJ2RlZmluZWQgYXNcbicKKyAgICAgICAgICAgICAgICdmb2xsb3dzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICAgIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuJworICAgICAgICAgICAgICAgJyAgICBuYW1lc3BhY2Ugb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5ICcKKyAgICAgICAgICAgICAgICcibm9ubG9jYWwiLFxuJworICAgICAgICAgICAgICAgJyAgICByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgJworICAgICAgICAgICAgICAgJ3RvIHJlYWNoXG4nCisgICAgICAgICAgICAgICAnICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyAnCisgICAgICAgICAgICAgICAnZGVzdHJ1Y3RvciAoaWYgaXRcbicKKyAgICAgICAgICAgICAgICcgIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaW5cbicKKyAgICAgICAgICAgICAgICcgIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiAnCisgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICcgIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCAnCisgICAgICAgICAgICAgICAnb2JqZWN0IHRvXG4nCisgICAgICAgICAgICAgICAnICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgJworICAgICAgICAgICAgICAgJ3JhaXNlc1xuJworICAgICAgICAgICAgICAgJyAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgJworICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uLFxuJworICAgICAgICAgICAgICAgJyAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyAnCisgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgJworICAgICAgICAgICAgICAgJ2lzIGFsd2F5c1xuJworICAgICAgICAgICAgICAgJyAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgJworICAgICAgICAgICAgICAgJ1RodXMsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgJworICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25tZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgICAgY2xhc3MgQ2xzOlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbicKKyAgICAgICAgICAgICAgICcgICAgIGluc3QgPSBDbHMoKVxuJworICAgICAgICAgICAgICAgJyAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggJworICAgICAgICAgICAgICAgJ2FzIDNcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICAgICAnZGljdGlvbmFyeSkuXG4nCisgICAgICAgICAgICAgICAnICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgICAgICdsaXN0KSwgdGhlXG4nCisgICAgICAgICAgICAgICAnICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhbiBpbnRlZ2VyLiAgSWYgaXQgaXMgbmVnYXRpdmUsIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgJ25vbm5lZ2F0aXZlXG4nCisgICAgICAgICAgICAgICAiICBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2VxdWVuY2UncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgIgorICAgICAgICAgICAgICAgJ2Fza2VkXG4nCisgICAgICAgICAgICAgICAnICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICAnCisgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAnICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICJJbmRleEVycm9yIiBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gJworICAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgICcgIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZydzIGtleSAiCisgICAgICAgICAgICAgICAndHlwZSxcbicKKyAgICAgICAgICAgICAgICcgIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyICcKKyAgICAgICAgICAgICAgICd3aGljaCBtYXBzXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgJworICAgICAgICAgICAgICAgJ3JlcGxhY2UgYW5cbicKKyAgICAgICAgICAgICAgICcgIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSAnCisgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAnICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSAiX19zZXRpdGVtX18oKSIgbWV0aG9kIGlzICcKKyAgICAgICAgICAgICAgICdjYWxsZWQgd2l0aFxuJworICAgICAgICAgICAgICAgJyAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICBvZiB0aGUgc2FtZSB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgICAnICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHNlcXVlbmNlJ3MgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuICIKKyAgICAgICAgICAgICAgICdJZlxuJworICAgICAgICAgICAgICAgIiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2UncyBsZW5ndGggaXMgYWRkZWQgdG8gIgorICAgICAgICAgICAgICAgJ2l0LiAgVGhlXG4nCisgICAgICAgICAgICAgICAnICByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0IGlzIGFza2VkIHRvICcKKyAgICAgICAgICAgICAgICdyZXBsYWNlXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdsZW5ndGggb2ZcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgJworICAgICAgICAgICAgICAgJ3NlcXVlbmNlLFxuJworICAgICAgICAgICAgICAgJyAgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsIGlmIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBzZXF1ZW5jZSBhbGxvd3MgaXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHRoZVxuJworICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgZXhwcmVzc2lvbnMsICcKKyAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICdpbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgJworICAgICAgICAgICAgICAgJ2NhdXNpbmdcbicKKyAgICAgICAgICAgICAgICdsZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0IG92ZXJsYXBzICcKKyAgICAgICAgICAgICAgICdiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAidGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSAnc2ltdWx0YW5lb3VzJyAiCisgICAgICAgICAgICAgICAnKGZvclxuJworICAgICAgICAgICAgICAgJ2V4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsICcKKyAgICAgICAgICAgICAgICdzb21ldGltZXNcbicKKyAgICAgICAgICAgICAgICdyZXN1bHRpbmcgaW4gY29uZnVzaW9uLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gJworICAgICAgICAgICAgICAgJ3ByaW50c1xuJworICAgICAgICAgICAgICAgJyJbMCwgMl0iOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIHggPSBbMCwgMV1cbicKKyAgICAgICAgICAgICAgICcgICBpID0gMFxuJworICAgICAgICAgICAgICAgJyAgIGksIHhbaV0gPSAxLCAyICAgICAgICAgIyBpIGlzIHVwZGF0ZWQsIHRoZW4geFtpXSBpcyAnCisgICAgICAgICAgICAgICAndXBkYXRlZFxuJworICAgICAgICAgICAgICAgJyAgIHByaW50KHgpXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqKlBFUCAzMTMyKiogLSBFeHRlbmRlZCBJdGVyYWJsZSBVbnBhY2tpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAgJyhleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCAnCisgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAgJyAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAnCisgICAgICAgICAgICAgICAnIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgJworICAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICAnc3ltYm9scy4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2UgJworICAgICAgICAgICAgICAgJ25vcm1hbFxuJworICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAgJ2xpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICAnb24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICAgJ3RhcmdldC5cbicKKyAgICAgICAgICAgICAgICdUaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSAnCisgICAgICAgICAgICAgICAncmV3cml0dGVuIGFzXG4nCisgICAgICAgICAgICAgICAnInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCAnCisgICAgICAgICAgICAgICAnZWZmZWN0LiBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICdhdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gJworICAgICAgICAgICAgICAgJ3Bvc3NpYmxlLFxuJworICAgICAgICAgICAgICAgJ3RoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgJworICAgICAgICAgICAgICAgJ3JhdGhlciB0aGFuXG4nCisgICAgICAgICAgICAgICAnY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgJworICAgICAgICAgICAgICAgJ29sZCBvYmplY3RcbicKKyAgICAgICAgICAgICAgICdpcyBtb2RpZmllZCBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1VubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgJ2xlZnQtXG4nCisgICAgICAgICAgICAgICAnaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciAnCisgICAgICAgICAgICAgICAnZXhhbXBsZSwgImFbaV1cbicKKyAgICAgICAgICAgICAgICcrPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgJworICAgICAgICAgICAgICAgJ3BlcmZvcm1zXG4nCisgICAgICAgICAgICAgICAndGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICcKKyAgICAgICAgICAgICAgICciYVtpXSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgJworICAgICAgICAgICAgICAgJ2luIGFcbicKKyAgICAgICAgICAgICAgICdzaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICAnc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuICcKKyAgICAgICAgICAgICAgICdTaW1pbGFybHksXG4nCisgICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAgJ2JpbmFyeVxuJworICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlICcKKyAgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lIGNhdmVhdCAnCisgICAgICAgICAgICAgICAnYWJvdXRcbicKKyAgICAgICAgICAgICAgICdjbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyBhcHBsaWVzIGFzIGZvciByZWd1bGFyICcKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbm5vdGF0ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fubm90YXRpb24gYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICd2YXJpYWJsZSBvciBhdHRyaWJ1dGUgYW5ub3RhdGlvbiBhbmQgYW4gb3B0aW9uYWwgYXNzaWdubWVudCAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIGFubm90YXRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCAiOiIgZXhwcmVzc2lvbiBbIj0iICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1RoZSBkaWZmZXJlbmNlIGZyb20gbm9ybWFsIEFzc2lnbm1lbnQgc3RhdGVtZW50cyBpcyB0aGF0IG9ubHkgJworICAgICAgICAgICAgICAgJ3NpbmdsZVxuJworICAgICAgICAgICAgICAgJ3RhcmdldCBhbmQgb25seSBzaW5nbGUgcmlnaHQgaGFuZCBzaWRlIHZhbHVlIGlzIGFsbG93ZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRm9yIHNpbXBsZSBuYW1lcyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIGlmIGluIGNsYXNzIG9yIG1vZHVsZSAnCisgICAgICAgICAgICAgICAnc2NvcGUsXG4nCisgICAgICAgICAgICAgICAndGhlIGFubm90YXRpb25zIGFyZSBldmFsdWF0ZWQgYW5kIHN0b3JlZCBpbiBhIHNwZWNpYWwgY2xhc3Mgb3IgJworICAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSAiX19hbm5vdGF0aW9uc19fIiB0aGF0IGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZyb20gJworICAgICAgICAgICAgICAgJ3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgICAnbmFtZXMgKG1hbmdsZWQgaWYgcHJpdmF0ZSkgdG8gZXZhbHVhdGVkIGFubm90YXRpb25zLiBUaGlzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaXNcbicKKyAgICAgICAgICAgICAgICd3cml0YWJsZSBhbmQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGF0IHRoZSBzdGFydCBvZiBjbGFzcyBvciAnCisgICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICAnYm9keSBleGVjdXRpb24sIGlmIGFubm90YXRpb25zIGFyZSBmb3VuZCBzdGF0aWNhbGx5LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0ZvciBleHByZXNzaW9ucyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIHRoZSBhbm5vdGF0aW9ucyBhcmUgJworICAgICAgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICAgICAgJ2lmIGluIGNsYXNzIG9yIG1vZHVsZSBzY29wZSwgYnV0IG5vdCBzdG9yZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGFubm90YXRlZCBpbiBhIGZ1bmN0aW9uIHNjb3BlLCB0aGVuIHRoaXMgbmFtZSBpcyAnCisgICAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAgICdmb3IgdGhhdCBzY29wZS4gQW5ub3RhdGlvbnMgYXJlIG5ldmVyIGV2YWx1YXRlZCBhbmQgc3RvcmVkIGluICcKKyAgICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICAgJ3Njb3Blcy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHByZXNlbnQsIGFuIGFubm90YXRlZCBhc3NpZ25tZW50ICcKKyAgICAgICAgICAgICAgICdwZXJmb3Jtc1xuJworICAgICAgICAgICAgICAgJ3RoZSBhY3R1YWwgYXNzaWdubWVudCBiZWZvcmUgZXZhbHVhdGluZyBhbm5vdGF0aW9ucyAod2hlcmVcbicKKyAgICAgICAgICAgICAgICdhcHBsaWNhYmxlKS4gSWYgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyBub3QgcHJlc2VudCBmb3IgYW4gJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAgICd0YXJnZXQsIHRoZW4gdGhlIGludGVycHJldGVyIGV2YWx1YXRlcyB0aGUgdGFyZ2V0IGV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICAgJ3RoZSBsYXN0XG4nCisgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiIG9yICJfX3NldGF0dHJfXygpIiBjYWxsLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCA1MjYqKiAtIFZhcmlhYmxlIGFuZCBhdHRyaWJ1dGUgYW5ub3RhdGlvbiAnCisgICAgICAgICAgICAgICAnc3ludGF4XG4nCisgICAgICAgICAgICAgICAnICAqKlBFUCA0ODQqKiAtIFR5cGUgaGludHNcbicsCisgJ2F0b20taWRlbnRpZmllcnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgKE5hbWVzKVxuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdBbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VjdGlvbiBJZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBrZXl3b3JkcyBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uIE5hbWluZyAnCisgICAgICAgICAgICAgICAgICAgICAnYW5kIGJpbmRpbmcgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnV2hlbiB0aGUgbmFtZSBpcyBib3VuZCB0byBhbiBvYmplY3QsIGV2YWx1YXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdG9tIHlpZWxkc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAncmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqUHJpdmF0ZSBuYW1lIG1hbmdsaW5nOioqIFdoZW4gYW4gaWRlbnRpZmllciB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXh0dWFsbHkgb2NjdXJzIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnYSBjbGFzcyBkZWZpbml0aW9uIGJlZ2lucyB3aXRoIHR3byBvciBtb3JlIHVuZGVyc2NvcmUgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnY29uc2lkZXJlZCBhICpwcml2YXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnbmFtZSogb2YgdGhhdCBjbGFzcy4gUHJpdmF0ZSBuYW1lcyBhcmUgdHJhbnNmb3JtZWQgdG8gYSAnCisgICAgICAgICAgICAgICAgICAgICAnbG9uZ2VyIGZvcm1cbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgY29kZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZW0uICBUaGUgdHJhbnNmb3JtYXRpb24gJworICAgICAgICAgICAgICAgICAgICAgJ2luc2VydHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgJworICAgICAgICAgICAgICAgICAgICAgJ3NpbmdsZSB1bmRlcnNjb3JlXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW5zZXJ0ZWQsIGluIGZyb250IG9mIHRoZSBuYW1lLiAgRm9yIGV4YW1wbGUsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiX19zcGFtIlxuJworICAgICAgICAgICAgICAgICAgICAgJ29jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkICJIYW0iIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJyJfSGFtX19zcGFtIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCBpbiB3aGljaFxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBpZGVudGlmaWVyIGlzIHVzZWQuICBJZiB0aGUgdHJhbnNmb3JtZWQgbmFtZSBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnZXh0cmVtZWx5IGxvbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcobG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICd0cnVuY2F0aW9uIG1heVxuJworICAgICAgICAgICAgICAgICAgICAgJ2hhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3JlcywgJworICAgICAgICAgICAgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCisgJ2F0b20tbGl0ZXJhbHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnTGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1B5dGhvbiBzdXBwb3J0cyBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIGFuZCB2YXJpb3VzICcKKyAgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAnbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0V2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgJworICAgICAgICAgICAgICAgICAgJyhzdHJpbmcsXG4nCisgICAgICAgICAgICAgICAgICAnYnl0ZXMsIGludGVnZXIsIGZsb2F0aW5nIHBvaW50IG51bWJlciwgY29tcGxleCBudW1iZXIpIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3RoZSBnaXZlblxuJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgJworICAgICAgICAgICAgICAgICAgJ2Zsb2F0aW5nIHBvaW50XG4nCisgICAgICAgICAgICAgICAgICAnYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiBMaXRlcmFscyBmb3IgJworICAgICAgICAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICAiCisgICAgICAgICAgICAgICAgICAnTXVsdGlwbGVcbicKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0aW9ucyBvZiBsaXRlcmFscyB3aXRoIHRoZSBzYW1lIHZhbHVlIChlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgICAnb2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpICcKKyAgICAgICAgICAgICAgICAgICdtYXkgb2J0YWluXG4nCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZS5cbicsCisgJ2F0dHJpYnV0ZS1hY2Nlc3MnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbWVhbmluZyBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgJyJ4Lm5hbWUiKSBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzcyBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3IgaXMgaXQgZm91bmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBuYW1lLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlICcKKyAgICAgICAgICAgICAgICAgICAgICdvciByYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3JtYWwgbWVjaGFuaXNtLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gJworICAgICAgICAgICAgICAgICAgICAgJ2ludGVudGlvbmFsIGFzeW1tZXRyeVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdkb25lIGJvdGggZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgJworICAgICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCBhdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCAnCisgICAgICAgICAgICAgICAgICAgICAnY29udHJvbCBieSBub3RcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IChidXRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdhY3R1YWxseSBnZXQgdG90YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnYWNjZXNzZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgJworICAgICAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkICcKKyAgICAgICAgICAgICAgICAgICAgICdpbmZpbml0ZSByZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGJhc2UgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCAnCisgICAgICAgICAgICAgICAgICAgICAnbmVlZHMsIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyAnCisgICAgICAgICAgICAgICAgICAgICAndXAgc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgICAgICdsYW5ndWFnZSBzeW50YXhcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlIFNwZWNpYWwgbWV0aG9kIGxvb2t1cC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAnCisgICAgICAgICAgICAgICAgICAgICAnKnZhbHVlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGVhZCBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgJworICAgICAgICAgICAgICAgICAgICAgJ29iai5uYW1lIiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGlyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBtdXN0IGJlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2xpc3QgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc29ydHMgaXQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBlYXJzIGluIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICJvd25lcidzIGNsYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyAnCisgICAgICAgICAgICAgICAgICAgICAncGFyZW50cykuICBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICd3aG9zZSBuYW1lIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAidGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzJyAiCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgJworICAgICAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAnCisgICAgICAgICAgICAgICAgICAgICAnIk5vbmUiIHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogJworICAgICAgICAgICAgICAgICAgICAgJ29mIHRoZSBvd25lclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnKmluc3RhbmNlKiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBhdCB0aGUgdGltZSB0aGUgb3duaW5nIGNsYXNzICpvd25lciogaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZWQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnImluc3BlY3QiIG1vZHVsZSBhc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICcoc2V0dGluZyB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnZHluYW1pYyBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJ3VuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnZva2luZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAnImJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICdvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2FuIG9iamVjdCwgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXQsIG9yIGRlbGV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgInRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3QncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICIKKyAgICAgICAgICAgICAgICAgICAgICciYS54IiBoYXMgYVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzc2VzIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdIb3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyAnCisgICAgICAgICAgICAgICAgICAgICAnb25lIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICAgICAnd2VyZSBkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2hvdyB0aGV5IHdlcmUgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2JpbmRpbmcsICJhLngiLiBIb3dcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnRGlyZWN0IENhbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW5zdGFuY2UgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyAnCisgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtZWQgaW50byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ2xhc3MgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NhbGw6XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1N1cGVyIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAnCisgICAgICAgICAgICAgICAgICAgICAnInN1cGVyKEIsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MgIkEiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciB3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgJworICAgICAgICAgICAgICAgICAgICAgJ29iai5fX2NsYXNzX18pIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb24gZGVwZW5kc1xuJworICAgICAgICAgICAgICAgICAgICAgJ29uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBICcKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2RvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluICcKKyAgICAgICAgICAgICAgICAgICAgICJ0aGUgb2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fc2V0X18oKSIgYW5kL29yXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICAgICduZWl0aGVyLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2Egbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzICcKKyAgICAgICAgICAgICAgICAgICAgICdkZWZpbmUgYm90aFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmUganVzdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCAiX19nZXRfXygpIlxuJworICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LiAgSW5cbicKKyAgICAgICAgICAgICAgICAgICAgICdjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdQeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICciY2xhc3NtZXRob2QoKSIpIGFyZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgY2FuXG4nCisgICAgICAgICAgICAgICAgICAgICAncmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdhY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IuXG4nCisgICAgICAgICAgICAgICAgICAgICAnQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgJworICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZyBsYXJnZVxuJworICAgICAgICAgICAgICAgICAgICAgJ251bWJlcnMgb2YgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluICcKKyAgICAgICAgICAgICAgICAgICAgICdhIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ29mIGluc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSB0byBob2xkIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgJworICAgICAgICAgICAgICAgICAgICAgJypfX2RpY3RfXyogaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsICcKKyAgICAgICAgICAgICAgICAgICAgICdpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZXZlbnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgZWFjaFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyAnCisgICAgICAgICAgICAgICAgICAgICAnYSAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXNzaWduZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgICAgICdBdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICcKKyAgICAgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiAnCisgICAgICAgICAgICAgICAgICAgICAnYWRkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCAnCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gJworICAgICAgICAgICAgICAgICAgICAgJ2FkZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVzY3JpcHRvcnMgKEltcGxlbWVudGluZyBEZXNjcmlwdG9ycykgZm9yIGVhY2ggJworICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlIG5hbWUuICBBcyBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIGEgKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbiBuYW1lc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnaW5hY2Nlc3NpYmxlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MpLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAnCisgICAgICAgICAgICAgICAgICAgICAnImJ5dGVzIiBhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWFuaW5nIG1heSBiZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgKl9fc2xvdHNfXyouXG4nLAorICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQXR0cmlidXRlIHJlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0FuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgYSBwcmltYXJ5IGZvbGxvd2VkIGJ5IGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICdwZXJpb2QgYW5kIGEgbmFtZTpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgIGF0dHJpYnV0ZXJlZiA6Oj0gcHJpbWFyeSAiLiIgaWRlbnRpZmllclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhhdCBzdXBwb3J0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgcmVmZXJlbmNlcywgd2hpY2ggbW9zdCBvYmplY3RzIGRvLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ29iamVjdCBpcyB0aGVuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fza2VkIHRvIHByb2R1Y2UgdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdyYWlzZWQuICBPdGhlcndpc2UsIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZWQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCisgJ2F1Z2Fzc2lnbic6ICdcbicKKyAgICAgICAgICAgICAgJ0F1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsICcKKyAgICAgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAnKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4nCisgICAgICAgICAgICAgICcgICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgJworICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAnICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICcKKyAgICAgICAgICAgICAgJyIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuJworICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcoU2VlIHNlY3Rpb24gUHJpbWFyaWVzIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICdzeW1ib2xzLilcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2UgJworICAgICAgICAgICAgICAnbm9ybWFsXG4nCisgICAgICAgICAgICAgICdhc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAnbGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgJworICAgICAgICAgICAgICAnYXNzaWdubWVudFxuJworICAgICAgICAgICAgICAnb24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICAndGFyZ2V0LlxuJworICAgICAgICAgICAgICAnVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlICcKKyAgICAgICAgICAgICAgJ3Jld3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAnInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuICcKKyAgICAgICAgICAgICAgJ0luIHRoZVxuJworICAgICAgICAgICAgICAnYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuICcKKyAgICAgICAgICAgICAgJ3Bvc3NpYmxlLFxuJworICAgICAgICAgICAgICAndGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCAnCisgICAgICAgICAgICAgICdyYXRoZXIgdGhhblxuJworICAgICAgICAgICAgICAnY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgb2xkICcKKyAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAnaXMgbW9kaWZpZWQgaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICdsZWZ0LVxuJworICAgICAgICAgICAgICAnaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciAnCisgICAgICAgICAgICAgICdleGFtcGxlLCAiYVtpXVxuJworICAgICAgICAgICAgICAnKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kICcKKyAgICAgICAgICAgICAgJ3BlcmZvcm1zXG4nCisgICAgICAgICAgICAgICd0aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gImFbaV0iLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyAnCisgICAgICAgICAgICAgICdpbiBhXG4nCisgICAgICAgICAgICAgICdzaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gJworICAgICAgICAgICAgICAnU2ltaWxhcmx5LFxuJworICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAnCisgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lIGNhdmVhdCAnCisgICAgICAgICAgICAgICdhYm91dFxuJworICAgICAgICAgICAgICAnY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMgYXBwbGllcyBhcyBmb3IgcmVndWxhciAnCisgICAgICAgICAgICAgICdhc3NpZ25tZW50cy5cbicsCisgJ2JpbmFyeSc6ICdcbicKKyAgICAgICAgICAgJ0JpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgaGF2ZSB0aGUgY29udmVudGlvbmFsIHByaW9yaXR5XG4nCisgICAgICAgICAgICdsZXZlbHMuICBOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBvcGVyYXRpb25zIGFsc28gYXBwbHkgdG8gY2VydGFpbiAnCisgICAgICAgICAgICdub24tXG4nCisgICAgICAgICAgICdudW1lcmljIHR5cGVzLiAgQXBhcnQgZnJvbSB0aGUgcG93ZXIgb3BlcmF0b3IsIHRoZXJlIGFyZSBvbmx5IHR3b1xuJworICAgICAgICAgICAnbGV2ZWxzLCBvbmUgZm9yIG11bHRpcGxpY2F0aXZlIG9wZXJhdG9ycyBhbmQgb25lIGZvciBhZGRpdGl2ZVxuJworICAgICAgICAgICAnb3BlcmF0b3JzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBtX2V4cHIgOjo9IHVfZXhwciB8IG1fZXhwciAiKiIgdV9leHByIHwgbV9leHByICJAIiBtX2V4cHIgfFxuJworICAgICAgICAgICAnICAgICAgICAgICAgICBtX2V4cHIgIi8vIiB1X2V4cHJ8IG1fZXhwciAiLyIgdV9leHByIHxcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgbV9leHByICIlIiB1X2V4cHJcbicKKyAgICAgICAgICAgJyAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIioiIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0cyAnCisgICAgICAgICAgICdhcmd1bWVudHMuXG4nCisgICAgICAgICAgICdUaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50IG11c3QgYmUgJworICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgJ2ludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlXG4nCisgICAgICAgICAgICdudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkICcKKyAgICAgICAgICAgJ3RvZ2V0aGVyLlxuJworICAgICAgICAgICAnSW4gdGhlIGxhdHRlciBjYXNlLCBzZXF1ZW5jZSByZXBldGl0aW9uIGlzIHBlcmZvcm1lZDsgYSBuZWdhdGl2ZVxuJworICAgICAgICAgICAncmVwZXRpdGlvbiBmYWN0b3IgeWllbGRzIGFuIGVtcHR5IHNlcXVlbmNlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIkAiIChhdCkgb3BlcmF0b3IgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbWF0cml4XG4nCisgICAgICAgICAgICdtdWx0aXBsaWNhdGlvbi4gIE5vIGJ1aWx0aW4gUHl0aG9uIHR5cGVzIGltcGxlbWVudCB0aGlzIG9wZXJhdG9yLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiLyIgKGRpdmlzaW9uKSBhbmQgIi8vIiAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbicKKyAgICAgICAgICAgJ3F1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbicKKyAgICAgICAgICAgJ2NvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBEaXZpc2lvbiBvZiBpbnRlZ2VycyB5aWVsZHMgYSBmbG9hdCwgJworICAgICAgICAgICAnd2hpbGVcbicKKyAgICAgICAgICAgJ2Zsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICJvZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgJ2Zsb29yJyBmdW5jdGlvbiBhcHBsaWVkIHRvIHRoZVxuIgorICAgICAgICAgICAncmVzdWx0LiAgRGl2aXNpb24gYnkgemVybyByYWlzZXMgdGhlICJaZXJvRGl2aXNpb25FcnJvciIgJworICAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIiUiIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uICcKKyAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICd0aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgJworICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgJ2NvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbicKKyAgICAgICAgICAgJyJaZXJvRGl2aXNpb25FcnJvciIgZXhjZXB0aW9uLiAgVGhlIGFyZ3VtZW50cyBtYXkgYmUgZmxvYXRpbmcgJworICAgICAgICAgICAncG9pbnRcbicKKyAgICAgICAgICAgJ251bWJlcnMsIGUuZy4sICIzLjE0JTAuNyIgZXF1YWxzICIwLjM0IiAoc2luY2UgIjMuMTQiIGVxdWFscyAnCisgICAgICAgICAgICciNCowLjcgK1xuJworICAgICAgICAgICAnMC4zNCIuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAnc2lnblxuJworICAgICAgICAgICAnYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSByZXN1bHQgJworICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgJ3N0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kICcKKyAgICAgICAgICAgJ1sxXS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0b3JzIGFyZSBjb25uZWN0ZWQgYnkgdGhlICcKKyAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAnaWRlbnRpdHk6ICJ4ID09ICh4Ly95KSp5ICsgKHgleSkiLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmUgJworICAgICAgICAgICAnYWxzb1xuJworICAgICAgICAgICAnY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJkaXZtb2QoKSI6ICJkaXZtb2QoeCwgeSkgPT1cbicKKyAgICAgICAgICAgJyh4Ly95LCB4JXkpIi4gWzJdLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBwZXJmb3JtaW5nIHRoZSBtb2R1bG8gb3BlcmF0aW9uIG9uIG51bWJlcnMsIHRoZSAnCisgICAgICAgICAgICciJSJcbicKKyAgICAgICAgICAgJ29wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtICcKKyAgICAgICAgICAgJ29sZC1zdHlsZVxuJworICAgICAgICAgICAnc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuJworICAgICAgICAgICAnc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG4nCisgICAgICAgICAgICdzZWN0aW9uIHByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICcKKyAgICAgICAgICAgJyJkaXZtb2QoKSJcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byAnCisgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICdmbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG4nCisgICAgICAgICAgICdhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSAnCisgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICd0eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uICcKKyAgICAgICAgICAgJ3R5cGVcbicKKyAgICAgICAgICAgJ2FuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG4nCisgICAgICAgICAgICdjb25jYXRlbmF0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzICcKKyAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgJ1RoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAorICdiaXR3aXNlJzogJ1xuJworICAgICAgICAgICAgJ0JpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSAnCisgICAgICAgICAgICAnbGV2ZWw6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuJworICAgICAgICAgICAgJyAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuJworICAgICAgICAgICAgJyAgIG9yX2V4cHIgIDo6PSB4b3JfZXhwciB8IG9yX2V4cHIgInwiIHhvcl9leHByXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICImIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgQU5EIG9mIGl0cyBhcmd1bWVudHMsIHdoaWNoICcKKyAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAnYmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICJeIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuJworICAgICAgICAgICAgJ2FyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGUgInwiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSAoaW5jbHVzaXZlKSBPUiBvZiBpdHMgJworICAgICAgICAgICAgJ2FyZ3VtZW50cyxcbicKKyAgICAgICAgICAgICd3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKKyAnYmx0aW4tY29kZS1vYmplY3RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBPYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnQgInBzZXVkby1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICdib2R5LiBUaGV5IGRpZmZlclxuJworICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb24ndCBjb250YWluIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIHRvIHRoZWlyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWwgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgQ29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBieSB0aGUgYnVpbHQtXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdpbiAiY29tcGlsZSgpIiBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlaXIgIl9fY29kZV9fIiBhdHRyaWJ1dGUuIFNlZSBhbHNvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICciY29kZSIgbW9kdWxlLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdBIGNvZGUgb2JqZWN0IGNhbiBiZSBleGVjdXRlZCBvciBldmFsdWF0ZWQgYnkgcGFzc2luZyAnCisgICAgICAgICAgICAgICAgICAgICAgICdpdCAoaW5zdGVhZCBvZiBhXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2Ugc3RyaW5nKSB0byB0aGUgImV4ZWMoKSIgb3IgImV2YWwoKSIgIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnU2VlIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSBmb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdpbmZvcm1hdGlvbi5cbicsCisgJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBFbGxpcHNpcyBPYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnU2xpY2luZ3MpLiAgSXQgc3VwcG9ydHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VsbGlwc2lzIG9iamVjdCwgbmFtZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShFbGxpcHNpcykoKSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICciRWxsaXBzaXMiIHNpbmdsZXRvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnSXQgaXMgd3JpdHRlbiBhcyAiRWxsaXBzaXMiIG9yICIuLi4iLlxuJywKKyAnYmx0aW4tbnVsbC1vYmplY3QnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBOdWxsIE9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0ICIKKyAgICAgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSByZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZS4gIEl0IHN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAnZXhhY3RseSBvbmUgbnVsbFxuJworICAgICAgICAgICAgICAgICAgICAgICdvYmplY3QsIG5hbWVkICJOb25lIiAoYSBidWlsdC1pbiBuYW1lKS4gICJ0eXBlKE5vbmUpKCkiICcKKyAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ3NhbWUgc2luZ2xldG9uLlxuJworICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAnSXQgaXMgd3JpdHRlbiBhcyAiTm9uZSIuXG4nLAorICdibHRpbi10eXBlLW9iamVjdHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdUeXBlIE9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdUeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuICcKKyAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIHR5cGUgaXNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgJ2FjY2Vzc2VkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAidHlwZSgpIi4gIFRoZXJlIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdubyBzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIG9uIHR5cGVzLiAgVGhlIHN0YW5kYXJkIG1vZHVsZSAidHlwZXMiICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMgbmFtZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdhbGwgc3RhbmRhcmQgYnVpbHQtaW4gdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGVzIGFyZSB3cml0dGVuIGxpa2UgdGhpczogIjxjbGFzcyBcJ2ludFwnPiIuXG4nLAorICdib29sZWFucyc6ICdcbicKKyAgICAgICAgICAgICAnQm9vbGVhbiBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4nCisgICAgICAgICAgICAgJyAgIGFuZF90ZXN0IDo6PSBub3RfdGVzdCB8IGFuZF90ZXN0ICJhbmQiIG5vdF90ZXN0XG4nCisgICAgICAgICAgICAgJyAgIG5vdF90ZXN0IDo6PSBjb21wYXJpc29uIHwgIm5vdCIgbm90X3Rlc3RcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0luIHRoZSBjb250ZXh0IG9mIEJvb2xlYW4gb3BlcmF0aW9ucywgYW5kIGFsc28gd2hlbiBleHByZXNzaW9ucyAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICd1c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgJworICAgICAgICAgICAgICdpbnRlcnByZXRlZFxuJworICAgICAgICAgICAgICdhcyBmYWxzZTogIkZhbHNlIiwgIk5vbmUiLCBudW1lcmljIHplcm8gb2YgYWxsIHR5cGVzLCBhbmQgZW1wdHlcbicKKyAgICAgICAgICAgICAnc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG4nCisgICAgICAgICAgICAgJ2RpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSAnCisgICAgICAgICAgICAgJ2ludGVycHJldGVkXG4nCisgICAgICAgICAgICAgJ2FzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAncHJvdmlkaW5nIGEgIl9fYm9vbF9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IiB5aWVsZHMgIlRydWUiIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSwgJworICAgICAgICAgICAgICciRmFsc2UiXG4nCisgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IGFuZCB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgZmFsc2UsICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJ3ZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IG9yIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCBpdHMgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAncmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcoTm90ZSB0aGF0IG5laXRoZXIgImFuZCIgbm9yICJvciIgcmVzdHJpY3QgdGhlIHZhbHVlIGFuZCB0eXBlICcKKyAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICdyZXR1cm4gdG8gIkZhbHNlIiBhbmQgIlRydWUiLCBidXQgcmF0aGVyIHJldHVybiB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICAgICdhcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICdzaG91bGQgYmUgcmVwbGFjZWQgYnkgYSBkZWZhdWx0IHZhbHVlIGlmIGl0IGlzIGVtcHR5LCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyJzIG9yIFwnZm9vXCciIHlpZWxkcyB0aGUgZGVzaXJlZCB2YWx1ZS4gIEJlY2F1c2UgIm5vdCIgaGFzIHRvICcKKyAgICAgICAgICAgICAnY3JlYXRlIGFcbicKKyAgICAgICAgICAgICAnbmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IChmb3IgZXhhbXBsZSwgIm5vdCBcJ2Zvb1wnIiBwcm9kdWNlcyAiRmFsc2UiIHJhdGhlciAnCisgICAgICAgICAgICAgJ3RoYW4gIlwnXCciLilcbicsCisgJ2JyZWFrJzogJ1xuJworICAgICAgICAgICdUaGUgImJyZWFrIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBicmVha19zdG10IDo6PSAiYnJlYWsiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICciYnJlYWsiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgIndoaWxlIlxuJworICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gd2l0aGluIHRoYXRcbicKKyAgICAgICAgICAnbG9vcC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0l0IHRlcm1pbmF0ZXMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AsIHNraXBwaW5nIHRoZSBvcHRpb25hbCAnCisgICAgICAgICAgJyJlbHNlIlxuJworICAgICAgICAgICdjbGF1c2UgaWYgdGhlIGxvb3AgaGFzIG9uZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG4nCisgICAgICAgICAgJ2tlZXBzIGl0cyBjdXJyZW50IHZhbHVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgJworICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2xvb3AuXG4nLAorICdjYWxsYWJsZS10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgJworICAgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICcgICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nLAorICdjYWxscyc6ICdcbicKKyAgICAgICAgICAnQ2FsbHNcbicKKyAgICAgICAgICAnKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2FsbCBjYWxscyBhIGNhbGxhYmxlIG9iamVjdCAoZS5nLiwgYSAqZnVuY3Rpb24qKSB3aXRoIGEgJworICAgICAgICAgICdwb3NzaWJseVxuJworICAgICAgICAgICdlbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjYWxsICAgICAgICAgICAgICAgICA6Oj0gcHJpbWFyeSAiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl0gfCAnCisgICAgICAgICAgJ2NvbXByZWhlbnNpb25dICIpIlxuJworICAgICAgICAgICcgICBhcmd1bWVudF9saXN0ICAgICAgICA6Oj0gcG9zaXRpb25hbF9hcmd1bWVudHMgWyIsIiAnCisgICAgICAgICAgJ3N0YXJyZWRfYW5kX2tleXdvcmRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZHNfYXJndW1lbnRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHN0YXJyZWRfYW5kX2tleXdvcmRzIFsiLCIgJworICAgICAgICAgICdrZXl3b3Jkc19hcmd1bWVudHNdXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZHNfYXJndW1lbnRzXG4nCisgICAgICAgICAgJyAgIHBvc2l0aW9uYWxfYXJndW1lbnRzIDo6PSBbIioiXSBleHByZXNzaW9uICgiLCIgWyIqIl0gJworICAgICAgICAgICdleHByZXNzaW9uKSpcbicKKyAgICAgICAgICAnICAgc3RhcnJlZF9hbmRfa2V5d29yZHMgOjo9ICgiKiIgZXhwcmVzc2lvbiB8IGtleXdvcmRfaXRlbSlcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgIioiIGV4cHJlc3Npb24gfCAiLCIgJworICAgICAgICAgICdrZXl3b3JkX2l0ZW0pKlxuJworICAgICAgICAgICcgICBrZXl3b3Jkc19hcmd1bWVudHMgICA6Oj0gKGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbilcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbikqXG4nCisgICAgICAgICAgJyAgIGtleXdvcmRfaXRlbSAgICAgICAgIDo6PSBpZGVudGlmaWVyICI9IiBleHByZXNzaW9uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbiBvcHRpb25hbCB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCBhbmRcbicKKyAgICAgICAgICAna2V5d29yZCBhcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG4nCisgICAgICAgICAgJ2Z1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG4nCisgICAgICAgICAgJ29iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgYWxsIG9iamVjdHMgaGF2aW5nIGFcbicKKyAgICAgICAgICAnIl9fY2FsbF9fKCkiIG1ldGhvZCBhcmUgY2FsbGFibGUpLiAgQWxsIGFyZ3VtZW50IGV4cHJlc3Npb25zIGFyZVxuJworICAgICAgICAgICdldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4nCisgICAgICAgICAgJ0Z1bmN0aW9uIGRlZmluaXRpb25zIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiBsaXN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuJworICAgICAgICAgICdhcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG4nCisgICAgICAgICAgJ2tleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuJworICAgICAgICAgICdjb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ2Zvcm1hbFxuJworICAgICAgICAgICdwYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbicKKyAgICAgICAgICAndmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdleHByZXNzaW9uIGlzICJOb25lIiwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbicKKyAgICAgICAgICAnYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgJyhEZWZhdWx0XG4nCisgICAgICAgICAgJ3ZhbHVlcyBhcmUgY2FsY3VsYXRlZCwgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZDsgdGh1cywgYVxuJworICAgICAgICAgICdtdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSAnCisgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAiYmUgc2hhcmVkIGJ5IGFsbCBjYWxscyB0aGF0IGRvbid0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yICIKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgc2xvdDsgdGhpcyBzaG91bGQgdXN1YWxseSBiZSBhdm9pZGVkLikgIElmIHRoZXJlIGFyZSAnCisgICAgICAgICAgJ2FueVxuJworICAgICAgICAgICd1bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgJworICAgICAgICAgICciVHlwZUVycm9yIlxuJworICAgICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJ3RoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbicKKyAgICAgICAgICAnYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgJworICAgICAgICAgICdldmVuXG4nCisgICAgICAgICAgImlmIHRoZXkgYXJlICduYW1lZCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxuIgorICAgICAgICAgICd0aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSAnCisgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAnZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvICcKKyAgICAgICAgICAncGFyc2VcbicKKyAgICAgICAgICAndGhlaXIgYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsICcKKyAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgJ3Nsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCAnCisgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICd1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0ICcKKyAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgJ3BhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsICcKKyAgICAgICAgICAnYXJndW1lbnRzXG4nCisgICAgICAgICAgJyhvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBhbnkga2V5d29yZCBhcmd1bWVudCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZm9ybWFsIHBhcmFtZXRlclxuJworICAgICAgICAgICduYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbicKKyAgICAgICAgICAndXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgJworICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAncGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuJworICAgICAgICAgICdhcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgdmFsdWVzKSwgb3IgYSAobmV3KSBlbXB0eSBkaWN0aW9uYXJ5IGlmIHRoZXJlIHdlcmUgJworICAgICAgICAgICdub1xuJworICAgICAgICAgICdleGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgJworICAgICAgICAgICciZXhwcmVzc2lvbiJcbicKKyAgICAgICAgICAnbXVzdCBldmFsdWF0ZSB0byBhbiAqaXRlcmFibGUqLiAgRWxlbWVudHMgZnJvbSB0aGVzZSBpdGVyYWJsZXMgYXJlXG4nCisgICAgICAgICAgJ3RyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlIGFkZGl0aW9uYWwgcG9zaXRpb25hbCBhcmd1bWVudHMuICBGb3IgdGhlICcKKyAgICAgICAgICAnY2FsbFxuJworICAgICAgICAgICciZih4MSwgeDIsICp5LCB4MywgeDQpIiwgaWYgKnkqIGV2YWx1YXRlcyB0byBhIHNlcXVlbmNlICp5MSosIC4uLixcbicKKyAgICAgICAgICAnKnlNKiwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgY2FsbCB3aXRoIE0rNCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgJyp4MSosXG4nCisgICAgICAgICAgJyp4MiosICp5MSosIC4uLiwgKnlNKiwgKngzKiwgKng0Ki5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCAnCisgICAgICAgICAgJ21heVxuJworICAgICAgICAgICdhcHBlYXIgKmFmdGVyKiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50cywgaXQgaXMgcHJvY2Vzc2VkICcKKyAgICAgICAgICAnKmJlZm9yZSpcbicKKyAgICAgICAgICAndGhlIGtleXdvcmQgYXJndW1lbnRzIChhbmQgYW55ICIqKmV4cHJlc3Npb24iIGFyZ3VtZW50cyAtLSBzZWUgJworICAgICAgICAgICdiZWxvdykuXG4nCisgICAgICAgICAgJ1NvOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IGRlZiBmKGEsIGIpOlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KGEsIGIpXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICA+Pj4gZihiPTEsICooMiwpKVxuJworICAgICAgICAgICcgICAyIDFcbicKKyAgICAgICAgICAnICAgPj4+IGYoYT0xLCAqKDIsKSlcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbicKKyAgICAgICAgICAiICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnYSdcbiIKKyAgICAgICAgICAnICAgPj4+IGYoMSwgKigyLCkpXG4nCisgICAgICAgICAgJyAgIDEgMlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSXQgaXMgdW51c3VhbCBmb3IgYm90aCBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlICIqZXhwcmVzc2lvbiIgJworICAgICAgICAgICdzeW50YXhcbicKKyAgICAgICAgICAndG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzICcKKyAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgJ2FyaXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlIHN5bnRheCAiKipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuJworICAgICAgICAgICciZXhwcmVzc2lvbiIgbXVzdCBldmFsdWF0ZSB0byBhICptYXBwaW5nKiwgdGhlIGNvbnRlbnRzIG9mIHdoaWNoICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJ3RyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIElmIGEga2V5d29yZCBpcyBhbHJlYWR5XG4nCisgICAgICAgICAgJ3ByZXNlbnQgKGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsIG9yIGZyb20gYW5vdGhlciAnCisgICAgICAgICAgJ3VucGFja2luZyksXG4nCisgICAgICAgICAgJ2EgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0Zvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuJworICAgICAgICAgICdjYW5ub3QgYmUgdXNlZCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50IHNsb3RzIG9yIGFzIGtleXdvcmQgYXJndW1lbnRcbicKKyAgICAgICAgICAnbmFtZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy41OiBGdW5jdGlvbiBjYWxscyBhY2NlcHQgYW55IG51bWJlciBvZiAiKiIgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnIioqIiB1bnBhY2tpbmdzLCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBtYXkgZm9sbG93IGl0ZXJhYmxlICcKKyAgICAgICAgICAndW5wYWNraW5nc1xuJworICAgICAgICAgICcoIioiKSwgYW5kIGtleXdvcmQgYXJndW1lbnRzIG1heSBmb2xsb3cgZGljdGlvbmFyeSB1bnBhY2tpbmdzICcKKyAgICAgICAgICAnKCIqKiIpLlxuJworICAgICAgICAgICdPcmlnaW5hbGx5IHByb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5ICJOb25lIiwgdW5sZXNzIGl0IHJhaXNlcyAnCisgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgJ2V4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG4nCisgICAgICAgICAgJ2NhbGxhYmxlIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGl0IGlzLS0tXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIHVzZXItZGVmaW5lZCBmdW5jdGlvbjpcbicKKyAgICAgICAgICAnICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbicKKyAgICAgICAgICAnICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgIEZ1bmN0aW9uIGRlZmluaXRpb25zLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICJyZXR1cm4iXG4nCisgICAgICAgICAgJyAgIHN0YXRlbWVudCwgdGhpcyBzcGVjaWZpZXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICdjYWxsLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBidWlsdC1pbiBmdW5jdGlvbiBvciBtZXRob2Q6XG4nCisgICAgICAgICAgJyAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgQnVpbHQtaW4gRnVuY3Rpb25zIGZvciAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBjbGFzcyBvYmplY3Q6XG4nCisgICAgICAgICAgJyAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbicKKyAgICAgICAgICAnICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiAnCisgICAgICAgICAgJ2FyZ3VtZW50XG4nCisgICAgICAgICAgJyAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuJworICAgICAgICAgICcgICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgY2xhc3MgaW5zdGFuY2U6XG4nCisgICAgICAgICAgJyAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBzYW1lIGFzIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuXG4nLAorICdjbGFzcyc6ICdcbicKKyAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiBUaGUgJworICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICd0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiICcKKyAgICAgICAgICAnc3VpdGVcbicKKyAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbYXJndW1lbnRfbGlzdF0gIikiXG4nCisgICAgICAgICAgJyAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgJworICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgJ3VzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlIE1ldGFjbGFzc2VzIGZvciBtb3JlXG4nCisgICAgICAgICAgJ2FkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGEgJworICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICdvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlICcKKyAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICdpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzpcbicKKyAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbyhvYmplY3QpOlxuJworICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiVGhlIGNsYXNzJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuIgorICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmcpLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbicKKyAgICAgICAgICAnb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbicKKyAgICAgICAgICAiZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3MncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sICIKKyAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgJ2V4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSAnCisgICAgICAgICAgJ0FcbicKKyAgICAgICAgICAnY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlICcKKyAgICAgICAgICAnYmFzZVxuJworICAgICAgICAgICdjbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAnVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG4nCisgICAgICAgICAgJ25hbWVzcGFjZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBvcmRlciBpbiB3aGljaCBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjbGFzcyBib2R5IGlzXG4nCisgICAgICAgICAgJ3ByZXNlcnZlZCBpbiB0aGUgbmV3IGNsYXNzXCdzICJfX2RpY3RfXyIuICBOb3RlIHRoYXQgdGhpcyBpcyAnCisgICAgICAgICAgJ3JlbGlhYmxlXG4nCisgICAgICAgICAgJ29ubHkgcmlnaHQgYWZ0ZXIgdGhlIGNsYXNzIGlzIGNyZWF0ZWQgYW5kIG9ubHkgZm9yIGNsYXNzZXMgdGhhdCAnCisgICAgICAgICAgJ3dlcmVcbicKKyAgICAgICAgICAnZGVmaW5lZCB1c2luZyB0aGUgZGVmaW5pdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nIG1ldGFjbGFzc2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgJworICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBAZjEoYXJnKVxuJworICAgICAgICAgICcgICBAZjJcbicKKyAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICcgICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgaXMgdGhlbiBib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gIgorICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlICcKKyAgICAgICAgICAnYXR0cmlidXRlc1xuJworICAgICAgICAgICdjYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG4nCisgICAgICAgICAgJ2luc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gJworICAgICAgICAgICciInNlbGYubmFtZSIiLFxuJworICAgICAgICAgICdhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgJ3doZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzICcKKyAgICAgICAgICAnZGVmYXVsdHNcbicKKyAgICAgICAgICAnZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCAnCisgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgJ3VuZXhwZWN0ZWQgcmVzdWx0cy4gIERlc2NyaXB0b3JzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxuJworICAgICAgICAgICd2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuJworICAgICAgICAgICcgIENsYXNzIERlY29yYXRvcnNcbicsCisgJ2NvbXBhcmlzb25zJzogJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICdwcmlvcml0eSxcbicKKyAgICAgICAgICAgICAgICAnd2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciAnCisgICAgICAgICAgICAgICAgJ2JpdHdpc2VcbicKKyAgICAgICAgICAgICAgICAnb3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuJworICAgICAgICAgICAgICAgICcgICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4nCisgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogIlRydWUiIG9yICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyAnCisgICAgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmx5XG4nCisgICAgICAgICAgICAgICAgJ29uY2UgKGJ1dCBpbiBib3RoIGNhc2VzICJ6IiBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuICJ4IDwgJworICAgICAgICAgICAgICAgICd5IiBpc1xuJworICAgICAgICAgICAgICAgICdmb3VuZCB0byBiZSBmYWxzZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICcKKyAgICAgICAgICAgICAgICAnKm9wMSosXG4nCisgICAgICAgICAgICAgICAgJypvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiAiYSBvcDEgYiBvcDIgJworICAgICAgICAgICAgICAgICdjIC4uLiB5XG4nCisgICAgICAgICAgICAgICAgJ29wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4gJworICAgICAgICAgICAgICAgICd6IiwgZXhjZXB0XG4nCisgICAgICAgICAgICAgICAgJ3RoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgImEgb3AxIGIgb3AyIGMiIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mICcKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAgJyphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgJworICAgICAgICAgICAgICAgICcodGhvdWdoXG4nCisgICAgICAgICAgICAgICAgJ3BlcmhhcHMgbm90IHByZXR0eSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVmFsdWUgY29tcGFyaXNvbnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICd0aGUgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgJ29mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgZG8gbm90IG5lZWQgdG8gaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgJ3R5cGUuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDaGFwdGVyIE9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXMgc3RhdGVzIHRoYXQgb2JqZWN0cyBoYXZlIGEgJworICAgICAgICAgICAgICAgICd2YWx1ZSAoaW5cbicKKyAgICAgICAgICAgICAgICAnYWRkaXRpb24gdG8gdHlwZSBhbmQgaWRlbnRpdHkpLiAgVGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcyBhICcKKyAgICAgICAgICAgICAgICAncmF0aGVyXG4nCisgICAgICAgICAgICAgICAgJ2Fic3RyYWN0IG5vdGlvbiBpbiBQeXRob246IEZvciBleGFtcGxlLCB0aGVyZSBpcyBubyBjYW5vbmljYWwgJworICAgICAgICAgICAgICAgICdhY2Nlc3NcbicKKyAgICAgICAgICAgICAgICAibWV0aG9kIGZvciBhbiBvYmplY3QncyB2YWx1ZS4gIEFsc28sIHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50ICIKKyAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAndmFsdWUgb2YgYW4gb2JqZWN0IHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBpbiBhIHBhcnRpY3VsYXIgd2F5LCAnCisgICAgICAgICAgICAgICAgJ2UuZy5cbicKKyAgICAgICAgICAgICAgICAnY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9ycyAnCisgICAgICAgICAgICAgICAgJ2ltcGxlbWVudCBhXG4nCisgICAgICAgICAgICAgICAgJ3BhcnRpY3VsYXIgbm90aW9uIG9mIHdoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcy4gIE9uZSBjYW4gJworICAgICAgICAgICAgICAgICd0aGluayBvZlxuJworICAgICAgICAgICAgICAgICd0aGVtIGFzIGRlZmluaW5nIHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaW5kaXJlY3RseSwgYnkgbWVhbnMgJworICAgICAgICAgICAgICAgICdvZiB0aGVpclxuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQmVjYXVzZSBhbGwgdHlwZXMgYXJlIChkaXJlY3Qgb3IgaW5kaXJlY3QpIHN1YnR5cGVzIG9mICcKKyAgICAgICAgICAgICAgICAnIm9iamVjdCIsIHRoZXlcbicKKyAgICAgICAgICAgICAgICAnaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yIGZyb20gIm9iamVjdCIuICBUeXBlcyAnCisgICAgICAgICAgICAgICAgJ2NhblxuJworICAgICAgICAgICAgICAgICdjdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciBieSBpbXBsZW1lbnRpbmcgKnJpY2ggJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgJ21ldGhvZHMqIGxpa2UgIl9fbHRfXygpIiwgZGVzY3JpYmVkIGluIEJhc2ljIGN1c3RvbWl6YXRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbiAoIj09IiBhbmQgIiE9IikgJworICAgICAgICAgICAgICAgICdpcyBiYXNlZFxuJworICAgICAgICAgICAgICAgICdvbiB0aGUgaWRlbnRpdHkgb2YgdGhlIG9iamVjdHMuICBIZW5jZSwgZXF1YWxpdHkgY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyB3aXRoIHRoZSBzYW1lIGlkZW50aXR5IHJlc3VsdHMgaW4gZXF1YWxpdHksIGFuZCAnCisgICAgICAgICAgICAgICAgJ2VxdWFsaXR5XG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gb2YgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMgcmVzdWx0cyBpblxuJworICAgICAgICAgICAgICAgICdpbmVxdWFsaXR5LiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhlICcKKyAgICAgICAgICAgICAgICAnZGVzaXJlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAnYWxsIG9iamVjdHMgc2hvdWxkIGJlIHJlZmxleGl2ZSAoaS5lLiAieCBpcyB5IiBpbXBsaWVzICJ4ID09ICcKKyAgICAgICAgICAgICAgICAneSIpLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQSBkZWZhdWx0IG9yZGVyIGNvbXBhcmlzb24gKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAncHJvdmlkZWQ7XG4nCisgICAgICAgICAgICAgICAgJ2FuIGF0dGVtcHQgcmFpc2VzICJUeXBlRXJyb3IiLiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICdiZWhhdmlvclxuJworICAgICAgICAgICAgICAgICdpcyB0aGUgbGFjayBvZiBhIHNpbWlsYXIgaW52YXJpYW50IGFzIGZvciBlcXVhbGl0eS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uLCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnZGlmZmVyZW50IGlkZW50aXRpZXMgYXJlIGFsd2F5cyB1bmVxdWFsLCBtYXkgYmUgaW4gY29udHJhc3QgJworICAgICAgICAgICAgICAgICd0byB3aGF0XG4nCisgICAgICAgICAgICAgICAgJ3R5cGVzIHdpbGwgbmVlZCB0aGF0IGhhdmUgYSBzZW5zaWJsZSBkZWZpbml0aW9uIG9mIG9iamVjdCAnCisgICAgICAgICAgICAgICAgJ3ZhbHVlIGFuZFxuJworICAgICAgICAgICAgICAgICd2YWx1ZS1iYXNlZCBlcXVhbGl0eS4gIFN1Y2ggdHlwZXMgd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICAgICAgJ3RoZWlyXG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gYmVoYXZpb3IsIGFuZCBpbiBmYWN0LCBhIG51bWJlciBvZiBidWlsdC1pbiB0eXBlcyAnCisgICAgICAgICAgICAgICAgJ2hhdmUgZG9uZVxuJworICAgICAgICAgICAgICAgICd0aGF0LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgY29tcGFyaXNvbiBiZWhhdmlvciBvZiB0aGUgJworICAgICAgICAgICAgICAgICdtb3N0XG4nCisgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCBidWlsdC1pbiB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTnVtYmVycyBvZiBidWlsdC1pbiBudW1lcmljIHR5cGVzIChOdW1lcmljIFR5cGVzIC0tLSBpbnQsICcKKyAgICAgICAgICAgICAgICAnZmxvYXQsXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGxleCkgYW5kIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IHR5cGVzICcKKyAgICAgICAgICAgICAgICAnImZyYWN0aW9ucy5GcmFjdGlvbiIgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgImRlY2ltYWwuRGVjaW1hbCIgY2FuIGJlIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyICcKKyAgICAgICAgICAgICAgICAndHlwZXMsXG4nCisgICAgICAgICAgICAgICAgJyAgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdCBjb21wbGV4IG51bWJlcnMgZG8gbm90IHN1cHBvcnQgJworICAgICAgICAgICAgICAgICdvcmRlclxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmlzb24uICBXaXRoaW4gdGhlIGxpbWl0cyBvZiB0aGUgdHlwZXMgaW52b2x2ZWQsIHRoZXkgJworICAgICAgICAgICAgICAgICdjb21wYXJlXG4nCisgICAgICAgICAgICAgICAgJyAgbWF0aGVtYXRpY2FsbHkgKGFsZ29yaXRobWljYWxseSkgY29ycmVjdCB3aXRob3V0IGxvc3Mgb2YgJworICAgICAgICAgICAgICAgICdwcmVjaXNpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFRoZSBub3QtYS1udW1iZXIgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICcKKyAgICAgICAgICAgICAgICAnIkRlY2ltYWwoXCdOYU5cJykiIGFyZVxuJworICAgICAgICAgICAgICAgICcgIHNwZWNpYWwuICBUaGV5IGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcyAoInggaXMgeCIgaXMgJworICAgICAgICAgICAgICAgICd0cnVlKSBidXRcbicKKyAgICAgICAgICAgICAgICAnICBhcmUgbm90IGVxdWFsIHRvIHRoZW1zZWx2ZXMgKCJ4ID09IHgiIGlzIGZhbHNlKS4gICcKKyAgICAgICAgICAgICAgICAnQWRkaXRpb25hbGx5LFxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmluZyBhbnkgbnVtYmVyIHRvIGEgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAnIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAnICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8IGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpICcKKyAgICAgICAgICAgICAgICAnPCAzIiB3aWxsXG4nCisgICAgICAgICAgICAgICAgJyAgcmV0dXJuICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEJpbmFyeSBzZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAiYnl0ZXMiIG9yICJieXRlYXJyYXkiKSBjYW4gJworICAgICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLiAgVGhleSBjb21wYXJlXG4nCisgICAgICAgICAgICAgICAgJyAgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWMgdmFsdWVzIG9mIHRoZWlyICcKKyAgICAgICAgICAgICAgICAnZWxlbWVudHMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIFN0cmluZ3MgKGluc3RhbmNlcyBvZiAic3RyIikgY29tcGFyZSBsZXhpY29ncmFwaGljYWxseSAnCisgICAgICAgICAgICAgICAgJ3VzaW5nIHRoZVxuJworICAgICAgICAgICAgICAgICcgIG51bWVyaWNhbCBVbmljb2RlIGNvZGUgcG9pbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgICAgJyAgIm9yZCgpIikgb2YgdGhlaXIgY2hhcmFjdGVycy4gWzNdXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFN0cmluZ3MgYW5kIGJpbmFyeSBzZXF1ZW5jZXMgY2Fubm90IGJlIGRpcmVjdGx5IGNvbXBhcmVkLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBTZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAidHVwbGUiLCAibGlzdCIsIG9yICJyYW5nZSIpIGNhbiAnCisgICAgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGFyZWQgb25seSB3aXRoaW4gZWFjaCBvZiB0aGVpciB0eXBlcywgd2l0aCB0aGUgJworICAgICAgICAgICAgICAgICdyZXN0cmljdGlvbiB0aGF0XG4nCisgICAgICAgICAgICAgICAgJyAgcmFuZ2VzIGRvIG5vdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24uICBFcXVhbGl0eSAnCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gYWNyb3NzXG4nCisgICAgICAgICAgICAgICAgJyAgdGhlc2UgdHlwZXMgcmVzdWx0cyBpbiB1bmVxdWFsaXR5LCBhbmQgb3JkZXJpbmcgY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgJ2Fjcm9zc1xuJworICAgICAgICAgICAgICAgICcgIHRoZXNlIHR5cGVzIHJhaXNlcyAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgU2VxdWVuY2VzIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuJworICAgICAgICAgICAgICAgICcgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMsIHdoZXJlYnkgcmVmbGV4aXZpdHkgb2YgdGhlIGVsZW1lbnRzICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnICBlbmZvcmNlZC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgSW4gZW5mb3JjaW5nIHJlZmxleGl2aXR5IG9mIGVsZW1lbnRzLCB0aGUgY29tcGFyaXNvbiBvZiAnCisgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgJyAgYXNzdW1lcyB0aGF0IGZvciBhIGNvbGxlY3Rpb24gZWxlbWVudCAieCIsICJ4ID09IHgiIGlzICcKKyAgICAgICAgICAgICAgICAnYWx3YXlzIHRydWUuXG4nCisgICAgICAgICAgICAgICAgJyAgQmFzZWQgb24gdGhhdCBhc3N1bXB0aW9uLCBlbGVtZW50IGlkZW50aXR5IGlzIGNvbXBhcmVkICcKKyAgICAgICAgICAgICAgICAnZmlyc3QsIGFuZFxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnQgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgJworICAgICAgICAgICAgICAgICdlbGVtZW50cy4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAnICBhcHByb2FjaCB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0IGFzIGEgc3RyaWN0IGVsZW1lbnQgJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgJyAgd291bGQsIGlmIHRoZSBjb21wYXJlZCBlbGVtZW50cyBhcmUgcmVmbGV4aXZlLiAgRm9yICcKKyAgICAgICAgICAgICAgICAnbm9uLXJlZmxleGl2ZVxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvciBzdHJpY3QgZWxlbWVudFxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmlzb24sIGFuZCBtYXkgYmUgc3VycHJpc2luZzogIFRoZSBub24tcmVmbGV4aXZlICcKKyAgICAgICAgICAgICAgICAnbm90LWEtbnVtYmVyXG4nCisgICAgICAgICAgICAgICAgJyAgdmFsdWVzIGZvciBleGFtcGxlIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGNvbXBhcmlzb24gJworICAgICAgICAgICAgICAgICdiZWhhdmlvciB3aGVuXG4nCisgICAgICAgICAgICAgICAgJyAgdXNlZCBpbiBhIGxpc3Q6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICIgICAgID4+PiBuYW4gPSBmbG9hdCgnTmFOJylcbiIKKyAgICAgICAgICAgICAgICAnICAgICA+Pj4gbmFuIGlzIG5hblxuJworICAgICAgICAgICAgICAgICcgICAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAnICAgICA+Pj4gbmFuID09IG5hblxuJworICAgICAgICAgICAgICAgICcgICAgIEZhbHNlICAgICAgICAgICAgICAgICA8LS0gdGhlIGRlZmluZWQgbm9uLXJlZmxleGl2ZSAnCisgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIG9mIE5hTlxuJworICAgICAgICAgICAgICAgICcgICAgID4+PiBbbmFuXSA9PSBbbmFuXVxuJworICAgICAgICAgICAgICAgICcgICAgIFRydWUgICAgICAgICAgICAgICAgICA8LS0gbGlzdCBlbmZvcmNlcyByZWZsZXhpdml0eSBhbmQgJworICAgICAgICAgICAgICAgICd0ZXN0cyBpZGVudGl0eSBmaXJzdFxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBMZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBiZXR3ZWVuIGJ1aWx0LWluIGNvbGxlY3Rpb25zICcKKyAgICAgICAgICAgICAgICAnd29ya3MgYXNcbicKKyAgICAgICAgICAgICAgICAnICBmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAqIEZvciB0d28gY29sbGVjdGlvbnMgdG8gY29tcGFyZSBlcXVhbCwgdGhleSBtdXN0IGJlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICAnICAgIHR5cGUsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgZWFjaCBwYWlyIG9mICcKKyAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICAgICcgICAgZWxlbWVudHMgbXVzdCBjb21wYXJlIGVxdWFsIChmb3IgZXhhbXBsZSwgIlsxLDJdID09ICcKKyAgICAgICAgICAgICAgICAnKDEsMikiIGlzXG4nCisgICAgICAgICAgICAgICAgJyAgICBmYWxzZSBiZWNhdXNlIHRoZSB0eXBlIGlzIG5vdCB0aGUgc2FtZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICogQ29sbGVjdGlvbnMgdGhhdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24gYXJlIG9yZGVyZWQgdGhlICcKKyAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICcgICAgYXMgdGhlaXIgZmlyc3QgdW5lcXVhbCBlbGVtZW50cyAoZm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9ICcKKyAgICAgICAgICAgICAgICAnWzEsMix5XSJcbicKKyAgICAgICAgICAgICAgICAnICAgIGhhcyB0aGUgc2FtZSB2YWx1ZSBhcyAieCA8PSB5IikuICBJZiBhIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICAgICdlbGVtZW50IGRvZXNcbicKKyAgICAgICAgICAgICAgICAnICAgIG5vdCBleGlzdCwgdGhlIHNob3J0ZXIgY29sbGVjdGlvbiBpcyBvcmRlcmVkIGZpcnN0IChmb3IgJworICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICcgICAgIlsxLDJdIDwgWzEsMiwzXSIgaXMgdHJ1ZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIE1hcHBpbmdzIChpbnN0YW5jZXMgb2YgImRpY3QiKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmICcKKyAgICAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICAgICcgIGhhdmUgZXF1YWwgKihrZXksIHZhbHVlKSogcGFpcnMuIEVxdWFsaXR5IGNvbXBhcmlzb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAna2V5cyBhbmRcbicKKyAgICAgICAgICAgICAgICAnICBlbGVtZW50cyBlbmZvcmNlcyByZWZsZXhpdml0eS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgT3JkZXIgY29tcGFyaXNvbnMgKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgcmFpc2UgJworICAgICAgICAgICAgICAgICciVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogU2V0cyAoaW5zdGFuY2VzIG9mICJzZXQiIG9yICJmcm96ZW5zZXQiKSBjYW4gYmUgY29tcGFyZWQgJworICAgICAgICAgICAgICAgICd3aXRoaW5cbicKKyAgICAgICAgICAgICAgICAnICBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBUaGV5IGRlZmluZSBvcmRlciBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmQgJworICAgICAgICAgICAgICAgICdzdXBlcnNldFxuJworICAgICAgICAgICAgICAgICcgIHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzIChmb3IgJworICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICcgIHRoZSB0d28gc2V0cyAiezEsMn0iIGFuZCAiezIsM30iIGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzICcKKyAgICAgICAgICAgICAgICAnb2Ygb25lXG4nCisgICAgICAgICAgICAgICAgJyAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyAnCisgICAgICAgICAgICAgICAgJ2FyZSBub3RcbicKKyAgICAgICAgICAgICAgICAnICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgJworICAgICAgICAgICAgICAgICdvcmRlcmluZ1xuJworICAgICAgICAgICAgICAgICcgIChmb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSAnCisgICAgICAgICAgICAgICAgJ3VuZGVmaW5lZFxuJworICAgICAgICAgICAgICAgICcgIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgQ29tcGFyaXNvbiBvZiBzZXRzIGVuZm9yY2VzIHJlZmxleGl2aXR5IG9mIGl0cyBlbGVtZW50cy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTW9zdCBvdGhlciBidWlsdC1pbiB0eXBlcyBoYXZlIG5vIGNvbXBhcmlzb24gbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkLFxuJworICAgICAgICAgICAgICAgICcgIHNvIHRoZXkgaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVXNlci1kZWZpbmVkIGNsYXNzZXMgdGhhdCBjdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciAnCisgICAgICAgICAgICAgICAgJ3Nob3VsZFxuJworICAgICAgICAgICAgICAgICdmb2xsb3cgc29tZSBjb25zaXN0ZW5jeSBydWxlcywgaWYgcG9zc2libGU6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEVxdWFsaXR5IGNvbXBhcmlzb24gc2hvdWxkIGJlIHJlZmxleGl2ZS4gSW4gb3RoZXIgd29yZHMsICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpY2FsXG4nCisgICAgICAgICAgICAgICAgJyAgb2JqZWN0cyBzaG91bGQgY29tcGFyZSBlcXVhbDpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggaXMgeSIgaW1wbGllcyAieCA9PSB5IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBDb21wYXJpc29uIHNob3VsZCBiZSBzeW1tZXRyaWMuIEluIG90aGVyIHdvcmRzLCB0aGUgJworICAgICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAgICAnICBleHByZXNzaW9ucyBzaG91bGQgaGF2ZSB0aGUgc2FtZSByZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID09IHkiIGFuZCAieSA9PSB4IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCAhPSB5IiBhbmQgInkgIT0geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPCB5IiBhbmQgInkgPiB4IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA8PSB5IiBhbmQgInkgPj0geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogQ29tcGFyaXNvbiBzaG91bGQgYmUgdHJhbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgJyhub24tZXhoYXVzdGl2ZSlcbicKKyAgICAgICAgICAgICAgICAnICBleGFtcGxlcyBpbGx1c3RyYXRlIHRoYXQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID4geSBhbmQgeSA+IHoiIGltcGxpZXMgInggPiB6IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA8IHkgYW5kIHkgPD0geiIgaW1wbGllcyAieCA8IHoiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEludmVyc2UgY29tcGFyaXNvbiBzaG91bGQgcmVzdWx0IGluIHRoZSBib29sZWFuIG5lZ2F0aW9uLiAnCisgICAgICAgICAgICAgICAgJ0luIG90aGVyXG4nCisgICAgICAgICAgICAgICAgJyAgd29yZHMsIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICdyZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID09IHkiIGFuZCAibm90IHggIT0geSJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPCB5IiBhbmQgIm5vdCB4ID49IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID4geSIgYW5kICJub3QgeCA8PSB5IiAoZm9yIHRvdGFsIG9yZGVyaW5nKVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBUaGUgbGFzdCB0d28gZXhwcmVzc2lvbnMgYXBwbHkgdG8gdG90YWxseSBvcmRlcmVkICcKKyAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnMgKGUuZy5cbicKKyAgICAgICAgICAgICAgICAnICB0byBzZXF1ZW5jZXMsIGJ1dCBub3QgdG8gc2V0cyBvciBtYXBwaW5ncykuIFNlZSBhbHNvIHRoZVxuJworICAgICAgICAgICAgICAgICcgICJ0b3RhbF9vcmRlcmluZygpIiBkZWNvcmF0b3IuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdQeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy4gSW4gZmFjdCwgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnbm90LWEtbnVtYmVyIHZhbHVlcyBhcmUgYW4gZXhhbXBsZSBmb3Igbm90IGZvbGxvd2luZyB0aGVzZSAnCisgICAgICAgICAgICAgICAgJ3J1bGVzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ01lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiAnCisgICAgICAgICAgICAgICAgJ3MiXG4nCisgICAgICAgICAgICAgICAgJ2V2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSAnCisgICAgICAgICAgICAgICAgJ290aGVyd2lzZS4gICJ4XG4nCisgICAgICAgICAgICAgICAgJ25vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICdhbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAnCisgICAgICAgICAgICAgICAgJyJpbiIgdGVzdHNcbicKKyAgICAgICAgICAgICAgICAnd2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgJworICAgICAgICAgICAgICAgICdzdWNoIGFzXG4nCisgICAgICAgICAgICAgICAgJ2xpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuJworICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlICcKKyAgICAgICAgICAgICAgICAnZm9yIGUgaW5cbicKKyAgICAgICAgICAgICAgICAneSkiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5ICcKKyAgICAgICAgICAgICAgICAnaWYgKngqIGlzXG4nCisgICAgICAgICAgICAgICAgJ2Egc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9ICcKKyAgICAgICAgICAgICAgICAnLTEiLiAgRW1wdHlcbicKKyAgICAgICAgICAgICAgICAnc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyICcKKyAgICAgICAgICAgICAgICAnc3RyaW5nLFxuJworICAgICAgICAgICAgICAgICdzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgJworICAgICAgICAgICAgICAgICdtZXRob2QsICJ4XG4nCisgICAgICAgICAgICAgICAgJ2luIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiAnCisgICAgICAgICAgICAgICAgJ2J1dCBkb1xuJworICAgICAgICAgICAgICAgICdkZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggJworICAgICAgICAgICAgICAgICcieCA9PSB6IlxuJworICAgICAgICAgICAgICAgICdpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgICAgICAgICAnZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgJworICAgICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdMYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSAnCisgICAgICAgICAgICAgICAgJ25vbi1cbicKKyAgICAgICAgICAgICAgICAnbmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsICcKKyAgICAgICAgICAgICAgICAnbG93ZXJcbicKKyAgICAgICAgICAgICAgICAnaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSAnCisgICAgICAgICAgICAgICAgJ290aGVyXG4nCisgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgJworICAgICAgICAgICAgICAgICdleGNlcHRpb24pLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlICcKKyAgICAgICAgICAgICAgICAndmFsdWUgb2ZcbicKKyAgICAgICAgICAgICAgICAnImluIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdJZGVudGl0eSBjb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9ycyAiaXMiIGFuZCAiaXMgbm90IiB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6ICJ4ICcKKyAgICAgICAgICAgICAgICAnaXMgeSIgaXNcbicKKyAgICAgICAgICAgICAgICAndHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgT2JqZWN0ICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpdHlcbicKKyAgICAgICAgICAgICAgICAnaXMgZGV0ZXJtaW5lZCB1c2luZyB0aGUgImlkKCkiIGZ1bmN0aW9uLiAgInggaXMgbm90IHkiIHlpZWxkcyAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCisgJ2NvbXBvdW5kJzogJ1xuJworICAgICAgICAgICAgICdDb21wb3VuZCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NvbXBvdW5kIHN0YXRlbWVudHMgY29udGFpbiAoZ3JvdXBzIG9mKSBvdGhlciBzdGF0ZW1lbnRzOyB0aGV5ICcKKyAgICAgICAgICAgICAnYWZmZWN0XG4nCisgICAgICAgICAgICAgJ29yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgJworICAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgICdnZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluICcKKyAgICAgICAgICAgICAnc2ltcGxlXG4nCisgICAgICAgICAgICAgJ2luY2FybmF0aW9ucyBhIHdob2xlIGNvbXBvdW5kIHN0YXRlbWVudCBtYXkgYmUgY29udGFpbmVkIGluIG9uZSAnCisgICAgICAgICAgICAgJ2xpbmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImlmIiwgIndoaWxlIiBhbmQgImZvciIgc3RhdGVtZW50cyBpbXBsZW1lbnQgdHJhZGl0aW9uYWwgJworICAgICAgICAgICAgICdjb250cm9sXG4nCisgICAgICAgICAgICAgJ2Zsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yICcKKyAgICAgICAgICAgICAnY2xlYW51cFxuJworICAgICAgICAgICAgICdjb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSAid2l0aCIgc3RhdGVtZW50ICcKKyAgICAgICAgICAgICAnYWxsb3dzIHRoZVxuJworICAgICAgICAgICAgICdleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhIGJsb2NrICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5ICcKKyAgICAgICAgICAgICAnY29tcG91bmRcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkEgY29tcG91bmQgc3RhdGVtZW50IGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlICdjbGF1c2VzLicgIEEgIgorICAgICAgICAgICAgICdjbGF1c2VcbicKKyAgICAgICAgICAgICAiY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgJ3N1aXRlLicgIFRoZSBjbGF1c2UgaGVhZGVycyBvZiBhXG4iCisgICAgICAgICAgICAgJ3BhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gJworICAgICAgICAgICAgICdsZXZlbC5cbicKKyAgICAgICAgICAgICAnRWFjaCBjbGF1c2UgaGVhZGVyIGJlZ2lucyB3aXRoIGEgdW5pcXVlbHkgaWRlbnRpZnlpbmcga2V5d29yZCAnCisgICAgICAgICAgICAgJ2FuZCBlbmRzXG4nCisgICAgICAgICAgICAgJ3dpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuJworICAgICAgICAgICAgICdjbGF1c2UuICBBIHN1aXRlIGNhbiBiZSBvbmUgb3IgbW9yZSBzZW1pY29sb24tc2VwYXJhdGVkIHNpbXBsZVxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSAnCisgICAgICAgICAgICAgImhlYWRlcidzXG4iCisgICAgICAgICAgICAgJ2NvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiAnCisgICAgICAgICAgICAgJ3N1YnNlcXVlbnRcbicKKyAgICAgICAgICAgICAnbGluZXMuICBPbmx5IHRoZSBsYXR0ZXIgZm9ybSBvZiBhIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCAnCisgICAgICAgICAgICAgJ2NvbXBvdW5kXG4nCisgICAgICAgICAgICAgInN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuJ3QgIgorICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICdjbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkICcKKyAgICAgICAgICAgICAnYmVsb25nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluICcKKyAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICdjb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1N1bW1hcml6aW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHdoaWxlX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZm9yX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mdW5jZGVmXG4nCisgICAgICAgICAgICAgJyAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQrIERFREVOVFxuJworICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5IGZvbGxvd2VkICcKKyAgICAgICAgICAgICAnYnkgYVxuJworICAgICAgICAgICAgICciREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2JlZ2luXG4nCisgICAgICAgICAgICAgJ3dpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuJworICAgICAgICAgICAgICdhbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAncmVxdWlyaW5nIG5lc3RlZCAiaWYiIHN0YXRlbWVudHMgdG8gYmUgaW5kZW50ZWQpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyAnCisgICAgICAgICAgICAgJ3BsYWNlc1xuJworICAgICAgICAgICAgICdlYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9ucyBvbmVcbicKKyAgICAgICAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgJworICAgICAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yICcKKyAgICAgICAgICAgICAnZXZhbHVhdGVkKS5cbicKKyAgICAgICAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdHJ1ZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVzIHRoZVxuJworICAgICAgICAgICAgICdmaXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgJworICAgICAgICAgICAgICd0aW1lXG4nCisgICAgICAgICAgICAgJ2l0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkXG4nCisgICAgICAgICAgICAgJ2FuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgJworICAgICAgICAgICAgICdiYWNrXG4nCisgICAgICAgICAgICAgJ3RvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAnKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgJworICAgICAgICAgICAgICdzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gJworICAgICAgICAgICAgICdpdGVyYWJsZVxuJworICAgICAgICAgICAgICdvYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuJworICAgICAgICAgICAgICciZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggJworICAgICAgICAgICAgICdpdGVtXG4nCisgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJ2l0ZXJhdG9yLiAgRWFjaFxuJworICAgICAgICAgICAgICdpdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCAnCisgICAgICAgICAgICAgJ3J1bGVzXG4nCisgICAgICAgICAgICAgJ2ZvciBhc3NpZ25tZW50cyAoc2VlIEFzc2lnbm1lbnQgc3RhdGVtZW50cyksIGFuZCB0aGVuIHRoZSBzdWl0ZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgJworICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICdzZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgJworICAgICAgICAgICAgICdleGNlcHRpb24pLFxuJworICAgICAgICAgICAgICd0aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAnbG9vcFxuJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kICcKKyAgICAgICAgICAgICAnY29udGludWVzXG4nCisgICAgICAgICAgICAgJ3dpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyAnCisgICAgICAgICAgICAgJ25leHRcbicKKyAgICAgICAgICAgICAnaXRlbS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgJworICAgICAgICAgICAgICdsaXN0LlxuJworICAgICAgICAgICAgICdUaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyAnCisgICAgICAgICAgICAgJ2luY2x1ZGluZ1xuJworICAgICAgICAgICAgICd0aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmb3IgaSBpbiByYW5nZSgxMCk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAgICAgICcgICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCAnCisgICAgICAgICAgICAgJ3RoZSBuZXh0XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzICcKKyAgICAgICAgICAgICAnZmluaXNoZWQsXG4nCisgICAgICAgICAgICAgJ2J1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkICcKKyAgICAgICAgICAgICAndG8gYXRcbicKKyAgICAgICAgICAgICAnYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAiaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbCdzICIKKyAgICAgICAgICAgICAnImZvciBpXG4nCisgICAgICAgICAgICAgJzo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsICcKKyAgICAgICAgICAgICAnMl0iLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gICcKKyAgICAgICAgICAgICAnQW5cbicKKyAgICAgICAgICAgICAnICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgJworICAgICAgICAgICAgICduZXh0LFxuJworICAgICAgICAgICAgICcgIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgJworICAgICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAgICAnICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzICcKKyAgICAgICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgICAgICAnICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtICcKKyAgICAgICAgICAgICAnZnJvbSB0aGVcbicKKyAgICAgICAgICAgICAnICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlICcKKyAgICAgICAgICAgICAnaW5kZXggb2ZcbicKKyAgICAgICAgICAgICAnICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgJ2xvb3AuXG4nCisgICAgICAgICAgICAgJyAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbicKKyAgICAgICAgICAgICAnICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgZm9yIHggaW4gYVs6XTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgJworICAgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICAgJ2ZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuJworICAgICAgICAgICAgICcgICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiICcKKyAgICAgICAgICAgICAnc3VpdGUpK1xuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuICcKKyAgICAgICAgICAgICAnV2hlbiBub1xuJworICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCAnCisgICAgICAgICAgICAgJ2ZvciBhblxuJworICAgICAgICAgICAgICdleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZXNcbicKKyAgICAgICAgICAgICAnaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24tXG4nCisgICAgICAgICAgICAgJ2xlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuJworICAgICAgICAgICAgICdleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgJworICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ2lzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSAnCisgICAgICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgICAgICdvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyAnCisgICAgICAgICAgICAgJ2NvbXBhdGlibGVcbicKKyAgICAgICAgICAgICAnd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uICcKKyAgICAgICAgICAgICAnc3RhY2suXG4nCisgICAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZVxuJworICAgICAgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgJworICAgICAgICAgICAgICdjYW5jZWxlZCBhbmRcbicKKyAgICAgICAgICAgICAnYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSAnCisgICAgICAgICAgICAgJ2FuZCBvblxuJworICAgICAgICAgICAgICd0aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCAnCisgICAgICAgICAgICAgJ3JhaXNlZFxuJworICAgICAgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG9cbicKKyAgICAgICAgICAgICAndGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZSwgaWZcbicKKyAgICAgICAgICAgICAicHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG4iCisgICAgICAgICAgICAgJ2NsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyAnCisgICAgICAgICAgICAgJ2Jsb2NrIGlzXG4nCisgICAgICAgICAgICAgJ3JlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJyhUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgJworICAgICAgICAgICAgICdleGNlcHRpb24sXG4nCisgICAgICAgICAgICAgJ2FuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnb3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgJworICAgICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgICAgJ2F0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAgICAgICcgICAgICAgZm9vXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3YXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0IEUgYXMgTjpcbicKKyAgICAgICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBmb29cbicKKyAgICAgICAgICAgICAnICAgICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgZGVsIE5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gJworICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICdhYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgJworICAgICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgICAgJ2JlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhICcKKyAgICAgICAgICAgICAncmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgJ2N5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSAnCisgICAgICAgICAgICAgJ2FsaXZlXG4nCisgICAgICAgICAgICAgJ3VudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJCZWZvcmUgYW4gZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuIgorICAgICAgICAgICAgICdleGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgJworICAgICAgICAgICAgICd2aWFcbicKKyAgICAgICAgICAgICAnInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nICcKKyAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSkgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ3Byb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ3Jlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuICcKKyAgICAgICAgICAgICAncmV0dXJuaW5nXG4nCisgICAgICAgICAgICAgJ2Zyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyAnCisgICAgICAgICAgICAgJ29mZlxuJworICAgICAgICAgICAgICd0aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ25vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgJworICAgICAgICAgICAgICdUaGUgInRyeSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gICcKKyAgICAgICAgICAgICAnSWYgYW5cbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiAgSWZcbicKKyAgICAgICAgICAgICAndGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlICcKKyAgICAgICAgICAgICAnc2F2ZWRcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaXMgZGlzY2FyZGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgICAgICAxLzBcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gNDJcbicKKyAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgJyAgID4+PiBmKClcbicKKyAgICAgICAgICAgICAnICAgNDJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2R1cmluZ1xuJworICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgJworICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAnYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgJworICAgICAgICAgICAgICdpbGxlZ2FsIGluXG4nCisgICAgICAgICAgICAgJ3RoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY3VycmVudFxuJworICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSAnCisgICAgICAgICAgICAgJ2Z1dHVyZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJyJyZXR1cm4iXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZC4gIFNpbmNlIHRoZSAiZmluYWxseSIgY2xhdXNlIGFsd2F5cyBleGVjdXRlcywgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2JlIHRoZVxuJworICAgICAgICAgICAgICdsYXN0IG9uZSBleGVjdXRlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBkZWYgZm9vKCk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ3RyeSdcbiIKKyAgICAgICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ2ZpbmFsbHknXG4iCisgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICcgICA+Pj4gZm9vKClcbicKKyAgICAgICAgICAgICAiICAgJ2ZpbmFsbHknXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbicKKyAgICAgICAgICAgICAnRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0byAnCisgICAgICAgICAgICAgJ2dlbmVyYXRlXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gVGhlIHJhaXNlIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayAnCisgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAnbWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiBXaXRoICcKKyAgICAgICAgICAgICAnU3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ0NvbnRleHQgTWFuYWdlcnMpLiBUaGlzIGFsbG93cyBjb21tb24gJworICAgICAgICAgICAgICcidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ3VzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZCBmb3IgY29udmVuaWVudCByZXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgJworICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICcKKyAgICAgICAgICAgICAnIndpdGhfaXRlbSIpXG4nCisgICAgICAgICAgICAgJyAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuJworICAgICAgICAgICAgICcgICB2YWx1ZSBmcm9tICJfX2VudGVyX18oKSIgaXMgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICcKKyAgICAgICAgICAgICAnIl9fZW50ZXJfXygpIlxuJworICAgICAgICAgICAgICcgICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgJworICAgICAgICAgICAgICdhbHdheXMgYmVcbicKKyAgICAgICAgICAgICAnICAgICBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yICcKKyAgICAgICAgICAgICAnb2NjdXJyaW5nXG4nCisgICAgICAgICAgICAgJyAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICcgICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgJyAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICcgICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgJ3JlcmFpc2VkLlxuJworICAgICAgICAgICAgICcgICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4nCisgICAgICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gJworICAgICAgICAgICAgICdleGNlcHRpb24sIHRoZVxuJworICAgICAgICAgICAgICcgICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ3Byb2NlZWRzXG4nCisgICAgICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJ211bHRpcGxlICJ3aXRoIiBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICAgICAnICAgICAgIHdpdGggQigpIGFzIGI6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgJworICAgICAgICAgICAgICdleHByZXNzaW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAnCisgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmdW5jZGVmICAgICAgICAgICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICAgICAgICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICAgICAgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgJworICAgICAgICAgICAgICdbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4nCisgICAgICAgICAgICAgJyAgIGRvdHRlZF9uYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0ICAgICAgICAgIDo6PSBkZWZwYXJhbWV0ZXIgKCIsIiBkZWZwYXJhbWV0ZXIpKiAnCisgICAgICAgICAgICAgJ1siLCIgW3BhcmFtZXRlcl9saXN0X3N0YXJhcmdzXV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3MgOjo9ICIqIiBbcGFyYW1ldGVyXSAoIiwiICcKKyAgICAgICAgICAgICAnZGVmcGFyYW1ldGVyKSogWyIsIiBbIioqIiBwYXJhbWV0ZXIgWyIsIl1dXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlciBbIiwiXVxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXIgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGRlZnBhcmFtZXRlciAgICAgICAgICAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBmdW5jbmFtZSAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ2JpbmRzXG4nCisgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJyhhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgJworICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAnYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzICcKKyAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICdyZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gbmFtZVxuJworICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkICcKKyAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdleGNlcHQgdGhhdCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgbm90IHRlbXBvcmFyaWx5IGJvdW5kIHRvICcKKyAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAnImZ1bmMiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbicKKyAgICAgICAgICAgICAnKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3ZhbHVlcy4iXG4nCisgICAgICAgICAgICAgJ0ZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICcqYXJndW1lbnQqIG1heVxuJworICAgICAgICAgICAgICJiZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXIncyBkZWZhdWx0ICIKKyAgICAgICAgICAgICAndmFsdWUgaXNcbicKKyAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2lzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgJworICAgICAgICAgICAgICdncmFtbWFyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJyJwcmUtXG4nCisgICAgICAgICAgICAgJ2NvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgJworICAgICAgICAgICAgICdpbXBvcnRhbnRcbicKKyAgICAgICAgICAgICAndG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCAnCisgICAgICAgICAgICAgJ2FzIGFcbicKKyAgICAgICAgICAgICAnbGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAnYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0ICcKKyAgICAgICAgICAgICAnbW9kaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzICcKKyAgICAgICAgICAgICAndG8gdXNlXG4nCisgICAgICAgICAgICAgJyJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24sIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4nCisgICAgICAgICAgICAgJyAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4nCisgICAgICAgICAgICAgJyAgICAgICByZXR1cm4gcGVuZ3VpblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAnQ2FsbHMuXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW5cbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20gJworICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtICIiKmlkZW50aWZpZXIiIiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueSBleGNlc3MgJworICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiBJZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICciIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3IG9yZGVyZWRcbicKKyAgICAgICAgICAgICAnbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhICcKKyAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgJ2VtcHR5IG1hcHBpbmcgb2YgdGhlIHNhbWUgdHlwZS4gIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3JcbicKKyAgICAgICAgICAgICAnIiIqaWRlbnRpZmllciIiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgJworICAgICAgICAgICAgICdwYXNzZWRcbicKKyAgICAgICAgICAgICAndXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1BhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiAnCisgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5ICcKKyAgICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICAgICdsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyAnCisgICAgICAgICAgICAgJ21heVxuJworICAgICAgICAgICAgICdiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlICcKKyAgICAgICAgICAgICAnY29kZS5cbicKKyAgICAgICAgICAgICAnVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuJworICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzJyBuYW1lcyBpbiB0aGUgIgorICAgICAgICAgICAgICciX19hbm5vdGF0aW9uc19fIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgJworICAgICAgICAgICAgICdib3VuZFxuJworICAgICAgICAgICAgICd0byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uIExhbWJkYXMuICBOb3RlIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gJworICAgICAgICAgICAgICdkZWZpbml0aW9uO1xuJworICAgICAgICAgICAgICdhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSAnCisgICAgICAgICAgICAgJ2l0XG4nCisgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIKKyAgICAgICAgICAgICAnIiJkZWYiIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICdpbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiBOYW1pbmcgYW5kIGJpbmRpbmcgZm9yICcKKyAgICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgJ3R5cGUgaGllcmFyY2h5KTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAnCisgICAgICAgICAgICAgJyI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBpbmhlcml0YW5jZSA6Oj0gIigiIFthcmd1bWVudF9saXN0XSAiKSJcbicKKyAgICAgICAgICAgICAnICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSAnCisgICAgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAgICAndXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgTWV0YWNsYXNzZXMgZm9yIG1vcmVcbicKKyAgICAgICAgICAgICAnYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJ29iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2UgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJ2luaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOlxuJworICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vKG9iamVjdCk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJUaGUgY2xhc3MncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAiCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnTmFtaW5nIGFuZCBiaW5kaW5nKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbicKKyAgICAgICAgICAgICAiZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3MncyBzdWl0ZSBmaW5pc2hlcyAiCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiwgaXRzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuICcKKyAgICAgICAgICAgICAnWzRdIEFcbicKKyAgICAgICAgICAgICAnY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlICcKKyAgICAgICAgICAgICAnYmFzZVxuJworICAgICAgICAgICAgICdjbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAnVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsICcKKyAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAnbmFtZXNwYWNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9yZGVyIGluIHdoaWNoIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNsYXNzIGJvZHkgaXNcbicKKyAgICAgICAgICAgICAncHJlc2VydmVkIGluIHRoZSBuZXcgY2xhc3NcJ3MgIl9fZGljdF9fIi4gIE5vdGUgdGhhdCB0aGlzIGlzICcKKyAgICAgICAgICAgICAncmVsaWFibGVcbicKKyAgICAgICAgICAgICAnb25seSByaWdodCBhZnRlciB0aGUgY2xhc3MgaXMgY3JlYXRlZCBhbmQgb25seSBmb3IgY2xhc3NlcyB0aGF0ICcKKyAgICAgICAgICAgICAnd2VyZVxuJworICAgICAgICAgICAgICdkZWZpbmVkIHVzaW5nIHRoZSBkZWZpbml0aW9uIHN5bnRheC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgbWV0YWNsYXNzZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBjbGFzcyBGb286IHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIHJvdWdobHkgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgICAgJyAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBpcyB0aGVuIGJvdW5kIHRvIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgJ25hbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uICIKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSAnCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZXNcbicKKyAgICAgICAgICAgICAnY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ2luc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gJworICAgICAgICAgICAgICciInNlbGYubmFtZSIiLFxuJworICAgICAgICAgICAgICdhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICAgJ3doZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzICcKKyAgICAgICAgICAgICAnZGVmYXVsdHNcbicKKyAgICAgICAgICAgICAnZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCAnCisgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQgcmVzdWx0cy4gIERlc2NyaXB0b3JzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxuJworICAgICAgICAgICAgICd2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuJworICAgICAgICAgICAgICcgIENsYXNzIERlY29yYXRvcnNcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb3JvdXRpbmVzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb3JvdXRpbmUgZnVuY3Rpb24gZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmNfZnVuY2RlZiA6Oj0gW2RlY29yYXRvcnNdICJhc3luYyIgImRlZiIgZnVuY25hbWUgIigiICcKKyAgICAgICAgICAgICAnW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdFeGVjdXRpb24gb2YgUHl0aG9uIGNvcm91dGluZXMgY2FuIGJlIHN1c3BlbmRlZCBhbmQgcmVzdW1lZCBhdCAnCisgICAgICAgICAgICAgJ21hbnlcbicKKyAgICAgICAgICAgICAncG9pbnRzIChzZWUgKmNvcm91dGluZSopLiAgSW4gdGhlIGJvZHkgb2YgYSBjb3JvdXRpbmUsIGFueSAnCisgICAgICAgICAgICAgJyJhd2FpdCIgYW5kXG4nCisgICAgICAgICAgICAgJyJhc3luYyIgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyAiYXdhaXQiICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsXG4nCisgICAgICAgICAgICAgJyJhc3luYyBmb3IiIGFuZCAiYXN5bmMgd2l0aCIgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb3JvdXRpbmUgJworICAgICAgICAgICAgICdib2RpZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbnMgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiIHN5bnRheCBhcmUgYWx3YXlzIGNvcm91dGluZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiAiYXdhaXQiIG9yICJhc3luYyIgJworICAgICAgICAgICAgICdrZXl3b3Jkcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgInlpZWxkIiBleHByZXNzaW9ucyBpbiAiYXN5bmMgZGVmIlxuJworICAgICAgICAgICAgICdjb3JvdXRpbmVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jIGRlZiBmdW5jKHBhcmFtMSwgcGFyYW0yKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGRvX3N0dWZmKClcbicKKyAgICAgICAgICAgICAnICAgICAgIGF3YWl0IHNvbWVfY29yb3V0aW5lKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImFzeW5jIGZvciIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jX2Zvcl9zdG10IDo6PSAiYXN5bmMiIGZvcl9zdG10XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gJworICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAnKml0ZXIqIGltcGxlbWVudGF0aW9uLCBhbmQgKmFzeW5jaHJvbm91cyBpdGVyYXRvciogY2FuIGNhbGxcbicKKyAgICAgICAgICAgICAnYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzICpuZXh0KiBtZXRob2QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImFzeW5jIGZvciIgc3RhdGVtZW50IGFsbG93cyBjb252ZW5pZW50IGl0ZXJhdGlvbiBvdmVyXG4nCisgICAgICAgICAgICAgJ2FzeW5jaHJvbm91cyBpdGVyYXRvcnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvZGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luYyBmb3IgVEFSR0VUIGluIElURVI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICcgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0syXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGl0ZXIgPSAoSVRFUilcbicKKyAgICAgICAgICAgICAnICAgaXRlciA9IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bm5pbmcgPSBUcnVlXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlIHJ1bm5pbmc6XG4nCisgICAgICAgICAgICAgJyAgICAgICB0cnk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgVEFSR0VUID0gYXdhaXQgdHlwZShpdGVyKS5fX2FuZXh0X18oaXRlcilcbicKKyAgICAgICAgICAgICAnICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcnVubmluZyA9IEZhbHNlXG4nCisgICAgICAgICAgICAgJyAgICAgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJyAgIGVsc2U6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DSzJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvICJfX2FpdGVyX18oKSIgYW5kICJfX2FuZXh0X18oKSIgZm9yIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJhc3luYyBmb3IiIHN0YXRlbWVudCBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnImFzeW5jIGRlZiIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJhc3luYyB3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jX3dpdGhfc3RtdCA6Oj0gImFzeW5jIiB3aXRoX3N0bXRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FuICphc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyKiBpcyBhICpjb250ZXh0IG1hbmFnZXIqIHRoYXQgaXMgJworICAgICAgICAgICAgICdhYmxlXG4nCisgICAgICAgICAgICAgJ3RvIHN1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyAqZW50ZXIqIGFuZCAqZXhpdCogbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29kZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBtZ3IgPSAoRVhQUilcbicKKyAgICAgICAgICAgICAnICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fXG4nCisgICAgICAgICAgICAgJyAgIGFlbnRlciA9IHR5cGUobWdyKS5fX2FlbnRlcl9fKG1ncilcbicKKyAgICAgICAgICAgICAnICAgZXhjID0gVHJ1ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVkFSID0gYXdhaXQgYWVudGVyXG4nCisgICAgICAgICAgICAgJyAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdDpcbicKKyAgICAgICAgICAgICAnICAgICAgIGlmIG5vdCBhd2FpdCBhZXhpdChtZ3IsICpzeXMuZXhjX2luZm8oKSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcmFpc2VcbicKKyAgICAgICAgICAgICAnICAgZWxzZTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGF3YWl0IGFleGl0KG1nciwgTm9uZSwgTm9uZSwgTm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvICJfX2FlbnRlcl9fKCkiIGFuZCAiX19hZXhpdF9fKCkiIGZvciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICciYXN5bmMgZGVmIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCA0OTIqKiAtIENvcm91dGluZXMgd2l0aCBhc3luYyBhbmQgYXdhaXQgc3ludGF4XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1sxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzXG4nCisgICAgICAgICAgICAgJyAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4nCisgICAgICAgICAgICAgJyAgICBleGNlcHRpb24uIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgJworICAgICAgICAgICAgICdsb3N0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuJworICAgICAgICAgICAgICcgICAgImJyZWFrIiBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbicKKyAgICAgICAgICAgICAnICAgIGZ1bmN0aW9uIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgIl9fZG9jX18iXG4nCisgICAgICAgICAgICAgIiAgICBhdHRyaWJ1dGUgYW5kIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb24ncyAqZG9jc3RyaW5nKi5cbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1s0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJyAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyAiX19kb2NfXyIgaXRlbSAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICIgICAgdGhlcmVmb3JlIHRoZSBjbGFzcydzICpkb2NzdHJpbmcqLlxuIiwKKyAnY29udGV4dC1tYW5hZ2Vycyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdXaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0EgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dCB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ2JlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0IG1hbmFnZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICdoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgJworICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dFxuJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICAgICAnbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RhdGVtZW50KSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZWlyIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN0b3JpbmcgdmFyaW91c1xuJworICAgICAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgJworICAgICAgICAgICAgICAgICAgICAgJ2Nsb3Npbmcgb3BlbmVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnZmlsZXMsIGV0Yy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICAgICAnTWFuYWdlciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19lbnRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2QncyByZXR1cm4gdmFsdWUgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICd0YXJnZXQocylcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmICcKKyAgICAgICAgICAgICAgICAgICAgICdhbnkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnZXhpdGVkLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ3N1cHByZXNzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCAnCisgICAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICAgJ3Byb2Nlc3NlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXNzZWQtaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICIgICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LlxuIgorICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nLAorICdjb250aW51ZSc6ICdcbicKKyAgICAgICAgICAgICAnVGhlICJjb250aW51ZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29udGludWVfc3RtdCA6Oj0gImNvbnRpbnVlIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnImNvbnRpbnVlIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICcKKyAgICAgICAgICAgICAnIndoaWxlIlxuJworICAgICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgJworICAgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICduZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbicKKyAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgJ3JlYWxseVxuJworICAgICAgICAgICAgICdzdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKKyAnY29udmVyc2lvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0FyaXRobWV0aWMgY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnV2hlbiBhIGRlc2NyaXB0aW9uIG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0b3IgYmVsb3cgdXNlcyB0aGUgJworICAgICAgICAgICAgICAgICdwaHJhc2VcbicKKyAgICAgICAgICAgICAgICAnInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGlzICcKKyAgICAgICAgICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgICAgICAgICAndGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIGFzICcKKyAgICAgICAgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyAnCisgICAgICAgICAgICAgICAgJ2NvbnZlcnRlZCB0b1xuJworICAgICAgICAgICAgICAgICcgIGNvbXBsZXg7XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIG90aGVyd2lzZSwgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICcgIG90aGVyIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgJworICAgICAgICAgICAgICAgICduZWNlc3NhcnkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdTb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhICcKKyAgICAgICAgICAgICAgICAnc3RyaW5nIGFzIGFcbicKKyAgICAgICAgICAgICAgICAibGVmdCBhcmd1bWVudCB0byB0aGUgJyUnIG9wZXJhdG9yKS4gIEV4dGVuc2lvbnMgbXVzdCBkZWZpbmUgIgorICAgICAgICAgICAgICAgICd0aGVpciBvd25cbicKKyAgICAgICAgICAgICAgICAnY29udmVyc2lvbiBiZWhhdmlvci5cbicsCisgJ2N1c3RvbWl6YXRpb24nOiAnXG4nCisgICAgICAgICAgICAgICAgICAnQmFzaWMgY3VzdG9taXphdGlvblxuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIgaXMgYVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgJworICAgICAgICAgICAgICAgICAgJ2FzIHN1Y2gpXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCAnCisgICAgICAgICAgICAgICAgICAnYXMgaXRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgJworICAgICAgICAgICAgICAgICAgJ3Bhc3NlZCB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gICcKKyAgICAgICAgICAgICAgICAgICdUaGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICcodXN1YWxseSBhblxuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIG9mICpjbHMqKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzcyBieVxuJworICAgICAgICAgICAgICAgICAgJyAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3ICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgJworICAgICAgICAgICAgICAgICAgJ3RoZW4gdGhlIG5ld1xuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiAnCisgICAgICAgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgJ2NyZWF0aW9uLiAgSXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluICcKKyAgICAgICAgICAgICAgICAgICdvcmRlciB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIpLCBidXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSAnCisgICAgICAgICAgICAgICAgICAnY2xhc3MgaGFzIGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2QsIGlmXG4nCisgICAgICAgICAgICAgICAgICAnICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyICcKKyAgICAgICAgICAgICAgICAgICdpbml0aWFsaXphdGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluICcKKyAgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gJworICAgICAgICAgICAgICAgICAgJ2N1c3RvbWl6ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgJworICAgICAgICAgICAgICAgICAgJyJfX2luaXRfXygpIjsgZG9pbmcgc29cbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAnaXMgYWxzb1xuJworICAgICAgICAgICAgICAgICAgJyAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSBjYWxsIGl0XG4nCisgICAgICAgICAgICAgICAgICAnICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBieVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCAnCisgICAgICAgICAgICAgICAgICAnYXQgYSBsYXRlclxuJworICAgICAgICAgICAgICAgICAgJyAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlZCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgJworICAgICAgICAgICAgICAgICAgJ2V4aXN0IHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZm9ybWVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2xhdHRlciBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gICcKKyAgICAgICAgICAgICAgICAgICdTb21lIGNvbW1vblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gJworICAgICAgICAgICAgICAgICAgJ29iamVjdCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cyAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdwYXJlbnQgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdzdGFjayBmcmFtZSBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgJworICAgICAgICAgICAgICAgICAgJ3N0b3JlZCBpblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhICcKKyAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuICcKKyAgICAgICAgICAgICAgICAgICd1bmhhbmRsZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCAnCisgICAgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICAnCisgICAgICAgICAgICAgICAgICAnVGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyAnCisgICAgICAgICAgICAgICAgICAndGhlIGN5Y2xlcztcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAndGhpcmQgY2FuXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gJworICAgICAgICAgICAgICAgICAgJ0NpcmN1bGFyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCAnCisgICAgICAgICAgICAgICAgICAndXAgd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdCdzIG9uIGJ5ICIKKyAgICAgICAgICAgICAgICAgICdkZWZhdWx0KS4gUmVmZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgJworICAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIHRvcGljLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyICcKKyAgICAgICAgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyICcKKyAgICAgICAgICAgICAgICAgICdkdXJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkICcKKyAgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgJworICAgICAgICAgICAgICAgICAgJ2ludm9rZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gJworICAgICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJyJfX2RlbF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3MgJworICAgICAgICAgICAgICAgICAgJ29mIGJlaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICAnCisgICAgICAgICAgICAgICAgICAnRm9yIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlICcKKyAgICAgICAgICAgICAgICAgICdtaW5pbXVtIG5lZWRlZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24gMS41LFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggJworICAgICAgICAgICAgICAgICAgJ2Egc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICAnZ2xvYmFscyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCAnCisgICAgICAgICAgICAgICAgICAndGhpcyBtYXlcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCAnCisgICAgICAgICAgICAgICAgICAnYXZhaWxhYmxlIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JlcHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgJworICAgICAgICAgICAgICAgICAgJyJvZmZpY2lhbCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLCAnCisgICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICd1c2VkIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1cbicKKyAgICAgICAgICAgICAgICAgICcgICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiAnCisgICAgICAgICAgICAgICAgICAnVGhlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgJyJfX3JlcHJfXygpIiBidXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3QgIl9fc3RyX18oKSIsIHRoZW4gIl9fcmVwcl9fKCkiIGlzIGFsc28gdXNlZCB3aGVuIGFuICcKKyAgICAgICAgICAgICAgICAgICciaW5mb3JtYWwiXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgICdyZXF1aXJlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAgICAgICciZm9ybWF0KCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgJworICAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICAndGhlcmUgaXMgbm9cbicKKyAgICAgICAgICAgICAgICAgICcgICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbjogYVxuJworICAgICAgICAgICAgICAgICAgJyAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgJworICAgICAgICAgICAgICAgICAgJyJvYmplY3QiXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ieXRlc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uIG9mIGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24sIGFuZCBieSAnCisgICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uLFxuJworICAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRpb24gb2YgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICcic3RyLmZvcm1hdCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiIHN0cmluZyByZXByZXNlbnRhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGRlc2lyZWQuIFRoZSAnCisgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGwgZWl0aGVyICcKKyAgICAgICAgICAgICAgICAgICdkZWxlZ2F0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGEgJworICAgICAgICAgICAgICAgICAgJ3NpbWlsYXJcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UgZm9yIGEgZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICcKKyAgICAgICAgICAgICAgICAgICcib2JqZWN0IiBpdHNlbGZcbicKKyAgICAgICAgICAgICAgICAgICcgICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgICAgJ2lzIGFzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICcKKyAgICAgICAgICAgICAgICAgICcieC5fX2xlX18oeSkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgJworICAgICAgICAgICAgICAgICAgJyJ4PnkiIGNhbGxzXG4nCisgICAgICAgICAgICAgICAgICAnICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gJworICAgICAgICAgICAgICAgICAgJyJOb3RJbXBsZW1lbnRlZCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyICcKKyAgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgZm9yIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAnYW55IHZhbHVlLFxuJworICAgICAgICAgICAgICAgICAgJyAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgICdjb250ZXh0IChlLmcuLFxuJworICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCBjYWxsICcKKyAgICAgICAgICAgICAgICAgICciYm9vbCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yICcKKyAgICAgICAgICAgICAgICAgICdmYWxzZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnaW52ZXJ0cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gJworICAgICAgICAgICAgICAgICAgJ290aGVyIGltcGxpZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yICcKKyAgICAgICAgICAgICAgICAgICdleGFtcGxlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyAnCisgICAgICAgICAgICAgICAgICAnYXV0b21hdGljYWxseVxuJworICAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290ICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24sIHNlZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICAnbm90ZXMgb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgICcodG8gYmUgdXNlZFxuJworICAgICAgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICdidXQgdGhlIHJpZ2h0XG4nCisgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgJworICAgICAgICAgICAgICAgICAgImVhY2ggb3RoZXInc1xuIgorICAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgJworICAgICAgICAgICAgICAgICAgJ3JlZmxlY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiAnCisgICAgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAgICAiICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmQncyAiCisgICAgICAgICAgICAgICAgICAndHlwZSBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAiICAgZGlyZWN0IG9yIGluZGlyZWN0IHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmQncyB0eXBlLCAiCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksICcKKyAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UgdGhlXG4nCisgICAgICAgICAgICAgICAgICAiICAgbGVmdCBvcGVyYW5kJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgIgorICAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faGFzaF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnb24gbWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgJworICAgICAgICAgICAgICAgICAgJyJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgJworICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkIHByb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICAnICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZTsgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSAnCisgICAgICAgICAgICAgICAgICAnb3IpIHRoZSBoYXNoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgJworICAgICAgICAgICAgICAgICAgJ3BhcnQgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuICcKKyAgICAgICAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAgJyAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAnCisgICAgICAgICAgICAgICAgICAnIlB5X3NzaXplX3QiLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAnCisgICAgICAgICAgICAgICAgICAnMzItYml0XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiAnCisgICAgICAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICcKKyAgICAgICAgICAgICAgICAgICcicHl0aG9uIC1jXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCAnCisgICAgICAgICAgICAgICAgICAnc2hvdWxkIG5vdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICciX19lcV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlICcKKyAgICAgICAgICAgICAgICAgICdhcyBpdGVtcyBpblxuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCAnCisgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgJworICAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAiICAgcmVxdWlyZXMgdGhhdCBhIGtleSdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgIgorICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIGhhc2hcbiIKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYnlcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlIHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSAnCisgICAgICAgICAgICAgICAgICAnaGFzaCh5KSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgJworICAgICAgICAgICAgICAgICAgJyJfX2hhc2hfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gICcKKyAgICAgICAgICAgICAgICAgICdXaGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSAnCisgICAgICAgICAgICAgICAgICAnYXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosICcKKyAgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4nCisgICAgICAgICAgICAgICAgICAnICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgICdzdXBwcmVzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgJworICAgICAgICAgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyAnCisgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgJworICAgICAgICAgICAgICAgICAgJ3JhbmRvbSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkICcKKyAgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgJworICAgICAgICAgICAgICAgICAgJ2EgZGVuaWFsLVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnZXhwbG9pdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpICcKKyAgICAgICAgICAgICAgICAgICdjb21wbGV4aXR5LlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgU2VlICcKKyAgICAgICAgICAgICAgICAgICdodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSAnCisgICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICAnMzItYml0IGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSAnCisgICAgICAgICAgICAgICAgICAnZGVmYXVsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ib29sX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlIG9iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlLlxuJywKKyAnZGVidWdnZXInOiAnXG4nCisgICAgICAgICAgICAgJyJwZGIiIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcqKlNvdXJjZSBjb2RlOioqIExpYi9wZGIucHlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBtb2R1bGUgInBkYiIgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICdQeXRob24gcHJvZ3JhbXMuICBJdCBzdXBwb3J0cyBzZXR0aW5nIChjb25kaXRpb25hbCkgYnJlYWtwb2ludHMgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayAnCisgICAgICAgICAgICAgJ2ZyYW1lcyxcbicKKyAgICAgICAgICAgICAnc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2NvbnRleHQgb2YgYW55IHN0YWNrIGZyYW1lLiAgSXQgYWxzbyBzdXBwb3J0cyBwb3N0LW1vcnRlbSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2luZ1xuJworICAgICAgICAgICAgICdhbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJyJQZGIiLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5ICcKKyAgICAgICAgICAgICAncmVhZGluZ1xuJworICAgICAgICAgICAgICd0aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyAiYmRiIiBhbmQgJworICAgICAgICAgICAgICciY21kIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgIihQZGIpIi4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSAnCisgICAgICAgICAgICAgJ3Byb2dyYW0gdW5kZXJcbicKKyAgICAgICAgICAgICAnY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IHBkYlxuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4nCisgICAgICAgICAgICAgIiAgID4+PiBwZGIucnVuKCdteW1vZHVsZS50ZXN0KCknKVxuIgorICAgICAgICAgICAgICcgICA+IDxzdHJpbmc+KDApPygpXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpIGNvbnRpbnVlXG4nCisgICAgICAgICAgICAgJyAgID4gPHN0cmluZz4oMSk/KClcbicKKyAgICAgICAgICAgICAnICAgKFBkYikgY29udGludWVcbicKKyAgICAgICAgICAgICAiICAgTmFtZUVycm9yOiAnc3BhbSdcbiIKKyAgICAgICAgICAgICAnICAgPiA8c3RyaW5nPigxKT8oKVxuJworICAgICAgICAgICAgICcgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogVGFiLWNvbXBsZXRpb24gdmlhIHRoZSAicmVhZGxpbmUiIG1vZHVsZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2F2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICAgJ2FuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlICJwIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnInBkYi5weSIgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciAnCisgICAgICAgICAgICAgJ3NjcmlwdHMuICBGb3JcbicKKyAgICAgICAgICAgICAnZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgJworICAgICAgICAgICAgICdwb3N0LW1vcnRlbVxuJworICAgICAgICAgICAgICdkZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyICcKKyAgICAgICAgICAgICAncG9zdC1cbicKKyAgICAgICAgICAgICAnbW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgJworICAgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICAgInJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiJ3Mgc3RhdGUgIgorICAgICAgICAgICAgICcoc3VjaFxuJworICAgICAgICAgICAgICdhcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICJkZWJ1Z2dlciB1cG9uIHByb2dyYW0ncyBleGl0LlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4yOiAicGRiLnB5IiBub3cgYWNjZXB0cyBhICItYyIgb3B0aW9uIHRoYXQgJworICAgICAgICAgICAgICdleGVjdXRlc1xuJworICAgICAgICAgICAgICdjb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhICIucGRicmMiIGZpbGUsIHNlZSBEZWJ1Z2dlciBDb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nICcKKyAgICAgICAgICAgICAncHJvZ3JhbSBpc1xuJworICAgICAgICAgICAgICd0byBpbnNlcnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiAnCisgICAgICAgICAgICAgJ3RoZW5cbicKKyAgICAgICAgICAgICAnc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlICcKKyAgICAgICAgICAgICAncnVubmluZ1xuJworICAgICAgICAgICAgICd3aXRob3V0IHRoZSBkZWJ1Z2dlciB1c2luZyB0aGUgImNvbnRpbnVlIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgcGRiXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgbXltb2R1bGVcbicKKyAgICAgICAgICAgICAnICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuJworICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuJworICAgICAgICAgICAgICcgICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbicKKyAgICAgICAgICAgICAnICAgICAgIHRlc3QyKClcbicKKyAgICAgICAgICAgICAnICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuJworICAgICAgICAgICAgICcgICAgICAgcHJpbnQoc3BhbSlcbicKKyAgICAgICAgICAgICAnICAgTmFtZUVycm9yOiBzcGFtXG4nCisgICAgICAgICAgICAgJyAgID4+PiBwZGIucG0oKVxuJworICAgICAgICAgICAgICcgICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4nCisgICAgICAgICAgICAgJyAgIC0+IHByaW50KHNwYW0pXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJ2luIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpICcKKyAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAnICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55ICcKKyAgICAgICAgICAgICAnY29kZSBpc1xuJworICAgICAgICAgICAgICcgICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91ICcKKyAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nICJzdGVwIiBvciAibmV4dCIgKGFsbCB0aGVzZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICcKKyAgICAgICAgICAgICAnKmxvY2FscypcbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWQ7IGJ5XG4nCisgICAgICAgICAgICAgJyAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSAiX19tYWluX18iIGlzIHVzZWQuICAnCisgICAgICAgICAgICAgJyhTZWUgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiBmdW5jdGlvbnMuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSAnCisgICAgICAgICAgICAgJ29iamVjdClcbicKKyAgICAgICAgICAgICAnICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICcgICAicnVuKCkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhICcKKyAgICAgICAgICAgICAnc3RyaW5nKVxuJworICAgICAgICAgICAgICcgICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuICJydW5jYWxsKCkiIHJldHVybnMsIGl0ICcKKyAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICcgICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgJworICAgICAgICAgICAgICdhcHBlYXJzXG4nCisgICAgICAgICAgICAgJyAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIuc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgJworICAgICAgICAgICAgICd1c2VmdWwgdG9cbicKKyAgICAgICAgICAgICAnICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiBhc3NlcnRpb25cbicKKyAgICAgICAgICAgICAnICAgZmFpbHMpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnBvc3RfbW9ydGVtKHRyYWNlYmFjaz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICAnCisgICAgICAgICAgICAgJ0lmIG5vXG4nCisgICAgICAgICAgICAgJyAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgY3VycmVudGx5IGJlaW5nIGhhbmRsZWQgKGFuIGV4Y2VwdGlvbiBtdXN0IGJlIGJlaW5nIGhhbmRsZWQgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5wbSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIHRyYWNlYmFjayBmb3VuZCBpblxuJworICAgICAgICAgICAgICcgICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAicnVuKiIgZnVuY3Rpb25zIGFuZCAic2V0X3RyYWNlKCkiIGFyZSBhbGlhc2VzIGZvciAnCisgICAgICAgICAgICAgJ2luc3RhbnRpYXRpbmdcbicKKyAgICAgICAgICAgICAndGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSAnCisgICAgICAgICAgICAgJ3dhbnRcbicKKyAgICAgICAgICAgICAndG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJjbGFzcyBwZGIuUGRiKGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgIgorICAgICAgICAgICAgICdza2lwPU5vbmUsIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICJQZGIiIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCAnCisgICAgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICAgICcgICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICcKKyAgICAgICAgICAgICAnZ2xvYi1zdHlsZVxuJworICAgICAgICAgICAgICcgICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICcgICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gJworICAgICAgICAgICAgICdbMV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoICcKKyAgICAgICAgICAgICAnaXMgc2VudFxuJworICAgICAgICAgICAgICcgICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgIkN0cmwtQyIgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgICJjb250aW51ZSIgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlICcKKyAgICAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAgICAnICAgYWdhaW4gYnkgcHJlc3NpbmcgIkN0cmwtQyIuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIFNJR0lOVCBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0byB0cnVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlICpyZWFkcmMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRydWUgYW5kIGNvbnRyb2xzIHdoZXRoZXIgJworICAgICAgICAgICAgICdQZGJcbicKKyAgICAgICAgICAgICAnICAgd2lsbCBsb2FkIC5wZGJyYyBmaWxlcyBmcm9tIHRoZSBmaWxlc3lzdGVtLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnZGphbmdvLionXSkuc2V0X3RyYWNlKClcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMTogVGhlICpza2lwKiBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhICcKKyAgICAgICAgICAgICAnU0lHSU5UXG4nCisgICAgICAgICAgICAgJyAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBUaGUgKnJlYWRyYyogYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICcgICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJyAgIHNldF90cmFjZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0RlYnVnZ2VyIENvbW1hbmRzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgY2FuIGJlIGFiYnJldmlhdGVkIHRvIG9uZSBvciB0d28gbGV0dGVycyBhcyBpbmRpY2F0ZWQ7ICcKKyAgICAgICAgICAgICAnZS5nLlxuJworICAgICAgICAgICAgICciaChlbHApIiBtZWFucyB0aGF0IGVpdGhlciAiaCIgb3IgImhlbHAiIGNhbiBiZSB1c2VkIHRvIGVudGVyICcKKyAgICAgICAgICAgICAndGhlIGhlbHBcbicKKyAgICAgICAgICAgICAnY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuJworICAgICAgICAgICAgICdBcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSAoc3BhY2VzICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAndGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAnCisgICAgICAgICAgICAgJygiW10iKSBpblxuJworICAgICAgICAgICAgICd0aGUgY29tbWFuZCBzeW50YXg7IHRoZSBzcXVhcmUgYnJhY2tldHMgbXVzdCBub3QgYmUgdHlwZWQuXG4nCisgICAgICAgICAgICAgJ0FsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsICcKKyAgICAgICAgICAgICAnYmFyXG4nCisgICAgICAgICAgICAgJygifCIpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgJworICAgICAgICAgICAgICdFeGNlcHRpb246IGlmXG4nCisgICAgICAgICAgICAgJ3RoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSAnCisgICAgICAgICAgICAgJ2xpc3RlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlICIKKyAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuJworICAgICAgICAgICAgICdkZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gJworICAgICAgICAgICAgICdleGNsYW1hdGlvblxuJworICAgICAgICAgICAgICdwb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgICAgJ2RlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLlxuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiBuYW1lICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAicHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgc3VwcG9ydHMgYWxpYXNlcy4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgJ2FsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCB1bmRlclxuJworICAgICAgICAgICAgICdleGFtaW5hdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ011bHRpcGxlIGNvbW1hbmRzIG1heSBiZSBlbnRlcmVkIG9uIGEgc2luZ2xlIGxpbmUsIHNlcGFyYXRlZCBieSAnCisgICAgICAgICAgICAgJyI7OyIuXG4nCisgICAgICAgICAgICAgJyhBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgJworICAgICAgICAgICAgICdjb21tYW5kc1xuJworICAgICAgICAgICAgICdpbiBhIGxpbmUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIFB5dGhvbiBwYXJzZXIuKSAgTm8gaW50ZWxsaWdlbmNlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0IGF0IHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmIGEgZmlsZSAiLnBkYnJjIiBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuICcKKyAgICAgICAgICAgICAndHlwZWRcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgJworICAgICAgICAgICAgICdhbGlhc2VzLiAgSWZcbicKKyAgICAgICAgICAgICAnYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICdhbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuJworICAgICAgICAgICAgICdjb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgImNvbnRpbnVlIiBvciAibmV4dCIuICBQcmV2aW91c2x5LCAnCisgICAgICAgICAgICAgJ3RoZXNlXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdoKGVscCkgW2NvbW1hbmRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgJworICAgICAgICAgICAgICdwZGIiXG4nCisgICAgICAgICAgICAgJyAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlICJwZGIiXG4nCisgICAgICAgICAgICAgJyAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgJworICAgICAgICAgICAgICciaGVscFxuJworICAgICAgICAgICAgICcgICBleGVjIiBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlICIhIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndyhoZXJlKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlICcKKyAgICAgICAgICAgICAnYm90dG9tLiAgQW5cbicKKyAgICAgICAgICAgICAnICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSAnCisgICAgICAgICAgICAgJ2NvbnRleHQgb2ZcbicKKyAgICAgICAgICAgICAnICAgbW9zdCBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Qob3duKSBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1KHApIFtjb3VudF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiB0aGUgJworICAgICAgICAgICAgICdzdGFja1xuJworICAgICAgICAgICAgICcgICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZmlsZS5cbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGFibGVcbicKKyAgICAgICAgICAgICAnICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSAnCisgICAgICAgICAgICAgJ3ByZWZpeGVkXG4nCisgICAgICAgICAgICAgJyAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gJworICAgICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgICAgIiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgIgorICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBzZWFyY2hlZCBvbiAic3lzLnBhdGgiLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyAnCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIGFcbicKKyAgICAgICAgICAgICAnICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggJworICAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnQsXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBicmVha3BvaW50IGhhcyBiZWVuIGhpdCwgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRlbXBvcmFyeSBicmVha3BvaW50LCB3aGljaCBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yICJicmVhayIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyAnCisgICAgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgICAgJyAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgJworICAgICAgICAgICAgICdjbGVhclxuJworICAgICAgICAgICAgICcgICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0ICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgYXNrIGNvbmZpcm1hdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbicKKyAgICAgICAgICAgICAnICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgJworICAgICAgICAgICAgICdjYXVzZVxuJworICAgICAgICAgICAgICcgICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludCwgaXRcbicKKyAgICAgICAgICAgICAnICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2VuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lnbm9yZSBicG51bWJlciBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgJworICAgICAgICAgICAgICdjb3VudCBpc1xuJworICAgICAgICAgICAgICcgICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgJworICAgICAgICAgICAgICdhY3RpdmVcbicKKyAgICAgICAgICAgICAnICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbicKKyAgICAgICAgICAgICAnICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvICcKKyAgICAgICAgICAgICAndHJ1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCAnCisgICAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICcKKyAgICAgICAgICAgICAnKmNvbmRpdGlvbipcbicKKyAgICAgICAgICAgICAnICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgW2JwbnVtYmVyXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhICcKKyAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICcgICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIChQZGIpIGNvbW1hbmRzIDFcbicKKyAgICAgICAgICAgICAnICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgJyAgICAgIChjb20pIGVuZFxuJworICAgICAgICAgICAgICcgICAgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgJworICAgICAgICAgICAgICdmb2xsb3dcbicKKyAgICAgICAgICAgICAnICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludFxuJworICAgICAgICAgICAgICcgICBzZXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCAnCisgICAgICAgICAgICAgJ2FnYWluLlxuJworICAgICAgICAgICAgICcgICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgJworICAgICAgICAgICAgICdjb21tYW5kIHRoYXRcbicKKyAgICAgICAgICAgICAnICAgcmVzdW1lcyBleGVjdXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5ICcKKyAgICAgICAgICAgICAnY29udGludWUsXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgJworICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICcgICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gJworICAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICAnICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgJworICAgICAgICAgICAgICdicmVha3BvaW50LS13aGljaFxuJworICAgICAgICAgICAgICcgICBjb3VsZCBoYXZlIGl0cyBvd24gY29tbWFuZCBsaXN0LCBsZWFkaW5nIHRvIGFtYmlndWl0aWVzIGFib3V0ICcKKyAgICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgICAnICAgbGlzdCB0byBleGVjdXRlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgSWYgeW91IHVzZSB0aGUgJ3NpbGVudCcgY29tbWFuZCBpbiB0aGUgY29tbWFuZCBsaXN0LCB0aGUgIgorICAgICAgICAgICAgICd1c3VhbFxuJworICAgICAgICAgICAgICcgICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgJworICAgICAgICAgICAgICdtYXkgYmVcbicKKyAgICAgICAgICAgICAnICAgZGVzaXJhYmxlIGZvciBicmVha3BvaW50cyB0aGF0IGFyZSB0byBwcmludCBhIHNwZWNpZmljICcKKyAgICAgICAgICAgICAnbWVzc2FnZSBhbmRcbicKKyAgICAgICAgICAgICAnICAgdGhlbiBjb250aW51ZS4gIElmIG5vbmUgb2YgdGhlIG90aGVyIGNvbW1hbmRzIHByaW50IGFueXRoaW5nLCAnCisgICAgICAgICAgICAgJ3lvdVxuJworICAgICAgICAgICAgICcgICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncyh0ZXApXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFeGVjdXRlIHRoZSBjdXJyZW50IGxpbmUsIHN0b3AgYXQgdGhlIGZpcnN0IHBvc3NpYmxlICcKKyAgICAgICAgICAgICAnb2NjYXNpb25cbicKKyAgICAgICAgICAgICAnICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgY3VycmVudCBmdW5jdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICduKGV4dClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnICAgcmVhY2hlZCBvciBpdCByZXR1cm5zLiAgKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIm5leHQiIGFuZCAnCisgICAgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICAgICcgICBpcyB0aGF0ICJzdGVwIiBzdG9wcyBpbnNpZGUgYSBjYWxsZWQgZnVuY3Rpb24sIHdoaWxlICJuZXh0IlxuJworICAgICAgICAgICAgICcgICBleGVjdXRlcyBjYWxsZWQgZnVuY3Rpb25zIGF0IChuZWFybHkpIGZ1bGwgc3BlZWQsIG9ubHkgJworICAgICAgICAgICAgICdzdG9wcGluZyBhdFxuJworICAgICAgICAgICAgICcgICB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VudChpbCkgW2xpbmVub11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgYXJndW1lbnQsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbGluZSB3aXRoIGEgJworICAgICAgICAgICAgICdudW1iZXJcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSAnCisgICAgICAgICAgICAgJ251bWJlclxuJworICAgICAgICAgICAgICcgICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoYXQgaXMgcmVhY2hlZC4gIEluIGJvdGggY2FzZXMsIGFsc28gJworICAgICAgICAgICAgICdzdG9wIHdoZW5cbicKKyAgICAgICAgICAgICAnICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lICcKKyAgICAgICAgICAgICAnbnVtYmVyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncihldHVybilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY3VycmVudCBmdW5jdGlvbiByZXR1cm5zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYyhvbnQoaW51ZSkpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyAnCisgICAgICAgICAgICAgJ2VuY291bnRlcmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaih1bXApIGxpbmVub1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IHRoZSBuZXh0IGxpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkLiAgT25seSBhdmFpbGFibGUgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlICcKKyAgICAgICAgICAgICAnYWdhaW4sXG4nCisgICAgICAgICAgICAgIiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBydW4uXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciAnCisgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgJyAgIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBqdW1wIGludG8gdGhlIG1pZGRsZSBvZiBhICJmb3IiIGxvb3Agb3IgJworICAgICAgICAgICAgICdvdXRcbicKKyAgICAgICAgICAgICAnICAgb2YgYSAiZmluYWxseSIgY2xhdXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnbChpc3QpIFtmaXJzdFssIGxhc3RdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gIFdpdGhvdXQgYXJndW1lbnRzLCAnCisgICAgICAgICAgICAgJ2xpc3QgMTFcbicKKyAgICAgICAgICAgICAnICAgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUgb3IgY29udGludWUgdGhlIHByZXZpb3VzICcKKyAgICAgICAgICAgICAnbGlzdGluZy5cbicKKyAgICAgICAgICAgICAnICAgV2l0aCAiLiIgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuICAnCisgICAgICAgICAgICAgJ1dpdGhcbicKKyAgICAgICAgICAgICAnICAgb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuJworICAgICAgICAgICAgICcgICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzICcKKyAgICAgICAgICAgICAnbGVzc1xuJworICAgICAgICAgICAgICcgICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5kaWNhdGVkIGJ5ICItPiIuICAnCisgICAgICAgICAgICAgJ0lmIGFuXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICAgICcgICBvcmlnaW5hbGx5IHJhaXNlZCBvciBwcm9wYWdhdGVkIGlzIGluZGljYXRlZCBieSAiPj4iLCBpZiBpdCAnCisgICAgICAgICAgICAgJ2RpZmZlcnNcbicKKyAgICAgICAgICAgICAnICAgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgIj4+IiBtYXJrZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdsbCB8IGxvbmdsaXN0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaXN0IGFsbCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb3IgZnJhbWUuXG4nCisgICAgICAgICAgICAgJyAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yICJsaXN0Ii5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2EocmdzKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgJworICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAnICAgdmFsdWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOb3RlOiAicHJpbnQoKSIgY2FuIGFsc28gYmUgdXNlZCwgYnV0IGlzIG5vdCBhIGRlYnVnZ2VyICcKKyAgICAgICAgICAgICAnY29tbWFuZFxuJworICAgICAgICAgICAgICcgICAgIC0tLSB0aGlzIGV4ZWN1dGVzIHRoZSBQeXRob24gInByaW50KCkiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncHAgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlrZSB0aGUgInAiIGNvbW1hbmQsIGV4Y2VwdCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXMgJworICAgICAgICAgICAgICdwcmV0dHktXG4nCisgICAgICAgICAgICAgJyAgIHByaW50ZWQgdXNpbmcgdGhlICJwcHJpbnQiIG1vZHVsZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3doYXRpcyBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc291cmNlIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRyeSB0byBnZXQgc291cmNlIGNvZGUgZm9yIHRoZSBnaXZlbiBvYmplY3QgYW5kIGRpc3BsYXkgaXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkaXNwbGF5IFtleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaWYgaXQgY2hhbmdlZCwgZWFjaCB0aW1lXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgbGlzdCBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VuZGlzcGxheSBbZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGV4cHJlc3Npb24sIGNsZWFyIGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIGZyYW1lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaW50ZXJhY3RcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFN0YXJ0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgImNvZGUiIG1vZHVsZSkgJworICAgICAgICAgICAgICd3aG9zZVxuJworICAgICAgICAgICAgICcgICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzICcKKyAgICAgICAgICAgICAnZm91bmQgaW5cbicKKyAgICAgICAgICAgICAnICAgdGhlIGN1cnJlbnQgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdhbGlhcyBbbmFtZSBbY29tbWFuZF1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSAnCisgICAgICAgICAgICAgJ2NvbW1hbmRcbicKKyAgICAgICAgICAgICAnICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiAnCisgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgJyAgIGluZGljYXRlZCBieSAiJTEiLCAiJTIiLCBhbmQgc28gb24sIHdoaWxlICIlKiIgaXMgcmVwbGFjZWQgYnkgJworICAgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgICAnICAgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzICcKKyAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgJyAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlICcKKyAgICAgICAgICAgICAnbGlzdGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSAnCisgICAgICAgICAgICAgJ2xlZ2FsbHlcbicKKyAgICAgICAgICAgICAnICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICcKKyAgICAgICAgICAgICAnKmNhbiogYmVcbicKKyAgICAgICAgICAgICAnICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlICcKKyAgICAgICAgICAgICAnbGVmdFxuJworICAgICAgICAgICAgICcgICBhbG9uZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuICcKKyAgICAgICAgICAgICAncGxhY2VkXG4nCisgICAgICAgICAgICAgJyAgIGluIHRoZSAiLnBkYnJjIiBmaWxlKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzICh1c2FnZSAicGkgY2xhc3NJbnN0IilcbicKKyAgICAgICAgICAgICAnICAgICAgYWxpYXMgcGkgZm9yIGsgaW4gJTEuX19kaWN0X18ua2V5cygpOiAnCisgICAgICAgICAgICAgJ3ByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuJworICAgICAgICAgICAgICcgICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyBpbiBzZWxmXG4nCisgICAgICAgICAgICAgJyAgICAgIGFsaWFzIHBzIHBpIHNlbGZcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VuYWxpYXMgbmFtZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICchIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgKG9uZS1saW5lKSAqc3RhdGVtZW50KiBpbiB0aGUgY29udGV4dCBvZiB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyAgIHdvcmQgb2YgdGhlIHN0YXRlbWVudCByZXNlbWJsZXMgYSBkZWJ1Z2dlciBjb21tYW5kLiAgVG8gc2V0ICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBnbG9iYWwgdmFyaWFibGUsIHlvdSBjYW4gcHJlZml4IHRoZSBhc3NpZ25tZW50IGNvbW1hbmQgd2l0aCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgImdsb2JhbCIgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIgICAgICAoUGRiKSBnbG9iYWwgbGlzdF9vcHRpb25zOyBsaXN0X29wdGlvbnMgPSBbJy1sJ11cbiIKKyAgICAgICAgICAgICAnICAgICAgKFBkYilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3J1biBbYXJncyAuLi5dXG4nCisgICAgICAgICAgICAgJ3Jlc3RhcnQgW2FyZ3MgLi4uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyAnCisgICAgICAgICAgICAgJ3N1cHBsaWVkLFxuJworICAgICAgICAgICAgICcgICBpdCBpcyBzcGxpdCB3aXRoICJzaGxleCIgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4nCisgICAgICAgICAgICAgJyAgICJzeXMuYXJndiIuIEhpc3RvcnksIGJyZWFrcG9pbnRzLCBhY3Rpb25zIGFuZCBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ29wdGlvbnMgYXJlXG4nCisgICAgICAgICAgICAgJyAgIHByZXNlcnZlZC4gInJlc3RhcnQiIGlzIGFuIGFsaWFzIGZvciAicnVuIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3EodWl0KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzICcKKyAgICAgICAgICAgICAnYWJvcnRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gJworICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAnICAgIGlzIGRldGVybWluZWQgYnkgdGhlICJfX25hbWVfXyIgaW4gdGhlIGZyYW1lIGdsb2JhbHMuXG4nLAorICdkZWwnOiAnXG4nCisgICAgICAgICdUaGUgImRlbCIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ2RlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbicKKyAgICAgICAgJ2hpbnRzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxuJworICAgICAgICAndG8gcmlnaHQuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0RlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCAnCisgICAgICAgICdvclxuJworICAgICAgICAnZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgImdsb2JhbCJcbicKKyAgICAgICAgJ3N0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuJworICAgICAgICAnIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgJworICAgICAgICAncGFzc2VkXG4nCisgICAgICAgICd0byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG4nCisgICAgICAgICdlcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCAnCisgICAgICAgICdldmVuXG4nCisgICAgICAgICd0aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbicKKyAgICAgICAgJ2Zyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkXG4nCisgICAgICAgICdibG9jay5cbicsCisgJ2RpY3QnOiAnXG4nCisgICAgICAgICAnRGljdGlvbmFyeSBkaXNwbGF5c1xuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbicKKyAgICAgICAgICdlbmNsb3NlZCBpbiBjdXJseSBicmFjZXM6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAnCisgICAgICAgICAnIn0iXG4nCisgICAgICAgICAnICAga2V5X2RhdHVtX2xpc3QgICAgIDo6PSBrZXlfZGF0dW0gKCIsIiBrZXlfZGF0dW0pKiBbIiwiXVxuJworICAgICAgICAgJyAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiB8ICIqKiIgb3JfZXhwclxuJworICAgICAgICAgJyAgIGRpY3RfY29tcHJlaGVuc2lvbiA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiBjb21wX2ZvclxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdJZiBhIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZSBvZiBrZXkvZGF0dW0gcGFpcnMgaXMgZ2l2ZW4sIHRoZXkgYXJlXG4nCisgICAgICAgICAnZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlICcKKyAgICAgICAgICdkaWN0aW9uYXJ5OlxuJworICAgICAgICAgJ2VhY2gga2V5IG9iamVjdCBpcyB1c2VkIGFzIGEga2V5IGludG8gdGhlIGRpY3Rpb25hcnkgdG8gc3RvcmUgdGhlXG4nCisgICAgICAgICAnY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG4nCisgICAgICAgICAibXVsdGlwbGUgdGltZXMgaW4gdGhlIGtleS9kYXR1bSBsaXN0LCBhbmQgdGhlIGZpbmFsIGRpY3Rpb25hcnkncyAiCisgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICdmb3IgdGhhdCBrZXkgd2lsbCBiZSB0aGUgbGFzdCBvbmUgZ2l2ZW4uXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkb3VibGUgYXN0ZXJpc2sgIioqIiBkZW5vdGVzICpkaWN0aW9uYXJ5IHVucGFja2luZyouIEl0cyBvcGVyYW5kXG4nCisgICAgICAgICAnbXVzdCBiZSBhICptYXBwaW5nKi4gIEVhY2ggbWFwcGluZyBpdGVtIGlzIGFkZGVkIHRvIHRoZSBuZXdcbicKKyAgICAgICAgICdkaWN0aW9uYXJ5LiAgTGF0ZXIgdmFsdWVzIHJlcGxhY2UgdmFsdWVzIGFscmVhZHkgc2V0IGJ5IGVhcmxpZXJcbicKKyAgICAgICAgICdrZXkvZGF0dW0gcGFpcnMgYW5kIGVhcmxpZXIgZGljdGlvbmFyeSB1bnBhY2tpbmdzLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNTogVW5wYWNraW5nIGludG8gZGljdGlvbmFyeSBkaXNwbGF5cywgb3JpZ2luYWxseVxuJworICAgICAgICAgJ3Byb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG4nCisgICAgICAgICAnbmVlZHMgdHdvIGV4cHJlc3Npb25zIHNlcGFyYXRlZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgdGhlIHVzdWFsXG4nCisgICAgICAgICAnImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSAnCisgICAgICAgICAncmVzdWx0aW5nXG4nCisgICAgICAgICAna2V5IGFuZCB2YWx1ZSBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IGluIHRoZSAnCisgICAgICAgICAnb3JkZXJcbicKKyAgICAgICAgICd0aGV5IGFyZSBwcm9kdWNlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdSZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuJworICAgICAgICAgJ3NlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5LiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSB0eXBlXG4nCisgICAgICAgICAnc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgQ2xhc2hlc1xuJworICAgICAgICAgJ2JldHdlZW4gZHVwbGljYXRlIGtleXMgYXJlIG5vdCBkZXRlY3RlZDsgdGhlIGxhc3QgZGF0dW0gKHRleHR1YWxseVxuJworICAgICAgICAgJ3JpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCisgJ2R5bmFtaWMtZmVhdHVyZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgJworICAgICAgICAgICAgICAgICAgICAgJ2F0IGNvbXBpbGVcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVmIGYoKTpcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBmKClcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgJ2lsbGVnYWwgd2hlbiB1c2VkXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlICcKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2lsbGVnYWwgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdkZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgJworICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzICcKKyAgICAgICAgICAgICAgICAgICAgICd0byB0aGUgZnVsbFxuJworICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZSBsb2NhbFxuJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3QgcmVzb2x2ZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCAnCisgICAgICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlLiAgWzFdXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgJworICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCisgJ2Vsc2UnOiAnXG4nCisgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAgICcgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICAgJ29uZVxuJworICAgICAgICAgJ2J5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gQm9vbGVhbiAnCisgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgJ2ZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuJworICAgICAgICAgJyhhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbicKKyAgICAgICAgICdJZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG4nCisgICAgICAgICAncHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAorICdleGNlcHRpb25zJzogJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mICcKKyAgICAgICAgICAgICAgICdjb250cm9sXG4nCisgICAgICAgICAgICAgICAnb2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsXG4nCisgICAgICAgICAgICAgICAnY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlICcKKyAgICAgICAgICAgICAgICdlcnJvciBpc1xuJworICAgICAgICAgICAgICAgJ2RldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yICcKKyAgICAgICAgICAgICAgICdieSBhbnlcbicKKyAgICAgICAgICAgICAgICdjb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrICcKKyAgICAgICAgICAgICAgICd3aGVyZVxuJworICAgICAgICAgICAgICAgJ3RoZSBlcnJvciBvY2N1cnJlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdUaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgJworICAgICAgICAgICAgICAgJ3J1bi10aW1lXG4nCisgICAgICAgICAgICAgICAnZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG4nCisgICAgICAgICAgICAgICAnZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuICcKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25cbicKKyAgICAgICAgICAgICAgICdoYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICAnCisgICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgJworICAgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAgICdjb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAgJ3doZXRoZXIgYW5cbicKKyAgICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdQeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAgJ2hhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCAnCisgICAgICAgICAgICAgICAnYW4gb3V0ZXJcbicKKyAgICAgICAgICAgICAgICdsZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJ2ZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSAnCisgICAgICAgICAgICAgICAnb2YgY29kZVxuJworICAgICAgICAgICAgICAgJ2Zyb20gdGhlIHRvcCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgJworICAgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXNcbicKKyAgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gJworICAgICAgICAgICAgICAgJ2xvb3AuICBJblxuJworICAgICAgICAgICAgICAgJ2VpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzXG4nCisgICAgICAgICAgICAgICAnIlN5c3RlbUV4aXQiLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiICcKKyAgICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAgICdzZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCAnCisgICAgICAgICAgICAgICAncmVmZXJlbmNlIHRoZVxuJworICAgICAgICAgICAgICAgJ2NsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgICAncmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uICcKKyAgICAgICAgICAgICAgICdhYm91dCB0aGVcbicKKyAgICAgICAgICAgICAgICdleGNlcHRpb25hbCBjb25kaXRpb24uXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gICcKKyAgICAgICAgICAgICAgICdUaGVpclxuJworICAgICAgICAgICAgICAgJyAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCAnCisgICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAgJyAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biAnCisgICAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAgICcgIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdTZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgICAndHJ5XG4nCisgICAgICAgICAgICAgICAnc3RhdGVtZW50IGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSByYWlzZSAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1sxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAgICcgICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgJworICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAnICAgIGNvbXBpbGVkLlxuJywKKyAnZXhlY21vZGVsJzogJ1xuJworICAgICAgICAgICAgICAnRXhlY3V0aW9uIG1vZGVsXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdTdHJ1Y3R1cmUgb2YgYSBwcm9ncmFtXG4nCisgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgUHl0aG9uIHByb2dyYW0gaXMgY29uc3RydWN0ZWQgZnJvbSBjb2RlIGJsb2Nrcy4gQSAqYmxvY2sqIGlzICcKKyAgICAgICAgICAgICAgJ2EgcGllY2VcbicKKyAgICAgICAgICAgICAgJ29mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhIHVuaXQuIFRoZSAnCisgICAgICAgICAgICAgICdmb2xsb3dpbmcgYXJlXG4nCisgICAgICAgICAgICAgICdibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzIGRlZmluaXRpb24uICcKKyAgICAgICAgICAgICAgJ0VhY2hcbicKKyAgICAgICAgICAgICAgJ2NvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHQgZmlsZSAoYSBmaWxlICcKKyAgICAgICAgICAgICAgJ2dpdmVuXG4nCisgICAgICAgICAgICAgICdhcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkIGFzIGEgY29tbWFuZCAnCisgICAgICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgICAgICdhcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEEgc2NyaXB0IGNvbW1hbmQgJworICAgICAgICAgICAgICAnKGFcbicKKyAgICAgICAgICAgICAgJ2NvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmUgd2l0aCB0aGUgJworICAgICAgICAgICAgICAiJyoqLWMqKidcbiIKKyAgICAgICAgICAgICAgJ29wdGlvbikgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIHN0cmluZyBhcmd1bWVudCBwYXNzZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICdmdW5jdGlvbnMgImV2YWwoKSIgYW5kICJleGVjKCkiIGlzIGEgY29kZSBibG9jay5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSBjb2RlIGJsb2NrIGlzIGV4ZWN1dGVkIGluIGFuICpleGVjdXRpb24gZnJhbWUqLiAgQSBmcmFtZSAnCisgICAgICAgICAgICAgICdjb250YWluc1xuJworICAgICAgICAgICAgICAnc29tZSBhZG1pbmlzdHJhdGl2ZSBpbmZvcm1hdGlvbiAodXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgJworICAgICAgICAgICAgICAnZGV0ZXJtaW5lc1xuJworICAgICAgICAgICAgICAid2hlcmUgYW5kIGhvdyBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSBjb2RlIGJsb2NrJ3MgIgorICAgICAgICAgICAgICAnZXhlY3V0aW9uIGhhc1xuJworICAgICAgICAgICAgICAnY29tcGxldGVkLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05hbWluZyBhbmQgYmluZGluZ1xuJworICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQmluZGluZyBvZiBuYW1lc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcqTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lICcKKyAgICAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byAnCisgICAgICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgJworICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICdpZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsICcKKyAgICAgICAgICAgICAgJ29yIGFmdGVyXG4nCisgICAgICAgICAgICAgICciYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG4nCisgICAgICAgICAgICAgICdpbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgJworICAgICAgICAgICAgICAnVGhpcyBmb3JtXG4nCisgICAgICAgICAgICAgICdtYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgJworICAgICAgICAgICAgICAnYm91bmQgZm9yXG4nCisgICAgICAgICAgICAgICd0aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSAnCisgICAgICAgICAgICAgICduYW1lKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrICcKKyAgICAgICAgICAgICAgJ2RlZmluZWQgYnkgYVxuJworICAgICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgJworICAgICAgICAgICAgICAndG9wLWxldmVsXG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCAnCisgICAgICAgICAgICAgICdibG9jayxcbicKKyAgICAgICAgICAgICAgJ3VubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kICcKKyAgICAgICAgICAgICAgJ2F0IHRoZVxuJworICAgICAgICAgICAgICAnbW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSAnCisgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgJ2NvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgJworICAgICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAgICAnYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgJworICAgICAgICAgICAgICAnKmJpbmRpbmcqXG4nCisgICAgICAgICAgICAgICdvZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gJworICAgICAgICAgICAgICAncnVsZXMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnUmVzb2x1dGlvbiBvZiBuYW1lc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiAnCisgICAgICAgICAgICAgICdhIGxvY2FsXG4nCisgICAgICAgICAgICAgICd2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgJworICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgJworICAgICAgICAgICAgICAnYmxvY2tzXG4nCisgICAgICAgICAgICAgICdjb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayAnCisgICAgICAgICAgICAgICdpbnRyb2R1Y2VzXG4nCisgICAgICAgICAgICAgICdhIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSAnCisgICAgICAgICAgICAgICduZWFyZXN0XG4nCisgICAgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAgICAiaXMgY2FsbGVkIHRoZSBibG9jaydzICplbnZpcm9ubWVudCouXG4iCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAgJ3JhaXNlZC4gSWZcbicKKyAgICAgICAgICAgICAgJ3RoZSBjdXJyZW50IHNjb3BlIGlzIGEgZnVuY3Rpb24gc2NvcGUsIGFuZCB0aGUgbmFtZSByZWZlcnMgdG8gYSAnCisgICAgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAgICAndmFyaWFibGUgdGhhdCBoYXMgbm90IHlldCBiZWVuIGJvdW5kIHRvIGEgdmFsdWUgYXQgdGhlIHBvaW50ICcKKyAgICAgICAgICAgICAgJ3doZXJlIHRoZVxuJworICAgICAgICAgICAgICAnbmFtZSBpcyB1c2VkLCBhbiAiVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgICciVW5ib3VuZExvY2FsRXJyb3IiIGlzIGEgc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9jaywgYWxsXG4nCisgICAgICAgICAgICAgICd1c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ2N1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkICcKKyAgICAgICAgICAgICAgJ3dpdGhpbiBhXG4nCisgICAgICAgICAgICAgICdibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG4nCisgICAgICAgICAgICAgICdkZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciAnCisgICAgICAgICAgICAgICdhbnl3aGVyZVxuJworICAgICAgICAgICAgICAnd2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiAnCisgICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lICcKKyAgICAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiAnCisgICAgICAgICAgICAgICd0aGUgbmFtZVxuJworICAgICAgICAgICAgICAnc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAndG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZSBieVxuJworICAgICAgICAgICAgICAnc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSAnCisgICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAgJ29mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkICcKKyAgICAgICAgICAgICAgJ2ZpcnN0LiAgSWZcbicKKyAgICAgICAgICAgICAgJ3RoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyAnCisgICAgICAgICAgICAgICdzZWFyY2hlZC4gIFRoZVxuJworICAgICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgJworICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICdpbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlICcKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgICdjb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgYSAnCisgICAgICAgICAgICAgICdnbG9iYWwuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgY29ycmVzcG9uZGluZyBuYW1lcyB0byByZWZlciAnCisgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAgJ3Njb3BlLlxuJworICAgICAgICAgICAgICAnIlN5bnRheEVycm9yIiBpcyByYWlzZWQgYXQgY29tcGlsZSB0aW1lIGlmIHRoZSBnaXZlbiBuYW1lIGRvZXMgJworICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICdleGlzdCBpbiBhbnkgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0ICcKKyAgICAgICAgICAgICAgJ3RpbWUgYVxuJworICAgICAgICAgICAgICAnbW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgJworICAgICAgICAgICAgICAnY2FsbGVkXG4nCisgICAgICAgICAgICAgICciX19tYWluX18iLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uIGJsb2NrcyBhbmQgYXJndW1lbnRzIHRvICJleGVjKCkiIGFuZCAiZXZhbCgpIiAnCisgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgJ3NwZWNpYWwgaW4gdGhlIGNvbnRleHQgb2YgbmFtZSByZXNvbHV0aW9uLiBBIGNsYXNzIGRlZmluaXRpb24gJworICAgICAgICAgICAgICAnaXMgYW5cbicKKyAgICAgICAgICAgICAgJ2V4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lIG5hbWVzLiBUaGVzZSAnCisgICAgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgICdmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uIHdpdGggYW4gZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgJ3VuYm91bmQgbG9jYWwgdmFyaWFibGVzIGFyZSBsb29rZWQgdXAgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICcKKyAgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICAnbmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9mXG4nCisgICAgICAgICAgICAgICd0aGUgY2xhc3MuIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGEgY2xhc3MgYmxvY2sgaXMgJworICAgICAgICAgICAgICAnbGltaXRlZCB0b1xuJworICAgICAgICAgICAgICAndGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlIGNvZGUgYmxvY2tzIG9mICcKKyAgICAgICAgICAgICAgJ21ldGhvZHMgLS1cbicKKyAgICAgICAgICAgICAgJ3RoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvciBleHByZXNzaW9ucyBzaW5jZSAnCisgICAgICAgICAgICAgICd0aGV5IGFyZVxuJworICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgICd3aWxsIGZhaWw6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGNsYXNzIEE6XG4nCisgICAgICAgICAgICAgICcgICAgICAgYSA9IDQyXG4nCisgICAgICAgICAgICAgICcgICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0J1aWx0aW5zIGFuZCByZXN0cmljdGVkIGV4ZWN1dGlvblxuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlICcKKyAgICAgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgICAgICdpcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyAnCisgICAgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgJworICAgICAgICAgICAgICAnbGF0dGVyIGNhc2VcbicKKyAgICAgICAgICAgICAgInRoZSBtb2R1bGUncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIgorICAgICAgICAgICAgICAnIl9fbWFpbl9fIlxuJworICAgICAgICAgICAgICAnbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7IHdoZW4gJworICAgICAgICAgICAgICAnaW4gYW55XG4nCisgICAgICAgICAgICAgICdvdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSBvZiAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJyJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSAnCisgICAgICAgICAgICAgICd1c2VyLWNyZWF0ZWRcbicKKyAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbicKKyAgICAgICAgICAgICAgJyJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICAnCisgICAgICAgICAgICAgICdVc2Vyc1xuJworICAgICAgICAgICAgICAnd2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgJworICAgICAgICAgICAgICAnImltcG9ydCJcbicKKyAgICAgICAgICAgICAgJ3RoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzIGFwcHJvcHJpYXRlbHkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgYXQgJworICAgICAgICAgICAgICAnY29tcGlsZVxuJworICAgICAgICAgICAgICAndGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBpID0gMTBcbicKKyAgICAgICAgICAgICAgJyAgIGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgICAgJyAgIGkgPSA0MlxuJworICAgICAgICAgICAgICAnICAgZigpXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsICcKKyAgICAgICAgICAgICAgJ3doZW4gdXNlZFxuJworICAgICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgJworICAgICAgICAgICAgICAnaWxsZWdhbCB0b1xuJworICAgICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgJworICAgICAgICAgICAgICAnZnVsbFxuJworICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgJworICAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAgJ2FuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCAnCisgICAgICAgICAgICAgICdyZXNvbHZlZFxuJworICAgICAgICAgICAgICAnaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlLiAgWzFdXG4nCisgICAgICAgICAgICAgICdUaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xuJworICAgICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlICcKKyAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9uc1xuJworICAgICAgICAgICAgICAnPT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgJworICAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICAnb2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgZXhjZXB0aW9uYWxcbicKKyAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSAnCisgICAgICAgICAgICAgICdlcnJvciBpc1xuJworICAgICAgICAgICAgICAnZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgJworICAgICAgICAgICAgICAnYnkgYW55XG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrICcKKyAgICAgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgICAgICd0aGUgZXJyb3Igb2NjdXJyZWQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSAnCisgICAgICAgICAgICAgICdydW4tdGltZVxuJworICAgICAgICAgICAgICAnZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG4nCisgICAgICAgICAgICAgICdleHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gJworICAgICAgICAgICAgICAnRXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICdoYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICAnCisgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAgJ2NvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICd3aGV0aGVyIGFuXG4nCisgICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuICcKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAnaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0IGFuICcKKyAgICAgICAgICAgICAgJ291dGVyXG4nCisgICAgICAgICAgICAgICdsZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdmYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2Ugb2YgJworICAgICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAgICAnZnJvbSB0aGUgdG9wKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgJworICAgICAgICAgICAgICAndGVybWluYXRlc1xuJworICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluICcKKyAgICAgICAgICAgICAgJ2xvb3AuICBJblxuJworICAgICAgICAgICAgICAnZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpc1xuJworICAgICAgICAgICAgICAnIlN5c3RlbUV4aXQiLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiAnCisgICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAgJ3NlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0ICcKKyAgICAgICAgICAgICAgJ3JlZmVyZW5jZSB0aGVcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgJ3JlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAnCisgICAgICAgICAgICAgICdhYm91dCB0aGVcbicKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gICcKKyAgICAgICAgICAgICAgJ1RoZWlyXG4nCisgICAgICAgICAgICAgICcgIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgJworICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAnICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuICcKKyAgICAgICAgICAgICAgJ3VuZGVyXG4nCisgICAgICAgICAgICAgICcgIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgJworICAgICAgICAgICAgICAndHJ5XG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQgYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlIHJhaXNlICcKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1sxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICAnICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlICcKKyAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICcgICAgY29tcGlsZWQuXG4nLAorICdleHBybGlzdHMnOiAnXG4nCisgICAgICAgICAgICAgICdFeHByZXNzaW9uIGxpc3RzXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGV4cHJlc3Npb25fbGlzdCAgICA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG4nCisgICAgICAgICAgICAgICcgICBzdGFycmVkX2xpc3QgICAgICAgOjo9IHN0YXJyZWRfaXRlbSAoICIsIiBzdGFycmVkX2l0ZW0gKSogJworICAgICAgICAgICAgICAnWyIsIl1cbicKKyAgICAgICAgICAgICAgJyAgIHN0YXJyZWRfZXhwcmVzc2lvbiA6Oj0gZXhwcmVzc2lvbiB8ICggc3RhcnJlZF9pdGVtICIsIiApKiAnCisgICAgICAgICAgICAgICdbc3RhcnJlZF9pdGVtXVxuJworICAgICAgICAgICAgICAnICAgc3RhcnJlZF9pdGVtICAgICAgIDo6PSBleHByZXNzaW9uIHwgIioiIG9yX2V4cHJcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0IHdoZW4gcGFydCBvZiBhIGxpc3Qgb3Igc2V0IGRpc3BsYXksIGFuIGV4cHJlc3Npb24gbGlzdFxuJworICAgICAgICAgICAgICAnY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgdHVwbGUuICBUaGUgbGVuZ3RoIG9mICcKKyAgICAgICAgICAgICAgJ3RoZSB0dXBsZVxuJworICAgICAgICAgICAgICAnaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgbGlzdC4gIFRoZSBleHByZXNzaW9ucyBhcmVcbicKKyAgICAgICAgICAgICAgJ2V2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGFzdGVyaXNrICIqIiBkZW5vdGVzICppdGVyYWJsZSB1bnBhY2tpbmcqLiAgSXRzIG9wZXJhbmQgbXVzdCAnCisgICAgICAgICAgICAgICdiZSBhblxuJworICAgICAgICAgICAgICAnKml0ZXJhYmxlKi4gIFRoZSBpdGVyYWJsZSBpcyBleHBhbmRlZCBpbnRvIGEgc2VxdWVuY2Ugb2YgaXRlbXMsICcKKyAgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgICdhcmUgaW5jbHVkZWQgaW4gdGhlIG5ldyB0dXBsZSwgbGlzdCwgb3Igc2V0LCBhdCB0aGUgc2l0ZSBvZiAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ3VucGFja2luZy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy41OiBJdGVyYWJsZSB1bnBhY2tpbmcgaW4gZXhwcmVzc2lvbiBsaXN0cywgJworICAgICAgICAgICAgICAnb3JpZ2luYWxseVxuJworICAgICAgICAgICAgICAncHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAnCisgICAgICAgICAgICAgICcoYS5rLmEuIGFcbicKKyAgICAgICAgICAgICAgJypzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgJworICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAid2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgIgorICAgICAgICAgICAgICAneWllbGRzIHRoZVxuJworICAgICAgICAgICAgICAndmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gJworICAgICAgICAgICAgICAnZW1wdHkgcGFpclxuJworICAgICAgICAgICAgICAnb2YgcGFyZW50aGVzZXM6ICIoKSIuKVxuJywKKyAnZmxvYXRpbmcnOiAnXG4nCisgICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbFxuJworICAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZsb2F0bnVtYmVyICAgOjo9IHBvaW50ZmxvYXQgfCBleHBvbmVudGZsb2F0XG4nCisgICAgICAgICAgICAgJyAgIHBvaW50ZmxvYXQgICAgOjo9IFtkaWdpdHBhcnRdIGZyYWN0aW9uIHwgZGlnaXRwYXJ0ICIuIlxuJworICAgICAgICAgICAgICcgICBleHBvbmVudGZsb2F0IDo6PSAoZGlnaXRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbicKKyAgICAgICAgICAgICAnICAgZGlnaXRwYXJ0ICAgICA6Oj0gZGlnaXQgKFsiXyJdIGRpZ2l0KSpcbicKKyAgICAgICAgICAgICAnICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0cGFydFxuJworICAgICAgICAgICAgICcgICBleHBvbmVudCAgICAgIDo6PSAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBkaWdpdHBhcnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCAnCisgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgJ3JhZGl4IDEwLiBGb3IgZXhhbXBsZSwgIjA3N2UwMTAiIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ251bWJlclxuJworICAgICAgICAgICAgICdhcyAiNzdlMTAiLiBUaGUgYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpc1xuJworICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuICBBcyBpbiBpbnRlZ2VyIGxpdGVyYWxzLCB1bmRlcnNjb3JlcyAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdzdXBwb3J0ZWQgZm9yIGRpZ2l0IGdyb3VwaW5nLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwICAgICcKKyAgICAgICAgICAgICAnMy4xNF8xNV85M1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICcKKyAgICAgICAgICAgICAnIi0xIlxuJworICAgICAgICAgICAgICdpcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAiLSIgYW5kICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2xpdGVyYWwgIjEiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNjogVW5kZXJzY29yZXMgYXJlIG5vdyBhbGxvd2VkIGZvciAnCisgICAgICAgICAgICAgJ2dyb3VwaW5nXG4nCisgICAgICAgICAgICAgJ3B1cnBvc2VzIGluIGxpdGVyYWxzLlxuJywKKyAnZm9yJzogJ1xuJworICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhICcKKyAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICcoc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxuJworICAgICAgICAnb2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbicKKyAgICAgICAgJyJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG4nCisgICAgICAgICdwcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICAnCisgICAgICAgICdFYWNoXG4nCisgICAgICAgICdpdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuJworICAgICAgICAnZm9yIGFzc2lnbm1lbnRzIChzZWUgQXNzaWdubWVudCBzdGF0ZW1lbnRzKSwgYW5kIHRoZW4gdGhlIHN1aXRlIGlzXG4nCisgICAgICAgICdleGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gJworICAgICAgICAndGhlXG4nCisgICAgICAgICdzZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgJworICAgICAgICAnZXhjZXB0aW9uKSxcbicKKyAgICAgICAgJ3RoZSBzdWl0ZSBpbiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgJworICAgICAgICAnbG9vcFxuJworICAgICAgICAndGVybWluYXRlcy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxuJworICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICdleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCAnCisgICAgICAgICdjb250aW51ZXNcbicKKyAgICAgICAgJ3dpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyBuZXh0XG4nCisgICAgICAgICdpdGVtLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZm9yLWxvb3AgbWFrZXMgYXNzaWdubWVudHMgdG8gdGhlIHZhcmlhYmxlcyhzKSBpbiB0aGUgdGFyZ2V0ICcKKyAgICAgICAgJ2xpc3QuXG4nCisgICAgICAgICdUaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyAnCisgICAgICAgICdpbmNsdWRpbmdcbicKKyAgICAgICAgJ3Rob3NlIG1hZGUgaW4gdGhlIHN1aXRlIG9mIHRoZSBmb3ItbG9vcDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZm9yIGkgaW4gcmFuZ2UoMTApOlxuJworICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICcgICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggdGhlICcKKyAgICAgICAgJ25leHRcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuJworICAgICAgICAnXG4nCisgICAgICAgICdOYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG4nCisgICAgICAgICdidXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCB0aGV5IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdFxuJworICAgICAgICAnYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zIGFuXG4nCisgICAgICAgICdpdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzICJmb3IgJworICAgICAgICAnaVxuJworICAgICAgICAnOj0gYSB0byBiIGRvIjsgZS5nLiwgImxpc3QocmFuZ2UoMykpIiByZXR1cm5zIHRoZSBsaXN0ICJbMCwgMSwgMl0iLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdOb3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZVxuJworICAgICAgICAnICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICBBblxuJworICAgICAgICAnICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbicKKyAgICAgICAgJyAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbicKKyAgICAgICAgJyAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyAnCisgICAgICAgICdtZWFuc1xuJworICAgICAgICAnICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gJworICAgICAgICAndGhlXG4nCisgICAgICAgICcgIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggJworICAgICAgICAnb2ZcbicKKyAgICAgICAgJyAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbicKKyAgICAgICAgJyAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4nCisgICAgICAgICcgIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4nCisgICAgICAgICcgIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICAgIGZvciB4IGluIGFbOl06XG4nCisgICAgICAgICcgICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcbicsCisgJ2Zvcm1hdHN0cmluZ3MnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IFN0cmluZyBTeW50YXhcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QgYW5kIHRoZSAiRm9ybWF0dGVyIiBjbGFzcyBzaGFyZSAnCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICdzeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiAnCisgICAgICAgICAgICAgICAgICAnIkZvcm1hdHRlciIsXG4nCisgICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuICBUaGUgJworICAgICAgICAgICAgICAgICAgJ3N5bnRheCBpc1xuJworICAgICAgICAgICAgICAgICAgJ3JlbGF0ZWQgdG8gdGhhdCBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzLCBidXQgdGhlcmUgJworICAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVuY2VzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSAnCisgICAgICAgICAgICAgICAgICAnY3VybHkgYnJhY2VzXG4nCisgICAgICAgICAgICAgICAgICAnInt9Ii4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyAnCisgICAgICAgICAgICAgICAgICAnY29uc2lkZXJlZCBsaXRlcmFsXG4nCisgICAgICAgICAgICAgICAgICAndGV4dCwgd2hpY2ggaXMgY29waWVkIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0LiAgSWYgeW91IG5lZWQgJworICAgICAgICAgICAgICAgICAgJ3RvIGluY2x1ZGVcbicKKyAgICAgICAgICAgICAgICAgICdhIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSAnCisgICAgICAgICAgICAgICAgICAnZG91Ymxpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnInt7IiBhbmQgIn19Ii5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZ3JhbW1hciBmb3IgYSByZXBsYWNlbWVudCBmaWVsZCBpcyBhcyBmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25dIFsiOiIgZm9ybWF0X3NwZWNdICJ9IlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGZpZWxkX25hbWUgICAgICAgIDo6PSBhcmdfbmFtZSAoIi4iIGF0dHJpYnV0ZV9uYW1lIHwgJworICAgICAgICAgICAgICAgICAgJyJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgYXJnX25hbWUgICAgICAgICAgOjo9IFtpZGVudGlmaWVyIHwgaW50ZWdlcl1cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVfbmFtZSAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgaW5kZXhfc3RyaW5nICAgICAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgJworICAgICAgICAgICAgICAgICAgJyJdIj4gK1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBmb3JtYXRfc3BlYyAgICAgICA6Oj0gPGRlc2NyaWJlZCBpbiB0aGUgbmV4dCAnCisgICAgICAgICAgICAgICAgICAnc2VjdGlvbj5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJbiBsZXNzIGZvcm1hbCB0ZXJtcywgdGhlIHJlcGxhY2VtZW50IGZpZWxkIGNhbiBzdGFydCB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICAgICAnKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlZFxuJworICAgICAgICAgICAgICAgICAgJ2FuZCBpbnNlcnRlZCBpbnRvIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiB0aGUgcmVwbGFjZW1lbnQgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkLiBUaGVcbicKKyAgICAgICAgICAgICAgICAgICcqZmllbGRfbmFtZSogaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICAqY29udmVyc2lvbiogJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkLCB3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50ICJcJyFcJyIsIGFuZCBhICcKKyAgICAgICAgICAgICAgICAgICcqZm9ybWF0X3NwZWMqLCB3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVkIGJ5IGEgY29sb24gIlwnOlwnIi4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0IGZvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdyZXBsYWNlbWVudCB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTZWUgYWxzbyB0aGUgRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSBzZWN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyAnCisgICAgICAgICAgICAgICAgICAnZWl0aGVyIGFcbicKKyAgICAgICAgICAgICAgICAgICJudW1iZXIgb3IgYSBrZXl3b3JkLiAgSWYgaXQncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgIgorICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgICJhcmd1bWVudCwgYW5kIGlmIGl0J3MgYSBrZXl3b3JkLCBpdCByZWZlcnMgdG8gYSBuYW1lZCAiCisgICAgICAgICAgICAgICAgICAna2V5d29yZFxuJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICdhcmUgMCwgMSwgMixcbicKKyAgICAgICAgICAgICAgICAgICcuLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSAnCisgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMgMCwgMSwgMiwgLi4uIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbnNlcnRlZCBpbiB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdvcmRlci5cbicKKyAgICAgICAgICAgICAgICAgICdCZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICdwb3NzaWJsZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgJworICAgICAgICAgICAgICAgICAgJyJcJzEwXCciIG9yXG4nCisgICAgICAgICAgICAgICAgICAnIlwnOi1dXCciKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgJworICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5IGFueVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlciBvZiBpbmRleCBvciBhdHRyaWJ1dGUgZXhwcmVzc2lvbnMuIEFuIGV4cHJlc3Npb24gb2YgJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtXG4nCisgICAgICAgICAgICAgICAgICAnIlwnLm5hbWVcJyIgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nICJnZXRhdHRyKCkiLCAnCisgICAgICAgICAgICAgICAgICAnd2hpbGUgYW5cbicKKyAgICAgICAgICAgICAgICAgICdleHByZXNzaW9uIG9mIHRoZSBmb3JtICJcJ1tpbmRleF1cJyIgZG9lcyBhbiBpbmRleCBsb29rdXAgJworICAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgJworICAgICAgICAgICAgICAgICAgJ2NhbiBiZVxuJworICAgICAgICAgICAgICAgICAgJ29taXR0ZWQsIHNvICJcJ3t9IHt9XCciIGlzIGVxdWl2YWxlbnQgdG8gIlwnezB9IHsxfVwnIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTb21lIHNpbXBsZSBmb3JtYXQgc3RyaW5nIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICAjIFJlZmVyZW5jZXMgZmlyc3QgJworICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgICMgU2FtZSBhcyAiRnJvbSB7MH0gdG8gJworICAgICAgICAgICAgICAgICAgJ3sxfSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgJworICAgICAgICAgICAgICAgICAgImFyZ3VtZW50ICduYW1lJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICdvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJVbml0cyBkZXN0cm95ZWQ6IHtwbGF5ZXJzWzBdfSIgICAjIEZpcnN0IGVsZW1lbnQgb2YgJworICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgJ3BsYXllcnMnLlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICciX19mb3JtYXRfXygpIlxuJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlcyBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAnZGVzaXJhYmxlIHRvXG4nCisgICAgICAgICAgICAgICAgICAnZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZywgb3ZlcnJpZGluZyBpdHMgJworICAgICAgICAgICAgICAgICAgJ293blxuJworICAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2YgZm9ybWF0dGluZy4gIEJ5IGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGEgJworICAgICAgICAgICAgICAgICAgJ3N0cmluZyBiZWZvcmVcbicKKyAgICAgICAgICAgICAgICAgICdjYWxsaW5nICJfX2Zvcm1hdF9fKCkiLCB0aGUgbm9ybWFsIGZvcm1hdHRpbmcgbG9naWMgaXMgJworICAgICAgICAgICAgICAgICAgJ2J5cGFzc2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6ICJcJyFzXCciICcKKyAgICAgICAgICAgICAgICAgICd3aGljaCBjYWxsc1xuJworICAgICAgICAgICAgICAgICAgJyJzdHIoKSIgb24gdGhlIHZhbHVlLCAiXCchclwnIiB3aGljaCBjYWxscyAicmVwcigpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJcJyFhXCciIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAnY2FsbHMgImFzY2lpKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgJyAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsICcKKyAgICAgICAgICAgICAgICAgICdhbGlnbm1lbnQsXG4nCisgICAgICAgICAgICAgICAgICAncGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lIGl0c1xuJworICAgICAgICAgICAgICAgICAgJ293biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJypmb3JtYXRfc3BlYyouXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgJworICAgICAgICAgICAgICAgICAgJ21pbmktbGFuZ3VhZ2UsIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAnaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50ICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgbWF5IGNvbnRhaW4gYSAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgbmFtZSxcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uIGZsYWcgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9uLCBidXQgZGVlcGVyICcKKyAgICAgICAgICAgICAgICAgICduZXN0aW5nIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgJ2FsbG93ZWQuICBUaGUgcmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgJworICAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAgJ3N1YnN0aXR1dGVkIGJlZm9yZSB0aGUgKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuICcKKyAgICAgICAgICAgICAgICAgICdUaGlzXG4nCisgICAgICAgICAgICAgICAgICAnYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGEgdmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTZWUgdGhlIEZvcm1hdCBleGFtcGxlcyBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2VcbicKKyAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyAnCisgICAgICAgICAgICAgICAgICAnY29udGFpbmVkXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGVkXG4nCisgICAgICAgICAgICAgICAgICAnKHNlZSBGb3JtYXQgU3RyaW5nIFN5bnRheCBhbmQgRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscykuICcKKyAgICAgICAgICAgICAgICAgICdUaGV5IGNhblxuJworICAgICAgICAgICAgICAgICAgJ2Fsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBidWlsdC1pbiAiZm9ybWF0KCkiICcKKyAgICAgICAgICAgICAgICAgICdmdW5jdGlvbi4gIEVhY2hcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93IHRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyAnCisgICAgICAgICAgICAgICAgICAndG8gYmVcbicKKyAgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdNb3N0IGJ1aWx0LWluIHR5cGVzIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXRcbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSAnCisgICAgICAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBIGdlbmVyYWwgY29udmVudGlvbiBpcyB0aGF0IGFuIGVtcHR5IGZvcm1hdCBzdHJpbmcgKCIiIiIpICcKKyAgICAgICAgICAgICAgICAgICdwcm9kdWNlc1xuJworICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCAic3RyKCkiIG9uIHRoZSB2YWx1ZS4gJworICAgICAgICAgICAgICAgICAgJ0Egbm9uLWVtcHR5XG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdF9zcGVjICAgICA6Oj0gJworICAgICAgICAgICAgICAgICAgJ1tbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdW2dyb3VwaW5nX29wdGlvbl1bLnByZWNpc2lvbl1bdHlwZV1cbicKKyAgICAgICAgICAgICAgICAgICcgICBmaWxsICAgICAgICAgICAgOjo9IDxhbnkgY2hhcmFjdGVyPlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFsaWduICAgICAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2lnbiAgICAgICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWR0aCAgICAgICAgICAgOjo9IGludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICBncm91cGluZ19vcHRpb24gOjo9ICJfIiB8ICIsIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHByZWNpc2lvbiAgICAgICA6Oj0gaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAgJyAgIHR5cGUgICAgICAgICAgICA6Oj0gImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgJworICAgICAgICAgICAgICAgICAgJyJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIGEgdmFsaWQgKmFsaWduKiB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGNhbiBiZSBwcmVjZWRlZCAnCisgICAgICAgICAgICAgICAgICAnYnkgYSAqZmlsbCpcbicKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgdGhhdCBjYW4gYmUgYW55IGNoYXJhY3RlciBhbmQgZGVmYXVsdHMgdG8gYSBzcGFjZSAnCisgICAgICAgICAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIGEgbGl0ZXJhbCBjdXJseSBicmFjZSAnCisgICAgICAgICAgICAgICAgICAnKCIieyIiIG9yXG4nCisgICAgICAgICAgICAgICAgICAnIiJ9IiIpIGFzIHRoZSAqZmlsbCogY2hhcmFjdGVyIGluIGEgZm9ybWF0dGVkIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnbGl0ZXJhbCBvciB3aGVuXG4nCisgICAgICAgICAgICAgICAgICAndXNpbmcgdGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZC4gIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlICcKKyAgICAgICAgICAgICAgICAgICd0byBpbnNlcnQgYVxuJworICAgICAgICAgICAgICAgICAgJ2N1cmx5IGJyYWNlIHdpdGggYSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGQuICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICJsaW1pdGF0aW9uIGRvZXNuJ3RcbiIKKyAgICAgICAgICAgICAgICAgICdhZmZlY3QgdGhlICJmb3JtYXQoKSIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgJworICAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBPcHRpb24gICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnPFwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cykuICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCc+XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJz1cJyIgICAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciAnCisgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gKGlmIGFueSkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciAnCisgICAgICAgICAgICAgICAgICAncHJpbnRpbmcgZmllbGRzICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gJyswMDAwMDAxMjAnLiBUaGlzIGFsaWdubWVudCAiCisgICAgICAgICAgICAgICAgICAnb3B0aW9uIGlzIG9ubHkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICBJdCBiZWNvbWVzIHRoZSAnCisgICAgICAgICAgICAgICAgICAiZGVmYXVsdCB3aGVuICcwJyAgfFxuIgorICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgaW1tZWRpYXRlbHkgcHJlY2VkZXMgdGhlIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnXlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiAnCisgICAgICAgICAgICAgICAgICAndGhlIGF2YWlsYWJsZSAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgd2lkdGhcbicKKyAgICAgICAgICAgICAgICAgICd3aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvICcKKyAgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2FsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiAnCisgICAgICAgICAgICAgICAgICAnYmUgb25lIG9mXG4nCisgICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZzpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE9wdGlvbiAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCcrXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAgJ2JvdGggcG9zaXRpdmUgYXMgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJy1cJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkICcKKyAgICAgICAgICAgICAgICAgICdvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAnYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAndXNlZCBvbiBwb3NpdGl2ZSAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycy4gICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCcjXCciIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICAnZm9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24uICBUaGUgYWx0ZXJuYXRlIGZvcm0gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgJworICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudFxuJworICAgICAgICAgICAgICAgICAgJ3R5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsICcKKyAgICAgICAgICAgICAgICAgICdjb21wbGV4IGFuZFxuJworICAgICAgICAgICAgICAgICAgJ0RlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciAnCisgICAgICAgICAgICAgICAgICAnaGV4YWRlY2ltYWwgb3V0cHV0XG4nCisgICAgICAgICAgICAgICAgICAnaXMgdXNlZCwgdGhpcyBvcHRpb24gYWRkcyB0aGUgcHJlZml4IHJlc3BlY3RpdmUgIlwnMGJcJyIsICcKKyAgICAgICAgICAgICAgICAgICciXCcwb1wnIiwgb3JcbicKKyAgICAgICAgICAgICAgICAgICciXCcweFwnIiB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCAnCisgICAgICAgICAgICAgICAgICAnRGVjaW1hbCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byAnCisgICAgICAgICAgICAgICAgICAnYWx3YXlzIGNvbnRhaW4gYVxuJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwtcG9pbnQgY2hhcmFjdGVyLCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuICcKKyAgICAgICAgICAgICAgICAgICdOb3JtYWxseSwgYVxuJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSAnCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAgICdvbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciAiXCdnXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAnIlwnR1wnIlxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgJ3Jlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgIlwnLFwnIiBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgJworICAgICAgICAgICAgICAgICAgJ3Rob3VzYW5kcyBzZXBhcmF0b3IuXG4nCisgICAgICAgICAgICAgICAgICAnRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSAiXCduXCciIGludGVnZXIgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRhdGlvbiB0eXBlXG4nCisgICAgICAgICAgICAgICAgICAnaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgIlwnLFwnIiBvcHRpb24gKHNlZSBhbHNvICcKKyAgICAgICAgICAgICAgICAgICcqKlBFUCAzNzgqKikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJcJ19cJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhbiB1bmRlcnNjb3JlIGZvciBhICcKKyAgICAgICAgICAgICAgICAgICd0aG91c2FuZHNcbicKKyAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgZm9yIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBhbmQgZm9yICcKKyAgICAgICAgICAgICAgICAgICdpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAncHJlc2VudGF0aW9uIHR5cGUgIlwnZFwnIi4gIEZvciBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyAnCisgICAgICAgICAgICAgICAgICAnIlwnYlwnIiwgIlwnb1wnIixcbicKKyAgICAgICAgICAgICAgICAgICciXCd4XCciLCBhbmQgIlwnWFwnIiwgdW5kZXJzY29yZXMgd2lsbCBiZSBpbnNlcnRlZCBldmVyeSA0ICcKKyAgICAgICAgICAgICAgICAgICdkaWdpdHMuICBGb3JcbicKKyAgICAgICAgICAgICAgICAgICdvdGhlciBwcmVzZW50YXRpb24gdHlwZXMsIHNwZWNpZnlpbmcgdGhpcyBvcHRpb24gaXMgYW4gJworICAgICAgICAgICAgICAgICAgJ2Vycm9yLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IEFkZGVkIHRoZSAiXCdfXCciIG9wdGlvbiAoc2VlIGFsc28gJworICAgICAgICAgICAgICAgICAgJyoqUEVQIDUxNSoqKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcqd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aC4gIElmIG5vdFxuJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnY29udGVudC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdXaGVuIG5vIGV4cGxpY2l0IGFsaWdubWVudCBpcyBnaXZlbiwgcHJlY2VkaW5nIHRoZSAqd2lkdGgqICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCBieSBhXG4nCisgICAgICAgICAgICAgICAgICAnemVybyAoIlwnMFwnIikgY2hhcmFjdGVyIGVuYWJsZXMgc2lnbi1hd2FyZSB6ZXJvLXBhZGRpbmcgJworICAgICAgICAgICAgICAgICAgJ2ZvciBudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAndHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAqZmlsbCogY2hhcmFjdGVyIG9mICJcJzBcJyIgJworICAgICAgICAgICAgICAgICAgJ3dpdGggYW5cbicKKyAgICAgICAgICAgICAgICAgICcqYWxpZ25tZW50KiB0eXBlIG9mICJcJz1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzIHNob3VsZFxuJworICAgICAgICAgICAgICAgICAgJ2JlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCAnCisgICAgICAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWQgd2l0aCAiXCdmXCciIGFuZCAiXCdGXCciLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludFxuJworICAgICAgICAgICAgICAgICAgJ2ZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoICJcJ2dcJyIgb3IgJworICAgICAgICAgICAgICAgICAgJyJcJ0dcJyIuICBGb3Igbm9uLVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSAnCisgICAgICAgICAgICAgICAgICAnaW4gb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgICd3b3JkcywgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgZnJvbSB0aGUgZmllbGQgJworICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgJypwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgJworICAgICAgICAgICAgICAgICAgJ2ZvciBzdHJpbmdzIGFuZCAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgJ29taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAnIlwnc1wnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdiXCciICAgICB8IEJpbmFyeSBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAyLiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdW5pY29kZSBjaGFyYWN0ZXIgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAxMC4gICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdvXCciICAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzguICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ3hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzE2LCB1c2luZyBsb3dlci0gICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlICcKKyAgICAgICAgICAgICAgICAgICc5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnWFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAnCisgICAgICAgICAgICAgICAgICAnMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgJworICAgICAgICAgICAgICAgICAgJzkuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdkXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2RcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuICcKKyAgICAgICAgICAgICAgICAgICdiZSBmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgbGlzdGVkIGJlbG93ICcKKyAgICAgICAgICAgICAgICAgICcoZXhjZXB0ICJcJ25cJyJcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgTm9uZSkuIFdoZW4gZG9pbmcgc28sICJmbG9hdCgpIiBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnRlZ2VyIHRvXG4nCisgICAgICAgICAgICAgICAgICAnYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAgICdhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ3NjaWVudGlmaWMgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyICdlJyB0byBpbmRpY2F0ZSAiCisgICAgICAgICAgICAgICAgICAndGhlIGV4cG9uZW50LiAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdFXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzICJcJ2VcJyIgJworICAgICAgICAgICAgICAgICAgJ2V4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgY2FzZSAnRScgYXMgdGhlIHNlcGFyYXRvciAiCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZlwnIiAgICAgfCBGaXhlZCBwb2ludC4gRGlzcGxheXMgdGhlIG51bWJlciBhcyBhICcKKyAgICAgICAgICAgICAgICAgICdmaXhlZC1wb2ludCBudW1iZXIuICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdGXCciICAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzICJcJ2ZcJyIsIGJ1dCAnCisgICAgICAgICAgICAgICAgICAnY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYW5kICJpbmYiIHRvICcKKyAgICAgICAgICAgICAgICAgICciSU5GIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZ1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiAnCisgICAgICAgICAgICAgICAgICAnInAgPj0gMSIsIHRoaXMgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byAicCIgc2lnbmlmaWNhbnQgJworICAgICAgICAgICAgICAgICAgJ2RpZ2l0cyBhbmQgdGhlbiAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50ICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgb3IgaW4gICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzICcKKyAgICAgICAgICAgICAgICAgICdtYWduaXR1ZGUuICBUaGUgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ3RoZSByZXN1bHQgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciICcKKyAgICAgICAgICAgICAgICAgICdhbmQgcHJlY2lzaW9uICJwLTEiIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdvdWxkIGhhdmUgZXhwb25lbnQgImV4cCIuICBUaGVuIGlmICItNCA8PSAnCisgICAgICAgICAgICAgICAgICAnZXhwIDwgcCIsIHRoZSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAnCisgICAgICAgICAgICAgICAgICAnIlwnZlwnIiBhbmQgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgaXMgZm9ybWF0dGVkICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmVtb3ZlZCBmcm9tIHRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzIGFsc28gJworICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQgaWYgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAgJ2l0LiAgUG9zaXRpdmUgYW5kICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICd6ZXJvLCBhbmQgbmFucywgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgIi0wIiAnCisgICAgICAgICAgICAgICAgICAnYW5kICJuYW4iICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAiMCIgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvIGEgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbiBvZiAiMSIuIFRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdHXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzICJcJ2dcJyIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICdzd2l0Y2hlcyB0byAiXCdFXCciIGlmICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9ucyBvZiBpbmZpbml0eSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCAnCisgICAgICAgICAgICAgICAgICAndG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnJVwnIiAgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwICcKKyAgICAgICAgICAgICAgICAgICdhbmQgZGlzcGxheXMgaW4gICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmaXhlZCAoIlwnZlwnIikgZm9ybWF0LCBmb2xsb3dlZCBieSBhICcKKyAgICAgICAgICAgICAgICAgICdwZXJjZW50IHNpZ24uICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gIlwnZ1wnIiwgZXhjZXB0IHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2ZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdXNlZCwgaGFzIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludC4gVGhlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgdG8gJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudCB0aGUgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcGFydGljdWxhciB2YWx1ZS4gVGhlIG92ZXJhbGwgZWZmZWN0IGlzIHRvICcKKyAgICAgICAgICAgICAgICAgICdtYXRjaCB0aGUgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgb3V0cHV0IG9mICJzdHIoKSIgYXMgYWx0ZXJlZCBieSB0aGUgb3RoZXIgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ21vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgZXhhbXBsZXNcbicKKyAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlICJzdHIuZm9ybWF0KCkiIHN5bnRheCAnCisgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAgJyIlIi1mb3JtYXR0aW5nLFxuJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSAie30iIGFuZCB3aXRoICI6IiB1c2VkIGluc3RlYWQgb2YgJworICAgICAgICAgICAgICAgICAgJyIlIi4gRm9yXG4nCisgICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICdvcHRpb25zLCBzaG93blxuJworICAgICAgICAgICAgICAgICAgJ2luIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3swfSwgezF9LCB7Mn0nLmZvcm1hdCgnYScsICdiJywgJ2MnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdhLCBiLCBjJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAne30sIHt9LCB7fScuZm9ybWF0KCdhJywgJ2InLCAnYycpICAjIDMuMSsgb25seVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdhLCBiLCBjJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezJ9LCB7MX0sIHswfScuZm9ybWF0KCdhJywgJ2InLCAnYycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2MsIGIsIGEnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Mn0sIHsxfSwgezB9Jy5mb3JtYXQoKidhYmMnKSAgICAgICMgdW5wYWNraW5nICIKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgIiAgICdjLCBiLCBhJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezB9ezF9ezB9Jy5mb3JtYXQoJ2FicmEnLCAnY2FkJykgICAjIGFyZ3VtZW50cycgIgorICAgICAgICAgICAgICAgICAgJ2luZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2FicmFjYWRhYnJhJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCAiCisgICAgICAgICAgICAgICAgICAie2xvbmdpdHVkZX0nLmZvcm1hdChsYXRpdHVkZT0nMzcuMjROJywgIgorICAgICAgICAgICAgICAgICAgImxvbmdpdHVkZT0nLTExNS44MVcnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxVydcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gY29vcmQgPSB7J2xhdGl0dWRlJzogJzM3LjI0TicsICdsb25naXR1ZGUnOiAiCisgICAgICAgICAgICAgICAgICAiJy0xMTUuODFXJ31cbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCAiCisgICAgICAgICAgICAgICAgICAie2xvbmdpdHVkZX0nLmZvcm1hdCgqKmNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxVydcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBhdHRyaWJ1dGVzOlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gMy01alxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAoJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgIgorICAgICAgICAgICAgICAgICAgInBhcnQgezAucmVhbH0gJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uJykuZm9ybWF0KGMpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ1RoZSBjb21wbGV4IG51bWJlciAoMy01aikgaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCAiCisgICAgICAgICAgICAgICAgICAiMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC4nXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIFBvaW50OlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdQb2ludCh7c2VsZi54fSwgIgorICAgICAgICAgICAgICAgICAgIntzZWxmLnl9KScuZm9ybWF0KHNlbGY9c2VsZilcbiIKKyAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdQb2ludCg0LCAyKSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBpdGVtczpcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gY29vcmQgPSAoMywgNSlcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ1g6IHswWzBdfTsgIFk6IHswWzFdfScuZm9ybWF0KGNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdYOiAzOyAgWTogNSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiAnCisgICAgICAgICAgICAgICAgICAneyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuJworICAgICAgICAgICAgICAgICAgJyAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezo8MzB9Jy5mb3JtYXQoJ2xlZnQgYWxpZ25lZCcpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgICdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6PjMwfScuZm9ybWF0KCdyaWdodCBhbGlnbmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezpeMzB9Jy5mb3JtYXQoJ2NlbnRlcmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezoqXjMwfScuZm9ybWF0KCdjZW50ZXJlZCcpICAjIHVzZSAnKicgYXMgYSBmaWxsICIKKyAgICAgICAgICAgICAgICAgICdjaGFyXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKidcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiUrZiIsICIlLWYiLCBhbmQgIiUgZiIgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezorZn07IHs6K2Z9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgIgorICAgICAgICAgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICAgICAgICAgIiAgICcrMy4xNDAwMDA7IC0zLjE0MDAwMCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6IGZ9OyB7OiBmfScuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgIgorICAgICAgICAgICAgICAgICAgJ2ZvciBwb3NpdGl2ZSBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyAzLjE0MDAwMDsgLTMuMTQwMDAwJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezotZn07IHs6LWZ9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgIgorICAgICAgICAgICAgICAgICAgIm1pbnVzIC0tIHNhbWUgYXMgJ3s6Zn07IHs6Zn0nXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzMuMTQwMDAwOyAtMy4xNDAwMDAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUmVwbGFjaW5nICIleCIgYW5kICIlbyIgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvICcKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgYmFzZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOmJ9Ii5mb3JtYXQoNDIpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOiNifSIuZm9ybWF0KDQyKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezosfScuZm9ybWF0KDEyMzQ1Njc4OTApXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzEsMjM0LDU2Nyw4OTAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHBvaW50cyA9IDE5XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHRvdGFsID0gMjJcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0NvcnJlY3QgYW5zd2VyczogezouMiV9Jy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb3JyZWN0IGFuc3dlcnM6IDg2LjM2JSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBkYXRldGltZVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6JVktJW0tJWQgJUg6JU06JVN9Jy5mb3JtYXQoZClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnMjAxMC0wNy0wNCAxMjoxNTo1OCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdOZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKCc8Xj4nLCBbJ2xlZnQnLCAnY2VudGVyJywgIgorICAgICAgICAgICAgICAgICAgIidyaWdodCddKTpcbiIKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICd7MDp7ZmlsbH17YWxpZ259MTZ9Jy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgIgorICAgICAgICAgICAgICAgICAgJ2FsaWduPWFsaWduKVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgIiAgICdsZWZ0PDw8PDw8PDw8PDw8J1xuIgorICAgICAgICAgICAgICAgICAgIiAgICdeXl5eXmNlbnRlcl5eXl5eJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgICc+Pj4+Pj4+Pj4+PnJpZ2h0J1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OjAyWH17OjAyWH17OjAyWH17OjAyWH0nLmZvcm1hdCgqb2N0ZXRzKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDMEE4MDAwMSdcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50KF8sIDE2KVxuJworICAgICAgICAgICAgICAgICAgJyAgIDMyMzIyMzU1MjFcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gd2lkdGggPSA1XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiAnCisgICAgICAgICAgICAgICAgICAnK05PUk1BTElaRV9XSElURVNQQUNFXG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICBmb3IgYmFzZSBpbiAnZFhvYic6XG4iCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcHJpbnQoJ3swOnt3aWR0aH17YmFzZX19Jy5mb3JtYXQobnVtLCAiCisgICAgICAgICAgICAgICAgICAiYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD0nICcpXG4iCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwcmludCgpXG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgNiAgICAgNiAgICAgNiAgIDExMFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgOSAgICAgOSAgICAxMSAgMTAwMVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCisgJ2Z1bmN0aW9uJzogJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmdW5jZGVmICAgICAgICAgICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICAgICAgICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICAgICAgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgJworICAgICAgICAgICAgICdbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4nCisgICAgICAgICAgICAgJyAgIGRvdHRlZF9uYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0ICAgICAgICAgIDo6PSBkZWZwYXJhbWV0ZXIgKCIsIiBkZWZwYXJhbWV0ZXIpKiAnCisgICAgICAgICAgICAgJ1siLCIgW3BhcmFtZXRlcl9saXN0X3N0YXJhcmdzXV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3MgOjo9ICIqIiBbcGFyYW1ldGVyXSAoIiwiICcKKyAgICAgICAgICAgICAnZGVmcGFyYW1ldGVyKSogWyIsIiBbIioqIiBwYXJhbWV0ZXIgWyIsIl1dXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlciBbIiwiXVxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXIgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGRlZnBhcmFtZXRlciAgICAgICAgICAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBmdW5jbmFtZSAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ2JpbmRzXG4nCisgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJyhhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgJworICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAnYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzICcKKyAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICdyZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gbmFtZVxuJworICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkICcKKyAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdleGNlcHQgdGhhdCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgbm90IHRlbXBvcmFyaWx5IGJvdW5kIHRvICcKKyAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAnImZ1bmMiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbicKKyAgICAgICAgICAgICAnKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3ZhbHVlcy4iXG4nCisgICAgICAgICAgICAgJ0ZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICcqYXJndW1lbnQqIG1heVxuJworICAgICAgICAgICAgICJiZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXIncyBkZWZhdWx0ICIKKyAgICAgICAgICAgICAndmFsdWUgaXNcbicKKyAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2lzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgJworICAgICAgICAgICAgICdncmFtbWFyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJyJwcmUtXG4nCisgICAgICAgICAgICAgJ2NvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgJworICAgICAgICAgICAgICdpbXBvcnRhbnRcbicKKyAgICAgICAgICAgICAndG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCAnCisgICAgICAgICAgICAgJ2FzIGFcbicKKyAgICAgICAgICAgICAnbGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAnYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0ICcKKyAgICAgICAgICAgICAnbW9kaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzICcKKyAgICAgICAgICAgICAndG8gdXNlXG4nCisgICAgICAgICAgICAgJyJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24sIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4nCisgICAgICAgICAgICAgJyAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4nCisgICAgICAgICAgICAgJyAgICAgICByZXR1cm4gcGVuZ3VpblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAnQ2FsbHMuXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW5cbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20gJworICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtICIiKmlkZW50aWZpZXIiIiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueSBleGNlc3MgJworICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiBJZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICciIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3IG9yZGVyZWRcbicKKyAgICAgICAgICAgICAnbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhICcKKyAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgJ2VtcHR5IG1hcHBpbmcgb2YgdGhlIHNhbWUgdHlwZS4gIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3JcbicKKyAgICAgICAgICAgICAnIiIqaWRlbnRpZmllciIiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgJworICAgICAgICAgICAgICdwYXNzZWRcbicKKyAgICAgICAgICAgICAndXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1BhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiAnCisgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5ICcKKyAgICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICAgICdsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyAnCisgICAgICAgICAgICAgJ21heVxuJworICAgICAgICAgICAgICdiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlICcKKyAgICAgICAgICAgICAnY29kZS5cbicKKyAgICAgICAgICAgICAnVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuJworICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzJyBuYW1lcyBpbiB0aGUgIgorICAgICAgICAgICAgICciX19hbm5vdGF0aW9uc19fIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgJworICAgICAgICAgICAgICdib3VuZFxuJworICAgICAgICAgICAgICd0byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uIExhbWJkYXMuICBOb3RlIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gJworICAgICAgICAgICAgICdkZWZpbml0aW9uO1xuJworICAgICAgICAgICAgICdhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSAnCisgICAgICAgICAgICAgJ2l0XG4nCisgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIKKyAgICAgICAgICAgICAnIiJkZWYiIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICdpbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiBOYW1pbmcgYW5kIGJpbmRpbmcgZm9yICcKKyAgICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCisgJ2dsb2JhbCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZ2xvYmFsX3N0bXQgOjo9ICJnbG9iYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgJworICAgICAgICAgICAnZW50aXJlXG4nCisgICAgICAgICAgICdjdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvICcKKyAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICdpbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSAnCisgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIHdpdGhvdXQgImdsb2JhbCIsIGFsdGhvdWdoIGZyZWUgdmFyaWFibGVzIG1heSByZWZlciB0b1xuJworICAgICAgICAgICAnZ2xvYmFscyB3aXRob3V0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIHVzZWQgaW4gdGhlIHNhbWUgJworICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAnYmxvY2sgdGV4dHVhbGx5IHByZWNlZGluZyB0aGF0ICJnbG9iYWwiIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIGRlZmluZWQgYXMgJworICAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgICdwYXJhbWV0ZXJzIG9yIGluIGEgImZvciIgbG9vcCBjb250cm9sIHRhcmdldCwgImNsYXNzIiBkZWZpbml0aW9uLFxuJworICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbiwgImltcG9ydCIgc3RhdGVtZW50LCBvciB2YXJpYWJsZSBhbm5vdGF0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgJworICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICdlbmZvcmNlIHNvbWUgb2YgdGhlc2UgcmVzdHJpY3Rpb24sIGJ1dCBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlICcKKyAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgJ2ZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UgdGhlbSBvciBzaWxlbnRseSAnCisgICAgICAgICAgICdjaGFuZ2VcbicKKyAgICAgICAgICAgJ3RoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiB0aGUgImdsb2JhbCIgaXMgYSBkaXJlY3RpdmUgdG8gdGhlICcKKyAgICAgICAgICAgJ3BhcnNlci4gIEl0XG4nCisgICAgICAgICAgICdhcHBsaWVzIG9ubHkgdG8gY29kZSBwYXJzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgImdsb2JhbCJcbicKKyAgICAgICAgICAgJ3N0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgJworICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICdvciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgZnVuY3Rpb24gZG9lcyAnCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2FmZmVjdCB0aGUgY29kZSBibG9jayAqY29udGFpbmluZyogdGhlIGZ1bmN0aW9uIGNhbGwsIGFuZCBjb2RlXG4nCisgICAgICAgICAgICdjb250YWluZWQgaW4gc3VjaCBhIHN0cmluZyBpcyB1bmFmZmVjdGVkIGJ5ICJnbG9iYWwiIHN0YXRlbWVudHMgaW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjb2RlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGwuICBUaGUgc2FtZSBhcHBsaWVzIHRvIHRoZSAnCisgICAgICAgICAgICciZXZhbCgpIlxuJworICAgICAgICAgICAnYW5kICJjb21waWxlKCkiIGZ1bmN0aW9ucy5cbicsCisgJ2lkLWNsYXNzZXMnOiAnXG4nCisgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdDZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgJworICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICdtZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mICcKKyAgICAgICAgICAgICAgICdsZWFkaW5nIGFuZFxuJworICAgICAgICAgICAgICAgJ3RyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciXyoiXG4nCisgICAgICAgICAgICAgICAnICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCAnCisgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiXyJcbicKKyAgICAgICAgICAgICAgICcgICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0ICcKKyAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICAnCisgICAgICAgICAgICAgICAnV2hlbiBub3RcbicKKyAgICAgICAgICAgICAgICcgICBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICdkZWZpbmVkLlxuJworICAgICAgICAgICAgICAgJyAgIFNlZSBzZWN0aW9uIFRoZSBpbXBvcnQgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbicKKyAgICAgICAgICAgICAgICcgICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAnICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgJworICAgICAgICAgICAgICAgJ2NvbnZlbnRpb24uXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnIl9fKl9fIlxuJworICAgICAgICAgICAgICAgJyAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgJworICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAnICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gICcKKyAgICAgICAgICAgICAgICdDdXJyZW50XG4nCisgICAgICAgICAgICAgICAnICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlIFNwZWNpYWwgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICdzZWN0aW9uIGFuZFxuJworICAgICAgICAgICAgICAgJyAgIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgJworICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAnICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0ICcKKyAgICAgICAgICAgICAgICdkb2VzIG5vdFxuJworICAgICAgICAgICAgICAgJyAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlICcKKyAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAnICAgd2FybmluZy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciX18qIlxuJworICAgICAgICAgICAgICAgJyAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgJworICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgJworICAgICAgICAgICAgICAgJ21hbmdsZWQgZm9ybVxuJworICAgICAgICAgICAgICAgJyAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgJworICAgICAgICAgICAgICAgJ2Jhc2UgYW5kXG4nCisgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiBJZGVudGlmaWVycyAoTmFtZXMpLlxuJywKKyAnaWRlbnRpZmllcnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIGFuZCBrZXl3b3Jkc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIChhbHNvIHJlZmVycmVkIHRvIGFzICpuYW1lcyopIGFyZSBkZXNjcmliZWQgYnkgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSAnCisgICAgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgICAgJ2FubmV4IFVBWC0zMSwgd2l0aCBlbGFib3JhdGlvbiBhbmQgY2hhbmdlcyBhcyBkZWZpbmVkIGJlbG93OyAnCisgICAgICAgICAgICAgICAgJ3NlZSBhbHNvXG4nCisgICAgICAgICAgICAgICAgJyoqUEVQIDMxMzEqKiBmb3IgZnVydGhlciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICdpZGVudGlmaWVycyBhcmUgdGhlIHNhbWUgYXMgaW4gUHl0aG9uIDIueDogdGhlIHVwcGVyY2FzZSBhbmQgJworICAgICAgICAgICAgICAgICdsb3dlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAnbGV0dGVycyAiQSIgdGhyb3VnaCAiWiIsIHRoZSB1bmRlcnNjb3JlICJfIiBhbmQsIGV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICAgICd0aGUgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVyLCB0aGUgZGlnaXRzICIwIiB0aHJvdWdoICI5Ii5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1B5dGhvbiAzLjAgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgZnJvbSBvdXRzaWRlIHRoZSAnCisgICAgICAgICAgICAgICAgJ0FTQ0lJXG4nCisgICAgICAgICAgICAgICAgJ3JhbmdlIChzZWUgKipQRVAgMzEzMSoqKS4gIEZvciB0aGVzZSBjaGFyYWN0ZXJzLCB0aGUgJworICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhdGlvblxuJworICAgICAgICAgICAgICAgICd1c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyAnCisgICAgICAgICAgICAgICAgJ2luY2x1ZGVkIGluIHRoZVxuJworICAgICAgICAgICAgICAgICcidW5pY29kZWRhdGEiIG1vZHVsZS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIGFyZSB1bmxpbWl0ZWQgaW4gbGVuZ3RoLiAgQ2FzZSBpcyBzaWduaWZpY2FudC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbicKKyAgICAgICAgICAgICAgICAnICAgaWRfc3RhcnQgICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gZ2VuZXJhbCBjYXRlZ29yaWVzIEx1LCAnCisgICAgICAgICAgICAgICAgJ0xsLCBMdCwgTG0sIExvLCBObCwgdGhlIHVuZGVyc2NvcmUsIGFuZCBjaGFyYWN0ZXJzIHdpdGggdGhlICcKKyAgICAgICAgICAgICAgICAnT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4nCisgICAgICAgICAgICAgICAgJyAgIGlkX2NvbnRpbnVlICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0LCBwbHVzICcKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBpbiB0aGUgY2F0ZWdvcmllcyBNbiwgTWMsIE5kLCBQYyBhbmQgb3RoZXJzIHdpdGggJworICAgICAgICAgICAgICAgICd0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4nCisgICAgICAgICAgICAgICAgJyAgIHhpZF9zdGFydCAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0IHdob3NlIE5GS0MgJworICAgICAgICAgICAgICAgICdub3JtYWxpemF0aW9uIGlzIGluICJpZF9zdGFydCB4aWRfY29udGludWUqIj5cbicKKyAgICAgICAgICAgICAgICAnICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyAnCisgICAgICAgICAgICAgICAgJ25vcm1hbGl6YXRpb24gaXMgaW4gImlkX2NvbnRpbnVlKiI+XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTHUqIC0gdXBwZXJjYXNlIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkxsKiAtIGxvd2VyY2FzZSBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTG0qIC0gbW9kaWZpZXIgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTG8qIC0gb3RoZXIgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk1uKiAtIG5vbnNwYWNpbmcgbWFya3NcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk1jKiAtIHNwYWNpbmcgY29tYmluaW5nIG1hcmtzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpOZCogLSBkZWNpbWFsIG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKlBjKiAtIGNvbm5lY3RvciBwdW5jdHVhdGlvbnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk90aGVyX0lEX1N0YXJ0KiAtIGV4cGxpY2l0IGxpc3Qgb2YgY2hhcmFjdGVycyBpbiAnCisgICAgICAgICAgICAgICAgJ1Byb3BMaXN0LnR4dCB0b1xuJworICAgICAgICAgICAgICAgICcgIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk90aGVyX0lEX0NvbnRpbnVlKiAtIGxpa2V3aXNlXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdBbGwgaWRlbnRpZmllcnMgYXJlIGNvbnZlcnRlZCBpbnRvIHRoZSBub3JtYWwgZm9ybSBORktDIHdoaWxlICcKKyAgICAgICAgICAgICAgICAncGFyc2luZztcbicKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQSBub24tbm9ybWF0aXZlIEhUTUwgZmlsZSBsaXN0aW5nIGFsbCB2YWxpZCBpZGVudGlmaWVyICcKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBmb3JcbicKKyAgICAgICAgICAgICAgICAnVW5pY29kZSA0LjEgY2FuIGJlIGZvdW5kIGF0IGh0dHBzOi8vd3d3LmRjbC5ocGkudW5pLVxuJworICAgICAgICAgICAgICAgICdwb3RzZGFtLmRlL2hvbWUvbG9ld2lzL3RhYmxlLTMxMzEuaHRtbC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdLZXl3b3Jkc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBhcmUgdXNlZCBhcyByZXNlcnZlZCB3b3Jkcywgb3IgJworICAgICAgICAgICAgICAgICcqa2V5d29yZHMqIG9mXG4nCisgICAgICAgICAgICAgICAgJ3RoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgJworICAgICAgICAgICAgICAgICdUaGV5IG11c3RcbicKKyAgICAgICAgICAgICAgICAnYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIEZhbHNlICAgICAgY2xhc3MgICAgICBmaW5hbGx5ICAgIGlzICAgICAgICAgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4nCisgICAgICAgICAgICAgICAgJyAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbicKKyAgICAgICAgICAgICAgICAnICAgYW5kICAgICAgICBkZWwgICAgICAgIGdsb2JhbCAgICAgbm90ICAgICAgICB3aXRoXG4nCisgICAgICAgICAgICAgICAgJyAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbicKKyAgICAgICAgICAgICAgICAnICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICcgICBicmVhayAgICAgIGV4Y2VwdCAgICAgaW4gICAgICAgICByYWlzZVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlICcKKyAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICdtZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mICcKKyAgICAgICAgICAgICAgICAnbGVhZGluZyBhbmRcbicKKyAgICAgICAgICAgICAgICAndHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl8qIlxuJworICAgICAgICAgICAgICAgICcgICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiXyJcbicKKyAgICAgICAgICAgICAgICAnICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCAnCisgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICcgICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICAnCisgICAgICAgICAgICAgICAgJ1doZW4gbm90XG4nCisgICAgICAgICAgICAgICAgJyAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgJworICAgICAgICAgICAgICAgICdkZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICcgICBTZWUgc2VjdGlvbiBUaGUgaW1wb3J0IHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJyAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzICcKKyAgICAgICAgICAgICAgICAnY29udmVudGlvbi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyJfXypfXyJcbicKKyAgICAgICAgICAgICAgICAnICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgJyAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICAnCisgICAgICAgICAgICAgICAgJ0N1cnJlbnRcbicKKyAgICAgICAgICAgICAgICAnICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlIFNwZWNpYWwgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICAnc2VjdGlvbiBhbmRcbicKKyAgICAgICAgICAgICAgICAnICAgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyAnCisgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgJyAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiAiX18qX18iIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCAnCisgICAgICAgICAgICAgICAgJ2RvZXMgbm90XG4nCisgICAgICAgICAgICAgICAgJyAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlICcKKyAgICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAgICcgICB3YXJuaW5nLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl9fKiJcbicKKyAgICAgICAgICAgICAgICAnICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCAnCisgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAnICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhICcKKyAgICAgICAgICAgICAgICAnbWFuZ2xlZCBmb3JtXG4nCisgICAgICAgICAgICAgICAgJyAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgJworICAgICAgICAgICAgICAgICdiYXNlIGFuZFxuJworICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uIElkZW50aWZpZXJzIChOYW1lcykuXG4nLAorICdpZic6ICdcbicKKyAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAnXG4nCisgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgJ1xuJworICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICdvbmVcbicKKyAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuIG9wZXJhdGlvbnNcbicKKyAgICAgICAnZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4nCisgICAgICAgJyhhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbicKKyAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxuJworICAgICAgICdwcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCisgJ2ltYWdpbmFyeSc6ICdcbicKKyAgICAgICAgICAgICAgJ0ltYWdpbmFyeSBsaXRlcmFsc1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0ltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgaW1hZ251bWJlciA6Oj0gKGZsb2F0bnVtYmVyIHwgZGlnaXRwYXJ0KSAoImoiIHwgIkoiKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBpbWFnaW5hcnkgbGl0ZXJhbCB5aWVsZHMgYSBjb21wbGV4IG51bWJlciB3aXRoIGEgcmVhbCBwYXJ0ICcKKyAgICAgICAgICAgICAgJ29mIDAuMC5cbicKKyAgICAgICAgICAgICAgJ0NvbXBsZXggbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50ICcKKyAgICAgICAgICAgICAgJ251bWJlcnNcbicKKyAgICAgICAgICAgICAgJ2FuZCBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBvbiB0aGVpciByYW5nZS4gIFRvIGNyZWF0ZSBhICcKKyAgICAgICAgICAgICAgJ2NvbXBsZXhcbicKKyAgICAgICAgICAgICAgJ251bWJlciB3aXRoIGEgbm9uemVybyByZWFsIHBhcnQsIGFkZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byAnCisgICAgICAgICAgICAgICdpdCxcbicKKyAgICAgICAgICAgICAgJ2UuZy4sICIoMys0aikiLiAgU29tZSBleGFtcGxlcyBvZiBpbWFnaW5hcnkgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAgMy4xNGUtMTBqICAgJworICAgICAgICAgICAgICAnMy4xNF8xNV85M2pcbicsCisgJ2ltcG9ydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgJworICAgICAgICAgICAnWyJhcyIgbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiAnCisgICAgICAgICAgICdpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4nCisgICAgICAgICAgICcgICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJyAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vICJmcm9tIiBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuJworICAgICAgICAgICAnc3RlcHM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGVcbicKKyAgICAgICAgICAgJyAgIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5IGNvbW1hcykgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICd0d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0IGFzICcKKyAgICAgICAgICAgJ3Rob3VnaFxuJworICAgICAgICAgICAndGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWR1YWwgaW1wb3J0ICcKKyAgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgYXJlXG4nCisgICAgICAgICAgICdkZXNjcmliZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlIGltcG9ydCBzeXN0ZW0sICcKKyAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICdhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0IGNhbiAnCisgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2ltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5IGluZGljYXRlICcKKyAgICAgICAgICAgJ2VpdGhlclxuJworICAgICAgICAgICAndGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWRcbicKKyAgICAgICAgICAgJ3doaWxlIGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICJtb2R1bGUncyBjb2RlLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlICcKKyAgICAgICAgICAgJ21hZGVcbicKKyAgICAgICAgICAgJ2F2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSAiYXMiLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuJworICAgICAgICAgICAnICAiYXMiIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgIiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZSdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsICIKKyAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAnICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICcgIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCAnCisgICAgICAgICAgICdpblxuJworICAgICAgICAgICAnICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICcgIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lXG4nCisgICAgICAgICAgICcgIHJhdGhlciB0aGFuIGRpcmVjdGx5XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZnJvbSIgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlICJmcm9tIiBjbGF1c2UsIGxvYWRpbmcgYW5kXG4nCisgICAgICAgICAgICcgICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcyLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSAiaW1wb3J0IiBjbGF1c2VzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kICcKKyAgICAgICAgICAgJ3RoZW5cbicKKyAgICAgICAgICAgJyAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCAiSW1wb3J0RXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgNC4gb3RoZXJ3aXNlLCBhIHJlZmVyZW5jZSB0byB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAgJyAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlICJhcyIgY2xhdXNlIGlmIGl0IGlzICcKKyAgICAgICAgICAgJ3ByZXNlbnQsXG4nCisgICAgICAgICAgICcgICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0V4YW1wbGVzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuJworICAgICAgICAgICAnICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kICcKKyAgICAgICAgICAgJ2xvY2FsbHlcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzICcKKyAgICAgICAgICAgJ2ZiYlxuJworICAgICAgICAgICAnICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgJworICAgICAgICAgICAnYmF6XG4nCisgICAgICAgICAgICcgICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgJworICAgICAgICAgICAnYXR0clxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKCJcJypcJyIpLCBhbGwgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICduYW1lcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc2NvcGUgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCAiX19hbGxfXyI7IGlmIGRlZmluZWQsIGl0ICcKKyAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgJ2JlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gIl9fYWxsX18iIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgJworICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICdhcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZiAiX19hbGxfXyIgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICJuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSB3aGljaCBkbyAiCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2JlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKCJcJ19cJyIpLiAgIl9fYWxsX18iIHNob3VsZCAnCisgICAgICAgICAgICdjb250YWluXG4nCisgICAgICAgICAgICd0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkIGFjY2lkZW50YWxseSAnCisgICAgICAgICAgICdleHBvcnRpbmdcbicKKyAgICAgICAgICAgJ2l0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMgbGlicmFyeSBtb2R1bGVzIHdoaWNoICcKKyAgICAgICAgICAgJ3dlcmVcbicKKyAgICAgICAgICAgJ2ltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImZyb20gbW9kdWxlIGltcG9ydCAqIiAtLS0gaXMgJworICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAnYWxsb3dlZCBhdCB0aGUgbW9kdWxlIGxldmVsLiAgQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3JcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIHNwZWNpZnlpbmcgd2hhdCBtb2R1bGUgdG8gaW1wb3J0IHlvdSBkbyBub3QgaGF2ZSB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnYWJzb2x1dGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBXaGVuIGEgbW9kdWxlIG9yIHBhY2thZ2UgaXMgJworICAgICAgICAgICAnY29udGFpbmVkXG4nCisgICAgICAgICAgICd3aXRoaW4gYW5vdGhlciBwYWNrYWdlIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgYSByZWxhdGl2ZSBpbXBvcnQgJworICAgICAgICAgICAnd2l0aGluXG4nCisgICAgICAgICAgICd0aGUgc2FtZSB0b3AgcGFja2FnZSB3aXRob3V0IGhhdmluZyB0byBtZW50aW9uIHRoZSBwYWNrYWdlIG5hbWUuICcKKyAgICAgICAgICAgJ0J5XG4nCisgICAgICAgICAgICd1c2luZyBsZWFkaW5nIGRvdHMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgb3IgcGFja2FnZSBhZnRlciAiZnJvbSIgJworICAgICAgICAgICAneW91XG4nCisgICAgICAgICAgICdjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxuJworICAgICAgICAgICAnd2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbicKKyAgICAgICAgICAgJ3BhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zICcKKyAgICAgICAgICAgJ3VwXG4nCisgICAgICAgICAgICdvbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSAnCisgICAgICAgICAgICdleGVjdXRlXG4nCisgICAgICAgICAgICciZnJvbSAuIGltcG9ydCBtb2QiIGZyb20gYSBtb2R1bGUgaW4gdGhlICJwa2ciIHBhY2thZ2UgdGhlbiB5b3UgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAnZW5kIHVwIGltcG9ydGluZyAicGtnLm1vZCIuIElmIHlvdSBleGVjdXRlICJmcm9tIC4uc3VicGtnMiBpbXBvcnQgJworICAgICAgICAgICAnbW9kIlxuJworICAgICAgICAgICAnZnJvbSB3aXRoaW4gInBrZy5zdWJwa2cxIiB5b3Ugd2lsbCBpbXBvcnQgInBrZy5zdWJwa2cyLm1vZCIuIFRoZVxuJworICAgICAgICAgICAnc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpcyBjb250YWluZWQgd2l0aGluICoqUEVQICcKKyAgICAgICAgICAgJzMyOCoqLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICciaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgJworICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAnZGV0ZXJtaW5lIGR5bmFtaWNhbGx5IHRoZSBtb2R1bGVzIHRvIGJlIGxvYWRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdGdXR1cmUgc3RhdGVtZW50c1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSAnCisgICAgICAgICAgICdwYXJ0aWN1bGFyXG4nCisgICAgICAgICAgICdtb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsIGJlXG4nCisgICAgICAgICAgICdhdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uIHdoZXJlIHRoZSAnCisgICAgICAgICAgICdmZWF0dXJlXG4nCisgICAgICAgICAgICdiZWNvbWVzIHN0YW5kYXJkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZnV0dXJlIHN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgJworICAgICAgICAgICAndmVyc2lvbnNcbicKKyAgICAgICAgICAgJ29mIFB5dGhvbiB0aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICAnCisgICAgICAgICAgICdJdFxuJworICAgICAgICAgICAnYWxsb3dzIHVzZSBvZiB0aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlXG4nCisgICAgICAgICAgICdyZWxlYXNlIGluIHdoaWNoIHRoZSBmZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiAnCisgICAgICAgICAgICduYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSAnCisgICAgICAgICAgICdbImFzIiBuYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4nCisgICAgICAgICAgICcgICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSAnCisgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICdsaW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogY29tbWVudHMsXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogYmxhbmsgbGluZXMsIGFuZFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSAiYWJzb2x1dGVfaW1wb3J0IixcbicKKyAgICAgICAgICAgJyJkaXZpc2lvbiIsICJnZW5lcmF0b3JzIiwgInVuaWNvZGVfbGl0ZXJhbHMiLCAicHJpbnRfZnVuY3Rpb24iLFxuJworICAgICAgICAgICAnIm5lc3RlZF9zY29wZXMiIGFuZCAid2l0aF9zdGF0ZW1lbnQiLiAgVGhleSBhcmUgYWxsIHJlZHVuZGFudCAnCisgICAgICAgICAgICdiZWNhdXNlXG4nCisgICAgICAgICAgICd0aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3IgYmFja3dhcmRzICcKKyAgICAgICAgICAgJ2NvbXBhdGliaWxpdHkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG4nCisgICAgICAgICAgICd0aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuJworICAgICAgICAgICAnaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSAnCisgICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgICd0aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAncmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxuJworICAgICAgICAgICAnbW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbicKKyAgICAgICAgICAgJ3J1bnRpbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgJworICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAnYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlICcKKyAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAnY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgJworICAgICAgICAgICAnc3RhdGVtZW50OlxuJworICAgICAgICAgICAndGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgIl9fZnV0dXJlX18iLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdCAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICdiZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG4nCisgICAgICAgICAgICdleGVjdXRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuJworICAgICAgICAgICAnZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAiVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgIgorICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAnbm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJleGVjKCkiIGFuZFxuJworICAgICAgICAgICAnImNvbXBpbGUoKSIgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSAiTSIgY29udGFpbmluZyBhIGZ1dHVyZSAnCisgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJ3dpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZCB3aXRoICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICciY29tcGlsZSgpIiAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yICcKKyAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAndGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbicKKyAgICAgICAgICAgJ2ludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgIi1pIiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCAnCisgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICd0byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgJworICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgJ2VmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbicKKyAgICAgICAgICAgJ2V4ZWN1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cbicKKyAgICAgICAgICAgJyAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAorICdpbic6ICdcbicKKyAgICAgICAnTWVtYmVyc2hpcCB0ZXN0IG9wZXJhdGlvbnNcbicKKyAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluIHMiXG4nCisgICAgICAgJ2V2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxuJworICAgICAgICdub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG4nCisgICAgICAgJ2FuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICJpbiIgJworICAgICAgICd0ZXN0c1xuJworICAgICAgICd3aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG4nCisgICAgICAgJ2xpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuJworICAgICAgICdleHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG4nCisgICAgICAgJ3kpIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogJworICAgICAgICdpc1xuJworICAgICAgICdhIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuICBFbXB0eVxuJworICAgICAgICdzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuJworICAgICAgICdzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuJworICAgICAgICdpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG4nCisgICAgICAgJ2RlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuJworICAgICAgICdpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkXG4nCisgICAgICAgJ2R1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0xhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuJworICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG4nCisgICAgICAgJ25lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuJworICAgICAgICdpbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG4nCisgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuJworICAgICAgICciaW4iLlxuJywKKyAnaW50ZWdlcnMnOiAnXG4nCisgICAgICAgICAgICAgJ0ludGVnZXIgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaW50ZWdlciAgICAgIDo6PSBkZWNpbnRlZ2VyIHwgYmluaW50ZWdlciB8IG9jdGludGVnZXIgfCAnCisgICAgICAgICAgICAgJ2hleGludGVnZXJcbicKKyAgICAgICAgICAgICAnICAgZGVjaW50ZWdlciAgIDo6PSBub256ZXJvZGlnaXQgKFsiXyJdIGRpZ2l0KSogfCAiMCIrIChbIl8iXSAnCisgICAgICAgICAgICAgJyIwIikqXG4nCisgICAgICAgICAgICAgJyAgIGJpbmludGVnZXIgICA6Oj0gIjAiICgiYiIgfCAiQiIpIChbIl8iXSBiaW5kaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIG9jdGludGVnZXIgICA6Oj0gIjAiICgibyIgfCAiTyIpIChbIl8iXSBvY3RkaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIGhleGludGVnZXIgICA6Oj0gIjAiICgieCIgfCAiWCIpIChbIl8iXSBoZXhkaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIG5vbnplcm9kaWdpdCA6Oj0gIjEiLi4uIjkiXG4nCisgICAgICAgICAgICAgJyAgIGRpZ2l0ICAgICAgICA6Oj0gIjAiLi4uIjkiXG4nCisgICAgICAgICAgICAgJyAgIGJpbmRpZ2l0ICAgICA6Oj0gIjAiIHwgIjEiXG4nCisgICAgICAgICAgICAgJyAgIG9jdGRpZ2l0ICAgICA6Oj0gIjAiLi4uIjciXG4nCisgICAgICAgICAgICAgJyAgIGhleGRpZ2l0ICAgICA6Oj0gZGlnaXQgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSAnCisgICAgICAgICAgICAgJ3doYXRcbicKKyAgICAgICAgICAgICAnY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVW5kZXJzY29yZXMgYXJlIGlnbm9yZWQgZm9yIGRldGVybWluaW5nIHRoZSBudW1lcmljIHZhbHVlIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2xpdGVyYWwuICBUaGV5IGNhbiBiZSB1c2VkIHRvIGdyb3VwIGRpZ2l0cyBmb3IgZW5oYW5jZWQgJworICAgICAgICAgICAgICdyZWFkYWJpbGl0eS5cbicKKyAgICAgICAgICAgICAnT25lIHVuZGVyc2NvcmUgY2FuIG9jY3VyIGJldHdlZW4gZGlnaXRzLCBhbmQgYWZ0ZXIgYmFzZSAnCisgICAgICAgICAgICAgJ3NwZWNpZmllcnNcbicKKyAgICAgICAgICAgICAnbGlrZSAiMHgiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90ICcKKyAgICAgICAgICAgICAnYWxsb3dlZC5cbicKKyAgICAgICAgICAgICAnVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCAnCisgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICd1c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXMgb2YgaW50ZWdlciBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuJworICAgICAgICAgICAgICcgICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHhkZWFkYmVlZlxuJworICAgICAgICAgICAgICcgICAgICAgICAxMDBfMDAwXzAwMF8wMDAgICAgICAgICAgICAgICAgICAgMGJfMTExMF8wMTAxXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yICcKKyAgICAgICAgICAgICAnZ3JvdXBpbmdcbicKKyAgICAgICAgICAgICAncHVycG9zZXMgaW4gbGl0ZXJhbHMuXG4nLAorICdsYW1iZGEnOiAnXG4nCisgICAgICAgICAgICdMYW1iZGFzXG4nCisgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGxhbWJkYV9leHByICAgICAgICA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvblxuJworICAgICAgICAgICAnICAgbGFtYmRhX2V4cHJfbm9jb25kIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiAnCisgICAgICAgICAgICdleHByZXNzaW9uX25vY29uZFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdMYW1iZGEgZXhwcmVzc2lvbnMgKHNvbWV0aW1lcyBjYWxsZWQgbGFtYmRhIGZvcm1zKSBhcmUgdXNlZCB0byAnCisgICAgICAgICAgICdjcmVhdGVcbicKKyAgICAgICAgICAgJ2Fub255bW91cyBmdW5jdGlvbnMuIFRoZSBleHByZXNzaW9uICJsYW1iZGEgYXJndW1lbnRzOiAnCisgICAgICAgICAgICdleHByZXNzaW9uIlxuJworICAgICAgICAgICAneWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LiAgVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhICcKKyAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICdvYmplY3QgZGVmaW5lZCB3aXRoOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBkZWYgPGxhbWJkYT4oYXJndW1lbnRzKTpcbicKKyAgICAgICAgICAgJyAgICAgICByZXR1cm4gZXhwcmVzc2lvblxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdTZWUgc2VjdGlvbiBGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgJworICAgICAgICAgICAnbGlzdHMuXG4nCisgICAgICAgICAgICdOb3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZXhwcmVzc2lvbnMgY2Fubm90ICcKKyAgICAgICAgICAgJ2NvbnRhaW5cbicKKyAgICAgICAgICAgJ3N0YXRlbWVudHMgb3IgYW5ub3RhdGlvbnMuXG4nLAorICdsaXN0cyc6ICdcbicKKyAgICAgICAgICAnTGlzdCBkaXNwbGF5c1xuJworICAgICAgICAgICcqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJ3NxdWFyZSBicmFja2V0czpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGxpc3RfZGlzcGxheSA6Oj0gIlsiIFtzdGFycmVkX2xpc3QgfCBjb21wcmVoZW5zaW9uXSAiXSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgbGlzdCBkaXNwbGF5IHlpZWxkcyBhIG5ldyBsaXN0IG9iamVjdCwgdGhlIGNvbnRlbnRzIGJlaW5nICcKKyAgICAgICAgICAnc3BlY2lmaWVkXG4nCisgICAgICAgICAgJ2J5IGVpdGhlciBhIGxpc3Qgb2YgZXhwcmVzc2lvbnMgb3IgYSBjb21wcmVoZW5zaW9uLiAgV2hlbiBhIGNvbW1hLVxuJworICAgICAgICAgICdzZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpcyBzdXBwbGllZCwgaXRzIGVsZW1lbnRzIGFyZSAnCisgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICdmcm9tIGxlZnQgdG8gcmlnaHQgYW5kIHBsYWNlZCBpbnRvIHRoZSBsaXN0IG9iamVjdCBpbiB0aGF0IG9yZGVyLlxuJworICAgICAgICAgICdXaGVuIGEgY29tcHJlaGVuc2lvbiBpcyBzdXBwbGllZCwgdGhlIGxpc3QgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGVcbicKKyAgICAgICAgICAnZWxlbWVudHMgcmVzdWx0aW5nIGZyb20gdGhlIGNvbXByZWhlbnNpb24uXG4nLAorICduYW1pbmcnOiAnXG4nCisgICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmdcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0JpbmRpbmcgb2YgbmFtZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gJworICAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICAnImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0ICcKKyAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAnaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBvciAnCisgICAgICAgICAgICdhZnRlclxuJworICAgICAgICAgICAnImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgJworICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICdvZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgJworICAgICAgICAgICAnZm9ybVxuJworICAgICAgICAgICAnbWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kICcKKyAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAndGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgJworICAgICAgICAgICAnbmFtZSkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0VhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayBkZWZpbmVkICcKKyAgICAgICAgICAgJ2J5IGFcbicKKyAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlICcKKyAgICAgICAgICAgJ3RvcC1sZXZlbFxuJworICAgICAgICAgICAnY29kZSBibG9jaykuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgJworICAgICAgICAgICAnYmxvY2ssXG4nCisgICAgICAgICAgICd1bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ21vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICdjb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhICcKKyAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgJ2Jsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0VhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICcKKyAgICAgICAgICAgJypiaW5kaW5nKlxuJworICAgICAgICAgICAnb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uIHJ1bGVzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1Jlc29sdXRpb24gb2YgbmFtZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAndmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gIElmICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55ICcKKyAgICAgICAgICAgJ2Jsb2Nrc1xuJworICAgICAgICAgICAnY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgJworICAgICAgICAgICAnaW50cm9kdWNlc1xuJworICAgICAgICAgICAnYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgJworICAgICAgICAgICAnbmVhcmVzdFxuJworICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgJworICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgImlzIGNhbGxlZCB0aGUgYmxvY2sncyAqZW52aXJvbm1lbnQqLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICdyYWlzZWQuIElmXG4nCisgICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgJworICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ25hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICAnIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssICcKKyAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAndXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAnYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuJworICAgICAgICAgICAnZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbicKKyAgICAgICAgICAgJ3dpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbicKKyAgICAgICAgICAgJ2RldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSAnCisgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ3NwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3RvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCAnCisgICAgICAgICAgICduYW1lc3BhY2UgYnlcbicKKyAgICAgICAgICAgJ3NlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbicKKyAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgJworICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICdvZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCAnCisgICAgICAgICAgICdmaXJzdC4gIElmXG4nCisgICAgICAgICAgICd0aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJyJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nICcKKyAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAnaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSAnCisgICAgICAgICAgICd2YXJpYWJsZVxuJworICAgICAgICAgICAnY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgJworICAgICAgICAgICAnZ2xvYmFsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbicKKyAgICAgICAgICAgJ3ByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiAnCisgICAgICAgICAgICdzY29wZS5cbicKKyAgICAgICAgICAgJyJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzICcKKyAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAnZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgJ21vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzICcKKyAgICAgICAgICAgJ2NhbGxlZFxuJworICAgICAgICAgICAnIl9fbWFpbl9fIi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgJworICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICdzcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICdleGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgJworICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAnZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICd1bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJ25hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAnCisgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAndGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJ3RoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzICcKKyAgICAgICAgICAgJy0tXG4nCisgICAgICAgICAgICd0aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSAnCisgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgJ2ltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAnd2lsbCBmYWlsOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBjbGFzcyBBOlxuJworICAgICAgICAgICAnICAgICAgIGEgPSA0MlxuJworICAgICAgICAgICAnICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdCdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSAnCisgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAnaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgJworICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICduYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciAnCisgICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgICJ0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICIKKyAgICAgICAgICAgJyJfX21haW5fXyJcbicKKyAgICAgICAgICAgJ21vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluICcKKyAgICAgICAgICAgJ2FueVxuJworICAgICAgICAgICAnb3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICciYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgJworICAgICAgICAgICAndXNlci1jcmVhdGVkXG4nCisgICAgICAgICAgICdkaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4nCisgICAgICAgICAgICciX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbicKKyAgICAgICAgICAgJ3dhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICcKKyAgICAgICAgICAgJyJpbXBvcnQiXG4nCisgICAgICAgICAgICd0aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0ICcKKyAgICAgICAgICAgJ2NvbXBpbGVcbicKKyAgICAgICAgICAgJ3RpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICcgICBkZWYgZigpOlxuJworICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgJyAgIGYoKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuICcKKyAgICAgICAgICAgJ3VzZWRcbicKKyAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJ2RlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlICcKKyAgICAgICAgICAgJ2Z1bGxcbicKKyAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlICcKKyAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgJworICAgICAgICAgICAncmVzb2x2ZWRcbicKKyAgICAgICAgICAgJ2luIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gICcKKyAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbicKKyAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSAnCisgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKKyAnbm9ubG9jYWwnOiAnXG4nCisgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIHRvIHJlZmVyICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlICcKKyAgICAgICAgICAgICAnZXhjbHVkaW5nXG4nCisgICAgICAgICAgICAgJ2dsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yICcKKyAgICAgICAgICAgICAnYmluZGluZyBpc1xuJworICAgICAgICAgICAgICd0byBzZWFyY2ggdGhlIGxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzXG4nCisgICAgICAgICAgICAgJ2VuY2Fwc3VsYXRlZCBjb2RlIHRvIHJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgJworICAgICAgICAgICAgICdzY29wZVxuJworICAgICAgICAgICAgICdiZXNpZGVzIHRoZSBnbG9iYWwgKG1vZHVsZSkgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCwgdW5saWtlIHRob3NlIGxpc3RlZCBpbiAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50LCBtdXN0IHJlZmVyIHRvIHByZS1leGlzdGluZyBiaW5kaW5ncyBpbiBhblxuJworICAgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgJ2NyZWF0ZWRcbicKKyAgICAgICAgICAgICAnY2Fubm90IGJlIGRldGVybWluZWQgdW5hbWJpZ3VvdXNseSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggJworICAgICAgICAgICAgICdwcmUtXG4nCisgICAgICAgICAgICAgJ2V4aXN0aW5nIGJpbmRpbmdzIGluIHRoZSBsb2NhbCBzY29wZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAibm9ubG9jYWwiIHN0YXRlbWVudC5cbicsCisgJ251bWJlcnMnOiAnXG4nCisgICAgICAgICAgICAnTnVtZXJpYyBsaXRlcmFsc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nICcKKyAgICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICAgJ251bWJlcnMsIGFuZCBpbWFnaW5hcnkgbnVtYmVycy4gIFRoZXJlIGFyZSBubyBjb21wbGV4IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuJworICAgICAgICAgICAgJ2ltYWdpbmFyeSBudW1iZXIpLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAnCisgICAgICAgICAgICAnIi0xIlxuJworICAgICAgICAgICAgJ2lzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIFwnIi0iXCcgJworICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICdsaXRlcmFsICIxIi5cbicsCisgJ251bWVyaWMtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAnTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCAnCisgICAgICAgICAgICAgICAgICAnYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICAncGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9ucyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICdub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSAnCisgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgICciZGl2bW9kKCkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSwgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzICcKKyAgICAgICAgICAgICAgICAgICdjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgJworICAgICAgICAgICAgICAgICAgJ3JlbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkIHRvIGFjY2VwdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgJworICAgICAgICAgICAgICAgICAgJyhzd2FwcGVkKVxuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCAnCisgICAgICAgICAgICAgICAgICAnb3BlcmFuZCBkb2VzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIFszXSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYW5kcyBhcmUgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgdHlwZXMuIFs0XSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCAtXG4nCisgICAgICAgICAgICAgICAgICAnICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICcKKyAgICAgICAgICAgICAgICAgICciX19yc3ViX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgJworICAgICAgICAgICAgICAgICAgJ3JldHVybnNcbicKKyAgICAgICAgICAgICAgICAgICcgICAqTm90SW1wbGVtZW50ZWQqLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgJworICAgICAgICAgICAgICAgICAgJyJfX3Jwb3dfXygpIiAodGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlICIKKyAgICAgICAgICAgICAgICAgICdsZWZ0XG4nCisgICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgIgorICAgICAgICAgICAgICAgICAgJ3JlZmxlY3RlZCBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgJ3RoZSBsZWZ0XG4nCisgICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyAiCisgICAgICAgICAgICAgICAgICAnc3ViY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAgIiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzJyBvcGVyYXRpb25zLlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgJworICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICcKKyAgICAgICAgICAgICAgICAgICciKio9IixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAgJ2F0dGVtcHQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICd0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICAnICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmljXG4nCisgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgJworICAgICAgICAgICAgICAgICAgJ2JhY2sgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICAnYSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAnCisgICAgICAgICAgICAgICAgICAnInggPVxuJworICAgICAgICAgICAgICAgICAgJyAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJ5Ll9fcmFkZF9fKHgpIiBhcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluICcKKyAgICAgICAgICAgICAgICAgICdjZXJ0YWluXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiAnCisgICAgICAgICAgICAgICAgICAndW5leHBlY3RlZCBlcnJvcnNcbicKKyAgICAgICAgICAgICAgICAgICIgICAoc2VlIFdoeSBkb2VzIGFfdHVwbGVbaV0gKz0gWydpdGVtJ10gcmFpc2UgYW4gZXhjZXB0aW9uICIKKyAgICAgICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGFkZGl0aW9uIHdvcmtzPyksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBtb2RlbC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZWdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWJzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnKCItIiwgIisiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJhYnMoKSIgYW5kICJ+IikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9hdF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICAnImludCgpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbmRleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciAnCisgICAgICAgICAgICAgICAgICAnUHl0aG9uIG5lZWRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3QgKHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJvY3QoKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicsCisgJ29iamVjdHMnOiAnXG4nCisgICAgICAgICAgICAnT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICIqT2JqZWN0cyogYXJlIFB5dGhvbidzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSAiCisgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAncHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuICcKKyAgICAgICAgICAgICdvYmplY3RzLiAoSW5cbicKKyAgICAgICAgICAgICdhIHNlbnNlLCBhbmQgaW4gY29uZm9ybWFuY2UgdG8gVm9uIE5ldW1hbm5cJ3MgbW9kZWwgb2YgYSAic3RvcmVkXG4nCisgICAgICAgICAgICAncHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICJFdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3Qnc1xuIgorICAgICAgICAgICAgJyppZGVudGl0eSogbmV2ZXIgY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgJworICAgICAgICAgICAgJ29mIGl0XG4nCisgICAgICAgICAgICAnYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciAnCisgICAgICAgICAgICAnY29tcGFyZXMgdGhlXG4nCisgICAgICAgICAgICAnaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSAiaWQoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyXG4nCisgICAgICAgICAgICAncmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEZvciBDUHl0aG9uLCAiaWQoeCkiIGlzIHRoZSAnCisgICAgICAgICAgICAnbWVtb3J5XG4nCisgICAgICAgICAgICAnYWRkcmVzcyB3aGVyZSAieCIgaXMgc3RvcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIkFuIG9iamVjdCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3QgIgorICAgICAgICAgICAgJ3N1cHBvcnRzXG4nCisgICAgICAgICAgICAnKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgJworICAgICAgICAgICAgJ3ZhbHVlc1xuJworICAgICAgICAgICAgJ2ZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSAidHlwZSgpIiBmdW5jdGlvbiByZXR1cm5zIGFuICcKKyAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgJ3R5cGUgKHdoaWNoIGlzIGFuIG9iamVjdCBpdHNlbGYpLiAgTGlrZSBpdHMgaWRlbnRpdHksIGFuICcKKyAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgJyp0eXBlKiBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWzFdXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhblxuJworICAgICAgICAgICAgJ2NoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgJworICAgICAgICAgICAgJ3VuY2hhbmdlYWJsZVxuJworICAgICAgICAgICAgJ29uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuXG4nCisgICAgICAgICAgICAnaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhICcKKyAgICAgICAgICAgICdtdXRhYmxlXG4nCisgICAgICAgICAgICAib2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciAiCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uICcKKyAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgJ29iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuJworICAgICAgICAgICAgJ3N0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgJworICAgICAgICAgICAgJ3N1YnRsZS4pXG4nCisgICAgICAgICAgICAiQW4gb2JqZWN0J3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG4iCisgICAgICAgICAgICAnbnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyAnCisgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAnbGlzdHMgYXJlIG11dGFibGUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSAnCisgICAgICAgICAgICAnYmVjb21lXG4nCisgICAgICAgICAgICAndW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuJworICAgICAgICAgICAgJ2FsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gJworICAgICAgICAgICAgJ2l0IGlzXG4nCisgICAgICAgICAgICAnYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG4nCisgICAgICAgICAgICAncmVhY2hhYmxlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhICcKKyAgICAgICAgICAgICdyZWZlcmVuY2UtXG4nCisgICAgICAgICAgICAnY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5ICcKKyAgICAgICAgICAgICdsaW5rZWRcbicKKyAgICAgICAgICAgICdnYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxuJworICAgICAgICAgICAgJ3VucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbicKKyAgICAgICAgICAgICdjaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAiZ2MiIG1vZHVsZSAnCisgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAnaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuICcKKyAgICAgICAgICAgICdPdGhlclxuJworICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90ICcKKyAgICAgICAgICAgICdkZXBlbmRcbicKKyAgICAgICAgICAgICdvbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAnCisgICAgICAgICAgICAnKHNvXG4nCisgICAgICAgICAgICAneW91IHNob3VsZCBhbHdheXMgY2xvc2UgZmlsZXMgZXhwbGljaXRseSkuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbiIKKyAgICAgICAgICAgICdmYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSAnCisgICAgICAgICAgICAnY29sbGVjdGFibGUuXG4nCisgICAgICAgICAgICAnQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJyJ0cnkiLi4uImV4Y2VwdCJcJ1xuJworICAgICAgICAgICAgJ3N0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyAnCisgICAgICAgICAgICAnb3BlblxuJworICAgICAgICAgICAgJ2ZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSAnCisgICAgICAgICAgICAnZnJlZWRcbicKKyAgICAgICAgICAgICd3aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlICcKKyAgICAgICAgICAgICdjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnbm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICd3YXkgdG9cbicKKyAgICAgICAgICAgICdyZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhICJjbG9zZSgpIiBtZXRob2QuICcKKyAgICAgICAgICAgICdQcm9ncmFtc1xuJworICAgICAgICAgICAgJ2FyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuJworICAgICAgICAgICAgJ1wnInRyeSIuLi4iZmluYWxseSJcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJyJ3aXRoIlwnIHN0YXRlbWVudCAnCisgICAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICAgJ2NvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlICcKKyAgICAgICAgICAgICdjYWxsZWRcbicKKyAgICAgICAgICAgICcqY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG4nCisgICAgICAgICAgICAiZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXIncyB2YWx1ZS4gICIKKyAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgJ21vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5ICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICd2YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsICcKKyAgICAgICAgICAgICd3aGVuIHdlXG4nCisgICAgICAgICAgICAndGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAnY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAnb2JqZWN0LCBpdHNcbicKKyAgICAgICAgICAgICd2YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG4nCisgICAgICAgICAgICAnaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yICcKKyAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICd0eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbicKKyAgICAgICAgICAgICdyZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCAnCisgICAgICAgICAgICAnd2hpbGVcbicKKyAgICAgICAgICAgICdmb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciAiYSA9IDE7IGIgPSAnCisgICAgICAgICAgICAnMSIsXG4nCisgICAgICAgICAgICAnImEiIGFuZCAiYiIgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlICcKKyAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgJ29uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyICJjID0gW107IGQgPSBbXSIsICcKKyAgICAgICAgICAgICciYyJcbicKKyAgICAgICAgICAgICdhbmQgImQiIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsIHVuaXF1ZSwgbmV3bHlcbicKKyAgICAgICAgICAgICdjcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0ICJjID0gZCA9IFtdIiBhc3NpZ25zIHRoZSBzYW1lICcKKyAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICd0byBib3RoICJjIiBhbmQgImQiLilcbicsCisgJ29wZXJhdG9yLXN1bW1hcnknOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0b3IgcHJlY2VkZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2luIFB5dGhvbiwgZnJvbVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0IHByZWNlZGVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJyhtb3N0XG4nCisgICAgICAgICAgICAgICAgICAgICAnYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UuICBVbmxlc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdG9ycyBpblxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdleHBvbmVudGlhdGlvbiwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICdncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgY29tcGFyaXNvbnMsIG1lbWJlcnNoaXAgdGVzdHMsIGFuZCBpZGVudGl0eSAnCisgICAgICAgICAgICAgICAgICAgICAndGVzdHMsIGFsbCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgaGF2ZSBhIGxlZnQtdG8tcmlnaHQgY2hhaW5pbmcgJworICAgICAgICAgICAgICAgICAgICAgJ2ZlYXR1cmUgYXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmliZWQgaW4gdGhlIENvbXBhcmlzb25zIHNlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImxhbWJkYSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnTGFtYmRhIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImlmIiAtLSAiZWxzZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIm9yIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImFuZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIm5vdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBOT1QgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImluIiwgIm5vdCBpbiIsICJpcyIsICJpcyBub3QiLCAiPCIsICI8PSIsICI+IiwgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQ29tcGFyaXNvbnMsIGluY2x1ZGluZyBtZW1iZXJzaGlwICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsaWNhdGlvbiwgbWF0cml4IG11bHRpcGxpY2F0aW9uIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIreCIsICIteCIsICJ+eCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1Bvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIqKiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0V4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJhd2FpdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0F3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJ4W2luZGV4XSIsICJ4W2luZGV4OmluZGV4XSIsICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1N1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIngoYXJndW1lbnRzLi4uKSIsICJ4LmF0dHJpYnV0ZSIgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIihleHByZXNzaW9ucy4uLikiLCAiW2V4cHJlc3Npb25zLi4uXSIsICJ7a2V5OiAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQmluZGluZyBvciB0dXBsZSBkaXNwbGF5LCBsaXN0ICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbMV0gV2hpbGUgImFicyh4JXkpIDwgYWJzKHkpIiBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yIGZsb2F0c1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpdCBtYXkgbm90IGJlIHRydWUgbnVtZXJpY2FsbHkgZHVlIHRvIHJvdW5kb2ZmLiAgRm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnSUVFRSA3NTQgZG91YmxlLVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0ICItMWUtMTAwICUgMWUxMDAiICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIHRoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHNpZ24gYXMgIjFlMTAwIiwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyAiLTFlLTEwMCArICcKKyAgICAgICAgICAgICAgICAgICAgICcxZTEwMCIsIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIm1hdGguZm1vZCgpIiByZXR1cm5zIGEgcmVzdWx0IHdob3NlIHNpZ24gbWF0Y2hlcyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zICItMWUtMTAwIiBpbiAnCisgICAgICAgICAgICAgICAgICAgICAndGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgInksIGl0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcG9zc2libGUgZm9yICJ4Ly95IiB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gJworICAgICAgICAgICAgICAgICAgICAgJyIoeC14JXkpLy95IiBkdWUgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN1bHQsIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgImRpdm1vZCh4LHkpWzBdICogeSArIHggJSB5IiAnCisgICAgICAgICAgICAgICAgICAgICAnYmUgdmVyeSBjbG9zZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB0byAieCIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSAnCisgICAgICAgICAgICAgICAgICAgICAncG9pbnRzKiAoZS5nLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBVKzAwNDEpIGFuZCAqYWJzdHJhY3QgY2hhcmFjdGVycyogKGUuZy4gIkxBVElOICcKKyAgICAgICAgICAgICAgICAgICAgICdDQVBJVEFMIExFVFRFUiBBIikuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFdoaWxlIG1vc3QgYWJzdHJhY3QgY2hhcmFjdGVycyBpbiBVbmljb2RlIGFyZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnRlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgdGhhdCBjYW4gaW4gYWRkaXRpb24gYmUgcmVwcmVzZW50ZWQgdXNpbmcgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgbW9yZSB0aGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9uZSBjb2RlIHBvaW50LiAgRm9yIGV4YW1wbGUsIHRoZSBhYnN0cmFjdCBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICAgJyJMQVRJTlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICdhIHNpbmdsZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAqcHJlY29tcG9zZWQgY2hhcmFjdGVyKiBhdCBjb2RlIHBvc2l0aW9uIFUrMDBDNywgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2FzIGEgc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb2YgYSAqYmFzZSBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMDQzIChMQVRJTiAnCisgICAgICAgICAgICAgICAgICAgICAnQ0FQSVRBTFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb2RlIHBvc2l0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFUrMDMyNyAoQ09NQklOSU5HIENFRElMTEEpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBUaGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgb24gc3RyaW5ncyBjb21wYXJlIGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbGV2ZWwgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVW5pY29kZSBjb2RlIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgJworICAgICAgICAgICAgICAgICAgICAgJ3RvIGh1bWFucy4gIEZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBleGFtcGxlLCAiIlxcdTAwQzciID09ICJcXHUwMDQzXFx1MDMyNyIiIGlzICJGYWxzZSIsICcKKyAgICAgICAgICAgICAgICAgICAgICdldmVuIHRob3VnaCBib3RoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHN0cmluZ3MgcmVwcmVzZW50IHRoZSBzYW1lIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU4gJworICAgICAgICAgICAgICAgICAgICAgJ0NBUElUQUxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVG8gY29tcGFyZSBzdHJpbmdzIGF0IHRoZSBsZXZlbCBvZiBhYnN0cmFjdCAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyAodGhhdCBpcyxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaW4gYSB3YXkgaW50dWl0aXZlIHRvIGh1bWFucyksIHVzZSAnCisgICAgICAgICAgICAgICAgICAgICAnInVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VlbWluZ2x5IHVudXN1YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgYmVoYXZpb3VyIGluIGNlcnRhaW4gdXNlcyBvZiB0aGUgImlzIiBvcGVyYXRvciwgbGlrZSAnCisgICAgICAgICAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaW52b2x2aW5nIGNvbXBhcmlzb25zIGJldHdlZW4gaW5zdGFuY2UgbWV0aG9kcywgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnN0YW50cy5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1s1XSBUaGUgIiUiIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nIGZvcm1hdHRpbmc7ICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBwcmVjZWRlbmNlIGFwcGxpZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCAnCisgICAgICAgICAgICAgICAgICAgICAnIjIqKi0xIiBpcyAiMC41Ii5cbicsCisgJ3Bhc3MnOiAnXG4nCisgICAgICAgICAnVGhlICJwYXNzIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnInBhc3MiIGlzIGEgbnVsbCBvcGVyYXRpb24gLS0tIHdoZW4gaXQgaXMgZXhlY3V0ZWQsIG5vdGhpbmcgJworICAgICAgICAgJ2hhcHBlbnMuXG4nCisgICAgICAgICAnSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuJworICAgICAgICAgJ3N5bnRhY3RpY2FsbHksIGJ1dCBubyBjb2RlIG5lZWRzIHRvIGJlIGV4ZWN1dGVkLCBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKKyAncG93ZXInOiAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvclxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvciBiaW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzXG4nCisgICAgICAgICAgJ2xlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICdzeW50YXggaXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBwb3dlciA6Oj0gKCBhd2FpdF9leHByIHwgcHJpbWFyeSApIFsiKioiIHVfZXhwcl1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdvcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgJworICAgICAgICAgICdjb25zdHJhaW5cbicKKyAgICAgICAgICAndGhlIGV2YWx1YXRpb24gb3JkZXIgZm9yIHRoZSBvcGVyYW5kcyk6ICItMSoqMiIgcmVzdWx0cyBpbiAiLTEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbicKKyAgICAgICAgICAnZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogaXQgeWllbGRzIGl0cyBsZWZ0ICcKKyAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAncmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ZvciBpbnQgb3BlcmFuZHMsIHRoZSByZXN1bHQgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG9wZXJhbmRzICcKKyAgICAgICAgICAndW5sZXNzXG4nCisgICAgICAgICAgJ3RoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbicKKyAgICAgICAgICAnY29udmVydGVkIHRvIGZsb2F0IGFuZCBhIGZsb2F0IHJlc3VsdCBpcyBkZWxpdmVyZWQuIEZvciBleGFtcGxlLFxuJworICAgICAgICAgICciMTAqKjIiIHJldHVybnMgIjEwMCIsIGJ1dCAiMTAqKi0yIiByZXR1cm5zICIwLjAxIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1JhaXNpbmcgIjAuMCIgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGEgJworICAgICAgICAgICciWmVyb0RpdmlzaW9uRXJyb3IiLlxuJworICAgICAgICAgICdSYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgJworICAgICAgICAgICciY29tcGxleCJcbicKKyAgICAgICAgICAnbnVtYmVyLiAoSW4gZWFybGllciB2ZXJzaW9ucyBpdCByYWlzZWQgYSAiVmFsdWVFcnJvciIuKVxuJywKKyAncmFpc2UnOiAnXG4nCisgICAgICAgICAgJ1RoZSAicmFpc2UiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHJhaXNlX3N0bXQgOjo9ICJyYWlzZSIgW2V4cHJlc3Npb24gWyJmcm9tIiBleHByZXNzaW9uXV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCAnCisgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICd0aGF0IHdhcyBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuICBJZiBubyBleGNlcHRpb24gaXMgYWN0aXZlICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAndGhlIGN1cnJlbnQgc2NvcGUsIGEgIlJ1bnRpbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbmRpY2F0aW5nXG4nCisgICAgICAgICAgJ3RoYXQgdGhpcyBpcyBhbiBlcnJvci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ090aGVyd2lzZSwgInJhaXNlIiBldmFsdWF0ZXMgdGhlIGZpcnN0IGV4cHJlc3Npb24gYXMgdGhlIGV4Y2VwdGlvblxuJworICAgICAgICAgICdvYmplY3QuICBJdCBtdXN0IGJlIGVpdGhlciBhIHN1YmNsYXNzIG9yIGFuIGluc3RhbmNlIG9mXG4nCisgICAgICAgICAgJyJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG4nCisgICAgICAgICAgJ29idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2UncyBjbGFzcywgdGhlXG4iCisgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlIGluc3RhbmNlIGl0c2VsZi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiAnCisgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICdpcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCAnCisgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgJ2lzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biB0cmFjZWJhY2sgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICdvbmUgc3RlcCB1c2luZyB0aGUgIndpdGhfdHJhY2ViYWNrKCkiIGV4Y2VwdGlvbiBtZXRob2QgKHdoaWNoICcKKyAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICd0aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzICcKKyAgICAgICAgICAnYXJndW1lbnQpLFxuJworICAgICAgICAgICdsaWtlIHNvOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcmFpc2UgRXhjZXB0aW9uKCJmb28gb2NjdXJyZWQiKS53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2tvYmopXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgJworICAgICAgICAgICdzZWNvbmRcbicKKyAgICAgICAgICAnKmV4cHJlc3Npb24qIG11c3QgYmUgYW5vdGhlciBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UsIHdoaWNoICcKKyAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICd0aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSAiX19jYXVzZV9fIiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcod2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbicKKyAgICAgICAgICAnZXhjZXB0aW9ucyB3aWxsIGJlIHByaW50ZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICA+Pj4gdHJ5OlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KDEgLyAwKVxuJworICAgICAgICAgICcgICAuLi4gZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbicKKyAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICdleGNlcHRpb246XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIHNpbWlsYXIgbWVjaGFuaXNtIHdvcmtzIGltcGxpY2l0bHkgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCAnCisgICAgICAgICAgJ2luc2lkZVxuJworICAgICAgICAgICdhbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICd0aGVuIGF0dGFjaGVkIGFzIHRoZSBuZXcgZXhjZXB0aW9uXCdzICJfX2NvbnRleHRfXyIgYXR0cmlidXRlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IHRyeTpcbicKKyAgICAgICAgICAnICAgLi4uICAgICBwcmludCgxIC8gMClcbicKKyAgICAgICAgICAnICAgLi4uIGV4Y2VwdDpcbicKKyAgICAgICAgICAnICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuJworICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ29jY3VycmVkOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4nCisgICAgICAgICAgJ0V4Y2VwdGlvbnMsIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBoYW5kbGluZyBleGNlcHRpb25zIGlzIGluICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICdUaGUgdHJ5IHN0YXRlbWVudC5cbicsCisgJ3JldHVybic6ICdcbicKKyAgICAgICAgICAgJ1RoZSAicmV0dXJuIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJyZXR1cm4iIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb24gJworICAgICAgICAgICAnZGVmaW5pdGlvbixcbicKKyAgICAgICAgICAgJ25vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSAiTm9uZSIgaXNcbicKKyAgICAgICAgICAgJ3N1YnN0aXR1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcicmV0dXJuIiBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAnKG9yXG4nCisgICAgICAgICAgICciTm9uZSIpIGFzIHJldHVybiB2YWx1ZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiAicmV0dXJuIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICcKKyAgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0luIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgInJldHVybiIgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgIlN0b3BJdGVyYXRpb24iIHRvIGJlIHJhaXNlZC4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICdyZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuJworICAgICAgICAgICAnIlN0b3BJdGVyYXRpb24iIGFuZCBiZWNvbWVzIHRoZSAiU3RvcEl0ZXJhdGlvbi52YWx1ZSIgYXR0cmlidXRlLlxuJywKKyAnc2VxdWVuY2UtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lciBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICdDb250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpICcKKyAgICAgICAgICAgICAgICAgICAnb3IgbWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAnKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyAnCisgICAgICAgICAgICAgICAgICAgJ3dlbGwuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAnb3IgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2FsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSAnCisgICAgICAgICAgICAgICAgICAgJ2sgPCBOIiB3aGVyZVxuJworICAgICAgICAgICAgICAgICAgICcqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgICAnZGVmaW5lIGFcbicKKyAgICAgICAgICAgICAgICAgICAncmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlIHRoZVxuJworICAgICAgICAgICAgICAgICAgICdtZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICcKKyAgICAgICAgICAgICAgICAgICAnImNsZWFyKCkiLFxuJworICAgICAgICAgICAgICAgICAgICcic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgJworICAgICAgICAgICAgICAgICAgICcidXBkYXRlKCkiXG4nCisgICAgICAgICAgICAgICAgICAgImJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvbidzIHN0YW5kYXJkIGRpY3Rpb25hcnkgIgorICAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICdUaGUgImNvbGxlY3Rpb25zIiBtb2R1bGUgcHJvdmlkZXMgYSAiTXV0YWJsZU1hcHBpbmciICcKKyAgICAgICAgICAgICAgICAgICAnYWJzdHJhY3QgYmFzZVxuJworICAgICAgICAgICAgICAgICAgICdjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIixcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICAgICdzaG91bGQgcHJvdmlkZSBtZXRob2RzICJhcHBlbmQoKSIsICJjb3VudCgpIiwgImluZGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICAgJyJleHRlbmQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgJworICAgICAgICAgICAgICAgICAgICdsaWtlIFB5dGhvblxuJworICAgICAgICAgICAgICAgICAgICdzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnKG1lYW5pbmdcbicKKyAgICAgICAgICAgICAgICAgICAncmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICcKKyAgICAgICAgICAgICAgICAgICAnIl9fcmFkZF9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICciX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiAnCisgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICAgICAgICAgICdiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgJworICAgICAgICAgICAgICAgICAgICdJdCBpc1xuJworICAgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiAnCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdG9yO1xuJworICAgICAgICAgICAgICAgICAgICdmb3IgbWFwcGluZ3MsICJpbiIgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3IgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXMsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciAnCisgICAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aFxuJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICAgJ3RvIGFsbG93XG4nCisgICAgICAgICAgICAgICAgICAgJ2VmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAgICd0aHJvdWdoIHRoZSB2YWx1ZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5fXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gICcKKyAgICAgICAgICAgICAgICAgICAnU2hvdWxkIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gJworICAgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBkb2VzblwndCBkZWZpbmUgYSAiX19ib29sX18oKSIgbWV0aG9kIGFuZCB3aG9zZSAnCisgICAgICAgICAgICAgICAgICAgJyJfX2xlbl9fKCkiIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAgICdjb250ZXh0LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciAnCisgICAgICAgICAgICAgICAgICAgJ29yIGxlc3MgdGhhblxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgJworICAgICAgICAgICAgICAgICAgICcwLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAgICcgICBjb3JyZWN0bmVzcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ05vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgJworICAgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAgICcgIEEgY2FsbCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgIGFbMToyXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3dpdGggIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdHlwZXMsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2UgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLiAgTm90ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2NsYXNzIHdpc2hlc1xuJworICAgICAgICAgICAgICAgICAgICcgICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLCAiVHlwZUVycm9yIiBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgICdyYWlzZWQ7IGlmIG9mXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJyhhZnRlciBhbnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAnCisgICAgICAgICAgICAgICAgICAgJyJJbmRleEVycm9yIiBzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2VkLiBGb3IgbWFwcGluZyB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAncmFpc2VkIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgJworICAgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImRpY3QiLiJfX2dldGl0ZW1fXygpIiB0byBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICcic2VsZltrZXldIiBmb3IgZGljdFxuJworICAgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2tleV0iLiAgU2FtZSAnCisgICAgICAgICAgICAgICAgICAgJ25vdGUgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yICcKKyAgICAgICAgICAgICAgICAgICAnaWYgbmV3IGtleXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzICcKKyAgICAgICAgICAgICAgICAgICAnaWYgZWxlbWVudHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zICcKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgJworICAgICAgICAgICAgICAgICAgICdhIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ2NhbiBpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXkgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gJworICAgICAgICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBvYmplY3RzLCBzZWUgSXRlcmF0b3IgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSAicmV2ZXJzZWQoKSIgYnVpbHQtaW4gdG8gJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0IHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3JldmVyc2Ugb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgJworICAgICAgICAgICAgICAgICAgICcicmV2ZXJzZWQoKSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlIHByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgICAnKCJfX2xlbl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgcHJvdG9jb2xcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkZSBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJyZXZlcnNlZCgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbmVyXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSAnCisgICAgICAgICAgICAgICAgICAgJ21vcmUgZWZmaWNpZW50XG4nCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ2Egc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gdHJ1ZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMsIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBvclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUga2V5LWl0ZW0gcGFpcnMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnbWVtYmVyc2hpcCB0ZXN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpdGVyYXRpb24gcHJvdG9jb2wgdmlhICJfX2dldGl0ZW1fXygpIiwgc2VlIHRoaXMgJworICAgICAgICAgICAgICAgICAgICdzZWN0aW9uIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBsYW5ndWFnZSByZWZlcmVuY2UuXG4nLAorICdzaGlmdGluZyc6ICdcbicKKyAgICAgICAgICAgICAnU2hpZnRpbmcgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgc2hpZnRpbmcgb3BlcmF0aW9ucyBoYXZlIGxvd2VyIHByaW9yaXR5IHRoYW4gdGhlIGFyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNoaWZ0X2V4cHIgOjo9IGFfZXhwciB8IHNoaWZ0X2V4cHIgKCAiPDwiIHwgIj4+IiApIGFfZXhwclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdzZWNvbmQgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZmxvb3IgZGl2aXNpb24gYnkgJworICAgICAgICAgICAgICcicG93KDIsbikiLlxuJworICAgICAgICAgICAgICdBIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICcKKyAgICAgICAgICAgICAnInBvdygyLG4pIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4nCisgICAgICAgICAgICAgJyAgcmVxdWlyZWQgdG8gYmUgYXQgbW9zdCAic3lzLm1heHNpemUiLiAgSWYgdGhlIHJpZ2h0LWhhbmQgJworICAgICAgICAgICAgICdvcGVyYW5kIGlzXG4nCisgICAgICAgICAgICAgJyAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAncmFpc2VkLlxuJywKKyAnc2xpY2luZ3MnOiAnXG4nCisgICAgICAgICAgICAgJ1NsaWNpbmdzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yICcKKyAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAndGFyZ2V0cyBpbiBhc3NpZ25tZW50IG9yICJkZWwiIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhICcKKyAgICAgICAgICAgICAnc2xpY2luZzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNpbmcgICAgICA6Oj0gcHJpbWFyeSAiWyIgc2xpY2VfbGlzdCAiXSJcbicKKyAgICAgICAgICAgICAnICAgc2xpY2VfbGlzdCAgIDo6PSBzbGljZV9pdGVtICgiLCIgc2xpY2VfaXRlbSkqIFsiLCJdXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuJworICAgICAgICAgICAgICcgICBwcm9wZXJfc2xpY2UgOjo9IFtsb3dlcl9ib3VuZF0gIjoiIFt1cHBlcl9ib3VuZF0gWyAiOiIgJworICAgICAgICAgICAgICdbc3RyaWRlXSBdXG4nCisgICAgICAgICAgICAgJyAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICcgICB1cHBlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnICAgc3RyaWRlICAgICAgIDo6PSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBpcyBhbWJpZ3VpdHkgaW4gdGhlIGZvcm1hbCBzeW50YXggaGVyZTogYW55dGhpbmcgdGhhdCAnCisgICAgICAgICAgICAgJ2xvb2tzIGxpa2VcbicKKyAgICAgICAgICAgICAnYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSAnCisgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvblxuJworICAgICAgICAgICAgICdjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzbGljaW5nLiAgUmF0aGVyIHRoYW4gZnVydGhlciAnCisgICAgICAgICAgICAgJ2NvbXBsaWNhdGluZyB0aGVcbicKKyAgICAgICAgICAgICAnc3ludGF4LCB0aGlzIGlzIGRpc2FtYmlndWF0ZWQgYnkgZGVmaW5pbmcgdGhhdCBpbiB0aGlzIGNhc2UgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuJworICAgICAgICAgICAgICdjb250YWlucyBubyBwcm9wZXIgc2xpY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgJworICAgICAgICAgICAgICdpbmRleGVkXG4nCisgICAgICAgICAgICAgJyh1c2luZyB0aGUgc2FtZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kIGFzIG5vcm1hbCBzdWJzY3JpcHRpb24pICcKKyAgICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICAgJ2tleSB0aGF0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIHNsaWNlIGxpc3QsIGFzIGZvbGxvd3MuICBJZiB0aGUgJworICAgICAgICAgICAgICdzbGljZVxuJworICAgICAgICAgICAgICdsaXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAnbG9uZVxuJworICAgICAgICAgICAgICdzbGljZSBpdGVtIGlzIHRoZSBrZXkuICBUaGUgY29udmVyc2lvbiBvZiBhIHNsaWNlIGl0ZW0gdGhhdCBpcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgJworICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgJ3NsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KSB3aG9zZSAnCisgICAgICAgICAgICAgJyJzdGFydCIsXG4nCisgICAgICAgICAgICAgJyJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAgICAnZ2l2ZW5cbicKKyAgICAgICAgICAgICAnYXMgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIGFuZCBzdHJpZGUsIHJlc3BlY3RpdmVseSwgJworICAgICAgICAgICAgICdzdWJzdGl0dXRpbmdcbicKKyAgICAgICAgICAgICAnIk5vbmUiIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKKyAnc3BlY2lhbGF0dHJzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBBdHRyaWJ1dGVzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyAnCisgICAgICAgICAgICAgICAgICd0byBzZXZlcmFsXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgJworICAgICAgICAgICAgICAgICAnbm90IHJlcG9ydGVkXG4nCisgICAgICAgICAgICAgICAgICdieSB0aGUgImRpcigpIiBidWlsdC1pbiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGljdF9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEEgZGljdGlvbmFyeSBvciBvdGhlciBtYXBwaW5nIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICcgICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLl9fY2xhc3NfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX2Jhc2VzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi5fX25hbWVfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgbmFtZSBvZiB0aGUgY2xhc3MsIGZ1bmN0aW9uLCBtZXRob2QsIGRlc2NyaXB0b3IsIG9yICcKKyAgICAgICAgICAgICAgICAgJ2dlbmVyYXRvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24uX19xdWFsbmFtZV9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSAqcXVhbGlmaWVkIG5hbWUqIG9mIHRoZSBjbGFzcywgZnVuY3Rpb24sIG1ldGhvZCwgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciwgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRvciBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4zLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX21yb19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkICcKKyAgICAgICAgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLm1ybygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgJ2F0IGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX3N1YmNsYXNzZXNfXygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgJworICAgICAgICAgICAgICAgICAnaW1tZWRpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlICcKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFs8Y2xhc3MgJ2Jvb2wnPl1cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1sxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgJworICAgICAgICAgICAgICAgICAnZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICBpbiB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKEJhc2ljIGN1c3RvbWl6YXRpb24pLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgIlsxLCAyXSIgaXMgY29uc2lkZXJlZCBlcXVhbCAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnICAgICJbMS4wLCAyLjBdIiwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJbM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW4ndCB0ZWxsIHRoZSB0eXBlIG9mICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgIG9wZXJhbmRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbNF0gQ2FzZWQgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5ICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICcgICAgYmVpbmcgb25lIG9mICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgIkxsIiAoTGV0dGVyLCAnCisgICAgICAgICAgICAgICAgICdsb3dlcmNhc2UpLFxuJworICAgICAgICAgICAgICAgICAnICAgIG9yICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnWzVdIFRvIGZvcm1hdCBvbmx5IGEgdHVwbGUgeW91IHNob3VsZCB0aGVyZWZvcmUgcHJvdmlkZSBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgc2luZ2xldG9uIHR1cGxlIHdob3NlIG9ubHkgZWxlbWVudCBpcyB0aGUgdHVwbGUgdG8gYmUgJworICAgICAgICAgICAgICAgICAnZm9ybWF0dGVkLlxuJywKKyAnc3BlY2lhbG5hbWVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBtZXRob2QgbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICdzeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgJworICAgICAgICAgICAgICAgICAnc2xpY2luZykgYnlcbicKKyAgICAgICAgICAgICAgICAgImRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvbidzICIKKyAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvXG4nCisgICAgICAgICAgICAgICAgICcqb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3JcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnYSBtZXRob2QgbmFtZWQgIl9fZ2V0aXRlbV9fKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgY2xhc3MsXG4nCisgICAgICAgICAgICAgICAgICd0aGVuICJ4W2ldIiBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gInR5cGUoeCkuX19nZXRpdGVtX18oeCwgJworICAgICAgICAgICAgICAgICAnaSkiLlxuJworICAgICAgICAgICAgICAgICAnRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAncmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbicKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIgb3IgIlR5cGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZXR0aW5nIGEgc3BlY2lhbCBtZXRob2QgdG8gIk5vbmUiIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nXG4nCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4gIEZvciBleGFtcGxlLCBpZiBhIGNsYXNzIHNldHMgJworICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICd0byAiTm9uZSIsIHRoZSBjbGFzcyBpcyBub3QgaXRlcmFibGUsIHNvIGNhbGxpbmcgIml0ZXIoKSIgb24gJworICAgICAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgd2lsbCByYWlzZSBhICJUeXBlRXJyb3IiICh3aXRob3V0IGZhbGxpbmcgYmFjayB0b1xuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiKS4gWzJdXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gaW1wbGVtZW50aW5nIGEgY2xhc3MgdGhhdCBlbXVsYXRlcyBhbnkgYnVpbHQtaW4gdHlwZSwgJworICAgICAgICAgICAgICAgICAnaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCB0aGF0IHRoZSBlbXVsYXRpb24gb25seSBiZSBpbXBsZW1lbnRlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnZGVncmVlIHRoYXQgaXRcbicKKyAgICAgICAgICAgICAgICAgJ21ha2VzIHNlbnNlIGZvciB0aGUgb2JqZWN0IGJlaW5nIG1vZGVsbGVkLiAgRm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgJ3NvbWVcbicKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsIG9mIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnZWxlbWVudHMsIGJ1dFxuJworICAgICAgICAgICAgICAgICAnZXh0cmFjdGluZyBhIHNsaWNlIG1heSBub3QgbWFrZSBzZW5zZS4gIChPbmUgZXhhbXBsZSBvZiB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2lzIHRoZVxuJworICAgICAgICAgICAgICAgICAnIk5vZGVMaXN0IiBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgTW9kZWwuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0Jhc2ljIGN1c3RvbWl6YXRpb25cbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgJworICAgICAgICAgICAgICAgICAnYXMgc3VjaClcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgJworICAgICAgICAgICAgICAgICAnYXMgaXRzXG4nCisgICAgICAgICAgICAgICAgICcgICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgJworICAgICAgICAgICAgICAgICAndG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gICcKKyAgICAgICAgICAgICAgICAgJ1RoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICcodXN1YWxseSBhblxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAnICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gJworICAgICAgICAgICAgICAgICAndGhlIG5ld1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiAnCisgICAgICAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW9uLiAgSXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiKSwgYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgICAgICcgICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MgaGFzIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLCBpZlxuJworICAgICAgICAgICAgICAgICAnICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyICcKKyAgICAgICAgICAgICAgICAgJ2luaXRpYWxpemF0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICcgICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiAnCisgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byAnCisgICAgICAgICAgICAgICAgICdjdXN0b21pemVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgIl9faW5pdF9fKCkiOyAnCisgICAgICAgICAgICAgICAgICdkb2luZyBzb1xuJworICAgICAgICAgICAgICAgICAnICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyBhbHNvXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICJfX2RlbF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCwgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgY2FsbCBpdFxuJworICAgICAgICAgICAgICAgICAnICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCAnCisgICAgICAgICAgICAgICAgICdhIGxhdGVyXG4nCisgICAgICAgICAgICAgICAgICcgICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlZCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCAnCisgICAgICAgICAgICAgICAgICdleGlzdCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSAnCisgICAgICAgICAgICAgICAgICd0aGUgZm9ybWVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdsYXR0ZXIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gICcKKyAgICAgICAgICAgICAgICAgJ1NvbWUgY29tbW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgJ3BhcmVudCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayAnCisgICAgICAgICAgICAgICAgICdmcmFtZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayAnCisgICAgICAgICAgICAgICAgICdzdG9yZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhICcKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiAnCisgICAgICAgICAgICAgICAgICd1bmhhbmRsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgJworICAgICAgICAgICAgICAgICAndGhlIGN5Y2xlcztcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlIHRvICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICd0aGlyZCBjYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gInN5cy5sYXN0X3RyYWNlYmFjayIuICcKKyAgICAgICAgICAgICAgICAgJ0NpcmN1bGFyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCBjbGVhbmVkICcKKyAgICAgICAgICAgICAgICAgJ3VwIHdoZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICIgICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdCdzIG9uIGJ5ICIKKyAgICAgICAgICAgICAgICAgJ2RlZmF1bHQpLiBSZWZlclxuJworICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlICcKKyAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgdG9waWMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciAnCisgICAgICAgICAgICAgICAgICdkdXJpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCAnCisgICAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgICAnICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuICcKKyAgICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciX19kZWxfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3MgJworICAgICAgICAgICAgICAgICAnb2YgYmVpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgJworICAgICAgICAgICAgICAgICAnRm9yIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgJworICAgICAgICAgICAgICAgICAnbWluaW11bSBuZWVkZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAnCisgICAgICAgICAgICAgICAgICcxLjUsXG4nCisgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgJworICAgICAgICAgICAgICAgICAnc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgJ2dsb2JhbHMgYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCAnCisgICAgICAgICAgICAgICAgICd0aGlzIG1heVxuJworICAgICAgICAgICAgICAgICAnICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgJworICAgICAgICAgICAgICAgICAnYXZhaWxhYmxlIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JlcHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJvZmZpY2lhbCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsICcKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgJ3VzZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdmb3JtXG4nCisgICAgICAgICAgICAgICAgICcgICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgJworICAgICAgICAgICAgICAgICAncmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJyJfX3JlcHJfXygpIiBidXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gJworICAgICAgICAgICAgICAgICAnImluZm9ybWFsIlxuJworICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N0cl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAgICAgJyJmb3JtYXQoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgJworICAgICAgICAgICAgICAgICAndGhlcmUgaXMgbm9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGVjdGF0aW9uIHRoYXQgIl9fc3RyX18oKSIgcmV0dXJuIGEgdmFsaWQgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb246IGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiB0eXBlICcKKyAgICAgICAgICAgICAgICAgJyJvYmplY3QiXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ieXRlc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uIG9mIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uLCBhbmQgYnkgJworICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uLFxuJworICAgICAgICAgICAgICAgICAnICAgZXZhbHVhdGlvbiBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnInN0ci5mb3JtYXQoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyBhIHN0cmluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgZGVzaXJlZC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2Zvcm1hdF9fKCkiLCBob3dldmVyIG1vc3QgY2xhc3NlcyB3aWxsIGVpdGhlciAnCisgICAgICAgICAgICAgICAgICdkZWxlZ2F0ZVxuJworICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvciB1c2UgYSAnCisgICAgICAgICAgICAgICAgICdzaW1pbGFyXG4nCisgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFNlZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlIGZvciBhIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiAnCisgICAgICAgICAgICAgICAgICdpdHNlbGZcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgJ2lzIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgJworICAgICAgICAgICAgICAgICAnInguX19sZV9fKHkpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgJworICAgICAgICAgICAgICAgICAnIng+eSIgY2FsbHNcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAnCisgICAgICAgICAgICAgICAgICciTm90SW1wbGVtZW50ZWQiXG4nCisgICAgICAgICAgICAgICAgICcgICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyICcKKyAgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgJworICAgICAgICAgICAgICAgICAnZm9yIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgJ2FueSB2YWx1ZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRleHQgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAnCisgICAgICAgICAgICAgICAgICciYm9vbCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgJworICAgICAgICAgICAgICAgICAnZmFsc2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2ludmVydHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgJworICAgICAgICAgICAgICAgICAnaW1wbGllZFxuJworICAgICAgICAgICAgICAgICAnICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciAnCisgICAgICAgICAgICAgICAgICdleGFtcGxlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvICcKKyAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpY2FsbHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290ICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiwgc2VlXG4nCisgICAgICAgICAgICAgICAgICcgICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50ICcKKyAgICAgICAgICAgICAgICAgJ25vdGVzIG9uXG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICAnKHRvIGJlIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCAnCisgICAgICAgICAgICAgICAgICd0aGUgcmlnaHRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlICcKKyAgICAgICAgICAgICAgICAgImVhY2ggb3RoZXInc1xuIgorICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyAnCisgICAgICAgICAgICAgICAgICdyZWZsZWN0aW9uLFxuJworICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiAnCisgICAgICAgICAgICAgICAgICdJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgIiAgIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGFuZCByaWdodCBvcGVyYW5kJ3MgdHlwZSAiCisgICAgICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgICAgICIgICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzIHR5cGUsICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksICcKKyAgICAgICAgICAgICAgICAgJ290aGVyd2lzZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgIiAgIGxlZnQgb3BlcmFuZCdzIG1ldGhvZCBoYXMgcHJpb3JpdHkuICBWaXJ0dWFsIHN1YmNsYXNzaW5nICIKKyAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faGFzaF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICAgICAnb24gbWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAnICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAnCisgICAgICAgICAgICAgICAgICciZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgJworICAgICAgICAgICAgICAgICAncHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZTsgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlIG9yKSAnCisgICAgICAgICAgICAgICAgICd0aGUgaGFzaFxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgJworICAgICAgICAgICAgICAgICAncGFydCBpblxuJworICAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gJworICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAnCisgICAgICAgICAgICAgICAgICciUHlfc3NpemVfdCIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gJworICAgICAgICAgICAgICAgICAnMzItYml0XG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgJworICAgICAgICAgICAgICAgICAnaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuJworICAgICAgICAgICAgICAgICAnICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiAnCisgICAgICAgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAnCisgICAgICAgICAgICAgICAgICcicHl0aG9uIC1jXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgJworICAgICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19lcV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgJworICAgICAgICAgICAgICAgICAnaXRlbXMgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uc1xuJworICAgICAgICAgICAgICAgICAiICAgcmVxdWlyZXMgdGhhdCBhIGtleSdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgIgorICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaGFzaFxuIgorICAgICAgICAgICAgICAgICAnICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpID09ICcKKyAgICAgICAgICAgICAgICAgJ2hhc2goeSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAnCisgICAgICAgICAgICAgICAgICciX19oYXNoX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gICcKKyAgICAgICAgICAgICAgICAgJ1doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtICcKKyAgICAgICAgICAgICAgICAgJ2F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICdpZGVudGlmaWVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlclxuJworICAgICAgICAgICAgICAgICAnICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4nCisgICAgICAgICAgICAgICAgICcgICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N1cHByZXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAnICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiICcKKyAgICAgICAgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSAnCisgICAgICAgICAgICAgICAgICdyYW5kb20gdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICAgICAnICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCAnCisgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhICcKKyAgICAgICAgICAgICAgICAgJ2RlbmlhbC1cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdleHBsb2l0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSAnCisgICAgICAgICAgICAgICAgICdjb21wbGV4aXR5LlxuJworICAgICAgICAgICAgICAgICAnICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICdvcmRlciBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgJworICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlc1xuJworICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgJzMyLWJpdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgJworICAgICAgICAgICAgICAgICAnZGVmYXVsdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21lYW5pbmcgb2ZcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgJworICAgICAgICAgICAgICAgICAnIngubmFtZSIpIGZvclxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgJworICAgICAgICAgICAgICAgICAnaXQgZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnbmFtZS4gVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsICcKKyAgICAgICAgICAgICAgICAgJ21lY2hhbmlzbSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgJworICAgICAgICAgICAgICAgICAnYXN5bW1ldHJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyAnCisgICAgICAgICAgICAgICAgICdkb25lIGJvdGggZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiAnCisgICAgICAgICAgICAgICAgICd3b3VsZCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICcgICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSAnCisgICAgICAgICAgICAgICAgICd0aGF0IGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCAnCisgICAgICAgICAgICAgICAgICdieSBub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICcoYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgJworICAgICAgICAgICAgICAgICAnZ2V0IHRvdGFsXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgJworICAgICAgICAgICAgICAgICAnZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSAnCisgICAgICAgICAgICAgICAgICdyZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSAnCisgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCAnCisgICAgICAgICAgICAgICAgICduZWVkcywgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlIHN5bnRheFxuJworICAgICAgICAgICAgICAgICAnICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSBTcGVjaWFsIG1ldGhvZCBsb29rdXAuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICcKKyAgICAgICAgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgJworICAgICAgICAgICAgICAgICAnZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgJworICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgJworICAgICAgICAgICAgICAgICAnb2JqLm5hbWUiIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJ211c3QgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhICcKKyAgICAgICAgICAgICAgICAgJ2xpc3QgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICBzb3J0cyBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgaW4gYW5cbicKKyAgICAgICAgICAgICAgICAgIipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lcidzICIKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgJ3BhcmVudHMpLiAgSW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ3dob3NlIG5hbWUgaXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAnCisgICAgICAgICAgICAgICAgICcqaW5zdGFuY2UqIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAnCisgICAgICAgICAgICAgICAgICciTm9uZSIgd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICcKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiAnCisgICAgICAgICAgICAgICAgICd0aGUgb3duZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGF0IHRoZSB0aW1lIHRoZSBvd25pbmcgY2xhc3MgKm93bmVyKiBpcyBjcmVhdGVkLiAnCisgICAgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUgYXNcbicKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAnZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGZvclxuJworICAgICAgICAgICAgICAgICAndW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ludm9raW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgJyJiaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAnbWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAnaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuJworICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QsIGl0XG4nCisgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yICcKKyAgICAgICAgICAgICAgICAgJ2RlbGV0ZVxuJworICAgICAgICAgICAgICAgICAidGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgIgorICAgICAgICAgICAgICAgICAnImEueCIgaGFzIGFcbicKKyAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgJyJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyBvZlxuJworICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3IgYW5kXG4nCisgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAnaG93IHRoZXkgd2VyZSBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgJworICAgICAgICAgICAgICAgICAnImEueCIuIEhvd1xuJworICAgICAgICAgICAgICAgICAndGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaXJlY3QgQ2FsbFxuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSAnCisgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAnICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW5zdGFuY2UgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkICcKKyAgICAgICAgICAgICAgICAgJ2ludG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0NsYXNzIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgJworICAgICAgICAgICAgICAgICAnY2FsbDpcbicKKyAgICAgICAgICAgICAgICAgJyAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU3VwZXIgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgJworICAgICAgICAgICAgICAgICAnInN1cGVyKEIsXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzICJBIlxuJworICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb24gZGVwZW5kc1xuJworICAgICAgICAgICAgICAgICAnb24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciAnCisgICAgICAgICAgICAgICAgICdjYW4gZGVmaW5lXG4nCisgICAgICAgICAgICAgICAgICdhbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIi4gIElmIGl0XG4nCisgICAgICAgICAgICAgICAgICdkb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnd2lsbCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmQvb3JcbicKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICduZWl0aGVyLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAnYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lICcKKyAgICAgICAgICAgICAgICAgJ2JvdGhcbicKKyAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSAnCisgICAgICAgICAgICAgICAgICdqdXN0IHRoZVxuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciX19nZXRfXygpIlxuJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS4gIEluXG4nCisgICAgICAgICAgICAgICAgICdjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJjbGFzc21ldGhvZCgpIikgYXJlXG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgJworICAgICAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgICAgICdyZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHRvXG4nCisgICAgICAgICAgICAgICAgICdhY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZSBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgJ0FjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgJ3N0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gJworICAgICAgICAgICAgICAgICAnY3JlYXRpbmcgbGFyZ2VcbicKKyAgICAgICAgICAgICAgICAgJ251bWJlcnMgb2YgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvICcKKyAgICAgICAgICAgICAgICAgJ2hvbGQgYVxuJworICAgICAgICAgICAgICAgICAndmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogJworICAgICAgICAgICAgICAgICAnaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICdjcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgJworICAgICAgICAgICAgICAgICAnb3Igc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3IgJworICAgICAgICAgICAgICAgICAnZWFjaFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJ35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ2Fzc2lnbmVkIG5ld1xuJworICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgJ0F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICcgIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAnCisgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAnICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuJworICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuJworICAgICAgICAgICAgICAgICAnICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSAnCisgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAnICBkZXNjcmlwdG9ycyAoSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKSBmb3IgZWFjaCB2YXJpYWJsZSAnCisgICAgICAgICAgICAgICAgICduYW1lLiAgQXMgYVxuJworICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIGZvclxuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW4gbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzICcKKyAgICAgICAgICAgICAgICAgJ2luYWNjZXNzaWJsZVxuJworICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcykuXG4nCisgICAgICAgICAgICAgICAgICcgIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgJworICAgICAgICAgICAgICAgICAnZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICcgIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgJ2Zyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiAnCisgICAgICAgICAgICAgICAgICdhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouICcKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICcgIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyAnCisgICAgICAgICAgICAgICAgICdtYXkgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICAnICAqX19zbG90c19fKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbmV2ZXIgYSBjbGFzcyBpbmhlcml0cyBmcm9tIGFub3RoZXIgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgJypfX2luaXRfc3ViY2xhc3NfXyogaXNcbicKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBvbiB0aGF0IGNsYXNzLiBUaGlzIHdheSwgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyB3aGljaFxuJworICAgICAgICAgICAgICAgICAnY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBzdWJjbGFzc2VzLiBUaGlzIGlzIGNsb3NlbHkgcmVsYXRlZCAnCisgICAgICAgICAgICAgICAgICd0byBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVjb3JhdG9ycywgYnV0IHdoZXJlIGNsYXNzIGRlY29yYXRvcnMgb25seSBhZmZlY3QgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmljIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICd0aGV5XCdyZSBhcHBsaWVkIHRvLCAiX19pbml0X3N1YmNsYXNzX18iIHNvbGVseSBhcHBsaWVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2Z1dHVyZVxuJworICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlcyBvZiB0aGUgY2xhc3MgZGVmaW5pbmcgdGhlIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3NtZXRob2Qgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fKGNscylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBjb250YWluaW5nIGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZWQuXG4nCisgICAgICAgICAgICAgICAgICcgICAqY2xzKiBpcyB0aGVuIHRoZSBuZXcgc3ViY2xhc3MuIElmIGRlZmluZWQgYXMgYSBub3JtYWwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdGhpcyBtZXRob2QgaXMgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEtleXdvcmQgYXJndW1lbnRzIHdoaWNoIGFyZSBnaXZlbiB0byBhIG5ldyBjbGFzcyBhcmUgJworICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcGFyZW50XCdzIGNsYXNzICJfX2luaXRfc3ViY2xhc3NfXyIuIEZvciBjb21wYXRpYmlsaXR5ICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzZXMgdXNpbmcgIl9faW5pdF9zdWJjbGFzc19fIiwgb25lIHNob3VsZCB0YWtlIG91dCAnCisgICAgICAgICAgICAgICAgICd0aGUgbmVlZGVkXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgcGFzcyB0aGUgb3RoZXJzIG92ZXIgdG8gdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MsIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgY2xhc3MgUGhpbG9zb3BoZXI6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgZGVmYXVsdF9uYW1lLCAnCisgICAgICAgICAgICAgICAgICcqKmt3YXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIGNscy5kZWZhdWx0X25hbWUgPSBkZWZhdWx0X25hbWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgY2xhc3MgQXVzdHJhbGlhblBoaWxvc29waGVyKFBoaWxvc29waGVyLCAnCisgICAgICAgICAgICAgICAgICdkZWZhdWx0X25hbWU9IkJydWNlIik6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAib2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fIiAnCisgICAgICAgICAgICAgICAgICdkb2VzIG5vdGhpbmcsXG4nCisgICAgICAgICAgICAgICAgICcgICBidXQgcmFpc2VzIGFuIGVycm9yIGlmIGl0IGlzIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBtZXRhY2xhc3MgaGludCAibWV0YWNsYXNzIiBpcyBjb25zdW1lZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAncmVzdCBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICB0aGUgdHlwZSBtYWNoaW5lcnksIGFuZCBpcyBuZXZlciBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAnIl9faW5pdF9zdWJjbGFzc19fIlxuJworICAgICAgICAgICAgICAgICAnICAgICBpbXBsZW1lbnRhdGlvbnMuIFRoZSBhY3R1YWwgbWV0YWNsYXNzIChyYXRoZXIgdGhhbiB0aGUgJworICAgICAgICAgICAgICAgICAnZXhwbGljaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaGludCkgY2FuIGJlIGFjY2Vzc2VkIGFzICJ0eXBlKGNscykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0YWNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgJworICAgICAgICAgICAgICAgICAnY2xhc3MgYm9keSBpc1xuJworICAgICAgICAgICAgICAgICAnZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCAnCisgICAgICAgICAgICAgICAgICdsb2NhbGx5IHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAncmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgcGFzc2luZyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgJworICAgICAgICAgICAgICAgICAnb3IgYnlcbicKKyAgICAgICAgICAgICAgICAgJ2luaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQuIEluXG4nCisgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlc1xuJworICAgICAgICAgICAgICAgICAnb2YgIk1ldGEiOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICAgICAnYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgJworICAgICAgICAgICAgICAgICAnYmVsb3cuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzICcKKyAgICAgICAgICAgICAgICAgJ29jY3VyOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgICAgICAgJ2RldGVybWluZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gJworICAgICAgICAgICAgICAgICAnInR5cGUoKSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgdXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzcywgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZFxuJworICAgICAgICAgICAgICAgICAnbWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpIG9mICcKKyAgICAgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJ3N1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgICAgICd3aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgIl9fcHJlcGFyZV9fIiAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsXG4nCisgICAgICAgICAgICAgICAgICdpdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCAnCisgICAgICAgICAgICAgICAgICdiYXNlcyxcbicKKyAgICAgICAgICAgICAgICAgJyoqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCAnCisgICAgICAgICAgICAgICAgICdjb21lIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzcyBkZWZpbml0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgb3JkZXJlZCBtYXBwaW5nLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuJworICAgICAgICAgICAgICAgICAnICAgICBJbnRyb2R1Y2VkIHRoZSAiX19wcmVwYXJlX18iIG5hbWVzcGFjZSBob29rXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzICJleGVjKGJvZHksICcKKyAgICAgICAgICAgICAgICAgJ2dsb2JhbHMoKSxcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSkiLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgJyJleGVjKCkiIGlzIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJ2xleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcykgdG9cbicKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdIb3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgJworICAgICAgICAgICAgICAgICAnZnVuY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ2FjY2Vzc2VkIGF0IGFsbFxuJworICAgICAgICAgICAgICAgICAnZnJvbSBzdGF0aWMgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ09uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnYm9keSwgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgJworICAgICAgICAgICAgICAgICAnIm1ldGFjbGFzcyhuYW1lLCBiYXNlcyxcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSwgKiprd2RzKSIgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSAnCisgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAnYXMgdGhvc2UgcGFzc2VkIHRvICJfX3ByZXBhcmVfXyIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICd6ZXJvLVxuJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZm9ybSBvZiAic3VwZXIoKSIuICJfX2NsYXNzX18iIGlzIGFuIGltcGxpY2l0ICcKKyAgICAgICAgICAgICAgICAgJ2Nsb3N1cmVcbicKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2JvZHkgcmVmZXJcbicKKyAgICAgICAgICAgICAgICAgJ3RvIGVpdGhlciAiX19jbGFzc19fIiBvciAic3VwZXIiLiBUaGlzIGFsbG93cyB0aGUgemVybyAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmb3JtXG4nCisgICAgICAgICAgICAgICAgICdvZiAic3VwZXIoKSIgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgJ2Jhc2VkIG9uXG4nCisgICAgICAgICAgICAgICAgICdsZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkICcKKyAgICAgICAgICAgICAgICAgJ3RvIG1ha2UgdGhlXG4nCisgICAgICAgICAgICAgICAgICdjdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdyZXN1bHRpbmdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgInR5cGUuX19uZXdfXyIsIHRoZSBvYmplY3QgJworICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBuYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIG5ldyBvcmRlcmVkIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAnb3JpZ2luYWwgb2JqZWN0IGlzIGRpc2NhcmRlZC4gVGhlIG5ldyBjb3B5IGlzIHdyYXBwZWQgaW4gYSAnCisgICAgICAgICAgICAgICAgICdyZWFkLW9ubHlcbicKKyAgICAgICAgICAgICAgICAgJ3Byb3h5LCB3aGljaCBiZWNvbWVzIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRGVzY3JpYmVzIHRoZSBpbXBsaWNpdCAiX19jbGFzc19fIiBjbG9zdXJlIHJlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGFjbGFzcyBleGFtcGxlXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgJworICAgICAgICAgICAgICAgICAndGhhdCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICdiZWVuIGV4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCAnCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNcbicKKyAgICAgICAgICAgICAgICAgJ2RlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgJworICAgICAgICAgICAgICAgICAnZnJhbWV3b3JrcywgYW5kXG4nCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0hlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbicKKyAgICAgICAgICAgICAgICAgJyJjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCIgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzXG4nCisgICAgICAgICAgICAgICAgICdhcmUgZGVmaW5lZDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgT3JkZXJlZENsYXNzKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgQGNsYXNzbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgJworICAgICAgICAgICAgICAgICAnZGljdChuYW1lc3BhY2UpKVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKG5hbWVzcGFjZSlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IEEubWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAiICAgKCdfX21vZHVsZV9fJywgJ29uZScsICd0d28nLCAndGhyZWUnLCAnZm91cicpXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyAnCisgICAgICAgICAgICAgICAgICdiZWdpbnNcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzICJfX3ByZXBhcmVfXygpIiBtZXRob2Qgd2hpY2ggJworICAgICAgICAgICAgICAgICAncmV0dXJucyBhblxuJworICAgICAgICAgICAgICAgICAnZW1wdHkgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ii4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGFuZFxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICdpcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kICcKKyAgICAgICAgICAgICAgICAgJ2dldHNcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgJworICAgICAgICAgICAgICAgICAnb3JkZXJlZFxuJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgIm1lbWJlcnMiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3NcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBpblxuJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgJworICAgICAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAgICAgJyJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyAnCisgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAndHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0ICcKKyAgICAgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCAnCisgICAgICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICcobWV0YWNsYXNzKSBvZiBhXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnYWN0dWFsIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdhcmUgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICdvbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAnCisgICAgICAgICAgICAgICAgICciaXNpbnN0YW5jZSgpIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uYWxpdHkgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAnCisgICAgICAgICAgICAgICAgICciYWJjIlxuJworICAgICAgICAgICAgICAgICAnICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ0NvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgJworICAgICAgICAgICAgICAgICAnb3IgbWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgJyhsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgJworICAgICAgICAgICAgICAgICAnd2VsbC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAnZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yICcKKyAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICdlbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICdhbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayAnCisgICAgICAgICAgICAgICAgICc8IE4iIHdoZXJlXG4nCisgICAgICAgICAgICAgICAgICcqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZSBhXG4nCisgICAgICAgICAgICAgICAgICdyYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlIHRoZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAnCisgICAgICAgICAgICAgICAgICciY2xlYXIoKSIsXG4nCisgICAgICAgICAgICAgICAgICcic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgJworICAgICAgICAgICAgICAgICAnInVwZGF0ZSgpIlxuJworICAgICAgICAgICAgICAgICAiYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiAnCisgICAgICAgICAgICAgICAgICdhYnN0cmFjdCBiYXNlXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICciX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgJworICAgICAgICAgICAgICAgICAnImV4dGVuZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgJworICAgICAgICAgICAgICAgICAnbGlrZSBQeXRob25cbicKKyAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJ2FkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAnCisgICAgICAgICAgICAgICAgICcobWVhbmluZ1xuJworICAgICAgICAgICAgICAgICAncmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICcKKyAgICAgICAgICAgICAgICAgJyJfX3JhZGRfXygpIixcbicKKyAgICAgICAgICAgICAgICAgJyJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICAgICAgICAnYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0ICcKKyAgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4nCisgICAgICAgICAgICAgICAgICciX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdG9yO1xuJworICAgICAgICAgICAgICAgICAnZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcywgaXRcbicKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCAnCisgICAgICAgICAgICAgICAgICd0aGF0IGJvdGhcbicKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvICcKKyAgICAgICAgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgICAgICAgICdlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAnCisgICAgICAgICAgICAgICAgICciX19pdGVyX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gICcKKyAgICAgICAgICAgICAgICAgJ1Nob3VsZCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgJworICAgICAgICAgICAgICAgICAnIl9fbGVuX18oKSIgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAnY29udGV4dC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybiBhblxuJworICAgICAgICAgICAgICAgICAnICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgJworICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gJworICAgICAgICAgICAgICAgICAnVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVjdG5lc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnICBBIGNhbGwgbGlrZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFbMToyXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICBpcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiAnCisgICAgICAgICAgICAgICAgICd3aXRoICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3IgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdHlwZXMsXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICAnCisgICAgICAgICAgICAgICAgICdOb3RlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyB3aXNoZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC4gSWZcbicKKyAgICAgICAgICAgICAgICAgJyAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlZDsgaWYgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICcoYWZ0ZXIgYW55XG4nCisgICAgICAgICAgICAgICAgICcgICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiAnCisgICAgICAgICAgICAgICAgICdzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAncmFpc2VkIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iICcKKyAgICAgICAgICAgICAgICAgJ2ZvciBkaWN0XG4nCisgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgJworICAgICAgICAgICAgICAgICAnbmV3IGtleXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgJworICAgICAgICAgICAgICAgICAncmVwbGFjZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiAnCisgICAgICAgICAgICAgICAgICdlbGVtZW50c1xuJworICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAnICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gJworICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgJworICAgICAgICAgICAgICAgICAnc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5ICcKKyAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cywgc2VlIEl0ZXJhdG9yIFR5cGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgJworICAgICAgICAgICAgICAgICAnInJldmVyc2VkKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAnKCJfX2xlbl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICdwcm90b2NvbFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgJworICAgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAicmV2ZXJzZWQoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlICcKKyAgICAgICAgICAgICAgICAgJ25vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSAnCisgICAgICAgICAgICAgICAgICdlZmZpY2llbnRcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm4gdHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cywgdGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXktaXRlbSBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZW1iZXJzaGlwIHRlc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgdGhpcyBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgbGFuZ3VhZ2UgcmVmZXJlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBudW1lcmljIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkICcKKyAgICAgICAgICAgICAgICAgJ2J5IHRoZVxuJworICAgICAgICAgICAgICAgICAncGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIGZvclxuJworICAgICAgICAgICAgICAgICAnbm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciBpbnN0YW5jZSwgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSAiX19kaXZtb2RfXygpIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvICcKKyAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICdyZWxhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAndG8gYWNjZXB0XG4nCisgICAgICAgICAgICAgICAgICcgICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAnICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkICcKKyAgICAgICAgICAgICAgICAgJyhzd2FwcGVkKVxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0ICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhbmQgZG9lc1xuJworICAgICAgICAgICAgICAgICAnICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIFszXSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhbmRzIGFyZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAgZGlmZmVyZW50IHR5cGVzLiBbNF0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCAtXG4nCisgICAgICAgICAgICAgICAgICcgICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gJworICAgICAgICAgICAgICAgICAnIl9fcnN1Yl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgJworICAgICAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAnICAgKk5vdEltcGxlbWVudGVkKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAnCisgICAgICAgICAgICAgICAgICciX19ycG93X18oKSIgKHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSAiCisgICAgICAgICAgICAgICAgICdsZWZ0XG4nCisgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgIgorICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAndGhlIGxlZnRcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3MgIgorICAgICAgICAgICAgICAgICAnc3ViY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAiICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnMnIG9wZXJhdGlvbnMuXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkICcKKyAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiQD0iLCAiLz0iLCAiLy89IiwgIiU9IiwgJworICAgICAgICAgICAgICAgICAnIioqPSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAnYXR0ZW1wdCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICd0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICcgICAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWZpY1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgJworICAgICAgICAgICAgICAgICAnYmFjayB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgd2l0aCBhbiAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ICcKKyAgICAgICAgICAgICAgICAgJz1cbicKKyAgICAgICAgICAgICAgICAgJyAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgJworICAgICAgICAgICAgICAgICAnInkuX19yYWRkX18oeCkiIGFyZVxuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiAnCisgICAgICAgICAgICAgICAgICdjZXJ0YWluXG4nCisgICAgICAgICAgICAgICAgICcgICBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgJworICAgICAgICAgICAgICAgICAnZXJyb3JzXG4nCisgICAgICAgICAgICAgICAgICIgICAoc2VlIFdoeSBkb2VzIGFfdHVwbGVbaV0gKz0gWydpdGVtJ10gcmFpc2UgYW4gZXhjZXB0aW9uICIKKyAgICAgICAgICAgICAgICAgJ3doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBhZGRpdGlvbiB3b3Jrcz8pLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgJworICAgICAgICAgICAgICAgICAndGhlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vZGVsLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZWdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG9zX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Fic19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgJworICAgICAgICAgICAgICAgICAnIisiLFxuJworICAgICAgICAgICAgICAgICAnICAgImFicygpIiBhbmQgIn4iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgJworICAgICAgICAgICAgICAgICAnImludCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiBuZWVkc1xuJworICAgICAgICAgICAgICAgICAnICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCAoc3VjaFxuJworICAgICAgICAgICAgICAgICAnICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJvY3QoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgJworICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCwgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IHRvXG4nCisgICAgICAgICAgICAgICAgICdiZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IG1hbmFnZXJcbicKKyAgICAgICAgICAgICAgICAgJ2hhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCAnCisgICAgICAgICAgICAgICAgICdydW50aW1lIGNvbnRleHRcbicKKyAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyAnCisgICAgICAgICAgICAgICAgICdhcmUgbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQpLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgJworICAgICAgICAgICAgICAgICAncmVzdG9yaW5nIHZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgJworICAgICAgICAgICAgICAgICAnY2xvc2luZyBvcGVuZWRcbicKKyAgICAgICAgICAgICAgICAgJ2ZpbGVzLCBldGMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSBDb250ZXh0ICcKKyAgICAgICAgICAgICAgICAgJ01hbmFnZXIgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VudGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICIgICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSAiCisgICAgICAgICAgICAgICAgICd0YXJnZXQocylcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlcnNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgJworICAgICAgICAgICAgICAgICAnZXhpdGVkLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyB3aWxsXG4nCisgICAgICAgICAgICAgICAgICcgICBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N1cHByZXNzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0ICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZFxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAncHJvY2Vzc2VkXG4nCisgICAgICAgICAgICAgICAgICcgICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgJworICAgICAgICAgICAgICAgICAncGFzc2VkLWluXG4nCisgICAgICAgICAgICAgICAgICIgICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LlxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIG1ldGhvZCBsb29rdXBcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICdhcmUgb25seVxuJworICAgICAgICAgICAgICAgICAiZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdCdzIHR5cGUsICIKKyAgICAgICAgICAgICAgICAgJ25vdCBpblxuJworICAgICAgICAgICAgICAgICAidGhlIG9iamVjdCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgIgorICAgICAgICAgICAgICAgICAncmVhc29uIHdoeVxuJworICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGVuKGMpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlICdDJyBoYXMgbm8gbGVuKClcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgc3VjaCBhcyAiX19oYXNoX18oKSIgYW5kICJfX3JlcHJfXygpIiB0aGF0IGFyZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBieVxuJworICAgICAgICAgICAgICAgICAnYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgJworICAgICAgICAgICAgICAgICAnb2YgdGhlc2VcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2ZhaWwgd2hlblxuJworICAgICAgICAgICAgICAgICAnaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgJ19faGFzaF9fJyBvZiAnaW50JyBvYmplY3QgbmVlZHMgYW4gIgorICAgICAgICAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBpbiB0aGlzXG4nCisgICAgICAgICAgICAgICAgICJ3YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzICdtZXRhY2xhc3MgY29uZnVzaW9uJywgYW5kICIKKyAgICAgICAgICAgICAgICAgJ2lzIGF2b2lkZWRcbicKKyAgICAgICAgICAgICAgICAgJ2J5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVyZXN0IG9mXG4nCisgICAgICAgICAgICAgICAgICdjb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvICcKKyAgICAgICAgICAgICAgICAgJ2J5cGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICd0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyAnCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYyA9IEMoKVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgJworICAgICAgICAgICAgICAgICAndHlwZVxuJworICAgICAgICAgICAgICAgICAnICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuJworICAgICAgICAgICAgICAgICAnICAgMTBcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVzXG4nCisgICAgICAgICAgICAgICAgICdzaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyLCBhdFxuJworICAgICAgICAgICAgICAgICAndGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzICh0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gYmVcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG4nLAorICdzdHJpbmctbWV0aG9kcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5nIE1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1N0cmluZ3MgaW1wbGVtZW50IGFsbCBvZiB0aGUgY29tbW9uIHNlcXVlbmNlIG9wZXJhdGlvbnMsICcKKyAgICAgICAgICAgICAgICAgICAnYWxvbmcgd2l0aFxuJworICAgICAgICAgICAgICAgICAgICd0aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1N0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGluZyBhXG4nCisgICAgICAgICAgICAgICAgICAgJ2xhcmdlIGRlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlICcKKyAgICAgICAgICAgICAgICAgICAnInN0ci5mb3JtYXQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTdHJpbmcgU3ludGF4IGFuZCBDdXN0b20gU3RyaW5nIEZvcm1hdHRpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgICdvdGhlciBiYXNlZFxuJworICAgICAgICAgICAgICAgICAgICdvbiBDICJwcmludGYiIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgJworICAgICAgICAgICAgICAgICAgICdyYW5nZSBvZiB0eXBlc1xuJworICAgICAgICAgICAgICAgICAgICdhbmQgaXMgc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiAnCisgICAgICAgICAgICAgICAgICAgJ2Zhc3RlciBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2Nhc2VzIGl0IGNhbiBoYW5kbGUgKHByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZykuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGUgVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkICcKKyAgICAgICAgICAgICAgICAgICAnbGlicmFyeSBjb3ZlcnMgYVxuJworICAgICAgICAgICAgICAgICAgICdudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgJworICAgICAgICAgICAgICAgICAgICd1dGlsaXRpZXNcbicKKyAgICAgICAgICAgICAgICAgICAnKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgInJlIiAnCisgICAgICAgICAgICAgICAgICAgJ21vZHVsZSkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2FwaXRhbGl6ZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAnY2FwaXRhbGl6ZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2FzZWZvbGQoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzIG1heSBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgJworICAgICAgICAgICAgICAgICAgICdhZ2dyZXNzaXZlIGJlY2F1c2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5nLiBGb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyICJcJ8OfXCciIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAiInNzIiIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNpbmNlIGl0IGlzIGFscmVhZHkgbG93ZXJjYXNlLCAibG93ZXIoKSIgd291bGQgZG8gJworICAgICAgICAgICAgICAgICAgICdub3RoaW5nIHRvICJcJ8OfXCciO1xuJworICAgICAgICAgICAgICAgICAgICcgICAiY2FzZWZvbGQoKSIgY29udmVydHMgaXQgdG8gIiJzcyIiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIGNhc2Vmb2xkaW5nIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzICcKKyAgICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nICcKKyAgICAgICAgICAgICAgICAgICAnaXMgZG9uZVxuJworICAgICAgICAgICAgICAgICAgICcgICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUkgJworICAgICAgICAgICAgICAgICAgICdzcGFjZSkuIFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgJworICAgICAgICAgICAgICAgICAgICdlcXVhbCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnKnN0YXJ0KiBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC4gRGVmYXVsdFxuJworICAgICAgICAgICAgICAgICAgICcgICBlbmNvZGluZyBpcyAiXCd1dGYtOFwnIi4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhICcKKyAgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnIlwnc3RyaWN0XCciLFxuJworICAgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuICcKKyAgICAgICAgICAgICAgICAgICAnT3RoZXIgcG9zc2libGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFyZSAiXCdpZ25vcmVcJyIsICJcJ3JlcGxhY2VcJyIsICcKKyAgICAgICAgICAgICAgICAgICAnIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJ2JhY2tzbGFzaHJlcGxhY2VcJyIgYW5kIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgJworICAgICAgICAgICAgICAgICAgICd2aWFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gRXJyb3IgSGFuZGxlcnMuICcKKyAgICAgICAgICAgICAgICAgICAnRm9yIGEgbGlzdFxuJworICAgICAgICAgICAgICAgICAgICcgICBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uIFN0YW5kYXJkIEVuY29kaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnYWRkZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAnCisgICAgICAgICAgICAgICAgICAgJypzdWZmaXgqLFxuJworICAgICAgICAgICAgICAgICAgICcgICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlICcKKyAgICAgICAgICAgICAgICAgICAnb2Ygc3VmZml4ZXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0ICcKKyAgICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5leHBhbmR0YWJzKHRhYnNpemU9OClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdhcmUgcmVwbGFjZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICcgICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2ICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHNvIG9uKS5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gemVybyAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgaXMgYVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgaW5zZXJ0ZWQgJworICAgICAgICAgICAgICAgICAgICdpbiB0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi4gKFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdpcyBhIG5ld2xpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbHVtbiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgdW5jaGFuZ2VkICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiBob3cgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzQnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoNClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJzAxICAwMTIgMDEyMyAgICAwMTIzNCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJypzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kIHdpdGhpbiB0aGUgc2xpY2UgInNbc3RhcnQ6ZW5kXSIuICBPcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyAqc3RhcnQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uICBSZXR1cm4gJworICAgICAgICAgICAgICAgICAgICciLTEiIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpzdWIqIGlzIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgJworICAgICAgICAgICAgICAgICAgICduZWVkIHRvIGtub3dcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nIG9yIG5vdCxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB1c2UgdGhlICJpbiIgb3BlcmF0b3I6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICAgID4+PiAnUHknIGluICdQeXRob24nXG4iCisgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiAnCisgICAgICAgICAgICAgICAgICAgJ3doaWNoIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgJworICAgICAgICAgICAgICAgICAgICdyZXBsYWNlbWVudCBmaWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyAie30iLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGVpdGhlclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lICcKKyAgICAgICAgICAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ2VhY2hcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuJworICAgICAgICAgICAgICAgICAgICIgICAnVGhlIHN1bSBvZiAxICsgMiBpcyAzJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTdHJpbmcgU3ludGF4IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3ZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdF9tYXAobWFwcGluZylcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNpbWlsYXIgdG8gInN0ci5mb3JtYXQoKiptYXBwaW5nKSIsIGV4Y2VwdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnIm1hcHBpbmciIGlzIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSAiZGljdCIuICBUaGlzIGlzIHVzZWZ1bCBpZiAnCisgICAgICAgICAgICAgICAgICAgJ2ZvciBleGFtcGxlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7bmFtZX0gd2FzIGJvcm4gaW4gIgorICAgICAgICAgICAgICAgICAgICJ7Y291bnRyeX0nLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPSdHdWlkbycpKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTGlrZSAiZmluZCgpIiwgYnV0IHJhaXNlICJWYWx1ZUVycm9yIiB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbG51bSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhbnVtZXJpYyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciAiYyJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgJworICAgICAgICAgICAgICAgICAgICciVHJ1ZSI6XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJjLmlzYWxwaGEoKSIsICJjLmlzZGVjaW1hbCgpIiwgImMuaXNkaWdpdCgpIiwgb3IgJworICAgICAgICAgICAgICAgICAgICciYy5pc251bWVyaWMoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbHBoYSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhYmV0aWMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gICcKKyAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSAnCisgICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhpcyBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZVxuJworICAgICAgICAgICAgICAgICAgICcgICBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2RlY2ltYWwoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gJworICAgICAgICAgICAgICAgICAgICdEZWNpbWFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuICcKKyAgICAgICAgICAgICAgICAgICAnYmUgdXNlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyAnCisgICAgICAgICAgICAgICAgICAgJ0RJR0lUIFpFUk8uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNkaWdpdCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgJworICAgICAgICAgICAgICAgICAgICdhbmQgdGhlcmUgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzICcKKyAgICAgICAgICAgICAgICAgICAnaW5jbHVkZSBkZWNpbWFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzICcKKyAgICAgICAgICAgICAgICAgICAnYSBjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2lkZW50aWZpZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgJworICAgICAgICAgICAgICAgICAgICdhY2NvcmRpbmcgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVXNlICJrZXl3b3JkLmlza2V5d29yZCgpIiB0byB0ZXN0IGZvciByZXNlcnZlZCAnCisgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIHN1Y2ggYXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImRlZiIgYW5kICJjbGFzcyIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNsb3dlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSBsb3dlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzbnVtZXJpYygpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gJworICAgICAgICAgICAgICAgICAgICdOdW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICd0aGF0IGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiAnCisgICAgICAgICAgICAgICAgICAgJ0ZSQUNUSU9OXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCAnCisgICAgICAgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzcHJpbnRhYmxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAncHJpbnRhYmxlIG9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSBhc1xuJworICAgICAgICAgICAgICAgICAgICcgICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICcKKyAgICAgICAgICAgICAgICAgICAnKDB4MjApIHdoaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gJworICAgICAgICAgICAgICAgICAgICcicmVwcigpIiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nICcKKyAgICAgICAgICAgICAgICAgICAnb2Ygc3RyaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcgICB3cml0dGVuIHRvICJzeXMuc3Rkb3V0IiBvciAic3lzLnN0ZGVyciIuKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzc3BhY2UoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluICcKKyAgICAgICAgICAgICAgICAgICAndGhlIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgJworICAgICAgICAgICAgICAgICAgICdXaGl0ZXNwYWNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCAnCisgICAgICAgICAgICAgICAgICAgJ2JpZGlyZWN0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzdGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXJlIGlzIGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnbWF5IG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSAnCisgICAgICAgICAgICAgICAgICAgJ2Nhc2VkIG9uZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXN1cHBlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSB1cHBlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmpvaW4oaXRlcmFibGUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5ncyBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCBpZiAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXJlIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyBwcm92aWRpbmcgJworICAgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgICAgJyp3aWR0aCouXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICdpcyBhbiBBU0NJSVxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2xlc3MgdGhhbiBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBlcXVhbCB0byAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sb3dlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBbNF1cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJzMuMTMgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubHN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAncHJlZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5sc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnc3BhY2lvdXMgICAnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnd3d3LmV4YW1wbGUuY29tJy5sc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdleGFtcGxlLmNvbSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgJworICAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInN0ci50cmFuc2xhdGUoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnbGVuZ3RoIDEpIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciAnCisgICAgICAgICAgICAgICAgICAgJ05vbmUuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgJworICAgICAgICAgICAgICAgICAgICdlcXVhbCBsZW5ndGgsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggJworICAgICAgICAgICAgICAgICAgICd3aWxsIGJlIG1hcHBlZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGEgdGhpcmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBOb25lIGluIHRoZSByZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucGFydGl0aW9uKHNlcClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsICcKKyAgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdHdvIGVtcHR5IHN0cmluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqb2xkKlxuJworICAgICAgICAgICAgICAgICAgICcgICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZ2l2ZW4sIG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICcqc3ViKiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gJworICAgICAgICAgICAgICAgICAgICcic1tzdGFydDplbmRdIi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyAnCisgICAgICAgICAgICAgICAgICAgJ2luIHNsaWNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgb24gZmFpbHVyZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggJworICAgICAgICAgICAgICAgICAgICcqd2lkdGgqLlxuJworICAgICAgICAgICAgICAgICAgICcgICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYW4gQVNDSUlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgJworICAgICAgICAgICAgICAgICAgICdsZXNzIHRoYW4gb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnBhcnRpdGlvbihzZXApXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIHN0cmluZyBpdHNlbGYuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqICcKKyAgICAgICAgICAgICAgICAgICAnYXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcqbWF4c3BsaXQqIHNwbGl0c1xuJworICAgICAgICAgICAgICAgICAgICcgICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIk5vbmUiLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgJworICAgICAgICAgICAgICAgICAgICdmb3Igc3BsaXR0aW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggJworICAgICAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJzdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIHRvIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICdkZWZhdWx0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgJworICAgICAgICAgICAgICAgICAgICdzdWZmaXg7IHJhdGhlcixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgc3BhY2lvdXMgICAnLnJzdHJpcCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICcgICBzcGFjaW91cydcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdtaXNzaXNzaXBwaScucnN0cmlwKCdpcHonKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnbWlzc2lzcydcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyptYXhzcGxpdCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyJtYXhzcGxpdCsxIlxuJworICAgICAgICAgICAgICAgICAgICcgICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgJworICAgICAgICAgICAgICAgICAgICd0aGVuIHRoZXJlIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIG1hZGUpLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCAnCisgICAgICAgICAgICAgICAgICAgJ2dyb3VwZWQgdG9nZXRoZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnMSwsMlwnLnNwbGl0KFwnLFwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJ1wnLCAnCisgICAgICAgICAgICAgICAgICAgJ1wnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICcgICAiXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJzJcJywgJworICAgICAgICAgICAgICAgICAgICdcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICcKKyAgICAgICAgICAgICAgICAgICAnIltcJ1wnXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLDMnLnNwbGl0KCcsJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLDMnLnNwbGl0KCcsJywgbWF4c3BsaXQ9MSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzIsMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLCwzLCcuc3BsaXQoJywnKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICcnLCAnMycsICcnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyAiTm9uZSIsIGEgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICAnc3BsaXR0aW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgJworICAgICAgICAgICAgICAgICAgICdhcmUgcmVnYXJkZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gJworICAgICAgICAgICAgICAgICAgICdlbXB0eSBzdHJpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciAnCisgICAgICAgICAgICAgICAgICAgJ3RyYWlsaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgJworICAgICAgICAgICAgICAgICAgICdhIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgIk5vbmUiIHNlcGFyYXRvciAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybnMgIltdIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxIDIgMycuc3BsaXQoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICczJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxIDIgMycuc3BsaXQobWF4c3BsaXQ9MSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzIgMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgMSAgIDIgICAzICAgJy5zcGxpdCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJzMnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0ICcKKyAgICAgICAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdyZXN1bHRpbmcgbGlzdFxuJworICAgICAgICAgICAgICAgICAgICcgICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIHNwbGl0cyBvbiB0aGUgZm9sbG93aW5nIGxpbmUgYm91bmRhcmllcy4gICcKKyAgICAgICAgICAgICAgICAgICAnSW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcGFydGljdWxhciwgdGhlIGJvdW5kYXJpZXMgYXJlIGEgc3VwZXJzZXQgb2YgKnVuaXZlcnNhbCAnCisgICAgICAgICAgICAgICAgICAgJ25ld2xpbmVzKi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCBSZXByZXNlbnRhdGlvbiAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcbiIgICAgICAgICAgICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxyIiAgICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSAnCisgICAgICAgICAgICAgICAgICAgJ1JldHVybiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHJcXG4iICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gKyBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHYiIG9yICJcXHgwYiIgICAgICAgICAgfCBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnVGFidWxhdGlvbiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXGYiIG9yICJcXHgwYyIgICAgICAgICAgfCBGb3JtICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHgxYyIgICAgICAgICAgICAgICAgICB8IEZpbGUgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDFkIiAgICAgICAgICAgICAgICAgIHwgR3JvdXAgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4MWUiICAgICAgICAgICAgICAgICAgfCBSZWNvcmQgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHg4NSIgICAgICAgICAgICAgICAgICB8IE5leHQgTGluZSAoQzEgQ29udHJvbCAnCisgICAgICAgICAgICAgICAgICAgJ0NvZGUpICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcdTIwMjgiICAgICAgICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx1MjAyOSIgICAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIlxcdiIgYW5kICJcXGYiIGFkZGVkIHRvIGxpc3QgJworICAgICAgICAgICAgICAgICAgICdvZiBsaW5lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJvdW5kYXJpZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG4nLnNwbGl0bGluZXMoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ2FiIGMnLCAnJywgJ2RlIGZnJywgJ2tsJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdhYiBjXFxuXFxuZGUgIgorICAgICAgICAgICAgICAgICAgICJmZ1xccmtsXFxyXFxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnYWIgY1xcbicsICdcXG4nLCAnZGUgZmdcXHInLCAna2xcXHJcXG4nXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5saWtlICJzcGxpdCgpIiB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2dpdmVuLCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ2EgdGVybWluYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiIi5zcGxpdGxpbmVzKClcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICJPbmUgbGluZVxcbiIuc3BsaXRsaW5lcygpXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnT25lIGxpbmUnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGNvbXBhcmlzb24sICJzcGxpdChcJ1xcblwnKSIgZ2l2ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJycuc3BsaXQoJ1xcbicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdUd28gbGluZXNcXG4nLnNwbGl0KCdcXG4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ1R3byBsaW5lcycsICcnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4KiwgJworICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJGYWxzZSIuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gJworICAgICAgICAgICAgICAgICAgICdsb29rIGZvci5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICcgICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgJworICAgICAgICAgICAgICAgICAgICd0cmFpbGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsICcKKyAgICAgICAgICAgICAgICAgICAndGhlICpjaGFycypcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycyogJworICAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgc3BhY2lvdXMgICAnLnN0cmlwKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ3NwYWNpb3VzJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ3d3dy5leGFtcGxlLmNvbScuc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdleGFtcGxlJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIG91dGVybW9zdCBsZWFkaW5nIGFuZCB0cmFpbGluZyAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpcHBlZCBmcm9tIHRoZSBzdHJpbmcuIENoYXJhY3RlcnMgYXJlIHJlbW92ZWQgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSBsZWFkaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVuZCB1bnRpbCByZWFjaGluZyBhIHN0cmluZyBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICdjb250YWluZWQgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNldCBvZiBjaGFyYWN0ZXJzIGluICpjaGFycyouIEEgc2ltaWxhciBhY3Rpb24gdGFrZXMgJworICAgICAgICAgICAgICAgICAgICdwbGFjZSBvbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdHJhaWxpbmcgZW5kLiBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjb21tZW50X3N0cmluZyA9ICcjLi4uLi4uLiBTZWN0aW9uIDMuMi4xIElzc3VlICIKKyAgICAgICAgICAgICAgICAgICAiIzMyIC4uLi4uLi4nXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjb21tZW50X3N0cmluZy5zdHJpcCgnLiMhICcpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdTZWN0aW9uIDMuMi4xIElzc3VlICMzMidcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zd2FwY2FzZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnZlcnRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICduZWNlc3NhcmlseSB0cnVlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHMiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnRpdGxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzICcKKyAgICAgICAgICAgICAgICAgICAnc3RhcnQgd2l0aCBhblxuJworICAgICAgICAgICAgICAgICAgICcgICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnbG93ZXJjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ0hlbGxvIHdvcmxkJy50aXRsZSgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdIZWxsbyBXb3JsZCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCAnCisgICAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2YgYVxuJworICAgICAgICAgICAgICAgICAgICcgICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gJworICAgICAgICAgICAgICAgICAgICd3b3JrcyBpblxuJworICAgICAgICAgICAgICAgICAgICcgICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluICcKKyAgICAgICAgICAgICAgICAgICAnY29udHJhY3Rpb25zIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSB0aGUgJworICAgICAgICAgICAgICAgICAgICdkZXNpcmVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlc3VsdDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyAnCisgICAgICAgICAgICAgICAgICAgJ3JlZ3VsYXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXhwcmVzc2lvbnM6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gaW1wb3J0IHJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBkZWYgdGl0bGVjYXNlKHMpOlxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86ICcKKyAgICAgICAgICAgICAgICAgICAnbW8uZ3JvdXAoMClbMF0udXBwZXIoKSArXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAnbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBzKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgICJUaGV5XCdyZSBCaWxsXCdzIEZyaWVuZHMuIlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnRyYW5zbGF0ZSh0YWJsZSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBpbiB3aGljaCBlYWNoIGNoYXJhY3RlciBoYXMgJworICAgICAgICAgICAgICAgICAgICdiZWVuIG1hcHBlZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4gIFRoZSB0YWJsZSBtdXN0IGJlICcKKyAgICAgICAgICAgICAgICAgICAnYW4gb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgaW1wbGVtZW50cyBpbmRleGluZyB2aWEgIl9fZ2V0aXRlbV9fKCkiLCB0eXBpY2FsbHkgJworICAgICAgICAgICAgICAgICAgICdhICptYXBwaW5nKlxuJworICAgICAgICAgICAgICAgICAgICcgICBvciAqc2VxdWVuY2UqLiAgV2hlbiBpbmRleGVkIGJ5IGEgVW5pY29kZSBvcmRpbmFsIChhbiAnCisgICAgICAgICAgICAgICAgICAgJ2ludGVnZXIpLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGFibGUgb2JqZWN0IGNhbiBkbyBhbnkgb2YgdGhlIGZvbGxvd2luZzogcmV0dXJuIGEgJworICAgICAgICAgICAgICAgICAgICdVbmljb2RlIG9yZGluYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3IgYSBzdHJpbmcsIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIG9uZSBvciBtb3JlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycztcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuICJOb25lIiwgdG8gZGVsZXRlIHRoZSBjaGFyYWN0ZXIgZnJvbSB0aGUgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5nOyBvclxuJworICAgICAgICAgICAgICAgICAgICcgICByYWlzZSBhICJMb29rdXBFcnJvciIgZXhjZXB0aW9uLCB0byBtYXAgdGhlIGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAgJ3RvIGl0c2VsZi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFlvdSBjYW4gdXNlICJzdHIubWFrZXRyYW5zKCkiIHRvIGNyZWF0ZSBhIHRyYW5zbGF0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnbWFwIGZyb21cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNlZSBhbHNvIHRoZSAiY29kZWNzIiBtb2R1bGUgZm9yIGEgbW9yZSBmbGV4aWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvIGN1c3RvbVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXIgbWFwcGluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIudXBwZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgWzRdXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgJworICAgICAgICAgICAgICAgICAgICcic3RyLnVwcGVyKCkuaXN1cHBlcigpIiBtaWdodCBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICAiRmFsc2UiIGlmICJzIiBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAnCisgICAgICAgICAgICAgICAgICAgJyhMZXR0ZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJzMuMTMgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuemZpbGwod2lkdGgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCBBU0NJSSAnCisgICAgICAgICAgICAgICAgICAgJyJcJzBcJyIgZGlnaXRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ha2UgYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIEEgbGVhZGluZyBzaWduIHByZWZpeFxuJworICAgICAgICAgICAgICAgICAgICcgICAoIlwnK1wnIi8iXCctXCciKSBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAnCisgICAgICAgICAgICAgICAgICAgJyphZnRlciogdGhlIHNpZ25cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIHJhdGhlciB0aGFuIGJlZm9yZS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybmVkIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIjQyIi56ZmlsbCg1KVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICAnMDAwNDInXG4iCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICAnLTAwNDInXG4iLAorICdzdHJpbmdzJzogJ1xuJworICAgICAgICAgICAgJ1N0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcgICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbicKKyAgICAgICAgICAgICcgICBzdHJpbmdwcmVmaXggICAgOjo9ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIiB8ICJmIiB8ICJGIlxuJworICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgfCAiZnIiIHwgIkZyIiB8ICJmUiIgfCAiRlIiIHwgInJmIiB8ICJyRiIgfCAnCisgICAgICAgICAgICAnIlJmIiB8ICJSRiJcbicKKyAgICAgICAgICAgICcgICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgJworICAgICAgICAgICAgJ3Nob3J0c3RyaW5naXRlbSogXCciXCdcbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8ICcKKyAgICAgICAgICAgICdcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmdpdGVtIDo6PSBzaG9ydHN0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgJworICAgICAgICAgICAgJ25ld2xpbmUgb3IgdGhlIHF1b3RlPlxuJworICAgICAgICAgICAgJyAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuJworICAgICAgICAgICAgJyAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4nCisgICAgICAgICAgICAnICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAnCisgICAgICAgICAgICAnInJiIiB8ICJyQiIgfCAiUmIiIHwgIlJCIlxuJworICAgICAgICAgICAgJyAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgJworICAgICAgICAgICAgJ3Nob3J0Ynl0ZXNpdGVtKiBcJyJcJ1xuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlcyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nYnl0ZXNpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgJworICAgICAgICAgICAgJ2xvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzaXRlbSA6Oj0gc2hvcnRieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlc2l0ZW0gIDo6PSBsb25nYnl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSAnCisgICAgICAgICAgICAnb3IgdGhlIHF1b3RlPlxuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlc2NoYXIgIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbicKKyAgICAgICAgICAgICcgICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdPbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgJworICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICd3aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIG9yICcKKyAgICAgICAgICAgICciYnl0ZXNwcmVmaXgiXG4nCisgICAgICAgICAgICAnYW5kIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLiBUaGUgc291cmNlIGNoYXJhY3RlciBzZXQgaXMgZGVmaW5lZCAnCisgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICd0aGUgZW5jb2RpbmcgZGVjbGFyYXRpb247IGl0IGlzIFVURi04IGlmIG5vIGVuY29kaW5nIGRlY2xhcmF0aW9uICcKKyAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgJ2dpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gRW5jb2RpbmcgZGVjbGFyYXRpb25zLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0luIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluICcKKyAgICAgICAgICAgICdtYXRjaGluZ1xuJworICAgICAgICAgICAgJ3NpbmdsZSBxdW90ZXMgKCJcJyIpIG9yIGRvdWJsZSBxdW90ZXMgKCIiIikuICBUaGV5IGNhbiBhbHNvIGJlICcKKyAgICAgICAgICAgICdlbmNsb3NlZFxuJworICAgICAgICAgICAgJ2luIG1hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2UgYXJlXG4nCisgICAgICAgICAgICAnZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSAnCisgICAgICAgICAgICAnYmFja3NsYXNoXG4nCisgICAgICAgICAgICAnKCJcXCIpIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgJworICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICdzcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG4nCisgICAgICAgICAgICAnY2hhcmFjdGVyLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0J5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAiXCdiXCciIG9yICJcJ0JcJyI7IHRoZXkgJworICAgICAgICAgICAgJ3Byb2R1Y2VcbicKKyAgICAgICAgICAgICdhbiBpbnN0YW5jZSBvZiB0aGUgImJ5dGVzIiB0eXBlIGluc3RlYWQgb2YgdGhlICJzdHIiIHR5cGUuICBUaGV5ICcKKyAgICAgICAgICAgICdtYXlcbicKKyAgICAgICAgICAgICdvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2YgMTI4ICcKKyAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgJ2dyZWF0ZXIgbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0FzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHN0cmluZyBsaXRlcmFscyAnCisgICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICAnInUiIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54ICcKKyAgICAgICAgICAgICdjb2RlYmFzZXMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxuJworICAgICAgICAgICAgJ2xldHRlciAiXCdyXCciIG9yICJcJ1JcJyI7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogJworICAgICAgICAgICAgJ2FuZCB0cmVhdFxuJworICAgICAgICAgICAgJ2JhY2tzbGFzaGVzIGFzIGxpdGVyYWwgY2hhcmFjdGVycy4gIEFzIGEgcmVzdWx0LCBpbiBzdHJpbmcgJworICAgICAgICAgICAgJ2xpdGVyYWxzLFxuJworICAgICAgICAgICAgJyJcJ1xcVVwnIiBhbmQgIlwnXFx1XCciIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkICcKKyAgICAgICAgICAgICdzcGVjaWFsbHkuXG4nCisgICAgICAgICAgICAiR2l2ZW4gdGhhdCBQeXRob24gMi54J3MgcmF3IHVuaWNvZGUgbGl0ZXJhbHMgYmVoYXZlIGRpZmZlcmVudGx5ICIKKyAgICAgICAgICAgICd0aGFuXG4nCisgICAgICAgICAgICAnUHl0aG9uIDMueFwncyB0aGUgIlwndXJcJyIgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgIlwncmJcJyIgcHJlZml4IG9mIHJhdyBieXRlcyBsaXRlcmFscyBoYXMgJworICAgICAgICAgICAgJ2JlZW5cbicKKyAgICAgICAgICAgICdhZGRlZCBhcyBhIHN5bm9ueW0gb2YgIlwnYnJcJyIuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuJworICAgICAgICAgICAgJygidVwndmFsdWVcJyIpIHdhcyByZWludHJvZHVjZWQgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mICcKKyAgICAgICAgICAgICdkdWFsXG4nCisgICAgICAgICAgICAnUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4gU2VlICoqUEVQIDQxNCoqIGZvciBtb3JlICcKKyAgICAgICAgICAgICdpbmZvcm1hdGlvbi5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdBIHN0cmluZyBsaXRlcmFsIHdpdGggIlwnZlwnIiBvciAiXCdGXCciIGluIGl0cyBwcmVmaXggaXMgYSAnCisgICAgICAgICAgICAnKmZvcm1hdHRlZFxuJworICAgICAgICAgICAgJ3N0cmluZyBsaXRlcmFsKjsgc2VlIEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMuICBUaGUgIlwnZlwnIiBtYXkgJworICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAnY29tYmluZWQgd2l0aCAiXCdyXCciLCBidXQgbm90IHdpdGggIlwnYlwnIiBvciAiXCd1XCciLCB0aGVyZWZvcmUgJworICAgICAgICAgICAgJ3Jhd1xuJworICAgICAgICAgICAgJ2Zvcm1hdHRlZCBzdHJpbmdzIGFyZSBwb3NzaWJsZSwgYnV0IGZvcm1hdHRlZCBieXRlcyBsaXRlcmFscyBhcmUgJworICAgICAgICAgICAgJ25vdC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdJbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgJworICAgICAgICAgICAgJ2FsbG93ZWRcbicKKyAgICAgICAgICAgICcoYW5kIGFyZSByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3dcbicKKyAgICAgICAgICAgICd0ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICdsaXRlcmFsLCBpLmUuIGVpdGhlciAiXCciIG9yICIiIi4pXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVW5sZXNzIGFuICJcJ3JcJyIgb3IgIlwnUlwnIiBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyAnCisgICAgICAgICAgICAnaW4gc3RyaW5nXG4nCisgICAgICAgICAgICAnYW5kIGJ5dGVzIGxpdGVyYWxzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byAnCisgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICd1c2VkIGJ5IFN0YW5kYXJkIEMuICBUaGUgcmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZTpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG4nCisgICAgICAgICAgICAnfCAiXFxuZXdsaW5lIiAgICAgICAgfCBCYWNrc2xhc2ggYW5kIG5ld2xpbmUgaWdub3JlZCAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcXFwiICAgICAgICAgICAgICB8IEJhY2tzbGFzaCAoIlxcIikgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcXCciICAgICAgICAgICAgICB8IFNpbmdsZSBxdW90ZSAoIlwnIikgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcIiIgICAgICAgICAgICAgIHwgRG91YmxlIHF1b3RlICgiIiIpICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXGEiICAgICAgICAgICAgICB8IEFTQ0lJIEJlbGwgKEJFTCkgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxiIiAgICAgICAgICAgICAgfCBBU0NJSSBCYWNrc3BhY2UgKEJTKSAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcZiIgICAgICAgICAgICAgIHwgQVNDSUkgRm9ybWZlZWQgKEZGKSAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXG4iICAgICAgICAgICAgICB8IEFTQ0lJIExpbmVmZWVkIChMRikgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxyIiAgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcdCIgICAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHYiICAgICAgICAgICAgICB8IEFTQ0lJIFZlcnRpY2FsIFRhYiAoVlQpICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxvb28iICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSAqb29vKiAgfCAnCisgICAgICAgICAgICAnKDEsMykgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxceGhoIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggaGV4IHZhbHVlICpoaCogICAgIHwgJworICAgICAgICAgICAgJygyLDMpICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdFc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbicKKyAgICAgICAgICAgICd8ICJcXE57bmFtZX0iICAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICcKKyAgICAgICAgICAgICcoNCkgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgVW5pY29kZSBkYXRhYmFzZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHV4eHh4IiAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICcKKyAgICAgICAgICAgICcoNSkgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFV4eHh4eHh4eCIgICAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICcKKyAgICAgICAgICAgICcoNikgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcxLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzIuIFVubGlrZSBpbiBTdGFuZGFyZCBDLCBleGFjdGx5IHR3byBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICczLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGVcbicKKyAgICAgICAgICAgICcgICBieXRlIHdpdGggdGhlIGdpdmVuIHZhbHVlLiBJbiBhIHN0cmluZyBsaXRlcmFsLCB0aGVzZSBlc2NhcGVzXG4nCisgICAgICAgICAgICAnICAgZGVub3RlIGEgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnNC4gQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIFsxXSBoYXMgYmVlblxuJworICAgICAgICAgICAgJyAgIGFkZGVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzUuIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICc2LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXkuICBFeGFjdGx5IGVpZ2h0XG4nCisgICAgICAgICAgICAnICAgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVW5saWtlIFN0YW5kYXJkIEMsIGFsbCB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbGVmdCBpbiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgcmVzdWx0Ki4gICcKKyAgICAgICAgICAgICcoVGhpc1xuJworICAgICAgICAgICAgJ2JlaGF2aW9yIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZzogaWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzICcKKyAgICAgICAgICAgICdtaXN0eXBlZCxcbicKKyAgICAgICAgICAgICd0aGUgcmVzdWx0aW5nIG91dHB1dCBpcyBtb3JlIGVhc2lseSByZWNvZ25pemVkIGFzIGJyb2tlbi4pICBJdCBpcyAnCisgICAgICAgICAgICAnYWxzb1xuJworICAgICAgICAgICAgJ2ltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluICcKKyAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICdsaXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciAnCisgICAgICAgICAgICAnYnl0ZXNcbicKKyAgICAgICAgICAgICdsaXRlcmFscy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBVbnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBwcm9kdWNlICcKKyAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAnICAgRGVwcmVjYXRpb25XYXJuaW5nLiAgSW4gc29tZSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24gdGhleSAnCisgICAgICAgICAgICAnd2lsbCBiZVxuJworICAgICAgICAgICAgJyAgIGEgU3ludGF4RXJyb3IuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRXZlbiBpbiBhIHJhdyBsaXRlcmFsLCBxdW90ZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaCwgJworICAgICAgICAgICAgJ2J1dCB0aGVcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSAnCisgICAgICAgICAgICAndmFsaWRcbicKKyAgICAgICAgICAgICdzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYSAnCisgICAgICAgICAgICAnZG91YmxlXG4nCisgICAgICAgICAgICAncXVvdGU7ICJyIlxcIiIgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXcgc3RyaW5nICcKKyAgICAgICAgICAgICdjYW5ub3RcbicKKyAgICAgICAgICAgICdlbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyAnCisgICAgICAgICAgICAnbGl0ZXJhbFxuJworICAgICAgICAgICAgJ2Nhbm5vdCBlbmQgaW4gYSBzaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaCB3b3VsZCAnCisgICAgICAgICAgICAnZXNjYXBlXG4nCisgICAgICAgICAgICAndGhlIGZvbGxvd2luZyBxdW90ZSBjaGFyYWN0ZXIpLiAgTm90ZSBhbHNvIHRoYXQgYSBzaW5nbGUgJworICAgICAgICAgICAgJ2JhY2tzbGFzaFxuJworICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVycyBhcyAnCisgICAgICAgICAgICAncGFydFxuJworICAgICAgICAgICAgJ29mIHRoZSBsaXRlcmFsLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKKyAnc3Vic2NyaXB0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdTdWJzY3JpcHRpb25zXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Egc3Vic2NyaXB0aW9uIHNlbGVjdHMgYW4gaXRlbSBvZiBhIHNlcXVlbmNlIChzdHJpbmcsIHR1cGxlICcKKyAgICAgICAgICAgICAgICAgICdvciBsaXN0KVxuJworICAgICAgICAgICAgICAgICAgJ29yIG1hcHBpbmcgKGRpY3Rpb25hcnkpIG9iamVjdDpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzICcKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb25cbicKKyAgICAgICAgICAgICAgICAgICcobGlzdHMgb3IgZGljdGlvbmFyaWVzIGZvciBleGFtcGxlKS4gIFVzZXItZGVmaW5lZCBvYmplY3RzICcKKyAgICAgICAgICAgICAgICAgICdjYW4gc3VwcG9ydFxuJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9yIGJ1aWx0LWluIG9iamVjdHMsIHRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygb2JqZWN0cyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdzdXBwb3J0XG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0ZSB0byBhblxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdCB3aG9zZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIHZhbHVlIGluIHRoZSBtYXBwaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRzIHRvIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICdrZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgJworICAgICAgICAgICAgICAgICAgJ2V4YWN0bHkgb25lXG4nCisgICAgICAgICAgICAgICAgICAnaXRlbS4pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSWYgdGhlIHByaW1hcnkgaXMgYSBzZXF1ZW5jZSwgdGhlIGV4cHJlc3Npb24gKGxpc3QpIG11c3QgJworICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIHRvXG4nCisgICAgICAgICAgICAgICAgICAnYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgICAnc2VjdGlvbikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICdpbmRpY2VzIGluXG4nCisgICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzOyBob3dldmVyLCBidWlsdC1pbiBzZXF1ZW5jZXMgYWxsIHByb3ZpZGUgYSAnCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnbWV0aG9kIHRoYXQgaW50ZXJwcmV0cyBuZWdhdGl2ZSBpbmRpY2VzIGJ5IGFkZGluZyB0aGUgJworICAgICAgICAgICAgICAgICAgJ2xlbmd0aCBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgInhbLTFdIiBzZWxlY3RzIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAgICAgICdpdGVtIG9mICJ4IikuXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciBsZXNzIHRoYW4gJworICAgICAgICAgICAgICAgICAgJ3RoZSBudW1iZXJcbicKKyAgICAgICAgICAgICAgICAgICdvZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpdGVtIHdob3NlXG4nCisgICAgICAgICAgICAgICAgICAnaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnQgJworICAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGluZGljZXMgYW5kIHNsaWNpbmcgb2NjdXJzIGluIHRoZSBvYmplY3QncyAiCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnbWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvICcKKyAgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGFkZFxuJworICAgICAgICAgICAgICAgICAgJ3RoYXQgc3VwcG9ydC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBIHN0cmluZydzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgIgorICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgICd0eXBlIGJ1dCBhIHN0cmluZyBvZiBleGFjdGx5IG9uZSBjaGFyYWN0ZXIuXG4nLAorICd0cnV0aCc6ICdcbicKKyAgICAgICAgICAnVHJ1dGggVmFsdWUgVGVzdGluZ1xuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbicKKyAgICAgICAgICAnIndoaWxlIiBjb25kaXRpb24gb3IgYXMgb3BlcmFuZCBvZiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zIGJlbG93LiAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICdmb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiAiTm9uZSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogIkZhbHNlIlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwLjAiLCAiMGoiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiBhbnkgZW1wdHkgc2VxdWVuY2UsIGZvciBleGFtcGxlLCAiXCdcJyIsICIoKSIsICJbXSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIGFueSBlbXB0eSBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgInt9Ii5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4nCisgICAgICAgICAgJyAgIl9fYm9vbF9fKCkiIG9yICJfX2xlbl9fKCkiIG1ldGhvZCwgd2hlbiB0aGF0IG1ldGhvZCByZXR1cm5zIHRoZVxuJworICAgICAgICAgICcgIGludGVnZXIgemVybyBvciAiYm9vbCIgdmFsdWUgIkZhbHNlIi4gWzFdXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbGwgb3RoZXIgdmFsdWVzIGFyZSBjb25zaWRlcmVkIHRydWUgLS0tIHNvIG9iamVjdHMgb2YgbWFueSB0eXBlcyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdhbHdheXMgdHJ1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ09wZXJhdGlvbnMgYW5kIGJ1aWx0LWluIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYSBCb29sZWFuIHJlc3VsdCAnCisgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICdyZXR1cm4gIjAiIG9yICJGYWxzZSIgZm9yIGZhbHNlIGFuZCAiMSIgb3IgIlRydWUiIGZvciB0cnVlLCB1bmxlc3NcbicKKyAgICAgICAgICAnb3RoZXJ3aXNlIHN0YXRlZC4gKEltcG9ydGFudCBleGNlcHRpb246IHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgJworICAgICAgICAgICcib3IiXG4nCisgICAgICAgICAgJ2FuZCAiYW5kIiBhbHdheXMgcmV0dXJuIG9uZSBvZiB0aGVpciBvcGVyYW5kcy4pXG4nLAorICd0cnknOiAnXG4nCisgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAidHJ5IiBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG4nCisgICAgICAgICdmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuJworICAgICAgICAnICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIGlkZW50aWZpZXJdXSAiOiIgJworICAgICAgICAnc3VpdGUpK1xuJworICAgICAgICAnICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4nCisgICAgICAgICcgICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAnICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW4gJworICAgICAgICAnbm9cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbicKKyAgICAgICAgJ2V4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCBmb3IgJworICAgICAgICAnYW5cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0ICcKKyAgICAgICAgJ2NsYXVzZXNcbicKKyAgICAgICAgJ2luIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW4gJworICAgICAgICAnZXhwcmVzc2lvbi1cbicKKyAgICAgICAgJ2xlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuJworICAgICAgICAnZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0IGV4cHJlc3Npb25cbicKKyAgICAgICAgJ2lzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmdcbicKKyAgICAgICAgJ29iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzIGNvbXBhdGlibGVcbicKKyAgICAgICAgJ3dpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlICcKKyAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAnb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgZXhjZXB0aW9uLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdJZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gJworICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICdoYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gJworICAgICAgICAnc3RhY2suXG4nCisgICAgICAgICdbMV1cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbicKKyAgICAgICAgJ3JhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCAnCisgICAgICAgICdhbmRcbicKKyAgICAgICAgJ2Egc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG4nCisgICAgICAgICd0aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCAnCisgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgJ3RoZSBleGNlcHRpb24pLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdXaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xuJworICAgICAgICAndGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsICcKKyAgICAgICAgJ2lmXG4nCisgICAgICAgICJwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2UncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbiIKKyAgICAgICAgJ2NsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayAnCisgICAgICAgICdpc1xuJworICAgICAgICAncmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSAnCisgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICcoVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lICcKKyAgICAgICAgJ2V4Y2VwdGlvbixcbicKKyAgICAgICAgJ2FuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG4nCisgICAgICAgICdvdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbicKKyAgICAgICAgJ2F0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICcgICAgICAgZm9vXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ3dhcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICcgICAgICAgdHJ5OlxuJworICAgICAgICAnICAgICAgICAgICBmb29cbicKKyAgICAgICAgJyAgICAgICBmaW5hbGx5OlxuJworICAgICAgICAnICAgICAgICAgICBkZWwgTlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG4nCisgICAgICAgICdhYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuJworICAgICAgICAnYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG4nCisgICAgICAgICdjeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbicKKyAgICAgICAgJ3VudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgIkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG4iCisgICAgICAgICdleGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4nCisgICAgICAgICcic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgJworICAgICAgICAndGhlXG4nCisgICAgICAgICdleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG4nCisgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSkgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxuJworICAgICAgICAncHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG4nCisgICAgICAgICdyZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbicKKyAgICAgICAgJ2Zyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxuJworICAgICAgICAndGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbicKKyAgICAgICAgJ25vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgJworICAgICAgICAnInRyeSJcbicKKyAgICAgICAgJ2NsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiAnCisgICAgICAgICdhblxuJworICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICAnCisgICAgICAgICdJZlxuJworICAgICAgICAndGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICcKKyAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAnY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAnCisgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgJ2NsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG4nCisgICAgICAgICdpcyBkaXNjYXJkZWQ6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgID4+PiBkZWYgZigpOlxuJworICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICcgICAuLi4gICAgICAgICAxLzBcbicKKyAgICAgICAgJyAgIC4uLiAgICAgZmluYWxseTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuJworICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICcgICA+Pj4gZigpXG4nCisgICAgICAgICcgICA0MlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG4nCisgICAgICAgICdleGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1doZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbicKKyAgICAgICAgJyJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSAnCisgICAgICAgICdpc1xuJworICAgICAgICAnYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCAnCisgICAgICAgICdpblxuJworICAgICAgICAndGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG4nCisgICAgICAgICdpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuJworICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4nCisgICAgICAgICcicmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgJworICAgICAgICAndGhlXG4nCisgICAgICAgICdsYXN0IG9uZSBleGVjdXRlZDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgPj4+IGRlZiBmb28oKTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICd0cnknXG4iCisgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ2ZpbmFsbHknXG4iCisgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgJyAgID4+PiBmb28oKVxuJworICAgICAgICAiICAgJ2ZpbmFsbHknXG4iCisgICAgICAgICdcbicKKyAgICAgICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuJworICAgICAgICAnRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0byAnCisgICAgICAgICdnZW5lcmF0ZVxuJworICAgICAgICAnZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiBUaGUgcmFpc2Ugc3RhdGVtZW50LlxuJywKKyAndHlwZXMnOiAnXG4nCisgICAgICAgICAgJ1RoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0JlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICAnCisgICAgICAgICAgJ0V4dGVuc2lvblxuJworICAgICAgICAgICdtb2R1bGVzICh3cml0dGVuIGluIEMsIEphdmEsIG9yIG90aGVyIGxhbmd1YWdlcywgZGVwZW5kaW5nIG9uIHRoZVxuJworICAgICAgICAgICdpbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG4nCisgICAgICAgICAgJ1B5dGhvbiBtYXkgYWRkIHR5cGVzIHRvIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiwgcmF0aW9uYWwgJworICAgICAgICAgICdudW1iZXJzLFxuJworICAgICAgICAgICdlZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCAnCisgICAgICAgICAgJ2FkZGl0aW9uc1xuJworICAgICAgICAgICd3aWxsIG9mdGVuIGJlIHByb3ZpZGVkIHZpYSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU29tZSBvZiB0aGUgdHlwZSBkZXNjcmlwdGlvbnMgYmVsb3cgY29udGFpbiBhIHBhcmFncmFwaCBsaXN0aW5nXG4nCisgICAgICAgICAgIidzcGVjaWFsIGF0dHJpYnV0ZXMuJyAgVGhlc2UgYXJlIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGFjY2VzcyB0byAiCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciAnCisgICAgICAgICAgJ2RlZmluaXRpb25cbicKKyAgICAgICAgICAnbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTm9uZVxuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lICJOb25lIi4gJworICAgICAgICAgICdJdFxuJworICAgICAgICAgICcgICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsICcKKyAgICAgICAgICAnZS5nLixcbicKKyAgICAgICAgICAiICAgaXQgaXMgcmV0dXJuZWQgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb24ndCBleHBsaWNpdGx5IHJldHVyblxuIgorICAgICAgICAgICcgICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTm90SW1wbGVtZW50ZWRcbicKKyAgICAgICAgICAnICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuJworICAgICAgICAgICcgICAiTm90SW1wbGVtZW50ZWQiLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzXG4nCisgICAgICAgICAgJyAgIHNob3VsZCByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICB0aGUgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlXG4nCisgICAgICAgICAgJyAgIHJlZmxlY3RlZCBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGVcbicKKyAgICAgICAgICAnICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZWUgSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMgZm9yIG1vcmUgZGV0YWlscy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0VsbGlwc2lzXG4nCisgICAgICAgICAgJyAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4nCisgICAgICAgICAgJyAgIGJ1aWx0LWluIG5hbWUgIkVsbGlwc2lzIi4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnIm51bWJlcnMuTnVtYmVyIlxuJworICAgICAgICAgICcgICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgJworICAgICAgICAgICdOdW1lcmljXG4nCisgICAgICAgICAgJyAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4nCisgICAgICAgICAgJyAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbicKKyAgICAgICAgICAnICAgbnVtYmVycywgYnV0IHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIG51bWVyaWNhbCAnCisgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uXG4nCisgICAgICAgICAgJyAgIGluIGNvbXB1dGVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgIGNvbXBsZXggbnVtYmVyczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICJudW1iZXJzLkludGVncmFsIlxuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgZWxlbWVudHMgZnJvbSB0aGUgbWF0aGVtYXRpY2FsIHNldCBvZiAnCisgICAgICAgICAgJ2ludGVnZXJzXG4nCisgICAgICAgICAgJyAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbnRlZ2VyczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEludGVnZXJzICgiaW50IilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuJworICAgICAgICAgICcgICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mICcKKyAgICAgICAgICAnc2hpZnRcbicKKyAgICAgICAgICAnICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAiICAgICAgICAgbmVnYXRpdmUgbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgaW4gYSB2YXJpYW50IG9mIDInc1xuIgorICAgICAgICAgICcgICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQm9vbGVhbnMgKCJib29sIilcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4nCisgICAgICAgICAgJyAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciB0eXBlLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAwICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgIDEsIHJlc3BlY3RpdmVseSwgaW4gYWxtb3N0IGFsbCBjb250ZXh0cywgdGhlIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgJyAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuJworICAgICAgICAgICcgICAgICAgICAiIlRydWUiIiBhcmUgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuJworICAgICAgICAgICcgICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5SZWFsIiAoImZsb2F0IilcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyAnCisgICAgICAgICAgJ3BvaW50XG4nCisgICAgICAgICAgJyAgICAgIG51bWJlcnMuIFlvdSBhcmUgYXQgdGhlIG1lcmN5IG9mIHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVcbicKKyAgICAgICAgICAnICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4nCisgICAgICAgICAgJyAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgJworICAgICAgICAgICdzaW5nbGUtXG4nCisgICAgICAgICAgJyAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgbWVtb3J5IHVzYWdlIHRoYXQgYXJlIHVzdWFsbHkgdGhlIHJlYXNvbiBmb3IgdXNpbmcgdGhlc2UgYXJlXG4nCisgICAgICAgICAgJyAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiAnCisgICAgICAgICAgJ2Zsb2F0aW5nXG4nCisgICAgICAgICAgJyAgICAgIHBvaW50IG51bWJlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4nCisgICAgICAgICAgJyAgICAgIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gIFRoZSBzYW1lIGNhdmVhdHMgJworICAgICAgICAgICdhcHBseVxuJworICAgICAgICAgICcgICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyAnCisgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAnICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgInoucmVhbCIgYW5kICJ6LmltYWciLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4nCisgICAgICAgICAgJyAgIG51bWJlcnMuIFRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiIHJldHVybnMgdGhlIG51bWJlciBvZiAnCisgICAgICAgICAgJ2l0ZW1zXG4nCisgICAgICAgICAgJyAgIG9mIGEgc2VxdWVuY2UuIFdoZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlIGlzICpuKiwgdGhlIGluZGV4ICcKKyAgICAgICAgICAnc2V0XG4nCisgICAgICAgICAgJyAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICBzZWxlY3RlZCBieSAiYVtpXSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZXF1ZW5jZXMgYWxzbyBzdXBwb3J0IHNsaWNpbmc6ICJhW2k6al0iIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbicKKyAgICAgICAgICAnICAgaW5kZXggKmsqIHN1Y2ggdGhhdCAqaSogIjw9IiAqayogIjwiICpqKi4gIFdoZW4gdXNlZCBhcyBhblxuJworICAgICAgICAgICcgICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgJworICAgICAgICAgICdpbXBsaWVzXG4nCisgICAgICAgICAgJyAgIHRoYXQgdGhlIGluZGV4IHNldCBpcyByZW51bWJlcmVkIHNvIHRoYXQgaXQgc3RhcnRzIGF0IDAuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTb21lIHNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgImV4dGVuZGVkIHNsaWNpbmciIHdpdGggYSB0aGlyZCAnCisgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICcgICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqICcKKyAgICAgICAgICAnd2hlcmVcbicKKyAgICAgICAgICAnICAgInggPSBpICsgbiprIiwgKm4qICI+PSIgIjAiIGFuZCAqaSogIjw9IiAqeCogIjwiICpqKi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbicKKyAgICAgICAgICAnICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyICcKKyAgICAgICAgICAnb2JqZWN0cyxcbicKKyAgICAgICAgICAnICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7ICcKKyAgICAgICAgICAnaG93ZXZlcixcbicKKyAgICAgICAgICAnICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTdHJpbmdzXG4nCisgICAgICAgICAgJyAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGUgJworICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgJyAgICAgICAgIHBvaW50cy4gQWxsIHRoZSBjb2RlIHBvaW50cyBpbiB0aGUgcmFuZ2UgIlUrMDAwMCAtICcKKyAgICAgICAgICAnVSsxMEZGRkYiXG4nCisgICAgICAgICAgIiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2Vzbid0IGhhdmUgYSAiCisgICAgICAgICAgJyJjaGFyIlxuJworICAgICAgICAgICcgICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgJworICAgICAgICAgICdyZXByZXNlbnRlZFxuJworICAgICAgICAgICcgICAgICAgICBhcyBhIHN0cmluZyBvYmplY3Qgd2l0aCBsZW5ndGggIjEiLiAgVGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgICAgIm9yZCgpIiBjb252ZXJ0cyBhIGNvZGUgcG9pbnQgZnJvbSBpdHMgc3RyaW5nIGZvcm0gdG8gYW5cbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiOyAiY2hyKCkiIGNvbnZlcnRzIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgJ2xlbmd0aFxuJworICAgICAgICAgICcgICAgICAgICAiMSIgc3RyaW5nIG9iamVjdC4gInN0ci5lbmNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gY29udmVydCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnICAgICAgICAgInN0ciIgdG8gImJ5dGVzIiB1c2luZyB0aGUgZ2l2ZW4gdGV4dCBlbmNvZGluZywgYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgICJieXRlcy5kZWNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgb3Bwb3NpdGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUdXBsZXNcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbicKKyAgICAgICAgICAiICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhICdzaW5nbGV0b24nKSBjYW4gYmVcbiIKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuJworICAgICAgICAgICcgICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQnl0ZXNcbicKKyAgICAgICAgICAnICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSAnCisgICAgICAgICAgJzgtYml0XG4nCisgICAgICAgICAgJyAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuJworICAgICAgICAgICcgICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSAiYlwnYWJjXCciKSBhbmQgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbicKKyAgICAgICAgICAnICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgJworICAgICAgICAgICciZGVjb2RlKCkiXG4nCisgICAgICAgICAgJyAgICAgICAgIG1ldGhvZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIE11dGFibGUgc2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICcgICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBhc3NpZ25tZW50IGFuZCAiZGVsIiAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBMaXN0c1xuJworICAgICAgICAgICcgICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzICcKKyAgICAgICAgICAnbmVlZGVkXG4nCisgICAgICAgICAgJyAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBCeXRlIEFycmF5c1xuJworICAgICAgICAgICcgICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIGJ1aWx0LWluICJieXRlYXJyYXkoKSIgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4nCisgICAgICAgICAgJyAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlICcKKyAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIG9iamVjdHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSAiYXJyYXkiIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSAnCisgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAnICAgICAgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NldCB0eXBlc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuJworICAgICAgICAgICcgICBvYmplY3RzLiBBcyBzdWNoLCB0aGV5IGNhbm5vdCBiZSBpbmRleGVkIGJ5IGFueSBzdWJzY3JpcHQuICcKKyAgICAgICAgICAnSG93ZXZlcixcbicKKyAgICAgICAgICAnICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiXG4nCisgICAgICAgICAgJyAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlICcKKyAgICAgICAgICAnZmFzdFxuJworICAgICAgICAgICcgICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbicKKyAgICAgICAgICAnICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbixcbicKKyAgICAgICAgICAnICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRm9yIHNldCBlbGVtZW50cywgdGhlIHNhbWUgaW1tdXRhYmlsaXR5IHJ1bGVzIGFwcGx5IGFzIGZvclxuJworICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmRcbicKKyAgICAgICAgICAnICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgc2V0IHR5cGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2V0c1xuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgYSBtdXRhYmxlIHNldC4gVGhleSBhcmUgY3JlYXRlZCBieSB0aGUgJworICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICcgICAgICAic2V0KCkiIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSAnCisgICAgICAgICAgJ3NldmVyYWxcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRnJvemVuIHNldHNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuJworICAgICAgICAgICcgICAgICBidWlsdC1pbiAiZnJvemVuc2V0KCkiIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXMgJworICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgJworICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgJyAgICAgIHNldCwgb3IgYXMgYSBkaWN0aW9uYXJ5IGtleS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgYXJiaXRyYXJ5ICcKKyAgICAgICAgICAnaW5kZXhcbicKKyAgICAgICAgICAnICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiAiYVtrXSIgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5ICcKKyAgICAgICAgICAnImsiXG4nCisgICAgICAgICAgJyAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICB0YXJnZXQgb2YgYXNzaWdubWVudHMgb3IgImRlbCIgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBtYXBwaW5nLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBEaWN0aW9uYXJpZXNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbicKKyAgICAgICAgICAnICAgICAgYXJiaXRyYXJ5IHZhbHVlcy4gIFRoZSBvbmx5IHR5cGVzIG9mIHZhbHVlcyBub3QgYWNjZXB0YWJsZSAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJyAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuJworICAgICAgICAgICcgICAgICBtdXRhYmxlIHR5cGVzIHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5ICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgIiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleSdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuIgorICAgICAgICAgICcgICAgICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvciAnCisgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAnICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAnCisgICAgICAgICAgJyIxLjAiKVxuJworICAgICAgICAgICcgICAgICB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4nCisgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlICJ7Li4ufSJcbicKKyAgICAgICAgICAnICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uIERpY3Rpb25hcnkgZGlzcGxheXMpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGVzICJkYm0ubmRibSIgYW5kICJkYm0uZ251IiBwcm92aWRlXG4nCisgICAgICAgICAgJyAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGUgJworICAgICAgICAgICciY29sbGVjdGlvbnMiXG4nCisgICAgICAgICAgJyAgICAgIG1vZHVsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NhbGxhYmxlIHR5cGVzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgdHlwZXMgdG8gd2hpY2ggdGhlIGZ1bmN0aW9uIGNhbGwgb3BlcmF0aW9uIChzZWVcbicKKyAgICAgICAgICAnICAgc2VjdGlvbiBDYWxscykgY2FuIGJlIGFwcGxpZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGEgZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gRnVuY3Rpb24gZGVmaW5pdGlvbnMpLiAgSXQgc2hvdWxkIGJlXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgJworICAgICAgICAgICdpdGVtc1xuJworICAgICAgICAgICIgICAgICBhcyB0aGUgZnVuY3Rpb24ncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG4iCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIGF0dHJpYnV0ZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuJworICAgICAgICAgICcgICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgJworICAgICAgICAgICdkb2N1bWVudGF0aW9uICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yICJOb25lIiBpZiAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuYXZhaWxhYmxlOyBub3QgaW5oZXJpdGVkIGJ5ICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbmFtZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAnCisgICAgICAgICAgJ25hbWUgICAgICAgICAgICAgfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19xdWFsbmFtZV9fIiAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICpxdWFsaWZpZWQgJworICAgICAgICAgICduYW1lKiB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV3IGluIHZlcnNpb24gMy4zLiAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbW9kdWxlX18iICAgICAgICAgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kZWZhdWx0c19fIiAgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyB0aGF0IGhhdmUgZGVmYXVsdHMsICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgIk5vbmUiIGlmIG5vIGFyZ3VtZW50cyBoYXZlICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jb2RlX18iICAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19nbG9iYWxzX18iICAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICAnCisgICAgICAgICAgJ3wgUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICIgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvbidzICAgICAgICIKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGUgaW4gICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kaWN0X18iICAgICAgICAgICAgICAgIHwgVGhlIG5hbWVzcGFjZSBzdXBwb3J0aW5nICAgICAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jbG9zdXJlX18iICAgICAgICAgICAgIHwgIk5vbmUiIG9yIGEgdHVwbGUgb2YgY2VsbHMgdGhhdCAnCisgICAgICAgICAgJ3wgUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgIiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgIgorICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2Fubm90YXRpb25zX18iICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBhbm5vdGF0aW9ucyAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbmQgIlwncmV0dXJuXCciIGZvciB0aGUgJworICAgICAgICAgICdyZXR1cm4gICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fa3dkZWZhdWx0c19fIiAgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGRlZmF1bHRzIGZvciAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgYXNzaWduZWQgdmFsdWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzLCB3aGljaCBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGF0dGFjaCAnCisgICAgICAgICAgJ21ldGFkYXRhXG4nCisgICAgICAgICAgJyAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICAnb25seVxuJworICAgICAgICAgICcgICAgICBzdXBwb3J0cyBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICcKKyAgICAgICAgICAnRnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnV0dXJlLipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvbidzIGRlZmluaXRpb24gY2FuIGJlXG4iCisgICAgICAgICAgJyAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiAnCisgICAgICAgICAgJ2ludGVybmFsXG4nCisgICAgICAgICAgJyAgICAgIHR5cGVzIGJlbG93LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgSW5zdGFuY2UgbWV0aG9kc1xuJworICAgICAgICAgICcgICAgICBBbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGNvbWJpbmVzIGEgY2xhc3MsIGEgY2xhc3MgaW5zdGFuY2UgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QsICJfX2Z1bmNfXyIgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgIl9fZG9jX18iIGlzIHRoZVxuJworICAgICAgICAgICcgICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAnCisgICAgICAgICAgJyJfX25hbWVfXyJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzICJfX2Z1bmNfXy5fX25hbWVfXyIpOyAnCisgICAgICAgICAgJyJfX21vZHVsZV9fIlxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWQgaW4sIG9yICcKKyAgICAgICAgICAnIk5vbmUiXG4nCisgICAgICAgICAgJyAgICAgIGlmIHVuYXZhaWxhYmxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3MgKHBlcmhhcHMgdmlhIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MpLCAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgJworICAgICAgICAgICd1c2VyLVxuJworICAgICAgICAgICcgICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgJworICAgICAgICAgICdpbnN0YW5jZXMsXG4nCisgICAgICAgICAgJyAgICAgIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4nCisgICAgICAgICAgJyAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSAnCisgICAgICAgICAgJyJfX2Z1bmNfXyJcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgYnV0IGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSAnCisgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlIGlzIHRoZVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgICgiX19zZWxmX18iKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSwgJworICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgJyAgICAgICJDIiBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiAnCisgICAgICAgICAgJyJmKCkiLFxuJworICAgICAgICAgICcgICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50ICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAnICAgICAgY2FsbGluZyAiQy5mKHgsIDEpIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgJworICAgICAgICAgICdhY3R1YWxseVxuJworICAgICAgICAgICcgICAgICBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyICJ4LmYoMSkiIG9yICcKKyAgICAgICAgICAnIkMuZigxKSJcbicKKyAgICAgICAgICAnICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nICJmKEMsMSkiIHdoZXJlICJmIiBpcyB0aGUgJworICAgICAgICAgICd1bmRlcmx5aW5nXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTm90ZSB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZ1bmN0aW9uIG9iamVjdCB0byAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgJworICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4nCisgICAgICAgICAgJyAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZS4gQWxzbyBub3RpY2UgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIG9ubHkgaGFwcGVucyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbicKKyAgICAgICAgICAnICAgICAgY2FsbGFibGUgb2JqZWN0cykgYXJlIHJldHJpZXZlZCB3aXRob3V0IHRyYW5zZm9ybWF0aW9uLiAgSXQgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyBvZiBhIGNsYXNzIGluc3RhbmNlIGFyZSBub3QgY29udmVydGVkIHRvIGJvdW5kXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gJworICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAnICAgICAgb2YgdGhlIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCB1c2VzIHRoZSAieWllbGQiIHN0YXRlbWVudCAoc2VlXG4nCisgICAgICAgICAgJyAgICAgIHNlY3Rpb24gVGhlIHlpZWxkIHN0YXRlbWVudCkgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciAnCisgICAgICAgICAgJ2Z1bmN0aW9uKi5cbicKKyAgICAgICAgICAnICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3IgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICAnCisgICAgICAgICAgJ2NhbGxpbmdcbicKKyAgICAgICAgICAnICAgICAgdGhlIGl0ZXJhdG9yXCdzICJpdGVyYXRvci5fX25leHRfXygpIiBtZXRob2Qgd2lsbCBjYXVzZSB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAnCisgICAgICAgICAgJyJ5aWVsZCJcbicKKyAgICAgICAgICAnICAgICAgc3RhdGVtZW50LiAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSAicmV0dXJuIiBzdGF0ZW1lbnQgJworICAgICAgICAgICdvclxuJworICAgICAgICAgICcgICAgICBmYWxscyBvZmYgdGhlIGVuZCwgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgIHJldHVybmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ29yb3V0aW5lIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nICJhc3luYyBkZWYiIGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuICcKKyAgICAgICAgICAnY2FsbGVkLFxuJworICAgICAgICAgICcgICAgICByZXR1cm5zIGEgKmNvcm91dGluZSogb2JqZWN0LiAgSXQgbWF5IGNvbnRhaW4gImF3YWl0IlxuJworICAgICAgICAgICcgICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiICcKKyAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAnICAgICAgU2VlIGFsc28gdGhlIENvcm91dGluZSBPYmplY3RzIHNlY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBCdWlsdC1pbiBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJyAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgImxlbigpIiBhbmQgIm1hdGguc2luKCkiXG4nCisgICAgICAgICAgJyAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCAnCisgICAgICAgICAgJ3JlYWQtXG4nCisgICAgICAgICAgJyAgICAgIG9ubHkgYXR0cmlidXRlczogIl9fZG9jX18iIGlzIHRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uXG4nCisgICAgICAgICAgJyAgICAgIHN0cmluZywgb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlOyAiX19uYW1lX18iIGlzIHRoZSAnCisgICAgICAgICAgImZ1bmN0aW9uJ3NcbiIKKyAgICAgICAgICAnICAgICAgbmFtZTsgIl9fc2VsZl9fIiBpcyBzZXQgdG8gIk5vbmUiIChidXQgc2VlIHRoZSBuZXh0IGl0ZW0pO1xuJworICAgICAgICAgICcgICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzICcKKyAgICAgICAgICAnZGVmaW5lZFxuJworICAgICAgICAgICcgICAgICBpbiBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBCdWlsdC1pbiBtZXRob2RzXG4nCisgICAgICAgICAgJyAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICAgICB0aW1lIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBhc3NlZCB0byB0aGUgQyBmdW5jdGlvbiBhcyBhblxuJworICAgICAgICAgICcgICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbicKKyAgICAgICAgICAnICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgIl9fc2VsZl9fIiBpcyBzZXQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzZXNcbicKKyAgICAgICAgICAnICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyAnCisgICAgICAgICAgJ2ZhY3Rvcmllc1xuJworICAgICAgICAgICcgICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSAiX19uZXdfXygpIi4gIFRoZSBhcmd1bWVudHMgb2YgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGNhbGwgYXJlIHBhc3NlZCB0byAiX19uZXdfXygpIiBhbmQsIGluIHRoZSB0eXBpY2FsIGNhc2UsIHRvXG4nCisgICAgICAgICAgJyAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBJbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5ICcKKyAgICAgICAgICAnZGVmaW5pbmdcbicKKyAgICAgICAgICAnICAgICAgYSAiX19jYWxsX18oKSIgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICcgICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmVcbicKKyAgICAgICAgICAnICAgY3JlYXRlZCBieSB0aGUgaW1wb3J0IHN5c3RlbSBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUgImltcG9ydCJcbicKKyAgICAgICAgICAnICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4nCisgICAgICAgICAgJyAgICJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBhbmQgYnVpbHQtaW4gIl9faW1wb3J0X18oKSIuICBBICcKKyAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgJyAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlICJfX2dsb2JhbHNfXyIgYXR0cmlidXRlIG9mXG4nCisgICAgICAgICAgJyAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4nCisgICAgICAgICAgJyAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJtLngiIGlzICcKKyAgICAgICAgICAnZXF1aXZhbGVudFxuJworICAgICAgICAgICcgICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbicKKyAgICAgICAgICAiICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc24ndCBuZWVkZWQgIgorICAgICAgICAgICdvbmNlXG4nCisgICAgICAgICAgJyAgIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuIgorICAgICAgICAgICcgICBlLmcuLCAibS54ID0gMSIgaXMgZXF1aXZhbGVudCB0byAibS5fX2RpY3RfX1sieCJdID0gMSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgbW9kdWxlXCdzICcKKyAgICAgICAgICAnbmFtZTtcbicKKyAgICAgICAgICAnICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuJworICAgICAgICAgICcgICB1bmF2YWlsYWJsZTsgIl9fYW5ub3RhdGlvbnNfXyIgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnlcbicKKyAgICAgICAgICAnICAgY29udGFpbmluZyAqdmFyaWFibGUgYW5ub3RhdGlvbnMqIGNvbGxlY3RlZCBkdXJpbmcgbW9kdWxlIGJvZHlcbicKKyAgICAgICAgICAnICAgZXhlY3V0aW9uOyAiX19maWxlX18iIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgIl9fZmlsZV9fIlxuJworICAgICAgICAgICcgICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyAnCisgICAgICAgICAgJ0NcbicKKyAgICAgICAgICAnICAgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yXG4nCisgICAgICAgICAgJyAgIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgJworICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAnICAgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbicKKyAgICAgICAgICAnICAgY2xlYXJzIG1vZHVsZSBkaWN0aW9uYXJpZXMsIHRoZSBtb2R1bGUgZGljdGlvbmFyeSB3aWxsIGJlICcKKyAgICAgICAgICAnY2xlYXJlZFxuJworICAgICAgICAgICcgICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgJworICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAnICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDdXN0b20gY2xhc3Nlc1xuJworICAgICAgICAgICcgICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zICcKKyAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICcgICBzZWN0aW9uIENsYXNzIGRlZmluaXRpb25zKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWQgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICcgICBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIkMueCIgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICcgICAiQy5fX2RpY3RfX1sieCJdIiAoYWx0aG91Z2ggdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGhvb2tzIHdoaWNoICcKKyAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAnICAgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGUgbmFtZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4nCisgICAgICAgICAgJyAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIHJlc29sdXRpb24gb3JkZXIgd2hpY2ggYmVoYXZlcyBjb3JyZWN0bHkgZXZlbiBpbiB0aGUgcHJlc2VuY2UgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICIgICAnZGlhbW9uZCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiIKKyAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4nCisgICAgICAgICAgJyAgIGRldGFpbHMgb24gdGhlIEMzIE1STyB1c2VkIGJ5IFB5dGhvbiBjYW4gYmUgZm91bmQgaW4gdGhlXG4nCisgICAgICAgICAgJyAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuJworICAgICAgICAgICcgICBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgJworICAgICAgICAgICd5aWVsZCBhXG4nCisgICAgICAgICAgJyAgIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnICAgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiBJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heSAnCisgICAgICAgICAgJ2RpZmZlclxuJworICAgICAgICAgICcgICBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzJ3MgZGljdGlvbmFyeSwgIgorICAgICAgICAgICduZXZlclxuJworICAgICAgICAgICcgICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAoc2VlIGJlbG93KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgIl9fZGljdF9fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzXCdzIG5hbWVzcGFjZTsgIl9fYmFzZXNfXyIgaXMgYSAnCisgICAgICAgICAgJ3R1cGxlXG4nCisgICAgICAgICAgJyAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7ICJfX2RvY19fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICIgICBjbGFzcydzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmIHVuZGVmaW5lZDtcbiIKKyAgICAgICAgICAnICAgIl9fYW5ub3RhdGlvbnNfXyIgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyAnCisgICAgICAgICAgJyp2YXJpYWJsZVxuJworICAgICAgICAgICcgICBhbm5vdGF0aW9ucyogY29sbGVjdGVkIGR1cmluZyBjbGFzcyBib2R5IGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NsYXNzIGluc3RhbmNlc1xuJworICAgICAgICAgICcgICBBIGNsYXNzIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBhIGNsYXNzIG9iamVjdCAoc2VlICcKKyAgICAgICAgICAnYWJvdmUpLlxuJworICAgICAgICAgICcgICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICcgICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuJworICAgICAgICAgICIgICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2UncyBjbGFzcyAiCisgICAgICAgICAgJ2hhc1xuJworICAgICAgICAgICcgICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuJworICAgICAgICAgICcgICBhdHRyaWJ1dGVzLiAgSWYgYSBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQgdGhhdCBpcyBhICcKKyAgICAgICAgICAndXNlci1kZWZpbmVkXG4nCisgICAgICAgICAgJyAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbicKKyAgICAgICAgICAnICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuJworICAgICAgICAgICcgICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiBJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMgZm9yIGFub3RoZXIgd2F5ICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXkgJworICAgICAgICAgICdkaWZmZXJcbicKKyAgICAgICAgICAnICAgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzICJfX2RpY3RfXyIuICBJZiAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgIiAgIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgYVxuIgorICAgICAgICAgICcgICAiX19nZXRhdHRyX18oKSIgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZSBsb29rdXAuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlJ3NcbiIKKyAgICAgICAgICAiICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzcydzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiIKKyAgICAgICAgICAnICAgIl9fc2V0YXR0cl9fKCkiIG9yICJfX2RlbGF0dHJfXygpIiBtZXRob2QsIHRoaXMgaXMgY2FsbGVkICcKKyAgICAgICAgICAnaW5zdGVhZFxuJworICAgICAgICAgICcgICBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yICcKKyAgICAgICAgICAnbWFwcGluZ3NcbicKKyAgICAgICAgICAnICAgaWYgdGhleSBoYXZlIG1ldGhvZHMgd2l0aCBjZXJ0YWluIHNwZWNpYWwgbmFtZXMuICBTZWUgc2VjdGlvblxuJworICAgICAgICAgICcgICBTcGVjaWFsIG1ldGhvZCBuYW1lcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fZGljdF9fIiBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4nCisgICAgICAgICAgJyAgICJfX2NsYXNzX18iIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0kvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbicKKyAgICAgICAgICAnICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgYXJlXG4nCisgICAgICAgICAgJyAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gJworICAgICAgICAgICdmdW5jdGlvbixcbicKKyAgICAgICAgICAnICAgYW5kIGFsc28gIm9zLnBvcGVuKCkiLCAib3MuZmRvcGVuKCkiLCBhbmQgdGhlICJtYWtlZmlsZSgpIiAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgcHJvdmlkZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlIG9iamVjdHMgInN5cy5zdGRpbiIsICJzeXMuc3Rkb3V0IiBhbmQgInN5cy5zdGRlcnIiIGFyZVxuJworICAgICAgICAgICIgICBpbml0aWFsaXplZCB0byBmaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJwcmV0ZXInc1xuIgorICAgICAgICAgICcgICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiAnCisgICAgICAgICAgJ3RleHRcbicKKyAgICAgICAgICAnICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4nCisgICAgICAgICAgJyAgICJpby5UZXh0SU9CYXNlIiBhYnN0cmFjdCBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ludGVybmFsIHR5cGVzXG4nCisgICAgICAgICAgJyAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbicKKyAgICAgICAgICAnICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ29kZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uICcKKyAgICAgICAgICAnY29kZSxcbicKKyAgICAgICAgICAnICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gJworICAgICAgICAgICdleHBsaWNpdFxuJworICAgICAgICAgICIgICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCAiCisgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICcgICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuJworICAgICAgICAgICcgICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsICcKKyAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgJyAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCAnCisgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgJyAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvICcKKyAgICAgICAgICAnbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBvYmplY3RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImNvX25hbWUiIGdpdmVzIHRoZSBmdW5jdGlvbiAnCisgICAgICAgICAgJ25hbWU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19hcmdjb3VudCIgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgJyhpbmNsdWRpbmdcbicKKyAgICAgICAgICAnICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nIGFyZ3VtZW50cyk7XG4nCisgICAgICAgICAgJyAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7ICJjb19jZWxsdmFycyIgJworICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgJyAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuJworICAgICAgICAgICcgICAgICByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7ICJjb19mcmVldmFycyIgaXMgYSB0dXBsZVxuJworICAgICAgICAgICcgICAgICBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlIHZhcmlhYmxlczsgImNvX2NvZGUiIGlzIGEgJworICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAnICAgICAgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnM7ICcKKyAgICAgICAgICAnImNvX2NvbnN0cyJcbicKKyAgICAgICAgICAnICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbicKKyAgICAgICAgICAnICAgICAgImNvX25hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlICcKKyAgICAgICAgICAnYnl0ZWNvZGU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzICcKKyAgICAgICAgICAnY29tcGlsZWQ7XG4nCisgICAgICAgICAgJyAgICAgICJjb19maXJzdGxpbmVubyIgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbicKKyAgICAgICAgICAnICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuJworICAgICAgICAgICcgICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4nCisgICAgICAgICAgJyAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgImNvX2ZsYWdzIiBpcyBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAnZW5jb2RpbmcgYVxuJworICAgICAgICAgICcgICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciAiY29fZmxhZ3MiOiBiaXQgJworICAgICAgICAgICciMHgwNCJcbicKKyAgICAgICAgICAnICAgICAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKmFyZ3VtZW50cyIgc3ludGF4IHRvIGFjY2VwdCAnCisgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgJyAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0ICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlICIqKmtleXdvcmRzIiBzeW50YXggdG8gYWNjZXB0ICcKKyAgICAgICAgICAnYXJiaXRyYXJ5XG4nCisgICAgICAgICAgJyAgICAgIGtleXdvcmQgYXJndW1lbnRzOyBiaXQgIjB4MjAiIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gaXMgYVxuJworICAgICAgICAgICcgICAgICBnZW5lcmF0b3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKCJmcm9tIF9fZnV0dXJlX18gaW1wb3J0ICcKKyAgICAgICAgICAnZGl2aXNpb24iKVxuJworICAgICAgICAgICcgICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0ICIweDIwMDAiICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmUgZGl2aXNpb24gJworICAgICAgICAgICdlbmFibGVkO1xuJworICAgICAgICAgICcgICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbicKKyAgICAgICAgICAnICAgICAgUHl0aG9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4nCisgICAgICAgICAgJyAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4nCisgICAgICAgICAgJyAgICAgICJOb25lIiBpZiB1bmRlZmluZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBGcmFtZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuJworICAgICAgICAgICcgICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJmX2JhY2siIGlzIHRvIHRoZSBwcmV2aW91cyAnCisgICAgICAgICAgJ3N0YWNrXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4nCisgICAgICAgICAgJyAgICAgIHN0YWNrIGZyYW1lOyAiZl9jb2RlIiBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWQgaW4gJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZXM7ICJmX2dsb2JhbHMiIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4nCisgICAgICAgICAgJyAgICAgICJmX2J1aWx0aW5zIiBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lczsgJworICAgICAgICAgICciZl9sYXN0aSJcbicKKyAgICAgICAgICAnICAgICAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50byB0aGVcbicKKyAgICAgICAgICAnICAgICAgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6ICJmX3RyYWNlIiwgaWYgbm90ICJOb25lIiwgaXMgYVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgImZfbGluZW5vIiBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlciAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24gJworICAgICAgICAgICdqdW1wc1xuJworICAgICAgICAgICcgICAgICB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEEgJworICAgICAgICAgICdkZWJ1Z2dlclxuJworICAgICAgICAgICcgICAgICBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KSBieSAnCisgICAgICAgICAgJ3dyaXRpbmdcbicKKyAgICAgICAgICAnICAgICAgdG8gZl9saW5lbm8uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGcmFtZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lLmNsZWFyKClcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBmcmFtZS4gIEFsc28sIGlmIHRoZSBmcmFtZSBiZWxvbmdlZCB0byBhIGdlbmVyYXRvciwgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgZ2VuZXJhdG9yIGlzIGZpbmFsaXplZC4gIFRoaXMgaGVscHMgYnJlYWsgcmVmZXJlbmNlICcKKyAgICAgICAgICAnY3ljbGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGV4Y2VwdGlvbiBhbmQgc3RvcmluZyBpdHMgdHJhY2ViYWNrIGZvciBsYXRlciB1c2UpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgJworICAgICAgICAgICdleGVjdXRpbmcuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICAnCisgICAgICAgICAgJ0FcbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssICcKKyAgICAgICAgICAnYXRcbicKKyAgICAgICAgICAnICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgJworICAgICAgICAgICdlbnRlcmVkLFxuJworICAgICAgICAgICcgICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIFRoZSB0cnkgc3RhdGVtZW50LikgSXQgaXMgYWNjZXNzaWJsZSBhcyB0aGUgdGhpcmQgaXRlbSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICB0dXBsZSByZXR1cm5lZCBieSAic3lzLmV4Y19pbmZvKCkiLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zICcKKyAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAnICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSAnCisgICAgICAgICAgJ2Zvcm1hdHRlZClcbicKKyAgICAgICAgICAnICAgICAgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbTsgaWYgdGhlIGludGVycHJldGVyIGlzICcKKyAgICAgICAgICAnaW50ZXJhY3RpdmUsXG4nCisgICAgICAgICAgJyAgICAgIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXMgJworICAgICAgICAgICcic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJ0Yl9uZXh0IiBpcyB0aGUgbmV4dCBsZXZlbCBpbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgIk5vbmUiIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7ICJ0Yl9mcmFtZSIgcG9pbnRzIHRvIHRoZVxuJworICAgICAgICAgICcgICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSAnCisgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQ7ICJ0Yl9sYXN0aSIgaW5kaWNhdGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGUgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gJworICAgICAgICAgICdpblxuJworICAgICAgICAgICcgICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uIG9jY3VycmVkIGluIGEgInRyeSIgc3RhdGVtZW50IHdpdGggJworICAgICAgICAgICdub1xuJworICAgICAgICAgICcgICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNsaWNlIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAnCisgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIlxuJworICAgICAgICAgICcgICAgICBtZXRob2RzLiAgVGhleSBhcmUgYWxzbyBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pbiAic2xpY2UoKSJcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAic3RhcnQiIGlzIHRoZSBsb3dlciBib3VuZDsgJworICAgICAgICAgICcic3RvcCJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIHVwcGVyIGJvdW5kOyAic3RlcCIgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXMgIk5vbmUiICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTbGljZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbicKKyAgICAgICAgICAnICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiAnCisgICAgICAgICAgJ2l0ZW1zLlxuJworICAgICAgICAgICcgICAgICAgICBJdCByZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgaW50ZWdlcnM7IHJlc3BlY3RpdmVseSB0aGVzZSAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4nCisgICAgICAgICAgJyAgICAgICAgIGxlbmd0aCBvZiB0aGUgc2xpY2UuIE1pc3Npbmcgb3Igb3V0LW9mLWJvdW5kcyBpbmRpY2VzIGFyZVxuJworICAgICAgICAgICcgICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4nCisgICAgICAgICAgJyAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgJworICAgICAgICAgICdkZXNjcmliZWRcbicKKyAgICAgICAgICAnICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG9yIGEgY2xhc3MgaW5zdGFuY2UsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuJworICAgICAgICAgICcgICAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9uLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCAnCisgICAgICAgICAgJ3VzdWFsbHlcbicKKyAgICAgICAgICAnICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4nCisgICAgICAgICAgJyAgICAgICJzdGF0aWNtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSAnCisgICAgICAgICAgJ3dyYXBwZXJcbicKKyAgICAgICAgICAnICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbicKKyAgICAgICAgICAnICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlICcKKyAgICAgICAgICAnY3JlYXRlZFxuJworICAgICAgICAgICcgICAgICBieSB0aGUgYnVpbHQtaW4gImNsYXNzbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJywKKyAndHlwZXNmdW5jdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0Z1bmN0aW9uc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0Z1bmN0aW9uIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBUaGUgJworICAgICAgICAgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBvbiBhIGZ1bmN0aW9uIG9iamVjdCBpcyB0byBjYWxsIGl0OiAnCisgICAgICAgICAgICAgICAgICAgJyJmdW5jKGFyZ3VtZW50LWxpc3QpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICAnYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICBCb3RoIHN1cHBvcnQgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gKHRvIGNhbGxcbicKKyAgICAgICAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudCBvYmplY3QgdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdTZWUgRnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAorICd0eXBlc21hcHBpbmcnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNYXBwaW5nIFR5cGVzIC0tLSAiZGljdCJcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgJworICAgICAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgJworICAgICAgICAgICAgICAgICAndGhlIGJ1aWx0LVxuJworICAgICAgICAgICAgICAgICAnaW4gImxpc3QiLCAic2V0IiwgYW5kICJ0dXBsZSIgY2xhc3NlcywgYW5kIHRoZSAiY29sbGVjdGlvbnMiICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIkEgZGljdGlvbmFyeSdzIGtleXMgYXJlICphbG1vc3QqIGFyYml0cmFyeSB2YWx1ZXMuICBWYWx1ZXMgIgorICAgICAgICAgICAgICAgICAndGhhdCBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ25vdCAqaGFzaGFibGUqLCB0aGF0IGlzLCB2YWx1ZXMgY29udGFpbmluZyBsaXN0cywgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyaWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICdvdGhlciBtdXRhYmxlIHR5cGVzICh0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiAnCisgICAgICAgICAgICAgICAgICdieSBvYmplY3RcbicKKyAgICAgICAgICAgICAgICAgJ2lkZW50aXR5KSBtYXkgbm90IGJlIHVzZWQgYXMga2V5cy4gIE51bWVyaWMgdHlwZXMgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAna2V5cyBvYmV5XG4nCisgICAgICAgICAgICAgICAgICd0aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzICcKKyAgICAgICAgICAgICAgICAgJ2NvbXBhcmUgZXF1YWxcbicKKyAgICAgICAgICAgICAgICAgJyhzdWNoIGFzICIxIiBhbmQgIjEuMCIpIHRoZW4gdGhleSBjYW4gYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICdpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXhcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlICcKKyAgICAgICAgICAgICAgICAgJ2NvbXB1dGVycyBzdG9yZVxuJworICAgICAgICAgICAgICAgICAnZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ3Vud2lzZSB0byB1c2VcbicKKyAgICAgICAgICAgICAgICAgJ3RoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgJworICAgICAgICAgICAgICAgICAnbGlzdCBvZiAia2V5OlxuJworICAgICAgICAgICAgICAgICAndmFsdWUiIHBhaXJzIHdpdGhpbiBicmFjZXMsIGZvciBleGFtcGxlOiAie1wnamFja1wnOiA0MDk4LCAnCisgICAgICAgICAgICAgICAgICInc2pvZXJkJzpcbiIKKyAgICAgICAgICAgICAgICAgJzQxMjd9IiBvciAiezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfSIsIG9yIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciZGljdCJcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KCoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KG1hcHBpbmcsICoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KGl0ZXJhYmxlLCAqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGFuZCBhIHBvc3NpYmx5IGVtcHR5IHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgbm8gcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiwgYW4gZW1wdHkgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICdpcyBjcmVhdGVkLlxuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBpdCBpcyBhIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0LCBhXG4nCisgICAgICAgICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUgcGFpcnMgYXMgJworICAgICAgICAgICAgICAgICAndGhlIG1hcHBpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gIE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAgICcqaXRlcmFibGUqXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBFYWNoIGl0ZW0gaW4gdGhlIGl0ZXJhYmxlIG11c3QgaXRzZWxmIGJlIGFuICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhYmxlIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3Qgb2JqZWN0IG9mIGVhY2ggaXRlbSAnCisgICAgICAgICAgICAgICAgICdiZWNvbWVzIGEga2V5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgbmV3IGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIG9iamVjdCB0aGUgJworICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUuICBJZiBhIGtleSBvY2N1cnMgbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlICcKKyAgICAgICAgICAgICAgICAgJ2ZvciB0aGF0IGtleVxuJworICAgICAgICAgICAgICAgICAnICAgYmVjb21lcyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmQgYXJndW1lbnRzIGFuZCAnCisgICAgICAgICAgICAgICAgICd0aGVpclxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFyZSBhZGRlZCB0byB0aGUgZGljdGlvbmFyeSBjcmVhdGVkIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LiAgSWYgYSBrZXkgYmVpbmcgYWRkZWQgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgJworICAgICAgICAgICAgICAgICAndmFsdWUgZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGtleXdvcmQgYXJndW1lbnQgcmVwbGFjZXMgdGhlIHZhbHVlIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUbyBpbGx1c3RyYXRlLCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIGFsbCByZXR1cm4gYSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IGVxdWFsXG4nCisgICAgICAgICAgICAgICAgICcgICB0byAieyJvbmUiOiAxLCAidHdvIjogMiwgInRocmVlIjogM30iOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gYSA9IGRpY3Qob25lPTEsIHR3bz0yLCB0aHJlZT0zKVxuJworICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGIgPSB7J29uZSc6IDEsICd0d28nOiAyLCAndGhyZWUnOiAzfVxuIgorICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGMgPSBkaWN0KHppcChbJ29uZScsICd0d28nLCAndGhyZWUnXSwgWzEsIDIsIDNdKSlcbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBkID0gZGljdChbKCd0d28nLCAyKSwgKCdvbmUnLCAxKSwgKCd0aHJlZScsIDMpXSlcbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBlID0gZGljdCh7J3RocmVlJzogMywgJ29uZSc6IDEsICd0d28nOiAyfSlcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBhID09IGIgPT0gYyA9PSBkID09IGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUHJvdmlkaW5nIGtleXdvcmQgYXJndW1lbnRzIGFzIGluIHRoZSBmaXJzdCBleGFtcGxlIG9ubHkgJworICAgICAgICAgICAgICAgICAnd29ya3MgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXlzIHRoYXQgYXJlIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVycy4gIE90aGVyd2lzZSwgYW55ICcKKyAgICAgICAgICAgICAgICAgJ3ZhbGlkIGtleXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBkaWN0aW9uYXJpZXMgc3VwcG9ydCAoYW5kICcKKyAgICAgICAgICAgICAgICAgJ3RoZXJlZm9yZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbSBtYXBwaW5nIHR5cGVzIHNob3VsZCBzdXBwb3J0IHRvbyk6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGxlbihkKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqZCouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRba2V5XVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgKmQqIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEgJworICAgICAgICAgICAgICAgICAnIktleUVycm9yIiBpZlxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kICJfX21pc3NpbmdfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmQgKmtleSpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIG5vdCBwcmVzZW50LCB0aGUgImRba2V5XSIgb3BlcmF0aW9uIGNhbGxzIHRoYXQgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgImRba2V5XSIgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ3RoZW4gcmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJfX21pc3NpbmdfXyhrZXkpIiBjYWxsLiBObyBvdGhlciBvcGVyYXRpb25zIG9yICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgaW52b2tlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiX19taXNzaW5nX18oKSIuIElmICJfX21pc3NpbmdfXygpIiBpcyBub3QgZGVmaW5lZCwgJworICAgICAgICAgICAgICAgICAnIktleUVycm9yIlxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgcmFpc2VkLiAiX19taXNzaW5nX18oKSIgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90ICcKKyAgICAgICAgICAgICAgICAgJ2JlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpbnN0YW5jZSB2YXJpYWJsZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4nCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIDBcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgICAgID4+PiBjWydyZWQnXSArPSAxXG4iCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIDFcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgVGhlIGV4YW1wbGUgYWJvdmUgc2hvd3MgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJjb2xsZWN0aW9ucy5Db3VudGVyIi4gIEEgZGlmZmVyZW50ICJfX21pc3NpbmdfXyIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIGlzIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGJ5ICJjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRba2V5XSA9IHZhbHVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFNldCAiZFtrZXldIiB0byAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkZWwgZFtrZXldXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSAiZFtrZXldIiBmcm9tICpkKi4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWYgJworICAgICAgICAgICAgICAgICAnKmtleSogaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpbiB0aGUgbWFwLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXkgaW4gZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gIlRydWUiIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5IG5vdCBpbiBkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIEVxdWl2YWxlbnQgdG8gIm5vdCBrZXkgaW4gZCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXIoZClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIGRpY3Rpb25hcnkuICAnCisgICAgICAgICAgICAgICAgICdUaGlzIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHNob3J0Y3V0IGZvciAiaXRlcihkLmtleXMoKSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGVhcigpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY29weSgpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIHNldCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgICAgKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgImZyb21rZXlzKCkiIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdldChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnksIGVsc2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICpkZWZhdWx0Ki4gSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gJworICAgICAgICAgICAgICAgICAnIk5vbmUiLCBzb1xuJworICAgICAgICAgICAgICAgICAnICAgICAgdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSAiS2V5RXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVtcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zICgiKGtleSwgJworICAgICAgICAgICAgICAgICAndmFsdWUpIlxuJworICAgICAgICAgICAgICAgICAnICAgICAgcGFpcnMpLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXlzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBrZXlzLiAgU2VlIHRoZVxuIgorICAgICAgICAgICAgICAgICAnICAgICAgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBvcChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgJ2l0cyB2YWx1ZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICcKKyAgICAgICAgICAgICAgICAgJyprZXkqIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgIktleUVycm9yIiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBvcGl0ZW0oKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgIihrZXksIHZhbHVlKSIgcGFpciAnCisgICAgICAgICAgICAgICAgICdmcm9tIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgInBvcGl0ZW0oKSIgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgZW1wdHksIGNhbGxpbmcgInBvcGl0ZW0oKSIgcmFpc2VzIGEgIktleUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiAnCisgICAgICAgICAgICAgICAgICdub3QsIGluc2VydFxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICcKKyAgICAgICAgICAgICAgICAgJypkZWZhdWx0KlxuJworICAgICAgICAgICAgICAgICAnICAgICAgZGVmYXVsdHMgdG8gIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICB1cGRhdGUoW290aGVyXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICcKKyAgICAgICAgICAgICAgICAgJypvdGhlciosXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgInVwZGF0ZSgpIiBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yICcKKyAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciAnCisgICAgICAgICAgICAgICAgICdpdGVyYWJsZXMgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogJworICAgICAgICAgICAgICAgICAnImQudXBkYXRlKHJlZD0xLFxuJworICAgICAgICAgICAgICAgICAnICAgICAgYmx1ZT0yKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgdmFsdWVzLiAgU2VlICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIERpY3Rpb25hcmllcyBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZSAiKGtleSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIChcJzxcJywgXCc8PVwnLCBcJz49XCcsICcKKyAgICAgICAgICAgICAgICAgIic+JykgcmFpc2VcbiIKKyAgICAgICAgICAgICAgICAgJyAgICJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzogInR5cGVzLk1hcHBpbmdQcm94eVR5cGUiIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhICcKKyAgICAgICAgICAgICAgICAgJ3JlYWQtb25seVxuJworICAgICAgICAgICAgICAgICAnICB2aWV3IG9mIGEgImRpY3QiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcnkgdmlldyBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgb2JqZWN0cyByZXR1cm5lZCBieSAiZGljdC5rZXlzKCkiLCAiZGljdC52YWx1ZXMoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICciZGljdC5pdGVtcygpIiBhcmUgKnZpZXcgb2JqZWN0cyouICBUaGV5IHByb3ZpZGUgYSBkeW5hbWljICcKKyAgICAgICAgICAgICAgICAgJ3ZpZXcgb24gdGhlXG4nCisgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5J3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5ICIKKyAgICAgICAgICAgICAgICAgJ2NoYW5nZXMsXG4nCisgICAgICAgICAgICAgICAgICd0aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyICcKKyAgICAgICAgICAgICAgICAgJ3Jlc3BlY3RpdmUgZGF0YSxcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2xlbihkaWN0dmlldylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnaXRlcihkaWN0dmlldylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAnCisgICAgICAgICAgICAgICAgICcocmVwcmVzZW50ZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgJworICAgICAgICAgICAgICAgICAnd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2RlcGVuZHMgb25cbicKKyAgICAgICAgICAgICAgICAgIiAgIHRoZSBkaWN0aW9uYXJ5J3MgaGlzdG9yeSBvZiBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMuIElmICIKKyAgICAgICAgICAgICAgICAgJ2tleXMsXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgYW5kIGl0ZW1zIHZpZXdzIGFyZSBpdGVyYXRlZCBvdmVyIHdpdGggbm8gJworICAgICAgICAgICAgICAgICAnaW50ZXJ2ZW5pbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRpY3Rpb25hcnksIHRoZSBvcmRlciBvZiBpdGVtcyB3aWxsICcKKyAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kLiAgVGhpcyBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mICIodmFsdWUsIGtleSkiICcKKyAgICAgICAgICAgICAgICAgJ3BhaXJzIHVzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAiemlwKCkiOiAicGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpIi4gIEFub3RoZXIgJworICAgICAgICAgICAgICAgICAnd2F5IHRvXG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGUgdGhlIHNhbWUgbGlzdCBpcyAicGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW4gJworICAgICAgICAgICAgICAgICAnZC5pdGVtcygpXSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEl0ZXJhdGluZyB2aWV3cyB3aGlsZSBhZGRpbmcgb3IgZGVsZXRpbmcgZW50cmllcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnICAgbWF5IHJhaXNlIGEgIlJ1bnRpbWVFcnJvciIgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsICcKKyAgICAgICAgICAgICAgICAgJ2VudHJpZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ3ggaW4gZGljdHZpZXdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyAnCisgICAgICAgICAgICAgICAgICdrZXlzLCB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSAiKGtleSwgJworICAgICAgICAgICAgICAgICAndmFsdWUpIlxuJworICAgICAgICAgICAgICAgICAnICAgdHVwbGUpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdLZXlzIHZpZXdzIGFyZSBzZXQtbGlrZSBzaW5jZSB0aGVpciBlbnRyaWVzIGFyZSB1bmlxdWUgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2hhc2hhYmxlLlxuJworICAgICAgICAgICAgICAgICAnSWYgYWxsIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgIihrZXksIHZhbHVlKSIgcGFpcnMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3VuaXF1ZVxuJworICAgICAgICAgICAgICAgICAnYW5kIGhhc2hhYmxlLCB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzICcKKyAgICAgICAgICAgICAgICAgJ3ZpZXdzIGFyZVxuJworICAgICAgICAgICAgICAgICAnbm90IHRyZWF0ZWQgYXMgc2V0LWxpa2Ugc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgJworICAgICAgICAgICAgICAgICAndW5pcXVlLilcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZSBvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICdhYnN0cmFjdFxuJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcyAiY29sbGVjdGlvbnMuYWJjLlNldCIgYXJlIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgJyI9PSIsXG4nCisgICAgICAgICAgICAgICAgICciPCIsIG9yICJeIikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0FuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gZGlzaGVzID0geydlZ2dzJzogMiwgJ3NhdXNhZ2UnOiAxLCAnYmFjb24nOiAxLCAiCisgICAgICAgICAgICAgICAgICInc3BhbSc6IDUwMH1cbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBpdGVyYXRpb25cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBuID0gMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBuICs9IHZhbFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHByaW50KG4pXG4nCisgICAgICAgICAgICAgICAgICcgICA1MDRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGlzdChrZXlzKVxuJworICAgICAgICAgICAgICAgICAiICAgWydlZ2dzJywgJ2JhY29uJywgJ3NhdXNhZ2UnLCAnc3BhbSddXG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGlzdCh2YWx1ZXMpXG4nCisgICAgICAgICAgICAgICAgICcgICBbMiwgMSwgMSwgNTAwXVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gZGVsIGRpc2hlc1snZWdncyddXG4iCisgICAgICAgICAgICAgICAgICIgICA+Pj4gZGVsIGRpc2hlc1snc2F1c2FnZSddXG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGlzdChrZXlzKVxuJworICAgICAgICAgICAgICAgICAiICAgWydzcGFtJywgJ2JhY29uJ11cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgc2V0IG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBrZXlzICYgeydlZ2dzJywgJ2JhY29uJywgJ3NhbGFkJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgIHsnYmFjb24nfVxuIgorICAgICAgICAgICAgICAgICAiICAgPj4+IGtleXMgXiB7J3NhdXNhZ2UnLCAnanVpY2UnfVxuIgorICAgICAgICAgICAgICAgICAiICAgeydqdWljZScsICdzYXVzYWdlJywgJ2JhY29uJywgJ3NwYW0nfVxuIiwKKyAndHlwZXNtZXRob2RzJzogJ1xuJworICAgICAgICAgICAgICAgICAnTWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHVzaW5nIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnbm90YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgdHdvIGZsYXZvcnM6IGJ1aWx0LWluIG1ldGhvZHMgKHN1Y2ggYXMgImFwcGVuZCgpIiAnCisgICAgICAgICAgICAgICAgICdvbiBsaXN0cylcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBjbGFzcyBpbnN0YW5jZSBtZXRob2RzLiAgQnVpbHQtaW4gbWV0aG9kcyBhcmUgZGVzY3JpYmVkICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICd0eXBlcyB0aGF0IHN1cHBvcnQgdGhlbS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSWYgeW91IGFjY2VzcyBhIG1ldGhvZCAoYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlKVxuJworICAgICAgICAgICAgICAgICAndGhyb3VnaCBhbiBpbnN0YW5jZSwgeW91IGdldCBhIHNwZWNpYWwgb2JqZWN0OiBhICpib3VuZCAnCisgICAgICAgICAgICAgICAgICdtZXRob2QqIChhbHNvXG4nCisgICAgICAgICAgICAgICAgICdjYWxsZWQgKmluc3RhbmNlIG1ldGhvZCopIG9iamVjdC4gV2hlbiBjYWxsZWQsIGl0IHdpbGwgYWRkICcKKyAgICAgICAgICAgICAgICAgJ3RoZSAic2VsZiJcbicKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBhcmd1bWVudCBsaXN0LiAgQm91bmQgbWV0aG9kcyBoYXZlIHR3byAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsIHJlYWQtXG4nCisgICAgICAgICAgICAgICAgICdvbmx5IGF0dHJpYnV0ZXM6ICJtLl9fc2VsZl9fIiBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGVzLCBhbmQgIm0uX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ0NhbGxpbmcgIm0oYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKSIgaXMgY29tcGxldGVseSAnCisgICAgICAgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgICAgICdjYWxsaW5nICJtLl9fZnVuY19fKG0uX19zZWxmX18sIGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdMaWtlIGZ1bmN0aW9uIG9iamVjdHMsIGJvdW5kIG1ldGhvZCBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyAnCisgICAgICAgICAgICAgICAgICdhcmJpdHJhcnlcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMuICBIb3dldmVyLCBzaW5jZSBtZXRob2QgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgJworICAgICAgICAgICAgICAgICAnc3RvcmVkIG9uXG4nCisgICAgICAgICAgICAgICAgICd0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgKCJtZXRoLl9fZnVuY19fIiksIHNldHRpbmcgJworICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzIG9uIGJvdW5kIG1ldGhvZHMgaXMgZGlzYWxsb3dlZC4gIEF0dGVtcHRpbmcgdG8gJworICAgICAgICAgICAgICAgICAnc2V0IGFuXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgb24gYSBtZXRob2QgcmVzdWx0cyBpbiBhbiAiQXR0cmlidXRlRXJyb3IiIGJlaW5nICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlZC4gIEluXG4nCisgICAgICAgICAgICAgICAgICdvcmRlciB0byBzZXQgYSBtZXRob2QgYXR0cmlidXRlLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCAnCisgICAgICAgICAgICAgICAgICdpdCBvbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3VuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0OlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgQzpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSBDKClcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBjLm1ldGhvZC53aG9hbWkgPSAnbXkgbmFtZSBpcyBtZXRob2QnICAjIGNhbid0IHNldCBvbiAiCisgICAgICAgICAgICAgICAgICd0aGUgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBBdHRyaWJ1dGVFcnJvcjogJ21ldGhvZCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgIgorICAgICAgICAgICAgICAgICAiJ3dob2FtaSdcbiIKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBjLm1ldGhvZC5fX2Z1bmNfXy53aG9hbWkgPSAnbXkgbmFtZSBpcyBtZXRob2QnXG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5tZXRob2Qud2hvYW1pXG4nCisgICAgICAgICAgICAgICAgICIgICAnbXkgbmFtZSBpcyBtZXRob2QnXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAorICd0eXBlc21vZHVsZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNb2R1bGVzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBvbmx5IHNwZWNpYWwgb3BlcmF0aW9uIG9uIGEgbW9kdWxlIGlzIGF0dHJpYnV0ZSBhY2Nlc3M6ICcKKyAgICAgICAgICAgICAgICAgJyJtLm5hbWUiLFxuJworICAgICAgICAgICAgICAgICAnd2hlcmUgKm0qIGlzIGEgbW9kdWxlIGFuZCAqbmFtZSogYWNjZXNzZXMgYSBuYW1lIGRlZmluZWQgaW4gJworICAgICAgICAgICAgICAgICAiKm0qJ3NcbiIKKyAgICAgICAgICAgICAgICAgJ3N5bWJvbCB0YWJsZS4gTW9kdWxlIGF0dHJpYnV0ZXMgY2FuIGJlIGFzc2lnbmVkIHRvLiAgKE5vdGUgJworICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJpbXBvcnQiIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAnb24gYSBtb2R1bGVcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdDsgImltcG9ydCBmb28iIGRvZXMgbm90IHJlcXVpcmUgYSBtb2R1bGUgb2JqZWN0IG5hbWVkICcKKyAgICAgICAgICAgICAgICAgJypmb28qIHRvXG4nCisgICAgICAgICAgICAgICAgICdleGlzdCwgcmF0aGVyIGl0IHJlcXVpcmVzIGFuIChleHRlcm5hbCkgKmRlZmluaXRpb24qIGZvciBhICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAgICAnbmFtZWQgKmZvbyogc29tZXdoZXJlLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSBzcGVjaWFsIGF0dHJpYnV0ZSBvZiBldmVyeSBtb2R1bGUgaXMgIl9fZGljdF9fIi4gVGhpcyBpcyAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLiBNb2RpZnlpbmcgIgorICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeSB3aWxsIGFjdHVhbGx5IGNoYW5nZSB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLCAiCisgICAgICAgICAgICAgICAgICdidXQgZGlyZWN0XG4nCisgICAgICAgICAgICAgICAgICdhc3NpZ25tZW50IHRvIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSAnCisgICAgICAgICAgICAgICAgICdjYW4gd3JpdGVcbicKKyAgICAgICAgICAgICAgICAgJyJtLl9fZGljdF9fW1wnYVwnXSA9IDEiLCB3aGljaCBkZWZpbmVzICJtLmEiIHRvIGJlICIxIiwgYnV0ICcKKyAgICAgICAgICAgICAgICAgInlvdSBjYW4ndFxuIgorICAgICAgICAgICAgICAgICAnd3JpdGUgIm0uX19kaWN0X18gPSB7fSIpLiAgTW9kaWZ5aW5nICJfX2RpY3RfXyIgZGlyZWN0bHkgaXMgJworICAgICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTW9kdWxlcyBidWlsdCBpbnRvIHRoZSBpbnRlcnByZXRlciBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICcKKyAgICAgICAgICAgICAgICAgJyI8bW9kdWxlXG4nCisgICAgICAgICAgICAgICAgICdcJ3N5c1wnIChidWlsdC1pbik+Ii4gIElmIGxvYWRlZCBmcm9tIGEgZmlsZSwgdGhleSBhcmUgJworICAgICAgICAgICAgICAgICAnd3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAgICAnIjxtb2R1bGUgXCdvc1wnIGZyb20gJworICAgICAgICAgICAgICAgICAnXCcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljXCc+Ii5cbicsCisgJ3R5cGVzc2VxJzogJ1xuJworICAgICAgICAgICAgICdTZXF1ZW5jZSBUeXBlcyAtLS0gImxpc3QiLCAidHVwbGUiLCAicmFuZ2UiXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGFyZSB0aHJlZSBiYXNpYyBzZXF1ZW5jZSB0eXBlczogbGlzdHMsIHR1cGxlcywgYW5kIHJhbmdlXG4nCisgICAgICAgICAgICAgJ29iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgJworICAgICAgICAgICAgICdiaW5hcnlcbicKKyAgICAgICAgICAgICAnZGF0YSBhbmQgdGV4dCBzdHJpbmdzIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ3R5cGVzLCBib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlICcKKyAgICAgICAgICAgICAnImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDXG4nCisgICAgICAgICAgICAgJ2lzIHByb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2UgJworICAgICAgICAgICAgICdvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJ29uIGN1c3RvbSBzZXF1ZW5jZSB0eXBlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyAnCisgICAgICAgICAgICAgJ3ByaW9yaXR5LlxuJworICAgICAgICAgICAgICdJbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAnCisgICAgICAgICAgICAgJyppKixcbicKKyAgICAgICAgICAgICAnKmoqIGFuZCAqayogYXJlIGludGVnZXJzIGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAnbWVldHMgYW55XG4nCisgICAgICAgICAgICAgJ3R5cGUgYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdjb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSAiKyIgKGNvbmNhdGVuYXRpb24pIGFuZCAiKiIgJworICAgICAgICAgICAgICcocmVwZXRpdGlvbilcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWNcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8IE5vdGVzICAgICAgfFxuJworICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAnfCAieCBpbiBzIiAgICAgICAgICAgICAgICAgICB8ICJUcnVlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgICcKKyAgICAgICAgICAgICAnfCAoMSkgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiRmFsc2UiICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInggbm90IGluIHMiICAgICAgICAgICAgICAgfCAiRmFsc2UiIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgICAnCisgICAgICAgICAgICAgJ3wgKDEpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgIlRydWUiICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICsgdCIgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAqdCogJworICAgICAgICAgICAgICd8ICg2KSg3KSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyAqIG4iIG9yICJuICogcyIgICAgICAgICB8IGVxdWl2YWxlbnQgdG8gYWRkaW5nICpzKiB0byAgICAgICcKKyAgICAgICAgICAgICAnfCAoMikoNykgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0c2VsZiAqbiogdGltZXMgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaV0iICAgICAgICAgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICAnCisgICAgICAgICAgICAgJ3wgKDMpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgJworICAgICAgICAgICAgICd8ICgzKSg0KSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgICcKKyAgICAgICAgICAgICAnfCAoMykoNSkgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImxlbihzKSIgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJtaW4ocykiICAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAibWF4KHMpIiAgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuaW5kZXgoeFssIGlbLCBqXV0pIiAgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAnCisgICAgICAgICAgICAgJ3wgKDgpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqIChhdCBvciBhZnRlciBpbmRleCAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNvdW50KHgpIiAgICAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluICcKKyAgICAgICAgICAgICAncGFydGljdWxhcixcbicKKyAgICAgICAgICAgICAndHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG4nCisgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgZWxlbWVudHMuIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeVxuJworICAgICAgICAgICAgICdlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgJworICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgJ3R5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICcKKyAgICAgICAgICAgICAnQ29tcGFyaXNvbnMgaW5cbicKKyAgICAgICAgICAgICAndGhlIGxhbmd1YWdlIHJlZmVyZW5jZS4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzEuIFdoaWxlIHRoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yICcKKyAgICAgICAgICAgICAnc2ltcGxlXG4nCisgICAgICAgICAgICAgJyAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICcgICAoc3VjaCBhcyAic3RyIiwgImJ5dGVzIiBhbmQgImJ5dGVhcnJheSIpIGFsc28gdXNlIHRoZW0gZm9yXG4nCisgICAgICAgICAgICAgJyAgIHN1YnNlcXVlbmNlIHRlc3Rpbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gImdnIiBpbiAiZWdncyJcbicKKyAgICAgICAgICAgICAnICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gIjAiIGFyZSB0cmVhdGVkIGFzICIwIiAod2hpY2ggeWllbGRzICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSB0aGF0IGl0ZW1zIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlICpzKiBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZSAnCisgICAgICAgICAgICAgJ3RpbWVzLlxuJworICAgICAgICAgICAgICcgICBUaGlzIG9mdGVuIGhhdW50cyBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1xuJworICAgICAgICAgICAgICcgICAgICBbW10sIFtdLCBbXV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNcbicKKyAgICAgICAgICAgICAnICAgICAgW1szXSwgWzNdLCBbM11dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0ICJbW11dIiBpcyBhIG9uZS1lbGVtZW50IGxpc3QgJworICAgICAgICAgICAgICdjb250YWluaW5nXG4nCisgICAgICAgICAgICAgJyAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiAiW1tdXSAqIDMiIGFyZSAnCisgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAnICAgdG8gdGhpcyBzaW5nbGUgZW1wdHkgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mXG4nCisgICAgICAgICAgICAgJyAgICJsaXN0cyIgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4nCisgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMV0uYXBwZW5kKDUpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgICAgIFtbM10sIFs1XSwgWzddXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRnVydGhlciBleHBsYW5hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIEZBUSBlbnRyeSBIb3cgZG8gSSAnCisgICAgICAgICAgICAgJ2NyZWF0ZSBhXG4nCisgICAgICAgICAgICAgJyAgIG11bHRpZGltZW5zaW9uYWwgbGlzdD8uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICczLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBzdHJpbmc6ICJsZW4ocykgKyBpIiBvciAibGVuKHMpICsgaiIgaXMgc3Vic3RpdHV0ZWQuICBCdXQgJworICAgICAgICAgICAgICdub3RlXG4nCisgICAgICAgICAgICAgJyAgIHRoYXQgIi0wIiBpcyBzdGlsbCAiMCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc0LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCAiaSA8PSBrIDwgaiIuICBJZiAqaSogb3IgKmoqICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuICJsZW4ocykiLCB1c2UgImxlbihzKSIuICBJZiAqaSogaXMgb21pdHRlZCBvciAnCisgICAgICAgICAgICAgJyJOb25lIixcbicKKyAgICAgICAgICAgICAnICAgdXNlICIwIi4gIElmICpqKiBpcyBvbWl0dGVkIG9yICJOb25lIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzIGVtcHR5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogd2l0aCBzdGVwICprKiBpcyBkZWZpbmVkIGFzICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggICJ4ID0gaSArIG4qayIgc3VjaCB0aGF0ICIwIDw9IG4gJworICAgICAgICAgICAgICc8XG4nCisgICAgICAgICAgICAgJyAgIChqLWkpL2siLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSAiaSIsICJpK2siLCAnCisgICAgICAgICAgICAgJyJpKzIqayIsXG4nCisgICAgICAgICAgICAgJyAgICJpKzMqayIgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuICpqKiBpcyByZWFjaGVkIChidXQgbmV2ZXJcbicKKyAgICAgICAgICAgICAnICAgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlXG4nCisgICAgICAgICAgICAgJyAgICJsZW4ocykiLiAgSWYgKmkqIG9yICpqKiBhcmUgb21pdHRlZCBvciAiTm9uZSIsIHRoZXkgYmVjb21lICcKKyAgICAgICAgICAgICAnImVuZCJcbicKKyAgICAgICAgICAgICAnICAgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqICcKKyAgICAgICAgICAgICAnY2Fubm90IGJlXG4nCisgICAgICAgICAgICAgJyAgIHplcm8uIElmICprKiBpcyAiTm9uZSIsIGl0IGlzIHRyZWF0ZWQgbGlrZSAiMSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc2LiBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzZXF1ZW5jZXMgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXdcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZFxuJworICAgICAgICAgICAgICcgICBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlICcKKyAgICAgICAgICAgICAndG90YWxcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UgbGVuZ3RoLiBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCAnCisgICAgICAgICAgICAgJ3N3aXRjaCB0b1xuJworICAgICAgICAgICAgICcgICBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBiZWxvdzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAic3RyIiBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgJworICAgICAgICAgICAgICd1c2VcbicKKyAgICAgICAgICAgICAnICAgICAic3RyLmpvaW4oKSIgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGFuICJpby5TdHJpbmdJTyJcbicKKyAgICAgICAgICAgICAnICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAiYnl0ZXMiIG9iamVjdHMsIHlvdSBjYW4gc2ltaWxhcmx5IHVzZVxuJworICAgICAgICAgICAgICcgICAgICJieXRlcy5qb2luKCkiIG9yICJpby5CeXRlc0lPIiwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuJworICAgICAgICAgICAgICcgICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhICJieXRlYXJyYXkiIG9iamVjdC4gICJieXRlYXJyYXkiICcKKyAgICAgICAgICAgICAnb2JqZWN0cyBhcmVcbicKKyAgICAgICAgICAgICAnICAgICBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAidHVwbGUiIG9iamVjdHMsIGV4dGVuZCBhICJsaXN0IiBpbnN0ZWFkXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzICcKKyAgICAgICAgICAgICAnZG9jdW1lbnRhdGlvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNy4gU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyAicmFuZ2UiKSBvbmx5IHN1cHBvcnQgaXRlbVxuJworICAgICAgICAgICAgICIgICBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb24ndCAiCisgICAgICAgICAgICAgJ3N1cHBvcnRcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnOC4gImluZGV4IiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouICcKKyAgICAgICAgICAgICAnV2hlblxuJworICAgICAgICAgICAgICcgICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kICcKKyAgICAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAgICAnICAgZWZmaWNpZW50IHNlYXJjaGluZyBvZiBzdWJzZWN0aW9ucyBvZiB0aGUgc2VxdWVuY2UuIFBhc3NpbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgZXh0cmEgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyAnCisgICAgICAgICAgICAgJyJzW2k6al0uaW5kZXgoeCkiLFxuJworICAgICAgICAgICAgICcgICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggJworICAgICAgICAgICAgICdiZWluZ1xuJworICAgICAgICAgICAgICcgICByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCAnCisgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICcgICBzbGljZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbW11dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb25seSBvcGVyYXRpb24gdGhhdCBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXMgZ2VuZXJhbGx5ICcKKyAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgJ3RoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyAnCisgICAgICAgICAgICAgJ3N1cHBvcnQgZm9yXG4nCisgICAgICAgICAgICAgJ3RoZSAiaGFzaCgpIiBidWlsdC1pbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyAidHVwbGUiICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VzLCB0b1xuJworICAgICAgICAgICAgICdiZSB1c2VkIGFzICJkaWN0IiBrZXlzIGFuZCBzdG9yZWQgaW4gInNldCIgYW5kICJmcm96ZW5zZXQiICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zICcKKyAgICAgICAgICAgICAndW5oYXNoYWJsZVxuJworICAgICAgICAgICAgICd2YWx1ZXMgd2lsbCByZXN1bHQgaW4gIlR5cGVFcnJvciIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICd0eXBlcy4gVGhlICJjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlIiBBQkMgaXMgcHJvdmlkZWQgdG8gJworICAgICAgICAgICAgICdtYWtlXG4nCisgICAgICAgICAgICAgJ2l0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAndHlwZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAqdCogJworICAgICAgICAgICAgICdpcyBhbnlcbicKKyAgICAgICAgICAgICAnaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSAnCisgICAgICAgICAgICAgJ3R5cGUgYW5kXG4nCisgICAgICAgICAgICAgJ3ZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiICcKKyAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICdhY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gIjAgPD0geCA8PSAnCisgICAgICAgICAgICAgJzI1NSIpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICd8ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCAnCisgICAgICAgICAgICAgJ2J5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICcKKyAgICAgICAgICAgICAnaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgJworICAgICAgICAgICAgICd0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAnCisgICAgICAgICAgICAgJyp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gJworICAgICAgICAgICAgICdbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iICcKKyAgICAgICAgICAgICAnYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICcKKyAgICAgICAgICAgICAnKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyAnCisgICAgICAgICAgICAgJ29mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlICcKKyAgICAgICAgICAgICAnbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiAnCisgICAgICAgICAgICAgJ3RoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgJworICAgICAgICAgICAgICdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgJ1t4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gInMiICcKKyAgICAgICAgICAgICAnKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgJworICAgICAgICAgICAgICdzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICcKKyAgICAgICAgICAgICAnInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAnCisgICAgICAgICAgICAgJyJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgJworICAgICAgICAgICAgICdvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChmb3IgdGhlIG1vc3QgcGFydCB0aGUgJworICAgICAgICAgICAgICdzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgJ3QiKSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzICcKKyAgICAgICAgICAgICAnY29udGVudHMgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiAnCisgICAgICAgICAgICAgJ3RpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCAnCisgICAgICAgICAgICAgJ3RoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgJworICAgICAgICAgICAgICdhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gJworICAgICAgICAgICAgICdbeF0iKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiAnCisgICAgICAgICAgICAgJ2FuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gJworICAgICAgICAgICAgICcqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICcKKyAgICAgICAgICAgICAnKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlICJzW2ldID09ICcKKyAgICAgICAgICAgICAneCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5yZXZlcnNlKCkiICAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqICcKKyAgICAgICAgICAgICAnaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgJ3BsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgJworICAgICAgICAgICAgICdkZWZhdWx0XG4nCisgICAgICAgICAgICAgJyAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICczLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc0LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbicKKyAgICAgICAgICAgICAnICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kICcKKyAgICAgICAgICAgICAndXNlcnNcbicKKyAgICAgICAgICAgICAnICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSAnCisgICAgICAgICAgICAgJ3JldmVyc2VkXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4nCisgICAgICAgICAgICAgIiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzbGljaW5nXG4iCisgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNi4gVGhlIHZhbHVlICpuKiBpcyBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3QgaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgJyAgICJfX2luZGV4X18oKSIuICBaZXJvIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgb2YgKm4qIGNsZWFyIHRoZSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlLlxuJworICAgICAgICAgICAgICcgICBJdGVtcyBpbiB0aGUgc2VxdWVuY2UgYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlIHJlZmVyZW5jZWQgJworICAgICAgICAgICAgICdtdWx0aXBsZVxuJworICAgICAgICAgICAgICcgICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyIENvbW1vbiBTZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ09wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTGlzdHNcbicKKyAgICAgICAgICAgICAnPT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0xpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICdob21vZ2VuZW91cyBpdGVtcyAod2hlcmUgdGhlIHByZWNpc2UgZGVncmVlIG9mIHNpbWlsYXJpdHkgd2lsbCAnCisgICAgICAgICAgICAgJ3ZhcnkgYnlcbicKKyAgICAgICAgICAgICAnYXBwbGljYXRpb24pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdHMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIHNldmVyYWwgd2F5czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6ICcKKyAgICAgICAgICAgICAnIltdIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6ICcKKyAgICAgICAgICAgICAnIlthXSIsXG4nCisgICAgICAgICAgICAgJyAgICAgIlthLCBiLCBjXSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBsaXN0IGNvbXByZWhlbnNpb246ICJbeCBmb3IgeCBpbiBpdGVyYWJsZV0iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiAibGlzdCgpIiBvciAibGlzdChpdGVyYWJsZSkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgIiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyICIKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuICcKKyAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kXG4nCisgICAgICAgICAgICAgJyAgIHJldHVybmVkLCBzaW1pbGFyIHRvICJpdGVyYWJsZVs6XSIuIEZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgJyJsaXN0KFwnYWJjXCcpIlxuJworICAgICAgICAgICAgICcgICByZXR1cm5zICJbXCdhXCcsIFwnYlwnLCBcJ2NcJ10iIGFuZCAibGlzdCggKDEsIDIsIDMpICkiICcKKyAgICAgICAgICAgICAncmV0dXJucyAiWzEsIDIsXG4nCisgICAgICAgICAgICAgJyAgIDNdIi4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3ICcKKyAgICAgICAgICAgICAnZW1wdHlcbicKKyAgICAgICAgICAgICAnICAgbGlzdCwgIltdIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1hbnkgb3RoZXIgb3BlcmF0aW9ucyBhbHNvIHByb2R1Y2UgbGlzdHMsIGluY2x1ZGluZyB0aGUgJworICAgICAgICAgICAgICcic29ydGVkKCkiXG4nCisgICAgICAgICAgICAgJyAgIGJ1aWx0LWluLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdHMgaW1wbGVtZW50IGFsbCBvZiB0aGUgY29tbW9uIGFuZCBtdXRhYmxlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnICAgTGlzdHMgYWxzbyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2Q6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSAiPCIgJworICAgICAgICAgICAgICdjb21wYXJpc29uc1xuJworICAgICAgICAgICAgICcgICAgICBiZXR3ZWVuIGl0ZW1zLiBFeGNlcHRpb25zIGFyZSBub3Qgc3VwcHJlc3NlZCAtIGlmIGFueSAnCisgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAnICAgICAgb3BlcmF0aW9ucyBmYWlsLCB0aGUgZW50aXJlIHNvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbCAoYW5kICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgICAgIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAic29ydCgpIiBhY2NlcHRzIHR3byBhcmd1bWVudHMgdGhhdCBjYW4gb25seSBiZSBwYXNzZWQgYnlcbicKKyAgICAgICAgICAgICAnICAgICAga2V5d29yZCAoa2V5d29yZC1vbmx5IGFyZ3VtZW50cyk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAnICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciAnCisgICAgICAgICAgICAgJ2V4YW1wbGUsXG4nCisgICAgICAgICAgICAgJyAgICAgICJrZXk9c3RyLmxvd2VyIikuIFRoZSBrZXkgY29ycmVzcG9uZGluZyB0byBlYWNoIGl0ZW0gaW4gJworICAgICAgICAgICAgICd0aGUgbGlzdFxuJworICAgICAgICAgICAgICcgICAgICBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nICcKKyAgICAgICAgICAgICAncHJvY2Vzcy5cbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgIk5vbmUiIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgJworICAgICAgICAgICAgICdzb3J0ZWRcbicKKyAgICAgICAgICAgICAnICAgICAgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlIGtleSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSAiZnVuY3Rvb2xzLmNtcF90b19rZXkoKSIgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gJworICAgICAgICAgICAgICdjb252ZXJ0IGFcbicKKyAgICAgICAgICAgICAnICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvICJUcnVlIiwgdGhlbiB0aGUgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJyAgICAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2YgJworICAgICAgICAgICAgICdzcGFjZVxuJworICAgICAgICAgICAgICcgICAgICB3aGVuIHNvcnRpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0ICcKKyAgICAgICAgICAgICAnb3BlcmF0ZXNcbicKKyAgICAgICAgICAgICAnICAgICAgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnKHVzZVxuJworICAgICAgICAgICAgICcgICAgICAic29ydGVkKCkiIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCAnCisgICAgICAgICAgICAgJ2luc3RhbmNlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSAic29ydCgpIiBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICAgICBzdGFibGUgaWYgaXQgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZSByZWxhdGl2ZSBvcmRlciAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICAgIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciAnCisgICAgICAgICAgICAgJ3NvcnRpbmcgaW5cbicKKyAgICAgICAgICAgICAnICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5ICcKKyAgICAgICAgICAgICAnc2FsYXJ5XG4nCisgICAgICAgICAgICAgJyAgICAgIGdyYWRlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nICcKKyAgICAgICAgICAgICAnc29ydGVkLFxuJworICAgICAgICAgICAgICcgICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSAnCisgICAgICAgICAgICAgJ2xpc3QgaXNcbicKKyAgICAgICAgICAgICAnICAgICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0ICcKKyAgICAgICAgICAgICAnYXBwZWFyXG4nCisgICAgICAgICAgICAgJyAgICAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgIlZhbHVlRXJyb3IiIGlmIGl0IGNhbiAnCisgICAgICAgICAgICAgJ2RldGVjdFxuJworICAgICAgICAgICAgICcgICAgICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUdXBsZXNcbicKKyAgICAgICAgICAgICAnPT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlICcKKyAgICAgICAgICAgICAnY29sbGVjdGlvbnMgb2ZcbicKKyAgICAgICAgICAgICAnaGV0ZXJvZ2VuZW91cyBkYXRhIChzdWNoIGFzIHRoZSAyLXR1cGxlcyBwcm9kdWNlZCBieSB0aGUgJworICAgICAgICAgICAgICciZW51bWVyYXRlKCkiXG4nCisgICAgICAgICAgICAgJ2J1aWx0LWluKS4gVHVwbGVzIGFyZSBhbHNvIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGltbXV0YWJsZSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ29mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nIHN0b3JhZ2UgaW4gYSAnCisgICAgICAgICAgICAgJyJzZXQiIG9yXG4nCisgICAgICAgICAgICAgJyJkaWN0IiBpbnN0YW5jZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbGFzcyB0dXBsZShbaXRlcmFibGVdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIHBhaXIgb2YgcGFyZW50aGVzZXMgdG8gZGVub3RlIHRoZSBlbXB0eSB0dXBsZTogJworICAgICAgICAgICAgICciKCkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgdHJhaWxpbmcgY29tbWEgZm9yIGEgc2luZ2xldG9uIHR1cGxlOiAiYSwiIG9yICcKKyAgICAgICAgICAgICAnIihhLCkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6ICJhLCBiLCBjIiBvciAiKGEsIGIsIGMpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyB0aGUgInR1cGxlKCkiIGJ1aWx0LWluOiAidHVwbGUoKSIgb3IgJworICAgICAgICAgICAgICcidHVwbGUoaXRlcmFibGUpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgJworICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAiICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgIgorICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gJworICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICcgICBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSB0dXBsZSwgaXQgaXMgcmV0dXJuZWRcbicKKyAgICAgICAgICAgICAnICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgInR1cGxlKFwnYWJjXCcpIiByZXR1cm5zICIoXCdhXCcsICcKKyAgICAgICAgICAgICAnXCdiXCcsIFwnY1wnKSJcbicKKyAgICAgICAgICAgICAnICAgYW5kICJ0dXBsZSggWzEsIDIsIDNdICkiIHJldHVybnMgIigxLCAyLCAzKSIuIElmIG5vIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLCAiKCkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgcGFyZW50aGVzZXMuIFRoZSBwYXJlbnRoZXNlcyBhcmUgb3B0aW9uYWwsIGV4Y2VwdCBpbiB0aGUgJworICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICcgICB0dXBsZSBjYXNlLCBvciB3aGVuIHRoZXkgYXJlIG5lZWRlZCB0byBhdm9pZCBzeW50YWN0aWMgJworICAgICAgICAgICAgICdhbWJpZ3VpdHkuXG4nCisgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlLCAiZihhLCBiLCBjKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgJworICAgICAgICAgICAgICdhcmd1bWVudHMsXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlICJmKChhLCBiLCBjKSkiIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgMy10dXBsZSBhcyB0aGUgJworICAgICAgICAgICAgICdzb2xlXG4nCisgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlIGNvbW1vbiBzZXF1ZW5jZSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRm9yIGhldGVyb2dlbmVvdXMgY29sbGVjdGlvbnMgb2YgZGF0YSB3aGVyZSBhY2Nlc3MgYnkgbmFtZSBpcyAnCisgICAgICAgICAgICAgJ2NsZWFyZXJcbicKKyAgICAgICAgICAgICAndGhhbiBhY2Nlc3MgYnkgaW5kZXgsICJjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkiIG1heSBiZSBhIG1vcmVcbicKKyAgICAgICAgICAgICAnYXBwcm9wcmlhdGUgY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1Jhbmdlc1xuJworICAgICAgICAgICAgICc9PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAicmFuZ2UiIHR5cGUgcmVwcmVzZW50cyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugb2YgbnVtYmVycyBhbmQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdjb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluICJmb3IiICcKKyAgICAgICAgICAgICAnbG9vcHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbGFzcyByYW5nZShzdG9wKVxuJworICAgICAgICAgICAgICdjbGFzcyByYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAnCisgICAgICAgICAgICAgJyhlaXRoZXJcbicKKyAgICAgICAgICAgICAnICAgYnVpbHQtaW4gImludCIgb3IgYW55IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlICJfX2luZGV4X18iXG4nCisgICAgICAgICAgICAgJyAgIHNwZWNpYWwgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgJworICAgICAgICAgICAgICdkZWZhdWx0cyB0b1xuJworICAgICAgICAgICAgICcgICAiMSIuIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvICIwIi4gJworICAgICAgICAgICAgICdJZlxuJworICAgICAgICAgICAgICcgICAqc3RlcCogaXMgemVybywgIlZhbHVlRXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgInIiIGFyZSAnCisgICAgICAgICAgICAgJ2RldGVybWluZWRcbicKKyAgICAgICAgICAgICAnICAgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIgd2hlcmUgImkgPj0gMCIgYW5kICcKKyAgICAgICAgICAgICAnInJbaV0gPFxuJworICAgICAgICAgICAgICcgICBzdG9wIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbicKKyAgICAgICAgICAgICAnICAgZGV0ZXJtaW5lZCBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiwgYnV0IHRoZVxuJworICAgICAgICAgICAgICcgICBjb25zdHJhaW50cyBhcmUgImkgPj0gMCIgYW5kICJyW2ldID4gc3RvcCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBBIHJhbmdlIG9iamVjdCB3aWxsIGJlIGVtcHR5IGlmICJyWzBdIiBkb2VzIG5vdCBtZWV0IHRoZSAnCisgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgJyAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICcgICBpbnRlcnByZXRlZCBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieVxuJworICAgICAgICAgICAgICcgICB0aGUgcG9zaXRpdmUgaW5kaWNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJyAgIHBlcm1pdHRlZCBidXQgc29tZSBmZWF0dXJlcyAoc3VjaCBhcyAibGVuKCkiKSBtYXkgcmFpc2VcbicKKyAgICAgICAgICAgICAnICAgIk92ZXJmbG93RXJyb3IiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmFuZ2UgZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgxMCkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDEwLCAzKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIDMsIDYsIDldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgLTEsIC0yLCAtMywgLTQsIC01LCAtNiwgLTcsIC04LCAtOV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFtdXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDApKVxuJworICAgICAgICAgICAgICcgICAgICBbXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmFuZ2VzIGltcGxlbWVudCBhbGwgb2YgdGhlIGNvbW1vbiBzZXF1ZW5jZSBvcGVyYXRpb25zICcKKyAgICAgICAgICAgICAnZXhjZXB0XG4nCisgICAgICAgICAgICAgJyAgIGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlICcKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICcgICBjYW4gb25seSByZXByZXNlbnQgc2VxdWVuY2VzIHRoYXQgZm9sbG93IGEgc3RyaWN0IHBhdHRlcm4gJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0ICcKKyAgICAgICAgICAgICAncGF0dGVybikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzdGFydFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RhcnQqIHBhcmFtZXRlciAob3IgIjAiIGlmIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlciB3YXNcbicKKyAgICAgICAgICAgICAnICAgICAgbm90IHN1cHBsaWVkKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc3RvcFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RvcCogcGFyYW1ldGVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzdGVwXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yICIxIiBpZiB0aGUgcGFyYW1ldGVyICcKKyAgICAgICAgICAgICAnd2FzXG4nCisgICAgICAgICAgICAgJyAgICAgIG5vdCBzdXBwbGllZClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBhZHZhbnRhZ2Ugb2YgdGhlICJyYW5nZSIgdHlwZSBvdmVyIGEgcmVndWxhciAibGlzdCIgb3IgJworICAgICAgICAgICAgICcidHVwbGUiIGlzXG4nCisgICAgICAgICAgICAgJ3RoYXQgYSAicmFuZ2UiIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbCkgYW1vdW50ICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnbWVtb3J5LCBubyBtYXR0ZXIgdGhlIHNpemUgb2YgdGhlIHJhbmdlIGl0IHJlcHJlc2VudHMgKGFzIGl0ICcKKyAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICdzdG9yZXMgdGhlICJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIHZhbHVlcywgY2FsY3VsYXRpbmcgJworICAgICAgICAgICAgICdpbmRpdmlkdWFsXG4nCisgICAgICAgICAgICAgJ2l0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1JhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSAiY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlIiBBQkMsIGFuZFxuJworICAgICAgICAgICAgICdwcm92aWRlIGZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggJworICAgICAgICAgICAgICdsb29rdXAsXG4nCisgICAgICAgICAgICAgJ3NsaWNpbmcgYW5kIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSBTZXF1ZW5jZSBUeXBlcyAtLS0gJworICAgICAgICAgICAgICdsaXN0LFxuJworICAgICAgICAgICAgICd0dXBsZSwgcmFuZ2UpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnPj4+IHIgPSByYW5nZSgwLCAyMCwgMilcbicKKyAgICAgICAgICAgICAnPj4+IHJcbicKKyAgICAgICAgICAgICAncmFuZ2UoMCwgMjAsIDIpXG4nCisgICAgICAgICAgICAgJz4+PiAxMSBpbiByXG4nCisgICAgICAgICAgICAgJ0ZhbHNlXG4nCisgICAgICAgICAgICAgJz4+PiAxMCBpbiByXG4nCisgICAgICAgICAgICAgJ1RydWVcbicKKyAgICAgICAgICAgICAnPj4+IHIuaW5kZXgoMTApXG4nCisgICAgICAgICAgICAgJzVcbicKKyAgICAgICAgICAgICAnPj4+IHJbNV1cbicKKyAgICAgICAgICAgICAnMTBcbicKKyAgICAgICAgICAgICAnPj4+IHJbOjVdXG4nCisgICAgICAgICAgICAgJ3JhbmdlKDAsIDEwLCAyKVxuJworICAgICAgICAgICAgICc+Pj4gclstMV1cbicKKyAgICAgICAgICAgICAnMThcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1Rlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCAiPT0iIGFuZCAiIT0iIGNvbXBhcmVzICcKKyAgICAgICAgICAgICAndGhlbSBhc1xuJworICAgICAgICAgICAgICdzZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZiAnCisgICAgICAgICAgICAgJ3RoZXlcbicKKyAgICAgICAgICAgICAncmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlICcKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICd0aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgInN0YXJ0IiwgInN0b3AiIGFuZCAnCisgICAgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSAicmFuZ2UoMCkgPT0gcmFuZ2UoMiwgMSwgMykiIG9yICcKKyAgICAgICAgICAgICAnInJhbmdlKDAsIDMsXG4nCisgICAgICAgICAgICAgJzIpID09IHJhbmdlKDAsIDQsIDIpIi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCAnCisgICAgICAgICAgICAgJ3NsaWNpbmdcbicKKyAgICAgICAgICAgICAnYW5kIG5lZ2F0aXZlIGluZGljZXMuIFRlc3QgImludCIgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiAnCisgICAgICAgICAgICAgJ2NvbnN0YW50XG4nCisgICAgICAgICAgICAgJ3RpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlICIKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICdiYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mICcKKyAgICAgICAgICAgICAnY29tcGFyaW5nXG4nCisgICAgICAgICAgICAgJ2Jhc2VkIG9uIG9iamVjdCBpZGVudGl0eSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiBhdHRyaWJ1dGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICogVGhlIGxpbnNwYWNlIHJlY2lwZSBzaG93cyBob3cgdG8gaW1wbGVtZW50IGEgbGF6eSB2ZXJzaW9uICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgIHJhbmdlIHRoYXQgc3VpdGFibGUgZm9yIGZsb2F0aW5nIHBvaW50IGFwcGxpY2F0aW9ucy5cbicsCisgJ3R5cGVzc2VxLW11dGFibGUnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uICcKKyAgICAgICAgICAgICAgICAgICAgICdtdXRhYmxlIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdwcm92aWRlZCB0byBtYWtlXG4nCisgICAgICAgICAgICAgICAgICAgICAnaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiAnCisgICAgICAgICAgICAgICAgICAgICAnY3VzdG9tIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGUsICp0KiBpcyBhbnlcbicKKyAgICAgICAgICAgICAgICAgICAgICdpdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICAgJ21lZXRzIGFueSB0eXBlIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgICAgICciYnl0ZWFycmF5IiBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggJworICAgICAgICAgICAgICAgICAgICAgJzw9IDI1NSIpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1Jlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgJworICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJyp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogJworICAgICAgICAgICAgICAgICAgICAgJ3RvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICcKKyAgICAgICAgICAgICAgICAgICAgICcqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsICcKKyAgICAgICAgICAgICAgICAgICAgICdzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgJworICAgICAgICAgICAgICAgICAgICAgJ2NvcHkgb2YgInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICcic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5leHRlbmQodCkiIG9yICJzICs9IHQiICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChmb3IgdGhlIG1vc3QgJworICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgdGhlIHNhbWUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldICcKKyAgICAgICAgICAgICAgICAgICAgICc9IHQiKSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qICcKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqICcKKyAgICAgICAgICAgICAgICAgICAgICdhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogJworICAgICAgICAgICAgICAgICAgICAgJyhzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9ICcKKyAgICAgICAgICAgICAgICAgICAgICdbeF0iKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAnCisgICAgICAgICAgICAgICAgICAgICAnKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgICAnKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlICJzW2ldID09ICcKKyAgICAgICAgICAgICAgICAgICAgICd4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5yZXZlcnNlKCkiICAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgJworICAgICAgICAgICAgICAgICAgICAgJypzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ3BsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdieSBkZWZhdWx0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICczLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAnKnMqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBlY29ub215IG9mIHNwYWNlIHdoZW4gcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyAnCisgICAgICAgICAgICAgICAgICAgICAncmVtaW5kIHVzZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgcmV2ZXJzZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc1LiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgJworICAgICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAiICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0ICIKKyAgICAgICAgICAgICAgICAgICAgICdzbGljaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoc3VjaCBhcyAiZGljdCIgYW5kICJzZXQiKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19pbmRleF9fKCkiLiAgWmVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIG9mICpuKiBjbGVhciAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgJworICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZWQgbXVsdGlwbGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyIENvbW1vbiBTZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9ucy5cbicsCisgJ3VuYXJ5JzogJ1xuJworICAgICAgICAgICdVbmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbGwgdW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICdwcmlvcml0eTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHVfZXhwciA6Oj0gcG93ZXIgfCAiLSIgdV9leHByIHwgIisiIHVfZXhwciB8ICJ+IiB1X2V4cHJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAiLSIgKG1pbnVzKSBvcGVyYXRvciB5aWVsZHMgdGhlIG5lZ2F0aW9uIG9mIGl0cyBudW1lcmljXG4nCisgICAgICAgICAgJ2FyZ3VtZW50LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHVuYXJ5ICIrIiAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50ICcKKyAgICAgICAgICAndW5jaGFuZ2VkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHVuYXJ5ICJ+IiAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mICcKKyAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgJ2ludGVnZXIgYXJndW1lbnQuICBUaGUgYml0d2lzZSBpbnZlcnNpb24gb2YgIngiIGlzIGRlZmluZWQgYXNcbicKKyAgICAgICAgICAnIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0luIGFsbCB0aHJlZSBjYXNlcywgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIHByb3BlciB0eXBlLCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCisgJ3doaWxlJzogJ1xuJworICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbicKKyAgICAgICAgICAnZXhwcmVzc2lvbiBpcyB0cnVlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2ZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ3RpbWVcbicKKyAgICAgICAgICAnaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzICcKKyAgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICAnYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSAnCisgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyAnCisgICAgICAgICAgJ2JhY2tcbicKKyAgICAgICAgICAndG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCisgJ3dpdGgnOiAnXG4nCisgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxuJworICAgICAgICAgJ21ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gV2l0aCBTdGF0ZW1lbnRcbicKKyAgICAgICAgICdDb250ZXh0IE1hbmFnZXJzKS4gVGhpcyBhbGxvd3MgY29tbW9uICJ0cnkiLi4uImV4Y2VwdCIuLi4iZmluYWxseSJcbicKKyAgICAgICAgICd1c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4nCisgICAgICAgICAnICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgZXhlY3V0aW9uIG9mIHRoZSAid2l0aCIgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuJworICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICJ3aXRoX2l0ZW0iKVxuJworICAgICAgICAgJyAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuJworICAgICAgICAgJyAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbicKKyAgICAgICAgICcgICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzICcKKyAgICAgICAgICdiZVxuJworICAgICAgICAgJyAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuJworICAgICAgICAgJyAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbicKKyAgICAgICAgICcgICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbicKKyAgICAgICAgICcgICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4nCisgICAgICAgICAnICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICcgICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiAnCisgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICcgICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAncmVyYWlzZWQuXG4nCisgICAgICAgICAnICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbicKKyAgICAgICAgICcgICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICJ3aXRoIlxuJworICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgJworICAgICAgICAgJ3RoZVxuJworICAgICAgICAgJyAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uICcKKyAgICAgICAgICdwcm9jZWVkc1xuJworICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbicKKyAgICAgICAgICdtdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgc3VpdGVcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICcgICAgICAgd2l0aCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgICAgIHN1aXRlXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gJworICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJywKKyAneWllbGQnOiAnXG4nCisgICAgICAgICAgJ1RoZSAieWllbGQiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgInlpZWxkIiBzdGF0ZW1lbnQgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gYSB5aWVsZCAnCisgICAgICAgICAgJ2V4cHJlc3Npb24uXG4nCisgICAgICAgICAgJ1RoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgcGFyZW50aGVzZXMgdGhhdCB3b3VsZFxuJworICAgICAgICAgICdvdGhlcndpc2UgYmUgcmVxdWlyZWQgaW4gdGhlIGVxdWl2YWxlbnQgeWllbGQgZXhwcmVzc2lvbiAnCisgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAnRm9yIGV4YW1wbGUsIHRoZSB5aWVsZCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB5aWVsZCA8ZXhwcj5cbicKKyAgICAgICAgICAnICAgeWllbGQgZnJvbSA8ZXhwcj5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2FyZSBlcXVpdmFsZW50IHRvIHRoZSB5aWVsZCBleHByZXNzaW9uIHN0YXRlbWVudHNcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICh5aWVsZCA8ZXhwcj4pXG4nCisgICAgICAgICAgJyAgICh5aWVsZCBmcm9tIDxleHByPilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1lpZWxkIGV4cHJlc3Npb25zIGFuZCBzdGF0ZW1lbnRzIGFyZSBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhXG4nCisgICAgICAgICAgJypnZW5lcmF0b3IqIGZ1bmN0aW9uLCBhbmQgYXJlIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgJworICAgICAgICAgICdnZW5lcmF0b3JcbicKKyAgICAgICAgICAnZnVuY3Rpb24uICBVc2luZyB5aWVsZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0byAnCisgICAgICAgICAgJ2NhdXNlXG4nCisgICAgICAgICAgJ3RoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuJworICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSBZaWVsZCAnCisgICAgICAgICAgJ2V4cHJlc3Npb25zXG4nCisgICAgICAgICAgJ3NlY3Rpb24uXG4nfQpkaWZmIC0tZ2l0IGEvTGliL3JhbmRvbS5weSBiL0xpYi9yYW5kb20ucHkKaW5kZXggNGVmYmIwYS4uZWY4Y2IwNSAxMDA2NDQKLS0tIGEvTGliL3JhbmRvbS5weQorKysgYi9MaWIvcmFuZG9tLnB5CkBAIC04LDYgKzgsNyBAQAogICAgIC0tLS0tLS0tLQogICAgICAgICAgICBwaWNrIHJhbmRvbSBlbGVtZW50CiAgICAgICAgICAgIHBpY2sgcmFuZG9tIHNhbXBsZQorICAgICAgICAgICBwaWNrIHdlaWdodGVkIHJhbmRvbSBzYW1wbGUKICAgICAgICAgICAgZ2VuZXJhdGUgcmFuZG9tIHBlcm11dGF0aW9uCiAKICAgICBkaXN0cmlidXRpb25zIG9uIHRoZSByZWFsIGxpbmU6CkBAIC00MywxMiArNDQsMTQgQEAKIGZyb20gb3MgaW1wb3J0IHVyYW5kb20gYXMgX3VyYW5kb20KIGZyb20gX2NvbGxlY3Rpb25zX2FiYyBpbXBvcnQgU2V0IGFzIF9TZXQsIFNlcXVlbmNlIGFzIF9TZXF1ZW5jZQogZnJvbSBoYXNobGliIGltcG9ydCBzaGE1MTIgYXMgX3NoYTUxMgoraW1wb3J0IGl0ZXJ0b29scyBhcyBfaXRlcnRvb2xzCitpbXBvcnQgYmlzZWN0IGFzIF9iaXNlY3QKIAogX19hbGxfXyA9IFsiUmFuZG9tIiwic2VlZCIsInJhbmRvbSIsInVuaWZvcm0iLCJyYW5kaW50IiwiY2hvaWNlIiwic2FtcGxlIiwKICAgICAgICAgICAgInJhbmRyYW5nZSIsInNodWZmbGUiLCJub3JtYWx2YXJpYXRlIiwibG9nbm9ybXZhcmlhdGUiLAogICAgICAgICAgICAiZXhwb3ZhcmlhdGUiLCJ2b25taXNlc3ZhcmlhdGUiLCJnYW1tYXZhcmlhdGUiLCJ0cmlhbmd1bGFyIiwKICAgICAgICAgICAgImdhdXNzIiwiYmV0YXZhcmlhdGUiLCJwYXJldG92YXJpYXRlIiwid2VpYnVsbHZhcmlhdGUiLAotICAgICAgICAgICAiZ2V0c3RhdGUiLCJzZXRzdGF0ZSIsICJnZXRyYW5kYml0cyIsCisgICAgICAgICAgICJnZXRzdGF0ZSIsInNldHN0YXRlIiwgImdldHJhbmRiaXRzIiwgImNob2ljZXMiLAogICAgICAgICAgICAiU3lzdGVtUmFuZG9tIl0KIAogTlZfTUFHSUNDT05TVCA9IDQgKiBfZXhwKC0wLjUpL19zcXJ0KDIuMCkKQEAgLTEwNSwxNSArMTA4LDYgQEAKIAogICAgICAgICAiIiIKIAotICAgICAgICBpZiBhIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBTZWVkIHdpdGggZW5vdWdoIGJ5dGVzIHRvIHNwYW4gdGhlIDE5OTM3IGJpdAotICAgICAgICAgICAgICAgICMgc3RhdGUgc3BhY2UgZm9yIHRoZSBNZXJzZW5uZSBUd2lzdGVyCi0gICAgICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKF91cmFuZG9tKDI1MDApLCAnYmlnJykKLSAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgICAgIGltcG9ydCB0aW1lCi0gICAgICAgICAgICAgICAgYSA9IGludCh0aW1lLnRpbWUoKSAqIDI1NikgIyB1c2UgZnJhY3Rpb25hbCBzZWNvbmRzCi0KICAgICAgICAgaWYgdmVyc2lvbiA9PSAxIGFuZCBpc2luc3RhbmNlKGEsIChzdHIsIGJ5dGVzKSk6CiAgICAgICAgICAgICB4ID0gb3JkKGFbMF0pIDw8IDcgaWYgYSBlbHNlIDAKICAgICAgICAgICAgIGZvciBjIGluIGE6CkBAIC0xMjEsMTIgKzExNSwxMSBAQAogICAgICAgICAgICAgeCBePSBsZW4oYSkKICAgICAgICAgICAgIGEgPSAtMiBpZiB4ID09IC0xIGVsc2UgeAogCi0gICAgICAgIGlmIHZlcnNpb24gPT0gMjoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgKHN0ciwgYnl0ZXMsIGJ5dGVhcnJheSkpOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAgYSA9IGEuZW5jb2RlKCkKLSAgICAgICAgICAgICAgICBhICs9IF9zaGE1MTIoYSkuZGlnZXN0KCkKLSAgICAgICAgICAgICAgICBhID0gaW50LmZyb21fYnl0ZXMoYSwgJ2JpZycpCisgICAgICAgIGlmIHZlcnNpb24gPT0gMiBhbmQgaXNpbnN0YW5jZShhLCAoc3RyLCBieXRlcywgYnl0ZWFycmF5KSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIHN0cik6CisgICAgICAgICAgICAgICAgYSA9IGEuZW5jb2RlKCkKKyAgICAgICAgICAgIGEgKz0gX3NoYTUxMihhKS5kaWdlc3QoKQorICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKGEsICdiaWcnKQogCiAgICAgICAgIHN1cGVyKCkuc2VlZChhKQogICAgICAgICBzZWxmLmdhdXNzX25leHQgPSBOb25lCkBAIC0zNDQsNiArMzM3LDI4IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gcG9wdWxhdGlvbltqXQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgY2hvaWNlcyhzZWxmLCBwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUsIGs9MSk6CisgICAgICAgICIiIlJldHVybiBhIGsgc2l6ZWQgbGlzdCBvZiBwb3B1bGF0aW9uIGVsZW1lbnRzIGNob3NlbiB3aXRoIHJlcGxhY2VtZW50LgorCisgICAgICAgIElmIHRoZSByZWxhdGl2ZSB3ZWlnaHRzIG9yIGN1bXVsYXRpdmUgd2VpZ2h0cyBhcmUgbm90IHNwZWNpZmllZCwKKyAgICAgICAgdGhlIHNlbGVjdGlvbnMgYXJlIG1hZGUgd2l0aCBlcXVhbCBwcm9iYWJpbGl0eS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgY3VtX3dlaWdodHMgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHdlaWdodHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjaG9pY2UgPSBzZWxmLmNob2ljZQorICAgICAgICAgICAgICAgIHJldHVybiBbY2hvaWNlKHBvcHVsYXRpb24pIGZvciBpIGluIHJhbmdlKGspXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjdW1fd2VpZ2h0cyA9IGxpc3QoX2l0ZXJ0b29scy5hY2N1bXVsYXRlKHdlaWdodHMpKQorICAgICAgICBlbGlmIHdlaWdodHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0Nhbm5vdCBzcGVjaWZ5IGJvdGggd2VpZ2h0cyBhbmQgY3VtdWxhdGl2ZV93ZWlnaHRzJykKKyAgICAgICAgaWYgbGVuKGN1bV93ZWlnaHRzKSAhPSBsZW4ocG9wdWxhdGlvbik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUaGUgbnVtYmVyIG9mIHdlaWdodHMgZG9lcyBub3QgbWF0Y2ggdGhlIHBvcHVsYXRpb24nKQorICAgICAgICBiaXNlY3QgPSBfYmlzZWN0LmJpc2VjdAorICAgICAgICByYW5kb20gPSBzZWxmLnJhbmRvbQorICAgICAgICB0b3RhbCA9IGN1bV93ZWlnaHRzWy0xXQorICAgICAgICByZXR1cm4gW3BvcHVsYXRpb25bYmlzZWN0KGN1bV93ZWlnaHRzLCByYW5kb20oKSAqIHRvdGFsKV0gZm9yIGkgaW4gcmFuZ2UoayldCisKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tIHJlYWwtdmFsdWVkIGRpc3RyaWJ1dGlvbnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gdW5pZm9ybSBkaXN0cmlidXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjE1LDExICs2MzAsMTEgQEAKIAogICAgICAgICAjIFRoaXMgdmVyc2lvbiBkdWUgdG8gSmFubmUgU2lua2tvbmVuLCBhbmQgbWF0Y2hlcyBhbGwgdGhlIHN0ZAogICAgICAgICAjIHRleHRzIChlLmcuLCBLbnV0aCBWb2wgMiBFZCAzIHBnIDEzNCAidGhlIGJldGEgZGlzdHJpYnV0aW9uIikuCi0gICAgICAgIHkgPSBzZWxmLmdhbW1hdmFyaWF0ZShhbHBoYSwgMS4pCisgICAgICAgIHkgPSBzZWxmLmdhbW1hdmFyaWF0ZShhbHBoYSwgMS4wKQogICAgICAgICBpZiB5ID09IDA6CiAgICAgICAgICAgICByZXR1cm4gMC4wCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4geSAvICh5ICsgc2VsZi5nYW1tYXZhcmlhdGUoYmV0YSwgMS4pKQorICAgICAgICAgICAgcmV0dXJuIHkgLyAoeSArIHNlbGYuZ2FtbWF2YXJpYXRlKGJldGEsIDEuMCkpCiAKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tIFBhcmV0byAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC03MzQsNiArNzQ5LDcgQEAKIHJhbmRyYW5nZSA9IF9pbnN0LnJhbmRyYW5nZQogc2FtcGxlID0gX2luc3Quc2FtcGxlCiBzaHVmZmxlID0gX2luc3Quc2h1ZmZsZQorY2hvaWNlcyA9IF9pbnN0LmNob2ljZXMKIG5vcm1hbHZhcmlhdGUgPSBfaW5zdC5ub3JtYWx2YXJpYXRlCiBsb2dub3JtdmFyaWF0ZSA9IF9pbnN0LmxvZ25vcm12YXJpYXRlCiBleHBvdmFyaWF0ZSA9IF9pbnN0LmV4cG92YXJpYXRlCmRpZmYgLS1naXQgYS9MaWIvcmUucHkgYi9MaWIvcmUucHkKaW5kZXggZGRlODkwMS4uZDMyMWNmZiAxMDA2NDQKLS0tIGEvTGliL3JlLnB5CisrKyBiL0xpYi9yZS5weQpAQCAtMTE5LDkgKzExOSwxMCBAQAogCiAiIiIKIAotaW1wb3J0IHN5cworaW1wb3J0IGVudW0KIGltcG9ydCBzcmVfY29tcGlsZQogaW1wb3J0IHNyZV9wYXJzZQoraW1wb3J0IGZ1bmN0b29scwogdHJ5OgogICAgIGltcG9ydCBfbG9jYWxlCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0xMzgsMTggKzEzOSwyNiBAQAogCiBfX3ZlcnNpb25fXyA9ICIyLjIuMSIKIAotIyBmbGFncwotQSA9IEFTQ0lJID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfQVNDSUkgIyBhc3N1bWUgYXNjaWkgImxvY2FsZSIKLUkgPSBJR05PUkVDQVNFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfSUdOT1JFQ0FTRSAjIGlnbm9yZSBjYXNlCi1MID0gTE9DQUxFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTE9DQUxFICMgYXNzdW1lIGN1cnJlbnQgOC1iaXQgbG9jYWxlCi1VID0gVU5JQ09ERSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1VOSUNPREUgIyBhc3N1bWUgdW5pY29kZSAibG9jYWxlIgotTSA9IE1VTFRJTElORSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX01VTFRJTElORSAjIG1ha2UgYW5jaG9ycyBsb29rIGZvciBuZXdsaW5lCi1TID0gRE9UQUxMID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfRE9UQUxMICMgbWFrZSBkb3QgbWF0Y2ggbmV3bGluZQotWCA9IFZFUkJPU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19WRVJCT1NFICMgaWdub3JlIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCi0KLSMgc3JlIGV4dGVuc2lvbnMgKGV4cGVyaW1lbnRhbCwgZG9uJ3QgcmVseSBvbiB0aGVzZSkKLVQgPSBURU1QTEFURSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1RFTVBMQVRFICMgZGlzYWJsZSBiYWNrdHJhY2tpbmcKLURFQlVHID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfREVCVUcgIyBkdW1wIHBhdHRlcm4gYWZ0ZXIgY29tcGlsYXRpb24KK2NsYXNzIFJlZ2V4RmxhZyhlbnVtLkludEZsYWcpOgorICAgIEFTQ0lJID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfQVNDSUkgIyBhc3N1bWUgYXNjaWkgImxvY2FsZSIKKyAgICBJR05PUkVDQVNFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfSUdOT1JFQ0FTRSAjIGlnbm9yZSBjYXNlCisgICAgTE9DQUxFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTE9DQUxFICMgYXNzdW1lIGN1cnJlbnQgOC1iaXQgbG9jYWxlCisgICAgVU5JQ09ERSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1VOSUNPREUgIyBhc3N1bWUgdW5pY29kZSAibG9jYWxlIgorICAgIE1VTFRJTElORSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX01VTFRJTElORSAjIG1ha2UgYW5jaG9ycyBsb29rIGZvciBuZXdsaW5lCisgICAgRE9UQUxMID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfRE9UQUxMICMgbWFrZSBkb3QgbWF0Y2ggbmV3bGluZQorICAgIFZFUkJPU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19WRVJCT1NFICMgaWdub3JlIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCisgICAgQSA9IEFTQ0lJCisgICAgSSA9IElHTk9SRUNBU0UKKyAgICBMID0gTE9DQUxFCisgICAgVSA9IFVOSUNPREUKKyAgICBNID0gTVVMVElMSU5FCisgICAgUyA9IERPVEFMTAorICAgIFggPSBWRVJCT1NFCisgICAgIyBzcmUgZXh0ZW5zaW9ucyAoZXhwZXJpbWVudGFsLCBkb24ndCByZWx5IG9uIHRoZXNlKQorICAgIFRFTVBMQVRFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVEVNUExBVEUgIyBkaXNhYmxlIGJhY2t0cmFja2luZworICAgIFQgPSBURU1QTEFURQorICAgIERFQlVHID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfREVCVUcgIyBkdW1wIHBhdHRlcm4gYWZ0ZXIgY29tcGlsYXRpb24KK2dsb2JhbHMoKS51cGRhdGUoUmVnZXhGbGFnLl9fbWVtYmVyc19fKQogCiAjIHNyZSBleGNlcHRpb24KIGVycm9yID0gc3JlX2NvbXBpbGUuZXJyb3IKQEAgLTIyNiw3ICsyMzUsNyBAQAogZGVmIHB1cmdlKCk6CiAgICAgIkNsZWFyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGVzIgogICAgIF9jYWNoZS5jbGVhcigpCi0gICAgX2NhY2hlX3JlcGwuY2xlYXIoKQorICAgIF9jb21waWxlX3JlcGwuY2FjaGVfY2xlYXIoKQogCiBkZWYgdGVtcGxhdGUocGF0dGVybiwgZmxhZ3M9MCk6CiAgICAgIkNvbXBpbGUgYSB0ZW1wbGF0ZSBwYXR0ZXJuLCByZXR1cm5pbmcgYSBwYXR0ZXJuIG9iamVjdCIKQEAgLTI3MCw3ICsyNzksNiBAQAogIyBpbnRlcm5hbHMKIAogX2NhY2hlID0ge30KLV9jYWNoZV9yZXBsID0ge30KIAogX3BhdHRlcm5fdHlwZSA9IHR5cGUoc3JlX2NvbXBpbGUuY29tcGlsZSgiIiwgMCkpCiAKQEAgLTMwMywxNyArMzExLDEwIEBACiAgICAgICAgIF9jYWNoZVt0eXBlKHBhdHRlcm4pLCBwYXR0ZXJuLCBmbGFnc10gPSBwLCBsb2MKICAgICByZXR1cm4gcAogCitAZnVuY3Rvb2xzLmxydV9jYWNoZShfTUFYQ0FDSEUpCiBkZWYgX2NvbXBpbGVfcmVwbChyZXBsLCBwYXR0ZXJuKToKICAgICAjIGludGVybmFsOiBjb21waWxlIHJlcGxhY2VtZW50IHBhdHRlcm4KLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfY2FjaGVfcmVwbFtyZXBsLCBwYXR0ZXJuXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIHAgPSBzcmVfcGFyc2UucGFyc2VfdGVtcGxhdGUocmVwbCwgcGF0dGVybikKLSAgICBpZiBsZW4oX2NhY2hlX3JlcGwpID49IF9NQVhDQUNIRToKLSAgICAgICAgX2NhY2hlX3JlcGwuY2xlYXIoKQotICAgIF9jYWNoZV9yZXBsW3JlcGwsIHBhdHRlcm5dID0gcAotICAgIHJldHVybiBwCisgICAgcmV0dXJuIHNyZV9wYXJzZS5wYXJzZV90ZW1wbGF0ZShyZXBsLCBwYXR0ZXJuKQogCiBkZWYgX2V4cGFuZChwYXR0ZXJuLCBtYXRjaCwgdGVtcGxhdGUpOgogICAgICMgaW50ZXJuYWw6IG1hdGNoLmV4cGFuZCBpbXBsZW1lbnRhdGlvbiBob29rCkBAIC0zNTMsNyArMzU0LDcgQEAKICAgICAgICAgZm9yIHBocmFzZSwgYWN0aW9uIGluIGxleGljb246CiAgICAgICAgICAgICBnaWQgPSBzLm9wZW5ncm91cCgpCiAgICAgICAgICAgICBwLmFwcGVuZChzcmVfcGFyc2UuU3ViUGF0dGVybihzLCBbCi0gICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChnaWQsIHNyZV9wYXJzZS5wYXJzZShwaHJhc2UsIGZsYWdzKSkpLAorICAgICAgICAgICAgICAgIChTVUJQQVRURVJOLCAoZ2lkLCAwLCAwLCBzcmVfcGFyc2UucGFyc2UocGhyYXNlLCBmbGFncykpKSwKICAgICAgICAgICAgICAgICBdKSkKICAgICAgICAgICAgIHMuY2xvc2Vncm91cChnaWQsIHBbLTFdKQogICAgICAgICBwID0gc3JlX3BhcnNlLlN1YlBhdHRlcm4ocywgWyhCUkFOQ0gsIChOb25lLCBwKSldKQpkaWZmIC0tZ2l0IGEvTGliL3JsY29tcGxldGVyLnB5IGIvTGliL3JsY29tcGxldGVyLnB5CmluZGV4IDQwMWE2MjYuLmJjYTRhN2IgMTAwNjQ0Ci0tLSBhL0xpYi9ybGNvbXBsZXRlci5weQorKysgYi9MaWIvcmxjb21wbGV0ZXIucHkKQEAgLTExMyw2ICsxMTMsMTIgQEAKICAgICAgICAgZm9yIHdvcmQgaW4ga2V5d29yZC5rd2xpc3Q6CiAgICAgICAgICAgICBpZiB3b3JkWzpuXSA9PSB0ZXh0OgogICAgICAgICAgICAgICAgIHNlZW4uYWRkKHdvcmQpCisgICAgICAgICAgICAgICAgaWYgd29yZCBpbiB7J2ZpbmFsbHknLCAndHJ5J306CisgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3JkICsgJzonCisgICAgICAgICAgICAgICAgZWxpZiB3b3JkIG5vdCBpbiB7J0ZhbHNlJywgJ05vbmUnLCAnVHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyZWFrJywgJ2NvbnRpbnVlJywgJ3Bhc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbHNlJ306CisgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3JkICsgJyAnCiAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQod29yZCkKICAgICAgICAgZm9yIG5zcGFjZSBpbiBbc2VsZi5uYW1lc3BhY2UsIGJ1aWx0aW5zLl9fZGljdF9fXToKICAgICAgICAgICAgIGZvciB3b3JkLCB2YWwgaW4gbnNwYWNlLml0ZW1zKCk6CkBAIC0xNTIsMTQgKzE1OCwzMCBAQAogICAgICAgICAgICAgd29yZHMudXBkYXRlKGdldF9jbGFzc19tZW1iZXJzKHRoaXNvYmplY3QuX19jbGFzc19fKSkKICAgICAgICAgbWF0Y2hlcyA9IFtdCiAgICAgICAgIG4gPSBsZW4oYXR0cikKLSAgICAgICAgZm9yIHdvcmQgaW4gd29yZHM6Ci0gICAgICAgICAgICBpZiB3b3JkWzpuXSA9PSBhdHRyOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgdmFsID0gZ2V0YXR0cih0aGlzb2JqZWN0LCB3b3JkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICAjIEV4Y2x1ZGUgcHJvcGVydGllcyB0aGF0IGFyZSBub3Qgc2V0Ci0gICAgICAgICAgICAgICAgd29yZCA9IHNlbGYuX2NhbGxhYmxlX3Bvc3RmaXgodmFsLCAiJXMuJXMiICUgKGV4cHIsIHdvcmQpKQotICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKHdvcmQpCisgICAgICAgIGlmIGF0dHIgPT0gJyc6CisgICAgICAgICAgICBub3ByZWZpeCA9ICdfJworICAgICAgICBlbGlmIGF0dHIgPT0gJ18nOgorICAgICAgICAgICAgbm9wcmVmaXggPSAnX18nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBub3ByZWZpeCA9IE5vbmUKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGZvciB3b3JkIGluIHdvcmRzOgorICAgICAgICAgICAgICAgIGlmICh3b3JkWzpuXSA9PSBhdHRyIGFuZAorICAgICAgICAgICAgICAgICAgICBub3QgKG5vcHJlZml4IGFuZCB3b3JkWzpuKzFdID09IG5vcHJlZml4KSk6CisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gIiVzLiVzIiAlIChleHByLCB3b3JkKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBnZXRhdHRyKHRoaXNvYmplY3QsIHdvcmQpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICAjIEluY2x1ZGUgZXZlbiBpZiBhdHRyaWJ1dGUgbm90IHNldAorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLl9jYWxsYWJsZV9wb3N0Zml4KHZhbCwgbWF0Y2gpCisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKG1hdGNoKQorICAgICAgICAgICAgaWYgbWF0Y2hlcyBvciBub3Qgbm9wcmVmaXg6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vcHJlZml4ID09ICdfJzoKKyAgICAgICAgICAgICAgICBub3ByZWZpeCA9ICdfXycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbm9wcmVmaXggPSBOb25lCiAgICAgICAgIG1hdGNoZXMuc29ydCgpCiAgICAgICAgIHJldHVybiBtYXRjaGVzCiAKZGlmZiAtLWdpdCBhL0xpYi9zY2hlZC5weSBiL0xpYi9zY2hlZC5weQppbmRleCBiNDc2NDhkLi5iZDdjMGYxIDEwMDY0NAotLS0gYS9MaWIvc2NoZWQucHkKKysrIGIvTGliL3NjaGVkLnB5CkBAIC00Niw2ICs0NiwxNyBAQAogICAgIGRlZiBfX2d0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+ICAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2dlX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+PSAoby50aW1lLCBvLnByaW9yaXR5KQogCitFdmVudC50aW1lLl9fZG9jX18gPSAoJycnTnVtZXJpYyB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQordGltZWZ1bmMgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci4nJycpCitFdmVudC5wcmlvcml0eS5fX2RvY19fID0gKCcnJ0V2ZW50cyBzY2hlZHVsZWQgZm9yIHRoZSBzYW1lIHRpbWUgd2lsbCBiZSBleGVjdXRlZAoraW4gdGhlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LicnJykKK0V2ZW50LmFjdGlvbi5fX2RvY19fID0gKCcnJ0V4ZWN1dGluZyB0aGUgZXZlbnQgbWVhbnMgZXhlY3V0aW5nCithY3Rpb24oKmFyZ3VtZW50LCAqKmt3YXJncyknJycpCitFdmVudC5hcmd1bWVudC5fX2RvY19fID0gKCcnJ2FyZ3VtZW50IGlzIGEgc2VxdWVuY2UgaG9sZGluZyB0aGUgcG9zaXRpb25hbAorYXJndW1lbnRzIGZvciB0aGUgYWN0aW9uLicnJykKK0V2ZW50Lmt3YXJncy5fX2RvY19fID0gKCcnJ2t3YXJncyBpcyBhIGRpY3Rpb25hcnkgaG9sZGluZyB0aGUga2V5d29yZAorYXJndW1lbnRzIGZvciB0aGUgYWN0aW9uLicnJykKKwogX3NlbnRpbmVsID0gb2JqZWN0KCkKIAogY2xhc3Mgc2NoZWR1bGVyOgpkaWZmIC0tZ2l0IGEvTGliL3NlY3JldHMucHkgYi9MaWIvc2VjcmV0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2ZhNDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3NlY3JldHMucHkKQEAgLTAsMCArMSw3MSBAQAorIiIiR2VuZXJhdGUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gbnVtYmVycyBzdWl0YWJsZSBmb3IKK21hbmFnaW5nIHNlY3JldHMgc3VjaCBhcyBhY2NvdW50IGF1dGhlbnRpY2F0aW9uLCB0b2tlbnMsIGFuZCBzaW1pbGFyLgorCitTZWUgUEVQIDUwNiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KK2h0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA1MDYvCisKKyIiIgorCitfX2FsbF9fID0gWydjaG9pY2UnLCAncmFuZGJlbG93JywgJ3JhbmRiaXRzJywgJ1N5c3RlbVJhbmRvbScsCisgICAgICAgICAgICd0b2tlbl9ieXRlcycsICd0b2tlbl9oZXgnLCAndG9rZW5fdXJsc2FmZScsCisgICAgICAgICAgICdjb21wYXJlX2RpZ2VzdCcsCisgICAgICAgICAgIF0KKworCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBvcworCitmcm9tIGhtYWMgaW1wb3J0IGNvbXBhcmVfZGlnZXN0Citmcm9tIHJhbmRvbSBpbXBvcnQgU3lzdGVtUmFuZG9tCisKK19zeXNyYW5kID0gU3lzdGVtUmFuZG9tKCkKKworcmFuZGJpdHMgPSBfc3lzcmFuZC5nZXRyYW5kYml0cworY2hvaWNlID0gX3N5c3JhbmQuY2hvaWNlCisKK2RlZiByYW5kYmVsb3coZXhjbHVzaXZlX3VwcGVyX2JvdW5kKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gaW50IGluIHRoZSByYW5nZSBbMCwgbikuIiIiCisgICAgcmV0dXJuIF9zeXNyYW5kLl9yYW5kYmVsb3coZXhjbHVzaXZlX3VwcGVyX2JvdW5kKQorCitERUZBVUxUX0VOVFJPUFkgPSAzMiAgIyBudW1iZXIgb2YgYnl0ZXMgdG8gcmV0dXJuIGJ5IGRlZmF1bHQKKworZGVmIHRva2VuX2J5dGVzKG5ieXRlcz1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gYnl0ZSBzdHJpbmcgY29udGFpbmluZyAqbmJ5dGVzKiBieXRlcy4KKworICAgIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlCisgICAgZGVmYXVsdCBpcyB1c2VkLgorCisgICAgPj4+IHRva2VuX2J5dGVzKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICBiJ1xceGViclxceDE3RCp0XFx4YWVcXHhkNFxceGUzU1xceGI2XFx4ZTJcXHhlYlAxXFx4OGInCisKKyAgICAiIiIKKyAgICBpZiBuYnl0ZXMgaXMgTm9uZToKKyAgICAgICAgbmJ5dGVzID0gREVGQVVMVF9FTlRST1BZCisgICAgcmV0dXJuIG9zLnVyYW5kb20obmJ5dGVzKQorCitkZWYgdG9rZW5faGV4KG5ieXRlcz1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gdGV4dCBzdHJpbmcsIGluIGhleGFkZWNpbWFsLgorCisgICAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyogcmFuZG9tIGJ5dGVzLCBlYWNoIGJ5dGUgY29udmVydGVkIHRvIHR3bworICAgIGhleCBkaWdpdHMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZQorICAgIGRlZmF1bHQgaXMgdXNlZC4KKworICAgID4+PiB0b2tlbl9oZXgoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICdmOWJmNzhiOWExOGNlNmQ0NmEwY2QyYjBiODZkZjlkYScKKworICAgICIiIgorICAgIHJldHVybiBiaW5hc2NpaS5oZXhsaWZ5KHRva2VuX2J5dGVzKG5ieXRlcykpLmRlY29kZSgnYXNjaWknKQorCitkZWYgdG9rZW5fdXJsc2FmZShuYnl0ZXM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgcmFuZG9tIFVSTC1zYWZlIHRleHQgc3RyaW5nLCBpbiBCYXNlNjQgZW5jb2RpbmcuCisKKyAgICBUaGUgc3RyaW5nIGhhcyAqbmJ5dGVzKiByYW5kb20gYnl0ZXMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYAorICAgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlIGRlZmF1bHQgaXMgdXNlZC4KKworICAgID4+PiB0b2tlbl91cmxzYWZlKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAnRHJtaHplNkVQY3YwZk5fODFCai1uQScKKworICAgICIiIgorICAgIHRvayA9IHRva2VuX2J5dGVzKG5ieXRlcykKKyAgICByZXR1cm4gYmFzZTY0LnVybHNhZmVfYjY0ZW5jb2RlKHRvaykucnN0cmlwKGInPScpLmRlY29kZSgnYXNjaWknKQpkaWZmIC0tZ2l0IGEvTGliL3NobGV4LnB5IGIvTGliL3NobGV4LnB5CmluZGV4IGVjZDJlZmQuLmU4NzI2NmYgMTAwNjQ0Ci0tLSBhL0xpYi9zaGxleC5weQorKysgYi9MaWIvc2hsZXgucHkKQEAgLTUsNiArNSw3IEBACiAjIHB1c2hfc291cmNlKCkgYW5kIHBvcF9zb3VyY2UoKSBtYWRlIGV4cGxpY2l0IGJ5IEVTUiwgSmFudWFyeSAyMDAxLgogIyBQb3NpeCBjb21wbGlhbmNlLCBzcGxpdCgpLCBzdHJpbmcgYXJndW1lbnRzLCBhbmQKICMgaXRlcmF0b3IgaW50ZXJmYWNlIGJ5IEd1c3Rhdm8gTmllbWV5ZXIsIEFwcmlsIDIwMDMuCisjIGNoYW5nZXMgdG8gdG9rZW5pemUgbW9yZSBsaWtlIFBvc2l4IHNoZWxscyBieSBWaW5heSBTYWppcCwgSnVseSAyMDE2LgogCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtMTcsNyArMTgsOCBAQAogCiBjbGFzcyBzaGxleDoKICAgICAiQSBsZXhpY2FsIGFuYWx5emVyIGNsYXNzIGZvciBzaW1wbGUgc2hlbGwtbGlrZSBzeW50YXhlcy4iCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnM9RmFsc2UpOgogICAgICAgICBpZiBpc2luc3RhbmNlKGluc3RyZWFtLCBzdHIpOgogICAgICAgICAgICAgaW5zdHJlYW0gPSBTdHJpbmdJTyhpbnN0cmVhbSkKICAgICAgICAgaWYgaW5zdHJlYW0gaXMgbm90IE5vbmU6CkBAIC00OSw2ICs1MSwxOSBAQAogICAgICAgICBzZWxmLnRva2VuID0gJycKICAgICAgICAgc2VsZi5maWxlc3RhY2sgPSBkZXF1ZSgpCiAgICAgICAgIHNlbGYuc291cmNlID0gTm9uZQorICAgICAgICBpZiBub3QgcHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycyA9ICcnCisgICAgICAgIGVsaWYgcHVuY3R1YXRpb25fY2hhcnMgaXMgVHJ1ZToKKyAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzID0gJygpOzw+fCYnCisgICAgICAgIHNlbGYucHVuY3R1YXRpb25fY2hhcnMgPSBwdW5jdHVhdGlvbl9jaGFycworICAgICAgICBpZiBwdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICMgX3B1c2hiYWNrX2NoYXJzIGlzIGEgcHVzaCBiYWNrIHF1ZXVlIHVzZWQgYnkgbG9va2FoZWFkIGxvZ2ljCisgICAgICAgICAgICBzZWxmLl9wdXNoYmFja19jaGFycyA9IGRlcXVlKCkKKyAgICAgICAgICAgICMgdGhlc2UgY2hhcnMgYWRkZWQgYmVjYXVzZSBhbGxvd2VkIGluIGZpbGUgbmFtZXMsIGFyZ3MsIHdpbGRjYXJkcworICAgICAgICAgICAgc2VsZi53b3JkY2hhcnMgKz0gJ34tLi8qPz0nCisgICAgICAgICAgICAjcmVtb3ZlIGFueSBwdW5jdHVhdGlvbiBjaGFycyBmcm9tIHdvcmRjaGFycworICAgICAgICAgICAgdCA9IHNlbGYud29yZGNoYXJzLm1ha2V0cmFucyhkaWN0LmZyb21rZXlzKHB1bmN0dWF0aW9uX2NoYXJzKSkKKyAgICAgICAgICAgIHNlbGYud29yZGNoYXJzID0gc2VsZi53b3JkY2hhcnMudHJhbnNsYXRlKHQpCiAKICAgICBkZWYgcHVzaF90b2tlbihzZWxmLCB0b2spOgogICAgICAgICAiUHVzaCBhIHRva2VuIG9udG8gdGhlIHN0YWNrIHBvcHBlZCBieSB0aGUgZ2V0X3Rva2VuIG1ldGhvZCIKQEAgLTExNSwxMiArMTMwLDE1IEBACiAgICAgICAgIHF1b3RlZCA9IEZhbHNlCiAgICAgICAgIGVzY2FwZWRzdGF0ZSA9ICcgJwogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbmV4dGNoYXIgPSBzZWxmLmluc3RyZWFtLnJlYWQoMSkKKyAgICAgICAgICAgIGlmIHNlbGYucHVuY3R1YXRpb25fY2hhcnMgYW5kIHNlbGYuX3B1c2hiYWNrX2NoYXJzOgorICAgICAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5fcHVzaGJhY2tfY2hhcnMucG9wKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV4dGNoYXIgPSBzZWxmLmluc3RyZWFtLnJlYWQoMSkKICAgICAgICAgICAgIGlmIG5leHRjaGFyID09ICdcbic6Ci0gICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzZWxmLmxpbmVubyArIDEKKyAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDM6Ci0gICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiBpbiBzdGF0ZSIsIHJlcHIoc2VsZi5zdGF0ZSksIFwKLSAgICAgICAgICAgICAgICAgICAgICAiSSBzZWUgY2hhcmFjdGVyOiIsIHJlcHIobmV4dGNoYXIpKQorICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogaW4gc3RhdGUgJXIgSSBzZWUgY2hhcmFjdGVyOiAlciIgJSAoc2VsZi5zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRjaGFyKSkKICAgICAgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gJycgICAgICAgICMgcGFzdCBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMzcsMTMgKzE1NSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYuY29tbWVudGVyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnN0cmVhbS5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vID0gc2VsZi5saW5lbm8gKyAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vICs9IDEKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLndvcmRjaGFyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYScKKyAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBuZXh0Y2hhcgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2MnCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLnF1b3RlczoKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucG9zaXg6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gbmV4dGNoYXIKQEAgLTE2NiwxNyArMTg3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGNsb3NpbmcgcXVvdGF0aW9uIikKICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciA9PSBzZWxmLnN0YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5wb3NpeDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2EnCi0gICAgICAgICAgICAgICAgZWxpZiBzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZSBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSBpbiBzZWxmLmVzY2FwZWRxdW90ZXM6CisgICAgICAgICAgICAgICAgZWxpZiAoc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGUgYW5kIHNlbGYuc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICBpbiBzZWxmLmVzY2FwZWRxdW90ZXMpOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSBzZWxmLnN0YXRlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjogICAgICAjIGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMjoKQEAgLTE4NSwxMiArMjA2LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGVzY2FwZWQgY2hhcmFjdGVyIikKICAgICAgICAgICAgICAgICAjIEluIHBvc2l4IHNoZWxscywgb25seSB0aGUgcXVvdGUgaXRzZWxmIG9yIHRoZSBlc2NhcGUKICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBtYXkgYmUgZXNjYXBlZCB3aXRoaW4gcXVvdGVzLgotICAgICAgICAgICAgICAgIGlmIGVzY2FwZWRzdGF0ZSBpbiBzZWxmLnF1b3RlcyBhbmQgXAotICAgICAgICAgICAgICAgICAgIG5leHRjaGFyICE9IHNlbGYuc3RhdGUgYW5kIG5leHRjaGFyICE9IGVzY2FwZWRzdGF0ZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBzZWxmLnN0YXRlCi0gICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkc3RhdGUgaW4gc2VsZi5xdW90ZXMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Y2hhciAhPSBzZWxmLnN0YXRlIGFuZCBuZXh0Y2hhciAhPSBlc2NhcGVkc3RhdGUpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IHNlbGYuc3RhdGUKKyAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IGVzY2FwZWRzdGF0ZQotICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09ICdhJzoKKyAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSBpbiAoJ2EnLCAnYycpOgogICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IE5vbmUgICAjIGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0yMDQsNyArMjI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLmNvbW1lbnRlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdHJlYW0ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHNlbGYubGluZW5vICsgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucG9zaXg6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnRva2VuIG9yIChzZWxmLnBvc2l4IGFuZCBxdW90ZWQpOgpAQCAtMjE2LDExICsyMzcsMjIgQEAKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCi0gICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLndvcmRjaGFycyBvciBuZXh0Y2hhciBpbiBzZWxmLnF1b3RlcyBcCi0gICAgICAgICAgICAgICAgICAgIG9yIHNlbGYud2hpdGVzcGFjZV9zcGxpdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSAnYyc6CisgICAgICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyIGluIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciBub3QgaW4gc2VsZi53aGl0ZXNwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3B1c2hiYWNrX2NoYXJzLmFwcGVuZChuZXh0Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxpZiAobmV4dGNoYXIgaW4gc2VsZi53b3JkY2hhcnMgb3IgbmV4dGNoYXIgaW4gc2VsZi5xdW90ZXMKKyAgICAgICAgICAgICAgICAgICAgICBvciBzZWxmLndoaXRlc3BhY2Vfc3BsaXQpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoYmFjay5hcHBlbmRsZWZ0KG5leHRjaGFyKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHVzaGJhY2tfY2hhcnMuYXBwZW5kKG5leHRjaGFyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoYmFjay5hcHBlbmRsZWZ0KG5leHRjaGFyKQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDI6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IEkgc2VlIHB1bmN0dWF0aW9uIGluIHdvcmQgc3RhdGUiKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCmRpZmYgLS1naXQgYS9MaWIvc2h1dGlsLnB5IGIvTGliL3NodXRpbC5weQppbmRleCBkYzlmMmViLi45ZDE5M2I1IDEwMDY0NAotLS0gYS9MaWIvc2h1dGlsLnB5CisrKyBiL0xpYi9zaHV0aWwucHkKQEAgLTk3NCw2ICs5NzQsOSBAQAogCiAgICAgX19hbGxfXy5hcHBlbmQoJ2Rpc2tfdXNhZ2UnKQogICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZS50b3RhbC5fX2RvY19fID0gJ1RvdGFsIHNwYWNlIGluIGJ5dGVzJworICAgIF9udHVwbGVfZGlza3VzYWdlLnVzZWQuX19kb2NfXyA9ICdVc2VkIHNwYWNlIGluIGJ5dGVzJworICAgIF9udHVwbGVfZGlza3VzYWdlLmZyZWUuX19kb2NfXyA9ICdGcmVlIHNwYWNlIGluIGJ5dGVzJwogCiAgICAgZGVmIGRpc2tfdXNhZ2UocGF0aCk6CiAgICAgICAgICIiIlJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGguCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS1wYWNrYWdlcy9SRUFETUUudHh0IGIvTGliL3NpdGUtcGFja2FnZXMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzNmNjI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3NpdGUtcGFja2FnZXMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDIgQEAKK1RoaXMgZGlyZWN0b3J5IGV4aXN0cyBzbyB0aGF0IDNyZCBwYXJ0eSBwYWNrYWdlcyBjYW4gYmUgaW5zdGFsbGVkCitoZXJlLiAgUmVhZCB0aGUgc291cmNlIGZvciBzaXRlLnB5IGZvciBtb3JlIGRldGFpbHMuCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5CmluZGV4IDNmNzhlZjUuLjA4NTlmMjggMTAwNjQ0Ci0tLSBhL0xpYi9zaXRlLnB5CisrKyBiL0xpYi9zaXRlLnB5CkBAIC02MCw3ICs2MCw4IEBACiAKIFRoZSByZWFkbGluZSBtb2R1bGUgaXMgYWxzbyBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgdG8gZW5hYmxlCiBjb21wbGV0aW9uIGZvciBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdC4gIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gaW4KLXNpdGVjdXN0b21pemUsIHVzZXJjdXN0b21pemUgb3IgUFlUSE9OU1RBUlRVUC4KK3NpdGVjdXN0b21pemUsIHVzZXJjdXN0b21pemUgb3IgUFlUSE9OU1RBUlRVUC4gIFN0YXJ0aW5nIFB5dGhvbiBpbgoraXNvbGF0ZWQgbW9kZSAoLUkpIGRpc2FibGVzIGF1dG9tYXRpYyByZWFkbGluZSBjb25maWd1cmF0aW9uLgogCiBBZnRlciB0aGVzZSBvcGVyYXRpb25zLCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gaW1wb3J0IGEgbW9kdWxlCiBuYW1lZCBzaXRlY3VzdG9taXplLCB3aGljaCBjYW4gcGVyZm9ybSBhcmJpdHJhcnkgYWRkaXRpb25hbApAQCAtMTMxLDEzICsxMzIsMTMgQEAKIAogCiBkZWYgX2luaXRfcGF0aGluZm8oKToKLSAgICAiIiJSZXR1cm4gYSBzZXQgY29udGFpbmluZyBhbGwgZXhpc3RpbmcgZGlyZWN0b3J5IGVudHJpZXMgZnJvbSBzeXMucGF0aCIiIgorICAgICIiIlJldHVybiBhIHNldCBjb250YWluaW5nIGFsbCBleGlzdGluZyBmaWxlIHN5c3RlbSBpdGVtcyBmcm9tIHN5cy5wYXRoLiIiIgogICAgIGQgPSBzZXQoKQotICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CisgICAgZm9yIGl0ZW0gaW4gc3lzLnBhdGg6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZGlyKToKLSAgICAgICAgICAgICAgICBkaXIsIGRpcmNhc2UgPSBtYWtlcGF0aChkaXIpCi0gICAgICAgICAgICAgICAgZC5hZGQoZGlyY2FzZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGl0ZW0pOgorICAgICAgICAgICAgICAgIF8sIGl0ZW1jYXNlID0gbWFrZXBhdGgoaXRlbSkKKyAgICAgICAgICAgICAgICBkLmFkZChpdGVtY2FzZSkKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgcmV0dXJuIGQKQEAgLTE1MCw5ICsxNTEsOSBAQAogICAgICIiIgogICAgIGlmIGtub3duX3BhdGhzIGlzIE5vbmU6CiAgICAgICAgIGtub3duX3BhdGhzID0gX2luaXRfcGF0aGluZm8oKQotICAgICAgICByZXNldCA9IDEKKyAgICAgICAgcmVzZXQgPSBUcnVlCiAgICAgZWxzZToKLSAgICAgICAgcmVzZXQgPSAwCisgICAgICAgIHJlc2V0ID0gRmFsc2UKICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihzaXRlZGlyLCBuYW1lKQogICAgIHRyeToKICAgICAgICAgZiA9IG9wZW4oZnVsbG5hbWUsICJyIikKQEAgLTE5MCw5ICsxOTEsOSBAQAogICAgICdzaXRlZGlyJyIiIgogICAgIGlmIGtub3duX3BhdGhzIGlzIE5vbmU6CiAgICAgICAgIGtub3duX3BhdGhzID0gX2luaXRfcGF0aGluZm8oKQotICAgICAgICByZXNldCA9IDEKKyAgICAgICAgcmVzZXQgPSBUcnVlCiAgICAgZWxzZToKLSAgICAgICAgcmVzZXQgPSAwCisgICAgICAgIHJlc2V0ID0gRmFsc2UKICAgICBzaXRlZGlyLCBzaXRlZGlyY2FzZSA9IG1ha2VwYXRoKHNpdGVkaXIpCiAgICAgaWYgbm90IHNpdGVkaXJjYXNlIGluIGtub3duX3BhdGhzOgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoc2l0ZWRpcikgICAgICAgICMgQWRkIHBhdGggY29tcG9uZW50CkBAIC0zMDQsNyArMzA1LDcgQEAKIAogICAgICAgICBpZiBvcy5zZXAgPT0gJy8nOgogICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQuJWQiICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQocHJlZml4KQpAQCAtMzE3LDcgKzMxOCw3IEBACiAgICAgICAgICAgICBpZiBmcmFtZXdvcms6CiAgICAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbigiL0xpYnJhcnkiLCBmcmFtZXdvcmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnZlcnNpb25bOjNdLCAic2l0ZS1wYWNrYWdlcyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwgInNpdGUtcGFja2FnZXMiKSkKICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCiAKIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgpAQCAtMzM1LDkgKzMzNiw3IEBACiAgICAgVGhlIHJlcHIgb2YgZWFjaCBvYmplY3QgY29udGFpbnMgYSBoaW50IGF0IGhvdyBpdCB3b3Jrcy4KIAogICAgICIiIgotICAgIGlmIG9zLnNlcCA9PSAnOic6Ci0gICAgICAgIGVvZiA9ICdDbWQtUScKLSAgICBlbGlmIG9zLnNlcCA9PSAnXFwnOgorICAgIGlmIG9zLnNlcCA9PSAnXFwnOgogICAgICAgICBlb2YgPSAnQ3RybC1aIHBsdXMgUmV0dXJuJwogICAgIGVsc2U6CiAgICAgICAgIGVvZiA9ICdDdHJsLUQgKGkuZS4gRU9GKScKQEAgLTQyMywyMSArNDIyLDYgQEAKIAogICAgIHN5cy5fX2ludGVyYWN0aXZlaG9va19fID0gcmVnaXN0ZXJfcmVhZGxpbmUKIAotZGVmIGFsaWFzbWJjcygpOgotICAgICIiIk9uIFdpbmRvd3MsIHNvbWUgZGVmYXVsdCBlbmNvZGluZ3MgYXJlIG5vdCBwcm92aWRlZCBieSBQeXRob24sCi0gICAgd2hpbGUgdGhleSBhcmUgYWx3YXlzIGF2YWlsYWJsZSBhcyAibWJjcyIgaW4gZWFjaCBsb2NhbGUuIE1ha2UKLSAgICB0aGVtIHVzYWJsZSBieSBhbGlhc2luZyB0byAibWJjcyIgaW4gc3VjaCBhIGNhc2UuIiIiCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZSwgY29kZWNzCi0gICAgICAgIGVuYyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQotICAgICAgICBpZiBlbmMuc3RhcnRzd2l0aCgnY3AnKTogICAgICAgICAgICAjICJjcCoqKiIgPwotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvZGVjcy5sb29rdXAoZW5jKQotICAgICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgotICAgICAgICAgICAgICAgIGltcG9ydCBlbmNvZGluZ3MKLSAgICAgICAgICAgICAgICBlbmNvZGluZ3MuX2NhY2hlW2VuY10gPSBlbmNvZGluZ3MuX3Vua25vd24KLSAgICAgICAgICAgICAgICBlbmNvZGluZ3MuYWxpYXNlcy5hbGlhc2VzW2VuY10gPSAnbWJjcycKLQogQ09ORklHX0xJTkUgPSByJ14oP1A8a2V5Pihcd3xbLV9dKSspXHMqPVxzKig/UDx2YWx1ZT4uKilccyokJwogCiBkZWYgdmVudihrbm93bl9wYXRocyk6CkBAIC00NzgsMTIgKzQ2Miw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fc2l0ZSA9IHZhbHVlLmxvd2VyKCkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2hvbWUnOgogICAgICAgICAgICAgICAgICAgICAgICAgc3lzLl9ob21lID0gdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2FwcGxvY2FsJyBhbmQgdmFsdWUubG93ZXIoKSA9PSAndHJ1ZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIEFwcC1sb2NhbCBpbnN0YWxscyB1c2UgdGhlIGV4ZV9kaXIgYXMgcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgIyBub3Qgb25lIGxldmVsIGhpZ2hlciwgYW5kIGRvIG5vdCB1c2Ugc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHNpdGUgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXRlX3ByZWZpeCA9IGV4ZV9kaXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gJ2ZhbHNlJwogCiAgICAgICAgIHN5cy5wcmVmaXggPSBzeXMuZXhlY19wcmVmaXggPSBzaXRlX3ByZWZpeAogCkBAIC01MDQsMTEgKzQ4MiwxNSBAQAogZGVmIGV4ZWNzaXRlY3VzdG9taXplKCk6CiAgICAgIiIiUnVuIGN1c3RvbSBzaXRlIHNwZWNpZmljIGNvZGUsIGlmIGF2YWlsYWJsZS4iIiIKICAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBzaXRlY3VzdG9taXplCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBzaXRlY3VzdG9taXplCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMubmFtZSA9PSAnc2l0ZWN1c3RvbWl6ZSc6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgotICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgiUFlUSE9OVkVSQk9TRSIpOgorICAgICAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZToKICAgICAgICAgICAgIHN5cy5leGNlcHRob29rKCpzeXMuZXhjX2luZm8oKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCkBAIC01MjAsMTEgKzUwMiwxNSBAQAogZGVmIGV4ZWN1c2VyY3VzdG9taXplKCk6CiAgICAgIiIiUnVuIGN1c3RvbSB1c2VyIHNwZWNpZmljIGNvZGUsIGlmIGF2YWlsYWJsZS4iIiIKICAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB1c2VyY3VzdG9taXplCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB1c2VyY3VzdG9taXplCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMubmFtZSA9PSAndXNlcmN1c3RvbWl6ZSc6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgotICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgiUFlUSE9OVkVSQk9TRSIpOgorICAgICAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZToKICAgICAgICAgICAgIHN5cy5leGNlcHRob29rKCpzeXMuZXhjX2luZm8oKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCkBAIC01NTEsMTMgKzUzNywxMyBAQAogICAgIHNldHF1aXQoKQogICAgIHNldGNvcHlyaWdodCgpCiAgICAgc2V0aGVscGVyKCkKLSAgICBlbmFibGVybGNvbXBsZXRlcigpCi0gICAgYWxpYXNtYmNzKCkKKyAgICBpZiBub3Qgc3lzLmZsYWdzLmlzb2xhdGVkOgorICAgICAgICBlbmFibGVybGNvbXBsZXRlcigpCiAgICAgZXhlY3NpdGVjdXN0b21pemUoKQogICAgIGlmIEVOQUJMRV9VU0VSX1NJVEU6CiAgICAgICAgIGV4ZWN1c2VyY3VzdG9taXplKCkKIAotIyBQcmV2ZW50IGVkaXRpb24gb2Ygc3lzLnBhdGggd2hlbiBweXRob24gd2FzIHN0YXJ0ZWQgd2l0aCAtUyBhbmQKKyMgUHJldmVudCBleHRlbmRpbmcgb2Ygc3lzLnBhdGggd2hlbiBweXRob24gd2FzIHN0YXJ0ZWQgd2l0aCAtUyBhbmQKICMgc2l0ZSBpcyBpbXBvcnRlZCBsYXRlci4KIGlmIG5vdCBzeXMuZmxhZ3Mubm9fc2l0ZToKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9zbXRwZC5weSBiL0xpYi9zbXRwZC5weQppbmRleCA3MzIwNjZlLi44MTAzY2E5IDEwMDc1NQotLS0gYS9MaWIvc210cGQucHkKKysrIGIvTGliL3NtdHBkLnB5CkBAIC04OSw3ICs4OSwxMCBAQAogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogZnJvbSBlbWFpbC5faGVhZGVyX3ZhbHVlX3BhcnNlciBpbXBvcnQgZ2V0X2FkZHJfc3BlYywgZ2V0X2FuZ2xlX2FkZHIKIAotX19hbGxfXyA9IFsiU01UUFNlcnZlciIsIkRlYnVnZ2luZ1NlcnZlciIsIlB1cmVQcm94eSIsIk1haWxtYW5Qcm94eSJdCitfX2FsbF9fID0gWworICAgICJTTVRQQ2hhbm5lbCIsICJTTVRQU2VydmVyIiwgIkRlYnVnZ2luZ1NlcnZlciIsICJQdXJlUHJveHkiLAorICAgICJNYWlsbWFuUHJveHkiLAorXQogCiBwcm9ncmFtID0gc3lzLmFyZ3ZbMF0KIF9fdmVyc2lvbl9fID0gJ1B5dGhvbiBTTVRQIHByb3h5IHZlcnNpb24gMC4zJwpAQCAtMTI4LDI0ICsxMzEsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkciwgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULAotICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1Ob25lKToKKyAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpOgogICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4sIG1hcD1tYXApCiAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICAgc2VsZi5jb25uID0gY29ubgogICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCiAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIHNlbGYuZW5hYmxlX1NNVFBVVEY4ID0gZW5hYmxlX1NNVFBVVEY4Ci0gICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGODoKLSAgICAgICAgICAgIGlmIGRlY29kZV9kYXRhOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggY2Fubm90IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUgc2FtZSB0aW1lIikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gRmFsc2UKLSAgICAgICAgaWYgZGVjb2RlX2RhdGEgaXMgTm9uZToKLSAgICAgICAgICAgIHdhcm4oIlRoZSBkZWNvZGVfZGF0YSBkZWZhdWx0IG9mIFRydWUgd2lsbCBjaGFuZ2UgdG8gRmFsc2UgaW4gMy42OyIKLSAgICAgICAgICAgICAgICAgIiBzcGVjaWZ5IGFuIGV4cGxpY2l0IHZhbHVlIGZvciB0aGlzIGtleXdvcmQiLAotICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IFRydWUKICAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEgPSBkZWNvZGVfZGF0YQorICAgICAgICBpZiBlbmFibGVfU01UUFVURjggYW5kIGRlY29kZV9kYXRhOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYmUgc2V0IHRvIFRydWUgYXQgdGhlIHNhbWUgdGltZSIpCiAgICAgICAgIGlmIGRlY29kZV9kYXRhOgogICAgICAgICAgICAgc2VsZi5fZW1wdHlzdHJpbmcgPSAnJwogICAgICAgICAgICAgc2VsZi5fbGluZXNlcCA9ICdcclxuJwpAQCAtNjM1LDIzICs2MzEsMTUgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIsCiAgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCwgbWFwPU5vbmUsCi0gICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpOgogICAgICAgICBzZWxmLl9sb2NhbGFkZHIgPSBsb2NhbGFkZHIKICAgICAgICAgc2VsZi5fcmVtb3RlYWRkciA9IHJlbW90ZWFkZHIKICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKICAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjggPSBlbmFibGVfU01UUFVURjgKLSAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4OgotICAgICAgICAgICAgaWYgZGVjb2RlX2RhdGE6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIGRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjgiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHBhcmFtZXRlcnMgY2Fubm90IGJlIHNldCB0byBUcnVlIGF0IHRoZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc2FtZSB0aW1lLiIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IEZhbHNlCi0gICAgICAgIGlmIGRlY29kZV9kYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICB3YXJuKCJUaGUgZGVjb2RlX2RhdGEgZGVmYXVsdCBvZiBUcnVlIHdpbGwgY2hhbmdlIHRvIEZhbHNlIGluIDMuNjsiCi0gICAgICAgICAgICAgICAgICIgc3BlY2lmeSBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBrZXl3b3JkIiwKLSAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBUcnVlCiAgICAgICAgIHNlbGYuX2RlY29kZV9kYXRhID0gZGVjb2RlX2RhdGEKKyAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4IGFuZCBkZWNvZGVfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggY2Fubm90IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQogICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIG1hcD1tYXApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGdhaV9yZXN1bHRzID0gc29ja2V0LmdldGFkZHJpbmZvKCpsb2NhbGFkZHIsCkBAIC02OTgsOSArNjg2LDkgQEAKICAgICAgICAgY29udGFpbmluZyBhIGAuJyBmb2xsb3dlZCBieSBvdGhlciB0ZXh0IGhhcyBoYWQgdGhlIGxlYWRpbmcgZG90CiAgICAgICAgIHJlbW92ZWQuCiAKLSAgICAgICAga3dhcmdzIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEl0IGlzIGVtcHR5Ci0gICAgICAgIHVubGVzcyBkZWNvZGVfZGF0YT1GYWxzZSBvciBlbmFibGVfU01UUFVURjg9VHJ1ZSB3YXMgZ2l2ZW4gYXMgaW5pdAotICAgICAgICBwYXJhbWV0ZXIsIGluIHdoaWNoIGNhc2UgdXQgd2lsbCBjb250YWluIHRoZSBmb2xsb3dpbmcga2V5czoKKyAgICAgICAga3dhcmdzIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICBJdCBpcworICAgICAgICBlbXB0eSBpZiBkZWNvZGVfZGF0YT1UcnVlIHdhcyBnaXZlbiBhcyBpbml0IHBhcmFtZXRlciwgb3RoZXJ3aXNlCisgICAgICAgIGl0IHdpbGwgY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6CiAgICAgICAgICAgICAnbWFpbF9vcHRpb25zJzogbGlzdCBvZiBwYXJhbWV0ZXJzIHRvIHRoZSBtYWlsIGNvbW1hbmQuICBBbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyBhcmUgdXBwZXJjYXNlIHN0cmluZ3MuICBFeGFtcGxlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddLgpkaWZmIC0tZ2l0IGEvTGliL3NtdHBsaWIucHkgYi9MaWIvc210cGxpYi5weQppbmRleCA1YjllNjY1Li5mN2MyYzc3IDEwMDc1NQotLS0gYS9MaWIvc210cGxpYi5weQorKysgYi9MaWIvc210cGxpYi5weQpAQCAtNzU5LDYgKzc1OSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPWtleWZpbGUpCkBAIC0xMDExLDYgKzEwMTUsMTAgQEAKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvc25kaGRyLnB5IGIvTGliL3NuZGhkci5weQppbmRleCBlNTkwMWVjLi43ZWNhZmI0IDEwMDY0NAotLS0gYS9MaWIvc25kaGRyLnB5CisrKyBiL0xpYi9zbmRoZHIucHkKQEAgLTM3LDYgKzM3LDE4IEBACiBTbmRIZWFkZXJzID0gbmFtZWR0dXBsZSgnU25kSGVhZGVycycsCiAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXR5cGUgZnJhbWVyYXRlIG5jaGFubmVscyBuZnJhbWVzIHNhbXB3aWR0aCcpCiAKK1NuZEhlYWRlcnMuZmlsZXR5cGUuX19kb2NfXyA9ICgiIiJUaGUgdmFsdWUgZm9yIHR5cGUgaW5kaWNhdGVzIHRoZSBkYXRhIHR5cGUKK2FuZCB3aWxsIGJlIG9uZSBvZiB0aGUgc3RyaW5ncyAnYWlmYycsICdhaWZmJywgJ2F1JywnaGNvbScsCisnc25kcicsICdzbmR0JywgJ3ZvYycsICd3YXYnLCAnOHN2eCcsICdzYicsICd1YicsIG9yICd1bCcuIiIiKQorU25kSGVhZGVycy5mcmFtZXJhdGUuX19kb2NfXyA9ICgiIiJUaGUgc2FtcGxpbmdfcmF0ZSB3aWxsIGJlIGVpdGhlciB0aGUgYWN0dWFsCit2YWx1ZSBvciAwIGlmIHVua25vd24gb3IgZGlmZmljdWx0IHRvIGRlY29kZS4iIiIpCitTbmRIZWFkZXJzLm5jaGFubmVscy5fX2RvY19fID0gKCIiIlRoZSBudW1iZXIgb2YgY2hhbm5lbHMgb3IgMCBpZiBpdCBjYW5ub3QgYmUKK2RldGVybWluZWQgb3IgaWYgdGhlIHZhbHVlIGlzIGRpZmZpY3VsdCB0byBkZWNvZGUuIiIiKQorU25kSGVhZGVycy5uZnJhbWVzLl9fZG9jX18gPSAoIiIiVGhlIHZhbHVlIGZvciBmcmFtZXMgd2lsbCBiZSBlaXRoZXIgdGhlIG51bWJlcgorb2YgZnJhbWVzIG9yIC0xLiIiIikKK1NuZEhlYWRlcnMuc2FtcHdpZHRoLl9fZG9jX18gPSAoIiIiRWl0aGVyIHRoZSBzYW1wbGUgc2l6ZSBpbiBiaXRzIG9yCisnQScgZm9yIEEtTEFXIG9yICdVJyBmb3IgdS1MQVcuIiIiKQorCiBkZWYgd2hhdChmaWxlbmFtZSk6CiAgICAgIiIiR3Vlc3MgdGhlIHR5cGUgb2YgYSBzb3VuZCBmaWxlLiIiIgogICAgIHJlcyA9IHdoYXRoZHIoZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0LnB5IGIvTGliL3NvY2tldC5weQppbmRleCBhOWNhYjMyLi43NDBlNzE3IDEwMDY0NAotLS0gYS9MaWIvc29ja2V0LnB5CisrKyBiL0xpYi9zb2NrZXQucHkKQEAgLTUwLDcgKzUwLDcgQEAKIGZyb20gX3NvY2tldCBpbXBvcnQgKgogCiBpbXBvcnQgb3MsIHN5cywgaW8sIHNlbGVjdG9ycwotZnJvbSBlbnVtIGltcG9ydCBJbnRFbnVtCitmcm9tIGVudW0gaW1wb3J0IEludEVudW0sIEludEZsYWcKIAogdHJ5OgogICAgIGltcG9ydCBlcnJubwpAQCAtODAsNiArODAsMTYgQEAKICAgICAgICAgX19uYW1lX18sCiAgICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdTT0NLXycpKQogCitJbnRGbGFnLl9jb252ZXJ0KAorICAgICAgICAnTXNnRmxhZycsCisgICAgICAgIF9fbmFtZV9fLAorICAgICAgICBsYW1iZGEgQzogQy5pc3VwcGVyKCkgYW5kIEMuc3RhcnRzd2l0aCgnTVNHXycpKQorCitJbnRGbGFnLl9jb252ZXJ0KAorICAgICAgICAnQWRkcmVzc0luZm8nLAorICAgICAgICBfX25hbWVfXywKKyAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ0FJXycpKQorCiBfTE9DQUxIT1NUICAgID0gJzEyNy4wLjAuMScKIF9MT0NBTEhPU1RfVjYgPSAnOjoxJwogCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0c2VydmVyLnB5IGIvTGliL3NvY2tldHNlcnZlci5weQppbmRleCA4ODA4ODEzLi40MWEzNzY2IDEwMDY0NAotLS0gYS9MaWIvc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKQEAgLTEyNywxNiArMTI3LDIwIEBACiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgb3MKIGltcG9ydCBlcnJubworaW1wb3J0IHN5cwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZworZnJvbSBpbyBpbXBvcnQgQnVmZmVyZWRJT0Jhc2UKIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKIAotX19hbGxfXyA9IFsiQmFzZVNlcnZlciIsICJUQ1BTZXJ2ZXIiLCAiVURQU2VydmVyIiwgIkZvcmtpbmdVRFBTZXJ2ZXIiLAotICAgICAgICAgICAiRm9ya2luZ1RDUFNlcnZlciIsICJUaHJlYWRpbmdVRFBTZXJ2ZXIiLCAiVGhyZWFkaW5nVENQU2VydmVyIiwKK19fYWxsX18gPSBbIkJhc2VTZXJ2ZXIiLCAiVENQU2VydmVyIiwgIlVEUFNlcnZlciIsCisgICAgICAgICAgICJUaHJlYWRpbmdVRFBTZXJ2ZXIiLCAiVGhyZWFkaW5nVENQU2VydmVyIiwKICAgICAgICAgICAgIkJhc2VSZXF1ZXN0SGFuZGxlciIsICJTdHJlYW1SZXF1ZXN0SGFuZGxlciIsCi0gICAgICAgICAgICJEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyIiwgIlRocmVhZGluZ01peEluIiwgIkZvcmtpbmdNaXhJbiJdCisgICAgICAgICAgICJEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyIiwgIlRocmVhZGluZ01peEluIl0KK2lmIGhhc2F0dHIob3MsICJmb3JrIik6CisgICAgX19hbGxfXy5leHRlbmQoWyJGb3JraW5nVURQU2VydmVyIiwiRm9ya2luZ1RDUFNlcnZlciIsICJGb3JraW5nTWl4SW4iXSkKIGlmIGhhc2F0dHIoc29ja2V0LCAiQUZfVU5JWCIpOgogICAgIF9fYWxsX18uZXh0ZW5kKFsiVW5peFN0cmVhbVNlcnZlciIsIlVuaXhEYXRhZ3JhbVNlcnZlciIsCiAgICAgICAgICAgICAgICAgICAgICJUaHJlYWRpbmdVbml4U3RyZWFtU2VydmVyIiwKQEAgLTMxMSw5ICszMTUsMTIgQEAKICAgICAgICAgaWYgc2VsZi52ZXJpZnlfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCi0gICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Vycm9yKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKIApAQCAtMzY3LDEyICszNzQsMTggQEAKICAgICAgICAgVGhlIGRlZmF1bHQgaXMgdG8gcHJpbnQgYSB0cmFjZWJhY2sgYW5kIGNvbnRpbnVlLgogCiAgICAgICAgICIiIgotICAgICAgICBwcmludCgnLScqNDApCi0gICAgICAgIHByaW50KCdFeGNlcHRpb24gaGFwcGVuZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgcmVxdWVzdCBmcm9tJywgZW5kPScgJykKLSAgICAgICAgcHJpbnQoY2xpZW50X2FkZHJlc3MpCisgICAgICAgIHByaW50KCctJyo0MCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBwcmludCgnRXhjZXB0aW9uIGhhcHBlbmVkIGR1cmluZyBwcm9jZXNzaW5nIG9mIHJlcXVlc3QgZnJvbScsCisgICAgICAgICAgICBjbGllbnRfYWRkcmVzcywgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKSAjIFhYWCBCdXQgdGhpcyBnb2VzIHRvIHN0ZGVyciEKLSAgICAgICAgcHJpbnQoJy0nKjQwKQorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICAgICAgcHJpbnQoJy0nKjQwLCBmaWxlPXN5cy5zdGRlcnIpCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQogCiAKIGNsYXNzIFRDUFNlcnZlcihCYXNlU2VydmVyKToKQEAgLTUyNyw4NSArNTQwLDg2IEBACiAgICAgICAgICMgTm8gbmVlZCB0byBjbG9zZSBhbnl0aGluZy4KICAgICAgICAgcGFzcwogCi1jbGFzcyBGb3JraW5nTWl4SW46CitpZiBoYXNhdHRyKG9zLCAiZm9yayIpOgorICAgIGNsYXNzIEZvcmtpbmdNaXhJbjoKKyAgICAgICAgIiIiTWl4LWluIGNsYXNzIHRvIGhhbmRsZSBlYWNoIHJlcXVlc3QgaW4gYSBuZXcgcHJvY2Vzcy4iIiIKIAotICAgICIiIk1peC1pbiBjbGFzcyB0byBoYW5kbGUgZWFjaCByZXF1ZXN0IGluIGEgbmV3IHByb2Nlc3MuIiIiCisgICAgICAgIHRpbWVvdXQgPSAzMDAKKyAgICAgICAgYWN0aXZlX2NoaWxkcmVuID0gTm9uZQorICAgICAgICBtYXhfY2hpbGRyZW4gPSA0MAogCi0gICAgdGltZW91dCA9IDMwMAotICAgIGFjdGl2ZV9jaGlsZHJlbiA9IE5vbmUKLSAgICBtYXhfY2hpbGRyZW4gPSA0MAotCi0gICAgZGVmIGNvbGxlY3RfY2hpbGRyZW4oc2VsZik6Ci0gICAgICAgICIiIkludGVybmFsIHJvdXRpbmUgdG8gd2FpdCBmb3IgY2hpbGRyZW4gdGhhdCBoYXZlIGV4aXRlZC4iIiIKLSAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2hpbGRyZW4gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgSWYgd2UncmUgYWJvdmUgdGhlIG1heCBudW1iZXIgb2YgY2hpbGRyZW4sIHdhaXQgYW5kIHJlYXAgdGhlbSB1bnRpbAotICAgICAgICAjIHdlIGdvIGJhY2sgYmVsb3cgdGhyZXNob2xkLiBOb3RlIHRoYXQgd2UgdXNlIHdhaXRwaWQoLTEpIGJlbG93IHRvIGJlCi0gICAgICAgICMgYWJsZSB0byBjb2xsZWN0IGNoaWxkcmVuIGluIHNpemUoPGRlZnVuY3QgY2hpbGRyZW4+KSBzeXNjYWxscyBpbnN0ZWFkCi0gICAgICAgICMgb2Ygc2l6ZSg8Y2hpbGRyZW4+KTogdGhlIGRvd25zaWRlIGlzIHRoYXQgdGhpcyBtaWdodCByZWFwIGNoaWxkcmVuCi0gICAgICAgICMgd2hpY2ggd2UgZGlkbid0IHNwYXduLCB3aGljaCBpcyB3aHkgd2Ugb25seSByZXNvcnQgdG8gdGhpcyB3aGVuIHdlJ3JlCi0gICAgICAgICMgYWJvdmUgbWF4X2NoaWxkcmVuLgotICAgICAgICB3aGlsZSBsZW4oc2VsZi5hY3RpdmVfY2hpbGRyZW4pID49IHNlbGYubWF4X2NoaWxkcmVuOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQoLTEsIDApCi0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCi0gICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbiwgd2UncmUgZG9uZQotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgIyBOb3cgcmVhcCBhbGwgZGVmdW5jdCBjaGlsZHJlbi4KLSAgICAgICAgZm9yIHBpZCBpbiBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jb3B5KCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZChwaWQsIG9zLldOT0hBTkcpCi0gICAgICAgICAgICAgICAgIyBpZiB0aGUgY2hpbGQgaGFzbid0IGV4aXRlZCB5ZXQsIHBpZCB3aWxsIGJlIDAgYW5kIGlnbm9yZWQgYnkKLSAgICAgICAgICAgICAgICAjIGRpc2NhcmQoKSBiZWxvdwotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQotICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgotICAgICAgICAgICAgICAgICMgc29tZW9uZSBlbHNlIHJlYXBlZCBpdAotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRsZV90aW1lb3V0KHNlbGYpOgotICAgICAgICAiIiJXYWl0IGZvciB6b21iaWVzIGFmdGVyIHNlbGYudGltZW91dCBzZWNvbmRzIG9mIGluYWN0aXZpdHkuCi0KLSAgICAgICAgTWF5IGJlIGV4dGVuZGVkLCBkbyBub3Qgb3ZlcnJpZGUuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQotCi0gICAgZGVmIHNlcnZpY2VfYWN0aW9ucyhzZWxmKToKLSAgICAgICAgIiIiQ29sbGVjdCB0aGUgem9tYmllIGNoaWxkIHByb2Nlc3NlcyByZWd1bGFybHkgaW4gdGhlIEZvcmtpbmdNaXhJbi4KLQotICAgICAgICBzZXJ2aWNlX2FjdGlvbnMgaXMgY2FsbGVkIGluIHRoZSBCYXNlU2VydmVyJ3Mgc2VydmVfZm9ydmVyIGxvb3AuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQotCi0gICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6Ci0gICAgICAgICIiIkZvcmsgYSBuZXcgc3VicHJvY2VzcyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LiIiIgotICAgICAgICBwaWQgPSBvcy5mb3JrKCkKLSAgICAgICAgaWYgcGlkOgotICAgICAgICAgICAgIyBQYXJlbnQgcHJvY2VzcworICAgICAgICBkZWYgY29sbGVjdF9jaGlsZHJlbihzZWxmKToKKyAgICAgICAgICAgICIiIkludGVybmFsIHJvdXRpbmUgdG8gd2FpdCBmb3IgY2hpbGRyZW4gdGhhdCBoYXZlIGV4aXRlZC4iIiIKICAgICAgICAgICAgIGlmIHNlbGYuYWN0aXZlX2NoaWxkcmVuIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4gPSBzZXQoKQotICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uYWRkKHBpZCkKLSAgICAgICAgICAgIHNlbGYuY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIENoaWxkIHByb2Nlc3MuCi0gICAgICAgICAgICAjIFRoaXMgbXVzdCBuZXZlciByZXR1cm4sIGhlbmNlIG9zLl9leGl0KCkhCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5maW5pc2hfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgICAgICBvcy5fZXhpdCgwKQotICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAjIElmIHdlJ3JlIGFib3ZlIHRoZSBtYXggbnVtYmVyIG9mIGNoaWxkcmVuLCB3YWl0IGFuZCByZWFwIHRoZW0gdW50aWwKKyAgICAgICAgICAgICMgd2UgZ28gYmFjayBiZWxvdyB0aHJlc2hvbGQuIE5vdGUgdGhhdCB3ZSB1c2Ugd2FpdHBpZCgtMSkgYmVsb3cgdG8gYmUKKyAgICAgICAgICAgICMgYWJsZSB0byBjb2xsZWN0IGNoaWxkcmVuIGluIHNpemUoPGRlZnVuY3QgY2hpbGRyZW4+KSBzeXNjYWxscyBpbnN0ZWFkCisgICAgICAgICAgICAjIG9mIHNpemUoPGNoaWxkcmVuPik6IHRoZSBkb3duc2lkZSBpcyB0aGF0IHRoaXMgbWlnaHQgcmVhcCBjaGlsZHJlbgorICAgICAgICAgICAgIyB3aGljaCB3ZSBkaWRuJ3Qgc3Bhd24sIHdoaWNoIGlzIHdoeSB3ZSBvbmx5IHJlc29ydCB0byB0aGlzIHdoZW4gd2UncmUKKyAgICAgICAgICAgICMgYWJvdmUgbWF4X2NoaWxkcmVuLgorICAgICAgICAgICAgd2hpbGUgbGVuKHNlbGYuYWN0aXZlX2NoaWxkcmVuKSA+PSBzZWxmLm1heF9jaGlsZHJlbjoKICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQoLTEsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbiwgd2UncmUgZG9uZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jbGVhcigpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICMgTm93IHJlYXAgYWxsIGRlZnVuY3QgY2hpbGRyZW4uCisgICAgICAgICAgICBmb3IgcGlkIGluIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNvcHkoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQocGlkLCBvcy5XTk9IQU5HKQorICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSBjaGlsZCBoYXNuJ3QgZXhpdGVkIHlldCwgcGlkIHdpbGwgYmUgMCBhbmQgaWdub3JlZCBieQorICAgICAgICAgICAgICAgICAgICAjIGRpc2NhcmQoKSBiZWxvdworICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgc29tZW9uZSBlbHNlIHJlYXBlZCBpdAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiBoYW5kbGVfdGltZW91dChzZWxmKToKKyAgICAgICAgICAgICIiIldhaXQgZm9yIHpvbWJpZXMgYWZ0ZXIgc2VsZi50aW1lb3V0IHNlY29uZHMgb2YgaW5hY3Rpdml0eS4KKworICAgICAgICAgICAgTWF5IGJlIGV4dGVuZGVkLCBkbyBub3Qgb3ZlcnJpZGUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCisKKyAgICAgICAgZGVmIHNlcnZpY2VfYWN0aW9ucyhzZWxmKToKKyAgICAgICAgICAgICIiIkNvbGxlY3QgdGhlIHpvbWJpZSBjaGlsZCBwcm9jZXNzZXMgcmVndWxhcmx5IGluIHRoZSBGb3JraW5nTWl4SW4uCisKKyAgICAgICAgICAgIHNlcnZpY2VfYWN0aW9ucyBpcyBjYWxsZWQgaW4gdGhlIEJhc2VTZXJ2ZXIncyBzZXJ2ZV9mb3J2ZXIgbG9vcC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKKworICAgICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKKyAgICAgICAgICAgICIiIkZvcmsgYSBuZXcgc3VicHJvY2VzcyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LiIiIgorICAgICAgICAgICAgcGlkID0gb3MuZm9yaygpCisgICAgICAgICAgICBpZiBwaWQ6CisgICAgICAgICAgICAgICAgIyBQYXJlbnQgcHJvY2VzcworICAgICAgICAgICAgICAgIGlmIHNlbGYuYWN0aXZlX2NoaWxkcmVuIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuID0gc2V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5hZGQocGlkKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIENoaWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgIyBUaGlzIG11c3QgbmV2ZXIgcmV0dXJuLCBoZW5jZSBvcy5fZXhpdCgpIQorICAgICAgICAgICAgICAgIHN0YXR1cyA9IDEKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDAKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcihyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgb3MuX2V4aXQoMSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdChzdGF0dXMpCiAKIAogY2xhc3MgVGhyZWFkaW5nTWl4SW46CkBAIC02MjMsOSArNjM3LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuZmluaXNoX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCi0gICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCisgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKIAogICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgpAQCAtNjM2LDggKzY1MCw5IEBACiAgICAgICAgIHQuc3RhcnQoKQogCiAKLWNsYXNzIEZvcmtpbmdVRFBTZXJ2ZXIoRm9ya2luZ01peEluLCBVRFBTZXJ2ZXIpOiBwYXNzCi1jbGFzcyBGb3JraW5nVENQU2VydmVyKEZvcmtpbmdNaXhJbiwgVENQU2VydmVyKTogcGFzcworaWYgaGFzYXR0cihvcywgImZvcmsiKToKKyAgICBjbGFzcyBGb3JraW5nVURQU2VydmVyKEZvcmtpbmdNaXhJbiwgVURQU2VydmVyKTogcGFzcworICAgIGNsYXNzIEZvcmtpbmdUQ1BTZXJ2ZXIoRm9ya2luZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCiAKIGNsYXNzIFRocmVhZGluZ1VEUFNlcnZlcihUaHJlYWRpbmdNaXhJbiwgVURQU2VydmVyKTogcGFzcwogY2xhc3MgVGhyZWFkaW5nVENQU2VydmVyKFRocmVhZGluZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCkBAIC03MjksNyArNzQ0LDEwIEBACiAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19UQ1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuVENQX05PREVMQVksIFRydWUpCiAgICAgICAgIHNlbGYucmZpbGUgPSBzZWxmLmNvbm5lY3Rpb24ubWFrZWZpbGUoJ3JiJywgc2VsZi5yYnVmc2l6ZSkKLSAgICAgICAgc2VsZi53ZmlsZSA9IHNlbGYuY29ubmVjdGlvbi5tYWtlZmlsZSgnd2InLCBzZWxmLndidWZzaXplKQorICAgICAgICBpZiBzZWxmLndidWZzaXplID09IDA6CisgICAgICAgICAgICBzZWxmLndmaWxlID0gX1NvY2tldFdyaXRlcihzZWxmLmNvbm5lY3Rpb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndmaWxlID0gc2VsZi5jb25uZWN0aW9uLm1ha2VmaWxlKCd3YicsIHNlbGYud2J1ZnNpemUpCiAKICAgICBkZWYgZmluaXNoKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi53ZmlsZS5jbG9zZWQ6CkBAIC03NDIsNiArNzYwLDI0IEBACiAgICAgICAgIHNlbGYud2ZpbGUuY2xvc2UoKQogICAgICAgICBzZWxmLnJmaWxlLmNsb3NlKCkKIAorY2xhc3MgX1NvY2tldFdyaXRlcihCdWZmZXJlZElPQmFzZSk6CisgICAgIiIiU2ltcGxlIHdyaXRhYmxlIEJ1ZmZlcmVkSU9CYXNlIGltcGxlbWVudGF0aW9uIGZvciBhIHNvY2tldAorCisgICAgRG9lcyBub3QgaG9sZCBkYXRhIGluIGEgYnVmZmVyLCBhdm9pZGluZyBhbnkgbmVlZCB0byBjYWxsIGZsdXNoKCkuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29jayk6CisgICAgICAgIHNlbGYuX3NvY2sgPSBzb2NrCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgYik6CisgICAgICAgIHNlbGYuX3NvY2suc2VuZGFsbChiKQorICAgICAgICB3aXRoIG1lbW9yeXZpZXcoYikgYXMgdmlldzoKKyAgICAgICAgICAgIHJldHVybiB2aWV3Lm5ieXRlcworCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2suZmlsZW5vKCkKIAogY2xhc3MgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlcihCYXNlUmVxdWVzdEhhbmRsZXIpOgogCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQppbmRleCA3ZmI4ZDdlLi5jYjg1ODE0IDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKQEAgLTE4OCw3ICsxODgsMTAgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuY3ggPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQogICAgICAgICBzZWxmLmN1ID0gc2VsZi5jeC5jdXJzb3IoKQotICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGlkIGludGVnZXIgcHJpbWFyeSBrZXksIG5hbWUgdGV4dCwgaW5jb21lIG51bWJlcikiKQorICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoCisgICAgICAgICAgICAiY3JlYXRlIHRhYmxlIHRlc3QoaWQgaW50ZWdlciBwcmltYXJ5IGtleSwgbmFtZSB0ZXh0LCAiCisgICAgICAgICAgICAiaW5jb21lIG51bWJlciwgdW5pcXVlX3Rlc3QgdGV4dCB1bmlxdWUpIgorICAgICAgICApCiAgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChuYW1lKSB2YWx1ZXMgKD8pIiwgKCJmb28iLCkpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC00NjIsNiArNDY1LDQ0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIGN1ciA9IHNxbGl0ZS5DdXJzb3IoZm9vKQogCisgICAgZGVmIENoZWNrTGFzdFJvd0lET25SZXBsYWNlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgSU5TRVJUIE9SIFJFUExBQ0UgYW5kIFJFUExBQ0UgSU5UTyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSBiZWhhdmlvci4KKyAgICAgICAgIiIiCisgICAgICAgIHNxbCA9ICd7fSBJTlRPIHRlc3QoaWQsIHVuaXF1ZV90ZXN0KSBWQUxVRVMgKD8sID8pJworICAgICAgICBmb3Igc3RhdGVtZW50IGluICgnSU5TRVJUIE9SIFJFUExBQ0UnLCAnUkVQTEFDRScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc3RhdGVtZW50PXN0YXRlbWVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5jdS5leGVjdXRlKHNxbC5mb3JtYXQoc3RhdGVtZW50KSwgKDEsICdmb28nKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY3UubGFzdHJvd2lkLCAxKQorCisgICAgZGVmIENoZWNrTGFzdFJvd0lET25JZ25vcmUoc2VsZik6CisgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgKKyAgICAgICAgICAgICJpbnNlcnQgb3IgaWdub3JlIGludG8gdGVzdCh1bmlxdWVfdGVzdCkgdmFsdWVzICg/KSIsCisgICAgICAgICAgICAoJ3Rlc3QnLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jdS5sYXN0cm93aWQsIDIpCisgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgKKyAgICAgICAgICAgICJpbnNlcnQgb3IgaWdub3JlIGludG8gdGVzdCh1bmlxdWVfdGVzdCkgdmFsdWVzICg/KSIsCisgICAgICAgICAgICAoJ3Rlc3QnLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jdS5sYXN0cm93aWQsIDIpCisKKyAgICBkZWYgQ2hlY2tMYXN0Um93SURJbnNlcnRPUihzZWxmKToKKyAgICAgICAgcmVzdWx0cyA9IFtdCisgICAgICAgIGZvciBzdGF0ZW1lbnQgaW4gKCdGQUlMJywgJ0FCT1JUJywgJ1JPTExCQUNLJyk6CisgICAgICAgICAgICBzcWwgPSAnSU5TRVJUIE9SIHt9IElOVE8gdGVzdCh1bmlxdWVfdGVzdCkgVkFMVUVTICg/KScKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHN0YXRlbWVudD0nSU5TRVJUIE9SIHt9Jy5mb3JtYXQoc3RhdGVtZW50KSk6CisgICAgICAgICAgICAgICAgc2VsZi5jdS5leGVjdXRlKHNxbC5mb3JtYXQoc3RhdGVtZW50KSwgKHN0YXRlbWVudCwpKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChzdGF0ZW1lbnQsIHNlbGYuY3UubGFzdHJvd2lkKSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNxbGl0ZS5JbnRlZ3JpdHlFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY3UuZXhlY3V0ZShzcWwuZm9ybWF0KHN0YXRlbWVudCksIChzdGF0ZW1lbnQsKSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgoc3RhdGVtZW50LCBzZWxmLmN1Lmxhc3Ryb3dpZCkpCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCdGQUlMJywgMiksICgnRkFJTCcsIDIpLAorICAgICAgICAgICAgKCdBQk9SVCcsIDMpLCAoJ0FCT1JUJywgMyksCisgICAgICAgICAgICAoJ1JPTExCQUNLJywgNCksICgnUk9MTEJBQ0snLCA0KSwKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMsIGV4cGVjdGVkKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RoaXMgdGVzdCByZXF1aXJlcyB0aHJlYWRpbmcuJykKIGNsYXNzIFRocmVhZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CmluZGV4IGEyNTM2MGEuLjQ1ZjFiMDQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CkBAIC01MiwxMyArNTIsMTMgQEAKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgQ2hlY2tETUxkb2VzQXV0b0NvbW1pdEJlZm9yZShzZWxmKToKKyAgICBkZWYgQ2hlY2tETUxEb2VzTm90QXV0b0NvbW1pdEJlZm9yZShzZWxmKToKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoaSkgdmFsdWVzICg1KSIpCiAgICAgICAgIHNlbGYuY3VyMS5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdDIoaikiKQogICAgICAgICBzZWxmLmN1cjIuZXhlY3V0ZSgic2VsZWN0IGkgZnJvbSB0ZXN0IikKICAgICAgICAgcmVzID0gc2VsZi5jdXIyLmZldGNoYWxsKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzKSwgMCkKIAogICAgIGRlZiBDaGVja0luc2VydFN0YXJ0c1RyYW5zYWN0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQpAQCAtMTUzLDExICsxNTMsNiBAQAogICAgICAgICBzZWxmLmNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCiAgICAgICAgIHNlbGYuY3VyID0gc2VsZi5jb24uY3Vyc29yKCkKIAotICAgIGRlZiBDaGVja1ZhY3V1bShzZWxmKToKLSAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KGkpIHZhbHVlcyAoNSkiKQotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJ2YWN1dW0iKQotCiAgICAgZGVmIENoZWNrRHJvcFRhYmxlKHNlbGYpOgogICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCiAgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoaSkgdmFsdWVzICg1KSIpCkBAIC0xNzIsMTAgKzE2NywzNSBAQAogICAgICAgICBzZWxmLmN1ci5jbG9zZSgpCiAgICAgICAgIHNlbGYuY29uLmNsb3NlKCkKIAorY2xhc3MgVHJhbnNhY3Rpb25hbERETCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisKKyAgICBkZWYgQ2hlY2tEZGxEb2VzTm90QXV0b3N0YXJ0VHJhbnNhY3Rpb24oc2VsZik6CisgICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIERETCBzdGF0ZW1lbnRzIHNob3VsZCBub3QKKyAgICAgICAgIyBpbXBsaWNpdGx5IHN0YXJ0IGEgdHJhbnNhY3Rpb24uCisgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKKyAgICAgICAgc2VsZi5jb24ucm9sbGJhY2soKQorICAgICAgICByZXN1bHQgPSBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgKiBmcm9tIHRlc3QiKS5mZXRjaGFsbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbXSkKKworICAgIGRlZiBDaGVja1RyYW5zYWN0aW9uYWxEREwoc2VsZik6CisgICAgICAgICMgWW91IGNhbiBhY2hpZXZlIHRyYW5zYWN0aW9uYWwgRERMIGJ5IGlzc3VpbmcgYSBCRUdJTgorICAgICAgICAjIHN0YXRlbWVudCBtYW51YWxseS4KKyAgICAgICAgc2VsZi5jb24uZXhlY3V0ZSgiYmVnaW4iKQorICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCisgICAgICAgIHNlbGYuY29uLnJvbGxiYWNrKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzcWxpdGUuT3BlcmF0aW9uYWxFcnJvcik6CisgICAgICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgKiBmcm9tIHRlc3QiKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNvbi5jbG9zZSgpCisKIGRlZiBzdWl0ZSgpOgogICAgIGRlZmF1bHRfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoVHJhbnNhY3Rpb25UZXN0cywgIkNoZWNrIikKICAgICBzcGVjaWFsX2NvbW1hbmRfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoU3BlY2lhbENvbW1hbmRUZXN0cywgIkNoZWNrIikKLSAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKChkZWZhdWx0X3N1aXRlLCBzcGVjaWFsX2NvbW1hbmRfc3VpdGUpKQorICAgIGRkbF9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShUcmFuc2FjdGlvbmFsRERMLCAiQ2hlY2siKQorICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGRlZmF1bHRfc3VpdGUsIHNwZWNpYWxfY29tbWFuZF9zdWl0ZSwgZGRsX3N1aXRlKSkKIAogZGVmIHRlc3QoKToKICAgICBydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcigpCmRpZmYgLS1naXQgYS9MaWIvc3JlX2NvbXBpbGUucHkgYi9MaWIvc3JlX2NvbXBpbGUucHkKaW5kZXggNTAyYjA2MS4uNDIwZDgzZCAxMDA2NDQKLS0tIGEvTGliL3NyZV9jb21waWxlLnB5CisrKyBiL0xpYi9zcmVfY29tcGlsZS5weQpAQCAtNzEsNyArNzEsOCBAQAogICAgIEFTU0VSVF9DT0RFUyA9IF9BU1NFUlRfQ09ERVMKICAgICBpZiAoZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFIGFuZAogICAgICAgICAgICAgbm90IChmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkgYW5kCi0gICAgICAgICAgICBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpOgorICAgICAgICAgICAgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFIGFuZAorICAgICAgICAgICAgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKSk6CiAgICAgICAgIGZpeGVzID0gX2lnbm9yZWNhc2VfZml4ZXMKICAgICBlbHNlOgogICAgICAgICBmaXhlcyA9IE5vbmUKQEAgLTEzNywxNCArMTM4LDE1IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZW1pdChNSU5fVU5USUwpCiAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKLSAgICAgICAgICAgIGlmIGF2WzBdOgorICAgICAgICAgICAgZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwID0gYXYKKyAgICAgICAgICAgIGlmIGdyb3VwOgogICAgICAgICAgICAgICAgIGVtaXQoTUFSSykKLSAgICAgICAgICAgICAgICBlbWl0KChhdlswXS0xKSoyKQotICAgICAgICAgICAgIyBfY29tcGlsZV9pbmZvKGNvZGUsIGF2WzFdLCBmbGFncykKLSAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzFdLCBmbGFncykKLSAgICAgICAgICAgIGlmIGF2WzBdOgorICAgICAgICAgICAgICAgIGVtaXQoKGdyb3VwLTEpKjIpCisgICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgcCwgKGZsYWdzIHwgYWRkX2ZsYWdzKSAmIH5kZWxfZmxhZ3MpCisgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBwLCAoZmxhZ3MgfCBhZGRfZmxhZ3MpICYgfmRlbF9mbGFncykKKyAgICAgICAgICAgIGlmIGdyb3VwOgogICAgICAgICAgICAgICAgIGVtaXQoTUFSSykKLSAgICAgICAgICAgICAgICBlbWl0KChhdlswXS0xKSoyKzEpCisgICAgICAgICAgICAgICAgZW1pdCgoZ3JvdXAtMSkqMisxKQogICAgICAgICBlbGlmIG9wIGluIFNVQ0NFU1NfQ09ERVM6CiAgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICBlbGlmIG9wIGluIEFTU0VSVF9DT0RFUzoKQEAgLTE3Miw3ICsxNzQsNyBAQAogICAgICAgICAgICAgICAgIGF2ID0gQVRfTVVMVElMSU5FLmdldChhdiwgYXYpCiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBhdiA9IEFUX0xPQ0FMRS5nZXQoYXYsIGF2KQotICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CisgICAgICAgICAgICBlbGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpIGFuZCBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpOgogICAgICAgICAgICAgICAgIGF2ID0gQVRfVU5JQ09ERS5nZXQoYXYsIGF2KQogICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6CkBAIC0xOTMsNyArMTk1LDcgQEAKICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBhdiA9IENIX0xPQ0FMRVthdl0KLSAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgorICAgICAgICAgICAgZWxpZiAoZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKSBhbmQgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKToKICAgICAgICAgICAgICAgICBhdiA9IENIX1VOSUNPREVbYXZdCiAgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGOgpAQCAtMjM3LDcgKzIzOSw3IEBACiAgICAgICAgIGVsaWYgb3AgaXMgQ0FURUdPUlk6CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBlbWl0KENIX0xPQ0FMRVthdl0pCi0gICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKKyAgICAgICAgICAgIGVsaWYgKGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgYW5kIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19BU0NJSSk6CiAgICAgICAgICAgICAgICAgZW1pdChDSF9VTklDT0RFW2F2XSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZW1pdChhdikKQEAgLTQwOSw0MiArNDExLDQyIEBACiAgICAgICAgICAgICB0YWJsZVtpXSA9IGlkeCArIDEKICAgICByZXR1cm4gdGFibGUKIAotZGVmIF9jb21waWxlX2luZm8oY29kZSwgcGF0dGVybiwgZmxhZ3MpOgotICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgYW4gaW5mbyBibG9jay4gIGluIHRoZSBjdXJyZW50IHZlcnNpb24sCi0gICAgIyB0aGlzIGNvbnRhaW5zIG1pbi9tYXggcGF0dGVybiB3aWR0aCwgYW5kIGFuIG9wdGlvbmFsIGxpdGVyYWwKLSAgICAjIHByZWZpeCBvciBhIGNoYXJhY3RlciBtYXAKLSAgICBsbywgaGkgPSBwYXR0ZXJuLmdldHdpZHRoKCkKLSAgICBpZiBoaSA+IE1BWENPREU6Ci0gICAgICAgIGhpID0gTUFYQ09ERQotICAgIGlmIGxvID09IDA6Ci0gICAgICAgIGNvZGUuZXh0ZW5kKFtJTkZPLCA0LCAwLCBsbywgaGldKQotICAgICAgICByZXR1cm4KLSAgICAjIGxvb2sgZm9yIGEgbGl0ZXJhbCBwcmVmaXgKK2RlZiBfZ2V0X2xpdGVyYWxfcHJlZml4KHBhdHRlcm4pOgorICAgICMgbG9vayBmb3IgbGl0ZXJhbCBwcmVmaXgKICAgICBwcmVmaXggPSBbXQogICAgIHByZWZpeGFwcGVuZCA9IHByZWZpeC5hcHBlbmQKLSAgICBwcmVmaXhfc2tpcCA9IDAKKyAgICBwcmVmaXhfc2tpcCA9IE5vbmUKKyAgICBmb3Igb3AsIGF2IGluIHBhdHRlcm4uZGF0YToKKyAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKKyAgICAgICAgICAgIHByZWZpeGFwcGVuZChhdikKKyAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOOgorICAgICAgICAgICAgZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwID0gYXYKKyAgICAgICAgICAgIGlmIGFkZF9mbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHByZWZpeDEsIHByZWZpeF9za2lwMSwgZ290X2FsbCA9IF9nZXRfbGl0ZXJhbF9wcmVmaXgocCkKKyAgICAgICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHByZWZpeF9za2lwID0gbGVuKHByZWZpeCkKKyAgICAgICAgICAgICAgICBlbGlmIHByZWZpeF9za2lwMSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4X3NraXAgPSBsZW4ocHJlZml4KSArIHByZWZpeF9za2lwMQorICAgICAgICAgICAgcHJlZml4LmV4dGVuZChwcmVmaXgxKQorICAgICAgICAgICAgaWYgbm90IGdvdF9hbGw6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyZWFrCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHByZWZpeCwgcHJlZml4X3NraXAsIFRydWUKKyAgICByZXR1cm4gcHJlZml4LCBwcmVmaXhfc2tpcCwgRmFsc2UKKworZGVmIF9nZXRfY2hhcnNldF9wcmVmaXgocGF0dGVybik6CiAgICAgY2hhcnNldCA9IFtdICMgbm90IHVzZWQKICAgICBjaGFyc2V0YXBwZW5kID0gY2hhcnNldC5hcHBlbmQKLSAgICBpZiBub3QgKGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSk6Ci0gICAgICAgICMgbG9vayBmb3IgbGl0ZXJhbCBwcmVmaXgKLSAgICAgICAgZm9yIG9wLCBhdiBpbiBwYXR0ZXJuLmRhdGE6Ci0gICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgotICAgICAgICAgICAgICAgIGlmIGxlbihwcmVmaXgpID09IHByZWZpeF9za2lwOgotICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2tpcCA9IHByZWZpeF9za2lwICsgMQotICAgICAgICAgICAgICAgIHByZWZpeGFwcGVuZChhdikKLSAgICAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTiBhbmQgbGVuKGF2WzFdKSA9PSAxOgotICAgICAgICAgICAgICAgIG9wLCBhdiA9IGF2WzFdWzBdCi0gICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4YXBwZW5kKGF2KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICMgaWYgbm8gcHJlZml4LCBsb29rIGZvciBjaGFyc2V0IHByZWZpeAotICAgICAgICBpZiBub3QgcHJlZml4IGFuZCBwYXR0ZXJuLmRhdGE6Ci0gICAgICAgICAgICBvcCwgYXYgPSBwYXR0ZXJuLmRhdGFbMF0KLSAgICAgICAgICAgIGlmIG9wIGlzIFNVQlBBVFRFUk4gYW5kIGF2WzFdOgotICAgICAgICAgICAgICAgIG9wLCBhdiA9IGF2WzFdWzBdCisgICAgaWYgcGF0dGVybi5kYXRhOgorICAgICAgICBvcCwgYXYgPSBwYXR0ZXJuLmRhdGFbMF0KKyAgICAgICAgaWYgb3AgaXMgU1VCUEFUVEVSTjoKKyAgICAgICAgICAgIGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCA9IGF2CisgICAgICAgICAgICBpZiBwIGFuZCBub3QgKGFkZF9mbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UpOgorICAgICAgICAgICAgICAgIG9wLCBhdiA9IHBbMF0KICAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgogICAgICAgICAgICAgICAgICAgICBjaGFyc2V0YXBwZW5kKChvcCwgYXYpKQogICAgICAgICAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgpAQCAtNDYwLDIxICs0NjIsNDMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9IGMKLSAgICAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgotICAgICAgICAgICAgICAgIGMgPSBbXQotICAgICAgICAgICAgICAgIGNhcHBlbmQgPSBjLmFwcGVuZAotICAgICAgICAgICAgICAgIGZvciBwIGluIGF2WzFdOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIG9wLCBhdiA9IHBbMF0KLSAgICAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhcHBlbmQoKG9wLCBhdikpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKKyAgICAgICAgICAgIGMgPSBbXQorICAgICAgICAgICAgY2FwcGVuZCA9IGMuYXBwZW5kCisgICAgICAgICAgICBmb3IgcCBpbiBhdlsxXToKKyAgICAgICAgICAgICAgICBpZiBub3QgcDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBvcCwgYXYgPSBwWzBdCisgICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKKyAgICAgICAgICAgICAgICAgICAgY2FwcGVuZCgob3AsIGF2KSkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYwotICAgICAgICAgICAgZWxpZiBvcCBpcyBJTjoKLSAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYXYKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hhcnNldCA9IGMKKyAgICAgICAgZWxpZiBvcCBpcyBJTjoKKyAgICAgICAgICAgIGNoYXJzZXQgPSBhdgorICAgIHJldHVybiBjaGFyc2V0CisKK2RlZiBfY29tcGlsZV9pbmZvKGNvZGUsIHBhdHRlcm4sIGZsYWdzKToKKyAgICAjIGludGVybmFsOiBjb21waWxlIGFuIGluZm8gYmxvY2suICBpbiB0aGUgY3VycmVudCB2ZXJzaW9uLAorICAgICMgdGhpcyBjb250YWlucyBtaW4vbWF4IHBhdHRlcm4gd2lkdGgsIGFuZCBhbiBvcHRpb25hbCBsaXRlcmFsCisgICAgIyBwcmVmaXggb3IgYSBjaGFyYWN0ZXIgbWFwCisgICAgbG8sIGhpID0gcGF0dGVybi5nZXR3aWR0aCgpCisgICAgaWYgaGkgPiBNQVhDT0RFOgorICAgICAgICBoaSA9IE1BWENPREUKKyAgICBpZiBsbyA9PSAwOgorICAgICAgICBjb2RlLmV4dGVuZChbSU5GTywgNCwgMCwgbG8sIGhpXSkKKyAgICAgICAgcmV0dXJuCisgICAgIyBsb29rIGZvciBhIGxpdGVyYWwgcHJlZml4CisgICAgcHJlZml4ID0gW10KKyAgICBwcmVmaXhfc2tpcCA9IDAKKyAgICBjaGFyc2V0ID0gW10gIyBub3QgdXNlZAorICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFKToKKyAgICAgICAgIyBsb29rIGZvciBsaXRlcmFsIHByZWZpeAorICAgICAgICBwcmVmaXgsIHByZWZpeF9za2lwLCBnb3RfYWxsID0gX2dldF9saXRlcmFsX3ByZWZpeChwYXR0ZXJuKQorICAgICAgICAjIGlmIG5vIHByZWZpeCwgbG9vayBmb3IgY2hhcnNldCBwcmVmaXgKKyAgICAgICAgaWYgbm90IHByZWZpeDoKKyAgICAgICAgICAgIGNoYXJzZXQgPSBfZ2V0X2NoYXJzZXRfcHJlZml4KHBhdHRlcm4pCiAjIyAgICAgaWYgcHJlZml4OgogIyMgICAgICAgICBwcmludCgiKioqIFBSRUZJWCIsIHByZWZpeCwgcHJlZml4X3NraXApCiAjIyAgICAgaWYgY2hhcnNldDoKQEAgLTQ4Nyw3ICs1MTEsNyBAQAogICAgIG1hc2sgPSAwCiAgICAgaWYgcHJlZml4OgogICAgICAgICBtYXNrID0gU1JFX0lORk9fUFJFRklYCi0gICAgICAgIGlmIGxlbihwcmVmaXgpID09IHByZWZpeF9za2lwID09IGxlbihwYXR0ZXJuLmRhdGEpOgorICAgICAgICBpZiBwcmVmaXhfc2tpcCBpcyBOb25lIGFuZCBnb3RfYWxsOgogICAgICAgICAgICAgbWFzayA9IG1hc2sgfCBTUkVfSU5GT19MSVRFUkFMCiAgICAgZWxpZiBjaGFyc2V0OgogICAgICAgICBtYXNrID0gbWFzayB8IFNSRV9JTkZPX0NIQVJTRVQKQEAgLTUwMiw2ICs1MjYsOCBAQAogICAgICMgYWRkIGxpdGVyYWwgcHJlZml4CiAgICAgaWYgcHJlZml4OgogICAgICAgICBlbWl0KGxlbihwcmVmaXgpKSAjIGxlbmd0aAorICAgICAgICBpZiBwcmVmaXhfc2tpcCBpcyBOb25lOgorICAgICAgICAgICAgcHJlZml4X3NraXAgPSAgbGVuKHByZWZpeCkKICAgICAgICAgZW1pdChwcmVmaXhfc2tpcCkgIyBza2lwCiAgICAgICAgIGNvZGUuZXh0ZW5kKHByZWZpeCkKICAgICAgICAgIyBnZW5lcmF0ZSBvdmVybGFwIHRhYmxlCmRpZmYgLS1naXQgYS9MaWIvc3JlX3BhcnNlLnB5IGIvTGliL3NyZV9wYXJzZS5weQppbmRleCA0ZmY1MGQxLi4zZDM4NjczIDEwMDY0NAotLS0gYS9MaWIvc3JlX3BhcnNlLnB5CisrKyBiL0xpYi9zcmVfcGFyc2UucHkKQEAgLTY1LDYgKzY1LDEyIEBACiAgICAgInUiOiBTUkVfRkxBR19VTklDT0RFLAogfQogCitHTE9CQUxfRkxBR1MgPSAoU1JFX0ZMQUdfQVNDSUkgfCBTUkVfRkxBR19MT0NBTEUgfCBTUkVfRkxBR19VTklDT0RFIHwKKyAgICAgICAgICAgICAgICBTUkVfRkxBR19ERUJVRyB8IFNSRV9GTEFHX1RFTVBMQVRFKQorCitjbGFzcyBWZXJib3NlKEV4Y2VwdGlvbik6CisgICAgcGFzcworCiBjbGFzcyBQYXR0ZXJuOgogICAgICMgbWFzdGVyIHBhdHRlcm4gb2JqZWN0LiAga2VlcHMgdHJhY2sgb2YgZ2xvYmFsIGF0dHJpYnV0ZXMKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC0xODQsNyArMTkwLDcgQEAKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQogICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCiAgICAgICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46Ci0gICAgICAgICAgICAgICAgaSwgaiA9IGF2WzFdLmdldHdpZHRoKCkKKyAgICAgICAgICAgICAgICBpLCBqID0gYXZbLTFdLmdldHdpZHRoKCkKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQogICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCiAgICAgICAgICAgICBlbGlmIG9wIGluIF9SRVBFQVRDT0RFUzoKQEAgLTI3Myw2ICsyNzksOSBAQAogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICByZXN1bHQgKz0gYwogICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgQHByb3BlcnR5CisgICAgZGVmIHBvcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXggLSBsZW4oc2VsZi5uZXh0IG9yICcnKQogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5pbmRleCAtIGxlbihzZWxmLm5leHQgb3IgJycpCiAgICAgZGVmIHNlZWsoc2VsZiwgaW5kZXgpOgpAQCAtMjgyLDMzICsyOTEsNiBAQAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2csIG9mZnNldD0wKToKICAgICAgICAgcmV0dXJuIGVycm9yKG1zZywgc2VsZi5zdHJpbmcsIHNlbGYudGVsbCgpIC0gb2Zmc2V0KQogCi0jIFRoZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zIGFyZSBub3QgdXNlZCBpbiB0aGlzIG1vZHVsZSBhbnltb3JlLCBidXQgd2Uga2VlcAotIyB0aGVtIGhlcmUgKHdpdGggRGVwcmVjYXRpb25XYXJuaW5ncykgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgotCi1kZWYgaXNpZGVudChjaGFyKToKLSAgICBpbXBvcnQgd2FybmluZ3MKLSAgICB3YXJuaW5ncy53YXJuKCdzcmVfcGFyc2UuaXNpZGVudCgpIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUnLAotICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuICJhIiA8PSBjaGFyIDw9ICJ6IiBvciAiQSIgPD0gY2hhciA8PSAiWiIgb3IgY2hhciA9PSAiXyIKLQotZGVmIGlzZGlnaXQoY2hhcik6Ci0gICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgd2FybmluZ3Mud2Fybignc3JlX3BhcnNlLmlzZGlnaXQoKSB3aWxsIGJlIHJlbW92ZWQgaW4gMy41JywKLSAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgIHJldHVybiAiMCIgPD0gY2hhciA8PSAiOSIKLQotZGVmIGlzbmFtZShuYW1lKToKLSAgICBpbXBvcnQgd2FybmluZ3MKLSAgICB3YXJuaW5ncy53YXJuKCdzcmVfcGFyc2UuaXNuYW1lKCkgd2lsbCBiZSByZW1vdmVkIGluIDMuNScsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAjIGNoZWNrIHRoYXQgZ3JvdXAgbmFtZSBpcyBhIHZhbGlkIHN0cmluZwotICAgIGlmIG5vdCBpc2lkZW50KG5hbWVbMF0pOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBmb3IgY2hhciBpbiBuYW1lWzE6XToKLSAgICAgICAgaWYgbm90IGlzaWRlbnQoY2hhcikgYW5kIG5vdCBpc2RpZ2l0KGNoYXIpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIFRydWUKLQogZGVmIF9jbGFzc19lc2NhcGUoc291cmNlLCBlc2NhcGUpOgogICAgICMgaGFuZGxlIGVzY2FwZSBjb2RlIGluc2lkZSBjaGFyYWN0ZXIgY2xhc3MKICAgICBjb2RlID0gRVNDQVBFUy5nZXQoZXNjYXBlKQpAQCAtMzUxLDkgKzMzMyw3IEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CiAgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD04KQorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKQEAgLTQxOCwxNSArMzk4LDEzIEBACiAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwgbGVuKGVzY2FwZSkpCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CiAgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD04KQorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKIAotZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgbmVzdGVkPVRydWUpOgorZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSwgbmVzdGVkPVRydWUpOgogICAgICMgcGFyc2UgYW4gYWx0ZXJuYXRpb246IGF8YnxjCiAKICAgICBpdGVtcyA9IFtdCkBAIC00MzQsNyArNDEyLDcgQEAKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgIHN0YXJ0ID0gc291cmNlLnRlbGwoKQogICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGl0ZW1zYXBwZW5kKF9wYXJzZShzb3VyY2UsIHN0YXRlKSkKKyAgICAgICAgaXRlbXNhcHBlbmQoX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpKQogICAgICAgICBpZiBub3Qgc291cmNlbWF0Y2goInwiKToKICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTQ3NiwxMCArNDU0LDEwIEBACiAgICAgc3VicGF0dGVybi5hcHBlbmQoKEJSQU5DSCwgKE5vbmUsIGl0ZW1zKSkpCiAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAotZGVmIF9wYXJzZV9zdWJfY29uZChzb3VyY2UsIHN0YXRlLCBjb25kZ3JvdXApOgotICAgIGl0ZW1feWVzID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUpCitkZWYgX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCwgdmVyYm9zZSk6CisgICAgaXRlbV95ZXMgPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkKICAgICBpZiBzb3VyY2UubWF0Y2goInwiKToKLSAgICAgICAgaXRlbV9ubyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlKQorICAgICAgICBpdGVtX25vID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpCiAgICAgICAgIGlmIHNvdXJjZS5uZXh0ID09ICJ8IjoKICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiY29uZGl0aW9uYWwgYmFja3JlZiB3aXRoIG1vcmUgdGhhbiB0d28gYnJhbmNoZXMiKQogICAgIGVsc2U6CkBAIC00ODgsNyArNDY2LDcgQEAKICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoR1JPVVBSRUZfRVhJU1RTLCAoY29uZGdyb3VwLCBpdGVtX3llcywgaXRlbV9ubykpKQogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKLWRlZiBfcGFyc2Uoc291cmNlLCBzdGF0ZSk6CitkZWYgX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpOgogICAgICMgcGFyc2UgYSBzaW1wbGUgcGF0dGVybgogICAgIHN1YnBhdHRlcm4gPSBTdWJQYXR0ZXJuKHN0YXRlKQogCkBAIC00OTgsNyArNDc2LDYgQEAKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgIF9sZW4gPSBsZW4KICAgICBfb3JkID0gb3JkCi0gICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQogCiAgICAgd2hpbGUgVHJ1ZToKIApAQCAtNjUyLDYgKzYyOSw4IEBACiAgICAgICAgICAgICBncm91cCA9IFRydWUKICAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgICAgICBjb25kZ3JvdXAgPSBOb25lCisgICAgICAgICAgICBhZGRfZmxhZ3MgPSAwCisgICAgICAgICAgICBkZWxfZmxhZ3MgPSAwCiAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPyIpOgogICAgICAgICAgICAgICAgICMgb3B0aW9ucwogICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQpAQCAtNzEzLDcgKzY5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBsb29rYmVoaW5kZ3JvdXBzID0gc3RhdGUubG9va2JlaGluZGdyb3VwcwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9va2JlaGluZGdyb3VwcyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxvb2tiZWhpbmRncm91cHMgPSBzdGF0ZS5ncm91cHMKLSAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgaWYgZGlyIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvb2tiZWhpbmRncm91cHMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzID0gTm9uZQpAQCAtNzQ5LDE5ICs3MjgsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbmRuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGNvbmRncm91cCwgc291cmNlKQotICAgICAgICAgICAgICAgIGVsaWYgY2hhciBpbiBGTEFHUzoKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXIgaW4gRkxBR1Mgb3IgY2hhciA9PSAiLSI6CiAgICAgICAgICAgICAgICAgICAgICMgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmZsYWdzIHw9IEZMQUdTW2NoYXJdCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGZsYWciLCBsZW4oY2hhcikpCi0gICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gc291cmNlLnBvcworICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9wYXJzZV9mbGFncyhzb3VyY2UsIHN0YXRlLCBjaGFyKQorICAgICAgICAgICAgICAgICAgICBpZiBmbGFncyBpcyBOb25lOiAgIyBnbG9iYWwgZmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBvcyAhPSAzOiAgIyAiKD94IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGbGFncyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBleHByZXNzaW9uICVzJXMnICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnN0cmluZ1s6MjBdLCAgIyB0cnVuY2F0ZSBsb25nIHJlZ2V4ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKHRydW5jYXRlZCknIGlmIGxlbihzb3VyY2Uuc3RyaW5nKSA+IDIwIGVsc2UgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD03CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MgPSBmbGFncworICAgICAgICAgICAgICAgICAgICBncm91cCA9IE5vbmUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID8iICsgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjaGFyKSArIDEpCkBAIC03NzMsMTUgKzc1NiwxNyBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBlcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihlcnIubXNnLCBsZW4obmFtZSkgKyAxKSBmcm9tIE5vbmUKICAgICAgICAgICAgIGlmIGNvbmRncm91cDoKLSAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCkKKyAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCwgdmVyYm9zZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgICAgICBzdWJfdmVyYm9zZSA9ICgodmVyYm9zZSBvciAoYWRkX2ZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCAoZGVsX2ZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkpCisgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgc3ViX3ZlcmJvc2UpCiAgICAgICAgICAgICBpZiBub3Qgc291cmNlLm1hdGNoKCIpIik6CiAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIHN0YXJ0KQogICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3RhdGUuY2xvc2Vncm91cChncm91cCwgcCkKLSAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKFNVQlBBVFRFUk4sIChncm91cCwgcCkpKQorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCkpKQogCiAgICAgICAgIGVsaWYgdGhpcyA9PSAiXiI6CiAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBVCwgQVRfQkVHSU5OSU5HKSkKQEAgLTc5NCwxNCArNzc5LDU4IEBACiAKICAgICByZXR1cm4gc3VicGF0dGVybgogCitkZWYgX3BhcnNlX2ZsYWdzKHNvdXJjZSwgc3RhdGUsIGNoYXIpOgorICAgIHNvdXJjZWdldCA9IHNvdXJjZS5nZXQKKyAgICBhZGRfZmxhZ3MgPSAwCisgICAgZGVsX2ZsYWdzID0gMAorICAgIGlmIGNoYXIgIT0gIi0iOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYWRkX2ZsYWdzIHw9IEZMQUdTW2NoYXJdCisgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKKyAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgLSwgOiBvciApIikKKyAgICAgICAgICAgIGlmIGNoYXIgaW4gIiktOiI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGZsYWciIGlmIGNoYXIuaXNhbHBoYSgpIGVsc2UgIm1pc3NpbmcgLSwgOiBvciApIgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjaGFyKSkKKyAgICBpZiBjaGFyID09ICIpIjoKKyAgICAgICAgaWYgKChhZGRfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSBhbmQKKyAgICAgICAgICAgIG5vdCAoc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSk6CisgICAgICAgICAgICByYWlzZSBWZXJib3NlCisgICAgICAgIHN0YXRlLmZsYWdzIHw9IGFkZF9mbGFncworICAgICAgICByZXR1cm4gTm9uZQorICAgIGlmIGFkZF9mbGFncyAmIEdMT0JBTF9GTEFHUzoKKyAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvbiBnbG9iYWwgZmxhZyIsIDEpCisgICAgaWYgY2hhciA9PSAiLSI6CisgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgZmxhZyIpCisgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyBmbGFnIgorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGVsX2ZsYWdzIHw9IEZMQUdTW2NoYXJdCisgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKKyAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgOiIpCisgICAgICAgICAgICBpZiBjaGFyID09ICI6IjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyA6IgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjaGFyKSkKKyAgICBhc3NlcnQgY2hhciA9PSAiOiIKKyAgICBpZiBkZWxfZmxhZ3MgJiBHTE9CQUxfRkxBR1M6CisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGlubGluZSBmbGFnczogY2Fubm90IHR1cm4gb2ZmIGdsb2JhbCBmbGFnIiwgMSkKKyAgICBpZiBhZGRfZmxhZ3MgJiBkZWxfZmxhZ3M6CisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGlubGluZSBmbGFnczogZmxhZyB0dXJuZWQgb24gYW5kIG9mZiIsIDEpCisgICAgcmV0dXJuIGFkZF9mbGFncywgZGVsX2ZsYWdzCisKIGRlZiBmaXhfZmxhZ3Moc3JjLCBmbGFncyk6CiAgICAgIyBDaGVjayBhbmQgZml4IGZsYWdzIGFjY29yZGluZyB0byB0aGUgdHlwZSBvZiBwYXR0ZXJuIChzdHIgb3IgYnl0ZXMpCiAgICAgaWYgaXNpbnN0YW5jZShzcmMsIHN0cik6CiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJMT0NBTEUgZmxhZyB3aXRoIGEgc3RyIHBhdHRlcm4gaXMgZGVwcmVjYXRlZC4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lsbCBiZSBhbiBlcnJvciBpbiAzLjYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCB1c2UgTE9DQUxFIGZsYWcgd2l0aCBhIHN0ciBwYXR0ZXJuIikKICAgICAgICAgaWYgbm90IGZsYWdzICYgU1JFX0ZMQUdfQVNDSUk6CiAgICAgICAgICAgICBmbGFncyB8PSBTUkVfRkxBR19VTklDT0RFCiAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgpAQCAtODEwLDEwICs4MzksNyBAQAogICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgdXNlIFVOSUNPREUgZmxhZyB3aXRoIGEgYnl0ZXMgcGF0dGVybiIpCiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFIGFuZCBmbGFncyAmIFNSRV9GTEFHX0FTQ0lJOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJBU0NJSSBhbmQgTE9DQUxFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbGwgYmUgYW4gZXJyb3IgaW4gMy42IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTYpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBU0NJSSBhbmQgTE9DQUxFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUiKQogICAgIHJldHVybiBmbGFncwogCiBkZWYgcGFyc2Uoc3RyLCBmbGFncz0wLCBwYXR0ZXJuPU5vbmUpOgpAQCAtODI2LDE4ICs4NTIsMjMgQEAKICAgICBwYXR0ZXJuLmZsYWdzID0gZmxhZ3MKICAgICBwYXR0ZXJuLnN0ciA9IHN0cgogCi0gICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBwYXR0ZXJuLCAwKQorICAgIHRyeToKKyAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBwYXR0ZXJuLCBmbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UsIEZhbHNlKQorICAgIGV4Y2VwdCBWZXJib3NlOgorICAgICAgICAjIHRoZSBWRVJCT1NFIGZsYWcgd2FzIHN3aXRjaGVkIG9uIGluc2lkZSB0aGUgcGF0dGVybi4gIHRvIGJlCisgICAgICAgICMgb24gdGhlIHNhZmUgc2lkZSwgd2UnbGwgcGFyc2UgdGhlIHdob2xlIHRoaW5nIGFnYWluLi4uCisgICAgICAgIHBhdHRlcm4gPSBQYXR0ZXJuKCkKKyAgICAgICAgcGF0dGVybi5mbGFncyA9IGZsYWdzIHwgU1JFX0ZMQUdfVkVSQk9TRQorICAgICAgICBwYXR0ZXJuLnN0ciA9IHN0cgorICAgICAgICBzb3VyY2Uuc2VlaygwKQorICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIFRydWUsIEZhbHNlKQorCiAgICAgcC5wYXR0ZXJuLmZsYWdzID0gZml4X2ZsYWdzKHN0ciwgcC5wYXR0ZXJuLmZsYWdzKQogCiAgICAgaWYgc291cmNlLm5leHQgaXMgbm90IE5vbmU6CiAgICAgICAgIGFzc2VydCBzb3VyY2UubmV4dCA9PSAiKSIKICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzIikKIAotICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSBhbmQgcC5wYXR0ZXJuLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRToKLSAgICAgICAgIyB0aGUgVkVSQk9TRSBmbGFnIHdhcyBzd2l0Y2hlZCBvbiBpbnNpZGUgdGhlIHBhdHRlcm4uICB0byBiZQotICAgICAgICAjIG9uIHRoZSBzYWZlIHNpZGUsIHdlJ2xsIHBhcnNlIHRoZSB3aG9sZSB0aGluZyBhZ2Fpbi4uLgotICAgICAgICByZXR1cm4gcGFyc2Uoc3RyLCBwLnBhdHRlcm4uZmxhZ3MpCi0KICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0RFQlVHOgogICAgICAgICBwLmR1bXAoKQogCkBAIC05MTQsOSArOTQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdGhpcyA9IGNocihFU0NBUEVTW3RoaXNdWzFdKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTQpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzLmVycm9yKCdiYWQgZXNjYXBlICVzJyAlIHRoaXMsIGxlbih0aGlzKSkKICAgICAgICAgICAgICAgICBsYXBwZW5kKHRoaXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsYXBwZW5kKHRoaXMpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCBlMTkxMzkwLi44YWQ0YTMzIDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTUyLDYgKzUyLDggQEAKIFBST1RPQ09MX1NTTHYzCiBQUk9UT0NPTF9TU0x2MjMKIFBST1RPQ09MX1RMUworUFJPVE9DT0xfVExTX0NMSUVOVAorUFJPVE9DT0xfVExTX1NFUlZFUgogUFJPVE9DT0xfVExTdjEKIFBST1RPQ09MX1RMU3YxXzEKIFBST1RPQ09MX1RMU3YxXzIKQEAgLTk0LDE3ICs5NiwxNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIGVudW0gaW1wb3J0IEVudW0gYXMgX0VudW0sIEludEVudW0gYXMgX0ludEVudW0KK2Zyb20gZW51bSBpbXBvcnQgRW51bSBhcyBfRW51bSwgSW50RW51bSBhcyBfSW50RW51bSwgSW50RmxhZyBhcyBfSW50RmxhZwogCiBpbXBvcnQgX3NzbCAgICAgICAgICAgICAjIGlmIHdlIGNhbid0IGltcG9ydCBpdCwgbGV0IHRoZSBlcnJvciBwcm9wYWdhdGUKIAogZnJvbSBfc3NsIGltcG9ydCBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSLCBPUEVOU1NMX1ZFUlNJT05fSU5GTywgT1BFTlNTTF9WRVJTSU9OCi1mcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0LCBNZW1vcnlCSU8KK2Zyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQsIE1lbW9yeUJJTywgU1NMU2Vzc2lvbgogZnJvbSBfc3NsIGltcG9ydCAoCiAgICAgU1NMRXJyb3IsIFNTTFplcm9SZXR1cm5FcnJvciwgU1NMV2FudFJlYWRFcnJvciwgU1NMV2FudFdyaXRlRXJyb3IsCiAgICAgU1NMU3lzY2FsbEVycm9yLCBTU0xFT0ZFcnJvciwKICAgICApCi1mcm9tIF9zc2wgaW1wb3J0IENFUlRfTk9ORSwgQ0VSVF9PUFRJT05BTCwgQ0VSVF9SRVFVSVJFRAogZnJvbSBfc3NsIGltcG9ydCB0eHQyb2JqIGFzIF90eHQyb2JqLCBuaWQyb2JqIGFzIF9uaWQyb2JqCiBmcm9tIF9zc2wgaW1wb3J0IFJBTkRfc3RhdHVzLCBSQU5EX2FkZCwgUkFORF9ieXRlcywgUkFORF9wc2V1ZG9fYnl0ZXMKIHRyeToKQEAgLTExMywzMiArMTE0LDQ3IEBACiAgICAgIyBMaWJyZVNTTCBkb2VzIG5vdCBwcm92aWRlIFJBTkRfZWdkCiAgICAgcGFzcwogCi1kZWYgX2ltcG9ydF9zeW1ib2xzKHByZWZpeCk6Ci0gICAgZm9yIG4gaW4gZGlyKF9zc2wpOgotICAgICAgICBpZiBuLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgIGdsb2JhbHMoKVtuXSA9IGdldGF0dHIoX3NzbCwgbikKLQotX2ltcG9ydF9zeW1ib2xzKCdPUF8nKQotX2ltcG9ydF9zeW1ib2xzKCdBTEVSVF9ERVNDUklQVElPTl8nKQotX2ltcG9ydF9zeW1ib2xzKCdTU0xfRVJST1JfJykKLV9pbXBvcnRfc3ltYm9scygnVkVSSUZZXycpCiAKIGZyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4sIEhBU19BTFBOCi0KIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAorCiBfSW50RW51bS5fY29udmVydCgKLSAgICAgICAgJ19TU0xNZXRob2QnLCBfX25hbWVfXywKLSAgICAgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnUFJPVE9DT0xfJykgYW5kIG5hbWUgIT0gJ1BST1RPQ09MX1NTTHYyMycsCi0gICAgICAgIHNvdXJjZT1fc3NsKQorICAgICdfU1NMTWV0aG9kJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnUFJPVE9DT0xfJykgYW5kIG5hbWUgIT0gJ1BST1RPQ09MX1NTTHYyMycsCisgICAgc291cmNlPV9zc2wpCisKK19JbnRGbGFnLl9jb252ZXJ0KAorICAgICdPcHRpb25zJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnT1BfJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdBbGVydERlc2NyaXB0aW9uJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnQUxFUlRfREVTQ1JJUFRJT05fJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdTU0xFcnJvck51bWJlcicsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ1NTTF9FUlJPUl8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEZsYWcuX2NvbnZlcnQoCisgICAgJ1ZlcmlmeUZsYWdzJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnVkVSSUZZXycpLAorICAgIHNvdXJjZT1fc3NsKQorCitfSW50RW51bS5fY29udmVydCgKKyAgICAnVmVyaWZ5TW9kZScsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ0NFUlRfJyksCisgICAgc291cmNlPV9zc2wpCisKIAogUFJPVE9DT0xfU1NMdjIzID0gX1NTTE1ldGhvZC5QUk9UT0NPTF9TU0x2MjMgPSBfU1NMTWV0aG9kLlBST1RPQ09MX1RMUwogX1BST1RPQ09MX05BTUVTID0ge3ZhbHVlOiBuYW1lIGZvciBuYW1lLCB2YWx1ZSBpbiBfU1NMTWV0aG9kLl9fbWVtYmVyc19fLml0ZW1zKCl9CiAKLXRyeToKLSAgICBfU1NMdjJfSUZfRVhJU1RTID0gUFJPVE9DT0xfU1NMdjIKLWV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgX1NTTHYyX0lGX0VYSVNUUyA9IE5vbmUKK19TU0x2Ml9JRl9FWElTVFMgPSBnZXRhdHRyKF9TU0xNZXRob2QsICdQUk9UT0NPTF9TU0x2MicsIE5vbmUpCisKIAogaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CiAgICAgZnJvbSBfc3NsIGltcG9ydCBlbnVtX2NlcnRpZmljYXRlcywgZW51bV9jcmxzCkBAIC0zNzcsMTggKzM5MywxOCBAQAogICAgIGRlZiB3cmFwX3NvY2tldChzZWxmLCBzb2NrLCBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwgc2Vzc2lvbj1Ob25lKToKICAgICAgICAgcmV0dXJuIFNTTFNvY2tldChzb2NrPXNvY2ssIHNlcnZlcl9zaWRlPXNlcnZlcl9zaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PWRvX2hhbmRzaGFrZV9vbl9jb25uZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPXN1cHByZXNzX3JhZ2dlZF9lb2ZzLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9c2VsZikKKyAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmLCBfc2Vzc2lvbj1zZXNzaW9uKQogCiAgICAgZGVmIHdyYXBfYmlvKHNlbGYsIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsCi0gICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKToKKyAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSk6CiAgICAgICAgIHNzbG9iaiA9IHNlbGYuX3dyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgIHJldHVybiBTU0xPYmplY3Qoc3Nsb2JqKQorICAgICAgICByZXR1cm4gU1NMT2JqZWN0KHNzbG9iaiwgc2Vzc2lvbj1zZXNzaW9uKQogCiAgICAgZGVmIHNldF9ucG5fcHJvdG9jb2xzKHNlbGYsIG5wbl9wcm90b2NvbHMpOgogICAgICAgICBwcm90b3MgPSBieXRlYXJyYXkoKQpAQCAtNDM0LDYgKzQ1MCwzNCBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyhzdG9yZW5hbWUsIHB1cnBvc2UpCiAgICAgICAgIHNlbGYuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBvcHRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gT3B0aW9ucyhzdXBlcigpLm9wdGlvbnMpCisKKyAgICBAb3B0aW9ucy5zZXR0ZXIKKyAgICBkZWYgb3B0aW9ucyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHN1cGVyKFNTTENvbnRleHQsIFNTTENvbnRleHQpLm9wdGlvbnMuX19zZXRfXyhzZWxmLCB2YWx1ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJpZnlfZmxhZ3Moc2VsZik6CisgICAgICAgIHJldHVybiBWZXJpZnlGbGFncyhzdXBlcigpLnZlcmlmeV9mbGFncykKKworICAgIEB2ZXJpZnlfZmxhZ3Muc2V0dGVyCisgICAgZGVmIHZlcmlmeV9mbGFncyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHN1cGVyKFNTTENvbnRleHQsIFNTTENvbnRleHQpLnZlcmlmeV9mbGFncy5fX3NldF9fKHNlbGYsIHZhbHVlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcmlmeV9tb2RlKHNlbGYpOgorICAgICAgICB2YWx1ZSA9IHN1cGVyKCkudmVyaWZ5X21vZGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIFZlcmlmeU1vZGUodmFsdWUpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICBAdmVyaWZ5X21vZGUuc2V0dGVyCisgICAgZGVmIHZlcmlmeV9tb2RlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc3VwZXIoU1NMQ29udGV4dCwgU1NMQ29udGV4dCkudmVyaWZ5X21vZGUuX19zZXRfXyhzZWxmLCB2YWx1ZSkKKwogCiBkZWYgY3JlYXRlX2RlZmF1bHRfY29udGV4dChwdXJwb3NlPVB1cnBvc2UuU0VSVkVSX0FVVEgsICosIGNhZmlsZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwYXRoPU5vbmUsIGNhZGF0YT1Ob25lKToKQEAgLTQ0NiwzMiArNDkwLDE2IEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UocHVycG9zZSwgX0FTTjFPYmplY3QpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IocHVycG9zZSkKIAorICAgICMgU1NMQ29udGV4dCBzZXRzIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sCisgICAgIyBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UgYW5kIE9QX1NJTkdMRV9FQ0RIX1VTRQorICAgICMgYnkgZGVmYXVsdC4KICAgICBjb250ZXh0ID0gU1NMQ29udGV4dChQUk9UT0NPTF9UTFMpCiAKLSAgICAjIFNTTHYyIGNvbnNpZGVyZWQgaGFybWZ1bC4KLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjIKLQotICAgICMgU1NMdjMgaGFzIHByb2JsZW1hdGljIHNlY3VyaXR5IGFuZCBpcyBvbmx5IHJlcXVpcmVkIGZvciByZWFsbHkgb2xkCi0gICAgIyBjbGllbnRzIHN1Y2ggYXMgSUU2IG9uIFdpbmRvd3MgWFAKLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjMKLQotICAgICMgZGlzYWJsZSBjb21wcmVzc2lvbiB0byBwcmV2ZW50IENSSU1FIGF0dGFja3MgKE9wZW5TU0wgMS4wKykKLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKQotCiAgICAgaWYgcHVycG9zZSA9PSBQdXJwb3NlLlNFUlZFUl9BVVRIOgogICAgICAgICAjIHZlcmlmeSBjZXJ0cyBhbmQgaG9zdCBuYW1lIGluIGNsaWVudCBtb2RlCiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBDRVJUX1JFUVVJUkVECiAgICAgICAgIGNvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBUcnVlCiAgICAgZWxpZiBwdXJwb3NlID09IFB1cnBvc2UuQ0xJRU5UX0FVVEg6Ci0gICAgICAgICMgUHJlZmVyIHRoZSBzZXJ2ZXIncyBjaXBoZXJzIGJ5IGRlZmF1bHQgc28gdGhhdCB3ZSBnZXQgc3Ryb25nZXIKLSAgICAgICAgIyBlbmNyeXB0aW9uCi0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UiLCAwKQotCi0gICAgICAgICMgVXNlIHNpbmdsZSB1c2Uga2V5cyBpbiBvcmRlciB0byBpbXByb3ZlIGZvcndhcmQgc2VjcmVjeQotICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApCi0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKQotCi0gICAgICAgICMgZGlzYWxsb3cgY2lwaGVycyB3aXRoIGtub3duIHZ1bG5lcmFiaWxpdGllcwogICAgICAgICBjb250ZXh0LnNldF9jaXBoZXJzKF9SRVNUUklDVEVEX1NFUlZFUl9DSVBIRVJTKQogCiAgICAgaWYgY2FmaWxlIG9yIGNhcGF0aCBvciBjYWRhdGE6CkBAIC00OTcsMTIgKzUyNSwxMCBAQAogICAgIGlmIG5vdCBpc2luc3RhbmNlKHB1cnBvc2UsIF9BU04xT2JqZWN0KToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKHB1cnBvc2UpCiAKKyAgICAjIFNTTENvbnRleHQgc2V0cyBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX0NPTVBSRVNTSU9OLAorICAgICMgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBPUF9TSU5HTEVfREhfVVNFIGFuZCBPUF9TSU5HTEVfRUNESF9VU0UKKyAgICAjIGJ5IGRlZmF1bHQuCiAgICAgY29udGV4dCA9IFNTTENvbnRleHQocHJvdG9jb2wpCi0gICAgIyBTU0x2MiBjb25zaWRlcmVkIGhhcm1mdWwuCi0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYyCi0gICAgIyBTU0x2MyBoYXMgcHJvYmxlbWF0aWMgc2VjdXJpdHkgYW5kIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHJlYWxseSBvbGQKLSAgICAjIGNsaWVudHMgc3VjaCBhcyBJRTYgb24gV2luZG93cyBYUAotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MwogCiAgICAgaWYgY2VydF9yZXFzIGlzIG5vdCBOb25lOgogICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gY2VydF9yZXFzCkBAIC01NDgsMTAgKzU3NCwxMiBAQAogICAgICAqIFRoZSBgYGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0YGAgYW5kIGBgc3VwcHJlc3NfcmFnZ2VkX2VvZnNgYCBtYWNoaW5lcnkuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3Nsb2JqLCBvd25lcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3Nsb2JqLCBvd25lcj1Ob25lLCBzZXNzaW9uPU5vbmUpOgogICAgICAgICBzZWxmLl9zc2xvYmogPSBzc2xvYmoKICAgICAgICAgIyBOb3RlOiBfc3Nsb2JqIHRha2VzIGEgd2VhayByZWZlcmVuY2UgdG8gb3duZXIKICAgICAgICAgc2VsZi5fc3Nsb2JqLm93bmVyID0gb3duZXIgb3Igc2VsZgorICAgICAgICBpZiBzZXNzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgY29udGV4dChzZWxmKToKQEAgLTU2Myw2ICs1OTEsMjAgQEAKICAgICAgICAgc2VsZi5fc3Nsb2JqLmNvbnRleHQgPSBjdHgKIAogICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uKHNlbGYpOgorICAgICAgICAiIiJUaGUgU1NMU2Vzc2lvbiBmb3IgY2xpZW50IHNvY2tldC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uCisKKyAgICBAc2Vzc2lvbi5zZXR0ZXIKKyAgICBkZWYgc2Vzc2lvbihzZWxmLCBzZXNzaW9uKToKKyAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXVzZWQoc2VsZik6CisgICAgICAgICIiIldhcyB0aGUgY2xpZW50IHNlc3Npb24gcmV1c2VkIGR1cmluZyBoYW5kc2hha2UiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uX3JldXNlZAorCisgICAgQHByb3BlcnR5CiAgICAgZGVmIHNlcnZlcl9zaWRlKHNlbGYpOgogICAgICAgICAiIiJXaGV0aGVyIHRoaXMgaXMgYSBzZXJ2ZXItc2lkZSBzb2NrZXQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VydmVyX3NpZGUKQEAgLTY3OSw3ICs3MjEsNyBAQAogICAgICAgICAgICAgICAgICBmYW1pbHk9QUZfSU5FVCwgdHlwZT1TT0NLX1NUUkVBTSwgcHJvdG89MCwgZmlsZW5vPU5vbmUsCiAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIG5wbl9wcm90b2NvbHM9Tm9uZSwgY2lwaGVycz1Ob25lLAogICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgX2NvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgIF9jb250ZXh0PU5vbmUsIF9zZXNzaW9uPU5vbmUpOgogCiAgICAgICAgIGlmIF9jb250ZXh0OgogICAgICAgICAgICAgc2VsZi5fY29udGV4dCA9IF9jb250ZXh0CkBAIC03MTEsMTEgKzc1MywxNiBAQAogICAgICAgICAjIG1peGVkIGluLgogICAgICAgICBpZiBzb2NrLmdldHNvY2tvcHQoU09MX1NPQ0tFVCwgU09fVFlQRSkgIT0gU09DS19TVFJFQU06CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJvbmx5IHN0cmVhbSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQotICAgICAgICBpZiBzZXJ2ZXJfc2lkZSBhbmQgc2VydmVyX2hvc3RuYW1lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VydmVyX2hvc3RuYW1lIGNhbiBvbmx5IGJlIHNwZWNpZmllZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBjbGllbnQgbW9kZSIpCisgICAgICAgIGlmIHNlcnZlcl9zaWRlOgorICAgICAgICAgICAgaWYgc2VydmVyX2hvc3RuYW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlcnZlcl9ob3N0bmFtZSBjYW4gb25seSBiZSBzcGVjaWZpZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGNsaWVudCBtb2RlIikKKyAgICAgICAgICAgIGlmIF9zZXNzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlc3Npb24gY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnQgbW9kZSIpCiAgICAgICAgIGlmIHNlbGYuX2NvbnRleHQuY2hlY2tfaG9zdG5hbWUgYW5kIG5vdCBzZXJ2ZXJfaG9zdG5hbWU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjaGVja19ob3N0bmFtZSByZXF1aXJlcyBzZXJ2ZXJfaG9zdG5hbWUiKQorICAgICAgICBzZWxmLl9zZXNzaW9uID0gX3Nlc3Npb24KICAgICAgICAgc2VsZi5zZXJ2ZXJfc2lkZSA9IHNlcnZlcl9zaWRlCiAgICAgICAgIHNlbGYuc2VydmVyX2hvc3RuYW1lID0gc2VydmVyX2hvc3RuYW1lCiAgICAgICAgIHNlbGYuZG9faGFuZHNoYWtlX29uX2Nvbm5lY3QgPSBkb19oYW5kc2hha2Vfb25fY29ubmVjdApAQCAtNzUxLDcgKzc5OCw4IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCisgICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbj1zZWxmLl9zZXNzaW9uKQogICAgICAgICAgICAgICAgIGlmIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0OgogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5nZXR0aW1lb3V0KCkKICAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA9PSAwLjA6CkBAIC03NzIsNiArODIwLDI0IEBACiAgICAgICAgIHNlbGYuX2NvbnRleHQgPSBjdHgKICAgICAgICAgc2VsZi5fc3Nsb2JqLmNvbnRleHQgPSBjdHgKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uKHNlbGYpOgorICAgICAgICAiIiJUaGUgU1NMU2Vzc2lvbiBmb3IgY2xpZW50IHNvY2tldC4iIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uCisKKyAgICBAc2Vzc2lvbi5zZXR0ZXIKKyAgICBkZWYgc2Vzc2lvbihzZWxmLCBzZXNzaW9uKToKKyAgICAgICAgc2VsZi5fc2Vzc2lvbiA9IHNlc3Npb24KKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXVzZWQoc2VsZik6CisgICAgICAgICIiIldhcyB0aGUgY2xpZW50IHNlc3Npb24gcmV1c2VkIGR1cmluZyBoYW5kc2hha2UiIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uX3JldXNlZAorCiAgICAgZGVmIGR1cChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQoIkNhbid0IGR1cCgpICVzIGluc3RhbmNlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKQEAgLTg5OCw3ICs5NjQsNiBAQAogICAgICAgICAgICAgd2hpbGUgKGNvdW50IDwgYW1vdW50KToKICAgICAgICAgICAgICAgICB2ID0gc2VsZi5zZW5kKGRhdGFbY291bnQ6XSkKICAgICAgICAgICAgICAgICBjb3VudCArPSB2Ci0gICAgICAgICAgICByZXR1cm4gYW1vdW50CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnNlbmRhbGwoc2VsZiwgZGF0YSwgZmxhZ3MpCiAKQEAgLTEwMDUsNyArMTA3MCw4IEBACiAgICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImF0dGVtcHQgdG8gY29ubmVjdCBhbHJlYWR5LWNvbm5lY3RlZCBTU0xTb2NrZXQhIikKICAgICAgICAgc3Nsb2JqID0gc2VsZi5jb250ZXh0Ll93cmFwX3NvY2tldChzZWxmLCBGYWxzZSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCisgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPXNlbGYuX3Nlc3Npb24pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIGNvbm5lY3RfZXg6CiAgICAgICAgICAgICAgICAgcmMgPSBzb2NrZXQuY29ubmVjdF9leChzZWxmLCBhZGRyKQpAQCAtMTA2OCw3ICsxMTM0LDYgQEAKICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAogICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsCiAgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lKToKLQogICAgIHJldHVybiBTU0xTb2NrZXQoc29jaz1zb2NrLCBrZXlmaWxlPWtleWZpbGUsIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsIGNlcnRfcmVxcz1jZXJ0X3JlcXMsCiAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2xfdmVyc2lvbiwgY2FfY2VydHM9Y2FfY2VydHMsCmRpZmYgLS1naXQgYS9MaWIvc3RhdGlzdGljcy5weSBiL0xpYi9zdGF0aXN0aWNzLnB5CmluZGV4IDRmNWMxYzEuLjMwZmU1NWMgMTAwNjQ0Ci0tLSBhL0xpYi9zdGF0aXN0aWNzLnB5CisrKyBiL0xpYi9zdGF0aXN0aWNzLnB5CkBAIC0xLDIwICsxLDMgQEAKLSMjICBNb2R1bGUgc3RhdGlzdGljcy5weQotIyMKLSMjICBDb3B5cmlnaHQgKGMpIDIwMTMgU3RldmVuIEQnQXByYW5vIDxzdGV2ZStweXRob25AcGVhcndvb2QuaW5mbz4uCi0jIwotIyMgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotIyMgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSMjICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMjCi0jIyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jIwotIyMgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMjICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotIyMgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSMjICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotCiAiIiIKIEJhc2ljIHN0YXRpc3RpY3MgbW9kdWxlLgogCkBAIC0yOCw2ICsxMSw3IEBACiBGdW5jdGlvbiAgICAgICAgICAgIERlc2NyaXB0aW9uCiA9PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogbWVhbiAgICAgICAgICAgICAgICBBcml0aG1ldGljIG1lYW4gKGF2ZXJhZ2UpIG9mIGRhdGEuCitoYXJtb25pY19tZWFuICAgICAgIEhhcm1vbmljIG1lYW4gb2YgZGF0YS4KIG1lZGlhbiAgICAgICAgICAgICAgTWVkaWFuIChtaWRkbGUgdmFsdWUpIG9mIGRhdGEuCiBtZWRpYW5fbG93ICAgICAgICAgIExvdyBtZWRpYW4gb2YgZGF0YS4KIG1lZGlhbl9oaWdoICAgICAgICAgSGlnaCBtZWRpYW4gb2YgZGF0YS4KQEAgLTk1LDE2ICs3OSwxOCBAQAogX19hbGxfXyA9IFsgJ1N0YXRpc3RpY3NFcnJvcicsCiAgICAgICAgICAgICAncHN0ZGV2JywgJ3B2YXJpYW5jZScsICdzdGRldicsICd2YXJpYW5jZScsCiAgICAgICAgICAgICAnbWVkaWFuJywgICdtZWRpYW5fbG93JywgJ21lZGlhbl9oaWdoJywgJ21lZGlhbl9ncm91cGVkJywKLSAgICAgICAgICAgICdtZWFuJywgJ21vZGUnLAorICAgICAgICAgICAgJ21lYW4nLCAnbW9kZScsICdoYXJtb25pY19tZWFuJywKICAgICAgICAgICBdCiAKLQogaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IG1hdGgKK2ltcG9ydCBudW1iZXJzCiAKIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgZ3JvdXBieQorZnJvbSBpdGVydG9vbHMgaW1wb3J0IGdyb3VwYnksIGNoYWluCitmcm9tIGJpc2VjdCBpbXBvcnQgYmlzZWN0X2xlZnQsIGJpc2VjdF9yaWdodAogCiAKIApAQCAtMTM0LDcgKzEyMCw4IEBACiAKICAgICBTb21lIHNvdXJjZXMgb2Ygcm91bmQtb2ZmIGVycm9yIHdpbGwgYmUgYXZvaWRlZDoKIAotICAgID4+PiBfc3VtKFsxZTUwLCAxLCAtMWU1MF0gKiAxMDAwKSAgIyBCdWlsdC1pbiBzdW0gcmV0dXJucyB6ZXJvLgorICAgICMgQnVpbHQtaW4gc3VtIHJldHVybnMgemVyby4KKyAgICA+Pj4gX3N1bShbMWU1MCwgMSwgLTFlNTBdICogMTAwMCkKICAgICAoPGNsYXNzICdmbG9hdCc+LCBGcmFjdGlvbigxMDAwLCAxKSwgMzAwMCkKIAogICAgIEZyYWN0aW9ucyBhbmQgRGVjaW1hbHMgYXJlIGFsc28gc3VwcG9ydGVkOgpAQCAtMjIzLDU2ICsyMTAsMjYgQEAKICAgICAgICAgIyBPcHRpbWlzZSB0aGUgY29tbW9uIGNhc2Ugb2YgZmxvYXRzLiBXZSBleHBlY3QgdGhhdCB0aGUgbW9zdCBvZnRlbgogICAgICAgICAjIHVzZWQgbnVtZXJpYyB0eXBlIHdpbGwgYmUgYnVpbHRpbiBmbG9hdHMsIHNvIHRyeSB0byBtYWtlIHRoaXMgYXMKICAgICAgICAgIyBmYXN0IGFzIHBvc3NpYmxlLgotICAgICAgICBpZiB0eXBlKHgpIGlzIGZsb2F0OgorICAgICAgICBpZiB0eXBlKHgpIGlzIGZsb2F0IG9yIHR5cGUoeCkgaXMgRGVjaW1hbDoKICAgICAgICAgICAgIHJldHVybiB4LmFzX2ludGVnZXJfcmF0aW8oKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHggbWF5IGJlIGFuIGludCwgRnJhY3Rpb24sIG9yIEludGVncmFsIEFCQy4KICAgICAgICAgICAgIHJldHVybiAoeC5udW1lcmF0b3IsIHguZGVub21pbmF0b3IpCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIHggbWF5IGJlIGEgZmxvYXQgc3ViY2xhc3MuCisgICAgICAgICAgICAgICAgIyB4IG1heSBiZSBhIGZsb2F0IG9yIERlY2ltYWwgc3ViY2xhc3MuCiAgICAgICAgICAgICAgICAgcmV0dXJuIHguYXNfaW50ZWdlcl9yYXRpbygpCiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAjIHggbWF5IGJlIGEgRGVjaW1hbC4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNpbWFsX3RvX3JhdGlvKHgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAjIEp1c3QgZ2l2ZSB1cD8KLSAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICMgSnVzdCBnaXZlIHVwPworICAgICAgICAgICAgICAgIHBhc3MKICAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAjIGZsb2F0IE5BTiBvciBJTkYuCi0gICAgICAgIGFzc2VydCBub3QgbWF0aC5pc2Zpbml0ZSh4KQorICAgICAgICBhc3NlcnQgbm90IF9pc2Zpbml0ZSh4KQogICAgICAgICByZXR1cm4gKHgsIE5vbmUpCiAgICAgbXNnID0gImNhbid0IGNvbnZlcnQgdHlwZSAne30nIHRvIG51bWVyYXRvci9kZW5vbWluYXRvciIKICAgICByYWlzZSBUeXBlRXJyb3IobXNnLmZvcm1hdCh0eXBlKHgpLl9fbmFtZV9fKSkKIAogCi0jIEZJWE1FIFRoaXMgaXMgZmFzdGVyIHRoYW4gRnJhY3Rpb24uZnJvbV9kZWNpbWFsLCBidXQgc3RpbGwgdG9vIHNsb3cuCi1kZWYgX2RlY2ltYWxfdG9fcmF0aW8oZCk6Ci0gICAgIiIiQ29udmVydCBEZWNpbWFsIGQgdG8gZXhhY3QgaW50ZWdlciByYXRpbyAobnVtZXJhdG9yLCBkZW5vbWluYXRvcikuCi0KLSAgICA+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCi0gICAgPj4+IF9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjIuNiIpKQotICAgICgyNiwgMTApCi0KLSAgICAiIiIKLSAgICBzaWduLCBkaWdpdHMsIGV4cCA9IGQuYXNfdHVwbGUoKQotICAgIGlmIGV4cCBpbiAoJ0YnLCAnbicsICdOJyk6ICAjIElORiwgTkFOLCBzTkFOCi0gICAgICAgIGFzc2VydCBub3QgZC5pc19maW5pdGUoKQotICAgICAgICByZXR1cm4gKGQsIE5vbmUpCi0gICAgbnVtID0gMAotICAgIGZvciBkaWdpdCBpbiBkaWdpdHM6Ci0gICAgICAgIG51bSA9IG51bSoxMCArIGRpZ2l0Ci0gICAgaWYgZXhwIDwgMDoKLSAgICAgICAgZGVuID0gMTAqKi1leHAKLSAgICBlbHNlOgotICAgICAgICBudW0gKj0gMTAqKmV4cAotICAgICAgICBkZW4gPSAxCi0gICAgaWYgc2lnbjoKLSAgICAgICAgbnVtID0gLW51bQotICAgIHJldHVybiAobnVtLCBkZW4pCi0KLQogZGVmIF9jb252ZXJ0KHZhbHVlLCBUKToKICAgICAiIiJDb252ZXJ0IHZhbHVlIHRvIGdpdmVuIG51bWVyaWMgdHlwZSBULiIiIgogICAgIGlmIHR5cGUodmFsdWUpIGlzIFQ6CkBAIC0zMDUsNiArMjYyLDMwIEBACiAgICAgcmV0dXJuIHRhYmxlCiAKIAorZGVmIF9maW5kX2x0ZXEoYSwgeCk6CisgICAgJ0xvY2F0ZSB0aGUgbGVmdG1vc3QgdmFsdWUgZXhhY3RseSBlcXVhbCB0byB4JworICAgIGkgPSBiaXNlY3RfbGVmdChhLCB4KQorICAgIGlmIGkgIT0gbGVuKGEpIGFuZCBhW2ldID09IHg6CisgICAgICAgIHJldHVybiBpCisgICAgcmFpc2UgVmFsdWVFcnJvcgorCisKK2RlZiBfZmluZF9ydGVxKGEsIGwsIHgpOgorICAgICdMb2NhdGUgdGhlIHJpZ2h0bW9zdCB2YWx1ZSBleGFjdGx5IGVxdWFsIHRvIHgnCisgICAgaSA9IGJpc2VjdF9yaWdodChhLCB4LCBsbz1sKQorICAgIGlmIGkgIT0gKGxlbihhKSsxKSBhbmQgYVtpLTFdID09IHg6CisgICAgICAgIHJldHVybiBpLTEKKyAgICByYWlzZSBWYWx1ZUVycm9yCisKKworZGVmIF9mYWlsX25lZyh2YWx1ZXMsIGVycm1zZz0nbmVnYXRpdmUgdmFsdWUnKToKKyAgICAiIiJJdGVyYXRlIG92ZXIgdmFsdWVzLCBmYWlsaW5nIGlmIGFueSBhcmUgbGVzcyB0aGFuIHplcm8uIiIiCisgICAgZm9yIHggaW4gdmFsdWVzOgorICAgICAgICBpZiB4IDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcihlcnJtc2cpCisgICAgICAgIHlpZWxkIHgKKworCiAjID09PSBNZWFzdXJlcyBvZiBjZW50cmFsIHRlbmRlbmN5IChhdmVyYWdlcykgPT09CiAKIGRlZiBtZWFuKGRhdGEpOgpAQCAtMzMzLDYgKzMxNCw1MiBAQAogICAgIHJldHVybiBfY29udmVydCh0b3RhbC9uLCBUKQogCiAKK2RlZiBoYXJtb25pY19tZWFuKGRhdGEpOgorICAgICIiIlJldHVybiB0aGUgaGFybW9uaWMgbWVhbiBvZiBkYXRhLgorCisgICAgVGhlIGhhcm1vbmljIG1lYW4sIHNvbWV0aW1lcyBjYWxsZWQgdGhlIHN1YmNvbnRyYXJ5IG1lYW4sIGlzIHRoZQorICAgIHJlY2lwcm9jYWwgb2YgdGhlIGFyaXRobWV0aWMgbWVhbiBvZiB0aGUgcmVjaXByb2NhbHMgb2YgdGhlIGRhdGEsCisgICAgYW5kIGlzIG9mdGVuIGFwcHJvcHJpYXRlIHdoZW4gYXZlcmFnaW5nIHF1YW50aXRpZXMgd2hpY2ggYXJlIHJhdGVzCisgICAgb3IgcmF0aW9zLCBmb3IgZXhhbXBsZSBzcGVlZHMuIEV4YW1wbGU6CisKKyAgICBTdXBwb3NlIGFuIGludmVzdG9yIHB1cmNoYXNlcyBhbiBlcXVhbCB2YWx1ZSBvZiBzaGFyZXMgaW4gZWFjaCBvZgorICAgIHRocmVlIGNvbXBhbmllcywgd2l0aCBQL0UgKHByaWNlL2Vhcm5pbmcpIHJhdGlvcyBvZiAyLjUsIDMgYW5kIDEwLgorICAgIFdoYXQgaXMgdGhlIGF2ZXJhZ2UgUC9FIHJhdGlvIGZvciB0aGUgaW52ZXN0b3IncyBwb3J0Zm9saW8/CisKKyAgICA+Pj4gaGFybW9uaWNfbWVhbihbMi41LCAzLCAxMF0pICAjIEZvciBhbiBlcXVhbCBpbnZlc3RtZW50IHBvcnRmb2xpby4KKyAgICAzLjYKKworICAgIFVzaW5nIHRoZSBhcml0aG1ldGljIG1lYW4gd291bGQgZ2l2ZSBhbiBhdmVyYWdlIG9mIGFib3V0IDUuMTY3LCB3aGljaAorICAgIGlzIHRvbyBoaWdoLgorCisgICAgSWYgYGBkYXRhYGAgaXMgZW1wdHksIG9yIGFueSBlbGVtZW50IGlzIGxlc3MgdGhhbiB6ZXJvLAorICAgIGBgaGFybW9uaWNfbWVhbmBgIHdpbGwgcmFpc2UgYGBTdGF0aXN0aWNzRXJyb3JgYC4KKyAgICAiIiIKKyAgICAjIEZvciBhIGp1c3RpZmljYXRpb24gZm9yIHVzaW5nIGhhcm1vbmljIG1lYW4gZm9yIFAvRSByYXRpb3MsIHNlZQorICAgICMgaHR0cDovL2ZpeHRoZXBpdGNoLnBlbGx1Y2lkLmNvbS9jb21wcy1hbmFseXNpcy10aGUtbWlzc2luZy1oYXJtb255LW9mLXN1bW1hcnktc3RhdGlzdGljcy8KKyAgICAjIGh0dHA6Ly9wYXBlcnMuc3Nybi5jb20vc29sMy9wYXBlcnMuY2ZtP2Fic3RyYWN0X2lkPTI2MjEwODcKKyAgICBpZiBpdGVyKGRhdGEpIGlzIGRhdGE6CisgICAgICAgIGRhdGEgPSBsaXN0KGRhdGEpCisgICAgZXJybXNnID0gJ2hhcm1vbmljIG1lYW4gZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMnCisgICAgbiA9IGxlbihkYXRhKQorICAgIGlmIG4gPCAxOgorICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2hhcm1vbmljX21lYW4gcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGRhdGEgcG9pbnQnKQorICAgIGVsaWYgbiA9PSAxOgorICAgICAgICB4ID0gZGF0YVswXQorICAgICAgICBpZiBpc2luc3RhbmNlKHgsIChudW1iZXJzLlJlYWwsIERlY2ltYWwpKToKKyAgICAgICAgICAgIGlmIHggPCAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcihlcnJtc2cpCisgICAgICAgICAgICByZXR1cm4geAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd1bnN1cHBvcnRlZCB0eXBlJykKKyAgICB0cnk6CisgICAgICAgIFQsIHRvdGFsLCBjb3VudCA9IF9zdW0oMS94IGZvciB4IGluIF9mYWlsX25lZyhkYXRhLCBlcnJtc2cpKQorICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgcmV0dXJuIDAKKyAgICBhc3NlcnQgY291bnQgPT0gbgorICAgIHJldHVybiBfY29udmVydChuL3RvdGFsLCBUKQorCisKICMgRklYTUU6IGludmVzdGlnYXRlIHdheXMgdG8gY2FsY3VsYXRlIG1lZGlhbnMgd2l0aG91dCBzb3J0aW5nPyBRdWlja3NlbGVjdD8KIGRlZiBtZWRpYW4oZGF0YSk6CiAgICAgIiIiUmV0dXJuIHRoZSBtZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgbnVtZXJpYyBkYXRhLgpAQCAtNDQyLDkgKzQ2OSwxNSBAQAogICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICMgTWl4ZWQgdHlwZS4gRm9yIG5vdyB3ZSBqdXN0IGNvZXJjZSB0byBmbG9hdC4KICAgICAgICAgTCA9IGZsb2F0KHgpIC0gZmxvYXQoaW50ZXJ2YWwpLzIKLSAgICBjZiA9IGRhdGEuaW5kZXgoeCkgICMgTnVtYmVyIG9mIHZhbHVlcyBiZWxvdyB0aGUgbWVkaWFuIGludGVydmFsLgotICAgICMgRklYTUUgVGhlIGZvbGxvd2luZyBsaW5lIGNvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGZvciBiaWcgbGlzdHMuCi0gICAgZiA9IGRhdGEuY291bnQoeCkgICMgTnVtYmVyIG9mIGRhdGEgcG9pbnRzIGluIHRoZSBtZWRpYW4gaW50ZXJ2YWwuCisKKyAgICAjIFVzZXMgYmlzZWN0aW9uIHNlYXJjaCB0byBzZWFyY2ggZm9yIHggaW4gZGF0YSB3aXRoIGxvZyhuKSB0aW1lIGNvbXBsZXhpdHkKKyAgICAjIEZpbmQgdGhlIHBvc2l0aW9uIG9mIGxlZnRtb3N0IG9jY3VycmVuY2Ugb2YgeCBpbiBkYXRhCisgICAgbDEgPSBfZmluZF9sdGVxKGRhdGEsIHgpCisgICAgIyBGaW5kIHRoZSBwb3NpdGlvbiBvZiByaWdodG1vc3Qgb2NjdXJyZW5jZSBvZiB4IGluIGRhdGFbbDEuLi5sZW4oZGF0YSldCisgICAgIyBBc3N1bWluZyBhbHdheXMgbDEgPD0gbDIKKyAgICBsMiA9IF9maW5kX3J0ZXEoZGF0YSwgbDEsIHgpCisgICAgY2YgPSBsMQorICAgIGYgPSBsMiAtIGwxICsgMQogICAgIHJldHVybiBMICsgaW50ZXJ2YWwqKG4vMiAtIGNmKS9mCiAKIApkaWZmIC0tZ2l0IGEvTGliL3N0cmluZy5weSBiL0xpYi9zdHJpbmcucHkKaW5kZXggODkyODdjNC4uYzkwMjAwNyAxMDA2NDQKLS0tIGEvTGliL3N0cmluZy5weQorKysgYi9MaWIvc3RyaW5nLnB5CkBAIC0yOCw3ICsyOCw3IEBACiBkaWdpdHMgPSAnMDEyMzQ1Njc4OScKIGhleGRpZ2l0cyA9IGRpZ2l0cyArICdhYmNkZWYnICsgJ0FCQ0RFRicKIG9jdGRpZ2l0cyA9ICcwMTIzNDU2NycKLXB1bmN0dWF0aW9uID0gIiIiISIjJCUmJygpKissLS4vOjs8PT4/QFtcXV5fYHt8fX4iIiIKK3B1bmN0dWF0aW9uID0gciIiIiEiIyQlJicoKSorLC0uLzo7PD0+P0BbXF1eX2B7fH1+IiIiCiBwcmludGFibGUgPSBkaWdpdHMgKyBhc2NpaV9sZXR0ZXJzICsgcHVuY3R1YXRpb24gKyB3aGl0ZXNwYWNlCiAKICMgRnVuY3Rpb25zIHdoaWNoIGFyZW4ndCBhdmFpbGFibGUgYXMgc3RyaW5nIG1ldGhvZHMuCkBAIC0xMTYsMTAgKzExNiw3IEBACiAgICAgICAgICAgICAjIENoZWNrIHRoZSBtb3N0IGNvbW1vbiBwYXRoIGZpcnN0LgogICAgICAgICAgICAgbmFtZWQgPSBtby5ncm91cCgnbmFtZWQnKSBvciBtby5ncm91cCgnYnJhY2VkJykKICAgICAgICAgICAgIGlmIG5hbWVkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHZhbCA9IG1hcHBpbmdbbmFtZWRdCi0gICAgICAgICAgICAgICAgIyBXZSB1c2UgdGhpcyBpZGlvbSBpbnN0ZWFkIG9mIHN0cigpIGJlY2F1c2UgdGhlIGxhdHRlciB3aWxsCi0gICAgICAgICAgICAgICAgIyBmYWlsIGlmIHZhbCBpcyBhIFVuaWNvZGUgY29udGFpbmluZyBub24tQVNDSUkgY2hhcmFjdGVycy4KLSAgICAgICAgICAgICAgICByZXR1cm4gJyVzJyAlICh2YWwsKQorICAgICAgICAgICAgICAgIHJldHVybiBzdHIobWFwcGluZ1tuYW1lZF0pCiAgICAgICAgICAgICBpZiBtby5ncm91cCgnZXNjYXBlZCcpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlbGltaXRlcgogICAgICAgICAgICAgaWYgbW8uZ3JvdXAoJ2ludmFsaWQnKSBpcyBub3QgTm9uZToKQEAgLTE0Niw5ICsxNDMsNyBAQAogICAgICAgICAgICAgbmFtZWQgPSBtby5ncm91cCgnbmFtZWQnKSBvciBtby5ncm91cCgnYnJhY2VkJykKICAgICAgICAgICAgIGlmIG5hbWVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgIyBXZSB1c2UgdGhpcyBpZGlvbSBpbnN0ZWFkIG9mIHN0cigpIGJlY2F1c2UgdGhlIGxhdHRlcgotICAgICAgICAgICAgICAgICAgICAjIHdpbGwgZmFpbCBpZiB2YWwgaXMgYSBVbmljb2RlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJXMnICUgKG1hcHBpbmdbbmFtZWRdLCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihtYXBwaW5nW25hbWVkXSkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtby5ncm91cCgpCiAgICAgICAgICAgICBpZiBtby5ncm91cCgnZXNjYXBlZCcpIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3N1YnByb2Nlc3MucHkgYi9MaWIvc3VicHJvY2Vzcy5weQppbmRleCBkOGQ2YWIyLi45ZGY5MzE4IDEwMDY0NAotLS0gYS9MaWIvc3VicHJvY2Vzcy5weQorKysgYi9MaWIvc3VicHJvY2Vzcy5weQpAQCAtMzAsNyArMzAsOCBAQAogICAgICAgICAgICAgcHJlZXhlY19mbj1Ob25lLCBjbG9zZV9mZHM9VHJ1ZSwgc2hlbGw9RmFsc2UsCiAgICAgICAgICAgICBjd2Q9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwKICAgICAgICAgICAgIHN0YXJ0dXBpbmZvPU5vbmUsIGNyZWF0aW9uZmxhZ3M9MCwKLSAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscz1UcnVlLCBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwgcGFzc19mZHM9KCkpOgorICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzPVRydWUsIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLCBwYXNzX2Zkcz0oKSwKKyAgICAgICAgICAgICosIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKIAogCiBBcmd1bWVudHMgYXJlOgpAQCAtMTA0LDIwICsxMDUsMTMgQEAKIElmIGVudiBpcyBub3QgTm9uZSwgaXQgZGVmaW5lcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgbmV3CiBwcm9jZXNzLgogCi1JZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgRmFsc2UsIHRoZSBmaWxlIG9iamVjdHMgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyCi1hcmUgb3BlbmVkIGFzIGJpbmFyeSBmaWxlcywgYW5kIG5vIGxpbmUgZW5kaW5nIGNvbnZlcnNpb24gaXMgZG9uZS4KK0lmIGVuY29kaW5nIG9yIGVycm9ycyBhcmUgc3BlY2lmaWVkIG9yIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBUcnVlLCB0aGUgZmlsZQorb2JqZWN0cyBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgb3BlbmVkIGluIHRleHQgbW9kZS4gU2VlIGlvLlRleHRJT1dyYXBwZXIgZm9yCit0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgcGFyYW1ldGVycyBhcmUgdXNlZC4KIAotSWYgdW5pdmVyc2FsX25ld2xpbmVzIGlzIFRydWUsIHRoZSBmaWxlIG9iamVjdHMgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlCi1vcGVuZWQgYXMgYSB0ZXh0IGZpbGUsIGJ1dCBsaW5lcyBtYXkgYmUgdGVybWluYXRlZCBieSBhbnkgb2YgJ1xuJywKLXRoZSBVbml4IGVuZC1vZi1saW5lIGNvbnZlbnRpb24sICdccicsIHRoZSBvbGQgTWFjaW50b3NoIGNvbnZlbnRpb24gb3IKLSdcclxuJywgdGhlIFdpbmRvd3MgY29udmVudGlvbi4gIEFsbCBvZiB0aGVzZSBleHRlcm5hbCByZXByZXNlbnRhdGlvbnMKLWFyZSBzZWVuIGFzICdcbicgYnkgdGhlIFB5dGhvbiBwcm9ncmFtLiAgQWxzbywgdGhlIG5ld2xpbmVzIGF0dHJpYnV0ZQotb2YgdGhlIGZpbGUgb2JqZWN0cyBzdGRvdXQsIHN0ZGluIGFuZCBzdGRlcnIgYXJlIG5vdCB1cGRhdGVkIGJ5IHRoZQotY29tbXVuaWNhdGUoKSBtZXRob2QuCi0KLUluIGVpdGhlciBjYXNlLCB0aGUgcHJvY2VzcyBiZWluZyBjb21tdW5pY2F0ZWQgd2l0aCBzaG91bGQgc3RhcnQgdXAKLWV4cGVjdGluZyB0byByZWNlaXZlIGJ5dGVzIG9uIGl0cyBzdGFuZGFyZCBpbnB1dCBhbmQgZGVjb2RlIHRoZW0gd2l0aAotdGhlIHNhbWUgZW5jb2RpbmcgdGhleSBhcmUgc2VudCBpbi4KK0lmIG5vIGVuY29kaW5nIGlzIHNwZWNpZmllZCBhbmQgdW5pdmVyc2FsX25ld2xpbmVzIGlzIEZhbHNlLCB0aGUgZmlsZQorb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIG9wZW5lZCBhcyBiaW5hcnkgZmlsZXMsIGFuZCBubworbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcyBkb25lLgogCiBUaGUgc3RhcnR1cGluZm8gYW5kIGNyZWF0aW9uZmxhZ3MsIGlmIGdpdmVuLCB3aWxsIGJlIHBhc3NlZCB0byB0aGUKIHVuZGVybHlpbmcgQ3JlYXRlUHJvY2VzcygpIGZ1bmN0aW9uLiAgVGhleSBjYW4gc3BlY2lmeSB0aGluZ3Mgc3VjaCBhcwpAQCAtMjM0LDExICsyMjgsOCBAQAogICAgIGFuZCBzdGRlcnIsIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvCiAgICAgdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBkYXRhIHRvIGJlCiAgICAgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0bwotICAgIHRoZSBjaGlsZC4gSWYgdGhlIFBvcGVuIGluc3RhbmNlIHdhcyBjb25zdHJ1Y3RlZCB3aXRoIHVuaXZlcnNhbF9uZXdsaW5lcwotICAgIHNldCB0byBUcnVlLCB0aGUgaW5wdXQgYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyaW5nIGFuZCB3aWxsIGJlIGVuY29kZWQKLSAgICB1c2luZyB0aGUgcHJlZmVycmVkIHN5c3RlbSBlbmNvZGluZyAoc2VlIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyk7Ci0gICAgaWYgdW5pdmVyc2FsX25ld2xpbmVzIGlzIEZhbHNlLCB0aGUgaW5wdXQgYXJndW1lbnQgc2hvdWxkIGJlIGEKLSAgICBieXRlIHN0cmluZy4KKyAgICB0aGUgY2hpbGQuIElmIHRoZSBQb3BlbiBpbnN0YW5jZSB3YXMgY29uc3RydWN0ZWQgaW4gdGV4dCBtb2RlLCB0aGUKKyAgICBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUgYSBzdHJpbmcuIE90aGVyd2lzZSwgaXQgc2hvdWxkIGJlIGJ5dGVzLgogCiAgICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4KIApAQCAtMzcyLDkgKzM2MywxMSBAQAogCiAKIGNsYXNzIENhbGxlZFByb2Nlc3NFcnJvcihTdWJwcm9jZXNzRXJyb3IpOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgcHJvY2VzcyBydW4gYnkgY2hlY2tfY2FsbCgpIG9yCi0gICAgY2hlY2tfb3V0cHV0KCkgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgotICAgIFRoZSBleGl0IHN0YXR1cyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGU7CisgICAgIiIiUmFpc2VkIHdoZW4gYSBjaGVja19jYWxsKCkgb3IgY2hlY2tfb3V0cHV0KCkgcHJvY2VzcyByZXR1cm5zIG5vbi16ZXJvLgorCisgICAgVGhlIGV4aXQgc3RhdHVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZSwgbmVnYXRpdmUKKyAgICBpZiBpdCByZXByZXNlbnRzIGEgc2lnbmFsIG51bWJlci4KKwogICAgIGNoZWNrX291dHB1dCgpIHdpbGwgYWxzbyBzdG9yZSB0aGUgb3V0cHV0IGluIHRoZSBvdXRwdXQgYXR0cmlidXRlLgogICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXR1cm5jb2RlLCBjbWQsIG91dHB1dD1Ob25lLCBzdGRlcnI9Tm9uZSk6CkBAIC0zODQsNyArMzc3LDE2IEBACiAgICAgICAgIHNlbGYuc3RkZXJyID0gc3RkZXJyCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQiICUgKHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUpCisgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBhbmQgc2VsZi5yZXR1cm5jb2RlIDwgMDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyBkaWVkIHdpdGggJXIuIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY21kLCBzaWduYWwuU2lnbmFscygtc2VsZi5yZXR1cm5jb2RlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIGRpZWQgd2l0aCB1bmtub3duIHNpZ25hbCAlZC4iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbWQsIC1zZWxmLnJldHVybmNvZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAlZC4iICUgKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmNtZCwgc2VsZi5yZXR1cm5jb2RlKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHN0ZG91dChzZWxmKToKQEAgLTQ3MSw3ICs0NzMsOCBAQAogICAgIF9fYWxsX18uZXh0ZW5kKFsiQ1JFQVRFX05FV19DT05TT0xFIiwgIkNSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCIsCiAgICAgICAgICAgICAgICAgICAgICJTVERfSU5QVVRfSEFORExFIiwgIlNURF9PVVRQVVRfSEFORExFIiwKICAgICAgICAgICAgICAgICAgICAgIlNURF9FUlJPUl9IQU5ETEUiLCAiU1dfSElERSIsCi0gICAgICAgICAgICAgICAgICAgICJTVEFSVEZfVVNFU1RESEFORExFUyIsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyJdKQorICAgICAgICAgICAgICAgICAgICAiU1RBUlRGX1VTRVNUREhBTkRMRVMiLCAiU1RBUlRGX1VTRVNIT1dXSU5ET1ciLAorICAgICAgICAgICAgICAgICAgICAiU1RBUlRVUElORk8iXSkKIAogICAgIGNsYXNzIEhhbmRsZShpbnQpOgogICAgICAgICBjbG9zZWQgPSBGYWxzZQpAQCAtNTIwLDYgKzUyMywxNiBAQAogIyBidXQgaXQncyBoZXJlIHNvIHRoYXQgaXQgY2FuIGJlIGltcG9ydGVkIHdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQKICMgdGhyZWFkcy4KIAorZGVmIF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKKyAgICBvcHRpbWl6YXRpb24gc2V0dGluZ3MgaW4gc3lzLmZsYWdzLiIiIgorICAgIGFyZ3MgPSBbXQorICAgIHZhbHVlID0gc3lzLmZsYWdzLm9wdGltaXplCisgICAgaWYgdmFsdWUgPiAwOgorICAgICAgICBhcmdzLmFwcGVuZCgnLScgKyAnTycgKiB2YWx1ZSkKKyAgICByZXR1cm4gYXJncworCisKIGRlZiBfYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CiAgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCkBAIC01MjcsNyArNTQwLDYgQEAKICAgICAgICAgJ2RlYnVnJzogJ2QnLAogICAgICAgICAjICdpbnNwZWN0JzogJ2knLAogICAgICAgICAjICdpbnRlcmFjdGl2ZSc6ICdpJywKLSAgICAgICAgJ29wdGltaXplJzogJ08nLAogICAgICAgICAnZG9udF93cml0ZV9ieXRlY29kZSc6ICdCJywKICAgICAgICAgJ25vX3VzZXJfc2l0ZSc6ICdzJywKICAgICAgICAgJ25vX3NpdGUnOiAnUycsCkBAIC01MzUsOCArNTQ3LDkgQEAKICAgICAgICAgJ3ZlcmJvc2UnOiAndicsCiAgICAgICAgICdieXRlc193YXJuaW5nJzogJ2InLAogICAgICAgICAncXVpZXQnOiAncScsCisgICAgICAgICMgLU8gaXMgaGFuZGxlZCBpbiBfb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKICAgICB9Ci0gICAgYXJncyA9IFtdCisgICAgYXJncyA9IF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogICAgIGZvciBmbGFnLCBvcHQgaW4gZmxhZ19vcHRfbWFwLml0ZW1zKCk6CiAgICAgICAgIHYgPSBnZXRhdHRyKHN5cy5mbGFncywgZmxhZykKICAgICAgICAgaWYgdiA+IDA6CkBAIC03ODYsOCArNzk5LDggQEAKICAgICAiIiIgICAgUmV0dXJuIChzdGF0dXMsIG91dHB1dCkgb2YgZXhlY3V0aW5nIGNtZCBpbiBhIHNoZWxsLgogCiAgICAgRXhlY3V0ZSB0aGUgc3RyaW5nICdjbWQnIGluIGEgc2hlbGwgd2l0aCAnY2hlY2tfb3V0cHV0JyBhbmQKLSAgICByZXR1cm4gYSAyLXR1cGxlIChzdGF0dXMsIG91dHB1dCkuIFVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzIHVzZWQsCi0gICAgbWVhbmluZyB0aGF0IHRoZSByZXN1bHQgd2l0aCBiZSBkZWNvZGVkIHRvIGEgc3RyaW5nLgorICAgIHJldHVybiBhIDItdHVwbGUgKHN0YXR1cywgb3V0cHV0KS4gVGhlIGxvY2FsZSBlbmNvZGluZyBpcyB1c2VkCisgICAgdG8gZGVjb2RlIHRoZSBvdXRwdXQgYW5kIHByb2Nlc3MgbmV3bGluZXMuCiAKICAgICBBIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQgZnJvbSB0aGUgb3V0cHV0LgogICAgIFRoZSBleGl0IHN0YXR1cyBmb3IgdGhlIGNvbW1hbmQgY2FuIGJlIGludGVycHJldGVkCkBAIC04MzcsNyArODUwLDcgQEAKICAgICAgICAgICAgICAgICAgc2hlbGw9RmFsc2UsIGN3ZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLAogICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbz1Ob25lLCBjcmVhdGlvbmZsYWdzPTAsCiAgICAgICAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscz1UcnVlLCBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgcGFzc19mZHM9KCkpOgorICAgICAgICAgICAgICAgICBwYXNzX2Zkcz0oKSwgKiwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgbmV3IFBvcGVuIGluc3RhbmNlLiIiIgogICAgICAgICBfY2xlYW51cCgpCiAgICAgICAgICMgSGVsZCB3aGlsZSBhbnl0aGluZyBpcyBjYWxsaW5nIHdhaXRwaWQgYmVmb3JlIHJldHVybmNvZGUgaGFzIGJlZW4KQEAgLTg5MCw2ICs5MDMsOCBAQAogICAgICAgICBzZWxmLnBpZCA9IE5vbmUKICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gTm9uZQogICAgICAgICBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyA9IHVuaXZlcnNhbF9uZXdsaW5lcworICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKKyAgICAgICAgc2VsZi5lcnJvcnMgPSBlcnJvcnMKIAogICAgICAgICAjIElucHV0IGFuZCBvdXRwdXQgb2JqZWN0cy4gVGhlIGdlbmVyYWwgcHJpbmNpcGxlIGlzIGxpa2UKICAgICAgICAgIyB0aGlzOgpAQCAtOTIyLDIyICs5MzcsMjggQEAKICAgICAgICAgICAgIGlmIGVycnJlYWQgIT0gLTE6CiAgICAgICAgICAgICAgICAgZXJycmVhZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShlcnJyZWFkLkRldGFjaCgpLCAwKQogCi0gICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLm9wZW4ocDJjd3JpdGUsICd3YicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRpbiwgd3JpdGVfdGhyb3VnaD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPShidWZzaXplID09IDEpKQotICAgICAgICBpZiBjMnByZWFkICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5vcGVuKGMycHJlYWQsICdyYicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3Rkb3V0KQotICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5vcGVuKGVycnJlYWQsICdyYicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkZXJyKQorICAgICAgICB0ZXh0X21vZGUgPSBlbmNvZGluZyBvciBlcnJvcnMgb3IgdW5pdmVyc2FsX25ld2xpbmVzCiAKICAgICAgICAgc2VsZi5fY2xvc2VkX2NoaWxkX3BpcGVfZmRzID0gRmFsc2UKKwogICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBwMmN3cml0ZSAhPSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8ub3BlbihwMmN3cml0ZSwgJ3diJywgYnVmc2l6ZSkKKyAgICAgICAgICAgICAgICBpZiB0ZXh0X21vZGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkaW4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz0oYnVmc2l6ZSA9PSAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKKyAgICAgICAgICAgIGlmIGMycHJlYWQgIT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5vcGVuKGMycHJlYWQsICdyYicsIGJ1ZnNpemUpCisgICAgICAgICAgICAgICAgaWYgdGV4dF9tb2RlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisgICAgICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyID0gaW8ub3BlbihlcnJyZWFkLCAncmInLCBidWZzaXplKQorICAgICAgICAgICAgICAgIGlmIHRleHRfbW9kZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQorCiAgICAgICAgICAgICBzZWxmLl9leGVjdXRlX2NoaWxkKGFyZ3MsIGV4ZWN1dGFibGUsIHByZWV4ZWNfZm4sIGNsb3NlX2ZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCkBAIC05NzEsOSArOTkyLDggQEAKIAogICAgICAgICAgICAgcmFpc2UKIAotCi0gICAgZGVmIF90cmFuc2xhdGVfbmV3bGluZXMoc2VsZiwgZGF0YSwgZW5jb2RpbmcpOgotICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoZW5jb2RpbmcpCisgICAgZGVmIF90cmFuc2xhdGVfbmV3bGluZXMoc2VsZiwgZGF0YSwgZW5jb2RpbmcsIGVycm9ycyk6CisgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgICAgICByZXR1cm4gZGF0YS5yZXBsYWNlKCJcclxuIiwgIlxuIikucmVwbGFjZSgiXHIiLCAiXG4iKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTk5NSw2ICsxMDE1LDExIEBACiAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGlsZF9jcmVhdGVkOgogICAgICAgICAgICAgIyBXZSBkaWRuJ3QgZ2V0IHRvIHN1Y2Nlc3NmdWxseSBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzLgogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgorICAgICAgICAgICAgIyBOb3QgcmVhZGluZyBzdWJwcm9jZXNzIGV4aXQgc3RhdHVzIGNyZWF0ZXMgYSB6b21iaSBwcm9jZXNzIHdoaWNoCisgICAgICAgICAgICAjIGlzIG9ubHkgZGVzdHJveWVkIGF0IHRoZSBwYXJlbnQgcHl0aG9uIHByb2Nlc3MgZXhpdAorICAgICAgICAgICAgd2FybmluZ3Mud2Fybigic3VicHJvY2VzcyAlcyBpcyBzdGlsbCBydW5uaW5nIiAlIHNlbGYucGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVdhcm5pbmcsIHNvdXJjZT1zZWxmKQogICAgICAgICAjIEluIGNhc2UgdGhlIGNoaWxkIGhhc24ndCBiZWVuIHdhaXRlZCBvbiwgY2hlY2sgaWYgaXQncyBkb25lLgogICAgICAgICBzZWxmLl9pbnRlcm5hbF9wb2xsKF9kZWFkc3RhdGU9X21heHNpemUpCiAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lIGFuZCBfYWN0aXZlIGlzIG5vdCBOb25lOgpAQCAtMTUyMCw5ICsxNTQ1LDE0IEBACiAKICAgICAgICAgICAgIGlmIGVycnBpcGVfZGF0YToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLndhaXRwaWQoc2VsZi5waWQsIDApCisgICAgICAgICAgICAgICAgICAgIHBpZCwgc3RzID0gb3Mud2FpdHBpZChzZWxmLnBpZCwgMCkKKyAgICAgICAgICAgICAgICAgICAgaWYgcGlkID09IHNlbGYucGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V4aXRzdGF0dXMoc3RzKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gc3lzLm1heHNpemUKICAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX25hbWUsIGhleF9lcnJubywgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX2RhdGEuc3BsaXQoYic6JywgMikpCkBAIC0xNzQ4LDEzICsxNzc4LDE1IEBACiAKICAgICAgICAgICAgICMgVHJhbnNsYXRlIG5ld2xpbmVzLCBpZiByZXF1ZXN0ZWQuCiAgICAgICAgICAgICAjIFRoaXMgYWxzbyB0dXJucyBieXRlcyBpbnRvIHN0cmluZ3MuCi0gICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lczoKKyAgICAgICAgICAgIGlmIHNlbGYuZW5jb2Rpbmcgb3Igc2VsZi5lcnJvcnMgb3Igc2VsZi51bml2ZXJzYWxfbmV3bGluZXM6CiAgICAgICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl90cmFuc2xhdGVfbmV3bGluZXMoc3Rkb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuZW5jb2RpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmVycm9ycykKICAgICAgICAgICAgICAgICBpZiBzdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuX3RyYW5zbGF0ZV9uZXdsaW5lcyhzdGRlcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5lbmNvZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuZXJyb3JzKQogCiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCkBAIC0xNzY2LDggKzE3OTgsMTAgQEAKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIHNlbGYuX2lucHV0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ID0gMAogICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gaW5wdXQKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyBhbmQgaW5wdXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gc2VsZi5faW5wdXQuZW5jb2RlKHNlbGYuc3RkaW4uZW5jb2RpbmcpCisgICAgICAgICAgICAgICAgaWYgaW5wdXQgaXMgbm90IE5vbmUgYW5kICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmNvZGluZyBvciBzZWxmLmVycm9ycyBvciBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gc2VsZi5faW5wdXQuZW5jb2RlKHNlbGYuc3RkaW4uZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uZXJyb3JzKQogCiAKICAgICAgICAgZGVmIHNlbmRfc2lnbmFsKHNlbGYsIHNpZyk6CmRpZmYgLS1naXQgYS9MaWIvc3ltYm9sLnB5IGIvTGliL3N5bWJvbC5weQppbmRleCA3NTQxNDk3Li5kOWYwMWUwIDEwMDc1NQotLS0gYS9MaWIvc3ltYm9sLnB5CisrKyBiL0xpYi9zeW1ib2wucHkKQEAgLTI3LDc0ICsyNyw3NSBAQAogc2ltcGxlX3N0bXQgPSAyNzAKIHNtYWxsX3N0bXQgPSAyNzEKIGV4cHJfc3RtdCA9IDI3MgotdGVzdGxpc3Rfc3Rhcl9leHByID0gMjczCi1hdWdhc3NpZ24gPSAyNzQKLWRlbF9zdG10ID0gMjc1Ci1wYXNzX3N0bXQgPSAyNzYKLWZsb3dfc3RtdCA9IDI3NwotYnJlYWtfc3RtdCA9IDI3OAotY29udGludWVfc3RtdCA9IDI3OQotcmV0dXJuX3N0bXQgPSAyODAKLXlpZWxkX3N0bXQgPSAyODEKLXJhaXNlX3N0bXQgPSAyODIKLWltcG9ydF9zdG10ID0gMjgzCi1pbXBvcnRfbmFtZSA9IDI4NAotaW1wb3J0X2Zyb20gPSAyODUKLWltcG9ydF9hc19uYW1lID0gMjg2Ci1kb3R0ZWRfYXNfbmFtZSA9IDI4NwotaW1wb3J0X2FzX25hbWVzID0gMjg4Ci1kb3R0ZWRfYXNfbmFtZXMgPSAyODkKLWRvdHRlZF9uYW1lID0gMjkwCi1nbG9iYWxfc3RtdCA9IDI5MQotbm9ubG9jYWxfc3RtdCA9IDI5MgotYXNzZXJ0X3N0bXQgPSAyOTMKLWNvbXBvdW5kX3N0bXQgPSAyOTQKLWFzeW5jX3N0bXQgPSAyOTUKLWlmX3N0bXQgPSAyOTYKLXdoaWxlX3N0bXQgPSAyOTcKLWZvcl9zdG10ID0gMjk4Ci10cnlfc3RtdCA9IDI5OQotd2l0aF9zdG10ID0gMzAwCi13aXRoX2l0ZW0gPSAzMDEKLWV4Y2VwdF9jbGF1c2UgPSAzMDIKLXN1aXRlID0gMzAzCi10ZXN0ID0gMzA0Ci10ZXN0X25vY29uZCA9IDMwNQotbGFtYmRlZiA9IDMwNgotbGFtYmRlZl9ub2NvbmQgPSAzMDcKLW9yX3Rlc3QgPSAzMDgKLWFuZF90ZXN0ID0gMzA5Ci1ub3RfdGVzdCA9IDMxMAotY29tcGFyaXNvbiA9IDMxMQotY29tcF9vcCA9IDMxMgotc3Rhcl9leHByID0gMzEzCi1leHByID0gMzE0Ci14b3JfZXhwciA9IDMxNQotYW5kX2V4cHIgPSAzMTYKLXNoaWZ0X2V4cHIgPSAzMTcKLWFyaXRoX2V4cHIgPSAzMTgKLXRlcm0gPSAzMTkKLWZhY3RvciA9IDMyMAotcG93ZXIgPSAzMjEKLWF0b21fZXhwciA9IDMyMgotYXRvbSA9IDMyMwotdGVzdGxpc3RfY29tcCA9IDMyNAotdHJhaWxlciA9IDMyNQotc3Vic2NyaXB0bGlzdCA9IDMyNgotc3Vic2NyaXB0ID0gMzI3Ci1zbGljZW9wID0gMzI4Ci1leHBybGlzdCA9IDMyOQotdGVzdGxpc3QgPSAzMzAKLWRpY3RvcnNldG1ha2VyID0gMzMxCi1jbGFzc2RlZiA9IDMzMgotYXJnbGlzdCA9IDMzMwotYXJndW1lbnQgPSAzMzQKLWNvbXBfaXRlciA9IDMzNQotY29tcF9mb3IgPSAzMzYKLWNvbXBfaWYgPSAzMzcKLWVuY29kaW5nX2RlY2wgPSAzMzgKLXlpZWxkX2V4cHIgPSAzMzkKLXlpZWxkX2FyZyA9IDM0MAorYW5uYXNzaWduID0gMjczCit0ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzQKK2F1Z2Fzc2lnbiA9IDI3NQorZGVsX3N0bXQgPSAyNzYKK3Bhc3Nfc3RtdCA9IDI3NworZmxvd19zdG10ID0gMjc4CiticmVha19zdG10ID0gMjc5Citjb250aW51ZV9zdG10ID0gMjgwCityZXR1cm5fc3RtdCA9IDI4MQoreWllbGRfc3RtdCA9IDI4MgorcmFpc2Vfc3RtdCA9IDI4MworaW1wb3J0X3N0bXQgPSAyODQKK2ltcG9ydF9uYW1lID0gMjg1CitpbXBvcnRfZnJvbSA9IDI4NgoraW1wb3J0X2FzX25hbWUgPSAyODcKK2RvdHRlZF9hc19uYW1lID0gMjg4CitpbXBvcnRfYXNfbmFtZXMgPSAyODkKK2RvdHRlZF9hc19uYW1lcyA9IDI5MAorZG90dGVkX25hbWUgPSAyOTEKK2dsb2JhbF9zdG10ID0gMjkyCitub25sb2NhbF9zdG10ID0gMjkzCithc3NlcnRfc3RtdCA9IDI5NAorY29tcG91bmRfc3RtdCA9IDI5NQorYXN5bmNfc3RtdCA9IDI5NgoraWZfc3RtdCA9IDI5Nword2hpbGVfc3RtdCA9IDI5OAorZm9yX3N0bXQgPSAyOTkKK3RyeV9zdG10ID0gMzAwCit3aXRoX3N0bXQgPSAzMDEKK3dpdGhfaXRlbSA9IDMwMgorZXhjZXB0X2NsYXVzZSA9IDMwMworc3VpdGUgPSAzMDQKK3Rlc3QgPSAzMDUKK3Rlc3Rfbm9jb25kID0gMzA2CitsYW1iZGVmID0gMzA3CitsYW1iZGVmX25vY29uZCA9IDMwOAorb3JfdGVzdCA9IDMwOQorYW5kX3Rlc3QgPSAzMTAKK25vdF90ZXN0ID0gMzExCitjb21wYXJpc29uID0gMzEyCitjb21wX29wID0gMzEzCitzdGFyX2V4cHIgPSAzMTQKK2V4cHIgPSAzMTUKK3hvcl9leHByID0gMzE2CithbmRfZXhwciA9IDMxNworc2hpZnRfZXhwciA9IDMxOAorYXJpdGhfZXhwciA9IDMxOQordGVybSA9IDMyMAorZmFjdG9yID0gMzIxCitwb3dlciA9IDMyMgorYXRvbV9leHByID0gMzIzCithdG9tID0gMzI0Cit0ZXN0bGlzdF9jb21wID0gMzI1Cit0cmFpbGVyID0gMzI2CitzdWJzY3JpcHRsaXN0ID0gMzI3CitzdWJzY3JpcHQgPSAzMjgKK3NsaWNlb3AgPSAzMjkKK2V4cHJsaXN0ID0gMzMwCit0ZXN0bGlzdCA9IDMzMQorZGljdG9yc2V0bWFrZXIgPSAzMzIKK2NsYXNzZGVmID0gMzMzCithcmdsaXN0ID0gMzM0Cithcmd1bWVudCA9IDMzNQorY29tcF9pdGVyID0gMzM2Citjb21wX2ZvciA9IDMzNworY29tcF9pZiA9IDMzOAorZW5jb2RpbmdfZGVjbCA9IDMzOQoreWllbGRfZXhwciA9IDM0MAoreWllbGRfYXJnID0gMzQxCiAjLS1lbmQgY29uc3RhbnRzLS0KIAogc3ltX25hbWUgPSB7fQpkaWZmIC0tZ2l0IGEvTGliL3N5bXRhYmxlLnB5IGIvTGliL3N5bXRhYmxlLnB5CmluZGV4IDg0ZmVjNGEuLmIwZTUyNjAgMTAwNjQ0Ci0tLSBhL0xpYi9zeW10YWJsZS5weQorKysgYi9MaWIvc3ltdGFibGUucHkKQEAgLTIsNyArMiw3IEBACiAKIGltcG9ydCBfc3ltdGFibGUKIGZyb20gX3N5bXRhYmxlIGltcG9ydCAoVVNFLCBERUZfR0xPQkFMLCBERUZfTE9DQUwsIERFRl9QQVJBTSwKLSAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBTQ09QRV9PRkYsIFNDT1BFX01BU0ssIEZSRUUsCisgICAgIERFRl9JTVBPUlQsIERFRl9CT1VORCwgREVGX0FOTk9ULCBTQ09QRV9PRkYsIFNDT1BFX01BU0ssIEZSRUUsCiAgICAgIExPQ0FMLCBHTE9CQUxfSU1QTElDSVQsIEdMT0JBTF9FWFBMSUNJVCwgQ0VMTCkKIAogaW1wb3J0IHdlYWtyZWYKQEAgLTE5MCw2ICsxOTAsOSBAQAogICAgIGRlZiBpc19sb2NhbChzZWxmKToKICAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX2ZsYWdzICYgREVGX0JPVU5EKQogCisgICAgZGVmIGlzX2Fubm90YXRlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX2ZsYWdzICYgREVGX0FOTk9UKQorCiAgICAgZGVmIGlzX2ZyZWUoc2VsZik6CiAgICAgICAgIHJldHVybiBib29sKHNlbGYuX19zY29wZSA9PSBGUkVFKQogCmRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQppbmRleCA5YzM0YmUwLi45MzE0ZTcxIDEwMDY0NAotLS0gYS9MaWIvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9zeXNjb25maWcucHkKQEAgLTg2LDggKzg2LDggQEAKICAjIEZJWE1FIGRvbid0IHJlbHkgb24gc3lzLnZlcnNpb24gaGVyZSwgaXRzIGZvcm1hdCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwKICAjIG9mIENQeXRob24sIHVzZSBzeXMudmVyc2lvbl9pbmZvIG9yIHN5cy5oZXh2ZXJzaW9uCiBfUFlfVkVSU0lPTiA9IHN5cy52ZXJzaW9uLnNwbGl0KClbMF0KLV9QWV9WRVJTSU9OX1NIT1JUID0gc3lzLnZlcnNpb25bOjNdCi1fUFlfVkVSU0lPTl9TSE9SVF9OT19ET1QgPSBfUFlfVkVSU0lPTlswXSArIF9QWV9WRVJTSU9OWzJdCitfUFlfVkVSU0lPTl9TSE9SVCA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQorX1BZX1ZFUlNJT05fU0hPUlRfTk9fRE9UID0gJyVkJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIF9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpCiBfQkFTRV9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX3ByZWZpeCkKIF9FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWNfcHJlZml4KQpAQCAtMjE1LDcgKzIxNSw3IEBACiAgICAgIyBSZWdleGVzIG5lZWRlZCBmb3IgcGFyc2luZyBNYWtlZmlsZSAoYW5kIHNpbWlsYXIgc3ludGF4ZXMsCiAgICAgIyBsaWtlIG9sZC1zdHlsZSBTZXR1cCBmaWxlcykuCiAgICAgaW1wb3J0IHJlCi0gICAgX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZSgiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCisgICAgX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZShyIihbYS16QS1aXVthLXpBLVowLTlfXSspXHMqPVxzKiguKikiKQogICAgIF9maW5kdmFyMV9yeCA9IHJlLmNvbXBpbGUociJcJFwoKFtBLVphLXpdW0EtWmEtejAtOV9dKilcKSIpCiAgICAgX2ZpbmR2YXIyX3J4ID0gcmUuY29tcGlsZShyIlwkeyhbQS1aYS16XVtBLVphLXowLTlfXSopfSIpCiAKQEAgLTMzNyw4ICszMzcsMjAgQEAKICAgICAgICAgY29uZmlnX2Rpcl9uYW1lID0gJ2NvbmZpZy0lcyVzJyAlIChfUFlfVkVSU0lPTl9TSE9SVCwgc3lzLmFiaWZsYWdzKQogICAgIGVsc2U6CiAgICAgICAgIGNvbmZpZ19kaXJfbmFtZSA9ICdjb25maWcnCisgICAgaWYgaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJyk6CisgICAgICAgIGNvbmZpZ19kaXJfbmFtZSArPSAnLSVzJyAlIHN5cy5pbXBsZW1lbnRhdGlvbi5fbXVsdGlhcmNoCiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihnZXRfcGF0aCgnc3RkbGliJyksIGNvbmZpZ19kaXJfbmFtZSwgJ01ha2VmaWxlJykKIAorCitkZWYgX2dldF9zeXNjb25maWdkYXRhX25hbWUoKToKKyAgICByZXR1cm4gb3MuZW52aXJvbi5nZXQoJ19QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FJywKKyAgICAgICAgJ19zeXNjb25maWdkYXRhX3thYml9X3twbGF0Zm9ybX1fe211bHRpYXJjaH0nLmZvcm1hdCgKKyAgICAgICAgYWJpPXN5cy5hYmlmbGFncywKKyAgICAgICAgcGxhdGZvcm09c3lzLnBsYXRmb3JtLAorICAgICAgICBtdWx0aWFyY2g9Z2V0YXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJywgJycpLAorICAgICkpCisKKwogZGVmIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCk6CiAgICAgIiIiR2VuZXJhdGUgdGhlIFB5dGhvbiBtb2R1bGUgY29udGFpbmluZyBidWlsZC10aW1lIHZhcmlhYmxlcy4iIiIKICAgICBpbXBvcnQgcHByaW50CkBAIC0zNzksMTQgKzM5MSwxNCBAQAogICAgICMgX3N5c2NvbmZpZ2RhdGEgbW9kdWxlIG1hbnVhbGx5IGFuZCBwb3B1bGF0ZSBpdCB3aXRoIHRoZSBidWlsZCB2YXJzLgogICAgICMgVGhpcyBpcyBtb3JlIHRoYW4gc3VmZmljaWVudCBmb3IgZW5zdXJpbmcgdGhlIHN1YnNlcXVlbnQgY2FsbCB0bwogICAgICMgZ2V0X3BsYXRmb3JtKCkgc3VjY2VlZHMuCi0gICAgbmFtZSA9ICdfc3lzY29uZmlnZGF0YScKKyAgICBuYW1lID0gX2dldF9zeXNjb25maWdkYXRhX25hbWUoKQogICAgIGlmICdkYXJ3aW4nIGluIHN5cy5wbGF0Zm9ybToKICAgICAgICAgaW1wb3J0IHR5cGVzCiAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgbW9kdWxlLmJ1aWxkX3RpbWVfdmFycyA9IHZhcnMKICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKIAotICAgIHB5YnVpbGRkaXIgPSAnYnVpbGQvbGliLiVzLSVzJyAlIChnZXRfcGxhdGZvcm0oKSwgc3lzLnZlcnNpb25bOjNdKQorICAgIHB5YnVpbGRkaXIgPSAnYnVpbGQvbGliLiVzLSVzJyAlIChnZXRfcGxhdGZvcm0oKSwgX1BZX1ZFUlNJT05fU0hPUlQpCiAgICAgaWYgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6CiAgICAgICAgIHB5YnVpbGRkaXIgKz0gJy1weWRlYnVnJwogICAgIG9zLm1ha2VkaXJzKHB5YnVpbGRkaXIsIGV4aXN0X29rPVRydWUpCkBAIC00MDUsNyArNDE3LDkgQEAKIGRlZiBfaW5pdF9wb3NpeCh2YXJzKToKICAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCiAgICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKLSAgICBmcm9tIF9zeXNjb25maWdkYXRhIGltcG9ydCBidWlsZF90aW1lX3ZhcnMKKyAgICBuYW1lID0gX2dldF9zeXNjb25maWdkYXRhX25hbWUoKQorICAgIF90ZW1wID0gX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbJ2J1aWxkX3RpbWVfdmFycyddLCAwKQorICAgIGJ1aWxkX3RpbWVfdmFycyA9IF90ZW1wLmJ1aWxkX3RpbWVfdmFycwogICAgIHZhcnMudXBkYXRlKGJ1aWxkX3RpbWVfdmFycykKIAogZGVmIF9pbml0X25vbl9wb3NpeCh2YXJzKToKQEAgLTUxOCw3ICs1MzIsNyBAQAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2V4ZWNfcHJlZml4J10gPSBfRVhFQ19QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uJ10gPSBfUFlfVkVSU0lPTgogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fc2hvcnQnXSA9IF9QWV9WRVJTSU9OX1NIT1JUCi0gICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdCddID0gX1BZX1ZFUlNJT05bMF0gKyBfUFlfVkVSU0lPTlsyXQorICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fbm9kb3QnXSA9IF9QWV9WRVJTSU9OX1NIT1JUX05PX0RPVAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9iYXNlJ10gPSBfQkFTRV9QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydiYXNlJ10gPSBfUFJFRklYCiAgICAgICAgIF9DT05GSUdfVkFSU1snaW5zdGFsbGVkX3BsYXRiYXNlJ10gPSBfQkFTRV9FWEVDX1BSRUZJWApkaWZmIC0tZ2l0IGEvTGliL3RhcmZpbGUucHkgYi9MaWIvdGFyZmlsZS5weQppbmRleCA3MjFmOWQ3Li5hNjJhYjgyIDEwMDc1NQotLS0gYS9MaWIvdGFyZmlsZS5weQorKysgYi9MaWIvdGFyZmlsZS5weQpAQCAtNjQsNyArNjQsMTAgQEAKICAgICBwYXNzCiAKICMgZnJvbSB0YXJmaWxlIGltcG9ydCAqCi1fX2FsbF9fID0gWyJUYXJGaWxlIiwgIlRhckluZm8iLCAiaXNfdGFyZmlsZSIsICJUYXJFcnJvciJdCitfX2FsbF9fID0gWyJUYXJGaWxlIiwgIlRhckluZm8iLCAiaXNfdGFyZmlsZSIsICJUYXJFcnJvciIsICJSZWFkRXJyb3IiLAorICAgICAgICAgICAiQ29tcHJlc3Npb25FcnJvciIsICJTdHJlYW1FcnJvciIsICJFeHRyYWN0RXJyb3IiLCAiSGVhZGVyRXJyb3IiLAorICAgICAgICAgICAiRU5DT0RJTkciLCAiVVNUQVJfRk9STUFUIiwgIkdOVV9GT1JNQVQiLCAiUEFYX0ZPUk1BVCIsCisgICAgICAgICAgICJERUZBVUxUX0ZPUk1BVCIsICJvcGVuIl0KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyB0YXIgY29uc3RhbnRzCkBAIC0xNDEsNyArMTQ0LDcgQEAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgaW5pdGlhbGl6YXRpb24KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWlmIG9zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgb3MubmFtZSA9PSAibnQiOgogICAgIEVOQ09ESU5HID0gInV0Zi04IgogZWxzZToKICAgICBFTkNPRElORyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQpAQCAtMjI1LDIxICsyMjgsMjEgQEAKICAgICBzaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Yjh4MzU2YiIsIGJ1ZikpCiAgICAgcmV0dXJuIHVuc2lnbmVkX2Noa3N1bSwgc2lnbmVkX2Noa3N1bQogCi1kZWYgY29weWZpbGVvYmooc3JjLCBkc3QsIGxlbmd0aD1Ob25lLCBleGNlcHRpb249T1NFcnJvcik6CitkZWYgY29weWZpbGVvYmooc3JjLCBkc3QsIGxlbmd0aD1Ob25lLCBleGNlcHRpb249T1NFcnJvciwgYnVmc2l6ZT1Ob25lKToKICAgICAiIiJDb3B5IGxlbmd0aCBieXRlcyBmcm9tIGZpbGVvYmogc3JjIHRvIGZpbGVvYmogZHN0LgogICAgICAgIElmIGxlbmd0aCBpcyBOb25lLCBjb3B5IHRoZSBlbnRpcmUgY29udGVudC4KICAgICAiIiIKKyAgICBidWZzaXplID0gYnVmc2l6ZSBvciAxNiAqIDEwMjQKICAgICBpZiBsZW5ndGggPT0gMDoKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbGVuZ3RoIGlzIE5vbmU6Ci0gICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihzcmMsIGRzdCkKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZHN0LCBidWZzaXplKQogICAgICAgICByZXR1cm4KIAotICAgIEJVRlNJWkUgPSAxNiAqIDEwMjQKLSAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZChsZW5ndGgsIEJVRlNJWkUpCisgICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2QobGVuZ3RoLCBidWZzaXplKQogICAgIGZvciBiIGluIHJhbmdlKGJsb2Nrcyk6Ci0gICAgICAgIGJ1ZiA9IHNyYy5yZWFkKEJVRlNJWkUpCi0gICAgICAgIGlmIGxlbihidWYpIDwgQlVGU0laRToKKyAgICAgICAgYnVmID0gc3JjLnJlYWQoYnVmc2l6ZSkKKyAgICAgICAgaWYgbGVuKGJ1ZikgPCBidWZzaXplOgogICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9uKCJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIikKICAgICAgICAgZHN0LndyaXRlKGJ1ZikKIApAQCAtMTQwMCw3ICsxNDAzLDggQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsIG1vZGU9InIiLCBmaWxlb2JqPU5vbmUsIGZvcm1hdD1Ob25lLAogICAgICAgICAgICAgdGFyaW5mbz1Ob25lLCBkZXJlZmVyZW5jZT1Ob25lLCBpZ25vcmVfemVyb3M9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwKLSAgICAgICAgICAgIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIiwgcGF4X2hlYWRlcnM9Tm9uZSwgZGVidWc9Tm9uZSwgZXJyb3JsZXZlbD1Ob25lKToKKyAgICAgICAgICAgIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIiwgcGF4X2hlYWRlcnM9Tm9uZSwgZGVidWc9Tm9uZSwKKyAgICAgICAgICAgIGVycm9ybGV2ZWw9Tm9uZSwgY29weWJ1ZnNpemU9Tm9uZSk6CiAgICAgICAgICIiIk9wZW4gYW4gKHVuY29tcHJlc3NlZCkgdGFyIGFyY2hpdmUgYG5hbWUnLiBgbW9kZScgaXMgZWl0aGVyICdyJyB0bwogICAgICAgICAgICByZWFkIGZyb20gYW4gZXhpc3RpbmcgYXJjaGl2ZSwgJ2EnIHRvIGFwcGVuZCBkYXRhIHRvIGFuIGV4aXN0aW5nCiAgICAgICAgICAgIGZpbGUgb3IgJ3cnIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIG9uZS4gYG1vZGUnCkBAIC0xNDU2LDYgKzE0NjAsNyBAQAogICAgICAgICAgICAgc2VsZi5lcnJvcmxldmVsID0gZXJyb3JsZXZlbAogCiAgICAgICAgICMgSW5pdCBkYXRhc3RydWN0dXJlcy4KKyAgICAgICAgc2VsZi5jb3B5YnVmc2l6ZSA9IGNvcHlidWZzaXplCiAgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKICAgICAgICAgc2VsZi5tZW1iZXJzID0gW10gICAgICAgIyBsaXN0IG9mIG1lbWJlcnMgYXMgVGFySW5mbyBvYmplY3RzCiAgICAgICAgIHNlbGYuX2xvYWRlZCA9IEZhbHNlICAgICMgZmxhZyBpZiBhbGwgbWVtYmVycyBoYXZlIGJlZW4gcmVhZApAQCAtMTU1NSw3ICsxNTYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2F2ZWRfcG9zID0gZmlsZW9iai50ZWxsKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKG5hbWUsICJyIiwgZmlsZW9iaiwgKiprd2FyZ3MpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChSZWFkRXJyb3IsIENvbXByZXNzaW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IChSZWFkRXJyb3IsIENvbXByZXNzaW9uRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW9iai5zZWVrKHNhdmVkX3BvcykKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTE5NjAsMTAgKzE5NjUsMTAgQEAKICAgICAgICAgYnVmID0gdGFyaW5mby50b2J1ZihzZWxmLmZvcm1hdCwgc2VsZi5lbmNvZGluZywgc2VsZi5lcnJvcnMpCiAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShidWYpCiAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGxlbihidWYpCi0KKyAgICAgICAgYnVmc2l6ZT1zZWxmLmNvcHlidWZzaXplCiAgICAgICAgICMgSWYgdGhlcmUncyBkYXRhIHRvIGZvbGxvdywgYXBwZW5kIGl0LgogICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY29weWZpbGVvYmooZmlsZW9iaiwgc2VsZi5maWxlb2JqLCB0YXJpbmZvLnNpemUpCisgICAgICAgICAgICBjb3B5ZmlsZW9iaihmaWxlb2JqLCBzZWxmLmZpbGVvYmosIHRhcmluZm8uc2l6ZSwgYnVmc2l6ZT1idWZzaXplKQogICAgICAgICAgICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2QodGFyaW5mby5zaXplLCBCTE9DS1NJWkUpCiAgICAgICAgICAgICBpZiByZW1haW5kZXIgPiAwOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShOVUwgKiAoQkxPQ0tTSVpFIC0gcmVtYWluZGVyKSkKQEAgLTIxNDUsMTUgKzIxNTAsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNvdXJjZSA9IHNlbGYuZmlsZW9iagogICAgICAgICBzb3VyY2Uuc2Vlayh0YXJpbmZvLm9mZnNldF9kYXRhKQorICAgICAgICBidWZzaXplID0gc2VsZi5jb3B5YnVmc2l6ZQogICAgICAgICB3aXRoIGJsdG5fb3Blbih0YXJnZXRwYXRoLCAid2IiKSBhcyB0YXJnZXQ6CiAgICAgICAgICAgICBpZiB0YXJpbmZvLnNwYXJzZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBmb3Igb2Zmc2V0LCBzaXplIGluIHRhcmluZm8uc3BhcnNlOgogICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2VlayhvZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCBzaXplLCBSZWFkRXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCBzaXplLCBSZWFkRXJyb3IsIGJ1ZnNpemUpCiAgICAgICAgICAgICAgICAgdGFyZ2V0LnNlZWsodGFyaW5mby5zaXplKQogICAgICAgICAgICAgICAgIHRhcmdldC50cnVuY2F0ZSgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCB0YXJpbmZvLnNpemUsIFJlYWRFcnJvcikKKyAgICAgICAgICAgICAgICBjb3B5ZmlsZW9iaihzb3VyY2UsIHRhcmdldCwgdGFyaW5mby5zaXplLCBSZWFkRXJyb3IsIGJ1ZnNpemUpCiAKICAgICBkZWYgbWFrZXVua25vd24oc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CiAgICAgICAgICIiIk1ha2UgYSBmaWxlIGZyb20gYSBUYXJJbmZvIG9iamVjdCB3aXRoIGFuIHVua25vd24gdHlwZQpAQCAtMjIzMiw3ICsyMjM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgb3MubGNob3duKHRhcmdldHBhdGgsIHUsIGcpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgb3MuY2hvd24odGFyZ2V0cGF0aCwgdSwgZykKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoImNvdWxkIG5vdCBjaGFuZ2Ugb3duZXIiKQogCiAgICAgZGVmIGNobW9kKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgpAQCAtMjI0MSw3ICsyMjQ3LDcgQEAKICAgICAgICAgaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MuY2htb2QodGFyZ2V0cGF0aCwgdGFyaW5mby5tb2RlKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBtb2RlIikKIAogICAgIGRlZiB1dGltZShzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKQEAgLTIyNTEsNyArMjI1Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MudXRpbWUodGFyZ2V0cGF0aCwgKHRhcmluZm8ubXRpbWUsIHRhcmluZm8ubXRpbWUpKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBtb2RpZmljYXRpb24gdGltZSIpCiAKICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzNzQsOSArMjM4MCwzMiBAQAogICAgICAgICAiIiJQcm92aWRlIGFuIGl0ZXJhdG9yIG9iamVjdC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYuX2xvYWRlZDoKLSAgICAgICAgICAgIHJldHVybiBpdGVyKHNlbGYubWVtYmVycykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBUYXJJdGVyKHNlbGYpCisgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYubWVtYmVycworICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBZaWVsZCBpdGVtcyB1c2luZyBUYXJGaWxlJ3MgbmV4dCgpIG1ldGhvZC4KKyAgICAgICAgIyBXaGVuIGFsbCBtZW1iZXJzIGhhdmUgYmVlbiByZWFkLCBzZXQgVGFyRmlsZSBhcyBfbG9hZGVkLgorICAgICAgICBpbmRleCA9IDAKKyAgICAgICAgIyBGaXggZm9yIFNGICMxMTAwNDI5OiBVbmRlciByYXJlIGNpcmN1bXN0YW5jZXMgaXQgY2FuCisgICAgICAgICMgaGFwcGVuIHRoYXQgZ2V0bWVtYmVycygpIGlzIGNhbGxlZCBkdXJpbmcgaXRlcmF0aW9uLAorICAgICAgICAjIHdoaWNoIHdpbGwgaGF2ZSBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgbmV4dCgpIG1ldGhvZC4KKyAgICAgICAgaWYgc2VsZi5maXJzdG1lbWJlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLm5leHQoKQorICAgICAgICAgICAgaW5kZXggKz0gMQorICAgICAgICAgICAgeWllbGQgdGFyaW5mbworCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBpbmRleCA8IGxlbihzZWxmLm1lbWJlcnMpOgorICAgICAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLm1lbWJlcnNbaW5kZXhdCisgICAgICAgICAgICBlbGlmIG5vdCBzZWxmLl9sb2FkZWQ6CisgICAgICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYubmV4dCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHRhcmluZm86CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaW5kZXggKz0gMQorICAgICAgICAgICAgeWllbGQgdGFyaW5mbwogCiAgICAgZGVmIF9kYmcoc2VsZiwgbGV2ZWwsIG1zZyk6CiAgICAgICAgICIiIldyaXRlIGRlYnVnZ2luZyBvdXRwdXQgdG8gc3lzLnN0ZGVyci4KQEAgLTIzOTcsNDUgKzI0MjYsNiBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2V4dGZpbGVvYmo6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQotIyBjbGFzcyBUYXJGaWxlCi0KLWNsYXNzIFRhckl0ZXI6Ci0gICAgIiIiSXRlcmF0b3IgQ2xhc3MuCi0KLSAgICAgICBmb3IgdGFyaW5mbyBpbiBUYXJGaWxlKC4uLik6Ci0gICAgICAgICAgIHN1aXRlLi4uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZmlsZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhIFRhckl0ZXIgb2JqZWN0LgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi50YXJmaWxlID0gdGFyZmlsZQotICAgICAgICBzZWxmLmluZGV4ID0gMAotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGl0ZXJhdG9yIG9iamVjdC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmCi0gICAgZGVmIF9fbmV4dF9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG5leHQgaXRlbSB1c2luZyBUYXJGaWxlJ3MgbmV4dCgpIG1ldGhvZC4KLSAgICAgICAgICAgV2hlbiBhbGwgbWVtYmVycyBoYXZlIGJlZW4gcmVhZCwgc2V0IFRhckZpbGUgYXMgX2xvYWRlZC4KLSAgICAgICAgIiIiCi0gICAgICAgICMgRml4IGZvciBTRiAjMTEwMDQyOTogVW5kZXIgcmFyZSBjaXJjdW1zdGFuY2VzIGl0IGNhbgotICAgICAgICAjIGhhcHBlbiB0aGF0IGdldG1lbWJlcnMoKSBpcyBjYWxsZWQgZHVyaW5nIGl0ZXJhdGlvbiwKLSAgICAgICAgIyB3aGljaCB3aWxsIGNhdXNlIFRhckl0ZXIgdG8gc3RvcCBwcmVtYXR1cmVseS4KLQotICAgICAgICBpZiBzZWxmLmluZGV4ID09IDAgYW5kIHNlbGYudGFyZmlsZS5maXJzdG1lbWJlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhcmZpbGUubmV4dCgpCi0gICAgICAgIGVsaWYgc2VsZi5pbmRleCA8IGxlbihzZWxmLnRhcmZpbGUubWVtYmVycyk6Ci0gICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJmaWxlLm1lbWJlcnNbc2VsZi5pbmRleF0KLSAgICAgICAgZWxpZiBub3Qgc2VsZi50YXJmaWxlLl9sb2FkZWQ6Ci0gICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJmaWxlLm5leHQoKQotICAgICAgICAgICAgaWYgbm90IHRhcmluZm86Ci0gICAgICAgICAgICAgICAgc2VsZi50YXJmaWxlLl9sb2FkZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgICAgICBzZWxmLmluZGV4ICs9IDEKLSAgICAgICAgcmV0dXJuIHRhcmluZm8KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIGV4cG9ydGVkIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvTGliL3RlbG5ldGxpYi5weSBiL0xpYi90ZWxuZXRsaWIucHkKaW5kZXggNzJkYWJjNy4uYjA4NjNiMSAxMDA2NDQKLS0tIGEvTGliL3RlbG5ldGxpYi5weQorKysgYi9MaWIvdGVsbmV0bGliLnB5CkBAIC02MzcsNiArNjM3LDEyIEBACiAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgogICAgICAgICByZXR1cm4gKC0xLCBOb25lLCB0ZXh0KQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIHRlc3QoKToKICAgICAiIiJUZXN0IHByb2dyYW0gZm9yIHRlbG5ldGxpYi4KQEAgLTY2MCwxMSArNjY2LDEwIEBACiAgICAgICAgICAgICBwb3J0ID0gaW50KHBvcnRzdHIpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcG9ydCA9IHNvY2tldC5nZXRzZXJ2YnluYW1lKHBvcnRzdHIsICd0Y3AnKQotICAgIHRuID0gVGVsbmV0KCkKLSAgICB0bi5zZXRfZGVidWdsZXZlbChkZWJ1Z2xldmVsKQotICAgIHRuLm9wZW4oaG9zdCwgcG9ydCwgdGltZW91dD0wLjUpCi0gICAgdG4uaW50ZXJhY3QoKQotICAgIHRuLmNsb3NlKCkKKyAgICB3aXRoIFRlbG5ldCgpIGFzIHRuOgorICAgICAgICB0bi5zZXRfZGVidWdsZXZlbChkZWJ1Z2xldmVsKQorICAgICAgICB0bi5vcGVuKGhvc3QsIHBvcnQsIHRpbWVvdXQ9MC41KQorICAgICAgICB0bi5pbnRlcmFjdCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdCgpCmRpZmYgLS1naXQgYS9MaWIvdGVtcGZpbGUucHkgYi9MaWIvdGVtcGZpbGUucHkKaW5kZXggYWQ2ODdiOS4uNjE0NjIzNSAxMDA2NDQKLS0tIGEvTGliL3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZW1wZmlsZS5weQpAQCAtNzk3LDcgKzc5Nyw2IEBACiAgICAgICAgIF9zaHV0aWwucm10cmVlKG5hbWUpCiAgICAgICAgIF93YXJuaW5ncy53YXJuKHdhcm5fbWVzc2FnZSwgUmVzb3VyY2VXYXJuaW5nKQogCi0KICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiPHt9IHshcn0+Ii5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvX19tYWluX18ucHkgYi9MaWIvdGVzdC9fX21haW5fXy5weQppbmRleCBkNWZiZTE1Li4xOWE2YjJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9fX21haW5fXy5weQorKysgYi9MaWIvdGVzdC9fX21haW5fXy5weQpAQCAtMSwzICsxLDIgQEAKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLQotcmVncnRlc3QubWFpbl9pbl90ZW1wX2N3ZCgpCitmcm9tIHRlc3QubGlicmVncnRlc3QgaW1wb3J0IG1haW4KK21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5IGIvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IDJiZWNmYWEuLmMwMDg0NmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQorKysgYi9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKQEAgLTE2MjgsMTMgKzE2MjgsMzMgQEAKICAgICAgICAgZCA9IFthLCBiXQogICAgICAgICBlID0gc2VsZi5saXN0KGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBlWzpdLAorICAgICAgICAgICAgW2VsZW1lbnRbOl0gZm9yIGVsZW1lbnQgaW4gZV0sCiAgICAgICAgICAgICBbWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLCBbMCwgMSwgMiwgMywgNCwgMCwgMSwgMiwgMywgNF1dCiAgICAgICAgICAgICApCiAKICAgICAgICAgZiA9IHNlbGYubGlzdChbYV0pCiAgICAgICAgIGEuYXBwZW5kKCdoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZls6XSwgW1swLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAnaGVsbG8nXV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZlswXVs6XSwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksICdoZWxsbyddKQorCisgICAgZGVmIHRlc3RfbGlzdF9wcm94eV9pbl9saXN0KHNlbGYpOgorICAgICAgICBhID0gc2VsZi5saXN0KFtzZWxmLmxpc3QocmFuZ2UoMykpIGZvciBfaSBpbiByYW5nZSgzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2lubmVyWzpdIGZvciBpbm5lciBpbiBhXSwgW1swLCAxLCAyXV0gKiAzKQorCisgICAgICAgIGFbMF1bLTFdID0gNTUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhWzBdWzpdLCBbMCwgMSwgNTVdKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYVtpXVs6XSwgWzAsIDEsIDJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYVsxXS5wb3AoKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYVsxXSksIDIpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDMsIDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYVtpXSksIDMpCisKKyAgICAgICAgZGVsIGEKKworICAgICAgICBiID0gc2VsZi5saXN0KCkKKyAgICAgICAgYi5hcHBlbmQoYikKKyAgICAgICAgZGVsIGIKIAogICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLmRpY3QoKQpAQCAtMTY0Niw2ICsxNjY2LDUyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGQudmFsdWVzKCkpLCBbY2hyKGkpIGZvciBpIGluIGluZGljZXNdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChkLml0ZW1zKCkpLCBbKGksIGNocihpKSkgZm9yIGkgaW4gaW5kaWNlc10pCiAKKyAgICBkZWYgdGVzdF9kaWN0X3Byb3h5X25lc3RlZChzZWxmKToKKyAgICAgICAgcGV0cyA9IHNlbGYuZGljdChmZXJyZXRzPTIsIGhhbXN0ZXJzPTQpCisgICAgICAgIHN1cHBsaWVzID0gc2VsZi5kaWN0KHdhdGVyPTEwLCBmZWVkPTMpCisgICAgICAgIGQgPSBzZWxmLmRpY3QocGV0cz1wZXRzLCBzdXBwbGllcz1zdXBwbGllcykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWyd3YXRlciddLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCAxMCkKKworICAgICAgICBkWydzdXBwbGllcyddWydibGFua2V0cyddID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWydibGFua2V0cyddLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ2JsYW5rZXRzJ10sIDUpCisKKyAgICAgICAgZFsnc3VwcGxpZXMnXVsnd2F0ZXInXSA9IDcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCA3KQorCisgICAgICAgIGRlbCBwZXRzCisgICAgICAgIGRlbCBzdXBwbGllcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3BldHMnXVsnZmVycmV0cyddLCAyKQorICAgICAgICBkWydzdXBwbGllcyddWydibGFua2V0cyddID0gMTEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWydibGFua2V0cyddLCAxMSkKKworICAgICAgICBwZXRzID0gZFsncGV0cyddCisgICAgICAgIHN1cHBsaWVzID0gZFsnc3VwcGxpZXMnXQorICAgICAgICBzdXBwbGllc1snd2F0ZXInXSA9IDcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCA3KQorCisgICAgICAgIGQuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwZXRzWydoYW1zdGVycyddLCA0KQorCisgICAgICAgIGwgPSBzZWxmLmxpc3QoW3BldHMsIHN1cHBsaWVzXSkKKyAgICAgICAgbFswXVsnbWFybW90cyddID0gMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBldHNbJ21hcm1vdHMnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzBdWydtYXJtb3RzJ10sIDEpCisKKyAgICAgICAgZGVsIHBldHMKKyAgICAgICAgZGVsIHN1cHBsaWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFswXVsnbWFybW90cyddLCAxKQorCisgICAgICAgIG91dGVyID0gc2VsZi5saXN0KFtbODgsIDk5XSwgbF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShvdXRlclswXSwgbGlzdCkgICMgTm90IGEgTGlzdFByb3h5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXJbLTFdWy0xXVsnZmVlZCddLCAzKQorCiAgICAgZGVmIHRlc3RfbmFtZXNwYWNlKHNlbGYpOgogICAgICAgICBuID0gc2VsZi5OYW1lc3BhY2UoKQogICAgICAgICBuLm5hbWUgPSAnQm9iJwpAQCAtMTY2OCw2ICsxNzM0LDEwIEBACiBkZWYgbXVsKHgsIHkpOgogICAgIHJldHVybiB4KnkKIAorZGVmIHJhaXNlX2xhcmdlX3ZhbHVlcnJvcih3YWl0KToKKyAgICB0aW1lLnNsZWVwKHdhaXQpCisgICAgcmFpc2UgVmFsdWVFcnJvcigieCIgKiAxMDI0KioyKQorCiBjbGFzcyBTYXlXaGVuRXJyb3IoVmFsdWVFcnJvcik6IHBhc3MKIAogZGVmIGV4Y2VwdGlvbl90aHJvd2luZ19nZW5lcmF0b3IodG90YWwsIHdoZW4pOgpAQCAtMTkxMCw2ICsxOTgwLDI2IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CiAgICAgICAgICAgICAgICAgcC5hcHBseShzZWxmLl90ZXN0X3dyYXBwZWRfZXhjZXB0aW9uKQogCisgICAgZGVmIHRlc3RfbWFwX25vX2ZhaWxmYXN0KHNlbGYpOgorICAgICAgICAjIElzc3VlICMyMzk5MjogdGhlIGZhaWwtZmFzdCBiZWhhdmlvdXIgd2hlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkCisgICAgICAgICMgZHVyaW5nIG1hcCgpIHdvdWxkIG1ha2UgUG9vbC5qb2luKCkgZGVhZGxvY2ssIGJlY2F1c2UgYSB3b3JrZXIKKyAgICAgICAgIyBwcm9jZXNzIHdvdWxkIGZpbGwgdGhlIHJlc3VsdCBxdWV1ZSAoYWZ0ZXIgdGhlIHJlc3VsdCBoYW5kbGVyIHRocmVhZAorICAgICAgICAjIHRlcm1pbmF0ZWQsIGhlbmNlIG5vdCBkcmFpbmluZyBpdCBhbnltb3JlKS4KKworICAgICAgICB0X3N0YXJ0ID0gdGltZS50aW1lKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLlBvb2woMikgYXMgcDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHAubWFwKHJhaXNlX2xhcmdlX3ZhbHVlcnJvciwgWzAsIDFdKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC41KQorICAgICAgICAgICAgICAgICAgICBwLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgcC5qb2luKCkKKworICAgICAgICAjIGNoZWNrIHRoYXQgd2UgaW5kZWVkIHdhaXRlZCBmb3IgYWxsIGpvYnMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHRpbWUudGltZSgpIC0gdF9zdGFydCwgMC45KQorCiAKIGRlZiByYWlzaW5nKCk6CiAgICAgcmFpc2UgS2V5RXJyb3IoImtleSIpCkBAIC0zNzY3LDcgKzM4NTcsNyBAQAogICAgICAgICBwLnN0ZGVyci5jbG9zZSgpCiAgICAgICAgIGV4cGVjdGVkID0gJ3NlbWFwaG9yZV90cmFja2VyOiBUaGVyZSBhcHBlYXIgdG8gYmUgMiBsZWFrZWQgc2VtYXBob3JlcycKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIsIGV4cGVjdGVkKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyciwgJ3NlbWFwaG9yZV90cmFja2VyOiAlcjogXFtFcnJubycgJSBuYW1lMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIsIHInc2VtYXBob3JlX3RyYWNrZXI6ICVyOiBcW0Vycm5vJyAlIG5hbWUxKQogCiAjCiAjIE1peGlucwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYW5uX21vZHVsZS5weSBiL0xpYi90ZXN0L2Fubl9tb2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2Yjg3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUucHkKQEAgLTAsMCArMSw1MyBAQAorCisKKyIiIgorVGhlIG1vZHVsZSBmb3IgdGVzdGluZyB2YXJpYWJsZSBhbm5vdGF0aW9ucy4KK0VtcHR5IGxpbmVzIGFib3ZlIGFyZSBmb3IgZ29vZCByZWFzb24gKHRlc3RpbmcgZm9yIGNvcnJlY3QgbGluZSBudW1iZXJzKQorIiIiCisKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitfX2Fubm90YXRpb25zX19bMV0gPSAyCisKK2NsYXNzIEM6CisKKyAgICB4ID0gNTsgeTogT3B0aW9uYWxbJ0MnXSA9IE5vbmUKKworZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCit4OiBpbnQgPSA1OyB5OiBzdHIgPSB4OyBmOiBUdXBsZVtpbnQsIGludF0KKworY2xhc3MgTSh0eXBlKToKKworICAgIF9fYW5ub3RhdGlvbnNfX1snMTIzJ10gPSAxMjMKKyAgICBvOiB0eXBlID0gb2JqZWN0CisKKyhwYXJzKTogYm9vbCA9IFRydWUKKworY2xhc3MgRChDKToKKyAgICBqOiBzdHIgPSAnaGknOyBrOiBzdHI9ICdieWUnCisKK2Zyb20gdHlwZXMgaW1wb3J0IG5ld19jbGFzcworaF9jbGFzcyA9IG5ld19jbGFzcygnSCcsIChDLCkpCitqX2NsYXNzID0gbmV3X2NsYXNzKCdKJykKKworY2xhc3MgRigpOgorICAgIHo6IGludCA9IDUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgIHBhc3MKKworY2xhc3MgWShGKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKEYsIHNlbGYpLl9faW5pdF9fKDEyMykKKworY2xhc3MgTWV0YSh0eXBlKToKKyAgICBkZWYgX19uZXdfXyhtZXRhLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtZXRhLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorCitjbGFzcyBTKG1ldGFjbGFzcyA9IE1ldGEpOgorICAgIHg6IHN0ciA9ICdzb21ldGhpbmcnCisgICAgeTogc3RyID0gJ3NvbWV0aGluZyBlbHNlJworCitkZWYgZm9vKHg6IGludCA9IDEwKToKKyAgICBkZWYgYmFyKHk6IExpc3Rbc3RyXSk6CisgICAgICAgIHg6IHN0ciA9ICd5ZXMnCisgICAgYmFyKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Fubl9tb2R1bGUyLnB5IGIvTGliL3Rlc3QvYW5uX21vZHVsZTIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZjZjViMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUyLnB5CkBAIC0wLDAgKzEsMzYgQEAKKyIiIgorU29tZSBjb3JyZWN0IHN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbiBoZXJlLgorTW9yZSBleGFtcGxlcyBhcmUgaW4gdGVzdF9ncmFtbWFyIGFuZCB0ZXN0X3BhcnNlci4KKyIiIgorCitmcm9tIHR5cGluZyBpbXBvcnQgbm9fdHlwZV9jaGVjaywgQ2xhc3NWYXIKKworaTogaW50ID0gMQorajogaW50Cit4OiBmbG9hdCA9IGkvMTAKKworZGVmIGYoKToKKyAgICBjbGFzcyBDOiAuLi4KKyAgICByZXR1cm4gQygpCisKK2YoKS5uZXdfYXR0cjogb2JqZWN0ID0gb2JqZWN0KCkKKworY2xhc3MgQzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOgorICAgICAgICBzZWxmLnggPSB4CisKK2MgPSBDKDUpCitjLm5ld19hdHRyOiBpbnQgPSAxMAorCitfX2Fubm90YXRpb25zX18gPSB7fQorCisKK0Bub190eXBlX2NoZWNrCitjbGFzcyBOVEM6CisgICAgZGVmIG1ldGgoc2VsZiwgcGFyYW06IGNvbXBsZXgpIC0+IE5vbmU6CisgICAgICAgIC4uLgorCitjbGFzcyBDVjoKKyAgICB2YXI6IENsYXNzVmFyWydDViddCisKK0NWLnZhciA9IENWKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Fubl9tb2R1bGUzLnB5IGIvTGliL3Rlc3QvYW5uX21vZHVsZTMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNjZDdiZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUzLnB5CkBAIC0wLDAgKzEsMTggQEAKKyIiIgorQ29ycmVjdCBzeW50YXggZm9yIHZhcmlhYmxlIGFubm90YXRpb24gdGhhdCBzaG91bGQgZmFpbCBhdCBydW50aW1lCitpbiBhIGNlcnRhaW4gbWFubmVyLiBNb3JlIGV4YW1wbGVzIGFyZSBpbiB0ZXN0X2dyYW1tYXIgYW5kIHRlc3RfcGFyc2VyLgorIiIiCisKK2RlZiBmX2JhZF9hbm4oKToKKyAgICBfX2Fubm90YXRpb25zX19bMV0gPSAyCisKK2NsYXNzIENfT0s6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHg6IGludCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi54OiBub19zdWNoX25hbWUgPSB4ICAjIFRoaXMgb25lIGlzIE9LIGFzIHByb3Bvc2VkIGJ5IEd1aWRvCisKK2NsYXNzIERfYmFkX2FubjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOgorICAgICAgICBzZmVsLnk6IGludCA9IDAKKworZGVmIGdfYmFkX2FubigpOgorICAgIG5vX3N1Y2hfbmFtZS5hdHRyOiBpbnQgPSAwCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5IGIvTGliL3Rlc3QvYXVkaW90ZXN0cy5weQppbmRleCAwYWUyMjQyLi5kM2U4ZTllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2F1ZGlvdGVzdHMucHkKQEAgLTEsOSArMSw4IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIFRFU1RGTiwgdW5saW5rCi1pbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBhcnJheQogaW1wb3J0IGlvCiBpbXBvcnQgcGlja2xlCi1pbXBvcnQgc3lzCisKIAogY2xhc3MgVW5zZWVrYWJsZUlPKGlvLkZpbGVJTyk6CiAgICAgZGVmIHRlbGwoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hdXRvdGVzdC5weSBiL0xpYi90ZXN0L2F1dG90ZXN0LnB5CmluZGV4IDQxYzIwODguLmZhODVjYzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2F1dG90ZXN0LnB5CisrKyBiL0xpYi90ZXN0L2F1dG90ZXN0LnB5CkBAIC0xLDYgKzEsNSBAQAogIyBUaGlzIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIHJ1bm5pbmcgcmVncnRlc3QucHkgZnJvbSB0aGUgY21kbGluZS4KICMgSXQgY2FuIGJlIGVzcGVjaWFsbHkgaGFuZHkgaWYgeW91J3JlIGluIGFuIGludGVyYWN0aXZlIHNoZWxsLCBlLmcuLAogIyBmcm9tIHRlc3QgaW1wb3J0IGF1dG90ZXN0LgotCi1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0Ci1yZWdydGVzdC5tYWluKCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdCBpbXBvcnQgbWFpbgorbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI4NWUyOS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKGE9YXdhaXQgc29tZXRoaW5nKCkpOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjg1ZTI5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZTFiYzUuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbygpOgotICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDMzYjI4Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICBhd2FpdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMTlhZjYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotZGVmIGZvbygpOgotICAgIGF3YWl0IHNvbWV0aGluZygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IwYTIzZC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgeWllbGQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM3LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWU0YmY5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICB5aWVsZCBmcm9tIFtdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M2MzZmOS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgYXdhaXQgYXdhaXQgZnV0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvMGU0MDE1YjkuMCBiL0xpYi90ZXN0L2NhcGF0aC8wZTQwMTViOS4wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmQyNTliLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2NhcGF0aC8wZTQwMTViOS4wCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDbFRDQ0FmNmdBd0lCQWdJSkFLR1U5NXdLUjhwVE1BMEdDU3FHU0liM0RRRUJCUVVBTUhBeEN6QUpCZ05WCi1CQVlUQWxoWk1SY3dGUVlEVlFRSERBNURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2d3YVVIbDBhRzl1Ci1JRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4SXpBaEJnTlZCQU1NR25ObGJHWXRjMmxuYm1Wa0xuQjVkR2h2Ci1iblJsYzNRdWJtVjBNQjRYRFRFME1URXdNakU0TURreU9Wb1hEVEkwTVRBek1ERTRNRGt5T1Zvd2NERUxNQWtHCi1BMVVFQmhNQ1dGa3hGekFWQmdOVkJBY01Ea05oYzNSc1pTQkJiblJvY21GNE1TTXdJUVlEVlFRS0RCcFFlWFJvCi1iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmpFak1DRUdBMVVFQXd3YWMyVnNaaTF6YVdkdVpXUXVjSGwwCi1hRzl1ZEdWemRDNXVaWFF3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQU5EWFFYVzl0anlaCi1YdDBJdjJ0TEwxK2ppbnI0d0dnMzZpb0xETEZrTWYrMlkxR0wwdjBCbktZRzROMU9LbEFVMTVMWEdlR2VyOHZtCi1Tdi95SXZtZHJFTHZoQWJibzN3NGE5VE1ZUUE0WGtJVkxkdnUzbXZOT0FldCs4UE1KeG4yNmRiRGhHODA5QUx2Ci1FSFk1N2xRc0JTM0c1OVJaeUJQVnFBcW1JbVdOSm5WekFnTUJBQUdqTnpBMU1DVUdBMVVkRVFRZU1CeUNHbk5sCi1iR1l0YzJsbmJtVmtMbkI1ZEdodmJuUmxjM1F1Ym1WME1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOCi1BUUVGQlFBRGdZRUFJdXpBaGdNb3VKcE5kZjNVUkNISWluZXlvU3Q2V0svOStleVVjamxLT3JEb1hOWmFENzJoCi1UWE1lS1lvV3ZKeVZjU0xLTDhja1B0RG9iZ1AyT1R0MFVreUFhajBuK1pIYXFxMWxIMnlWZkdVQTFJTEp2NTE1Ci1DOEJxYnZWWnVxbTNpN3lnbXczYnFFL2xZTWdPcll0WFhucU9yejZudnNFNlljOVY5ckZmbE9NPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY2FwYXRoL2IxOTMwMjE4LjAgYi9MaWIvdGVzdC9jYXBhdGgvYjE5MzAyMTguMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzMzNDljCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvY2FwYXRoL2IxOTMwMjE4LjAKQEAgLTAsMCArMSwyMSBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlEYlRDQ0FsV2dBd0lCQWdJSkFMQ1NaTEh5MmlIUU1BMEdDU3FHU0liM0RRRUJCUVVBTUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3MHhNekF4TURReE9UUTNNRGRhRncweU16QXhNREl4CitPVFEzTURkYU1FMHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnCitSbTkxYm1SaGRHbHZiaUJEUVRFV01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakNDQVNJd0RRWUpLb1pJCitodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9mZTZlTU1ud0Myb2Ywclc1YlNiOHpndm9hNUlGN3NBM3BWCitxK3FrNmZsSmhkSm0xZTNIZXVwV2ppMlA1MExpWWlpcG45WWJqdXUxdEp5ZkZLdmY1cFNMZGgwK2JTUmg3UXkvCitBSXBoRE45Y3lEWnpGZ0ROUjdwdHBLUjBpSU1qQ2huOENhYzhTa3ZUNXgwdDVPcE1WQ0h6SnR1Sk54alVBcnRBCitNbCtrL3kwYzk5Uzc3STdQWElLczVud0liRWlGWVFkL0plQmM0THcwWCtDNUJFZDF5RWNMamJ6V3lHaGZNNE5pCiswaUJFTmJHdGdScUt6Yncxc0Z5TFI5WVk2WndZbDh3QlBDbk02QjdrNU1HNDN1ZkNFUmlIV3BNMDJLWWw5eFJ4Cis2K1Fob3RJUExpN1VZZ0ExMDlidlhHQkxUS2tVNHQwVldFWTNNeWEzNXk1ZDdVTGt4VTBDQXdFQUFhTlFNRTR3CitIUVlEVlIwT0JCWUVGTHpkWXRsMjJodlNWR3ZQNEdhYkhoNTdWZ3dMTUI4R0ExVWRJd1FZTUJhQUZMemRZdGwyCisyaHZTVkd2UDRHYWJIaDU3Vmd3TE1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCCitBSDBLOWN1TjAxMjltWTc0S3crNjY4TFpwaWRQTG5zdkRtVFlIRFZRVHU3OGtMbU5iYWpGeGdhd3IvTXR2enU0CitRZ2ZkR0gxdGxWUlhoUmhnUnkvcmVCdjU2QmY5V2cySEZ5aXNUR3JtdkNuMDlGVndLVUxlaGVxcmJDTUdaREIxCitBbzVUdkY0Qk16Zk1IczI0cFAzSzVGOWxPNE1jaHZGVkFxQTZqOXVSdDBBVXRPZU4wdTV6dXVQbE5DMjhsRzlPCitKQWIzWDRzT3A0NXIzbDUxOURLYVVMRkVNNXJRQmVKNGd2L2Iyb3BqNjZuZDBiK2dZYTNqbm9va1hXSU81MHlSCitmKy9mTkRZN0wxMzFoTEl2eEcyVGxocHZNQ2p4MmhLYVpMUkFNeDI5M2l0VHFPcSsxcnhPbHZWRSt6SVlydFVmCis5bW12dGs1N0hWanNPNmxUbzE1WXlKND0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NhcGF0aC9jZTdiODY0My4wIGIvTGliL3Rlc3QvY2FwYXRoL2NlN2I4NjQzLjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDI1OWIuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY2FwYXRoL2NlN2I4NjQzLjAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUNsVENDQWY2Z0F3SUJBZ0lKQUtHVTk1d0tSOHBUTUEwR0NTcUdTSWIzRFFFQkJRVUFNSEF4Q3pBSkJnTlYKLUJBWVRBbGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDZ3dhVUhsMGFHOXUKLUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhJekFoQmdOVkJBTU1Hbk5sYkdZdGMybG5ibVZrTG5CNWRHaHYKLWJuUmxjM1F1Ym1WME1CNFhEVEUwTVRFd01qRTRNRGt5T1ZvWERUSTBNVEF6TURFNE1Ea3lPVm93Y0RFTE1Ba0cKLUExVUVCaE1DV0ZreEZ6QVZCZ05WQkFjTURrTmhjM1JzWlNCQmJuUm9jbUY0TVNNd0lRWURWUVFLREJwUWVYUm8KLWIyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiakVqTUNFR0ExVUVBd3dhYzJWc1ppMXphV2R1WldRdWNIbDAKLWFHOXVkR1Z6ZEM1dVpYUXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTkRYUVhXOXRqeVoKLVh0MEl2MnRMTDEramlucjR3R2czNmlvTERMRmtNZisyWTFHTDB2MEJuS1lHNE4xT0tsQVUxNUxYR2VHZXI4dm0KLVN2L3lJdm1kckVMdmhBYmJvM3c0YTlUTVlRQTRYa0lWTGR2dTNtdk5PQWV0KzhQTUp4bjI2ZGJEaEc4MDlBTHYKLUVIWTU3bFFzQlMzRzU5Ulp5QlBWcUFxbUltV05KblZ6QWdNQkFBR2pOekExTUNVR0ExVWRFUVFlTUJ5Q0duTmwKLWJHWXRjMmxuYm1Wa0xuQjVkR2h2Ym5SbGMzUXVibVYwTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y04KLUFRRUZCUUFEZ1lFQUl1ekFoZ01vdUpwTmRmM1VSQ0hJaW5leW9TdDZXSy85K2V5VWNqbEtPckRvWE5aYUQ3MmgKLVRYTWVLWW9Xdkp5VmNTTEtMOGNrUHREb2JnUDJPVHQwVWt5QWFqMG4rWkhhcXExbEgyeVZmR1VBMUlMSnY1MTUKLUM4QnFidlZadXFtM2k3eWdtdzNicUUvbFlNZ09yWXRYWG5xT3J6Nm52c0U2WWM5VjlyRmZsT009Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvY2VmZjE3MTAuMCBiL0xpYi90ZXN0L2NhcGF0aC9jZWZmMTcxMC4wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MzM0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9jYXBhdGgvY2VmZjE3MTAuMApAQCAtMCwwICsxLDIxIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSURiVENDQWxXZ0F3SUJBZ0lKQUxDU1pMSHkyaUhRTUEwR0NTcUdTSWIzRFFFQkJRVUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE16QXhNRFF4T1RRM01EZGFGdzB5TXpBeE1ESXgKK09UUTNNRGRhTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBU0l3RFFZSktvWkkKK2h2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT2ZlNmVNTW53QzJvZjByVzViU2I4emd2b2E1SUY3c0EzcFYKK3ErcWs2ZmxKaGRKbTFlM0hldXBXamkyUDUwTGlZaWlwbjlZYmp1dTF0SnlmRkt2ZjVwU0xkaDArYlNSaDdReS8KK0FJcGhETjljeURaekZnRE5SN3B0cEtSMGlJTWpDaG44Q2FjOFNrdlQ1eDB0NU9wTVZDSHpKdHVKTnhqVUFydEEKK01sK2sveTBjOTlTNzdJN1BYSUtzNW53SWJFaUZZUWQvSmVCYzRMdzBYK0M1QkVkMXlFY0xqYnpXeUdoZk00TmkKKzBpQkVOYkd0Z1JxS3pidzFzRnlMUjlZWTZad1lsOHdCUENuTTZCN2s1TUc0M3VmQ0VSaUhXcE0wMktZbDl4UngKKzYrUWhvdElQTGk3VVlnQTEwOWJ2WEdCTFRLa1U0dDBWV0VZM015YTM1eTVkN1VMa3hVMENBd0VBQWFOUU1FNHcKK0hRWURWUjBPQkJZRUZMemRZdGwyMmh2U1ZHdlA0R2FiSGg1N1Znd0xNQjhHQTFVZEl3UVlNQmFBRkx6ZFl0bDIKKzJodlNWR3ZQNEdhYkhoNTdWZ3dMTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUIKK0FIMEs5Y3VOMDEyOW1ZNzRLdys2NjhMWnBpZFBMbnN2RG1UWUhEVlFUdTc4a0xtTmJhakZ4Z2F3ci9NdHZ6dTQKK1FnZmRHSDF0bFZSWGhSaGdSeS9yZUJ2NTZCZjlXZzJIRnlpc1RHcm12Q24wOUZWd0tVTGVoZXFyYkNNR1pEQjEKK0FvNVR2RjRCTXpmTUhzMjRwUDNLNUY5bE80TWNodkZWQXFBNmo5dVJ0MEFVdE9lTjB1NXp1dVBsTkMyOGxHOU8KK0pBYjNYNHNPcDQ1cjNsNTE5REthVUxGRU01clFCZUo0Z3YvYjJvcGo2Nm5kMGIrZ1lhM2pub29rWFdJTzUweVIKK2YrL2ZORFk3TDEzMWhMSXZ4RzJUbGhwdk1DangyaEthWkxSQU14MjkzaXRUcU9xKzFyeE9sdlZFK3pJWXJ0VWYKKzltbXZ0azU3SFZqc082bFRvMTVZeUo0PQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dCBiL0xpYi90ZXN0L2NtYXRoX3Rlc3RjYXNlcy50eHQKaW5kZXggOWIwODY1My4uZGQ3ZTQ1OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dAorKysgYi9MaWIvdGVzdC9jbWF0aF90ZXN0Y2FzZXMudHh0CkBAIC01Myw2ICs1MywxMiBAQAogLS0gTVBGUiBob21lcGFnZSBhdCBodHRwOi8vd3d3Lm1wZnIub3JnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZQogLS0gTVBGUiBwcm9qZWN0LgogCistLSBBIG1pbm9yaXR5IG9mIHRoZSB0ZXN0IGNhc2VzIHdlcmUgZ2VuZXJhdGVkIHdpdGggdGhlIGhlbHAgb2YKKy0tIG1wbWF0aCAwLjE5IGF0IDEwMCBiaXQgYWNjdXJhY3kgKGh0dHA6Ly9tcG1hdGgub3JnKSB0byBpbXByb3ZlCistLSBjb3ZlcmFnZSBvZiByZWFsIGZ1bmN0aW9ucyB3aXRoIHJlYWwtdmFsdWVkIGFyZ3VtZW50cy4gVGhlc2UgYXJlCistLSB1c2VkIGluIHRlc3QudGVzdF9tYXRoLk1hdGhUZXN0cy50ZXN0X3Rlc3RmaWxlLCBhcyB3ZWxsIGFzIGluCistLSB0ZXN0X2NtYXRoLgorCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBhY29zOiBJbnZlcnNlIGNvc2luZSAtLQpAQCAtODQ4LDYgKzg1NCwxOCBAQAogYXRhbjAzMDMgYXRhbiAtMWUtMTY1IDEuMCAtPiAtMC43ODUzOTgxNjMzOTc0NDgyOCAxOTAuMzA5ODQzNzYyMjg4NzUKIGF0YW4wMzA0IGF0YW4gLTkuOTk5ODg4NjcxODI2ODMwMWUtMzIxIC0xLjAgLT4gLTAuNzg1Mzk4MTYzMzk3NDQ4MjggLTM2OC43NjAxOTQwMzU3NjY5MgogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCithdGFuMDQwMCBhdGFuIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IDAuMCAtPiAxLjU3MDc5NjMyNjc5NDg5NjYxOTIgMC4wCithdGFuMDQwMSBhdGFuIC0xLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCAwLjAgLT4gLTEuNTcwNzk2MzI2Nzk0ODk2NjE5MiAwLjAKK2F0YW4wNDAyIGF0YW4gMWUtMTcgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDcxNWUtMTcgMC4wCithdGFuMDQwMyBhdGFuIC0xZS0xNyAwLjAgLT4gLTEuMDAwMDAwMDAwMDAwMDAwMDcxNWUtMTcgMC4wCithdGFuMDQwNCBhdGFuIDAuMDAwMSAwLjAgLT4gMC4wMDAwOTk5OTk5OTk2NjY2NjY2NzM0NTkgMC4wCithdGFuMDQwNSBhdGFuIC0wLjAwMDEgMC4wIC0+IC0wLjAwMDA5OTk5OTk5OTY2NjY2NjY3MzQ1OSAwLjAKK2F0YW4wNDA2IGF0YW4gMC45OTk5OTk5OTk5OTk5OTkgMC4wIC0+IDAuNzg1Mzk4MTYzMzk3NDQ3ODEwMDIgMC4wCithdGFuMDQwNyBhdGFuIDEuMDAwMDAwMDAwMDAwMDAxIDAuMCAtPiAwLjc4NTM5ODE2MzM5NzQ0ODg2NDczIDAuMAorYXRhbjA0MDggYXRhbiAxNC4xMDE0MTk5NDcxNzE3MTkgMC4wIC0+IDEuNDk5OTk5OTk5OTk5OTk5OTk2OSAwLjAKK2F0YW4wNDA5IGF0YW4gMTI1NS43NjU1OTE1MDA3ODk3IDAuMCAtPiAxLjU3MDAwMDAwMDAwMDAwMDA2MjIgMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBhdGFuMTAwMCBhdGFuIC0wLjAgMC4wIC0+IC0wLjAgMC4wCiBhdGFuMTAwMSBhdGFuIG5hbiAwLjAgLT4gbmFuIDAuMApAQCAtMTUxNCw2ICsxNTMyLDExIEBACiBzcXJ0MDE0MCBzcXJ0IDEuNjk5OTk5OTk5OTk5OTk5OWUrMzA4IC0xLjY5OTk5OTk5OTk5OTk5OTllKzMwOCAtPiAxLjQzMjUwODgyMzAxNTQ1NzNlKzE1NCAtNS45MzM2NDU4MjcxMjEyMjA3ZSsxNTMKIHNxcnQwMTQxIHNxcnQgLTEuNzk3ZSszMDggLTkuOTk5OTk5OTk5OTk5OTk5OWUrMzA2IC0+IDMuNzI4NDQ3NjQzMjA1NzMwN2UrMTUyIC0xLjM0MTA0MDY4OTk4MDI5MDFlKzE1NAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitzcXJ0MDE1MCBzcXJ0IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IDAuMCAtPiAxLjM0MDc4MDc5Mjk5NDI1OTYzNTVlKzE1NCAwLjAKK3NxcnQwMTUxIHNxcnQgMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDggMC4wIC0+IDEuNDkxNjY4MTQ2MjQwMDQxMzQ4N2UtMTU0IDAuMAorc3FydDAxNTIgc3FydCA1ZS0zMjQgMC4wIC0+IDIuMjIyNzU4NzQ5NDg1MDc3NDgzNGUtMTYyIDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogc3FydDEwMDAgc3FydCAwLjAgMC4wIC0+IDAuMCAwLjAKIHNxcnQxMDAxIHNxcnQgLTAuMCAwLjAgLT4gMC4wIDAuMApAQCAtMTYxNiw2ICsxNjM5LDIwIEBACiBleHAwMDUzIGV4cCA3MTAuMCAxLjYgLT4gLTYuNTIzMTU3OTk5NTUwMTM3MmUrMzA2IGluZiAgIG92ZXJmbG93CiBleHAwMDU0IGV4cCA3MTAuMCAyLjggLT4gLWluZiA3LjQ4MzYxNzc0MTc0NDg1MjhlKzMwNyAgIG92ZXJmbG93CiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK2V4cDAwNzAgZXhwIDFlLTA4IDAuMCAtPiAxLjAwMDAwMDAxMDAwMDAwMDA1IDAuMAorZXhwMDA3MSBleHAgMC4wMDAzIDAuMCAtPiAxLjAwMDMwMDA0NTAwNDUwMDMzNzUgMC4wCitleHAwMDcyIGV4cCAwLjIgMC4wIC0+IDEuMjIxNDAyNzU4MTYwMTY5ODQ3NSAwLjAKK2V4cDAwNzMgZXhwIDEuMCAwLjAgLT4gMi43MTgyODE4Mjg0NTkwNDUyMzU0IDAuMAorZXhwMDA3NCBleHAgLTFlLTA4IDAuMCAtPiAwLjk5OTk5OTk5MDAwMDAwMDA1IDAuMAorZXhwMDA3NSBleHAgLTAuMDAwMyAwLjAgLT4gMC45OTk3MDAwNDQ5OTU1MDAzMzc1MSAwLjAKK2V4cDAwNzYgZXhwIC0xLjAgMC4wIC0+IDAuMzY3ODc5NDQxMTcxNDQyMzIxNiAwLjAKK2V4cDAwNzcgZXhwIDIuMjIwNDQ2MDQ5MjUwMzEzZS0xNiAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAyMjIgMC4wCitleHAwMDc4IGV4cCAtMS4xMTAyMjMwMjQ2MjUxNTY1ZS0xNiAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTk4ODg5OCAwLjAKK2V4cDAwNzkgZXhwIDIuMzAyNTg1MDkyOTk0MDQ2IDAuMCAtPiAxMC4wMDAwMDAwMDAwMDAwMDIxNzEgMC4wCitleHAwMDgwIGV4cCAtMi4zMDI1ODUwOTI5OTQwNDYgMC4wIC0+IDAuMDk5OTk5OTk5OTk5OTk5OTc4MjkyIDAuMAorZXhwMDA4MSBleHAgNzA5Ljc4MjcgMC4wIC0+IDEuNzk3NjY5OTU2NjYzODAxNDY1NGUrMzA4IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogZXhwMTAwMCBleHAgMC4wIDAuMCAtPiAxLjAgMC4wCiBleHAxMDAxIGV4cCAtMC4wIDAuMCAtPiAxLjAgMC4wCkBAIC0xNzA4LDYgKzE3NDUsMjMgQEAKIGNvc2gwMDMwIGNvc2ggNzEwLjUgMi4zNTE5OTk5OTk5OTk5OTk5IC0+IC0xLjI5Njc0NjUyMzkzNTU5OThlKzMwOCAxLjMwNzY3MDc5MDg4NTczMzNlKzMwOAogY29zaDAwMzEgY29zaCAtNzEwLjUgMC42OTk5OTk5OTk5OTk5OTk5NiAtPiAxLjQwODU0NjYzODEzOTI0OTllKzMwOCAtMS4xODY0MDI0NjY2NDUwMjM5ZSszMDgKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorY29zaDAwNTAgY29zaCAxZS0xNTAgMC4wIC0+IDEuMCAwLjAKK2Nvc2gwMDUxIGNvc2ggMWUtMTggMC4wIC0+IDEuMCAwLjAKK2Nvc2gwMDUyIGNvc2ggMWUtMDkgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDAwNSAwLjAKK2Nvc2gwMDUzIGNvc2ggMC4wMDAzIDAuMCAtPiAxLjAwMDAwMDA0NTAwMDAwMDMzNzUgMC4wCitjb3NoMDA1NCBjb3NoIDAuMiAwLjAgLT4gMS4wMjAwNjY3NTU2MTkwNzU4NDg1IDAuMAorY29zaDAwNTUgY29zaCAxLjAgMC4wIC0+IDEuNTQzMDgwNjM0ODE1MjQzNzc4NSAwLjAKK2Nvc2gwMDU2IGNvc2ggLTFlLTE4IDAuMCAtPiAxLjAgLTAuMAorY29zaDAwNTcgY29zaCAtMC4wMDAzIDAuMCAtPiAxLjAwMDAwMDA0NTAwMDAwMDMzNzUgLTAuMAorY29zaDAwNTggY29zaCAtMS4wIDAuMCAtPiAxLjU0MzA4MDYzNDgxNTI0Mzc3ODUgLTAuMAorY29zaDAwNTkgY29zaCAxLjMxNjk1Nzg5NjkyNDgxNjggMC4wIC0+IDIuMDAwMDAwMDAwMDAwMDAwMTUwNCAwLjAKK2Nvc2gwMDYwIGNvc2ggLTEuMzE2OTU3ODk2OTI0ODE2OCAwLjAgLT4gMi4wMDAwMDAwMDAwMDAwMDAxNTA0IC0wLjAKK2Nvc2gwMDYxIGNvc2ggMTcuMzI4Njc5NTEzOTk4NjMzIDAuMCAtPiAxNjc3NzIxNi4wMDAwMDAwMjE5MzggMC4wCitjb3NoMDA2MiBjb3NoIDE4LjcxNDk3Mzg3NTExODUyNCAwLjAgLT4gNjcxMDg4NjQuMDAwMDAwMDQzNjYyIDAuMAorY29zaDAwNjMgY29zaCA3MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgMC4wCitjb3NoMDA2NCBjb3NoIC03MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgLTAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogY29zaDEwMDAgY29zaCAwLjAgMC4wIC0+IDEuMCAwLjAKIGNvc2gxMDAxIGNvc2ggMC4wIGluZiAtPiBuYW4gMC4wICAgICAgICBpbnZhbGlkIGlnbm9yZS1pbWFnLXNpZ24KQEAgLTE4MDAsNiArMTg1NCwyNCBAQAogc2luaDAwMzAgc2luaCA3MTAuNSAtMi4zOTk5OTk5OTk5OTk5OTk5IC0+IC0xLjM1Nzk5NzA1NjQ4ODU5MTllKzMwOCAtMS4yNDM5NDQ3MDkwNzc5OGUrMzA4CiBzaW5oMDAzMSBzaW5oIC03MTAuNSAwLjgwMDAwMDAwMDAwMDAwMDA0IC0+IC0xLjI4MzA2NzE2MDE3MzUxNjRlKzMwOCAxLjMyMTA5NTQxOTM5OTc2NzhlKzMwOAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitzaW5oMDA1MCBzaW5oIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAorc2luaDAwNTEgc2luaCA1ZS0xNyAwLjAgLT4gNC45OTk5OTk5OTk5OTk5OTk4OTU1ZS0xNyAwLjAKK3NpbmgwMDUyIHNpbmggMWUtMTYgMC4wIC0+IDkuOTk5OTk5OTk5OTk5OTk5NzkxZS0xNyAwLjAKK3NpbmgwMDUzIHNpbmggMy43ZS0wOCAwLjAgLT4gMy43MDAwMDAwMDAwMDAwMDA4ODg1ZS04IDAuMAorc2luaDAwNTQgc2luaCAwLjAwMSAwLjAgLT4gMC4wMDEwMDAwMDAxNjY2NjY2NzUwMjA4IDAuMAorc2luaDAwNTUgc2luaCAwLjIgMC4wIC0+IDAuMjAxMzM2MDAyNTQxMDkzOTk4OTUgMC4wCitzaW5oMDA1NiBzaW5oIDEuMCAwLjAgLT4gMS4xNzUyMDExOTM2NDM4MDE0NTY5IDAuMAorc2luaDAwNTcgc2luaCAtMy43ZS0wOCAwLjAgLT4gLTMuNzAwMDAwMDAwMDAwMDAwODg4NWUtOCAwLjAKK3NpbmgwMDU4IHNpbmggLTAuMDAxIDAuMCAtPiAtMC4wMDEwMDAwMDAxNjY2NjY2NzUwMjA4IDAuMAorc2luaDAwNTkgc2luaCAtMS4wIDAuMCAtPiAtMS4xNzUyMDExOTM2NDM4MDE0NTY5IDAuMAorc2luaDAwNjAgc2luaCAxLjQ0MzYzNTQ3NTE3ODgxMDMgMC4wIC0+IDEuOTk5OTk5OTk5OTk5OTk5OTA3OCAwLjAKK3NpbmgwMDYxIHNpbmggLTEuNDQzNjM1NDc1MTc4ODEwMyAwLjAgLT4gLTEuOTk5OTk5OTk5OTk5OTk5OTA3OCAwLjAKK3NpbmgwMDYyIHNpbmggMTcuMzI4Njc5NTEzOTk4NjMzIDAuMCAtPiAxNjc3NzIxNS45OTk5OTk5OTIxMzYgMC4wCitzaW5oMDA2MyBzaW5oIDE4LjcxNDk3Mzg3NTExODUyNCAwLjAgLT4gNjcxMDg4NjQuMDAwMDAwMDM2MjExIDAuMAorc2luaDAwNjQgc2luaCA3MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgMC4wCitzaW5oMDA2NSBzaW5oIC03MDkuNzgyNyAwLjAgLT4gLTguOTg4MzQ5NzgzMzE5MDA3MzI3MmUrMzA3IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogc2luaDEwMDAgc2luaCAwLjAgMC4wIC0+IDAuMCAwLjAKIHNpbmgxMDAxIHNpbmggMC4wIGluZiAtPiAwLjAgbmFuICAgICAgICBpbnZhbGlkIGlnbm9yZS1yZWFsLXNpZ24KQEAgLTE4OTcsNiArMTk2OSwyNCBAQAogdGFuaDAwMzIgdGFuaCAxMDAwIC0yLjMxOTk5OTk5OTk5OTk5OTggLT4gMS4wIDAuMAogdGFuaDAwMzMgdGFuaCAtMS4wMDAwMDAwMDAwMDAwMDAxZSszMDAgLTkuNjY5OTk5OTk5OTk5OTk5OSAtPiAtMS4wIC0wLjAKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQordGFuaDAwNTAgdGFuaCAxZS0xMDAgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDJlLTEwMCAwLjAKK3RhbmgwMDUxIHRhbmggNWUtMTcgMC4wIC0+IDQuOTk5OTk5OTk5OTk5OTk5ODk1NWUtMTcgMC4wCit0YW5oMDA1MiB0YW5oIDFlLTE2IDAuMCAtPiA5Ljk5OTk5OTk5OTk5OTk5OTc5MWUtMTcgMC4wCit0YW5oMDA1MyB0YW5oIDMuN2UtMDggMC4wIC0+IDMuNjk5OTk5OTk5OTk5OTk4MzU1OWUtOCAwLjAKK3RhbmgwMDU0IHRhbmggMC4wMDEgMC4wIC0+IDAuMDAwOTk5OTk5NjY2NjY2ODAwMDIwNzYgMC4wCit0YW5oMDA1NSB0YW5oIDAuMiAwLjAgLT4gMC4xOTczNzUzMjAyMjQ5MDQwMTE0MSAwLjAKK3RhbmgwMDU2IHRhbmggMS4wIDAuMCAtPiAwLjc2MTU5NDE1NTk1NTc2NDg4ODEyIDAuMAordGFuaDAwNTcgdGFuaCAtMy43ZS0wOCAwLjAgLT4gLTMuNjk5OTk5OTk5OTk5OTk4MzU1OWUtOCAwLjAKK3RhbmgwMDU4IHRhbmggLTAuMDAxIDAuMCAtPiAtMC4wMDA5OTk5OTk2NjY2NjY4MDAwMjA3NiAwLjAKK3RhbmgwMDU5IHRhbmggLTEuMCAwLjAgLT4gLTAuNzYxNTk0MTU1OTU1NzY0ODg4MTIgMC4wCit0YW5oMDA2MCB0YW5oIDAuNTQ5MzA2MTQ0MzM0MDU0OSAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwMzQwMiAwLjAKK3RhbmgwMDYxIHRhbmggLTAuNTQ5MzA2MTQ0MzM0MDU0OSAwLjAgLT4gLTAuNTAwMDAwMDAwMDAwMDAwMDM0MDIgMC4wCit0YW5oMDA2MiB0YW5oIDE3LjMyODY3OTUxMzk5ODYzMyAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTgyMjM2NCAwLjAKK3RhbmgwMDYzIHRhbmggMTguNzE0OTczODc1MTE4NTI0IDAuMCAtPiAwLjk5OTk5OTk5OTk5OTk5OTg4ODk4IDAuMAordGFuaDAwNjQgdGFuaCA3MTEgMC4wIC0+IDEuMCAwLjAKK3RhbmgwMDY1IHRhbmggMS43OTdlKzMwOCAwLjAgLT4gMS4wIDAuMAorCiAtLXNwZWNpYWwgdmFsdWVzCiB0YW5oMTAwMCB0YW5oIDAuMCAwLjAgLT4gMC4wIDAuMAogdGFuaDEwMDEgdGFuaCAwLjAgaW5mIC0+IG5hbiBuYW4gICAgICAgIGludmFsaWQKQEAgLTE5ODUsNiArMjA3NSwyMiBAQAogY29zMDAyMiBjb3MgNy45OTE0NTE1NDMzODU4NTE1IDAuNzE2NTk5NjY2MTU1MDE0MzYgLT4gLTAuMTczNzU0Mzk5MDY5MzY1NjYgLTAuNzcyMTcwNDM1MjcyOTQ1ODIKIGNvczAwMjMgY29zIDAuNDUxMjQzNTExNTI1NDAyMjYgMS42OTkyNjkzOTkzODEyMTU4IC0+IDIuNTQzNDc3OTQ4OTcyMjM3IC0xLjE1MjgxOTM2OTQ4NzU0NzcKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorY29zMDA1MCBjb3MgMWUtMTUwIDAuMCAtPiAxLjAgLTAuMAorY29zMDA1MSBjb3MgMWUtMTggMC4wIC0+IDEuMCAtMC4wCitjb3MwMDUyIGNvcyAxZS0wOSAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTk5OTk1IC0wLjAKK2NvczAwNTMgY29zIDAuMDAwMyAwLjAgLT4gMC45OTk5OTk5NTUwMDAwMDAzMzc1IC0wLjAKK2NvczAwNTQgY29zIDAuMiAwLjAgLT4gMC45ODAwNjY1Nzc4NDEyNDE2Mjg5MiAtMC4wCitjb3MwMDU1IGNvcyAxLjAgMC4wIC0+IDAuNTQwMzAyMzA1ODY4MTM5NzE3NCAtMC4wCitjb3MwMDU2IGNvcyAtMWUtMTggMC4wIC0+IDEuMCAwLjAKK2NvczAwNTcgY29zIC0wLjAwMDMgMC4wIC0+IDAuOTk5OTk5OTU1MDAwMDAwMzM3NSAwLjAKK2NvczAwNTggY29zIC0xLjAgMC4wIC0+IDAuNTQwMzAyMzA1ODY4MTM5NzE3NCAwLjAKK2NvczAwNTkgY29zIDEuMDQ3MTk3NTUxMTk2NTk3NiAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwOTk0NSAtMC4wCitjb3MwMDYwIGNvcyAyLjU3MDc5NjMyNjc5NDg5NjYgMC4wIC0+IC0wLjg0MTQ3MDk4NDgwNzg5NjQ3MzU3IC0wLjAKK2NvczAwNjEgY29zIC0yLjU3MDc5NjMyNjc5NDg5NjYgMC4wIC0+IC0wLjg0MTQ3MDk4NDgwNzg5NjQ3MzU3IDAuMAorY29zMDA2MiBjb3MgNy4yMjU2NjMxMDMyNTY1MjMgMC4wIC0+IDAuNTg3Nzg1MjUyMjkyNDc0MDc1NTkgLTAuMAorY29zMDA2MyBjb3MgLTguNzk2NDU5NDMwMDUxNDIgMC4wIC0+IC0wLjgwOTAxNjk5NDM3NDk0NzIyMjU1IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogY29zMTAwMCBjb3MgLTAuMCAwLjAgLT4gMS4wIDAuMAogY29zMTAwMSBjb3MgLWluZiAwLjAgLT4gbmFuIDAuMCBpbnZhbGlkIGlnbm9yZS1pbWFnLXNpZ24KQEAgLTIwNzMsNiArMjE3OSwyMiBAQAogc2luMDAyMiBzaW4gMS4xNTE4MDg3MzU0NDAzNzI1IDQuODU5NzIzNTk2NjE1MDU1OCAtPiA1OC45MTkxNDE5ODk2MDMwNDEgMjYuMjM3MDAzNDAzNzU4ODUyCiBzaW4wMDIzIHNpbiAwLjAwMDg3NzczMDc4NDA2NjQ5MTkyIDM0Ljc5MjM3OTIxMTMxMjA5NSAtPiA1NjU1NDgxNDU1NjkuMzgyNDUgNjQ0MzI5Njg1ODIyNzAwLjYyCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3NpbjAwNTAgc2luIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAorc2luMDA1MSBzaW4gMy43ZS0wOCAwLjAgLT4gMy42OTk5OTk5OTk5OTk5OTkyMDAxZS04IDAuMAorc2luMDA1MiBzaW4gMC4wMDEgMC4wIC0+IDAuMDAwOTk5OTk5ODMzMzMzMzQxNjg3NDggMC4wCitzaW4wMDUzIHNpbiAwLjIgMC4wIC0+IDAuMTk4NjY5MzMwNzk1MDYxMjI2MzQgMC4wCitzaW4wMDU0IHNpbiAxLjAgMC4wIC0+IDAuODQxNDcwOTg0ODA3ODk2NTA2NjUgMC4wCitzaW4wMDU1IHNpbiAtMy43ZS0wOCAwLjAgLT4gLTMuNjk5OTk5OTk5OTk5OTk5MjAwMWUtOCAwLjAKK3NpbjAwNTYgc2luIC0wLjAwMSAwLjAgLT4gLTAuMDAwOTk5OTk5ODMzMzMzMzQxNjg3NDggMC4wCitzaW4wMDU3IHNpbiAtMS4wIDAuMCAtPiAtMC44NDE0NzA5ODQ4MDc4OTY1MDY2NSAwLjAKK3NpbjAwNTggc2luIDAuNTIzNTk4Nzc1NTk4Mjk4OSAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwNDY0MiAwLjAKK3NpbjAwNTkgc2luIC0wLjUyMzU5ODc3NTU5ODI5ODkgMC4wIC0+IC0wLjUwMDAwMDAwMDAwMDAwMDA0NjQyIDAuMAorc2luMDA2MCBzaW4gMi42MTc5OTM4Nzc5OTE0OTQ0IDAuMCAtPiAwLjQ5OTk5OTk5OTk5OTk5OTk2MDE4IC0wLjAKK3NpbjAwNjEgc2luIC0yLjYxNzk5Mzg3Nzk5MTQ5NDQgMC4wIC0+IC0wLjQ5OTk5OTk5OTk5OTk5OTk2MDE4IC0wLjAKK3NpbjAwNjIgc2luIDcuMjI1NjYzMTAzMjU2NTIzIDAuMCAtPiAwLjgwOTAxNjk5NDM3NDk0NjczNjQ4IDAuMAorc2luMDA2MyBzaW4gLTguNzk2NDU5NDMwMDUxNDIgMC4wIC0+IC0wLjU4Nzc4NTI1MjI5MjQ3MzQwNjU4IC0wLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIHNpbjEwMDAgc2luIC0wLjAgMC4wIC0+IC0wLjAgMC4wCiBzaW4xMDAxIHNpbiAtaW5mIDAuMCAtPiBuYW4gMC4wIGludmFsaWQgaWdub3JlLWltYWctc2lnbgpAQCAtMjE2MSw2ICsyMjgzLDI1IEBACiB0YW4wMDIyIHRhbiAxLjE2MTUzMTM5MDA4ODA1NzcgMS43OTU2Mjk4NzI4NjQ3MTA3IC0+IDAuMDQxNzkzMTg2ODI2MzkwMzYyIDEuMDM3NTMzOTU0NjAzNDc5MgogdGFuMDAyMyB0YW4gMC4wNjcwMTQ3Nzk0Nzc5MDg5NDUgNS44NTE3MzYxNTc3NDU3MDk3IC0+IDIuMjA4ODYzOTc1NDgwMDAzNGUtMDYgMC45OTk5ODM2MTgyNDIwMDYxCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3RhbjAwNTAgdGFuIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAordGFuMDA1MSB0YW4gMy43ZS0wOCAwLjAgLT4gMy43MDAwMDAwMDAwMDAwMDE3MzI4ZS04IDAuMAordGFuMDA1MiB0YW4gMC4wMDEgMC4wIC0+IDAuMDAxMDAwMDAwMzMzMzMzNDY2Njg3NSAwLjAKK3RhbjAwNTMgdGFuIDAuMiAwLjAgLT4gMC4yMDI3MTAwMzU1MDg2NzI0OTQ4OCAwLjAKK3RhbjAwNTQgdGFuIDEuMCAwLjAgLT4gMS41NTc0MDc3MjQ2NTQ5MDIyMzA1IDAuMAordGFuMDA1NSB0YW4gLTMuN2UtMDggMC4wIC0+IC0zLjcwMDAwMDAwMDAwMDAwMTczMjhlLTggMC4wCit0YW4wMDU2IHRhbiAtMC4wMDEgMC4wIC0+IC0wLjAwMTAwMDAwMDMzMzMzMzQ2NjY4NzUgMC4wCit0YW4wMDU3IHRhbiAtMS4wIDAuMCAtPiAtMS41NTc0MDc3MjQ2NTQ5MDIyMzA1IDAuMAordGFuMDA1OCB0YW4gMC40NjM2NDc2MDkwMDA4MDYxIDAuMCAtPiAwLjQ5OTk5OTk5OTk5OTk5OTk3MTYzIDAuMAordGFuMDA1OSB0YW4gLTAuNDYzNjQ3NjA5MDAwODA2MSAwLjAgLT4gLTAuNDk5OTk5OTk5OTk5OTk5OTcxNjMgMC4wCit0YW4wMDYwIHRhbiAxLjEwNzE0ODcxNzc5NDA5MDQgMC4wIC0+IDEuOTk5OTk5OTk5OTk5OTk5NTI5OCAwLjAKK3RhbjAwNjEgdGFuIC0xLjEwNzE0ODcxNzc5NDA5MDQgMC4wIC0+IC0xLjk5OTk5OTk5OTk5OTk5OTUyOTggMC4wCit0YW4wMDYyIHRhbiAxLjUgMC4wIC0+IDE0LjEwMTQxOTk0NzE3MTcxOTM4OCAwLjAKK3RhbjAwNjMgdGFuIDEuNTcgMC4wIC0+IDEyNTUuNzY1NTkxNTAwNzg5NjQ3NSAwLjAKK3RhbjAwNjQgdGFuIDEuNTcwNzk2MzI2Nzk0ODk2MSAwLjAgLT4gMTk3ODkzNzk2NjA5NTIxOS4wNTM4IDAuMAordGFuMDA2NSB0YW4gNy4yMjU2NjMxMDMyNTY1MjMgMC4wIC0+IDEuMzc2MzgxOTIwNDcxMTcwMTUyMiAwLjAKK3RhbjAwNjYgdGFuIC04Ljc5NjQ1OTQzMDA1MTQyIDAuMCAtPiAwLjcyNjU0MjUyODAwNTM2MTQwOTggMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiB0YW4xMDAwIHRhbiAtMC4wIDAuMCAtPiAtMC4wIDAuMAogdGFuMTAwMSB0YW4gLWluZiAwLjAgLT4gbmFuIG5hbiBpbnZhbGlkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weSBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CmluZGV4IDA4NjBkYjguLjk4OGM2ZjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CkBAIC0yLDE0ICsyLDIyIEBACiAKIFNlZSBodHRwOi8vd3d3LnpvcGUub3JnL01lbWJlcnMvZmRyYWtlL0RhdGVUaW1lV2lraS9UZXN0Q2FzZXMKICIiIgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGlzX3Jlc291cmNlX2VuYWJsZWQKKworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IGJpc2VjdAogCiBpbXBvcnQgY29weQogaW1wb3J0IGRlY2ltYWwKIGltcG9ydCBzeXMKK2ltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN0cnVjdAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gYXJyYXkgaW1wb3J0IGFycmF5CisKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGx0LCBsZSwgZ3QsIGdlLCBlcSwgbmUsIHRydWVkaXYsIGZsb29yZGl2LCBtb2QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0yODQsNyArMjkyLDggQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOiBzZWxmLkVTVC5kc3QoNSkKIAogICAgIGRlZiB0ZXN0X3R6bmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDKzAwOjAwJywgdGltZXpvbmUoWkVSTykudHpuYW1lKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMnLCB0aW1lem9uZS51dGMudHpuYW1lKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMnLCB0aW1lem9uZShaRVJPKS50em5hbWUoTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQy0wNTowMCcsIHRpbWV6b25lKC01ICogSE9VUikudHpuYW1lKE5vbmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMrMDk6MzAnLCB0aW1lem9uZSg5LjUgKiBIT1VSKS50em5hbWUoTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQy0wMDowMScsIHRpbWV6b25lKHRpbWVkZWx0YShtaW51dGVzPS0xKSkudHpuYW1lKE5vbmUpKQpAQCAtMTU1OCwxMyArMTU2NywzMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgZHQyKQogCiAgICAgZGVmIHRlc3RfaXNvZm9ybWF0KHNlbGYpOgotICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyLCAzLCAyLCA0LCA1LCAxLCAxMjMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgICAgIjAwMDItMDMtMDJUMDQ6MDU6MDEuMDAwMTIzIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnVCcpLCAiMDAwMi0wMy0wMlQwNDowNTowMS4wMDAxMjMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCcgJyksICIwMDAyLTAzLTAyIDA0OjA1OjAxLjAwMDEyMyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1x4MDAnKSwgIjAwMDItMDMtMDJceDAwMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSwgMTIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICAgICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1QnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnICcpLCAiMDAwMS0wMi0wMyAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCdceDAwJyksICIwMDAxLTAyLTAzXHgwMDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2hvdXJzJyksICIwMDAxLTAyLTAzVDA0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpLCAiMDAwMS0wMi0wM1QwNDowNSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J3NlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdChzZXA9JyAnLCB0aW1lc3BlYz0nbWludXRlcycpLCAiMDAwMS0wMi0wMyAwNDowNSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuaXNvZm9ybWF0LCB0aW1lc3BlYz0nZm9vJykKICAgICAgICAgIyBzdHIgaXMgSVNPIGZvcm1hdCB3aXRoIHRoZSBzZXBhcmF0b3IgZm9yY2VkIHRvIGEgYmxhbmsuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHQpLCAiMDAwMi0wMy0wMiAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0KSwgIjAwMDEtMDItMDMgMDQ6MDU6MDEuMDAwMTIzIikKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxLCAyLCAzLCA0LCA1LCAxLCA5OTk1MDAsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS45OTkrMDA6MDAiKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDEsIDIsIDMsIDQsIDUsIDEsIDk5OTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjk5OSIpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpLCAiMDAwMS0wMi0wM1QwNDowNTowMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMDAwIikKIAogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyLCAzLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICAgICIwMDAyLTAzLTAyVDAwOjAwOjAwIikKQEAgLTE1NzIsNiArMTYwMCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCcgJyksICIwMDAyLTAzLTAyIDAwOjAwOjAwIikKICAgICAgICAgIyBzdHIgaXMgSVNPIGZvcm1hdCB3aXRoIHRoZSBzZXBhcmF0b3IgZm9yY2VkIHRvIGEgYmxhbmsuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHQpLCAiMDAwMi0wMy0wMiAwMDowMDowMCIpCisgICAgICAgICMgSVNPIGZvcm1hdCB3aXRoIHRpbWV6b25lCisgICAgICAgIHR6ID0gRml4ZWRPZmZzZXQodGltZWRlbHRhKHNlY29uZHM9MTYpLCAnWFhYJykKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMiwgMywgMiwgdHppbmZvPXR6KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICIwMDAyLTAzLTAyVDAwOjAwOjAwKzAwOjAwOjE2IikKIAogICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmKToKICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMDcsIDksIDEwLCA0LCA1LCAxLCAxMjMpCkBAIC0xNjkxLDYgKzE3MjMsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIDIzLCA1OSwgNTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAwMDApCisgICAgICAgICMgYmFkIGZvbGQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIGZvbGQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAsIDEsIDMxLCBmb2xkPTIpCisgICAgICAgICMgUG9zaXRpb25hbCBmb2xkOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudGhlY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAsIDEsIDMxLCAyMywgNTksIDU5LCAwLCBOb25lLCAxKQogCiAgICAgZGVmIHRlc3RfaGFzaF9lcXVhbGl0eShzZWxmKToKICAgICAgICAgZCA9IHNlbGYudGhlY2xhc3MoMjAwMCwgMTIsIDMxLCAyMywgMzAsIDE3KQpAQCAtMTg3NCwxNiArMTkxNCwyMCBAQAogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCAxLCAyLCAzLCA0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAuMCArIDM2MDAgKyAyKjYwICsgMyArIDQqMWUtNikKLSAgICAgICAgIyBNaXNzaW5nIGhvdXIgbWF5IHByb2R1Y2UgcGxhdGZvcm0tZGVwZW5kZW50IHJlc3VsdAotICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyMDEyLCAzLCAxMSwgMiwgMzApCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHQudGltZXN0YW1wKCkpLAotICAgICAgICAgICAgICAgICAgICAgIFt0IC0gdGltZWRlbHRhKGhvdXJzPTEpLCB0ICsgdGltZWRlbHRhKGhvdXJzPTEpXSkKKyAgICAgICAgIyBNaXNzaW5nIGhvdXIKKyAgICAgICAgdDAgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDMsIDExLCAyLCAzMCkKKyAgICAgICAgdDEgPSB0MC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodDEudGltZXN0YW1wKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHQwIC0gdGltZWRlbHRhKGhvdXJzPTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0MC50aW1lc3RhbXAoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdDEgKyB0aW1lZGVsdGEoaG91cnM9MSkpCiAgICAgICAgICMgQW1iaWd1b3VzIGhvdXIgZGVmYXVsdHMgdG8gRFNUCiAgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDExLCA0LCAxLCAzMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodC50aW1lc3RhbXAoKSksIHQpCiAKICAgICAgICAgIyBUaW1lc3RhbXAgbWF5IHJhaXNlIGFuIG92ZXJmbG93IGVycm9yIG9uIHNvbWUgcGxhdGZvcm1zCi0gICAgICAgIGZvciB0IGluIFtzZWxmLnRoZWNsYXNzKDEsMSwxKSwgc2VsZi50aGVjbGFzcyg5OTk5LDEyLDEyKV06CisgICAgICAgICMgWFhYOiBEbyB3ZSBjYXJlIHRvIHN1cHBvcnQgdGhlIGZpcnN0IGFuZCBsYXN0IHllYXI/CisgICAgICAgIGZvciB0IGluIFtzZWxmLnRoZWNsYXNzKDIsMSwxKSwgc2VsZi50aGVjbGFzcyg5OTk4LDEyLDEyKV06CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcyA9IHQudGltZXN0YW1wKCkKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgpAQCAtMTkwMiw2ICsxOTQ2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIDE4MDAwICsgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQogCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ01TSy0wMycpICAjIFNvbWV0aGluZyBlYXN0IG9mIEdyZWVud2ljaAogICAgIGRlZiB0ZXN0X21pY3Jvc2Vjb25kX3JvdW5kaW5nKHNlbGYpOgogICAgICAgICBmb3IgZnRzIGluIFtzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcF06CkBAIC0yMDc2LDExICsyMTIxLDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSkgIyBuZWVkIGFuIGFyZwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQpICMgbmVlZCB0d28gYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIHQsIGQpICMgYXJncyByZXZlcnNlZAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsIHQsIDEpICMgdG9vIG1hbnkgYXJncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsIHQsIDEpICMgd3JvbmcgdHppbmZvIHR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCBkLCB0LCAxLCAyKSAgIyB0b28gbWFueSBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgImRhdGUiLCAidGltZSIpICMgd3JvbmcgdHlwZXMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCBkLCAidGltZSIpICMgd3JvbmcgdHlwZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsICJkYXRlIiwgdCkgIyB3cm9uZyB0eXBlCiAKKyAgICAgICAgIyB0emluZm89IGFyZ3VtZW50CisgICAgICAgIGR0ID0gY29tYmluZShkLCB0LCB0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZHQudHppbmZvLCB0aW1lem9uZS51dGMpCisgICAgICAgIGR0ID0gY29tYmluZShkLCB0LCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydElzKGR0LnR6aW5mbywgdGltZXpvbmUudXRjKQorICAgICAgICB0ID0gdGltZSgpCisgICAgICAgIGR0ID0gY29tYmluZShkdCwgdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5kYXRlKCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQudGltZSgpLCB0KQorCiAgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKICAgICAgICAgY2xzID0gc2VsZi50aGVjbGFzcwogICAgICAgICBhcmdzID0gWzEsIDIsIDMsIDQsIDUsIDYsIDddCkBAIC0yMTA3LDYgKzIxNjMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiYXNlLnJlcGxhY2UsIHllYXI9MjAwMSkKIAogICAgIGRlZiB0ZXN0X2FzdGltZXpvbmUoc2VsZik6CisgICAgICAgIHJldHVybiAgIyBUaGUgcmVzdCBpcyBubyBsb25nZXIgYXBwbGljYWJsZQogICAgICAgICAjIFByZXR0eSBib3JpbmchICBUaGUgVFogdGVzdCBpcyBtb3JlIGludGVyZXN0aW5nIGhlcmUuICBhc3RpbWV6b25lKCkKICAgICAgICAgIyBzaW1wbHkgY2FuJ3QgYmUgYXBwbGllZCB0byBhIG5haXZlIG9iamVjdC4KICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzLm5vdygpCkBAIC0yMzI0LDYgKzIzODEsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCAiMDA6MDA6MDAuMTAwMDAwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCBzdHIodCkpCiAKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTEyMzQ1NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0naG91cnMnKSwgIjEyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpLCAiMTI6MzQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdzZWNvbmRzJyksICIxMjozNDo1NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMTI6MzQ6NTYuMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIxMjozNDo1Ni4xMjM0NTYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJyksICIxMjozNDo1Ni4xMjM0NTYiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0Lmlzb2Zvcm1hdCwgdGltZXNwZWM9J21vbmtleScpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTk5OTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIxMjozNDo1Ni45OTkiKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD0wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjEyOjM0OjU2LjAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpLCAiMTI6MzQ6NTYuMDAwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpLCAiMTI6MzQ6NTYiKQorCiAgICAgZGVmIHRlc3RfMTY1MzczNihzZWxmKToKICAgICAgICAgIyB2ZXJpZnkgaXQgZG9lc24ndCBhY2NlcHQgZXh0cmEga2V5d29yZCBhcmd1bWVudHMKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3Moc2Vjb25kPTEpCkBAIC0yNTgyLDkgKzI2NTYsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LnV0Y29mZnNldCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC5kc3QpCiAKLSAgICAgICAgIyBOb3QgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcy4KKyAgICAgICAgIyBOb3QgYSB3aG9sZSBudW1iZXIgb2Ygc2Vjb25kcy4KICAgICAgICAgY2xhc3MgQzcodHppbmZvKToKLSAgICAgICAgICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOiByZXR1cm4gdGltZWRlbHRhKHNlY29uZHM9NjEpCisgICAgICAgICAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KTogcmV0dXJuIHRpbWVkZWx0YShtaWNyb3NlY29uZHM9NjEpCiAgICAgICAgICAgICBkZWYgZHN0KHNlbGYsIGR0KTogcmV0dXJuIHRpbWVkZWx0YShtaWNyb3NlY29uZHM9LTgxKQogICAgICAgICB0ID0gY2xzKDEsIDEsIDEsIHR6aW5mbz1DNygpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LnV0Y29mZnNldCkKQEAgLTM5MjcsMTIgKzQwMDEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWUoeHgsIHh4LCB4eCwgeHgsIHh4LCB4eCwgeHgpKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYW4gaW50ZWdlciBpcyByZXF1aXJlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKGdvdCB0eXBlIHN0clwpJCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXChnb3QgdHlwZSBzdHJcKSQnKToKICAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgJzEwJykKIAogICAgICAgICBmMTAgPSBOdW1iZXIoMTAuOSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15fX2ludF9fIHJldHVybmVkIG5vbi1pbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCh0eXBlIGZsb2F0XCkkJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcKHR5cGUgZmxvYXRcKSQnKToKICAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgZjEwKQogCiAgICAgICAgIGNsYXNzIEZsb2F0KGZsb2F0KToKQEAgLTM5NTcsNSArNDAzMSw3OTAgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAuKQogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMb2NhbCBUaW1lIERpc2FtYmlndWF0aW9uCisKKyMgQW4gZXhwZXJpbWVudGFsIHJlaW1wbGVtZW50YXRpb24gb2YgZnJvbXV0YyB0aGF0IHJlc3BlY3RzIHRoZSAiZm9sZCIgZmxhZy4KKworY2xhc3MgdHppbmZvMih0emluZm8pOgorCisgICAgZGVmIGZyb211dGMoc2VsZiwgZHQpOgorICAgICAgICAiZGF0ZXRpbWUgaW4gVVRDIC0+IGRhdGV0aW1lIGluIGxvY2FsIHRpbWUuIgorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGR0LCBkYXRldGltZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZyb211dGMoKSByZXF1aXJlcyBhIGRhdGV0aW1lIGFyZ3VtZW50IikKKyAgICAgICAgaWYgZHQudHppbmZvIGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHQudHppbmZvIGlzIG5vdCBzZWxmIikKKyAgICAgICAgIyBSZXR1cm5lZCB2YWx1ZSBzYXRpc2ZpZXMKKyAgICAgICAgIyAgICAgICAgICBkdCArIGxkdC51dGNvZmZzZXQoKSA9IGxkdAorICAgICAgICBvZmYwID0gZHQucmVwbGFjZShmb2xkPTApLnV0Y29mZnNldCgpCisgICAgICAgIG9mZjEgPSBkdC5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCkKKyAgICAgICAgaWYgb2ZmMCBpcyBOb25lIG9yIG9mZjEgaXMgTm9uZSBvciBkdC5kc3QoKSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBpZiBvZmYwID09IG9mZjE6CisgICAgICAgICAgICBsZHQgPSBkdCArIG9mZjAKKyAgICAgICAgICAgIG9mZjEgPSBsZHQudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIGlmIG9mZjAgPT0gb2ZmMToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGR0CisgICAgICAgICMgTm93LCB3ZSBkaXNjb3ZlcmVkIGJvdGggcG9zc2libGUgb2Zmc2V0cywgc28KKyAgICAgICAgIyB3ZSBjYW4ganVzdCB0cnkgZm91ciBwb3NzaWJsZSBzb2x1dGlvbnM6CisgICAgICAgIGZvciBvZmYgaW4gW29mZjAsIG9mZjFdOgorICAgICAgICAgICAgbGR0ID0gZHQgKyBvZmYKKyAgICAgICAgICAgIGlmIGxkdC51dGNvZmZzZXQoKSA9PSBvZmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxkdAorICAgICAgICAgICAgbGR0ID0gbGR0LnJlcGxhY2UoZm9sZD0xKQorICAgICAgICAgICAgaWYgbGR0LnV0Y29mZnNldCgpID09IG9mZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGR0CisKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTm8gc3VpdGFibGUgbG9jYWwgdGltZSBmb3VuZCIpCisKKyMgUmVpbXBsZW1lbnRpbmcgc2ltcGxpZmllZCBVUyB0aW1lem9uZXMgdG8gcmVzcGVjdCB0aGUgImZvbGQiIGZsYWc6CisKK2NsYXNzIFVTVGltZVpvbmUyKHR6aW5mbzIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvdXJzLCByZXBybmFtZSwgc3RkbmFtZSwgZHN0bmFtZSk6CisgICAgICAgIHNlbGYuc3Rkb2Zmc2V0ID0gdGltZWRlbHRhKGhvdXJzPWhvdXJzKQorICAgICAgICBzZWxmLnJlcHJuYW1lID0gcmVwcm5hbWUKKyAgICAgICAgc2VsZi5zdGRuYW1lID0gc3RkbmFtZQorICAgICAgICBzZWxmLmRzdG5hbWUgPSBkc3RuYW1lCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnJlcHJuYW1lCisKKyAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKKyAgICAgICAgaWYgc2VsZi5kc3QoZHQpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHN0bmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RkbmFtZQorCisgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBzZWxmLnN0ZG9mZnNldCArIHNlbGYuZHN0KGR0KQorCisgICAgZGVmIGRzdChzZWxmLCBkdCk6CisgICAgICAgIGlmIGR0IGlzIE5vbmUgb3IgZHQudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICAjIEFuIGV4Y2VwdGlvbiBpbnN0ZWFkIG1heSBiZSBzZW5zaWJsZSBoZXJlLCBpbiBvbmUgb3IgbW9yZSBvZgorICAgICAgICAgICAgIyB0aGUgY2FzZXMuCisgICAgICAgICAgICByZXR1cm4gWkVSTworICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKKworICAgICAgICAjIEZpbmQgZmlyc3QgU3VuZGF5IGluIEFwcmlsLgorICAgICAgICBzdGFydCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihEU1RTVEFSVC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCisgICAgICAgIGFzc2VydCBzdGFydC53ZWVrZGF5KCkgPT0gNiBhbmQgc3RhcnQubW9udGggPT0gNCBhbmQgc3RhcnQuZGF5IDw9IDcKKworICAgICAgICAjIEZpbmQgbGFzdCBTdW5kYXkgaW4gT2N0b2Jlci4KKyAgICAgICAgZW5kID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKERTVEVORC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCisgICAgICAgIGFzc2VydCBlbmQud2Vla2RheSgpID09IDYgYW5kIGVuZC5tb250aCA9PSAxMCBhbmQgZW5kLmRheSA+PSAyNQorCisgICAgICAgICMgQ2FuJ3QgY29tcGFyZSBuYWl2ZSB0byBhd2FyZSBvYmplY3RzLCBzbyBzdHJpcCB0aGUgdGltZXpvbmUgZnJvbQorICAgICAgICAjIGR0IGZpcnN0LgorICAgICAgICBkdCA9IGR0LnJlcGxhY2UodHppbmZvPU5vbmUpCisgICAgICAgIGlmIHN0YXJ0ICsgSE9VUiA8PSBkdCA8IGVuZDoKKyAgICAgICAgICAgICMgRFNUIGlzIGluIGVmZmVjdC4KKyAgICAgICAgICAgIHJldHVybiBIT1VSCisgICAgICAgIGVsaWYgZW5kIDw9IGR0IDwgZW5kICsgSE9VUjoKKyAgICAgICAgICAgICMgRm9sZCAoYW4gYW1iaWd1b3VzIGhvdXIpOiB1c2UgZHQuZm9sZCB0byBkaXNhbWJpZ3VhdGUuCisgICAgICAgICAgICByZXR1cm4gWkVSTyBpZiBkdC5mb2xkIGVsc2UgSE9VUgorICAgICAgICBlbGlmIHN0YXJ0IDw9IGR0IDwgc3RhcnQgKyBIT1VSOgorICAgICAgICAgICAgIyBHYXAgKGEgbm9uLWV4aXN0ZW50IGhvdXIpOiByZXZlcnNlIHRoZSBmb2xkIHJ1bGUuCisgICAgICAgICAgICByZXR1cm4gSE9VUiBpZiBkdC5mb2xkIGVsc2UgWkVSTworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBEU1QgaXMgb2ZmLgorICAgICAgICAgICAgcmV0dXJuIFpFUk8KKworRWFzdGVybjIgID0gVVNUaW1lWm9uZTIoLTUsICJFYXN0ZXJuMiIsICAiRVNUIiwgIkVEVCIpCitDZW50cmFsMiAgPSBVU1RpbWVab25lMigtNiwgIkNlbnRyYWwyIiwgICJDU1QiLCAiQ0RUIikKK01vdW50YWluMiA9IFVTVGltZVpvbmUyKC03LCAiTW91bnRhaW4yIiwgIk1TVCIsICJNRFQiKQorUGFjaWZpYzIgID0gVVNUaW1lWm9uZTIoLTgsICJQYWNpZmljMiIsICAiUFNUIiwgIlBEVCIpCisKKyMgRXVyb3BlX1ZpbG5pdXNfMTk0MSB0emluZm8gaW1wbGVtZW50YXRpb24gcmVwcm9kdWNlcyB0aGUgZm9sbG93aW5nCisjIDE5NDEgdHJhbnNpdGlvbiBmcm9tIE9sc29uJ3MgdHpkaXN0OgorIworIyBab25lIE5BTUUgICAgICAgICAgIEdNVE9GRiBSVUxFUyAgRk9STUFUIFtVTlRJTF0KKyMgWm9uZUV1cm9wZS9WaWxuaXVzICAxOjAwICAgLSAgICAgIENFVCAgICAxOTQwIEF1ZyAgMworIyAgICAgICAgICAgICAgICAgICAgIDM6MDAgICAtICAgICAgTVNLICAgIDE5NDEgSnVuIDI0CisjICAgICAgICAgICAgICAgICAgICAgMTowMCAgIEMtRXVyICBDRSVzVCAgMTk0NCBBdWcKKyMKKyMgJCB6ZHVtcCAtdiBFdXJvcGUvVmlsbml1cyB8IGdyZXAgMTk0MQorIyBFdXJvcGUvVmlsbml1cyAgTW9uIEp1biAyMyAyMDo1OTo1OSAxOTQxIFVUQyA9IE1vbiBKdW4gMjMgMjM6NTk6NTkgMTk0MSBNU0sgaXNkc3Q9MCBnbXRvZmY9MTA4MDAKKyMgRXVyb3BlL1ZpbG5pdXMgIE1vbiBKdW4gMjMgMjE6MDA6MDAgMTk0MSBVVEMgPSBNb24gSnVuIDIzIDIzOjAwOjAwIDE5NDEgQ0VTVCBpc2RzdD0xIGdtdG9mZj03MjAwCisKK2NsYXNzIEV1cm9wZV9WaWxuaXVzXzE5NDEodHppbmZvKToKKyAgICBkZWYgX3V0Y19mb2xkKHNlbGYpOgorICAgICAgICByZXR1cm4gW2RhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMSwgdHppbmZvPXNlbGYpLCAgIyBNb24gSnVuIDIzIDIxOjAwOjAwIDE5NDEgVVRDCisgICAgICAgICAgICAgICAgZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIyLCB0emluZm89c2VsZildICAjIE1vbiBKdW4gMjMgMjI6MDA6MDAgMTk0MSBVVEMKKworICAgIGRlZiBfbG9jX2ZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBbZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIzLCB0emluZm89c2VsZiksICAjIE1vbiBKdW4gMjMgMjM6MDA6MDAgMTk0MSBNU0sgLyBDRVNUCisgICAgICAgICAgICAgICAgZGF0ZXRpbWUoMTk0MSwgNiwgMjQsIDAsIHR6aW5mbz1zZWxmKV0gICAjIE1vbiBKdW4gMjQgMDA6MDA6MDAgMTk0MSBDRVNUCisKKyAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fbG9jX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gMyAqIEhPVVIKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0b3A6CisgICAgICAgICAgICByZXR1cm4gKDIgaWYgZHQuZm9sZCBlbHNlIDMpICogSE9VUgorICAgICAgICAjIGlmIGR0ID49IGZvbGRfc3RvcAorICAgICAgICByZXR1cm4gMiAqIEhPVVIKKworICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgorICAgICAgICBmb2xkX3N0YXJ0LCBmb2xkX3N0b3AgPSBzZWxmLl9sb2NfZm9sZCgpCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdGFydDoKKyAgICAgICAgICAgIHJldHVybiAwICogSE9VUgorICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoMSBpZiBkdC5mb2xkIGVsc2UgMCkgKiBIT1VSCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiAxICogSE9VUgorCisgICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6CisgICAgICAgIGZvbGRfc3RhcnQsIGZvbGRfc3RvcCA9IHNlbGYuX2xvY19mb2xkKCkKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0YXJ0OgorICAgICAgICAgICAgcmV0dXJuICdNU0snCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdG9wOgorICAgICAgICAgICAgcmV0dXJuICgnTVNLJywgJ0NFU1QnKVtkdC5mb2xkXQorICAgICAgICAjIGlmIGR0ID49IGZvbGRfc3RvcAorICAgICAgICByZXR1cm4gJ0NFU1QnCisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgIGFzc2VydCBkdC5mb2xkID09IDAKKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisgICAgICAgIGlmIGR0LnllYXIgIT0gMTk0MToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fdXRjX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gZHQgKyAzICogSE9VUgorICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoZHQgKyAyICogSE9VUikucmVwbGFjZShmb2xkPTEpCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiBkdCArIDIgKiBIT1VSCisKKworY2xhc3MgVGVzdExvY2FsVGltZURpc2FtYmlndWF0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3ZpbG5pdXNfMTk0MV9mcm9tdXRjKHNlbGYpOgorICAgICAgICBWaWxuaXVzID0gRXVyb3BlX1ZpbG5pdXNfMTk0MSgpCisKKyAgICAgICAgZ2R0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIwLCA1OSwgNTksIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxkdCA9IGdkdC5hc3RpbWV6b25lKFZpbG5pdXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LnN0cmZ0aW1lKCIlYyAlWiV6IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMjM6NTk6NTkgMTk0MSBNU0srMDMwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGR0LmRzdCgpKQorCisgICAgICAgIGdkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMSwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbGR0ID0gZ2R0LmFzdGltZXpvbmUoVmlsbml1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuc3RyZnRpbWUoIiVjICVaJXoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMzowMDowMCAxOTQxIENFU1QrMDIwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZHQuZHN0KCkpCisKKyAgICAgICAgZ2R0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIyLCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBsZHQgPSBnZHQuYXN0aW1lem9uZShWaWxuaXVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5zdHJmdGltZSgiJWMgJVoleiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUdWUgSnVuIDI0IDAwOjAwOjAwIDE5NDEgQ0VTVCswMjAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxkdC5kc3QoKSkKKworICAgIGRlZiB0ZXN0X3ZpbG5pdXNfMTk0MV90b3V0YyhzZWxmKToKKyAgICAgICAgVmlsbml1cyA9IEV1cm9wZV9WaWxuaXVzXzE5NDEoKQorCisgICAgICAgIGxkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMiwgNTksIDU5LCB0emluZm89Vmlsbml1cykKKyAgICAgICAgZ2R0ID0gbGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdkdC5zdHJmdGltZSgiJWMgJVoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAxOTo1OTo1OSAxOTQxIFVUQycpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIzLCA1OSwgNTksIHR6aW5mbz1WaWxuaXVzKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIwOjU5OjU5IDE5NDEgVVRDJykKKworICAgICAgICBsZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjMsIDU5LCA1OSwgdHppbmZvPVZpbG5pdXMsIGZvbGQ9MSkKKyAgICAgICAgZ2R0ID0gbGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdkdC5zdHJmdGltZSgiJWMgJVoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMTo1OTo1OSAxOTQxIFVUQycpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjQsIDAsIHR6aW5mbz1WaWxuaXVzKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIyOjAwOjAwIDE5NDEgVVRDJykKKworCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3JzKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwLCBmb2xkPTEpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5mb2xkLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0aW1lKDAsIDAsIDAsIDAsIE5vbmUsIDApCisKKyAgICBkZWYgdGVzdF9tZW1iZXIoc2VsZik6CisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICB0ID0gZHQudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5mb2xkLCAxKQorICAgICAgICB0ID0gZHQudGltZXR6KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmZvbGQsIDEpCisKKyAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXBsYWNlKGZvbGQ9MSkuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5yZXBsYWNlKGZvbGQ9MSkuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlcGxhY2UoZm9sZD0wKS5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UoZm9sZD0wKS5mb2xkLCAwKQorICAgICAgICAjIENoZWNrIHRoYXQgcmVwbGFjZW1lbnQgb2Ygb3RoZXIgZmllbGRzIGRvZXMgbm90IGNoYW5nZSAiZm9sZCIuCisgICAgICAgIHQgPSB0LnJlcGxhY2UoZm9sZD0xLCB0emluZm89RWFzdGVybikKKyAgICAgICAgZHQgPSBkdC5yZXBsYWNlKGZvbGQ9MSwgdHppbmZvPUVhc3Rlcm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXBsYWNlKHR6aW5mbz1Ob25lKS5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UodHppbmZvPU5vbmUpLmZvbGQsIDEpCisgICAgICAgICMgQ2hlY2sgdGhhdCBmb2xkIGlzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHQucmVwbGFjZSgxLCAxLCAxLCBOb25lLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkdC5yZXBsYWNlKDEsIDEsIDEsIDEsIDEsIDEsIDEsIE5vbmUsIDEpCisKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5yZXBsYWNlKGZvbGQ9MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIGR0LnJlcGxhY2UoZm9sZD0xKSkKKworICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CisgICAgICAgIHQgPSB0aW1lKDApCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHQpLCBoYXNoKHQucmVwbGFjZShmb2xkPTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGR0KSwgaGFzaChkdC5yZXBsYWNlKGZvbGQ9MSkpKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfZnJvbXRpbWVzdGFtcChzZWxmKToKKyAgICAgICAgcyA9IDE0MTQ5MDYyMDAKKyAgICAgICAgZHQwID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICBkdDEgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMgKyAzNjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0MS5mb2xkLCAxKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0F1c3RyYWxpYS9Mb3JkX0hvd2UnKQorICAgIGRlZiB0ZXN0X2Zyb210aW1lc3RhbXBfbG9yZF9ob3dlKHNlbGYpOgorICAgICAgICB0bSA9IF90aW1lLmxvY2FsdGltZSgxLjRlOSkKKyAgICAgICAgaWYgX3RpbWUuc3RyZnRpbWUoJyVaJXonLCB0bSkgIT0gJ0xIU1QrMTAzMCc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdBdXN0cmFsaWEvTG9yZF9Ib3dlIHRpbWV6b25lIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybScpCisgICAgICAgICMgJCBUWj1BdXN0cmFsaWEvTG9yZF9Ib3dlIGRhdGUgLXIgMTQyODE1ODcwMAorICAgICAgICAjIFN1biBBcHIgIDUgMDE6NDU6MDAgTEhEVCAyMDE1CisgICAgICAgICMgJCBUWj1BdXN0cmFsaWEvTG9yZF9Ib3dlIGRhdGUgLXIgMTQyODE2MDUwMAorICAgICAgICAjIFN1biBBcHIgIDUgMDE6NDU6MDAgTEhTVCAyMDE1CisgICAgICAgIHMgPSAxNDI4MTU4NzAwCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICB0MSA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAocyArIDE4MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAsIHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQwLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEuZm9sZCwgMSkKKworCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfdGltZXN0YW1wKHNlbGYpOgorICAgICAgICBkdDAgPSBkYXRldGltZSgyMDE0LCAxMSwgMiwgMSwgMzApCisgICAgICAgIGR0MSA9IGR0MC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdDAudGltZXN0YW1wKCkgKyAzNjAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGR0MS50aW1lc3RhbXAoKSkKKworICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdBdXN0cmFsaWEvTG9yZF9Ib3dlJykKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfbG9yZF9ob3dlKHNlbGYpOgorICAgICAgICB0bSA9IF90aW1lLmxvY2FsdGltZSgxLjRlOSkKKyAgICAgICAgaWYgX3RpbWUuc3RyZnRpbWUoJyVaJXonLCB0bSkgIT0gJ0xIU1QrMTAzMCc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdBdXN0cmFsaWEvTG9yZF9Ib3dlIHRpbWV6b25lIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybScpCisgICAgICAgIHQgPSBkYXRldGltZSgyMDE1LCA0LCA1LCAxLCA0NSkKKyAgICAgICAgczAgPSB0LnJlcGxhY2UoZm9sZD0wKS50aW1lc3RhbXAoKQorICAgICAgICBzMSA9IHQucmVwbGFjZShmb2xkPTEpLnRpbWVzdGFtcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczAgKyAxODAwLCBzMSkKKworCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfYXN0aW1lem9uZShzZWxmKToKKyAgICAgICAgZHQwID0gZGF0ZXRpbWUoMjAxNCwgMTEsIDIsIDEsIDMwKQorICAgICAgICBkdDEgPSBkdDAucmVwbGFjZShmb2xkPTEpCisgICAgICAgICMgQ29udmVydCBib3RoIG5haXZlIGluc3RhbmNlcyB0byBhd2FyZS4KKyAgICAgICAgYWR0MCA9IGR0MC5hc3RpbWV6b25lKCkKKyAgICAgICAgYWR0MSA9IGR0MS5hc3RpbWV6b25lKCkKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBmaXJzdCBpbnN0YW5jZSBpbiBEU1Qgem9uZSBhbmQgdGhlIHNlY29uZCBpbiBTVEQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQwLnR6bmFtZSgpLCAnRURUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQxLnR6bmFtZSgpLCAnRVNUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQwICsgSE9VUiwgYWR0MSkKKyAgICAgICAgIyBBd2FyZSBpbnN0YW5jZXMgd2l0aCBmaXhlZCBvZmZzZXQgdHppbmZvJ3MgYWx3YXlzIGhhdmUgZm9sZD0wCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWR0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDEuZm9sZCwgMCkKKworCisgICAgZGVmIHRlc3RfcGlja2xlX2ZvbGQoc2VsZik6CisgICAgICAgIHQgPSB0aW1lKGZvbGQ9MSkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxLCBmb2xkPTEpCisgICAgICAgIGZvciBwaWNrbGVyLCB1bnBpY2tsZXIsIHByb3RvIGluIHBpY2tsZV9jaG9pY2VzOgorICAgICAgICAgICAgZm9yIHggaW4gW3QsIGR0XToKKyAgICAgICAgICAgICAgICBzID0gcGlja2xlci5kdW1wcyh4LCBwcm90bykKKyAgICAgICAgICAgICAgICB5ID0gdW5waWNrbGVyLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDAgaWYgcHJvdG8gPCA0IGVsc2UgeC5mb2xkKSwgeS5mb2xkKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoZm9sZD0xKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEsIGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHQpLCAnZGF0ZXRpbWUudGltZSgwLCAwLCBmb2xkPTEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0ZXRpbWUuZGF0ZXRpbWUoMSwgMSwgMSwgMCwgMCwgZm9sZD0xKScpCisKKyAgICBkZWYgdGVzdF9kc3Qoc2VsZik6CisgICAgICAgICMgTGV0J3MgZmlyc3QgZXN0YWJsaXNoIHRoYXQgdGhpbmdzIHdvcmsgaW4gcmVndWxhciB0aW1lcy4KKyAgICAgICAgZHRfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgZHRfd2ludGVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAyLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLmRzdCgpLCBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3dpbnRlci5kc3QoKSwgWkVSTykKKyAgICAgICAgIyBUaGUgZGlzYW1iaWd1YXRpb24gZmxhZyBpcyBpZ25vcmVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLnJlcGxhY2UoZm9sZD0xKS5kc3QoKSwgSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBaRVJPKQorCisgICAgICAgICMgUGljayBsb2NhbCB0aW1lIGluIHRoZSBmb2xkLgorICAgICAgICBmb3IgbWludXRlIGluIFswLCAzMCwgNTldOgorICAgICAgICAgICAgZHQgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIG1pbnV0ZSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICAgICAgIyBXaXRoIGZvbGQ9MCAodGhlIGRlZmF1bHQpIGl0IGlzIGluIERTVC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuZHN0KCksIEhPVVIpCisgICAgICAgICAgICAjIFdpdGggZm9sZD0xIGl0IGlzIGluIFNURC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBaRVJPKQorCisgICAgICAgICMgUGljayBsb2NhbCB0aW1lIGluIHRoZSBnYXAuCisgICAgICAgIGZvciBtaW51dGUgaW4gWzAsIDMwLCA1OV06CisgICAgICAgICAgICBkdCA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIG1pbnV0ZSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICAgICAgIyBXaXRoIGZvbGQ9MCAodGhlIGRlZmF1bHQpIGl0IGlzIGluIFNURC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuZHN0KCksIFpFUk8pCisgICAgICAgICAgICAjIFdpdGggZm9sZD0xIGl0IGlzIGluIERTVC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBIT1VSKQorCisKKyAgICBkZWYgdGVzdF91dGNvZmZzZXQoc2VsZik6CisgICAgICAgICMgTGV0J3MgZmlyc3QgZXN0YWJsaXNoIHRoYXQgdGhpbmdzIHdvcmsgaW4gcmVndWxhciB0aW1lcy4KKyAgICAgICAgZHRfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgZHRfd2ludGVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAyLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLnV0Y29mZnNldCgpLCAtNCAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfd2ludGVyLnV0Y29mZnNldCgpLCAtNSAqIEhPVVIpCisgICAgICAgICMgVGhlIGRpc2FtYmlndWF0aW9uIGZsYWcgaXMgaWdub3JlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3N1bW1lci5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCksIC00ICogSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIucmVwbGFjZShmb2xkPTEpLnV0Y29mZnNldCgpLCAtNSAqIEhPVVIpCisKKyAgICBkZWYgdGVzdF9mcm9tdXRjKHNlbGYpOgorICAgICAgICAjIExldCdzIGZpcnN0IGVzdGFibGlzaCB0aGF0IHRoaW5ncyB3b3JrIGluIHJlZ3VsYXIgdGltZXMuCisgICAgICAgIHVfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCA2LCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgdV93aW50ZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDcsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdF9zdW1tZXIgPSBFYXN0ZXJuMi5mcm9tdXRjKHVfc3VtbWVyKQorICAgICAgICB0X3dpbnRlciA9IEVhc3Rlcm4yLmZyb211dGModV93aW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF9zdW1tZXIsIHVfc3VtbWVyIC0gNCAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF93aW50ZXIsIHVfd2ludGVyIC0gNSAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF9zdW1tZXIuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0X3dpbnRlci5mb2xkLCAwKQorCisgICAgICAgICMgV2hhdCBoYXBwZW5zIGluIHRoZSBmYWxsLWJhY2sgZm9sZD8KKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNSwgMzAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdDAgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHUgKz0gSE9VUgorICAgICAgICB0MSA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MCwgdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS5mb2xkLCAxKQorICAgICAgICAjIFRoZSB0cmlja3kgcGFydCBpcyB3aGVuIHUgaXMgaW4gdGhlIGxvY2FsIGZvbGQ6CisgICAgICAgIHUgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIDMwLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHQgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHQuZGF5LCB0LmhvdXIpLCAoMjYsIDIxKSkKKyAgICAgICAgIyAuLiBvciBnZXRzIGludG8gdGhlIGxvY2FsIGZvbGQgYWZ0ZXIgYSBzdGFuZGFyZCB0aW1lIGFkanVzdG1lbnQKKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNiwgMzAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodC5kYXksIHQuaG91ciksICgyNywgMSkpCisKKyAgICAgICAgIyBXaGF0IGhhcHBlbnMgaW4gdGhlIHNwcmluZy1mb3J3YXJkIGdhcD8KKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIDAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodC5kYXksIHQuaG91ciksICg2LCAyMSkpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX3JlZ3VsYXIoc2VsZik6CisgICAgICAgIHQgPSBkYXRldGltZSgyMDAwLCAxLCAxLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykpCisgICAgICAgIHQgPSBkYXRldGltZSgyMDAwLCA2LCAxLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX2ZvbGQoc2VsZik6CisgICAgICAgIHRfZm9sZCA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgNDUsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdF9mb2xkX3V0YyA9IHRfZm9sZC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0X2ZvbGQsIHRfZm9sZF91dGMpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX2dhcChzZWxmKToKKyAgICAgICAgdF9nYXAgPSBkYXRldGltZSgyMDAyLCA0LCA3LCAyLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X2dhcF91dGMgPSB0X2dhcC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0X2dhcCwgdF9nYXBfdXRjKQorCisgICAgZGVmIHRlc3RfaGFzaF9hd2FyZShzZWxmKToKKyAgICAgICAgdCA9IGRhdGV0aW1lKDIwMDAsIDEsIDEsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHQpLCBoYXNoKHQucmVwbGFjZShmb2xkPTEpKSkKKyAgICAgICAgdF9mb2xkID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X2dhcCA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIDQ1LCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaCh0X2ZvbGQpLCBoYXNoKHRfZm9sZC5yZXBsYWNlKGZvbGQ9MSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2godF9nYXApLCBoYXNoKHRfZ2FwLnJlcGxhY2UoZm9sZD0xKSkpCisKK1NFQyA9IHRpbWVkZWx0YSgwLCAxKQorCitkZWYgcGFpcnMoaXRlcmFibGUpOgorICAgIGEsIGIgPSBpdGVydG9vbHMudGVlKGl0ZXJhYmxlKQorICAgIG5leHQoYiwgTm9uZSkKKyAgICByZXR1cm4gemlwKGEsIGIpCisKK2NsYXNzIFpvbmVJbmZvKHR6aW5mbyk6CisgICAgem9uZXJvb3QgPSAnL3Vzci9zaGFyZS96b25laW5mbycKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXQsIHRpKToKKyAgICAgICAgIiIiCisKKyAgICAgICAgOnBhcmFtIHV0OiBhcnJheQorICAgICAgICAgICAgQXJyYXkgb2YgdHJhbnNpdGlvbiBwb2ludCB0aW1lc3RhbXBzCisgICAgICAgIDpwYXJhbSB0aTogbGlzdAorICAgICAgICAgICAgQSBsaXN0IG9mIChvZmZzZXQsIGlzZHN0LCBhYmJyKSB0dXBsZXMKKyAgICAgICAgOnJldHVybjogTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi51dCA9IHV0CisgICAgICAgIHNlbGYudGkgPSB0aQorICAgICAgICBzZWxmLmx0ID0gc2VsZi5pbnZlcnQodXQsIHRpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBpbnZlcnQodXQsIHRpKToKKyAgICAgICAgbHQgPSAoYXJyYXkoJ3EnLCB1dCksIGFycmF5KCdxJywgdXQpKQorICAgICAgICBpZiB1dDoKKyAgICAgICAgICAgIG9mZnNldCA9IHRpWzBdWzBdIC8vIFNFQworICAgICAgICAgICAgbHRbMF1bMF0gKz0gb2Zmc2V0CisgICAgICAgICAgICBsdFsxXVswXSArPSBvZmZzZXQKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbih1dCkpOgorICAgICAgICAgICAgICAgIGx0WzBdW2ldICs9IHRpW2ktMV1bMF0gLy8gU0VDCisgICAgICAgICAgICAgICAgbHRbMV1baV0gKz0gdGlbaV1bMF0gLy8gU0VDCisgICAgICAgIHJldHVybiBsdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21maWxlKGNscywgZmlsZW9iaik6CisgICAgICAgIGlmIGZpbGVvYmoucmVhZCg0KS5kZWNvZGUoKSAhPSAiVFppZiI6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSB6b25laW5mbyBmaWxlIikKKyAgICAgICAgZmlsZW9iai5zZWVrKDMyKQorICAgICAgICBjb3VudHMgPSBhcnJheSgnaScpCisgICAgICAgIGNvdW50cy5mcm9tZmlsZShmaWxlb2JqLCAzKQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgY291bnRzLmJ5dGVzd2FwKCkKKworICAgICAgICB1dCA9IGFycmF5KCdpJykKKyAgICAgICAgdXQuZnJvbWZpbGUoZmlsZW9iaiwgY291bnRzWzBdKQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgdXQuYnl0ZXN3YXAoKQorCisgICAgICAgIHR5cGVfaW5kaWNlcyA9IGFycmF5KCdCJykKKyAgICAgICAgdHlwZV9pbmRpY2VzLmZyb21maWxlKGZpbGVvYmosIGNvdW50c1swXSkKKworICAgICAgICB0dGlzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnRzWzFdKToKKyAgICAgICAgICAgIHR0aXMuYXBwZW5kKHN0cnVjdC51bnBhY2soIj5sYmIiLCBmaWxlb2JqLnJlYWQoNikpKQorCisgICAgICAgIGFiYnJzID0gZmlsZW9iai5yZWFkKGNvdW50c1syXSkKKworICAgICAgICAjIENvbnZlcnQgdHRpcworICAgICAgICBmb3IgaSwgKGdtdG9mZiwgaXNkc3QsIGFiYnJpbmQpIGluIGVudW1lcmF0ZSh0dGlzKToKKyAgICAgICAgICAgIGFiYnIgPSBhYmJyc1thYmJyaW5kOmFiYnJzLmZpbmQoMCwgYWJicmluZCldLmRlY29kZSgpCisgICAgICAgICAgICB0dGlzW2ldID0gKHRpbWVkZWx0YSgwLCBnbXRvZmYpLCBpc2RzdCwgYWJicikKKworICAgICAgICB0aSA9IFtOb25lXSAqIGxlbih1dCkKKyAgICAgICAgZm9yIGksIGlkeCBpbiBlbnVtZXJhdGUodHlwZV9pbmRpY2VzKToKKyAgICAgICAgICAgIHRpW2ldID0gdHRpc1tpZHhdCisKKyAgICAgICAgc2VsZiA9IGNscyh1dCwgdGkpCisKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tbmFtZShjbHMsIG5hbWUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGNscy56b25lcm9vdCwgbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gY2xzLmZyb21maWxlKGYpCisKKyAgICBFUE9DSE9SRElOQUwgPSBkYXRlKDE5NzAsIDEsIDEpLnRvb3JkaW5hbCgpCisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgICIiImRhdGV0aW1lIGluIFVUQyAtPiBkYXRldGltZSBpbiBsb2NhbCB0aW1lLiIiIgorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGR0LCBkYXRldGltZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZyb211dGMoKSByZXF1aXJlcyBhIGRhdGV0aW1lIGFyZ3VtZW50IikKKyAgICAgICAgaWYgZHQudHppbmZvIGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHQudHppbmZvIGlzIG5vdCBzZWxmIikKKworICAgICAgICB0aW1lc3RhbXAgPSAoKGR0LnRvb3JkaW5hbCgpIC0gc2VsZi5FUE9DSE9SRElOQUwpICogODY0MDAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQuaG91ciAqIDM2MDAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQubWludXRlICogNjAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQuc2Vjb25kKQorCisgICAgICAgIGlmIHRpbWVzdGFtcCA8IHNlbGYudXRbMV06CisgICAgICAgICAgICB0dGkgPSBzZWxmLnRpWzBdCisgICAgICAgICAgICBmb2xkID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWR4ID0gYmlzZWN0LmJpc2VjdF9yaWdodChzZWxmLnV0LCB0aW1lc3RhbXApCisgICAgICAgICAgICBhc3NlcnQgc2VsZi51dFtpZHgtMV0gPD0gdGltZXN0YW1wCisgICAgICAgICAgICBhc3NlcnQgaWR4ID09IGxlbihzZWxmLnV0KSBvciB0aW1lc3RhbXAgPCBzZWxmLnV0W2lkeF0KKyAgICAgICAgICAgIHR0aV9wcmV2LCB0dGkgPSBzZWxmLnRpW2lkeC0yOmlkeF0KKyAgICAgICAgICAgICMgRGV0ZWN0IGZvbGQKKyAgICAgICAgICAgIHNoaWZ0ID0gdHRpX3ByZXZbMF0gLSB0dGlbMF0KKyAgICAgICAgICAgIGZvbGQgPSAoc2hpZnQgPiB0aW1lZGVsdGEoMCwgdGltZXN0YW1wIC0gc2VsZi51dFtpZHgtMV0pKQorICAgICAgICBkdCArPSB0dGlbMF0KKyAgICAgICAgaWYgZm9sZDoKKyAgICAgICAgICAgIHJldHVybiBkdC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBkdAorCisgICAgZGVmIF9maW5kX3RpKHNlbGYsIGR0LCBpKToKKyAgICAgICAgdGltZXN0YW1wID0gKChkdC50b29yZGluYWwoKSAtIHNlbGYuRVBPQ0hPUkRJTkFMKSAqIDg2NDAwCisgICAgICAgICAgICAgKyBkdC5ob3VyICogMzYwMAorICAgICAgICAgICAgICsgZHQubWludXRlICogNjAKKyAgICAgICAgICAgICArIGR0LnNlY29uZCkKKyAgICAgICAgbHQgPSBzZWxmLmx0W2R0LmZvbGRdCisgICAgICAgIGlkeCA9IGJpc2VjdC5iaXNlY3RfcmlnaHQobHQsIHRpbWVzdGFtcCkKKworICAgICAgICByZXR1cm4gc2VsZi50aVttYXgoMCwgaWR4IC0gMSldW2ldCisKKyAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfdGkoZHQsIDApCisKKyAgICBkZWYgZHN0KHNlbGYsIGR0KToKKyAgICAgICAgaXNkc3QgPSBzZWxmLl9maW5kX3RpKGR0LCAxKQorICAgICAgICAjIFhYWDogV2UgY2Fubm90IGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSAic2F2ZSIgdmFsdWUsCisgICAgICAgICMgc28gbGV0J3MgcmV0dXJuIDFoIHdoZW5ldmVyIERTVCBpcyBpbiBlZmZlY3QuICBTaW5jZQorICAgICAgICAjIHdlIGRvbid0IHVzZSBkc3QoKSBpbiBmcm9tdXRjKCksIGl0IGlzIHVubGlrZWx5IHRoYXQKKyAgICAgICAgIyBpdCB3aWxsIGJlIG5lZWRlZCBmb3IgYW55dGhpbmcgbW9yZSB0aGFuIGJvb2woZHN0KCkpLgorICAgICAgICByZXR1cm4gWkVSTyBpZiBpc2RzdCBlbHNlIEhPVVIKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmluZF90aShkdCwgMikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB6b25lbmFtZXMoY2xzLCB6b25lZGlyPU5vbmUpOgorICAgICAgICBpZiB6b25lZGlyIGlzIE5vbmU6CisgICAgICAgICAgICB6b25lZGlyID0gY2xzLnpvbmVyb290CisgICAgICAgIHpvbmVfdGFiID0gb3MucGF0aC5qb2luKHpvbmVkaXIsICd6b25lLnRhYicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBvcGVuKHpvbmVfdGFiKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB3aXRoIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3QgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIGxpbmUuc3BsaXQoKVsyXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHN0YXRzKGNscywgc3RhcnRfeWVhcj0xKToKKyAgICAgICAgY291bnQgPSBnYXBfY291bnQgPSBmb2xkX2NvdW50ID0gemVyb3NfY291bnQgPSAwCisgICAgICAgIG1pbl9nYXAgPSBtaW5fZm9sZCA9IHRpbWVkZWx0YS5tYXgKKyAgICAgICAgbWF4X2dhcCA9IG1heF9mb2xkID0gWkVSTworICAgICAgICBtaW5fZ2FwX2RhdGV0aW1lID0gbWF4X2dhcF9kYXRldGltZSA9IGRhdGV0aW1lLm1pbgorICAgICAgICBtaW5fZ2FwX3pvbmUgPSBtYXhfZ2FwX3pvbmUgPSBOb25lCisgICAgICAgIG1pbl9mb2xkX2RhdGV0aW1lID0gbWF4X2ZvbGRfZGF0ZXRpbWUgPSBkYXRldGltZS5taW4KKyAgICAgICAgbWluX2ZvbGRfem9uZSA9IG1heF9mb2xkX3pvbmUgPSBOb25lCisgICAgICAgIHN0YXRzX3NpbmNlID0gZGF0ZXRpbWUoc3RhcnRfeWVhciwgMSwgMSkgIyBTdGFydGluZyBmcm9tIDE5NzAgZWxpbWluYXRlcyBhIGxvdCBvZiBub2lzZQorICAgICAgICBmb3Igem9uZW5hbWUgaW4gY2xzLnpvbmVuYW1lcygpOgorICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgdHogPSBjbHMuZnJvbW5hbWUoem9uZW5hbWUpCisgICAgICAgICAgICBmb3IgZHQsIHNoaWZ0IGluIHR6LnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICAgICAgaWYgZHQgPCBzdGF0c19zaW5jZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBzaGlmdCA+IFpFUk86CisgICAgICAgICAgICAgICAgICAgIGdhcF9jb3VudCArPSAxCisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZHQpID4gKG1heF9nYXAsIG1heF9nYXBfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dhcCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2FwX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dhcF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZGF0ZXRpbWUubWF4IC0gZHQpIDwgKG1pbl9nYXAsIGRhdGV0aW1lLm1heCAtIG1pbl9nYXBfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2dhcCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZ2FwX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2dhcF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgZWxpZiBzaGlmdCA8IFpFUk86CisgICAgICAgICAgICAgICAgICAgIGZvbGRfY291bnQgKz0gMQorICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IC1zaGlmdAorICAgICAgICAgICAgICAgICAgICBpZiAoc2hpZnQsIGR0KSA+IChtYXhfZm9sZCwgbWF4X2ZvbGRfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZvbGQgPSBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZvbGRfem9uZSA9IHpvbmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZm9sZF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZGF0ZXRpbWUubWF4IC0gZHQpIDwgKG1pbl9mb2xkLCBkYXRldGltZS5tYXggLSBtaW5fZm9sZF9kYXRldGltZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZm9sZCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZm9sZF96b25lID0gem9uZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9mb2xkX2RhdGV0aW1lID0gZHQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB6ZXJvc19jb3VudCArPSAxCisgICAgICAgIHRyYW5zX2NvdW50cyA9IChnYXBfY291bnQsIGZvbGRfY291bnQsIHplcm9zX2NvdW50KQorICAgICAgICBwcmludCgiTnVtYmVyIG9mIHpvbmVzOiAgICAgICAlNWQiICUgY291bnQpCisgICAgICAgIHByaW50KCJOdW1iZXIgb2YgdHJhbnNpdGlvbnM6ICU1ZCA9ICVkIChnYXBzKSArICVkIChmb2xkcykgKyAlZCAoemVyb3MpIiAlCisgICAgICAgICAgICAgICgoc3VtKHRyYW5zX2NvdW50cyksKSArIHRyYW5zX2NvdW50cykpCisgICAgICAgIHByaW50KCJNaW4gZ2FwOiAgICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1pbl9nYXAsIG1pbl9nYXBfZGF0ZXRpbWUsIG1pbl9nYXBfem9uZSkpCisgICAgICAgIHByaW50KCJNYXggZ2FwOiAgICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1heF9nYXAsIG1heF9nYXBfZGF0ZXRpbWUsIG1heF9nYXBfem9uZSkpCisgICAgICAgIHByaW50KCJNaW4gZm9sZDogICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1pbl9mb2xkLCBtaW5fZm9sZF9kYXRldGltZSwgbWluX2ZvbGRfem9uZSkpCisgICAgICAgIHByaW50KCJNYXggZm9sZDogICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1heF9mb2xkLCBtYXhfZm9sZF9kYXRldGltZSwgbWF4X2ZvbGRfem9uZSkpCisKKworICAgIGRlZiB0cmFuc2l0aW9ucyhzZWxmKToKKyAgICAgICAgZm9yIChfLCBwcmV2X3RpKSwgKHQsIHRpKSBpbiBwYWlycyh6aXAoc2VsZi51dCwgc2VsZi50aSkpOgorICAgICAgICAgICAgc2hpZnQgPSB0aVswXSAtIHByZXZfdGlbMF0KKyAgICAgICAgICAgIHlpZWxkIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodCksIHNoaWZ0CisKKyAgICBkZWYgbm9uZHN0X2ZvbGRzKHNlbGYpOgorICAgICAgICAiIiJGaW5kIGFsbCBmb2xkcyB3aXRoIHRoZSBzYW1lIHZhbHVlIG9mIGlzZHN0IG9uIGJvdGggc2lkZXMgb2YgdGhlIHRyYW5zaXRpb24uIiIiCisgICAgICAgIGZvciAoXywgcHJldl90aSksICh0LCB0aSkgaW4gcGFpcnMoemlwKHNlbGYudXQsIHNlbGYudGkpKToKKyAgICAgICAgICAgIHNoaWZ0ID0gdGlbMF0gLSBwcmV2X3RpWzBdCisgICAgICAgICAgICBpZiBzaGlmdCA8IFpFUk8gYW5kIHRpWzFdID09IHByZXZfdGlbMV06CisgICAgICAgICAgICAgICAgeWllbGQgZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0KSwgLXNoaWZ0LCBwcmV2X3RpWzJdLCB0aVsyXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHByaW50X2FsbF9ub25kc3RfZm9sZHMoY2xzLCBzYW1lX2FiYnI9RmFsc2UsIHN0YXJ0X3llYXI9MSk6CisgICAgICAgIGNvdW50ID0gMAorICAgICAgICBmb3Igem9uZW5hbWUgaW4gY2xzLnpvbmVuYW1lcygpOgorICAgICAgICAgICAgdHogPSBjbHMuZnJvbW5hbWUoem9uZW5hbWUpCisgICAgICAgICAgICBmb3IgZHQsIHNoaWZ0LCBwcmV2X2FiYnIsIGFiYnIgaW4gdHoubm9uZHN0X2ZvbGRzKCk6CisgICAgICAgICAgICAgICAgaWYgZHQueWVhciA8IHN0YXJ0X3llYXIgb3Igc2FtZV9hYmJyIGFuZCBwcmV2X2FiYnIgIT0gYWJicjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICAgICAgcHJpbnQoIiUzZCkgJS0zMHMgJXMgJTEwcyAlNXMgLT4gJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAoY291bnQsIHpvbmVuYW1lLCBkdCwgc2hpZnQsIHByZXZfYWJiciwgYWJicikpCisKKyAgICBkZWYgZm9sZHMoc2VsZik6CisgICAgICAgIGZvciB0LCBzaGlmdCBpbiBzZWxmLnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICBpZiBzaGlmdCA8IFpFUk86CisgICAgICAgICAgICAgICAgeWllbGQgdCwgLXNoaWZ0CisKKyAgICBkZWYgZ2FwcyhzZWxmKToKKyAgICAgICAgZm9yIHQsIHNoaWZ0IGluIHNlbGYudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgIGlmIHNoaWZ0ID4gWkVSTzoKKyAgICAgICAgICAgICAgICB5aWVsZCB0LCBzaGlmdAorCisgICAgZGVmIHplcm9zKHNlbGYpOgorICAgICAgICBmb3IgdCwgc2hpZnQgaW4gc2VsZi50cmFuc2l0aW9ucygpOgorICAgICAgICAgICAgaWYgbm90IHNoaWZ0OgorICAgICAgICAgICAgICAgIHlpZWxkIHQKKworCitjbGFzcyBab25lSW5mb1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHpvbmVuYW1lID0gJ0FtZXJpY2EvTmV3X1lvcmsnCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgem9uZWluZm8gdGVzdHMgb24gV2luZG93cyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYudHogPSBab25lSW5mby5mcm9tbmFtZShzZWxmLnpvbmVuYW1lKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgJXM6ICVzIiAlIChzZWxmLnpvbmVuYW1lLCBlcnIpKQorCisgICAgZGVmIGFzc2VydEVxdWl2RGF0ZXRpbWVzKHNlbGYsIGEsIGIpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChhLnJlcGxhY2UodHppbmZvPU5vbmUpLCBhLmZvbGQsIGlkKGEudHppbmZvKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKGIucmVwbGFjZSh0emluZm89Tm9uZSksIGIuZm9sZCwgaWQoYi50emluZm8pKSkKKworICAgIGRlZiB0ZXN0X2ZvbGRzKHNlbGYpOgorICAgICAgICB0eiA9IHNlbGYudHoKKyAgICAgICAgZm9yIGR0LCBzaGlmdCBpbiB0ei5mb2xkcygpOgorICAgICAgICAgICAgZm9yIHggaW4gWzAgKiBzaGlmdCwgMC41ICogc2hpZnQsIHNoaWZ0IC0gdGltZWRlbHRhLnJlc29sdXRpb25dOgorICAgICAgICAgICAgICAgIHVkdCA9IGR0ICsgeAorICAgICAgICAgICAgICAgIGxkdCA9IHR6LmZyb211dGModWR0LnJlcGxhY2UodHppbmZvPXR6KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAxKQorICAgICAgICAgICAgICAgIGFkdCA9IHVkdC5yZXBsYWNlKHR6aW5mbz10aW1lem9uZS51dGMpLmFzdGltZXpvbmUodHopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhhZHQsIGxkdCkKKyAgICAgICAgICAgICAgICB1dGNvZmZzZXQgPSBsZHQudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSwgdWR0ICsgdXRjb2Zmc2V0KQorICAgICAgICAgICAgICAgICMgUm91bmQgdHJpcAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1aXZEYXRldGltZXMobGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkdC5yZXBsYWNlKHR6aW5mbz10aW1lem9uZS51dGMpKQorCisKKyAgICAgICAgICAgIGZvciB4IGluIFstdGltZWRlbHRhLnJlc29sdXRpb24sIHNoaWZ0XToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICB1ZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dHopCisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKworICAgIGRlZiB0ZXN0X2dhcHMoc2VsZik6CisgICAgICAgIHR6ID0gc2VsZi50egorICAgICAgICBmb3IgZHQsIHNoaWZ0IGluIHR6LmdhcHMoKToKKyAgICAgICAgICAgIGZvciB4IGluIFswICogc2hpZnQsIDAuNSAqIHNoaWZ0LCBzaGlmdCAtIHRpbWVkZWx0YS5yZXNvbHV0aW9uXToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICB1ZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dHopCisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKyAgICAgICAgICAgICAgICBhZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dGltZXpvbmUudXRjKS5hc3RpbWV6b25lKHR6KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1aXZEYXRldGltZXMoYWR0LCBsZHQpCisgICAgICAgICAgICAgICAgdXRjb2Zmc2V0ID0gbGR0LnV0Y29mZnNldCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQucmVwbGFjZSh0emluZm89Tm9uZSksIHVkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSArIHV0Y29mZnNldCkKKyAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIGxvY2FsIHRpbWUgaW5zaWRlIHRoZSBnYXAKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKGR0LnJlcGxhY2UodHppbmZvPXR6KSkgLSBzaGlmdCArIHgKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MobGR0LnJlcGxhY2UoZm9sZD0xKS51dGNvZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGR0LnJlcGxhY2UoZm9sZD0wKS51dGNvZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF0ICVzLiIgJSBsZHQpCisKKyAgICAgICAgICAgIGZvciB4IGluIFstdGltZWRlbHRhLnJlc29sdXRpb24sIHNoaWZ0XToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKHVkdC5yZXBsYWNlKHR6aW5mbz10eikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKworICAgIGRlZiB0ZXN0X3N5c3RlbV90cmFuc2l0aW9ucyhzZWxmKToKKyAgICAgICAgaWYgKCdSaXlhZGg4JyBpbiBzZWxmLnpvbmVuYW1lIG9yCisgICAgICAgICAgICAjIEZyb20gdHpkYXRhIE5FV1MgZmlsZToKKyAgICAgICAgICAgICMgVGhlIGZpbGVzIHNvbGFyODcsIHNvbGFyODgsIGFuZCBzb2xhcjg5IGFyZSBubyBsb25nZXIgZGlzdHJpYnV0ZWQuCisgICAgICAgICAgICAjIFRoZXkgd2VyZSBhIG5lZ2F0aXZlIGV4cGVyaW1lbnQgLSB0aGF0IGlzLCBhIGRlbW9uc3RyYXRpb24gdGhhdAorICAgICAgICAgICAgIyB0eiBkYXRhIGNhbiByZXByZXNlbnQgc29sYXIgdGltZSBvbmx5IHdpdGggc29tZSBkaWZmaWN1bHR5IGFuZCBlcnJvci4KKyAgICAgICAgICAgICMgVGhlaXIgcHJlc2VuY2UgaW4gdGhlIGRpc3RyaWJ1dGlvbiBjYXVzZWQgY29uZnVzaW9uLCBhcyBSaXlhZGgKKyAgICAgICAgICAgICMgY2l2aWwgdGltZSB3YXMgZ2VuZXJhbGx5IG5vdCBzb2xhciB0aW1lIGluIHRob3NlIHllYXJzLgorICAgICAgICAgICAgICAgIHNlbGYuem9uZW5hbWUuc3RhcnRzd2l0aCgncmlnaHQvJykpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgJXMiICUgc2VsZi56b25lbmFtZSkKKyAgICAgICAgdHogPSBzZWxmLnR6CisgICAgICAgIFRaID0gb3MuZW52aXJvbi5nZXQoJ1RaJykKKyAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IHNlbGYuem9uZW5hbWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3RpbWUudHpzZXQoKQorICAgICAgICAgICAgZm9yIHVkdCwgc2hpZnQgaW4gdHoudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgICAgICBpZiB1ZHQueWVhciA+PSAyMDM3OgorICAgICAgICAgICAgICAgICAgICAjIFN5c3RlbSBzdXBwb3J0IGZvciB0aW1lcyBhcm91bmQgdGhlIGVuZCBvZiAzMi1iaXQgdGltZV90CisgICAgICAgICAgICAgICAgICAgICMgYW5kIGxhdGVyIGlzIGZsYWt5IG9uIG1hbnkgc3lzdGVtcy4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzMCA9ICh1ZHQgLSBkYXRldGltZSgxOTcwLCAxLCAxKSkgLy8gU0VDCisgICAgICAgICAgICAgICAgc3MgPSBzaGlmdCAvLyBTRUMgICAjIHNoaWZ0IHNlY29uZHMKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiBbLTQwICogMzYwMCwgLTIwKjM2MDAsIC0xLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzcyAtIDEsIHNzICsgMjAgKiAzNjAwLCBzcyArIDQwICogMzYwMF06CisgICAgICAgICAgICAgICAgICAgIHMgPSBzMCArIHgKKyAgICAgICAgICAgICAgICAgICAgc2R0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICAgICAgICAgICAgICB0emR0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzLCB0eikucmVwbGFjZSh0emluZm89Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhzZHQsIHR6ZHQpCisgICAgICAgICAgICAgICAgICAgIHMxID0gc2R0LnRpbWVzdGFtcCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgczEpCisgICAgICAgICAgICAgICAgaWYgc3MgPiAwOiAgIyBnYXAKKyAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgbG9jYWwgdGltZSBpbnNpZGUgdGhlIGdhcAorICAgICAgICAgICAgICAgICAgICBkdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAoczApIC0gc2hpZnQgLyAyCisgICAgICAgICAgICAgICAgICAgIHRzMCA9IGR0LnRpbWVzdGFtcCgpCisgICAgICAgICAgICAgICAgICAgIHRzMSA9IGR0LnJlcGxhY2UoZm9sZD0xKS50aW1lc3RhbXAoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRzMCwgczAgKyBzcyAvIDIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHMxLCBzMCAtIHNzIC8gMikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIFRaIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1RaJ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IFRaCisgICAgICAgICAgICBfdGltZS50enNldCgpCisKKworY2xhc3MgWm9uZUluZm9Db21wbGV0ZVRlc3QodW5pdHRlc3QuVGVzdFN1aXRlKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHRlc3RzID0gW10KKyAgICAgICAgaWYgaXNfcmVzb3VyY2VfZW5hYmxlZCgndHpkYXRhJyk6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiBab25lSW5mby56b25lbmFtZXMoKToKKyAgICAgICAgICAgICAgICBUZXN0ID0gdHlwZSgnWm9uZUluZm9UZXN0WyVzXScgJSBuYW1lLCAoWm9uZUluZm9UZXN0LCksIHt9KQorICAgICAgICAgICAgICAgIFRlc3Quem9uZW5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiBkaXIoVGVzdCk6CisgICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZC5zdGFydHN3aXRoKCd0ZXN0XycpOgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3QobWV0aG9kKSkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyh0ZXN0cykKKworIyBJcmFuIGhhZCBhIHN1Yi1taW51dGUgVVRDIG9mZnNldCBiZWZvcmUgMTk0Ni4KK2NsYXNzIElyYW5UZXN0KFpvbmVJbmZvVGVzdCk6CisgICAgem9uZW5hbWUgPSAnQXNpYS9UZWhyYW4nCisKK2RlZiBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIHBhdHRlcm4pOgorICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3QoWm9uZUluZm9Db21wbGV0ZVRlc3QoKSkKKyAgICByZXR1cm4gc3RhbmRhcmRfdGVzdHMKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjJkNGRhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLmQKQEAgLTAsMCArMSw1IEBACitCRUdJTgoreworICAgIHByaW50ZigicHJvYmU6IHN1Y2Nlc3NcbiIpOworICAgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGU3ZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLnN0cApAQCAtMCwwICsxLDUgQEAKK3Byb2JlIGJlZ2luCit7CisgIHByaW50bG4oInByb2JlOiBzdWNjZXNzIikKKyAgZXhpdCAoKQorfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTBlOTM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQKQEAgLTAsMCArMSwzMSBAQAorc2VsZiBpbnQgaW5kZW50OworCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKKy9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KK3sKKyAgICBzZWxmLT50cmFjZSA9IDE7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorL3NlbGYtPnRyYWNlLworeworICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgIHByaW50ZigiJSpzIiwgc2VsZi0+aW5kZW50LCAiIik7IAorICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7CisgICAgc2VsZi0+aW5kZW50Kys7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKy9zZWxmLT50cmFjZS8KK3sKKyAgICBzZWxmLT5pbmRlbnQtLTsKKyAgICBwcmludGYoIiVkXHQlKnM6IiwgdGltZXN0YW1wLCAxNSwgcHJvYmVuYW1lKTsKKyAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOyAKKyAgICBwcmludGYoIiVzOiVzOiVkXG4iLCBiYXNlbmFtZShjb3B5aW5zdHIoYXJnMCkpLCBjb3B5aW5zdHIoYXJnMSksIGFyZzIpOworfQorCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAwOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzg0OWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQuZXhwZWN0ZWQKQEAgLTAsMCArMSwxOCBAQAorIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CitmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjUKKyBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCisgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uLXJldHVybjogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2Z1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjE0CisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAorZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2Z1bmN0aW9uLXJldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2sucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU5ZjNhZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5weQpAQCAtMCwwICsxLDMwIEBACitkZWYgZnVuY3Rpb25fMSgpOgorICAgIGZ1bmN0aW9uXzMoMSwgMikKKworIyBDaGVjayBzdGFja3RyYWNlCitkZWYgZnVuY3Rpb25fMigpOgorICAgIGZ1bmN0aW9uXzEoKQorCisjIENBTExfRlVOQ1RJT05fVkFSCitkZWYgZnVuY3Rpb25fMyhkdW1teSwgZHVtbXkyKToKKyAgICBwYXNzCisKKyMgQ0FMTF9GVU5DVElPTl9LVworZGVmIGZ1bmN0aW9uXzQoKipkdW1teSk6CisgICAgcmV0dXJuIDEKKyAgICByZXR1cm4gMiAgIyB1bnJlYWNoYWJsZQorCisjIENBTExfRlVOQ1RJT05fVkFSX0tXCitkZWYgZnVuY3Rpb25fNShkdW1teSwgZHVtbXkyLCAqKmR1bW15Myk6CisgICAgaWYgRmFsc2U6CisgICAgICAgIHJldHVybiA3CisgICAgcmV0dXJuIDgKKworZGVmIHN0YXJ0KCk6CisgICAgZnVuY3Rpb25fMSgpCisgICAgZnVuY3Rpb25fMigpCisgICAgZnVuY3Rpb25fMygxLCAyKQorICAgIGZ1bmN0aW9uXzQodGVzdD00MikKKyAgICBmdW5jdGlvbl81KCooMSwgMiksICoqeyJ0ZXN0IjogNDJ9KQorCitzdGFydCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDA4MmMyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cApAQCAtMCwwICsxLDQxIEBACitnbG9iYWwgdHJhY2luZworCitmdW5jdGlvbiBiYXNlbmFtZTpzdHJpbmcocGF0aDpzdHJpbmcpCit7CisgICAgbGFzdF90b2tlbiA9IHRva2VuID0gdG9rZW5pemUocGF0aCwgIi8iKTsKKyAgICB3aGlsZSAodG9rZW4gIT0gIiIpIHsKKyAgICAgICAgbGFzdF90b2tlbiA9IHRva2VuOworICAgICAgICB0b2tlbiA9IHRva2VuaXplKCIiLCAiLyIpOworICAgIH0KKyAgICByZXR1cm4gbGFzdF90b2tlbjsKK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDE7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpLCBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQoreworICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgIGxpbmVubyA9ICRhcmczOworCisgICAgaWYgKHRyYWNpbmcpIHsKKyAgICAgICAgcHJpbnRmKCIlZFx0JXM6JXM6JXM6JWRcbiIsIGdldHRpbWVvZmRheV91cygpLCAkJG5hbWUsCisgICAgICAgICAgICAgICBiYXNlbmFtZShmaWxlbmFtZSksIGZ1bmNuYW1lLCBsaW5lbm8pOworICAgIH0KK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fcmV0dXJuIikKK3sKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKworICAgIGlmIChmdW5jbmFtZSA9PSAic3RhcnQiKSB7CisgICAgICAgIHRyYWNpbmcgPSAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyY2YzOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwLmV4cGVjdGVkCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjEzCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxNAorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkOTE0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQKQEAgLTAsMCArMSwxOCBAQAorcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAxOworfQorCitweXRob24kdGFyZ2V0Ojo6Z2Mtc3RhcnQsCitweXRob24kdGFyZ2V0Ojo6Z2MtZG9uZQorL3NlbGYtPnRyYWNlLworeworICAgIHByaW50ZigiJWRcdCVzOiVsZFxuIiwgdGltZXN0YW1wLCBwcm9iZW5hbWUsIGFyZzApOworfQorCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAwOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNWFjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQuZXhwZWN0ZWQKQEAgLTAsMCArMSw4IEBACitnYy1zdGFydDowCitnYy1kb25lOjAKK2djLXN0YXJ0OjEKK2djLWRvbmU6MAorZ2Mtc3RhcnQ6MgorZ2MtZG9uZTowCitnYy1zdGFydDoyCitnYy1kb25lOjEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NGE3ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnB5CkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBnYworCitkZWYgc3RhcnQoKToKKyAgICBnYy5jb2xsZWN0KDApCisgICAgZ2MuY29sbGVjdCgxKQorICAgIGdjLmNvbGxlY3QoMikKKyAgICBsID0gW10KKyAgICBsLmFwcGVuZChsKQorICAgIGRlbCBsCisgICAgZ2MuY29sbGVjdCgyKQorCitnYy5jb2xsZWN0KCkKK3N0YXJ0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyYzZkMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwCkBAIC0wLDAgKzEsMjYgQEAKK2dsb2JhbCB0cmFjaW5nCisKK3Byb2JlIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX2VudHJ5IikKK3sKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKworICAgIGlmIChmdW5jbmFtZSA9PSAic3RhcnQiKSB7CisgICAgICAgIHRyYWNpbmcgPSAxOworICAgIH0KK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJnY19fc3RhcnQiKSwgcHJvY2Vzcy5tYXJrKCJnY19fZG9uZSIpCit7CisgICAgaWYgKHRyYWNpbmcpIHsKKyAgICAgICAgcHJpbnRmKCIlZFx0JXM6JWxkXG4iLCBnZXR0aW1lb2ZkYXlfdXMoKSwgJCRuYW1lLCAkYXJnMSk7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTZlNjIyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAuZXhwZWN0ZWQKQEAgLTAsMCArMSw4IEBACitnY19fc3RhcnQ6MAorZ2NfX2RvbmU6MAorZ2NfX3N0YXJ0OjEKK2djX19kb25lOjAKK2djX19zdGFydDoyCitnY19fZG9uZTowCitnY19fc3RhcnQ6MgorZ2NfX2RvbmU6MQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9pbnN0YW5jZS5weSBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvaW5zdGFuY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE0MjEzNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvaW5zdGFuY2UucHkKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGdjCisKK2NsYXNzIG9sZF9zdHlsZV9jbGFzcygpOgorICAgIHBhc3MKK2NsYXNzIG5ld19zdHlsZV9jbGFzcyhvYmplY3QpOgorICAgIHBhc3MKKworYSA9IG9sZF9zdHlsZV9jbGFzcygpCitkZWwgYQorZ2MuY29sbGVjdCgpCitiID0gbmV3X3N0eWxlX2NsYXNzKCkKK2RlbCBiCitnYy5jb2xsZWN0KCkKKworYSA9IG9sZF9zdHlsZV9jbGFzcygpCitkZWwgb2xkX3N0eWxlX2NsYXNzCitnYy5jb2xsZWN0KCkKK2IgPSBuZXdfc3R5bGVfY2xhc3MoKQorZGVsIG5ld19zdHlsZV9jbGFzcworZ2MuY29sbGVjdCgpCitkZWwgYQorZ2MuY29sbGVjdCgpCitkZWwgYgorZ2MuY29sbGVjdCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjIyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZApAQCAtMCwwICsxLDcgQEAKK3B5dGhvbiR0YXJnZXQ6OjpsaW5lCisvKGNvcHlpbnN0cihhcmcxKT09InRlc3RfbGluZSIpLworeworICAgIHByaW50ZigiJWRcdCVzOiVzOiVzOiVkXG4iLCB0aW1lc3RhbXAsCisgICAgICAgIHByb2JlbmFtZSwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwKKyAgICAgICAgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQuZXhwZWN0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIxNmNlNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kLmV4cGVjdGVkCkBAIC0wLDAgKzEsMjAgQEAKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MgorbGluZTpsaW5lLnB5OnRlc3RfbGluZTozCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjQKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo2CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjcKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6OAorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo5CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEwCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjExCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjQKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo2CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjcKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6OAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo0CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEyCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkzMGZmMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5weQpAQCAtMCwwICsxLDE3IEBACitkZWYgdGVzdF9saW5lKCk6CisgICAgYSA9IDEKKyAgICBwcmludCgnIyBQcmVhbWJsZScsIGEpCisgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgIGEgPSBpCisgICAgICAgIGIgPSBpKzIKKyAgICAgICAgYyA9IGkrMworICAgICAgICBpZiBjIDwgNDoKKyAgICAgICAgICAgIGEgPSBjCisgICAgICAgIGQgPSBhICsgYiArYworICAgICAgICBwcmludCgnIycsIGEsIGIsIGMsIGQpCisgICAgYSA9IDEKKyAgICBwcmludCgnIyBFcGlsb2d1ZScsIGEpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X2xpbmUoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weSBiL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkKaW5kZXggZTNmMWFhNS4uOWZiZTA0ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weQorKysgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5CkBAIC05LDcgKzksNyBAQAogIiIiCiAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgaW8KK2ltcG9ydCBmYXVsdGhhbmRsZXIKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbApAQCAtNTAsNiArNTAsMTAgQEAKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1JFQUwsIGNscy5zaWduYWxfZGVsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNpZ25hbF9wZXJpb2QpCiAKKyAgICAgICAgIyBJc3N1ZSAjMjUyNzc6IFVzZSBmYXVsdGhhbmRsZXIgdG8gdHJ5IHRvIGRlYnVnIGEgaGFuZyBvbiBGcmVlQlNECisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigxMCAqIDYwLCBleGl0PVRydWUpCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc3RvcF9hbGFybShjbHMpOgogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgMCwgMCkKQEAgLTU4LDYgKzYyLDggQEAKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgogICAgICAgICBjbHMuc3RvcF9hbGFybSgpCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGNscy5vcmlnX2hhbmRsZXIpCisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKIAogICAgIGRlZiBzdWJwcm9jZXNzKHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICAgY21kX2FyZ3MgPSAoc3lzLmV4ZWN1dGFibGUsICctYycpICsgYXJncwpAQCAtNzcsNiArODMsOSBAQAogICAgICAgICBwcm9jZXNzZXMgPSBbc2VsZi5uZXdfc2xlZXBfcHJvY2VzcygpIGZvciBfIGluIHJhbmdlKG51bSldCiAgICAgICAgIGZvciBfIGluIHJhbmdlKG51bSk6CiAgICAgICAgICAgICB3YWl0X2Z1bmMoKQorICAgICAgICAjIENhbGwgdGhlIFBvcGVuIG1ldGhvZCB0byBhdm9pZCBhIFJlc291cmNlV2FybmluZworICAgICAgICBmb3IgcHJvYyBpbiBwcm9jZXNzZXM6CisgICAgICAgICAgICBwcm9jLndhaXQoKQogCiAgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF93YWl0X211bHRpcGxlKG9zLndhaXQpCkBAIC04OCw2ICs5Nyw4IEBACiAgICAgZGVmIF90ZXN0X3dhaXRfc2luZ2xlKHNlbGYsIHdhaXRfZnVuYyk6CiAgICAgICAgIHByb2MgPSBzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkKICAgICAgICAgd2FpdF9mdW5jKHByb2MucGlkKQorICAgICAgICAjIENhbGwgdGhlIFBvcGVuIG1ldGhvZCB0byBhdm9pZCBhIFJlc291cmNlV2FybmluZworICAgICAgICBwcm9jLndhaXQoKQogCiAgICAgZGVmIHRlc3Rfd2FpdHBpZChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF93YWl0X3NpbmdsZShsYW1iZGEgcGlkOiBvcy53YWl0cGlkKHBpZCwgMCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dCBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CmluZGV4IDA1MTM3NjUuLjczMzNiMmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CisrKyBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CkBAIC0xNCw2ICsxNCw3IEBACiAgICAgICArLS0gQnVmZmVyRXJyb3IKICAgICAgICstLSBFT0ZFcnJvcgogICAgICAgKy0tIEltcG9ydEVycm9yCisgICAgICAgICAgICstLSBNb2R1bGVOb3RGb3VuZEVycm9yCiAgICAgICArLS0gTG9va3VwRXJyb3IKICAgICAgIHwgICAgKy0tIEluZGV4RXJyb3IKICAgICAgIHwgICAgKy0tIEtleUVycm9yCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYTBlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9fX2luaXRfXy5weQpAQCAtMCwwICsxLDUgQEAKKyMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKK2ltcG9ydCBpbXBvcnRsaWIKKworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LmNtZGxpbmUgaW1wb3J0IF9wYXJzZV9hcmdzLCBSRVNPVVJDRV9OQU1FUworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0Lm1haW4gaW1wb3J0IG1haW4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L2NtZGxpbmUucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9jbWRsaW5lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZTJmM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9jbWRsaW5lLnB5CkBAIC0wLDAgKzEsMzQ0IEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworVVNBR0UgPSAiIiJcCitweXRob24gLW0gdGVzdCBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgW3Rlc3RfbmFtZTIgLi4uXV0KK3B5dGhvbiBwYXRoL3RvL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQorIiIiCisKK0RFU0NSSVBUSU9OID0gIiIiXAorUnVuIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzLgorCitJZiBubyBhcmd1bWVudHMgb3Igb3B0aW9ucyBhcmUgcHJvdmlkZWQsIGZpbmRzIGFsbCBmaWxlcyBtYXRjaGluZwordGhlIHBhdHRlcm4gInRlc3RfKiIgaW4gdGhlIExpYi90ZXN0IHN1YmRpcmVjdG9yeSBhbmQgcnVucwordGhlbSBpbiBhbHBoYWJldGljYWwgb3JkZXIgKGJ1dCBzZWUgLU0gYW5kIC11LCBiZWxvdywgZm9yIGV4Y2VwdGlvbnMpLgorCitGb3IgbW9yZSByaWdvcm91cyB0ZXN0aW5nLCBpdCBpcyB1c2VmdWwgdG8gdXNlIHRoZSBmb2xsb3dpbmcKK2NvbW1hbmQgbGluZToKKworcHl0aG9uIC1FIC1XZCAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSAuLi5dCisiIiIKKworRVBJTE9HID0gIiIiXAorQWRkaXRpb25hbCBvcHRpb24gZGV0YWlsczoKKworLXIgcmFuZG9taXplcyB0ZXN0IGV4ZWN1dGlvbiBvcmRlci4gWW91IGNhbiB1c2UgLS1yYW5kc2VlZD1pbnQgdG8gcHJvdmlkZSBhbgoraW50IHNlZWQgdmFsdWUgZm9yIHRoZSByYW5kb21pemVyOyB0aGlzIGlzIHVzZWZ1bCBmb3IgcmVwcm9kdWNpbmcgdHJvdWJsZXNvbWUKK3Rlc3Qgb3JkZXJzLgorCistcyBPbiB0aGUgZmlyc3QgaW52b2NhdGlvbiBvZiByZWdydGVzdCB1c2luZyAtcywgdGhlIGZpcnN0IHRlc3QgZmlsZSBmb3VuZAorb3IgdGhlIGZpcnN0IHRlc3QgZmlsZSBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIHJ1biwgYW5kIHRoZSBuYW1lIG9mCit0aGUgbmV4dCB0ZXN0IGlzIHJlY29yZGVkIGluIGEgZmlsZSBuYW1lZCBweW5leHR0ZXN0LiAgSWYgcnVuIGZyb20gdGhlCitQeXRob24gYnVpbGQgZGlyZWN0b3J5LCBweW5leHR0ZXN0IGlzIGxvY2F0ZWQgaW4gdGhlICdidWlsZCcgc3ViZGlyZWN0b3J5LAorb3RoZXJ3aXNlIGl0IGlzIGxvY2F0ZWQgaW4gdGVtcGZpbGUuZ2V0dGVtcGRpcigpLiAgT24gc3Vic2VxdWVudCBydW5zLAordGhlIHRlc3QgaW4gcHluZXh0dGVzdCBpcyBydW4sIGFuZCB0aGUgbmV4dCB0ZXN0IGlzIHdyaXR0ZW4gdG8gcHluZXh0dGVzdC4KK1doZW4gdGhlIGxhc3QgdGVzdCBoYXMgYmVlbiBydW4sIHB5bmV4dHRlc3QgaXMgZGVsZXRlZC4gIEluIHRoaXMgd2F5IGl0CitpcyBwb3NzaWJsZSB0byBzaW5nbGUgc3RlcCB0aHJvdWdoIHRoZSB0ZXN0IGZpbGVzLiAgVGhpcyBpcyB1c2VmdWwgd2hlbgorZG9pbmcgbWVtb3J5IGFuYWx5c2lzIG9uIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIHdoaWNoIHByb2Nlc3MgdGVuZHMgdG8KK2NvbnN1bWUgdG9vIG1hbnkgcmVzb3VyY2VzIHRvIHJ1biB0aGUgZnVsbCByZWdyZXNzaW9uIHRlc3Qgbm9uLXN0b3AuCisKKy1TIGlzIHVzZWQgdG8gY29udGludWUgcnVubmluZyB0ZXN0cyBhZnRlciBhbiBhYm9ydGVkIHJ1bi4gIEl0IHdpbGwKK21haW50YWluIHRoZSBvcmRlciBhIHN0YW5kYXJkIHJ1biAoaWUsIHRoaXMgYXNzdW1lcyAtciBpcyBub3QgdXNlZCkuCitUaGlzIGlzIHVzZWZ1bCBhZnRlciB0aGUgdGVzdHMgaGF2ZSBwcmVtYXR1cmVseSBzdG9wcGVkIGZvciBzb21lIGV4dGVybmFsCityZWFzb24gYW5kIHlvdSB3YW50IHRvIHN0YXJ0IHJ1bm5pbmcgZnJvbSB3aGVyZSB5b3UgbGVmdCBvZmYgcmF0aGVyCit0aGFuIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZy4KKworLWYgcmVhZHMgdGhlIG5hbWVzIG9mIHRlc3RzIGZyb20gdGhlIGZpbGUgZ2l2ZW4gYXMgZidzIGFyZ3VtZW50LCBvbmUKK29yIG1vcmUgdGVzdCBuYW1lcyBwZXIgbGluZS4gIFdoaXRlc3BhY2UgaXMgaWdub3JlZC4gIEJsYW5rIGxpbmVzIGFuZAorbGluZXMgYmVnaW5uaW5nIHdpdGggJyMnIGFyZSBpZ25vcmVkLiAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IKK3doaXR0bGluZyBkb3duIGZhaWx1cmVzIGludm9sdmluZyBpbnRlcmFjdGlvbnMgYW1vbmcgdGVzdHMuCisKKy1MIGNhdXNlcyB0aGUgbGVha3MoMSkgY29tbWFuZCB0byBiZSBydW4ganVzdCBiZWZvcmUgZXhpdCBpZiBpdCBleGlzdHMuCitsZWFrcygxKSBpcyBhdmFpbGFibGUgb24gTWFjIE9TIFggYW5kIHByZXN1bWFibHkgb24gc29tZSBvdGhlcgorRnJlZUJTRC1kZXJpdmVkIHN5c3RlbXMuCisKKy1SIHJ1bnMgZWFjaCB0ZXN0IHNldmVyYWwgdGltZXMgYW5kIGV4YW1pbmVzIHN5cy5nZXR0b3RhbHJlZmNvdW50KCkgdG8KK3NlZSBpZiB0aGUgdGVzdCBhcHBlYXJzIHRvIGJlIGxlYWtpbmcgcmVmZXJlbmNlcy4gIFRoZSBhcmd1bWVudCBzaG91bGQKK2JlIG9mIHRoZSBmb3JtIHN0YWI6cnVuOmZuYW1lIHdoZXJlICdzdGFiJyBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZQordGVzdCBpcyBydW4gdG8gbGV0IGdldHRvdGFscmVmY291bnQgc2V0dGxlIGRvd24sICdydW4nIGlzIHRoZSBudW1iZXIKK29mIHRpbWVzIGZ1cnRoZXIgaXQgaXMgcnVuIGFuZCAnZm5hbWUnIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRoZQorcmVwb3J0cyBhcmUgd3JpdHRlbiB0by4gIFRoZXNlIHBhcmFtZXRlcnMgYWxsIGhhdmUgZGVmYXVsdHMgKDUsIDQgYW5kCisicmVmbG9nLnR4dCIgcmVzcGVjdGl2ZWx5KSwgYW5kIHRoZSBtaW5pbWFsIGludm9jYXRpb24gaXMgJy1SIDonLgorCistTSBydW5zIHRlc3RzIHRoYXQgcmVxdWlyZSBhbiBleG9yYml0YW50IGFtb3VudCBvZiBtZW1vcnkuIFRoZXNlIHRlc3RzCit0eXBpY2FsbHkgdHJ5IHRvIGFzY2VydGFpbiBjb250YWluZXJzIGtlZXAgd29ya2luZyB3aGVuIGNvbnRhaW5pbmcgbW9yZSB0aGFuCisyIGJpbGxpb24gb2JqZWN0cywgd2hpY2ggb25seSB3b3JrcyBvbiA2NC1iaXQgc3lzdGVtcy4gVGhlcmUgYXJlIGFsc28gc29tZQordGVzdHMgdGhhdCB0cnkgdG8gZXhoYXVzdCB0aGUgYWRkcmVzcyBzcGFjZSBvZiB0aGUgcHJvY2Vzcywgd2hpY2ggb25seSBtYWtlcworc2Vuc2Ugb24gMzItYml0IHN5c3RlbXMgd2l0aCBhdCBsZWFzdCAyR2Igb2YgbWVtb3J5LiBUaGUgcGFzc2VkLWluIG1lbWxpbWl0LAord2hpY2ggaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YgJzIuNUdiJywgZGV0ZXJtaW5lcyBob3dtdWNoIG1lbW9yeSB0aGUKK3Rlc3RzIHdpbGwgbGltaXQgdGhlbXNlbHZlcyB0byAoYnV0IHRoZXkgbWF5IGdvIHNsaWdodGx5IG92ZXIuKSBUaGUgbnVtYmVyCitzaG91bGRuJ3QgYmUgbW9yZSBtZW1vcnkgdGhhbiB0aGUgbWFjaGluZSBoYXMgKGluY2x1ZGluZyBzd2FwIG1lbW9yeSkuIFlvdQorc2hvdWxkIGFsc28ga2VlcCBpbiBtaW5kIHRoYXQgc3dhcCBtZW1vcnkgaXMgZ2VuZXJhbGx5IG11Y2gsIG11Y2ggc2xvd2VyCit0aGFuIFJBTSwgYW5kIHNldHRpbmcgbWVtbGltaXQgdG8gYWxsIGF2YWlsYWJsZSBSQU0gb3IgaGlnaGVyIHdpbGwgaGVhdmlseQordGF4IHRoZSBtYWNoaW5lLiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaXMgbm8gdXNlIHJ1bm5pbmcgdGhlc2UgdGVzdHMgd2l0aCBhCitsaW1pdCBvZiBsZXNzIHRoYW4gMi41R2IsIGFuZCBtYW55IHJlcXVpcmUgbW9yZSB0aGFuIDIwR2IuIFRlc3RzIHRoYXQgZXhwZWN0Cit0byB1c2UgbW9yZSB0aGFuIG1lbWxpbWl0IG1lbW9yeSB3aWxsIGJlIHNraXBwZWQuIFRoZSBiaWctbWVtb3J5IHRlc3RzCitnZW5lcmFsbHkgcnVuIHZlcnksIHZlcnkgbG9uZy4KKworLXUgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzIHRvIHJ1biwKK3N1Y2ggYXMgdGhvc2UgcmVxdWlyaW5nIGxhcmdlIGZpbGUgc3VwcG9ydCBvciBuZXR3b3JrIGNvbm5lY3Rpdml0eS4KK1RoZSBhcmd1bWVudCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHdvcmRzIGluZGljYXRpbmcgdGhlCityZXNvdXJjZXMgdG8gdGVzdC4gIEN1cnJlbnRseSBvbmx5IHRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQ6CisKKyAgICBhbGwgLSAgICAgICBFbmFibGUgYWxsIHNwZWNpYWwgcmVzb3VyY2VzLgorCisgICAgbm9uZSAtICAgICAgRGlzYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMgKHRoaXMgaXMgdGhlIGRlZmF1bHQpLgorCisgICAgYXVkaW8gLSAgICAgVGVzdHMgdGhhdCB1c2UgdGhlIGF1ZGlvIGRldmljZS4gIChUaGVyZSBhcmUga25vd24KKyAgICAgICAgICAgICAgICBjYXNlcyBvZiBicm9rZW4gYXVkaW8gZHJpdmVycyB0aGF0IGNhbiBjcmFzaCBQeXRob24gb3IKKyAgICAgICAgICAgICAgICBldmVuIHRoZSBMaW51eCBrZXJuZWwuKQorCisgICAgY3Vyc2VzIC0gICAgVGVzdHMgdGhhdCB1c2UgY3Vyc2VzIGFuZCB3aWxsIG1vZGlmeSB0aGUgdGVybWluYWwncworICAgICAgICAgICAgICAgIHN0YXRlIGFuZCBvdXRwdXQgbW9kZXMuCisKKyAgICBsYXJnZWZpbGUgLSBJdCBpcyBva2F5IHRvIHJ1biBzb21lIHRlc3QgdGhhdCBtYXkgY3JlYXRlIGh1Z2UKKyAgICAgICAgICAgICAgICBmaWxlcy4gIFRoZXNlIHRlc3RzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIGFuZCBtYXkKKyAgICAgICAgICAgICAgICBjb25zdW1lID4yR0Igb2YgZGlzayBzcGFjZSB0ZW1wb3JhcmlseS4KKworICAgIG5ldHdvcmsgLSAgIEl0IGlzIG9rYXkgdG8gcnVuIHRlc3RzIHRoYXQgdXNlIGV4dGVybmFsIG5ldHdvcmsKKyAgICAgICAgICAgICAgICByZXNvdXJjZSwgZS5nLiB0ZXN0aW5nIFNTTCBzdXBwb3J0IGZvciBzb2NrZXRzLgorCisgICAgZGVjaW1hbCAtICAgVGVzdCB0aGUgZGVjaW1hbCBtb2R1bGUgYWdhaW5zdCBhIGxhcmdlIHN1aXRlIHRoYXQKKyAgICAgICAgICAgICAgICB2ZXJpZmllcyBjb21wbGlhbmNlIHdpdGggc3RhbmRhcmRzLgorCisgICAgY3B1IC0gICAgICAgVXNlZCBmb3IgY2VydGFpbiBDUFUtaGVhdnkgdGVzdHMuCisKKyAgICBzdWJwcm9jZXNzICBSdW4gYWxsIHRlc3RzIGZvciB0aGUgc3VicHJvY2VzcyBtb2R1bGUuCisKKyAgICB1cmxmZXRjaCAtICBJdCBpcyBva2F5IHRvIGRvd25sb2FkIGZpbGVzIHJlcXVpcmVkIG9uIHRlc3RpbmcuCisKKyAgICBndWkgLSAgICAgICBSdW4gdGVzdHMgdGhhdCByZXF1aXJlIGEgcnVubmluZyBHVUkuCisKKyAgICB0emRhdGEgLSAgICBSdW4gdGVzdHMgdGhhdCByZXF1aXJlIHRpbWV6b25lIGRhdGEuCisKK1RvIGVuYWJsZSBhbGwgcmVzb3VyY2VzIGV4Y2VwdCBvbmUsIHVzZSAnLXVhbGwsLTxyZXNvdXJjZT4nLiAgRm9yCitleGFtcGxlLCB0byBydW4gYWxsIHRoZSB0ZXN0cyBleGNlcHQgZm9yIHRoZSBndWkgdGVzdHMsIGdpdmUgdGhlCitvcHRpb24gJy11YWxsLC1ndWknLgorIiIiCisKKworUkVTT1VSQ0VfTkFNRVMgPSAoJ2F1ZGlvJywgJ2N1cnNlcycsICdsYXJnZWZpbGUnLCAnbmV0d29yaycsCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCcsICdjcHUnLCAnc3VicHJvY2VzcycsICd1cmxmZXRjaCcsICdndWknLCAndHpkYXRhJykKKworY2xhc3MgX0FyZ1BhcnNlcihhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcik6CisKKyAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHN1cGVyKCkuZXJyb3IobWVzc2FnZSArICJcblBhc3MgLWggb3IgLS1oZWxwIGZvciBjb21wbGV0ZSBoZWxwLiIpCisKKworZGVmIF9jcmVhdGVfcGFyc2VyKCk6CisgICAgIyBTZXQgcHJvZyB0byBwcmV2ZW50IHRoZSB1bmluZm9ybWF0aXZlICJfX21haW5fXy5weSIgZnJvbSBkaXNwbGF5aW5nIGluCisgICAgIyBlcnJvciBtZXNzYWdlcyB3aGVuIHVzaW5nICJweXRob24gLW0gdGVzdCAuLi4iLgorICAgIHBhcnNlciA9IF9BcmdQYXJzZXIocHJvZz0ncmVncnRlc3QucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U9VVNBR0UsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1ERVNDUklQVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz1FUElMT0csCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRfaGVscD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5SYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIpCisKKyAgICAjIEFyZ3VtZW50cyB3aXRoIHRoaXMgY2xhdXNlIGFkZGVkIHRvIGl0cyBoZWxwIGFyZSBkZXNjcmliZWQgZnVydGhlciBpbgorICAgICMgdGhlIGVwaWxvZydzICJBZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzIiBzZWN0aW9uLgorICAgIG1vcmVfZGV0YWlscyA9ICcgIFNlZSB0aGUgc2VjdGlvbiBhdCBib3R0b20gZm9yIG1vcmUgZGV0YWlscy4nCisKKyAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ0dlbmVyYWwgb3B0aW9ucycpCisgICAgIyBXZSBhZGQgaGVscCBleHBsaWNpdGx5IHRvIGNvbnRyb2wgd2hhdCBhcmd1bWVudCBncm91cCBpdCByZW5kZXJzIHVuZGVyLgorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWgnLCAnLS1oZWxwJywgYWN0aW9uPSdoZWxwJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXRpbWVvdXQnLCBtZXRhdmFyPSdUSU1FT1VUJywgdHlwZT1mbG9hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2R1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0aGFuIFRJTUVPVVQgc2Vjb25kczsgZGlzYWJsZWQgaWYgVElNRU9VVCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBuZWdhdGl2ZSBvciBlcXVhbHMgdG8gemVybycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdhaXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd3YWl0IGZvciB1c2VyIGlucHV0LCBlLmcuLCBhbGxvdyBhIGRlYnVnZ2VyICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gYmUgYXR0YWNoZWQnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1zbGF2ZWFyZ3MnLCBtZXRhdmFyPSdBUkdTJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3RhcnQnLCBtZXRhdmFyPSdTVEFSVCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3RoZSBuYW1lIG9mIHRoZSB0ZXN0IGF0IHdoaWNoIHRvIHN0YXJ0LicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnVmVyYm9zaXR5JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGVzdHMgaW4gdmVyYm9zZSBtb2RlIHdpdGggb3V0cHV0IHRvIHN0ZG91dCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdycsICctLXZlcmJvc2UyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmUtcnVuIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVcnLCAnLS12ZXJib3NlMycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2Rpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbm8gb3V0cHV0IHVubGVzcyBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1vJywgJy0tc2xvd2VzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3ByaW50X3Nsb3cnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCB0aGUgc2xvd2VzdCAxMCB0ZXN0cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IGhlYWRlciB3aXRoIGludGVycHJldGVyIGluZm8nKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTZWxlY3RpbmcgdGVzdHMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yYW5kb21pemUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyYW5kb21pemUgdGVzdCBleGVjdXRpb24gb3JkZXIuJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcmFuZHNlZWQnLCBtZXRhdmFyPSdTRUVEJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmFuZG9tX3NlZWQnLCB0eXBlPWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncGFzcyBhIHJhbmRvbSBzZWVkIHRvIHJlcHJvZHVjZSBhIHByZXZpb3VzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZG9tIHJ1bicpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctZicsICctLWZyb21maWxlJywgbWV0YXZhcj0nRklMRScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlYWQgbmFtZXMgb2YgdGVzdHMgdG8gcnVuIGZyb20gYSBmaWxlLicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy14JywgJy0tZXhjbHVkZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyBhcmUgdGVzdHMgdG8gKmV4Y2x1ZGUqJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2luZ2xlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2luZ2xlIHN0ZXAgdGhyb3VnaCBhIHNldCBvZiB0ZXN0cy4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbScsICctLW1hdGNoJywgbWV0YXZhcj0nUEFUJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWF0Y2hfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdtYXRjaCB0ZXN0IGNhc2VzIGFuZCBtZXRob2RzIHdpdGggZ2xvYiBwYXR0ZXJuIFBBVCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRycsICctLWZhaWxmYXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmFpbCBhcyBzb29uIGFzIGEgdGVzdCBmYWlscyAob25seSB3aXRoIC12IG9yIC1XKScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdScsICctLXVzZScsIG1ldGF2YXI9J1JFUzEsUkVTMiwuLi4nLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J2FwcGVuZCcsIHR5cGU9cmVzb3VyY2VzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBydW4uJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1NJywgJy0tbWVtbGltaXQnLCBtZXRhdmFyPSdMSU1JVCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB2ZXJ5IGxhcmdlIG1lbW9yeS1jb25zdW1pbmcgdGVzdHMuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10ZXN0ZGlyJywgbWV0YXZhcj0nRElSJywKKyAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZXhlY3V0ZSB0ZXN0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGluc3RlYWQgb2YgdGhlIFB5dGhvbiBzdGRsaWIgdGVzdCBzdWl0ZSknKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTcGVjaWFsIHJ1bnMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1maW5kbGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdpZiBHQyBpcyBhdmFpbGFibGUgZGV0ZWN0IHRlc3RzIHRoYXQgbGVhayBtZW1vcnknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUwnLCAnLS1ydW5sZWFrcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgbGVha3MoMSkgY29tbWFuZCBqdXN0IGJlZm9yZSBleGl0LicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1SJywgJy0taHVudHJsZWFrcycsIG1ldGF2YXI9J1JVTkNPVU5UUycsCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9aHVudHJsZWFrcywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VhcmNoIGZvciByZWZlcmVuY2UgbGVha3MgKG5lZWRzIGRlYnVnIGJ1aWxkLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zlcnkgc2xvdykuJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1qJywgJy0tbXVsdGlwcm9jZXNzJywgbWV0YXZhcj0nUFJPQ0VTU0VTJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX21wJywgdHlwZT1pbnQsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biBQUk9DRVNTRVMgcHJvY2Vzc2VzIGF0IG9uY2UnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVQnLCAnLS1jb3ZlcmFnZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3RyYWNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndHVybiBvbiBjb2RlIGNvdmVyYWdlIHRyYWNpbmcgdXNpbmcgdGhlIHRyYWNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kdWxlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1EJywgJy0tY292ZXJkaXInLCBtZXRhdmFyPSdESVInLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXJlbGF0aXZlX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXJlY3Rvcnkgd2hlcmUgY292ZXJhZ2UgZmlsZXMgYXJlIHB1dCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTicsICctLW5vY292ZXJkaXInLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9Tm9uZSwgZGVzdD0nY292ZXJkaXInLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwdXQgY292ZXJhZ2UgZmlsZXMgYWxvbmdzaWRlIG1vZHVsZXMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10aHJlc2hvbGQnLCBtZXRhdmFyPSdUSFJFU0hPTEQnLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY2FsbCBnYy5zZXRfdGhyZXNob2xkKFRIUkVTSE9MRCknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1ub3dpbmRvd3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzdXBwcmVzcyBlcnJvciBtZXNzYWdlIGJveGVzIG9uIFdpbmRvd3MnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUYnLCAnLS1mb3JldmVyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRoZSBzcGVjaWZpZWQgdGVzdHMgaW4gYSBsb29wLCB1bnRpbCBhbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yIGhhcHBlbnMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1saXN0LXRlc3RzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ib25seSB3cml0ZSB0aGUgbmFtZSBvZiB0ZXN0cyB0aGF0IHdpbGwgYmUgcnVuLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbid0IGV4ZWN1dGUgdGhlbSIpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUCcsICctLXBnbycsIGRlc3Q9J3BnbycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2VuYWJsZSBQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24gdHJhaW5pbmcnKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnYXJncycsIG5hcmdzPScqJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCisKKyAgICByZXR1cm4gcGFyc2VyCisKKworZGVmIHJlbGF0aXZlX2ZpbGVuYW1lKHN0cmluZyk6CisgICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQorICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc3RyaW5nKQorCisKK2RlZiBodW50cmxlYWtzKHN0cmluZyk6CisgICAgYXJncyA9IHN0cmluZy5zcGxpdCgnOicpCisgICAgaWYgbGVuKGFyZ3MpIG5vdCBpbiAoMiwgMyk6CisgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKAorICAgICAgICAgICAgJ25lZWRzIDIgb3IgMyBjb2xvbi1zZXBhcmF0ZWQgYXJndW1lbnRzJykKKyAgICBud2FybXVwID0gaW50KGFyZ3NbMF0pIGlmIGFyZ3NbMF0gZWxzZSA1CisgICAgbnRyYWNrZWQgPSBpbnQoYXJnc1sxXSkgaWYgYXJnc1sxXSBlbHNlIDQKKyAgICBmbmFtZSA9IGFyZ3NbMl0gaWYgbGVuKGFyZ3MpID4gMiBhbmQgYXJnc1syXSBlbHNlICdyZWZsb2cudHh0JworICAgIHJldHVybiBud2FybXVwLCBudHJhY2tlZCwgZm5hbWUKKworCitkZWYgcmVzb3VyY2VzX2xpc3Qoc3RyaW5nKToKKyAgICB1ID0gW3gubG93ZXIoKSBmb3IgeCBpbiBzdHJpbmcuc3BsaXQoJywnKV0KKyAgICBmb3IgciBpbiB1OgorICAgICAgICBpZiByID09ICdhbGwnIG9yIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgclswXSA9PSAnLSc6CisgICAgICAgICAgICByID0gclsxOl0KKyAgICAgICAgaWYgciBub3QgaW4gUkVTT1VSQ0VfTkFNRVM6CisgICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcignaW52YWxpZCByZXNvdXJjZTogJyArIHIpCisgICAgcmV0dXJuIHUKKworCitkZWYgX3BhcnNlX2FyZ3MoYXJncywgKiprd2FyZ3MpOgorICAgICMgRGVmYXVsdHMKKyAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSh0ZXN0ZGlyPU5vbmUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsCisgICAgICAgICBleGNsdWRlPUZhbHNlLCBzaW5nbGU9RmFsc2UsIHJhbmRvbWl6ZT1GYWxzZSwgZnJvbWZpbGU9Tm9uZSwKKyAgICAgICAgIGZpbmRsZWFrcz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLCB0cmFjZT1GYWxzZSwgY292ZXJkaXI9J2NvdmVyYWdlJywKKyAgICAgICAgIHJ1bmxlYWtzPUZhbHNlLCBodW50cmxlYWtzPUZhbHNlLCB2ZXJib3NlMj1GYWxzZSwgcHJpbnRfc2xvdz1GYWxzZSwKKyAgICAgICAgIHJhbmRvbV9zZWVkPU5vbmUsIHVzZV9tcD1Ob25lLCB2ZXJib3NlMz1GYWxzZSwgZm9yZXZlcj1GYWxzZSwKKyAgICAgICAgIGhlYWRlcj1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsIHBnbz1GYWxzZSkKKyAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIobnMsIGspOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgdGhpcyBmdW5jdGlvbicgJSBrKQorICAgICAgICBzZXRhdHRyKG5zLCBrLCB2KQorICAgIGlmIG5zLnVzZV9yZXNvdXJjZXMgaXMgTm9uZToKKyAgICAgICAgbnMudXNlX3Jlc291cmNlcyA9IFtdCisKKyAgICBwYXJzZXIgPSBfY3JlYXRlX3BhcnNlcigpCisgICAgcGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1hcmdzLCBuYW1lc3BhY2U9bnMpCisKKyAgICBpZiBucy5zaW5nbGUgYW5kIG5zLmZyb21maWxlOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi1zIGFuZCAtZiBkb24ndCBnbyB0b2dldGhlciEiKQorICAgIGlmIG5zLnVzZV9tcCBhbmQgbnMudHJhY2U6CisgICAgICAgIHBhcnNlci5lcnJvcigiLVQgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCisgICAgaWYgbnMudXNlX21wIGFuZCBucy5maW5kbGVha3M6CisgICAgICAgIHBhcnNlci5lcnJvcigiLWwgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCisgICAgaWYgbnMuZmFpbGZhc3QgYW5kIG5vdCAobnMudmVyYm9zZSBvciBucy52ZXJib3NlMyk6CisgICAgICAgIHBhcnNlci5lcnJvcigiLUcvLS1mYWlsZmFzdCBuZWVkcyBlaXRoZXIgLXYgb3IgLVciKQorICAgIGlmIG5zLnBnbyBhbmQgKG5zLnZlcmJvc2Ugb3IgbnMudmVyYm9zZTIgb3IgbnMudmVyYm9zZTMpOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi0tcGdvLy12IGRvbid0IGdvIHRvZ2V0aGVyISIpCisKKyAgICBpZiBucy5ub3dpbmRvd3M6CisgICAgICAgIHByaW50KCJXYXJuaW5nOiB0aGUgLS1ub3dpbmRvd3MgKC1uKSBvcHRpb24gaXMgZGVwcmVjYXRlZC4gIgorICAgICAgICAgICAgICAiVXNlIC12diB0byBkaXNwbGF5IGFzc2VydGlvbnMgaW4gc3RkZXJyLiIsIGZpbGU9c3lzLnN0ZGVycikKKworICAgIGlmIG5zLnF1aWV0OgorICAgICAgICBucy52ZXJib3NlID0gMAorICAgIGlmIG5zLnRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIG5zLnRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgIG5zLnRpbWVvdXQgPSBOb25lCisgICAgaWYgbnMudXNlX21wIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBucy51c2VfbXAgPD0gMDoKKyAgICAgICAgICAgICMgVXNlIGFsbCBjb3JlcyArIGV4dHJhcyBmb3IgdGVzdHMgdGhhdCBsaWtlIHRvIHNsZWVwCisgICAgICAgICAgICBucy51c2VfbXAgPSAyICsgKG9zLmNwdV9jb3VudCgpIG9yIDEpCisgICAgaWYgbnMudXNlOgorICAgICAgICBmb3IgYSBpbiBucy51c2U6CisgICAgICAgICAgICBmb3IgciBpbiBhOgorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ2FsbCc6CisgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXNbOl0gPSBSRVNPVVJDRV9OQU1FUworICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgICAgICAgICBkZWwgbnMudXNlX3Jlc291cmNlc1s6XQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHJlbW92ZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgclswXSA9PSAnLSc6CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgciA9IHJbMTpdCisgICAgICAgICAgICAgICAgaWYgcmVtb3ZlOgorICAgICAgICAgICAgICAgICAgICBpZiByIGluIG5zLnVzZV9yZXNvdXJjZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgIGVsaWYgciBub3QgaW4gbnMudXNlX3Jlc291cmNlczoKKyAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlcy5hcHBlbmQocikKKyAgICBpZiBucy5yYW5kb21fc2VlZCBpcyBub3QgTm9uZToKKyAgICAgICAgbnMucmFuZG9taXplID0gVHJ1ZQorCisgICAgcmV0dXJuIG5zCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9tYWluLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvbWFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGVmZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvbWFpbi5weQpAQCAtMCwwICsxLDUzMiBAQAoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgbG9jYWxlCitpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IHRpbWUKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5jbWRsaW5lIGltcG9ydCBfcGFyc2VfYXJncworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3QgaW1wb3J0ICgKKyAgICBmaW5kdGVzdHMsIHJ1bnRlc3QsCisgICAgU1REVEVTVFMsIE5PVFRFU1RTLCBQQVNTRUQsIEZBSUxFRCwgRU5WX0NIQU5HRUQsIFNLSVBQRUQsIFJFU09VUkNFX0RFTklFRCwKKyAgICBJTlRFUlJVUFRFRCwgQ0hJTERfRVJST1IsCisgICAgUFJPR1JFU1NfTUlOX1RJTUUsIGZvcm1hdF90ZXN0X3Jlc3VsdCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5zZXR1cCBpbXBvcnQgc2V0dXBfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCBnYworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGdjID0gTm9uZQorCisKKyMgV2hlbiB0ZXN0cyBhcmUgcnVuIGZyb20gdGhlIFB5dGhvbiBidWlsZCBkaXJlY3RvcnksIGl0IGlzIGJlc3QgcHJhY3RpY2UKKyMgdG8ga2VlcCB0aGUgdGVzdCBmaWxlcyBpbiBhIHN1YmZvbGRlci4gIFRoaXMgZWFzZXMgdGhlIGNsZWFudXAgb2YgbGVmdG92ZXIKKyMgZmlsZXMgdXNpbmcgdGhlICJtYWtlIGRpc3RjbGVhbiIgY29tbWFuZC4KK2lmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICBURU1QRElSID0gb3MucGF0aC5qb2luKHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdidWlsZCcpCitlbHNlOgorICAgIFRFTVBESVIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKK1RFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgoVEVNUERJUikKKworCitkZWYgZm9ybWF0X2R1cmF0aW9uKHNlY29uZHMpOgorICAgIGlmIHNlY29uZHMgPCAxLjA6CisgICAgICAgIHJldHVybiAnJS4wZiBtcycgJSAoc2Vjb25kcyAqIDFlMykKKyAgICBpZiBzZWNvbmRzIDwgNjAuMDoKKyAgICAgICAgcmV0dXJuICclLjBmIHNlYycgJSBzZWNvbmRzCisKKyAgICBtaW51dGVzLCBzZWNvbmRzID0gZGl2bW9kKHNlY29uZHMsIDYwLjApCisgICAgcmV0dXJuICclLjBmIG1pbiAlLjBmIHNlYycgJSAobWludXRlcywgc2Vjb25kcykKKworCitjbGFzcyBSZWdydGVzdDoKKyAgICAiIiJFeGVjdXRlIGEgdGVzdCBzdWl0ZS4KKworICAgIFRoaXMgYWxzbyBwYXJzZXMgY29tbWFuZC1saW5lIG9wdGlvbnMgYW5kIG1vZGlmaWVzIGl0cyBiZWhhdmlvcgorICAgIGFjY29yZGluZ2x5LgorCisgICAgdGVzdHMgLS0gYSBsaXN0IG9mIHN0cmluZ3MgY29udGFpbmluZyB0ZXN0IG5hbWVzIChvcHRpb25hbCkKKyAgICB0ZXN0ZGlyIC0tIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gbG9vayBmb3IgdGVzdHMgKG9wdGlvbmFsKQorCisgICAgVXNlcnMgb3RoZXIgdGhhbiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2lsbCBjZXJ0YWlubHkgd2FudCB0bworICAgIHNwZWNpZnkgdGVzdGRpcjsgaWYgaXQncyBvbWl0dGVkLCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlCisgICAgUHl0aG9uIHRlc3Qgc3VpdGUgaXMgc2VhcmNoZWQgZm9yLgorCisgICAgSWYgdGhlIHRlc3RzIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHRoZSB0ZXN0cyBsaXN0ZWQgb24gdGhlCisgICAgY29tbWFuZC1saW5lIHdpbGwgYmUgdXNlZC4gIElmIHRoYXQncyBlbXB0eSwgdG9vLCB0aGVuIGFsbCAqLnB5CisgICAgZmlsZXMgYmVnaW5uaW5nIHdpdGggdGVzdF8gd2lsbCBiZSB1c2VkLgorCisgICAgVGhlIG90aGVyIGRlZmF1bHQgYXJndW1lbnRzICh2ZXJib3NlLCBxdWlldCwgZXhjbHVkZSwKKyAgICBzaW5nbGUsIHJhbmRvbWl6ZSwgZmluZGxlYWtzLCB1c2VfcmVzb3VyY2VzLCB0cmFjZSwgY292ZXJkaXIsCisgICAgcHJpbnRfc2xvdywgYW5kIHJhbmRvbV9zZWVkKSBhbGxvdyBwcm9ncmFtbWVycyBjYWxsaW5nIG1haW4oKQorICAgIGRpcmVjdGx5IHRvIHNldCB0aGUgdmFsdWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgc2V0IGJ5IGZsYWdzCisgICAgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICMgTmFtZXNwYWNlIG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCisgICAgICAgIHNlbGYubnMgPSBOb25lCisKKyAgICAgICAgIyB0ZXN0cworICAgICAgICBzZWxmLnRlc3RzID0gW10KKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IFtdCisKKyAgICAgICAgIyB0ZXN0IHJlc3VsdHMKKyAgICAgICAgc2VsZi5nb29kID0gW10KKyAgICAgICAgc2VsZi5iYWQgPSBbXQorICAgICAgICBzZWxmLnNraXBwZWQgPSBbXQorICAgICAgICBzZWxmLnJlc291cmNlX2RlbmllZHMgPSBbXQorICAgICAgICBzZWxmLmVudmlyb25tZW50X2NoYW5nZWQgPSBbXQorICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKKworICAgICAgICAjIHVzZWQgYnkgLS1zbG93CisgICAgICAgIHNlbGYudGVzdF90aW1lcyA9IFtdCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tY292ZXJhZ2UsIHRyYWNlLlRyYWNlIGluc3RhbmNlCisgICAgICAgIHNlbGYudHJhY2VyID0gTm9uZQorCisgICAgICAgICMgdXNlZCBieSAtLWZpbmRsZWFrcywgc3RvcmUgZm9yIGdjLmdhcmJhZ2UKKyAgICAgICAgc2VsZi5mb3VuZF9nYXJiYWdlID0gW10KKworICAgICAgICAjIHVzZWQgdG8gZGlzcGxheSB0aGUgcHJvZ3Jlc3MgYmFyICJbIDMvMTAwXSIKKyAgICAgICAgc2VsZi5zdGFydF90aW1lID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBzZWxmLnRlc3RfY291bnQgPSAnJworICAgICAgICBzZWxmLnRlc3RfY291bnRfd2lkdGggPSAxCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tc2luZ2xlCisgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfdGVzdCA9IE5vbmUKKyAgICAgICAgc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSA9IE5vbmUKKworICAgIGRlZiBhY2N1bXVsYXRlX3Jlc3VsdChzZWxmLCB0ZXN0LCByZXN1bHQpOgorICAgICAgICBvaywgdGVzdF90aW1lID0gcmVzdWx0CisgICAgICAgIGlmIG9rIG5vdCBpbiAoQ0hJTERfRVJST1IsIElOVEVSUlVQVEVEKToKKyAgICAgICAgICAgIHNlbGYudGVzdF90aW1lcy5hcHBlbmQoKHRlc3RfdGltZSwgdGVzdCkpCisgICAgICAgIGlmIG9rID09IFBBU1NFRDoKKyAgICAgICAgICAgIHNlbGYuZ29vZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBGQUlMRUQ6CisgICAgICAgICAgICBzZWxmLmJhZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBFTlZfQ0hBTkdFRDoKKyAgICAgICAgICAgIHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBTS0lQUEVEOgorICAgICAgICAgICAgc2VsZi5za2lwcGVkLmFwcGVuZCh0ZXN0KQorICAgICAgICBlbGlmIG9rID09IFJFU09VUkNFX0RFTklFRDoKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgICAgIHNlbGYucmVzb3VyY2VfZGVuaWVkcy5hcHBlbmQodGVzdCkKKworICAgIGRlZiBkaXNwbGF5X3Byb2dyZXNzKHNlbGYsIHRlc3RfaW5kZXgsIHRlc3QpOgorICAgICAgICBpZiBzZWxmLm5zLnF1aWV0OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHNlbGYuYmFkIGFuZCBub3Qgc2VsZi5ucy5wZ286CisgICAgICAgICAgICBmbXQgPSAie3RpbWV9IFt7dGVzdF9pbmRleDp7Y291bnRfd2lkdGh9fXt0ZXN0X2NvdW50fS97bmJhZH1dIHt0ZXN0X25hbWV9IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm10ID0gInt0aW1lfSBbe3Rlc3RfaW5kZXg6e2NvdW50X3dpZHRofX17dGVzdF9jb3VudH1dIHt0ZXN0X25hbWV9IgorICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpIC0gc2VsZi5zdGFydF90aW1lCisgICAgICAgIHRlc3RfdGltZSA9IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPWludCh0ZXN0X3RpbWUpKQorICAgICAgICBsaW5lID0gZm10LmZvcm1hdChjb3VudF93aWR0aD1zZWxmLnRlc3RfY291bnRfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5kZXg9dGVzdF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb3VudD1zZWxmLnRlc3RfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5iYWQ9bGVuKHNlbGYuYmFkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lPXRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU9dGVzdF90aW1lKQorICAgICAgICBwcmludChsaW5lLCBmbHVzaD1UcnVlKQorCisgICAgZGVmIHBhcnNlX2FyZ3Moc2VsZiwga3dhcmdzKToKKyAgICAgICAgbnMgPSBfcGFyc2VfYXJncyhzeXMuYXJndlsxOl0sICoqa3dhcmdzKQorCisgICAgICAgIGlmIG5zLnRpbWVvdXQgYW5kIG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBwcmludCgiV2FybmluZzogVGhlIHRpbWVvdXQgb3B0aW9uIHJlcXVpcmVzICIKKyAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQorCisgICAgICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZSBhbmQgZ2MgaXMgTm9uZToKKyAgICAgICAgICAgIHByaW50KCdObyBHQyBhdmFpbGFibGUsIGlnbm9yZSAtLXRocmVzaG9sZC4nLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBucy50aHJlc2hvbGQgPSBOb25lCisKKyAgICAgICAgaWYgbnMuZmluZGxlYWtzOgorICAgICAgICAgICAgaWYgZ2MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgdG8gcmVwb3J0IGdhcmJhZ2UgdGhhdCBpcyBub3QKKyAgICAgICAgICAgICAgICAjIGZyZWVhYmxlIGJ5IHJlZmVyZW5jZSBjb3VudGluZyBhbG9uZS4gIEJ5IGRlZmF1bHQgb25seQorICAgICAgICAgICAgICAgICMgZ2FyYmFnZSB0aGF0IGlzIG5vdCBjb2xsZWN0YWJsZSBieSB0aGUgR0MgaXMgcmVwb3J0ZWQuCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICNnYy5zZXRfZGVidWcoZ2MuREVCVUdfU0FWRUFMTCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoJ05vIEdDIGF2YWlsYWJsZSwgZGlzYWJsaW5nIC0tZmluZGxlYWtzJywKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgbnMuZmluZGxlYWtzID0gRmFsc2UKKworICAgICAgICAjIFN0cmlwIC5weSBleHRlbnNpb25zLgorICAgICAgICByZW1vdmVweShucy5hcmdzKQorCisgICAgICAgIHJldHVybiBucworCisgICAgZGVmIGZpbmRfdGVzdHMoc2VsZiwgdGVzdHMpOgorICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKKworICAgICAgICBpZiBzZWxmLm5zLnNpbmdsZToKKyAgICAgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgJ3B5bmV4dHRlc3QnKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lLCAncicpIGFzIGZwOgorICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3QgPSBmcC5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3RzID0gW25leHRfdGVzdF0KKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBzZWxmLm5zLmZyb21maWxlOgorICAgICAgICAgICAgc2VsZi50ZXN0cyA9IFtdCisgICAgICAgICAgICAjIHJlZ2V4IHRvIG1hdGNoICd0ZXN0X2J1aWx0aW4nIGluIGxpbmU6CisgICAgICAgICAgICAjICcwOjAwOjAwIFsgIDQvNDAwXSB0ZXN0X2J1aWx0aW4gLS0gdGVzdF9kaWN0IHRvb2sgMSBzZWMnCisgICAgICAgICAgICByZWdleCA9IChyJ14oPzpbMC05XSs6WzAtOV0rOlswLTldKyAqKT8nCisgICAgICAgICAgICAgICAgICAgICByJyg/OlxbWzAtOS8gXStcXSAqKT8nCisgICAgICAgICAgICAgICAgICAgICByJyh0ZXN0X1thLXpBLVowLTlfXSspJykKKyAgICAgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyZWdleCkKKyAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc2VsZi5ucy5mcm9tZmlsZSkpIGFzIGZwOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZwOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSByZWdleC5tYXRjaChsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0cy5hcHBlbmQobWF0Y2guZ3JvdXAoMSkpCisKKyAgICAgICAgcmVtb3ZlcHkoc2VsZi50ZXN0cykKKworICAgICAgICBzdGR0ZXN0cyA9IFNURFRFU1RTWzpdCisgICAgICAgIG5vdHRlc3RzID0gTk9UVEVTVFMuY29weSgpCisgICAgICAgIGlmIHNlbGYubnMuZXhjbHVkZToKKyAgICAgICAgICAgIGZvciBhcmcgaW4gc2VsZi5ucy5hcmdzOgorICAgICAgICAgICAgICAgIGlmIGFyZyBpbiBzdGR0ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgc3RkdGVzdHMucmVtb3ZlKGFyZykKKyAgICAgICAgICAgICAgICBub3R0ZXN0cy5hZGQoYXJnKQorICAgICAgICAgICAgc2VsZi5ucy5hcmdzID0gW10KKworICAgICAgICAjIGlmIHRlc3RkaXIgaXMgc2V0LCB0aGVuIHdlIGFyZSBub3QgcnVubmluZyB0aGUgcHl0aG9uIHRlc3RzIHN1aXRlLCBzbworICAgICAgICAjIGRvbid0IGFkZCBkZWZhdWx0IHRlc3RzIHRvIGJlIGV4ZWN1dGVkIG9yIHNraXBwZWQgKHBhc3MgZW1wdHkgdmFsdWVzKQorICAgICAgICBpZiBzZWxmLm5zLnRlc3RkaXI6CisgICAgICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhzZWxmLm5zLnRlc3RkaXIsIGxpc3QoKSwgc2V0KCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhzZWxmLm5zLnRlc3RkaXIsIHN0ZHRlc3RzLCBub3R0ZXN0cykKKworICAgICAgICBpZiBub3Qgc2VsZi5ucy5mcm9tZmlsZToKKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSBzZWxmLnRlc3RzIG9yIHNlbGYubnMuYXJncyBvciBhbGx0ZXN0cworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZCA9IHNlbGYudGVzdHMKKyAgICAgICAgaWYgc2VsZi5ucy5zaW5nbGU6CisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkID0gc2VsZi5zZWxlY3RlZFs6MV0KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwb3MgPSBhbGx0ZXN0cy5pbmRleChzZWxmLnNlbGVjdGVkWzBdKQorICAgICAgICAgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfdGVzdCA9IGFsbHRlc3RzW3BvcyArIDFdCisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBSZW1vdmUgYWxsIHRoZSBzZWxlY3RlZCB0ZXN0cyB0aGF0IHByZWNlZGUgc3RhcnQgaWYgaXQncyBzZXQuCisgICAgICAgIGlmIHNlbGYubnMuc3RhcnQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuc2VsZWN0ZWRbOnNlbGYuc2VsZWN0ZWQuaW5kZXgoc2VsZi5ucy5zdGFydCldCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBzdGFydGluZyB0ZXN0ICglcyksIHVzaW5nIGFsbCB0ZXN0cyIKKyAgICAgICAgICAgICAgICAgICAgICAlIHNlbGYubnMuc3RhcnQsIGZpbGU9c3lzLnN0ZGVycikKKworICAgICAgICBpZiBzZWxmLm5zLnJhbmRvbWl6ZToKKyAgICAgICAgICAgIGlmIHNlbGYubnMucmFuZG9tX3NlZWQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLm5zLnJhbmRvbV9zZWVkID0gcmFuZG9tLnJhbmRyYW5nZSgxMDAwMDAwMCkKKyAgICAgICAgICAgIHJhbmRvbS5zZWVkKHNlbGYubnMucmFuZG9tX3NlZWQpCisgICAgICAgICAgICByYW5kb20uc2h1ZmZsZShzZWxmLnNlbGVjdGVkKQorCisgICAgZGVmIGxpc3RfdGVzdHMoc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIHNlbGYuc2VsZWN0ZWQ6CisgICAgICAgICAgICBwcmludChuYW1lKQorCisgICAgZGVmIHJlcnVuX2ZhaWxlZF90ZXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5ucy52ZXJib3NlID0gVHJ1ZQorICAgICAgICBzZWxmLm5zLmZhaWxmYXN0ID0gRmFsc2UKKyAgICAgICAgc2VsZi5ucy52ZXJib3NlMyA9IEZhbHNlCisgICAgICAgIHNlbGYubnMubWF0Y2hfdGVzdHMgPSBOb25lCisKKyAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZSIpCisgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuYmFkWzpdOgorICAgICAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgdGVzdCwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLm5zLnZlcmJvc2UgPSBUcnVlCisgICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHNlbGYubnMsIHRlc3QpCisgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQworICAgICAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBva1swXSBpbiB7UEFTU0VELCBFTlZfQ0hBTkdFRCwgU0tJUFBFRCwgUkVTT1VSQ0VfREVOSUVEfToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5iYWQucmVtb3ZlKHRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5iYWQpLCAndGVzdCcpLCAiZmFpbGVkIGFnYWluOiIpCisgICAgICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuYmFkKQorCisgICAgZGVmIGRpc3BsYXlfcmVzdWx0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgorICAgICAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgYWZ0ZXIgXkMKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KCJUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuIikKKyAgICAgICAgICAgIGV4ZWN1dGVkID0gc2V0KHNlbGYuZ29vZCkgfCBzZXQoc2VsZi5iYWQpIHwgc2V0KHNlbGYuc2tpcHBlZCkKKyAgICAgICAgICAgIG9taXR0ZWQgPSBzZXQoc2VsZi5zZWxlY3RlZCkgLSBleGVjdXRlZAorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKG9taXR0ZWQpLCAidGVzdCIpLCAib21pdHRlZDoiKQorICAgICAgICAgICAgcHJpbnRsaXN0KG9taXR0ZWQpCisKKyAgICAgICAgIyBJZiBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlIGZvciBQR08gdGhlbiBubyBvbmUgY2FyZXMgYWJvdXQKKyAgICAgICAgIyByZXN1bHRzLgorICAgICAgICBpZiBzZWxmLm5zLnBnbzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYuZ29vZCBhbmQgbm90IHNlbGYubnMucXVpZXQ6CisgICAgICAgICAgICBpZiAobm90IHNlbGYuYmFkCisgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLnNraXBwZWQKKyAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuaW50ZXJydXB0ZWQKKyAgICAgICAgICAgICAgICBhbmQgbGVuKHNlbGYuZ29vZCkgPiAxKToKKyAgICAgICAgICAgICAgICBwcmludCgiQWxsIiwgZW5kPScgJykKKyAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihzZWxmLmdvb2QpLCAidGVzdCIpLCAiT0suIikKKworICAgICAgICBpZiBzZWxmLm5zLnByaW50X3Nsb3c6CisgICAgICAgICAgICBzZWxmLnRlc3RfdGltZXMuc29ydChyZXZlcnNlPVRydWUpCisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludCgiMTAgc2xvd2VzdCB0ZXN0czoiKQorICAgICAgICAgICAgZm9yIHRpbWUsIHRlc3QgaW4gc2VsZi50ZXN0X3RpbWVzWzoxMF06CisgICAgICAgICAgICAgICAgcHJpbnQoIi0gJXM6ICVzIiAlICh0ZXN0LCBmb3JtYXRfZHVyYXRpb24odGltZSkpKQorCisgICAgICAgIGlmIHNlbGYuYmFkOgorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKHNlbGYuYmFkKSwgInRlc3QiKSwgImZhaWxlZDoiKQorICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuYmFkKQorCisgICAgICAgIGlmIHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZDoKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KCJ7fSBhbHRlcmVkIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQ6Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICBjb3VudChsZW4oc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkKSwgInRlc3QiKSkpCisgICAgICAgICAgICBwcmludGxpc3Qoc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkKQorCisgICAgICAgIGlmIHNlbGYuc2tpcHBlZCBhbmQgbm90IHNlbGYubnMucXVpZXQ6CisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5za2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IikKKyAgICAgICAgICAgIHByaW50bGlzdChzZWxmLnNraXBwZWQpCisKKyAgICBkZWYgcnVuX3Rlc3RzX3NlcXVlbnRpYWwoc2VsZik6CisgICAgICAgIGlmIHNlbGYubnMudHJhY2U6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2UKKyAgICAgICAgICAgIHNlbGYudHJhY2VyID0gdHJhY2UuVHJhY2UodHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCisKKyAgICAgICAgc2F2ZV9tb2R1bGVzID0gc3lzLm1vZHVsZXMua2V5cygpCisKKyAgICAgICAgcHJpbnQoIlJ1biB0ZXN0cyBzZXF1ZW50aWFsbHkiKQorCisgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBOb25lCisgICAgICAgIGZvciB0ZXN0X2luZGV4LCB0ZXN0IGluIGVudW1lcmF0ZShzZWxmLnRlc3RzLCAxKToKKyAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisKKyAgICAgICAgICAgIHRleHQgPSB0ZXN0CisgICAgICAgICAgICBpZiBwcmV2aW91c190ZXN0OgorICAgICAgICAgICAgICAgIHRleHQgPSAnJXMgLS0gJXMnICUgKHRleHQsIHByZXZpb3VzX3Rlc3QpCisgICAgICAgICAgICBzZWxmLmRpc3BsYXlfcHJvZ3Jlc3ModGVzdF9pbmRleCwgdGV4dCkKKworICAgICAgICAgICAgaWYgc2VsZi50cmFjZXI6CisgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSB0cmFjaW5nIGNvZGUgY292ZXJhZ2UsIHRoZW4gd2UgZG9uJ3QgZXhpdCB3aXRoIHN0YXR1cworICAgICAgICAgICAgICAgICMgaWYgb24gYSBmYWxzZSByZXR1cm4gdmFsdWUgZnJvbSBtYWluLgorICAgICAgICAgICAgICAgIGNtZCA9ICgncmVzdWx0ID0gcnVudGVzdChzZWxmLm5zLCB0ZXN0KTsgJworICAgICAgICAgICAgICAgICAgICAgICAnc2VsZi5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpJykKKyAgICAgICAgICAgICAgICBucyA9IGRpY3QobG9jYWxzKCkpCisgICAgICAgICAgICAgICAgc2VsZi50cmFjZXIucnVuY3R4KGNtZCwgZ2xvYmFscz1nbG9iYWxzKCksIGxvY2Fscz1ucykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBuc1sncmVzdWx0J10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KHNlbGYubnMsIHRlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIChJTlRFUlJVUFRFRCwgTm9uZSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisKKyAgICAgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdCwgcmVzdWx0WzBdKQorICAgICAgICAgICAgdGVzdF90aW1lID0gdGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0X3RpbWUKKyAgICAgICAgICAgIGlmIHRlc3RfdGltZSA+PSBQUk9HUkVTU19NSU5fVElNRToKKyAgICAgICAgICAgICAgICBwcmV2aW91c190ZXN0ID0gIiVzIGluICVzIiAlIChwcmV2aW91c190ZXN0LCBmb3JtYXRfZHVyYXRpb24odGVzdF90aW1lKSkKKyAgICAgICAgICAgIGVsaWYgcmVzdWx0WzBdID09IFBBU1NFRDoKKyAgICAgICAgICAgICAgICAjIGJlIHF1aWV0OiBzYXkgbm90aGluZyBpZiB0aGUgdGVzdCBwYXNzZWQgc2hvcnRseQorICAgICAgICAgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBOb25lCisKKyAgICAgICAgICAgIGlmIHNlbGYubnMuZmluZGxlYWtzOgorICAgICAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgICAgIGlmIGdjLmdhcmJhZ2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiB0ZXN0IGNyZWF0ZWQiLCBsZW4oZ2MuZ2FyYmFnZSksIGVuZD0nICcpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCJ1bmNvbGxlY3RhYmxlIG9iamVjdChzKS4iKQorICAgICAgICAgICAgICAgICAgICAjIG1vdmUgdGhlIHVuY29sbGVjdGFibGUgb2JqZWN0cyBzb21ld2hlcmUgc28gd2UgZG9uJ3Qgc2VlCisgICAgICAgICAgICAgICAgICAgICMgdGhlbSBhZ2FpbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZvdW5kX2dhcmJhZ2UuZXh0ZW5kKGdjLmdhcmJhZ2UpCisgICAgICAgICAgICAgICAgICAgIGRlbCBnYy5nYXJiYWdlWzpdCisKKyAgICAgICAgICAgICMgVW5sb2FkIHRoZSBuZXdseSBpbXBvcnRlZCBtb2R1bGVzIChiZXN0IGVmZm9ydCBmaW5hbGl6YXRpb24pCisgICAgICAgICAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLmtleXMoKToKKyAgICAgICAgICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNhdmVfbW9kdWxlcyBhbmQgbW9kdWxlLnN0YXJ0c3dpdGgoInRlc3QuIik6CisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKG1vZHVsZSkKKworICAgICAgICBpZiBwcmV2aW91c190ZXN0OgorICAgICAgICAgICAgcHJpbnQocHJldmlvdXNfdGVzdCkKKworICAgIGRlZiBfdGVzdF9mb3JldmVyKHNlbGYsIHRlc3RzKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYpOgorICAgICAgICAjIEZvciBhIHBhcnRpYWwgcnVuLCB3ZSBkbyBub3QgbmVlZCB0byBjbHV0dGVyIHRoZSBvdXRwdXQuCisgICAgICAgIGlmIChzZWxmLm5zLnZlcmJvc2UKKyAgICAgICAgICAgIG9yIHNlbGYubnMuaGVhZGVyCisgICAgICAgICAgICBvciBub3QgKHNlbGYubnMucGdvIG9yIHNlbGYubnMucXVpZXQgb3Igc2VsZi5ucy5zaW5nbGUKKyAgICAgICAgICAgICAgICAgICAgb3Igc2VsZi50ZXN0cyBvciBzZWxmLm5zLmFyZ3MpKToKKyAgICAgICAgICAgICMgUHJpbnQgYmFzaWMgcGxhdGZvcm0gaW5mb3JtYXRpb24KKyAgICAgICAgICAgIHByaW50KCI9PSIsIHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLCAqc3lzLnZlcnNpb24uc3BsaXQoKSkKKyAgICAgICAgICAgIHByaW50KCI9PSAgIiwgcGxhdGZvcm0ucGxhdGZvcm0oYWxpYXNlZD1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLWVuZGlhbiIgJSBzeXMuYnl0ZW9yZGVyKQorICAgICAgICAgICAgcHJpbnQoIj09ICAiLCAiaGFzaCBhbGdvcml0aG06Iiwgc3lzLmhhc2hfaW5mby5hbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAiNjRiaXQiIGlmIHN5cy5tYXhzaXplID4gMioqMzIgZWxzZSAiMzJiaXQiKQorICAgICAgICAgICAgcHJpbnQoIj09ICBjd2Q6Iiwgb3MuZ2V0Y3dkKCkpCisgICAgICAgICAgICBwcmludCgiPT0gIGVuY29kaW5nczogbG9jYWxlPSVzLCBGUz0lcyIKKyAgICAgICAgICAgICAgICAgICUgKGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSksCisgICAgICAgICAgICAgICAgICAgICBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQorICAgICAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy5yYW5kb21pemU6CisgICAgICAgICAgICBwcmludCgiVXNpbmcgcmFuZG9tIHNlZWQiLCBzZWxmLm5zLnJhbmRvbV9zZWVkKQorCisgICAgICAgIGlmIHNlbGYubnMuZm9yZXZlcjoKKyAgICAgICAgICAgIHNlbGYudGVzdHMgPSBzZWxmLl90ZXN0X2ZvcmV2ZXIobGlzdChzZWxmLnNlbGVjdGVkKSkKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudCA9ICcnCisgICAgICAgICAgICBzZWxmLnRlc3RfY291bnRfd2lkdGggPSAzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnRlc3RzID0gaXRlcihzZWxmLnNlbGVjdGVkKQorICAgICAgICAgICAgc2VsZi50ZXN0X2NvdW50ID0gJy97fScuZm9ybWF0KGxlbihzZWxmLnNlbGVjdGVkKSkKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudF93aWR0aCA9IGxlbihzZWxmLnRlc3RfY291bnQpIC0gMQorCisgICAgICAgIGlmIHNlbGYubnMudXNlX21wOgorICAgICAgICAgICAgZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3RfbXAgaW1wb3J0IHJ1bl90ZXN0c19tdWx0aXByb2Nlc3MKKyAgICAgICAgICAgIHJ1bl90ZXN0c19tdWx0aXByb2Nlc3Moc2VsZikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucnVuX3Rlc3RzX3NlcXVlbnRpYWwoKQorCisgICAgZGVmIGZpbmFsaXplKHNlbGYpOgorICAgICAgICBpZiBzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lOgorICAgICAgICAgICAgaWYgc2VsZi5uZXh0X3NpbmdsZV90ZXN0OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lLCAndycpIGFzIGZwOgorICAgICAgICAgICAgICAgICAgICBmcC53cml0ZShzZWxmLm5leHRfc2luZ2xlX3Rlc3QgKyAnXG4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSkKKworICAgICAgICBpZiBzZWxmLnRyYWNlcjoKKyAgICAgICAgICAgIHIgPSBzZWxmLnRyYWNlci5yZXN1bHRzKCkKKyAgICAgICAgICAgIHIud3JpdGVfcmVzdWx0cyhzaG93X21pc3Npbmc9VHJ1ZSwgc3VtbWFyeT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyZGlyPXNlbGYubnMuY292ZXJkaXIpCisKKyAgICAgICAgcHJpbnQoKQorICAgICAgICBkdXJhdGlvbiA9IHRpbWUubW9ub3RvbmljKCkgLSBzZWxmLnN0YXJ0X3RpbWUKKyAgICAgICAgcHJpbnQoIlRvdGFsIGR1cmF0aW9uOiAlcyIgJSBmb3JtYXRfZHVyYXRpb24oZHVyYXRpb24pKQorCisgICAgICAgIGlmIHNlbGYuYmFkOgorICAgICAgICAgICAgcmVzdWx0ID0gIkZBSUxVUkUiCisgICAgICAgIGVsaWYgc2VsZi5pbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICJJTlRFUlJVUFRFRCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9ICJTVUNDRVNTIgorICAgICAgICBwcmludCgiVGVzdHMgcmVzdWx0OiAlcyIgJSByZXN1bHQpCisKKyAgICAgICAgaWYgc2VsZi5ucy5ydW5sZWFrczoKKyAgICAgICAgICAgIG9zLnN5c3RlbSgibGVha3MgJWQiICUgb3MuZ2V0cGlkKCkpCisKKyAgICBkZWYgbWFpbihzZWxmLCB0ZXN0cz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGdsb2JhbCBURU1QRElSCisKKyAgICAgICAgaWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLm1rZGlyKFRFTVBESVIpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIERlZmluZSBhIHdyaXRhYmxlIHRlbXAgZGlyIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGN3ZCB3aGlsZSBydW5uaW5nCisgICAgICAgICMgdGhlIHRlc3RzLiBUaGUgbmFtZSBvZiB0aGUgZGlyIGluY2x1ZGVzIHRoZSBwaWQgdG8gYWxsb3cgcGFyYWxsZWwKKyAgICAgICAgIyB0ZXN0aW5nIChzZWUgdGhlIC1qIG9wdGlvbikuCisgICAgICAgIHRlc3RfY3dkID0gJ3Rlc3RfcHl0aG9uX3t9Jy5mb3JtYXQob3MuZ2V0cGlkKCkpCisgICAgICAgIHRlc3RfY3dkID0gb3MucGF0aC5qb2luKFRFTVBESVIsIHRlc3RfY3dkKQorCisgICAgICAgICMgUnVuIHRoZSB0ZXN0cyBpbiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIENXRCB0byBhCisgICAgICAgICMgdGVtcG9yYXJ5IGFuZCB3cml0YWJsZSBkaXJlY3RvcnkuICBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgb3IKKyAgICAgICAgIyBjaGFuZ2UgdGhlIENXRCwgdGhlIG9yaWdpbmFsIENXRCB3aWxsIGJlIHVzZWQuICBUaGUgb3JpZ2luYWwgQ1dEIGlzCisgICAgICAgICMgYXZhaWxhYmxlIGZyb20gc3VwcG9ydC5TQVZFRENXRC4KKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKHRlc3RfY3dkLCBxdWlldD1UcnVlKToKKyAgICAgICAgICAgIHNlbGYuX21haW4odGVzdHMsIGt3YXJncykKKworICAgIGRlZiBfbWFpbihzZWxmLCB0ZXN0cywga3dhcmdzKToKKyAgICAgICAgc2VsZi5ucyA9IHNlbGYucGFyc2VfYXJncyhrd2FyZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy5zbGF2ZWFyZ3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmcm9tIHRlc3QubGlicmVncnRlc3QucnVudGVzdF9tcCBpbXBvcnQgcnVuX3Rlc3RzX3NsYXZlCisgICAgICAgICAgICBydW5fdGVzdHNfc2xhdmUoc2VsZi5ucy5zbGF2ZWFyZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy53YWl0OgorICAgICAgICAgICAgaW5wdXQoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4iKQorCisgICAgICAgIHN1cHBvcnQuUEdPID0gc2VsZi5ucy5wZ28KKworICAgICAgICBzZXR1cF90ZXN0cyhzZWxmLm5zKQorCisgICAgICAgIHNlbGYuZmluZF90ZXN0cyh0ZXN0cykKKworICAgICAgICBpZiBzZWxmLm5zLmxpc3RfdGVzdHM6CisgICAgICAgICAgICBzZWxmLmxpc3RfdGVzdHMoKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgICAgICBzZWxmLnJ1bl90ZXN0cygpCisgICAgICAgIHNlbGYuZGlzcGxheV9yZXN1bHQoKQorCisgICAgICAgIGlmIHNlbGYubnMudmVyYm9zZTIgYW5kIHNlbGYuYmFkOgorICAgICAgICAgICAgc2VsZi5yZXJ1bl9mYWlsZWRfdGVzdHMoKQorCisgICAgICAgIHNlbGYuZmluYWxpemUoKQorICAgICAgICBzeXMuZXhpdChsZW4oc2VsZi5iYWQpID4gMCBvciBzZWxmLmludGVycnVwdGVkKQorCisKK2RlZiByZW1vdmVweShuYW1lcyk6CisgICAgaWYgbm90IG5hbWVzOgorICAgICAgICByZXR1cm4KKyAgICBmb3IgaWR4LCBuYW1lIGluIGVudW1lcmF0ZShuYW1lcyk6CisgICAgICAgIGJhc2VuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIGV4dCA9PSAnLnB5JzoKKyAgICAgICAgICAgIG5hbWVzW2lkeF0gPSBiYXNlbmFtZQorCisKK2RlZiBjb3VudChuLCB3b3JkKToKKyAgICBpZiBuID09IDE6CisgICAgICAgIHJldHVybiAiJWQgJXMiICUgKG4sIHdvcmQpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICIlZCAlc3MiICUgKG4sIHdvcmQpCisKKworZGVmIHByaW50bGlzdCh4LCB3aWR0aD03MCwgaW5kZW50PTQpOgorICAgICIiIlByaW50IHRoZSBlbGVtZW50cyBvZiBpdGVyYWJsZSB4IHRvIHN0ZG91dC4KKworICAgIE9wdGlvbmFsIGFyZyB3aWR0aCAoZGVmYXVsdCA3MCkgaXMgdGhlIG1heGltdW0gbGluZSBsZW5ndGguCisgICAgT3B0aW9uYWwgYXJnIGluZGVudCAoZGVmYXVsdCA0KSBpcyB0aGUgbnVtYmVyIG9mIGJsYW5rcyB3aXRoIHdoaWNoIHRvCisgICAgYmVnaW4gZWFjaCBsaW5lLgorICAgICIiIgorCisgICAgYmxhbmtzID0gJyAnICogaW5kZW50CisgICAgIyBQcmludCB0aGUgc29ydGVkIGxpc3Q6ICd4JyBtYXkgYmUgYSAnLS1yYW5kb20nIGxpc3Qgb3IgYSBzZXQoKQorICAgIHByaW50KHRleHR3cmFwLmZpbGwoJyAnLmpvaW4oc3RyKGVsdCkgZm9yIGVsdCBpbiBzb3J0ZWQoeCkpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxfaW5kZW50PWJsYW5rcywgc3Vic2VxdWVudF9pbmRlbnQ9YmxhbmtzKSkKKworCitkZWYgbWFpbih0ZXN0cz1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiUnVuIHRoZSBQeXRob24gc3VpdGUuIiIiCisgICAgUmVncnRlc3QoKS5tYWluKHRlc3RzPXRlc3RzLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3JlZmxlYWsucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9yZWZsZWFrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZGM0OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9yZWZsZWFrLnB5CkBAIC0wLDAgKzEsMjAyIEBACitpbXBvcnQgZXJybm8KK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgd2FybmluZ3MKK2Zyb20gaW5zcGVjdCBpbXBvcnQgaXNhYnN0cmFjdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKwordHJ5OgorICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQorZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICBNQVhGRCA9IDI1NgorCisKK2RlZiBmZF9jb3VudCgpOgorICAgICIiIkNvdW50IHRoZSBudW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzIiIiCisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdmcmVlYnNkJykpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoIi9wcm9jL3NlbGYvZmQiKQorICAgICAgICAgICAgcmV0dXJuIGxlbihuYW1lcykKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgY291bnQgPSAwCisgICAgZm9yIGZkIGluIHJhbmdlKE1BWEZEKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBQcmVmZXIgZHVwKCkgb3ZlciBmc3RhdCgpLiBmc3RhdCgpIGNhbiByZXF1aXJlIGlucHV0L291dHB1dAorICAgICAgICAgICAgIyB3aGVyZWFzIGR1cCgpIGRvZXNuJ3QuCisgICAgICAgICAgICBmZDIgPSBvcy5kdXAoZmQpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVCQURGOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcy5jbG9zZShmZDIpCisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgcmV0dXJuIGNvdW50CisKKworZGVmIGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCBpbmRpcmVjdF90ZXN0LCBodW50cmxlYWtzKToKKyAgICAiIiJSdW4gYSB0ZXN0IG11bHRpcGxlIHRpbWVzLCBsb29raW5nIGZvciByZWZlcmVuY2UgbGVha3MuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBGYWxzZSBpZiB0aGUgdGVzdCBkaWRuJ3QgbGVhayByZWZlcmVuY2VzOyBUcnVlIGlmIHdlIGRldGVjdGVkIHJlZmxlYWtzLgorICAgICIiIgorICAgICMgVGhpcyBjb2RlIGlzIGhhY2tpc2ggYW5kIGluZWxlZ2FudCwgYnV0IGl0IHNlZW1zIHRvIGRvIHRoZSBqb2IuCisgICAgaW1wb3J0IGNvcHlyZWcKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCisKKyAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVHJhY2tpbmcgcmVmZXJlbmNlIGxlYWtzIHJlcXVpcmVzIGEgZGVidWcgYnVpbGQgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9mIFB5dGhvbiIpCisKKyAgICAjIFNhdmUgY3VycmVudCB2YWx1ZXMgZm9yIGRhc2hfUl9jbGVhbnVwKCkgdG8gcmVzdG9yZS4KKyAgICBmcyA9IHdhcm5pbmdzLmZpbHRlcnNbOl0KKyAgICBwcyA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICAgcGljID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY29weSgpCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgemlwaW1wb3J0CisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICB6ZGMgPSBOb25lICMgUnVuIHVubW9kaWZpZWQgb24gcGxhdGZvcm1zIHdpdGhvdXQgemlwaW1wb3J0IHN1cHBvcnQKKyAgICBlbHNlOgorICAgICAgICB6ZGMgPSB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY29weSgpCisgICAgYWJjcyA9IHt9CisgICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKKyAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKKyAgICAgICAgICAgIGFiY3Nbb2JqXSA9IG9iai5fYWJjX3JlZ2lzdHJ5LmNvcHkoKQorCisgICAgbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lID0gaHVudHJsZWFrcworICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIGZuYW1lKQorICAgIHJlcGNvdW50ID0gbndhcm11cCArIG50cmFja2VkCisgICAgcmNfZGVsdGFzID0gWzBdICogcmVwY291bnQKKyAgICBhbGxvY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAorICAgIGZkX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50CisKKyAgICBwcmludCgiYmVnaW5uaW5nIiwgcmVwY291bnQsICJyZXBldGl0aW9ucyIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICBwcmludCgoIjEyMzQ1Njc4OTAiKihyZXBjb3VudC8vMTAgKyAxKSlbOnJlcGNvdW50XSwgZmlsZT1zeXMuc3RkZXJyLAorICAgICAgICAgIGZsdXNoPVRydWUpCisgICAgIyBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBtYWtlIHB5Zmxha2VzIHF1aWV0CisgICAgcmNfYmVmb3JlID0gYWxsb2NfYmVmb3JlID0gZmRfYmVmb3JlID0gMAorICAgIGZvciBpIGluIHJhbmdlKHJlcGNvdW50KToKKyAgICAgICAgaW5kaXJlY3RfdGVzdCgpCisgICAgICAgIGFsbG9jX2FmdGVyLCByY19hZnRlciwgZmRfYWZ0ZXIgPSBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJjcykKKyAgICAgICAgcHJpbnQoJy4nLCBlbmQ9JycsIGZsdXNoPVRydWUpCisgICAgICAgIGlmIGkgPj0gbndhcm11cDoKKyAgICAgICAgICAgIHJjX2RlbHRhc1tpXSA9IHJjX2FmdGVyIC0gcmNfYmVmb3JlCisgICAgICAgICAgICBhbGxvY19kZWx0YXNbaV0gPSBhbGxvY19hZnRlciAtIGFsbG9jX2JlZm9yZQorICAgICAgICAgICAgZmRfZGVsdGFzW2ldID0gZmRfYWZ0ZXIgLSBmZF9iZWZvcmUKKyAgICAgICAgYWxsb2NfYmVmb3JlID0gYWxsb2NfYWZ0ZXIKKyAgICAgICAgcmNfYmVmb3JlID0gcmNfYWZ0ZXIKKyAgICAgICAgZmRfYmVmb3JlID0gZmRfYWZ0ZXIKKyAgICBwcmludChmaWxlPXN5cy5zdGRlcnIpCisgICAgIyBUaGVzZSBjaGVja2VycyByZXR1cm4gRmFsc2Ugb24gc3VjY2VzcywgVHJ1ZSBvbiBmYWlsdXJlCisgICAgZGVmIGNoZWNrX3JjX2RlbHRhcyhkZWx0YXMpOgorICAgICAgICByZXR1cm4gYW55KGRlbHRhcykKKyAgICBkZWYgY2hlY2tfYWxsb2NfZGVsdGFzKGRlbHRhcyk6CisgICAgICAgICMgQXQgbGVhc3QgMS8zcmQgb2YgMHMKKyAgICAgICAgaWYgMyAqIGRlbHRhcy5jb3VudCgwKSA8IGxlbihkZWx0YXMpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgIyBOb3RoaW5nIGVsc2UgdGhhbiAxcywgMHMgYW5kIC0xcworICAgICAgICBpZiBub3Qgc2V0KGRlbHRhcykgPD0gezEsMCwtMX06CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBmYWlsZWQgPSBGYWxzZQorICAgIGZvciBkZWx0YXMsIGl0ZW1fbmFtZSwgY2hlY2tlciBpbiBbCisgICAgICAgIChyY19kZWx0YXMsICdyZWZlcmVuY2VzJywgY2hlY2tfcmNfZGVsdGFzKSwKKyAgICAgICAgKGFsbG9jX2RlbHRhcywgJ21lbW9yeSBibG9ja3MnLCBjaGVja19hbGxvY19kZWx0YXMpLAorICAgICAgICAoZmRfZGVsdGFzLCAnZmlsZSBkZXNjcmlwdG9ycycsIGNoZWNrX3JjX2RlbHRhcyldOgorICAgICAgICBpZiBjaGVja2VyKGRlbHRhcyk6CisgICAgICAgICAgICBtc2cgPSAnJXMgbGVha2VkICVzICVzLCBzdW09JXMnICUgKAorICAgICAgICAgICAgICAgIHRlc3QsIGRlbHRhc1tud2FybXVwOl0sIGl0ZW1fbmFtZSwgc3VtKGRlbHRhcykpCisgICAgICAgICAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgImEiKSBhcyByZWZyZXA6CisgICAgICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXJlZnJlcCkKKyAgICAgICAgICAgICAgICByZWZyZXAuZmx1c2goKQorICAgICAgICAgICAgZmFpbGVkID0gVHJ1ZQorICAgIHJldHVybiBmYWlsZWQKKworCitkZWYgZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywgYWJjcyk6CisgICAgaW1wb3J0IGdjLCBjb3B5cmVnCisgICAgaW1wb3J0IF9zdHJwdGltZSwgbGluZWNhY2hlCisgICAgaW1wb3J0IHVybGxpYi5wYXJzZSwgdXJsbGliLnJlcXVlc3QsIG1pbWV0eXBlcywgZG9jdGVzdAorICAgIGltcG9ydCBzdHJ1Y3QsIGZpbGVjbXAsIGNvbGxlY3Rpb25zLmFiYworICAgIGZyb20gZGlzdHV0aWxzLmRpcl91dGlsIGltcG9ydCBfcGF0aF9jcmVhdGVkCisgICAgZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0CisKKyAgICAjIENsZWFyIHRoZSB3YXJuaW5ncyByZWdpc3RyeSwgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGFnYWluCisgICAgZm9yIG1vZCBpbiBzeXMubW9kdWxlcy52YWx1ZXMoKToKKyAgICAgICAgaWYgaGFzYXR0cihtb2QsICdfX3dhcm5pbmdyZWdpc3RyeV9fJyk6CisgICAgICAgICAgICBkZWwgbW9kLl9fd2FybmluZ3JlZ2lzdHJ5X18KKworICAgICMgUmVzdG9yZSBzb21lIG9yaWdpbmFsIHZhbHVlcy4KKyAgICB3YXJuaW5ncy5maWx0ZXJzWzpdID0gZnMKKyAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNsZWFyKCkKKyAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLnVwZGF0ZShwcykKKyAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCisgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudXBkYXRlKHBpYykKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCB6aXBpbXBvcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MgIyBSdW4gdW5tb2RpZmllZCBvbiBwbGF0Zm9ybXMgd2l0aG91dCB6aXBpbXBvcnQgc3VwcG9ydAorICAgIGVsc2U6CisgICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jbGVhcigpCisgICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS51cGRhdGUoemRjKQorCisgICAgIyBjbGVhciB0eXBlIGNhY2hlCisgICAgc3lzLl9jbGVhcl90eXBlX2NhY2hlKCkKKworICAgICMgQ2xlYXIgQUJDIHJlZ2lzdHJpZXMsIHJlc3RvcmluZyBwcmV2aW91c2x5IHNhdmVkIEFCQyByZWdpc3RyaWVzLgorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CisgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CisgICAgICAgICAgICBvYmouX2FiY19yZWdpc3RyeSA9IGFiY3MuZ2V0KG9iaiwgV2Vha1NldCgpKS5jb3B5KCkKKyAgICAgICAgICAgIG9iai5fYWJjX2NhY2hlLmNsZWFyKCkKKyAgICAgICAgICAgIG9iai5fYWJjX25lZ2F0aXZlX2NhY2hlLmNsZWFyKCkKKworICAgICMgRmx1c2ggc3RhbmRhcmQgb3V0cHV0LCBzbyB0aGF0IGJ1ZmZlcmVkIGRhdGEgaXMgc2VudCB0byB0aGUgT1MgYW5kCisgICAgIyBhc3NvY2lhdGVkIFB5dGhvbiBvYmplY3RzIGFyZSByZWNsYWltZWQuCisgICAgZm9yIHN0cmVhbSBpbiAoc3lzLnN0ZG91dCwgc3lzLnN0ZGVyciwgc3lzLl9fc3Rkb3V0X18sIHN5cy5fX3N0ZGVycl9fKToKKyAgICAgICAgaWYgc3RyZWFtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3RyZWFtLmZsdXNoKCkKKworICAgICMgQ2xlYXIgYXNzb3J0ZWQgbW9kdWxlIGNhY2hlcy4KKyAgICBfcGF0aF9jcmVhdGVkLmNsZWFyKCkKKyAgICByZS5wdXJnZSgpCisgICAgX3N0cnB0aW1lLl9yZWdleF9jYWNoZS5jbGVhcigpCisgICAgdXJsbGliLnBhcnNlLmNsZWFyX2NhY2hlKCkKKyAgICB1cmxsaWIucmVxdWVzdC51cmxjbGVhbnVwKCkKKyAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgbWltZXR5cGVzLl9kZWZhdWx0X21pbWVfdHlwZXMoKQorICAgIGZpbGVjbXAuX2NhY2hlLmNsZWFyKCkKKyAgICBzdHJ1Y3QuX2NsZWFyY2FjaGUoKQorICAgIGRvY3Rlc3QubWFzdGVyID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IGN0eXBlcworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgIyBEb24ndCB3b3JyeSBhYm91dCByZXNldHRpbmcgdGhlIGNhY2hlIGlmIGN0eXBlcyBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBjdHlwZXMuX3Jlc2V0X2NhY2hlKCkKKworICAgICMgQ29sbGVjdCBjeWNsaWMgdHJhc2ggYW5kIHJlYWQgbWVtb3J5IHN0YXRpc3RpY3MgaW1tZWRpYXRlbHkgYWZ0ZXIuCisgICAgZnVuYzEgPSBzeXMuZ2V0YWxsb2NhdGVkYmxvY2tzCisgICAgZnVuYzIgPSBzeXMuZ2V0dG90YWxyZWZjb3VudAorICAgIGdjLmNvbGxlY3QoKQorICAgIHJldHVybiBmdW5jMSgpLCBmdW5jMigpLCBmZF9jb3VudCgpCisKKworZGVmIHdhcm1fY2FjaGVzKCk6CisgICAgIyBjaGFyIGNhY2hlCisgICAgcyA9IGJ5dGVzKHJhbmdlKDI1NikpCisgICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKKyAgICAgICAgc1tpOmkrMV0KKyAgICAjIHVuaWNvZGUgY2FjaGUKKyAgICBbY2hyKGkpIGZvciBpIGluIHJhbmdlKDI1NildCisgICAgIyBpbnQgY2FjaGUKKyAgICBsaXN0KHJhbmdlKC01LCAyNTcpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdC5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4MjU0MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3QucHkKQEAgLTAsMCArMSwyNDQgQEAKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBpbworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5yZWZsZWFrIGltcG9ydCBkYXNoX1IKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5zYXZlX2VudiBpbXBvcnQgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudAorCisKKyMgVGVzdCByZXN1bHQgY29uc3RhbnRzLgorUEFTU0VEID0gMQorRkFJTEVEID0gMAorRU5WX0NIQU5HRUQgPSAtMQorU0tJUFBFRCA9IC0yCitSRVNPVVJDRV9ERU5JRUQgPSAtMworSU5URVJSVVBURUQgPSAtNAorQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCisKK19GT1JNQVRfVEVTVF9SRVNVTFQgPSB7CisgICAgUEFTU0VEOiAnJXMgcGFzc2VkJywKKyAgICBGQUlMRUQ6ICclcyBmYWlsZWQnLAorICAgIEVOVl9DSEFOR0VEOiAnJXMgZmFpbGVkIChlbnYgY2hhbmdlZCknLAorICAgIFNLSVBQRUQ6ICclcyBza2lwcGVkJywKKyAgICBSRVNPVVJDRV9ERU5JRUQ6ICclcyBza2lwcGVkIChyZXNvdXJjZSBkZW5pZWQpJywKKyAgICBJTlRFUlJVUFRFRDogJyVzIGludGVycnVwdGVkJywKKyAgICBDSElMRF9FUlJPUjogJyVzIGNyYXNoZWQnLAorfQorCisjIE1pbmltdW0gZHVyYXRpb24gb2YgYSB0ZXN0IHRvIGRpc3BsYXkgaXRzIGR1cmF0aW9uIG9yIHRvIG1lbnRpb24gdGhhdAorIyB0aGUgdGVzdCBpcyBydW5uaW5nIGluIGJhY2tncm91bmQKK1BST0dSRVNTX01JTl9USU1FID0gMzAuMCAgICMgc2Vjb25kcworCisjIHNtYWxsIHNldCBvZiB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIGJhc2ljYWxseSBmdW5jdGlvbmluZyBpbnRlcnByZXRlcgorIyAoaS5lLiBpZiBhbnkgb2YgdGhlc2UgZmFpbCwgdGhlbiBhbnl0aGluZyBlbHNlIGlzIGxpa2VseSB0byBmb2xsb3cpCitTVERURVNUUyA9IFsKKyAgICAndGVzdF9ncmFtbWFyJywKKyAgICAndGVzdF9vcGNvZGVzJywKKyAgICAndGVzdF9kaWN0JywKKyAgICAndGVzdF9idWlsdGluJywKKyAgICAndGVzdF9leGNlcHRpb25zJywKKyAgICAndGVzdF90eXBlcycsCisgICAgJ3Rlc3RfdW5pdHRlc3QnLAorICAgICd0ZXN0X2RvY3Rlc3QnLAorICAgICd0ZXN0X2RvY3Rlc3QyJywKKyAgICAndGVzdF9zdXBwb3J0JworXQorCisjIHNldCBvZiB0ZXN0cyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYmUgZXhlY3V0ZWQgd2hlbiB1c2luZyByZWdydGVzdAorTk9UVEVTVFMgPSBzZXQoKQorCisKK2RlZiBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCByZXN1bHQpOgorICAgIGZtdCA9IF9GT1JNQVRfVEVTVF9SRVNVTFQuZ2V0KHJlc3VsdCwgIiVzIikKKyAgICByZXR1cm4gZm10ICUgdGVzdF9uYW1lCisKKworZGVmIGZpbmR0ZXN0cyh0ZXN0ZGlyPU5vbmUsIHN0ZHRlc3RzPVNURFRFU1RTLCBub3R0ZXN0cz1OT1RURVNUUyk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXBwbGljYWJsZSB0ZXN0IG1vZHVsZXMuIiIiCisgICAgdGVzdGRpciA9IGZpbmR0ZXN0ZGlyKHRlc3RkaXIpCisgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHRlc3RkaXIpCisgICAgdGVzdHMgPSBbXQorICAgIG90aGVycyA9IHNldChzdGR0ZXN0cykgfCBub3R0ZXN0cworICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICBtb2QsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKKyAgICAgICAgaWYgbW9kWzo1XSA9PSAidGVzdF8iIGFuZCBleHQgaW4gKCIucHkiLCAiIikgYW5kIG1vZCBub3QgaW4gb3RoZXJzOgorICAgICAgICAgICAgdGVzdHMuYXBwZW5kKG1vZCkKKyAgICByZXR1cm4gc3RkdGVzdHMgKyBzb3J0ZWQodGVzdHMpCisKKworZGVmIHJ1bnRlc3QobnMsIHRlc3QpOgorICAgICIiIlJ1biBhIHNpbmdsZSB0ZXN0LgorCisgICAgbnMgLS0gcmVncnRlc3QgbmFtZXNwYWNlIG9mIG9wdGlvbnMKKyAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0CisKKyAgICBSZXR1cm5zIHRoZSB0dXBsZSAocmVzdWx0LCB0ZXN0X3RpbWUpLCB3aGVyZSByZXN1bHQgaXMgb25lIG9mIHRoZQorICAgIGNvbnN0YW50czoKKworICAgICAgICBJTlRFUlJVUFRFRCAgICAgIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gcnVuIHVuZGVyIC1qCisgICAgICAgIFJFU09VUkNFX0RFTklFRCAgdGVzdCBza2lwcGVkIGJlY2F1c2UgcmVzb3VyY2UgZGVuaWVkCisgICAgICAgIFNLSVBQRUQgICAgICAgICAgdGVzdCBza2lwcGVkIGZvciBzb21lIG90aGVyIHJlYXNvbgorICAgICAgICBFTlZfQ0hBTkdFRCAgICAgIHRlc3QgZmFpbGVkIGJlY2F1c2UgaXQgY2hhbmdlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50CisgICAgICAgIEZBSUxFRCAgICAgICAgICAgdGVzdCBmYWlsZWQKKyAgICAgICAgUEFTU0VEICAgICAgICAgICB0ZXN0IHBhc3NlZAorICAgICIiIgorCisgICAgb3V0cHV0X29uX2ZhaWx1cmUgPSBucy52ZXJib3NlMworCisgICAgdXNlX3RpbWVvdXQgPSAobnMudGltZW91dCBpcyBub3QgTm9uZSkKKyAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKG5zLnRpbWVvdXQsIGV4aXQ9VHJ1ZSkKKyAgICB0cnk6CisgICAgICAgIHN1cHBvcnQubWF0Y2hfdGVzdHMgPSBucy5tYXRjaF90ZXN0cworICAgICAgICBpZiBucy5mYWlsZmFzdDoKKyAgICAgICAgICAgIHN1cHBvcnQuZmFpbGZhc3QgPSBUcnVlCisgICAgICAgIGlmIG91dHB1dF9vbl9mYWlsdXJlOgorICAgICAgICAgICAgc3VwcG9ydC52ZXJib3NlID0gVHJ1ZQorCisgICAgICAgICAgICAjIFJldXNlIHRoZSBzYW1lIGluc3RhbmNlIHRvIGFsbCBjYWxscyB0byBydW50ZXN0KCkuIFNvbWUKKyAgICAgICAgICAgICMgdGVzdHMga2VlcCBhIHJlZmVyZW5jZSB0byBzeXMuc3Rkb3V0IG9yIHN5cy5zdGRlcnIKKyAgICAgICAgICAgICMgKGVnLiB0ZXN0X2FyZ3BhcnNlKS4KKyAgICAgICAgICAgIGlmIHJ1bnRlc3Quc3RyaW5naW8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICAgICAgcnVudGVzdC5zdHJpbmdpbyA9IHN0cmVhbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBydW50ZXN0LnN0cmluZ2lvCisgICAgICAgICAgICAgICAgc3RyZWFtLnNlZWsoMCkKKyAgICAgICAgICAgICAgICBzdHJlYW0udHJ1bmNhdGUoKQorCisgICAgICAgICAgICBvcmlnX3N0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICAgICAgICAgIG9yaWdfc3RkZXJyID0gc3lzLnN0ZGVycgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzdHJlYW0KKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3RyZWFtCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdF9pbm5lcihucywgdGVzdCwgZGlzcGxheV9mYWlsdXJlPUZhbHNlKQorICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSAhPSBQQVNTRUQ6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLndyaXRlKG91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAgb3JpZ19zdGRlcnIuZmx1c2goKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gb3JpZ19zdGRvdXQKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IG5zLnZlcmJvc2UgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0CisgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKG5zLCB0ZXN0LCBkaXNwbGF5X2ZhaWx1cmU9bm90IG5zLnZlcmJvc2UpCisgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorICAgICAgICBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3QsIG5zLnZlcmJvc2UpCitydW50ZXN0LnN0cmluZ2lvID0gTm9uZQorCisKK2RlZiBydW50ZXN0X2lubmVyKG5zLCB0ZXN0LCBkaXNwbGF5X2ZhaWx1cmU9VHJ1ZSk6CisgICAgc3VwcG9ydC51bmxvYWQodGVzdCkKKworICAgIHRlc3RfdGltZSA9IDAuMAorICAgIHJlZmxlYWsgPSBGYWxzZSAgIyBUcnVlIGlmIHRoZSB0ZXN0IGxlYWtlZCByZWZlcmVuY2VzLgorICAgIHRyeToKKyAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKCd0ZXN0LicpIG9yIG5zLnRlc3RkaXI6CisgICAgICAgICAgICBhYnN0ZXN0ID0gdGVzdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBBbHdheXMgaW1wb3J0IGl0IGZyb20gdGhlIHRlc3QgcGFja2FnZQorICAgICAgICAgICAgYWJzdGVzdCA9ICd0ZXN0LicgKyB0ZXN0CisgICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0LCBucy52ZXJib3NlLCBucy5xdWlldCwgcGdvPW5zLnBnbykgYXMgZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShhYnN0ZXN0KQorICAgICAgICAgICAgIyBJZiB0aGUgdGVzdCBoYXMgYSB0ZXN0X21haW4sIHRoYXQgd2lsbCBydW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAjIHRlc3RzLiAgSWYgbm90LCB1c2Ugbm9ybWFsIHVuaXR0ZXN0IHRlc3QgbG9hZGluZy4KKyAgICAgICAgICAgIHRlc3RfcnVubmVyID0gZ2V0YXR0cih0aGVfbW9kdWxlLCAidGVzdF9tYWluIiwgTm9uZSkKKyAgICAgICAgICAgIGlmIHRlc3RfcnVubmVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVubmVyKCk6CisgICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCisgICAgICAgICAgICAgICAgICAgIGZvciBlcnJvciBpbiBsb2FkZXIuZXJyb3JzOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZXJyb3IsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9hZGVyLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZXJyb3JzIHdoaWxlIGxvYWRpbmcgdGVzdHMiKQorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKKyAgICAgICAgICAgIHRlc3RfcnVubmVyKCkKKyAgICAgICAgICAgIGlmIG5zLmh1bnRybGVha3M6CisgICAgICAgICAgICAgICAgcmVmbGVhayA9IGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCB0ZXN0X3J1bm5lciwgbnMuaHVudHJsZWFrcykKKyAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQorICAgIGV4Y2VwdCBzdXBwb3J0LlJlc291cmNlRGVuaWVkIGFzIG1zZzoKKyAgICAgICAgaWYgbm90IG5zLnF1aWV0IGFuZCBub3QgbnMucGdvOgorICAgICAgICAgICAgcHJpbnQodGVzdCwgInNraXBwZWQgLS0iLCBtc2csIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBSRVNPVVJDRV9ERU5JRUQsIHRlc3RfdGltZQorICAgIGV4Y2VwdCB1bml0dGVzdC5Ta2lwVGVzdCBhcyBtc2c6CisgICAgICAgIGlmIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKKyAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnLCBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gU0tJUFBFRCwgdGVzdF90aW1lCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICByYWlzZQorICAgIGV4Y2VwdCBzdXBwb3J0LlRlc3RGYWlsZWQgYXMgbXNnOgorICAgICAgICBpZiBub3QgbnMucGdvOgorICAgICAgICAgICAgaWYgZGlzcGxheV9mYWlsdXJlOgorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgIGZsdXNoPVRydWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCIsIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCisgICAgZXhjZXB0OgorICAgICAgICBtc2cgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCisgICAgICAgIGlmIG5vdCBucy5wZ286CisgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJjcmFzaGVkIC0tIiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIsCisgICAgICAgICAgICAgICAgICBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKKyAgICBlbHNlOgorICAgICAgICBpZiByZWZsZWFrOgorICAgICAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCisgICAgICAgIGlmIGVudmlyb25tZW50LmNoYW5nZWQ6CisgICAgICAgICAgICByZXR1cm4gRU5WX0NIQU5HRUQsIHRlc3RfdGltZQorICAgICAgICByZXR1cm4gUEFTU0VELCB0ZXN0X3RpbWUKKworCitkZWYgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0bmFtZSwgdmVyYm9zZSk6CisgICAgaW1wb3J0IHNodXRpbAorICAgIGltcG9ydCBzdGF0CisgICAgaW1wb3J0IGdjCisKKyAgICAjIEZpcnN0IGtpbGwgYW55IGRhbmdsaW5nIHJlZmVyZW5jZXMgdG8gb3BlbiBmaWxlcyBldGMuCisgICAgIyBUaGlzIGNhbiBhbHNvIGlzc3VlIHNvbWUgUmVzb3VyY2VXYXJuaW5ncyB3aGljaCB3b3VsZCBvdGhlcndpc2UgZ2V0CisgICAgIyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBmb2xsb3dpbmcgdGVzdCBydW4sIGFuZCBwb3NzaWJseSBwcm9kdWNlIGZhaWx1cmVzLgorICAgIGdjLmNvbGxlY3QoKQorCisgICAgIyBUcnkgdG8gY2xlYW4gdXAganVuayBjb21tb25seSBsZWZ0IGJlaGluZC4gIFdoaWxlIHRlc3RzIHNob3VsZG4ndCBsZWF2ZQorICAgICMgYW55IGZpbGVzIG9yIGRpcmVjdG9yaWVzIGJlaGluZCwgd2hlbiBhIHRlc3QgZmFpbHMgdGhhdCBjYW4gYmUgdGVkaW91cworICAgICMgZm9yIGl0IHRvIGFycmFuZ2UuICBUaGUgY29uc2VxdWVuY2VzIGNhbiBiZSBlc3BlY2lhbGx5IG5hc3R5IG9uIFdpbmRvd3MsCisgICAgIyBzaW5jZSBpZiBhIHRlc3QgbGVhdmVzIGEgZmlsZSBvcGVuLCBpdCBjYW5ub3QgYmUgZGVsZXRlZCBieSBuYW1lICh3aGlsZQorICAgICMgdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCB0aGF0IGhlcmUgZWl0aGVyLCB3ZSBjYW4gZGlzcGxheSB0aGUKKyAgICAjIG5hbWUgb2YgdGhlIG9mZmVuZGluZyB0ZXN0LCB3aGljaCBpcyBhIHJlYWwgaGVscCkuCisgICAgZm9yIG5hbWUgaW4gKHN1cHBvcnQuVEVTVEZOLAorICAgICAgICAgICAgICAgICAiZGJfaG9tZSIsCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5hbWUpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG5hbWUpOgorICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZGlyZWN0b3J5Iiwgc2h1dGlsLnJtdHJlZQorICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZmlsZSIsIG9zLnVubGluaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoIm9zLnBhdGggc2F5cyAlciBleGlzdHMgYnV0IGlzIG5laXRoZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdG9yeSBub3IgZmlsZSIgJSBuYW1lKQorCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgiJXIgbGVmdCBiZWhpbmQgJXMgJXIiICUgKHRlc3RuYW1lLCBraW5kLCBuYW1lKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBpZiB3ZSBoYXZlIGNobW9kLCBmaXggcG9zc2libGUgcGVybWlzc2lvbnMgcHJvYmxlbXMKKyAgICAgICAgICAgICMgdGhhdCBtaWdodCBwcmV2ZW50IGNsZWFudXAKKyAgICAgICAgICAgIGlmIChoYXNhdHRyKG9zLCAnY2htb2QnKSk6CisgICAgICAgICAgICAgICAgb3MuY2htb2QobmFtZSwgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hHIHwgc3RhdC5TX0lSV1hPKQorICAgICAgICAgICAgbnVrZXIobmFtZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBtc2c6CisgICAgICAgICAgICBwcmludCgoIiVyIGxlZnQgYmVoaW5kICVzICVyIGFuZCBpdCBjb3VsZG4ndCBiZSAiCisgICAgICAgICAgICAgICAgInJlbW92ZWQ6ICVzIiAlICh0ZXN0bmFtZSwga2luZCwgbmFtZSwgbXNnKSksIGZpbGU9c3lzLnN0ZGVycikKKworCitkZWYgZmluZHRlc3RkaXIocGF0aD1Ob25lKToKKyAgICByZXR1cm4gcGF0aCBvciBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkgb3Igb3MuY3VyZGlyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0X21wLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdF9tcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjA0YzE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdF9tcC5weQpAQCAtMCwwICsxLDI0NSBAQAoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IHF1ZXVlCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHR5cGVzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcHJpbnQoIk11bHRpcHJvY2VzcyBvcHRpb24gcmVxdWlyZXMgdGhyZWFkIHN1cHBvcnQiKQorICAgIHN5cy5leGl0KDIpCisKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0IGltcG9ydCAoCisgICAgcnVudGVzdCwgSU5URVJSVVBURUQsIENISUxEX0VSUk9SLCBQUk9HUkVTU19NSU5fVElNRSwKKyAgICBmb3JtYXRfdGVzdF9yZXN1bHQpCitmcm9tIHRlc3QubGlicmVncnRlc3Quc2V0dXAgaW1wb3J0IHNldHVwX3Rlc3RzCisKKworIyBEaXNwbGF5IHRoZSBydW5uaW5nIHRlc3RzIGlmIG5vdGhpbmcgaGFwcGVuZWQgbGFzdCBOIHNlY29uZHMKK1BST0dSRVNTX1VQREFURSA9IDMwLjAgICAjIHNlY29uZHMKKworIyBJZiBpbnRlcnJ1cHRlZCwgZGlzcGxheSB0aGUgd2FpdCBwcm9ncmVzcyBldmVyeSBOIHNlY29uZHMKK1dBSVRfUFJPR1JFU1MgPSAyLjAgICAjIHNlY29uZHMKKworCitkZWYgcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0bmFtZSwgbnMpOgorICAgICIiIlJ1biB0aGUgZ2l2ZW4gdGVzdCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCAtLXNsYXZlYXJncy4KKworICAgIG5zIGlzIHRoZSBvcHRpb24gTmFtZXNwYWNlIHBhcnNlZCBmcm9tIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIHJlZ3J0ZXN0CisgICAgaXMgaW52b2tlZCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCB0aGUgLS1zbGF2ZWFyZ3MgYXJndW1lbnQ7IHdoZW4gdGhlCisgICAgc3VicHJvY2VzcyBleGl0cywgaXRzIHJldHVybiBjb2RlLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgcmV0dXJuZWQgYXMgYQorICAgIDMtdHVwbGUuCisgICAgIiIiCisgICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQorCisgICAgbnNfZGljdCA9IHZhcnMobnMpCisgICAgc2xhdmVhcmdzID0gKG5zX2RpY3QsIHRlc3RuYW1lKQorICAgIHNsYXZlYXJncyA9IGpzb24uZHVtcHMoc2xhdmVhcmdzKQorCisgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAqc3VwcG9ydC5hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgJy1YJywgJ2ZhdWx0aGFuZGxlcicsCisgICAgICAgICAgICctbScsICd0ZXN0LnJlZ3J0ZXN0JywKKyAgICAgICAgICAgJy0tc2xhdmVhcmdzJywgc2xhdmVhcmdzXQorICAgIGlmIG5zLnBnbzoKKyAgICAgICAgY21kICs9IFsnLS1wZ28nXQorCisgICAgIyBSdW5uaW5nIHRoZSBjaGlsZCBmcm9tIHRoZSBzYW1lIHdvcmtpbmcgZGlyZWN0b3J5IGFzIHJlZ3J0ZXN0J3Mgb3JpZ2luYWwKKyAgICAjIGludm9jYXRpb24gZW5zdXJlcyB0aGF0IFRFTVBESVIgZm9yIHRoZSBjaGlsZCBpcyB0aGUgc2FtZSB3aGVuCisgICAgIyBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCkgaXMgdHJ1ZS4gU2VlIGlzc3VlIDE1MzAwLgorICAgIHBvcGVuID0gUG9wZW4oY21kLAorICAgICAgICAgICAgICAgICAgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLAorICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCisgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9KG9zLm5hbWUgIT0gJ250JyksCisgICAgICAgICAgICAgICAgICBjd2Q9c3VwcG9ydC5TQVZFRENXRCkKKyAgICB3aXRoIHBvcGVuOgorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKKyAgICAgICAgcmV0Y29kZSA9IHBvcGVuLndhaXQoKQorICAgIHJldHVybiByZXRjb2RlLCBzdGRvdXQsIHN0ZGVycgorCisKK2RlZiBydW5fdGVzdHNfc2xhdmUoc2xhdmVhcmdzKToKKyAgICBuc19kaWN0LCB0ZXN0bmFtZSA9IGpzb24ubG9hZHMoc2xhdmVhcmdzKQorICAgIG5zID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCoqbnNfZGljdCkKKworICAgIHNldHVwX3Rlc3RzKG5zKQorCisgICAgdHJ5OgorICAgICAgICByZXN1bHQgPSBydW50ZXN0KG5zLCB0ZXN0bmFtZSkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHJlc3VsdCA9IElOVEVSUlVQVEVELCAnJworICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgICAgICByZXN1bHQgPSBDSElMRF9FUlJPUiwgc3RyKGUpCisKKyAgICBwcmludCgpICAgIyBGb3JjZSBhIG5ld2xpbmUgKGp1c3QgaW4gY2FzZSkKKyAgICBwcmludChqc29uLmR1bXBzKHJlc3VsdCksIGZsdXNoPVRydWUpCisgICAgc3lzLmV4aXQoMCkKKworCisjIFdlIGRvIG5vdCB1c2UgYSBnZW5lcmF0b3Igc28gbXVsdGlwbGUgdGhyZWFkcyBjYW4gY2FsbCBuZXh0KCkuCitjbGFzcyBNdWx0aXByb2Nlc3NJdGVyYXRvcjoKKworICAgICIiIkEgdGhyZWFkLXNhZmUgaXRlcmF0b3Igb3ZlciB0ZXN0cyBmb3IgbXVsdGlwcm9jZXNzIG1vZGUuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHMpOgorICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmxvY2s6CisgICAgICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oJ3Rlc3RzIGludGVycnVwdGVkJykKKyAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGVzdHMpCisKKworY2xhc3MgTXVsdGlwcm9jZXNzVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwZW5kaW5nLCBvdXRwdXQsIG5zKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYucGVuZGluZyA9IHBlbmRpbmcKKyAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgc2VsZi5ucyA9IG5zCisgICAgICAgIHNlbGYuY3VycmVudF90ZXN0ID0gTm9uZQorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCisKKyAgICBkZWYgX3J1bnRlc3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3QgPSBuZXh0KHNlbGYucGVuZGluZykKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdCA9IHRlc3QKKworICAgICAgICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBydW5fdGVzdF9pbl9zdWJwcm9jZXNzKHRlc3QsIHNlbGYubnMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdCA9IE5vbmUKKworICAgICAgICBzdGRvdXQsIF8sIHJlc3VsdCA9IHN0ZG91dC5zdHJpcCgpLnJwYXJ0aXRpb24oIlxuIikKKyAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgorICAgICAgICAgICAgcmVzdWx0ID0gKENISUxEX0VSUk9SLCAiRXhpdCBjb2RlICVzIiAlIHJldGNvZGUpCisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgc2VsZi5vdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmVzdWx0ID0ganNvbi5sb2FkcyhyZXN1bHQpCisgICAgICAgIHNlbGYub3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdG9wID0gRmFsc2UKKyAgICAgICAgICAgIHdoaWxlIG5vdCBzdG9wOgorICAgICAgICAgICAgICAgIHN0b3AgPSBzZWxmLl9ydW50ZXN0KCkKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgcmFpc2UKKworCitkZWYgcnVuX3Rlc3RzX211bHRpcHJvY2VzcyhyZWdydGVzdCk6CisgICAgb3V0cHV0ID0gcXVldWUuUXVldWUoKQorICAgIHBlbmRpbmcgPSBNdWx0aXByb2Nlc3NJdGVyYXRvcihyZWdydGVzdC50ZXN0cykKKyAgICB0ZXN0X3RpbWVvdXQgPSByZWdydGVzdC5ucy50aW1lb3V0CisgICAgdXNlX3RpbWVvdXQgPSAodGVzdF90aW1lb3V0IGlzIG5vdCBOb25lKQorCisgICAgd29ya2VycyA9IFtNdWx0aXByb2Nlc3NUaHJlYWQocGVuZGluZywgb3V0cHV0LCByZWdydGVzdC5ucykKKyAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHJlZ3J0ZXN0Lm5zLnVzZV9tcCldCisgICAgcHJpbnQoIlJ1biB0ZXN0cyBpbiBwYXJhbGxlbCB1c2luZyAlcyBjaGlsZCBwcm9jZXNzZXMiCisgICAgICAgICAgJSBsZW4od29ya2VycykpCisgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgorICAgICAgICB3b3JrZXIuc3RhcnQoKQorCisgICAgZGVmIGdldF9ydW5uaW5nKHdvcmtlcnMpOgorICAgICAgICBydW5uaW5nID0gW10KKyAgICAgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgorICAgICAgICAgICAgY3VycmVudF90ZXN0ID0gd29ya2VyLmN1cnJlbnRfdGVzdAorICAgICAgICAgICAgaWYgbm90IGN1cnJlbnRfdGVzdDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gd29ya2VyLnN0YXJ0X3RpbWUKKyAgICAgICAgICAgIGlmIGR0ID49IFBST0dSRVNTX01JTl9USU1FOgorICAgICAgICAgICAgICAgIHJ1bm5pbmcuYXBwZW5kKCclcyAoJS4wZiBzZWMpJyAlIChjdXJyZW50X3Rlc3QsIGR0KSkKKyAgICAgICAgcmV0dXJuIHJ1bm5pbmcKKworICAgIGZpbmlzaGVkID0gMAorICAgIHRlc3RfaW5kZXggPSAxCisgICAgZ2V0X3RpbWVvdXQgPSBtYXgoUFJPR1JFU1NfVVBEQVRFLCBQUk9HUkVTU19NSU5fVElNRSkKKyAgICB0cnk6CisgICAgICAgIHdoaWxlIGZpbmlzaGVkIDwgcmVncnRlc3QubnMudXNlX21wOgorICAgICAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKHRlc3RfdGltZW91dCwgZXhpdD1UcnVlKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXRlbSA9IG91dHB1dC5nZXQodGltZW91dD1nZXRfdGltZW91dCkKKyAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKKyAgICAgICAgICAgICAgICBydW5uaW5nID0gZ2V0X3J1bm5pbmcod29ya2VycykKKyAgICAgICAgICAgICAgICBpZiBydW5uaW5nIGFuZCBub3QgcmVncnRlc3QubnMucGdvOgorICAgICAgICAgICAgICAgICAgICBwcmludCgncnVubmluZzogJXMnICUgJywgJy5qb2luKHJ1bm5pbmcpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHRlc3QsIHN0ZG91dCwgc3RkZXJyLCByZXN1bHQgPSBpdGVtCisgICAgICAgICAgICBpZiB0ZXN0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZmluaXNoZWQgKz0gMQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZWdydGVzdC5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisKKyAgICAgICAgICAgICMgRGlzcGxheSBwcm9ncmVzcworICAgICAgICAgICAgb2ssIHRlc3RfdGltZSA9IHJlc3VsdAorICAgICAgICAgICAgdGV4dCA9IGZvcm1hdF90ZXN0X3Jlc3VsdCh0ZXN0LCBvaykKKyAgICAgICAgICAgIGlmIChvayBub3QgaW4gKENISUxEX0VSUk9SLCBJTlRFUlJVUFRFRCkKKyAgICAgICAgICAgICAgICBhbmQgdGVzdF90aW1lID49IFBST0dSRVNTX01JTl9USU1FCisgICAgICAgICAgICAgICAgYW5kIG5vdCByZWdydGVzdC5ucy5wZ28pOgorICAgICAgICAgICAgICAgIHRleHQgKz0gJyAoJS4wZiBzZWMpJyAlIHRlc3RfdGltZQorICAgICAgICAgICAgcnVubmluZyA9IGdldF9ydW5uaW5nKHdvcmtlcnMpCisgICAgICAgICAgICBpZiBydW5uaW5nIGFuZCBub3QgcmVncnRlc3QubnMucGdvOgorICAgICAgICAgICAgICAgIHRleHQgKz0gJyAtLSBydW5uaW5nOiAlcycgJSAnLCAnLmpvaW4ocnVubmluZykKKyAgICAgICAgICAgIHJlZ3J0ZXN0LmRpc3BsYXlfcHJvZ3Jlc3ModGVzdF9pbmRleCwgdGV4dCkKKworICAgICAgICAgICAgIyBDb3B5IHN0ZG91dCBhbmQgc3RkZXJyIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MKKyAgICAgICAgICAgIGlmIHN0ZG91dDoKKyAgICAgICAgICAgICAgICBwcmludChzdGRvdXQsIGZsdXNoPVRydWUpCisgICAgICAgICAgICBpZiBzdGRlcnIgYW5kIG5vdCByZWdydGVzdC5ucy5wZ286CisgICAgICAgICAgICAgICAgcHJpbnQoc3RkZXJyLCBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisKKyAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBJTlRFUlJVUFRFRDoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IENISUxEX0VSUk9SOgorICAgICAgICAgICAgICAgIG1zZyA9ICJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pCisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKG1zZykKKyAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcmVncnRlc3QuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIHBlbmRpbmcuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIHByaW50KCkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorCisgICAgIyBJZiB0ZXN0cyBhcmUgaW50ZXJydXB0ZWQsIHdhaXQgdW50aWwgdGVzdHMgY29tcGxldGUKKyAgICB3YWl0X3N0YXJ0ID0gdGltZS5tb25vdG9uaWMoKQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHJ1bm5pbmcgPSBbd29ya2VyLmN1cnJlbnRfdGVzdCBmb3Igd29ya2VyIGluIHdvcmtlcnNdCisgICAgICAgIHJ1bm5pbmcgPSBsaXN0KGZpbHRlcihib29sLCBydW5uaW5nKSkKKyAgICAgICAgaWYgbm90IHJ1bm5pbmc6CisgICAgICAgICAgICBicmVhaworCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHdhaXRfc3RhcnQKKyAgICAgICAgbGluZSA9ICJXYWl0aW5nIGZvciAlcyAoJXMgdGVzdHMpIiAlICgnLCAnLmpvaW4ocnVubmluZyksIGxlbihydW5uaW5nKSkKKyAgICAgICAgaWYgZHQgPj0gV0FJVF9QUk9HUkVTUzoKKyAgICAgICAgICAgIGxpbmUgPSAiJXMgc2luY2UgJS4wZiBzZWMiICUgKGxpbmUsIGR0KQorICAgICAgICBwcmludChsaW5lKQorICAgICAgICBmb3Igd29ya2VyIGluIHdvcmtlcnM6CisgICAgICAgICAgICB3b3JrZXIuam9pbihXQUlUX1BST0dSRVNTKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2F2ZV9lbnYucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9zYXZlX2Vudi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmFkM2FmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2F2ZV9lbnYucHkKQEAgLTAsMCArMSwyODUgQEAKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGxvY2FsZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHdhcm5pbmdzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nLCBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKKworCisjIFVuaXQgdGVzdHMgYXJlIHN1cHBvc2VkIHRvIGxlYXZlIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgdW5jaGFuZ2VkCisjIG9uY2UgdGhleSBjb21wbGV0ZS4gIEJ1dCBzb21ldGltZXMgdGVzdHMgaGF2ZSBidWdzLCBlc3BlY2lhbGx5IHdoZW4KKyMgdGVzdHMgZmFpbCwgYW5kIHRoZSBjaGFuZ2VzIHRvIGVudmlyb25tZW50IGdvIG9uIHRvIG1lc3MgdXAgb3RoZXIKKyMgdGVzdHMuICBUaGlzIGNhbiBjYXVzZSBpc3N1ZXMgd2l0aCBidWlsZGJvdCBzdGFiaWxpdHksIHNpbmNlIHRlc3RzCisjIGFyZSBydW4gaW4gcmFuZG9tIG9yZGVyIGFuZCBzbyBwcm9ibGVtcyBtYXkgYXBwZWFyIHRvIGNvbWUgYW5kIGdvLgorIyBUaGVyZSBhcmUgYSBmZXcgdGhpbmdzIHdlIGNhbiBzYXZlIGFuZCByZXN0b3JlIHRvIG1pdGlnYXRlIHRoaXMsIGFuZAorIyB0aGUgZm9sbG93aW5nIGNvbnRleHQgbWFuYWdlciBoYW5kbGVzIHRoaXMgdGFzay4KKworY2xhc3Mgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudDoKKyAgICAiIiJTYXZlIGJpdHMgb2YgdGhlIHRlc3QgZW52aXJvbm1lbnQgYW5kIHJlc3RvcmUgdGhlbSBhdCBibG9jayBleGl0LgorCisgICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0bmFtZSwgdmVyYm9zZSwgcXVpZXQpOgorICAgICAgICAgICAgI3N0dWZmCisKKyAgICBVbmxlc3MgcXVpZXQgaXMgVHJ1ZSwgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gc3RkZXJyIGlmIGFueSBvZgorICAgIHRoZSBzYXZlZCBpdGVtcyB3YXMgY2hhbmdlZCBieSB0aGUgdGVzdC4gIFRoZSBhdHRyaWJ1dGUgJ2NoYW5nZWQnCisgICAgaXMgaW5pdGlhbGx5IEZhbHNlLCBidXQgaXMgc2V0IHRvIFRydWUgaWYgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCisKKyAgICBJZiB2ZXJib3NlIGlzIG1vcmUgdGhhbiAxLCB0aGUgYmVmb3JlIGFuZCBhZnRlciBzdGF0ZSBvZiBjaGFuZ2VkCisgICAgaXRlbXMgaXMgYWxzbyBwcmludGVkLgorICAgICIiIgorCisgICAgY2hhbmdlZCA9IEZhbHNlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdG5hbWUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsICosIHBnbz1GYWxzZSk6CisgICAgICAgIHNlbGYudGVzdG5hbWUgPSB0ZXN0bmFtZQorICAgICAgICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCisgICAgICAgIHNlbGYucXVpZXQgPSBxdWlldAorICAgICAgICBzZWxmLnBnbyA9IHBnbworCisgICAgIyBUbyBhZGQgdGhpbmdzIHRvIHNhdmUgYW5kIHJlc3RvcmUsIGFkZCBhIG5hbWUgWFhYIHRvIHRoZSByZXNvdXJjZXMgbGlzdAorICAgICMgYW5kIGFkZCBjb3JyZXNwb25kaW5nIGdldF9YWFgvcmVzdG9yZV9YWFggZnVuY3Rpb25zLiAgZ2V0X1hYWCBzaG91bGQKKyAgICAjIHJldHVybiB0aGUgdmFsdWUgdG8gYmUgc2F2ZWQgYW5kIGNvbXBhcmVkIGFnYWluc3QgYSBzZWNvbmQgY2FsbCB0byB0aGUKKyAgICAjIGdldCBmdW5jdGlvbiB3aGVuIHRlc3QgZXhlY3V0aW9uIGNvbXBsZXRlcy4gIHJlc3RvcmVfWFhYIHNob3VsZCBhY2NlcHQKKyAgICAjIHRoZSBzYXZlZCB2YWx1ZSBhbmQgcmVzdG9yZSB0aGUgcmVzb3VyY2UgdXNpbmcgaXQuICBJdCB3aWxsIGJlIGNhbGxlZCBpZgorICAgICMgYW5kIG9ubHkgaWYgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIGlzIGRldGVjdGVkLgorICAgICMKKyAgICAjIE5vdGU6IFhYWCB3aWxsIGhhdmUgYW55ICcuJyByZXBsYWNlZCB3aXRoICdfJyBjaGFyYWN0ZXJzIHdoZW4gZGV0ZXJtaW5pbmcKKyAgICAjIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBuYW1lcy4KKworICAgIHJlc291cmNlcyA9ICgnc3lzLmFyZ3YnLCAnY3dkJywgJ3N5cy5zdGRpbicsICdzeXMuc3Rkb3V0JywgJ3N5cy5zdGRlcnInLAorICAgICAgICAgICAgICAgICAnb3MuZW52aXJvbicsICdzeXMucGF0aCcsICdzeXMucGF0aF9ob29rcycsICdfX2ltcG9ydF9fJywKKyAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzLmZpbHRlcnMnLCAnYXN5bmNvcmUuc29ja2V0X21hcCcsCisgICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsICdzeXMuZ2V0dHJhY2UnLAorICAgICAgICAgICAgICAgICAnc3lzLndhcm5vcHRpb25zJywKKyAgICAgICAgICAgICAgICAgIyBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpIG1heSByZWxlYXNlIHJlZgorICAgICAgICAgICAgICAgICAjIHRvIGEgdGhyZWFkLCBzbyBjaGVjayBwcm9jZXNzZXMgZmlyc3QuCisgICAgICAgICAgICAgICAgICdtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcnLCAndGhyZWFkaW5nLl9kYW5nbGluZycsCisgICAgICAgICAgICAgICAgICdzeXNjb25maWcuX0NPTkZJR19WQVJTJywgJ3N5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTJywKKyAgICAgICAgICAgICAgICAgJ2ZpbGVzJywgJ2xvY2FsZScsICd3YXJuaW5ncy5zaG93d2FybmluZycsCisgICAgICAgICAgICAgICAgICdzaHV0aWxfYXJjaGl2ZV9mb3JtYXRzJywgJ3NodXRpbF91bnBhY2tfZm9ybWF0cycsCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIGdldF9zeXNfYXJndihzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKHN5cy5hcmd2KSwgc3lzLmFyZ3YsIHN5cy5hcmd2WzpdCisgICAgZGVmIHJlc3RvcmVfc3lzX2FyZ3Yoc2VsZiwgc2F2ZWRfYXJndik6CisgICAgICAgIHN5cy5hcmd2ID0gc2F2ZWRfYXJndlsxXQorICAgICAgICBzeXMuYXJndls6XSA9IHNhdmVkX2FyZ3ZbMl0KKworICAgIGRlZiBnZXRfY3dkKHNlbGYpOgorICAgICAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKKyAgICBkZWYgcmVzdG9yZV9jd2Qoc2VsZiwgc2F2ZWRfY3dkKToKKyAgICAgICAgb3MuY2hkaXIoc2F2ZWRfY3dkKQorCisgICAgZGVmIGdldF9zeXNfc3Rkb3V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZG91dAorICAgIGRlZiByZXN0b3JlX3N5c19zdGRvdXQoc2VsZiwgc2F2ZWRfc3Rkb3V0KToKKyAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVkX3N0ZG91dAorCisgICAgZGVmIGdldF9zeXNfc3RkZXJyKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZGVycgorICAgIGRlZiByZXN0b3JlX3N5c19zdGRlcnIoc2VsZiwgc2F2ZWRfc3RkZXJyKToKKyAgICAgICAgc3lzLnN0ZGVyciA9IHNhdmVkX3N0ZGVycgorCisgICAgZGVmIGdldF9zeXNfc3RkaW4oc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuc3RkaW4KKyAgICBkZWYgcmVzdG9yZV9zeXNfc3RkaW4oc2VsZiwgc2F2ZWRfc3RkaW4pOgorICAgICAgICBzeXMuc3RkaW4gPSBzYXZlZF9zdGRpbgorCisgICAgZGVmIGdldF9vc19lbnZpcm9uKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQob3MuZW52aXJvbiksIG9zLmVudmlyb24sIGRpY3Qob3MuZW52aXJvbikKKyAgICBkZWYgcmVzdG9yZV9vc19lbnZpcm9uKHNlbGYsIHNhdmVkX2Vudmlyb24pOgorICAgICAgICBvcy5lbnZpcm9uID0gc2F2ZWRfZW52aXJvblsxXQorICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKKyAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoc2F2ZWRfZW52aXJvblsyXSkKKworICAgIGRlZiBnZXRfc3lzX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiBpZChzeXMucGF0aCksIHN5cy5wYXRoLCBzeXMucGF0aFs6XQorICAgIGRlZiByZXN0b3JlX3N5c19wYXRoKHNlbGYsIHNhdmVkX3BhdGgpOgorICAgICAgICBzeXMucGF0aCA9IHNhdmVkX3BhdGhbMV0KKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzYXZlZF9wYXRoWzJdCisKKyAgICBkZWYgZ2V0X3N5c19wYXRoX2hvb2tzKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGhfaG9va3MpLCBzeXMucGF0aF9ob29rcywgc3lzLnBhdGhfaG9va3NbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aF9ob29rcyhzZWxmLCBzYXZlZF9ob29rcyk6CisgICAgICAgIHN5cy5wYXRoX2hvb2tzID0gc2F2ZWRfaG9va3NbMV0KKyAgICAgICAgc3lzLnBhdGhfaG9va3NbOl0gPSBzYXZlZF9ob29rc1syXQorCisgICAgZGVmIGdldF9zeXNfZ2V0dHJhY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuZ2V0dHJhY2UoKQorICAgIGRlZiByZXN0b3JlX3N5c19nZXR0cmFjZShzZWxmLCB0cmFjZV9meG4pOgorICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VfZnhuKQorCisgICAgZGVmIGdldF9fX2ltcG9ydF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gYnVpbHRpbnMuX19pbXBvcnRfXworICAgIGRlZiByZXN0b3JlX19faW1wb3J0X18oc2VsZiwgaW1wb3J0Xyk6CisgICAgICAgIGJ1aWx0aW5zLl9faW1wb3J0X18gPSBpbXBvcnRfCisKKyAgICBkZWYgZ2V0X3dhcm5pbmdzX2ZpbHRlcnMoc2VsZik6CisgICAgICAgIHJldHVybiBpZCh3YXJuaW5ncy5maWx0ZXJzKSwgd2FybmluZ3MuZmlsdGVycywgd2FybmluZ3MuZmlsdGVyc1s6XQorICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX2ZpbHRlcnMoc2VsZiwgc2F2ZWRfZmlsdGVycyk6CisgICAgICAgIHdhcm5pbmdzLmZpbHRlcnMgPSBzYXZlZF9maWx0ZXJzWzFdCisgICAgICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBzYXZlZF9maWx0ZXJzWzJdCisKKyAgICBkZWYgZ2V0X2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZik6CisgICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCisgICAgICAgICMgWFhYIE1ha2luZyBhIGNvcHkga2VlcHMgb2JqZWN0cyBhbGl2ZSB1bnRpbCBfX2V4aXRfXyBnZXRzIGNhbGxlZC4KKyAgICAgICAgcmV0dXJuIGFzeW5jb3JlIGFuZCBhc3luY29yZS5zb2NrZXRfbWFwLmNvcHkoKSBvciB7fQorICAgIGRlZiByZXN0b3JlX2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZiwgc2F2ZWRfbWFwKToKKyAgICAgICAgYXN5bmNvcmUgPSBzeXMubW9kdWxlcy5nZXQoJ2FzeW5jb3JlJykKKyAgICAgICAgaWYgYXN5bmNvcmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoaWdub3JlX2FsbD1UcnVlKQorICAgICAgICAgICAgYXN5bmNvcmUuc29ja2V0X21hcC51cGRhdGUoc2F2ZWRfbWFwKQorCisgICAgZGVmIGdldF9zaHV0aWxfYXJjaGl2ZV9mb3JtYXRzKHNlbGYpOgorICAgICAgICAjIHdlIGNvdWxkIGNhbGwgZ2V0X2FyY2hpdmVzX2Zvcm1hdHMoKSBidXQgdGhhdCBvbmx5IHJldHVybnMgdGhlCisgICAgICAgICMgcmVnaXN0cnkga2V5czsgd2Ugd2FudCB0byBjaGVjayB0aGUgdmFsdWVzIHRvbyAodGhlIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgICMgYXJlIHJlZ2lzdGVyZWQpCisgICAgICAgIHJldHVybiBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUywgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTID0gc2F2ZWRbMF0KKyAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY2xlYXIoKQorICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCisKKyAgICBkZWYgZ2V0X3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMsIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfc2h1dGlsX3VucGFja19mb3JtYXRzKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUyA9IHNhdmVkWzBdCisgICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY2xlYXIoKQorICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLnVwZGF0ZShzYXZlZFsxXSkKKworICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlcnMoc2VsZik6CisgICAgICAgICMgX2hhbmRsZXJzIGlzIGEgV2Vha1ZhbHVlRGljdGlvbmFyeQorICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlcnMpLCBsb2dnaW5nLl9oYW5kbGVycywgbG9nZ2luZy5faGFuZGxlcnMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfbG9nZ2luZ19faGFuZGxlcnMoc2VsZiwgc2F2ZWRfaGFuZGxlcnMpOgorICAgICAgICAjIENhbid0IGVhc2lseSByZXZlcnQgdGhlIGxvZ2dpbmcgc3RhdGUKKyAgICAgICAgcGFzcworCisgICAgZGVmIGdldF9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmKToKKyAgICAgICAgIyBfaGFuZGxlckxpc3QgaXMgYSBsaXN0IG9mIHdlYWtyZWZzIHRvIGhhbmRsZXJzCisgICAgICAgIHJldHVybiBpZChsb2dnaW5nLl9oYW5kbGVyTGlzdCksIGxvZ2dpbmcuX2hhbmRsZXJMaXN0LCBsb2dnaW5nLl9oYW5kbGVyTGlzdFs6XQorICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJMaXN0KHNlbGYsIHNhdmVkX2hhbmRsZXJMaXN0KToKKyAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCisgICAgICAgIHBhc3MKKworICAgIGRlZiBnZXRfc3lzX3dhcm5vcHRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLndhcm5vcHRpb25zKSwgc3lzLndhcm5vcHRpb25zLCBzeXMud2Fybm9wdGlvbnNbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfd2Fybm9wdGlvbnMoc2VsZiwgc2F2ZWRfb3B0aW9ucyk6CisgICAgICAgIHN5cy53YXJub3B0aW9ucyA9IHNhdmVkX29wdGlvbnNbMV0KKyAgICAgICAgc3lzLndhcm5vcHRpb25zWzpdID0gc2F2ZWRfb3B0aW9uc1syXQorCisgICAgIyBDb250cm9sbGluZyBkYW5nbGluZyByZWZlcmVuY2VzIHRvIFRocmVhZCBvYmplY3RzIGNhbiBtYWtlIGl0IGVhc2llcgorICAgICMgdG8gdHJhY2sgcmVmZXJlbmNlIGxlYWtzLgorICAgIGRlZiBnZXRfdGhyZWFkaW5nX19kYW5nbGluZyhzZWxmKToKKyAgICAgICAgaWYgbm90IHRocmVhZGluZzoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCisgICAgICAgIHJldHVybiB0aHJlYWRpbmcuX2RhbmdsaW5nLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgorICAgICAgICBpZiBub3QgdGhyZWFkaW5nOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRocmVhZGluZy5fZGFuZ2xpbmcuY2xlYXIoKQorICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKKworICAgICMgU2FtZSBmb3IgUHJvY2VzcyBvYmplY3RzCisgICAgZGVmIGdldF9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZik6CisgICAgICAgIGlmIG5vdCBtdWx0aXByb2Nlc3Npbmc6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIFVuam9pbmVkIHByb2Nlc3Mgb2JqZWN0cyBjYW4gc3Vydml2ZSBhZnRlciBwcm9jZXNzIGV4aXRzCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9jbGVhbnVwKCkKKyAgICAgICAgIyBUaGlzIGNvcGllcyB0aGUgd2Vha3JlZnMgd2l0aG91dCBtYWtpbmcgYW55IHN0cm9uZyByZWZlcmVuY2UKKyAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jb3B5KCkKKyAgICBkZWYgcmVzdG9yZV9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgorICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jbGVhcigpCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCisKKyAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZik6CisgICAgICAgICMgbWFrZSBzdXJlIHRoZSBkaWN0IGlzIGluaXRpYWxpemVkCisgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigncHJlZml4JykKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0NPTkZJR19WQVJTKSwgc3lzY29uZmlnLl9DT05GSUdfVkFSUywKKyAgICAgICAgICAgICAgICBkaWN0KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpKQorICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNhdmVkWzJdKQorCisgICAgZGVmIGdldF9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyksIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLAorICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNvcHkoKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy51cGRhdGUoc2F2ZWRbMl0pCisKKyAgICBkZWYgZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc29ydGVkKGZuICsgKCcvJyBpZiBvcy5wYXRoLmlzZGlyKGZuKSBlbHNlICcnKQorICAgICAgICAgICAgICAgICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKCkpCisgICAgZGVmIHJlc3RvcmVfZmlsZXMoc2VsZiwgc2F2ZWRfdmFsdWUpOgorICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIGlmIGZuIG5vdCBpbiBzYXZlZF92YWx1ZSBhbmQgKGZuICsgJy8nKSBub3QgaW4gc2F2ZWRfdmFsdWU6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6CisgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoZm4pCisgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZm4pOgorICAgICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKGZuKQorCisgICAgX2xjID0gW2dldGF0dHIobG9jYWxlLCBsYykgZm9yIGxjIGluIGRpcihsb2NhbGUpCisgICAgICAgICAgIGlmIGxjLnN0YXJ0c3dpdGgoJ0xDXycpXQorICAgIGRlZiBnZXRfbG9jYWxlKHNlbGYpOgorICAgICAgICBwYWlyaW5ncyA9IFtdCisgICAgICAgIGZvciBsYyBpbiBzZWxmLl9sYzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYWlyaW5ncy5hcHBlbmQoKGxjLCBsb2NhbGUuc2V0bG9jYWxlKGxjLCBOb25lKSkpCisgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIHBhaXJpbmdzCisgICAgZGVmIHJlc3RvcmVfbG9jYWxlKHNlbGYsIHNhdmVkKToKKyAgICAgICAgZm9yIGxjLCBzZXR0aW5nIGluIHNhdmVkOgorICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsYywgc2V0dGluZykKKworICAgIGRlZiBnZXRfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZik6CisgICAgICAgIHJldHVybiB3YXJuaW5ncy5zaG93d2FybmluZworICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYsIGZ4bik6CisgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nID0gZnhuCisKKyAgICBkZWYgcmVzb3VyY2VfaW5mbyhzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5yZXNvdXJjZXM6CisgICAgICAgICAgICBtZXRob2Rfc3VmZml4ID0gbmFtZS5yZXBsYWNlKCcuJywgJ18nKQorICAgICAgICAgICAgZ2V0X25hbWUgPSAnZ2V0XycgKyBtZXRob2Rfc3VmZml4CisgICAgICAgICAgICByZXN0b3JlX25hbWUgPSAncmVzdG9yZV8nICsgbWV0aG9kX3N1ZmZpeAorICAgICAgICAgICAgeWllbGQgbmFtZSwgZ2V0YXR0cihzZWxmLCBnZXRfbmFtZSksIGdldGF0dHIoc2VsZiwgcmVzdG9yZV9uYW1lKQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zYXZlZF92YWx1ZXMgPSBkaWN0KChuYW1lLCBnZXQoKSkgZm9yIG5hbWUsIGdldCwgcmVzdG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCkpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CisgICAgICAgIHNhdmVkX3ZhbHVlcyA9IHNlbGYuc2F2ZWRfdmFsdWVzCisgICAgICAgIGRlbCBzZWxmLnNhdmVkX3ZhbHVlcworICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKSAgIyBTb21lIHJlc291cmNlcyB1c2Ugd2VhayByZWZlcmVuY2VzCisgICAgICAgIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCk6CisgICAgICAgICAgICBjdXJyZW50ID0gZ2V0KCkKKyAgICAgICAgICAgIG9yaWdpbmFsID0gc2F2ZWRfdmFsdWVzLnBvcChuYW1lKQorICAgICAgICAgICAgIyBDaGVjayBmb3IgY2hhbmdlcyB0byB0aGUgcmVzb3VyY2UncyB2YWx1ZQorICAgICAgICAgICAgaWYgY3VycmVudCAhPSBvcmlnaW5hbDoKKyAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmVzdG9yZShvcmlnaW5hbCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5xdWlldCBhbmQgbm90IHNlbGYucGdvOgorICAgICAgICAgICAgICAgICAgICBwcmludChmIldhcm5pbmcgLS0ge25hbWV9IHdhcyBtb2RpZmllZCBieSB7c2VsZi50ZXN0bmFtZX0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZSA+IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludChmIiAgQmVmb3JlOiB7b3JpZ2luYWx9XG4gIEFmdGVyOiAge2N1cnJlbnR9ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2V0dXAucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDI0NTMxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2V0dXAucHkKQEAgLTAsMCArMSwxMjEgQEAKK2ltcG9ydCBhdGV4aXQKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgZ2MKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBnYyA9IE5vbmUKKworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJlZmxlYWsgaW1wb3J0IHdhcm1fY2FjaGVzCisKKworZGVmIHNldHVwX3Rlc3RzKG5zKToKKyAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzIChlLmcuIHNlZ2ZhdWx0KQorICAgIGZhdWx0aGFuZGxlci5lbmFibGUoYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBTSUdBTFJNIG9yIFNJR1VTUjEgc2lnbmFsCisgICAgc2lnbmFscyA9IFtdCisgICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdBTFJNJyk6CisgICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdBTFJNKQorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHVVNSMScpOgorICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHVVNSMSkKKyAgICBmb3Igc2lnbnVtIGluIHNpZ25hbHM6CisgICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWdudW0sIGNoYWluPVRydWUpCisKKyAgICByZXBsYWNlX3N0ZG91dCgpCisgICAgc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCisKKyAgICBpZiBucy50ZXN0ZGlyOgorICAgICAgICAjIFByZXBlbmQgdGVzdCBkaXJlY3RvcnkgdG8gc3lzLnBhdGgsIHNvIHJ1bnRlc3QoKSB3aWxsIGJlIGFibGUKKyAgICAgICAgIyB0byBsb2NhdGUgdGVzdHMKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aChucy50ZXN0ZGlyKSkKKworICAgICMgU29tZSB0aW1lcyBfX3BhdGhfXyBhbmQgX19maWxlX18gYXJlIG5vdCBhYnNvbHV0ZSAoZS5nLiB3aGlsZSBydW5uaW5nIGZyb20KKyAgICAjIExpYi8pIGFuZCwgaWYgd2UgY2hhbmdlIHRoZSBDV0QgdG8gcnVuIHRoZSB0ZXN0cyBpbiBhIHRlbXBvcmFyeSBkaXIsIHNvbWUKKyAgICAjIGltcG9ydHMgbWlnaHQgZmFpbC4gIFRoaXMgYWZmZWN0cyBvbmx5IHRoZSBtb2R1bGVzIGltcG9ydGVkIGJlZm9yZSBvcy5jaGRpcigpLgorICAgICMgVGhlc2UgbW9kdWxlcyBhcmUgc2VhcmNoZWQgZmlyc3QgaW4gc3lzLnBhdGhbMF0gKHNvICcnIC0tIHRoZSBDV0QpIGFuZCBpZgorICAgICMgdGhleSBhcmUgZm91bmQgaW4gdGhlIENXRCB0aGVpciBfX2ZpbGVfXyBhbmQgX19wYXRoX18gd2lsbCBiZSByZWxhdGl2ZSAodGhpcworICAgICMgaGFwcGVucyBiZWZvcmUgdGhlIGNoZGlyKS4gIEFsbCB0aGUgbW9kdWxlcyBpbXBvcnRlZCBhZnRlciB0aGUgY2hkaXIsIGFyZQorICAgICMgbm90IGZvdW5kIGluIHRoZSBDV0QsIGFuZCBzaW5jZSB0aGUgb3RoZXIgcGF0aHMgaW4gc3lzLnBhdGhbMTpdIGFyZSBhYnNvbHV0ZQorICAgICMgKHNpdGUucHkgYWJzb2x1dGl6ZSB0aGVtKSwgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyB3aWxsIGJlIGFic29sdXRlIHRvby4KKyAgICAjIFRoZXJlZm9yZSBpdCBpcyBuZWNlc3NhcnkgdG8gYWJzb2x1dGl6ZSBtYW51YWxseSB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIG9mCisgICAgIyB0aGUgcGFja2FnZXMgdG8gcHJldmVudCBsYXRlciBpbXBvcnRzIHRvIGZhaWwgd2hlbiB0aGUgQ1dEIGlzIGRpZmZlcmVudC4KKyAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLnZhbHVlcygpOgorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICBmb3IgaW5kZXgsIHBhdGggaW4gZW51bWVyYXRlKG1vZHVsZS5fX3BhdGhfXyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fW2luZGV4XSA9IG9zLnBhdGguYWJzcGF0aChwYXRoKQorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6CisgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBvcy5wYXRoLmFic3BhdGgobW9kdWxlLl9fZmlsZV9fKQorCisgICAgIyBNYWNPU1ggKGEuay5hLiBEYXJ3aW4pIGhhcyBhIGRlZmF1bHQgc3RhY2sgc2l6ZSB0aGF0IGlzIHRvbyBzbWFsbAorICAgICMgZm9yIGRlZXBseSByZWN1cnNpdmUgcmVndWxhciBleHByZXNzaW9ucy4gIFdlIHNlZSB0aGlzIGFzIGNyYXNoZXMgaW4KKyAgICAjIHRoZSBQeXRob24gdGVzdCBzdWl0ZSB3aGVuIHJ1bm5pbmcgdGVzdF9yZS5weSBhbmQgdGVzdF9zcmUucHkuICBUaGUKKyAgICAjIGZpeCBpcyB0byBzZXQgdGhlIHN0YWNrIGxpbWl0IHRvIDIwNDguCisgICAgIyBUaGlzIGFwcHJvYWNoIG1heSBhbHNvIGJlIHVzZWZ1bCBmb3Igb3RoZXIgVW5peHkgcGxhdGZvcm1zIHRoYXQKKyAgICAjIHN1ZmZlciBmcm9tIHNtYWxsIGRlZmF1bHQgc3RhY2sgbGltaXRzLgorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHJlc291cmNlCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNvZnQsIGhhcmQgPSByZXNvdXJjZS5nZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLKQorICAgICAgICAgICAgbmV3c29mdCA9IG1pbihoYXJkLCBtYXgoc29mdCwgMTAyNCoyMDQ4KSkKKyAgICAgICAgICAgIHJlc291cmNlLnNldHJsaW1pdChyZXNvdXJjZS5STElNSVRfU1RBQ0ssIChuZXdzb2Z0LCBoYXJkKSkKKworICAgIGlmIG5zLmh1bnRybGVha3M6CisgICAgICAgIHVuaXR0ZXN0LkJhc2VUZXN0U3VpdGUuX2NsZWFudXAgPSBGYWxzZQorCisgICAgICAgICMgQXZvaWQgZmFsc2UgcG9zaXRpdmVzIGR1ZSB0byB2YXJpb3VzIGNhY2hlcworICAgICAgICAjIGZpbGxpbmcgc2xvd2x5IHdpdGggcmFuZG9tIGRhdGE6CisgICAgICAgIHdhcm1fY2FjaGVzKCkKKworICAgIGlmIG5zLm1lbWxpbWl0IGlzIG5vdCBOb25lOgorICAgICAgICBzdXBwb3J0LnNldF9tZW1saW1pdChucy5tZW1saW1pdCkKKworICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZToKKyAgICAgICAgZ2Muc2V0X3RocmVzaG9sZChucy50aHJlc2hvbGQpCisKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBtc3ZjcnQuU2V0RXJyb3JNb2RlKG1zdmNydC5TRU1fRkFJTENSSVRJQ0FMRVJST1JTfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PR1BGQVVMVEVSUk9SQk9YfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9PUEVORklMRUVSUk9SQk9YKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIHJlbGVhc2UgYnVpbGQKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKKyAgICAgICAgICAgICAgICBpZiBucy52ZXJib3NlIGFuZCBucy52ZXJib3NlID49IDI6CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZShtLCBtc3ZjcnQuQ1JUREJHX0ZJTEVfU1RERVJSKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCisKKyAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSBucy51c2VfcmVzb3VyY2VzCisKKworZGVmIHJlcGxhY2Vfc3Rkb3V0KCk6CisgICAgIiIiU2V0IHN0ZG91dCBlbmNvZGVyIGVycm9yIGhhbmRsZXIgdG8gYmFja3NsYXNocmVwbGFjZSAoYXMgc3RkZXJyIGVycm9yCisgICAgaGFuZGxlcikgdG8gYXZvaWQgVW5pY29kZUVuY29kZUVycm9yIHdoZW4gcHJpbnRpbmcgYSB0cmFjZWJhY2siIiIKKyAgICBzdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgc3lzLnN0ZG91dCA9IG9wZW4oc3Rkb3V0LmZpbGVubygpLCAndycsCisgICAgICAgIGVuY29kaW5nPXN0ZG91dC5lbmNvZGluZywKKyAgICAgICAgZXJyb3JzPSJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgY2xvc2VmZD1GYWxzZSwKKyAgICAgICAgbmV3bGluZT0nXG4nKQorCisgICAgZGVmIHJlc3RvcmVfc3Rkb3V0KCk6CisgICAgICAgIHN5cy5zdGRvdXQuY2xvc2UoKQorICAgICAgICBzeXMuc3Rkb3V0ID0gc3Rkb3V0CisgICAgYXRleGl0LnJlZ2lzdGVyKHJlc3RvcmVfc3Rkb3V0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weSBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKaW5kZXggZjIwZmRjMC4uMjZlOTM2OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CkBAIC0yNjYsOSArMjY2LDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgbGlzdCgic3BhbWVnZ3MiKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGEuZXh0ZW5kLCBOb25lKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYS5leHRlbmQpCiAKKyAgICAgICAgIyBvdmVyZmxvdyB0ZXN0LiBpc3N1ZTE2MjEKKyAgICAgICAgY2xhc3MgQ3VzdG9tSXRlcjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgIGRlZiBfX2xlbmd0aF9oaW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tYXhzaXplCisgICAgICAgIGEgPSBzZWxmLnR5cGUydGVzdChbMSwyLDMsNF0pCisgICAgICAgIGEuZXh0ZW5kKEN1c3RvbUl0ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBbMSwyLDMsNF0pCisKKwogICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKICAgICAgICAgYSA9IHNlbGYudHlwZTJ0ZXN0KFswLCAxLCAyXSkKICAgICAgICAgYS5pbnNlcnQoMCwgLTIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5IGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQppbmRleCBhNjRhYTE4Li5hNmNiM2IxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIF90aHJlYWQgaW1wb3J0IHN0YXJ0X25ld190aHJlYWQsIFRJTUVPVVRfTUFYCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0xOTgsNiArMTk5LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzdWx0c1swXSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1lb3V0KHJlc3VsdHNbMV0sIDAuNSkKIAorICAgIGRlZiB0ZXN0X3dlYWtyZWZfZXhpc3RzKHNlbGYpOgorICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGxvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlZigpKQorCisgICAgZGVmIHRlc3Rfd2Vha3JlZl9kZWxldGVkKHNlbGYpOgorICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGxvY2spCisgICAgICAgIGRlbCBsb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZigpKQorCiAKIGNsYXNzIExvY2tUZXN0cyhCYXNlTG9ja1Rlc3RzKToKICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5IGIvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKaW5kZXggYTFmMjk4ZC4uNGQ5ZjAxYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKKysrIGIvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKQEAgLTMsNyArMyw2IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0ICoKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5IGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CmluZGV4IDc5MjJiNTQuLjVjODMzNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKQEAgLTEwMDAsNyArMTAwMCw3IEBACiAgICAgICAgICAgICBiJzAnLCAgICAgICAgICAgICAgICAgICAgICAgIyBQT1AKICAgICAgICAgICAgIGInMScsICAgICAgICAgICAgICAgICAgICAgICAjIFBPUF9NQVJLCiAgICAgICAgICAgICBiJzInLCAgICAgICAgICAgICAgICAgICAgICAgIyBEVVAKLSAgICAgICAgICAgICMgYicoMicsICAgICAgICAgICAgICAgICAgICAjIFB5VW5waWNrbGVyIGRvZXNuJ3QgcmFpc2UKKyAgICAgICAgICAgIGInKDInLAogICAgICAgICAgICAgYidSJywgICAgICAgICAgICAgICAgICAgICAgICMgUkVEVUNFCiAgICAgICAgICAgICBiJylSJywKICAgICAgICAgICAgIGInYScsICAgICAgICAgICAgICAgICAgICAgICAjIEFQUEVORApAQCAtMTAwOSw3ICsxMDA5LDcgQEAKICAgICAgICAgICAgIGInTmInLAogICAgICAgICAgICAgYidkJywgICAgICAgICAgICAgICAgICAgICAgICMgRElDVAogICAgICAgICAgICAgYidlJywgICAgICAgICAgICAgICAgICAgICAgICMgQVBQRU5EUwotICAgICAgICAgICAgIyBiJyhlJywgICAgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCisgICAgICAgICAgICBiJyhlJywKICAgICAgICAgICAgIGInaWJ1aWx0aW5zXG5saXN0XG4nLCAgICAgICAjIElOU1QKICAgICAgICAgICAgIGInbCcsICAgICAgICAgICAgICAgICAgICAgICAjIExJU1QKICAgICAgICAgICAgIGInbycsICAgICAgICAgICAgICAgICAgICAgICAjIE9CSgpAQCAtMTAyMiw3ICsxMDIyLDcgQEAKICAgICAgICAgICAgIGInTk5zJywKICAgICAgICAgICAgIGIndCcsICAgICAgICAgICAgICAgICAgICAgICAjIFRVUExFCiAgICAgICAgICAgICBiJ3UnLCAgICAgICAgICAgICAgICAgICAgICAgIyBTRVRJVEVNUwotICAgICAgICAgICAgIyBiJyh1JywgICAgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgZG9lc24ndCByYWlzZQorICAgICAgICAgICAgYicodScsCiAgICAgICAgICAgICBiJ30oTnUnLAogICAgICAgICAgICAgYidceDgxJywgICAgICAgICAgICAgICAgICAgICMgTkVXT0JKCiAgICAgICAgICAgICBiJylceDgxJywKQEAgLTEwMzMsNyArMTAzMyw3IEBACiAgICAgICAgICAgICBiJ05ceDg3JywKICAgICAgICAgICAgIGInTk5ceDg3JywKICAgICAgICAgICAgIGInXHg5MCcsICAgICAgICAgICAgICAgICAgICAjIEFERElURU1TCi0gICAgICAgICAgICAjIGInKFx4OTAnLCAgICAgICAgICAgICAgICAgIyBQeVVucGlja2xlciByYWlzZXMgQXR0cmlidXRlRXJyb3IKKyAgICAgICAgICAgIGInKFx4OTAnLAogICAgICAgICAgICAgYidceDkxJywgICAgICAgICAgICAgICAgICAgICMgRlJPWkVOU0VUCiAgICAgICAgICAgICBiJ1x4OTInLCAgICAgICAgICAgICAgICAgICAgIyBORVdPQkpfRVgKICAgICAgICAgICAgIGInKX1ceDkyJywKQEAgLTEwNDYsNyArMTA0Niw3IEBACiAKICAgICBkZWYgdGVzdF9iYWRfbWFyayhzZWxmKToKICAgICAgICAgYmFkcGlja2xlcyA9IFsKLSAgICAgICAgICAgICMgYidOKC4nLCAgICAgICAgICAgICAgICAgICAgICMgU1RPUAorICAgICAgICAgICAgYidOKC4nLCAgICAgICAgICAgICAgICAgICAgICMgU1RPUAogICAgICAgICAgICAgYidOKDInLCAgICAgICAgICAgICAgICAgICAgICMgRFVQCiAgICAgICAgICAgICBiJ2NidWlsdGluc1xubGlzdFxuKShSJywgICAgIyBSRURVQ0UKICAgICAgICAgICAgIGInY2J1aWx0aW5zXG5saXN0XG4oKVInLApAQCAtMTA4MSw3ICsxMDgxLDcgQEAKICAgICAgICAgICAgIGInTihceDk0JywgICAgICAgICAgICAgICAgICAjIE1FTU9JWkUKICAgICAgICAgXQogICAgICAgICBmb3IgcCBpbiBiYWRwaWNrbGVzOgotICAgICAgICAgICAgc2VsZi5jaGVja191bnBpY2tsaW5nX2Vycm9yKHNlbGYuYmFkX21hcmtfZXJyb3JzLCBwKQorICAgICAgICAgICAgc2VsZi5jaGVja191bnBpY2tsaW5nX2Vycm9yKHNlbGYuYmFkX3N0YWNrX2Vycm9ycywgcCkKIAogICAgIGRlZiB0ZXN0X3RydW5jYXRlZF9kYXRhKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3VucGlja2xpbmdfZXJyb3IoRU9GRXJyb3IsIGInJykKQEAgLTE4NTUsMTYgKzE4NTUsMTQgQEAKICAgICAgICAgeC5hYmMgPSA2NjYKICAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKLSAgICAgICAgICAgICAgICBpZiAyIDw9IHByb3RvIDwgNDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5kdW1wcywgeCwgcHJvdG8pCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMoeCwgcHJvdG8pCiAgICAgICAgICAgICAgICAgaWYgcHJvdG8gPCAxOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInXG5MNjQyMDYnLCBzKSAgIyBMT05HCiAgICAgICAgICAgICAgICAgZWxpZiBwcm90byA8IDI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidNXHhjZVx4ZmEnLCBzKSAgIyBCSU5JTlQyCisgICAgICAgICAgICAgICAgZWxpZiBwcm90byA8IDQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidYXHgwNFx4MDBceDAwXHgwMEZBQ0UnLCBzKSAgIyBCSU5VTklDT0RFCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHByb3RvID49IDQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1x4OGNceDA0RkFDRScsIHMpICAjIFNIT1JUX0JJTlVOSUNPREUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSiwgcykpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkpfRVgsIHMpLApAQCAtMjU4MywxMSArMjU4MSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHBpY2tsZS5QaWNrbGluZ0Vycm9yLCBCYWRQaWNrbGVyKCkuZHVtcCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocGlja2xlLlVucGlja2xpbmdFcnJvciwgQmFkVW5waWNrbGVyKCkubG9hZCkKIAotICAgIGRlZiB0ZXN0X2JhZF9pbnB1dChzZWxmKToKLSAgICAgICAgIyBUZXN0IGlzc3VlNDI5OAotICAgICAgICBzID0gYnl0ZXMoWzB4NTgsIDAsIDAsIDAsIDB4NTRdKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvciwgcGlja2xlLmxvYWRzLCBzKQotCiAKIGNsYXNzIEFic3RyYWN0UGVyc2lzdGVudFBpY2tsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3B5ZG9jX21vZC5weSBiL0xpYi90ZXN0L3B5ZG9jX21vZC5weQppbmRleCBjZGExYzllLi45YzFmZmY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9weWRvY19tb2QucHkKKysrIGIvTGliL3Rlc3QvcHlkb2NfbW9kLnB5CkBAIC0xMiw3ICsxMiw3IEBACiAgICAgICAgIHBhc3MKIAogY2xhc3MgQihvYmplY3QpOgotICAgIE5PX01FQU5JTkcgPSAiZWdncyIKKyAgICBOT19NRUFOSU5HOiBzdHIgPSAiZWdncyIKICAgICBwYXNzCiAKIGNsYXNzIEMob2JqZWN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlX3Rlc3RzLnB5IGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKaW5kZXggOGMxNThmOC4uYTM3OWQzMyAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcmVfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKQEAgLTEwNiw4ICsxMDYsOCBAQAogICAgICgnYS4qYicsICdhY2NcbmNjYicsIEZBSUwpLAogICAgICgnYS57NCw1fWInLCAnYWNjXG5jY2InLCBGQUlMKSwKICAgICAoJ2EuYicsICdhXHJiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FccmInKSwKLSAgICAoJ2EuYig/cyknLCAnYVxuYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXG5iJyksCi0gICAgKCdhLiooP3MpYicsICdhY2NcbmNjYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhY2NcbmNjYicpLAorICAgICgnKD9zKWEuYicsICdhXG5iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FcbmInKSwKKyAgICAoJyg/cylhLipiJywgJ2FjY1xuY2NiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FjY1xuY2NiJyksCiAgICAgKCcoP3MpYS57NCw1fWInLCAnYWNjXG5jY2InLCBTVUNDRUVELCAnZm91bmQnLCAnYWNjXG5jY2InKSwKICAgICAoJyg/cylhLmInLCAnYVxuYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXG5iJyksCiAKQEAgLTE1OCw3ICsxNTgsNyBAQAogICAgICgnKGFiYycsICctJywgU1lOVEFYX0VSUk9SKSwKICAgICAoJ2FdJywgJ2FdJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdJyksCiAgICAgKCdhW11dYicsICdhXWInLCBTVUNDRUVELCAnZm91bmQnLCAnYV1iJyksCi0gICAgKCdhW1xdXWInLCAnYV1iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdYicpLAorICAgICgnYVtcXF1dYicsICdhXWInLCBTVUNDRUVELCAnZm91bmQnLCAnYV1iJyksCiAgICAgKCdhW15iY11kJywgJ2FlZCcsIFNVQ0NFRUQsICdmb3VuZCcsICdhZWQnKSwKICAgICAoJ2FbXmJjXWQnLCAnYWJkJywgRkFJTCksCiAgICAgKCdhW14tYl1jJywgJ2FkYycsIFNVQ0NFRUQsICdmb3VuZCcsICdhZGMnKSwKQEAgLTU1MSw3ICs1NTEsNyBAQAogICAgICMgbG9va2JlaGluZDogc3BsaXQgYnkgOiBidXQgbm90IGlmIGl0IGlzIGVzY2FwZWQgYnkgLS4KICAgICAoJyg/PCEtKTooLio/KSg/PCEtKTonLCAnYTpiYy06ZGU6ZicsIFNVQ0NFRUQsICdnMScsICdiYy06ZGUnICksCiAgICAgIyBlc2NhcGluZyB3aXRoIFwgYXMgd2Uga25vdyBpdAotICAgICgnKD88IVxcXCk6KC4qPykoPzwhXFxcKTonLCAnYTpiY1xcOmRlOmYnLCBTVUNDRUVELCAnZzEnLCAnYmNcXDpkZScgKSwKKyAgICAoJyg/PCFcXFxcKTooLio/KSg/PCFcXFxcKTonLCAnYTpiY1xcOmRlOmYnLCBTVUNDRUVELCAnZzEnLCAnYmNcXDpkZScgKSwKICAgICAjIHRlcm1pbmF0aW5nIHdpdGggJyBhbmQgZXNjYXBpbmcgd2l0aCA/IGFzIGluIGVkaWZhY3QKICAgICAoIig/PCFcXD8pJyguKj8pKD88IVxcPyknIiwgImEnYmM/J2RlJ2YiLCBTVUNDRUVELCAnZzEnLCAiYmM/J2RlIiApLAogCkBAIC01NjMsNyArNTYzLDcgQEAKICAgICAjIENoZWNrIG9kZCBwbGFjZW1lbnQgb2YgZW1iZWRkZWQgcGF0dGVybiBtb2RpZmllcnMKIAogICAgICMgbm90IGFuIGVycm9yIHVuZGVyIFBDUkUvUFJFOgotICAgICgndyg/aSknLCAnVycsIFNVQ0NFRUQsICdmb3VuZCcsICdXJyksCisgICAgKCcoP2kpdycsICdXJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1cnKSwKICAgICAjICgndyg/aSknLCAnVycsIFNZTlRBWF9FUlJPUiksCiAKICAgICAjIENvbW1lbnRzIHVzaW5nIHRoZSB4IGVtYmVkZGVkIHBhdHRlcm4gbW9kaWZpZXIKQEAgLTYyNyw3ICs2MjcsNyBAQAogICAgICMgYnVnIDExNDAzMzogbm90aGluZyB0byByZXBlYXQKICAgICAocicoeD8pPycsICd4JywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ3gnKSwKICAgICAjIGJ1ZyAxMTUwNDA6IHJlc2NhbiBpZiBmbGFncyBhcmUgbW9kaWZpZWQgaW5zaWRlIHBhdHRlcm4KLSAgICAocicgKD94KWZvbyAnLCAnZm9vJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2ZvbycpLAorICAgIChyJyg/eCkgZm9vICcsICdmb28nLCBTVUNDRUVELCAnZm91bmQnLCAnZm9vJyksCiAgICAgIyBidWcgMTE1NjE4OiBuZWdhdGl2ZSBsb29rYWhlYWQKICAgICAocicoPzwhYWJjKShkLmYpJywgJ2FiY2RlZmRvZicsIFNVQ0NFRUQsICdmb3VuZCcsICdkb2YnKSwKICAgICAjIGJ1ZyAxMTYyNTE6IGNoYXJhY3RlciBjbGFzcyBidWcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvcmVncnRlc3QucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBmMTg5MmFjLi4yMWIwZWRmCi0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC02LDE2MDUgKzYsMzMgQEAKIFJ1biB0aGlzIHNjcmlwdCB3aXRoIC1oIG9yIC0taGVscCBmb3IgZG9jdW1lbnRhdGlvbi4KICIiIgogCi1VU0FHRSA9ICIiIlwKLXB5dGhvbiAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQotcHl0aG9uIHBhdGgvdG8vTGliL3Rlc3QvcmVncnRlc3QucHkgW29wdGlvbnNdIFt0ZXN0X25hbWUxIFt0ZXN0X25hbWUyIC4uLl1dCi0iIiIKLQotREVTQ1JJUFRJT04gPSAiIiJcCi1SdW4gUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuCi0KLUlmIG5vIGFyZ3VtZW50cyBvciBvcHRpb25zIGFyZSBwcm92aWRlZCwgZmluZHMgYWxsIGZpbGVzIG1hdGNoaW5nCi10aGUgcGF0dGVybiAidGVzdF8qIiBpbiB0aGUgTGliL3Rlc3Qgc3ViZGlyZWN0b3J5IGFuZCBydW5zCi10aGVtIGluIGFscGhhYmV0aWNhbCBvcmRlciAoYnV0IHNlZSAtTSBhbmQgLXUsIGJlbG93LCBmb3IgZXhjZXB0aW9ucykuCi0KLUZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcsIGl0IGlzIHVzZWZ1bCB0byB1c2UgdGhlIGZvbGxvd2luZwotY29tbWFuZCBsaW5lOgotCi1weXRob24gLUUgLVdkIC1tIHRlc3QgW29wdGlvbnNdIFt0ZXN0X25hbWUxIC4uLl0KLSIiIgotCi1FUElMT0cgPSAiIiJcCi1BZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzOgotCi0tciByYW5kb21pemVzIHRlc3QgZXhlY3V0aW9uIG9yZGVyLiBZb3UgY2FuIHVzZSAtLXJhbmRzZWVkPWludCB0byBwcm92aWRlIGFuCi1pbnQgc2VlZCB2YWx1ZSBmb3IgdGhlIHJhbmRvbWl6ZXI7IHRoaXMgaXMgdXNlZnVsIGZvciByZXByb2R1Y2luZyB0cm91Ymxlc29tZQotdGVzdCBvcmRlcnMuCi0KLS1zIE9uIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIHJlZ3J0ZXN0IHVzaW5nIC1zLCB0aGUgZmlyc3QgdGVzdCBmaWxlIGZvdW5kCi1vciB0aGUgZmlyc3QgdGVzdCBmaWxlIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgcnVuLCBhbmQgdGhlIG5hbWUgb2YKLXRoZSBuZXh0IHRlc3QgaXMgcmVjb3JkZWQgaW4gYSBmaWxlIG5hbWVkIHB5bmV4dHRlc3QuICBJZiBydW4gZnJvbSB0aGUKLVB5dGhvbiBidWlsZCBkaXJlY3RvcnksIHB5bmV4dHRlc3QgaXMgbG9jYXRlZCBpbiB0aGUgJ2J1aWxkJyBzdWJkaXJlY3RvcnksCi1vdGhlcndpc2UgaXQgaXMgbG9jYXRlZCBpbiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkuICBPbiBzdWJzZXF1ZW50IHJ1bnMsCi10aGUgdGVzdCBpbiBweW5leHR0ZXN0IGlzIHJ1biwgYW5kIHRoZSBuZXh0IHRlc3QgaXMgd3JpdHRlbiB0byBweW5leHR0ZXN0LgotV2hlbiB0aGUgbGFzdCB0ZXN0IGhhcyBiZWVuIHJ1biwgcHluZXh0dGVzdCBpcyBkZWxldGVkLiAgSW4gdGhpcyB3YXkgaXQKLWlzIHBvc3NpYmxlIHRvIHNpbmdsZSBzdGVwIHRocm91Z2ggdGhlIHRlc3QgZmlsZXMuICBUaGlzIGlzIHVzZWZ1bCB3aGVuCi1kb2luZyBtZW1vcnkgYW5hbHlzaXMgb24gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgd2hpY2ggcHJvY2VzcyB0ZW5kcyB0bwotY29uc3VtZSB0b28gbWFueSByZXNvdXJjZXMgdG8gcnVuIHRoZSBmdWxsIHJlZ3Jlc3Npb24gdGVzdCBub24tc3RvcC4KLQotLVMgaXMgdXNlZCB0byBjb250aW51ZSBydW5uaW5nIHRlc3RzIGFmdGVyIGFuIGFib3J0ZWQgcnVuLiAgSXQgd2lsbAotbWFpbnRhaW4gdGhlIG9yZGVyIGEgc3RhbmRhcmQgcnVuIChpZSwgdGhpcyBhc3N1bWVzIC1yIGlzIG5vdCB1c2VkKS4KLVRoaXMgaXMgdXNlZnVsIGFmdGVyIHRoZSB0ZXN0cyBoYXZlIHByZW1hdHVyZWx5IHN0b3BwZWQgZm9yIHNvbWUgZXh0ZXJuYWwKLXJlYXNvbiBhbmQgeW91IHdhbnQgdG8gc3RhcnQgcnVubmluZyBmcm9tIHdoZXJlIHlvdSBsZWZ0IG9mZiByYXRoZXIKLXRoYW4gc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nLgotCi0tZiByZWFkcyB0aGUgbmFtZXMgb2YgdGVzdHMgZnJvbSB0aGUgZmlsZSBnaXZlbiBhcyBmJ3MgYXJndW1lbnQsIG9uZQotb3IgbW9yZSB0ZXN0IG5hbWVzIHBlciBsaW5lLiAgV2hpdGVzcGFjZSBpcyBpZ25vcmVkLiAgQmxhbmsgbGluZXMgYW5kCi1saW5lcyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIGlnbm9yZWQuICBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvcgotd2hpdHRsaW5nIGRvd24gZmFpbHVyZXMgaW52b2x2aW5nIGludGVyYWN0aW9ucyBhbW9uZyB0ZXN0cy4KLQotLUwgY2F1c2VzIHRoZSBsZWFrcygxKSBjb21tYW5kIHRvIGJlIHJ1biBqdXN0IGJlZm9yZSBleGl0IGlmIGl0IGV4aXN0cy4KLWxlYWtzKDEpIGlzIGF2YWlsYWJsZSBvbiBNYWMgT1MgWCBhbmQgcHJlc3VtYWJseSBvbiBzb21lIG90aGVyCi1GcmVlQlNELWRlcml2ZWQgc3lzdGVtcy4KLQotLVIgcnVucyBlYWNoIHRlc3Qgc2V2ZXJhbCB0aW1lcyBhbmQgZXhhbWluZXMgc3lzLmdldHRvdGFscmVmY291bnQoKSB0bwotc2VlIGlmIHRoZSB0ZXN0IGFwcGVhcnMgdG8gYmUgbGVha2luZyByZWZlcmVuY2VzLiAgVGhlIGFyZ3VtZW50IHNob3VsZAotYmUgb2YgdGhlIGZvcm0gc3RhYjpydW46Zm5hbWUgd2hlcmUgJ3N0YWInIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlCi10ZXN0IGlzIHJ1biB0byBsZXQgZ2V0dG90YWxyZWZjb3VudCBzZXR0bGUgZG93biwgJ3J1bicgaXMgdGhlIG51bWJlcgotb2YgdGltZXMgZnVydGhlciBpdCBpcyBydW4gYW5kICdmbmFtZScgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhlCi1yZXBvcnRzIGFyZSB3cml0dGVuIHRvLiAgVGhlc2UgcGFyYW1ldGVycyBhbGwgaGF2ZSBkZWZhdWx0cyAoNSwgNCBhbmQKLSJyZWZsb2cudHh0IiByZXNwZWN0aXZlbHkpLCBhbmQgdGhlIG1pbmltYWwgaW52b2NhdGlvbiBpcyAnLVIgOicuCi0KLS1NIHJ1bnMgdGVzdHMgdGhhdCByZXF1aXJlIGFuIGV4b3JiaXRhbnQgYW1vdW50IG9mIG1lbW9yeS4gVGhlc2UgdGVzdHMKLXR5cGljYWxseSB0cnkgdG8gYXNjZXJ0YWluIGNvbnRhaW5lcnMga2VlcCB3b3JraW5nIHdoZW4gY29udGFpbmluZyBtb3JlIHRoYW4KLTIgYmlsbGlvbiBvYmplY3RzLCB3aGljaCBvbmx5IHdvcmtzIG9uIDY0LWJpdCBzeXN0ZW1zLiBUaGVyZSBhcmUgYWxzbyBzb21lCi10ZXN0cyB0aGF0IHRyeSB0byBleGhhdXN0IHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCB3aGljaCBvbmx5IG1ha2VzCi1zZW5zZSBvbiAzMi1iaXQgc3lzdGVtcyB3aXRoIGF0IGxlYXN0IDJHYiBvZiBtZW1vcnkuIFRoZSBwYXNzZWQtaW4gbWVtbGltaXQsCi13aGljaCBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybSBvZiAnMi41R2InLCBkZXRlcm1pbmVzIGhvd211Y2ggbWVtb3J5IHRoZQotdGVzdHMgd2lsbCBsaW1pdCB0aGVtc2VsdmVzIHRvIChidXQgdGhleSBtYXkgZ28gc2xpZ2h0bHkgb3Zlci4pIFRoZSBudW1iZXIKLXNob3VsZG4ndCBiZSBtb3JlIG1lbW9yeSB0aGFuIHRoZSBtYWNoaW5lIGhhcyAoaW5jbHVkaW5nIHN3YXAgbWVtb3J5KS4gWW91Ci1zaG91bGQgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBzd2FwIG1lbW9yeSBpcyBnZW5lcmFsbHkgbXVjaCwgbXVjaCBzbG93ZXIKLXRoYW4gUkFNLCBhbmQgc2V0dGluZyBtZW1saW1pdCB0byBhbGwgYXZhaWxhYmxlIFJBTSBvciBoaWdoZXIgd2lsbCBoZWF2aWx5Ci10YXggdGhlIG1hY2hpbmUuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpcyBubyB1c2UgcnVubmluZyB0aGVzZSB0ZXN0cyB3aXRoIGEKLWxpbWl0IG9mIGxlc3MgdGhhbiAyLjVHYiwgYW5kIG1hbnkgcmVxdWlyZSBtb3JlIHRoYW4gMjBHYi4gVGVzdHMgdGhhdCBleHBlY3QKLXRvIHVzZSBtb3JlIHRoYW4gbWVtbGltaXQgbWVtb3J5IHdpbGwgYmUgc2tpcHBlZC4gVGhlIGJpZy1tZW1vcnkgdGVzdHMKLWdlbmVyYWxseSBydW4gdmVyeSwgdmVyeSBsb25nLgotCi0tdSBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuLAotc3VjaCBhcyB0aG9zZSByZXF1aXJpbmcgbGFyZ2UgZmlsZSBzdXBwb3J0IG9yIG5ldHdvcmsgY29ubmVjdGl2aXR5LgotVGhlIGFyZ3VtZW50IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgaW5kaWNhdGluZyB0aGUKLXJlc291cmNlcyB0byB0ZXN0LiAgQ3VycmVudGx5IG9ubHkgdGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lZDoKLQotICAgIGFsbCAtICAgICAgIEVuYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMuCi0KLSAgICBub25lIC0gICAgICBEaXNhYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuCi0KLSAgICBhdWRpbyAtICAgICBUZXN0cyB0aGF0IHVzZSB0aGUgYXVkaW8gZGV2aWNlLiAgKFRoZXJlIGFyZSBrbm93bgotICAgICAgICAgICAgICAgIGNhc2VzIG9mIGJyb2tlbiBhdWRpbyBkcml2ZXJzIHRoYXQgY2FuIGNyYXNoIFB5dGhvbiBvcgotICAgICAgICAgICAgICAgIGV2ZW4gdGhlIExpbnV4IGtlcm5lbC4pCi0KLSAgICBjdXJzZXMgLSAgICBUZXN0cyB0aGF0IHVzZSBjdXJzZXMgYW5kIHdpbGwgbW9kaWZ5IHRoZSB0ZXJtaW5hbCdzCi0gICAgICAgICAgICAgICAgc3RhdGUgYW5kIG91dHB1dCBtb2Rlcy4KLQotICAgIGxhcmdlZmlsZSAtIEl0IGlzIG9rYXkgdG8gcnVuIHNvbWUgdGVzdCB0aGF0IG1heSBjcmVhdGUgaHVnZQotICAgICAgICAgICAgICAgIGZpbGVzLiAgVGhlc2UgdGVzdHMgY2FuIHRha2UgYSBsb25nIHRpbWUgYW5kIG1heQotICAgICAgICAgICAgICAgIGNvbnN1bWUgPjJHQiBvZiBkaXNrIHNwYWNlIHRlbXBvcmFyaWx5LgotCi0gICAgbmV0d29yayAtICAgSXQgaXMgb2theSB0byBydW4gdGVzdHMgdGhhdCB1c2UgZXh0ZXJuYWwgbmV0d29yawotICAgICAgICAgICAgICAgIHJlc291cmNlLCBlLmcuIHRlc3RpbmcgU1NMIHN1cHBvcnQgZm9yIHNvY2tldHMuCi0KLSAgICBkZWNpbWFsIC0gICBUZXN0IHRoZSBkZWNpbWFsIG1vZHVsZSBhZ2FpbnN0IGEgbGFyZ2Ugc3VpdGUgdGhhdAotICAgICAgICAgICAgICAgIHZlcmlmaWVzIGNvbXBsaWFuY2Ugd2l0aCBzdGFuZGFyZHMuCi0KLSAgICBjcHUgLSAgICAgICBVc2VkIGZvciBjZXJ0YWluIENQVS1oZWF2eSB0ZXN0cy4KLQotICAgIHN1YnByb2Nlc3MgIFJ1biBhbGwgdGVzdHMgZm9yIHRoZSBzdWJwcm9jZXNzIG1vZHVsZS4KLQotICAgIHVybGZldGNoIC0gIEl0IGlzIG9rYXkgdG8gZG93bmxvYWQgZmlsZXMgcmVxdWlyZWQgb24gdGVzdGluZy4KLQotICAgIGd1aSAtICAgICAgIFJ1biB0ZXN0cyB0aGF0IHJlcXVpcmUgYSBydW5uaW5nIEdVSS4KLQotVG8gZW5hYmxlIGFsbCByZXNvdXJjZXMgZXhjZXB0IG9uZSwgdXNlICctdWFsbCwtPHJlc291cmNlPicuICBGb3IKLWV4YW1wbGUsIHRvIHJ1biBhbGwgdGhlIHRlc3RzIGV4Y2VwdCBmb3IgdGhlIGd1aSB0ZXN0cywgZ2l2ZSB0aGUKLW9wdGlvbiAnLXVhbGwsLWd1aScuCi0iIiIKLQogIyBXZSBpbXBvcnQgaW1wb3J0bGliICpBU0FQKiBpbiBvcmRlciB0byB0ZXN0ICMxNTM4NgogaW1wb3J0IGltcG9ydGxpYgogCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBidWlsdGlucwotaW1wb3J0IGZhdWx0aGFuZGxlcgotaW1wb3J0IGlvCi1pbXBvcnQganNvbgotaW1wb3J0IGxvY2FsZQotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKLWltcG9ydCBzeXNjb25maWcKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHRpbWUKLWltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCi1mcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKK2Zyb20gdGVzdC5saWJyZWdydGVzdCBpbXBvcnQgbWFpbgogCi10cnk6Ci0gICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHRocmVhZGluZyA9IE5vbmUKLXRyeToKLSAgICBpbXBvcnQgX211bHRpcHJvY2Vzc2luZywgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBtdWx0aXByb2Nlc3NpbmcgPSBOb25lCiAKKyMgQWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGp1c3QgaW4gY2FzZSkKK21haW5faW5fdGVtcF9jd2QgPSBtYWluCiAKLSMgU29tZSB0aW1lcyBfX3BhdGhfXyBhbmQgX19maWxlX18gYXJlIG5vdCBhYnNvbHV0ZSAoZS5nLiB3aGlsZSBydW5uaW5nIGZyb20KLSMgTGliLykgYW5kLCBpZiB3ZSBjaGFuZ2UgdGhlIENXRCB0byBydW4gdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpciwgc29tZQotIyBpbXBvcnRzIG1pZ2h0IGZhaWwuICBUaGlzIGFmZmVjdHMgb25seSB0aGUgbW9kdWxlcyBpbXBvcnRlZCBiZWZvcmUgb3MuY2hkaXIoKS4KLSMgVGhlc2UgbW9kdWxlcyBhcmUgc2VhcmNoZWQgZmlyc3QgaW4gc3lzLnBhdGhbMF0gKHNvICcnIC0tIHRoZSBDV0QpIGFuZCBpZgotIyB0aGV5IGFyZSBmb3VuZCBpbiB0aGUgQ1dEIHRoZWlyIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyB3aWxsIGJlIHJlbGF0aXZlICh0aGlzCi0jIGhhcHBlbnMgYmVmb3JlIHRoZSBjaGRpcikuICBBbGwgdGhlIG1vZHVsZXMgaW1wb3J0ZWQgYWZ0ZXIgdGhlIGNoZGlyLCBhcmUKLSMgbm90IGZvdW5kIGluIHRoZSBDV0QsIGFuZCBzaW5jZSB0aGUgb3RoZXIgcGF0aHMgaW4gc3lzLnBhdGhbMTpdIGFyZSBhYnNvbHV0ZQotIyAoc2l0ZS5weSBhYnNvbHV0aXplIHRoZW0pLCB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIHdpbGwgYmUgYWJzb2x1dGUgdG9vLgotIyBUaGVyZWZvcmUgaXQgaXMgbmVjZXNzYXJ5IHRvIGFic29sdXRpemUgbWFudWFsbHkgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyBvZgotIyB0aGUgcGFja2FnZXMgdG8gcHJldmVudCBsYXRlciBpbXBvcnRzIHRvIGZhaWwgd2hlbiB0aGUgQ1dEIGlzIGRpZmZlcmVudC4KLWZvciBtb2R1bGUgaW4gc3lzLm1vZHVsZXMudmFsdWVzKCk6Ci0gICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbb3MucGF0aC5hYnNwYXRoKHBhdGgpIGZvciBwYXRoIGluIG1vZHVsZS5fX3BhdGhfX10KLSAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6Ci0gICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IG9zLnBhdGguYWJzcGF0aChtb2R1bGUuX19maWxlX18pCiAKLQotIyBNYWNPU1ggKGEuay5hLiBEYXJ3aW4pIGhhcyBhIGRlZmF1bHQgc3RhY2sgc2l6ZSB0aGF0IGlzIHRvbyBzbWFsbAotIyBmb3IgZGVlcGx5IHJlY3Vyc2l2ZSByZWd1bGFyIGV4cHJlc3Npb25zLiAgV2Ugc2VlIHRoaXMgYXMgY3Jhc2hlcyBpbgotIyB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2hlbiBydW5uaW5nIHRlc3RfcmUucHkgYW5kIHRlc3Rfc3JlLnB5LiAgVGhlCi0jIGZpeCBpcyB0byBzZXQgdGhlIHN0YWNrIGxpbWl0IHRvIDIwNDguCi0jIFRoaXMgYXBwcm9hY2ggbWF5IGFsc28gYmUgdXNlZnVsIGZvciBvdGhlciBVbml4eSBwbGF0Zm9ybXMgdGhhdAotIyBzdWZmZXIgZnJvbSBzbWFsbCBkZWZhdWx0IHN0YWNrIGxpbWl0cy4KLWlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCByZXNvdXJjZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIHNvZnQsIGhhcmQgPSByZXNvdXJjZS5nZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLKQotICAgICAgICBuZXdzb2Z0ID0gbWluKGhhcmQsIG1heChzb2Z0LCAxMDI0KjIwNDgpKQotICAgICAgICByZXNvdXJjZS5zZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLLCAobmV3c29mdCwgaGFyZCkpCi0KLSMgVGVzdCByZXN1bHQgY29uc3RhbnRzLgotUEFTU0VEID0gMQotRkFJTEVEID0gMAotRU5WX0NIQU5HRUQgPSAtMQotU0tJUFBFRCA9IC0yCi1SRVNPVVJDRV9ERU5JRUQgPSAtMwotSU5URVJSVVBURUQgPSAtNAotQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCi0KLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1SRVNPVVJDRV9OQU1FUyA9ICgnYXVkaW8nLCAnY3Vyc2VzJywgJ2xhcmdlZmlsZScsICduZXR3b3JrJywKLSAgICAgICAgICAgICAgICAgICdkZWNpbWFsJywgJ2NwdScsICdzdWJwcm9jZXNzJywgJ3VybGZldGNoJywgJ2d1aScpCi0KLSMgV2hlbiB0ZXN0cyBhcmUgcnVuIGZyb20gdGhlIFB5dGhvbiBidWlsZCBkaXJlY3RvcnksIGl0IGlzIGJlc3QgcHJhY3RpY2UKLSMgdG8ga2VlcCB0aGUgdGVzdCBmaWxlcyBpbiBhIHN1YmZvbGRlci4gIFRoaXMgZWFzZXMgdGhlIGNsZWFudXAgb2YgbGVmdG92ZXIKLSMgZmlsZXMgdXNpbmcgdGhlICJtYWtlIGRpc3RjbGVhbiIgY29tbWFuZC4KLWlmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKLSAgICBURU1QRElSID0gb3MucGF0aC5qb2luKHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdidWlsZCcpCi1lbHNlOgotICAgIFRFTVBESVIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLVRFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgoVEVNUERJUikKLQotY2xhc3MgX0FyZ1BhcnNlcihhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcik6Ci0KLSAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHN1cGVyKCkuZXJyb3IobWVzc2FnZSArICJcblBhc3MgLWggb3IgLS1oZWxwIGZvciBjb21wbGV0ZSBoZWxwLiIpCi0KLWRlZiBfY3JlYXRlX3BhcnNlcigpOgotICAgICMgU2V0IHByb2cgdG8gcHJldmVudCB0aGUgdW5pbmZvcm1hdGl2ZSAiX19tYWluX18ucHkiIGZyb20gZGlzcGxheWluZyBpbgotICAgICMgZXJyb3IgbWVzc2FnZXMgd2hlbiB1c2luZyAicHl0aG9uIC1tIHRlc3QgLi4uIi4KLSAgICBwYXJzZXIgPSBfQXJnUGFyc2VyKHByb2c9J3JlZ3J0ZXN0LnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlPVVTQUdFLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249REVTQ1JJUFRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9RVBJTE9HLAotICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJfY2xhc3M9YXJncGFyc2UuUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyKQotCi0gICAgIyBBcmd1bWVudHMgd2l0aCB0aGlzIGNsYXVzZSBhZGRlZCB0byBpdHMgaGVscCBhcmUgZGVzY3JpYmVkIGZ1cnRoZXIgaW4KLSAgICAjIHRoZSBlcGlsb2cncyAiQWRkaXRpb25hbCBvcHRpb24gZGV0YWlscyIgc2VjdGlvbi4KLSAgICBtb3JlX2RldGFpbHMgPSAnICBTZWUgdGhlIHNlY3Rpb24gYXQgYm90dG9tIGZvciBtb3JlIGRldGFpbHMuJwotCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdHZW5lcmFsIG9wdGlvbnMnKQotICAgICMgV2UgYWRkIGhlbHAgZXhwbGljaXRseSB0byBjb250cm9sIHdoYXQgYXJndW1lbnQgZ3JvdXAgaXQgcmVuZGVycyB1bmRlci4KLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1oJywgJy0taGVscCcsIGFjdGlvbj0naGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10aW1lb3V0JywgbWV0YXZhcj0nVElNRU9VVCcsIHR5cGU9ZmxvYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGhhbiBUSU1FT1VUIHNlY29uZHM7IGRpc2FibGVkIGlmIFRJTUVPVVQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgbmVnYXRpdmUgb3IgZXF1YWxzIHRvIHplcm8nKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS13YWl0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nd2FpdCBmb3IgdXNlciBpbnB1dCwgZS5nLiwgYWxsb3cgYSBkZWJ1Z2dlciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvIGJlIGF0dGFjaGVkJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc2xhdmVhcmdzJywgbWV0YXZhcj0nQVJHUycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUycsICctLXN0YXJ0JywgbWV0YXZhcj0nU1RBUlQnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgbmFtZSBvZiB0aGUgdGVzdCBhdCB3aGljaCB0byBzdGFydC4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0KLSAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1ZlcmJvc2l0eScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJvc2UnLCBhY3Rpb249J2NvdW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRlc3RzIGluIHZlcmJvc2UgbW9kZSB3aXRoIG91dHB1dCB0byBzdGRvdXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXcnLCAnLS12ZXJib3NlMicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlLXJ1biBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1XJywgJy0tdmVyYm9zZTMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J25vIG91dHB1dCB1bmxlc3Mgb25lIG9yIG1vcmUgdGVzdHMgZmFpbCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbycsICctLXNsb3cnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdwcmludF9zbG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHJpbnQgdGhlIHNsb3dlc3QgMTAgdGVzdHMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1oZWFkZXInLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCBoZWFkZXIgd2l0aCBpbnRlcnByZXRlciBpbmZvJykKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnU2VsZWN0aW5nIHRlc3RzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmFuZG9taXplJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmFuZG9taXplIHRlc3QgZXhlY3V0aW9uIG9yZGVyLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXJhbmRzZWVkJywgbWV0YXZhcj0nU0VFRCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3JhbmRvbV9zZWVkJywgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Bhc3MgYSByYW5kb20gc2VlZCB0byByZXByb2R1Y2UgYSBwcmV2aW91cyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmRvbSBydW4nKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1mcm9tZmlsZScsIG1ldGF2YXI9J0ZJTEUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZWFkIG5hbWVzIG9mIHRlc3RzIHRvIHJ1biBmcm9tIGEgZmlsZS4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCcteCcsICctLWV4Y2x1ZGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdhcmd1bWVudHMgYXJlIHRlc3RzIHRvICpleGNsdWRlKicpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcycsICctLXNpbmdsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NpbmdsZSBzdGVwIHRocm91Z2ggYSBzZXQgb2YgdGVzdHMuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1tYXRjaCcsIG1ldGF2YXI9J1BBVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J21hdGNoX3Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbWF0Y2ggdGVzdCBjYXNlcyBhbmQgbWV0aG9kcyB3aXRoIGdsb2IgcGF0dGVybiBQQVQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUcnLCAnLS1mYWlsZmFzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZhaWwgYXMgc29vbiBhcyBhIHRlc3QgZmFpbHMgKG9ubHkgd2l0aCAtdiBvciAtVyknKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11c2UnLCBtZXRhdmFyPSdSRVMxLFJFUzIsLi4uJywKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdhcHBlbmQnLCB0eXBlPXJlc291cmNlc19saXN0LAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gcnVuLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTScsICctLW1lbWxpbWl0JywgbWV0YXZhcj0nTElNSVQnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdmVyeSBsYXJnZSBtZW1vcnktY29uc3VtaW5nIHRlc3RzLicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tdGVzdGRpcicsIG1ldGF2YXI9J0RJUicsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9cmVsYXRpdmVfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2V4ZWN1dGUgdGVzdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhpbnN0ZWFkIG9mIHRoZSBQeXRob24gc3RkbGliIHRlc3Qgc3VpdGUpJykKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnU3BlY2lhbCBydW5zJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1sJywgJy0tZmluZGxlYWtzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0naWYgR0MgaXMgYXZhaWxhYmxlIGRldGVjdCB0ZXN0cyB0aGF0IGxlYWsgbWVtb3J5JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1MJywgJy0tcnVubGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGhlIGxlYWtzKDEpIGNvbW1hbmQganVzdCBiZWZvcmUgZXhpdC4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUicsICctLWh1bnRybGVha3MnLCBtZXRhdmFyPSdSVU5DT1VOVFMnLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlYXJjaCBmb3IgcmVmZXJlbmNlIGxlYWtzIChuZWVkcyBkZWJ1ZyBidWlsZCwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ5IHNsb3cpLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctaicsICctLW11bHRpcHJvY2VzcycsIG1ldGF2YXI9J1BST0NFU1NFUycsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9tcCcsIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gUFJPQ0VTU0VTIHByb2Nlc3NlcyBhdCBvbmNlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1UJywgJy0tY292ZXJhZ2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0cmFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3R1cm4gb24gY29kZSBjb3ZlcmFnZSB0cmFjaW5nIHVzaW5nIHRoZSB0cmFjZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZHVsZScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRCcsICctLWNvdmVyZGlyJywgbWV0YXZhcj0nRElSJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlyZWN0b3J5IHdoZXJlIGNvdmVyYWdlIGZpbGVzIGFyZSBwdXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLU4nLCAnLS1ub2NvdmVyZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PU5vbmUsIGRlc3Q9J2NvdmVyZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHV0IGNvdmVyYWdlIGZpbGVzIGFsb25nc2lkZSBtb2R1bGVzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy10JywgJy0tdGhyZXNob2xkJywgbWV0YXZhcj0nVEhSRVNIT0xEJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2NhbGwgZ2Muc2V0X3RocmVzaG9sZChUSFJFU0hPTEQpJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1uJywgJy0tbm93aW5kb3dzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VwcHJlc3MgZXJyb3IgbWVzc2FnZSBib3hlcyBvbiBXaW5kb3dzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1GJywgJy0tZm9yZXZlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgc3BlY2lmaWVkIHRlc3RzIGluIGEgbG9vcCwgdW50aWwgYW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvciBoYXBwZW5zJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1QJywgJy0tcGdvJywgZGVzdD0ncGdvJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZW5hYmxlIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiB0cmFpbmluZycpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdhcmdzJywgbmFyZ3M9JyonLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD1hcmdwYXJzZS5TVVBQUkVTUykKLQotICAgIHJldHVybiBwYXJzZXIKLQotZGVmIHJlbGF0aXZlX2ZpbGVuYW1lKHN0cmluZyk6Ci0gICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQotICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc3RyaW5nKQotCi1kZWYgaHVudHJsZWFrcyhzdHJpbmcpOgotICAgIGFyZ3MgPSBzdHJpbmcuc3BsaXQoJzonKQotICAgIGlmIGxlbihhcmdzKSBub3QgaW4gKDIsIDMpOgotICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigKLSAgICAgICAgICAgICduZWVkcyAyIG9yIDMgY29sb24tc2VwYXJhdGVkIGFyZ3VtZW50cycpCi0gICAgbndhcm11cCA9IGludChhcmdzWzBdKSBpZiBhcmdzWzBdIGVsc2UgNQotICAgIG50cmFja2VkID0gaW50KGFyZ3NbMV0pIGlmIGFyZ3NbMV0gZWxzZSA0Ci0gICAgZm5hbWUgPSBhcmdzWzJdIGlmIGxlbihhcmdzKSA+IDIgYW5kIGFyZ3NbMl0gZWxzZSAncmVmbG9nLnR4dCcKLSAgICByZXR1cm4gbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lCi0KLWRlZiByZXNvdXJjZXNfbGlzdChzdHJpbmcpOgotICAgIHUgPSBbeC5sb3dlcigpIGZvciB4IGluIHN0cmluZy5zcGxpdCgnLCcpXQotICAgIGZvciByIGluIHU6Ci0gICAgICAgIGlmIHIgPT0gJ2FsbCcgb3IgciA9PSAnbm9uZSc6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiByWzBdID09ICctJzoKLSAgICAgICAgICAgIHIgPSByWzE6XQotICAgICAgICBpZiByIG5vdCBpbiBSRVNPVVJDRV9OQU1FUzoKLSAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKCdpbnZhbGlkIHJlc291cmNlOiAnICsgcikKLSAgICByZXR1cm4gdQotCi1kZWYgX3BhcnNlX2FyZ3MoYXJncywgKiprd2FyZ3MpOgotICAgICMgRGVmYXVsdHMKLSAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSh0ZXN0ZGlyPU5vbmUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsCi0gICAgICAgICBleGNsdWRlPUZhbHNlLCBzaW5nbGU9RmFsc2UsIHJhbmRvbWl6ZT1GYWxzZSwgZnJvbWZpbGU9Tm9uZSwKLSAgICAgICAgIGZpbmRsZWFrcz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLCB0cmFjZT1GYWxzZSwgY292ZXJkaXI9J2NvdmVyYWdlJywKLSAgICAgICAgIHJ1bmxlYWtzPUZhbHNlLCBodW50cmxlYWtzPUZhbHNlLCB2ZXJib3NlMj1GYWxzZSwgcHJpbnRfc2xvdz1GYWxzZSwKLSAgICAgICAgIHJhbmRvbV9zZWVkPU5vbmUsIHVzZV9tcD1Ob25lLCB2ZXJib3NlMz1GYWxzZSwgZm9yZXZlcj1GYWxzZSwKLSAgICAgICAgIGhlYWRlcj1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsIHBnbz1GYWxzZSkKLSAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIobnMsIGspOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgdGhpcyBmdW5jdGlvbicgJSBrKQotICAgICAgICBzZXRhdHRyKG5zLCBrLCB2KQotICAgIGlmIG5zLnVzZV9yZXNvdXJjZXMgaXMgTm9uZToKLSAgICAgICAgbnMudXNlX3Jlc291cmNlcyA9IFtdCi0KLSAgICBwYXJzZXIgPSBfY3JlYXRlX3BhcnNlcigpCi0gICAgcGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1hcmdzLCBuYW1lc3BhY2U9bnMpCi0KLSAgICBpZiBucy5zaW5nbGUgYW5kIG5zLmZyb21maWxlOgotICAgICAgICBwYXJzZXIuZXJyb3IoIi1zIGFuZCAtZiBkb24ndCBnbyB0b2dldGhlciEiKQotICAgIGlmIG5zLnVzZV9tcCBhbmQgbnMudHJhY2U6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLVQgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMudXNlX21wIGFuZCBucy5maW5kbGVha3M6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLWwgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMudXNlX21wIGFuZCBucy5tZW1saW1pdDoKLSAgICAgICAgcGFyc2VyLmVycm9yKCItTSBhbmQgLWogZG9uJ3QgZ28gdG9nZXRoZXIhIikKLSAgICBpZiBucy5mYWlsZmFzdCBhbmQgbm90IChucy52ZXJib3NlIG9yIG5zLnZlcmJvc2UzKToKLSAgICAgICAgcGFyc2VyLmVycm9yKCItRy8tLWZhaWxmYXN0IG5lZWRzIGVpdGhlciAtdiBvciAtVyIpCi0KLSAgICBpZiBucy5xdWlldDoKLSAgICAgICAgbnMudmVyYm9zZSA9IDAKLSAgICBpZiBucy50aW1lb3V0IGlzIG5vdCBOb25lOgotICAgICAgICBpZiBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6Ci0gICAgICAgICAgICBpZiBucy50aW1lb3V0IDw9IDA6Ci0gICAgICAgICAgICAgICAgbnMudGltZW91dCA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiBUaGUgdGltZW91dCBvcHRpb24gcmVxdWlyZXMgIgotICAgICAgICAgICAgICAgICAgImZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlciIpCi0gICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQotICAgIGlmIG5zLnVzZV9tcCBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgbnMudXNlX21wIDw9IDA6Ci0gICAgICAgICAgICAjIFVzZSBhbGwgY29yZXMgKyBleHRyYXMgZm9yIHRlc3RzIHRoYXQgbGlrZSB0byBzbGVlcAotICAgICAgICAgICAgbnMudXNlX21wID0gMiArIChvcy5jcHVfY291bnQoKSBvciAxKQotICAgICAgICBpZiBucy51c2VfbXAgPT0gMToKLSAgICAgICAgICAgIG5zLnVzZV9tcCA9IE5vbmUKLSAgICBpZiBucy51c2U6Ci0gICAgICAgIGZvciBhIGluIG5zLnVzZToKLSAgICAgICAgICAgIGZvciByIGluIGE6Ci0gICAgICAgICAgICAgICAgaWYgciA9PSAnYWxsJzoKLSAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlc1s6XSA9IFJFU09VUkNFX05BTUVTCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgciA9PSAnbm9uZSc6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBucy51c2VfcmVzb3VyY2VzWzpdCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgcmVtb3ZlID0gRmFsc2UKLSAgICAgICAgICAgICAgICBpZiByWzBdID09ICctJzoKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICByID0gclsxOl0KLSAgICAgICAgICAgICAgICBpZiByZW1vdmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHIgaW4gbnMudXNlX3Jlc291cmNlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXMucmVtb3ZlKHIpCi0gICAgICAgICAgICAgICAgZWxpZiByIG5vdCBpbiBucy51c2VfcmVzb3VyY2VzOgotICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLmFwcGVuZChyKQotICAgIGlmIG5zLnJhbmRvbV9zZWVkIGlzIG5vdCBOb25lOgotICAgICAgICBucy5yYW5kb21pemUgPSBUcnVlCi0KLSAgICByZXR1cm4gbnMKLQotCi1kZWYgcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0bmFtZSwgbnMpOgotICAgICIiIlJ1biB0aGUgZ2l2ZW4gdGVzdCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCAtLXNsYXZlYXJncy4KLQotICAgIG5zIGlzIHRoZSBvcHRpb24gTmFtZXNwYWNlIHBhcnNlZCBmcm9tIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIHJlZ3J0ZXN0Ci0gICAgaXMgaW52b2tlZCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCB0aGUgLS1zbGF2ZWFyZ3MgYXJndW1lbnQ7IHdoZW4gdGhlCi0gICAgc3VicHJvY2VzcyBleGl0cywgaXRzIHJldHVybiBjb2RlLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgcmV0dXJuZWQgYXMgYQotICAgIDMtdHVwbGUuCi0gICAgIiIiCi0gICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQotICAgIGJhc2VfY21kID0gKFtzeXMuZXhlY3V0YWJsZV0gKyBzdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpICsKLSAgICAgICAgICAgICAgICBbJy1YJywgJ2ZhdWx0aGFuZGxlcicsICctbScsICd0ZXN0LnJlZ3J0ZXN0J10pCi0gICAgIyByZXF1aXJlZCB0byBzcGF3biBhIG5ldyBwcm9jZXNzIHdpdGggUEdPIGZsYWcgb24vb2ZmCi0gICAgaWYgbnMucGdvOgotICAgICAgICBiYXNlX2NtZCA9IGJhc2VfY21kICsgWyctLXBnbyddCi0gICAgc2xhdmVhcmdzID0gKAotICAgICAgICAgICAgKHRlc3RuYW1lLCBucy52ZXJib3NlLCBucy5xdWlldCksCi0gICAgICAgICAgICBkaWN0KGh1bnRybGVha3M9bnMuaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgdXNlX3Jlc291cmNlcz1ucy51c2VfcmVzb3VyY2VzLAotICAgICAgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1ucy52ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgdGltZW91dD1ucy50aW1lb3V0LCBmYWlsZmFzdD1ucy5mYWlsZmFzdCwKLSAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bnMubWF0Y2hfdGVzdHMsIHBnbz1ucy5wZ28pKQotICAgICMgUnVubmluZyB0aGUgY2hpbGQgZnJvbSB0aGUgc2FtZSB3b3JraW5nIGRpcmVjdG9yeSBhcyByZWdydGVzdCdzIG9yaWdpbmFsCi0gICAgIyBpbnZvY2F0aW9uIGVuc3VyZXMgdGhhdCBURU1QRElSIGZvciB0aGUgY2hpbGQgaXMgdGhlIHNhbWUgd2hlbgotICAgICMgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpIGlzIHRydWUuIFNlZSBpc3N1ZSAxNTMwMC4KLSAgICBwb3BlbiA9IFBvcGVuKGJhc2VfY21kICsgWyctLXNsYXZlYXJncycsIGpzb24uZHVtcHMoc2xhdmVhcmdzKV0sCi0gICAgICAgICAgICAgICAgICBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsCi0gICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz0ob3MubmFtZSAhPSAnbnQnKSwKLSAgICAgICAgICAgICAgICAgIGN3ZD1zdXBwb3J0LlNBVkVEQ1dEKQotICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoKQotICAgIHJldGNvZGUgPSBwb3Blbi53YWl0KCkKLSAgICByZXR1cm4gcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIKLQotCi1kZWYgbWFpbih0ZXN0cz1Ob25lLCAqKmt3YXJncyk6Ci0gICAgIiIiRXhlY3V0ZSBhIHRlc3Qgc3VpdGUuCi0KLSAgICBUaGlzIGFsc28gcGFyc2VzIGNvbW1hbmQtbGluZSBvcHRpb25zIGFuZCBtb2RpZmllcyBpdHMgYmVoYXZpb3IKLSAgICBhY2NvcmRpbmdseS4KLQotICAgIHRlc3RzIC0tIGEgbGlzdCBvZiBzdHJpbmdzIGNvbnRhaW5pbmcgdGVzdCBuYW1lcyAob3B0aW9uYWwpCi0gICAgdGVzdGRpciAtLSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGxvb2sgZm9yIHRlc3RzIChvcHRpb25hbCkKLQotICAgIFVzZXJzIG90aGVyIHRoYW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlIHdpbGwgY2VydGFpbmx5IHdhbnQgdG8KLSAgICBzcGVjaWZ5IHRlc3RkaXI7IGlmIGl0J3Mgb21pdHRlZCwgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZQotICAgIFB5dGhvbiB0ZXN0IHN1aXRlIGlzIHNlYXJjaGVkIGZvci4KLQotICAgIElmIHRoZSB0ZXN0cyBhcmd1bWVudCBpcyBvbWl0dGVkLCB0aGUgdGVzdHMgbGlzdGVkIG9uIHRoZQotICAgIGNvbW1hbmQtbGluZSB3aWxsIGJlIHVzZWQuICBJZiB0aGF0J3MgZW1wdHksIHRvbywgdGhlbiBhbGwgKi5weQotICAgIGZpbGVzIGJlZ2lubmluZyB3aXRoIHRlc3RfIHdpbGwgYmUgdXNlZC4KLQotICAgIFRoZSBvdGhlciBkZWZhdWx0IGFyZ3VtZW50cyAodmVyYm9zZSwgcXVpZXQsIGV4Y2x1ZGUsCi0gICAgc2luZ2xlLCByYW5kb21pemUsIGZpbmRsZWFrcywgdXNlX3Jlc291cmNlcywgdHJhY2UsIGNvdmVyZGlyLAotICAgIHByaW50X3Nsb3csIGFuZCByYW5kb21fc2VlZCkgYWxsb3cgcHJvZ3JhbW1lcnMgY2FsbGluZyBtYWluKCkKLSAgICBkaXJlY3RseSB0byBzZXQgdGhlIHZhbHVlcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHNldCBieSBmbGFncwotICAgIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0gICAgIiIiCi0gICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycyAoZS5nLiBzZWdmYXVsdCkKLSAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKGFsbF90aHJlYWRzPVRydWUpCi0KLSAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gU0lHQUxSTSBvciBTSUdVU1IxIHNpZ25hbAotICAgIHNpZ25hbHMgPSBbXQotICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHQUxSTScpOgotICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHQUxSTSkKLSAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKToKLSAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR1VTUjEpCi0gICAgZm9yIHNpZ251bSBpbiBzaWduYWxzOgotICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBjaGFpbj1UcnVlKQotCi0gICAgcmVwbGFjZV9zdGRvdXQoKQotCi0gICAgc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCi0KLSAgICBucyA9IF9wYXJzZV9hcmdzKHN5cy5hcmd2WzE6XSwgKiprd2FyZ3MpCi0KLSAgICBpZiBucy5odW50cmxlYWtzOgotICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdmFyaW91cyBjYWNoZXMKLSAgICAgICAgIyBmaWxsaW5nIHNsb3dseSB3aXRoIHJhbmRvbSBkYXRhOgotICAgICAgICB3YXJtX2NhY2hlcygpCi0gICAgaWYgbnMubWVtbGltaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgIHN1cHBvcnQuc2V0X21lbWxpbWl0KG5zLm1lbWxpbWl0KQotICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGdjLnNldF90aHJlc2hvbGQobnMudGhyZXNob2xkKQotICAgIGlmIG5zLm5vd2luZG93czoKLSAgICAgICAgcHJpbnQoJ1RoZSAtLW5vd2luZG93cyAoLW4pIG9wdGlvbiBpcyBkZXByZWNhdGVkLiAnCi0gICAgICAgICAgICAgICdVc2UgLXZ2IHRvIGRpc3BsYXkgYXNzZXJ0aW9ucyBpbiBzdGRlcnIuJykKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBtc3ZjcnQKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBtc3ZjcnQuU2V0RXJyb3JNb2RlKG1zdmNydC5TRU1fRkFJTENSSVRJQ0FMRVJST1JTfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PR1BGQVVMVEVSUk9SQk9YfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9PUEVORklMRUVSUk9SQk9YKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAjIHJlbGVhc2UgYnVpbGQKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKLSAgICAgICAgICAgICAgICBpZiBucy52ZXJib3NlIGFuZCBucy52ZXJib3NlID49IDI6Ci0gICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQotICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZShtLCBtc3ZjcnQuQ1JUREJHX0ZJTEVfU1RERVJSKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCi0gICAgaWYgbnMud2FpdDoKLSAgICAgICAgaW5wdXQoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4iKQotCi0gICAgaWYgbnMuc2xhdmVhcmdzIGlzIG5vdCBOb25lOgotICAgICAgICBhcmdzLCBrd2FyZ3MgPSBqc29uLmxvYWRzKG5zLnNsYXZlYXJncykKLSAgICAgICAgaWYga3dhcmdzLmdldCgnaHVudHJsZWFrcycpOgotICAgICAgICAgICAgdW5pdHRlc3QuQmFzZVRlc3RTdWl0ZS5fY2xlYW51cCA9IEZhbHNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QoKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgJycKLSAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgcmVzdWx0ID0gQ0hJTERfRVJST1IsIHN0cihlKQotICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcHJpbnQoKSAgICMgRm9yY2UgYSBuZXdsaW5lIChqdXN0IGluIGNhc2UpCi0gICAgICAgIHByaW50KGpzb24uZHVtcHMocmVzdWx0KSkKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgIGdvb2QgPSBbXQotICAgIGJhZCA9IFtdCi0gICAgc2tpcHBlZCA9IFtdCi0gICAgcmVzb3VyY2VfZGVuaWVkcyA9IFtdCi0gICAgZW52aXJvbm1lbnRfY2hhbmdlZCA9IFtdCi0gICAgaW50ZXJydXB0ZWQgPSBGYWxzZQotCi0gICAgaWYgbnMuZmluZGxlYWtzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcHJpbnQoJ05vIEdDIGF2YWlsYWJsZSwgZGlzYWJsaW5nIGZpbmRsZWFrcy4nKQotICAgICAgICAgICAgbnMuZmluZGxlYWtzID0gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IHRvIHJlcG9ydCBnYXJiYWdlIHRoYXQgaXMgbm90Ci0gICAgICAgICAgICAjIGZyZWVhYmxlIGJ5IHJlZmVyZW5jZSBjb3VudGluZyBhbG9uZS4gIEJ5IGRlZmF1bHQgb25seQotICAgICAgICAgICAgIyBnYXJiYWdlIHRoYXQgaXMgbm90IGNvbGxlY3RhYmxlIGJ5IHRoZSBHQyBpcyByZXBvcnRlZC4KLSAgICAgICAgICAgICNnYy5zZXRfZGVidWcoZ2MuREVCVUdfU0FWRUFMTCkKLSAgICAgICAgICAgIGZvdW5kX2dhcmJhZ2UgPSBbXQotCi0gICAgaWYgbnMuaHVudHJsZWFrczoKLSAgICAgICAgdW5pdHRlc3QuQmFzZVRlc3RTdWl0ZS5fY2xlYW51cCA9IEZhbHNlCi0KLSAgICBpZiBucy5zaW5nbGU6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICdweW5leHR0ZXN0JykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG5leHRfdGVzdCA9IGZwLnJlYWQoKS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgdGVzdHMgPSBbbmV4dF90ZXN0XQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGlmIG5zLmZyb21maWxlOgotICAgICAgICB0ZXN0cyA9IFtdCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgbnMuZnJvbWZpbGUpKSBhcyBmcDoKLSAgICAgICAgICAgIGNvdW50X3BhdCA9IHJlLmNvbXBpbGUocidcW1xzKlxkKy9ccypcZCtcXScpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBmcDoKLSAgICAgICAgICAgICAgICBsaW5lID0gY291bnRfcGF0LnN1YignJywgbGluZSkKLSAgICAgICAgICAgICAgICBndXRzID0gbGluZS5zcGxpdCgpICMgYXNzdW1pbmcgbm8gdGVzdCBoYXMgd2hpdGVzcGFjZSBpbiBpdHMgbmFtZQotICAgICAgICAgICAgICAgIGlmIGd1dHMgYW5kIG5vdCBndXRzWzBdLnN0YXJ0c3dpdGgoJyMnKToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKGd1dHMpCi0KLSAgICAjIFN0cmlwIC5weSBleHRlbnNpb25zLgotICAgIHJlbW92ZXB5KG5zLmFyZ3MpCi0gICAgcmVtb3ZlcHkodGVzdHMpCi0KLSAgICBzdGR0ZXN0cyA9IFNURFRFU1RTWzpdCi0gICAgbm90dGVzdHMgPSBOT1RURVNUUy5jb3B5KCkKLSAgICBpZiBucy5leGNsdWRlOgotICAgICAgICBmb3IgYXJnIGluIG5zLmFyZ3M6Ci0gICAgICAgICAgICBpZiBhcmcgaW4gc3RkdGVzdHM6Ci0gICAgICAgICAgICAgICAgc3RkdGVzdHMucmVtb3ZlKGFyZykKLSAgICAgICAgICAgIG5vdHRlc3RzLmFkZChhcmcpCi0gICAgICAgIG5zLmFyZ3MgPSBbXQotCi0gICAgIyBGb3IgYSBwYXJ0aWFsIHJ1biwgd2UgZG8gbm90IG5lZWQgdG8gY2x1dHRlciB0aGUgb3V0cHV0LgotICAgIGlmIChucy52ZXJib3NlIG9yIG5zLmhlYWRlciBvcgotICAgICAgICAgICAgbm90IChucy5wZ28gb3IgbnMucXVpZXQgb3IgbnMuc2luZ2xlIG9yIHRlc3RzIG9yIG5zLmFyZ3MpKToKLSAgICAgICAgIyBQcmludCBiYXNpYyBwbGF0Zm9ybSBpbmZvcm1hdGlvbgotICAgICAgICBwcmludCgiPT0iLCBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSwgKnN5cy52ZXJzaW9uLnNwbGl0KCkpCi0gICAgICAgIHByaW50KCI9PSAgIiwgcGxhdGZvcm0ucGxhdGZvcm0oYWxpYXNlZD1UcnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIlcy1lbmRpYW4iICUgc3lzLmJ5dGVvcmRlcikKLSAgICAgICAgcHJpbnQoIj09ICAiLCAiaGFzaCBhbGdvcml0aG06Iiwgc3lzLmhhc2hfaW5mby5hbGdvcml0aG0sCi0gICAgICAgICAgICAgICAgIjY0Yml0IiBpZiBzeXMubWF4c2l6ZSA+IDIqKjMyIGVsc2UgIjMyYml0IikKLSAgICAgICAgcHJpbnQoIj09ICAiLCBvcy5nZXRjd2QoKSkKLSAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCi0KLSAgICAjIGlmIHRlc3RkaXIgaXMgc2V0LCB0aGVuIHdlIGFyZSBub3QgcnVubmluZyB0aGUgcHl0aG9uIHRlc3RzIHN1aXRlLCBzbwotICAgICMgZG9uJ3QgYWRkIGRlZmF1bHQgdGVzdHMgdG8gYmUgZXhlY3V0ZWQgb3Igc2tpcHBlZCAocGFzcyBlbXB0eSB2YWx1ZXMpCi0gICAgaWYgbnMudGVzdGRpcjoKLSAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHMobnMudGVzdGRpciwgbGlzdCgpLCBzZXQoKSkKLSAgICBlbHNlOgotICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhucy50ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCi0KLSAgICBzZWxlY3RlZCA9IHRlc3RzIG9yIG5zLmFyZ3Mgb3IgYWxsdGVzdHMKLSAgICBpZiBucy5zaW5nbGU6Ci0gICAgICAgIHNlbGVjdGVkID0gc2VsZWN0ZWRbOjFdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5leHRfc2luZ2xlX3Rlc3QgPSBhbGx0ZXN0c1thbGx0ZXN0cy5pbmRleChzZWxlY3RlZFswXSkrMV0KLSAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICBuZXh0X3NpbmdsZV90ZXN0ID0gTm9uZQotICAgICMgUmVtb3ZlIGFsbCB0aGUgc2VsZWN0ZWQgdGVzdHMgdGhhdCBwcmVjZWRlIHN0YXJ0IGlmIGl0J3Mgc2V0LgotICAgIGlmIG5zLnN0YXJ0OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWwgc2VsZWN0ZWRbOnNlbGVjdGVkLmluZGV4KG5zLnN0YXJ0KV0KLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBzdGFydGluZyB0ZXN0ICglcyksIHVzaW5nIGFsbCB0ZXN0cyIgJSBucy5zdGFydCkKLSAgICBpZiBucy5yYW5kb21pemU6Ci0gICAgICAgIGlmIG5zLnJhbmRvbV9zZWVkIGlzIE5vbmU6Ci0gICAgICAgICAgICBucy5yYW5kb21fc2VlZCA9IHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAwMDApCi0gICAgICAgIHJhbmRvbS5zZWVkKG5zLnJhbmRvbV9zZWVkKQotICAgICAgICBwcmludCgiVXNpbmcgcmFuZG9tIHNlZWQiLCBucy5yYW5kb21fc2VlZCkKLSAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZWN0ZWQpCi0gICAgaWYgbnMudHJhY2U6Ci0gICAgICAgIGltcG9ydCB0cmFjZSwgdGVtcGZpbGUKLSAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuZ2V0dGVtcGRpcigpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCi0KLSAgICB0ZXN0X3RpbWVzID0gW10KLSAgICBzdXBwb3J0LnZlcmJvc2UgPSBucy52ZXJib3NlICAgICAgIyBUZWxsIHRlc3RzIHRvIGJlIG1vZGVyYXRlbHkgcXVpZXQKLSAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSBucy51c2VfcmVzb3VyY2VzCi0gICAgc2F2ZV9tb2R1bGVzID0gc3lzLm1vZHVsZXMua2V5cygpCi0KLSAgICBkZWYgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KToKLSAgICAgICAgb2ssIHRlc3RfdGltZSA9IHJlc3VsdAotICAgICAgICBpZiBvayBub3QgaW4gKENISUxEX0VSUk9SLCBJTlRFUlJVUFRFRCk6Ci0gICAgICAgICAgICB0ZXN0X3RpbWVzLmFwcGVuZCgodGVzdF90aW1lLCB0ZXN0KSkKLSAgICAgICAgaWYgb2sgPT0gUEFTU0VEOgotICAgICAgICAgICAgZ29vZC5hcHBlbmQodGVzdCkKLSAgICAgICAgZWxpZiBvayA9PSBGQUlMRUQ6Ci0gICAgICAgICAgICBiYWQuYXBwZW5kKHRlc3QpCi0gICAgICAgIGVsaWYgb2sgPT0gRU5WX0NIQU5HRUQ6Ci0gICAgICAgICAgICBlbnZpcm9ubWVudF9jaGFuZ2VkLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IFNLSVBQRUQ6Ci0gICAgICAgICAgICBza2lwcGVkLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IFJFU09VUkNFX0RFTklFRDoKLSAgICAgICAgICAgIHNraXBwZWQuYXBwZW5kKHRlc3QpCi0gICAgICAgICAgICByZXNvdXJjZV9kZW5pZWRzLmFwcGVuZCh0ZXN0KQotCi0gICAgaWYgbnMuZm9yZXZlcjoKLSAgICAgICAgZGVmIHRlc3RfZm9yZXZlcih0ZXN0cz1saXN0KHNlbGVjdGVkKSk6Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJhZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICB0ZXN0cyA9IHRlc3RfZm9yZXZlcigpCi0gICAgICAgIHRlc3RfY291bnQgPSAnJwotICAgICAgICB0ZXN0X2NvdW50X3dpZHRoID0gMwotICAgIGVsc2U6Ci0gICAgICAgIHRlc3RzID0gaXRlcihzZWxlY3RlZCkKLSAgICAgICAgdGVzdF9jb3VudCA9ICcve30nLmZvcm1hdChsZW4oc2VsZWN0ZWQpKQotICAgICAgICB0ZXN0X2NvdW50X3dpZHRoID0gbGVuKHRlc3RfY291bnQpIC0gMQotCi0gICAgaWYgbnMudXNlX21wOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJNdWx0aXByb2Nlc3Mgb3B0aW9uIHJlcXVpcmVzIHRocmVhZCBzdXBwb3J0IikKLSAgICAgICAgICAgIHN5cy5leGl0KDIpCi0gICAgICAgIGZyb20gcXVldWUgaW1wb3J0IFF1ZXVlCi0gICAgICAgIGRlYnVnX291dHB1dF9wYXQgPSByZS5jb21waWxlKHIiXFtcZCsgcmVmcywgXGQrIGJsb2Nrc1xdJCIpCi0gICAgICAgIG91dHB1dCA9IFF1ZXVlKCkKLSAgICAgICAgcGVuZGluZyA9IE11bHRpcHJvY2Vzc1Rlc3RzKHRlc3RzKQotICAgICAgICBkZWYgd29yaygpOgotICAgICAgICAgICAgIyBBIHdvcmtlciB0aHJlYWQuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IG5leHQocGVuZGluZykKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHJ1bl90ZXN0X2luX3N1YnByb2Nlc3ModGVzdCwgbnMpCi0gICAgICAgICAgICAgICAgICAgICMgU3RyaXAgbGFzdCByZWZjb3VudCBvdXRwdXQgbGluZSBpZiBpdCBleGlzdHMsIHNpbmNlIGl0Ci0gICAgICAgICAgICAgICAgICAgICMgY29tZXMgZnJvbSB0aGUgc2h1dGRvd24gb2YgdGhlIGludGVycHJldGVyIGluIHRoZSBzdWJjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBkZWJ1Z19vdXRwdXRfcGF0LnN1YigiIiwgc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIF8sIHJlc3VsdCA9IHN0ZG91dC5zdHJpcCgpLnJwYXJ0aXRpb24oIlxuIikKLSAgICAgICAgICAgICAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKENISUxEX0VSUk9SLCAiRXhpdCBjb2RlICVzIiAlIHJldGNvZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwgcmVzdWx0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLCByZXN1bHQpKQotICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgd29ya2VycyA9IFtUaHJlYWQodGFyZ2V0PXdvcmspIGZvciBpIGluIHJhbmdlKG5zLnVzZV9tcCldCi0gICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKLSAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCi0gICAgICAgIGZpbmlzaGVkID0gMAotICAgICAgICB0ZXN0X2luZGV4ID0gMQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBmaW5pc2hlZCA8IG5zLnVzZV9tcDoKLSAgICAgICAgICAgICAgICB0ZXN0LCBzdGRvdXQsIHN0ZGVyciwgcmVzdWx0ID0gb3V0cHV0LmdldCgpCi0gICAgICAgICAgICAgICAgaWYgdGVzdCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBmaW5pc2hlZCArPSAxCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQotICAgICAgICAgICAgICAgIGlmIG5vdCBucy5xdWlldDoKLSAgICAgICAgICAgICAgICAgICAgaWYgYmFkIGFuZCBub3QgbnMucGdvOgotICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IgotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9XSB7NH0iCi0gICAgICAgICAgICAgICAgICAgIHByaW50KGZtdC5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50X3dpZHRoLCB0ZXN0X2luZGV4LCB0ZXN0X2NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGJhZCksIHRlc3QpKQotICAgICAgICAgICAgICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoc3Rkb3V0KQotICAgICAgICAgICAgICAgIGlmIHN0ZGVyciBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoc3RkZXJyLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IElOVEVSUlVQVEVEOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAotICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBDSElMRF9FUlJPUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pKQotICAgICAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgICAgIHBlbmRpbmcuaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKLSAgICAgICAgICAgIHdvcmtlci5qb2luKCkKLSAgICBlbHNlOgotICAgICAgICBmb3IgdGVzdF9pbmRleCwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgotICAgICAgICAgICAgaWYgbm90IG5zLnF1aWV0OgotICAgICAgICAgICAgICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfV0gezR9IgotICAgICAgICAgICAgICAgIHByaW50KGZtdC5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfY291bnRfd2lkdGgsIHRlc3RfaW5kZXgsIHRlc3RfY291bnQsIGxlbihiYWQpLCB0ZXN0KSkKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgIGlmIG5zLnRyYWNlOgotICAgICAgICAgICAgICAgICMgSWYgd2UncmUgdHJhY2luZyBjb2RlIGNvdmVyYWdlLCB0aGVuIHdlIGRvbid0IGV4aXQgd2l0aCBzdGF0dXMKLSAgICAgICAgICAgICAgICAjIGlmIG9uIGEgZmFsc2UgcmV0dXJuIHZhbHVlIGZyb20gbWFpbi4KLSAgICAgICAgICAgICAgICB0cmFjZXIucnVuY3R4KCdydW50ZXN0KHRlc3QsIG5zLnZlcmJvc2UsIG5zLnF1aWV0LCB0aW1lb3V0PW5zLnRpbWVvdXQpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscygpLCBsb2NhbHM9dmFycygpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QodGVzdCwgbnMudmVyYm9zZSwgbnMucXVpZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnMuaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1ucy52ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PW5zLnRpbWVvdXQsIGZhaWxmYXN0PW5zLmZhaWxmYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW5zLm1hdGNoX3Rlc3RzLCBwZ289bnMucGdvKQotICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIG5zLmZpbmRsZWFrczoKLSAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgICAgICBpZiBnYy5nYXJiYWdlOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiV2FybmluZzogdGVzdCBjcmVhdGVkIiwgbGVuKGdjLmdhcmJhZ2UpLCBlbmQ9JyAnKQotICAgICAgICAgICAgICAgICAgICBwcmludCgidW5jb2xsZWN0YWJsZSBvYmplY3QocykuIikKLSAgICAgICAgICAgICAgICAgICAgIyBtb3ZlIHRoZSB1bmNvbGxlY3RhYmxlIG9iamVjdHMgc29tZXdoZXJlIHNvIHdlIGRvbid0IHNlZQotICAgICAgICAgICAgICAgICAgICAjIHRoZW0gYWdhaW4KLSAgICAgICAgICAgICAgICAgICAgZm91bmRfZ2FyYmFnZS5leHRlbmQoZ2MuZ2FyYmFnZSkKLSAgICAgICAgICAgICAgICAgICAgZGVsIGdjLmdhcmJhZ2VbOl0KLSAgICAgICAgICAgICMgVW5sb2FkIHRoZSBuZXdseSBpbXBvcnRlZCBtb2R1bGVzIChiZXN0IGVmZm9ydCBmaW5hbGl6YXRpb24pCi0gICAgICAgICAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLmtleXMoKToKLSAgICAgICAgICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNhdmVfbW9kdWxlcyBhbmQgbW9kdWxlLnN0YXJ0c3dpdGgoInRlc3QuIik6Ci0gICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKG1vZHVsZSkKLQotICAgIGlmIGludGVycnVwdGVkIGFuZCBub3QgbnMucGdvOgotICAgICAgICAjIHByaW50IGEgbmV3bGluZSBhZnRlciBeQwotICAgICAgICBwcmludCgpCi0gICAgICAgIHByaW50KCJUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuIikKLSAgICAgICAgb21pdHRlZCA9IHNldChzZWxlY3RlZCkgLSBzZXQoZ29vZCkgLSBzZXQoYmFkKSAtIHNldChza2lwcGVkKQotICAgICAgICBwcmludChjb3VudChsZW4ob21pdHRlZCksICJ0ZXN0IiksICJvbWl0dGVkOiIpCi0gICAgICAgIHByaW50bGlzdChvbWl0dGVkKQotICAgIGlmIGdvb2QgYW5kIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgaWYgbm90IGJhZCBhbmQgbm90IHNraXBwZWQgYW5kIG5vdCBpbnRlcnJ1cHRlZCBhbmQgbGVuKGdvb2QpID4gMToKLSAgICAgICAgICAgIHByaW50KCJBbGwiLCBlbmQ9JyAnKQotICAgICAgICBwcmludChjb3VudChsZW4oZ29vZCksICJ0ZXN0IiksICJPSy4iKQotICAgIGlmIG5zLnByaW50X3Nsb3c6Ci0gICAgICAgIHRlc3RfdGltZXMuc29ydChyZXZlcnNlPVRydWUpCi0gICAgICAgIHByaW50KCIxMCBzbG93ZXN0IHRlc3RzOiIpCi0gICAgICAgIGZvciB0aW1lLCB0ZXN0IGluIHRlc3RfdGltZXNbOjEwXToKLSAgICAgICAgICAgIHByaW50KCIlczogJS4xZnMiICUgKHRlc3QsIHRpbWUpKQotICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgcHJpbnQoY291bnQobGVuKGJhZCksICJ0ZXN0IiksICJmYWlsZWQ6IikKLSAgICAgICAgcHJpbnRsaXN0KGJhZCkKLSAgICBpZiBlbnZpcm9ubWVudF9jaGFuZ2VkIGFuZCBub3QgbnMucGdvOgotICAgICAgICBwcmludCgie30gYWx0ZXJlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50OiIuZm9ybWF0KAotICAgICAgICAgICAgICAgICBjb3VudChsZW4oZW52aXJvbm1lbnRfY2hhbmdlZCksICJ0ZXN0IikpKQotICAgICAgICBwcmludGxpc3QoZW52aXJvbm1lbnRfY2hhbmdlZCkKLSAgICBpZiBza2lwcGVkIGFuZCBub3QgbnMucXVpZXQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgIHByaW50KGNvdW50KGxlbihza2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IikKLSAgICAgICAgcHJpbnRsaXN0KHNraXBwZWQpCi0KLSAgICBpZiBucy52ZXJib3NlMiBhbmQgYmFkOgotICAgICAgICBwcmludCgiUmUtcnVubmluZyBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIikKLSAgICAgICAgZm9yIHRlc3QgaW4gYmFkWzpdOgotICAgICAgICAgICAgaWYgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICBwcmludCgiUmUtcnVubmluZyB0ZXN0ICVyIGluIHZlcmJvc2UgbW9kZSIgJSB0ZXN0KQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbnMudmVyYm9zZSA9IFRydWUKLSAgICAgICAgICAgICAgICBvayA9IHJ1bnRlc3QodGVzdCwgVHJ1ZSwgbnMucXVpZXQsIG5zLmh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9bnMudGltZW91dCwgcGdvPW5zLnBnbykKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQwotICAgICAgICAgICAgICAgIHByaW50KCkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBva1swXSBpbiB7UEFTU0VELCBFTlZfQ0hBTkdFRCwgU0tJUFBFRCwgUkVTT1VSQ0VfREVOSUVEfToKLSAgICAgICAgICAgICAgICAgICAgYmFkLnJlbW92ZSh0ZXN0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgYmFkOgotICAgICAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihiYWQpLCAndGVzdCcpLCAiZmFpbGVkIGFnYWluOiIpCi0gICAgICAgICAgICAgICAgcHJpbnRsaXN0KGJhZCkKLQotICAgIGlmIG5zLnNpbmdsZToKLSAgICAgICAgaWYgbmV4dF9zaW5nbGVfdGVzdDoKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3cnKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBmcC53cml0ZShuZXh0X3NpbmdsZV90ZXN0ICsgJ1xuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZSkKLQotICAgIGlmIG5zLnRyYWNlOgotICAgICAgICByID0gdHJhY2VyLnJlc3VsdHMoKQotICAgICAgICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIHN1bW1hcnk9VHJ1ZSwgY292ZXJkaXI9bnMuY292ZXJkaXIpCi0KLSAgICBpZiBucy5ydW5sZWFrczoKLSAgICAgICAgb3Muc3lzdGVtKCJsZWFrcyAlZCIgJSBvcy5nZXRwaWQoKSkKLQotICAgIHN5cy5leGl0KGxlbihiYWQpID4gMCBvciBpbnRlcnJ1cHRlZCkKLQotCi0jIHNtYWxsIHNldCBvZiB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIGJhc2ljYWxseSBmdW5jdGlvbmluZyBpbnRlcnByZXRlcgotIyAoaS5lLiBpZiBhbnkgb2YgdGhlc2UgZmFpbCwgdGhlbiBhbnl0aGluZyBlbHNlIGlzIGxpa2VseSB0byBmb2xsb3cpCi1TVERURVNUUyA9IFsKLSAgICAndGVzdF9ncmFtbWFyJywKLSAgICAndGVzdF9vcGNvZGVzJywKLSAgICAndGVzdF9kaWN0JywKLSAgICAndGVzdF9idWlsdGluJywKLSAgICAndGVzdF9leGNlcHRpb25zJywKLSAgICAndGVzdF90eXBlcycsCi0gICAgJ3Rlc3RfdW5pdHRlc3QnLAotICAgICd0ZXN0X2RvY3Rlc3QnLAotICAgICd0ZXN0X2RvY3Rlc3QyJywKLSAgICAndGVzdF9zdXBwb3J0JwotXQotCi0jIHNldCBvZiB0ZXN0cyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYmUgZXhlY3V0ZWQgd2hlbiB1c2luZyByZWdydGVzdAotTk9UVEVTVFMgPSBzZXQoKQotCi1kZWYgZmluZHRlc3RzKHRlc3RkaXI9Tm9uZSwgc3RkdGVzdHM9U1REVEVTVFMsIG5vdHRlc3RzPU5PVFRFU1RTKToKLSAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhcHBsaWNhYmxlIHRlc3QgbW9kdWxlcy4iIiIKLSAgICB0ZXN0ZGlyID0gZmluZHRlc3RkaXIodGVzdGRpcikKLSAgICBuYW1lcyA9IG9zLmxpc3RkaXIodGVzdGRpcikKLSAgICB0ZXN0cyA9IFtdCi0gICAgb3RoZXJzID0gc2V0KHN0ZHRlc3RzKSB8IG5vdHRlc3RzCi0gICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgIG1vZCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICBpZiBtb2RbOjVdID09ICJ0ZXN0XyIgYW5kIGV4dCBpbiAoIi5weSIsICIiKSBhbmQgbW9kIG5vdCBpbiBvdGhlcnM6Ci0gICAgICAgICAgICB0ZXN0cy5hcHBlbmQobW9kKQotICAgIHJldHVybiBzdGR0ZXN0cyArIHNvcnRlZCh0ZXN0cykKLQotIyBXZSBkbyBub3QgdXNlIGEgZ2VuZXJhdG9yIHNvIG11bHRpcGxlIHRocmVhZHMgY2FuIGNhbGwgbmV4dCgpLgotY2xhc3MgTXVsdGlwcm9jZXNzVGVzdHMob2JqZWN0KToKLQotICAgICIiIkEgdGhyZWFkLXNhZmUgaXRlcmF0b3Igb3ZlciB0ZXN0cyBmb3IgbXVsdGlwcm9jZXNzIG1vZGUuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHMpOgotICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQotICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX25leHRfXyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmxvY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oJ3Rlc3RzIGludGVycnVwdGVkJykKLSAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGVzdHMpCi0KLWRlZiByZXBsYWNlX3N0ZG91dCgpOgotICAgICIiIlNldCBzdGRvdXQgZW5jb2RlciBlcnJvciBoYW5kbGVyIHRvIGJhY2tzbGFzaHJlcGxhY2UgKGFzIHN0ZGVyciBlcnJvcgotICAgIGhhbmRsZXIpIHRvIGF2b2lkIFVuaWNvZGVFbmNvZGVFcnJvciB3aGVuIHByaW50aW5nIGEgdHJhY2ViYWNrIiIiCi0gICAgaW1wb3J0IGF0ZXhpdAotCi0gICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgIHN5cy5zdGRvdXQgPSBvcGVuKHN0ZG91dC5maWxlbm8oKSwgJ3cnLAotICAgICAgICBlbmNvZGluZz1zdGRvdXQuZW5jb2RpbmcsCi0gICAgICAgIGVycm9ycz0iYmFja3NsYXNocmVwbGFjZSIsCi0gICAgICAgIGNsb3NlZmQ9RmFsc2UsCi0gICAgICAgIG5ld2xpbmU9J1xuJykKLQotICAgIGRlZiByZXN0b3JlX3N0ZG91dCgpOgotICAgICAgICBzeXMuc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAotICAgIGF0ZXhpdC5yZWdpc3RlcihyZXN0b3JlX3N0ZG91dCkKLQotZGVmIHJ1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsCi0gICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsCi0gICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsCi0gICAgICAgICAgICB0aW1lb3V0PU5vbmUsICosIHBnbz1GYWxzZSk6Ci0gICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QuCi0KLSAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0Ci0gICAgdmVyYm9zZSAtLSBpZiB0cnVlLCBwcmludCBtb3JlIG1lc3NhZ2VzCi0gICAgcXVpZXQgLS0gaWYgdHJ1ZSwgZG9uJ3QgcHJpbnQgJ3NraXBwZWQnIG1lc3NhZ2VzIChwcm9iYWJseSByZWR1bmRhbnQpCi0gICAgaHVudHJsZWFrcyAtLSBydW4gbXVsdGlwbGUgdGltZXMgdG8gdGVzdCBmb3IgbGVha3M7IHJlcXVpcmVzIGEgZGVidWcKLSAgICAgICAgICAgICAgICAgIGJ1aWxkOyBhIHRyaXBsZSBjb3JyZXNwb25kaW5nIHRvIC1SJ3MgdGhyZWUgYXJndW1lbnRzCi0gICAgdXNlX3Jlc291cmNlcyAtLSBsaXN0IG9mIGV4dHJhIHJlc291cmNlcyB0byB1c2UKLSAgICBvdXRwdXRfb25fZmFpbHVyZSAtLSBpZiB0cnVlLCBkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUKLSAgICB0aW1lb3V0IC0tIGR1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgbW9yZSB0aGFuCi0gICAgICAgICAgICAgICB0aW1lb3V0IHNlY29uZHMKLSAgICBmYWlsZmFzdCwgbWF0Y2hfdGVzdHMgLS0gU2VlIHJlZ3J0ZXN0IGNvbW1hbmQtbGluZSBmbGFncyBmb3IgdGhlc2UuCi0gICAgcGdvIC0tIGlmIHRydWUsIGRvIG5vdCBwcmludCB1bm5lY2Vzc2FyeSBpbmZvIHdoZW4gcnVubmluZyB0aGUgdGVzdAotICAgICAgICAgICBmb3IgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIGJ1aWxkCi0KLSAgICBSZXR1cm5zIHRoZSB0dXBsZSByZXN1bHQsIHRlc3RfdGltZSwgd2hlcmUgcmVzdWx0IGlzIG9uZSBvZiB0aGUgY29uc3RhbnRzOgotICAgICAgICBJTlRFUlJVUFRFRCAgICAgIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gcnVuIHVuZGVyIC1qCi0gICAgICAgIFJFU09VUkNFX0RFTklFRCAgdGVzdCBza2lwcGVkIGJlY2F1c2UgcmVzb3VyY2UgZGVuaWVkCi0gICAgICAgIFNLSVBQRUQgICAgICAgICAgdGVzdCBza2lwcGVkIGZvciBzb21lIG90aGVyIHJlYXNvbgotICAgICAgICBFTlZfQ0hBTkdFRCAgICAgIHRlc3QgZmFpbGVkIGJlY2F1c2UgaXQgY2hhbmdlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50Ci0gICAgICAgIEZBSUxFRCAgICAgICAgICAgdGVzdCBmYWlsZWQKLSAgICAgICAgUEFTU0VEICAgICAgICAgICB0ZXN0IHBhc3NlZAotICAgICIiIgotICAgIGlmIHVzZV9yZXNvdXJjZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgIHN1cHBvcnQudXNlX3Jlc291cmNlcyA9IHVzZV9yZXNvdXJjZXMKLSAgICB1c2VfdGltZW91dCA9ICh0aW1lb3V0IGlzIG5vdCBOb25lKQotICAgIGlmIHVzZV90aW1lb3V0OgotICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgZXhpdD1UcnVlKQotICAgIHRyeToKLSAgICAgICAgc3VwcG9ydC5tYXRjaF90ZXN0cyA9IG1hdGNoX3Rlc3RzCi0gICAgICAgIGlmIGZhaWxmYXN0OgotICAgICAgICAgICAgc3VwcG9ydC5mYWlsZmFzdCA9IFRydWUKLSAgICAgICAgaWYgb3V0cHV0X29uX2ZhaWx1cmU6Ci0gICAgICAgICAgICBzdXBwb3J0LnZlcmJvc2UgPSBUcnVlCi0KLSAgICAgICAgICAgICMgUmV1c2UgdGhlIHNhbWUgaW5zdGFuY2UgdG8gYWxsIGNhbGxzIHRvIHJ1bnRlc3QoKS4gU29tZQotICAgICAgICAgICAgIyB0ZXN0cyBrZWVwIGEgcmVmZXJlbmNlIHRvIHN5cy5zdGRvdXQgb3Igc3lzLnN0ZGVycgotICAgICAgICAgICAgIyAoZWcuIHRlc3RfYXJncGFyc2UpLgotICAgICAgICAgICAgaWYgcnVudGVzdC5zdHJpbmdpbyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgICAgICBydW50ZXN0LnN0cmluZ2lvID0gc3RyZWFtCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0cmVhbSA9IHJ1bnRlc3Quc3RyaW5naW8KLSAgICAgICAgICAgICAgICBzdHJlYW0uc2VlaygwKQotICAgICAgICAgICAgICAgIHN0cmVhbS50cnVuY2F0ZSgpCi0KLSAgICAgICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgICAgICAgICAgb3JpZ19zdGRlcnIgPSBzeXMuc3RkZXJyCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN0cmVhbQotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzdHJlYW0KLSAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mYWlsdXJlPUZhbHNlLCBwZ289cGdvKQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSAhPSBQQVNTRUQgYW5kIG5vdCBwZ286Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0cmVhbS5nZXR2YWx1ZSgpCi0gICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLndyaXRlKG91dHB1dCkKLSAgICAgICAgICAgICAgICAgICAgb3JpZ19zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gb3JpZ19zdGRvdXQKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IHZlcmJvc2UgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0Ci0gICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2ZhaWx1cmU9bm90IHZlcmJvc2UsIHBnbz1wZ28pCi0gICAgICAgIHJldHVybiByZXN1bHQKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiB1c2VfdGltZW91dDoKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQotICAgICAgICBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3QsIHZlcmJvc2UpCi1ydW50ZXN0LnN0cmluZ2lvID0gTm9uZQotCi0jIFVuaXQgdGVzdHMgYXJlIHN1cHBvc2VkIHRvIGxlYXZlIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgdW5jaGFuZ2VkCi0jIG9uY2UgdGhleSBjb21wbGV0ZS4gIEJ1dCBzb21ldGltZXMgdGVzdHMgaGF2ZSBidWdzLCBlc3BlY2lhbGx5IHdoZW4KLSMgdGVzdHMgZmFpbCwgYW5kIHRoZSBjaGFuZ2VzIHRvIGVudmlyb25tZW50IGdvIG9uIHRvIG1lc3MgdXAgb3RoZXIKLSMgdGVzdHMuICBUaGlzIGNhbiBjYXVzZSBpc3N1ZXMgd2l0aCBidWlsZGJvdCBzdGFiaWxpdHksIHNpbmNlIHRlc3RzCi0jIGFyZSBydW4gaW4gcmFuZG9tIG9yZGVyIGFuZCBzbyBwcm9ibGVtcyBtYXkgYXBwZWFyIHRvIGNvbWUgYW5kIGdvLgotIyBUaGVyZSBhcmUgYSBmZXcgdGhpbmdzIHdlIGNhbiBzYXZlIGFuZCByZXN0b3JlIHRvIG1pdGlnYXRlIHRoaXMsIGFuZAotIyB0aGUgZm9sbG93aW5nIGNvbnRleHQgbWFuYWdlciBoYW5kbGVzIHRoaXMgdGFzay4KLQotY2xhc3Mgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudDoKLSAgICAiIiJTYXZlIGJpdHMgb2YgdGhlIHRlc3QgZW52aXJvbm1lbnQgYW5kIHJlc3RvcmUgdGhlbSBhdCBibG9jayBleGl0LgotCi0gICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0bmFtZSwgdmVyYm9zZSwgcXVpZXQpOgotICAgICAgICAgICAgI3N0dWZmCi0KLSAgICBVbmxlc3MgcXVpZXQgaXMgVHJ1ZSwgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gc3RkZXJyIGlmIGFueSBvZgotICAgIHRoZSBzYXZlZCBpdGVtcyB3YXMgY2hhbmdlZCBieSB0aGUgdGVzdC4gIFRoZSBhdHRyaWJ1dGUgJ2NoYW5nZWQnCi0gICAgaXMgaW5pdGlhbGx5IEZhbHNlLCBidXQgaXMgc2V0IHRvIFRydWUgaWYgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCi0KLSAgICBJZiB2ZXJib3NlIGlzIG1vcmUgdGhhbiAxLCB0aGUgYmVmb3JlIGFuZCBhZnRlciBzdGF0ZSBvZiBjaGFuZ2VkCi0gICAgaXRlbXMgaXMgYWxzbyBwcmludGVkLgotICAgICIiIgotCi0gICAgY2hhbmdlZCA9IEZhbHNlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdG5hbWUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsICosIHBnbz1GYWxzZSk6Ci0gICAgICAgIHNlbGYudGVzdG5hbWUgPSB0ZXN0bmFtZQotICAgICAgICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCi0gICAgICAgIHNlbGYucXVpZXQgPSBxdWlldAotICAgICAgICBzZWxmLnBnbyA9IHBnbwotCi0gICAgIyBUbyBhZGQgdGhpbmdzIHRvIHNhdmUgYW5kIHJlc3RvcmUsIGFkZCBhIG5hbWUgWFhYIHRvIHRoZSByZXNvdXJjZXMgbGlzdAotICAgICMgYW5kIGFkZCBjb3JyZXNwb25kaW5nIGdldF9YWFgvcmVzdG9yZV9YWFggZnVuY3Rpb25zLiAgZ2V0X1hYWCBzaG91bGQKLSAgICAjIHJldHVybiB0aGUgdmFsdWUgdG8gYmUgc2F2ZWQgYW5kIGNvbXBhcmVkIGFnYWluc3QgYSBzZWNvbmQgY2FsbCB0byB0aGUKLSAgICAjIGdldCBmdW5jdGlvbiB3aGVuIHRlc3QgZXhlY3V0aW9uIGNvbXBsZXRlcy4gIHJlc3RvcmVfWFhYIHNob3VsZCBhY2NlcHQKLSAgICAjIHRoZSBzYXZlZCB2YWx1ZSBhbmQgcmVzdG9yZSB0aGUgcmVzb3VyY2UgdXNpbmcgaXQuICBJdCB3aWxsIGJlIGNhbGxlZCBpZgotICAgICMgYW5kIG9ubHkgaWYgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIGlzIGRldGVjdGVkLgotICAgICMKLSAgICAjIE5vdGU6IFhYWCB3aWxsIGhhdmUgYW55ICcuJyByZXBsYWNlZCB3aXRoICdfJyBjaGFyYWN0ZXJzIHdoZW4gZGV0ZXJtaW5pbmcKLSAgICAjIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBuYW1lcy4KLQotICAgIHJlc291cmNlcyA9ICgnc3lzLmFyZ3YnLCAnY3dkJywgJ3N5cy5zdGRpbicsICdzeXMuc3Rkb3V0JywgJ3N5cy5zdGRlcnInLAotICAgICAgICAgICAgICAgICAnb3MuZW52aXJvbicsICdzeXMucGF0aCcsICdzeXMucGF0aF9ob29rcycsICdfX2ltcG9ydF9fJywKLSAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzLmZpbHRlcnMnLCAnYXN5bmNvcmUuc29ja2V0X21hcCcsCi0gICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsICdzeXMuZ2V0dHJhY2UnLAotICAgICAgICAgICAgICAgICAnc3lzLndhcm5vcHRpb25zJywKLSAgICAgICAgICAgICAgICAgIyBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpIG1heSByZWxlYXNlIHJlZgotICAgICAgICAgICAgICAgICAjIHRvIGEgdGhyZWFkLCBzbyBjaGVjayBwcm9jZXNzZXMgZmlyc3QuCi0gICAgICAgICAgICAgICAgICdtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcnLCAndGhyZWFkaW5nLl9kYW5nbGluZycsCi0gICAgICAgICAgICAgICAgICdzeXNjb25maWcuX0NPTkZJR19WQVJTJywgJ3N5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTJywKLSAgICAgICAgICAgICAgICAgJ2ZpbGVzJywgJ2xvY2FsZScsICd3YXJuaW5ncy5zaG93d2FybmluZycsCi0gICAgICAgICAgICAgICAgICdzaHV0aWxfYXJjaGl2ZV9mb3JtYXRzJywgJ3NodXRpbF91bnBhY2tfZm9ybWF0cycsCi0gICAgICAgICAgICAgICAgKQotCi0gICAgZGVmIGdldF9zeXNfYXJndihzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKHN5cy5hcmd2KSwgc3lzLmFyZ3YsIHN5cy5hcmd2WzpdCi0gICAgZGVmIHJlc3RvcmVfc3lzX2FyZ3Yoc2VsZiwgc2F2ZWRfYXJndik6Ci0gICAgICAgIHN5cy5hcmd2ID0gc2F2ZWRfYXJndlsxXQotICAgICAgICBzeXMuYXJndls6XSA9IHNhdmVkX2FyZ3ZbMl0KLQotICAgIGRlZiBnZXRfY3dkKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKLSAgICBkZWYgcmVzdG9yZV9jd2Qoc2VsZiwgc2F2ZWRfY3dkKToKLSAgICAgICAgb3MuY2hkaXIoc2F2ZWRfY3dkKQotCi0gICAgZGVmIGdldF9zeXNfc3Rkb3V0KHNlbGYpOgotICAgICAgICByZXR1cm4gc3lzLnN0ZG91dAotICAgIGRlZiByZXN0b3JlX3N5c19zdGRvdXQoc2VsZiwgc2F2ZWRfc3Rkb3V0KToKLSAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVkX3N0ZG91dAotCi0gICAgZGVmIGdldF9zeXNfc3RkZXJyKHNlbGYpOgotICAgICAgICByZXR1cm4gc3lzLnN0ZGVycgotICAgIGRlZiByZXN0b3JlX3N5c19zdGRlcnIoc2VsZiwgc2F2ZWRfc3RkZXJyKToKLSAgICAgICAgc3lzLnN0ZGVyciA9IHNhdmVkX3N0ZGVycgotCi0gICAgZGVmIGdldF9zeXNfc3RkaW4oc2VsZik6Ci0gICAgICAgIHJldHVybiBzeXMuc3RkaW4KLSAgICBkZWYgcmVzdG9yZV9zeXNfc3RkaW4oc2VsZiwgc2F2ZWRfc3RkaW4pOgotICAgICAgICBzeXMuc3RkaW4gPSBzYXZlZF9zdGRpbgotCi0gICAgZGVmIGdldF9vc19lbnZpcm9uKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQob3MuZW52aXJvbiksIG9zLmVudmlyb24sIGRpY3Qob3MuZW52aXJvbikKLSAgICBkZWYgcmVzdG9yZV9vc19lbnZpcm9uKHNlbGYsIHNhdmVkX2Vudmlyb24pOgotICAgICAgICBvcy5lbnZpcm9uID0gc2F2ZWRfZW52aXJvblsxXQotICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKLSAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoc2F2ZWRfZW52aXJvblsyXSkKLQotICAgIGRlZiBnZXRfc3lzX3BhdGgoc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChzeXMucGF0aCksIHN5cy5wYXRoLCBzeXMucGF0aFs6XQotICAgIGRlZiByZXN0b3JlX3N5c19wYXRoKHNlbGYsIHNhdmVkX3BhdGgpOgotICAgICAgICBzeXMucGF0aCA9IHNhdmVkX3BhdGhbMV0KLSAgICAgICAgc3lzLnBhdGhbOl0gPSBzYXZlZF9wYXRoWzJdCi0KLSAgICBkZWYgZ2V0X3N5c19wYXRoX2hvb2tzKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGhfaG9va3MpLCBzeXMucGF0aF9ob29rcywgc3lzLnBhdGhfaG9va3NbOl0KLSAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aF9ob29rcyhzZWxmLCBzYXZlZF9ob29rcyk6Ci0gICAgICAgIHN5cy5wYXRoX2hvb2tzID0gc2F2ZWRfaG9va3NbMV0KLSAgICAgICAgc3lzLnBhdGhfaG9va3NbOl0gPSBzYXZlZF9ob29rc1syXQotCi0gICAgZGVmIGdldF9zeXNfZ2V0dHJhY2Uoc2VsZik6Ci0gICAgICAgIHJldHVybiBzeXMuZ2V0dHJhY2UoKQotICAgIGRlZiByZXN0b3JlX3N5c19nZXR0cmFjZShzZWxmLCB0cmFjZV9meG4pOgotICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VfZnhuKQotCi0gICAgZGVmIGdldF9fX2ltcG9ydF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gYnVpbHRpbnMuX19pbXBvcnRfXwotICAgIGRlZiByZXN0b3JlX19faW1wb3J0X18oc2VsZiwgaW1wb3J0Xyk6Ci0gICAgICAgIGJ1aWx0aW5zLl9faW1wb3J0X18gPSBpbXBvcnRfCi0KLSAgICBkZWYgZ2V0X3dhcm5pbmdzX2ZpbHRlcnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBpZCh3YXJuaW5ncy5maWx0ZXJzKSwgd2FybmluZ3MuZmlsdGVycywgd2FybmluZ3MuZmlsdGVyc1s6XQotICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX2ZpbHRlcnMoc2VsZiwgc2F2ZWRfZmlsdGVycyk6Ci0gICAgICAgIHdhcm5pbmdzLmZpbHRlcnMgPSBzYXZlZF9maWx0ZXJzWzFdCi0gICAgICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBzYXZlZF9maWx0ZXJzWzJdCi0KLSAgICBkZWYgZ2V0X2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZik6Ci0gICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCi0gICAgICAgICMgWFhYIE1ha2luZyBhIGNvcHkga2VlcHMgb2JqZWN0cyBhbGl2ZSB1bnRpbCBfX2V4aXRfXyBnZXRzIGNhbGxlZC4KLSAgICAgICAgcmV0dXJuIGFzeW5jb3JlIGFuZCBhc3luY29yZS5zb2NrZXRfbWFwLmNvcHkoKSBvciB7fQotICAgIGRlZiByZXN0b3JlX2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZiwgc2F2ZWRfbWFwKToKLSAgICAgICAgYXN5bmNvcmUgPSBzeXMubW9kdWxlcy5nZXQoJ2FzeW5jb3JlJykKLSAgICAgICAgaWYgYXN5bmNvcmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoaWdub3JlX2FsbD1UcnVlKQotICAgICAgICAgICAgYXN5bmNvcmUuc29ja2V0X21hcC51cGRhdGUoc2F2ZWRfbWFwKQotCi0gICAgZGVmIGdldF9zaHV0aWxfYXJjaGl2ZV9mb3JtYXRzKHNlbGYpOgotICAgICAgICAjIHdlIGNvdWxkIGNhbGwgZ2V0X2FyY2hpdmVzX2Zvcm1hdHMoKSBidXQgdGhhdCBvbmx5IHJldHVybnMgdGhlCi0gICAgICAgICMgcmVnaXN0cnkga2V5czsgd2Ugd2FudCB0byBjaGVjayB0aGUgdmFsdWVzIHRvbyAodGhlIGZ1bmN0aW9ucyB0aGF0Ci0gICAgICAgICMgYXJlIHJlZ2lzdGVyZWQpCi0gICAgICAgIHJldHVybiBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUywgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTID0gc2F2ZWRbMF0KLSAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY2xlYXIoKQotICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCi0KLSAgICBkZWYgZ2V0X3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMsIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfc2h1dGlsX3VucGFja19mb3JtYXRzKHNlbGYsIHNhdmVkKToKLSAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUyA9IHNhdmVkWzBdCi0gICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY2xlYXIoKQotICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLnVwZGF0ZShzYXZlZFsxXSkKLQotICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlcnMoc2VsZik6Ci0gICAgICAgICMgX2hhbmRsZXJzIGlzIGEgV2Vha1ZhbHVlRGljdGlvbmFyeQotICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlcnMpLCBsb2dnaW5nLl9oYW5kbGVycywgbG9nZ2luZy5faGFuZGxlcnMuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfbG9nZ2luZ19faGFuZGxlcnMoc2VsZiwgc2F2ZWRfaGFuZGxlcnMpOgotICAgICAgICAjIENhbid0IGVhc2lseSByZXZlcnQgdGhlIGxvZ2dpbmcgc3RhdGUKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGdldF9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmKToKLSAgICAgICAgIyBfaGFuZGxlckxpc3QgaXMgYSBsaXN0IG9mIHdlYWtyZWZzIHRvIGhhbmRsZXJzCi0gICAgICAgIHJldHVybiBpZChsb2dnaW5nLl9oYW5kbGVyTGlzdCksIGxvZ2dpbmcuX2hhbmRsZXJMaXN0LCBsb2dnaW5nLl9oYW5kbGVyTGlzdFs6XQotICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJMaXN0KHNlbGYsIHNhdmVkX2hhbmRsZXJMaXN0KToKLSAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiBnZXRfc3lzX3dhcm5vcHRpb25zKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQoc3lzLndhcm5vcHRpb25zKSwgc3lzLndhcm5vcHRpb25zLCBzeXMud2Fybm9wdGlvbnNbOl0KLSAgICBkZWYgcmVzdG9yZV9zeXNfd2Fybm9wdGlvbnMoc2VsZiwgc2F2ZWRfb3B0aW9ucyk6Ci0gICAgICAgIHN5cy53YXJub3B0aW9ucyA9IHNhdmVkX29wdGlvbnNbMV0KLSAgICAgICAgc3lzLndhcm5vcHRpb25zWzpdID0gc2F2ZWRfb3B0aW9uc1syXQotCi0gICAgIyBDb250cm9sbGluZyBkYW5nbGluZyByZWZlcmVuY2VzIHRvIFRocmVhZCBvYmplY3RzIGNhbiBtYWtlIGl0IGVhc2llcgotICAgICMgdG8gdHJhY2sgcmVmZXJlbmNlIGxlYWtzLgotICAgIGRlZiBnZXRfdGhyZWFkaW5nX19kYW5nbGluZyhzZWxmKToKLSAgICAgICAgaWYgbm90IHRocmVhZGluZzoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCi0gICAgICAgIHJldHVybiB0aHJlYWRpbmcuX2RhbmdsaW5nLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgotICAgICAgICBpZiBub3QgdGhyZWFkaW5nOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRocmVhZGluZy5fZGFuZ2xpbmcuY2xlYXIoKQotICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKLQotICAgICMgU2FtZSBmb3IgUHJvY2VzcyBvYmplY3RzCi0gICAgZGVmIGdldF9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBtdWx0aXByb2Nlc3Npbmc6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAjIFVuam9pbmVkIHByb2Nlc3Mgb2JqZWN0cyBjYW4gc3Vydml2ZSBhZnRlciBwcm9jZXNzIGV4aXRzCi0gICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9jbGVhbnVwKCkKLSAgICAgICAgIyBUaGlzIGNvcGllcyB0aGUgd2Vha3JlZnMgd2l0aG91dCBtYWtpbmcgYW55IHN0cm9uZyByZWZlcmVuY2UKLSAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgotICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jbGVhcigpCi0gICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCi0KLSAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZik6Ci0gICAgICAgICMgbWFrZSBzdXJlIHRoZSBkaWN0IGlzIGluaXRpYWxpemVkCi0gICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigncHJlZml4JykKLSAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0NPTkZJR19WQVJTKSwgc3lzY29uZmlnLl9DT05GSUdfVkFSUywKLSAgICAgICAgICAgICAgICBkaWN0KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpKQotICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZiwgc2F2ZWQpOgotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2F2ZWRbMV0KLSAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCi0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNhdmVkWzJdKQotCi0gICAgZGVmIGdldF9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyksIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLAotICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNvcHkoKSkKLSAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTID0gc2F2ZWRbMV0KLSAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY2xlYXIoKQotICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy51cGRhdGUoc2F2ZWRbMl0pCi0KLSAgICBkZWYgZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICByZXR1cm4gc29ydGVkKGZuICsgKCcvJyBpZiBvcy5wYXRoLmlzZGlyKGZuKSBlbHNlICcnKQotICAgICAgICAgICAgICAgICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKCkpCi0gICAgZGVmIHJlc3RvcmVfZmlsZXMoc2VsZiwgc2F2ZWRfdmFsdWUpOgotICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCi0gICAgICAgIGlmIGZuIG5vdCBpbiBzYXZlZF92YWx1ZSBhbmQgKGZuICsgJy8nKSBub3QgaW4gc2F2ZWRfdmFsdWU6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6Ci0gICAgICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoZm4pCi0gICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZm4pOgotICAgICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKGZuKQotCi0gICAgX2xjID0gW2dldGF0dHIobG9jYWxlLCBsYykgZm9yIGxjIGluIGRpcihsb2NhbGUpCi0gICAgICAgICAgIGlmIGxjLnN0YXJ0c3dpdGgoJ0xDXycpXQotICAgIGRlZiBnZXRfbG9jYWxlKHNlbGYpOgotICAgICAgICBwYWlyaW5ncyA9IFtdCi0gICAgICAgIGZvciBsYyBpbiBzZWxmLl9sYzoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwYWlyaW5ncy5hcHBlbmQoKGxjLCBsb2NhbGUuc2V0bG9jYWxlKGxjLCBOb25lKSkpCi0gICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcmV0dXJuIHBhaXJpbmdzCi0gICAgZGVmIHJlc3RvcmVfbG9jYWxlKHNlbGYsIHNhdmVkKToKLSAgICAgICAgZm9yIGxjLCBzZXR0aW5nIGluIHNhdmVkOgotICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsYywgc2V0dGluZykKLQotICAgIGRlZiBnZXRfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiB3YXJuaW5ncy5zaG93d2FybmluZwotICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYsIGZ4bik6Ci0gICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nID0gZnhuCi0KLSAgICBkZWYgcmVzb3VyY2VfaW5mbyhzZWxmKToKLSAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5yZXNvdXJjZXM6Ci0gICAgICAgICAgICBtZXRob2Rfc3VmZml4ID0gbmFtZS5yZXBsYWNlKCcuJywgJ18nKQotICAgICAgICAgICAgZ2V0X25hbWUgPSAnZ2V0XycgKyBtZXRob2Rfc3VmZml4Ci0gICAgICAgICAgICByZXN0b3JlX25hbWUgPSAncmVzdG9yZV8nICsgbWV0aG9kX3N1ZmZpeAotICAgICAgICAgICAgeWllbGQgbmFtZSwgZ2V0YXR0cihzZWxmLCBnZXRfbmFtZSksIGdldGF0dHIoc2VsZiwgcmVzdG9yZV9uYW1lKQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zYXZlZF92YWx1ZXMgPSBkaWN0KChuYW1lLCBnZXQoKSkgZm9yIG5hbWUsIGdldCwgcmVzdG9yZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCkpCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6Ci0gICAgICAgIHNhdmVkX3ZhbHVlcyA9IHNlbGYuc2F2ZWRfdmFsdWVzCi0gICAgICAgIGRlbCBzZWxmLnNhdmVkX3ZhbHVlcwotICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKSAgIyBTb21lIHJlc291cmNlcyB1c2Ugd2VhayByZWZlcmVuY2VzCi0gICAgICAgIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCk6Ci0gICAgICAgICAgICBjdXJyZW50ID0gZ2V0KCkKLSAgICAgICAgICAgIG9yaWdpbmFsID0gc2F2ZWRfdmFsdWVzLnBvcChuYW1lKQotICAgICAgICAgICAgIyBDaGVjayBmb3IgY2hhbmdlcyB0byB0aGUgcmVzb3VyY2UncyB2YWx1ZQotICAgICAgICAgICAgaWYgY3VycmVudCAhPSBvcmlnaW5hbDoKLSAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgcmVzdG9yZShvcmlnaW5hbCkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5xdWlldCBhbmQgbm90IHNlbGYucGdvOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiV2FybmluZyAtLSB7fSB3YXMgbW9kaWZpZWQgYnkge30iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzZWxmLnRlc3RuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZSA+IDEgYW5kIG5vdCBzZWxmLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCIgIEJlZm9yZToge31cbiAgQWZ0ZXI6ICB7fSAiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwsIGN1cnJlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LAotICAgICAgICAgICAgICAgICAgaHVudHJsZWFrcz1GYWxzZSwgZGlzcGxheV9mYWlsdXJlPVRydWUsIHBnbz1GYWxzZSk6Ci0gICAgc3VwcG9ydC51bmxvYWQodGVzdCkKLQotICAgIHRlc3RfdGltZSA9IDAuMAotICAgIHJlZmxlYWsgPSBGYWxzZSAgIyBUcnVlIGlmIHRoZSB0ZXN0IGxlYWtlZCByZWZlcmVuY2VzLgotICAgIHRyeToKLSAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKCd0ZXN0LicpOgotICAgICAgICAgICAgYWJzdGVzdCA9IHRlc3QKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQWx3YXlzIGltcG9ydCBpdCBmcm9tIHRoZSB0ZXN0IHBhY2thZ2UKLSAgICAgICAgICAgIGFic3Rlc3QgPSAndGVzdC4nICsgdGVzdAotICAgICAgICB3aXRoIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQodGVzdCwgdmVyYm9zZSwgcXVpZXQsIHBnbz1wZ28pIGFzIGVudmlyb25tZW50OgotICAgICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICB0aGVfbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoYWJzdGVzdCkKLSAgICAgICAgICAgICMgSWYgdGhlIHRlc3QgaGFzIGEgdGVzdF9tYWluLCB0aGF0IHdpbGwgcnVuIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICAgICAgIyB0ZXN0cy4gIElmIG5vdCwgdXNlIG5vcm1hbCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcuCi0gICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGdldGF0dHIodGhlX21vZHVsZSwgInRlc3RfbWFpbiIsIE5vbmUpCi0gICAgICAgICAgICBpZiB0ZXN0X3J1bm5lciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3J1bm5lcigpOgotICAgICAgICAgICAgICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSh0aGVfbW9kdWxlKQotICAgICAgICAgICAgICAgICAgICBmb3IgZXJyb3IgaW4gbG9hZGVyLmVycm9yczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGVycm9yLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxvYWRlci5lcnJvcnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImVycm9ycyB3aGlsZSBsb2FkaW5nIHRlc3RzIikKLSAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdHMpCi0gICAgICAgICAgICB0ZXN0X3J1bm5lcigpCi0gICAgICAgICAgICBpZiBodW50cmxlYWtzOgotICAgICAgICAgICAgICAgIHJlZmxlYWsgPSBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgdGVzdF9ydW5uZXIsIGh1bnRybGVha3MpCi0gICAgICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUKLSAgICBleGNlcHQgc3VwcG9ydC5SZXNvdXJjZURlbmllZCBhcyBtc2c6Ci0gICAgICAgIGlmIG5vdCBxdWlldCBhbmQgbm90IHBnbzoKLSAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnKQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHJldHVybiBSRVNPVVJDRV9ERU5JRUQsIHRlc3RfdGltZQotICAgIGV4Y2VwdCB1bml0dGVzdC5Ta2lwVGVzdCBhcyBtc2c6Ci0gICAgICAgIGlmIG5vdCBxdWlldCBhbmQgbm90IHBnbzoKLSAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnKQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHJldHVybiBTS0lQUEVELCB0ZXN0X3RpbWUKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHJhaXNlCi0gICAgZXhjZXB0IHN1cHBvcnQuVGVzdEZhaWxlZCBhcyBtc2c6Ci0gICAgICAgIGlmIG5vdCBwZ286Ci0gICAgICAgICAgICBpZiBkaXNwbGF5X2ZhaWx1cmU6Ci0gICAgICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiZmFpbGVkIC0tIiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCIsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQotICAgIGV4Y2VwdDoKLSAgICAgICAgbXNnID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQotICAgICAgICBpZiBub3QgcGdvOgotICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiY3Jhc2hlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCi0gICAgZWxzZToKLSAgICAgICAgaWYgcmVmbGVhazoKLSAgICAgICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQotICAgICAgICBpZiBlbnZpcm9ubWVudC5jaGFuZ2VkOgotICAgICAgICAgICAgcmV0dXJuIEVOVl9DSEFOR0VELCB0ZXN0X3RpbWUKLSAgICAgICAgcmV0dXJuIFBBU1NFRCwgdGVzdF90aW1lCi0KLWRlZiBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3RuYW1lLCB2ZXJib3NlKToKLSAgICBpbXBvcnQgc2h1dGlsCi0gICAgaW1wb3J0IHN0YXQKLSAgICBpbXBvcnQgZ2MKLQotICAgICMgRmlyc3Qga2lsbCBhbnkgZGFuZ2xpbmcgcmVmZXJlbmNlcyB0byBvcGVuIGZpbGVzIGV0Yy4KLSAgICAjIFRoaXMgY2FuIGFsc28gaXNzdWUgc29tZSBSZXNvdXJjZVdhcm5pbmdzIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBnZXQKLSAgICAjIHRyaWdnZXJlZCBkdXJpbmcgdGhlIGZvbGxvd2luZyB0ZXN0IHJ1biwgYW5kIHBvc3NpYmx5IHByb2R1Y2UgZmFpbHVyZXMuCi0gICAgZ2MuY29sbGVjdCgpCi0KLSAgICAjIFRyeSB0byBjbGVhbiB1cCBqdW5rIGNvbW1vbmx5IGxlZnQgYmVoaW5kLiAgV2hpbGUgdGVzdHMgc2hvdWxkbid0IGxlYXZlCi0gICAgIyBhbnkgZmlsZXMgb3IgZGlyZWN0b3JpZXMgYmVoaW5kLCB3aGVuIGEgdGVzdCBmYWlscyB0aGF0IGNhbiBiZSB0ZWRpb3VzCi0gICAgIyBmb3IgaXQgdG8gYXJyYW5nZS4gIFRoZSBjb25zZXF1ZW5jZXMgY2FuIGJlIGVzcGVjaWFsbHkgbmFzdHkgb24gV2luZG93cywKLSAgICAjIHNpbmNlIGlmIGEgdGVzdCBsZWF2ZXMgYSBmaWxlIG9wZW4sIGl0IGNhbm5vdCBiZSBkZWxldGVkIGJ5IG5hbWUgKHdoaWxlCi0gICAgIyB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IHRoYXQgaGVyZSBlaXRoZXIsIHdlIGNhbiBkaXNwbGF5IHRoZQotICAgICMgbmFtZSBvZiB0aGUgb2ZmZW5kaW5nIHRlc3QsIHdoaWNoIGlzIGEgcmVhbCBoZWxwKS4KLSAgICBmb3IgbmFtZSBpbiAoc3VwcG9ydC5URVNURk4sCi0gICAgICAgICAgICAgICAgICJkYl9ob21lIiwKLSAgICAgICAgICAgICAgICApOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobmFtZSk6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIobmFtZSk6Ci0gICAgICAgICAgICBraW5kLCBudWtlciA9ICJkaXJlY3RvcnkiLCBzaHV0aWwucm10cmVlCi0gICAgICAgIGVsaWYgb3MucGF0aC5pc2ZpbGUobmFtZSk6Ci0gICAgICAgICAgICBraW5kLCBudWtlciA9ICJmaWxlIiwgb3MudW5saW5rCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcigib3MucGF0aCBzYXlzICVyIGV4aXN0cyBidXQgaXMgbmVpdGhlciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0b3J5IG5vciBmaWxlIiAlIG5hbWUpCi0KLSAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCIlciBsZWZ0IGJlaGluZCAlcyAlciIgJSAodGVzdG5hbWUsIGtpbmQsIG5hbWUpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIGlmIHdlIGhhdmUgY2htb2QsIGZpeCBwb3NzaWJsZSBwZXJtaXNzaW9ucyBwcm9ibGVtcwotICAgICAgICAgICAgIyB0aGF0IG1pZ2h0IHByZXZlbnQgY2xlYW51cAotICAgICAgICAgICAgaWYgKGhhc2F0dHIob3MsICdjaG1vZCcpKToKLSAgICAgICAgICAgICAgICBvcy5jaG1vZChuYW1lLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWEcgfCBzdGF0LlNfSVJXWE8pCi0gICAgICAgICAgICBudWtlcihuYW1lKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIG1zZzoKLSAgICAgICAgICAgIHByaW50KCgiJXIgbGVmdCBiZWhpbmQgJXMgJXIgYW5kIGl0IGNvdWxkbid0IGJlICIKLSAgICAgICAgICAgICAgICAicmVtb3ZlZDogJXMiICUgKHRlc3RuYW1lLCBraW5kLCBuYW1lLCBtc2cpKSwgZmlsZT1zeXMuc3RkZXJyKQotCi1kZWYgZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIGluZGlyZWN0X3Rlc3QsIGh1bnRybGVha3MpOgotICAgICIiIlJ1biBhIHRlc3QgbXVsdGlwbGUgdGltZXMsIGxvb2tpbmcgZm9yIHJlZmVyZW5jZSBsZWFrcy4KLQotICAgIFJldHVybnM6Ci0gICAgICAgIEZhbHNlIGlmIHRoZSB0ZXN0IGRpZG4ndCBsZWFrIHJlZmVyZW5jZXM7IFRydWUgaWYgd2UgZGV0ZWN0ZWQgcmVmbGVha3MuCi0gICAgIiIiCi0gICAgIyBUaGlzIGNvZGUgaXMgaGFja2lzaCBhbmQgaW5lbGVnYW50LCBidXQgaXQgc2VlbXMgdG8gZG8gdGhlIGpvYi4KLSAgICBpbXBvcnQgY29weXJlZwotICAgIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKLQotICAgIGlmIG5vdCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUcmFja2luZyByZWZlcmVuY2UgbGVha3MgcmVxdWlyZXMgYSBkZWJ1ZyBidWlsZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAib2YgUHl0aG9uIikKLQotICAgICMgU2F2ZSBjdXJyZW50IHZhbHVlcyBmb3IgZGFzaF9SX2NsZWFudXAoKSB0byByZXN0b3JlLgotICAgIGZzID0gd2FybmluZ3MuZmlsdGVyc1s6XQotICAgIHBzID0gY29weXJlZy5kaXNwYXRjaF90YWJsZS5jb3B5KCkKLSAgICBwaWMgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jb3B5KCkKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB6aXBpbXBvcnQKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHpkYyA9IE5vbmUgIyBSdW4gdW5tb2RpZmllZCBvbiBwbGF0Zm9ybXMgd2l0aG91dCB6aXBpbXBvcnQgc3VwcG9ydAotICAgIGVsc2U6Ci0gICAgICAgIHpkYyA9IHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jb3B5KCkKLSAgICBhYmNzID0ge30KLSAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgotICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgotICAgICAgICAgICAgYWJjc1tvYmpdID0gb2JqLl9hYmNfcmVnaXN0cnkuY29weSgpCi0KLSAgICBud2FybXVwLCBudHJhY2tlZCwgZm5hbWUgPSBodW50cmxlYWtzCi0gICAgZm5hbWUgPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgZm5hbWUpCi0gICAgcmVwY291bnQgPSBud2FybXVwICsgbnRyYWNrZWQKLSAgICByY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAotICAgIGFsbG9jX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50Ci0KLSAgICBwcmludCgiYmVnaW5uaW5nIiwgcmVwY291bnQsICJyZXBldGl0aW9ucyIsIGZpbGU9c3lzLnN0ZGVycikKLSAgICBwcmludCgoIjEyMzQ1Njc4OTAiKihyZXBjb3VudC8vMTAgKyAxKSlbOnJlcGNvdW50XSwgZmlsZT1zeXMuc3RkZXJyKQotICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgIGZvciBpIGluIHJhbmdlKHJlcGNvdW50KToKLSAgICAgICAgaW5kaXJlY3RfdGVzdCgpCi0gICAgICAgIGFsbG9jX2FmdGVyLCByY19hZnRlciA9IGRhc2hfUl9jbGVhbnVwKGZzLCBwcywgcGljLCB6ZGMsIGFiY3MpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJy4nKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgaWYgaSA+PSBud2FybXVwOgotICAgICAgICAgICAgcmNfZGVsdGFzW2ldID0gcmNfYWZ0ZXIgLSByY19iZWZvcmUKLSAgICAgICAgICAgIGFsbG9jX2RlbHRhc1tpXSA9IGFsbG9jX2FmdGVyIC0gYWxsb2NfYmVmb3JlCi0gICAgICAgIGFsbG9jX2JlZm9yZSwgcmNfYmVmb3JlID0gYWxsb2NfYWZ0ZXIsIHJjX2FmdGVyCi0gICAgcHJpbnQoZmlsZT1zeXMuc3RkZXJyKQotICAgICMgVGhlc2UgY2hlY2tlcnMgcmV0dXJuIEZhbHNlIG9uIHN1Y2Nlc3MsIFRydWUgb24gZmFpbHVyZQotICAgIGRlZiBjaGVja19yY19kZWx0YXMoZGVsdGFzKToKLSAgICAgICAgcmV0dXJuIGFueShkZWx0YXMpCi0gICAgZGVmIGNoZWNrX2FsbG9jX2RlbHRhcyhkZWx0YXMpOgotICAgICAgICAjIEF0IGxlYXN0IDEvM3JkIG9mIDBzCi0gICAgICAgIGlmIDMgKiBkZWx0YXMuY291bnQoMCkgPCBsZW4oZGVsdGFzKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICMgTm90aGluZyBlbHNlIHRoYW4gMXMsIDBzIGFuZCAtMXMKLSAgICAgICAgaWYgbm90IHNldChkZWx0YXMpIDw9IHsxLDAsLTF9OgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZmFpbGVkID0gRmFsc2UKLSAgICBmb3IgZGVsdGFzLCBpdGVtX25hbWUsIGNoZWNrZXIgaW4gWwotICAgICAgICAocmNfZGVsdGFzLCAncmVmZXJlbmNlcycsIGNoZWNrX3JjX2RlbHRhcyksCi0gICAgICAgIChhbGxvY19kZWx0YXMsICdtZW1vcnkgYmxvY2tzJywgY2hlY2tfYWxsb2NfZGVsdGFzKV06Ci0gICAgICAgIGlmIGNoZWNrZXIoZGVsdGFzKToKLSAgICAgICAgICAgIG1zZyA9ICclcyBsZWFrZWQgJXMgJXMsIHN1bT0lcycgJSAoCi0gICAgICAgICAgICAgICAgdGVzdCwgZGVsdGFzW253YXJtdXA6XSwgaXRlbV9uYW1lLCBzdW0oZGVsdGFzKSkKLSAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICJhIikgYXMgcmVmcmVwOgotICAgICAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1yZWZyZXApCi0gICAgICAgICAgICAgICAgcmVmcmVwLmZsdXNoKCkKLSAgICAgICAgICAgIGZhaWxlZCA9IFRydWUKLSAgICByZXR1cm4gZmFpbGVkCi0KLWRlZiBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKToKLSAgICBpbXBvcnQgZ2MsIGNvcHlyZWcKLSAgICBpbXBvcnQgX3N0cnB0aW1lLCBsaW5lY2FjaGUKLSAgICBpbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdCwgbWltZXR5cGVzLCBkb2N0ZXN0Ci0gICAgaW1wb3J0IHN0cnVjdCwgZmlsZWNtcCwgY29sbGVjdGlvbnMuYWJjCi0gICAgZnJvbSBkaXN0dXRpbHMuZGlyX3V0aWwgaW1wb3J0IF9wYXRoX2NyZWF0ZWQKLSAgICBmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtTZXQKLQotICAgICMgQ2xlYXIgdGhlIHdhcm5pbmdzIHJlZ2lzdHJ5LCBzbyB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgYWdhaW4KLSAgICBmb3IgbW9kIGluIHN5cy5tb2R1bGVzLnZhbHVlcygpOgotICAgICAgICBpZiBoYXNhdHRyKG1vZCwgJ19fd2FybmluZ3JlZ2lzdHJ5X18nKToKLSAgICAgICAgICAgIGRlbCBtb2QuX193YXJuaW5ncmVnaXN0cnlfXwotCi0gICAgIyBSZXN0b3JlIHNvbWUgb3JpZ2luYWwgdmFsdWVzLgotICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBmcwotICAgIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY2xlYXIoKQotICAgIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUudXBkYXRlKHBzKQotICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNsZWFyKCkKLSAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS51cGRhdGUocGljKQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHppcGltcG9ydAotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcyAjIFJ1biB1bm1vZGlmaWVkIG9uIHBsYXRmb3JtcyB3aXRob3V0IHppcGltcG9ydCBzdXBwb3J0Ci0gICAgZWxzZToKLSAgICAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNsZWFyKCkKLSAgICAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLnVwZGF0ZSh6ZGMpCi0KLSAgICAjIGNsZWFyIHR5cGUgY2FjaGUKLSAgICBzeXMuX2NsZWFyX3R5cGVfY2FjaGUoKQotCi0gICAgIyBDbGVhciBBQkMgcmVnaXN0cmllcywgcmVzdG9yaW5nIHByZXZpb3VzbHkgc2F2ZWQgQUJDIHJlZ2lzdHJpZXMuCi0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKLSAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKLSAgICAgICAgICAgIG9iai5fYWJjX3JlZ2lzdHJ5ID0gYWJjcy5nZXQob2JqLCBXZWFrU2V0KCkpLmNvcHkoKQotICAgICAgICAgICAgb2JqLl9hYmNfY2FjaGUuY2xlYXIoKQotICAgICAgICAgICAgb2JqLl9hYmNfbmVnYXRpdmVfY2FjaGUuY2xlYXIoKQotCi0gICAgIyBGbHVzaCBzdGFuZGFyZCBvdXRwdXQsIHNvIHRoYXQgYnVmZmVyZWQgZGF0YSBpcyBzZW50IHRvIHRoZSBPUyBhbmQKLSAgICAjIGFzc29jaWF0ZWQgUHl0aG9uIG9iamVjdHMgYXJlIHJlY2xhaW1lZC4KLSAgICBmb3Igc3RyZWFtIGluIChzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyLCBzeXMuX19zdGRvdXRfXywgc3lzLl9fc3RkZXJyX18pOgotICAgICAgICBpZiBzdHJlYW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzdHJlYW0uZmx1c2goKQotCi0gICAgIyBDbGVhciBhc3NvcnRlZCBtb2R1bGUgY2FjaGVzLgotICAgIF9wYXRoX2NyZWF0ZWQuY2xlYXIoKQotICAgIHJlLnB1cmdlKCkKLSAgICBfc3RycHRpbWUuX3JlZ2V4X2NhY2hlLmNsZWFyKCkKLSAgICB1cmxsaWIucGFyc2UuY2xlYXJfY2FjaGUoKQotICAgIHVybGxpYi5yZXF1ZXN0LnVybGNsZWFudXAoKQotICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKLSAgICBtaW1ldHlwZXMuX2RlZmF1bHRfbWltZV90eXBlcygpCi0gICAgZmlsZWNtcC5fY2FjaGUuY2xlYXIoKQotICAgIHN0cnVjdC5fY2xlYXJjYWNoZSgpCi0gICAgZG9jdGVzdC5tYXN0ZXIgPSBOb25lCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgY3R5cGVzCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAjIERvbid0IHdvcnJ5IGFib3V0IHJlc2V0dGluZyB0aGUgY2FjaGUgaWYgY3R5cGVzIGlzIG5vdCBzdXBwb3J0ZWQKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGN0eXBlcy5fcmVzZXRfY2FjaGUoKQotCi0gICAgIyBDb2xsZWN0IGN5Y2xpYyB0cmFzaCBhbmQgcmVhZCBtZW1vcnkgc3RhdGlzdGljcyBpbW1lZGlhdGVseSBhZnRlci4KLSAgICBmdW5jMSA9IHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MKLSAgICBmdW5jMiA9IHN5cy5nZXR0b3RhbHJlZmNvdW50Ci0gICAgZ2MuY29sbGVjdCgpCi0gICAgcmV0dXJuIGZ1bmMxKCksIGZ1bmMyKCkKLQotZGVmIHdhcm1fY2FjaGVzKCk6Ci0gICAgIyBjaGFyIGNhY2hlCi0gICAgcyA9IGJ5dGVzKHJhbmdlKDI1NikpCi0gICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKLSAgICAgICAgc1tpOmkrMV0KLSAgICAjIHVuaWNvZGUgY2FjaGUKLSAgICB4ID0gW2NocihpKSBmb3IgaSBpbiByYW5nZSgyNTYpXQotICAgICMgaW50IGNhY2hlCi0gICAgeCA9IGxpc3QocmFuZ2UoLTUsIDI1NykpCi0KLWRlZiBmaW5kdGVzdGRpcihwYXRoPU5vbmUpOgotICAgIHJldHVybiBwYXRoIG9yIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyCi0KLWRlZiByZW1vdmVweShuYW1lcyk6Ci0gICAgaWYgbm90IG5hbWVzOgotICAgICAgICByZXR1cm4KLSAgICBmb3IgaWR4LCBuYW1lIGluIGVudW1lcmF0ZShuYW1lcyk6Ci0gICAgICAgIGJhc2VuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCi0gICAgICAgIGlmIGV4dCA9PSAnLnB5JzoKLSAgICAgICAgICAgIG5hbWVzW2lkeF0gPSBiYXNlbmFtZQotCi1kZWYgY291bnQobiwgd29yZCk6Ci0gICAgaWYgbiA9PSAxOgotICAgICAgICByZXR1cm4gIiVkICVzIiAlIChuLCB3b3JkKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAiJWQgJXNzIiAlIChuLCB3b3JkKQotCi1kZWYgcHJpbnRsaXN0KHgsIHdpZHRoPTcwLCBpbmRlbnQ9NCk6Ci0gICAgIiIiUHJpbnQgdGhlIGVsZW1lbnRzIG9mIGl0ZXJhYmxlIHggdG8gc3Rkb3V0LgotCi0gICAgT3B0aW9uYWwgYXJnIHdpZHRoIChkZWZhdWx0IDcwKSBpcyB0aGUgbWF4aW11bSBsaW5lIGxlbmd0aC4KLSAgICBPcHRpb25hbCBhcmcgaW5kZW50IChkZWZhdWx0IDQpIGlzIHRoZSBudW1iZXIgb2YgYmxhbmtzIHdpdGggd2hpY2ggdG8KLSAgICBiZWdpbiBlYWNoIGxpbmUuCi0gICAgIiIiCi0KLSAgICBmcm9tIHRleHR3cmFwIGltcG9ydCBmaWxsCi0gICAgYmxhbmtzID0gJyAnICogaW5kZW50Ci0gICAgIyBQcmludCB0aGUgc29ydGVkIGxpc3Q6ICd4JyBtYXkgYmUgYSAnLS1yYW5kb20nIGxpc3Qgb3IgYSBzZXQoKQotICAgIHByaW50KGZpbGwoJyAnLmpvaW4oc3RyKGVsdCkgZm9yIGVsdCBpbiBzb3J0ZWQoeCkpLCB3aWR0aCwKLSAgICAgICAgICAgICAgIGluaXRpYWxfaW5kZW50PWJsYW5rcywgc3Vic2VxdWVudF9pbmRlbnQ9YmxhbmtzKSkKLQotCi1kZWYgbWFpbl9pbl90ZW1wX2N3ZCgpOgotICAgICIiIlJ1biBtYWluKCkgaW4gYSB0ZW1wb3Jhcnkgd29ya2luZyBkaXJlY3RvcnkuIiIiCi0gICAgaWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5ta2RpcihURU1QRElSKQotICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgIyBEZWZpbmUgYSB3cml0YWJsZSB0ZW1wIGRpciB0aGF0IHdpbGwgYmUgdXNlZCBhcyBjd2Qgd2hpbGUgcnVubmluZwotICAgICMgdGhlIHRlc3RzLiBUaGUgbmFtZSBvZiB0aGUgZGlyIGluY2x1ZGVzIHRoZSBwaWQgdG8gYWxsb3cgcGFyYWxsZWwKLSAgICAjIHRlc3RpbmcgKHNlZSB0aGUgLWogb3B0aW9uKS4KLSAgICB0ZXN0X2N3ZCA9ICd0ZXN0X3B5dGhvbl97fScuZm9ybWF0KG9zLmdldHBpZCgpKQotICAgIHRlc3RfY3dkID0gb3MucGF0aC5qb2luKFRFTVBESVIsIHRlc3RfY3dkKQotCi0gICAgIyBSdW4gdGhlIHRlc3RzIGluIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgY2hhbmdlcyB0aGUgQ1dEIHRvIGEKLSAgICAjIHRlbXBvcmFyeSBhbmQgd3JpdGFibGUgZGlyZWN0b3J5LiAgSWYgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG9yCi0gICAgIyBjaGFuZ2UgdGhlIENXRCwgdGhlIG9yaWdpbmFsIENXRCB3aWxsIGJlIHVzZWQuICBUaGUgb3JpZ2luYWwgQ1dEIGlzCi0gICAgIyBhdmFpbGFibGUgZnJvbSBzdXBwb3J0LlNBVkVEQ1dELgotICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCh0ZXN0X2N3ZCwgcXVpZXQ9VHJ1ZSk6Ci0gICAgICAgIG1haW4oKQotCitkZWYgX21haW4oKToKKyAgICBnbG9iYWwgX19maWxlX18KIAotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAjIFJlbW92ZSByZWdydGVzdC5weSdzIG93biBkaXJlY3RvcnkgZnJvbSB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoLiBEZXNwaXRlCiAgICAgIyB0aGUgZWxpbWluYXRpb24gb2YgaW1wbGljaXQgcmVsYXRpdmUgaW1wb3J0cywgdGhpcyBpcyBzdGlsbCBuZWVkZWQgdG8KICAgICAjIGVuc3VyZSB0aGF0IHN1Ym1vZHVsZXMgb2YgdGhlIHRlc3QgcGFja2FnZSBkbyBub3QgaW5hcHByb3ByaWF0ZWx5IGFwcGVhcgogICAgICMgYXMgdG9wLWxldmVsIG1vZHVsZXMgZXZlbiB3aGVuIHBlb3BsZSAob3IgYnVpbGRib3RzISkgaW52b2tlIHJlZ3J0ZXN0LnB5CiAgICAgIyBkaXJlY3RseSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSAtbSBzd2l0Y2gKICAgICBteWRpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSkpKQotICAgIGkgPSBsZW4oc3lzLnBhdGgpCisgICAgaSA9IGxlbihzeXMucGF0aCkgLSAxCiAgICAgd2hpbGUgaSA+PSAwOgotICAgICAgICBpIC09IDEKICAgICAgICAgaWYgb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgubm9ybXBhdGgoc3lzLnBhdGhbaV0pKSA9PSBteWRpcjoKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFtpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaSAtPSAxCiAKICAgICAjIGZpbmR0ZXN0ZGlyKCkgZ2V0cyB0aGUgZGlybmFtZSBvdXQgb2YgX19maWxlX18sIHNvIHdlIGhhdmUgdG8gbWFrZSBpdAogICAgICMgYWJzb2x1dGUgYmVmb3JlIGNoYW5naW5nIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4KQEAgLTE2MTUsNCArNDMsOCBAQAogICAgICMgc2FuaXR5IGNoZWNrCiAgICAgYXNzZXJ0IF9fZmlsZV9fID09IG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkKIAotICAgIG1haW5faW5fdGVtcF9jd2QoKQorICAgIG1haW4oKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgX21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5IGIvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CmluZGV4IDcyZjQ4NDUuLjFlN2E2ZjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NlcV90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9zZXFfdGVzdHMucHkKQEAgLTMxOCw3ICszMTgsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChzKSwgaWQocyoxKSkKIAogICAgIGRlZiB0ZXN0X2JpZ3JlcGVhdChzZWxmKToKLSAgICAgICAgaW1wb3J0IHN5cwogICAgICAgICBpZiBzeXMubWF4c2l6ZSA8PSAyMTQ3NDgzNjQ3OgogICAgICAgICAgICAgeCA9IHNlbGYudHlwZTJ0ZXN0KFswXSkKICAgICAgICAgICAgIHggKj0gMioqMTYKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NpZ25hbGludGVycHJvY3Rlc3Rlci5weSBiL0xpYi90ZXN0L3NpZ25hbGludGVycHJvY3Rlc3Rlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2FlMTcwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3Qvc2lnbmFsaW50ZXJwcm9jdGVzdGVyLnB5CkBAIC0wLDAgKzEsODQgQEAKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBTSUdVU1IxRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK2NsYXNzIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZ290X3NpZ25hbHMgPSB7J1NJR0hVUCc6IDAsICdTSUdVU1IxJzogMCwgJ1NJR0FMUk0nOiAwfQorCisgICAgZGVmIHNpZ2h1cF9oYW5kbGVyKHNlbGYsIHNpZ251bSwgZnJhbWUpOgorICAgICAgICBzZWxmLmdvdF9zaWduYWxzWydTSUdIVVAnXSArPSAxCisKKyAgICBkZWYgc2lndXNyMV9oYW5kbGVyKHNlbGYsIHNpZ251bSwgZnJhbWUpOgorICAgICAgICBzZWxmLmdvdF9zaWduYWxzWydTSUdVU1IxJ10gKz0gMQorICAgICAgICByYWlzZSBTSUdVU1IxRXhjZXB0aW9uCisKKyAgICBkZWYgd2FpdF9zaWduYWwoc2VsZiwgY2hpbGQsIHNpZ25hbWUsIGV4Y19jbGFzcz1Ob25lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgY2hpbGQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBUaGlzIHdhaXQgc2hvdWxkIGJlIGludGVycnVwdGVkIGJ5IGV4Y19jbGFzcworICAgICAgICAgICAgICAgICMgKGlmIHNldCkKKyAgICAgICAgICAgICAgICBjaGlsZC53YWl0KCkKKworICAgICAgICAgICAgdGltZW91dCA9IDEwLjAKKyAgICAgICAgICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIHRpbWVvdXQKKworICAgICAgICAgICAgd2hpbGUgdGltZS5tb25vdG9uaWMoKSA8IGRlYWRsaW5lOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuZ290X3NpZ25hbHNbc2lnbmFtZV06CisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIHNpZ25hbC5wYXVzZSgpCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Y19jbGFzcyBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZShleGMsIGV4Y19jbGFzcyk6CisgICAgICAgICAgICAgICAgIyBnb3QgdGhlIGV4cGVjdGVkIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBzZWxmLmZhaWwoJ3NpZ25hbCAlcyBub3QgcmVjZWl2ZWQgYWZ0ZXIgJXMgc2Vjb25kcycKKyAgICAgICAgICAgICAgICAgICUgKHNpZ25hbWUsIHRpbWVvdXQpKQorCisgICAgZGVmIHN1YnByb2Nlc3Nfc2VuZF9zaWduYWwoc2VsZiwgcGlkLCBzaWduYW1lKToKKyAgICAgICAgY29kZSA9ICdpbXBvcnQgb3MsIHNpZ25hbDsgb3Mua2lsbCglcywgc2lnbmFsLiVzKScgJSAocGlkLCBzaWduYW1lKQorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLUknLCAnLWMnLCBjb2RlXQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3BlbihhcmdzKQorCisgICAgZGVmIHRlc3RfaW50ZXJwcm9jZXNzX3NpZ25hbChzZWxmKToKKyAgICAgICAgIyBJbnN0YWxsIGhhbmRsZXJzLiBUaGlzIGZ1bmN0aW9uIHJ1bnMgaW4gYSBzdWItcHJvY2Vzcywgc28gd2UKKyAgICAgICAgIyBkb24ndCB3b3JyeSBhYm91dCByZS1zZXR0aW5nIHRoZSBkZWZhdWx0IGhhbmRsZXJzLgorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIHNlbGYuc2lnaHVwX2hhbmRsZXIpCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNlbGYuc2lndXNyMV9oYW5kbGVyKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IyLCBzaWduYWwuU0lHX0lHTikKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgc2lnbmFsLmRlZmF1bHRfaW50X2hhbmRsZXIpCisKKyAgICAgICAgIyBMZXQgdGhlIHN1Yi1wcm9jZXNzZXMga25vdyB3aG8gdG8gc2VuZCBzaWduYWxzIHRvLgorICAgICAgICBwaWQgPSBzdHIob3MuZ2V0cGlkKCkpCisKKyAgICAgICAgd2l0aCBzZWxmLnN1YnByb2Nlc3Nfc2VuZF9zaWduYWwocGlkLCAiU0lHSFVQIikgYXMgY2hpbGQ6CisgICAgICAgICAgICBzZWxmLndhaXRfc2lnbmFsKGNoaWxkLCAnU0lHSFVQJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdvdF9zaWduYWxzLCB7J1NJR0hVUCc6IDEsICdTSUdVU1IxJzogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NJR0FMUk0nOiAwfSkKKworICAgICAgICB3aXRoIHNlbGYuc3VicHJvY2Vzc19zZW5kX3NpZ25hbChwaWQsICJTSUdVU1IxIikgYXMgY2hpbGQ6CisgICAgICAgICAgICBzZWxmLndhaXRfc2lnbmFsKGNoaWxkLCAnU0lHVVNSMScsIFNJR1VTUjFFeGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nb3Rfc2lnbmFscywgeydTSUdIVVAnOiAxLCAnU0lHVVNSMSc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTSUdBTFJNJzogMH0pCisKKyAgICAgICAgd2l0aCBzZWxmLnN1YnByb2Nlc3Nfc2VuZF9zaWduYWwocGlkLCAiU0lHVVNSMiIpIGFzIGNoaWxkOgorICAgICAgICAgICAgIyBOb3RoaW5nIHNob3VsZCBoYXBwZW46IFNJR1VTUjIgaXMgaWdub3JlZAorICAgICAgICAgICAgY2hpbGQud2FpdCgpCisKKyAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgIHNlbGYud2FpdF9zaWduYWwoTm9uZSwgJ1NJR0FMUk0nLCBLZXlib2FyZEludGVycnVwdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdvdF9zaWduYWxzLCB7J1NJR0hVUCc6IDEsICdTSUdVU1IxJzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NJR0FMUk0nOiAwfSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc29ydHBlcmYucHkgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQppbmRleCA5MDcyMmY3Li4xNzFlNWNlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zb3J0cGVyZi5weQorKysgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQpAQCAtNjQsNyArNjQsNyBAQAogICAgIGZsdXNoKCkKIAogZGVmIHRhYnVsYXRlKHIpOgotICAgICIiIlRhYnVsYXRlIHNvcnQgc3BlZWQgZm9yIGxpc3RzIG9mIHZhcmlvdXMgc2l6ZXMuCisgICAgciIiIlRhYnVsYXRlIHNvcnQgc3BlZWQgZm9yIGxpc3RzIG9mIHZhcmlvdXMgc2l6ZXMuCiAKICAgICBUaGUgc2l6ZXMgYXJlIDIqKmkgZm9yIGkgaW4gciAodGhlIGFyZ3VtZW50LCBhIGxpc3QpLgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5IGIvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQppbmRleCAwMDdmM2JjLi44YjY2Zjk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKQEAgLTI2LDYgKzI2LDcgQEAKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKK2ltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdXJsbGliLmVycm9yCiBpbXBvcnQgd2FybmluZ3MKQEAgLTg5LDggKzkwLDkgQEAKICAgICAiYmlnbWVtdGVzdCIsICJiaWdhZGRyc3BhY2V0ZXN0IiwgImNweXRob25fb25seSIsICJnZXRfYXR0cmlidXRlIiwKICAgICAicmVxdWlyZXNfSUVFRV83NTQiLCAic2tpcF91bmxlc3NfeGF0dHIiLCAicmVxdWlyZXNfemxpYiIsCiAgICAgImFudGljaXBhdGVfZmFpbHVyZSIsICJsb2FkX3BhY2thZ2VfdGVzdHMiLCAiZGV0ZWN0X2FwaV9taXNtYXRjaCIsCisgICAgImNoZWNrX19hbGxfXyIsCiAgICAgIyBzeXMKLSAgICAiaXNfanl0aG9uIiwgImNoZWNrX2ltcGxfZGV0YWlsIiwKKyAgICAiaXNfanl0aG9uIiwgImlzX2FuZHJvaWQiLCAiY2hlY2tfaW1wbF9kZXRhaWwiLCAidW5peF9zaGVsbCIsCiAgICAgIyBuZXR3b3JrCiAgICAgIkhPU1QiLCAiSVBWNl9FTkFCTEVEIiwgImZpbmRfdW51c2VkX3BvcnQiLCAiYmluZF9wb3J0IiwgIm9wZW5fdXJscmVzb3VyY2UiLAogICAgICMgcHJvY2Vzc2VzCkBAIC0xMDMsNyArMTA1LDcgQEAKICAgICAiY2hlY2tfd2FybmluZ3MiLCAiY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZyIsICJFbnZpcm9ubWVudFZhckd1YXJkIiwKICAgICAicnVuX3dpdGhfbG9jYWxlIiwgInN3YXBfaXRlbSIsCiAgICAgInN3YXBfYXR0ciIsICJNYXRjaGVyIiwgInNldF9tZW1saW1pdCIsICJTdXBwcmVzc0NyYXNoUmVwb3J0IiwgInNvcnRkaWN0IiwKLSAgICAicnVuX3dpdGhfdHoiLAorICAgICJydW5fd2l0aF90eiIsICJQR08iLAogICAgIF0KIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKQEAgLTczMyw2ICs3MzUsMTMgQEAKIAogaXNfanl0aG9uID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKQogCitpc19hbmRyb2lkID0gYm9vbChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0FORFJPSURfQVBJX0xFVkVMJykpCisKK2lmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgIHVuaXhfc2hlbGwgPSAnL3N5c3RlbS9iaW4vc2gnIGlmIGlzX2FuZHJvaWQgZWxzZSAnL2Jpbi9zaCcKK2Vsc2U6CisgICAgdW5peF9zaGVsbCA9IE5vbmUKKwogIyBGaWxlbmFtZSB1c2VkIGZvciB0ZXN0aW5nCiBpZiBvcy5uYW1lID09ICdqYXZhJzoKICAgICAjIEp5dGhvbiBkaXNhbGxvd3MgQCBpbiBtb2R1bGUgbmFtZXMKQEAgLTgwMiw3ICs4MTEsNyBAQAogIyBlbmNvZGVkIGJ5IHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIChpbiBzdHJpY3QgbW9kZSkuIEl0IGNhbiBiZSBOb25lIGlmIHdlCiAjIGNhbm5vdCBnZW5lcmF0ZSBzdWNoIGZpbGVuYW1lLgogVEVTVEZOX1VORU5DT0RBQkxFID0gTm9uZQotaWYgb3MubmFtZSBpbiAoJ250JywgJ2NlJyk6CitpZiBvcy5uYW1lID09ICdudCc6CiAgICAgIyBza2lwIHdpbjMycyAoMCkgb3IgV2luZG93cyA5eC9NRSAoMSkKICAgICBpZiBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKS5wbGF0Zm9ybSA+PSAyOgogICAgICAgICAjIERpZmZlcmVudCBraW5kcyBvZiBjaGFyYWN0ZXJzIGZyb20gdmFyaW91cyBsYW5ndWFnZXMgdG8gbWluaW1pemUgdGhlCkBAIC04NjksNiArODc4LDEwIEBACiAjIFNhdmUgdGhlIGluaXRpYWwgY3dkCiBTQVZFRENXRCA9IG9zLmdldGN3ZCgpCiAKKyMgU2V0IGJ5IGxpYnJlZ3J0ZXN0L21haW4ucHkgc28gd2UgY2FuIHNraXAgdGVzdHMgdGhhdCBhcmUgbm90CisjIHVzZWZ1bCBmb3IgUEdPCitQR08gPSBGYWxzZQorCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHRlbXBfZGlyKHBhdGg9Tm9uZSwgcXVpZXQ9RmFsc2UpOgogICAgICIiIlJldHVybiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IGNyZWF0ZXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgpAQCAtOTAxLDcgKzkxNCw3IEBACiAgICAgICAgIHlpZWxkIHBhdGgKICAgICBmaW5hbGx5OgogICAgICAgICBpZiBkaXJfY3JlYXRlZDoKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCkKKyAgICAgICAgICAgIHJtdHJlZShwYXRoKQogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIGNoYW5nZV9jd2QocGF0aCwgcXVpZXQ9RmFsc2UpOgpAQCAtMjA3OCw2ICsyMDkxLDExIEBACiAgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCiAgICAgcmV0dXJuIHN1YnByb2Nlc3MuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAKK2RlZiBvcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKKyAgICBvcHRpbWl6YXRpb24gc2V0dGluZ3MgaW4gc3lzLmZsYWdzLiIiIgorICAgIHJldHVybiBzdWJwcm9jZXNzLl9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQorCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFN1cHBvcnQgZm9yIGFzc2VydGlvbnMgYWJvdXQgbG9nZ2luZy4KICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTIxODQsNyArMjIwMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKICAgICAgICAgICAgICAgICAgICAgIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCiAgICAgICAgICAgICAgICAgICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCi0gICAgICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQorICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2gociIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCiAgICAgICAgICAgICAgICAgICAgIGNhbiA9IG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgY2FuID0gRmFsc2UKQEAgLTIyMjksNiArMjI0Nyw2NSBAQAogICAgIHJldHVybiBtaXNzaW5nX2l0ZW1zCiAKIAorZGVmIGNoZWNrX19hbGxfXyh0ZXN0X2Nhc2UsIG1vZHVsZSwgbmFtZV9vZl9tb2R1bGU9Tm9uZSwgZXh0cmE9KCksCisgICAgICAgICAgICAgICAgIGJsYWNrbGlzdD0oKSk6CisgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIF9fYWxsX18gdmFyaWFibGUgb2YgJ21vZHVsZScgY29udGFpbnMgYWxsIHB1YmxpYyBuYW1lcy4KKworICAgIFRoZSBtb2R1bGUncyBwdWJsaWMgbmFtZXMgKGl0cyBBUEkpIGFyZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uCisgICAgd2hldGhlciB0aGV5IG1hdGNoIHRoZSBwdWJsaWMgbmFtZSBjb252ZW50aW9uIGFuZCB3ZXJlIGRlZmluZWQgaW4KKyAgICAnbW9kdWxlJy4KKworICAgIFRoZSAnbmFtZV9vZl9tb2R1bGUnIGFyZ3VtZW50IGNhbiBzcGVjaWZ5IChhcyBhIHN0cmluZyBvciB0dXBsZSB0aGVyZW9mKQorICAgIHdoYXQgbW9kdWxlKHMpIGFuIEFQSSBjb3VsZCBiZSBkZWZpbmVkIGluIGluIG9yZGVyIHRvIGJlIGRldGVjdGVkIGFzIGEKKyAgICBwdWJsaWMgQVBJLiBPbmUgY2FzZSBmb3IgdGhpcyBpcyB3aGVuICdtb2R1bGUnIGltcG9ydHMgcGFydCBvZiBpdHMgcHVibGljCisgICAgQVBJIGZyb20gb3RoZXIgbW9kdWxlcywgcG9zc2libHkgYSBDIGJhY2tlbmQgKGxpa2UgJ2NzdicgYW5kIGl0cyAnX2NzdicpLgorCisgICAgVGhlICdleHRyYScgYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgd291bGRuJ3Qgb3RoZXJ3aXNlIGJlCisgICAgYXV0b21hdGljYWxseSBkZXRlY3RlZCBhcyAicHVibGljIiwgbGlrZSBvYmplY3RzIHdpdGhvdXQgYSBwcm9wZXIKKyAgICAnX19tb2R1bGVfXycgYXR0cml1YnV0ZS4gSWYgcHJvdmlkZWQsIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhlCisgICAgYXV0b21hdGljYWxseSBkZXRlY3RlZCBvbmVzLgorCisgICAgVGhlICdibGFja2xpc3QnIGFyZ3VtZW50IGNhbiBiZSBhIHNldCBvZiBuYW1lcyB0aGF0IG11c3Qgbm90IGJlIHRyZWF0ZWQKKyAgICBhcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGV2ZW4gdGhvdWdoIHRoZWlyIG5hbWVzIGluZGljYXRlIG90aGVyd2lzZS4KKworICAgIFVzYWdlOgorICAgICAgICBpbXBvcnQgYmFyCisgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisgICAgICAgIGNsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZm9vKQorCisgICAgICAgIGNsYXNzIE90aGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGV4dHJhID0geydCQVJfQ09OU1QnLCAnRk9PX0NPTlNUJ30KKyAgICAgICAgICAgICAgICBibGFja2xpc3QgPSB7J2Jheid9ICAjIFVuZG9jdW1lbnRlZCBuYW1lLgorICAgICAgICAgICAgICAgICMgYmFyIGltcG9ydHMgcGFydCBvZiBpdHMgQVBJIGZyb20gX2Jhci4KKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBiYXIsICgnYmFyJywgJ19iYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgICIiIgorCisgICAgaWYgbmFtZV9vZl9tb2R1bGUgaXMgTm9uZToKKyAgICAgICAgbmFtZV9vZl9tb2R1bGUgPSAobW9kdWxlLl9fbmFtZV9fLCApCisgICAgZWxpZiBpc2luc3RhbmNlKG5hbWVfb2ZfbW9kdWxlLCBzdHIpOgorICAgICAgICBuYW1lX29mX21vZHVsZSA9IChuYW1lX29mX21vZHVsZSwgKQorCisgICAgZXhwZWN0ZWQgPSBzZXQoZXh0cmEpCisKKyAgICBmb3IgbmFtZSBpbiBkaXIobW9kdWxlKToKKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfJykgb3IgbmFtZSBpbiBibGFja2xpc3Q6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBvYmogPSBnZXRhdHRyKG1vZHVsZSwgbmFtZSkKKyAgICAgICAgaWYgKGdldGF0dHIob2JqLCAnX19tb2R1bGVfXycsIE5vbmUpIGluIG5hbWVfb2ZfbW9kdWxlIG9yCisgICAgICAgICAgICAgICAgKG5vdCBoYXNhdHRyKG9iaiwgJ19fbW9kdWxlX18nKSBhbmQKKyAgICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Nb2R1bGVUeXBlKSkpOgorICAgICAgICAgICAgZXhwZWN0ZWQuYWRkKG5hbWUpCisgICAgdGVzdF9jYXNlLmFzc2VydENvdW50RXF1YWwobW9kdWxlLl9fYWxsX18sIGV4cGVjdGVkKQorCisKIGNsYXNzIFN1cHByZXNzQ3Jhc2hSZXBvcnQ6CiAgICAgIiIiVHJ5IHRvIHByZXZlbnQgYSBjcmFzaCByZXBvcnQgZnJvbSBwb3BwaW5nIHVwLgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkgYi9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkKaW5kZXggZTk0ZDk4NC4uYWU5MTE0ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fX2FsbF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weQpAQCAtMzgsNiArMzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RuYW1lLCBlLl9fY2xhc3NfXy5fX25hbWVfXywgZSkpCiAgICAgICAgICAgICBpZiAiX19idWlsdGluc19fIiBpbiBuYW1lczoKICAgICAgICAgICAgICAgICBkZWwgbmFtZXNbIl9fYnVpbHRpbnNfXyJdCisgICAgICAgICAgICBpZiAnX19hbm5vdGF0aW9uc19fJyBpbiBuYW1lczoKKyAgICAgICAgICAgICAgICBkZWwgbmFtZXNbJ19fYW5ub3RhdGlvbnNfXyddCiAgICAgICAgICAgICBrZXlzID0gc2V0KG5hbWVzKQogICAgICAgICAgICAgYWxsX2xpc3QgPSBzeXMubW9kdWxlc1ttb2RuYW1lXS5fX2FsbF9fCiAgICAgICAgICAgICBhbGxfc2V0ID0gc2V0KGFsbF9saXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CmluZGV4IDU4ZjJmMDQuLmFiNGUyNDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKQEAgLTQsNyArNCw2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgbmxfbGFuZ2luZm8gPSBOb25lCiAKLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQppbmRleCBhYzYzMjVhLi5iY2JhOGNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQpAQCAtNCw3ICs0LDYgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weSBiL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQppbmRleCBhYjUxNDM3Li4xYmQxZjg5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FpZmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CkBAIC0yLDcgKzIsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IGF1ZGlvdGVzdHMKIGZyb20gYXVkaW9vcCBpbXBvcnQgYnl0ZXN3YXAKLWltcG9ydCBvcwogaW1wb3J0IGlvCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3RydWN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQppbmRleCA0Nzc5YTEzLi5iYzgzMTYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKQEAgLTQ1MTIsNiArNDUxMiwyMSBAQAogICAgICAgICBzdHJpbmcgPSAiTmFtZXNwYWNlKGJhcj0nc3BhbScsIGZvbz00MikiCiAgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwobnMsIHN0cmluZykKIAorICAgIGRlZiB0ZXN0X25hbWVzcGFjZV9zdGFya3dhcmdzX25vdGlkZW50aWZpZXIoc2VsZik6CisgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKCoqeyciJzogJ3F1b3RlJ30pCisgICAgICAgIHN0cmluZyA9ICIiIk5hbWVzcGFjZSgqKnsnIic6ICdxdW90ZSd9KSIiIgorICAgICAgICBzZWxmLmFzc2VydFN0cmluZ0VxdWFsKG5zLCBzdHJpbmcpCisKKyAgICBkZWYgdGVzdF9uYW1lc3BhY2Vfa3dhcmdzX2FuZF9zdGFya3dhcmdzX25vdGlkZW50aWZpZXIoc2VsZik6CisgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKGE9MSwgKip7JyInOiAncXVvdGUnfSkKKyAgICAgICAgc3RyaW5nID0gIiIiTmFtZXNwYWNlKGE9MSwgKip7JyInOiAncXVvdGUnfSkiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChucywgc3RyaW5nKQorCisgICAgZGVmIHRlc3RfbmFtZXNwYWNlX3N0YXJrd2FyZ3NfaWRlbnRpZmllcihzZWxmKToKKyAgICAgICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UoKip7J3ZhbGlkJzogVHJ1ZX0pCisgICAgICAgIHN0cmluZyA9ICJOYW1lc3BhY2UodmFsaWQ9VHJ1ZSkiCisgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwobnMsIHN0cmluZykKKwogICAgIGRlZiB0ZXN0X3BhcnNlcihzZWxmKToKICAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycpCiAgICAgICAgIHN0cmluZyA9ICgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkgYi9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CmluZGV4IDJhMjFlNzQuLjFmODk2N2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQpAQCAtNyw4ICs3LDYgQEAKIGltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgb3BlcmF0b3IKLWltcG9ydCBpbwotaW1wb3J0IG1hdGgKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwpAQCAtMzI4LDggKzMyNiwxOSBAQAogICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcygoaXRvcmlnLCBvcmlnKSwgcHJvdG8pCiAgICAgICAgICAgICBpdCwgYSA9IHBpY2tsZS5sb2FkcyhkKQogICAgICAgICAgICAgYS5mcm9tbGlzdChkYXRhMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdCksIHR5cGUoaXRvcmlnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGEyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgW10pCisKKyAgICBkZWYgdGVzdF9leGhhdXN0ZWRfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbGlzdChzZWxmLmV4YW1wbGUpKQorICAgICAgICBleGhpdCA9IGl0ZXIoYSkKKyAgICAgICAgZW1waXQgPSBpdGVyKGEpCisgICAgICAgIGZvciB4IGluIGV4aGl0OiAgIyBleGhhdXN0IHRoZSBpdGVyYXRvcgorICAgICAgICAgICAgbmV4dChlbXBpdCkgICMgbm90IGV4aGF1c3RlZAorICAgICAgICBhLmFwcGVuZChzZWxmLm91dHNpZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChleGhpdCksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZW1waXQpLCBbc2VsZi5vdXRzaWRlXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsaXN0KHNlbGYuZXhhbXBsZSkgKyBbc2VsZi5vdXRzaWRlXSkKIAogICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKQEAgLTEwODAsNiArMTA4OSwxMiBAQAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0InLCBiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcsIGEpCiAKKyAgICBkZWYgdGVzdF9mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBpdGVyLCBhcnJheS5hcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi50eXBlY29kZSwpKQorICAgICAgICBzdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIHJldmVyc2VkLCBhcnJheS5hcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi50eXBlY29kZSwpKQorCiBjbGFzcyBTdHJpbmdUZXN0KEJhc2VUZXN0KToKIAogICAgIGRlZiB0ZXN0X3NldGl0ZW0oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzdC5weSBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CmluZGV4IGQzZTZkMzUuLjhjNjI0MDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CkBAIC0xLDcgKzEsOCBAQAoraW1wb3J0IGFzdAoraW1wb3J0IGRpcwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBhc3QKIGltcG9ydCB3ZWFrcmVmCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTE1LDYgKzExNiw4IEBACiAgICAgIyBQRVAgNDQ4OiBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKICAgICAieyoqezE6Mn0sIDI6M30iLAogICAgICJ7KnsxLCAyfSwgM30iLAorICAgICMgQXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb25zCisgICAgImFzeW5jIGRlZiBmKCk6XG4gW2kgYXN5bmMgZm9yIGIgaW4gY10iLAogXQogCiAjIFRoZXNlIGFyZSBjb21waWxlZCB0aHJvdWdoICJzaW5nbGUiCkBAIC0yMzgsNyArMjQxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYXN0X3RyZWUgPSBjb21waWxlKGksICI/Iiwga2luZCwgYXN0LlB5Q0ZfT05MWV9BU1QpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9fdHVwbGUoYXN0X3RyZWUpLCBvKQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRUcnVlb3JkZXIoYXN0X3RyZWUsICgwLCAwKSkKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChhY3Rpb249ImNvbXBpbGluZyIsIGlucHV0PWkpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGFjdGlvbj0iY29tcGlsaW5nIiwgaW5wdXQ9aSwga2luZD1raW5kKToKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZShhc3RfdHJlZSwgIj8iLCBraW5kKQogCiAgICAgZGVmIHRlc3Rfc2xpY2Uoc2VsZik6CkBAIC01NDcsNiArNTUwLDE3IEBACiAgICAgICAgICAgICBjb21waWxlKG1vZCwgJ3Rlc3QnLCAnZXhlYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImludmFsaWQgaW50ZWdlciB2YWx1ZTogTm9uZSIsIHN0cihjbS5leGNlcHRpb24pKQogCisgICAgZGVmIHRlc3RfbGV2ZWxfYXNfbm9uZShzZWxmKToKKyAgICAgICAgYm9keSA9IFthc3QuSW1wb3J0RnJvbShtb2R1bGU9J3RpbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzPVthc3QuYWxpYXMobmFtZT0nc2xlZXAnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm89MCwgY29sX29mZnNldD0wKV0KKyAgICAgICAgbW9kID0gYXN0Lk1vZHVsZShib2R5KQorICAgICAgICBjb2RlID0gY29tcGlsZShtb2QsICd0ZXN0JywgJ2V4ZWMnKQorICAgICAgICBucyA9IHt9CisgICAgICAgIGV4ZWMoY29kZSwgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NsZWVwJywgbnMpCisKIAogY2xhc3MgQVNUVmFsaWRhdG9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC03NDIsNyArNzU2LDcgQEAKIAogICAgIGRlZiB0ZXN0X2ltcG9ydGZyb20oc2VsZik6CiAgICAgICAgIGltcCA9IGFzdC5JbXBvcnRGcm9tKE5vbmUsIFthc3QuYWxpYXMoIngiLCBOb25lKV0sIC00MikKLSAgICAgICAgc2VsZi5zdG10KGltcCwgImxldmVsIGxlc3MgdGhhbiAtMSIpCisgICAgICAgIHNlbGYuc3RtdChpbXAsICJOZWdhdGl2ZSBJbXBvcnRGcm9tIGxldmVsIikKICAgICAgICAgc2VsZi5zdG10KGFzdC5JbXBvcnRGcm9tKE5vbmUsIFtdLCAwKSwgImVtcHR5IG5hbWVzIG9uIEltcG9ydEZyb20iKQogCiAgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgpAQCAtNzk3LDIxICs4MTEsMjEgQEAKICAgICBkZWYgX2NoZWNrX2NvbXByZWhlbnNpb24oc2VsZiwgZmFjKToKICAgICAgICAgc2VsZi5leHByKGZhYyhbXSksICJjb21wcmVoZW5zaW9uIHdpdGggbm8gZ2VuZXJhdG9ycyIpCiAgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQogICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW10sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQogICAgICAgICB4ID0gYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkKICAgICAgICAgeSA9IGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkKLSAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFtOb25lXSkKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFtOb25lXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAiTm9uZSBkaXNhbGxvd2VkIikKLSAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKIAogICAgIGRlZiBfc2ltcGxlX2NvbXAoc2VsZiwgZmFjKToKICAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW2ddKSwKICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKICAgICAgICAgZGVmIHdyYXAoZ2Vucyk6CkBAIC04MjksNyArODQzLDcgQEAKIAogICAgIGRlZiB0ZXN0X2RpY3Rjb21wKHNlbGYpOgogICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgicCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSksIFtdLCAwKQogICAgICAgICBjID0gYXN0LkRpY3RDb21wKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSksIFtnXSkKICAgICAgICAgc2VsZi5leHByKGMsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKQEAgLTkzMyw2ICs5NDcsMTI1IEBACiAgICAgICAgICAgICBjb21waWxlKG1vZCwgZm4sICJleGVjIikKIAogCitjbGFzcyBDb25zdGFudFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBvbiB0aGUgYXN0LkNvbnN0YW50IG5vZGUgdHlwZS4iIiIKKworICAgIGRlZiBjb21waWxlX2NvbnN0YW50KHNlbGYsIHZhbHVlKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgieCA9IDEyMyIpCisKKyAgICAgICAgbm9kZSA9IHRyZWUuYm9keVswXS52YWx1ZQorICAgICAgICBuZXdfbm9kZSA9IGFzdC5Db25zdGFudCh2YWx1ZT12YWx1ZSkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X25vZGUsIG5vZGUpCisgICAgICAgIHRyZWUuYm9keVswXS52YWx1ZSA9IG5ld19ub2RlCisKKyAgICAgICAgY29kZSA9IGNvbXBpbGUodHJlZSwgIjxzdHJpbmc+IiwgImV4ZWMiKQorCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhjb2RlLCBucykKKyAgICAgICAgcmV0dXJuIG5zWyd4J10KKworICAgIGRlZiB0ZXN0X3ZhbGlkYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYuY29tcGlsZV9jb25zdGFudChbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhbiBpbnZhbGlkIHR5cGUgaW4gQ29uc3RhbnQ6IGxpc3QiKQorCisgICAgZGVmIHRlc3Rfc2luZ2xldG9ucyhzZWxmKToKKyAgICAgICAgZm9yIGNvbnN0IGluIChOb25lLCBGYWxzZSwgVHJ1ZSwgRWxsaXBzaXMsIGInJywgZnJvemVuc2V0KCkpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29uc3Q9Y29uc3QpOgorICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5jb21waWxlX2NvbnN0YW50KGNvbnN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModmFsdWUsIGNvbnN0KQorCisgICAgZGVmIHRlc3RfdmFsdWVzKHNlbGYpOgorICAgICAgICBuZXN0ZWRfdHVwbGUgPSAoMSwpCisgICAgICAgIG5lc3RlZF9mcm96ZW5zZXQgPSBmcm96ZW5zZXQoezF9KQorICAgICAgICBmb3IgbGV2ZWwgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICBuZXN0ZWRfdHVwbGUgPSAobmVzdGVkX3R1cGxlLCAyKQorICAgICAgICAgICAgbmVzdGVkX2Zyb3plbnNldCA9IGZyb3plbnNldCh7bmVzdGVkX2Zyb3plbnNldCwgMn0pCisgICAgICAgIHZhbHVlcyA9ICgxMjMsIDEyMy4wLCAxMjNqLAorICAgICAgICAgICAgICAgICAgInVuaWNvZGUiLCBiJ2J5dGVzJywKKyAgICAgICAgICAgICAgICAgIHR1cGxlKCJ0dXBsZSIpLCBmcm96ZW5zZXQoImZyb3plbnNldCIpLAorICAgICAgICAgICAgICAgICAgbmVzdGVkX3R1cGxlLCBuZXN0ZWRfZnJvemVuc2V0KQorICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodmFsdWU9dmFsdWUpOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuY29tcGlsZV9jb25zdGFudCh2YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgdmFsdWUpCisKKyAgICBkZWYgdGVzdF9hc3NpZ25fdG9fY29uc3RhbnQoc2VsZik6CisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoInggPSAxIikKKworICAgICAgICB0YXJnZXQgPSB0cmVlLmJvZHlbMF0udGFyZ2V0c1swXQorICAgICAgICBuZXdfdGFyZ2V0ID0gYXN0LkNvbnN0YW50KHZhbHVlPTEpCisgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld190YXJnZXQsIHRhcmdldCkKKyAgICAgICAgdHJlZS5ib2R5WzBdLnRhcmdldHNbMF0gPSBuZXdfdGFyZ2V0CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNvbXBpbGUodHJlZSwgInN0cmluZyIsICJleGVjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiB3aGljaCBjYW4ndCBiZSBhc3NpZ25lZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInRvIGluIFN0b3JlIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvY3N0cmluZyhzZWxmKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgiJ2RvY3N0cmluZydcbnggPSAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZ2V0X2RvY3N0cmluZyh0cmVlKSwgJ2RvY3N0cmluZycpCisKKyAgICAgICAgdHJlZS5ib2R5WzBdLnZhbHVlID0gYXN0LkNvbnN0YW50KHZhbHVlPSdjb25zdGFudCBkb2NzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5nZXRfZG9jc3RyaW5nKHRyZWUpLCAnY29uc3RhbnQgZG9jc3RyaW5nJykKKworICAgIGRlZiBnZXRfbG9hZF9jb25zdChzZWxmLCB0cmVlKToKKyAgICAgICAgIyBDb21waWxlIHRvIGJ5dGVjb2RlLCBkaXNhc3NlbWJsZSBhbmQgZ2V0IHBhcmFtZXRlciBvZiBMT0FEX0NPTlNUCisgICAgICAgICMgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGNvID0gY29tcGlsZSh0cmVlLCAnPHN0cmluZz4nLCAnZXhlYycpCisgICAgICAgIGNvbnN0cyA9IFtdCisgICAgICAgIGZvciBpbnN0ciBpbiBkaXMuZ2V0X2luc3RydWN0aW9ucyhjbyk6CisgICAgICAgICAgICBpZiBpbnN0ci5vcG5hbWUgPT0gJ0xPQURfQ09OU1QnOgorICAgICAgICAgICAgICAgIGNvbnN0cy5hcHBlbmQoaW5zdHIuYXJndmFsKQorICAgICAgICByZXR1cm4gY29uc3RzCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9sb2FkX2NvbnN0KHNlbGYpOgorICAgICAgICBjb25zdHMgPSBbTm9uZSwKKyAgICAgICAgICAgICAgICAgIFRydWUsIEZhbHNlLAorICAgICAgICAgICAgICAgICAgMTI0LAorICAgICAgICAgICAgICAgICAgMi4wLAorICAgICAgICAgICAgICAgICAgM2osCisgICAgICAgICAgICAgICAgICAidW5pY29kZSIsCisgICAgICAgICAgICAgICAgICBiJ2J5dGVzJywKKyAgICAgICAgICAgICAgICAgICgxLCAyLCAzKV0KKworICAgICAgICBjb2RlID0gJ1xuJy5qb2luKFsneD17IXJ9Jy5mb3JtYXQoY29uc3QpIGZvciBjb25zdCBpbiBjb25zdHNdKQorICAgICAgICBjb2RlICs9ICdcbnggPSAuLi4nCisgICAgICAgIGNvbnN0cy5leHRlbmQoKEVsbGlwc2lzLCBOb25lKSkKKworICAgICAgICB0cmVlID0gYXN0LnBhcnNlKGNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfbG9hZF9jb25zdCh0cmVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMpCisKKyAgICAgICAgIyBSZXBsYWNlIGV4cHJlc3Npb24gbm9kZXMgd2l0aCBjb25zdGFudHMKKyAgICAgICAgZm9yIGFzc2lnbiwgY29uc3QgaW4gemlwKHRyZWUuYm9keSwgY29uc3RzKToKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGFzc2lnbiwgYXN0LkFzc2lnbiksIGFzdC5kdW1wKGFzc2lnbikKKyAgICAgICAgICAgIG5ld19ub2RlID0gYXN0LkNvbnN0YW50KHZhbHVlPWNvbnN0KQorICAgICAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X25vZGUsIGFzc2lnbi52YWx1ZSkKKyAgICAgICAgICAgIGFzc2lnbi52YWx1ZSA9IG5ld19ub2RlCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9sb2FkX2NvbnN0KHRyZWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cykKKworICAgIGRlZiB0ZXN0X2xpdGVyYWxfZXZhbChzZWxmKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgiMSArIDIiKQorICAgICAgICBiaW5vcCA9IHRyZWUuYm9keVswXS52YWx1ZQorCisgICAgICAgIG5ld19sZWZ0ID0gYXN0LkNvbnN0YW50KHZhbHVlPTEwKQorICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfbGVmdCwgYmlub3AubGVmdCkKKyAgICAgICAgYmlub3AubGVmdCA9IG5ld19sZWZ0CisKKyAgICAgICAgbmV3X3JpZ2h0ID0gYXN0LkNvbnN0YW50KHZhbHVlPTIwKQorICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfcmlnaHQsIGJpbm9wLnJpZ2h0KQorICAgICAgICBiaW5vcC5yaWdodCA9IG5ld19yaWdodAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmxpdGVyYWxfZXZhbChiaW5vcCksIDMwKQorCisKIGRlZiBtYWluKCk6CiAgICAgaWYgX19uYW1lX18gIT0gJ19fbWFpbl9fJzoKICAgICAgICAgcmV0dXJuCkBAIC05NDAsOCArMTA3Myw5IEBACiAgICAgICAgIGZvciBzdGF0ZW1lbnRzLCBraW5kIGluICgoZXhlY190ZXN0cywgImV4ZWMiKSwgKHNpbmdsZV90ZXN0cywgInNpbmdsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWxfdGVzdHMsICJldmFsIikpOgogICAgICAgICAgICAgcHJpbnQoa2luZCsiX3Jlc3VsdHMgPSBbIikKLSAgICAgICAgICAgIGZvciBzIGluIHN0YXRlbWVudHM6Ci0gICAgICAgICAgICAgICAgcHJpbnQocmVwcih0b190dXBsZShjb21waWxlKHMsICI/Iiwga2luZCwgMHg0MDApKSkrIiwiKQorICAgICAgICAgICAgZm9yIHN0YXRlbWVudCBpbiBzdGF0ZW1lbnRzOgorICAgICAgICAgICAgICAgIHRyZWUgPSBhc3QucGFyc2Uoc3RhdGVtZW50LCAiPyIsIGtpbmQpCisgICAgICAgICAgICAgICAgcHJpbnQoIiVyLCIgJSAodG9fdHVwbGUodHJlZSksKSkKICAgICAgICAgICAgIHByaW50KCJdIikKICAgICAgICAgcHJpbnQoIm1haW4oKSIpCiAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKQEAgLTk3OSwxOSArMTExMywyMCBAQAogKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAndicsICgnTG9hZCcsKSksIFsoJ0JyZWFrJywgKDEsIDExKSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdDb250aW51ZScsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdUdXBsZScsICgxLCA0KSwgWygnTmFtZScsICgxLCA0KSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDYpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMSksICdjJywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCAxNCkpXSwgW10pXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTGlzdENvbXAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDEyKSwgWygnTmFtZScsICgxLCAxMiksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDIwKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMiwgNCksICgnVHVwbGUnLCAoMywgNCksIFsoJ05hbWUnLCAoMywgNCksICdBYScsICgnTG9hZCcsKSksICgnTmFtZScsICg1LCA3KSwgJ0JiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDgsIDQpLCBbKCdOYW1lJywgKDgsIDQpLCAnQWEnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCA0KSwgJ0JiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCAxMCksICdDYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMTEpLCAndycsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTYpLCAneCcsICgnTG9hZCcsKSksIFtdKSwgKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDIyKSwgJ20nLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDI3KSwgJ3AnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDMyKSwgJ2cnLCAoJ0xvYWQnLCkpXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAndycsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICd4JywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdnJywgKCdMb2FkJywpKV0pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDcpLCBbKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICdtJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTIpLCBbKCdOYW1lJywgKDEsIDEyKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMjApLCAnYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgyLCA0KSwgKCdUdXBsZScsICgzLCA0KSwgWygnTmFtZScsICgzLCA0KSwgJ0FhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDUsIDcpLCAnQmInLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoOCwgNCksIFsoJ05hbWUnLCAoOCwgNCksICdBYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMTAsIDQpLCAnQmInLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMTAsIDEwKSwgJ0NjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAxMSksICd3JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNiksICd4JywgKCdMb2FkJywpKSwgW10sIDApLCAoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMjIpLCAnbScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMjcpLCAncCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMzIpLCAnZycsICgnTG9hZCcsKSldLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICd3JywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ3gnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2cnLCAoJ0xvYWQnLCkpXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgNyksIFsoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ20nLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAneCcsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAogKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdFeHByJywgKDIsIDEpLCAoJ0F3YWl0JywgKDIsIDEpLCAoJ0NhbGwnLCAoMiwgNyksICgnTmFtZScsICgyLCA3KSwgJ3NvbWV0aGluZycsICgnTG9hZCcsKSksIFtdLCBbXSkpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdBc3luY0ZvcicsICgyLCA3KSwgKCdOYW1lJywgKDIsIDExKSwgJ2UnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDIsIDE2KSwgJ2knLCAoJ0xvYWQnLCkpLCBbKCdFeHByJywgKDIsIDE5KSwgKCdOdW0nLCAoMiwgMTkpLCAxKSldLCBbKCdFeHByJywgKDMsIDcpLCAoJ051bScsICgzLCA3KSwgMikpXSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnQXN5bmNXaXRoJywgKDIsIDcpLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgyLCAxMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDIsIDE3KSwgJ2InLCAoJ1N0b3JlJywpKSldLCBbKCdFeHByJywgKDIsIDIwKSwgKCdOdW0nLCAoMiwgMjApLCAxKSldKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3QnLCAoMSwgMCksIFtOb25lLCAoJ051bScsICgxLCAxMCksIDIpXSwgWygnRGljdCcsICgxLCAzKSwgWygnTnVtJywgKDEsIDQpLCAxKV0sIFsoJ051bScsICgxLCA2KSwgMildKSwgKCdOdW0nLCAoMSwgMTIpLCAzKV0pKV0pLAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldCcsICgxLCAwKSwgWygnU3RhcnJlZCcsICgxLCAxKSwgKCdTZXQnLCAoMSwgMiksIFsoJ051bScsICgxLCAzKSwgMSksICgnTnVtJywgKDEsIDYpLCAyKV0pLCAoJ0xvYWQnLCkpLCAoJ051bScsICgxLCAxMCksIDMpXSkpXSksCisoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0V4cHInLCAoMiwgMSksICgnTGlzdENvbXAnLCAoMiwgMiksICgnTmFtZScsICgyLCAyKSwgJ2knLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDIsIDE0KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDIsIDE5KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMSldKSldLCBbXSwgTm9uZSldKSwKIF0KIHNpbmdsZV9yZXN1bHRzID0gWwogKCdJbnRlcmFjdGl2ZScsIFsoJ0V4cHInLCAoMSwgMCksICgnQmluT3AnLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSwgKCdBZGQnLCksICgnTnVtJywgKDEsIDIpLCAyKSkpXSksCkBAIC0xMDA2LDggKzExNDEsOCBAQAogKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDEsIDApLCBbXSwgW10pKSwKICgnRXhwcmVzc2lvbicsICgnU2V0JywgKDEsIDApLCBbKCdOYW1lQ29uc3RhbnQnLCAoMSwgMSksIE5vbmUpXSkpLAogKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDEsIDApLCBbKCdOdW0nLCAoMiwgNiksIDEpXSwgWygnTnVtJywgKDQsIDEwKSwgMildKSksCi0oJ0V4cHJlc3Npb24nLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSldKSksCi0oJ0V4cHJlc3Npb24nLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAorKCdFeHByZXNzaW9uJywgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0sIDApXSkpLAorKCdFeHByZXNzaW9uJywgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldLCAwKV0pKSwKICgnRXhwcmVzc2lvbicsICgnQ29tcGFyZScsICgxLCAwKSwgKCdOdW0nLCAoMSwgMCksIDEpLCBbKCdMdCcsKSwgKCdMdCcsKV0sIFsoJ051bScsICgxLCA0KSwgMiksICgnTnVtJywgKDEsIDgpLCAzKV0pKSwKICgnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnZicsICgnTG9hZCcsKSksIFsoJ051bScsICgxLCAyKSwgMSksICgnTnVtJywgKDEsIDQpLCAyKSwgKCdTdGFycmVkJywgKDEsIDEwKSwgKCdOYW1lJywgKDEsIDExKSwgJ2QnLCAoJ0xvYWQnLCkpLCAoJ0xvYWQnLCkpXSwgWygna2V5d29yZCcsICdjJywgKCdOdW0nLCAoMSwgOCksIDMpKSwgKCdrZXl3b3JkJywgTm9uZSwgKCdOYW1lJywgKDEsIDE1KSwgJ2UnLCAoJ0xvYWQnLCkpKV0pKSwKICgnRXhwcmVzc2lvbicsICgnTnVtJywgKDEsIDApLCAxMCkpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY2dlbi5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNnZW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFiMWI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNnZW4ucHkKQEAgLTAsMCArMSw4MjMgQEAKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworCisKK2NsYXNzIEF3YWl0RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK0B0eXBlcy5jb3JvdXRpbmUKK2RlZiBhd2FpdGFibGUoKiwgdGhyb3c9RmFsc2UpOgorICAgIGlmIHRocm93OgorICAgICAgICB5aWVsZCAoJ3Rocm93JywpCisgICAgZWxzZToKKyAgICAgICAgeWllbGQgKCdyZXN1bHQnLCkKKworCitkZWYgcnVuX3VudGlsX2NvbXBsZXRlKGNvcm8pOgorICAgIGV4YyA9IEZhbHNlCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZXhjOgorICAgICAgICAgICAgICAgIGV4YyA9IEZhbHNlCisgICAgICAgICAgICAgICAgZnV0ID0gY29yby50aHJvdyhBd2FpdEV4Y2VwdGlvbikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnV0ID0gY29yby5zZW5kKE5vbmUpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmV0dXJuIGV4LmFyZ3NbMF0KKworICAgICAgICBpZiBmdXQgPT0gKCd0aHJvdycsKToKKyAgICAgICAgICAgIGV4YyA9IFRydWUKKworCitkZWYgdG9fbGlzdChnZW4pOgorICAgIGFzeW5jIGRlZiBpdGVyYXRlKCk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGFzeW5jIGZvciBpIGluIGdlbjoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoaSkKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgcmV0dXJuIHJ1bl91bnRpbF9jb21wbGV0ZShpdGVyYXRlKCkpCisKKworY2xhc3MgQXN5bmNHZW5TeW50YXhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDEoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBhYmMKKyAgICAgICAgICAgIHlpZWxkIGZyb20gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3lpZWxkIGZyb20uKmluc2lkZSBhc3luYycpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzAyKHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAneWllbGQgZnJvbS4qaW5zaWRlIGFzeW5jJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDMoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBhYmMKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3JldHVybi4qdmFsdWUuKmFzeW5jIGdlbicpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzA0KHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybiAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDUoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBpZiAwOgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworCitjbGFzcyBBc3luY0dlblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGNvbXBhcmVfZ2VuZXJhdG9ycyhzZWxmLCBzeW5jX2dlbiwgYXN5bmNfZ2VuKToKKyAgICAgICAgZGVmIHN5bmNfaXRlcmF0ZShnKToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnLl9fbmV4dF9fKCkpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoJ1NUT1AnKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHR5cGUoZXgpKSkKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICBkZWYgYXN5bmNfaXRlcmF0ZShnKToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZy5fX2FuZXh0X18oKS5fX25leHRfXygpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgnU1RPUCcpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIGlmIGV4LmFyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGV4LmFyZ3NbMF0pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKCdFTVBUWSBTdG9wSXRlcmF0aW9uJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzdHIodHlwZShleCkpKQorICAgICAgICAgICAgcmV0dXJuIHJlcworCisgICAgICAgIHN5bmNfZ2VuX3Jlc3VsdCA9IHN5bmNfaXRlcmF0ZShzeW5jX2dlbikKKyAgICAgICAgYXN5bmNfZ2VuX3Jlc3VsdCA9IGFzeW5jX2l0ZXJhdGUoYXN5bmNfZ2VuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5bmNfZ2VuX3Jlc3VsdCwgYXN5bmNfZ2VuX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJuIGFzeW5jX2dlbl9yZXN1bHQKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9pdGVyYXRpb25fMDEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICBhID0geWllbGQgMTIzCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGEsIE5vbmUpCisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgNDU2CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgNzg5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b19saXN0KGdlbigpKSwgWzEyMywgNDU2LCA3ODldKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2l0ZXJhdGlvbl8wMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgYWkgPSBnLl9fYWl0ZXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCksICgncmVzdWx0JywpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKyAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEFzeW5jSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSh0aHJvdz1UcnVlKQorICAgICAgICAgICAgeWllbGQgNDU2CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBd2FpdEV4Y2VwdGlvbik6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgYWkgPSBnLl9fYWl0ZXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3luYyBnZW5lcmF0b3IuKlN0b3BBc3luY0l0ZXJhdGlvbicpOgorICAgICAgICAgICAgdG9fbGlzdChnZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXN5bmMgZ2VuZXJhdG9yLipTdG9wSXRlcmF0aW9uJyk6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNyhzZWxmKToKKyAgICAgICAgZGVmIHN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBhc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA4KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA5KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzEwKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tTm9uZSB2YWx1ZSAuKiBhc3luYyBnZW5lcmF0b3IiKToKKyAgICAgICAgICAgIGdlbigpLl9fYW5leHRfXygpLnNlbmQoMTAwKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FwaV8wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMTIzCisKKyAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLl9fbmFtZV9fLCAnZ2VuJykKKyAgICAgICAgZy5fX25hbWVfXyA9ICcxMjMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX25hbWVfXywgJzEyMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbignLmdlbicsIGcuX19xdWFsbmFtZV9fKQorICAgICAgICBnLl9fcXVhbG5hbWVfXyA9ICcxMjMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX3F1YWxuYW1lX18sICcxMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuYWdfYXdhaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShnLmFnX2ZyYW1lLCB0eXBlcy5GcmFtZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZy5hZ19ydW5uaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZy5hZ19jb2RlLCB0eXBlcy5Db2RlVHlwZSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2F3YWl0YWJsZShnLmFjbG9zZSgpKSkKKworCitjbGFzcyBBc3luY0dlbkFzeW5jaW9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCisgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AoTm9uZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wID0gTm9uZQorCisgICAgYXN5bmMgZGVmIHRvX2xpc3Qoc2VsZiwgZ2VuKToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgYXN5bmMgZm9yIGkgaW4gZ2VuOgorICAgICAgICAgICAgcmVzLmFwcGVuZChpKQorICAgICAgICByZXR1cm4gcmVzCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICByZXMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChnZW4oKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbMSwgMl0pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChnZW4oKSkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMyhzZWxmKToKKyAgICAgICAgbG9vcCA9IHNlbGYubG9vcAorCisgICAgICAgIGNsYXNzIEdlbjoKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIDIKKworICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnRvX2xpc3QoR2VuKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgWzEsIDJdKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYW5leHRfMDQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICB5aWVsZCAxMDAwCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgeWllbGQgNAorCisgICAgICAgIGFzeW5jIGRlZiBydW4xKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDQpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIGFzeW5jIGRlZiBydW4yKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAyKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnRocm93KFplcm9EaXZpc2lvbkVycm9yKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMDAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgNCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuMSgpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bjIoKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FuZXh0XzA1KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgdiA9IHlpZWxkIHYKKyAgICAgICAgICAgIHlpZWxkIHYgKiAxMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKE5vbmUpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKDEwKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnNlbmQoMTIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEyMDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hY2xvc2VfMDYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCAxMgorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGdlbiA9IGZvbygpCisgICAgICAgICAgICBpdCA9IGdlbi5fX2FpdGVyX18oKQorICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIGF3YWl0IGdlbi5hY2xvc2UoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImFzeW5jIGdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hY2xvc2VfMDcoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSArPSAxCisgICAgICAgICAgICBET05FICs9IDEwMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnZW4uYWNsb3NlKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hY2xvc2VfMDgoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBmdXQKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FICs9IDEKKyAgICAgICAgICAgIERPTkUgKz0gMTAwMAorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGdlbiA9IGZvbygpCisgICAgICAgICAgICBpdCA9IGdlbi5fX2FpdGVyX18oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMSkKKyAgICAgICAgICAgIHQgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2soaXQuX19hbmV4dF9fKCkpCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgYXdhaXQgZ2VuLmFjbG9zZSgpCisgICAgICAgICAgICByZXR1cm4gdAorCisgICAgICAgIHQgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICAgICAgIyBTaWxlbmNlIFJlc291cmNlV2FybmluZ3MKKyAgICAgICAgZnV0LmNhbmNlbCgpCisgICAgICAgIHQuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2djX2FjbG9zZV8wOShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgICAgIGF3YWl0IGcuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIGF3YWl0IGcuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIGRlbCBnCisKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICAjIFNhbml0eSBjaGVjazoKKyAgICAgICAgZGVmIHNnZW4oKToKKyAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICBzZyA9IHNnZW4oKQorICAgICAgICB2ID0gc2cuc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisgICAgICAgIHYgPSBzZy5zZW5kKDEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAyMDApCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKDEwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hc2VuZChOb25lKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FzZW5kXzAyKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGFzeW5jIGRlZiBzbGVlcF9uX2NyYXNoKGRlbGF5KToKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoZGVsYXksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwX25fY3Jhc2goMC4wMSkKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgYXdhaXQgZy5hc2VuZCgxMDApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMyhzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBmdXQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoYXN5bmNpby5zbGVlcChkZWxheSwgbG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoZGVsYXkgLyAyLCBsYW1iZGE6IGZ1dC5jYW5jZWwoKSkKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBmdXQKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwX25fY3Jhc2goMC4wMSkKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgYXdhaXQgZy5hc2VuZCgxMDApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2F0aHJvd18wMShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBjbGFzcyBGb29FcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgU2FuaXR5IGNoZWNrOgorICAgICAgICBkZWYgc2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgRm9vRXI6CisgICAgICAgICAgICAgICAgdiA9IDEwMDAKKyAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgIHNnID0gc2dlbigpCisgICAgICAgIHYgPSBzZy5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKyAgICAgICAgdiA9IHNnLnRocm93KEZvb0VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICBzZy5zZW5kKE5vbmUpCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGV4Y2VwdCBGb29FcjoKKyAgICAgICAgICAgICAgICAgICAgdiA9IDEwMDAKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgIyByZXR1cm4KKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmF0aHJvdyhGb29FcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwMCkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hdGhyb3dfMDIoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgY2xhc3MgRm9vRXIoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBmdXQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoYXN5bmNpby5zbGVlcChkZWxheSwgbG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoZGVsYXkgLyAyLCBsYW1iZGE6IGZ1dC5jYW5jZWwoKSkKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBmdXQKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICAgICAgZXhjZXB0IEZvb0VyOgorICAgICAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF9uX2NyYXNoKDAuMDEpCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgICMgcmV0dXJuCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hdGhyb3coRm9vRXIpCisgICAgICAgICAgICBleGNlcHQgYXN5bmNpby5DYW5jZWxsZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDYW5jZWxsZWRFcnJvciB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX3NodXRkb3duXzAxKHNlbGYpOgorICAgICAgICBmaW5hbGl6ZWQgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXRlcih0aW1lb3V0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGZpbmFsaXplZAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAodGltZW91dCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGZpbmFsaXplZCArPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXQoKToKKyAgICAgICAgICAgIGFzeW5jIGZvciBfIGluIHdhaXRlcigxKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdDEgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorICAgICAgICB0MiA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayh3YWl0KCkpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5sb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmFsaXplZCwgMikKKworICAgICAgICAjIFNpbGVuY2Ugd2FybmluZ3MKKyAgICAgICAgdDEuY2FuY2VsKCkKKyAgICAgICAgdDIuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fc2h1dGRvd25fMDIoc2VsZik6CisgICAgICAgIGxvZ2dlZCA9IDAKKworICAgICAgICBkZWYgbG9nZ2VyKGxvb3AsIGNvbnRleHQpOgorICAgICAgICAgICAgbm9ubG9jYWwgbG9nZ2VkCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdhc3luY2dlbicsIGNvbnRleHQpCisgICAgICAgICAgICBleHBlY3RlZCA9ICdhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xvc2luZyBvZiBhc3luY2hyb25vdXMnCisgICAgICAgICAgICBpZiBleHBlY3RlZCBpbiBjb250ZXh0WydtZXNzYWdlJ106CisgICAgICAgICAgICAgICAgbG9nZ2VkICs9IDEKKworICAgICAgICBhc3luYyBkZWYgd2FpdGVyKHRpbWVvdXQpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAodGltZW91dCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAxIC8gMAorCisgICAgICAgIGFzeW5jIGRlZiB3YWl0KCk6CisgICAgICAgICAgICBhc3luYyBmb3IgXyBpbiB3YWl0ZXIoMSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHQgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICAgICAgc2VsZi5sb29wLnNldF9leGNlcHRpb25faGFuZGxlcihsb2dnZXIpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5sb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2VkLCAxKQorCisgICAgICAgICMgU2lsZW5jZSB3YXJuaW5ncworICAgICAgICB0LmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CmluZGV4IDNhMzNmYzguLjBlYmE3NmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQpAQCAtMTIsNyArMTIsNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QubW9jawogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTI5NywzNyArMjk2LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3luY2hhdC5maW5kX3ByZWZpeF9hdF9lbmQoInF3ZXJ0eWRramYiLCAiXHJcbiIpLCAwKQogCiAKLWNsYXNzIFRlc3RGaWZvKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgY206Ci0gICAgICAgICAgICBmID0gYXN5bmNoYXQuZmlmbygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42IikKLSAgICAgICAgZi5wdXNoKDcpCi0gICAgICAgIGYucHVzaChiJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZpcnN0KCksIDcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZpcnN0KCksIGInYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5pc19lbXB0eSgpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgYidhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuaXNfZW1wdHkoKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMCwgTm9uZSkpCi0KLSAgICBkZWYgdGVzdF9naXZlbl9saXN0KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKLSAgICAgICAgICAgIGYgPSBhc3luY2hhdC5maWZvKFtiJ3gnLCAxNywgM10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIGIneCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCAxNykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgwLCBOb25lKSkKLQotCiBjbGFzcyBUZXN0Tm90Q29ubmVjdGVkKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kaXNhbGxvd19uZWdhdGl2ZV90ZXJtaW5hdG9yKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTI1OQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKaW5kZXggMzg1NzkxNi4uZGJlZTU5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CkBAIC0xMSw2ICsxMSw5IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIAoraWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weSBiL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CmluZGV4IDUwOTNlOWQuLjU5MzBkOWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CkBAIC04Myw2ICs4MywxMCBAQAogICAgICAgICAgICAgZGVmIF9faWFkZF9fKHNlbGYsIHZhbCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGF1Z190ZXN0MyhzZWxmLnZhbCArIHZhbCkKIAorICAgICAgICBjbGFzcyBhdWdfdGVzdDQoYXVnX3Rlc3QzKToKKyAgICAgICAgICAgICIiIkJsb2NrcyBpbmhlcml0YW5jZSwgYW5kIGZhbGxiYWNrIHRvIF9fYWRkX18iIiIKKyAgICAgICAgICAgIF9faWFkZF9fID0gTm9uZQorCiAgICAgICAgIHggPSBhdWdfdGVzdCgxKQogICAgICAgICB5ID0geAogICAgICAgICB4ICs9IDEwCkBAIC0xMDYsNiArMTEwLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudmFsLCAxMykKIAorICAgICAgICB4ID0gYXVnX3Rlc3Q0KDQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHggKz0gMTAKKwogCiAgICAgZGVmIHRlc3RDdXN0b21NZXRob2RzMih0ZXN0X3NlbGYpOgogICAgICAgICBvdXRwdXQgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzNTIucHkgYi9MaWIvdGVzdC90ZXN0X2Jhc2VleGNlcHRpb24ucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzNTIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfYmFzZWV4Y2VwdGlvbi5weQppbmRleCA3Yzk4YzQ2Li4yN2Q1MTRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDM1Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jhc2VleGNlcHRpb24ucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBidWlsdGlucwotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgb3MKIGZyb20gcGxhdGZvcm0gaW1wb3J0IHN5c3RlbSBhcyBwbGF0Zm9ybV9zeXN0ZW0KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkgYi9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQppbmRleCA0MGFjOWJmLi42MTMzYmJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQpAQCAtMTQsNyArMTQsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzeXMKLWltcG9ydCBmdW5jdG9vbHMKIAogIyBUaGVzZSB0ZXN0cyBhbGwgdXNlIG9uZSBvZiB0aGUgYmlnbWVtdGVzdCBkZWNvcmF0b3JzIHRvIGluZGljYXRlIGhvdyBtdWNoCiAjIG1lbW9yeSB0aGV5IHVzZSBhbmQgaG93IG11Y2ggbWVtb3J5IHRoZXkgbmVlZCB0byBiZSBldmVuIG1lYW5pbmdmdWwuICBUaGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CmluZGV4IDAzNDI0NWQuLjZiM2U0MzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQpAQCAtMTU5LDExICsxNTksMjUgQEAKICAgICAgICAgIyBUaGVuIGNhbGN1bGF0ZSB0aGUgaGV4YmluNCBiaW5hcnktdG8tQVNDSUkgdHJhbnNsYXRpb24KICAgICAgICAgcmxlID0gYmluYXNjaWkucmxlY29kZV9ocXgoc2VsZi5kYXRhKQogICAgICAgICBhID0gYmluYXNjaWkuYjJhX2hxeChzZWxmLnR5cGUydGVzdChybGUpKQorCiAgICAgICAgIGIsIF8gPSBiaW5hc2NpaS5hMmJfaHF4KHNlbGYudHlwZTJ0ZXN0KGEpKQogICAgICAgICByZXMgPSBiaW5hc2NpaS5ybGVkZWNvZGVfaHF4KGIpCi0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHNlbGYucmF3ZGF0YSkKIAorICAgIGRlZiB0ZXN0X3JsZShzZWxmKToKKyAgICAgICAgIyB0ZXN0IHJlcGV0aXRpb24gd2l0aCBhIHJlcGV0aXRpb24gbG9uZ2VyIHRoYW4gdGhlIGxpbWl0IG9mIDI1NQorICAgICAgICBkYXRhID0gKGInYScgKiAxMDAgKyBiJ2InICsgYidjJyAqIDMwMCkKKworICAgICAgICBlbmNvZGVkID0gYmluYXNjaWkucmxlY29kZV9ocXgoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIChiJ2FceDkwZCcgICAgICAjICdhJyAqIDEwMAorICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2InICAgICAgICAgICAjICdiJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2NceDkwXHhmZicgICAjICdjJyAqIDI1NQorICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2NceDkwLScpKSAgICAjICdjJyAqIDQ1CisKKyAgICAgICAgZGVjb2RlZCA9IGJpbmFzY2lpLnJsZWRlY29kZV9ocXgoZW5jb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCBkYXRhKQorCiAgICAgZGVmIHRlc3RfaGV4KHNlbGYpOgogICAgICAgICAjIHRlc3QgaGV4bGlmaWNhdGlvbgogICAgICAgICBzID0gYid7c1wwMDVcMDAwXDAwMFwwMDB3b3JsZGlcMDAyXDAwMFwwMDBcMDAwc1wwMDVcMDAwXDAwMFwwMDBoZWxsb2lcMDAxXDAwMFwwMDBcMDAwMCcKQEAgLTMzMSw2ICszNDUsMTYgQEAKICAgICAgICAgICAgICMgbm9uLUFTQ0lJIHN0cmluZwogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYTJiLCAiXHg4MCIpCiAKKyAgICBkZWYgdGVzdF9iMmFfYmFzZTY0X25ld2xpbmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI1MzU3OiB0ZXN0IG5ld2xpbmUgcGFyYW1ldGVyCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW5hc2NpaS5iMmFfYmFzZTY0KGIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYUdWc2JHOD1cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmluYXNjaWkuYjJhX2Jhc2U2NChiLCBuZXdsaW5lPVRydWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYUdWc2JHOD1cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmluYXNjaWkuYjJhX2Jhc2U2NChiLCBuZXdsaW5lPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FHVnNiRzg9JykKKwogCiBjbGFzcyBBcnJheUJpbkFTQ0lJVGVzdChCaW5BU0NJSVRlc3QpOgogICAgIGRlZiB0eXBlMnRlc3Qoc2VsZiwgcyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2JpbmhleC5weSBiL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5CmluZGV4IDlkNGM4NWEuLjIxZjQ0NjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5CkBAIC00LDcgKzQsNiBAQAogICAgQmFzZWQgb24gYW4gb3JpZ2luYWwgdGVzdCBieSBSb2dlciBFLiBNYXNzZS4KICIiIgogaW1wb3J0IGJpbmhleAotaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQppbmRleCBlOWRiZGRjLi4zZWQwMThlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKQEAgLTIsNyArMiw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIG9wZXJhdG9yIGltcG9ydCBlcSwgbmUsIGx0LCBndCwgbGUsIGdlCitmcm9tIG9wZXJhdG9yIGltcG9ydCBlcSwgbGUsIG5lCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YQogCiBkZWYgZ2NkKGEsIGIpOgpAQCAtMzg4LDYgKzM4OCw1NCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGVxLCBCLCBWKSwgWydCLl9fZXFfXycsICdWLl9fZXFfXyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGxlLCBCLCBWKSwgWydCLl9fbGVfXycsICdWLl9fZ2VfXyddKQogCitjbGFzcyBTdXBFcShvYmplY3QpOgorICAgICIiIkNsYXNzIHRoYXQgY2FuIHRlc3QgZXF1YWxpdHkiIiIKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworY2xhc3MgUyhTdXBFcSk6CisgICAgIiIiU3ViY2xhc3Mgb2YgU3VwRXEgdGhhdCBzaG91bGQgZmFpbCIiIgorICAgIF9fZXFfXyA9IE5vbmUKKworY2xhc3MgRihvYmplY3QpOgorICAgICIiIkluZGVwZW5kZW50IGNsYXNzIHRoYXQgc2hvdWxkIGZhbGwgYmFjayIiIgorCitjbGFzcyBYKG9iamVjdCk6CisgICAgIiIiSW5kZXBlbmRlbnQgY2xhc3MgdGhhdCBzaG91bGQgZmFpbCIiIgorICAgIF9fZXFfXyA9IE5vbmUKKworY2xhc3MgU04oU3VwRXEpOgorICAgICIiIlN1YmNsYXNzIG9mIFN1cEVxIHRoYXQgY2FuIHRlc3QgZXF1YWxpdHksIGJ1dCBub3Qgbm9uLWVxdWFsaXR5IiIiCisgICAgX19uZV9fID0gTm9uZQorCitjbGFzcyBYTjoKKyAgICAiIiJJbmRlcGVuZGVudCBjbGFzcyB0aGF0IGNhbiB0ZXN0IGVxdWFsaXR5LCBidXQgbm90IG5vbi1lcXVhbGl0eSIiIgorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIF9fbmVfXyA9IE5vbmUKKworY2xhc3MgRmFsbGJhY2tCbG9ja2luZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBOb25lIG1ldGhvZCBibG9ja2luZyIiIgorCisgICAgZGVmIHRlc3RfZmFsbGJhY2tfcm1ldGhvZF9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgZSwgZiwgcywgeCA9IFN1cEVxKCksIEYoKSwgUygpLCBYKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgZSkKKyAgICAgICAgIyBsZWZ0IG9wZXJhbmQgaXMgY2hlY2tlZCBmaXJzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXEsIHgsIGUpCisgICAgICAgICMgUyBpcyBhIHN1YmNsYXNzLCBzbyBpdCdzIGFsd2F5cyBjaGVja2VkIGZpcnN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXEsIGUsIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXEsIHMsIGUpCisKKyAgICBkZWYgdGVzdF9mYWxsYmFja19uZV9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgZSwgc24sIHhuID0gU3VwRXEoKSwgU04oKSwgWE4oKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUgIT0gZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZSwgZSwgc24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmUsIHNuLCBlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUgIT0geG4pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmUsIHhuLCBlKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ib29sLnB5IGIvTGliL3Rlc3QvdGVzdF9ib29sLnB5CmluZGV4IGQzMGEzYjkuLjlmOGYwZTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKQEAgLTk2LDYgKzk2LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UvMSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGYWxzZS8xLCBGYWxzZSkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUlMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChUcnVlJTEsIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUlMiwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChUcnVlJTIsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UlMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGYWxzZSUxLCBGYWxzZSkKKwogICAgICAgICBmb3IgYiBpbiBGYWxzZSwgVHJ1ZToKICAgICAgICAgICAgIGZvciBpIGluIDAsIDEsIDI6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiKippLCBpbnQoYikqKmkpCkBAIC0zMzMsNiArMzQwLDE3IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IChFeGNlcHRpb24pIGFzIGVfbGVuOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlX2Jvb2wpLCBzdHIoZV9sZW4pKQogCisgICAgZGVmIHRlc3RfYmxvY2tlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIF9fYm9vbF9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJvb2wsIEEoKSkKKworICAgICAgICBjbGFzcyBCOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEwCisgICAgICAgICAgICBfX2Jvb2xfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBib29sLCBCKCkpCisKICAgICBkZWYgdGVzdF9yZWFsX2FuZF9pbWFnKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUucmVhbCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLmltYWcsIDApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CmluZGV4IDJlZWY5ZmMuLmI4M2YyZjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CkBAIC0xNiw3ICsxNiw2IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBwZXJtdXRhdGlvbnMsIHByb2R1Y3QKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNhbXBsZSwgY2hvaWNlCi1mcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXIKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHN5cywgYXJyYXksIGlvCiBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5CmluZGV4IDk5MzFjODQuLmZlYTZkYTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZpby5weQpAQCAtNTksNyArNTksNyBAQAogICAgICAgICBzZWxmLmRyaXZlX29uZShiIjEyMzQ1Njc4OTBcMDBcMDFcMDJcMDNcMDRcMDVcMDYiKQogCiAgICAgZGVmIHRlc3RfbnVsbHBhdChzZWxmKToKLSAgICAgICAgc2VsZi5kcml2ZV9vbmUoYnl0ZXMoMTAwMCkpCisgICAgICAgIHNlbGYuZHJpdmVfb25lKGInXDAnICogMTAwMCkKIAogCiBjbGFzcyBDQnVmZmVyU2l6ZVRlc3QoQnVmZmVyU2l6ZVRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weSBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQppbmRleCAzOWM4MGIwLi5lMGNmZmUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CkBAIC04MSw3ICs4MSw3IEBACiAgICAgICAgICgnJywgVmFsdWVFcnJvciksCiAgICAgICAgICgnICcsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAgXHRcdCAgJywgVmFsdWVFcnJvciksCi0gICAgICAgIChzdHIoYidcdTA2NjNcdTA2NjFcdTA2NjQgJywncmF3LXVuaWNvZGUtZXNjYXBlJyksIDMxNCksCisgICAgICAgIChzdHIoYnInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAogICAgICAgICAoY2hyKDB4MjAwKSwgVmFsdWVFcnJvciksCiBdCiAKQEAgLTEwMyw3ICsxMDMsNyBAQAogICAgICAgICAoJycsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgIFx0XHQgICcsIFZhbHVlRXJyb3IpLAotICAgICAgICAoc3RyKGInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAorICAgICAgICAoc3RyKGJyJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKICAgICAgICAgKGNocigweDIwMCksIFZhbHVlRXJyb3IpLAogXQogCkBAIC0xNzEwLDIxICsxNzEwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5zcGFtKCksICdzcGFtNDInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9fYnl0ZXMoMiwgJ2xpdHRsZScpLCBiJ1x4MmFceDAwJykKIAotICAgIGRlZiB0ZXN0X3R5cGVfbmV3X2tleXdvcmRzKHNlbGYpOgotICAgICAgICBjbGFzcyBCOgotICAgICAgICAgICAgZGVmIGhhbShzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2hhbSVkJyAlIHNlbGYKLSAgICAgICAgQyA9IHR5cGUuX19uZXdfXyh0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9J0MnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VzPShCLCBpbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Q9eydzcGFtJzogbGFtYmRhIHNlbGY6ICdzcGFtJXMnICUgc2VsZn0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX25hbWVfXywgJ0MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19xdWFsbmFtZV9fLCAnQycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX21vZHVsZV9fLCBfX25hbWVfXykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYmFzZXNfXywgKEIsIGludCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5fX2Jhc2VfXywgaW50KQotICAgICAgICBzZWxmLmFzc2VydEluKCdzcGFtJywgQy5fX2RpY3RfXykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignaGFtJywgQy5fX2RpY3RfXykKKyAgICBkZWYgdGVzdF90eXBlX25va3dhcmdzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlKCdhJywgKCksIHt9LCB4PTUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGUoJ2EnLCAoKSwgZGljdD17fSkKIAogICAgIGRlZiB0ZXN0X3R5cGVfbmFtZShzZWxmKToKICAgICAgICAgZm9yIG5hbWUgaW4gJ0EnLCAnXHhjNCcsICdcVTAwMDFmNDBkJywgJ0IuQScsICc0MicsICcnOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKaW5kZXggY2MzMTJiMS4uMjIyNDQyNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CkBAIC0yMTYsNyArMjE2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBzZWxmLnR5cGUydGVzdChzYW1wbGVbOi0zXSwgInV0Zi04IikpCiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6Ci0gICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjXGRlZjBcZGVmMCIKKyAgICAgICAgc2FtcGxlID0gIkhlbGxvIHdvcmxkXG5cdTEyMzRcdTU2NzhcdTlhYmMiCiAgICAgICAgIGZvciBlbmMgaW4gKCJ1dGYtOCIsICJ1dGYtMTYiKToKICAgICAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsIGVuYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoZW5jKSwgc2FtcGxlKQpAQCAtMjY5LDYgKzI2OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oMjAwLCBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IDMwMCBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IC0xIGluIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogc3lzLm1heHNpemUrMSBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTm9uZSBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogZmxvYXQob3JkKCdhJykpIGluIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiAiYSIgaW4gYikKQEAgLTMwMCw2ICszMDEsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50eXBlMnRlc3QuZnJvbWhleCwgJ1x4MDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnR5cGUydGVzdC5mcm9taGV4LCAnMTIgICBceDAwICAgMzQnKQogCisgICAgICAgIGZvciBkYXRhLCBwb3MgaW4gKAorICAgICAgICAgICAgIyBpbnZhbGlkIGZpcnN0IGhleGFkZWNpbWFsIGNoYXJhY3RlcgorICAgICAgICAgICAgKCcxMiB4NCA1NicsIDMpLAorICAgICAgICAgICAgIyBpbnZhbGlkIHNlY29uZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICgnMTIgM3ggNTYnLCA0KSwKKyAgICAgICAgICAgICMgdHdvIGludmFsaWQgaGV4YWRlY2ltYWwgY2hhcmFjdGVycworICAgICAgICAgICAgKCcxMiB4eSA1NicsIDMpLAorICAgICAgICAgICAgIyB0ZXN0IG5vbi1BU0NJSSBzdHJpbmcKKyAgICAgICAgICAgICgnMTIgM1x4ZmYgNTYnLCA0KSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi50eXBlMnRlc3QuZnJvbWhleChkYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignYXQgcG9zaXRpb24gJXMnICUgcG9zLCBzdHIoY20uZXhjZXB0aW9uKSkKKwogICAgIGRlZiB0ZXN0X2hleChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdC5oZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QuaGV4LCAxKQpAQCAtNjc0LDYgKzY4OSwzNyBAQAogICAgICAgICB0ZXN0LnN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgaXRlciwgc2VsZi50eXBlMnRlc3QpCiAgICAgICAgIHRlc3Quc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCByZXZlcnNlZCwgc2VsZi50eXBlMnRlc3QpCiAKKyAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKKyAgICAgICAgcm9zZXR0YSA9IGJ5dGVhcnJheShyYW5nZSgyNTYpKQorICAgICAgICByb3NldHRhW29yZCgnbycpXSA9IG9yZCgnZScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiLnRyYW5zbGF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiLnRyYW5zbGF0ZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi50cmFuc2xhdGUsIGJ5dGVzKHJhbmdlKDI1NSkpKQorCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIHNlbGYudHlwZTJ0ZXN0KQorCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhKQorICAgICAgICBkID0gYi50cmFuc2xhdGUocm9zZXR0YSwgYicnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWxsZScpCisKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQorICAgICAgICBjID0gYi50cmFuc2xhdGUoTm9uZSwgYidlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hsbG8nKQorCisgICAgICAgICMgdGVzdCBkZWxldGUgYXMgYSBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBkZWxldGU9YicnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVsbGUnKQorICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgZGVsZXRlPWInbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQorICAgICAgICBjID0gYi50cmFuc2xhdGUoTm9uZSwgZGVsZXRlPWInZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKKwogCiBjbGFzcyBCeXRlc1Rlc3QoQmFzZUJ5dGVzVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVzCkBAIC03MjIsMzEgKzc2OCwxNDIgQEAKIAogICAgICMgVGVzdCBQeUJ5dGVzX0Zyb21Gb3JtYXQoKQogICAgIGRlZiB0ZXN0X2Zyb21fZm9ybWF0KHNlbGYpOgotICAgICAgICB0ZXN0LnN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY3R5cGVzJykKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IHB5dGhvbmFwaSwgcHlfb2JqZWN0LCBjX2ludCwgY19jaGFyX3AKKyAgICAgICAgY3R5cGVzID0gdGVzdC5zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2N0eXBlcycpCisgICAgICAgIF90ZXN0Y2FwaSA9IHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgcHl0aG9uYXBpLCBweV9vYmplY3QKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0ICgKKyAgICAgICAgICAgIGNfaW50LCBjX3VpbnQsCisgICAgICAgICAgICBjX2xvbmcsIGNfdWxvbmcsCisgICAgICAgICAgICBjX3NpemVfdCwgY19zc2l6ZV90LAorICAgICAgICAgICAgY19jaGFyX3ApCisKICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0ID0gcHl0aG9uYXBpLlB5Qnl0ZXNfRnJvbUZvcm1hdAogICAgICAgICBQeUJ5dGVzX0Zyb21Gb3JtYXQucmVzdHlwZSA9IHB5X29iamVjdAogCisgICAgICAgICMgYmFzaWMgdGVzdHMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidmb3JtYXQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2Zvcm1hdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInSGVsbG8gJXMgIScsIGInd29ybGQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ0hlbGxvIHdvcmxkICEnKQogCisgICAgICAgICMgdGVzdCBmb3JtYXR0ZXJzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYz0lYycsIGNfaW50KDApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M9XDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M9JWMnLCBjX2ludChvcmQoJ0AnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYz1AJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidjPSVjJywgY19pbnQoMjU1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidjPVx4ZmYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2Q9JWQgbGQ9JWxkIHpkPSV6ZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfaW50KDEpLCBjX2xvbmcoMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfc2l6ZV90KDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2Q9MSBsZD0yIHpkPTMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2Q9JWQgbGQ9JWxkIHpkPSV6ZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfaW50KC0xKSwgY19sb25nKC0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19zaXplX3QoLTMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2Q9LTEgbGQ9LTIgemQ9LTMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3U9JXUgbHU9JWx1IHp1PSV6dScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfdWludCgxMjMpLCBjX3Vsb25nKDQ1NiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfc2l6ZV90KDc4OSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIndT0xMjMgbHU9NDU2IHp1PTc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInaT0laScsIGNfaW50KDEyMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInaT0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2k9JWknLCBjX2ludCgtMTIzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidpPS0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3g9JXgnLCBjX2ludCgweGFiYykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIneD1hYmMnKQorCisgICAgICAgIHNpemVvZl9wdHIgPSBjdHlwZXMuc2l6ZW9mKGNfY2hhcl9wKQorCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgICMgV2luZG93cyAoTVNDUlQpCisgICAgICAgICAgICBwdHJfZm9ybWF0ID0gJzB4JTB7fVgnLmZvcm1hdCgyICogc2l6ZW9mX3B0cikKKyAgICAgICAgICAgIGRlZiBwdHJfZm9ybWF0dGVyKHB0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuIChwdHJfZm9ybWF0ICUgcHRyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBVTklYIChnbGliYykKKyAgICAgICAgICAgIGRlZiBwdHJfZm9ybWF0dGVyKHB0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuICclI3gnICUgcHRyCisKKyAgICAgICAgcHRyID0gMHhhYmNkZWYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidwdHI9JXAnLCBjX2NoYXJfcChwdHIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJ3B0cj0nICsgcHRyX2Zvcm1hdHRlcihwdHIpKS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIncz0lcycsIGNfY2hhcl9wKGInY3N0cicpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3M9Y3N0cicpCisKKyAgICAgICAgIyB0ZXN0IG1pbmltdW0gYW5kIG1heGltdW0gaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgc2l6ZV9tYXggPSBjX3NpemVfdCgtMSkudmFsdWUKKyAgICAgICAgZm9yIGZvcm1hdHN0ciwgY3R5cGVzX3R5cGUsIHZhbHVlLCBweV9mb3JtYXR0ZXIgaW4gKAorICAgICAgICAgICAgKGInJWQnLCBjX2ludCwgX3Rlc3RjYXBpLklOVF9NSU4sIHN0ciksCisgICAgICAgICAgICAoYiclZCcsIGNfaW50LCBfdGVzdGNhcGkuSU5UX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyVsZCcsIGNfbG9uZywgX3Rlc3RjYXBpLkxPTkdfTUlOLCBzdHIpLAorICAgICAgICAgICAgKGInJWxkJywgY19sb25nLCBfdGVzdGNhcGkuTE9OR19NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclbHUnLCBjX3Vsb25nLCBfdGVzdGNhcGkuVUxPTkdfTUFYLCBzdHIpLAorICAgICAgICAgICAgKGInJXpkJywgY19zc2l6ZV90LCBfdGVzdGNhcGkuUFlfU1NJWkVfVF9NSU4sIHN0ciksCisgICAgICAgICAgICAoYiclemQnLCBjX3NzaXplX3QsIF90ZXN0Y2FwaS5QWV9TU0laRV9UX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyV6dScsIGNfc2l6ZV90LCBzaXplX21heCwgc3RyKSwKKyAgICAgICAgICAgIChiJyVwJywgY19jaGFyX3AsIHNpemVfbWF4LCBwdHJfZm9ybWF0dGVyKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGZvcm1hdHN0ciwgY3R5cGVzX3R5cGUodmFsdWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHlfZm9ybWF0dGVyKHZhbHVlKS5lbmNvZGUoJ2FzY2lpJykpLAorCisgICAgICAgICMgd2lkdGggYW5kIHByZWNpc2lvbiAod2lkdGggaXMgY3VycmVudGx5IGlnbm9yZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJTVzJywgYidhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclLjNzJywgYidhYmNkZWYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FiYycpCisKKyAgICAgICAgIyAnJSUnIGZvcm1hdHRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiclJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidbJSVdJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbJV0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJWMnLCBjX2ludChvcmQoJ18nKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInJV8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInJXMnKQorCisgICAgICAgICMgSW52YWxpZCBmb3JtYXRzIGFuZCBwYXJ0aWFsIGZvcm1hdHRpbmcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJyksIGInJScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSUnKSwgYiclJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJXMnKSwgYiclcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInWyUlXScpLCBiJ1slXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSUlYycsIGNfaW50KG9yZCgnXycpKSksIGInJV8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3g9JWkgeT0lJywgY19pbnQoMiksIGNfaW50KDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3g9MiB5PSUnKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYzolYycsIGNfaW50KDI1NSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInYzpceGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidzOiVzJywgY19jaGFyX3AoYidjc3RyJykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInczpjc3RyJykKLQotICAgICAgICAjIElzc3VlICMxOTk2OQorICAgICAgICAjIElzc3VlICMxOTk2OTogJWMgbXVzdCByYWlzZSBPdmVyZmxvd0Vycm9yIGZvciB2YWx1ZXMKKyAgICAgICAgIyBub3QgaW4gdGhlIHJhbmdlIFswOyAyNTVdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdCwgYiclYycsIGNfaW50KC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0LCBiJyVjJywgY19pbnQoMjU2KSkKIAorICAgIGRlZiB0ZXN0X2J5dGVzX2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBjbGFzcyBJdGVyYXRpb25CbG9ja2VkKGxpc3QpOgorICAgICAgICAgICAgX19ieXRlc19fID0gTm9uZQorICAgICAgICBpID0gWzAsIDEsIDIsIDNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoaSksIGInXHgwMFx4MDFceDAyXHgwMycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIEl0ZXJhdGlvbkJsb2NrZWQoaSkpCisKKyAgICAgICAgIyBBdCBsZWFzdCBpbiBDUHl0aG9uLCBiZWNhdXNlIGJ5dGVzLl9fbmV3X18gYW5kIHRoZSBDIEFQSQorICAgICAgICAjIFB5Qnl0ZXNfRnJvbU9iamVjdCBoYXZlIGRpZmZlcmVudCBmYWxsYmFjayBydWxlcywgaW50ZWdlcgorICAgICAgICAjIGZhbGxiYWNrIGlzIGhhbmRsZWQgc3BlY2lhbGx5LCBzbyB0ZXN0IHNlcGFyYXRlbHkuCisgICAgICAgIGNsYXNzIEludEJsb2NrZWQoaW50KToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygzKSwgYidcMFwwXDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBJbnRCbG9ja2VkKDMpKQorCisgICAgICAgICMgV2hpbGUgdGhlcmUgaXMgbm8gc2VwYXJhdGVseS1kZWZpbmVkIHJ1bGUgZm9yIGhhbmRsaW5nIGJ5dGVzCisgICAgICAgICMgc3ViY2xhc3NlcyBkaWZmZXJlbnRseSBmcm9tIG90aGVyIGJ1ZmZlci1pbnRlcmZhY2UgY2xhc3NlcywKKyAgICAgICAgIyBhbiBpbXBsZW1lbnRhdGlvbiBtYXkgd2VsbCBzcGVjaWFsLWNhc2UgdGhlbSAoYXMgQ1B5dGhvbiAyLngKKyAgICAgICAgIyBzdHIgZGlkKSwgc28gdGVzdCB0aGVtIHNlcGFyYXRlbHkuCisgICAgICAgIGNsYXNzIEJ5dGVzU3ViY2xhc3NCbG9ja2VkKGJ5dGVzKToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiJ2FiJyksIGInYWInKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBCeXRlc1N1YmNsYXNzQmxvY2tlZChiJ2FiJykpCisKKyAgICAgICAgY2xhc3MgQnVmZmVyQmxvY2tlZChieXRlYXJyYXkpOgorICAgICAgICAgICAgX19ieXRlc19fID0gTm9uZQorICAgICAgICBiYSwgYmIgPSBieXRlYXJyYXkoYidhYicpLCBCdWZmZXJCbG9ja2VkKGInYWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGJhKSwgYidhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIGJiKQorCiAKIGNsYXNzIEJ5dGVBcnJheVRlc3QoQmFzZUJ5dGVzVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVhcnJheQpAQCAtMTMyMywyNCArMTQ4MCw2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiIiVzIicgJSBjaHIoYykpCiAKLSAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZik6Ci0gICAgICAgIGIgPSBiJ2hlbGxvJwotICAgICAgICBiYSA9IGJ5dGVhcnJheShiKQotICAgICAgICByb3NldHRhID0gYnl0ZWFycmF5KHJhbmdlKDAsIDI1NikpCi0gICAgICAgIHJvc2V0dGFbb3JkKCdvJyldID0gb3JkKCdlJykKLSAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQotICAgICAgICBjID0gYmEudHJhbnNsYXRlKHJvc2V0dGEsIGInbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGInaGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKLSAgICAgICAgYyA9IGIudHJhbnNsYXRlKE5vbmUsIGInZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKLSAgICAgICAgYyA9IGJhLnRyYW5zbGF0ZShOb25lLCBiJ2UnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYi50cmFuc2xhdGUsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmEudHJhbnNsYXRlLCBOb25lLCBOb25lKQotCiAgICAgZGVmIHRlc3Rfc3BsaXRfYnl0ZWFycmF5KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInYSBiJy5zcGxpdChtZW1vcnl2aWV3KGInICcpKSwgW2InYScsIGInYiddKQogCkBAIC0xNTA0LDcgKzE2NDMsMzIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShhKSwgdHlwZShiKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShhLnkpLCB0eXBlKGIueSkpCiAKLSAgICB0ZXN0X2Zyb21oZXggPSBCYXNlQnl0ZXNUZXN0LnRlc3RfZnJvbWhleAorICAgIGRlZiB0ZXN0X2Zyb21oZXgoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdC5mcm9taGV4KCcxYTJCMzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInXHgxYVx4MmJceDMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGIpLCBzZWxmLnR5cGUydGVzdCkKKworICAgICAgICBjbGFzcyBCMShzZWxmLmJhc2V0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgdmFsdWUpOgorICAgICAgICAgICAgICAgIG1lID0gc2VsZi5iYXNldHlwZS5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgICAgICAgICAgbWUuZm9vID0gJ2JhcicKKyAgICAgICAgICAgICAgICByZXR1cm4gbWUKKworICAgICAgICBiID0gQjEuZnJvbWhleCgnMWEyQjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ1x4MWFceDJiXHgzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShiKSwgQjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mb28sICdiYXInKQorCisgICAgICAgIGNsYXNzIEIyKHNlbGYuYmFzZXR5cGUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKG1lLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuYmFzZXR5cGUgaXMgbm90IGJ5dGVzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmJhc2V0eXBlLl9faW5pdF9fKG1lLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgbWUuZm9vID0gJ2JhcicKKworICAgICAgICBiID0gQjIuZnJvbWhleCgnMWEyQjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ1x4MWFceDJiXHgzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShiKSwgQjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mb28sICdiYXInKQogCiAKIGNsYXNzIEJ5dGVBcnJheVN1YmNsYXNzKGJ5dGVhcnJheSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J6Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CmluZGV4IDQ3ODkyMWEuLjQ4MjI0MmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CkBAIC02LDYgKzYsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgZ2xvYgoraW1wb3J0IHBhdGhsaWIKIGltcG9ydCByYW5kb20KIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCkBAIC01NjAsMTMgKzU2MSwyMCBAQAogICAgICAgICB3aXRoIEJaMkZpbGUoc3RyX2ZpbGVuYW1lLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5EQVRBKQogCisgICAgZGVmIHRlc3RPcGVuUGF0aExpa2VGaWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoc2VsZi5maWxlbmFtZSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKGZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLkRBVEEpCisgICAgICAgIHdpdGggQloyRmlsZShmaWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuREFUQSkKKwogICAgIGRlZiB0ZXN0RGVjb21wcmVzc0xpbWl0ZWQoc2VsZik6CiAgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgotICAgICAgICBib21iID0gYnoyLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgY29tcHJlc3NsZXZlbD05KQorICAgICAgICBib21iID0gYnoyLmNvbXByZXNzKGInXDAnICogaW50KDJlNiksIGNvbXByZXNzbGV2ZWw9OSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFKQogCiAgICAgICAgIGRlY29tcCA9IEJaMkZpbGUoQnl0ZXNJTyhib21iKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb21wLnJlYWQoMSksIGInXDAnKQogICAgICAgICBtYXhfZGVjb21wID0gMSArIERFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKICAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5IGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQppbmRleCA1ZGUzY2U4Li42YzdjZGQxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKQEAgLTcyMywxOSArNzIzLDE5IEBACiAKICAgICBkZWYgYXNzZXJ0RmFpbHVyZShzZWxmLCAqYXJncyk6CiAgICAgICAgIHJjLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAnY2FsZW5kYXInLCAqYXJncykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1VzYWdlOicsIHN0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3VzYWdlOicsIHN0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMikKIAogICAgIGRlZiB0ZXN0X2hlbHAoc2VsZik6CiAgICAgICAgIHN0ZG91dCA9IHNlbGYucnVuX29rKCctaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYidVc2FnZTonLCBzdGRvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYid1c2FnZTonLCBzdGRvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidjYWxlbmRhci5weScsIHN0ZG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJy0taGVscCcsIHN0ZG91dCkKIAogICAgIGRlZiB0ZXN0X2lsbGVnYWxfYXJndW1lbnRzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJy16JykKLSAgICAgICAgI3NlbGYuYXNzZXJ0RmFpbHVyZSgnc3BhbScpCi0gICAgICAgICNzZWxmLmFzc2VydEZhaWx1cmUoJzIwMDQnLCAnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZSgnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZSgnMjAwNCcsICdzcGFtJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCctdCcsICdodG1sJywgJzIwMDQnLCAnMScpCiAKICAgICBkZWYgdGVzdF9vdXRwdXRfY3VycmVudF95ZWFyKHNlbGYpOgpAQCAtODM2LDUgKzgzNiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgIGInaHJlZj0iY3VzdG9tLmNzcyIgLz4nLCBzdGRvdXQpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnbWRheXMnLCAnSmFudWFyeScsICdGZWJydWFyeScsICdFUE9DSCcsCisgICAgICAgICAgICAgICAgICAgICAnTU9OREFZJywgJ1RVRVNEQVknLCAnV0VETkVTREFZJywgJ1RIVVJTREFZJywgJ0ZSSURBWScsCisgICAgICAgICAgICAgICAgICAgICAnU0FUVVJEQVknLCAnU1VOREFZJywgJ2RpZmZlcmVudF9sb2NhbGUnLCAnYycsCisgICAgICAgICAgICAgICAgICAgICAncHJ3ZWVrJywgJ3dlZWsnLCAnZm9ybWF0JywgJ2Zvcm1hdHN0cmluZycsICdtYWluJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgY2FsZW5kYXIsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQppbmRleCAxZWFkZDIyLi41NTIxZTc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CkBAIC00LDggKzQsMTAgQEAKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC00NDIsNiArNDQ0LDcgQEAKICAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zdHJpcCgpLCBleHBlY3RlZF9vdXRwdXQpCiAKKwogY2xhc3MgU2tpcGl0ZW1UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3NraXBpdGVtKHNlbGYpOgpAQCAtNDkxLDEwICs0OTQsMTAgQEAKICAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKHR1cGxlXzEsIGRpY3RfYiwKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCiAgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCi0gICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgU3lzdGVtRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBzID0gImFyZ3VtZW50IDEgKGltcG9zc2libGU8YmFkIGZvcm1hdCBjaGFyPikiCiAgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IChzdHIoZSkgPT0gcykKLSAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCiAKICAgICAgICAgICAgICMgdGVzdCB0aGUgZm9ybWF0IHVuaXQgd2hlbiBza2lwcGVkCkBAIC01MDMsNyArNTA2LDcgQEAKICAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKGVtcHR5X3R1cGxlLCBkaWN0X2IsCiAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2Zvcm1hdC5lbmNvZGUoImFzY2lpIiksIGtleXdvcmRzKQogICAgICAgICAgICAgICAgIHdoZW5fc2tpcHBlZCA9IEZhbHNlCi0gICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgU3lzdGVtRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBzID0gImltcG9zc2libGU8YmFkIGZvcm1hdCBjaGFyPjogJ3t9JyIuZm9ybWF0KGZvcm1hdCkKICAgICAgICAgICAgICAgICB3aGVuX3NraXBwZWQgPSAoc3RyKGUpID09IHMpCiAKQEAgLTUyNCw2ICs1MjcsMzIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCksIHt9LCBiJycsIFs0Ml0pCiAKKyAgICBkZWYgdGVzdF9wb3NpdGlvbmFsX29ubHkoc2VsZik6CisgICAgICAgIHBhcnNlID0gX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcworCisgICAgICAgIHBhcnNlKCgxLCAyLCAzKSwge30sIGInT09PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsIDIpLCB7J2EnOiAzfSwgYidPT08nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgcidGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMSBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoMSwpLCB7J2EnOiAzfSwgYidPT08nLCBbJycsICcnLCAnYSddKQorICAgICAgICBwYXJzZSgoMSwpLCB7fSwgYidPfE9PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKCksIHt9LCBiJ098T08nLCBbJycsICcnLCAnYSddKQorICAgICAgICBwYXJzZSgoMSwgMiksIHsnYSc6IDN9LCBiJ09PJE8nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgcidGdW5jdGlvbiB0YWtlcyBleGFjdGx5IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgxIGdpdmVuXCknKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHsnYSc6IDN9LCBiJ09PJE8nLCBbJycsICcnLCAnYSddKQorICAgICAgICBwYXJzZSgoMSwpLCB7fSwgYidPfE8kTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDEgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgwIGdpdmVuXCknKToKKyAgICAgICAgICAgIHBhcnNlKCgpLCB7fSwgYidPfE8kTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeXN0ZW1FcnJvciwgcidFbXB0eSBwYXJhbWV0ZXIgbmFtZSBhZnRlciBcJCcpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3wkT08nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3lzdGVtRXJyb3IsICdFbXB0eSBrZXl3b3JkJyk6CisgICAgICAgICAgICBwYXJzZSgoMSwpLCB7fSwgYidPfE9PJywgWycnLCAnYScsICcnXSkKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgVGVzdFRocmVhZFN0YXRlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTQ4LDYgKzU3Nyw3IEBACiAgICAgICAgIHQuc3RhcnQoKQogICAgICAgICB0LmpvaW4oKQogCisKIGNsYXNzIFRlc3RfdGVzdGNhcGkodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X190ZXN0Y2FwaShzZWxmKToKICAgICAgICAgZm9yIG5hbWUgaW4gZGlyKF90ZXN0Y2FwaSk6CkBAIC01NTYsNSArNTg2LDg0IEBACiAgICAgICAgICAgICAgICAgICAgIHRlc3QgPSBnZXRhdHRyKF90ZXN0Y2FwaSwgbmFtZSkKICAgICAgICAgICAgICAgICAgICAgdGVzdCgpCiAKKworY2xhc3MgUHlNZW1EZWJ1Z1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBQWVRIT05NQUxMT0MgPSAnZGVidWcnCisgICAgIyAnMHgwNGMwNmUwJyBvciAnMDRDMDZFMCcKKyAgICBQVFJfUkVHRVggPSByJyg/OjB4KT9bMC05YS1mQS1GXSsnCisKKyAgICBkZWYgY2hlY2soc2VsZiwgY29kZSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCk6CisgICAgICAgICAgICBvdXQgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1jJywgY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWVRIT05NQUxMT0M9c2VsZi5QWVRIT05NQUxMT0MpCisgICAgICAgIHN0ZGVyciA9IG91dC5lcnIKKyAgICAgICAgcmV0dXJuIHN0ZGVyci5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKQorCisgICAgZGVmIHRlc3RfYnVmZmVyX292ZXJmbG93KHNlbGYpOgorICAgICAgICBvdXQgPSBzZWxmLmNoZWNrKCdpbXBvcnQgX3Rlc3RjYXBpOyBfdGVzdGNhcGkucHltZW1fYnVmZmVyX292ZXJmbG93KCknKQorICAgICAgICByZWdleCA9IChyIkRlYnVnIG1lbW9yeSBibG9jayBhdCBhZGRyZXNzIHA9e3B0cn06IEFQSSAnbSdcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgMTYgYnl0ZXMgb3JpZ2luYWxseSByZXF1ZXN0ZWRcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIFswLTldIHBhZCBieXRlcyBhdCBwLVswLTldIGFyZSBGT1JCSURERU5CWVRFLCBhcyBleHBlY3RlZC5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIFswLTldIHBhZCBieXRlcyBhdCB0YWlsPXtwdHJ9IGFyZSBub3QgYWxsIEZPUkJJRERFTkJZVEUgXCgweFswLTlhLWZde3syfX1cKTpcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgICAgIGF0IHRhaWxcKzA6IDB4NzggXCpcKlwqIE9VQ0hcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgICAgIGF0IHRhaWxcKzE6IDB4ZmJcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgICAgIGF0IHRhaWxcKzI6IDB4ZmJcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgICAgIC4qXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBibG9jayB3YXMgbWFkZSBieSBjYWxsICNbMC05XSsgdG8gZGVidWcgbWFsbG9jL3JlYWxsb2MuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIERhdGEgYXQgcDogY2IgY2IgY2IgLipcbiIKKyAgICAgICAgICAgICAgICAgciJcbiIKKyAgICAgICAgICAgICAgICAgciJGYXRhbCBQeXRob24gZXJyb3I6IGJhZCB0cmFpbGluZyBwYWQgYnl0ZSIpCisgICAgICAgIHJlZ2V4ID0gcmVnZXguZm9ybWF0KHB0cj1zZWxmLlBUUl9SRUdFWCkKKyAgICAgICAgcmVnZXggPSByZS5jb21waWxlKHJlZ2V4LCBmbGFncz1yZS5ET1RBTEwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X2FwaV9taXN1c2Uoc2VsZik6CisgICAgICAgIG91dCA9IHNlbGYuY2hlY2soJ2ltcG9ydCBfdGVzdGNhcGk7IF90ZXN0Y2FwaS5weW1lbV9hcGlfbWlzdXNlKCknKQorICAgICAgICByZWdleCA9IChyIkRlYnVnIG1lbW9yeSBibG9jayBhdCBhZGRyZXNzIHA9e3B0cn06IEFQSSAnbSdcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgMTYgYnl0ZXMgb3JpZ2luYWxseSByZXF1ZXN0ZWRcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIFswLTldIHBhZCBieXRlcyBhdCBwLVswLTldIGFyZSBGT1JCSURERU5CWVRFLCBhcyBleHBlY3RlZC5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIFswLTldIHBhZCBieXRlcyBhdCB0YWlsPXtwdHJ9IGFyZSBGT1JCSURERU5CWVRFLCBhcyBleHBlY3RlZC5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIGJsb2NrIHdhcyBtYWRlIGJ5IGNhbGwgI1swLTldKyB0byBkZWJ1ZyBtYWxsb2MvcmVhbGxvYy5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgRGF0YSBhdCBwOiBjYiBjYiBjYiAuKlxuIgorICAgICAgICAgICAgICAgICByIlxuIgorICAgICAgICAgICAgICAgICByIkZhdGFsIFB5dGhvbiBlcnJvcjogYmFkIElEOiBBbGxvY2F0ZWQgdXNpbmcgQVBJICdtJywgdmVyaWZpZWQgdXNpbmcgQVBJICdyJ1xuIikKKyAgICAgICAgcmVnZXggPSByZWdleC5mb3JtYXQocHRyPXNlbGYuUFRSX1JFR0VYKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dCwgcmVnZXgpCisKKyAgICBkZWYgY2hlY2tfbWFsbG9jX3dpdGhvdXRfZ2lsKHNlbGYsIGNvZGUpOgorICAgICAgICBvdXQgPSBzZWxmLmNoZWNrKGNvZGUpCisgICAgICAgIGV4cGVjdGVkID0gKCdGYXRhbCBQeXRob24gZXJyb3I6IFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIGNhbGxlZCAnCisgICAgICAgICAgICAgICAgICAgICd3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKworICAgIGRlZiB0ZXN0X3B5bWVtX21hbGxvY193aXRob3V0X2dpbChzZWxmKToKKyAgICAgICAgIyBEZWJ1ZyBob29rcyBtdXN0IHJhaXNlIGFuIGVycm9yIGlmIFB5TWVtX01hbGxvYygpIGlzIGNhbGxlZAorICAgICAgICAjIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgIGNvZGUgPSAnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5bWVtX21hbGxvY193aXRob3V0X2dpbCgpJworICAgICAgICBzZWxmLmNoZWNrX21hbGxvY193aXRob3V0X2dpbChjb2RlKQorCisgICAgZGVmIHRlc3RfcHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIERlYnVnIGhvb2tzIG11c3QgcmFpc2UgYW4gZXJyb3IgaWYgUHlPYmplY3RfTWFsbG9jKCkgaXMgY2FsbGVkCisgICAgICAgICMgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwKKyAgICAgICAgY29kZSA9ICdpbXBvcnQgX3Rlc3RjYXBpOyBfdGVzdGNhcGkucHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsKCknCisgICAgICAgIHNlbGYuY2hlY2tfbWFsbG9jX3dpdGhvdXRfZ2lsKGNvZGUpCisKKworY2xhc3MgUHlNZW1NYWxsb2NEZWJ1Z1Rlc3RzKFB5TWVtRGVidWdUZXN0cyk6CisgICAgUFlUSE9OTUFMTE9DID0gJ21hbGxvY19kZWJ1ZycKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfUFlNQUxMT0MnKSA9PSAxLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWQgcHltYWxsb2MnKQorY2xhc3MgUHlNZW1QeW1hbGxvY0RlYnVnVGVzdHMoUHlNZW1EZWJ1Z1Rlc3RzKToKKyAgICBQWVRIT05NQUxMT0MgPSAncHltYWxsb2NfZGVidWcnCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoUHlfREVCVUcsICduZWVkIFB5X0RFQlVHJykKK2NsYXNzIFB5TWVtRGVmYXVsdFRlc3RzKFB5TWVtRGVidWdUZXN0cyk6CisgICAgIyB0ZXN0IGRlZmF1bHQgYWxsb2NhdG9yIG9mIFB5dGhvbiBjb21waWxlZCBpbiBkZWJ1ZyBtb2RlCisgICAgUFlUSE9OTUFMTE9DID0gJycKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQppbmRleCBhYjlmNmFiLi42MzczMjIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQpAQCAtNyw2ICs3LDcgQEAKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIEJ5dGVzSU8KK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBIYWNrZWRTeXNNb2R1bGU6CiAgICAgIyBUaGUgcmVncmVzc2lvbiB0ZXN0IHdpbGwgaGF2ZSByZWFsIHZhbHVlcyBpbiBzeXMuYXJndiwgd2hpY2gKQEAgLTE0Nyw3ICsxNDgsNyBAQAogICAgIGRlZiB0ZXN0X2VzY2FwZShzZWxmKToKICAgICAgICAgIyBjZ2kuZXNjYXBlKCkgaXMgZGVwcmVjYXRlZC4KICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScsICdjZ2lcLmVzY2FwZScsCisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgcidjZ2lcLmVzY2FwZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdCAmYW1wOyBzdHJpbmciLCBjZ2kuZXNjYXBlKCJ0ZXN0ICYgc3RyaW5nIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImbHQ7dGVzdCBzdHJpbmcmZ3Q7IiwgY2dpLmVzY2FwZSgiPHRlc3Qgc3RyaW5nPiIpKQpAQCAtNDczLDYgKzQ3NCwxMSBAQAogICAgICAgICAgICAgY2dpLnBhcnNlX2hlYWRlcignZm9ybS1kYXRhOyBuYW1lPSJmaWxlcyI7IGZpbGVuYW1lPSJmb1xcIm87YmFyIicpLAogICAgICAgICAgICAgKCJmb3JtLWRhdGEiLCB7Im5hbWUiOiAiZmlsZXMiLCAiZmlsZW5hbWUiOiAnZm8ibztiYXInfSkpCiAKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsibG9nZmlsZSIsICJsb2dmcCIsICJpbml0bG9nIiwgImRvbG9nIiwgIm5vbG9nIiwKKyAgICAgICAgICAgICAgICAgICAgICJjbG9zZWxvZyIsICJsb2ciLCAibWF4bGVuIiwgInZhbGlkX2JvdW5kYXJ5In0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgY2dpLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCiAKIEJPVU5EQVJZID0gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTcyMTgzNzM3MzM1MDcwNTUyNjY4ODE2NDY4NCIKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkgYi9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weQppbmRleCA0MDY0YWVmLi4wZDQ1OTRkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weQpAQCAtOSw3ICs5LDcgQEAKIAogIiIiIyIKIAotaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgY29kZWNzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkgYi9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CmluZGV4IDFmODg0ZTUuLjA0NTFmYjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQpAQCAtNCw2ICs0LDggQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNtYXRoLCBtYXRoCiBmcm9tIGNtYXRoIGltcG9ydCBwaGFzZSwgcG9sYXIsIHJlY3QsIHBpCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKIAogSU5GID0gZmxvYXQoJ2luZicpCkBAIC0xNTQsNiArMTU2LDIzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY21hdGguZSwgZV9leHBlY3RlZCwgcGxhY2VzPTksCiAgICAgICAgICAgICBtc2c9ImNtYXRoLmUgaXMge307IHNob3VsZCBiZSB7fSIuZm9ybWF0KGNtYXRoLmUsIGVfZXhwZWN0ZWQpKQogCisgICAgZGVmIHRlc3RfaW5maW5pdHlfYW5kX25hbl9jb25zdGFudHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mLnJlYWwsIG1hdGguaW5mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZi5pbWFnLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mai5yZWFsLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mai5pbWFnLCBtYXRoLmluZikKKworICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihjbWF0aC5uYW4ucmVhbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGgubmFuLmltYWcsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5uYW5qLnJlYWwsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oY21hdGgubmFuai5pbWFnKSkKKworICAgICAgICAjIENoZWNrIGNvbnNpc3RlbmN5IHdpdGggcmVwcnMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5pbmYpLCAiaW5mIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNtYXRoLmluZmopLCAiaW5maiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5uYW4pLCAibmFuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNtYXRoLm5hbmopLCAibmFuaiIpCisKICAgICBkZWYgdGVzdF91c2VyX29iamVjdChzZWxmKToKICAgICAgICAgIyBUZXN0IGF1dG9tYXRpYyBjYWxsaW5nIG9mIF9fY29tcGxleF9fIGFuZCBfX2Zsb2F0X18gYnkgY21hdGgKICAgICAgICAgIyBmdW5jdGlvbnMKQEAgLTMxNSw2ICszMzQsMTggQEAKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X3NwZWNpZmljX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgIyBTb21lIHRlc3RzIG5lZWQgdG8gYmUgc2tpcHBlZCBvbiBhbmNpZW50IE9TIFggdmVyc2lvbnMuCisgICAgICAgICMgU2VlIGlzc3VlICMyNzk1My4KKyAgICAgICAgU0tJUF9PTl9USUdFUiA9IHsndGFuMDA2NCd9CisKKyAgICAgICAgb3N4X3ZlcnNpb24gPSBOb25lCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHZlcnNpb25fdHh0ID0gcGxhdGZvcm0ubWFjX3ZlcigpWzBdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3N4X3ZlcnNpb24gPSB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3R4dC5zcGxpdCgnLicpKSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICBkZWYgcmVjdF9jb21wbGV4KHopOgogICAgICAgICAgICAgIiIiV3JhcHBlZCB2ZXJzaW9uIG9mIHJlY3QgdGhhdCBhY2NlcHRzIGEgY29tcGxleCBudW1iZXIgaW5zdGVhZCBvZgogICAgICAgICAgICAgdHdvIGZsb2F0IGFyZ3VtZW50cy4iIiIKQEAgLTMyOCw2ICszNTksMTIgQEAKICAgICAgICAgZm9yIGlkLCBmbiwgYXIsIGFpLCBlciwgZWksIGZsYWdzIGluIHBhcnNlX3Rlc3RmaWxlKHRlc3RfZmlsZSk6CiAgICAgICAgICAgICBhcmcgPSBjb21wbGV4KGFyLCBhaSkKICAgICAgICAgICAgIGV4cGVjdGVkID0gY29tcGxleChlciwgZWkpCisKKyAgICAgICAgICAgICMgU2tpcCBjZXJ0YWluIHRlc3RzIG9uIE9TIFggMTAuNC4KKyAgICAgICAgICAgIGlmIG9zeF92ZXJzaW9uIGlzIG5vdCBOb25lIGFuZCBvc3hfdmVyc2lvbiA8ICgxMCwgNSk6CisgICAgICAgICAgICAgICAgaWYgaWQgaW4gU0tJUF9PTl9USUdFUjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKwogICAgICAgICAgICAgaWYgZm4gPT0gJ3JlY3QnOgogICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gcmVjdF9jb21wbGV4CiAgICAgICAgICAgICBlbGlmIGZuID09ICdwb2xhcic6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQppbmRleCAzZDJmNzY5Li44NzU3MWQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKQEAgLTM0OCw4ICszNDgsOSBAQAogICAgICAgICAgICAgdGVzdC5zdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKS5fX2VudGVyX18oKQogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgneCcpCiAgICAgICAgICAgICBvcy5jbG9zZShzeXMuc3Rkb3V0LmZpbGVubygpKSIiIgotICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLWMnLCBjb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyMCwgcmMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLmRlY29kZSgnYXNjaWknLCAnaWdub3JlJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbiBpZ25vcmVkIGluLipcbk9TRXJyb3I6IC4qJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQppbmRleCBiZWZlMGU0Li4zOGNiMmUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQpAQCAtMTM4LDkgKzEzOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsIGV4cGVjdGVkX2xvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMpOgotICAgICAgICBpZiBub3QgX19kZWJ1Z19fOgotICAgICAgICAgICAgY21kX2xpbmVfc3dpdGNoZXMgKz0gKCctJyArICdPJyAqIHN5cy5mbGFncy5vcHRpbWl6ZSwpCi0gICAgICAgIHJ1bl9hcmdzID0gY21kX2xpbmVfc3dpdGNoZXMgKyAoc2NyaXB0X25hbWUsKSArIHR1cGxlKGV4YW1wbGVfYXJncykKKyAgICAgICAgcnVuX2FyZ3MgPSBbKnN1cHBvcnQub3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCksCisgICAgICAgICAgICAgICAgICAgICpjbWRfbGluZV9zd2l0Y2hlcywgc2NyaXB0X25hbWUsICpleGFtcGxlX2FyZ3NdCiAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soKnJ1bl9hcmdzLCBfX2lzb2xhdGVkPUZhbHNlKQogICAgICAgICBzZWxmLl9jaGVja19vdXRwdXQoc2NyaXB0X25hbWUsIHJjLCBvdXQgKyBlcnIsIGV4cGVjdGVkX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9hcmd2MCwgZXhwZWN0ZWRfcGF0aDAsCkBAIC00MjksNyArNDI4LDcgQEAKICAgICAgICAgICAgICgnYnVpbHRpbnMueCcsIGJyJ0Vycm9yIHdoaWxlIGZpbmRpbmcgbW9kdWxlIHNwZWNpZmljYXRpb24uKicKICAgICAgICAgICAgICAgICBicidBdHRyaWJ1dGVFcnJvcicpLAogICAgICAgICAgICAgKCdidWlsdGlucy54LnknLCBicidFcnJvciB3aGlsZSBmaW5kaW5nIG1vZHVsZSBzcGVjaWZpY2F0aW9uLionCi0gICAgICAgICAgICAgICAgYnInSW1wb3J0RXJyb3IuKk5vIG1vZHVsZSBuYW1lZC4qbm90IGEgcGFja2FnZScpLAorICAgICAgICAgICAgICAgIGJyJ01vZHVsZU5vdEZvdW5kRXJyb3IuKk5vIG1vZHVsZSBuYW1lZC4qbm90IGEgcGFja2FnZScpLAogICAgICAgICAgICAgKCdvcy5wYXRoJywgYnInbG9hZGVyLipjYW5ub3QgaGFuZGxlJyksCiAgICAgICAgICAgICAoJ2ltcG9ydGxpYicsIGJyJ05vIG1vZHVsZSBuYW1lZC4qJwogICAgICAgICAgICAgICAgIGJyJ2lzIGEgcGFja2FnZSBhbmQgY2Fubm90IGJlIGRpcmVjdGx5IGV4ZWN1dGVkJyksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQppbmRleCAzMzk0YjM5Li4xYThmNjk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgICAgIyB3aXRoIGJhbm5lcgogICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCiAgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9J0ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDMpCiAgICAgICAgIGJhbm5lcl9jYWxsID0gc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFubmVyX2NhbGwsIFsnd3JpdGUnLCAoJ0Zvb1xuJywpLCB7fV0pCiAKQEAgLTc3LDggKzc3LDM2IEBACiAgICAgICAgIHNlbGYuc3RkZXJyLnJlc2V0X21vY2soKQogICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCiAgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisKKyAgICBkZWYgdGVzdF9leGl0X21zZyhzZWxmKToKKyAgICAgICAgIyBkZWZhdWx0IGV4aXQgbWVzc2FnZQorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisgICAgICAgIGVycl9tc2cgPSBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHNbMV0KKyAgICAgICAgZXhwZWN0ZWQgPSAnbm93IGV4aXRpbmcgSW50ZXJhY3RpdmVDb25zb2xlLi4uXG4nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyX21zZywgWyd3cml0ZScsIChleHBlY3RlZCwpLCB7fV0pCisKKyAgICAgICAgIyBubyBleGl0IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5zdGRlcnIucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJywgZXhpdG1zZz0nJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMSkKIAorICAgICAgICAjIGN1c3RvbSBleGl0IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5zdGRlcnIucmVzZXRfbW9jaygpCisgICAgICAgIG1lc3NhZ2UgPSAoCisgICAgICAgICAgICAnYnllISBcTntHUkVFSyBTTUFMTCBMRVRURVIgWkVUQX1cTntDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFfScKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPScnLCBleGl0bXNnPW1lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisgICAgICAgIGVycl9tc2cgPSBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHNbMV0KKyAgICAgICAgZXhwZWN0ZWQgPSBtZXNzYWdlICsgJ1xuJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycl9tc2csIFsnd3JpdGUnLCAoZXhwZWN0ZWQsKSwge31dKQorCisKICAgICBkZWYgdGVzdF9jYXVzZV90YihzZWxmKToKICAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInJhaXNlIFZhbHVlRXJyb3IoJycpIGZyb20gQXR0cmlidXRlRXJyb3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQppbmRleCBlZTFlMjhhLi42YTNlOTkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgdW5pY29kZWRhdGEKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiAKIGNsYXNzIFBvc1JldHVybjoKICAgICAjIHRoaXMgY2FuIGJlIHVzZWQgZm9yIGNvbmZpZ3VyYWJsZSBjYWxsYmFja3MKQEAgLTI4MSwxMiArMjgwLDEyIEBACiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgYiJcXHUzMDQyXHUzeHh4Ii5kZWNvZGUoInVuaWNvZGUtZXNjYXBlIiwgInRlc3QuaGFuZGxlcjEiKSwKKyAgICAgICAgICAgIGIiXFx1MzA0MlxcdTN4eHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAogICAgICAgICAgICAgIlx1MzA0Mls8OTI+PDExNz48NTE+XXh4eCIKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBiIlxcdTMwNDJcdTN4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCisgICAgICAgICAgICBiIlxcdTMwNDJcXHUzeHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAogICAgICAgICAgICAgIlx1MzA0Mls8OTI+PDExNz48NTE+XXh4IgogICAgICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CmluZGV4IGQwZTNhMTUuLjNiZGY3ZDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgUFJDIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQppbmRleCBiYjliZTExLi5jNWUyZjk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIEhvbmdLb25nIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKaW5kZXggOGEzY2E3MC4uMDBlYTFjMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQpAQCAtMSw2ICsxLDUgQEAKICMgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIElTTyAyMDIyIGVuY29kaW5ncy4KIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQppbmRleCA0NGI2M2EwLi45NDM3OGQxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIEphcGFuZXNlIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQppbmRleCBiNmE3NGZiLi44NjNkMTZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIFJPSyBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKaW5kZXggOTE3NDI5Ni4uYmIxZDEzMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBST0MgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKaW5kZXggZjFiZDM4NC4uODllNTFjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgUFJDIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkKaW5kZXggNGMwYzQxNS4uN2E0OGQyNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgSG9uZ0tvbmcgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQppbmRleCA1NzczODIzLi5mZGZlYzgwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBKYXBhbmVzZSBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CmluZGV4IDZjYjQxYzguLjQ3MWNkNzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIFJPSyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CmluZGV4IDJlYTQ0YjUuLjE0NWE5N2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIFJPQyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CmluZGV4IDAxM2VjNjQuLjFlNjNlZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CkBAIC00LDE2ICs0LDEwIEBACiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGVuY29kaW5ncwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAotaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgVklTVEFfT1JfTEFURVIgPSAoc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkubWFqb3IgPj0gNikKLWVsc2U6Ci0gICAgVklTVEFfT1JfTEFURVIgPSBGYWxzZQotCiB0cnk6CiAgICAgaW1wb3J0IGN0eXBlcwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjcsNiArMjEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVyKGlucHV0KSwgKGV4cGVjdCwgbGVuKGlucHV0KSkpCiAgICAgcmV0dXJuIGNoZWNrCiAKKwogY2xhc3MgUXVldWUob2JqZWN0KToKICAgICAiIiIKICAgICBxdWV1ZTogd3JpdGUgYnl0ZXMgYXQgb25lIGVuZCwgcmVhZCBieXRlcyBmcm9tIHRoZSBvdGhlciBlbmQKQEAgLTQ3LDYgKzQyLDcgQEAKICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzaXplOl0KICAgICAgICAgICAgIHJldHVybiBzCiAKKwogY2xhc3MgTWl4SW5DaGVja1N0YXRlSGFuZGxpbmc6CiAgICAgZGVmIGNoZWNrX3N0YXRlX2hhbmRsaW5nX2RlY29kZShzZWxmLCBlbmNvZGluZywgdSwgcyk6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihzKSsxKToKQEAgLTgwLDYgKzc2LDcgQEAKICAgICAgICAgICAgIHBhcnQyID0gZC5lbmNvZGUodVtpOl0sIFRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHBhcnQxK3BhcnQyKQogCisKIGNsYXNzIFJlYWRUZXN0KE1peEluQ2hlY2tTdGF0ZUhhbmRsaW5nKToKICAgICBkZWYgY2hlY2tfcGFydGlhbChzZWxmLCBpbnB1dCwgcGFydGlhbHJlc3VsdHMpOgogICAgICAgICAjIGdldCBhIFN0cmVhbVJlYWRlciBmb3IgdGhlIGVuY29kaW5nIGFuZCBmZWVkIHRoZSBieXRlc3RyaW5nIHZlcnNpb24KQEAgLTM1OCw2ICszNTUsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAicmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJbP10iLmVuY29kZShzZWxmLmVuY29kaW5nKSkKIAorICAgICAgICAjIHNlcXVlbnRpYWwgc3Vycm9nYXRlIGNoYXJhY3RlcnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1RDgwMFx1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAiaWdub3JlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltdIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdUQ4MDBcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiWz8/XSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQorCiAgICAgICAgIGJvbSA9ICIiLmVuY29kZShzZWxmLmVuY29kaW5nKQogICAgICAgICBmb3IgYmVmb3JlLCBhZnRlciBpbiBbKCJcVTAwMDEwZmZmIiwgIkEiKSwgKCJbIiwgIl0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiQSIsICJcVTAwMDEwZmZmIildOgpAQCAtMzgzLDYgKzM4Niw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rfc2VxdWVuY2UuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJiYWNrc2xhc2hyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSArIGJhY2tzbGFzaHJlcGxhY2UgKyBhZnRlcikKIAorCiBjbGFzcyBVVEYzMlRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzIiCiAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAnbGl0dGxlJzoKQEAgLTQ3OCw2ICs0ODIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwMDAwJyAqIDEwMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLnV0Zl8zMl9kZWNvZGUoZW5jb2RlZF9iZSlbMF0pCiAKKwogY2xhc3MgVVRGMzJMRVRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzItbGUiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZSA9IGIiXHg4MFx4ZGNceDAwXHgwMCIKQEAgLTUyMyw2ICs1MjgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwMDAwJyAqIDEwMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLnV0Zl8zMl9sZV9kZWNvZGUoZW5jb2RlZClbMF0pCiAKKwogY2xhc3MgVVRGMzJCRVRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzItYmUiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZSA9IGIiXHgwMFx4MDBceGRjXHg4MCIKQEAgLTc0Nyw2ICs3NTMsNyBAQAogICAgIGVuY29kaW5nID0gInV0Zi04IgogICAgIGlsbF9mb3JtZWRfc2VxdWVuY2UgPSBiIlx4ZWRceGIyXHg4MCIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlX3JlcGxhY2UgPSAiXHVmZmZkIiAqIDMKKyAgICBCT00gPSBiJycKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcGFydGlhbCgKQEAgLTc3NSwyNyArNzgyLDQ5IEBACiAgICAgICAgIHNlbGYuY2hlY2tfc3RhdGVfaGFuZGxpbmdfZGVjb2RlKHNlbGYuZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIHUuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQogCisgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCAnW1x1ZGM4MFx1ZGNmZl0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnYmFja3NsYXNocmVwbGFjZScsICdbXFx4ODBcXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoc2VsZi5lbmNvZGluZywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0X2xvbmVfc3Vycm9nYXRlcyhzZWxmKToKICAgICAgICAgc3VwZXIoKS50ZXN0X2xvbmVfc3Vycm9nYXRlcygpCiAgICAgICAgICMgbm90IHN1cmUgaWYgdGhpcyBpcyBtYWtpbmcgc2Vuc2UgZm9yCiAgICAgICAgICMgVVRGLTE2IGFuZCBVVEYtMzIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgndXRmLTgnLCAic3Vycm9nYXRlZXNjYXBlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYidbXHg4MF0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVlc2NhcGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkJPTSArIGInW1x4ODBdJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAiW1x1REM4MFx1RDgwMFx1REZGRl0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlZXNjYXBlIikKKyAgICAgICAgZXhjID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLm9iamVjdFtleGMuc3RhcnQ6ZXhjLmVuZF0sICdcdUQ4MDBcdURGRkYnKQogCiAgICAgZGVmIHRlc3Rfc3Vycm9nYXRlcGFzc19oYW5kbGVyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmNcdWQ4MDBkZWYiLmVuY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiY1x1ZDgwMGRlZiIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1RDgwMFx1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYidbXHhlZFx4YTBceDgwXHhlZFx4YjJceDgwXScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY1x1ZDgwMGRlZiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiLmRlY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJcVTAwMDEwZmZmXHVEODAwIikKKwogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29kZWNzLmxvb2t1cF9lcnJvcigic3Vycm9nYXRlcGFzcyIpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6Ci0gICAgICAgICAgICBiImFiY1x4ZWRceGEwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKQorICAgICAgICAgICAgYiJhYmNceGVkXHhhMCIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IpOgotICAgICAgICAgICAgYiJhYmNceGVkXHhhMHoiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpCisgICAgICAgICAgICBiImFiY1x4ZWRceGEweiIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIikKKwogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKICAgICAgICAgICAgICAgICAgICAgICdjcDY1MDAxIGlzIGEgV2luZG93cy1vbmx5IGNvZGVjJykKQEAgLTgwNywxOCArODM2LDEzIEBACiAgICAgICAgICAgICAoJ2FiYycsICdzdHJpY3QnLCBiJ2FiYycpLAogICAgICAgICAgICAgKCdceGU5XHUyMGFjJywgJ3N0cmljdCcsICBiJ1x4YzNceGE5XHhlMlx4ODJceGFjJyksCiAgICAgICAgICAgICAoJ1xVMDAxMGZmZmYnLCAnc3RyaWN0JywgYidceGY0XHg4Zlx4YmZceGJmJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ2lnbm9yZScsIGInJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdyZXBsYWNlJywgYic/JyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICduYW1lcmVwbGFjZScsIGInXFx1ZGM4MCcpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnc3Vycm9nYXRlcGFzcycsIGInXHhlZFx4YjJceDgwJyksCiAgICAgICAgIF0KLSAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6Ci0gICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3N0cmljdCcsIE5vbmUpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ2lnbm9yZScsIGInJyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAncmVwbGFjZScsIGInPycpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICduYW1lcmVwbGFjZScsIGInXFx1ZGM4MCcpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3N1cnJvZ2F0ZXBhc3MnLCBiJ1x4ZWRceGIyXHg4MCcpLAotICAgICAgICAgICAgKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzLmFwcGVuZCgoJ1x1ZGM4MCcsICdzdHJpY3QnLCBiJ1x4ZWRceGIyXHg4MCcpKQogICAgICAgICBmb3IgdGV4dCwgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTg0NSwxNyArODY5LDEwIEBACiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXScpLAogICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZFx1ZmZmZF0nKSwKICAgICAgICAgXQotICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKLSAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgTm9uZSksCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnaWdub3JlJywgJ1tdJyksCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXHVmZmZkXScpLAotICAgICAgICAgICAgKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgJ1tcdWRjODBdJyksCi0gICAgICAgICAgICApKQogICAgICAgICBmb3IgcmF3LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgogICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtODcwLDcgKzg4Nyw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAogICAgICAgICAgICAgICAgICAgICByYXcuZGVjb2RlLCAnY3A2NTAwMScsIGVycm9ycykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKICAgICBkZWYgdGVzdF9sb25lX3N1cnJvZ2F0ZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgIlx1ZDgwMCIuZW5jb2RlLCAiY3A2NTAwMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgYiJceGVkXHhhMFx4ODAiLmRlY29kZSwgImNwNjUwMDEiKQpAQCAtODg3LDcgKzkwMyw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAicmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInWz9dJykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKICAgICBkZWYgdGVzdF9zdXJyb2dhdGVwYXNzX2hhbmRsZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiY1x1ZDgwMGRlZiIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCkBAIC0xMDU5LDYgKzEwNzQsNyBAQAogCiBjbGFzcyBVVEY4U2lnVGVzdChVVEY4VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi04LXNpZyIKKyAgICBCT00gPSBjb2RlY3MuQk9NX1VURjgKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcGFydGlhbCgKQEAgLTExNTksNyArMTE3NSw3IEBACiAgICAgICAgIGNoZWNrKGIiW1xcXG5dIiwgYiJbXSIpCiAgICAgICAgIGNoZWNrKGJyJ1tcIl0nLCBiJ1siXScpCiAgICAgICAgIGNoZWNrKGJyIltcJ10iLCBiIlsnXSIpCi0gICAgICAgIGNoZWNrKGJyIltcXF0iLCBiciJbXF0iKQorICAgICAgICBjaGVjayhiciJbXFxdIiwgYiJbXFxdIikKICAgICAgICAgY2hlY2soYnIiW1xhXSIsIGIiW1x4MDddIikKICAgICAgICAgY2hlY2soYnIiW1xiXSIsIGIiW1x4MDhdIikKICAgICAgICAgY2hlY2soYnIiW1x0XSIsIGIiW1x4MDldIikKQEAgLTExNjgsNyArMTE4NCw2IEBACiAgICAgICAgIGNoZWNrKGJyIltcZl0iLCBiIltceDBjXSIpCiAgICAgICAgIGNoZWNrKGJyIltccl0iLCBiIltceDBkXSIpCiAgICAgICAgIGNoZWNrKGJyIltcN10iLCBiIltceDA3XSIpCi0gICAgICAgIGNoZWNrKGJyIltcOF0iLCBiciJbXDhdIikKICAgICAgICAgY2hlY2soYnIiW1w3OF0iLCBiIltceDA3OF0iKQogICAgICAgICBjaGVjayhiciJbXDQxXSIsIGIiWyFdIikKICAgICAgICAgY2hlY2soYnIiW1w0MThdIiwgYiJbIThdIikKQEAgLTExNzYsMTIgKzExOTEsMTggQEAKICAgICAgICAgY2hlY2soYnIiW1wxMDEwXSIsIGIiW0EwXSIpCiAgICAgICAgIGNoZWNrKGJyIltcNTAxXSIsIGIiW0FdIikKICAgICAgICAgY2hlY2soYnIiW1x4NDFdIiwgYiJbQV0iKQotICAgICAgICBjaGVjayhiciJbXFg0MV0iLCBiciJbXFg0MV0iKQogICAgICAgICBjaGVjayhiciJbXHg0MTBdIiwgYiJbQTBdIikKLSAgICAgICAgZm9yIGIgaW4gcmFuZ2UoMjU2KToKLSAgICAgICAgICAgIGlmIGIgbm90IGluIGInXG4iXCdcXGFidG52ZnIwMTIzNDU2N3gnOgotICAgICAgICAgICAgICAgIGIgPSBieXRlcyhbYl0pCi0gICAgICAgICAgICAgICAgY2hlY2soYidcXCcgKyBiLCBiJ1xcJyArIGIpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDk3LCAxMjMpOgorICAgICAgICAgICAgYiA9IGJ5dGVzKFtpXSkKKyAgICAgICAgICAgIGlmIGIgbm90IGluIGInYWJmbnJ0dngnOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIsIGIiXFwiICsgYikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNoZWNrKGIiXFwiICsgYi51cHBlcigpLCBiIlxcIiArIGIudXBwZXIoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOCIsIGIiXFw4IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOSIsIGIiXFw5IikKIAogICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKICAgICAgICAgZGVjb2RlID0gY29kZWNzLmVzY2FwZV9kZWNvZGUKQEAgLTExOTQsNiArMTIxNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlKGJyIltceDBdXHgwIiwgImlnbm9yZSIpLCAoYiJbXSIsIDgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZShiciJbXHgwXVx4MCIsICJyZXBsYWNlIiksIChiIls/XT8iLCA4KSkKIAorCiBjbGFzcyBSZWNvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3JlY29kaW5nKHNlbGYpOgogICAgICAgICBmID0gaW8uQnl0ZXNJTygpCkBAIC0xMzEzLDYgKzEzMzUsNyBAQAogICAgIGlmIGxlbihpKSE9MjoKICAgICAgICAgcHJpbnQocmVwcihpKSkKIAorCiBjbGFzcyBQdW55Y29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKICAgICAgICAgZm9yIHVuaSwgcHVueSBpbiBwdW55Y29kZV90ZXN0Y2FzZXM6CkBAIC0xMzMyLDYgKzEzNTUsNyBAQAogICAgICAgICAgICAgcHVueSA9IHB1bnkuZGVjb2RlKCJhc2NpaSIpLmVuY29kZSgiYXNjaWkiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmksIHB1bnkuZGVjb2RlKCJwdW55Y29kZSIpKQogCisKIGNsYXNzIFVuaWNvZGVJbnRlcm5hbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfYnVnMTI1MTMwMChzZWxmKToKQEAgLTE1ODYsNiArMTYxMCw3IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIlRlc3QgMy4lZDogJXMiICUgKHBvcysxLCBzdHIoZSkpKQogCisKIGNsYXNzIElETkFDb2RlY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2J1aWx0aW5fZGVjb2RlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihiInB5dGhvbi5vcmciLCAiaWRuYSIpLCAicHl0aG9uLm9yZyIpCkBAIC0xNjcyLDYgKzE2OTcsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uLAogICAgICAgICAgICAgICAgIGIicHl0aG9uLm9yZyIuZGVjb2RlLCAiaWRuYSIsIGVycm9ycykKIAorCiBjbGFzcyBDb2RlY3NNb2R1bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKQEAgLTE3ODAsNiArMTgwNiw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgY29kZWNzLmRlY29kZSwgYidhYmMnLCAndW5kZWZpbmVkJywgZXJyb3JzKQogCisKIGNsYXNzIFN0cmVhbVJlYWRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTc5MCw2ICsxODE3LDcgQEAKICAgICAgICAgZiA9IHNlbGYucmVhZGVyKHNlbGYuc3RyZWFtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGxpbmVzKCksIFsnXHVkNTVjXG4nLCAnXHVhZTAwJ10pCiAKKwogY2xhc3MgRW5jb2RlZEZpbGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgpAQCAtMTkwOSw2ICsxOTM3LDggQEAKIAogaWYgaGFzYXR0cihjb2RlY3MsICJtYmNzX2VuY29kZSIpOgogICAgIGFsbF91bmljb2RlX2VuY29kaW5ncy5hcHBlbmQoIm1iY3MiKQoraWYgaGFzYXR0cihjb2RlY3MsICJvZW1fZW5jb2RlIik6CisgICAgYWxsX3VuaWNvZGVfZW5jb2RpbmdzLmFwcGVuZCgib2VtIikKIAogIyBUaGUgZm9sbG93aW5nIGVuY29kaW5nIGlzIG5vdCB0ZXN0ZWQsIGJlY2F1c2UgaXQncyBub3Qgc3VwcG9zZWQKICMgdG8gd29yazoKQEAgLTE5MjAsNiArMTk1MCw3IEBACiAgICAgInVuaWNvZGVfaW50ZXJuYWwiCiBdCiAKKwogY2xhc3MgQmFzaWNVbmljb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgTWl4SW5DaGVja1N0YXRlSGFuZGxpbmcpOgogICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKICAgICAgICAgcyA9ICJhYmMxMjMiICAjIGFsbCBjb2RlY3Mgc2hvdWxkIGJlIGFibGUgdG8gZW5jb2RlIHRoZXNlCkBAIC0yMDgyLDYgKzIxMTMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdGVfaGFuZGxpbmdfZGVjb2RlKGVuY29kaW5nLCB1LCB1LmVuY29kZShlbmNvZGluZykpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0ZV9oYW5kbGluZ19lbmNvZGUoZW5jb2RpbmcsIHUsIHUuZW5jb2RlKGVuY29kaW5nKSkKIAorCiBjbGFzcyBDaGFybWFwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZGVjb2RlX3dpdGhfc3RyaW5nX21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTIzMzIsNiArMjM2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnN0cmVhbXdyaXRlciwgJ3N0cmljdCcpIGFzIHNydzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3J3LnJlYWQoKSwgIlx4ZmMiKQogCisKIGNsYXNzIFR5cGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZGVjb2RlX3VuaWNvZGUoc2VsZik6CiAgICAgICAgICMgTW9zdCBkZWNvZGVycyBkb24ndCBhY2NlcHQgdW5pY29kZSBpbnB1dApAQCAtMjQyMCw3ICsyNDUzLDYgQEAKICAgICAgICAgY2hlY2soYnIiW1xmXSIsICJbXHgwY10iKQogICAgICAgICBjaGVjayhiciJbXHJdIiwgIltceDBkXSIpCiAgICAgICAgIGNoZWNrKGJyIltcN10iLCAiW1x4MDddIikKLSAgICAgICAgY2hlY2soYnIiW1w4XSIsIHIiW1w4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNzhdIiwgIltceDA3OF0iKQogICAgICAgICBjaGVjayhiciJbXDQxXSIsICJbIV0iKQogICAgICAgICBjaGVjayhiciJbXDQxOF0iLCAiWyE4XSIpCkBAIC0yNDMwLDkgKzI0NjIsMTggQEAKICAgICAgICAgY2hlY2soYnIiW1x4NDEwXSIsICJbQTBdIikKICAgICAgICAgY2hlY2soYnIiXHUyMGFjIiwgIlx1MjBhYyIpCiAgICAgICAgIGNoZWNrKGJyIlxVMDAwMWQxMjAiLCAiXFUwMDAxZDEyMCIpCi0gICAgICAgIGZvciBiIGluIHJhbmdlKDI1Nik6Ci0gICAgICAgICAgICBpZiBiIG5vdCBpbiBiJ1xuIlwnXFxhYnRudmZyMDEyMzQ1Njd4dVVOJzoKLSAgICAgICAgICAgICAgICBjaGVjayhiJ1xcJyArIGJ5dGVzKFtiXSksICdcXCcgKyBjaHIoYikpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDk3LCAxMjMpOgorICAgICAgICAgICAgYiA9IGJ5dGVzKFtpXSkKKyAgICAgICAgICAgIGlmIGIgbm90IGluIGInYWJmbnJ0dXZ4JzoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLCAiXFwiICsgY2hyKGkpKQorICAgICAgICAgICAgaWYgYi51cHBlcigpIG5vdCBpbiBiJ1VOJzoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLnVwcGVyKCksICJcXCIgKyBjaHIoaS0zMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgY2hlY2soYnIiXDgiLCAiXFw4IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOSIsICJcXDkiKQogCiAgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9ycyhzZWxmKToKICAgICAgICAgZGVjb2RlID0gY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZQpAQCAtMjY0Miw2ICsyNjgzLDcgQEAKICAgICBieXRlc190cmFuc2Zvcm1fZW5jb2RpbmdzLmFwcGVuZCgiYnoyX2NvZGVjIikKICAgICB0cmFuc2Zvcm1fYWxpYXNlc1siYnoyX2NvZGVjIl0gPSBbImJ6MiJdCiAKKwogY2xhc3MgVHJhbnNmb3JtQ29kZWNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKQEAgLTI2OTQsOCArMjczNiw4IEBACiAgICAgICAgIGJhZF9pbnB1dCA9ICJiYWQgaW5wdXQgdHlwZSIKICAgICAgICAgZm9yIGVuY29kaW5nIGluIGJ5dGVzX3RyYW5zZm9ybV9lbmNvZGluZ3M6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChlbmNvZGluZz1lbmNvZGluZyk6Ci0gICAgICAgICAgICAgICAgZm10ID0gKCAieyFyfSBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgICBmbXQgPSAociJ7IXJ9IGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpIGFzIGZhaWx1cmU6CiAgICAgICAgICAgICAgICAgICAgIGJhZF9pbnB1dC5lbmNvZGUoZW5jb2RpbmcpCkBAIC0yNzA0LDcgKzI3NDYsNyBAQAogICAgIGRlZiB0ZXN0X3RleHRfdG9fYmluYXJ5X2JsYWNrbGlzdHNfdGV4dF90cmFuc2Zvcm1zKHNlbGYpOgogICAgICAgICAjIENoZWNrIHN0ci5lbmNvZGUgZ2l2ZXMgYSBnb29kIGVycm9yIG1lc3NhZ2UgZm9yIHN0ciAtPiBzdHIgY29kZWNzCiAgICAgICAgIG1zZyA9IChyIl4ncm90XzEzJyBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCisgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChMb29rdXBFcnJvciwgbXNnKToKICAgICAgICAgICAgICJqdXN0IGFuIGV4YW1wbGUgbWVzc2FnZSIuZW5jb2RlKCJyb3RfMTMiKQogCkBAIC0yNzE2LDcgKzI3NTgsNyBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW5jb2Rpbmc9ZW5jb2RpbmcpOgogICAgICAgICAgICAgICAgIGVuY29kZWRfZGF0YSA9IGNvZGVjcy5lbmNvZGUoZGF0YSwgZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgZm10ID0gKHIieyFyfSBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpOgogICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2RhdGEuZGVjb2RlKGVuY29kaW5nKQpAQCAtMjcyOCw3ICsyNzcwLDcgQEAKICAgICAgICAgZm9yIGJhZF9pbnB1dCBpbiAoYiJpbW11dGFibGUiLCBieXRlYXJyYXkoYiJtdXRhYmxlIikpOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYmFkX2lucHV0PWJhZF9pbnB1dCk6CiAgICAgICAgICAgICAgICAgbXNnID0gKHIiXidyb3RfMTMnIGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpIGFzIGZhaWx1cmU6CiAgICAgICAgICAgICAgICAgICAgIGJhZF9pbnB1dC5kZWNvZGUoInJvdF8xMyIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmFpbHVyZS5leGNlcHRpb24uX19jYXVzZV9fKQpAQCAtMjk0NywxMiArMjk4OSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsIGIibm90IHN0ciEiKQogICAgICAgICAjIFRleHQgbW9kZWwgbWV0aG9kcyBzaG91bGQgY29tcGxhaW4KICAgICAgICAgZm10ID0gKHIiXnshcn0gZW5jb2RlciByZXR1cm5lZCAnc3RyJyBpbnN0ZWFkIG9mICdieXRlcyc7ICIKLSAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGVuY29kZSB0byBhcmJpdHJhcnkgdHlwZXMkIikKKyAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGVuY29kZSB0byBhcmJpdHJhcnkgdHlwZXMkIikKICAgICAgICAgbXNnID0gZm10LmZvcm1hdChzZWxmLmNvZGVjX25hbWUpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICAic3RyX2lucHV0Ii5lbmNvZGUoc2VsZi5jb2RlY19uYW1lKQogICAgICAgICBmbXQgPSAociJeeyFyfSBkZWNvZGVyIHJldHVybmVkICdieXRlcycgaW5zdGVhZCBvZiAnc3RyJzsgIgotICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gZGVjb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQorICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gZGVjb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQogICAgICAgICBtc2cgPSBmbXQuZm9ybWF0KHNlbGYuY29kZWNfbmFtZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKICAgICAgICAgICAgIGIiYnl0ZXMgaW5wdXQiLmRlY29kZShzZWxmLmNvZGVjX25hbWUpCkBAIC0zMDkzLDExICszMTM1LDEwIEBACiAgICAgICAgICAgICAoYidceGZmXHhmNFx4OGZceGJmXHhiZicsICdpZ25vcmUnLCAnXFUwMDEwZmZmZicpLAogICAgICAgICAgICAgKGInXHhmZlx4ZjRceDhmXHhiZlx4YmYnLCAncmVwbGFjZScsICdcdWZmZmRcVTAwMTBmZmZmJyksCiAgICAgICAgICkpCi0gICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgotICAgICAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoc2VsZi5DUF9VVEY4LCAoCi0gICAgICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAnaWdub3JlJywgYidbXHhmNFx4OGZceGJmXHhiZl0nKSwKLSAgICAgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdyZXBsYWNlJywgYidbXHhmNFx4OGZceGJmXHhiZj9dJyksCi0gICAgICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2VuY29kZShzZWxmLkNQX1VURjgsICgKKyAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ2lnbm9yZScsIGInW1x4ZjRceDhmXHhiZlx4YmZdJyksCisgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdyZXBsYWNlJywgYidbXHhmNFx4OGZceGJmXHhiZj9dJyksCisgICAgICAgICkpCiAKICAgICBkZWYgdGVzdF9pbmNyZW1lbnRhbChzZWxmKToKICAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKDkzMiwgYidceDgyJywgJ3N0cmljdCcsIEZhbHNlKQpAQCAtMzExOCw2ICszMTU5LDk2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCAoJ2FiYycsIDMpKQogCisgICAgZGVmIHRlc3RfbWJjc19hbGlhcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGxvb2tpbmcgdXAgb3VyICdkZWZhdWx0JyBjb2RlcGFnZSB3aWxsIHJldHVybgorICAgICAgICAjIG1iY3Mgd2hlbiB3ZSBkb24ndCBoYXZlIGEgbW9yZSBzcGVjaWZpYyBvbmUgYXZhaWxhYmxlCisgICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZQorICAgICAgICBkZWYgX2dldF9mYWtlX2NvZGVwYWdlKCphKToKKyAgICAgICAgICAgIHJldHVybiAnY3AxMjMnCisgICAgICAgIG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nCisgICAgICAgIF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nID0gX2dldF9mYWtlX2NvZGVwYWdlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvZGVjID0gY29kZWNzLmxvb2t1cCgnY3AxMjMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlYy5uYW1lLCAnbWJjcycpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZworCisKK2NsYXNzIEFTQ0lJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMxMjMnLmVuY29kZSgnYXNjaWknKSwgYidhYmMxMjMnKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2Vycm9yKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNdJywgJ2lnbm9yZScsIGInW10nKSwKKyAgICAgICAgICAgICgnW1x4ODBceGZmXHUyMGFjXScsICdyZXBsYWNlJywgYidbPz8/XScpLAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNdJywgJ3htbGNoYXJyZWZyZXBsYWNlJywgYidbJiMxMjg7JiMyNTU7JiM4MzY0O10nKSwKKyAgICAgICAgICAgICgnW1x4ODBceGZmXHUyMGFjXFUwMDBhYmNkZV0nLCAnYmFja3NsYXNocmVwbGFjZScsCisgICAgICAgICAgICAgYidbXFx4ODBcXHhmZlxcdTIwYWNcXFUwMDBhYmNkZV0nKSwKKyAgICAgICAgICAgICgnW1x1ZGM4MFx1ZGNmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgYidbXHg4MFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGVycm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZW5jb2RlKCdhc2NpaScsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfc3Vycm9nYXRlZXNjYXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvcik6CisgICAgICAgICAgICAjIHRoZSBmaXJzdCBjaGFyYWN0ZXIgY2FuIGJlIGRlY29kZWQsIGJ1dCBub3QgdGhlIHNlY29uZAorICAgICAgICAgICAgJ1x1ZGM4MFx4ZmYnLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKworICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2FiYycuZGVjb2RlKCdhc2NpaScpLCAnYWJjJykKKworICAgIGRlZiB0ZXN0X2RlY29kZV9lcnJvcihzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGVycm9yX2hhbmRsZXIsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZF0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjODBcdWRjZmZdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCAnW1xceDgwXFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGVycm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCdhc2NpaScsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKworY2xhc3MgTGF0aW4xVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdhYmMnLCBiJ2FiYycpLAorICAgICAgICAgICAgKCdceDgwXHhlOVx4ZmYnLCBiJ1x4ODBceGU5XHhmZicpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmVuY29kZSgnbGF0aW4xJyksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGVycm9yX2hhbmRsZXIsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICgnW1x1MjBhY1x1ZGM4MF0nLCAnaWdub3JlJywgYidbXScpLAorICAgICAgICAgICAgKCdbXHUyMGFjXHVkYzgwXScsICdyZXBsYWNlJywgYidbPz9dJyksCisgICAgICAgICAgICAoJ1tcdTIwYWNcVTAwMGFiY2RlXScsICdiYWNrc2xhc2hyZXBsYWNlJywKKyAgICAgICAgICAgICBiJ1tcXHUyMGFjXFxVMDAwYWJjZGVdJyksCisgICAgICAgICAgICAoJ1tcdTIwYWNcdWRjODBdJywgJ3htbGNoYXJyZWZyZXBsYWNlJywgYidbJiM4MzY0OyYjNTY0NDg7XScpLAorICAgICAgICAgICAgKCdbXHVkYzgwXHVkY2ZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCBiJ1tceDgwXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5lbmNvZGUoJ2xhdGluMScsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfc3Vycm9nYXRlZXNjYXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvcik6CisgICAgICAgICAgICAjIHRoZSBmaXJzdCBjaGFyYWN0ZXIgY2FuIGJlIGRlY29kZWQsIGJ1dCBub3QgdGhlIHNlY29uZAorICAgICAgICAgICAgJ1x1ZGM4MFx1MjBhYycuZW5jb2RlKCdsYXRpbjEnLCAnc3Vycm9nYXRlZXNjYXBlJykKKworICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgIChiJ2FiYycsICdhYmMnKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnW1x4ODBceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgnbGF0aW4xJyksIGV4cGVjdGVkKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5CmluZGV4IDUwOWJmNWQuLjk4ZGEyNmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5CkBAIC0yODIsNyArMjgyLDYgQEAKICAgICAgICAgYWkoImlmIChhID09IDEgYW5kIGIgPSAyKTogcGFzcyIpCiAKICAgICAgICAgYWkoImRlbCAxIikKLSAgICAgICAgYWkoImRlbCAoKSIpCiAgICAgICAgIGFpKCJkZWwgKDEsKSIpCiAgICAgICAgIGFpKCJkZWwgWzFdIikKICAgICAgICAgYWkoImRlbCAnMSciKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKaW5kZXggNTIzODM4Mi4uNTJmZjI1NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CkBAIC0yMCwxMCArMjAsMTAgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEF3YWl0YWJsZSwgQ29yb3V0aW5lLCBBc3luY0l0ZXJhdG9yLCBBc3luY0l0ZXJhYmxlCi1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgR2VuZXJhdG9yCi1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGUKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBHZW5lcmF0b3IsIFJldmVyc2libGUKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZSwgQ29sbGVjdGlvbgogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNldCwgTXV0YWJsZVNldAotZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3Citmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcsIFZhbHVlc1ZpZXcKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXF1ZW5jZSwgTXV0YWJsZVNlcXVlbmNlCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQnl0ZVN0cmluZwogCkBAIC0yNDIsNiArMjQyLDEwIEBACiAgICAgICAgIF06CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVkdHVwbGUoJ05UJywgc3BlYywgcmVuYW1lPVRydWUpLl9maWVsZHMsIHJlbmFtZWQpCiAKKyAgICBkZWYgdGVzdF9tb2R1bGVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWyd4JywgJ3knXSwgbW9kdWxlPWNvbGxlY3Rpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5ULl9fbW9kdWxlX18sIGNvbGxlY3Rpb25zKQorCiAgICAgZGVmIHRlc3RfaW5zdGFuY2Uoc2VsZik6CiAgICAgICAgIFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykKICAgICAgICAgcCA9IFBvaW50KDExLCAyMikKQEAgLTQxMiw2ICs0MTYsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVENvbG9yLl9maWVsZHMsICgncmVkJywgJ2dyZWVuJywgJ2JsdWUnKSkKICAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgY2xlYW4tdXAgYWZ0ZXIgdGhpcyB0ZXN0CiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkX29ubHlfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAyNTYyOAorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgdGVtcGxhdGU6CisgICAgICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWyd4JywgJ3knXSwgdmVyYm9zZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjbGFzcyBOVCcsIE5ULl9zb3VyY2UpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ3gnLCAneSddLCBUcnVlKQorCisgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ2FiYycsICdkZWYnXSwgcmVuYW1lPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTlQuX2ZpZWxkcywgKCdhYmMnLCAnXzEnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsnYWJjJywgJ2RlZiddLCBGYWxzZSwgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X25hbWVkdHVwbGVfc3ViY2xhc3NfaXNzdWVfMjQ5MzEoc2VsZik6CiAgICAgICAgIGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ19Qb2ludCcsIFsneCcsICd5J10pKToKQEAgLTQ4Nyw2ICs1MDMsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG90aGVyLnJpZ2h0X3NpZGUsJ1JpZ2h0IHNpZGUgbm90IGNhbGxlZCBmb3IgJXMuJXMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodHlwZShpbnN0YW5jZSksIG5hbWUpKQogCitkZWYgX3Rlc3RfZ2VuKCk6CisgICAgeWllbGQKKwogY2xhc3MgVGVzdE9uZVRyaWNrUG9ueUFCQ3MoQUJDVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfQXdhaXRhYmxlKHNlbGYpOgpAQCAtNjc0LDcgKzY5Myw3IEBACiAgICAgICAgIHNhbXBsZXMgPSBbYnl0ZXMoKSwgc3RyKCksCiAgICAgICAgICAgICAgICAgICAgdHVwbGUoKSwgbGlzdCgpLCBzZXQoKSwgZnJvemVuc2V0KCksIGRpY3QoKSwKICAgICAgICAgICAgICAgICAgICBkaWN0KCkua2V5cygpLCBkaWN0KCkuaXRlbXMoKSwgZGljdCgpLnZhbHVlcygpLAotICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKQEAgLTY4OCw2ICs3MDcsMTYxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhzdHIsIEkpKQogICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoSXRlcmFibGUsICdfX2l0ZXJfXycpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfaXNpbnN0YW5jZShJdGVyYWJsZSwgJ19faXRlcl9fJykKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nCisgICAgICAgIGNsYXNzIEl0OgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgY2xhc3MgSXRCbG9ja2VkKEl0KToKKyAgICAgICAgICAgIF9faXRlcl9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhJdCwgSXRlcmFibGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShJdCgpLCBJdGVyYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhJdEJsb2NrZWQsIEl0ZXJhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKEl0QmxvY2tlZCgpLCBJdGVyYWJsZSkpCisKKyAgICBkZWYgdGVzdF9SZXZlcnNpYmxlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLXJldmVyc2libGVzCisgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwgZGljdCgpLCBzZXQoKSwgZnJvemVuc2V0KCldCisgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIFJldmVyc2libGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgUmV2ZXJzaWJsZSksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSBub24tcmV2ZXJzaWJsZSBpdGVyYWJsZXMKKyAgICAgICAgbm9uX3JldmVyc2libGVzID0gW2RpY3QoKS5rZXlzKCksIGRpY3QoKS5pdGVtcygpLCBkaWN0KCkudmFsdWVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyKCksIENvdW50ZXIoKS5rZXlzKCksIENvdW50ZXIoKS5pdGVtcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlcigpLnZhbHVlcygpLCBfdGVzdF9nZW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwgaXRlcihbXSksIHJldmVyc2VkKFtdKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3JldmVyc2libGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIFJldmVyc2libGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgUmV2ZXJzaWJsZSksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSByZXZlcnNpYmxlIGl0ZXJhYmxlcworICAgICAgICBzYW1wbGVzID0gW2J5dGVzKCksIHN0cigpLCB0dXBsZSgpLCBsaXN0KCksIE9yZGVyZWREaWN0KCksCisgICAgICAgICAgICAgICAgICAgT3JkZXJlZERpY3QoKS5rZXlzKCksIE9yZGVyZWREaWN0KCkuaXRlbXMoKSwKKyAgICAgICAgICAgICAgICAgICBPcmRlcmVkRGljdCgpLnZhbHVlcygpXQorICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIFJldmVyc2libGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHgpLCBSZXZlcnNpYmxlKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBhbHNvIE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBhbmQgU2VxdWVuY2UKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU2VxdWVuY2UsIFJldmVyc2libGUpLCByZXByKFNlcXVlbmNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKE1hcHBpbmcsIFJldmVyc2libGUpLCByZXByKE1hcHBpbmcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoTXV0YWJsZU1hcHBpbmcsIFJldmVyc2libGUpLCByZXByKE11dGFibGVNYXBwaW5nKSkKKyAgICAgICAgIyBDaGVjayBkaXJlY3Qgc3ViY2xhc3NpbmcKKyAgICAgICAgY2xhc3MgUihSZXZlcnNpYmxlKToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgICAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKFIoKSkpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGZsb2F0LCBSKSkKKyAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKFJldmVyc2libGUsICdfX3JldmVyc2VkX18nLCAnX19pdGVyX18nKQorICAgICAgICAjIENoZWNrIHJldmVyc2libGUgbm9uLWl0ZXJhYmxlICh3aGljaCBpcyBub3QgUmV2ZXJzaWJsZSkKKyAgICAgICAgY2xhc3MgUmV2Tm9JdGVyOgorICAgICAgICAgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKTogcmV0dXJuIHJldmVyc2VkKFtdKQorICAgICAgICBjbGFzcyBSZXZQbHVzSXRlcihSZXZOb0l0ZXIpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFJldk5vSXRlciwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShSZXZOb0l0ZXIoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFJldlBsdXNJdGVyLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoUmV2UGx1c0l0ZXIoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZworICAgICAgICBjbGFzcyBSZXY6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKTogcmV0dXJuIHJldmVyc2VkKFtdKQorICAgICAgICBjbGFzcyBSZXZJdEJsb2NrZWQoUmV2KToKKyAgICAgICAgICAgIF9faXRlcl9fID0gTm9uZQorICAgICAgICBjbGFzcyBSZXZSZXZCbG9ja2VkKFJldik6CisgICAgICAgICAgICBfX3JldmVyc2VkX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFJldiwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKFJldigpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFJldkl0QmxvY2tlZCwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShSZXZJdEJsb2NrZWQoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhSZXZSZXZCbG9ja2VkLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFJldlJldkJsb2NrZWQoKSwgUmV2ZXJzaWJsZSkpCisKKyAgICBkZWYgdGVzdF9Db2xsZWN0aW9uKHNlbGYpOgorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWNvbGxlY3Rpb25zCisgICAgICAgIG5vbl9jb2xsZWN0aW9ucyA9IFtOb25lLCA0MiwgMy4xNCwgMWosIGxhbWJkYSB4OiAyKnhdCisgICAgICAgIGZvciB4IGluIG5vbl9jb2xsZWN0aW9uczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBDb2xsZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIENvbGxlY3Rpb24pLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWNvbGxlY3Rpb24gaXRlcmFibGVzCisgICAgICAgIG5vbl9jb2xfaXRlcmFibGVzID0gW190ZXN0X2dlbigpLCBpdGVyKGInJyksIGl0ZXIoYnl0ZWFycmF5KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksIGRpY3QoKS52YWx1ZXMoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX2NvbF9pdGVyYWJsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQ29sbGVjdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBDb2xsZWN0aW9uKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIGNvbGxlY3Rpb25zCisgICAgICAgIHNhbXBsZXMgPSBbc2V0KCksIGZyb3plbnNldCgpLCBkaWN0KCksIGJ5dGVzKCksIHN0cigpLCB0dXBsZSgpLAorICAgICAgICAgICAgICAgICAgIGxpc3QoKSwgZGljdCgpLmtleXMoKSwgZGljdCgpLml0ZW1zKCldCisgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgQ29sbGVjdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoeCksIENvbGxlY3Rpb24pLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIGFsc28gTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIGV0Yy4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU2VxdWVuY2UsIENvbGxlY3Rpb24pLCByZXByKFNlcXVlbmNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTWFwcGluZywgQ29sbGVjdGlvbiksIHJlcHIoTWFwcGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE11dGFibGVNYXBwaW5nLCBDb2xsZWN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoTXV0YWJsZU1hcHBpbmcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXQsIENvbGxlY3Rpb24pLCByZXByKFNldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE11dGFibGVTZXQsIENvbGxlY3Rpb24pLCByZXByKE11dGFibGVTZXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXF1ZW5jZSwgQ29sbGVjdGlvbiksIHJlcHIoTXV0YWJsZVNldCkpCisgICAgICAgICMgQ2hlY2sgZGlyZWN0IHN1YmNsYXNzaW5nCisgICAgICAgIGNsYXNzIENvbChDb2xsZWN0aW9uKToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgRGVyQ29sKENvbCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZXIoQ29sKCkpKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhsaXN0LCBDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc2V0LCBDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoZmxvYXQsIENvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKERlckNvbCgpKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MobGlzdCwgRGVyQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHNldCwgRGVyQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGZsb2F0LCBEZXJDb2wpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoQ29sbGVjdGlvbiwgJ19fbGVuX18nLCAnX19pdGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fY29udGFpbnNfXycpCisgICAgICAgICMgQ2hlY2sgc2l6ZWQgY29udGFpbmVyIG5vbi1pdGVyYWJsZSAod2hpY2ggaXMgbm90IENvbGxlY3Rpb24pIGV0Yy4KKyAgICAgICAgY2xhc3MgQ29sTm9JdGVyOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOiByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgQ29sTm9TaXplOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6IHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBDb2xOb0NvbnQ6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAwCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb2xOb0l0ZXIsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoQ29sTm9JdGVyKCksIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29sTm9TaXplLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKENvbE5vU2l6ZSgpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbE5vQ29udCwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShDb2xOb0NvbnQoKSwgQ29sbGVjdGlvbikpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZworICAgICAgICBjbGFzcyBTaXplQmxvY2s6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmKTogcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBfX2xlbl9fID0gTm9uZQorICAgICAgICBjbGFzcyBJdGVyQmxvY2s6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDAKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZik6IHJldHVybiBUcnVlCisgICAgICAgICAgICBfX2l0ZXJfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFNpemVCbG9jaywgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShTaXplQmxvY2soKSwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhJdGVyQmxvY2ssIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoSXRlckJsb2NrKCksIENvbGxlY3Rpb24pKQorICAgICAgICAjIENoZWNrIE5vbmUgYmxvY2tpbmcgaW4gc3ViY2xhc3MKKyAgICAgICAgY2xhc3MgQ29sSW1wbDoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgTm9uQ29sKENvbEltcGwpOgorICAgICAgICAgICAgX19jb250YWluc19fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoTm9uQ29sLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKE5vbkNvbCgpLCBDb2xsZWN0aW9uKSkKKwogCiAgICAgZGVmIHRlc3RfSXRlcmF0b3Ioc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwgYiIiLCAiIiwgKCksIFtdLCB7fSwgc2V0KCldCkBAIC02OTksNyArODczLDcgQEAKICAgICAgICAgICAgICAgICAgICBpdGVyKHNldCgpKSwgaXRlcihmcm96ZW5zZXQoKSksCiAgICAgICAgICAgICAgICAgICAgaXRlcihkaWN0KCkua2V5cygpKSwgaXRlcihkaWN0KCkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgaXRlcihkaWN0KCkudmFsdWVzKCkpLAotICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKQEAgLTc4Nyw3ICs5NjEsNyBAQAogCiAgICAgZGVmIHRlc3RfU2l6ZWQoc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKQEAgLTgwNSw3ICs5NzksNyBAQAogCiAgICAgZGVmIHRlc3RfQ29udGFpbmVyKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosCi0gICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CkBAIC04MjQsNyArOTk4LDcgQEAKICAgICBkZWYgdGVzdF9DYWxsYWJsZShzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLAogICAgICAgICAgICAgICAgICAgICAgICAiIiwgYiIiLCAoKSwgW10sIHt9LCBzZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKQEAgLTg0MiwxNCArMTAxNiwxNCBAQAogICAgICAgICBzZWxmLnZhbGlkYXRlX2lzaW5zdGFuY2UoQ2FsbGFibGUsICdfX2NhbGxfXycpCiAKICAgICBkZWYgdGVzdF9kaXJlY3Rfc3ViY2xhc3Npbmcoc2VsZik6Ci0gICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgorICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBSZXZlcnNpYmxlLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKICAgICAgICAgICAgIGNsYXNzIEMoQik6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQywgQikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoaW50LCBDKSkKIAogICAgIGRlZiB0ZXN0X3JlZ2lzdHJhdGlvbihzZWxmKToKLSAgICAgICAgZm9yIEIgaW4gSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGU6CisgICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFJldmVyc2libGUsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgogICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICBfX2hhc2hfXyA9IE5vbmUgICMgTWFrZSBzdXJlIGl0IGlzbid0IGhhc2hhYmxlIGJ5IGRlZmF1bHQKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDLCBCKSwgQi5fX25hbWVfXykKQEAgLTEwNDksNiArMTIyMywyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5jcyA+IGNzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobmNzID49IGNzKQogCisgICAgZGVmIHRlc3RfaXNzdWUyNjkxNShzZWxmKToKKyAgICAgICAgIyBDb250YWluZXIgbWVtYmVyc2hpcCB0ZXN0IHNob3VsZCBjaGVjayBpZGVudGl0eSBmaXJzdAorICAgICAgICBjbGFzcyBDdXN0b21FcXVhbE9iamVjdDoKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBDdXN0b21TZXF1ZW5jZShsaXN0KToKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBTZXF1ZW5jZS5fX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpCisKKyAgICAgICAgbmFuID0gZmxvYXQoJ25hbicpCisgICAgICAgIG9iaiA9IEN1c3RvbUVxdWFsT2JqZWN0KCkKKyAgICAgICAgY29udGFpbmVycyA9IFsKKyAgICAgICAgICAgIEN1c3RvbVNlcXVlbmNlKFtuYW4sIG9ial0pLAorICAgICAgICAgICAgSXRlbXNWaWV3KHsxOiBuYW4sIDI6IG9ian0pLAorICAgICAgICAgICAgVmFsdWVzVmlldyh7MTogbmFuLCAyOiBvYmp9KQorICAgICAgICBdCisgICAgICAgIGZvciBjb250YWluZXIgaW4gY29udGFpbmVyczoKKyAgICAgICAgICAgIGZvciBlbGVtIGluIGNvbnRhaW5lcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVsZW0sIGNvbnRhaW5lcikKKwogICAgIGRlZiBhc3NlcnRTYW1lU2V0KHNlbGYsIHMxLCBzMik6CiAgICAgICAgICMgY29lcmNlIGJvdGggdG8gYSByZWFsIHNldCB0aGVuIGNoZWNrIGVxdWFsaXR5CiAgICAgICAgIHNlbGYuYXNzZXJ0U2V0RXF1YWwoc2V0KHMxKSwgc2V0KHMyKSkKQEAgLTEyMTksNiArMTQxMyw3IEBACiAgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoKCkpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfY29tcGFyaXNvbihNeU1hcHBpbmcoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgTXlNYXBwaW5nKCkpCiAKICAgICBkZWYgdGVzdF9NdXRhYmxlTWFwcGluZyhzZWxmKToKICAgICAgICAgZm9yIHNhbXBsZSBpbiBbZGljdF06CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKaW5kZXggODI0ZTg0My4uNDA5ZWM4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQpAQCAtNDczLDEwICs0NzMsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7MTogMiwgMzogNH0pCiAKICAgICBkZWYgdGVzdF9jb21waWxlX2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gKCdmaWxlLnB5JywgYidmaWxlLnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoYidmaWxlLnB5JyksIG1lbW9yeXZpZXcoYidmaWxlLnB5JykpOgorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gJ2ZpbGUucHknLCBiJ2ZpbGUucHknOgogICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoJ3Bhc3MnLCBmaWxlbmFtZSwgJ2V4ZWMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBieXRlYXJyYXkoYidmaWxlLnB5JyksIG1lbW9yeXZpZXcoYidmaWxlLnB5Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBjb2RlID0gY29tcGlsZSgncGFzcycsIGZpbGVuYW1lLCAnZXhlYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCAncGFzcycsIGxpc3QoYidmaWxlLnB5JyksICdleGVjJykKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQpAQCAtNjYxLDYgKzY2NCwxNiBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZjEoMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmMigwLjApKQogCisgICAgZGVmIHRlc3RfcGF0aF9saWtlX29iamVjdHMoc2VsZik6CisgICAgICAgICMgQW4gaW1wbGljaXQgdGVzdCBmb3IgUHlVbmljb2RlX0ZTRGVjb2RlcigpLgorICAgICAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAorICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKKworICAgICAgICBjb21waWxlKCI0MiIsIFBhdGhMaWtlKCJ0ZXN0X2NvbXBpbGVfcGF0aGxpa2UiKSwgInNpbmdsZSIpCisKIAogY2xhc3MgVGVzdFN0YWNrU2l6ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUaGVzZSB0ZXN0cyBjaGVjayB0aGF0IHRoZSBjb21wdXRlZCBzdGFjayBzaXplIGZvciBhIGNvZGUgb2JqZWN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKaW5kZXggMmNlOGE2MS4uMjM1NmVmYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBjb21waWxlYWxsCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKK2ltcG9ydCB0ZXN0LnRlc3RfaW1wb3J0bGliLnV0aWwKIGltcG9ydCBvcwogaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBweV9jb21waWxlCkBAIC00MCw2ICs0MSwxMSBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmRpcmVjdG9yeSkKIAorICAgIGRlZiBhZGRfYmFkX3NvdXJjZV9maWxlKHNlbGYpOgorICAgICAgICBzZWxmLmJhZF9zb3VyY2VfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmRpcmVjdG9yeSwgJ190ZXN0X2JhZC5weScpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmJhZF9zb3VyY2VfcGF0aCwgJ3cnKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZSgneCAoXG4nKQorCiAgICAgZGVmIGRhdGEoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihzZWxmLmJjX3BhdGgsICdyYicpIGFzIGZpbGU6CiAgICAgICAgICAgICBkYXRhID0gZmlsZS5yZWFkKDgpCkBAIC03OCwxNSArODQsNDcgQEAKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZmlsZShzZWxmLnNvdXJjZV9wYXRoLCBmb3JjZT1GYWxzZSwgcXVpZXQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHNlbGYuc291cmNlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZT1GYWxzZSwgcXVpZXQ9VHJ1ZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgbm90IG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aDIpKQogICAgICAgICBvcy51bmxpbmsoc2VsZi5iY19wYXRoKQotICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBmb3JjZT1GYWxzZSwgcXVpZXQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIGZvcmNlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWlldD1UcnVlKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgyKSkKICAgICAgICAgb3MudW5saW5rKHNlbGYuYmNfcGF0aCkKICAgICAgICAgb3MudW5saW5rKHNlbGYuYmNfcGF0aDIpCisgICAgICAgICMgVGVzdCBhZ2FpbnN0IGJhZCBmaWxlcworICAgICAgICBzZWxmLmFkZF9iYWRfc291cmNlX2ZpbGUoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHNlbGYuYmFkX3NvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPUZhbHNlLCBxdWlldD0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9RmFsc2UsIHF1aWV0PTIpKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV9maWxlX3BhdGhsaWtlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisgICAgICAgICMgd2Ugc2hvdWxkIGFsc28gdGVzdCB0aGUgb3V0cHV0CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX2ZpbGUocGF0aGxpYi5QYXRoKHNlbGYuc291cmNlX3BhdGgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdGRvdXQuZ2V0dmFsdWUoKSwgcidDb21waWxpbmcgKFteV2luZG93c1BhdGh8UG9zaXhQYXRoXS4qKScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV9maWxlX3BhdGhsaWtlX2RkaXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHBhdGhsaWIuUGF0aChzZWxmLnNvdXJjZV9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkaXI9cGF0aGxpYi5QYXRoKCdkZGlyX3BhdGgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWV0PTIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfcGF0aChzZWxmKToKKyAgICAgICAgd2l0aCB0ZXN0LnRlc3RfaW1wb3J0bGliLnV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3NlbGYuZGlyZWN0b3J5XSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX3BhdGgocXVpZXQ9MikpCisKKyAgICAgICAgd2l0aCB0ZXN0LnRlc3RfaW1wb3J0bGliLnV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3NlbGYuZGlyZWN0b3J5XSk6CisgICAgICAgICAgICBzZWxmLmFkZF9iYWRfc291cmNlX2ZpbGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb21waWxlYWxsLmNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9VHJ1ZSwgcXVpZXQ9MikpCiAKICAgICBkZWYgdGVzdF9ub19weWNhY2hlX2luX25vbl9wYWNrYWdlKHNlbGYpOgogICAgICAgICAjIEJ1ZyA4NTYzIHJlcG9ydGVkIHRoYXQgX19weWNhY2hlX18gZGlyZWN0b3JpZXMgZ290IGNyZWF0ZWQgYnkKQEAgLTExNSw2ICsxNTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbj1vcHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShjYWNoZWQzKSkKIAorICAgIGRlZiB0ZXN0X2NvbXBpbGVfZGlyX3BhdGhsaWtlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CisgICAgICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHBhdGhsaWIuUGF0aChzZWxmLmRpcmVjdG9yeSkpCisgICAgICAgIGxpbmUgPSBzdGRvdXQuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKClbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChsaW5lLCByJ0xpc3RpbmcgKFteV2luZG93c1BhdGh8UG9zaXhQYXRoXS4qKScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorCiAgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuUHJvY2Vzc1Bvb2xFeGVjdXRvcicpCiAgICAgZGVmIHRlc3RfY29tcGlsZV9wb29sX2NhbGxlZChzZWxmLCBwb29sX21vY2spOgogICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCB3b3JrZXJzPTUpCkBAIC0xOTcsMTAgKzI0Myw5IEBACiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnbm90IGFsbCBlbnRyaWVzIG9uIHN5cy5wYXRoIGFyZSB3cml0YWJsZScpCiAKICAgICBkZWYgX2dldF9ydW5fYXJncyhzZWxmLCBhcmdzKToKLSAgICAgICAgaW50ZXJwX2FyZ3MgPSBbJy1TJ10KLSAgICAgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplOgotICAgICAgICAgICAgaW50ZXJwX2FyZ3MuYXBwZW5kKHsxIDogJy1PJywgMiA6ICctT08nfVtzeXMuZmxhZ3Mub3B0aW1pemVdKQotICAgICAgICByZXR1cm4gaW50ZXJwX2FyZ3MgKyBbJy1tJywgJ2NvbXBpbGVhbGwnXSArIGxpc3QoYXJncykKKyAgICAgICAgcmV0dXJuIFsqc3VwcG9ydC5vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgICAgICAnLVMnLCAnLW0nLCAnY29tcGlsZWFsbCcsCisgICAgICAgICAgICAgICAgKmFyZ3NdCiAKICAgICBkZWYgYXNzZXJ0UnVuT0soc2VsZiwgKmFyZ3MsICoqZW52X3ZhcnMpOgogICAgICAgICByYywgb3V0LCBlcnIgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkKaW5kZXggNDAzZWUzYi4uYzI0OWNhNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weQpAQCAtMSw1ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QudGVzdF9ncmFtbWFyIGltcG9ydCAoVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMpCiAKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kb20KIGZyb20gbWF0aCBpbXBvcnQgYXRhbjIsIGlzbmFuLCBjb3B5c2lnbgpAQCAtMzg1LDYgKzM4NywxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNvbXBsZXgoY29tcGxleDEoMWopKSwgMmopCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGxleCwgY29tcGxleDIoMWopKQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgICMgY2hlY2sgdW5kZXJzY29yZXMKKyAgICAgICAgZm9yIGxpdCBpbiBWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbm90IGFueShjaCBpbiBsaXQgZm9yIGNoIGluICd4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXgobGl0KSwgZXZhbChsaXQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleChsaXQpLCBjb21wbGV4KGxpdC5yZXBsYWNlKCdfJywgJycpKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBsaXQgaW4gKCcwXzcnLCAnMDlfOTknKTogICMgb2N0YWxzIGFyZSBub3QgcmVjb2duaXplZCBoZXJlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAneFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tcGxleCwgbGl0KQorCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKICAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTMwLCAzMCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goeCksIGhhc2goY29tcGxleCh4LCAwKSkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CmluZGV4IDc1MTM4MTUuLjIzZTk1YjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CkBAIC0xNTQsNiArMTU0LDMwIEBACiAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CiAgICAgICAgICAgICB0LmpvaW4oKQogCisgICAgZGVmIHRlc3RfdGhyZWFkX25hbWVzX2Fzc2lnbmVkKHNlbGYpOgorICAgICAgICBleGVjdXRvciA9IGZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yKAorICAgICAgICAgICAgbWF4X3dvcmtlcnM9NSwgdGhyZWFkX25hbWVfcHJlZml4PSdTcGVjaWFsUG9vbCcpCisgICAgICAgIGV4ZWN1dG9yLm1hcChhYnMsIHJhbmdlKC01LCA1KSkKKyAgICAgICAgdGhyZWFkcyA9IGV4ZWN1dG9yLl90aHJlYWRzCisgICAgICAgIGRlbCBleGVjdXRvcgorCisgICAgICAgIGZvciB0IGluIHRocmVhZHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHQubmFtZSwgcideU3BlY2lhbFBvb2xfWzAtNF0kJykKKyAgICAgICAgICAgIHQuam9pbigpCisKKyAgICBkZWYgdGVzdF90aHJlYWRfbmFtZXNfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZXhlY3V0b3IgPSBmdXR1cmVzLlRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz01KQorICAgICAgICBleGVjdXRvci5tYXAoYWJzLCByYW5nZSgtNSwgNSkpCisgICAgICAgIHRocmVhZHMgPSBleGVjdXRvci5fdGhyZWFkcworICAgICAgICBkZWwgZXhlY3V0b3IKKworICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgIyBXZSBkb24ndCBwYXJ0aWN1bGFybHkgY2FyZSB3aGF0IHRoZSBkZWZhdWx0IG5hbWUgaXMsIGp1c3QgdGhhdAorICAgICAgICAgICAgIyBpdCBoYXMgYSBkZWZhdWx0IG5hbWUgaW1wbHlpbmcgdGhhdCBpdCBpcyBhIFRocmVhZFBvb2xFeGVjdXRvcgorICAgICAgICAgICAgIyBmb2xsb3dlZCBieSB3aGF0IGxvb2tzIGxpa2UgYSB0aHJlYWQgbnVtYmVyLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0Lm5hbWUsIHInXi4qVGhyZWFkUG9vbEV4ZWN1dG9yLipfWzAtNF0kJykKKyAgICAgICAgICAgIHQuam9pbigpCisKIAogY2xhc3MgUHJvY2Vzc1Bvb2xTaHV0ZG93blRlc3QoUHJvY2Vzc1Bvb2xNaXhpbiwgRXhlY3V0b3JTaHV0ZG93blRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX3ByaW1lX2V4ZWN1dG9yKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQppbmRleCA3MWE4ZjNmLi4yYjA4MTk4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQpAQCAtMjA1Miw1ICsyMDUyLDExIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCdvbmUnKSwgNSkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyJFcnJvciJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNvbmZpZ3BhcnNlciwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKaW5kZXggM2M2YmRlZi4uMDM2YTFkMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CkBAIC04NCw2ICs4NCwzMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRhaW5lciA9PSBjb25zdHJ1Y3Rvcih2YWx1ZXMpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRhaW5lciA9PSBjb250YWluZXIpCiAKKyAgICBkZWYgdGVzdF9ibG9ja19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgIyBibG9ja2luZyBmYWxsYmFjayB3aXRoIF9fY29udGFpbnNfXyA9IE5vbmUKKyAgICAgICAgY2xhc3MgQnlDb250YWlucyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGMgPSBCeUNvbnRhaW5zKCkKKyAgICAgICAgY2xhc3MgQmxvY2tDb250YWlucyhCeUNvbnRhaW5zKToKKyAgICAgICAgICAgICIiIklzIG5vdCBhIGNvbnRhaW5lcgorCisgICAgICAgICAgICBUaGlzIGNsYXNzIGlzIGEgcGVyZmVjdGx5IGdvb2QgaXRlcmFibGUgKGFzIHRlc3RlZCBieQorICAgICAgICAgICAgbGlzdChiYykpLCBhcyB3ZWxsIGFzIGluaGVyaXRpbmcgZnJvbSBhIHBlcmZlY3RseSBnb29kCisgICAgICAgICAgICBjb250YWluZXIsIGJ1dCBfX2NvbnRhaW5zX18gPSBOb25lIHByZXZlbnRzIHRoZSB1c3VhbAorICAgICAgICAgICAgZmFsbGJhY2sgdG8gaXRlcmF0aW9uIGluIHRoZSBjb250YWluZXIgcHJvdG9jb2wuIFRoYXQKKyAgICAgICAgICAgIGlzLCBub3JtYWxseSwgMCBpbiBiYyB3b3VsZCBmYWxsIGJhY2sgdG8gdGhlIGVxdWl2YWxlbnQKKyAgICAgICAgICAgIG9mIGFueSh4PT0wIGZvciB4IGluIGJjKSwgYnV0IGhlcmUgaXQncyBibG9ja2VkIGZyb20KKyAgICAgICAgICAgIGRvaW5nIHNvLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgd2hpbGUgRmFsc2U6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIE5vbmUKKyAgICAgICAgICAgIF9fY29udGFpbnNfXyA9IE5vbmUKKyAgICAgICAgYmMgPSBCbG9ja0NvbnRhaW5zKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgwIGluIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiBsaXN0KGJjKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IDAgaW4gYmMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKaW5kZXggNTE2NDAzZS4uYzA0YzgwNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQpAQCAtMTIsNiArMTIsMzkgQEAKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKIAorY2xhc3MgVGVzdEFic3RyYWN0Q29udGV4dE1hbmFnZXIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZW50ZXIoc2VsZik6CisgICAgICAgIGNsYXNzIERlZmF1bHRFbnRlcihBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2V4aXRfXygqYXJncykKKworICAgICAgICBtYW5hZ2VyID0gRGVmYXVsdEVudGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYW5hZ2VyLl9fZW50ZXJfXygpLCBtYW5hZ2VyKQorCisgICAgZGVmIHRlc3RfZXhpdF9pc19hYnN0cmFjdChzZWxmKToKKyAgICAgICAgY2xhc3MgTWlzc2luZ0V4aXQoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTWlzc2luZ0V4aXQoKQorCisgICAgZGVmIHRlc3Rfc3RydWN0dXJhbF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgY2xhc3MgTWFuYWdlckZyb21TY3JhdGNoOgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYW5hZ2VyRnJvbVNjcmF0Y2gsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpKQorCisgICAgICAgIGNsYXNzIERlZmF1bHRFbnRlcihBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2V4aXRfXygqYXJncykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEZWZhdWx0RW50ZXIsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpKQorCisKIGNsYXNzIENvbnRleHRNYW5hZ2VyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfY29udGV4dG1hbmFnZXJfcGxhaW4oc2VsZik6CkBAIC04OSw3ICsxMjIsNyBAQAogICAgICAgICBkZWYgd29vaG9vKCk6CiAgICAgICAgICAgICB5aWVsZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgICAgICB3aXRoIHdvb2hvbygpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzdG9wX2V4YwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5IGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CmluZGV4IDBlMWY2NzAuLjQ1YTY5MjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29weS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAgICAgdGVzdHMgPSBbTm9uZSwgLi4uLCBOb3RJbXBsZW1lbnRlZCwKICAgICAgICAgICAgICAgICAgNDIsIDIqKjEwMCwgMy4xNCwgVHJ1ZSwgRmFsc2UsIDFqLAogICAgICAgICAgICAgICAgICAiaGVsbG8iLCAiaGVsbG9cdTEyMzQiLCBmLl9fY29kZV9fLAotICAgICAgICAgICAgICAgICBiIndvcmxkIiwgYnl0ZXMocmFuZ2UoMjU2KSksIHJhbmdlKDEwKSwKKyAgICAgICAgICAgICAgICAgYiJ3b3JsZCIsIGJ5dGVzKHJhbmdlKDI1NikpLCByYW5nZSgxMCksIHNsaWNlKDEsIDEwLCAyKSwKICAgICAgICAgICAgICAgICAgTmV3U3R5bGUsIENsYXNzaWMsIG1heCwgV2l0aE1ldGFjbGFzc10KICAgICAgICAgZm9yIHggaW4gdGVzdHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuY29weSh4KSwgeCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQppbmRleCBlNTI2NTRjLi5mMjgzOWE3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3JvdXRpbmVzLnB5CkBAIC02OSw1NSArNjksMTMwIEBACiBjbGFzcyBBc3luY0JhZFN5bnRheFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFkc3ludGF4XzEoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgIidhd2FpdCcgb3V0c2lkZSIpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMQotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzIoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgIidhd2FpdCcgb3V0c2lkZSIpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMgotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMzCi0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfNChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzQKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF81KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNQotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzYoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFN5bnRheEVycm9yLCAiJ3lpZWxkJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKToKLQotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNgotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4Xzcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFN5bnRheEVycm9yLCAiJ3lpZWxkIGZyb20nIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOgotCi0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM3Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfOChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzgKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF85KHNlbGYpOgotICAgICAgICBucyA9IHt9Ci0gICAgICAgIGZvciBjb21wIGluIHsnKGF3YWl0IGEgZm9yIGEgaW4gYiknLAotICAgICAgICAgICAgICAgICAgICAgJ1thd2FpdCBhIGZvciBhIGluIGJdJywKLSAgICAgICAgICAgICAgICAgICAgICd7YXdhaXQgYSBmb3IgYSBpbiBifScsCi0gICAgICAgICAgICAgICAgICAgICAne2F3YWl0IGE6IGMgZm9yIGEgaW4gYn0nfToKLQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnYXdhaXQuKmluIGNvbXByZWhlbicpOgotICAgICAgICAgICAgICAgIGV4ZWMoJ2FzeW5jIGRlZiBmKCk6XG5cdHt9Jy5mb3JtYXQoY29tcCksIG5zLCBucykKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8xMChzZWxmKToKLSAgICAgICAgIyBUZXN0cyBmb3IgaXNzdWUgMjQ2MTkKLQogICAgICAgICBzYW1wbGVzID0gWworICAgICAgICAgICAgIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGF3YWl0IHNvbWV0aGluZygpCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImF3YWl0IHNvbWV0aGluZygpIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBbXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXQgZnV0CisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKGE6YXdhaXQgc29tZXRoaW5nKCkpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgYXN5bmMgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhd2FpdCBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscyBpZiBhd2FpdCBpXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYgorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXdhaXQgYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzIGlmIGF3YWl0IGldCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdAorICAgICAgICAgICAgIiIiLAorCiAgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CiAgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOiBwYXNzCiAgICAgICAgICAgICAgICAgICAgYXdhaXQgPSAxCkBAIC0yODMsNTcgKzM1OCwxMTAgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSksIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICBjb21waWxlKGNvZGUsICI8dGVzdD4iLCAiZXhlYyIpCiAKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMihzZWxmKToKKyAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdCA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgQmFyOgorICAgICAgICAgICAgICAgIGRlZiBhc3luYygpOiBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIEJhcjoKKyAgICAgICAgICAgICAgICBhc3luYyA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgYXN5bmM6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJjbGFzcyBhd2FpdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImltcG9ydCBtYXRoIGFzIGF3YWl0IiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYXN5bmMoKToKKyAgICAgICAgICAgICAgICBwYXNzIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCosIGF3YWl0PTEpOgorICAgICAgICAgICAgICAgIHBhc3MiIiIKKworICAgICAgICAgICAgIiIiYXN5bmMgPSAxIiIiLAorCisgICAgICAgICAgICAiIiJwcmludChhd2FpdD0xKSIiIgorICAgICAgICBdCisKKyAgICAgICAgZm9yIGNvZGUgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSksIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAiJ2F3YWl0JyB3aWxsIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkcyIpOgorICAgICAgICAgICAgICAgIGNvbXBpbGUoY29kZSwgIjx0ZXN0PiIsICJleGVjIikKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8zKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIpCisgICAgICAgICAgICAgICAgY29tcGlsZSgiYXN5bmMgPSAxIiwgIjx0ZXN0PiIsICJleGVjIikKKwogICAgIGRlZiB0ZXN0X2dvb2RzeW50YXhfMShzZWxmKToKICAgICAgICAgIyBUZXN0cyBmb3IgaXNzdWUgMjQ2MTkKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMTApLCAxMSkKKyAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKKyAgICAgICAgICAgICcnJywKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKIAotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCiAKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwogCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgotICAgICAgICAgICAgIiIic3BhbSIiIgotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBcCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgIyAxMjMKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgIyA0NTYKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMjApLCAyMikKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgICIiInNwYW0iIiIKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IFwKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICMgMTIzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgIyA0NTYKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiByZXR1cm4gYXdhaXRfCi0gICAgICAgICAgICBhd2FpdF8gPSBhd2FpdAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJhcigpLnNlbmQoTm9uZSkKLSAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgotICAgICAgICAgICAgICAgIHJldHVybiBleC5hcmdzWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDQyKSwgNDIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHJldHVybiBhd2FpdF8KKyAgICAgICAgICAgICAgICBhd2FpdF8gPSBhd2FpdAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYmFyKCkuc2VuZChOb25lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXguYXJnc1swXSArIDEKKyAgICAgICAgICAgICcnJworICAgICAgICBdCiAKLSAgICAgICAgYXN5bmMgZGVmIGYoKToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBnKCk6IHBhc3MKLSAgICAgICAgICAgIGF3YWl0IHoKLSAgICAgICAgYXdhaXQgPSAxCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24oZikpCisgICAgICAgIGZvciBjb2RlIGluIHNhbXBsZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpOgorICAgICAgICAgICAgICAgIGxvYyA9IHt9CisKKyAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgICAgICAgICAgZXhlYyhjb2RlLCBsb2MsIGxvYykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jWydmb28nXSgxMCksIDExKQogCiAKIGNsYXNzIFRva2VuaXplclJlZ3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTg5MSw3ICsxMDE5LDcgQEAKICAgICAgICAgICAgIHJldHVybiBhd2FpdCBBd2FpdGFibGUoKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFR5cGVFcnJvciwgIl9fYXdhaXRfX1woXCkgcmV0dXJuZWQgYSBjb3JvdXRpbmUiKToKKyAgICAgICAgICAgIFR5cGVFcnJvciwgciJfX2F3YWl0X19cKFwpIHJldHVybmVkIGEgY29yb3V0aW5lIik6CiAKICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIApAQCAtMTMzMyw3ICsxNDYxLDcgQEAKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCiAgICAgICAgICAgICAgICAgVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CisgICAgICAgICAgICAgICAgciJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CiAKICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIApAQCAtMTUzNyw2ICsxNjY1LDE4NSBAQAogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiKQogICAgICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIAorICAgIGRlZiB0ZXN0X2NvbXBfMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaSk6CisgICAgICAgICAgICByZXR1cm4gaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFthd2FpdCBjIGZvciBjIGluIFtmKDEpLCBmKDQxKV1dCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgYyBmb3IgYyBpbiBbZigxKSwgZig0MSldfQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdDEoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgYzogJ2EnIGZvciBjIGluIFtmKDEpLCBmKDQxKV19CisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0MigpOgorICAgICAgICAgICAgcmV0dXJuIHtpOiBhd2FpdCBjIGZvciBpLCBjIGluIGVudW1lcmF0ZShbZigxKSwgZig0MSldKX0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhydW5fbGlzdCgpKSwgKFtdLCBbMSwgNDFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX3NldCgpKSwgKFtdLCB7MSwgNDF9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2RpY3QxKCkpLCAoW10sIHsxOiAnYScsIDQxOiAnYSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2RpY3QyKCkpLCAoW10sIHswOiAxLCAxOiA0MX0pKQorCisgICAgZGVmIHRlc3RfY29tcF8yKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpKToKKyAgICAgICAgICAgIHJldHVybiBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW3MgZm9yIGMgaW4gW2YoJycpLCBmKCdhYmMnKSwgZignJyksIGYoWydkZScsICdmZyddKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgY10KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbJ2EnLCAnYicsICdjJywgJ2RlJywgJ2ZnJ10pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge2QKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gW2YoW2YoWzEwLCAzMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZihbMjBdKV0pXQorICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiBhd2FpdCBjCisgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIGF3YWl0IHN9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0KCkpLAorICAgICAgICAgICAgKFtdLCB7MTAsIDIwLCAzMH0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0MigpOgorICAgICAgICAgICAgcmV0dXJuIHthd2FpdCBzCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIFtmKFtmKDEwKSwgZigyMCldKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgY30KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9zZXQyKCkpLAorICAgICAgICAgICAgKFtdLCB7MTAsIDIwfSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFsxMSwgMjFdKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0KCkpLAorICAgICAgICAgICAgKFtdLCB7MTEsIDIxfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0KCk6CisgICAgICAgICAgICByZXR1cm4ge2kgKyAxOiBpICsgMiBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fZGljdCgpKSwKKyAgICAgICAgICAgIChbXSwgezExOiAxMiwgMjE6IDIyfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9nZW4oKToKKyAgICAgICAgICAgIGdlbiA9IChpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSkKKyAgICAgICAgICAgIHJldHVybiBbZyArIDEwMCBhc3luYyBmb3IgZyBpbiBnZW5dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2dlbigpKSwKKyAgICAgICAgICAgIChbXSwgWzExMSwgMTIxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbMjFdKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldCgpKSwKKyAgICAgICAgICAgIChbXSwgezIxfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0KCk6CisgICAgICAgICAgICByZXR1cm4ge2kgKyAxOiBpICsgMiBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2RpY3QoKSksCisgICAgICAgICAgICAoW10sIHsyMTogMjJ9KSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2dlbigpOgorICAgICAgICAgICAgZ2VuID0gKGkgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pIGlmIGkgPiAxMCkKKyAgICAgICAgICAgIHJldHVybiBbZyArIDEwMCBhc3luYyBmb3IgZyBpbiBnZW5dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2dlbigpKSwKKyAgICAgICAgICAgIChbXSwgWzEyMV0pKQorCisgICAgZGVmIHRlc3RfY29tcF81KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGZvciBwYWlyIGluIChbMTAsIDIwXSwgWzMwLCA0MF0pIGlmIHBhaXJbMF0gPiAxMAorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBmKHBhaXIpIGlmIGkgPiAzMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzQxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIHNlcSBpbiBmKFsoMTAsIDIwKSwgKDMwLCldKQorICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBzZXFdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzExLCAyMSwgMzFdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfNyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignYWFhJykKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSBhc3luYyBmb3IgaSBpbiBmKCldCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgJ2FhYScpOgorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9jb21wXzgoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICByZXR1cm4gW2kgZm9yIGkgaW4gWzEsIDIsIDNdXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgWzEsIDIsIDNdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfOShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgeWllbGQgMgorICAgICAgICBhc3luYyBkZWYgZigpOgorICAgICAgICAgICAgbCA9IFtpIGFzeW5jIGZvciBpIGluIGdlbigpXQorICAgICAgICAgICAgcmV0dXJuIFtpIGZvciBpIGluIGxdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmKCkpLAorICAgICAgICAgICAgKFtdLCBbMSwgMl0pKQorCisgICAgZGVmIHRlc3RfY29tcF8xMChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIHh4ID0ge2kgZm9yIGkgaW4gWzEsIDIsIDNdfQorICAgICAgICAgICAgcmV0dXJuIHt4OiB4IGZvciB4IGluIHh4fQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgezE6IDEsIDI6IDIsIDM6IDN9KSkKKwogICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CiAgICAgICAgIGFzeW5jIGRlZiBmdW5jKCk6IHBhc3MKICAgICAgICAgY29ybyA9IGZ1bmMoKQpAQCAtMTY2Nyw4ICsxOTc0LDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKSwgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKICAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgImNvcm91dGluZSB3cmFwcGVyLipcLndyYXBwZXIgYXQgMHguKmF0dGVtcHRlZCB0byAiCi0gICAgICAgICAgICAgICAgInJlY3Vyc2l2ZWx5IHdyYXAgLiogd3JhcCAuKiIpOgorICAgICAgICAgICAgICAgIHIiY29yb3V0aW5lIHdyYXBwZXIuKlwud3JhcHBlciBhdCAweC4qYXR0ZW1wdGVkIHRvICIKKyAgICAgICAgICAgICAgICByInJlY3Vyc2l2ZWx5IHdyYXAgLiogd3JhcCAuKiIpOgogCiAgICAgICAgICAgICAgICAgZm9vKCkKICAgICAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CmluZGV4IGYxODk4M2YuLjUzZjg5MTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQpAQCAtNiw3ICs2LDcgQEAKICMgcmlwIG9mZiBhbGwgaW50ZXJlc3Rpbmcgc3R1ZmYgZnJvbSB0ZXN0X3Byb2ZpbGUKIGltcG9ydCBjUHJvZmlsZQogZnJvbSB0ZXN0LnRlc3RfcHJvZmlsZSBpbXBvcnQgUHJvZmlsZVRlc3QsIHJlZ2VuZXJhdGVfZXhwZWN0ZWRfb3V0cHV0Ci1mcm9tIHRlc3QucHJvZmlsZWUgaW1wb3J0IHRlc3RmdW5jCisKIAogY2xhc3MgQ1Byb2ZpbGVUZXN0KFByb2ZpbGVUZXN0KToKICAgICBwcm9maWxlcmNsYXNzID0gY1Byb2ZpbGUuUHJvZmlsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jc3YucHkgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQppbmRleCA3N2MzMTVlLi43ZGNlYTljIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nzdi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQpAQCAtMiw5ICsyLDcgQEAKICMgY3N2IHBhY2thZ2UgdW5pdCB0ZXN0cwogCiBpbXBvcnQgY29weQotaW1wb3J0IGlvCiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gdGVtcGZpbGUgaW1wb3J0IFRlbXBvcmFyeUZpbGUKQEAgLTEyLDYgKzEwLDkgQEAKIGltcG9ydCBnYwogaW1wb3J0IHBpY2tsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcGVybXV0YXRpb25zCitmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiAKIGNsYXNzIFRlc3RfQ3N2KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiIKQEAgLTQyNiwxNyArNDI3LDE2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3N2LnJlYWRlciwgW10sIHF1b3RpbmcgPSAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjc3YucmVhZGVyLCBbXSwgcXVvdGluZyA9IDEwMCkKIAotICAgICMgU2VlIGlzc3VlICMyMjk5NQotICAgICMjIGRlZiB0ZXN0X2NvcHkoc2VsZik6Ci0gICAgIyMgICAgIGZvciBuYW1lIGluIGNzdi5saXN0X2RpYWxlY3RzKCk6Ci0gICAgIyMgICAgICAgICBkaWFsZWN0ID0gY3N2LmdldF9kaWFsZWN0KG5hbWUpCi0gICAgIyMgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvcHkuY29weSwgZGlhbGVjdCkKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgorICAgICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb3B5LmNvcHksIGRpYWxlY3QpCiAKLSAgICAjIyBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgIyMgICAgIGZvciBuYW1lIGluIGNzdi5saXN0X2RpYWxlY3RzKCk6Ci0gICAgIyMgICAgICAgICBkaWFsZWN0ID0gY3N2LmdldF9kaWFsZWN0KG5hbWUpCi0gICAgIyMgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAjIyAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBpY2tsZS5kdW1wcywgZGlhbGVjdCwgcHJvdG8pCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgorICAgICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQorICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGRpYWxlY3QsIHByb3RvKQogCiBjbGFzcyBUZXN0Q3N2QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHJlYWRlckFzc2VydEVxdWFsKHNlbGYsIGlucHV0LCBleHBlY3RlZF9yZXN1bHQpOgpAQCAtMTA4MCw3ICsxMDgwLDYgQEAKICAgICAgICAgICAgICAiRnJhbsOnb2lzIFBpbmFyZCJdCiAKICAgICBkZWYgdGVzdF91bmljb2RlX3JlYWQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBpbwogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIiwgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iajoKICAgICAgICAgICAgIGZpbGVvYmoud3JpdGUoIiwiLmpvaW4oc2VsZi5uYW1lcykgKyAiXHJcbiIpCiAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKQEAgLTEwODksNyArMTA4OCw2IEBACiAKIAogICAgIGRlZiB0ZXN0X3VuaWNvZGVfd3JpdGUoc2VsZik6Ci0gICAgICAgIGltcG9ydCBpbwogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIiwgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iajoKICAgICAgICAgICAgIHdyaXRlciA9IGNzdi53cml0ZXIoZmlsZW9iaikKICAgICAgICAgICAgIHdyaXRlci53cml0ZXJvdyhzZWxmLm5hbWVzKQpAQCAtMTA5Nyw2ICsxMDk1LDYzIEBACiAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW9iai5yZWFkKCksIGV4cGVjdGVkKQogCitjbGFzcyBLZXlPcmRlcmluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfb3JkZXJpbmdfZm9yX3RoZV9kaWN0X3JlYWRlcl9hbmRfd3JpdGVyKHNlbGYpOgorICAgICAgICByZXN1bHRzZXQgPSBzZXQoKQorICAgICAgICBmb3Iga2V5cyBpbiBwZXJtdXRhdGlvbnMoImFiY2RlIik6CisgICAgICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoJ3crJywgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iamVjdDoKKyAgICAgICAgICAgICAgICBkdyA9IGNzdi5EaWN0V3JpdGVyKGZpbGVvYmplY3QsIGtleXMpCisgICAgICAgICAgICAgICAgZHcud3JpdGVoZWFkZXIoKQorICAgICAgICAgICAgICAgIGZpbGVvYmplY3Quc2VlaygwKQorICAgICAgICAgICAgICAgIGRyID0gY3N2LkRpY3RSZWFkZXIoZmlsZW9iamVjdCkKKyAgICAgICAgICAgICAgICBrdCA9IHR1cGxlKGRyLmZpZWxkbmFtZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXlzLCBrdCkKKyAgICAgICAgICAgICAgICByZXN1bHRzZXQuYWRkKGt0KQorICAgICAgICAjIEZpbmFsIHNhbml0eSBjaGVjazogd2VyZSBhbGwgcGVybXV0YXRpb25zIHVuaXF1ZT8KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0c2V0KSwgMTIwLCAiS2V5IG9yZGVyaW5nOiBzb21lIGtleSBwZXJtdXRhdGlvbnMgbm90IGNvbGxlY3RlZCAoZXhwZWN0ZWQgMTIwKSIpCisKKyAgICBkZWYgdGVzdF9vcmRlcmVkX2RpY3RfcmVhZGVyKHNlbGYpOgorICAgICAgICBkYXRhID0gZGVkZW50KCcnJ1wKKyAgICAgICAgICAgIEZpcnN0TmFtZSxMYXN0TmFtZQorICAgICAgICAgICAgRXJpYyxJZGxlCisgICAgICAgICAgICBHcmFoYW0sQ2hhcG1hbixPdmVyMSxPdmVyMgorCisgICAgICAgICAgICBVbmRlcjEKKyAgICAgICAgICAgIEpvaG4sQ2xlZXNlCisgICAgICAgICcnJykuc3BsaXRsaW5lcygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNzdi5EaWN0UmVhZGVyKGRhdGEpKSwKKyAgICAgICAgICAgIFtPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnRXJpYycpLCAoJ0xhc3ROYW1lJywgJ0lkbGUnKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdHcmFoYW0nKSwgKCdMYXN0TmFtZScsICdDaGFwbWFuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBbJ092ZXIxJywgJ092ZXIyJ10pXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ1VuZGVyMScpLCAoJ0xhc3ROYW1lJywgTm9uZSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnSm9obicpLCAoJ0xhc3ROYW1lJywgJ0NsZWVzZScpXSksCisgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjc3YuRGljdFJlYWRlcihkYXRhLCByZXN0a2V5PSdPdGhlckluZm8nKSksCisgICAgICAgICAgICBbT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0VyaWMnKSwgKCdMYXN0TmFtZScsICdJZGxlJyldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnR3JhaGFtJyksICgnTGFzdE5hbWUnLCAnQ2hhcG1hbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ090aGVySW5mbycsIFsnT3ZlcjEnLCAnT3ZlcjInXSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnVW5kZXIxJyksICgnTGFzdE5hbWUnLCBOb25lKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdKb2huJyksICgnTGFzdE5hbWUnLCAnQ2xlZXNlJyldKSwKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAgZGVsIGRhdGFbMF0gICAgICAgICAgICAjIFJlbW92ZSB0aGUgaGVhZGVyIHJvdworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY3N2LkRpY3RSZWFkZXIoZGF0YSwgZmllbGRuYW1lcz1bJ2ZuYW1lJywgJ2xuYW1lJ10pKSwKKyAgICAgICAgICAgIFtPcmRlcmVkRGljdChbKCdmbmFtZScsICdFcmljJyksICgnbG5hbWUnLCAnSWRsZScpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnZm5hbWUnLCAnR3JhaGFtJyksICgnbG5hbWUnLCAnQ2hhcG1hbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgWydPdmVyMScsICdPdmVyMiddKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2ZuYW1lJywgJ1VuZGVyMScpLCAoJ2xuYW1lJywgTm9uZSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdmbmFtZScsICdKb2huJyksICgnbG5hbWUnLCAnQ2xlZXNlJyldKSwKKyAgICAgICAgICAgIF0pCisKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geydfX2RvY19fJywgJ19fdmVyc2lvbl9fJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgY3N2LCAoJ2NzdicsICdfY3N2JyksIGV4dHJhPWV4dHJhKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQppbmRleCAyZDRlYjUyLi4yNDJlMWJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKQEAgLTIzLDkgKzIzLDE2IEBACiB0ZXN0X2NsYXNzZXMgPSBbXQogCiBmb3IgbW9kdWxlLCBzdWZmaXggaW4gemlwKHRlc3RfbW9kdWxlcywgdGVzdF9zdWZmaXhlcyk6CisgICAgdGVzdF9jbGFzc2VzID0gW10KICAgICBmb3IgbmFtZSwgY2xzIGluIG1vZHVsZS5fX2RpY3RfXy5pdGVtcygpOgotICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UoY2xzLCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhjbHMsIHVuaXR0ZXN0LlRlc3RDYXNlKSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNscywgdHlwZSk6CiAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgdGVzdF9jbGFzc2VzLmFwcGVuZChjbHMpCisgICAgICAgIGVsaWYgaXNzdWJjbGFzcyhjbHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSk6CisgICAgICAgICAgICBzdWl0ID0gY2xzKCkKKyAgICAgICAgICAgIHRlc3RfY2xhc3Nlcy5leHRlbmQodHlwZSh0ZXN0KSBmb3IgdGVzdCBpbiBzdWl0KQorICAgIGZvciBjbHMgaW4gdGVzdF9jbGFzc2VzOgogICAgICAgICBjbHMuX19uYW1lX18gPSBuYW1lICsgc3VmZml4CiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgc2V0VXBDbGFzcyhjbHNfLCBtb2R1bGU9bW9kdWxlKToKQEAgLTM5LDcgKzQ2LDYgQEAKICAgICAgICAgICAgIHN5cy5tb2R1bGVzLnVwZGF0ZShjbHNfLl9zYXZlX3N5c19tb2R1bGVzKQogICAgICAgICBjbHMuc2V0VXBDbGFzcyA9IHNldFVwQ2xhc3MKICAgICAgICAgY2xzLnRlYXJEb3duQ2xhc3MgPSB0ZWFyRG93bkNsYXNzCi0gICAgICAgIHRlc3RfY2xhc3Nlcy5hcHBlbmQoY2xzKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CmluZGV4IDYyM2Q5OTIuLmYwYTQyOGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCBzY3JpcHQgZm9yIHRoZSBkYm0ub3BlbiBmdW5jdGlvbiBiYXNlZCBvbiB0ZXN0ZHVtYmRibS5weSIiIgogCi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGdsb2IKIGltcG9ydCB0ZXN0LnN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CmluZGV4IGZmNjNjODguLjJkNzdmMDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGRibS5kdW1iIGFzIGR1bWJkYm0KIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKQEAgLTc4LDYgKzc5LDEyIEBACiAgICAgICAgIHNlbGYuaW5pdF9kYigpCiAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAncicpCiAgICAgICAgIHNlbGYucmVhZF9oZWxwZXIoZikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5Jyk6CisgICAgICAgICAgICBmW2InZyddID0gYid4JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgZGF0YWJhc2UgaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHknKToKKyAgICAgICAgICAgIGRlbCBmW2InYSddCiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZHVtYmRibV9rZXlzKHNlbGYpOgpAQCAtMTQ4LDcgKzE1NSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2RpY3Rba2V5XSwgZltrZXldKQogCiAgICAgZGVmIGluaXRfZGIoc2VsZik6Ci0gICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAndycpCisgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAnbicpCiAgICAgICAgIGZvciBrIGluIHNlbGYuX2RpY3Q6CiAgICAgICAgICAgICBmW2tdID0gc2VsZi5fZGljdFtrXQogICAgICAgICBmLmNsb3NlKCkKQEAgLTIzNCw2ICsyNDEsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJycpCiAKKyAgICBkZWYgdGVzdF93YXJuX29uX2lnbm9yZWRfZmxhZ3Moc2VsZik6CisgICAgICAgIGZvciB2YWx1ZSBpbiAoJ3InLCAndycpOgorICAgICAgICAgICAgX2RlbGV0ZV9maWxlcygpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGRhdGFiYXNlIGZpbGUgaXMgbWlzc2luZywgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW1hbnRpY3Mgb2YgdGhlICdjJyBmbGFnIHdpbGwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIHVzZWQuIik6CisgICAgICAgICAgICAgICAgZiA9IGR1bWJkYm0ub3BlbihfZm5hbWUsIHZhbHVlKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2ZsYWcoc2VsZik6CisgICAgICAgIGZvciBmbGFnIGluICgneCcsICdyZicsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZsYWcgbXVzdCBiZSBvbmUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidyJywgJ3cnLCAnYycsIG9yICduJyIpOgorICAgICAgICAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCBmbGFnKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIF9kZWxldGVfZmlsZXMoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkKaW5kZXggYTc4MDhmNS4uMzA0YjMzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fZ251LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weQpAQCAtMiw3ICsyLDcgQEAKIGdkYm0gPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5nbnUiKSAjc2tpcCBpZiBub3Qgc3VwcG9ydGVkCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCB1bmxpbmsKIAogCiBmaWxlbmFtZSA9IFRFU1RGTgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkKaW5kZXggMjI5MTU2MS4uNDlmNDQyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5CkBAIC0xLDggKzEsNiBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5uZGJtIikgI3NraXAgaWYgbm90IHN1cHBvcnRlZAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KIGltcG9ydCBkYm0ubmRibQogZnJvbSBkYm0ubmRibSBpbXBvcnQgZXJyb3IKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CmluZGV4IDFhYTBiZjguLjYxN2EzN2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKQEAgLTU1NCw2ICs1NTQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnICAtNy44OScpKSwgJy03Ljg5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiICAzLjQ1Njc5ICAiKSksICczLjQ1Njc5JykKIAorICAgICAgICAjIHVuZGVyc2NvcmVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJzFfMy4zZTRfMCcpKSwgJzEuMzNFKzQxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnMV8wXzBfMCcpKSwgJzEwMDAnKQorCiAgICAgICAgICMgdW5pY29kZSB3aGl0ZXNwYWNlCiAgICAgICAgIGZvciBsZWFkIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgogICAgICAgICAgICAgZm9yIHRyYWlsIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgpAQCAtNTc4LDYgKzU4Miw5IEBACiAgICAgICAgICAgICAjIGVtYmVkZGVkIE5VTAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjEyXHUwMDAwMyIpCiAKKyAgICAgICAgICAgICMgdW5kZXJzY29yZXMgZG9uJ3QgcHJldmVudCBlcnJvcnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICIxXzJfXHUwMDAwMyIpCisKICAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfZnJvbV9sZWdhY3lfc3RyaW5ncyhzZWxmKToKICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQpAQCAtNzcyLDYgKzc3OSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAieHl6IikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICgxLCAieHl6IiwgLTI1KSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyMzQiLCAiNTY3OCIpCisgICAgICAgICMgbm8gd2hpdGVzcGFjZSBhbmQgdW5kZXJzY29yZSBzdHJpcHBpbmcgaXMgZG9uZSB3aXRoIHRoaXMgbWV0aG9kCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAiIDEyMzQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyXzM0IikKIAogICAgICAgICAjIHRvbyBtYW55IE5hTiBwYXlsb2FkIGRpZ2l0cwogICAgICAgICBuYy5wcmVjID0gMwpAQCAtMjA0Nyw2ICsyMDU3LDM5IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDAsIDIsIDcsIDEpLCAnRicpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoMCwpLCAnRicpKQogCisgICAgZGVmIHRlc3RfYXNfaW50ZWdlcl9yYXRpbyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgIyBleGNlcHRpb25hbCBjYXNlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJ2luZicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJy1pbmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvLCBEZWNpbWFsKCctbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbywgRGVjaW1hbCgnc25hbjEyMycpKQorCisgICAgICAgIGZvciBleHAgaW4gcmFuZ2UoLTQsIDIpOgorICAgICAgICAgICAgZm9yIGNvZWZmIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgICAgIGZvciBzaWduIGluICcrJywgJy0nOgorICAgICAgICAgICAgICAgICAgICBkID0gRGVjaW1hbCgnJXMlZEUlZCcgJSAoc2lnbiwgY29lZmYsIGV4cCkpCisgICAgICAgICAgICAgICAgICAgIHBxID0gZC5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgICAgICAgICAgICAgcCwgcSA9IHBxCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayByZXR1cm4gdHlwZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocHEsIHR1cGxlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocCwgaW50KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocSwgaW50KQorCisgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgbm9ybWFsaXphdGlvbjogIHEgc2hvdWxkIGJlIHBvc2l0aXZlOworICAgICAgICAgICAgICAgICAgICAjIHAgc2hvdWxkIGJlIHJlbGF0aXZlbHkgcHJpbWUgdG8gcS4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHEsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5nY2QocCwgcSksIDEpCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB0aGF0IHAvcSBhY3R1YWxseSBnaXZlcyB0aGUgY29ycmVjdCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwocCkgLyBEZWNpbWFsKHEpLCBkKQorCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CiAgICAgICAgICMgRGlmZmVyZW50IGJlaGF2aW91cnMgd2hlbiBzdWJjbGFzc2luZyBEZWNpbWFsCiAgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKaW5kZXggMThlMWRmMC4uY2U1MTdiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CkBAIC0yODksNyArMjg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCksIHRhcmdldCkKIAotICAgIGRlZiB0ZXN0X2luc2VydF9idWdfMjQ5MTMoc2VsZik6CisgICAgZGVmIHRlc3RfaW5kZXhfYnVnXzI0OTEzKHNlbGYpOgogICAgICAgICBkID0gZGVxdWUoJ0EnICogMykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIGkgPSBkLmluZGV4KCJIZWxsbyB3b3JsZCIsIDAsIDQpCkBAIC02MjIsMjAgKzYyMiwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgICAgIGQgPSBkZXF1ZShyYW5nZSgyMDApKQotICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wcyhkLCBpKQotICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCisgICAgICAgIGZvciBkIGluIGRlcXVlKHJhbmdlKDIwMCkpLCBkZXF1ZShyYW5nZSgyMDApLCAxMDApOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBzID0gcGlja2xlLmR1bXBzKGQsIGkpCisgICAgICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChlKSwgbGlzdChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKIAotIyMgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKLSMjICAgICAgICBkID0gZGVxdWUoJ2FiYycpCi0jIyAgICAgICAgZC5hcHBlbmQoZCkKLSMjICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotIyMgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBpKSkKLSMjICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0jIyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGVbLTFdKSkKKyAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBmb3IgZCBpbiBkZXF1ZSgnYWJjJyksIGRlcXVlKCdhYmMnLCAzKToKKyAgICAgICAgICAgIGQuYXBwZW5kKGQpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIGkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZVstMV0pLCBpZChlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKIAogICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKICAgICAgICAgb3JpZyA9IGRlcXVlKHJhbmdlKDIwMCkpCkBAIC02OTYsNiArNjk4LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBmb3IgbWF4bGVuIGluIHJhbmdlKC0xLCA2KToKKyAgICAgICAgICAgICAgICBzID0gW3JhbmRvbS5yYW5kb20oKSBmb3IgaiBpbiByYW5nZShpKV0KKyAgICAgICAgICAgICAgICBkID0gZGVxdWUocykgaWYgbWF4bGVuID09IC0xIGVsc2UgZGVxdWUocywgbWF4bGVuKQorICAgICAgICAgICAgICAgIGUgPSBkLmNvcHkoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQubWF4bGVuLCBlLm1heGxlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKHggaXMgeSBmb3IgeCwgeSBpbiB6aXAoZCwgZSkpKQorCiAgICAgZGVmIHRlc3RfY29weV9tZXRob2Qoc2VsZik6CiAgICAgICAgIG11dCA9IFsxMF0KICAgICAgICAgZCA9IGRlcXVlKFttdXRdKQpAQCAtODQ1LDI0ICs4NTYsMjYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkKSwgdHlwZShlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAotIyMgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotIyMgICAgICAgIGQgPSBEZXF1ZSgnYWJjJykKLSMjICAgICAgICBkLmFwcGVuZChkKQotIyMKLSMjICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkKSkKLSMjICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKLSMjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZCksIHR5cGUoZSkpCi0jIyAgICAgICAgZGQgPSBkLnBvcCgpCi0jIyAgICAgICAgZWUgPSBlLnBvcCgpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZWUpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKLSMjCi0jIyAgICAgICAgZC54ID0gZAotIyMgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGUueCkpCi0jIwotIyMgICAgICAgIGQgPSBEZXF1ZVdpdGhCYWRJdGVyKCdhYmMnKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkKQorICAgIGRlZiB0ZXN0X3BpY2tsZV9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgZm9yIGQgaW4gRGVxdWUoJ2FiYycpLCBEZXF1ZSgnYWJjJywgMyk6CisgICAgICAgICAgICAgICAgZC5hcHBlbmQoZCkKKworICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGUpLCBpZChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZSksIHR5cGUoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm1heGxlbiwgZC5tYXhsZW4pCisgICAgICAgICAgICAgICAgZGQgPSBkLnBvcCgpCisgICAgICAgICAgICAgICAgZWUgPSBlLnBvcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlZSksIGlkKGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgZCkKKworICAgICAgICAgICAgICAgIGQueCA9IGQKKyAgICAgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlLngpLCBpZChlKSkKKworICAgICAgICAgICAgZm9yIGQgaW4gRGVxdWVXaXRoQmFkSXRlcignYWJjJyksIERlcXVlV2l0aEJhZEl0ZXIoJ2FiYycsIDIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkLCBwcm90bykKIAogICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnZ2FsbGFoYWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKaW5kZXggNDE4ZjhkMi4uMWUwOGVkOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CkBAIC00NzM4LDExICs0NzM4LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gKGFyZ3MsIGt3YXJncykKICAgICAgICAgb2JqID0gQzMoKQogICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgotICAgICAgICAgICAgaWYgcHJvdG8gPj0gNDoKKyAgICAgICAgICAgIGlmIHByb3RvID49IDI6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVkdWNlKHByb3RvLCBvYmosIGFyZ3MsIGt3YXJncykKLSAgICAgICAgICAgIGVsaWYgcHJvdG8gPj0gMjoKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBvYmouX19yZWR1Y2VfZXhfXyhwcm90bykKIAogICAgICAgICBjbGFzcyBDNDoKICAgICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfZXhfXyhzZWxmKToKQEAgLTUwNjEsMTAgKzUwNTgsNiBAQAogICAgICAgICAgICAgICAgIGt3YXJncyA9IGdldGF0dHIoY2xzLCAnS1dBUkdTJywge30pCiAgICAgICAgICAgICAgICAgb2JqID0gY2xzKCpjbHMuQVJHUywgKiprd2FyZ3MpCiAgICAgICAgICAgICAgICAgcHJvdG8gPSBwaWNrbGVfY29waWVyLnByb3RvCi0gICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQgYW5kIGhhc2F0dHIoY2xzLCAnX19nZXRuZXdhcmdzX2V4X18nKToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZV9jb3BpZXIuZHVtcHMob2JqLCBwcm90bykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBvYmpjb3B5ID0gcGlja2xlX2NvcGllci5jb3B5KG9iaikKICAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfaXNfY29weShvYmosIG9iamNvcHkpCiAgICAgICAgICAgICAgICAgIyBGb3IgdGVzdCBjbGFzc2VzIHRoYXQgc3VwcG9ydHMgdGhpcywgbWFrZSBzdXJlIHdlIGRpZG4ndCBnbwpAQCAtNTEyMywxMiArNTExNiwxNCBAQAogICAgICAgICBhLCBiID0gQSgpLCBCKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpKQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih7fSkpCi0gICAgICAgIGEueCwgYS55LCBhLnosIGEudyA9IHJhbmdlKDQpCisgICAgICAgICMgSW5pdGlhbCBoYXNoIHRhYmxlIGNhbiBjb250YWluIGF0IG1vc3QgNSBlbGVtZW50cy4KKyAgICAgICAgIyBTZXQgNiBhdHRyaWJ1dGVzIHRvIGNhdXNlIGludGVybmFsIHJlc2l6aW5nLgorICAgICAgICBhLngsIGEueSwgYS56LCBhLncsIGEudiwgYS51ID0gcmFuZ2UoNikKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpKQogICAgICAgICBhMiA9IEEoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2YodmFycyhhMikpKQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih7fSkpCi0gICAgICAgIGIudSwgYi52LCBiLncsIGIudCA9IHJhbmdlKDQpCisgICAgICAgIGIudSwgYi52LCBiLncsIGIudCwgYi5zLCBiLnIgPSByYW5nZSg2KQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGIpKSwgc3lzLmdldHNpemVvZih7fSkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKaW5kZXggNTA2ZDFhYi4uYjg0ZDY0NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CkBAIC0xODIsNiArMTgyLDcgQEAKICAgICAgJ19faWFkZF9fJywKICAgICAgJ19faW11bF9fJywKICAgICAgJ19faW5pdF9fJywKKyAgICAgJ19faW5pdF9zdWJjbGFzc19fJywKICAgICAgJ19faXRlcl9fJywKICAgICAgJ19fbGVfXycsCiAgICAgICdfX2xlbl9fJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQppbmRleCA5NTU2MThhLi5jMTMzYzgxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CkBAIC01LDkgKzUsOCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc2VsZWN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcHl0aG9uX29ubHkKIAogaWYgbm90IGhhc2F0dHIoc2VsZWN0LCAnZGV2cG9sbCcpIDoKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgndGVzdCB3b3JrcyBvbmx5IG9uIFNvbGFyaXMgT1MgZmFtaWx5JykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQppbmRleCA2ZDY4ZTc2Li5lZDY2ZGRiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CkBAIC0xLDEwICsxLDEzIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1pbXBvcnQgY29sbGVjdGlvbnMsIHJhbmRvbSwgc3RyaW5nCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKLWltcG9ydCBnYywgd2Vha3JlZgoraW1wb3J0IGdjCiBpbXBvcnQgcGlja2xlCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBEaWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC04MzYsNiArODM5LDgzIEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX3RyYWNrZWQoTXlEaWN0KCkpCiAKKyAgICBkZWYgbWFrZV9zaGFyZWRfa2V5X2RpY3Qoc2VsZiwgbik6CisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGljdHMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIGEgPSBDKCkKKyAgICAgICAgICAgIGEueCwgYS55LCBhLnogPSAxLCAyLCAzCisgICAgICAgICAgICBkaWN0cy5hcHBlbmQoYS5fX2RpY3RfXykKKworICAgICAgICByZXR1cm4gZGljdHMKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfZGVsKHNlbGYpOgorICAgICAgICAiIiJzcGxpdCB0YWJsZSBtdXN0IGJlIGNvbWJpbmVkIHdoZW4gZGVsIGRba10iIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBvcmlnX3NpemUgPSBzeXMuZ2V0c2l6ZW9mKGEpCisKKyAgICAgICAgZGVsIGFbJ3knXSAgIyBzcGxpdCB0YWJsZSBpcyBjb21iaW5lZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGRlbCBhWyd5J10KKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihhKSwgb3JpZ19zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgICAgICMgVHdvIGRpY3RzIGhhdmUgZGlmZmVyZW50IGluc2VydGlvbiBvcmRlci4KKyAgICAgICAgYVsneSddID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneicsICd5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9wb3Aoc2VsZik6CisgICAgICAgICIiInNwbGl0IHRhYmxlIG11c3QgYmUgY29tYmluZWQgd2hlbiBkLnBvcChrKSIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIG9yaWdfc2l6ZSA9IHN5cy5nZXRzaXplb2YoYSkKKworICAgICAgICBhLnBvcCgneScpICAjIHNwbGl0IHRhYmxlIGlzIGNvbWJpbmVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgYS5wb3AoJ3knKQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKGEpLCBvcmlnX3NpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3onXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKKyAgICAgICAgIyBUd28gZGljdHMgaGF2ZSBkaWZmZXJlbnQgaW5zZXJ0aW9uIG9yZGVyLgorICAgICAgICBhWyd5J10gPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6JywgJ3knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX3BvcF9wZW5kaW5nKHNlbGYpOgorICAgICAgICAiIiJwb3AgYSBwZW5kaW5nIGtleSBpbiBhIHNwbGl0dGVkIHRhYmxlIHNob3VsZCBub3QgY3Jhc2giIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBhWydhJ10gPSA0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgYi5wb3AoJ2EnKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9wb3BpdGVtKHNlbGYpOgorICAgICAgICAiIiJzcGxpdCB0YWJsZSBtdXN0IGJlIGNvbWJpbmVkIHdoZW4gZC5wb3BpdGVtKCkiIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBvcmlnX3NpemUgPSBzeXMuZ2V0c2l6ZW9mKGEpCisKKyAgICAgICAgaXRlbSA9IGEucG9waXRlbSgpICAjIHNwbGl0IHRhYmxlIGlzIGNvbWJpbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbSwgKCd6JywgMykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGFbJ3onXQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKGEpLCBvcmlnX3NpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKICAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBkYXRhID0gezE6ImEiLCAyOiJiIiwgMzoiYyJ9CkBAIC05NjksNSArMTA0OSw2IEBACiBjbGFzcyBTdWJjbGFzc01hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CiAgICAgdHlwZTJ0ZXN0ID0gRGljdAogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdF92ZXJzaW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NzFmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weQpAQCAtMCwwICsxLDE4NiBAQAorIiIiCitUZXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQRVAgNTA5OiBkaWN0aW9uYXJ5IHZlcnNpb25uaW5nLgorIiIiCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisjIFBFUCA1MDkgaXMgaW1wbGVtZW50ZWQgaW4gQ1B5dGhvbiBidXQgb3RoZXIgUHl0aG9uIGltcGxlbWVudGF0aW9ucworIyBkb24ndCByZXF1aXJlIHRvIGltcGxlbWVudCBpdAorX3Rlc3RjYXBpID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQorCisKK2NsYXNzIERpY3RWZXJzaW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHR5cGUydGVzdCA9IGRpY3QKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zZWVuX3ZlcnNpb25zID0gc2V0KCkKKyAgICAgICAgc2VsZi5kaWN0ID0gTm9uZQorCisgICAgZGVmIGNoZWNrX3ZlcnNpb25fdW5pcXVlKHNlbGYsIG15ZGljdCk6CisgICAgICAgIHZlcnNpb24gPSBfdGVzdGNhcGkuZGljdF9nZXRfdmVyc2lvbihteWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odmVyc2lvbiwgc2VsZi5zZWVuX3ZlcnNpb25zKQorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMuYWRkKHZlcnNpb24pCisKKyAgICBkZWYgY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKHNlbGYsIG15ZGljdCwgbWV0aG9kLCAqYXJncywgKiprdyk6CisgICAgICAgIHJlc3VsdCA9IG1ldGhvZCgqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX3VuaXF1ZShteWRpY3QpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBjaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKHNlbGYsIG15ZGljdCwgbWV0aG9kLCAqYXJncywgKiprdyk6CisgICAgICAgIHZlcnNpb24xID0gX3Rlc3RjYXBpLmRpY3RfZ2V0X3ZlcnNpb24obXlkaWN0KQorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMuYWRkKHZlcnNpb24xKQorCisgICAgICAgIHJlc3VsdCA9IG1ldGhvZCgqYXJncywgKiprdykKKworICAgICAgICB2ZXJzaW9uMiA9IF90ZXN0Y2FwaS5kaWN0X2dldF92ZXJzaW9uKG15ZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uMiwgdmVyc2lvbjEsICJ2ZXJzaW9uIGNoYW5nZWQiKQorCisgICAgICAgIHJldHVybiAgcmVzdWx0CisKKyAgICBkZWYgbmV3X2RpY3Qoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBkID0gc2VsZi50eXBlMnRlc3QoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUoZCkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICAjIG5ldyBlbXB0eSBkaWN0aW9uYXJpZXMgbXVzdCBhbGwgaGF2ZSBhbiB1bmlxdWUgdmVyc2lvbgorICAgICAgICBlbXB0eTEgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgZW1wdHkyID0gc2VsZi5uZXdfZGljdCgpCisgICAgICAgIGVtcHR5MyA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgbm9uLWVtcHR5IGRpY3Rpb25hcmllcyBtdXN0IGFsc28gaGF2ZSBhbiB1bmlxdWUgdmVyc2lvbgorICAgICAgICBub25lbXB0eTEgPSBzZWxmLm5ld19kaWN0KHg9J3gnKQorICAgICAgICBub25lbXB0eTIgPSBzZWxmLm5ld19kaWN0KHg9J3gnLCB5PSd5JykKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGE9MSwgYj0yKQorCisgICAgICAgIGQyID0gc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIGQuY29weSkKKworICAgICAgICAjIGRpY3QuY29weSgpIG11c3QgY3JlYXRlIGEgZGljdGlvbmFyeSB3aXRoIGEgbmV3IHVuaXF1ZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUoZDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdCgpCisKKyAgICAgICAgIyBjcmVhdGluZyBuZXcga2V5cyBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneCcsICd4JykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3knLCAneScpCisKKyAgICAgICAgIyBjaGFuZ2luZyB2YWx1ZXMgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3gnLCAxKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneScsIDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtX3NhbWVfdmFsdWUoc2VsZik6CisgICAgICAgIHZhbHVlID0gb2JqZWN0KCkKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAna2V5JywgdmFsdWUpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIHRoZSBzYW1lIHZhbHVlIHdpdGggZGljdC5fX3NldGl0ZW1fXworICAgICAgICAjIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gdGhlIHNhbWUgdmFsdWUgd2l0aCBkaWN0LnVwZGF0ZQorICAgICAgICAjIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9dmFsdWUpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT12YWx1ZSkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGQyKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbV9lcXVhbChzZWxmKToKKyAgICAgICAgY2xhc3MgQWx3YXlzRXF1YWw6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHZhbHVlMSA9IEFsd2F5c0VxdWFsKCkKKyAgICAgICAgdmFsdWUyID0gQWx3YXlzRXF1YWwoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUxID09IHZhbHVlMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2YWx1ZTEgIT0gdmFsdWUyKQorCisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ2tleScsIHZhbHVlMSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gYSB2YWx1ZSBlcXVhbCB0byB0aGUgY3VycmVudCB2YWx1ZQorICAgICAgICAjIHdpdGggZGljdC5fX3NldGl0ZW1fXygpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZTIpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgIyB3aXRoIGRpY3QudXBkYXRlKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGtleT12YWx1ZTEpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT12YWx1ZTIpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgd2l0aCBkaWN0LnNldGRlZmF1bHQoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnNldGRlZmF1bHQsICdrZXknLCAndmFsdWUxJykKKworICAgICAgICAjIGRvbid0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLnNldGRlZmF1bHQsICdrZXknLCAndmFsdWUyJykKKworICAgIGRlZiB0ZXN0X2RlbGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgZGVsZXRpbmcgYSBrZXkgd2l0aCBkaWN0Ll9fZGVsaXRlbV9fKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX2RlbGl0ZW1fXywgJ2tleScpCisKKyAgICAgICAgIyBkb24ndCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBzZWxmLmFzc2VydFJhaXNlcywgS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLl9fZGVsaXRlbV9fLCAna2V5JykKKworICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBwb3AoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnBvcCwgJ2tleScpCisKKyAgICAgICAgIyBwb3AoKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdAorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgc2VsZi5hc3NlcnRSYWlzZXMsIEtleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wb3AsICdrZXknKQorCisgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBwb3BpdGVtKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgbm90IGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQucG9waXRlbSkKKworICAgICAgICAjIHBvcGl0ZW0oKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgZW1wdHkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIHNlbGYuYXNzZXJ0UmFpc2VzLCBLZXlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucG9waXRlbSkKKworICAgIGRlZiB0ZXN0X3VwZGF0ZShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyB1cGRhdGUoKSBjYWxsaW5nIHdpdGggbm8gYXJndW1lbnQgbXVzdCBub3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLnVwZGF0ZSkKKworICAgICAgICAjIHVwZGF0ZSgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9J25ldyB2YWx1ZScpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUgMycpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X2NsZWFyKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlJykKKworICAgICAgICAjIGNsZWFyKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgbm90IGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuY2xlYXIpCisKKyAgICAgICAgIyBjbGVhcigpIG11c3Qgbm90IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUgZGljdCBpcyBlbXB0eQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgZC5jbGVhcikKKworCitjbGFzcyBEaWN0KGRpY3QpOgorICAgIHBhc3MKKworCitjbGFzcyBEaWN0U3VidHlwZVZlcnNpb25UZXN0cyhEaWN0VmVyc2lvblRlc3RzKToKKyAgICB0eXBlMnRlc3QgPSBEaWN0CisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKaW5kZXggM2M4Yjk1Yy4uMDg3MzA3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKQEAgLTEsNyArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KICMgRm9yIHNjb3BlIHRlc3RpbmcuCiBnID0gIkdsb2JhbCB2YXJpYWJsZSIKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQppbmRleCAwYzk5NjUyLi40OWE5ZTljIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKIGltcG9ydCB1bml0dGVzdApAQCAtMjQ1LDYgKzI0NiwyNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpLAogICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcywgZC5pdGVtcygpLCBwcm90bykKIAorICAgIGRlZiB0ZXN0X2FiY19yZWdpc3RyeShzZWxmKToKKyAgICAgICAgZCA9IGRpY3QoYT0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuS2V5c1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuTWFwcGluZ1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuU2V0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLlNpemVkKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLkl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLkNvbnRhaW5lcikKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuVmFsdWVzVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQudmFsdWVzKCksIGNvbGxlY3Rpb25zLk1hcHBpbmdWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuU2l6ZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuSXRlbXNWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5NYXBwaW5nVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuU2V0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5TaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLkNvbnRhaW5lcikKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CmluZGV4IGFiOWRlYmYuLjE1NmI1MjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKQEAgLTEyMiwxNyArMTIyLDE3IEBACiAiIiIKIAogcGF0Y2g5MTQ1NzVfZnJvbTIgPSAiIiIKLVx0XHRMaW5lIDE6IHByZWNlZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCi0gIFx0XHRMaW5lIDI6IHByZWNlZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCi0gIFx0IFx0TGluZSAzOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCitcdFx0TGluZSAxOiBwcmVjZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCisgIFx0XHRMaW5lIDI6IHByZWNlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KKyAgXHQgXHRMaW5lIDM6IHByZWNlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQogTGluZSA0OiAgXHRoYXMgZnJvbTpbc3N0XSB0bzpbc3NzXSBhZnRlciA6CiBMaW5lIDU6IGhhcyBmcm9tOlt0XSB0bzpbc3NdIGF0IGVuZFx0CiAiIiIKIAogcGF0Y2g5MTQ1NzVfdG8yID0gIiIiCi0gICAgTGluZSAxOiBwcmVjZWVkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQotICAgIFx0TGluZSAyOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0dF0gdG86W3Nzc3N0XQotICAgICAgTGluZSAzOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCisgICAgTGluZSAxOiBwcmVjZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCisgICAgXHRMaW5lIDI6IHByZWNlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KKyAgICAgIExpbmUgMzogcHJlY2VkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCiBMaW5lIDQ6ICAgaGFzIGZyb206W3NzdF0gdG86W3Nzc10gYWZ0ZXIgOgogTGluZSA1OiBoYXMgZnJvbTpbdF0gdG86W3NzXSBhdCBlbmQKICIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCmluZGV4IGVhN2EyNGUuLjNlNmE3YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKQEAgLTM4Nyw5ICszODcsOSBAQAogICAgICAgICAKICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0IiBpZD0iZGlmZmxpYl9jaGdfdG85X18wIj48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzEiPjE8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fMCI+ZjwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CiAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV82Ij42PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs1OiZuYnNwO2hhcyZuYnNwO2Zyb206W3RdJm5ic3A7dG86W3NzXSZuYnNwO2F0Jm5ic3A7ZW5kPHNwYW4gY2xhc3M9ImRpZmZfc3ViIj4mbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzYiPjY8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzU6Jm5ic3A7aGFzJm5ic3A7ZnJvbTpbdF0mbmJzcDt0bzpbc3NdJm5ic3A7YXQmbmJzcDtlbmQ8L3RkPjwvdHI+CiAgICAgICAgIDwvdGJvZHk+CkBAIC00MDMsOSArNDAzLDkgQEAKICAgICAgICAgCiAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCIgaWQ9ImRpZmZsaWJfY2hnX3RvMTBfXzAiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8xIj4xPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KLSAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNSI+NTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NDombmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5oYXMmbmJzcDtmcm9tOltzc3RdJm5ic3A7dG86W3Nzc10mbmJzcDthZnRlciZuYnNwOzo8L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDxzcGFuIGNsYXNzPSJkaWZmX3N1YiI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDwvdGQ+PC90cj4KICAgICAgICAgPC90Ym9keT4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKaW5kZXggMGZkMTM0OC4uZjMxOTMzNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKQEAgLTQwLDQxICs0MCw0MSBAQAogCiBkaXNfY19pbnN0YW5jZV9tZXRob2QgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChzZWxmKQotICAgICAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgICA0IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKKyAgICAgICAgICAgICAgNiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoc2VsZikKKyAgICAgICAgICAgICAgOCBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAxMiBSRVRVUk5fVkFMVUUKICIiIiAlIChfQy5fX2luaXRfXy5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsKQogCiBkaXNfY19pbnN0YW5jZV9tZXRob2RfYnl0ZXMgPSAiIiJcCiAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICA0IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKKyAgICAgICAgICA2IExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQorICAgICAgICAgIDggU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEyIFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc19jX2NsYXNzX21ldGhvZCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoeCkKLSAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCi0gICAgICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGNscykKLSAgICAgICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAxOCBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDYgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGNscykKKyAgICAgICAgICAgICAgOCBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAxMiBSRVRVUk5fVkFMVUUKICIiIiAlIChfQy5jbS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDIsKQogCiBkaXNfY19zdGF0aWNfbWV0aG9kID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKLSAgICAgICAgICAgICAgOSBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAxNSBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDYgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoX0Muc20uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyLCkKIAogIyBDbGFzcyBkaXNhc3NlbWJsaW5nIGluZm8gaGFzIGFuIGV4dHJhIG5ld2xpbmUgYXQgZW5kLgpAQCAtOTUsMjMgKzk1LDIzIEBACiAKIGRpc19mID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChwcmludCkKLSAgICAgICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYSkKLSAgICAgICAgICAgICAgNiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKLSAgICAgICAgICAgICAgOSBQT1BfVE9QCisgICAgICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGEpCisgICAgICAgICAgICAgIDQgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgNiBQT1BfVE9QCiAKLSUzZCAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxMyBSRVRVUk5fVkFMVUUKKyUzZCAgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAxMCBSRVRVUk5fVkFMVUUKICIiIiAlIChfZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgX2YuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyKQogCiAKIGRpc19mX2NvX2NvZGUgPSAiIiJcCiAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgOSBQT1BfVE9QCi0gICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgIDEzIFJFVFVSTl9WQUxVRQorICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAgNCBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgIDYgUE9QX1RPUAorICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAxMCBSRVRVUk5fVkFMVUUKICIiIgogCiAKQEAgLTEyMSwyMCArMTIxLDIwIEBACiAgICAgICAgIHBhc3MKIAogZGlzX2J1ZzcwODkwMSA9ICIiIlwKLSUzZCAgICAgICAgICAgMCBTRVRVUF9MT09QICAgICAgICAgICAgICAyMyAodG8gMjYpCi0gICAgICAgICAgICAgIDMgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHJhbmdlKQotICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorJTNkICAgICAgICAgICAwIFNFVFVQX0xPT1AgICAgICAgICAgICAgIDE4ICh0byAyMCkKKyAgICAgICAgICAgICAgMiBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAocmFuZ2UpCisgICAgICAgICAgICAgIDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCiAKLSUzZCAgICAgICAgICAgOSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMTApCi0gICAgICAgICAgICAgMTIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIgKDIgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgICAgMTUgR0VUX0lURVIKLSAgICAgICAgPj4gICAxNiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNiAodG8gMjUpCi0gICAgICAgICAgICAgMTkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKKyUzZCAgICAgICAgICAgNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMTApCisgICAgICAgICAgICAgIDggQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIKKyAgICAgICAgICAgICAxMCBHRVRfSVRFUgorICAgICAgICA+PiAgIDEyIEZPUl9JVEVSICAgICAgICAgICAgICAgICA0ICh0byAxOCkKKyAgICAgICAgICAgICAxNCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAocmVzKQogCi0lM2QgICAgICAgICAgMjIgSlVNUF9BQlNPTFVURSAgICAgICAgICAgMTYKLSAgICAgICAgPj4gICAyNSBQT1BfQkxPQ0sKLSAgICAgICAgPj4gICAyNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAyOSBSRVRVUk5fVkFMVUUKKyUzZCAgICAgICAgICAxNiBKVU1QX0FCU09MVVRFICAgICAgICAgICAxMgorICAgICAgICA+PiAgIDE4IFBPUF9CTE9DSworICAgICAgICA+PiAgIDIwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDIyIFJFVFVSTl9WQUxVRQogIiIiICUgKGJ1ZzcwODkwMS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgYnVnNzA4OTAxLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMiwKICAgICAgICBidWc3MDg5MDEuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAzKQpAQCAtMTQ3LDIyICsxNDcsMjIgQEAKIAogZGlzX2J1ZzEzMzM5ODIgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDApCi0gICAgICAgICAgICAgIDMgUE9QX0pVTVBfSUZfVFJVRSAgICAgICAgMzUKLSAgICAgICAgICAgICAgNiBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoQXNzZXJ0aW9uRXJyb3IpCi0gICAgICAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDxjb2RlIG9iamVjdCA8bGlzdGNvbXA+IGF0IDB4Li4uLCBmaWxlICIlcyIsIGxpbmUgJWQ+KQotICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAzICgnYnVnMTMzMzk4Mi48bG9jYWxzPi48bGlzdGNvbXA+JykKLSAgICAgICAgICAgICAxNSBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAgMAotICAgICAgICAgICAgIDE4IExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDIxIEdFVF9JVEVSCi0gICAgICAgICAgICAgMjIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCisgICAgICAgICAgICAgIDIgUE9QX0pVTVBfSUZfVFJVRSAgICAgICAgMjYKKyAgICAgICAgICAgICAgNCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoQXNzZXJ0aW9uRXJyb3IpCisgICAgICAgICAgICAgIDYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDxjb2RlIG9iamVjdCA8bGlzdGNvbXA+IGF0IDB4Li4uLCBmaWxlICIlcyIsIGxpbmUgJWQ+KQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAzICgnYnVnMTMzMzk4Mi48bG9jYWxzPi48bGlzdGNvbXA+JykKKyAgICAgICAgICAgICAxMCBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAgMAorICAgICAgICAgICAgIDEyIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgIDE0IEdFVF9JVEVSCisgICAgICAgICAgICAgMTYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKIAotJTNkICAgICAgICAgIDI1IExPQURfQ09OU1QgICAgICAgICAgICAgICA0ICgxKQotICAgICAgICAgICAgIDI4IEJJTkFSWV9BREQKLSAgICAgICAgICAgICAyOSBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKLSAgICAgICAgICAgICAzMiBSQUlTRV9WQVJBUkdTICAgICAgICAgICAgMQorJTNkICAgICAgICAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICA0ICgxKQorICAgICAgICAgICAgIDIwIEJJTkFSWV9BREQKKyAgICAgICAgICAgICAyMiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgIDI0IFJBSVNFX1ZBUkFSR1MgICAgICAgICAgICAxCiAKLSUzZCAgICAgPj4gICAzNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAzOCBSRVRVUk5fVkFMVUUKKyUzZCAgICAgPj4gICAyNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAyOCBSRVRVUk5fVkFMVUUKICIiIiAlIChidWcxMzMzOTgyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwKICAgICAgICBfX2ZpbGVfXywKICAgICAgICBidWcxMzMzOTgyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwKQEAgLTE3MSwxOSArMTcxLDE5IEBACiAKIF9CSUdfTElORU5PX0ZPUk1BVCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoc3BhbSkKLSAgICAgICAgICAgICAgMyBQT1BfVE9QCisgICAgICAgICAgICAgIDIgUE9QX1RPUAogICAgICAgICAgICAgICA0IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgICA3IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICA2IFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc19tb2R1bGVfZXhwZWN0ZWRfcmVzdWx0cyA9ICIiIlwKIERpc2Fzc2VtYmx5IG9mIGY6CiAgIDQgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgIDMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgUkVUVVJOX1ZBTFVFCiAKIERpc2Fzc2VtYmx5IG9mIGc6CiAgIDUgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgIDMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgUkVUVVJOX1ZBTFVFCiAKICIiIgogCkBAIC0xOTEsMjAgKzE5MSw1MiBAQAogCiBkaXNfZXhwcl9zdHIgPSAiIiJcCiAgIDEgICAgICAgICAgIDAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCi0gICAgICAgICAgICAgIDYgQklOQVJZX0FERAotICAgICAgICAgICAgICA3IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgICA0IEJJTkFSWV9BREQKKyAgICAgICAgICAgICAgNiBSRVRVUk5fVkFMVUUKICIiIgogCiBzaW1wbGVfc3RtdF9zdHIgPSAieCA9IHggKyAxIgogCiBkaXNfc2ltcGxlX3N0bXRfc3RyID0gIiIiXAogICAxICAgICAgICAgICAwIExPQURfTkFNRSAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQotICAgICAgICAgICAgICA2IEJJTkFSWV9BREQKLSAgICAgICAgICAgICAgNyBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoTm9uZSkKLSAgICAgICAgICAgICAxMyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAgNCBCSU5BUllfQURECisgICAgICAgICAgICAgIDYgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKE5vbmUpCisgICAgICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCisiIiIKKworYW5ub3Rfc3RtdF9zdHIgPSAiIiJcCisKK3g6IGludCA9IDEKK3k6IGZ1bigxKQorbHN0W2Z1bigwKV06IGludCA9IDEKKyIiIgorIyBsZWFkaW5nIG5ld2xpbmUgaXMgZm9yIGEgcmVhc29uICh0ZXN0cyBsaW5lbm8pCisKK2Rpc19hbm5vdF9zdG10X3N0ciA9ICIiIlwKKyAgMiAgICAgICAgICAgMCBTRVRVUF9BTk5PVEFUSU9OUworICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgICA0IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICA2IExPQURfTkFNRSAgICAgICAgICAgICAgICAxIChpbnQpCisgICAgICAgICAgICAgIDggU1RPUkVfQU5OT1RBVElPTiAgICAgICAgIDAgKHgpCisKKyAgMyAgICAgICAgICAxMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMiAoZnVuKQorICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgIDE0IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgMTYgU1RPUkVfQU5OT1RBVElPTiAgICAgICAgIDMgKHkpCisKKyAgNCAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAyMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgNCAobHN0KQorICAgICAgICAgICAgIDIyIExPQURfTkFNRSAgICAgICAgICAgICAgICAyIChmdW4pCisgICAgICAgICAgICAgMjQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDApCisgICAgICAgICAgICAgMjYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAyOCBTVE9SRV9TVUJTQ1IKKyAgICAgICAgICAgICAzMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMSAoaW50KQorICAgICAgICAgICAgIDMyIFBPUF9UT1AKKyAgICAgICAgICAgICAzNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoTm9uZSkKKyAgICAgICAgICAgICAzNiBSRVRVUk5fVkFMVUUKICIiIgogCiBjb21wb3VuZF9zdG10X3N0ciA9ICIiIlwKQEAgLTIxNSw1NCArMjQ3LDU0IEBACiAKIGRpc19jb21wb3VuZF9zdG10X3N0ciA9ICIiIlwKICAgMSAgICAgICAgICAgMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgICAgICAgMyBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAgMiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKIAotICAyICAgICAgICAgICA2IFNFVFVQX0xPT1AgICAgICAgICAgICAgIDE0ICh0byAyMykKKyAgMiAgICAgICAgICAgNCBTRVRVUF9MT09QICAgICAgICAgICAgICAxMiAodG8gMTgpCiAKLSAgMyAgICAgPj4gICAgOSBMT0FEX05BTUUgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxNSBJTlBMQUNFX0FERAotICAgICAgICAgICAgIDE2IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDE5IEpVTVBfQUJTT0xVVEUgICAgICAgICAgICA5Ci0gICAgICAgICAgICAgMjIgUE9QX0JMT0NLCi0gICAgICAgID4+ICAgMjMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKE5vbmUpCi0gICAgICAgICAgICAgMjYgUkVUVVJOX1ZBTFVFCisgIDMgICAgID4+ICAgIDYgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgMTAgSU5QTEFDRV9BREQKKyAgICAgICAgICAgICAxMiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxNCBKVU1QX0FCU09MVVRFICAgICAgICAgICAgNgorICAgICAgICAgICAgIDE2IFBPUF9CTE9DSworICAgICAgICA+PiAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICAyIChOb25lKQorICAgICAgICAgICAgIDIwIFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc190cmFjZWJhY2sgPSAiIiJcCi0lM2QgICAgICAgICAgIDAgU0VUVVBfRVhDRVBUICAgICAgICAgICAgMTIgKHRvIDE1KQorJTNkICAgICAgICAgICAwIFNFVFVQX0VYQ0VQVCAgICAgICAgICAgIDEyICh0byAxNCkKIAotJTNkICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgwKQotICAgIC0tPiAgICAgICA5IEJJTkFSWV9UUlVFX0RJVklERQotICAgICAgICAgICAgIDEwIFBPUF9UT1AKLSAgICAgICAgICAgICAxMSBQT1BfQkxPQ0sKLSAgICAgICAgICAgICAxMiBKVU1QX0ZPUldBUkQgICAgICAgICAgICA0NiAodG8gNjEpCislM2QgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgIDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDApCisgICAgLS0+ICAgICAgIDYgQklOQVJZX1RSVUVfRElWSURFCisgICAgICAgICAgICAgIDggUE9QX1RPUAorICAgICAgICAgICAgIDEwIFBPUF9CTE9DSworICAgICAgICAgICAgIDEyIEpVTVBfRk9SV0FSRCAgICAgICAgICAgIDQwICh0byA1NCkKIAotJTNkICAgICA+PiAgIDE1IERVUF9UT1AKKyUzZCAgICAgPj4gICAxNCBEVVBfVE9QCiAgICAgICAgICAgICAgMTYgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKEV4Y2VwdGlvbikKLSAgICAgICAgICAgICAxOSBDT01QQVJFX09QICAgICAgICAgICAgICAxMCAoZXhjZXB0aW9uIG1hdGNoKQotICAgICAgICAgICAgIDIyIFBPUF9KVU1QX0lGX0ZBTFNFICAgICAgIDYwCi0gICAgICAgICAgICAgMjUgUE9QX1RPUAotICAgICAgICAgICAgIDI2IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChlKQotICAgICAgICAgICAgIDI5IFBPUF9UT1AKLSAgICAgICAgICAgICAzMCBTRVRVUF9GSU5BTExZICAgICAgICAgICAxNCAodG8gNDcpCisgICAgICAgICAgICAgMTggQ09NUEFSRV9PUCAgICAgICAgICAgICAgMTAgKGV4Y2VwdGlvbiBtYXRjaCkKKyAgICAgICAgICAgICAyMCBQT1BfSlVNUF9JRl9GQUxTRSAgICAgICA1MgorICAgICAgICAgICAgIDIyIFBPUF9UT1AKKyAgICAgICAgICAgICAyNCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKKyAgICAgICAgICAgICAyNiBQT1BfVE9QCisgICAgICAgICAgICAgMjggU0VUVVBfRklOQUxMWSAgICAgICAgICAgMTIgKHRvIDQyKQogCi0lM2QgICAgICAgICAgMzMgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGUpCi0gICAgICAgICAgICAgMzYgTE9BRF9BVFRSICAgICAgICAgICAgICAgIDEgKF9fdHJhY2ViYWNrX18pCi0gICAgICAgICAgICAgMzkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDEgKHRiKQotICAgICAgICAgICAgIDQyIFBPUF9CTE9DSwotICAgICAgICAgICAgIDQzIFBPUF9FWENFUFQKLSAgICAgICAgICAgICA0NCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgPj4gICA0NyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICA1MCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICA1MyBERUxFVEVfRkFTVCAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICA1NiBFTkRfRklOQUxMWQotICAgICAgICAgICAgIDU3IEpVTVBfRk9SV0FSRCAgICAgICAgICAgICAxICh0byA2MSkKLSAgICAgICAgPj4gICA2MCBFTkRfRklOQUxMWQorJTNkICAgICAgICAgIDMwIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChlKQorICAgICAgICAgICAgIDMyIExPQURfQVRUUiAgICAgICAgICAgICAgICAxIChfX3RyYWNlYmFja19fKQorICAgICAgICAgICAgIDM0IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAxICh0YikKKyAgICAgICAgICAgICAzNiBQT1BfQkxPQ0sKKyAgICAgICAgICAgICAzOCBQT1BfRVhDRVBUCisgICAgICAgICAgICAgNDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgID4+ICAgNDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgNDQgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgNDYgREVMRVRFX0ZBU1QgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgNDggRU5EX0ZJTkFMTFkKKyAgICAgICAgICAgICA1MCBKVU1QX0ZPUldBUkQgICAgICAgICAgICAgMiAodG8gNTQpCisgICAgICAgID4+ICAgNTIgRU5EX0ZJTkFMTFkKIAotJTNkICAgICA+PiAgIDYxIExPQURfRkFTVCAgICAgICAgICAgICAgICAxICh0YikKLSAgICAgICAgICAgICA2NCBSRVRVUk5fVkFMVUUKKyUzZCAgICAgPj4gICA1NCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAodGIpCisgICAgICAgICAgICAgNTYgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyAxLAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgMiwKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDMsCkBAIC0zNDUsNiArMzc3LDcgQEAKICAgICBkZWYgdGVzdF9kaXNhc3NlbWJsZV9zdHIoc2VsZik6CiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChleHByX3N0ciwgZGlzX2V4cHJfc3RyKQogICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3Qoc2ltcGxlX3N0bXRfc3RyLCBkaXNfc2ltcGxlX3N0bXRfc3RyKQorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoYW5ub3Rfc3RtdF9zdHIsIGRpc19hbm5vdF9zdG10X3N0cikKICAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KGNvbXBvdW5kX3N0bXRfc3RyLCBkaXNfY29tcG91bmRfc3RtdF9zdHIpCiAKICAgICBkZWYgdGVzdF9kaXNhc3NlbWJsZV9ieXRlcyhzZWxmKToKQEAgLTU0MSw3ICs1NzQsNyBAQAogS3ctb25seSBhcmd1bWVudHM6IDAKIE51bWJlciBvZiBsb2NhbHM6ICAyCiBTdGFjayBzaXplOiAgICAgICAgMTcKLUZsYWdzOiAgICAgICAgICAgICBPUFRJTUlaRUQsIE5FV0xPQ0FMUywgR0VORVJBVE9SLCBOT0ZSRUUsIENPUk9VVElORQorRmxhZ3M6ICAgICAgICAgICAgIE9QVElNSVpFRCwgTkVXTE9DQUxTLCBOT0ZSRUUsIENPUk9VVElORQogQ29uc3RhbnRzOgogICAgMDogTm9uZQogICAgMTogMSIiIgpAQCAtNjQ5LDE3MSArNjgyLDE2OSBAQAogCiBJbnN0cnVjdGlvbiA9IGRpcy5JbnN0cnVjdGlvbgogZXhwZWN0ZWRfb3BpbmZvX291dGVyID0gWwotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MSwgYXJndmFsPTMsIGFyZ3JlcHI9JzMnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfVFVQTEUnLCBvcGNvZGU9MTAyLCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPWNvZGVfb2JqZWN0X2YsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9mKSwgb2Zmc2V0PTE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J291dGVyLjxsb2NhbHM+LmYnLCBhcmdyZXByPSInb3V0ZXIuPGxvY2Fscz4uZiciLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdNQUtFX0NMT1NVUkUnLCBvcGNvZGU9MTM0LCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD0yMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MiwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yNywgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0zMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPScnLCBhcmdyZXByPSInJyIsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9MSVNUJywgb3Bjb2RlPTEwMywgYXJnPTAsIGFyZ3ZhbD0wLCBhcmdyZXByPScnLCBvZmZzZXQ9NDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9NQVAnLCBvcGNvZGU9MTA1LCBhcmc9MCwgYXJndmFsPTAsIGFyZ3JlcHI9JycsIG9mZnNldD00NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPSdIZWxsbyB3b3JsZCEnLCBhcmdyZXByPSInSGVsbG8gd29ybGQhJyIsIG9mZnNldD00OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NywgYXJndmFsPTcsIGFyZ3JlcHI9JzcgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9NTUsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9KDMsIDQpLCBhcmdyZXByPScoMywgNCknLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD00LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfVFVQTEUnLCBvcGNvZGU9MTAyLCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfZiwgYXJncmVwcj1yZXByKGNvZGVfb2JqZWN0X2YpLCBvZmZzZXQ9OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYnIiwgb2Zmc2V0PTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9GVU5DVElPTicsIG9wY29kZT0xMzIsIGFyZz05LCBhcmd2YWw9OSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9JycsIGFyZ3JlcHI9IicnIiwgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX0xJU1QnLCBvcGNvZGU9MTAzLCBhcmc9MCwgYXJndmFsPTAsIGFyZ3JlcHI9JycsIG9mZnNldD0yNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX01BUCcsIG9wY29kZT0xMDUsIGFyZz0wLCBhcmd2YWw9MCwgYXJncmVwcj0nJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9J0hlbGxvIHdvcmxkIScsIGFyZ3JlcHI9IidIZWxsbyB3b3JsZCEnIiwgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz03LCBhcmd2YWw9NywgYXJncmVwcj0nJywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiBleHBlY3RlZF9vcGluZm9fZiA9IFsKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD01LCBhcmdyZXByPSc1Jywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTMsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9MTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9UVVBMRScsIG9wY29kZT0xMDIsIGFyZz00LCBhcmd2YWw9NCwgYXJncmVwcj0nJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfaW5uZXIsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9pbm5lciksIG9mZnNldD0yMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mLjxsb2NhbHM+LmlubmVyJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInIiwgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9DTE9TVVJFJywgb3Bjb2RlPTEzNCwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9MjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0zMywgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0zOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD00Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD00NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JzQgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD01Miwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0oNSwgNiksIGFyZ3JlcHI9Jyg1LCA2KScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTIsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0zLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX1RVUExFJywgb3Bjb2RlPTEwMiwgYXJnPTQsIGFyZ3ZhbD00LCBhcmdyZXByPScnLCBvZmZzZXQ9MTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD1jb2RlX29iamVjdF9pbm5lciwgYXJncmVwcj1yZXByKGNvZGVfb2JqZWN0X2lubmVyKSwgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInLCBhcmdyZXByPSInb3V0ZXIuPGxvY2Fscz4uZi48bG9jYWxzPi5pbm5lciciLCBvZmZzZXQ9MTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdNQUtFX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMiwgYXJnPTksIGFyZ3ZhbD05LCBhcmdyZXByPScnLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yMCwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD0yNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JycsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MiwgYXJndmFsPSdpbm5lcicsIGFyZ3JlcHI9J2lubmVyJywgb2Zmc2V0PTM0LCBzdGFydHNfbGluZT02LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiBleHBlY3RlZF9vcGluZm9faW5uZXIgPSBbCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0yLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTMsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdlJywgYXJncmVwcj0nZScsIG9mZnNldD0xNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0xLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz02LCBhcmd2YWw9NiwgYXJncmVwcj0nNiBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTI1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTIsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD04LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0nZScsIGFyZ3JlcHI9J2UnLCBvZmZzZXQ9MTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MSwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NiwgYXJndmFsPTYsIGFyZ3JlcHI9JycsIG9mZnNldD0xNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiBleHBlY3RlZF9vcGluZm9fanVtcHkgPSBbCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz02OCwgYXJndmFsPTcxLCBhcmdyZXByPSd0byA3MScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdyYW5nZScsIGFyZ3JlcHI9J3JhbmdlJywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nMTAnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0dFVF9JVEVSJywgb3Bjb2RlPTY4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0ZPUl9JVEVSJywgb3Bjb2RlPTkzLCBhcmc9NDQsIGFyZ3ZhbD02MCwgYXJncmVwcj0ndG8gNjAnLCBvZmZzZXQ9MTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xOSwgc3RhcnRzX2xpbmU9NCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yOSwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz00NCwgYXJndmFsPTQ0LCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD00MSwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTQ0LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTQ3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTUzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTYsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD01Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD02MSwgc3RhcnRzX2xpbmU9MTAsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nSSBjYW4gaGF6IGVsc2UgY2xhdXNlPycsIGFyZ3JlcHI9IidJIGNhbiBoYXogZWxzZSBjbGF1c2U/JyIsIG9mZnNldD02NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz02OCwgYXJndmFsPTE0MiwgYXJncmVwcj0ndG8gMTQyJywgb2Zmc2V0PTcxLCBzdGFydHNfbGluZT0xMSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEzMSwgYXJndmFsPTEzMSwgYXJncmVwcj0nJywgb2Zmc2V0PTc3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTgwLCBzdGFydHNfbGluZT0xMiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTgzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD04Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9ODksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD05MCwgc3RhcnRzX2xpbmU9MTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTkzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSU5QTEFDRV9TVUJUUkFDVCcsIG9wY29kZT01NiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9OTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMDAsIHN0YXJ0c19saW5lPTE0LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD0xMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9MTA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTE1LCBhcmd2YWw9MTE1LCBhcmdyZXByPScnLCBvZmZzZXQ9MTA5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTEyLCBzdGFydHNfbGluZT0xNSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTExNSwgc3RhcnRzX2xpbmU9MTYsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTEyMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjcsIHN0YXJ0c19saW5lPTE3LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xMzIsIHN0YXJ0c19saW5lPTE5LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9J1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nLCBhcmdyZXByPSInV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPyciLCBvZmZzZXQ9MTM1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xMzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0ZJTkFMTFknLCBvcGNvZGU9MTIyLCBhcmc9NzMsIGFyZ3ZhbD0yMTgsIGFyZ3JlcHI9J3RvIDIxOCcsIG9mZnNldD0xNDIsIHN0YXJ0c19saW5lPTIwLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9FWENFUFQnLCBvcGNvZGU9MTIxLCBhcmc9MTIsIGFyZ3ZhbD0xNjAsIGFyZ3JlcHI9J3RvIDE2MCcsIG9mZnNldD0xNDUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTE0OCwgc3RhcnRzX2xpbmU9MjEsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0wLCBhcmdyZXByPScwJywgb2Zmc2V0PTE1MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JJTkFSWV9UUlVFX0RJVklERScsIG9wY29kZT0yNywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yOCwgYXJndmFsPTE4OCwgYXJncmVwcj0ndG8gMTg4Jywgb2Zmc2V0PTE1Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0RVUF9UT1AnLCBvcGNvZGU9NCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTYwLCBzdGFydHNfbGluZT0yMiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MiwgYXJndmFsPSdaZXJvRGl2aXNpb25FcnJvcicsIGFyZ3JlcHI9J1plcm9EaXZpc2lvbkVycm9yJywgb2Zmc2V0PTE2MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MTAsIGFyZ3ZhbD0nZXhjZXB0aW9uIG1hdGNoJywgYXJncmVwcj0nZXhjZXB0aW9uIG1hdGNoJywgb2Zmc2V0PTE2NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTE4NywgYXJndmFsPTE4NywgYXJncmVwcj0nJywgb2Zmc2V0PTE2Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNzMsIHN0YXJ0c19saW5lPTIzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9J0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nLCBhcmdyZXByPSInSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLiciLCBvZmZzZXQ9MTc2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xNzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9FWENFUFQnLCBvcGNvZGU9ODksIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yNywgYXJndmFsPTIxNCwgYXJncmVwcj0ndG8gMjE0Jywgb2Zmc2V0PTE4NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE4OCwgc3RhcnRzX2xpbmU9MjUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX1dJVEgnLCBvcGNvZGU9MTQzLCBhcmc9MTcsIGFyZ3ZhbD0yMTEsIGFyZ3JlcHI9J3RvIDIxMScsIG9mZnNldD0xOTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTEsIGFyZ3ZhbD0nZG9kZ3knLCBhcmdyZXByPSdkb2RneScsIG9mZnNldD0xOTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTk3LCBzdGFydHNfbGluZT0yNiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OSwgYXJndmFsPSdOZXZlciByZWFjaCB0aGlzJywgYXJncmVwcj0iJ05ldmVyIHJlYWNoIHRoaXMnIiwgb2Zmc2V0PTIwMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjAzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjA4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX1NUQVJUJywgb3Bjb2RlPTgxLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9GSU5JU0gnLCBvcGNvZGU9ODIsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjE4LCBzdGFydHNfbGluZT0yOCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xMCwgYXJndmFsPSJPSywgbm93IHdlJ3JlIGRvbmUiLCBhcmdyZXByPSciT0ssIG5vdyB3ZVwncmUgZG9uZSInLCBvZmZzZXQ9MjIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIyOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz01MiwgYXJndmFsPTU0LCBhcmdyZXByPSd0byA1NCcsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdyYW5nZScsIGFyZ3JlcHI9J3JhbmdlJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nMTAnLCBvZmZzZXQ9NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nR0VUX0lURVInLCBvcGNvZGU9NjgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdGT1JfSVRFUicsIG9wY29kZT05MywgYXJnPTMyLCBhcmd2YWw9NDQsIGFyZ3JlcHI9J3RvIDQ0Jywgb2Zmc2V0PTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTQsIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0zMiwgYXJndmFsPTMyLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEwLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JycsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTM0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTAsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nJywgb2Zmc2V0PTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NDAsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEwLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JycsIG9mZnNldD00Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NDQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD00Niwgc3RhcnRzX2xpbmU9MTAsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nSSBjYW4gaGF6IGVsc2UgY2xhdXNlPycsIGFyZ3JlcHI9IidJIGNhbiBoYXogZWxzZSBjbGF1c2U/JyIsIG9mZnNldD00OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD01MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTUyLCBhcmd2YWw9MTA4LCBhcmdyZXByPSd0byAxMDgnLCBvZmZzZXQ9NTQsIHN0YXJ0c19saW5lPTExLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD01Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9OTgsIGFyZ3ZhbD05OCwgYXJncmVwcj0nJywgb2Zmc2V0PTU4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTYwLCBzdGFydHNfbGluZT0xMiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTYyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD02Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTY4LCBzdGFydHNfbGluZT0xMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9NzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdJTlBMQUNFX1NVQlRSQUNUJywgb3Bjb2RlPTU2LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD03Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD03NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTc2LCBzdGFydHNfbGluZT0xNCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9NzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9ODAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz04NiwgYXJndmFsPTg2LCBhcmdyZXByPScnLCBvZmZzZXQ9ODIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTU2LCBhcmd2YWw9NTYsIGFyZ3JlcHI9JycsIG9mZnNldD04NCwgc3RhcnRzX2xpbmU9MTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD04Niwgc3RhcnRzX2xpbmU9MTYsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9ODgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9OTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz01NiwgYXJndmFsPTU2LCBhcmdyZXByPScnLCBvZmZzZXQ9OTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05NCwgc3RhcnRzX2xpbmU9MTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTU2LCBhcmd2YWw9NTYsIGFyZ3JlcHI9JycsIG9mZnNldD05Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xMDAsIHN0YXJ0c19saW5lPTE5LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9J1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nLCBhcmdyZXByPSInV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPyciLCBvZmZzZXQ9MTAyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTEwNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRklOQUxMWScsIG9wY29kZT0xMjIsIGFyZz03MCwgYXJndmFsPTE4MCwgYXJncmVwcj0ndG8gMTgwJywgb2Zmc2V0PTEwOCwgc3RhcnRzX2xpbmU9MjAsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0VYQ0VQVCcsIG9wY29kZT0xMjEsIGFyZz0xMiwgYXJndmFsPTEyNCwgYXJncmVwcj0ndG8gMTI0Jywgb2Zmc2V0PTExMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MTEyLCBzdGFydHNfbGluZT0yMSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPTAsIGFyZ3JlcHI9JzAnLCBvZmZzZXQ9MTE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQklOQVJZX1RSVUVfRElWSURFJywgb3Bjb2RlPTI3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTExOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI4LCBhcmd2YWw9MTUyLCBhcmdyZXByPSd0byAxNTInLCBvZmZzZXQ9MTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRFVQX1RPUCcsIG9wY29kZT00LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjQsIHN0YXJ0c19saW5lPTIyLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0yLCBhcmd2YWw9J1plcm9EaXZpc2lvbkVycm9yJywgYXJncmVwcj0nWmVyb0RpdmlzaW9uRXJyb3InLCBvZmZzZXQ9MTI2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0xMCwgYXJndmFsPSdleGNlcHRpb24gbWF0Y2gnLCBhcmdyZXByPSdleGNlcHRpb24gbWF0Y2gnLCBvZmZzZXQ9MTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTUwLCBhcmd2YWw9MTUwLCBhcmdyZXByPScnLCBvZmZzZXQ9MTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTEzOCwgc3RhcnRzX2xpbmU9MjMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTgsIGFyZ3ZhbD0nSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLicsIGFyZ3JlcHI9IidIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJyIsIG9mZnNldD0xNDAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfRVhDRVBUJywgb3Bjb2RlPTg5LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjYsIGFyZ3ZhbD0xNzYsIGFyZ3JlcHI9J3RvIDE3NicsIG9mZnNldD0xNDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xNTIsIHN0YXJ0c19saW5lPTI1LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9XSVRIJywgb3Bjb2RlPTE0MywgYXJnPTE0LCBhcmd2YWw9MTcwLCBhcmdyZXByPSd0byAxNzAnLCBvZmZzZXQ9MTU0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0xLCBhcmd2YWw9J2RvZGd5JywgYXJncmVwcj0nZG9kZ3knLCBvZmZzZXQ9MTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE1OCwgc3RhcnRzX2xpbmU9MjYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTksIGFyZ3ZhbD0nTmV2ZXIgcmVhY2ggdGhpcycsIGFyZ3JlcHI9IidOZXZlciByZWFjaCB0aGlzJyIsIG9mZnNldD0xNjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTYyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MTY4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX1NUQVJUJywgb3Bjb2RlPTgxLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9GSU5JU0gnLCBvcGNvZGU9ODIsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0xNzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTgwLCBzdGFydHNfbGluZT0yOCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xMCwgYXJndmFsPSJPSywgbm93IHdlJ3JlIGRvbmUiLCBhcmdyZXByPSciT0ssIG5vdyB3ZVwncmUgZG9uZSInLCBvZmZzZXQ9MTgyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MTkwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xOTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogIyBPbmUgbGFzdCBwaWVjZSBvZiBpbnNwZWN0IGZvZGRlciB0byBjaGVjayB0aGUgZGVmYXVsdCBsaW5lIG51bWJlciBoYW5kbGluZwogZGVmIHNpbXBsZSgpOiBwYXNzCiBleHBlY3RlZF9vcGluZm9fc2ltcGxlID0gWwogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9c2ltcGxlLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSkKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKQogXQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQppbmRleCAzMzE2M2I5Li4yMjU4YzZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CkBAIC0yOTEsNyArMjkxLDcgQEAKICAgICAuLi4KICAgICAuLi4gTm9uLWV4YW1wbGUgdGV4dC4KICAgICAuLi4KLSAgICAuLi4gICAgID4+PiBwcmludCgnYW5vdGhlclxleGFtcGxlJykKKyAgICAuLi4gICAgID4+PiBwcmludCgnYW5vdGhlclxcZXhhbXBsZScpCiAgICAgLi4uICAgICBhbm90aGVyCiAgICAgLi4uICAgICBleGFtcGxlCiAgICAgLi4uICcnJwpAQCAtMTg3Niw3ICsxODc2LDYgQEAKICAgICAgICAgVG8gZGVtb25zdHJhdGUgdGhpcywgd2UnbGwgY3JlYXRlIGEgZmFrZSBzdGFuZGFyZCBpbnB1dCB0aGF0CiAgICAgICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKIAotICAgICAgICAgID4+PiBpbXBvcnQgdGVtcGZpbGUKICAgICAgICAgICA+Pj4gcmVhbF9zdGRpbiA9IHN5cy5zdGRpbgogICAgICAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKICAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCkBAIC0xOTE3LDcgKzE5MTYsNyBAQAogICAgICAgICAgIC4uLiBmaW5hbGx5OgogICAgICAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgogICAgICAgICAgIC0tUmV0dXJuLS0KLSAgICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZVs4XT4oMyljYWxsc19zZXRfdHJhY2UoKS0+Tm9uZQorICAgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlWzddPigzKWNhbGxzX3NldF90cmFjZSgpLT5Ob25lCiAgICAgICAgICAgLT4gaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCiAgICAgICAgICAgKFBkYikgcHJpbnQoeSkKICAgICAgICAgICAyCkBAIC0yNzk4LDcgKzI3OTcsNiBAQAogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCIgICAgICAgJ2FiYyBkZWYnXG4iKQogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCJcbiIpCiAgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJyAgIFwiXCJcIlxuJykKLSAgICAuLi4gICAgIGltcG9ydCBzaHV0aWwKICAgICAuLi4gICAgIHJjMSwgb3V0MSwgZXJyMSA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKAogICAgIC4uLiAgICAgICAgICAgICAnLW0nLCAnZG9jdGVzdCcsIGZuLCBmbjIpCiAgICAgLi4uICAgICByYzIsIG91dDIsIGVycjIgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soCkBAIC0yOTQyLDEyICsyOTQwLDExIEBACiBkZWYgdGVzdF9tYWluKCk6CiAgICAgIyBDaGVjayB0aGUgZG9jdGVzdCBjYXNlcyBpbiBkb2N0ZXN0IGl0c2VsZjoKICAgICByZXQgPSBzdXBwb3J0LnJ1bl9kb2N0ZXN0KGRvY3Rlc3QsIHZlcmJvc2l0eT1UcnVlKQorCiAgICAgIyBDaGVjayB0aGUgZG9jdGVzdCBjYXNlcyBkZWZpbmVkIGhlcmU6CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2RvY3Rlc3QKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfZG9jdGVzdCwgdmVyYm9zaXR5PVRydWUpCiAKLWltcG9ydCBzeXMsIHJlLCBpbwotCiBkZWYgdGVzdF9jb3ZlcmFnZShjb3ZlcmRpcik6CiAgICAgdHJhY2UgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3RyYWNlJykKICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMuYmFzZV9wcmVmaXgsIHN5cy5iYXNlX2V4ZWNfcHJlZml4LF0sCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3RfZHRyYWNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMjM5YjMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2R0cmFjZS5weQpAQCAtMCwwICsxLDE3OCBAQAoraW1wb3J0IGRpcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgcnVuX3VuaXR0ZXN0CisKKworZGVmIGFic3BhdGgoZmlsZW5hbWUpOgorICAgIHJldHVybiBvcy5wYXRoLmFic3BhdGgoZmluZGZpbGUoZmlsZW5hbWUsIHN1YmRpcj0iZHRyYWNlZGF0YSIpKQorCisKK2RlZiBub3JtYWxpemVfdHJhY2Vfb3V0cHV0KG91dHB1dCk6CisgICAgIiIiTm9ybWFsaXplIERUcmFjZSBvdXRwdXQgZm9yIGNvbXBhcmlzb24uCisKKyAgICBEVHJhY2Uga2VlcHMgYSBwZXItQ1BVIGJ1ZmZlciwgYW5kIHdoZW4gc2hvd2luZyB0aGUgZmlyZWQgcHJvYmVzLCBidWZmZXJzCisgICAgYXJlIGNvbmNhdGVuYXRlZC4gU28gaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gbW92ZXMgb3VyIHRocmVhZCBhcm91bmQsIHRoZQorICAgIHN0cmFpZ2h0IHJlc3VsdCBjYW4gYmUgIm5vbi1jYXVzYWwiLiBTbyB3ZSBhZGQgdGltZXN0YW1wcyB0byB0aGUgcHJvYmUKKyAgICBmaXJpbmcsIHNvcnQgYnkgdGhhdCBmaWVsZCwgdGhlbiBzdHJpcCBpdCBmcm9tIHRoZSBvdXRwdXQiIiIKKworICAgICMgV2hlbiBjb21waWxpbmcgd2l0aCAnLS13aXRoLXB5ZGVidWcnLCBzdHJpcCAnWyMgcmVmc10nIGRlYnVnIG91dHB1dC4KKyAgICBvdXRwdXQgPSByZS5zdWIociJcW1swLTldKyByZWZzXF0iLCAiIiwgb3V0cHV0KQorICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gWworICAgICAgICAgICAgcm93LnNwbGl0KCJcdCIpCisgICAgICAgICAgICBmb3Igcm93IGluIG91dHB1dC5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgIGlmIHJvdyBhbmQgbm90IHJvdy5zdGFydHN3aXRoKCcjJykKKyAgICAgICAgXQorICAgICAgICByZXN1bHQuc29ydChrZXk9bGFtYmRhIHJvdzogaW50KHJvd1swXSkpCisgICAgICAgIHJlc3VsdCA9IFtyb3dbMV0gZm9yIHJvdyBpbiByZXN1bHRdCisgICAgICAgIHJldHVybiAiXG4iLmpvaW4ocmVzdWx0KQorICAgIGV4Y2VwdCAoSW5kZXhFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgInRyYWNlciBwcm9kdWNlZCB1bnBhcnNlYWJsZSBvdXRwdXQ6XG57fSIuZm9ybWF0KG91dHB1dCkKKyAgICAgICAgKQorCisKK2NsYXNzIFRyYWNlQmFja2VuZDoKKyAgICBFWFRFTlNJT04gPSBOb25lCisgICAgQ09NTUFORCA9IE5vbmUKKyAgICBDT01NQU5EX0FSR1MgPSBbXQorCisgICAgZGVmIHJ1bl9jYXNlKHNlbGYsIG5hbWUsIG9wdGltaXplX3B5dGhvbj1Ob25lKToKKyAgICAgICAgYWN0dWFsX291dHB1dCA9IG5vcm1hbGl6ZV90cmFjZV9vdXRwdXQoc2VsZi50cmFjZV9weXRob24oCisgICAgICAgICAgICBzY3JpcHRfZmlsZT1hYnNwYXRoKG5hbWUgKyBzZWxmLkVYVEVOU0lPTiksCisgICAgICAgICAgICBweXRob25fZmlsZT1hYnNwYXRoKG5hbWUgKyAiLnB5IiksCisgICAgICAgICAgICBvcHRpbWl6ZV9weXRob249b3B0aW1pemVfcHl0aG9uKSkKKworICAgICAgICB3aXRoIG9wZW4oYWJzcGF0aChuYW1lICsgc2VsZi5FWFRFTlNJT04gKyAiLmV4cGVjdGVkIikpIGFzIGY6CisgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSBmLnJlYWQoKS5yc3RyaXAoKQorCisgICAgICAgIHJldHVybiAoZXhwZWN0ZWRfb3V0cHV0LCBhY3R1YWxfb3V0cHV0KQorCisgICAgZGVmIGdlbmVyYXRlX3RyYWNlX2NvbW1hbmQoc2VsZiwgc2NyaXB0X2ZpbGUsIHN1YmNvbW1hbmQ9Tm9uZSk6CisgICAgICAgIGNvbW1hbmQgPSBzZWxmLkNPTU1BTkQgKyBbc2NyaXB0X2ZpbGVdCisgICAgICAgIGlmIHN1YmNvbW1hbmQ6CisgICAgICAgICAgICBjb21tYW5kICs9IFsiLWMiLCBzdWJjb21tYW5kXQorICAgICAgICByZXR1cm4gY29tbWFuZAorCisgICAgZGVmIHRyYWNlKHNlbGYsIHNjcmlwdF9maWxlLCBzdWJjb21tYW5kPU5vbmUpOgorICAgICAgICBjb21tYW5kID0gc2VsZi5nZW5lcmF0ZV90cmFjZV9jb21tYW5kKHNjcmlwdF9maWxlLCBzdWJjb21tYW5kKQorICAgICAgICBzdGRvdXQsIF8gPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpLmNvbW11bmljYXRlKCkKKyAgICAgICAgcmV0dXJuIHN0ZG91dAorCisgICAgZGVmIHRyYWNlX3B5dGhvbihzZWxmLCBzY3JpcHRfZmlsZSwgcHl0aG9uX2ZpbGUsIG9wdGltaXplX3B5dGhvbj1Ob25lKToKKyAgICAgICAgcHl0aG9uX2ZsYWdzID0gW10KKyAgICAgICAgaWYgb3B0aW1pemVfcHl0aG9uOgorICAgICAgICAgICAgcHl0aG9uX2ZsYWdzLmV4dGVuZChbIi1PIl0gKiBvcHRpbWl6ZV9weXRob24pCisgICAgICAgIHN1YmNvbW1hbmQgPSAiICIuam9pbihbc3lzLmV4ZWN1dGFibGVdICsgcHl0aG9uX2ZsYWdzICsgW3B5dGhvbl9maWxlXSkKKyAgICAgICAgcmV0dXJuIHNlbGYudHJhY2Uoc2NyaXB0X2ZpbGUsIHN1YmNvbW1hbmQpCisKKyAgICBkZWYgYXNzZXJ0X3VzYWJsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi50cmFjZShhYnNwYXRoKCJhc3NlcnRfdXNhYmxlIiArIHNlbGYuRVhURU5TSU9OKSkKKyAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5zdHJpcCgpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvciBhcyBmbmZlOgorICAgICAgICAgICAgb3V0cHV0ID0gc3RyKGZuZmUpCisgICAgICAgIGlmIG91dHB1dCAhPSAicHJvYmU6IHN1Y2Nlc3MiOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCisgICAgICAgICAgICAgICAgInt9KDEpIGZhaWxlZDoge30iLmZvcm1hdChzZWxmLkNPTU1BTkRbMF0sIG91dHB1dCkKKyAgICAgICAgICAgICkKKworCitjbGFzcyBEVHJhY2VCYWNrZW5kKFRyYWNlQmFja2VuZCk6CisgICAgRVhURU5TSU9OID0gIi5kIgorICAgIENPTU1BTkQgPSBbImR0cmFjZSIsICItcSIsICItcyJdCisKKworY2xhc3MgU3lzdGVtVGFwQmFja2VuZChUcmFjZUJhY2tlbmQpOgorICAgIEVYVEVOU0lPTiA9ICIuc3RwIgorICAgIENPTU1BTkQgPSBbInN0YXAiLCAiLWciXQorCisKK2NsYXNzIFRyYWNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdW5pdHRlc3QuVGVzdENhc2Ugb3B0aW9ucworICAgIG1heERpZmYgPSBOb25lCisKKyAgICAjIFRyYWNlVGVzdHMgb3B0aW9ucworICAgIGJhY2tlbmQgPSBOb25lCisgICAgb3B0aW1pemVfcHl0aG9uID0gMAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYmFja2VuZC5hc3NlcnRfdXNhYmxlKCkKKworICAgIGRlZiBydW5fY2FzZShzZWxmLCBuYW1lKToKKyAgICAgICAgYWN0dWFsX291dHB1dCwgZXhwZWN0ZWRfb3V0cHV0ID0gc2VsZi5iYWNrZW5kLnJ1bl9jYXNlKAorICAgICAgICAgICAgbmFtZSwgb3B0aW1pemVfcHl0aG9uPXNlbGYub3B0aW1pemVfcHl0aG9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9vdXRwdXQsIGV4cGVjdGVkX291dHB1dCkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2VudHJ5X3JldHVybihzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2FzZSgiY2FsbF9zdGFjayIpCisKKyAgICBkZWYgdGVzdF92ZXJpZnlfY2FsbF9vcGNvZGVzKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgb3VyIGNhbGwgc3RhY2sgdGVzdCBoaXRzIGFsbCBmdW5jdGlvbiBjYWxsIG9wY29kZXMiIiIKKworICAgICAgICBvcGNvZGVzID0gc2V0KFsiQ0FMTF9GVU5DVElPTiIsICJDQUxMX0ZVTkNUSU9OX0VYIiwgIkNBTExfRlVOQ1RJT05fS1ciXSkKKworICAgICAgICB3aXRoIG9wZW4oYWJzcGF0aCgiY2FsbF9zdGFjay5weSIpKSBhcyBmOgorICAgICAgICAgICAgY29kZV9zdHJpbmcgPSBmLnJlYWQoKQorCisgICAgICAgIGRlZiBnZXRfZnVuY3Rpb25faW5zdHJ1Y3Rpb25zKGZ1bmNuYW1lKToKKyAgICAgICAgICAgICMgUmVjb21waWxlIHdpdGggYXBwcm9wcmlhdGUgb3B0aW1pemF0aW9uIHNldHRpbmcKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKHNvdXJjZT1jb2RlX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSI8c3RyaW5nPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlPSJleGVjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPXNlbGYub3B0aW1pemVfcHl0aG9uKQorCisgICAgICAgICAgICBmb3IgYyBpbiBjb2RlLmNvX2NvbnN0czoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGMsIHR5cGVzLkNvZGVUeXBlKSBhbmQgYy5jb19uYW1lID09IGZ1bmNuYW1lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlzLmdldF9pbnN0cnVjdGlvbnMoYykKKyAgICAgICAgICAgIHJldHVybiBbXQorCisgICAgICAgIGZvciBpbnN0cnVjdGlvbiBpbiBnZXRfZnVuY3Rpb25faW5zdHJ1Y3Rpb25zKCdzdGFydCcpOgorICAgICAgICAgICAgb3Bjb2Rlcy5kaXNjYXJkKGluc3RydWN0aW9uLm9wbmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCBvcGNvZGVzKQorCisgICAgZGVmIHRlc3RfZ2Moc2VsZik6CisgICAgICAgIHNlbGYucnVuX2Nhc2UoImdjIikKKworICAgIGRlZiB0ZXN0X2xpbmUoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2Nhc2UoImxpbmUiKQorCisKK2NsYXNzIERUcmFjZU5vcm1hbFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBEVHJhY2VCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAwCisKKworY2xhc3MgRFRyYWNlT3B0aW1pemVkVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IERUcmFjZUJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDIKKworCitjbGFzcyBTeXN0ZW1UYXBOb3JtYWxUZXN0cyhUcmFjZVRlc3RzKToKKyAgICBiYWNrZW5kID0gU3lzdGVtVGFwQmFja2VuZCgpCisgICAgb3B0aW1pemVfcHl0aG9uID0gMAorCisKK2NsYXNzIFN5c3RlbVRhcE9wdGltaXplZFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBTeXN0ZW1UYXBCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAyCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChEVHJhY2VOb3JtYWxUZXN0cywgRFRyYWNlT3B0aW1pemVkVGVzdHMsIFN5c3RlbVRhcE5vcm1hbFRlc3RzLAorICAgICAgICAgICAgICAgICBTeXN0ZW1UYXBPcHRpbWl6ZWRUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkgYi9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKaW5kZXggNTA4MGVjOS4uM2FlMDkwZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQpAQCAtMSw3ICsxLDYgQEAKICMgVGVzdCB0aGUgbW9zdCBkeW5hbWljIGNvcm5lciBjYXNlcyBvZiBQeXRob24ncyBydW50aW1lIHNlbWFudGljcy4KIAogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzd2FwX2l0ZW0sIHN3YXBfYXR0cgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9laW50ci5weSBiL0xpYi90ZXN0L3Rlc3RfZWludHIucHkKaW5kZXggYWFiYWQ4My4uMjVmODZkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9laW50ci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5CkBAIC0xLDcgKzEsNSBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTYsMTQgKzE0LDggQEAKICAgICAgICAgIyBSdW4gdGhlIHRlc3RlciBpbiBhIHN1Yi1wcm9jZXNzLCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBvbmUKICAgICAgICAgIyB0aHJlYWQgKGZvciByZWxpYWJsZSBzaWduYWwgZGVsaXZlcnkpLgogICAgICAgICB0ZXN0ZXIgPSBzdXBwb3J0LmZpbmRmaWxlKCJlaW50cl90ZXN0ZXIucHkiLCBzdWJkaXI9ImVpbnRyZGF0YSIpCi0KLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgdGVzdGVyXQotICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MpIGFzIHByb2M6Ci0gICAgICAgICAgICAgICAgZXhpdGNvZGUgPSBwcm9jLndhaXQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayh0ZXN0ZXIpCisgICAgICAgICMgdXNlIC11IHRvIHRyeSB0byBnZXQgdGhlIGZ1bGwgb3V0cHV0IGlmIHRoZSB0ZXN0IGhhbmdzIG9yIGNyYXNoCisgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygiLXUiLCB0ZXN0ZXIpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5CmluZGV4IGQ0YTAzZWUuLjg4ODc1MWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBlbWFpbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CmluZGV4IGY3YWMwZTMuLjI2ZWNlNjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTU4MSw3ICs1ODEsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXVvdGVkX3BhcmVucyhzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCi0gICAgICAgICAgICAnKGZvb1wpIFwoXCliYXIpJywgJyhmb29cKSBcKFwpYmFyKScsICcgJywgW10sICcnLCBbJ2ZvbykgKCliYXInXSkKKyAgICAgICAgICAgIHInKGZvb1wpIFwoXCliYXIpJywgcicoZm9vXCkgXChcKWJhciknLCAnICcsIFtdLCAnJywgWydmb28pICgpYmFyJ10pCiAKICAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub25fcHJpbnRhYmxlKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKQEAgLTYyNSw3ICs2MjUsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXNfaW5fbmVzdGVkX2NvbW1lbnQoc2VsZik6CiAgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKLSAgICAgICAgICAgICcoZm9vIChiXCkpKScsICcoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbJ2ZvbyAoYlwpKSddKQorICAgICAgICAgICAgcicoZm9vIChiXCkpKScsIHInKGZvbyAoYlwpKSknLCAnICcsIFtdLCAnJywgW3InZm9vIChiXCkpJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudFsyXS5jb250ZW50LCAnYiknKQogCiAgICAgIyBnZXRfY2Z3cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkKaW5kZXggZjljZDdkOS4uMWUwY2FlZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CkBAIC0zLDcgKzMsNiBAQAogIyBlbWFpbCBwYWNrYWdlIHVuaXQgdGVzdHMgZm9yIChvcHRpb25hbCkgQXNpYW4gY29kZWNzCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQogZnJvbSBlbWFpbC5jaGFyc2V0IGltcG9ydCBDaGFyc2V0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKaW5kZXggYTUzY2M5Yi4uZGFhMTI4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpAQCAtMzEsNiArMzEsNyBAQAogZnJvbSBlbWFpbC5taW1lLmJhc2UgaW1wb3J0IE1JTUVCYXNlCiBmcm9tIGVtYWlsLm1pbWUubWVzc2FnZSBpbXBvcnQgTUlNRU1lc3NhZ2UKIGZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKK2Zyb20gZW1haWwubWltZS5ub25tdWx0aXBhcnQgaW1wb3J0IE1JTUVOb25NdWx0aXBhcnQKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKIGZyb20gZW1haWwgaW1wb3J0IGVuY29kZXJzCkBAIC0yMDc3LDcgKzIwNzgsMTMgQEAKIC0tPT09PT09PT09PT09PT09MDAxMjM5NDE2ND09LS0iIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5nZXRfcGF5bG9hZCgwKS5nZXRfcGF5bG9hZCgpLCAnWVhOa1pnPT0nKQogCisgICAgZGVmIHRlc3RfbWltZWJhc2VfZGVmYXVsdF9wb2xpY3koc2VsZik6CisgICAgICAgIG0gPSBNSU1FQmFzZSgnbXVsdGlwYXJ0JywgJ21peGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmNvbXBhdDMyKQogCisgICAgZGVmIHRlc3RfbWltZWJhc2VfY3VzdG9tX3BvbGljeShzZWxmKToKKyAgICAgICAgbSA9IE1JTUVCYXNlKCdtdWx0aXBhcnQnLCAnbWl4ZWQnLCBwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5kZWZhdWx0KQogCiAjIFRlc3Qgc29tZSBiYWRseSBmb3JtYXR0ZWQgbWVzc2FnZXMKIGNsYXNzIFRlc3ROb25Db25mb3JtYW50KFRlc3RFbWFpbEJhc2UpOgpAQCAtMjY3OSw2ICsyNjg2LDE5IEBACiAgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobXNnLmlzX211bHRpcGFydCgpKQogCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X2RlZmF1bHRfcG9saWN5KHNlbGYpOgorICAgICAgICBtc2cgPSBNSU1FTXVsdGlwYXJ0KCkKKyAgICAgICAgbXNnWydUbyddID0gJ2FAYi5jb20nCisgICAgICAgIG1zZ1snVG8nXSA9ICdjQGQuY29tJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfYWxsKCd0bycpLCBbJ2FAYi5jb20nLCAnY0BkLmNvbSddKQorCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X2N1c3RvbV9wb2xpY3koc2VsZik6CisgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQocG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0KQorICAgICAgICBtc2dbJ1RvJ10gPSAnYUBiLmNvbScKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIG1zZ1snVG8nXSA9ICdjQGQuY29tJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUaGVyZSBtYXkgYmUgYXQgbW9zdCAxIFRvIGhlYWRlcnMgaW4gYSBtZXNzYWdlJykKIAogIyBBIGdlbmVyYWwgdGVzdCBvZiBwYXJzZXItPm1vZGVsLT5nZW5lcmF0b3IgaWRlbXBvdGVuY3kuICBJT1csIHJlYWQgYSBtZXNzYWdlCiAjIGluLCBwYXJzZSBpdCBpbnRvIGEgbWVzc2FnZSBvYmplY3QgdHJlZSwgdGhlbiB3aXRob3V0IHRvdWNoaW5nIHRoZSB0cmVlLApAQCAtMzAzMiw3ICszMDUyLDcgQEAKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV9iYWNrc2xhc2hlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHV0aWxzLmZvcm1hdGFkZHIoKCdBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJywgJ3BlcnNvbkBkb20uYWluJykpLAorICAgICAgICAgICAgdXRpbHMuZm9ybWF0YWRkcigocidBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJywgJ3BlcnNvbkBkb20uYWluJykpLAogICAgICAgICAgICAgciciQXJ0aHVyIFxcQmFja3NsYXNoXFwgRm9vYmFyIiA8cGVyc29uQGRvbS5haW4+JykKICAgICAgICAgYSA9IHInQXJ0aHVyIFxCYWNrc2xhc2hcIEZvb2JhcicKICAgICAgICAgYiA9ICdwZXJzb25AZG9tLmFpbicKQEAgLTMzMjgsNiArMzM0OCwyNyBAQAogICAgICAgICBnLmZsYXR0ZW4obXNnLCBsaW5lc2VwPSdcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIG1zZ3R4dCkKIAorICAgIGRlZiB0ZXN0X21pbWVfY2xhc3Nlc19wb2xpY3lfYXJndW1lbnQoc2VsZik6CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ2F1ZGlvdGVzdC5hdScsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgYXVkaW9kYXRhID0gZnAucmVhZCgpCisgICAgICAgIHdpdGggb3BlbmZpbGUoJ1B5QmFubmVyMDQ4LmdpZicsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgYmluZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICBjbGFzc2VzID0gWworICAgICAgICAgICAgKE1JTUVBcHBsaWNhdGlvbiwgKCcnLCkpLAorICAgICAgICAgICAgKE1JTUVBdWRpbywgKGF1ZGlvZGF0YSwpKSwKKyAgICAgICAgICAgIChNSU1FSW1hZ2UsIChiaW5kYXRhLCkpLAorICAgICAgICAgICAgKE1JTUVNZXNzYWdlLCAoTWVzc2FnZSgpLCkpLAorICAgICAgICAgICAgKE1JTUVOb25NdWx0aXBhcnQsICgnbXVsdGlwYXJ0JywgJ21peGVkJykpLAorICAgICAgICAgICAgKE1JTUVUZXh0LCAoJycsKSksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGNscywgY29uc3RydWN0b3IgaW4gY2xhc3NlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNscz1jbHMuX19uYW1lX18sIHBvbGljeT0nY29tcGF0MzInKToKKyAgICAgICAgICAgICAgICBtID0gY2xzKCpjb25zdHJ1Y3RvcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0ucG9saWN5LCBlbWFpbC5wb2xpY3kuY29tcGF0MzIpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbHM9Y2xzLl9fbmFtZV9fLCBwb2xpY3k9J2RlZmF1bHQnKToKKyAgICAgICAgICAgICAgICBtID0gY2xzKCpjb25zdHJ1Y3RvciwgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5kZWZhdWx0KQorCiAKICMgVGVzdCB0aGUgaXRlcmF0b3IvZ2VuZXJhdG9ycwogY2xhc3MgVGVzdEl0ZXJhdG9ycyhUZXN0RW1haWxCYXNlKToKQEAgLTM0MzYsNyArMzQ3Nyw2IEBACiBjbGFzcyBUZXN0RmVlZFBhcnNlcnMoVGVzdEVtYWlsQmFzZSk6CiAKICAgICBkZWYgcGFyc2Uoc2VsZiwgY2h1bmtzKToKLSAgICAgICAgZnJvbSBlbWFpbC5mZWVkcGFyc2VyIGltcG9ydCBGZWVkUGFyc2VyCiAgICAgICAgIGZlZWRwYXJzZXIgPSBGZWVkUGFyc2VyKCkKICAgICAgICAgZm9yIGNodW5rIGluIGNodW5rczoKICAgICAgICAgICAgIGZlZWRwYXJzZXIuZmVlZChjaHVuaykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CmluZGV4IGIxY2JjZTIuLjdjODg3N2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQpAQCAtMTQzLDcgKzE0Myw3IEBACiAgICAgZGVmIHRlc3Rfc2V0X21hbmdsZV9mcm9tX3ZpYV9wb2xpY3koc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCiAgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0IHRoYXQKLSAgICAgICAgICAgICBmcm9tIGlzIG1hbmdlbGQgaW4gdGhlIGJvZHkhCisgICAgICAgICAgICAgZnJvbSBpcyBtYW5nbGVkIGluIHRoZSBib2R5IQogCiAgICAgICAgICAgICBGcm9tIHRpbWUgdG8gdGltZSBJIHdyaXRlIGEgcmh5bWUuCiAgICAgICAgICAgICAiIiIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKaW5kZXggNTVlY2RlYS4uYWY4MzZkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQpAQCAtMSw3ICsxLDYgQEAKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0eXBlcwogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCiBmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQppbmRleCA0MzQ1MTYyLi5mM2E1N2RmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQpAQCAtNzY0LDYgKzc2NCwyNiBAQAogICAgICAgICBtLnNldF9jb250ZW50KGNvbnRlbnRfbWFuYWdlcj1jbSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydNSU1FLVZlcnNpb24nXSwgJzEuMCcpCiAKKyAgICBkZWYgdGVzdF9hc19zdHJpbmdfdXNlc19tYXhfaGVhZGVyX2xlbmd0aF9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmFzX3N0cmluZygpLnN0cmlwKCkuc3BsaXRsaW5lcygpKSwgMykKKworICAgIGRlZiB0ZXN0X2FzX3N0cmluZ19hbGxvd3NfbWF4aGVhZGVybGVuKHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmFzX3N0cmluZyhtYXhoZWFkZXJsZW49MCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uYXNfc3RyaW5nKG1heGhlYWRlcmxlbj0zNCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDYpCisKKyAgICBkZWYgdGVzdF9zdHJfZGVmYXVsdHNfdG9fcG9saWN5X21heF9saW5lX2xlbmd0aChzZWxmKToKKyAgICAgICAgbSA9IHNlbGYuX3N0cl9tc2coJ1N1YmplY3Q6IGxvbmcgbGluZScgKyAnIGFiJyo1MCArICdcblxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3RyKG0pLnN0cmlwKCkuc3BsaXRsaW5lcygpKSwgMykKKworICAgIGRlZiB0ZXN0X3N0cl9kZWZhdWx0c190b191dGY4KHNlbGYpOgorICAgICAgICBtID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbVsnU3ViamVjdCddID0gJ3VuaWPDtmRlJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtKSwgJ1N1YmplY3Q6IHVuaWPDtmRlXG5cbicpCisKIAogY2xhc3MgVGVzdE1JTUVQYXJ0KFRlc3RFbWFpbE1lc3NhZ2VCYXNlLCBUZXN0RW1haWxCYXNlKToKICAgICAjIERvaW5nIHRoZSBmdWxsIHRlc3QgcnVuIGhlcmUgbWF5IHNlZW0gYSBiaXQgcmVkdW5kYW50LCBzaW5jZSB0aGUgdHdvCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQppbmRleCA4ZGRjMTc2My4uMDZjODY0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgZW1haWwKIGltcG9ydCB1bml0dGVzdAotZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UsIEVtYWlsTWVzc2FnZQogZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKIGZyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiAKQEAgLTM5LDM4ICszOSw3MSBAQAogICAgICAgICAjIFRoZSB1bmljb2RlIGxpbmUgc3BsaXR0ZXIgc3BsaXRzIG9uIHVuaWNvZGUgbGluZWJyZWFrcywgd2hpY2ggYXJlCiAgICAgICAgICMgbW9yZSBudW1lcm91cyB0aGFuIGFsbG93ZWQgYnkgdGhlIGVtYWlsIFJGQ3M7IG1ha2Ugc3VyZSB3ZSBhcmUgb25seQogICAgICAgICAjIHNwbGl0dGluZyBvbiB0aG9zZSB0d28uCi0gICAgICAgIG1zZyA9IHNlbGYucGFyc2VyKAotICAgICAgICAgICAgIk5leHQtTGluZTogbm90XHg4NWJyb2tlblxyXG4iCi0gICAgICAgICAgICAiTnVsbDogbm90XHgwMGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiVmVydGljYWwtVGFiOiBub3RcdmJyb2tlblxyXG4iCi0gICAgICAgICAgICAiRm9ybS1GZWVkOiBub3RcZmJyb2tlblxyXG4iCi0gICAgICAgICAgICAiRmlsZS1TZXBhcmF0b3I6IG5vdFx4MUNicm9rZW5cclxuIgotICAgICAgICAgICAgIkdyb3VwLVNlcGFyYXRvcjogbm90XHgxRGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiUmVjb3JkLVNlcGFyYXRvcjogbm90XHgxRWJyb2tlblxyXG4iCi0gICAgICAgICAgICAiTGluZS1TZXBhcmF0b3I6IG5vdFx1MjAyOGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiUGFyYWdyYXBoLVNlcGFyYXRvcjogbm90XHUyMDI5YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJcclxuIiwKLSAgICAgICAgICAgIHBvbGljeT1kZWZhdWx0LAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLml0ZW1zKCksIFsKLSAgICAgICAgICAgICgiTmV4dC1MaW5lIiwgIm5vdFx4ODVicm9rZW4iKSwKLSAgICAgICAgICAgICgiTnVsbCIsICJub3RceDAwYnJva2VuIiksCi0gICAgICAgICAgICAoIlZlcnRpY2FsLVRhYiIsICJub3RcdmJyb2tlbiIpLAotICAgICAgICAgICAgKCJGb3JtLUZlZWQiLCAibm90XGZicm9rZW4iKSwKLSAgICAgICAgICAgICgiRmlsZS1TZXBhcmF0b3IiLCAibm90XHgxQ2Jyb2tlbiIpLAotICAgICAgICAgICAgKCJHcm91cC1TZXBhcmF0b3IiLCAibm90XHgxRGJyb2tlbiIpLAotICAgICAgICAgICAgKCJSZWNvcmQtU2VwYXJhdG9yIiwgIm5vdFx4MUVicm9rZW4iKSwKLSAgICAgICAgICAgICgiTGluZS1TZXBhcmF0b3IiLCAibm90XHUyMDI4YnJva2VuIiksCi0gICAgICAgICAgICAoIlBhcmFncmFwaC1TZXBhcmF0b3IiLCAibm90XHUyMDI5YnJva2VuIiksCi0gICAgICAgIF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICIiKQorICAgICAgICBmb3IgcGFyc2VyIGluIHNlbGYucGFyc2VyczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhcnNlcj1wYXJzZXIuX19uYW1lX18pOgorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigKKyAgICAgICAgICAgICAgICAgICAgIk5leHQtTGluZTogbm90XHg4NWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJOdWxsOiBub3RceDAwYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlZlcnRpY2FsLVRhYjogbm90XHZicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiRm9ybS1GZWVkOiBub3RcZmJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJGaWxlLVNlcGFyYXRvcjogbm90XHgxQ2Jyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJHcm91cC1TZXBhcmF0b3I6IG5vdFx4MURicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiUmVjb3JkLVNlcGFyYXRvcjogbm90XHgxRWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJMaW5lLVNlcGFyYXRvcjogbm90XHUyMDI4YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlBhcmFncmFwaC1TZXBhcmF0b3I6IG5vdFx1MjAyOWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgcG9saWN5PWRlZmF1bHQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLml0ZW1zKCksIFsKKyAgICAgICAgICAgICAgICAgICAgKCJOZXh0LUxpbmUiLCAibm90XHg4NWJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIk51bGwiLCAibm90XHgwMGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlZlcnRpY2FsLVRhYiIsICJub3RcdmJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkZvcm0tRmVlZCIsICJub3RcZmJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkZpbGUtU2VwYXJhdG9yIiwgIm5vdFx4MUNicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJHcm91cC1TZXBhcmF0b3IiLCAibm90XHgxRGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlJlY29yZC1TZXBhcmF0b3IiLCAibm90XHgxRWJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkxpbmUtU2VwYXJhdG9yIiwgIm5vdFx1MjAyOGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlBhcmFncmFwaC1TZXBhcmF0b3IiLCAibm90XHUyMDI5YnJva2VuIiksCisgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgpLCAiIikKKworICAgIGNsYXNzIE15TWVzc2FnZShFbWFpbE1lc3NhZ2UpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9jdXN0b21fbWVzc2FnZV9mYWN0b3J5X29uX3BvbGljeShzZWxmKToKKyAgICAgICAgZm9yIHBhcnNlciBpbiBzZWxmLnBhcnNlcnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXJzZXI9cGFyc2VyLl9fbmFtZV9fKToKKyAgICAgICAgICAgICAgICBNeVBvbGljeSA9IGRlZmF1bHQuY2xvbmUobWVzc2FnZV9mYWN0b3J5PXNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigiVG86IGZvb1xuXG50ZXN0IiwgcG9saWN5PU15UG9saWN5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKQorCisgICAgZGVmIHRlc3RfZmFjdG9yeV9hcmdfb3ZlcnJpZGVzX3BvbGljeShzZWxmKToKKyAgICAgICAgZm9yIHBhcnNlciBpbiBzZWxmLnBhcnNlcnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXJzZXI9cGFyc2VyLl9fbmFtZV9fKToKKyAgICAgICAgICAgICAgICBNeVBvbGljeSA9IGRlZmF1bHQuY2xvbmUobWVzc2FnZV9mYWN0b3J5PXNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigiVG86IGZvb1xuXG50ZXN0IiwgTWVzc2FnZSwgcG9saWN5PU15UG9saWN5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2csIE1lc3NhZ2UpCisKKyMgUGxheSBzb21lIGdhbWVzIHRvIGdldCBuaWNlIG91dHB1dCBpbiBzdWJUZXN0LiAgVGhpcyBjb2RlIGNvdWxkIGJlIGNsZWFyZXIKKyMgaWYgc3RhdGljbWV0aG9kIHN1cHBvcnRlZCBfX25hbWVfXy4KKworZGVmIG1lc3NhZ2VfZnJvbV9maWxlKHMsICphcmdzLCAqKmt3KToKKyAgICBmID0gaW8uU3RyaW5nSU8ocykKKyAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgKmFyZ3MsICoqa3cpCiAKIGNsYXNzIFRlc3RQYXJzZXIoVGVzdFBhcnNlckJhc2UsIFRlc3RFbWFpbEJhc2UpOgotICAgIHBhcnNlciA9IHN0YXRpY21ldGhvZChlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKQorICAgIHBhcnNlcnMgPSAoZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZywgbWVzc2FnZV9mcm9tX2ZpbGUpCisKK2RlZiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgKmFyZ3MsICoqa3cpOgorICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMocy5lbmNvZGUoKSwgKmFyZ3MsICoqa3cpCisKK2RlZiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUocywgKmFyZ3MsICoqa3cpOgorICAgIGYgPSBpby5CeXRlc0lPKHMuZW5jb2RlKCkpCisgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmLCAqYXJncywgKiprdykKIAogY2xhc3MgVGVzdEJ5dGVzUGFyc2VyKFRlc3RQYXJzZXJCYXNlLCBUZXN0RW1haWxCYXNlKToKLSAgICBkZWYgcGFyc2VyKHNlbGYsIHMsICphcmdzLCAqKmt3KToKLSAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhzLmVuY29kZSgpLCAqYXJncywgKiprdykKKyAgICBwYXJzZXJzID0gKG1lc3NhZ2VfZnJvbV9ieXRlcywgbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQppbmRleCA3MGFjNGRiLi44ZmVjYjhhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKQEAgLTUsNiArNSw3IEBACiBpbXBvcnQgZW1haWwucG9saWN5CiBpbXBvcnQgZW1haWwucGFyc2VyCiBpbXBvcnQgZW1haWwuZ2VuZXJhdG9yCitpbXBvcnQgZW1haWwubWVzc2FnZQogZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKIAogZGVmIG1ha2VfZGVmYXVsdHMoYmFzZV9kZWZhdWx0cywgZGlmZmVyZW5jZXMpOgpAQCAtMjMsNiArMjQsNyBAQAogICAgICAgICAnY3RlX3R5cGUnOiAgICAgICAgICAgICAgICAgJzhiaXQnLAogICAgICAgICAncmFpc2Vfb25fZGVmZWN0JzogICAgICAgICAgRmFsc2UsCiAgICAgICAgICdtYW5nbGVfZnJvbV8nOiAgICAgICAgICAgICBUcnVlLAorICAgICAgICAnbWVzc2FnZV9mYWN0b3J5JzogICAgICAgICAgTm9uZSwKICAgICAgICAgfQogICAgICMgVGhlc2UgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZSBvbmVzIHNldCBvbiBlbWFpbC5wb2xpY3kuZGVmYXVsdC4KICAgICAjIElmIGFueSBvZiB0aGVzZSBkZWZhdWx0cyBjaGFuZ2UsIHRoZSBkb2NzIG11c3QgYmUgdXBkYXRlZC4KQEAgLTM0LDYgKzM2LDcgQEAKICAgICAgICAgJ3JlZm9sZF9zb3VyY2UnOiAgICAgICAgICAgICdsb25nJywKICAgICAgICAgJ2NvbnRlbnRfbWFuYWdlcic6ICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5jb250ZW50X21hbmFnZXIsCiAgICAgICAgICdtYW5nbGVfZnJvbV8nOiAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ21lc3NhZ2VfZmFjdG9yeSc6ICAgICAgICAgIGVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLAogICAgICAgICB9KQogCiAgICAgIyBGb3IgZWFjaCBwb2xpY3kgdW5kZXIgdGVzdCwgd2UgZ2l2ZSBoZXJlIHdoYXQgd2UgZXhwZWN0IHRoZSBkZWZhdWx0cyB0bwpAQCAtNjIsMjAgKzY1LDIyIEBACiAgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CiAgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlZCIpLmZvcm1hdChwb2xpY3kpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wb2xpY3ksIGF0dHI9YXR0cik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiY2hhbmdlIHt9IGRvY3MvZG9jc3RyaW5ncyBpZiBkZWZhdWx0cyBoYXZlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2VkIikuZm9ybWF0KHBvbGljeSkpCiAKICAgICBkZWYgdGVzdF9hbGxfYXR0cmlidXRlc19jb3ZlcmVkKHNlbGYpOgogICAgICAgICBmb3IgcG9saWN5LCBleHBlY3RlZCBpbiBzZWxmLnBvbGljaWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBmb3IgYXR0ciBpbiBkaXIocG9saWN5KToKLSAgICAgICAgICAgICAgICBpZiAoYXR0ci5zdGFydHN3aXRoKCdfJykgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZ2V0YXR0cihlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3ksIGF0dHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlKSk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie30gaXMgbm90IGZ1bGx5IHRlc3RlZCIuZm9ybWF0KGF0dHIpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wb2xpY3ksIGF0dHI9YXR0cik6CisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyLnN0YXJ0c3dpdGgoJ18nKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZ2V0YXR0cihlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3ksIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7fSBpcyBub3QgZnVsbHkgdGVzdGVkIi5mb3JtYXQoYXR0cikpCiAKICAgICBkZWYgdGVzdF9hYmMoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKQEAgLTIzNyw2ICsyNDIsOSBAQAogICAgICMgd2lucyksIGJ1dCB0aGF0IHRoZSBvcmRlciBzdGlsbCB3b3JrcyAocmlnaHQgb3ZlcnJpZGVzIGxlZnQpLgogCiAKK2NsYXNzIFRlc3RFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKIGNsYXNzIFRlc3RQb2xpY3lQcm9wYWdhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIFRoZSBhYnN0cmFjdCBtZXRob2RzIGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgYnV0IG5vdCBieSB0aGUgd3JhcHBlcgpAQCAtMjQ0LDQwICsyNTIsNDAgQEAKICAgICAjIHBvbGljeSB3YXMgYWN0dWFsbHkgcHJvcGFnYXRlZCBhbGwgdGhlIHdheSB0byBmZWVkcGFyc2VyLgogICAgIGNsYXNzIE15UG9saWN5KGVtYWlsLnBvbGljeS5Qb2xpY3kpOgogICAgICAgICBkZWYgYmFkbWV0aG9kKHNlbGYsICphcmdzLCAqKmt3KToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidGVzdCIpCisgICAgICAgICAgICByYWlzZSBUZXN0RXhjZXB0aW9uKCJ0ZXN0IikKICAgICAgICAgZm9sZCA9IGZvbGRfYmluYXJ5ID0gaGVhZGVyX2ZldGNoX3BhcnNlciA9IGJhZG1ldGhvZAogICAgICAgICBoZWFkZXJfc291cmNlX3BhcnNlID0gaGVhZGVyX3N0b3JlX3BhcnNlID0gYmFkbWV0aG9kCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fc3RyaW5nKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCJTdWJqZWN0OiB0ZXN0XG5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2J5dGVzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMoYiJTdWJqZWN0OiB0ZXN0XG5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fZmlsZShzZWxmKToKICAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCdTdWJqZWN0OiB0ZXN0XG5cbicpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKGYsIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKHNlbGYpOgogICAgICAgICBmID0gaW8uQnl0ZXNJTyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGYsIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgIyBUaGVzZSBhcmUgcmVkdW5kYW50LCBidXQgd2UgbmVlZCB0aGVtIGZvciBibGFjay1ib3ggY29tcGxldGVuZXNzLgogCiAgICAgZGVmIHRlc3RfcGFyc2VyKHNlbGYpOgogICAgICAgICBwID0gZW1haWwucGFyc2VyLlBhcnNlcihwb2xpY3k9c2VsZi5NeVBvbGljeSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgcC5wYXJzZXN0cignU3ViamVjdDogdGVzdFxuXG4nKQogCiAgICAgZGVmIHRlc3RfYnl0ZXNfcGFyc2VyKHNlbGYpOgogICAgICAgICBwID0gZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBwLnBhcnNlYnl0ZXMoYidTdWJqZWN0OiB0ZXN0XG5cbicpCiAKICAgICAjIE5vdyB0aGF0IHdlJ3ZlIGVzdGFibGlzaGVkIHRoYXQgYWxsIHRoZSBwYXJzZSBtZXRob2RzIGdldCB0aGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bS5weSBiL0xpYi90ZXN0L3Rlc3RfZW51bS5weQppbmRleCA2MzBiMTU1Li4yYjNiZmVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VudW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CkBAIC0zLDkgKzMsMTAgQEAKIGltcG9ydCBweWRvYwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAotZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBJbnRFbnVtLCBFbnVtTWV0YSwgdW5pcXVlCitmcm9tIGVudW0gaW1wb3J0IEVudW0sIEludEVudW0sIEVudW1NZXRhLCBGbGFnLCBJbnRGbGFnLCB1bmlxdWUsIGF1dG8KIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzLCBQaWNrbGluZ0Vycm9yLCBISUdIRVNUX1BST1RPQ09MCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogIyBmb3IgcGlja2xlIHRlc3RzCiB0cnk6CkBAIC0zMiw2ICszMywxNCBAQAogZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgRmxvYXRTdG9vZ2VzID0gZXhjCiAKK3RyeToKKyAgICBjbGFzcyBGbGFnU3Rvb2dlcyhGbGFnKToKKyAgICAgICAgTEFSUlkgPSAxCisgICAgICAgIENVUkxZID0gMgorICAgICAgICBNT0UgPSAzCitleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICBGbGFnU3Rvb2dlcyA9IGV4YworCiAjIGZvciBwaWNrbGUgdGVzdCBhbmQgc3ViY2xhc3MgdGVzdHMKIHRyeToKICAgICBjbGFzcyBTdHJFbnVtKHN0ciwgRW51bSk6CkBAIC0xMDQsNiArMTEzLDcgQEAKICAgICAgICAgICAgICAgICAnX18nLCAnX19fJywgJ19fX18nLCAnX19fX18nLCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudW0uX2lzX2R1bmRlcihzKSkKIAorIyB0ZXN0cwogCiBjbGFzcyBUZXN0RW51bSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTI4Myw2ICsyOTMsMjggQEAKICAgICAgICAgICAgIGNsYXNzIFdyb25nKEVudW0pOgogICAgICAgICAgICAgICAgIF9hbnlfbmFtZV8gPSA5CiAKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICAjIHBsYWluIEVudW0gbWVtYmVycyBhcmUgYWx3YXlzIFRydWUKKyAgICAgICAgY2xhc3MgTG9naWMoRW51bSk6CisgICAgICAgICAgICB0cnVlID0gVHJ1ZQorICAgICAgICAgICAgZmFsc2UgPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTG9naWMudHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKExvZ2ljLmZhbHNlKQorICAgICAgICAjIHVubGVzcyBvdmVycmlkZGVuCisgICAgICAgIGNsYXNzIFJlYWxMb2dpYyhFbnVtKToKKyAgICAgICAgICAgIHRydWUgPSBUcnVlCisgICAgICAgICAgICBmYWxzZSA9IEZhbHNlCisgICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdmFsdWVfKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUmVhbExvZ2ljLnRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUmVhbExvZ2ljLmZhbHNlKQorICAgICAgICAjIG1peGVkIEVudW1zIGRlcGVuZCBvbiBtaXhlZC1pbiB0eXBlCisgICAgICAgIGNsYXNzIEludExvZ2ljKGludCwgRW51bSk6CisgICAgICAgICAgICB0cnVlID0gMQorICAgICAgICAgICAgZmFsc2UgPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJbnRMb2dpYy50cnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEludExvZ2ljLmZhbHNlKQorCiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CiAgICAgICAgIFNlYXNvbiA9IHNlbGYuU2Vhc29uCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oU2Vhc29uLkFVVFVNTiwgU2Vhc29uKQpAQCAtMTU0Nyw2ICsxNTc5LDcwMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExhYmVsbGVkTGlzdC51bnByb2Nlc3NlZCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChMYWJlbGxlZExpc3QoMSksIExhYmVsbGVkTGlzdC51bnByb2Nlc3NlZCkKIAorICAgIGRlZiB0ZXN0X2F1dG9fbnVtYmVyKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsIDMpCisKKyAgICBkZWYgdGVzdF9hdXRvX25hbWUoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3QpOgorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCisgICAgICAgICAgICByZWQgPSBhdXRvKCkKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgJ3JlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgJ2JsdWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAnZ3JlZW4nKQorCisgICAgZGVmIHRlc3RfYXV0b19uYW1lX2luaGVyaXQoc2VsZik6CisgICAgICAgIGNsYXNzIEF1dG9OYW1lRW51bShFbnVtKToKKyAgICAgICAgICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgICAgICBjbGFzcyBDb2xvcihBdXRvTmFtZUVudW0pOgorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsICdyZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsICdibHVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgJ2dyZWVuJykKKworICAgIGRlZiB0ZXN0X2F1dG9fZ2FyYmFnZShzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICByZWQgPSAncmVkJworICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDEpCisKKyAgICBkZWYgdGVzdF9hdXRvX2dhcmJhZ2VfY29ycmVjdGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIHJlZCA9ICdyZWQnCisgICAgICAgICAgICBibHVlID0gMgorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAncmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAzKQorCisgICAgZGVmIHRlc3RfZHVwbGljYXRlX2F1dG8oc2VsZik6CisgICAgICAgIGNsYXNzIER1cGVzKEVudW0pOgorICAgICAgICAgICAgZmlyc3QgPSBwcmltZXJvID0gYXV0bygpCisgICAgICAgICAgICBzZWNvbmQgPSBhdXRvKCkKKyAgICAgICAgICAgIHRoaXJkID0gYXV0bygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0R1cGVzLmZpcnN0LCBEdXBlcy5zZWNvbmQsIER1cGVzLnRoaXJkXSwgbGlzdChEdXBlcykpCisKKworY2xhc3MgVGVzdE9yZGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3NhbWVfbWVtYmVycyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICBibHVlID0gMworCisgICAgZGVmIHRlc3Rfc2FtZV9tZW1iZXJzX3dpdGhfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgdmVyZGUgPSBncmVlbgorCisgICAgZGVmIHRlc3Rfc2FtZV9tZW1iZXJzX3dyb25nX29yZGVyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisKKyAgICBkZWYgdGVzdF9vcmRlcl9oYXNfZXh0cmFfbWVtYmVycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlIHB1cnBsZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKworICAgIGRlZiB0ZXN0X29yZGVyX2hhc19leHRyYV9tZW1iZXJzX3dpdGhfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlIHB1cnBsZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgICAgICB2ZXJkZSA9IGdyZWVuCisKKyAgICBkZWYgdGVzdF9lbnVtX2hhc19leHRyYV9tZW1iZXJzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgcHVycGxlID0gNAorCisgICAgZGVmIHRlc3RfZW51bV9oYXNfZXh0cmFfbWVtYmVyc193aXRoX2FsaWFzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgICAgICBwdXJwbGUgPSA0CisgICAgICAgICAgICAgICAgdmVyZGUgPSBncmVlbgorCisKK2NsYXNzIFRlc3RGbGFnKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBvZiB0aGUgRmxhZ3MuIiIiCisKKyAgICBjbGFzcyBQZXJtKEZsYWcpOgorICAgICAgICBSLCBXLCBYID0gNCwgMiwgMQorCisgICAgY2xhc3MgT3BlbihGbGFnKToKKyAgICAgICAgUk8gPSAwCisgICAgICAgIFdPID0gMQorICAgICAgICBSVyA9IDIKKyAgICAgICAgQUMgPSAzCisgICAgICAgIENFID0gMTw8MTkKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIpLCAnUGVybS5SJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5XKSwgJ1Blcm0uVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uWCksICdQZXJtLlgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCBQZXJtLlcpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnUGVybS5SfFd8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0oMCkpLCAnUGVybS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uUiksICdQZXJtLld8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlcpLCAnUGVybS5SfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5YKSwgJ1Blcm0uUnxXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcpKSwgJ1Blcm0uWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSksICdQZXJtLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKH4wKSksICdQZXJtLlJ8V3xYJykKKworICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uUk8pLCAnT3Blbi5STycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08pLCAnT3Blbi5XTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uQUMpLCAnT3Blbi5BQycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uUk8gfCBPcGVuLkNFKSwgJ09wZW4uQ0UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLldPIHwgT3Blbi5DRSksICdPcGVuLkNFfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uUk8pLCAnT3Blbi5DRXxBQ3xSV3xXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLldPKSwgJ09wZW4uQ0V8UlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5BQyksICdPcGVuLkNFJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihPcGVuLlJPIHwgT3Blbi5DRSkpLCAnT3Blbi5BQycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5XTyB8IE9wZW4uQ0UpKSwgJ09wZW4uUlcnKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SKSwgJzxQZXJtLlI6IDQ+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uVyksICc8UGVybS5XOiAyPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlgpLCAnPFBlcm0uWDogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SIHwgUGVybS5XKSwgJzxQZXJtLlJ8VzogNj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSwgJzxQZXJtLlJ8V3xYOiA3PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKDApKSwgJzxQZXJtLjA6IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlIpLCAnPFBlcm0uV3xYOiAzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5XKSwgJzxQZXJtLlJ8WDogNT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uWCksICc8UGVybS5SfFc6IDY+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XKSksICc8UGVybS5YOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCkpLCAnPFBlcm0uMDogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSh+MCkpLCAnPFBlcm0uUnxXfFg6IDc+JykKKworICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLlJPKSwgJzxPcGVuLlJPOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLldPKSwgJzxPcGVuLldPOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLkFDKSwgJzxPcGVuLkFDOiAzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLlJPIHwgT3Blbi5DRSksICc8T3Blbi5DRTogNTI0Mjg4PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLldPIHwgT3Blbi5DRSksICc8T3Blbi5DRXxXTzogNTI0Mjg5PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5STyksICc8T3Blbi5DRXxBQ3xSV3xXTzogNTI0MjkxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5XTyksICc8T3Blbi5DRXxSVzogNTI0MjkwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5BQyksICc8T3Blbi5DRTogNTI0Mjg4PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KE9wZW4uUk8gfCBPcGVuLkNFKSksICc8T3Blbi5BQzogMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLldPIHwgT3Blbi5DRSkpLCAnPE9wZW4uUlc6IDI+JykKKworICAgIGRlZiB0ZXN0X29yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKSwgUGVybShpLnZhbHVlIHwgai52YWx1ZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSB8IGopLnZhbHVlLCBpLnZhbHVlIHwgai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSB8IGopLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIHwgaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gfCBPcGVuLkNFLCBPcGVuLkNFKQorCisgICAgZGVmIHRlc3RfYW5kKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFJXID0gUGVybS5SIHwgUGVybS5XCisgICAgICAgIFJYID0gUGVybS5SIHwgUGVybS5YCisgICAgICAgIFdYID0gUGVybS5XIHwgUGVybS5YCisgICAgICAgIFJXWCA9IFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICB2YWx1ZXMgPSBsaXN0KFBlcm0pICsgW1JXLCBSWCwgV1gsIFJXWCwgUGVybSgwKV0KKyAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgorICAgICAgICAgICAgZm9yIGogaW4gdmFsdWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgJiBqKS52YWx1ZSwgaS52YWx1ZSAmIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgJiBqKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIGksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgJiBSV1gsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFJXWCAmIGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPICYgT3Blbi5DRSwgT3Blbi5STykKKworICAgIGRlZiB0ZXN0X3hvcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgZm9yIGogaW4gUGVybToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIF4gaikudmFsdWUsIGkudmFsdWUgXiBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIF4gaiksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgXiBQZXJtKDApLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhQZXJtKDApIF4gaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gXiBPcGVuLkNFLCBPcGVuLkNFKQorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uQ0UgXiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfaW52ZXJ0KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFJXID0gUGVybS5SIHwgUGVybS5XCisgICAgICAgIFJYID0gUGVybS5SIHwgUGVybS5YCisgICAgICAgIFdYID0gUGVybS5XIHwgUGVybS5YCisgICAgICAgIFJXWCA9IFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICB2YWx1ZXMgPSBsaXN0KFBlcm0pICsgW1JXLCBSWCwgV1gsIFJXWCwgUGVybSgwKV0KKyAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKH5pKSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwofn5pLCBpKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh+fmksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLldPICYgfk9wZW4uV08sIE9wZW4uUk8pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoKE9wZW4uV098T3Blbi5DRSkgJiB+T3Blbi5XTywgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGYgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIGZvciBmIGluIE9wZW46CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvb2woZi52YWx1ZSksIGJvb2woZikpCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmcoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgJ1IgVyBYJykKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ193aXRoX3N0YXJ0KHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsICdSIFcgWCcsIHN0YXJ0PTgpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gODw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfbGlzdChzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCBbJ1InLCAnVycsICdYJ10pCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9pdGVyYWJsZShzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCAoKCdSJywgMiksICgnVycsIDgpLCAoJ1gnLCAzMikpKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PCgyKmkrMSkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fZnJvbV9kaWN0KHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsIE9yZGVyZWREaWN0KCgoJ1InLCAyKSwgKCdXJywgOCksICgnWCcsIDMyKSkpKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PCgyKmkrMSkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKEZsYWdTdG9vZ2VzLCBFeGNlcHRpb24pOgorICAgICAgICAgICAgcmFpc2UgRmxhZ1N0b29nZXMKKyAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIEZsYWdTdG9vZ2VzLkNVUkxZfEZsYWdTdG9vZ2VzLk1PRSkKKyAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIEZsYWdTdG9vZ2VzKQorCisgICAgZGVmIHRlc3RfY29udGFpbm1lbnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUiwgVywgWCA9IFBlcm0KKyAgICAgICAgUlcgPSBSIHwgVworICAgICAgICBSWCA9IFIgfCBYCisgICAgICAgIFdYID0gVyB8IFgKKyAgICAgICAgUldYID0gUiB8IFcgfCBYCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUiBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShXIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFggaW4gUlcpCisKKyAgICBkZWYgdGVzdF9hdXRvX251bWJlcihzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRmxhZyk6CisgICAgICAgICAgICByZWQgPSBhdXRvKCkKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCA0KQorCisgICAgZGVmIHRlc3RfYXV0b19udW1iZXJfZ2FyYmFnZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ0ludmFsaWQgRmxhZyB2YWx1ZTogLm5vdCBhbiBpbnQuJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAgICAgICAgICAgICByZWQgPSAnbm90IGFuIGludCcKKyAgICAgICAgICAgICAgICBibHVlID0gYXV0bygpCisKKyAgICBkZWYgdGVzdF9jYXNjYWRpbmdfZmFpbHVyZShzZWxmKToKKyAgICAgICAgY2xhc3MgQml6YXJyZShGbGFnKToKKyAgICAgICAgICAgIGMgPSAzCisgICAgICAgICAgICBkID0gNAorICAgICAgICAgICAgZiA9IDYKKyAgICAgICAgIyBCaXphcnJlLmMgfCBCaXphcnJlLmQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiNSBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiNSBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiMiBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiMiBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiMSBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiMSBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgMSkKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9hdXRvKHNlbGYpOgorICAgICAgICBjbGFzcyBEdXBlcyhFbnVtKToKKyAgICAgICAgICAgIGZpcnN0ID0gcHJpbWVybyA9IGF1dG8oKQorICAgICAgICAgICAgc2Vjb25kID0gYXV0bygpCisgICAgICAgICAgICB0aGlyZCA9IGF1dG8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtEdXBlcy5maXJzdCwgRHVwZXMuc2Vjb25kLCBEdXBlcy50aGlyZF0sIGxpc3QoRHVwZXMpKQorCisgICAgZGVmIHRlc3RfYml6YXJyZShzZWxmKToKKyAgICAgICAgY2xhc3MgQml6YXJyZShGbGFnKToKKyAgICAgICAgICAgIGIgPSAzCisgICAgICAgICAgICBjID0gNAorICAgICAgICAgICAgZCA9IDYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEJpemFycmUoNykpLCAnPEJpemFycmUuZHxjfGI6IDc+JykKKworCitjbGFzcyBUZXN0SW50RmxhZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgb2YgdGhlIEludEZsYWdzLiIiIgorCisgICAgY2xhc3MgUGVybShJbnRGbGFnKToKKyAgICAgICAgWCA9IDEgPDwgMAorICAgICAgICBXID0gMSA8PCAxCisgICAgICAgIFIgPSAxIDw8IDIKKworICAgIGNsYXNzIE9wZW4oSW50RmxhZyk6CisgICAgICAgIFJPID0gMAorICAgICAgICBXTyA9IDEKKyAgICAgICAgUlcgPSAyCisgICAgICAgIEFDID0gMworICAgICAgICBDRSA9IDE8PDE5CisKKyAgICBkZWYgdGVzdF90eXBlKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgZm9yIGYgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGYsIFBlcm0pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBmLnZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShQZXJtLlcgfCBQZXJtLlgsIFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBlcm0uVyB8IFBlcm0uWCwgMykKKyAgICAgICAgZm9yIGYgaW4gT3BlbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGYsIE9wZW4pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBmLnZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShPcGVuLldPIHwgT3Blbi5SVywgT3BlbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoT3Blbi5XTyB8IE9wZW4uUlcsIDMpCisKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIpLCAnUGVybS5SJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5XKSwgJ1Blcm0uVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uWCksICdQZXJtLlgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCBQZXJtLlcpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnUGVybS5SfFd8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IDgpLCAnUGVybS44fFInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKDApKSwgJ1Blcm0uMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0oOCkpLCAnUGVybS44JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uUiksICdQZXJtLld8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlcpLCAnUGVybS5SfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5YKSwgJ1Blcm0uUnxXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcpKSwgJ1Blcm0uWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSksICdQZXJtLi04JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCA4KSksICdQZXJtLld8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0ofjApKSwgJ1Blcm0uUnxXfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKH44KSksICdQZXJtLlJ8V3xYJykKKworICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uUk8pLCAnT3Blbi5STycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08pLCAnT3Blbi5XTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uQUMpLCAnT3Blbi5BQycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uUk8gfCBPcGVuLkNFKSwgJ09wZW4uQ0UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLldPIHwgT3Blbi5DRSksICdPcGVuLkNFfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbig0KSksICdPcGVuLjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5STyksICdPcGVuLkNFfEFDfFJXfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uV08pLCAnT3Blbi5DRXxSVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLkFDKSwgJ09wZW4uQ0UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uUk8gfCBPcGVuLkNFKSksICdPcGVuLkFDfFJXfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihPcGVuLldPIHwgT3Blbi5DRSkpLCAnT3Blbi5SVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4ofjQpKSwgJ09wZW4uQ0V8QUN8Uld8V08nKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SKSwgJzxQZXJtLlI6IDQ+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uVyksICc8UGVybS5XOiAyPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlgpLCAnPFBlcm0uWDogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SIHwgUGVybS5XKSwgJzxQZXJtLlJ8VzogNj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSwgJzxQZXJtLlJ8V3xYOiA3PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCA4KSwgJzxQZXJtLjh8UjogMTI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0oMCkpLCAnPFBlcm0uMDogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSg4KSksICc8UGVybS44OiA4PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5SKSwgJzxQZXJtLld8WDogLTU+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlcpLCAnPFBlcm0uUnxYOiAtMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uWCksICc8UGVybS5SfFc6IC0yPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IFBlcm0uVykpLCAnPFBlcm0uWDogLTc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSksICc8UGVybS4tODogLTg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgOCkpLCAnPFBlcm0uV3xYOiAtMTM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0ofjApKSwgJzxQZXJtLlJ8V3xYOiAtMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSh+OCkpLCAnPFBlcm0uUnxXfFg6IC05PicpCisKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5STyksICc8T3Blbi5STzogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5XTyksICc8T3Blbi5XTzogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5BQyksICc8T3Blbi5BQzogMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnPE9wZW4uQ0U6IDUyNDI4OD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5XTyB8IE9wZW4uQ0UpLCAnPE9wZW4uQ0V8V086IDUyNDI4OT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbig0KSksICc8T3Blbi40OiA0PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5STyksICc8T3Blbi5DRXxBQ3xSV3xXTzogLTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLldPKSwgJzxPcGVuLkNFfFJXOiAtMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uQUMpLCAnPE9wZW4uQ0U6IC00PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KE9wZW4uUk8gfCBPcGVuLkNFKSksICc8T3Blbi5BQ3xSV3xXTzogLTUyNDI4OT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLldPIHwgT3Blbi5DRSkpLCAnPE9wZW4uUlc6IC01MjQyOTA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4ofjQpKSwgJzxPcGVuLkNFfEFDfFJXfFdPOiAtNT4nKQorCisgICAgZGVmIHRlc3Rfb3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpIHwgaiwgaS52YWx1ZSB8IGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSB8IGopLnZhbHVlLCBpLnZhbHVlIHwgai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSB8IGopLCBQZXJtKQorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoOCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpIHwgaiwgaS52YWx1ZSB8IGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSB8IGopLnZhbHVlLCBpLnZhbHVlIHwgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSB8IGopLCBQZXJtKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaiB8IGksIGogfCBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGogfCBpKS52YWx1ZSwgaiB8IGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGogfCBpKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSB8IGksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgfCAwLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcygwIHwgaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gfCBPcGVuLkNFLCBPcGVuLkNFKQorCisgICAgZGVmIHRlc3RfYW5kKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFJXID0gUGVybS5SIHwgUGVybS5XCisgICAgICAgIFJYID0gUGVybS5SIHwgUGVybS5YCisgICAgICAgIFdYID0gUGVybS5XIHwgUGVybS5YCisgICAgICAgIFJXWCA9IFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICB2YWx1ZXMgPSBsaXN0KFBlcm0pICsgW1JXLCBSWCwgV1gsIFJXWCwgUGVybSgwKV0KKyAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgorICAgICAgICAgICAgZm9yIGogaW4gdmFsdWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSAmIGosIGkudmFsdWUgJiBqLnZhbHVlLCAnaSBpcyAlciwgaiBpcyAlcicgJSAoaSwgaikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSAmIGopLnZhbHVlLCBpLnZhbHVlICYgai52YWx1ZSwgJ2kgaXMgJXIsIGogaXMgJXInICUgKGksIGopKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpICYgaiksIFBlcm0sICdpIGlzICVyLCBqIGlzICVyJyAlIChpLCBqKSkKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSAmIGosIGkudmFsdWUgJiBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgJiBqKS52YWx1ZSwgaS52YWx1ZSAmIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgJiBqKSwgUGVybSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGogJiBpLCBqICYgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChqICYgaSkudmFsdWUsIGogJiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShqICYgaSksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgJiBpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgNywgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoNyAmIGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPICYgT3Blbi5DRSwgT3Blbi5STykKKworICAgIGRlZiB0ZXN0X3hvcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgZm9yIGogaW4gUGVybToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgXiBqLCBpLnZhbHVlIF4gai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIF4gaikudmFsdWUsIGkudmFsdWUgXiBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIF4gaiksIFBlcm0pCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSg4KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgXiBqLCBpLnZhbHVlIF4gaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIF4gaikudmFsdWUsIGkudmFsdWUgXiBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIF4gaiksIFBlcm0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqIF4gaSwgaiBeIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaiBeIGkpLnZhbHVlLCBqIF4gaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaiBeIGkpLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIF4gMCwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoMCBeIGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIF4gT3Blbi5DRSwgT3Blbi5DRSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLkNFIF4gT3Blbi5DRSwgT3Blbi5STykKKworICAgIGRlZiB0ZXN0X2ludmVydChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwofmksIH5pLnZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgofmkpLnZhbHVlLCB+aS52YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSh+aSksIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKH5+aSwgaSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMofn5pLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5XTyAmIH5PcGVuLldPLCBPcGVuLlJPKQorICAgICAgICBzZWxmLmFzc2VydElzKChPcGVuLldPfE9wZW4uQ0UpICYgfk9wZW4uV08sIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmcoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgJ1IgVyBYJykKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ193aXRoX3N0YXJ0KHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsICdSIFcgWCcsIHN0YXJ0PTgpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gODw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfbGlzdChzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCBbJ1InLCAnVycsICdYJ10pCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9pdGVyYWJsZShzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCAoKCdSJywgMiksICgnVycsIDgpLCAoJ1gnLCAzMikpKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PCgyKmkrMSkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fZnJvbV9kaWN0KHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsIE9yZGVyZWREaWN0KCgoJ1InLCAyKSwgKCdXJywgOCksICgnWCcsIDMyKSkpKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PCgyKmkrMSkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisKKyAgICBkZWYgdGVzdF9jb250YWlubWVudChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSLCBXLCBYID0gUGVybQorICAgICAgICBSVyA9IFIgfCBXCisgICAgICAgIFJYID0gUiB8IFgKKyAgICAgICAgV1ggPSBXIHwgWAorICAgICAgICBSV1ggPSBSIHwgVyB8IFgKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFJXKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShSIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFcgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoWCBpbiBSVykKKworICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGYgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIGZvciBmIGluIE9wZW46CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvb2woZi52YWx1ZSksIGJvb2woZikpCiAKIGNsYXNzIFRlc3RVbmlxdWUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNzM5LDUgKzI0NjYsNDcgQEAKICAgICAgICAgaWYgZmFpbGVkOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJyZXN1bHQgZG9lcyBub3QgZXF1YWwgZXhwZWN0ZWQsIHNlZSBwcmludCBhYm92ZSIpCiAKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGVudW0pCisKKworIyBUaGVzZSBhcmUgdW5vcmRlcmVkIGhlcmUgb24gcHVycG9zZSB0byBlbnN1cmUgdGhhdCBkZWNsYXJhdGlvbiBvcmRlcgorIyBtYWtlcyBubyBkaWZmZXJlbmNlLgorQ09OVkVSVF9URVNUX05BTUVfRCA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0MgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9CID0gNQorQ09OVkVSVF9URVNUX05BTUVfQSA9IDUgICMgVGhpcyBvbmUgc2hvdWxkIHNvcnQgZmlyc3QuCitDT05WRVJUX1RFU1RfTkFNRV9FID0gNQorQ09OVkVSVF9URVNUX05BTUVfRiA9IDUKKworY2xhc3MgVGVzdEludEVudW1Db252ZXJ0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9jb252ZXJ0X3ZhbHVlX2xvb2t1cF9wcmlvcml0eShzZWxmKToKKyAgICAgICAgdGVzdF90eXBlID0gZW51bS5JbnRFbnVtLl9jb252ZXJ0KAorICAgICAgICAgICAgICAgICdVbml0dGVzdENvbnZlcnQnLCAndGVzdC50ZXN0X2VudW0nLAorICAgICAgICAgICAgICAgIGZpbHRlcj1sYW1iZGEgeDogeC5zdGFydHN3aXRoKCdDT05WRVJUX1RFU1RfJykpCisgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0aGUgcmV2ZXJzZSBsb29rdXAgdmFsdWUgdG8gdmFyeSB3aGVuIHRoZXJlIGFyZQorICAgICAgICAjIG11bHRpcGxlIHBvc3NpYmxlIG5hbWVzIGZvciBhIGdpdmVuIHZhbHVlLiAgSXQgc2hvdWxkIGFsd2F5cworICAgICAgICAjIHJlcG9ydCB0aGUgZmlyc3QgbGV4aWdyYXBoaWNhbCBuYW1lIGluIHRoYXQgY2FzZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUoNSkubmFtZSwgJ0NPTlZFUlRfVEVTVF9OQU1FX0EnKQorCisgICAgZGVmIHRlc3RfY29udmVydChzZWxmKToKKyAgICAgICAgdGVzdF90eXBlID0gZW51bS5JbnRFbnVtLl9jb252ZXJ0KAorICAgICAgICAgICAgICAgICdVbml0dGVzdENvbnZlcnQnLCAndGVzdC50ZXN0X2VudW0nLAorICAgICAgICAgICAgICAgIGZpbHRlcj1sYW1iZGEgeDogeC5zdGFydHN3aXRoKCdDT05WRVJUX1RFU1RfJykpCisgICAgICAgICMgRW5zdXJlIHRoYXQgdGVzdF90eXBlIGhhcyBhbGwgb2YgdGhlIGRlc2lyZWQgbmFtZXMgYW5kIHZhbHVlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfQiwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfQywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfRCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfRSwgNSkKKyAgICAgICAgIyBFbnN1cmUgdGhhdCB0ZXN0X3R5cGUgb25seSBwaWNrZWQgdXAgbmFtZXMgbWF0Y2hpbmcgdGhlIGZpbHRlci4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbmFtZSBmb3IgbmFtZSBpbiBkaXIodGVzdF90eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuYW1lWzA6Ml0gbm90IGluICgnQ08nLCAnX18nKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW10sIG1zZz0nTmFtZXMgb3RoZXIgdGhhbiBDT05WRVJUX1RFU1RfKiBmb3VuZC4nKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5CmluZGV4IDI2MzBjZjIuLmU0NTVhZGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5CkBAIC0yMjMsNyArMjIzLDcgQEAKICAgICBkZWYgdGVzdF9vYmptZXRob2RzKHNlbGYpOgogICAgICAgICAjIE9iamVjdHMgbXVzdCBoYXZlIF9fbGVuX18oKSBhbmQgX19nZXRpdGVtX18oKSBpbXBsZW1lbnRlZC4KICAgICAgICAgY2xhc3MgTm9MZW4ob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmKTogcmV0dXJuIDEKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKTogcmV0dXJuIDEKICAgICAgICAgbmwgPSBOb0xlbigpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIG5sKQogCkBAIC0yMzIsNiArMjMyLDEzIEBACiAgICAgICAgIG5naSA9IE5vR2V0SXRlbSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIG5naSkKIAorICAgICAgICBjbGFzcyBCbG9ja2VkKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6IHJldHVybiAxCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDIKKyAgICAgICAgICAgIF9fcmV2ZXJzZWRfXyA9IE5vbmUKKyAgICAgICAgYiA9IEJsb2NrZWQoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBiKQorCiAgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgogICAgICAgICBmb3IgZGF0YSBpbiAnYWJjJywgcmFuZ2UoNSksIHR1cGxlKGVudW1lcmF0ZSgnYWJjJykpLCByYW5nZSgxLDE3LDUpOgogICAgICAgICAgICAgc2VsZi5jaGVja19waWNrbGUocmV2ZXJzZWQoZGF0YSksIGxpc3QoZGF0YSlbOjotMV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQppbmRleCBhNzM1OWU5Li5hN2FmZjhhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKQEAgLTI4LDcgKzI4LDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpZiBub3QgaGFzYXR0cihzZWxlY3QsICJlcG9sbCIpOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IHdvcmtzIG9ubHkgb24gTGludXggMi42IikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5IGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25faGllcmFyY2h5LnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9leGNlcHRpb25faGllcmFyY2h5LnB5CmluZGV4IDdiMGQ0NjUuLjg2NDk1OTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl9oaWVyYXJjaHkucHkKQEAgLTIsNyArMiw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzb2NrZXQKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGVycm5vCiBmcm9tIGVycm5vIGltcG9ydCBFRVhJU1QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQppbmRleCA5NmMzYTQ4Li40ODM3OTIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CkBAIC0xMTA5LDcgKzExMDksNiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgogICAgICAgICAgICAgSW1wb3J0RXJyb3IoaW52YWxpZD0na2V5d29yZCcpCiAKLSAgICAgICAgbXNnID0gIidpbnZhbGlkfGFub3RoZXInIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKICAgICAgICAgICAgIEltcG9ydEVycm9yKCd0ZXN0JywgaW52YWxpZD0na2V5d29yZCcsIGFub3RoZXI9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CmluZGV4IDAxNWNkZmMuLjA0M2RmMDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKQEAgLTIzOCw2ICsyMzgsMTEgQEAKICAgICAgIC4uLgogICAgIFR5cGVFcnJvcjogaCgpIGFyZ3VtZW50IGFmdGVyICogbXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90IGZ1bmN0aW9uCiAKKyAgICA+Pj4gaCgqWzFdLCAqaCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGgoKSBhcmd1bWVudCBhZnRlciAqIG11c3QgYmUgYW4gaXRlcmFibGUsIG5vdCBmdW5jdGlvbgorCiAgICAgPj4+IGRpcigqaCkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KQEAgLTI2OSw2ICsyNzQsMTYgQEAKICAgICAgIC4uLgogICAgIFR5cGVFcnJvcjogaCgpIGFyZ3VtZW50IGFmdGVyICoqIG11c3QgYmUgYSBtYXBwaW5nLCBub3QgbGlzdAogCisgICAgPj4+IGgoKip7J2EnOiAxfSwgKipoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogaCgpIGFyZ3VtZW50IGFmdGVyICoqIG11c3QgYmUgYSBtYXBwaW5nLCBub3QgZnVuY3Rpb24KKworICAgID4+PiBoKCoqeydhJzogMX0sICoqW10pCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBoKCkgYXJndW1lbnQgYWZ0ZXIgKiogbXVzdCBiZSBhIG1hcHBpbmcsIG5vdCBsaXN0CisKICAgICA+Pj4gZGlyKCoqaCkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKaW5kZXggMTU2MmVlYy4uMjJjY2JjOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKQEAgLTIzLDYgKzIzLDcgQEAKICAgICBfdGVzdGNhcGkgPSBOb25lCiAKIFRJTUVPVVQgPSAwLjUKK01TX1dJTkRPV1MgPSAob3MubmFtZSA9PSAnbnQnKQogCiBkZWYgZXhwZWN0ZWRfdHJhY2ViYWNrKGxpbmVubzEsIGxpbmVubzIsIGhlYWRlciwgbWluX2NvdW50PTEpOgogICAgIHJlZ2V4ID0gaGVhZGVyCkBAIC01OCw4ICs1OSw5IEBACiAgICAgICAgICAgICBwYXNzX2Zkcy5hcHBlbmQoZmQpCiAgICAgICAgIHdpdGggc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCk6CiAgICAgICAgICAgICBwcm9jZXNzID0gc2NyaXB0X2hlbHBlci5zcGF3bl9weXRob24oJy1jJywgY29kZSwgcGFzc19mZHM9cGFzc19mZHMpCi0gICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgICAgIHdpdGggcHJvY2VzczoKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKICAgICAgICAgb3V0cHV0ID0gc3VwcG9ydC5zdHJpcF9weXRob25fc3RkZXJyKHN0ZG91dCkKICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCiAgICAgICAgIGlmIGZpbGVuYW1lOgpAQCAtNzMsMTQgKzc1LDExIEBACiAgICAgICAgICAgICB3aXRoIG9wZW4oZmQsICJyYiIsIGNsb3NlZmQ9RmFsc2UpIGFzIGZwOgogICAgICAgICAgICAgICAgIG91dHB1dCA9IGZwLnJlYWQoKQogICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCi0gICAgICAgIG91dHB1dCA9IHJlLnN1YignQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ0N1cnJlbnQgdGhyZWFkIFhYWCcsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpCiAgICAgICAgIHJldHVybiBvdXRwdXQuc3BsaXRsaW5lcygpLCBleGl0Y29kZQogCi0gICAgZGVmIGNoZWNrX2ZhdGFsX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1Ob25lLCBhbGxfdGhyZWFkcz1UcnVlLCBvdGhlcl9yZWdleD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmZD1Ob25lKToKKyAgICBkZWYgY2hlY2tfZXJyb3Ioc2VsZiwgY29kZSwgbGluZV9udW1iZXIsIGZhdGFsX2Vycm9yLCAqLAorICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1Ob25lLCBhbGxfdGhyZWFkcz1UcnVlLCBvdGhlcl9yZWdleD1Ob25lLAorICAgICAgICAgICAgICAgICAgICBmZD1Ob25lLCBrbm93X2N1cnJlbnRfdGhyZWFkPVRydWUpOgogICAgICAgICAiIiIKICAgICAgICAgQ2hlY2sgdGhhdCB0aGUgZmF1bHQgaGFuZGxlciBmb3IgZmF0YWwgZXJyb3JzIGlzIGVuYWJsZWQgYW5kIGNoZWNrIHRoZQogICAgICAgICB0cmFjZWJhY2sgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBvdXRwdXQuCkBAIC04OCwxOSArODcsMjIgQEAKICAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCiAgICAgICAgICIiIgogICAgICAgICBpZiBhbGxfdGhyZWFkczoKLSAgICAgICAgICAgIGhlYWRlciA9ICdDdXJyZW50IHRocmVhZCBYWFggKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpJworICAgICAgICAgICAgaWYga25vd19jdXJyZW50X3RocmVhZDoKKyAgICAgICAgICAgICAgICBoZWFkZXIgPSAnQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGhlYWRlciA9ICdUaHJlYWQgMHhbMC05YS1mXSsnCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBoZWFkZXIgPSAnU3RhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpJwotICAgICAgICByZWdleCA9ICIiIgotICAgICAgICAgICAgXkZhdGFsIFB5dGhvbiBlcnJvcjoge25hbWV9CisgICAgICAgICAgICBoZWFkZXIgPSAnU3RhY2snCisgICAgICAgIHJlZ2V4ID0gciIiIgorICAgICAgICAgICAgXntmYXRhbF9lcnJvcn0KIAotICAgICAgICAgICAge2hlYWRlcn06CisgICAgICAgICAgICB7aGVhZGVyfSBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKICAgICAgICAgICAgICAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIHtsaW5lbm99IGluIDxtb2R1bGU+CiAgICAgICAgICAgICAiIiIKICAgICAgICAgcmVnZXggPSBkZWRlbnQocmVnZXguZm9ybWF0KAogICAgICAgICAgICAgbGluZW5vPWxpbmVfbnVtYmVyLAotICAgICAgICAgICAgbmFtZT1uYW1lX3JlZ2V4LAotICAgICAgICAgICAgaGVhZGVyPXJlLmVzY2FwZShoZWFkZXIpKSkuc3RyaXAoKQorICAgICAgICAgICAgZmF0YWxfZXJyb3I9ZmF0YWxfZXJyb3IsCisgICAgICAgICAgICBoZWFkZXI9aGVhZGVyKSkuc3RyaXAoKQogICAgICAgICBpZiBvdGhlcl9yZWdleDoKICAgICAgICAgICAgIHJlZ2V4ICs9ICd8JyArIG90aGVyX3JlZ2V4CiAgICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWU9ZmlsZW5hbWUsIGZkPWZkKQpAQCAtMTA4LDE3ICsxMTAsMzYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXRwdXQsIHJlZ2V4KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4aXRjb2RlLCAwKQogCisgICAgZGVmIGNoZWNrX2ZhdGFsX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LCAqKmt3KToKKyAgICAgICAgZmF0YWxfZXJyb3IgPSAnRmF0YWwgUHl0aG9uIGVycm9yOiAlcycgJSBuYW1lX3JlZ2V4CisgICAgICAgIHNlbGYuY2hlY2tfZXJyb3IoY29kZSwgbGluZV9udW1iZXIsIGZhdGFsX2Vycm9yLCAqKmt3KQorCisgICAgZGVmIGNoZWNrX3dpbmRvd3NfZXhjZXB0aW9uKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LCAqKmt3KToKKyAgICAgICAgZmF0YWxfZXJyb3IgPSAnV2luZG93cyBmYXRhbCBleGNlcHRpb246ICVzJyAlIG5hbWVfcmVnZXgKKyAgICAgICAgc2VsZi5jaGVja19lcnJvcihjb2RlLCBsaW5lX251bWJlciwgZmF0YWxfZXJyb3IsICoqa3cpCisKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdhaXgnKSwKICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZmlyc3QgcGFnZSBvZiBtZW1vcnkgaXMgYSBtYXBwZWQgcmVhZC1vbmx5IG9uIEFJWCIpCiAgICAgZGVmIHRlc3RfcmVhZF9udWxsKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgotICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgotICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCi0gICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCi0gICAgICAgICAgICAiIiIsCi0gICAgICAgICAgICAzLAotICAgICAgICAgICAgIyBJc3N1ZSAjMTI3MDA6IFJlYWQgTlVMTCByYWlzZXMgU0lHSUxMIG9uIE1hYyBPUyBYIExpb24KLSAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJykKKyAgICAgICAgaWYgbm90IE1TX1dJTkRPV1M6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIDMsCisgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTI3MDA6IFJlYWQgTlVMTCByYWlzZXMgU0lHSUxMIG9uIE1hYyBPUyBYIExpb24KKyAgICAgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0JworICAgICAgICAgICAgICAgICAgICAnfEJ1cyBlcnJvcicKKyAgICAgICAgICAgICAgICAgICAgJ3xJbGxlZ2FsIGluc3RydWN0aW9uKScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpbmRvd3NfZXhjZXB0aW9uKCIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIDMsCisgICAgICAgICAgICAgICAgJ2FjY2VzcyB2aW9sYXRpb24nKQogCiAgICAgZGVmIHRlc3Rfc2lnc2VndihzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKQEAgLTEyOSw2ICsxNTAsMTcgQEAKICAgICAgICAgICAgIDMsCiAgICAgICAgICAgICAnU2VnbWVudGF0aW9uIGZhdWx0JykKIAorICAgIEB1bml0dGVzdC5za2lwSWYobm90IEhBVkVfVEhSRUFEUywgJ25lZWQgdGhyZWFkcycpCisgICAgZGVmIHRlc3RfZmF0YWxfZXJyb3JfY190aHJlYWQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCisgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fZmF0YWxfZXJyb3JfY190aHJlYWQoKQorICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdpbiBuZXcgdGhyZWFkJywKKyAgICAgICAgICAgIGtub3dfY3VycmVudF90aHJlYWQ9RmFsc2UpCisKICAgICBkZWYgdGVzdF9zaWdhYnJ0KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgpAQCAtNDU4LDE0ICs0OTAsMTQgQEAKICAgICAgICAgICAgIGxpbmVubyA9IDgKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxpbmVubyA9IDEwCi0gICAgICAgIHJlZ2V4ID0gIiIiCisgICAgICAgIHJlZ2V4ID0gciIiIgogICAgICAgICAgICAgXlRocmVhZCAweFswLTlhLWZdKyBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKICAgICAgICAgICAgICg/OiAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBbX2Etel0rCiAgICAgICAgICAgICApe3sxLDN9fSAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDIzIGluIHJ1bgogICAgICAgICAgICAgICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIF9ib290c3RyYXBfaW5uZXIKICAgICAgICAgICAgICAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBfYm9vdHN0cmFwCiAKLSAgICAgICAgICAgIEN1cnJlbnQgdGhyZWFkIFhYWCBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgICAgICAgICAgIEN1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgogICAgICAgICAgICAgICBGaWxlICI8c3RyaW5nPiIsIGxpbmUge2xpbmVub30gaW4gZHVtcAogICAgICAgICAgICAgICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjggaW4gPG1vZHVsZT4kCiAgICAgICAgICAgICAiIiIKQEAgLTYzNyw5ICs2NjksOSBAQAogICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKICAgICAgICAgaWYgbm90IHVucmVnaXN0ZXI6CiAgICAgICAgICAgICBpZiBhbGxfdGhyZWFkczoKLSAgICAgICAgICAgICAgICByZWdleCA9ICdDdXJyZW50IHRocmVhZCBYWFggXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCisgICAgICAgICAgICAgICAgcmVnZXggPSByJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZWdleCA9ICdTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKKyAgICAgICAgICAgICAgICByZWdleCA9IHInU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCiAgICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjaygxNCwgMzIsIHJlZ2V4KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCiAgICAgICAgIGVsc2U6CkBAIC02OTYsNiArNzI4LDIyIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuY2hlY2tfc3RkZXJyX25vbmUoKToKICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbmFsLlNJR1VTUjEpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhNU19XSU5ET1dTLCAnc3BlY2lmaWMgdG8gV2luZG93cycpCisgICAgZGVmIHRlc3RfcmFpc2VfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBmb3IgZXhjLCBuYW1lIGluICgKKyAgICAgICAgICAgICgnRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04nLCAnYWNjZXNzIHZpb2xhdGlvbicpLAorICAgICAgICAgICAgKCdFWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPJywgJ2ludCBkaXZpZGUgYnkgemVybycpLAorICAgICAgICAgICAgKCdFWENFUFRJT05fU1RBQ0tfT1ZFUkZMT1cnLCAnc3RhY2sgb3ZlcmZsb3cnKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfd2luZG93c19leGNlcHRpb24oZiIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JhaXNlX2V4Y2VwdGlvbihmYXVsdGhhbmRsZXIuX3tleGN9KQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgIG5hbWUpCisKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlLnB5CmluZGV4IDRlMzkyYjcuLjY1YmUzMGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKQEAgLTcsNyArNyw3IEBACiBpbXBvcnQgaW8KIGltcG9ydCBfcHlpbyBhcyBweWlvCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTgogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckxpc3QKIAogY2xhc3MgQXV0b0ZpbGVUZXN0czoKQEAgLTEzOSw3ICsxMzksNyBAQAogCiAgICAgZGVmIHRlc3RNb2RlU3RyaW5ncyhzZWxmKToKICAgICAgICAgIyBjaGVjayBpbnZhbGlkIG1vZGUgc3RyaW5ncwotICAgICAgICBmb3IgbW9kZSBpbiAoIiIsICJhVSIsICJ3VSsiKToKKyAgICAgICAgZm9yIG1vZGUgaW4gKCIiLCAiYVUiLCAid1UrIiwgIlUrIiwgIitVIiwgInJVKyIpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGYgPSBzZWxmLm9wZW4oVEVTVEZOLCBtb2RlKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CmluZGV4IDc4NGJjOTIuLjU2NTYzM2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CkBAIC0yMiw4ICsyMiw5IEBACiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTwogZnJvbSBmaWxlaW5wdXQgaW1wb3J0IEZpbGVJbnB1dCwgaG9va19lbmNvZGVkCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHJ1bl91bml0dGVzdCwgY2hlY2tfd2FybmluZ3MKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIGNoZWNrX3dhcm5pbmdzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdW5saW5rIGFzIHNhZmVfdW5saW5rCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIAogCkBAIC05Miw3ICs5MywxMSBAQAogICAgICAgICAgICAgICAgIHQyID0gd3JpdGVUbXAoMiwgWyJMaW5lICVzIG9mIGZpbGUgMlxuIiAlIChpKzEpIGZvciBpIGluIHJhbmdlKDEwKV0pCiAgICAgICAgICAgICAgICAgdDMgPSB3cml0ZVRtcCgzLCBbIkxpbmUgJXMgb2YgZmlsZSAzXG4iICUgKGkrMSkgZm9yIGkgaW4gcmFuZ2UoNSldKQogICAgICAgICAgICAgICAgIHQ0ID0gd3JpdGVUbXAoNCwgWyJMaW5lICVzIG9mIGZpbGUgNFxuIiAlIChpKzEpIGZvciBpIGluIHJhbmdlKDEpXSkKLSAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlcl9zaXplX3Rlc3QodDEsIHQyLCB0MywgdDQsIGJzLCByb3VuZCkKKyAgICAgICAgICAgICAgICBpZiBiczoKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlcl9zaXplX3Rlc3QodDEsIHQyLCB0MywgdDQsIGJzLCByb3VuZCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlcl9zaXplX3Rlc3QodDEsIHQyLCB0MywgdDQsIGJzLCByb3VuZCkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgcmVtb3ZlX3RlbXBmaWxlcyh0MSwgdDIsIHQzLCB0NCkKIApAQCAtOTQwLDcgKzk0NSw4IEBACiAKICAgICBkZWYgdGVzdChzZWxmKToKICAgICAgICAgZW5jb2RpbmcgPSBvYmplY3QoKQotICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaG9va19lbmNvZGVkKGVuY29kaW5nKQorICAgICAgICBlcnJvcnMgPSBvYmplY3QoKQorICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaG9va19lbmNvZGVkKGVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQogCiAgICAgICAgIGZha2Vfb3BlbiA9IEludm9jYXRpb25SZWNvcmRlcigpCiAgICAgICAgIG9yaWdpbmFsX29wZW4gPSBidWlsdGlucy5vcGVuCkBAIC05NTgsOCArOTY0LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYXJnc1swXSwgZmlsZW5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYXJnc1sxXSwgbW9kZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhrd2FyZ3MucG9wKCdlbmNvZGluZycpLCBlbmNvZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhrd2FyZ3MucG9wKCdlcnJvcnMnKSwgZXJyb3JzKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGt3YXJncykKIAorICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYidceDgwYWJjJykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNhZmVfdW5saW5rLCBURVNURk4pCisKKyAgICAgICAgZGVmIGNoZWNrKGVycm9ycywgZXhwZWN0ZWRfbGluZXMpOgorICAgICAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9VEVTVEZOLCBtb2RlPSdyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5ob29rPWhvb2tfZW5jb2RlZCgndXRmLTgnLCBlcnJvcnM9ZXJyb3JzKSkgYXMgZmk6CisgICAgICAgICAgICAgICAgbGluZXMgPSBsaXN0KGZpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgZXhwZWN0ZWRfbGluZXMpCisKKyAgICAgICAgY2hlY2soJ2lnbm9yZScsIFsnYWJjJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKToKKyAgICAgICAgICAgIGNoZWNrKCdzdHJpY3QnLCBbJ2FiYyddKQorICAgICAgICBjaGVjaygncmVwbGFjZScsIFsnXHVmZmZkYWJjJ10pCisgICAgICAgIGNoZWNrKCdiYWNrc2xhc2hyZXBsYWNlJywgWydcXHg4MGFiYyddKQorCiAgICAgZGVmIHRlc3RfbW9kZXMoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGY6CiAgICAgICAgICAgICAjIFVURi03IGlzIGEgY29udmVuaWVudCwgc2VsZG9tIHVzZWQgZW5jb2RpbmcKQEAgLTk4MSw1ICsxMDA1LDExIEBACiAgICAgICAgICAgICBjaGVjaygncmInLCBbJ0FcbicsICdCXHJcbicsICdDXHInLCAnRFx1MjBhYyddKQogCiAKK2NsYXNzIE1pc2NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZmlsZWlucHV0KQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5IGIvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQppbmRleCBjYjFmNmRiLi5hYzg0NzNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKQEAgLTEsNiArMSw0IEBACi0KIGltcG9ydCBmcmFjdGlvbnMKLWltcG9ydCBtYXRoCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBvcwogaW1wb3J0IHJhbmRvbQpAQCAtMTAsNiArOCw4IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QudGVzdF9ncmFtbWFyIGltcG9ydCAoVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMpCiBmcm9tIG1hdGggaW1wb3J0IGlzaW5mLCBpc25hbiwgY29weXNpZ24sIGxkZXhwCiAKIElORiA9IGZsb2F0KCJpbmYiKQpAQCAtNjEsNiArNjEsMjcgQEAKICAgICAgICAgZmxvYXQoYicuJyArIGInMScqMTAwMCkKICAgICAgICAgZmxvYXQoJy4nICsgJzEnKjEwMDApCiAKKyAgICBkZWYgdGVzdF91bmRlcnNjb3JlcyhzZWxmKToKKyAgICAgICAgZm9yIGxpdCBpbiBWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbm90IGFueShjaCBpbiBsaXQgZm9yIGNoIGluICdqSnhYb09iQicpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQobGl0KSwgZXZhbChsaXQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQobGl0KSwgZmxvYXQobGl0LnJlcGxhY2UoJ18nLCAnJykpKQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGxpdCBpbiAoJzBfNycsICcwOV85OScpOiAgIyBvY3RhbHMgYXJlIG5vdCByZWNvZ25pemVkIGhlcmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbm90IGFueShjaCBpbiBsaXQgZm9yIGNoIGluICdqSnhYb09iQicpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCBsaXQpCisgICAgICAgICMgQWRkaXRpb25hbCB0ZXN0IGNhc2VzOyBuYW4gYW5kIGluZiBhcmUgbmV2ZXIgdmFsaWQgYXMgbGl0ZXJhbHMsCisgICAgICAgICMgb25seSBpbiB0aGUgZmxvYXQoKSBjb25zdHJ1Y3RvciwgYnV0IHdlIGRvbid0IGFsbG93IHVuZGVyc2NvcmVzCisgICAgICAgICMgaW4gb3IgYXJvdW5kIHRoZW0uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnX05hTicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnTmFfTicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnSU5fRicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnLV9JTkYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJy1JTkZfJykKKyAgICAgICAgIyBDaGVjayB0aGF0IHdlIGhhbmRsZSBieXRlcyB2YWx1ZXMgY29ycmVjdGx5LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgYicwXy5ceGZmOScpCisKICAgICBkZWYgdGVzdF9ub25fbnVtZXJpY19pbnB1dF90eXBlcyhzZWxmKToKICAgICAgICAgIyBUZXN0IHBvc3NpYmxlIG5vbi1udW1lcmljIHR5cGVzIGZvciB0aGUgYXJndW1lbnQgeCwgaW5jbHVkaW5nCiAgICAgICAgICMgc3ViY2xhc3NlcyBvZiB0aGUgZXhwbGljaXRseSBkb2N1bWVudGVkIGFjY2VwdGVkIHR5cGVzLgpAQCAtMTYyLDExICsxODMsMTIgQEAKICAgICAgICAgICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0KHN0cihzZWxmKSkgKyAxCiAKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb28xKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRm9vMigpKSwgNDIuKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvbzMoMjEpKSwgNDIuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvbzEoKSksIDQyLikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGb28yKCkpLCA0Mi4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGb28zKDIxKSksIDQyLikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmbG9hdCwgRm9vNCg0MikpCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRm9vU3RyKCc4JykpLCA5LikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGb29TdHIoJzgnKSksIDkuKQogCiAgICAgICAgIGNsYXNzIEZvbzU6CiAgICAgICAgICAgICBkZWYgX19mbG9hdF9fKHNlbGYpOgpAQCAtMTc3LDEwICsxOTksMTQgQEAKICAgICAgICAgY2xhc3MgRjoKICAgICAgICAgICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE90aGVyRmxvYXRTdWJjbGFzcyg0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRigpKSwgNDIuKQotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZmxvYXQoRigpKSksIE90aGVyRmxvYXRTdWJjbGFzcykKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChGbG9hdFN1YmNsYXNzKEYoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKEZsb2F0U3ViY2xhc3MoRigpKSksIEZsb2F0U3ViY2xhc3MpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGKCkpLCA0Mi4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGZsb2F0KEYoKSkpLCBmbG9hdCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZsb2F0U3ViY2xhc3MoRigpKSwgNDIuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShGbG9hdFN1YmNsYXNzKEYoKSkpLCBGbG9hdFN1YmNsYXNzKQogCiAgICAgZGVmIHRlc3RfaXNfaW50ZWdlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoMS4xKS5pc19pbnRlZ2VyKCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkgYi9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKaW5kZXggZmEzN2Y5MC4uZmI3NDI0NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQpAQCAtNjIsMTQgKzYyLDE0IEBACiBjbGFzcyBUcmFuc2xhdGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCcqJyksICcuKlxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnPycpLCAnLlxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnYT9iKicpLCAnYS5iLipcWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1thYmNdJyksICdbYWJjXVxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW11dJyksICdbXV1cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1sheF0nKSwgJ1teeF1cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1teeF0nKSwgJ1tcXF54XVxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW3gnKSwgJ1xcW3hcWig/bXMpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJyonKSwgcicoP3M6LiopXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnPycpLCByJyg/czouKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ2E/YionKSwgcicoP3M6YS5iLiopXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW2FiY10nKSwgcicoP3M6W2FiY10pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW11dJyksIHInKD9zOltdXSlcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbIXhdJyksIHInKD9zOlteeF0pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW154XScpLCByJyg/czpbXF54XSlcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbeCcpLCByJyg/czpcW3gpXFonKQogCiAKIGNsYXNzIEZpbHRlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5IGIvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKaW5kZXggOWIxMzYzMi4uOGFmZDViOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKQEAgLTI3NCw3ICsyNzQsNyBAQAogICAgICAgICB0ZXN0X2V4YygnJWQnLCAnMScsIFR5cGVFcnJvciwgIiVkIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQogICAgICAgICB0ZXN0X2V4YygnJXgnLCAnMScsIFR5cGVFcnJvciwgIiV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IHN0ciIpCiAgICAgICAgIHRlc3RfZXhjKCcleCcsIDMuMTQsIFR5cGVFcnJvciwgIiV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IGZsb2F0IikKLSAgICAgICAgdGVzdF9leGMoJyVnJywgJzEnLCBUeXBlRXJyb3IsICJhIGZsb2F0IGlzIHJlcXVpcmVkIikKKyAgICAgICAgdGVzdF9leGMoJyVnJywgJzEnLCBUeXBlRXJyb3IsICJtdXN0IGJlIHJlYWwgbnVtYmVyLCBub3Qgc3RyIikKICAgICAgICAgdGVzdF9leGMoJ25vIGZvcm1hdCcsICcxJywgVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBzdHJpbmcgZm9ybWF0dGluZyIpCiAgICAgICAgIHRlc3RfZXhjKCclYycsIC0xLCBPdmVyZmxvd0Vycm9yLCAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKQpAQCAtMzAwLDYgKzMwMCw4IEBACiAgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIDcsIGIiXHgwNyIpCiAgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIGIiWiIsIGIiWiIpCiAgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIGJ5dGVhcnJheShiIloiKSwgYiJaIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiU1YyIsIDY1LCBiIiAgICBBIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiUtNWMiLCA2NSwgYiJBICAgICIpCiAgICAgICAgICMgJWIgd2lsbCBpbnNlcnQgYSBzZXJpZXMgb2YgYnl0ZXMsIGVpdGhlciBmcm9tIGEgdHlwZSB0aGF0IHN1cHBvcnRzCiAgICAgICAgICMgdGhlIFB5X2J1ZmZlciBwcm90b2NvbCwgb3Igc29tZXRoaW5nIHRoYXQgaGFzIGEgX19ieXRlc19fIG1ldGhvZAogICAgICAgICBjbGFzcyBGYWtlQnl0ZXMob2JqZWN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkKaW5kZXggOWRmNGE1NC4uNzkwNWMzNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkKQEAgLTE1MCw2ICsxNTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsICIzLzIiLCAzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsIDMsIDBqKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsIDMsIDFqKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsIDEsIDIsIDMpCiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdEluaXRGcm9tRmxvYXQoc2VsZik6CkBAIC0yNjMsMTMgKzI2NCwxMyBAQAogICAgICAgICBuYW4gPSBpbmYgLSBpbmYKICAgICAgICAgIyBidWcgMTY0Njk6IGVycm9yIHR5cGVzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggZmxvYXQgLT4gaW50CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCBpbmYgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9mbG9hdCwgaW5mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgLWluZiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2Zsb2F0LCAtaW5mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgbmFuIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBWYWx1ZUVycm9yLCAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2Zsb2F0LCBuYW4pCiAKICAgICBkZWYgdGVzdEZyb21EZWNpbWFsKHNlbGYpOgpAQCAtMjg0LDE2ICsyODUsMTYgQEAKIAogICAgICAgICAjIGJ1ZyAxNjQ2OTogZXJyb3IgdHlwZXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBkZWNpbWFsIC0+IGludAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCJpbmYiKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IC1JbmZpbml0eSB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoIi1pbmYiKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IE5hTiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgVmFsdWVFcnJvciwgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCJuYW4iKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IHNOYU4gdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgic25hbiIpKQogCiAgICAgZGVmIHRlc3RMaW1pdERlbm9taW5hdG9yKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9mc3RyaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyOTk1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ZzdHJpbmcucHkKQEAgLTAsMCArMSw3NDggQEAKK2ltcG9ydCBhc3QKK2ltcG9ydCB0eXBlcworaW1wb3J0IGRlY2ltYWwKK2ltcG9ydCB1bml0dGVzdAorCithX2dsb2JhbCA9ICdnbG9iYWwgdmFyaWFibGUnCisKKyMgWW91IGNvdWxkIGFyZ3VlIHRoYXQgSSdtIHRvbyBzdHJpY3QgaW4gbG9va2luZyBmb3Igc3BlY2lmaWMgZXJyb3IKKyMgIHZhbHVlcyB3aXRoIGFzc2VydFJhaXNlc1JlZ2V4LCBidXQgd2l0aG91dCBpdCBpdCdzIHdheSB0b28gZWFzeSB0bworIyAgbWFrZSBhIHN5bnRheCBlcnJvciBpbiB0aGUgdGVzdCBzdHJpbmdzLiBFc3BlY2lhbGx5IHdpdGggYWxsIG9mIHRoZQorIyAgdHJpcGxlIHF1b3RlcywgcmF3IHN0cmluZ3MsIGJhY2tzbGFzaGVzLCBldGMuIEkgdGhpbmsgaXQncyBhCisjICB3b3J0aHdoaWxlIHRyYWRlb2ZmLiBXaGVuIEkgc3dpdGNoZWQgdG8gdGhpcyBtZXRob2QsIEkgZm91bmQgbWFueQorIyAgZXhhbXBsZXMgd2hlcmUgSSB3YXNuJ3QgdGVzdGluZyB3aGF0IEkgdGhvdWdodCBJIHdhcy4KKworY2xhc3MgVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBhc3NlcnRBbGxSYWlzZShzZWxmLCBleGNlcHRpb25fdHlwZSwgcmVnZXgsIGVycm9yX3N0cmluZ3MpOgorICAgICAgICBmb3Igc3RyIGluIGVycm9yX3N0cmluZ3M6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdHI9c3RyKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoZXhjZXB0aW9uX3R5cGUsIHJlZ2V4KToKKyAgICAgICAgICAgICAgICAgICAgZXZhbChzdHIpCisKKyAgICBkZWYgdGVzdF9fZm9ybWF0X19sb29rdXAoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIF9fZm9ybWF0X18gaXMgbG9va2VkIHVwIG9uIHRoZSB0eXBlLCBub3QgdGhlIGluc3RhbmNlLgorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgcmV0dXJuICdjbGFzcycKKworICAgICAgICB4ID0gWCgpCisKKyAgICAgICAgIyBBZGQgYSBib3VuZCBfX2Zvcm1hdF9fIG1ldGhvZCB0byB0aGUgJ3knIGluc3RhbmNlLCBidXQgbm90CisgICAgICAgICMgIHRoZSAneCcgaW5zdGFuY2UuCisgICAgICAgIHkgPSBYKCkKKyAgICAgICAgeS5fX2Zvcm1hdF9fID0gdHlwZXMuTWV0aG9kVHlwZShsYW1iZGEgc2VsZiwgc3BlYzogJ2luc3RhbmNlJywgeSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3l9JywgZm9ybWF0KHkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3l9JywgJ2NsYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoeCksIGZvcm1hdCh5KSkKKworICAgICAgICAjIF9fZm9ybWF0X18gaXMgbm90IGNhbGxlZCB0aGlzIHdheSwgYnV0IHN0aWxsIG1ha2Ugc3VyZSBpdAorICAgICAgICAjICByZXR1cm5zIHdoYXQgd2UgZXhwZWN0IChzbyB3ZSBjYW4gbWFrZSBzdXJlIHdlJ3JlIGJ5cGFzc2luZworICAgICAgICAjICBpdCkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2Zvcm1hdF9fKCcnKSwgJ2NsYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5Ll9fZm9ybWF0X18oJycpLCAnaW5zdGFuY2UnKQorCisgICAgICAgICMgVGhpcyBpcyBob3cgX19mb3JtYXRfXyBpcyBhY3R1YWxseSBjYWxsZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh4KS5fX2Zvcm1hdF9fKHgsICcnKSwgJ2NsYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHkpLl9fZm9ybWF0X18oeSwgJycpLCAnY2xhc3MnKQorCisgICAgZGVmIHRlc3RfYXN0KHNlbGYpOgorICAgICAgICAjIEluc3BpcmVkIGJ5IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNDk3NQorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gNAorICAgICAgICB4ID0gWCgpCisgICAgICAgIGV4cHIgPSAiIiIKK2EgPSAxMAorZid7YSAqIHgoKX0nIiIiCisgICAgICAgIHQgPSBhc3QucGFyc2UoZXhwcikKKyAgICAgICAgYyA9IGNvbXBpbGUodCwgJycsICdleGVjJykKKworICAgICAgICAjIE1ha2Ugc3VyZSB4IHdhcyBub3QgY2FsbGVkLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHguY2FsbGVkKQorCisgICAgICAgICMgQWN0dWFsbHkgcnVuIHRoZSBjb2RlLgorICAgICAgICBleGVjKGMpCisKKyAgICAgICAgIyBNYWtlIHN1cmUgeCB3YXMgY2FsbGVkLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9saXRlcmFsX2V2YWwoc2VsZik6CisgICAgICAgICMgV2l0aCBubyBleHByZXNzaW9ucywgYW4gZi1zdHJpbmcgaXMgb2theS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QubGl0ZXJhbF9ldmFsKCJmJ3gnIiksICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QubGl0ZXJhbF9ldmFsKCJmJ3gnICd5JyIpLCAneHknKQorCisgICAgICAgICMgQnV0IHRoaXMgc2hvdWxkIHJhaXNlIGFuIGVycm9yLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ21hbGZvcm1lZCBub2RlIG9yIHN0cmluZycpOgorICAgICAgICAgICAgYXN0LmxpdGVyYWxfZXZhbCgiZid4ezN9JyIpCisKKyAgICAgICAgIyBBcyBzaG91bGQgdGhpcywgd2hpY2ggdXNlcyBhIGRpZmZlcmVudCBhc3Qgbm9kZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ21hbGZvcm1lZCBub2RlIG9yIHN0cmluZycpOgorICAgICAgICAgICAgYXN0LmxpdGVyYWxfZXZhbCgiZid7M30nIikKKworICAgIGRlZiB0ZXN0X2FzdF9jb21waWxlX3RpbWVfY29uY2F0KHNlbGYpOgorICAgICAgICB4ID0gWycnXQorCisgICAgICAgIGV4cHIgPSAiIiJ4WzBdID0gJ2ZvbycgZid7M30nIiIiCisgICAgICAgIHQgPSBhc3QucGFyc2UoZXhwcikKKyAgICAgICAgYyA9IGNvbXBpbGUodCwgJycsICdleGVjJykKKyAgICAgICAgZXhlYyhjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhbMF0sICdmb28zJykKKworICAgIGRlZiB0ZXN0X2xpdGVyYWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2EnLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicgJywgJyAnKQorCisgICAgZGVmIHRlc3RfdW50ZXJtaW5hdGVkX3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiB1bnRlcm1pbmF0ZWQgc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciIiImYneyJ4JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiImYneyJ4fSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJmJ3soIngnIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIiZid7KCJ4fSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9taXNtYXRjaGVkX3BhcmVucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiBtaXNtYXRjaGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYneygofSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZG91YmxlX2JyYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7JywgJ3snKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7JywgJ2F7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7YicsICd7YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3tiJywgJ2F7YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fScsICd9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F9fScsICdhfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fWInLCAnfWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYX19YicsICdhfWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3t9fScsICd7fScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3t9fScsICdhe30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3tifX0nLCAne2J9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7fX1jJywgJ3t9YycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3tifX0nLCAnYXtifScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3t9fWMnLCAnYXt9YycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e2J9fWMnLCAne2J9YycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3tifX1jJywgJ2F7Yn1jJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3t7MTB9JywgJ3sxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fXsxMH0nLCAnfTEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319e3t7MTB9JywgJ317MTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX1he3t7MTB9JywgJ31hezEwJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfXt7JywgJzEweycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9fX0nLCAnMTB9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMH19fXt7JywgJzEwfXsnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfX19YXt7JyAnfScsICcxMH1he30nKQorCisgICAgICAgICMgSW5zaWRlIG9mIHN0cmluZ3MsIGRvbid0IGludGVycHJldCBkb3VibGVkIGJyYWNrZXRzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ7e319In0nLCAne3t9fScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7IHt7fX0gfSciLCAjIGRpY3QgaW4gYSBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfdGltZV9jb25jYXQoc2VsZik6CisgICAgICAgIHggPSAnZGVmJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnIGYnIyMge3h9Z2hpJywgJ2FiYyMjIGRlZmdoaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycgZid7eH0nICdnaGknLCAnYWJjZGVmZ2hpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJyBmJ3t4fScgJ2doJyBmJ2l7eDo0fScsICdhYmNkZWZnaGlkZWYgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3h9JyBmJ3t4fScsICd7eH1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7eCcgZid7eH0nLCAne3hkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7eH0nIGYne3h9JywgJ3t4fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t7eH19JyBmJ3t4fScsICd7e3h9fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t7eCcgZid7eH0nLCAne3t4ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneH19JyBmJ3t4fScsICd4fX1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JyAneH19JywgJ2RlZnh9fScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nICcnLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJ3t4fScgJycsICdkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYne3h9JywgJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nICcyJywgJ2RlZjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxJyBmJ3t4fScgJzInLCAnMWRlZjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxJyBmJ3t4fScsICcxZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgZicte3h9JywgJ2RlZi1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZicnICcnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJycgJycgZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJyAnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnICcnIGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnICcnIGYnJyAnJywgJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezMnIGYnfSciLCAgIyBjYW4ndCBjb25jYXQgdG8gZ2V0IGEgdmFsaWQgZi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2NvbW1lbnRzKHNlbGYpOgorICAgICAgICAjIFRoZXNlIGFyZW4ndCBjb21tZW50cywgc2luY2UgdGhleSdyZSBpbiBzdHJpbmdzLgorICAgICAgICBkID0geycjJzogJ2hhc2gnfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIjIn0nLCAnIycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFsiIyJdfScsICdoYXNoJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmcgZXhwcmVzc2lvbiBwYXJ0IGNhbm5vdCBpbmNsdWRlICcjJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3sxI30nIiwgICAjIGVycm9yIGJlY2F1c2UgdGhlIGV4cHJlc3Npb24gYmVjb21lcyAiKDEjKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMoIyl9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sjfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7KSN9JyIsICAgIyBXaGVuIHdyYXBwZWQgaW4gcGFyZW5zLCB0aGlzIGJlY29tZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICcoKSMpJy4gIE1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgY29tcGlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X21hbnlfZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgICMgQ3JlYXRlIGEgc3RyaW5nIHdpdGggbWFueSBleHByZXNzaW9ucyBpbiBpdC4gTm90ZSB0aGF0CisgICAgICAgICMgIGJlY2F1c2Ugd2UgaGF2ZSBhIHNwYWNlIGluIGhlcmUgYXMgYSBsaXRlcmFsLCB3ZSdyZSBhY3R1YWxseQorICAgICAgICAjICBnb2luZyB0byB1c2UgdHdpY2UgYXMgbWFueSBhc3Qgbm9kZXM6IG9uZSBmb3IgZWFjaCBsaXRlcmFsCisgICAgICAgICMgIHBsdXMgb25lIGZvciBlYWNoIGV4cHJlc3Npb24uCisgICAgICAgIGRlZiBidWlsZF9mc3RyKG4sIGV4dHJhPScnKToKKyAgICAgICAgICAgIHJldHVybiAiZiciICsgKCd7eH0gJyAqIG4pICsgZXh0cmEgKyAiJyIKKworICAgICAgICB4ID0gJ1gnCisgICAgICAgIHdpZHRoID0gMQorCisgICAgICAgICMgVGVzdCBhcm91bmQgMjU2LgorICAgICAgICBmb3IgaSBpbiByYW5nZSgyNTAsIDI2MCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoYnVpbGRfZnN0cihpKSksICh4KycgJykqaSkKKworICAgICAgICAjIFRlc3QgY29uY2F0ZW5hdGluZyAyIGxhcmdzIGZzdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoYnVpbGRfZnN0cigyNTUpKjI1NiksICh4KycgJykqKDI1NSoyNTYpKQorCisgICAgICAgIHMgPSBidWlsZF9mc3RyKDI1MywgJ3t4Ont3aWR0aH19ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChzKSwgKHgrJyAnKSoyNTQpCisKKyAgICAgICAgIyBUZXN0IGxvdHMgb2YgZXhwcmVzc2lvbnMgYW5kIGNvbnN0YW50cywgY29uY2F0ZW5hdGVkLgorICAgICAgICBzID0gImYnezF9JyAneCcgJ3knIiAqIDEwMjQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHMpLCAnMXh5JyAqIDEwMjQpCisKKyAgICBkZWYgdGVzdF9mb3JtYXRfc3BlY2lmaWVyX2V4cHJlc3Npb25zKHNlbGYpOgorICAgICAgICB3aWR0aCA9IDEwCisgICAgICAgIHByZWNpc2lvbiA9IDQKKyAgICAgICAgdmFsdWUgPSBkZWNpbWFsLkRlY2ltYWwoJzEyLjM0NTY3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aH0ue3ByZWNpc2lvbn19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7d2lkdGghcn0ue3ByZWNpc2lvbn19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7d2lkdGg6MH0ue3ByZWNpc2lvbjoxfX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnsxfXswOjB9LntwcmVjaXNpb246MX19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7IDF9eyAwOjB9LnsgcHJlY2lzaW9uOjF9fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwOiN7MX0weH0nLCAnICAgICAgIDB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTA6eyIjIn0xezB9eyJ4In19JywgJyAgICAgICAweGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYney0xMDoteyIjIn0xezB9eH0nLCAnICAgICAgLTB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7LTEwOnsiLSJ9I3sxfTB7IngifX0nLCAnICAgICAgLTB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTA6I3szICE9IHs0OjV9IGFuZCB3aWR0aH14fScsICcgICAgICAgMHhhJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiIiJmJ3sicyIhcnsiOjEwIn19JyIiIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbG9va3MgbGlrZSBhIG5lc3RlZCBmb3JtYXQgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiaW52YWxpZCBzeW50YXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsjIEludmFsaWQgc3ludGF4IGluc2lkZSBhIG5lc3RlZCBzcGVjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7NDp7LzV9fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwcmVzc2lvbnMgbmVzdGVkIHRvbyBkZWVwbHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsjIENhbid0IG5lc3QgZm9ybWF0IHNwZWNpZmllcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aDp7MH19LntwcmVjaXNpb246MX19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiBpbnZhbGlkIGNvbnZlcnNpb24gY2hhcmFjdGVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIyBObyBleHBhbnNpb24gaW5zaWRlIGNvbnZlcnNpb24gb3IgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIHRoZSA6IG9yICEgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiJmJ3sicyIheyJyIn19JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3NpZGVfZWZmZWN0X29yZGVyKHNlbGYpOgorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaSA9IDAKKyAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHNlbGYuaSArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihzZWxmLmkpCisKKyAgICAgICAgeCA9IFgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9IHt4fScsICcxIDInKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19leHByZXNzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IGVtcHR5IGV4cHJlc3Npb24gbm90IGFsbG93ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IH0nIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZicge30gJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shcn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAhcn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezEwOnsgfX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnIHsgfSAnIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENhdGNoIHRoZSBlbXB0eSBleHByZXNzaW9uIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgaW52YWxpZCBjb252ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgIXhyfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXg6fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXg6YX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAheHI6fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICF4cjphfSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7On0nIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGZpbmQgdGhlIGVtcHR5IGV4cHJlc3Npb24gYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBtaXNzaW5nIGNsb3NpbmcgYnJhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shczonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezp4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9wYXJlbnNfaW5fZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Myx9JywgJygzLCknKQorCisgICAgICAgICMgQWRkIHRoZXNlIGJlY2F1c2Ugd2hlbiBhbiBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgcGFyZW5zCisgICAgICAgICMgIGFyZSBhZGRlZCBhcm91bmQgaXQuIEJ1dCB3ZSBzaG91bGRuJ3QgZ28gZnJvbSBhbiBpbnZhbGlkCisgICAgICAgICMgIGV4cHJlc3Npb24gdG8gYSB2YWxpZCBvbmUuIFRoZSBhZGRlZCBwYXJlbnMgYXJlIGp1c3QKKyAgICAgICAgIyAgc3VwcG9zZWQgdG8gYWxsb3cgd2hpdGVzcGFjZSAoaW5jbHVkaW5nIG5ld2xpbmVzKS4KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYneyx9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3ssfSciLCAgIyB0aGlzIGlzICgsKSwgd2hpY2ggaXMgYW4gZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MykrKDR9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ0VPTCB3aGlsZSBzY2FubmluZyBzdHJpbmcgbGl0ZXJhbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3tcbn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2JhY2tzbGFzaGVzX2luX3N0cmluZ19wYXJ0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHQnLCAnXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXHQnLCAnXFx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidcdCcsICdcXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHQnLCAnMlx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx0ezN9JywgJzJcdDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHR7M30nLCAnXHQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHUwMzk0JywgJ1x1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidcdTAzOTQnLCAnXFx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXHUwMzk0JywgJ1xcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHUwMzk0JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHUwMzk0ezN9JywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x1MDM5NHszfScsICdcdTAzOTQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXFUwMDAwMDM5NCcsICdcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXFUwMDAwMDM5NCcsICdcXFUwMDAwMDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXFUwMDAwMDM5NCcsICdcXFUwMDAwMDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cVTAwMDAwMzk0JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XFUwMDAwMDM5NHszfScsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcVTAwMDAwMzk0ezN9JywgJ1x1MDM5NDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0nLCAnXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfScsICcyXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfXszfScsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX17M30nLCAnXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfTMnLCAnMlx1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9MycsICdcdTAzOTQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHgyMCcsICcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyJ1x4MjAnLCAnXFx4MjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJ1x4MjAnLCAnXFx4MjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHgyMCcsICcyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1ceDIwezN9JywgJzIgMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDIwezN9JywgJyAzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlx4MjAnLCAnMiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlx4MjAzJywgJzIgMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDIwMycsICcgMycpCisKKyAgICBkZWYgdGVzdF9taXNmb3JtZWRfdW5pY29kZV9jaGFyYWN0ZXJfbmFtZShzZWxmKToKKyAgICAgICAgIyBUaGVzZSB0ZXN0IGFyZSBuZWVkZWQgYmVjYXVzZSB1bmljb2RlIG5hbWVzIGFyZSBwYXJzZWQKKyAgICAgICAgIyBkaWZmZXJlbnRseSBpbnNpZGUgZi1zdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCByIlwodW5pY29kZSBlcnJvclwpICd1bmljb2RlZXNjYXBlJyBjb2RlYyBjYW4ndCBkZWNvZGUgYnl0ZXMgaW4gcG9zaXRpb24gLio6IG1hbGZvcm1lZCBcXE4gY2hhcmFjdGVyIGVzY2FwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZidcTiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYnXE57JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSGVyZSBhcmUgdGhlIG5vbi1mLXN0cmluZyB2ZXJzaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgd2hpY2ggc2hvdWxkIGdpdmUgdGhlIHNhbWUgZXJyb3JzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIidcTiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIidcTnsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciInXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X25vX2JhY2tzbGFzaGVzX2luX2V4cHJlc3Npb25fcGFydChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nIGV4cHJlc3Npb24gcGFydCBjYW5ub3QgaW5jbHVkZSBhIGJhY2tzbGFzaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7XCdhXCd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7XHQzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYne1x9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIicmYne1wnYVwnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByInJmJ3tcdDN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIicmYne1x9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJyZid7IlxOe0xFRlQgQ1VSTFkgQlJBQ0tFVH0ifSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9ub19lc2NhcGVzX2Zvcl9icmFjZXMoc2VsZik6CisgICAgICAgICMgXHg3YiBpcyAneycuICBNYWtlIHN1cmUgaXQgZG9lc24ndCBzdGFydCBhbiBleHByZXNzaW9uLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHg3YjJ9fScsICd7Mn0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHg3YjInLCAnezInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHUwMDdiMicsICd7MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntMRUZUIENVUkxZIEJSQUNLRVR9MlxOe1JJR0hUIENVUkxZIEJSQUNLRVR9JywgJ3syfScpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5lc19pbl9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3swfScsICcwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZicnJ3szKworNH0nJycsICc3JykKKworICAgIGRlZiB0ZXN0X2xhbWJkYShzZWxmKToKKyAgICAgICAgeCA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sobGFtYmRhIHk6eCp5KSgiOCIpIXJ9JywgIic4ODg4OCciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyhsYW1iZGEgeTp4KnkpKCI4IikhcjoxMH0nLCAiJzg4ODg4JyAgICIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7KGxhbWJkYSB5OngqeSkoIjgiKToxMH0nLCAiODg4ODggICAgICIpCisKKyAgICAgICAgIyBsYW1iZGEgZG9lc24ndCB3b3JrIHdpdGhvdXQgcGFyZW5zLCBiZWNhdXNlIHRoZSBjb2xvbgorICAgICAgICAjICBtYWtlcyB0aGUgcGFyc2VyIHRoaW5rIGl0J3MgYSBmb3JtYXRfc3BlYworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAndW5leHBlY3RlZCBFT0Ygd2hpbGUgcGFyc2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3tsYW1iZGEgeDp4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfeWllbGQoc2VsZik6CisgICAgICAgICMgTm90IHRlcnJpYmx5IHVzZWZ1bCwgYnV0IG1ha2Ugc3VyZSB0aGUgeWllbGQgdHVybnMKKyAgICAgICAgIyAgYSBmdW5jdGlvbiBpbnRvIGEgZ2VuZXJhdG9yCisgICAgICAgIGRlZiBmbih5KToKKyAgICAgICAgICAgIGYneTp7eWllbGQgeSoyfScKKworICAgICAgICBnID0gZm4oNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCA4KQorCisgICAgZGVmIHRlc3RfeWllbGRfc2VuZChzZWxmKToKKyAgICAgICAgZGVmIGZuKHgpOgorICAgICAgICAgICAgeWllbGQgZid4Ont5aWVsZCAobGFtYmRhIGk6IHggKiBpKX0nCisKKyAgICAgICAgZyA9IGZuKDEwKQorICAgICAgICB0aGVfbGFtYmRhID0gbmV4dChnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV9sYW1iZGEoNCksIDQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuc2VuZCgnc3RyaW5nJyksICd4OnN0cmluZycpCisKKyAgICBkZWYgdGVzdF9leHByZXNzaW9uc193aXRoX3RyaXBsZV9xdW90ZWRfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmInsnJyd4JycnfSIsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmInsnJydlcmljJ3MnJyd9IiwgImVyaWMncyIpCisKKyAgICAgICAgIyBUZXN0IGNvbmNhdGVuYXRpb24gd2l0aGluIGFuIGV4cHJlc3Npb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieCIgIiIiZXJpYyJzIiIiICJ5In0nLCAneGVyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ4IiAiIiJlcmljInMiIiJ9JywgJ3hlcmljInMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiImVyaWMicyIiIiAieSJ9JywgJ2VyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiIngiIiIgIiIiZXJpYyJzIiIiICJ5In0nLCAneGVyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiIngiIiIgIiIiZXJpYyJzIiIiICIiInkiIiJ9JywgJ3hlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tyIiIieCIiIiAiIiJlcmljInMiIiIgIiIieSIiIn0nLCAneGVyaWMic3knKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfdmFycyhzZWxmKToKKyAgICAgICAgeCA9IDk4CisgICAgICAgIHkgPSAnYWJjJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9e3l9JywgJzk4YWJjJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnWHt4fXt5fScsICdYOThhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9WHt5fScsICc5OFhhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9e3l9WCcsICc5OGFiY1gnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9WXt5fScsICdYOThZYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH17eX1ZJywgJ1g5OGFiY1knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9WHt5fVknLCAnOThYYWJjWScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH1Ze3l9WicsICdYOThZYWJjWicpCisKKyAgICBkZWYgdGVzdF9jbG9zdXJlKHNlbGYpOgorICAgICAgICBkZWYgb3V0ZXIoeCk6CisgICAgICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZid4Ont4fScKKyAgICAgICAgICAgIHJldHVybiBpbm5lcgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXIoJzk4NycpKCksICd4Ojk4NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXIoNykoKSwgJ3g6NycpCisKKyAgICBkZWYgdGVzdF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIHkgPSAyCisgICAgICAgIGRlZiBmKHgsIHdpZHRoKToKKyAgICAgICAgICAgIHJldHVybiBmJ3g9e3gqeTp7d2lkdGh9fScKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ2ZvbycsIDEwKSwgJ3g9Zm9vZm9vICAgICcpCisgICAgICAgIHggPSAnYmFyJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMTAsIDEwKSwgJ3g9ICAgICAgICAyMCcpCisKKyAgICBkZWYgdGVzdF9sb2NhbHMoc2VsZik6CisgICAgICAgIHZhbHVlID0gMTIzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid2Ont2YWx1ZX0nLCAndjoxMjMnKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ192YXJpYWJsZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZid2Ont2YWx1ZX0nCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2Zvcm1hdF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBPOgorICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgaWYgbm90IHNwZWM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnKicKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BlYworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7TygpOnh9JywgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne08oKX0nLCAnKicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7TygpOn0nLCAnKicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szOn0nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyFzOn0nLCAnMycpCisKKyAgICBkZWYgdGVzdF9nbG9iYWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0nLCAnZzpnbG9iYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLCAiZzonZ2xvYmFsIHZhcmlhYmxlJyIpCisKKyAgICAgICAgYV9sb2NhbCA9ICdsb2NhbCB2YXJpYWJsZScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2c6Z2xvYmFsIHZhcmlhYmxlIGw6bG9jYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOidnbG9iYWwgdmFyaWFibGUnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzpnbG9iYWwgdmFyaWFibGUgbDonbG9jYWwgdmFyaWFibGUnIikKKworICAgICAgICBzZWxmLmFzc2VydEluKCJtb2R1bGUgJ3VuaXR0ZXN0JyBmcm9tIiwgZid7dW5pdHRlc3R9JykKKworICAgIGRlZiB0ZXN0X3NoYWRvd2VkX2dsb2JhbChzZWxmKToKKyAgICAgICAgYV9nbG9iYWwgPSAncmVhbGx5IGEgbG9jYWwnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0nLCAnZzpyZWFsbHkgYSBsb2NhbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbCFyfScsICJnOidyZWFsbHkgYSBsb2NhbCciKQorCisgICAgICAgIGFfbG9jYWwgPSAnbG9jYWwgdmFyaWFibGUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbH0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnOnJlYWxseSBhIGxvY2FsIGw6bG9jYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOidyZWFsbHkgYSBsb2NhbCciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9IGw6e2FfbG9jYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOnJlYWxseSBhIGxvY2FsIGw6J2xvY2FsIHZhcmlhYmxlJyIpCisKKyAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBkZWYgZm9vKHgpOgorICAgICAgICAgICAgcmV0dXJuICd4PScgKyBzdHIoeCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2ZvbygxMCl9JywgJ3g9MTAnKQorCisgICAgZGVmIHRlc3RfbmVzdGVkX2ZzdHJpbmdzKHNlbGYpOgorICAgICAgICB5ID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2YiezB9IiozfScsICcwMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2Yie3l9IiozfScsICc1NTUnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9zdHJpbmdfcHJlZml4ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICd1bmV4cGVjdGVkIEVPRiB3aGlsZSBwYXJzaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImZ1JyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZVJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1RicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVmcicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVyZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1cicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZydScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJmdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJ1ZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZVUicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1cicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZiJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZkInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZCJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiRicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQkYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9sZWFkaW5nX3RyYWlsaW5nX3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sgM30nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ICAzfScsICczJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIH0nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyAgfScsICczJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZXhwcj17IHt4OiB5IGZvciB4LCB5IGluIFsoMSwgMiksIF19fScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cHI9ezE6IDJ9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2V4cHI9eyB7eDogeSBmb3IgeCwgeSBpbiBbKDEsIDIpLCBdfSB9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwcj17MTogMn0nKQorCisgICAgZGVmIHRlc3Rfbm90X2VxdWFsKHNlbGYpOgorICAgICAgICAjIFRoZXJlJ3MgYSBzcGVjaWFsIHRlc3QgZm9yIHRoaXMgYmVjYXVzZSB0aGVyZSdzIGEgc3BlY2lhbAorICAgICAgICAjICBjYXNlIGluIHRoZSBmLXN0cmluZyBwYXJzZXIgdG8gbG9vayBmb3IgIT0gYXMgbm90IGVuZGluZyBhbgorICAgICAgICAjICBleHByZXNzaW9uLiBOb3JtYWxseSBpdCB3b3VsZCwgd2hpbGUgbG9va2luZyBmb3IgIXMgb3IgIXIuCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00fScsICdUcnVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00On0nLCAnVHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NCFzfScsICdUcnVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00IXM6LjN9JywgJ1RydScpCisKKyAgICBkZWYgdGVzdF9jb252ZXJzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0OjEwLjEwfScsICcgICAgICAzLjE0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0IXM6MTAuMTB9JywgJzMuMTQgICAgICAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMuMTQhcjoxMC4xMH0nLCAnMy4xNCAgICAgICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNCFhOjEwLjEwfScsICczLjE0ICAgICAgJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIn0nLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ImEiIXJ9JywgIidhJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ImEiIWF9JywgIidhJyIpCisKKyAgICAgICAgIyBOb3QgYSBjb252ZXJzaW9uLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIXIifScsICJhIXIiKQorCisgICAgICAgICMgTm90IGEgY29udmVyc2lvbiwgYnV0IHNob3cgdGhhdCAhIGlzIGFsbG93ZWQgaW4gYSBmb3JtYXQgc3BlYy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0OiE8MTAuMTB9JywgJzMuMTQhISEhISEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogaW52YWxpZCBjb252ZXJzaW9uIGNoYXJhY3RlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szIWd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIUF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szITN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIUd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szITp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISBzfSciLCAgIyBubyBzcGFjZSBiZWZvcmUgY29udmVyc2lvbiBjaGFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne3ghc3t5fX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhc3N9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXNzOn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhc3M6c30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2Fzc2lnbm1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJycgPSAzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezB9JyA9IHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7eH0nID0geCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJkZWwgZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbCAnJyBmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbWlzbWF0Y2hlZF9icmFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3t7fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7e319fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h9eCciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2FuJ3QgaGF2ZSB7IG9yIH0gaW4gYSBmb3JtYXQgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6fT4xMH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6fX0+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezM6e3s+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MzonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzOiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzOjMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneHsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneHt4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOnMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3t7JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t7fX17JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3snIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICAjIEJ1dCB0aGVzZSBhcmUganVzdCBub3JtYWwgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieyJ9JywgJ3snKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ9In0nLCAnfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mzp7In0ifT4xMH0nLCAnfX19fX19fX19MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mjp7InsifT4xMH0nLCAne3t7e3t7e3t7MicpCisKKyAgICBkZWYgdGVzdF9pZl9jb25kaXRpb25hbChzZWxmKToKKyAgICAgICAgIyBUaGVyZSdzIHNwZWNpYWwgbG9naWMgaW4gY29tcGlsZS5jIHRvIHRlc3QgaWYgdGhlCisgICAgICAgICMgIGNvbmRpdGlvbmFsIGZvciBhbiBpZiAoYW5kIHdoaWxlKSBhcmUgY29uc3RhbnRzLiBFeGVyY2lzZQorICAgICAgICAjICB0aGF0IGNvZGUuCisKKyAgICAgICAgZGVmIHRlc3RfZnN0cmluZyh4LCBleHBlY3RlZCk6CisgICAgICAgICAgICBmbGFnID0gMAorICAgICAgICAgICAgaWYgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbmNhdF9lbXB0eSh4LCBleHBlY3RlZCk6CisgICAgICAgICAgICBmbGFnID0gMAorICAgICAgICAgICAgaWYgJycgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbmNhdF9ub25fZW1wdHkoeCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgZmxhZyA9IDAKKyAgICAgICAgICAgIGlmICcgJyBmJ3t4fSc6CisgICAgICAgICAgICAgICAgZmxhZyA9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmxhZyA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgZXhwZWN0ZWQpCisKKyAgICAgICAgdGVzdF9mc3RyaW5nKCcnLCAyKQorICAgICAgICB0ZXN0X2ZzdHJpbmcoJyAnLCAxKQorCisgICAgICAgIHRlc3RfY29uY2F0X2VtcHR5KCcnLCAyKQorICAgICAgICB0ZXN0X2NvbmNhdF9lbXB0eSgnICcsIDEpCisKKyAgICAgICAgdGVzdF9jb25jYXRfbm9uX2VtcHR5KCcnLCAxKQorICAgICAgICB0ZXN0X2NvbmNhdF9ub25fZW1wdHkoJyAnLCAxKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZm9ybWF0X3NwZWNpZmllcihzZWxmKToKKyAgICAgICAgeCA9ICd0ZXN0JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3g6fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4IXM6fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4IXI6fScsICIndGVzdCciKQorCisgICAgZGVmIHRlc3Rfc3RyX2Zvcm1hdF9kaWZmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgZCA9IHsnYSc6ICdzdHJpbmcnLAorICAgICAgICAgICAgIDA6ICdpbnRlZ2VyJywKKyAgICAgICAgICAgICB9CisgICAgICAgIGEgPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFswXX0nLCAnaW50ZWdlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFsiYSJdfScsICdzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbYV19JywgJ2ludGVnZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7ZFthXX0nLmZvcm1hdChkPWQpLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne2RbMF19Jy5mb3JtYXQoZD1kKSwgJ2ludGVnZXInKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3thWzQpfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYne2EoNF19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBzZWUgaXNzdWUgMjYyODcKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShUeXBlRXJyb3IsICdub24tZW1wdHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYneyhsYW1iZGE6IDApOnh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7KDAsKTp4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFZhbHVlRXJyb3IsICdVbmtub3duIGZvcm1hdCBjb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3sxMDAwOmp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7MTAwMDpqfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9sb29wKHNlbGYpOgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidpOntpfScsICdpOicgKyBzdHIoaSkpCisKKyAgICBkZWYgdGVzdF9kaWN0KHNlbGYpOgorICAgICAgICBkID0geyciJzogJ2RxdW90ZScsCisgICAgICAgICAgICAgIiciOiAnc3F1b3RlJywKKyAgICAgICAgICAgICAnZm9vJzogJ2JhcicsCisgICAgICAgICAgICAgfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJyd7ZFsiJyJdfScnJywgJ3NxdW90ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiIiIntkWyciJ119IiIiLCAnZHF1b3RlJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbImZvbyJdfScsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYie2RbJ2ZvbyddfSIsICdiYXInKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQppbmRleCBhZWY2NmRhLi4xMmZhYmM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQpAQCAtMzExLDEwICszMTEsMTIgQEAKICAgICAgICAgX3NzbF9jbG9zaW5nID0gRmFsc2UKIAogICAgICAgICBkZWYgc2VjdXJlX2Nvbm5lY3Rpb24oc2VsZik6Ci0gICAgICAgICAgICBzb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLCBzZXJ2ZXJfc2lkZT1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzb2NrZXQgPSBjb250ZXh0LndyYXBfc29ja2V0KHNlbGYuc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCiAgICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldChzb2NrZXQpCiAgICAgICAgICAgICBzZWxmLl9zc2xfYWNjZXB0aW5nID0gVHJ1ZQpAQCAtMTA0OSwxMCArMTA1MSwxOSBAQAogICAgICAgICBmdHAuY2xvc2UoKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZShUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J01TR19PT0InLCAnRlRQX1BPUlQnLCAnTUFYTElORScsICdDUkxGJywgJ0JfQ1JMRicsCisgICAgICAgICAgICAgICAgICAgICAnRXJyb3InLCAncGFyc2UxNTAnLCAncGFyc2UyMjcnLCAncGFyc2UyMjknLCAncGFyc2UyNTcnLAorICAgICAgICAgICAgICAgICAgICAgJ3ByaW50X2xpbmUnLCAnZnRwY3AnLCAndGVzdCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZ0cGxpYiwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSBbVGVzdEZUUENsYXNzLCBUZXN0VGltZW91dHMsCiAgICAgICAgICAgICAgVGVzdElQdjZFbnZpcm9ubWVudCwKLSAgICAgICAgICAgICBUZXN0VExTX0ZUUENsYXNzTWl4aW4sIFRlc3RUTFNfRlRQQ2xhc3NdCisgICAgICAgICAgICAgVGVzdFRMU19GVFBDbGFzc01peGluLCBUZXN0VExTX0ZUUENsYXNzLAorICAgICAgICAgICAgIE1pc2NUZXN0Q2FzZV0KIAogICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQogICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKaW5kZXggNTA3NjY0NC4uOWVhNjc0NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKQEAgLTgsNiArOCw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQoraW1wb3J0IGNvbnRleHRsaWIKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMCw2ICsyMSwxNCBAQAogCiBkZWNpbWFsID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHJlcGxhY2VkX21vZHVsZShuYW1lLCByZXBsYWNlbWVudCk6CisgICAgb3JpZ2luYWxfbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KKyAgICBzeXMubW9kdWxlc1tuYW1lXSA9IHJlcGxhY2VtZW50CisgICAgdHJ5OgorICAgICAgICB5aWVsZAorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gb3JpZ2luYWxfbW9kdWxlCiAKIGRlZiBjYXB0dXJlKCphcmdzLCAqKmt3KToKICAgICAiIiJjYXB0dXJlIGFsbCBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyIiIgpAQCAtMTY3LDU4ICsxNzYsMzUgQEAKICAgICAgICAgcDIubmV3X2F0dHIgPSAnc3BhbScKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5uZXdfYXR0ciwgJ3NwYW0nKQogCi0KLUB1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQotY2xhc3MgVGVzdFBhcnRpYWxDKFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaWYgY19mdW5jdG9vbHM6Ci0gICAgICAgIHBhcnRpYWwgPSBjX2Z1bmN0b29scy5wYXJ0aWFsCi0KLSAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3Vud3JpdGFibGUoc2VsZik6Ci0gICAgICAgICMgYXR0cmlidXRlcyBzaG91bGQgbm90IGJlIHdyaXRhYmxlCi0gICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgMSwgMiwgYT0xMCwgYj0yMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdmdW5jJywgbWFwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2FyZ3MnLCAoMSwgMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAna2V5d29yZHMnLCBkaWN0KGE9MSwgYj0yKSkKLQotICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGhleCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVsIHAuX19kaWN0X18KLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgncGFydGlhbCBvYmplY3QgYWxsb3dlZCBfX2RpY3RfXyB0byBiZSBkZWxldGVkJykKLQogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGFyZ3MgPSAob2JqZWN0KCksIG9iamVjdCgpKQogICAgICAgICBhcmdzX3JlcHIgPSAnLCAnLmpvaW4ocmVwcihhKSBmb3IgYSBpbiBhcmdzKQogICAgICAgICBrd2FyZ3MgPSB7J2EnOiBvYmplY3QoKSwgJ2InOiBvYmplY3QoKX0KICAgICAgICAga3dhcmdzX3JlcHJzID0gWydhPXthIXJ9LCBiPXtiIXJ9Jy5mb3JtYXRfbWFwKGt3YXJncyksCiAgICAgICAgICAgICAgICAgICAgICAgICAnYj17YiFyfSwgYT17YSFyfScuZm9ybWF0X21hcChrd2FyZ3MpXQotICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaXMgY19mdW5jdG9vbHMucGFydGlhbDoKKyAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGluIChjX2Z1bmN0b29scy5wYXJ0aWFsLCBweV9mdW5jdG9vbHMucGFydGlhbCk6CiAgICAgICAgICAgICBuYW1lID0gJ2Z1bmN0b29scy5wYXJ0aWFsJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYucGFydGlhbC5fX25hbWVfXwogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne30oeyFyfSknLmZvcm1hdChuYW1lLCBjYXB0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne25hbWV9KHtjYXB0dXJlIXJ9KScsIHJlcHIoZikpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqYXJncykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne30oeyFyfSwge30pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSwgYXJnc19yZXByKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne25hbWV9KHtjYXB0dXJlIXJ9LCB7YXJnc19yZXByfSknLCByZXByKGYpKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVwcihmKSwKLSAgICAgICAgICAgICAgICAgICAgICBbJ3t9KHshcn0sIHt9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUsIGt3YXJnc19yZXByKQorICAgICAgICAgICAgICAgICAgICAgIFtmJ3tuYW1lfSh7Y2FwdHVyZSFyfSwge2t3YXJnc19yZXByfSknCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrd2FyZ3NfcmVwciBpbiBrd2FyZ3NfcmVwcnNdKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEluKHJlcHIoZiksCi0gICAgICAgICAgICAgICAgICAgICAgWyd7fSh7IXJ9LCB7fSwge30pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSwgYXJnc19yZXByLCBrd2FyZ3NfcmVwcikKKyAgICAgICAgICAgICAgICAgICAgICBbZid7bmFtZX0oe2NhcHR1cmUhcn0sIHthcmdzX3JlcHJ9LCB7a3dhcmdzX3JlcHJ9KScKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGt3YXJnc19yZXByIGluIGt3YXJnc19yZXByc10pCiAKICAgICBkZWYgdGVzdF9yZWN1cnNpdmVfcmVwcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGlzIGNfZnVuY3Rvb2xzLnBhcnRpYWw6CisgICAgICAgIGlmIHNlbGYucGFydGlhbCBpbiAoY19mdW5jdG9vbHMucGFydGlhbCwgcHlfZnVuY3Rvb2xzLnBhcnRpYWwpOgogICAgICAgICAgICAgbmFtZSA9ICdmdW5jdG9vbHMucGFydGlhbCcKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLnBhcnRpYWwuX19uYW1lX18KQEAgLTIyNiwzMCArMjEyLDMxIEBACiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGYsICgpLCB7fSwge30pKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglcyguLi4pKScgJSAobmFtZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyguLi4pJyAlIChuYW1lLCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKGYsKSwge30sIHt9KSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsICVzKC4uLikpJyAlIChuYW1lLCBjYXB0dXJlLCBuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCAuLi4pJyAlIChuYW1lLCBjYXB0dXJlLCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHsnYSc6IGZ9LCB7fSkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCBhPSVzKC4uLikpJyAlIChuYW1lLCBjYXB0dXJlLCBuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCBhPS4uLiknICUgKG5hbWUsIGNhcHR1cmUsKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChzaWduYXR1cmUsIFsnYXNkZiddLCBiYXI9W1RydWVdKQotICAgICAgICBmLmF0dHIgPSBbXQotICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUoZl9jb3B5KSwgc2lnbmF0dXJlKGYpKQorICAgICAgICB3aXRoIHNlbGYuQWxsb3dQaWNrbGUoKToKKyAgICAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlLCBbJ2FzZGYnXSwgYmFyPVtUcnVlXSkKKyAgICAgICAgICAgIGYuYXR0ciA9IFtdCisgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmX2NvcHkpLCBzaWduYXR1cmUoZikpCiAKICAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSwgWydhc2RmJ10sIGJhcj1bVHJ1ZV0pCkBAIC0yNzQsMTEgKzI2MSwxMyBAQAogICAgIGRlZiB0ZXN0X3NldHN0YXRlKHNlbGYpOgogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSkKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIGRpY3QoYXR0cj1bXSkpKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChjYXB0dXJlLCAoMSwpLCBkaWN0KGE9MTApLCBkaWN0KGF0dHI9W10pKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDIsIGI9MjApLCAoKDEsIDIpLCB7J2EnOiAxMCwgJ2InOiAyMH0pKQogCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoMSwpLCBkaWN0KGE9MTApLCBOb25lKSkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmKSwgKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIHt9KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDIsIGI9MjApLCAoKDEsIDIpLCB7J2EnOiAxMCwgJ2InOiAyMH0pKQogCkBAIC0zMjUsMzggKzMxNCwzOSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoclswXSksIHR1cGxlKQogCiAgICAgZGVmIHRlc3RfcmVjdXJzaXZlX3BpY2tsZShzZWxmKToKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBmLl9fc2V0c3RhdGVfXygoZiwgKCksIHt9LCB7fSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcHMoZiwgcHJvdG8pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgIHdpdGggc2VsZi5BbGxvd1BpY2tsZSgpOgorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQorICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGYsICgpLCB7fSwge30pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhmLCBwcm90bykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCi0gICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsIChmLCksIHt9LCB7fSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkuYXJnc1swXSwgZl9jb3B5KQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQorICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsIChmLCksIHt9LCB7fSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZfY29weS5hcmdzWzBdLCBmX2NvcHkpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBmX2NvcHkuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCi0gICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7J2EnOiBmfSwge30pKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmtleXdvcmRzWydhJ10sIGZfY29weSkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBmX2NvcHkuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKKyAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwgeydhJzogZn0sIHt9KSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmtleXdvcmRzWydhJ10sIGZfY29weSkKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICAjIElzc3VlIDYwODM6IFJlZmVyZW5jZSBjb3VudGluZyBidWcKICAgICBkZWYgdGVzdF9zZXRzdGF0ZV9yZWZjb3VudChzZWxmKToKQEAgLTM3NSwyNCArMzY1LDYwIEBACiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwob2JqZWN0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYuX19zZXRzdGF0ZV9fLCBCYWRTZXF1ZW5jZSgpKQogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKK2NsYXNzIFRlc3RQYXJ0aWFsQyhUZXN0UGFydGlhbCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGlmIGNfZnVuY3Rvb2xzOgorICAgICAgICBwYXJ0aWFsID0gY19mdW5jdG9vbHMucGFydGlhbAorCisgICAgY2xhc3MgQWxsb3dQaWNrbGU6CisgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRiKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlc191bndyaXRhYmxlKHNlbGYpOgorICAgICAgICAjIGF0dHJpYnV0ZXMgc2hvdWxkIG5vdCBiZSB3cml0YWJsZQorICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsIDEsIDIsIGE9MTAsIGI9MjApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnZnVuYycsIG1hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdhcmdzJywgKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2tleXdvcmRzJywgZGljdChhPTEsIGI9MikpCisKKyAgICAgICAgcCA9IHNlbGYucGFydGlhbChoZXgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRlbCBwLl9fZGljdF9fCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ3BhcnRpYWwgb2JqZWN0IGFsbG93ZWQgX19kaWN0X18gdG8gYmUgZGVsZXRlZCcpCiAKIGNsYXNzIFRlc3RQYXJ0aWFsUHkoVGVzdFBhcnRpYWwsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBwYXJ0aWFsID0gc3RhdGljbWV0aG9kKHB5X2Z1bmN0b29scy5wYXJ0aWFsKQorICAgIHBhcnRpYWwgPSBweV9mdW5jdG9vbHMucGFydGlhbAogCisgICAgY2xhc3MgQWxsb3dQaWNrbGU6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2NtID0gcmVwbGFjZWRfbW9kdWxlKCJmdW5jdG9vbHMiLCBweV9mdW5jdG9vbHMpCisgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY20uX19lbnRlcl9fKCkKKyAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0Yik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY20uX19leGl0X18odHlwZSwgdmFsdWUsIHRiKQogCiBpZiBjX2Z1bmN0b29sczoKLSAgICBjbGFzcyBQYXJ0aWFsU3ViY2xhc3MoY19mdW5jdG9vbHMucGFydGlhbCk6CisgICAgY2xhc3MgQ1BhcnRpYWxTdWJjbGFzcyhjX2Z1bmN0b29scy5wYXJ0aWFsKToKICAgICAgICAgcGFzcwogCitjbGFzcyBQeVBhcnRpYWxTdWJjbGFzcyhweV9mdW5jdG9vbHMucGFydGlhbCk6CisgICAgcGFzcwogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKIGNsYXNzIFRlc3RQYXJ0aWFsQ1N1YmNsYXNzKFRlc3RQYXJ0aWFsQyk6CiAgICAgaWYgY19mdW5jdG9vbHM6Ci0gICAgICAgIHBhcnRpYWwgPSBQYXJ0aWFsU3ViY2xhc3MKKyAgICAgICAgcGFydGlhbCA9IENQYXJ0aWFsU3ViY2xhc3MKIAogICAgICMgcGFydGlhbCBzdWJjbGFzc2VzIGFyZSBub3Qgb3B0aW1pemVkIGZvciBuZXN0ZWQgY2FsbHMKICAgICB0ZXN0X25lc3RlZF9vcHRpbWl6YXRpb24gPSBOb25lCiAKK2NsYXNzIFRlc3RQYXJ0aWFsUHlTdWJjbGFzcyhUZXN0UGFydGlhbFB5KToKKyAgICBwYXJ0aWFsID0gUHlQYXJ0aWFsU3ViY2xhc3MKIAogY2xhc3MgVGVzdFBhcnRpYWxNZXRob2QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02ODMsOSArNzA5LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhIGRpZmZlcmVudCB0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmRpY3RfYXR0ciwgZi5kaWN0X2F0dHIpCiAKLQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCiBjbGFzcyBUZXN0UmVkdWNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBmdW5jID0gZnVuY3Rvb2xzLnJlZHVjZQorICAgIGlmIGNfZnVuY3Rvb2xzOgorICAgICAgICBmdW5jID0gY19mdW5jdG9vbHMucmVkdWNlCiAKICAgICBkZWYgdGVzdF9yZWR1Y2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIFNxdWFyZXM6CkBAIC0xNTQ4LDEzICsxNTc1LDE1IEBACiAgICAgICAgIGJhc2VzID0gW2MuU2VxdWVuY2UsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywgYy5TZXRdCiAgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgogICAgICAgICAgICAgbSA9IG1ybyhkaWN0LCBoYXlzdGFjaykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW2RpY3QsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywgYy5TaXplZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLCBvYmplY3RdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db2xsZWN0aW9uLCBjLlNpemVkLCBjLkl0ZXJhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db250YWluZXIsIG9iamVjdF0pCiAgICAgICAgIGJhc2VzID0gW2MuQ29udGFpbmVyLCBjLk1hcHBpbmcsIGMuTXV0YWJsZU1hcHBpbmcsIGMuT3JkZXJlZERpY3RdCiAgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgogICAgICAgICAgICAgbSA9IG1ybyhjLkNoYWluTWFwLCBoYXlzdGFjaykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW2MuQ2hhaW5NYXAsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuU2l6ZWQsIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLCBvYmplY3RdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db2xsZWN0aW9uLCBjLlNpemVkLCBjLkl0ZXJhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db250YWluZXIsIG9iamVjdF0pCiAKICAgICAgICAgIyBJZiB0aGVyZSdzIGEgZ2VuZXJpYyBmdW5jdGlvbiB3aXRoIGltcGxlbWVudGF0aW9ucyByZWdpc3RlcmVkIGZvcgogICAgICAgICAjIGJvdGggU2l6ZWQgYW5kIENvbnRhaW5lciwgcGFzc2luZyBhIGRlZmF1bHRkaWN0IHRvIGl0IHJlc3VsdHMgaW4gYW4KQEAgLTE1NzUsOSArMTYwNCw5IEBACiAgICAgICAgIGJhc2VzID0gW2MuTXV0YWJsZVNlcXVlbmNlLCBjLk11dGFibGVNYXBwaW5nXQogICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKICAgICAgICAgICAgIG0gPSBtcm8oRCwgYmFzZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtELCBjLk11dGFibGVTZXF1ZW5jZSwgYy5TZXF1ZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZGVmYXVsdGRpY3QsIGRpY3QsIGMuTXV0YWJsZU1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLk1hcHBpbmcsIGMuU2l6ZWQsIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbRCwgYy5NdXRhYmxlU2VxdWVuY2UsIGMuU2VxdWVuY2UsIGMuUmV2ZXJzaWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZGVmYXVsdGRpY3QsIGRpY3QsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29sbGVjdGlvbiwgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RdKQogCiAgICAgICAgICMgQ29udGFpbmVyIGFuZCBDYWxsYWJsZSBhcmUgcmVnaXN0ZXJlZCBvbiBkaWZmZXJlbnQgYmFzZSBjbGFzc2VzIGFuZApAQCAtMTU5MCw3ICsxNjE5LDggQEAKICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKEMsIGhheXN0YWNrKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbQywgYy5DYWxsYWJsZSwgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbnRhaW5lciwgb2JqZWN0XSkKIAogICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2FiYyhzZWxmKToKICAgICAgICAgYyA9IGNvbGxlY3Rpb25zCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weSBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CmluZGV4IGJlYWM5OTMuLjIxM2IyYmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CkBAIC00LDcgKzQsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgcmUKIAotcnggPSByZS5jb21waWxlKCdcKChcUyspLnB5LCBsaW5lIChcZCspJykKK3J4ID0gcmUuY29tcGlsZShyJ1woKFxTKykucHksIGxpbmUgKFxkKyknKQogCiBkZWYgZ2V0X2Vycm9yX2xvY2F0aW9uKG1zZyk6CiAgICAgbW8gPSByeC5zZWFyY2goc3RyKG1zZykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2djLnB5IGIvTGliL3Rlc3QvdGVzdF9nYy5weQppbmRleCBhNGQ2ODRiLi5lNzI3NDk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2djLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKQEAgLTY4NCw3ICs2ODQsNiBAQAogICAgICAgICAjIENyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZSB0aHJvdWdoIHRoZSBfX21haW5fXyBtb2R1bGUgYW5kIGNoZWNrCiAgICAgICAgICMgaXQgZ2V0cyBjb2xsZWN0ZWQgYXQgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgotICAgICAgICAgICAgaW1wb3J0IHdlYWtyZWYKICAgICAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCdfX2RlbF9fIGNhbGxlZCcpCkBAIC02OTksNyArNjk4LDYgQEAKICAgICAgICAgIyBTYW1lIGFzIGFib3ZlLCBidXQgd2l0aCBhIG5vbi1fX21haW5fXyBtb2R1bGUuCiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgbW9kdWxlID0gIiIiaWYgMToKLSAgICAgICAgICAgICAgICBpbXBvcnQgd2Vha3JlZgogICAgICAgICAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ19fZGVsX18gY2FsbGVkJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5IGIvTGliL3Rlc3QvdGVzdF9nZGIucHkKaW5kZXggM2RiMTBiNi4uNWZiZjE1NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZGIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZGIucHkKQEAgLTUsMTMgKzUsMTUgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKLWltcG9ydCBwcHJpbnQKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBsb2NhbGUKIAorIyBGSVhNRTogaXNzdWUgIzI4MDIzCityYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiRklYTUU6IGlzc3VlICMyODAyMywgY29tcGFjdCBkaWN0IChpc3N1ZSAjMjczNTApIGJyb2tlIHB5dGhvbi1nZGIucHkiKQorCiAjIElzIHRoaXMgUHl0aG9uIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCB0aHJlYWRzPwogdHJ5OgogICAgIGltcG9ydCBfdGhyZWFkCkBAIC0xMTEsNiArMTEzLDcgQEAKIAogQlJFQUtQT0lOVF9GTj0nYnVpbHRpbl9pZCcKIAorQHVuaXR0ZXN0LnNraXBJZihzdXBwb3J0LlBHTywgIm5vdCB1c2VmdWwgZm9yIFBHTyIpCiBjbGFzcyBEZWJ1Z2dlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlRlc3QgdGhhdCB0aGUgZGVidWdnZXIgY2FuIGRlYnVnIFB5dGhvbi4iIiIKQEAgLTE3Nyw2ICsxODAsNyBAQAogICAgICAgICBhcmdzID0gWyctLWV2YWwtY29tbWFuZD0lcycgJSBjbWQgZm9yIGNtZCBpbiBjb21tYW5kc10KICAgICAgICAgYXJncyArPSBbIi0tYXJncyIsCiAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlXQorICAgICAgICBhcmdzLmV4dGVuZChzdWJwcm9jZXNzLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSkKIAogICAgICAgICBpZiBub3QgaW1wb3J0X3NpdGU6CiAgICAgICAgICAgICAjIC1TIHN1cHByZXNzZXMgdGhlIGRlZmF1bHQgJ2ltcG9ydCBzaXRlJwpAQCAtMjQwLDcgKzI0NCw3IEBACiAgICAgICAgICMgZ2RiIGNhbiBpbnNlcnQgYWRkaXRpb25hbCAnXG4nIGFuZCBzcGFjZSBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgcGxhY2VzCiAgICAgICAgICMgaW4gaXRzIG91dHB1dCwgZGVwZW5kaW5nIG9uIHRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwgaXQncyBjb25uZWN0ZWQKICAgICAgICAgIyB0byAodXNpbmcgaXRzICJ3cmFwX2hlcmUiIGZ1bmN0aW9uKQotICAgICAgICBtID0gcmUubWF0Y2goJy4qIzBccytidWlsdGluX2lkXHMrXChzZWxmXD0uKixccyt2PVxzKiguKj8pXClccythdFxzK1xTKlB5dGhvbi9ibHRpbm1vZHVsZS5jLionLAorICAgICAgICBtID0gcmUubWF0Y2gocicuKiMwXHMrYnVpbHRpbl9pZFxzK1woc2VsZlw9LiosXHMrdj1ccyooLio/KVwpXHMrYXRccytcUypQeXRob24vYmx0aW5tb2R1bGUuYy4qJywKICAgICAgICAgICAgICAgICAgICAgIGdkYl9vdXRwdXQsIHJlLkRPVEFMTCkKICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZ2RiIG91dHB1dDogJXJcbiVzJyAlIChnZGJfb3V0cHV0LCBnZGJfb3V0cHV0KSkKQEAgLTI5Miw3ICsyOTYsOSBAQAogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2YgZGljdGlvbmFyaWVzJwogICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoe30pCiAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcih7J2Zvbyc6ICdiYXInfSwgInsnZm9vJzogJ2Jhcid9IikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHsnZm9vJzogJ2JhcicsICdkb3VnbGFzJzogNDJ9LCAieydkb3VnbGFzJzogNDIsICdmb28nOiAnYmFyJ30iKQorICAgICAgICAjIFBZVEhPTkhBU0hTRUVEIGlzIG5lZWQgdG8gZ2V0IHRoZSBleGFjdCBpdGVtIG9yZGVyCisgICAgICAgIGlmIG5vdCBzeXMuZmxhZ3MuaWdub3JlX2Vudmlyb25tZW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHsnZm9vJzogJ2JhcicsICdkb3VnbGFzJzogNDJ9LCAieydkb3VnbGFzJzogNDIsICdmb28nOiAnYmFyJ30iKQogCiAgICAgZGVmIHRlc3RfbGlzdHMoc2VsZik6CiAgICAgICAgICdWZXJpZnkgdGhlIHByZXR0eS1wcmludGluZyBvZiBsaXN0cycKQEAgLTM1NSw5ICszNjEsMTIgQEAKICAgICAgICAgJ1ZlcmlmeSB0aGUgcHJldHR5LXByaW50aW5nIG9mIHNldHMnCiAgICAgICAgIGlmIChnZGJfbWFqb3JfdmVyc2lvbiwgZ2RiX21pbm9yX3ZlcnNpb24pIDwgKDcsIDMpOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgicHJldHR5LXByaW50aW5nIG9mIHNldHMgbmVlZHMgZ2RiIDcuMyBvciBsYXRlciIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoKSwgJ3NldCgpJykKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbJ2EnLCAnYiddKSwgInsnYScsICdiJ30iKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFs0LCA1LCA2XSksICJ7NCwgNSwgNn0iKQorICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KCksICJzZXQoKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWydhJ10pLCAieydhJ30iKQorICAgICAgICAjIFBZVEhPTkhBU0hTRUVEIGlzIG5lZWQgdG8gZ2V0IHRoZSBleGFjdCBmcm96ZW5zZXQgaXRlbSBvcmRlcgorICAgICAgICBpZiBub3Qgc3lzLmZsYWdzLmlnbm9yZV9lbnZpcm9ubWVudDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWydhJywgJ2InXSksICJ7J2EnLCAnYid9IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWzQsIDUsIDZdKSwgIns0LCA1LCA2fSIpCiAKICAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBoYW5kbGUgc2V0cyBjb250YWluaW5nIHRoZSAiZHVtbXkiIGtleSB2YWx1ZSwKICAgICAgICAgIyB3aGljaCBoYXBwZW5zIG9uIGRlbGV0aW9uOgpAQCAtMzcwLDkgKzM3OSwxMiBAQAogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2YgZnJvemVuc2V0cycKICAgICAgICAgaWYgKGdkYl9tYWpvcl92ZXJzaW9uLCBnZGJfbWlub3JfdmVyc2lvbikgPCAoNywgMyk6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJwcmV0dHktcHJpbnRpbmcgb2YgZnJvemVuc2V0cyBuZWVkcyBnZGIgNy4zIG9yIGxhdGVyIikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldCgpLCAnZnJvemVuc2V0KCknKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFsnYScsICdiJ10pLCAiZnJvemVuc2V0KHsnYScsICdiJ30pIikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbNCwgNSwgNl0pLCAiZnJvemVuc2V0KHs0LCA1LCA2fSkiKQorICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KCksICJmcm96ZW5zZXQoKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWydhJ10pLCAiZnJvemVuc2V0KHsnYSd9KSIpCisgICAgICAgICMgUFlUSE9OSEFTSFNFRUQgaXMgbmVlZCB0byBnZXQgdGhlIGV4YWN0IGZyb3plbnNldCBpdGVtIG9yZGVyCisgICAgICAgIGlmIG5vdCBzeXMuZmxhZ3MuaWdub3JlX2Vudmlyb25tZW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbJ2EnLCAnYiddKSwgImZyb3plbnNldCh7J2EnLCAnYid9KSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFs0LCA1LCA2XSksICJmcm96ZW5zZXQoezQsIDUsIDZ9KSIpCiAKICAgICBkZWYgdGVzdF9leGNlcHRpb25zKHNlbGYpOgogICAgICAgICAjIFRlc3QgYSBSdW50aW1lRXJyb3IKQEAgLTUwMSw2ICs1MTMsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2J1aWx0aW5zX2hlbHAoc2VsZik6CiAgICAgICAgICdFbnN1cmUgdGhhdCB0aGUgbmV3LXN0eWxlIGNsYXNzIF9IZWxwZXIgaW4gc2l0ZS5weSBjYW4gYmUgaGFuZGxlZCcKKworICAgICAgICBpZiBzeXMuZmxhZ3Mubm9fc2l0ZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5lZWQgc2l0ZSBtb2R1bGUsIGJ1dCAtUyBvcHRpb24gd2FzIHVzZWQiKQorCiAgICAgICAgICMgKHRoaXMgd2FzIHRoZSBpc3N1ZSBjYXVzaW5nIHRyYWNlYmFja3MgaW4KICAgICAgICAgIyAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTgwMzIjbXNnMTAwNTM3ICkKICAgICAgICAgZ2RiX3JlcHIsIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9nZGJfcmVwcignaWQoX19idWlsdGluc19fLmhlbHApJywgaW1wb3J0X3NpdGU9VHJ1ZSkKQEAgLTUzNiw3ICs1NTIsNyBAQAogZm9vID0gRm9vKCkKIGZvby5hbl9hdHRyID0gZm9vCiBpZChmb28pJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocic8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTQ5LDcgKzU2NSw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01NjMsNyArNTc5LDcgQEAKIGEuYW5fYXR0ciA9IGIKIGIuYW5fYXR0ciA9IGEKIGlkKGEpJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJzxGb29cKGFuX2F0dHI9PEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTU5OCw3ICs2MTQsNyBAQAogCiAgICAgZGVmIHRlc3RfYnVpbHRpbl9tZXRob2Qoc2VsZik6CiAgICAgICAgIGdkYl9yZXByLCBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfZ2RiX3JlcHIoJ2ltcG9ydCBzeXM7IGlkKHN5cy5zdGRvdXQucmVhZGxpbmVzKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPGJ1aWx0LWluIG1ldGhvZCByZWFkbGluZXMgb2YgX2lvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJzxidWlsdC1pbiBtZXRob2QgcmVhZGxpbmVzIG9mIF9pby5UZXh0SU9XcmFwcGVyIG9iamVjdCBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC02MTMsNyArNjI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J2J1aWx0aW5faWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHJpbnQgKFB5RnJhbWVPYmplY3QqKSgoKFB5Q29kZU9iamVjdCopdiktPmNvX3pvbWJpZWZyYW1lKSddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnLipccytcJDEgPVxzK0ZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIDxzdHJpbmc+LCBsaW5lIDMsIGluIGZvbyBcKFwpXHMrLionLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicuKlxzK1wkMSA9XHMrRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuRE9UQUxMKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIChnZGJfb3V0cHV0LCBnZGJfb3V0cHV0KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwNDc5LnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3Jfc3RvcC5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXA0NzkucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9yX3N0b3AucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQppbmRleCAzZjgyNDYyLi5mNGIzM2FmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CkBAIC0yNDUsMTEgKzI0NSwxMSBAQAogICAgICAgICAgICAgeWllbGQKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pLCBcCi0gICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKIAogICAgICAgICAgICAgbmV4dChnZW4oKSkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgLiogcmFpc2VkIFN0b3BJdGVyYXRpb24iKSwgXAogICAgICAgICAgICAgIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAKQEAgLTI2OCw3ICsyNjgsNyBAQAogICAgICAgICBnID0gZigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnKSwgMSkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgogICAgICAgICAgICAgICAgIG5leHQoZykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKaW5kZXggYjc3ZDFkNy4uYWU1ZGQ2YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CkBAIC0xMCwxMSArMTAsOSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAotZGVmIHNhZmVfcm1kaXIoZGlybmFtZSk6Ci0gICAgdHJ5OgotICAgICAgICBvcy5ybWRpcihkaXJuYW1lKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzCitkZWYgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGRhdGE9Yidmb28nKToKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd4YicsIDApIGFzIGZwOgorICAgICAgICBmcC53cml0ZShkYXRhKQogCiAKIGNsYXNzIEdlbmVyaWNUZXN0OgpAQCAtOTcsNTIgKzk1LDQ3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoczFbbjpuKzFdLCBzMltuOm4rMV0pCiAKICAgICBkZWYgdGVzdF9nZXRzaXplKHNlbGYpOgotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRobW9kdWxlLmdldHNpemUoc3VwcG9ydC5URVNURk4pLCAzKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2VkOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKIAotICAgIGRlZiB0ZXN0X3RpbWUoc2VsZik6Ci0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGIiZm9vIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJhYiIpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBiJ0hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGhtb2R1bGUuZ2V0c2l6ZShmaWxlbmFtZSksIDUpCisgICAgICAgIG9zLnJlbW92ZShmaWxlbmFtZSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidIZWxsbyBXb3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aG1vZHVsZS5nZXRzaXplKGZpbGVuYW1lKSwgMTIpCisKKyAgICBkZWYgdGVzdF9maWxldGltZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBiJ2ZvbycpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAiYWIiLCAwKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShiImJhciIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAicmIiKQotICAgICAgICAgICAgZCA9IGYucmVhZCgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgYiJmb29iYXIiKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCgKLSAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuZ2V0Y3RpbWUoc3VwcG9ydC5URVNURk4pLAotICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5nZXRtdGltZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgICkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlZDoKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIsIDApIGFzIGY6CisgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiImZvb2JhciIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoCisgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuZ2V0Y3RpbWUoZmlsZW5hbWUpLAorICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldG10aW1lKGZpbGVuYW1lKQorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9leGlzdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKGZpbGVuYW1lKSwgRmFsc2UpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAieGIiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhzdXBwb3J0LlRFU1RGTiksIFRydWUpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5wYXRobW9kdWxlID09IGdlbmVyaWNwYXRoOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmxleGlzdHMoc3VwcG9ydC5URVNURk4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlKCk6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKworICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoZmlsZW5hbWUpLCBUcnVlKQorCisgICAgICAgIGlmIG5vdCBzZWxmLnBhdGhtb2R1bGUgPT0gZ2VuZXJpY3BhdGg6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5sZXhpc3RzKGZpbGVuYW1lKSwgVHJ1ZSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJwaXBlIiksICJyZXF1aXJlcyBvcy5waXBlKCkiKQogICAgIGRlZiB0ZXN0X2V4aXN0c19mZChzZWxmKToKQEAgLTE1NCw1MyArMTQ3LDY2IEBACiAgICAgICAgICAgICBvcy5jbG9zZSh3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5leGlzdHMocikpCiAKLSAgICBkZWYgdGVzdF9pc2RpcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICAgICAgb3MucmVtb3ZlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIFRydWUpCi0gICAgICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlKCk6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIHNhZmVfcm1kaXIoc3VwcG9ydC5URVNURk4pCisgICAgZGVmIHRlc3RfaXNkaXJfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihmaWxlbmFtZSksIEZhbHNlKQogCi0gICAgZGVmIHRlc3RfaXNmaWxlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBUcnVlKQotICAgICAgICAgICAgb3MucmVtb3ZlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2UoKToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgc2FmZV9ybWRpcihzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgRmFsc2UpCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9jcmVhdGVfZmlsZShmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoYidmb28nKQorICAgIGRlZiB0ZXN0X2lzZGlyX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybWRpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgRmFsc2UpCisKKyAgICAgICAgb3MubWtkaXIoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2lzZmlsZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBUcnVlKQorCisgICAgZGVmIHRlc3RfaXNmaWxlX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybWRpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIG9zLm1rZGlyKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBGYWxzZSkKIAogICAgIGRlZiB0ZXN0X3NhbWVmaWxlKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X2ZuID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4sIHRlc3RfZm4pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbikKKyAgICAgICAgZmlsZTEgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBmaWxlMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZTEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZTIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUoZmlsZTEsIGZpbGUxKSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUoZmlsZTEsIGZpbGUyKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSkKKworICAgIGRlZiBfdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6CisgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4xKQorCisgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCisgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKIAogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9zYW1lZmlsZV9vbl9zeW1saW5rKHNlbGYpOgpAQCAtMjA5LDMxICsyMTUsMzcgQEAKICAgICBkZWYgdGVzdF9zYW1lZmlsZV9vbl9saW5rKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3NhbWVmaWxlX29uX2xpbmtfZnVuYyhvcy5saW5rKQogCi0gICAgZGVmIF90ZXN0X3NhbWVmaWxlX29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjEpCi0KLSAgICAgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjEpCi0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KICAgICBkZWYgdGVzdF9zYW1lc3RhdChzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9mbiA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuKQotICAgICAgICAgICAgdGVzdF9mbnMgPSBbdGVzdF9mbl0qMgotICAgICAgICAgICAgc3RhdHMgPSBtYXAob3Muc3RhdCwgdGVzdF9mbnMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KCpzdGF0cykpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbikKKyAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjEpCisgICAgICAgIHN0YXQxID0gb3Muc3RhdCh0ZXN0X2ZuMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChzdGF0MSwgb3Muc3RhdCh0ZXN0X2ZuMSkpKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4yKQorICAgICAgICBzdGF0MiA9IG9zLnN0YXQodGVzdF9mbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KHN0YXQxLCBzdGF0MikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQpCisKKyAgICBkZWYgX3Rlc3Rfc2FtZXN0YXRfb25fbGlua19mdW5jKHNlbGYsIGZ1bmMpOgorICAgICAgICB0ZXN0X2ZuMSA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCisgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKKyAgICAgICAgZnVuYyh0ZXN0X2ZuMSwgdGVzdF9mbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQob3Muc3RhdCh0ZXN0X2ZuMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdCh0ZXN0X2ZuMikpKQorICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KG9zLnN0YXQodGVzdF9mbjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KHRlc3RfZm4yKSkpCiAKICAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiAgICAgZGVmIHRlc3Rfc2FtZXN0YXRfb25fc3ltbGluayhzZWxmKToKQEAgLTI0MiwzMSArMjU0LDE3IEBACiAgICAgZGVmIHRlc3Rfc2FtZXN0YXRfb25fbGluayhzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9zYW1lc3RhdF9vbl9saW5rX2Z1bmMob3MubGluaykKIAotICAgIGRlZiBfdGVzdF9zYW1lc3RhdF9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4xKQotICAgICAgICAgICAgdGVzdF9mbnMgPSAodGVzdF9mbjEsIHRlc3RfZm4yKQotICAgICAgICAgICAgZnVuYygqdGVzdF9mbnMpCi0gICAgICAgICAgICBzdGF0cyA9IG1hcChvcy5zdGF0LCB0ZXN0X2ZucykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoKnN0YXRzKSkKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKLQotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjIpCi0gICAgICAgICAgICBzdGF0cyA9IG1hcChvcy5zdGF0LCB0ZXN0X2ZucykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KCpzdGF0cykpCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4xKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCiAgICAgZGVmIHRlc3Rfc2FtZW9wZW5maWxlKHNlbGYpOgotICAgICAgICBmbmFtZSA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCi0gICAgICAgIHdpdGggb3BlbihmbmFtZSwgIndiIikgYXMgYSwgb3BlbihmbmFtZSwgIndiIikgYXMgYjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZW9wZW5maWxlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmZpbGVubygpLCBiLmZpbGVubygpKSkKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSkKKworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIsIDApIGFzIGZwMToKKyAgICAgICAgICAgIGZkMSA9IGZwMS5maWxlbm8oKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiLCAwKSBhcyBmcDI6CisgICAgICAgICAgICAgICAgZmQyID0gZnAyLmZpbGVubygpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lb3BlbmZpbGUoZmQxLCBmZDIpKQorCiAKIGNsYXNzIFRlc3RHZW5lcmljVGVzdChHZW5lcmljVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgSXNzdWUgMTY4NTI6IEdlbmVyaWNUZXN0IGNhbid0IGluaGVyaXQgZnJvbSB1bml0dGVzdC5UZXN0Q2FzZQpAQCAtMzkwLDEwICszODgsMTMgQEAKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiImZvbyIsIHNlbGYucGF0aG1vZHVsZS5hYnNwYXRoKGIiZm9vIikpCiAKKyAgICAgICAgIyBhdm9pZCBVbmljb2RlRGVjb2RlRXJyb3Igb24gV2luZG93cworICAgICAgICB1bmRlY29kYWJsZV9wYXRoID0gYicnIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIGVsc2UgYidmXHhmMlx4ZjInCisKICAgICAgICAgIyBBYnNwYXRoIHJldHVybnMgYnl0ZXMgd2hlbiB0aGUgYXJnIGlzIGJ5dGVzCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gKGInJywgYidmb28nLCBiJ2ZceGYyXHhmMicsIGInL2ZvbycsIGInQzpcXCcpOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gKGInJywgYidmb28nLCB1bmRlY29kYWJsZV9wYXRoLCBiJy9mb28nLCBiJ0M6XFwnKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5wYXRobW9kdWxlLmFic3BhdGgocGF0aCksIGJ5dGVzKQogCiAgICAgZGVmIHRlc3RfcmVhbHBhdGgoc2VsZik6CkBAIC00NTIsMTYgKzQ1MywxNSBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbignc3RyJywgYidieXRlcycpCiAgICAgICAgICAgICAjIHJlZ3Jlc3Npb24sIHNlZSAjMTUzNzcKLSAgICAgICAgICAgIGVycm1zZyA9IHInam9pblwoXCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsIG5vdCAlcicKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbig0MiwgJ3N0cicpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oJ3N0cicsIDQyKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKDQyKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2xpc3QnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdsaXN0Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oW10pCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnYnl0ZWFycmF5Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnYnl0ZWFycmF5Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oYnl0ZWFycmF5KGInZm9vJyksIGJ5dGVhcnJheShiJ2JhcicpKQogCiAgICAgZGVmIHRlc3RfcmVscGF0aF9lcnJvcnMoc2VsZik6CkBAIC00NzMsMTQgKzQ3Myw1OSBAQAogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKGInYnl0ZXMnLCAnc3RyJykKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoJ3N0cicsIGInYnl0ZXMnKQotICAgICAgICAgICAgZXJybXNnID0gcidyZWxwYXRoXChcKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgbm90ICVyJwotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKDQyLCAnc3RyJykKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCgnc3RyJywgNDIpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnYnl0ZWFycmF5Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnYnl0ZWFycmF5Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoYnl0ZWFycmF5KGInZm9vJyksIGJ5dGVhcnJheShiJ2JhcicpKQogCiAKK2NsYXNzIFBhdGhMaWtlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPScnKToKKyAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYucGF0aCwgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5wYXRoCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5maWxlX25hbWUgPSBzdXBwb3J0LlRFU1RGTi5sb3dlcigpCisgICAgICAgIHNlbGYuZmlsZV9wYXRoID0gc2VsZi5QYXRoTGlrZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgY3JlYXRlX2ZpbGUoc2VsZi5maWxlX25hbWUsIGIidGVzdF9nZW5lcmljcGF0aC5QYXRoTGlrZVRlc3RzIikKKworICAgIGRlZiBhc3NlcnRQYXRoRXF1YWwoc2VsZiwgZnVuYyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyhzZWxmLmZpbGVfcGF0aCksIGZ1bmMoc2VsZi5maWxlX25hbWUpKQorCisgICAgZGVmIHRlc3RfcGF0aF9leGlzdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguZXhpc3RzKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2ZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguaXNmaWxlKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2RpcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5pc2RpcikKKworICAgIGRlZiB0ZXN0X3BhdGhfY29tbW9ucHJlZml4KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguY29tbW9ucHJlZml4KFtzZWxmLmZpbGVfcGF0aCwgc2VsZi5maWxlX25hbWVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZ2V0c2l6ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5nZXRzaXplKQorCisgICAgZGVmIHRlc3RfcGF0aF9nZXRtdGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5nZXRhdGltZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZ2V0Y3RpbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguZ2V0Y3RpbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NhbWVmaWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lZmlsZShzZWxmLmZpbGVfcGF0aCwgc2VsZi5maWxlX25hbWUpKQorCisKIGlmIF9fbmFtZV9fPT0iX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKaW5kZXggOTg0YWFjNy4uOGExOTRhYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CkBAIC01LDEwICs1LDYgQEAKICMgU2tpcCB0aGlzIHRlc3QgaWYgdGhlIF90ZXN0Y2FwaSBtb2R1bGUgaXNuJ3QgYXZhaWxhYmxlLgogc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQogZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3Nfa2V5d29yZHMsIGdldGFyZ3Nfa2V5d29yZF9vbmx5Ci10cnk6Ci0gICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfTCwgZ2V0YXJnc19LCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZ2V0YXJnc19MID0gTm9uZSAjIFBZX0xPTkdfTE9ORyBub3QgYXZhaWxhYmxlCiAKICMgPiBIb3cgYWJvdXQgdGhlIGZvbGxvd2luZyBjb3VudGVycHJvcG9zYWwuIFRoaXMgYWxzbyBjaGFuZ2VzIHNvbWUgb2YKICMgPiB0aGUgb3RoZXIgZm9ybWF0IGNvZGVzIHRvIGJlIGEgbGl0dGxlIG1vcmUgcmVndWxhci4KQEAgLTMwOSw3ICszMDUsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRhcmdzX24sIFZFUllfTEFSR0UpCiAKIAotQHVuaXR0ZXN0LnNraXBJZihnZXRhcmdzX0wgaXMgTm9uZSwgJ1BZX0xPTkdfTE9ORyBpcyBub3QgYXZhaWxhYmxlJykKIGNsYXNzIExvbmdMb25nX1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9MKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19MCkBAIC0zNjUsNyArMzYwLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoRmxvYXRTdWJjbGFzcyg3LjUpKSwgNy41KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihGbG9hdFN1YmNsYXNzMig3LjUpKSwgNy41KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZiwgQmFkRmxvYXQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoQmFkRmxvYXQyKCkpLCA0LjI1KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEJhZEZsb2F0MigpKSwgNC4yNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoQmFkRmxvYXQzKDcuNSkpLCA3LjUpCiAKICAgICAgICAgZm9yIHggaW4gKEZMVF9NSU4sIC1GTFRfTUlOLCBGTFRfTUFYLCAtRkxUX01BWCwgSU5GLCAtSU5GKToKQEAgLTM5MCw3ICszODYsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChGbG9hdFN1YmNsYXNzKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEZsb2F0U3ViY2xhc3MyKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19kLCBCYWRGbG9hdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChCYWRGbG9hdDIoKSksIDQuMjUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoQmFkRmxvYXQyKCkpLCA0LjI1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChCYWRGbG9hdDMoNy41KSksIDcuNSkKIAogICAgICAgICBmb3IgeCBpbiAoREJMX01JTiwgLURCTF9NSU4sIERCTF9NQVgsIC1EQkxfTUFYLCBJTkYsIC1JTkYpOgpAQCAtNDc0LDcgKzQ3MSw3IEBACiAKICAgICAgICAgcmV0ID0gZ2V0X2FyZ3MoKlR1cGxlU3ViY2xhc3MoWzEsIDJdKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsICgxLCAyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJldCwgdHVwbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyZXQpLCB0dXBsZSkKIAogICAgICAgICByZXQgPSBnZXRfYXJncygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmV0LCAoKCksIE5vbmUpKQpAQCAtNTEyLDcgKzUwOSw3IEBACiAKICAgICAgICAgcmV0ID0gZ2V0X2t3YXJncygqKkRpY3RTdWJjbGFzcyh7J2EnOiAxLCAnYic6IDJ9KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsIHsnYSc6IDEsICdiJzogMn0pCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZXQsIGRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyZXQpLCBkaWN0KQogCiAgICAgICAgIHJldCA9IGdldF9rd2FyZ3MoKQogICAgICAgICBzZWxmLmFzc2VydEluKHJldCwgKHt9LCBOb25lKSkKQEAgLTYyOCwyMCArNjI1LDIwIEBACiAgICAgICAgICAgICApCiAgICAgICAgICMgcmVxdWlyZWQgYXJnIG1pc3NpbmcKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKKyAgICAgICAgICAgIHIiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShvcHRpb25hbD0yKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CisgICAgICAgICAgICByIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoa2V5d29yZF9vbmx5PTMpCiAKICAgICBkZWYgdGVzdF90b29fbWFueV9hcmdzKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDMgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgciJGdW5jdGlvbiB0YWtlcyBhdCBtb3N0IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgzIGdpdmVuXCkiKToKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIDMpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICJmdW5jdGlvbiB0YWtlcyBhdCBtb3N0IDMgYXJndW1lbnRzIFwoNCBnaXZlblwpIik6CisgICAgICAgICAgICByImZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMyBhcmd1bWVudHMgXCg0IGdpdmVuXCkiKToKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIDMsIGtleXdvcmRfb25seT01KQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9rZXl3b3JkKHNlbGYpOgpAQCAtNjU2LDYgKzY1MywzOSBAQAogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgKip7J1x1REM4MCc6IDEwfSkKIAogCitjbGFzcyBQb3NpdGlvbmFsT25seUFuZEtleXdvcmRzX1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19wb3NpdGlvbmFsX29ubHlfYW5kX2tleXdvcmRzIGFzIGdldGFyZ3MKKworICAgIGRlZiB0ZXN0X3Bvc2l0aW9uYWxfYXJncyhzZWxmKToKKyAgICAgICAgIyB1c2luZyBhbGwgcG9zc2libGUgcG9zaXRpb25hbCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIDIsIDMpLCAoMSwgMiwgMykpCisKKyAgICBkZWYgdGVzdF9taXhlZF9hcmdzKHNlbGYpOgorICAgICAgICAjIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxLCAyLCBrZXl3b3JkPTMpLCAoMSwgMiwgMykpCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIG1pc3Npbmcgb3B0aW9uYWwgYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxLCAyKSwgKDEsIDIsIC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSwga2V5d29yZD0zKSwgKDEsIC0xLCAzKSkKKworICAgIGRlZiB0ZXN0X3JlcXVpcmVkX2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEpLCAoMSwgLTEsIC0xKSkKKyAgICAgICAgIyByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZyBtaXNzaW5nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICByIkZ1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDEgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgwIGdpdmVuXCkiKToKKyAgICAgICAgICAgIHNlbGYuZ2V0YXJncygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgIHIiRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgc2VsZi5nZXRhcmdzKGtleXdvcmQ9MykKKworICAgIGRlZiB0ZXN0X2VtcHR5X2tleXdvcmQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiJycgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIik6CisgICAgICAgICAgICBzZWxmLmdldGFyZ3MoMSwgMiwgKip7Jyc6IDY2Nn0pCisKKwogY2xhc3MgQnl0ZXNfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Moc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2MKQEAgLTgyMiwxMCArODUyLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19lc19oYXNoKCdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZiksIGInYWJjXHhlOScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoYidhYmNceGU5XHgwMCcpKQogICAgICAgICBidWYgPSBieXRlYXJyYXkoYid4Jyo0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX2VzX2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ3gnKjQpKQogICAgICAgICBidWYgPSBieXRlYXJyYXkoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX2VzX2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKIAogICAgIGRlZiB0ZXN0X2V0X2hhc2goc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2V0X2hhc2gKQEAgLTg0OCwxMCArODc4LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19ldF9oYXNoKCdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZiksIGInYWJjXHhlOScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoYidhYmNceGU5XHgwMCcpKQogICAgICAgICBidWYgPSBieXRlYXJyYXkoYid4Jyo0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX2V0X2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ3gnKjQpKQogICAgICAgICBidWYgPSBieXRlYXJyYXkoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX2V0X2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKIAogICAgIGRlZiB0ZXN0X3Uoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQppbmRleCBkZTYxMGM3Li5kMzQ1YmFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IG9zCiBpbXBvcnQgYmFzZTY0Ci1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgZ2V0dGV4dAogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTQ0MCw2ICs0MzksMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Ll9fY2xhc3NfXywgRHVtbXlHTlVUcmFuc2xhdGlvbnMpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnYzJweScsICdFTk9FTlQnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBnZXR0ZXh0LCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5IGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CmluZGV4IDE1NGUzYjYuLjAzZjJjODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKQEAgLTgsNiArOCw5NSBAQAogIyB0ZXN0aW5nIGltcG9ydCAqCiBmcm9tIHN5cyBpbXBvcnQgKgogCisjIGRpZmZlcmVudCBpbXBvcnQgcGF0dGVybnMgdG8gY2hlY2sgdGhhdCBfX2Fubm90YXRpb25zX18gZG9lcyBub3QgaW50ZXJmZXJlCisjIHdpdGggaW1wb3J0IG1hY2hpbmVyeQoraW1wb3J0IHRlc3QuYW5uX21vZHVsZSBhcyBhbm5fbW9kdWxlCitpbXBvcnQgdHlwaW5nCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDaGFpbk1hcAorZnJvbSB0ZXN0IGltcG9ydCBhbm5fbW9kdWxlMgoraW1wb3J0IHRlc3QKKworIyBUaGVzZSBhcmUgc2hhcmVkIHdpdGggdGVzdF90b2tlbml6ZSBhbmQgb3RoZXIgdGVzdCBtb2R1bGVzLgorIworIyBOb3RlOiBzaW5jZSBzZXZlcmFsIHRlc3QgY2FzZXMgZmlsdGVyIG91dCBmbG9hdHMgYnkgbG9va2luZyBmb3IgImUiIGFuZCAiLiIsCisjIGRvbid0IGFkZCBoZXhhZGVjaW1hbCBsaXRlcmFscyB0aGF0IGNvbnRhaW4gImUiIG9yICJFIi4KK1ZBTElEX1VOREVSU0NPUkVfTElURVJBTFMgPSBbCisgICAgJzBfMF8wJywKKyAgICAnNF8yJywKKyAgICAnMV8wMDAwXzAwMDAnLAorICAgICcwYjEwMDFfMDEwMCcsCisgICAgJzB4ZmZmZl9mZmZmJywKKyAgICAnMG81XzdfNycsCisgICAgJzFfMDBfMDAuNScsCisgICAgJzFfMDBfMDAuNWU1JywKKyAgICAnMV8wMF8wMGU1XzEnLAorICAgICcxZTFfMCcsCisgICAgJy4xXzQnLAorICAgICcuMV80ZTEnLAorICAgICcwYl8wJywKKyAgICAnMHhfZicsCisgICAgJzBvXzUnLAorICAgICcxXzAwXzAwaicsCisgICAgJzFfMDBfMDAuNWonLAorICAgICcxXzAwXzAwZTVfMWonLAorICAgICcuMV80aicsCisgICAgJygxXzIuNSszXzNqKScsCisgICAgJyguNV82aiknLAorXQorSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTID0gWworICAgICMgVHJhaWxpbmcgdW5kZXJzY29yZXM6CisgICAgJzBfJywKKyAgICAnNDJfJywKKyAgICAnMS40al8nLAorICAgICcweF8nLAorICAgICcwYjFfJywKKyAgICAnMHhmXycsCisgICAgJzBvNV8nLAorICAgICcwIGlmIDFfRWxzZSAxJywKKyAgICAjIFVuZGVyc2NvcmVzIGluIHRoZSBiYXNlIHNlbGVjdG9yOgorICAgICcwX2IwJywKKyAgICAnMF94ZicsCisgICAgJzBfbzUnLAorICAgICMgT2xkLXN0eWxlIG9jdGFsLCBzdGlsbCBkaXNhbGxvd2VkOgorICAgICcwXzcnLAorICAgICcwOV85OScsCisgICAgIyBNdWx0aXBsZSBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlczoKKyAgICAnNF9fX19fX18yJywKKyAgICAnMC4xX180JywKKyAgICAnMC4xX180aicsCisgICAgJzBiMTAwMV9fMDEwMCcsCisgICAgJzB4ZmZmZl9fZmZmZicsCisgICAgJzB4X19fJywKKyAgICAnMG81X183NycsCisgICAgJzFlMV9fMCcsCisgICAgJzFlMV9fMGonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBiZWZvcmUgYSBkb3Q6CisgICAgJzFfLjQnLAorICAgICcxXy40aicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGFmdGVyIGEgZG90OgorICAgICcxLl80JywKKyAgICAnMS5fNGonLAorICAgICcuXzUnLAorICAgICcuXzVqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYWZ0ZXIgYSBzaWduOgorICAgICcxLjBlK18xJywKKyAgICAnMS4wZStfMWonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBiZWZvcmUgajoKKyAgICAnMS40X2onLAorICAgICcxLjRlNV9qJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYmVmb3JlIGU6CisgICAgJzFfZTEnLAorICAgICcxLjRfZTEnLAorICAgICcxLjRfZTFqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYWZ0ZXIgZToKKyAgICAnMWVfMScsCisgICAgJzEuNGVfMScsCisgICAgJzEuNGVfMWonLAorICAgICMgQ29tcGxleCBjYXNlcyB3aXRoIHBhcmVuczoKKyAgICAnKDErMS41X2pfKScsCisgICAgJygxKzEuNV9qKScsCitdCisKIAogY2xhc3MgVG9rZW5UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTg3LDYgKzE3NiwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEgaWYgMGVsc2UgMCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIwIGlmIDFFbHNlIDAiKQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZV9saXRlcmFscyhzZWxmKToKKyAgICAgICAgZm9yIGxpdCBpbiBWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKGxpdCksIGV2YWwobGl0LnJlcGxhY2UoJ18nLCAnJykpKQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCBsaXQpCisgICAgICAgICMgU2FuaXR5IGNoZWNrOiBubyBsaXRlcmFsIGJlZ2lucyB3aXRoIGFuIHVuZGVyc2NvcmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCBldmFsLCAiXzAiKQorCiAgICAgZGVmIHRlc3Rfc3RyaW5nX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICB4ID0gJyc7IHkgPSAiIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAwIGFuZCB4ID09IHkpCiAgICAgICAgIHggPSAnXCcnOyB5ID0gIiciOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDEgYW5kIHggPT0geSBhbmQgb3JkKHgpID09IDM5KQpAQCAtMTM5LDYgKzIzNiwxOSBAQAogICAgICAgICAgICAgICAgIGNvbXBpbGUocywgIjx0ZXN0PiIsICJleGVjIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInVuZXhwZWN0ZWQgRU9GIiwgc3RyKGNtLmV4Y2VwdGlvbikpCiAKK3Zhcl9hbm5vdF9nbG9iYWw6IGludCAjIGEgZ2xvYmFsIGFubm90YXRlZCBpcyBuZWNlc3NhcnkgZm9yIHRlc3RfdmFyX2Fubm90CisKKyMgY3VzdG9tIG5hbWVzcGFjZSBmb3IgdGVzdGluZyBfX2Fubm90YXRpb25zX18KKworY2xhc3MgQ05TOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fZGN0ID0ge30KKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaXRlbSwgdmFsdWUpOgorICAgICAgICBzZWxmLl9kY3RbaXRlbS5sb3dlcigpXSA9IHZhbHVlCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgorICAgICAgICByZXR1cm4gc2VsZi5fZGN0W2l0ZW1dCisKKwogY2xhc3MgR3JhbW1hclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgc2luZ2xlX2lucHV0OiBORVdMSU5FIHwgc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10IE5FV0xJTkUKQEAgLTE1NCw2ICsyNjQsMTYzIEBACiAgICAgICAgICMgdGVzdGxpc3QgRU5ETUFSS0VSCiAgICAgICAgIHggPSBldmFsKCcxLCAwIG9yIDEnKQogCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgIyBhbGwgdGhlc2Ugc2hvdWxkIGJlIGFsbG93ZWQKKyAgICAgICAgdmFyMTogaW50ID0gNQorICAgICAgICB2YXIyOiBbaW50LCBzdHJdCisgICAgICAgIG15X2xzdCA9IFs0Ml0KKyAgICAgICAgZGVmIG9uZSgpOgorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgaW50Lm5ld19hdHRyOiBpbnQKKyAgICAgICAgW2xpc3RdWzBdOiB0eXBlCisgICAgICAgIG15X2xzdFtvbmUoKS0xXTogaW50ID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15X2xzdCwgWzVdKQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X3N5bnRheF9lcnJvcnMoc2VsZik6CisgICAgICAgICMgcGFyc2VyIHBhc3MKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZjogaW50IikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ4OiBpbnQ6IHN0ciIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgbm9ubG9jYWwgeDogaW50XG4iKQorICAgICAgICAjIEFTVCBwYXNzCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiW3gsIDBdOiBpbnRcbiIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigpOiBpbnRcbiIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiKHgsKTogaW50IikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAoeCwgeSk6IGludCA9ICgxLCAyKVxuIikKKyAgICAgICAgIyBzeW10YWJsZSBwYXNzCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGdsb2JhbCB4XG4iKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGdsb2JhbCB4XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IGludFxuIikKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9iYXNpY19zZW1hbnRpY3Moc2VsZik6CisgICAgICAgICMgZXhlY3V0aW9uIG9yZGVyCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgbm9fbmFtZVtkb2VzX25vdF9leGlzdF06IG5vX25hbWVfYWdhaW4gPSAxLzAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgbm9fbmFtZVtkb2VzX25vdF9leGlzdF06IDEvMCA9IDAKKyAgICAgICAgZ2xvYmFsIHZhcl9hbm5vdF9nbG9iYWwKKworICAgICAgICAjIGZ1bmN0aW9uIHNlbWFudGljcworICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgc3Q6IHN0ciA9ICJIZWxsbyIKKyAgICAgICAgICAgIGEuYjogaW50ID0gKDEsIDIpCisgICAgICAgICAgICByZXR1cm4gc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9fYW5ub3RhdGlvbnNfXywge30pCisgICAgICAgIGRlZiBmX09LKCk6CisgICAgICAgICAgICB4OiAxLzAKKyAgICAgICAgZl9PSygpCisgICAgICAgIGRlZiBmYmFkKCk6CisgICAgICAgICAgICB4OiBpbnQKKyAgICAgICAgICAgIHByaW50KHgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5ib3VuZExvY2FsRXJyb3IpOgorICAgICAgICAgICAgZmJhZCgpCisgICAgICAgIGRlZiBmMmJhZCgpOgorICAgICAgICAgICAgKG5vX3N1Y2hfZ2xvYmFsKTogaW50CisgICAgICAgICAgICBwcmludChub19zdWNoX2dsb2JhbCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZjJiYWQoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIE5hbWVFcnJvcikKKworICAgICAgICAjIGNsYXNzIHNlbWFudGljcworICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgX19mb286IGludAorICAgICAgICAgICAgczogc3RyID0gImF0dHIiCisgICAgICAgICAgICB6ID0gMgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHNlbGYueDogaW50ID0geAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19hbm5vdGF0aW9uc19fLCB7J19DX19mb28nOiBpbnQsICdzJzogc3RyfSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQ0JhZDoKKyAgICAgICAgICAgICAgICBub19zdWNoX25hbWVfZGVmaW5lZC5hdHRyOiBpbnQgPSAwCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIENiYWQyKEMpOgorICAgICAgICAgICAgICAgIHg6IGludAorICAgICAgICAgICAgICAgIHgueTogbGlzdCA9IFtdCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfbWV0YWNsYXNzX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ01ldGEodHlwZSk6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKToKKyAgICAgICAgICAgICAgICByZXR1cm4geydfX2Fubm90YXRpb25zX18nOiBDTlMoKX0KKyAgICAgICAgY2xhc3MgQ0MobWV0YWNsYXNzPUNNZXRhKToKKyAgICAgICAgICAgIFhYOiAnQU5OT1QnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ0MuX19hbm5vdGF0aW9uc19fWyd4eCddLCAnQU5OT1QnKQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X21vZHVsZV9zZW1hbnRpY3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcHJpbnQodGVzdC5fX2Fubm90YXRpb25zX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5uX21vZHVsZS5fX2Fubm90YXRpb25zX18sCisgICAgICAgICAgICAgICAgICAgICB7MTogMiwgJ3gnOiBpbnQsICd5Jzogc3RyLCAnZic6IHR5cGluZy5UdXBsZVtpbnQsIGludF19KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFubl9tb2R1bGUuTS5fX2Fubm90YXRpb25zX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JzEyMyc6IDEyMywgJ28nOiB0eXBlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbm5fbW9kdWxlMi5fX2Fubm90YXRpb25zX18sIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGluZy5nZXRfdHlwZV9oaW50cyhhbm5fbW9kdWxlMi5DViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5uX21vZHVsZTIuX19kaWN0X18pLAorICAgICAgICAgICAgICAgICAgICAgICAgIENoYWluTWFwKHsndmFyJzogdHlwaW5nLkNsYXNzVmFyW2Fubl9tb2R1bGUyLkNWXX0sIHt9KSkKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9pbl9tb2R1bGUoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCBmdW5jdGlvbnMgZmFpbCB0aGUgc2FtZSB3YXkgd2hlbiBleGVjdXRlZAorICAgICAgICAjIG91dHNpZGUgb2YgbW9kdWxlIHdoZXJlIHRoZXkgd2VyZSBkZWZpbmVkCisgICAgICAgIGZyb20gdGVzdC5hbm5fbW9kdWxlMyBpbXBvcnQgZl9iYWRfYW5uLCBnX2JhZF9hbm4sIERfYmFkX2FubgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBmX2JhZF9hbm4oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBnX2JhZF9hbm4oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBEX2JhZF9hbm4oNSkKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9zaW1wbGVfZXhlYyhzZWxmKToKKyAgICAgICAgZ25zID0ge307IGxucz0ge30KKyAgICAgICAgZXhlYygiJ2RvY3N0cmluZydcbiIKKyAgICAgICAgICAgICAiX19hbm5vdGF0aW9uc19fWzFdID0gMlxuIgorICAgICAgICAgICAgICJ4OiBpbnQgPSA1XG4iLCBnbnMsIGxucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsbnNbIl9fYW5ub3RhdGlvbnNfXyJdLCB7MTogMiwgJ3gnOiBpbnR9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGduc1snX19hbm5vdGF0aW9uc19fJ10KKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9jdXN0b21fbWFwcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0cyB3aXRoIGN1c3RvbSBsb2NhbHMoKSBhbmQgX19hbm5vdGF0aW9uc19fCisgICAgICAgIG5zID0geydfX2Fubm90YXRpb25zX18nOiBDTlMoKX0KKyAgICAgICAgZXhlYygnWDogaW50OyBaOiBzdHIgPSAiWiI7ICh3KTogY29tcGxleCA9IDFqJywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ19fYW5ub3RhdGlvbnNfXyddWyd4J10sIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuc1snX19hbm5vdGF0aW9uc19fJ11bJ3onXSwgc3RyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIG5zWydfX2Fubm90YXRpb25zX18nXVsndyddCisgICAgICAgIG5vbmxvY19ucyA9IHt9CisgICAgICAgIGNsYXNzIENOUzI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5fZGN0ID0ge30KKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgbm9ubG9jX25zCisgICAgICAgICAgICAgICAgc2VsZi5fZGN0W2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgICAgICBub25sb2NfbnNbaXRlbV0gPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKyAgICAgICAgZXhlYygneDogaW50ID0gMScsIHt9LCBDTlMyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ubG9jX25zWydfX2Fubm90YXRpb25zX18nXVsneCddLCBpbnQpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfcmVmbGVhayhzZWxmKToKKyAgICAgICAgIyBjb21wbGV4IGNhc2U6IGN1c3RvbSBsb2NhbHMgcGx1cyBjdXN0b20gX19hbm5vdGF0aW9uc19fCisgICAgICAgICMgdGhpcyB3YXMgY2F1c2luZyByZWZsZWFrCisgICAgICAgIGNucyA9IENOUygpCisgICAgICAgIG5vbmxvY19ucyA9IHsnX19hbm5vdGF0aW9uc19fJzogY25zfQorICAgICAgICBjbGFzcyBDTlMyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RjdCA9IHsnX19hbm5vdGF0aW9uc19fJzogY25zfQorICAgICAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGl0ZW0sIHZhbHVlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCBub25sb2NfbnMKKyAgICAgICAgICAgICAgICBzZWxmLl9kY3RbaXRlbV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIG5vbmxvY19uc1tpdGVtXSA9IHZhbHVlCisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXRlbSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RjdFtpdGVtXQorICAgICAgICBleGVjKCdYOiBzdHInLCB7fSwgQ05TMigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vbmxvY19uc1snX19hbm5vdGF0aW9uc19fJ11bJ3gnXSwgc3RyKQorCiAgICAgZGVmIHRlc3RfZnVuY2RlZihzZWxmKToKICAgICAgICAgIyMjIFtkZWNvcmF0b3JzXSAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlCiAgICAgICAgICMjIyBkZWNvcmF0b3I6ICdAJyBkb3R0ZWRfbmFtZSBbICcoJyBbYXJnbGlzdF0gJyknIF0gTkVXTElORQpAQCAtMjk1LDYgKzU2MiwxMCBAQAogICAgICAgICBwb3Mya2V5MmRpY3QoMSwyLGsyPTEwMCx0b2t3YXJnMT0xMDAsdG9rd2FyZzI9MjAwKQogICAgICAgICBwb3Mya2V5MmRpY3QoMSwyLHRva3dhcmcxPTEwMCx0b2t3YXJnMj0yMDAsIGsyPTEwMCkKIAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgImRlZiBmKCopOiBwYXNzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqLCk6IHBhc3MiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgImRlZiBmKCosICoqa3dkcyk6IHBhc3MiKQorCiAgICAgICAgICMga2V5d29yZCBhcmd1bWVudHMgYWZ0ZXIgKmFyZ2xpc3QKICAgICAgICAgZGVmIGYoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgICAgIHJldHVybiBhcmdzLCBrd2FyZ3MKQEAgLTM0MSw3ICs2MTIsNyBAQAogICAgICAgICBkZWYgZih4KSAtPiBsaXN0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5fX2Fubm90YXRpb25zX18sIHsncmV0dXJuJzogbGlzdH0pCiAKLSAgICAgICAgIyB0ZXN0IE1BS0VfQ0xPU1VSRSB3aXRoIGEgdmFyaWV0eSBvZiBvcGFyZydzCisgICAgICAgICMgdGVzdCBjbG9zdXJlcyB3aXRoIGEgdmFyaWV0eSBvZiBvcGFyZ3MKICAgICAgICAgY2xvc3VyZSA9IDEKICAgICAgICAgZGVmIGYoKTogcmV0dXJuIGNsb3N1cmUKICAgICAgICAgZGVmIGYoeD0xKTogcmV0dXJuIGNsb3N1cmUKQEAgLTM1Miw2ICs2MjMsMjMgQEAKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCpnKDE9MikpIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCoqZygxPTIpKSIpCiAKKyAgICAgICAgIyBDaGVjayB0cmFpbGluZyBjb21tYXMgYXJlIHBlcm1pdHRlZCBpbiBmdW5jZGVmIGFyZ3VtZW50IGxpc3QKKyAgICAgICAgZGVmIGYoYSwpOiBwYXNzCisgICAgICAgIGRlZiBmKCphcmdzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsKTogcGFzcworICAgICAgICBkZWYgZihhLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywgYiwpOiBwYXNzCisgICAgICAgIGRlZiBmKCosIGIsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsIGIsKTogcGFzcworICAgICAgICBkZWYgZihhLCAqLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKCphcmdzLCBiLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZigqLCBiLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZihhLCAqYXJncywgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiwgYiwgKiprd2RzLCk6IHBhc3MKKwogICAgIGRlZiB0ZXN0X2xhbWJkZWYoc2VsZik6CiAgICAgICAgICMjIyBsYW1iZGVmOiAnbGFtYmRhJyBbdmFyYXJnc2xpc3RdICc6JyB0ZXN0CiAgICAgICAgIGwxID0gbGFtYmRhIDogMApAQCAtMzcwLDYgKzY1OCwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGw2KDEsMiksIDErMisyMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsNigxLDIsaz0xMCksIDErMisxMCkKIAorICAgICAgICAjIGNoZWNrIHRoYXQgdHJhaWxpbmcgY29tbWFzIGFyZSBwZXJtaXR0ZWQKKyAgICAgICAgbDEwID0gbGFtYmRhIGEsOiAwCisgICAgICAgIGwxMSA9IGxhbWJkYSAqYXJncyw6IDAKKyAgICAgICAgbDEyID0gbGFtYmRhICoqa3dkcyw6IDAKKyAgICAgICAgbDEzID0gbGFtYmRhIGEsICphcmdzLDogMAorICAgICAgICBsMTQgPSBsYW1iZGEgYSwgKiprd2RzLDogMAorICAgICAgICBsMTUgPSBsYW1iZGEgKmFyZ3MsIGIsOiAwCisgICAgICAgIGwxNiA9IGxhbWJkYSAqLCBiLDogMAorICAgICAgICBsMTcgPSBsYW1iZGEgKmFyZ3MsICoqa3dkcyw6IDAKKyAgICAgICAgbDE4ID0gbGFtYmRhIGEsICphcmdzLCBiLDogMAorICAgICAgICBsMTkgPSBsYW1iZGEgYSwgKiwgYiw6IDAKKyAgICAgICAgbDIwID0gbGFtYmRhIGEsICphcmdzLCAqKmt3ZHMsOiAwCisgICAgICAgIGwyMSA9IGxhbWJkYSAqYXJncywgYiwgKiprd2RzLDogMAorICAgICAgICBsMjIgPSBsYW1iZGEgKiwgYiwgKiprd2RzLDogMAorICAgICAgICBsMjMgPSBsYW1iZGEgYSwgKmFyZ3MsIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDI0ID0gbGFtYmRhIGEsICosIGIsICoqa3dkcyw6IDAKKwogCiAgICAgIyMjIHN0bXQ6IHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdAogICAgICMgVGVzdGVkIGJlbG93CkBAIC0xMDQwLDE4ICsxMzQ1LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm90aGVyLCA0MikKIAogICAgIGRlZiB0ZXN0X2FzeW5jX2F3YWl0KHNlbGYpOgotICAgICAgICBhc3luYyA9IDEKLSAgICAgICAgYXdhaXQgPSAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN5bmMsIDEpCi0KLSAgICAgICAgZGVmIGFzeW5jKCk6Ci0gICAgICAgICAgICBub25sb2NhbCBhd2FpdAotICAgICAgICAgICAgYXdhaXQgPSAxMAotICAgICAgICBhc3luYygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQsIDEwKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChhc3luYy5fX2NvZGVfXy5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKSkKLQogICAgICAgICBhc3luYyBkZWYgdGVzdCgpOgogICAgICAgICAgICAgZGVmIHN1bSgpOgogICAgICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5IGIvTGliL3Rlc3QvdGVzdF9ncnAucHkKaW5kZXggMjcyYjA4Ni4uNjkwOTVhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncnAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ncnAucHkKQEAgLTkyLDUgKzkyLDE1IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGdycC5nZXRncmdpZCwgZmFrZWdpZCkKIAorICAgIGRlZiB0ZXN0X25vbmludGVnZXJfZ2lkKHNlbGYpOgorICAgICAgICBlbnRyaWVzID0gZ3JwLmdldGdyYWxsKCkKKyAgICAgICAgaWYgbm90IGVudHJpZXM6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdubyBncm91cHMnKQorICAgICAgICAjIENob29zZSBhbiBleGlzdGVudCBnaWQuCisgICAgICAgIGdpZCA9IGVudHJpZXNbMF1bMl0KKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIGdycC5nZXRncmdpZCwgZmxvYXQoZ2lkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIGdycC5nZXRncmdpZCwgc3RyKGdpZCkpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQppbmRleCAzYzUxNjczLi5iNDU3YmQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CkBAIC01LDYgKzUsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgYmlnbWVtdGVzdCwgXzRHCiBpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgaW8KIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBhcnJheQpAQCAtNjcsNiArNjgsMTggQEAKICAgICAgICAgIyBUZXN0IG11bHRpcGxlIGNsb3NlKCkgY2FsbHMuCiAgICAgICAgIGYuY2xvc2UoKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfcmVhZF93aXRoX3BhdGhsaWtlX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gcGF0aGxpYi5QYXRoKHNlbGYuZmlsZW5hbWUpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShkYXRhMSAqIDUwKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZi5uYW1lLCBzdHIpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlbmFtZSwgJ2EnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShkYXRhMSkKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKGZpbGVuYW1lKSBhcyBmOgorICAgICAgICAgICAgZCA9IGYucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGF0YTEgKiA1MSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYubmFtZSwgc3RyKQorCiAgICAgIyBUaGUgZm9sbG93aW5nIHRlc3Rfd3JpdGVfeHkgbWV0aG9kcyB0ZXN0IHRoYXQgd3JpdGUgYWNjZXB0cwogICAgICMgdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZXMtbGlrZSBvYmplY3QgdHlwZSBhcyBpbnB1dAogICAgICMgYW5kIHRoYXQgdGhlIGRhdGEgd3JpdHRlbiBlcXVhbHMgYnl0ZXMoeHkpIGluIGFsbCBjYXNlcy4KQEAgLTQzNCwxMiArNDQ3LDEyIEBACiAKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2xpbWl0ZWQoc2VsZik6CiAgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgotICAgICAgICBib21iID0gZ3ppcC5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIGNvbXByZXNzbGV2ZWw9OSkKKyAgICAgICAgYm9tYiA9IGd6aXAuY29tcHJlc3MoYidcMCcgKiBpbnQoMmU2KSwgY29tcHJlc3NsZXZlbD05KQogICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBpby5ERUZBVUxUX0JVRkZFUl9TSVpFKQogCiAgICAgICAgIGJvbWIgPSBpby5CeXRlc0lPKGJvbWIpCiAgICAgICAgIGRlY29tcCA9IGd6aXAuR3ppcEZpbGUoZmlsZW9iaj1ib21iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvbXAucmVhZCgxKSwgYidcMCcpCiAgICAgICAgIG1heF9kZWNvbXAgPSAxICsgaW8uREVGQVVMVF9CVUZGRVJfU0laRQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvbXAuX2J1ZmZlci5yYXcudGVsbCgpLCBtYXhfZGVjb21wLAogICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBhbW91bnQgb2YgZGF0YSB3YXMgZGVjb21wcmVzc2VkIikKQEAgLTUyMSw2ICs1MzQsMTUgQEAKICAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWQpCiAKKyAgICBkZWYgdGVzdF9wYXRobGlrZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChzZWxmLmZpbGVuYW1lKQorICAgICAgICB3aXRoIGd6aXAub3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEgKiA1MCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZW5hbWUsICJhYiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGRhdGExKQorICAgICAgICB3aXRoIGd6aXAub3BlbihmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGRhdGExICogNTEpCisKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9iaW5hcnlfbW9kZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBpbXBsaWNpdCBiaW5hcnkgbW9kZXMgKG5vICJiIiBvciAidCIgaW4gbW9kZSBzdHJpbmcpLgogICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMSAqIDUwCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKaW5kZXggYzliMTEzZS4uZjc0OGI0NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQpAQCAtNyw2ICs3LDcgQEAKICMKIAogaW1wb3J0IGFycmF5Citmcm9tIGJpbmFzY2lpIGltcG9ydCB1bmhleGxpZnkKIGltcG9ydCBoYXNobGliCiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgb3MKQEAgLTE5LDYgKzIwLDcgQEAKIGltcG9ydCB3YXJuaW5ncwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgXzRHLCBiaWdtZW10ZXN0LCBpbXBvcnRfZnJlc2hfbW9kdWxlCitmcm9tIGh0dHAuY2xpZW50IGltcG9ydCBIVFRQRXhjZXB0aW9uCiAKICMgV2VyZSB3ZSBjb21waWxlZCAtLXdpdGgtcHlkZWJ1ZyBvciB3aXRoICNkZWZpbmUgUHlfREVCVUc/CiBDT01QSUxFRF9XSVRIX1BZREVCVUcgPSBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKQpAQCAtMjYsNiArMjgsMjEgQEAKIGNfaGFzaGxpYiA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2hhc2hsaWInLCBmcmVzaD1bJ19oYXNobGliJ10pCiBweV9oYXNobGliID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnaGFzaGxpYicsIGJsb2NrZWQ9WydfaGFzaGxpYiddKQogCit0cnk6CisgICAgaW1wb3J0IF9ibGFrZTIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfYmxha2UyID0gTm9uZQorCityZXF1aXJlc19ibGFrZTIgPSB1bml0dGVzdC5za2lwVW5sZXNzKF9ibGFrZTIsICdyZXF1aXJlcyBfYmxha2UyJykKKwordHJ5OgorICAgIGltcG9ydCBfc2hhMworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9zaGEzID0gTm9uZQorCityZXF1aXJlc19zaGEzID0gdW5pdHRlc3Quc2tpcFVubGVzcyhfc2hhMywgJ3JlcXVpcmVzIF9zaGEzJykKKworCiBkZWYgaGV4c3RyKHMpOgogICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIGJ5dGVzKSwgcmVwcihzKQogICAgIGggPSAiMDEyMzQ1Njc4OWFiY2RlZiIKQEAgLTM1LDEwICs1MiwzMyBAQAogICAgIHJldHVybiByCiAKIAorVVJMID0gImh0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvaGFzaGxpYi97fS50eHQiCisKK2RlZiByZWFkX3ZlY3RvcnMoaGFzaF9uYW1lKToKKyAgICB1cmwgPSBVUkwuZm9ybWF0KGhhc2hfbmFtZSkKKyAgICB0cnk6CisgICAgICAgIHRlc3RkYXRhID0gc3VwcG9ydC5vcGVuX3VybHJlc291cmNlKHVybCkKKyAgICBleGNlcHQgKE9TRXJyb3IsIEhUVFBFeGNlcHRpb24pOgorICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiQ291bGQgbm90IHJldHJpZXZlIHt9Ii5mb3JtYXQodXJsKSkKKyAgICB3aXRoIHRlc3RkYXRhOgorICAgICAgICBmb3IgbGluZSBpbiB0ZXN0ZGF0YToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpIG9yIG5vdCBsaW5lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoJywnKQorICAgICAgICAgICAgcGFydHNbMF0gPSBieXRlcy5mcm9taGV4KHBhcnRzWzBdKQorICAgICAgICAgICAgeWllbGQgcGFydHMKKworCiBjbGFzcyBIYXNoTGliVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHN1cHBvcnRlZF9oYXNoX25hbWVzID0gKCAnbWQ1JywgJ01ENScsICdzaGExJywgJ1NIQTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMjI0JywgJ1NIQTIyNCcsICdzaGEyNTYnLCAnU0hBMjU2JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTM4NCcsICdTSEEzODQnLCAnc2hhNTEyJywgJ1NIQTUxMicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzODQnLCAnU0hBMzg0JywgJ3NoYTUxMicsICdTSEE1MTInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxha2UyYicsICdibGFrZTJzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTNfMjI0JywgJ3NoYTNfMjU2JywgJ3NoYTNfMzg0JywgJ3NoYTNfNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYWtlXzEyOCcsICdzaGFrZV8yNTYnKQorCisgICAgc2hha2VzID0geydzaGFrZV8xMjgnLCAnc2hha2VfMjU2J30KIAogICAgICMgSXNzdWUgIzE0NjkzOiBmYWxsYmFjayBtb2R1bGVzIGFyZSBhbHdheXMgY29tcGlsZWQgdW5kZXIgUE9TSVgKICAgICBfd2Fybl9vbl9leHRlbnNpb25faW1wb3J0ID0gb3MubmFtZSA9PSAncG9zaXgnIG9yIENPTVBJTEVEX1dJVEhfUFlERUJVRwpAQCAtNTYsNiArOTYsMTEgQEAKICAgICAgICAgYWxnb3JpdGhtcyA9IHNldCgpCiAgICAgICAgIGZvciBhbGdvcml0aG0gaW4gc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lczoKICAgICAgICAgICAgIGFsZ29yaXRobXMuYWRkKGFsZ29yaXRobS5sb3dlcigpKQorCisgICAgICAgIF9ibGFrZTIgPSBzZWxmLl9jb25kaXRpb25hbF9pbXBvcnRfbW9kdWxlKCdfYmxha2UyJykKKyAgICAgICAgaWYgX2JsYWtlMjoKKyAgICAgICAgICAgIGFsZ29yaXRobXMudXBkYXRlKHsnYmxha2UyYicsICdibGFrZTJzJ30pCisKICAgICAgICAgc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdCA9IHt9CiAgICAgICAgIGZvciBhbGdvcml0aG0gaW4gYWxnb3JpdGhtczoKICAgICAgICAgICAgIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbYWxnb3JpdGhtXSA9IHNldCgpCkBAIC02NCwxMCArMTA5LDEwIEBACiAgICAgICAgICMgb2YgaGFzaGxpYi5uZXcgZ2l2ZW4gdGhlIGFsZ29yaXRobSBuYW1lLgogICAgICAgICBmb3IgYWxnb3JpdGhtLCBjb25zdHJ1Y3RvcnMgaW4gc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdC5pdGVtcygpOgogICAgICAgICAgICAgY29uc3RydWN0b3JzLmFkZChnZXRhdHRyKGhhc2hsaWIsIGFsZ29yaXRobSkpCi0gICAgICAgICAgICBkZWYgX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldyhkYXRhPU5vbmUsIF9hbGc9YWxnb3JpdGhtKToKKyAgICAgICAgICAgIGRlZiBfdGVzdF9hbGdvcml0aG1fdmlhX2hhc2hsaWJfbmV3KGRhdGE9Tm9uZSwgX2FsZz1hbGdvcml0aG0sICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNobGliLm5ldyhfYWxnKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXNobGliLm5ldyhfYWxnLCBkYXRhKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hsaWIubmV3KF9hbGcsIGRhdGEsICoqa3dhcmdzKQogICAgICAgICAgICAgY29uc3RydWN0b3JzLmFkZChfdGVzdF9hbGdvcml0aG1fdmlhX2hhc2hsaWJfbmV3KQogCiAgICAgICAgIF9oYXNobGliID0gc2VsZi5fY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZSgnX2hhc2hsaWInKQpAQCAtOTksNiArMTQ0LDE4IEBACiAgICAgICAgIGlmIF9zaGE1MTI6CiAgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhMzg0JykKICAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGE1MTInKQorICAgICAgICBpZiBfYmxha2UyOgorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ2JsYWtlMnMnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ2JsYWtlMmInKQorCisgICAgICAgIF9zaGEzID0gc2VsZi5fY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZSgnX3NoYTMnKQorICAgICAgICBpZiBfc2hhMzoKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzXzIyNCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM18yNTYnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTNfMzg0JykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzXzUxMicpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hha2VfMTI4JykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGFrZV8yNTYnKQogCiAgICAgICAgIHN1cGVyKEhhc2hMaWJUZXN0Q2FzZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQogCkBAIC0xMTEsNyArMTY4LDEwIEBACiAgICAgICAgIGEgPSBhcnJheS5hcnJheSgiYiIsIHJhbmdlKDEwKSkKICAgICAgICAgZm9yIGNvbnMgaW4gc2VsZi5oYXNoX2NvbnN0cnVjdG9yczoKICAgICAgICAgICAgIGMgPSBjb25zKGEpCi0gICAgICAgICAgICBjLmhleGRpZ2VzdCgpCisgICAgICAgICAgICBpZiBjLm5hbWUgaW4gc2VsZi5zaGFrZXM6CisgICAgICAgICAgICAgICAgYy5oZXhkaWdlc3QoMTYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGMuaGV4ZGlnZXN0KCkKIAogICAgIGRlZiB0ZXN0X2FsZ29yaXRobXNfZ3VhcmFudGVlZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNobGliLmFsZ29yaXRobXNfZ3VhcmFudGVlZCwKQEAgLTE1NSwxNCArMjE1LDIxIEBACiAgICAgZGVmIHRlc3RfaGV4ZGlnZXN0KHNlbGYpOgogICAgICAgICBmb3IgY29ucyBpbiBzZWxmLmhhc2hfY29uc3RydWN0b3JzOgogICAgICAgICAgICAgaCA9IGNvbnMoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGlnZXN0KCksIGJ5dGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZXhzdHIoaC5kaWdlc3QoKSksIGguaGV4ZGlnZXN0KCkpCisgICAgICAgICAgICBpZiBoLm5hbWUgaW4gc2VsZi5zaGFrZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGlnZXN0KDE2KSwgYnl0ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZXhzdHIoaC5kaWdlc3QoMTYpKSwgaC5oZXhkaWdlc3QoMTYpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5kaWdlc3QoKSwgYnl0ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZXhzdHIoaC5kaWdlc3QoKSksIGguaGV4ZGlnZXN0KCkpCiAKICAgICBkZWYgdGVzdF9uYW1lX2F0dHJpYnV0ZShzZWxmKToKICAgICAgICAgZm9yIGNvbnMgaW4gc2VsZi5oYXNoX2NvbnN0cnVjdG9yczoKICAgICAgICAgICAgIGggPSBjb25zKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLm5hbWUsIHN0cikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaC5uYW1lLCBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzKQorICAgICAgICAgICAgaWYgaC5uYW1lIGluIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihoLm5hbWUsIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oaC5uYW1lLCBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm5hbWUsIGhhc2hsaWIubmV3KGgubmFtZSkubmFtZSkKIAogICAgIGRlZiB0ZXN0X2xhcmdlX3VwZGF0ZShzZWxmKToKQEAgLTE3Nyw0MCArMjQ0LDQ2IEBACiAgICAgICAgICAgICBtMS51cGRhdGUoYmVlcykKICAgICAgICAgICAgIG0xLnVwZGF0ZShjZWVzKQogICAgICAgICAgICAgbTEudXBkYXRlKGRlZXMpCisgICAgICAgICAgICBpZiBtMS5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIGFyZ3MgPSAoMTYsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzID0gKCkKIAogICAgICAgICAgICAgbTIgPSBjb25zKCkKICAgICAgICAgICAgIG0yLnVwZGF0ZShhYXMgKyBiZWVzICsgY2VlcyArIGRlZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgpLCBtMi5kaWdlc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTIuZGlnZXN0KCphcmdzKSkKIAogICAgICAgICAgICAgbTMgPSBjb25zKGFhcyArIGJlZXMgKyBjZWVzICsgZGVlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCksIG0zLmRpZ2VzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKmFyZ3MpLCBtMy5kaWdlc3QoKmFyZ3MpKQogCiAgICAgICAgICAgICAjIHZlcmlmeSBjb3B5KCkgZG9lc24ndCB0b3VjaCBvcmlnaW5hbAogICAgICAgICAgICAgbTQgPSBjb25zKGFhcyArIGJlZXMgKyBjZWVzKQotICAgICAgICAgICAgbTRfZGlnZXN0ID0gbTQuZGlnZXN0KCkKKyAgICAgICAgICAgIG00X2RpZ2VzdCA9IG00LmRpZ2VzdCgqYXJncykKICAgICAgICAgICAgIG00X2NvcHkgPSBtNC5jb3B5KCkKICAgICAgICAgICAgIG00X2NvcHkudXBkYXRlKGRlZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgpLCBtNF9jb3B5LmRpZ2VzdCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtNC5kaWdlc3QoKSwgbTRfZGlnZXN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKmFyZ3MpLCBtNF9jb3B5LmRpZ2VzdCgqYXJncykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG00LmRpZ2VzdCgqYXJncyksIG00X2RpZ2VzdCkKIAotICAgIGRlZiBjaGVjayhzZWxmLCBuYW1lLCBkYXRhLCBoZXhkaWdlc3QpOgorICAgIGRlZiBjaGVjayhzZWxmLCBuYW1lLCBkYXRhLCBoZXhkaWdlc3QsIHNoYWtlPUZhbHNlLCAqKmt3YXJncyk6CisgICAgICAgIGxlbmd0aCA9IGxlbihoZXhkaWdlc3QpLy8yCiAgICAgICAgIGhleGRpZ2VzdCA9IGhleGRpZ2VzdC5sb3dlcigpCiAgICAgICAgIGNvbnN0cnVjdG9ycyA9IHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbbmFtZV0KICAgICAgICAgIyAyIGlzIGZvciBoYXNobGliLm5hbWUoLi4uKSBhbmQgaGFzaGxpYi5uZXcobmFtZSwgLi4uKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4oY29uc3RydWN0b3JzKSwgMikKICAgICAgICAgZm9yIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yIGluIGNvbnN0cnVjdG9yczoKLSAgICAgICAgICAgIG0gPSBoYXNoX29iamVjdF9jb25zdHJ1Y3RvcihkYXRhKQotICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmhleGRpZ2VzdCgpCisgICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoZGF0YSwgKiprd2FyZ3MpCisgICAgICAgICAgICBjb21wdXRlZCA9IG0uaGV4ZGlnZXN0KCkgaWYgbm90IHNoYWtlIGVsc2UgbS5oZXhkaWdlc3QobGVuZ3RoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQsIGhleGRpZ2VzdCwKICAgICAgICAgICAgICAgICAgICAgIkhhc2ggYWxnb3JpdGhtICVzIGNvbnN0cnVjdGVkIHVzaW5nICVzIHJldHVybmVkIGhleGRpZ2VzdCIKICAgICAgICAgICAgICAgICAgICAgIiAlciBmb3IgJWQgYnl0ZSBpbnB1dCBkYXRhIHRoYXQgc2hvdWxkIGhhdmUgaGFzaGVkIHRvICVyLiIKICAgICAgICAgICAgICAgICAgICAgJSAobmFtZSwgaGFzaF9vYmplY3RfY29uc3RydWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkLCBsZW4oZGF0YSksIGhleGRpZ2VzdCkpCi0gICAgICAgICAgICBjb21wdXRlZCA9IG0uZGlnZXN0KCkKKyAgICAgICAgICAgIGNvbXB1dGVkID0gbS5kaWdlc3QoKSBpZiBub3Qgc2hha2UgZWxzZSBtLmRpZ2VzdChsZW5ndGgpCiAgICAgICAgICAgICBkaWdlc3QgPSBieXRlcy5mcm9taGV4KGhleGRpZ2VzdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHV0ZWQsIGRpZ2VzdCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpZ2VzdCksIG0uZGlnZXN0X3NpemUpCisgICAgICAgICAgICBpZiBub3Qgc2hha2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlnZXN0KSwgbS5kaWdlc3Rfc2l6ZSkKIAogICAgIGRlZiBjaGVja19ub191bmljb2RlKHNlbGYsIGFsZ29yaXRobV9uYW1lKToKICAgICAgICAgIyBVbmljb2RlIG9iamVjdHMgYXJlIG5vdCBhbGxvd2VkIGFzIGlucHV0LgpAQCAtMjI2LDEzICsyOTksMzUgQEAKICAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzODQnKQogICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTUxMicpCiAKLSAgICBkZWYgY2hlY2tfYmxvY2tzaXplX25hbWUoc2VsZiwgbmFtZSwgYmxvY2tfc2l6ZT0wLCBkaWdlc3Rfc2l6ZT0wKToKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3Rfbm9fdW5pY29kZV9ibGFrZTIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnYmxha2UyYicpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnYmxha2UycycpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X25vX3VuaWNvZGVfc2hhMyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzIyNCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM18yNTYnKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTNfMzg0JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzUxMicpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hha2VfMTI4JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGFrZV8yNTYnKQorCisgICAgZGVmIGNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKHNlbGYsIG5hbWUsIGJsb2NrX3NpemU9MCwgZGlnZXN0X3NpemU9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0X2xlbmd0aD1Ob25lKToKICAgICAgICAgY29uc3RydWN0b3JzID0gc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdFtuYW1lXQogICAgICAgICBmb3IgaGFzaF9vYmplY3RfY29uc3RydWN0b3IgaW4gY29uc3RydWN0b3JzOgogICAgICAgICAgICAgbSA9IGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ibG9ja19zaXplLCBibG9ja19zaXplKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmRpZ2VzdF9zaXplLCBkaWdlc3Rfc2l6ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uZGlnZXN0KCkpLCBkaWdlc3Rfc2l6ZSkKKyAgICAgICAgICAgIGlmIGRpZ2VzdF9sZW5ndGg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5kaWdlc3QoZGlnZXN0X2xlbmd0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0X2xlbmd0aCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmhleGRpZ2VzdChkaWdlc3RfbGVuZ3RoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyKmRpZ2VzdF9sZW5ndGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uZGlnZXN0KCkpLCBkaWdlc3Rfc2l6ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmhleGRpZ2VzdCgpKSwgMipkaWdlc3Rfc2l6ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5uYW1lLCBuYW1lKQogICAgICAgICAgICAgIyBzcGxpdCBmb3Igc2hhM181MTIgLyBfc2hhMy5zaGEzIG9iamVjdAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLnNwbGl0KCJfIilbMF0sIHJlcHIobSkpCkBAIC0yNDUsNiArMzQwLDM4IEBACiAgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTM4NCcsIDEyOCwgNDgpCiAgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTUxMicsIDEyOCwgNjQpCiAKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Jsb2Nrc2l6ZV9uYW1lX3NoYTMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfMjI0JywgMTQ0LCAyOCkKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhM18yNTYnLCAxMzYsIDMyKQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzM4NCcsIDEwNCwgNDgpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfNTEyJywgNzIsIDY0KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGFrZV8xMjgnLCAxNjgsIDAsIDMyKQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGFrZV8yNTYnLCAxMzYsIDAsIDY0KQorCisgICAgZGVmIGNoZWNrX3NoYTMoc2VsZiwgbmFtZSwgY2FwYWNpdHksIHJhdGUsIHN1ZmZpeCk6CisgICAgICAgIGNvbnN0cnVjdG9ycyA9IHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbbmFtZV0KKyAgICAgICAgZm9yIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yIGluIGNvbnN0cnVjdG9yczoKKyAgICAgICAgICAgIG0gPSBoYXNoX29iamVjdF9jb25zdHJ1Y3RvcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcGFjaXR5ICsgcmF0ZSwgMTYwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fY2FwYWNpdHlfYml0cywgY2FwYWNpdHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX3JhdGVfYml0cywgcmF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fc3VmZml4LCBzdWZmaXgpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2V4dHJhX3NoYTMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hhM18yMjQnLCA0NDgsIDExNTIsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hhM18yNTYnLCA1MTIsIDEwODgsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hhM18zODQnLCA3NjgsIDgzMiwgYidceDA2JykKKyAgICAgICAgc2VsZi5jaGVja19zaGEzKCdzaGEzXzUxMicsIDEwMjQsIDU3NiwgYidceDA2JykKKyAgICAgICAgc2VsZi5jaGVja19zaGEzKCdzaGFrZV8xMjgnLCAyNTYsIDEzNDQsIGInXHgxZicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hha2VfMjU2JywgNTEyLCAxMDg4LCBiJ1x4MWYnKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2Jsb2Nrc2l6ZV9uYW1lX2JsYWtlMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnYmxha2UyYicsIDEyOCwgNjQpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ2JsYWtlMnMnLCA2NCwgMzIpCisKICAgICBkZWYgdGVzdF9jYXNlX21kNV8wKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrKCdtZDUnLCBiJycsICdkNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZScpCiAKQEAgLTM3Myw2ICs1MDAsMjIxIEBACiAgICAgICAgICAgImU3MTg0ODNkMGNlNzY5NjQ0ZTJlNDJjN2JjMTViNDYzOGUxZjk4YjEzYjIwNDQyODU2MzJhODAzYWZhOTczZWIiKwogICAgICAgICAgICJkZTBmZjI0NDg3N2VhNjBhNGNiMDQzMmNlNTc3YzMxYmViMDA5YzVjMmM0OWFhMmU0ZWFkYjIxN2FkOGNjMDliIikKIAorICAgIGRlZiBjaGVja19ibGFrZTIoc2VsZiwgY29uc3RydWN0b3IsIHNhbHRfc2l6ZSwgcGVyc29uX3NpemUsIGtleV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgZGlnZXN0X3NpemUsIG1heF9vZmZzZXQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnN0cnVjdG9yLlNBTFRfU0laRSwgc2FsdF9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZShzYWx0X3NpemUgKyAxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKHNhbHQ9YidhJyAqIGkpCisgICAgICAgIHNhbHQgPSBiJ2EnICogKHNhbHRfc2l6ZSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBzYWx0PXNhbHQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5QRVJTT05fU0laRSwgcGVyc29uX3NpemUpCisgICAgICAgIGZvciBpIGluIHJhbmdlKHBlcnNvbl9zaXplKzEpOgorICAgICAgICAgICAgY29uc3RydWN0b3IocGVyc29uPWInYScgKiBpKQorICAgICAgICBwZXJzb24gPSBiJ2EnICogKHBlcnNvbl9zaXplICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIHBlcnNvbj1wZXJzb24pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5NQVhfRElHRVNUX1NJWkUsIGRpZ2VzdF9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBkaWdlc3Rfc2l6ZSArIDEpOgorICAgICAgICAgICAgY29uc3RydWN0b3IoZGlnZXN0X3NpemU9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRpZ2VzdF9zaXplPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZGlnZXN0X3NpemU9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRpZ2VzdF9zaXplPWRpZ2VzdF9zaXplKzEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5NQVhfS0VZX1NJWkUsIGtleV9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZShrZXlfc2l6ZSsxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGtleT1iJ2EnICogaSkKKyAgICAgICAga2V5ID0gYidhJyAqIChrZXlfc2l6ZSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBrZXk9a2V5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnN0cnVjdG9yKCkuaGV4ZGlnZXN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3Ioa2V5PWInJykuaGV4ZGlnZXN0KCkpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGZhbm91dD1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZmFub3V0PS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZmFub3V0PTI1NikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAyNTYpOgorICAgICAgICAgICAgY29uc3RydWN0b3IoZGVwdGg9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRlcHRoPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZGVwdGg9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRlcHRoPTI1NikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAyNTYpOgorICAgICAgICAgICAgY29uc3RydWN0b3Iobm9kZV9kZXB0aD1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwgbm9kZV9kZXB0aD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIG5vZGVfZGVwdGg9MjU2KQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGRpZ2VzdF9zaXplICsgMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3Rvcihpbm5lcl9zaXplPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBpbm5lcl9zaXplPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgaW5uZXJfc2l6ZT1kaWdlc3Rfc2l6ZSsxKQorCisgICAgICAgIGNvbnN0cnVjdG9yKGxlYWZfc2l6ZT0wKQorICAgICAgICBjb25zdHJ1Y3RvcihsZWFmX3NpemU9KDE8PDMyKS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjb25zdHJ1Y3RvciwgbGVhZl9zaXplPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjb25zdHJ1Y3RvciwgbGVhZl9zaXplPTE8PDMyKQorCisgICAgICAgIGNvbnN0cnVjdG9yKG5vZGVfb2Zmc2V0PTApCisgICAgICAgIGNvbnN0cnVjdG9yKG5vZGVfb2Zmc2V0PW1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX29mZnNldD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIG5vZGVfb2Zmc2V0PW1heF9vZmZzZXQrMSkKKworICAgICAgICBjb25zdHJ1Y3RvcigKKyAgICAgICAgICAgIHN0cmluZz1iJycsCisgICAgICAgICAgICBrZXk9YicnLAorICAgICAgICAgICAgc2FsdD1iJycsCisgICAgICAgICAgICBwZXJzb249YicnLAorICAgICAgICAgICAgZGlnZXN0X3NpemU9MTcsCisgICAgICAgICAgICBmYW5vdXQ9MSwKKyAgICAgICAgICAgIGRlcHRoPTEsCisgICAgICAgICAgICBsZWFmX3NpemU9MjU2LAorICAgICAgICAgICAgbm9kZV9vZmZzZXQ9NTEyLAorICAgICAgICAgICAgbm9kZV9kZXB0aD0xLAorICAgICAgICAgICAgaW5uZXJfc2l6ZT03LAorICAgICAgICAgICAgbGFzdF9ub2RlPVRydWUKKyAgICAgICAgKQorCisgICAgZGVmIGJsYWtlMl9yZmM3NjkzKHNlbGYsIGNvbnN0cnVjdG9yLCBtZF9sZW4sIGluX2xlbik6CisgICAgICAgIGRlZiBzZWxmdGVzdF9zZXEobGVuZ3RoLCBzZWVkKToKKyAgICAgICAgICAgIG1hc2sgPSAoMTw8MzIpLTEKKyAgICAgICAgICAgIGEgPSAoMHhERUFENEJBRCAqIHNlZWQpICYgbWFzaworICAgICAgICAgICAgYiA9IDEKKyAgICAgICAgICAgIG91dCA9IGJ5dGVhcnJheShsZW5ndGgpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW5ndGgpOgorICAgICAgICAgICAgICAgIHQgPSAoYSArIGIpICYgbWFzaworICAgICAgICAgICAgICAgIGEsIGIgPSBiLCB0CisgICAgICAgICAgICAgICAgb3V0W2ldID0gKHQgPj4gMjQpICYgMHhGRgorICAgICAgICAgICAgcmV0dXJuIG91dAorICAgICAgICBvdXRlciA9IGNvbnN0cnVjdG9yKGRpZ2VzdF9zaXplPTMyKQorICAgICAgICBmb3Igb3V0bGVuIGluIG1kX2xlbjoKKyAgICAgICAgICAgIGZvciBpbmxlbiBpbiBpbl9sZW46CisgICAgICAgICAgICAgICAgaW5kYXRhID0gc2VsZnRlc3Rfc2VxKGlubGVuLCBpbmxlbikKKyAgICAgICAgICAgICAgICBrZXkgPSBzZWxmdGVzdF9zZXEob3V0bGVuLCBvdXRsZW4pCisgICAgICAgICAgICAgICAgdW5rZXllZCA9IGNvbnN0cnVjdG9yKGluZGF0YSwgZGlnZXN0X3NpemU9b3V0bGVuKQorICAgICAgICAgICAgICAgIG91dGVyLnVwZGF0ZSh1bmtleWVkLmRpZ2VzdCgpKQorICAgICAgICAgICAgICAgIGtleWVkID0gY29uc3RydWN0b3IoaW5kYXRhLCBrZXk9a2V5LCBkaWdlc3Rfc2l6ZT1vdXRsZW4pCisgICAgICAgICAgICAgICAgb3V0ZXIudXBkYXRlKGtleWVkLmRpZ2VzdCgpKQorICAgICAgICByZXR1cm4gb3V0ZXIuaGV4ZGlnZXN0KCkKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ibGFrZTJiKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2JsYWtlMihoYXNobGliLmJsYWtlMmIsIDE2LCAxNiwgNjQsIDY0LCAoMTw8NjQpLTEpCisgICAgICAgIGIyYl9tZF9sZW4gPSBbMjAsIDMyLCA0OCwgNjRdCisgICAgICAgIGIyYl9pbl9sZW4gPSBbMCwgMywgMTI4LCAxMjksIDI1NSwgMTAyNF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuYmxha2UyX3JmYzc2OTMoaGFzaGxpYi5ibGFrZTJiLCBiMmJfbWRfbGVuLCBiMmJfaW5fbGVuKSwKKyAgICAgICAgICAgICJjMjNhNzgwMGQ5ODEyM2JkMTBmNTA2YzYxZTI5ZGE1NjAzZDc2M2I4YmJhZDJlNzM3ZjVlNzY1YTdiY2NkNDc1IikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMmJfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIGIiIiwKKyAgICAgICAgICAiNzg2YTAyZjc0MjAxNTkwM2M2YzZmZDg1MjU1MmQyNzI5MTJmNDc0MGUxNTg0NzYxOGE4NmUyMTdmNzFmNTQxOSIrCisgICAgICAgICAgImQyNWUxMDMxYWZlZTU4NTMxMzg5NjQ0NDkzNGViMDRiOTAzYTY4NWIxNDQ4Yjc1NWQ1NmY3MDFhZmU5YmUyY2UiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2Nhc2VfYmxha2UyYl8xKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdibGFrZTJiJywgYiJhYmMiLAorICAgICAgICAgICJiYTgwYTUzZjk4MWM0ZDBkNmEyNzk3YjY5ZjEyZjZlOTRjMjEyZjE0Njg1YWM0Yjc0YjEyYmI2ZmRiZmZhMmQxIisKKyAgICAgICAgICAiN2Q4N2M1MzkyYWFiNzkyZGMyNTJkNWRlNDUzM2NjOTUxOGQzOGFhOGRiZjE5MjVhYjkyMzg2ZWRkNDAwOTkyMyIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UyYl92ZWN0b3JzKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBrZXksIG1kIGluIHJlYWRfdmVjdG9ycygnYmxha2UyYicpOgorICAgICAgICAgICAga2V5ID0gYnl0ZXMuZnJvbWhleChrZXkpCisgICAgICAgICAgICBzZWxmLmNoZWNrKCdibGFrZTJiJywgbXNnLCBtZCwga2V5PWtleSkKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ibGFrZTJzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2JsYWtlMihoYXNobGliLmJsYWtlMnMsIDgsIDgsIDMyLCAzMiwgKDE8PDQ4KS0xKQorICAgICAgICBiMnNfbWRfbGVuID0gWzE2LCAyMCwgMjgsIDMyXQorICAgICAgICBiMnNfaW5fbGVuID0gWzAsIDMsIDY0LCA2NSwgMjU1LCAxMDI0XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5ibGFrZTJfcmZjNzY5MyhoYXNobGliLmJsYWtlMnMsIGIyc19tZF9sZW4sIGIyc19pbl9sZW4pLAorICAgICAgICAgICAgIjZhNDExZjA4Y2UyNWFkY2RmYjAyYWJhNjQxNDUxY2VjNTNjNTk4YjI0ZjRmYzc4N2ZiZGM4ODc5N2Y0YzFkZmUiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2Nhc2VfYmxha2Uyc18wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdibGFrZTJzJywgYiIiLAorICAgICAgICAgICI2OTIxN2EzMDc5OTA4MDk0ZTExMTIxZDA0MjM1NGE3YzFmNTViNjQ4MmNhMWE1MWUxYjI1MGRmZDFlZDBlZWY5IikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMnNfMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIGIiYWJjIiwKKyAgICAgICAgICAiNTA4YzVlOGMzMjdjMTRlMmUxYTcyYmEzNGVlYjQ1MmYzNzQ1OGIyMDllZDYzYTI5NGQ5OTliNGM4NjY3NTk4MiIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2Uyc192ZWN0b3JzKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBrZXksIG1kIGluIHJlYWRfdmVjdG9ycygnYmxha2UycycpOgorICAgICAgICAgICAga2V5ID0gYnl0ZXMuZnJvbWhleChrZXkpCisgICAgICAgICAgICBzZWxmLmNoZWNrKCdibGFrZTJzJywgbXNnLCBtZCwga2V5PWtleSkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzIyNF8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzIyNCcsIGIiIiwKKyAgICAgICAgICAiNmI0ZTAzNDIzNjY3ZGJiNzNiNmUxNTQ1NGYwZWIxYWJkNDU5N2Y5YTFiMDc4ZTNmNWI1YTZiYzciKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjI0X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGEzXzIyNCcpOgorICAgICAgICAgICAgc2VsZi5jaGVjaygnc2hhM18yMjQnLCBtc2csIG1kKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjU2XzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjU2JywgYiIiLAorICAgICAgICAgICJhN2ZmYzZmOGJmMWVkNzY2NTFjMTQ3NTZhMDYxZDY2MmY1ODBmZjRkZTQzYjQ5ZmE4MmQ4MGE0YjgwZjg0MzRhIikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzI1Nl92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM18yNTYnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjU2JywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzM4NF8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzM4NCcsIGIiIiwKKyAgICAgICAgICAiMGM2M2E3NWI4NDVlNGY3ZDAxMTA3ZDg1MmU0YzI0ODVjNTFhNTBhYWFhOTRmYzYxOTk1ZTcxYmJlZTk4M2EyYSIrCisgICAgICAgICAgImMzNzEzODMxMjY0YWRiNDdmYjZiZDFlMDU4ZDVmMDA0IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzM4NF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM18zODQnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMzg0JywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzUxMl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzUxMicsIGIiIiwKKyAgICAgICAgICAiYTY5ZjczY2NhMjNhOWFjNWM4YjU2N2RjMTg1YTc1NmU5N2M5ODIxNjRmZTI1ODU5ZTBkMWRjYzE0NzVjODBhNiIrCisgICAgICAgICAgIjE1YjIxMjNhZjFmNWY5NGMxMWUzZTk0MDJjM2FjNTU4ZjUwMDE5OWQ5NWI2ZDNlMzAxNzU4NTg2MjgxZGNkMjYiKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfNTEyX3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGEzXzUxMicpOgorICAgICAgICAgICAgc2VsZi5jaGVjaygnc2hhM181MTInLCBtc2csIG1kKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlXzEyOF8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBiIiIsCisgICAgICAgICAgIjdmOWMyYmE0ZTg4ZjgyN2Q2MTYwNDU1MDc2MDU4NTNlZDczYjgwOTNmNmVmYmM4OGViMWE2ZWFjZmE2NmVmMjYiLAorICAgICAgICAgIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzEyOCcsIGIiIiwgIjdmOWMiLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlMTI4X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGFrZV8xMjgnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzEyOCcsIG1zZywgbWQsIFRydWUpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hha2VfMjU2XzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIGIiIiwKKyAgICAgICAgICAiNDZiOWRkMmIwYmE4OGQxMzIzM2IzZmViNzQzZWViMjQzZmNkNTJlYTYyYjgxYjgyYjUwYzI3NjQ2ZWQ1NzYyZiIsCisgICAgICAgICAgVHJ1ZSkKKyAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMjU2JywgYiIiLCAiNDZiOSIsIFRydWUpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hha2UyNTZfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYWtlXzI1NicpOgorICAgICAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMjU2JywgbXNnLCBtZCwgVHJ1ZSkKKwogICAgIGRlZiB0ZXN0X2dpbChzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGluZ3Mgd29yayBmaW5lIHdpdGggYW4gaW5wdXQgbGFyZ2VyIHRoYW4gdGhlIHNpemUgcmVxdWlyZWQKICAgICAgICAgIyBmb3IgbXVsdGl0aHJlYWRlZCBvcGVyYXRpb24gKHdoaWNoIGlzIGhhcmR3aXJlZCB0byAyMDQ4KS4KQEAgLTQ0Nyw2ICs3ODksMTIgQEAKICAgICAgICAgKGIncGFzc1wwd29yZCcsIGInc2FcMGx0JywgNDA5NiwgMTYpLAogICAgIF0KIAorICAgIHNjcnlwdF90ZXN0X3ZlY3RvcnMgPSBbCisgICAgICAgIChiJycsIGInJywgMTYsIDEsIDEsIHVuaGV4bGlmeSgnNzdkNjU3NjIzODY1N2IyMDNiMTljYTQyYzE4YTA0OTdmMTZiNDg0NGUzMDc0YWU4ZGZkZmZhM2ZlZGUyMTQ0MmZjZDAwNjlkZWQwOTQ4ZjgzMjZhNzUzYTBmYzgxZjE3ZThkM2UwZmIyZTBkMzYyOGNmMzVlMjBjMzhkMTg5MDYnKSksCisgICAgICAgIChiJ3Bhc3N3b3JkJywgYidOYUNsJywgMTAyNCwgOCwgMTYsIHVuaGV4bGlmeSgnZmRiYWJlMWM5ZDM0NzIwMDc4NTZlNzE5MGQwMWU5ZmU3YzZhZDdjYmM4MjM3ODMwZTc3Mzc2NjM0YjM3MzE2MjJlYWYzMGQ5MmUyMmEzODg2ZmYxMDkyNzlkOTgzMGRhYzcyN2FmYjk0YTgzZWU2ZDgzNjBjYmRmYTJjYzA2NDAnKSksCisgICAgICAgIChiJ3BsZWFzZWxldG1laW4nLCBiJ1NvZGl1bUNobG9yaWRlJywgMTYzODQsIDgsIDEsIHVuaGV4bGlmeSgnNzAyM2JkY2IzYWZkNzM0ODQ2MWMwNmNkODFmZDM4ZWJmZGE4ZmJiYTkwNGY4ZTNlYTliNTQzZjY1NDVkYTFmMmQ1NDMyOTU1NjEzZjBmY2Y2MmQ0OTcwNTI0MmE5YWY5ZTYxZTg1ZGMwZDY1MWU0MGRmY2YwMTdiNDU1NzU4ODcnKSksCisgICBdCisKICAgICBwYmtkZjJfcmVzdWx0cyA9IHsKICAgICAgICAgInNoYTEiOiBbCiAgICAgICAgICAgICAjIG9mZmljaWFsIHRlc3QgdmVjdG9ycyBmcm9tIFJGQyA2MDcwCkBAIC01MjYsNSArODc0LDQ1IEBACiAgICAgICAgIHNlbGYuX3Rlc3RfcGJrZGYyX2htYWMoY19oYXNobGliLnBia2RmMl9obWFjKQogCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKGNfaGFzaGxpYiwgJ3NjcnlwdCcpLAorICAgICAgICAgICAgICAgICAgICAgJyAgIHRlc3QgcmVxdWlyZXMgT3BlblNTTCA+IDEuMScpCisgICAgZGVmIHRlc3Rfc2NyeXB0KHNlbGYpOgorICAgICAgICBmb3IgcGFzc3dvcmQsIHNhbHQsIG4sIHIsIHAsIGV4cGVjdGVkIGluIHNlbGYuc2NyeXB0X3Rlc3RfdmVjdG9yczoKKyAgICAgICAgICAgIHJlc3VsdCA9IGhhc2hsaWIuc2NyeXB0KHBhc3N3b3JkLCBzYWx0PXNhbHQsIG49biwgcj1yLCBwPXApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCisKKyAgICAgICAgIyB0aGlzIHZhbHVlcyBzaG91bGQgd29yaworICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xKQorICAgICAgICAjIHBhc3N3b3JkIGFuZCBzYWx0IG11c3QgYmUgYnl0ZXMtbGlrZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdCgncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj04LCBwPTEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PSdzYWx0Jywgbj0yLCByPTgsIHA9MSkKKyAgICAgICAgIyByZXF1aXJlIGtleXdvcmQgYXJncworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIGInc2FsdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCAyLCA4LCAxLCBzYWx0PWInc2FsdCcpCisgICAgICAgIGZvciBuIGluIFstMSwgMCwgMSwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPW4sIHI9OCwgcD0xKQorICAgICAgICBmb3IgciBpbiBbLTEsIDAsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPXIsIHA9MSkKKyAgICAgICAgZm9yIHAgaW4gWy0xLCAwLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj04LCBwPXApCisgICAgICAgIGZvciBtYXhtZW0gaW4gWy0xLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj04LCBwPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bWVtPW1heG1lbSkKKyAgICAgICAgZm9yIGRrbGVuIGluIFstMSwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRrbGVuPWRrbGVuKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5IGIvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQppbmRleCBiN2U4MjU5Li4yZjhjNjQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKQEAgLTEsNiArMSw1IEBACiAiIiJVbml0dGVzdHMgZm9yIGhlYXBxLiIiIgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9obWFjLnB5IGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CmluZGV4IDk4ODI2YjUuLjA2N2UxM2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2htYWMucHkKQEAgLTMsNyArMyw2IEBACiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGRlZiBpZ25vcmVfd2FybmluZyhmdW5jKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQppbmRleCAxMTQyMGIyLi4zMjZlMzQyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IGh0bWwucGFyc2VyCiBpbXBvcnQgcHByaW50CiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGNsYXNzIEV2ZW50Q29sbGVjdG9yKGh0bWwucGFyc2VyLkhUTUxQYXJzZXIpOgpAQCAtNzAyLDcgKzcwMSw3IEBACiAKICAgICBkZWYgdGVzdF9hdHRyX2Z1bmt5X25hbWVzMihzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKAotICAgICAgICAgICAgIjxhICQ+PGIgJD0lPjxjIFw9Lz4iLAorICAgICAgICAgICAgciI8YSAkPjxiICQ9JT48YyBcPS8+IiwKICAgICAgICAgICAgIFsoInN0YXJ0dGFnIiwgImEiLCBbKCIkIiwgTm9uZSldKSwKICAgICAgICAgICAgICAoInN0YXJ0dGFnIiwgImIiLCBbKCIkIiwgIiUiKV0pLAogICAgICAgICAgICAgICgic3RhcnR0YWciLCAiYyIsIFsoIlxcIiwgIi8iKV0pXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CmluZGV4IDQ5YzAxYWUuLjZmZWU0ZGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAKICAgICAgICAgdXJsID0gImh0dHA6Ly9mb28uYmFyLmNvbS8iCiAgICAgICAgIGludGVyYWN0XzI5NjUoYywgdXJsLCAic3BhbT1lZ2dzOyBWZXJzaW9uPTE7IFBvcnQiKQogICAgICAgICBoID0gaW50ZXJhY3RfMjk2NShjLCB1cmwpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoaCwgIlwkUG9ydChbXj1dfCQpIiwKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChoLCByIlwkUG9ydChbXj1dfCQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAicG9ydCB3aXRoIG5vIHZhbHVlIG5vdCByZXR1cm5lZCB3aXRoIG5vIHZhbHVlIikKIAogICAgICAgICBjID0gQ29va2llSmFyKHBvbCkKQEAgLTEzOTYsOSArMTM5Niw5IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInXlwkVmVyc2lvbj0iPzEiPzsnKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGNvb2tpZSwgcidQYXJ0X051bWJlcj0iP1JvY2tldF9MYXVuY2hlcl8wMDAxIj87JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdccypcJFBhdGg9IlwvYWNtZSInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidccypcJFBhdGg9IlwvYWNtZSInKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGNvb2tpZSwgcidDdXN0b21lcj0iP1dJTEVfRV9DT1lPVEUiPzsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xzKlwkUGF0aD0iXC9hY21lIicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1xzKlwkUGF0aD0iXC9hY21lIicpCiAKICAgICAgICAgIwogICAgICAgICAjICAgNy4gIFVzZXIgQWdlbnQgLT4gU2VydmVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKaW5kZXggMTU1YWIwZi4uYzYxM2M1NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQpAQCAtMzQ0LDYgKzM0NCwxMzQgQEAKICAgICAgICAgICAgICAgICAgICAgY29ubi5wdXRoZWFkZXIobmFtZSwgdmFsdWUpCiAKIAorY2xhc3MgVHJhbnNmZXJFbmNvZGluZ1Rlc3QoVGVzdENhc2UpOgorICAgIGV4cGVjdGVkX2JvZHkgPSBiIkl0J3MganVzdCBhIGZsZXNoIHdvdW5kIgorCisgICAgZGVmIHRlc3RfZW5kaGVhZGVyc19jaHVua2VkKHNlbGYpOgorICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnB1dHJlcXVlc3QoJ1BPU1QnLCAnLycpCisgICAgICAgIGNvbm4uZW5kaGVhZGVycyhzZWxmLl9tYWtlX2JvZHkoKSwgZW5jb2RlX2NodW5rZWQ9VHJ1ZSkKKworICAgICAgICBfLCBfLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgYm9keSA9IHNlbGYuX3BhcnNlX2NodW5rZWQoYm9keSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBzZWxmLmV4cGVjdGVkX2JvZHkpCisKKyAgICBkZWYgdGVzdF9leHBsaWNpdF9oZWFkZXJzKHNlbGYpOgorICAgICAgICAjIGV4cGxpY2l0IGNodW5rZWQKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgIyB0aGlzIHNob3VsZG4ndCBhY3R1YWxseSBiZSBhdXRvbWF0aWNhbGx5IGNodW5rLWVuY29kZWQgYmVjYXVzZSB0aGUKKyAgICAgICAgIyBjYWxsaW5nIGNvZGUgaGFzIGV4cGxpY2l0bHkgc3RhdGVkIHRoYXQgaXQncyB0YWtpbmcgY2FyZSBvZiBpdAorICAgICAgICBjb25uLnJlcXVlc3QoCisgICAgICAgICAgICAnUE9TVCcsICcvJywgc2VsZi5fbWFrZV9ib2R5KCksIHsnVHJhbnNmZXItRW5jb2RpbmcnOiAnY2h1bmtlZCd9KQorCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVycy5rZXlzKCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBzZWxmLmV4cGVjdGVkX2JvZHkpCisKKyAgICAgICAgIyBleHBsaWNpdCBjaHVua2VkLCBzdHJpbmcgYm9keQorICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoCisgICAgICAgICAgICAnUE9TVCcsICcvJywgc2VsZi5leHBlY3RlZF9ib2R5LmRlY29kZSgnbGF0aW4tMScpLAorICAgICAgICAgICAgeydUcmFuc2Zlci1FbmNvZGluZyc6ICdjaHVua2VkJ30pCisKKyAgICAgICAgXywgaGVhZGVycywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzLmtleXMoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2NodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKworICAgICAgICAjIFVzZXItc3BlY2lmaWVkIFRFLCBidXQgcmVxdWVzdCgpIGRvZXMgdGhlIGNodW5rIGVuY29kaW5nCisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgIGNvbm4ucmVxdWVzdCgnUE9TVCcsICcvJywKKyAgICAgICAgICAgIGhlYWRlcnM9eydUcmFuc2Zlci1FbmNvZGluZyc6ICdnemlwLCBjaHVua2VkJ30sCisgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1UcnVlLAorICAgICAgICAgICAgYm9keT1zZWxmLl9tYWtlX2JvZHkoKSkKKyAgICAgICAgXywgaGVhZGVycywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnZ3ppcCwgY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fcGFyc2VfY2h1bmtlZChib2R5KSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgZGVmIHRlc3RfcmVxdWVzdChzZWxmKToKKyAgICAgICAgZm9yIGVtcHR5X2xpbmVzIGluIChGYWxzZSwgVHJ1ZSwpOgorICAgICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgICAgICBjb25uLnJlcXVlc3QoCisgICAgICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuX21ha2VfYm9keShlbXB0eV9saW5lcz1lbXB0eV9saW5lcykpCisKKyAgICAgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICAgICAgYm9keSA9IHNlbGYuX3BhcnNlX2NodW5rZWQoYm9keSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisKKyAgICAgICAgICAgICMgQ29udGVudC1MZW5ndGggYW5kIFRyYW5zZmVyLUVuY29kaW5nIFNIT1VMRCBub3QgYmUgc2VudCBpbiB0aGUKKyAgICAgICAgICAgICMgc2FtZSByZXF1ZXN0CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisKKyAgICBkZWYgdGVzdF9lbXB0eV9ib2R5KHNlbGYpOgorICAgICAgICAjIFplcm8tbGVuZ3RoIGl0ZXJhYmxlIHNob3VsZCBiZSB0cmVhdGVkIGxpa2UgYW55IG90aGVyIGl0ZXJhYmxlCisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgIGNvbm4ucmVxdWVzdCgnUE9TVCcsICcvJywgKCkpCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIGIiMFxyXG5cclxuIikKKworICAgIGRlZiBfbWFrZV9ib2R5KHNlbGYsIGVtcHR5X2xpbmVzPUZhbHNlKToKKyAgICAgICAgbGluZXMgPSBzZWxmLmV4cGVjdGVkX2JvZHkuc3BsaXQoYicgJykKKyAgICAgICAgZm9yIGlkeCwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgorICAgICAgICAgICAgIyBmb3IgdGVzdGluZyBoYW5kbGluZyBlbXB0eSBsaW5lcworICAgICAgICAgICAgaWYgZW1wdHlfbGluZXMgYW5kIGlkeCAlIDI6CisgICAgICAgICAgICAgICAgeWllbGQgYicnCisgICAgICAgICAgICBpZiBpZHggPCBsZW4obGluZXMpIC0gMToKKyAgICAgICAgICAgICAgICB5aWVsZCBsaW5lICsgYicgJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICBkZWYgX3BhcnNlX3JlcXVlc3Qoc2VsZiwgZGF0YSk6CisgICAgICAgIGxpbmVzID0gZGF0YS5zcGxpdChiJ1xyXG4nKQorICAgICAgICByZXF1ZXN0ID0gbGluZXNbMF0KKyAgICAgICAgaGVhZGVycyA9IHt9CisgICAgICAgIG4gPSAxCisgICAgICAgIHdoaWxlIG4gPCBsZW4obGluZXMpIGFuZCBsZW4obGluZXNbbl0pID4gMDoKKyAgICAgICAgICAgIGtleSwgdmFsID0gbGluZXNbbl0uc3BsaXQoYic6JykKKyAgICAgICAgICAgIGtleSA9IGtleS5kZWNvZGUoJ2xhdGluLTEnKS5zdHJpcCgpCisgICAgICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWwuZGVjb2RlKCdsYXRpbi0xJykuc3RyaXAoKQorICAgICAgICAgICAgbiArPSAxCisKKyAgICAgICAgcmV0dXJuIHJlcXVlc3QsIGhlYWRlcnMsIGInXHJcbicuam9pbihsaW5lc1tuICsgMTpdKQorCisgICAgZGVmIF9wYXJzZV9jaHVua2VkKHNlbGYsIGRhdGEpOgorICAgICAgICBib2R5ID0gW10KKyAgICAgICAgdHJhaWxlcnMgPSB7fQorICAgICAgICBuID0gMAorICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoYidcclxuJykKKyAgICAgICAgIyBwYXJzZSBib2R5CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBzaXplLCBjaHVuayA9IGxpbmVzW246bisyXQorICAgICAgICAgICAgc2l6ZSA9IGludChzaXplLCAxNikKKworICAgICAgICAgICAgaWYgc2l6ZSA9PSAwOgorICAgICAgICAgICAgICAgIG4gKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgbGVuKGNodW5rKSkKKyAgICAgICAgICAgIGJvZHkuYXBwZW5kKGNodW5rKQorCisgICAgICAgICAgICBuICs9IDIKKyAgICAgICAgICAgICMgd2UgL3Nob3VsZC8gaGl0IHRoZSBlbmQgY2h1bmssIGJ1dCBjaGVjayBhZ2FpbnN0IHRoZSBzaXplIG9mCisgICAgICAgICAgICAjIGxpbmVzIHNvIHdlJ3JlIG5vdCBzdHVjayBpbiBhbiBpbmZpbml0ZSBsb29wIHNob3VsZCB3ZSBnZXQKKyAgICAgICAgICAgICMgbWFsZm9ybWVkIGRhdGEKKyAgICAgICAgICAgIGlmIG4gPiBsZW4obGluZXMpOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKGJvZHkpCisKKwogY2xhc3MgQmFzaWNUZXN0KFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zdGF0dXNfbGluZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBIVFRQIHN0YXR1cyBsaW5lcwpAQCAtNTY0LDcgKzY5Miw5IEBACiAKICAgICBkZWYgdGVzdF9zZW5kX2ZpbGUoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkID0gKGInR0VUIC9mb28gSFRUUC8xLjFcclxuSG9zdDogZXhhbXBsZS5jb21cclxuJwotICAgICAgICAgICAgICAgICAgICBiJ0FjY2VwdC1FbmNvZGluZzogaWRlbnRpdHlcclxuQ29udGVudC1MZW5ndGg6JykKKyAgICAgICAgICAgICAgICAgICAgYidBY2NlcHQtRW5jb2Rpbmc6IGlkZW50aXR5XHJcbicKKyAgICAgICAgICAgICAgICAgICAgYidUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG4nCisgICAgICAgICAgICAgICAgICAgIGInXHJcbicpCiAKICAgICAgICAgd2l0aCBvcGVuKF9fZmlsZV9fLCAncmInKSBhcyBib2R5OgogICAgICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQpAQCAtNTk0LDExICs3MjQsMTEgQEAKICAgICAgICAgICAgIHlpZWxkIE5vbmUKICAgICAgICAgICAgIHlpZWxkICdkYXRhX3R3bycKIAotICAgICAgICBjbGFzcyBVcGRhdGluZ0ZpbGUoKToKKyAgICAgICAgY2xhc3MgVXBkYXRpbmdGaWxlKGlvLlRleHRJT0Jhc2UpOgogICAgICAgICAgICAgbW9kZSA9ICdyJwogICAgICAgICAgICAgZCA9IGRhdGEoKQogICAgICAgICAgICAgZGVmIHJlYWQoc2VsZiwgYmxvY2tzaXplPS0xKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5kLl9fbmV4dF9fKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChzZWxmLmQpCiAKICAgICAgICAgZXhwZWN0ZWQgPSBiJ2RhdGEnCiAKQEAgLTk3MCw2ICsxMTAwLDcgQEAKIAogICAgICAgICB0aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ydW5fc2VydmVyKQogICAgICAgICB0aHJlYWQuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGhyZWFkLmpvaW4sIGZsb2F0KDEpKQogICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCpzZXJ2LmdldHNvY2tuYW1lKCkpCiAgICAgICAgIGNvbm4ucmVxdWVzdCgiQ09OTkVDVCIsICJkdW1teToxMjM0IikKICAgICAgICAgcmVzcG9uc2UgPSBjb25uLmdldHJlc3BvbnNlKCkKQEAgLTk4Myw3ICsxMTE0LDcgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHJlc3BvbnNlLmNsb3NlKCkKICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQotICAgICAgICAgICAgdGhyZWFkLmpvaW4oKQorICAgICAgICB0aHJlYWQuam9pbigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBiInByb3hpZWQgZGF0YVxuIikKIAogY2xhc3MgRXh0ZW5kZWRSZWFkVGVzdChUZXN0Q2FzZSk6CkBAIC0xNTExLDE0ICsxNjQyLDE2IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpOgogICAgICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgICMgU2FtZSB3aXRoIGV4cGxpY2l0IGNoZWNrX2hvc3RuYW1lPVRydWUKLSAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LCBjb250ZXh0PWNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPVRydWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dD1jb250ZXh0LCBjaGVja19ob3N0bmFtZT1UcnVlKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKToKICAgICAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICAjIFdpdGggY2hlY2tfaG9zdG5hbWU9RmFsc2UsIHRoZSBtaXNtYXRjaGluZyBpcyBpZ25vcmVkCiAgICAgICAgIGNvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBGYWxzZQotICAgICAgICBoID0gY2xpZW50LkhUVFBTQ29ubmVjdGlvbignbG9jYWxob3N0Jywgc2VydmVyLnBvcnQsIGNvbnRleHQ9Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWU9RmFsc2UpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dD1jb250ZXh0LCBjaGVja19ob3N0bmFtZT1GYWxzZSkKICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnL25vbmV4aXN0ZW50JykKICAgICAgICAgcmVzcCA9IGguZ2V0cmVzcG9uc2UoKQogICAgICAgICByZXNwLmNsb3NlKCkKQEAgLTE1MzUsOCArMTY2OCw5IEBACiAgICAgICAgIGguY2xvc2UoKQogICAgICAgICAjIFBhc3NpbmcgY2hlY2tfaG9zdG5hbWUgdG8gSFRUUFNDb25uZWN0aW9uIHNob3VsZCBvdmVycmlkZSB0aGUKICAgICAgICAgIyBjb250ZXh0J3Mgc2V0dGluZy4KLSAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LCBjb250ZXh0PWNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPVRydWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dD1jb250ZXh0LCBjaGVja19ob3N0bmFtZT1UcnVlKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKToKICAgICAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy8nKQogCkBAIC0xNTc1LDYgKzE3MDksMjYgQEAKICAgICAgICAgbWVzc2FnZSA9IGNsaWVudC5wYXJzZV9oZWFkZXJzKGYpCiAgICAgICAgIHJldHVybiBtZXNzYWdlLCBmCiAKKyAgICBkZWYgdGVzdF9saXN0X2JvZHkoc2VsZik6CisgICAgICAgICMgTm90ZSB0aGF0IG5vIGNvbnRlbnQtbGVuZ3RoIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZCBmb3IKKyAgICAgICAgIyBhbiBpdGVyYWJsZS4gIFRoZSByZXF1ZXN0IHdpbGwgZmFsbCBiYWNrIHRvIHNlbmQgY2h1bmtlZAorICAgICAgICAjIHRyYW5zZmVyIGVuY29kaW5nLgorICAgICAgICBjYXNlcyA9ICgKKyAgICAgICAgICAgIChbYidmb28nLCBiJ2JhciddLCBiJzNcclxuZm9vXHJcbjNcclxuYmFyXHJcbjBcclxuXHJcbicpLAorICAgICAgICAgICAgKChiJ2ZvbycsIGInYmFyJyksIGInM1xyXG5mb29cclxuM1xyXG5iYXJcclxuMFxyXG5cclxuJyksCisgICAgICAgICkKKyAgICAgICAgZm9yIGJvZHksIGV4cGVjdGVkIGluIGNhc2VzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYm9keSk6CisgICAgICAgICAgICAgICAgc2VsZi5jb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLnNvY2sgPSBzZWxmLnNvY2sgPSBGYWtlU29ja2V0KCcnKQorCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLnJlcXVlc3QoJ1BVVCcsICcvdXJsJywgYm9keSkKKyAgICAgICAgICAgICAgICBtc2csIGYgPSBzZWxmLmdldF9oZWFkZXJzX2FuZF9mcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQ29udGVudC1UeXBlJywgbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0NvbnRlbnQtTGVuZ3RoJywgbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldCgnVHJhbnNmZXItRW5jb2RpbmcnKSwgJ2NodW5rZWQnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGYucmVhZCgpKQorCiAgICAgZGVmIHRlc3RfbWFudWFsX2NvbnRlbnRfbGVuZ3RoKHNlbGYpOgogICAgICAgICAjIFNldCBhbiBpbmNvcnJlY3QgY29udGVudC1sZW5ndGggc28gdGhhdCB3ZSBjYW4gdmVyaWZ5IHRoYXQKICAgICAgICAgIyBpdCB3aWxsIG5vdCBiZSBvdmVyLXJpZGRlbiBieSB0aGUgbGlicmFyeS4KQEAgLTE2MDgsNyArMTc2Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjUiLCBtZXNzYWdlLmdldCgiY29udGVudC1sZW5ndGgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2JvZHlceGMxJywgZi5yZWFkKCkpCiAKLSAgICBkZWYgdGVzdF9maWxlX2JvZHkoc2VsZik6CisgICAgZGVmIHRlc3RfdGV4dF9maWxlX2JvZHkoc2VsZik6CiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgInciKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgiYm9keSIpCkBAIC0xNjE3LDggKzE3NzEsMTEgQEAKICAgICAgICAgICAgIG1lc3NhZ2UsIGYgPSBzZWxmLmdldF9oZWFkZXJzX2FuZF9mcCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXh0L3BsYWluIiwgbWVzc2FnZS5nZXRfY29udGVudF90eXBlKCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtZXNzYWdlLmdldF9jaGFyc2V0KCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCI0IiwgbWVzc2FnZS5nZXQoImNvbnRlbnQtbGVuZ3RoIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInYm9keScsIGYucmVhZCgpKQorICAgICAgICAgICAgIyBObyBjb250ZW50LWxlbmd0aCB3aWxsIGJlIGRldGVybWluZWQgZm9yIGZpbGVzOyB0aGUgYm9keQorICAgICAgICAgICAgIyB3aWxsIGJlIHNlbnQgdXNpbmcgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZyBpbnN0ZWFkLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWVzc2FnZS5nZXQoImNvbnRlbnQtbGVuZ3RoIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJjaHVua2VkIiwgbWVzc2FnZS5nZXQoInRyYW5zZmVyLWVuY29kaW5nIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInNFxyXG5ib2R5XHJcbjBcclxuXHJcbicsIGYucmVhZCgpKQogCiAgICAgZGVmIHRlc3RfYmluYXJ5X2ZpbGVfYm9keShzZWxmKToKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKQEAgLTE2MjksOCArMTc4Niw5IEBACiAgICAgICAgICAgICBtZXNzYWdlLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGV4dC9wbGFpbiIsIG1lc3NhZ2UuZ2V0X2NvbnRlbnRfdHlwZSgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWVzc2FnZS5nZXRfY2hhcnNldCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiNSIsIG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2JvZHlceGMxJywgZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJjaHVua2VkIiwgbWVzc2FnZS5nZXQoIlRyYW5zZmVyLUVuY29kaW5nIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJDb250ZW50LUxlbmd0aCIsIG1lc3NhZ2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInNVxyXG5ib2R5XHhjMVxyXG4wXHJcblxyXG4nLCBmLnJlYWQoKSkKIAogCiBjbGFzcyBIVFRQUmVzcG9uc2VUZXN0KFRlc3RDYXNlKToKQEAgLTE3NDEsMTMgKzE4OTksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdoZWFkZXI6IHt9Jy5mb3JtYXQoZXhwZWN0ZWRfaGVhZGVyKSwgbGluZXMpCiAKIAotQHN1cHBvcnQucmVhcF90aHJlYWRzCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoSGVhZGVyVGVzdHMsIE9mZmxpbmVUZXN0LCBCYXNpY1Rlc3QsIFRpbWVvdXRUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNpc3RlbmNlVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQU1Rlc3QsIFJlcXVlc3RCb2R5VGVzdCwgU291cmNlQWRkcmVzc1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFJlc3BvbnNlVGVzdCwgRXh0ZW5kZWRSZWFkVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlbmRlZFJlYWRUZXN0Q2h1bmtlZCwgVHVubmVsVGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKaW5kZXggNzJlNmUwOC4uNGU5MzE0NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CkBAIC0xOCw2ICsxOCw3IEBACiBpbXBvcnQgaHRtbAogaW1wb3J0IGh0dHAuY2xpZW50CiBpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0aW1lCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAKIGltcG9ydCB1bml0dGVzdApAQCAtMTg5LDcgKzE5MCw3IEBACiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKIAotICAgIGRlZiB0ZXN0X2hlYWRfa2VlcF9hbGl2ZShzZWxmKToKKyAgICBkZWYgdGVzdF9oZWFkZXJfa2VlcF9hbGl2ZShzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICdIVFRQLzEuMScKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5wdXRoZWFkZXIoJ0Nvbm5lY3Rpb24nLCAna2VlcC1hbGl2ZScpCkBAIC0zNjksNiArMzcwLDggQEAKICAgICAgICAgcmV0dXJuIGJvZHkKIAogICAgIEBzdXBwb3J0LnJlcXVpcmVzX21hY192ZXIoMTAsIDUpCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKKyAgICAgICAgICAgICAgICAgICAgICd1bmRlY29kYWJsZSBuYW1lIGNhbm5vdCBiZSBkZWNvZGVkIG9uIHdpbjMyJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LlRFU1RGTl9VTkRFQ09EQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzdXBwb3J0LlRFU1RGTl9VTkRFQ09EQUJMRScpCiAgICAgZGVmIHRlc3RfdW5kZWNvZGFibGVfZmlsZW5hbWUoc2VsZik6CkBAIC0zODgsNyArMzkxLDcgQEAKICAgICAgICAgcXVvdGVkbmFtZSA9IHVybGxpYi5wYXJzZS5xdW90ZShmaWxlbmFtZSwgZXJyb3JzPSdzdXJyb2dhdGVwYXNzJykKICAgICAgICAgc2VsZi5hc3NlcnRJbigoJ2hyZWY9IiVzIicgJSBxdW90ZWRuYW1lKQogICAgICAgICAgICAgICAgICAgICAgIC5lbmNvZGUoZW5jLCAnc3Vycm9nYXRlZXNjYXBlJyksIGJvZHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oKCc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigoJz4lczwnICUgaHRtbC5lc2NhcGUoZmlsZW5hbWUsIHF1b3RlPUZhbHNlKSkKICAgICAgICAgICAgICAgICAgICAgICAuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpLCBib2R5KQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLmJhc2VfdXJsICsgJy8nICsgcXVvdGVkbmFtZSkKICAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSywKQEAgLTQ2Niw2ICs0NjksMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5nZXRoZWFkZXIoIkxvY2F0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZW1wZGlyX25hbWUgKyAiLz9oaT0xIikKIAorICAgIGRlZiB0ZXN0X2h0bWxfZXNjYXBlX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9ICc8dGVzdCY+LnR4dCcKKyAgICAgICAgZnVsbHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCBmaWxlbmFtZSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcGVuKGZ1bGxwYXRoLCAndycpLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnQ2FuIG5vdCBjcmVhdGUgZmlsZSAlcyBvbiBjdXJyZW50IGZpbGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbScgJSBmaWxlbmFtZSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLmJhc2VfdXJsICsgJy8nKQorICAgICAgICAgICAgYm9keSA9IHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0spCisgICAgICAgICAgICBlbmMgPSByZXNwb25zZS5oZWFkZXJzLmdldF9jb250ZW50X2NoYXJzZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rKGZ1bGxwYXRoKSAgIyBhdm9pZCBhZmZlY3RpbmcgdGVzdF91bmRlY29kYWJsZV9maWxlbmFtZQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGVuYykKKyAgICAgICAgaHRtbF90ZXh0ID0gJz4lczwnICUgaHRtbC5lc2NhcGUoZmlsZW5hbWUsIHF1b3RlPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEluKGh0bWxfdGV4dC5lbmNvZGUoZW5jKSwgYm9keSkKKwogCiBjZ2lfZmlsZTEgPSAiIiJcCiAjISVzCkBAIC05MTYsNyArOTQwLDcgQEAKICAgICAgICAgIyBJc3N1ZSAjNjc5MTogc2FtZSBmb3IgaGVhZGVycwogICAgICAgICByZXN1bHQgPSBzZWxmLnNlbmRfdHlwaWNhbF9yZXF1ZXN0KAogICAgICAgICAgICAgYidHRVQgLyBIVFRQLzEuMVxyXG5YLUZvbzogYmFyJyArIGIncicgKiA2NTUzNyArIGInXHJcblxyXG4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFswXSwgYidIVFRQLzEuMSA0MDAgTGluZSB0b28gbG9uZ1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFswXSwgYidIVFRQLzEuMSA0MzEgTGluZSB0b28gbG9uZ1xyXG4nKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaGFuZGxlci5nZXRfY2FsbGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaGFuZGxlci5yZXF1ZXN0bGluZSwgJ0dFVCAvIEhUVFAvMS4xJykKIApAQCAtOTI3LDYgKzk1MSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaGFuZGxlci5nZXRfY2FsbGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaGFuZGxlci5yZXF1ZXN0bGluZSwgJ0dFVCAvIEhUVFAvMS4xJykKIAorICAgIGRlZiB0ZXN0X2h0bWxfZXNjYXBlX29uX2Vycm9yKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBzZWxmLnNlbmRfdHlwaWNhbF9yZXF1ZXN0KAorICAgICAgICAgICAgYic8c2NyaXB0PmFsZXJ0KCJoZWxsbyIpPC9zY3JpcHQ+IC8gSFRUUC8xLjEnKQorICAgICAgICByZXN1bHQgPSBiJycuam9pbihyZXN1bHQpCisgICAgICAgIHRleHQgPSAnPHNjcmlwdD5hbGVydCgiaGVsbG8iKTwvc2NyaXB0PicKKyAgICAgICAgc2VsZi5hc3NlcnRJbihodG1sLmVzY2FwZSh0ZXh0LCBxdW90ZT1GYWxzZSkuZW5jb2RlKCdhc2NpaScpLCByZXN1bHQpCisKICAgICBkZWYgdGVzdF9jbG9zZV9jb25uZWN0aW9uKHNlbGYpOgogICAgICAgICAjIGhhbmRsZV9vbmVfcmVxdWVzdCgpIHNob3VsZCBiZSByZXBlYXRlZGx5IGNhbGxlZCB1bnRpbAogICAgICAgICAjIGl0IHNldHMgY2xvc2VfY29ubmVjdGlvbgpAQCAtOTQyLDYgKzk3MywxOSBAQAogICAgICAgICBzZWxmLmhhbmRsZXIuaGFuZGxlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgY2xvc2VfdmFsdWVzKQogCisgICAgZGVmIHRlc3RfZGF0ZV90aW1lX3N0cmluZyhzZWxmKToKKyAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgIyB0aGlzIGlzIHRoZSBvbGQgY29kZSB0aGF0IGZvcm1hdHMgdGhlIHRpbWVzdGFtcAorICAgICAgICB5ZWFyLCBtb250aCwgZGF5LCBoaCwgbW0sIHNzLCB3ZCwgeSwgeiA9IHRpbWUuZ210aW1lKG5vdykKKyAgICAgICAgZXhwZWN0ZWQgPSAiJXMsICUwMmQgJTNzICU0ZCAlMDJkOiUwMmQ6JTAyZCBHTVQiICUgKAorICAgICAgICAgICAgc2VsZi5oYW5kbGVyLndlZWtkYXluYW1lW3dkXSwKKyAgICAgICAgICAgIGRheSwKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlci5tb250aG5hbWVbbW9udGhdLAorICAgICAgICAgICAgeWVhciwgaGgsIG1tLCBzcworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5oYW5kbGVyLmRhdGVfdGltZV9zdHJpbmcodGltZXN0YW1wPW5vdyksIGV4cGVjdGVkKQorCisKIGNsYXNzIFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiIgVGVzdCB1cmwgcGFyc2luZyAiIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lkbGUucHkgYi9MaWIvdGVzdC90ZXN0X2lkbGUucHkKaW5kZXggMTQxZTg5ZS4uZGEwNWRhNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pZGxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaWRsZS5weQpAQCAtMSwxNiArMSwyMyBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfbW9kdWxlCiAKLSMgU2tpcCB0ZXN0IGlmIF90aHJlYWQgb3IgX3RraW50ZXIgd2Fzbid0IGJ1aWx0IG9yIGlkbGVsaWIgd2FzIGRlbGV0ZWQuCisjIFNraXAgdGVzdCBpZiBfdGhyZWFkIG9yIF90a2ludGVyIHdhc24ndCBidWlsdCwgaWYgaWRsZWxpYiBpcyBtaXNzaW5nLAorIyBvciBpZiB0Y2wvdGsgaXMgbm90IHRoZSA4LjUrIG5lZWRlZCBmb3IgdHRrIHdpZGdldHMuCiBpbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKSAgIyBpbXBvcnRlZCBieSBQeVNoZWxsLCBpbXBvcnRzIF90aHJlYWQKIHRrID0gaW1wb3J0X21vZHVsZSgndGtpbnRlcicpICAjIGltcG9ydHMgX3RraW50ZXIKLWlkbGV0ZXN0ID0gaW1wb3J0X21vZHVsZSgnaWRsZWxpYi5pZGxlX3Rlc3QnKQoraWYgdGsuVGtWZXJzaW9uIDwgOC41OgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJJRExFIHJlcXVpcmVzIHRrIDguNSBvciBsYXRlci4iKQoraWRsZWxpYiA9IGltcG9ydF9tb2R1bGUoJ2lkbGVsaWInKQogCi0jIFdpdGhvdXQgdGVzdF9tYWluIHByZXNlbnQsIHJlZ3J0ZXN0LnJ1bnRlc3RfaW5uZXIgKGxpbmUxMjE5KSBjYWxscwotIyB1bml0dGVzdC5UZXN0TG9hZGVyKCkubG9hZFRlc3RzRnJvbU1vZHVsZSh0aGlzX21vZHVsZSkgd2hpY2ggY2FsbHMKLSMgbG9hZF90ZXN0cygpIGlmIGl0IGZpbmRzIGl0LiAoVW5pdHRlc3QubWFpbiBkb2VzIHRoZSBzYW1lLikKLWxvYWRfdGVzdHMgPSBpZGxldGVzdC5sb2FkX3Rlc3RzCisjIEJlZm9yZSB0ZXN0IGltcG9ydHMsIHRlbGwgSURMRSB0byBhdm9pZCBjaGFuZ2luZyB0aGUgZW52aXJvbm1lbnQuCitpZGxlbGliLnRlc3RpbmcgPSBUcnVlCisKKyMgdW5pdHRlc3QubWFpbiBhbmQgdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0LnJ1bnRlc3RfaW5uZXIKKyMgY2FsbCBsb2FkX3Rlc3RzLCB3aGVuIHByZXNlbnQsIHRvIGRpc2NvdmVyIHRlc3RzIHRvIHJ1bi4KK2Zyb20gaWRsZWxpYi5pZGxlX3Rlc3QgaW1wb3J0IGxvYWRfdGVzdHMKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorICAgIHRrLk5vRGVmYXVsdFJvb3QoKQorICAgIHVuaXR0ZXN0Lm1haW4oZXhpdD1GYWxzZSkKKyAgICB0ay5fc3VwcG9ydF9kZWZhdWx0X3Jvb3QgPSAxCisgICAgdGsuX2RlZmF1bHRfcm9vdCA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQppbmRleCAwNzE1N2Y1Li42M2FjODEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CkBAIC03Nyw5ICs3Nyw5IEBACiAKICAgICAgICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgogICAgICAgICAgICAgbmV3c29ja2V0LCBmcm9tYWRkciA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCi0gICAgICAgICAgICBjb25uc3RyZWFtID0gc3NsLndyYXBfc29ja2V0KG5ld3NvY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBjb25uc3RyZWFtID0gY29udGV4dC53cmFwX3NvY2tldChuZXdzb2NrZXQsIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgICAgICByZXR1cm4gY29ubnN0cmVhbSwgZnJvbWFkZHIKIAogICAgIElNQVA0X1NTTCA9IGltYXBsaWIuSU1BUDRfU1NMCkBAIC0yNDMsNiArMjQzLDU1IEBACiAgICAgICAgICAgICBjbGllbnQuc2h1dGRvd24oKQogCiAgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X2JyYWNrZXRfZmxhZ3Moc2VsZik6CisKKyAgICAgICAgIyBUaGlzIHZpb2xhdGVzIFJGQyAzNTAxLCB3aGljaCBkaXNhbGxvd3MgJ10nIGNoYXJhY3RlcnMgaW4gdGFnIG5hbWVzLAorICAgICAgICAjIGJ1dCBpbWFwbGliIGhhcyBhbGxvd2VkIHByb2R1Y2luZyBzdWNoIHRhZ3MgZm9yZXZlciwgb3RoZXIgcHJvZ3JhbXMKKyAgICAgICAgIyBhbHNvIHByb2R1Y2UgdGhlbSAoZWc6IE90aGVySW5ib3gncyBPcmdhbml6ZXIgYXBwIGFzIG9mIDIwMTQwNzE2KSwKKyAgICAgICAgIyBhbmQgR21haWwsIGZvciBleGFtcGxlLCBhY2NlcHRzIHRoZW0gYW5kIHByb2R1Y2VzIHRoZW0uICBTbyB3ZQorICAgICAgICAjIHN1cHBvcnQgdGhlbS4gIFNlZSBpc3N1ZSAjMjE4MTUuCisKKyAgICAgICAgY2xhc3MgQnJhY2tldEZsYWdIYW5kbGVyKFNpbXBsZUlNQVBIYW5kbGVyKToKKworICAgICAgICAgICAgZGVmIGhhbmRsZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzID0gWydBbnN3ZXJlZCcsICdGbGFnZ2VkJywgJ0RlbGV0ZWQnLCAnU2VlbicsICdEcmFmdCddCisgICAgICAgICAgICAgICAgc3VwZXIoKS5oYW5kbGUoKQorCisgICAgICAgICAgICBkZWYgY21kX0FVVEhFTlRJQ0FURShzZWxmLCB0YWcsIGFyZ3MpOgorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGV4dGxpbmUoJysnKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlc3BvbnNlID0geWllbGQKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdGQUtFQVVUSCBzdWNjZXNzZnVsJykKKworICAgICAgICAgICAgZGVmIGNtZF9TRUxFQ1Qoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgICAgICBmbGFnX21zZyA9ICcgXFwnLmpvaW4oc2VsZi5mbGFncykKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUoKCcqIEZMQUdTICglcyknICUgZmxhZ19tc2cpLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUoYicqIDIgRVhJU1RTJykKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUoYicqIDAgUkVDRU5UJykKKyAgICAgICAgICAgICAgICBtc2cgPSAoJyogT0sgW1BFUk1BTkVOVEZMQUdTICVzIFxcKildIEZsYWdzIHBlcm1pdHRlZC4nCisgICAgICAgICAgICAgICAgICAgICAgICAlIGZsYWdfbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbGluZShtc2cuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ1tSRUFELVdSSVRFXSBTRUxFQ1QgY29tcGxldGVkLicpCisKKyAgICAgICAgICAgIGRlZiBjbWRfU1RPUkUoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgICAgICBuZXdfZmxhZ3MgPSBhcmdzWzJdLnN0cmlwKCcoJykuc3RyaXAoJyknKS5zcGxpdCgpCisgICAgICAgICAgICAgICAgc2VsZi5mbGFncy5leHRlbmQobmV3X2ZsYWdzKQorICAgICAgICAgICAgICAgIGZsYWdzX21zZyA9ICcoRkxBR1MgKCVzKSknICUgJyBcXCcuam9pbihzZWxmLmZsYWdzKQorICAgICAgICAgICAgICAgIG1zZyA9ICcqICVzIEZFVENIICVzJyAlIChhcmdzWzBdLCBmbGFnc19tc2cpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKG1zZy5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnU1RPUkUgY29tcGxldGVkLicpCisKKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKEJyYWNrZXRGbGFnSGFuZGxlcikgYXMgKHNlcnZlciwgY2xpZW50KToKKyAgICAgICAgICAgIGNvZGUsIGRhdGEgPSBjbGllbnQuYXV0aGVudGljYXRlKCdNWUFVVEgnLCBsYW1iZGEgeDogYidmYWtlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZSwgJ09LJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnJlc3BvbnNlLCBiJ1ptRnJaUT09XHJcbicpCisgICAgICAgICAgICBjbGllbnQuc2VsZWN0KCd0ZXN0JykKKyAgICAgICAgICAgIHR5cCwgW2RhdGFdID0gY2xpZW50LnN0b3JlKGInMScsICIrRkxBR1MiLCAiW3Rlc3RdIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidbdGVzdF0nLCBkYXRhKQorICAgICAgICAgICAgY2xpZW50LnNlbGVjdCgndGVzdCcpCisgICAgICAgICAgICB0eXAsIFtkYXRhXSA9IGNsaWVudC5yZXNwb25zZSgnUEVSTUFORU5URkxBR1MnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1t0ZXN0XScsIGRhdGEpCisKKyAgICBAcmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3RfaXNzdWU1OTQ5KHNlbGYpOgogCiAgICAgICAgIGNsYXNzIEVPRkhhbmRsZXIoc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKToKQEAgLTU4OSw4ICs2MzgsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9jZXJ0ZmlsZShzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKLSAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQsIGNlcnRmaWxlPUNFUlRGSUxFKQotICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQogCiAgICAgZGVmIHRlc3RfbG9naW5jYXBhX3dpdGhfY2xpZW50X3NzbF9jb250ZXh0KHNlbGYpOgogICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkgYi9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQppbmRleCBiNTRkYWY4Li40NzZiYTk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBpbWdoZHIKIGltcG9ydCBpbwogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgVEVTVEZOLCB1bmxpbmsKQEAgLTQ5LDYgKzUwLDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltZ2hkci53aGF0KE5vbmUsIGRhdGEpLCBleHBlY3RlZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1naGRyLndoYXQoTm9uZSwgYnl0ZWFycmF5KGRhdGEpKSwgZXhwZWN0ZWQpCiAKKyAgICBkZWYgdGVzdF9wYXRobGlrZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZm9yIGZpbGVuYW1lLCBleHBlY3RlZCBpbiBURVNUX0ZJTEVTOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZmlsZW5hbWU9ZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmluZGZpbGUoZmlsZW5hbWUsIHN1YmRpcj0naW1naGRyZGF0YScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbWdoZHIud2hhdChwYXRobGliLlBhdGgoZmlsZW5hbWUpKSwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9yZWdpc3Rlcl90ZXN0KHNlbGYpOgogICAgICAgICBkZWYgdGVzdF9qdW1ibyhoLCBmaWxlKToKICAgICAgICAgICAgIGlmIGguc3RhcnRzd2l0aChiJ2VnZ3MnKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKaW5kZXggZWU5ZWUxYS4uNGVjZTM2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKQEAgLTYsMTMgKzYsMTIgQEAKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAotaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwogd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICBpbXBvcnQgaW1wCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQppbmRleCAxZTMzMjc0Li43NjA5MDhlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQpAQCAtNjksNiArNjksMTggQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubG9hZChURVNURk4pCiAKKyAgICBkZWYgdGVzdF9pbXBvcnRfcmFpc2VzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgc29tZXRoaW5nX3RoYXRfc2hvdWxkX25vdF9leGlzdF9hbnl3aGVyZQorCisgICAgZGVmIHRlc3RfZnJvbV9pbXBvcnRfbWlzc2luZ19tb2R1bGVfcmFpc2VzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICBmcm9tIHNvbWV0aGluZ190aGF0X3Nob3VsZF9ub3RfZXhpc3RfYW55d2hlcmUgaW1wb3J0IGJsYWgKKworICAgIGRlZiB0ZXN0X2Zyb21faW1wb3J0X21pc3NpbmdfYXR0cl9yYWlzZXNfSW1wb3J0RXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHNvbWV0aGluZ190aGF0X3Nob3VsZF9ub3RfZXhpc3RfYW55d2hlcmUKKwogICAgIGRlZiB0ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkoc2VsZik6CiAgICAgICAgICMgQnJpZWYgZGlncmVzc2lvbiB0byB0ZXN0IHRoYXQgaW1wb3J0IGlzIGNhc2Utc2Vuc2l0aXZlOiAgaWYgd2UgZ290CiAgICAgICAgICMgdGhpcyBmYXIsIHdlIGtub3cgZm9yIHN1cmUgdGhhdCAicmFuZG9tIiBleGlzdHMuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCBjMTEyY2E3Li4wZGQ5Yzg2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcF9leHRlcm5hbAotaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtOSw4ICs4LDYgQEAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIAotIyBYWFggZmluZF9zcGVjIHRlc3RzCi0KIEB1bml0dGVzdC5za2lwSWYodXRpbC5FWFRFTlNJT05TLmZpbGVuYW1lIGlzIE5vbmUsICdfdGVzdGNhcGkgbm90IGF2YWlsYWJsZScpCiBAdXRpbC5jYXNlX2luc2Vuc2l0aXZlX3Rlc3RzCiBjbGFzcyBFeHRlbnNpb25Nb2R1bGVDYXNlU2Vuc2l0aXZpdHlUZXN0KHV0aWwuQ0FTRU9LVGVzdEJhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CmluZGV4IDcxYmY2N2YuLmM5YjRhMzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKQEAgLTYsNyArNiw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwogCi0jIFhYWCBmaW5kX3NwZWMgdGVzdHMKIAogY2xhc3MgRmluZGVyVGVzdHMoYWJjLkZpbmRlclRlc3RzKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CmluZGV4IDhmNGI4YmIuLmE0YjVhNjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKQEAgLTIsOCArMiw2IEBACiAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CmluZGV4IDYwM2M3ZDcuLjI5ZWNmZjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKQEAgLTMsOCArMyw2IEBACiAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKLQotaW1wb3J0IHN5cwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQppbmRleCBjN2QzYTJhLi43ZjY0NTQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CkBAIC01LDYgKzUsNyBAQAogCiAiIiIKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIC4uIGltcG9ydCB1dGlsCiAKIApAQCAtMzMsMzEgKzM0LDUwIEBACiAKICAgICAiIiIKIAotICAgIGRlZiB0ZXN0X3VzaW5nX19fcGFja2FnZV9fKHNlbGYpOgotICAgICAgICAjIFtfX3BhY2thZ2VfX10KKyAgICBkZWYgaW1wb3J0X21vZHVsZShzZWxmLCBnbG9iYWxzXyk6CiAgICAgICAgIHdpdGggc2VsZi5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuZmFrZScpIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdwa2cuZmFrZScpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fX2ltcG9ydF9fKCcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPXsnX19wYWNrYWdlX18nOiAncGtnLmZha2UnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3Q9WydhdHRyJ10sIGxldmVsPTIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFsc18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0PVsnYXR0ciddLCBsZXZlbD0yKQorICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICBkZWYgdGVzdF91c2luZ19fX3BhY2thZ2VfXyhzZWxmKToKKyAgICAgICAgIyBbX19wYWNrYWdlX19dCisgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJ30pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKIAotICAgIGRlZiB0ZXN0X3VzaW5nX19fbmFtZV9fKHNlbGYsIHBhY2thZ2VfYXNfTm9uZT1GYWxzZSk6CisgICAgZGVmIHRlc3RfdXNpbmdfX19uYW1lX18oc2VsZik6CiAgICAgICAgICMgW19fbmFtZV9fXQotICAgICAgICBnbG9iYWxzXyA9IHsnX19uYW1lX18nOiAncGtnLmZha2UnLCAnX19wYXRoX18nOiBbXX0KLSAgICAgICAgaWYgcGFja2FnZV9hc19Ob25lOgotICAgICAgICAgICAgZ2xvYmFsc19bJ19fcGFja2FnZV9fJ10gPSBOb25lCi0gICAgICAgIHdpdGggc2VsZi5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuZmFrZScpIGFzIGltcG9ydGVyOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdwa2cuZmFrZScpCi0gICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fX2ltcG9ydF9fKCcnLCBnbG9iYWxzPSBnbG9iYWxzXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0PVsnYXR0ciddLCBsZXZlbD0yKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX25hbWVfXyc6ICdwa2cuZmFrZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXyc6IFtdfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfd2Fybl93aGVuX3VzaW5nX19fbmFtZV9fKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoSW1wb3J0V2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmltcG9ydF9tb2R1bGUoeydfX25hbWVfXyc6ICdwa2cuZmFrZScsICdfX3BhdGhfXyc6IFtdfSkKIAogICAgIGRlZiB0ZXN0X05vbmVfYXNfX19wYWNrYWdlX18oc2VsZik6CiAgICAgICAgICMgW05vbmVdCi0gICAgICAgIHNlbGYudGVzdF91c2luZ19fX25hbWVfXyhwYWNrYWdlX2FzX05vbmU9VHJ1ZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbXBvcnRfbW9kdWxlKHsKKyAgICAgICAgICAgICAgICAnX19uYW1lX18nOiAncGtnLmZha2UnLCAnX19wYXRoX18nOiBbXSwgJ19fcGFja2FnZV9fJzogTm9uZSB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCisKKyAgICBkZWYgdGVzdF9zcGVjX2ZhbGxiYWNrKHNlbGYpOgorICAgICAgICAjIElmIF9fcGFja2FnZV9fIGlzbid0IGRlZmluZWQsIGZhbGwgYmFjayBvbiBfX3NwZWNfXy5wYXJlbnQuCisgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7J19fc3BlY19fJzogRmFrZVNwZWMoJ3BrZy5mYWtlJyl9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCisKKyAgICBkZWYgdGVzdF93YXJuX3doZW5fcGFja2FnZV9hbmRfc3BlY19kaXNhZ3JlZShzZWxmKToKKyAgICAgICAgIyBSYWlzZSBhbiBJbXBvcnRXYXJuaW5nIGlmIF9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKEltcG9ydFdhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19wYWNrYWdlX18nOiAncGtnLmZha2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19zcGVjX18nOiBGYWtlU3BlYygncGtnLmZha2VmYWtlJyl9KQogCiAgICAgZGVmIHRlc3RfYmFkX19wYWNrYWdlX18oc2VsZik6CiAgICAgICAgIGdsb2JhbHMgPSB7J19fcGFja2FnZV9fJzogJzxub3QgcmVhbD4nfQpAQCAtNzAsNiArOTAsMTEgQEAKICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnJywgZ2xvYmFscywge30sIFsncmVsaW1wb3J0J10sIDEpCiAKIAorY2xhc3MgRmFrZVNwZWM6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisKKwogY2xhc3MgVXNpbmdfX3BhY2thZ2VfX1BFUDMwMihVc2luZ19fcGFja2FnZV9fKToKICAgICBtb2NrX21vZHVsZXMgPSB1dGlsLm1vY2tfbW9kdWxlcwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQppbmRleCA3MDY5ZDllLi5hN2JmMjc0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKQEAgLTQzLDYgKzQzLDEwIEBACiAgICAgIiIiVGVzdCBBUEktc3BlY2lmaWMgZGV0YWlscyBmb3IgX19pbXBvcnRfXyAoZS5nLiByYWlzaW5nIHRoZSByaWdodAogICAgIGV4Y2VwdGlvbiB3aGVuIHBhc3NpbmcgaW4gYW4gaW50IGZvciB0aGUgbW9kdWxlIG5hbWUpLiIiIgogCisgICAgZGVmIHRlc3RfcmFpc2VzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ3NvbWUgbW9kdWxlIHRoYXQgZG9lcyBub3QgZXhpc3QnKQorCiAgICAgZGVmIHRlc3RfbmFtZV9yZXF1aXJlc19ycGFyaXRpb24oc2VsZik6CiAgICAgICAgICMgUmFpc2UgVHlwZUVycm9yIGlmIGEgbm9uLXN0cmluZyBpcyBwYXNzZWQgaW4gZm9yIHRoZSBtb2R1bGUgbmFtZS4KICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IDgwNDU0NjUuLjE0NjQwMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKQEAgLTczLDE2ICs3MywxNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ21vZHVsZScpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLm1vZHVsZS5fX25hbWVfXywgJ3BrZy5tb2R1bGUnKQogCi0gICAgZGVmIHRlc3RfbW9kdWxlX2Zyb21fcGFja2FnZV90cmlnZ2Vyc19JbXBvcnRFcnJvcihzZWxmKToKLSAgICAgICAgIyBJZiBhIHN1Ym1vZHVsZSBjYXVzZXMgYW4gSW1wb3J0RXJyb3IgYmVjYXVzZSBpdCB0cmllcyB0byBpbXBvcnQKLSAgICAgICAgIyBhIG1vZHVsZSB3aGljaCBkb2Vzbid0IGV4aXN0LCB0aGF0IHNob3VsZCBsZXQgdGhlIEltcG9ydEVycm9yCi0gICAgICAgICMgcHJvcGFnYXRlLgorICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3BhY2thZ2VfdHJpZ2dlcnNfTW9kdWxlTm90Rm91bmRFcnJvcihzZWxmKToKKyAgICAgICAgIyBJZiBhIHN1Ym1vZHVsZSBjYXVzZXMgYW4gTW9kdWxlTm90Rm91bmRFcnJvciBiZWNhdXNlIGl0IHRyaWVzCisgICAgICAgICMgdG8gaW1wb3J0IGEgbW9kdWxlIHdoaWNoIGRvZXNuJ3QgZXhpc3QsIHRoYXQgc2hvdWxkIGxldCB0aGUKKyAgICAgICAgIyBNb2R1bGVOb3RGb3VuZEVycm9yIHByb3BhZ2F0ZS4KICAgICAgICAgZGVmIG1vZHVsZV9jb2RlKCk6CiAgICAgICAgICAgICBpbXBvcnQgaV9kb19ub3RfZXhpc3QKICAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnLm1vZCc6IG1vZHVsZV9jb2RlfSkgYXMgaW1wb3J0ZXI6CiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBleGM6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhNb2R1bGVOb3RGb3VuZEVycm9yKSBhcyBleGM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnJywgZnJvbWxpc3Q9Wydtb2QnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpX2RvX25vdF9leGlzdCcsIGV4Yy5leGNlcHRpb24ubmFtZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CmluZGV4IDM3NTViODQuLjI0Mzk2MDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKQEAgLTEsNyArMSw2IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpbXBvcnRsaWIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKaW5kZXggYjMyYTg3Ni4uN2FhMjZiMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKQEAgLTE2LDExICsxNiwxNCBAQAogCiAgICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCiAKKyAgICBmaW5kID0gTm9uZQorICAgIGNoZWNrX2ZvdW5kID0gTm9uZQorCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgIyBUZXN0IE5vbmUgcmV0dXJuZWQgdXBvbiBub3QgZmluZGluZyBhIHN1aXRhYmxlIGxvYWRlci4KICAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZChtb2R1bGUpKQogCiAgICAgZGVmIHRlc3Rfc3lzX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoIGlzIHVzZWQgd2hlbiAncGF0aCcgaXMgTm9uZS4KQEAgLTMwLDggKzMzLDggQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5jaGVja19mb3VuZChmb3VuZCwgaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCAncGF0aCcgaXMgdXNlZCB3aGVuIHNldC4KQEAgLTQwLDggKzQzLDggQEAKICAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUsIFtwYXRoXSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfbGlzdChzZWxmKToKICAgICAgICAgIyBBbiBlbXB0eSBsaXN0IHNob3VsZCBub3QgY291bnQgYXMgYXNraW5nIGZvciBzeXMucGF0aC4KQEAgLTUwLDcgKzUzLDcgQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ21vZHVsZScsIFtdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZCgnbW9kdWxlJywgW10pKQogCiAgICAgZGVmIHRlc3RfcGF0aF9ob29rcyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgc3lzLnBhdGhfaG9va3MgaXMgdXNlZC4KQEAgLTYwLDggKzYzLDggQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIGhvb2sgPSB1dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaG9va3M9W2hvb2tdKToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUsIFtwYXRoXSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0sIGltcG9ydGVyKQogCkBAIC03Myw3ICs3Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF9lbnRyeV0pOgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZSgnb3MnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQoJ29zJykpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF9lbnRyeV0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQpAQCAtODUsOCArODgsOCBAQAogICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19zcGVjKG1vZHVsZSkKICAgICAgICAgaG9vayA9IHV0aWwubW9ja19wYXRoX2hvb2sob3MuZ2V0Y3dkKCksIGltcG9ydGVyPWltcG9ydGVyKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3BhdGhdLCBwYXRoX2hvb2tzPVtob29rXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5maW5kKG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5nZXRjd2QoKSwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCiAKICAgICBkZWYgdGVzdF9Ob25lX29uX3N5c19wYXRoKHNlbGYpOgpAQCAtMTgyLDE1ICsxODUsNTAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicpKQogCiAKK2NsYXNzIEZpbmRNb2R1bGVUZXN0cyhGaW5kZXJUZXN0cyk6CisgICAgZGVmIGZpbmQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBjaGVja19mb3VuZChzZWxmLCBmb3VuZCwgaW1wb3J0ZXIpOgorICAgICAgICBzZWxmLmFzc2VydElzKGZvdW5kLCBpbXBvcnRlcikKIAogCi0oRnJvemVuX0ZpbmRlclRlc3RzLAotIFNvdXJjZV9GaW5kZXJUZXN0cwotICkgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKyhGcm96ZW5fRmluZE1vZHVsZVRlc3RzLAorIFNvdXJjZV9GaW5kTW9kdWxlVGVzdHMKKykgPSB1dGlsLnRlc3RfYm90aChGaW5kTW9kdWxlVGVzdHMsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKworY2xhc3MgRmluZFNwZWNUZXN0cyhGaW5kZXJUZXN0cyk6CisgICAgZGVmIGZpbmQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgY2hlY2tfZm91bmQoc2VsZiwgZm91bmQsIGltcG9ydGVyKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb3VuZC5sb2FkZXIsIGltcG9ydGVyKQorCisKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIFBhdGhFbnRyeUZpbmRlclRlc3RzOgogCisgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmFpbGluZ19maW5kX3NwZWMoc2VsZik6CisgICAgICAgICMgUGF0aEVudHJ5RmluZGVyIHdpdGggZmluZF9tb2R1bGUoKSBkZWZpbmVkIHNob3VsZCB3b3JrLgorICAgICAgICAjIElzc3VlICMyMDc2My4KKyAgICAgICAgY2xhc3MgRmluZGVyOgorICAgICAgICAgICAgcGF0aF9sb2NhdGlvbiA9ICd0ZXN0X2ZpbmRlcl93aXRoX2ZpbmRfbW9kdWxlJworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIGlmIHBhdGggIT0gc2VsZi5wYXRoX2xvY2F0aW9uOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgorCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZmluZF9tb2R1bGUoZnVsbG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W0ZpbmRlci5wYXRoX2xvY2F0aW9uXStzeXMucGF0aFs6XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzPVtGaW5kZXJdKToKKyAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCdpbXBvcnRsaWInKQorCiAgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmFpbGluZ19maW5kX21vZHVsZShzZWxmKToKICAgICAgICAgIyBQYXRoRW50cnlGaW5kZXIgd2l0aCBmaW5kX21vZHVsZSgpIGRlZmluZWQgc2hvdWxkIHdvcmsuCiAgICAgICAgICMgSXNzdWUgIzIwNzYzLgpAQCAtMjA3LDcgKzI0NSw3IEBACiAKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtGaW5kZXIucGF0aF9sb2NhdGlvbl0rc3lzLnBhdGhbOl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcz1bRmluZGVyXSk6Ci0gICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnaW1wb3J0bGliJykKKyAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ2ltcG9ydGxpYicpCiAKIAogKEZyb3plbl9QRUZUZXN0cywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKaW5kZXggM2JiODE5Zi4uOGE5NWEzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKQEAgLTEsNyArMSw4IEBACiAiIiJUZXN0IHJlbGF0aXZlIGltcG9ydHMgKFBFUCAzMjgpLiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKKwogCiBjbGFzcyBSZWxhdGl2ZUltcG9ydHM6CiAKQEAgLTY1LDkgKzY2LDExIEBACiAgICAgICAgICAgICAgICAgdW5jYWNoZV9uYW1lcy5hcHBlbmQobmFtZVs6LWxlbignLl9faW5pdF9fJyldKQogICAgICAgICB3aXRoIHV0aWwubW9ja19zcGVjKCpjcmVhdGUpIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgZm9yIGdsb2JhbF8gaW4gZ2xvYmFsc186Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCp1bmNhY2hlX25hbWVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGdsb2JhbF8pCisgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICAgICAgICAgIGZvciBnbG9iYWxfIGluIGdsb2JhbHNfOgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoKnVuY2FjaGVfbmFtZXMpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGdsb2JhbF8pCiAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX21vZHVsZShzZWxmKToKQEAgLTIwNCwxMSArMjA3LDE4IEBACiAKICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fZ2xvYmFscyhzZWxmKToKICAgICAgICAgIyBObyBnbG9iYWxzIGZvciBhIHJlbGF0aXZlIGltcG9ydCBpcyBhbiBlcnJvci4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6Ci0gICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3N5cycsIGxldmVsPTEpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnc3lzJywgbGV2ZWw9MSkKKworICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF9ub19wYWNrYWdlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnYScsIHsnX19wYWNrYWdlX18nOiAnJywgJ19fc3BlY19fJzogTm9uZX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MSkKIAogICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF9ub19wYWNrYWdlX2V4aXN0c19hYnNvbHV0ZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdzeXMnLCB7J19fcGFja2FnZV9fJzogJycsICdfX3NwZWNfXyc6IE5vbmV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTEpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1YmUxMWYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0iIiJSdW4gUHl0aG9uJ3Mgc3RhbmRhcmQgdGVzdCBzdWl0ZSB1c2luZyBpbXBvcnRsaWIuX19pbXBvcnRfXy4KLQotVGVzdHMga25vd24gdG8gZmFpbCBiZWNhdXNlIG9mIGFzc3VtcHRpb25zIHRoYXQgaW1wb3J0bGliIChwcm9wZXJseSkKLWludmFsaWRhdGVzIGFyZSBhdXRvbWF0aWNhbGx5IHNraXBwZWQgaWYgdGhlIGVudGlyZSB0ZXN0IHN1aXRlIGlzIHJ1bi4KLU90aGVyd2lzZSBhbGwgY29tbWFuZC1saW5lIG9wdGlvbnMgdmFsaWQgZm9yIHRlc3QucmVncnRlc3QgYXJlIGFsc28gdmFsaWQgZm9yCi10aGlzIHNjcmlwdC4KLQotIiIiCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0Ci0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRsaWIuX19pbXBvcnRfXwotICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNsZWFyKCkKLQotICAgIHJlZ3J0ZXN0Lm1haW4ocXVpZXQ9VHJ1ZSwgdmVyYm9zZTI9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IDM0Yjg2Y2QuLjEyY2UwY2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtNSw3ICs1LDYgQEAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0IGFzIHRlc3Rfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKaW5kZXggNzNmNGM2Mi4uYTE1MTE0OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKQEAgLTIxNyw3ICsyMTcsNyBAQAogICAgICAgICAgICAgIyBQRVAgMzAyCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpICMgWFhYCisgICAgICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICAjIFNhbml0eSBjaGVja3MuCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX2NhY2hlZF9fLCBjb21waWxlZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLngsIDUpCkBAIC0yNDUsMTIgKzI0NSw3IEBACiBjbGFzcyBCYWRCeXRlY29kZVRlc3Q6CiAKICAgICBkZWYgaW1wb3J0XyhzZWxmLCBmaWxlLCBtb2R1bGVfbmFtZSk6Ci0gICAgICAgIGxvYWRlciA9IHNlbGYubG9hZGVyKG1vZHVsZV9uYW1lLCBmaWxlKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgICMgWFhYIENoYW5nZSB0byB1c2UgZXhlY19tb2R1bGUoKS4KLSAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShtb2R1bGVfbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGVfbmFtZSwgc3lzLm1vZHVsZXMpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBtYW5pcHVsYXRlX2J5dGVjb2RlKHNlbGYsIG5hbWUsIG1hcHBpbmcsIG1hbmlwdWxhdG9yLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9RmFsc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CmluZGV4IGU2YTI0MTUuLjc5NWQ0MzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKQEAgLTE2LDEwICsxNiwxOSBAQAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKShtYXBwaW5nWycucm9vdCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmRfc3BlYycpKQorCisgICAgZGVmIHRlc3Rfc3VjY2Vzc19sZWdhY3koc2VsZik6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKShtYXBwaW5nWycucm9vdCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyB0aGUgY3dkLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKCcnKSwgJ2ZpbmRfc3BlYycpKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nX2xlZ2FjeShzZWxmKToKKyAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX21vZHVsZScpKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQppbmRleCAxZTA3NzFiLi45ODA4NTVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgcmUKLWltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwogIyBCZWNhdXNlIHN5cy5wYXRoIGdldHMgZXNzZW50aWFsbHkgYmxhbmtlZCwgbmVlZCB0byBoYXZlIHVuaWNvZGVkYXRhIGFscmVhZHkKICMgaW1wb3J0ZWQgZm9yIHRoZSBwYXJzZXIgdG8gdXNlLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQppbmRleCBkNGJmOTE1Li5jODYyNDgwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQpAQCAtMjA3LDYgKzIwNywxMCBAQAogCiAgICAgU1BMSVQgPSBtYWtlX2FiY19zdWJjbGFzc2VzKExvYWRlcikKIAorICAgIGRlZiB0ZXN0X2NyZWF0ZV9tb2R1bGUoc2VsZik6CisgICAgICAgIHNwZWMgPSAnYSBzcGVjJworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmlucy5jcmVhdGVfbW9kdWxlKHNwZWMpKQorCiAgICAgZGVmIHRlc3RfbG9hZF9tb2R1bGUoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgc2VsZi5pbnMubG9hZF9tb2R1bGUoJ3NvbWV0aGluZycpCkBAIC01MTksNiArNTIzLDEyIEBACiAgICAgICAgIHN1cHBvcnQudW5sb2FkKHNlbGYubW9kdWxlX25hbWUpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubG9hZCwgc2VsZi5tb2R1bGVfbmFtZSkKIAorICAgIGRlZiBsb2FkKHNlbGYsIGxvYWRlcik6CisgICAgICAgIHNwZWMgPSBzZWxmLnV0aWwuc3BlY19mcm9tX2xvYWRlcihzZWxmLm1vZHVsZV9uYW1lLCBsb2FkZXIpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdC5fYm9vdHN0cmFwLl9sb2FkX3VubG9ja2VkKHNwZWMpCisKICAgICBkZWYgbW9ja19nZXRfY29kZShzZWxmKToKICAgICAgICAgcmV0dXJuIG1vY2sucGF0Y2gub2JqZWN0KHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzLCAnZ2V0X2NvZGUnKQogCkBAIC01MjgsOSArNTM4LDcgQEAKICAgICAgICAgICAgIG1vY2tlZF9nZXRfY29kZS5zaWRlX2VmZmVjdCA9IEltcG9ydEVycm9yCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLkluc3BlY3RMb2FkZXJTdWJjbGFzcygpCi0gICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5sb2FkKGxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2dldF9jb2RlX05vbmUoc2VsZik6CiAgICAgICAgICMgSWYgZ2V0X2NvZGUoKSByZXR1cm5zIE5vbmUsIHJhaXNlIEltcG9ydEVycm9yLgpAQCAtNTM4LDcgKzU0Niw3IEBACiAgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUucmV0dXJuX3ZhbHVlID0gTm9uZQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQotICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYubG9hZChsb2FkZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfcmV0dXJuZWQoc2VsZik6CiAgICAgICAgICMgVGhlIGxvYWRlZCBtb2R1bGUgc2hvdWxkIGJlIHJldHVybmVkLgpAQCAtNTQ2LDE0ICs1NTQsMTYgQEAKICAgICAgICAgd2l0aCBzZWxmLm1vY2tfZ2V0X2NvZGUoKSBhcyBtb2NrZWRfZ2V0X2NvZGU6CiAgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUucmV0dXJuX3ZhbHVlID0gY29kZQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQotICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWQobG9hZGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUsIHN5cy5tb2R1bGVzW3NlbGYubW9kdWxlX25hbWVdKQogCiAKIChGcm96ZW5fSUxMb2FkTW9kdWxlVGVzdHMsCiAgU291cmNlX0lMTG9hZE1vZHVsZVRlc3RzCiAgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlckxvYWRNb2R1bGVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3M9U1BMSVRfSUwpCisgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMLAorICAgICAgICAgICAgICAgICAgICAgICAgIGluaXQ9aW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsPXV0aWwpCiAKIAogIyMjIyMgRXhlY3V0aW9uTG9hZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKaW5kZXggNmJjM2M1Ni4uYjBhOTRhYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKQEAgLTk5LDkgKzk5LDcgQEAKIAogY2xhc3MgRmluZExvYWRlclRlc3RzOgogCi0gICAgY2xhc3MgRmFrZU1ldGFGaW5kZXI6Ci0gICAgICAgIEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIGZpbmRfbW9kdWxlKG5hbWUsIHBhdGg9Tm9uZSk6IHJldHVybiBuYW1lLCBwYXRoCisgICAgRmFrZU1ldGFGaW5kZXIgPSBOb25lCiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlcyhzZWxmKToKICAgICAgICAgIyBJZiBhIG1vZHVsZSB3aXRoIF9fbG9hZGVyX18gaXMgaW4gc3lzLm1vZHVsZXMsIHRoZW4gcmV0dXJuIGl0LgpAQCAtMTcxLDkgKzE2OSwzMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5pbml0LmZpbmRfbG9hZGVyKCduZXZlcmdvaW5ndG9maW5kdGhpc21vZHVsZScpKQogCiAKLShGcm96ZW5fRmluZExvYWRlclRlc3RzLAotIFNvdXJjZV9GaW5kTG9hZGVyVGVzdHMKLSApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaW5kTG9hZGVyVGVzdHMsIGluaXQ9aW5pdCkKK2NsYXNzIEZpbmRMb2FkZXJQRVA0NTFUZXN0cyhGaW5kTG9hZGVyVGVzdHMpOgorCisgICAgY2xhc3MgRmFrZU1ldGFGaW5kZXI6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGZpbmRfc3BlYyhuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKKyAgICAgICAgICAgIHJldHVybiBtYWNoaW5lcnlbJ1NvdXJjZSddLk1vZHVsZVNwZWMobmFtZSwgKG5hbWUsIHBhdGgpKQorCisKKyhGcm96ZW5fRmluZExvYWRlclBFUDQ1MVRlc3RzLAorIFNvdXJjZV9GaW5kTG9hZGVyUEVQNDUxVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaW5kTG9hZGVyUEVQNDUxVGVzdHMsIGluaXQ9aW5pdCkKKworCitjbGFzcyBGaW5kTG9hZGVyUEVQMzAyVGVzdHMoRmluZExvYWRlclRlc3RzKToKKworICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUsIHBhdGgKKworCisoRnJvemVuX0ZpbmRMb2FkZXJQRVAzMDJUZXN0cywKKyBTb3VyY2VfRmluZExvYWRlclBFUDMwMlRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclBFUDMwMlRlc3RzLCBpbml0PWluaXQpCiAKIAogY2xhc3MgUmVsb2FkVGVzdHM6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKaW5kZXggY2MzODNjMi4uZmZkOGRjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weQpAQCAtNjYsNiArNjYsOCBAQAogICAgICAgICBzcGVjID0gdXRpbC5zcGVjX2Zyb21fbG9hZGVyKFRlc3RpbmdJbXBvcnRlci5tb2R1bGVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLkxhenlMb2FkZXIobG9hZGVyKSkKICAgICAgICAgbW9kdWxlID0gc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQorICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoVGVzdGluZ0ltcG9ydGVyLm1vZHVsZV9uYW1lKQogICAgICAgICBtb2R1bGUuX19zcGVjX18gPSBzcGVjCiAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc3BlYy5sb2FkZXIKICAgICAgICAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKaW5kZXggZGYwYWYxMi4uYjJhYWRmZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CkBAIC0zLDcgKzMsNiBAQAogaW5pdCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQogCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2Vha3JlZgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9uYW1lc3BhY2VfcGtncy5weQppbmRleCA2NjM5NjEyLi5lMzdkOGExIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKQEAgLTEsMTMgKzEsMTAgQEAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgaW1wb3J0bGliLmFiYwotaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliIGltcG9ydCB1dGlsCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKICMgbmVlZGVkIHRlc3RzOgogIwpAQCAtNzEsNiArNjgsNyBAQAogICAgICAgICAjIFRPRE86IHdpbGwgd2UgZXZlciB3YW50IHRvIHBhc3MgZXhjX2luZm8gdG8gX19leGl0X18/CiAgICAgICAgIHNlbGYuY3R4Ll9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKKwogY2xhc3MgU2luZ2xlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CiAgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KIApAQCAtODcsNyArODUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZm9vKSwgIjxtb2R1bGUgJ2ZvbycgKG5hbWVzcGFjZSk+IikKIAogCi1jbGFzcyBEeW5hbWljUGF0aGVOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKK2NsYXNzIER5bmFtaWNQYXRoTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CiAgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KIAogICAgIGRlZiB0ZXN0X2R5bmFtaWNfcGF0aChzZWxmKToKQEAgLTI4OSw1ICsyODcsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhX3Rlc3QuYXR0ciwgJ2luIG1vZHVsZScpCiAKIAorY2xhc3MgUmVsb2FkVGVzdHMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgZm9vID0gaW1wb3J0bGliLnJlbG9hZChmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvbworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIGZvbyA9IGltcG9ydGxpYi5yZWxvYWQoZm9vKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICBkZWYgdGVzdF9keW5hbWljX3BhdGgoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworICAgICAgICAjIE5vdyBtb2RpZnkgc3lzLnBhdGggYW5kIHJlbG9hZC4KKyAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnJvb3QsICdwb3J0aW9uMicpKQorICAgICAgICBmb28gPSBpbXBvcnRsaWIucmVsb2FkKGZvbykKKworICAgICAgICAjIEFuZCBtYWtlIHN1cmUgZm9vLnR3byBpcyBub3cgaW1wb3J0YWJsZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKaW5kZXggOGIzMzNlOC4uNWExNmEwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQpAQCAtNSw2ICs1LDcgQEAKIHV0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQogCiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHBhdGhsaWIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBDbGVhbkltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCkBAIC02NTksNiArNjYwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5jYWNoZWQsIHNlbGYuY2FjaGVkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3BlYy5oYXNfbG9jYXRpb24pCiAKKyAgICBkZWYgdGVzdF9zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbl9wYXRoX2xpa2VfYXJnKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobGliLlB1cmVQYXRoKHNlbGYucGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5vcmlnaW4sIHNlbGYucGF0aCkKKwogICAgIGRlZiB0ZXN0X3NwZWNfZnJvbV9maWxlX2xvY2F0aW9uX2RlZmF1bHRfd2l0aG91dF9sb2NhdGlvbihzZWxmKToKICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihzZWxmLm5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQppbmRleCA0MWNhMzMzLi5kNjE1Mzc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CkBAIC01LDYgKzUsNyBAQAogaW1wb3J0bGliX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00NiwxNCArNDcsOCBAQAogICAgICAgICAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIExvYWRlcigpKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdjcmVhdGVfbW9kdWxlJywgc3RyKHdbMF0ubWVzc2FnZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlX3JldHVybnNfTm9uZShzZWxmKToKICAgICAgICAgY2xhc3MgTG9hZGVyKHNlbGYuYWJjLkxvYWRlcik6CkBAIC02NzcsNiArNjcyLDE1IEBACiAgICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgbm90IGJlIE5vbmUnKQorICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX3BhdGhfbGlrZV9hcmcoc2VsZik6CisgICAgICAgIHBhdGggPSBwYXRobGliLlB1cmVQYXRoKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCiAgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGUoc2VsZik6CkBAIC03MzgsNiArNzQyLDE1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfcGF0aF9saWtlX2FyZyhzZWxmKToKKyAgICAgICAgcGF0aCA9IHBhdGhsaWIuUHVyZVBhdGgoJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCksIGV4cGVjdCkKKwogCiAoRnJvemVuX1BFUDMxNDdUZXN0cywKICBTb3VyY2VfUEVQMzE0N1Rlc3RzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKaW5kZXggYzg5M2JjZi4uMDA1YjY4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQpAQCAtNDAsNyArNDAsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJvb3QgPSBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLlJFR0lTVFJZX0tFWQogICAgIGtleSA9IHJvb3QuZm9ybWF0KGZ1bGxuYW1lPW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPSclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICB0cnk6CiAgICAgICAgIHdpdGggdGVtcF9tb2R1bGUobmFtZSwgImEgPSAxIikgYXMgbG9jYXRpb246CiAgICAgICAgICAgICBzdWJrZXkgPSBDcmVhdGVLZXkoSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQppbmRleCA2NzFlMDVhLi45NzYzNGU1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CkBAIC0zMCw2ICszMCw3IEBACiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGZyb20gdGVzdCBpbXBvcnQgaW5zcGVjdF9mb2RkZXIgYXMgbW9kCiBmcm9tIHRlc3QgaW1wb3J0IGluc3BlY3RfZm9kZGVyMiBhcyBtb2QyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0IGltcG9ydCBfcmVhZHlfdG9faW1wb3J0CiAKQEAgLTM4LDcgKzM5LDcgQEAKICMgaXNtb2R1bGUsIGlzY2xhc3MsIGlzbWV0aG9kLCBpc2Z1bmN0aW9uLCBpc3RyYWNlYmFjaywgaXNmcmFtZSwgaXNjb2RlLAogIyBpc2J1aWx0aW4sIGlzcm91dGluZSwgaXNnZW5lcmF0b3IsIGlzZ2VuZXJhdG9yZnVuY3Rpb24sIGdldG1lbWJlcnMsCiAjIGdldGRvYywgZ2V0ZmlsZSwgZ2V0bW9kdWxlLCBnZXRzb3VyY2VmaWxlLCBnZXRjb21tZW50cywgZ2V0c291cmNlLAotIyBnZXRjbGFzc3RyZWUsIGdldGFyZ3NwZWMsIGdldGFyZ3ZhbHVlcywgZm9ybWF0YXJnc3BlYywgZm9ybWF0YXJndmFsdWVzLAorIyBnZXRjbGFzc3RyZWUsIGdldGFyZ3ZhbHVlcywgZm9ybWF0YXJnc3BlYywgZm9ybWF0YXJndmFsdWVzLAogIyBjdXJyZW50ZnJhbWUsIHN0YWNrLCB0cmFjZSwgaXNkYXRhZGVzY3JpcHRvcgogCiAjIE5PVEU6IFRoZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdGVzdHMgcmVsYXRpbmcgdG8gaW50ZXJhY3Rpb24gd2l0aApAQCAtNjQsNyArNjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNmcmFtZSwgaW5zcGVjdC5pc2Z1bmN0aW9uLCBpbnNwZWN0LmlzbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNtb2R1bGUsIGluc3BlY3QuaXN0cmFjZWJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvciwgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNjb3JvdXRpbmUsIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbl0pCisgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZSwgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNhc3luY2dlbiwgaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb25dKQogCiAgICAgZGVmIGlzdGVzdChzZWxmLCBwcmVkaWNhdGUsIGV4cCk6CiAgICAgICAgIG9iaiA9IGV2YWwoZXhwKQpAQCAtNzIsNiArNzQsNyBAQAogCiAgICAgICAgIGZvciBvdGhlciBpbiBzZWxmLnByZWRpY2F0ZXMgLSBzZXQoW3ByZWRpY2F0ZV0pOgogICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24gb3IgXAorICAgICAgICAgICAgICAgcHJlZGljYXRlID09IGluc3BlY3QuaXNhc3luY2dlbmZ1bmN0aW9uIG9yIFwKICAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24pIGFuZCBcCiAgICAgICAgICAgICAgICBvdGhlciA9PSBpbnNwZWN0LmlzZnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTgxLDYgKzg0LDEwIEBACiAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgIHlpZWxkIGkKIAorYXN5bmMgZGVmIGFzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlKHNlbGYpOgorICAgIGFzeW5jIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICB5aWVsZCBpCisKIGFzeW5jIGRlZiBjb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZShzZWxmKToKICAgICByZXR1cm4gJ3NwYW0nCiAKQEAgLTEyMSw2ICsxMjgsMTAgQEAKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2RhdGFkZXNjcmlwdG9yLCAnY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvciwgJyh4IGZvciB4IGluIHJhbmdlKDIpKScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwgJ2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKKyAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2FzeW5jZ2VuLAorICAgICAgICAgICAgICAgICAgICAnYXN5bmNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUoMSknKQorICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzYXN5bmNnZW5mdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgJ2FzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKIAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCkBAIC00MDAsNyArNDExLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUobW9kLnNwYW0pKSwgbW9kZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUoZ2l0LmFidXNlKSksIG1vZGZpbGUpCiAgICAgICAgIGZuID0gIl9ub25fZXhpc3RpbmdfZmlsZW5hbWVfdXNlZF9mb3Jfc291cmNlZmlsZV90ZXN0LnB5IgotICAgICAgICBjbyA9IGNvbXBpbGUoIk5vbmUiLCBmbiwgImV4ZWMiKQorICAgICAgICBjbyA9IGNvbXBpbGUoIng9MSIsIGZuLCAiZXhlYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSwgTm9uZSkKICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXSA9ICgxLCBOb25lLCAiTm9uZSIsIGNvLmNvX2ZpbGVuYW1lKQogICAgICAgICB0cnk6CkBAIC0yOTAyLDYgKzI5MTMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJyQnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQogCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignLmEnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnKToKICAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCkBAIC0yOTg1LDYgKzMwMDAsMTcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ25hbWUgbXVzdCBiZSBhIHN0cicpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoTm9uZSwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCiAKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbXBsaWNpdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wbGljaXQgYXJndW1lbnRzIG11c3QgYmUgcGFzc2VkIGluIGFzJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignLjAnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKworICAgICAgICBwYXJhbSA9IGluc3BlY3QuUGFyYW1ldGVyKAorICAgICAgICAgICAgJy4wJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW0ua2luZCwgaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLm5hbWUsICdpbXBsaWNpdDAnKQorCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbW11dGFiaWxpdHkoc2VsZik6CiAgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignc3BhbScsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQogCkBAIC0zMjMzLDYgKzMyNTksMTcgQEAKICAgICAgICAgYmEgPSBzaWcuYmluZChhcmdzPTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEuYXJndW1lbnRzLCB7J2t3YXJncyc6IHsnYXJncyc6IDF9fSkKIAorICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9pbXBsaWNpdF9hcmcoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE5NjExOiBnZXRjYWxsYXJncyBzaG91bGQgd29yayB3aXRoIHNldCBjb21wcmVoZW5zaW9ucworICAgICAgICBkZWYgbWFrZV9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7eiAqIHogZm9yIHogaW4gcmFuZ2UoNSl9CisgICAgICAgIHNldGNvbXBfY29kZSA9IG1ha2Vfc2V0Ll9fY29kZV9fLmNvX2NvbnN0c1sxXQorICAgICAgICBzZXRjb21wX2Z1bmMgPSB0eXBlcy5GdW5jdGlvblR5cGUoc2V0Y29tcF9jb2RlLCB7fSkKKworICAgICAgICBpdGVyYXRvciA9IGl0ZXIocmFuZ2UoNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHNldGNvbXBfZnVuYywgaXRlcmF0b3IpLCB7MCwgMSwgNCwgOSwgMTZ9KQorCiAKIGNsYXNzIFRlc3RCb3VuZEFyZ3VtZW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hhYmxlKHNlbGYpOgpAQCAtMzU0MywxNCArMzU4MCwxNCBAQAogCiAgICAgZGVmIHRlc3RfZGV0YWlscyhzZWxmKToKICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ3VuaXR0ZXN0JykKLSAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLW0nLCAnaW5zcGVjdCcsCisgICAgICAgIGFyZ3MgPSBzdXBwb3J0Lm9wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soKmFyZ3MsICctbScsICdpbnNwZWN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pdHRlc3QnLCAnLS1kZXRhaWxzJykKICAgICAgICAgb3V0cHV0ID0gb3V0LmRlY29kZSgpCiAgICAgICAgICMgSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayBvbiB0aGUgb3V0cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fbmFtZV9fLCBvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fZmlsZV9fLCBvdXRwdXQpCi0gICAgICAgIGlmIG5vdCBzeXMuZmxhZ3Mub3B0aW1pemU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX2NhY2hlZF9fLCBvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fY2FjaGVkX18sIG91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CmluZGV4IGI2NmM1ZDYuLjE0YmJkNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CkBAIC0yLDYgKzIsOCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogCiBMID0gWwogICAgICAgICAoJzAnLCAwKSwKQEAgLTIxMiw2ICsyMTQsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoJzJicjQ1cWMnLCAzNSksIDQyOTQ5NjcyOTcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCcxejE0MXo1JywgMzYpLCA0Mjk0OTY3Mjk3KQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGFueShjaCBpbiBsaXQgZm9yIGNoIGluICcuZUVqSicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChsaXQsIDApLCBldmFsKGxpdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChsaXQsIDApLCBpbnQobGl0LnJlcGxhY2UoJ18nLCAnJyksIDApKQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGFueShjaCBpbiBsaXQgZm9yIGNoIGluICcuZUVqSicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIGxpdCwgMCkKKyAgICAgICAgIyBBZGRpdGlvbmFsIHRlc3QgY2FzZXMgd2l0aCBiYXNlcyAhPSAwLCBvbmx5IGZvciB0aGUgY29uc3RydWN0b3I6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCIxXzAwIiwgMyksIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCIwXzEwMCIpLCAxMDApICAjIG5vdCB2YWxpZCBhcyBhIGxpdGVyYWwhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGIiMV8wMCIpLCAxMDApICAjIGJ5dGUgdW5kZXJzY29yZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICJfMTAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiK18xMDAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICIxX18wMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgIjEwMF8iKQorCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc21hbGxfaW50cyhzZWxmKToKICAgICAgICAgIyBCdWcgIzMyMzY6IFJldHVybiBzbWFsbCBsb25ncyBmcm9tIFB5TG9uZ19Gcm9tU3RyaW5nCkBAIC00MzAsMjEgKzQ1MSwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBiYWRfaW50ID0gQmFkSW50MigpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgbiA9IGludChiYWRfaW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogCiAgICAgICAgIGJhZF9pbnQgPSBUcnVuY1JldHVybnNCYWRJbnQoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBnb29kX2ludCA9IFRydW5jUmV0dXJuc0ludFN1YmNsYXNzKCkKICAgICAgICAgbiA9IGludChnb29kX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogICAgICAgICBuID0gSW50U3ViY2xhc3MoZ29vZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBJbnRTdWJjbGFzcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IDUxMTE4ODIuLjhhMjExMWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtNDk2LDcgKzQ5NiwxMSBAQAogICAgIGRlZiB0ZXN0X29wZW5faGFuZGxlc19OVUxfY2hhcnMoc2VsZik6CiAgICAgICAgIGZuX3dpdGhfTlVMID0gJ2Zvb1wwYmFyJwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGZuX3dpdGhfTlVMLCAndycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3BlbiwgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCisKKyAgICAgICAgYnl0ZXNfZm4gPSBieXRlcyhmbl93aXRoX05VTCwgJ2FzY2lpJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzX2ZuLCAndycpCiAKICAgICBkZWYgdGVzdF9yYXdfZmlsZV9pbyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIsIGJ1ZmZlcmluZz0wKSBhcyBmOgpAQCAtODU2LDYgKzg2MCwzMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihzdHJlYW0sIG1ldGhvZCkoYnVmZmVyKSwgNSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGJ1ZmZlciksIGIiMTIzNDUiKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX3N1cHBvcnQoc2VsZik6CisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgICAgIGRlZiBjaGVja19wYXRoX3N1Y2NlZWRzKHBhdGgpOgorICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4ocGF0aCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoImVnZ1xuIikKKworICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4ocGF0aCwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJlZ2dcbiIpCisKKyAgICAgICAgY2hlY2tfcGF0aF9zdWNjZWVkcyhQYXRoTGlrZShzdXBwb3J0LlRFU1RGTikpCisgICAgICAgIGNoZWNrX3BhdGhfc3VjY2VlZHMoUGF0aExpa2Uoc3VwcG9ydC5URVNURk4uZW5jb2RlKCd1dGYtOCcpKSkKKworICAgICAgICBiYWRfcGF0aCA9IFBhdGhMaWtlKFR5cGVFcnJvcikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5vcGVuKGJhZF9wYXRoLCAndycpCisKKyAgICAgICAgIyBlbnN1cmUgdGhhdCByZWZjb3VudGluZyBpcyBjb3JyZWN0IHdpdGggc29tZSBlcnJvciBjb25kaXRpb25zCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAncmVhZC93cml0ZS9hcHBlbmQgbW9kZScpOgorICAgICAgICAgICAgc2VsZi5vcGVuKFBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKSwgJ3J3eGEnKQorCiAKIGNsYXNzIENJT1Rlc3QoSU9UZXN0KToKIApAQCAtMTc4Miw3ICsxODEyLDcgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1ldGhvZCk6CiAgICAgICAgICAgICAgICAgcGFpciA9IHNlbGYudHAoc2VsZi5CeXRlc0lPKGIiYWJjZGVmIiksIHNlbGYuTW9ja1Jhd0lPKCkpCiAKLSAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXNsaWtlKDUpCisgICAgICAgICAgICAgICAgZGF0YSA9IGJ5dGVzbGlrZShiJ1wwJyAqIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBhaXIsIG1ldGhvZCkoZGF0YSksIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhkYXRhKSwgYiJhYmNkZSIpCiAKQEAgLTMyNDYsOCArMzI3Niw3IEBACiAKIGNsYXNzIFB5VGV4dElPV3JhcHBlclRlc3QoVGV4dElPV3JhcHBlclRlc3QpOgogICAgIGlvID0gcHlpbwotICAgICNzaHV0ZG93bl9lcnJvciA9ICJMb29rdXBFcnJvcjogdW5rbm93biBlbmNvZGluZzogYXNjaWkiCi0gICAgc2h1dGRvd25fZXJyb3IgPSAiVHlwZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiCisgICAgc2h1dGRvd25fZXJyb3IgPSAiTG9va3VwRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6IGFzY2lpIgogCiAKIGNsYXNzIEluY3JlbWVudGFsTmV3bGluZURlY29kZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKaW5kZXggOTFhZThkOC4uMGUzOTUxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKQEAgLTExOSw3ICsxMTksNyBAQAogCiAgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CiAgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKLSAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBhZGRyID0gYidcMCcgKiBsZW5ndGgKICAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9IDQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKGFkZHIsIGxlbmd0aCkpKToKICAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKQEAgLTEzOSwxMSArMTM5LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMzIzMjIzNTUyMSwgIjo6YzBhODoxIikKIAogICAgIGRlZiB0ZXN0X3BhY2tlZChzZWxmKToKLSAgICAgICAgYWRkciA9IGJ5dGVzKDEyKSArIGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIikKKyAgICAgICAgYWRkciA9IGInXDAnKjEyICsgYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKQogICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICI6OiIpCi0gICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpCisgICAgICAgIGFkZHIgPSBiJ1wwJyoxMiArIGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikKICAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiOjpjMGE4OjEiKQotICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGJ5dGVzKDEyKQorICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGInXDAnKjEyCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgImMwYTg6MTo6IikKIAogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2ludHNfcmVqZWN0ZWQoc2VsZik6CkBAIC0xNTgsNyArMTU4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9wYWNrZWRfbGVuZ3RoKHNlbGYpOgogICAgICAgICBkZWYgYXNzZXJ0QmFkTGVuZ3RoKGxlbmd0aCk6Ci0gICAgICAgICAgICBhZGRyID0gYnl0ZXMobGVuZ3RoKQorICAgICAgICAgICAgYWRkciA9IGInXDAnICogbGVuZ3RoCiAgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAxNikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAoYWRkciwgbGVuZ3RoKSkpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQpAQCAtMTE3Niw2ICsxMTc2LDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29ya1s1XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjo1JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuX19nZXRpdGVtX18sIDEgPDwgNjQpCiAKICAgICBkZWYgdGVzdEdldGl0ZW0oc2VsZik6CiAgICAgICAgICMgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lwYWRkci1weS9pc3N1ZXMvZGV0YWlsP2lkPTE1CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKaW5kZXggYTkxNjcwYi4uNTQyYjI4NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlci5weQpAQCAtNTQsNiArNTQsMTQgQEAKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CiAgICAgICAgIHJldHVybiBpCiAKK2NsYXNzIERlZmF1bHRJdGVyQ2xhc3M6CisgICAgcGFzcworCitjbGFzcyBOb0l0ZXJDbGFzczoKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CisgICAgICAgIHJldHVybiBpCisgICAgX19pdGVyX18gPSBOb25lCisKICMgTWFpbiB0ZXN0IHN1aXRlCiAKIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTk5NSw2ICsxMDAzLDEwIEBACiAgICAgZGVmIHRlc3RfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZik6CiAgICAgICAgIGNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIFNlcXVlbmNlQ2xhc3MsICgwLCkpCiAKKyAgICBkZWYgdGVzdF9lcnJvcl9pdGVyKHNlbGYpOgorICAgICAgICBmb3IgdHlwIGluIChEZWZhdWx0SXRlckNsYXNzLCBOb0l0ZXJDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGl0ZXIsIHR5cCgpKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoVGVzdENhc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkKaW5kZXggMTUyZjVmYy4uNDFjOTc1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcmxlbi5weQpAQCAtNDIsNyArNDIsNiBAQAogIiIiCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcmVwZWF0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBvcGVyYXRvciBpbXBvcnQgbGVuZ3RoX2hpbnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKaW5kZXggZTA1NDMwMy4uZWExZjU3YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgd2Vha3JlZgogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCiBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KLWltcG9ydCBzeXMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHJhbmRvbQogaW1wb3J0IGNvcHkKQEAgLTY0NCwyNCArNjQzLDU4IEBACiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHByb3RvLCBjeWNsZSgnYWJjJykpCiAKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAjIHRlc3Qgd2l0aCBwYXJ0aWFsIGNvbnN1bWVkIGlucHV0IGl0ZXJhYmxlCisgICAgICAgICAgICBpdCA9IGl0ZXIoJ2FiY2RlJykKKyAgICAgICAgICAgIGMgPSBjeWNsZShpdCkKKyAgICAgICAgICAgIF8gPSBbbmV4dChjKSBmb3IgaSBpbiByYW5nZSgyKV0gICAgICAjIGNvbnN1bWUgMiBvZiA1IGlucHV0cworICAgICAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhjLCBwcm90bykKKyAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZHMocCkgICAgICAgICAgICAgICAgICAjIHJlYnVpbGQgdGhlIGN5Y2xlIG9iamVjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBkKSwgbGlzdCgnY2RlYWJjZGVhYmNkZWFiY2RlYWInKSkKKworICAgICAgICAgICAgIyB0ZXN0IHdpdGggY29tcGxldGVseSBjb25zdW1lZCBpbnB1dCBpdGVyYWJsZQorICAgICAgICAgICAgaXQgPSBpdGVyKCdhYmNkZScpCisgICAgICAgICAgICBjID0gY3ljbGUoaXQpCisgICAgICAgICAgICBfID0gW25leHQoYykgZm9yIGkgaW4gcmFuZ2UoNyldICAgICAgIyBjb25zdW1lIDcgb2YgNSBpbnB1dHMKKyAgICAgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoYywgcHJvdG8pCisgICAgICAgICAgICBkID0gcGlja2xlLmxvYWRzKHApICAgICAgICAgICAgICAgICAgIyByZWJ1aWxkIHRoZSBjeWNsZSBvYmplY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyMCwgZCksIGxpc3QoJ2NkZWFiY2RlYWJjZGVhYmNkZWFiJykpCisKICAgICBkZWYgdGVzdF9jeWNsZV9zZXRzdGF0ZShzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgYm90aCBtb2RlcyBmb3IgcmVzdG9yaW5nIHN0YXRlCisKKyAgICAgICAgIyBNb2RlIDAgaXMgZWZmaWNpZW50LiAgSXQgdXNlcyBhbiBpbmNvbXBsZXRlbHkgY29uc3VtZWQgaW5wdXQKKyAgICAgICAgIyBpdGVyYXRvciB0byBidWlsZCBhIGN5Y2xlIG9iamVjdCBhbmQgdGhlbiBwYXNzZXMgaW4gc3RhdGUgd2l0aAorICAgICAgICAjIGEgbGlzdCBvZiBwcmV2aW91c2x5IGNvbnN1bWVkIHZhbHVlcy4gIFRoZXJlIGlzIG5vIGRhdGEKKyAgICAgICAgIyBvdmVybGFwIGJldHdlZW4gdGhlIHR3by4KKyAgICAgICAgYyA9IGN5Y2xlKCdkZWZnJykKKyAgICAgICAgYy5fX3NldHN0YXRlX18oKGxpc3QoJ2FiYycpLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBjKSwgbGlzdCgnZGVmZ2FiY2RlZmdhYmNkZWZnYWInKSkKKworICAgICAgICAjIE1vZGUgMSBpcyBpbmVmZmljaWVudC4gIEl0IHN0YXJ0cyB3aXRoIGEgY3ljbGUgb2JqZWN0IGJ1aWx0CisgICAgICAgICMgZnJvbSBhbiBpdGVyYXRvciBvdmVyIHRoZSByZW1haW5pbmcgZWxlbWVudHMgaW4gYSBwYXJ0aWFsCisgICAgICAgICMgY3ljbGUgYW5kIHRoZW4gcGFzc2VzIGluIHN0YXRlIHdpdGggYWxsIG9mIHRoZSBwcmV2aW91c2x5CisgICAgICAgICMgc2VlbiB2YWx1ZXMgKHRoaXMgb3ZlcmxhcHMgdmFsdWVzIGluY2x1ZGVkIGluIHRoZSBpdGVyYXRvcikuCisgICAgICAgIGMgPSBjeWNsZSgnZGVmZycpCisgICAgICAgIGMuX19zZXRzdGF0ZV9fKChsaXN0KCdhYmNkZWZnJyksIDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMjAsIGMpLCBsaXN0KCdkZWZnYWJjZGVmZ2FiY2RlZmdhYicpKQorCisgICAgICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNldHN0YXRlIG5lZWRzIHRvIGJlIGEgdHVwbGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY3ljbGUoJ2RlZmcnKS5fX3NldHN0YXRlX18oW2xpc3QoJ2FiY2RlZmcnKSwgMF0pCisKKyAgICAgICAgIyBUaGUgZmlyc3QgYXJndW1lbnQgaW4gdGhlIHNldHN0YXRlIHR1cGxlIG11c3QgYmUgYSBsaXN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGMgPSBjeWNsZSgnZGVmZycpCisgICAgICAgICAgICBjLl9fc2V0c3RhdGVfXygodHVwbGUoJ2RlZmcnKSwgMCkpCisgICAgICAgIHRha2UoMjAsIGMpCisKKyAgICAgICAgIyBUaGUgc2Vjb25kIGFyZ3VtZW50IGluIHRoZSBzZXRzdGF0ZSB0dXBsZSBtdXN0IGJlIGFuIGludAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjeWNsZSgnZGVmZycpLl9fc2V0c3RhdGVfXygobGlzdCgnYWJjZGVmZycpLCAneCcpKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgW10pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCAoW10sKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCAoKCksIDApKQotICAgICAgICBpdCA9IGN5Y2xlKCdhYmMnKQotICAgICAgICBpdC5fX3NldHN0YXRlX18oKFsnZGUnLCAnZmcnXSwgMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoaXQsIDE1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdhJywgJ2InLCAnYycsICdkZScsICdmZyddKQotICAgICAgICBpdCA9IGN5Y2xlKCdhYmMnKQotICAgICAgICBpdC5fX3NldHN0YXRlX18oKFsnZGUnLCAnZmcnXSwgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoaXQsIDE1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkZScsICdmZycsICdkZScsICdmZycsICdkZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdmZycsICdkZScsICdmZycsICdkZScsICdmZyddKQogCiAgICAgZGVmIHRlc3RfZ3JvdXBieShzZWxmKToKICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IGFjY2VwdHMgYXJndW1lbnRzIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CmluZGV4IDA4MDdlNmYuLmJhYzM3MGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBqc29uCiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKaW5kZXggZmRhZmViNi4uN2U1NjhiZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQpAQCAtNzIsMTAgKzcyLDggQEAKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfaW5wdXRfdHlwZShzZWxmKToKICAgICAgICAgbXNnID0gJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0cicKLSAgICAgICAgZm9yIHZhbHVlIGluIFsxLCAzLjE0LCBiJ2J5dGVzJywgYidceGZmXHgwMCcsIFtdLCB7fSwgTm9uZV06CisgICAgICAgIGZvciB2YWx1ZSBpbiBbMSwgMy4xNCwgW10sIHt9LCBOb25lXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2csIHNlbGYubG9hZHMsIHZhbHVlKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgotICAgICAgICAgICAgc2VsZi5qc29uLmxvYWQoQnl0ZXNJTyhiJ1sxLDIsM10nKSkKIAogICAgIGRlZiB0ZXN0X3N0cmluZ193aXRoX3V0ZjhfYm9tKHNlbGYpOgogICAgICAgICAjIHNlZSAjMTg5NTgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CmluZGV4IDk1ZmY1YjguLjc5MTA1MjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gdGVzdC50ZXN0X2pzb24gaW1wb3J0IFB5VGVzdCwgQ1Rlc3QKLWltcG9ydCByZQogCiAjIDIwMDctMTAtMDUKIEpTT05ET0NTID0gWwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkKaW5kZXggYzdjYzhhNy4uZWRhMTc3YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF91bmljb2RlLnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IGNvZGVjcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gdGVzdC50ZXN0X2pzb24gaW1wb3J0IFB5VGVzdCwgQ1Rlc3QKIApAQCAtNTIsOSArNTMsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmR1bXBzLCBbYiJoaSJdKQogCiAgICAgZGVmIHRlc3RfYnl0ZXNfZGVjb2RlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9hZHMsIGInImhpIicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5sb2FkcywgYidbImhpIl0nKQotCisgICAgICAgIGZvciBlbmNvZGluZywgYm9tIGluIFsKKyAgICAgICAgICAgICAgICAoJ3V0Zi04JywgY29kZWNzLkJPTV9VVEY4KSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0xNmJlJywgY29kZWNzLkJPTV9VVEYxNl9CRSksCisgICAgICAgICAgICAgICAgKCd1dGYtMTZsZScsIGNvZGVjcy5CT01fVVRGMTZfTEUpLAorICAgICAgICAgICAgICAgICgndXRmLTMyYmUnLCBjb2RlY3MuQk9NX1VURjMyX0JFKSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0zMmxlJywgY29kZWNzLkJPTV9VVEYzMl9MRSksCisgICAgICAgICAgICBdOgorICAgICAgICAgICAgZGF0YSA9IFsiYVx4YjVcdTIwYWNcVTAwMDFkMTIwIl0KKyAgICAgICAgICAgIGVuY29kZWQgPSBzZWxmLmR1bXBzKGRhdGEpLmVuY29kZShlbmNvZGluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2Fkcyhib20gKyBlbmNvZGVkKSwgZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkcyhlbmNvZGVkKSwgZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBzZWxmLmxvYWRzLCBiJ1siXHg4MCJdJykKIAogICAgIGRlZiB0ZXN0X29iamVjdF9wYWlyc19ob29rX3dpdGhfdW5pY29kZShzZWxmKToKICAgICAgICAgcyA9ICd7InhrZCI6MSwgImtjdyI6MiwgImFydCI6MywgImh4bSI6NCwgInFydCI6NSwgInBhZCI6NiwgImhveSI6N30nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CmluZGV4IGY4MjIwMjQuLjlmNDk4ODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5IGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKaW5kZXggNDdlMmVkZC4uMzc1ZDljNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKQEAgLTMsNiArMyw4IEBACiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcy5wYXRoCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0b2tlbml6ZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIApAQCAtMTAsOCArMTIsNiBAQAogTk9ORVhJU1RFTlRfRklMRU5BTUUgPSBGSUxFTkFNRSArICcubWlzc2luZycKIElOVkFMSURfTkFNRSA9ICchQCQpKCFAI18xJwogRU1QVFkgPSAnJwotVEVTVFMgPSAnaW5zcGVjdF9mb2RkZXIgaW5zcGVjdF9mb2RkZXIyIG1hcHBpbmdfdGVzdHMnCi1URVNUUyA9IFRFU1RTLnNwbGl0KCkKIFRFU1RfUEFUSCA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKIE1PRFVMRVMgPSAibGluZWNhY2hlIGFiYyIuc3BsaXQoKQogTU9EVUxFX1BBVEggPSBvcy5wYXRoLmRpcm5hbWUoRklMRU5BTUUpCkBAIC0zNyw2ICszNyw2NSBAQAogICAgIHJldHVybiAzJycnICMgTm8gZW5kaW5nIG5ld2xpbmUKIAogCitjbGFzcyBUZW1wRmlsZToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkgYXMgZnA6CisgICAgICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IGZwLm5hbWUKKyAgICAgICAgICAgIGZwLndyaXRlKHNlbGYuZmlsZV9ieXRlX3N0cmluZykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKworCitjbGFzcyBHZXRMaW5lVGVzdHNHb29kRGF0YShUZW1wRmlsZSk6CisgICAgIyBmaWxlX2xpc3QgICA9IFsnbGlzdFxuJywgJ29mXG4nLCAnZ29vZFxuJywgJ3N0cmluZ3NcbiddCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZV9ieXRlX3N0cmluZyA9ICcnLmpvaW4oc2VsZi5maWxlX2xpc3QpLmVuY29kZSgndXRmLTgnKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZik6CisgICAgICAgIHdpdGggdG9rZW5pemUub3BlbihzZWxmLmZpbGVfbmFtZSkgYXMgZnA6CisgICAgICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGZwKToKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZS5lbmRzd2l0aCgnXG4nKToKKyAgICAgICAgICAgICAgICAgICAgbGluZSArPSAnXG4nCisKKyAgICAgICAgICAgICAgICBjYWNoZWRfbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKHNlbGYuZmlsZV9uYW1lLCBpbmRleCArIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lLCBjYWNoZWRfbGluZSkKKworICAgIGRlZiB0ZXN0X2dldGxpbmVzKHNlbGYpOgorICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgc2VsZi5maWxlX2xpc3QpCisKKworY2xhc3MgR2V0TGluZVRlc3RzQmFkRGF0YShUZW1wRmlsZSk6CisgICAgIyBmaWxlX2J5dGVfc3RyaW5nID0gYidCYWQgZGF0YSBnb2VzIGhlcmUnCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoU3ludGF4RXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lLCBzZWxmLmZpbGVfbmFtZSwgMSkKKworICAgIGRlZiB0ZXN0X2dldGxpbmVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoU3ludGF4RXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcywgc2VsZi5maWxlX25hbWUpCisKKworY2xhc3MgRW1wdHlGaWxlKEdldExpbmVUZXN0c0dvb2REYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9saXN0ID0gW10KKworCitjbGFzcyBTaW5nbGVFbXB0eUxpbmUoR2V0TGluZVRlc3RzR29vZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2xpc3QgPSBbJ1xuJ10KKworCitjbGFzcyBHb29kVW5pY29kZShHZXRMaW5lVGVzdHNHb29kRGF0YSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZpbGVfbGlzdCA9IFsnw6FcbicsICdiXG4nLCAnYWJjZGVmXG4nLCAnw6HDocOhw6HDoVxuJ10KKworCitjbGFzcyBCYWRVbmljb2RlKEdldExpbmVUZXN0c0JhZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2J5dGVfc3RyaW5nID0gYidceDgwYWJjJworCisKIGNsYXNzIExpbmVDYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZik6CkBAIC01MywxMyArMTEyLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRsaW5lKEVNUFRZLCAxKSwgRU1QVFkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0bGluZShJTlZBTElEX05BTUUsIDEpLCBFTVBUWSkKIAotICAgICAgICAjIENoZWNrIHdoZXRoZXIgbGluZXMgY29ycmVzcG9uZCB0byB0aG9zZSBmcm9tIGZpbGUgaXRlcmF0aW9uCi0gICAgICAgIGZvciBlbnRyeSBpbiBURVNUUzoKLSAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFU1RfUEFUSCwgZW50cnkpICsgJy5weScKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmUsIGdldGxpbmUoZmlsZW5hbWUsIGluZGV4ICsgMSkpCi0KICAgICAgICAgIyBDaGVjayBtb2R1bGUgbG9hZGluZwogICAgICAgICBmb3IgZW50cnkgaW4gTU9EVUxFUzoKICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKE1PRFVMRV9QQVRILCBlbnRyeSkgKyAnLnB5JwpAQCAtODAsMTIgKzEzMiwxMyBAQAogCiAgICAgZGVmIHRlc3RfY2xlYXJjYWNoZShzZWxmKToKICAgICAgICAgY2FjaGVkID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIFRFU1RTOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oVEVTVF9QQVRILCBlbnRyeSkgKyAnLnB5JworICAgICAgICBmb3IgZW50cnkgaW4gTU9EVUxFUzoKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKE1PRFVMRV9QQVRILCBlbnRyeSkgKyAnLnB5JwogICAgICAgICAgICAgY2FjaGVkLmFwcGVuZChmaWxlbmFtZSkKICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCAxKQogCiAgICAgICAgICMgQXJlIGFsbCBmaWxlcyBjYWNoZWQ/CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2FjaGVkLCBbXSkKICAgICAgICAgY2FjaGVkX2VtcHR5ID0gW2ZuIGZvciBmbiBpbiBjYWNoZWQgaWYgZm4gbm90IGluIGxpbmVjYWNoZS5jYWNoZV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWNoZWRfZW1wdHksIFtdKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKaW5kZXggOGY4MmFiNS4uYWVlNjJkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbGlzdF90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBsaXN0X3Rlc3RzCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CmluZGV4IDg1MzQ0ZGUuLmU0NWE5ODIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKQEAgLTI2LDYgKzI2LDcgQEAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBjb25maWdwYXJzZXIKIGltcG9ydCBkYXRldGltZQoraW1wb3J0IHBhdGhsaWIKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBpbwogaW1wb3J0IGdjCkBAIC0zMDgsNiArMzA5LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5nZXRMZXZlbE5hbWUoJ0lORk8nKSwgbG9nZ2luZy5JTkZPKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKGxvZ2dpbmcuSU5GTyksICdJTkZPJykKIAorICAgIGRlZiB0ZXN0X2lzc3VlMjc5MzUoc2VsZik6CisgICAgICAgIGZhdGFsID0gbG9nZ2luZy5nZXRMZXZlbE5hbWUoJ0ZBVEFMJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYXRhbCwgbG9nZ2luZy5GQVRBTCkKKwogY2xhc3MgQmFzaWNGaWx0ZXJUZXN0KEJhc2VUZXN0KToKIAogICAgICIiIlRlc3QgdGhlIGJ1bmRsZWQgRmlsdGVyIGNsYXNzLiIiIgpAQCAtNTc1LDYgKzU4MCwyOSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGguc2hvdWxkRmx1c2gocikpCiAgICAgICAgIGguY2xvc2UoKQogCisgICAgZGVmIHRlc3RfcGF0aF9vYmplY3RzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IFBhdGggb2JqZWN0cyBhcmUgYWNjZXB0ZWQgYXMgZmlsZW5hbWUgYXJndW1lbnRzIHRvIGhhbmRsZXJzLgorCisgICAgICAgIFNlZSBJc3N1ZSAjMjc0OTMuCisgICAgICAgICIiIgorICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgIG9zLnVubGluayhmbikKKyAgICAgICAgcGZuID0gcGF0aGxpYi5QYXRoKGZuKQorICAgICAgICBjYXNlcyA9ICgKKyAgICAgICAgICAgICAgICAgICAgKGxvZ2dpbmcuRmlsZUhhbmRsZXIsIChwZm4sICd3JykpLAorICAgICAgICAgICAgICAgICAgICAobG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyLCAocGZuLCAnYScpKSwKKyAgICAgICAgICAgICAgICAgICAgKGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLCAocGZuLCAnaCcpKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2xpbnV4JywgJ2RhcndpbicpOgorICAgICAgICAgICAgY2FzZXMgKz0gKChsb2dnaW5nLmhhbmRsZXJzLldhdGNoZWRGaWxlSGFuZGxlciwgKHBmbiwgJ3cnKSksKQorICAgICAgICBmb3IgY2xzLCBhcmdzIGluIGNhc2VzOgorICAgICAgICAgICAgaCA9IGNscygqYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmbikpCisgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgIG9zLnVubGluayhmbikKKwogICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAnbnQnLCAnV2F0Y2hlZEZpbGVIYW5kbGVyIG5vdCBhcHByb3ByaWF0ZSBmb3IgV2luZG93cy4nKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfcmFjZShzZWxmKToKQEAgLTk1OCw3ICs5ODYsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgQmFzZVRlc3Quc2V0VXAoc2VsZikKICAgICAgICAgc2VsZi5tZW1faGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuTWVtb3J5SGFuZGxlcigxMCwgbG9nZ2luZy5XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3RfaGRscikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3RfaGRscikKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ21lbScpCiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5wcm9wYWdhdGUgPSAwCiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYubWVtX2hkbHIpCkBAIC05OTUsNiArMTAyMywzNiBAQAogICAgICAgICBzZWxmLm1lbV9sb2dnZXIuZGVidWcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKQogCisgICAgZGVmIHRlc3RfZmx1c2hfb25fY2xvc2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGZsdXNoLW9uLWNsb3NlIGNvbmZpZ3VyYXRpb24gd29ya3MgYXMgZXhwZWN0ZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuZGVidWcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuaW5mbyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYubWVtX2hkbHIpCisgICAgICAgICMgRGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gZmx1c2ggb24gY2xvc2UuIENoZWNrIHRoYXQgaXQgaGFwcGVucy4KKyAgICAgICAgc2VsZi5tZW1faGRsci5jbG9zZSgpCisgICAgICAgIGxpbmVzID0gWworICAgICAgICAgICAgKCdERUJVRycsICcxJyksCisgICAgICAgICAgICAoJ0lORk8nLCAnMicpLAorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykKKyAgICAgICAgIyBOb3cgY29uZmlndXJlIGZvciBmbHVzaGluZyBub3QgdG8gYmUgZG9uZSBvbiBjbG9zZS4KKyAgICAgICAgc2VsZi5tZW1faGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuTWVtb3J5SGFuZGxlcigxMCwgbG9nZ2luZy5XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm9vdF9oZGxyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLm1lbV9oZGxyKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuZGVidWcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKSAgIyBubyBjaGFuZ2UKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmluZm8oc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKSAgIyBubyBjaGFuZ2UKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5tZW1faGRscikKKyAgICAgICAgc2VsZi5tZW1faGRsci5jbG9zZSgpCisgICAgICAgICMgYXNzZXJ0IHRoYXQgbm8gbmV3IGxpbmVzIGhhdmUgYmVlbiBhZGRlZAorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpICAjIG5vIGNoYW5nZQorCiAKIGNsYXNzIEV4Y2VwdGlvbkZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcik6CiAgICAgIiIiQSBzcGVjaWFsIGV4Y2VwdGlvbiBmb3JtYXR0ZXIuIiIiCkBAIC00MjM5LDYgKzQyOTcsMTcgQEAKICAgICAgICAgbXNnID0gJ1JlY29yZCBub3QgZm91bmQgaW4gZXZlbnQgbG9nLCB3ZW50IGJhY2sgJWQgcmVjb3JkcycgJSBHT19CQUNLCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgbXNnPW1zZykKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydsb2dUaHJlYWRzJywgJ2xvZ011bHRpcHJvY2Vzc2luZycsCisgICAgICAgICAgICAgICAgICAgICAnbG9nUHJvY2Vzc2VzJywgJ2N1cnJlbnRmcmFtZScsCisgICAgICAgICAgICAgICAgICAgICAnUGVyY2VudFN0eWxlJywgJ1N0ckZvcm1hdFN0eWxlJywgJ1N0cmluZ1RlbXBsYXRlU3R5bGUnLAorICAgICAgICAgICAgICAgICAgICAgJ0ZpbHRlcmVyJywgJ1BsYWNlSG9sZGVyJywgJ01hbmFnZXInLCAnUm9vdExvZ2dlcicsCisgICAgICAgICAgICAgICAgICAgICAncm9vdCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGxvZ2dpbmcsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogIyBTZXQgdGhlIGxvY2FsZSB0byB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IGRlZmF1bHQuICBJIGhhdmUgbm8gaWRlYQogIyB3aHkgdGhlIHRlc3QgZG9lcyB0aGlzLCBidXQgaW4gYW55IGNhc2Ugd2Ugc2F2ZSB0aGUgY3VycmVudCBsb2NhbGUKICMgZmlyc3QgYW5kIHJlc3RvcmUgaXQgYXQgdGhlIGVuZC4KQEAgLTQyNTYsNiArNDMyNSw3IEBACiAgICAgICAgIEV4Y2VwdGlvblRlc3QsIFN5c0xvZ0hhbmRsZXJUZXN0LCBIVFRQSGFuZGxlclRlc3QsCiAgICAgICAgIE5URXZlbnRMb2dIYW5kbGVyVGVzdCwgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKICAgICAgICAgVW5peFNvY2tldEhhbmRsZXJUZXN0LCBVbml4RGF0YWdyYW1IYW5kbGVyVGVzdCwgVW5peFN5c0xvZ0hhbmRsZXJUZXN0LAorICAgICAgICBNaXNjVGVzdENhc2UKICAgICBdCiAgICAgaWYgaGFzYXR0cihsb2dnaW5nLmhhbmRsZXJzLCAnUXVldWVMaXN0ZW5lcicpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoUXVldWVMaXN0ZW5lclRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKaW5kZXggNGIyZDgxYy4uZmQxNWYwNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQpAQCAtNjIxLDYgKzYyMSw4IEBACiAgICAgZGVmIHRlc3RfX2Zvcm1hdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICdkJyksICcxMjM0NTY3ODknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICdkJyksICcxMjM0NTY3ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICcsJyksICcxMjMsNDU2LDc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJ18nKSwgJzEyM180NTZfNzg5JykKIAogICAgICAgICAjIHNpZ24gYW5kIGFsaWduaW5nIGFyZSBpbnRlcmRlcGVuZGVudAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxLCAiLSIpLCAnMScpCkBAIC02NDksOCArNjUxLDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KGludCgnYmUnLCAxNiksICJYIiksICJCRSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC1pbnQoJ2JlJywgMTYpLCAieCIpLCAiLWJlIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLWludCgnYmUnLCAxNiksICJYIiksICItQkUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDEyMzQ1Njc4OTAsICcseCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OTAsICdfeCcpLCAnNDk5Nl8wMmQyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5MCwgJ19YJyksICc0OTk2XzAyRDInKQogCiAgICAgICAgICMgb2N0YWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMywgIm8iKSwgIjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMywgIm8iKSwgIi0zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIm8iKSwgIjIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIm8iKSwgIi0yMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIi1vIiksICIyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICItbyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiIG8iKSwgIiAyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIgbyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiK28iKSwgIisyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIrbyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDEyMzQ1Njc4OTAsICcsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OTAsICdfbycpLCAnMTExXzQ1NDBfMTMyMicpCisKKyAgICAgICAgIyBiaW5hcnkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMywgImIiKSwgIjExIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTMsICJiIiksICItMTEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiYiIpLCAiMTAwMTEwMTAwMTAiKQpAQCAtNjYxLDEyICs2ODAsMjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIgYiIpLCAiLTEwMDExMDEwMDEwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIitiIiksICIrMTAwMTEwMTAwMTAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIitiIiksICItMTAwMTEwMTAwMTAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDEyMzQ1Njc4OTAsICcsYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1LCAnX2InKSwgJzExXzAwMDBfMDAxMV8xMDAxJykKIAogICAgICAgICAjIG1ha2Ugc3VyZSB0aGVzZSBhcmUgZXJyb3JzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIjEuMyIpICAjIHByZWNpc2lvbiBkaXNhbGxvd2VkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIl9jIikgICAjIHVuZGVyc2NvcmUsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIixjIikgICAjIGNvbW1hLCBhbmQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiK2MiKSAgICMgc2lnbiBub3QgYWxsb3dlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoICdjJwogCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICdfLCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICcsXycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICdfLGQnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdDYW5ub3Qgc3BlY2lmeSBib3RoJywgZm9ybWF0LCAzLCAnLF9kJykKKwogICAgICAgICAjIGVuc3VyZSB0aGF0IG9ubHkgaW50IGFuZCBmbG9hdCB0eXBlIHNwZWNpZmllcnMgd29yawogICAgICAgICBmb3IgZm9ybWF0X3NwZWMgaW4gKFtjaHIoeCkgZm9yIHggaW4gcmFuZ2Uob3JkKCdhJyksIG9yZCgneicpKzEpXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nocih4KSBmb3IgeCBpbiByYW5nZShvcmQoJ0EnKSwgb3JkKCdaJykrMSldKToKQEAgLTY4OSw2ICs3MTcsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgaW50LCBmbG9hdCgnLWluZicpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIGZsb2F0KCduYW4nKSkKIAorICAgIGRlZiB0ZXN0X21vZF9kaXZpc2lvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBfID0gMSAlIDAKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEzICUgMTAsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEzICUgMTAsIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTMgJSAtMTAsIC03KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMyAlIC0xMCwgLTMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAlIDQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyICUgNCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAlIC00LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiAlIC00LCAwKQorCiAgICAgZGVmIHRlc3RfdHJ1ZV9kaXZpc2lvbihzZWxmKToKICAgICAgICAgaHVnZSA9IDEgPDwgNDAwMDAKICAgICAgICAgbWh1Z2UgPSAtaHVnZQpAQCAtNzIzLDYgKzc2NSwyNSBAQAogICAgICAgICBmb3IgemVybyBpbiBbImh1Z2UgLyAwIiwgIm1odWdlIC8gMCJdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIGV2YWwsIHplcm8sIG5hbWVzcGFjZSkKIAorICAgIGRlZiB0ZXN0X2Zsb29yZGl2KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIF8gPSAxIC8vIDAKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIgLy8gMywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyIC8vIC0zLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMiAvLyAzLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMiAvLyAtMywgMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMSAvLyAtMywgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTEgLy8gMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTEgLy8gLTMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDExIC8vIDMsIDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgLy8gLTMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyIC8vIDMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyIC8vIC0zLCAtNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAvLyAzLCA0KQorCiAgICAgZGVmIGNoZWNrX3RydWVkaXYoc2VsZiwgYSwgYiwgc2tpcF9zbWFsbD1UcnVlKToKICAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIHJlc3VsdCBvZiBhL2IgaXMgY29ycmVjdGx5IHJvdW5kZWQsIGJ5CiAgICAgICAgIGNvbXBhcmluZyBpdCB3aXRoIGEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgY29ycmVjdGx5CkBAIC04NDUsNiArOTA2LDIxIEBACiAgICAgICAgICAgICBzZWxmLmNoZWNrX3RydWVkaXYoLXgsIHkpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX3RydWVkaXYoLXgsIC15KQogCisgICAgZGVmIHRlc3RfbHNoaWZ0X29mX3plcm8oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCA8PCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAgPDwgMTAsIDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAwIDw8IC0xCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9odWdlX2xzaGlmdF9vZl96ZXJvKHNlbGYpOgorICAgICAgICAjIFNob3VsZG4ndCB0cnkgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBhIGh1Z2Ugc2hpZnQuIFNlZSBpc3N1ZSAjMjc4NzAuCisgICAgICAgICMgT3RoZXIgaW1wbGVtZW50YXRpb25zIG1heSBoYXZlIGEgZGlmZmVyZW50IGJvdW5kYXJ5IGZvciBvdmVyZmxvdywKKyAgICAgICAgIyBvciBub3QgcmFpc2UgYXQgYWxsLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAgPDwgc3lzLm1heHNpemUsIDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICAgICAwIDw8IChzeXMubWF4c2l6ZSArIDEpCisKICAgICBkZWYgdGVzdF9zbWFsbF9pbnRzKHNlbGYpOgogICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgMjU3KToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSwgaSArIDApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkgYi9MaWIvdGVzdC90ZXN0X2x6bWEucHkKaW5kZXggMTZlODlkNS4uZmRjOGUxMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sem1hLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBfY29tcHJlc3Npb24KIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBERUZBVUxUX0JVRkZFUl9TSVpFCiBpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTQ4OCw2ICs0ODksMTYgQEAKICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJhIikgYXMgZjoKICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiB0ZXN0X2luaXRfd2l0aF9QYXRoTGlrZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoVEVTVEZOKQorICAgICAgICB3aXRoIFRlbXBGaWxlKGZpbGVuYW1lLCBDT01QUkVTU0VEX1haKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGZpbGVuYW1lLCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQorCiAgICAgZGVmIHRlc3RfaW5pdF93aXRoX2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CiAgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTikgYXMgZjoKQEAgLTkzNSwxMSArOTQ2LDExIEBACiAKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2xpbWl0ZWQoc2VsZik6CiAgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgotICAgICAgICBib21iID0gbHptYS5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIHByZXNldD02KQorICAgICAgICBib21iID0gbHptYS5jb21wcmVzcyhiJ1wwJyAqIGludCgyZTYpLCBwcmVzZXQ9NikKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFKQogCiAgICAgICAgIGRlY29tcCA9IExaTUFGaWxlKEJ5dGVzSU8oYm9tYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29tcC5yZWFkKDEpLCBiJ1wwJykKICAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCiAgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQpAQCAtMTE4MCw2ICsxMTkxLDE3IEBACiAgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJyYiIpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQogCisgICAgZGVmIHRlc3Rfd2l0aF9wYXRobGlrZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoVEVTVEZOKQorICAgICAgICB3aXRoIFRlbXBGaWxlKGZpbGVuYW1lKToKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBJTlBVVCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorCiAgICAgZGVmIHRlc3RfYmFkX3BhcmFtcyhzZWxmKToKICAgICAgICAgIyBUZXN0IGludmFsaWQgcGFyYW1ldGVyIGNvbWJpbmF0aW9ucy4KICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQppbmRleCA4MGJlYzdhLi4wNjk4ZmY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IG1hY3BhdGgKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgdGVzdF9nZW5lcmljcGF0aAorZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2dlbmVyaWNwYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkgYi9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKaW5kZXggMDk5MWY3NC4uYWVhYmRiYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQpAQCAtNywxNyArNywxMiBAQAogaW1wb3J0IGVtYWlsLm1lc3NhZ2UKIGltcG9ydCByZQogaW1wb3J0IGlvCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCBtYWlsYm94CiBpbXBvcnQgZ2xvYgotdHJ5OgotICAgIGltcG9ydCBmY250bAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKIAogCiBjbGFzcyBUZXN0QmFzZToKQEAgLTIyNzMsMTIgKzIyNjgsMTggQEAKICIiIikKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyJsaW5lc2VwIiwgImZjbnRsIn0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgbWFpbGJveCwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSAoVGVzdE1haWxib3hTdXBlcmNsYXNzLCBUZXN0TWFpbGRpciwgVGVzdE1ib3gsIFRlc3RNTURGLCBUZXN0TUgsCiAgICAgICAgICAgICAgVGVzdEJhYnlsLCBUZXN0TWVzc2FnZSwgVGVzdE1haWxkaXJNZXNzYWdlLCBUZXN0TWJveE1lc3NhZ2UsCiAgICAgICAgICAgICAgVGVzdE1ITWVzc2FnZSwgVGVzdEJhYnlsTWVzc2FnZSwgVGVzdE1NREZNZXNzYWdlLAogICAgICAgICAgICAgIFRlc3RNZXNzYWdlQ29udmVyc2lvbiwgVGVzdFByb3h5RmlsZSwgVGVzdFBhcnRpYWxGaWxlLAotICAgICAgICAgICAgIE1haWxkaXJUZXN0Q2FzZSwgVGVzdEZha2VNYWlsQm94KQorICAgICAgICAgICAgIE1haWxkaXJUZXN0Q2FzZSwgVGVzdEZha2VNYWlsQm94LCBNaXNjVGVzdENhc2UpCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQogICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQppbmRleCBhODVjNjkxLi5jMDg0MjNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IG1haWxjYXAKIGltcG9ydCBvcwotaW1wb3J0IHNodXRpbAogaW1wb3J0IGNvcHkKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIGltcG9ydCB1bml0dGVzdApAQCAtMTIzLDcgKzEyMiw3IEBACiAgICAgICAgICAgICAoWyJlY2hvIGZvbyIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gZm9vIiksCiAgICAgICAgICAgICAoWyJlY2hvICVzIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBmb28udHh0IiksCiAgICAgICAgICAgICAoWyJlY2hvICV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBhdWRpby8qIiksCi0gICAgICAgICAgICAoWyJlY2hvIFwldCIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gJXQiKSwKKyAgICAgICAgICAgIChbImVjaG8gXFwldCIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gJXQiKSwKICAgICAgICAgICAgIChbImVjaG8gZm9vIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCIsIHBsaXN0XSwgImVjaG8gZm9vIiksCiAgICAgICAgICAgICAoWyJlY2hvICV7dG90YWx9IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCIsIHBsaXN0XSwgImVjaG8gMyIpCiAgICAgICAgIF0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQppbmRleCBjN2RlZjlhLi5iMzc4ZmZlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CkBAIC0xMzUsNiArMTM1LDEzIEBACiAgICAgICAgIGZvciBjb25zdHJ1Y3RvciBpbiAoc2V0LCBmcm96ZW5zZXQpOgogICAgICAgICAgICAgc2VsZi5oZWxwZXIoY29uc3RydWN0b3Ioc2VsZi5kLmtleXMoKSkpCiAKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9lbXB0eV9mcm96ZW5zZXRfc2luZ2xldG9uKHNlbGYpOgorICAgICAgICAjIG1hcnNoYWwubG9hZHMoKSBtdXN0IHJldXNlIHRoZSBlbXB0eSBmcm96ZW5zZXQgc2luZ2xldG9uCisgICAgICAgIG9iaiA9IGZyb3plbnNldCgpCisgICAgICAgIG9iajIgPSBtYXJzaGFsLmxvYWRzKG1hcnNoYWwuZHVtcHMob2JqKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhvYmoyLCBvYmopCisKIAogY2xhc3MgQnVmZmVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UsIEhlbHBlck1peGluKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CmluZGV4IGEzNzlhNmEuLmVhYTQxYmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hdGgucHkKQEAgLTcsMTQgKzcsMTUgQEAKIGltcG9ydCBtYXRoCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IHN5cwogaW1wb3J0IHN0cnVjdAoraW1wb3J0IHN5cwogaW1wb3J0IHN5c2NvbmZpZwogCiBlcHMgPSAxRS0wNQogTkFOID0gZmxvYXQoJ25hbicpCiBJTkYgPSBmbG9hdCgnaW5mJykKIE5JTkYgPSBmbG9hdCgnLWluZicpCitGTE9BVF9NQVggPSBzeXMuZmxvYXRfaW5mby5tYXgKIAogIyBkZXRlY3QgZXZpZGVuY2Ugb2YgZG91YmxlLXJvdW5kaW5nOiBmc3VtIGlzIG5vdCBhbHdheXMgY29ycmVjdGx5CiAjIHJvdW5kZWQgb24gbWFjaGluZXMgdGhhdCBzdWZmZXIgZnJvbSBkb3VibGUgcm91bmRpbmcuCkBAIC0zMCw2ICszMSw3IEBACiBtYXRoX3Rlc3RjYXNlcyA9IG9zLnBhdGguam9pbih0ZXN0X2RpciwgJ21hdGhfdGVzdGNhc2VzLnR4dCcpCiB0ZXN0X2ZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdF9kaXIsICdjbWF0aF90ZXN0Y2FzZXMudHh0JykKIAorCiBkZWYgdG9fdWxwcyh4KToKICAgICAiIiJDb252ZXJ0IGEgbm9uLU5hTiBmbG9hdCB4IHRvIGFuIGludGVnZXIsIGluIHN1Y2ggYSB3YXkgdGhhdAogICAgIGFkamFjZW50IGZsb2F0cyBhcmUgY29udmVydGVkIHRvIGFkamFjZW50IGludGVnZXJzLiAgVGhlbgpAQCAtMzcsMjUgKzM5LDM5IEBACiAgICAgZmxvYXRzLgogCiAgICAgVGhlIHJlc3VsdHMgZnJvbSB0aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBtYWtlIHNlbnNlIG9uIHBsYXRmb3JtcwotICAgIHdoZXJlIEMgZG91YmxlcyBhcmUgcmVwcmVzZW50ZWQgaW4gSUVFRSA3NTQgYmluYXJ5NjQgZm9ybWF0LgorICAgIHdoZXJlIG5hdGl2ZSBkb3VibGVzIGFyZSByZXByZXNlbnRlZCBpbiBJRUVFIDc1NCBiaW5hcnk2NCBmb3JtYXQuCiAKKyAgICBOb3RlOiAwLjAgYW5kIC0wLjAgYXJlIGNvbnZlcnRlZCB0byAwIGFuZCAtMSwgcmVzcGVjdGl2ZWx5LgogICAgICIiIgogICAgIG4gPSBzdHJ1Y3QudW5wYWNrKCc8cScsIHN0cnVjdC5wYWNrKCc8ZCcsIHgpKVswXQogICAgIGlmIG4gPCAwOgogICAgICAgICBuID0gfihuKzIqKjYzKQogICAgIHJldHVybiBuCiAKLWRlZiB1bHBzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscHM9MjApOgotICAgICIiIkdpdmVuIG5vbi1OYU4gZmxvYXRzIGBleHBlY3RlZGAgYW5kIGBnb3RgLAotICAgIGNoZWNrIHRoYXQgdGhleSdyZSBlcXVhbCB0byB3aXRoaW4gdGhlIGdpdmVuIG51bWJlciBvZiB1bHBzLgogCi0gICAgUmV0dXJucyBOb25lIG9uIHN1Y2Nlc3MgYW5kIGFuIGVycm9yIG1lc3NhZ2Ugb24gZmFpbHVyZS4iIiIKK2RlZiB1bHAoeCk6CisgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIGEKKyAgICBmbG9hdCB4LCBzdWNoIHRoYXQgdGhlIGZpcnN0IGZsb2F0IGJpZ2dlciB0aGFuIHggaXMgeCt1bHAoeCkuCisgICAgVGhlbiwgZ2l2ZW4gYW4gZXhwZWN0ZWQgcmVzdWx0IHggYW5kIGEgdG9sZXJhbmNlIG9mIG4gdWxwcywKKyAgICB0aGUgcmVzdWx0IHkgc2hvdWxkIGJlIHN1Y2ggdGhhdCBhYnMoeS14KSA8PSBuICogdWxwKHgpLgorICAgIFRoZSByZXN1bHRzIGZyb20gdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgbWFrZSBzZW5zZSBvbiBwbGF0Zm9ybXMKKyAgICB3aGVyZSBuYXRpdmUgZG91YmxlcyBhcmUgcmVwcmVzZW50ZWQgaW4gSUVFRSA3NTQgYmluYXJ5NjQgZm9ybWF0LgorICAgICIiIgorICAgIHggPSBhYnMoZmxvYXQoeCkpCisgICAgaWYgbWF0aC5pc25hbih4KSBvciBtYXRoLmlzaW5mKHgpOgorICAgICAgICByZXR1cm4geAogCi0gICAgdWxwc19lcnJvciA9IHRvX3VscHMoZ290KSAtIHRvX3VscHMoZXhwZWN0ZWQpCi0gICAgaWYgYWJzKHVscHNfZXJyb3IpIDw9IHVscHM6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgcmV0dXJuICJlcnJvciA9IHt9IHVscHM7IHBlcm1pdHRlZCBlcnJvciA9IHt9IHVscHMiLmZvcm1hdCh1bHBzX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxwcykKKyAgICAjIEZpbmQgbmV4dCBmbG9hdCB1cCBmcm9tIHguCisgICAgbiA9IHN0cnVjdC51bnBhY2soJzxxJywgc3RydWN0LnBhY2soJzxkJywgeCkpWzBdCisgICAgeF9uZXh0ID0gc3RydWN0LnVucGFjaygnPGQnLCBzdHJ1Y3QucGFjaygnPHEnLCBuICsgMSkpWzBdCisgICAgaWYgbWF0aC5pc2luZih4X25leHQpOgorICAgICAgICAjIENvcm5lciBjYXNlOiB4IHdhcyB0aGUgbGFyZ2VzdCBmaW5pdGUgZmxvYXQuIFRoZW4gaXQncworICAgICAgICAjIG5vdCBhbiBleGFjdCBwb3dlciBvZiB0d28sIHNvIHdlIGNhbiB0YWtlIHRoZSBkaWZmZXJlbmNlCisgICAgICAgICMgYmV0d2VlbiB4IGFuZCB0aGUgcHJldmlvdXMgZmxvYXQuCisgICAgICAgIHhfcHJldiA9IHN0cnVjdC51bnBhY2soJzxkJywgc3RydWN0LnBhY2soJzxxJywgbiAtIDEpKVswXQorICAgICAgICByZXR1cm4geCAtIHhfcHJldgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiB4X25leHQgLSB4CiAKICMgSGVyZSdzIGEgcHVyZSBQeXRob24gdmVyc2lvbiBvZiB0aGUgbWF0aC5mYWN0b3JpYWwgYWxnb3JpdGhtLCBmb3IKICMgZG9jdW1lbnRhdGlvbiBhbmQgY29tcGFyaXNvbiBwdXJwb3Nlcy4KQEAgLTEwNywyNCArMTIzLDIzIEBACiAgICAgICAgIG91dGVyICo9IGlubmVyCiAgICAgcmV0dXJuIG91dGVyIDw8IChuIC0gY291bnRfc2V0X2JpdHMobikpCiAKLWRlZiBhY2NfY2hlY2soZXhwZWN0ZWQsIGdvdCwgcmVsX2Vycj0yZS0xNSwgYWJzX2VyciA9IDVlLTMyMyk6Ci0gICAgIiIiRGV0ZXJtaW5lIHdoZXRoZXIgbm9uLU5hTiBmbG9hdHMgYSBhbmQgYiBhcmUgZXF1YWwgdG8gd2l0aGluIGEKLSAgICAoc21hbGwpIHJvdW5kaW5nIGVycm9yLiAgVGhlIGRlZmF1bHQgdmFsdWVzIGZvciByZWxfZXJyIGFuZAotICAgIGFic19lcnIgYXJlIGNob3NlbiB0byBiZSBzdWl0YWJsZSBmb3IgcGxhdGZvcm1zIHdoZXJlIGEgZmxvYXQgaXMKLSAgICByZXByZXNlbnRlZCBieSBhbiBJRUVFIDc1NCBkb3VibGUuICBUaGV5IGFsbG93IGFuIGVycm9yIG9mIGJldHdlZW4KLSAgICA5IGFuZCAxOSB1bHBzLiIiIgorZGVmIHVscF9hYnNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbCwgYWJzX3RvbCk6CisgICAgIiIiR2l2ZW4gZmluaXRlIGZsb2F0cyBgZXhwZWN0ZWRgIGFuZCBgZ290YCwgY2hlY2sgdGhhdCB0aGV5J3JlCisgICAgYXBwcm94aW1hdGVseSBlcXVhbCB0byB3aXRoaW4gdGhlIGdpdmVuIG51bWJlciBvZiB1bHBzIG9yIHRoZQorICAgIGdpdmVuIGFic29sdXRlIHRvbGVyYW5jZSwgd2hpY2hldmVyIGlzIGJpZ2dlci4KIAotICAgICMgbmVlZCB0byBzcGVjaWFsIGNhc2UgaW5maW5pdGllcywgc2luY2UgaW5mIC0gaW5mIGdpdmVzIG5hbgotICAgIGlmIG1hdGguaXNpbmYoZXhwZWN0ZWQpIGFuZCBnb3QgPT0gZXhwZWN0ZWQ6CisgICAgUmV0dXJucyBOb25lIG9uIHN1Y2Nlc3MgYW5kIGFuIGVycm9yIG1lc3NhZ2Ugb24gZmFpbHVyZS4KKyAgICAiIiIKKyAgICB1bHBfZXJyb3IgPSBhYnModG9fdWxwcyhleHBlY3RlZCkgLSB0b191bHBzKGdvdCkpCisgICAgYWJzX2Vycm9yID0gYWJzKGV4cGVjdGVkIC0gZ290KQorCisgICAgIyBTdWNjZWVkIGlmIGVpdGhlciBhYnNfZXJyb3IgPD0gYWJzX3RvbCBvciB1bHBfZXJyb3IgPD0gdWxwX3RvbC4KKyAgICBpZiBhYnNfZXJyb3IgPD0gYWJzX3RvbCBvciB1bHBfZXJyb3IgPD0gdWxwX3RvbDoKICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGVycm9yID0gZ290IC0gZXhwZWN0ZWQKLQotICAgIHBlcm1pdHRlZF9lcnJvciA9IG1heChhYnNfZXJyLCByZWxfZXJyICogYWJzKGV4cGVjdGVkKSkKLSAgICBpZiBhYnMoZXJyb3IpIDwgcGVybWl0dGVkX2Vycm9yOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiAiZXJyb3IgPSB7fTsgcGVybWl0dGVkIGVycm9yID0ge30iLmZvcm1hdChlcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWl0dGVkX2Vycm9yKQorICAgIGVsc2U6CisgICAgICAgIGZtdCA9ICgiZXJyb3IgPSB7Oi4zZ30gKHs6ZH0gdWxwcyk7ICIKKyAgICAgICAgICAgICAgICJwZXJtaXR0ZWQgZXJyb3IgPSB7Oi4zZ30gb3IgezpkfSB1bHBzIikKKyAgICAgICAgcmV0dXJuIGZtdC5mb3JtYXQoYWJzX2Vycm9yLCB1bHBfZXJyb3IsIGFic190b2wsIHVscF90b2wpCiAKIGRlZiBwYXJzZV9tdGVzdGZpbGUoZm5hbWUpOgogICAgICIiIlBhcnNlIGEgZmlsZSB3aXRoIHRlc3QgdmFsdWVzCkBAIC0xNTEsNiArMTY2LDcgQEAKIAogICAgICAgICAgICAgeWllbGQgKGlkLCBmbiwgZmxvYXQoYXJnKSwgZmxvYXQoZXhwKSwgZmxhZ3MpCiAKKwogZGVmIHBhcnNlX3Rlc3RmaWxlKGZuYW1lKToKICAgICAiIiJQYXJzZSBhIGZpbGUgd2l0aCB0ZXN0IHZhbHVlcwogCkBAIC0xNzIsOCArMTg4LDUzIEBACiAgICAgICAgICAgICB5aWVsZCAoaWQsIGZuLAogICAgICAgICAgICAgICAgICAgIGZsb2F0KGFyZ19yZWFsKSwgZmxvYXQoYXJnX2ltYWcpLAogICAgICAgICAgICAgICAgICAgIGZsb2F0KGV4cF9yZWFsKSwgZmxvYXQoZXhwX2ltYWcpLAotICAgICAgICAgICAgICAgICAgIGZsYWdzCi0gICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgZmxhZ3MpCisKKworZGVmIHJlc3VsdF9jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sPTUsIGFic190b2w9MC4wKToKKyAgICAjIENvbW1vbiBsb2dpYyBvZiBNYXRoVGVzdHMuKGZ0ZXN0LCB0ZXN0X3Rlc3RjYXNlcywgdGVzdF9tdGVzdGNhc2VzKQorICAgICIiIkNvbXBhcmUgYXJndW1lbnRzIGV4cGVjdGVkIGFuZCBnb3QsIGFzIGZsb2F0cywgaWYgZWl0aGVyCisgICAgaXMgYSBmbG9hdCwgdXNpbmcgYSB0b2xlcmFuY2UgZXhwcmVzc2VkIGluIG11bHRpcGxlcyBvZgorICAgIHVscChleHBlY3RlZCkgb3IgYWJzb2x1dGVseSAoaWYgZ2l2ZW4gYW5kIGdyZWF0ZXIpLgorCisgICAgQXMgYSBjb252ZW5pZW5jZSwgd2hlbiBuZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXQsIGFuZCBmb3IKKyAgICBub24tZmluaXRlIGZsb2F0cywgZXhhY3QgZXF1YWxpdHkgaXMgZGVtYW5kZWQuIEFsc28sIG5hbj09bmFuCisgICAgYXMgZmFyIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29uY2VybmVkLgorCisgICAgUmV0dXJucyBOb25lIG9uIHN1Y2Nlc3MgYW5kIGFuIGVycm9yIG1lc3NhZ2Ugb24gZmFpbHVyZS4KKyAgICAiIiIKKworICAgICMgQ2hlY2sgZXhhY3RseSBlcXVhbCAoYXBwbGllcyBhbHNvIHRvIHN0cmluZ3MgcmVwcmVzZW50aW5nIGV4Y2VwdGlvbnMpCisgICAgaWYgZ290ID09IGV4cGVjdGVkOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZmFpbHVyZSA9ICJub3QgZXF1YWwiCisKKyAgICAjIFR1cm4gbWl4ZWQgZmxvYXQgYW5kIGludCBjb21wYXJpc29uIChlLmcuIGZsb29yKCkpIHRvIGFsbC1mbG9hdAorICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShnb3QsIGludCk6CisgICAgICAgIGdvdCA9IGZsb2F0KGdvdCkKKyAgICBlbGlmIGlzaW5zdGFuY2UoZ290LCBmbG9hdCkgYW5kIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIGludCk6CisgICAgICAgIGV4cGVjdGVkID0gZmxvYXQoZXhwZWN0ZWQpCisKKyAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBmbG9hdCkgYW5kIGlzaW5zdGFuY2UoZ290LCBmbG9hdCk6CisgICAgICAgIGlmIG1hdGguaXNuYW4oZXhwZWN0ZWQpIGFuZCBtYXRoLmlzbmFuKGdvdCk6CisgICAgICAgICAgICAjIFBhc3MsIHNpbmNlIGJvdGggbmFuCisgICAgICAgICAgICBmYWlsdXJlID0gTm9uZQorICAgICAgICBlbGlmIG1hdGguaXNpbmYoZXhwZWN0ZWQpIG9yIG1hdGguaXNpbmYoZ290KToKKyAgICAgICAgICAgICMgV2UgYWxyZWFkeSBrbm93IHRoZXkncmUgbm90IGVxdWFsLCBkcm9wIHRocm91Z2ggdG8gZmFpbHVyZQorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBCb3RoIGFyZSBmaW5pdGUgZmxvYXRzIChub3cpLiBBcmUgdGhleSBjbG9zZSBlbm91Z2g/CisgICAgICAgICAgICBmYWlsdXJlID0gdWxwX2Fic19jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sLCBhYnNfdG9sKQorCisgICAgIyBhcmd1bWVudHMgYXJlIG5vdCBlcXVhbCwgYW5kIGlmIG51bWVyaWMsIGFyZSB0b28gZmFyIGFwYXJ0CisgICAgaWYgZmFpbHVyZSBpcyBub3QgTm9uZToKKyAgICAgICAgZmFpbF9mbXQgPSAiZXhwZWN0ZWQgeyFyfSwgZ290IHshcn0iCisgICAgICAgIGZhaWxfbXNnID0gZmFpbF9mbXQuZm9ybWF0KGV4cGVjdGVkLCBnb3QpCisgICAgICAgIGZhaWxfbXNnICs9ICcgKHt9KScuZm9ybWF0KGZhaWx1cmUpCisgICAgICAgIHJldHVybiBmYWlsX21zZworICAgIGVsc2U6CisgICAgICAgIHJldHVybiBOb25lCiAKICMgQ2xhc3MgcHJvdmlkaW5nIGFuIF9faW5kZXhfXyBtZXRob2QuCiBjbGFzcyBNeUluZGV4YWJsZShvYmplY3QpOgpAQCAtMTg1LDE4ICsyNDYsMjQgQEAKIAogY2xhc3MgTWF0aFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiBmdGVzdChzZWxmLCBuYW1lLCB2YWx1ZSwgZXhwZWN0ZWQpOgotICAgICAgICBpZiBhYnModmFsdWUtZXhwZWN0ZWQpID4gZXBzOgotICAgICAgICAgICAgIyBVc2UgJXIgaW5zdGVhZCBvZiAlZiBzbyB0aGUgZXJyb3IgbWVzc2FnZQotICAgICAgICAgICAgIyBkaXNwbGF5cyBmdWxsIHByZWNpc2lvbi4gT3RoZXJ3aXNlIGRpc2NyZXBhbmNpZXMKLSAgICAgICAgICAgICMgaW4gdGhlIGxhc3QgZmV3IGJpdHMgd2lsbCBsZWFkIHRvIHZlcnkgY29uZnVzaW5nCi0gICAgICAgICAgICAjIGVycm9yIG1lc3NhZ2VzCi0gICAgICAgICAgICBzZWxmLmZhaWwoJyVzIHJldHVybmVkICVyLCBleHBlY3RlZCAlcicgJQotICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCB2YWx1ZSwgZXhwZWN0ZWQpKQorICAgIGRlZiBmdGVzdChzZWxmLCBuYW1lLCBnb3QsIGV4cGVjdGVkLCB1bHBfdG9sPTUsIGFic190b2w9MC4wKToKKyAgICAgICAgIiIiQ29tcGFyZSBhcmd1bWVudHMgZXhwZWN0ZWQgYW5kIGdvdCwgYXMgZmxvYXRzLCBpZiBlaXRoZXIKKyAgICAgICAgaXMgYSBmbG9hdCwgdXNpbmcgYSB0b2xlcmFuY2UgZXhwcmVzc2VkIGluIG11bHRpcGxlcyBvZgorICAgICAgICB1bHAoZXhwZWN0ZWQpIG9yIGFic29sdXRlbHksIHdoaWNoZXZlciBpcyBncmVhdGVyLgorCisgICAgICAgIEFzIGEgY29udmVuaWVuY2UsIHdoZW4gbmVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0LCBhbmQgZm9yCisgICAgICAgIG5vbi1maW5pdGUgZmxvYXRzLCBleGFjdCBlcXVhbGl0eSBpcyBkZW1hbmRlZC4gQWxzbywgbmFuPT1uYW4KKyAgICAgICAgaW4gdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIGZhaWx1cmUgPSByZXN1bHRfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbCwgYWJzX3RvbCkKKyAgICAgICAgaWYgZmFpbHVyZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgie306IHt9Ii5mb3JtYXQobmFtZSwgZmFpbHVyZSkpCiAKICAgICBkZWYgdGVzdENvbnN0YW50cyhzZWxmKToKLSAgICAgICAgc2VsZi5mdGVzdCgncGknLCBtYXRoLnBpLCAzLjE0MTU5MjYpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2UnLCBtYXRoLmUsIDIuNzE4MjgxOCkKKyAgICAgICAgIyBSZWY6IEFicmFtb3dpdHogJiBTdGVndW4gKERvdmVyLCAxOTY1KQorICAgICAgICBzZWxmLmZ0ZXN0KCdwaScsIG1hdGgucGksIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzKQorICAgICAgICBzZWxmLmZ0ZXN0KCdlJywgbWF0aC5lLCAyLjcxODI4MTgyODQ1OTA0NTIzNTM2MDI4NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLnRhdSwgMiptYXRoLnBpKQogCiAgICAgZGVmIHRlc3RBY29zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGguYWNvcykKQEAgLTIwNSw2ICsyNzIsOCBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdhY29zKDEpJywgbWF0aC5hY29zKDEpLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFjb3MsIElORikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCBOSU5GKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFjb3MsIDEgKyBlcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgLTEgLSBlcHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguYWNvcyhOQU4pKSkKIAogICAgIGRlZiB0ZXN0QWNvc2goc2VsZik6CkBAIC0yMjQsNiArMjkzLDggQEAKICAgICAgICAgc2VsZi5mdGVzdCgnYXNpbigxKScsIG1hdGguYXNpbigxKSwgbWF0aC5waS8yKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFzaW4sIElORikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCBOSU5GKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFzaW4sIDEgKyBlcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgLTEgLSBlcHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguYXNpbihOQU4pKSkKIAogICAgIGRlZiB0ZXN0QXNpbmgoc2VsZik6CkBAIC0zNzgsOSArNDQ5LDkgQEAKIAogICAgIGRlZiB0ZXN0Q29zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGguY29zKQotICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MoLXBpLzIpJywgbWF0aC5jb3MoLW1hdGgucGkvMiksIDApCisgICAgICAgIHNlbGYuZnRlc3QoJ2NvcygtcGkvMiknLCBtYXRoLmNvcygtbWF0aC5waS8yKSwgMCwgYWJzX3RvbD11bHAoMSkpCiAgICAgICAgIHNlbGYuZnRlc3QoJ2NvcygwKScsIG1hdGguY29zKDApLCAxKQotICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MocGkvMiknLCBtYXRoLmNvcyhtYXRoLnBpLzIpLCAwKQorICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MocGkvMiknLCBtYXRoLmNvcyhtYXRoLnBpLzIpLCAwLCBhYnNfdG9sPXVscCgxKSkKICAgICAgICAgc2VsZi5mdGVzdCgnY29zKHBpKScsIG1hdGguY29zKG1hdGgucGkpLCAtMSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5jb3MoSU5GKSkpCkBAIC00MDMsNiArNDc0LDcgQEAKICAgICAgICAgc2VsZi5mdGVzdCgnZGVncmVlcyhwaSknLCBtYXRoLmRlZ3JlZXMobWF0aC5waSksIDE4MC4wKQogICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKHBpLzIpJywgbWF0aC5kZWdyZWVzKG1hdGgucGkvMiksIDkwLjApCiAgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMoLXBpLzQpJywgbWF0aC5kZWdyZWVzKC1tYXRoLnBpLzQpLCAtNDUuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZGVncmVlcygwKScsIG1hdGguZGVncmVlcygwKSwgMCkKIAogICAgIGRlZiB0ZXN0RXhwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGguZXhwKQpAQCAtNDEyLDYgKzQ4NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5leHAoSU5GKSwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguZXhwKE5JTkYpLCAwLikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5leHAoTkFOKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG1hdGguZXhwLCAxMDAwMDAwKQogCiAgICAgZGVmIHRlc3RGYWJzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGguZmFicykKQEAgLTY1NCw2ICs3MjcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguaHlwb3QoSU5GLCBOQU4pLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5oeXBvdChOQU4sIE5JTkYpLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5oeXBvdChOSU5GLCBOQU4pLCBJTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG1hdGguaHlwb3QsIEZMT0FUX01BWCwgRkxPQVRfTUFYKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmh5cG90KDEuMCwgTkFOKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguaHlwb3QoTkFOLCAtMi4wKSkpCiAKQEAgLTcwNyw4ICs3ODEsMTAgQEAKIAogICAgIGRlZiB0ZXN0TG9nMXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5sb2cxcCkKLSAgICAgICAgbj0gMioqOTAKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChtYXRoLmxvZzFwKG4pLCBtYXRoLmxvZzFwKGZsb2F0KG4pKSkKKyAgICAgICAgZm9yIG4gaW4gWzIsIDIqKjkwLCAyKiozMDBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChtYXRoLmxvZzFwKG4pLCBtYXRoLmxvZzFwKGZsb2F0KG4pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5sb2cxcCwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cxcChJTkYpLCBJTkYpCiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdExvZzIoc2VsZik6CkBAIC05MjIsNiArOTk4LDcgQEAKICAgICAgICAgc2VsZi5mdGVzdCgncmFkaWFucygxODApJywgbWF0aC5yYWRpYW5zKDE4MCksIG1hdGgucGkpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoOTApJywgbWF0aC5yYWRpYW5zKDkwKSwgbWF0aC5waS8yKQogICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKC00NSknLCBtYXRoLnJhZGlhbnMoLTQ1KSwgLW1hdGgucGkvNCkKKyAgICAgICAgc2VsZi5mdGVzdCgncmFkaWFucygwKScsIG1hdGgucmFkaWFucygwKSwgMCkKIAogICAgIGRlZiB0ZXN0U2luKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGguc2luKQpAQCAtOTUxLDYgKzEwMjgsNyBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdzcXJ0KDEpJywgbWF0aC5zcXJ0KDEpLCAxKQogICAgICAgICBzZWxmLmZ0ZXN0KCdzcXJ0KDQpJywgbWF0aC5zcXJ0KDQpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguc3FydChJTkYpLCBJTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguc3FydCwgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguc3FydCwgTklORikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5zcXJ0KE5BTikpKQogCkBAIC05NzAsNyArMTA0OCw4IEBACiAgICAgZGVmIHRlc3RUYW5oKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGgudGFuaCkKICAgICAgICAgc2VsZi5mdGVzdCgndGFuaCgwKScsIG1hdGgudGFuaCgwKSwgMCkKLSAgICAgICAgc2VsZi5mdGVzdCgndGFuaCgxKSt0YW5oKC0xKScsIG1hdGgudGFuaCgxKSttYXRoLnRhbmgoLTEpLCAwKQorICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKDEpK3RhbmgoLTEpJywgbWF0aC50YW5oKDEpK21hdGgudGFuaCgtMSksIDAsCisgICAgICAgICAgICAgICAgICAgYWJzX3RvbD11bHAoMSkpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoaW5mKScsIG1hdGgudGFuaChJTkYpLCAxKQogICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKC1pbmYpJywgbWF0aC50YW5oKE5JTkYpLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC50YW5oKE5BTikpKQpAQCAtMTAyMCw3ICsxMDk5LDggQEAKIAogICAgIGRlZiB0ZXN0SXNuYW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGZsb2F0KCJuYW4iKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGZsb2F0KCJpbmYiKSogMC4pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgiLW5hbiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoImluZiIpICogMC4pKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGguaXNuYW4oZmxvYXQoImluZiIpKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRoLmlzbmFuKDAuKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRoLmlzbmFuKDEuKSkKQEAgLTEwODQsMzAgKzExNjQsNjQgQEAKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X3Rlc3RmaWxlKHNlbGYpOgorICAgICAgICAjIFNvbWUgdGVzdHMgbmVlZCB0byBiZSBza2lwcGVkIG9uIGFuY2llbnQgT1MgWCB2ZXJzaW9ucy4KKyAgICAgICAgIyBTZWUgaXNzdWUgIzI3OTUzLgorICAgICAgICBTS0lQX09OX1RJR0VSID0geyd0YW4wMDY0J30KKworICAgICAgICBvc3hfdmVyc2lvbiA9IE5vbmUKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgdmVyc2lvbl90eHQgPSBwbGF0Zm9ybS5tYWNfdmVyKClbMF0KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvc3hfdmVyc2lvbiA9IHR1cGxlKG1hcChpbnQsIHZlcnNpb25fdHh0LnNwbGl0KCcuJykpKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZhaWxfZm10ID0gInt9OiB7fSh7IXJ9KToge30iCisKKyAgICAgICAgZmFpbHVyZXMgPSBbXQogICAgICAgICBmb3IgaWQsIGZuLCBhciwgYWksIGVyLCBlaSwgZmxhZ3MgaW4gcGFyc2VfdGVzdGZpbGUodGVzdF9maWxlKToKLSAgICAgICAgICAgICMgU2tpcCBpZiBlaXRoZXIgdGhlIGlucHV0IG9yIHJlc3VsdCBpcyBjb21wbGV4LCBvciBpZgotICAgICAgICAgICAgIyBmbGFncyBpcyBub25lbXB0eQotICAgICAgICAgICAgaWYgYWkgIT0gMC4gb3IgZWkgIT0gMC4gb3IgZmxhZ3M6CisgICAgICAgICAgICAjIFNraXAgaWYgZWl0aGVyIHRoZSBpbnB1dCBvciByZXN1bHQgaXMgY29tcGxleAorICAgICAgICAgICAgaWYgYWkgIT0gMC4wIG9yIGVpICE9IDAuMDoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgZm4gaW4gWydyZWN0JywgJ3BvbGFyJ106CiAgICAgICAgICAgICAgICAgIyBubyByZWFsIHZlcnNpb25zIG9mIHJlY3QsIHBvbGFyCiAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgU2tpcCBjZXJ0YWluIHRlc3RzIG9uIE9TIFggMTAuNC4KKyAgICAgICAgICAgIGlmIG9zeF92ZXJzaW9uIGlzIG5vdCBOb25lIGFuZCBvc3hfdmVyc2lvbiA8ICgxMCwgNSk6CisgICAgICAgICAgICAgICAgaWYgaWQgaW4gU0tJUF9PTl9USUdFUjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKwogICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIobWF0aCwgZm4pCisKKyAgICAgICAgICAgIGlmICdpbnZhbGlkJyBpbiBmbGFncyBvciAnZGl2aWRlLWJ5LXplcm8nIGluIGZsYWdzOgorICAgICAgICAgICAgICAgIGVyID0gJ1ZhbHVlRXJyb3InCisgICAgICAgICAgICBlbGlmICdvdmVyZmxvdycgaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgZXIgPSAnT3ZlcmZsb3dFcnJvcicKKwogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMoYXIpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICgoIlVuZXhwZWN0ZWQgVmFsdWVFcnJvcjogJXNcbiAgICAgICAgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gdGVzdCAlczolcyglcilcbiIpICUgKGV4Yy5hcmdzWzBdLCBpZCwgZm4sIGFyKSkKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwobWVzc2FnZSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9ICdWYWx1ZUVycm9yJwogICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICgiVW5leHBlY3RlZCBPdmVyZmxvd0Vycm9yIGluICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgJXM6JXMoJXIpXG4iICUgKGlkLCBmbiwgYXIpKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbChtZXNzYWdlKQotICAgICAgICAgICAgc2VsZi5mdGVzdCgiJXM6JXMoJXIpIiAlIChpZCwgZm4sIGFyKSwgcmVzdWx0LCBlcikKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAnT3ZlcmZsb3dFcnJvcicKKworICAgICAgICAgICAgIyBEZWZhdWx0IHRvbGVyYW5jZXMKKyAgICAgICAgICAgIHVscF90b2wsIGFic190b2wgPSA1LCAwLjAKKworICAgICAgICAgICAgZmFpbHVyZSA9IHJlc3VsdF9jaGVjayhlciwgcmVzdWx0LCB1bHBfdG9sLCBhYnNfdG9sKQorICAgICAgICAgICAgaWYgZmFpbHVyZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIG1zZyA9IGZhaWxfZm10LmZvcm1hdChpZCwgZm4sIGFyLCBmYWlsdXJlKQorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKG1zZykKKworICAgICAgICBpZiBmYWlsdXJlczoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnRmFpbHVyZXMgaW4gdGVzdF90ZXN0ZmlsZTpcbiAgJyArCisgICAgICAgICAgICAgICAgICAgICAgJ1xuICAnLmpvaW4oZmFpbHVyZXMpKQogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RfbXRlc3RmaWxlKHNlbGYpOgotICAgICAgICBmYWlsX2ZtdCA9ICJ7fTp7fSh7IXJ9KTogZXhwZWN0ZWQgeyFyfSwgZ290IHshcn0iCisgICAgICAgIGZhaWxfZm10ID0gInt9OiB7fSh7IXJ9KToge30iCiAKICAgICAgICAgZmFpbHVyZXMgPSBbXQogICAgICAgICBmb3IgaWQsIGZuLCBhcmcsIGV4cGVjdGVkLCBmbGFncyBpbiBwYXJzZV9tdGVzdGZpbGUobWF0aF90ZXN0Y2FzZXMpOgpAQCAtMTEyNSw0MSArMTIzOSw0OCBAQAogICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CiAgICAgICAgICAgICAgICAgZ290ID0gJ092ZXJmbG93RXJyb3InCiAKLSAgICAgICAgICAgIGFjY3VyYWN5X2ZhaWx1cmUgPSBOb25lCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGdvdCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGV4cGVjdGVkLCBmbG9hdCk6Ci0gICAgICAgICAgICAgICAgaWYgbWF0aC5pc25hbihleHBlY3RlZCkgYW5kIG1hdGguaXNuYW4oZ290KToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBub3QgbWF0aC5pc25hbihleHBlY3RlZCkgYW5kIG5vdCBtYXRoLmlzbmFuKGdvdCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGZuID09ICdsZ2FtbWEnOgotICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSB1c2UgYSB3ZWFrZXIgYWNjdXJhY3kgdGVzdCBmb3IgbGdhbW1hOwotICAgICAgICAgICAgICAgICAgICAgICAgIyBsZ2FtbWEgb25seSBhY2hpZXZlcyBhbiBhYnNvbHV0ZSBlcnJvciBvZgotICAgICAgICAgICAgICAgICAgICAgICAgIyBhIGZldyBtdWx0aXBsZXMgb2YgdGhlIG1hY2hpbmUgYWNjdXJhY3ksIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGdlbmVyYWwuCi0gICAgICAgICAgICAgICAgICAgICAgICBhY2N1cmFjeV9mYWlsdXJlID0gYWNjX2NoZWNrKGV4cGVjdGVkLCBnb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbF9lcnIgPSA1ZS0xNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzX2VyciA9IDVlLTE1KQotICAgICAgICAgICAgICAgICAgICBlbGlmIGZuID09ICdlcmZjJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZXJmYyBoYXMgbGVzcy10aGFuLWlkZWFsIGFjY3VyYWN5IGZvciBsYXJnZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBhcmd1bWVudHMgKHggfiAyNSBvciBzbyksIG1haW5seSBkdWUgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGVycm9yIGludm9sdmVkIGluIGNvbXB1dGluZyBleHAoLXgqeCkuCi0gICAgICAgICAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFhYWCBXb3VsZCBiZSBiZXR0ZXIgdG8gd2Vha2VuIHRoaXMgdGVzdCBvbmx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGZvciBsYXJnZSB4LCBpbnN0ZWFkIG9mIGZvciBhbGwgeC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5X2ZhaWx1cmUgPSB1bHBzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIDIwMDApCisgICAgICAgICAgICAjIERlZmF1bHQgdG9sZXJhbmNlcworICAgICAgICAgICAgdWxwX3RvbCwgYWJzX3RvbCA9IDUsIDAuMAogCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhY2N1cmFjeV9mYWlsdXJlID0gdWxwc19jaGVjayhleHBlY3RlZCwgZ290LCAyMCkKLSAgICAgICAgICAgICAgICAgICAgaWYgYWNjdXJhY3lfZmFpbHVyZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgRXhjZXB0aW9ucyB0byB0aGUgZGVmYXVsdHMKKyAgICAgICAgICAgIGlmIGZuID09ICdnYW1tYSc6CisgICAgICAgICAgICAgICAgIyBFeHBlcmltZW50YWwgcmVzdWx0cyBvbiBvbmUgcGxhdGZvcm0gZ2F2ZQorICAgICAgICAgICAgICAgICMgYW4gYWNjdXJhY3kgb2YgPD0gMTAgdWxwcyBhY3Jvc3MgdGhlIGVudGlyZSBmbG9hdAorICAgICAgICAgICAgICAgICMgZG9tYWluLiBXZSB3ZWFrZW4gdGhhdCB0byByZXF1aXJlIDIwIHVscCBhY2N1cmFjeS4KKyAgICAgICAgICAgICAgICB1bHBfdG9sID0gMjAKIAotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShnb3QsIHN0cikgYW5kIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIHN0cik6Ci0gICAgICAgICAgICAgICAgaWYgZ290ID09IGV4cGVjdGVkOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxpZiBmbiA9PSAnbGdhbW1hJzoKKyAgICAgICAgICAgICAgICAjIHdlIHVzZSBhIHdlYWtlciBhY2N1cmFjeSB0ZXN0IGZvciBsZ2FtbWE7CisgICAgICAgICAgICAgICAgIyBsZ2FtbWEgb25seSBhY2hpZXZlcyBhbiBhYnNvbHV0ZSBlcnJvciBvZgorICAgICAgICAgICAgICAgICMgYSBmZXcgbXVsdGlwbGVzIG9mIHRoZSBtYWNoaW5lIGFjY3VyYWN5LCBpbgorICAgICAgICAgICAgICAgICMgZ2VuZXJhbC4KKyAgICAgICAgICAgICAgICBhYnNfdG9sID0gMWUtMTUKIAotICAgICAgICAgICAgZmFpbF9tc2cgPSBmYWlsX2ZtdC5mb3JtYXQoaWQsIGZuLCBhcmcsIGV4cGVjdGVkLCBnb3QpCi0gICAgICAgICAgICBpZiBhY2N1cmFjeV9mYWlsdXJlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGZhaWxfbXNnICs9ICcgKHt9KScuZm9ybWF0KGFjY3VyYWN5X2ZhaWx1cmUpCi0gICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQoZmFpbF9tc2cpCisgICAgICAgICAgICBlbGlmIGZuID09ICdlcmZjJyBhbmQgYXJnID49IDAuMDoKKyAgICAgICAgICAgICAgICAjIGVyZmMgaGFzIGxlc3MtdGhhbi1pZGVhbCBhY2N1cmFjeSBmb3IgbGFyZ2UKKyAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cyAoeCB+IDI1IG9yIHNvKSwgbWFpbmx5IGR1ZSB0byB0aGUKKyAgICAgICAgICAgICAgICAjIGVycm9yIGludm9sdmVkIGluIGNvbXB1dGluZyBleHAoLXgqeCkuCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgT2JzZXJ2ZWQgYmV0d2VlbiBDUHl0aG9uIGFuZCBtcG1hdGggYXQgMjUgZHA6CisgICAgICAgICAgICAgICAgIyAgICAgICB4IDwgIDAgOiBlcnIgPD0gMiB1bHAKKyAgICAgICAgICAgICAgICAjICAwIDw9IHggPCAgMSA6IGVyciA8PSAxMCB1bHAKKyAgICAgICAgICAgICAgICAjICAxIDw9IHggPCAxMCA6IGVyciA8PSAxMDAgdWxwCisgICAgICAgICAgICAgICAgIyAxMCA8PSB4IDwgMjAgOiBlcnIgPD0gMzAwIHVscAorICAgICAgICAgICAgICAgICMgMjAgPD0geCAgICAgIDogPCA2MDAgdWxwCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgIGlmIGFyZyA8IDEuMDoKKyAgICAgICAgICAgICAgICAgICAgdWxwX3RvbCA9IDEwCisgICAgICAgICAgICAgICAgZWxpZiBhcmcgPCAxMC4wOgorICAgICAgICAgICAgICAgICAgICB1bHBfdG9sID0gMTAwCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdWxwX3RvbCA9IDEwMDAKKworICAgICAgICAgICAgZmFpbHVyZSA9IHJlc3VsdF9jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sLCBhYnNfdG9sKQorICAgICAgICAgICAgaWYgZmFpbHVyZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIG1zZyA9IGZhaWxfZm10LmZvcm1hdChpZCwgZm4sIGFyZywgZmFpbHVyZSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChtc2cpCiAKICAgICAgICAgaWYgZmFpbHVyZXM6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ0ZhaWx1cmVzIGluIHRlc3RfbXRlc3RmaWxlOlxuICAnICsKQEAgLTEyNzIsNyArMTM5Myw4IEBACiAKICAgICAgICAgZGVjaW1hbF9leGFtcGxlcyA9IFsoRGVjaW1hbCgnMS4wMDAwMDAwMScpLCBEZWNpbWFsKCcxLjAnKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlLTIwJyksIERlY2ltYWwoJzEuMGUtMjAnKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlLTEwMCcpLCBEZWNpbWFsKCcxLjBlLTEwMCcpKV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUtMTAwJyksIERlY2ltYWwoJzEuMGUtMTAwJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZTIwJyksIERlY2ltYWwoJzEuMGUyMCcpKV0KICAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShkZWNpbWFsX2V4YW1wbGVzLCByZWxfdG9sPTFlLTgpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoZGVjaW1hbF9leGFtcGxlcywgcmVsX3RvbD0xZS05KQogCkBAIC0xMjgwLDggKzE0MDIsMTAgQEAKICAgICAgICAgIyB0ZXN0IHdpdGggRnJhY3Rpb24gdmFsdWVzCiAgICAgICAgIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgogCi0gICAgICAgICMgY291bGQgdXNlIHNvbWUgbW9yZSBleGFtcGxlcyBoZXJlIQotICAgICAgICBmcmFjdGlvbl9leGFtcGxlcyA9IFsoRnJhY3Rpb24oMSwgMTAwMDAwMDAwKSArIDEsIEZyYWN0aW9uKDEpKV0KKyAgICAgICAgZnJhY3Rpb25fZXhhbXBsZXMgPSBbCisgICAgICAgICAgICAoRnJhY3Rpb24oMSwgMTAwMDAwMDAwKSArIDEsIEZyYWN0aW9uKDEpKSwKKyAgICAgICAgICAgIChGcmFjdGlvbigxMDAwMDAwMDEpLCBGcmFjdGlvbigxMDAwMDAwMDApKSwKKyAgICAgICAgICAgIChGcmFjdGlvbigxMCoqOCArIDEsIDEwKioyOCksIEZyYWN0aW9uKDEsIDEwKioyMCkpXQogICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGZyYWN0aW9uX2V4YW1wbGVzLCByZWxfdG9sPTFlLTgpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoZnJhY3Rpb25fZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weQppbmRleCA2ODU2NTkzLi40ZTJjOTA4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weQpAQCAtMTAxLDUgKzEwMSwxMSBAQAogICAgICAgICBlcShzZWxmLmRiLmd1ZXNzX3R5cGUoImltYWdlLmpwZyIpLCAoImltYWdlL2pwZWciLCBOb25lKSkKICAgICAgICAgZXEoc2VsZi5kYi5ndWVzc190eXBlKCJpbWFnZS5wbmciKSwgKCJpbWFnZS9wbmciLCBOb25lKSkKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgbWltZXR5cGVzKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21tYXAucHkgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKaW5kZXggZjNmNzBjYy4uNTZkODVlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQpAQCAtNzEzLDYgKzcxMywxMyBAQAogICAgICAgICBnY19jb2xsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfcmV0dXJuaW5nX3RoZV9udW1iZXJfb2ZfYnl0ZXNfd3JpdHRlbihzZWxmKToKKyAgICAgICAgbW0gPSBtbWFwLm1tYXAoLTEsIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1tLndyaXRlKGIiIiksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW0ud3JpdGUoYiJ4IiksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW0ud3JpdGUoYiJ5eiIpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1tLndyaXRlKGIicHl0aG9uIiksIDYpCisKICAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywgJ2Nhbm5vdCByZXNpemUgYW5vbnltb3VzIG1tYXBzIG9uIFdpbmRvd3MnKQogICAgIGRlZiB0ZXN0X3Jlc2l6ZV9wYXN0X3BvcyhzZWxmKToKICAgICAgICAgbSA9IG1tYXAubW1hcCgtMSwgODE5MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9tc2lsaWIucHkKaW5kZXggOGVmMzM0Zi4uZjY1NmY3MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tc2lsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tc2lsaWIucHkKQEAgLTEsNiArMSw1IEBACiAiIiIgVGVzdCBzdWl0ZSBmb3IgdGhlIGNvZGUgaW4gbXNpbGliICIiIgogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfbW9kdWxlCiBtc2lsaWIgPSBpbXBvcnRfbW9kdWxlKCdtc2lsaWInKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQppbmRleCA4ZDdhMjEzLi4wMWExY2QzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKQEAgLTUsNyArNSw3IEBACiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTgotaW1wb3J0IHVuaXR0ZXN0LCBpbywgY29kZWNzLCBzeXMsIG9zCitpbXBvcnQgdW5pdHRlc3QsIGlvLCBjb2RlY3MsIHN5cwogaW1wb3J0IF9tdWx0aWJ5dGVjb2RlYwogCiBBTExfQ0pLRU5DT0RJTkdTID0gWwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yay5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkKaW5kZXggMmJmNGU3NS4uOWYyMjUwMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yay5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5CkBAIC0xLDYgKzEsMTIgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nCiAKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitpZiBzdXBwb3J0LlBHTzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBpcyBub3QgaGVscGZ1bCBmb3IgUEdPIikKKworCiB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZy5pbnN0YWxsX3Rlc3RzX2luX21vZHVsZV9kaWN0KGdsb2JhbHMoKSwgJ2ZvcmsnKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9ya3NlcnZlci5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkKaW5kZXggMTkzYTA0YS4uNDA3YmIzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9ya3NlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5CkBAIC0xLDYgKzEsMTEgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nCiAKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitpZiBzdXBwb3J0LlBHTzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBpcyBub3QgaGVscGZ1bCBmb3IgUEdPIikKKwogdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcuaW5zdGFsbF90ZXN0c19pbl9tb2R1bGVfZGljdChnbG9iYWxzKCksICdmb3Jrc2VydmVyJykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CmluZGV4IDUyMjczZWEuLjMyNTkzZGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQpAQCAtNiw3ICs2LDYgQEAKIAogaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKLWltcG9ydCB6aXBpbXBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCkBAIC0xNSw3ICsxNCwxMCBAQAogCiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCAoCiAgICAgbWFrZV9wa2csIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9wa2csIG1ha2VfemlwX3NjcmlwdCwKLSAgICBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUsIHNwYXduX3B5dGhvbiwga2lsbF9weXRob24pCisgICAgYXNzZXJ0X3B5dGhvbl9vaykKKworaWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCiAKICMgTG9vayB1cCB3aGljaCBzdGFydCBtZXRob2RzIGFyZSBhdmFpbGFibGUgdG8gdGVzdAogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3bi5weQppbmRleCAzMzRhZTllLi42NTU4OTUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3bi5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3bi5weQpAQCAtMSw2ICsxLDExIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZwogCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworaWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLmluc3RhbGxfdGVzdHNfaW5fbW9kdWxlX2RpY3QoZ2xvYmFscygpLCAnc3Bhd24nKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9uaXMucHkgYi9MaWIvdGVzdC90ZXN0X25pcy5weQppbmRleCAzODdhNGU3Li4yMTA3NGM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25pcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X25pcy5weQpAQCAtMSw2ICsxLDUgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCiAKICMgU2tpcCB0ZXN0IGlmIG5pcyBtb2R1bGUgZG9lcyBub3QgZXhpc3QuCiBuaXMgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ25pcycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKaW5kZXggMmVmNmQwMi4uZmVhYmEzYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQpAQCAtMTU0Miw4ICsxNTQyLDEwIEBACiAgICAgICAgICAgICAgICAgZWxpZiBjbWQgPT0gYidTVEFSVFRMU1xyXG4nOgogICAgICAgICAgICAgICAgICAgICByZWFkZXIuY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICBjbGllbnQuc2VuZGFsbChiJzM4MiBCZWdpbiBUTFMgbmVnb3RpYXRpb24gbm93XHJcbicpCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudCA9IHNzbC53cmFwX3NvY2tldCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCwgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9Y2VydGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlKQorICAgICAgICAgICAgICAgICAgICBjbGllbnQgPSBjb250ZXh0LndyYXBfc29ja2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICAgICAgICAgICAgICBjbGVhbnVwLmVudGVyX2NvbnRleHQoY2xpZW50KQogICAgICAgICAgICAgICAgICAgICByZWFkZXIgPSBjbGVhbnVwLmVudGVyX2NvbnRleHQoY2xpZW50Lm1ha2VmaWxlKCdyYicpKQogICAgICAgICAgICAgICAgIGVsaWYgY21kID09IGInUVVJVFxyXG4nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5IGIvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CmluZGV4IDMwZmE2MTIuLjViNTkwZTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKQEAgLTMsNyArMyw2IEBACiAKIGZyb20gaHR0cC5jbGllbnQgaW1wb3J0IEhUVFBFeGNlcHRpb24KIGltcG9ydCBzeXMKLWltcG9ydCBvcwogZnJvbSB1bmljb2RlZGF0YSBpbXBvcnQgbm9ybWFsaXplLCB1bmlkYXRhX3ZlcnNpb24KIAogVEVTVERBVEFGSUxFID0gIk5vcm1hbGl6YXRpb25UZXN0LnR4dCIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKaW5kZXggNTgwZjIwMy4uOTBlZGI2ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKQEAgLTQ1Miw1ICs0NTIsODggQEAKICAgICBhdHRyaWJ1dGVzID0gWydyZWxwYXRoJywgJ3NwbGl0dW5jJ10KIAogCitjbGFzcyBQYXRoTGlrZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHBhdGggPSBudHBhdGgKKworICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD0nJyk6CisgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhdGgsIEJhc2VFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYucGF0aAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZV9uYW1lID0gc3VwcG9ydC5URVNURk4ubG93ZXIoKQorICAgICAgICBzZWxmLmZpbGVfcGF0aCA9IHNlbGYuUGF0aExpa2Uoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc2VsZi5maWxlX25hbWUpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVfbmFtZSwgJ3hiJywgMCkgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGUud3JpdGUoYiJ0ZXN0X250cGF0aC5QYXRoTGlrZVRlc3RzIikKKworICAgIGRlZiBhc3NlcnRQYXRoRXF1YWwoc2VsZiwgZnVuYyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyhzZWxmLmZpbGVfcGF0aCksIGZ1bmMoc2VsZi5maWxlX25hbWUpKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtY2FzZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1jYXNlKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2FicyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzYWJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9qb2luKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aC5qb2luKCdhJywgc2VsZi5QYXRoTGlrZSgnYicpLCAnYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0aC5qb2luKCdhJywgJ2InLCAnYycpKQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0KQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZXh0KQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdGRyaXZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXRkcml2ZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfYmFzZW5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5iYXNlbmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZGlybmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmRpcm5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzbGluayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzbGluaykKKworICAgIGRlZiB0ZXN0X3BhdGhfbGV4aXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmxleGlzdHMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzbW91bnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc21vdW50KQorCisgICAgZGVmIHRlc3RfcGF0aF9leHBhbmR1c2VyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZXhwYW5kdXNlcikKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdmFycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHZhcnMpCisKKyAgICBkZWYgdGVzdF9wYXRoX25vcm1wYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubm9ybXBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Fic3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5hYnNwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9yZWFscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlYWxwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9yZWxwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgucmVscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfY29tbW9ucGF0aChzZWxmKToKKyAgICAgICAgY29tbW9uX3BhdGggPSBzZWxmLnBhdGguY29tbW9ucGF0aChbc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9uYW1lXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb25fcGF0aCwgc2VsZi5maWxlX25hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzZGlyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNkaXIpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weSBiL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQppbmRleCA2ZWY5M2Q5Li42ODA2YzYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CkBAIC0xLDYgKzEsNyBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gcGFydCAyLCBvcGNvZGVzCiAKIGltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBhbm5fbW9kdWxlCiAKIGNsYXNzIE9wY29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yMCw2ICsyMSwzMiBAQAogICAgICAgICBpZiBuICE9IDkwOgogICAgICAgICAgICAgc2VsZi5mYWlsKCd0cnkgaW5zaWRlIGZvcicpCiAKKyAgICBkZWYgdGVzdF9zZXR1cF9hbm5vdGF0aW9uc19saW5lKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgU0VUVVBfQU5OT1RBVElPTlMgZG9lcyBub3QgY3JlYXRlIHNwdXJpb3VzIGxpbmUgbnVtYmVycworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oYW5uX21vZHVsZS5fX2ZpbGVfXykgYXMgZjoKKyAgICAgICAgICAgICAgICB0eHQgPSBmLnJlYWQoKQorICAgICAgICAgICAgY28gPSBjb21waWxlKHR4dCwgYW5uX21vZHVsZS5fX2ZpbGVfXywgJ2V4ZWMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjby5jb19maXJzdGxpbmVubywgNikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9ub19hbm5vdGF0aW9uc19pZl9ub3RfbmVlZGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBDOiBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgQy5fX2Fubm90YXRpb25zX18KKworICAgIGRlZiB0ZXN0X3VzZV9leGlzdGluZ19hbm5vdGF0aW9ucyhzZWxmKToKKyAgICAgICAgbnMgPSB7J19fYW5ub3RhdGlvbnNfXyc6IHsxOiAyfX0KKyAgICAgICAgZXhlYygneDogaW50JywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ19fYW5ub3RhdGlvbnNfXyddLCB7J3gnOiBpbnQsIDE6IDJ9KQorCisgICAgZGVmIHRlc3RfZG9fbm90X3JlY3JlYXRlX2Fubm90YXRpb25zKHNlbGYpOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVsIF9fYW5ub3RhdGlvbnNfXworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgICAgIHg6IGludAorCiAgICAgZGVmIHRlc3RfcmFpc2VfY2xhc3NfZXhjZXB0aW9ucyhzZWxmKToKIAogICAgICAgICBjbGFzcyBBQ2xhc3MoRXhjZXB0aW9uKTogcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKaW5kZXggYjViYTk3Ni4uNjI1NDA5MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CkBAIC0xMjAsNjMgKzEyMCw2MyBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYWRkKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmFkZCgzLCA0KSA9PSA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmFkZCgzLCA0KSwgNykKIAogICAgIGRlZiB0ZXN0X2JpdHdpc2VfYW5kKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYW5kXykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hbmRfLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuYW5kXygweGYsIDB4YSkgPT0gMHhhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmFuZF8oMHhmLCAweGEpLCAweGEpCiAKICAgICBkZWYgdGVzdF9jb25jYXQoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb25jYXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY29uY2F0LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY29uY2F0KCdweScsICd0aG9uJykgPT0gJ3B5dGhvbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoWzEsIDJdLCBbMywgNF0pID09IFsxLCAyLCAzLCA0XSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdChTZXExKFs1LCA2XSksIFNlcTEoWzddKSkgPT0gWzUsIDYsIDddKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY29uY2F0KFNlcTIoWzUsIDZdKSwgU2VxMihbN10pKSA9PSBbNSwgNiwgN10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY29uY2F0KCdweScsICd0aG9uJyksICdweXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdChbMSwgMl0sIFszLCA0XSksIFsxLCAyLCAzLCA0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoU2VxMShbNSwgNl0pLCBTZXExKFs3XSkpLCBbNSwgNiwgN10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY29uY2F0KFNlcTIoWzUsIDZdKSwgU2VxMihbN10pKSwgWzUsIDYsIDddKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvbmNhdCwgMTMsIDI5KQogCiAgICAgZGVmIHRlc3RfY291bnRPZihzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvdW50T2YpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY291bnRPZiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCAzKSA9PSAxKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY291bnRPZihbMSwgMiwgMSwgMywgMSwgNF0sIDUpID09IDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY291bnRPZihbMSwgMiwgMSwgMywgMSwgNF0sIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCA1KSwgMCkKIAogICAgIGRlZiB0ZXN0X2RlbGl0ZW0oc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgYSA9IFs0LCAzLCAyLCAxXQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmRlbGl0ZW0sIGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZGVsaXRlbSwgYSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmRlbGl0ZW0oYSwgMSkgaXMgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgPT0gWzQsIDIsIDFdKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcGVyYXRvci5kZWxpdGVtKGEsIDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIFs0LCAyLCAxXSkKIAogICAgIGRlZiB0ZXN0X2Zsb29yZGl2KHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZmxvb3JkaXYsIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZmxvb3JkaXYsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5mbG9vcmRpdig1LCAyKSA9PSAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmZsb29yZGl2KDUsIDIpLCAyKQogCiAgICAgZGVmIHRlc3RfdHJ1ZWRpdihzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnRydWVkaXYsIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IudHJ1ZWRpdiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnRydWVkaXYoNSwgMikgPT0gMi41KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnRydWVkaXYoNSwgMiksIDIuNSkKIAogICAgIGRlZiB0ZXN0X2dldGl0ZW0oc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgYSA9IHJhbmdlKDEwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmdldGl0ZW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZ2V0aXRlbSwgYSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmdldGl0ZW0oYSwgMikgPT0gMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5nZXRpdGVtKGEsIDIpLCAyKQogCiAgICAgZGVmIHRlc3RfaW5kZXhPZihzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmluZGV4T2YpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuaW5kZXhPZiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmluZGV4T2YoWzQsIDMsIDIsIDFdLCAzKSA9PSAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmluZGV4T2YoWzQsIDMsIDIsIDFdLCAzKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlcmF0b3IuaW5kZXhPZiwgWzQsIDMsIDIsIDFdLCAwKQogCiAgICAgZGVmIHRlc3RfaW52ZXJ0KHNlbGYpOgpAQCAtMTg5LDIxICsxODksMjEgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmxzaGlmdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5sc2hpZnQsIE5vbmUsIDQyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubHNoaWZ0KDUsIDEpID09IDEwKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubHNoaWZ0KDUsIDApID09IDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubHNoaWZ0KDUsIDEpLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5sc2hpZnQoNSwgMCksIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZXJhdG9yLmxzaGlmdCwgMiwgLTEpCiAKICAgICBkZWYgdGVzdF9tb2Qoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tb2QpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubW9kLCBOb25lLCA0MikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLm1vZCg1LCAyKSA9PSAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm1vZCg1LCAyKSwgMSkKIAogICAgIGRlZiB0ZXN0X211bChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm11bCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tdWwsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5tdWwoNSwgMikgPT0gMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubXVsKDUsIDIpLCAxMCkKIAogICAgIGRlZiB0ZXN0X21hdG11bChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpAQCAtMjI3LDcgKzIyNyw3IEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5vcl8pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iub3JfLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3Iub3JfKDB4YSwgMHg1KSA9PSAweGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3Iub3JfKDB4YSwgMHg1KSwgMHhmKQogCiAgICAgZGVmIHRlc3RfcG9zKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCkBAIC0yNTAsOCArMjUwLDggQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnJzaGlmdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5yc2hpZnQsIE5vbmUsIDQyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IucnNoaWZ0KDUsIDEpID09IDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5yc2hpZnQoNSwgMCkgPT0gNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5yc2hpZnQoNSwgMSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IucnNoaWZ0KDUsIDApLCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVyYXRvci5yc2hpZnQsIDIsIC0xKQogCiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CkBAIC0yNjYsMTUgKzI2NiwxNSBAQAogICAgICAgICBhID0gbGlzdChyYW5nZSgzKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5zZXRpdGVtLCBhKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnNldGl0ZW0sIGEsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5zZXRpdGVtKGEsIDAsIDIpIGlzIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhID09IFsyLCAxLCAyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3BlcmF0b3Iuc2V0aXRlbShhLCAwLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBbMiwgMSwgMl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG9wZXJhdG9yLnNldGl0ZW0sIGEsIDQsIDIpCiAKICAgICBkZWYgdGVzdF9zdWIoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5zdWIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc3ViLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3Iuc3ViKDUsIDIpID09IDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3Iuc3ViKDUsIDIpLCAzKQogCiAgICAgZGVmIHRlc3RfdHJ1dGgoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKQEAgLTI5Miw3ICsyOTIsNyBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IueG9yKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnhvciwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnhvcigweGIsIDB4YykgPT0gMHg3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnhvcigweGIsIDB4YyksIDB4NykKIAogICAgIGRlZiB0ZXN0X2lzKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQppbmRleCA3NjIxYzI0Li45MWEwMzE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKQEAgLTE2LDYgKzE2LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKK2ltcG9ydCBvcHRwYXJzZQogZnJvbSBvcHRwYXJzZSBpbXBvcnQgbWFrZV9vcHRpb24sIE9wdGlvbiwgXAogICAgICBUaXRsZWRIZWxwRm9ybWF0dGVyLCBPcHRpb25QYXJzZXIsIE9wdGlvbkdyb3VwLCBcCiAgICAgIFNVUFBSRVNTX1VTQUdFLCBPcHRpb25FcnJvciwgT3B0aW9uQ29uZmxpY3RFcnJvciwgXApAQCAtMTY1MCw2ICsxNjUxLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb24gLWw6IGludmFsaWQgaW50ZWdlciB2YWx1ZTogJzB4MTJ4JyIpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnY2hlY2tfYnVpbHRpbicsICdBbWJpZ3VvdXNPcHRpb25FcnJvcicsICdOT19ERUZBVUxUJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgb3B0cGFyc2UsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weSBiL0xpYi90ZXN0L3Rlc3Rfb3JkZXJlZF9kaWN0LnB5CmluZGV4IDkwMWQ0YjIuLmEzNWVkMTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3JkZXJlZF9kaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3JkZXJlZF9kaWN0LnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGNvcHkKIGltcG9ydCBnYwpAQCAtOTcsNiArOTgsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPcmRlcmVkRGljdCgpLnVwZGF0ZSwgKCksICgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0LnVwZGF0ZSkKIAorICAgIGRlZiB0ZXN0X2luaXRfY2FsbHMoc2VsZik6CisgICAgICAgIGNhbGxzID0gW10KKyAgICAgICAgY2xhc3MgU3BhbToKKyAgICAgICAgICAgIGRlZiBrZXlzKHNlbGYpOgorICAgICAgICAgICAgICAgIGNhbGxzLmFwcGVuZCgna2V5cycpCisgICAgICAgICAgICAgICAgcmV0dXJuICgpCisgICAgICAgICAgICBkZWYgaXRlbXMoc2VsZik6CisgICAgICAgICAgICAgICAgY2FsbHMuYXBwZW5kKCdpdGVtcycpCisgICAgICAgICAgICAgICAgcmV0dXJuICgpCisKKyAgICAgICAgc2VsZi5PcmRlcmVkRGljdChTcGFtKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbHMsIFsna2V5cyddKQorCiAgICAgZGVmIHRlc3RfZnJvbWtleXMoc2VsZik6CiAgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmMnKQpAQCAtMjk4LDkgKzMxMiwxMSBAQAogICAgICAgICAjIGRvIG5vdCBzYXZlIGluc3RhbmNlIGRpY3Rpb25hcnkgaWYgbm90IG5lZWRlZAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uob2QuX19kaWN0X18sIGRpY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9kLl9fcmVkdWNlX18oKVsyXSkKICAgICAgICAgb2QueCA9IDEwCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKG9kLl9fcmVkdWNlX18oKVsyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZC5fX2RpY3RfX1sneCddLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZC5fX3JlZHVjZV9fKClbMl0sIHsneCc6IDEwfSkKIAogICAgIGRlZiB0ZXN0X3BpY2tsZV9yZWN1cnNpdmUoc2VsZik6CiAgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdApAQCAtNDAzLDYgKzQxOSwxNCBAQAogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCoqZCkKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHN5cy5nZXRzaXplb2Yob2QpLCBzeXMuZ2V0c2l6ZW9mKGQpKQogCisgICAgZGVmIHRlc3Rfdmlld3Moc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAorICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjQyODYKKyAgICAgICAgcyA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cgeWVzdGVyZGF5IGJlZm9yZSBkYXduJy5zcGxpdCgpCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMocykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZC5rZXlzKCksIGRpY3Qob2QpLmtleXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZC5pdGVtcygpLCBkaWN0KG9kKS5pdGVtcygpKQorCiAgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfdXBkYXRlKHNlbGYpOgogICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKICAgICAgICAgIyBWZXJpZnkgdGhhdCBzdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB1cGRhdGUoKSB3aXRob3V0IGJyZWFraW5nIF9faW5pdF9fKCkKQEAgLTYxMSw2ICs2MzUsMjUgQEAKICAgICBPcmRlcmVkRGljdCA9IHB5X2NvbGwuT3JkZXJlZERpY3QKIAogCitjbGFzcyBDUHl0aG9uQnVpbHRpbkRpY3RUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQnVpbHRpbiBkaWN0IHByZXNlcnZlcyBpbnNlcnRpb24gb3JkZXIuCisKKyAgICBSZXVzZSBzb21lIG9mIHRlc3RzIGluIE9yZGVyZWREaWN0IHNlbGVjdGl2ZWx5LgorICAgICIiIgorCisgICAgbW9kdWxlID0gYnVpbHRpbnMKKyAgICBPcmRlcmVkRGljdCA9IGRpY3QKKworZm9yIG1ldGhvZCBpbiAoCisgICAgInRlc3RfaW5pdCB0ZXN0X3VwZGF0ZSB0ZXN0X2FiYyB0ZXN0X2NsZWFyIHRlc3RfZGVsaXRlbSAiICsKKyAgICAidGVzdF9zZXRpdGVtIHRlc3RfZGV0ZWN0X2RlbGV0aW9uX2R1cmluZ19pdGVyYXRpb24gIiArCisgICAgInRlc3RfcG9waXRlbSB0ZXN0X3JlaW5zZXJ0IHRlc3Rfb3ZlcnJpZGVfdXBkYXRlICIgKworICAgICJ0ZXN0X2hpZ2hseV9uZXN0ZWQgdGVzdF9oaWdobHlfbmVzdGVkX3N1YmNsYXNzICIgKworICAgICJ0ZXN0X2RlbGl0ZW1faGFzaF9jb2xsaXNpb24gIikuc3BsaXQoKToKKyAgICBzZXRhdHRyKENQeXRob25CdWlsdGluRGljdFRlc3RzLCBtZXRob2QsIGdldGF0dHIoT3JkZXJlZERpY3RUZXN0cywgbWV0aG9kKSkKK2RlbCBtZXRob2QKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2NvbGwsICdyZXF1aXJlcyB0aGUgQyB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUnKQogY2xhc3MgQ1B5dGhvbk9yZGVyZWREaWN0VGVzdHMoT3JkZXJlZERpY3RUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02MjUsMTggKzY2OCwyMCBAQAogICAgICAgICBzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZQogICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfc2l6ZW9mCiAKLSAgICAgICAgYmFzaWNzaXplID0gc2l6ZSgnbjJQJyArICczUG5QbjJQJykgKyBjYWxjc2l6ZSgnMm5QbicpCi0gICAgICAgIGVudHJ5c2l6ZSA9IGNhbGNzaXplKCduMlAnKSArIGNhbGNzaXplKCdQJykKKyAgICAgICAgYmFzaWNzaXplID0gc2l6ZSgnblEyUCcgKyAnM1BuUG4yUCcpICsgY2FsY3NpemUoJzJuUDJuJykKKworICAgICAgICBlbnRyeXNpemUgPSBjYWxjc2l6ZSgnbjJQJykKKyAgICAgICAgcCA9IGNhbGNzaXplKCdQJykKICAgICAgICAgbm9kZXNpemUgPSBjYWxjc2l6ZSgnUG4yUCcpCiAKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCi0gICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KmVudHJ5c2l6ZSkKKyAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqcCArIDggKyA1KmVudHJ5c2l6ZSkgICMgOGJ5dGUgaW5kaWNpZXMgKyA4KjIvLzMgKiBlbnRyeSB0YWJsZQogICAgICAgICBvZC54ID0gMQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCplbnRyeXNpemUpCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KnAgKyA4ICsgNSplbnRyeXNpemUpCiAgICAgICAgIG9kLnVwZGF0ZShbKGksIGkpIGZvciBpIGluIHJhbmdlKDMpXSkKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqZW50cnlzaXplICsgMypub2Rlc2l6ZSkKKyAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqcCArIDggKyA1KmVudHJ5c2l6ZSArIDMqbm9kZXNpemUpCiAgICAgICAgIG9kLnVwZGF0ZShbKGksIGkpIGZvciBpIGluIHJhbmdlKDMsIDEwKV0pCi0gICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyAxNiplbnRyeXNpemUgKyAxMCpub2Rlc2l6ZSkKKyAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDE2KnAgKyAxNiArIDEwKmVudHJ5c2l6ZSArIDEwKm5vZGVzaXplKQogCiAgICAgICAgIGNoZWNrKG9kLmtleXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICBjaGVjayhvZC5pdGVtcygpLCBzaXplKCdQJykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29zLnB5IGIvTGliL3Rlc3QvdGVzdF9vcy5weQppbmRleCA5NzIwMjEwLi4xNzQ2Y2E0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3MucHkKQEAgLTE1LDcgKzE1LDYgQEAKIGltcG9ydCBtbWFwCiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKLWltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc2lnbmFsCkBAIC02NSw2ICs2NCw4IEBACiAgICAgSU5UX01BWCA9IFBZX1NTSVpFX1RfTUFYID0gc3lzLm1heHNpemUKIAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVuaXhfc2hlbGwKKwogCiByb290X2luX3Bvc2l4ID0gRmFsc2UKIGlmIGhhc2F0dHIob3MsICdnZXRldWlkJyk6CkBAIC04Miw2ICs4MywzMiBAQAogIyBJc3N1ZSAjMTQxMTA6IFNvbWUgdGVzdHMgZmFpbCBvbiBGcmVlQlNEIGlmIHRoZSB1c2VyIGlzIGluIHRoZSB3aGVlbCBncm91cC4KIEhBVkVfV0hFRUxfR1JPVVAgPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZnJlZWJzZCcpIGFuZCBvcy5nZXRnaWQoKSA9PSAwCiAKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBpZ25vcmVfZGVwcmVjYXRpb25fd2FybmluZ3MobXNnX3JlZ2V4LCBxdWlldD1GYWxzZSk6CisgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2dfcmVnZXgsIERlcHJlY2F0aW9uV2FybmluZyksIHF1aWV0PXF1aWV0KToKKyAgICAgICAgeWllbGQKKworCitkZWYgcmVxdWlyZXNfb3NfZnVuYyhuYW1lKToKKyAgICByZXR1cm4gdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCBuYW1lKSwgJ3JlcXVpcmVzIG9zLiVzJyAlIG5hbWUpCisKKworY2xhc3MgX1BhdGhMaWtlKG9zLlBhdGhMaWtlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPSIiKToKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi5wYXRoKQorCisgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIHNlbGYucGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisKIGRlZiBjcmVhdGVfZmlsZShmaWxlbmFtZSwgY29udGVudD1iJ2NvbnRlbnQnKToKICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ4YiIsIDApIGFzIGZwOgogICAgICAgICBmcC53cml0ZShjb250ZW50KQpAQCAtMTQ1LDkgKzE3Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWRzIElOVF9NQVggPCBQWV9TU0laRV9UX01BWCIpCiAgICAgQHN1cHBvcnQuYmlnbWVtdGVzdChzaXplPUlOVF9NQVggKyAxMCwgbWVtdXNlPTEsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfbGFyZ2VfcmVhZChzZWxmLCBzaXplKToKLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGIndGVzdCcpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBiJ3Rlc3QnKQogCiAgICAgICAgICMgSXNzdWUgIzIxOTMyOiBNYWtlIHN1cmUgdGhhdCBvcy5yZWFkKCkgZG9lcyBub3QgcmFpc2UgYW4KICAgICAgICAgIyBPdmVyZmxvd0Vycm9yIGZvciBzaXplIGxhcmdlciB0aGFuIElOVF9NQVgKQEAgLTIwNCwxMSArMjMwLDEyIEBACiAKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiLjIiCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgiMSIpCi0gICAgICAgIHdpdGggb3BlbihURVNURk4yLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCIyIikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgVEVTVEZOMikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBURVNURk4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBiIjEiKQorICAgICAgICBjcmVhdGVfZmlsZShURVNURk4yLCBiIjIiKQorCiAgICAgICAgIG9zLnJlcGxhY2Uoc3VwcG9ydC5URVNURk4sIFRFU1RGTjIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBvcy5zdGF0LCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyJykgYXMgZjoKQEAgLTMwOSw5ICszMzYsNyBAQAogICAgICAgICAgICAgZm5hbWUgPSBzZWxmLmZuYW1lLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3QgZW5jb2RlICVhIGZvciB0aGUgZmlsZXN5c3RlbSIgJSBzZWxmLmZuYW1lKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdF9hdHRyaWJ1dGVzKGZuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXRfYXR0cmlidXRlcyhmbmFtZSkKIAogICAgIGRlZiB0ZXN0X3N0YXRfcmVzdWx0X3BpY2tsZShzZWxmKToKICAgICAgICAgcmVzdWx0ID0gb3Muc3RhdChzZWxmLmZuYW1lKQpAQCAtNDYyLDE5ICs0ODcsMTQgQEAKIAogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHNlbGYuZGlybmFtZSkKICAgICAgICAgb3MubWtkaXIoc2VsZi5kaXJuYW1lKQotICAgICAgICB3aXRoIG9wZW4oc2VsZi5mbmFtZSwgJ3diJykgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShiIkFCQyIpCisgICAgICAgIGNyZWF0ZV9maWxlKHNlbGYuZm5hbWUpCiAKICAgICAgICAgZGVmIHJlc3RvcmVfZmxvYXRfdGltZXMoc3RhdGUpOgotICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotCisgICAgICAgICAgICB3aXRoIGlnbm9yZV9kZXByZWNhdGlvbl93YXJuaW5ncygnc3RhdF9mbG9hdF90aW1lcycpOgogICAgICAgICAgICAgICAgIG9zLnN0YXRfZmxvYXRfdGltZXMoc3RhdGUpCiAKICAgICAgICAgIyBlbnN1cmUgdGhhdCBzdF9hdGltZSBhbmQgc3RfbXRpbWUgYXJlIGZsb2F0Ci0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotCisgICAgICAgIHdpdGggaWdub3JlX2RlcHJlY2F0aW9uX3dhcm5pbmdzKCdzdGF0X2Zsb2F0X3RpbWVzJyk6CiAgICAgICAgICAgICBvbGRfZmxvYXRfdGltZXMgPSBvcy5zdGF0X2Zsb2F0X3RpbWVzKC0xKQogICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfZmxvYXRfdGltZXMsIG9sZF9mbG9hdF90aW1lcykKIApAQCAtNTY2LDcgKzU4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImZkIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKICAgICBkZWYgdGVzdF91dGltZV9mZChzZWxmKToKICAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBucyk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicpIGFzIGZwOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InLCAwKSBhcyBmcDoKICAgICAgICAgICAgICAgICAjIHVzZSBhIGZpbGUgZGVzY3JpcHRvciB0byB0ZXN0IGZ1dGltZW5zKHRpbWVzcGVjKQogICAgICAgICAgICAgICAgICMgb3IgZnV0aW1lcyh0aW1ldmFsKQogICAgICAgICAgICAgICAgIG9zLnV0aW1lKGZwLmZpbGVubygpLCBucz1ucykKQEAgLTY3OCwxOCArNjk4LDIwIEBACiAgICAgICAgIHJldHVybiBvcy5lbnZpcm9uCiAKICAgICAjIEJ1ZyAxMTEwNDc4Ci0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucGF0aC5leGlzdHMoJy9iaW4vc2gnKSwgJ3JlcXVpcmVzIC9iaW4vc2gnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHVuaXhfc2hlbGwgYW5kIG9zLnBhdGguZXhpc3RzKHVuaXhfc2hlbGwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBhIHNoZWxsJykKICAgICBkZWYgdGVzdF91cGRhdGUyKHNlbGYpOgogICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoSEVMTE89IldvcmxkIikKLSAgICAgICAgd2l0aCBvcy5wb3BlbigiL2Jpbi9zaCAtYyAnZWNobyAkSEVMTE8nIikgYXMgcG9wZW46CisgICAgICAgIHdpdGggb3MucG9wZW4oIiVzIC1jICdlY2hvICRIRUxMTyciICUgdW5peF9zaGVsbCkgYXMgcG9wZW46CiAgICAgICAgICAgICB2YWx1ZSA9IHBvcGVuLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAiV29ybGQiKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucGF0aC5leGlzdHMoJy9iaW4vc2gnKSwgJ3JlcXVpcmVzIC9iaW4vc2gnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHVuaXhfc2hlbGwgYW5kIG9zLnBhdGguZXhpc3RzKHVuaXhfc2hlbGwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBhIHNoZWxsJykKICAgICBkZWYgdGVzdF9vc19wb3Blbl9pdGVyKHNlbGYpOgotICAgICAgICB3aXRoIG9zLnBvcGVuKAotICAgICAgICAgICAgIi9iaW4vc2ggLWMgJ2VjaG8gXCJsaW5lMVxubGluZTJcbmxpbmUzXCInIikgYXMgcG9wZW46CisgICAgICAgIHdpdGggb3MucG9wZW4oIiVzIC1jICdlY2hvIFwibGluZTFcbmxpbmUyXG5saW5lM1wiJyIKKyAgICAgICAgICAgICAgICAgICAgICAlIHVuaXhfc2hlbGwpIGFzIHBvcGVuOgogICAgICAgICAgICAgaXQgPSBpdGVyKHBvcGVuKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUxXG4iKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUyXG4iKQpAQCAtODIwLDYgKzg0Miw3IEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGpvaW4gPSBvcy5wYXRoLmpvaW4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzdXBwb3J0LlRFU1RGTikKIAogICAgICAgICAjIEJ1aWxkOgogICAgICAgICAjICAgICBURVNURk4vCkBAIC04NTIsOSArODc1LDggQEAKICAgICAgICAgb3MubWFrZWRpcnModDJfcGF0aCkKIAogICAgICAgICBmb3IgcGF0aCBpbiB0bXAxX3BhdGgsIHRtcDJfcGF0aCwgdG1wM19wYXRoLCB0bXA0X3BhdGg6Ci0gICAgICAgICAgICBmID0gb3BlbihwYXRoLCAidyIpCi0gICAgICAgICAgICBmLndyaXRlKCJJJ20gIiArIHBhdGggKyAiIGFuZCBwcm91ZCBvZiBpdC4gIEJsYW1lIHRlc3Rfb3MuXG4iKQotICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIngiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoIkknbSAiICsgcGF0aCArICIgYW5kIHByb3VkIG9mIGl0LiAgQmxhbWUgdGVzdF9vcy5cbiIpCiAKICAgICAgICAgaWYgc3VwcG9ydC5jYW5fc3ltbGluaygpOgogICAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmFic3BhdGgodDJfcGF0aCksIHNlbGYubGlua19wYXRoKQpAQCAtODc5LDEwICs5MDEsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMiArIGZsaXBwZWRdLCAoc2VsZi5zdWIxMV9wYXRoLCBbXSwgW10pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFszIC0gMiAqIGZsaXBwZWRdLCBzZWxmLnN1YjJfdHJlZSkKIAotICAgIGRlZiB0ZXN0X3dhbGtfcHJ1bmUoc2VsZik6CisgICAgZGVmIHRlc3Rfd2Fsa19wcnVuZShzZWxmLCB3YWxrX3BhdGg9Tm9uZSk6CisgICAgICAgIGlmIHdhbGtfcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgd2Fsa19wYXRoID0gc2VsZi53YWxrX3BhdGgKICAgICAgICAgIyBQcnVuZSB0aGUgc2VhcmNoLgogICAgICAgICBhbGwgPSBbXQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gc2VsZi53YWxrKHNlbGYud2Fsa19wYXRoKToKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIHNlbGYud2Fsayh3YWxrX3BhdGgpOgogICAgICAgICAgICAgYWxsLmFwcGVuZCgocm9vdCwgZGlycywgZmlsZXMpKQogICAgICAgICAgICAgIyBEb24ndCBkZXNjZW5kIGludG8gU1VCMS4KICAgICAgICAgICAgIGlmICdTVUIxJyBpbiBkaXJzOgpAQCAtODkxLDE2ICs5MTUsMTkgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbGwpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi53YWxrX3BhdGgsIFsiU1VCMiJdLCBbInRtcDEiXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cih3YWxrX3BhdGgpLCBbIlNVQjIiXSwgWyJ0bXAxIl0pKQogCiAgICAgICAgIGFsbFsxXVstMV0uc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzFdLCBzZWxmLnN1YjJfdHJlZSkKIAorICAgIGRlZiB0ZXN0X2ZpbGVfbGlrZV9wYXRoKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3Rfd2Fsa19wcnVuZShfUGF0aExpa2Uoc2VsZi53YWxrX3BhdGgpKQorCiAgICAgZGVmIHRlc3Rfd2Fsa19ib3R0b21fdXAoc2VsZik6CiAgICAgICAgICMgV2FsayBib3R0b20tdXAuCiAgICAgICAgIGFsbCA9IGxpc3Qoc2VsZi53YWxrKHNlbGYud2Fsa19wYXRoLCB0b3Bkb3duPUZhbHNlKSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbGwpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbGwpLCA0LCBhbGwpCiAgICAgICAgICMgV2UgY2FuJ3Qga25vdyB3aGljaCBvcmRlciBTVUIxIGFuZCBTVUIyIHdpbGwgYXBwZWFyIGluLgogICAgICAgICAjIE5vdCBmbGlwcGVkOiAgU1VCMTEsIFNVQjEsIFNVQjIsIFRFU1RGTgogICAgICAgICAjICAgICBmbGlwcGVkOiAgU1VCMiwgU1VCMTEsIFNVQjEsIFRFU1RGTgpAQCAtOTMwLDIyICs5NTcsNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJEaWRuJ3QgZm9sbG93IHN5bWxpbmsgd2l0aCBmb2xsb3dsaW5rcz1UcnVlIikKIAotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgIyBUZWFyIGV2ZXJ5dGhpbmcgZG93bi4gIFRoaXMgaXMgYSBkZWNlbnQgdXNlIGZvciBib3R0b20tdXAgb24KLSAgICAgICAgIyBXaW5kb3dzLCB3aGljaCBkb2Vzbid0IGhhdmUgYSByZWN1cnNpdmUgZGVsZXRlIGNvbW1hbmQuICBUaGUKLSAgICAgICAgIyAobm90IHNvKSBzdWJ0bGV0eSBpcyB0aGF0IHJtZGlyIHdpbGwgZmFpbCB1bmxlc3MgdGhlIGRpcidzCi0gICAgICAgICMga2lkcyBhcmUgcmVtb3ZlZCBmaXJzdCwgc28gYm90dG9tIHVwIGlzIGVzc2VudGlhbC4KLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3VwcG9ydC5URVNURk4sIHRvcGRvd249RmFsc2UpOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6Ci0gICAgICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguam9pbihyb290LCBuYW1lKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzbGluayhkaXJuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIoZGlybmFtZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZGlybmFtZSkKLSAgICAgICAgb3Mucm1kaXIoc3VwcG9ydC5URVNURk4pCi0KICAgICBkZWYgdGVzdF93YWxrX2JhZF9kaXIoc2VsZik6CiAgICAgICAgICMgV2FsayB0b3AtZG93bi4KICAgICAgICAgZXJyb3JzID0gW10KQEAgLTEwMjgsMjcgKzEwMzksMTEgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBuZXdmZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdmZCwgbWluZmQpCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICMgY2xlYW51cAotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsayhzdXBwb3J0LlRFU1RGTiwgdG9wZG93bj1GYWxzZSk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXJvb3RmZCkKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6Ci0gICAgICAgICAgICAgICAgc3QgPSBvcy5zdGF0KG5hbWUsIGRpcl9mZD1yb290ZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKG5hbWUsIGRpcl9mZD1yb290ZmQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCi0gICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotCiBjbGFzcyBCeXRlc1dhbGtUZXN0cyhXYWxrVGVzdHMpOgogICAgICIiIlRlc3RzIGZvciBvcy53YWxrKCkgd2l0aCBieXRlcy4iIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQogICAgICAgICBzZWxmLnN0YWNrID0gY29udGV4dGxpYi5FeGl0U3RhY2soKQotICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6Ci0gICAgICAgICAgICBzZWxmLnN0YWNrLmVudGVyX2NvbnRleHQod2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKSkKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnN0YWNrLmNsb3NlKCkKQEAgLTEyMjUsOCArMTIyMCw3IEBACiAgICAgICAgIG9zLm1rZGlyKGRpcmEpCiAgICAgICAgIGRpcmIgPSBvcy5wYXRoLmpvaW4oZGlyYSwgJ2RpcmInKQogICAgICAgICBvcy5ta2RpcihkaXJiKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRpcmEsICdmaWxlLnR4dCcpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCd0ZXh0JykKKyAgICAgICAgY3JlYXRlX2ZpbGUob3MucGF0aC5qb2luKGRpcmEsICdmaWxlLnR4dCcpKQogICAgICAgICBvcy5yZW1vdmVkaXJzKGRpcmIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZGlyYikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkaXJhKSkKQEAgLTEyMzcsOCArMTIzMSw3IEBACiAgICAgICAgIG9zLm1rZGlyKGRpcmEpCiAgICAgICAgIGRpcmIgPSBvcy5wYXRoLmpvaW4oZGlyYSwgJ2RpcmInKQogICAgICAgICBvcy5ta2RpcihkaXJiKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRpcmIsICdmaWxlLnR4dCcpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCd0ZXh0JykKKyAgICAgICAgY3JlYXRlX2ZpbGUob3MucGF0aC5qb2luKGRpcmIsICdmaWxlLnR4dCcpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpOgogICAgICAgICAgICAgb3MucmVtb3ZlZGlycyhkaXJiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyYikpCkBAIC0xMjQ4LDcgKzEyNDEsNyBAQAogCiBjbGFzcyBEZXZOdWxsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Rldm51bGwoc2VsZik6Ci0gICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAnd2InKSBhcyBmOgorICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3diJywgMCkgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYidoZWxsbycpCiAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICdyYicpIGFzIGY6CkBAIC0xMjY1LDYgKzEyNTgsNyBAQAogCiAgICAgZGVmIHRlc3RfdXJhbmRvbV92YWx1ZShzZWxmKToKICAgICAgICAgZGF0YTEgPSBvcy51cmFuZG9tKDE2KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGF0YTEsIGJ5dGVzKQogICAgICAgICBkYXRhMiA9IG9zLnVyYW5kb20oMTYpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQogCkBAIC0xMjg1LDYgKzEyNzksNDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYXRhMSwgZGF0YTIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHJhbmRvbScpLCAnbmVlZCBvcy5nZXRyYW5kb20oKScpCitjbGFzcyBHZXRSYW5kb21UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuZ2V0cmFuZG9tKDEpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FTk9TWVM6CisgICAgICAgICAgICAgICAgIyBQeXRob24gY29tcGlsZWQgb24gYSBtb3JlIHJlY2VudCBMaW51eCB2ZXJzaW9uCisgICAgICAgICAgICAgICAgIyB0aGFuIHRoZSBjdXJyZW50IExpbnV4IGtlcm5lbAorICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJnZXRyYW5kb20oKSBzeXNjYWxsIGZhaWxzIHdpdGggRU5PU1lTIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV90eXBlKHNlbGYpOgorICAgICAgICBkYXRhID0gb3MuZ2V0cmFuZG9tKDE2KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGF0YSwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCAxNikKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbTAoc2VsZik6CisgICAgICAgIGVtcHR5ID0gb3MuZ2V0cmFuZG9tKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW1wdHksIGInJykKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV9yYW5kb20oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG9zLCAnR1JORF9SQU5ET00nKSkKKworICAgICAgICAjIERvbid0IHRlc3Qgb3MuZ2V0cmFuZG9tKDEsIG9zLkdSTkRfUkFORE9NKSB0byBub3QgY29uc3VtZSB0aGUgcmFyZQorICAgICAgICAjIHJlc291cmNlIC9kZXYvcmFuZG9tCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fbm9uYmxvY2soc2VsZik6CisgICAgICAgICMgVGhlIGNhbGwgbXVzdCBub3QgZmFpbC4gQ2hlY2sgYWxzbyB0aGF0IHRoZSBmbGFnIGV4aXN0cworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5nZXRyYW5kb20oMSwgb3MuR1JORF9OT05CTE9DSykKKyAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKKyAgICAgICAgICAgICMgU3lzdGVtIHVyYW5kb20gaXMgbm90IGluaXRpYWxpemVkIHlldAorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfZ2V0cmFuZG9tX3ZhbHVlKHNlbGYpOgorICAgICAgICBkYXRhMSA9IG9zLmdldHJhbmRvbSgxNikKKyAgICAgICAgZGF0YTIgPSBvcy5nZXRyYW5kb20oMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQorCisKICMgb3MudXJhbmRvbSgpIGRvZXNuJ3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yIHdoZW4gaXQgaXMgaW1wbGVtZW50ZWQgd2l0aCB0aGUKICMgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uLCB0aGUgZ2V0cmFuZG9tKCkgZnVuY3Rpb24gb3IgdGhlIGdldHJhbmRvbSgpIHN5c2NhbGwKIE9TX1VSQU5ET01fRE9OVF9VU0VfRkQgPSAoCkBAIC0xMzM1LDkgKzEzNzIsOSBAQAogICAgIGRlZiB0ZXN0X3VyYW5kb21fZmRfcmVvcGVuZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzIxMjA3OiB1cmFuZG9tKCkgc2hvdWxkIGRldGVjdCBpdHMgZmQgdG8gL2Rldi91cmFuZG9tCiAgICAgICAgICMgY2hhbmdlZCB0byBzb21ldGhpbmcgZWxzZSwgYW5kIHJlb3BlbiBpdC4KLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShiIngiICogMjU2KQotICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgY3JlYXRlX2ZpbGUoc3VwcG9ydC5URVNURk4sIGIieCIgKiAyNTYpCisKICAgICAgICAgY29kZSA9ICIiImlmIDE6CiAgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgIGltcG9ydCBzeXMKQEAgLTEzOTksNiArMTQzNiw3IEBACiAgICAgICAgIG9zLmV4ZWN2ZSA9IG9yaWdfZXhlY3ZlCiAgICAgICAgIG9zLmRlZnBhdGggPSBvcmlnX2RlZnBhdGgKIAorCiBjbGFzcyBFeGVjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwSWYoVVNJTkdfTElOVVhUSFJFQURTLAogICAgICAgICAgICAgICAgICAgICAgImF2b2lkIHRyaWdnZXJpbmcgYSBsaW51eHRocmVhZHMgYnVnOiBzZWUgaXNzdWUgIzQ5NzAiKQpAQCAtMTQ2Niw2ICsxNTA0LDE4IEBACiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQogY2xhc3MgV2luMzJFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIGV4aXN0cyA9IEZhbHNlCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGV4aXN0cyA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZmlsZSAlcyBtdXN0IG5vdCBleGlzdDsgb3Muc3RhdCBmYWlsZWQgd2l0aCAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAlIChzdXBwb3J0LlRFU1RGTiwgZXhjKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZmlsZSAlcyBtdXN0IG5vdCBleGlzdCIgJSBzdXBwb3J0LlRFU1RGTikKKwogICAgIGRlZiB0ZXN0X3JlbmFtZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MucmVuYW1lLCBzdXBwb3J0LlRFU1RGTiwgc3VwcG9ydC5URVNURk4rIi5iYWsiKQogCkBAIC0xNDc2LDEyICsxNTI2LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmNoZGlyLCBzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X21rZGlyKHNlbGYpOgotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgInciKQotICAgICAgICB0cnk6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAieCIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5ta2Rpciwgc3VwcG9ydC5URVNURk4pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3V0aW1lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy51dGltZSwgc3VwcG9ydC5URVNURk4sIE5vbmUpCkBAIC0xNDg5LDYgKzE1MzcsNyBAQAogICAgIGRlZiB0ZXN0X2NobW9kKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5jaG1vZCwgc3VwcG9ydC5URVNURk4sIDApCiAKKwogY2xhc3MgVGVzdEludmFsaWRGRCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgc2luZ2xlcyA9IFsiZmNoZGlyIiwgImR1cCIsICJmZG9wZW4iLCAiZmRhdGFzeW5jIiwgImZzdGF0IiwKICAgICAgICAgICAgICAgICJmc3RhdHZmcyIsICJmc3luYyIsICJ0Y2dldHBncnAiLCAidHR5bmFtZSJdCkBAIC0xNjAwLDEyICsxNjQ5LDkgQEAKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZmlsZSkKIAogICAgIGRlZiBfdGVzdF9saW5rKHNlbGYsIGZpbGUxLCBmaWxlMik6Ci0gICAgICAgIHdpdGggb3BlbihmaWxlMSwgInciKSBhcyBmMToKLSAgICAgICAgICAgIGYxLndyaXRlKCJ0ZXN0IikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTEpCiAKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKKyAgICAgICAgb3MubGluayhmaWxlMSwgZmlsZTIpCiAgICAgICAgIHdpdGggb3BlbihmaWxlMSwgInIiKSBhcyBmMSwgb3BlbihmaWxlMiwgInIiKSBhcyBmMjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVvcGVuZmlsZShmMS5maWxlbm8oKSwgZjIuZmlsZW5vKCkpKQogCkBAIC0xODk2LDYgKzE5NDIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHNvcnRlZChvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOKSksCiAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVkX3BhdGhzKQorCiAgICAgICAgICMgYnl0ZXMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKSwKQEAgLTE5MDksNiArMTk1Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgc29ydGVkKG9zLmxpc3RkaXIocGF0aCkpLAogICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlZF9wYXRocykKKwogICAgICAgICAjIGJ5dGVzCiAgICAgICAgIHBhdGggPSBiJ1xcXFw/XFwnICsgb3MuZnNlbmNvZGUob3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTE5ODgsNTEgKzIwMzYsNDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChsaW5rKSwgb3Muc3RhdChsaW5rKSkKIAogICAgICAgICBieXRlc19saW5rID0gb3MuZnNlbmNvZGUobGluaykKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQoYnl0ZXNfbGluaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KGJ5dGVzX2xpbmspKQogCiAgICAgZGVmIHRlc3RfMTIwODQoc2VsZik6CiAgICAgICAgIGxldmVsMSA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgbGV2ZWwyID0gb3MucGF0aC5qb2luKGxldmVsMSwgImxldmVsMiIpCiAgICAgICAgIGxldmVsMyA9IG9zLnBhdGguam9pbihsZXZlbDIsICJsZXZlbDMiKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIGxldmVsMSkKKworICAgICAgICBvcy5ta2RpcihsZXZlbDEpCisgICAgICAgIG9zLm1rZGlyKGxldmVsMikKKyAgICAgICAgb3MubWtkaXIobGV2ZWwzKQorCisgICAgICAgIGZpbGUxID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihsZXZlbDEsICJmaWxlMSIpKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlMSkKKworICAgICAgICBvcmlnX2RpciA9IG9zLmdldGN3ZCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMSkKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMikKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMykKKyAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMikKKyAgICAgICAgICAgIGxpbmsgPSBvcy5wYXRoLmpvaW4obGV2ZWwyLCAibGluayIpCisgICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGgucmVscGF0aChmaWxlMSksICJsaW5rIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImxpbmsiLCBvcy5saXN0ZGlyKG9zLmdldGN3ZCgpKSkKIAotICAgICAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGxldmVsMSwgImZpbGUxIikpCisgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSB0aGUgc2FtZSBkaXIgYXMgdGhlIGxpbmsKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksIG9zLnN0YXQoImxpbmsiKSkKIAotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgiZmlsZTEiKQorICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gYSBkaXIgYmVsb3cgdGhlIGxpbmsKKyAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQob3MucGF0aC5yZWxwYXRoKGxpbmspKSkKIAotICAgICAgICAgICAgb3JpZ19kaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMikKLSAgICAgICAgICAgICAgICBsaW5rID0gb3MucGF0aC5qb2luKGxldmVsMiwgImxpbmsiKQotICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5yZWxwYXRoKGZpbGUxKSwgImxpbmsiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImxpbmsiLCBvcy5saXN0ZGlyKG9zLmdldGN3ZCgpKSkKLQotICAgICAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIHRoZSBzYW1lIGRpciBhcyB0aGUgbGluawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksIG9zLnN0YXQoImxpbmsiKSkKLQotICAgICAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGJlbG93IHRoZSBsaW5rCi0gICAgICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCi0KLSAgICAgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSBhIGRpciBhYm92ZSB0aGUgbGluawotICAgICAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChvcy5wYXRoLnJlbHBhdGgobGluaykpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBvcy5jaGRpcihvcmlnX2RpcikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgc2VsZi5mYWlsKGVycikKKyAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGFib3ZlIHRoZSBsaW5rCisgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoZmlsZTEpCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGxldmVsMSkKKyAgICAgICAgICAgIG9zLmNoZGlyKG9yaWdfZGlyKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQpAQCAtMjA3MCw3ICsyMTEwLDcgQEAKIGNsYXNzIE5vbkxvY2FsU3ltbGlua1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIiIiCisgICAgICAgIHIiIiIKICAgICAgICAgQ3JlYXRlIHRoaXMgc3RydWN0dXJlOgogCiAgICAgICAgIGJhc2UKQEAgLTIxNDEsMTEgKzIxODEsMTEwIEBACiAKICAgICBkZWYgdGVzdF93YWl0cGlkKHNlbGYpOgogICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddCi0gICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgIyBBZGQgYW4gaW1wbGljaXQgdGVzdCBmb3IgUHlVbmljb2RlX0ZTQ29udmVydGVyKCkuCisgICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgX1BhdGhMaWtlKGFyZ3NbMF0pLCBhcmdzKQogICAgICAgICBzdGF0dXMgPSBvcy53YWl0cGlkKHBpZCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIChwaWQsIDApKQogCiAKK2NsYXNzIFNwYXduVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBjcmVhdGVfYXJncyhzZWxmLCAqLCB3aXRoX2Vudj1GYWxzZSwgdXNlX2J5dGVzPUZhbHNlKToKKyAgICAgICAgc2VsZi5leGl0Y29kZSA9IDE3CisKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgIGlmIG5vdCB3aXRoX2VudjoKKyAgICAgICAgICAgIGNvZGUgPSAnaW1wb3J0IHN5czsgc3lzLmV4aXQoJXMpJyAlIHNlbGYuZXhpdGNvZGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZW52ID0gZGljdChvcy5lbnZpcm9uKQorICAgICAgICAgICAgIyBjcmVhdGUgYW4gdW5pcXVlIGtleQorICAgICAgICAgICAgc2VsZi5rZXkgPSBzdHIodXVpZC51dWlkNCgpKQorICAgICAgICAgICAgc2VsZi5lbnZbc2VsZi5rZXldID0gc2VsZi5rZXkKKyAgICAgICAgICAgICMgcmVhZCB0aGUgdmFyaWFibGUgZnJvbSBvcy5lbnZpcm9uIHRvIGNoZWNrIHRoYXQgaXQgZXhpc3RzCisgICAgICAgICAgICBjb2RlID0gKCdpbXBvcnQgc3lzLCBvczsgbWFnaWMgPSBvcy5lbnZpcm9uWyVyXTsgc3lzLmV4aXQoJXMpJworICAgICAgICAgICAgICAgICAgICAlIChzZWxmLmtleSwgc2VsZi5leGl0Y29kZSkpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoY29kZSkKKworICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCBmaWxlbmFtZV0KKyAgICAgICAgaWYgdXNlX2J5dGVzOgorICAgICAgICAgICAgYXJncyA9IFtvcy5mc2VuY29kZShhKSBmb3IgYSBpbiBhcmdzXQorICAgICAgICAgICAgc2VsZi5lbnYgPSB7b3MuZnNlbmNvZGUoayk6IG9zLmZzZW5jb2RlKHYpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLmVudi5pdGVtcygpfQorCisgICAgICAgIHJldHVybiBhcmdzCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25sJykKKyAgICBkZWYgdGVzdF9zcGF3bmwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bmwob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmxlJykKKyAgICBkZWYgdGVzdF9zcGF3bmxlKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubGUob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25scCcpCisgICAgZGVmIHRlc3Rfc3Bhd25scChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubHAob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmxwZScpCisgICAgZGVmIHRlc3Rfc3Bhd25scGUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd25scGUob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252JykKKyAgICBkZWYgdGVzdF9zcGF3bnYoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnYob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudmUnKQorICAgIGRlZiB0ZXN0X3NwYXdudmUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252ZShvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudnAnKQorICAgIGRlZiB0ZXN0X3NwYXdudnAoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZwKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZwZScpCisgICAgZGVmIHRlc3Rfc3Bhd252cGUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252cGUob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnYnKQorICAgIGRlZiB0ZXN0X25vd2FpdChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBwaWQgPSBvcy5zcGF3bnYob3MuUF9OT1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgIHJlc3VsdCA9IG9zLndhaXRwaWQocGlkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFswXSwgcGlkKQorICAgICAgICBzdGF0dXMgPSByZXN1bHRbMV0KKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ1dJRkVYSVRFRCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLldJRkVYSVRFRChzdGF0dXMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5XRVhJVFNUQVRVUyhzdGF0dXMpLCBzZWxmLmV4aXRjb2RlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIHNlbGYuZXhpdGNvZGUgPDwgOCkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZlJykKKyAgICBkZWYgdGVzdF9zcGF3bnZlX2J5dGVzKHNlbGYpOgorICAgICAgICAjIFRlc3QgYnl0ZXMgaGFuZGxpbmcgaW4gcGFyc2VfYXJnbGlzdCBhbmQgcGFyc2VfZW52bGlzdCAoIzI4MTE0KQorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlLCB1c2VfYnl0ZXM9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZlKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKwogIyBUaGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgVGVzdENhc2UgY2F1c2VkIGF0IGxlYXN0IHR3byBkaWZmZXJlbnQgZXJyb3JzIG9uCiAjICpuaXggYnVpbGRib3RzLiBUZW1wb3JhcmlseSBza2lwIHRoaXMgdG8gbGV0IHRoZSBidWlsZGJvdHMgbW92ZSBhbG9uZy4KIEB1bml0dGVzdC5za2lwKCJTa2lwIGR1ZSB0byBwbGF0Zm9ybS9lbnZpcm9ubWVudCBkaWZmZXJlbmNlcyBvbiAqTklYIGJ1aWxkYm90cyIpCkBAIC0yMTY4LDggKzIzMDcsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuZXdfcHJpbyA9IG9zLmdldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCkpCiAgICAgICAgICAgICBpZiBiYXNlID49IDE5IGFuZCBuZXdfcHJpbyA8PSAxOToKLSAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKLSAgICAgICJ1bmFibGUgdG8gcmVsaWFibHkgdGVzdCBzZXRwcmlvcml0eSBhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidW5hYmxlIHRvIHJlbGlhYmx5IHRlc3Qgc2V0cHJpb3JpdHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcHJpbywgYmFzZSArIDEpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0yMjc5LDggKzI0MTgsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5rZXkgPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoY2xzLkRBVEEpCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBjbHMuREFUQSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CkBAIC0yNDMwLDEwICsyNTY4LDExIEBACiAgICAgZGVmIHRlc3RfdHJhaWxlcnMoc2VsZik6CiAgICAgICAgIFRFU1RGTjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgogICAgICAgICBmaWxlX2RhdGEgPSBiImFiY2RlZiIKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGZpbGVfZGF0YSkKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIFRFU1RGTjIpCisKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBURVNURk4yKQorICAgICAgICBjcmVhdGVfZmlsZShURVNURk4yLCBmaWxlX2RhdGEpCisKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpIGFzIGY6CiAgICAgICAgICAgICBvcy5zZW5kZmlsZShzZWxmLnNvY2tubywgZi5maWxlbm8oKSwgMCwgbGVuKGZpbGVfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGVycz1bYiIxMjM0Il0pCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCkBAIC0yNDU2LDM1ICsyNTk1LDM3IEBACiBkZWYgc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpOgogICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic2V0eGF0dHIiKToKICAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICB0cnk6Ci0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgInhiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksIGIidXNlci50ZXN0IiwgYiIiKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgZmluYWxseToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCi0gICAga2VybmVsX3ZlcnNpb24gPSBwbGF0Zm9ybS5yZWxlYXNlKCkKLSAgICBtID0gcmUubWF0Y2goIjIuNi4oXGR7MSwyfSkiLCBrZXJuZWxfdmVyc2lvbikKLSAgICByZXR1cm4gbSBpcyBOb25lIG9yIGludChtLmdyb3VwKDEpKSA+PSAzOQorCisgICAgcmV0dXJuIFRydWUKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0c19leHRlbmRlZF9hdHRyaWJ1dGVzKCksCiAgICAgICAgICAgICAgICAgICAgICAibm8gbm9uLWJyb2tlbiBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCIpCisjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KK0BzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMzkpCiBjbGFzcyBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0KICAgICBkZWYgX2NoZWNrX3hhdHRyc19zdHIoc2VsZiwgcywgZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyLCAqKmt3YXJncyk6CiAgICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KLSAgICAgICAgb3BlbihmbiwgIndiIikuY2xvc2UoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZuKQorICAgICAgICBjcmVhdGVfZmlsZShmbikKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgaW5pdF94YXR0ciA9IGxpc3R4YXR0cihmbikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluaXRfeGF0dHIsIGxpc3QpCisKICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiIiIsICoqa3dhcmdzKQogICAgICAgICB4YXR0ciA9IHNldChpbml0X3hhdHRyKQogICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdCIpCkBAIC0yNDkyLDE5ICsyNjMzLDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIGIidXNlci50ZXN0IiwgKiprd2FyZ3MpLCBiIiIpCiAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJoZWxsbyIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBiInVzZXIudGVzdCIsICoqa3dhcmdzKSwgYiJoZWxsbyIpCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJieWUiLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImJ5ZSIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKwogICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImZvbyIsIG9zLlhBVFRSX0NSRUFURSwgKiprd2FyZ3MpCiAgICAgICAgIHhhdHRyLmFkZCgidXNlci50ZXN0MiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCB4YXR0cikKICAgICAgICAgcmVtb3ZleGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgeGF0dHIucmVtb3ZlKCJ1c2VyLnRlc3QiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgKiprd2FyZ3MpLCBiImZvbyIpCkBAIC0yNTE3LDExICsyNjYzLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCBzZXQoaW5pdF94YXR0cikgfCBzZXQobWFueSkpCiAKICAgICBkZWYgX2NoZWNrX3hhdHRycyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBkZWYgbWFrZV9ieXRlcyhzKToKLSAgICAgICAgICAgIHJldHVybiBieXRlcyhzLCAiYXNjaWkiKQogICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKHN0ciwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihtYWtlX2J5dGVzLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihvcy5mc2VuY29kZSwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKG9zLmdldHhhdHRyLCBvcy5zZXR4YXR0ciwgb3MucmVtb3ZleGF0dHIsCkBAIC0yNTM2LDEwICsyNjgyLDEwIEBACiAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmdldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKICAgICAgICAgZGVmIHNldHhhdHRyKHBhdGgsICphcmdzKToKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiLCAwKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCiAgICAgICAgIGRlZiByZW1vdmV4YXR0cihwYXRoLCAqYXJncyk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIikgYXMgZnA6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZleGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQogICAgICAgICBkZWYgbGlzdHhhdHRyKHBhdGgsICphcmdzKToKICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKQEAgLTI1NDcsNDMgKzI2OTMsNiBAQAogICAgICAgICBzZWxmLl9jaGVja194YXR0cnMoZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQotY2xhc3MgV2luMzJEZXByZWNhdGVkQnl0ZXNBUEkodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBudAotICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgZm9yIGZ1bmMsICphcmdzIGluICgKLSAgICAgICAgICAgICAgICAobnQuX2dldGZ1bGxwYXRobmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChudC5faXNkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MuYWNjZXNzLCBmaWxlbmFtZSwgb3MuUl9PSyksCi0gICAgICAgICAgICAgICAgKG9zLmNoZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmNobW9kLCBmaWxlbmFtZSwgMG83NzcpLAotICAgICAgICAgICAgICAgIChvcy5nZXRjd2RiLCksCi0gICAgICAgICAgICAgICAgKG9zLmxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmxpc3RkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MubHN0YXQsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MubWtkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Mub3BlbiwgZmlsZW5hbWUsIG9zLk9fUkRPTkxZKSwKLSAgICAgICAgICAgICAgICAob3MucmVuYW1lLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5ybWRpciwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5zdGFydGZpbGUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Muc3RhdCwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy51bmxpbmssIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MudXRpbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLCBmdW5jLCAqYXJncykKLQotICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKLSAgICBkZWYgdGVzdF9zeW1saW5rKHNlbGYpOgotICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluaywgZmlsZW5hbWUsIGZpbGVuYW1lKQotCi0KIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfdGVybWluYWxfc2l6ZScpLCAicmVxdWlyZXMgb3MuZ2V0X3Rlcm1pbmFsX3NpemUiKQogY2xhc3MgVGVybXNpemVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZG9lc19ub3RfY3Jhc2goc2VsZik6CkBAIC0yNjQ2LDYgKzI3NTUsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZW5jb2RlZCA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZWxmLmJ5dGVzX2ZpbGVuYW1lcy5hcHBlbmQoZW5jb2RlZCkKKyAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKGJ5dGVhcnJheShlbmNvZGVkKSkKICAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKG1lbW9yeXZpZXcoZW5jb2RlZCkpCiAKICAgICAgICAgc2VsZi5maWxlbmFtZXMgPSBzZWxmLmJ5dGVzX2ZpbGVuYW1lcyArIHNlbGYudW5pY29kZV9maWxlbmFtZXMKQEAgLTI2NjYsMTYgKzI3NzYsNyBAQAogICAgICAgICAgICAgICAgIChzZWxmLmJ5dGVzX2ZpbGVuYW1lcywgb3MucmVwbGFjZSwgYiJkc3QiKSwKICAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MucmVuYW1lLCAiZHN0IiksCiAgICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLnJlcGxhY2UsICJkc3QiKSwKLSAgICAgICAgICAgICAgICAjIElzc3VlICMxNjQxNDogRG9uJ3QgdGVzdCB1bmRlY29kYWJsZSBuYW1lcyB3aXRoIGxpc3RkaXIoKQotICAgICAgICAgICAgICAgICMgYmVjYXVzZSBvZiBhIFdpbmRvd3MgYnVnLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFdpdGggdGhlIEFOU0kgY29kZSBwYWdlIDkzMiwgb3MubGlzdGRpcihiJ1x4ZTcnKSByZXR1cm4gYW4KLSAgICAgICAgICAgICAgICAjIGVtcHR5IGxpc3QgKGluc3RlYWQgb2YgZmFpbGluZyksIHdoZXJlYXMgb3MubGlzdGRpcihiJ1x4ZmYnKQotICAgICAgICAgICAgICAgICMgcmFpc2VzIGEgRmlsZU5vdEZvdW5kRXJyb3IuIEl0IGxvb2tzIGxpa2UgYSBXaW5kb3dzIGJ1ZzoKLSAgICAgICAgICAgICAgICAjIGInXHhlNycgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LCBGaW5kRmlyc3RGaWxlQShiJ1x4ZTcnKQotICAgICAgICAgICAgICAgICMgZmFpbHMgd2l0aCBFUlJPUl9GSUxFX05PVF9GT1VORCAoMiksIGluc3RlYWQgb2YKLSAgICAgICAgICAgICAgICAjIEVSUk9SX1BBVEhfTk9UX0ZPVU5EICgzKS4KLSAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MubGlzdGRpciwpLAorICAgICAgICAgICAgICAgIChzZWxmLnVuaWNvZGVfZmlsZW5hbWVzLCBvcy5saXN0ZGlyLCApLAogICAgICAgICAgICAgKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZ1bmNzLmV4dGVuZCgoCkBAIC0yNzE2LDEyICsyODE3LDI0IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZCgoc2VsZi5maWxlbmFtZXMsIG9zLnJlYWRsaW5rLCkpCiAKKwogICAgICAgICBmb3IgZmlsZW5hbWVzLCBmdW5jLCAqZnVuY19hcmdzIGluIGZ1bmNzOgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZW5hbWVzOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZnVuYyhuYW1lLCAqZnVuY19hcmdzKQorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKG5hbWUsICpmdW5jX2FyZ3MpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdzaG91bGQgYmUnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKG5hbWUsICpmdW5jX2FyZ3MpCiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGVyci5maWxlbmFtZSwgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhlcnIuZmlsZW5hbWUsIG5hbWUsIHN0cihmdW5jKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgICAgICAgICAgICAgICMgaXNzdWUyNzc4MTogdW5kZWNvZGFibGUgYnl0ZXMgY3VycmVudGx5IHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICAgICAgICAgICAgICAjIGJ5IDMuNi4wYjQgdGhpcyB3aWxsIGJlY29tZSBVbmljb2RlRGVjb2RlRXJyb3Igb3Igbm90aGluZworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXJyLl9fY29udGV4dF9fLCBVbmljb2RlRGVjb2RlRXJyb3IpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBleGNlcHRpb24gdGhyb3duIGJ5IHt9Ii5mb3JtYXQoZnVuYykpCiAKQEAgLTI4MTksNiArMjkzMiw2MyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9pbmhlcml0YWJsZShzbGF2ZV9mZCksIEZhbHNlKQogCiAKK2NsYXNzIFBhdGhUQ29udmVydGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdHVwbGVzIG9mIChmdW5jdGlvbiBuYW1lLCBhbGxvd3MgZmQgYXJndW1lbnRzLCBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0bworICAgICMgZnVuY3Rpb24sIGNsZWFudXAgZnVuY3Rpb24pCisgICAgZnVuY3Rpb25zID0gWworICAgICAgICAoJ3N0YXQnLCBUcnVlLCAoKSwgTm9uZSksCisgICAgICAgICgnbHN0YXQnLCBGYWxzZSwgKCksIE5vbmUpLAorICAgICAgICAoJ2FjY2VzcycsIEZhbHNlLCAob3MuRl9PSywpLCBOb25lKSwKKyAgICAgICAgKCdjaGZsYWdzJywgRmFsc2UsICgwLCksIE5vbmUpLAorICAgICAgICAoJ2xjaGZsYWdzJywgRmFsc2UsICgwLCksIE5vbmUpLAorICAgICAgICAoJ29wZW4nLCBGYWxzZSwgKDAsKSwgZ2V0YXR0cihvcywgJ2Nsb3NlJywgTm9uZSkpLAorICAgIF0KKworICAgIGRlZiB0ZXN0X3BhdGhfdF9jb252ZXJ0ZXIoc2VsZik6CisgICAgICAgIHN0cl9maWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCA9IGJ5dGVzX2ZpbGVuYW1lID0gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnl0ZXNfZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTi5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCA9IF9QYXRoTGlrZShieXRlc19maWxlbmFtZSkKKyAgICAgICAgZmQgPSBvcy5vcGVuKF9QYXRoTGlrZShzdHJfZmlsZW5hbWUpLCBvcy5PX1dST05MWXxvcy5PX0NSRUFUKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQorCisgICAgICAgIGludF9mc3BhdGggPSBfUGF0aExpa2UoZmQpCisgICAgICAgIHN0cl9mc3BhdGggPSBfUGF0aExpa2Uoc3RyX2ZpbGVuYW1lKQorCisgICAgICAgIGZvciBuYW1lLCBhbGxvd19mZCwgZXh0cmFfYXJncywgY2xlYW51cF9mbiBpbiBzZWxmLmZ1bmN0aW9uczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWU9bmFtZSk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmbiA9IGdldGF0dHIob3MsIG5hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgZm9yIHBhdGggaW4gKHN0cl9maWxlbmFtZSwgYnl0ZXNfZmlsZW5hbWUsIHN0cl9mc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWU9bmFtZSwgcGF0aD1wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZuKHBhdGgsICpleHRyYV9hcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xlYW51cF9mbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2ZuKHJlc3VsdCkKKworICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzJyk6CisgICAgICAgICAgICAgICAgICAgIGZuKGludF9mc3BhdGgsICpleHRyYV9hcmdzKQorCisgICAgICAgICAgICAgICAgaWYgYWxsb3dfZmQ6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZuKGZkLCAqZXh0cmFfYXJncykgICMgc2hvdWxkIG5vdCBmYWlsCisgICAgICAgICAgICAgICAgICAgIGlmIGNsZWFudXBfZm4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2ZuKHJlc3VsdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcy5QYXRoTGlrZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgZm4oZmQsICpleHRyYV9hcmdzKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfYmxvY2tpbmcnKSwKICAgICAgICAgICAgICAgICAgICAgICduZWVkcyBvcy5nZXRfYmxvY2tpbmcoKSBhbmQgb3Muc2V0X2Jsb2NraW5nKCknKQogY2xhc3MgQmxvY2tpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yODQyLDE1ICszMDEyLDE4IEBACiAKIAogY2xhc3MgVGVzdFNjYW5kaXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcgPSBzdXBwb3J0LmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcKKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5yZWFscGF0aChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5ieXRlc19wYXRoID0gb3MuZnNlbmNvZGUoc2VsZi5wYXRoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHNlbGYucGF0aCkKICAgICAgICAgb3MubWtkaXIoc2VsZi5wYXRoKQogCiAgICAgZGVmIGNyZWF0ZV9maWxlKHNlbGYsIG5hbWU9ImZpbGUudHh0Iik6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgbmFtZSkKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGIncHl0aG9uJykKKyAgICAgICAgcGF0aCA9IHNlbGYuYnl0ZXNfcGF0aCBpZiBpc2luc3RhbmNlKG5hbWUsIGJ5dGVzKSBlbHNlIHNlbGYucGF0aAorICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihwYXRoLCBuYW1lKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidweXRob24nKQogICAgICAgICByZXR1cm4gZmlsZW5hbWUKIAogICAgIGRlZiBnZXRfZW50cmllcyhzZWxmLCBuYW1lcyk6CkBAIC0yODczLDYgKzMwNDYsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0MSwgc3RhdDIpCiAKICAgICBkZWYgY2hlY2tfZW50cnkoc2VsZiwgZW50cnksIG5hbWUsIGlzX2RpciwgaXNfZmlsZSwgaXNfc3ltbGluayk6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlbnRyeSwgb3MuRGlyRW50cnkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5wYXRoLCBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCBuYW1lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pbm9kZSgpLApAQCAtMjkzOCwxNSArMzExMiwxNiBAQAogICAgICAgICAgICAgc2VsZi5jaGVja19lbnRyeShlbnRyeSwgJ3N5bWxpbmtfZmlsZS50eHQnLCBGYWxzZSwgVHJ1ZSwgVHJ1ZSkKIAogICAgIGRlZiBnZXRfZW50cnkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGVudHJpZXMgPSBsaXN0KG9zLnNjYW5kaXIoc2VsZi5wYXRoKSkKKyAgICAgICAgcGF0aCA9IHNlbGYuYnl0ZXNfcGF0aCBpZiBpc2luc3RhbmNlKG5hbWUsIGJ5dGVzKSBlbHNlIHNlbGYucGF0aAorICAgICAgICBlbnRyaWVzID0gbGlzdChvcy5zY2FuZGlyKHBhdGgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzKSwgMSkKIAogICAgICAgICBlbnRyeSA9IGVudHJpZXNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5uYW1lLCBuYW1lKQogICAgICAgICByZXR1cm4gZW50cnkKIAotICAgIGRlZiBjcmVhdGVfZmlsZV9lbnRyeShzZWxmKToKLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKCkKKyAgICBkZWYgY3JlYXRlX2ZpbGVfZW50cnkoc2VsZiwgbmFtZT0nZmlsZS50eHQnKToKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKG5hbWU9bmFtZSkKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2VudHJ5KG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpKQogCiAgICAgZGVmIHRlc3RfY3VycmVudF9kaXJlY3Rvcnkoc2VsZik6CkBAIC0yOTY3LDYgKzMxNDIsMTggQEAKICAgICAgICAgZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGVudHJ5KSwgIjxEaXJFbnRyeSAnZmlsZS50eHQnPiIpCiAKKyAgICBkZWYgdGVzdF9mc3BhdGhfcHJvdG9jb2woc2VsZik6CisgICAgICAgIGVudHJ5ID0gc2VsZi5jcmVhdGVfZmlsZV9lbnRyeSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnNwYXRoKGVudHJ5KSwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ2ZpbGUudHh0JykpCisKKyAgICBkZWYgdGVzdF9mc3BhdGhfcHJvdG9jb2xfYnl0ZXMoc2VsZik6CisgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gb3MuZnNlbmNvZGUoJ2J5dGVzZmlsZS50eHQnKQorICAgICAgICBieXRlc19lbnRyeSA9IHNlbGYuY3JlYXRlX2ZpbGVfZW50cnkobmFtZT1ieXRlc19maWxlbmFtZSkKKyAgICAgICAgZnNwYXRoID0gb3MuZnNwYXRoKGJ5dGVzX2VudHJ5KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnNwYXRoLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmZzZW5jb2RlKHNlbGYucGF0aCksYnl0ZXNfZmlsZW5hbWUpKQorCiAgICAgZGVmIHRlc3RfcmVtb3ZlZF9kaXIoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnZGlyJykKIApAQCAtMzAzMCwxMSArMzIxNyw2IEBACiAgICAgICAgIGVudHJ5LnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogCiAgICAgZGVmIHRlc3RfYnl0ZXMoc2VsZik6Ci0gICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgICAgICMgT24gV2luZG93cywgb3Muc2NhbmRpcihieXRlcykgbXVzdCByYWlzZSBhbiBleGNlcHRpb24KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgYicuJykKLSAgICAgICAgICAgIHJldHVybgotCiAgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKIAogICAgICAgICBwYXRoX2J5dGVzID0gb3MuZnNlbmNvZGUoc2VsZi5wYXRoKQpAQCAtMzA2NCw2ICszMjQ2LDExMiBAQAogICAgICAgICBmb3Igb2JqIGluIFsxMjM0LCAxLjIzNCwge30sIFtdXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgb2JqKQogCisgICAgZGVmIHRlc3RfY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgaXRlcmF0b3IuY2xvc2UoKQorICAgICAgICAjIG11bHRpcGxlIGNsb3NlcworICAgICAgICBpdGVyYXRvci5jbG9zZSgpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSBhcyBpdGVyYXRvcjoKKyAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl9jbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSBhcyBpdGVyYXRvcjoKKyAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgICAgICBpdGVyYXRvci5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUyLnR4dCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBvcy5zY2FuZGlyKHNlbGYucGF0aCkgYXMgaXRlcmF0b3I6CisgICAgICAgICAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorCisgICAgZGVmIHRlc3RfcmVzb3VyY2Vfd2FybmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICBpdGVyYXRvciA9IG9zLnNjYW5kaXIoc2VsZi5wYXRoKQorICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUmVzb3VyY2VXYXJuaW5nKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorICAgICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgIyBleGhhdXN0ZWQgaXRlcmF0b3IKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbGlzdChpdGVyYXRvcikKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorCisKK2NsYXNzIFRlc3RQRVA1MTkodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBBYnN0cmFjdGVkIHNvIGl0IGNhbiBiZSBvdmVycmlkZGVuIHRvIHRlc3QgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24KKyAgICAjIGlmIGEgQyB2ZXJzaW9uIGlzIHByb3ZpZGVkLgorICAgIGZzcGF0aCA9IHN0YXRpY21ldGhvZChvcy5mc3BhdGgpCisKKyAgICBkZWYgdGVzdF9yZXR1cm5fYnl0ZXMoc2VsZik6CisgICAgICAgIGZvciBiIGluIGInaGVsbG8nLCBiJ2dvb2RieWUnLCBiJ3NvbWUvcGF0aC9hbmQvZmlsZSc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYuZnNwYXRoKGIpKQorCisgICAgZGVmIHRlc3RfcmV0dXJuX3N0cmluZyhzZWxmKToKKyAgICAgICAgZm9yIHMgaW4gJ2hlbGxvJywgJ2dvb2RieWUnLCAnc29tZS9wYXRoL2FuZC9maWxlJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgc2VsZi5mc3BhdGgocykpCisKKyAgICBkZWYgdGVzdF9mc2VuY29kZV9mc2RlY29kZShzZWxmKToKKyAgICAgICAgZm9yIHAgaW4gInBhdGgvbGlrZS9vYmplY3QiLCBiInBhdGgvbGlrZS9vYmplY3QiOgorICAgICAgICAgICAgcGF0aGxpa2UgPSBfUGF0aExpa2UocCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBzZWxmLmZzcGF0aChwYXRobGlrZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIicGF0aC9saWtlL29iamVjdCIsIG9zLmZzZW5jb2RlKHBhdGhsaWtlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInBhdGgvbGlrZS9vYmplY3QiLCBvcy5mc2RlY29kZShwYXRobGlrZSkpCisKKyAgICBkZWYgdGVzdF9wYXRobGlrZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnI2ZlZWx0aGVnaWwnLCBzZWxmLmZzcGF0aChfUGF0aExpa2UoJyNmZWVsdGhlZ2lsJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhfUGF0aExpa2UsIG9zLlBhdGhMaWtlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoX1BhdGhMaWtlKCksIG9zLlBhdGhMaWtlKSkKKworICAgIGRlZiB0ZXN0X2dhcmJhZ2VfaW5fZXhjZXB0aW9uX291dChzZWxmKToKKyAgICAgICAgdmFwb3IgPSB0eXBlKCdibGFoJywgKCksIHt9KQorICAgICAgICBmb3IgbyBpbiBpbnQsIHR5cGUsIG9zLCB2YXBvcigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCwgbykKKworICAgIGRlZiB0ZXN0X2FyZ3VtZW50X3JlcXVpcmVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoKQorCisgICAgZGVmIHRlc3RfYmFkX3BhdGhsaWtlKHNlbGYpOgorICAgICAgICAjIF9fZnNwYXRoX18gcmV0dXJucyBhIHZhbHVlIG90aGVyIHRoYW4gc3RyIG9yIGJ5dGVzLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoLCBfUGF0aExpa2UoNDIpKQorICAgICAgICAjIF9fZnNwYXRoX18gYXR0cmlidXRlIHRoYXQgaXMgbm90IGNhbGxhYmxlLgorICAgICAgICBjID0gdHlwZSgnZm9vJywgKCksIHt9KQorICAgICAgICBjLl9fZnNwYXRoX18gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mc3BhdGgsIGMoKSkKKyAgICAgICAgIyBfX2ZzcGF0aF9fIHJhaXNlcyBhbiBleGNlcHRpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBzZWxmLmZzcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX1BhdGhMaWtlKFplcm9EaXZpc2lvbkVycm9yKCkpKQorCisjIE9ubHkgdGVzdCBpZiB0aGUgQyB2ZXJzaW9uIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgVGVzdFBFUDUxOSBhbHJlYWR5IHRlc3RlZAorIyB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24uCitpZiBoYXNhdHRyKG9zLCAiX2ZzcGF0aCIpOgorICAgIGNsYXNzIFRlc3RQRVA1MTlQdXJlUHl0aG9uKFRlc3RQRVA1MTkpOgorCisgICAgICAgICIiIkV4cGxpY2l0bHkgdGVzdCB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygb3MuZnNwYXRoKCkuIiIiCisKKyAgICAgICAgZnNwYXRoID0gc3RhdGljbWV0aG9kKG9zLl9mc3BhdGgpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKaW5kZXggYWI2NTc3Zi4uZDZlNmY3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgcGFyc2VyCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0xMzksNiArMTM4LDQ1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgPSBiIikKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYSA9IGIgPSBjID0gZCA9IGUiKQogCisgICAgZGVmIHRlc3RfdmFyX2Fubm90KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4OiBpbnQgPSA1IikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieTogTGlzdFtUXSA9IFtdOyB6OiBbbGlzdF0gPSBmdW4oKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIng6IHR1cGxlID0gKDEsIDIpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZFtmKCldOiBpbnQgPSA0MiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImYoZFt4XSk6IHN0ciA9ICdhYmMnIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieC55LnoudzogY29tcGxleCA9IDQyaiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIng6IGludCIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBzdHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHk6IGludCA9IDVcbiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBzdHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHk6IGludCA9IDVcbiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHNlbGYueDogaW50ID0geFxuIikKKyAgICAgICAgIyBkb3VibGUgY2hlY2sgZm9yIG5vbnNlbnNlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiMisyOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiW106IGludCA9IDUiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygieCwgKnksIHo6IGludCA9IHJhbmdlKDUpIiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoInQ6IHR1cGxlID0gMSwgMiIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ1ID0gdjogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIkZhbHNlOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygieC5GYWxzZTogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIngueSw6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJbMF06IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJmKCk6IGludCIsIHt9LCB7fSkKKwogICAgIGRlZiB0ZXN0X3NpbXBsZV9hdWdtZW50ZWRfYXNzaWdubWVudHMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgKz0gYiIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgLT0gYiIpCkBAIC02MzMsMTIgKzY3MSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICc8c3ludGF4LXRyZWU+JykKICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICc8c3ludGF4LXRyZWU+JykKLSAgICAgICAgZm9yIGZpbGVuYW1lIGluICgnZmlsZS5weScsIGInZmlsZS5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpKToKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluICdmaWxlLnB5JywgYidmaWxlLnB5JzoKICAgICAgICAgICAgIGNvZGUgPSBwYXJzZXIuY29tcGlsZXN0KHN0LCBmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQogICAgICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNvZGUgPSBwYXJzZXIuY29tcGlsZXN0KHN0LCBmaWxlbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwYXJzZXIuY29tcGlsZXN0LCBzdCwgbGlzdChiJ2ZpbGUucHknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdC5jb21waWxlLCBsaXN0KGInZmlsZS5weScpKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKaW5kZXggZmE5NmQ5Zi4uMmYyYmEzYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQpAQCAtMTkwLDEzICsxOTAsMTggQEAKICAgICAgICAgUCA9IHNlbGYuY2xzCiAgICAgICAgIHAgPSBQKCdhJykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAsIFApCisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICJhL2IvYyIKICAgICAgICAgUCgnYScsICdiJywgJ2MnKQogICAgICAgICBQKCcvYScsICdiJywgJ2MnKQogICAgICAgICBQKCdhL2IvYycpCiAgICAgICAgIFAoJy9hL2IvYycpCisgICAgICAgIFAoUGF0aExpa2UoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSksIFAoJ2EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSwgJ2InKSwgUCgnYS9iJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJyksIFAoJ2InKSksIFAoJ2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpLCBQKCdiJyksIFAoJ2MnKSksIFAoUGF0aExpa2UoKSkpCiAKICAgICBkZWYgX2NoZWNrX3N0cl9zdWJjbGFzcyhzZWxmLCAqYXJncyk6CiAgICAgICAgICMgSXNzdWUgIzIxMTI3OiBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY29uc3RydWN0IGEgUHVyZVBhdGggb2JqZWN0CkBAIC0zODQsNiArMzg5LDEyIEBACiAgICAgICAgIHBhcnRzID0gcC5wYXJ0cwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnRzLCAoc2VwLCAnYScsICdiJykpCiAKKyAgICBkZWYgdGVzdF9mc3BhdGhfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJ2EvYicpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cihwLl9fZnNwYXRoX18oKSwgKCdhL2InLCkpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cihvcy5mc3BhdGgocCksICgnYS9iJywpKQorCiAgICAgZGVmIHRlc3RfZXF1aXZhbGVuY2VzKHNlbGYpOgogICAgICAgICBmb3IgaywgdHVwbGVzIGluIHNlbGYuZXF1aXZhbGVuY2VzLml0ZW1zKCk6CiAgICAgICAgICAgICBjYW5vbiA9IGsucmVwbGFjZSgnLycsIHNlbGYuc2VwKQpAQCAtMTQ3NCwxMyArMTQ4NSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLmdsb2IoImRpckEvLi4vZmlsZSoiKSksIHsgUChCQVNFLCAiZGlyQS8uLi9maWxlQSIpIH0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAuZ2xvYigiLi4veHl6enkiKSksIHNldCgpKQogCi0gICAgZGVmIF9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHNlbGYsIHAsIGV4cGVjdGVkKToKKworICAgIGRlZiBfY2hlY2tfcmVzb2x2ZShzZWxmLCBwLCBleHBlY3RlZCk6CiAgICAgICAgIHEgPSBwLnJlc29sdmUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEsIGV4cGVjdGVkKQogCi0gICAgZGVmIF9jaGVja19yZXNvbHZlX2Fic29sdXRlKHNlbGYsIHAsIGV4cGVjdGVkKToKLSAgICAgICAgcSA9IHAucmVzb2x2ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocSwgZXhwZWN0ZWQpCisgICAgIyB0aGlzIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGJvdGggcmVsYXRpdmUgYW5kIGFic29sdXRlIHJlc29sdXRpb25zCisgICAgX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUgPSBfY2hlY2tfcmVzb2x2ZV9hYnNvbHV0ZSA9IF9jaGVja19yZXNvbHZlCiAKICAgICBAd2l0aF9zeW1saW5rcwogICAgIGRlZiB0ZXN0X3Jlc29sdmVfY29tbW9uKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZGIucHkgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQppbmRleCA0NWJhNWE5Li45OTRlMDg4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQpAQCAtMSw2ICsxLDcgQEAKICMgQSB0ZXN0IHN1aXRlIGZvciBwZGI7IG5vdCB2ZXJ5IGNvbXByZWhlbnNpdmUgYXQgdGhlIG1vbWVudC4KIAogaW1wb3J0IGRvY3Rlc3QKK2ltcG9ydCBvcwogaW1wb3J0IHBkYgogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCkBAIC0zNCw3ICszNSw3IEBACiAgICAgIiIiVGhpcyB0ZXN0cyB0aGUgY3VzdG9tIGRpc3BsYXlob29rIGZvciBwZGIuCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oZm9vLCBiYXIpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBwYXNzCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWwpAQCAtNzQsNyArNzUsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIGZvby51cHBlcigpCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogICAgIC4uLiAgICAgcHJpbnQocmV0KQogCkBAIC0xNzMsNyArMTc0LDcgQEAKICAgICAiIiJUZXN0IGJhc2ljIGNvbW1hbmRzIHJlbGF0ZWQgdG8gYnJlYWtwb2ludHMuCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcHJpbnQoMSkKICAgICAuLi4gICAgIHByaW50KDIpCiAgICAgLi4uICAgICBwcmludCgzKQpAQCAtMzA1LDcgKzMwNiw3IEBACiAgICAgLi4uICAgICByZXR1cm4gZm9vCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsgICMgZG9jdGVzdDogK0VMTElQU0lTLCArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTMyOCw3ICszMjksNyBAQAogICAgIC0+IHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKICAgICAoUGRiKSBsaXN0CiAgICAgICAxICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgICAgMiAgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAgIDMgIC0+ICAgICAgICAgcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogICAgIFtFT0ZdCiAgICAgKFBkYikgc3RlcApAQCAtMzkxLDcgKzM5Miw3IEBACiAgICAgLi4uICAgICAgICAgcHJpbnQoJ0V4Y2VwdGlvbiEnKQogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgLi4uICAgICBwcmludCgnTm90IHJlYWNoZWQuJykKIApAQCAtNDI0LDcgKzQyNSw3IEBACiAgICAgLT4gMS8wCiAgICAgKFBkYikgbGlzdAogICAgICAgMSAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgICAzICAtPiAgICAgICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgICA0ICAgICAgICAgICAgIHByaW50KCdOb3QgcmVhY2hlZC4nKQogICAgIFtFT0ZdCkBAIC00NDgsNyArNDQ5LDcgQEAKIAogICAgID4+PiBkZWYgc2tpcF9tb2R1bGUoKToKICAgICAuLi4gICAgIGltcG9ydCBzdHJpbmcKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ3N0cmkqJ10sIG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9WydzdHJpKiddLCBub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBzdHJpbmcuY2Fwd29yZHMoJ0ZPTycpCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWwpAQCAtNDc3LDcgKzQ3OCw3IEBACiAgICAgPj4+IGRlZiBza2lwX21vZHVsZSgpOgogICAgIC4uLiAgICAgZGVmIGNhbGxiYWNrKCk6CiAgICAgLi4uICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ21vZHVsZV90b19za2lwKiddLCBub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnbW9kdWxlX3RvX3NraXAqJ10sIG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIG1vZC5mb29fcG9ueShjYWxsYmFjaykKIAogICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbCkBAIC01MTgsNyArNTE5LDcgQEAKICAgICAiIiJUZXN0IHRoYXQgImNvbnRpbnVlIiBhbmQgIm5leHQiIHdvcmsgcHJvcGVybHkgaW4gYm90dG9tIGZyYW1lIChpc3N1ZSAjNTI5NCkuCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGIsIHN5czsgaW5zdCA9IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkKKyAgICAuLi4gICAgIGltcG9ydCBwZGIsIHN5czsgaW5zdCA9IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKQogICAgIC4uLiAgICAgaW5zdC5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgaW5zdC5ib3RmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKSAgIyBoYWNrZXJ5IHRvIGdldCB0aGUgcmlnaHQgYm90ZnJhbWUKICAgICAuLi4gICAgIHByaW50KDEpCkBAIC01NTgsOCArNTU5LDcgQEAKIAogZGVmIHBkYl9pbnZva2UobWV0aG9kLCBhcmcpOgogICAgICIiIlJ1biBwZGIubWV0aG9kKGFyZykuIiIiCi0gICAgaW1wb3J0IHBkYgotICAgIGdldGF0dHIocGRiLlBkYihub3NpZ2ludD1UcnVlKSwgbWV0aG9kKShhcmcpCisgICAgZ2V0YXR0cihwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSksIG1ldGhvZCkoYXJnKQogCiAKIGRlZiB0ZXN0X3BkYl9ydW5fd2l0aF9pbmNvcnJlY3RfYXJndW1lbnQoKToKQEAgLTYwOCw3ICs2MDgsNyBAQAogICAgIC4uLiAgICAgeCA9IDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgIC4uLiAgICAgdGVzdF9mdW5jdGlvbl8yKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCkBAIC02NzQsNyArNjc0LDcgQEAKICAgICAuLi4gICAgIHlpZWxkIDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBpdCA9IHRlc3RfZ2VuKCkKICAgICAuLi4gICAgIHRyeToKICAgICAuLi4gICAgICAgICBpZiBuZXh0KGl0KSAhPSAwOgpAQCAtNzM0LDcgKzczNCw3IEBACiAgICAgLi4uICAgICB5aWVsZCAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgaXQgPSB0ZXN0X2dlbigpCiAgICAgLi4uICAgICB0cnk6CiAgICAgLi4uICAgICAgICAgaWYgbmV4dChpdCkgIT0gMDoKQEAgLTc4OSw3ICs3ODksNyBAQAogICAgIC4uLiAgICAgeWllbGQgMgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGZvciBpIGluIHRlc3RfZ2VuKCk6CiAgICAgLi4uICAgICAgICAgcHJpbnQoaSkKICAgICAuLi4gICAgIHByaW50KCJmaW5pc2hlZCIpCkBAIC04MzEsNyArODMxLDcgQEAKICAgICAuLi4gICAgIHJldHVybiAxCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgZm9yIGkgaW4gdGVzdF9nZW4oKToKICAgICAuLi4gICAgICAgICBwcmludCgndmFsdWUnLCBpKQogICAgIC4uLiAgICAgeCA9IDEyMwpAQCAtODc2LDcgKzg3Niw3IEBACiAgICAgLi4uICAgICByZXR1cm4geAogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGZvciBpIGluIHRlc3RfZ2VuKCk6CiAgICAgLi4uICAgICAgICAgcHJpbnQoJ3ZhbHVlJywgaSkKICAgICAuLi4gICAgIHggPSAxMjMKQEAgLTEwMjYsNyArMTAyNiw3IEBACiAgICAgICAgICAgICAgICAgaW1wb3J0IHBkYgogCiAgICAgICAgICAgICAgICAgZGVmIHN0YXJ0X3BkYigpOgotICAgICAgICAgICAgICAgICAgICBwZGIuUGRiKCkuc2V0X3RyYWNlKCkKKyAgICAgICAgICAgICAgICAgICAgcGRiLlBkYihyZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgICAgICAgICAgICAgICAgIHggPSAxCiAgICAgICAgICAgICAgICAgICAgIHkgPSAxCiAKQEAgLTEwNTUsNiArMTA1NSwzOCBAQAogICAgICAgICAgICAgLmZvcm1hdChleHBlY3RlZCwgc3Rkb3V0KSkKIAogCisgICAgZGVmIHRlc3RfcmVhZHJjX2t3YXJnKHNlbGYpOgorICAgICAgICBzY3JpcHQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKKworICAgICAgICAgICAgcHJpbnQoJ2hlbGxvJykKKyAgICAgICAgIiIiKQorCisgICAgICAgIHNhdmVfaG9tZSA9IG9zLmVudmlyb24ucG9wKCdIT01FJywgTm9uZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKCk6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCcucGRicmMnLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoImludmFsaWRcbiIpCisKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oJ21haW4ucHknLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2NyaXB0KQorCisgICAgICAgICAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAnbWFpbi5weSddCisgICAgICAgICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oCisgICAgICAgICAgICAgICAgICAgIGNtZCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICB3aXRoIHByb2M6CisgICAgICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZShiJ3FcbicpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIk5hbWVFcnJvcjogbmFtZSAnaW52YWxpZCcgaXMgbm90IGRlZmluZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dC5kZWNvZGUoKSkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgc2F2ZV9ob21lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG9zLmVudmlyb25bJ0hPTUUnXSA9IHNhdmVfaG9tZQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQppbmRleCA0MWU1MDkxLi5iMDMzNjQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQpAQCAtMSw5ICsxLDggQEAKIGltcG9ydCBkaXMKIGltcG9ydCByZQogaW1wb3J0IHN5cwotZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIG1hdGggaW1wb3J0IGNvcHlzaWduCiAKIGZyb20gdGVzdC5ieXRlY29kZV9oZWxwZXIgaW1wb3J0IEJ5dGVjb2RlVGVzdENhc2UKIApAQCAtMzAsMjIgKzI5LDI1IEBACiAKICAgICBkZWYgdGVzdF9nbG9iYWxfYXNfY29uc3RhbnQoc2VsZik6CiAgICAgICAgICMgTE9BRF9HTE9CQUwgTm9uZS9UcnVlL0ZhbHNlICAtLT4gIExPQURfQ09OU1QgTm9uZS9UcnVlL0ZhbHNlCi0gICAgICAgIGRlZiBmKHgpOgotICAgICAgICAgICAgTm9uZQotICAgICAgICAgICAgTm9uZQorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgeCA9IE5vbmUKKyAgICAgICAgICAgIHggPSBOb25lCiAgICAgICAgICAgICByZXR1cm4geAotICAgICAgICBkZWYgZyh4KToKLSAgICAgICAgICAgIFRydWUKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHggPSBUcnVlCiAgICAgICAgICAgICByZXR1cm4geAotICAgICAgICBkZWYgaCh4KToKLSAgICAgICAgICAgIEZhbHNlCisgICAgICAgIGRlZiBoKCk6CisgICAgICAgICAgICB4ID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybiB4CisKICAgICAgICAgZm9yIGZ1bmMsIGVsZW0gaW4gKChmLCBOb25lKSwgKGcsIFRydWUpLCAoaCwgRmFsc2UpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShmdW5jLCAnTE9BRF9HTE9CQUwnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGZ1bmMsICdMT0FEX0NPTlNUJywgZWxlbSkKKwogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgJ0FkZGluZyBhIGRvY3N0cmluZyBtYWRlIHRoaXMgdGVzdCBmYWlsIGluIFB5Mi41LjAnCiAgICAgICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShmLCAnTE9BRF9HTE9CQUwnKQogICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoZiwgJ0xPQURfQ09OU1QnLCBOb25lKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTdjZWVkLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotIiIiCi1UZXN0IHN1aXRlIHRvIGNoZWNrIGNvbXBsaWFuY2Ugd2l0aCBQRVAgMjQ3LCB0aGUgc3RhbmRhcmQgQVBJCi1mb3IgaGFzaGluZyBhbGdvcml0aG1zCi0iIiIKLQotaW1wb3J0IGhtYWMKLWltcG9ydCB1bml0dGVzdAotZnJvbSBoYXNobGliIGltcG9ydCBtZDUsIHNoYTEsIHNoYTIyNCwgc2hhMjU2LCBzaGEzODQsIHNoYTUxMgotCi1jbGFzcyBQZXAyNDdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiBjaGVja19tb2R1bGUoc2VsZiwgbW9kdWxlLCBrZXk9Tm9uZSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ2RpZ2VzdF9zaXplJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGUuZGlnZXN0X3NpemUgaXMgTm9uZSBvciBtb2R1bGUuZGlnZXN0X3NpemUgPiAwKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChtb2R1bGUubmV3LCBtb2R1bGUuZGlnZXN0X3NpemUsIGtleSkKLQotICAgIGRlZiBjaGVja19vYmplY3Qoc2VsZiwgY2xzLCBkaWdlc3Rfc2l6ZSwga2V5LCBkaWdlc3Rtb2Q9Tm9uZSk6Ci0gICAgICAgIGlmIGtleSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIGRpZ2VzdG1vZCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGRpZ2VzdG1vZCA9IG1kNQotICAgICAgICAgICAgb2JqMSA9IGNscyhrZXksIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpCi0gICAgICAgICAgICBvYmoyID0gY2xzKGtleSwgYidzdHJpbmcnLCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKQotICAgICAgICAgICAgaDEgPSBjbHMoa2V5LCBiJ3N0cmluZycsIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpLmRpZ2VzdCgpCi0gICAgICAgICAgICBvYmozID0gY2xzKGtleSwgZGlnZXN0bW9kPWRpZ2VzdG1vZCkKLSAgICAgICAgICAgIG9iajMudXBkYXRlKGInc3RyaW5nJykKLSAgICAgICAgICAgIGgyID0gb2JqMy5kaWdlc3QoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb2JqMSA9IGNscygpCi0gICAgICAgICAgICBvYmoyID0gY2xzKGInc3RyaW5nJykKLSAgICAgICAgICAgIGgxID0gY2xzKGInc3RyaW5nJykuZGlnZXN0KCkKLSAgICAgICAgICAgIG9iajMgPSBjbHMoKQotICAgICAgICAgICAgb2JqMy51cGRhdGUoYidzdHJpbmcnKQotICAgICAgICAgICAgaDIgPSBvYmozLmRpZ2VzdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEsIGgyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihvYmoxLCAnZGlnZXN0X3NpemUnKSkKLQotICAgICAgICBpZiBkaWdlc3Rfc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqMS5kaWdlc3Rfc2l6ZSwgZGlnZXN0X3NpemUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmRpZ2VzdF9zaXplLCBsZW4oaDEpKQotICAgICAgICBvYmoxLnVwZGF0ZShiJ3N0cmluZycpCi0gICAgICAgIG9ial9jb3B5ID0gb2JqMS5jb3B5KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmRpZ2VzdCgpLCBvYmpfY29weS5kaWdlc3QoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmhleGRpZ2VzdCgpLCBvYmpfY29weS5oZXhkaWdlc3QoKSkKLQotICAgICAgICBkaWdlc3QsIGhleGRpZ2VzdCA9IG9iajEuZGlnZXN0KCksIG9iajEuaGV4ZGlnZXN0KCkKLSAgICAgICAgaGQyID0gIiIKLSAgICAgICAgZm9yIGJ5dGUgaW4gZGlnZXN0OgotICAgICAgICAgICAgaGQyICs9ICclMDJ4JyAlIGJ5dGUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZDIsIGhleGRpZ2VzdCkKLQotICAgIGRlZiB0ZXN0X21kNShzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3QobWQ1LCBOb25lLCBOb25lKQotCi0gICAgZGVmIHRlc3Rfc2hhKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGExLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGEyMjQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTI1NiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhMzg0LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGE1MTIsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9obWFjKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX21vZHVsZShobWFjLCBrZXk9YidhYmMnKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQppbmRleCBkNDY3ZDUyLi5lNmM1ZDA4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQpAQCAtMzQsOCArMzQsNiBAQAogCiAgICAgdW5waWNrbGVyID0gcGlja2xlLl9VbnBpY2tsZXIKICAgICBiYWRfc3RhY2tfZXJyb3JzID0gKEluZGV4RXJyb3IsKQotICAgIGJhZF9tYXJrX2Vycm9ycyA9IChJbmRleEVycm9yLCBwaWNrbGUuVW5waWNrbGluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBFT0ZFcnJvcikKICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEVPRkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QuZXJyb3IsIEluZGV4RXJyb3IsIEltcG9ydEVycm9yKQpAQCAtNzAsOCArNjgsNiBAQAogICAgIHBpY2tsZXIgPSBwaWNrbGUuX1BpY2tsZXIKICAgICB1bnBpY2tsZXIgPSBwaWNrbGUuX1VucGlja2xlcgogICAgIGJhZF9zdGFja19lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgSW5kZXhFcnJvcikKLSAgICBiYWRfbWFya19lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgRU9GRXJyb3IpCiAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBFT0ZFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LmVycm9yLCBJbmRleEVycm9yLCBJbXBvcnRFcnJvcikKQEAgLTE0Myw5ICsxMzksNyBAQAogICAgIGNsYXNzIENVbnBpY2tsZXJUZXN0cyhQeVVucGlja2xlclRlc3RzKToKICAgICAgICAgdW5waWNrbGVyID0gX3BpY2tsZS5VbnBpY2tsZXIKICAgICAgICAgYmFkX3N0YWNrX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCkKLSAgICAgICAgYmFkX21hcmtfZXJyb3JzID0gKEVPRkVycm9yLCkKLSAgICAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBFT0ZFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcikKKyAgICAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCkKIAogICAgIGNsYXNzIENQaWNrbGVyVGVzdHMoUHlQaWNrbGVyVGVzdHMpOgogICAgICAgICBwaWNrbGVyID0gX3BpY2tsZS5QaWNrbGVyCkBAIC0zNDEsNiArMzM1LDkgQEAKICAgICAgICAgICAgICAgICBpZiAobW9kdWxlMiwgbmFtZTIpID09ICgnZXhjZXB0aW9ucycsICdPU0Vycm9yJyk6CiAgICAgICAgICAgICAgICAgICAgIGF0dHIgPSBnZXRhdHRyaWJ1dGUobW9kdWxlMywgbmFtZTMpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGF0dHIsIE9TRXJyb3IpKQorICAgICAgICAgICAgICAgIGVsaWYgKG1vZHVsZTIsIG5hbWUyKSA9PSAoJ2V4Y2VwdGlvbnMnLCAnSW1wb3J0RXJyb3InKToKKyAgICAgICAgICAgICAgICAgICAgYXR0ciA9IGdldGF0dHJpYnV0ZShtb2R1bGUzLCBuYW1lMykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYXR0ciwgSW1wb3J0RXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgbmFtZSA9IG1hcHBpbmcobW9kdWxlMiwgbmFtZTIpCiAgICAgICAgICAgICAgICAgICAgIGlmIG1vZHVsZTNbOjFdICE9ICdfJzoKQEAgLTQwNyw2ICs0MDQsMTEgQEAKICAgICAgICAgICAgICAgICBpZiBleGMgaXMgbm90IE9TRXJyb3IgYW5kIGlzc3ViY2xhc3MoZXhjLCBPU0Vycm9yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZlcnNlX21hcHBpbmcoJ2J1aWx0aW5zJywgbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGNlcHRpb25zJywgJ09TRXJyb3InKSkKKyAgICAgICAgICAgICAgICBlbGlmIGV4YyBpcyBub3QgSW1wb3J0RXJyb3IgYW5kIGlzc3ViY2xhc3MoZXhjLCBJbXBvcnRFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2ZXJzZV9tYXBwaW5nKCdidWlsdGlucycsIG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsICdJbXBvcnRFcnJvcicpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hcHBpbmcoJ2V4Y2VwdGlvbnMnLCBuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCBuYW1lKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmVyc2VfbWFwcGluZygnYnVpbHRpbnMnLCBuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCBuYW1lKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZXRvb2xzLnB5CmluZGV4IGJiZTY4NzUuLjg2YmViZmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weQpAQCAtMSw5ICsxLDkgQEAKLWltcG9ydCBzdHJ1Y3QKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBwaWNrbGV0b29scwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBpY2tsZVRlc3RzCiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBpY2tsZU1vZHVsZVRlc3RzCitpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgT3B0aW1pemVkUGlja2xlVGVzdHMoQWJzdHJhY3RQaWNrbGVUZXN0cywgQWJzdHJhY3RQaWNrbGVNb2R1bGVUZXN0cyk6CiAKQEAgLTU5LDggKzU5LDQwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocGlja2xlLkJJTlBVVCwgcGlja2xlZDIpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnYnl0ZXNfdHlwZXMnLAorICAgICAgICAgICAgICAgICAgICAgJ1VQX1RPX05FV0xJTkUnLCAnVEFLRU5fRlJPTV9BUkdVTUVOVDEnLAorICAgICAgICAgICAgICAgICAgICAgJ1RBS0VOX0ZST01fQVJHVU1FTlQ0JywgJ1RBS0VOX0ZST01fQVJHVU1FTlQ0VScsCisgICAgICAgICAgICAgICAgICAgICAnVEFLRU5fRlJPTV9BUkdVTUVOVDhVJywgJ0FyZ3VtZW50RGVzY3JpcHRvcicsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF91aW50MScsICdyZWFkX3VpbnQyJywgJ3JlYWRfaW50NCcsICdyZWFkX3VpbnQ0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VpbnQ4JywgJ3JlYWRfc3RyaW5nbmwnLCAncmVhZF9zdHJpbmdubF9ub2VzY2FwZScsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9zdHJpbmdubF9ub2VzY2FwZV9wYWlyJywgJ3JlYWRfc3RyaW5nMScsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9zdHJpbmc0JywgJ3JlYWRfYnl0ZXMxJywgJ3JlYWRfYnl0ZXM0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX2J5dGVzOCcsICdyZWFkX3VuaWNvZGVzdHJpbmdubCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF91bmljb2Rlc3RyaW5nMScsICdyZWFkX3VuaWNvZGVzdHJpbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VuaWNvZGVzdHJpbmc4JywgJ3JlYWRfZGVjaW1hbG5sX3Nob3J0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX2RlY2ltYWxubF9sb25nJywgJ3JlYWRfZmxvYXRubCcsICdyZWFkX2Zsb2F0OCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9sb25nMScsICdyZWFkX2xvbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICd1aW50MScsICd1aW50MicsICdpbnQ0JywgJ3VpbnQ0JywgJ3VpbnQ4JywgJ3N0cmluZ25sJywKKyAgICAgICAgICAgICAgICAgICAgICdzdHJpbmdubF9ub2VzY2FwZScsICdzdHJpbmdubF9ub2VzY2FwZV9wYWlyJywgJ3N0cmluZzEnLAorICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZzQnLCAnYnl0ZXMxJywgJ2J5dGVzNCcsICdieXRlczgnLAorICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVzdHJpbmdubCcsICd1bmljb2Rlc3RyaW5nMScsICd1bmljb2Rlc3RyaW5nNCcsCisgICAgICAgICAgICAgICAgICAgICAndW5pY29kZXN0cmluZzgnLCAnZGVjaW1hbG5sX3Nob3J0JywgJ2RlY2ltYWxubF9sb25nJywKKyAgICAgICAgICAgICAgICAgICAgICdmbG9hdG5sJywgJ2Zsb2F0OCcsICdsb25nMScsICdsb25nNCcsCisgICAgICAgICAgICAgICAgICAgICAnU3RhY2tPYmplY3QnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5aW50JywgJ3B5bG9uZycsICdweWludGVnZXJfb3JfYm9vbCcsICdweWJvb2wnLCAncHlmbG9hdCcsCisgICAgICAgICAgICAgICAgICAgICAncHlieXRlc19vcl9zdHInLCAncHlzdHJpbmcnLCAncHlieXRlcycsICdweXVuaWNvZGUnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5bm9uZScsICdweXR1cGxlJywgJ3B5bGlzdCcsICdweWRpY3QnLCAncHlzZXQnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5ZnJvemVuc2V0JywgJ2FueW9iamVjdCcsICdtYXJrb2JqZWN0JywgJ3N0YWNrc2xpY2UnLAorICAgICAgICAgICAgICAgICAgICAgJ09wY29kZUluZm8nLCAnb3Bjb2RlcycsICdjb2RlMm9wJywKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgcGlja2xldG9vbHMsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE9wdGltaXplZFBpY2tsZVRlc3RzKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1pc2NUZXN0Q2FzZSkKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHBpY2tsZXRvb2xzKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CmluZGV4IDZhN2I0NWYuLmFkMDFkMDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waXBlcy5weQpAQCAtMiw2ICsyLDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN0cmluZwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc2h1dGlsCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIHVubGluaywgcmVhcF9jaGlsZHJlbgogCiBpZiBvcy5uYW1lICE9ICdwb3NpeCc6CkBAIC0xOCw2ICsxOSw4IEBACiAgICAgICAgICAgICB1bmxpbmsoZikKIAogICAgIGRlZiB0ZXN0U2ltcGxlUGlwZTEoc2VsZik6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgndHInKSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndHIgaXMgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCiAgICAgICAgIHQuYXBwZW5kKHNfY29tbWFuZCwgcGlwZXMuU1RESU5fU1RET1VUKQogICAgICAgICBmID0gdC5vcGVuKFRFU1RGTiwgJ3cnKQpAQCAtMjcsNiArMzAsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgJ0hFTExPIFdPUkxEICMxJykKIAogICAgIGRlZiB0ZXN0U2ltcGxlUGlwZTIoc2VsZik6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgndHInKSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndHIgaXMgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoJ2hlbGxvIHdvcmxkICMyJykKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKQEAgLTM2LDYgKzQxLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICdIRUxMTyBXT1JMRCAjMicpCiAKICAgICBkZWYgdGVzdFNpbXBsZVBpcGUzKHNlbGYpOgorICAgICAgICBpZiBzaHV0aWwud2hpY2goJ3RyJykgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3RyIGlzIG5vdCBhdmFpbGFibGUnKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCdoZWxsbyB3b3JsZCAjMicpCiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKaW5kZXggYTgyMDU4Ny4uZmMwNGRjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQpAQCAtODEsOCArODEsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlczIsIFJFU09VUkNFX0RBVEEpCiAKICAgICAgICAgbmFtZXMgPSBbXQotICAgICAgICBmb3IgbG9hZGVyLCBuYW1lLCBpc3BrZyBpbiBwa2d1dGlsLml0ZXJfbW9kdWxlcyhbemlwX2ZpbGVdKToKLSAgICAgICAgICAgIG5hbWVzLmFwcGVuZChuYW1lKQorICAgICAgICBmb3IgbW9kdWxlaW5mbyBpbiBwa2d1dGlsLml0ZXJfbW9kdWxlcyhbemlwX2ZpbGVdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGVpbmZvLCBwa2d1dGlsLk1vZHVsZUluZm8pCisgICAgICAgICAgICBuYW1lcy5hcHBlbmQobW9kdWxlaW5mby5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVzLCBbJ3Rlc3RfZ2V0ZGF0YV96aXBmaWxlJ10pCiAKICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCkBAIC00MTMsNiArNDE0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHBrZ3V0aWwuZ2V0X2xvYWRlcigidGVzdC5zdXBwb3J0IikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3Lndhcm5pbmdzKSwgMCkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoX19uYW1lX18gPT0gJ19fbWFpbl9fJywgJ25vdCBjb21wYXRpYmxlIHdpdGggX19tYWluX18nKQogICAgIGRlZiB0ZXN0X2dldF9sb2FkZXJfaGFuZGxlc19taXNzaW5nX2xvYWRlcl9hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgIGdsb2JhbCBfX2xvYWRlcl9fCiAgICAgICAgIHRoaXNfbG9hZGVyID0gX19sb2FkZXJfXwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weSBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKaW5kZXggMThkZTExMC4uNWY4NzVlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CkBAIC0zMyw2ICszMyw3IEBACiAgICAgICAgICAgICAgICAgJ2ltcG9ydCBwbGF0Zm9ybTsgcHJpbnQocGxhdGZvcm0uYXJjaGl0ZWN0dXJlKCkpJ10KICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgICAgIHJldHVybiBwLmNvbW11bmljYXRlKCkKKwogICAgICAgICByZWFsID0gb3MucGF0aC5yZWFscGF0aChzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgbGluayA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgb3Muc3ltbGluayhyZWFsLCBsaW5rKQpAQCAtMjYyLDcgKzI2Myw3IEBACiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAogICAgICAgICAgICAgICAgICdpZ25vcmUnLAotICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgcidkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCiAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCiAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICkKQEAgLTMzOCw3ICszMzksNyBAQAogICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKaW5kZXggNjkyY2FjNC4uYzc3YTZiZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CkBAIC03LDcgKzcsNiBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGJpbmFzY2lpCiBpbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCkBAIC01MzQsOCArNTMzLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VyLCBpbl9kYXRhKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7IlBsaXN0Rm9ybWF0IiwgIlBMSVNUSEVBREVSIn0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgcGxpc3RsaWIsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RQbGlzdGxpYiwgVGVzdFBsaXN0bGliRGVwcmVjYXRlZCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0UGxpc3RsaWIsIFRlc3RQbGlzdGxpYkRlcHJlY2F0ZWQsIE1pc2NUZXN0Q2FzZSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQppbmRleCBiY2VlYjkzLi5lNWIxNmRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQpAQCAtOCw3ICs4LDYgQEAKIGltcG9ydCBhc3luY2hhdAogaW1wb3J0IHNvY2tldAogaW1wb3J0IG9zCi1pbXBvcnQgdGltZQogaW1wb3J0IGVycm5vCiAKIGZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlLCBza2lwVW5sZXNzCkBAIC0xNTMsMTAgKzE1MiwxMiBAQAogICAgICAgICBkZWYgY21kX3N0bHMoc2VsZiwgYXJnKToKICAgICAgICAgICAgIGlmIHNlbGYudGxzX2FjdGl2ZSBpcyBGYWxzZToKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJytPSyBCZWdpbiBUTFMgbmVnb3RpYXRpb24nKQotICAgICAgICAgICAgICAgIHRsc19zb2NrID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29ja2V0LCBjZXJ0ZmlsZT1DRVJURklMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlKQorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICAgICAgdGxzX3NvY2sgPSBjb250ZXh0LndyYXBfc29ja2V0KHNlbGYuc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCiAgICAgICAgICAgICAgICAgc2VsZi5kZWxfY2hhbm5lbCgpCiAgICAgICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHRsc19zb2NrKQogICAgICAgICAgICAgICAgIHNlbGYudGxzX2FjdGl2ZSA9IFRydWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CmluZGV4IDJhNTljMzguLmQyZjU4YmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQpAQCAtMTEsNyArMTEsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBwd2QKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0CiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdApAQCAtMzk4LDcgKzM5Nyw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChmcC5maWxlbm8oKSkpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBmbG9hdChmcC5maWxlbm8oKSkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmcC5jbG9zZSgpCkBAIC00MDgsMTYgKzQwNywxOCBAQAogICAgIGRlZiB0ZXN0X3N0YXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoYnl0ZWFycmF5KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpKQogCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGJ5dGVhcnJheShvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAnY2FuXCd0IHNwZWNpZnkgTm9uZSBmb3IgcGF0aCBhcmd1bWVudCcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBsaXN0KHN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGxpc3Qob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdta2ZpZm8nKSwgImRvbid0IGhhdmUgbWtmaWZvKCkiKQpAQCAtODYzLDkgKzg2NCw5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKICAgICAgICAgICAgIHMyID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPU5vbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyIG9yIE5vbmUsIG5vdCcsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9cG9zaXguZ2V0Y3dkKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciBvciBOb25lLCBub3QnLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPWZsb2F0KGYpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4sIGRpcl9mZD0xMCoqMjApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CmluZGV4IDA3ODNjMzYuLjhhMWUzM2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CkBAIC01OTYsNSArNTk2LDg1IEBACiAgICAgYXR0cmlidXRlcyA9IFsncmVscGF0aCcsICdzYW1lZmlsZScsICdzYW1lb3BlbmZpbGUnLCAnc2FtZXN0YXQnXQogCiAKK2NsYXNzIFBhdGhMaWtlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgcGF0aCA9IHBvc2l4cGF0aAorCisgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPScnKToKKyAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYucGF0aCwgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5wYXRoCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5maWxlX25hbWUgPSBzdXBwb3J0LlRFU1RGTi5sb3dlcigpCisgICAgICAgIHNlbGYuZmlsZV9wYXRoID0gc2VsZi5QYXRoTGlrZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZV9uYW1lLCAneGInLCAwKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZShiInRlc3RfcG9zaXhwYXRoLlBhdGhMaWtlVGVzdHMiKQorCisgICAgZGVmIGFzc2VydFBhdGhFcXVhbChzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKHNlbGYuZmlsZV9wYXRoKSwgZnVuYyhzZWxmLmZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9wYXRoX25vcm1jYXNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubm9ybWNhc2UpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzYWJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNhYnMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2pvaW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRoLmpvaW4oJ2EnLCBzZWxmLlBhdGhMaWtlKCdiJyksICdjJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoLmpvaW4oJ2EnLCAnYicsICdjJykpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXQpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXRleHQpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0ZHJpdmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGRyaXZlKQorCisgICAgZGVmIHRlc3RfcGF0aF9iYXNlbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmJhc2VuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9kaXJuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZGlybmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNsaW5rKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNsaW5rKQorCisgICAgZGVmIHRlc3RfcGF0aF9sZXhpc3RzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubGV4aXN0cykKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNtb3VudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzbW91bnQpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHVzZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR1c2VyKQorCisgICAgZGVmIHRlc3RfcGF0aF9leHBhbmR2YXJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZXhwYW5kdmFycykKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybXBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfYWJzcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmFic3BhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX3JlYWxwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgucmVhbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX3JlbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWxwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9jb21tb25wYXRoKHNlbGYpOgorICAgICAgICBjb21tb25fcGF0aCA9IHNlbGYucGF0aC5jb21tb25wYXRoKFtzZWxmLmZpbGVfcGF0aCwgc2VsZi5maWxlX25hbWVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbl9wYXRoLCBzZWxmLmZpbGVfbmFtZSkKKworCiBpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG93LnB5IGIvTGliL3Rlc3QvdGVzdF9wb3cucHkKaW5kZXggNmZlYWM0MC4uY2U5OWZlNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3cucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3cucHkKQEAgLTEsNCArMSw0IEBACi1pbXBvcnQgdGVzdC5zdXBwb3J0LCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIFBvd1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CmluZGV4IGVmNWU5OWUuLjE1Zjg4ZTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CkBAIC0yNzcsNyArMjc3LDYgQEAKICAgICAgICAgc29ja2V0cGFpciA9IHNlbGYuX3NvY2tldHBhaXIoKQogICAgICAgICBtYXN0ZXJzID0gW3MuZmlsZW5vKCkgZm9yIHMgaW4gc29ja2V0cGFpcl0KIAotICAgICAgICBvcy5jbG9zZShtYXN0ZXJzWzFdKQogICAgICAgICBzb2NrZXRwYWlyWzFdLmNsb3NlKCkKICAgICAgICAgb3MuY2xvc2Uod3JpdGVfdG9fc3RkaW5fZmQpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQppbmRleCAxOTMyYzZiLi4zZDg5ZTNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IGlvCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCB4bWwuc2F4CiAKIGZyb20geG1sLnNheC54bWxyZWFkZXIgaW1wb3J0IEF0dHJpYnV0ZXNJbXBsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5Y2xici5weSBiL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5CmluZGV4IDZmZmJiYmQuLjJjZmYxYzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5CkBAIC0xNTYsOSArMTU2LDkgQEAKICAgICAgICAgIyBUaGVzZSB3ZXJlIG9uY2UgYWJvdXQgdGhlIDEwIGxvbmdlc3QgbW9kdWxlcwogICAgICAgICBjbSgncmFuZG9tJywgaWdub3JlPSgnUmFuZG9tJywpKSAgIyBmcm9tIF9yYW5kb20gaW1wb3J0IFJhbmRvbSBhcyBDb3JlR2VuZXJhdG9yCiAgICAgICAgIGNtKCdjZ2knLCBpZ25vcmU9KCdsb2cnLCkpICAgICAgIyBzZXQgd2l0aCA9IGluIG1vZHVsZQotICAgICAgICBjbSgncGlja2xlJykKKyAgICAgICAgY20oJ3BpY2tsZScsIGlnbm9yZT0oJ3BhcnRpYWwnLCkpCiAgICAgICAgIGNtKCdhaWZjJywgaWdub3JlPSgnb3BlbmZwJywgJ19haWZjX3BhcmFtcycpKSAgIyBzZXQgd2l0aCA9IGluIG1vZHVsZQotICAgICAgICBjbSgnc3JlX3BhcnNlJywgaWdub3JlPSgnZHVtcCcsICdncm91cHMnKSkgIyBmcm9tIHNyZV9jb25zdGFudHMgaW1wb3J0ICo7IHByb3BlcnR5CisgICAgICAgIGNtKCdzcmVfcGFyc2UnLCBpZ25vcmU9KCdkdW1wJywgJ2dyb3VwcycsICdwb3MnKSkgIyBmcm9tIHNyZV9jb25zdGFudHMgaW1wb3J0ICo7IHByb3BlcnR5CiAgICAgICAgIGNtKCdwZGInKQogICAgICAgICBjbSgncHlkb2MnKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5IGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQppbmRleCBhZWU5NzliLi41MTc0ZDU2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKQEAgLTgzLDYgKzgzLDggQEAKICAgICAgfCAgRGF0YSBhbmQgb3RoZXIgYXR0cmlidXRlcyBkZWZpbmVkIGhlcmU6CiAgICAgIHxceDIwXHgyMAogICAgICB8ICBOT19NRUFOSU5HID0gJ2VnZ3MnCisgICAgIHxceDIwXHgyMAorICAgICB8ICBfX2Fubm90YXRpb25zX18gPSB7J05PX01FQU5JTkcnOiA8Y2xhc3MgJ3N0cic+fQogXHgyMFx4MjBceDIwXHgyMAogICAgIGNsYXNzIEMoYnVpbHRpbnMub2JqZWN0KQogICAgICB8ICBNZXRob2RzIGRlZmluZWQgaGVyZToKQEAgLTE5NSw2ICsxOTcsOCBAQAogRGF0YSBhbmQgb3RoZXIgYXR0cmlidXRlcyBkZWZpbmVkIGhlcmU6PGJyPgogPGRsPjxkdD48c3Ryb25nPk5PX01FQU5JTkc8L3N0cm9uZz4gPSAnZWdncyc8L2RsPgogCis8ZGw+PGR0PjxzdHJvbmc+X19hbm5vdGF0aW9uc19fPC9zdHJvbmc+ID0geydOT19NRUFOSU5HJzogJmx0O2NsYXNzICdzdHInJmd0O308L2RsPgorCiA8L3RkPjwvdHI+PC90YWJsZT4gPHA+CiA8dGFibGUgd2lkdGg9IjEwMCUlIiBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTIgYm9yZGVyPTAgc3VtbWFyeT0ic2VjdGlvbiI+CiA8dHIgYmdjb2xvcj0iI2ZmYzhkOCI+CkBAIC0yNjMsNyArMjY3LDcgQEAKIFVzZSBoZWxwKHN0cikgZm9yIGhlbHAgb24gdGhlIHN0ciBjbGFzcy4nJycucmVwbGFjZSgnXG4nLCBvcy5saW5lc2VwKQogCiAjIG91dHB1dCBwYXR0ZXJuIGZvciBtb2R1bGUgd2l0aCBiYWQgaW1wb3J0cwotYmFkaW1wb3J0X3BhdHRlcm4gPSAicHJvYmxlbSBpbiAlcyAtIEltcG9ydEVycm9yOiBObyBtb2R1bGUgbmFtZWQgJXIiCitiYWRpbXBvcnRfcGF0dGVybiA9ICJwcm9ibGVtIGluICVzIC0gTW9kdWxlTm90Rm91bmRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICVyIgogCiBleHBlY3RlZF9keW5hbWljYXR0cmlidXRlX3BhdHRlcm4gPSAiIiIKIEhlbHAgb24gY2xhc3MgREEgaW4gbW9kdWxlICVzOgpAQCAtNjM4LDggKzY0Miw5IEBACiAgICAgICAgIGRlbCBleHBlY3RlZFsnX19kb2NfXyddCiAgICAgICAgIGRlbCBleHBlY3RlZFsnX19jbGFzc19fJ10KICAgICAgICAgIyBpbnNwZWN0IHJlc29sdmVzIGRlc2NyaXB0b3JzIG9uIHR5cGUgaW50byBtZXRob2RzLCBidXQgdmFycyBkb2Vzbid0LAotICAgICAgICAjIHNvIHdlIG5lZWQgdG8gdXBkYXRlIF9fc3ViY2xhc3Nob29rX18uCisgICAgICAgICMgc28gd2UgbmVlZCB0byB1cGRhdGUgX19zdWJjbGFzc2hvb2tfXyBhbmQgX19pbml0X3N1YmNsYXNzX18uCiAgICAgICAgIGV4cGVjdGVkWydfX3N1YmNsYXNzaG9va19fJ10gPSBUZXN0Q2xhc3MuX19zdWJjbGFzc2hvb2tfXworICAgICAgICBleHBlY3RlZFsnX19pbml0X3N1YmNsYXNzX18nXSA9IFRlc3RDbGFzcy5fX2luaXRfc3ViY2xhc3NfXwogCiAgICAgICAgIG1ldGhvZHMgPSBweWRvYy5hbGxtZXRob2RzKFRlc3RDbGFzcykKICAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwobWV0aG9kcywgZXhwZWN0ZWQpCkBAIC04NTUsNiArODYwLDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZ2V0X3N1bW1hcnlfbGluZSh0LndyYXApLAogICAgICAgICAgICAgIndyYXAodGV4dCkgbWV0aG9kIG9mIHRleHR3cmFwLlRleHRXcmFwcGVyIGluc3RhbmNlIikKIAorICAgIGRlZiB0ZXN0X2ZpZWxkX29yZGVyX2Zvcl9uYW1lZF90dXBsZXMoc2VsZik6CisgICAgICAgIFBlcnNvbiA9IG5hbWVkdHVwbGUoJ1BlcnNvbicsIFsnbmlja25hbWUnLCAnZmlyc3RuYW1lJywgJ2FnZWdyb3VwJ10pCisgICAgICAgIHMgPSBweWRvYy5yZW5kZXJfZG9jKFBlcnNvbikKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHMuaW5kZXgoJ25pY2tuYW1lJyksIHMuaW5kZXgoJ2ZpcnN0bmFtZScpKQorICAgICAgICBzZWxmLmFzc2VydExlc3Mocy5pbmRleCgnZmlyc3RuYW1lJyksIHMuaW5kZXgoJ2FnZWdyb3VwJykpCisKKyAgICAgICAgY2xhc3MgTm9uSXRlcmFibGVGaWVsZHM6CisgICAgICAgICAgICBfZmllbGRzID0gTm9uZQorCisgICAgICAgIGNsYXNzIE5vbkhhc2hhYmxlRmllbGRzOgorICAgICAgICAgICAgX2ZpZWxkcyA9IFtbXV0KKworICAgICAgICAjIE1ha2Ugc3VyZSB0aGVzZSBkb2Vzbid0IGZhaWwKKyAgICAgICAgcHlkb2MucmVuZGVyX2RvYyhOb25JdGVyYWJsZUZpZWxkcykKKyAgICAgICAgcHlkb2MucmVuZGVyX2RvYyhOb25IYXNoYWJsZUZpZWxkcykKKwogICAgIEByZXF1aXJlc19kb2NzdHJpbmdzCiAgICAgZGVmIHRlc3RfYm91bmRfYnVpbHRpbl9tZXRob2Qoc2VsZik6CiAgICAgICAgIHMgPSBTdHJpbmdJTygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weSBiL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5CmluZGV4IDdjYWMwMTMuLjcxNTU0NGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5CkBAIC0xLDYgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKLWltcG9ydCBzeXMsIG9zLCBpbywgc3VicHJvY2VzcworaW1wb3J0IHN5cywgaW8sIHN1YnByb2Nlc3MKIGltcG9ydCBxdW9wcmkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5CmluZGV4IGU4MGVkMTcuLjBkZmMyOTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5CkBAIC03LDYgKzcsNyBAQAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKIGZyb20gbWF0aCBpbXBvcnQgbG9nLCBleHAsIHBpLCBmc3VtLCBzaW4KIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCiAKIGNsYXNzIFRlc3RCYXNpY09wczoKICAgICAjIFN1cGVyY2xhc3Mgd2l0aCB0ZXN0cyBjb21tb24gdG8gYWxsIGdlbmVyYXRvcnMuCkBAIC0xNDEsNiArMTQyLDczIEBACiAgICAgZGVmIHRlc3Rfc2FtcGxlX29uX2RpY3RzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZ2VuLnNhbXBsZSwgZGljdC5mcm9ta2V5cygnYWJjZGVmJyksIDIpCiAKKyAgICBkZWYgdGVzdF9jaG9pY2VzKHNlbGYpOgorICAgICAgICBjaG9pY2VzID0gc2VsZi5nZW4uY2hvaWNlcworICAgICAgICBkYXRhID0gWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZScsICd5ZWxsb3cnXQorICAgICAgICBzdHJfZGF0YSA9ICdhYmNkJworICAgICAgICByYW5nZV9kYXRhID0gcmFuZ2UoNCkKKyAgICAgICAgc2V0X2RhdGEgPSBzZXQocmFuZ2UoNCkpCisKKyAgICAgICAgIyBiYXNpYyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGZvciBzYW1wbGUgaW4gWworICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBrPTUpLAorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCByYW5nZSg0KSwgaz01KSwKKyAgICAgICAgICAgIGNob2ljZXMoaz01LCBwb3B1bGF0aW9uPWRhdGEsIHdlaWdodHM9cmFuZ2UoNCkpLAorICAgICAgICAgICAgY2hvaWNlcyhrPTUsIHBvcHVsYXRpb249ZGF0YSwgY3VtX3dlaWdodHM9cmFuZ2UoNCkpLAorICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2FtcGxlKSwgNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzYW1wbGUpLCBsaXN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChzYW1wbGUpIDw9IHNldChkYXRhKSkKKworICAgICAgICAjIHRlc3QgYXJndW1lbnQgaGFuZGxpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1pc3NpbmcgYXJndW1lbnRzCisgICAgICAgICAgICBjaG9pY2VzKDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKGRhdGEsIGs9MCksIFtdKSAgICAgICAgICAgICAgICAgICAgICAgICAjIGsgPT0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoZGF0YSwgaz0tMSksIFtdKSAgICAgICAgICAgICAgICAgICAgICAgICMgbmVnYXRpdmUgayBiZWhhdmVzIGxpa2UgYGBbMF0gKiAtMWBgCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgaz0yLjUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGsgaXMgYSBmbG9hdAorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhzdHJfZGF0YSwgaz01KSkgPD0gc2V0KHN0cl9kYXRhKSkgICAgIyBwb3B1bGF0aW9uIGlzIGEgc3RyaW5nIHNlcXVlbmNlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhyYW5nZV9kYXRhLCBrPTUpKSA8PSBzZXQocmFuZ2VfZGF0YSkpICAjIHBvcHVsYXRpb24gaXMgYSByYW5nZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKHNldF9kYXRhLCBrPTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwb3B1bGF0aW9uIGlzIG5vdCBhIHNlcXVlbmNlCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKGRhdGEsIE5vbmUsIGs9NSkpIDw9IHNldChkYXRhKSkgICAgICAjIHdlaWdodHMgaXMgTm9uZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgd2VpZ2h0cz1Ob25lLCBrPTUpKSA8PSBzZXQoZGF0YSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIFsxLDJdLCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsZW4od2VpZ2h0cykgIT0gbGVuKHBvcHVsYXRpb24pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIFswXSo0LCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZWlnaHRzIHN1bSB0byB6ZXJvCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgMTAsIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1pdGVyYWJsZSB3ZWlnaHRzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgW05vbmVdKjQsIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1udW1lcmljIHdlaWdodHMKKyAgICAgICAgZm9yIHdlaWdodHMgaW4gWworICAgICAgICAgICAgICAgIFsxNSwgMTAsIDI1LCAzMF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZWdlciB3ZWlnaHRzCisgICAgICAgICAgICAgICAgWzE1LjEsIDEwLjIsIDI1LjIsIDMwLjNdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmbG9hdCB3ZWlnaHRzCisgICAgICAgICAgICAgICAgW0ZyYWN0aW9uKDEsIDMpLCBGcmFjdGlvbigyLCA2KSwgRnJhY3Rpb24oMywgNiksIEZyYWN0aW9uKDQsIDYpXSwgIyBmcmFjdGlvbmFsIHdlaWdodHMKKyAgICAgICAgICAgICAgICBbVHJ1ZSwgRmFsc2UsIFRydWUsIEZhbHNlXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJvb2xlYW5zIChpbmNsdWRlIC8gZXhjbHVkZSkKKyAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhkYXRhLCB3ZWlnaHRzLCBrPTUpKSA8PSBzZXQoZGF0YSkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9WzEsMl0sIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAjIGxlbih3ZWlnaHRzKSAhPSBsZW4ocG9wdWxhdGlvbikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9WzBdKjQsIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAjIGN1bV93ZWlnaHRzIHN1bSB0byB6ZXJvCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9MTAsIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1pdGVyYWJsZSBjdW1fd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPVtOb25lXSo0LCBrPTUpICAgICAgICAgICAgICAgICAgICAgIyBub24tbnVtZXJpYyBjdW1fd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIHJhbmdlKDQpLCBjdW1fd2VpZ2h0cz1yYW5nZSg0KSwgaz01KSAgICAgICAgICAgIyBib3RoIHdlaWdodHMgYW5kIGN1bV93ZWlnaHRzCisgICAgICAgIGZvciB3ZWlnaHRzIGluIFsKKyAgICAgICAgICAgICAgICBbMTUsIDEwLCAyNSwgMzBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVnZXIgY3VtX3dlaWdodHMKKyAgICAgICAgICAgICAgICBbMTUuMSwgMTAuMiwgMjUuMiwgMzAuM10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZsb2F0IGN1bV93ZWlnaHRzCisgICAgICAgICAgICAgICAgW0ZyYWN0aW9uKDEsIDMpLCBGcmFjdGlvbigyLCA2KSwgRnJhY3Rpb24oMywgNiksIEZyYWN0aW9uKDQsIDYpXSwgIyBmcmFjdGlvbmFsIGN1bV93ZWlnaHRzCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9d2VpZ2h0cywgaz01KSkgPD0gc2V0KGRhdGEpKQorCiAgICAgZGVmIHRlc3RfZ2F1c3Moc2VsZik6CiAgICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIHNlZWQoKSBtZXRob2QgaW5pdGlhbGl6ZXMgYWxsIHRoZSBoaWRkZW4gc3RhdGUuICBJbgogICAgICAgICAjIHBhcnRpY3VsYXIsIHRocm91Z2ggMi4yLjEgaXQgZmFpbGVkIHRvIHJlc2V0IGEgcGllY2Ugb2Ygc3RhdGUgdXNlZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKaW5kZXggMTA2YzczMi4uZTAzYjU3MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CkBAIC0xLDYgKzEsNiBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gYnVpbHQtaW4gZnVuY3Rpb25zCiAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBpdGVydG9vbHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CmluZGV4IDA4MzRmZTAuLjRjZGM1OTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZS5weQpAQCAtMTE1LDEwICsxMTUsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyguKScsIHJlLmVzY2FwZShzKSwgJ3gnKSwgcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyguKScsIGxhbWJkYSBtOiBzLCAneCcpLCBzKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KScsICdcZzxhPlxnPGE+JywgJ3h4JyksICd4eHh4JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgJ1xnPGE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsICdcZzx1bms+XGc8dW5rPicsICd4eCcpLCAneHh4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgJ1xnPDE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGE+XGc8YT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsIHInXGc8dW5rPlxnPHVuaz4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsIHInXGc8MT5cZzwxPicsICd4eCcpLCAneHh4eCcpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCByJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwgJ1x0XG5cdlxyXGZcYVxiJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXHRcblx2XHJcZlxhXGInLCAnYScpLCAnXHRcblx2XHJcZlxhXGInKQpAQCAtMTI2LDE0ICsxMjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpK2Nocig4KSkpCiAgICAgICAgIGZvciBjIGluICdjZGVoaWprbG1vcHFzdXd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXFwnICsgYywgJ2EnKSwgJ1xcJyArIGMpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ15ccyonLCAnWCcsICd0ZXN0JyksICdYdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInXlxzKicsICdYJywgJ3Rlc3QnKSwgJ1h0ZXN0JykKIAogICAgIGRlZiB0ZXN0X2J1Z180NDk5NjQoc2VsZik6CiAgICAgICAgICMgZmFpbHMgZm9yIGdyb3VwIGZvbGxvd2VkIGJ5IG90aGVyIGVzY2FwZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJyg/UDx1bms+eCknLCAnXGc8MT5cZzwxPlxcYicsICd4eCcpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJyg/UDx1bms+eCknLCByJ1xnPDE+XGc8MT5cYicsICd4eCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd4eFxieHhcYicpCiAKICAgICBkZWYgdGVzdF9idWdfNDQ5MDAwKHNlbGYpOgpAQCAtMjIxLDI2ICsyMjEsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3grJywgJy0nLCAnYWJ4ZCcpLCAnYWItZCcpCiAKICAgICBkZWYgdGVzdF9zeW1ib2xpY19ncm91cHMoc2VsZik6Ci0gICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhPngpKD9QPWEpKD8oYSl5KScpCi0gICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhMT54KSg/UD1hMSkoPyhhMSl5KScpCi0gICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhMT54KVwxKD8oMSl5KScpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPikoP1A8YT4pJywKKyAgICAgICAgcmUuY29tcGlsZShyJyg/UDxhPngpKD9QPWEpKD8oYSl5KScpCisgICAgICAgIHJlLmNvbXBpbGUocicoP1A8YTE+eCkoP1A9YTEpKD8oYTEpeSknKQorICAgICAgICByZS5jb21waWxlKHInKD9QPGExPngpXDEoPygxKXkpJykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoP1A8YT4pJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVkZWZpbml0aW9uIG9mIGdyb3VwIG5hbWUgJ2EnIGFzIGdyb3VwIDI7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FzIGdyb3VwIDEiKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4oP1A9YSkpJywKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPig/UD1hKSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCIsIDEwKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1B4eSknLCAndW5rbm93biBleHRlbnNpb24gP1B4JykKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KSg/UD1hJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIG5hbWUnLCAxMSkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9MSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2EnIikKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWExKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2ExJyIpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hLiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8KScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGEnLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDwnLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPD4pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1B4eSknLCAndW5rbm93biBleHRlbnNpb24gP1B4JykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoP1A9YScsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBuYW1lJywgMTEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPTEpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMSciLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPWEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYSciKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPWExKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2ExJyIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9YS4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwpJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGEnLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8PiknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwxPiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YS4+KScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPygnLCAnbWlzc2luZyBncm91cCBuYW1lJywgMykKQEAgLTI1OSwzNSArMjU5LDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocGF0LCAneGM4eXonKS5zcGFuKCksICgwLCA1KSkKIAogICAgIGRlZiB0ZXN0X3N5bWJvbGljX3JlZnMoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzxhJywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzxhJywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwnLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyBncm91cCBuYW1lJywgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnJywgJ3h4JywgJ21pc3NpbmcgPCcsIDIpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzxhIGE+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZycsICd4eCcsICdtaXNzaW5nIDwnLCAyKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPGEgYT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhIGEnIiwgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPD4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPD4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyBncm91cCBuYW1lJywgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPDFhMT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPDFhMT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxYTEnIiwgMykKICAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwyPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCiAgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXDInLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgInVua25vd24gZ3JvdXAgbmFtZSAnYWInIik6Ci0gICAgICAgICAgICByZS5zdWIoJyg/UDxhPngpJywgJ1xnPGFiPicsICd4eCcpCisgICAgICAgICAgICByZS5zdWIoJyg/UDxhPngpJywgcidcZzxhYj4nLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCl8KD9QPGI+eSknLCByJ1xnPGI+JywgJ3h4JyksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCl8KD9QPGI+eSknLCByJ1wyJywgJ3h4JyksICcnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8LTE+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwtMT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICctMSciLCAzKQogICAgICAgICAjIE5ldyB2YWxpZC9pbnZhbGlkIGlkZW50aWZpZXJzIGluIFB5dGhvbiAzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8wrU+eCknLCByJ1xnPMK1PicsICd4eCcpLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+eCknLCByJ1xnPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+JywgJ3h4JyksICd4eCcpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzzCqT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPMKpPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ8KpJyIsIDMpCiAgICAgICAgICMgU3VwcG9ydCA+IDEwMCBncm91cHMuCiAgICAgICAgIHBhdCA9ICd8Jy5qb2luKCd4KD9QPGElZD4leCl5JyAlIChpLCBpKSBmb3IgaSBpbiByYW5nZSgxLCAyMDAgKyAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocGF0LCAnXGc8MjAwPicsICd4Yzh5enhjOHknKSwgJ2M4emM4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocGF0LCByJ1xnPDIwMD4nLCAneGM4eXp4Yzh5JyksICdjOHpjOCcpCiAKICAgICBkZWYgdGVzdF9yZV9zdWJuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oIig/aSliKyIsICJ4IiwgImJiYmIgQkJCQiIpLCAoJ3ggeCcsIDIpKQpAQCAtNDE5LDE5ICs0MTksNzcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2JjJykuZ3JvdXBzKCksICgnYicsIE5vbmUsICdiJywgJ2MnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2JjJykuZ3JvdXBzKCIiKSwgKCdiJywgIiIsICdiJywgJ2MnKSkKIAotICAgICAgICAjIEEgc2luZ2xlIGdyb3VwCi0gICAgICAgIG0gPSByZS5tYXRjaCgnKGEpJywgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDApLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxKSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMSwgMSksICgnYScsICdhJykpCi0KICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD86KD9QPGExPmEpfCg/UDxiMj5iKSkoP1A8YzM+Yyk/JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2EnKS5ncm91cCgxLCAyLCAzKSwgKCdhJywgTm9uZSwgTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdiJykuZ3JvdXAoJ2ExJywgJ2IyJywgJ2MzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICdiJywgTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdhYycpLmdyb3VwKDEsICdiMicsIDMpLCAoJ2EnLCBOb25lLCAnYycpKQogCisgICAgZGVmIHRlc3RfZ3JvdXAoc2VsZik6CisgICAgICAgIGNsYXNzIEluZGV4OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKyAgICAgICAgIyBBIHNpbmdsZSBncm91cAorICAgICAgICBtID0gcmUubWF0Y2goJyhhKShiKScsICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgpLCAnYWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxKSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoSW5kZXgoMSkpLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAxPDwxMDAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCBJbmRleCgxPDwxMDAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5ncm91cCwgJ3gnKQorICAgICAgICAjIE11bHRpcGxlIGdyb3VwcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMiwgMSksICgnYicsICdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cChJbmRleCgyKSwgSW5kZXgoMSkpLCAoJ2InLCAnYScpKQorCisgICAgZGVmIHRlc3RfbWF0Y2hfZ2V0aXRlbShzZWxmKToKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD86KD9QPGExPmEpfCg/UDxiMj5iKSkoP1A8YzM+Yyk/JykKKworICAgICAgICBtID0gcGF0Lm1hdGNoKCdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydhMSddLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYjInXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydjMyddLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhMT17YTF9IGIyPXtiMn0gYzM9e2MzfScuZm9ybWF0X21hcChtKSwgJ2ExPWEgYjI9Tm9uZSBjMz1Ob25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMl0sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVszXSwgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWydYJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWy0xXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bNF0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWzAsIDFdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVsoMCwpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bKDAsIDEpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoS2V5RXJyb3IsICdhMicpOgorICAgICAgICAgICAgJ2ExPXthMn0nLmZvcm1hdF9tYXAobSkKKworICAgICAgICBtID0gcGF0Lm1hdGNoKCdhYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYTEnXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2IyJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYzMnXSwgJ2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhMT17YTF9IGIyPXtiMn0gYzM9e2MzfScuZm9ybWF0X21hcChtKSwgJ2ExPWEgYjI9Tm9uZSBjMz1jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCAnYWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzJdLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bM10sICdjJykKKworICAgICAgICAjIENhbm5vdCBhc3NpZ24uCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG1bMF0gPSAxCisKKyAgICAgICAgIyBObyBsZW4oKS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsZW4sIG0pCisKICAgICBkZWYgdGVzdF9yZV9mdWxsbWF0Y2goc2VsZik6CiAgICAgICAgICMgSXNzdWUgMTYyMDM6IFByb3Bvc2FsOiBhZGQgcmUuZnVsbG1hdGNoKCkgbWV0aG9kLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaChyImEiLCAiYSIpLnNwYW4oKSwgKDAsIDEpKQpAQCAtNDYzLDE5ICs1MjEsMTkgQEAKICAgICAgICAgICAgIHJlLmNvbXBpbGUociIuKj8iKS5mdWxsbWF0Y2goImFiY2QiLCBwb3M9MSwgZW5kcG9zPTMpLnNwYW4oKSwgKDEsIDMpKQogCiAgICAgZGVmIHRlc3RfcmVfZ3JvdXByZWZfZXhpc3RzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYSknKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhKScpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgnKCcsICdhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2EnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdeKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnKGEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKWJ8ZCkpJCcsICdhYicpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgnYScsICdiJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oPzooYSl8YykoKD8oMSlifGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSlifGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2QnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2NkJykuZ3JvdXBzKCksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2QnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2EnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSl8ZCkpJCcsICdhJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgJycpKQogCiAgICAgICAgICMgVGVzdHMgZm9yIGJ1ZyAjMTE3NzgzMTogZXhlcmNpc2UgZ3JvdXBzIG90aGVyIHRoYW4gdGhlIGZpcnN0IGdyb3VwCkBAIC01MDAsNyArNTU4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHdvIGJyYW5jaGVzJywgMTApCiAKICAgICBkZWYgdGVzdF9yZV9ncm91cHJlZl9vdmVyZmxvdyhzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJygpJywgJ1xnPCVzPicgJSBzcmVfY29uc3RhbnRzLk1BWEdST1VQUywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJygpJywgcidcZzwlcz4nICUgc3JlX2NvbnN0YW50cy5NQVhHUk9VUFMsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD8oJWQpKScgJSBzcmVfY29uc3RhbnRzLk1BWEdST1VQUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAxMCkKQEAgLTUzNSwzNyArNTkzLDM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiKQogCiAgICAgZGVmIHRlc3RfcmVwZWF0X21pbm1heChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezF9JCIsICJhYmMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezF9PyQiLCAiYWJjIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxLDJ9JCIsICJhYmMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezEsMn0/JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxfSQiLCAiYWJjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXihcdyl7MX0/JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxLDJ9JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxLDJ9PyQiLCAiYWJjIikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7M30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsM30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsNH0kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezMsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXszfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsM30/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXsxLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszfSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsM30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDR9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDN9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezF9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezF9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHsxLDJ9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezEsMn0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7MX0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxLDJ9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxLDJ9PyQiLCAieHh4IikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSwzfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MywzfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSw0fSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7Myw0fT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezN9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSwzfT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsNH0/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszLDR9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezN9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MSwzfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezMsM30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDR9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7Myw0fT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszfT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDN9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezEsNH0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7Myw0fT8kIiwgInh4eCIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHt9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHt9JCIsICJ4e30iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHt9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7fSQiLCAieHt9IikpCiAKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJ3h7MiwxfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbiByZXBlYXQgZ3JlYXRlciB0aGFuIG1heCByZXBlYXQnLCAyKQpAQCAtNjM4LDE0ICs2OTYsMTAgQEAKICAgICAgICAgcmUucHVyZ2UoKSAgIyBmb3Igd2FybmluZ3MKICAgICAgICAgZm9yIGMgaW4gJ2NlZ2hpamtsbW9wcXl6Q0VGR0hJSktMTU5PUFFSVFZYWSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2goJ1xcJWMnICUgYywgYykuZ3JvdXAoKSwgYykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ1xcJWMnICUgYywgJ2EnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJ1xcJWMnICUgYykKICAgICAgICAgZm9yIGMgaW4gJ2NlZ2hpamtsbW9wcXl6QUJDRUZHSElKS0xNTk9QUVJUVlhZWic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2goJ1tcXCVjXScgJSBjLCBjKS5ncm91cCgpLCBjKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnW1xcJWNdJyAlIGMsICdhJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICdbXFwlY10nICUgYykKIAogICAgIGRlZiB0ZXN0X3N0cmluZ19ib3VuZGFyaWVzKHNlbGYpOgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTA3MTMKQEAgLTY5MiwxMCArNzQ2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImFcblxuYiIpCiAKICAgICBkZWYgdGVzdF9sb29rYWhlYWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKD89XHNbXmFdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1teYV0qKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1thYmNdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1thYmNdKikpIiwgImEgYmMiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1teYV0pKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1teYV0qKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKD89XHNbYWJjXSkpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSg/PVxzW2FiY10qKSkiLCAiYSBiYyIpLmdyb3VwKDEpLCAiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSkoPz1cc1wxKSIsICJhIGEiKS5ncm91cCgxKSwgImEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEpKD89XHNcMSopIiwgImEgYWEiKS5ncm91cCgxKSwgImEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEpKD89XHMoYWJjfGEpKSIsICJhIGEiKS5ncm91cCgxKSwgImEiKQpAQCAtODQzLDEyICs4OTcsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChiImFiYyIsIGIiQUJDIiwgcmUuSXxyZS5MKS5ncm91cCgwKSwgYiJBQkMiKQogCiAgICAgZGVmIHRlc3Rfbm90X2xpdGVyYWwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhbXmFdKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhbXmFdKikiLCAiIGJiIikuZ3JvdXAoMSksICJiYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXHMoW15hXSkiLCAiIGIiKS5ncm91cCgxKSwgImIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxzKFteYV0qKSIsICIgYmIiKS5ncm91cCgxKSwgImJiIikKIAogICAgIGRlZiB0ZXN0X3NlYXJjaF9jb3ZlcmFnZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goIlxzKGIpIiwgIiBiIikuZ3JvdXAoMSksICJiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goImFccyIsICJhICIpLmdyb3VwKDApLCAiYSAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxzKGIpIiwgIiBiIikuZ3JvdXAoMSksICJiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJhXHMiLCAiYSAiKS5ncm91cCgwKSwgImEgIikKIAogICAgIGRlZiBhc3NlcnRNYXRjaChzZWxmLCBwYXR0ZXJuLCB0ZXh0LCBtYXRjaD1Ob25lLCBzcGFuPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXI9cmUubWF0Y2gpOgpAQCAtOTk4LDEwICsxMDUyLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMngiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeDAiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiIwIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4eiIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiInoiKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXHUxMjM0IiwgYid1MTIzNCcpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcVTAwMDEyMzQ1IiwgYidVMDAwMTIzNDUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIGJyIlx1MTIzNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJcVTAwMDEyMzQ1IikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwIiwgYiJcMDAwIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDgiLCBiIlwwMDA4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDEiLCBiIlwwMDEiKSkKQEAgLTEwMjMsMTAgKzEwNzUsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMnhdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJbXHglMDJ4MF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMnh6XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcdTEyMzRdIiwgYid1JykpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcVTAwMDEyMzQ1XSIsIGInVScpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgYnIiW1x1MTIzNF0iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgYnIiW1xVMDAwMTIzNDVdIikKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJbXDU2N10iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMSkKQEAgLTEwNTQsOCArMTEwNCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKGEpP2EnLCdhJykubGFzdGluZGV4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInKGEpKGIpP2InLCdhYicpLmxhc3RpbmRleCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJyg/UDxhPmEpKD9QPGI+Yik/YicsJ2FiJykubGFzdGdyb3VwLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIig/UDxhPmEoYikpIiwgImFiIikubGFzdGdyb3VwLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIigoYSkpIiwgImEiKS5sYXN0aW5kZXgsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoP1A8YT5hKGIpKSIsICJhYiIpLmxhc3Rncm91cCwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKChhKSkiLCAiYSIpLmxhc3RpbmRleCwgMSkKIAogICAgIGRlZiB0ZXN0X2J1Z180MTg2MjYoc2VsZik6CiAgICAgICAgICMgYnVncyA0MTg2MjYgYXQgYWwuIC0tIFRlc3RpbmcgR3JlZyBDaGFwbWFuJ3MgYWRkaXRpb24gb2Ygb3AgY29kZQpAQCAtMTIyNyw3ICsxMjc3LDcgQEAKICAgICAgICAgICAgICdcdWZmMTAnLCAjICdcTntGVUxMV0lEVEggRElHSVQgWkVST30nLCBjYXRlZ29yeSAnTmQnCiAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIGRlY2ltYWxfZGlnaXRzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXlxkJCcsIHgpLmdyb3VwKDApLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ15cZCQnLCB4KS5ncm91cCgwKSwgeCkKIAogICAgICAgICBub3RfZGVjaW1hbF9kaWdpdHMgPSBbCiAgICAgICAgICAgICAnXHUyMTY1JywgIyAnXE57Uk9NQU4gTlVNRVJBTCBTSVh9JywgY2F0ZWdvcnkgJ05sJwpAQCAtMTIzNiw3ICsxMjg2LDcgQEAKICAgICAgICAgICAgICdcdTMyYjQnLCAjICdcTntDSVJDTEVEIE5VTUJFUiBUSElSVFkgTklORX0nLCBjYXRlZ29yeSAnTm8nCiAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIG5vdF9kZWNpbWFsX2RpZ2l0czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdeXGQkJywgeCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJ15cZCQnLCB4KSkKIAogICAgIGRlZiB0ZXN0X2VtcHR5X2FycmF5KHNlbGYpOgogICAgICAgICAjIFNGIGJ1ZiAxNjQ3NTQxCkBAIC0xMjc4LDYgKzEzMjgsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcoP2l4dSkgJyArIHVwcGVyX2NoYXIsIGxvd2VyX2NoYXIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJyg/aXh1KSAnICsgbG93ZXJfY2hhciwgdXBwZXJfY2hhcikpCiAKKyAgICAgICAgcCA9IHVwcGVyX2NoYXIgKyAnKD9pKScKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgd2FybnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocCwgbG93ZXJfY2hhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIod2FybnMud2FybmluZ3NbMF0ubWVzc2FnZSksCisgICAgICAgICAgICAnRmxhZ3Mgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgZXhwcmVzc2lvbiAlcycgJSBwCisgICAgICAgICkKKworICAgICAgICBwID0gdXBwZXJfY2hhciArICcoP2kpJXMnICUgKCcuPycgKiAxMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIHdhcm5zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHAsIGxvd2VyX2NoYXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyKHdhcm5zLndhcm5pbmdzWzBdLm1lc3NhZ2UpLAorICAgICAgICAgICAgJ0ZsYWdzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGV4cHJlc3Npb24gJXMgKHRydW5jYXRlZCknICUgcFs6MjBdCisgICAgICAgICkKKwogICAgIGRlZiB0ZXN0X2RvbGxhcl9tYXRjaGVzX3R3aWNlKHNlbGYpOgogICAgICAgICAiJCBtYXRjaGVzIHRoZSBlbmQgb2Ygc3RyaW5nLCBhbmQganVzdCBiZWZvcmUgdGhlIHRlcm1pbmF0aW5nIFxuIgogICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZSgnJCcpCkBAIC0xMzA4LDI5ICsxMzc0LDI5IEBACiAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgcmUuVU5JQ09ERSk6CiAgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKCdceGMwJywgZmxhZ3MgfCByZS5JR05PUkVDQVNFKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaCgnXHhlMCcpKQotICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnXHcnLCBmbGFncykKKyAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocidcdycsIGZsYWdzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaCgnXHhlMCcpKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCdceGMwJywgcmUuQVNDSUkgfCByZS5JR05PUkVDQVNFKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD9hKVx4YzAnLCByZS5JR05PUkVDQVNFKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnXHcnLCByZS5BU0NJSSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ1x3JywgcmUuQVNDSUkpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoP2EpXHcnKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKHInKD9hKVx3JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKCdceGUwJykpCiAgICAgICAgICMgQnl0ZXMgcGF0dGVybnMKICAgICAgICAgZm9yIGZsYWdzIGluICgwLCByZS5BU0NJSSk6CiAgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHhjMCcsIGZsYWdzIHwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChiJ1x4ZTAnKSkKLSAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycsIGZsYWdzKQorICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicidcdycsIGZsYWdzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGInXHhlMCcpKQogICAgICAgICAjIEluY29tcGF0aWJpbGl0aWVzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInXHcnLCByZS5VTklDT0RFKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/dSlcdycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICdcdycsIHJlLlVOSUNPREUgfCByZS5BU0NJSSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/dSlcdycsIHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9hKVx3JywgcmUuVU5JQ09ERSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/YXUpXHcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBicidcdycsIHJlLlVOSUNPREUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGJyJyg/dSlcdycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInXHcnLCByZS5VTklDT0RFIHwgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInKD91KVx3JywgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInKD9hKVx3JywgcmUuVU5JQ09ERSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcicoP2F1KVx3JykKIAogICAgIGRlZiB0ZXN0X2xvY2FsZV9mbGFnKHNlbGYpOgogICAgICAgICBpbXBvcnQgbG9jYWxlCkBAIC0xMzYxLDI3ICsxNDI3LDU5IEBACiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnBhdCwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgaWYgYmxldHRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChibGV0dGVyKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JywgcmUuTE9DQUxFKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ1x3JywgcmUuTE9DQUxFKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJyg/TClcdycpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInKD9MKVx3JykKICAgICAgICAgaWYgYmxldHRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInXHcnKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGJsZXR0ZXIpKQogICAgICAgICAjIEluY29tcGF0aWJpbGl0aWVzCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCAnJywgcmUuTE9DQUxFKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgJyg/TCknKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicnLCByZS5MT0NBTEUgfCByZS5BU0NJSSkKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9MKScsIHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP2EpJywgcmUuTE9DQUxFKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP2FMKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcnLCByZS5MT0NBTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP0wpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicnLCByZS5MT0NBTEUgfCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP0wpJywgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInKD9hKScsIHJlLkxPQ0FMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP2FMKScpCisKKyAgICBkZWYgdGVzdF9zY29wZWRfZmxhZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/aTphKWInLCAnQWInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoP2k6YSliJywgJ2FCJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD8taTphKWInLCAnQWInLCByZS5JR05PUkVDQVNFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD8taTphKWInLCAnYUInLCByZS5JR05PUkVDQVNFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoP2k6KD8taTphKWIpJywgJ0FiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/aTooPy1pOmEpYiknLCAnYUInKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoP3g6IGEpIGInLCAnYSBiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD94OiBhKSBiJywgJyBhIGInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD8teDogYSkgYicsICcgYWInLCByZS5WRVJCT1NFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPy14OiBhKSBiJywgJ2FiJywgcmUuVkVSQk9TRSkpCisKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/YTpcdyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvbiBnbG9iYWwgZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2EpKD8tYTpcdyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvZmYgZ2xvYmFsIGZsYWcnLCA4KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pLWk6YSknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWQgaW5saW5lIGZsYWdzOiBmbGFnIHR1cm5lZCBvbiBhbmQgb2ZmJywgNSkKKworICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8tJywgJ21pc3NpbmcgZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy0rJywgJ21pc3NpbmcgZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy16JywgJ3Vua25vd24gZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1pJywgJ21pc3NpbmcgOicsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1pKScsICdtaXNzaW5nIDonLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8taSsnLCAnbWlzc2luZyA6JywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWl6JywgJ3Vua25vd24gZmxhZycsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2k6JywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4nLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pJywgJ21pc3NpbmcgLSwgOiBvciApJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aSsnLCAnbWlzc2luZyAtLCA6IG9yICknLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9peicsICd1bmtub3duIGZsYWcnLCAzKQogCiAgICAgZGVmIHRlc3RfYnVnXzY1MDkoc2VsZik6CiAgICAgICAgICMgUmVwbGFjZW1lbnQgc3RyaW5ncyBvZiBib3RoIHR5cGVzIG11c3QgcGFyc2UgcHJvcGVybHkuCiAgICAgICAgICMgYWxsIHN0cmluZ3MKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnYShcdyknKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKHInYShcdyknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoJ2JcXDEnLCAnYWMnKSwgJ2JjJykKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnYSguKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YignYlxcMScsICdhXHUxMjM0JyksICdiXHUxMjM0JykKQEAgLTEzODksNyArMTQ4Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YihsYW1iZGEgbTogJ3N0cicsICdhNScpLCAnc3RyJykKIAogICAgICAgICAjIGFsbCBieXRlcwotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInYShcdyknKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ2EoXHcpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKGInYlxcMScsIGInYWMnKSwgYidiYycpCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidhKC4pJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKGInYlxcMScsIGInYVx4Q0QnKSwgYidiXHhDRCcpCkBAIC0xNDI3LDEzICsxNTI1LDYgQEAKICAgICAgICAgIyBUZXN0IGJlaGF2aW91ciB3aGVuIG5vdCBnaXZlbiBhIHN0cmluZyBvciBwYXR0ZXJuIGFzIHBhcmFtZXRlcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJlLmNvbXBpbGUsIDApCiAKLSAgICBkZWYgdGVzdF9idWdfMTM4OTkoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzEzODk5OiByZSBwYXR0ZXJuIHIiW1xBXSIgc2hvdWxkIHdvcmsgbGlrZSAiQSIgYnV0IG1hdGNoZXMKLSAgICAgICAgIyBub3RoaW5nLiBEaXR0byBCIGFuZCBaLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZmluZGFsbChyJ1tcQVxCXGJcQ1xaXScsICdBQlxiQ1onKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydBJywgJ0InLCAnXGInLCAnQycsICdaJ10pCi0KICAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTEpCiAgICAgZGVmIHRlc3RfbGFyZ2Vfc2VhcmNoKHNlbGYsIHNpemUpOgogICAgICAgICAjIElzc3VlICMxMDE4MjogaW5kaWNlcyB3ZXJlIDMyLWJpdC10cnVuY2F0ZWQuCkBAIC0xNTE4LDcgKzE2MDksNyBAQAogICAgICAgICBmb3Igc3RyaW5nIGluIChiJ1thYnJhY2FkYWJyYV0nLCBCKGInW2FicmFjYWRhYnJhXScpLAogICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoYidbYWJyYWNhZGFicmFdJyksCiAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeXZpZXcoYidbYWJyYWNhZGFicmFdJykpOgotICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChyYicoLispKC4qPylcMScsIHN0cmluZykKKyAgICAgICAgICAgIG0gPSByZS5zZWFyY2goYnInKC4rKSguKj8pXDEnLCBzdHJpbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8JXMuJXMgb2JqZWN0OyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGFuPSgxLCAxMiksIG1hdGNoPWInYWJyYWNhZGFicmEnPiIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShtKS5fX21vZHVsZV9fLCB0eXBlKG0pLl9fcXVhbG5hbWVfXykpCkBAIC0xNTQ3LDkgKzE2MzgsOSBAQAogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dDoKICAgICAgICAgICAgIHJlLmNvbXBpbGUocGF0LCByZS5ERUJVRykKICAgICAgICAgZHVtcCA9ICcnJ1wKLVNVQlBBVFRFUk4gMQorU1VCUEFUVEVSTiAxIDAgMAogICBMSVRFUkFMIDQ2Ci1TVUJQQVRURVJOIE5vbmUKK1NVQlBBVFRFUk4gTm9uZSAwIDAKICAgQlJBTkNICiAgICAgSU4KICAgICAgIExJVEVSQUwgOTkKQEAgLTE1NTcsNyArMTY0OCw3IEBACiAgIE9SCiAgICAgTElURVJBTCAxMTIKICAgICBMSVRFUkFMIDEyMQotU1VCUEFUVEVSTiBOb25lCitTVUJQQVRURVJOIE5vbmUgMCAwCiAgIEdST1VQUkVGX0VYSVNUUyAxCiAgICAgQVQgQVRfRU5ECiAgIEVMU0UKQEAgLTE2NzMsNyArMTc2NCw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1AnLCAndW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybicsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP3opJywgJ3Vua25vd24gZXh0ZW5zaW9uID96JywgMSkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aXopJywgJ3Vua25vd24gZmxhZycsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2knLCAnbWlzc2luZyApJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aScsICdtaXNzaW5nIC0sIDogb3IgKScsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPyNhYmMnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgY29tbWVudCcsIDApCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPzwnLCAndW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybicsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPzw+KScsICd1bmtub3duIGV4dGVuc2lvbiA/PD4nLCAxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKaW5kZXggMmM3M2RmMi4uMDZhOTE0OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CkBAIC0xMjEsNiArMTIxLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEVSTT0neHRlcm0tMjU2Y29sb3InKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYicnKQogCisgICAgYXV0b19oaXN0b3J5X3NjcmlwdCA9ICIiIlwKK2ltcG9ydCByZWFkbGluZQorcmVhZGxpbmUuc2V0X2F1dG9faGlzdG9yeSh7fSkKK2lucHV0KCkKK3ByaW50KCJIaXN0b3J5IGxlbmd0aDoiLCByZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpKQorIiIiCisKKyAgICBkZWYgdGVzdF9hdXRvX2hpc3RvcnlfZW5hYmxlZChzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gcnVuX3B0eShzZWxmLmF1dG9faGlzdG9yeV9zY3JpcHQuZm9ybWF0KFRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEluKGIiSGlzdG9yeSBsZW5ndGg6IDFcclxuIiwgb3V0cHV0KQorCisgICAgZGVmIHRlc3RfYXV0b19oaXN0b3J5X2Rpc2FibGVkKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBydW5fcHR5KHNlbGYuYXV0b19oaXN0b3J5X3NjcmlwdC5mb3JtYXQoRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEluKGIiSGlzdG9yeSBsZW5ndGg6IDBcclxuIiwgb3V0cHV0KQorCiAgICAgZGVmIHRlc3Rfbm9uYXNjaWkoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlYWRsaW5lLmFkZF9oaXN0b3J5KCJceEVCXHhFRiIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weQppbmRleCBhMzk4YTRmLi41ZGUyYTZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkKQEAgLTEsMjEgKzEsNDggQEAKICIiIgogVGVzdHMgb2YgcmVncnRlc3QucHkuCisKK05vdGU6IHRlc3RfcmVncnRlc3QgY2Fubm90IGJlIHJ1biB0d2ljZSBpbiBwYXJhbGxlbC4KICIiIgogCi1pbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgZmF1bHRoYW5kbGVyCi1pbXBvcnQgZ2V0b3B0CitpbXBvcnQgaW8KIGltcG9ydCBvcy5wYXRoCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QsIHN1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbGlicmVncnRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK1B5X0RFQlVHID0gaGFzYXR0cihzeXMsICdnZXRvYmplY3RzJykKK1JPT1RfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpCitST09UX0RJUiA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLm5vcm1wYXRoKFJPT1RfRElSKSkKKworVEVTVF9JTlRFUlJVUFRFRCA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICBmcm9tIHNpZ25hbCBpbXBvcnQgU0lHSU5UCisgICAgdHJ5OgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcmFpc2Vfc2lnbmFsCisgICAgICAgIHJhaXNlX3NpZ25hbChTSUdJTlQpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgU0lHSU5UKQorICAgICIiIikKKwogCiBjbGFzcyBQYXJzZUFyZ3NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IHJlZ3J0ZXN0J3MgYXJndW1lbnQgcGFyc2luZy4iIiIKKyAgICAiIiIKKyAgICBUZXN0IHJlZ3J0ZXN0J3MgYXJndW1lbnQgcGFyc2luZywgZnVuY3Rpb24gX3BhcnNlX2FyZ3MoKS4KKyAgICAiIiIKIAogICAgIGRlZiBjaGVja0Vycm9yKHNlbGYsIGFyZ3MsIG1zZyk6CiAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnIsIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgotICAgICAgICAgICAgcmVncnRlc3QuX3BhcnNlX2FyZ3MoYXJncykKKyAgICAgICAgICAgIGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKGFyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obXNnLCBlcnIuZ2V0dmFsdWUoKSkKIAogICAgIGRlZiB0ZXN0X2hlbHAoc2VsZik6CkBAIC0yMyw4MiArNTAsODIgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgogICAgICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXQsIFwKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgotICAgICAgICAgICAgICAgICAgICByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICAgICAgbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignUnVuIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzLicsIG91dC5nZXR2YWx1ZSgpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIoKSByZXF1aXJlZCIpCiAgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdGltZW91dCcsICc0LjInXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdGltZW91dCcsICc0LjInXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy50aW1lb3V0LCA0LjIpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tdGltZW91dCddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS10aW1lb3V0JywgJ2ZvbyddLCAnaW52YWxpZCBmbG9hdCB2YWx1ZScpCiAKICAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS13YWl0J10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXdhaXQnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLndhaXQpCiAKICAgICBkZWYgdGVzdF9zbGF2ZWFyZ3Moc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXNsYXZlYXJncycsICdbW10sIHt9XSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zbGF2ZWFyZ3MnLCAnW1tdLCB7fV0nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5zbGF2ZWFyZ3MsICdbW10sIHt9XScpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tc2xhdmVhcmdzJ10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3Rfc3RhcnQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1TJywgJy0tc3RhcnQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5zdGFydCwgJ2ZvbycpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3ZlcmJvc2Uoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctdiddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXYnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAxKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXZ2diddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXZ2diddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDMpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDEpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSAqIDMpCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSAqIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMykKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogCiAgICAgZGVmIHRlc3RfdmVyYm9zZTIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy13JywgJy0tdmVyYm9zZTInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy52ZXJib3NlMikKIAogICAgIGRlZiB0ZXN0X3ZlcmJvc2UzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctVycsICctLXZlcmJvc2UzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMudmVyYm9zZTMpCiAKICAgICBkZWYgdGVzdF9xdWlldChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXEnLCAnLS1xdWlldCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnF1aWV0KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKIAogICAgIGRlZiB0ZXN0X3Nsb3coc2VsZik6Ci0gICAgICAgIGZvciBvcHQgaW4gJy1vJywgJy0tc2xvdyc6CisgICAgICAgIGZvciBvcHQgaW4gJy1vJywgJy0tc2xvd2VzdCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnByaW50X3Nsb3cpCiAKICAgICBkZWYgdGVzdF9oZWFkZXIoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLWhlYWRlciddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1oZWFkZXInXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmhlYWRlcikKIAogICAgIGRlZiB0ZXN0X3JhbmRvbWl6ZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXInLCAnLS1yYW5kb21pemUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5yYW5kb21pemUpCiAKICAgICBkZWYgdGVzdF9yYW5kc2VlZChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcmFuZHNlZWQnLCAnMTIzNDUnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcmFuZHNlZWQnLCAnMTIzNDUnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5yYW5kb21fc2VlZCwgMTIzNDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5yYW5kb21pemUpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tcmFuZHNlZWQnXSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCkBAIC0xMDcsNyArMTM0LDcgQEAKICAgICBkZWYgdGVzdF9mcm9tZmlsZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLWYnLCAnLS1mcm9tZmlsZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmZyb21maWxlLCAnZm9vJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJywgJy1zJ10sICJkb24ndCBnbyB0b2dldGhlciIpCkBAIC0xMTUsNDIgKzE0Miw0MiBAQAogICAgIGRlZiB0ZXN0X2V4Y2x1ZGUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy14JywgJy0tZXhjbHVkZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmV4Y2x1ZGUpCiAKICAgICBkZWYgdGVzdF9zaW5nbGUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1zJywgJy0tc2luZ2xlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuc2luZ2xlKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnLWYnLCAnZm9vJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAKICAgICBkZWYgdGVzdF9tYXRjaChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLW0nLCAnLS1tYXRjaCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdwYXR0ZXJuJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAncGF0dGVybiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMubWF0Y2hfdGVzdHMsICdwYXR0ZXJuJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3RfZmFpbGZhc3Qoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1HJywgJy0tZmFpbGZhc3QnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLXYnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctdiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5mYWlsZmFzdCkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctVyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJy1XJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmZhaWxmYXN0KQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJy1HLy0tZmFpbGZhc3QgbmVlZHMgZWl0aGVyIC12IG9yIC1XJykKIAogICAgIGRlZiB0ZXN0X3VzZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXUnLCAnLS11c2UnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5ldHdvcmsnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbmV0d29yayddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX3Jlc291cmNlcywgWydndWknLCAnbmV0d29yayddKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2d1aSxub25lLG5ldHdvcmsnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbm9uZSxuZXR3b3JrJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy51c2VfcmVzb3VyY2VzLCBbJ25ldHdvcmsnXSkKLSAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGxpc3QocmVncnRlc3QuUkVTT1VSQ0VfTkFNRVMpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBsaXN0KGxpYnJlZ3J0ZXN0LlJFU09VUkNFX05BTUVTKQogICAgICAgICAgICAgICAgIGV4cGVjdGVkLnJlbW92ZSgnZ3VpJykKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdhbGwsLWd1aSddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2FsbCwtZ3VpJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy51c2VfcmVzb3VyY2VzLCBleHBlY3RlZCkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJ10sICdpbnZhbGlkIHJlc291cmNlJykKQEAgLTE1OCwzMSArMTg1LDMxIEBACiAgICAgZGVmIHRlc3RfbWVtbGltaXQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1NJywgJy0tbWVtbGltaXQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNEcnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc0RyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMubWVtbGltaXQsICc0RycpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3Rlc3RkaXIoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRlc3RkaXInLCAnZm9vJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRlc3RkaXInLCAnZm9vJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudGVzdGRpciwgb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsICdmb28nKSkKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS10ZXN0ZGlyJ10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3RfcnVubGVha3Moc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1MJywgJy0tcnVubGVha3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5ydW5sZWFrcykKIAogICAgIGRlZiB0ZXN0X2h1bnRybGVha3Moc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1SJywgJy0taHVudHJsZWFrcyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc6J10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDUsIDQsICdyZWZsb2cudHh0JykpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjonXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc2OiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDYsIDQsICdyZWZsb2cudHh0JykpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOjMnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc6MyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDUsIDMsICdyZWZsb2cudHh0JykpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjozOmxlYWtzLmxvZyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6MzpsZWFrcy5sb2cnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg2LCAzLCAnbGVha3MubG9nJykpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzYnXSwKQEAgLTE5MywyNCArMjIwLDIzIEBACiAgICAgZGVmIHRlc3RfbXVsdGlwcm9jZXNzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctaicsICctLW11bHRpcHJvY2Vzcyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICcyJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX21wLCAyKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICdmb28nXSwgJ2ludmFsaWQgaW50IHZhbHVlJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzInLCAnLVQnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzInLCAnLWwnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKLSAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzInLCAnLU0nLCAnNEcnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKIAogICAgIGRlZiB0ZXN0X2NvdmVyYWdlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctVCcsICctLWNvdmVyYWdlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMudHJhY2UpCiAKICAgICBkZWYgdGVzdF9jb3ZlcmRpcihzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLUQnLCAnLS1jb3ZlcmRpcic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmNvdmVyZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsICdmb28nKSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQpAQCAtMjE4LDEzICsyNDQsMTMgQEAKICAgICBkZWYgdGVzdF9ub2NvdmVyZGlyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctTicsICctLW5vY292ZXJkaXInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5zLmNvdmVyZGlyKQogCiAgICAgZGVmIHRlc3RfdGhyZXNob2xkKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctdCcsICctLXRocmVzaG9sZCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICcxMDAwJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMTAwMCddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudGhyZXNob2xkLCAxMDAwKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICdmb28nXSwgJ2ludmFsaWQgaW50IHZhbHVlJykKQEAgLTIzMiwxMyArMjU4LDE2IEBACiAgICAgZGVmIHRlc3Rfbm93aW5kb3dzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctbicsICctLW5vd2luZG93cyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5yZWRpcmVjdF9zdGRlcnIoaW8uU3RyaW5nSU8oKSkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5ub3dpbmRvd3MpCisgICAgICAgICAgICAgICAgZXJyID0gc3RkZXJyLmdldHZhbHVlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0aGUgLS1ub3dpbmRvd3MgKC1uKSBvcHRpb24gaXMgZGVwcmVjYXRlZCcsIGVycikKIAogICAgIGRlZiB0ZXN0X2ZvcmV2ZXIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1GJywgJy0tZm9yZXZlcic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmZvcmV2ZXIpCiAKIApAQCAtMjQ2LDMwICsyNzUsNTE2IEBACiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0teHh4J10sICd1c2FnZTonKQogCiAgICAgZGVmIHRlc3RfbG9uZ19vcHRpb25fX3BhcnRpYWwoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWknXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnF1aWV0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAKICAgICBkZWYgdGVzdF90d29fb3B0aW9ucyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnLS1leGNsdWRlJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aWV0JywgJy0tZXhjbHVkZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmV4Y2x1ZGUpCiAKICAgICBkZWYgdGVzdF9vcHRpb25fd2l0aF9lbXB0eV9zdHJpbmdfdmFsdWUoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXN0YXJ0JywgJyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zdGFydCcsICcnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5zdGFydCwgJycpCiAKICAgICBkZWYgdGVzdF9hcmcoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWydmb28nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmFyZ3MsIFsnZm9vJ10pCiAKICAgICBkZWYgdGVzdF9vcHRpb25fYW5kX2FyZyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnZm9vJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aWV0JywgJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5hcmdzLCBbJ2ZvbyddKQogCiAKK2NsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgVEVTVF9VTklRVUVfSUQgPSAxCisgICAgVEVTVE5BTUVfUFJFRklYID0gJ3Rlc3RfcmVncnRlc3RfJworICAgIFRFU1ROQU1FX1JFR0VYID0gcid0ZXN0X1thLXpBLVowLTlfXSsnCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYudGVzdGRpciA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKworICAgICAgICBzZWxmLnRtcHRlc3RkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzZWxmLnRtcHRlc3RkaXIpCisKKyAgICBkZWYgY3JlYXRlX3Rlc3Qoc2VsZiwgbmFtZT1Ob25lLCBjb2RlPScnKToKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBuYW1lID0gJ25vb3AlcycgJSBCYXNlVGVzdENhc2UuVEVTVF9VTklRVUVfSUQKKyAgICAgICAgICAgIEJhc2VUZXN0Q2FzZS5URVNUX1VOSVFVRV9JRCArPSAxCisKKyAgICAgICAgIyB0ZXN0X3JlZ3J0ZXN0IGNhbm5vdCBiZSBydW4gdHdpY2UgaW4gcGFyYWxsZWwgYmVjYXVzZQorICAgICAgICAjIG9mIHNldFVwKCkgYW5kIGNyZWF0ZV90ZXN0KCkKKyAgICAgICAgbmFtZSA9IHNlbGYuVEVTVE5BTUVfUFJFRklYICsgbmFtZQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYudG1wdGVzdGRpciwgbmFtZSArICcucHknKQorCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgIyBVc2UgJ3gnIG1vZGUgdG8gZW5zdXJlIHRoYXQgd2UgZG8gbm90IG92ZXJyaWRlIGV4aXN0aW5nIHRlc3RzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAneCcsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGZwOgorICAgICAgICAgICAgICAgIGZwLndyaXRlKGNvZGUpCisgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgbm90IHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3Qgd3JpdGUgJXM6ICVzIiAlIChwYXRoLCBleGMpKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIG5hbWUKKworICAgIGRlZiByZWdleF9zZWFyY2goc2VsZiwgcmVnZXgsIG91dHB1dCk6CisgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHJlZ2V4LCBvdXRwdXQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgc2VsZi5mYWlsKCIlciBub3QgZm91bmQgaW4gJXIiICUgKHJlZ2V4LCBvdXRwdXQpKQorICAgICAgICByZXR1cm4gbWF0Y2gKKworICAgIGRlZiBjaGVja19saW5lKHNlbGYsIG91dHB1dCwgcmVnZXgpOgorICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocideJyArIHJlZ2V4LCByZS5NVUxUSUxJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKKworICAgIGRlZiBwYXJzZV9leGVjdXRlZF90ZXN0cyhzZWxmLCBvdXRwdXQpOgorICAgICAgICByZWdleCA9IChyJ15bMC05XSs6WzAtOV0rOlswLTldKyBcWyAqWzAtOV0rKD86LyAqWzAtOV0rKT9cXSAoJXMpJworICAgICAgICAgICAgICAgICAlIHNlbGYuVEVTVE5BTUVfUkVHRVgpCisgICAgICAgIHBhcnNlciA9IHJlLmZpbmRpdGVyKHJlZ2V4LCBvdXRwdXQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgcmV0dXJuIGxpc3QobWF0Y2guZ3JvdXAoMSkgZm9yIG1hdGNoIGluIHBhcnNlcikKKworICAgIGRlZiBjaGVja19leGVjdXRlZF90ZXN0cyhzZWxmLCBvdXRwdXQsIHRlc3RzLCBza2lwcGVkPSgpLCBmYWlsZWQ9KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9taXR0ZWQ9KCksIHJhbmRvbWl6ZT1GYWxzZSwgaW50ZXJydXB0ZWQ9RmFsc2UpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHRlc3RzLCBzdHIpOgorICAgICAgICAgICAgdGVzdHMgPSBbdGVzdHNdCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2tpcHBlZCwgc3RyKToKKyAgICAgICAgICAgIHNraXBwZWQgPSBbc2tpcHBlZF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmYWlsZWQsIHN0cik6CisgICAgICAgICAgICBmYWlsZWQgPSBbZmFpbGVkXQorICAgICAgICBpZiBpc2luc3RhbmNlKG9taXR0ZWQsIHN0cik6CisgICAgICAgICAgICBvbWl0dGVkID0gW29taXR0ZWRdCisgICAgICAgIG50ZXN0ID0gbGVuKHRlc3RzKQorICAgICAgICBuc2tpcHBlZCA9IGxlbihza2lwcGVkKQorICAgICAgICBuZmFpbGVkID0gbGVuKGZhaWxlZCkKKyAgICAgICAgbm9taXR0ZWQgPSBsZW4ob21pdHRlZCkKKworICAgICAgICBleGVjdXRlZCA9IHNlbGYucGFyc2VfZXhlY3V0ZWRfdGVzdHMob3V0cHV0KQorICAgICAgICBpZiByYW5kb21pemU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChleGVjdXRlZCksIHNldCh0ZXN0cyksIG91dHB1dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhlY3V0ZWQsIHRlc3RzLCBvdXRwdXQpCisKKyAgICAgICAgZGVmIHBsdXJhbChjb3VudCk6CisgICAgICAgICAgICByZXR1cm4gJ3MnIGlmIGNvdW50ICE9IDEgZWxzZSAnJworCisgICAgICAgIGRlZiBsaXN0X3JlZ2V4KGxpbmVfZm9ybWF0LCB0ZXN0cyk6CisgICAgICAgICAgICBjb3VudCA9IGxlbih0ZXN0cykKKyAgICAgICAgICAgIG5hbWVzID0gJyAnLmpvaW4oc29ydGVkKHRlc3RzKSkKKyAgICAgICAgICAgIHJlZ2V4ID0gbGluZV9mb3JtYXQgJSAoY291bnQsIHBsdXJhbChjb3VudCkpCisgICAgICAgICAgICByZWdleCA9IHInJXM6XG4gICAgJXMkJyAlIChyZWdleCwgbmFtZXMpCisgICAgICAgICAgICByZXR1cm4gcmVnZXgKKworICAgICAgICBpZiBza2lwcGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgc2tpcHBlZCcsIHNraXBwZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBmYWlsZWQ6CisgICAgICAgICAgICByZWdleCA9IGxpc3RfcmVnZXgoJyVzIHRlc3QlcyBmYWlsZWQnLCBmYWlsZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBvbWl0dGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgb21pdHRlZCcsIG9taXR0ZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBnb29kID0gbnRlc3QgLSBuc2tpcHBlZCAtIG5mYWlsZWQgLSBub21pdHRlZAorICAgICAgICBpZiBnb29kOgorICAgICAgICAgICAgcmVnZXggPSByJyVzIHRlc3QlcyBPS1wuJCcgJSAoZ29vZCwgcGx1cmFsKGdvb2QpKQorICAgICAgICAgICAgaWYgbm90IHNraXBwZWQgYW5kIG5vdCBmYWlsZWQgYW5kIGdvb2QgPiAxOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0FsbCAlcycgJSByZWdleAorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgaWYgaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAnVGVzdCBzdWl0ZSBpbnRlcnJ1cHRlZCBieSBzaWduYWwgU0lHSU5ULicpCisKKyAgICAgICAgaWYgbmZhaWxlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICdGQUlMVVJFJworICAgICAgICBlbGlmIGludGVycnVwdGVkOgorICAgICAgICAgICAgcmVzdWx0ID0gJ0lOVEVSUlVQVEVEJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gJ1NVQ0NFU1MnCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsICdUZXN0cyByZXN1bHQ6ICVzJyAlIHJlc3VsdCkKKworICAgIGRlZiBwYXJzZV9yYW5kb21fc2VlZChzZWxmLCBvdXRwdXQpOgorICAgICAgICBtYXRjaCA9IHNlbGYucmVnZXhfc2VhcmNoKHInVXNpbmcgcmFuZG9tIHNlZWQgKFswLTldKyknLCBvdXRwdXQpCisgICAgICAgIHJhbmRzZWVkID0gaW50KG1hdGNoLmdyb3VwKDEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMCA8PSByYW5kc2VlZCA8PSAxMDAwMDAwMCwgcmFuZHNlZWQpCisgICAgICAgIHJldHVybiByYW5kc2VlZAorCisgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGlucHV0PU5vbmUsIGV4aXRjb2RlPTAsICoqa3cpOgorICAgICAgICBpZiBub3QgaW5wdXQ6CisgICAgICAgICAgICBpbnB1dCA9ICcnCisgICAgICAgIGlmICdzdGRlcnInIG5vdCBpbiBrdzoKKyAgICAgICAgICAgIGt3WydzdGRlcnInXSA9IHN1YnByb2Nlc3MuUElQRQorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5ydW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ9aW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprdykKKyAgICAgICAgaWYgcHJvYy5yZXR1cm5jb2RlICE9IGV4aXRjb2RlOgorICAgICAgICAgICAgbXNnID0gKCJDb21tYW5kICVzIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlc1xuIgorICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAic3Rkb3V0OlxuIgorICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAiJXNcbiIKKyAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgJSAoc3RyKGFyZ3MpLCBwcm9jLnJldHVybmNvZGUsIHByb2Muc3Rkb3V0KSkKKyAgICAgICAgICAgIGlmIHByb2Muc3RkZXJyOgorICAgICAgICAgICAgICAgIG1zZyArPSAoIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgInN0ZGVycjpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgcHJvYy5zdGRlcnIpCisgICAgICAgICAgICBzZWxmLmZhaWwobXNnKQorICAgICAgICByZXR1cm4gcHJvYworCisKKyAgICBkZWYgcnVuX3B5dGhvbihzZWxmLCBhcmdzLCAqKmt3KToKKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1YJywgJ2ZhdWx0aGFuZGxlcicsICctSScsICphcmdzXQorICAgICAgICBwcm9jID0gc2VsZi5ydW5fY29tbWFuZChhcmdzLCAqKmt3KQorICAgICAgICByZXR1cm4gcHJvYy5zdGRvdXQKKworCitjbGFzcyBQcm9ncmFtc1Rlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB2YXJpb3VzIHdheXMgdG8gcnVuIHRoZSBQeXRob24gdGVzdCBzdWl0ZS4gVXNlIG9wdGlvbnMgY2xvc2UKKyAgICB0byBvcHRpb25zIHVzZWQgb24gdGhlIGJ1aWxkYm90LgorICAgICIiIgorCisgICAgTlRFU1QgPSA0CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorCisgICAgICAgICMgQ3JlYXRlIE5URVNUIHRlc3RzIGRvaW5nIG5vdGhpbmcKKyAgICAgICAgc2VsZi50ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGluZGV4IGluIHJhbmdlKHNlbGYuTlRFU1QpXQorCisgICAgICAgIHNlbGYucHl0aG9uX2FyZ3MgPSBbJy1XZCcsICctRScsICctYmInXQorICAgICAgICBzZWxmLnJlZ3J0ZXN0X2FyZ3MgPSBbJy11YWxsJywgJy1yd1cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdGRpcj0lcycgJSBzZWxmLnRtcHRlc3RkaXJdCisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIHNlbGYucmVncnRlc3RfYXJncy5leHRlbmQoKCctLXRpbWVvdXQnLCAnMzYwMCcsICctajQnKSkKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICBzZWxmLnJlZ3J0ZXN0X2FyZ3MuYXBwZW5kKCctbicpCisKKyAgICBkZWYgY2hlY2tfb3V0cHV0KHNlbGYsIG91dHB1dCk6CisgICAgICAgIHNlbGYucGFyc2VfcmFuZG9tX3NlZWQob3V0cHV0KQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgc2VsZi50ZXN0cywgcmFuZG9taXplPVRydWUpCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIGFyZ3MpOgorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl9weXRob24oYXJncykKKyAgICAgICAgc2VsZi5jaGVja19vdXRwdXQob3V0cHV0KQorCisgICAgZGVmIHRlc3Rfc2NyaXB0X3JlZ3J0ZXN0KHNlbGYpOgorICAgICAgICAjIExpYi90ZXN0L3JlZ3J0ZXN0LnB5CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICdyZWdydGVzdC5weScpCisKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgc2NyaXB0LCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV90ZXN0KHNlbGYpOgorICAgICAgICAjIC1tIHRlc3QKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1tJywgJ3Rlc3QnLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlZ3J0ZXN0KHNlbGYpOgorICAgICAgICAjIC1tIHRlc3QucmVncnRlc3QKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1tJywgJ3Rlc3QucmVncnRlc3QnLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX2F1dG90ZXN0KHNlbGYpOgorICAgICAgICAjIC1tIHRlc3QuYXV0b3Rlc3QKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1tJywgJ3Rlc3QuYXV0b3Rlc3QnLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX2Zyb21fdGVzdF9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyBmcm9tIHRlc3QgaW1wb3J0IGF1dG90ZXN0CisgICAgICAgIGNvZGUgPSAnZnJvbSB0ZXN0IGltcG9ydCBhdXRvdGVzdCcKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1jJywgY29kZSwKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X3NjcmlwdF9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyBMaWIvdGVzdC9hdXRvdGVzdC5weQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAnYXV0b3Rlc3QucHknKQorICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCBzY3JpcHQsICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdydW5fdGVzdHMucHkgc2NyaXB0IGlzIG5vdCBpbnN0YWxsZWQnKQorICAgIGRlZiB0ZXN0X3Rvb2xzX3NjcmlwdF9ydW5fdGVzdHMoc2VsZik6CisgICAgICAgICMgVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKFJPT1RfRElSLCAnVG9vbHMnLCAnc2NyaXB0cycsICdydW5fdGVzdHMucHknKQorICAgICAgICBhcmdzID0gW3NjcmlwdCwgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgcnVuX2JhdGNoKHNlbGYsICphcmdzKToKKyAgICAgICAgcHJvYyA9IHNlbGYucnVuX2NvbW1hbmQoYXJncykKKyAgICAgICAgc2VsZi5jaGVja19vdXRwdXQocHJvYy5zdGRvdXQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QuYmF0IHNjcmlwdCBpcyBub3QgaW5zdGFsbGVkJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgJ1dpbmRvd3Mgb25seScpCisgICAgZGVmIHRlc3RfdG9vbHNfYnVpbGRib3RfdGVzdChzZWxmKToKKyAgICAgICAgIyBUb29sc1xidWlsZGJvdFx0ZXN0LmJhdAorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oUk9PVF9ESVIsICdUb29scycsICdidWlsZGJvdCcsICd0ZXN0LmJhdCcpCisgICAgICAgIHRlc3RfYXJncyA9IFsnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpcl0KKyAgICAgICAgaWYgcGxhdGZvcm0uYXJjaGl0ZWN0dXJlKClbMF0gPT0gJzY0Yml0JzoKKyAgICAgICAgICAgIHRlc3RfYXJncy5hcHBlbmQoJy14NjQnKSAgICMgNjQtYml0IGJ1aWxkCisgICAgICAgIGlmIG5vdCBQeV9ERUJVRzoKKyAgICAgICAgICAgIHRlc3RfYXJncy5hcHBlbmQoJytkJykgICAgICMgUmVsZWFzZSBidWlsZCwgdXNlIHB5dGhvbi5leGUKKyAgICAgICAgc2VsZi5ydW5fYmF0Y2goc2NyaXB0LCAqdGVzdF9hcmdzLCAqc2VsZi50ZXN0cykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLCAnV2luZG93cyBvbmx5JykKKyAgICBkZWYgdGVzdF9wY2J1aWxkX3J0KHNlbGYpOgorICAgICAgICAjIFBDYnVpbGRccnQuYmF0CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihST09UX0RJUiwgcidQQ2J1aWxkXHJ0LmJhdCcpCisgICAgICAgIHJ0X2FyZ3MgPSBbIi1xIl0gICAgICAgICAgICAgIyBRdWljaywgZG9uJ3QgcnVuIHRlc3RzIHR3aWNlCisgICAgICAgIGlmIHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpWzBdID09ICc2NGJpdCc6CisgICAgICAgICAgICBydF9hcmdzLmFwcGVuZCgnLXg2NCcpICAgIyA2NC1iaXQgYnVpbGQKKyAgICAgICAgaWYgUHlfREVCVUc6CisgICAgICAgICAgICBydF9hcmdzLmFwcGVuZCgnLWQnKSAgICAgIyBEZWJ1ZyBidWlsZCwgdXNlIHB5dGhvbl9kLmV4ZQorICAgICAgICBzZWxmLnJ1bl9iYXRjaChzY3JpcHQsICpydF9hcmdzLCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0cykKKworCitjbGFzcyBBcmdzVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IGFyZ3VtZW50cyBvZiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuCisgICAgIiIiCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsICp0ZXN0YXJncywgKiprdyk6CisgICAgICAgIGNtZGFyZ3MgPSBbJy1tJywgJ3Rlc3QnLCAnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpciwgKnRlc3RhcmdzXQorICAgICAgICByZXR1cm4gc2VsZi5ydW5fcHl0aG9uKGNtZGFyZ3MsICoqa3cpCisKKyAgICBkZWYgdGVzdF9mYWlsaW5nX3Rlc3Qoc2VsZik6CisgICAgICAgICMgdGVzdCBhIGZhaWxpbmcgdGVzdAorICAgICAgICBjb2RlID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgIGNsYXNzIEZhaWxpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9mYWlsaW5nKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImJ1ZyIpCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdF9vayA9IHNlbGYuY3JlYXRlX3Rlc3QoJ29rJykKKyAgICAgICAgdGVzdF9mYWlsaW5nID0gc2VsZi5jcmVhdGVfdGVzdCgnZmFpbGluZycsIGNvZGU9Y29kZSkKKyAgICAgICAgdGVzdHMgPSBbdGVzdF9vaywgdGVzdF9mYWlsaW5nXQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCp0ZXN0cywgZXhpdGNvZGU9MSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzLCBmYWlsZWQ9dGVzdF9mYWlsaW5nKQorCisgICAgZGVmIHRlc3RfcmVzb3VyY2VzKHNlbGYpOgorICAgICAgICAjIHRlc3QgLXUgY29tbWFuZCBsaW5lIG9wdGlvbgorICAgICAgICB0ZXN0cyA9IHt9CisgICAgICAgIGZvciByZXNvdXJjZSBpbiAoJ2F1ZGlvJywgJ25ldHdvcmsnKToKKyAgICAgICAgICAgIGNvZGUgPSAnZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0XG5zdXBwb3J0LnJlcXVpcmVzKCVyKScgJSByZXNvdXJjZQorICAgICAgICAgICAgdGVzdHNbcmVzb3VyY2VdID0gc2VsZi5jcmVhdGVfdGVzdChyZXNvdXJjZSwgY29kZSkKKyAgICAgICAgdGVzdF9uYW1lcyA9IHNvcnRlZCh0ZXN0cy52YWx1ZXMoKSkKKworICAgICAgICAjIC11IGFsbDogMiByZXNvdXJjZXMgZW5hYmxlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXUnLCAnYWxsJywgKnRlc3RfbmFtZXMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0X25hbWVzKQorCisgICAgICAgICMgLXUgYXVkaW86IDEgcmVzb3VyY2UgZW5hYmxlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXVhdWRpbycsICp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkPXRlc3RzWyduZXR3b3JrJ10pCisKKyAgICAgICAgIyBubyBvcHRpb246IDAgcmVzb3VyY2VzIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoKnRlc3RfbmFtZXMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0X25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWQ9dGVzdF9uYW1lcykKKworICAgIGRlZiB0ZXN0X3JhbmRvbShzZWxmKToKKyAgICAgICAgIyB0ZXN0IC1yIGFuZCAtLXJhbmRzZWVkIGNvbW1hbmQgbGluZSBvcHRpb24KKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCByYW5kb20KKyAgICAgICAgICAgIHByaW50KCJURVNUUkFORE9NOiAlcyIgJSByYW5kb20ucmFuZGludCgxLCAxMDAwKSkKKyAgICAgICAgIiIiKQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgncmFuZG9tJywgY29kZSkKKworICAgICAgICAjIGZpcnN0IHJ1biB0byBnZXQgdGhlIG91dHB1dCB3aXRoIHRoZSByYW5kb20gc2VlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXInLCB0ZXN0KQorICAgICAgICByYW5kc2VlZCA9IHNlbGYucGFyc2VfcmFuZG9tX3NlZWQob3V0cHV0KQorICAgICAgICBtYXRjaCA9IHNlbGYucmVnZXhfc2VhcmNoKHInVEVTVFJBTkRPTTogKFswLTldKyknLCBvdXRwdXQpCisgICAgICAgIHRlc3RfcmFuZG9tID0gaW50KG1hdGNoLmdyb3VwKDEpKQorCisgICAgICAgICMgdHJ5IHRvIHJlcHJvZHVjZSB3aXRoIHRoZSByYW5kb20gc2VlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXInLCAnLS1yYW5kc2VlZD0lcycgJSByYW5kc2VlZCwgdGVzdCkKKyAgICAgICAgcmFuZHNlZWQyID0gc2VsZi5wYXJzZV9yYW5kb21fc2VlZChvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZHNlZWQyLCByYW5kc2VlZCkKKworICAgICAgICBtYXRjaCA9IHNlbGYucmVnZXhfc2VhcmNoKHInVEVTVFJBTkRPTTogKFswLTldKyknLCBvdXRwdXQpCisgICAgICAgIHRlc3RfcmFuZG9tMiA9IGludChtYXRjaC5ncm91cCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3JhbmRvbTIsIHRlc3RfcmFuZG9tKQorCisgICAgZGVmIHRlc3RfZnJvbWZpbGUoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWZyb21maWxlCisgICAgICAgIHRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaW5kZXggaW4gcmFuZ2UoNSldCisKKyAgICAgICAgIyBXcml0ZSB0aGUgbGlzdCBvZiBmaWxlcyB1c2luZyBhIGZvcm1hdCBzaW1pbGFyIHRvIHJlZ3J0ZXN0IG91dHB1dDoKKyAgICAgICAgIyBbMS8yXSB0ZXN0XzEKKyAgICAgICAgIyBbMi8yXSB0ZXN0XzIKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgICMgdGVzdCBmb3JtYXQgJzA6MDA6MDAgWzIvN10gdGVzdF9vcGNvZGVzIC0tIHRlc3RfZ3JhbW1hciB0b29rIDAgc2VjJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBwcmV2aW91cyA9IE5vbmUKKyAgICAgICAgICAgIGZvciBpbmRleCwgbmFtZSBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgorICAgICAgICAgICAgICAgIGxpbmUgPSAoIjAwOjAwOiUwMmkgWyVzLyVzXSAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGluZGV4LCBpbmRleCwgbGVuKHRlc3RzKSwgbmFtZSkpCisgICAgICAgICAgICAgICAgaWYgcHJldmlvdXM6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gIiAtLSAlcyB0b29rIDAgc2VjIiAlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1mcCkKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9IG5hbWUKKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mcm9tZmlsZScsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisKKyAgICAgICAgIyB0ZXN0IGZvcm1hdCAnWzIvN10gdGVzdF9vcGNvZGVzJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gZW51bWVyYXRlKHRlc3RzLCAxKToKKyAgICAgICAgICAgICAgICBwcmludCgiWyVzLyVzXSAlcyIgJSAoaW5kZXgsIGxlbih0ZXN0cyksIG5hbWUpLCBmaWxlPWZwKQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZyb21maWxlJywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKworICAgICAgICAjIHRlc3QgZm9ybWF0ICd0ZXN0X29wY29kZXMnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIGZvciBuYW1lIGluIHRlc3RzOgorICAgICAgICAgICAgICAgIHByaW50KG5hbWUsIGZpbGU9ZnApCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tZnJvbWZpbGUnLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorCisgICAgZGVmIHRlc3RfaW50ZXJydXB0ZWQoc2VsZik6CisgICAgICAgIGNvZGUgPSBURVNUX0lOVEVSUlVQVEVECisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdzaWdpbnQnLCBjb2RlPWNvZGUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKHRlc3QsIGV4aXRjb2RlPTEpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0LCBvbWl0dGVkPXRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ZWQ9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3Nsb3dlc3Qoc2VsZik6CisgICAgICAgICMgdGVzdCAtLXNsb3dlc3QKKyAgICAgICAgdGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpbmRleCBpbiByYW5nZSgzKV0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi0tc2xvd2VzdCIsICp0ZXN0cykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorICAgICAgICByZWdleCA9ICgnMTAgc2xvd2VzdCB0ZXN0czpcbicKKyAgICAgICAgICAgICAgICAgJyg/Oi0gJXM6IC4qXG4peyVzfScKKyAgICAgICAgICAgICAgICAgJSAoc2VsZi5URVNUTkFNRV9SRUdFWCwgbGVuKHRlc3RzKSkpCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgZGVmIHRlc3Rfc2xvd19pbnRlcnJ1cHRlZChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjUzNzM6IHRlc3QgLS1zbG93ZXN0IHdpdGggYW4gaW50ZXJydXB0ZWQgdGVzdAorICAgICAgICBjb2RlID0gVEVTVF9JTlRFUlJVUFRFRAorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgic2lnaW50IiwgY29kZT1jb2RlKQorCisgICAgICAgIGZvciBtdWx0aXByb2Nlc3NpbmcgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIGlmIG11bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgICAgICAgICBhcmdzID0gKCItLXNsb3dlc3QiLCAiLWoyIiwgdGVzdCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncyA9ICgiLS1zbG93ZXN0IiwgdGVzdCkKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCphcmdzLCBleGl0Y29kZT0xKQorICAgICAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9taXR0ZWQ9dGVzdCwgaW50ZXJydXB0ZWQ9VHJ1ZSkKKworICAgICAgICAgICAgcmVnZXggPSAoJzEwIHNsb3dlc3QgdGVzdHM6XG4nKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF9jb3ZlcmFnZShzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tY292ZXJhZ2UKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2NvdmVyYWdlJykKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi0tY292ZXJhZ2UiLCB0ZXN0KQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdKQorICAgICAgICByZWdleCA9IChyJ2xpbmVzICtjb3YlICttb2R1bGUgK1wocGF0aFwpXG4nCisgICAgICAgICAgICAgICAgIHInKD86ICpbMC05XSsgKlswLTldezEsMn0lICpbXiBdKyArXChbXildK1wpKykrJykKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgorICAgICAgICAjIHRlc3QgLS13YWl0CisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCd3YWl0JykKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi0td2FpdCIsIHRlc3QsIGlucHV0PSdrZXknKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAnUHJlc3MgYW55IGtleSB0byBjb250aW51ZScpCisKKyAgICBkZWYgdGVzdF9mb3JldmVyKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1mb3JldmVyCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgYnVpbHRpbnMKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgICAgICBjbGFzcyBGb3JldmVyVGVzdGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9ydW4oc2VsZik6CisgICAgICAgICAgICAgICAgICAgICMgU3RvcmUgdGhlIHN0YXRlIGluIHRoZSBidWlsdGlucyBtb2R1bGUsIGJlY2F1c2UgdGhlIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgIyBtb2R1bGUgaXMgcmVsb2FkIGF0IGVhY2ggcnVuCisgICAgICAgICAgICAgICAgICAgIGlmICdSVU4nIGluIGJ1aWx0aW5zLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnMuX19kaWN0X19bJ1JVTiddICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ1aWx0aW5zLl9fZGljdF9fWydSVU4nXSA+PSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZmFpbCBhdCB0aGUgM3JkIHJ1bnMiKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnMuX19kaWN0X19bJ1JVTiddID0gMQorICAgICAgICAiIiIpCisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdmb3JldmVyJywgY29kZT1jb2RlKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mb3JldmVyJywgdGVzdCwgZXhpdGNvZGU9MSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIFt0ZXN0XSozLCBmYWlsZWQ9dGVzdCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFB5X0RFQlVHLCAnbmVlZCBhIGRlYnVnIGJ1aWxkJykKKyAgICBkZWYgdGVzdF9odW50cmxlYWtzX2ZkX2xlYWsoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWh1bnRybGVha3MgZm9yIGZpbGUgZGVzY3JpcHRvciBsZWFrCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgICAgICAjIElzc3VlICMyNTMwNjogRGlzYWJsZSBwb3B1cHMgYW5kIGxvZ3MgdG8gc3RkZXJyIG9uIGFzc2VydGlvbgorICAgICAgICAgICAgIyBmYWlsdXJlcyBpbiBNU0NSVAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQorICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgICMgbm8gV2luZG93cywgbyByZWxlYXNlIGJ1aWxkCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgbSBpbiBbbXN2Y3J0LkNSVF9XQVJOLCBtc3ZjcnQuQ1JUX0VSUk9SLCBtc3ZjcnQuQ1JUX0FTU0VSVF06CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCisKKyAgICAgICAgICAgIGNsYXNzIEZETGVha1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2xlYWsoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIGZkID0gb3Mub3BlbihfX2ZpbGVfXywgb3MuT19SRE9OTFkpCisgICAgICAgICAgICAgICAgICAgICMgYnVnOiBuZXZlciBjbG9lcyB0aGUgZmlsZSBkZXNjcmlwdG9yCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2h1bnRybGVha3MnLCBjb2RlPWNvZGUpCisKKyAgICAgICAgZmlsZW5hbWUgPSAncmVmbG9nLnR4dCcKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0taHVudHJsZWFrcycsICczOjM6JywgdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdGNvZGU9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdLCBmYWlsZWQ9dGVzdCkKKworICAgICAgICBsaW5lID0gJ2JlZ2lubmluZyA2IHJlcGV0aXRpb25zXG4xMjM0NTZcbi4uLi4uLlxuJworICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZS5lc2NhcGUobGluZSkpCisKKyAgICAgICAgbGluZTIgPSAnJXMgbGVha2VkIFsxLCAxLCAxXSBmaWxlIGRlc2NyaXB0b3JzLCBzdW09M1xuJyAlIHRlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRJbihsaW5lMiwgb3V0cHV0KQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZnA6CisgICAgICAgICAgICByZWZsb2cgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obGluZTIsIHJlZmxvZykKKworICAgIGRlZiB0ZXN0X2xpc3RfdGVzdHMoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWxpc3QtdGVzdHMKKyAgICAgICAgdGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpIGluIHJhbmdlKDUpXQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1saXN0LXRlc3RzJywgKnRlc3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5yc3RyaXAoKS5zcGxpdGxpbmVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weSBiL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQppbmRleCAxNTgyY2FhLi41ODcyOWE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CkBAIC0yNTMsNiArMjUzLDMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhICE9IGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhIDwgYikKIAorICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9tZXNzYWdlKHNlbGYpOgorICAgICAgICBjbGFzcyBTcGFtOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGxhbWJkYTogNDIgPCBOb25lLCByIic8JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogTm9uZSA8IDQyLCByIic8JyAuKiBvZiAnTm9uZVR5cGUnIGFuZCAnaW50JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPiBOb25lLCByIic+JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogImZvbyIgPCBOb25lLCByIic8JyAuKiBvZiAnc3RyJyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogImZvbyIgPj0gNjY2LCByIic+PScgLiogb2YgJ3N0cicgYW5kICdpbnQnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8PSBOb25lLCByIic8PScgLiogb2YgJ2ludCcgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyID49IE5vbmUsIHIiJz49JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPCBbXSwgciInPCcgLiogb2YgJ2ludCcgYW5kICdsaXN0JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogKCkgPiBbXSwgciInPicgLiogb2YgJ3R1cGxlJyBhbmQgJ2xpc3QnIiksCisgICAgICAgICAgICAobGFtYmRhOiBOb25lID49IE5vbmUsIHIiJz49JyAuKiBvZiAnTm9uZVR5cGUnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiBTcGFtKCkgPCA0MiwgciInPCcgLiogb2YgJ1NwYW0nIGFuZCAnaW50JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPCBTcGFtKCksIHIiJzwnIC4qIG9mICdpbnQnIGFuZCAnU3BhbSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IFNwYW0oKSA8PSBTcGFtKCksIHIiJzw9JyAuKiBvZiAnU3BhbScgYW5kICdTcGFtJyIpLAorICAgICAgICBdCisgICAgICAgIGZvciBpLCB0ZXN0IGluIGVudW1lcmF0ZSh0ZXN0cyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0ZXN0PWkpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIHRlc3RbMV0pOgorICAgICAgICAgICAgICAgICAgICB0ZXN0WzBdKCkKKworCiBjbGFzcyBEaWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9kaWN0cyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CmluZGV4IDg1M2U3NzMuLjBkYzEwODAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQpAQCAtMSwxMSArMSwxMiBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdW5pdHRlc3QubW9jaworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgcmxjb21wbGV0ZXIKIAogY2xhc3MgQ29tcGxldGVNZToKICAgICAiIiIgVHJpdmlhbCBjbGFzcyB1c2VkIGluIHRlc3Rpbmcgcmxjb21wbGV0ZXIuQ29tcGxldGVyLiAiIiIKICAgICBzcGFtID0gMQorICAgIF9oYW0gPSAyCiAKIAogY2xhc3MgVGVzdFJsY29tcGxldGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTUyLDE4ICs1MywzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnc3RyLnt9KCcuZm9ybWF0KHgpIGZvciB4IGluIGRpcihzdHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHguc3RhcnRzd2l0aCgncycpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ3R1cGxlLmZvb3NwYW1lZ2cnKSwgW10pCisgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKHsnTm9uZS4lcyVzJyAlICh4LCAnKCcgaWYgeCAhPSAnX19kb2NfXycgZWxzZSAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGRpcihOb25lKX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdGRjb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdOb25lLicpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ05vbmUuXycpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ05vbmUuX18nKSwgZXhwZWN0ZWQpCiAKICAgICAgICAgIyB0ZXN0IHdpdGggYSBjdXN0b21pemVkIG5hbWVzcGFjZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5zcCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5zcGFtJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZW1lLmVnZycpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLm1ybygnLCAnQ29tcGxldGVNZS5zcGFtJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLl8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUuX2hhbSddKQorICAgICAgICBtYXRjaGVzID0gc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLl9fJykKKyAgICAgICAgZm9yIHggaW4gbWF0Y2hlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LnN0YXJ0c3dpdGgoJ0NvbXBsZXRlTWUuX18nKSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQ29tcGxldGVNZS5fX25hbWVfXycsIG1hdGNoZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0NvbXBsZXRlTWUuX19uZXdfXygnLCBtYXRjaGVzKQogCi0gICAgICAgIENvbXBsZXRlTWUubWUgPSBDb21wbGV0ZU1lCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLm1lLm1lLnNwJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLm1lLm1lLnNwYW0nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ2VnZy5zJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydlZ2cue30oJy5mb3JtYXQoeCkgZm9yIHggaW4gZGlyKHN0cikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zdGFydHN3aXRoKCdzJyldKQorICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChDb21wbGV0ZU1lLCAibWUiLCBDb21wbGV0ZU1lLCBjcmVhdGU9VHJ1ZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5tZS5tZS5zcCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUubWUubWUuc3BhbSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ2VnZy5zJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZWdnLnt9KCcuZm9ybWF0KHgpIGZvciB4IGluIGRpcihzdHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoJ3MnKV0pCiAKICAgICBkZWYgdGVzdF9leGNlc3NpdmVfZ2V0YXR0cihzZWxmKToKICAgICAgICAgIyBFbnN1cmUgZ2V0YXR0cigpIGlzIGludm9rZWQgbm8gbW9yZSB0aGFuIG9uY2UgcGVyIGF0dHJpYnV0ZQpAQCAtNzgsMTQgKzkzLDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdmLmInLCAwKSwgJ2YuYmFyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmNhbGxzLCAxKQogCisgICAgZGVmIHRlc3RfdW5jcmVhdGVkX2F0dHIoc2VsZik6CisgICAgICAgICMgQXR0cmlidXRlcyBsaWtlIHByb3BlcnRpZXMgYW5kIHNsb3RzIHNob3VsZCBiZSBjb21wbGV0ZWQgZXZlbiB3aGVuCisgICAgICAgICMgdGhleSBoYXZlbid0IGJlZW4gY3JlYXRlZCBvbiBhbiBpbnN0YW5jZQorICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoImJhciIsKQorICAgICAgICBjb21wbGV0ZXIgPSBybGNvbXBsZXRlci5Db21wbGV0ZXIoZGljdChmPUZvbygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2YuJywgMCksICdmLmJhcicpCisKICAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgncmxjb21wbGV0ZXIuX3JlYWRsaW5lX2F2YWlsYWJsZScsIEZhbHNlKQogICAgIGRlZiB0ZXN0X2NvbXBsZXRlKHNlbGYpOgogICAgICAgICBjb21wbGV0ZXIgPSBybGNvbXBsZXRlci5Db21wbGV0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnJywgMCksICdcdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMCksICdhbmQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDEpLCAnYXMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXMnLCAyKSwgJ2Fzc2VydCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhbicsIDApLCAnYW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2EnLCAwKSwgJ2FuZCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDEpLCAnYXMgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FzJywgMiksICdhc3NlcnQgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FuJywgMCksICdhbmQgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3BhJywgMCksICdwYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ0ZhJywgMCksICdGYWxzZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdlbCcsIDApLCAnZWxpZiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnZWwnLCAxKSwgJ2Vsc2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgndHInLCAwKSwgJ3RyeTonKQogCiAgICAgZGVmIHRlc3RfZHVwbGljYXRlX2dsb2JhbHMoc2VsZik6CiAgICAgICAgIG5hbWVzcGFjZSA9IHsKQEAgLTk4LDkgKzEyNiwxMCBAQAogICAgICAgICBjb21wbGV0ZXIgPSBybGNvbXBsZXRlci5Db21wbGV0ZXIobmFtZXNwYWNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnRmFsc2UnLCAwKSwgJ0ZhbHNlJykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tcGxldGVyLmNvbXBsZXRlKCdGYWxzZScsIDEpKSAgIyBObyBkdXBsaWNhdGVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhc3NlcnQnLCAwKSwgJ2Fzc2VydCcpCisgICAgICAgICMgU3BhY2Ugb3IgY29sb24gYWRkZWQgZHVlIHRvIGJlaW5nIGEgcmVzZXJ2ZWQga2V5d29yZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXNzZXJ0JywgMCksICdhc3NlcnQgJykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tcGxldGVyLmNvbXBsZXRlKCdhc3NlcnQnLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3RyeScsIDApLCAndHJ5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3RyeScsIDApLCAndHJ5OicpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbXBsZXRlci5jb21wbGV0ZSgndHJ5JywgMSkpCiAgICAgICAgICMgTm8gb3BlbmluZyBicmFja2V0ICIoIiBiZWNhdXNlIHdlIG92ZXJyb2RlIHRoZSBidWlsdC1pbiBjbGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnbWVtb3J5dmlldycsIDApLCAnbWVtb3J5dmlldycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weQppbmRleCBkMDEyNjZmLi4wZjY0YmE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkKQEAgLTEsOCArMSw4IEBACiBpbXBvcnQgaW8KK2ltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdXJsbGliLnJvYm90cGFyc2VyCi1mcm9tIHVybGxpYi5lcnJvciBpbXBvcnQgVVJMRXJyb3IsIEhUVFBFcnJvcgotZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCBIVFRQU2VydmVyCiB0cnk6CkBAIC0xMSwyNDYgKzExLDIzOSBAQAogICAgIHRocmVhZGluZyA9IE5vbmUKIAogCi1jbGFzcyBSb2JvdFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXg9Tm9uZSwgcGFyc2VyPU5vbmUsIHVybD1Ob25lLCBnb29kPU5vbmUsIGFnZW50PU5vbmUpOgotICAgICAgICAjIHdvcmthcm91bmQgdG8gbWFrZSB1bml0dGVzdCBkaXNjb3Zlcnkgd29yayAoc2VlICMxNzA2NikKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5kZXgsIGludCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UuX19pbml0X18oc2VsZikKLSAgICAgICAgaWYgZ29vZDoKLSAgICAgICAgICAgIHNlbGYuc3RyID0gIlJvYm90VGVzdCglZCwgZ29vZCwgJXMpIiAlIChpbmRleCwgdXJsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zdHIgPSAiUm9ib3RUZXN0KCVkLCBiYWQsICVzKSIgJSAoaW5kZXgsIHVybCkKLSAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIKLSAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgc2VsZi5nb29kID0gZ29vZAotICAgICAgICBzZWxmLmFnZW50ID0gYWdlbnQKK2NsYXNzIEJhc2VSb2JvdFRlc3Q6CisgICAgcm9ib3RzX3R4dCA9ICcnCisgICAgYWdlbnQgPSAndGVzdF9yb2JvdHBhcnNlcicKKyAgICBnb29kID0gW10KKyAgICBiYWQgPSBbXQogCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi51cmwsIHR1cGxlKToKLSAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLnVybAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXJsID0gc2VsZi51cmwKLSAgICAgICAgICAgIGFnZW50ID0gc2VsZi5hZ2VudAotICAgICAgICBpZiBzZWxmLmdvb2Q6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKGFnZW50LCB1cmwpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBsaW5lcyA9IGlvLlN0cmluZ0lPKHNlbGYucm9ib3RzX3R4dCkucmVhZGxpbmVzKCkKKyAgICAgICAgc2VsZi5wYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKKyAgICAgICAgc2VsZi5wYXJzZXIucGFyc2UobGluZXMpCiAKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc3RyCisgICAgZGVmIGdldF9hZ2VudF9hbmRfdXJsKHNlbGYsIHVybCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodXJsLCB0dXBsZSk6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gdXJsCisgICAgICAgICAgICByZXR1cm4gYWdlbnQsIHVybAorICAgICAgICByZXR1cm4gc2VsZi5hZ2VudCwgdXJsCiAKLXRlc3RzID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKKyAgICBkZWYgdGVzdF9nb29kX3VybHMoc2VsZik6CisgICAgICAgIGZvciB1cmwgaW4gc2VsZi5nb29kOgorICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYuZ2V0X2FnZW50X2FuZF91cmwodXJsKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodXJsPXVybCwgYWdlbnQ9YWdlbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCiAKLWRlZiBSb2JvdFRlc3QoaW5kZXgsIHJvYm90c190eHQsIGdvb2RfdXJscywgYmFkX3VybHMsCi0gICAgICAgICAgICAgIGFnZW50PSJ0ZXN0X3JvYm90cGFyc2VyIik6CisgICAgZGVmIHRlc3RfYmFkX3VybHMoc2VsZik6CisgICAgICAgIGZvciB1cmwgaW4gc2VsZi5iYWQ6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi5nZXRfYWdlbnRfYW5kX3VybCh1cmwpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmw9dXJsLCBhZ2VudD1hZ2VudCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCiAKLSAgICBsaW5lcyA9IGlvLlN0cmluZ0lPKHJvYm90c190eHQpLnJlYWRsaW5lcygpCi0gICAgcGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigpCi0gICAgcGFyc2VyLnBhcnNlKGxpbmVzKQotICAgIGZvciB1cmwgaW4gZ29vZF91cmxzOgotICAgICAgICB0ZXN0cy5hZGRUZXN0KFJvYm90VGVzdENhc2UoaW5kZXgsIHBhcnNlciwgdXJsLCAxLCBhZ2VudCkpCi0gICAgZm9yIHVybCBpbiBiYWRfdXJsczoKLSAgICAgICAgdGVzdHMuYWRkVGVzdChSb2JvdFRlc3RDYXNlKGluZGV4LCBwYXJzZXIsIHVybCwgMCwgYWdlbnQpKQogCi0jIEV4YW1wbGVzIGZyb20gaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnL3djL25vcm9ib3RzLmh0bWwgKGZldGNoZWQgMjAwMikKLQotIyAxLgotZG9jID0gIiIiCitjbGFzcyBVc2VyQWdlbnRXaWxkY2FyZFRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLyAjIFRoaXMgaXMgYW4gaW5maW5pdGUgdmlydHVhbCBVUkwgc3BhY2UKIERpc2FsbG93OiAvdG1wLyAjIHRoZXNlIHdpbGwgc29vbiBkaXNhcHBlYXIKIERpc2FsbG93OiAvZm9vLmh0bWwKLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy8nLCAnL3Rlc3QuaHRtbCddCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsICcvdG1wL3h4eCcsICcvZm9vLmh0bWwnXQogCi1nb29kID0gWycvJywnL3Rlc3QuaHRtbCddCi1iYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywnL3RtcC94eHgnLCcvZm9vLmh0bWwnXQogCi1Sb2JvdFRlc3QoMSwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMi4KLWRvYyA9ICIiIgorY2xhc3MgQ3Jhd2xEZWxheUFuZEN1c3RvbUFnZW50VGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKICMgcm9ib3RzLnR4dCBmb3IgaHR0cDovL3d3dy5leGFtcGxlLmNvbS8KIAogVXNlci1hZ2VudDogKgorQ3Jhd2wtZGVsYXk6IDEKK1JlcXVlc3QtcmF0ZTogMy8xNQogRGlzYWxsb3c6IC9jeWJlcndvcmxkL21hcC8gIyBUaGlzIGlzIGFuIGluZmluaXRlIHZpcnR1YWwgVVJMIHNwYWNlCiAKICMgQ3liZXJtYXBwZXIga25vd3Mgd2hlcmUgdG8gZ28uCiBVc2VyLWFnZW50OiBjeWJlcm1hcHBlcgogRGlzYWxsb3c6CisgICAgIiIiCisgICAgZ29vZCA9IFsnLycsICcvdGVzdC5odG1sJywgKCdjeWJlcm1hcHBlcicsICcvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcpXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnXQogCi0iIiIKIAotZ29vZCA9IFsnLycsJy90ZXN0Lmh0bWwnLCgnY3liZXJtYXBwZXInLCcvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcpXQotYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCddCi0KLVJvYm90VGVzdCgyLCBkb2MsIGdvb2QsIGJhZCkKLQotIyAzLgotZG9jID0gIiIiCitjbGFzcyBSZWplY3RBbGxSb2JvdHNUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogIyBnbyBhd2F5CiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogLwotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFtdCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsICcvJywgJy90bXAvJ10KIAotZ29vZCA9IFtdCi1iYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywnLycsJy90bXAvJ10KIAotUm9ib3RUZXN0KDMsIGRvYywgZ29vZCwgYmFkKQorY2xhc3MgQmFzZVJlcXVlc3RSYXRlVGVzdChCYXNlUm9ib3RUZXN0KToKIAotIyBFeGFtcGxlcyBmcm9tIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy93Yy9ub3JvYm90cy1yZmMuaHRtbCAoZmV0Y2hlZCAyMDAyKQorICAgIGRlZiB0ZXN0X3JlcXVlc3RfcmF0ZShzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmdvb2QgKyBzZWxmLmJhZDoKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLmdldF9hZ2VudF9hbmRfdXJsKHVybCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHVybD11cmwsIGFnZW50PWFnZW50KToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmNyYXdsX2RlbGF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIuY3Jhd2xfZGVsYXkoYWdlbnQpLCBzZWxmLmNyYXdsX2RlbGF5CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnJlcXVlc3RfcmF0ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZShhZ2VudCkucmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RfcmF0ZS5yZXF1ZXN0cworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhcnNlci5yZXF1ZXN0X3JhdGUoYWdlbnQpLnNlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RfcmF0ZS5zZWNvbmRzCisgICAgICAgICAgICAgICAgICAgICkKIAotIyA0LgotZG9jID0gIiIiCisKK2NsYXNzIENyYXdsRGVsYXlBbmRSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJlcXVlc3RSYXRlVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBmaWd0cmVlCitDcmF3bC1kZWxheTogMworUmVxdWVzdC1yYXRlOiA5LzMwCiBEaXNhbGxvdzogL3RtcAogRGlzYWxsb3c6IC9hJTNjZC5odG1sCiBEaXNhbGxvdzogL2ElMmZiLmh0bWwKIERpc2FsbG93OiAvJTdlam9lL2luZGV4Lmh0bWwKLSIiIgorICAgICIiIgorICAgIGFnZW50ID0gJ2ZpZ3RyZWUnCisgICAgcmVxdWVzdF9yYXRlID0gbmFtZWR0dXBsZSgncmVxX3JhdGUnLCAncmVxdWVzdHMgc2Vjb25kcycpKDksIDMwKQorICAgIGNyYXdsX2RlbGF5ID0gMworICAgIGdvb2QgPSBbKCdmaWd0cmVlJywgJy9mb28uaHRtbCcpXQorICAgIGJhZCA9IFsnL3RtcCcsICcvdG1wLmh0bWwnLCAnL3RtcC9hLmh0bWwnLCAnL2ElM2NkLmh0bWwnLCAnL2ElM0NkLmh0bWwnLAorICAgICAgICAgICAnL2ElMmZiLmh0bWwnLCAnL35qb2UvaW5kZXguaHRtbCddCiAKLWdvb2QgPSBbXSAjIFhGQUlMICcvYS9iLmh0bWwnCi1iYWQgPSBbJy90bXAnLCcvdG1wLmh0bWwnLCcvdG1wL2EuaHRtbCcsCi0gICAgICAgJy9hJTNjZC5odG1sJywnL2ElM0NkLmh0bWwnLCcvYSUyZmIuaHRtbCcsCi0gICAgICAgJy9+am9lL2luZGV4Lmh0bWwnCi0gICAgICAgXQogCi1Sb2JvdFRlc3QoNCwgZG9jLCBnb29kLCBiYWQsICdmaWd0cmVlJykKLVJvYm90VGVzdCg1LCBkb2MsIGdvb2QsIGJhZCwgJ0ZpZ1RyZWUgUm9ib3QgbGlid3d3LXBlcmwvNS4wNCcpCitjbGFzcyBEaWZmZXJlbnRBZ2VudFRlc3QoQ3Jhd2xEZWxheUFuZFJlcXVlc3RSYXRlVGVzdCk6CisgICAgYWdlbnQgPSAnRmlnVHJlZSBSb2JvdCBsaWJ3d3ctcGVybC81LjA0JworICAgICMgdGhlc2UgYXJlIG5vdCBhY3R1YWxseSB0ZXN0ZWQsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHBhcnNlIGl0CisgICAgIyBpbiBvcmRlciB0byBhY2NvbW1vZGF0ZSB0aGUgaW5wdXQgcGFyYW1ldGVycworICAgIHJlcXVlc3RfcmF0ZSA9IE5vbmUKKyAgICBjcmF3bF9kZWxheSA9IE5vbmUKIAotIyA2LgotZG9jID0gIiIiCisKK2NsYXNzIEludmFsaWRSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL3RtcC8KIERpc2FsbG93OiAvYSUzQ2QuaHRtbAogRGlzYWxsb3c6IC9hL2IuaHRtbAogRGlzYWxsb3c6IC8lN2Vqb2UvaW5kZXguaHRtbAotIiIiCitDcmF3bC1kZWxheTogMworUmVxdWVzdC1yYXRlOiA5L2JhbmFuYQorICAgICIiIgorICAgIGdvb2QgPSBbJy90bXAnXQorICAgIGJhZCA9IFsnL3RtcC8nLCAnL3RtcC9hLmh0bWwnLCAnL2ElM2NkLmh0bWwnLCAnL2ElM0NkLmh0bWwnLCAnL2EvYi5odG1sJywKKyAgICAgICAgICAgJy8lN0Vqb2UvaW5kZXguaHRtbCddCisgICAgY3Jhd2xfZGVsYXkgPSAzCiAKLWdvb2QgPSBbJy90bXAnLF0gIyBYRkFJTDogJy9hJTJmYi5odG1sJwotYmFkID0gWycvdG1wLycsJy90bXAvYS5odG1sJywKLSAgICAgICAnL2ElM2NkLmh0bWwnLCcvYSUzQ2QuaHRtbCcsIi9hL2IuaHRtbCIsCi0gICAgICAgJy8lN0Vqb2UvaW5kZXguaHRtbCddCiAKLVJvYm90VGVzdCg2LCBkb2MsIGdvb2QsIGJhZCkKLQotIyBGcm9tIGJ1ZyByZXBvcnQgIzUyMzA0MQotCi0jIDcuCi1kb2MgPSAiIiIKK2NsYXNzIEludmFsaWRDcmF3bERlbGF5VGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBGcm9tIGJ1ZyByZXBvcnQgIzUyMzA0MQorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLUFnZW50OiAqCiBEaXNhbGxvdzogLy4KLSIiIgorQ3Jhd2wtZGVsYXk6IHBlYXJzCisgICAgIiIiCisgICAgZ29vZCA9IFsnL2Zvby5odG1sJ10KKyAgICAjIGJ1ZyByZXBvcnQgc2F5cyAiLyIgc2hvdWxkIGJlIGRlbmllZCwgYnV0IHRoYXQgaXMgbm90IGluIHRoZSBSRkMKKyAgICBiYWQgPSBbXQogCi1nb29kID0gWycvZm9vLmh0bWwnXQotYmFkID0gW10gIyBCdWcgcmVwb3J0IHNheXMgIi8iIHNob3VsZCBiZSBkZW5pZWQsIGJ1dCB0aGF0IGlzIG5vdCBpbiB0aGUgUkZDCiAKLVJvYm90VGVzdCg3LCBkb2MsIGdvb2QsIGJhZCkKLQotIyBGcm9tIEdvb2dsZTogaHR0cDovL3d3dy5nb29nbGUuY29tL3N1cHBvcnQvd2VibWFzdGVycy9iaW4vYW5zd2VyLnB5P2hsPWVuJmFuc3dlcj00MDM2NAotCi0jIDguCi1kb2MgPSAiIiIKK2NsYXNzIEFub3RoZXJJbnZhbGlkUmVxdWVzdFJhdGVUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIGFsc28gdGVzdCB0aGF0IEFsbG93IGFuZCBEaWFzYWxsb3cgd29ya3Mgd2VsbCB3aXRoIGVhY2ggb3RoZXIKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogR29vZ2xlYm90CiBBbGxvdzogL2ZvbGRlcjEvbXlmaWxlLmh0bWwKIERpc2FsbG93OiAvZm9sZGVyMS8KLSIiIgorUmVxdWVzdC1yYXRlOiB3aGFsZS9iYW5hbmEKKyAgICAiIiIKKyAgICBhZ2VudCA9ICdHb29nbGVib3QnCisgICAgZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQorICAgIGJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCiAKLWdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KLWJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCiAKLVJvYm90VGVzdCg4LCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdCIpCi0KLSMgOS4gIFRoaXMgZmlsZSBpcyBpbmNvcnJlY3QgYmVjYXVzZSAiR29vZ2xlYm90IiBpcyBhIHN1YnN0cmluZyBvZgotIyAgICAgIkdvb2dsZWJvdC1Nb2JpbGUiLCBzbyB0ZXN0IDEwIHdvcmtzIGp1c3QgbGlrZSB0ZXN0IDkuCi1kb2MgPSAiIiIKK2NsYXNzIFVzZXJBZ2VudE9yZGVyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB0aGUgb3JkZXIgb2YgVXNlci1hZ2VudCBzaG91bGQgYmUgY29ycmVjdC4gbm90ZQorICAgICMgdGhhdCB0aGlzIGZpbGUgaXMgaW5jb3JyZWN0IGJlY2F1c2UgIkdvb2dsZWJvdCIgaXMgYQorICAgICMgc3Vic3RyaW5nIG9mICJHb29nbGVib3QtTW9iaWxlIgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBHb29nbGVib3QKIERpc2FsbG93OiAvCiAKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdC1Nb2JpbGUKIEFsbG93OiAvCi0iIiIKLQotZ29vZCA9IFtdCi1iYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KLQotUm9ib3RUZXN0KDksIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotZ29vZCA9IFtdCi1iYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KLQotUm9ib3RUZXN0KDEwLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdC1Nb2JpbGUiKQotCi0jIDExLiAgR2V0IHRoZSBvcmRlciBjb3JyZWN0LgotZG9jID0gIiIiCi1Vc2VyLWFnZW50OiBHb29nbGVib3QtTW9iaWxlCi1BbGxvdzogLwotCi1Vc2VyLWFnZW50OiBHb29nbGVib3QKLURpc2FsbG93OiAvCi0iIiIKLQotZ29vZCA9IFtdCi1iYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KLQotUm9ib3RUZXN0KDExLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdCIpCi0KLWdvb2QgPSBbJy9zb21ldGhpbmcuanBnJ10KLWJhZCA9IFtdCi0KLVJvYm90VGVzdCgxMiwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QtTW9iaWxlIikKKyAgICAiIiIKKyAgICBhZ2VudCA9ICdHb29nbGVib3QnCisgICAgYmFkID0gWycvc29tZXRoaW5nLmpwZyddCiAKIAotIyAxMy4gIEdvb2dsZSBhbHNvIGdvdCB0aGUgb3JkZXIgd3JvbmcgaW4gIzguICBZb3UgbmVlZCB0byBzcGVjaWZ5IHRoZQotIyAgICAgIFVSTHMgZnJvbSBtb3JlIHNwZWNpZmljIHRvIG1vcmUgZ2VuZXJhbC4KLWRvYyA9ICIiIgorY2xhc3MgVXNlckFnZW50R29vZ2xlTW9iaWxlVGVzdChVc2VyQWdlbnRPcmRlcmluZ1Rlc3QpOgorICAgIGFnZW50ID0gJ0dvb2dsZWJvdC1Nb2JpbGUnCisKKworY2xhc3MgR29vZ2xlVVJMT3JkZXJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIEdvb2dsZSBhbHNvIGdvdCB0aGUgb3JkZXIgd3JvbmcuIFlvdSBuZWVkCisgICAgIyB0byBzcGVjaWZ5IHRoZSBVUkxzIGZyb20gbW9yZSBzcGVjaWZpYyB0byBtb3JlIGdlbmVyYWwKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogR29vZ2xlYm90CiBBbGxvdzogL2ZvbGRlcjEvbXlmaWxlLmh0bWwKIERpc2FsbG93OiAvZm9sZGVyMS8KLSIiIgotCi1nb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCi1iYWQgPSBbJy9mb2xkZXIxL2Fub3RoZXJmaWxlLmh0bWwnXQotCi1Sb2JvdFRlc3QoMTMsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iZ29vZ2xlYm90IikKKyAgICAiIiIKKyAgICBhZ2VudCA9ICdnb29nbGVib3QnCisgICAgZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQorICAgIGJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCiAKIAotIyAxNC4gRm9yIGlzc3VlICM2MzI1IChxdWVyeSBzdHJpbmcgc3VwcG9ydCkKLWRvYyA9ICIiIgorY2xhc3MgRGlzYWxsb3dRdWVyeVN0cmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgc2VlIGlzc3VlICM2MzI1IGZvciBkZXRhaWxzCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvc29tZS9wYXRoP25hbWU9dmFsdWUKLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy9zb21lL3BhdGgnXQorICAgIGJhZCA9IFsnL3NvbWUvcGF0aD9uYW1lPXZhbHVlJ10KIAotZ29vZCA9IFsnL3NvbWUvcGF0aCddCi1iYWQgPSBbJy9zb21lL3BhdGg/bmFtZT12YWx1ZSddCiAKLVJvYm90VGVzdCgxNCwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMTUuIEZvciBpc3N1ZSAjNDEwOCAob2JleSBmaXJzdCAqIGVudHJ5KQotZG9jID0gIiIiCitjbGFzcyBVc2VGaXJzdFVzZXJBZ2VudFdpbGRjYXJkVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBvYmV5IGZpcnN0ICogZW50cnkgKCM0MTA4KQorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL3NvbWUvcGF0aAogCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL2Fub3RoZXIvcGF0aAotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnL2Fub3RoZXIvcGF0aCddCisgICAgYmFkID0gWycvc29tZS9wYXRoJ10KIAotZ29vZCA9IFsnL2Fub3RoZXIvcGF0aCddCi1iYWQgPSBbJy9zb21lL3BhdGgnXQogCi1Sb2JvdFRlc3QoMTUsIGRvYywgZ29vZCwgYmFkKQotCi0jIDE2LiBFbXB0eSBxdWVyeSAoaXNzdWUgIzE3NDAzKS4gTm9ybWFsaXppbmcgdGhlIHVybCBmaXJzdC4KLWRvYyA9ICIiIgorY2xhc3MgRW1wdHlRdWVyeVN0cmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgbm9ybWFsaXplIHRoZSBVUkwgZmlyc3QgKCMxNzQwMykKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogQWxsb3c6IC9zb21lL3BhdGg/CiBEaXNhbGxvdzogL2Fub3RoZXIvcGF0aD8KLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy9zb21lL3BhdGg/J10KKyAgICBiYWQgPSBbJy9hbm90aGVyL3BhdGg/J10KIAotZ29vZCA9IFsnL3NvbWUvcGF0aD8nXQotYmFkID0gWycvYW5vdGhlci9wYXRoPyddCiAKLVJvYm90VGVzdCgxNiwgZG9jLCBnb29kLCBiYWQpCitjbGFzcyBEZWZhdWx0RW50cnlUZXN0KEJhc2VSZXF1ZXN0UmF0ZVRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAorVXNlci1hZ2VudDogKgorQ3Jhd2wtZGVsYXk6IDEKK1JlcXVlc3QtcmF0ZTogMy8xNQorRGlzYWxsb3c6IC9jeWJlcndvcmxkL21hcC8KKyAgICAiIiIKKyAgICByZXF1ZXN0X3JhdGUgPSBuYW1lZHR1cGxlKCdyZXFfcmF0ZScsICdyZXF1ZXN0cyBzZWNvbmRzJykoMywgMTUpCisgICAgY3Jhd2xfZGVsYXkgPSAxCisgICAgZ29vZCA9IFsnLycsICcvdGVzdC5odG1sJ10KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJ10KIAogCiBjbGFzcyBSb2JvdEhhbmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CkBAIC0yODMsOSArMjc2LDcgQEAKICAgICAgICAgc2VsZi50LmpvaW4oKQogICAgICAgICBzZWxmLnNlcnZlci5zZXJ2ZXJfY2xvc2UoKQogCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYudGVzdFBhc3N3b3JkUHJvdGVjdGVkU2l0ZSgpCi0KKyAgICBAc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdFBhc3N3b3JkUHJvdGVjdGVkU2l0ZShzZWxmKToKICAgICAgICAgYWRkciA9IHNlbGYuc2VydmVyLnNlcnZlcl9hZGRyZXNzCiAgICAgICAgIHVybCA9ICdodHRwOi8vJyArIHN1cHBvcnQuSE9TVCArICc6JyArIHN0cihhZGRyWzFdKQpAQCAtMjk1LDI2ICsyODYsNDcgQEAKICAgICAgICAgcGFyc2VyLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhcnNlci5jYW5fZmV0Y2goIioiLCByb2JvdHNfdXJsKSkKIAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJyVzJyAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCiAKIGNsYXNzIE5ldHdvcmtUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBAdW5pdHRlc3Quc2tpcCgnZG9lcyBub3QgaGFuZGxlIHRoZSBnemlwIGVuY29kaW5nIGRlbGl2ZXJlZCBieSBweWRvdG9yZycpCi0gICAgZGVmIHRlc3RQeXRob25Pcmcoc2VsZik6Ci0gICAgICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCd3d3cucHl0aG9uLm9yZycpOgotICAgICAgICAgICAgcGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigKLSAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5weXRob24ub3JnL3JvYm90cy50eHQiKQotICAgICAgICAgICAgcGFyc2VyLnJlYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAotICAgICAgICAgICAgICAgIHBhcnNlci5jYW5fZmV0Y2goIioiLCAiaHR0cDovL3d3dy5weXRob24ub3JnL3JvYm90cy50eHQiKSkKKyAgICBiYXNlX3VybCA9ICdodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0LycKKyAgICByb2JvdHNfdHh0ID0gJ3t9ZWxzZXdoZXJlL3JvYm90cy50eHQnLmZvcm1hdChiYXNlX3VybCkKIAotZGVmIGxvYWRfdGVzdHMobG9hZGVyLCBzdWl0ZSwgcGF0dGVybik6Ci0gICAgc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoTmV0d29ya1Rlc3RDYXNlKQotICAgIHN1aXRlLmFkZFRlc3QodGVzdHMpCi0gICAgc3VpdGUuYWRkVGVzdChQYXNzd29yZFByb3RlY3RlZFNpdGVUZXN0Q2FzZSgpKQotICAgIHJldHVybiBzdWl0ZQorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KGNscy5iYXNlX3VybCk6CisgICAgICAgICAgICBjbHMucGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcihjbHMucm9ib3RzX3R4dCkKKyAgICAgICAgICAgIGNscy5wYXJzZXIucmVhZCgpCisKKyAgICBkZWYgdXJsKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gJ3t9e317fScuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5iYXNlX3VybCwgcGF0aCwgJy8nIGlmIG5vdCBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpWzFdIGVsc2UgJycKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuZGlzYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmFsbG93X2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNlbGYucGFyc2VyLm10aW1lKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY3Jhd2xfZGVsYXkoJyonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5yZXF1ZXN0X3JhdGUoJyonKSkKKworICAgIGRlZiB0ZXN0X2Nhbl9mZXRjaChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYudXJsKCdlbHNld2hlcmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYuYmFzZV91cmwpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnTnV0Y2gnLCBzZWxmLnVybCgnYnJpYW4nKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYudXJsKCd3ZWJzdGF0cycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJyonLCBzZWxmLnVybCgnd2Vic3RhdHMnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJyonLCBzZWxmLmJhc2VfdXJsKSkKKworICAgIGRlZiB0ZXN0X3JlYWRfNDA0KHNlbGYpOgorICAgICAgICBwYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKHNlbGYudXJsKCdpLXJvYm90LnR4dCcpKQorICAgICAgICBwYXJzZXIucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXJzZXIuYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhcnNlci5kaXNhbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLm10aW1lKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5jcmF3bF9kZWxheSgnKicpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIucmVxdWVzdF9yYXRlKCcqJykpCiAKIGlmIF9fbmFtZV9fPT0nX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ydW5weS5weSBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKaW5kZXggZGI1NWRiNy4uMDJiNGQ2MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ydW5weS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CkBAIC01NzcsMTMgKzU3NywxNCBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5fZGVsX3BrZywgcGtnX2RpcikKICAgICAgICAgZm9yIGRlcHRoIGluIHJhbmdlKDIsIG1heF9kZXB0aCsxKToKICAgICAgICAgICAgIHNlbGYuX2FkZF9yZWxhdGl2ZV9tb2R1bGVzKHBrZ19kaXIsICIiLCBkZXB0aCkKLSAgICAgICAgZm9yIGZpbmRlciwgbW9kX25hbWUsIGlzcGtnIGluIHBrZ3V0aWwud2Fsa19wYWNrYWdlcyhbcGtnX2Rpcl0pOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZpbmRlciwKKyAgICAgICAgZm9yIG1vZHVsZWluZm8gaW4gcGtndXRpbC53YWxrX3BhY2thZ2VzKFtwa2dfZGlyXSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlaW5mbywgcGtndXRpbC5Nb2R1bGVJbmZvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZWluZm8ubW9kdWxlX2ZpbmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIpCi0gICAgICAgICAgICBpZiBpc3BrZzoKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5yZW1vdmUobW9kX25hbWUpCisgICAgICAgICAgICBpZiBtb2R1bGVpbmZvLmlzcGtnOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLnJlbW92ZShtb2R1bGVpbmZvLm5hbWUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMucmVtb3ZlKG1vZF9uYW1lKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMucmVtb3ZlKG1vZHVsZWluZm8ubmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfcGFja2FnZXMpLCAwLCBleHBlY3RlZF9wYWNrYWdlcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbW9kdWxlcyksIDAsIGV4cGVjdGVkX21vZHVsZXMpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkgYi9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CmluZGV4IGZlOGU3ODUuLmY4NmY1OTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCBzY2hlZAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZWNyZXRzLnB5IGIvTGliL3Rlc3QvdGVzdF9zZWNyZXRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNjVjZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkKQEAgLTAsMCArMSwxMjMgQEAKKyIiIlRlc3QgdGhlIHNlY3JldHMgbW9kdWxlLgorCitBcyBtb3N0IG9mIHRoZSBmdW5jdGlvbnMgaW4gc2VjcmV0cyBhcmUgdGhpbiB3cmFwcGVycyBhcm91bmQgZnVuY3Rpb25zCitkZWZpbmVkIGVsc2V3aGVyZSwgd2UgZG9uJ3QgbmVlZCB0byB0ZXN0IHRoZW0gZXhoYXVzdGl2ZWx5LgorIiIiCisKKworaW1wb3J0IHNlY3JldHMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN0cmluZworCisKKyMgPT09IFVuaXQgdGVzdHMgPT09CisKK2NsYXNzIENvbXBhcmVfRGlnZXN0X1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHNlY3JldHMuY29tcGFyZV9kaWdlc3QgZnVuY3Rpb24uIiIiCisKKyAgICBkZWYgdGVzdF9lcXVhbChzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvbXBhcmVfZGlnZXN0IGZ1bmN0aW9uYWxpdHkgd2l0aCBlcXVhbCAoYnl0ZS90ZXh0KSBzdHJpbmdzLgorICAgICAgICBmb3IgcyBpbiAoImEiLCAiYmNkIiwgInh5ejEyMyIpOgorICAgICAgICAgICAgYSA9IHMqMTAwCisgICAgICAgICAgICBiID0gcyoxMDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYS5lbmNvZGUoJ3V0Zi04JyksIGIuZW5jb2RlKCd1dGYtOCcpKSkKKworICAgIGRlZiB0ZXN0X3VuZXF1YWwoc2VsZik6CisgICAgICAgICMgVGVzdCBjb21wYXJlX2RpZ2VzdCBmdW5jdGlvbmFsaXR5IHdpdGggdW5lcXVhbCAoYnl0ZS90ZXh0KSBzdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoImFiYyIsICJhYmNkIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdChiImFiYyIsIGIiYWJjZCIpKQorICAgICAgICBmb3IgcyBpbiAoIngiLCAibW4iLCAiYTFiMmMzIik6CisgICAgICAgICAgICBhID0gcyoxMDAgKyAicSIKKyAgICAgICAgICAgIGIgPSBzKjEwMCArICJrIgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGEuZW5jb2RlKCd1dGYtOCcpLCBiLmVuY29kZSgndXRmLTgnKSkpCisKKyAgICBkZWYgdGVzdF9iYWRfdHlwZXMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGNvbXBhcmVfZGlnZXN0IHJhaXNlcyB3aXRoIG1peGVkIHR5cGVzLgorICAgICAgICBhID0gJ2FiY2RlJworICAgICAgICBiID0gYS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYSwgc3RyKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShiLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWNyZXRzLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlY3JldHMuY29tcGFyZV9kaWdlc3QsIGIsIGEpCisKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBjb21wYXJlX2RpZ2VzdCByZXR1cm5zIGEgYm9vbC4KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoImFiYyIsICJhYmMiKSwgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoImFiYyIsICJ4eXoiKSwgYm9vbCkKKworCitjbGFzcyBSYW5kb21fVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3Qgd3JhcHBlcnMgYXJvdW5kIFN5c3RlbVJhbmRvbSBtZXRob2RzLiIiIgorCisgICAgZGVmIHRlc3RfcmFuZGJpdHMoc2VsZik6CisgICAgICAgICMgVGVzdCByYW5kYml0cy4KKyAgICAgICAgZXJybXNnID0gInJhbmRiaXRzKCVkKSByZXR1cm5lZCAlZCIKKyAgICAgICAgZm9yIG51bWJpdHMgaW4gKDMsIDEyLCAzMCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg2KToKKyAgICAgICAgICAgICAgICBuID0gc2VjcmV0cy5yYW5kYml0cyhudW1iaXRzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwIDw9IG4gPCAyKipudW1iaXRzLCBlcnJtc2cgJSAobnVtYml0cywgbikpCisKKyAgICBkZWYgdGVzdF9jaG9pY2Uoc2VsZik6CisgICAgICAgICMgVGVzdCBjaG9pY2UuCisgICAgICAgIGl0ZW1zID0gWzEsIDIsIDQsIDgsIDE2LCAzMiwgNjRdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWNyZXRzLmNob2ljZShpdGVtcykgaW4gaXRlbXMpCisKKyAgICBkZWYgdGVzdF9yYW5kYmVsb3coc2VsZik6CisgICAgICAgICMgVGVzdCByYW5kYmVsb3cuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIsIDEwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VjcmV0cy5yYW5kYmVsb3coaSksIHJhbmdlKGkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWNyZXRzLnJhbmRiZWxvdywgMCkKKworCitjbGFzcyBUb2tlbl9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0b2tlbiBmdW5jdGlvbnMuIiIiCisKKyAgICBkZWYgdGVzdF90b2tlbl9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdG9rZW5fKiBmdW5jdGlvbnMgaGFuZGxlIGRlZmF1bHQgc2l6ZSBjb3JyZWN0bHkuCisgICAgICAgIGZvciBmdW5jIGluIChzZWNyZXRzLnRva2VuX2J5dGVzLCBzZWNyZXRzLnRva2VuX2hleCwKKyAgICAgICAgICAgICAgICAgICAgIHNlY3JldHMudG9rZW5fdXJsc2FmZSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmdW5jPWZ1bmMpOgorICAgICAgICAgICAgICAgIG5hbWUgPSBmdW5jLl9fbmFtZV9fCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiVzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCIgJSBuYW1lKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZnVuYyhOb25lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIE5vbmUiICUgbmFtZSkKKyAgICAgICAgc2l6ZSA9IHNlY3JldHMuREVGQVVMVF9FTlRST1BZCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlY3JldHMudG9rZW5fYnl0ZXMoTm9uZSkpLCBzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWNyZXRzLnRva2VuX2hleChOb25lKSksIDIqc2l6ZSkKKworICAgIGRlZiB0ZXN0X3Rva2VuX2J5dGVzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdG9rZW5fYnl0ZXMuCisgICAgICAgIGZvciBuIGluICgxLCA4LCAxNywgMTAwKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG49bik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlY3JldHMudG9rZW5fYnl0ZXMobiksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlY3JldHMudG9rZW5fYnl0ZXMobikpLCBuKQorCisgICAgZGVmIHRlc3RfdG9rZW5faGV4KHNlbGYpOgorICAgICAgICAjIFRlc3QgdG9rZW5faGV4LgorICAgICAgICBmb3IgbiBpbiAoMSwgMTIsIDI1LCA5MCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHMgPSBzZWNyZXRzLnRva2VuX2hleChuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzLCBzdHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIDIqbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKGMgaW4gc3RyaW5nLmhleGRpZ2l0cyBmb3IgYyBpbiBzKSkKKworICAgIGRlZiB0ZXN0X3Rva2VuX3VybHNhZmUoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl91cmxzYWZlLgorICAgICAgICBsZWdhbCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICctXycKKyAgICAgICAgZm9yIG4gaW4gKDEsIDExLCAyOCwgNzYpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICBzID0gc2VjcmV0cy50b2tlbl91cmxzYWZlKG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHMsIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKGMgaW4gbGVnYWwgZm9yIGMgaW4gcykpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKaW5kZXggNzU5NDMwMy4uYWZhNmU3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKQEAgLTYsMTAgKzYsMTEgQEAKIGltcG9ydCBjb3B5CiBpbXBvcnQgcGlja2xlCiBmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlLCBzaHVmZmxlCi1pbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvbGxlY3Rpb25zLmFiYworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHN0cmluZwogCiBjbGFzcyBQYXNzVGhydShFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTcyOSw2ICs3MzAsMjggQEAKICAgICAgICAgICAgIGFkZGhhc2h2YWx1ZShoYXNoKGZyb3plbnNldChbZSBmb3IgZSwgbSBpbiBlbGVtbWFza3MgaWYgbSZpXSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoYXNodmFsdWVzKSwgMioqbikKIAorICAgICAgICBkZWYgbGV0dGVyX3JhbmdlKG4pOgorICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5hc2NpaV9sZXR0ZXJzWzpuXQorCisgICAgICAgIGRlZiB6Zl9yYW5nZShuKToKKyAgICAgICAgICAgICMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2V0LXRoZW9yZXRpY19kZWZpbml0aW9uX29mX25hdHVyYWxfbnVtYmVycworICAgICAgICAgICAgbnVtcyA9IFtmcm96ZW5zZXQoKV0KKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG4tMSk6CisgICAgICAgICAgICAgICAgbnVtID0gZnJvemVuc2V0KG51bXMpCisgICAgICAgICAgICAgICAgbnVtcy5hcHBlbmQobnVtKQorICAgICAgICAgICAgcmV0dXJuIG51bXNbOm5dCisKKyAgICAgICAgZGVmIHBvd2Vyc2V0KHMpOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHMpKzEpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gbWFwKGZyb3plbnNldCwgaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyhzLCBpKSkKKworICAgICAgICBmb3IgbiBpbiByYW5nZSgxOCk6CisgICAgICAgICAgICB0ID0gMiAqKiBuCisgICAgICAgICAgICBtYXNrID0gdCAtIDEKKyAgICAgICAgICAgIGZvciBudW1zIGluIChyYW5nZSwgbGV0dGVyX3JhbmdlLCB6Zl9yYW5nZSk6CisgICAgICAgICAgICAgICAgdSA9IGxlbih7aCAmIG1hc2sgZm9yIGggaW4gbWFwKGhhc2gsIHBvd2Vyc2V0KG51bXMobikpKX0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKDQqdSwgdCkKKwogY2xhc3MgRnJvemVuU2V0U3ViY2xhc3MoZnJvemVuc2V0KToKICAgICBwYXNzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CmluZGV4IDU1YjUzM2QuLjM5MzZjOTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQpAQCAtMTczLDE2ICsxNzMsMTE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlczogJXMgIT0gJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuZGF0YVtpXVswXSwgbCwgc2VsZi5kYXRhW2ldWzE6XSkpCiAKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0QW1wZXJzYW5kQW5kUGlwZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mICYsIHwiIiIKKyAgICAgICAgIyBDb3VsZCB0YWtlIHRoZXNlIGZvcm1zOiAmJiwgJiwgfCYsIDsmLCA7OyYKKyAgICAgICAgIyBvZiBjb3Vyc2UsIHRoZSBzYW1lIGFwcGxpZXMgdG8gfCBhbmQgfHwKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBmb3IgZGVsaW1pdGVyIGluICgnJiYnLCAnJicsICd8JicsICc7JicsICc7OyYnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnfHwnLCAnfCcsICcmfCcsICc7fCcsICc7O3wnKToKKyAgICAgICAgICAgIHNyYyA9IFsnZWNobyBoaSAlcyBlY2hvIGJ5ZScgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklc2VjaG8gYnllJyAlIGRlbGltaXRlcl0KKyAgICAgICAgICAgIHJlZiA9IFsnZWNobycsICdoaScsIGRlbGltaXRlciwgJ2VjaG8nLCAnYnllJ10KKyAgICAgICAgICAgIGZvciBzcyBpbiBzcmM6CisgICAgICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0U2VtaWNvbG9uKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgb2YgOyIiIgorICAgICAgICAjIENvdWxkIHRha2UgdGhlc2UgZm9ybXM6IDssIDs7LCA7JiwgOzsmCisgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBwYXJzZSB0byB0aGUgc2FtZSBvdXRwdXQKKyAgICAgICAgZm9yIGRlbGltaXRlciBpbiAoJzsnLCAnOzsnLCAnOyYnLCAnOzsmJyk6CisgICAgICAgICAgICBzcmMgPSBbJ2VjaG8gaGkgJXMgZWNobyBieWUnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXMgZWNobyBieWUnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXNlY2hvIGJ5ZScgJSBkZWxpbWl0ZXJdCisgICAgICAgICAgICByZWYgPSBbJ2VjaG8nLCAnaGknLCBkZWxpbWl0ZXIsICdlY2hvJywgJ2J5ZSddCisgICAgICAgICAgICBmb3Igc3MgaW4gc3JjOgorICAgICAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdFJlZGlyZWN0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgb2YgPiIiIgorICAgICAgICAjIG9mIGNvdXJzZSwgdGhlIHNhbWUgYXBwbGllcyB0byA8LCB8CisgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBwYXJzZSB0byB0aGUgc2FtZSBvdXRwdXQKKyAgICAgICAgZm9yIGRlbGltaXRlciBpbiAoJzwnLCAnfCcpOgorICAgICAgICAgICAgc3JjID0gWydlY2hvIGhpICVzIG91dCcgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklcyBvdXQnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXNvdXQnICUgZGVsaW1pdGVyXQorICAgICAgICAgICAgcmVmID0gWydlY2hvJywgJ2hpJywgZGVsaW1pdGVyLCAnb3V0J10KKyAgICAgICAgICAgIGZvciBzcyBpbiBzcmM6CisgICAgICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0UGFyZW4oc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiAoKSIiIgorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIHNyYyA9IFsnKCBlY2hvIGhpICknLAorICAgICAgICAgICAgICAgJyhlY2hvIGhpKSddCisgICAgICAgIHJlZiA9IFsnKCcsICdlY2hvJywgJ2hpJywgJyknXQorICAgICAgICBmb3Igc3MgaW4gc3JjOgorICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdEN1c3RvbShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIHdpdGggY3VzdG9tIGNoYXJzIiIiCisgICAgICAgIHJlZiA9IFsnfi9hJywgJyYnLCAnJicsICdiLWMnLCAnLS1jb2xvcj1hdXRvJywgJ3x8JywgJ2QnLCAnKi5weT8nXQorICAgICAgICBzcyA9ICJ+L2EgJiYgYi1jIC0tY29sb3I9YXV0byB8fCBkICoucHk/IgorICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPSJ8IikKKyAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFRva2VuVHlwZXMoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCB0b2tlbnMgYXJlIHNwbGl0IHdpdGggdHlwZXMgYXMgZXhwZWN0ZWQuIiIiCisgICAgICAgIGZvciBzb3VyY2UsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhICYmIGIgfHwgYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhJywgJ2EnKSwgKCcmJicsICdjJyksICgnYicsICdhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCd8fCcsICdjJyksICgnYycsICdhJyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc291cmNlLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgb2JzZXJ2ZWQgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0ID0gcy5nZXRfdG9rZW4oKQorICAgICAgICAgICAgICAgIGlmIHQgPT0gcy5lb2Y6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgdFswXSBpbiBzLnB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgICAgICAgICB0dCA9ICdjJworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHR0ID0gJ2EnCisgICAgICAgICAgICAgICAgb2JzZXJ2ZWQuYXBwZW5kKCh0LCB0dCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9ic2VydmVkLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0UHVuY3R1YXRpb25JbldvcmRDaGFycyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGFueSBwdW5jdHVhdGlvbiBjaGFycyBhcmUgcmVtb3ZlZCBmcm9tIHdvcmRjaGFycyIiIgorICAgICAgICBzID0gc2hsZXguc2hsZXgoJ2FfYl9fYycsIHB1bmN0dWF0aW9uX2NoYXJzPSdfJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignXycsIHMud29yZGNoYXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocyksIFsnYScsICdfJywgJ2InLCAnX18nLCAnYyddKQorCisgICAgZGVmIHRlc3RQdW5jdHVhdGlvbldpdGhXaGl0ZXNwYWNlU3BsaXQoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCB3aXRoIHdoaXRlc3BhY2Vfc3BsaXQsIGJlaGF2aW91ciBpcyBhcyBleHBlY3RlZCIiIgorICAgICAgICBzID0gc2hsZXguc2hsZXgoJ2EgICYmIGIgIHx8ICBjJywgcHVuY3R1YXRpb25fY2hhcnM9JyYnKQorICAgICAgICAjIHdoaXRlc3BhY2Vfc3BsaXQgaXMgRmFsc2UsIHNvIHNwbGl0dGluZyB3aWxsIGJlIGJhc2VkIG9uCisgICAgICAgICMgcHVuY3R1YXRpb25fY2hhcnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBbJ2EnLCAnJiYnLCAnYicsICd8JywgJ3wnLCAnYyddKQorICAgICAgICBzID0gc2hsZXguc2hsZXgoJ2EgICYmIGIgIHx8ICBjJywgcHVuY3R1YXRpb25fY2hhcnM9JyYnKQorICAgICAgICBzLndoaXRlc3BhY2Vfc3BsaXQgPSBUcnVlCisgICAgICAgICMgd2hpdGVzcGFjZV9zcGxpdCBpcyBUcnVlLCBzbyBzcGxpdHRpbmcgd2lsbCBiZSBiYXNlZCBvbgorICAgICAgICAjIHdoaXRlIHNwYWNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgWydhJywgJyYmJywgJ2InLCAnfHwnLCAnYyddKQorCiAgICAgZGVmIHRlc3RFbXB0eVN0cmluZ0hhbmRsaW5nKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHRoYXQgcGFyc2luZyBvZiBlbXB0eSBzdHJpbmdzIGlzIGNvcnJlY3RseSBoYW5kbGVkLiIiIgogICAgICAgICAjIHNlZSBJc3N1ZSAjMjE5OTkKICAgICAgICAgZXhwZWN0ZWQgPSBbJycsICcpJywgJ2FiYyddCi0KLSAgICAgICAgcyA9IHNobGV4LnNobGV4KCInJylhYmMiLCBwb3NpeD1UcnVlKQotICAgICAgICBzbGlzdCA9IGxpc3QocykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbGlzdCwgZXhwZWN0ZWQpCisgICAgICAgIGZvciBwdW5jdCBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KCInJylhYmMiLCBwb3NpeD1UcnVlLCBwdW5jdHVhdGlvbl9jaGFycz1wdW5jdCkKKyAgICAgICAgICAgIHNsaXN0ID0gbGlzdChzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbGlzdCwgZXhwZWN0ZWQpCiAgICAgICAgIGV4cGVjdGVkID0gWyInJyIsICcpJywgJ2FiYyddCi0gICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIikKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCInJylhYmMiLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocyksIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RRdW90ZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKaW5kZXggMWQ1ZTAxYS4uOTkwZmFlNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKQEAgLTEzMiw5ICsxMzIsNyBAQAogICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbih2aWN0aW0sICdzb21lZmlsZScpLCAnZm9vJykKICAgICAgICAgdmljdGltID0gb3MuZnNlbmNvZGUodmljdGltKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmljdGltLCBieXRlcykKLSAgICAgICAgd2luID0gKG9zLm5hbWUgPT0gJ250JykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgaWYgd2luIGVsc2UgRXhpdFN0YWNrKCk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHZpY3RpbSkKKyAgICAgICAgc2h1dGlsLnJtdHJlZSh2aWN0aW0pCiAKICAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiAgICAgZGVmIHRlc3Rfcm10cmVlX2ZhaWxzX29uX3N5bWxpbmsoc2VsZik6CkBAIC0xMzA2LDEwICsxMzA0LDEwIEBACiAgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMb29rdXBFcnJvcik6Ci0gICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9J25vbi1leGlzaW5nIHVzZXJuYW1lJykKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdXNlcj0nbm9uLWV4aXN0aW5nIHVzZXJuYW1lJykKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExvb2t1cEVycm9yKToKLSAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgZ3JvdXA9J25vbi1leGlzaW5nIGdyb3VwbmFtZScpCisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGdyb3VwPSdub24tZXhpc3RpbmcgZ3JvdXBuYW1lJykKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGInc3BhbScpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CmluZGV4IDFiODBmZjAuLmFiNDJlZDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CkBAIC0yMiwyOSArMjIsNiBAQAogICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogCi1jbGFzcyBIYW5kbGVyQkNhbGxlZChFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1kZWYgZXhpdF9zdWJwcm9jZXNzKCk6Ci0gICAgIiIiVXNlIG9zLl9leGl0KDApIHRvIGV4aXQgdGhlIGN1cnJlbnQgc3VicHJvY2Vzcy4KLQotICAgIE90aGVyd2lzZSwgdGhlIHRlc3QgY2F0Y2hlcyB0aGUgU3lzdGVtRXhpdCBhbmQgY29udGludWVzIGV4ZWN1dGluZwotICAgIGluIHBhcmFsbGVsIHdpdGggdGhlIG9yaWdpbmFsIHRlc3QsIHNvIHlvdSB3aW5kIHVwIHdpdGggYW4KLSAgICBleHBvbmVudGlhbCBudW1iZXIgb2YgdGVzdHMgcnVubmluZyBjb25jdXJyZW50bHkuCi0gICAgIiIiCi0gICAgb3MuX2V4aXQoMCkKLQotCi1kZWYgaWdub3JpbmdfZWludHIoX19mdW5jLCAqYXJncywgKiprd2FyZ3MpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9fZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHJldHVybiBOb25lCi0KLQogY2xhc3MgR2VuZXJpY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEB1bml0dGVzdC5za2lwSWYodGhyZWFkaW5nIGlzIE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQpAQCAtNjMsMTQ1ICs0MCw2IEBACiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKLWNsYXNzIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBNQVhfRFVSQVRJT04gPSAyMCAgICMgRW50aXJlIHRlc3Qgc2hvdWxkIGxhc3QgYXQgbW9zdCAyMCBzZWMuCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYudXNpbmdfZ2MgPSBnYy5pc2VuYWJsZWQoKQotICAgICAgICBnYy5kaXNhYmxlKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaWYgc2VsZi51c2luZ19nYzoKLSAgICAgICAgICAgIGdjLmVuYWJsZSgpCi0KLSAgICBkZWYgZm9ybWF0X2ZyYW1lKHNlbGYsIGZyYW1lLCBsaW1pdD1Ob25lKToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9zdGFjayhmcmFtZSwgbGltaXQ9bGltaXQpKQotCi0gICAgZGVmIGhhbmRsZXJBKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzZWxmLmFfY2FsbGVkID0gVHJ1ZQotCi0gICAgZGVmIGhhbmRsZXJCKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzZWxmLmJfY2FsbGVkID0gVHJ1ZQotICAgICAgICByYWlzZSBIYW5kbGVyQkNhbGxlZChzaWdudW0sIHNlbGYuZm9ybWF0X2ZyYW1lKGZyYW1lKSkKLQotICAgIGRlZiB3YWl0KHNlbGYsIGNoaWxkKToKLSAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgdG8gZmluaXNoLCBpZ25vcmluZyBFSU5UUi4iIiIKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjaGlsZC53YWl0KCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiBydW5fdGVzdChzZWxmKToKLSAgICAgICAgIyBJbnN0YWxsIGhhbmRsZXJzLiBUaGlzIGZ1bmN0aW9uIHJ1bnMgaW4gYSBzdWItcHJvY2Vzcywgc28gd2UKLSAgICAgICAgIyBkb24ndCB3b3JyeSBhYm91dCByZS1zZXR0aW5nIHRoZSBkZWZhdWx0IGhhbmRsZXJzLgotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIHNlbGYuaGFuZGxlckEpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNlbGYuaGFuZGxlckIpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjIsIHNpZ25hbC5TSUdfSUdOKQotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBzaWduYWwuZGVmYXVsdF9pbnRfaGFuZGxlcikKLQotICAgICAgICAjIFZhcmlhYmxlcyB0aGUgc2lnbmFscyB3aWxsIG1vZGlmeToKLSAgICAgICAgc2VsZi5hX2NhbGxlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuYl9jYWxsZWQgPSBGYWxzZQotCi0gICAgICAgICMgTGV0IHRoZSBzdWItcHJvY2Vzc2VzIGtub3cgd2hvIHRvIHNlbmQgc2lnbmFscyB0by4KLSAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKLQotICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctSFVQJywgc3RyKHBpZCldKQotICAgICAgICBpZiBjaGlsZDoKLSAgICAgICAgICAgIHNlbGYud2FpdChjaGlsZCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmFfY2FsbGVkOgotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkgICMgR2l2ZSB0aGUgc2lnbmFsIHRpbWUgdG8gYmUgZGVsaXZlcmVkLgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5hX2NhbGxlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmJfY2FsbGVkKQotICAgICAgICBzZWxmLmFfY2FsbGVkID0gRmFsc2UKLQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2lnbmFsIGlzbid0IGRlbGl2ZXJlZCB3aGlsZSB0aGUgcHJldmlvdXMKLSAgICAgICAgIyBQb3BlbiBvYmplY3QgaXMgYmVpbmcgZGVzdHJveWVkLCBiZWNhdXNlIF9fZGVsX18gc3dhbGxvd3MKLSAgICAgICAgIyBleGNlcHRpb25zLgotICAgICAgICBkZWwgY2hpbGQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2hpbGQgPSBzdWJwcm9jZXNzLlBvcGVuKFsna2lsbCcsICctVVNSMScsIHN0cihwaWQpXSkKLSAgICAgICAgICAgICMgVGhpcyB3YWl0IHNob3VsZCBiZSBpbnRlcnJ1cHRlZCBieSB0aGUgc2lnbmFsJ3MgZXhjZXB0aW9uLgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKQotICAgICAgICAgICAgdGltZS5zbGVlcCgxKSAgIyBHaXZlIHRoZSBzaWduYWwgdGltZSB0byBiZSBkZWxpdmVyZWQuCi0gICAgICAgICAgICBzZWxmLmZhaWwoJ0hhbmRsZXJCQ2FsbGVkIGV4Y2VwdGlvbiBub3QgcmFpc2VkJykKLSAgICAgICAgZXhjZXB0IEhhbmRsZXJCQ2FsbGVkOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYl9jYWxsZWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYV9jYWxsZWQpCi0KLSAgICAgICAgY2hpbGQgPSBpZ25vcmluZ19laW50cihzdWJwcm9jZXNzLlBvcGVuLCBbJ2tpbGwnLCAnLVVTUjInLCBzdHIocGlkKV0pCi0gICAgICAgIGlmIGNoaWxkOgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKSAgIyBOb3RoaW5nIHNob3VsZCBoYXBwZW4uCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICAjIFRoZSByYWNlIGNvbmRpdGlvbiBpbiBwYXVzZSBkb2Vzbid0IG1hdHRlciBpbiB0aGlzIGNhc2UsCi0gICAgICAgICAgICAjIHNpbmNlIGFsYXJtIGlzIGdvaW5nIHRvIHJhaXNlIGEgS2V5Ym9hcmRFeGNlcHRpb24sIHdoaWNoCi0gICAgICAgICAgICAjIHdpbGwgc2tpcCB0aGUgY2FsbC4KLSAgICAgICAgICAgIHNpZ25hbC5wYXVzZSgpCi0gICAgICAgICAgICAjIEJ1dCBpZiBhbm90aGVyIHNpZ25hbCBhcnJpdmVzIGJlZm9yZSB0aGUgYWxhcm0sIHBhdXNlCi0gICAgICAgICAgICAjIG1heSByZXR1cm4gZWFybHkuCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsKCJTb21lIG90aGVyIGV4Y2VwdGlvbiB3b2tlIHVzIGZyb20gcGF1c2U6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgicGF1c2UgcmV0dXJuZWQgb2YgaXRzIG93biBhY2NvcmQsIGFuZCB0aGUgc2lnbmFsIgotICAgICAgICAgICAgICAgICAgICAgICIgZGlkbid0IGFycml2ZSBhZnRlciBhbm90aGVyIHNlY29uZC4iKQotCi0gICAgIyBJc3N1ZSAzODY0LCB1bmtub3duIGlmIHRoaXMgYWZmZWN0cyBlYXJsaWVyIHZlcnNpb25zIG9mIGZyZWVic2QgYWxzbwotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtPT0nZnJlZWJzZDYnLAotICAgICAgICAnaW50ZXIgcHJvY2VzcyBzaWduYWxzIG5vdCByZWxpYWJsZSAoZG8gbm90IG1peCB3ZWxsIHdpdGggdGhyZWFkaW5nKSAnCi0gICAgICAgICdvbiBmcmVlYnNkNicpCi0gICAgZGVmIHRlc3RfbWFpbihzZWxmKToKLSAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHNwYXducyBhIGNoaWxkIHByb2Nlc3MgdG8gaW5zdWxhdGUgdGhlIG1haW4KLSAgICAgICAgIyB0ZXN0LXJ1bm5pbmcgcHJvY2VzcyBmcm9tIGFsbCB0aGUgc2lnbmFscy4gSXQgdGhlbgotICAgICAgICAjIGNvbW11bmljYXRlcyB3aXRoIHRoYXQgY2hpbGQgcHJvY2VzcyBvdmVyIGEgcGlwZSBhbmQKLSAgICAgICAgIyByZS1yYWlzZXMgaW5mb3JtYXRpb24gYWJvdXQgYW55IGV4Y2VwdGlvbnMgdGhlIGNoaWxkCi0gICAgICAgICMgcmFpc2VzLiBUaGUgcmVhbCB3b3JrIGhhcHBlbnMgaW4gc2VsZi5ydW5fdGVzdCgpLgotICAgICAgICBvc19kb25lX3IsIG9zX2RvbmVfdyA9IG9zLnBpcGUoKQotICAgICAgICB3aXRoIGNsb3Npbmcob3MuZmRvcGVuKG9zX2RvbmVfciwgJ3JiJykpIGFzIGRvbmVfciwgXAotICAgICAgICAgICAgIGNsb3Npbmcob3MuZmRvcGVuKG9zX2RvbmVfdywgJ3diJykpIGFzIGRvbmVfdzoKLSAgICAgICAgICAgIGNoaWxkID0gb3MuZm9yaygpCi0gICAgICAgICAgICBpZiBjaGlsZCA9PSAwOgotICAgICAgICAgICAgICAgICMgSW4gdGhlIGNoaWxkIHByb2Nlc3M7IHJ1biB0aGUgdGVzdCBhbmQgcmVwb3J0IHJlc3VsdHMKLSAgICAgICAgICAgICAgICAjIHRocm91Z2ggdGhlIHBpcGUuCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBkb25lX3IuY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAjIEhhdmUgdG8gY2xvc2UgZG9uZV93IGFnYWluIGhlcmUgYmVjYXVzZQotICAgICAgICAgICAgICAgICAgICAjIGV4aXRfc3VicHJvY2VzcygpIHdpbGwgc2tpcCB0aGUgZW5jbG9zaW5nIHdpdGggYmxvY2suCi0gICAgICAgICAgICAgICAgICAgIHdpdGggY2xvc2luZyhkb25lX3cpOgotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3QoKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wKHRyYWNlYmFjay5mb3JtYXRfZXhjKCksIGRvbmVfdykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAoTm9uZSwgZG9uZV93KQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1VoIG9oLCByYWlzZWQgZnJvbSBwaWNrbGUuJykKLSAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZXhpdF9zdWJwcm9jZXNzKCkKLQotICAgICAgICAgICAgZG9uZV93LmNsb3NlKCkKLSAgICAgICAgICAgICMgQmxvY2sgZm9yIHVwIHRvIE1BWF9EVVJBVElPTiBzZWNvbmRzIGZvciB0aGUgdGVzdCB0byBmaW5pc2guCi0gICAgICAgICAgICByLCB3LCB4ID0gc2VsZWN0LnNlbGVjdChbZG9uZV9yXSwgW10sIFtdLCBzZWxmLk1BWF9EVVJBVElPTikKLSAgICAgICAgICAgIGlmIGRvbmVfciBpbiByOgotICAgICAgICAgICAgICAgIHRiID0gcGlja2xlLmxvYWQoZG9uZV9yKQotICAgICAgICAgICAgICAgIGlmIHRiOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwodGIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9zLmtpbGwoY2hpbGQsIHNpZ25hbC5TSUdLSUxMKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVGVzdCBkZWFkbG9ja2VkIGFmdGVyICVkIHNlY29uZHMuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTUFYX0RVUkFUSU9OKQotCi0KLUB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBQb3NpeFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdHJpdmlhbF9zaWduYWxfaGFuZGxlcihzZWxmLCAqYXJncyk6CiAgICAgICAgIHBhc3MKQEAgLTIyNCw2ICs2MiwxNSBAQAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIGh1cCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdIVVApLCBodXApCiAKKyAgICAjIElzc3VlIDM4NjQsIHVua25vd24gaWYgdGhpcyBhZmZlY3RzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZnJlZWJzZCBhbHNvCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm09PSdmcmVlYnNkNicsCisgICAgICAgICdpbnRlciBwcm9jZXNzIHNpZ25hbHMgbm90IHJlbGlhYmxlIChkbyBub3QgbWl4IHdlbGwgd2l0aCB0aHJlYWRpbmcpICcKKyAgICAgICAgJ29uIGZyZWVic2Q2JykKKyAgICBkZWYgdGVzdF9pbnRlcnByb2Nlc3Nfc2lnbmFsKHNlbGYpOgorICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ3NpZ25hbGludGVycHJvY3Rlc3Rlci5weScpCisgICAgICAgIGFzc2VydF9weXRob25fb2soc2NyaXB0KQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luZG93cyBzcGVjaWZpYyIpCiBjbGFzcyBXaW5kb3dzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CmluZGV4IGRhMjBhM2QuLmQyZmJiN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKQEAgLTc1LDcgKzc1LDcgQEAKICAgICBkZWYgdGVzdF9pbml0X3BhdGhpbmZvKHNlbGYpOgogICAgICAgICBkaXJfc2V0ID0gc2l0ZS5faW5pdF9wYXRoaW5mbygpCiAgICAgICAgIGZvciBlbnRyeSBpbiBbc2l0ZS5tYWtlcGF0aChwYXRoKVsxXSBmb3IgcGF0aCBpbiBzeXMucGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGF0aCBhbmQgb3MucGF0aC5pc2RpcihwYXRoKV06CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGFuZCBvcy5wYXRoLmV4aXN0cyhwYXRoKV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVudHJ5LCBkaXJfc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgZnJvbSBzeXMucGF0aCBub3QgZm91bmQgaW4gc2V0IHJldHVybmVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5IF9pbml0X3BhdGhpbmZvKCk6ICVzIiAlIChlbnRyeSwgZGlyX3NldCkpCkBAIC0xMzgsMTAgKzEzOCw4IEBACiAgICAgICAgICAgICByZS5lc2NhcGUob3MucGF0aC5qb2luKHB0aF9kaXIsIHB0aF9mbikpKQogICAgICAgICAjIFhYWDogZGl0dG8gcHJldmlvdXMgWFhYIGNvbW1lbnQuCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyX291dC5nZXR2YWx1ZSgpLCAnVHJhY2ViYWNrJykKLSAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdJbXBvcnRFcnJvcicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyX291dC5nZXR2YWx1ZSgpLCAnTW9kdWxlTm90Rm91bmRFcnJvcicpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luZG93cyBkb2VzIG5vdCByYWlzZSBhbiAiCi0gICAgICAgICAgICAgICAgICAgICAgImVycm9yIGZvciBmaWxlIHBhdGhzIGNvbnRhaW5pbmcgbnVsbCBjaGFyYWN0ZXJzIikKICAgICBkZWYgdGVzdF9hZGRwYWNrYWdlX2ltcG9ydF9iYWRfcHRoX2ZpbGUoc2VsZik6CiAgICAgICAgICMgSXNzdWUgNTI1OAogICAgICAgICBwdGhfZGlyLCBwdGhfZm4gPSBzZWxmLm1ha2VfcHRoKCJhYmNceDAwZGVmXG4iKQpAQCAtMjQzLDEzICsyNDEsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAyKQogICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCcvTGlicmFyeScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJQWVRIT05GUkFNRVdPUksiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMudmVyc2lvbls6M10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1sxXSwgd2FudGVkKQogICAgICAgICBlbGlmIG9zLnNlcCA9PSAnLyc6CiAgICAgICAgICAgICAjIE9TIFggbm9uLWZyYW13ZXdvcmsgYnVpbGRzLCBMaW51eCwgRnJlZUJTRCwgZXRjCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMSkKLSAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsICdsaWInLCAncHl0aG9uJyArIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsICdsaWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweXRob24lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0ZS1wYWNrYWdlcycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMF0sIHdhbnRlZCkKICAgICAgICAgZWxzZToKQEAgLTQ0NiwxMCArNDQ1LDkgQEAKICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1JJywgJy12JywgJy1jJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5czsgcHJpbnQoc2V0KHN5cy5tb2R1bGVzKSknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoKQotICAgICAgICBzdGRvdXQgPSBzdGRvdXQuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIHN0ZGVyciA9IHN0ZGVyci5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgbW9kdWxlcyA9IGV2YWwoc3Rkb3V0KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NpdGUnLCBtb2R1bGVzKQpAQCAtNDY5LDcgKzQ2NywyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYXBxJywgJ2l0ZXJ0b29scycsICdrZXl3b3JkJywgJ29wZXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBybGliJywgJ3R5cGVzJywgJ3dlYWtyZWYnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0uZGlmZmVyZW5jZShzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlcy5pbnRlcnNlY3Rpb24oY29sbGVjdGlvbl9tb2RzKSwgc3RkZXJyKQorICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyODA5NQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vZHVsZXMuaW50ZXJzZWN0aW9uKGNvbGxlY3Rpb25fbW9kcyksIHN0ZGVycikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rKHNlbGYpOgorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQoaGFzYXR0cihzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIikpJ10pLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUociwgIidfX2ludGVyYWN0aXZlaG9va19fJyBub3QgYWRkZWQgYnkgc2l0ZSIpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwX2ludGVyYWN0aXZlaG9va19pc29sYXRlZChzZWxmKToKKyAgICAgICAgIyBpc3N1ZTI4MTkyIHJlYWRsaW5lIGlzIG5vdCBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaW4gaXNvbGF0ZWQgbW9kZQorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQoaGFzYXR0cihzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIikpJ10pLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHIsICInX19pbnRlcmFjdGl2ZWhvb2tfXycgYWRkZWQgaW4gaXNvbGF0ZWQgbW9kZSIpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwX2ludGVyYWN0aXZlaG9va19pc29sYXRlZF9leHBsaWNpdChzZWxmKToKKyAgICAgICAgIyBpc3N1ZTI4MTkyIHJlYWRsaW5lIGNhbiBiZSBleHBsaWNpdGx5IGVuYWJsZWQgaW4gaXNvbGF0ZWQgbW9kZQorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHNpdGUsIHN5czsgc2l0ZS5lbmFibGVybGNvbXBsZXRlcigpOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLCAiJ19faW50ZXJhY3RpdmVob29rX18nIG5vdCBhZGRlZCBieSBlbmFibGVybGNvbXBsZXRlcigpIikKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKaW5kZXggODhkYmZkZi4uM2VlYmU5NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CkBAIC01MywxMCArNTMsNiBAQAogICAgICAgICB3cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHdyaXRlX2xpbmUsIGInc3BhbVxyXG4uXHJcbicpCiAKLSAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9kZWZhdWx0X3dhcm5zKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQotCiAgICAgZGVmIHRlc3RfZGVjb2RlX2RhdGFfYW5kX2VuYWJsZV9TTVRQVVRGOF9yYWlzZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAogICAgICAgICAgICAgVmFsdWVFcnJvciwKQEAgLTEwOCwxMCArMTA0LDkgQEAKICAgICAgICAgICAgICAiIiIpKQogCiAgICAgZGVmIHRlc3RfcHJvY2Vzc19tZXNzYWdlX3dpdGhfZGVjb2RlX2RhdGFfZmFsc2Uoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKICAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQotICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkcikKICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CiAgICAgICAgICAgICBzZWxmLnNlbmRfZGF0YShjaGFubmVsLCBiJ0Zyb206IHRlc3RcblxuaFx4YzNceGE5bGxvXHhmZlxuJykKICAgICAgICAgc3Rkb3V0ID0gcy5nZXR2YWx1ZSgpCkBAIC0xNzUsMTMgKzE3MCwxMSBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICJJUHY2IG5vdCBlbmFibGVkIikKICAgICBkZWYgdGVzdF9zb2NrZXRfdXNlc19JUHY2KHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1R2NiwgMCksIChzdXBwb3J0LkhPU1QsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1R2NiwgMCksIChzdXBwb3J0LkhPU1QsIDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zb2NrZXQuZmFtaWx5LCBzb2NrZXQuQUZfSU5FVDYpCiAKICAgICBkZWYgdGVzdF9zb2NrZXRfdXNlc19JUHY0KHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoc3VwcG9ydC5IT1NUdjYsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoc3VwcG9ydC5IT1NUdjYsIDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zb2NrZXQuZmFtaWx5LCBzb2NrZXQuQUZfSU5FVCkKIAogCkBAIC0yMDQsMTggKzE5NywxOCBAQAogICAgICAgICBjaGFubmVsLmhhbmRsZV9yZWFkKCkKIAogICAgIGRlZiB0ZXN0X3BhcmFtc19yZWplY3RlZChzZWxmKToKLSAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidSQ1BUIHRvOiA8Zm9vQGV4YW1wbGUuY29tPiBmb289YmFyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBzZWxmLmVycm9yX3Jlc3BvbnNlKQogCiAgICAgZGVmIHRlc3Rfbm90aGluZ19hY2NlcHRlZChzZWxmKToKLSAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidSQ1BUIHRvOiA8Zm9vQGV4YW1wbGUuY29tPicpCkBAIC0yNTcsOSArMjUwLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogCiAgICAgZGVmIHRlc3Rfd2l0aF9kZWNvZGVfZGF0YV9mYWxzZShzZWxmKToKLSAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQogICAgICAgICBmb3IgbGluZSBpbiBbCiAgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBTTVRQVVRGOCcsCkBAIC03NjUsMTMgKzc1OCw2IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fYWRkciA9ICdzcGFtJwogCi0gICAgZGVmIHRlc3RfZGVjb2RlX2RhdGFfZGVmYXVsdF93YXJuaW5nKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKLSAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQotCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgIklQdjYgbm90IGVuYWJsZWQiKQogY2xhc3MgU01UUERDaGFubmVsSVB2NlRlc3QoU01UUERDaGFubmVsVGVzdCk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtODQ1LDEyICs4MzEsOSBAQAogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCiAgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgIyBTZXQgZGVjb2RlX2RhdGEgdG8gRmFsc2UKLSAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIsCi0gICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQpAQCAtMTAxNSw1ICs5OTgsMTYgQEAKICAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3Rlc3RcclxuLicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCiAKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsKKyAgICAgICAgICAgICJwcm9ncmFtIiwgIkRldm51bGwiLCAiREVCVUdTVFJFQU0iLCAiTkVXTElORSIsICJDT01NQVNQQUNFIiwKKyAgICAgICAgICAgICJEQVRBX1NJWkVfREVGQVVMVCIsICJ1c2FnZSIsICJPcHRpb25zIiwgInBhcnNlYXJncyIsCisKKyAgICAgICAgfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBzbXRwZCwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQppbmRleCBjY2U3ZDUyLi5jOWFkZDZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQpAQCAtMTMsNyArMTMsNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgYXJyYXkKLWltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IGNvbnRleHRsaWIKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKIGltcG9ydCBzaWduYWwKQEAgLTY2LDEwICs2NSwyMiBAQAogICAgICAgICBzLmNsb3NlKCkKICAgICByZXR1cm4gVHJ1ZQogCitkZWYgX2hhdmVfc29ja2V0X2FsZygpOgorICAgICIiIkNoZWNrIHdoZXRoZXIgQUZfQUxHIHNvY2tldHMgYXJlIHN1cHBvcnRlZCBvbiB0aGlzIGhvc3QuIiIiCisgICAgdHJ5OgorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQUxHLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGVsc2U6CisgICAgICAgIHMuY2xvc2UoKQorICAgIHJldHVybiBUcnVlCisKIEhBVkVfU09DS0VUX0NBTiA9IF9oYXZlX3NvY2tldF9jYW4oKQogCiBIQVZFX1NPQ0tFVF9SRFMgPSBfaGF2ZV9zb2NrZXRfcmRzKCkKIAorSEFWRV9TT0NLRVRfQUxHID0gX2hhdmVfc29ja2V0X2FsZygpCisKICMgU2l6ZSBpbiBieXRlcyBvZiB0aGUgaW50IHR5cGUKIFNJWkVPRl9JTlQgPSBhcnJheS5hcnJheSgiaSIpLml0ZW1zaXplCiAKQEAgLTExNjEsNiArMTE3MiwxNyBAQAogICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc29jay5zZW5kLCBiInNwYW0iKQogCisgICAgZGVmIHRlc3RDbG9zZUV4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzb2NrZXQuc29ja2V0KGZpbGVubz1zb2NrLmZpbGVubygpKS5jbG9zZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2suY2xvc2UoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAjIFdpbnNvY2sgYXBwYXJlbnRseSByYWlzZXMgRU5PVFNPQ0sKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyLmVycm5vLCAoZXJybm8uRUJBREYsIGVycm5vLkVOT1RTT0NLKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiY2xvc2UoKSBzaG91bGQgcmFpc2UgRUJBREYvRU5PVFNPQ0siKQorCiAgICAgZGVmIHRlc3ROZXdBdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICAjIHRlc3RpbmcgLmZhbWlseSwgLnR5cGUgYW5kIC5wcm90b2NvbAogCkBAIC0xMjA3LDYgKzEyMjksMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcy5pb2N0bCwgLTEsIE5vbmUpCiAgICAgICAgIHMuaW9jdGwoc29ja2V0LlNJT19LRUVQQUxJVkVfVkFMUywgKDEsIDEwMCwgMTAwKSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gIm50IiwgIldpbmRvd3Mgc3BlY2lmaWMiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdMb29wYmFjayBmYXN0IHBhdGggc3VwcG9ydCByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKKyAgICBkZWYgdGVzdF9zaW9fbG9vcGJhY2tfZmFzdF9wYXRoKHNlbGYpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzLmlvY3RsKHNvY2tldC5TSU9fTE9PUEJBQ0tfRkFTVF9QQVRILCBUcnVlKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBXU0FFT1BOT1RTVVBQID0gMTAwNDUKKyAgICAgICAgICAgIGlmIGV4Yy53aW5lcnJvciA9PSBXU0FFT1BOT1RTVVBQOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNJT19MT09QQkFDS19GQVNUX1BBVEggaXMgZGVmaW5lZCBidXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXNuJ3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBXaW5kb3dzIHZlcnNpb24iKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzLmlvY3RsLCBzb2NrZXQuU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCwgTm9uZSkKKwogICAgIGRlZiB0ZXN0R2V0YWRkcmluZm8oc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2tldC5nZXRhZGRyaW5mbygnbG9jYWxob3N0JywgODApCkBAIC0yODQyLDYgKzI4ODAsNyBAQAogICAgICAgICAgICAgbmJ5dGVzID0gc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW21zZ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4obXNnKSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iLCAic2VlIGlzc3VlICMyNDcyNSIpCiAgICAgZGVmIHRlc3RGRFBhc3NFbXB0eShzZWxmKToKICAgICAgICAgIyBUcnkgdG8gcGFzcyBhbiBlbXB0eSBGRCBhcnJheS4gIENhbiByZWNlaXZlIGVpdGhlciBubyBhcnJheQogICAgICAgICAjIG9yIGFuIGVtcHR5IGFycmF5LgpAQCAtNTMyMCw2ICs1MzU5LDE4MyBAQAogICAgICAgICByZXR1cm4gZ2V0YXR0cihzb2NrLCAiX3NlbmRmaWxlX3VzZV9zZW5kZmlsZSIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQUxHLCAnQUZfQUxHIHJlcXVpcmVkJykKK2NsYXNzIExpbnV4S2VybmVsQ3J5cHRvQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHRlc3RzIGZvciBBRl9BTEcKKyAgICBkZWYgY3JlYXRlX2FsZyhzZWxmLCB0eXAsIG5hbWUpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQUxHLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2suYmluZCgodHlwLCBuYW1lKSkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yIGFzIGU6CisgICAgICAgICAgICAjIHR5cGUgLyBhbGdvcml0aG0gaXMgbm90IGF2YWlsYWJsZQorICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdChzdHIoZSksIHR5cCwgbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzb2NrCisKKyAgICBkZWYgdGVzdF9zaGEyNTYoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gYnl0ZXMuZnJvbWhleCgiYmE3ODE2YmY4ZjAxY2ZlYTQxNDE0MGRlNWRhZTIyMjNiMDAzNjFhMzk2IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE3N2E5Y2I0MTBmZjYxZjIwMDE1YWQiKQorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygnaGFzaCcsICdzaGEyNTYnKSBhcyBhbGdvOgorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYiJhYmMiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidhJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidiJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidjJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYicnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2htYWNfc2hhMShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBieXRlcy5mcm9taGV4KCJlZmZjZGY2YWU1ZWIyZmEyZDI3NDE2ZDVmMTg0ZGY5YzI1OWE3Yzc5IikKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ2hhc2gnLCAnaG1hYyhzaGExKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwgYiJKZWZlIikKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGIid2hhdCBkbyB5YSB3YW50IGZvciBub3RoaW5nPyIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KDUxMiksIGV4cGVjdGVkKQorCisgICAgIyBBbHRob3VnaCBpdCBzaG91bGQgd29yayB3aXRoIDMuMTkgYW5kIG5ld2VyIHRoZSB0ZXN0IGJsb2NrcyBvbgorICAgICMgVWJ1bnR1IDE1LjEwIHdpdGggS2VybmVsIDQuMi4wLTE5LgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oNCwgMykKKyAgICBkZWYgdGVzdF9hZXNfY2JjKHNlbGYpOgorICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KCcwNmE5MjE0MDM2YjhhMTViNTEyZTAzZDUzNDEyMDAwNicpCisgICAgICAgIGl2ID0gYnl0ZXMuZnJvbWhleCgnM2RhZmJhNDI5ZDllYjQzMGI0MjJkYTgwMmM5ZmFjNDEnKQorICAgICAgICBtc2cgPSBiIlNpbmdsZSBibG9jayBtc2ciCisgICAgICAgIGNpcGhlcnRleHQgPSBieXRlcy5mcm9taGV4KCdlMzUzNzc5YzEwNzlhZWI4MjcwODk0MmRiZTc3MTgxYScpCisgICAgICAgIG1zZ2xlbiA9IGxlbihtc2cpCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdza2NpcGhlcicsICdjYmMoYWVzKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwga2V5KQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcob3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPXNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YobXNnbGVuKSwgY2lwaGVydGV4dCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcoW2NpcGhlcnRleHRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A9c29ja2V0LkFMR19PUF9ERUNSWVBULCBpdj1pdikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YobXNnbGVuKSwgbXNnKQorCisgICAgICAgICAgICAjIGxvbmcgbWVzc2FnZQorICAgICAgICAgICAgbXVsdGlwbGllciA9IDEwMjQKKyAgICAgICAgICAgIGxvbmdtc2cgPSBbbXNnXSAqIG11bHRpcGxpZXIKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKGxvbmdtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2KQorICAgICAgICAgICAgICAgIGVuYyA9IG9wLnJlY3YobXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVuYyksIG1zZ2xlbiAqIG11bHRpcGxpZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZW5jWzptc2dsZW5dLCBjaXBoZXJ0ZXh0KQorCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhbZW5jXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wPXNvY2tldC5BTEdfT1BfREVDUllQVCwgaXY9aXYpCisgICAgICAgICAgICAgICAgZGVjID0gb3AucmVjdihtc2dsZW4gKiBtdWx0aXBsaWVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGVjKSwgbXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjLCBtc2cgKiBtdWx0aXBsaWVyKQorCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbig0LCAzKSAgIyBzZWUgdGVzdF9hZXNfY2JjCisgICAgZGVmIHRlc3RfYWVhZF9hZXNfZ2NtKHNlbGYpOgorICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KCdjOTM5Y2MxMzM5N2MxZDM3ZGU2YWUwZTFjYjdjNDIzYycpCisgICAgICAgIGl2ID0gYnl0ZXMuZnJvbWhleCgnYjNkOGNjMDE3Y2JiODliMzllMGY2N2UyJykKKyAgICAgICAgcGxhaW4gPSBieXRlcy5mcm9taGV4KCdjM2IzYzQxZjExM2EzMWI3M2Q5YTVjZDQzMjEwMzA2OScpCisgICAgICAgIGFzc29jID0gYnl0ZXMuZnJvbWhleCgnMjQ4MjU2MDJiZDEyYTk4NGUwMDkyZDNlNDQ4ZWRhNWYnKQorICAgICAgICBleHBlY3RlZF9jdCA9IGJ5dGVzLmZyb21oZXgoJzkzZmU3ZDllOWJmZDEwMzQ4YTU2MDZlNWNhZmE3MzU0JykKKyAgICAgICAgZXhwZWN0ZWRfdGFnID0gYnl0ZXMuZnJvbWhleCgnMDAzMmExZGM4NWYxYzk3ODY5MjVhMmU3MWQ4MjcyZGQnKQorCisgICAgICAgIHRhZ2xlbiA9IGxlbihleHBlY3RlZF90YWcpCisgICAgICAgIGFzc29jbGVuID0gbGVuKGFzc29jKQorCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdhZWFkJywgJ2djbShhZXMpJykgYXMgYWxnbzoKKyAgICAgICAgICAgIGFsZ28uc2V0c29ja29wdChzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfS0VZLCBrZXkpCisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0FFQURfQVVUSFNJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgdGFnbGVuKQorCisgICAgICAgICAgICAjIHNlbmQgYXNzb2MsIHBsYWluIGFuZCB0YWcgYnVmZmVyIGluIHNlcGFyYXRlIHN0ZXBzCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4sIGZsYWdzPXNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGFzc29jLCBzb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChwbGFpbiwgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYidceDAwJyAqIHRhZ2xlbikKKyAgICAgICAgICAgICAgICByZXMgPSBvcC5yZWN2KGFzc29jbGVuICsgbGVuKHBsYWluKSArIHRhZ2xlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2N0LCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90YWcsIHJlc1stdGFnbGVuOl0pCisKKyAgICAgICAgICAgICMgbm93IHdpdGggbXNnCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgbXNnID0gYXNzb2MgKyBwbGFpbiArIGInXHgwMCcgKiB0YWdsZW4KKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFttc2ddLCBvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihhc3NvY2xlbiArIGxlbihwbGFpbikgKyB0YWdsZW4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBhbmMgZGF0YSBtYW51YWxseQorICAgICAgICAgICAgcGFja191aW50MzIgPSBzdHJ1Y3QuU3RydWN0KCdJJykucGFjaworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgcGxhaW4gKyBiJ1x4MDAnICogdGFnbGVuCisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZygKKyAgICAgICAgICAgICAgICAgICAgW21zZ10sCisgICAgICAgICAgICAgICAgICAgIChbc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX09QLCBwYWNrX3VpbnQzMihzb2NrZXQuQUxHX09QX0VOQ1JZUFQpXSwKKyAgICAgICAgICAgICAgICAgICAgIFtzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfSVYsIHBhY2tfdWludDMyKGxlbihpdikpICsgaXZdLAorICAgICAgICAgICAgICAgICAgICAgW3NvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9BRUFEX0FTU09DTEVOLCBwYWNrX3VpbnQzMihhc3NvY2xlbildLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJlcyA9IG9wLnJlY3YobGVuKG1zZykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIGRlY3J5cHQgYW5kIHZlcmlmeQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgZXhwZWN0ZWRfY3QgKyBleHBlY3RlZF90YWcKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFttc2ddLCBvcD1zb2NrZXQuQUxHX09QX0RFQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihsZW4obXNnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluLCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDQsIDMpICAjIHNlZSB0ZXN0X2Flc19jYmMKKyAgICBkZWYgdGVzdF9kcmJnX3ByX3NoYTI1NihzZWxmKToKKyAgICAgICAgIyBkZXRlcm1pbmlzdGljIHJhbmRvbSBiaXQgZ2VuZXJhdG9yLCBwcmVkaWN0aW9uIHJlc2lzdGFuY2UsIHNoYTI1NgorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygncm5nJywgJ2RyYmdfcHJfc2hhMjU2JykgYXMgYWxnbzoKKyAgICAgICAgICAgIGV4dHJhX3NlZWQgPSBvcy51cmFuZG9tKDMyKQorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9LRVksIGV4dHJhX3NlZWQpCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgcm4gPSBvcC5yZWN2KDMyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJuKSwgMzIpCisKKyAgICBkZWYgdGVzdF9zZW5kbXNnX2FmYWxnX2FyZ3Moc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgd2l0aCBzb2NrOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZygpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcob3A9Tm9uZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZygxKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgc29jay5zZW5kbXNnX2FmYWxnKG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgYXNzb2NsZW49Tm9uZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGFzc29jbGVuPS0xKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtHZW5lcmFsTW9kdWxlVGVzdHMsIEJhc2ljVENQVGVzdCwgVENQQ2xvc2VyVGVzdCwgVENQVGltZW91dFRlc3QsCiAgICAgICAgICAgICAgVGVzdEV4Y2VwdGlvbnMsIEJ1ZmZlcklPVGVzdCwgQmFzaWNUQ1BUZXN0MiwgQmFzaWNVRFBUZXN0LCBVRFBUaW1lb3V0VGVzdCBdCkBAIC01MzQ2LDYgKzU1NjIsNyBAQAogICAgIHRlc3RzLmV4dGVuZChbVElQQ1Rlc3QsIFRJUENUaHJlYWRhYmxlVGVzdF0pCiAgICAgdGVzdHMuZXh0ZW5kKFtCYXNpY0NBTlRlc3QsIENBTlRlc3RdKQogICAgIHRlc3RzLmV4dGVuZChbQmFzaWNSRFNUZXN0LCBSRFNUZXN0XSkKKyAgICB0ZXN0cy5hcHBlbmQoTGludXhLZXJuZWxDcnlwdG9BUEkpCiAgICAgdGVzdHMuZXh0ZW5kKFsKICAgICAgICAgQ21zZ01hY3JvVGVzdHMsCiAgICAgICAgIFNlbmRtc2dVRFBUZXN0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQppbmRleCAwZDBmODZmLi4xNDBhNmFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQpAQCAtMywxMiArMywxMSBAQAogIiIiCiAKIGltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHNlbGVjdAotaW1wb3J0IGVycm5vCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHNvY2tldHNlcnZlcgpAQCAtNDYsNyArNDUsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGltZWQgb3V0IG9uICVyIiAlIChzb2NrLCkpCiAKLWlmIEhBVkVfVU5JWF9TT0NLRVRTOgoraWYgSEFWRV9VTklYX1NPQ0tFVFMgYW5kIEhBVkVfRk9SS0lORzoKICAgICBjbGFzcyBGb3JraW5nVW5peFN0cmVhbVNlcnZlcihzb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5Vbml4U3RyZWFtU2VydmVyKToKICAgICAgICAgcGFzcwpAQCAtNTgsNiArNTcsNyBAQAogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHNpbXBsZV9zdWJwcm9jZXNzKHRlc3RjYXNlKToKKyAgICAiIiJUZXN0cyB0aGF0IGEgY3VzdG9tIGNoaWxkIHByb2Nlc3MgaXMgbm90IHdhaXRlZCBvbiAoSXNzdWUgMTU0MDM4NikiIiIKICAgICBwaWQgPSBvcy5mb3JrKCkKICAgICBpZiBwaWQgPT0gMDoKICAgICAgICAgIyBEb24ndCByYWlzZSBhbiBleGNlcHRpb247IGl0IHdvdWxkIGJlIGNhdWdodCBieSB0aGUgdGVzdCBoYXJuZXNzLgpAQCAtMTAzLDcgKzEwMyw2IEBACiAgICAgICAgIGNsYXNzIE15U2VydmVyKHN2cmNscyk6CiAgICAgICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBjbGFzcyBNeUhhbmRsZXIoaGRscmJhc2UpOgpAQCAtMjc5LDYgKzI3OCwxODIgQEAKICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCAtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgc2VydmVyLnNvY2tldC5maWxlbm8oKSkKKworCitjbGFzcyBFcnJvckhhbmRsZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoYXQgdGhlIHNlcnZlcnMgcGFzcyBub3JtYWwgZXhjZXB0aW9ucyBmcm9tIHRoZSBoYW5kbGVyIHRvCisgICAgaGFuZGxlX2Vycm9yKCksIGFuZCB0aGF0IGV4aXRpbmcgZXhjZXB0aW9ucyBsaWtlIFN5c3RlbUV4aXQgYW5kCisgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgYXJlIG5vdCBwYXNzZWQuIiIiCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsodGVzdC5zdXBwb3J0LlRFU1RGTikKKworICAgIGRlZiB0ZXN0X3N5bmNfaGFuZGxlZChzZWxmKToKKyAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcihWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPVRydWUpCisKKyAgICBkZWYgdGVzdF9zeW5jX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF90aHJlYWRpbmdfaGFuZGxlZChzZWxmKToKKyAgICAgICAgVGhyZWFkaW5nRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfdGhyZWFkaW5nX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICBUaHJlYWRpbmdFcnJvclRlc3RTZXJ2ZXIoU3lzdGVtRXhpdCkKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1GYWxzZSkKKworICAgIEByZXF1aXJlc19mb3JraW5nCisgICAgZGVmIHRlc3RfZm9ya2luZ19oYW5kbGVkKHNlbGYpOgorICAgICAgICBGb3JraW5nRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIEByZXF1aXJlc19mb3JraW5nCisgICAgZGVmIHRlc3RfZm9ya2luZ19ub3RfaGFuZGxlZChzZWxmKToKKyAgICAgICAgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgZGVmIGNoZWNrX3Jlc3VsdChzZWxmLCBoYW5kbGVkKToKKyAgICAgICAgd2l0aCBvcGVuKHRlc3Quc3VwcG9ydC5URVNURk4pIGFzIGxvZzoKKyAgICAgICAgICAgIGV4cGVjdGVkID0gJ0hhbmRsZXIgY2FsbGVkXG4nICsgJ0Vycm9yIGhhbmRsZWRcbicgKiBoYW5kbGVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5yZWFkKCksIGV4cGVjdGVkKQorCisKK2NsYXNzIEJhc2VFcnJvclRlc3RTZXJ2ZXIoc29ja2V0c2VydmVyLlRDUFNlcnZlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Y2VwdGlvbik6CisgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gZXhjZXB0aW9uCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKEhPU1QsIDApLCBCYWRIYW5kbGVyKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihzZWxmLnNlcnZlcl9hZGRyZXNzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHNlbGYud2FpdF9kb25lKCkKKworICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ2EnKSBhcyBsb2c6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0Vycm9yIGhhbmRsZWRcbicpCisKKyAgICBkZWYgd2FpdF9kb25lKHNlbGYpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgQmFkSGFuZGxlcihzb2NrZXRzZXJ2ZXIuQmFzZVJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ2EnKSBhcyBsb2c6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0hhbmRsZXIgY2FsbGVkXG4nKQorICAgICAgICByYWlzZSBzZWxmLnNlcnZlci5leGNlcHRpb24oJ1Rlc3QgZXJyb3InKQorCisKK2NsYXNzIFRocmVhZGluZ0Vycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sCisgICAgICAgIEJhc2VFcnJvclRlc3RTZXJ2ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqcG9zLCAqKmt3KToKKyAgICAgICAgc2VsZi5kb25lID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqcG9zLCAqKmt3KQorCisgICAgZGVmIHNodXRkb3duX3JlcXVlc3Qoc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuc2h1dGRvd25fcmVxdWVzdCgqcG9zLCAqKmt3KQorICAgICAgICBzZWxmLmRvbmUuc2V0KCkKKworICAgIGRlZiB3YWl0X2RvbmUoc2VsZik6CisgICAgICAgIHNlbGYuZG9uZS53YWl0KCkKKworCitpZiBIQVZFX0ZPUktJTkc6CisgICAgY2xhc3MgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluLCBCYXNlRXJyb3JUZXN0U2VydmVyKToKKyAgICAgICAgZGVmIHdhaXRfZG9uZShzZWxmKToKKyAgICAgICAgICAgIFtjaGlsZF0gPSBzZWxmLmFjdGl2ZV9jaGlsZHJlbgorICAgICAgICAgICAgb3Mud2FpdHBpZChjaGlsZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKKworCitjbGFzcyBTb2NrZXRXcml0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIGNsYXNzIEhhbmRsZXIoc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKToKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2ZpbGUgPSBzZWxmLndmaWxlCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2ZpbGVfZmlsZW5vID0gc2VsZi53ZmlsZS5maWxlbm8oKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlcXVlc3RfZmlsZW5vID0gc2VsZi5yZXF1ZXN0LmZpbGVubygpCisKKyAgICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksIEhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuc2VydmVyX2Nsb3NlKQorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgKKyAgICAgICAgICAgIHNlcnZlci5hZGRyZXNzX2ZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNLCBzb2NrZXQuSVBQUk9UT19UQ1ApCisgICAgICAgIHdpdGggczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpCisgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZXJ2ZXIud2ZpbGUsIGlvLkJ1ZmZlcmVkSU9CYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci53ZmlsZV9maWxlbm8sIHNlcnZlci5yZXF1ZXN0X2ZpbGVubykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdmaWxlLndyaXRlKCkgc2VuZHMgZGF0YSBpbW1lZGlhdGVseSwgYW5kIHRoYXQgaXQgZG9lcworICAgICAgICAjIG5vdCB0cnVuY2F0ZSBzZW5kcyB3aGVuIGludGVycnVwdGVkIGJ5IGEgVW5peCBzaWduYWwKKyAgICAgICAgcHRocmVhZF9raWxsID0gdGVzdC5zdXBwb3J0LmdldF9hdHRyaWJ1dGUoc2lnbmFsLCAncHRocmVhZF9raWxsJykKKworICAgICAgICBjbGFzcyBIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbnQxID0gc2VsZi53ZmlsZS53cml0ZShiJ3dyaXRlIGRhdGFcbicpCisgICAgICAgICAgICAgICAgIyBTaG91bGQgYmUgc2VudCBpbW1lZGlhdGVseSwgd2l0aG91dCByZXF1aXJpbmcgZmx1c2goKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlY2VpdmVkID0gc2VsZi5yZmlsZS5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgYmlnX2NodW5rID0gYidcMCcgKiB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbnQyID0gc2VsZi53ZmlsZS53cml0ZShiaWdfY2h1bmspCisKKyAgICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksIEhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuc2VydmVyX2Nsb3NlKQorICAgICAgICBpbnRlcnJ1cHRlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgZGVmIHNpZ25hbF9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgaW50ZXJydXB0ZWQuc2V0KCkKKworICAgICAgICBvcmlnaW5hbCA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNpZ25hbF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLnNpZ25hbCwgc2lnbmFsLlNJR1VTUjEsIG9yaWdpbmFsKQorICAgICAgICByZXNwb25zZTEgPSBOb25lCisgICAgICAgIHJlY2VpdmVkMiA9IE5vbmUKKyAgICAgICAgbWFpbl90aHJlYWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKworICAgICAgICBkZWYgcnVuX2NsaWVudCgpOgorICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc2VydmVyLmFkZHJlc3NfZmFtaWx5LCBzb2NrZXQuU09DS19TVFJFQU0sCisgICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fVENQKQorICAgICAgICAgICAgd2l0aCBzLCBzLm1ha2VmaWxlKCdyYicpIGFzIHJlYWRlcjoKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3Qoc2VydmVyLnNlcnZlcl9hZGRyZXNzKQorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJlc3BvbnNlMQorICAgICAgICAgICAgICAgIHJlc3BvbnNlMSA9IHJlYWRlci5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgcy5zZW5kYWxsKGInY2xpZW50IHJlc3BvbnNlXG4nKQorCisgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWQoMTAwKQorICAgICAgICAgICAgICAgICMgVGhlIG1haW4gdGhyZWFkIHNob3VsZCBub3cgYmUgYmxvY2tpbmcgaW4gYSBzZW5kKCkgc3lzY2FsbC4KKyAgICAgICAgICAgICAgICAjIEJ1dCBpbiB0aGVvcnksIGl0IGNvdWxkIGdldCBpbnRlcnJ1cHRlZCBieSBvdGhlciBzaWduYWxzLAorICAgICAgICAgICAgICAgICMgYW5kIHRoZW4gcmV0cmllZC4gU28ga2VlcCBzZW5kaW5nIHRoZSBzaWduYWwgaW4gYSBsb29wLCBpbgorICAgICAgICAgICAgICAgICMgY2FzZSBhbiBlYXJsaWVyIHNpZ25hbCBoYXBwZW5zIHRvIGJlIGRlbGl2ZXJlZCBhdCBhbgorICAgICAgICAgICAgICAgICMgaW5jb252ZW5pZW50IG1vbWVudC4KKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX2tpbGwobWFpbl90aHJlYWQsIHNpZ25hbC5TSUdVU1IxKQorICAgICAgICAgICAgICAgICAgICBpZiBpbnRlcnJ1cHRlZC53YWl0KHRpbWVvdXQ9ZmxvYXQoMSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBub25sb2NhbCByZWNlaXZlZDIKKyAgICAgICAgICAgICAgICByZWNlaXZlZDIgPSBsZW4ocmVhZGVyLnJlYWQoKSkKKworICAgICAgICBiYWNrZ3JvdW5kID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX2NsaWVudCkKKyAgICAgICAgYmFja2dyb3VuZC5zdGFydCgpCisgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIGJhY2tncm91bmQuam9pbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNlbnQxLCBsZW4ocmVzcG9uc2UxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZTEsIGInd3JpdGUgZGF0YVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucmVjZWl2ZWQsIGInY2xpZW50IHJlc3BvbnNlXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zZW50MiwgdGVzdC5zdXBwb3J0LlNPQ0tfTUFYX1NJWkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQyLCB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRSAtIDEwMCkKKwogCiBjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3NvcnQucHkKaW5kZXggYTVkMGViZi4uOThjY2FiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQpAQCAtMSw2ICsxLDUgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgY21wX3RvX2tleQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Nwd2QucHkgYi9MaWIvdGVzdC90ZXN0X3Nwd2QucHkKaW5kZXggYmVhN2FiMS4uZTg5M2YzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zcHdkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3B3ZC5weQpAQCAtNTYsNSArNTYsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3B3ZC5nZXRzcG5hbSwgYnl0ZXNfbmFtZSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpIGFuZCBvcy5nZXRldWlkKCkgIT0gMCwKKyAgICAgICAgICAgICAgICAgICAgICdub24tcm9vdCB1c2VyIHJlcXVpcmVkJykKK2NsYXNzIFRlc3RTcHdkTm9uUm9vdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9nZXRzcG5hbV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG5hbWUgPSAnYmluJworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBlcm1pc3Npb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc3B3ZC5nZXRzcG5hbShuYW1lKQorICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3B3ZCBlbnRyeSAlciBkb2Vzbid0IGV4aXN0OiAlcyIgJSAobmFtZSwgZXhjKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICdbRXJybm8gMTNdIFBlcm1pc3Npb24gZGVuaWVkJykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQppbmRleCA1NTE1NTgzLi5hZDMwMTA1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQpAQCAtMjEsNiArMjEsMTMgQEAKIAogc3NsID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJzc2wiKQogCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9oYXZlX3RocmVhZHMgPSBGYWxzZQorZWxzZToKKyAgICBfaGF2ZV90aHJlYWRzID0gVHJ1ZQorCiBQUk9UT0NPTFMgPSBzb3J0ZWQoc3NsLl9QUk9UT0NPTF9OQU1FUykKIEhPU1QgPSBzdXBwb3J0LkhPU1QKIElTX0xJQlJFU1NMID0gc3NsLk9QRU5TU0xfVkVSU0lPTi5zdGFydHN3aXRoKCdMaWJyZVNTTCcpCkBAIC01NiwxMiArNjMsMTIgQEAKICMgVHdvIGtleXMgYW5kIGNlcnRzIHNpZ25lZCBieSB0aGUgc2FtZSBDQSAoZm9yIFNOSSB0ZXN0cykKIFNJR05FRF9DRVJURklMRSA9IGRhdGFfZmlsZSgia2V5Y2VydDMucGVtIikKIFNJR05FRF9DRVJURklMRTIgPSBkYXRhX2ZpbGUoImtleWNlcnQ0LnBlbSIpCi1TSUdOSU5HX0NBID0gZGF0YV9maWxlKCJweWNhY2VydC5wZW0iKQorIyBTYW1lIGNlcnRpZmljYXRlIGFzIHB5Y2FjZXJ0LnBlbSwgYnV0IHdpdGhvdXQgZXh0cmEgdGV4dCBpbiBmaWxlCitTSUdOSU5HX0NBID0gZGF0YV9maWxlKCJjYXBhdGgiLCAiY2VmZjE3MTAuMCIpCiAjIGNlcnQgd2l0aCBhbGwga2luZHMgb2Ygc3ViamVjdCBhbHQgbmFtZXMKIEFMTFNBTkZJTEUgPSBkYXRhX2ZpbGUoImFsbHNhbnMucGVtIikKIAogUkVNT1RFX0hPU1QgPSAic2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQiCi1SRU1PVEVfUk9PVF9DRVJUID0gZGF0YV9maWxlKCJzZWxmc2lnbmVkX3B5dGhvbnRlc3Rkb3RuZXQucGVtIikKIAogRU1QVFlDRVJUID0gZGF0YV9maWxlKCJudWxsY2VydC5wZW0iKQogQkFEQ0VSVCA9IGRhdGFfZmlsZSgiYmFkY2VydC5wZW0iKQpAQCAtNzMsNiArODAsMTIgQEAKIERIRklMRSA9IGRhdGFfZmlsZSgiZGgxMDI0LnBlbSIpCiBCWVRFU19ESEZJTEUgPSBvcy5mc2VuY29kZShESEZJTEUpCiAKKyMgTm90IGRlZmluZWQgaW4gYWxsIHZlcnNpb25zIG9mIE9wZW5TU0wKK09QX05PX0NPTVBSRVNTSU9OID0gZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCitPUF9TSU5HTEVfREhfVVNFID0gZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCkKK09QX1NJTkdMRV9FQ0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCkKK09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSA9IGdldGF0dHIoc3NsLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwgMCkKKwogCiBkZWYgaGFuZGxlX2Vycm9yKHByZWZpeCk6CiAgICAgZXhjX2Zvcm1hdCA9ICcgJy5qb2luKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSkpCkBAIC0xMzAsNiArMTQzLDIxIEBACiBuZWVkc19zbmkgPSB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfU05JLCAiU05JIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQogCiAKK2RlZiB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFMsICosCisgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2FfY2VydHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgIGNpcGhlcnM9Tm9uZSwgY2VydGZpbGU9Tm9uZSwga2V5ZmlsZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgorICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2xfdmVyc2lvbikKKyAgICBpZiBjZXJ0X3JlcXMgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBjZXJ0X3JlcXMKKyAgICBpZiBjYV9jZXJ0cyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FfY2VydHMpCisgICAgaWYgY2VydGZpbGUgaXMgbm90IE5vbmUgb3Iga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGUpCisgICAgaWYgY2lwaGVycyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycyhjaXBoZXJzKQorICAgIHJldHVybiBjb250ZXh0LndyYXBfc29ja2V0KHNvY2ssICoqa3dhcmdzKQorCiBjbGFzcyBCYXNpY1NvY2tldFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NvbnN0YW50cyhzZWxmKToKQEAgLTM1MCwxNyArMzc4LDE3IEBACiAgICAgICAgICMgSXNzdWUgIzc5NDM6IGFuIFNTTCBvYmplY3QgZG9lc24ndCBjcmVhdGUgcmVmZXJlbmNlIGN5Y2xlcyB3aXRoCiAgICAgICAgICMgaXRzZWxmLgogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKKyAgICAgICAgc3MgPSB0ZXN0X3dyYXBfc29ja2V0KHMpCiAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoc3MpCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIiIsIFJlc291cmNlV2FybmluZykpOgogICAgICAgICAgICAgZGVsIHNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X3dyYXBwZWRfdW5jb25uZWN0ZWQoc2VsZik6CiAgICAgICAgICMgTWV0aG9kcyBvbiBhbiB1bmNvbm5lY3RlZCBTU0xTb2NrZXQgcHJvcGFnYXRlIHRoZSBvcmlnaW5hbAogICAgICAgICAjIE9TRXJyb3IgcmFpc2UgYnkgdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4KICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2LCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdl9pbnRvLCBieXRlYXJyYXkoYid4JykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2ZnJvbSwgMSkKQEAgLTM3NCwxMCArNDAyLDEwIEBACiAgICAgICAgIGZvciB0aW1lb3V0IGluIChOb25lLCAwLjAsIDUuMCk6CiAgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKICAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lb3V0LCBzcy5nZXR0aW1lb3V0KCkpCiAKLSAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgZGVmIHRlc3RfZXJyb3JzX3NzbHdyYXAoc2VsZik6CiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNlcnRmaWxlIG11c3QgYmUgc3BlY2lmaWVkIiwKQEAgLTM4NywxMCArNDE1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0ZmlsZSBtdXN0IGJlIHNwZWNpZmllZCBmb3Igc2VydmVyLXNpZGUgb3BlcmF0aW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPSIiKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldCwgc29jaywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9IiIpCiAgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2FuJ3QgY29ubmVjdCBpbiBzZXJ2ZXItc2lkZSBtb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgc29jazoKICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQoc29jaywgY2VydGZpbGU9Tk9ORVhJU1RJTkdDRVJUKQpAQCAtNDEzLDcgKzQ0MSw3IEBACiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKLSAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldChzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKIApAQCAtNjAwLDcgKzYyOCw3IEBACiAgICAgICAgIHMubGlzdGVuKCkKICAgICAgICAgYyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCiAgICAgICAgIGMuY29ubmVjdChzLmdldHNvY2tuYW1lKCkpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidW5rbm93bi10eXBlIikKICAgICAgICAgcy5jbG9zZSgpCkBAIC02MTAsMTUgKzYzOCwxNSBAQAogICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgogICAgICAgICAjIHVuY29ubmVjdGVkIHNob3VsZCByZXR1cm4gTm9uZSBmb3Iga25vd24gdHlwZQogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKICAgICAgICAgIyB0aGUgc2FtZSBmb3Igc2VydmVyLXNpZGUKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKIAogICAgIGRlZiB0ZXN0X2RlYWxsb2Nfd2FybihzZWxmKToKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKICAgICAgICAgciA9IHJlcHIoc3MpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhSZXNvdXJjZVdhcm5pbmcpIGFzIGNtOgogICAgICAgICAgICAgc3MgPSBOb25lCkBAIC03MzcsNyArNzY1LDcgQEAKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKSBhcyBjeDoKLSAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzLCBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSkKKyAgICAgICAgICAgIHRlc3Rfd3JhcF9zb2NrZXQocywgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGN4LmV4Y2VwdGlvbiksICJvbmx5IHN0cmVhbSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpIGFzIGN4OgpAQCAtODA5LDYgKzgzNywyMiBAQAogICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiRmViICA5IDAwOjAwOjAwIDIwMDcgR01UIiwgMTE3MDk3OTIwMC4wKQogICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKGxvY2FsX2ZlYnJ1YXJ5X25hbWUoKSArICIgIDkgMDA6MDA6MDAgMjAwNyBHTVQiKQogCisgICAgZGVmIHRlc3RfY29ubmVjdF9leF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VydmVyID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlcnZlci5jbG9zZSkKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlcnZlcikgICMgUmVzZXJ2ZSBwb3J0IGJ1dCBkb24ndCBsaXN0ZW4KKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKEhPU1QsIHBvcnQpKQorICAgICAgICAjIElzc3VlICMxOTkxOTogV2luZG93cyBtYWNoaW5lcyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MKKyAgICAgICAgIyBtYWNoaW5lcyBzb21ldGltZXMgcmV0dXJuIEVXT1VMREJMT0NLLgorICAgICAgICBlcnJvcnMgPSAoCisgICAgICAgICAgICBlcnJuby5FQ09OTlJFRlVTRUQsIGVycm5vLkVIT1NUVU5SRUFDSCwgZXJybm8uRVRJTUVET1VULAorICAgICAgICAgICAgZXJybm8uRVdPVUxEQkxPQ0ssCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgZXJyb3JzKQorCiAKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTgzNCwxMyArODc4LDIyIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJObyBjaXBoZXIgY2FuIGJlIHNlbGVjdGVkIik6CiAgICAgICAgICAgICBjdHguc2V0X2NpcGhlcnMoIl4kOiw7PyonZG9yb3RoeXgiKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMSwgMCwgMiwgMCwgMCksICdPcGVuU1NMIHRvbyBvbGQnKQorICAgIGRlZiB0ZXN0X2dldF9jaXBoZXJzKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eC5zZXRfY2lwaGVycygnQUVTR0NNJykKKyAgICAgICAgbmFtZXMgPSBzZXQoZFsnbmFtZSddIGZvciBkIGluIGN0eC5nZXRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdBRVMyNTYtR0NNLVNIQTM4NCcsIG5hbWVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdBRVMxMjgtR0NNLVNIQTI1NicsIG5hbWVzKQorCiAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKICAgICBkZWYgdGVzdF9vcHRpb25zKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgICMgT1BfQUxMIHwgT1BfTk9fU1NMdjIgfCBPUF9OT19TU0x2MyBpcyB0aGUgZGVmYXVsdCB2YWx1ZQogICAgICAgICBkZWZhdWx0ID0gKHNzbC5PUF9BTEwgfCBzc2wuT1BfTk9fU1NMdjIgfCBzc2wuT1BfTk9fU1NMdjMpCi0gICAgICAgIGlmIG5vdCBJU19MSUJSRVNTTCBhbmQgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPID49ICgxLCAxLCAwKToKLSAgICAgICAgICAgIGRlZmF1bHQgfD0gc3NsLk9QX05PX0NPTVBSRVNTSU9OCisgICAgICAgICMgU1NMQ29udGV4dCBhbHNvIGVuYWJsZXMgdGhlc2UgYnkgZGVmYXVsdAorICAgICAgICBkZWZhdWx0IHw9IChPUF9OT19DT01QUkVTU0lPTiB8IE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSB8CisgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9ESF9VU0UgfCBPUF9TSU5HTEVfRUNESF9VU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdCwgY3R4Lm9wdGlvbnMpCiAgICAgICAgIGN0eC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQgfCBzc2wuT1BfTk9fVExTdjEsIGN0eC5vcHRpb25zKQpAQCAtMTIwNSwxNiArMTI1OCwyOSBAQAogICAgICAgICAgICAgc3RhdHNbIng1MDkiXSArPSAxCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5jZXJ0X3N0b3JlX3N0YXRzKCksIHN0YXRzKQogCisgICAgZGVmIF9hc3NlcnRfY29udGV4dF9vcHRpb25zKHNlbGYsIGN0eCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgaWYgT1BfTk9fQ09NUFJFU1NJT04gIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9OT19DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfTk9fQ09NUFJFU1NJT04pCisgICAgICAgIGlmIE9QX1NJTkdMRV9ESF9VU0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9TSU5HTEVfREhfVVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfREhfVVNFKQorICAgICAgICBpZiBPUF9TSU5HTEVfRUNESF9VU0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9TSU5HTEVfRUNESF9VU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9FQ0RIX1VTRSkKKyAgICAgICAgaWYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UpCisKICAgICBkZWYgdGVzdF9jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisKIAogICAgICAgICB3aXRoIG9wZW4oU0lHTklOR19DQSkgYXMgZjoKICAgICAgICAgICAgIGNhZGF0YSA9IGYucmVhZCgpCkBAIC0xMjIyLDQwICsxMjg4LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICBkZWYgdGVzdF9fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKQEAgLTEyNjMsMTIgKzEzMTMsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY3R4LmNoZWNrX2hvc3RuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHB1cnBvc2U9c3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2hvc3RuYW1lKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCkBAIC0xMjkyLDYgKzEzNDIsMTcgQEAKICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X2NsaWVudF9zZXJ2ZXIoc2VsZik6CisgICAgICAgICMgUFJPVE9DT0xfVExTX0NMSUVOVCBoYXMgc2FuZSBkZWZhdWx0cworICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQorCisgICAgICAgICMgUFJPVE9DT0xfVExTX1NFUlZFUiBoYXMgZGlmZmVyZW50IGJ1dCBhbHNvIHNhbmUgZGVmYXVsdHMKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19TRVJWRVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3R4LmNoZWNrX2hvc3RuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKKwogCiBjbGFzcyBTU0xFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTM5NywxNDAgKzE0NTgsMTA1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCAxKQogCiAKLWNsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwVW5sZXNzKF9oYXZlX3RocmVhZHMsICJOZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKK2NsYXNzIFNpbXBsZUJhY2tncm91bmRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyB0aGF0IGNvbm5lY3QgdG8gYSBzaW1wbGUgc2VydmVyIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYWRkciA9IChIT1NULCBzZXJ2ZXIucG9ydCkKKyAgICAgICAgc2VydmVyLl9fZW50ZXJfXygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuX19leGl0X18sIE5vbmUsIE5vbmUsIE5vbmUpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0KHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMuc2VydmVyX3NpZGUpCiAKLSAgICAgICAgICAgICMgdGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzCi0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIHRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1TSUdOSU5HX0NBKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNlcnZlcl9zaWRlKQogCi0gICAgICAgICAgICAjIHRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZmFpbChzZWxmKToKKyAgICAgICAgIyBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2Ugd2UgaGF2ZSBubyB2ZXJpZmljYXRpb24gY2VydHMuIENvbm5lY3Rpb24KKyAgICAgICAgIyBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbiBpbmRlcGVuZGVudAorICAgICAgICAjIHRlc3QgbWV0aG9kLgorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXgoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExMzI2OiBjaGVjayBjb25uZWN0X2V4KCkgaW1wbGVtZW50YXRpb24KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHMuY29ubmVjdF9leChzZWxmLnNlcnZlcl9hZGRyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKIAogICAgIGRlZiB0ZXN0X25vbl9ibG9ja2luZ19jb25uZWN0X2V4KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTMyNjogbm9uLWJsb2NraW5nIGNvbm5lY3RfZXgoKSBzaG91bGQgYWxsb3cgaGFuZHNoYWtlCiAgICAgICAgICMgdG8gcHJvY2VlZCBhZnRlciB0aGUgc29ja2V0IGdldHMgcmVhZHkuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICByYyA9IHMuY29ubmVjdF9leChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAjIEVXT1VMREJMT0NLIHVuZGVyIFdpbmRvd3MsIEVJTlBST0dSRVNTIGVsc2V3aGVyZQorICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoMCwgZXJybm8uRUlOUFJPR1JFU1MsIGVycm5vLkVXT1VMREJMT0NLKSkKKyAgICAgICAgIyBXYWl0IGZvciBjb25uZWN0IHRvIGZpbmlzaAorICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCisgICAgICAgICMgTm9uLWJsb2NraW5nIGhhbmRzaGFrZQorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCi0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgICMgRVdPVUxEQkxPQ0sgdW5kZXIgV2luZG93cywgRUlOUFJPR1JFU1MgZWxzZXdoZXJlCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKDAsIGVycm5vLkVJTlBST0dSRVNTLCBlcnJuby5FV09VTERCTE9DSykpCi0gICAgICAgICAgICAgICAgIyBXYWl0IGZvciBjb25uZWN0IHRvIGZpbmlzaAorICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQotICAgICAgICAgICAgICAgICMgTm9uLWJsb2NraW5nIGhhbmRzaGFrZQotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAjIFNTTCBlc3RhYmxpc2hlZAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfdGltZW91dF9jb25uZWN0X2V4KHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMjA2NTogb24gYSB0aW1lb3V0LCBjb25uZWN0X2V4KCkgc2hvdWxkIHJldHVybiB0aGUgb3JpZ2luYWwKLSAgICAgICAgIyBlcnJubyAobWltaWNraW5nIHRoZSBiZWhhdmlvdXIgb2Ygbm9uLVNTTCBzb2NrZXRzKS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjAwMDAwMDEpCi0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIGlmIHJjID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlJFTU9URV9IT1NUIHJlc3BvbmRlZCB0b28gcXVpY2tseSIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKGVycm5vLkVBR0FJTiwgZXJybm8uRVdPVUxEQkxPQ0spKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXhfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQ0KSkKLSAgICAgICAgICAgICAgICAjIElzc3VlICMxOTkxOTogV2luZG93cyBtYWNoaW5lcyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MKLSAgICAgICAgICAgICAgICAjIG1hY2hpbmVzIHNvbWV0aW1lcyByZXR1cm4gRVdPVUxEQkxPQ0suCi0gICAgICAgICAgICAgICAgZXJyb3JzID0gKAotICAgICAgICAgICAgICAgICAgICBlcnJuby5FQ09OTlJFRlVTRUQsIGVycm5vLkVIT1NUVU5SRUFDSCwgZXJybm8uRVRJTUVET1VULAotICAgICAgICAgICAgICAgICAgICBlcnJuby5FV09VTERCTE9DSywKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgZXJyb3JzKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgIyBTU0wgZXN0YWJsaXNoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9jb250ZXh0KHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgICMgU2FtZSBhcyB0ZXN0X2Nvbm5lY3QsIGJ1dCB3aXRoIGEgc2VwYXJhdGVseSBjcmVhdGVkIGNvbnRleHQKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBTYW1lIHdpdGggYSBzZXJ2ZXIgaG9zdG5hbWUKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1SRU1PVEVfSE9TVCkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBzdWNjZWVkIGJlY2F1c2Ugd2Ugc3BlY2lmeSB0aGUgcm9vdCBjZXJ0Ci0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIFNhbWUgYXMgdGVzdF9jb25uZWN0LCBidXQgd2l0aCBhIHNlcGFyYXRlbHkgY3JlYXRlZCBjb250ZXh0CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICMgU2FtZSB3aXRoIGEgc2VydmVyIGhvc3RuYW1lCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0iZHVtbXkiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICMgVGhpcyBzaG91bGQgc3VjY2VlZCBiZWNhdXNlIHdlIHNwZWNpZnkgdGhlIHJvb3QgY2VydAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9jb250ZXh0X2ZhaWwoc2VsZik6CisgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzLiBDb25uZWN0aW9uCisgICAgICAgICMgZmFpbHVyZSBjcmFzaGVzIFRocmVhZGVkRWNob1NlcnZlciwgc28gcnVuIHRoaXMgaW4gYW4gaW5kZXBlbmRlbnQKKyAgICAgICAgIyB0ZXN0IG1ldGhvZC4KKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSBzZXJ2ZXIgY2VydGlmaWNhdGVzIHVzaW5nIHRoZSBgY2FwYXRoYCBhcmd1bWVudApAQCAtMTUzOCwxOTggKzE1NjQsMTMwIEBACiAgICAgICAgICMgT3BlblNTTCAwLjkuOG4gYW5kIDEuMC4wLCBhcyBhIHJlc3VsdCB0aGUgY2FwYXRoIGRpcmVjdG9yeSBtdXN0CiAgICAgICAgICMgY29udGFpbiBib3RoIHZlcnNpb25zIG9mIGVhY2ggY2VydGlmaWNhdGUgKHNhbWUgY29udGVudCwgZGlmZmVyZW50CiAgICAgICAgICMgZmlsZW5hbWUpIGZvciB0aGlzIHRlc3QgdG8gYmUgcG9ydGFibGUgYWNyb3NzIE9wZW5TU0wgcmVsZWFzZXMuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBTYW1lIHdpdGggYSBieXRlcyBgY2FwYXRoYCBhcmd1bWVudAotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1CWVRFU19DQVBBVEgpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKyAgICAgICAgIyBTYW1lIHdpdGggYSBieXRlcyBgY2FwYXRoYCBhcmd1bWVudAorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1CWVRFU19DQVBBVEgpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfY2FkYXRhKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oUkVNT1RFX1JPT1RfQ0VSVCkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKFNJR05JTkdfQ0EpIGFzIGY6CiAgICAgICAgICAgICBwZW0gPSBmLnJlYWQoKQogICAgICAgICBkZXIgPSBzc2wuUEVNX2NlcnRfdG9fREVSX2NlcnQocGVtKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9cGVtKQotICAgICAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPXBlbSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQogCi0gICAgICAgICAgICAjIHNhbWUgd2l0aCBERVIKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9ZGVyKQotICAgICAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgICMgc2FtZSB3aXRoIERFUgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1kZXIpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAibnQiLCAiQ2FuJ3QgdXNlIGEgc29ja2V0IGFzIGEgZmlsZSB1bmRlciBXaW5kb3dzIikKICAgICBkZWYgdGVzdF9tYWtlZmlsZV9jbG9zZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjNTIzODogY3JlYXRpbmcgYSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggbWFrZWZpbGUoKSBzaG91bGRuJ3QKICAgICAgICAgIyBkZWxheSBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nICJyZWFsIHNvY2tldCIgKGhlcmUgdGVzdGVkIHdpdGggaXRzCiAgICAgICAgICMgZmlsZSBkZXNjcmlwdG9yLCBoZW5jZSBza2lwcGluZyB0aGUgdGVzdCB1bmRlciBXaW5kb3dzKS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHNzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgZmQgPSBzcy5maWxlbm8oKQotICAgICAgICAgICAgZiA9IHNzLm1ha2VmaWxlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGUgZmQgaXMgc3RpbGwgb3BlbgorICAgICAgICBzcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgZmQgPSBzcy5maWxlbm8oKQorICAgICAgICBmID0gc3MubWFrZWZpbGUoKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgIyBUaGUgZmQgaXMgc3RpbGwgb3BlbgorICAgICAgICBvcy5yZWFkKGZkLCAwKQorICAgICAgICAjIENsb3NpbmcgdGhlIFNTTCBzb2NrZXQgc2hvdWxkIGNsb3NlIHRoZSBmZCB0b28KKyAgICAgICAgc3MuY2xvc2UoKQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBlOgogICAgICAgICAgICAgb3MucmVhZChmZCwgMCkKLSAgICAgICAgICAgICMgQ2xvc2luZyB0aGUgU1NMIHNvY2tldCBzaG91bGQgY2xvc2UgdGhlIGZkIHRvbwotICAgICAgICAgICAgc3MuY2xvc2UoKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICAgICAgb3MucmVhZChmZCwgMCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FQkFERikKIAogICAgIGRlZiB0ZXN0X25vbl9ibG9ja2luZ19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgY291bnQgPSAwCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQotICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbk5lZWRlZCAlZCBjYWxscyB0byBkb19oYW5kc2hha2UoKSB0byBlc3RhYmxpc2ggc2Vzc2lvbi5cbiIgJSBjb3VudCkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10pCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCisgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuTmVlZGVkICVkIGNhbGxzIHRvIGRvX2hhbmRzaGFrZSgpIHRvIGVzdGFibGlzaCBzZXNzaW9uLlxuIiAlIGNvdW50KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmKToKLSAgICAgICAgZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoaG9zdCwgcG9ydCwgY2VydD1Ob25lKToKLSAgICAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoaG9zdCk6Ci0gICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZiwgKnNlbGYuc2VydmVyX2FkZHIsIGNlcnQ9U0lHTklOR19DQSkKIAotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSkKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6Ci0gICAgICAgICAgICAgICAgICAgICNzaG91bGQgZmFpbAotICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCi0KLSAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Y2VydCkKLSAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5WZXJpZmllZCBjZXJ0aWZpY2F0ZSBmb3IgJXM6JXMgaXNcbiVzXG4iICUgKGhvc3QsIHBvcnQgLHBlbSkpCi0KLSAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShSRU1PVEVfSE9TVCwgNDQzLCBSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKLSAgICAgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKyAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZik6CisgICAgICAgICMgQ29ubmVjdGlvbiBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbgorICAgICAgICAjIGluZGVwZW5kZW50IHRlc3QgbWV0aG9kCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfZmFpbChzZWxmLCAqc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2NpcGhlcnMoc2VsZik6Ci0gICAgICAgIHJlbW90ZSA9IChSRU1PVEVfSE9TVCwgNDQzKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHJlbW90ZVswXSk6Ci0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgotICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJERUZBVUxUIikgYXMgczoKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgIyBFcnJvciBjaGVja2luZyBjYW4gaGFwcGVuIGF0IGluc3RhbnRpYXRpb24gb3Igd2hlbiBjb25uZWN0aW5nCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgotICAgICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkgYXMgc29jazoKLSAgICAgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJeJDosOz8qJ2Rvcm90aHl4IikKLSAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLQotICAgIGRlZiB0ZXN0X2FsZ29yaXRobXMoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzg0ODQ6IGFsbCBhbGdvcml0aG1zIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiB2ZXJpZnlpbmcgYQotICAgICAgICAjIGNlcnRpZmljYXRlLgotICAgICAgICAjIFNIQTI1NiB3YXMgYWRkZWQgaW4gT3BlblNTTCAwLjkuOAotICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMCwgOSwgOCwgMCwgMTUpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0hBMjU2IG5vdCBhdmFpbGFibGUgb24gJXIiICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKLSAgICAgICAgIyBzaGEyNTYudGJzLWludGVybmV0LmNvbSBuZWVkcyBTTkkgdG8gdXNlIHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlCi0gICAgICAgIGlmIG5vdCBzc2wuSEFTX1NOSToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNOSSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCi0gICAgICAgICMgaHR0cHM6Ly9zaGEyLmhib2Vjay5kZS8gd2FzIHVzZWQgdW50aWwgMjAxMS0wMS0wOCAobm8gcm91dGUgdG8gaG9zdCkKLSAgICAgICAgcmVtb3RlID0gKCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIsIDQ0MykKLSAgICAgICAgc2hhMjU2X2NlcnQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNoYTI1Ni5wZW0iKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2hhMjU2X2NlcnQpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5DaXBoZXIgd2l0aCAlciBpcyAlclxuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW90ZSwgcy5jaXBoZXIoKSkpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkNlcnRpZmljYXRlIGlzOlxuJXNcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHMuZ2V0cGVlcmNlcnQoKSkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9IkRFRkFVTFQiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICMgRXJyb3IgY2hlY2tpbmcgY2FuIGhhcHBlbiBhdCBpbnN0YW50aWF0aW9uIG9yIHdoZW4gY29ubmVjdGluZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSBhcyBzb2NrOgorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iXiQ6LDs/Kidkb3JvdGh5eCIpCisgICAgICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9nZXRfY2FfY2VydHNfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIGNhcGF0aCBjZXJ0cyBhcmUgbG9hZGVkIG9uIHJlcXVlc3QKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FwYXRoPUNBUEFUSCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQogCiAgICAgQG5lZWRzX3NuaQogICAgIGRlZiB0ZXN0X2NvbnRleHRfc2V0Z2V0KHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGNvbnRleHQgb2YgYSBjb25uZWN0ZWQgc29ja2V0IGNhbiBiZSByZXBsYWNlZC4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHgxID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQotICAgICAgICAgICAgY3R4MiA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHdpdGggY3R4MS53cmFwX3NvY2tldChzKSBhcyBzczoKLSAgICAgICAgICAgICAgICBzcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDEpCi0gICAgICAgICAgICAgICAgc3MuY29udGV4dCA9IGN0eDIKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDIpCi0KLQotY2xhc3MgTmV0d29ya2VkQklPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBjdHgxID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHgyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHdpdGggY3R4MS53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgICAgIHNzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgxKQorICAgICAgICAgICAgc3MuY29udGV4dCA9IGN0eDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgyKQogCiAgICAgZGVmIHNzbF9pb19sb29wKHNlbGYsIHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIyBBIHNpbXBsZSBJTyBsb29wLiBDYWxsIGZ1bmMoKmFyZ3MpIGRlcGVuZGluZyBvbiB0aGUgZXJyb3Igd2UgZ2V0CkBAIC0xNzY1LDY0ICsxNzIzLDEyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb3VudCwgZnVuYy5fX25hbWVfXykpCiAgICAgICAgIHJldHVybiByZXQKIAotICAgIGRlZiB0ZXN0X2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHNvY2suY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQotICAgICAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQotICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UsIFJFTU9URV9IT1NUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmNpcGhlcigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCi0gICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQotICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmNpcGhlcigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKLSAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgotICAgICAgICAgICAgICAgICMgc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQgcHJvYmFibHkgc2h1dHMgZG93biB0aGUgVENQCi0gICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCBhbmQKLSAgICAgICAgICAgICAgICAjIHRoaXMgaXMgcmVwb3J0ZWQgYXMgU1NMX0VSUk9SX1NZU0NBTEwKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbG9iai53cml0ZSwgYidmb28nKQotICAgICAgICAgICAgc29jay5jbG9zZSgpCi0KLSAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2RhdGEoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzb2NrLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCi0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQotICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UpCi0gICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKLSAgICAgICAgICAgIHJlcSA9IGInR0VUIC8gSFRUUC8xLjBcclxuXHJcbicKLSAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoud3JpdGUsIHJlcSkKLSAgICAgICAgICAgIGJ1ZiA9IHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoucmVhZCwgMTAyNCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmWzo1XSwgYidIVFRQLycpCisgICAgZGVmIHRlc3RfYmlvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrLmNsb3NlKQorICAgICAgICBzb2NrLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICBjdHguY2hlY2tfaG9zdG5hbWUgPSBUcnVlCisgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlLCAnbG9jYWxob3N0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCisgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCisgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCisgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoudW53cmFwKQotICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgorICAgICAgICAgICAgIyBJZiB0aGUgc2VydmVyIHNodXRzIGRvd24gdGhlIFRDUCBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhCisgICAgICAgICAgICAjIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCB0aGlzIGlzIHJlcG9ydGVkIGFzIFNTTF9FUlJPUl9TWVNDQUxMCisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvciwgc3Nsb2JqLndyaXRlLCBiJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9iaW9fcmVhZF93cml0ZV9kYXRhKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCisgICAgICAgIHNvY2suY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlKQorICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKKyAgICAgICAgcmVxID0gYidGT09cbicKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai53cml0ZSwgcmVxKQorICAgICAgICBidWYgPSBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnJlYWQsIDEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBiJ2Zvb1xuJykKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai51bndyYXApCiAKIAotdHJ5OgotICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBfaGF2ZV90aHJlYWRzID0gRmFsc2UKLWVsc2U6Ci0gICAgX2hhdmVfdGhyZWFkcyA9IFRydWUKK2NsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiB0ZXN0X3RpbWVvdXRfY29ubmVjdF9leChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTIwNjU6IG9uIGEgdGltZW91dCwgY29ubmVjdF9leCgpIHNob3VsZCByZXR1cm4gdGhlIG9yaWdpbmFsCisgICAgICAgICMgZXJybm8gKG1pbWlja2luZyB0aGUgYmVoYXZpb3VyIG9mIG5vbi1TU0wgc29ja2V0cykuCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgorICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjAwMDAwMDEpCisgICAgICAgICAgICByYyA9IHMuY29ubmVjdF9leCgoUkVNT1RFX0hPU1QsIDQ0MykpCisgICAgICAgICAgICBpZiByYyA9PSAwOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlJFTU9URV9IT1NUIHJlc3BvbmRlZCB0b28gcXVpY2tseSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoZXJybm8uRUFHQUlOLCBlcnJuby5FV09VTERCTE9DSykpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ05lZWRzIElQdjYnKQorICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfaXB2NihzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgnaXB2Ni5nb29nbGUuY29tJyk6CisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYsICdpcHY2Lmdvb2dsZS5jb20nLCA0NDMpCisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZiwgJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKworICAgIGRlZiB0ZXN0X2FsZ29yaXRobXMoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzg0ODQ6IGFsbCBhbGdvcml0aG1zIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiB2ZXJpZnlpbmcgYQorICAgICAgICAjIGNlcnRpZmljYXRlLgorICAgICAgICAjIFNIQTI1NiB3YXMgYWRkZWQgaW4gT3BlblNTTCAwLjkuOAorICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMCwgOSwgOCwgMCwgMTUpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0hBMjU2IG5vdCBhdmFpbGFibGUgb24gJXIiICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKKyAgICAgICAgIyBzaGEyNTYudGJzLWludGVybmV0LmNvbSBuZWVkcyBTTkkgdG8gdXNlIHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlCisgICAgICAgIGlmIG5vdCBzc2wuSEFTX1NOSToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNOSSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgICAgICMgaHR0cHM6Ly9zaGEyLmhib2Vjay5kZS8gd2FzIHVzZWQgdW50aWwgMjAxMS0wMS0wOCAobm8gcm91dGUgdG8gaG9zdCkKKyAgICAgICAgcmVtb3RlID0gKCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIsIDQ0MykKKyAgICAgICAgc2hhMjU2X2NlcnQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNoYTI1Ni5wZW0iKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpOgorICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2hhMjU2X2NlcnQpCisgICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQorICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5DaXBoZXIgd2l0aCAlciBpcyAlclxuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW90ZSwgcy5jaXBoZXIoKSkpCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkNlcnRpZmljYXRlIGlzOlxuJXNcbiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHMuZ2V0cGVlcmNlcnQoKSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCisKK2RlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHRlc3QsIGhvc3QsIHBvcnQsIGNlcnQ9Tm9uZSk6CisgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQorICAgIGlmIG5vdCBwZW06CisgICAgICAgIHRlc3QuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisKKyAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksIGNhX2NlcnRzPWNlcnQpCisgICAgaWYgbm90IHBlbToKKyAgICAgICAgdGVzdC5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKKyAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yICVzOiVzIGlzXG4lc1xuIiAlIChob3N0LCBwb3J0ICxwZW0pKQorCitkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9mYWlsKHRlc3QsIGhvc3QsIHBvcnQpOgorICAgIHRyeToKKyAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLCBjYV9jZXJ0cz1DRVJURklMRSkKKyAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6CisgICAgICAgICNzaG91bGQgZmFpbAorICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCisgICAgZWxzZToKKyAgICAgICAgdGVzdC5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCisKKworaWYgX2hhdmVfdGhyZWFkczoKICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCiAKICAgICBjbGFzcyBUaHJlYWRlZEVjaG9TZXJ2ZXIodGhyZWFkaW5nLlRocmVhZCk6CkBAIC0xOTEwLDYgKzE5MzIsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdHJpcHBlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGVvZiwgc28gcXVpdCB0aGlzIGhhbmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmcgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5zc2xjb25uLnVud3JhcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWFueSB0ZXN0cyBzaHV0IHRoZSBUQ1AgY29ubmVjdGlvbiBkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aG91dCBhbiBTU0wgc2h1dGRvd24uIFRoaXMgY2F1c2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW53cmFwKCkgdG8gcmFpc2UgT1NFcnJvciB3aXRoIGVycm5vPTAhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNzbGNvbm4gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHN0cmlwcGVkID09IGInb3Zlcic6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5OgpAQCAtMjAzNyw3ICsyMDY4LDcgQEAKICAgICAgICAgICAgIGNsYXNzIENvbm5lY3Rpb25IYW5kbGVyIChhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZCk6CiAKICAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgY2VydGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNzbC53cmFwX3NvY2tldChjb25uLCBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHRlc3Rfd3JhcF9zb2NrZXQoY29ubiwgc2VydmVyX3NpZGU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQogICAgICAgICAgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZC5fX2luaXRfXyhzZWxmLCBzZWxmLnNvY2tldCkKQEAgLTIxNDUsNyArMjE3Niw4IEBACiAgICAgICAgICAgICBzZWxmLnNlcnZlci5jbG9zZSgpCiAKICAgICBkZWYgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgaW5kYXRhPWIiRk9PXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHNuaV9uYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHNuaV9uYW1lPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgTGF1bmNoIGEgc2VydmVyLCBjb25uZWN0IGEgY2xpZW50IHRvIGl0IGFuZCB0cnkgdmFyaW91cyByZWFkcwogICAgICAgICBhbmQgd3JpdGVzLgpAQCAtMjE1Niw3ICsyMTg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgIHdpdGggc2VydmVyOgogICAgICAgICAgICAgd2l0aCBjbGllbnRfY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCi0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zbmlfbmFtZSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNuaV9uYW1lLCBzZXNzaW9uPXNlc3Npb24pIGFzIHM6CiAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBbaW5kYXRhLCBieXRlYXJyYXkoaW5kYXRhKSwgbWVtb3J5dmlldyhpbmRhdGEpXToKICAgICAgICAgICAgICAgICAgICAgaWYgY29ubmVjdGlvbmNoYXR0eToKQEAgLTIxODQsNiArMjIxNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICdjbGllbnRfYWxwbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpLAogICAgICAgICAgICAgICAgICAgICAnY2xpZW50X25wbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCksCiAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogcy52ZXJzaW9uKCksCisgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uX3JldXNlZCc6IHMuc2Vzc2lvbl9yZXVzZWQsCisgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uJzogcy5zZXNzaW9uLAogICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgICAgICBzdGF0c1snc2VydmVyX2FscG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMKQEAgLTIyNTksMTIgKzIyOTMsNTMgQEAKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCiAgICAgICAgICAgICBmb3IgcHJvdG9jb2wgaW4gUFJPVE9DT0xTOgorICAgICAgICAgICAgICAgIGlmIHByb3RvY29sIGluIHtzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc3NsLlBST1RPQ09MX1RMU19TRVJWRVJ9OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvY29sPXNzbC5fUFJPVE9DT0xfTkFNRVNbcHJvdG9jb2xdKToKICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHByb3RvY29sKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQogCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSKQorICAgICAgICAgICAgIyBzZXJ2ZXJfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihTSUdORURfQ0VSVEZJTEUyKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19DTElFTlQsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUik6CisgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PWNsaWVudF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J2Zha2Vob3N0bmFtZScpCisKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUiwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J2Zha2Vob3N0bmFtZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY2FsbGVkIGEgZnVuY3Rpb24geW91IHNob3VsZCBub3QgY2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZS5leGNlcHRpb24pKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjYWxsZWQgYSBmdW5jdGlvbiB5b3Ugc2hvdWxkIG5vdCBjYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlLmV4Y2VwdGlvbikpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhbGxlZCBhIGZ1bmN0aW9uIHlvdSBzaG91bGQgbm90IGNhbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUuZXhjZXB0aW9uKSkKKworCiAgICAgICAgIGRlZiB0ZXN0X2dldHBlZXJjZXJ0KHNlbGYpOgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKQEAgLTIzOTgsNyArMjQ3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyLCBcCiAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5zb2NrZXQoKSBhcyBzb2NrLCBcCi0gICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgICAgICAgICB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKSBhcyBzOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTI0NDUsNyArMjUyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGMuY29ubmVjdCgoSE9TVCwgcG9ydCkpCiAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyX2dvbmUud2FpdCgpCiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9zb2NrID0gc3NsLndyYXBfc29ja2V0KGMpCisgICAgICAgICAgICAgICAgICAgICAgICBzc2xfc29jayA9IHRlc3Rfd3JhcF9zb2NrZXQoYykKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjM1LDcgKzI3MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgY2xpZW50OiAgcmVhZCAlciBmcm9tIHNlcnZlciwgc3RhcnRpbmcgVExTLi4uXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgY29ubiA9IHNzbC53cmFwX3NvY2tldChzLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uID0gdGVzdF93cmFwX3NvY2tldChzLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBlbGlmIGluZGF0YSA9PSBiIkVORFRMUyIgYW5kIG1zZy5zdGFydHN3aXRoKGIib2siKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgRU5EVExTIG9rLCBzd2l0Y2ggYmFjayB0byBjbGVhciB0ZXh0CkBAIC0yNjk0LDcgKzI3NjksNyBAQAogICAgICAgICAgICAgaW5kYXRhID0gYiJGT09cbiIKICAgICAgICAgICAgIHNlcnZlciA9IEFzeW5jb3JlRWNob1NlcnZlcihDRVJURklMRSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKQorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkKICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKCcxMjcuMC4wLjEnLCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKApAQCAtMjcyNyw3ICsyODAyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMjc0NSwxMiArMjgyMCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBjb3VudCwgYWRkciA9IHMucmVjdmZyb21faW50byhiKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYls6Y291bnRdCiAKLSAgICAgICAgICAgICAgICAjIChuYW1lLCBtZXRob2QsIHdoZXRoZXIgdG8gZXhwZWN0IHN1Y2Nlc3MsICphcmdzKQorICAgICAgICAgICAgICAgICMgKG5hbWUsIG1ldGhvZCwgZXhwZWN0IHN1Y2Nlc3M/LCAqYXJncywgcmV0dXJuIHZhbHVlIGZ1bmMpCiAgICAgICAgICAgICAgICAgc2VuZF9tZXRob2RzID0gWwotICAgICAgICAgICAgICAgICAgICAoJ3NlbmQnLCBzLnNlbmQsIFRydWUsIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgKCdzZW5kdG8nLCBzLnNlbmR0bywgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0pLAotICAgICAgICAgICAgICAgICAgICAoJ3NlbmRhbGwnLCBzLnNlbmRhbGwsIFRydWUsIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kJywgcy5zZW5kLCBUcnVlLCBbXSwgbGVuKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kdG8nLCBzLnNlbmR0bywgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0sIGxlbiksCisgICAgICAgICAgICAgICAgICAgICgnc2VuZGFsbCcsIHMuc2VuZGFsbCwgVHJ1ZSwgW10sIGxhbWJkYSB4OiBOb25lKSwKICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgIyAobmFtZSwgbWV0aG9kLCB3aGV0aGVyIHRvIGV4cGVjdCBzdWNjZXNzLCAqYXJncykKICAgICAgICAgICAgICAgICByZWN2X21ldGhvZHMgPSBbCiAgICAgICAgICAgICAgICAgICAgICgncmVjdicsIHMucmVjdiwgVHJ1ZSwgW10pLAogICAgICAgICAgICAgICAgICAgICAoJ3JlY3Zmcm9tJywgcy5yZWN2ZnJvbSwgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0pLApAQCAtMjc1OSwxMCArMjgzNSwxMyBAQAogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICBkYXRhX3ByZWZpeCA9ICJQUkVGSVhfIgogCi0gICAgICAgICAgICAgICAgZm9yIG1ldGhfbmFtZSwgc2VuZF9tZXRoLCBleHBlY3Rfc3VjY2VzcywgYXJncyBpbiBzZW5kX21ldGhvZHM6CisgICAgICAgICAgICAgICAgZm9yIChtZXRoX25hbWUsIHNlbmRfbWV0aCwgZXhwZWN0X3N1Y2Nlc3MsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICByZXRfdmFsX21ldGgpIGluIHNlbmRfbWV0aG9kczoKICAgICAgICAgICAgICAgICAgICAgaW5kYXRhID0gKGRhdGFfcHJlZml4ICsgbWV0aF9uYW1lKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9tZXRoKGluZGF0YSwgKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzZW5kX21ldGgoaW5kYXRhLCAqYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJzZW5kaW5nIHdpdGgge30iLmZvcm1hdChtZXRoX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgcmV0X3ZhbF9tZXRoKGluZGF0YSksIG1zZz1tc2cpCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRkYXRhID0gcy5yZWFkKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG91dGRhdGEgIT0gaW5kYXRhLmxvd2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKApAQCAtMjg0Nyw3ICsyOTI2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuX19leGl0X18sIE5vbmUsIE5vbmUpCiAgICAgICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQocywgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCisgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQogCiAgICAgICAgICAgICAjIHJlY3YvcmVhZCgwKSBzaG91bGQgcmV0dXJuIG5vIGRhdGEKQEAgLTI4NjksNyArMjk0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTI5MjMsMTIgKzMwMDIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgYy5jb25uZWN0KChob3N0LCBwb3J0KSkKICAgICAgICAgICAgICAgICAgICAgIyBXaWxsIGF0dGVtcHQgaGFuZHNoYWtlIGFuZCB0aW1lIG91dAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNvY2tldC50aW1lb3V0LCAidGltZWQgb3V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldCwgYykKICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICBjLmNsb3NlKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgICAgICAgICBjID0gc3NsLndyYXBfc29ja2V0KGMpCisgICAgICAgICAgICAgICAgICAgIGMgPSB0ZXN0X3dyYXBfc29ja2V0KGMpCiAgICAgICAgICAgICAgICAgICAgIGMuc2V0dGltZW91dCgwLjIpCiAgICAgICAgICAgICAgICAgICAgICMgV2lsbCBhdHRlbXB0IGhhbmRzaGFrZSBhbmQgdGltZSBvdXQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzb2NrZXQudGltZW91dCwgInRpbWVkIG91dCIsCkBAIC0yOTUxLDYgKzMwMzAsNyBAQAogICAgICAgICAgICAgaG9zdCA9ICIxMjcuMC4wLjEiCiAgICAgICAgICAgICBwb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VydmVyKQogICAgICAgICAgICAgc2VydmVyID0gY29udGV4dC53cmFwX3NvY2tldChzZXJ2ZXIsIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLnNlcnZlcl9zaWRlKQogCiAgICAgICAgICAgICBldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICAgICAgcmVtb3RlID0gTm9uZQpAQCAtMzA1Myw3ICszMTMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMzA3OCw3ICszMTU4LDcgQEAKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIAogICAgICAgICAgICAgICAgICMgbm93LCBhZ2FpbgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTMzODgsNiArMzQ2OCwxMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VuZGZpbGUoZmlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5yZWN2KDEwMjQpLCBURVNUX0RBVEEpCiAKKyAgICAgICAgZGVmIHRlc3Rfc2Vzc2lvbihzZWxmKToKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisKKyAgICAgICAgICAgICMgZmlyc3QgY29ubmNldGlvbiB3aXRob3V0IHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIHNlc3Npb24gPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzZXNzaW9uLnRpbWUsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aW1lb3V0LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24uaGFzX3RpY2tldCkKKyAgICAgICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+ICgxLCAwLCAxKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aWNrZXRfbGlmZXRpbWVfaGludCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDApCisKKyAgICAgICAgICAgICMgcmV1c2Ugc2Vzc2lvbgorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LCBzZXNzaW9uPXNlc3Npb24pCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzaW9uMiA9IHN0YXRzWydzZXNzaW9uJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc2lvbjIuaWQsIHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb24yLCBzZXNzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzZXNzaW9uMiwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb24yLnRpbWUsIHNlc3Npb24udGltZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb24yLnRpbWVvdXQsIHNlc3Npb24udGltZW91dCkKKworICAgICAgICAgICAgIyBhbm90aGVyIG9uZSB3aXRob3V0IHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzaW9uMyA9IHN0YXRzWydzZXNzaW9uJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc2Vzc2lvbjMuaWQsIHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlc3Npb24zLCBzZXNzaW9uKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAxKQorCisgICAgICAgICAgICAjIHJldXNlIHNlc3Npb24gYWdhaW4KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgc2Vzc2lvbj1zZXNzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjQgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb240LmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uNCwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb240LnRpbWUsIHNlc3Npb24udGltZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb240LnRpbWVvdXQsIHNlc3Npb24udGltZW91dCkKKyAgICAgICAgICAgIHNlc3Nfc3RhdCA9IHNlcnZlcl9jb250ZXh0LnNlc3Npb25fc3RhdHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2FjY2VwdCddLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2hpdHMnXSwgMikKKworICAgICAgICBkZWYgdGVzdF9zZXNzaW9uX2hhbmRsaW5nKHNlbGYpOgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisKKyAgICAgICAgICAgIGNvbnRleHQyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGNvbnRleHQyLnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQyLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQyLmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKworICAgICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9Y29udGV4dCwgY2hhdHR5PUZhbHNlKQorICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIyBzZXNzaW9uIGlzIE5vbmUgYmVmb3JlIGhhbmRzaGFrZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbiwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb25fcmV1c2VkLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IHMuc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZS5leGNlcHRpb24pLCAnVmFsdWUgaXMgbm90IGEgU1NMU2Vzc2lvbi4nKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZS4nKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIyBjYW4gc2V0IHNlc3Npb24gYmVmb3JlIGhhbmRzaGFrZSBhbmQgYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAjIGNvbm5lY3Rpb24gd2FzIGVzdGFibGlzaGVkCisgICAgICAgICAgICAgICAgICAgIHMuc2Vzc2lvbiA9IHNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbiwgc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb25fcmV1c2VkLCBUcnVlKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0Mi53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHJlLXVzZSBzZXNzaW9uIHdpdGggYSBkaWZmZXJlbnQgU1NMQ29udGV4dAorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTZXNzaW9uIHJlZmVycyB0byBhIGRpZmZlcmVudCBTU0xDb250ZXh0LicpCisKIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CkBAIC0zNDAwLDcgKzM1ODUsNyBAQAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICApCkBAIC0zNDIyLDE4ICszNjA3LDIwIEBACiAgICAgICAgICAgICBwYXNzCiAKICAgICBmb3IgZmlsZW5hbWUgaW4gWwotICAgICAgICBDRVJURklMRSwgUkVNT1RFX1JPT1RfQ0VSVCwgQllURVNfQ0VSVEZJTEUsCisgICAgICAgIENFUlRGSUxFLCBCWVRFU19DRVJURklMRSwKICAgICAgICAgT05MWUNFUlQsIE9OTFlLRVksIEJZVEVTX09OTFlDRVJULCBCWVRFU19PTkxZS0VZLAogICAgICAgICBTSUdORURfQ0VSVEZJTEUsIFNJR05FRF9DRVJURklMRTIsIFNJR05JTkdfQ0EsCiAgICAgICAgIEJBRENFUlQsIEJBREtFWSwgRU1QVFlDRVJUXToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBjZXJ0aWZpY2F0ZSBmaWxlICVyIiAlIGZpbGVuYW1lKQogCi0gICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0c10KKyAgICB0ZXN0cyA9IFsKKyAgICAgICAgQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0cywKKyAgICAgICAgU2ltcGxlQmFja2dyb3VuZFRlc3RzLAorICAgIF0KIAogICAgIGlmIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkVGVzdHMpCi0gICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRCSU9UZXN0cykKIAogICAgIGlmIF9oYXZlX3RocmVhZHM6CiAgICAgICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5CmluZGV4IDAwODlhZTguLjRiM2ZkMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXRpc3RpY3MucHkKQEAgLTIxLDYgKzIxLDEwIEBACiAKICMgPT09IEhlbHBlciBmdW5jdGlvbnMgYW5kIGNsYXNzID09PQogCitkZWYgc2lnbih4KToKKyAgICAiIiJSZXR1cm4gLTEuMCBmb3IgbmVnYXRpdmVzLCBpbmNsdWRpbmcgLTAuMCwgb3RoZXJ3aXNlICsxLjAuIiIiCisgICAgcmV0dXJuIG1hdGguY29weXNpZ24oMSwgeCkKKwogZGVmIF9uYW5fZXF1YWwoYSwgYik6CiAgICAgIiIiUmV0dXJuIFRydWUgaWYgYSBhbmQgYiBhcmUgYm90aCB0aGUgc2FtZSBraW5kIG9mIE5BTi4KIApAQCAtMjY0LDYgKzI2OCwxMyBAQAogIyA9PT0gVGVzdCB0aGUgaGVscGVycyA9PT0KICMgPT09PT09PT09PT09PT09PT09PT09PT09CiAKK2NsYXNzIFRlc3RTaWduKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoYXQgdGhlIGhlbHBlciBmdW5jdGlvbiBzaWduKCkgd29ya3MgY29ycmVjdGx5LiIiIgorICAgIGRlZiB0ZXN0WmVyb2VzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBzaWduZWQgemVyb2VzIHJlcG9ydCB0aGVpciBzaWduIGNvcnJlY3RseS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduKDAuMCksICsxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ24oLTAuMCksIC0xKQorCiAKICMgLS0tIFRlc3RzIGZvciBhcHByb3hfZXF1YWwgLS0tCiAKQEAgLTY1OSw3ICs2NzAsNyBAQAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PTyBhbmQgYWJvdmUiKQogICAgIGRlZiB0ZXN0X2RvY190ZXN0cyhzZWxmKToKLSAgICAgICAgZmFpbGVkLCB0cmllZCA9IGRvY3Rlc3QudGVzdG1vZChzdGF0aXN0aWNzKQorICAgICAgICBmYWlsZWQsIHRyaWVkID0gZG9jdGVzdC50ZXN0bW9kKHN0YXRpc3RpY3MsIG9wdGlvbmZsYWdzPWRvY3Rlc3QuRUxMSVBTSVMpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih0cmllZCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYWlsZWQsIDApCiAKQEAgLTcwMiw5ICs3MTMsOSBAQAogICAgIGRlZiB0ZXN0X2RlY2ltYWwoc2VsZik6CiAgICAgICAgIEQgPSBEZWNpbWFsCiAgICAgICAgIF9leGFjdF9yYXRpbyA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjAuMTI1IikpLCAoMTI1LCAxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXhhY3RfcmF0aW8oRCgiMTIuMzQ1IikpLCAoMTIzNDUsIDEwMDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCItMS45OCIpKSwgKC0xOTgsIDEwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjAuMTI1IikpLCAoMSwgOCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjEyLjM0NSIpKSwgKDI0NjksIDIwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIi0xLjk4IikpLCAoLTk5LCA1MCkpCiAKICAgICBkZWYgdGVzdF9pbmYoc2VsZik6CiAgICAgICAgIElORiA9IGZsb2F0KCJJTkYiKQpAQCAtNzQzLDE4ICs3NTQsMTggQEAKIAogCiBjbGFzcyBEZWNpbWFsVG9SYXRpb1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgVGVzdCBfZGVjaW1hbF90b19yYXRpbyBwcml2YXRlIGZ1bmN0aW9uLgorICAgICMgVGVzdCBfZXhhY3RfcmF0aW8gcHJpdmF0ZSBmdW5jdGlvbi4KIAogICAgIGRlZiB0ZXN0X2luZmluaXR5KHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBJTkZzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KICAgICAgICAgaW5mID0gRGVjaW1hbCgnSU5GJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKGluZiksIChpbmYsIE5vbmUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oLWluZiksICgtaW5mLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhpbmYpLCAoaW5mLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9leGFjdF9yYXRpbygtaW5mKSwgKC1pbmYsIE5vbmUpKQogCiAgICAgZGVmIHRlc3RfbmFuKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBOQU5zIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KICAgICAgICAgZm9yIG5hbiBpbiAoRGVjaW1hbCgnTkFOJyksIERlY2ltYWwoJ3NOQU4nKSk6Ci0gICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8obmFuKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhuYW4pCiAgICAgICAgICAgICAjIEJlY2F1c2UgTkFOcyBhbHdheXMgY29tcGFyZSBub24tZXF1YWwsIHdlIGNhbm5vdCB1c2UgYXNzZXJ0RXF1YWwuCiAgICAgICAgICAgICAjIE5vciBjYW4gd2UgdXNlIGFuIGlkZW50aXR5IHRlc3QsIGFzIHdlIGRvbid0IGd1YXJhbnRlZSBhbnl0aGluZwogICAgICAgICAgICAgIyBhYm91dCB0aGUgb2JqZWN0IGlkZW50aXR5LgpAQCAtNzY3LDMwICs3NzgsMzAgQEAKICAgICAgICAgZm9yIGQgaW4gbnVtYmVyczoKICAgICAgICAgICAgICMgRmlyc3QgdGVzdCBwb3NpdGl2ZSBkZWNpbWFscy4KICAgICAgICAgICAgIGFzc2VydCBkID4gMAotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKGQpCisgICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKGQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChudW0sIDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZGVuLCAwKQogICAgICAgICAgICAgIyBUaGVuIHRlc3QgbmVnYXRpdmUgZGVjaW1hbHMuCi0gICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oLWQpCisgICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKC1kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobnVtLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbiwgMCkKIAogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2V4cG9uZW50KHNlbGYpOgogICAgICAgICAjIFRlc3QgcmVzdWx0IHdoZW4gdGhlIGV4cG9uZW50IGlzIG5lZ2F0aXZlLgotICAgICAgICB0ID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhEZWNpbWFsKCIwLjEyMzQiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTIzNCwgMTAwMDApKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMC4xMjM0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDYxNywgNTAwMCkpCiAKICAgICBkZWYgdGVzdF9wb3NpdGl2ZV9leHBvbmVudChzZWxmKToKICAgICAgICAgIyBUZXN0IHJlc3VsdHMgd2hlbiB0aGUgZXhwb25lbnQgaXMgcG9zaXRpdmUuCi0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjEuMjM0ZTciKSkKKyAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKERlY2ltYWwoIjEuMjM0ZTciKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTIzNDAwMDAsIDEpKQogCiAgICAgZGVmIHRlc3RfcmVncmVzc2lvbl8yMDUzNihzZWxmKToKICAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlIDIwNTM2LgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjA1MzYKLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMWUyIikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxZTIiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTAwLCAxKSkKLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMS40N2U1IikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxLjQ3ZTUiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTQ3MDAwLCAxKSkKIAogCkBAIC05NzEsNiArOTgyLDM0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoX25hbl9lcXVhbCh4LCBuYW4pKQogCiAKK2NsYXNzIEZhaWxOZWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IF9mYWlsX25lZyBwcml2YXRlIGZ1bmN0aW9uLiIiIgorCisgICAgZGVmIHRlc3RfcGFzc190aHJvdWdoKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZC4KKyAgICAgICAgdmFsdWVzID0gWzEsIDIuMCwgRnJhY3Rpb24oMyksIERlY2ltYWwoNCldCisgICAgICAgIG5ldyA9IGxpc3Qoc3RhdGlzdGljcy5fZmFpbF9uZWcodmFsdWVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZXMsIG5ldykKKworICAgIGRlZiB0ZXN0X25lZ2F0aXZlc19yYWlzZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgbmVnYXRpdmVzIHJhaXNlIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgZm9yIHggaW4gWzEsIDIuMCwgRnJhY3Rpb24oMyksIERlY2ltYWwoNCldOgorICAgICAgICAgICAgc2VxID0gWy14XQorICAgICAgICAgICAgaXQgPSBzdGF0aXN0aWNzLl9mYWlsX25lZyhzZXEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvciwgbmV4dCwgaXQpCisKKyAgICBkZWYgdGVzdF9lcnJvcl9tc2coc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgZ2l2ZW4gZXJyb3IgbWVzc2FnZSBpcyB1c2VkLgorICAgICAgICBtc2cgPSAiYmFkbmVzcyAjJWQiICUgcmFuZG9tLnJhbmRpbnQoMTAwMDAsIDk5OTk5KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KHN0YXRpc3RpY3MuX2ZhaWxfbmVnKFstMV0sIG1zZykpCisgICAgICAgIGV4Y2VwdCBzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvciBhcyBlOgorICAgICAgICAgICAgZXJybXNnID0gZS5hcmdzWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoImV4cGVjdGVkIGV4Y2VwdGlvbiwgYnV0IGl0IGRpZG4ndCBoYXBwZW4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm1zZywgbXNnKQorCisKICMgPT09IFRlc3RzIGZvciBwdWJsaWMgZnVuY3Rpb25zID09PQogCiBjbGFzcyBVbml2YXJpYXRlQ29tbW9uTWl4aW46CkBAIC0xMDgyLDEzICsxMTIxLDEzIEBACiAgICAgTm90IGFsbCB0ZXN0cyB0byBkbyB3aXRoIHR5cGVzIG5lZWQgZ28gaW4gdGhpcyBjbGFzcy4gT25seSB0aG9zZSB0aGF0CiAgICAgcmVseSBvbiB0aGUgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBzYW1lIHR5cGUgYXMgaXRzIGlucHV0IGRhdGEuCiAgICAgIiIiCi0gICAgZGVmIHRlc3RfdHlwZXNfY29uc2VydmVkKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBmdW5jdGlvbnMga2VlcHMgdGhlIHNhbWUgdHlwZSBhcyB0aGVpciBkYXRhIHBvaW50cy4KLSAgICAgICAgIyAoRXhjbHVkZXMgbWl4ZWQgZGF0YSB0eXBlcy4pIFRoaXMgb25seSB0ZXN0cyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuCi0gICAgICAgICMgcmVzdWx0LCBub3QgdGhlIHZhbHVlLgorICAgIGRlZiBwcmVwYXJlX3R5cGVzX2Zvcl9jb25zZXJ2YXRpb25fdGVzdChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB0eXBlcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gYmUgY29uc2VydmVkLiIiIgogICAgICAgICBjbGFzcyBNeUZsb2F0KGZsb2F0KToKICAgICAgICAgICAgIGRlZiBfX3RydWVkaXZfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3RydWVkaXZfXyhvdGhlcikpCisgICAgICAgICAgICBkZWYgX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZShzZWxmKShzdXBlcigpLl9fcnRydWVkaXZfXyhvdGhlcikpCiAgICAgICAgICAgICBkZWYgX19zdWJfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3N1Yl9fKG90aGVyKSkKICAgICAgICAgICAgIGRlZiBfX3JzdWJfXyhzZWxmLCBvdGhlcik6CkBAIC0xMDk4LDkgKzExMzcsMTQgQEAKICAgICAgICAgICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZShzZWxmKShzdXBlcigpLl9fYWRkX18ob3RoZXIpKQogICAgICAgICAgICAgX19yYWRkX18gPSBfX2FkZF9fCisgICAgICAgIHJldHVybiAoZmxvYXQsIERlY2ltYWwsIEZyYWN0aW9uLCBNeUZsb2F0KQogCisgICAgZGVmIHRlc3RfdHlwZXNfY29uc2VydmVkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBmdW5jdGlvbnMga2VlcHMgdGhlIHNhbWUgdHlwZSBhcyB0aGVpciBkYXRhIHBvaW50cy4KKyAgICAgICAgIyAoRXhjbHVkZXMgbWl4ZWQgZGF0YSB0eXBlcy4pIFRoaXMgb25seSB0ZXN0cyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuCisgICAgICAgICMgcmVzdWx0LCBub3QgdGhlIHZhbHVlLgogICAgICAgICBkYXRhID0gc2VsZi5wcmVwYXJlX2RhdGEoKQotICAgICAgICBmb3Iga2luZCBpbiAoZmxvYXQsIERlY2ltYWwsIEZyYWN0aW9uLCBNeUZsb2F0KToKKyAgICAgICAgZm9yIGtpbmQgaW4gc2VsZi5wcmVwYXJlX3R5cGVzX2Zvcl9jb25zZXJ2YXRpb25fdGVzdCgpOgogICAgICAgICAgICAgZCA9IFtraW5kKHgpIGZvciB4IGluIGRhdGFdCiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmZ1bmMoZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyZXN1bHQpLCBraW5kKQpAQCAtMTI3NSwxMiArMTMxOSwxNiBAQAogICAgICAgICBmb3IgeCBpbiAoMjMsIDQyLjUsIDEuM2UxNSwgRnJhY3Rpb24oMTUsIDE5KSwgRGVjaW1hbCgnMC4yOCcpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFt4XSksIHgpCiAKKyAgICBkZWYgcHJlcGFyZV92YWx1ZXNfZm9yX3JlcGVhdGVkX3NpbmdsZV90ZXN0KHNlbGYpOgorICAgICAgICByZXR1cm4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC45NzEyJykpCisKICAgICBkZWYgdGVzdF9yZXBlYXRlZF9zaW5nbGVfdmFsdWUoc2VsZik6CiAgICAgICAgICMgVGhlIGF2ZXJhZ2Ugb2YgYSBzaW5nbGUgcmVwZWF0ZWQgdmFsdWUgaXMgdGhlIHZhbHVlIGl0c2VsZi4KLSAgICAgICAgZm9yIHggaW4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC45NzEyJykpOgorICAgICAgICBmb3IgeCBpbiBzZWxmLnByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdCgpOgogICAgICAgICAgICAgZm9yIGNvdW50IGluICgyLCA1LCAxMCwgMjApOgotICAgICAgICAgICAgICAgIGRhdGEgPSBbeF0qY291bnQKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgeCkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh4PXgsIGNvdW50PWNvdW50KToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IFt4XSpjb3VudAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgeCkKIAogCiBjbGFzcyBUZXN0TWVhbihOdW1lcmljVGVzdENhc2UsIEF2ZXJhZ2VNaXhpbiwgVW5pdmFyaWF0ZVR5cGVNaXhpbik6CkBAIC0xMzA0LDcgKzEzNTIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgMjIuMDE1NjI1KQogCiAgICAgZGVmIHRlc3RfZGVjaW1hbHMoc2VsZik6Ci0gICAgICAgICMgVGVzdCBtZWFuIHdpdGggaW50cy4KKyAgICAgICAgIyBUZXN0IG1lYW4gd2l0aCBEZWNpbWFscy4KICAgICAgICAgRCA9IERlY2ltYWwKICAgICAgICAgZGF0YSA9IFtEKCIxLjYzNCIpLCBEKCIyLjUxNyIpLCBEKCIzLjkxMiIpLCBEKCI0LjA3MiIpLCBEKCI1LjgxMyIpXQogICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQpAQCAtMTM3OSw2ICsxNDI3LDk0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRpc3RpY3MubWVhbihbdGlueV0qbiksIHRpbnkpCiAKIAorY2xhc3MgVGVzdEhhcm1vbmljTWVhbihOdW1lcmljVGVzdENhc2UsIEF2ZXJhZ2VNaXhpbiwgVW5pdmFyaWF0ZVR5cGVNaXhpbik6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZ1bmMgPSBzdGF0aXN0aWNzLmhhcm1vbmljX21lYW4KKworICAgIGRlZiBwcmVwYXJlX2RhdGEoc2VsZik6CisgICAgICAgICMgT3ZlcnJpZGUgbWl4aW4gbWV0aG9kLgorICAgICAgICB2YWx1ZXMgPSBzdXBlcigpLnByZXBhcmVfZGF0YSgpCisgICAgICAgIHZhbHVlcy5yZW1vdmUoMCkKKyAgICAgICAgcmV0dXJuIHZhbHVlcworCisgICAgZGVmIHByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdChzZWxmKToKKyAgICAgICAgIyBPdmVycmlkZSBtaXhpbiBtZXRob2QuCisgICAgICAgIHJldHVybiAoMy41LCAxNywgMi41ZTE1LCBGcmFjdGlvbig2MSwgNjcpLCBEZWNpbWFsKCc0LjEyNScpKQorCisgICAgZGVmIHRlc3RfemVybyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgaGFybW9uaWMgbWVhbiByZXR1cm5zIHplcm8gd2hlbiBnaXZlbiB6ZXJvLgorICAgICAgICB2YWx1ZXMgPSBbMSwgMCwgMl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmModmFsdWVzKSwgMCkKKworICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2Vycm9yKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBoYXJtb25pYyBtZWFuIHJhaXNlcyB3aGVuIGdpdmVuIGEgbmVnYXRpdmUgdmFsdWUuCisgICAgICAgIGV4YyA9IHN0YXRpc3RpY3MuU3RhdGlzdGljc0Vycm9yCisgICAgICAgIGZvciB2YWx1ZXMgaW4gKFstMV0sIFsxLCAtMiwgM10pOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodmFsdWVzPXZhbHVlcyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBzZWxmLmZ1bmMsIHZhbHVlcykKKworICAgIGRlZiB0ZXN0X2ludHMoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggaW50cy4KKyAgICAgICAgZGF0YSA9IFsyLCA0LCA0LCA4LCAxNiwgMTZdCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCA2KjQvNSkKKworICAgIGRlZiB0ZXN0X2Zsb2F0c19leGFjdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBzb21lIGNhcmVmdWxseSBjaG9zZW4gZmxvYXRzLgorICAgICAgICBkYXRhID0gWzEvOCwgMS80LCAxLzQsIDEvMiwgMS8yXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgMS80KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhbMC4yNSwgMC41LCAxLjAsIDEuMF0pLCAwLjUpCisKKyAgICBkZWYgdGVzdF9zaW5nbGV0b25fbGlzdHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGhhcm1vbmljIG1lYW4oW3hdKSByZXR1cm5zIChhcHByb3hpbWF0ZWx5KSB4LgorICAgICAgICBmb3IgeCBpbiByYW5nZSgxLCAxMDEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoW3hdKSwgeCkKKworICAgIGRlZiB0ZXN0X2RlY2ltYWxzX2V4YWN0KHNlbGYpOgorICAgICAgICAjIFRlc3QgaGFybW9uaWMgbWVhbiB3aXRoIHNvbWUgY2FyZWZ1bGx5IGNob3NlbiBEZWNpbWFscy4KKyAgICAgICAgRCA9IERlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoW0QoMTUpLCBEKDMwKSwgRCg2MCksIEQoNjApXSksIEQoMzApKQorICAgICAgICBkYXRhID0gW0QoIjAuMDUiKSwgRCgiMC4xMCIpLCBEKCIwLjIwIiksIEQoIjAuMjAiKV0KKyAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIEQoIjAuMTAiKSkKKyAgICAgICAgZGF0YSA9IFtEKCIxLjY4IiksIEQoIjAuMzIiKSwgRCgiNS45NCIpLCBEKCIyLjc1IildCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBEKDY2NTI4KS83MDcyMykKKworICAgIGRlZiB0ZXN0X2ZyYWN0aW9ucyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBGcmFjdGlvbnMuCisgICAgICAgIEYgPSBGcmFjdGlvbgorICAgICAgICBkYXRhID0gW0YoMSwgMiksIEYoMiwgMyksIEYoMywgNCksIEYoNCwgNSksIEYoNSwgNiksIEYoNiwgNyksIEYoNywgOCldCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBGKDcqNDIwLCA0MDI5KSkKKworICAgIGRlZiB0ZXN0X2luZihzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBpbmZpbml0eS4KKyAgICAgICAgdmFsdWVzID0gWzIuMCwgZmxvYXQoJ2luZicpLCAxLjBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKHZhbHVlcyksIDIuMCkKKworICAgIGRlZiB0ZXN0X25hbihzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBOQU5zLgorICAgICAgICB2YWx1ZXMgPSBbMi4wLCBmbG9hdCgnbmFuJyksIDEuMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oc2VsZi5mdW5jKHZhbHVlcykpKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbHlfZGF0YV9wb2ludHMoc2VsZik6CisgICAgICAgICMgVGVzdCBtdWx0aXBseWluZyBldmVyeSBkYXRhIHBvaW50IGJ5IGEgY29uc3RhbnQuCisgICAgICAgIGMgPSAxMTEKKyAgICAgICAgZGF0YSA9IFszLjQsIDQuNSwgNC45LCA2LjcsIDYuOCwgNy4yLCA4LjAsIDguMSwgOS40XQorICAgICAgICBleHBlY3RlZCA9IHNlbGYuZnVuYyhkYXRhKSpjCisgICAgICAgIHJlc3VsdCA9IHNlbGYuZnVuYyhbeCpjIGZvciB4IGluIGRhdGFdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9kb3VibGVkX2RhdGEoc2VsZik6CisgICAgICAgICMgSGFybW9uaWMgbWVhbiBvZiBbYSxiLi4uel0gc2hvdWxkIGJlIHNhbWUgYXMgZm9yIFthLGEsYixiLi4ueix6XS4KKyAgICAgICAgZGF0YSA9IFtyYW5kb20udW5pZm9ybSgxLCA1KSBmb3IgXyBpbiByYW5nZSgxMDAwKV0KKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLmZ1bmMoZGF0YSkKKyAgICAgICAgYWN0dWFsID0gc2VsZi5mdW5jKGRhdGEqMikKKyAgICAgICAgc2VsZi5hc3NlcnRBcHByb3hFcXVhbChhY3R1YWwsIGV4cGVjdGVkKQorCisKIGNsYXNzIFRlc3RNZWRpYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4pOgogICAgICMgQ29tbW9uIHRlc3RzIGZvciBtZWRpYW4gYW5kIGFsbCBtZWRpYW4uKiBmdW5jdGlvbnMuCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTYwMCw2ICsxNzM2LDIyIEBACiAgICAgICAgIGRhdGEgPSBbMjIwLCAyMjAsIDI0MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyODAsIDI4MCwgMzAwLCAzMjAsIDM0MF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSwgMjApLCAyNjUuMCkKIAorICAgIGRlZiB0ZXN0X2RhdGFfdHlwZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IG1lZGlhbl9ncm91cGVkIHdpdGggc3RyLCBieXRlcyBkYXRhIHR5cGVzIGZvciBkYXRhIGFuZCBpbnRlcnZhbAorICAgICAgICBkYXRhID0gWyIiLCAiIiwgIiJdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhKQorICAgICAgICAjLS0tCisgICAgICAgIGRhdGEgPSBbYiIiLCBiIiIsIGIiIl0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZ1bmMsIGRhdGEpCisgICAgICAgICMtLS0KKyAgICAgICAgZGF0YSA9IFsxLCAyLCAzXQorICAgICAgICBpbnRlcnZhbCA9ICIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhLCBpbnRlcnZhbCkKKyAgICAgICAgIy0tLQorICAgICAgICBkYXRhID0gWzEsIDIsIDNdCisgICAgICAgIGludGVydmFsID0gYiIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhLCBpbnRlcnZhbCkKKwogCiBjbGFzcyBUZXN0TW9kZShOdW1lcmljVGVzdENhc2UsIEF2ZXJhZ2VNaXhpbiwgVW5pdmFyaWF0ZVR5cGVNaXhpbik6CiAgICAgIyBUZXN0IGNhc2VzIGZvciB0aGUgZGlzY3JldGUgdmVyc2lvbiBvZiBtb2RlLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkKaW5kZXggNzcyY2QwNi4uNzJiMTkxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmZ0aW1lLnB5CkBAIC0yMyw5ICsyMyw5IEBACiAgICAgIiIiCiAgICAgbmV3X3RleHQgPSByZS5lc2NhcGUodGV4dCkKICAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocmUuZXNjYXBlKGFtcG0pLCBhbXBtKQotICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZSgnXCUnLCAnJScpCi0gICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKCdcOicsICc6JykKLSAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UoJ1w/JywgJz8nKQorICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZShyJ1wlJywgJyUnKQorICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZShyJ1w6JywgJzonKQorICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZShyJ1w/JywgJz8nKQogICAgIHJldHVybiBuZXdfdGV4dAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmdfbGl0ZXJhbHMucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CmluZGV4IDg3Y2ZmZTguLjM3YWNlMjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CkBAIC0xMjEsOSArMTIxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiBiJ1x4MDEnICIiIiksIGJ5dGUoMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGInXHg4MScgIiIiKSwgYnl0ZSgweDgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiJ1x4ODEnICIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYidcdTE4ODEnICIiIiksIGInXFwnICsgYid1MTg4MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGJyJ1x1MTg4MScgIiIiKSwgYidcXCcgKyBiJ3UxODgxJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiJ1x1MTg4MScgIiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBiJ1xVMDAwMWQxMjAnICIiIiksIGInXFwnICsgYidVMDAwMWQxMjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidcVTAwMDFkMTIwJyAiIiIpLCBiJ1xcJyArIGInVTAwMDFkMTIwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiJ1xVMDAwMWQxMjAnICIiIikKIAogICAgIGRlZiB0ZXN0X2V2YWxfYnl0ZXNfaW5jb21wbGV0ZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CmluZGV4IDg1MTI2ZTYuLjIyZWFjMzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBsb2NhbGUKIGltcG9ydCByZQogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUgYXMgZGF0ZXRpbWVfZGF0ZQogCkBAIC0xMzAsNyArMTI5LDcgQEAKICAgICBkZWYgdGVzdF9wYXR0ZXJuX2VzY2FwaW5nKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBhbnkgY2hhcmFjdGVycyBpbiB0aGUgZm9ybWF0IHN0cmluZyB0aGF0IG1pZ2h0IGJlIHRha2VuIGFzCiAgICAgICAgICMgcmVnZXggc3ludGF4IGlzIGVzY2FwZWQuCi0gICAgICAgIHBhdHRlcm5fc3RyaW5nID0gc2VsZi50aW1lX3JlLnBhdHRlcm4oIlxkKyIpCisgICAgICAgIHBhdHRlcm5fc3RyaW5nID0gc2VsZi50aW1lX3JlLnBhdHRlcm4ociJcZCsiKQogICAgICAgICBzZWxmLmFzc2VydEluKHIiXFxkXCsiLCBwYXR0ZXJuX3N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAiJXMgZG9lcyBub3QgaGF2ZSByZSBjaGFyYWN0ZXJzIGVzY2FwZWQgcHJvcGVybHkiICUKICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuX3N0cmluZykKQEAgLTE1Myw4ICsxNTIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIHVzaW5nICclcyc7IGdyb3VwICdhJyA9ICclcycsIGdyb3VwICdiJyA9ICVzJyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIChmb3VuZC5zdHJpbmcsIGZvdW5kLnJlLnBhdHRlcm4sIGZvdW5kLmdyb3VwKCdhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kLmdyb3VwKCdiJykpKQotICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnYScsJ0EnLCdiJywnQicsJ2MnLCdkJywnSCcsJ0knLCdqJywnbScsJ00nLCdwJywnUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdVJywndycsJ1cnLCd4JywnWCcsJ3knLCdZJywnWicsJyUnKToKKyAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ2EnLCdBJywnYicsJ0InLCdjJywnZCcsJ0cnLCdIJywnSScsJ2onLCdtJywnTScsJ3AnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnUycsJ3UnLCdVJywnVicsJ3cnLCdXJywneCcsJ1gnLCd5JywnWScsJ1onLCclJyk6CiAgICAgICAgICAgICBjb21waWxlZCA9IHNlbGYudGltZV9yZS5jb21waWxlKCIlIiArIGRpcmVjdGl2ZSkKICAgICAgICAgICAgIGZvdW5kID0gY29tcGlsZWQubWF0Y2godGltZS5zdHJmdGltZSgiJSIgKyBkaXJlY3RpdmUpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAiTWF0Y2hpbmcgZmFpbGVkIG9uICclcycgdXNpbmcgJyVzJyByZWdleCIgJQpAQCAtMTcxLDkgKzE3MCw5IEBACiAKICAgICBkZWYgdGVzdF9tYXRjaGluZ193aXRoX2VzY2FwZXMoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGEgZm9ybWF0IHRoYXQgcmVxdWlyZXMgZXNjYXBpbmcgb2YgY2hhcmFjdGVycyB3b3JrcwotICAgICAgICBjb21waWxlZF9yZSA9IHNlbGYudGltZV9yZS5jb21waWxlKCJcdysgJW0iKQotICAgICAgICBmb3VuZCA9IGNvbXBpbGVkX3JlLm1hdGNoKCJcdysgMTAiKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICJFc2NhcGluZyBmYWlsZWQgb2YgZm9ybWF0ICdcdysgMTAnIikKKyAgICAgICAgY29tcGlsZWRfcmUgPSBzZWxmLnRpbWVfcmUuY29tcGlsZShyIlx3KyAlbSIpCisgICAgICAgIGZvdW5kID0gY29tcGlsZWRfcmUubWF0Y2gociJcdysgMTAiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsIHIiRXNjYXBpbmcgZmFpbGVkIG9mIGZvcm1hdCAnXHcrIDEwJyIpCiAKICAgICBkZWYgdGVzdF9sb2NhbGVfZGF0YV93X3JlZ2V4X21ldGFjaGFyYWN0ZXJzKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgaWYgbG9jYWxlIGRhdGEgY29udGFpbnMgcmVnZXggbWV0YWNoYXJhY3RlcnMgdGhleSBhcmUKQEAgLTIxOSw2ICsyMTgsMjYgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCInJXMnIGRpZCBub3QgcmFpc2UgVmFsdWVFcnJvciIgJSBiYWRfZm9ybWF0KQogCisgICAgICAgICMgQW1iaWd1b3VzIG9yIGluY29tcGxldGUgY2FzZXMgdXNpbmcgSVNPIHllYXIvd2Vlay93ZWVrZGF5IGRpcmVjdGl2ZXMKKyAgICAgICAgIyAxLiBJU08gd2VlayAoJVYpIGlzIHNwZWNpZmllZCwgYnV0IHRoZSB5ZWFyIGlzIHNwZWNpZmllZCB3aXRoICVZCisgICAgICAgICMgaW5zdGVhZCBvZiAlRworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMTk5OSA1MCIsICIlWSAlViIpCisgICAgICAgICMgMi4gSVNPIHllYXIgKCVHKSBhbmQgSVNPIHdlZWsgKCVWKSBhcmUgc3BlY2lmaWVkLCBidXQgd2Vla2RheSBpcyBub3QKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgNTEiLCAiJUcgJVYiKQorICAgICAgICAjIDMuIElTTyB5ZWFyICglRykgYW5kIHdlZWtkYXkgYXJlIHNwZWNpZmllZCwgYnV0IElTTyB3ZWVrICglVikgaXMgbm90CisgICAgICAgIGZvciB3IGluICgnQScsICdhJywgJ3cnLCAndScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDUxIiwiJUcgJXt9Ii5mb3JtYXQodykpCisgICAgICAgICMgNC4gSVNPIHllYXIgaXMgc3BlY2lmaWVkIGFsb25lIChlLmcuIHRpbWUuc3RycHRpbWUoJzIwMTUnLCAnJUcnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjIwMTUiLCAiJUciKQorICAgICAgICAjIDUuIEp1bGlhbi9vcmRpbmFsIGRheSAoJWopIGlzIHNwZWNpZmllZCB3aXRoICVHLCBidXQgbm90ICVZCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDI1NiIsICIlRyAlaiIpCisKKwogICAgIGRlZiB0ZXN0X3N0cnB0aW1lX2V4Y2VwdGlvbl9jb250ZXh0KHNlbGYpOgogICAgICAgICAjIGNoZWNrIHRoYXQgdGhpcyBkb2Vzbid0IGNoYWluIGV4Y2VwdGlvbnMgbmVlZGxlc3NseSAoc2VlICMxNzU3MikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgpAQCAtMjkwLDcgKzMwOSw3IEBACiAKICAgICBkZWYgdGVzdF93ZWVrZGF5KHNlbGYpOgogICAgICAgICAjIFRlc3Qgd2Vla2RheSBkaXJlY3RpdmVzCi0gICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdBJywgJ2EnLCAndycpOgorICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnQScsICdhJywgJ3cnLCAndScpOgogICAgICAgICAgICAgc2VsZi5oZWxwZXIoZGlyZWN0aXZlLDYpCiAKICAgICBkZWYgdGVzdF9qdWxpYW4oc2VsZik6CkBAIC0zODQsNyArNDAzLDcgQEAKICAgICAgICAgIyB1bmJhbGFuY2VkIHBhcmVudGhlc2VzIHdoZW4gdGhlIHJlZ2V4IGlzIGNvbXBpbGVkIGlmIHRoZXkgYXJlIG5vdAogICAgICAgICAjIGVzY2FwZWQuCiAgICAgICAgICMgVGVzdCBpbnN0aWdhdGVkIGJ5IGJ1ZyAjNzk2MTQ5IC4KLSAgICAgICAgbmVlZF9lc2NhcGluZyA9ICIuXiQqKz97fVxbXXwpKCIKKyAgICAgICAgbmVlZF9lc2NhcGluZyA9IHIiLl4kKis/e31cW118KSgiCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUobmVlZF9lc2NhcGluZywgbmVlZF9lc2NhcGluZykpCiAKICAgICBkZWYgdGVzdF9mZWIyOV9vbl9sZWFwX3llYXJfd2l0aG91dF95ZWFyKHNlbGYpOgpAQCAtNDU3LDE2ICs0NzYsMjAgQEAKICAgICAgICAgIyBTaG91bGQgYmUgYWJsZSB0byBpbmZlciBkYXRlIGlmIGdpdmVuIHllYXIsIHdlZWsgb2YgeWVhciAoJVUgb3IgJVcpCiAgICAgICAgICMgYW5kIGRheSBvZiB0aGUgd2VlawogICAgICAgICBkZWYgdGVzdF9oZWxwZXIoeW1kX3R1cGxlLCB0ZXN0X3JlYXNvbik6Ci0gICAgICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnVycsICdVJyk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9ICIlJVkgJSUlcyAlJXciICUgZGlyZWN0aXZlCi0gICAgICAgICAgICAgICAgZHRfZGF0ZSA9IGRhdGV0aW1lX2RhdGUoKnltZF90dXBsZSkKLSAgICAgICAgICAgICAgICBzdHJwX2lucHV0ID0gZHRfZGF0ZS5zdHJmdGltZShmb3JtYXRfc3RyaW5nKQotICAgICAgICAgICAgICAgIHN0cnBfb3V0cHV0ID0gX3N0cnB0aW1lLl9zdHJwdGltZV90aW1lKHN0cnBfaW5wdXQsIGZvcm1hdF9zdHJpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0cnBfb3V0cHV0WzozXSA9PSB5bWRfdHVwbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJXMoJXMpIHRlc3QgZmFpbGVkIHcvICclcyc6ICVzICE9ICVzICglcyAhPSAlcykiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9yZWFzb24sIGRpcmVjdGl2ZSwgc3RycF9pbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbOjNdLCB5bWRfdHVwbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnBfb3V0cHV0WzddLCBkdF9kYXRlLnRpbWV0dXBsZSgpWzddKSkKKyAgICAgICAgICAgIGZvciB5ZWFyX3dlZWtfZm9ybWF0IGluICgnJVkgJVcnLCAnJVkgJVUnLCAnJUcgJVYnKToKKyAgICAgICAgICAgICAgICBmb3Igd2Vla2RheV9mb3JtYXQgaW4gKCcldycsICcldScsICclYScsICclQScpOgorICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3RyaW5nID0geWVhcl93ZWVrX2Zvcm1hdCArICcgJyArIHdlZWtkYXlfZm9ybWF0CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHRlc3RfcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlPXltZF90dXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWZvcm1hdF9zdHJpbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgZHRfZGF0ZSA9IGRhdGV0aW1lX2RhdGUoKnltZF90dXBsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnBfaW5wdXQgPSBkdF9kYXRlLnN0cmZ0aW1lKGZvcm1hdF9zdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dCA9IF9zdHJwdGltZS5fc3RycHRpbWVfdGltZShzdHJwX2lucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICIlcjogJXMgIT0gJXMiICUgKHN0cnBfaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dFs3XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0X2RhdGUudGltZXR1cGxlKClbN10pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cnBfb3V0cHV0WzozXSwgeW1kX3R1cGxlLCBtc2cpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCAzKSwgIndlZWsgMCIpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCA4KSwgImNvbW1vbiBjYXNlIikKICAgICAgICAgdGVzdF9oZWxwZXIoKDE5MDEsIDEsIDEzKSwgImRheSBvbiBTdW5kYXkiKQpAQCAtNDk4LDMzICs1MjEsNDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3N0cnB0aW1lLl9zdHJwdGltZV90aW1lKHZhbHVlLCBmb3JtYXQpWzotMV0sIGV4cGVjdGVkKQogICAgICAgICBjaGVjaygnMjAxNSAwIDAnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMjgsIDAsIDAsIDAsIDYsIDM2MikKICAgICAgICAgY2hlY2soJzIwMTUgMCAwJywgJyVZICVXICV3JywgMjAxNSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKKyAgICAgICAgY2hlY2soJzIwMTUgMSAxJywgJyVHICVWICV1JywgMjAxNCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMScsICclWSAlVSAldycsIDIwMTQsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzYzKQogICAgICAgICBjaGVjaygnMjAxNSAwIDEnLCAnJVkgJVcgJXcnLCAyMDE0LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2MykKKyAgICAgICAgY2hlY2soJzIwMTUgMSAyJywgJyVHICVWICV1JywgMjAxNCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjQpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMicsICclWSAlVSAldycsIDIwMTQsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY0KQogICAgICAgICBjaGVjaygnMjAxNSAwIDInLCAnJVkgJVcgJXcnLCAyMDE0LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NCkKKyAgICAgICAgY2hlY2soJzIwMTUgMSAzJywgJyVHICVWICV1JywgMjAxNCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjUpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMycsICclWSAlVSAldycsIDIwMTQsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY1KQogICAgICAgICBjaGVjaygnMjAxNSAwIDMnLCAnJVkgJVcgJXcnLCAyMDE0LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NSkKKyAgICAgICAgY2hlY2soJzIwMTUgMSA0JywgJyVHICVWICV1JywgMjAxNSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMTUgMCA0JywgJyVZICVVICV3JywgMjAxNSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMTUgMCA0JywgJyVZICVXICV3JywgMjAxNSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKKyAgICAgICAgY2hlY2soJzIwMTUgMSA1JywgJyVHICVWICV1JywgMjAxNSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMTUgMCA1JywgJyVZICVVICV3JywgMjAxNSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMTUgMCA1JywgJyVZICVXICV3JywgMjAxNSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKKyAgICAgICAgY2hlY2soJzIwMTUgMSA2JywgJyVHICVWICV1JywgMjAxNSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMTUgMCA2JywgJyVZICVVICV3JywgMjAxNSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMTUgMCA2JywgJyVZICVXICV3JywgMjAxNSwgMSwgMywgMCwgMCwgMCwgNSwgMykKKyAgICAgICAgY2hlY2soJzIwMTUgMSA3JywgJyVHICVWICV1JywgMjAxNSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKIAogICAgICAgICBjaGVjaygnMjAwOSAwIDAnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMjgsIDAsIDAsIDAsIDYsIDM2MykKICAgICAgICAgY2hlY2soJzIwMDkgMCAwJywgJyVZICVXICV3JywgMjAwOSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKKyAgICAgICAgY2hlY2soJzIwMDkgMSAxJywgJyVHICVWICV1JywgMjAwOCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjQpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMScsICclWSAlVSAldycsIDIwMDgsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzY0KQogICAgICAgICBjaGVjaygnMjAwOSAwIDEnLCAnJVkgJVcgJXcnLCAyMDA4LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2NCkKKyAgICAgICAgY2hlY2soJzIwMDkgMSAyJywgJyVHICVWICV1JywgMjAwOCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjUpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMicsICclWSAlVSAldycsIDIwMDgsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY1KQogICAgICAgICBjaGVjaygnMjAwOSAwIDInLCAnJVkgJVcgJXcnLCAyMDA4LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NSkKKyAgICAgICAgY2hlY2soJzIwMDkgMSAzJywgJyVHICVWICV1JywgMjAwOCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjYpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMycsICclWSAlVSAldycsIDIwMDgsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY2KQogICAgICAgICBjaGVjaygnMjAwOSAwIDMnLCAnJVkgJVcgJXcnLCAyMDA4LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NikKKyAgICAgICAgY2hlY2soJzIwMDkgMSA0JywgJyVHICVWICV1JywgMjAwOSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMDkgMCA0JywgJyVZICVVICV3JywgMjAwOSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMDkgMCA0JywgJyVZICVXICV3JywgMjAwOSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKKyAgICAgICAgY2hlY2soJzIwMDkgMSA1JywgJyVHICVWICV1JywgMjAwOSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMDkgMCA1JywgJyVZICVVICV3JywgMjAwOSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMDkgMCA1JywgJyVZICVXICV3JywgMjAwOSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKKyAgICAgICAgY2hlY2soJzIwMDkgMSA2JywgJyVHICVWICV1JywgMjAwOSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMDkgMCA2JywgJyVZICVVICV3JywgMjAwOSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMDkgMCA2JywgJyVZICVXICV3JywgMjAwOSwgMSwgMywgMCwgMCwgMCwgNSwgMykKKyAgICAgICAgY2hlY2soJzIwMDkgMSA3JywgJyVHICVWICV1JywgMjAwOSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKKwogCiBjbGFzcyBDYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoYXQgY2FjaGluZyB3b3JrcyBwcm9wZXJseS4iIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKaW5kZXggZWZiZGJmYy4uNGQ5ZDYwMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKQEAgLTEsNSArMSw2IEBACiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBhYmMKIGltcG9ydCBhcnJheQoraW1wb3J0IG1hdGgKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3RydWN0CkBAIC0xNSwyMiArMTYsMTAgQEAKIGRlZiBpdGVyX2ludGVnZXJfZm9ybWF0cyhieXRlb3JkZXJzPWJ5dGVvcmRlcnMpOgogICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6CiAgICAgICAgIGZvciBieXRlb3JkZXIgaW4gYnl0ZW9yZGVyczoKLSAgICAgICAgICAgIGlmIChieXRlb3JkZXIgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgncScsICdRJykgYW5kCi0gICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBub3QgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgnbicsICdOJykpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICB5aWVsZCBjb2RlLCBieXRlb3JkZXIKIAotIyBOYXRpdmUgJ3EnIHBhY2tpbmcgaXNuJ3QgYXZhaWxhYmxlIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoZSBDCi0jIGxvbmcgbG9uZyB0eXBlLgotdHJ5OgotICAgIHN0cnVjdC5wYWNrKCdxJywgNSkKLWV4Y2VwdCBzdHJ1Y3QuZXJyb3I6Ci0gICAgSEFWRV9MT05HX0xPTkcgPSBGYWxzZQotZWxzZToKLSAgICBIQVZFX0xPTkdfTE9ORyA9IFRydWUKLQogZGVmIHN0cmluZ19yZXZlcnNlKHMpOgogICAgIHJldHVybiBzWzo6LTFdCiAKQEAgLTE1OCw5ICsxNDcsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBleHBlY3RlZF9zaXplW2NvZGVdKQogCiAgICAgICAgICMgbmF0aXZlIGludGVnZXIgc2l6ZXMKLSAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJwotICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKLSAgICAgICAgICAgIG5hdGl2ZV9wYWlycyArPSAncVEnLAorICAgICAgICBuYXRpdmVfcGFpcnMgPSAnYkInLCAnaEgnLCAnaUknLCAnbEwnLCAnbk4nLCAncVEnCiAgICAgICAgIGZvciBmb3JtYXRfcGFpciBpbiBuYXRpdmVfcGFpcnM6CiAgICAgICAgICAgICBmb3IgYnl0ZW9yZGVyIGluICcnLCAnQCc6CiAgICAgICAgICAgICAgICAgc2lnbmVkX3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoYnl0ZW9yZGVyICsgZm9ybWF0X3BhaXJbMF0pCkBAIC0xNzMsOSArMTYwLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoNCwgc3RydWN0LmNhbGNzaXplKCdsJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnaCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ2knKSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdpJyksIHN0cnVjdC5jYWxjc2l6ZSgnbCcpKQotICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDgsIHN0cnVjdC5jYWxjc2l6ZSgncScpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdsJyksIHN0cnVjdC5jYWxjc2l6ZSgncScpKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCg4LCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdsJyksIHN0cnVjdC5jYWxjc2l6ZSgncScpKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbicpLCBzdHJ1Y3QuY2FsY3NpemUoJ1AnKSkKIApAQCAtMzY2LDggKzM1Miw2IEBACiAgICAgICAgICMgU0YgYnVnIDcwNTgzNi4gICI8ZiIgYW5kICI+ZiIgaGFkIGEgc2V2ZXJlIHJvdW5kaW5nIGJ1Zywgd2hlcmUgYSBjYXJyeQogICAgICAgICAjIGZyb20gdGhlIGxvdy1vcmRlciBkaXNjYXJkZWQgYml0cyBjb3VsZCBwcm9wYWdhdGUgaW50byB0aGUgZXhwb25lbnQKICAgICAgICAgIyBmaWVsZCwgY2F1c2luZyB0aGUgcmVzdWx0IHRvIGJlIHdyb25nIGJ5IGEgZmFjdG9yIG9mIDIuCi0gICAgICAgIGltcG9ydCBtYXRoCi0KICAgICAgICAgZm9yIGJhc2UgaW4gcmFuZ2UoMSwgMzMpOgogICAgICAgICAgICAgIyBzbWFsbGVyIDwtIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBmbG9hdCBsZXNzIHRoYW4gYmFzZS4KICAgICAgICAgICAgIGRlbHRhID0gMC41CkBAIC02NTksNiArNjQzLDExMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBpdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCiAKKyAgICBkZWYgdGVzdF9oYWxmX2Zsb2F0KHNlbGYpOgorICAgICAgICAjIExpdHRsZS1lbmRpYW4gZXhhbXBsZXMgZnJvbToKKyAgICAgICAgIyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbGZfcHJlY2lzaW9uX2Zsb2F0aW5nLXBvaW50X2Zvcm1hdAorICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fY2xlYW5Sb3VuZHRyaXBfbGlzdCA9IFsKKyAgICAgICAgICAgIChiJ1x4MDBceDNjJywgMS4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceGMwJywgLTIuMCksCisgICAgICAgICAgICAoYidceGZmXHg3YicsIDY1NTA0LjApLCAjICAobWF4IGhhbGYgcHJlY2lzaW9uKQorICAgICAgICAgICAgKGInXHgwMFx4MDQnLCAyKiotMTQpLCAjIH49IDYuMTAzNTIgKiAxMCoqLTUgKG1pbiBwb3Mgbm9ybWFsKQorICAgICAgICAgICAgKGInXHgwMVx4MDAnLCAyKiotMjQpLCAjIH49IDUuOTYwNDYgKiAxMCoqLTggKG1pbiBwb3Mgc3Vibm9ybWFsKQorICAgICAgICAgICAgKGInXHgwMFx4MDAnLCAwLjApLAorICAgICAgICAgICAgKGInXHgwMFx4ODAnLCAtMC4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceDdjJywgZmxvYXQoJytpbmYnKSksCisgICAgICAgICAgICAoYidceDAwXHhmYycsIGZsb2F0KCctaW5mJykpLAorICAgICAgICAgICAgKGInXHg1NVx4MzUnLCAwLjMzMzI1MTk1MzEyNSksICMgfj0gMS8zCisgICAgICAgIF0KKworICAgICAgICBmb3IgbGVfYml0cywgZiBpbiBmb3JtYXRfYml0c19mbG9hdF9fY2xlYW5Sb3VuZHRyaXBfbGlzdDoKKyAgICAgICAgICAgIGJlX2JpdHMgPSBsZV9iaXRzWzo6LTFdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIHN0cnVjdC51bnBhY2soJzxlJywgbGVfYml0cylbMF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlX2JpdHMsIHN0cnVjdC5wYWNrKCc8ZScsIGYpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCc+ZScsIGJlX2JpdHMpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiZV9iaXRzLCBzdHJ1Y3QucGFjaygnPmUnLCBmKSkKKyAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gJ2xpdHRsZSc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCdlJywgbGVfYml0cylbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZV9iaXRzLCBzdHJ1Y3QucGFjaygnZScsIGYpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIHN0cnVjdC51bnBhY2soJ2UnLCBiZV9iaXRzKVswXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJlX2JpdHMsIHN0cnVjdC5wYWNrKCdlJywgZikpCisKKyAgICAgICAgIyBDaGVjayBmb3IgTmFOIGhhbmRsaW5nOgorICAgICAgICBmb3JtYXRfYml0c19fbmFuX2xpc3QgPSBbCisgICAgICAgICAgICAoJzxlJywgYidceDAxXHhmYycpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMFx4ZmUnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4ZmZceGZmJyksCisgICAgICAgICAgICAoJzxlJywgYidceDAxXHg3YycpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMFx4N2UnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4ZmZceDdmJyksCisgICAgICAgIF0KKworICAgICAgICBmb3IgZm9ybWF0Y29kZSwgYml0cyBpbiBmb3JtYXRfYml0c19fbmFuX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihzdHJ1Y3QudW5wYWNrKCc8ZScsIGJpdHMpWzBdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKHN0cnVjdC51bnBhY2soJz5lJywgYml0c1s6Oi0xXSlbMF0pKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBwYWNraW5nIHByb2R1Y2VzIGEgYml0IHBhdHRlcm4gcmVwcmVzZW50aW5nIGEgcXVpZXQgTmFOOgorICAgICAgICAjIGFsbCBleHBvbmVudCBiaXRzIGFuZCB0aGUgbXNiIG9mIHRoZSBmcmFjdGlvbiBzaG91bGQgYWxsIGJlIDEuCisgICAgICAgIHBhY2tlZCA9IHN0cnVjdC5wYWNrKCc8ZScsIG1hdGgubmFuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tlZFsxXSAmIDB4N2UsIDB4N2UpCisgICAgICAgIHBhY2tlZCA9IHN0cnVjdC5wYWNrKCc8ZScsIC1tYXRoLm5hbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZWRbMV0gJiAweDdlLCAweDdlKQorCisgICAgICAgICMgQ2hlY2tzIGZvciByb3VuZC10by1ldmVuIGJlaGF2aW9yCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ19saXN0ID0gWworICAgICAgICAgICAgKCc+ZScsIGInXHgwMFx4MDEnLCAyLjAqKi0yNSArIDIuMCoqLTM1KSwgIyBSb3VuZHMgdG8gbWluaW11bSBzdWJub3JtYWwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDBceDAwJywgMi4wKiotMjUpLCAjIFVuZGVyZmxvd3MgdG8gemVybyAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceDAwXHgwMCcsIDIuMCoqLTI2KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8KKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDNceGZmJywgMi4wKiotMTQgLSAyLjAqKi0yNCksICMgTGFyZ2VzdCBzdWJub3JtYWwuCisgICAgICAgICAgICAoJz5lJywgYidceDAzXHhmZicsIDIuMCoqLTE0IC0gMi4wKiotMjUgLSAyLjAqKi02NSksCisgICAgICAgICAgICAoJz5lJywgYidceDA0XHgwMCcsIDIuMCoqLTE0IC0gMi4wKiotMjUpLAorICAgICAgICAgICAgKCc+ZScsIGInXHgwNFx4MDAnLCAyLjAqKi0xNCksICMgU21hbGxlc3Qgbm9ybWFsLgorICAgICAgICAgICAgKCc+ZScsIGInXHgzY1x4MDEnLCAxLjArMi4wKiotMTEgKyAyLjAqKi0xNiksICMgcm91bmRzIHRvIDEuMCsyKiooLTEwKQorICAgICAgICAgICAgKCc+ZScsIGInXHgzY1x4MDAnLCAxLjArMi4wKiotMTEpLCAjIHJvdW5kcyB0byAxLjAgKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHgzY1x4MDAnLCAxLjArMi4wKiotMTIpLCAjIHJvdW5kcyB0byAxLjAKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4N2JceGZmJywgNjU1MDQpLCAjIGxhcmdlc3Qgbm9ybWFsCisgICAgICAgICAgICAoJz5lJywgYidceDdiXHhmZicsIDY1NTE5KSwgIyByb3VuZHMgdG8gNjU1MDQKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ODBceDAxJywgLTIuMCoqLTI1IC0gMi4wKiotMzUpLCAjIFJvdW5kcyB0byBtaW5pbXVtIHN1Ym5vcm1hbAorICAgICAgICAgICAgKCc+ZScsIGInXHg4MFx4MDAnLCAtMi4wKiotMjUpLCAjIFVuZGVyZmxvd3MgdG8gemVybyAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceDgwXHgwMCcsIC0yLjAqKi0yNiksICMgVW5kZXJmbG93cyB0byB6ZXJvCisgICAgICAgICAgICAoJz5lJywgYidceGJjXHgwMScsIC0xLjAtMi4wKiotMTEgLSAyLjAqKi0xNiksICMgcm91bmRzIHRvIDEuMCsyKiooLTEwKQorICAgICAgICAgICAgKCc+ZScsIGInXHhiY1x4MDAnLCAtMS4wLTIuMCoqLTExKSwgIyByb3VuZHMgdG8gMS4wIChuZWFyZXN0IGV2ZW4gbW9kZSkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4YmNceDAwJywgLTEuMC0yLjAqKi0xMiksICMgcm91bmRzIHRvIDEuMAorICAgICAgICAgICAgKCc+ZScsIGInXHhmYlx4ZmYnLCAtNjU1MTkpLCAjIHJvdW5kcyB0byA2NTUwNAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGJpdHMsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX3JvdW5kaW5nX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdHMsIHN0cnVjdC5wYWNrKGZvcm1hdGNvZGUsIGYpKQorCisgICAgICAgICMgVGhpcyBvdmVyZmxvd3MsIGFuZCBzbyByYWlzZXMgYW4gZXJyb3IKKyAgICAgICAgZm9ybWF0X2JpdHNfZmxvYXRfX3JvdW5kaW5nRXJyb3JfbGlzdCA9IFsKKyAgICAgICAgICAgICMgVmFsdWVzIHRoYXQgcm91bmQgdG8gaW5maW5pdHkuCisgICAgICAgICAgICAoJz5lJywgNjU1MjAuMCksCisgICAgICAgICAgICAoJz5lJywgNjU1MzYuMCksCisgICAgICAgICAgICAoJz5lJywgMWUzMDApLAorICAgICAgICAgICAgKCc+ZScsIC02NTUyMC4wKSwKKyAgICAgICAgICAgICgnPmUnLCAtNjU1MzYuMCksCisgICAgICAgICAgICAoJz5lJywgLTFlMzAwKSwKKyAgICAgICAgICAgICgnPGUnLCA2NTUyMC4wKSwKKyAgICAgICAgICAgICgnPGUnLCA2NTUzNi4wKSwKKyAgICAgICAgICAgICgnPGUnLCAxZTMwMCksCisgICAgICAgICAgICAoJzxlJywgLTY1NTIwLjApLAorICAgICAgICAgICAgKCc8ZScsIC02NTUzNi4wKSwKKyAgICAgICAgICAgICgnPGUnLCAtMWUzMDApLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX3JvdW5kaW5nRXJyb3JfbGlzdDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXRjb2RlLCBmKQorCisgICAgICAgICMgRG91YmxlIHJvdW5kaW5nCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19kb3VibGVSb3VuZGluZ0Vycm9yX2xpc3QgPSBbCisgICAgICAgICAgICAoJz5lJywgYidceDY3XHhmZicsIDB4MWZmZGZmZmZmZiAqIDIqKi0yNiksICMgc2hvdWxkIGJlIDIwNDcsIGlmIGRvdWJsZS1yb3VuZGVkIDY0PjMyPjE2LCBiZWNvbWVzIDIwNDgKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBiaXRzLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19kb3VibGVSb3VuZGluZ0Vycm9yX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdHMsIHN0cnVjdC5wYWNrKGZvcm1hdGNvZGUsIGYpKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3ViY2xhc3Npbml0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNjdlNDEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weQpAQCAtMCwwICsxLDI1NiBAQAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSBGYWxzZQorCisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCkKKyAgICAgICAgICAgICAgICBjbHMuaW5pdGlhbGl6ZWQgPSBUcnVlCisKKyAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEEuaW5pdGlhbGl6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShCLmluaXRpYWxpemVkKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19kaWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBBKGRpY3QpOgorICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSBGYWxzZQorCisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCkKKyAgICAgICAgICAgICAgICBjbHMuaW5pdGlhbGl6ZWQgPSBUcnVlCisKKyAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEEuaW5pdGlhbGl6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShCLmluaXRpYWxpemVkKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19rd2FyZ3Moc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgY2xzLmt3YXJncyA9IGt3YXJncworCisgICAgICAgIGNsYXNzIEIoQSwgeD0zKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIua3dhcmdzLCBkaWN0KHg9MykpCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX2Vycm9yKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX3dyb25nKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgd2hhdGV2ZXIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBCKEEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3Nfc2tpcHBlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQmFzZVdpdGhJbml0OgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgY2xzLmluaXRpYWxpemVkID0gY2xzCisKKyAgICAgICAgY2xhc3MgQmFzZVdpdGhvdXRJbml0KEJhc2VXaXRoSW5pdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQShCYXNlV2l0aG91dEluaXQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQS5pbml0aWFsaXplZCwgQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCYXNlV2l0aG91dEluaXQuaW5pdGlhbGl6ZWQsIEJhc2VXaXRob3V0SW5pdCkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3NfZGlhbW9uZChzZWxmKToKKyAgICAgICAgY2xhc3MgQmFzZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5jYWxscyA9IFtdCisKKyAgICAgICAgY2xhc3MgTGVmdChCYXNlKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNaWRkbGU6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCBtaWRkbGUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5jYWxscyArPSBbbWlkZGxlXQorCisgICAgICAgIGNsYXNzIFJpZ2h0KEJhc2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgcmlnaHQ9InJpZ2h0IiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgY2xzLmNhbGxzICs9IFtyaWdodF0KKworICAgICAgICBjbGFzcyBBKExlZnQsIE1pZGRsZSwgUmlnaHQsIG1pZGRsZT0ibWlkZGxlIik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLmNhbGxzLCBbInJpZ2h0IiwgIm1pZGRsZSJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExlZnQuY2FsbHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFJpZ2h0LmNhbGxzLCBbXSkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IG93bmVyCisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLmQubmFtZSwgImQiKQorICAgICAgICBzZWxmLmFzc2VydElzKEEuZC5vd25lciwgQSkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX21ldGFjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICByZXQgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQuZC5uYW1lLCAiZCIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXQuZC5vd25lciwgcmV0KQorICAgICAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBvd25lcgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLCAwKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX3dyb25nKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9sb29rdXAoc2VsZik6CisgICAgICAgIHJlc29sdmVkID0gW10KKyAgICAgICAgY2xhc3MgTm9uRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgICAgICAgICByZXNvbHZlZC5hcHBlbmQobmFtZSkKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZCA9IE5vbkRlc2NyaXB0b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ19fc2V0X25hbWVfXycsIHJlc29sdmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICdfX3NldF9uYW1lX18gaXMgbG9va2VkIHVwIGluIGluc3RhbmNlIGRpY3QnKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfaW5pdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBvd25lcgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpOgorICAgICAgICAgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICAgICAgc2VsZi5tZXRhX293bmVyID0gc2VsZi5vd25lcgorICAgICAgICAgICAgICAgIHNlbGYubWV0YV9uYW1lID0gc2VsZi5uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgY2xzLm93bmVyID0gY2xzLmQub3duZXIKKyAgICAgICAgICAgICAgICBjbHMubmFtZSA9IGNscy5kLm5hbWUKKworICAgICAgICBjbGFzcyBCKEEsIG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydElzKEIub3duZXIsIEIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQi5uYW1lLCAnZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQi5tZXRhX293bmVyLCBCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIubmFtZSwgJ2QnKQorCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZXMubmV3X2NsYXNzKCJNeUNsYXNzIiwgKG9iamVjdCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSkpCisgICAgICAgIHR5cGVzLnByZXBhcmVfY2xhc3MoIk15Q2xhc3MiLCAob2JqZWN0LCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKSkKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgb3RoZXJhcmcpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18obmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5vdGhlcmFyZyA9IG90aGVyYXJnCisKKyAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE15Q2xhc3Mub3RoZXJhcmcsIDEpCisKKyAgICBkZWYgdGVzdF9lcnJvcnNfY2hhbmdlZF9wZXA0ODcoc2VsZik6CisgICAgICAgICMgVGhlc2UgdGVzdHMgZmFpbGVkIGJlZm9yZSBQeXRob24gMy42LCBQRVAgNDg3CisgICAgICAgIGNsYXNzIE15TWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWU9bmFtZSwgYmFzZXM9YmFzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0PW5hbWVzcGFjZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKyAgICAgICAgICAgICAgICBzZWxmLm90aGVyYXJnID0gb3RoZXJhcmcKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeUNsYXNzLm90aGVyYXJnLCAxKQorCisgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKKyAgICAgICAgdCA9IHR5cGUoJ05ld0NsYXNzJywgKG9iamVjdCwpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHQsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5fX25hbWVfXywgJ05ld0NsYXNzJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlKG5hbWU9J05ld0NsYXNzJywgYmFzZXM9KG9iamVjdCwpLCBkaWN0PXt9KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKaW5kZXggNzU4ZTA5NC4uMmQ5MjM5YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQpAQCAtMSwyMCArMSwxNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHNpZ25hbAogaW1wb3J0IGlvCi1pbXBvcnQgbG9jYWxlCiBpbXBvcnQgb3MKIGltcG9ydCBlcnJubwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQotaW1wb3J0IHJlCiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgc3lzY29uZmlnCi1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBnYwpAQCAtMjUsNiArMjEsOSBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKIAoraWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIG1zd2luZG93cyA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKIAogIwpAQCAtNDQ4LDggKzQ0Nyw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoIm9yYW5nZSIpJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJvcmFuZ2UiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJvcmFuZ2UiKQogCiAgICAgZGVmIHRlc3Rfc3Rkb3V0X2ZpbGVkZXMoc2VsZik6CiAgICAgICAgICMgc3Rkb3V0IGlzIHNldCB0byBvcGVuIGZpbGUgZGVzY3JpcHRvcgpAQCAtNDc5LDggKzQ3OCw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5zdGRlcnIud3JpdGUoInN0cmF3YmVycnkiKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChwLnN0ZGVyci5yZWFkKCksIGIic3RyYXdiZXJyeSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRlcnIucmVhZCgpLCBiInN0cmF3YmVycnkiKQogCiAgICAgZGVmIHRlc3Rfc3RkZXJyX2ZpbGVkZXMoc2VsZik6CiAgICAgICAgICMgc3RkZXJyIGlzIHNldCB0byBvcGVuIGZpbGUgZGVzY3JpcHRvcgpAQCAtNTM1LDggKzUzNCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgib3JhbmdlIiknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlb3JhbmdlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIiYXBwbGVvcmFuZ2UiKQogCiAgICAgZGVmIHRlc3Rfc3Rkb3V0X3N0ZGVycl9maWxlKHNlbGYpOgogICAgICAgICAjIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gdGhlIHNhbWUgb3BlbiBmaWxlCkBAIC03OTQsMTggKzc5MywxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQotICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lMVxuIikKLSAgICAgICAgcC5zdGRpbi5mbHVzaCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZGxpbmUoKSwgImxpbmUxXG4iKQotICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lM1xuIikKLSAgICAgICAgcC5zdGRpbi5jbG9zZSgpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lM1xuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgImxpbmU0XG5saW5lNVxubGluZTZcbmxpbmU3XG5saW5lOCIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHAuc3RkaW4ud3JpdGUoImxpbmUxXG4iKQorICAgICAgICAgICAgcC5zdGRpbi5mbHVzaCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksICJsaW5lMVxuIikKKyAgICAgICAgICAgIHAuc3RkaW4ud3JpdGUoImxpbmUzXG4iKQorICAgICAgICAgICAgcC5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCg2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUzXG4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lNFxubGluZTVcbmxpbmU2XG5saW5lN1xubGluZTgiKQogCiAgICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzX2NvbW11bmljYXRlKHNlbGYpOgogICAgICAgICAjIHVuaXZlcnNhbCBuZXdsaW5lcyB0aHJvdWdoIGNvbW11bmljYXRlKCkKQEAgLTg5NCwzMSArODk0LDQyIEBACiAgICAgICAgICMKICAgICAgICAgIyBVVEYtMTYgYW5kIFVURi0zMi1CRSBhcmUgc3VmZmljaWVudCB0byBjaGVjayBib3RoIHdpdGggQk9NIGFuZAogICAgICAgICAjIHdpdGhvdXQsIGFuZCBVVEYtMTYgYW5kIFVURi0zMi4KLSAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlCiAgICAgICAgIGZvciBlbmNvZGluZyBpbiBbJ3V0Zi0xNicsICd1dGYtMzItYmUnXToKLSAgICAgICAgICAgIG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nCi0gICAgICAgICAgICAjIEluZGlyZWN0bHkgdmlhIGlvLlRleHRJT1dyYXBwZXIsIFBvcGVuKCkgZGVmYXVsdHMgdG8KLSAgICAgICAgICAgICMgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBhbmQgZWFybGllciBpbiBQeXRob24gMy4yIHRvCi0gICAgICAgICAgICAjIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpLgotICAgICAgICAgICAgZGVmIGdldHByZWZlcnJlZGVuY29kaW5nKGRvX3NldGxvY2FsZT1UcnVlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RpbmcKICAgICAgICAgICAgIGNvZGUgPSAoImltcG9ydCBzeXM7ICIKICAgICAgICAgICAgICAgICAgICAgciJzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZSgnMVxyXG4yXHIzXG40Jy5lbmNvZGUoJyVzJykpIiAlCiAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nKQogICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgY29kZV0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IGdldHByZWZlcnJlZGVuY29kaW5nCi0gICAgICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAotICAgICAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCi0gICAgICAgICAgICAgICAgIyB6ZXJvIG9yIG9uZS4KLSAgICAgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZworICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAorICAgICAgICAgICAgIyBhIGRpZmZlcmVudCBjb2RlIHBhdGggaXMgdXNlZCB3aGVuIHRoZSBudW1iZXIgb2YgcGlwZXMgaXMKKyAgICAgICAgICAgICMgemVybyBvciBvbmUuCisgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZykKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9JycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgJzFcbjJcbjNcbjQnKQogCisgICAgZGVmIHRlc3RfY29tbXVuaWNhdGVfZXJyb3JzKHNlbGYpOgorICAgICAgICBmb3IgZXJyb3JzLCBleHBlY3RlZCBpbiBbCisgICAgICAgICAgICAoJ2lnbm9yZScsICcnKSwKKyAgICAgICAgICAgICgncmVwbGFjZScsICdcdWZmZmRcdWZmZmQnKSwKKyAgICAgICAgICAgICgnc3Vycm9nYXRlZXNjYXBlJywgJ1x1ZGM4MFx1ZGM4MCcpLAorICAgICAgICAgICAgKCdiYWNrc2xhc2hyZXBsYWNlJywgJ1xceDgwXFx4ODAnKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIGNvZGUgPSAoImltcG9ydCBzeXM7ICIKKyAgICAgICAgICAgICAgICAgICAgciJzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShiJ1tceDgwXHg4MF0nKSIpCisgICAgICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCBjb2RlXQorICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAorICAgICAgICAgICAgIyBhIGRpZmZlcmVudCBjb2RlIHBhdGggaXMgdXNlZCB3aGVuIHRoZSBudW1iZXIgb2YgcGlwZXMgaXMKKyAgICAgICAgICAgICMgemVybyBvciBvbmUuCisgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz1lcnJvcnMpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsICdbe31dJy5mb3JtYXQoZXhwZWN0ZWQpKQorCiAgICAgZGVmIHRlc3Rfbm9fbGVha2luZyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgd2UgbGVhayBubyByZXNvdXJjZXMKICAgICAgICAgaWYgbm90IG1zd2luZG93czoKQEAgLTE0MzEsNiArMTQ0MiwyNyBAQAogICAgICAgICAgICAgcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtcC5yZXR1cm5jb2RlLCBzaWduYWwuU0lHQUJSVCkKIAorICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfc2lnbmFsKHNlbGYpOgorICAgICAgICBlcnIgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcigtaW50KHNpZ25hbC5TSUdBQlJUKSwgImZha2UgY21kIikKKyAgICAgICAgZXJyb3Jfc3RyaW5nID0gc3RyKGVycikKKyAgICAgICAgIyBXZSdyZSByZWx5aW5nIG9uIHRoZSByZXByKCkgb2YgdGhlIHNpZ25hbC5TaWduYWxzIGludGVudW0gdG8gcHJvdmlkZQorICAgICAgICAjIHRoZSB3b3JkIHNpZ25hbCwgdGhlIHNpZ25hbCBuYW1lIGFuZCB0aGUgbnVtZXJpYyB2YWx1ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRJbigic2lnbmFsIiwgZXJyb3Jfc3RyaW5nLmxvd2VyKCkpCisgICAgICAgICMgV2UncmUgbm90IGJlaW5nIHNwZWNpZmljIGFib3V0IHRoZSBzaWduYWwgbmFtZSBhcyBzb21lIHNpZ25hbHMgaGF2ZQorICAgICAgICAjIG11bHRpcGxlIG5hbWVzIGFuZCB3aGljaCBuYW1lIGlzIHJldmVhbGVkIGNhbiB2YXJ5LgorICAgICAgICBzZWxmLmFzc2VydEluKCJTSUciLCBlcnJvcl9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RyKHNpZ25hbC5TSUdBQlJUKSwgZXJyb3Jfc3RyaW5nKQorCisgICAgZGVmIHRlc3RfQ2FsbGVkUHJvY2Vzc0Vycm9yX3N0cl91bmtub3duX3NpZ25hbChzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoLTk4NzY1NDMsICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInVua25vd24gc2lnbmFsIDk4NzY1NDMuIiwgZXJyb3Jfc3RyaW5nKQorCisgICAgZGVmIHRlc3RfQ2FsbGVkUHJvY2Vzc0Vycm9yX3N0cl9ub25femVybyhzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMiwgImZha2UgY21kIikKKyAgICAgICAgZXJyb3Jfc3RyaW5nID0gc3RyKGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRJbigibm9uLXplcm8gZXhpdCBzdGF0dXMgMi4iLCBlcnJvcl9zdHJpbmcpCisKICAgICBkZWYgdGVzdF9wcmVleGVjKHNlbGYpOgogICAgICAgICAjIERJU0NMQUlNRVI6IFNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlzICpub3QqIGEgZ29vZCB1c2UKICAgICAgICAgIyBvZiBhIHByZWV4ZWNfZm4uICBUaGlzIGlzIG1lcmVseSBhIHRlc3QuCkBAIC0xNDM5LDggKzE0NzEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRvdXQud3JpdGUob3MuZ2V0ZW52KCJGUlVJVCIpKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVleGVjX2ZuPWxhbWJkYTogb3MucHV0ZW52KCJGUlVJVCIsICJhcHBsZSIpKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3RfcHJlZXhlY19leGNlcHRpb24oc2VsZik6CiAgICAgICAgIGRlZiByYWlzZV9pdCgpOgpAQCAtMTU2MSw3ICsxNTkzLDcgQEAKICAgICAgICAgZmQsIGZuYW1lID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgICMgcmVvcGVuIGluIHRleHQgbW9kZQogICAgICAgICB3aXRoIG9wZW4oZmQsICJ3IiwgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyBmb2JqOgotICAgICAgICAgICAgZm9iai53cml0ZSgiIyEvYmluL3NoXG4iKQorICAgICAgICAgICAgZm9iai53cml0ZSgiIyElc1xuIiAlIHN1cHBvcnQudW5peF9zaGVsbCkKICAgICAgICAgICAgIGZvYmoud3JpdGUoImV4ZWMgJyVzJyAtYyAnaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpJ1xuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlKQogICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG83MDApCkBAIC0xNTg4LDggKzE2MjAsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbImVjaG8gJEZSVUlUIl0sIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoYiIgXHRcclxuXGYiKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFJ1biBjb21tYW5kIHRocm91Z2ggdGhlIHNoZWxsIChzdHJpbmcpCkBAIC0xNTk4LDE1ICsxNjMwLDE1IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKCJlY2hvICRGUlVJVCIsIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoYiIgXHRcclxuXGYiKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3RfY2FsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggc3RyaW5nIGFyZ3VtZW50IG9uIFVOSVgKICAgICAgICAgZmQsIGZuYW1lID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgICMgcmVvcGVuIGluIHRleHQgbW9kZQogICAgICAgICB3aXRoIG9wZW4oZmQsICJ3IiwgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyBmb2JqOgotICAgICAgICAgICAgZm9iai53cml0ZSgiIyEvYmluL3NoXG4iKQorICAgICAgICAgICAgZm9iai53cml0ZSgiIyElc1xuIiAlIHN1cHBvcnQudW5peF9zaGVsbCkKICAgICAgICAgICAgIGZvYmoud3JpdGUoImV4ZWMgJyVzJyAtYyAnaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpJ1xuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlKQogICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG83MDApCkBAIC0xNjMxLDggKzE2NjMsOCBAQAogICAgICAgICBmb3Igc2ggaW4gc2hlbGxzOgogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oImVjaG8gJDAiLCBleGVjdXRhYmxlPXNoLCBzaGVsbD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKCksIGJ5dGVzKHNoLCAnYXNjaWknKSkKKyAgICAgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcCgpLCBieXRlcyhzaCwgJ2FzY2lpJykpCiAKICAgICBkZWYgX2tpbGxfcHJvY2VzcyhzZWxmLCBtZXRob2QsICphcmdzKToKICAgICAgICAgIyBEbyBub3QgaW5oZXJpdCBmaWxlIGhhbmRsZXMgZnJvbSB0aGUgcGFyZW50LgpAQCAtMjI5MCw3ICsyMzIyLDkgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQogICAgICAgICBpZGVudCA9IGlkKHApCiAgICAgICAgIHBpZCA9IHAucGlkCi0gICAgICAgIGRlbCBwCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFJlc291cmNlV2FybmluZykpOgorICAgICAgICAgICAgcCA9IE5vbmUKKwogICAgICAgICAjIGNoZWNrIHRoYXQgcCBpcyBpbiB0aGUgYWN0aXZlIHByb2Nlc3NlcyBsaXN0CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaWRlbnQsIFtpZChvKSBmb3IgbyBpbiBzdWJwcm9jZXNzLl9hY3RpdmVdKQogCkBAIC0yMzA5LDcgKzIzNDMsOSBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCiAgICAgICAgIGlkZW50ID0gaWQocCkKICAgICAgICAgcGlkID0gcC5waWQKLSAgICAgICAgZGVsIHAKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUmVzb3VyY2VXYXJuaW5nKSk6CisgICAgICAgICAgICBwID0gTm9uZQorCiAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTCkKICAgICAgICAgIyBjaGVjayB0aGF0IHAgaXMgaW4gdGhlIGFjdGl2ZSBwcm9jZXNzZXMgbGlzdAogICAgICAgICBzZWxmLmFzc2VydEluKGlkZW50LCBbaWQobykgZm9yIG8gaW4gc3VicHJvY2Vzcy5fYWN0aXZlXSkKQEAgLTI1MDEsOCArMjUzNyw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsic2V0Il0sIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCiAKICAgICBkZWYgdGVzdF9zaGVsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgUnVuIGNvbW1hbmQgdGhyb3VnaCB0aGUgc2hlbGwgKHN0cmluZykKQEAgLTI1MTEsOCArMjU0NywyMCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbigic2V0Iiwgc2hlbGw9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PW5ld2VudikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSkKKworICAgIGRlZiB0ZXN0X3NoZWxsX2VuY29kaW5ncyhzZWxmKToKKyAgICAgICAgIyBSdW4gY29tbWFuZCB0aHJvdWdoIHRoZSBzaGVsbCAoc3RyaW5nKQorICAgICAgICBmb3IgZW5jIGluIFsnYW5zaScsICdvZW0nXToKKyAgICAgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICAgICBuZXdlbnZbIkZSVUlUIl0gPSAicGh5c2FsaXMiCisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbigic2V0Iiwgc2hlbGw9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jKQorICAgICAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpLCBlbmMpCiAKICAgICBkZWYgdGVzdF9jYWxsX3N0cmluZyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBzdHJpbmcgYXJndW1lbnQgb24gV2luZG93cwpAQCAtMjUzMSwxNiArMjU3OSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKLSAgICAgICAgIyBXYWl0IGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gYmUgY29tcGxldGVseSBpbml0aWFsaXplZCBiZWZvcmUKLSAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCi0gICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKLSAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQotICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKLSAgICAgICAgcmV0dXJuY29kZSA9IHAud2FpdCgpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCisgICAgICAgICAgICAjIHNlbmRpbmcgYW55IHNpZ25hbC4KKyAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKKyAgICAgICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKKyAgICAgICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKKyAgICAgICAgICAgIHJldHVybmNvZGUgPSBwLndhaXQoKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJldHVybmNvZGUsIDApCiAKICAgICBkZWYgX2tpbGxfZGVhZF9wcm9jZXNzKHNlbGYsIG1ldGhvZCwgKmFyZ3MpOgpAQCAtMjU1MywxOSArMjU5OSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKLSAgICAgICAgIyBXYWl0IGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gYmUgY29tcGxldGVseSBpbml0aWFsaXplZCBiZWZvcmUKLSAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCi0gICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKLSAgICAgICAgIyBUaGUgcHJvY2VzcyBzaG91bGQgZW5kIGFmdGVyIHRoaXMKLSAgICAgICAgdGltZS5zbGVlcCgxKQotICAgICAgICAjIFRoaXMgc2hvdWxkbid0IHJhaXNlIGV2ZW4gdGhvdWdoIHRoZSBjaGlsZCBpcyBub3cgZGVhZAotICAgICAgICBnZXRhdHRyKHAsIG1ldGhvZCkoKmFyZ3MpCi0gICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQotICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYicnKQotICAgICAgICByYyA9IHAud2FpdCgpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCisgICAgICAgICAgICAjIHNlbmRpbmcgYW55IHNpZ25hbC4KKyAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKKyAgICAgICAgICAgICMgVGhlIHByb2Nlc3Mgc2hvdWxkIGVuZCBhZnRlciB0aGlzCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IHJhaXNlIGV2ZW4gdGhvdWdoIHRoZSBjaGlsZCBpcyBub3cgZGVhZAorICAgICAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQorICAgICAgICAgICAgXywgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYicnKQorICAgICAgICAgICAgcmMgPSBwLndhaXQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCA0MikKIAogICAgIGRlZiB0ZXN0X3NlbmRfc2lnbmFsKHNlbGYpOgpAQCAtMjYwOCw4ICsyNjUyLDcgQEAKIAogICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKICAgICAgICAgIiIiRW5zdXJlIHRoYXQgX19hbGxfXyBpcyBwb3B1bGF0ZWQgcHJvcGVybHkuIiIiCi0gICAgICAgICMgU1RBUlRVUElORk8gYWRkZWQgdG8gX19hbGxfXyBpbiAzLjYKLSAgICAgICAgaW50ZW50aW9uYWxseV9leGNsdWRlZCA9IHsibGlzdDJjbWRsaW5lIiwgIlNUQVJUVVBJTkZPIiwgIkhhbmRsZSJ9CisgICAgICAgIGludGVudGlvbmFsbHlfZXhjbHVkZWQgPSB7Imxpc3QyY21kbGluZSIsICJIYW5kbGUifQogICAgICAgICBleHBvcnRlZCA9IHNldChzdWJwcm9jZXNzLl9fYWxsX18pCiAgICAgICAgIHBvc3NpYmxlX2V4cG9ydHMgPSBzZXQoKQogICAgICAgICBpbXBvcnQgdHlwZXMKQEAgLTI2NTQsMTEgKzI2OTcsMTEgQEAKICAgICBkZWYgd2l0aF9zcGFjZXMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAga3dhcmdzWydzdGRvdXQnXSA9IHN1YnByb2Nlc3MuUElQRQogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICBwLnN0ZG91dC5yZWFkICgpLmRlY29kZSgibWJjcyIpLAotICAgICAgICAgICIyIFslciwgJ2FiIGNkJ10iICUgc2VsZi5mbmFtZQotICAgICAgICApCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQgKCkuZGVjb2RlKCJtYmNzIiksCisgICAgICAgICAgICAgICIyIFslciwgJ2FiIGNkJ10iICUgc2VsZi5mbmFtZQorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nX3dpdGhfc3BhY2VzKHNlbGYpOgogICAgICAgICAjIGNhbGwoKSBmdW5jdGlvbiB3aXRoIHN0cmluZyBhcmd1bWVudCB3aXRoIHNwYWNlcyBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5IGIvTGliL3Rlc3QvdGVzdF9zdW5hdS5weQppbmRleCAwZjQxMzRlLi5iYzFmNDZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VuYXUucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgYXVkaW90ZXN0cwogZnJvbSBhdWRpb29wIGltcG9ydCBieXRlc3dhcApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKaW5kZXggYjg0ODYzZi4uYTdjZWRlZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CkBAIC0xNDMsNiArMTQzLDg3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXwogICAgICAgICBzZWxmLmFzc2VydElzKFguZigpLCBYKQogCisgICAgZGVmIHRlc3RfX19jbGFzc19fX25ldyhzZWxmKToKKyAgICAgICAgdGVzdF9jbGFzcyA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X2NsYXNzCisgICAgICAgICAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgdGVzdF9jbGFzcyA9IHNlbGYuZigpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jbGFzcywgQSkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19kZWxheWVkKHNlbGYpOgorICAgICAgICB0ZXN0X25hbWVzcGFjZSA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X25hbWVzcGFjZQorICAgICAgICAgICAgICAgIHRlc3RfbmFtZXNwYWNlID0gbmFtZXNwYWNlCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQSwgTm9uZSkKKworICAgICAgICBCID0gdHlwZSgiQiIsICgpLCB0ZXN0X25hbWVzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCLmYoKSwgQikKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19tcm8oc2VsZik6CisgICAgICAgIHRlc3RfY2xhc3MgPSBOb25lCisKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBtcm8oc2VsZik6CisgICAgICAgICAgICAgICAgIyBzZWxmLmYoKSBkb2Vzbid0IHdvcmsgeWV0Li4uCisgICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1siZiJdKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5tcm8oKQorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X2NsYXNzCisgICAgICAgICAgICAgICAgdGVzdF9jbGFzcyA9IF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jbGFzcywgQSkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NjZWxsX19fZGVsZXRlZChzZWxmKToKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgZGVsIG5hbWVzcGFjZVsnX19jbGFzc2NlbGxfXyddCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIF9fY2xhc3NfXworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIEEuZigpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzY2VsbF9fX3Jlc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBuYW1lc3BhY2VbJ19fY2xhc3NjZWxsX18nXSA9IDAKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgX19jbGFzc19fCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgQS5mKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLl9fY2xhc3NjZWxsX18sIDApCisKICAgICBkZWYgdGVzdF9vYnNjdXJlX3N1cGVyX2Vycm9ycyhzZWxmKToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIHN1cGVyKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQppbmRleCAyYzAwNDE3Li4yNjlkOWJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CkBAIC05LDEzICs5LDExIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogVEVTVEZOID0gc3VwcG9ydC5URVNURk4KLVRFU1RESVJOID0gb3MucGF0aC5iYXNlbmFtZSh0ZW1wZmlsZS5ta2R0ZW1wKGRpcj0nLicpKQogCiAKIGNsYXNzIFRlc3RTdXBwb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKLSAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCiAgICAgdGVhckRvd24gPSBzZXRVcAogCiAgICAgZGVmIHRlc3RfaW1wb3J0X21vZHVsZShzZWxmKToKQEAgLTQ4LDYgKzQ2LDEwIEBACiAgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3JtdHJlZShzZWxmKToKKyAgICAgICAgVEVTVERJUk4gPSBvcy5wYXRoLmJhc2VuYW1lKHRlbXBmaWxlLm1rZHRlbXAoZGlyPScuJykpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgVEVTVERJUk4pCisgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQorCiAgICAgICAgIG9zLm1rZGlyKFRFU1RESVJOKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oVEVTVERJUk4sIFRFU1RESVJOKSkKICAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCkBAIC0yMjgsNyArMjMwLDggQEAKIAogICAgIGRlZiB0ZXN0X2NoZWNrX3N5bnRheF9lcnJvcihzZWxmKToKICAgICAgICAgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBjbGFzcyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvciwgc2VsZiwgIjEiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ4PTEiKQogCiAgICAgZGVmIHRlc3RfQ2xlYW5JbXBvcnQoc2VsZik6CiAgICAgICAgIGltcG9ydCBpbXBvcnRsaWIKQEAgLTMxMiw2ICszMTUsMjggQEAKICAgICAgICAgICAgICAgICBzZWxmLk90aGVyQ2xhc3MsIHNlbGYuUmVmQ2xhc3MsIGlnbm9yZT1pZ25vcmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIG1pc3NpbmdfaXRlbXMpCiAKKyAgICBkZWYgdGVzdF9jaGVja19fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geyd0ZW1wZGlyJ30KKyAgICAgICAgYmxhY2tsaXN0ID0geyd0ZW1wbGF0ZSd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgICAgICBleHRyYSA9IHsnVGV4dFRlc3RSZXN1bHQnLCAnaW5zdGFsbEhhbmRsZXInfQorICAgICAgICBibGFja2xpc3QgPSB7J2xvYWRfdGVzdHMnLCAiVGVzdFByb2dyYW0iLCAiQmFzZVRlc3RTdWl0ZSJ9CisKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidW5pdHRlc3QucmVzdWx0IiwgInVuaXR0ZXN0LmNhc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXR0ZXN0LnN1aXRlIiwgInVuaXR0ZXN0LmxvYWRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pdHRlc3QubWFpbiIsICJ1bml0dGVzdC5ydW5uZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXR0ZXN0LnNpZ25hbHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHN1cHBvcnQuY2hlY2tfX2FsbF9fLCBzZWxmLCB1bml0dGVzdCkKKwogICAgICMgWFhYIC1mb2xsb3dzIGEgbGlzdCBvZiB1bnRlc3RlZCBBUEkKICAgICAjIG1ha2VfbGVnYWN5X3B5YwogICAgICMgaXNfcmVzb3VyY2VfZW5hYmxlZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW1ib2wucHkgYi9MaWIvdGVzdC90ZXN0X3N5bWJvbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTMwNmY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW1ib2wucHkKQEAgLTAsMCArMSw1NCBAQAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHN1YnByb2Nlc3MKKworCitTWU1CT0xfRklMRSAgICAgICAgICAgICAgPSBzdXBwb3J0LmZpbmRmaWxlKCdzeW1ib2wucHknKQorR1JBTU1BUl9GSUxFICAgICAgICAgICAgID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4uJywgJy4uJywgJ0luY2x1ZGUnLCAnZ3JhbWluaXQuaCcpCitURVNUX1BZX0ZJTEUgICAgICAgICAgICAgPSAnc3ltYm9sX3Rlc3QucHknCisKKworY2xhc3MgVGVzdFN5bWJvbEdlbmVyYXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIF9jb3B5X2ZpbGVfd2l0aG91dF9nZW5lcmF0ZWRfc3ltYm9scyhzZWxmLCBzb3VyY2VfZmlsZSwgZGVzdF9maWxlKToKKyAgICAgICAgd2l0aCBvcGVuKHNvdXJjZV9maWxlKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzID0gZnAucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBvcGVuKGRlc3RfZmlsZSwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlbGluZXMobGluZXNbOmxpbmVzLmluZGV4KCIjLS1zdGFydCBjb25zdGFudHMtLVxuIikgKyAxXSkKKyAgICAgICAgICAgIGZwLndyaXRlbGluZXMobGluZXNbbGluZXMuaW5kZXgoIiMtLWVuZCBjb25zdGFudHMtLVxuIik6XSkKKworICAgIGRlZiBfZ2VuZXJhdGVfc3ltYm9scyhzZWxmLCBncmFtbWFyX2ZpbGUsIHRhcmdldF9zeW1ib2xfcHlfZmlsZSk6CisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZTUJPTF9GSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hcl9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3N5bWJvbF9weV9maWxlXSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZSgpWzFdCisgICAgICAgIHJldHVybiBwcm9jLnJldHVybmNvZGUsIHN0ZGVycgorCisgICAgZGVmIGNvbXBhcmVfZmlsZXMoc2VsZiwgZmlsZTEsIGZpbGUyKToKKyAgICAgICAgd2l0aCBvcGVuKGZpbGUxKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzMSA9IGZwLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggb3BlbihmaWxlMikgYXMgZnA6CisgICAgICAgICAgICBsaW5lczIgPSBmcC5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzMSwgbGluZXMyKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3Qgb3MucGF0aC5leGlzdHMoR1JBTU1BUl9GSUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG9ubHkgd29ya3MgZnJvbSBzb3VyY2UgYnVpbGQgZGlyZWN0b3J5JykKKyAgICBkZWYgdGVzdF9yZWFsX2dyYW1tYXJfYW5kX3N5bWJvbF9maWxlKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIG91dHB1dCkKKworICAgICAgICBzZWxmLl9jb3B5X2ZpbGVfd2l0aG91dF9nZW5lcmF0ZWRfc3ltYm9scyhTWU1CT0xfRklMRSwgb3V0cHV0KQorCisgICAgICAgIGV4aXRjb2RlLCBzdGRlcnIgPSBzZWxmLl9nZW5lcmF0ZV9zeW1ib2xzKEdSQU1NQVJfRklMRSwgb3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGV4aXRjb2RlKQorCisgICAgICAgIHNlbGYuY29tcGFyZV9maWxlcyhTWU1CT0xfRklMRSwgb3V0cHV0KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQppbmRleCBjNWQ3ZmFjLi4zMDQ3MTY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKQEAgLTEzMyw2ICsxMzMsMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuTWluZS5sb29rdXAoImFfbWV0aG9kIikuaXNfYXNzaWduZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmludGVybmFsLmxvb2t1cCgieCIpLmlzX2Fzc2lnbmVkKCkpCiAKKyAgICBkZWYgdGVzdF9hbm5vdGF0ZWQoc2VsZik6CisgICAgICAgIHN0MSA9IHN5bXRhYmxlLnN5bXRhYmxlKCdkZWYgZigpOlxuICAgIHg6IGludFxuJywgJ3Rlc3QnLCAnZXhlYycpCisgICAgICAgIHN0MiA9IHN0MS5nZXRfY2hpbGRyZW4oKVswXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3QyLmxvb2t1cCgneCcpLmlzX2xvY2FsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdDIubG9va3VwKCd4JykuaXNfYW5ub3RhdGVkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3QyLmxvb2t1cCgneCcpLmlzX2dsb2JhbCgpKQorICAgICAgICBzdDMgPSBzeW10YWJsZS5zeW10YWJsZSgnZGVmIGYoKTpcbiAgICB4ID0gMVxuJywgJ3Rlc3QnLCAnZXhlYycpCisgICAgICAgIHN0NCA9IHN0My5nZXRfY2hpbGRyZW4oKVswXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Q0Lmxvb2t1cCgneCcpLmlzX2xvY2FsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3Q0Lmxvb2t1cCgneCcpLmlzX2Fubm90YXRlZCgpKQorCiAgICAgZGVmIHRlc3RfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnRvcC5sb29rdXAoInN5cyIpLmlzX2ltcG9ydGVkKCkpCiAKQEAgLTE1OCw5ICsxNjksMTEgQEAKICAgICAgICAgY2hlY2tmaWxlbmFtZSgiZGVmIGYoeCk6IGZvbykoIikgICMgcGFyc2UtdGltZQogICAgICAgICBjaGVja2ZpbGVuYW1lKCJkZWYgZih4KTogZ2xvYmFsIHgiKSAgIyBzeW10YWJsZS1idWlsZC10aW1lCiAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgYiJzcGFtIiwgImV4ZWMiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgYnl0ZWFycmF5KGIic3BhbSIpLCAiZXhlYyIpCi0gICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgbWVtb3J5dmlldyhiInNwYW0iKSwgImV4ZWMiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgbWVtb3J5dmlldyhiInNwYW0iKSwgImV4ZWMiKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIGxpc3QoYiJzcGFtIiksICJleGVjIikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkgYi9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQppbmRleCA4M2Y0OWY2Li44MGUzNmZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQpAQCAtMzUsMTQgKzM1LDYgQEAKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8ga2V5d29yZAogCi1JdCdzIGEgc3ludGF4IGVycm9yIHRvIGFzc2lnbiB0byB0aGUgZW1wdHkgdHVwbGUuICBXaHkgaXNuJ3QgaXQgYW4KLWVycm9yIHRvIGFzc2lnbiB0byB0aGUgZW1wdHkgbGlzdD8gIEl0IHdpbGwgYWx3YXlzIHJhaXNlIHNvbWUgZXJyb3IgYXQKLXJ1bnRpbWUuCi0KLT4+PiAoKSA9IDEKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLVN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gKCkKLQogPj4+IGYoKSA9IDEKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gZnVuY3Rpb24gY2FsbApAQCAtMzc0LDcgKzM2NiwyMyBAQAogICAgICAuLi4KICAgIFN5bnRheEVycm9yOiB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MKIAotTWlzdXNlIG9mIHRoZSBub25sb2NhbCBzdGF0ZW1lbnQgY2FuIGxlYWQgdG8gYSBmZXcgdW5pcXVlIHN5bnRheCBlcnJvcnMuCitNaXN1c2Ugb2YgdGhlIG5vbmxvY2FsIGFuZCBnbG9iYWwgc3RhdGVtZW50IGNhbiBsZWFkIHRvIGEgZmV3IHVuaXF1ZSBzeW50YXggZXJyb3JzLgorCisgICA+Pj4gZGVmIGYoKToKKyAgIC4uLiAgICAgeCA9IDEKKyAgIC4uLiAgICAgZ2xvYmFsIHgKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBTeW50YXhFcnJvcjogbmFtZSAneCcgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbgorCisgICA+Pj4gZGVmIGYoKToKKyAgIC4uLiAgICAgeCA9IDEKKyAgIC4uLiAgICAgZGVmIGcoKToKKyAgIC4uLiAgICAgICAgIHByaW50KHgpCisgICAuLi4gICAgICAgICBub25sb2NhbCB4CisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgU3ludGF4RXJyb3I6IG5hbWUgJ3gnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24KIAogICAgPj4+IGRlZiBmKHgpOgogICAgLi4uICAgICBub25sb2NhbCB4CkBAIC00OTMsMTAgKzUwMSw2IEBACiAgICAuLi4KIFN5bnRheEVycm9yOiBrZXl3b3JkIGFyZ3VtZW50IHJlcGVhdGVkCiAKLT4+PiBkZWwgKCkKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLVN5bnRheEVycm9yOiBjYW4ndCBkZWxldGUgKCkKLQogPj4+IHsxLCAyLCAzfSA9IDQyCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGxpdGVyYWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKaW5kZXggNDQzNWQ2OS4uZGY5ZWJkNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCBnYwogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgbG9jYWxlCiAKICMgY291bnQgdGhlIG51bWJlciBvZiB0ZXN0IHJ1bnMsIHVzZWQgdG8gY3JlYXRlIHVuaXF1ZQogIyBzdHJpbmdzIHRvIGludGVybiBpbiB0ZXN0X2ludGVybigpCkBAIC02MjcsNiArNjI4LDggQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRlc3Quc3VwcG9ydC5GU19OT05BU0NJSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgT1Mgc3VwcG9ydCBvZiBub24tQVNDSUkgZW5jb2RpbmdzJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgPT0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgRlMgZW5jb2RpbmcgdG8gbWF0Y2ggbG9jYWxlJykKICAgICBkZWYgdGVzdF9pb2VuY29kaW5nX25vbmFzY2lpKHNlbGYpOgogICAgICAgICBlbnYgPSBkaWN0KG9zLmVudmlyb24pCiAKQEAgLTY2OSw4ICs2NzIsNiBAQAogICAgICAgICBmc19lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBleHBlY3RlZCA9ICd1dGYtOCcKLSAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgICAgIGV4cGVjdGVkID0gJ21iY3MnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHBlY3RlZCA9IE5vbmUKICAgICAgICAgc2VsZi5jaGVja19mc2VuY29kaW5nKGZzX2VuY29kaW5nLCBleHBlY3RlZCkKQEAgLTkxMiwxMyArOTEzLDEzIEBACiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKICAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2Nsb3N1cmVfX1swXSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGNvZGUKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQotICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY29kZV9fLCBzaXplKCc2aTEzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNmkxM1AnKSkKICAgICAgICAgZGVmIGdldF9jZWxsMih4KToKICAgICAgICAgICAgIGRlZiBpbm5lcigpOgogICAgICAgICAgICAgICAgIHJldHVybiB4CiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwyLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykgKyAxKQorICAgICAgICBjaGVjayhnZXRfY2VsbDIuX19jb2RlX18sIHNpemUoJzZpMTNQJykgKyAxKQogICAgICAgICAjIGNvbXBsZXgKICAgICAgICAgY2hlY2soY29tcGxleCgwLDEpLCBzaXplKCcyZCcpKQogICAgICAgICAjIG1ldGhvZF9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKQEAgLTkzNiw5ICs5MzcsOSBAQAogICAgICAgICAjIG1ldGhvZC13cmFwcGVyIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgY2hlY2soe30uX19pdGVyX18sIHNpemUoJzJQJykpCiAgICAgICAgICMgZGljdAotICAgICAgICBjaGVjayh7fSwgc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnMm5QbicpICsgOCpjYWxjc2l6ZSgnbjJQJykpCisgICAgICAgIGNoZWNrKHt9LCBzaXplKCduUTJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKSArIDggKyAoOCoyLy8zKSpjYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgIGxvbmdkaWN0ID0gezE6MSwgMjoyLCAzOjMsIDQ6NCwgNTo1LCA2OjYsIDc6NywgODo4fQotICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnMm5QbicpICsgMTYqY2FsY3NpemUoJ24yUCcpKQorICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnblEyUCcpICsgY2FsY3NpemUoJzJuUDJuJykgKyAxNiArICgxNioyLy8zKSpjYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgICMgZGljdGlvbmFyeS1rZXl2aWV3CiAgICAgICAgIGNoZWNrKHt9LmtleXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnktdmFsdWV2aWV3CkBAIC0xMDk2LDEzICsxMDk3LDEzIEBACiAgICAgICAgICAgICAgICAgICAnMTBQJyAgICAgICAgICAgICAgICAgIyBQeVNlcXVlbmNlTWV0aG9kcwogICAgICAgICAgICAgICAgICAgJzJQJyAgICAgICAgICAgICAgICAgICMgUHlCdWZmZXJQcm9jcwogICAgICAgICAgICAgICAgICAgJzRQJykKLSAgICAgICAgIyBTZXBhcmF0ZSBibG9jayBmb3IgUHlEaWN0S2V5c09iamVjdCB3aXRoIDQgZW50cmllcwotICAgICAgICBzICs9IGNhbGNzaXplKCIyblBuIikgKyA0KmNhbGNzaXplKCJuMlAiKQorICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggOCBrZXlzIGFuZCA1IGVudHJpZXMKKyAgICAgICAgcyArPSBjYWxjc2l6ZSgiMm5QMm4iKSArIDggKyA1KmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCiAgICAgICAgIGNsYXNzIG5ld3N0eWxlY2xhc3Mob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzLCBzKQogICAgICAgICAjIGRpY3Qgd2l0aCBzaGFyZWQga2V5cwotICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ24yUCcgKyAnMm5QbicpKQorICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ25RMlAnICsgJzJuUDJuJykpCiAgICAgICAgICMgdW5pY29kZQogICAgICAgICAjIGVhY2ggdHVwbGUgY29udGFpbnMgYSBzdHJpbmcgYW5kIGl0cyBleHBlY3RlZCBjaGFyYWN0ZXIgc2l6ZQogICAgICAgICAjIGRvbid0IHB1dCBhbnkgc3RhdGljIHN0cmluZ3MgaGVyZSwgYXMgdGhleSBtYXkgY29udGFpbgpAQCAtMTE5MSw2ICsxMTkyLDMyIEBACiAgICAgICAgICMgc3lzLmZsYWdzCiAgICAgICAgIGNoZWNrKHN5cy5mbGFncywgdnNpemUoJycpICsgc2VsZi5QICogbGVuKHN5cy5mbGFncykpCiAKKyAgICBkZWYgdGVzdF9hc3luY2dlbl9ob29rcyhzZWxmKToKKyAgICAgICAgb2xkID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9sZC5maXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9sZC5maW5hbGl6ZXIpCisKKyAgICAgICAgZmlyc3RpdGVyID0gbGFtYmRhICphOiBOb25lCisgICAgICAgIHN5cy5zZXRfYXN5bmNnZW5faG9va3MoZmlyc3RpdGVyPWZpcnN0aXRlcikKKyAgICAgICAgaG9va3MgPSBzeXMuZ2V0X2FzeW5jZ2VuX2hvb2tzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rcy5maXJzdGl0ZXIsIGZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1swXSwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpbmFsaXplciwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1sxXSwgTm9uZSkKKworICAgICAgICBmaW5hbGl6ZXIgPSBsYW1iZGEgKmE6IE5vbmUKKyAgICAgICAgc3lzLnNldF9hc3luY2dlbl9ob29rcyhmaW5hbGl6ZXI9ZmluYWxpemVyKQorICAgICAgICBob29rcyA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpcnN0aXRlciwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzBdLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmluYWxpemVyLCBmaW5hbGl6ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3NbMV0sIGZpbmFsaXplcikKKworICAgICAgICBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tzKCpvbGQpCisgICAgICAgIGN1ciA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjdXIuZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjdXIuZmluYWxpemVyKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFN5c01vZHVsZVRlc3QsIFNpemVvZlRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CmluZGV4IDUwOWJjM2UuLjI1YzU4MzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CkBAIC0zMzgsOCArMzM4LDggQEAKIAogICAgIGRlZiB0ZXN0XzE0X29ubGluZXJfaWYoc2VsZik6CiAgICAgICAgIGRlZiBvbmxpbmVycygpOgotICAgICAgICAgICAgaWYgVHJ1ZTogRmFsc2UKLSAgICAgICAgICAgIGVsc2U6IFRydWUKKyAgICAgICAgICAgIGlmIFRydWU6IHg9RmFsc2UKKyAgICAgICAgICAgIGVsc2U6IHg9VHJ1ZQogICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgc2VsZi5ydW5fYW5kX2NvbXBhcmUoCiAgICAgICAgICAgICBvbmxpbmVycywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKaW5kZXggYTIzYmYwNmEuLjA5MWU5MDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0zOTQsOCArMzk0LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbGludXgnIGluIHN1ZmZpeCwgc3VmZml4KQogICAgICAgICBpZiByZS5tYXRjaCgnKGlbMy02XTg2fHg4Nl82NCkkJywgbWFjaGluZSk6CiAgICAgICAgICAgICBpZiBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX2NoYXJfcCgpKSA9PSA0OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ2kzODYtbGludXgtZ251LnNvJykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnV4MzIuc28nKSwKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCdpMzg2LWxpbnV4LWdudS5zbycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC5lbmRzd2l0aCgnaTY4Ni1saW51eC1hbmRyb2lkLnNvJykgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251eDMyLnNvJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCkKICAgICAgICAgICAgIGVsc2U6ICMgOCBieXRlIHBvaW50ZXIgc2l6ZQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnUuc28nKSwgc3VmZml4KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CmluZGV4IGFiZmIzNGQuLmQ3Nzg1Y2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKQEAgLTIwNzQsNiArMjA3NCwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgdGFyZmlsZS5pdG4oMHgxMDAwMDAwMDAwMCwgNiwgdGFyZmlsZS5HTlVfRk9STUFUKQogCisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J3ZlcnNpb24nLCAnZ3JwJywgJ3B3ZCcsICdzeW1saW5rX2V4Y2VwdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAnTlVMJywgJ0JMT0NLU0laRScsICdSRUNPUkRTSVpFJywgJ0dOVV9NQUdJQycsCisgICAgICAgICAgICAgICAgICAgICAnUE9TSVhfTUFHSUMnLCAnTEVOR1RIX05BTUUnLCAnTEVOR1RIX0xJTksnLAorICAgICAgICAgICAgICAgICAgICAgJ0xFTkdUSF9QUkVGSVgnLCAnUkVHVFlQRScsICdBUkVHVFlQRScsICdMTktUWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdTWU1UWVBFJywgJ0NIUlRZUEUnLCAnQkxLVFlQRScsICdESVJUWVBFJywgJ0ZJRk9UWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdDT05UVFlQRScsICdHTlVUWVBFX0xPTkdOQU1FJywgJ0dOVVRZUEVfTE9OR0xJTksnLAorICAgICAgICAgICAgICAgICAgICAgJ0dOVVRZUEVfU1BBUlNFJywgJ1hIRFRZUEUnLCAnWEdMVFlQRScsICdTT0xBUklTX1hIRFRZUEUnLAorICAgICAgICAgICAgICAgICAgICAgJ1NVUFBPUlRFRF9UWVBFUycsICdSRUdVTEFSX1RZUEVTJywgJ0dOVV9UWVBFUycsCisgICAgICAgICAgICAgICAgICAgICAnUEFYX0ZJRUxEUycsICdQQVhfTkFNRV9GSUVMRFMnLCAnUEFYX05VTUJFUl9GSUVMRFMnLAorICAgICAgICAgICAgICAgICAgICAgJ3N0bicsICdudHMnLCAnbnRpJywgJ2l0bicsICdjYWxjX2Noa3N1bXMnLCAnY29weWZpbGVvYmonLAorICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVtb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICdFbXB0eUhlYWRlckVycm9yJywgJ1RydW5jYXRlZEhlYWRlckVycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICdFT0ZIZWFkZXJFcnJvcicsICdJbnZhbGlkSGVhZGVyRXJyb3InLAorICAgICAgICAgICAgICAgICAgICAgJ1N1YnNlcXVlbnRIZWFkZXJFcnJvcicsICdFeEZpbGVPYmplY3QnLAorICAgICAgICAgICAgICAgICAgICAgJ21haW4nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCB0YXJmaWxlLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCiAKIGNsYXNzIENvbW1hbmRMaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKaW5kZXggOGUyMTlmNC4uNTFkODJlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgdGVsbmV0bGliCi1pbXBvcnQgdGltZQogaW1wb3J0IGNvbnRleHRsaWIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00Miw2ICs0MSwxMSBAQAogICAgICAgICB0ZWxuZXQgPSB0ZWxuZXRsaWIuVGVsbmV0KEhPU1QsIHNlbGYucG9ydCkKICAgICAgICAgdGVsbmV0LnNvY2suY2xvc2UoKQogCisgICAgZGVmIHRlc3RDb250ZXh0TWFuYWdlcihzZWxmKToKKyAgICAgICAgd2l0aCB0ZWxuZXRsaWIuVGVsbmV0KEhPU1QsIHNlbGYucG9ydCkgYXMgdG46CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh0bi5nZXRfc29ja2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRuLmdldF9zb2NrZXQoKSkKKwogICAgIGRlZiB0ZXN0VGltZW91dERlZmF1bHQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb2NrZXQuZ2V0ZGVmYXVsdHRpbWVvdXQoKSBpcyBOb25lKQogICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoMzApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CmluZGV4IGI2MzA1MDkuLjg0NWU3ZDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CkBAIC04LDcgKzgsNiBAQAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiAKIGltcG9ydCByYW5kb20KLWltcG9ydCByZQogaW1wb3J0IHN5cwogX3RocmVhZCA9IGltcG9ydF9tb2R1bGUoJ190aHJlYWQnKQogdGhyZWFkaW5nID0gaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykKQEAgLTE5LDYgKzE4LDcgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gdGVzdCBpbXBvcnQgbG9ja190ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogIyBCZXR3ZWVuIGZvcmsoKSBhbmQgZXhlYygpLCBvbmx5IGFzeW5jLXNhZmUgZnVuY3Rpb25zIGFyZSBhbGxvd2VkIChpc3N1ZXMKQEAgLTExMTcsNSArMTExNywxMiBAQAogY2xhc3MgQmFycmllclRlc3RzKGxvY2tfdGVzdHMuQmFycmllclRlc3RzKToKICAgICBiYXJyaWVydHlwZSA9IHN0YXRpY21ldGhvZCh0aHJlYWRpbmcuQmFycmllcikKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geyJUaHJlYWRFcnJvciJ9CisgICAgICAgIGJsYWNrbGlzdCA9IHsnY3VycmVudFRocmVhZCcsICdhY3RpdmVDb3VudCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHRocmVhZGluZywgKCd0aHJlYWRpbmcnLCAnX3RocmVhZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQppbmRleCA3NmI4OTRlLi5mMjI0MjEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CkBAIC0xLDYgKzEsOCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IGVudW0KIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBtYXRoCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKQEAgLTIxLDE3ICsyMywyNyBAQAogVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKIFRJTUVfTUlOWUVBUiA9IC1USU1FX01BWFlFQVIgLSAxCiAKK1NFQ19UT19VUyA9IDEwICoqIDYKIFVTX1RPX05TID0gMTAgKiogMwogTVNfVE9fTlMgPSAxMCAqKiA2CiBTRUNfVE9fTlMgPSAxMCAqKiA5CitOU19UT19TRUMgPSAxMCAqKiA5CiAKIGNsYXNzIF9QeVRpbWUoZW51bS5JbnRFbnVtKToKICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCiAgICAgUk9VTkRfRkxPT1IgPSAwCiAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQogICAgIFJPVU5EX0NFSUxJTkcgPSAxCisgICAgIyBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlcgorICAgIFJPVU5EX0hBTEZfRVZFTiA9IDIKIAotQUxMX1JPVU5ESU5HX01FVEhPRFMgPSAoX1B5VGltZS5ST1VORF9GTE9PUiwgX1B5VGltZS5ST1VORF9DRUlMSU5HKQorIyBSb3VuZGluZyBtb2RlcyBzdXBwb3J0ZWQgYnkgUHlUaW1lCitST1VORElOR19NT0RFUyA9ICgKKyAgICAjIChQeVRpbWUgcm91bmRpbmcgbWV0aG9kLCBkZWNpbWFsIHJvdW5kaW5nIG1ldGhvZCkKKyAgICAoX1B5VGltZS5ST1VORF9GTE9PUiwgZGVjaW1hbC5ST1VORF9GTE9PUiksCisgICAgKF9QeVRpbWUuUk9VTkRfQ0VJTElORywgZGVjaW1hbC5ST1VORF9DRUlMSU5HKSwKKyAgICAoX1B5VGltZS5ST1VORF9IQUxGX0VWRU4sIGRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOKSwKKykKIAogCiBjbGFzcyBUaW1lVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNjA3LDc5ICs2MTksNiBAQAogCiAKIGNsYXNzIFRlc3RQeXRpbWUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5pbnZhbGlkX3ZhbHVlcyA9ICgKLSAgICAgICAgICAgIC0oMiAqKiAxMDApLCAyICoqIDEwMCwKLSAgICAgICAgICAgIC0oMi4wICoqIDEwMC4wKSwgMi4wICoqIDEwMC4wLAotICAgICAgICApCi0KLSAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKLSAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAotICAgICAgICBmb3Igb2JqLCB0aW1lX3QsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCi0gICAgICAgICAgICAoMCwgMCwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuOSwgLTIsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMS45LCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS45LCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjAsIDEsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMS45LCAyLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVfdChvYmosIHJuZCksIHRpbWVfdCkKLQotICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQsIHJuZCkKLQotICAgIEBzdXBwb3J0LmNweXRob25fb25seQotICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYwotICAgICAgICBmb3Igb2JqLCB0aW1lc3BlYywgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDFlLTEwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDAsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgxLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXNwZWM9dGltZXNwZWMpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmosIHJuZCksIHRpbWVzcGVjKQotCi0gICAgICAgIHJuZCA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCBpbnZhbGlkLCBybmQpCi0KICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X2xvY2FsdGltZV90aW1lem9uZShzZWxmKToKIApAQCAtNzM0LDI2NiArNjczLDI5MSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGx0LnRtX3pvbmUsIE5vbmUpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3Rlc3RjYXBpIGlzIG5vdCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGhlIF90ZXN0Y2FwaSBtb2R1bGUnKQotY2xhc3MgVGVzdFB5VGltZV90KHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIHRoZSBfdGVzdGNhcGkgbW9kdWxlJykKK2NsYXNzIENQeVRpbWVUZXN0Q2FzZToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIHRvIHRlc3QgdGhlIEMgX1B5VGltZV90IEFQSS4KKyAgICAiIiIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gTm9uZQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgU0laRU9GX1RJTUVfVAorICAgICAgICBiaXRzID0gU0laRU9GX1RJTUVfVCAqIDggLSAxCisgICAgICAgIHNlbGYudGltZV90X21pbiA9IC0yICoqIGJpdHMKKyAgICAgICAgc2VsZi50aW1lX3RfbWF4ID0gMiAqKiBiaXRzIC0gMQorCisgICAgZGVmIHRpbWVfdF9maWx0ZXIoc2VsZiwgc2Vjb25kcyk6CisgICAgICAgIHJldHVybiAoc2VsZi50aW1lX3RfbWluIDw9IHNlY29uZHMgPD0gc2VsZi50aW1lX3RfbWF4KQorCisgICAgZGVmIF9yb3VuZGluZ192YWx1ZXMoc2VsZiwgdXNlX2Zsb2F0KToKKyAgICAgICAgIkJ1aWxkIHRpbWVzdGFtcHMgdXNlZCB0byB0ZXN0IHJvdW5kaW5nLiIKKworICAgICAgICB1bml0cyA9IFsxLCBVU19UT19OUywgTVNfVE9fTlMsIFNFQ19UT19OU10KKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBwaWNvc2Vjb25kcyBhcmUgb25seSB0ZXN0ZWQgdG8gcHl0aW1lX2NvbnZlcnRlciBhY2NlcHRpbmcgZmxvYXRzCisgICAgICAgICAgICB1bml0cy5hcHBlbmQoMWUtMykKKworICAgICAgICB2YWx1ZXMgPSAoCisgICAgICAgICAgICAjIHNtYWxsIHZhbHVlcworICAgICAgICAgICAgMSwgMiwgNSwgNywgMTIzLCA0NTYsIDEyMzQsCisgICAgICAgICAgICAjIDEwXmsgLSAxCisgICAgICAgICAgICA5LAorICAgICAgICAgICAgOTksCisgICAgICAgICAgICA5OTksCisgICAgICAgICAgICA5OTk5LAorICAgICAgICAgICAgOTk5OTksCisgICAgICAgICAgICA5OTk5OTksCisgICAgICAgICAgICAjIHRlc3QgaGFsZiBldmVuIHJvdW5kaW5nIG5lYXIgMC41LCAxLjUsIDIuNSwgMy41LCA0LjUKKyAgICAgICAgICAgIDQ5OSwgNTAwLCA1MDEsCisgICAgICAgICAgICAxNDk5LCAxNTAwLCAxNTAxLAorICAgICAgICAgICAgMjUwMCwKKyAgICAgICAgICAgIDM1MDAsCisgICAgICAgICAgICA0NTAwLAorICAgICAgICApCisKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IFswXQorICAgICAgICBmb3IgdW5pdCBpbiB1bml0czoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgbnMgPSB2YWx1ZSAqIHVuaXQKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisgICAgICAgIGZvciBwb3cyIGluICgwLCA1LCAxMCwgMTUsIDIyLCAyMywgMjQsIDMwLCAzMyk6CisgICAgICAgICAgICBucyA9ICgyICoqIHBvdzIpICogU0VDX1RPX05TCisgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoCisgICAgICAgICAgICAgICAgLW5zLTEsIC1ucywgLW5zKzEsCisgICAgICAgICAgICAgICAgbnMtMSwgbnMsIG5zKzEKKyAgICAgICAgICAgICkpCisgICAgICAgIGZvciBzZWNvbmRzIGluIChfdGVzdGNhcGkuSU5UX01JTiwgX3Rlc3RjYXBpLklOVF9NQVgpOgorICAgICAgICAgICAgbnNfdGltZXN0YW1wcy5hcHBlbmQoc2Vjb25kcyAqIFNFQ19UT19OUykKKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBudW1iZXJzIHdpdGggYW4gZXhhY3QgcmVwcmVzZW50YXRpb24gaW4gSUVFRSA3NTQgKGJhc2UgMikKKyAgICAgICAgICAgIGZvciBwb3cyIGluICgzLCA3LCAxMCwgMTUpOgorICAgICAgICAgICAgICAgIG5zID0gMi4wICoqICgtcG93MikKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgIyBzZWNvbmRzIGNsb3NlIHRvIF9QeVRpbWVfdCB0eXBlIGxpbWl0CisgICAgICAgIG5zID0gKDIgKiogNjMgLy8gU0VDX1RPX05TKSAqIFNFQ19UT19OUworICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgcmV0dXJuIG5zX3RpbWVzdGFtcHMKKworICAgIGRlZiBfY2hlY2tfcm91bmRpbmcoc2VsZiwgcHl0aW1lX2NvbnZlcnRlciwgZXhwZWN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9mbG9hdCwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcj1Ob25lKToKKworICAgICAgICBkZWYgY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcyk6CisgICAgICAgICAgICBpZiB1c2VfZmxvYXQ6CisgICAgICAgICAgICAgICAgdW5pdF90b19ucyA9IFNFQ19UT19OUyAvIGZsb2F0KHVuaXRfdG9fc2VjKQorICAgICAgICAgICAgICAgIHZhbHVlcyA9IFtucyAvIHVuaXRfdG9fbnMgZm9yIG5zIGluIG5zX3RpbWVzdGFtcHNdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHVuaXRfdG9fbnMgPSBTRUNfVE9fTlMgLy8gdW5pdF90b19zZWMKKyAgICAgICAgICAgICAgICB2YWx1ZXMgPSBbbnMgLy8gdW5pdF90b19ucyBmb3IgbnMgaW4gbnNfdGltZXN0YW1wc10KKworICAgICAgICAgICAgaWYgdmFsdWVfZmlsdGVyOgorICAgICAgICAgICAgICAgIHZhbHVlcyA9IGZpbHRlcih2YWx1ZV9maWx0ZXIsIHZhbHVlcykKKworICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlcyBhbmQgc29ydAorICAgICAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQodmFsdWVzKSkKKworICAgICAgICAjIHRlc3Qgcm91bmRpbmcKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IHNlbGYuX3JvdW5kaW5nX3ZhbHVlcyh1c2VfZmxvYXQpCisgICAgICAgIHZhbGlkX3ZhbHVlcyA9IGNvbnZlcnRfdmFsdWVzKG5zX3RpbWVzdGFtcHMpCisgICAgICAgIGZvciB0aW1lX3JuZCwgZGVjaW1hbF9ybmQgaW4gUk9VTkRJTkdfTU9ERVMgOgorICAgICAgICAgICAgY29udGV4dCA9IGRlY2ltYWwuZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gZGVjaW1hbF9ybmQKKworICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvID0geyd2YWx1ZSc6IHZhbHVlLCAncm91bmRpbmcnOiBkZWNpbWFsX3JuZH0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkX2Z1bmModmFsdWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXJyb3Igb24gdGltZXN0YW1wIGNvbnZlcnNpb246ICVzIiAlIGRlYnVnX2luZm8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8pCisKKyAgICAgICAgIyB0ZXN0IG92ZXJmbG93CisgICAgICAgIG5zID0gc2VsZi5PVkVSRkxPV19TRUNPTkRTICogU0VDX1RPX05TCisgICAgICAgIG5zX3RpbWVzdGFtcHMgPSAoLW5zLCBucykKKyAgICAgICAgb3ZlcmZsb3dfdmFsdWVzID0gY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcykKKyAgICAgICAgZm9yIHRpbWVfcm5kLCBfIGluIFJPVU5ESU5HX01PREVTIDoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBvdmVyZmxvd192YWx1ZXM6CisgICAgICAgICAgICAgICAgZGVidWdfaW5mbyA9IHsndmFsdWUnOiB2YWx1ZSwgJ3JvdW5kaW5nJzogdGltZV9ybmR9CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtc2c9ZGVidWdfaW5mbyk6CisgICAgICAgICAgICAgICAgICAgIHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorCisgICAgZGVmIGNoZWNrX2ludF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90b19zZWM9MSwgdmFsdWVfZmlsdGVyPU5vbmUpOgorICAgICAgICBzZWxmLl9jaGVja19yb3VuZGluZyhweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcikKKworICAgIGRlZiBjaGVja19mbG9hdF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3RvX3NlYz0xLCB2YWx1ZV9maWx0ZXI9Tm9uZSk6CisgICAgICAgIHNlbGYuX2NoZWNrX3JvdW5kaW5nKHB5dGltZV9jb252ZXJ0ZXIsIGV4cGVjdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUsIHVuaXRfdG9fc2VjLCB2YWx1ZV9maWx0ZXIpCisKKyAgICBkZWYgZGVjaW1hbF9yb3VuZChzZWxmLCB4KToKKyAgICAgICAgZCA9IGRlY2ltYWwuRGVjaW1hbCh4KQorICAgICAgICBkID0gZC5xdWFudGl6ZSgxKQorICAgICAgICByZXR1cm4gaW50KGQpCisKKworY2xhc3MgVGVzdENQeVRpbWUoQ1B5VGltZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB0aGUgQyBfUHlUaW1lX3QgQVBJLgorICAgICIiIgorICAgICMgX1B5VGltZV90IGlzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyCisgICAgT1ZFUkZMT1dfU0VDT05EUyA9IG1hdGguY2VpbCgoMioqNjMgKyAxKSAvIFNFQ19UT19OUykKKwogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzCi0gICAgICAgIGZvciBzZWNvbmRzIGluICgwLCAzLCAtNDU2LCBfdGVzdGNhcGkuSU5UX01BWCwgX3Rlc3RjYXBpLklOVF9NSU4pOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kcyhzZWNvbmRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMgKiBTRUNfVE9fTlMpCisKKyAgICAgICAgIyBQeVRpbWVfRnJvbVNlY29uZHMoKSBleHBlY3RzIGEgQyBpbnQsIHJlamVjdCB2YWx1ZXMgb3V0IG9mIHJhbmdlCisgICAgICAgIGRlZiBjX2ludF9maWx0ZXIoc2Vjcyk6CisgICAgICAgICAgICByZXR1cm4gKF90ZXN0Y2FwaS5JTlRfTUlOIDw9IHNlY3MgPD0gX3Rlc3RjYXBpLklOVF9NQVgpCisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIHNlY3MsIHJuZDogUHlUaW1lX0Zyb21TZWNvbmRzKHNlY3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPWNfaW50X2ZpbHRlcikKIAogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzT2JqZWN0KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0CiAKLSAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCByb3VuZGluZyBtZXRob2RzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3Igb2JqLCB0cyBpbiAoCi0gICAgICAgICAgICAgICAgIyBpbnRlZ2VycwotICAgICAgICAgICAgICAgICgwLCAwKSwKLSAgICAgICAgICAgICAgICAoMSwgU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoLTMsIC0zICogU0VDX1RPX05TKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoCisgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QsCisgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUykKIAotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHN1YnNlY29uZHMKLSAgICAgICAgICAgICAgICAoMC4wLCAwKSwKLSAgICAgICAgICAgICAgICAoMWUtOSwgMSksCi0gICAgICAgICAgICAgICAgKDFlLTYsIDEwICoqIDMpLAotICAgICAgICAgICAgICAgICgxZS0zLCAxMCAqKiA2KSwKLQotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMi4wLCAyICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoMTIzLjAsIDEyMyAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKC03LjAsIC03ICogU0VDX1RPX05TKSwKLQotICAgICAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIqKjIyIC0gMWUtOSwgIDQxOTQzMDM5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMiwgICAgICAgICA0MTk0MzA0MDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjIgKyAxZS05LCAgNDE5NDMwNDAwMDAwMDAwMSksCi0gICAgICAgICAgICAgICAgKDIqKjIzIC0gMWUtOSwgIDgzODg2MDc5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMywgICAgICAgICA4Mzg4NjA4MDAwMDAwMDAwKSwKLQotICAgICAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMioqMjMgKyAxZS05LCAgODM4ODYwODAwMDAwMDAwMiksCi0KLSAgICAgICAgICAgICAgICAjIG5hbm9zZWNvbmRzIGFyZSBsb3N0IGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyKioyNCAtIDFlLTksIDE2Nzc3MjE1OTk5OTk5OTk4KSwKLSAgICAgICAgICAgICAgICAoMioqMjQsICAgICAgICAxNjc3NzIxNjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI0ICsgMWUtOSwgMTY3NzcyMTYwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICgyKioyNSAtIDFlLTksIDMzNTU0NDMyMDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjUgICAgICAgLCAzMzU1NDQzMjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI1ICsgMWUtOSwgMzM1NTQ0MzIwMDAwMDAwMDApLAotCi0gICAgICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAgICAgKDkyMjMzNzIwMzYsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICg5MjIzMzcyMDM2LjAsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNiwgLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNi4wLCAtOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXN0YW1wPXRzKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKLQotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qocm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNy4wLCBybmQpCi0gICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgtOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoLTkyMjMzNzIwMzcuMCwgcm5kKQotCi0gICAgICAgICMgQ29udmVyc2lvbiBnaXZpbmcgZGlmZmVyZW50IHJlc3VsdHMgZGVwZW5kaW5nIG9uIHRoZSByb3VuZGluZyBtZXRob2QKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG9iaiwgdHMsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIGNsb3NlIHRvIHplcm8KLSAgICAgICAgICAgICggMWUtMTAsICAwLCBGTE9PUiksCi0gICAgICAgICAgICAoIDFlLTEwLCAgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTFlLTEwLCAtMSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHRlc3Qgcm91bmRpbmcgb2YgdGhlIGxhc3QgbmFub3NlY29uZAotICAgICAgICAgICAgKCAxLjEyMzQ1Njc4OTksICAxMTIzNDU2Nzg5LCBGTE9PUiksCi0gICAgICAgICAgICAoIDEuMTIzNDU2Nzg5OSwgIDExMjM0NTY3OTAsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTksIC0xMTIzNDU2NzkwLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5OSwgLTExMjM0NTY3ODksIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIGNsb3NlIHRvIDEgc2Vjb25kCi0gICAgICAgICAgICAoIDAuOTk5OTk5OTk5OSwgICA5OTk5OTk5OTksIEZMT09SKSwKLSAgICAgICAgICAgICggMC45OTk5OTk5OTk5LCAgMTAwMDAwMDAwMCwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTAuOTk5OTk5OTk5OSwgLTEwMDAwMDAwMDAsIEZMT09SKSwKLSAgICAgICAgICAgICgtMC45OTk5OTk5OTk5LCAgLTk5OTk5OTk5OSwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzdGFtcD10cyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZygKKyAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCwKKyAgICAgICAgICAgIGxhbWJkYSBuczogc2VsZi5kZWNpbWFsX3JvdW5kKG5zICogU0VDX1RPX05TKSkKIAogICAgIGRlZiB0ZXN0X0FzU2Vjb25kc0RvdWJsZShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1NlY29uZHNEb3VibGUKIAotICAgICAgICBmb3IgbmFub3NlY29uZHMsIHNlY29uZHMgaW4gKAotICAgICAgICAgICAgIyBuZWFyIDEgbmFub3NlY29uZAotICAgICAgICAgICAgKCAwLCAgMC4wKSwKLSAgICAgICAgICAgICggMSwgIDFlLTkpLAotICAgICAgICAgICAgKC0xLCAtMWUtOSksCisgICAgICAgIGRlZiBmbG9hdF9jb252ZXJ0ZXIobnMpOgorICAgICAgICAgICAgaWYgYWJzKG5zKSAlIFNFQ19UT19OUyA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucyAvLyBTRUNfVE9fTlMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucykgLyBTRUNfVE9fTlMKIAotICAgICAgICAgICAgIyBuZWFyIDEgc2Vjb25kCi0gICAgICAgICAgICAoU0VDX1RPX05TICsgMSwgMS4wICsgMWUtOSksCi0gICAgICAgICAgICAoU0VDX1RPX05TLCAgICAgMS4wKSwKLSAgICAgICAgICAgIChTRUNfVE9fTlMgLSAxLCAxLjAgLSAxZS05KSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIG5zLCBybmQ6IFB5VGltZV9Bc1NlY29uZHNEb3VibGUobnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdF9jb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgIyBhIGZldyBzZWNvbmRzCi0gICAgICAgICAgICAoMTIzICogU0VDX1RPX05TLCAxMjMuMCksCi0gICAgICAgICAgICAoLTU2NyAqIFNFQ19UT19OUywgLTU2Ny4wKSwKKyAgICBkZWYgY3JlYXRlX2RlY2ltYWxfY29udmVydGVyKHNlbGYsIGRlbm9taW5hdG9yKToKKyAgICAgICAgZGVub20gPSBkZWNpbWFsLkRlY2ltYWwoZGVub21pbmF0b3IpCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoNDE5NDMwMzk5OTk5OTk5OSwgMioqMjIgLSAxZS05KSwKLSAgICAgICAgICAgICg0MTk0MzA0MDAwMDAwMDAwLCAyKioyMiksCi0gICAgICAgICAgICAoNDE5NDMwNDAwMDAwMDAwMSwgMioqMjIgKyAxZS05KSwKKyAgICAgICAgZGVmIGNvbnZlcnRlcih2YWx1ZSk6CisgICAgICAgICAgICBkID0gZGVjaW1hbC5EZWNpbWFsKHZhbHVlKSAvIGRlbm9tCisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNpbWFsX3JvdW5kKGQpCiAKLSAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICg4Mzg4NjA4MDAwMDAwMDAyLCAyKioyMyArIDFlLTkpLAorICAgICAgICByZXR1cm4gY29udmVydGVyCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMgYXJlIGxvc3QgZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTgsIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTksIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDAsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDEsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDIsIDIqKjI0ICsgMmUtOSksCi0KLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMCwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMiwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwNCwgMioqMjUgKyA0ZS05KSwKLQotICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAoOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgOTIyMzM3MjAzNi4wKSwKLSAgICAgICAgICAgICgtOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgLTkyMjMzNzIwMzYuMCksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1uYW5vc2Vjb25kcywgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1NlY29uZHNEb3VibGUobmFub3NlY29uZHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcykKLQotICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6CisgICAgZGVmIHRlc3RfQXNUaW1ldmFsKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXZhbAotICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgotICAgICAgICAgICAgZm9yIG5zLCB0diBpbiAoCi0gICAgICAgICAgICAgICAgIyBtaWNyb3NlY29uZHMKLSAgICAgICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICAgICAoMTAwMCwgKDAsIDEpKSwKLSAgICAgICAgICAgICAgICAoLTEwMDAsICgtMSwgOTk5OTk5KSksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgKDIsIDApKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsICgtMywgMCkpLAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1ldmFsKG5zLCBybmQpLCB0dikKKyAgICAgICAgdXNfY29udmVydGVyID0gc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoVVNfVE9fTlMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCB0diwgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAoMCwgMCksIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OSksIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgKDAsIDApLCBDRUlMSU5HKSwKKyAgICAgICAgZGVmIHRpbWV2YWxfY29udmVydGVyKG5zKToKKyAgICAgICAgICAgIHVzID0gdXNfY29udmVydGVyKG5zKQorICAgICAgICAgICAgcmV0dXJuIGRpdm1vZCh1cywgU0VDX1RPX1VTKQogCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQ1NjcwMDEsICgxLCAyMzQ1NjcpLCBGTE9PUiksCi0gICAgICAgICAgICAoMTIzNDU2NzAwMSwgKDEsIDIzNDU2OCksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0NTY3MDAxLCAoLTIsIDc2NTQzMiksIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNDU2NzAwMSwgKC0yLCA3NjU0MzMpLCBDRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXZhbChucywgcm5kKSwgdHYpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IExPTkdfTUlOLCBMT05HX01BWAorCisgICAgICAgICAgICAjIE9uIFdpbmRvd3MsIHRpbWV2YWwudHZfc2VjIHR5cGUgaXMgYSBDIGxvbmcKKyAgICAgICAgICAgIGRlZiBzZWNvbmRzX2ZpbHRlcihzZWNzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTE9OR19NSU4gPD0gc2VjcyA8PSBMT05HX01BWAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vjb25kc19maWx0ZXIgPSBzZWxmLnRpbWVfdF9maWx0ZXIKKworICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhQeVRpbWVfQXNUaW1ldmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1ldmFsX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2Vjb25kc19maWx0ZXIpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKF90ZXN0Y2FwaSwgJ1B5VGltZV9Bc1RpbWVzcGVjJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgX3Rlc3RjYXBpLlB5VGltZV9Bc1RpbWVzcGVjJykKLSAgICBkZWYgdGVzdF90aW1lc3BlYyhzZWxmKToKKyAgICBkZWYgdGVzdF9Bc1RpbWVzcGVjKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXNwZWMKLSAgICAgICAgZm9yIG5zLCB0cyBpbiAoCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSkpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OTk5OSkpLAogCi0gICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAotICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKKyAgICAgICAgZGVmIHRpbWVzcGVjX2NvbnZlcnRlcihucyk6CisgICAgICAgICAgICByZXR1cm4gZGl2bW9kKG5zLCBTRUNfVE9fTlMpCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNDU2Nzg5MCwgKDEsIDIzNDU2Nzg5MCkpLAotICAgICAgICAgICAgKC0xMjM0NTY3ODkwLCAoLTIsIDc2NTQzMjExMCkpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWVzcGVjPXRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWVzcGVjKG5zKSwgdHMpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKGxhbWJkYSBucywgcm5kOiBQeVRpbWVfQXNUaW1lc3BlYyhucyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzcGVjX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQogCi0gICAgZGVmIHRlc3RfbWlsbGlzZWNvbmRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X0FzTWlsbGlzZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWlsbGlzZWNvbmRzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKLSAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcwotICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEpLAotICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMiksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMCksCi0gICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMCksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgdHYpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKFB5VGltZV9Bc01pbGxpc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoTVNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19UT19TRUMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCi0gICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsIC0xLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEsIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQgKiBNU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKLSAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzUsIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzQsIENFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgbXMpCi0KLSAgICBkZWYgdGVzdF9taWNyb3NlY29uZHMoc2VsZik6CisgICAgZGVmIHRlc3RfQXNNaWNyb3NlY29uZHMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNNaWNyb3NlY29uZHMKLSAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKLSAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAotICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBVU19UT19OUywgMSksCi0gICAgICAgICAgICAgICAgKC0yICogVVNfVE9fTlMsIC0yKSwKIAotICAgICAgICAgICAgICAgICMgbWlsbGlzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBNU19UT19OUywgMTAwMCksCi0gICAgICAgICAgICAgICAgKC0yICogTVNfVE9fTlMsIC0yMDAwKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoUHlUaW1lX0FzTWljcm9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9kZWNpbWFsX2NvbnZlcnRlcihVU19UT19OUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgICAgICMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAyMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsIC0zMDAwMDAwKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCB0dikKIAotICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORwotICAgICAgICBmb3IgbnMsIG1zLCBybmQgaW4gKAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEsIDAsIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAxLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMSwgLTEsIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgMCwgQ0VJTElORyksCitjbGFzcyBUZXN0T2xkUHlUaW1lKENQeVRpbWVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgdGhlIG9sZCBDIF9QeVRpbWVfdCBBUEk6IF9QeVRpbWVfT2JqZWN0VG9YWFgoKSBmdW5jdGlvbnMuCisgICAgIiIiCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNCAqIFVTX1RPX05TICsgMSwgMTIzNCwgRkxPT1IpLAotICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzUsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNCwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgbWlsbGlzZWNvbmRzPW1zLCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCBtcykKKyAgICAjIHRpbWVfdCBpcyBhIDMyLWJpdCBvciA2NC1iaXQgc2lnbmVkIGludGVnZXIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gMiAqKiA2NAorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVfdChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZV90CisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiBzZWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWNpbWFsX3JvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICBkZWYgY3JlYXRlX2NvbnZlcnRlcihzZWxmLCBzZWNfdG9fdW5pdCk6CisgICAgICAgIGRlZiBjb252ZXJ0ZXIoc2Vjcyk6CisgICAgICAgICAgICBmbG9hdHBhcnQsIGludHBhcnQgPSBtYXRoLm1vZGYoc2VjcykKKyAgICAgICAgICAgIGludHBhcnQgPSBpbnQoaW50cGFydCkKKyAgICAgICAgICAgIGZsb2F0cGFydCAqPSBzZWNfdG9fdW5pdAorICAgICAgICAgICAgZmxvYXRwYXJ0ID0gc2VsZi5kZWNpbWFsX3JvdW5kKGZsb2F0cGFydCkKKyAgICAgICAgICAgIGlmIGZsb2F0cGFydCA8IDA6CisgICAgICAgICAgICAgICAgZmxvYXRwYXJ0ICs9IHNlY190b191bml0CisgICAgICAgICAgICAgICAgaW50cGFydCAtPSAxCisgICAgICAgICAgICBlbGlmIGZsb2F0cGFydCA+PSBzZWNfdG9fdW5pdDoKKyAgICAgICAgICAgICAgICBmbG9hdHBhcnQgLT0gc2VjX3RvX3VuaXQKKyAgICAgICAgICAgICAgICBpbnRwYXJ0ICs9IDEKKyAgICAgICAgICAgIHJldHVybiAoaW50cGFydCwgZmxvYXRwYXJ0KQorICAgICAgICByZXR1cm4gY29udmVydGVyCisKKyAgICBkZWYgdGVzdF9vYmplY3RfdG9fdGltZXZhbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXZhbAorCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNlY3M6IChzZWNzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKKworICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9jb252ZXJ0ZXIoU0VDX1RPX1VTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVzcGVjKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYworCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiAoc2VjcywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2NvbnZlcnRlcihTRUNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5IGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKaW5kZXggMmRiM2MxYi4uMWE5NWUyOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKQEAgLTM1NCw2ICszNTQsMjggQEAKICAgICAgICAgICAgIHMgPSBzZWxmLnJ1bl9tYWluKHN3aXRjaGVzPVsnLW4xJywgJzEvMCddKQogICAgICAgICBzZWxmLmFzc2VydF9leGNfc3RyaW5nKGVycm9yX3N0cmluZ2lvLmdldHZhbHVlKCksICdaZXJvRGl2aXNpb25FcnJvcicpCiAKKyAgICBkZWYgYXV0b3JhbmdlKHNlbGYsIGNhbGxiYWNrPU5vbmUpOgorICAgICAgICB0aW1lciA9IEZha2VUaW1lcihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDEpCisgICAgICAgIHQgPSB0aW1laXQuVGltZXIoc3RtdD1zZWxmLmZha2Vfc3RtdCwgc2V0dXA9c2VsZi5mYWtlX3NldHVwLCB0aW1lcj10aW1lcikKKyAgICAgICAgcmV0dXJuIHQuYXV0b3JhbmdlKGNhbGxiYWNrKQorCisgICAgZGVmIHRlc3RfYXV0b3JhbmdlKHNlbGYpOgorICAgICAgICBudW1fbG9vcHMsIHRpbWVfdGFrZW4gPSBzZWxmLmF1dG9yYW5nZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtX2xvb3BzLCAxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVfdGFrZW4sIDEuMCkKKworICAgIGRlZiB0ZXN0X2F1dG9yYW5nZV93aXRoX2NhbGxiYWNrKHNlbGYpOgorICAgICAgICBkZWYgY2FsbGJhY2soYSwgYik6CisgICAgICAgICAgICBwcmludCgie30gezouM2Z9Ii5mb3JtYXQoYSwgYikpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIG51bV9sb29wcywgdGltZV90YWtlbiA9IHNlbGYuYXV0b3JhbmdlKGNhbGxiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bV9sb29wcywgMTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lX3Rha2VuLCAxLjApCisgICAgICAgIGV4cGVjdGVkID0gKCcxMCAwLjAxMFxuJworICAgICAgICAgICAgICAgICAgICAnMTAwIDAuMTAwXG4nCisgICAgICAgICAgICAgICAgICAgICcxMDAwIDEuMDAwXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IDNiMTdjYTYuLjVhODFhNWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtNCw2ICs0LDggQEAKICAgICAgICAgICAgICAgICAgICAgIG9wZW4gYXMgdG9rZW5pemVfb3BlbiwgVW50b2tlbml6ZXIpCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgbW9jaworZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogaW1wb3J0IG9zCiBpbXBvcnQgdG9rZW4KIApAQCAtMjQsOCArMjYsNyBAQAogICAgICAgICAgICAgaWYgdHlwZSA9PSBFTkRNQVJLRVI6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHR5cGUgPSB0b2tfbmFtZVt0eXBlXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgICUodHlwZSktMTAuMTBzICUodG9rZW4pLTEzLjEzciAlKHN0YXJ0KXMgJShlbmQpcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZiIgICAge3R5cGU6MTB9IHt0b2tlbiFyOjEzfSB7c3RhcnR9IHtlbmR9IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyIgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkiXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucnN0cmlwKCkuc3BsaXRsaW5lcygpKQpAQCAtMTMyLDE4ICsxMzMsMTggQEAKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgieCA9IDB4ZmZmZmZmZmZmZmYiLCAiIiJcCiAgICAgTkFNRSAgICAgICAneCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQotICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZiAoMSwgNCkgKDEsIDE3KQorICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZmYnICgxLCA0KSAoMSwgMTcpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gMTIzMTQxMjQyMTUxMjUxNjE2MTEwIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKLSAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEgKDEsIDQpICgxLCAyNSkKKyAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEyNTE2MTYxMTAnICgxLCA0KSAoMSwgMjUpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gLTE1OTIxNTkwMjE1MDEyNTkxIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKICAgICBPUCAgICAgICAgICctJyAgICAgICAgICAgKDEsIDQpICgxLCA1KQotICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MCAoMSwgNSkgKDEsIDIyKQorICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MDEyNTkxJyAoMSwgNSkgKDEsIDIyKQogICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Zsb2F0KHNlbGYpOgpAQCAtMTg2LDYgKzE4NywyMSBAQAogICAgIE5VTUJFUiAgICAgJzMuMTRlMTU5JyAgICAoMSwgNCkgKDEsIDEyKQogICAgICIiIikKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGRlZiBudW1iZXJfdG9rZW4ocyk6CisgICAgICAgICAgICBmID0gQnl0ZXNJTyhzLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgIGZvciB0b2t0eXBlLCB0b2tlbiwgc3RhcnQsIGVuZCwgbGluZSBpbiB0b2tlbml6ZShmLnJlYWRsaW5lKToKKyAgICAgICAgICAgICAgICBpZiB0b2t0eXBlID09IE5VTUJFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuCisgICAgICAgICAgICByZXR1cm4gJ2ludmFsaWQgdG9rZW4nCisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmICcoJyBpbiBsaXQ6CisgICAgICAgICAgICAgICAgIyB0aGlzIHdvbid0IHdvcmsgd2l0aCBjb21wb3VuZCBjb21wbGV4IGlucHV0cworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bWJlcl90b2tlbihsaXQpLCBsaXQpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChudW1iZXJfdG9rZW4obGl0KSwgbGl0KQorCiAgICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFN0cmluZyBsaXRlcmFscwogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gJyc7IHkgPSBcIlwiIiwgIiIiXApAQCAtMzA3LDYgKzMyMyw1MCBAQAogICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKICAgICBTVFJJTkcgICAgICdSQiJhYmMiJyAgICAgKDEsIDMwKSAoMSwgMzcpCiAgICAgIiIiKQorICAgICAgICAjIENoZWNrIDAsIDEsIGFuZCAyIGNoYXJhY3RlciBzdHJpbmcgcHJlZml4ZXMuCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUociciYVwKK2RlXAorZmciJywgIiIiXAorICAgIFNUUklORyAgICAgJyJhXFxcXFxcbmRlXFxcXFxcbmZnIlwnICgxLCAwKSAoMywgMykKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1ImFcCitkZSInLCAiIiJcCisgICAgU1RSSU5HICAgICAndSJhXFxcXFxcbmRlIlwnICAoMSwgMCkgKDIsIDMpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHIncmIiYVwKK2QiJywgIiIiXAorICAgIFNUUklORyAgICAgJ3JiImFcXFxcXFxuZCJcJyAgKDEsIDApICgyLCAyKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJyIiImFcCitiIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ1wiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1IiIiYVwKK2IiIiInLCAiIiJcCisgICAgU1RSSU5HICAgICAndVwiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocidyYiIiImFcCitiXAorYyIiIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdyYiJcIiJhXFxcXFxcbmJcXFxcXFxuYyJcIiInICgxLCAwKSAoMywgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoJ2YiYWJjIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiYyInICAgICAgKDEsIDApICgxLCA2KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgnZlIiYXtifWMiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZSImF7Yn1jIicgICAoMSwgMCkgKDEsIDkpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCdmIiIiYWJjIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZcIlwiXCJhYmNcIlwiXCInICAoMSwgMCkgKDEsIDEwKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ2YiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiY1xcXFxcXG5kZWYiJyAoMSwgMCkgKDIsIDQpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHInUmYiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdSZiJhYmNcXFxcXFxuZGVmIicgKDEsIDApICgyLCA0KQorICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJkZWYgZDIyKGEsIGIsIGM9MiwgZD0yLCAqayk6IHBhc3MiLCAiIiJcCkBAIC01MDUsNyArNTY1LDcgQEAKICAgICAgICAgIyBNZXRob2RzCiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoIkBzdGF0aWNtZXRob2RcbmRlZiBmb28oeCx5KTogcGFzcyIsICIiIlwKICAgICBPUCAgICAgICAgICdAJyAgICAgICAgICAgKDEsIDApICgxLCAxKQotICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCAoMSwgMSkgKDEsIDEzKQorICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCcgKDEsIDEpICgxLCAxMykKICAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxMykgKDEsIDE0KQogICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMiwgMCkgKDIsIDMpCiAgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgyLCA0KSAoMiwgNykKQEAgLTE0ODgsMTAgKzE1NDgsMTAgQEAKIAogICAgICAgICAjIFRva2VuaXplIGlzIGJyb2tlbiBvbiB0ZXN0X3BlcDMxMzEucHkgYmVjYXVzZSByZWd1bGFyIGV4cHJlc3Npb25zIGFyZQogICAgICAgICAjIGJyb2tlbiBvbiB0aGUgb2JzY3VyZSB1bmljb2RlIGlkZW50aWZpZXJzIGluIGl0LiAqc2lnaCoKLSAgICAgICAgIyBXaXRoIHJvdW5kdHJpcCBleHRlbmRlZCB0byB0ZXN0IHRoZSA1LXR1cGxlIG1vZGUgb2YgIHVudG9rZW5pemUsCisgICAgICAgICMgV2l0aCByb3VuZHRyaXAgZXh0ZW5kZWQgdG8gdGVzdCB0aGUgNS10dXBsZSBtb2RlIG9mIHVudG9rZW5pemUsCiAgICAgICAgICMgNyBtb3JlIHRlc3RmaWxlcyBmYWlsLiAgUmVtb3ZlIHRoZW0gYWxzbyB1bnRpbCB0aGUgZmFpbHVyZSBpcyBkaWFnbm9zZWQuCiAKLSAgICAgICAgdGVzdGZpbGVzLnJlbW92ZShvcy5wYXRoLmpvaW4odGVtcGRpciwgInRlc3RfcGVwMzEzMS5weSIpKQorICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5IikpCiAgICAgICAgIGZvciBmIGluICgnYnVmZmVyJywgJ2J1aWx0aW4nLCAnZmlsZWlvJywgJ2luc3BlY3QnLCAnb3MnLCAncGxhdGZvcm0nLCAnc3lzJyk6CiAgICAgICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF8lcy5weSIpICUgZikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvX19pbml0X18ucHkKaW5kZXggMDRjODcyNi4uNGQwZmNhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL19faW5pdF9fLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAogCiBiYXNlcGF0aCA9IG9zLnBhdGguZGlybmFtZSggICAgICAgICAgICAgICAgICMgPHNyYy9pbnN0YWxsIGRpcj4KICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoICAgICAgICAgICAgICAgICMgTGliCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfZ3Byb2YyaHRtbC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CmluZGV4IDBjMjk0ZWMuLjk0ODllZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CkBAIC0yLDEyICsyLDExIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBpbXBvcnQgdGVtcGZpbGUKIAotZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZywgaW1wb3J0X3Rvb2wKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCiAKIHNraXBfaWZfbWlzc2luZygpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CmluZGV4IDEzMDUyOTUuLmZiNTY1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQpAQCAtMSwxMiArMSwxMSBAQAogIiIiVGVzdHMgZm9yIHRoZSBtZDVzdW0gc2NyaXB0IGluIHRoZSBUb29scyBkaXJlY3RvcnkuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCi1mcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2RpciwgaW1wb3J0X3Rvb2wsIHNraXBfaWZfbWlzc2luZworZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZwogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkKaW5kZXggMDkxZmE2YS4uMjdjYmZlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BkZXBzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9wZGVwcy5weQpAQCAtMSwxMiArMSwxMCBAQAogIiIiVGVzdHMgZm9yIHRoZSBwZGVwcyBzY3JpcHQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWZyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCitmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2tpcF9pZl9taXNzaW5nLCBpbXBvcnRfdG9vbAogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfdW5wYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CmluZGV4IDczNGJiYzIuLjY1ZGVlMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CkBAIC0xMzQsNiArMTM0LDExIEBACiBjbGFzcyBVbnBhcnNlVGVzdENhc2UoQVNUVGVzdENhc2UpOgogICAgICMgVGVzdHMgZm9yIHNwZWNpZmljIGJ1Z3MgZm91bmQgaW4gZWFybGllciB2ZXJzaW9ucyBvZiB1bnBhcnNlCiAKKyAgICBkZWYgdGVzdF9mc3RyaW5ncyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgMjUxODAKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAociIiImYne2YiezB9IiozfSciIiIpCisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHIiIiJmJ3tmInt5fSIqM30nIiIiKQorCiAgICAgZGVmIHRlc3RfZGVsX3N0YXRlbWVudChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoImRlbCB4LCB5LCB6IikKIApAQCAtMjc5LDggKzI4NCwxOCBAQAogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgnVGVzdGluZyAlcycgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIHNvdXJjZSA9IHJlYWRfcHlmaWxlKGZpbGVuYW1lKQotICAgICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoc291cmNlKQorCisgICAgICAgICAgICAjIFNvbWUgZi1zdHJpbmdzIGFyZSBub3QgY29ycmVjdGx5IHJvdW5kLXRyaXBwZWQgYnkKKyAgICAgICAgICAgICMgIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5LiAgU2VlIGlzc3VlIDI4MDAyIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgIyAgV2UgbmVlZCB0byBza2lwIGZpbGVzIHRoYXQgY29udGFpbiBzdWNoIGYtc3RyaW5ncy4KKyAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpIGluICgndGVzdF9mc3RyaW5nLnB5JywgKToKKyAgICAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZidTa2lwcGluZyB7ZmlsZW5hbWV9OiBzZWUgaXNzdWUgMjgwMDInKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZpbGVuYW1lPWZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSByZWFkX3B5ZmlsZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcChzb3VyY2UpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CmluZGV4IDAzZGZmODQuLjFkODk0YWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQpAQCAtMSwxMSArMSwxMSBAQAogaW1wb3J0IG9zCi1pbXBvcnQgaW8KIGltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJtdHJlZSwgdW5saW5rLCBjYXB0dXJlZF9zdGRvdXQKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB0cmFjZQotZnJvbSB0cmFjZSBpbXBvcnQgQ292ZXJhZ2VSZXN1bHRzLCBUcmFjZQorZnJvbSB0cmFjZSBpbXBvcnQgVHJhY2UKIAogZnJvbSB0ZXN0LnRyYWNlZG1vZHVsZXMgaW1wb3J0IHRlc3Rtb2QKIApAQCAtMzY1LDUxICszNjUsMjcgQEAKICAgICAgICAgIyBNYXRjaGVkIGJlZm9yZS4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlnbm9yZS5uYW1lcyhqbignYmFyJywgJ2Jhei5weScpLCAnYmF6JykpCiAKK2NsYXNzIFRlc3RDb21tYW5kTGluZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLWNsYXNzIFRlc3REZXByZWNhdGVkTWV0aG9kcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmFpbHVyZXMoc2VsZik6CisgICAgICAgIF9lcnJvcnMgPSAoCisgICAgICAgICAgICAoYidmaWxlbmFtZSBpcyBtaXNzaW5nOiByZXF1aXJlZCB3aXRoIHRoZSBtYWluIG9wdGlvbnMnLCAnLWwnLCAnLVQnKSwKKyAgICAgICAgICAgIChiJ2Nhbm5vdCBzcGVjaWZ5IGJvdGggLS1saXN0ZnVuY3MgYW5kICgtLXRyYWNlIG9yIC0tY291bnQpJywgJy1sYycpLAorICAgICAgICAgICAgKGInYXJndW1lbnQgLVIvLS1uby1yZXBvcnQ6IG5vdCBhbGxvd2VkIHdpdGggYXJndW1lbnQgLXIvLS1yZXBvcnQnLCAnLXJSJyksCisgICAgICAgICAgICAoYidtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAtLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzJywgJy1nJyksCisgICAgICAgICAgICAoYictci8tLXJlcG9ydCByZXF1aXJlcyAtZi8tLWZpbGUnLCAnLXInKSwKKyAgICAgICAgICAgIChiJy0tc3VtbWFyeSBjYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcsICctc1QnKSwKKyAgICAgICAgICAgIChiJ3VucmVjb2duaXplZCBhcmd1bWVudHM6IC15JywgJy15JykpCisgICAgICAgIGZvciBtZXNzYWdlLCAqYXJncyBpbiBfZXJyb3JzOgorICAgICAgICAgICAgKl8sIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAndHJhY2UnLCAqYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obWVzc2FnZSwgc3RkZXJyKQogCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF91c2FnZShzZWxmKToKLSAgICAgICAgc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRyYWNlLnVzYWdlKHNpbykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignVXNhZ2U6Jywgc2lvLmdldHZhbHVlKCkpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX0lnbm9yZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5JZ25vcmUoKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9tb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5tb2RuYW1lKCJzcGFtIikpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Z1bGxtb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5mdWxsbW9kbmFtZSgic3BhbSIpKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX2xpbmVzX2Zyb21fY29kZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lc19mcm9tX2NvZGUoZm9vLl9fY29kZV9fLCBbImVnZ3MiXSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9saW5lcyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lcyhmb28uX19jb2RlX18sIFsiZWdncyJdKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX3N0cmluZ3Moc2VsZik6CisgICAgZGVmIHRlc3RfbGlzdGZ1bmNzX2ZsYWdfc3VjY2VzcyhzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmZDoKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIFRFU1RGTikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5maW5kX3N0cmluZ3MoZmQubmFtZSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9leGVjdXRhYmxlX2xpbmVub3Moc2VsZik6Ci0gICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmQ6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBURVNURk4pCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdHJhY2UuZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmQubmFtZSkKLQorICAgICAgICAgICAgZmQud3JpdGUoImEgPSAxXG4iKQorICAgICAgICAgICAgc3RhdHVzLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ3RyYWNlJywgJy1sJywgVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ2Z1bmN0aW9ucyBjYWxsZWQ6Jywgc3Rkb3V0KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCBiNGI3NGQzLi5mMmRjNjUwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMTI1LDEyICsxMjUsMTIgQEAKICAgICAgICAgZGVmIGRvX3Rlc3QoZmlyc3RsaW5lcywgbWVzc2FnZSwgY2hhcnNldCwgbGluZW5vKToKICAgICAgICAgICAgICMgUmFpc2UgdGhlIG1lc3NhZ2UgaW4gYSBzdWJwcm9jZXNzLCBhbmQgY2F0Y2ggdGhlIG91dHB1dAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IG9wZW4oVEVTVEZOLCAidyIsIGVuY29kaW5nPWNoYXJzZXQpCi0gICAgICAgICAgICAgICAgb3V0cHV0LndyaXRlKCIiInswfWlmIDE6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignezF9JykKLSAgICAgICAgICAgICAgICAgICAgIiIiLmZvcm1hdChmaXJzdGxpbmVzLCBtZXNzYWdlKSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJ3IiwgZW5jb2Rpbmc9Y2hhcnNldCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQud3JpdGUoIiIiezB9aWYgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3sxfScpCisgICAgICAgICAgICAgICAgICAgICAgICAiIiIuZm9ybWF0KGZpcnN0bGluZXMsIG1lc3NhZ2UpKQorCiAgICAgICAgICAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCBURVNURk5dLAogICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKQEAgLTE3MSw4ICsxNzEsOCBAQAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQogICAgICAgICAgICAgZG9fdGVzdCgiIFx0XGZcbiMgY29kaW5nOiB7MH1cbiIuZm9ybWF0KGNoYXJzZXQpLAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQotICAgICAgICAjIElzc3VlICMxODk2MDogY29kaW5nIHNwZWMgc2hvdWxkIGhhcyBubyBlZmZlY3QKLSAgICAgICAgZG9fdGVzdCgiMFxuIyBjb2Rpbmc6IEdCS1xuIiwgImhceGU5IGhvIiwgJ3V0Zi04JywgNSkKKyAgICAgICAgIyBJc3N1ZSAjMTg5NjA6IGNvZGluZyBzcGVjIHNob3VsZCBoYXZlIG5vIGVmZmVjdAorICAgICAgICBkb190ZXN0KCJ4PTBcbiMgY29kaW5nOiBHQktcbiIsICJoXHhlOSBobyIsICd1dGYtOCcsIDUpCiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc190eXBlX2NvbGxlY3RpbmcKICAgICBkZWYgdGVzdF9wcmludF90cmFjZWJhY2tfYXRfZXhpdChzZWxmKToKQEAgLTI5OSw2ICsyOTksMTM3IEBACiAgICAgICAgICAgICAnICAgIHRyYWNlYmFjay5wcmludF9zdGFjaygpJywKICAgICAgICAgXSkKIAorICAgICMgaXNzdWUgMjY4MjMgLSBTaHJpbmsgcmVjdXJzaXZlIHRyYWNlYmFja3MKKyAgICBkZWYgX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheShzZWxmLCByZW5kZXJfZXhjKToKKyAgICAgICAgIyBBbHdheXMgc2hvdyBmdWxsIGRpZmZzIHdoZW4gdGhpcyB0ZXN0IGZhaWxzCisgICAgICAgICMgTm90ZSB0aGF0IHJlYXJyYW5naW5nIHRoaW5ncyBtYXkgcmVxdWlyZSBhZGp1c3RpbmcKKyAgICAgICAgIyB0aGUgcmVsYXRpdmUgbGluZSBudW1iZXJzIGluIHRoZSBleHBlY3RlZCB0cmFjZWJhY2tzCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKworICAgICAgICAjIENoZWNrIGhpdHRpbmcgdGhlIHJlY3Vyc2lvbiBsaW1pdAorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgZigpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpIGFzIHN0ZGVycl9mOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGYoKQorICAgICAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyByZWN1cnNpb24gb2NjdXJyZWQiKQorCisgICAgICAgIGxpbmVub19mID0gZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubworICAgICAgICByZXN1bHRfZiA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzV9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZisxfSwgaW4gZlxuJworICAgICAgICAgICAgJyAgICBmKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2YrMX0sIGluIGZcbicKKyAgICAgICAgICAgICcgICAgZigpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzF9LCBpbiBmXG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgIyBYWFg6IFRoZSBmb2xsb3dpbmcgbGluZSBjaGFuZ2VzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB0ZXN0cworICAgICAgICAgICAgIyBhcmUgcnVuIHRocm91Z2ggdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIG9yIHdpdGggLW0KKyAgICAgICAgICAgICMgSXQgYWxzbyB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSAoc3RhY2sgc2l6ZSkKKyAgICAgICAgICAgICMgRm9ydHVuYXRlbHksIHdlIGRvbid0IGNhcmUgYWJvdXQgZXhhY3RuZXNzIGhlcmUsIHNvIHdlIHVzZSByZWdleAorICAgICAgICAgICAgcicgIFxbUHJldmlvdXMgbGluZSByZXBlYXRlZCAoXGQrKSBtb3JlIHRpbWVzXF0nICdcbicKKyAgICAgICAgICAgICdSZWN1cnNpb25FcnJvcjogbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWRcbicKKyAgICAgICAgKQorCisgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0X2Yuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9mLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisKKyAgICAgICAgIyBDaGVjayB0aGUgb3V0cHV0IHRleHQgbWF0Y2hlcyBleHBlY3RhdGlvbnMKKyAgICAgICAgIyAybmQgbGFzdCBsaW5lIGNvbnRhaW5zIHRoZSByZXBldGl0aW9uIGNvdW50CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsWzotMl0sIGV4cGVjdGVkWzotMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoYWN0dWFsWy0yXSwgZXhwZWN0ZWRbLTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFstMV0sIGV4cGVjdGVkWy0xXSkKKworICAgICAgICAjIENoZWNrIHRoZSByZWN1cnNpb24gY291bnQgaXMgcm91Z2hseSBhcyBleHBlY3RlZAorICAgICAgICByZWNfbGltaXQgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQorICAgICAgICBzZWxmLmFzc2VydEluKGludChyZS5zZWFyY2gociJcZCsiLCBhY3R1YWxbLTJdKS5ncm91cCgpKSwgcmFuZ2UocmVjX2xpbWl0LTYwLCByZWNfbGltaXQpKQorCisgICAgICAgICMgQ2hlY2sgYSBrbm93biAobGltaXRlZCkgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBpbnZvY2F0aW9ucworICAgICAgICBkZWYgZyhjb3VudD0xMCk6CisgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZyhjb3VudC0xKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfZzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9fZyA9IGcuX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2cgPSAoCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICAnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCA2IG1vcmUgdGltZXNdXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzN9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJhaXNlIFZhbHVlRXJyb3JcbicKKyAgICAgICAgICAgICdWYWx1ZUVycm9yXG4nCisgICAgICAgICkKKyAgICAgICAgdGJfbGluZSA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzd9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGcoKVxuJworICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gKHRiX2xpbmUgKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9nLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgICAgICAjIENoZWNrIDIgZGlmZmVyZW50IHJlcGV0aXRpdmUgc2VjdGlvbnMKKyAgICAgICAgZGVmIGgoY291bnQ9MTApOgorICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGgoY291bnQtMSkKKyAgICAgICAgICAgIGcoKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfaDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9faCA9IGguX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2ggPSAoCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9faCs3fSwgaW4gX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheVxuJworICAgICAgICAgICAgJyAgICBoKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgICcgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIDYgbW9yZSB0aW1lc11cbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grM30sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgZygpXG4nCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSAocmVzdWx0X2ggKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9oLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV90cmFjZWJhY2tfcHl0aG9uKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkodHJhY2ViYWNrLnByaW50X2V4YykKKworICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfdHJhY2ViYWNrX2NweXRob25faW50ZXJuYWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBleGNlcHRpb25fcHJpbnQKKyAgICAgICAgZGVmIHJlbmRlcl9leGMoKToKKyAgICAgICAgICAgIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190YiA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGNlcHRpb25fcHJpbnQoZXhjX3ZhbHVlKQorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkocmVuZGVyX2V4YykKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdF9zdGFjayhzZWxmKToKICAgICAgICAgZGVmIGZtdCgpOgogICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5mb3JtYXRfc3RhY2soKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weSBiL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKaW5kZXggZGE4OWE5YS4uNzkwYWI3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CkBAIC0xMSw5ICsxMSwxNSBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90ZXN0Y2FwaSA9IE5vbmUKKwogCiBFTVBUWV9TVFJJTkdfU0laRSA9IHN5cy5nZXRzaXplb2YoYicnKQogCisKIGRlZiBnZXRfZnJhbWVzKG5mcmFtZSwgbGluZW5vX2RlbHRhKToKICAgICBmcmFtZXMgPSBbXQogICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQpAQCAtMzcsMjggKzQzLDMxIEBACiBkZWYgY3JlYXRlX3NuYXBzaG90cygpOgogICAgIHRyYWNlYmFja19saW1pdCA9IDIKIAorICAgICMgX3RyYWNlbWFsbG9jLl9nZXRfdHJhY2VzKCkgcmV0dXJucyBhIGxpc3Qgb2YgKGRvbWFpbiwgc2l6ZSwKKyAgICAjIHRyYWNlYmFja19mcmFtZXMpIHR1cGxlcy4gdHJhY2ViYWNrX2ZyYW1lcyBpcyBhIHR1cGxlIG9mIChmaWxlbmFtZSwKKyAgICAjIGxpbmVfbnVtYmVyKSB0dXBsZXMuCiAgICAgcmF3X3RyYWNlcyA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAoMiwgNjYsICgoJ2IucHknLCAxKSwpKSwKIAotICAgICAgICAoNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKICAgICBdCiAgICAgc25hcHNob3QgPSB0cmFjZW1hbGxvYy5TbmFwc2hvdChyYXdfdHJhY2VzLCB0cmFjZWJhY2tfbGltaXQpCiAKICAgICByYXdfdHJhY2VzMiA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg0MDAsICgoJ2MucHknLCA1NzgpLCkpLAorICAgICAgICAoNCwgNDAwLCAoKCdjLnB5JywgNTc4KSwpKSwKICAgICBdCiAgICAgc25hcHNob3QyID0gdHJhY2VtYWxsb2MuU25hcHNob3QocmF3X3RyYWNlczIsIHRyYWNlYmFja19saW1pdCkKIApAQCAtMTI2LDcgKzEzNSw3IEBACiAKICAgICBkZWYgZmluZF90cmFjZShzZWxmLCB0cmFjZXMsIHRyYWNlYmFjayk6CiAgICAgICAgIGZvciB0cmFjZSBpbiB0cmFjZXM6Ci0gICAgICAgICAgICBpZiB0cmFjZVsxXSA9PSB0cmFjZWJhY2suX2ZyYW1lczoKKyAgICAgICAgICAgIGlmIHRyYWNlWzJdID09IHRyYWNlYmFjay5fZnJhbWVzOgogICAgICAgICAgICAgICAgIHJldHVybiB0cmFjZQogCiAgICAgICAgIHNlbGYuZmFpbCgidHJhY2Ugbm90IGZvdW5kIikKQEAgLTE0MCw3ICsxNDksNyBAQAogICAgICAgICB0cmFjZSA9IHNlbGYuZmluZF90cmFjZSh0cmFjZXMsIG9ial90cmFjZWJhY2spCiAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRyYWNlLCB0dXBsZSkKLSAgICAgICAgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIG9ial9zaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlYmFjaywgb2JqX3RyYWNlYmFjay5fZnJhbWVzKQogCkBAIC0xNjcsOSArMTc2LDggQEAKIAogICAgICAgICB0cmFjZTEgPSBzZWxmLmZpbmRfdHJhY2UodHJhY2VzLCBvYmoxX3RyYWNlYmFjaykKICAgICAgICAgdHJhY2UyID0gc2VsZi5maW5kX3RyYWNlKHRyYWNlcywgb2JqMl90cmFjZWJhY2spCi0gICAgICAgIHNpemUxLCB0cmFjZWJhY2sxID0gdHJhY2UxCi0gICAgICAgIHNpemUyLCB0cmFjZWJhY2syID0gdHJhY2UyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2ViYWNrMiwgdHJhY2ViYWNrMSkKKyAgICAgICAgZG9tYWluMSwgc2l6ZTEsIHRyYWNlYmFjazEgPSB0cmFjZTEKKyAgICAgICAgZG9tYWluMiwgc2l6ZTIsIHRyYWNlYmFjazIgPSB0cmFjZTIKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0cmFjZWJhY2syLCB0cmFjZWJhY2sxKQogCiAgICAgZGVmIHRlc3RfZ2V0X3RyYWNlZF9tZW1vcnkoc2VsZik6CkBAIC0yOTIsNyArMzAwLDcgQEAKICAgICBtYXhEaWZmID0gNDAwMAogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3NuYXBzaG90KHNlbGYpOgotICAgICAgICByYXdfdHJhY2VzID0gWyg1LCAoKCdhLnB5JywgMiksKSldCisgICAgICAgIHJhd190cmFjZXMgPSBbKDAsIDUsICgoJ2EucHknLCAyKSwpKV0KIAogICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CiAgICAgICAgICAgICBzdGFjay5lbnRlcl9jb250ZXh0KHBhdGNoLm9iamVjdCh0cmFjZW1hbGxvYywgJ2lzX3RyYWNpbmcnLApAQCAtMzIyLDExICszMzAsMTEgQEAKICAgICAgICAgIyBleGNsdWRlIGIucHkKICAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWwotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICg3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgxLCAyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCiAgICAgICAgIF0pCiAKICAgICAgICAgIyBmaWx0ZXJfdHJhY2VzKCkgbXVzdCBub3QgdG91Y2ggdGhlIG9yaWdpbmFsIHNuYXBzaG90CkBAIC0zMzUsMTAgKzM0MywxMCBAQAogICAgICAgICAjIG9ubHkgaW5jbHVkZSB0d28gbGluZXMgb2YgYS5weQogICAgICAgICBzbmFwc2hvdDQgPSBzbmFwc2hvdDMuZmlsdGVyX3RyYWNlcygoZmlsdGVyMiwgZmlsdGVyMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3Q0LnRyYWNlcy5fdHJhY2VzLCBbCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDEsIDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKICAgICAgICAgXSkKIAogICAgICAgICAjIE5vIGZpbHRlcjoganVzdCBkdXBsaWNhdGUgdGhlIHNuYXBzaG90CkBAIC0zNDksNiArMzU3LDU0IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzLCBmaWx0ZXIxKQogCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW4oc2VsZik6CisgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKKyAgICAgICAgZmlsdGVyMSA9IHRyYWNlbWFsbG9jLkZpbHRlcihGYWxzZSwgImEucHkiLCBkb21haW49MSkKKyAgICAgICAgZmlsdGVyMiA9IHRyYWNlbWFsbG9jLkZpbHRlcihUcnVlLCAiYS5weSIsIGRvbWFpbj0xKQorCisgICAgICAgIG9yaWdpbmFsX3RyYWNlcyA9IGxpc3Qoc25hcHNob3QudHJhY2VzLl90cmFjZXMpCisKKyAgICAgICAgIyBleGNsdWRlIGEucHkgb2YgZG9tYWluIDEKKyAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWworICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAxCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgyLCA2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAgICAgKDMsIDcsICgoJzx1bmtub3duPicsIDApLCkpLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW5fZmlsdGVyKHNlbGYpOgorICAgICAgICBzbmFwc2hvdCwgc25hcHNob3QyID0gY3JlYXRlX3NuYXBzaG90cygpCisgICAgICAgIGZpbHRlcjEgPSB0cmFjZW1hbGxvYy5Eb21haW5GaWx0ZXIoRmFsc2UsIGRvbWFpbj0zKQorICAgICAgICBmaWx0ZXIyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIGRvbWFpbj0zKQorCisgICAgICAgICMgZXhjbHVkZSBkb21haW4gMgorICAgICAgICBzbmFwc2hvdDMgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKChmaWx0ZXIxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3QzLnRyYWNlcy5fdHJhY2VzLCBbCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAyCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjIsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgXSkKKwogICAgIGRlZiB0ZXN0X3NuYXBzaG90X2dyb3VwX2J5X2xpbmUoc2VsZik6CiAgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKICAgICAgICAgdGJfMCA9IHRyYWNlYmFja19saW5lbm8oJzx1bmtub3duPicsIDApCkBAIC04MTYsMTIgKzg3MiwxMjEgQEAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLVgnLCAndHJhY2VtYWxsb2MnLCAnLWMnLCBjb2RlKQogCiAKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCitjbGFzcyBUZXN0Q0FQSSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IDgwICogMjAKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgdHJhY2VtYWxsb2MuaXNfdHJhY2luZygpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidHJhY2VtYWxsb2MgbXVzdCBiZSBzdG9wcGVkIGJlZm9yZSB0aGUgdGVzdCIpCisKKyAgICAgICAgc2VsZi5kb21haW4gPSA1CisgICAgICAgIHNlbGYuc2l6ZSA9IDEyMworICAgICAgICBzZWxmLm9iaiA9IGFsbG9jYXRlX2J5dGVzKHNlbGYuc2l6ZSlbMF0KKworICAgICAgICAjIGZvciB0aGUgdHlwZSAib2JqZWN0IiwgaWQob2JqKSBpcyB0aGUgYWRkcmVzcyBvZiBpdHMgbWVtb3J5IGJsb2NrLgorICAgICAgICAjIFRoaXMgdHlwZSBpcyBub3QgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKKyAgICAgICAgc2VsZi5wdHIgPSBpZChzZWxmLm9iaikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICBkZWYgZ2V0X3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgZnJhbWVzID0gX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorICAgICAgICBpZiBmcmFtZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgdHJhY2soc2VsZiwgcmVsZWFzZV9naWw9RmFsc2UsIG5mcmFtZT0xKToKKyAgICAgICAgZnJhbWVzID0gZ2V0X2ZyYW1lcyhuZnJhbWUsIDIpCisgICAgICAgIF90ZXN0Y2FwaS50cmFjZW1hbGxvY190cmFjayhzZWxmLmRvbWFpbiwgc2VsZi5wdHIsIHNlbGYuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfZ2lsKQorICAgICAgICByZXR1cm4gZnJhbWVzCisKKyAgICBkZWYgdW50cmFjayhzZWxmKToKKyAgICAgICAgX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX3VudHJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorCisgICAgZGVmIGdldF90cmFjZWRfbWVtb3J5KHNlbGYpOgorICAgICAgICAjIEdldCB0aGUgdHJhY2VkIHNpemUgaW4gdGhlIGRvbWFpbgorICAgICAgICBzbmFwc2hvdCA9IHRyYWNlbWFsbG9jLnRha2Vfc25hcHNob3QoKQorICAgICAgICBkb21haW5fZmlsdGVyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIHNlbGYuZG9tYWluKQorICAgICAgICBzbmFwc2hvdCA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoW2RvbWFpbl9maWx0ZXJdKQorICAgICAgICByZXR1cm4gc3VtKHRyYWNlLnNpemUgZm9yIHRyYWNlIGluIHNuYXBzaG90LnRyYWNlcykKKworICAgIGRlZiBjaGVja190cmFjayhzZWxmLCByZWxlYXNlX2dpbCk6CisgICAgICAgIG5mcmFtZSA9IDUKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RhcnQobmZyYW1lKQorCisgICAgICAgIHNpemUgPSB0cmFjZW1hbGxvYy5nZXRfdHJhY2VkX21lbW9yeSgpWzBdCisKKyAgICAgICAgZnJhbWVzID0gc2VsZi50cmFjayhyZWxlYXNlX2dpbCwgbmZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlYmFjaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jLlRyYWNlYmFjayhmcmFtZXMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCBzZWxmLnNpemUpCisKKyAgICBkZWYgdGVzdF90cmFjayhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja190cmFjayhGYWxzZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19UcmFjaygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgICMgd29ya3MgdG9vCisgICAgICAgIHNlbGYuY2hlY2tfdHJhY2soVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX2FscmVhZHlfdHJhY2tlZChzZWxmKToKKyAgICAgICAgbmZyYW1lID0gNQorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydChuZnJhbWUpCisKKyAgICAgICAgIyB0cmFjayBhIGZpcnN0IHRpbWUKKyAgICAgICAgc2VsZi50cmFjaygpCisKKyAgICAgICAgIyBjYWxsaW5nIF9QeVRyYWNlTWFsbG9jX1RyYWNrKCkgbXVzdCByZW1vdmUgdGhlIG9sZCB0cmFjZSBhbmQgYWRkCisgICAgICAgICMgYSBuZXcgdHJhY2Ugd2l0aCB0aGUgbmV3IHRyYWNlYmFjaworICAgICAgICBmcmFtZXMgPSBzZWxmLnRyYWNrKG5mcmFtZT1uZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2ViYWNrKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykpCisKKyAgICBkZWYgdGVzdF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisKKyAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlZF9tZW1vcnkoKSwgc2VsZi5zaXplKQorCisgICAgICAgICMgdW50cmFjayBtdXN0IHJlbW92ZSB0aGUgdHJhY2UKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5nZXRfdHJhY2ViYWNrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCAwKQorCisgICAgICAgICMgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19VbnRyYWNrKCkgbXVsdGlwbGUgdGltZXMgbXVzdCBub3QgY3Jhc2gKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKworICAgIGRlZiB0ZXN0X3N0b3BfdHJhY2soc2VsZik6CisgICAgICAgIHRyYWNlbWFsbG9jLnN0YXJ0KCkKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorCisgICAgZGVmIHRlc3Rfc3RvcF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisgICAgICAgIHNlbGYudHJhY2soKQorCisgICAgICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnVudHJhY2soKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVGVzdFRyYWNlbWFsbG9jRW5hYmxlZCwKICAgICAgICAgVGVzdFNuYXBzaG90LAogICAgICAgICBUZXN0RmlsdGVycywKICAgICAgICAgVGVzdENvbW1hbmRMaW5lLAorICAgICAgICBUZXN0Q0FQSSwKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQppbmRleCA0OTBlNzIzLi40NjI2NjVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKaW5kZXggNTY2ZmM5ZC4uNzU0MGE0MzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CkBAIC0xLDQgKzEsMyBAQAotaW1wb3J0IG9zCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogIyBTa2lwIHRoaXMgdGVzdCBpZiBfdGtpbnRlciBkb2VzIG5vdCBleGlzdC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CmluZGV4IDVlNzQxMTUuLjM4MmNhMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQpAQCAtNDgsNiArNDgsNyBAQAogICAgIGRlZiB0ZXN0X2Zsb2F0X2NvbnN0cnVjdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnNVwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICc1XzVcMCcpCiAKICAgICBkZWYgdGVzdF96ZXJvX2RpdmlzaW9uKHNlbGYpOgogICAgICAgICB0cnk6IDUuMCAvIDAuMApAQCAtMTAwMCw2ICsxMDAxLDI0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoaW50KCksIEMpKQogCisgICAgZGVmIHRlc3Rfb25lX2FyZ3VtZW50X3R5cGUoc2VsZik6CisgICAgICAgIGV4cGVjdGVkX21lc3NhZ2UgPSAndHlwZS5fX25ld19fKCkgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cyAoMSBnaXZlbiknCisKKyAgICAgICAgIyBPbmx5IHR5cGUgaXRzZWxmIGNhbiB1c2UgdGhlIG9uZS1hcmd1bWVudCBmb3JtICgjMjcxNTcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSg1KSwgaW50KQorCisgICAgICAgIGNsYXNzIE0odHlwZSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIE0oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKworICAgICAgICBjbGFzcyBOKHR5cGUsIG1ldGFjbGFzcz1NKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgTig1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCBleHBlY3RlZF9tZXNzYWdlKQorCiAKIGNsYXNzIFNpbXBsZU5hbWVzcGFjZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CmluZGV4IDYwODZiYjguLjQzMmEwMDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAoraW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKQEAgLTk4Niw2ICs5ODcsMTkgQEAKICAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKToKICAgICAgICAgICAgICAgICByZXR1cm4gaW50Ll9fZm9ybWF0X18oc2VsZiAqIDIsIGZvcm1hdF9zcGVjKQogCisgICAgICAgIGNsYXNzIE06CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnTSgnICsgc2VsZi54ICsgJyknCisgICAgICAgICAgICBfX3N0cl9fID0gTm9uZQorCisgICAgICAgIGNsYXNzIE46CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnTignICsgc2VsZi54ICsgJyknCisgICAgICAgICAgICBfX2Zvcm1hdF9fID0gTm9uZQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZm9ybWF0KCksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnLmZvcm1hdCgpLCAnYWJjJykKQEAgLTEyMDAsNiArMTIxNCwxNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjB4ezowezpkfVh9Ii5mb3JtYXQoMHgwLDE2KSwgIjB4MDAwMDAwMDAwMDAwMDAwMCIpCiAKKyAgICAgICAgIyBCbG9ja2luZyBmYWxsYmFjaworICAgICAgICBtID0gTSgnZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshcn0iLmZvcm1hdChtKSwgJ00oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7IXN9Ii5mb3JtYXQsIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgInt9Ii5mb3JtYXQsIG0pCisgICAgICAgIG4gPSBOKCdkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieyFyfSIuZm9ybWF0KG4pLCAnTihkYXRhKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshc30iLmZvcm1hdChuKSwgJ04oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7fSIuZm9ybWF0LCBuKQorCiAgICAgZGVmIHRlc3RfZm9ybWF0X21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5mb3JtYXRfbWFwKHt9KSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2EnLmZvcm1hdF9tYXAoe30pLCAnYScpCkBAIC0xNTQxLDcgKzE1NjUsNyBAQAogICAgICAgICAgICAgKCcrJywgYicrLScpLAogICAgICAgICAgICAgKCcrLScsIGInKy0tJyksCiAgICAgICAgICAgICAoJys/JywgYicrLT8nKSwKLSAgICAgICAgICAgICgnXD8nLCBiJytBRnc/JyksCisgICAgICAgICAgICAocidcPycsIGInK0FGdz8nKSwKICAgICAgICAgICAgICgnKz8nLCBiJystPycpLAogICAgICAgICAgICAgKHInXFw/JywgYicrQUZ3QVhBPycpLAogICAgICAgICAgICAgKHInXFxcPycsIGInK0FGd0FYQUJjPycpLApAQCAtMjM4OSw2ICsyNDEzLDEzIEBACiAgICAgICAgIHN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgaXRlciwgc3RyKQogICAgICAgICBzdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIHJldmVyc2VkLCBzdHIpCiAKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3NlcXVlbmNlcyhzZWxmKToKKyAgICAgICAgZm9yIGxldHRlciBpbiBzdHJpbmcuYXNjaWlfbGV0dGVycyArICI4OSI6ICMgMC03IGFyZSBvY3RhbCBlc2NhcGVzCisgICAgICAgICAgICBpZiBsZXR0ZXIgaW4gImFiZm5ydHV2eE5VIjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgZXZhbChyIidcJXMnIiAlIGxldHRlcikKKwogCiBjbGFzcyBDQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTI0MjAsNyArMjQ1MSw3IEBACiAgICAgICAgICMgbm9uLWFzY2lpIGZvcm1hdCwgYXNjaWkgYXJndW1lbnQ6IGVuc3VyZSB0aGF0IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpCiAgICAgICAgICMgcmFpc2VzIGFuIGVycm9yCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICdeUHlVbmljb2RlX0Zyb21Gb3JtYXRWXChcKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICcKKyAgICAgICAgICAgIHInXlB5VW5pY29kZV9Gcm9tRm9ybWF0VlwoXCkgZXhwZWN0cyBhbiBBU0NJSS1lbmNvZGVkIGZvcm1hdCAnCiAgICAgICAgICAgICAnc3RyaW5nLCBnb3QgYSBub24tQVNDSUkgYnl0ZTogMHhlOSQnLAogICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21Gb3JtYXQsIGIndW5pY29kZVx4ZTk9JXMnLCAnYXNjaWknKQogCkBAIC0yNzQ5LDcgKzI3ODAsNiBAQAogICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgc2Vjb25kIGNhbGwgcmV0dXJucyB0aGUgc2FtZSByZXN1bHQKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3Nfc19oYXNoKHMpLCBjaHIoaykuZW5jb2RlKCkgKiAoaSArIDEpKQogCi0KIGNsYXNzIFN0cmluZ01vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Zvcm1hdHRlcl9wYXJzZXIoc2VsZik6CiAgICAgICAgIGRlZiBwYXJzZShmb3JtYXQpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZV9mdW5jdGlvbnMucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZV9mdW5jdGlvbnMucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9pZGVudGlmaWVycy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3VuaWNvZGVfaWRlbnRpZmllcnMucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CmluZGV4IDZlY2M5MTMuLjRmYzExZWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQpAQCAtMjAsNyArMjAsNyBAQAogY2xhc3MgVW5pY29kZU1ldGhvZHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgdXBkYXRlIHRoaXMsIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICc1OTcxNzYwODcyYjJmOThiYjljNzAxZTZjMGRiMzI3M2Q3NTZiM2VjJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnYzFmYTk4Njc0YTY4M2FhOGE4ZDhkZWUwYzg0NDk0ZjhkMzYzNDZlNicKIAogICAgIGRlZiB0ZXN0X21ldGhvZF9jaGVja3N1bShzZWxmKToKICAgICAgICAgaCA9IGhhc2hsaWIuc2hhMSgpCkBAIC04MCw3ICs4MCw3IEBACiAKICAgICAjIFVwZGF0ZSB0aGlzIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzLiBNYWtlIHN1cmUgdG8gZG8gYSBmdWxsIHJlYnVpbGQKICAgICAjIChlLmcuICdtYWtlIGRpc3RjbGVhbiAmJiBtYWtlJykgdG8gZ2V0IHRoZSBjb3JyZWN0IGNoZWNrc3VtLgotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnNWU3NDgyN2NkMDdmOWU1NDZhMzBmMzRiN2JjZjZjYzJlYWMzOGM4YycKKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2Y4OTFiMWU2NDMwYzcxMjUzMWI5YmM5MzVhMzhlMjJkNzhiYTFiZjMnCiAgICAgZGVmIHRlc3RfZnVuY3Rpb25fY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGRhdGEgPSBbXQogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTIyMiw2ICsyMjIsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlYXcoJ1x1MjAxMCcpLCAnQScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWF3KCdcVTAwMDIwMDAwJyksICdXJykKIAorICAgIGRlZiB0ZXN0X2Vhc3RfYXNpYW5fd2lkdGhfOV8wX2NoYW5nZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi51Y2RfM18yXzAuZWFzdF9hc2lhbl93aWR0aCgnXHUyMzFhJyksICdOJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmVhc3RfYXNpYW5fd2lkdGgoJ1x1MjMxYScpLCAnVycpCisKIGNsYXNzIFVuaWNvZGVNaXNjVGVzdChVbmljb2RlRGF0YWJhc2VUZXN0KToKIAogICAgIGRlZiB0ZXN0X2ZhaWxlZF9pbXBvcnRfZHVyaW5nX2NvbXBpbGluZyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5IGIvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkKaW5kZXggZDFjY2IzOC4uM2ZjYjE4ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkKQEAgLTExNyw2ICsxMTcsMjcgQEAKICAgICAgIC4uLgogICAgIHRlc3QudGVzdF91bnBhY2suQm96b0Vycm9yCiAKK0FsbG93IHVucGFja2luZyBlbXB0eSBpdGVyYWJsZXMKKworICAgID4+PiAoKSA9IFtdCisgICAgPj4+IFtdID0gKCkKKyAgICA+Pj4gW10gPSBbXQorICAgID4+PiAoKSA9ICgpCisKK1VucGFja2luZyBub24taXRlcmFibGVzIHNob3VsZCByYWlzZSBUeXBlRXJyb3IKKworICAgID4+PiAoKSA9IDQyCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiAnaW50JyBvYmplY3QgaXMgbm90IGl0ZXJhYmxlCisKK1VucGFja2luZyB0byBhbiBlbXB0eSBpdGVyYWJsZSBzaG91bGQgcmFpc2UgVmFsdWVFcnJvcgorCisgICAgPj4+ICgpID0gWzQyXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFZhbHVlRXJyb3I6IHRvbyBtYW55IHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIDApCisKICIiIgogCiBfX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weSBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CmluZGV4IDc0MzQ2YjQuLjZiZThmNTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CkBAIC0zNTcsNyArMzU3LDYgQEAKIF9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKLSAgICBpbXBvcnQgc3lzCiAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3VucGFja19leAogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF91bnBhY2tfZXgsIHZlcmJvc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CmluZGV4IDI0NzU5OGEuLjQzZWE2YjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CkBAIC00NjksMTAgKzQ2OSwxMSBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbCwgInNzbCBtb2R1bGUgcmVxdWlyZWQiKQogICAgIGRlZiB0ZXN0X2NhZmlsZV9hbmRfY29udGV4dChzZWxmKToKICAgICAgICAgY29udGV4dCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oCi0gICAgICAgICAgICAgICAgImh0dHBzOi8vbG9jYWxob3N0IiwgY2FmaWxlPSIvbm9uZXhpc3RlbnQvcGF0aCIsIGNvbnRleHQ9Y29udGV4dAotICAgICAgICAgICAgKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3BlbigKKyAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vbG9jYWxob3N0IiwgY2FmaWxlPSIvbm9uZXhpc3RlbnQvcGF0aCIsIGNvbnRleHQ9Y29udGV4dAorICAgICAgICAgICAgICAgICkKIAogY2xhc3MgdXJsb3Blbl9EYXRhVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3QgdXJsb3BlbigpIG9wZW5pbmcgYSBkYXRhIFVSTC4iIiIKQEAgLTcyOSw3ICs3MzAsNyBAQAogCiAKIGNsYXNzIFF1b3RpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZm9yIHVybGxpYi5xdW90ZSgpIGFuZCB1cmxsaWIucXVvdGVfcGx1cygpCisgICAgciIiIlRlc3RzIGZvciB1cmxsaWIucXVvdGUoKSBhbmQgdXJsbGliLnF1b3RlX3BsdXMoKQogCiAgICAgQWNjb3JkaW5nIHRvIFJGQyAyMzk2IChVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXJzKSwgdG8gZXNjYXBlIGEKICAgICBjaGFyYWN0ZXIgeW91IHdyaXRlIGl0IGFzICclJyArIDwyIGNoYXJhY3RlciBVUy1BU0NJSSBoZXggdmFsdWU+LgpAQCAtODA0LDcgKzgwNSw3IEBACiAgICAgICAgICMgTWFrZSBzdXJlIGFsbCBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGJlIHF1b3RlZCBhcmUgYnkgZGVmYXVsdCBzYW5zCiAgICAgICAgICMgc3BhY2UgKHNlcGFyYXRlIHRlc3QgZm9yIHRoYXQpLgogICAgICAgICBzaG91bGRfcXVvdGUgPSBbY2hyKG51bSkgZm9yIG51bSBpbiByYW5nZSgzMildICMgRm9yIDB4MDAgLSAweDFGCi0gICAgICAgIHNob3VsZF9xdW90ZS5hcHBlbmQoJzw+IyUie318XF5bXWAnKQorICAgICAgICBzaG91bGRfcXVvdGUuYXBwZW5kKHInPD4jJSJ7fXxcXltdYCcpCiAgICAgICAgIHNob3VsZF9xdW90ZS5hcHBlbmQoY2hyKDEyNykpICMgRm9yIDB4N0YKICAgICAgICAgc2hvdWxkX3F1b3RlID0gJycuam9pbihzaG91bGRfcXVvdGUpCiAgICAgICAgIGZvciBjaGFyIGluIHNob3VsZF9xdW90ZToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQppbmRleCBlZGE3Y2NjLi4zNDMyOWY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CkBAIC03LDYgKzcsOCBAQAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGFycmF5CiBpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBzdWJwcm9jZXNzCiAKIGltcG9ydCB1cmxsaWIucmVxdWVzdAogIyBUaGUgcHJveHkgYnlwYXNzIG1ldGhvZCBpbXBvcnRlZCBiZWxvdyBoYXMgbG9naWMgc3BlY2lmaWMgdG8gdGhlIE9TWApAQCAtMzM1LDcgKzMzNyw4IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl90dW5uZWxfaGVhZGVycy5jbGVhcigpCiAKLSAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPU5vbmUpOgorICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9Tm9uZSwgKiwKKyAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1GYWxzZSk6CiAgICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCiAgICAgICAgIHNlbGYuc2VsZWN0b3IgPSB1cmwKICAgICAgICAgaWYgaGVhZGVycyBpcyBub3QgTm9uZToKQEAgLTM0Myw2ICszNDYsNyBAQAogICAgICAgICBzZWxmLnJlcV9oZWFkZXJzLnNvcnQoKQogICAgICAgICBpZiBib2R5OgogICAgICAgICAgICAgc2VsZi5kYXRhID0gYm9keQorICAgICAgICBzZWxmLmVuY29kZV9jaHVua2VkID0gZW5jb2RlX2NodW5rZWQKICAgICAgICAgaWYgc2VsZi5yYWlzZV9vbl9lbmRoZWFkZXJzOgogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigpCiAKQEAgLTkwOCw0MSArOTEyLDExMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEudW5yZWRpcmVjdGVkX2hkcnNbIkhvc3QiXSwgImJheiIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS51bnJlZGlyZWN0ZWRfaGRyc1siU3BhbSJdLCAiZm9vIikKIAotICAgICAgICAjIENoZWNrIGl0ZXJhYmxlIGJvZHkgc3VwcG9ydAotICAgICAgICBkZWYgaXRlcmFibGVfYm9keSgpOgotICAgICAgICAgICAgeWllbGQgYiJvbmUiCi0gICAgICAgICAgICB5aWVsZCBiInR3byIKLSAgICAgICAgICAgIHlpZWxkIGIidGhyZWUiCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2ZpbGUoc2VsZik6CisgICAgICAgICMgQSByZWd1bGFyIGZpbGUgLSBjaHVua2VkIGVuY29kaW5nIGlzIHVzZWQgdW5sZXNzIENvbnRlbnQgTGVuZ3RoIGlzCisgICAgICAgICMgYWxyZWFkeSBzZXQuCiAKLSAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAxMX06Ci0gICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgaXRlcmFibGVfYm9keSgpLCBoZWFkZXJzKQotICAgICAgICAgICAgaWYgbm90IGhlYWRlcnM6Ci0gICAgICAgICAgICAgICAgIyBIYXZpbmcgYW4gaXRlcmFibGUgYm9keSB3aXRob3V0IGEgQ29udGVudC1MZW5ndGggc2hvdWxkCi0gICAgICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24KLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoLmRvX3JlcXVlc3RfLCByZXEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQogCi0gICAgICAgICMgQSBmaWxlIG9iamVjdC4KLSAgICAgICAgIyBUZXN0IG9ubHkgQ29udGVudC1MZW5ndGggYXR0cmlidXRlIG9mIHJlcXVlc3QuCisgICAgICAgIGZpbGVfb2JqID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9J3crYicsIGRlbGV0ZT1GYWxzZSkKKyAgICAgICAgZmlsZV9wYXRoID0gZmlsZV9vYmoubmFtZQorICAgICAgICBmaWxlX29iai5jbG9zZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy51bmxpbmssIGZpbGVfcGF0aCkKIAorICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGYsIHt9KQorICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICB0ZSA9IG5ld3JlcS5nZXRfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlLCAiY2h1bmtlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld3JlcS5oYXNfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICJyYiIpIGFzIGY6CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZiwgeyJDb250ZW50LUxlbmd0aCI6IDMwfSkKKyAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAzMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoIlRyYW5zZmVyLWVuY29kaW5nIikpCisKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfZmlsZW9iaihzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgb2JqZWN0IC0gY2h1bmtlZCBlbmNvZGluZyBpcyB1c2VkCisgICAgICAgICMgdW5sZXNzIENvbnRlbnQgTGVuZ3RoIGlzIGFscmVhZHkgc2V0LgorICAgICAgICAjIChOb3RlIHRoYXQgdGhlcmUgYXJlIHNvbWUgc3VidGxlIGRpZmZlcmVuY2VzIHRvIGEgcmVndWxhcgorICAgICAgICAjIGZpbGUsIHRoYXQgaXMgd2h5IHdlIGFyZSB0ZXN0aW5nIGJvdGggY2FzZXMuKQorCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCiAgICAgICAgIGZpbGVfb2JqID0gaW8uQnl0ZXNJTygpCi0gICAgICAgIGZpbGVfb2JqLndyaXRlKGIiU29tZXRoaW5nXG5Tb21ldGhpbmdcblNvbWV0aGluZ1xuIikKIAotICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDMwfToKLSAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmaWxlX29iaiwgaGVhZGVycykKLSAgICAgICAgICAgIGlmIG5vdCBoZWFkZXJzOgotICAgICAgICAgICAgICAgICMgSGF2aW5nIGFuIGl0ZXJhYmxlIGJvZHkgd2l0aG91dCBhIENvbnRlbnQtTGVuZ3RoIHNob3VsZAotICAgICAgICAgICAgICAgICMgcmFpc2UgYW4gZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaC5kb19yZXF1ZXN0XywgcmVxKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDMwKQorICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmlsZV9vYmosIHt9KQorICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSwgJ2NodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld3JlcS5oYXNfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKQorCisgICAgICAgIGhlYWRlcnMgPSB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9CisgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmaWxlX29iaiwgaGVhZGVycykKKyAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMzApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoIlRyYW5zZmVyLWVuY29kaW5nIikpCiAKICAgICAgICAgZmlsZV9vYmouY2xvc2UoKQogCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X3BpcGUoc2VsZik6CisgICAgICAgICMgQSBmaWxlIHJlYWRpbmcgZnJvbSBhIHBpcGUuCisgICAgICAgICMgQSBwaXBlIGNhbm5vdCBiZSBzZWVrJ2VkLiAgVGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSB0aGUKKyAgICAgICAgIyBjb250ZW50IGxlbmd0aCB1cCBmcm9udC4gIFRodXMsIGRvX3JlcXVlc3RfKCkgc2hvdWxkIGZhbGwKKyAgICAgICAgIyBiYWNrIHRvIFRyYW5zZmVyLWVuY29kaW5nIGNodW5rZWQuCisKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKKworICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsICItYyIsIHIicGFzcyJdCisgICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9OgorICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkgYXMgcHJvYzoKKyAgICAgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgcHJvYy5zdGRvdXQsIGhlYWRlcnMpCisgICAgICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICAgICAgaWYgbm90IGhlYWRlcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJyksIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NodW5rZWQnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMCkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9pdGVyYWJsZShzZWxmKToKKyAgICAgICAgIyBHZW5lcmljIGl0ZXJhYmxlLiAgVGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSB0aGUgY29udGVudAorICAgICAgICAjIGxlbmd0aCB1cCBmcm9udC4gIEZhbGwgYmFjayB0byBUcmFuc2Zlci1lbmNvZGluZyBjaHVua2VkLgorCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCisKKyAgICAgICAgZGVmIGl0ZXJhYmxlX2JvZHkoKToKKyAgICAgICAgICAgIHlpZWxkIGIib25lIgorCisgICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMTF9OgorICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGl0ZXJhYmxlX2JvZHkoKSwgaGVhZGVycykKKyAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICAgICAgaWYgbm90IGhlYWRlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NodW5rZWQnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDExKQorCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2VtcHR5X3NlcShzZWxmKToKKyAgICAgICAgIyBaZXJvLWxlbmd0aCBpdGVyYWJsZSBib2R5IHNob3VsZCBiZSB0cmVhdGVkIGxpa2UgYW55IG90aGVyIGl0ZXJhYmxlCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKKyAgICAgICAgcmVxID0gaC5kb19yZXF1ZXN0XyhSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaGVhZGVyKCJUcmFuc2Zlci1lbmNvZGluZyIpLCAiY2h1bmtlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVxLmhhc19oZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIikpCisKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfYXJyYXkoc2VsZik6CiAgICAgICAgICMgYXJyYXkuYXJyYXkgSXRlcmFibGUgLSBDb250ZW50IExlbmd0aCBpcyBjYWxjdWxhdGVkCiAKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKKwogICAgICAgICBpdGVyYWJsZV9hcnJheSA9IGFycmF5LmFycmF5KCJJIixbMSwyLDMsNF0pCiAKICAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAxNn06CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKaW5kZXggYzhiMzdlZS4uZTZhNTIyYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQpAQCAtMjg5LDEyICsyODksMTIgQEAKICAgICAgICAgZGVmIGh0dHBfc2VydmVyX3dpdGhfYmFzaWNfYXV0aF9oYW5kbGVyKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICByZXR1cm4gQmFzaWNBdXRoSGFuZGxlcigqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuc2VydmVyID0gTG9vcGJhY2tIdHRwU2VydmVyVGhyZWFkKGh0dHBfc2VydmVyX3dpdGhfYmFzaWNfYXV0aF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXJ2ZXIuc3RvcCkKICAgICAgICAgc2VsZi5zZXJ2ZXJfdXJsID0gJ2h0dHA6Ly8xMjcuMC4wLjE6JXMnICUgc2VsZi5zZXJ2ZXIucG9ydAogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCiAgICAgICAgIHNlbGYuc2VydmVyLnJlYWR5LndhaXQoKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKICAgICAgICAgc3VwZXIoQmFzaWNBdXRoVGVzdHMsIHNlbGYpLnRlYXJEb3duKCkKIAogICAgIGRlZiB0ZXN0X2Jhc2ljX2F1dGhfc3VjY2VzcyhzZWxmKToKQEAgLTQzOCwxNyArNDM4LDEzIEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKFRlc3RVcmxvcGVuLCBzZWxmKS5zZXRVcCgpCi0gICAgICAgICMgSWdub3JlIHByb3hpZXMgZm9yIGxvY2FsaG9zdCB0ZXN0cy4KLSAgICAgICAgc2VsZi5vbGRfZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0gICAgICAgIG9zLmVudmlyb25bJ05PX1BST1hZJ10gPSAnKicKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuc2VydmVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCi0gICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQotICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShzZWxmLm9sZF9lbnZpcm9uKQotICAgICAgICBzdXBlcihUZXN0VXJsb3Blbiwgc2VsZikudGVhckRvd24oKQorICAgICAgICAjIElnbm9yZSBwcm94aWVzIGZvciBsb2NhbGhvc3QgdGVzdHMuCisgICAgICAgIGRlZiByZXN0b3JlX2Vudmlyb24ob2xkX2Vudmlyb24pOgorICAgICAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCisgICAgICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShvbGRfZW52aXJvbikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfZW52aXJvbiwgb3MuZW52aXJvbi5jb3B5KCkpCisgICAgICAgIG9zLmVudmlyb25bJ05PX1BST1hZJ10gPSAnKicKIAogICAgIGRlZiB1cmxvcGVuKHNlbGYsIHVybCwgZGF0YT1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIGwgPSBbXQpAQCAtNDY5LDYgKzQ2NSw3IEBACiAgICAgICAgIGhhbmRsZXIgPSBHZXRSZXF1ZXN0SGFuZGxlcihyZXNwb25zZXMpCiAKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBMb29wYmFja0h0dHBTZXJ2ZXJUaHJlYWQoaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2VydmVyLnN0b3ApCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKICAgICAgICAgc2VsZi5zZXJ2ZXIucmVhZHkud2FpdCgpCiAgICAgICAgIHBvcnQgPSBzZWxmLnNlcnZlci5wb3J0CkBAIC01NTEsMjYgKzU0OCwyOCBAQAogCiAgICAgZGVmIHRlc3RfaHR0cHNfd2l0aF9jYWZpbGUoc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKLSAgICAgICAgIyBHb29kIGNlcnQKLSAgICAgICAgZGF0YSA9IHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfbG9jYWxob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIid2UgY2FyZSBhIGJpdCIpCi0gICAgICAgICMgQmFkIGNlcnQKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCi0gICAgICAgICMgR29vZCBjZXJ0LCBidXQgbWlzbWF0Y2hpbmcgaG9zdG5hbWUKLSAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgR29vZCBjZXJ0CisgICAgICAgICAgICBkYXRhID0gc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfbG9jYWxob3N0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiIndlIGNhcmUgYSBiaXQiKQorICAgICAgICAgICAgIyBCYWQgY2VydAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgICAgICMgR29vZCBjZXJ0LCBidXQgbWlzbWF0Y2hpbmcgaG9zdG5hbWUKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKIAogICAgIGRlZiB0ZXN0X2h0dHBzX3dpdGhfY2FkZWZhdWx0KHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY2VydGZpbGU9Q0VSVF9sb2NhbGhvc3QpCiAgICAgICAgICMgU2VsZi1zaWduZWQgY2VydCBzaG91bGQgZmFpbCB2ZXJpZmljYXRpb24gd2l0aCBzeXN0ZW0gY2VydGlmaWNhdGUgc3RvcmUKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FkZWZhdWx0PVRydWUpCiAKICAgICBkZWYgdGVzdF9odHRwc19zbmkoc2VsZik6CiAgICAgICAgIGlmIHNzbCBpcyBOb25lOgpAQCAtNTkyLDcgKzU5MSw4IEBACiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X3NlcnZlcigpCiAgICAgICAgIHJlcSA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QoImh0dHA6Ly9sb2NhbGhvc3Q6JXMvIiAlIGhhbmRsZXIucG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsiUmFuZ2UiOiAiYnl0ZXM9MjAtMzkifSkKLSAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXEpCisgICAgICAgIHdpdGggdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXEpOgorICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIuaGVhZGVyc19yZWNlaXZlZFsiUmFuZ2UiXSwgImJ5dGVzPTIwLTM5IikKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgpAQCAtNjA4LDIyICs2MDgsMjEgQEAKIAogICAgIGRlZiB0ZXN0X2luZm8oc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9wZW5fdXJsID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbigKLSAgICAgICAgICAgICAgICAiaHR0cDovL2xvY2FsaG9zdDolcyIgJSBoYW5kbGVyLnBvcnQpCisgICAgICAgIG9wZW5fdXJsID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbigKKyAgICAgICAgICAgICJodHRwOi8vbG9jYWxob3N0OiVzIiAlIGhhbmRsZXIucG9ydCkKKyAgICAgICAgd2l0aCBvcGVuX3VybDoKICAgICAgICAgICAgIGluZm9fb2JqID0gb3Blbl91cmwuaW5mbygpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mb19vYmosIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IHJldHVybmVkIGJ5ICdpbmZvJyBpcyBub3QgYW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YW5jZSBvZiBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvX29iai5nZXRfY29udGVudF9zdWJ0eXBlKCksICJwbGFpbiIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm9fb2JqLCBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IHJldHVybmVkIGJ5ICdpbmZvJyBpcyBub3QgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbmNlIG9mIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb19vYmouZ2V0X2NvbnRlbnRfc3VidHlwZSgpLCAicGxhaW4iKQogCiAgICAgZGVmIHRlc3RfZ2V0dXJsKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBzYW1lIFVSTCBhcyBvcGVuZWQgaXMgcmV0dXJuZWQgYnkgZ2V0dXJsLgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9zZXJ2ZXIoKQogICAgICAgICBvcGVuX3VybCA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oImh0dHA6Ly9sb2NhbGhvc3Q6JXMiICUgaGFuZGxlci5wb3J0KQotICAgICAgICB1cmwgPSBvcGVuX3VybC5nZXR1cmwoKQorICAgICAgICB3aXRoIG9wZW5fdXJsOgorICAgICAgICAgICAgdXJsID0gb3Blbl91cmwuZ2V0dXJsKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1cmwsICJodHRwOi8vbG9jYWxob3N0OiVzIiAlIGhhbmRsZXIucG9ydCkKIAogICAgIGRlZiB0ZXN0X2l0ZXJhdGlvbihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkKaW5kZXggYjgxMTkzMC4uOTQ5NzE2YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHNvY2tldAogaW1wb3J0IHVybGxpYi5yZXF1ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBlbWFpbC5tZXNzYWdlCiBpbXBvcnQgdGltZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKaW5kZXggNzFhYmMxNC4uOTljNWMwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CkBAIC02MDcsMjkgKzYwNywyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucG9ydCwgODApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5nZXR1cmwoKSwgdXJsKQogCi0gICAgICAgICMgVmVyaWZ5IGFuIGlsbGVnYWwgcG9ydCBpcyByZXR1cm5lZCBhcyBOb25lCisgICAgICAgICMgVmVyaWZ5IGFuIGlsbGVnYWwgcG9ydCByYWlzZXMgVmFsdWVFcnJvcgogICAgICAgICB1cmwgPSBiIkhUVFA6Ly9XV1cuUFlUSE9OLk9SRzo2NTUzNi9kb2MvI2ZyYWciCiAgICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJsKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucG9ydCwgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJvdXQgb2YgcmFuZ2UiKToKKyAgICAgICAgICAgIHAucG9ydAogCiAgICAgZGVmIHRlc3RfYXR0cmlidXRlc19iYWRfcG9ydChzZWxmKToKLSAgICAgICAgIiIiQ2hlY2sgaGFuZGxpbmcgb2Ygbm9uLWludGVnZXIgcG9ydHMuIiIiCi0gICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQoImh0dHA6Ly93d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKLQotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKCJodHRwOi8vd3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uZXRsb2MsICJ3d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBwLnBvcnQpCi0KLSAgICAgICAgIyBPbmNlIGFnYWluLCByZXBlYXQgb3Vyc2VsdmVzIHRvIHRlc3QgYnl0ZXMKLSAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdChiImh0dHA6Ly93d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgYiJ3d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBwLnBvcnQpCi0KLSAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxwYXJzZShiImh0dHA6Ly93d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgYiJ3d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBwLnBvcnQpCisgICAgICAgICIiIkNoZWNrIGhhbmRsaW5nIG9mIGludmFsaWQgcG9ydHMuIiIiCisgICAgICAgIGZvciBieXRlcyBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgZm9yIHBhcnNlIGluICh1cmxsaWIucGFyc2UudXJsc3BsaXQsIHVybGxpYi5wYXJzZS51cmxwYXJzZSk6CisgICAgICAgICAgICAgICAgZm9yIHBvcnQgaW4gKCJmb28iLCAiMS41IiwgIi0xIiwgIjB4MTAiKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYnl0ZXM9Ynl0ZXMsIHBhcnNlPXBhcnNlLCBwb3J0PXBvcnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV0bG9jID0gInd3dy5leGFtcGxlLm5ldDoiICsgcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gImh0dHA6Ly8iICsgbmV0bG9jCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBieXRlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRsb2MgPSBuZXRsb2MuZW5jb2RlKCJhc2NpaSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsLmVuY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHBhcnNlKHVybCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uZXRsb2MsIG5ldGxvYykKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5wb3J0CiAKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3dpdGhvdXRfbmV0bG9jKHNlbGYpOgogICAgICAgICAjIFRoaXMgZXhhbXBsZSBpcyBzdHJhaWdodCBmcm9tIFJGQyAzMjYxLiAgSXQgbG9va3MgbGlrZSBpdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKaW5kZXggODM1N2Y4Yi4uNjYyYzdmNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CkBAIC0xLDYgKzEsNiBAQAogIyBDaGVjayBldmVyeSBwYXRoIHRocm91Z2ggZXZlcnkgbWV0aG9kIG9mIFVzZXJEaWN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbWFwcGluZ190ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjb2xsZWN0aW9ucwogCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3Qob25lPTEsIHR3bz0yKSwgZDIpCiAgICAgICAgICMgaXRlbSBzZXF1ZW5jZSBjb25zdHJ1Y3RvcgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbGxlY3Rpb25zLlVzZXJEaWN0KFsoJ29uZScsMSksICgndHdvJywyKV0pLCBkMikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICInZGljdCciKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3QoZGljdD1bKCdvbmUnLDEpLCAoJ3R3bycsMildKSwgZDIpCiAgICAgICAgICMgYm90aCB0b2dldGhlcgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbGxlY3Rpb25zLlVzZXJEaWN0KFsoJ29uZScsMSksICgndHdvJywyKV0sIHR3bz0zLCB0aHJlZT01KSwgZDMpCkBAIC0xNDksNyArMTQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdkaWN0JywgNDIpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxlY3Rpb25zLlVzZXJEaWN0KHt9LCBkaWN0PU5vbmUpLml0ZW1zKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2RpY3QnLCBOb25lKV0pCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICInZGljdCciKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiJ2RpY3QnIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGVjdGlvbnMuVXNlckRpY3QoZGljdD17J2EnOiA0Mn0pLml0ZW1zKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhJywgNDIpXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb2xsZWN0aW9ucy5Vc2VyRGljdCwgNDIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5IGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQppbmRleCBmOTJlNGQzLi44ZGU2YzE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKQEAgLTEsNyArMSw3IEBACiAjIENoZWNrIGV2ZXJ5IHBhdGggdGhyb3VnaCBldmVyeSBtZXRob2Qgb2YgVXNlckxpc3QKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckxpc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbGlzdF90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBsaXN0X3Rlc3RzCiBpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgVXNlckxpc3RUZXN0KGxpc3RfdGVzdHMuQ29tbW9uVGVzdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKaW5kZXggOWJjOGVkZC4uNzE1MjgyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQpAQCAtMSw5ICsxLDggQEAKICMgVXNlclN0cmluZyBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBuYXRpdmUgYnVpbHRpbiBzdHJpbmcgdHlwZS4KICMgVXNlclN0cmluZyBpbnN0YW5jZXMgc2hvdWxkIGJlaGF2ZSBzaW1pbGFyIHRvIGJ1aWx0aW4gc3RyaW5nIG9iamVjdHMuCiAKLWltcG9ydCBzdHJpbmcKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzdHJpbmdfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3RyaW5nX3Rlc3RzCiAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJTdHJpbmcKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5IGIvTGliL3Rlc3QvdGVzdF91dGY4c291cmNlLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfdXRmOHNvdXJjZS5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91dS5weSBiL0xpYi90ZXN0L3Rlc3RfdXUucHkKaW5kZXggMjVmZmZiZi4uYWQyZjJjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91dS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3V1LnB5CkBAIC04LDcgKzgsNiBAQAogCiBpbXBvcnQgc3lzLCBvcwogaW1wb3J0IHV1Ci1mcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBpbXBvcnQgaW8KIAogcGxhaW50ZXh0ID0gYiJUaGUgc21vb3RoLXNjYWxlZCBweXRob24gY3JlcHQgb3ZlciB0aGUgc2xlZXBpbmcgZG9nXG4iCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKaW5kZXggMzk5OWQxZi4uZjRhZDdjNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF92ZW52LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQpAQCAtMTUsNyArMTUsNiBAQAogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgY2FwdHVyZWRfc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc3ltbGluaywgRW52aXJvbm1lbnRWYXJHdWFyZCwgcm10cmVlKQotaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB2ZW52CiAKQEAgLTM5LDE1ICszOCw5IEBACiBza2lwSW5WZW52ID0gdW5pdHRlc3Quc2tpcElmKHN5cy5wcmVmaXggIT0gc3lzLmJhc2VfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBub3QgYXBwcm9wcmlhdGUgaW4gYSB2ZW52JykKIAotIyBvcy5wYXRoLmV4aXN0cygnbnVsJykgaXMgRmFsc2U6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDU0MQotaWYgb3MuZGV2bnVsbC5sb3dlcigpID09ICdudWwnOgotICAgIGZhaWxzT25XaW5kb3dzID0gdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCi1lbHNlOgotICAgIGRlZiBmYWlsc09uV2luZG93cyhmKToKLSAgICAgICAgcmV0dXJuIGYKLQogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIHZlbnYgdGVzdHMuIiIiCisgICAgbWF4RGlmZiA9IDgwICogNTAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5lbnZfZGlyID0gb3MucGF0aC5yZWFscGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKCkpCkBAIC01Nyw3ICs1MCw3IEBACiAgICAgICAgICAgICBzZWxmLmluY2x1ZGUgPSAnSW5jbHVkZScKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYmluZGlyID0gJ2JpbicKLSAgICAgICAgICAgIHNlbGYubGliID0gKCdsaWInLCAncHl0aG9uJXMnICUgc3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgc2VsZi5saWIgPSAoJ2xpYicsICdweXRob24lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdpbmNsdWRlJwogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmVudmlyb25bJ19fUFlWRU5WX0xBVU5DSEVSX18nXQpAQCAtMTIxLDYgKzExNCwxNyBAQAogICAgICAgICAgICAgcHJpbnQoJyAgICAlcicgJSBvcy5saXN0ZGlyKGJkKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSwgJ0ZpbGUgJXIgc2hvdWxkIGV4aXN0LicgJSBmbikKIAorICAgIGRlZiB0ZXN0X3Byb21wdChzZWxmKToKKyAgICAgICAgZW52X25hbWUgPSBvcy5wYXRoLnNwbGl0KHNlbGYuZW52X2RpcilbMV0KKworICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKCkKKyAgICAgICAgY29udGV4dCA9IGJ1aWxkZXIuZW5zdXJlX2RpcmVjdG9yaWVzKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LnByb21wdCwgJyglcykgJyAlIGVudl9uYW1lKQorCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIocHJvbXB0PSdNeSBwcm9tcHQnKQorICAgICAgICBjb250ZXh0ID0gYnVpbGRlci5lbnN1cmVfZGlyZWN0b3JpZXMoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQucHJvbXB0LCAnKE15IHByb21wdCkgJykKKwogICAgIEBza2lwSW5WZW52CiAgICAgZGVmIHRlc3RfcHJlZml4ZXMoc2VsZik6CiAgICAgICAgICIiIgpAQCAtMzE4LDE2ICszMjIsMjEgQEAKICAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIsIHdpdGhfcGlwPUZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydF9waXBfbm90X2luc3RhbGxlZCgpCiAKLSAgICBAZmFpbHNPbldpbmRvd3MKLSAgICBkZWYgdGVzdF9kZXZudWxsX2V4aXN0c19hbmRfaXNfZW1wdHkoc2VsZik6CisgICAgZGVmIHRlc3RfZGV2bnVsbChzZWxmKToKICAgICAgICAgIyBGaXggZm9yIGlzc3VlICMyMDA1MyB1c2VzIG9zLmRldm51bGwgdG8gZm9yY2UgYSBjb25maWcgZmlsZSB0bwogICAgICAgICAjIGFwcGVhciBlbXB0eS4gSG93ZXZlciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjA1NDEgbWVhbnMKICAgICAgICAgIyB0aGF0IGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgcHJvcGVybHkgb24gV2luZG93cy4gT25jZSB0aGF0IGlzCiAgICAgICAgICMgZml4ZWQsIHRoZSAid2luX2xvY2F0aW9uIiBwYXJ0IG9mIHRlc3Rfd2l0aF9waXAgc2hvdWxkIGJlIHJlc3RvcmVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKICAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCiAKKyAgICAgICAgIyBJc3N1ZSAjMjA1NDE6IG9zLnBhdGguZXhpc3RzKCdudWwnKSBpcyBGYWxzZSBvbiBXaW5kb3dzCisgICAgICAgIGlmIG9zLmRldm51bGwubG93ZXIoKSA9PSAnbnVsJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MuZGV2bnVsbCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MuZGV2bnVsbCkpCisKKwogICAgICMgUmVxdWVzdGluZyBwaXAgZmFpbHMgd2l0aG91dCBTU0wgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTc0NCkKICAgICBAdW5pdHRlc3Quc2tpcElmKHNzbCBpcyBOb25lLCBlbnN1cmVwaXAuX01JU1NJTkdfU1NMX01FU1NBR0UpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnc29tZSBkZXBlbmRlbmNpZXMgb2YgcGlwIGltcG9ydCB0aHJlYWRpbmcnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQppbmRleCA4NGE2ZmI1Li5jMTFlZTQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKQEAgLTIsNyArMiw5IEBACiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgb3MKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgcmUKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQpAQCAtNzIwLDYgKzcyMiwxNyBAQAogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0cmVhbS5nZXR2YWx1ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4odGV4dCwgcmVzdWx0KQogCisgICAgZGVmIHRlc3Rfc2hvd3dhcm5tc2dfbWlzc2luZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgX3Nob3d3YXJubXNnKCkgbWlzc2luZyBpcyBva2F5LgorICAgICAgICB0ZXh0ID0gJ2RlbCBfc2hvd3dhcm5tc2cgdGVzdCcKKyAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhtb2R1bGU9c2VsZi5tb2R1bGUpOgorICAgICAgICAgICAgc2VsZi5tb2R1bGUuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQorICAgICAgICAgICAgZGVsIHNlbGYubW9kdWxlLl9zaG93d2Fybm1zZworICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX291dHB1dCgnc3RkZXJyJykgYXMgc3RyZWFtOgorICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4odGV4dCkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzdHJlYW0uZ2V0dmFsdWUoKQorICAgICAgICBzZWxmLmFzc2VydEluKHRleHQsIHJlc3VsdCkKKwogICAgIGRlZiB0ZXN0X3Nob3d3YXJuaW5nX25vdF9jYWxsYWJsZShzZWxmKToKICAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhtb2R1bGU9c2VsZi5tb2R1bGUpOgogICAgICAgICAgICAgc2VsZi5tb2R1bGUuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQpAQCAtODIxLDEyICs4MzQsNDQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9vYmplY3QsIGV4cGVjdGVkX2ZpbGVfbGluZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3QsIGZpbGVfb2JqZWN0LmdldHZhbHVlKCkpCiAKKwogY2xhc3MgQ1dhcm5pbmdzRGlzcGxheVRlc3RzKFdhcm5pbmdzRGlzcGxheVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY193YXJuaW5ncwogCiBjbGFzcyBQeVdhcm5pbmdzRGlzcGxheVRlc3RzKFdhcm5pbmdzRGlzcGxheVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfd2FybmluZ3MKIAorICAgIGRlZiB0ZXN0X3RyYWNlbWFsbG9jKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgICAgICBkZWYgZnVuYygpOgorICAgICAgICAgICAgICAgICAgICBmID0gb3BlbihfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICAgICAgIyBFbWl0IFJlc291cmNlV2FybmluZworICAgICAgICAgICAgICAgICAgICBmID0gTm9uZQorCisgICAgICAgICAgICAgICAgZnVuYygpCisgICAgICAgICAgICAiIiIpKQorCisgICAgICAgIHJlcyA9IGFzc2VydF9weXRob25fb2soJy1XZCcsICctWCcsICd0cmFjZW1hbGxvYz0yJywgc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgc3RkZXJyID0gcmVzLmVyci5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKQorICAgICAgICAjIG5vcm1hbGl6ZSBuZXdsaW5lcworICAgICAgICBzdGRlcnIgPSAnXG4nLmpvaW4oc3RkZXJyLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc3RkZXJyID0gcmUuc3ViKCc8Lio+JywgJzwuLi4+Jywgc3RkZXJyKQorICAgICAgICBleHBlY3RlZCA9IHRleHR3cmFwLmRlZGVudCgnJycKKyAgICAgICAgICAgIHtmbmFtZX06NTogUmVzb3VyY2VXYXJuaW5nOiB1bmNsb3NlZCBmaWxlIDwuLi4+CisgICAgICAgICAgICAgIGYgPSBOb25lCisgICAgICAgICAgICBPYmplY3QgYWxsb2NhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgICAgICAgICAgRmlsZSAie2ZuYW1lfSIsIGxpbmVubyAzCisgICAgICAgICAgICAgICAgZiA9IG9wZW4oX19maWxlX18pCisgICAgICAgICAgICAgIEZpbGUgIntmbmFtZX0iLCBsaW5lbm8gNworICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAnJycpCisgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQuZm9ybWF0KGZuYW1lPXN1cHBvcnQuVEVTVEZOKS5zdHJpcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLCBleHBlY3RlZCkKKwogCiBjbGFzcyBDYXRjaFdhcm5pbmdUZXN0cyhCYXNlVGVzdCk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weQppbmRleCAzZWZmNzczLi44NjY2ZjcyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhdmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YXZlLnB5CkBAIC0xLDYgKzEsNiBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IGF1ZGlvdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBhdWRpb29wIGltcG9ydCBieXRlc3dhcAogaW1wb3J0IHN5cwogaW1wb3J0IHdhdmUKQEAgLTEwMyw1ICsxMDMsMTEgQEAKICAgICAgICAgZnJhbWVzID0gYnl0ZXN3YXAoZnJhbWVzLCA0KQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J1dBVkVfRk9STUFUX1BDTSd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHdhdmUsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQppbmRleCA0Y2ZhYTU0Li5hNDc0YTA3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CkBAIC05MTksNyArOTE5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHIsICJfX2RpY3RfXyIpKQogCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3NfcmVmc193aXRoX2N5Y2xlKHNlbGYpOgotICAgICAgICAjIEJ1ZyAjMzExMAorICAgICAgICAiIiJDb25maXJtIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzEwMCBpcyBmaXhlZC4iIiIKICAgICAgICAgIyBBbiBpbnN0YW5jZSBvZiBhIHdlYWtyZWYgc3ViY2xhc3MgY2FuIGhhdmUgYXR0cmlidXRlcy4KICAgICAgICAgIyBJZiBzdWNoIGEgd2Vha3JlZiBob2xkcyB0aGUgb25seSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QsCiAgICAgICAgICMgZGVsZXRpbmcgdGhlIHdlYWtyZWYgd2lsbCBkZWxldGUgdGhlIG9iamVjdC4gSW4gdGhpcyBjYXNlLApAQCAtMTMzMywxMyArMTMzMywxNiBAQAogICAgICAgICBvID0gT2JqZWN0KDEyMzQ1NikKICAgICAgICAgd2l0aCB0ZXN0Y29udGV4dCgpOgogICAgICAgICAgICAgbiA9IGxlbihkaWN0KQotICAgICAgICAgICAgZGljdC5wb3BpdGVtKCkKKyAgICAgICAgICAgICMgU2luY2UgdW5kZXJsYXlpbmcgZGljdCBpcyBvcmRlcmVkLCBmaXJzdCBpdGVtIGlzIHBvcHBlZAorICAgICAgICAgICAgZGljdC5wb3AobmV4dChkaWN0LmtleXMoKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbiAtIDEpCiAgICAgICAgICAgICBkaWN0W29dID0gbwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4pCisgICAgICAgICMgbGFzdCBpdGVtIGluIG9iamVjdHMgaXMgcmVtb3ZlZCBmcm9tIGRpY3QgaW4gY29udGV4dCBzaHV0ZG93bgogICAgICAgICB3aXRoIHRlc3Rjb250ZXh0KCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbiAtIDEpCi0gICAgICAgICAgICBkaWN0LnBvcChuZXh0KGRpY3Qua2V5cygpKSkKKyAgICAgICAgICAgICMgVGhlbiwgKG8sIG8pIGlzIHBvcHBlZAorICAgICAgICAgICAgZGljdC5wb3BpdGVtKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMikKICAgICAgICAgd2l0aCB0ZXN0Y29udGV4dCgpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4gLSAzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CmluZGV4IDljZTY3MmIuLjY5MWI5NWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKQEAgLTEsMTMgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5LCByZWYsIFdlYWtTZXQKLWltcG9ydCBvcGVyYXRvcgotaW1wb3J0IGNvcHkKK2Zyb20gd2Vha3JlZiBpbXBvcnQgV2Vha1NldAogaW1wb3J0IHN0cmluZwotaW1wb3J0IG9zCi1mcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlLCBzaHVmZmxlCi1pbXBvcnQgc3lzCi1pbXBvcnQgd2FybmluZ3MKLWltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlclN0cmluZyBhcyB1c3RyCiBpbXBvcnQgZ2MKIGltcG9ydCBjb250ZXh0bGliCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpbmNvbnNvbGVpby5weSBiL0xpYi90ZXN0L3Rlc3Rfd2luY29uc29sZWlvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyY2NjYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3dpbmNvbnNvbGVpby5weQpAQCAtMCwwICsxLDE0MSBAQAorJycnVGVzdHMgZm9yIFdpbmRvd3NDb25zb2xlSU8KKycnJworCitpbXBvcnQgaW8KK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cworCitpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBvbmx5IHJlbGV2YW50IG9uIHdpbjMyIikKKworZnJvbSBfdGVzdGNvbnNvbGUgaW1wb3J0IHdyaXRlX2lucHV0CisKK0NvbklPID0gaW8uX1dpbmRvd3NDb25zb2xlSU8KKworY2xhc3MgV2luZG93c0NvbnNvbGVJT1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hYmMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKENvbklPLCBpby5SYXdJT0Jhc2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29uSU8sIGlvLkJ1ZmZlcmVkSU9CYXNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbklPLCBpby5UZXh0SU9CYXNlKSkKKworICAgIGRlZiB0ZXN0X29wZW5fZmQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBDb25JTygwKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgY2Fubm90IG9wZW4gY29uc29sZSBiZWNhdXNlIGl0J3Mgbm90IGEgcmVhbCBjb25zb2xlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGYuZmlsZW5vKCkpCisgICAgICAgICAgICBmLmNsb3NlKCkgICAjIG11bHRpcGxlIGNsb3NlIHNob3VsZCBub3QgY3Jhc2gKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBDb25JTygxLCAndycpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBjYW5ub3Qgb3BlbiBjb25zb2xlIGJlY2F1c2UgaXQncyBub3QgYSByZWFsIGNvbnNvbGUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYud3JpdGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZi5maWxlbm8oKSkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IENvbklPKDIsICd3JykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIGNhbm5vdCBvcGVuIGNvbnNvbGUgYmVjYXVzZSBpdCdzIG5vdCBhIHJlYWwgY29uc29sZQorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBmLmZpbGVubygpKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X29wZW5fbmFtZShzZWxmKToKKyAgICAgICAgZiA9IENvbklPKCJDT04iKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYud3JpdGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZi5maWxlbm8oKSkKKyAgICAgICAgZi5jbG9zZSgpICAgIyBtdWx0aXBsZSBjbG9zZSBzaG91bGQgbm90IGNyYXNoCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIGYgPSBDb25JTygnQ09OSU4kJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYucmVhZGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLndyaXRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGYuZmlsZW5vKCkpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICBmID0gQ29uSU8oJ0NPTk9VVCQnLCAndycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5yZWFkYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmLmZpbGVubygpKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCisKKyAgICBkZWYgYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoc2VsZiwgdGV4dCk6CisgICAgICAgIHN0ZGluID0gb3BlbignQ09OSU4kJywgJ3InKQorICAgICAgICBvbGRfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3lzLnN0ZGluID0gc3RkaW4KKyAgICAgICAgICAgIHdyaXRlX2lucHV0KAorICAgICAgICAgICAgICAgIHN0ZGluLmJ1ZmZlci5yYXcsCisgICAgICAgICAgICAgICAgKHRleHQgKyAnXHJcbicpLmVuY29kZSgndXRmLTE2LWxlJywgJ3N1cnJvZ2F0ZXBhc3MnKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgYWN0dWFsID0gaW5wdXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnN0ZGluID0gb2xkX3N0ZGluCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCB0ZXh0KQorCisgICAgZGVmIHRlc3RfaW5wdXQoc2VsZik6CisgICAgICAgICMgQVNDSUkKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRpblJvdW5kVHJpcCgnYWJjMTIzJykKKyAgICAgICAgIyBOb24tQVNDSUkKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRpblJvdW5kVHJpcCgnz7zRntCizrvQpNCZJykKKyAgICAgICAgIyBDb21iaW5pbmcgY2hhcmFjdGVycworICAgICAgICBzZWxmLmFzc2VydFN0ZGluUm91bmRUcmlwKCdBzY9CIO+slsyzQUHMnScpCisgICAgICAgICMgTm9uLUJNUAorICAgICAgICBzZWxmLmFzc2VydFN0ZGluUm91bmRUcmlwKCdcVTAwMTAwMDAwXFUwMDEwZmZmZlxVMDAxMGZmZmQnKQorCisgICAgZGVmIHRlc3RfcGFydGlhbF9yZWFkcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgcmVhZGluZyBsZXNzIHRoYW4gMSBmdWxsIGNoYXJhY3RlciB3b3JrcyB3aGVuIHN0ZGluCisgICAgICAgICMgY29udGFpbnMgbXVsdGlieXRlIFVURi04IHNlcXVlbmNlcworICAgICAgICBzb3VyY2UgPSAnz7zRntCizrvQpNCZXHJcbicuZW5jb2RlKCd1dGYtMTYtbGUnKQorICAgICAgICBleHBlY3RlZCA9ICfPvNGe0KLOu9Ck0JlcclxuJy5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgZm9yIHJlYWRfY291bnQgaW4gcmFuZ2UoMSwgMTYpOgorICAgICAgICAgICAgc3RkaW4gPSBvcGVuKCdDT05JTiQnLCAncmInLCBidWZmZXJpbmc9MCkKKyAgICAgICAgICAgIHdyaXRlX2lucHV0KHN0ZGluLCBzb3VyY2UpCisKKyAgICAgICAgICAgIGFjdHVhbCA9IGInJworICAgICAgICAgICAgd2hpbGUgbm90IGFjdHVhbC5lbmRzd2l0aChiJ1xuJyk6CisgICAgICAgICAgICAgICAgYiA9IHN0ZGluLnJlYWQocmVhZF9jb3VudCkKKyAgICAgICAgICAgICAgICBhY3R1YWwgKz0gYgorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsICdzdGRpbi5yZWFkKHt9KScuZm9ybWF0KHJlYWRfY291bnQpKQorICAgICAgICAgICAgc3RkaW4uY2xvc2UoKQorCisgICAgZGVmIHRlc3RfcGFydGlhbF9zdXJyb2dhdGVfcmVhZHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHJlYWRpbmcgbGVzcyB0aGFuIDEgZnVsbCBjaGFyYWN0ZXIgd29ya3Mgd2hlbiBzdGRpbgorICAgICAgICAjIGNvbnRhaW5zIHN1cnJvZ2F0ZSBwYWlycyB0aGF0IGNhbm5vdCBiZSBkZWNvZGVkIHRvIFVURi04IHdpdGhvdXQKKyAgICAgICAgIyByZWFkaW5nIGFuIGV4dHJhIGNoYXJhY3Rlci4KKyAgICAgICAgc291cmNlID0gJ1xVMDAxMDFGRkZcVTAwMTAxMDAxXHJcbicuZW5jb2RlKCd1dGYtMTYtbGUnKQorICAgICAgICBleHBlY3RlZCA9ICdcVTAwMTAxRkZGXFUwMDEwMTAwMVxyXG4nLmVuY29kZSgndXRmLTgnKQorICAgICAgICBmb3IgcmVhZF9jb3VudCBpbiByYW5nZSgxLCAxNik6CisgICAgICAgICAgICBzdGRpbiA9IG9wZW4oJ0NPTklOJCcsICdyYicsIGJ1ZmZlcmluZz0wKQorICAgICAgICAgICAgd3JpdGVfaW5wdXQoc3RkaW4sIHNvdXJjZSkKKworICAgICAgICAgICAgYWN0dWFsID0gYicnCisgICAgICAgICAgICB3aGlsZSBub3QgYWN0dWFsLmVuZHN3aXRoKGInXG4nKToKKyAgICAgICAgICAgICAgICBiID0gc3RkaW4ucmVhZChyZWFkX2NvdW50KQorICAgICAgICAgICAgICAgIGFjdHVhbCArPSBiCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgJ3N0ZGluLnJlYWQoe30pJy5mb3JtYXQocmVhZF9jb3VudCkpCisgICAgICAgICAgICBzdGRpbi5jbG9zZSgpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkKaW5kZXggNjAyMDdmYi4uZDY0MmIxMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkKQEAgLTM3LDYgKzM3LDcgQEAKIAogdGVzdF9kYXRhID0gWwogICAgICgiSW50IFZhbHVlIiwgICAgIDQ1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0RXT1JEKSwKKyAgICAoIlF3b3JkIFZhbHVlIiwgICAweDExMjIzMzQ0NTU2Njc3ODgsICAgICAgICAgICAgICAgICAgICAgIFJFR19RV09SRCksCiAgICAgKCJTdHJpbmcgVmFsIiwgICAgIkEgc3RyaW5nIHZhbHVlIiwgICAgICAgICAgICAgICAgICAgICAgICBSRUdfU1opLAogICAgICgiU3RyaW5nRXhwYW5kIiwgICJUaGUgcGF0aCBpcyAlcGF0aCUiLCAgICAgICAgICAgICAgICAgICAgUkVHX0VYUEFORF9TWiksCiAgICAgKCJNdWx0aS1zdHJpbmciLCAgWyJMb3RzIiwgIm9mIiwgInN0cmluZyIsICJ2YWx1ZXMiXSwgICAgICBSRUdfTVVMVElfU1opLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKaW5kZXggNGE4YWI3ZC4uMTc5ZTA2OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CkBAIC01MSw2ICs1MSwxMCBAQAogICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAsIDIwMDAsIDEwMCk6CiAgICAgICAgICAgICBzYWZlX0JlZXAoaSwgNzUpCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIHNhZmVfQmVlcChkdXJhdGlvbj03NSwgZnJlcXVlbmN5PTIwMDApCisKKwogY2xhc3MgTWVzc2FnZUJlZXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTc2LDYgKzgwLDkgQEAKICAgICBkZWYgdGVzdF9xdWVzdGlvbihzZWxmKToKICAgICAgICAgc2FmZV9NZXNzYWdlQmVlcCh3aW5zb3VuZC5NQl9JQ09OUVVFU1RJT04pCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIHNhZmVfTWVzc2FnZUJlZXAodHlwZT13aW5zb3VuZC5NQl9PSykKKwogCiBjbGFzcyBQbGF5U291bmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODcsNiArOTQsMjUgQEAKICAgICAgICAgICAgIHdpbnNvdW5kLlBsYXlTb3VuZCwKICAgICAgICAgICAgICJub25lIiwgd2luc291bmQuU05EX0FTWU5DIHwgd2luc291bmQuU05EX01FTU9SWQogICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luc291bmQuUGxheVNvdW5kLCBiImJhZCIsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luc291bmQuUGxheVNvdW5kLCAiYmFkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2luc291bmQuU05EX01FTU9SWSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB3aW5zb3VuZC5QbGF5U291bmQsIDEsIDApCisKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIHNhZmVfUGxheVNvdW5kKGZsYWdzPXdpbnNvdW5kLlNORF9BTElBUywgc291bmQ9IlN5c3RlbUV4aXQiKQorCisgICAgZGVmIHRlc3Rfc25kX21lbW9yeShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuZmluZGZpbGUoJ3BsdWNrLXBjbTgud2F2JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyPSdhdWRpb2RhdGEnKSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIGF1ZGlvX2RhdGEgPSBmLnJlYWQoKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChhdWRpb19kYXRhLCB3aW5zb3VuZC5TTkRfTUVNT1JZKQorICAgICAgICBhdWRpb19kYXRhID0gYnl0ZWFycmF5KGF1ZGlvX2RhdGEpCisgICAgICAgIHNhZmVfUGxheVNvdW5kKGF1ZGlvX2RhdGEsIHdpbnNvdW5kLlNORF9NRU1PUlkpCisKKyAgICBkZWYgdGVzdF9zbmRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZuID0gc3VwcG9ydC5maW5kZmlsZSgncGx1Y2stcGNtOC53YXYnLCBzdWJkaXI9J2F1ZGlvZGF0YScpCisgICAgICAgIHNhZmVfUGxheVNvdW5kKGZuLCB3aW5zb3VuZC5TTkRfRklMRU5BTUUgfCB3aW5zb3VuZC5TTkRfTk9ERUZBVUxUKQogCiAgICAgZGVmIHRlc3RfYWxpYXNlcyhzZWxmKToKICAgICAgICAgYWxpYXNlcyA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQppbmRleCBlOGQ3ODliLi5lMjQ3ZmY2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aXRoLnB5CkBAIC0xNDAsMTEgKzE0MCw2IEBACiAgICAgICAgICAgICAnd2l0aCBtb2NrIGFzIChOb25lKTpcbicKICAgICAgICAgICAgICcgIHBhc3MnKQogCi0gICAgZGVmIHRlc3RBc3NpZ25tZW50VG9FbXB0eVR1cGxlRXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoCi0gICAgICAgICAgICAnd2l0aCBtb2NrIGFzICgpOlxuJwotICAgICAgICAgICAgJyAgcGFzcycpCi0KICAgICBkZWYgdGVzdEFzc2lnbm1lbnRUb1R1cGxlT25seUNvbnRhaW5pbmdOb25lRXJyb3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoJ3dpdGggbW9jayBhcyBOb25lLDpcbiAgcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoCkBAIC00NTQsNyArNDQ5LDcgQEAKICAgICAgICAgICAgIHdpdGggY20oKToKICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKCJmcm9tIHdpdGgiKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQogCiAgICAgZGVmIHRlc3RSYWlzZWRTdG9wSXRlcmF0aW9uMihzZWxmKToKQEAgLTQ4Miw3ICs0NzcsNyBAQAogICAgICAgICAgICAgd2l0aCBjbSgpOgogICAgICAgICAgICAgICAgIHJhaXNlIG5leHQoaXRlcihbXSkpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCiAKICAgICBkZWYgdGVzdFJhaXNlZEdlbmVyYXRvckV4aXQxKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CmluZGV4IDYxYTc1MGMuLjc3MDhlMjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKQEAgLTI1OCw3ICsyNTgsNyBAQAogCiAgICAgICAgIGRlZiBhcHAoZW52aXJvbiwgc3RhcnRfcmVzcG9uc2UpOgogICAgICAgICAgICAgc3RhcnRfcmVzcG9uc2UoIjIwMCBPSyIsIFtdKQotICAgICAgICAgICAgcmV0dXJuIFtieXRlcyhzdXBwb3J0LlNPQ0tfTUFYX1NJWkUpXQorICAgICAgICAgICAgcmV0dXJuIFtiJ1wwJyAqIHN1cHBvcnQuU09DS19NQVhfU0laRV0KIAogICAgICAgICBjbGFzcyBXc2dpSGFuZGxlcihOb0xvZ1JlcXVlc3RIYW5kbGVyLCBXU0dJUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQppbmRleCBmYmZjMGIwLi4wNTRlYzhmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQpAQCAtOTEsOCArOTEsNiBAQAogCiAKIGNsYXNzIE1vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHdlIGdldCByaWQgb2YgdGhlIGdsb2JhbCBtb2R1bGUgdmFycwotCiAgICAgZGVmIHRlc3Rfc2FuaXR5KHNlbGYpOgogICAgICAgICAjIEltcG9ydCBzYW5pdHkuCiAKQEAgLTEwMCw2ICs5OCwxMCBAQAogICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKICAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCiAKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIG5hbWVzID0gKCJ4bWwuZXRyZWUuRWxlbWVudFRyZWUiLCAiX2VsZW1lbnR0cmVlIikKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgRVQsIG5hbWVzLCBibGFja2xpc3Q9KCJIVE1MX0VNUFRZIiwpKQorCiAKIGRlZiBzZXJpYWxpemUoZWxlbSwgdG9fc3RyaW5nPVRydWUsIGVuY29kaW5nPSd1bmljb2RlJywgKipvcHRpb25zKToKICAgICBpZiBlbmNvZGluZyAhPSAndW5pY29kZSc6CkBAIC0xODIsMTAgKzE4NCwxMiBAQAogCiAgICAgICAgIGRlZiBjaGVja19lbGVtZW50KGVsZW1lbnQpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEVULmlzZWxlbWVudChlbGVtZW50KSwgbXNnPSJub3QgYW4gZWxlbWVudCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGFnIiksIG1zZz0ibm8gdGFnIG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAiYXR0cmliIiksIG1zZz0ibm8gYXR0cmliIG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGV4dCIpLCBtc2c9Im5vIHRleHQgbWVtYmVyIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVsZW1lbnQsICJ0YWlsIiksIG1zZz0ibm8gdGFpbCBtZW1iZXIiKQorICAgICAgICAgICAgZGlyZWxlbSA9IGRpcihlbGVtZW50KQorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ3RhZycsICdhdHRyaWInLCAndGV4dCcsICd0YWlsJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nbm8gJXMgbWVtYmVyJyAlIGF0dHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBkaXJlbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdubyAlcyB2aXNpYmxlIGJ5IGRpcicgJSBhdHRyKQogCiAgICAgICAgICAgICBjaGVja19zdHJpbmcoZWxlbWVudC50YWcpCiAgICAgICAgICAgICBjaGVja19tYXBwaW5nKGVsZW1lbnQuYXR0cmliKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKaW5kZXggOTZiNDQ2ZS4uODdmM2YyNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CkBAIC0xLDUgKzEsNSBAQAogIyB4bWwuZXRyZWUgdGVzdCBmb3IgY0VsZW1lbnRUcmVlCi1pbXBvcnQgc3lzLCBzdHJ1Y3QKK2ltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKIGltcG9ydCB0eXBlcwpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5jYWxjc2l6ZSgnOFAnKSkKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUsIHRlc3RfeG1sX2V0cmVlX2MKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfeG1sX2V0cmVlCiAKICAgICAjIFJ1biB0aGUgdGVzdHMgc3BlY2lmaWMgdG8gdGhlIEMgaW1wbGVtZW50YXRpb24KICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggMDJkOWY1Yy4uZGY5Yzc5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC05LDcgKzEwLDYgQEAKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IGh0dHAsIGh0dHAuc2VydmVyCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGlvCiBpbXBvcnQgY29udGV4dGxpYgpAQCAtMjM4LDYgKzIzOCw1NCBAQAogICAgICAgICAgICAgICAgICc8L3N0cnVjdD48L3ZhbHVlPjwvcGFyYW0+PC9wYXJhbXM+JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVzcG9uc2VFcnJvciwgeG1scnBjbGliLmxvYWRzLCBkYXRhKQogCisgICAgZGVmIGNoZWNrX2xvYWRzKHNlbGYsIHMsIHZhbHVlLCAqKmt3YXJncyk6CisgICAgICAgIGR1bXAgPSAnPHBhcmFtcz48cGFyYW0+PHZhbHVlPiVzPC92YWx1ZT48L3BhcmFtPjwvcGFyYW1zPicgJSBzCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhkdW1wLCAqKmt3YXJncykKKyAgICAgICAgKG5ld3ZhbHVlLCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXd2YWx1ZSksIHR5cGUodmFsdWUpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgZGVmIHRlc3RfbG9hZF9zdGFuZGFyZF90eXBlcyhzZWxmKToKKyAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX2xvYWRzCisgICAgICAgIGNoZWNrKCdzdHJpbmcnLCAnc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxzdHJpbmc+c3RyaW5nPC9zdHJpbmc+JywgJ3N0cmluZycpCisgICAgICAgIGNoZWNrKCc8c3RyaW5nPvCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgc3RyaW5nPC9zdHJpbmc+JywgJ/CdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxpbnQ+MjA1NjE4Mzk0NzwvaW50PicsIDIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8aW50Pi0yMDU2MTgzOTQ3PC9pbnQ+JywgLTIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8aTQ+MjA1NjE4Mzk0NzwvaTQ+JywgMjA1NjE4Mzk0NykKKyAgICAgICAgY2hlY2soJzxkb3VibGU+NDYwOTMuNzgxMjU8L2RvdWJsZT4nLCA0NjA5My43ODEyNSkKKyAgICAgICAgY2hlY2soJzxib29sZWFuPjA8L2Jvb2xlYW4+JywgRmFsc2UpCisgICAgICAgIGNoZWNrKCc8YmFzZTY0PkFHSjVkR1VnYzNSeWFXNW4vdz09PC9iYXNlNjQ+JywKKyAgICAgICAgICAgICAgeG1scnBjbGliLkJpbmFyeShiJ1x4MDBieXRlIHN0cmluZ1x4ZmYnKSkKKyAgICAgICAgY2hlY2soJzxiYXNlNjQ+QUdKNWRHVWdjM1J5YVc1bi93PT08L2Jhc2U2ND4nLAorICAgICAgICAgICAgICBiJ1x4MDBieXRlIHN0cmluZ1x4ZmYnLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBjaGVjaygnPGRhdGVUaW1lLmlzbzg2MDE+MjAwNTAyMTBUMTE6NDE6MjM8L2RhdGVUaW1lLmlzbzg2MDE+JywKKyAgICAgICAgICAgICAgeG1scnBjbGliLkRhdGVUaW1lKCcyMDA1MDIxMFQxMTo0MToyMycpKQorICAgICAgICBjaGVjaygnPGRhdGVUaW1lLmlzbzg2MDE+MjAwNTAyMTBUMTE6NDE6MjM8L2RhdGVUaW1lLmlzbzg2MDE+JywKKyAgICAgICAgICAgICAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwNSwgMiwgMTAsIDExLCA0MSwgMjMpLAorICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBjaGVjaygnPGFycmF5PjxkYXRhPicKKyAgICAgICAgICAgICAgJzx2YWx1ZT48aW50PjE8L2ludD48L3ZhbHVlPjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPicKKyAgICAgICAgICAgICAgJzwvZGF0YT48L2FycmF5PicsIFsxLCAyXSkKKyAgICAgICAgY2hlY2soJzxzdHJ1Y3Q+JworICAgICAgICAgICAgICAnPG1lbWJlcj48bmFtZT5iPC9uYW1lPjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPjwvbWVtYmVyPicKKyAgICAgICAgICAgICAgJzxtZW1iZXI+PG5hbWU+YTwvbmFtZT48dmFsdWU+PGludD4xPC9pbnQ+PC92YWx1ZT48L21lbWJlcj4nCisgICAgICAgICAgICAgICc8L3N0cnVjdD4nLCB7J2EnOiAxLCAnYic6IDJ9KQorCisgICAgZGVmIHRlc3RfbG9hZF9leHRlbnNpb25fdHlwZXMoc2VsZik6CisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19sb2FkcworICAgICAgICBjaGVjaygnPG5pbC8+JywgTm9uZSkKKyAgICAgICAgY2hlY2soJzxleDpuaWwvPicsIE5vbmUpCisgICAgICAgIGNoZWNrKCc8aTE+MjA1PC9pMT4nLCAyMDUpCisgICAgICAgIGNoZWNrKCc8aTI+MjA1NjE8L2kyPicsIDIwNTYxKQorICAgICAgICBjaGVjaygnPGk4Pjk4NzY1NDMyMTA8L2k4PicsIDk4NzY1NDMyMTApCisgICAgICAgIGNoZWNrKCc8YmlnaW50ZWdlcj45ODc2NTQzMjEwMDEyMzQ1Njc4OTwvYmlnaW50ZWdlcj4nLAorICAgICAgICAgICAgICA5ODc2NTQzMjEwMDEyMzQ1Njc4OSkKKyAgICAgICAgY2hlY2soJzxmbG9hdD45My43ODEyNTwvZmxvYXQ+JywgOTMuNzgxMjUpCisgICAgICAgIGNoZWNrKCc8YmlnZGVjaW1hbD45ODc2NTQzMjEwLjAxMjM0NTY3ODk8L2JpZ2RlY2ltYWw+JywKKyAgICAgICAgICAgICAgZGVjaW1hbC5EZWNpbWFsKCc5ODc2NTQzMjEwLjAxMjM0NTY3ODknKSkKKwogICAgIGRlZiB0ZXN0X2dldF9ob3N0X2luZm8oc2VsZik6CiAgICAgICAgICMgc2VlIGJ1ZyAjMzYxMywgdGhpcyByYWlzZWQgYSBUeXBlRXJyb3IKICAgICAgICAgdHJhbnNwID0geG1scnBjLmNsaWVudC5UcmFuc3BvcnQoKQpAQCAtMTE0Nyw3ICsxMTk1LDYgQEAKICAgICAiIiJBIHZhcmlhdGlvbiBvbiBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIHdoaWNoIGdpdmVzIGEgdGV4dCBzdHJlYW0KICAgICBoYXZpbmcgYSBgYnVmZmVyYCBhdHRyaWJ1dGUuCiAgICAgIiIiCi0gICAgaW1wb3J0IGlvCiAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgc3lzLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoaW8uQnl0ZXNJTygpLCBlbmNvZGluZz1lbmNvZGluZykKICAgICB0cnk6CkBAIC0xMjIwLDcgKzEyNjcsNyBAQAogICAgICAgICBjb250ZW50ID0gaGFuZGxlW2hhbmRsZS5maW5kKCI8P3htbCIpOl0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW50KHJlLnNlYXJjaCgnQ29udGVudC1MZW5ndGg6IChcZCspJywgaGFuZGxlKS5ncm91cCgxKSksCisgICAgICAgICAgICBpbnQocmUuc2VhcmNoKHInQ29udGVudC1MZW5ndGg6IChcZCspJywgaGFuZGxlKS5ncm91cCgxKSksCiAgICAgICAgICAgICBsZW4oY29udGVudCkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CmluZGV4IGI2MGI4MmYuLmFlMGEyOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKQEAgLTEsNyArMSw0IEBACiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCi1pbXBvcnQgZXJybm8KLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5IGIvTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDM4MC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKaW5kZXggZDI3OGUwNi4uZmY0YTZkNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQpAQCAtMSw4ICsxLDggQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgaW8KIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgcG9zaXhwYXRoCiBpbXBvcnQgdGltZQogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHppcGZpbGUKQEAgLTM4LDEwICszOCw2IEBACiAgICAgICAgIHlpZWxkIGYKICAgICAgICAgdGVzdC5hc3NlcnRGYWxzZShmLmNsb3NlZCkKIAotZGVmIG9wZW5VKHppcGZwLCBmbik6Ci0gICAgd2l0aCBjaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICByZXR1cm4gemlwZnAub3BlbihmbiwgJ3JVJykKLQogY2xhc3MgQWJzdHJhY3RUZXN0c1dpdGhTb3VyY2VGaWxlOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CkBAIC02MSw2ICs1Nyw5IEBACiAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICJhbm90aGVyLm5hbWUiKQogICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCBURVNURk4pCiAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic3RyZmlsZSIsIHNlbGYuZGF0YSkKKyAgICAgICAgICAgIHdpdGggemlwZnAub3Blbignd3JpdHRlbi1vcGVuLXcnLCBtb2RlPSd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfZ2VuOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGxpbmUpCiAKICAgICBkZWYgemlwX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQpAQCAtNzYsNyArNzUsNyBAQAogICAgICAgICAgICAgemlwZnAucHJpbnRkaXIoZmlsZT1mcCkKICAgICAgICAgICAgIGRpcmVjdG9yeSA9IGZwLmdldHZhbHVlKCkKICAgICAgICAgICAgIGxpbmVzID0gZGlyZWN0b3J5LnNwbGl0bGluZXMoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA0KSAjIE51bWJlciBvZiBmaWxlcyArIGhlYWRlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA1KSAjIE51bWJlciBvZiBmaWxlcyArIGhlYWRlcgogCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdGaWxlIE5hbWUnLCBsaW5lc1swXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ01vZGlmaWVkJywgbGluZXNbMF0pCkBAIC05MCwyMyArODksMjUgQEAKIAogICAgICAgICAgICAgIyBDaGVjayB0aGUgbmFtZWxpc3QKICAgICAgICAgICAgIG5hbWVzID0gemlwZnAubmFtZWxpc3QoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCA0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihURVNURk4sIG5hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYW5vdGhlci5uYW1lIiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzdHJmaWxlIiwgbmFtZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJ3cml0dGVuLW9wZW4tdyIsIG5hbWVzKQogCiAgICAgICAgICAgICAjIENoZWNrIGluZm9saXN0CiAgICAgICAgICAgICBpbmZvcyA9IHppcGZwLmluZm9saXN0KCkKICAgICAgICAgICAgIG5hbWVzID0gW2kuZmlsZW5hbWUgZm9yIGkgaW4gaW5mb3NdCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKFRFU1RGTiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJhbm90aGVyLm5hbWUiLCBuYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInN0cmZpbGUiLCBuYW1lcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIndyaXR0ZW4tb3Blbi13IiwgbmFtZXMpCiAgICAgICAgICAgICBmb3IgaSBpbiBpbmZvczoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkuZmlsZV9zaXplLCBsZW4oc2VsZi5kYXRhKSkKIAogICAgICAgICAgICAgIyBjaGVjayBnZXRpbmZvCi0gICAgICAgICAgICBmb3Igbm0gaW4gKFRFU1RGTiwgImFub3RoZXIubmFtZSIsICJzdHJmaWxlIik6CisgICAgICAgICAgICBmb3Igbm0gaW4gKFRFU1RGTiwgImFub3RoZXIubmFtZSIsICJzdHJmaWxlIiwgIndyaXR0ZW4tb3Blbi13Iik6CiAgICAgICAgICAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8obm0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmZpbGVuYW1lLCBubSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uZmlsZV9zaXplLCBsZW4oc2VsZi5kYXRhKSkKQEAgLTM3MiwxNCArMzczLDE4IEBACiAgICAgdGVzdF9sb3dfY29tcHJlc3Npb24gPSBOb25lCiAKICAgICBkZWYgemlwX3Rlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdyaXRlc3RyIGNyZWF0ZXMgZmlsZXMgd2l0aCBtb2RlIDA2MDAsCi0gICAgICAgICMgd2hlbiBpdCBpcyBwYXNzZWQgYSBuYW1lIHJhdGhlciB0aGFuIGEgWmlwSW5mbyBpbnN0YW5jZS4KKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3cml0ZXN0ciBhbmQgb3BlbiguLi4gbW9kZT0ndycpIGNyZWF0ZSBmaWxlcyB3aXRoCisgICAgICAgICMgbW9kZSAwNjAwLCB3aGVuIHRoZXkgYXJlIHBhc3NlZCBhIG5hbWUgcmF0aGVyIHRoYW4gYSBaaXBJbmZvCisgICAgICAgICMgaW5zdGFuY2UuCiAKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKICAgICAgICAgICAgIHppbmZvID0gemlwZnAuZ2V0aW5mbygnc3RyZmlsZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppbmZvLmV4dGVybmFsX2F0dHIsIDBvNjAwIDw8IDE2KQogCisgICAgICAgICAgICB6aW5mbzIgPSB6aXBmcC5nZXRpbmZvKCd3cml0dGVuLW9wZW4tdycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppbmZvMi5leHRlcm5hbF9hdHRyLCAwbzYwMCA8PCAxNikKKwogICAgIGRlZiB0ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKGYsIHppcGZpbGUuWklQX1NUT1JFRCkKQEAgLTQ0NCwxMiArNDQ5LDE2IEBACiAKICAgICBkZWYgdGVzdF93cml0ZV90b19yZWFkb25seShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCB0cnlpbmcgdG8gY2FsbCB3cml0ZSgpIG9uIGEgcmVhZG9ubHkgWmlwRmlsZSBvYmplY3QKLSAgICAgICAgcmFpc2VzIGEgUnVudGltZUVycm9yLiIiIgorICAgICAgICByYWlzZXMgYSBWYWx1ZUVycm9yLiIiIgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJ3IikgYXMgemlwZnA6CiAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic29tZWZpbGUudHh0IiwgImJvZ3VzIikKIAogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGZwLndyaXRlLCBURVNURk4pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQorCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgemlwZnAub3BlbihURVNURk4sIG1vZGU9J3cnKQogCiAgICAgZGVmIHRlc3RfYWRkX2ZpbGVfYmVmb3JlXzE5ODAoc2VsZik6CiAgICAgICAgICMgU2V0IGF0aW1lIGFuZCBtdGltZSB0byAxOTcwLTAxLTAxCkBAIC0xMDIyLDMyICsxMDMxLDYgQEAKICAgICAgICAgICAgICAgICBkYXRhICs9IHppcGZwLnJlYWQoaW5mbykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGF0YSwge2IiZm9vYmFyIiwgYiJiYXJmb28ifSkKIAotICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIpIGFzIHppcGZwOgotICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoJ3NwYW0udHh0JywgYidhYmFiYWdhbGFtYWdhJykKLQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIG1vZGUgaW4gJ1UnLCAnclUnOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgICAgICB6aXBvcGVuID0gemlwZnAub3Blbignc3BhbS50eHQnLCBtb2RlKQotICAgICAgICAgICAgICAgIHppcG9wZW4uY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfdW5pdmVyc2FsX3JlYWRhaGVhZHMoc2VsZik6Ci0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLQotICAgICAgICBkYXRhID0gYidhXHJcbicgKiAxNiAqIDEwMjQKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGZwOgotICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoVEVTVEZOLCBkYXRhKQotCi0gICAgICAgIGRhdGEyID0gYicnCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICdyJykgYXMgemlwZnAsIFwKLSAgICAgICAgICAgICBvcGVuVSh6aXBmcCwgVEVTVEZOKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gemlwb3BlbjoKLSAgICAgICAgICAgICAgICBkYXRhMiArPSBsaW5lCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBkYXRhMi5yZXBsYWNlKGInXG4nLCBiJ1xyXG4nKSkKLQogICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2V4dGVuZGVkX2xvY2FsX2hlYWRlcl9pc3N1ZTEyMDIoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JykgYXMgb3JpZ196aXA6CiAgICAgICAgICAgICBmb3IgZGF0YSBpbiAnYWJjZGVmZ2hpamtsbW5vcCc6CkBAIC0xMjI3LDI3ICsxMjEwLDI3IEBACiAgICAgICAgICAgICBmcC53cml0ZSgic2hvcnQgZmlsZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGZpbGUuQmFkWmlwRmlsZSwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4pCiAKLSAgICBkZWYgdGVzdF9jbG9zZWRfemlwX3JhaXNlc19SdW50aW1lRXJyb3Ioc2VsZik6CisgICAgZGVmIHRlc3RfY2xvc2VkX3ppcF9yYWlzZXNfVmFsdWVFcnJvcihzZWxmKToKICAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGVzdHppcCgpIGRvZXNuJ3Qgc3dhbGxvdyBpbmFwcHJvcHJpYXRlIGV4Y2VwdGlvbnMuIiIiCiAgICAgICAgIGRhdGEgPSBpby5CeXRlc0lPKCkKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZGF0YSwgbW9kZT0idyIpIGFzIHppcGY6CiAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCJmb28udHh0IiwgIk8sIGZvciBhIE11c2Ugb2YgRmlyZSEiKQogCiAgICAgICAgICMgVGhpcyBpcyBjb3JyZWN0OyBjYWxsaW5nIC5yZWFkIG9uIGEgY2xvc2VkIFppcEZpbGUgc2hvdWxkIHJhaXNlCi0gICAgICAgICMgYSBSdW50aW1lRXJyb3IsIGFuZCBzbyBzaG91bGQgY2FsbGluZyAudGVzdHppcC4gIEFuIGVhcmxpZXIKKyAgICAgICAgIyBhIFZhbHVlRXJyb3IsIGFuZCBzbyBzaG91bGQgY2FsbGluZyAudGVzdHppcC4gIEFuIGVhcmxpZXIKICAgICAgICAgIyB2ZXJzaW9uIG9mIC50ZXN0emlwIHdvdWxkIHN3YWxsb3cgdGhpcyBleGNlcHRpb24gKGFuZCBhbnkgb3RoZXIpCiAgICAgICAgICMgYW5kIHJlcG9ydCB0aGF0IHRoZSBmaXJzdCBmaWxlIGluIHRoZSBhcmNoaXZlIHdhcyBjb3JydXB0LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYucmVhZCwgImZvby50eHQiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYudGVzdHppcCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLndyaXRlc3RyLCAiYm9ndXMudHh0IiwgImJvZ3VzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5yZWFkLCAiZm9vLnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLnRlc3R6aXApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYud3JpdGVzdHIsICJib2d1cy50eHQiLCAiYm9ndXMiKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCd6aXBmaWxlIHRlc3QgZGF0YScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi53cml0ZSwgVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLndyaXRlLCBURVNURk4pCiAKICAgICBkZWYgdGVzdF9iYWRfY29uc3RydWN0b3JfbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgbW9kZXMgcGFzc2VkIHRvIFppcEZpbGUgY29uc3RydWN0b3IgYXJlIGNhdWdodC4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInEiKQogCiAgICAgZGVmIHRlc3RfYmFkX29wZW5fbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgbW9kZXMgcGFzc2VkIHRvIFppcEZpbGUub3BlbiBhcmUgY2F1Z2h0LiIiIgpAQCAtMTI1NSw5ICsxMjM4LDEyIEBACiAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCJmb28udHh0IiwgIk8sIGZvciBhIE11c2Ugb2YgRmlyZSEiKQogCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTiwgbW9kZT0iciIpIGFzIHppcGY6Ci0gICAgICAgICMgcmVhZCB0aGUgZGF0YSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdGhlcmUKKyAgICAgICAgICAgICMgcmVhZCB0aGUgZGF0YSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdGhlcmUKICAgICAgICAgICAgIHppcGYucmVhZCgiZm9vLnR4dCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiLCAicSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgInEiKQorICAgICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgc3VwcG9ydCBpcyByZW1vdmVkCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgIlUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIsICJyVSIpCiAKICAgICBkZWYgdGVzdF9yZWFkMChzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBjYWxsaW5nIHJlYWQoMCkgb24gYSBaaXBFeHRGaWxlIG9iamVjdCByZXR1cm5zIGFuIGVtcHR5CkBAIC0xMjgwLDcgKzEyNjYsNyBAQAogICAgIGRlZiB0ZXN0X2JhZF9jb21wcmVzc2lvbl9tb2RlKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGJhZCBjb21wcmVzc2lvbiBtZXRob2RzIHBhc3NlZCB0byBaaXBGaWxlLm9wZW4gYXJlCiAgICAgICAgIGNhdWdodC4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInciLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJ3IiwgLTEpCiAKICAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9jb21wcmVzc2lvbihzZWxmKToKICAgICAgICAgIyBkYXRhIGlzIGRlY2xhcmVkIGFzIHNocnVuaywgYnV0IGFjdHVhbGx5IGRlZmxhdGVkCkBAIC0xNDI4LDYgKzE0MTQsMzUgQEAKICAgICAgICAgICAgICMgdGVzdHppcCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBjb3JydXB0IGZpbGUsIG9yIE5vbmUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHppcGYudGVzdHppcCgpKQogCisgICAgZGVmIHRlc3Rfb3Blbl9jb25mbGljdGluZ19oYW5kbGVzKHNlbGYpOgorICAgICAgICAjIEl0J3Mgb25seSBwb3NzaWJsZSB0byBvcGVuIG9uZSB3cml0YWJsZSBmaWxlIGhhbmRsZSBhdCBhIHRpbWUKKyAgICAgICAgbXNnMSA9IGIiSXQncyBmdW4gdG8gY2hhcnRlciBhbiBhY2NvdW50YW50ISIKKyAgICAgICAgbXNnMiA9IGIiQW5kIHNhaWwgdGhlIHdpZGUgYWNjb3VudGFudCBzZWEiCisgICAgICAgIG1zZzMgPSBiIlRvIGZpbmQsIGV4cGxvcmUgdGhlIGZ1bmRzIG9mZnNob3JlIgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdmb28nLCBtb2RlPSd3JykgYXMgdzI6CisgICAgICAgICAgICAgICAgdzIud3JpdGUobXNnMSkKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdiYXInLCBtb2RlPSd3JykgYXMgdzE6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi5vcGVuKCdoYW5kbGUnLCBtb2RlPSd3JykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLm9wZW4oJ2ZvbycsIG1vZGU9J3InKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3N0cicsICdhYmNkZScpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi53cml0ZShfX2ZpbGVfXywgJ2ZpbGUnKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHcxLndyaXRlKG1zZzIpCisgICAgICAgICAgICB3aXRoIHppcGYub3BlbignYmF6JywgbW9kZT0ndycpIGFzIHcyOgorICAgICAgICAgICAgICAgIHcyLndyaXRlKG1zZzMpCisKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2ZvbycpLCBtc2cxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2JhcicpLCBtc2cyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2JheicpLCBtc2czKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLm5hbWVsaXN0KCksIFsnZm9vJywgJ2JhcicsICdiYXonXSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5saW5rKFRFU1RGTikKICAgICAgICAgdW5saW5rKFRFU1RGTjIpCkBAIC0xNzYxLDYgKzE3NzYsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoem9wZW4ucmVhZCgpLCBiJzIyMicpCiAKKyAgICBkZWYgdGVzdF9vcGVuX3dyaXRlKHNlbGYpOgorICAgICAgICBmb3Igd3JhcHBlciBpbiAobGFtYmRhIGY6IGYpLCBUZWxsYWJsZSwgVW5zZWVrYWJsZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHdyYXBwZXI9d3JhcHBlcik6CisgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgIGYud3JpdGUoYidhYmMnKQorICAgICAgICAgICAgICAgIGJmID0gaW8uQnVmZmVyZWRXcml0ZXIoZikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh3cmFwcGVyKGJmKSwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJywgJ3cnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHpvcGVuLndyaXRlKGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnLCAndycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgem9wZW4ud3JpdGUoYicyMjInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpWzo1XSwgYidhYmNQSycpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZikgYXMgemlwZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ29uZXMnKSwgYicxMTEnKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgndHdvcycpLCBiJzIyMicpCisKIAogQHJlcXVpcmVzX3psaWIKIGNsYXNzIFRlc3RzV2l0aE11bHRpcGxlT3BlbnModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTg3MSw2ICsxOTAyLDE5IEBACiAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGYuZmlsZW5vKCksIDEwMCkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3doaWxlX3JlYWRpbmcoc2VsZik6CisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JywgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6CisgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ2EnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJywgJ3InKSBhcyByMToKKyAgICAgICAgICAgICAgICBkYXRhMSA9IHIxLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJywgJ3cnKSBhcyB3MToKKyAgICAgICAgICAgICAgICAgICAgdzEud3JpdGUoc2VsZi5kYXRhMikKKyAgICAgICAgICAgICAgICBkYXRhMSArPSByMS5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMikgYXMgemlwZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCd0d29zJyksIHNlbGYuZGF0YTIpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubGluayhURVNURk4yKQogCkBAIC0xOTQwLDEzNyArMTk4NCwxOSBAQAogICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKIAogCi1jbGFzcyBBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0czoKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMubGluZV9nZW4gPSBbYnl0ZXMoIlRlc3Qgb2YgemlwZmlsZSBsaW5lICVkLiIgJSBpLCAiYXNjaWkiKQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoRklYRURURVNUX1NJWkUpXQotICAgICAgICBjbHMuc2VwcyA9IChiJ1xyJywgYidcclxuJywgYidcbicpCi0gICAgICAgIGNscy5hcmNkYXRhID0ge30KLSAgICAgICAgZm9yIG4sIHMgaW4gZW51bWVyYXRlKGNscy5zZXBzKToKLSAgICAgICAgICAgIGNscy5hcmNkYXRhW3NdID0gcy5qb2luKGNscy5saW5lX2dlbikgKyBzCitjbGFzcyBaaXBJbmZvVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgemkgPSB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKF9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5iYXNlbmFtZSh6aS5maWxlbmFtZSksICd0ZXN0X3ppcGZpbGUucHknKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHppLmlzX2RpcigpKQogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmFyY2ZpbGVzID0ge30KLSAgICAgICAgZm9yIG4sIHMgaW4gZW51bWVyYXRlKHNlbGYuc2Vwcyk6Ci0gICAgICAgICAgICBzZWxmLmFyY2ZpbGVzW3NdID0gJyVzLSVkJyAlIChURVNURk4sIG4pCi0gICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5hcmNmaWxlc1tzXSwgIndiIikgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuYXJjZGF0YVtzXSkKLQotICAgIGRlZiBtYWtlX3Rlc3RfYXJjaGl2ZShzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIsIGNvbXByZXNzaW9uKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBmbiBpbiBzZWxmLmFyY2ZpbGVzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIHppcGZwLndyaXRlKGZuLCBmbikKLQotICAgIGRlZiByZWFkX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIHppcGRhdGEgPSBmcC5yZWFkKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYXJjZGF0YVtzZXBdLCB6aXBkYXRhKQotCi0gICAgZGVmIHRlc3RfcmVhZChzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5yZWFkX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZV9yZWFkX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgemlwb3BlbjoKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGInJwotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCA9IHppcG9wZW4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlYWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gcmVhZAotCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkID0gemlwb3Blbi5yZWFkKDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVhZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSArPSByZWFkCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5hcmNkYXRhW2InXG4nXSkKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWQoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfcmVhZF90ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgcmVhZGxpbmVfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfZ2VuOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZWRhdGEgPSB6aXBvcGVuLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZWRhdGEsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZXNfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyBmcDoKLSAgICAgICAgICAgICAgICAgICAgemlwbGluZXMgPSBmcC5yZWFkbGluZXMoKQotICAgICAgICAgICAgICAgIGZvciBsaW5lLCB6aXBsaW5lIGluIHppcChzZWxmLmxpbmVfZ2VuLCB6aXBsaW5lcyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwbGluZSwgbGluZSArIGInXG4nKQotCi0gICAgZGVmIHRlc3RfcmVhZGxpbmVzKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lc190ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgaXRlcmxpbmVzX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBsaW5lLCB6aXBsaW5lIGluIHppcChzZWxmLmxpbmVfZ2VuLCBmcCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGxpbmUsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X2l0ZXJsaW5lcyhzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICB1bmxpbmsoZm4pCi0gICAgICAgIHVubGluayhURVNURk4pCi0gICAgICAgIHVubGluayhURVNURk4yKQotCi0KLWNsYXNzIFN0b3JlZFVuaXZlcnNhbE5ld2xpbmVUZXN0cyhBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9TVE9SRUQKLQotQHJlcXVpcmVzX3psaWIKLWNsYXNzIERlZmxhdGVVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0RFRkxBVEVECi0KLUByZXF1aXJlc19iejIKLWNsYXNzIEJ6aXAyVW5pdmVyc2FsTmV3bGluZVRlc3RzKEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfQlpJUDIKLQotQHJlcXVpcmVzX2x6bWEKLWNsYXNzIEx6bWFVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0xaTUEKKyAgICBkZWYgdGVzdF9mcm9tX2RpcihzZWxmKToKKyAgICAgICAgZGlycGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorICAgICAgICB6aSA9IHppcGZpbGUuWmlwSW5mby5mcm9tX2ZpbGUoZGlycGF0aCwgJ3N0ZGxpYl90ZXN0cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZmlsZW5hbWUsICdzdGRsaWJfdGVzdHMvJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHppLmlzX2RpcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX1NUT1JFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5maWxlX3NpemUsIDApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CmluZGV4IGQ1YjNiMjIuLjdkZGJjNTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CkBAIC0zOTgsNyArMzk4LDggQEAKICAgICAgICAgcGFja2RpcjIgPSBwYWNrZGlyICsgVEVTVFBBQ0syICsgb3Muc2VwCiAgICAgICAgIGZpbGVzID0ge3BhY2tkaXIgKyAiX19pbml0X18iICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAogICAgICAgICAgICAgICAgICBwYWNrZGlyMiArICJfX2luaXRfXyIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5YyksCi0gICAgICAgICAgICAgICAgIHBhY2tkaXIyICsgVEVTVE1PRCArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKX0KKyAgICAgICAgICAgICAgICAgcGFja2RpcjIgKyBURVNUTU9EICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAorICAgICAgICAgICAgICAgICAic3BhbSIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5Yyl9CiAKICAgICAgICAgeiA9IFppcEZpbGUoVEVNUF9aSVAsICJ3IikKICAgICAgICAgdHJ5OgpAQCAtNDEyLDYgKzQxMywxNCBAQAogICAgICAgICAgICAgemkgPSB6aXBpbXBvcnQuemlwaW1wb3J0ZXIoVEVNUF9aSVApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmFyY2hpdmUsIFRFTVBfWklQKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5pc19wYWNrYWdlKFRFU1RQQUNLKSwgVHJ1ZSkKKworICAgICAgICAgICAgZmluZF9tb2QgPSB6aS5maW5kX21vZHVsZSgnc3BhbScpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kX21vZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kX21vZCwgemlwaW1wb3J0LnppcGltcG9ydGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaW5kX21vZC5pc19wYWNrYWdlKCdzcGFtJykpCisgICAgICAgICAgICBsb2FkX21vZCA9IGZpbmRfbW9kLmxvYWRfbW9kdWxlKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZF9tb2QuZ2V0X2ZpbGVuYW1lKCdzcGFtJyksIGxvYWRfbW9kLl9fZmlsZV9fKQorCiAgICAgICAgICAgICBtb2QgPSB6aS5sb2FkX21vZHVsZShURVNUUEFDSykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZ2V0X2ZpbGVuYW1lKFRFU1RQQUNLKSwgbW9kLl9fZmlsZV9fKQogCkBAIC00NzEsNiArNDgwLDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHppLmlzX3BhY2thZ2UoVEVTVFBBQ0syICsgb3Muc2VwICsgVEVTVE1PRCksIEZhbHNlKQogCisgICAgICAgICAgICBwa2dfcGF0aCA9IFRFTVBfWklQICsgb3Muc2VwICsgcGFja2RpciArIFRFU1RQQUNLMgorICAgICAgICAgICAgemkyID0gemlwaW1wb3J0LnppcGltcG9ydGVyKHBrZ19wYXRoKQorICAgICAgICAgICAgZmluZF9tb2RfZG90dGVkID0gemkyLmZpbmRfbW9kdWxlKFRFU1RNT0QpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kX21vZF9kb3R0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZF9tb2RfZG90dGVkLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHppMi5pc19wYWNrYWdlKFRFU1RNT0QpKQorICAgICAgICAgICAgbG9hZF9tb2QgPSBmaW5kX21vZF9kb3R0ZWQubG9hZF9tb2R1bGUoVEVTVE1PRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZmluZF9tb2RfZG90dGVkLmdldF9maWxlbmFtZShURVNUTU9EKSwgbG9hZF9tb2QuX19maWxlX18pCisKICAgICAgICAgICAgIG1vZF9wYXRoID0gVEVTVFBBQ0syICsgb3Muc2VwICsgVEVTVE1PRAogICAgICAgICAgICAgbW9kX25hbWUgPSBtb2R1bGVfcGF0aF90b19kb3R0ZWRfbmFtZShtb2RfcGF0aCkKICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZF9uYW1lKQpAQCAtNjIzLDggKzY0MiwxMCBAQAogCiAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihmaWxlbmFtZSkKICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkKLSAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKGJ5dGVhcnJheShvcy5mc2VuY29kZShmaWxlbmFtZSkpKQotICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIobWVtb3J5dmlldyhvcy5mc2VuY29kZShmaWxlbmFtZSkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihieXRlYXJyYXkob3MuZnNlbmNvZGUoZmlsZW5hbWUpKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIobWVtb3J5dmlldyhvcy5mc2VuY29kZShmaWxlbmFtZSkpKQogCiAKIEBzdXBwb3J0LnJlcXVpcmVzX3psaWIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CmluZGV4IDU5MTM2MjIuLjg0ZDUyNmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQpAQCAtMTIsNyArMTIsNiBAQAogaW1wb3J0IGRvY3Rlc3QKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgbGluZWNhY2hlCi1pbXBvcnQgcGRiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9zY3JpcHQpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3psaWIucHkgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKaW5kZXggNmZlYTg5My4uMjAxNzRkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQpAQCAtMTY0LDYgKzE2NCwxNiBAQAogICAgICAgICB4ID0gemxpYi5jb21wcmVzcyhIQU1MRVRfU0NFTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5kZWNvbXByZXNzKHgpLCBIQU1MRVRfU0NFTkUpCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgeCA9IHpsaWIuY29tcHJlc3MoSEFNTEVUX1NDRU5FLCBsZXZlbD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4KSwgSEFNTEVUX1NDRU5FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB6bGliLmNvbXByZXNzKGRhdGE9SEFNTEVUX1NDRU5FLCBsZXZlbD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Yml0cz16bGliLk1BWF9XQklUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZT16bGliLkRFRl9CVUZfU0laRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgSEFNTEVUX1NDRU5FKQorCiAgICAgZGVmIHRlc3Rfc3BlZWNoMTI4KHNlbGYpOgogICAgICAgICAjIGNvbXByZXNzIG1vcmUgZGF0YQogICAgICAgICBkYXRhID0gSEFNTEVUX1NDRU5FICogMTI4CkBAIC0yMzQsNiArMjQ0LDI3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGNvLnVuY29uc3VtZWRfdGFpbCwgYnl0ZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGNvLnVudXNlZF9kYXRhLCBieXRlcykKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRzKHNlbGYpOgorICAgICAgICBsZXZlbCA9IDIKKyAgICAgICAgbWV0aG9kID0gemxpYi5ERUZMQVRFRAorICAgICAgICB3Yml0cyA9IC0xMgorICAgICAgICBtZW1MZXZlbCA9IDkKKyAgICAgICAgc3RyYXRlZ3kgPSB6bGliLlpfRklMVEVSRUQKKyAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKGxldmVsPWxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPW1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiaXRzPXdiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtTGV2ZWw9bWVtTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJhdGVneT1zdHJhdGVneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpkaWN0PWIiIikKKyAgICAgICAgZG8gPSB6bGliLmRlY29tcHJlc3NvYmood2JpdHM9d2JpdHMsIHpkaWN0PWIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY28uY29tcHJlc3MoZGF0YT1IQU1MRVRfU0NFTkUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRvLmRlY29tcHJlc3MoZGF0YT16bGliLmNvbXByZXNzKEhBTUxFVF9TQ0VORSkpCisgICAgICAgIHggPSBjby5jb21wcmVzcyhIQU1MRVRfU0NFTkUpICsgY28uZmx1c2goKQorICAgICAgICB5ID0gZG8uZGVjb21wcmVzcyh4LCBtYXhfbGVuZ3RoPWxlbihIQU1MRVRfU0NFTkUpKSArIGRvLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChIQU1MRVRfU0NFTkUsIHkpCisKICAgICBkZWYgdGVzdF9jb21wcmVzc29wdGlvbnMoc2VsZik6CiAgICAgICAgICMgc3BlY2lmeSBsb3RzIG9mIG9wdGlvbnMgdG8gY29tcHJlc3NvYmooKQogICAgICAgICBsZXZlbCA9IDIKQEAgLTI0OSwxMCArMjgwLDYgQEAKICAgICAgICAgeTIgPSBkY28uZmx1c2goKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEhBTUxFVF9TQ0VORSwgeTEgKyB5MikKIAotICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzIHNob3VsZCBhbHNvIGJlIHN1cHBvcnRlZAotICAgICAgICB6bGliLmNvbXByZXNzb2JqKGxldmVsPWxldmVsLCBtZXRob2Q9bWV0aG9kLCB3Yml0cz13Yml0cywKLSAgICAgICAgICAgIG1lbUxldmVsPW1lbUxldmVsLCBzdHJhdGVneT1zdHJhdGVneSwgemRpY3Q9YiIiKQotCiAgICAgZGVmIHRlc3RfY29tcHJlc3NpbmNyZW1lbnRhbChzZWxmKToKICAgICAgICAgIyBjb21wcmVzcyBvYmplY3QgaW4gc3RlcHMsIGRlY29tcHJlc3Mgb2JqZWN0IGFzIG9uZS1zaG90CiAgICAgICAgIGRhdGEgPSBIQU1MRVRfU0NFTkUgKiAxMjgKZGlmZiAtLWdpdCBhL0xpYi90aHJlYWRpbmcucHkgYi9MaWIvdGhyZWFkaW5nLnB5CmluZGV4IDA2YjdiOWIuLjQ4MjlmZjQgMTAwNjQ0Ci0tLSBhL0xpYi90aHJlYWRpbmcucHkKKysrIGIvTGliL3RocmVhZGluZy5weQpAQCAtMjIsOSArMjIsMTEgQEAKICMgd2l0aCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSwgd2hpY2ggZG9lc24ndCBwcm92aWRlIHRoZSBvbGQKICMgSmF2YSBpbnNwaXJlZCBuYW1lcy4KIAotX19hbGxfXyA9IFsnYWN0aXZlX2NvdW50JywgJ0NvbmRpdGlvbicsICdjdXJyZW50X3RocmVhZCcsICdlbnVtZXJhdGUnLCAnRXZlbnQnLAotICAgICAgICAgICAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdUaHJlYWQnLCAnQmFycmllcicsCi0gICAgICAgICAgICdUaW1lcicsICdUaHJlYWRFcnJvcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQorX19hbGxfXyA9IFsnZ2V0X2lkZW50JywgJ2FjdGl2ZV9jb3VudCcsICdDb25kaXRpb24nLCAnY3VycmVudF90aHJlYWQnLAorICAgICAgICAgICAnZW51bWVyYXRlJywgJ21haW5fdGhyZWFkJywgJ1RJTUVPVVRfTUFYJywKKyAgICAgICAgICAgJ0V2ZW50JywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnVGhyZWFkJywKKyAgICAgICAgICAgJ0JhcnJpZXInLCAnQnJva2VuQmFycmllckVycm9yJywgJ1RpbWVyJywgJ1RocmVhZEVycm9yJywKKyAgICAgICAgICAgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCiAKICMgUmVuYW1lIHNvbWUgc3R1ZmYgc28gImZyb20gdGhyZWFkaW5nIGltcG9ydCAqIiBpcyBzYWZlCiBfc3RhcnRfbmV3X3RocmVhZCA9IF90aHJlYWQuc3RhcnRfbmV3X3RocmVhZApkaWZmIC0tZ2l0IGEvTGliL3RpbWVpdC5weSBiL0xpYi90aW1laXQucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAyZGU4OGY3Li4yNzcwZWZhCi0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtMjA3LDYgKzIwNywyNiBAQAogICAgICAgICAgICAgci5hcHBlbmQodCkKICAgICAgICAgcmV0dXJuIHIKIAorICAgIGRlZiBhdXRvcmFuZ2Uoc2VsZiwgY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIGxvb3BzIHNvIHRoYXQgdG90YWwgdGltZSA+PSAwLjIuCisKKyAgICAgICAgQ2FsbHMgdGhlIHRpbWVpdCBtZXRob2Qgd2l0aCAqbnVtYmVyKiBzZXQgdG8gc3VjY2Vzc2l2ZSBwb3dlcnMgb2YKKyAgICAgICAgdGVuICgxMCwgMTAwLCAxMDAwLCAuLi4pIHVwIHRvIGEgbWF4aW11bSBvZiBvbmUgYmlsbGlvbiwgdW50aWwKKyAgICAgICAgdGhlIHRpbWUgdGFrZW4gaXMgYXQgbGVhc3QgMC4yIHNlY29uZCwgb3IgdGhlIG1heGltdW0gaXMgcmVhY2hlZC4KKyAgICAgICAgUmV0dXJucyBgYChudW1iZXIsIHRpbWVfdGFrZW4pYGAuCisKKyAgICAgICAgSWYgKmNhbGxiYWNrKiBpcyBnaXZlbiBhbmQgaXMgbm90IE5vbmUsIGl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyCisgICAgICAgIGVhY2ggdHJpYWwgd2l0aCB0d28gYXJndW1lbnRzOiBgYGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbilgYC4KKyAgICAgICAgIiIiCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDEwKToKKyAgICAgICAgICAgIG51bWJlciA9IDEwKippCisgICAgICAgICAgICB0aW1lX3Rha2VuID0gc2VsZi50aW1laXQobnVtYmVyKQorICAgICAgICAgICAgaWYgY2FsbGJhY2s6CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVtYmVyLCB0aW1lX3Rha2VuKQorICAgICAgICAgICAgaWYgdGltZV90YWtlbiA+PSAwLjI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJuIChudW1iZXIsIHRpbWVfdGFrZW4pCisKIGRlZiB0aW1laXQoc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lciwKICAgICAgICAgICAgbnVtYmVyPWRlZmF1bHRfbnVtYmVyLCBnbG9iYWxzPU5vbmUpOgogICAgICIiIkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBUaW1lciBvYmplY3QgYW5kIGNhbGwgdGltZWl0IG1ldGhvZC4iIiIKQEAgLTI5NSwxNyArMzE1LDE2IEBACiAgICAgdCA9IFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lcikKICAgICBpZiBudW1iZXIgPT0gMDoKICAgICAgICAgIyBkZXRlcm1pbmUgbnVtYmVyIHNvIHRoYXQgMC4yIDw9IHRvdGFsIHRpbWUgPCAyLjAKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgICAgICAgICAgbnVtYmVyID0gMTAqKmkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB4ID0gdC50aW1laXQobnVtYmVyKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHQucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgiJWQgbG9vcHMgLT4gJS4qZyBzZWNzIiAlIChudW1iZXIsIHByZWNpc2lvbiwgeCkpCi0gICAgICAgICAgICBpZiB4ID49IDAuMjoKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBjYWxsYmFjayA9IE5vbmUKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIGRlZiBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ7bnVtfSBsb29wcyAtPiB7c2Vjczoue3ByZWN9Z30gc2VjcyIKKyAgICAgICAgICAgICAgICBwcmludChtc2cuZm9ybWF0KG51bT1udW1iZXIsIHNlY3M9dGltZV90YWtlbiwgcHJlYz1wcmVjaXNpb24pKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBudW1iZXIsIF8gPSB0LmF1dG9yYW5nZShjYWxsYmFjaykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgdC5wcmludF9leGMoKQorICAgICAgICAgICAgcmV0dXJuIDEKICAgICB0cnk6CiAgICAgICAgIHIgPSB0LnJlcGVhdChyZXBlYXQsIG51bWJlcikKICAgICBleGNlcHQ6CkBAIC0zMTcsMjAgKzMzNiwyNiBAQAogICAgIHByaW50KCIlZCBsb29wcywiICUgbnVtYmVyLCBlbmQ9JyAnKQogICAgIHVzZWMgPSBiZXN0ICogMWU2IC8gbnVtYmVyCiAgICAgaWYgdGltZV91bml0IGlzIG5vdCBOb25lOgotICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyAlcyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VjL3VuaXRzW3RpbWVfdW5pdF0sIHRpbWVfdW5pdCkpCisgICAgICAgIHNjYWxlID0gdW5pdHNbdGltZV91bml0XQogICAgIGVsc2U6Ci0gICAgICAgIGlmIHVzZWMgPCAxMDAwOgotICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgdXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sIHVzZWMpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNlYyA9IHVzZWMgLyAxMDAwCi0gICAgICAgICAgICBpZiBtc2VjIDwgMTAwMDoKLSAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBtc2VjIHBlciBsb29wIiAlIChyZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uLCBtc2VjKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VjID0gbXNlYyAvIDEwMDAKLSAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBzZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwgc2VjKSkKKyAgICAgICAgc2NhbGVzID0gWyhzY2FsZSwgdW5pdCkgZm9yIHVuaXQsIHNjYWxlIGluIHVuaXRzLml0ZW1zKCldCisgICAgICAgIHNjYWxlcy5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgZm9yIHNjYWxlLCB0aW1lX3VuaXQgaW4gc2NhbGVzOgorICAgICAgICAgICAgaWYgdXNlYyA+PSBzY2FsZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnICVzIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlYy9zY2FsZSwgdGltZV91bml0KSkKKyAgICBiZXN0ID0gbWluKHIpCisgICAgdXNlYyA9IGJlc3QgKiAxZTYgLyBudW1iZXIKKyAgICB3b3JzdCA9IG1heChyKQorICAgIGlmIHdvcnN0ID49IGJlc3QgKiA0OgorICAgICAgICB1c2VjID0gd29yc3QgKiAxZTYgLyBudW1iZXIKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQoCisgICAgICAgICAgICAiVGhlIHRlc3QgcmVzdWx0cyBhcmUgbGlrZWx5IHVucmVsaWFibGUuIFRoZSB3b3JzdFxuIgorICAgICAgICAgICAgInRpbWUgKCUuKmcgJXMpIHdhcyBtb3JlIHRoYW4gZm91ciB0aW1lcyBzbG93ZXIgdGhhbiB0aGUgYmVzdCB0aW1lLiIgJQorICAgICAgICAgICAgKHByZWNpc2lvbiwgdXNlYy9zY2FsZSwgdGltZV91bml0KSwKKyAgICAgICAgICAgICBVc2VyV2FybmluZywgJycsIDApCiAgICAgcmV0dXJuIE5vbmUKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5IGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKaW5kZXggNTViZmI3Zi4uOTlhZDJhNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX19pbml0X18ucHkKKysrIGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKQEAgLTMwLDYgKzMwLDcgQEAKIHRrLm1haW5sb29wKCkKICIiIgogCitpbXBvcnQgZW51bQogaW1wb3J0IHN5cwogCiBpbXBvcnQgX3RraW50ZXIgIyBJZiB0aGlzIGZhaWxzIHlvdXIgUHl0aG9uIG1heSBub3QgYmUgY29uZmlndXJlZCBmb3IgVGsKQEAgLTEzMiw2ICsxMzMsNTAgQEAKICAgICAgICAgZGljdFtrZXldID0gdmFsdWUKICAgICByZXR1cm4gZGljdAogCisKK2NsYXNzIEV2ZW50VHlwZShzdHIsIGVudW0uRW51bSk6CisgICAgS2V5UHJlc3MgPSAnMicKKyAgICBLZXkgPSBLZXlQcmVzcywKKyAgICBLZXlSZWxlYXNlID0gJzMnCisgICAgQnV0dG9uUHJlc3MgPSAnNCcKKyAgICBCdXR0b24gPSBCdXR0b25QcmVzcywKKyAgICBCdXR0b25SZWxlYXNlID0gJzUnCisgICAgTW90aW9uID0gJzYnCisgICAgRW50ZXIgPSAnNycKKyAgICBMZWF2ZSA9ICc4JworICAgIEZvY3VzSW4gPSAnOScKKyAgICBGb2N1c091dCA9ICcxMCcKKyAgICBLZXltYXAgPSAnMTEnICAgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIEV4cG9zZSA9ICcxMicKKyAgICBHcmFwaGljc0V4cG9zZSA9ICcxMycgICAjIHVuZG9jdW1lbnRlZAorICAgIE5vRXhwb3NlID0gJzE0JyAgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgVmlzaWJpbGl0eSA9ICcxNScKKyAgICBDcmVhdGUgPSAnMTYnCisgICAgRGVzdHJveSA9ICcxNycKKyAgICBVbm1hcCA9ICcxOCcKKyAgICBNYXAgPSAnMTknCisgICAgTWFwUmVxdWVzdCA9ICcyMCcKKyAgICBSZXBhcmVudCA9ICcyMScKKyAgICBDb25maWd1cmUgPSAnMjInCisgICAgQ29uZmlndXJlUmVxdWVzdCA9ICcyMycKKyAgICBHcmF2aXR5ID0gJzI0JworICAgIFJlc2l6ZVJlcXVlc3QgPSAnMjUnCisgICAgQ2lyY3VsYXRlID0gJzI2JworICAgIENpcmN1bGF0ZVJlcXVlc3QgPSAnMjcnCisgICAgUHJvcGVydHkgPSAnMjgnCisgICAgU2VsZWN0aW9uQ2xlYXIgPSAnMjknICAgIyB1bmRvY3VtZW50ZWQKKyAgICBTZWxlY3Rpb25SZXF1ZXN0ID0gJzMwJyAjIHVuZG9jdW1lbnRlZAorICAgIFNlbGVjdGlvbiA9ICczMScgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgQ29sb3JtYXAgPSAnMzInCisgICAgQ2xpZW50TWVzc2FnZSA9ICczMycgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBNYXBwaW5nID0gJzM0JyAgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIFZpcnR1YWxFdmVudCA9ICczNScsICAgICMgdW5kb2N1bWVudGVkCisgICAgQWN0aXZhdGUgPSAnMzYnLAorICAgIERlYWN0aXZhdGUgPSAnMzcnLAorICAgIE1vdXNlV2hlZWwgPSAnMzgnLAorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisKIGNsYXNzIEV2ZW50OgogICAgICIiIkNvbnRhaW5lciBmb3IgdGhlIHByb3BlcnRpZXMgb2YgYW4gZXZlbnQuCiAKQEAgLTE3NCw3ICsyMTksNDMgQEAKICAgICB3aWRnZXQgLSB3aWRnZXQgaW4gd2hpY2ggdGhlIGV2ZW50IG9jY3VycmVkCiAgICAgZGVsdGEgLSBkZWx0YSBvZiB3aGVlbCBtb3ZlbWVudCAoTW91c2VXaGVlbCkKICAgICAiIiIKLSAgICBwYXNzCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBhdHRycyA9IHtrOiB2IGZvciBrLCB2IGluIHNlbGYuX19kaWN0X18uaXRlbXMoKSBpZiB2ICE9ICc/Pyd9CisgICAgICAgIGlmIG5vdCBzZWxmLmNoYXI6CisgICAgICAgICAgICBkZWwgYXR0cnNbJ2NoYXInXQorICAgICAgICBlbGlmIHNlbGYuY2hhciAhPSAnPz8nOgorICAgICAgICAgICAgYXR0cnNbJ2NoYXInXSA9IHJlcHIoc2VsZi5jaGFyKQorICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCAnc2VuZF9ldmVudCcsIFRydWUpOgorICAgICAgICAgICAgZGVsIGF0dHJzWydzZW5kX2V2ZW50J10KKyAgICAgICAgaWYgc2VsZi5zdGF0ZSA9PSAwOgorICAgICAgICAgICAgZGVsIGF0dHJzWydzdGF0ZSddCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzZWxmLnN0YXRlLCBpbnQpOgorICAgICAgICAgICAgc3RhdGUgPSBzZWxmLnN0YXRlCisgICAgICAgICAgICBtb2RzID0gKCdTaGlmdCcsICdMb2NrJywgJ0NvbnRyb2wnLAorICAgICAgICAgICAgICAgICAgICAnTW9kMScsICdNb2QyJywgJ01vZDMnLCAnTW9kNCcsICdNb2Q1JywKKyAgICAgICAgICAgICAgICAgICAgJ0J1dHRvbjEnLCAnQnV0dG9uMicsICdCdXR0b24zJywgJ0J1dHRvbjQnLCAnQnV0dG9uNScpCisgICAgICAgICAgICBzID0gW10KKyAgICAgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZShtb2RzKToKKyAgICAgICAgICAgICAgICBpZiBzdGF0ZSAmICgxIDw8IGkpOgorICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChuKQorICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZSAmIH4oKDE8PCBsZW4obW9kcykpIC0gMSkKKyAgICAgICAgICAgIGlmIHN0YXRlIG9yIG5vdCBzOgorICAgICAgICAgICAgICAgIHMuYXBwZW5kKGhleChzdGF0ZSkpCisgICAgICAgICAgICBhdHRyc1snc3RhdGUnXSA9ICd8Jy5qb2luKHMpCisgICAgICAgIGlmIHNlbGYuZGVsdGEgPT0gMDoKKyAgICAgICAgICAgIGRlbCBhdHRyc1snZGVsdGEnXQorICAgICAgICAjIHdpZGdldCB1c3VhbGx5IGlzIGtub3duCisgICAgICAgICMgc2VyaWFsIGFuZCB0aW1lIGFyZSBub3QgdmVyeSBpbnRlcmVzdGluZworICAgICAgICAjIGtleXN5bV9udW0gZHVwbGljYXRlcyBrZXlzeW0KKyAgICAgICAgIyB4X3Jvb3QgYW5kIHlfcm9vdCBtb3N0bHkgZHVwbGljYXRlIHggYW5kIHkKKyAgICAgICAga2V5cyA9ICgnc2VuZF9ldmVudCcsCisgICAgICAgICAgICAgICAgJ3N0YXRlJywgJ2tleXN5bScsICdrZXljb2RlJywgJ2NoYXInLAorICAgICAgICAgICAgICAgICdudW0nLCAnZGVsdGEnLCAnZm9jdXMnLAorICAgICAgICAgICAgICAgICd4JywgJ3knLCAnd2lkdGgnLCAnaGVpZ2h0JykKKyAgICAgICAgcmV0dXJuICc8JXMgZXZlbnQlcz4nICUgKAorICAgICAgICAgICAgc2VsZi50eXBlLAorICAgICAgICAgICAgJycuam9pbignICVzPSVzJyAlIChrLCBhdHRyc1trXSkgZm9yIGsgaW4ga2V5cyBpZiBrIGluIGF0dHJzKQorICAgICAgICApCiAKIF9zdXBwb3J0X2RlZmF1bHRfcm9vdCA9IDEKIF9kZWZhdWx0X3Jvb3QgPSBOb25lCkBAIC0yNjIsMTUgKzM0Myw4IEBACiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHZhbHVlIG9mIHZhcmlhYmxlLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpCi0gICAgZGVmIHRyYWNlX3ZhcmlhYmxlKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKLSAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KIAotICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCi0gICAgICAgIENBTExCQUNLIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbgotICAgICAgICB0aGUgdmFyaWFibGUgaXMgcmVhZCwgd3JpdHRlbiBvciB1bmRlZmluZWQuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KLSAgICAgICAgIiIiCisgICAgZGVmIF9yZWdpc3RlcihzZWxmLCBjYWxsYmFjayk6CiAgICAgICAgIGYgPSBDYWxsV3JhcHBlcihjYWxsYmFjaywgTm9uZSwgc2VsZi5fcm9vdCkuX19jYWxsX18KICAgICAgICAgY2JuYW1lID0gcmVwcihpZChmKSkKICAgICAgICAgdHJ5OgpAQCAtMjg1LDE4ICszNTksMzMgQEAKICAgICAgICAgaWYgc2VsZi5fdGNsQ29tbWFuZHMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX3RjbENvbW1hbmRzID0gW10KICAgICAgICAgc2VsZi5fdGNsQ29tbWFuZHMuYXBwZW5kKGNibmFtZSkKLSAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmFyaWFibGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCiAgICAgICAgIHJldHVybiBjYm5hbWUKLSAgICB0cmFjZSA9IHRyYWNlX3ZhcmlhYmxlCi0gICAgZGVmIHRyYWNlX3ZkZWxldGUoc2VsZiwgbW9kZSwgY2JuYW1lKToKKworICAgIGRlZiB0cmFjZV9hZGQoc2VsZiwgbW9kZSwgY2FsbGJhY2spOgorICAgICAgICAiIiJEZWZpbmUgYSB0cmFjZSBjYWxsYmFjayBmb3IgdGhlIHZhcmlhYmxlLgorCisgICAgICAgIE1vZGUgaXMgb25lIG9mICJyZWFkIiwgIndyaXRlIiwgInVuc2V0Iiwgb3IgYSBsaXN0IG9yIHR1cGxlIG9mCisgICAgICAgIHN1Y2ggc3RyaW5ncy4KKyAgICAgICAgQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSB2YXJpYWJsZSBpcworICAgICAgICByZWFkLCB3cml0dGVuIG9yIHVuc2V0LgorCisgICAgICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2suCisgICAgICAgICIiIgorICAgICAgICBjYm5hbWUgPSBzZWxmLl9yZWdpc3RlcihjYWxsYmFjaykKKyAgICAgICAgc2VsZi5fdGsuY2FsbCgndHJhY2UnLCAnYWRkJywgJ3ZhcmlhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1lLCBtb2RlLCAoY2JuYW1lLCkpCisgICAgICAgIHJldHVybiBjYm5hbWUKKworICAgIGRlZiB0cmFjZV9yZW1vdmUoc2VsZiwgbW9kZSwgY2JuYW1lKToKICAgICAgICAgIiIiRGVsZXRlIHRoZSB0cmFjZSBjYWxsYmFjayBmb3IgYSB2YXJpYWJsZS4KIAotICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCi0gICAgICAgIENCTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV92YXJpYWJsZSBvciB0cmFjZS4KKyAgICAgICAgTW9kZSBpcyBvbmUgb2YgInJlYWQiLCAid3JpdGUiLCAidW5zZXQiIG9yIGEgbGlzdCBvciB0dXBsZSBvZgorICAgICAgICBzdWNoIHN0cmluZ3MuICBNdXN0IGJlIHNhbWUgYXMgd2VyZSBzcGVjaWZpZWQgaW4gdHJhY2VfYWRkKCkuCisgICAgICAgIGNibmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV9hZGQoKS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZkZWxldGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCi0gICAgICAgIGNibmFtZSA9IHNlbGYuX3RrLnNwbGl0bGlzdChjYm5hbWUpWzBdCi0gICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX3ZpbmZvKCk6CisgICAgICAgIHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ3JlbW92ZScsICd2YXJpYWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSwgbW9kZSwgY2JuYW1lKQorICAgICAgICBmb3IgbSwgY2EgaW4gc2VsZi50cmFjZV9pbmZvKCk6CiAgICAgICAgICAgICBpZiBzZWxmLl90ay5zcGxpdGxpc3QoY2EpWzBdID09IGNibmFtZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgpAQCAtMzA1LDEwICszOTQsNjQgQEAKICAgICAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5yZW1vdmUoY2JuYW1lKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgIGRlZiB0cmFjZV92aW5mbyhzZWxmKToKKworICAgIGRlZiB0cmFjZV9pbmZvKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYWxsIHRyYWNlIGNhbGxiYWNrIGluZm9ybWF0aW9uLiIiIgorICAgICAgICBzcGxpdGxpc3QgPSBzZWxmLl90ay5zcGxpdGxpc3QKKyAgICAgICAgcmV0dXJuIFsoc3BsaXRsaXN0KGspLCB2KSBmb3IgaywgdiBpbiBtYXAoc3BsaXRsaXN0LAorICAgICAgICAgICAgc3BsaXRsaXN0KHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ2luZm8nLCAndmFyaWFibGUnLCBzZWxmLl9uYW1lKSkpXQorCisgICAgZGVmIHRyYWNlX3ZhcmlhYmxlKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKKyAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KKworICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCisgICAgICAgIENBTExCQUNLIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbgorICAgICAgICB0aGUgdmFyaWFibGUgaXMgcmVhZCwgd3JpdHRlbiBvciB1bmRlZmluZWQuCisKKyAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX2FkZCgpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3JlZ2lzdGVyKGNhbGxiYWNrKQorICAgICAgICBzZWxmLl90ay5jYWxsKCJ0cmFjZSIsICJ2YXJpYWJsZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKKyAgICAgICAgcmV0dXJuIGNibmFtZQorCisgICAgdHJhY2UgPSB0cmFjZV92YXJpYWJsZQorCisgICAgZGVmIHRyYWNlX3ZkZWxldGUoc2VsZiwgbW9kZSwgY2JuYW1lKToKKyAgICAgICAgIiIiRGVsZXRlIHRoZSB0cmFjZSBjYWxsYmFjayBmb3IgYSB2YXJpYWJsZS4KKworICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCisgICAgICAgIENCTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV92YXJpYWJsZSBvciB0cmFjZS4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX3JlbW92ZSgpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZkZWxldGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3RrLnNwbGl0bGlzdChjYm5hbWUpWzBdCisgICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX2luZm8oKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3RrLnNwbGl0bGlzdChjYSlbMF0gPT0gY2JuYW1lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl90ay5kZWxldGVjb21tYW5kKGNibmFtZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5yZW1vdmUoY2JuYW1lKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRyYWNlX3ZpbmZvKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYWxsIHRyYWNlIGNhbGxiYWNrIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoaXMgZGVwcmVjYXRlZCBtZXRob2Qgd3JhcHMgYSBkZXByZWNhdGVkIFRjbCBtZXRob2QgdGhhdCB3aWxsCisgICAgICAgIGxpa2VseSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuICBVc2UgdHJhY2VfaW5mbygpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCiAgICAgICAgIHJldHVybiBbc2VsZi5fdGsuc3BsaXRsaXN0KHgpIGZvciB4IGluIHNlbGYuX3RrLnNwbGl0bGlzdCgKICAgICAgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZpbmZvIiwgc2VsZi5fbmFtZSkpXQorCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICIiIkNvbXBhcmlzb24gZm9yIGVxdWFsaXR5ICg9PSkuCiAKQEAgLTQyNiw2ICs1NjksOSBAQAogCiAgICAgQmFzZSBjbGFzcyB3aGljaCBkZWZpbmVzIG1ldGhvZHMgY29tbW9uIGZvciBpbnRlcmlvciB3aWRnZXRzLiIiIgogCisgICAgIyB1c2VkIGZvciBnZW5lcmF0aW5nIGNoaWxkIHdpZGdldCBuYW1lcworICAgIF9sYXN0X2NoaWxkX2lkcyA9IE5vbmUKKwogICAgICMgWFhYIGZvbnQgY29tbWFuZD8KICAgICBfdGNsQ29tbWFuZHMgPSBOb25lCiAgICAgZGVmIGRlc3Ryb3koc2VsZik6CkBAIC00NzMsMTIgKzYxOSw2IEBACiAgICAgICAgIGRpc2FibGVkRm9yZWdyb3VuZCwgaW5zZXJ0QmFja2dyb3VuZCwgdHJvdWdoQ29sb3IuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgoJ3RrX3NldFBhbGV0dGUnLCkKICAgICAgICAgICAgICAgKyBfZmxhdHRlbihhcmdzKSArIF9mbGF0dGVuKGxpc3Qoa3cuaXRlbXMoKSkpKQotICAgIGRlZiB0a19tZW51QmFyKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiRG8gbm90IHVzZS4gTmVlZGVkIGluIFRrIDMuNiBhbmQgZWFybGllci4iIiIKLSAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX21lbnVCYXIoKSBkb2VzIG5vdGhpbmcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjYnLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIGRlZiB3YWl0X3ZhcmlhYmxlKHNlbGYsIG5hbWU9J1BZX1ZBUicpOgogICAgICAgICAiIiJXYWl0IHVudGlsIHRoZSB2YXJpYWJsZSBpcyBtb2RpZmllZC4KIApAQCAtODUwLDggKzk5MCw3IEBACiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2hlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19pZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGlkZW50aWZpZXIgSUQgZm9yIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCi0gICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2lkJywgc2VsZi5fdykpCisgICAgICAgIHJldHVybiBpbnQoc2VsZi50ay5jYWxsKCd3aW5mbycsICdpZCcsIHNlbGYuX3cpLCAwKQogICAgIGRlZiB3aW5mb19pbnRlcnBzKHNlbGYsIGRpc3BsYXlvZj0wKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIGFsbCBUY2wgaW50ZXJwcmV0ZXJzIGZvciB0aGlzIGRpc3BsYXkuIiIiCiAgICAgICAgIGFyZ3MgPSAoJ3dpbmZvJywgJ2ludGVycHMnKSArIHNlbGYuX2Rpc3BsYXlvZihkaXNwbGF5b2YpCkBAIC05NzEsMTggKzExMTAsMTYgQEAKICAgICBkZWYgd2luZm9fdmlzdWFsaWQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgWCBpZGVudGlmaWVyIGZvciB0aGUgdmlzdWFsIGZvciB0aGlzIHdpZGdldC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndmlzdWFsaWQnLCBzZWxmLl93KQotICAgIGRlZiB3aW5mb192aXN1YWxzYXZhaWxhYmxlKHNlbGYsIGluY2x1ZGVpZHM9MCk6CisgICAgZGVmIHdpbmZvX3Zpc3VhbHNhdmFpbGFibGUoc2VsZiwgaW5jbHVkZWlkcz1GYWxzZSk6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHZpc3VhbHMgYXZhaWxhYmxlIGZvciB0aGUgc2NyZWVuCiAgICAgICAgIG9mIHRoaXMgd2lkZ2V0LgogCiAgICAgICAgIEVhY2ggaXRlbSBpbiB0aGUgbGlzdCBjb25zaXN0cyBvZiBhIHZpc3VhbCBuYW1lIChzZWUgd2luZm9fdmlzdWFsKSwgYQotICAgICAgICBkZXB0aCBhbmQgaWYgSU5DTFVERUlEUz0xIGlzIGdpdmVuIGFsc28gdGhlIFggaWRlbnRpZmllci4iIiIKLSAgICAgICAgZGF0YSA9IHNlbGYudGsuc3BsaXQoCi0gICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbHNhdmFpbGFibGUnLCBzZWxmLl93LAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWlkcyBhbmQgJ2luY2x1ZGVpZHMnIG9yIE5vbmUpKQotICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICBkYXRhID0gW3NlbGYudGsuc3BsaXQoZGF0YSldCi0gICAgICAgIHJldHVybiBbc2VsZi5fX3dpbmZvX3BhcnNlaXRlbSh4KSBmb3IgeCBpbiAgZGF0YV0KKyAgICAgICAgZGVwdGggYW5kIGlmIGluY2x1ZGVpZHMgaXMgdHJ1ZSBpcyBnaXZlbiBhbHNvIHRoZSBYIGlkZW50aWZpZXIuIiIiCisgICAgICAgIGRhdGEgPSBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbHNhdmFpbGFibGUnLCBzZWxmLl93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlaWRzJyBpZiBpbmNsdWRlaWRzIGVsc2UgTm9uZSkKKyAgICAgICAgZGF0YSA9IFtzZWxmLnRrLnNwbGl0bGlzdCh4KSBmb3IgeCBpbiBzZWxmLnRrLnNwbGl0bGlzdChkYXRhKV0KKyAgICAgICAgcmV0dXJuIFtzZWxmLl9fd2luZm9fcGFyc2VpdGVtKHgpIGZvciB4IGluIGRhdGFdCiAgICAgZGVmIF9fd2luZm9fcGFyc2VpdGVtKHNlbGYsIHQpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKICAgICAgICAgcmV0dXJuIHRbOjFdICsgdHVwbGUobWFwKHNlbGYuX193aW5mb19nZXRpbnQsIHRbMTpdKSkKQEAgLTEyODMsNyArMTQyMCwxMCBAQAogICAgICAgICBleGNlcHQgVGNsRXJyb3I6IHBhc3MKICAgICAgICAgZS5rZXlzeW0gPSBLCiAgICAgICAgIGUua2V5c3ltX251bSA9IGdldGludF9ldmVudChOKQotICAgICAgICBlLnR5cGUgPSBUCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGUudHlwZSA9IEV2ZW50VHlwZShUKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGUudHlwZSA9IFQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZS53aWRnZXQgPSBzZWxmLl9uYW1ldG93aWRnZXQoVykKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtMTg5Myw5ICsyMDMzLDYgQEAKICAgICAgICAgaWYgdGNsX3ZlcnNpb24gIT0gX3RraW50ZXIuVENMX1ZFUlNJT046CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInRjbC5oIHZlcnNpb24gKCVzKSBkb2Vzbid0IG1hdGNoIGxpYnRjbC5hIHZlcnNpb24gKCVzKSIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKF90a2ludGVyLlRDTF9WRVJTSU9OLCB0Y2xfdmVyc2lvbikpCi0gICAgICAgIGlmIFRrVmVyc2lvbiA8IDQuMDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGsgNC4wIG9yIGhpZ2hlciBpcyByZXF1aXJlZDsgZm91bmQgVGsgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBzdHIoVGtWZXJzaW9uKSkKICAgICAgICAgIyBDcmVhdGUgYW5kIHJlZ2lzdGVyIHRoZSB0a2Vycm9yIGFuZCBleGl0IGNvbW1hbmRzCiAgICAgICAgICMgV2UgbmVlZCB0byBpbmxpbmUgcGFydHMgb2YgX3JlZ2lzdGVyIGhlcmUsIF8gcmVnaXN0ZXIKICAgICAgICAgIyB3b3VsZCByZWdpc3RlciBkaWZmZXJlbnRseS1uYW1lZCBjb21tYW5kcy4KQEAgLTIxMTgsNyArMjI1NSwxNSBAQAogICAgICAgICAgICAgbmFtZSA9IGNuZlsnbmFtZSddCiAgICAgICAgICAgICBkZWwgY25mWyduYW1lJ10KICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gcmVwcihpZChzZWxmKSkKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXy5sb3dlcigpCisgICAgICAgICAgICBpZiBtYXN0ZXIuX2xhc3RfY2hpbGRfaWRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbWFzdGVyLl9sYXN0X2NoaWxkX2lkcyA9IHt9CisgICAgICAgICAgICBjb3VudCA9IG1hc3Rlci5fbGFzdF9jaGlsZF9pZHMuZ2V0KG5hbWUsIDApICsgMQorICAgICAgICAgICAgbWFzdGVyLl9sYXN0X2NoaWxkX2lkc1tuYW1lXSA9IGNvdW50CisgICAgICAgICAgICBpZiBjb3VudCA9PSAxOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnYCVzJyAlIChuYW1lLCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdgJXMlZCcgJSAobmFtZSwgY291bnQpCiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgIGlmIG1hc3Rlci5fdz09Jy4nOgogICAgICAgICAgICAgc2VsZi5fdyA9ICcuJyArIG5hbWUKQEAgLTI3MTQsMTIgKzI4NTksNiBAQAogICAgIGRlZiB0a19wb3B1cChzZWxmLCB4LCB5LCBlbnRyeT0iIik6CiAgICAgICAgICIiIlBvc3QgdGhlIG1lbnUgYXQgcG9zaXRpb24gWCxZIHdpdGggZW50cnkgRU5UUlkuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgndGtfcG9wdXAnLCBzZWxmLl93LCB4LCB5LCBlbnRyeSkKLSAgICBkZWYgdGtfYmluZEZvclRyYXZlcnNhbChzZWxmKToKLSAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX2JpbmRGb3JUcmF2ZXJzYWwoKSBkb2VzIG5vdGhpbmcgYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAnd2lsbCBiZSByZW1vdmVkIGluIDMuNicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgZGVmIGFjdGl2YXRlKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiQWN0aXZhdGUgZW50cnkgYXQgSU5ERVguIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnYWN0aXZhdGUnLCBpbmRleCkKQEAgLTMzNDIsOSArMzQ4MSw2IEBACiAgICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICAgSW1hZ2UuX2xhc3RfaWQgKz0gMQogICAgICAgICAgICAgbmFtZSA9ICJweWltYWdlJXIiICUgKEltYWdlLl9sYXN0X2lkLCkgIyB0ayBpdHNlbGYgd291bGQgdXNlIGltYWdlPHg+Ci0gICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgaXMgbmVlZGVkIGZvciBzeXN0ZW1zIHdoZXJlIGlkKHgpCi0gICAgICAgICAgICAjIGNhbiByZXR1cm4gYSBuZWdhdGl2ZSBudW1iZXIsIHN1Y2ggYXMgTGludXgvbTY4azoKLSAgICAgICAgICAgIGlmIG5hbWVbMF0gPT0gJy0nOiBuYW1lID0gJ18nICsgbmFtZVsxOl0KICAgICAgICAgaWYga3cgYW5kIGNuZjogY25mID0gX2NuZm1lcmdlKChjbmYsIGt3KSkKICAgICAgICAgZWxpZiBrdzogY25mID0ga3cKICAgICAgICAgb3B0aW9ucyA9ICgpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkgYi9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkKaW5kZXggZDI2ODhkYi4uMWU3NWNhZSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvY29tbW9uZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2NvbW1vbmRpYWxvZy5weQpAQCAtMTUsMTEgKzE1LDYgQEAKICAgICBjb21tYW5kICA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgKipvcHRpb25zKToKLQotICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhpcyBiZSBwbGFjZWQgb24gdGhlIG1vZHVsZSBsZXZlbCBpbnN0ZWFkPwotICAgICAgICBpZiBUa1ZlcnNpb24gPCA0LjI6Ci0gICAgICAgICAgICByYWlzZSBUY2xFcnJvcigidGhpcyBtb2R1bGUgcmVxdWlyZXMgVGsgNC4yIG9yIG5ld2VyIikKLQogICAgICAgICBzZWxmLm1hc3RlciAgPSBtYXN0ZXIKICAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBpZiBub3QgbWFzdGVyIGFuZCBvcHRpb25zLmdldCgncGFyZW50Jyk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9kaWFsb2cucHkgYi9MaWIvdGtpbnRlci9kaWFsb2cucHkKaW5kZXggYmUwODVhYi4uZjYxYzVmNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2RpYWxvZy5weQpAQCAtMywxMCArMyw3IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGZyb20gdGtpbnRlciBpbXBvcnQgX2NuZm1lcmdlCiAKLWlmIFRrVmVyc2lvbiA8PSAzLjY6Ci0gICAgRElBTE9HX0lDT04gPSAnd2FybmluZycKLWVsc2U6Ci0gICAgRElBTE9HX0lDT04gPSAncXVlc3RoZWFkJworRElBTE9HX0lDT04gPSAncXVlc3RoZWFkJwogCiAKIGNsYXNzIERpYWxvZyhXaWRnZXQpOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5IGIvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CmluZGV4IGRiZTVlODguLjMzZGM1NGEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKQEAgLTcsOCArNyw2IEBACiAiIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CmluZGV4IDg1ZWUyYzcuLjlkYzFlMzcgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKQEAgLTEyLDYgKzEyLDE0IEBACiAgICAgICAgIGYgPSB0a2ludGVyLkZyYW1lKHQsIG5hbWU9J2NoaWxkJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnPHRraW50ZXIuRnJhbWUgb2JqZWN0IC50b3AuY2hpbGQ+JykKIAorICAgIGRlZiB0ZXN0X2dlbmVyYXRlZF9uYW1lcyhzZWxmKToKKyAgICAgICAgdCA9IHRraW50ZXIuVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBmID0gdGtpbnRlci5GcmFtZSh0KQorICAgICAgICBmMiA9IHRraW50ZXIuRnJhbWUodCkKKyAgICAgICAgYiA9IHRraW50ZXIuQnV0dG9uKGYyKQorICAgICAgICBmb3IgbmFtZSBpbiBzdHIoYikuc3BsaXQoJy4nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmFtZS5pc2lkZW50aWZpZXIoKSwgbXNnPXJlcHIobmFtZSkpCisKICAgICBkZWYgdGVzdF90a19zZXRQYWxldHRlKHNlbGYpOgogICAgICAgICByb290ID0gc2VsZi5yb290CiAgICAgICAgIHJvb3QudGtfc2V0UGFsZXR0ZSgnYmxhY2snKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQppbmRleCAxZjc0NDUzLi40NDg1ODE3IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQpAQCAtODcsNyArODcsOCBAQAogICAgICAgICB2LnNldCgidmFsdWUiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodi5zaWRlX2VmZmVjdCkKIAotICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3RyYWNlX29sZChzZWxmKToKKyAgICAgICAgIyBPbGQgaW50ZXJmYWNlCiAgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QpCiAgICAgICAgIHZuYW1lID0gc3RyKHYpCiAgICAgICAgIHRyYWNlID0gW10KQEAgLTEzNiw2ICsxMzcsNTUgQEAKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAndScpXSkKIAorICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290KQorICAgICAgICB2bmFtZSA9IHN0cih2KQorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiByZWFkX3RyYWNlcigqYXJncyk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoKCdyZWFkJywpICsgYXJncykKKyAgICAgICAgZGVmIHdyaXRlX3RyYWNlcigqYXJncyk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoKCd3cml0ZScsKSArIGFyZ3MpCisgICAgICAgIHRyMSA9IHYudHJhY2VfYWRkKCdyZWFkJywgcmVhZF90cmFjZXIpCisgICAgICAgIHRyMiA9IHYudHJhY2VfYWRkKFsnd3JpdGUnLCAndW5zZXQnXSwgd3JpdGVfdHJhY2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh2LnRyYWNlX2luZm8oKSksIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCdyZWFkJywpLCB0cjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoJ3dyaXRlJywgJ3Vuc2V0JyksIHRyMildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbXSkKKworICAgICAgICB2LnNldCgnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAnd3JpdGUnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3JlYWQnLCB2bmFtZSwgJycsICdyZWFkJyldKQorCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgaW5mbyA9IHNvcnRlZCh2LnRyYWNlX2luZm8oKSkKKyAgICAgICAgdi50cmFjZV9yZW1vdmUoJ3dyaXRlJywgdHIxKSAgIyBXcm9uZyBtb2RlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgaW5mbykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvcik6CisgICAgICAgICAgICB2LnRyYWNlX3JlbW92ZSgncmVhZCcsICdzcGFtJykgICMgV3JvbmcgY29tbWFuZCBuYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgaW5mbykKKyAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCdyZWFkJywgdm5hbWUsICcnLCAncmVhZCcpXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIHYudHJhY2VfcmVtb3ZlKCdyZWFkJywgdHIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudHJhY2VfaW5mbygpLCBbKCgnd3JpdGUnLCAndW5zZXQnKSwgdHIyKV0pCisgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgW10pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWwgd3JpdGVfdHJhY2VyCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICB2LnNldCgnZWdncycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAnd3JpdGUnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWwgdgorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd1bnNldCcpXSkKKwogCiBjbGFzcyBUZXN0U3RyaW5nVmFyKFRlc3RCYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CmluZGV4IGM5MjRkNTUuLjgxYjUyZWEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKQEAgLTkxLDkgKzkxLDEwIEBACiAgICAgICAgIHdpZGdldCA9IHNlbGYuY3JlYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXRbJ3VzZSddLCAnJykKICAgICAgICAgcGFyZW50ID0gc2VsZi5jcmVhdGUoY29udGFpbmVyPVRydWUpCi0gICAgICAgIHdpZCA9IHBhcmVudC53aW5mb19pZCgpCi0gICAgICAgIHdpZGdldDIgPSBzZWxmLmNyZWF0ZSh1c2U9d2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCh3aWRnZXQyWyd1c2UnXSksIHdpZCkKKyAgICAgICAgd2lkID0gaGV4KHBhcmVudC53aW5mb19pZCgpKQorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh3aWQ9d2lkKToKKyAgICAgICAgICAgIHdpZGdldDIgPSBzZWxmLmNyZWF0ZSh1c2U9d2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXQyWyd1c2UnXSwgd2lkKQogCiAKIEBhZGRfc3RhbmRhcmRfb3B0aW9ucyhTdGFuZGFyZE9wdGlvbnNUZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZnVuY3Rpb25zLnB5CmluZGV4IGM2OGE2NTAuLmExYjdjZGYgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2Z1bmN0aW9ucy5weQpAQCAtMSw2ICsxLDUgQEAKICMgLSotIGVuY29kaW5nOiB1dGYtOCAtKi0KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgdHRrCiAKIGNsYXNzIE1vY2tUa0FwcDoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKaW5kZXggOGJkMjJkMC4uMjY3NjZhOCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKQEAgLTE0ODcsNiArMTQ4Nyw3IEBACiAKIAogICAgIGRlZiB0ZXN0X3NlbGVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR2LnNlbGVjdGlvbiwgJ3NwYW0nKQogICAgICAgICAjIGl0ZW0gJ25vbmUnIGRvZXNuJ3QgZXhpc3QKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGtpbnRlci5UY2xFcnJvciwgc2VsZi50di5zZWxlY3Rpb25fc2V0LCAnbm9uZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IsIHNlbGYudHYuc2VsZWN0aW9uX2FkZCwgJ25vbmUnKQpAQCAtMTUwMCwyNSArMTUwMSwzMSBAQAogICAgICAgICBjMyA9IHNlbGYudHYuaW5zZXJ0KGl0ZW0xLCAnZW5kJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChjMSwgaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChjMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzIsKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZChjMSwgaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBjMiwgaXRlbTIpKQogICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoaXRlbTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGl0ZW0xLCBjMSwgYzIsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoaXRlbTEsIGMxLCBjMiwgaXRlbTIpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZSgoaXRlbTEsIGMzKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKGl0ZW0xLCBjMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGMyLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZShjMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKGMxLCBjMykpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZShjMSwgYzMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZShpdGVtMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsKSkKIAogICAgICAgICBzZWxmLnR2Lmluc2VydCgnJywgJ2VuZCcsIGlkPSd3aXRoIHNwYWNlcycpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgnd2l0aCBzcGFjZXMnKQpAQCAtMTUzNiw2ICsxNTQzLDQwIEBACiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChiJ2J5dGVzXHhlMlx4ODJceGFjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoJ2J5dGVzXHhlMlx4ODJceGFjJywpKQogCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKCkpCisKKyAgICAgICAgIyBPbGQgaW50ZXJmYWNlCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKChjMSwgaXRlbTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKChpdGVtMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKGMxLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCisKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNyk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgJ0RlcHJlY2F0ZWQgQVBJIG9mIFRyZWV2aWV3LnNlbGVjdGlvbigpIHNob3VsZCBiZSByZW1vdmVkJykKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbignc2V0JywgKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ2FkZCcsIChjMSwgaXRlbTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGl0ZW0yKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbigncmVtb3ZlJywgKGl0ZW0xLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ3RvZ2dsZScsIChjMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywgaXRlbTIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGYudHYuc2VsZWN0aW9uKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZWN0aW9uLCAoYzMsIGl0ZW0yKSkKIAogICAgIGRlZiB0ZXN0X3NldChzZWxmKToKICAgICAgICAgc2VsZi50dlsnY29sdW1ucyddID0gWydBJywgJ0InXQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGl4LnB5IGIvTGliL3RraW50ZXIvdGl4LnB5CmluZGV4IDdmYjRiYzUuLmYzZWI5MmUgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3RpeC5weQorKysgYi9MaWIvdGtpbnRlci90aXgucHkKQEAgLTMxLDEwICszMSw2IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGZyb20gdGtpbnRlciBpbXBvcnQgX2NuZm1lcmdlCiAKLSMgV0FSTklORyAtIFRrVmVyc2lvbiBpcyBhIGxpbWl0ZWQgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcgotaWYgVGtWZXJzaW9uIDwgMy45OTk6Ci0gICAgcmFpc2UgSW1wb3J0RXJyb3IoIlRoaXMgdmVyc2lvbiBvZiBUaXgucHkgcmVxdWlyZXMgVGsgNC4wIG9yIGhpZ2hlciIpCi0KIGltcG9ydCBfdGtpbnRlciAjIElmIHRoaXMgZmFpbHMgeW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUawogCiAjIFNvbWUgbW9yZSBjb25zdGFudHMgKGZvciBjb25zaXN0ZW5jeSB3aXRoIFRraW50ZXIpCkBAIC00NzYsMTYgKzQ3MiwxNyBAQAogICAgICIiIkRpc3BsYXlTdHlsZSAtIGhhbmRsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc2hhcmVkIGJ5CiAgICAgKG11bHRpcGxlKSBEaXNwbGF5IEl0ZW1zIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbXR5cGUsIGNuZj17fSwgKiprdyk6Ci0gICAgICAgIGlmICdyZWZ3aW5kb3cnIGluIGt3OgotICAgICAgICAgICAgbWFzdGVyID0ga3dbJ3JlZndpbmRvdyddCi0gICAgICAgIGVsaWYgJ3JlZndpbmRvdycgaW4gY25mOgotICAgICAgICAgICAgbWFzdGVyID0gY25mWydyZWZ3aW5kb3cnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWFzdGVyID0gdGtpbnRlci5fZGVmYXVsdF9yb290Ci0gICAgICAgICAgICBpZiBub3QgbWFzdGVyOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVG9vIGVhcmx5IHRvIGNyZWF0ZSBkaXNwbGF5IHN0eWxlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyByb290IHdpbmRvdyIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZW10eXBlLCBjbmY9e30sICosIG1hc3Rlcj1Ob25lLCAqKmt3KToKKyAgICAgICAgaWYgbm90IG1hc3RlcjoKKyAgICAgICAgICAgIGlmICdyZWZ3aW5kb3cnIGluIGt3OgorICAgICAgICAgICAgICAgIG1hc3RlciA9IGt3WydyZWZ3aW5kb3cnXQorICAgICAgICAgICAgZWxpZiAncmVmd2luZG93JyBpbiBjbmY6CisgICAgICAgICAgICAgICAgbWFzdGVyID0gY25mWydyZWZ3aW5kb3cnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYXN0ZXIgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKKyAgICAgICAgICAgICAgICBpZiBub3QgbWFzdGVyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRvbyBlYXJseSB0byBjcmVhdGUgZGlzcGxheSBzdHlsZTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHJvb3Qgd2luZG93IikKICAgICAgICAgc2VsZi50ayA9IG1hc3Rlci50awogICAgICAgICBzZWxmLnN0eWxlbmFtZSA9IHNlbGYudGsuY2FsbCgndGl4RGlzcGxheVN0eWxlJywgaXRlbXR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNlbGYuX29wdGlvbnMoY25mLGt3KSApCkBAIC0xMTE2LDcgKzExMTMsNyBAQAogCiAgICAgZGVmIHBhZ2VzKHNlbGYpOgogICAgICAgICAjIENhbid0IGNhbGwgc3Vid2lkZ2V0c19hbGwgZGlyZWN0bHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IC5uYmZyYW1lCi0gICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCisgICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQogICAgICAgICByZXQgPSBbXQogICAgICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdWJ3aWRnZXQoeCkpCkBAIC0xMTYyLDcgKzExNTksNyBAQAogCiAgICAgZGVmIHBhZ2VzKHNlbGYpOgogICAgICAgICAjIENhbid0IGNhbGwgc3Vid2lkZ2V0c19hbGwgZGlyZWN0bHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IC5uYmZyYW1lCi0gICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCisgICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQogICAgICAgICByZXQgPSBbXQogICAgICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdWJ3aWRnZXQoeCkpCkBAIC0xNTg1LDggKzE1ODIsNyBAQAogICAgICAgICAnJydSZXR1cm5zIGEgbGlzdCBvZiBpdGVtcyB3aG9zZSBzdGF0dXMgbWF0Y2hlcyBzdGF0dXMuIElmIHN0YXR1cyBpcwogICAgICBub3Qgc3BlY2lmaWVkLCB0aGUgbGlzdCBvZiBpdGVtcyBpbiB0aGUgIm9uIiBzdGF0dXMgd2lsbCBiZSByZXR1cm5lZC4KICAgICAgTW9kZSBjYW4gYmUgb24sIG9mZiwgZGVmYXVsdCcnJwotICAgICAgICBjID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2dldHNlbGVjdGlvbicsIG1vZGUpKQotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3QoYykKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnZ2V0c2VsZWN0aW9uJywgbW9kZSkpCiAKICAgICBkZWYgZ2V0c3RhdHVzKHNlbGYsIGVudHJ5cGF0aCk6CiAgICAgICAgICcnJ1JldHVybnMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGVudHJ5UGF0aC4nJycKQEAgLTE5MDcsNyArMTkwMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICBvciBhIHJlYWwgbnVtYmVyIGZvbGxvd2luZyBieSB0aGUgd29yZCBjaGFycwogICAgICAgICAgICAgICAgICAgICAgKGUuZy4gMy40Y2hhcnMpIHRoYXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnLCAnY29sdW1uJywgaW5kZXgsCisgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnLCAnY29sdW1uJywgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzZWxmLl9vcHRpb25zKHt9LCBrdykpKQogCiAgICAgZGVmIHNpemVfcm93KHNlbGYsIGluZGV4LCAqKmt3KToKQEAgLTE5MzIsNyArMTkyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICBvciBhIHJlYWwgbnVtYmVyIGZvbGxvd2luZyBieSB0aGUgd29yZCBjaGFycwogICAgICAgICAgICAgICAgICAgICAgKGUuZy4gMy40Y2hhcnMpIHRoYXQgc2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSByb3cgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXQoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgICAgICAgICBzZWxmLCAnc2l6ZScsICdyb3cnLCBpbmRleCwgKnNlbGYuX29wdGlvbnMoe30sIGt3KSkpCiAKICAgICBkZWYgdW5zZXQoc2VsZiwgeCwgeSk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90dGsucHkgYi9MaWIvdGtpbnRlci90dGsucHkKaW5kZXggZjRhNmQ4Yy4uYzQ3NGU2MCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdHRrLnB5CisrKyBiL0xpYi90a2ludGVyL3R0ay5weQpAQCAtMjgsNiArMjgsOCBAQAogaW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZsYXR0ZW4sIF9qb2luLCBfc3RyaW5naWZ5LCBfc3BsaXRkaWN0CiAKK19zZW50aW5lbCA9IG9iamVjdCgpCisKICMgVmVyaWZ5IGlmIFRrIGlzIG5ldyBlbm91Z2ggdG8gbm90IG5lZWQgdGhlIFRpbGUgcGFja2FnZQogX1JFUVVJUkVfVElMRSA9IFRydWUgaWYgdGtpbnRlci5Ua1ZlcnNpb24gPCA4LjUgZWxzZSBGYWxzZQogCkBAIC0zODEsNyArMzgzLDkgQEAKICAgICAgICAgYSBzZXF1ZW5jZSBpZGVudGlmeWluZyB0aGUgdmFsdWUgZm9yIHRoYXQgb3B0aW9uLiIiIgogICAgICAgICBpZiBxdWVyeV9vcHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBrd1txdWVyeV9vcHRdID0gTm9uZQotICAgICAgICByZXR1cm4gX3ZhbF9vcl9kaWN0KHNlbGYudGssIGt3LCBzZWxmLl9uYW1lLCAiY29uZmlndXJlIiwgc3R5bGUpCisgICAgICAgIHJlc3VsdCA9IF92YWxfb3JfZGljdChzZWxmLnRrLCBrdywgc2VsZi5fbmFtZSwgImNvbmZpZ3VyZSIsIHN0eWxlKQorICAgICAgICBpZiByZXN1bHQgb3IgcXVlcnlfb3B0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKICAgICBkZWYgbWFwKHNlbGYsIHN0eWxlLCBxdWVyeV9vcHQ9Tm9uZSwgKiprdyk6CkBAIC00NjYsMTIgKzQ3MCwxNCBAQAogCiAgICAgZGVmIGVsZW1lbnRfbmFtZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGxpc3Qgb2YgZWxlbWVudHMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCB0aGVtZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJuYW1lcyIpKQorICAgICAgICByZXR1cm4gdHVwbGUobi5sc3RyaXAoJy0nKSBmb3IgbiBpbiBzZWxmLnRrLnNwbGl0bGlzdCgKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJuYW1lcyIpKSkKIAogCiAgICAgZGVmIGVsZW1lbnRfb3B0aW9ucyhzZWxmLCBlbGVtZW50bmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiBlbGVtZW50bmFtZSdzIG9wdGlvbnMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAib3B0aW9ucyIsIGVsZW1lbnRuYW1lKSkKKyAgICAgICAgcmV0dXJuIHR1cGxlKG8ubHN0cmlwKCctJykgZm9yIG8gaW4gc2VsZi50ay5zcGxpdGxpc3QoCisgICAgICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAib3B0aW9ucyIsIGVsZW1lbnRuYW1lKSkpCiAKIAogICAgIGRlZiB0aGVtZV9jcmVhdGUoc2VsZiwgdGhlbWVuYW1lLCBwYXJlbnQ9Tm9uZSwgc2V0dGluZ3M9Tm9uZSk6CkBAIC0xMzkwLDMxICsxMzk2LDUzIEBACiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VlIiwgaXRlbSkKIAogCi0gICAgZGVmIHNlbGVjdGlvbihzZWxmLCBzZWxvcD1Ob25lLCBpdGVtcz1Ob25lKToKLSAgICAgICAgIiIiSWYgc2Vsb3AgaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyBzZWxlY3RlZCBpdGVtcy4iIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtcywgKHN0ciwgYnl0ZXMpKToKLSAgICAgICAgICAgIGl0ZW1zID0gKGl0ZW1zLCkKKyAgICBkZWYgc2VsZWN0aW9uKHNlbGYsIHNlbG9wPV9zZW50aW5lbCwgaXRlbXM9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHR1cGxlIG9mIHNlbGVjdGVkIGl0ZW1zLiIiIgorICAgICAgICBpZiBzZWxvcCBpcyBfc2VudGluZWw6CisgICAgICAgICAgICBzZWxvcCA9IE5vbmUKKyAgICAgICAgZWxpZiBzZWxvcCBpcyBOb25lOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICJUaGUgc2Vsb3A9Tm9uZSBhcmd1bWVudCBvZiBzZWxlY3Rpb24oKSBpcyBkZXByZWNhdGVkICIKKyAgICAgICAgICAgICAgICAiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy43IiwKKyAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCisgICAgICAgIGVsaWYgc2Vsb3AgaW4gKCdzZXQnLCAnYWRkJywgJ3JlbW92ZScsICd0b2dnbGUnKToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAiVGhlIHNlbG9wIGFyZ3VtZW50IG9mIHNlbGVjdGlvbigpIGlzIGRlcHJlY2F0ZWQgIgorICAgICAgICAgICAgICAgICJhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjcsICIKKyAgICAgICAgICAgICAgICAidXNlIHNlbGVjdGlvbl8lcygpIGluc3RlYWQiICUgKHNlbG9wLCksCisgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdVbnN1cHBvcnRlZCBvcGVyYXRpb24nKQogICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICJzZWxlY3Rpb24iLCBzZWxvcCwgaXRlbXMpKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3NldChzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIml0ZW1zIGJlY29tZXMgdGhlIG5ldyBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJzZXQiLCBpdGVtcykKKyAgICBkZWYgX3NlbGVjdGlvbihzZWxmLCBzZWxvcCwgaXRlbXMpOgorICAgICAgICBpZiBsZW4oaXRlbXMpID09IDEgYW5kIGlzaW5zdGFuY2UoaXRlbXNbMF0sICh0dXBsZSwgbGlzdCkpOgorICAgICAgICAgICAgaXRlbXMgPSBpdGVtc1swXQorCisgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VsZWN0aW9uIiwgc2Vsb3AsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX2FkZChzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIkFkZCBpdGVtcyB0byB0aGUgc2VsZWN0aW9uLiIiIgotICAgICAgICBzZWxmLnNlbGVjdGlvbigiYWRkIiwgaXRlbXMpCisgICAgZGVmIHNlbGVjdGlvbl9zZXQoc2VsZiwgKml0ZW1zKToKKyAgICAgICAgIiIiVGhlIHNwZWNpZmllZCBpdGVtcyBiZWNvbWVzIHRoZSBuZXcgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInNldCIsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3JlbW92ZShzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIlJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJyZW1vdmUiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX2FkZChzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJBZGQgYWxsIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXMgdG8gdGhlIHNlbGVjdGlvbi4iIiIKKyAgICAgICAgc2VsZi5fc2VsZWN0aW9uKCJhZGQiLCBpdGVtcykKIAogCi0gICAgZGVmIHNlbGVjdGlvbl90b2dnbGUoc2VsZiwgaXRlbXMpOgotICAgICAgICAiIiJUb2dnbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBlYWNoIGl0ZW0gaW4gaXRlbXMuIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJ0b2dnbGUiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX3JlbW92ZShzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJSZW1vdmUgYWxsIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXMgZnJvbSB0aGUgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInJlbW92ZSIsIGl0ZW1zKQorCisKKyAgICBkZWYgc2VsZWN0aW9uX3RvZ2dsZShzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJUb2dnbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBlYWNoIHNwZWNpZmllZCBpdGVtLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInRvZ2dsZSIsIGl0ZW1zKQogCiAKICAgICBkZWYgc2V0KHNlbGYsIGl0ZW0sIGNvbHVtbj1Ob25lLCB2YWx1ZT1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi90b2tlbml6ZS5weSBiL0xpYi90b2tlbml6ZS5weQppbmRleCBiMWQwYzgzLi44MjVhYTkwIDEwMDY0NAotLS0gYS9MaWIvdG9rZW5pemUucHkKKysrIGIvTGliL3Rva2VuaXplLnB5CkBAIC0yOSw2ICsyOSw3IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIGZyb20gaW8gaW1wb3J0IFRleHRJT1dyYXBwZXIKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgoraW1wb3J0IGl0ZXJ0b29scyBhcyBfaXRlcnRvb2xzCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGZyb20gdG9rZW4gaW1wb3J0ICoKQEAgLTExOSwxOSArMTIwLDQxIEBACiBJZ25vcmUgPSBXaGl0ZXNwYWNlICsgYW55KHInXFxccj9cbicgKyBXaGl0ZXNwYWNlKSArIG1heWJlKENvbW1lbnQpCiBOYW1lID0gcidcdysnCiAKLUhleG51bWJlciA9IHInMFt4WF1bMC05YS1mQS1GXSsnCi1CaW5udW1iZXIgPSByJzBbYkJdWzAxXSsnCi1PY3RudW1iZXIgPSByJzBbb09dWzAtN10rJwotRGVjbnVtYmVyID0gcicoPzowK3xbMS05XVswLTldKiknCitIZXhudW1iZXIgPSByJzBbeFhdKD86Xz9bMC05YS1mQS1GXSkrJworQmlubnVtYmVyID0gcicwW2JCXSg/Ol8/WzAxXSkrJworT2N0bnVtYmVyID0gcicwW29PXSg/Ol8/WzAtN10pKycKK0RlY251bWJlciA9IHInKD86MCg/Ol8/MCkqfFsxLTldKD86Xz9bMC05XSkqKScKIEludG51bWJlciA9IGdyb3VwKEhleG51bWJlciwgQmlubnVtYmVyLCBPY3RudW1iZXIsIERlY251bWJlcikKLUV4cG9uZW50ID0gcidbZUVdWy0rXT9bMC05XSsnCi1Qb2ludGZsb2F0ID0gZ3JvdXAocidbMC05XStcLlswLTldKicsIHInXC5bMC05XSsnKSArIG1heWJlKEV4cG9uZW50KQotRXhwZmxvYXQgPSByJ1swLTldKycgKyBFeHBvbmVudAorRXhwb25lbnQgPSByJ1tlRV1bLStdP1swLTldKD86Xz9bMC05XSkqJworUG9pbnRmbG9hdCA9IGdyb3VwKHInWzAtOV0oPzpfP1swLTldKSpcLig/OlswLTldKD86Xz9bMC05XSkqKT8nLAorICAgICAgICAgICAgICAgICAgIHInXC5bMC05XSg/Ol8/WzAtOV0pKicpICsgbWF5YmUoRXhwb25lbnQpCitFeHBmbG9hdCA9IHInWzAtOV0oPzpfP1swLTldKSonICsgRXhwb25lbnQKIEZsb2F0bnVtYmVyID0gZ3JvdXAoUG9pbnRmbG9hdCwgRXhwZmxvYXQpCi1JbWFnbnVtYmVyID0gZ3JvdXAocidbMC05XStbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQorSW1hZ251bWJlciA9IGdyb3VwKHInWzAtOV0oPzpfP1swLTldKSpbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQogTnVtYmVyID0gZ3JvdXAoSW1hZ251bWJlciwgRmxvYXRudW1iZXIsIEludG51bWJlcikKIAotU3RyaW5nUHJlZml4ID0gcicoPzpbYkJdW3JSXT98W3JSXVtiQl0/fFt1VV0pPycKKyMgUmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcsIHBsdXMgYWxsIG9mIHRoZSB2YWxpZCBzdHJpbmcgcHJlZml4ZXMuCitkZWYgX2FsbF9zdHJpbmdfcHJlZml4ZXMoKToKKyAgICAjIFRoZSB2YWxpZCBzdHJpbmcgcHJlZml4ZXMuIE9ubHkgY29udGFpbiB0aGUgbG93ZXIgY2FzZSB2ZXJzaW9ucywKKyAgICAjICBhbmQgZG9uJ3QgY29udGFpbiBhbnkgcGVybXVhdGlvbnMgKGluY2x1ZGUgJ2ZyJywgYnV0IG5vdAorICAgICMgICdyZicpLiBUaGUgdmFyaW91cyBwZXJtdXRhdGlvbnMgd2lsbCBiZSBnZW5lcmF0ZWQuCisgICAgX3ZhbGlkX3N0cmluZ19wcmVmaXhlcyA9IFsnYicsICdyJywgJ3UnLCAnZicsICdicicsICdmciddCisgICAgIyBpZiB3ZSBhZGQgYmluYXJ5IGYtc3RyaW5ncywgYWRkOiBbJ2ZiJywgJ2ZiciddCisgICAgcmVzdWx0ID0gc2V0KFsnJ10pCisgICAgZm9yIHByZWZpeCBpbiBfdmFsaWRfc3RyaW5nX3ByZWZpeGVzOgorICAgICAgICBmb3IgdCBpbiBfaXRlcnRvb2xzLnBlcm11dGF0aW9ucyhwcmVmaXgpOgorICAgICAgICAgICAgIyBjcmVhdGUgYSBsaXN0IHdpdGggdXBwZXIgYW5kIGxvd2VyIHZlcnNpb25zIG9mIGVhY2gKKyAgICAgICAgICAgICMgIGNoYXJhY3RlcgorICAgICAgICAgICAgZm9yIHUgaW4gX2l0ZXJ0b29scy5wcm9kdWN0KCpbKGMsIGMudXBwZXIoKSkgZm9yIGMgaW4gdF0pOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoJycuam9pbih1KSkKKyAgICByZXR1cm4gcmVzdWx0CisKK2RlZiBfY29tcGlsZShleHByKToKKyAgICByZXR1cm4gcmUuY29tcGlsZShleHByLCByZS5VTklDT0RFKQorCisjIE5vdGUgdGhhdCBzaW5jZSBfYWxsX3N0cmluZ19wcmVmaXhlcyBpbmNsdWRlcyB0aGUgZW1wdHkgc3RyaW5nLAorIyAgU3RyaW5nUHJlZml4IGNhbiBiZSB0aGUgZW1wdHkgc3RyaW5nIChtYWtpbmcgaXQgb3B0aW9uYWwpLgorU3RyaW5nUHJlZml4ID0gZ3JvdXAoKl9hbGxfc3RyaW5nX3ByZWZpeGVzKCkpCiAKICMgVGFpbCBlbmQgb2YgJyBzdHJpbmcuCiBTaW5nbGUgPSByIlteJ1xcXSooPzpcXC5bXidcXF0qKSonIgpAQCAtMTY5LDUwICsxOTIsMjUgQEAKIFBzZXVkb0V4dHJhcyA9IGdyb3VwKHInXFxccj9cbnxcWicsIENvbW1lbnQsIFRyaXBsZSkKIFBzZXVkb1Rva2VuID0gV2hpdGVzcGFjZSArIGdyb3VwKFBzZXVkb0V4dHJhcywgTnVtYmVyLCBGdW5ueSwgQ29udFN0ciwgTmFtZSkKIAotZGVmIF9jb21waWxlKGV4cHIpOgotICAgIHJldHVybiByZS5jb21waWxlKGV4cHIsIHJlLlVOSUNPREUpCisjIEZvciBhIGdpdmVuIHN0cmluZyBwcmVmaXggcGx1cyBxdW90ZXMsIGVuZHBhdHMgbWFwcyBpdCB0byBhIHJlZ2V4CisjICB0byBtYXRjaCB0aGUgcmVtYWluZGVyIG9mIHRoYXQgc3RyaW5nLiBfcHJlZml4IGNhbiBiZSBlbXB0eSwgZm9yCisjICBhIG5vcm1hbCBzaW5nbGUgb3IgdHJpcGxlIHF1b3RlZCBzdHJpbmcgKHdpdGggbm8gcHJlZml4KS4KK2VuZHBhdHMgPSB7fQorZm9yIF9wcmVmaXggaW4gX2FsbF9zdHJpbmdfcHJlZml4ZXMoKToKKyAgICBlbmRwYXRzW19wcmVmaXggKyAiJyJdID0gU2luZ2xlCisgICAgZW5kcGF0c1tfcHJlZml4ICsgJyInXSA9IERvdWJsZQorICAgIGVuZHBhdHNbX3ByZWZpeCArICInJyciXSA9IFNpbmdsZTMKKyAgICBlbmRwYXRzW19wcmVmaXggKyAnIiIiJ10gPSBEb3VibGUzCiAKLWVuZHBhdHMgPSB7IiciOiBTaW5nbGUsICciJzogRG91YmxlLAotICAgICAgICAgICAiJycnIjogU2luZ2xlMywgJyIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJyJycnIjogU2luZ2xlMywgJ3IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYicnJyI6IFNpbmdsZTMsICdiIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlInJyciOiBTaW5nbGUzLCAnUiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJCJycnIjogU2luZ2xlMywgJ0IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYnInJyciOiBTaW5nbGUzLCAnYnIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYlInJyciOiBTaW5nbGUzLCAnYlIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiQnInJyciOiBTaW5nbGUzLCAnQnIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiQlInJyciOiBTaW5nbGUzLCAnQlIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAicmInJyciOiBTaW5nbGUzLCAncmIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUmInJyciOiBTaW5nbGUzLCAnUmIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAickInJyciOiBTaW5nbGUzLCAnckIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUkInJyciOiBTaW5nbGUzLCAnUkIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAidScnJyI6IFNpbmdsZTMsICd1IiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlUnJyciOiBTaW5nbGUzLCAnVSIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICdyJzogTm9uZSwgJ1InOiBOb25lLCAnYic6IE5vbmUsICdCJzogTm9uZSwKLSAgICAgICAgICAgJ3UnOiBOb25lLCAnVSc6IE5vbmV9Ci0KLXRyaXBsZV9xdW90ZWQgPSB7fQotZm9yIHQgaW4gKCInJyciLCAnIiIiJywKLSAgICAgICAgICAicicnJyIsICdyIiIiJywgIlInJyciLCAnUiIiIicsCi0gICAgICAgICAgImInJyciLCAnYiIiIicsICJCJycnIiwgJ0IiIiInLAotICAgICAgICAgICJicicnJyIsICdiciIiIicsICJCcicnJyIsICdCciIiIicsCi0gICAgICAgICAgImJSJycnIiwgJ2JSIiIiJywgIkJSJycnIiwgJ0JSIiIiJywKLSAgICAgICAgICAicmInJyciLCAncmIiIiInLCAickInJyciLCAnckIiIiInLAotICAgICAgICAgICJSYicnJyIsICdSYiIiIicsICJSQicnJyIsICdSQiIiIicsCi0gICAgICAgICAgInUnJyciLCAndSIiIicsICJVJycnIiwgJ1UiIiInLAotICAgICAgICAgICk6Ci0gICAgdHJpcGxlX3F1b3RlZFt0XSA9IHQKLXNpbmdsZV9xdW90ZWQgPSB7fQotZm9yIHQgaW4gKCInIiwgJyInLAotICAgICAgICAgICJyJyIsICdyIicsICJSJyIsICdSIicsCi0gICAgICAgICAgImInIiwgJ2IiJywgIkInIiwgJ0IiJywKLSAgICAgICAgICAiYnInIiwgJ2JyIicsICJCciciLCAnQnIiJywKLSAgICAgICAgICAiYlInIiwgJ2JSIicsICJCUiciLCAnQlIiJyAsCi0gICAgICAgICAgInJiJyIsICdyYiInLCAickInIiwgJ3JCIicsCi0gICAgICAgICAgIlJiJyIsICdSYiInLCAiUkInIiwgJ1JCIicgLAotICAgICAgICAgICJ1JyIsICd1IicsICJVJyIsICdVIicsCi0gICAgICAgICAgKToKLSAgICBzaW5nbGVfcXVvdGVkW3RdID0gdAorIyBBIHNldCBvZiBhbGwgb2YgdGhlIHNpbmdsZSBhbmQgdHJpcGxlIHF1b3RlZCBzdHJpbmcgcHJlZml4ZXMsCisjICBpbmNsdWRpbmcgdGhlIG9wZW5pbmcgcXVvdGVzLgorc2luZ2xlX3F1b3RlZCA9IHNldCgpCit0cmlwbGVfcXVvdGVkID0gc2V0KCkKK2ZvciB0IGluIF9hbGxfc3RyaW5nX3ByZWZpeGVzKCk6CisgICAgZm9yIHUgaW4gKHQgKyAnIicsIHQgKyAiJyIpOgorICAgICAgICBzaW5nbGVfcXVvdGVkLmFkZCh1KQorICAgIGZvciB1IGluICh0ICsgJyIiIicsIHQgKyAiJycnIik6CisgICAgICAgIHRyaXBsZV9xdW90ZWQuYWRkKHUpCiAKIHRhYnNpemUgPSA4CiAKQEAgLTYyNiw2ICs2MjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAogICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKENPTU1FTlQsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorCiAgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiB0cmlwbGVfcXVvdGVkOgogICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1t0b2tlbl0pCiAgICAgICAgICAgICAgICAgICAgIGVuZG1hdGNoID0gZW5kcHJvZy5tYXRjaChsaW5lLCBwb3MpCkBAIC02MzgsMTkgKzYzNywzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udHN0ciA9IGxpbmVbc3RhcnQ6XQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGxpbmUgPSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiBzaW5nbGVfcXVvdGVkIG9yIFwKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjJdIGluIHNpbmdsZV9xdW90ZWQgb3IgXAotICAgICAgICAgICAgICAgICAgICB0b2tlbls6M10gaW4gc2luZ2xlX3F1b3RlZDoKKworICAgICAgICAgICAgICAgICMgQ2hlY2sgdXAgdG8gdGhlIGZpcnN0IDMgY2hhcnMgb2YgdGhlIHRva2VuIHRvIHNlZSBpZgorICAgICAgICAgICAgICAgICMgIHRoZXkncmUgaW4gdGhlIHNpbmdsZV9xdW90ZWQgc2V0LiBJZiBzbywgdGhleSBzdGFydAorICAgICAgICAgICAgICAgICMgIGEgc3RyaW5nLgorICAgICAgICAgICAgICAgICMgV2UncmUgdXNpbmcgdGhlIGZpcnN0IDMsIGJlY2F1c2Ugd2UncmUgbG9va2luZyBmb3IKKyAgICAgICAgICAgICAgICAjICAicmInIiAoZm9yIGV4YW1wbGUpIGF0IHRoZSBzdGFydCBvZiB0aGUgdG9rZW4uIElmCisgICAgICAgICAgICAgICAgIyAgd2Ugc3dpdGNoIHRvIGxvbmdlciBwcmVmaXhlcywgdGhpcyBuZWVkcyB0byBiZQorICAgICAgICAgICAgICAgICMgIGFkanVzdGVkLgorICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IGluaXRpYWwgPT0gdG9rZW5bOjFdLgorICAgICAgICAgICAgICAgICMgQWxzbyBub3RlIHRoYXQgc2luZ2xlIHF1b3RlIGNoZWNraW5nIG11c3QgY29tZSBhZnRlcgorICAgICAgICAgICAgICAgICMgIHRyaXBsZSBxdW90ZSBjaGVja2luZyAoYWJvdmUpLgorICAgICAgICAgICAgICAgIGVsaWYgKGluaXRpYWwgaW4gc2luZ2xlX3F1b3RlZCBvcgorICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzoyXSBpbiBzaW5nbGVfcXVvdGVkIG9yCisgICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjNdIGluIHNpbmdsZV9xdW90ZWQpOgogICAgICAgICAgICAgICAgICAgICBpZiB0b2tlblstMV0gPT0gJ1xuJzogICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnN0YXJ0ID0gKGxudW0sIHN0YXJ0KQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHNbaW5pdGlhbF0gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzW3Rva2VuWzFdXSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHNbdG9rZW5bMl1dKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBBZ2FpbiwgdXNpbmcgdGhlIGZpcnN0IDMgY2hhcnMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjICB0b2tlbi4gVGhpcyBpcyBsb29raW5nIGZvciB0aGUgbWF0Y2hpbmcgZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAjICByZWdleCBmb3IgdGhlIGNvcnJlY3QgdHlwZSBvZiBxdW90ZQorICAgICAgICAgICAgICAgICAgICAgICAgIyAgY2hhcmFjdGVyLiBTbyBpdCdzIHJlYWxseSBsb29raW5nIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgIyAgZW5kcGF0c1siJyJdIG9yIGVuZHBhdHNbJyInXSwgYnkgdHJ5aW5nIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAjICBza2lwIHN0cmluZyBwcmVmaXggY2hhcmFjdGVycywgaWYgYW55LgorICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHMuZ2V0KGluaXRpYWwpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0cy5nZXQodG9rZW5bMV0pIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0cy5nZXQodG9rZW5bMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udHN0ciwgbmVlZGNvbnQgPSBsaW5lW3N0YXJ0Ol0sIDEKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRsaW5lID0gbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhTVFJJTkcsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorCiAgICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsLmlzaWRlbnRpZmllcigpOiAgICAgICAgICAgICAgICMgb3JkaW5hcnkgbmFtZQogICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiBpbiAoJ2FzeW5jJywgJ2F3YWl0Jyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhc3luY19kZWY6CmRpZmYgLS1naXQgYS9MaWIvdHJhY2UucHkgYi9MaWIvdHJhY2UucHkKaW5kZXggZjEwODI2Ni4uYWUxNTQ2MSAxMDA3NTUKLS0tIGEvTGliL3RyYWNlLnB5CisrKyBiL0xpYi90cmFjZS5weQpAQCAtNDgsNiArNDgsNyBAQAogICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIGNvdmVyZGlyPSIvdG1wIikKICIiIgogX19hbGxfXyA9IFsnVHJhY2UnLCAnQ292ZXJhZ2VSZXN1bHRzJ10KK2ltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKQEAgLTU4LDcgKzU5LDYgQEAKIGltcG9ydCBnYwogaW1wb3J0IGRpcwogaW1wb3J0IHBpY2tsZQotZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybiBhcyBfd2FybgogZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKIAogdHJ5OgpAQCAtNzcsNTEgKzc3LDYgQEAKICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCiAgICAgICAgIHRocmVhZGluZy5zZXR0cmFjZShOb25lKQogCi1kZWYgX3VzYWdlKG91dGZpbGUpOgotICAgIG91dGZpbGUud3JpdGUoIiIiVXNhZ2U6ICVzIFtPUFRJT05TXSA8ZmlsZT4gW0FSR1NdCi0KLU1ldGEtb3B0aW9uczoKLS0taGVscCAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaGVscCB0aGVuIGV4aXQuCi0tLXZlcnNpb24gICAgICAgICAgICAgT3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24gdGhlbiBleGl0LgotCi1PdGhlcndpc2UsIGV4YWN0bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgb3B0aW9ucyBtdXN0IGJlIGdpdmVuOgotLXQsIC0tdHJhY2UgICAgICAgICAgIFByaW50IGVhY2ggbGluZSB0byBzeXMuc3Rkb3V0IGJlZm9yZSBpdCBpcyBleGVjdXRlZC4KLS1jLCAtLWNvdW50ICAgICAgICAgICBDb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggbGluZSBpcyBleGVjdXRlZAotICAgICAgICAgICAgICAgICAgICAgIGFuZCB3cml0ZSB0aGUgY291bnRzIHRvIDxtb2R1bGU+LmNvdmVyIGZvciBlYWNoCi0gICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIGV4ZWN1dGVkLCBpbiB0aGUgbW9kdWxlJ3MgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgIFNlZSBhbHNvIGAtLWNvdmVyZGlyJywgYC0tZmlsZScsIGAtLW5vLXJlcG9ydCcgYmVsb3cuCi0tbCwgLS1saXN0ZnVuY3MgICAgICAgS2VlcCB0cmFjayBvZiB3aGljaCBmdW5jdGlvbnMgYXJlIGV4ZWN1dGVkIGF0IGxlYXN0Ci0gICAgICAgICAgICAgICAgICAgICAgb25jZSBhbmQgd3JpdGUgdGhlIHJlc3VsdHMgdG8gc3lzLnN0ZG91dCBhZnRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtIGV4aXRzLgotLVQsIC0tdHJhY2tjYWxscyAgICAgIEtlZXAgdHJhY2sgb2YgY2FsbGVyL2NhbGxlZCBwYWlycyBhbmQgd3JpdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLgotLXIsIC0tcmVwb3J0ICAgICAgICAgIEdlbmVyYXRlIGEgcmVwb3J0IGZyb20gYSBjb3VudHMgZmlsZTsgZG8gbm90IGV4ZWN1dGUKLSAgICAgICAgICAgICAgICAgICAgICBhbnkgY29kZS4gIGAtLWZpbGUnIG11c3Qgc3BlY2lmeSB0aGUgcmVzdWx0cyBmaWxlIHRvCi0gICAgICAgICAgICAgICAgICAgICAgcmVhZCwgd2hpY2ggbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBpbiBhIHByZXZpb3VzIHJ1bgotICAgICAgICAgICAgICAgICAgICAgIHdpdGggYC0tY291bnQgLS1maWxlPUZJTEUnLgotCi1Nb2RpZmllcnM6Ci0tZiwgLS1maWxlPTxmaWxlPiAgICAgRmlsZSB0byBhY2N1bXVsYXRlIGNvdW50cyBvdmVyIHNldmVyYWwgcnVucy4KLS1SLCAtLW5vLXJlcG9ydCAgICAgICBEbyBub3QgZ2VuZXJhdGUgdGhlIGNvdmVyYWdlIHJlcG9ydCBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICBVc2VmdWwgaWYgeW91IHdhbnQgdG8gYWNjdW11bGF0ZSBvdmVyIHNldmVyYWwgcnVucy4KLS1DLCAtLWNvdmVyZGlyPTxkaXI+ICBEaXJlY3Rvcnkgd2hlcmUgdGhlIHJlcG9ydCBmaWxlcy4gIFRoZSBjb3ZlcmFnZQotICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydCBmb3IgPHBhY2thZ2U+Ljxtb2R1bGU+IGlzIHdyaXR0ZW4gdG8gZmlsZQotICAgICAgICAgICAgICAgICAgICAgIDxkaXI+LzxwYWNrYWdlPi88bW9kdWxlPi5jb3Zlci4KLS1tLCAtLW1pc3NpbmcgICAgICAgICBBbm5vdGF0ZSBleGVjdXRhYmxlIGxpbmVzIHRoYXQgd2VyZSBub3QgZXhlY3V0ZWQKLSAgICAgICAgICAgICAgICAgICAgICB3aXRoICc+Pj4+Pj4gJy4KLS1zLCAtLXN1bW1hcnkgICAgICAgICBXcml0ZSBhIGJyaWVmIHN1bW1hcnkgb24gc3Rkb3V0IGZvciBlYWNoIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgKENhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLWNvdW50IG9yIC0tcmVwb3J0LikKLS1nLCAtLXRpbWluZyAgICAgICAgICBQcmVmaXggZWFjaCBsaW5lIHdpdGggdGhlIHRpbWUgc2luY2UgdGhlIHByb2dyYW0gc3RhcnRlZC4KLSAgICAgICAgICAgICAgICAgICAgICBPbmx5IHVzZWQgd2hpbGUgdHJhY2luZy4KLQotRmlsdGVycywgbWF5IGJlIHJlcGVhdGVkIG11bHRpcGxlIHRpbWVzOgotLS1pZ25vcmUtbW9kdWxlPTxtb2Q+IElnbm9yZSB0aGUgZ2l2ZW4gbW9kdWxlKHMpIGFuZCBpdHMgc3VibW9kdWxlcwotICAgICAgICAgICAgICAgICAgICAgIChpZiBpdCBpcyBhIHBhY2thZ2UpLiAgQWNjZXB0cyBjb21tYSBzZXBhcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBsaXN0IG9mIG1vZHVsZSBuYW1lcwotLS1pZ25vcmUtZGlyPTxkaXI+ICAgIElnbm9yZSBmaWxlcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IChtdWx0aXBsZQotICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGNhbiBiZSBqb2luZWQgYnkgb3MucGF0aHNlcCkuCi0iIiIgJSBzeXMuYXJndlswXSkKLQogUFJBR01BX05PQ09WRVIgPSAiI3ByYWdtYSBOTyBDT1ZFUiIKIAogIyBTaW1wbGUgcnggdG8gZmluZCBsaW5lcyB3aXRoIG5vIGNvZGUuCkBAIC0yNjUsNyArMjIwLDEzIEBACiAKICAgICBkZWYgd3JpdGVfcmVzdWx0cyhzZWxmLCBzaG93X21pc3Npbmc9VHJ1ZSwgc3VtbWFyeT1GYWxzZSwgY292ZXJkaXI9Tm9uZSk6CiAgICAgICAgICIiIgotICAgICAgICBAcGFyYW0gY292ZXJkaXIKKyAgICAgICAgV3JpdGUgdGhlIGNvdmVyYWdlIHJlc3VsdHMuCisKKyAgICAgICAgOnBhcmFtIHNob3dfbWlzc2luZzogU2hvdyBsaW5lcyB0aGF0IGhhZCBubyBoaXRzLgorICAgICAgICA6cGFyYW0gc3VtbWFyeTogSW5jbHVkZSBjb3ZlcmFnZSBzdW1tYXJ5IHBlciBtb2R1bGUuCisgICAgICAgIDpwYXJhbSBjb3ZlcmRpcjogSWYgTm9uZSwgdGhlIHJlc3VsdHMgb2YgZWFjaCBtb2R1bGUgYXJlIHBsYWNlZCBpbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIG90aGVyd2lzZSBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5jYWxsZWRmdW5jczoKICAgICAgICAgICAgIHByaW50KCkKQEAgLTY0NywyMTAgKzYwOCwxMzUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWRmdW5jcz1zZWxmLl9jYWxsZWRmdW5jcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXJzPXNlbGYuX2NhbGxlcnMpCiAKLWRlZiBfZXJyX2V4aXQobXNnKToKLSAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogJXNcbiIgJSAoc3lzLmFyZ3ZbMF0sIG1zZykpCi0gICAgc3lzLmV4aXQoMSkKK2RlZiBtYWluKCk6CiAKLWRlZiBtYWluKGFyZ3Y9Tm9uZSk6Ci0gICAgaW1wb3J0IGdldG9wdAorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSd0cmFjZSAyLjAnKQogCi0gICAgaWYgYXJndiBpcyBOb25lOgotICAgICAgICBhcmd2ID0gc3lzLmFyZ3YKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdNYWluIG9wdGlvbnMnLAorICAgICAgICAgICAgJ09uZSBvZiB0aGVzZSAob3IgLS1yZXBvcnQpIG11c3QgYmUgZ2l2ZW4nKQorCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jb3VudCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdDb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggbGluZSBpcyBleGVjdXRlZCBhbmQgd3JpdGUgJworICAgICAgICAgICAgICAgICAndGhlIGNvdW50cyB0byA8bW9kdWxlPi5jb3ZlciBmb3IgZWFjaCBtb2R1bGUgZXhlY3V0ZWQsIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBtb2R1bGVcJ3MgZGlyZWN0b3J5LiBTZWUgYWxzbyAtLWNvdmVyZGlyLCAtLWZpbGUsICcKKyAgICAgICAgICAgICAgICAgJy0tbm8tcmVwb3J0IGJlbG93LicpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10cmFjZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdQcmludCBlYWNoIGxpbmUgdG8gc3lzLnN0ZG91dCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1sJywgJy0tbGlzdGZ1bmNzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0tlZXAgdHJhY2sgb2Ygd2hpY2ggZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBhdCBsZWFzdCBvbmNlICcKKyAgICAgICAgICAgICAgICAgJ2FuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLiAnCisgICAgICAgICAgICAgICAgICdDYW5ub3QgYmUgc3BlY2lmaWVkIGFsb25nc2lkZSAtLXRyYWNlIG9yIC0tY291bnQuJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctVCcsICctLXRyYWNrY2FsbHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nS2VlcCB0cmFjayBvZiBjYWxsZXIvY2FsbGVkIHBhaXJzIGFuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byAnCisgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLicpCisKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdNb2RpZmllcnMnKQorCisgICAgX2dycCA9IGdycC5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBfZ3JwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yZXBvcnQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nR2VuZXJhdGUgYSByZXBvcnQgZnJvbSBhIGNvdW50cyBmaWxlOyBkb2VzIG5vdCBleGVjdXRlIGFueSAnCisgICAgICAgICAgICAgICAgICdjb2RlLiAtLWZpbGUgbXVzdCBzcGVjaWZ5IHRoZSByZXN1bHRzIGZpbGUgdG8gcmVhZCwgd2hpY2ggJworICAgICAgICAgICAgICAgICAnbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBpbiBhIHByZXZpb3VzIHJ1biB3aXRoIC0tY291bnQgJworICAgICAgICAgICAgICAgICAnLS1maWxlPUZJTEUnKQorICAgIF9ncnAuYWRkX2FyZ3VtZW50KCctUicsICctLW5vLXJlcG9ydCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdEbyBub3QgZ2VuZXJhdGUgdGhlIGNvdmVyYWdlIHJlcG9ydCBmaWxlcy4gJworICAgICAgICAgICAgICAgICAnVXNlZnVsIGlmIHlvdSB3YW50IHRvIGFjY3VtdWxhdGUgb3ZlciBzZXZlcmFsIHJ1bnMuJykKKworICAgIGdycC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZScsCisgICAgICAgICAgICBoZWxwPSdGaWxlIHRvIGFjY3VtdWxhdGUgY291bnRzIG92ZXIgc2V2ZXJhbCBydW5zJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctQycsICctLWNvdmVyZGlyJywKKyAgICAgICAgICAgIGhlbHA9J0RpcmVjdG9yeSB3aGVyZSB0aGUgcmVwb3J0IGZpbGVzIGdvLiBUaGUgY292ZXJhZ2UgcmVwb3J0ICcKKyAgICAgICAgICAgICAgICAgJ2ZvciA8cGFja2FnZT4uPG1vZHVsZT4gd2lsbCBiZSB3cml0dGVuIHRvIGZpbGUgJworICAgICAgICAgICAgICAgICAnPGRpcj4vPHBhY2thZ2U+Lzxtb2R1bGU+LmNvdmVyJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctbScsICctLW1pc3NpbmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nQW5ub3RhdGUgZXhlY3V0YWJsZSBsaW5lcyB0aGF0IHdlcmUgbm90IGV4ZWN1dGVkIHdpdGggJworICAgICAgICAgICAgICAgICAnIj4+Pj4+PiAiJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctcycsICctLXN1bW1hcnknLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nV3JpdGUgYSBicmllZiBzdW1tYXJ5IGZvciBlYWNoIGZpbGUgdG8gc3lzLnN0ZG91dC4gJworICAgICAgICAgICAgICAgICAnQ2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tY291bnQgb3IgLS1yZXBvcnQnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1nJywgJy0tdGltaW5nJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J1ByZWZpeCBlYWNoIGxpbmUgd2l0aCB0aGUgdGltZSBzaW5jZSB0aGUgcHJvZ3JhbSBzdGFydGVkLiAnCisgICAgICAgICAgICAgICAgICdPbmx5IHVzZWQgd2hpbGUgdHJhY2luZycpCisKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdGaWx0ZXJzJywKKyAgICAgICAgICAgICdDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1tb2R1bGUnLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICBoZWxwPSdJZ25vcmUgdGhlIGdpdmVuIG1vZHVsZShzKSBhbmQgaXRzIHN1Ym1vZHVsZXMnCisgICAgICAgICAgICAgICAgICcoaWYgaXQgaXMgYSBwYWNrYWdlKS4gQWNjZXB0cyBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUgbmFtZXMuJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1kaXInLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICBoZWxwPSdJZ25vcmUgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSAnCisgICAgICAgICAgICAgICAgICcobXVsdGlwbGUgZGlyZWN0b3JpZXMgY2FuIGJlIGpvaW5lZCBieSBvcy5wYXRoc2VwKS4nKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZmlsZW5hbWUnLCBuYXJncz0nPycsCisgICAgICAgICAgICBoZWxwPSdmaWxlIHRvIHJ1biBhcyBtYWluIHByb2dyYW0nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2FyZ3VtZW50cycsIG5hcmdzPWFyZ3BhcnNlLlJFTUFJTkRFUiwKKyAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyB0byB0aGUgcHJvZ3JhbScpCisKKyAgICBvcHRzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgb3B0cy5pZ25vcmVfZGlyOgorICAgICAgICByZWxfcGF0aCA9ICdsaWInLCAncHl0aG9uezAubWFqb3J9LnswLm1pbm9yfScuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pCisgICAgICAgIF9wcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAqcmVsX3BhdGgpCisgICAgICAgIF9leGVjX3ByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgKnJlbF9wYXRoKQorCisgICAgZGVmIHBhcnNlX2lnbm9yZV9kaXIocyk6CisgICAgICAgIHMgPSBvcy5wYXRoLmV4cGFuZHVzZXIob3MucGF0aC5leHBhbmR2YXJzKHMpKQorICAgICAgICBzID0gcy5yZXBsYWNlKCckcHJlZml4JywgX3ByZWZpeCkucmVwbGFjZSgnJGV4ZWNfcHJlZml4JywgX2V4ZWNfcHJlZml4KQorICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChzKQorCisgICAgb3B0cy5pZ25vcmVfbW9kdWxlID0gW21vZC5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIG9wdHMuaWdub3JlX21vZHVsZSBmb3IgbW9kIGluIGkuc3BsaXQoJywnKV0KKyAgICBvcHRzLmlnbm9yZV9kaXIgPSBbcGFyc2VfaWdub3JlX2RpcihzKQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBvcHRzLmlnbm9yZV9kaXIgZm9yIHMgaW4gaS5zcGxpdChvcy5wYXRoc2VwKV0KKworICAgIGlmIG9wdHMucmVwb3J0OgorICAgICAgICBpZiBub3Qgb3B0cy5maWxlOgorICAgICAgICAgICAgcGFyc2VyLmVycm9yKCctci8tLXJlcG9ydCByZXF1aXJlcyAtZi8tLWZpbGUnKQorICAgICAgICByZXN1bHRzID0gQ292ZXJhZ2VSZXN1bHRzKGluZmlsZT1vcHRzLmZpbGUsIG91dGZpbGU9b3B0cy5maWxlKQorICAgICAgICByZXR1cm4gcmVzdWx0cy53cml0ZV9yZXN1bHRzKG9wdHMubWlzc2luZywgb3B0cy5zdW1tYXJ5LCBvcHRzLmNvdmVyZGlyKQorCisgICAgaWYgbm90IGFueShbb3B0cy50cmFjZSwgb3B0cy5jb3VudCwgb3B0cy5saXN0ZnVuY3MsIG9wdHMudHJhY2tjYWxsc10pOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ211c3Qgc3BlY2lmeSBvbmUgb2YgLS10cmFjZSwgLS1jb3VudCwgLS1yZXBvcnQsICcKKyAgICAgICAgICAgICAgICAgICAgICctLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzJykKKworICAgIGlmIG9wdHMubGlzdGZ1bmNzIGFuZCAob3B0cy5jb3VudCBvciBvcHRzLnRyYWNlKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdjYW5ub3Qgc3BlY2lmeSBib3RoIC0tbGlzdGZ1bmNzIGFuZCAoLS10cmFjZSBvciAtLWNvdW50KScpCisKKyAgICBpZiBvcHRzLnN1bW1hcnkgYW5kIG5vdCBvcHRzLmNvdW50OgorICAgICAgICBwYXJzZXIuZXJyb3IoJy0tc3VtbWFyeSBjYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcpCisKKyAgICBpZiBvcHRzLmZpbGVuYW1lIGlzIE5vbmU6CisgICAgICAgIHBhcnNlci5lcnJvcignZmlsZW5hbWUgaXMgbWlzc2luZzogcmVxdWlyZWQgd2l0aCB0aGUgbWFpbiBvcHRpb25zJykKKworICAgIHN5cy5hcmd2ID0gb3B0cy5maWxlbmFtZSwgKm9wdHMuYXJndW1lbnRzCisgICAgc3lzLnBhdGhbMF0gPSBvcy5wYXRoLmRpcm5hbWUob3B0cy5maWxlbmFtZSkKKworICAgIHQgPSBUcmFjZShvcHRzLmNvdW50LCBvcHRzLnRyYWNlLCBjb3VudGZ1bmNzPW9wdHMubGlzdGZ1bmNzLAorICAgICAgICAgICAgICBjb3VudGNhbGxlcnM9b3B0cy50cmFja2NhbGxzLCBpZ25vcmVtb2RzPW9wdHMuaWdub3JlX21vZHVsZSwKKyAgICAgICAgICAgICAgaWdub3JlZGlycz1vcHRzLmlnbm9yZV9kaXIsIGluZmlsZT1vcHRzLmZpbGUsCisgICAgICAgICAgICAgIG91dGZpbGU9b3B0cy5maWxlLCB0aW1pbmc9b3B0cy50aW1pbmcpCiAgICAgdHJ5OgotICAgICAgICBvcHRzLCBwcm9nX2FyZ3YgPSBnZXRvcHQuZ2V0b3B0KGFyZ3ZbMTpdLCAidGNyUmY6ZDptc0M6bFRnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImhlbHAiLCAidmVyc2lvbiIsICJ0cmFjZSIsICJjb3VudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBvcnQiLCAibm8tcmVwb3J0IiwgInN1bW1hcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZT0iLCAibWlzc2luZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZ25vcmUtbW9kdWxlPSIsICJpZ25vcmUtZGlyPSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3ZlcmRpcj0iLCAibGlzdGZ1bmNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNrY2FsbHMiLCAidGltaW5nIl0pCisgICAgICAgIHdpdGggb3BlbihvcHRzLmZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGZwLnJlYWQoKSwgb3B0cy5maWxlbmFtZSwgJ2V4ZWMnKQorICAgICAgICAjIHRyeSB0byBlbXVsYXRlIF9fbWFpbl9fIG5hbWVzcGFjZSBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGdsb2JzID0geworICAgICAgICAgICAgJ19fZmlsZV9fJzogb3B0cy5maWxlbmFtZSwKKyAgICAgICAgICAgICdfX25hbWVfXyc6ICdfX21haW5fXycsCisgICAgICAgICAgICAnX19wYWNrYWdlX18nOiBOb25lLAorICAgICAgICAgICAgJ19fY2FjaGVkX18nOiBOb25lLAorICAgICAgICB9CisgICAgICAgIHQucnVuY3R4KGNvZGUsIGdsb2JzLCBnbG9icykKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgIHN5cy5leGl0KCJDYW5ub3QgcnVuIGZpbGUgJXIgYmVjYXVzZTogJXMiICUgKHN5cy5hcmd2WzBdLCBlcnIpKQorICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgorICAgICAgICBwYXNzCiAKLSAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVzXG4iICUgKHN5cy5hcmd2WzBdLCBtc2cpKQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJUcnkgYCVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAlIHN5cy5hcmd2WzBdKQotICAgICAgICBzeXMuZXhpdCgxKQorICAgIHJlc3VsdHMgPSB0LnJlc3VsdHMoKQogCi0gICAgdHJhY2UgPSAwCi0gICAgY291bnQgPSAwCi0gICAgcmVwb3J0ID0gMAotICAgIG5vX3JlcG9ydCA9IDAKLSAgICBjb3VudHNfZmlsZSA9IE5vbmUKLSAgICBtaXNzaW5nID0gMAotICAgIGlnbm9yZV9tb2R1bGVzID0gW10KLSAgICBpZ25vcmVfZGlycyA9IFtdCi0gICAgY292ZXJkaXIgPSBOb25lCi0gICAgc3VtbWFyeSA9IDAKLSAgICBsaXN0ZnVuY3MgPSBGYWxzZQotICAgIGNvdW50Y2FsbGVycyA9IEZhbHNlCi0gICAgdGltaW5nID0gRmFsc2UKLQotICAgIGZvciBvcHQsIHZhbCBpbiBvcHRzOgotICAgICAgICBpZiBvcHQgPT0gIi0taGVscCI6Ci0gICAgICAgICAgICBfdXNhZ2Uoc3lzLnN0ZG91dCkKLSAgICAgICAgICAgIHN5cy5leGl0KDApCi0KLSAgICAgICAgaWYgb3B0ID09ICItLXZlcnNpb24iOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgidHJhY2UgMi4wXG4iKQotICAgICAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgICAgICBpZiBvcHQgPT0gIi1UIiBvciBvcHQgPT0gIi0tdHJhY2tjYWxscyI6Ci0gICAgICAgICAgICBjb3VudGNhbGxlcnMgPSBUcnVlCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLWwiIG9yIG9wdCA9PSAiLS1saXN0ZnVuY3MiOgotICAgICAgICAgICAgbGlzdGZ1bmNzID0gVHJ1ZQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1nIiBvciBvcHQgPT0gIi0tdGltaW5nIjoKLSAgICAgICAgICAgIHRpbWluZyA9IFRydWUKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItdCIgb3Igb3B0ID09ICItLXRyYWNlIjoKLSAgICAgICAgICAgIHRyYWNlID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1jIiBvciBvcHQgPT0gIi0tY291bnQiOgotICAgICAgICAgICAgY291bnQgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLXIiIG9yIG9wdCA9PSAiLS1yZXBvcnQiOgotICAgICAgICAgICAgcmVwb3J0ID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1SIiBvciBvcHQgPT0gIi0tbm8tcmVwb3J0IjoKLSAgICAgICAgICAgIG5vX3JlcG9ydCA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItZiIgb3Igb3B0ID09ICItLWZpbGUiOgotICAgICAgICAgICAgY291bnRzX2ZpbGUgPSB2YWwKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItbSIgb3Igb3B0ID09ICItLW1pc3NpbmciOgotICAgICAgICAgICAgbWlzc2luZyA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItQyIgb3Igb3B0ID09ICItLWNvdmVyZGlyIjoKLSAgICAgICAgICAgIGNvdmVyZGlyID0gdmFsCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLXMiIG9yIG9wdCA9PSAiLS1zdW1tYXJ5IjoKLSAgICAgICAgICAgIHN1bW1hcnkgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLS1pZ25vcmUtbW9kdWxlIjoKLSAgICAgICAgICAgIGZvciBtb2QgaW4gdmFsLnNwbGl0KCIsIik6Ci0gICAgICAgICAgICAgICAgaWdub3JlX21vZHVsZXMuYXBwZW5kKG1vZC5zdHJpcCgpKQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi0taWdub3JlLWRpciI6Ci0gICAgICAgICAgICBmb3IgcyBpbiB2YWwuc3BsaXQob3MucGF0aHNlcCk6Ci0gICAgICAgICAgICAgICAgcyA9IG9zLnBhdGguZXhwYW5kdmFycyhzKQotICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKLQotICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRwcmVmaXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgImxpYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRleGVjX3ByZWZpeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICJsaWIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQotICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBhc3NlcnQgMCwgIlNob3VsZCBuZXZlciBnZXQgaGVyZSIKLQotICAgIGlmIGxpc3RmdW5jcyBhbmQgKGNvdW50IG9yIHRyYWNlKToKLSAgICAgICAgX2Vycl9leGl0KCJjYW5ub3Qgc3BlY2lmeSBib3RoIC0tbGlzdGZ1bmNzIGFuZCAoLS10cmFjZSBvciAtLWNvdW50KSIpCi0KLSAgICBpZiBub3QgKGNvdW50IG9yIHRyYWNlIG9yIHJlcG9ydCBvciBsaXN0ZnVuY3Mgb3IgY291bnRjYWxsZXJzKToKLSAgICAgICAgX2Vycl9leGl0KCJtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAiCi0gICAgICAgICAgICAgICAgICAiLS1saXN0ZnVuY3MsIG9yIC0tdHJhY2tjYWxscyIpCi0KLSAgICBpZiByZXBvcnQgYW5kIG5vX3JlcG9ydDoKLSAgICAgICAgX2Vycl9leGl0KCJjYW5ub3Qgc3BlY2lmeSBib3RoIC0tcmVwb3J0IGFuZCAtLW5vLXJlcG9ydCIpCi0KLSAgICBpZiByZXBvcnQgYW5kIG5vdCBjb3VudHNfZmlsZToKLSAgICAgICAgX2Vycl9leGl0KCItLXJlcG9ydCByZXF1aXJlcyBhIC0tZmlsZSIpCi0KLSAgICBpZiBub19yZXBvcnQgYW5kIGxlbihwcm9nX2FyZ3YpID09IDA6Ci0gICAgICAgIF9lcnJfZXhpdCgibWlzc2luZyBuYW1lIG9mIGZpbGUgdG8gcnVuIikKLQotICAgICMgZXZlcnl0aGluZyBpcyByZWFkeQotICAgIGlmIHJlcG9ydDoKLSAgICAgICAgcmVzdWx0cyA9IENvdmVyYWdlUmVzdWx0cyhpbmZpbGU9Y291bnRzX2ZpbGUsIG91dGZpbGU9Y291bnRzX2ZpbGUpCi0gICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhtaXNzaW5nLCBzdW1tYXJ5PXN1bW1hcnksIGNvdmVyZGlyPWNvdmVyZGlyKQotICAgIGVsc2U6Ci0gICAgICAgIHN5cy5hcmd2ID0gcHJvZ19hcmd2Ci0gICAgICAgIHByb2duYW1lID0gcHJvZ19hcmd2WzBdCi0gICAgICAgIHN5cy5wYXRoWzBdID0gb3MucGF0aC5zcGxpdChwcm9nbmFtZSlbMF0KLQotICAgICAgICB0ID0gVHJhY2UoY291bnQsIHRyYWNlLCBjb3VudGZ1bmNzPWxpc3RmdW5jcywKLSAgICAgICAgICAgICAgICAgIGNvdW50Y2FsbGVycz1jb3VudGNhbGxlcnMsIGlnbm9yZW1vZHM9aWdub3JlX21vZHVsZXMsCi0gICAgICAgICAgICAgICAgICBpZ25vcmVkaXJzPWlnbm9yZV9kaXJzLCBpbmZpbGU9Y291bnRzX2ZpbGUsCi0gICAgICAgICAgICAgICAgICBvdXRmaWxlPWNvdW50c19maWxlLCB0aW1pbmc9dGltaW5nKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocHJvZ25hbWUpIGFzIGZwOgotICAgICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGZwLnJlYWQoKSwgcHJvZ25hbWUsICdleGVjJykKLSAgICAgICAgICAgICMgdHJ5IHRvIGVtdWxhdGUgX19tYWluX18gbmFtZXNwYWNlIGFzIG11Y2ggYXMgcG9zc2libGUKLSAgICAgICAgICAgIGdsb2JzID0gewotICAgICAgICAgICAgICAgICdfX2ZpbGVfXyc6IHByb2duYW1lLAotICAgICAgICAgICAgICAgICdfX25hbWVfXyc6ICdfX21haW5fXycsCi0gICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogTm9uZSwKLSAgICAgICAgICAgICAgICAnX19jYWNoZWRfXyc6IE5vbmUsCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0LnJ1bmN0eChjb2RlLCBnbG9icywgZ2xvYnMpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgIF9lcnJfZXhpdCgiQ2Fubm90IHJ1biBmaWxlICVyIGJlY2F1c2U6ICVzIiAlIChzeXMuYXJndlswXSwgZXJyKSkKLSAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmVzdWx0cyA9IHQucmVzdWx0cygpCi0KLSAgICAgICAgaWYgbm90IG5vX3JlcG9ydDoKLSAgICAgICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhtaXNzaW5nLCBzdW1tYXJ5PXN1bW1hcnksIGNvdmVyZGlyPWNvdmVyZGlyKQotCi0jICBEZXByZWNhdGVkIEFQSQotZGVmIHVzYWdlKG91dGZpbGUpOgotICAgIF93YXJuKCJUaGUgdHJhY2UudXNhZ2UoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICBfdXNhZ2Uob3V0ZmlsZSkKLQotY2xhc3MgSWdub3JlKF9JZ25vcmUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2R1bGVzPU5vbmUsIGRpcnM9Tm9uZSk6Ci0gICAgICAgIF93YXJuKCJUaGUgY2xhc3MgdHJhY2UuSWdub3JlIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgX0lnbm9yZS5fX2luaXRfXyhzZWxmLCBtb2R1bGVzLCBkaXJzKQotCi1kZWYgbW9kbmFtZShwYXRoKToKLSAgICBfd2FybigiVGhlIHRyYWNlLm1vZG5hbWUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX21vZG5hbWUocGF0aCkKLQotZGVmIGZ1bGxtb2RuYW1lKHBhdGgpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZnVsbG1vZG5hbWUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2Z1bGxtb2RuYW1lKHBhdGgpCi0KLWRlZiBmaW5kX2xpbmVzX2Zyb21fY29kZShjb2RlLCBzdHJzKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfbGluZXNfZnJvbV9jb2RlKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9maW5kX2xpbmVzX2Zyb21fY29kZShjb2RlLCBzdHJzKQotCi1kZWYgZmluZF9saW5lcyhjb2RlLCBzdHJzKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfbGluZXMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfbGluZXMoY29kZSwgc3RycykKLQotZGVmIGZpbmRfc3RyaW5ncyhmaWxlbmFtZSwgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS5maW5kX3N0cmluZ3MoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfc3RyaW5ncyhmaWxlbmFtZSwgZW5jb2Rpbmc9Tm9uZSkKLQotZGVmIGZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKGZpbGVuYW1lKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9maW5kX2V4ZWN1dGFibGVfbGluZW5vcyhmaWxlbmFtZSkKKyAgICBpZiBub3Qgb3B0cy5ub19yZXBvcnQ6CisgICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhvcHRzLm1pc3NpbmcsIG9wdHMuc3VtbWFyeSwgb3B0cy5jb3ZlcmRpcikKIAogaWYgX19uYW1lX189PSdfX21haW5fXyc6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdHJhY2ViYWNrLnB5IGIvTGliL3RyYWNlYmFjay5weQppbmRleCBjNWZkNjE3Li4wOWJkYTcxIDEwMDY0NAotLS0gYS9MaWIvdHJhY2ViYWNrLnB5CisrKyBiL0xpYi90cmFjZWJhY2sucHkKQEAgLTM4NSw5ICszODUsMzAgQEAKICAgICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCiAgICAgICAgIEVhY2ggc3RyaW5nIGVuZHMgaW4gYSBuZXdsaW5lOyB0aGUgc3RyaW5ncyBtYXkgY29udGFpbiBpbnRlcm5hbAogICAgICAgICBuZXdsaW5lcyBhcyB3ZWxsLCBmb3IgdGhvc2UgaXRlbXMgd2l0aCBzb3VyY2UgdGV4dCBsaW5lcy4KKworICAgICAgICBGb3IgbG9uZyBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgZnJhbWUgYW5kIGxpbmUsIHRoZSBmaXJzdCBmZXcKKyAgICAgICAgcmVwZXRpdGlvbnMgYXJlIHNob3duLCBmb2xsb3dlZCBieSBhIHN1bW1hcnkgbGluZSBzdGF0aW5nIHRoZSBleGFjdAorICAgICAgICBudW1iZXIgb2YgZnVydGhlciByZXBldGl0aW9ucy4KICAgICAgICAgIiIiCiAgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGxhc3RfZmlsZSA9IE5vbmUKKyAgICAgICAgbGFzdF9saW5lID0gTm9uZQorICAgICAgICBsYXN0X25hbWUgPSBOb25lCisgICAgICAgIGNvdW50ID0gMAogICAgICAgICBmb3IgZnJhbWUgaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIChsYXN0X2ZpbGUgaXMgbm90IE5vbmUgYW5kIGxhc3RfZmlsZSA9PSBmcmFtZS5maWxlbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBsYXN0X2xpbmUgaXMgbm90IE5vbmUgYW5kIGxhc3RfbGluZSA9PSBmcmFtZS5saW5lbm8gYW5kCisgICAgICAgICAgICAgICAgbGFzdF9uYW1lIGlzIG5vdCBOb25lIGFuZCBsYXN0X25hbWUgPT0gZnJhbWUubmFtZSk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudCA+IDM6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZicgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudC0zfSBtb3JlIHRpbWVzXVxuJykKKyAgICAgICAgICAgICAgICBsYXN0X2ZpbGUgPSBmcmFtZS5maWxlbmFtZQorICAgICAgICAgICAgICAgIGxhc3RfbGluZSA9IGZyYW1lLmxpbmVubworICAgICAgICAgICAgICAgIGxhc3RfbmFtZSA9IGZyYW1lLm5hbWUKKyAgICAgICAgICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgICAgIGlmIGNvdW50ID49IDM6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHJvdyA9IFtdCiAgICAgICAgICAgICByb3cuYXBwZW5kKCcgIEZpbGUgInt9IiwgbGluZSB7fSwgaW4ge31cbicuZm9ybWF0KAogICAgICAgICAgICAgICAgIGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8sIGZyYW1lLm5hbWUpKQpAQCAtMzk3LDYgKzQxOCw4IEBACiAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNvcnRlZChmcmFtZS5sb2NhbHMuaXRlbXMoKSk6CiAgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgICB7bmFtZX0gPSB7dmFsdWV9XG4nLmZvcm1hdChuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJycuam9pbihyb3cpKQorICAgICAgICBpZiBjb3VudCA+IDM6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnQtM30gbW9yZSB0aW1lc11cbicpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogCkBAIC00ODcsMTAgKzUxMCw5IEBACiAgICAgICAgICAgICBzZWxmLl9sb2FkX2xpbmVzKCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX2V4Y2VwdGlvbihzZWxmLCBleGMsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIGZyb21fZXhjZXB0aW9uKGNscywgZXhjLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJDcmVhdGUgYSBUcmFjZWJhY2tFeGNlcHRpb24gZnJvbSBhbiBleGNlcHRpb24uIiIiCi0gICAgICAgIHJldHVybiBUcmFjZWJhY2tFeGNlcHRpb24oCi0gICAgICAgICAgICB0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18sICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGNscyh0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18sICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBfbG9hZF9saW5lcyhzZWxmKToKICAgICAgICAgIiIiUHJpdmF0ZSBBUEkuIGZvcmNlIGFsbCBsaW5lcyBpbiB0aGUgc3RhY2sgdG8gYmUgbG9hZGVkLiIiIgpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlbWFsbG9jLnB5IGIvTGliL3RyYWNlbWFsbG9jLnB5CmluZGV4IDYyODhkYTguLjc1YjM5MTggMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdHJhY2VtYWxsb2MucHkKQEAgLTI0NCwxNyArMjQ0LDIxIEBACiAgICAgX19zbG90c19fID0gKCJfdHJhY2UiLCkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFjZSk6Ci0gICAgICAgICMgdHJhY2UgaXMgYSB0dXBsZTogKHNpemUsIHRyYWNlYmFjayksIHNlZSBUcmFjZWJhY2sgY29uc3RydWN0b3IKLSAgICAgICAgIyBmb3IgdGhlIGZvcm1hdCBvZiB0aGUgdHJhY2ViYWNrIHR1cGxlCisgICAgICAgICMgdHJhY2UgaXMgYSB0dXBsZTogKGRvbWFpbjogaW50LCBzaXplOiBpbnQsIHRyYWNlYmFjazogdHVwbGUpLgorICAgICAgICAjIFNlZSBUcmFjZWJhY2sgY29uc3RydWN0b3IgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIHRyYWNlYmFjayB0dXBsZS4KICAgICAgICAgc2VsZi5fdHJhY2UgPSB0cmFjZQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIHNpemUoc2VsZik6CisgICAgZGVmIGRvbWFpbihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3RyYWNlWzBdCiAKICAgICBAcHJvcGVydHkKKyAgICBkZWYgc2l6ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RyYWNlWzFdCisKKyAgICBAcHJvcGVydHkKICAgICBkZWYgdHJhY2ViYWNrKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJhY2ViYWNrKHNlbGYuX3RyYWNlWzFdKQorICAgICAgICByZXR1cm4gVHJhY2ViYWNrKHNlbGYuX3RyYWNlWzJdKQogCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiAoc2VsZi5fdHJhY2UgPT0gb3RoZXIuX3RyYWNlKQpAQCAtMjY2LDggKzI3MCw4IEBACiAgICAgICAgIHJldHVybiAiJXM6ICVzIiAlIChzZWxmLnRyYWNlYmFjaywgX2Zvcm1hdF9zaXplKHNlbGYuc2l6ZSwgRmFsc2UpKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKCI8VHJhY2Ugc2l6ZT0lcywgdHJhY2ViYWNrPSVyPiIKLSAgICAgICAgICAgICAgICAlIChfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSksIHNlbGYudHJhY2ViYWNrKSkKKyAgICAgICAgcmV0dXJuICgiPFRyYWNlIGRvbWFpbj0lcyBzaXplPSVzLCB0cmFjZWJhY2s9JXI+IgorICAgICAgICAgICAgICAgICUgKHNlbGYuZG9tYWluLCBfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSksIHNlbGYudHJhY2ViYWNrKSkKIAogCiBjbGFzcyBfVHJhY2VzKFNlcXVlbmNlKToKQEAgLTMwMiwxOSArMzA2LDI5IEBACiAgICAgcmV0dXJuIGZpbGVuYW1lCiAKIAotY2xhc3MgRmlsdGVyOgorY2xhc3MgQmFzZUZpbHRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVzaXZlKToKKyAgICAgICAgc2VsZi5pbmNsdXNpdmUgPSBpbmNsdXNpdmUKKworICAgIGRlZiBfbWF0Y2goc2VsZiwgdHJhY2UpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKworY2xhc3MgRmlsdGVyKEJhc2VGaWx0ZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmNsdXNpdmUsIGZpbGVuYW1lX3BhdHRlcm4sCi0gICAgICAgICAgICAgICAgIGxpbmVubz1Ob25lLCBhbGxfZnJhbWVzPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgbGluZW5vPU5vbmUsIGFsbF9mcmFtZXM9RmFsc2UsIGRvbWFpbj1Ob25lKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbmNsdXNpdmUpCiAgICAgICAgIHNlbGYuaW5jbHVzaXZlID0gaW5jbHVzaXZlCiAgICAgICAgIHNlbGYuX2ZpbGVuYW1lX3BhdHRlcm4gPSBfbm9ybWFsaXplX2ZpbGVuYW1lKGZpbGVuYW1lX3BhdHRlcm4pCiAgICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCiAgICAgICAgIHNlbGYuYWxsX2ZyYW1lcyA9IGFsbF9mcmFtZXMKKyAgICAgICAgc2VsZi5kb21haW4gPSBkb21haW4KIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBmaWxlbmFtZV9wYXR0ZXJuKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZW5hbWVfcGF0dGVybgogCi0gICAgZGVmIF9fbWF0Y2hfZnJhbWUoc2VsZiwgZmlsZW5hbWUsIGxpbmVubyk6CisgICAgZGVmIF9tYXRjaF9mcmFtZV9pbXBsKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgogICAgICAgICBmaWxlbmFtZSA9IF9ub3JtYWxpemVfZmlsZW5hbWUoZmlsZW5hbWUpCiAgICAgICAgIGlmIG5vdCBmbm1hdGNoLmZubWF0Y2goZmlsZW5hbWUsIHNlbGYuX2ZpbGVuYW1lX3BhdHRlcm4pOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0zMjQsMTEgKzMzOCwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIChsaW5lbm8gPT0gc2VsZi5saW5lbm8pCiAKICAgICBkZWYgX21hdGNoX2ZyYW1lKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgotICAgICAgICByZXR1cm4gc2VsZi5fX21hdGNoX2ZyYW1lKGZpbGVuYW1lLCBsaW5lbm8pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21hdGNoX2ZyYW1lX2ltcGwoZmlsZW5hbWUsIGxpbmVubykgXiAobm90IHNlbGYuaW5jbHVzaXZlKQogCiAgICAgZGVmIF9tYXRjaF90cmFjZWJhY2soc2VsZiwgdHJhY2ViYWNrKToKICAgICAgICAgaWYgc2VsZi5hbGxfZnJhbWVzOgotICAgICAgICAgICAgaWYgYW55KHNlbGYuX19tYXRjaF9mcmFtZShmaWxlbmFtZSwgbGluZW5vKQorICAgICAgICAgICAgaWYgYW55KHNlbGYuX21hdGNoX2ZyYW1lX2ltcGwoZmlsZW5hbWUsIGxpbmVubykKICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUsIGxpbmVubyBpbiB0cmFjZWJhY2spOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmluY2x1c2l2ZQogICAgICAgICAgICAgZWxzZToKQEAgLTMzNyw2ICszNTEsMzAgQEAKICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8gPSB0cmFjZWJhY2tbMF0KICAgICAgICAgICAgIHJldHVybiBzZWxmLl9tYXRjaF9mcmFtZShmaWxlbmFtZSwgbGluZW5vKQogCisgICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CisgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgcmVzID0gc2VsZi5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgaWYgc2VsZi5kb21haW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLmluY2x1c2l2ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzIGFuZCAoZG9tYWluID09IHNlbGYuZG9tYWluKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzIG9yIChkb21haW4gIT0gc2VsZi5kb21haW4pCisgICAgICAgIHJldHVybiByZXMKKworCitjbGFzcyBEb21haW5GaWx0ZXIoQmFzZUZpbHRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluY2x1c2l2ZSwgZG9tYWluKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbmNsdXNpdmUpCisgICAgICAgIHNlbGYuX2RvbWFpbiA9IGRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RvbWFpbgorCisgICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CisgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgcmV0dXJuIChkb21haW4gPT0gc2VsZi5kb21haW4pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKKwogCiBjbGFzcyBTbmFwc2hvdDoKICAgICAiIiIKQEAgLTM2NSwxMyArNDAzLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gcGlja2xlLmxvYWQoZnApCiAKICAgICBkZWYgX2ZpbHRlcl90cmFjZShzZWxmLCBpbmNsdWRlX2ZpbHRlcnMsIGV4Y2x1ZGVfZmlsdGVycywgdHJhY2UpOgotICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZVsxXQogICAgICAgICBpZiBpbmNsdWRlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBpZiBub3QgYW55KHRyYWNlX2ZpbHRlci5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgICAgIGlmIG5vdCBhbnkodHJhY2VfZmlsdGVyLl9tYXRjaCh0cmFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRyYWNlX2ZpbHRlciBpbiBpbmNsdWRlX2ZpbHRlcnMpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBleGNsdWRlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBpZiBhbnkobm90IHRyYWNlX2ZpbHRlci5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgICAgIGlmIGFueShub3QgdHJhY2VfZmlsdGVyLl9tYXRjaCh0cmFjZSkKICAgICAgICAgICAgICAgICAgICBmb3IgdHJhY2VfZmlsdGVyIGluIGV4Y2x1ZGVfZmlsdGVycyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0zNzksOCArNDE2LDggQEAKICAgICBkZWYgZmlsdGVyX3RyYWNlcyhzZWxmLCBmaWx0ZXJzKToKICAgICAgICAgIiIiCiAgICAgICAgIENyZWF0ZSBhIG5ldyBTbmFwc2hvdCBpbnN0YW5jZSB3aXRoIGEgZmlsdGVyZWQgdHJhY2VzIHNlcXVlbmNlLCBmaWx0ZXJzCi0gICAgICAgIGlzIGEgbGlzdCBvZiBGaWx0ZXIgaW5zdGFuY2VzLiAgSWYgZmlsdGVycyBpcyBhbiBlbXB0eSBsaXN0LCByZXR1cm4gYQotICAgICAgICBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KKyAgICAgICAgaXMgYSBsaXN0IG9mIEZpbHRlciBvciBEb21haW5GaWx0ZXIgaW5zdGFuY2VzLiAgSWYgZmlsdGVycyBpcyBhbiBlbXB0eQorICAgICAgICBsaXN0LCByZXR1cm4gYSBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbHRlcnMsIEl0ZXJhYmxlKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsdGVycyBtdXN0IGJlIGEgbGlzdCBvZiBmaWx0ZXJzLCBub3QgJXMiCkBAIC00MTIsNyArNDQ5LDcgQEAKICAgICAgICAgdHJhY2ViYWNrcyA9IHt9CiAgICAgICAgIGlmIG5vdCBjdW11bGF0aXZlOgogICAgICAgICAgICAgZm9yIHRyYWNlIGluIHNlbGYudHJhY2VzLl90cmFjZXM6Ci0gICAgICAgICAgICAgICAgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgICAgICAgICBkb21haW4sIHNpemUsIHRyYWNlX3RyYWNlYmFjayA9IHRyYWNlCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tzW3RyYWNlX3RyYWNlYmFja10KICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC00MzMsNyArNDcwLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzCiAgICAgICAgICAgICBmb3IgdHJhY2UgaW4gc2VsZi50cmFjZXMuX3RyYWNlczoKLSAgICAgICAgICAgICAgICBzaXplLCB0cmFjZV90cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICAgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKICAgICAgICAgICAgICAgICBmb3IgZnJhbWUgaW4gdHJhY2VfdHJhY2ViYWNrOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tzW2ZyYW1lXQpkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQppbmRleCA3MTFkMGFiLi4wYTU4MzMyIDEwMDY0NAotLS0gYS9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQorKysgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQpAQCAtODksMTMgKzg5LDEyIEBACiBpbXBvcnQgb3MKIAogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuQ29sb3JEZWxlZ2F0b3IgaW1wb3J0IENvbG9yRGVsZWdhdG9yLCBjb2xvcl9jb25maWcKLWZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi1mcm9tIGlkbGVsaWIudGV4dFZpZXcgaW1wb3J0IHZpZXdfdGV4dAorZnJvbSBpZGxlbGliLmNvbG9yaXplciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IsIGNvbG9yX2NvbmZpZworZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKK2Zyb20gaWRsZWxpYi50ZXh0dmlldyBpbXBvcnQgdmlld190ZXh0CiBmcm9tIHR1cnRsZWRlbW8gaW1wb3J0IF9fZG9jX18gYXMgYWJvdXRfdHVydGxlZGVtbwogCiBpbXBvcnQgdHVydGxlCi1pbXBvcnQgdGltZQogCiBkZW1vX2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQogZGFyd2luID0gc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5IGIvTGliL3R1cnRsZWRlbW8vYnl0ZWRlc2lnbi5weQppbmRleCA2NGIxZDdkLi5iM2IwOTViIDEwMDc1NQotLS0gYS9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5CisrKyBiL0xpYi90dXJ0bGVkZW1vL2J5dGVkZXNpZ24ucHkKQEAgLTIyLDcgKzIyLDYgQEAKIG1vZGUgYXMgZmFzdCBhcyBwb3NzaWJsZS4KICIiIgogCi1pbXBvcnQgbWF0aAogZnJvbSB0dXJ0bGUgaW1wb3J0IFR1cnRsZSwgbWFpbmxvb3AKIGZyb20gdGltZSBpbXBvcnQgY2xvY2sKIApkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5IGIvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5CmluZGV4IDI2YWJmZGIuLjAyMWZmOTkgMTAwNzU1Ci0tLSBhL0xpYi90dXJ0bGVkZW1vL3BsYW5ldF9hbmRfbW9vbi5weQorKysgYi9MaWIvdHVydGxlZGVtby9wbGFuZXRfYW5kX21vb24ucHkKQEAgLTE4LDcgKzE4LDYgQEAKIAogIiIiCiBmcm9tIHR1cnRsZSBpbXBvcnQgU2hhcGUsIFR1cnRsZSwgbWFpbmxvb3AsIFZlYzJEIGFzIFZlYwotZnJvbSB0aW1lIGltcG9ydCBzbGVlcAogCiBHID0gOAogCmRpZmYgLS1naXQgYS9MaWIvdHlwZXMucHkgYi9MaWIvdHlwZXMucHkKaW5kZXggNDg4OTFjZC4uZDhkODQ3MCAxMDA2NDQKLS0tIGEvTGliL3R5cGVzLnB5CisrKyBiL0xpYi90eXBlcy5weQpAQCAtMjQsNiArMjQsMTEgQEAKIENvcm91dGluZVR5cGUgPSB0eXBlKF9jKQogX2MuY2xvc2UoKSAgIyBQcmV2ZW50IFJlc291cmNlV2FybmluZwogCithc3luYyBkZWYgX2FnKCk6CisgICAgeWllbGQKK19hZyA9IF9hZygpCitBc3luY0dlbmVyYXRvclR5cGUgPSB0eXBlKF9hZykKKwogY2xhc3MgX0M6CiAgICAgZGVmIF9tKHNlbGYpOiBwYXNzCiBNZXRob2RUeXBlID0gdHlwZShfQygpLl9tKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L21vY2sucHkgYi9MaWIvdW5pdHRlc3QvbW9jay5weQppbmRleCA2Njk4OTBhLi5lYWE5YzNkIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvbW9jay5weQorKysgYi9MaWIvdW5pdHRlc3QvbW9jay5weQpAQCAtNjAsMTggKzYwLDYgQEAKICAgICApCiAKIAotY2xhc3MgX3Nsb3R0ZWQob2JqZWN0KToKLSAgICBfX3Nsb3RzX18gPSBbJ2EnXQotCi0KLSMgRG8gbm90IHVzZSB0aGlzIHR1cGxlLiAgSXQgd2FzIG5ldmVyIGRvY3VtZW50ZWQgYXMgYSBwdWJsaWMgQVBJLgotIyBJdCB3aWxsIGJlIHJlbW92ZWQuICBJdCBoYXMgbm8gb2J2aW91cyBzaWducyBvZiB1c2VycyBvbiBnaXRodWIuCi1EZXNjcmlwdG9yVHlwZXMgPSAoCi0gICAgdHlwZShfc2xvdHRlZC5hKSwKLSAgICBwcm9wZXJ0eSwKLSkKLQotCiBkZWYgX2dldF9zaWduYXR1cmVfb2JqZWN0KGZ1bmMsIGFzX2luc3RhbmNlLCBlYXRfc2VsZik6CiAgICAgIiIiCiAgICAgR2l2ZW4gYW4gYXJiaXRyYXJ5LCBwb3NzaWJseSBjYWxsYWJsZSBvYmplY3QsIHRyeSB0byBjcmVhdGUgYSBzdWl0YWJsZQpAQCAtNTI1LDcgKzUxMyw3IEBACiAgICAgc2lkZV9lZmZlY3QgPSBwcm9wZXJ0eShfX2dldF9zaWRlX2VmZmVjdCwgX19zZXRfc2lkZV9lZmZlY3QpCiAKIAotICAgIGRlZiByZXNldF9tb2NrKHNlbGYsIHZpc2l0ZWQ9Tm9uZSk6CisgICAgZGVmIHJlc2V0X21vY2soc2VsZiwgIHZpc2l0ZWQ9Tm9uZSwqLCByZXR1cm5fdmFsdWU9RmFsc2UsIHNpZGVfZWZmZWN0PUZhbHNlKToKICAgICAgICAgIlJlc3RvcmUgdGhlIG1vY2sgb2JqZWN0IHRvIGl0cyBpbml0aWFsIHN0YXRlLiIKICAgICAgICAgaWYgdmlzaXRlZCBpcyBOb25lOgogICAgICAgICAgICAgdmlzaXRlZCA9IFtdCkBAIC01NDAsNiArNTI4LDExIEBACiAgICAgICAgIHNlbGYuY2FsbF9hcmdzX2xpc3QgPSBfQ2FsbExpc3QoKQogICAgICAgICBzZWxmLm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCiAKKyAgICAgICAgaWYgcmV0dXJuX3ZhbHVlOgorICAgICAgICAgICAgc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUgPSBERUZBVUxUCisgICAgICAgIGlmIHNpZGVfZWZmZWN0OgorICAgICAgICAgICAgc2VsZi5fbW9ja19zaWRlX2VmZmVjdCA9IE5vbmUKKwogICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5fbW9ja19jaGlsZHJlbi52YWx1ZXMoKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hpbGQsIF9TcGVjU3RhdGUpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC03NzQsNiArNzY3LDI0IEBACiAgICAgICAgICAgICAgICAgICAgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsIHNlbGYuY2FsbF9jb3VudCkpCiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCiAKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZChfbW9ja19zZWxmKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBhdCBsZWFzdCBvbmNlCisgICAgICAgICIiIgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBpZiBzZWxmLmNhbGxfY291bnQgPT0gMDoKKyAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBoYXZlIGJlZW4gY2FsbGVkLiIgJQorICAgICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlKF9tb2NrX3NlbGYpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIG9ubHkgb25jZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIG5vdCBzZWxmLmNhbGxfY291bnQgPT0gMToKKyAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuIENhbGxlZCAlcyB0aW1lcy4iICUKKyAgICAgICAgICAgICAgICAgICAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJywgc2VsZi5jYWxsX2NvdW50KSkKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKwogICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgogCkBAIC04MjIsNyArODMzLDcgQEAKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIG5vdCBpbiBhbGxfY2FsbHM6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICdDYWxscyBub3QgZm91bmQuXG5FeHBlY3RlZDogJXJcbicKLSAgICAgICAgICAgICAgICAgICAgJ0FjdHVhbDogJXInICUgKGNhbGxzLCBzZWxmLm1vY2tfY2FsbHMpCisgICAgICAgICAgICAgICAgICAgICdBY3R1YWw6ICVyJyAlIChfQ2FsbExpc3QoY2FsbHMpLCBzZWxmLm1vY2tfY2FsbHMpCiAgICAgICAgICAgICAgICAgKSBmcm9tIGNhdXNlCiAgICAgICAgICAgICByZXR1cm4KIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3J1bm5lci5weSBiL0xpYi91bml0dGVzdC9ydW5uZXIucHkKaW5kZXggMjExMjI2Mi4uMmM1ZWE0YSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3J1bm5lci5weQorKysgYi9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CkBAIC0xNjcsNyArMTY3LDcgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLndhcm5pbmdzIGluIFsnZGVmYXVsdCcsICdhbHdheXMnXToKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ21vZHVsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1BsZWFzZSB1c2UgYXNzZXJ0XHcrIGluc3RlYWQuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXInUGxlYXNlIHVzZSBhc3NlcnRcdysgaW5zdGVhZC4nKQogICAgICAgICAgICAgc3RhcnRUaW1lID0gdGltZS50aW1lKCkKICAgICAgICAgICAgIHN0YXJ0VGVzdFJ1biA9IGdldGF0dHIocmVzdWx0LCAnc3RhcnRUZXN0UnVuJywgTm9uZSkKICAgICAgICAgICAgIGlmIHN0YXJ0VGVzdFJ1biBpcyBub3QgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQppbmRleCBlNmUyYmMyLi4xYjBlODMzIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CkBAIC0yNDAsNyArMjQwLDcgQEAKICAgICAgICAgIyBFcnJvciBtZXNzYWdlcyBhcmUgbXVsdGlsaW5lIHNvIG5vdCB0ZXN0aW5nIG9uIGZ1bGwgbWVzc2FnZQogICAgICAgICAjIGFzc2VydFR1cGxlRXF1YWwgYW5kIGFzc2VydExpc3RFcXVhbCBkZWxlZ2F0ZSB0byB0aGlzIG1ldGhvZAogICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnRTZXF1ZW5jZUVxdWFsJywgKFtdLCBbTm9uZV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiXCsgXFtOb25lXF0kIiwgIl5vb3BzJCIsIHIiXCsgXFtOb25lXF0kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJcKyBcW05vbmVcXSQiLCAiXm9vcHMkIiwgciJcKyBcW05vbmVcXSQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlwrIFxbTm9uZVxdIDogb29wcyQiXSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0U2V0RXF1YWwoc2VsZik6CkBAIC0yNTAsMjEgKzI1MCwyMSBAQAogCiAgICAgZGVmIHRlc3RBc3NlcnRJbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0SW4nLCAoTm9uZSwgW10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXk5vbmUgbm90IGZvdW5kIGluIFxbXF0kJywgIl5vb3BzJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeTm9uZSBub3QgZm91bmQgaW4gXFtcXSQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXk5vbmUgbm90IGZvdW5kIGluIFxbXF0gOiBvb3BzJCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdJCcsICJeb29wcyQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgbm90IGZvdW5kIGluIFxbXF0gOiBvb3BzJCddKQogCiAgICAgZGVmIHRlc3RBc3NlcnROb3RJbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0Tm90SW4nLCAoTm9uZSwgW05vbmVdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSQnLCAiXm9vcHMkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdIDogb29wcyQnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcideTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0kJywgIl5vb3BzJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdIDogb29wcyQnXSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0RGljdEVxdWFsKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnREaWN0RXF1YWwnLCAoe30sIHsna2V5JzogJ3ZhbHVlJ30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSQiLCAiXm9vcHMkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9IDogb29wcyQiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcKyBceydrZXknOiAndmFsdWUnXH0kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcKyBceydrZXknOiAndmFsdWUnXH0gOiBvb3BzJCJdKQogCiAgICAgZGVmIHRlc3RBc3NlcnREaWN0Q29udGFpbnNTdWJzZXQoc2VsZik6CiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKaW5kZXggNGI5Nzg4Mi4uYjJmOWM4OCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKQEAgLTM5MCw3ICszOTAsNyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnYWJjICgpIC8vJykKICAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCiAgICAgICAgIGV4cGVjdGVkID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyAoKSAvLyIKLSAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjIFwoXCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gciJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKICAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKICAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKQEAgLTUwMiw3ICs1MDIsNyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnYWJjICgpIC8vJywgdW5pdHRlc3QpCiAgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQogICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgKCkgLy8nIgotICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gciJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCiAgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCiAgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCkBAIC04MDksNyArODA5LDcgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10pCiAgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQogICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCi0gICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9IHIiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjIFwoXCkgLy8iCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCiAgICAgICAgICAgICBleHBlY3RlZCwgIGVycm9yLAogICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQpAQCAtOTI4LDcgKzkyOCw3IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddLCB1bml0dGVzdCkKICAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCiAgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCi0gICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKICAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKICAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5CmluZGV4IGY0NzM4NzkuLjIwNTQzMWEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weQpAQCAtMSw1ICsxLDMgQEAKLWltcG9ydCBzeXMKLQogZGVmIGlzX2luc3RhbmNlKG9iaiwga2xhc3MpOgogICAgICIiIlZlcnNpb24gb2YgaXNfaW5zdGFuY2UgdGhhdCBkb2Vzbid0IGFjY2VzcyBfX2NsYXNzX18iIiIKICAgICByZXR1cm4gaXNzdWJjbGFzcyh0eXBlKG9iaiksIGtsYXNzKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKaW5kZXggYmI5Yjk1Ni4uMjQ1NjliNSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaW5zcGVjdAogaW1wb3J0IHN5cwogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrLCBNYWdpY01vY2ssIF9tYWdpY3MKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQppbmRleCA1ZjgyYjgyLi5iMDdhN2NjIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQpAQCAtMTIzOSw2ICsxMjM5LDI3IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgogICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCiAKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkKCkKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZCgpCisKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZCgpCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkX29uY2Uoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWRfb25jZSgpCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWRfb25jZSgpCisKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkX29uY2UoKQorCiAgICAgI0lzc3VlMjEyNTYgcHJpbnRvdXQgb2Yga2V5d29yZCBhcmdzIHNob3VsZCBiZSBpbiBkZXRlcm1pbmlzdGljIG9yZGVyCiAgICAgZGVmIHRlc3Rfc29ydGVkX2NhbGxfc2lnbmF0dXJlKHNlbGYpOgogICAgICAgICBtID0gTW9jaygpCkBAIC0xMjU2LDYgKzEyNzcsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxsc1swXSwgYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxsc1sxXSwgaSkKIAorICAgIGRlZiB0ZXN0X3Jlc2V0X3JldHVybl9zaWRlZWZmZWN0KHNlbGYpOgorICAgICAgICBtID0gTW9jayhyZXR1cm5fdmFsdWU9MTAsIHNpZGVfZWZmZWN0PVsyLDNdKQorICAgICAgICBtLnJlc2V0X21vY2socmV0dXJuX3ZhbHVlPVRydWUsIHNpZGVfZWZmZWN0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtLnJldHVybl92YWx1ZSwgTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNpZGVfZWZmZWN0LCBOb25lKQorCisgICAgZGVmIHRlc3RfcmVzZXRfcmV0dXJuKHNlbGYpOgorICAgICAgICBtID0gTW9jayhyZXR1cm5fdmFsdWU9MTAsIHNpZGVfZWZmZWN0PVsyLDNdKQorICAgICAgICBtLnJlc2V0X21vY2socmV0dXJuX3ZhbHVlPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtLnJldHVybl92YWx1ZSwgTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtLnNpZGVfZWZmZWN0LCBOb25lKQorCisgICAgZGVmIHRlc3RfcmVzZXRfc2lkZWVmZmVjdChzZWxmKToKKyAgICAgICAgbSA9IE1vY2socmV0dXJuX3ZhbHVlPTEwLCBzaWRlX2VmZmVjdD1bMiwzXSkKKyAgICAgICAgbS5yZXNldF9tb2NrKHNpZGVfZWZmZWN0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZXR1cm5fdmFsdWUsIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc2lkZV9lZmZlY3QsIE5vbmUpCisKICAgICBkZWYgdGVzdF9tb2NrX2FkZF9zcGVjKHNlbGYpOgogICAgICAgICBjbGFzcyBfT25lKG9iamVjdCk6CiAgICAgICAgICAgICBvbmUgPSAxCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKaW5kZXggZGZjZTM2OS4uMmUwYzA4ZiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQpAQCAtMTAsOSArMTAsOSBAQAogZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IFNvbWVDbGFzcywgaXNfaW5zdGFuY2UKIAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCi0gICAgTm9uQ2FsbGFibGVNb2NrLCBDYWxsYWJsZU1peGluLCBwYXRjaCwgc2VudGluZWwsCisgICAgTm9uQ2FsbGFibGVNb2NrLCBDYWxsYWJsZU1peGluLCBzZW50aW5lbCwKICAgICBNYWdpY01vY2ssIE1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBwYXRjaCwgX3BhdGNoLAotICAgIERFRkFVTFQsIGNhbGwsIF9nZXRfdGFyZ2V0LCBfcGF0Y2gKKyAgICBERUZBVUxULCBjYWxsLCBfZ2V0X3RhcmdldAogKQogCiAKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcGFyc2UucHkgYi9MaWIvdXJsbGliL3BhcnNlLnB5CmluZGV4IDU2NmZiZjcuLjk1ODc2N2EgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcGFyc2UucHkKKysrIGIvTGliL3VybGxpYi9wYXJzZS5weQpAQCAtMTU3LDkgKzE1Nyw4IEBACiAgICAgICAgIHBvcnQgPSBzZWxmLl9ob3N0aW5mb1sxXQogICAgICAgICBpZiBwb3J0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcG9ydCA9IGludChwb3J0LCAxMCkKLSAgICAgICAgICAgICMgUmV0dXJuIE5vbmUgb24gYW4gaWxsZWdhbCBwb3J0CiAgICAgICAgICAgICBpZiBub3QgKCAwIDw9IHBvcnQgPD0gNjU1MzUpOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUG9ydCBvdXQgb2YgcmFuZ2UgMC02NTUzNSIpCiAgICAgICAgIHJldHVybiBwb3J0CiAKIApAQCAtMjI2LDggKzIyNSw3MSBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogCiBfRGVmcmFnUmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoJ0RlZnJhZ1Jlc3VsdCcsICd1cmwgZnJhZ21lbnQnKQotX1NwbGl0UmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoJ1NwbGl0UmVzdWx0JywgJ3NjaGVtZSBuZXRsb2MgcGF0aCBxdWVyeSBmcmFnbWVudCcpCi1fUGFyc2VSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgnUGFyc2VSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHBhcmFtcyBxdWVyeSBmcmFnbWVudCcpCitfU3BsaXRSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgKKyAgICAnU3BsaXRSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHF1ZXJ5IGZyYWdtZW50JykKK19QYXJzZVJlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKAorICAgICdQYXJzZVJlc3VsdCcsICdzY2hlbWUgbmV0bG9jIHBhdGggcGFyYW1zIHF1ZXJ5IGZyYWdtZW50JykKKworX0RlZnJhZ1Jlc3VsdEJhc2UuX19kb2NfXyA9ICIiIgorRGVmcmFnUmVzdWx0KHVybCwgZnJhZ21lbnQpCisKK0EgMi10dXBsZSB0aGF0IGNvbnRhaW5zIHRoZSB1cmwgd2l0aG91dCBmcmFnbWVudCBpZGVudGlmaWVyIGFuZCB0aGUgZnJhZ21lbnQKK2lkZW50aWZpZXIgYXMgYSBzZXBhcmF0ZSBhcmd1bWVudC4KKyIiIgorCitfRGVmcmFnUmVzdWx0QmFzZS51cmwuX19kb2NfXyA9ICIiIlRoZSBVUkwgd2l0aCBubyBmcmFnbWVudCBpZGVudGlmaWVyLiIiIgorCitfRGVmcmFnUmVzdWx0QmFzZS5mcmFnbWVudC5fX2RvY19fID0gIiIiCitGcmFnbWVudCBpZGVudGlmaWVyIHNlcGFyYXRlZCBmcm9tIFVSTCwgdGhhdCBhbGxvd3MgaW5kaXJlY3QgaWRlbnRpZmljYXRpb24gb2YgYQorc2Vjb25kYXJ5IHJlc291cmNlIGJ5IHJlZmVyZW5jZSB0byBhIHByaW1hcnkgcmVzb3VyY2UgYW5kIGFkZGl0aW9uYWwgaWRlbnRpZnlpbmcKK2luZm9ybWF0aW9uLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UuX19kb2NfXyA9ICIiIgorU3BsaXRSZXN1bHQoc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCkKKworQSA1LXR1cGxlIHRoYXQgY29udGFpbnMgdGhlIGRpZmZlcmVudCBjb21wb25lbnRzIG9mIGEgVVJMLiBTaW1pbGFyIHRvCitQYXJzZVJlc3VsdCwgYnV0IGRvZXMgbm90IHNwbGl0IHBhcmFtcy4KKyIiIgorCitfU3BsaXRSZXN1bHRCYXNlLnNjaGVtZS5fX2RvY19fID0gIiIiU3BlY2lmaWVzIFVSTCBzY2hlbWUgZm9yIHRoZSByZXF1ZXN0LiIiIgorCitfU3BsaXRSZXN1bHRCYXNlLm5ldGxvYy5fX2RvY19fID0gIiIiCitOZXR3b3JrIGxvY2F0aW9uIHdoZXJlIHRoZSByZXF1ZXN0IGlzIG1hZGUgdG8uCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5wYXRoLl9fZG9jX18gPSAiIiIKK1RoZSBoaWVyYXJjaGljYWwgcGF0aCwgc3VjaCBhcyB0aGUgcGF0aCB0byBhIGZpbGUgdG8gZG93bmxvYWQuCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fID0gIiIiCitUaGUgcXVlcnkgY29tcG9uZW50LCB0aGF0IGNvbnRhaW5zIG5vbi1oaWVyYXJjaGljYWwgZGF0YSwgdGhhdCBhbG9uZyB3aXRoIGRhdGEKK2luIHBhdGggY29tcG9uZW50LCBpZGVudGlmaWVzIGEgcmVzb3VyY2UgaW4gdGhlIHNjb3BlIG9mIFVSSSdzIHNjaGVtZSBhbmQKK25ldHdvcmsgbG9jYXRpb24uCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5mcmFnbWVudC5fX2RvY19fID0gIiIiCitGcmFnbWVudCBpZGVudGlmaWVyLCB0aGF0IGFsbG93cyBpbmRpcmVjdCBpZGVudGlmaWNhdGlvbiBvZiBhIHNlY29uZGFyeSByZXNvdXJjZQorYnkgcmVmZXJlbmNlIHRvIGEgcHJpbWFyeSByZXNvdXJjZSBhbmQgYWRkaXRpb25hbCBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4KKyIiIgorCitfUGFyc2VSZXN1bHRCYXNlLl9fZG9jX18gPSAiIiIKK1BhcnNlUmVzdWx0KHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBwYXJhbXMsICBxdWVyeSwgZnJhZ21lbnQpCisKK0EgNi10dXBsZSB0aGF0IGNvbnRhaW5zIGNvbXBvbmVudHMgb2YgYSBwYXJzZWQgVVJMLgorIiIiCisKK19QYXJzZVJlc3VsdEJhc2Uuc2NoZW1lLl9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLnNjaGVtZS5fX2RvY19fCitfUGFyc2VSZXN1bHRCYXNlLm5ldGxvYy5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5uZXRsb2MuX19kb2NfXworX1BhcnNlUmVzdWx0QmFzZS5wYXRoLl9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLnBhdGguX19kb2NfXworX1BhcnNlUmVzdWx0QmFzZS5wYXJhbXMuX19kb2NfXyA9ICIiIgorUGFyYW1ldGVycyBmb3IgbGFzdCBwYXRoIGVsZW1lbnQgdXNlZCB0byBkZXJlZmVyZW5jZSB0aGUgVVJJIGluIG9yZGVyIHRvIHByb3ZpZGUKK2FjY2VzcyB0byBwZXJmb3JtIHNvbWUgb3BlcmF0aW9uIG9uIHRoZSByZXNvdXJjZS4KKyIiIgorCitfUGFyc2VSZXN1bHRCYXNlLnF1ZXJ5Ll9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLnF1ZXJ5Ll9fZG9jX18KK19QYXJzZVJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXyA9IF9TcGxpdFJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXworCiAKICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBhbGlhcyBfTmV0bG9jUmVzdWx0TWl4aW5TdHIKICMgUmVzdWx0QmFzZSBpcyBubyBsb25nZXIgcGFydCBvZiB0aGUgZG9jdW1lbnRlZCBBUEksIGJ1dCBpdCBpcwpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CmluZGV4IGE0YmY5N2QuLjVmMTViNzQgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKQEAgLTEzNCwxMyArMTM0LDczIEBACiBdCiAKICMgdXNlZCBpbiBVc2VyLUFnZW50IGhlYWRlciBzZW50Ci1fX3ZlcnNpb25fXyA9IHN5cy52ZXJzaW9uWzozXQorX192ZXJzaW9uX18gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIAogX29wZW5lciA9IE5vbmUKIGRlZiB1cmxvcGVuKHVybCwgZGF0YT1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKICAgICAgICAgICAgICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSwgY2FkZWZhdWx0PUZhbHNlLCBjb250ZXh0PU5vbmUpOgorICAgICcnJ09wZW4gdGhlIFVSTCB1cmwsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBSZXF1ZXN0IG9iamVjdC4KKworICAgICpkYXRhKiBtdXN0IGJlIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvCisgICAgdGhlIHNlcnZlciwgb3IgTm9uZSBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgU2VlIFJlcXVlc3QgZm9yCisgICAgZGV0YWlscy4KKworICAgIHVybGxpYi5yZXF1ZXN0IG1vZHVsZSB1c2VzIEhUVFAvMS4xIGFuZCBpbmNsdWRlcyBhICJDb25uZWN0aW9uOmNsb3NlIgorICAgIGhlYWRlciBpbiBpdHMgSFRUUCByZXF1ZXN0cy4KKworICAgIFRoZSBvcHRpb25hbCAqdGltZW91dCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IKKyAgICBibG9ja2luZyBvcGVyYXRpb25zIGxpa2UgdGhlIGNvbm5lY3Rpb24gYXR0ZW1wdCAoaWYgbm90IHNwZWNpZmllZCwgdGhlCisgICAgZ2xvYmFsIGRlZmF1bHQgdGltZW91dCBzZXR0aW5nIHdpbGwgYmUgdXNlZCkuIFRoaXMgb25seSB3b3JrcyBmb3IgSFRUUCwKKyAgICBIVFRQUyBhbmQgRlRQIGNvbm5lY3Rpb25zLgorCisgICAgSWYgKmNvbnRleHQqIGlzIHNwZWNpZmllZCwgaXQgbXVzdCBiZSBhIHNzbC5TU0xDb250ZXh0IGluc3RhbmNlIGRlc2NyaWJpbmcKKyAgICB0aGUgdmFyaW91cyBTU0wgb3B0aW9ucy4gU2VlIEhUVFBTQ29ubmVjdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgVGhlIG9wdGlvbmFsICpjYWZpbGUqIGFuZCAqY2FwYXRoKiBwYXJhbWV0ZXJzIHNwZWNpZnkgYSBzZXQgb2YgdHJ1c3RlZCBDQQorICAgIGNlcnRpZmljYXRlcyBmb3IgSFRUUFMgcmVxdWVzdHMuIGNhZmlsZSBzaG91bGQgcG9pbnQgdG8gYSBzaW5nbGUgZmlsZQorICAgIGNvbnRhaW5pbmcgYSBidW5kbGUgb2YgQ0EgY2VydGlmaWNhdGVzLCB3aGVyZWFzIGNhcGF0aCBzaG91bGQgcG9pbnQgdG8gYQorICAgIGRpcmVjdG9yeSBvZiBoYXNoZWQgY2VydGlmaWNhdGUgZmlsZXMuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluCisgICAgc3NsLlNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKCkuCisKKyAgICBUaGUgKmNhZGVmYXVsdCogcGFyYW1ldGVyIGlzIGlnbm9yZWQuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGFuIG9iamVjdCB3aGljaCBjYW4gd29yayBhcyBhIGNvbnRleHQKKyAgICBtYW5hZ2VyIGFuZCBoYXMgbWV0aG9kcyBzdWNoIGFzCisKKyAgICAqIGdldHVybCgpIC0gcmV0dXJuIHRoZSBVUkwgb2YgdGhlIHJlc291cmNlIHJldHJpZXZlZCwgY29tbW9ubHkgdXNlZCB0bworICAgICAgZGV0ZXJtaW5lIGlmIGEgcmVkaXJlY3Qgd2FzIGZvbGxvd2VkCisKKyAgICAqIGluZm8oKSAtIHJldHVybiB0aGUgbWV0YS1pbmZvcm1hdGlvbiBvZiB0aGUgcGFnZSwgc3VjaCBhcyBoZWFkZXJzLCBpbiB0aGUKKyAgICAgIGZvcm0gb2YgYW4gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygpIGluc3RhbmNlIChzZWUgUXVpY2sgUmVmZXJlbmNlIHRvCisgICAgICBIVFRQIEhlYWRlcnMpCisKKyAgICAqIGdldGNvZGUoKSAtIHJldHVybiB0aGUgSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgcmVzcG9uc2UuICBSYWlzZXMgVVJMRXJyb3IKKyAgICAgIG9uIGVycm9ycy4KKworICAgIEZvciBIVFRQIGFuZCBIVFRQUyBVUkxzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2UKKyAgICBvYmplY3Qgc2xpZ2h0bHkgbW9kaWZpZWQuIEluIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBuZXcgbWV0aG9kcyBhYm92ZSwgdGhlCisgICAgbXNnIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcyB0aGUgcmVhc29uIGF0dHJpYnV0ZSAtLS0KKyAgICB0aGUgcmVhc29uIHBocmFzZSByZXR1cm5lZCBieSB0aGUgc2VydmVyIC0tLSBpbnN0ZWFkIG9mIHRoZSByZXNwb25zZQorICAgIGhlYWRlcnMgYXMgaXQgaXMgc3BlY2lmaWVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciBIVFRQUmVzcG9uc2UuCisKKyAgICBGb3IgRlRQLCBmaWxlLCBhbmQgZGF0YSBVUkxzIGFuZCByZXF1ZXN0cyBleHBsaWNpdGx5IGhhbmRsZWQgYnkgbGVnYWN5CisgICAgVVJMb3BlbmVyIGFuZCBGYW5jeVVSTG9wZW5lciBjbGFzc2VzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYQorICAgIHVybGxpYi5yZXNwb25zZS5hZGRpbmZvdXJsIG9iamVjdC4KKworICAgIE5vdGUgdGhhdCBOb25lIG1heSBiZSByZXR1cm5lZCBpZiBubyBoYW5kbGVyIGhhbmRsZXMgdGhlIHJlcXVlc3QgKHRob3VnaAorICAgIHRoZSBkZWZhdWx0IGluc3RhbGxlZCBnbG9iYWwgT3BlbmVyRGlyZWN0b3IgdXNlcyBVbmtub3duSGFuZGxlciB0byBlbnN1cmUKKyAgICB0aGlzIG5ldmVyIGhhcHBlbnMpLgorCisgICAgSW4gYWRkaXRpb24sIGlmIHByb3h5IHNldHRpbmdzIGFyZSBkZXRlY3RlZCAoZm9yIGV4YW1wbGUsIHdoZW4gYSAqX3Byb3h5CisgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgbGlrZSBodHRwX3Byb3h5IGlzIHNldCksIFByb3h5SGFuZGxlciBpcyBkZWZhdWx0CisgICAgaW5zdGFsbGVkIGFuZCBtYWtlcyBzdXJlIHRoZSByZXF1ZXN0cyBhcmUgaGFuZGxlZCB0aHJvdWdoIHRoZSBwcm94eS4KKworICAgICcnJwogICAgIGdsb2JhbCBfb3BlbmVyCiAgICAgaWYgY2FmaWxlIG9yIGNhcGF0aCBvciBjYWRlZmF1bHQ6CisgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICB3YXJuaW5ncy53YXJuKCJjYWZpbGUsIGNwYXRoIGFuZCBjYWRlZmF1bHQgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhICIKKyAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZC4iLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJZb3UgY2FuJ3QgcGFzcyBib3RoIGNvbnRleHQgYW5kIGFueSBvZiBjYWZpbGUsIGNhcGF0aCwgYW5kICIKQEAgLTExNzAsNiArMTIzMCwxMSBAQAogICAgIGRlZiBzZXRfaHR0cF9kZWJ1Z2xldmVsKHNlbGYsIGxldmVsKToKICAgICAgICAgc2VsZi5fZGVidWdsZXZlbCA9IGxldmVsCiAKKyAgICBkZWYgX2dldF9jb250ZW50X2xlbmd0aChzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgcmV0dXJuIGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLl9nZXRfY29udGVudF9sZW5ndGgoCisgICAgICAgICAgICByZXF1ZXN0LmRhdGEsCisgICAgICAgICAgICByZXF1ZXN0LmdldF9tZXRob2QoKSkKKwogICAgIGRlZiBkb19yZXF1ZXN0XyhzZWxmLCByZXF1ZXN0KToKICAgICAgICAgaG9zdCA9IHJlcXVlc3QuaG9zdAogICAgICAgICBpZiBub3QgaG9zdDoKQEAgLTExNzgsMjQgKzEyNDMsMjIgQEAKICAgICAgICAgaWYgcmVxdWVzdC5kYXRhIGlzIG5vdCBOb25lOiAgIyBQT1NUCiAgICAgICAgICAgICBkYXRhID0gcmVxdWVzdC5kYXRhCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICIgXAotICAgICAgICAgICAgICAgICAgICAgICJJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgorICAgICAgICAgICAgICAgIG1zZyA9ICJQT1NUIGRhdGEgc2hvdWxkIGJlIGJ5dGVzLCBhbiBpdGVyYWJsZSBvZiBieXRlcywgIiBcCisgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgZmlsZSBvYmplY3QuIEl0IGNhbm5vdCBiZSBvZiB0eXBlIHN0ci4iCiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykKICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ0NvbnRlbnQtdHlwZScpOgogICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoCiAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LXR5cGUnLAogICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJykKLSAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJyk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoZGF0YSkKLSAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGNvbGxlY3Rpb25zLkl0ZXJhYmxlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvbnRlbnQtTGVuZ3RoIHNob3VsZCBiZSBzcGVjaWZpZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGl0ZXJhYmxlIGRhdGEgb2YgdHlwZSAlciAlciIgJSAodHlwZShkYXRhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSkpCisgICAgICAgICAgICBpZiAobm90IHJlcXVlc3QuaGFzX2hlYWRlcignQ29udGVudC1sZW5ndGgnKQorICAgICAgICAgICAgICAgICAgICBhbmQgbm90IHJlcXVlc3QuaGFzX2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSk6CisgICAgICAgICAgICAgICAgY29udGVudF9sZW5ndGggPSBzZWxmLl9nZXRfY29udGVudF9sZW5ndGgocmVxdWVzdCkKKyAgICAgICAgICAgICAgICBpZiBjb250ZW50X2xlbmd0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1sZW5ndGgnLCBzdHIoY29udGVudF9sZW5ndGgpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtbGVuZ3RoJywgJyVkJyAlIChsZW4obXYpICogbXYuaXRlbXNpemUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUcmFuc2Zlci1lbmNvZGluZycsICdjaHVua2VkJykKIAogICAgICAgICBzZWxfaG9zdCA9IGhvc3QKICAgICAgICAgaWYgcmVxdWVzdC5oYXNfcHJveHkoKToKQEAgLTEyNTEsNyArMTMxNCw4IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGgucmVxdWVzdChyZXEuZ2V0X21ldGhvZCgpLCByZXEuc2VsZWN0b3IsIHJlcS5kYXRhLCBoZWFkZXJzKQorICAgICAgICAgICAgICAgIGgucmVxdWVzdChyZXEuZ2V0X21ldGhvZCgpLCByZXEuc2VsZWN0b3IsIHJlcS5kYXRhLCBoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1yZXEuaGFzX2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjogIyB0aW1lb3V0IGVycm9yCiAgICAgICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoZXJyKQogICAgICAgICAgICAgciA9IGguZ2V0cmVzcG9uc2UoKQpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weSBiL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKaW5kZXggOGI2OWZkOS4uOWRhYjRjMSAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQorKysgYi9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CkBAIC0xMCw3ICsxMCw5IEBACiAgICAgaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnL25vcm9ib3RzLXJmYy50eHQKICIiIgogCi1pbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdAoraW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgdXJsbGliLnBhcnNlCitpbXBvcnQgdXJsbGliLnJlcXVlc3QKIAogX19hbGxfXyA9IFsiUm9ib3RGaWxlUGFyc2VyIl0KIApAQCAtMTIwLDEwICsxMjIsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJ1bGVsaW5lcy5hcHBlbmQoUnVsZUxpbmUobGluZVsxXSwgVHJ1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmVbMF0gPT0gImNyYXdsLWRlbGF5IjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYmVmb3JlIHRyeWluZyB0byBjb252ZXJ0IHRvIGludCB3ZSBuZWVkIHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgc3VyZSB0aGF0IHJvYm90cy50eHQgaGFzIHZhbGlkIHN5bnRheCBvdGhlcndpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaXQgd2lsbCBjcmFzaAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZVsxXS5zdHJpcCgpLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5kZWxheSA9IGludChsaW5lWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICJyZXF1ZXN0LXJhdGUiOgorICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZSAhPSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVycyA9IGxpbmVbMV0uc3BsaXQoJy8nKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBhbGwgdmFsdWVzIGFyZSBzYW5lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuKG51bWJlcnMpID09IDIgYW5kIG51bWJlcnNbMF0uc3RyaXAoKS5pc2RpZ2l0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbnVtYmVyc1sxXS5zdHJpcCgpLmlzZGlnaXQoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxX3JhdGUgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdyZXFfcmF0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0cyBzZWNvbmRzJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5yZXFfcmF0ZSA9IHJlcV9yYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkucmVxX3JhdGUucmVxdWVzdHMgPSBpbnQobnVtYmVyc1swXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5yZXFfcmF0ZS5zZWNvbmRzID0gaW50KG51bWJlcnNbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIKICAgICAgICAgaWYgc3RhdGUgPT0gMjoKICAgICAgICAgICAgIHNlbGYuX2FkZF9lbnRyeShlbnRyeSkKIAotCiAgICAgZGVmIGNhbl9mZXRjaChzZWxmLCB1c2VyYWdlbnQsIHVybCk6CiAgICAgICAgICIiInVzaW5nIHRoZSBwYXJzZWQgcm9ib3RzLnR4dCBkZWNpZGUgaWYgdXNlcmFnZW50IGNhbiBmZXRjaCB1cmwiIiIKICAgICAgICAgaWYgc2VsZi5kaXNhbGxvd19hbGw6CkBAIC0xNTMsNiArMTc0LDIyIEBACiAgICAgICAgICMgYWdlbnQgbm90IGZvdW5kID09PiBhY2Nlc3MgZ3JhbnRlZAogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIGNyYXdsX2RlbGF5KHNlbGYsIHVzZXJhZ2VudCk6CisgICAgICAgIGlmIG5vdCBzZWxmLm10aW1lKCk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBmb3IgZW50cnkgaW4gc2VsZi5lbnRyaWVzOgorICAgICAgICAgICAgaWYgZW50cnkuYXBwbGllc190byh1c2VyYWdlbnQpOgorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5kZWxheQorICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0X2VudHJ5LmRlbGF5CisKKyAgICBkZWYgcmVxdWVzdF9yYXRlKHNlbGYsIHVzZXJhZ2VudCk6CisgICAgICAgIGlmIG5vdCBzZWxmLm10aW1lKCk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBmb3IgZW50cnkgaW4gc2VsZi5lbnRyaWVzOgorICAgICAgICAgICAgaWYgZW50cnkuYXBwbGllc190byh1c2VyYWdlbnQpOgorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5yZXFfcmF0ZQorICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0X2VudHJ5LnJlcV9yYXRlCisKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICcnLmpvaW4oW3N0cihlbnRyeSkgKyAiXG4iIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXNdKQogCkBAIC0xODAsNiArMjE3LDggQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYudXNlcmFnZW50cyA9IFtdCiAgICAgICAgIHNlbGYucnVsZWxpbmVzID0gW10KKyAgICAgICAgc2VsZi5kZWxheSA9IE5vbmUKKyAgICAgICAgc2VsZi5yZXFfcmF0ZSA9IE5vbmUKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXQgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3V1aWQucHkgYi9MaWIvdXVpZC5weQppbmRleCBlOTZlN2UwLi4yMDBjODAwIDEwMDY0NAotLS0gYS9MaWIvdXVpZC5weQorKysgYi9MaWIvdXVpZC5weQpAQCAtNDg3LDcgKzQ4Nyw2IEBACiAgICAgIyBBc3N1bWUgdGhhdCB0aGUgdXVpZF9nZW5lcmF0ZSBmdW5jdGlvbnMgYXJlIGJyb2tlbiBmcm9tIDEwLjUgb253YXJkLAogICAgICMgdGhlIHRlc3QgY2FuIGJlIGFkanVzdGVkIHdoZW4gYSBsYXRlciB2ZXJzaW9uIGlzIGZpeGVkLgogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIGlmIGludChvcy51bmFtZSgpLnJlbGVhc2Uuc3BsaXQoJy4nKVswXSkgPj0gOToKICAgICAgICAgICAgIF91dWlkX2dlbmVyYXRlX3RpbWUgPSBOb25lCiAKZGlmZiAtLWdpdCBhL0xpYi92ZW52L19faW5pdF9fLnB5IGIvTGliL3ZlbnYvX19pbml0X18ucHkKaW5kZXggNzQyNDVhYi4uMGEwOTRlMyAxMDA2NDQKLS0tIGEvTGliL3ZlbnYvX19pbml0X18ucHkKKysrIGIvTGliL3ZlbnYvX19pbml0X18ucHkKQEAgLTMsMjggKzMsNiBAQAogCiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBWaW5heSBTYWppcC4KIExpY2Vuc2VkIHRvIHRoZSBQU0YgdW5kZXIgYSBjb250cmlidXRvciBhZ3JlZW1lbnQuCi0KLXVzYWdlOiBweXRob24gLW0gdmVudiBbLWhdIFstLXN5c3RlbS1zaXRlLXBhY2thZ2VzXSBbLS1zeW1saW5rc10gWy0tY2xlYXJdCi0gICAgICAgICAgICBbLS11cGdyYWRlXQotICAgICAgICAgICAgRU5WX0RJUiBbRU5WX0RJUiAuLi5dCi0KLUNyZWF0ZXMgdmlydHVhbCBQeXRob24gZW52aXJvbm1lbnRzIGluIG9uZSBvciBtb3JlIHRhcmdldCBkaXJlY3Rvcmllcy4KLQotcG9zaXRpb25hbCBhcmd1bWVudHM6Ci0gIEVOVl9ESVIgICAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgotCi1vcHRpb25hbCBhcmd1bWVudHM6Ci0gIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIEdpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNpdGUtcGFja2FnZXMgZGlyLgotICAtLXN5bWxpbmtzICAgICAgICAgICAgQXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkuCi0gIC0tY2xlYXIgICAgICAgICAgICAgICBEZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCi0gIC0tdXBncmFkZSAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCi0gIC0td2l0aG91dC1waXAgICAgICAgICBTa2lwcyBpbnN0YWxsaW5nIG9yIHVwZ3JhZGluZyBwaXAgaW4gdGhlIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IChwaXAgaXMgYm9vdHN0cmFwcGVkIGJ5IGRlZmF1bHQpCiAiIiIKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKQEAgLTU4LDE1ICszNiwxNyBAQAogICAgIDpwYXJhbSB1cGdyYWRlOiBJZiBUcnVlLCB1cGdyYWRlIGFuIGV4aXN0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAgICAgOnBhcmFtIHdpdGhfcGlwOiBJZiBUcnVlLCBlbnN1cmUgcGlwIGlzIGluc3RhbGxlZCBpbiB0aGUgdmlydHVhbAogICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQKKyAgICA6cGFyYW0gcHJvbXB0OiBBbHRlcm5hdGl2ZSB0ZXJtaW5hbCBwcmVmaXggZm9yIHRoZSBlbnZpcm9ubWVudC4KICAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSwgcHJvbXB0PU5vbmUpOgogICAgICAgICBzZWxmLnN5c3RlbV9zaXRlX3BhY2thZ2VzID0gc3lzdGVtX3NpdGVfcGFja2FnZXMKICAgICAgICAgc2VsZi5jbGVhciA9IGNsZWFyCiAgICAgICAgIHNlbGYuc3ltbGlua3MgPSBzeW1saW5rcwogICAgICAgICBzZWxmLnVwZ3JhZGUgPSB1cGdyYWRlCiAgICAgICAgIHNlbGYud2l0aF9waXAgPSB3aXRoX3BpcAorICAgICAgICBzZWxmLnByb21wdCA9IHByb21wdAogCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBlbnZfZGlyKToKICAgICAgICAgIiIiCkBAIC0xMTIsNyArOTIsOCBAQAogICAgICAgICBjb250ZXh0ID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKICAgICAgICAgY29udGV4dC5lbnZfZGlyID0gZW52X2RpcgogICAgICAgICBjb250ZXh0LmVudl9uYW1lID0gb3MucGF0aC5zcGxpdChlbnZfZGlyKVsxXQotICAgICAgICBjb250ZXh0LnByb21wdCA9ICcoJXMpICcgJSBjb250ZXh0LmVudl9uYW1lCisgICAgICAgIHByb21wdCA9IHNlbGYucHJvbXB0IGlmIHNlbGYucHJvbXB0IGlzIG5vdCBOb25lIGVsc2UgY29udGV4dC5lbnZfbmFtZQorICAgICAgICBjb250ZXh0LnByb21wdCA9ICcoJXMpICcgJSBwcm9tcHQKICAgICAgICAgY3JlYXRlX2lmX25lZWRlZChlbnZfZGlyKQogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJ19fUFlWRU5WX0xBVU5DSEVSX18nIGluIGVudjoKQEAgLTM0OCwyNiArMzI5LDExIEBACiAKIAogZGVmIGNyZWF0ZShlbnZfZGlyLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSk6Ci0gICAgIiIiCi0gICAgQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KLQotICAgIEJ5IGRlZmF1bHQsIG1ha2VzIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcyBkaXIgKnVuKmF2YWlsYWJsZSB0bwotICAgIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LCBhbmQgdXNlcyBjb3B5aW5nIHJhdGhlciB0aGFuIHN5bWxpbmtpbmcgZm9yIGZpbGVzCi0gICAgb2J0YWluZWQgZnJvbSB0aGUgc291cmNlIFB5dGhvbiBpbnN0YWxsYXRpb24uCi0KLSAgICA6cGFyYW0gZW52X2RpcjogVGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IGluLgotICAgIDpwYXJhbSBzeXN0ZW1fc2l0ZV9wYWNrYWdlczogSWYgVHJ1ZSwgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXIgaXMgYXZhaWxhYmxlIHRvIHRoZSBlbnZpcm9ubWVudC4KLSAgICA6cGFyYW0gY2xlYXI6IElmIFRydWUsIGRlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZgotICAgICAgICAgICAgICAgICAgaXQgYWxyZWFkeSBleGlzdHMsIGJlZm9yZSBlbnZpcm9ubWVudCBjcmVhdGlvbi4KLSAgICA6cGFyYW0gc3ltbGlua3M6IElmIFRydWUsIGF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5IGZpbGVzIGludG8KLSAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuCi0gICAgOnBhcmFtIHdpdGhfcGlwOiBJZiBUcnVlLCBlbnN1cmUgcGlwIGlzIGluc3RhbGxlZCBpbiB0aGUgdmlydHVhbAotICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQKLSAgICAiIiIKKyAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHdpdGhfcGlwPUZhbHNlLCBwcm9tcHQ9Tm9uZSk6CisgICAgIiIiQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4iIiIKICAgICBidWlsZGVyID0gRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1zeXN0ZW1fc2l0ZV9wYWNrYWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1jbGVhciwgc3ltbGlua3M9c3ltbGlua3MsIHdpdGhfcGlwPXdpdGhfcGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPWNsZWFyLCBzeW1saW5rcz1zeW1saW5rcywgd2l0aF9waXA9d2l0aF9waXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0PXByb21wdCkKICAgICBidWlsZGVyLmNyZWF0ZShlbnZfZGlyKQogCiBkZWYgbWFpbihhcmdzPU5vbmUpOgpAQCAtNDI3LDYgKzM5Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbCBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnkgZGVmYXVsdCknKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXByb21wdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUHJvdmlkZXMgYW4gYWx0ZXJuYXRpdmUgcHJvbXB0IHByZWZpeCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgZW52aXJvbm1lbnQuJykKICAgICAgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCiAgICAgICAgIGlmIG9wdGlvbnMudXBncmFkZSBhbmQgb3B0aW9ucy5jbGVhcjoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3lvdSBjYW5ub3Qgc3VwcGx5IC0tdXBncmFkZSBhbmQgLS1jbGVhciB0b2dldGhlci4nKQpAQCAtNDM0LDcgKzQwMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPW9wdGlvbnMuY2xlYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPW9wdGlvbnMuc3ltbGlua3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGU9b3B0aW9ucy51cGdyYWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoX3BpcD1vcHRpb25zLndpdGhfcGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoX3BpcD1vcHRpb25zLndpdGhfcGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ9b3B0aW9ucy5wcm9tcHQpCiAgICAgICAgIGZvciBkIGluIG9wdGlvbnMuZGlyczoKICAgICAgICAgICAgIGJ1aWxkZXIuY3JlYXRlKGQpCiAKZGlmZiAtLWdpdCBhL0xpYi93YXJuaW5ncy5weSBiL0xpYi93YXJuaW5ncy5weQppbmRleCBjNjYzMWZjLi4yYjQwN2ZmIDEwMDY0NAotLS0gYS9MaWIvd2FybmluZ3MucHkKKysrIGIvTGliL3dhcm5pbmdzLnB5CkBAIC0yLDM5ICsyLDExMiBAQAogCiBpbXBvcnQgc3lzCiAKKwogX19hbGxfXyA9IFsid2FybiIsICJ3YXJuX2V4cGxpY2l0IiwgInNob3d3YXJuaW5nIiwKICAgICAgICAgICAgImZvcm1hdHdhcm5pbmciLCAiZmlsdGVyd2FybmluZ3MiLCAic2ltcGxlZmlsdGVyIiwKICAgICAgICAgICAgInJlc2V0d2FybmluZ3MiLCAiY2F0Y2hfd2FybmluZ3MiXQogCi0KIGRlZiBzaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpOgogICAgICIiIkhvb2sgdG8gd3JpdGUgYSB3YXJuaW5nIHRvIGEgZmlsZTsgcmVwbGFjZSBpZiB5b3UgbGlrZS4iIiIKLSAgICBpZiBmaWxlIGlzIE5vbmU6Ci0gICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCi0gICAgICAgIGlmIGZpbGUgaXMgTm9uZToKLSAgICAgICAgICAgICMgc3lzLnN0ZGVyciBpcyBOb25lIHdoZW4gcnVuIHdpdGggcHl0aG9udy5leGUgLSB3YXJuaW5ncyBnZXQgbG9zdAotICAgICAgICAgICAgcmV0dXJuCi0gICAgdHJ5OgotICAgICAgICBmaWxlLndyaXRlKGZvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmUpKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzICMgdGhlIGZpbGUgKHByb2JhYmx5IHN0ZGVycikgaXMgaW52YWxpZCAtIHRoaXMgd2FybmluZyBnZXRzIGxvc3QuCisgICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGUsIGxpbmUpCisgICAgX3Nob3d3YXJubXNnX2ltcGwobXNnKQogCiBkZWYgZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZT1Ob25lKToKICAgICAiIiJGdW5jdGlvbiB0byBmb3JtYXQgYSB3YXJuaW5nIHRoZSBzdGFuZGFyZCB3YXkuIiIiCi0gICAgcyA9ICAiJXM6JXM6ICVzOiAlc1xuIiAlIChmaWxlbmFtZSwgbGluZW5vLCBjYXRlZ29yeS5fX25hbWVfXywgbWVzc2FnZSkKLSAgICBpZiBsaW5lIGlzIE5vbmU6CisgICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIE5vbmUsIGxpbmUpCisgICAgcmV0dXJuIF9mb3JtYXR3YXJubXNnX2ltcGwobXNnKQorCitkZWYgX3Nob3d3YXJubXNnX2ltcGwobXNnKToKKyAgICBmaWxlID0gbXNnLmZpbGUKKyAgICBpZiBmaWxlIGlzIE5vbmU6CisgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCisgICAgICAgIGlmIGZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgICMgc3lzLnN0ZGVyciBpcyBOb25lIHdoZW4gcnVuIHdpdGggcHl0aG9udy5leGU6CisgICAgICAgICAgICAjIHdhcm5pbmdzIGdldCBsb3N0CisgICAgICAgICAgICByZXR1cm4KKyAgICB0ZXh0ID0gX2Zvcm1hdHdhcm5tc2cobXNnKQorICAgIHRyeToKKyAgICAgICAgZmlsZS53cml0ZSh0ZXh0KQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgorICAgICAgICBwYXNzCisKK2RlZiBfZm9ybWF0d2Fybm1zZ19pbXBsKG1zZyk6CisgICAgcyA9ICAoIiVzOiVzOiAlczogJXNcbiIKKyAgICAgICAgICAlIChtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8sIG1zZy5jYXRlZ29yeS5fX25hbWVfXywKKyAgICAgICAgICAgICBtc2cubWVzc2FnZSkpCisKKyAgICBpZiBtc2cubGluZSBpcyBOb25lOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgbGluZWNhY2hlCi0gICAgICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8pCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAjIFdoZW4gYSB3YXJuaW5nIGlzIGxvZ2dlZCBkdXJpbmcgUHl0aG9uIHNodXRkb3duLCBsaW5lY2FjaGUKICAgICAgICAgICAgICMgYW5kIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGRvbid0IHdvcmsgYW55bW9yZQogICAgICAgICAgICAgbGluZSA9IE5vbmUKKyAgICAgICAgICAgIGxpbmVjYWNoZSA9IE5vbmUKKyAgICBlbHNlOgorICAgICAgICBsaW5lID0gbXNnLmxpbmUKICAgICBpZiBsaW5lOgogICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICAgICAgIHMgKz0gIiAgJXNcbiIgJSBsaW5lCisKKyAgICBpZiBtc2cuc291cmNlIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2VtYWxsb2MKKyAgICAgICAgICAgIHRiID0gdHJhY2VtYWxsb2MuZ2V0X29iamVjdF90cmFjZWJhY2sobXNnLnNvdXJjZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICMgV2hlbiBhIHdhcm5pbmcgaXMgbG9nZ2VkIGR1cmluZyBQeXRob24gc2h1dGRvd24sIHRyYWNlbWFsbG9jCisgICAgICAgICAgICAjIGFuZCB0aGUgaW1wb3J0IG1hY2hpbmVyeSBkb24ndCB3b3JrIGFueW1vcmUKKyAgICAgICAgICAgIHRiID0gTm9uZQorCisgICAgICAgIGlmIHRiIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcyArPSAnT2JqZWN0IGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4nCisgICAgICAgICAgICBmb3IgZnJhbWUgaW4gdGI6CisgICAgICAgICAgICAgICAgcyArPSAoJyAgRmlsZSAiJXMiLCBsaW5lbm8gJXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAlIChmcmFtZS5maWxlbmFtZSwgZnJhbWUubGluZW5vKSkKKworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZWNhY2hlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gTm9uZQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBOb25lCisgICAgICAgICAgICAgICAgaWYgbGluZToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBzICs9ICcgICAgJXNcbicgJSBsaW5lCiAgICAgcmV0dXJuIHMKIAorIyBLZWVwIGEgcmVmZXJlbmNlIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiB3YXMgcmVwbGFjZWQKK19zaG93d2FybmluZyA9IHNob3d3YXJuaW5nCisKK2RlZiBfc2hvd3dhcm5tc2cobXNnKToKKyAgICAiIiJIb29rIHRvIHdyaXRlIGEgd2FybmluZyB0byBhIGZpbGU7IHJlcGxhY2UgaWYgeW91IGxpa2UuIiIiCisgICAgc2hvd3dhcm5pbmcgPSBnbG9iYWxzKCkuZ2V0KCdzaG93d2FybmluZycsIF9zaG93d2FybmluZykKKyAgICBpZiBzaG93d2FybmluZyBpcyBub3QgX3Nob3d3YXJuaW5nOgorICAgICAgICAjIHdhcm5pbmdzLnNob3d3YXJuaW5nKCkgd2FzIHJlcGxhY2VkCisgICAgICAgIGlmIG5vdCBjYWxsYWJsZShzaG93d2FybmluZyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIndhcm5pbmdzLnNob3d3YXJuaW5nKCkgbXVzdCBiZSBzZXQgdG8gYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIG9yIG1ldGhvZCIpCisKKyAgICAgICAgc2hvd3dhcm5pbmcobXNnLm1lc3NhZ2UsIG1zZy5jYXRlZ29yeSwgbXNnLmZpbGVuYW1lLCBtc2cubGluZW5vLAorICAgICAgICAgICAgICAgICAgICBtc2cuZmlsZSwgbXNnLmxpbmUpCisgICAgICAgIHJldHVybgorICAgIF9zaG93d2Fybm1zZ19pbXBsKG1zZykKKworIyBLZWVwIGEgcmVmZXJlbmNlIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiB3YXMgcmVwbGFjZWQKK19mb3JtYXR3YXJuaW5nID0gZm9ybWF0d2FybmluZworCitkZWYgX2Zvcm1hdHdhcm5tc2cobXNnKToKKyAgICAiIiJGdW5jdGlvbiB0byBmb3JtYXQgYSB3YXJuaW5nIHRoZSBzdGFuZGFyZCB3YXkuIiIiCisgICAgZm9ybWF0d2FybmluZyA9IGdsb2JhbHMoKS5nZXQoJ2Zvcm1hdHdhcm5pbmcnLCBfZm9ybWF0d2FybmluZykKKyAgICBpZiBmb3JtYXR3YXJuaW5nIGlzIG5vdCBfZm9ybWF0d2FybmluZzoKKyAgICAgICAgIyB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nKCkgd2FzIHJlcGxhY2VkCisgICAgICAgIHJldHVybiBmb3JtYXR3YXJuaW5nKG1zZy5tZXNzYWdlLCBtc2cuY2F0ZWdvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5maWxlbmFtZSwgbXNnLmxpbmVubywgbGluZT1tc2cubGluZSkKKyAgICByZXR1cm4gX2Zvcm1hdHdhcm5tc2dfaW1wbChtc2cpCisKIGRlZiBmaWx0ZXJ3YXJuaW5ncyhhY3Rpb24sIG1lc3NhZ2U9IiIsIGNhdGVnb3J5PVdhcm5pbmcsIG1vZHVsZT0iIiwgbGluZW5vPTAsCiAgICAgICAgICAgICAgICAgICAgYXBwZW5kPUZhbHNlKToKICAgICAiIiJJbnNlcnQgYW4gZW50cnkgaW50byB0aGUgbGlzdCBvZiB3YXJuaW5ncyBmaWx0ZXJzIChhdCB0aGUgZnJvbnQpLgpAQCAtMTg1LDcgKzI1OCw3IEBACiAKIAogIyBDb2RlIHR5cGljYWxseSByZXBsYWNlZCBieSBfd2FybmluZ3MKLWRlZiB3YXJuKG1lc3NhZ2UsIGNhdGVnb3J5PU5vbmUsIHN0YWNrbGV2ZWw9MSk6CitkZWYgd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEsIHNvdXJjZT1Ob25lKToKICAgICAiIiJJc3N1ZSBhIHdhcm5pbmcsIG9yIG1heWJlIGlnbm9yZSBpdCBvciByYWlzZSBhbiBleGNlcHRpb24uIiIiCiAgICAgIyBDaGVjayBpZiBtZXNzYWdlIGlzIGFscmVhZHkgYSBXYXJuaW5nIG9iamVjdAogICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgV2FybmluZyk6CkBAIC0yMzUsMTAgKzMwOCwxMSBAQAogICAgICAgICAgICAgZmlsZW5hbWUgPSBtb2R1bGUKICAgICByZWdpc3RyeSA9IGdsb2JhbHMuc2V0ZGVmYXVsdCgiX193YXJuaW5ncmVnaXN0cnlfXyIsIHt9KQogICAgIHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwgcmVnaXN0cnksCi0gICAgICAgICAgICAgICAgICBnbG9iYWxzKQorICAgICAgICAgICAgICAgICAgZ2xvYmFscywgc291cmNlKQogCiBkZWYgd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgIG1vZHVsZT1Ob25lLCByZWdpc3RyeT1Ob25lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKToKKyAgICAgICAgICAgICAgICAgIG1vZHVsZT1Ob25lLCByZWdpc3RyeT1Ob25lLCBtb2R1bGVfZ2xvYmFscz1Ob25lLAorICAgICAgICAgICAgICAgICAgc291cmNlPU5vbmUpOgogICAgIGxpbmVubyA9IGludChsaW5lbm8pCiAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgIG1vZHVsZSA9IGZpbGVuYW1lIG9yICI8dW5rbm93bj4iCkBAIC0zMDMsMjIgKzM3NywxOCBAQAogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgYWN0aW9uICglcikgaW4gd2FybmluZ3MuZmlsdGVyczpcbiAlcyIgJQogICAgICAgICAgICAgICAoYWN0aW9uLCBpdGVtKSkKLSAgICBpZiBub3QgY2FsbGFibGUoc2hvd3dhcm5pbmcpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoIndhcm5pbmdzLnNob3d3YXJuaW5nKCkgbXVzdCBiZSBzZXQgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gb3IgbWV0aG9kIikKICAgICAjIFByaW50IG1lc3NhZ2UgYW5kIGNvbnRleHQKLSAgICBzaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubykKKyAgICBtc2cgPSBXYXJuaW5nTWVzc2FnZShtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgc291cmNlKQorICAgIF9zaG93d2Fybm1zZyhtc2cpCiAKIAogY2xhc3MgV2FybmluZ01lc3NhZ2Uob2JqZWN0KToKIAotICAgICIiIkhvbGRzIHRoZSByZXN1bHQgb2YgYSBzaW5nbGUgc2hvd3dhcm5pbmcoKSBjYWxsLiIiIgotCiAgICAgX1dBUk5JTkdfREVUQUlMUyA9ICgibWVzc2FnZSIsICJjYXRlZ29yeSIsICJmaWxlbmFtZSIsICJsaW5lbm8iLCAiZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAibGluZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAibGluZSIsICJzb3VyY2UiKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIGxpbmU9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGxpbmU9Tm9uZSwgc291cmNlPU5vbmUpOgogICAgICAgICBsb2NhbF92YWx1ZXMgPSBsb2NhbHMoKQogICAgICAgICBmb3IgYXR0ciBpbiBzZWxmLl9XQVJOSU5HX0RFVEFJTFM6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGF0dHIsIGxvY2FsX3ZhbHVlc1thdHRyXSkKQEAgLTM3NiwxMSArNDQ2LDEyIEBACiAgICAgICAgIHNlbGYuX21vZHVsZS5maWx0ZXJzID0gc2VsZi5fZmlsdGVyc1s6XQogICAgICAgICBzZWxmLl9tb2R1bGUuX2ZpbHRlcnNfbXV0YXRlZCgpCiAgICAgICAgIHNlbGYuX3Nob3d3YXJuaW5nID0gc2VsZi5fbW9kdWxlLnNob3d3YXJuaW5nCisgICAgICAgIHNlbGYuX3Nob3d3YXJubXNnID0gc2VsZi5fbW9kdWxlLl9zaG93d2Fybm1zZwogICAgICAgICBpZiBzZWxmLl9yZWNvcmQ6CiAgICAgICAgICAgICBsb2cgPSBbXQotICAgICAgICAgICAgZGVmIHNob3d3YXJuaW5nKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICAgICAgbG9nLmFwcGVuZChXYXJuaW5nTWVzc2FnZSgqYXJncywgKiprd2FyZ3MpKQotICAgICAgICAgICAgc2VsZi5fbW9kdWxlLnNob3d3YXJuaW5nID0gc2hvd3dhcm5pbmcKKyAgICAgICAgICAgIGRlZiBzaG93YXJubXNnKG1zZyk6CisgICAgICAgICAgICAgICAgbG9nLmFwcGVuZChtc2cpCisgICAgICAgICAgICBzZWxmLl9tb2R1bGUuX3Nob3d3YXJubXNnID0gc2hvd2Fybm1zZwogICAgICAgICAgICAgcmV0dXJuIGxvZwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTM5MSw2ICs0NjIsNyBAQAogICAgICAgICBzZWxmLl9tb2R1bGUuZmlsdGVycyA9IHNlbGYuX2ZpbHRlcnMKICAgICAgICAgc2VsZi5fbW9kdWxlLl9maWx0ZXJzX211dGF0ZWQoKQogICAgICAgICBzZWxmLl9tb2R1bGUuc2hvd3dhcm5pbmcgPSBzZWxmLl9zaG93d2FybmluZworICAgICAgICBzZWxmLl9tb2R1bGUuX3Nob3d3YXJubXNnID0gc2VsZi5fc2hvd3dhcm5tc2cKIAogCiAjIGZpbHRlcnMgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBmaWx0ZXIgNS10dXBsZXMKZGlmZiAtLWdpdCBhL0xpYi93YXZlLnB5IGIvTGliL3dhdmUucHkKaW5kZXggOGExMDFlMy4uZjcxZjdlNSAxMDA2NDQKLS0tIGEvTGliL3dhdmUucHkKKysrIGIvTGliL3dhdmUucHkKQEAgLTczLDcgKzczLDcgQEAKIAogaW1wb3J0IGJ1aWx0aW5zCiAKLV9fYWxsX18gPSBbIm9wZW4iLCAib3BlbmZwIiwgIkVycm9yIl0KK19fYWxsX18gPSBbIm9wZW4iLCAib3BlbmZwIiwgIkVycm9yIiwgIldhdmVfcmVhZCIsICJXYXZlX3dyaXRlIl0KIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5IGIvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQppbmRleCA3ZmRkYmU4Li5mNzE1NjNhIDEwMDY0NAotLS0gYS9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CisrKyBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKQEAgLTExLDcgKzExLDYgQEAKICIiIgogCiBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCBIVFRQU2VydmVyCi1mcm9tIGlvIGltcG9ydCBCdWZmZXJlZFdyaXRlcgogaW1wb3J0IHN5cwogaW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB3c2dpcmVmLmhhbmRsZXJzIGltcG9ydCBTaW1wbGVIYW5kbGVyCkBAIC0xMjcsMTcgKzEyNiwxMSBAQAogICAgICAgICBpZiBub3Qgc2VsZi5wYXJzZV9yZXF1ZXN0KCk6ICMgQW4gZXJyb3IgY29kZSBoYXMgYmVlbiBzZW50LCBqdXN0IGV4aXQKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICMgQXZvaWQgcGFzc2luZyB0aGUgcmF3IGZpbGUgb2JqZWN0IHdmaWxlLCB3aGljaCBjYW4gZG8gcGFydGlhbAotICAgICAgICAjIHdyaXRlcyAoSXNzdWUgMjQyOTEpCi0gICAgICAgIHN0ZG91dCA9IEJ1ZmZlcmVkV3JpdGVyKHNlbGYud2ZpbGUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRsZXIgPSBTZXJ2ZXJIYW5kbGVyKAotICAgICAgICAgICAgICAgIHNlbGYucmZpbGUsIHN0ZG91dCwgc2VsZi5nZXRfc3RkZXJyKCksIHNlbGYuZ2V0X2Vudmlyb24oKQotICAgICAgICAgICAgKQotICAgICAgICAgICAgaGFuZGxlci5yZXF1ZXN0X2hhbmRsZXIgPSBzZWxmICAgICAgIyBiYWNrcG9pbnRlciBmb3IgbG9nZ2luZwotICAgICAgICAgICAgaGFuZGxlci5ydW4oc2VsZi5zZXJ2ZXIuZ2V0X2FwcCgpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc3Rkb3V0LmRldGFjaCgpCisgICAgICAgIGhhbmRsZXIgPSBTZXJ2ZXJIYW5kbGVyKAorICAgICAgICAgICAgc2VsZi5yZmlsZSwgc2VsZi53ZmlsZSwgc2VsZi5nZXRfc3RkZXJyKCksIHNlbGYuZ2V0X2Vudmlyb24oKQorICAgICAgICApCisgICAgICAgIGhhbmRsZXIucmVxdWVzdF9oYW5kbGVyID0gc2VsZiAgICAgICMgYmFja3BvaW50ZXIgZm9yIGxvZ2dpbmcKKyAgICAgICAgaGFuZGxlci5ydW4oc2VsZi5zZXJ2ZXIuZ2V0X2FwcCgpKQogCiAKIApAQCAtMTYzLDEwICsxNTYsOSBAQAogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgZGVtb19hcHApCi0gICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQotICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24iLCBzYVswXSwgInBvcnQiLCBzYVsxXSwgIi4uLiIpCi0gICAgaW1wb3J0IHdlYmJyb3dzZXIKLSAgICB3ZWJicm93c2VyLm9wZW4oJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94eXo/YWJjJykKLSAgICBodHRwZC5oYW5kbGVfcmVxdWVzdCgpICAjIHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKLSAgICBodHRwZC5zZXJ2ZXJfY2xvc2UoKQorICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKSBhcyBodHRwZDoKKyAgICAgICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQorICAgICAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIiwgc2FbMF0sICJwb3J0Iiwgc2FbMV0sICIuLi4iKQorICAgICAgICBpbXBvcnQgd2ViYnJvd3NlcgorICAgICAgICB3ZWJicm93c2VyLm9wZW4oJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94eXo/YWJjJykKKyAgICAgICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKSAgIyBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0CmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5IGIvTGliL3htbC9kb20veG1sYnVpbGRlci5weQppbmRleCA0NDRmMGIyLi5lOWExNTM2IDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CisrKyBiL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKQEAgLTM1MywxNCArMzUzLDE0IEBACiBjbGFzcyBEb2N1bWVudExTOgogICAgICIiIk1peGluIHRvIGNyZWF0ZSBkb2N1bWVudHMgdGhhdCBjb25mb3JtIHRvIHRoZSBsb2FkL3NhdmUgc3BlYy4iIiIKIAotICAgIGFzeW5jID0gX0FzeW5jRGVwcmVjYXRlZFByb3BlcnR5KCkKICAgICBhc3luY18gPSBGYWxzZQorICAgIGxvY2FscygpWydhc3luYyddID0gX0FzeW5jRGVwcmVjYXRlZFByb3BlcnR5KCkgICMgQXZvaWQgRGVwcmVjYXRpb25XYXJuaW5nCiAKICAgICBkZWYgX2dldF9hc3luYyhzZWxmKToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgX3NldF9hc3luYyhzZWxmLCBhc3luYyk6Ci0gICAgICAgIGlmIGFzeW5jOgorICAgIGRlZiBfc2V0X2FzeW5jKHNlbGYsIGZsYWcpOgorICAgICAgICBpZiBmbGFnOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RTdXBwb3J0ZWRFcnIoCiAgICAgICAgICAgICAgICAgImFzeW5jaHJvbm91cyBkb2N1bWVudCBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKQogCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5IGIvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQppbmRleCA1ZGU0MjMyLi5hYjZiNzlhIDEwMDY0NAotLS0gYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKQEAgLTU5LDE1ICs1OSwxNSBAQAogaW1wb3J0IHJlCiAKIHhwYXRoX3Rva2VuaXplcl9yZSA9IHJlLmNvbXBpbGUoCi0gICAgIigiCi0gICAgIidbXiddKid8XCJbXlwiXSpcInwiCi0gICAgIjo6fCIKLSAgICAiLy8/fCIKLSAgICAiXC5cLnwiCi0gICAgIlwoXCl8IgotICAgICJbLy4qOlxbXF1cKFwpQD1dKXwiCi0gICAgIigoPzpce1tefV0rXH0pP1teL1xbXF1cKFwpQD1cc10rKXwiCi0gICAgIlxzKyIKKyAgICByIigiCisgICAgciInW14nXSonfFwiW15cIl0qXCJ8IgorICAgIHIiOjp8IgorICAgIHIiLy8/fCIKKyAgICByIlwuXC58IgorICAgIHIiXChcKXwiCisgICAgciJbLy4qOlxbXF1cKFwpQD1dKXwiCisgICAgciIoKD86XHtbXn1dK1x9KT9bXi9cW1xdXChcKUA9XHNdKyl8IgorICAgIHIiXHMrIgogICAgICkKIAogZGVmIHhwYXRoX3Rva2VuaXplcihwYXR0ZXJuLCBuYW1lc3BhY2VzPU5vbmUpOgpAQCAtMTgwLDcgKzE4MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgZWxlbS5nZXQoa2V5KSA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgeWllbGQgZWxlbQogICAgICAgICByZXR1cm4gc2VsZWN0Ci0gICAgaWYgc2lnbmF0dXJlID09ICItIiBhbmQgbm90IHJlLm1hdGNoKCJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKKyAgICBpZiBzaWduYXR1cmUgPT0gIi0iIGFuZCBub3QgcmUubWF0Y2gociJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKICAgICAgICAgIyBbdGFnXQogICAgICAgICB0YWcgPSBwcmVkaWNhdGVbMF0KICAgICAgICAgZGVmIHNlbGVjdChjb250ZXh0LCByZXN1bHQpOgpAQCAtMTg4LDcgKzE4OCw3IEBACiAgICAgICAgICAgICAgICAgaWYgZWxlbS5maW5kKHRhZykgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICAgcmV0dXJuIHNlbGVjdAotICAgIGlmIHNpZ25hdHVyZSA9PSAiLT0nIiBhbmQgbm90IHJlLm1hdGNoKCJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKKyAgICBpZiBzaWduYXR1cmUgPT0gIi09JyIgYW5kIG5vdCByZS5tYXRjaChyIlwtP1xkKyQiLCBwcmVkaWNhdGVbMF0pOgogICAgICAgICAjIFt0YWc9J3ZhbHVlJ10KICAgICAgICAgdGFnID0gcHJlZGljYXRlWzBdCiAgICAgICAgIHZhbHVlID0gcHJlZGljYXRlWy0xXQpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKaW5kZXggOTI4MjFjNS4uNzM1NDA1NiAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CkBAIC04NSw3ICs4NSw3IEBACiAgICAgIlRyZWVCdWlsZGVyIiwKICAgICAiVkVSU0lPTiIsCiAgICAgIlhNTCIsICJYTUxJRCIsCi0gICAgIlhNTFBhcnNlciIsCisgICAgIlhNTFBhcnNlciIsICJYTUxQdWxsUGFyc2VyIiwKICAgICAicmVnaXN0ZXJfbmFtZXNwYWNlIiwKICAgICBdCiAKQEAgLTk1LDYgKzk1LDcgQEAKIGltcG9ydCByZQogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgaW8KK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvbnRleHRsaWIKIAogZnJvbSAuIGltcG9ydCBFbGVtZW50UGF0aApAQCAtMTAyOSw3ICsxMDMwLDcgQEAKICAgICBWYWx1ZUVycm9yIGlzIHJhaXNlZCBpZiBwcmVmaXggaXMgcmVzZXJ2ZWQgb3IgaXMgaW52YWxpZC4KIAogICAgICIiIgotICAgIGlmIHJlLm1hdGNoKCJuc1xkKyQiLCBwcmVmaXgpOgorICAgIGlmIHJlLm1hdGNoKHIibnNcZCskIiwgcHJlZml4KToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUHJlZml4IGZvcm1hdCByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlIikKICAgICBmb3IgaywgdiBpbiBsaXN0KF9uYW1lc3BhY2VfbWFwLml0ZW1zKCkpOgogICAgICAgICBpZiBrID09IHVyaSBvciB2ID09IHByZWZpeDoKQEAgLTEwODQsNyArMTA4NSw3IEBACiAgICAgICAgIGlmICJcIiIgaW4gdGV4dDoKICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIlwiIiwgIiZxdW90OyIpCiAgICAgICAgICMgVGhlIGZvbGxvd2luZyBidXNpbmVzcyB3aXRoIGNhcnJpYWdlIHJldHVybnMgaXMgdG8gc2F0aXNmeQotICAgICAgICAjIFNlY3Rpb24gMi4xMSBvZiB0aGUgWE1MIHNwZWNpZmljYXRpb24sIHN0YXRpbmcgdGhhdCAKKyAgICAgICAgIyBTZWN0aW9uIDIuMTEgb2YgdGhlIFhNTCBzcGVjaWZpY2F0aW9uLCBzdGF0aW5nIHRoYXQKICAgICAgICAgIyBDUiBvciBDUiBMTiBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBqdXN0IExOCiAgICAgICAgICMgaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbC8jc2VjLWxpbmUtZW5kcwogICAgICAgICBpZiAiXHJcbiIgaW4gdGV4dDoKQEAgLTEyMTEsMTYgKzEyMTIsMzcgQEAKICAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIHByb3ZpZGluZyAoZXZlbnQsIGVsZW0pIHBhaXJzLgogCiAgICAgIiIiCisgICAgIyBVc2UgdGhlIGludGVybmFsLCB1bmRvY3VtZW50ZWQgX3BhcnNlciBhcmd1bWVudCBmb3Igbm93OyBXaGVuIHRoZQorICAgICMgcGFyc2VyIGFyZ3VtZW50IG9mIGl0ZXJwYXJzZSBpcyByZW1vdmVkLCB0aGlzIGNhbiBiZSBraWxsZWQuCisgICAgcHVsbHBhcnNlciA9IFhNTFB1bGxQYXJzZXIoZXZlbnRzPWV2ZW50cywgX3BhcnNlcj1wYXJzZXIpCisgICAgZGVmIGl0ZXJhdG9yKCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBwdWxscGFyc2VyLnJlYWRfZXZlbnRzKCkKKyAgICAgICAgICAgICAgICAjIGxvYWQgZXZlbnQgYnVmZmVyCisgICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5yZWFkKDE2ICogMTAyNCkKKyAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwdWxscGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgICAgIHJvb3QgPSBwdWxscGFyc2VyLl9jbG9zZV9hbmRfcmV0dXJuX3Jvb3QoKQorICAgICAgICAgICAgeWllbGQgZnJvbSBwdWxscGFyc2VyLnJlYWRfZXZlbnRzKCkKKyAgICAgICAgICAgIGl0LnJvb3QgPSByb290CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBjbG9zZV9zb3VyY2U6CisgICAgICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKKworICAgIGNsYXNzIEl0ZXJQYXJzZUl0ZXJhdG9yKGNvbGxlY3Rpb25zLkl0ZXJhdG9yKToKKyAgICAgICAgX19uZXh0X18gPSBpdGVyYXRvcigpLl9fbmV4dF9fCisgICAgaXQgPSBJdGVyUGFyc2VJdGVyYXRvcigpCisgICAgaXQucm9vdCA9IE5vbmUKKyAgICBkZWwgaXRlcmF0b3IsIEl0ZXJQYXJzZUl0ZXJhdG9yCisKICAgICBjbG9zZV9zb3VyY2UgPSBGYWxzZQogICAgIGlmIG5vdCBoYXNhdHRyKHNvdXJjZSwgInJlYWQiKToKICAgICAgICAgc291cmNlID0gb3Blbihzb3VyY2UsICJyYiIpCiAgICAgICAgIGNsb3NlX3NvdXJjZSA9IFRydWUKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfSXRlclBhcnNlSXRlcmF0b3Ioc291cmNlLCBldmVudHMsIHBhcnNlciwgY2xvc2Vfc291cmNlKQotICAgIGV4Y2VwdDoKLSAgICAgICAgaWYgY2xvc2Vfc291cmNlOgotICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKLSAgICAgICAgcmFpc2UKKworICAgIHJldHVybiBpdAogCiAKIGNsYXNzIFhNTFB1bGxQYXJzZXI6CkBAIC0xMjMwLDkgKzEyNTIsNyBAQAogICAgICAgICAjIHVwb24gaW4gdXNlciBjb2RlLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE3NzQxIGZvciBtb3JlIGRldGFpbHMuCiAKLSAgICAgICAgIyBfZWxlbWVudHRyZWUuYyBleHBlY3RzIGEgbGlzdCwgbm90IGEgZGVxdWUKLSAgICAgICAgc2VsZi5fZXZlbnRzX3F1ZXVlID0gW10KLSAgICAgICAgc2VsZi5faW5kZXggPSAwCisgICAgICAgIHNlbGYuX2V2ZW50c19xdWV1ZSA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKICAgICAgICAgc2VsZi5fcGFyc2VyID0gX3BhcnNlciBvciBYTUxQYXJzZXIodGFyZ2V0PVRyZWVCdWlsZGVyKCkpCiAgICAgICAgICMgd2lyZSB1cCB0aGUgcGFyc2VyIGZvciBldmVudCByZXBvcnRpbmcKICAgICAgICAgaWYgZXZlbnRzIGlzIE5vbmU6CkBAIC0xMjcwLDY0ICsxMjkwLDE0IEBACiAgICAgICAgIHJldHJpZXZlZCBmcm9tIHRoZSBpdGVyYXRvci4KICAgICAgICAgIiIiCiAgICAgICAgIGV2ZW50cyA9IHNlbGYuX2V2ZW50c19xdWV1ZQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaW5kZXggPSBzZWxmLl9pbmRleAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGV2ZW50ID0gZXZlbnRzW3NlbGYuX2luZGV4XQotICAgICAgICAgICAgICAgICMgQXZvaWQgcmV0YWluaW5nIHJlZmVyZW5jZXMgdG8gcGFzdCBldmVudHMKLSAgICAgICAgICAgICAgICBldmVudHNbc2VsZi5faW5kZXhdID0gTm9uZQotICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGluZGV4ICs9IDEKLSAgICAgICAgICAgICMgQ29tcGFjdCB0aGUgbGlzdCBpbiBhIE8oMSkgYW1vcnRpemVkIGZhc2hpb24KLSAgICAgICAgICAgICMgQXMgbm90ZWQgYWJvdmUsIF9lbGVtZW50cmVlLmMgbmVlZHMgYSBsaXN0LCBub3QgYSBkZXF1ZQotICAgICAgICAgICAgaWYgaW5kZXggKiAyID49IGxlbihldmVudHMpOgotICAgICAgICAgICAgICAgIGV2ZW50c1s6aW5kZXhdID0gW10KLSAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCA9IDAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5faW5kZXggPSBpbmRleAorICAgICAgICB3aGlsZSBldmVudHM6CisgICAgICAgICAgICBldmVudCA9IGV2ZW50cy5wb3BsZWZ0KCkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgcmFpc2UgZXZlbnQKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgeWllbGQgZXZlbnQKIAogCi1jbGFzcyBfSXRlclBhcnNlSXRlcmF0b3I6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNlLCBldmVudHMsIHBhcnNlciwgY2xvc2Vfc291cmNlPUZhbHNlKToKLSAgICAgICAgIyBVc2UgdGhlIGludGVybmFsLCB1bmRvY3VtZW50ZWQgX3BhcnNlciBhcmd1bWVudCBmb3Igbm93OyBXaGVuIHRoZQotICAgICAgICAjIHBhcnNlciBhcmd1bWVudCBvZiBpdGVycGFyc2UgaXMgcmVtb3ZlZCwgdGhpcyBjYW4gYmUga2lsbGVkLgotICAgICAgICBzZWxmLl9wYXJzZXIgPSBYTUxQdWxsUGFyc2VyKGV2ZW50cz1ldmVudHMsIF9wYXJzZXI9cGFyc2VyKQotICAgICAgICBzZWxmLl9maWxlID0gc291cmNlCi0gICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBjbG9zZV9zb3VyY2UKLSAgICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdCA9IE5vbmUKLQotICAgIGRlZiBfX25leHRfXyhzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICBmb3IgZXZlbnQgaW4gc2VsZi5fcGFyc2VyLnJlYWRfZXZlbnRzKCk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudAotICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BhcnNlci5fcGFyc2VyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlcgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQoMTYgKiAxMDI0KQotICAgICAgICAgICAgICAgIGlmIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlci5mZWVkKGRhdGEpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHNlbGYuX3BhcnNlci5fY2xvc2VfYW5kX3JldHVybl9yb290KCkKLSAgICAgICAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3QKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VfZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKLSAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCi0KIGRlZiBYTUwodGV4dCwgcGFyc2VyPU5vbmUpOgogICAgICIiIlBhcnNlIFhNTCBkb2N1bWVudCBmcm9tIHN0cmluZyBjb25zdGFudC4KIApkaWZmIC0tZ2l0IGEvTGliL3htbHJwYy9jbGllbnQucHkgYi9MaWIveG1scnBjL2NsaWVudC5weQppbmRleCBiYmY5ZWU2Li5iZDMyNzhlIDEwMDY0NAotLS0gYS9MaWIveG1scnBjL2NsaWVudC5weQorKysgYi9MaWIveG1scnBjL2NsaWVudC5weQpAQCAtMTMyLDYgKzEzMiw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAogaW1wb3J0IGh0dHAuY2xpZW50CiBpbXBvcnQgdXJsbGliLnBhcnNlCiBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdApAQCAtMTUxLDcgKzE1Miw3IEBACiAgICAgcmV0dXJuIHMucmVwbGFjZSgiPiIsICImZ3Q7IiwpCiAKICMgdXNlZCBpbiBVc2VyLUFnZW50IGhlYWRlciBzZW50Ci1fX3ZlcnNpb25fXyA9IHN5cy52ZXJzaW9uWzozXQorX192ZXJzaW9uX18gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIAogIyB4bWxycGMgaW50ZWdlciBsaW1pdHMKIE1BWElOVCA9ICAyKiozMS0xCkBAIC02NjcsNiArNjY4LDggQEAKIAogICAgIGRlZiBzdGFydChzZWxmLCB0YWcsIGF0dHJzKToKICAgICAgICAgIyBwcmVwYXJlIHRvIGhhbmRsZSB0aGlzIGVsZW1lbnQKKyAgICAgICAgaWYgJzonIGluIHRhZzoKKyAgICAgICAgICAgIHRhZyA9IHRhZy5zcGxpdCgnOicpWy0xXQogICAgICAgICBpZiB0YWcgPT0gImFycmF5IiBvciB0YWcgPT0gInN0cnVjdCI6CiAgICAgICAgICAgICBzZWxmLl9tYXJrcy5hcHBlbmQobGVuKHNlbGYuX3N0YWNrKSkKICAgICAgICAgc2VsZi5fZGF0YSA9IFtdCkBAIC02ODIsOSArNjg1LDEzIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZ10KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcyAjIHVua25vd24gdGFnID8KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBmKHNlbGYsICIiLmpvaW4oc2VsZi5fZGF0YSkpCisgICAgICAgICAgICBpZiAnOicgbm90IGluIHRhZzoKKyAgICAgICAgICAgICAgICByZXR1cm4gIyB1bmtub3duIHRhZyA/CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbdGFnLnNwbGl0KCc6JylbLTFdXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KKyAgICAgICAgcmV0dXJuIGYoc2VsZiwgIiIuam9pbihzZWxmLl9kYXRhKSkKIAogICAgICMKICAgICAjIGFjY2VsZXJhdG9yIHN1cHBvcnQKQEAgLTY5NCw5ICs3MDEsMTMgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbdGFnXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzICMgdW5rbm93biB0YWcgPwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwgZGF0YSkKKyAgICAgICAgICAgIGlmICc6JyBub3QgaW4gdGFnOgorICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaFt0YWcuc3BsaXQoJzonKVstMV1dCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuICMgdW5rbm93biB0YWcgPworICAgICAgICByZXR1cm4gZihzZWxmLCBkYXRhKQogCiAgICAgIwogICAgICMgZWxlbWVudCBkZWNvZGVycwpAQCAtNzIxLDE0ICs3MzIsMjMgQEAKICAgICBkZWYgZW5kX2ludChzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5hcHBlbmQoaW50KGRhdGEpKQogICAgICAgICBzZWxmLl92YWx1ZSA9IDAKKyAgICBkaXNwYXRjaFsiaTEiXSA9IGVuZF9pbnQKKyAgICBkaXNwYXRjaFsiaTIiXSA9IGVuZF9pbnQKICAgICBkaXNwYXRjaFsiaTQiXSA9IGVuZF9pbnQKICAgICBkaXNwYXRjaFsiaTgiXSA9IGVuZF9pbnQKICAgICBkaXNwYXRjaFsiaW50Il0gPSBlbmRfaW50CisgICAgZGlzcGF0Y2hbImJpZ2ludGVnZXIiXSA9IGVuZF9pbnQKIAogICAgIGRlZiBlbmRfZG91YmxlKHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLmFwcGVuZChmbG9hdChkYXRhKSkKICAgICAgICAgc2VsZi5fdmFsdWUgPSAwCiAgICAgZGlzcGF0Y2hbImRvdWJsZSJdID0gZW5kX2RvdWJsZQorICAgIGRpc3BhdGNoWyJmbG9hdCJdID0gZW5kX2RvdWJsZQorCisgICAgZGVmIGVuZF9iaWdkZWNpbWFsKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmFwcGVuZChEZWNpbWFsKGRhdGEpKQorICAgICAgICBzZWxmLl92YWx1ZSA9IDAKKyAgICBkaXNwYXRjaFsiYmlnZGVjaW1hbCJdID0gZW5kX2JpZ2RlY2ltYWwKIAogICAgIGRlZiBlbmRfc3RyaW5nKHNlbGYsIGRhdGEpOgogICAgICAgICBpZiBzZWxmLl9lbmNvZGluZzoKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvc2VydmVyLnB5IGIvTGliL3htbHJwYy9zZXJ2ZXIucHkKaW5kZXggNzgxNzY5My4uODQ5YmZkZCAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9zZXJ2ZXIucHkKKysrIGIvTGliL3htbHJwYy9zZXJ2ZXIucHkKQEAgLTk3MSwxNiArOTcxLDE1IEBACiAgICAgICAgICAgICBkZWYgZ2V0Q3VycmVudFRpbWUoKToKICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKIAotICAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKEV4YW1wbGVTZXJ2aWNlKCksIGFsbG93X2RvdHRlZF9uYW1lcz1UcnVlKQotICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKLSAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQotICAgIHByaW50KCdJdCBpcyBhZHZpc2FibGUgdG8gcnVuIHRoaXMgZXhhbXBsZSBzZXJ2ZXIgd2l0aGluIGEgc2VjdXJlLCBjbG9zZWQgbmV0d29yay4nKQotICAgIHRyeToKLSAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCi0gICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQotICAgICAgICBzeXMuZXhpdCgwKQorICAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpIGFzIHNlcnZlcjoKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQorICAgICAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQorICAgICAgICBwcmludCgnSXQgaXMgYWR2aXNhYmxlIHRvIHJ1biB0aGlzIGV4YW1wbGUgc2VydmVyIHdpdGhpbiBhIHNlY3VyZSwgY2xvc2VkIG5ldHdvcmsuJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKKyAgICAgICAgICAgIHN5cy5leGl0KDApCmRpZmYgLS1naXQgYS9MaWIvemlwZmlsZS5weSBiL0xpYi96aXBmaWxlLnB5CmluZGV4IDU2YTI0NzkuLjdiYTRlNTkgMTAwNjQ0Ci0tLSBhL0xpYi96aXBmaWxlLnB5CisrKyBiL0xpYi96aXBmaWxlLnB5CkBAIC0zNzEsNyArMzcxLDcgQEAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlbW9kZT0lcicgJSBzdGF0LmZpbGVtb2RlKGhpKSkKICAgICAgICAgaWYgbG86CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZXh0ZXJuYWxfYXR0cj0lI3gnICUgbG8pCi0gICAgICAgIGlzZGlyID0gc2VsZi5maWxlbmFtZVstMTpdID09ICcvJworICAgICAgICBpc2RpciA9IHNlbGYuaXNfZGlyKCkKICAgICAgICAgaWYgbm90IGlzZGlyIG9yIHNlbGYuZmlsZV9zaXplOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGVfc2l6ZT0lcicgJSBzZWxmLmZpbGVfc2l6ZSkKICAgICAgICAgaWYgKChub3QgaXNkaXIgb3Igc2VsZi5jb21wcmVzc19zaXplKSBhbmQKQEAgLTQ0OSw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgIGVsaWYgbG4gPT0gMDoKICAgICAgICAgICAgICAgICAgICAgY291bnRzID0gKCkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNvcnJ1cHQgZXh0cmEgZmllbGQgJXMiJShsbiwpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBCYWRaaXBGaWxlKCJDb3JydXB0IGV4dHJhIGZpZWxkICUwNHggKHNpemU9JWQpIiAlICh0cCwgbG4pKQogCiAgICAgICAgICAgICAgICAgaWR4ID0gMAogCkBAIC00NjksNiArNDY5LDQyIEBACiAKICAgICAgICAgICAgIGV4dHJhID0gZXh0cmFbbG4rNDpdCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9maWxlKGNscywgZmlsZW5hbWUsIGFyY25hbWU9Tm9uZSk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBhcHByb3ByaWF0ZSBaaXBJbmZvIGZvciBhIGZpbGUgb24gdGhlIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgZmlsZW5hbWUgc2hvdWxkIGJlIHRoZSBwYXRoIHRvIGEgZmlsZSBvciBkaXJlY3Rvcnkgb24gdGhlIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgYXJjbmFtZSBpcyB0aGUgbmFtZSB3aGljaCBpdCB3aWxsIGhhdmUgd2l0aGluIHRoZSBhcmNoaXZlIChieSBkZWZhdWx0LAorICAgICAgICB0aGlzIHdpbGwgYmUgdGhlIHNhbWUgYXMgZmlsZW5hbWUsIGJ1dCB3aXRob3V0IGEgZHJpdmUgbGV0dGVyIGFuZCB3aXRoCisgICAgICAgIGxlYWRpbmcgcGF0aCBzZXBhcmF0b3JzIHJlbW92ZWQpLgorICAgICAgICAiIiIKKyAgICAgICAgc3QgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICBpc2RpciA9IHN0YXQuU19JU0RJUihzdC5zdF9tb2RlKQorICAgICAgICBtdGltZSA9IHRpbWUubG9jYWx0aW1lKHN0LnN0X210aW1lKQorICAgICAgICBkYXRlX3RpbWUgPSBtdGltZVswOjZdCisgICAgICAgICMgQ3JlYXRlIFppcEluZm8gaW5zdGFuY2UgdG8gc3RvcmUgZmlsZSBpbmZvcm1hdGlvbgorICAgICAgICBpZiBhcmNuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBhcmNuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgYXJjbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5zcGxpdGRyaXZlKGFyY25hbWUpWzFdKQorICAgICAgICB3aGlsZSBhcmNuYW1lWzBdIGluIChvcy5zZXAsIG9zLmFsdHNlcCk6CisgICAgICAgICAgICBhcmNuYW1lID0gYXJjbmFtZVsxOl0KKyAgICAgICAgaWYgaXNkaXI6CisgICAgICAgICAgICBhcmNuYW1lICs9ICcvJworICAgICAgICB6aW5mbyA9IGNscyhhcmNuYW1lLCBkYXRlX3RpbWUpCisgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgPSAoc3Quc3RfbW9kZSAmIDB4RkZGRikgPDwgMTYgICMgVW5peCBhdHRyaWJ1dGVzCisgICAgICAgIGlmIGlzZGlyOgorICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAorICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciB8PSAweDEwICAjIE1TLURPUyBkaXJlY3RvcnkgZmxhZworICAgICAgICBlbHNlOgorICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQorCisgICAgICAgIHJldHVybiB6aW5mbworCisgICAgZGVmIGlzX2RpcihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhpcyBhcmNoaXZlIG1lbWJlciBpcyBhIGRpcmVjdG9yeS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW5hbWVbLTFdID09ICcvJworCiAKIGNsYXNzIF9aaXBEZWNyeXB0ZXI6CiAgICAgIiIiQ2xhc3MgdG8gaGFuZGxlIGRlY3J5cHRpb24gb2YgZmlsZXMgc3RvcmVkIHdpdGhpbiBhIFpJUCBhcmNoaXZlLgpAQCAtNjE4LDcgKzY1NCw3IEBACiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgbHptYSBtb2R1bGUiKQogICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIlRoYXQgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiKQogCiAKIGRlZiBfZ2V0X2NvbXByZXNzb3IoY29tcHJlc3NfdHlwZSk6CkBAIC02NTEsMTQgKzY4NywxOSBAQAogCiAKIGNsYXNzIF9TaGFyZWRGaWxlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBwb3MsIGNsb3NlLCBsb2NrKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgcG9zLCBjbG9zZSwgbG9jaywgd3JpdGluZyk6CiAgICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCiAgICAgICAgIHNlbGYuX3BvcyA9IHBvcwogICAgICAgICBzZWxmLl9jbG9zZSA9IGNsb3NlCiAgICAgICAgIHNlbGYuX2xvY2sgPSBsb2NrCisgICAgICAgIHNlbGYuX3dyaXRpbmcgPSB3cml0aW5nCiAKICAgICBkZWYgcmVhZChzZWxmLCBuPS0xKToKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fd3JpdGluZygpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHJlYWQgZnJvbSB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgImlzIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgb24gaXQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgd3JpdGluZyBoYW5kbGUgYmVmb3JlIHRyeWluZyB0byByZWFkLiIpCiAgICAgICAgICAgICBzZWxmLl9maWxlLnNlZWsoc2VsZi5fcG9zKQogICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZChuKQogICAgICAgICAgICAgc2VsZi5fcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKQEAgLTcwMiw5ICs3NDMsNiBAQAogICAgICMgUmVhZCBmcm9tIGNvbXByZXNzZWQgZmlsZXMgaW4gNGsgYmxvY2tzLgogICAgIE1JTl9SRUFEX1NJWkUgPSA0MDk2CiAKLSAgICAjIFNlYXJjaCBmb3IgdW5pdmVyc2FsIG5ld2xpbmVzIG9yIGxpbmUgY2h1bmtzLgotICAgIFBBVFRFUk4gPSByZS5jb21waWxlKGJyJ14oP1A8Y2h1bms+W15cclxuXSspfCg/UDxuZXdsaW5lPlxufFxyXG4/KScpCi0KICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW9iaiwgbW9kZSwgemlwaW5mbywgZGVjcnlwdGVyPU5vbmUsCiAgICAgICAgICAgICAgICAgIGNsb3NlX2ZpbGVvYmo9RmFsc2UpOgogICAgICAgICBzZWxmLl9maWxlb2JqID0gZmlsZW9iagpAQCAtNzIxLDcgKzc1OSw2IEBACiAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAogCi0gICAgICAgIHNlbGYuX3VuaXZlcnNhbCA9ICdVJyBpbiBtb2RlCiAgICAgICAgIHNlbGYubmV3bGluZXMgPSBOb25lCiAKICAgICAgICAgIyBBZGp1c3QgcmVhZCBzaXplIGZvciBlbmNyeXB0ZWQgZmlsZXMgc2luY2UgdGhlIGZpcnN0IDEyIGJ5dGVzCkBAIC03NTgsNyArNzk1LDcgQEAKICAgICAgICAgSWYgbGltaXQgaXMgc3BlY2lmaWVkLCBhdCBtb3N0IGxpbWl0IGJ5dGVzIHdpbGwgYmUgcmVhZC4KICAgICAgICAgIiIiCiAKLSAgICAgICAgaWYgbm90IHNlbGYuX3VuaXZlcnNhbCBhbmQgbGltaXQgPCAwOgorICAgICAgICBpZiBsaW1pdCA8IDA6CiAgICAgICAgICAgICAjIFNob3J0Y3V0IGNvbW1vbiBjYXNlIC0gbmV3bGluZSBmb3VuZCBpbiBidWZmZXIuCiAgICAgICAgICAgICBpID0gc2VsZi5fcmVhZGJ1ZmZlci5maW5kKGInXG4nLCBzZWxmLl9vZmZzZXQpICsgMQogICAgICAgICAgICAgaWYgaSA+IDA6CkBAIC03NjYsNDEgKzgwMyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gaQogICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCiAKLSAgICAgICAgaWYgbm90IHNlbGYuX3VuaXZlcnNhbDoKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBsaW1pdCkKLQotICAgICAgICBsaW5lID0gYicnCi0gICAgICAgIHdoaWxlIGxpbWl0IDwgMCBvciBsZW4obGluZSkgPCBsaW1pdDoKLSAgICAgICAgICAgIHJlYWRhaGVhZCA9IHNlbGYucGVlaygyKQotICAgICAgICAgICAgaWYgcmVhZGFoZWFkID09IGInJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIFNlYXJjaCBmb3IgdW5pdmVyc2FsIG5ld2xpbmVzIG9yIGxpbmUgY2h1bmtzLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBUaGUgcGF0dGVybiByZXR1cm5zIGVpdGhlciBhIGxpbmUgY2h1bmsgb3IgYSBuZXdsaW5lLCBidXQgbm90Ci0gICAgICAgICAgICAjIGJvdGguIENvbWJpbmVkIHdpdGggcGVlaygyKSwgd2UgYXJlIGFzc3VyZWQgdGhhdCB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICMgJ1xyXG4nIGlzIGFsd2F5cyByZXRyaWV2ZWQgY29tcGxldGVseSBhbmQgbmV2ZXIgc3BsaXQgaW50bwotICAgICAgICAgICAgIyBzZXBhcmF0ZSBuZXdsaW5lcyAtICdccicsICdcbicgZHVlIHRvIGNvaW5jaWRlbnRhbCByZWFkYWhlYWRzLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLlBBVFRFUk4uc2VhcmNoKHJlYWRhaGVhZCkKLSAgICAgICAgICAgIG5ld2xpbmUgPSBtYXRjaC5ncm91cCgnbmV3bGluZScpCi0gICAgICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNlbGYubmV3bGluZXMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXdsaW5lcyA9IFtdCi0gICAgICAgICAgICAgICAgaWYgbmV3bGluZSBub3QgaW4gc2VsZi5uZXdsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXdsaW5lcy5hcHBlbmQobmV3bGluZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgKz0gbGVuKG5ld2xpbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUgKyBiJ1xuJwotCi0gICAgICAgICAgICBjaHVuayA9IG1hdGNoLmdyb3VwKCdjaHVuaycpCi0gICAgICAgICAgICBpZiBsaW1pdCA+PSAwOgotICAgICAgICAgICAgICAgIGNodW5rID0gY2h1bmtbOiBsaW1pdCAtIGxlbihsaW5lKV0KLQotICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihjaHVuaykKLSAgICAgICAgICAgIGxpbmUgKz0gY2h1bmsKLQotICAgICAgICByZXR1cm4gbGluZQorICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmUoc2VsZiwgbGltaXQpCiAKICAgICBkZWYgcGVlayhzZWxmLCBuPTEpOgogICAgICAgICAiIiJSZXR1cm5zIGJ1ZmZlcmVkIGJ5dGVzIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBwb3NpdGlvbi4iIiIKQEAgLTk1OCw2ICs5NjEsNzYgQEAKICAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQogCiAKK2NsYXNzIF9aaXBXcml0ZUZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB6ZiwgemluZm8sIHppcDY0KToKKyAgICAgICAgc2VsZi5femluZm8gPSB6aW5mbworICAgICAgICBzZWxmLl96aXA2NCA9IHppcDY0CisgICAgICAgIHNlbGYuX3ppcGZpbGUgPSB6ZgorICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCisgICAgICAgIHNlbGYuX2ZpbGVfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5fY3JjID0gMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9maWxlb2JqKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5femlwZmlsZS5mcAorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBuYnl0ZXMgPSBsZW4oZGF0YSkKKyAgICAgICAgc2VsZi5fZmlsZV9zaXplICs9IG5ieXRlcworICAgICAgICBzZWxmLl9jcmMgPSBjcmMzMihkYXRhLCBzZWxmLl9jcmMpCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzb3I6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fY29tcHJlc3Nvci5jb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSArPSBsZW4oZGF0YSkKKyAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShkYXRhKQorICAgICAgICByZXR1cm4gbmJ5dGVzCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHN1cGVyKCkuY2xvc2UoKQorICAgICAgICAjIEZsdXNoIGFueSBkYXRhIGZyb20gdGhlIGNvbXByZXNzb3IsIGFuZCB1cGRhdGUgaGVhZGVyIGluZm8KKyAgICAgICAgaWYgc2VsZi5fY29tcHJlc3NvcjoKKyAgICAgICAgICAgIGJ1ZiA9IHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSArPSBsZW4oYnVmKQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShidWYpCisgICAgICAgICAgICBzZWxmLl96aW5mby5jb21wcmVzc19zaXplID0gc2VsZi5fY29tcHJlc3Nfc2l6ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5femluZm8uY29tcHJlc3Nfc2l6ZSA9IHNlbGYuX2ZpbGVfc2l6ZQorICAgICAgICBzZWxmLl96aW5mby5DUkMgPSBzZWxmLl9jcmMKKyAgICAgICAgc2VsZi5femluZm8uZmlsZV9zaXplID0gc2VsZi5fZmlsZV9zaXplCisKKyAgICAgICAgIyBXcml0ZSB1cGRhdGVkIGhlYWRlciBpbmZvCisgICAgICAgIGlmIHNlbGYuX3ppbmZvLmZsYWdfYml0cyAmIDB4MDg6CisgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCisgICAgICAgICAgICBmbXQgPSAnPExRUScgaWYgc2VsZi5femlwNjQgZWxzZSAnPExMTCcKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoc3RydWN0LnBhY2soZm10LCBzZWxmLl96aW5mby5DUkMsCisgICAgICAgICAgICAgICAgc2VsZi5femluZm8uY29tcHJlc3Nfc2l6ZSwgc2VsZi5femluZm8uZmlsZV9zaXplKSkKKyAgICAgICAgICAgIHNlbGYuX3ppcGZpbGUuc3RhcnRfZGlyID0gc2VsZi5fZmlsZW9iai50ZWxsKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl96aXA2NDoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9maWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGaWxlIHNpemUgdW5leHBlY3RlZGx5IGV4Y2VlZGVkIFpJUDY0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW1pdCcpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvbXByZXNzZWQgc2l6ZSB1bmV4cGVjdGVkbHkgZXhjZWVkZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1pJUDY0IGxpbWl0JykKKyAgICAgICAgICAgICMgU2VlayBiYWNrd2FyZHMgYW5kIHdyaXRlIGZpbGUgaGVhZGVyICh3aGljaCB3aWxsIG5vdyBpbmNsdWRlCisgICAgICAgICAgICAjIGNvcnJlY3QgQ1JDIGFuZCBmaWxlIHNpemVzKQorCisgICAgICAgICAgICAjIFByZXNlcnZlIGN1cnJlbnQgcG9zaXRpb24gaW4gZmlsZQorICAgICAgICAgICAgc2VsZi5femlwZmlsZS5zdGFydF9kaXIgPSBzZWxmLl9maWxlb2JqLnRlbGwoKQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai5zZWVrKHNlbGYuX3ppbmZvLmhlYWRlcl9vZmZzZXQpCisgICAgICAgICAgICBzZWxmLl9maWxlb2JqLndyaXRlKHNlbGYuX3ppbmZvLkZpbGVIZWFkZXIoc2VsZi5femlwNjQpKQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai5zZWVrKHNlbGYuX3ppcGZpbGUuc3RhcnRfZGlyKQorCisgICAgICAgIHNlbGYuX3ppcGZpbGUuX3dyaXRpbmcgPSBGYWxzZQorCisgICAgICAgICMgU3VjY2Vzc2Z1bGx5IHdyaXR0ZW46IEFkZCBmaWxlIHRvIG91ciBjYWNoZXMKKyAgICAgICAgc2VsZi5femlwZmlsZS5maWxlbGlzdC5hcHBlbmQoc2VsZi5femluZm8pCisgICAgICAgIHNlbGYuX3ppcGZpbGUuTmFtZVRvSW5mb1tzZWxmLl96aW5mby5maWxlbmFtZV0gPSBzZWxmLl96aW5mbworCiBjbGFzcyBaaXBGaWxlOgogICAgICIiIiBDbGFzcyB3aXRoIG1ldGhvZHMgdG8gb3BlbiwgcmVhZCwgd3JpdGUsIGNsb3NlLCBsaXN0IHppcCBmaWxlcy4KIApAQCAtOTgyLDcgKzEwNTUsNyBAQAogICAgICAgICAiIiJPcGVuIHRoZSBaSVAgZmlsZSB3aXRoIG1vZGUgcmVhZCAncicsIHdyaXRlICd3JywgZXhjbHVzaXZlIGNyZWF0ZSAneCcsCiAgICAgICAgIG9yIGFwcGVuZCAnYScuIiIiCiAgICAgICAgIGlmIG1vZGUgbm90IGluICgncicsICd3JywgJ3gnLCAnYScpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJaaXBGaWxlIHJlcXVpcmVzIG1vZGUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlppcEZpbGUgcmVxdWlyZXMgbW9kZSAncicsICd3JywgJ3gnLCBvciAnYSciKQogCiAgICAgICAgIF9jaGVja19jb21wcmVzc2lvbihjb21wcmVzc2lvbikKIApAQCAtMTAyMCw2ICsxMDkzLDcgQEAKICAgICAgICAgc2VsZi5fZmlsZVJlZkNudCA9IDEKICAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5STG9jaygpCiAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gVHJ1ZQorICAgICAgICBzZWxmLl93cml0aW5nID0gRmFsc2UKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBtb2RlID09ICdyJzoKQEAgLTEwNTUsNyArMTEyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIk1vZGUgbXVzdCBiZSAncicsICd3JywgJ3gnLCBvciAnYSciKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1vZGUgbXVzdCBiZSAncicsICd3JywgJ3gnLCBvciAnYSciKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBmcCA9IHNlbGYuZnAKICAgICAgICAgICAgIHNlbGYuZnAgPSBOb25lCkBAIC0xMjAzLDcgKzEyNzcsNyBAQAogICAgIGRlZiBzZXRwYXNzd29yZChzZWxmLCBwd2QpOgogICAgICAgICAiIiJTZXQgZGVmYXVsdCBwYXNzd29yZCBmb3IgZW5jcnlwdGVkIGZpbGVzLiIiIgogICAgICAgICBpZiBwd2QgYW5kIG5vdCBpc2luc3RhbmNlKHB3ZCwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpLl9fbmFtZV9fKQogICAgICAgICBpZiBwd2Q6CiAgICAgICAgICAgICBzZWxmLnB3ZCA9IHB3ZAogICAgICAgICBlbHNlOgpAQCAtMTIxNyw3ICsxMjkxLDcgQEAKICAgICBAY29tbWVudC5zZXR0ZXIKICAgICBkZWYgY29tbWVudChzZWxmLCBjb21tZW50KToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWVudCwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjb21tZW50OiBleHBlY3RlZCBieXRlcywgZ290ICVzIiAlIHR5cGUoY29tbWVudCkpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNvbW1lbnQ6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShjb21tZW50KS5fX25hbWVfXykKICAgICAgICAgIyBjaGVjayBmb3IgdmFsaWQgY29tbWVudCBsZW5ndGgKICAgICAgICAgaWYgbGVuKGNvbW1lbnQpID4gWklQX01BWF9DT01NRU5UOgogICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCkBAIC0xMjMyLDMwICsxMzA2LDU1IEBACiAgICAgICAgIHdpdGggc2VsZi5vcGVuKG5hbWUsICJyIiwgcHdkKSBhcyBmcDoKICAgICAgICAgICAgIHJldHVybiBmcC5yZWFkKCkKIAotICAgIGRlZiBvcGVuKHNlbGYsIG5hbWUsIG1vZGU9InIiLCBwd2Q9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBmaWxlLWxpa2Ugb2JqZWN0IGZvciAnbmFtZScuIiIiCi0gICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJVIiwgInJVIik6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ29wZW4oKSByZXF1aXJlcyBtb2RlICJyIiwgIlUiLCBvciAiclUiJykKLSAgICAgICAgaWYgJ1UnIGluIG1vZGU6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIidVJyBtb2RlIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgZGVmIG9wZW4oc2VsZiwgbmFtZSwgbW9kZT0iciIsIHB3ZD1Ob25lLCAqLCBmb3JjZV96aXA2ND1GYWxzZSk6CisgICAgICAgICIiIlJldHVybiBmaWxlLWxpa2Ugb2JqZWN0IGZvciAnbmFtZScuCisKKyAgICAgICAgbmFtZSBpcyBhIHN0cmluZyBmb3IgdGhlIGZpbGUgbmFtZSB3aXRoaW4gdGhlIFpJUCBmaWxlLCBvciBhIFppcEluZm8KKyAgICAgICAgb2JqZWN0LgorCisgICAgICAgIG1vZGUgc2hvdWxkIGJlICdyJyB0byByZWFkIGEgZmlsZSBhbHJlYWR5IGluIHRoZSBaSVAgZmlsZSwgb3IgJ3cnIHRvCisgICAgICAgIHdyaXRlIHRvIGEgZmlsZSBuZXdseSBhZGRlZCB0byB0aGUgYXJjaGl2ZS4KKworICAgICAgICBwd2QgaXMgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgZmlsZXMgKG9ubHkgdXNlZCBmb3IgcmVhZGluZykuCisKKyAgICAgICAgV2hlbiB3cml0aW5nLCBpZiB0aGUgZmlsZSBzaXplIGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIGJ1dCBtYXkgZXhjZWVkCisgICAgICAgIDIgR2lCLCBwYXNzIGZvcmNlX3ppcDY0IHRvIHVzZSB0aGUgWklQNjQgZm9ybWF0LCB3aGljaCBjYW4gaGFuZGxlIGxhcmdlCisgICAgICAgIGZpbGVzLiAgSWYgdGhlIHNpemUgaXMga25vd24gaW4gYWR2YW5jZSwgaXQgaXMgYmVzdCB0byBwYXNzIGEgWmlwSW5mbworICAgICAgICBpbnN0YW5jZSBmb3IgbmFtZSwgd2l0aCB6aW5mby5maWxlX3NpemUgc2V0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbW9kZSBub3QgaW4geyJyIiwgIncifToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ29wZW4oKSByZXF1aXJlcyBtb2RlICJyIiBvciAidyInKQogICAgICAgICBpZiBwd2QgYW5kIG5vdCBpc2luc3RhbmNlKHB3ZCwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpLl9fbmFtZV9fKQorICAgICAgICBpZiBwd2QgYW5kIChtb2RlID09ICJ3Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwd2QgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHJlYWRpbmcgZmlsZXMiKQogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKLSAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byByZWFkIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gdXNlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKIAogICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGluZm8gb2JqZWN0CiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgWmlwSW5mbyk6CiAgICAgICAgICAgICAjICduYW1lJyBpcyBhbHJlYWR5IGFuIGluZm8gb2JqZWN0CiAgICAgICAgICAgICB6aW5mbyA9IG5hbWUKKyAgICAgICAgZWxpZiBtb2RlID09ICd3JzoKKyAgICAgICAgICAgIHppbmZvID0gWmlwSW5mbyhuYW1lKQorICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IHNlbGYuY29tcHJlc3Npb24KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgR2V0IGluZm8gb2JqZWN0IGZvciBuYW1lCiAgICAgICAgICAgICB6aW5mbyA9IHNlbGYuZ2V0aW5mbyhuYW1lKQogCisgICAgICAgIGlmIG1vZGUgPT0gJ3cnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29wZW5fdG9fd3JpdGUoemluZm8sIGZvcmNlX3ppcDY0PWZvcmNlX3ppcDY0KQorCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZWFkIGZyb20gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlICIKKyAgICAgICAgICAgICAgICAgICAgImlzIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgb24gaXQuICIKKyAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSB3cml0aW5nIGhhbmRsZSBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQuIikKKworICAgICAgICAjIE9wZW4gZm9yIHJlYWRpbmc6CiAgICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgKz0gMQotICAgICAgICB6ZWZfZmlsZSA9IF9TaGFyZWRGaWxlKHNlbGYuZnAsIHppbmZvLmhlYWRlcl9vZmZzZXQsIHNlbGYuX2ZwY2xvc2UsIHNlbGYuX2xvY2spCisgICAgICAgIHplZl9maWxlID0gX1NoYXJlZEZpbGUoc2VsZi5mcCwgemluZm8uaGVhZGVyX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcGNsb3NlLCBzZWxmLl9sb2NrLCBsYW1iZGE6IHNlbGYuX3dyaXRpbmcpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgU2tpcCB0aGUgZmlsZSBoZWFkZXI6CiAgICAgICAgICAgICBmaGVhZGVyID0gemVmX2ZpbGUucmVhZChzaXplRmlsZUhlYWRlcikKQEAgLTEyOTUsNyArMTM5NCw3IEBACiAgICAgICAgICAgICAgICAgaWYgbm90IHB3ZDoKICAgICAgICAgICAgICAgICAgICAgcHdkID0gc2VsZi5wd2QKICAgICAgICAgICAgICAgICBpZiBub3QgcHdkOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkZpbGUgJXMgaXMgZW5jcnlwdGVkLCBwYXNzd29yZCAiCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiRmlsZSAlciBpcyBlbmNyeXB0ZWQsIHBhc3N3b3JkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCBmb3IgZXh0cmFjdGlvbiIgJSBuYW1lKQogCiAgICAgICAgICAgICAgICAgemQgPSBfWmlwRGVjcnlwdGVyKHB3ZCkKQEAgLTEzMTMsMTMgKzE0MTIsNTYgQEAKICAgICAgICAgICAgICAgICAgICAgIyBjb21wYXJlIGFnYWluc3QgdGhlIENSQyBvdGhlcndpc2UKICAgICAgICAgICAgICAgICAgICAgY2hlY2tfYnl0ZSA9ICh6aW5mby5DUkMgPj4gMjQpICYgMHhmZgogICAgICAgICAgICAgICAgIGlmIGhbMTFdICE9IGNoZWNrX2J5dGU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQmFkIHBhc3N3b3JkIGZvciBmaWxlIiwgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJCYWQgcGFzc3dvcmQgZm9yIGZpbGUgJXIiICUgbmFtZSkKIAogICAgICAgICAgICAgcmV0dXJuIFppcEV4dEZpbGUoemVmX2ZpbGUsIG1vZGUsIHppbmZvLCB6ZCwgVHJ1ZSkKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgemVmX2ZpbGUuY2xvc2UoKQogICAgICAgICAgICAgcmFpc2UKIAorICAgIGRlZiBfb3Blbl90b193cml0ZShzZWxmLCB6aW5mbywgZm9yY2VfemlwNjQ9RmFsc2UpOgorICAgICAgICBpZiBmb3JjZV96aXA2NCBhbmQgbm90IHNlbGYuX2FsbG93WmlwNjQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJmb3JjZV96aXA2NCBpcyBUcnVlLCBidXQgYWxsb3daaXA2NCB3YXMgRmFsc2Ugd2hlbiBvcGVuaW5nICIKKyAgICAgICAgICAgICAgICAidGhlIFpJUCBmaWxlLiIKKyAgICAgICAgICAgICkKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHdyaXRlIHRvIHRoZSBaSVAgZmlsZSB3aGlsZSB0aGVyZSBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbm90aGVyIHdyaXRlIGhhbmRsZSBvcGVuIG9uIGl0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgZmlyc3QgaGFuZGxlIGJlZm9yZSBvcGVuaW5nIGFub3RoZXIuIikKKworICAgICAgICAjIFNpemVzIGFuZCBDUkMgYXJlIG92ZXJ3cml0dGVuIHdpdGggY29ycmVjdCBkYXRhIGFmdGVyIHByb2Nlc3NpbmcgdGhlIGZpbGUKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoemluZm8sICdmaWxlX3NpemUnKToKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKKyAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKKyAgICAgICAgemluZm8uQ1JDID0gMAorCisgICAgICAgIHppbmZvLmZsYWdfYml0cyA9IDB4MDAKKyAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgorICAgICAgICBpZiBub3Qgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwOAorCisgICAgICAgIGlmIG5vdCB6aW5mby5leHRlcm5hbF9hdHRyOgorICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciA9IDBvNjAwIDw8IDE2ICAjIHBlcm1pc3Npb25zOiA/cnctLS0tLS0tCisKKyAgICAgICAgIyBDb21wcmVzc2VkIHNpemUgY2FuIGJlIGxhcmdlciB0aGFuIHVuY29tcHJlc3NlZCBzaXplCisgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAorICAgICAgICAgICAgICAgIChmb3JjZV96aXA2NCBvciB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQpCisKKyAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKQorCisgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCisgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKKworICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQorCisgICAgICAgIHNlbGYuX3dyaXRpbmcgPSBUcnVlCisgICAgICAgIHJldHVybiBfWmlwV3JpdGVGaWxlKHNlbGYsIHppbmZvLCB6aXA2NCkKKwogICAgIGRlZiBleHRyYWN0KHNlbGYsIG1lbWJlciwgcGF0aD1Ob25lLCBwd2Q9Tm9uZSk6CiAgICAgICAgICIiIkV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwKICAgICAgICAgICAgdXNpbmcgaXRzIGZ1bGwgbmFtZS4gSXRzIGZpbGUgaW5mb3JtYXRpb24gaXMgZXh0cmFjdGVkIGFzIGFjY3VyYXRlbHkKQEAgLTEzODksNyArMTUzMSw3IEBACiAgICAgICAgIGlmIHVwcGVyZGlycyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVwcGVyZGlycyk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyh1cHBlcmRpcnMpCiAKLSAgICAgICAgaWYgbWVtYmVyLmZpbGVuYW1lWy0xXSA9PSAnLyc6CisgICAgICAgIGlmIG1lbWJlci5pc19kaXIoKToKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHRhcmdldHBhdGgpOgogICAgICAgICAgICAgICAgIG9zLm1rZGlyKHRhcmdldHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0cGF0aApAQCAtMTQwNiw5ICsxNTQ4LDkgQEAKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybignRHVwbGljYXRlIG5hbWU6ICVyJyAlIHppbmZvLmZpbGVuYW1lLCBzdGFja2xldmVsPTMpCiAgICAgICAgIGlmIHNlbGYubW9kZSBub3QgaW4gKCd3JywgJ3gnLCAnYScpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ3cml0ZSgpIHJlcXVpcmVzIG1vZGUgJ3cnLCAneCcsIG9yICdhJyIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3cml0ZSgpIHJlcXVpcmVzIG1vZGUgJ3cnLCAneCcsIG9yICdhJyIpCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCiAgICAgICAgIF9jaGVja19jb21wcmVzc2lvbih6aW5mby5jb21wcmVzc190eXBlKQogICAgICAgICBpZiBub3Qgc2VsZi5fYWxsb3daaXA2NDoKQEAgLTE0MjcsMTA1ICsxNTY5LDQzIEBACiAgICAgICAgICIiIlB1dCB0aGUgYnl0ZXMgZnJvbSBmaWxlbmFtZSBpbnRvIHRoZSBhcmNoaXZlIHVuZGVyIHRoZSBuYW1lCiAgICAgICAgIGFyY25hbWUuIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSB0byBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJDYW4ndCB3cml0ZSB0byBaSVAgYXJjaGl2ZSB3aGlsZSBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIGV4aXN0cyIKKyAgICAgICAgICAgICkKIAotICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZW5hbWUpCi0gICAgICAgIGlzZGlyID0gc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpCi0gICAgICAgIG10aW1lID0gdGltZS5sb2NhbHRpbWUoc3Quc3RfbXRpbWUpCi0gICAgICAgIGRhdGVfdGltZSA9IG10aW1lWzA6Nl0KLSAgICAgICAgIyBDcmVhdGUgWmlwSW5mbyBpbnN0YW5jZSB0byBzdG9yZSBmaWxlIGluZm9ybWF0aW9uCi0gICAgICAgIGlmIGFyY25hbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlbmFtZQotICAgICAgICBhcmNuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLnNwbGl0ZHJpdmUoYXJjbmFtZSlbMV0pCi0gICAgICAgIHdoaWxlIGFyY25hbWVbMF0gaW4gKG9zLnNlcCwgb3MuYWx0c2VwKToKLSAgICAgICAgICAgIGFyY25hbWUgPSBhcmNuYW1lWzE6XQotICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgIGFyY25hbWUgKz0gJy8nCi0gICAgICAgIHppbmZvID0gWmlwSW5mbyhhcmNuYW1lLCBkYXRlX3RpbWUpCi0gICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgPSAoc3RbMF0gJiAweEZGRkYpIDw8IDE2ICAgICAgIyBVbml4IGF0dHJpYnV0ZXMKLSAgICAgICAgaWYgaXNkaXI6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gWklQX1NUT1JFRAotICAgICAgICBlbGlmIGNvbXByZXNzX3R5cGUgaXMgTm9uZToKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBzZWxmLmNvbXByZXNzaW9uCisgICAgICAgIHppbmZvID0gWmlwSW5mby5mcm9tX2ZpbGUoZmlsZW5hbWUsIGFyY25hbWUpCisKKyAgICAgICAgaWYgemluZm8uaXNfZGlyKCk6CisgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gMAorICAgICAgICAgICAgemluZm8uQ1JDID0gMAogICAgICAgICBlbHNlOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IHNlbGYuY29tcHJlc3Npb24KIAotICAgICAgICB6aW5mby5maWxlX3NpemUgPSBzdC5zdF9zaXplCi0gICAgICAgIHppbmZvLmZsYWdfYml0cyA9IDB4MDAKLSAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgotICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQotICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGJ5dGVzCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICBpZiB6aW5mby5pc19kaXIoKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQorICAgICAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKKyAgICAgICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgogICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCi0gICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKKyAgICAgICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKIAotICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQorICAgICAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKIAotICAgICAgICAgICAgaWYgaXNkaXI6Ci0gICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCi0gICAgICAgICAgICAgICAgemluZm8uQ1JDID0gMAotICAgICAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgfD0gMHgxMCAgIyBNUy1ET1MgZGlyZWN0b3J5IGZsYWcKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKICAgICAgICAgICAgICAgICBzZWxmLk5hbWVUb0luZm9bemluZm8uZmlsZW5hbWVdID0gemluZm8KICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoRmFsc2UpKQogICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgY21wciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NlZWthYmxlOgotICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDA4Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgotICAgICAgICAgICAgICAgICMgTXVzdCBvdmVyd3JpdGUgQ1JDIGFuZCBzaXplcyB3aXRoIGNvcnJlY3QgZGF0YSBsYXRlcgotICAgICAgICAgICAgICAgIHppbmZvLkNSQyA9IENSQyA9IDAKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSA9IDAKLSAgICAgICAgICAgICAgICAjIENvbXByZXNzZWQgc2l6ZSBjYW4gYmUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUKLSAgICAgICAgICAgICAgICB6aXA2NCA9IHNlbGYuX2FsbG93WmlwNjQgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplICogMS4wNSA+IFpJUDY0X0xJTUlUCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSAwCi0gICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZCgxMDI0ICogOCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IGZpbGVfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgICAgIENSQyA9IGNyYzMyKGJ1ZiwgQ1JDKQotICAgICAgICAgICAgICAgICAgICBpZiBjbXByOgotICAgICAgICAgICAgICAgICAgICAgICAgYnVmID0gY21wci5jb21wcmVzcyhidWYpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoYnVmKQotICAgICAgICAgICAgaWYgY21wcjoKLSAgICAgICAgICAgICAgICBidWYgPSBjbXByLmZsdXNoKCkKLSAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGZpbGVfc2l6ZQotICAgICAgICAgICAgemluZm8uQ1JDID0gQ1JDCi0gICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSBmaWxlX3NpemUKLSAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MDg6Ci0gICAgICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQotICAgICAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiB6aXA2NCBlbHNlICc8TExMJwotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc3RydWN0LnBhY2soZm10LCB6aW5mby5DUkMsIHppbmZvLmNvbXByZXNzX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQotICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHppcDY0IGFuZCBzZWxmLl9hbGxvd1ppcDY0OgotICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmlsZSBzaXplIGhhcyBpbmNyZWFzZWQgZHVyaW5nIGNvbXByZXNzaW5nJykKLSAgICAgICAgICAgICAgICAgICAgaWYgY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDb21wcmVzc2VkIHNpemUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUnKQotICAgICAgICAgICAgICAgICMgU2VlayBiYWNrd2FyZHMgYW5kIHdyaXRlIGZpbGUgaGVhZGVyICh3aGljaCB3aWxsIG5vdyBpbmNsdWRlCi0gICAgICAgICAgICAgICAgIyBjb3JyZWN0IENSQyBhbmQgZmlsZSBzaXplcykKLSAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpICMgUHJlc2VydmUgY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlCi0gICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHppbmZvLmhlYWRlcl9vZmZzZXQpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCi0gICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbworICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBzcmMsIHNlbGYub3Blbih6aW5mbywgJ3cnKSBhcyBkZXN0OgorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihzcmMsIGRlc3QsIDEwMjQqOCkKIAogICAgIGRlZiB3cml0ZXN0cihzZWxmLCB6aW5mb19vcl9hcmNuYW1lLCBkYXRhLCBjb21wcmVzc190eXBlPU5vbmUpOgogICAgICAgICAiIiJXcml0ZSBhIGZpbGUgaW50byB0aGUgYXJjaGl2ZS4gIFRoZSBjb250ZW50cyBpcyAnZGF0YScsIHdoaWNoCkBAIC0xNTQ4LDQ3ICsxNjI4LDIwIEBACiAgICAgICAgICAgICB6aW5mbyA9IHppbmZvX29yX2FyY25hbWUKIAogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gd3JpdGUgdG8gWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQorICAgICAgICBpZiBzZWxmLl93cml0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAiQ2FuJ3Qgd3JpdGUgdG8gWklQIGFyY2hpdmUgd2hpbGUgYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBleGlzdHMuIgorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQogCiAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGxlbihkYXRhKSAgICAgICAgICAgICMgVW5jb21wcmVzc2VkIHNpemUKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgotICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQotICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKLSAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKLSAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBkYXRhCi0gICAgICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgotICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCi0gICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKLQotICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKLSAgICAgICAgICAgIHppbmZvLkNSQyA9IGNyYzMyKGRhdGEpICAgICAgICMgQ1JDLTMyIGNoZWNrc3VtCi0gICAgICAgICAgICBjbyA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQotICAgICAgICAgICAgaWYgY286Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGNvLmNvbXByZXNzKGRhdGEpICsgY28uZmx1c2goKQotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBsZW4oZGF0YSkgICAgIyBDb21wcmVzc2VkIHNpemUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmZpbGVfc2l6ZQotICAgICAgICAgICAgemlwNjQgPSB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVCBvciBcCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUCi0gICAgICAgICAgICBpZiB6aXA2NCBhbmQgbm90IHNlbGYuX2FsbG93WmlwNjQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKCJGaWxlc2l6ZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQotICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZGF0YSkKLSAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MDg6Ci0gICAgICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQotICAgICAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiB6aXA2NCBlbHNlICc8TExMJwotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc3RydWN0LnBhY2soZm10LCB6aW5mby5DUkMsIHppbmZvLmNvbXByZXNzX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQotICAgICAgICAgICAgc2VsZi5mcC5mbHVzaCgpCi0gICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCi0gICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbworICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4oemluZm8sIG1vZGU9J3cnKSBhcyBkZXN0OgorICAgICAgICAgICAgICAgIGRlc3Qud3JpdGUoZGF0YSkKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAiIiJDYWxsIHRoZSAiY2xvc2UoKSIgbWV0aG9kIGluIGNhc2UgdGhlIHVzZXIgZm9yZ290LiIiIgpAQCAtMTYwMCw2ICsxNjUzLDExIEBACiAgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCBjbG9zZSB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBvbiBpdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xvc2UgdGhlIHdyaXRpbmcgaGFuZGxlIGJlZm9yZSBjbG9zaW5nIHRoZSB6aXAuIikKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBzZWxmLm1vZGUgaW4gKCd3JywgJ3gnLCAnYScpIGFuZCBzZWxmLl9kaWRNb2RpZnk6ICMgd3JpdGUgZW5kaW5nIHJlY29yZHMKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CkBAIC0xNzQ1LDcgKzE4MDMsNyBAQAogICAgICAgICBpZiBmaWx0ZXJmdW5jIGFuZCBub3QgZmlsdGVyZnVuYyhwYXRobmFtZSk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgogICAgICAgICAgICAgICAgIGxhYmVsID0gJ3BhdGgnIGlmIG9zLnBhdGguaXNkaXIocGF0aG5hbWUpIGVsc2UgJ2ZpbGUnCi0gICAgICAgICAgICAgICAgcHJpbnQoJyVzICIlcyIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIChsYWJlbCwgcGF0aG5hbWUpKQorICAgICAgICAgICAgICAgIHByaW50KCclcyAlciBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgKGxhYmVsLCBwYXRobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZGlyLCBuYW1lID0gb3MucGF0aC5zcGxpdChwYXRobmFtZSkKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRobmFtZSk6CkBAIC0xNzc2LDcgKzE4MzQsNyBAQAogICAgICAgICAgICAgICAgICAgICBlbGlmIGV4dCA9PSAiLnB5IjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbHRlcmZ1bmMgYW5kIG5vdCBmaWx0ZXJmdW5jKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICIlcyIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICVyIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSBwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSwgYXJjbmFtZSA9IHNlbGYuX2dldF9jb2RlbmFtZShwYXRoWzA6LTNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZW5hbWUpCkBAIC0xNzkzLDcgKzE4NTEsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiBleHQgPT0gIi5weSI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWx0ZXJmdW5jIGFuZCBub3QgZmlsdGVyZnVuYyhwYXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnZmlsZSAiJXMiIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnZmlsZSAlciBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUsIGFyY25hbWUgPSBzZWxmLl9nZXRfY29kZW5hbWUocGF0aFswOi0zXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VuYW1lKQpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weSBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKaW5kZXggZDA5ZGEyZi4uZTk4M2Y1NCAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQorKysgYi9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CkBAIC0xMDEsNiArMTAxLDcgQEAKIAogRldfUFJFRklYID0gWyJMaWJyYXJ5IiwgIkZyYW1ld29ya3MiLCAiUHl0aG9uLmZyYW1ld29yayJdCiBGV19WRVJTSU9OX1BSRUZJWCA9ICItLXVuZGVmaW5lZC0tIiAjIGluaXRpYWxpemVkIGluIHBhcnNlT3B0aW9ucworRldfU1NMX0RJUkVDVE9SWSA9ICItLXVuZGVmaW5lZC0tIiAjIGluaXRpYWxpemVkIGluIHBhcnNlT3B0aW9ucwogCiAjIFRoZSBkaXJlY3Rvcnkgd2UnbGwgdXNlIHRvIGNyZWF0ZSB0aGUgYnVpbGQgKHdpbGwgYmUgZXJhc2VkIGFuZCByZWNyZWF0ZWQpCiBXT1JLRElSID0gIi90bXAvX3B5IgpAQCAtMjA2LDQxICsyMDcsMTEgQEAKIAogICAgIExUXzEwXzUgPSBib29sKGdldERlcHRhcmdldFR1cGxlKCkgPCAoMTAsIDUpKQogCi0gICAgaWYgbm90ICgxMCwgNSkgPCBnZXREZXB0YXJnZXRUdXBsZSgpIDwgKDEwLCAxMCk6Ci0gICAgICAgICMgVGhlIE9wZW5TU0wgbGlicyBzaGlwcGVkIHdpdGggT1MgWCAxMC41IGFuZCBlYXJsaWVyIGFyZQotICAgICAgICAjIGhvcGVsZXNzbHkgb3V0LW9mLWRhdGUgYW5kIGRvIG5vdCBpbmNsdWRlIEFwcGxlJ3MgdGllLWluIHRvCi0gICAgICAgICMgdGhlIHJvb3QgY2VydGlmaWNhdGVzIGluIHRoZSB1c2VyIGFuZCBzeXN0ZW0ga2V5Y2hhaW5zIHZpYSBURUEKLSAgICAgICAgIyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIE9TIFggMTAuNi4gIE5vdGUgdGhhdCB0aGlzIGFwcGxpZXMgdG8KLSAgICAgICAgIyBwcm9ncmFtcyBidWlsdCBhbmQgbGlua2VkIHdpdGggYSAxMC41IFNESyBldmVuIHdoZW4gcnVuIG9uCi0gICAgICAgICMgbmV3ZXIgdmVyc2lvbnMgb2YgT1MgWC4KLSAgICAgICAgIwotICAgICAgICAjIERlYWxpbmcgd2l0aCBDQXMgaXMgbWVzc3kuICBGb3Igbm93LCBqdXN0IHN1cHBseSBhCi0gICAgICAgICMgbG9jYWwgbGlic3NsIGFuZCBsaWJjcnlwdG8gZm9yIHRoZSBvbGRlciBpbnN0YWxsZXIgdmFyaWFudHMKLSAgICAgICAgIyAoZS5nLiB0aGUgcHl0aG9uLm9yZyAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIpIHRoYXQgdXNlIHRoZQotICAgICAgICAjIHNhbWUgZGVmYXVsdCBzc2wgY2VydGZpbGUgbG9jYXRpb24gYXMgdGhlIHN5c3RlbSBsaWJzIGRvOgotICAgICAgICAjICAgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wvY2VydC5wZW0KLSAgICAgICAgIyBUaGVuIGF0IGxlYXN0IFRMUyBjb25uZWN0aW9ucyBjYW4gYmUgbmVnb3RpYXRlZCB3aXRoIHNpdGVzIHRoYXQKLSAgICAgICAgIyB1c2Ugc2hhLTI1NiBjZXJ0cyBsaWtlIHB5dGhvbi5vcmcsIGFzc3VtaW5nIHRoZSBwcm9wZXIgQ0EgY2VydHMKLSAgICAgICAgIyBoYXZlIGJlZW4gc3VwcGxpZWQuICBUaGUgZGVmYXVsdCBDQSBjZXJ0IG1hbmFnZW1lbnQgaXNzdWVzIGZvcgotICAgICAgICAjIDEwLjUgYW5kIGVhcmxpZXIgYnVpbGRzIGFyZSB0aGUgc2FtZSBhcyBiZWZvcmUsIG90aGVyIHRoYW4gaXQgaXMKLSAgICAgICAgIyBub3cgbW9yZSBvYnZpb3VzIHdpdGggY2VydCBjaGVja2luZyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdGhlCi0gICAgICAgICMgc3RhbmRhcmQgbGlicmFyeS4KLSAgICAgICAgIwotICAgICAgICAjIEZvciBidWlsZHMgd2l0aCAxMC42IHRocm91Z2ggMTAuOSBTREtzLAotICAgICAgICAjIGNvbnRpbnVlIHRvIHVzZSB0aGUgZGVwcmVjYXRlZCBidXQKLSAgICAgICAgIyBsZXNzIG91dC1vZi1kYXRlIEFwcGxlIDAuOS44IGxpYnMgZm9yIG5vdy4gIFdoaWxlIHRoZXkgYXJlIGxlc3MKLSAgICAgICAgIyBzZWN1cmUgdGhhbiB1c2luZyBhbiB1cC10by1kYXRlIDEuMC4xIHZlcnNpb24sIGRvaW5nIHNvCi0gICAgICAgICMgYXZvaWRzIHRoZSBiaWcgcHJvYmxlbXMgb2YgZm9yY2luZyB1c2VycyB0byBoYXZlIHRvIG1hbmFnZQotICAgICAgICAjIGRlZmF1bHQgQ0FzIHRoZW1zZWx2ZXMsIHRoYW5rcyB0byB0aGUgQXBwbGUgbGlicyB1c2luZyBwcml2YXRlIFRFQQotICAgICAgICAjIEFQSXMgZm9yIGNlcnQgdmFsaWRhdGlvbiBmcm9tIGtleWNoYWlucyBpZiB2YWxpZGF0aW9uIHVzaW5nIHRoZQotICAgICAgICAjIHN0YW5kYXJkIE9wZW5TU0wgbG9jYXRpb25zICgvU3lzdGVtL0xpYnJhcnkvT3BlblNTTCwgbm9ybWFsbHkgZW1wdHkpCi0gICAgICAgICMgZmFpbHMuCi0gICAgICAgICMKLSAgICAgICAgIyBTaW5jZSBBcHBsZSByZW1vdmVkIHRoZSBoZWFkZXIgZmlsZXMgZm9yIHRoZSBkZXByZWNhdGVkIHN5c3RlbQotICAgICAgICAjIE9wZW5TU0wgYXMgb2YgdGhlIFhjb2RlIDcgcmVsZWFzZSAoZm9yIE9TIFggMTAuMTArKSwgd2UgZG8gbm90Ci0gICAgICAgICMgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gYnVpbGQgb3VyIG93biBjb3B5IGhlcmUsIHRvby4KKyAgICAjIFNpbmNlIEFwcGxlIHJlbW92ZWQgdGhlIGhlYWRlciBmaWxlcyBmb3IgdGhlIGRlcHJlY2F0ZWQgc3lzdGVtCisgICAgIyBPcGVuU1NMIGFzIG9mIHRoZSBYY29kZSA3IHJlbGVhc2UgKGZvciBPUyBYIDEwLjEwKyksIHdlIGRvIG5vdAorICAgICMgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gYnVpbGQgb3VyIG93biBjb3B5IGhlcmUsIHRvby4KIAotICAgICAgICByZXN1bHQuZXh0ZW5kKFsKKyAgICByZXN1bHQuZXh0ZW5kKFsKICAgICAgICAgICBkaWN0KAogICAgICAgICAgICAgICBuYW1lPSJPcGVuU1NMIDEuMC4yaCIsCiAgICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtMS4wLjJoLnRhci5neiIsCkBAIC0yNTIsNyArMjIzLDcgQEAKICAgICAgICAgICAgICAgY29uZmlndXJlPU5vbmUsCiAgICAgICAgICAgICAgIGluc3RhbGw9Tm9uZSwKICAgICAgICAgICApLAotICAgICAgICBdKQorICAgIF0pCiAKICMgICBEaXNhYmxlIGZvciBub3cKICAgICBpZiBGYWxzZTogICAjIGlmIGdldERlcHRhcmdldFR1cGxlKCkgPiAoMTAsIDUpOgpAQCAtMjk5LDkgKzI3MCw5IEBACiAgICAgaWYgUFlUSE9OXzM6CiAgICAgICAgIHJlc3VsdC5leHRlbmQoWwogICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9IlhaIDUuMC41IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vdHVrYWFuaS5vcmcveHoveHotNS4wLjUudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09JzE5ZDkyNGUwNjZiNmZmZjBiYzlkMTk4MWI0ZTUzMTk2JywKKyAgICAgICAgICAgICAgbmFtZT0iWFogNS4yLjIiLAorICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjIuMi50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nN2NmNmE4NTQ0YTdkYWU4ZTgxMDZmZGY3YWRkZmEyOGMnLAogICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKICAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nJywKICAgICAgICAgICAgICAgXQpAQCAtMzQ0LDEwICszMTUsMTEgQEAKICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgKSwKICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICBuYW1lPSJTUUxpdGUgMy44LjExIiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwczovL3d3dy5zcWxpdGUub3JnLzIwMTUvc3FsaXRlLWF1dG9jb25mLTMwODExMDAudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09Jzc3YjQ1MTkyNTEyMTAyOGJlZmJkZGJmNDVlYTJiYzQ5JywKKyAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuMTQuMSIsCisgICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly93d3cuc3FsaXRlLm9yZy8yMDE2L3NxbGl0ZS1hdXRvY29uZi0zMTQwMTAwLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSczNjM0YTkwYTNmNDk1NDE0NjJiY2FlZDM0NzRiMjY4NCcsCiAgICAgICAgICAgICAgIGV4dHJhX2NmbGFncz0oJy1PcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFM1ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfRlRTM19QQVJFTlRIRVNJUyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9SVFJFRSAnCkBAIC02NzUsNiArNjQ3LDcgQEAKICAgICBnbG9iYWwgV09SS0RJUiwgREVQU1JDLCBTREtQQVRILCBTUkNESVIsIERFUFRBUkdFVAogICAgIGdsb2JhbCBVTklWRVJTQUxPUFRTLCBVTklWRVJTQUxBUkNIUywgQVJDSExJU1QsIENDLCBDWFgKICAgICBnbG9iYWwgRldfVkVSU0lPTl9QUkVGSVgKKyAgICBnbG9iYWwgRldfU1NMX0RJUkVDVE9SWQogCiAgICAgaWYgYXJncyBpcyBOb25lOgogICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCkBAIC03MzUsNiArNzA4LDcgQEAKICAgICBDQywgQ1hYID0gZ2V0VGFyZ2V0Q29tcGlsZXJzKCkKIAogICAgIEZXX1ZFUlNJT05fUFJFRklYID0gRldfUFJFRklYWzpdICsgWyJWZXJzaW9ucyIsIGdldFZlcnNpb24oKV0KKyAgICBGV19TU0xfRElSRUNUT1JZID0gRldfVkVSU0lPTl9QUkVGSVhbOl0gKyBbImV0YyIsICJvcGVuc3NsIl0KIAogICAgIHByaW50KCItLSBTZXR0aW5nczoiKQogICAgIHByaW50KCIgICAqIFNvdXJjZSBkaXJlY3Rvcnk6ICAgICVzIiAlIFNSQ0RJUikKQEAgLTg3Niw3ICs4NTAsNyBAQAogICAgICAgICAgICAgInNoYXJlZCIsCiAgICAgICAgICAgICAiLS1pbnN0YWxsX3ByZWZpeD0lcyIlc2hlbGxRdW90ZShhcmNoYmFzZSksCiAgICAgICAgICAgICAiLS1wcmVmaXg9JXMiJW9zLnBhdGguam9pbigiLyIsICpGV19WRVJTSU9OX1BSRUZJWCksCi0gICAgICAgICAgICAiLS1vcGVuc3NsZGlyPS9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMIiwKKyAgICAgICAgICAgICItLW9wZW5zc2xkaXI9JXMiJW9zLnBhdGguam9pbigiLyIsICpGV19TU0xfRElSRUNUT1JZKSwKICAgICAgICAgXQogICAgICAgICBpZiBub19hc206CiAgICAgICAgICAgICBjb25maWd1cmVfb3B0cy5hcHBlbmQoIm5vLWFzbSIpCkBAIC0xMTk0LDEyICsxMTY4LDE0IEBACiAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLCBnZXRWZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgJ2xpYicpKSkpCiAKLSAgICBwYXRoX3RvX2xpYiA9IG9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLCAnbGliJywgJ3B5dGhvbiVzJyUodmVyc2lvbiwpKQorICAgIGZybURpciA9IG9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywgJ1B5dGhvbi5mcmFtZXdvcmsnKQorICAgIGZybURpclZlcnNpb25lZCA9IG9zLnBhdGguam9pbihmcm1EaXIsICdWZXJzaW9ucycsIHZlcnNpb24pCisgICAgcGF0aF90b19saWIgPSBvcy5wYXRoLmpvaW4oZnJtRGlyVmVyc2lvbmVkLCAnbGliJywgJ3B5dGhvbiVzJyUodmVyc2lvbiwpKQorICAgICMgY3JlYXRlIGRpcmVjdG9yeSBmb3IgT3BlblNTTCBjZXJ0aWZpY2F0ZXMKKyAgICBzc2xEaXIgPSBvcy5wYXRoLmpvaW4oZnJtRGlyVmVyc2lvbmVkLCAnZXRjJywgJ29wZW5zc2wnKQorICAgIG9zLm1ha2VkaXJzKHNzbERpcikKIAogICAgIHByaW50KCJGaXggZmlsZSBtb2RlcyIpCi0gICAgZnJtRGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLCAnUHl0aG9uLmZyYW1ld29yaycpCiAgICAgZ2lkID0gZ3JwLmdldGdybmFtKCdhZG1pbicpLmdyX2dpZAogCiAgICAgc2hhcmVkX2xpYl9lcnJvciA9IEZhbHNlCkBAIC0xMjQ5LDYgKzEyMjUsOCBAQAogICAgICAgICBMRFZFUlNJT04gPSBMRFZFUlNJT04ucmVwbGFjZSgnJChWRVJTSU9OKScsIFZFUlNJT04pCiAgICAgICAgIExEVkVSU0lPTiA9IExEVkVSU0lPTi5yZXBsYWNlKCckKEFCSUZMQUdTKScsIEFCSUZMQUdTKQogICAgICAgICBjb25maWdfc3VmZml4ID0gJy0nICsgTERWRVJTSU9OCisgICAgICAgIGlmIGdldFZlcnNpb25NYWpvck1pbm9yKCkgPj0gKDMsIDYpOgorICAgICAgICAgICAgY29uZmlnX3N1ZmZpeCA9IGNvbmZpZ19zdWZmaXggKyAnLWRhcndpbicKICAgICBlbHNlOgogICAgICAgICBjb25maWdfc3VmZml4ID0gJycgICAgICAjIFB5dGhvbiAyLngKIApAQCAtMTI3NCw3ICsxMjUyLDcgQEAKICAgICBmcC53cml0ZShkYXRhKQogICAgIGZwLmNsb3NlKCkKIAotICAgICMgZml4IF9zeXNjb25maWdkYXRhIGlmIGl0IGV4aXN0cworICAgICMgZml4IF9zeXNjb25maWdkYXRhCiAgICAgIwogICAgICMgVE9ETzogbWFrZSB0aGlzIG1vcmUgcm9idXN0ISAgdGVzdF9zeXNjb25maWdfbW9kdWxlIG9mCiAgICAgIyBkaXN0dXRpbHMudGVzdHMudGVzdF9zeXNjb25maWcuU3lzY29uZmlnVGVzdENhc2UgdGVzdHMgdGhhdApAQCAtMTI4OCwyOCArMTI2NiwzMSBAQAogICAgICMgX3N5c2NvbmZpZ2RhdGEucHkpLgogCiAgICAgaW1wb3J0IHBwcmludAotICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdfc3lzY29uZmlnZGF0YS5weScpCi0gICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgIGZwID0gb3BlbihwYXRoLCAncicpCi0gICAgICAgIGRhdGEgPSBmcC5yZWFkKCkKLSAgICAgICAgZnAuY2xvc2UoKQotICAgICAgICAjIGNyZWF0ZSBidWlsZF90aW1lX3ZhcnMgZGljdAotICAgICAgICBleGVjKGRhdGEpCi0gICAgICAgIHZhcnMgPSB7fQotICAgICAgICBmb3IgaywgdiBpbiBidWlsZF90aW1lX3ZhcnMuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIHR5cGUodikgPT0gdHlwZSgnJyk6Ci0gICAgICAgICAgICAgICAgZm9yIHAgaW4gKGluY2x1ZGVfcGF0aCwgbGliX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCcgJyArIHAsICcnKQotICAgICAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKHAgKyAnICcsICcnKQotICAgICAgICAgICAgdmFyc1trXSA9IHYKKyAgICBpZiBnZXRWZXJzaW9uTWFqb3JNaW5vcigpID49ICgzLCA2KToKKyAgICAgICAgIyBYWFggdGhpcyBpcyBleHRyYS1mcmFnaWxlCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdfc3lzY29uZmlnZGF0YV9tX2Rhcndpbl9kYXJ3aW4ucHknKQorICAgIGVsc2U6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdfc3lzY29uZmlnZGF0YS5weScpCisgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKKyAgICBkYXRhID0gZnAucmVhZCgpCisgICAgZnAuY2xvc2UoKQorICAgICMgY3JlYXRlIGJ1aWxkX3RpbWVfdmFycyBkaWN0CisgICAgZXhlYyhkYXRhKQorICAgIHZhcnMgPSB7fQorICAgIGZvciBrLCB2IGluIGJ1aWxkX3RpbWVfdmFycy5pdGVtcygpOgorICAgICAgICBpZiB0eXBlKHYpID09IHR5cGUoJycpOgorICAgICAgICAgICAgZm9yIHAgaW4gKGluY2x1ZGVfcGF0aCwgbGliX3BhdGgpOgorICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoJyAnICsgcCwgJycpCisgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZShwICsgJyAnLCAnJykKKyAgICAgICAgdmFyc1trXSA9IHYKIAotICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQotICAgICAgICAjIGR1cGxpY2F0ZWQgZnJvbSBzeXNjb25maWcuX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQotICAgICAgICBmcC53cml0ZSgnIyBzeXN0ZW0gY29uZmlndXJhdGlvbiBnZW5lcmF0ZWQgYW5kIHVzZWQgYnknCi0gICAgICAgICAgICAgICAgICAgICcgdGhlIHN5c2NvbmZpZyBtb2R1bGVcbicpCi0gICAgICAgIGZwLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQotICAgICAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mcCkKLSAgICAgICAgZnAuY2xvc2UoKQorICAgIGZwID0gb3BlbihwYXRoLCAndycpCisgICAgIyBkdXBsaWNhdGVkIGZyb20gc3lzY29uZmlnLl9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKKyAgICBmcC53cml0ZSgnIyBzeXN0ZW0gY29uZmlndXJhdGlvbiBnZW5lcmF0ZWQgYW5kIHVzZWQgYnknCisgICAgICAgICAgICAgICAgJyB0aGUgc3lzY29uZmlnIG1vZHVsZVxuJykKKyAgICBmcC53cml0ZSgnYnVpbGRfdGltZV92YXJzID0gJykKKyAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mcCkKKyAgICBmcC5jbG9zZSgpCiAKICAgICAjIEFkZCBzeW1saW5rcyBpbiAvdXNyL2xvY2FsL2JpbiwgdXNpbmcgcmVsYXRpdmUgbGlua3MKICAgICB1c3JfbG9jYWxfYmluID0gb3MucGF0aC5qb2luKHJvb3REaXIsICd1c3InLCAnbG9jYWwnLCAnYmluJykKQEAgLTE2MzYsNiArMTYxNyw4IEBACiAgICAgcGF0Y2hGaWxlKCJyZXNvdXJjZXMvUmVhZE1lLnJ0ZiIsICBmbikKICAgICBmbiA9IG9zLnBhdGguam9pbihmb2xkZXIsICJVcGRhdGUgU2hlbGwgUHJvZmlsZS5jb21tYW5kIikKICAgICBwYXRjaFNjcmlwdCgic2NyaXB0cy9wb3N0ZmxpZ2h0LnBhdGNoLXByb2ZpbGUiLCAgZm4pCisgICAgZm4gPSBvcy5wYXRoLmpvaW4oZm9sZGVyLCAiSW5zdGFsbCBDZXJ0aWZpY2F0ZXMuY29tbWFuZCIpCisgICAgcGF0Y2hTY3JpcHQoInJlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kIiwgIGZuKQogICAgIG9zLmNobW9kKGZvbGRlciwgU1RBVF8wbzc1NSkKICAgICBzZXRJY29uKGZvbGRlciwgIi4uL0ljb25zL1B5dGhvbiBGb2xkZXIuaWNucyIpCiAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgppbmRleCA2NWUzZjE0Li4wNGRjZWFmIDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCkBAIC0xLDEwNiArMSw3NiBAQAote1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMzQ4XGNvY29hc3VicnRmMTcwCit7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjE1MDQKIHtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllck5ld1BTTVQ7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQore1wqXGV4cGFuZGVkY29sb3J0Ymw7XGNzZ3JheVxjMTAwMDAwO30KIFxtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTMzODBcdmlld2gxNDYwMFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKIFxmMFxmczI0IFxjZjAgVGhpcyBwYWNrYWdlIHdpbGwgaW5zdGFsbCBQeXRob24gJEZVTExfVkVSU0lPTiBmb3IgTWFjIE9TIFggJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBmb3IgdGhlIGZvbGxvd2luZyBhcmNoaXRlY3R1cmUocyk6ICRBUkNISVRFQ1RVUkVTLlwKIFwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKIFxiIFxjZjAgXHVsIFx1bGMwIFdoaWNoIGluc3RhbGxlciB2YXJpYW50IHNob3VsZCBJIHVzZT8KIFxiMCBcdWxub25lIFwKIFwKLVB5dGhvbi5vcmcgcHJvdmlkZXMgdHdvIGluc3RhbGxlciB2YXJpYW50cyBmb3IgZG93bmxvYWQ6IG9uZSB0aGF0IGluc3RhbGxzIGEgCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIgXGNmMCAqKk5FVyoqCitcYjAgIEZvciBQeXRob24gMy42LCB0aGUgcHl0aG9uLm9yZyB3ZWJzaXRlIG5vdyBwcm92aWRlcyBvbmx5IG9uZSBpbnN0YWxsZXIgdmFyaWFudCBmb3IgZG93bmxvYWQ6IG9uZSB0aGF0IGluc3RhbGxzIGEgCiBcaSA2NC1iaXQvMzItYml0IEludGVsCiBcaTAgIFB5dGhvbiBjYXBhYmxlIG9mIHJ1bm5pbmcgb24gCiBcaSBNYWMgT1MgWCAxMC42IChTbm93IExlb3BhcmQpCi1caTAgIG9yIGxhdGVyOyBhbmQgb25lIHRoYXQgaW5zdGFsbHMgYSAKLVxpIDMyLWJpdC1vbmx5IChJbnRlbCBhbmQgUFBDKQotXGkwICBQeXRob24gY2FwYWJsZSBvZiBydW5uaW5nIG9uIAotXGkgTWFjIE9TIFggMTAuNSAoTGVvcGFyZCkKIFxpMCAgb3IgbGF0ZXIuICBUaGlzIFJlYWRNZSB3YXMgaW5zdGFsbGVkIHdpdGggdGhlIAogXGkgJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAotXGkwICB2YXJpYW50LiAgVW5sZXNzIHlvdSBhcmUgaW5zdGFsbGluZyB0byBhbiAxMC41IHN5c3RlbSBvciB5b3UgbmVlZCB0byBidWlsZCBhcHBsaWNhdGlvbnMgdGhhdCBjYW4gcnVuIG9uIDEwLjUgc3lzdGVtcywgdXNlIHRoZSAxMC42IHZhcmlhbnQgaWYgcG9zc2libGUuICBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIG9wZXJhdGluZyBzeXN0ZW0gZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBvcnRlZCBzdGFydGluZyB3aXRoIDEwLjYgYW5kIHlvdSBtYXkgc2VlIGJldHRlciBwZXJmb3JtYW5jZSB1c2luZyA2NC1iaXQgbW9kZS4gIEJ5IGRlZmF1bHQsIFB5dGhvbiB3aWxsIGF1dG9tYXRpY2FsbHkgcnVuIGluIDY0LWJpdCBtb2RlIGlmIHlvdXIgc3lzdGVtIHN1cHBvcnRzIGl0LiAgQWxzbyBzZWUgCi1caSBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0wKLVxpMCAgYmVsb3cuICBUaGUgUHl0aG9ucyBpbnN0YWxsZWQgYnkgdGhlc2UgaW5zdGFsbGVycyBhcmUgYnVpbHQgd2l0aCBwcml2YXRlIGNvcGllcyBvZiBzb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBub3QgaW5jbHVkZWQgd2l0aCBvciBuZXdlciB0aGFuIHRob3NlIGluIE9TIFggaXRzZWxmLiAgVGhlIGxpc3Qgb2YgdGhlc2UgbGlicmFyaWVzIHZhcmllcyBieSBpbnN0YWxsZXIgdmFyaWFudCBhbmQgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgTGljZW5zZS5ydGYgZmlsZS4KK1xpMCAgdmFyaWFudC4gIEJ5IGRlZmF1bHQsIFB5dGhvbiB3aWxsIGF1dG9tYXRpY2FsbHkgcnVuIGluIDY0LWJpdCBtb2RlIGlmIHlvdXIgc3lzdGVtIHN1cHBvcnRzIGl0LiAgVGhlIFB5dGhvbiBpbnN0YWxsZWQgYnkgdGhpcyBpbnN0YWxsZXIgaXMgYnVpbHQgd2l0aCBwcml2YXRlIGNvcGllcyBvZiBzb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBub3QgaW5jbHVkZWQgd2l0aCBvciBuZXdlciB0aGFuIHRob3NlIGluIE9TIFggaXRzZWxmLiAgVGhlIGxpc3Qgb2YgdGhlc2UgbGlicmFyaWVzIGlzIGluY2x1ZGVkIGF0IHRoZSBlbmQgb2YgdGhlIExpY2Vuc2UucnRmIGZpbGUuCiBcYiBcdWwgXAogXAotVXBkYXRlIHlvdXIgdmVyc2lvbiBvZiBUY2wvVGsgdG8gdXNlIElETEUgb3Igb3RoZXIgVGsgYXBwbGljYXRpb25zCitDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0xcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIwIFxjZjAgXHVsbm9uZSBcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIgXGNmMCAqKk5FVyoqCitcYjAgIFRoaXMgdmFyaWFudCBvZiBQeXRob24gMy42IG5vdyBpbmNsdWRlcyBpdHMgb3duIHByaXZhdGUgY29weSBvZiBPcGVuU1NMIDEuMC4yLiAgVW5saWtlIHByZXZpb3VzIHJlbGVhc2VzLCB0aGUgZGVwcmVjYXRlZCBBcHBsZS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcyBhcmUgbm8gbG9uZ2VyIHVzZWQuICBUaGlzIGFsc28gbWVhbnMgdGhhdCB0aGUgdHJ1c3QgY2VydGlmaWNhdGVzIGluIHN5c3RlbSBhbmQgdXNlciBrZXljaGFpbnMgbWFuYWdlZCBieSB0aGUgCitcaSBLZXljaGFpbiBBY2Nlc3MgCitcaTAgYXBwbGljYXRpb24gYW5kIHRoZSAKK1xpIHNlY3VyaXR5CitcaTAgIGNvbW1hbmQgbGluZSB1dGlsaXR5IGFyZSBubyBsb25nZXIgdXNlZCBhcyBkZWZhdWx0cyBieSB0aGUgUHl0aG9uIAorXGYxIHNzbAorXGYwICBtb2R1bGUuICBGb3IgMy42LjBiMSwgYSBzYW1wbGUgY29tbWFuZCBzY3JpcHQgaXMgaW5jbHVkZWQgaW4gCitcZjEgL0FwcGxpY2F0aW9ucy9QeXRob24gMy42CitcZjAgIHRvIGluc3RhbGwgYSBjdXJhdGVkIGJ1bmRsZSBvZiBkZWZhdWx0IHJvb3QgY2VydGlmaWNhdGVzIGZyb20gdGhlIHRoaXJkLXBhcnR5IAorXGYxIGNlcnRpZmkKK1xmMCAgcGFja2FnZSAoe1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jZXJ0aWZpIn19e1xmbGRyc2x0IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY2VydGlmaX19KS4gIElmIHlvdSBjaG9vc2UgdG8gdXNlIAorXGYxIGNlcnRpZmkKK1xmMCAsIHlvdSBzaG91bGQgY29uc2lkZXIgc3Vic2NyaWJpbmcgdG8gdGhle1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9jZXJ0aWZpLmlvL2VuL2xhdGVzdC8ifX17XGZsZHJzbHQgIHByb2plY3QncyBlbWFpbCB1cGRhdGUgc2VydmljZX19IHRvIGJlIG5vdGlmaWVkIHdoZW4gdGhlIGNlcnRpZmljYXRlIGJ1bmRsZSBpcyB1cGRhdGVkLlwKK1wKK1RoZSBidW5kbGVkIAorXGYxIHBpcAorXGYwICBpbmNsdWRlZCB3aXRoIHRoZSBQeXRob24gMy42IGluc3RhbGxlciBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAorXAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgXHVsIFVwZGF0ZSB5b3VyIHZlcnNpb24gb2YgVGNsL1RrIHRvIHVzZSBJRExFIG9yIG90aGVyIFRrIGFwcGxpY2F0aW9ucwogXGIwIFx1bG5vbmUgXAogXAogVG8gdXNlIElETEUgb3Igb3RoZXIgcHJvZ3JhbXMgdGhhdCB1c2UgdGhlIFRraW50ZXIgZ3JhcGhpY2FsIHVzZXIgaW50ZXJmYWNlIHRvb2xraXQsIHlvdSBuZWVkIHRvIGluc3RhbGwgYSBuZXdlciB0aGlyZC1wYXJ0eSB2ZXJzaW9uIG9mIHRoZSAKIFxpIFRjbC9UawogXGkwICBmcmFtZXdvcmtzLiAgVmlzaXQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvIn19e1xmbGRyc2x0IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrL319IGZvciBjdXJyZW50IGluZm9ybWF0aW9uIGFib3V0IHN1cHBvcnRlZCBhbmQgcmVjb21tZW5kZWQgdmVyc2lvbnMgb2YgCiBcaSBUY2wvVGsKLVxpMCAgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLlwKK1xpMCAgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLiAgRm9yIHRoZSBpbml0aWFsIGFscGhhIHJlbGVhc2VzIG9mIFB5dGhvbiAzLjYsIHRoZSBpbnN0YWxsZXIgaXMgc3RpbGwgbGlua2VkIHdpdGggVGNsL1RrIDguNTsgdGhpcyB3aWxsIGNoYW5nZSBwcmlvciB0byB0aGUgYmV0YSAyIHJlbGVhc2Ugb2YgMy42LjAuXAogCiBcYiBcdWwgXAotQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMXAorT3RoZXIgY2hhbmdlc1wKIAogXGIwIFx1bG5vbmUgXAotUHl0aG9uIDMuNSBpbmNsdWRlcyBhIG51bWJlciBvZiBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IHdlcmUgcmVsZWFzZWQgaW4gUHl0aG9uIDMuNC4zIGFuZCBQeXRob24gMi43LjEwLiAge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3Ni8ifX17XGZsZHJzbHQgUEVQIDQ3Nn19IGNoYW5nZXMgc2V2ZXJhbCBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZXMsIGxpa2UgCi1caSBodHRwbGliCi1caTAgLCAKLVxpIHVybGxpYgotXGkwICwgYW5kIAotXGkgeG1scnBjbGliCi1caTAgLCB0byBieSBkZWZhdWx0IHZlcmlmeSBjZXJ0aWZpY2F0ZXMgcHJlc2VudGVkIGJ5IHNlcnZlcnMgb3ZlciBzZWN1cmUgKFRMUykgY29ubmVjdGlvbnMuICBUaGUgdmVyaWZpY2F0aW9uIGlzIHBlcmZvcm1lZCBieSB0aGUgT3BlblNTTCBsaWJyYXJpZXMgdGhhdCBQeXRob24gaXMgbGlua2VkIHRvLiAgUHJpb3IgdG8gMy40LjMsIGJvdGggcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIHNoaXBwZWQgd2l0aCBPUyBYLiAgT1MgWCBwcm92aWRlcyBhIG11bHRpcGxlIGxldmVsIHNlY3VyaXR5IGZyYW1ld29yayB0aGF0IHN0b3JlcyB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKLVxpIEtleWNoYWluIEFjY2VzcyAKLVxpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAotXGkgc2VjdXJpdHkKLVxpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkuXAotXAotRm9yIE9TIFggMTAuNSwgQXBwbGUgcHJvdmlkZXMgCi1caSBPcGVuU1NMIDAuOS43Ci1caTAgIGxpYnJhcmllcy4gIFRoaXMgdmVyc2lvbiBvZiBBcHBsZSdzIE9wZW5TU0wgCi1cYiBkb2VzIG5vdAotXGIwICB1c2UgdGhlIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrLCBldmVuIHdoZW4gdXNlZCBvbiBuZXdlciB2ZXJzaW9ucyBvZiBPUyBYLiAgSW5zdGVhZCBpdCBjb25zdWx0cyBhIHRyYWRpdGlvbmFsIE9wZW5TU0wgY29uY2F0ZW5hdGVkIGNlcnRpZmljYXRlIGZpbGUgKAotXGkgY2FmaWxlCi1caTAgKSBvciBjZXJ0aWZpY2F0ZSBkaXJlY3RvcnkgKAotXGkgY2FwYXRoCi1caTAgKSwgbG9jYXRlZCBpbiAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gIFRoZXNlIGRpcmVjdG9yaWVzIGFyZSB0eXBpY2FsbHkgZW1wdHkgYW5kIG5vdCBtYW5hZ2VkIGJ5IE9TIFg7IHlvdSBtdXN0IG1hbmFnZSB0aGVtIHlvdXJzZWxmIG9yIHN1cHBseSB5b3VyIG93biBTU0wgY29udGV4dHMuICBPcGVuU1NMIDAuOS43IGlzIG9ic29sZXRlIGJ5IGN1cnJlbnQgc2VjdXJpdHkgc3RhbmRhcmRzLCBsYWNraW5nIGEgbnVtYmVyIG9mIGltcG9ydGFudCBmZWF0dXJlcyBmb3VuZCBpbiBsYXRlciB2ZXJzaW9ucy4gIEFtb25nIHRoZSBwcm9ibGVtcyB0aGlzIGNhdXNlcyBpcyB0aGUgaW5hYmlsaXR5IHRvIHZlcmlmeSBoaWdoZXItc2VjdXJpdHkgY2VydGlmaWNhdGVzIG5vdyB1c2VkIGJ5IHB5dGhvbi5vcmcgc2VydmljZXMsIGluY2x1ZGluZyAKLVxpIHR7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpIn19e1xmbGRyc2x0IGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4LCBQeVBJfX0KLVxpMCAuICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHRoZSAKLVxpIDEwLjUrIDMyLWJpdC1vbmx5IHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBpcyBsaW5rZWQgd2l0aCBhIHByaXZhdGUgY29weSBvZiAKLVxpIE9wZW5TU0wgMS4wLjIKLVxpMCA7IGl0IGNvbnN1bHRzIHRoZSBzYW1lIGRlZmF1bHQgY2VydGlmaWNhdGUgZGlyZWN0b3J5LCAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gICBBcyBiZWZvcmUsIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byBtYW5hZ2UgY2VydGlmaWNhdGVzIHlvdXJzZWxmIHdoZW4geW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IGFuZCwgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgeW91IG1heSBub3cgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgc3RlcHMgdG8gZW5zdXJlIHlvdXIgUHl0aG9uIHByb2dyYW1zIGhhdmUgYWNjZXNzIHRvIENBIGNlcnRpZmljYXRlcyB5b3UgdHJ1c3QuICBJZiB5b3UgdXNlIHRoaXMgUHl0aG9uIHZhcmlhbnQgdG8gYnVpbGQgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB0b29scyBsaWtlIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHkyYXBwLyJ9fXtcZmxkcnNsdCAKLVxmMSBweTJhcHB9fSwgeW91IG1heSBub3cgbmVlZCB0byBidW5kbGUgQ0EgY2VydGlmaWNhdGVzIGluIHRoZW0gb3Igb3RoZXJ3aXNlIHN1cHBseSBub24tZGVmYXVsdCBTU0wgY29udGV4dHMuXAotXAotRm9yIE9TIFggMTAuNissIEFwcGxlIGFsc28gcHJvdmlkZXMgCi1caSBPcGVuU1NMCi1caTAgIAotXGkgMC45LjggbGlicmFyaWVzCi1caTAgLiAgQXBwbGUncyAwLjkuOCB2ZXJzaW9uIGluY2x1ZGVzIGFuIGltcG9ydGFudCBhZGRpdGlvbmFsIGZlYXR1cmU6IGlmIGEgY2VydGlmaWNhdGUgY2Fubm90IGJlIHZlcmlmaWVkIHVzaW5nIHRoZSBtYW51YWxseSBhZG1pbmlzdGVyZWQgY2VydGlmaWNhdGVzIGluIAotXGYxIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMCi1cZjAgLCB0aGUgY2VydGlmaWNhdGVzIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBzZWN1cml0eSBmcmFtZXdvcmsgSW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgYXJlIGFsc28gY29uc3VsdGVkICh1c2luZyBBcHBsZSBwcml2YXRlIEFQSXMpLiAgRm9yIHRoaXMgcmVhc29uLCB0aGUgCi1caSA2NC1iaXQvMzItYml0IDEwLjYrIHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBjb250aW51ZXMgdG8gYmUgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUncyBPcGVuU1NMIDAuOS44IHNpbmNlIGl0IHdhcyBmZWx0IHRoYXQgdGhlIGxvc3Mgb2YgdGhlIHN5c3RlbS1wcm92aWRlZCBjZXJ0aWZpY2F0ZXMgYW5kIG1hbmFnZW1lbnQgdG9vbHMgb3V0d2VpZ2hzIHRoZSBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHByb3ZpZGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wuICBUaGlzIHdpbGwgbGlrZWx5IGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBhcyBBcHBsZSBoYXMgZGVwcmVjYXRlZCB1c2Ugb2YgdGhlIHN5c3RlbS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcy4gIElmIHlvdSBkbyBuZWVkIGZlYXR1cmVzIGZyb20gbmV3ZXIgdmVyc2lvbnMgb2YgT3BlblNTTCwgdGhlcmUgYXJlIHRoaXJkLXBhcnR5IE9wZW5TU0wgd3JhcHBlciBwYWNrYWdlcyBhdmFpbGFibGUgdGhyb3VnaCAKLVxpIFB5UEkKLVxpMCAuXAotXAotVGhlIGJ1bmRsZWQgCi1cZjEgcGlwCi1cZjAgIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAzLjUgaW5zdGFsbGVycyBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAotXAotCi1cYiBcdWwgT3RoZXIgY2hhbmdlc1wKLQotXGIwIFx1bG5vbmUgXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIEZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKK0ZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKIFxpIFdoYXQncyBuZXcKIFxpMCAgc2VjdGlvbiBpbiB0aGUge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb2MvIn19e1xmbGRyc2x0IERvY3VtZW50YXRpb24gU2V0fX0gZm9yIHRoaXMgcmVsZWFzZSBhbmQgaXRzIAogXGkgUmVsZWFzZSBOb3RlcwogXGkwICBsaW5rIGF0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy99fS5cCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKIAotXGIgXGNmMCBcdWwgXAorXGIgXHVsIFwKIFB5dGhvbiAzIGFuZCBQeXRob24gMiBDby1leGlzdGVuY2VcCiAKIFxiMCBcdWxub25lIFwKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCmluZGV4IGRmYjc1ZDguLjNhOWFiMDQgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgpAQCAtMSw4ICsxLDkgQEAKLXtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTM0M1xjb2NvYXN1YnJ0ZjE2MAore1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxNTA0CiBcY29jb2FzY3JlZW5mb250czF7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQore1wqXGV4cGFuZGVkY29sb3J0Ymw7XGNzZ3JheVxjMTAwMDAwO30KIFxwYXBlcncxMTkwNVxwYXBlcmgxNjgzN1xtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTIyMDBcdmlld2gxMDg4MFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIAogXGIgUHl0aG9uICRGVUxMX1ZFUlNJT04KQEAgLTE2LDggKzE3LDE0IEBACiBcYiBJRExFCiBcYjAgLlwKIFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAotXGIgSU1QT1JUQU5UOgorXGIgXGNmMCBORVc6CitcYjAgICBUaGVyZSBhcmUgaW1wb3J0YW50IGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlIHJlZ2FyZGluZyBuZXR3b3JrIHNlY3VyaXR5IGFuZCB0cnVzdCBjZXJ0aWZpY2F0ZXMuICBQbGVhc2Ugc2VlIHRoZSBSZWFkTWUgZm9yIG1vcmUgZGV0YWlscy5cCitcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgSU1QT1JUQU5UOgogXGIwICAKIFxiIElETEUKIFxiMCAgYW5kIG90aGVyIHByb2dyYW1zIHVzaW5nIHRoZSAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZCBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZDJlMmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kCkBAIC0wLDAgKzEsNDggQEAKKyMhL2Jpbi9zaAorCisvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQFBZVkVSQC9iaW4vcHl0aG9uQFBZVkVSQCA8PCAiRU9GIgorCisjIGluc3RhbGxfY2VydGlmaS5weQorIworIyBzYW1wbGUgc2NyaXB0IHRvIGluc3RhbGwgb3IgdXBkYXRlIGEgc2V0IG9mIGRlZmF1bHQgUm9vdCBDZXJ0aWZpY2F0ZXMKKyMgZm9yIHRoZSBzc2wgbW9kdWxlLiAgVXNlcyB0aGUgY2VydGlmaWNhdGVzIHByb3ZpZGVkIGJ5IHRoZSBjZXJ0aWZpIHBhY2thZ2U6CisjICAgICAgIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY2VydGlmaQorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc3NsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworU1RBVF8wbzc3NSA9ICggc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSIHwgc3RhdC5TX0lYVVNSCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVdHUlAgfCBzdGF0LlNfSVhHUlAKKyAgICAgICAgICAgICB8IHN0YXQuU19JUk9USCB8ICAgICAgICAgICAgICAgIHN0YXQuU19JWE9USCApCisKK2RlZiBtYWluKCk6CisgICAgb3BlbnNzbF9kaXIsIG9wZW5zc2xfY2FmaWxlID0gb3MucGF0aC5zcGxpdCgKKyAgICAgICAgc3NsLmdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpLm9wZW5zc2xfY2FmaWxlKQorCisgICAgcHJpbnQoIiAtLSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgY2VydGlmaSIpCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgIi1FIiwgIi1zIiwgIi1tIiwgInBpcCIsICJpbnN0YWxsIiwgIi0tdXBncmFkZSIsICJjZXJ0aWZpIl0pCisKKyAgICBpbXBvcnQgY2VydGlmaQorCisgICAgIyBjaGFuZ2Ugd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIGRlZmF1bHQgU1NMIGRpcmVjdG9yeQorICAgIG9zLmNoZGlyKG9wZW5zc2xfZGlyKQorICAgIHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUgPSBvcy5wYXRoLnJlbHBhdGgoY2VydGlmaS53aGVyZSgpKQorICAgIHByaW50KCIgLS0gcmVtb3ZpbmcgYW55IGV4aXN0aW5nIGZpbGUgb3IgbGluayIpCisgICAgdHJ5OgorICAgICAgICBvcy5yZW1vdmUob3BlbnNzbF9jYWZpbGUpCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBwYXNzCisgICAgcHJpbnQoIiAtLSBjcmVhdGluZyBzeW1saW5rIHRvIGNlcnRpZmkgY2VydGlmaWNhdGUgYnVuZGxlIikKKyAgICBvcy5zeW1saW5rKHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUsIG9wZW5zc2xfY2FmaWxlKQorICAgIHByaW50KCIgLS0gc2V0dGluZyBwZXJtaXNzaW9ucyIpCisgICAgb3MuY2htb2Qob3BlbnNzbF9jYWZpbGUsIFNUQVRfMG83NzUpCisgICAgcHJpbnQoIiAtLSB1cGRhdGUgY29tcGxldGUiKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorRU9GCmRpZmYgLS1naXQgYS9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkgYi9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkKaW5kZXggOTg2NzYwZC4uNTk5NGMxOCAxMDA2NDQKLS0tIGEvTWFjL0lETEUvSURMRS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL2lkbGVtYWluLnB5CisrKyBiL01hYy9JRExFL0lETEUuYXBwL0NvbnRlbnRzL1Jlc291cmNlcy9pZGxlbWFpbi5weQpAQCAtNjgsNiArNjgsNiBAQAogICAgICAgICBicmVhawogCiAjIE5vdyBpdCBpcyBzYWZlIHRvIGltcG9ydCBpZGxlbGliLgotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4KK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBtYWluCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCmluZGV4IGIzNzljZTkuLjQwNzY1OGUgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnByZS5pbgorKysgYi9NYWtlZmlsZS5wcmUuaW4KQEAgLTQ4LDYgKzQ4LDEwIEBACiBMTFZNX1BST0ZfTUVSR0VSPUBMTFZNX1BST0ZfTUVSR0VSQAogTExWTV9QUk9GX0ZJTEU9QExMVk1fUFJPRl9GSUxFQAogTExWTV9QUk9GX0VSUj1ATExWTV9QUk9GX0VSUkAKK0RUUkFDRT0gICAgICAgICBARFRSQUNFQAorREZMQUdTPSAgICAgICAgIEBERkxBR1NACitEVFJBQ0VfSEVBREVSUz0gQERUUkFDRV9IRUFERVJTQAorRFRSQUNFX09CSlM9ICAgIEBEVFJBQ0VfT0JKU0AKIAogR05VTEQ9CQlAR05VTERACiAKQEAgLTEwOSw2ICsxMTMsNyBAQAogCiAjIE11bHRpYXJjaCBkaXJlY3RvcnkgKG1heSBiZSBlbXB0eSkKIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKK01VTFRJQVJDSF9DUFBGTEFHUyA9IEBNVUxUSUFSQ0hfQ1BQRkxBR1NACiAKICMgSW5zdGFsbCBwcmVmaXggZm9yIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcwogcHJlZml4PQkJQHByZWZpeEAKQEAgLTIzNCw3ICsyMzksNyBAQAogIyBUaGUgdGFzayB0byBydW4gd2hpbGUgaW5zdHJ1bWVudGVkIHdoZW4gYnVpbGRpbmcgdGhlIHByb2ZpbGUtb3B0IHRhcmdldC4KICMgV2UgZXhjbHVkZSB1bml0dGVzdHMgd2l0aCAteCB0aGF0IHRha2UgYSByZWRpY3VsaW91cyBhbW91bnQgb2YgdGltZSB0bwogIyBydW4gaW4gdGhlIGluc3RydW1lbnRlZCB0cmFpbmluZyBidWlsZCBvciBkbyBub3QgcHJvdmlkZSBtdWNoIHZhbHVlLgotUFJPRklMRV9UQVNLPS1tIHRlc3QucmVncnRlc3QgLS1wZ28gLXggdGVzdF9hc3luY29yZSB0ZXN0X2dkYiB0ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrIHRlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIgdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZyB0ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3biB0ZXN0X3N1YnByb2Nlc3MKK1BST0ZJTEVfVEFTSz0tbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvCiAKICMgcmVwb3J0IGZpbGVzIGZvciBnY292IC8gbGNvdiBjb3ZlcmFnZSByZXBvcnQKIENPVkVSQUdFX0lORk89CSQoYWJzX2J1aWxkZGlyKS9jb3ZlcmFnZS5pbmZvCkBAIC0yNTMsOSArMjU4LDYgQEAKIAkJTW9kdWxlcy9tYWluLm8gXAogCQlNb2R1bGVzL2djbW9kdWxlLm8KIAotIyBVc2VkIG9mIHNpZ25hbG1vZHVsZS5vIGlzIG5vdCBhdmFpbGFibGUKLVNJR05BTF9PQkpTPQlAU0lHTkFMX09CSlNACi0KIElPX0g9CQlNb2R1bGVzL19pby9faW9tb2R1bGUuaAogCiBJT19PQkpTPQlcCkBAIC0yODAsMTggKzI4Miw2IEBACiAjIFBhcnNlcgogUEdFTj0JCVBhcnNlci9wZ2VuJChFWEUpCiAKLVBTUkNTPQkJXAotCQlQYXJzZXIvYWNjZWxlci5jIFwKLQkJUGFyc2VyL2dyYW1tYXIxLmMgXAotCQlQYXJzZXIvbGlzdG5vZGUuYyBcCi0JCVBhcnNlci9ub2RlLmMgXAotCQlQYXJzZXIvcGFyc2VyLmMgXAotCQlQYXJzZXIvYml0c2V0LmMgXAotCQlQYXJzZXIvbWV0YWdyYW1tYXIuYyBcCi0JCVBhcnNlci9maXJzdHNldHMuYyBcCi0JCVBhcnNlci9ncmFtbWFyLmMgXAotCQlQYXJzZXIvcGdlbi5jCi0KIFBPQkpTPQkJXAogCQlQYXJzZXIvYWNjZWxlci5vIFwKIAkJUGFyc2VyL2dyYW1tYXIxLm8gXApAQCAtMzA2LDE2ICsyOTYsNiBAQAogCiBQQVJTRVJfT0JKUz0JJChQT0JKUykgUGFyc2VyL215cmVhZGxpbmUubyBQYXJzZXIvcGFyc2V0b2subyBQYXJzZXIvdG9rZW5pemVyLm8KIAotUEdTUkNTPQkJXAotCQlPYmplY3RzL29ibWFsbG9jLmMgXAotCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5jIFwKLQkJUHl0aG9uL215c25wcmludGYuYyBcCi0JCVB5dGhvbi9weWN0eXBlLmMgXAotCQlQYXJzZXIvdG9rZW5pemVyX3BnZW4uYyBcCi0JCVBhcnNlci9wcmludGdyYW1tYXIuYyBcCi0JCVBhcnNlci9wYXJzZXRva19wZ2VuLmMgXAotCQlQYXJzZXIvcGdlbm1haW4uYwotCiBQR09CSlM9CQlcCiAJCU9iamVjdHMvb2JtYWxsb2MubyBcCiAJCVB5dGhvbi9keW5hbWljX2Fubm90YXRpb25zLm8gXApAQCAtMzMxLDcgKzMxMSw2IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BhcnNldG9rLmggXAogCQkkKHNyY2RpcikvUGFyc2VyL3Rva2VuaXplci5oCiAKLVBHRU5TUkNTPQkkKFBTUkNTKSAkKFBHU1JDUykKIFBHRU5PQkpTPQkkKFBPQkpTKSAkKFBHT0JKUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTM0MCw3ICszMTksNyBAQAogT1BDT0RFX0hfU0NSSVBUPSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQogT1BDT0RFX0g9CSQoT1BDT0RFX0hfRElSKS9vcGNvZGUuaAogT1BDT0RFX0hfR0VOPQkkKFBZVEhPTl9GT1JfR0VOKSAkKE9QQ09ERV9IX1NDUklQVCkgJChzcmNkaXIpL0xpYi9vcGNvZGUucHkgJChPUENPREVfSCkKLSMKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQVNUCiBBU1RfSF9ESVI9CUluY2x1ZGUKQEAgLTM3Niw2ICszNTUsNyBAQAogCQlQeXRob24vY29tcGlsZS5vIFwKIAkJUHl0aG9uL2NvZGVjcy5vIFwKIAkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMubyBcCisJCVB5dGhvbi9kdHJhY2Vfc3R1YnMubyBcCiAJCVB5dGhvbi9lcnJvcnMubyBcCiAJCVB5dGhvbi9mcm96ZW5tYWluLm8gXAogCQlQeXRob24vZnV0dXJlLm8gXApAQCAtNDE2LDcgKzM5Niw4IEBACiAJCVB5dGhvbi8kKERZTkxPQURGSUxFKSBcCiAJCSQoTElCT0JKUykgXAogCQkkKE1BQ0hERVBfT0JKUykgXAotCQkkKFRIUkVBRE9CSikKKwkJJChUSFJFQURPQkopIFwKKwkJJChEVFJBQ0VfT0JKUykKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDcwLDEzICs0NTEsMjEgQEAKIAkJJChPQkpFQ1RfT0JKUykgXAogCQkkKFBZVEhPTl9PQkpTKSBcCiAJCSQoTU9EVUxFX09CSlMpIFwKLQkJJChTSUdOQUxfT0JKUykgXAogCQkkKE1PRE9CSlMpCiAKIExJQlJBUllfT0JKUz0JXAogCQkkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgXAogCQlQeXRob24vZnJvemVuLm8KIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgRFRyYWNlCisKKyMgT24gc29tZSBzeXN0ZW1zLCBvYmplY3QgZmlsZXMgdGhhdCByZWZlcmVuY2UgRFRyYWNlIHByb2JlcyBuZWVkIHRvIGJlIG1vZGlmaWVkCisjIGluLXBsYWNlIGJ5IGR0cmFjZSgxKS4KK0RUUkFDRV9ERVBTID0gXAorCVB5dGhvbi9jZXZhbC5vCisjIFhYWDogc2hvdWxkIGdjbW9kdWxlLCBldGMuIGJlIGhlcmUsIHRvbz8KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBSdWxlcwogCkBAIC01MzIsMTUgKzUyMSwyMyBAQAogCSAgICAtLWJhc2UtZGlyZWN0b3J5ICQocmVhbHBhdGggJChhYnNfYnVpbGRkaXIpKSBcCiAJICAgIC0tcGF0aCAkKHJlYWxwYXRoICQoYWJzX3NyY2RpcikpIFwKIAkgICAgLS1vdXRwdXQtZmlsZSAkKENPVkVSQUdFX0lORk8pCi0JOiAjIHJlbW92ZSAzcmQgcGFydHkgbW9kdWxlcyBhbmQgc3lzdGVtIGhlYWRlcnMKKwk6ICMgcmVtb3ZlIDNyZCBwYXJ0eSBtb2R1bGVzLCBzeXN0ZW0gaGVhZGVycyBhbmQgaW50ZXJuYWwgZmlsZXMgd2l0aAorCTogIyBkZWJ1ZywgdGVzdCBvciBkdW1teSBmdW5jdGlvbnMuCiAJQGxjb3YgLS1yZW1vdmUgJChDT1ZFUkFHRV9JTkZPKSBcCisJICAgICcqL01vZHVsZXMvX2JsYWtlMi9pbXBsLyonIFwKIAkgICAgJyovTW9kdWxlcy9fY3R5cGVzL2xpYmZmaSovKicgXAogCSAgICAnKi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjLyonIFwKKwkgICAgJyovTW9kdWxlcy9fc2hhMy9rY3AvKicgXAogCSAgICAnKi9Nb2R1bGVzL2V4cGF0LyonIFwKIAkgICAgJyovTW9kdWxlcy96bGliLyonIFwKIAkgICAgJyovSW5jbHVkZS8qJyBcCisJICAgICcqL01vZHVsZXMveHgqLmMnIFwKKwkgICAgJyovUGFyc2VyL2xpc3Rub2RlLmMnIFwKKwkgICAgJyovUHl0aG9uL3B5ZnBlLmMnIFwKKwkgICAgJyovUHl0aG9uL3B5c3RyY21wLmMnIFwKIAkgICAgJy91c3IvaW5jbHVkZS8qJyBcCiAJICAgICcvdXNyL2xvY2FsL2luY2x1ZGUvKicgXAorCSAgICAnL3Vzci9saWIvZ2NjLyonIFwKIAkgICAgLS1vdXRwdXQtZmlsZSAkKENPVkVSQUdFX0lORk8pCiAJQGdlbmh0bWwgJChDT1ZFUkFHRV9JTkZPKSAtLW91dHB1dC1kaXJlY3RvcnkgJChDT1ZFUkFHRV9SRVBPUlQpIFwKIAkgICAgJChDT1ZFUkFHRV9SRVBPUlRfT1BUSU9OUykKQEAgLTU2Myw3ICs1NjAsNyBAQAogIyBSdW4gIkFyZ3VtZW50IENsaW5pYyIgb3ZlciBhbGwgc291cmNlIGZpbGVzCiAjIChkZXBlbmRzIG9uIHB5dGhvbiBoYXZpbmcgYWxyZWFkeSBiZWVuIGJ1aWx0KQogLlBIT05ZPWNsaW5pYwotY2xpbmljOiAkKEJVSUxEUFlUSE9OKQorY2xpbmljOiAkKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jCiAJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLi9Ub29scy9jbGluaWMvY2xpbmljLnB5IC0tbWFrZQogCiAjIEJ1aWxkIHRoZSBpbnRlcnByZXRlcgpAQCAtNTcxLDcgKzU2OCw3IEBACiAJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgJChMSU5LRk9SU0hBUkVEKSAtbyAkQCBQcm9ncmFtcy9weXRob24ubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCiBwbGF0Zm9ybTogJChCVUlMRFBZVEhPTikgcHlidWlsZGRpci50eHQKLQkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludChnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXSknID5wbGF0Zm9ybQorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50KCIlcy0lZC4lZCIgJSAoZ2V0X3BsYXRmb3JtKCksICpzeXMudmVyc2lvbl9pbmZvWzoyXSkpJyA+cGxhdGZvcm0KIAogIyBDcmVhdGUgYnVpbGQgZGlyZWN0b3J5IGFuZCBnZW5lcmF0ZSB0aGUgc3lzY29uZmlnIGJ1aWxkLXRpbWUgZGF0YSB0aGVyZS4KICMgcHlidWlsZGRpci50eHQgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIGJ1aWxkIGRpciBhbmQgaXMgdXNlZCBmb3IKQEAgLTU5Myw2ICs1OTAsMTEgQEAKIE1vZHVsZXMvX21hdGgubzogTW9kdWxlcy9fbWF0aC5jIE1vZHVsZXMvX21hdGguaAogCSQoQ0MpIC1jICQoQ0NTSEFSRUQpICQoUFlfQ09SRV9DRkxBR1MpIC1vICRAICQ8CiAKKyMgYmxha2UycyBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJsYWtlMmIKKyQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2Uyc19pbXBsLmM6ICQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYl9pbXBsLmMgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmIycy5weQorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9Ub29scy9jbGluaWMvY2xpbmljLnB5IC1mICRACisKICMgQnVpbGQgdGhlIHNoYXJlZCBtb2R1bGVzCiAjIFVuZGVyIEdOVSBtYWtlLCBNQUtFRkxBR1MgYXJlIHNvcnRlZCBhbmQgbm9ybWFsaXplZDsgdGhlICdzJyBmb3IKICMgLXMsIC0tc2lsZW50IG9yIC0tcXVpZXQgaXMgYWx3YXlzIHRoZSBmaXJzdCBjaGFyLgpAQCAtNjA2LDYgKzYwOCw3IEBACiAJCV9UQ0xUS19JTkNMVURFUz0nJChUQ0xUS19JTkNMVURFUyknIF9UQ0xUS19MSUJTPSckKFRDTFRLX0xJQlMpJyBcCiAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL3NldHVwLnB5ICQkcXVpZXQgYnVpbGQKIAorCiAjIEJ1aWxkIHN0YXRpYyBsaWJyYXJ5CiAjIGF2b2lkIGxvbmcgY29tbWFuZCBsaW5lcywgc2FtZSBhcyBMSUJSQVJZX09CSlMKICQoTElCUkFSWSk6ICQoTElCUkFSWV9PQkpTKQpAQCAtNjE0LDcgKzYxNyw3IEBACiAJJChBUikgJChBUkZMQUdTKSAkQCAkKFBBUlNFUl9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpFQ1RfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoUFlUSE9OX09CSlMpIFB5dGhvbi9mcm96ZW4ubwotCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RVTEVfT0JKUykgJChTSUdOQUxfT0JKUykKKwkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9EVUxFX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRE9CSlMpCiAJJChSQU5MSUIpICRACiAKQEAgLTcxOCwxMSArNzIxLDExIEBACiBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYjogUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikKIAkkKExJTktDQykgJChQWV9MREZMQUdTKSAtbyAkQCBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAotUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKK1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFB5dGhvbi9tYXJzaGFsLmMKIAkuL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFwKIAkgICAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKIAotUHl0aG9uL2ltcG9ydGxpYi5oOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKK1B5dGhvbi9pbXBvcnRsaWIuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFB5dGhvbi9tYXJzaGFsLmMKIAkuL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFwKIAkgICAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQeXRob24vaW1wb3J0bGliLmgKIApAQCAtNzM0LDcgKzczNyw2IEBACiAJCSQoT0JKRUNUX09CSlMpIFwKIAkJJChQWVRIT05fT0JKUykgXAogCQkkKE1PRFVMRV9PQkpTKSBcCi0JCSQoU0lHTkFMX09CSlMpIFwKIAkJJChNT0RPQkpTKSBcCiAJCSQoc3JjZGlyKS9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXApAQCAtNzgwLDYgKzc4Miw3IEBACiBQeXRob24vc3lzbW9kdWxlLm86ICQoc3JjZGlyKS9QeXRob24vc3lzbW9kdWxlLmMgTWFrZWZpbGUKIAkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSBcCiAJCS1EQUJJRkxBR1M9JyIkKEFCSUZMQUdTKSInIFwKKwkJJChNVUxUSUFSQ0hfQ1BQRkxBR1MpIFwKIAkJLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9zeXNtb2R1bGUuYwogCiAkKElPX09CSlMpOiAkKElPX0gpCkBAIC04NjEsNyArODY0LDggQEAKIAogT2JqZWN0cy91bmljb2Rlb2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyAkKFVOSUNPREVfREVQUykKIAotT2JqZWN0cy9kaWN0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCitPYmplY3RzL29kaWN0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL2RpY3QtY29tbW9uLmgKK09iamVjdHMvZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaCAkKHNyY2RpcikvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCiBPYmplY3RzL3NldG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAogCiAkKE9QQ09ERVRBUkdFVFNfSCk6ICQoT1BDT0RFVEFSR0VUR0VOX0ZJTEVTKQpAQCAtODcxLDYgKzg3NSwxOCBAQAogCiBQeXRob24vZnJvemVuLm86IFB5dGhvbi9pbXBvcnRsaWIuaCBQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKIAorIyBHZW5lcmF0ZSBEVHJhY2UgcHJvYmUgbWFjcm9zLCB0aGVuIHJlbmFtZSB0aGVtIChQWVRIT05fIC0+IFB5RFRyYWNlXykgdG8KKyMgZm9sbG93IG91ciBuYW1pbmcgY29udmVudGlvbnMuIGR0cmFjZSgxKSB1c2VzIHRoZSBvdXRwdXQgZmlsZW5hbWUgdG8gZ2VuZXJhdGUKKyMgYW4gaW5jbHVkZSBndWFyZCwgc28gd2UgY2FuJ3QgdXNlIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGl0cyBvdXRwdXQuCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oOiAkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5kCisJJChEVFJBQ0UpICQoREZMQUdTKSAtbyAkQCAtaCAtcyAkPAorCTogc2VkIGluLXBsYWNlIGVkaXQgd2l0aCBQT1NJWC1vbmx5IHRvb2xzCisJc2VkICdzL1BZVEhPTl8vUHlEVHJhY2VfLycgJEAgPiAkQC50bXAKKwltdiAkQC50bXAgJEAKKworUHl0aG9uL3B5ZHRyYWNlLm86ICQoc3JjZGlyKS9JbmNsdWRlL3B5ZHRyYWNlLmQgJChEVFJBQ0VfREVQUykKKwkkKERUUkFDRSkgJChERkxBR1MpIC1vICRAIC1HIC1zICQ8ICQoRFRSQUNFX0RFUFMpCisKIE9iamVjdHMvdHlwZW9iamVjdC5vOiBPYmplY3RzL3R5cGVzbG90cy5pbmMKIE9iamVjdHMvdHlwZXNsb3RzLmluYzogJChzcmNkaXIpL0luY2x1ZGUvdHlwZXNsb3RzLmggJChzcmNkaXIpL09iamVjdHMvdHlwZXNsb3RzLnB5CiAJJChQWVRIT05fRk9SX0dFTikgJChzcmNkaXIpL09iamVjdHMvdHlwZXNsb3RzLnB5IDwgJChzcmNkaXIpL0luY2x1ZGUvdHlwZXNsb3RzLmggT2JqZWN0cy90eXBlc2xvdHMuaW5jCkBAIC05MjgsNiArOTQ0LDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvb2JqaW1wbC5oIFwKIAkJJChPUENPREVfSCkgXAogCQkkKHNyY2RpcikvSW5jbHVkZS9vc2RlZnMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29zbW9kdWxlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wYXRjaGxldmVsLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuaGVhZGVycy5oIFwKQEAgLTkzNiw2ICs5NTMsNyBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWNhcHN1bGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Y3R5cGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZGVidWcuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZHRyYWNlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWVycm9ycy5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHlmcGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5aGFzaC5oIFwKQEAgLTk2Nyw3ICs5ODUsOCBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS93ZWFrcmVmb2JqZWN0LmggXAogCQlweWNvbmZpZy5oIFwKIAkJJChQQVJTRVJfSEVBREVSUykgXAotCQkkKEFTVF9IKQorCQkkKEFTVF9IKSBcCisJCSQoRFRSQUNFX0hFQURFUlMpCiAKICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGhvbi5vOiAkKFBZVEhPTl9IRUFERVJTKQogCkBAIC05NzcsNyArOTk2LDcgQEAKIFRFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCiBURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQogVEVTVFJVTk5FUj0JJChURVNUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKLVRFU1RUSU1FT1VUPQkzNjAwCitURVNUVElNRU9VVD0JMTIwMAogCiAjIFJ1biBhIGJhc2ljIHNldCBvZiByZWdyZXNzaW9uIHRlc3RzLgogIyBUaGlzIGV4Y2x1ZGVzIHNvbWUgdGVzdHMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHJlc291cmNlLWludGVuc2l2ZS4KQEAgLTEwMTUsNyArMTAzNCw3IEBACiAJCS1AaWYgd2hpY2ggcHlidWlsZGJvdC5pZGVudGlmeSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAogCQkJcHlidWlsZGJvdC5pZGVudGlmeSAiQ0M9JyQoQ0MpJyIgIkNYWD0nJChDWFgpJyI7IFwKIAkJZmkKLQkJJChURVNUUlVOTkVSKSAtaiAxIC11IGFsbCAtVyAtLXRpbWVvdXQ9JChURVNUVElNRU9VVCkgJChURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAtaiAxIC11IGFsbCAtVyAtLXNsb3dlc3QgLS10aW1lb3V0PSQoVEVTVFRJTUVPVVQpICQoVEVTVE9QVFMpCiAKIFFVSUNLVEVTVE9QVFM9CSQoVEVTVE9QVFMpIC14IHRlc3Rfc3VicHJvY2VzcyB0ZXN0X2lvIHRlc3RfbGliMnRvMyBcCiAJCXRlc3RfbXVsdGlieXRlY29kZWMgdGVzdF91cmxsaWIyX2xvY2FsbmV0IHRlc3RfaXRlcnRvb2xzIFwKQEAgLTExNjgsMTYgKzExODcsMTYgQEAKIAkoY2QgJChERVNURElSKSQoTUFORElSKS9tYW4xOyAkKExOKSAtcyBweXRob24kKFZFUlNJT04pLjEgcHl0aG9uMy4xKQogCiAjIEluc3RhbGwgdGhlIGxpYnJhcnkKLVBMQVRESVI9CUBQTEFURElSQAotTUFDSERFUFM9CSQoUExBVERJUikKIFhNTExJQlNVQkRJUlM9ICB4bWwgeG1sL2RvbSB4bWwvZXRyZWUgeG1sL3BhcnNlcnMgeG1sL3NheAogTElCU1VCRElSUz0JdGtpbnRlciB0a2ludGVyL3Rlc3QgdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlciBcCiAJCXRraW50ZXIvdGVzdC90ZXN0X3R0ayBzaXRlLXBhY2thZ2VzIHRlc3QgXAogCQl0ZXN0L2F1ZGlvZGF0YSBcCiAJCXRlc3QvY2FwYXRoIHRlc3QvZGF0YSBcCiAJCXRlc3QvY2prZW5jb2RpbmdzIHRlc3QvZGVjaW1hbHRlc3RkYXRhIHRlc3QveG1sdGVzdGRhdGEgXAorCQl0ZXN0L2R0cmFjZWRhdGEgXAogCQl0ZXN0L2VpbnRyZGF0YSBcCiAJCXRlc3QvaW1naGRyZGF0YSBcCisJCXRlc3QvbGlicmVncnRlc3QgXAogCQl0ZXN0L3N1YnByb2Nlc3NkYXRhIHRlc3Qvc25kaGRyZGF0YSB0ZXN0L3N1cHBvcnQgXAogCQl0ZXN0L3RyYWNlZG1vZHVsZXMgdGVzdC9lbmNvZGVkX21vZHVsZXMgXAogCQl0ZXN0L3Rlc3RfaW1wb3J0IFwKQEAgLTEyMjYsOCArMTI0NSw4IEBACiAJCW11bHRpcHJvY2Vzc2luZyBtdWx0aXByb2Nlc3NpbmcvZHVtbXkgXAogCQl1bml0dGVzdCB1bml0dGVzdC90ZXN0IHVuaXR0ZXN0L3Rlc3QvdGVzdG1vY2sgXAogCQl2ZW52IHZlbnYvc2NyaXB0cyB2ZW52L3NjcmlwdHMvcG9zaXggXAotCQljdXJzZXMgcHlkb2NfZGF0YSAkKE1BQ0hERVBTKQotbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jCisJCWN1cnNlcyBweWRvY19kYXRhCitsaWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYwogCUBmb3IgaSBpbiAkKFNDUklQVERJUikgJChMSUJERVNUKTsgXAogCWRvIFwKIAkJaWYgdGVzdCAhIC1kICQoREVTVERJUikkJGk7IHRoZW4gXApAQCAtMTI0Nyw3ICsxMjY2LDcgQEAKIAkJZWxzZQl0cnVlOyBcCiAJCWZpOyBcCiAJZG9uZQotCUBmb3IgaSBpbiAkKHNyY2RpcikvTGliLyoucHkgYGNhdCBweWJ1aWxkZGlyLnR4dGAvX3N5c2NvbmZpZ2RhdGEucHk7IFwKKwlAZm9yIGkgaW4gJChzcmNkaXIpL0xpYi8qLnB5OyBcCiAJZG8gXAogCQlpZiB0ZXN0IC14ICQkaTsgdGhlbiBcCiAJCQkkKElOU1RBTExfU0NSSVBUKSAkJGkgJChERVNURElSKSQoTElCREVTVCk7IFwKQEAgLTEyODIsNiArMTMwMSwxMCBAQAogCQkJZXNhYzsgXAogCQlkb25lOyBcCiAJZG9uZQorCSQoSU5TVEFMTF9EQVRBKSBgY2F0IHB5YnVpbGRkaXIudHh0YC9fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKS5weSBcCisJCSQoREVTVERJUikkKExJQkRFU1QpOyBcCisJZWNobyAkKElOU1RBTExfREFUQSkgYGNhdCBweWJ1aWxkZGlyLnR4dGAvX3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUykucHkgXAorCQkkKExJQkRFU1QpCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9MSUNFTlNFICQoREVTVERJUikkKExJQkRFU1QpL0xJQ0VOU0UudHh0CiAJaWYgdGVzdCAtZCAkKERFU1RESVIpJChMSUJERVNUKS9kaXN0dXRpbHMvdGVzdHM7IHRoZW4gXAogCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYyBcCkBAIC0xMzE5LDIzICsxMzQyLDYgQEAKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0CiAKLSMgQ3JlYXRlIHRoZSBQTEFURElSIHNvdXJjZSBkaXJlY3RvcnksIGlmIG9uZSB3YXNuJ3QgZGlzdHJpYnV0ZWQuLgotJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpOgotCW1rZGlyICQoc3JjZGlyKS9MaWIvJChQTEFURElSKQotCWNwICQoc3JjZGlyKS9MaWIvcGxhdC1nZW5lcmljL3JlZ2VuICQoc3JjZGlyKS9MaWIvJChQTEFURElSKS9yZWdlbgotCWV4cG9ydCBQQVRIOyBQQVRIPSJgcHdkYDokJFBBVEgiOyBcCi0JZXhwb3J0IFBZVEhPTlBBVEg7IFBZVEhPTlBBVEg9ImBwd2RgL0xpYiI7IFwKLQlleHBvcnQgRFlMRF9GUkFNRVdPUktfUEFUSDsgRFlMRF9GUkFNRVdPUktfUEFUSD0iYHB3ZGAiOyBcCi0JZXhwb3J0IEVYRTsgRVhFPSIkKEJVSUxERVhFKSI7IFwKLQlpZiBbIC1uICIkKE1VTFRJQVJDSCkiIF07IHRoZW4gZXhwb3J0IE1VTFRJQVJDSDsgTVVMVElBUkNIPSQoTVVMVElBUkNIKTsgZmk7IFwKLQlleHBvcnQgUFlUSE9OX0ZPUl9CVUlMRDsgXAotCWlmIFsgIiQoQlVJTERfR05VX1RZUEUpIiA9ICIkKEhPU1RfR05VX1RZUEUpIiBdOyB0aGVuIFwKLQkgIFBZVEhPTl9GT1JfQlVJTEQ9IiQoQlVJTERQWVRIT04pIjsgXAotCWVsc2UgXAotCSAgUFlUSE9OX0ZPUl9CVUlMRD0iJChQWVRIT05fRk9SX0JVSUxEKSI7IFwKLQlmaTsgXAotCWNkICQoc3JjZGlyKS9MaWIvJChQTEFURElSKTsgJChSVU5TSEFSRUQpIC4vcmVnZW4KLQogcHl0aG9uLWNvbmZpZzogJChzcmNkaXIpL01pc2MvcHl0aG9uLWNvbmZpZy5pbiBNaXNjL3B5dGhvbi1jb25maWcuc2gKIAkjIFN1YnN0aXR1dGlvbiBoYXBwZW5zIGhlcmUsIGFzIHRoZSBjb21wbGV0ZWx5LWV4cGFuZGVkIEJJTkRJUgogCSMgaXMgbm90IGF2YWlsYWJsZSBpbiBjb25maWd1cmUKQEAgLTE0MzIsNyArMTQzOCw3IEBACiAJCS0taW5zdGFsbC1zY3JpcHRzPSQoQklORElSKSBcCiAJCS0taW5zdGFsbC1wbGF0bGliPSQoREVTVFNIQVJFRCkgXAogCQktLXJvb3Q9JChERVNURElSKS8KLQktcm0gJChERVNURElSKSQoREVTVFNIQVJFRCkvX3N5c2NvbmZpZ2RhdGEucHkKKwktcm0gJChERVNURElSKSQoREVTVFNIQVJFRCkvX3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUykucHkKIAktcm0gLXIgJChERVNURElSKSQoREVTVFNIQVJFRCkvX19weWNhY2hlX18KIAogIyBIZXJlIGFyZSBhIGNvdXBsZSBvZiB0YXJnZXRzIGZvciBNYWNPU1ggYWdhaW4sIHRvIGluc3RhbGwgYSBmdWxsCkBAIC0xNDc4LDEwICsxNDg0LDEwIEBACiAjIEluc3RhbGwgYSBudW1iZXIgb2Ygc3ltbGlua3MgdG8ga2VlcCBzb2Z0d2FyZSB0aGF0IGV4cGVjdHMgYSBub3JtYWwgdW5peAogIyBpbnN0YWxsICh3aGljaCBpbmNsdWRlcyBweXRob24tY29uZmlnKSBoYXBweS4KIGZyYW1ld29ya2luc3RhbGxtYWNsaWI6Ci0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChMRFZFUlNJT04pLmEiCi0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliIgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoVkVSU0lPTikuYSIKLQkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL3B5dGhvbiQoVkVSU0lPTikvY29uZmlnLSQoTERWRVJTSU9OKS9saWJweXRob24kKFZFUlNJT04pLmR5bGliIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5hIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKFZFUlNJT04pLmEiCisJJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChMSUJQTCkvbGlicHl0aG9uJChWRVJTSU9OKS5keWxpYiIKIAkkKExOKSAtZnMgIi4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKIAkkKExOKSAtZnMgIi4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL2xpYnB5dGhvbiQoVkVSU0lPTikuZHlsaWIiCiAKQEAgLTE1OTYsNiArMTYwMiw3IEBACiAJLXJtIC1mIExpYi9saWIydG8zLypHcmFtbWFyKi5waWNrbGUKIAktcm0gLWYgUHJvZ3JhbXMvX3Rlc3RlbWJlZCBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYgogCS1maW5kIGJ1aWxkIC10eXBlIGYgLWEgISAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKKwktcm0gLWYgSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaAogCiBwcm9maWxlLXJlbW92YWw6CiAJZmluZCAuIC1uYW1lICcqLmdjPz8nIC1leGVjIHJtIC1mIHt9ICc7JwpAQCAtMTY2MCw3ICsxNjY3LDYgQEAKIAkJLW8gLW5hbWUgJyoudG1TbmlwcGV0JyBcCiAJCS1vIC1uYW1lICdTZXR1cCcgXAogCQktbyAtbmFtZSAnU2V0dXAuKicgXAotCQktbyAtbmFtZSByZWdlbiBcCiAJCS1vIC1uYW1lIFJFQURNRSBcCiAJCS1vIC1uYW1lIE5FV1MgXAogCQktbyAtbmFtZSBISVNUT1JZIFwKZGlmZiAtLWdpdCBhL01pc2MvQUNLUyBiL01pc2MvQUNLUwppbmRleCA2YzFiYWZlLi5kNWVlZDU3IDEwMDY0NAotLS0gYS9NaXNjL0FDS1MKKysrIGIvTWlzYy9BQ0tTCkBAIC0xMjAsNiArMTIwLDcgQEAKIFRob21hcyBCZWxsbWFuCiBBbGV4YW5kZXIg4oCc0KHQsNGI0LDigJ0gQmVsb3BvbHNreQogRWxpIEJlbmRlcnNreQorTmlraGlsIEJlbmVzY2gKIERhdmlkIEJlbmphbWluCiBPc2NhciBCZW5qYW1pbgogQW5kcmV3IEJlbm5ldHRzCkBAIC0xNTUsNiArMTU2LDcgQEAKIFBhdWwgQm9kZGllCiBNYXR0aGV3IEJvZWRpY2tlcgogUm9iaW4gQm9lcmRpamsKK05pa29sYXkgQm9nb3ljaGV2CiBEYXZpZCBCb2xlbgogV291dGVyIEJvbHN0ZXJsZWUKIEdhd2FpbiBCb2x0b24KQEAgLTI0MSw2ICsyNDMsNyBAQAogTWljaGFlbCBDZXRydWxvCiBEYXZlIENoYW1iZXJzCiBQYXNjYWwgQ2hhbWJvbgorTmljaG9sYXMgQ2hhbW1hcwogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKQEAgLTMwNSwxNSArMzA4LDE4IEBACiBEYXZpZCBDb3VybmFwZWF1CiBKdWxpZW4gQ291cnRlYXUKIFN0ZXZlIENvdXNpbnMKK0ZyYW5jaXNjbyBDb3V6bwogQWxleCBDb3ZlbnRyeQogTWF0dGhldyBEaXhvbiBDb3dsZXMKIFJ5YW4gQ295bmVyCiBDaHJpc3RvcGhlciBBLiBDcmFpZwogSmVyZW15IENyYXZlbgogTGF1cmEgQ3JlaWdodG9uCitUeWxlciBDcm9tcHRvbgogU2ltb24gQ3Jvc3MKIEZlbGlwZSBDcnV6CiBEcmV3IENzaWxsYWcKK0FsZXNzYW5kcm8gQ3VjY2kKIEpvYXF1aW4gQ3VlbmNhIEFiZWxhCiBKb2huIEN1Z2luaQogVG9tIEN1bGxpdG9uCkBAIC0zNTcsNiArMzYzLDcgQEAKIFl2ZXMgRGlvbm5lCiBEYW5pZWwgRGl0dG1hcgogSm9zaXAgRGpvbG9uZ2EKK1dhbHRlciBEw7Zyd2FsZAogSmFyb21pciBEb2xlY2VrCiBJc21haWwgRG9ubWV6CiBSb2JlcnQgRG9ub2h1ZQpAQCAtMzg0LDcgKzM5MSw2IEBACiBLYXJtZW4gRHlrc3RyYQogSm9zaXAgRHpvbG9uZ2EKIE1heGltIER6dW1hbmVua28KLVdhbHRlciBEw7Zyd2FsZAogSGFucyBFY2thcmR0CiBSb2RvbHBobyBFY2toYXJkdAogVWxyaWNoIEVja2hhcmR0CkBAIC01NDIsOCArNTQ4LDEwIEBACiBMYXJzIEd1c3TDpGJlbAogVGhvbWFzIEfDvHR0bGVyCiBKb25hcyBILgorSm9zZXBoIEhhY2ttYW4KIEJhcnJ5IEhhZGRvdwogUGhpbGlwcCBIYWdlbWVpc3RlcgorSm9obiBIYWdlbgogUGF1bCB0ZW4gSGFnZW4KIFJhc211cyBIYWhuCiBQZXRlciBIYWlnaHQKQEAgLTc3OSw2ICs3ODcsNyBAQAogTWFya28gS29odGFsYQogVmFqcmFza3kgS29rCiBHdWlkbyBLb2xsZXJpZQorSmFjZWsgS2/Fgm9kemllagogSmFjZWsgS29uaWVjem55CiBBcmthZHkgS29wbHlhcm92CiBQZXRlciBBLiBLb3JlbgpAQCAtNzkwLDYgKzc5OSw3IEBACiBKZXJ6eSBLb3plcmEKIE1ha3NpbSBLb3p5YXJjaHVrCiBTdGVmYW4gS3JhaAorUm9sZiBLcmFobAogQm9iIEtyYXMKIFNlYmFzdGlhbiBLcmVmdAogSG9sZ2VyIEtyZWtlbApAQCAtODIyLDYgKzgzMiw3IEBACiBUaW5vIExhbmdlCiBHbGVubiBMYW5nZm9yZAogQW5kcmV3IExhbmdtZWFkCitXb2xmZ2FuZyBMYW5nbmVyCiBEZXRsZWYgTGFubmVydAogU29yZW4gTGFyc2VuCiBBbW9zIExhdHRlaWVyCkBAIC04ODQsMjQgKzg5NSwyNyBAQAogR3JlZ29yIExpbmdsCiBFdmVyZXR0IExpcG1hbgogTWlya28gTGlzcworQWxleGFuZGVyIExpdQogTmljayBMb2Nrd29vZAogU3RlcGhhbmllIExvY2t3b29kCitNYXJ0aW4gdm9uIEzDtndpcwogSHVnbyBMb3BlcyBUYXZhcmVzCiBHdWlsbGVybW8gTMOzcGV6LUFuZ2xhZGEKIEFubmUgTG9yZAorQWxleCBMb3JkVGhvcnNlbgogVG9tIExvcmVkbwogSnVzdGluIExvdmUKIE5lZCBKYWNrc29uIExvdmVseQogUGV0ZXIgTG92ZXR0CiBDaGFsbWVyIExvd2UKIEphc29uIExvd2UKLU1hcnRpbiB2b24gTMO2d2lzCiBUb255IExvd25kcwogUmF5IExveXphZ2EKIEthbmctSGFvIChLZW5ueSkgTHUKIEx1a2FzIEx1ZWcKIExvcmVuIEx1a2UKIEZyZWRyaWsgTHVuZGgKK01pa2UgTHVuZHkKIFpob25neXVlIEx1bwogTWFyayBMdXR6CiBUYXJhcyBMeWFwdW4KQEAgLTExNDIsOSArMTE1NiwxMSBAQAogR2VvZmYgUGhpbGJyaWNrCiBHYXZyaWUgUGhpbGlwc29uCiBBZHJpYW4gUGhpbGxpcHMKK0R1c3R5IFBoaWxsaXBzCiBDaHJpc3RvcGhlciBKLiBQaG9lbml4CiBKYW1lcyBQaWNrZXJpbmcKIE5lYWxlIFBpY2tldHQKK1N0ZXZlIFBpZXJjeQogSmltIFN0LiBQaWVycmUKIERhbiBQaWVyc29uCiBNYXJ0aWpuIFBpZXRlcnMKQEAgLTExOTYsNiArMTIxMiw3IEBACiBCYXlhcmQgUmFuZGVsCiBWYXJwdSBSYW50YWxhCiBCcm9kaWUgUmFvCitSw6ltaSBSYW1waW4KIFNlbmtvIFJhc2ljCiBBbnR0aSBSYXNpbmVuCiBOaWtvbGF1cyBSYXRoCkBAIC0xMjQ2LDYgKzEyNjMsNyBAQAogS2V2aW4gUm9kZ2VycwogU2VhbiBSb2RtYW4KIEdpYW1wYW9sbyBSb2RvbGEKK01hdXJvIFMuIE0uIFJvZHJpZ3VlcwogRWxzb24gUm9kcmlndWV6CiBBZGkgUm9pYmFuCiBMdWlzIFJvamFzCkBAIC0xMjg4LDYgKzEzMDYsNyBAQAogQ29uc3RhbnRpbmEgUy4KIFBhdHJpY2sgU2FiaW4KIFPDqWJhc3RpZW4gU2FibMOpCitBbWl0IFNhaGEKIFN1bWFuIFNhaGEKIEhhamltZSBTYWl0b3UKIEdlb3JnZSBTYWtraXMKQEAgLTEzMjEsNiArMTM0MCw3IEBACiBQZXRlciBTY2huZWlkZXItS2FtcAogQXJ2aW4gU2NobmVsbAogTm9mYXIgU2NobmlkZXIKK0VkIFNjaG91dGVuCiBTY290dCBTY2hyYW0KIFJvYmluIFNjaHJlaWJlcgogQ2hhZCBKLiBTY2hyb2VkZXIKQEAgLTEzOTUsNiArMTQxNSw3IEBACiBSb3kgU21pdGgKIFJ5YW4gU21pdGgtUm9iZXJ0cwogUmFmYWwgU21vdHJ6eWsKK0pvc2ggU25pZGVyCiBFcmljIFNub3cKIERpcmsgU29lZGUKIE5pciBTb2ZmZXIKQEAgLTE0MjIsMTEgKzE0NDMsMTMgQEAKIE1hcmVrIFN0ZXBuaW93c2tpCiBCYXJ1Y2ggU3RlcmluCiBDaHJpcyBTdGVybgorRWxpIFN0ZXZlbnMKIEFsZXggU3Rld2FydAogVmljdG9yIFN0aW5uZXIKIFJpY2hhcmQgU3RvYWtsZXkKIFBldGVyIFN0b2VocgogQ2FzcGVyIFN0b2VsCitEYW5pZWwgU3Rva2VzCiBNaWNoYWVsIFN0b25lCiBTZXJoaXkgU3RvcmNoYWthCiBLZW4gU3RveApAQCAtMTQ1MSw2ICsxNDc0LDcgQEAKIEpvaG4gU3pha21laXN0ZXIKIEFtaXIgU3pla2VseQogTWFjaWVqIFN6dWxpaworSm9lbCBUYWRkZWkKIEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzCiBIaWRlYWtpIFRha2FoYXNoaQogVGFrYXNlIEFyaWhpcm8KQEAgLTE0NjIsOCArMTQ4NiwxMCBAQAogQ2hyaXN0aWFuIFRhbnplcgogU3RldmVuIFRhc2NodWsKIEFteSBUYXlsb3IKK0p1bGlhbiBUYXlsb3IKIE1vbnR5IFRheWxvcgogQW5hdG9seSBUZWNodG9uaWsKK01hcnRpbiBUZWljaG1hbm4KIEd1c3Rhdm8gVGVtcGxlCiBNaWtoYWlsIFRlcmVraG92CiBWaWN0b3IgVGVycsOzbgpAQCAtMTY0NSw2ICsxNjcxLDcgQEAKIEFsYWtzaGVuZHJhIFlhZGF2CiBIaXJva2F6dSBZYW1hbW90bwogS2EtUGluZyBZZWUKK0NoaSBIc3VhbiBZZW4KIEphc29uIFllbwogRXVuZ0p1biBZaQogQm9iIFlvZGxvd3NraQpAQCAtMTY3Myw0ICsxNzAwLDMgQEAKIERvdWcgWm9uZ2tlcgogUGV0ZXIgw4VzdHJhbmQKIGV2aWx6ZXJvCi1DaGkgSHN1YW4gWWVuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggMmRhNTA1OC4uZDU4ZDMzZCAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtMiwxMCArMiwxMCBAQAogUHl0aG9uIE5ld3MKICsrKysrKysrKysrCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4zIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYmV0YSAyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotUmVsZWFzZSBkYXRlOiBUQkEKKypSZWxlYXNlIGRhdGU6IFhYWFgtWFgtWFgqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTksODYgKzE5LDY5IEBACiAtIElzc3VlICMyMTU3ODogRml4ZWQgbWlzbGVhZGluZyBlcnJvciBtZXNzYWdlIHdoZW4gSW1wb3J0RXJyb3IgY2FsbGVkIHdpdGgKICAgaW52YWxpZCBrZXl3b3JkIGFyZ3MuCiAKLS0gSXNzdWUgIzI4MjAzOiBGaXggaW5jb3JyZWN0IHR5cGUgaW4gZXJyb3IgbWVzc2FnZSBmcm9tCi0gIGBgY29tcGxleCgxLjAsIHsyOjN9KWBgLiBQYXRjaCBieSBTb3VteWEgU2hhcm1hLgorLSBJc3N1ZSAjMjgyMDM6IEZpeCBpbmNvcnJlY3QgdHlwZSBpbiBjb21wbGV4KDEuMCwgezI6M30pIGVycm9yIG1lc3NhZ2UuCisgIFBhdGNoIGJ5IFNvdW15YSBTaGFybWEuCisKKy0gSXNzdWUgIzI4MDg2OiBTaW5nbGUgdmFyLXBvc2l0aW9uYWwgYXJndW1lbnQgb2YgdHVwbGUgc3VidHlwZSB3YXMgcGFzc2VkCisgIHVuc2NhdGhlZCB0byB0aGUgQy1kZWZpbmVkIGZ1bmN0aW9uLiAgTm93IGl0IGlzIGNvbnZlcnRlZCB0byBleGFjdCB0dXBsZS4KKworLSBJc3N1ZSAjMjgyMTQ6IE5vdyBfX3NldF9uYW1lX18gaXMgbG9va2VkIHVwIG9uIHRoZSBjbGFzcyBpbnN0ZWFkIG9mIHRoZQorICBpbnN0YW5jZS4KIAogLSBJc3N1ZSAjMjc5NTU6IEZhbGxiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tIGRldmljZSB3aGVuIHRoZSBnZXRyYW5kb20oKQogICBzeXNjYWxsIGZhaWxzIHdpdGggRVBFUk0sIGZvciBleGFtcGxlIHdoZW4gYmxvY2tlZCBieSBTRUNDT01QLgogCistIElzc3VlICMyODE5MjogRG9uJ3QgaW1wb3J0IHJlYWRsaW5lIGluIGlzb2xhdGVkIG1vZGUuCisKKy0gVXBncmFkZSBpbnRlcm5hbCB1bmljb2RlIGRhdGFiYXNlcyB0byBVbmljb2RlIHZlcnNpb24gOS4wLjAuCisKIC0gSXNzdWUgIzI4MTMxOiBGaXggYSByZWdyZXNzaW9uIGluIHppcGltcG9ydCdzIGNvbXBpbGVfc291cmNlKCkuICB6aXBpbXBvcnQKICAgc2hvdWxkIHVzZSB0aGUgc2FtZSBvcHRpbWl6YXRpb24gbGV2ZWwgYXMgdGhlIGludGVycHJldGVyLgogCi0tIElzc3VlICMyNTIyMTogRml4IGNvcnJ1cHRlZCByZXN1bHQgZnJvbSBQeUxvbmdfRnJvbUxvbmcoMCkgd2hlbgotICBQeXRob24gaXMgY29tcGlsZWQgd2l0aCBOU01BTExQT1NJTlRTID0gMC4KKy0gSXNzdWUgIzI4MTI2OiBSZXBsYWNlIFB5X01FTUNQWSB3aXRoIG1lbWNweSgpLiBWaXN1YWwgU3R1ZGlvIGNhbiBwcm9wZXJseQorICBvcHRpbWl6ZSBtZW1jcHkoKS4KIAotLSBJc3N1ZSAjMjU3NTg6IFByZXZlbnRzIHppcGltcG9ydCBmcm9tIHVubmVjZXNzYXJpbHkgZW5jb2RpbmcgYSBmaWxlbmFtZQotICAocGF0Y2ggYnkgRXJ5ayBTdW4pCistIElzc3VlICMyODEyMDogRml4IGRpY3QucG9wKCkgZm9yIHNwbGl0dGVkIGRpY3Rpb25hcnkgd2hlbiB0cnlpbmcgdG8gcmVtb3ZlIGEKKyAgInBlbmRpbmcga2V5IiAoTm90IHlldCBpbnNlcnRlZCBpbiBzcGxpdC10YWJsZSkuIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgogCi0tIElzc3VlICMyODE4OTogZGljdGl0ZW1zX2NvbnRhaW5zIG5vIGxvbmdlciBzd2FsbG93cyBjb21wYXJlIGVycm9ycy4KLSAgKFBhdGNoIGJ5IFhpYW5nIFpoYW5nKQotCi0tIElzc3VlICMyNzgxMjogUHJvcGVybHkgY2xlYXIgb3V0IGEgZ2VuZXJhdG9yJ3MgZnJhbWUncyBiYWNrcmVmZXJlbmNlIHRvIHRoZQotICBnZW5lcmF0b3IgdG8gcHJldmVudCBjcmFzaGVzIGluIGZyYW1lLmNsZWFyKCkuCi0KLS0gSXNzdWUgIzI3ODExOiBGaXggYSBjcmFzaCB3aGVuIGEgY29yb3V0aW5lIHRoYXQgaGFzIG5vdCBiZWVuIGF3YWl0ZWQgaXMKLSAgZmluYWxpemVkIHdpdGggd2FybmluZ3MtYXMtZXJyb3JzIGVuYWJsZWQuCi0KLS0gSXNzdWUgIzI3NTg3OiBGaXggYW5vdGhlciBpc3N1ZSBmb3VuZCBieSBQVlMtU3R1ZGlvOiBOdWxsIHBvaW50ZXIgY2hlY2sKLSAgYWZ0ZXIgdXNlIG9mICdkZWYnIGluIF9QeVN0YXRlX0FkZE1vZHVsZSgpLgotICBJbml0aWFsIHBhdGNoIGJ5IENocmlzdGlhbiBIZWltZXMuCi0KLS0gSXNzdWUgIzI2MDIwOiBzZXQgbGl0ZXJhbCBldmFsdWF0aW9uIG9yZGVyIGRpZCBub3QgbWF0Y2ggZG9jdW1lbnRlZCBiZWhhdmlvdXIuCi0KLS0gSXNzdWUgIzI3NzgyOiBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGltcG9ydCBub3cgY29ycmVjdGx5IGFsbG93cyB0aGUKLSAgYGBtX21ldGhvZHNgYCBmaWVsZCB0byBiZSB1c2VkIHRvIGFkZCBtb2R1bGUgbGV2ZWwgZnVuY3Rpb25zIHRvIGluc3RhbmNlcwotICBvZiBub24tbW9kdWxlIHR5cGVzIHJldHVybmVkIGZyb20gYGBQeV9jcmVhdGVfbW9kYGAuIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzkzNjogVGhlIHJvdW5kKCkgZnVuY3Rpb24gYWNjZXB0ZWQgYSBzZWNvbmQgTm9uZSBhcmd1bWVudAotICBmb3Igc29tZSB0eXBlcyBidXQgbm90IGZvciBvdGhlcnMuICBGaXhlZCB0aGUgaW5jb25zaXN0ZW5jeSBieQotICBhY2NlcHRpbmcgTm9uZSBmb3IgYWxsIG51bWVyaWMgdHlwZXMuCi0KLS0gSXNzdWUgIzI3NDg3OiBXYXJuIGlmIGEgc3VibW9kdWxlIGFyZ3VtZW50IHRvICJweXRob24gLW0iIG9yCi0gIHJ1bnB5LnJ1bl9tb2R1bGUoKSBpcyBmb3VuZCBpbiBzeXMubW9kdWxlcyBhZnRlciBwYXJlbnQgcGFja2FnZXMgYXJlCi0gIGltcG9ydGVkLCBidXQgYmVmb3JlIHRoZSBzdWJtb2R1bGUgaXMgZXhlY3V0ZWQuCi0KLS0gSXNzdWUgIzI3NTU4OiBGaXggYSBTeXN0ZW1FcnJvciBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgInJhaXNlIiBzdGF0ZW1lbnQuCi0gIEluIGEgYnJhbmQgbmV3IHRocmVhZCwgcmFpc2UgYSBSdW50aW1lRXJyb3Igc2luY2UgdGhlcmUgaXMgbm8gYWN0aXZlCi0gIGV4Y2VwdGlvbiB0byByZXJhaXNlLiBQYXRjaCB3cml0dGVuIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzQxOTogU3RhbmRhcmQgX19pbXBvcnRfXygpIG5vIGxvbmdlciBsb29rIHVwICJfX2ltcG9ydF9fIiBpbiBnbG9iYWxzCi0gIG9yIGJ1aWx0aW5zIGZvciBpbXBvcnRpbmcgc3VibW9kdWxlcyBvciAiZnJvbSBpbXBvcnQiLiAgRml4ZWQgaGFuZGxpbmcgYW4KLSAgZXJyb3Igb2Ygbm9uLXN0cmluZyBwYWNrYWdlIG5hbWUuCi0KLS0gSXNzdWUgIzI3MDgzOiBSZXNwZWN0IHRoZSBQWVRIT05DQVNFT0sgZW52aXJvbm1lbnQgdmFyaWFibGUgdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjMjc1MTQ6IE1ha2UgaGF2aW5nIHRvbyBtYW55IHN0YXRpY2FsbHkgbmVzdGVkIGJsb2NrcyBhIFN5bnRheEVycm9yCi0gIGluc3RlYWQgb2YgU3lzdGVtRXJyb3IuCi0KLS0gSXNzdWUgIzI3NDczOiBGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIGJ5dGVzIGFuZCBieXRlYXJyYXkKLSAgY29uY2F0ZW5hdGlvbnMuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc1MDc6IEFkZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoIGJ5Ci0gIFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzU4MTogRG9uJ3QgcmVseSBvbiB3cmFwcGluZyBmb3Igb3ZlcmZsb3cgY2hlY2sgaW4KLSAgUHlTZXF1ZW5jZV9UdXBsZSgpLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3NDQzOiBfX2xlbmd0aF9oaW50X18oKSBvZiBieXRlYXJyYXkgaXRlcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYQotICBuZWdhdGl2ZSBpbnRlZ2VyIGZvciBhIHJlc2l6ZWQgYnl0ZWFycmF5LgorLSBJc3N1ZSAjMjYxODI6IFJhaXNlIERlcHJlY2F0aW9uV2FybmluZyB3aGVuIGFzeW5jIGFuZCBhd2FpdCBrZXl3b3JkcyBhcmUKKyAgdXNlZCBhcyB2YXJpYWJsZS9hdHRyaWJ1dGUvY2xhc3MvZnVuY3Rpb24gbmFtZS4KIAogTGlicmFyeQogLS0tLS0tLQogCistIElzc3VlICMyNzE4MSByZW1vdmUgc3RhdGlzdGljcy5nZW9tZXRyaWNfbWVhbiBhbmQgZGVmZXIgdW50aWwgMy43LgorCistIElzc3VlICMyODIyOTogbHptYSBtb2R1bGUgbm93IHN1cHBvcnRzIHBhdGhsaWIuCisKIC0gSXNzdWUgIzI4MzIxOiBGaXhlZCB3cml0aW5nIG5vbi1CTVAgY2hhcmFjdGVycyB3aXRoIGJpbmFyeSBmb3JtYXQgaW4gcGxpc3RsaWIuCiAKKy0gSXNzdWUgIzI4MjI1OiBiejIgbW9kdWxlIG5vdyBzdXBwb3J0cyBwYXRobGliLiAgSW5pdGlhbCBwYXRjaCBieSBFdGhhbiBGdXJtYW4uCisKKy0gSXNzdWUgIzI4MjI3OiBnemlwIG5vdyBzdXBwb3J0cyBwYXRobGliLiAgUGF0Y2ggYnkgRXRoYW4gRnVybWFuLgorCistIElzc3VlICMyNzM1ODogT3B0aW1pemVkIG1lcmdpbmcgdmFyLWtleXdvcmQgYXJndW1lbnRzIGFuZCBpbXByb3ZlZCBlcnJvcgorICBtZXNzYWdlIHdoZW4gcGFzcyBhIG5vbi1tYXBwaW5nIGFzIGEgdmFyLWtleXdvcmQgYXJndW1lbnQuCisKKy0gSXNzdWUgIzI4MjU3OiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlIHdoZW4gcGFzcyBhIG5vbi1pdGVyYWJsZSBhcworICBhIHZhci1wb3NpdGlvbmFsIGFyZ3VtZW50LiAgQWRkZWQgb3Bjb2RlIEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwuCisKIC0gSXNzdWUgIzI4MzIyOiBGaXhlZCBwb3NzaWJsZSBjcmFzaGVzIHdoZW4gdW5waWNrbGUgaXRlcnRvb2xzIG9iamVjdHMgZnJvbQogICBpbmNvcnJlY3QgcGlja2xlIGRhdGEuICBCYXNlZCBvbiBwYXRjaCBieSBKb2huIExlaXRjaC4KIAotLSBGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvd3MgYW5kIGNyYXNoZXMgaW4gdGhlIG1tYXAgbW9kdWxlIHdpdGggdW51c3VhbAotICB1c2FnZSBwYXR0ZXJucy4KKy0gSXNzdWUgIzI4MjI4OiBpbWdoZHIgbm93IHN1cHBvcnRzIHBhdGhsaWIuCiAKLS0gSXNzdWUgIzE3MDMxNzg6IEZpeCB0aGUgYWJpbGl0eSB0byBwYXNzIHRoZSAtLWxpbmstb2JqZWN0cyBvcHRpb24gdG8gdGhlCi0gIGRpc3R1dGlscyBidWlsZF9leHQgY29tbWFuZC4KKy0gSXNzdWUgIzI4MjI2OiBjb21waWxlYWxsIG5vdyBzdXBwb3J0cyBwYXRobGliLgorCistIElzc3VlICMyODMxNDogRml4IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIChDIGZsYWdzKSBmb3IgdGhlIGdldGl0ZXJhdG9yKCkgbWV0aG9kCisgIG9mIHhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50LgorCistIElzc3VlICMyODE0ODogU3RvcCB1c2luZyBsb2NhbHRpbWUoKSBhbmQgZ210aW1lKCkgaW4gdGhlIHRpbWUKKyAgbW9kdWxlLgorCisgIEludHJvZHVjZWQgcGxhdGZvcm0gaW5kZXBlbmRlbnQgX1B5VGltZV9sb2NhbHRpbWUgQVBJIHRoYXQgaXMKKyAgc2ltaWxhciB0byBQT1NJWCBsb2NhbHRpbWVfciwgYnV0IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLiAgUGF0Y2gKKyAgYnkgRWQgU2Nob3V0ZW4uCiAKIC0gSXNzdWUgIzI4MjUzOiBGaXhlZCBjYWxlbmRhciBmdW5jdGlvbnMgZm9yIGV4dHJlbWUgbW9udGhzOiAwMDAxLTAxCiAgIGFuZCA5OTk5LTEyLgpAQCAtMTE0LDEwICs5NywxNSBAQAogLSBJc3N1ZSAjMjc4OTc6IEZpeGVkIHBvc3NpYmxlIGNyYXNoIGluIHNxbGl0ZTMuQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkKICAgaWYgcGFzcyBpbnZhbGlkIHN0cmluZy1saWtlIG9iamVjdCBhcyBhIG5hbWUuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KIAorLSBJc3N1ZSAjMTg4NDQ6IHJhbmRvbS5jaG9pY2VzKCkgbm93IGhhcyBrIGFzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9mIGNvbW1vbiBjYXNlcyBhbmQgdGhlIGNvbWUgaW50byBsaW5lCisgIHdpdGggdGhlIHNpZ25hdHVyZSB1c2VkIGluIG90aGVyIGxhbmd1YWdlcy4KKwogLSBJc3N1ZSAjMTg4OTM6IEZpeCBpbnZhbGlkIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiBMaWIvY3R5cGVzL21hY2hvbGliL2R5bGQucHkuCiAgIFBhdGNoIGJ5IE1hZGlzb24gTWF5LgogCiAtIElzc3VlICMyNzYxMTogRml4ZWQgc3VwcG9ydCBvZiBkZWZhdWx0IHJvb3Qgd2luZG93IGluIHRoZSB0a2ludGVyLnRpeCBtb2R1bGUuCisgIEFkZGVkIHRoZSBtYXN0ZXIgcGFyYW1ldGVyIGluIHRoZSBEaXNwbGF5U3R5bGUgY29uc3RydWN0b3IuCiAKIC0gSXNzdWUgIzI3MzQ4OiBJbiB0aGUgdHJhY2ViYWNrIG1vZHVsZSwgcmVzdG9yZSB0aGUgZm9ybWF0dGluZyBvZiBleGNlcHRpb24KICAgbWVzc2FnZXMgbGlrZSAiRXhjZXB0aW9uOiBOb25lIi4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4KQEAgLTEyNSw2ICsxMTMsMTUgQEAKIAogLSBJc3N1ZSAjMjU2NTE6IEFsbG93IGZhbHN5IHZhbHVlcyB0byBiZSB1c2VkIGZvciBtc2cgcGFyYW1ldGVyIG9mIHN1YlRlc3QoKS4KIAorLSBJc3N1ZSAjMjc3Nzg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIG9zLmdldHJhbmRvbSgpIHdoZW4gdGhlIGdldHJhbmRvbSgpIGlzCisgIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCBhIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhIFB5dGhvbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzI4MjAwOiBGaXggbWVtb3J5IGxlYWsgb24gV2luZG93cyBpbiB0aGUgb3MgbW9kdWxlIChmaXgKKyAgcGF0aF9jb252ZXJ0ZXIoKSBmdW5jdGlvbikuCisKKy0gSXNzdWUgIzI1NDAwOiBSb2JvdEZpbGVQYXJzZXIgbm93IGNvcnJlY3RseSByZXR1cm5zIGRlZmF1bHQgdmFsdWVzIGZvcgorICBjcmF3bF9kZWxheSBhbmQgcmVxdWVzdF9yYXRlLiAgSW5pdGlhbCBwYXRjaCBieSBQZXRlciBXaXJ0ei4KKwogLSBJc3N1ZSAjMjc5MzI6IFByZXZlbnQgbWVtb3J5IGxlYWsgaW4gd2luMzJfdmVyKCkuCiAKIC0gRml4IFVuYm91bmRMb2NhbEVycm9yIGluIHNvY2tldC5fc2VuZGZpbGVfdXNlX3NlbmRmaWxlLgpAQCAtMTMyLDYgKzEyOSwxMCBAQAogLSBJc3N1ZSAjMjgwNzU6IENoZWNrIGZvciBFUlJPUl9BQ0NFU1NfREVOSUVEIGluIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YKICAgb3Muc3RhdCgpLiAgUGF0Y2ggYnkgRXJ5ayBTdW4uCiAKKy0gSXNzdWUgIzIyNDkzOiBXYXJuaW5nIG1lc3NhZ2UgZW1pdHRlZCBieSB1c2luZyBpbmxpbmUgZmxhZ3MgaW4gdGhlIG1pZGRsZSBvZgorICByZWd1bGFyIGV4cHJlc3Npb24gbm93IGNvbnRhaW5zIGEgKHRydW5jYXRlZCkgcmVnZXggcGF0dGVybi4KKyAgUGF0Y2ggYnkgVGltIEdyYWhhbS4KKwogLSBJc3N1ZSAjMjUyNzA6IFByZXZlbnQgY29kZWNzLmVzY2FwZV9lbmNvZGUoKSBmcm9tIHJhaXNpbmcgU3lzdGVtRXJyb3Igd2hlbgogICBhbiBlbXB0eSBieXRlc3RyaW5nIGlzIHBhc3NlZC4KIApAQCAtMTQwLDIwICsxNDEsMjkzIEBACiAtIElzc3VlICMyNTg5NTogRW5hYmxlIFdlYlNvY2tldCBVUkwgc2NoZW1lcyBpbiB1cmxsaWIucGFyc2UudXJsam9pbi4KICAgUGF0Y2ggYnkgR2VyZ2VseSBJbXJlaCBhbmQgTWFya3VzIEhvbHRlcm1hbm4uCiAKKy0gSXNzdWUgIzI4MTE0OiBGaXggYSBjcmFzaCBpbiBwYXJzZV9lbnZsaXN0KCkgd2hlbiBlbnYgY29udGFpbnMgYnl0ZSBzdHJpbmdzLgorICBQYXRjaCBieSBFcnlrIFN1bi4KKwogLSBJc3N1ZSAjMjc1OTk6IEZpeGVkIGJ1ZmZlciBvdmVycnVuIGluIGJpbmFzY2lpLmIyYV9xcCgpIGFuZCBiaW5hc2NpaS5hMmJfcXAoKS4KIAotLSBJc3N1ZSAjMTkwMDM6bSBlbWFpbC5nZW5lcmF0b3Igbm93IHJlcGxhY2VzIG9ubHkgXHIgYW5kL29yIFxuIGxpbmUKLSAgZW5kaW5ncywgcGVyIHRoZSBSRkMsIGluc3RlYWQgb2YgYWxsIHVuaWNvZGUgbGluZSBlbmRpbmdzLgorLSBJc3N1ZSAjMjc5MDY6IEZpeCBzb2NrZXQgYWNjZXB0IGV4aGF1c3Rpb24gZHVyaW5nIGhpZ2ggVENQIHRyYWZmaWMuCisgIFBhdGNoIGJ5IEtldmluIENvbndheS4KKworLSBJc3N1ZSAjMjgxNzQ6IEhhbmRsZSB3aGVuIFNPX1JFVVNFUE9SVCBpc24ndCBwcm9wZXJseSBzdXBwb3J0ZWQuCisgIFBhdGNoIGJ5IFNldGggTWljaGFlbCBMYXJzb24uCisKKy0gSXNzdWUgIzI2NjU0OiBJbnNwZWN0IGZ1bmN0b29scy5wYXJ0aWFsIGluIGFzeW5jaW8uSGFuZGxlLl9fcmVwcl9fLgorICBQYXRjaCBieSBpY2Vib3kuCisKKy0gSXNzdWUgIzI2OTA5OiBGaXggc2xvdyBwaXBlcyBJTyBpbiBhc3luY2lvLgorICBQYXRjaCBieSBJTkFEQSBOYW9raS4KKworLSBJc3N1ZSAjMjgxNzY6IEZpeCBjYWxsYmFja3MgcmFjZSBpbiBhc3luY2lvLlNlbGVjdG9yTG9vcC5zb2NrX2Nvbm5lY3QuCisKKy0gSXNzdWUgIzI3NzU5OiBGaXggc2VsZWN0b3JzIGluY29ycmVjdGx5IHJldGFpbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCisgIFBhdGNoIGJ5IE1hcmsgV2lsbGlhbXMuCisKKy0gSXNzdWUgIzI4MzY4OiBSZWZ1c2UgbW9uaXRvcmluZyBwcm9jZXNzZXMgaWYgdGhlIGNoaWxkIHdhdGNoZXIgaGFzIG5vCisgIGxvb3AgYXR0YWNoZWQuCisgIFBhdGNoIGJ5IFZpbmNlbnQgTWljaGVsLgorCistIElzc3VlICMyODM2OTogUmFpc2UgUnVudGltZUVycm9yIHdoZW4gdHJhbnNwb3J0J3MgRkQgaXMgdXNlZCB3aXRoCisgIGFkZF9yZWFkZXIsIGFkZF93cml0ZXIsIGV0Yy4KKworLSBJc3N1ZSAjMjgzNzA6IFNwZWVkdXAgYXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZGV4YWN0bHkuCisgIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KKworLSBJc3N1ZSAjMjgzNzE6IERlcHJlY2F0ZSBwYXNzaW5nIGFzeW5jaW8uSGFuZGxlcyB0byBydW5faW5fZXhlY3V0b3IuCisKKy0gSXNzdWUgIzI4MzcyOiBGaXggYXN5bmNpbyB0byBzdXBwb3J0IGZvcm1hdHRpbmcgb2Ygbm9uLXB5dGhvbiBjb3JvdXRpbmVzLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI4MjUxOiBJbXByb3ZlbWVudHMgdG8gaGVscCBtYW51YWxzIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI4MTEwOiBsYXVuY2hlci5tc2kgaGFzIGRpZmZlcmVudCBwcm9kdWN0IGNvZGVzIGJldHdlZW4gMzItYml0IGFuZAorICA2NC1iaXQKKworLSBJc3N1ZSAjMjgxNjE6IE9wZW5pbmcgQ09OIGZvciB3cml0ZSBhY2Nlc3MgZmFpbHMKKworLSBJc3N1ZSAjMjgxNjI6IFdpbmRvd3NDb25zb2xlSU8gcmVhZGFsbCgpIGZhaWxzIGlmIGZpcnN0IGxpbmUgc3RhcnRzIHdpdGgKKyAgQ3RybCtaCisKKy0gSXNzdWUgIzI4MTYzOiBXaW5kb3dzQ29uc29sZUlPIGZpbGVubygpIHBhc3NlcyB3cm9uZyBmbGFncyB0bworICBfb3Blbl9vc2ZoYW5kbGUKKworLSBJc3N1ZSAjMjgxNjQ6IF9QeUlPX2dldF9jb25zb2xlX3R5cGUgZmFpbHMgZm9yIHZhcmlvdXMgcGF0aHMKKworLSBJc3N1ZSAjMjgxMzc6IFJlbmFtZXMgV2luZG93cyBwYXRoIGZpbGUgdG8gLl9wdGgKKworLSBJc3N1ZSAjMjgxMzg6IFdpbmRvd3MgLl9wdGggZmlsZSBzaG91bGQgYWxsb3cgaW1wb3J0IHNpdGUKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI4MjU4OiBGaXhlZCBidWlsZCB3aXRoIEVzdG9uaWFuIGxvY2FsZSAocHl0aG9uLWNvbmZpZyBhbmQgZGlzdGNsZWFuCisgIHRhcmdldHMgaW4gTWFrZWZpbGUpLiAgUGF0Y2ggYnkgQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMuCisKKy0gSXNzdWUgIzI2NjYxOiBzZXR1cC5weSBub3cgZGV0ZWN0cyBzeXN0ZW0gbGliZmZpIHdpdGggbXVsdGlhcmNoIHdyYXBwZXIuCisKKy0gSXNzdWUgIzE1ODE5OiBSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGUgc2VhcmNoIGRpcmVjdG9yeSBvcHRpb24gZm9yIGJ1aWxkaW5nCisgIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjgyMTc6IEFkZHMgX3Rlc3Rjb25zb2xlIG1vZHVsZSB0byB0ZXN0IGNvbnNvbGUgaW5wdXQuCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGJldGEgMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDktMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyMzcyMjogVGhlIF9fY2xhc3NfXyBjZWxsIHVzZWQgYnkgemVyby1hcmd1bWVudCBzdXBlcigpIGlzIG5vdworICBpbml0aWFsaXplZCBmcm9tIHR5cGUuX19uZXdfXyByYXRoZXIgdGhhbiBfX2J1aWxkX2NsYXNzX18sIHNvIGNsYXNzIG1ldGhvZHMKKyAgcmVseWluZyBvbiB0aGF0IHdpbGwgbm93IHdvcmsgY29ycmVjdGx5IHdoZW4gY2FsbGVkIGZyb20gbWV0YWNsYXNzIG1ldGhvZHMKKyAgZHVyaW5nIGNsYXNzIGNyZWF0aW9uLiBQYXRjaCBieSBNYXJ0aW4gVGVpY2htYW5uLgorCistIElzc3VlICMyNTIyMTogRml4IGNvcnJ1cHRlZCByZXN1bHQgZnJvbSBQeUxvbmdfRnJvbUxvbmcoMCkgd2hlbiBQeXRob24KKyAgaXMgY29tcGlsZWQgd2l0aCBOU01BTExQT1NJTlRTID0gMC4KKworLSBJc3N1ZSAjMjcwODA6IEltcGxlbWVudCBmb3JtYXR0aW5nIHN1cHBvcnQgZm9yIFBFUCA1MTUuICBJbml0aWFsIHBhdGNoCisgIGJ5IENocmlzIEFuZ2VsaWNvLgorCistIElzc3VlICMyNzE5OTogSW4gdGFyZmlsZSwgZXhwb3NlIGNvcHlmaWxlb2JqIGJ1ZnNpemUgdG8gaW1wcm92ZSB0aHJvdWdocHV0LgorICBQYXRjaCBieSBKYXNvbiBGcmllZC4KKworLSBJc3N1ZSAjMjc5NDg6IEluIGYtc3RyaW5ncywgb25seSBhbGxvdyBiYWNrc2xhc2hlcyBpbnNpZGUgdGhlIGJyYWNlcworICAod2hlcmUgdGhlIGV4cHJlc3Npb25zIGFyZSkuICBUaGlzIGlzIGEgYnJlYWtpbmcgY2hhbmdlIGZyb20gdGhlIDMuNgorICBhbHBoYSByZWxlYXNlcywgd2hlcmUgYmFja3NsYXNoZXMgYXJlIGFsbG93ZWQgYW55d2hlcmUgaW4gYW4KKyAgZi1zdHJpbmcuICBBbHNvLCByZXF1aXJlIHRoYXQgZXhwcmVzc2lvbnMgaW5zaWRlIGYtc3RyaW5ncyBiZQorICBlbmNsb3NlZCB3aXRoaW4gbGl0ZXJhbCBicmFjZXMsIGFuZCBub3QgZXNjYXBlcyBsaWtlCisgIGYnXHg3YiJoaSJceDdkJy4KKworLSBJc3N1ZSAjMjgwNDY6IFJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3RvcmllcyBmcm9tIHN5cy5wYXRoLgorCistIElzc3VlICMyODA3MTogQWRkIGVhcmx5LW91dCBmb3IgZGlmZmVyZW5jaW5nIGZyb20gYW4gZW1wdHkgc2V0LgorCistIElzc3VlICMyNTc1ODogUHJldmVudHMgemlwaW1wb3J0IGZyb20gdW5uZWNlc3NhcmlseSBlbmNvZGluZyBhIGZpbGVuYW1lCisgIChwYXRjaCBieSBFcnlrIFN1bikKKworLSBJc3N1ZSAjMjU4NTY6IFRoZSBfX21vZHVsZV9fIGF0dHJpYnV0ZSBvZiBleHRlbnNpb24gY2xhc3NlcyBhbmQgZnVuY3Rpb25zCisgIG5vdyBpcyBpbnRlcm5lZC4gVGhpcyBsZWFkcyB0byBtb3JlIGNvbXBhY3QgcGlja2xlIGRhdGEgd2l0aCBwcm90b2NvbCA0LgorCistIElzc3VlICMyNzIxMzogUmV3b3JrIENBTExfRlVOQ1RJT04qIG9wY29kZXMgdG8gcHJvZHVjZSBzaG9ydGVyIGFuZCBtb3JlCisgIGVmZmljaWVudCBieXRlY29kZS4gUGF0Y2ggYnkgRGVtdXIgUnVtZWQsIGRlc2lnbiBieSBTZXJoaXkgU3RvcmNoYWthLAorICByZXZpZXdlZCBieSBTZXJoaXkgU3RvcmNoYWthIGFuZCBWaWN0b3IgU3Rpbm5lci4KKworLSBJc3N1ZSAjMjYzMzE6IEltcGxlbWVudCB0b2tlbml6aW5nIHN1cHBvcnQgZm9yIFBFUCA1MTUuIFBhdGNoIGJ5IEdlb3JnIEJyYW5kbC4KKworLSBJc3N1ZSAjMjc5OTk6IE1ha2UgImdsb2JhbCBhZnRlciB1c2UiIGEgU3ludGF4RXJyb3IsIGFuZCBkaXR0byBmb3Igbm9ubG9jYWwuCisgIFBhdGNoIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworLSBJc3N1ZSAjMjgwMDM6IEltcGxlbWVudCBQRVAgNTI1IC0tIEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzLgorCistIElzc3VlICMyNzk4NTogSW1wbGVtZW50IFBFUCA1MjYgLS0gU3ludGF4IGZvciBWYXJpYWJsZSBBbm5vdGF0aW9ucy4KKyAgUGF0Y2ggYnkgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMyNjA1ODogQWRkIGEgbmV3IHByaXZhdGUgdmVyc2lvbiB0byB0aGUgYnVpbHRpbiBkaWN0IHR5cGUsIGluY3JlbWVudGVkCisgIGF0IGVhY2ggZGljdGlvbmFyeSBjcmVhdGlvbiBhbmQgYXQgZWFjaCBkaWN0aW9uYXJ5IGNoYW5nZS4gSW1wbGVtZW50YXRpb24gb2YKKyAgdGhlIFBFUCA1MDkuCisKKy0gSXNzdWUgIzI3MzY0OiBBIGJhY2tzbGFzaC1jaGFyYWN0ZXIgcGFpciB0aGF0IGlzIG5vdCBhIHZhbGlkIGVzY2FwZSBzZXF1ZW5jZQorICBub3cgZ2VuZXJhdGVzIGEgRGVwcmVjYXRpb25XYXJuaW5nLiAgUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjczNTA6IGBkaWN0YCBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkIGxpa2UgUHlQeS4gSXQgaXMgbW9yZSBjb21wYWN0CisgIGFuZCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyLgorICAoQ29uY2VwdCBkZXZlbG9wZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIgYW5kIHBhdGNoIGJ5IEluYWRhIE5hb2tpLikKKworLSBJc3N1ZSAjMjc5MTE6IFJlbW92ZSB1bm5lY2Vzc2FyeSBlcnJvciBjaGVja3MgaW4KKyAgYGBleGVjX2J1aWx0aW5fb3JfZHluYW1pYygpYGAuCisKKy0gSXNzdWUgIzI3MDc4OiBBZGRlZCBCVUlMRF9TVFJJTkcgb3Bjb2RlLiAgT3B0aW1pemVkIGYtc3RyaW5ncyBldmFsdWF0aW9uLgorCistIElzc3VlICMxNzg4NDogUHl0aG9uIG5vdyByZXF1aXJlcyBzeXN0ZW1zIHdpdGggaW50dHlwZXMuaCBhbmQgc3RkaW50LmgKKworLSBJc3N1ZSAjMjc5NjE6IFJlcXVpcmUgcGxhdGZvcm1zIHRvIHN1cHBvcnQgYGBsb25nIGxvbmdgYC4gUHl0aG9uIGhhc24ndAorICBjb21waWxlZCB3aXRob3V0IGBgbG9uZyBsb25nYGAgZm9yIHllYXJzLCBzbyB0aGlzIGlzIGJhc2ljYWxseSBhIGZvcm1hbGl0eS4KKworLSBJc3N1ZSAjMjczNTU6IFJlbW92ZWQgc3VwcG9ydCBmb3IgV2luZG93cyBDRS4gIEl0IHdhcyBuZXZlciBmaW5pc2hlZCwKKyAgYW5kIFdpbmRvd3MgQ0UgaXMgbm8gbG9uZ2VyIGEgcmVsZXZhbnQgcGxhdGZvcm0gZm9yIFB5dGhvbi4KKworLSBJbXBsZW1lbnQgUEVQIDUyMy4KKworLSBJc3N1ZSAjMjc4NzA6IEEgbGVmdCBzaGlmdCBvZiB6ZXJvIGJ5IGEgbGFyZ2UgaW50ZWdlciBubyBsb25nZXIgYXR0ZW1wdHMKKyAgdG8gYWxsb2NhdGUgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCisKKy0gSXNzdWUgIzI1NDAyOiBJbiBpbnQtdG8tZGVjaW1hbC1zdHJpbmcgY29udmVyc2lvbiwgaW1wcm92ZSB0aGUgZXN0aW1hdGUKKyAgb2YgdGhlIGludGVybWVkaWF0ZSBtZW1vcnkgcmVxdWlyZWQsIGFuZCByZW1vdmUgYW4gdW5uZWNlc3NhcmlseSBzdHJpY3QKKyAgb3ZlcmZsb3cgY2hlY2suIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI3MjE0OiBJbiBsb25nX2ludmVydCwgYmUgbW9yZSBjYXJlZnVsIGFib3V0IG1vZGlmeWluZyBvYmplY3QKKyAgcmV0dXJuZWQgYnkgbG9uZ19hZGQsIGFuZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgY2hlY2sgZm9yIHNtYWxsIGxvbmdzLgorICBUaGFua3MgT3JlbiBNaWxtYW4gZm9yIGFuYWx5c2lzIGFuZCBwYXRjaC4KKworLSBJc3N1ZSAjMjc1MDY6IFN1cHBvcnQgcGFzc2luZyB0aGUgYnl0ZXMvYnl0ZWFycmF5LnRyYW5zbGF0ZSgpICJkZWxldGUiCisgIGFyZ3VtZW50IGJ5IGtleXdvcmQuCisKKy0gSXNzdWUgIzI3ODEyOiBQcm9wZXJseSBjbGVhciBvdXQgYSBnZW5lcmF0b3IncyBmcmFtZSdzIGJhY2tyZWZlcmVuY2UgdG8gdGhlCisgIGdlbmVyYXRvciB0byBwcmV2ZW50IGNyYXNoZXMgaW4gZnJhbWUuY2xlYXIoKS4KKworLSBJc3N1ZSAjMjc4MTE6IEZpeCBhIGNyYXNoIHdoZW4gYSBjb3JvdXRpbmUgdGhhdCBoYXMgbm90IGJlZW4gYXdhaXRlZCBpcworICBmaW5hbGl6ZWQgd2l0aCB3YXJuaW5ncy1hcy1lcnJvcnMgZW5hYmxlZC4KKworLSBJc3N1ZSAjMjc1ODc6IEZpeCBhbm90aGVyIGlzc3VlIGZvdW5kIGJ5IFBWUy1TdHVkaW86IE51bGwgcG9pbnRlciBjaGVjaworICBhZnRlciB1c2Ugb2YgJ2RlZicgaW4gX1B5U3RhdGVfQWRkTW9kdWxlKCkuCisgIEluaXRpYWwgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KKworLSBJc3N1ZSAjMjc3OTI6IFRoZSBtb2R1bG8gb3BlcmF0aW9uIGFwcGxpZWQgdG8gYGBib29sYGAgYW5kIG90aGVyCisgIGBgaW50YGAgc3ViY2xhc3NlcyBub3cgYWx3YXlzIHJldHVybnMgYW4gYGBpbnRgYC4gUHJldmlvdXNseQorICB0aGUgcmV0dXJuIHR5cGUgZGVwZW5kZWQgb24gdGhlIGlucHV0IHZhbHVlcy4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI2OTg0OiBpbnQoKSBub3cgYWx3YXlzIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgZXhhY3QgaW50LgorCistIElzc3VlICMyNTYwNDogRml4IGEgbWlub3IgYnVnIGluIGludGVnZXIgdHJ1ZSBkaXZpc2lvbjsgdGhpcyBidWcgY291bGQKKyAgcG90ZW50aWFsbHkgaGF2ZSBjYXVzZWQgb2ZmLWJ5LW9uZS11bHAgcmVzdWx0cyBvbiBwbGF0Zm9ybXMgd2l0aAorICB1bnJlbGlhYmxlIGxkZXhwIGltcGxlbWVudGF0aW9ucy4KKworLSBJc3N1ZSAjMjQyNTQ6IE1ha2UgY2xhc3MgZGVmaW5pdGlvbiBuYW1lc3BhY2Ugb3JkZXJlZCBieSBkZWZhdWx0LgorCistIElzc3VlICMyNzY2MjogRml4IGFuIG92ZXJmbG93IGNoZWNrIGluIGBgTGlzdF9OZXdgYDogdGhlIG9yaWdpbmFsIGNvZGUgd2FzCisgIGNoZWNraW5nIGFnYWluc3QgYGBQeV9TSVpFX01BWGBgIGluc3RlYWQgb2YgdGhlIGNvcnJlY3QgdXBwZXIgYm91bmQgb2YKKyAgYGBQeV9TU0laRV9UX01BWGBgLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc3ODI6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW1wb3J0IG5vdyBjb3JyZWN0bHkgYWxsb3dzIHRoZQorICBgYG1fbWV0aG9kc2BgIGZpZWxkIHRvIGJlIHVzZWQgdG8gYWRkIG1vZHVsZSBsZXZlbCBmdW5jdGlvbnMgdG8gaW5zdGFuY2VzCisgIG9mIG5vbi1tb2R1bGUgdHlwZXMgcmV0dXJuZWQgZnJvbSBgYFB5X2NyZWF0ZV9tb2RgYC4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3OTM2OiBUaGUgcm91bmQoKSBmdW5jdGlvbiBhY2NlcHRlZCBhIHNlY29uZCBOb25lIGFyZ3VtZW50CisgIGZvciBzb21lIHR5cGVzIGJ1dCBub3QgZm9yIG90aGVycy4gIEZpeGVkIHRoZSBpbmNvbnNpc3RlbmN5IGJ5CisgIGFjY2VwdGluZyBOb25lIGZvciBhbGwgbnVtZXJpYyB0eXBlcy4KKworLSBJc3N1ZSAjMjc0ODc6IFdhcm4gaWYgYSBzdWJtb2R1bGUgYXJndW1lbnQgdG8gInB5dGhvbiAtbSIgb3IKKyAgcnVucHkucnVuX21vZHVsZSgpIGlzIGZvdW5kIGluIHN5cy5tb2R1bGVzIGFmdGVyIHBhcmVudCBwYWNrYWdlcyBhcmUKKyAgaW1wb3J0ZWQsIGJ1dCBiZWZvcmUgdGhlIHN1Ym1vZHVsZSBpcyBleGVjdXRlZC4KKworLSBJc3N1ZSAjMjcxNTc6IE1ha2Ugb25seSB0eXBlKCkgaXRzZWxmIGFjY2VwdCB0aGUgb25lLWFyZ3VtZW50IGZvcm0uCisgIFBhdGNoIGJ5IEVyeWsgU3VuIGFuZCBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzU1ODogRml4IGEgU3lzdGVtRXJyb3IgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mICJyYWlzZSIgc3RhdGVtZW50LgorICBJbiBhIGJyYW5kIG5ldyB0aHJlYWQsIHJhaXNlIGEgUnVudGltZUVycm9yIHNpbmNlIHRoZXJlIGlzIG5vIGFjdGl2ZQorICBleGNlcHRpb24gdG8gcmVyYWlzZS4gUGF0Y2ggd3JpdHRlbiBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjgwMDg6IEltcGxlbWVudCBQRVAgNTMwIC0tIGFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9ucy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyODAzNzogVXNlIHNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoKSBpbnN0ZWFkIG9mIHNldHRpbmcKKyAgQ29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbiBtYW51YWxseS4KKworLSBJc3N1ZSAjMjUyODM6IEF0dHJpYnV0ZXMgdG1fZ210b2ZmIGFuZCB0bV96b25lIGFyZSBub3cgYXZhaWxhYmxlIG9uCisgIGFsbCBwbGF0Zm9ybXMgaW4gdGhlIHJldHVybiB2YWx1ZXMgb2YgdGltZS5sb2NhbHRpbWUoKSBhbmQKKyAgdGltZS5nbXRpbWUoKS4KKworLSBJc3N1ZSAjMjQ0NTQ6IFJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaCBvYmplY3QgZ3JvdXBzIGFyZSBub3cKKyAgYWNjZXNzaWJsZSB1c2luZyBfX2dldGl0ZW1fXy4gICJtb1t4XSIgaXMgZXF1aXZhbGVudCB0bworICAibW8uZ3JvdXAoeCkiLgorCistIElzc3VlICMxMDc0MDogc3FsaXRlMyBubyBsb25nZXIgaW1wbGljaXRseSBjb21taXQgYW4gb3BlbiB0cmFuc2FjdGlvbgorICBiZWZvcmUgRERMIHN0YXRlbWVudHMuCisKKy0gSXNzdWUgIzE3OTQxOiBBZGQgYSAqbW9kdWxlKiBwYXJhbWV0ZXIgdG8gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpLgorCistIElzc3VlICMyMjQ5MzogSW5saW5lIGZsYWdzIG5vdyBzaG91bGQgYmUgdXNlZCBvbmx5IGF0IHRoZSBzdGFydCBvZiB0aGUKKyAgcmVndWxhciBleHByZXNzaW9uLiAgRGVwcmVjYXRpb24gd2FybmluZyBpcyBlbWl0dGVkIGlmIHVzZXMgdGhlbSBpbiB0aGUKKyAgbWlkZGxlIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uCisKKy0gSXNzdWUgIzI2ODg1OiB4bWxycGMgbm93IHN1cHBvcnRzIHVubWFyc2hhbGxpbmcgYWRkaXRpb25hbCBkYXRhIHR5cGVzIHVzZWQKKyAgYnkgQXBhY2hlIFhNTC1SUEMgaW1wbGVtZW50YXRpb24gZm9yIG51bWVyaWNzIGFuZCBOb25lLgorCistIElzc3VlICMyODA3MDogRml4ZWQgcGFyc2luZyBpbmxpbmUgdmVyYm9zZSBmbGFnIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKKy0gSXNzdWUgIzE5NTAwOiBBZGQgY2xpZW50LXNpZGUgU1NMIHNlc3Npb24gcmVzdW1wdGlvbiB0byB0aGUgc3NsIG1vZHVsZS4KKworLSBJc3N1ZSAjMjgwMjI6IERlcHJlY2F0ZSBzc2wtcmVsYXRlZCBhcmd1bWVudHMgaW4gZmF2b3Igb2YgU1NMQ29udGV4dC4gVGhlCisgIGRlcHJlY2F0aW9uIGluY2x1ZGUgbWFudWFsIGNyZWF0aW9uIG9mIFNTTFNvY2tldCBhbmQgY2VydGZpbGUva2V5ZmlsZQorICAob3Igc2ltaWxhcikgaW4gZnRwbGliLCBodHRwbGliLCBpbWFwbGliLCBzbXRwbGliLCBwb3BsaWIgYW5kIHVybGxpYi4KKworLSBJc3N1ZSAjMjgwNDM6IFNTTENvbnRleHQgaGFzIGltcHJvdmVkIGRlZmF1bHQgc2V0dGluZ3M6IE9QX05PX1NTTHYyLAorICBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwKKyAgT1BfU0lOR0xFX0RIX1VTRSwgT1BfU0lOR0xFX0VDREhfVVNFIGFuZCBISUdIIGNpcGhlcnMgd2l0aG91dCBNRDUuCisKKy0gSXNzdWUgIzI0NjkzOiBDaGFuZ2VkIHNvbWUgUnVudGltZUVycm9yJ3MgaW4gdGhlIHppcGZpbGUgbW9kdWxlIHRvIG1vcmUKKyAgYXBwcm9wcmlhdGUgdHlwZXMuIEltcHJvdmVkIHNvbWUgZXJyb3IgbWVzc2FnZXMgYW5kIGRlYnVnZ2luZyBvdXRwdXQuCisKKy0gSXNzdWUgIzE3OTA5OiBgYGpzb24ubG9hZGBgIGFuZCBgYGpzb24ubG9hZHNgYCBub3cgc3VwcG9ydCBiaW5hcnkgaW5wdXQKKyAgZW5jb2RlZCBhcyBVVEYtOCwgVVRGLTE2IG9yIFVURi0zMi4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjcxMzc6IHRoZSBwdXJlIFB5dGhvbiBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBgYGZ1bmN0b29scy5wYXJ0aWFsYGAKKyAgbm93IG1hdGNoZXMgdGhlIGJlaGF2aW91ciBvZiBpdHMgYWNjZWxlcmF0ZWQgQyBjb3VudGVycGFydCBmb3Igc3ViY2xhc3NpbmcsCisgIHBpY2tsaW5nIGFuZCB0ZXh0IHJlcHJlc2VudGF0aW9uIHB1cnBvc2VzLiBQYXRjaCBieSBFbWFudWVsIEJhcnJ5IGFuZAorICBTZXJoaXkgU3RvcmNoYWthLgorCistIEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBhbmQgY3Jhc2hlcyBpbiB0aGUgbW1hcCBtb2R1bGUgd2l0aCB1bnVzdWFsCisgIHVzYWdlIHBhdHRlcm5zLgorCistIElzc3VlICMxNzAzMTc4OiBGaXggdGhlIGFiaWxpdHkgdG8gcGFzcyB0aGUgLS1saW5rLW9iamVjdHMgb3B0aW9uIHRvIHRoZQorICBkaXN0dXRpbHMgYnVpbGRfZXh0IGNvbW1hbmQuCiAKIC0gSXNzdWUgIzI4MDE5OiBpdGVydG9vbHMuY291bnQoKSBubyBsb25nZXIgcm91bmRzIG5vbi1pbnRlZ2VyIHN0ZXAgaW4gcmFuZ2UKICAgYmV0d2VlbiAxLjAgYW5kIDIuMCB0byAxLgogCistIElzc3VlICMxODQwMTogUGRiIG5vdyBzdXBwb3J0cyB0aGUgJ3JlYWRyYycga2V5d29yZCBhcmd1bWVudCB0byBjb250cm9sCisgIHdoZXRoZXIgLnBkYnJjIGZpbGVzIHNob3VsZCBiZSByZWFkLiAgUGF0Y2ggYnkgTWFydGluIE1hdHVzaWFrIGFuZAorICBTYW0gS2ltYnJlbC4KKwogLSBJc3N1ZSAjMjU5Njk6IFVwZGF0ZSB0aGUgbGliMnRvMyBncmFtbWFyIHRvIGhhbmRsZSB0aGUgdW5wYWNraW5nCiAgIGdlbmVyYWxpemF0aW9ucyBhZGRlZCBpbiAzLjUuCiAKIC0gSXNzdWUgIzE0OTc3OiBtYWlsY2FwIG5vdyByZXNwZWN0cyB0aGUgb3JkZXIgb2YgdGhlIGxpbmVzIGluIHRoZSBtYWlsY2FwCiAgIGZpbGVzICgiZmlyc3QgbWF0Y2giKSwgYXMgcmVxdWlyZWQgYnkgUkZDIDE1NDIuICBQYXRjaCBieSBNaWNoYWVsIExhemFyLgogCistIElzc3VlICMyODAyNTogQ29udmVydCBhbGwgc3NsIG1vZHVsZSBjb25zdGFudHMgdG8gSW50RW51bSBhbmQgSW50RmxhZ3MuCisgIFNTTENvbnRleHQgcHJvcGVydGllcyBub3cgcmV0dXJuIGZsYWdzIGFuZCBlbnVtcy4KKworLSBJc3N1ZSAjNDMzMDI4OiBBZGRlZCBzdXBwb3J0IG9mIG1vZGlmaWVyIHNwYW5zIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKIC0gSXNzdWUgIzI0NTk0OiBWYWxpZGF0ZXMgcGVyc2lzdCBwYXJhbWV0ZXIgd2hlbiBvcGVuaW5nIE1TSSBkYXRhYmFzZQogCiAtIElzc3VlICMxNzU4MjogeG1sLmV0cmVlLkVsZW1lbnRUcmVlIG5vd3MgcHJlc2VydmVzIHdoaXRlc3BhY2VzIGluIGF0dHJpYnV0ZXMKQEAgLTE2Miw5ICs0MzYsMTkgQEAKIC0gSXNzdWUgIzI4MDQ3OiBGaXhlZCBjYWxjdWxhdGlvbiBvZiBsaW5lIGxlbmd0aCB1c2VkIGZvciB0aGUgYmFzZTY0IENURQogICBpbiB0aGUgbmV3IGVtYWlsIHBvbGljaWVzLgogCistIElzc3VlICMyNzU3NjogRml4IGNhbGwgb3JkZXIgaW4gT3JkZXJlZERpY3QuX19pbml0X18oKS4KKworLSBlbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvciBub3cgc3VwcG9ydHMgdGhlIHBvbGljeSBrZXl3b3JkLgorCistIElzc3VlICMyODAyNzogUmVtb3ZlIHVuZG9jdW1lbnRlZCBtb2R1bGVzIGZyb20gYGBMaWIvcGxhdC0qYGA6IElOLCBDRFJPTSwKKyAgRExGQ04sIFRZUEVTLCBDRElPLCBhbmQgU1RST1BUUy4KKwogLSBJc3N1ZSAjMjc0NDU6IERvbid0IHBhc3Mgc3RyKF9jaGFyc2V0KSB0byBNSU1FVGV4dC5zZXRfcGF5bG9hZCgpLgogICBQYXRjaCBieSBDbGF1ZGUgUGFyb3ouCiAKKy0gSXNzdWUgIzI0Mjc3OiBUaGUgbmV3IGVtYWlsIEFQSSBpcyBubyBsb25nZXIgcHJvdmlzaW9uYWwsIGFuZCB0aGUgZG9jcworICBoYXZlIGJlZW4gcmVvcmdhbml6ZWQgYW5kIHJld3JpdHRlbiB0byBlbXBoYXNpemUgdGhlIG5ldyBBUEkuCisKIC0gSXNzdWUgIzIyNDUwOiB1cmxsaWIgbm93IGluY2x1ZGVzIGFuICJBY2NlcHQ6ICovKiIgaGVhZGVyIGFtb25nIHRoZQogICBkZWZhdWx0IGhlYWRlcnMuICBUaGlzIG1ha2VzIHRoZSByZXN1bHRzIG9mIFJFU1QgQVBJIHJlcXVlc3RzIG1vcmUKICAgY29uc2lzdGVudCBhbmQgcHJlZGljdGFibGUgZXNwZWNpYWxseSB3aGVuIHByb3h5IHNlcnZlcnMgYXJlIGludm9sdmVkLgpAQCAtMTczLDYgKzQ1NywxMCBAQAogICBiZXR3ZWVuIHJ1bnMgZ2l2ZW4gdGhlIHNhbWUgR3JhbW1hci50eHQgaW5wdXQgcmVnYXJkbGVzcyBvZiB0aGUgaGFzaAogICByYW5kb21pemF0aW9uIHNldHRpbmcuCiAKKy0gSXNzdWUgIzI4MDA1OiBBbGxvdyBJbXBvcnRFcnJvcnMgaW4gZW5jb2RpbmcgaW1wbGVtZW50YXRpb24gdG8gcHJvcGFnYXRlLgorCistIElzc3VlICMyNjY2NzogU3VwcG9ydCBwYXRoLWxpa2Ugb2JqZWN0cyBpbiBpbXBvcnRsaWIudXRpbC4KKwogLSBJc3N1ZSAjMjc1NzA6IEF2b2lkIHplcm8tbGVuZ3RoIG1lbWNweSgpIGV0YyBjYWxscyB3aXRoIG51bGwgc291cmNlCiAgIHBvaW50ZXJzIGluIHRoZSAiY3R5cGVzIiBhbmQgImFycmF5IiBtb2R1bGVzLgogCkBAIC0xODAsMTkgKzQ2OCw3MiBAQAogICBjaGFyYWN0ZXJzLCBub3Qgb24gYXJiaXRyYXJ5IHVuaWNvZGUgbGluZSBicmVha3MuICBUaGlzIGFsc28gZml4ZXMgYSBidWcgaW4KICAgSFRUUCBoZWFkZXIgcGFyc2luZy4KIAorLSBJc3N1ZSAyNzMzMTogVGhlIGVtYWlsLm1pbWUgY2xhc3NlcyBub3cgYWxsIGFjY2VwdCBhbiBvcHRpb25hbCBwb2xpY3kga2V5d29yZC4KKwogLSBJc3N1ZSAyNzk4ODogRml4IGVtYWlsIGl0ZXJfYXR0YWNobWVudHMgaW5jb3JyZWN0IG11dGF0aW9uIG9mIHBheWxvYWQgbGlzdC4KIAorLSBJc3N1ZSAjMTYxMTM6IEFkZCBTSEEtMyBhbmQgU0hBS0Ugc3VwcG9ydCB0byBoYXNobGliIG1vZHVsZS4KKworLSBFbGltaW5hdGUgYSB0YXV0b2xvZ2ljYWwtcG9pbnRlci1jb21wYXJlIHdhcm5pbmcgaW4gX3NjcHJveHkuYy4KKworLSBJc3N1ZSAjMjc3NzY6IFRoZSA6ZnVuYzpgb3MudXJhbmRvbWAgZnVuY3Rpb24gZG9lcyBub3cgYmxvY2sgb24gTGludXggMy4xNworICBhbmQgbmV3ZXIgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZCB0byBpbmNyZWFzZQorICB0aGUgc2VjdXJpdHkuIFRoaXMgY2hhbmdlIGlzIHBhcnQgb2YgdGhlIDpwZXA6YDUyNGAuCisKKy0gSXNzdWUgIzI3Nzc4OiBFeHBvc2UgdGhlIExpbnV4IGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGFzIGEgbmV3CisgIDpmdW5jOmBvcy5nZXRyYW5kb21gIGZ1bmN0aW9uLiBUaGlzIGNoYW5nZSBpcyBwYXJ0IG9mIHRoZSA6cGVwOmA1MjRgLgorCiAtIElzc3VlICMyNzY5MTogRml4IHNzbCBtb2R1bGUncyBwYXJzaW5nIG9mIEdFTl9SSUQgc3ViamVjdCBhbHRlcm5hdGl2ZSBuYW1lCiAgIGZpZWxkcyBpbiBYLjUwOSBjZXJ0cy4KIAorLSBJc3N1ZSAjMTg4NDQ6IEFkZCByYW5kb20uY2hvaWNlcygpLgorCistIElzc3VlICMyNTc2MTogSW1wcm92ZWQgZXJyb3IgcmVwb3J0aW5nIGFib3V0IHRydW5jYXRlZCBwaWNrbGUgZGF0YSBpbgorICBDIGltcGxlbWVudGF0aW9uIG9mIHVucGlja2xlci4gIFVucGlja2xpbmdFcnJvciBpcyBub3cgcmFpc2VkIGluc3RlYWQgb2YKKyAgQXR0cmlidXRlRXJyb3IgYW5kIFZhbHVlRXJyb3IgaW4gc29tZSBjYXNlcy4KKworLSBJc3N1ZSAjMjY3OTg6IEFkZCBCTEFLRTIgKGJsYWtlMmIgYW5kIGJsYWtlMnMpIHRvIGhhc2hsaWIuCisKKy0gSXNzdWUgIzI2MDMyOiBPcHRpbWl6ZWQgZ2xvYmJpbmcgaW4gcGF0aGxpYiBieSB1c2luZyBvcy5zY2FuZGlyKCk7IGl0IGlzIG5vdworICBhYm91dCAxLjUtLTQgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNTU5NjogT3B0aW1pemVkIGdsb2IoKSBhbmQgaWdsb2IoKSBmdW5jdGlvbnMgaW4gdGhlCisgIGdsb2IgbW9kdWxlOyB0aGV5IGFyZSBub3cgYWJvdXQgMy0tNiB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI3OTI4OiBBZGQgc2NyeXB0IChwYXNzd29yZC1iYXNlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbikgdG8KKyAgaGFzaGxpYiBtb2R1bGUgKHJlcXVpcmVzIE9wZW5TU0wgMS4xLjApLgorCiAtIElzc3VlICMyNzg1MDogUmVtb3ZlIDNERVMgZnJvbSBzc2wgbW9kdWxlJ3MgZGVmYXVsdCBjaXBoZXIgbGlzdCB0byBjb3VudGVyCiAgIG1lYXN1cmUgc3dlZXQzMiBhdHRhY2sgKENWRS0yMDE2LTIxODMpLgogCiAtIElzc3VlICMyNzc2NjogQWRkIENoYUNoYTIwIFBvbHkxMzA1IHRvIHNzbCBtb2R1bGUncyBkZWZhdWx0IGNpcGVyIGxpc3QuCiAgIChSZXF1aXJlZCBPcGVuU1NMIDEuMS4wIG9yIExpYnJlU1NMKS4KIAorLSBJc3N1ZSAjMjUzODc6IENoZWNrIHJldHVybiB2YWx1ZSBvZiB3aW5zb3VuZC5NZXNzYWdlQmVlcC4KKworLSBJc3N1ZSAjMjc4NjY6IEFkZCBTU0xDb250ZXh0LmdldF9jaXBoZXJzKCkgbWV0aG9kIHRvIGdldCBhIGxpc3Qgb2YgYWxsCisgIGVuYWJsZWQgY2lwaGVycy4KKworLSBJc3N1ZSAjMjc3NDQ6IEFkZCBBRl9BTEcgKExpbnV4IEtlcm5lbCBjcnlwdG8pIHRvIHNvY2tldCBtb2R1bGUuCisKIC0gSXNzdWUgIzI2NDcwOiBQb3J0IHNzbCBhbmQgaGFzaGxpYiBtb2R1bGUgdG8gT3BlblNTTCAxLjEuMC4KIAorLSBJc3N1ZSAjMTE2MjA6IEZpeCBzdXBwb3J0IGZvciBTTkRfTUVNT1JZIGluIHdpbnNvdW5kLlBsYXlTb3VuZC4gIEJhc2VkIG9uIGEKKyAgcGF0Y2ggYnkgVGltIExlc2hlci4KKworLSBJc3N1ZSAjMTE3MzQ6IEFkZCBzdXBwb3J0IGZvciBJRUVFIDc1NCBoYWxmLXByZWNpc2lvbiBmbG9hdHMgdG8gdGhlCisgIHN0cnVjdCBtb2R1bGUuIEJhc2VkIG9uIGEgcGF0Y2ggYnkgRWxpIFN0ZXZlbnMuCisKKy0gSXNzdWUgIzI3OTE5OiBEZXByZWNhdGVkIGBgZXh0cmFfcGF0aGBgIGRpc3RyaWJ1dGlvbiBvcHRpb24gaW4gZGlzdHV0aWxzCisgIHBhY2thZ2luZy4KKworLSBJc3N1ZSAjMjMyMjk6IEFkZCBuZXcgYGBjbWF0aGBgIGNvbnN0YW50czogYGBjbWF0aC5pbmZgYCBhbmQgYGBjbWF0aC5uYW5gYCB0bworICBtYXRjaCBgYG1hdGguaW5mYGAgYW5kIGBgbWF0aC5uYW5gYCwgYW5kIGFsc28gYGBjbWF0aC5pbmZqYGAgYW5kCisgIGBgY21hdGgubmFuamBgIHRvIG1hdGNoIHRoZSBmb3JtYXQgdXNlZCBieSBjb21wbGV4IHJlcHIuCisKKy0gSXNzdWUgIzI3ODQyOiBUaGUgY3N2LkRpY3RSZWFkZXIgbm93IHJldHVybnMgcm93cyBvZiB0eXBlIE9yZGVyZWREaWN0LgorICAoQ29udHJpYnV0ZWQgYnkgU3RldmUgSG9sZGVuLikKKwogLSBSZW1vdmUgc3VwcG9ydCBmb3IgcGFzc2luZyBhIGZpbGUgZGVzY3JpcHRvciB0byBvcy5hY2Nlc3MuIEl0IG5ldmVyIHdvcmtlZCBidXQKICAgcHJldmlvdXNseSBkaWRuJ3QgcmFpc2UuCiAKQEAgLTIxNCwyNSArNTU1LDI3NiBAQAogLSBJc3N1ZSAjMTA1MTM6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gQ29ubmVjdGlvbi5jb21taXQoKS4gIFN0YXRlbWVudHMgc2hvdWxkCiAgIG5vdCBiZSByZXNldCBhZnRlciBhIGNvbW1pdC4KIAorLSBJc3N1ZSAjMTIzMTk6IENodW5rZWQgdHJhbnNmZXIgZW5jb2Rpbmcgc3VwcG9ydCBhZGRlZCB0bworICBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiByZXF1ZXN0cy4gIFRoZQorICB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyIGNsYXNzIGRvZXMgbm90IGVuZm9yY2UgYSBDb250ZW50LUxlbmd0aAorICBoZWFkZXIgYW55IG1vcmUuICBJZiBhIEhUVFAgcmVxdWVzdCBoYXMgYSBmaWxlIG9yIGl0ZXJhYmxlIGJvZHksIGJ1dCBubworICBDb250ZW50LUxlbmd0aCBoZWFkZXIsIHRoZSBsaWJyYXJ5IG5vdyBmYWxscyBiYWNrIHRvIHVzZSBjaHVua2VkIHRyYW5zZmVyLQorICBlbmNvZGluZy4KKwogLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nOgogICAtIENvbGxlY3Rpb24gKG9ubHkgZm9yIDMuNikgKElzc3VlICMyNzU5OCkKICAgLSBBZGQgRnJvemVuU2V0IHRvIF9fYWxsX18gKHVwc3RyZWFtICMyNjEpCiAgIC0gZml4IGNyYXNoIGluIF9nZXRfdHlwZV92YXJzKCkgKHVwc3RyZWFtICMyNTkpCiAgIC0gUmVtb3ZlIHRoZSBkaWN0IGNvbnN0cmFpbnQgaW4gRm9yd2FyZFJlZi5fZXZhbF90eXBlICh1cHN0cmVhbSAjMjUyKQogCistIElzc3VlICMyNzgzMjogTWFrZSBgYF9ub3JtYWxpemVgYCBwYXJhbWV0ZXIgdG8gYGBGcmFjdGlvbmBgIGNvbnN0dWN0b3IKKyAga2V5d29yZC1vbmx5LCBzbyB0aGF0IGBgRnJhY3Rpb24oMiwgMywgNClgYCBub3cgcmFpc2VzIGBgVHlwZUVycm9yYGAuCisKIC0gSXNzdWUgIzI3NTM5OiBGaXggdW5ub3JtYWxpc2VkIGBgRnJhY3Rpb24uX19wb3dfX2BgIHJlc3VsdCBpbiB0aGUgY2FzZQogICBvZiBuZWdhdGl2ZSBleHBvbmVudCBhbmQgbmVnYXRpdmUgYmFzZS4KIAogLSBJc3N1ZSAjMjE3MTg6IGN1cnNvci5kZXNjcmlwdGlvbiBpcyBub3cgYXZhaWxhYmxlIGZvciBxdWVyaWVzIHVzaW5nIENURXMuCiAKKy0gSXNzdWUgIzI3ODE5OiBJbiBkaXN0dXRpbHMgc2Rpc3RzLCBzaW1wbHkgcHJvZHVjZSB0aGUgImd6dGFyIiAoZ3ppcHBlZCB0YXIKKyAgZm9ybWF0KSBkaXN0cmlidXRpb25zIG9uIGFsbCBwbGF0Zm9ybXMgdW5sZXNzICJmb3JtYXRzIiBpcyBzdXBwbGllZC4KKwogLSBJc3N1ZSAjMjQ2NjogcG9zaXhwYXRoLmlzbW91bnQgbm93IGNvcnJlY3RseSByZWNvZ25pemVzIG1vdW50IHBvaW50cyB3aGljaAogICB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzLgogCistIElzc3VlICM5OTk4OiBPbiBMaW51eCwgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IG5vdyBsb29rcyBpbiBMRF9MSUJSQVJZX1BBVEgKKyAgZm9yIHNoYXJlZCBsaWJyYXJpZXMuCisKKy0gSXNzdWUgIzI3NTczOiBleGl0IG1lc3NhZ2UgZm9yIGNvZGUuaW50ZXJhY3QgaXMgbm93IGNvbmZpZ3VyYWJsZS4KKworLSBJc3N1ZSAjMjc5MzA6IEltcHJvdmVkIGJlaGF2aW91ciBvZiBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIuCisgIFRoYW5rcyB0byBQYXVsbyBBbmRyYWRlIGFuZCBQZXRyIFZpa3RvcmluIGZvciB0aGUgYW5hbHlzaXMgYW5kIHBhdGNoLgorCistIElzc3VlICM2NzY2OiBEaXN0cmlidXRlZCByZWZlcmVuY2UgY291bnRpbmcgYWRkZWQgdG8gbXVsdGlwcm9jZXNzaW5nCisgIHRvIHN1cHBvcnQgbmVzdGluZyBvZiBzaGFyZWQgdmFsdWVzIC8gcHJveHkgb2JqZWN0cy4KKworLSBJc3N1ZSAjMjEyMDE6IEltcHJvdmVzIHJlYWRhYmlsaXR5IG9mIG11bHRpcHJvY2Vzc2luZyBlcnJvciBtZXNzYWdlLiAgVGhhbmtzCisgIHRvIFdvamNpZWNoIFdhbGN6YWsgZm9yIHBhdGNoLgorCistIGFzeW5jaW86IEFkZCBzZXRfcHJvdG9jb2wgLyBnZXRfcHJvdG9jb2wgdG8gVHJhbnNwb3J0cy4KKworLSBJc3N1ZSAjMjc0NTY6IGFzeW5jaW86IFNldCBUQ1BfTk9ERUxBWSBieSBkZWZhdWx0LgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzE1MzA4OiBBZGQgJ2ludGVycnVwdCBleGVjdXRpb24nICheQykgdG8gU2hlbGwgbWVudS4KKyAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3ksIHVwZGF0ZWQgYnkgQmF5YXJkIFJhbmRlbC4KKworLSBJc3N1ZSAjMjc5MjI6IFN0b3AgSURMRSB0ZXN0cyBmcm9tICdmbGFzaGluZycgZ3VpIHdpZGdldHMgb24gdGhlIHNjcmVlbi4KKworLSBJc3N1ZSAjMjc4OTE6IENvbnNpc3RlbnRseSBncm91cCBhbmQgc29ydCBpbXBvcnRzIHdpdGhpbiBpZGxlbGliIG1vZHVsZXMuCisKKy0gSXNzdWUgIzE3NjQyOiBhZGQgbGFyZ2VyIGZvbnQgc2l6ZXMgZm9yIGNsYXNzcm9vbSBwcm9qZWN0aW9uLgorCistIEFkZCB2ZXJzaW9uIHRvIHRpdGxlIG9mIElETEUgaGVscCB3aW5kb3cuCisKKy0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0CisgIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCisKKy0gSXNzdWUgIzI3ODIxOiBGaXggMy42LjBhMyByZWdyZXNzaW9uIHRoYXQgcHJldmVudGVkIGN1c3RvbSBrZXkgc2V0cworICBmcm9tIGJlaW5nIHNlbGVjdGVkIHdoZW4gbm8gY3VzdG9tIHRoZW1lIHdhcyBkZWZpbmVkLgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjY5MDA6IEV4Y2x1ZGVkIHVuZGVyc2NvcmVkIG5hbWVzIGFuZCBvdGhlciBwcml2YXRlIEFQSSBmcm9tIGxpbWl0ZWQgQVBJLgorCistIElzc3VlICMyNjAyNzogQWRkIHN1cHBvcnQgZm9yIHBhdGgtbGlrZSBvYmplY3RzIGluIFB5VW5pY29kZV9GU0NvbnZlcnRlcigpICYKKyAgUHlVbmljb2RlX0ZTRGVjb2RlcigpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjc0Mjc6IEFkZGl0aW9uYWwgdGVzdHMgZm9yIHRoZSBtYXRoIG1vZHVsZS4gUGF0Y2ggYnkgRnJhbmNpc2NvIENvdXpvLgorCistIElzc3VlICMyNzk1MzogU2tpcCBtYXRoIGFuZCBjbWF0aCB0ZXN0cyB0aGF0IGZhaWwgb24gT1MgWCAxMC40IGR1ZSB0byBhCisgIHBvb3IgbGlibSBpbXBsZW1lbnRhdGlvbiBvZiB0YW4uCisKKy0gSXNzdWUgIzI2MDQwOiBJbXByb3ZlIHRlc3RfbWF0aCBhbmQgdGVzdF9jbWF0aCBjb3ZlcmFnZSBhbmQgcmlnb3VyLiBQYXRjaCBieQorICBKZWZmIEFsbGVuLgorCistIElzc3VlICMyNzc4NzogQ2FsbCBnYy5jb2xsZWN0KCkgYmVmb3JlIGNoZWNraW5nIGVhY2ggdGVzdCBmb3IgImRhbmdsaW5nCisgIHRocmVhZHMiLCBzaW5jZSB0aGUgZGFuZ2xpbmcgdGhyZWFkcyBhcmUgd2VhayByZWZlcmVuY2VzLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc1NjY6IEZpeCBjbGVhbiB0YXJnZXQgaW4gZnJlZXplIG1ha2VmaWxlIChwYXRjaCBieSBMaXNhIFJvYWNoKQorCistIElzc3VlICMyNzcwNTogVXBkYXRlIG1lc3NhZ2UgaW4gdmFsaWRhdGVfdWNydGJhc2UucHkKKworLSBJc3N1ZSAjMjc5NzY6IERlcHJlY2F0ZSBidWlsZGluZyBfY3R5cGVzIHdpdGggdGhlIGJ1bmRsZWQgY29weSBvZiBsaWJmZmkgb24KKyAgbm9uLU9TWCBVTklYIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMjc5ODM6IENhdXNlIGxhY2sgb2YgbGx2bS1wcm9mZGF0YSB0b29sIHdoZW4gdXNpbmcgY2xhbmcgYXMKKyAgcmVxdWlyZWQgZm9yIFBHTyBsaW5raW5nIHRvIGJlIGEgY29uZmlndXJlIHRpbWUgZXJyb3IgcmF0aGVyIHRoYW4KKyAgbWFrZSB0aW1lIHdoZW4gLS13aXRoLW9wdGltaXphdGlvbnMgaXMgZW5hYmxlZC4gIEFsc28gaW1wcm92ZSBvdXIKKyAgYWJpbGl0eSB0byBmaW5kIHRoZSBsbHZtLXByb2ZkYXRhIHRvb2wgb24gTWFjT1MgYW5kIHNvbWUgTGludXhlcy4KKworLSBJc3N1ZSAjMjE1OTA6IFN1cHBvcnQgZm9yIERUcmFjZSBhbmQgU3lzdGVtVGFwIHByb2Jlcy4KKworLSBJc3N1ZSAjMjYzMDc6IFRoZSBwcm9maWxlLW9wdCBidWlsZCBub3cgYXBwbHlzIFBHTyB0byB0aGUgYnVpbHQtaW4gbW9kdWxlcy4KKworLSBJc3N1ZSAjMjY1Mzk6IEFkZCB0aGUgLS13aXRoLW9wdGltaXphdGlvbnMgZmxhZyB0byB0dXJuIG9uIExUTyBhbmQgUEdPIGJ1aWxkCisgIHN1cHBvcnQgd2hlbiBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzI3OTE3OiBTZXQgcGxhdGZvcm0gdHJpcGxldHMgZm9yIEFuZHJvaWQgYnVpbGRzLgorCistIElzc3VlICMyNTgyNTogVXBkYXRlIHJlZmVyZW5jZXMgdG8gdGhlICQoTElCUEwpIGluc3RhbGxhdGlvbiBwYXRoIG9uIEFJWC4KKyAgVGhpcyBwYXRoIHdhcyBjaGFuZ2VkIGluIDMuMmE0LgorCistIFVwZGF0ZSBPUyBYIGluc3RhbGxlciB0byB1c2UgU1FMaXRlIDMuMTQuMSBhbmQgWFogNS4yLjIuCisKKy0gSXNzdWUgIzIxMTIyOiBGaXggTFRPIGJ1aWxkcyBvbiBPUyBYLgorCistIElzc3VlICMxNzEyODogQnVpbGQgT1MgWCBpbnN0YWxsZXIgd2l0aCBhIHByaXZhdGUgY29weSBvZiBPcGVuU1NMLgorICBBbHNvIHByb3ZpZGUgYSBzYW1wbGUgSW5zdGFsbCBDZXJ0aWZpY2F0ZXMgY29tbWFuZCBzY3JpcHQgdG8gaW5zdGFsbCBhCisgIHNldCBvZiByb290IGNlcnRpZmljYXRlcyBmcm9tIHRoZSB0aGlyZC1wYXJ0eSBjZXJ0aWZpIG1vZHVsZS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI3OTUyOiBHZXQgVG9vbHMvc2NyaXB0cy9maXhjaWQucHkgd29ya2luZyB3aXRoIFB5dGhvbiAzIGFuZCB0aGUKKyAgY3VycmVudCAicmUiIG1vZHVsZSwgYXZvaWQgaW52YWxpZCBQeXRob24gYmFja3NsYXNoIGVzY2FwZXMsIGFuZCBmaXggYSBidWcKKyAgcGFyc2luZyBlc2NhcGVkIEMgcXVvdGUgc2lnbnMuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjgwNjU6IFVwZGF0ZSB4eiBkZXBlbmRlbmN5IHRvIDUuMi4yIGFuZCBidWlsZCBpdCBmcm9tIHNvdXJjZS4KKworLSBJc3N1ZSAjMjUxNDQ6IEVuc3VyZXMgVGFyZ2V0RGlyIGlzIHNldCBiZWZvcmUgY29udGludWluZyB3aXRoIGN1c3RvbQorICBpbnN0YWxsLgorCistIElzc3VlICMxNjAyOiBXaW5kb3dzIGNvbnNvbGUgZG9lc24ndCBpbnB1dCBvciBwcmludCBVbmljb2RlIChQRVAgNTI4KQorCistIElzc3VlICMyNzc4MTogQ2hhbmdlIGZpbGUgc3lzdGVtIGVuY29kaW5nIG9uIFdpbmRvd3MgdG8gVVRGLTggKFBFUCA1MjkpCisKKy0gSXNzdWUgIzI3NzMxOiBPcHQtb3V0IG9mIE1BWF9QQVRIIG9uIFdpbmRvd3MgMTAKKworLSBJc3N1ZSAjNjEzNTogQWRkcyBlbmNvZGluZyBhbmQgZXJyb3JzIHBhcmFtZXRlcnMgdG8gc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMjc5NTk6IEFkZHMgb2VtIGVuY29kaW5nLCBhbGlhcyBhbnNpIHRvIG1iY3MsIG1vdmUgYWxpYXNtYmNzIHRvCisgIGNvZGVjIGxvb2t1cC4KKworLSBJc3N1ZSAjMjc5ODI6IFRoZSBmdW5jdGlvbnMgb2YgdGhlIHdpbnNvdW5kIG1vZHVsZSBub3cgYWNjZXB0IGtleXdvcmQKKyAgYXJndW1lbnRzLgorCistIElzc3VlICMyMDM2NjogQnVpbGQgZnVsbCB0ZXh0IHNlYXJjaCBzdXBwb3J0IGludG8gU1FMaXRlIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI3NzU2OiBBZGRzIG5ldyBpY29ucyBmb3IgUHl0aG9uIGZpbGVzIGFuZCBwcm9jZXNzZXMgb24gV2luZG93cy4KKyAgRGVzaWducyBieSBDaGVycnkgV2FuZy4KKworLSBJc3N1ZSAjMjc4ODM6IFVwZGF0ZSBzcWxpdGUgdG8gMy4xNC4xLjAgb24gV2luZG93cy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBhbHBoYSA0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDgtMTUqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNzcwNDogT3B0aW1pemVkIGNyZWF0aW5nIGJ5dGVzIGFuZCBieXRlYXJyYXkgZnJvbSBieXRlLWxpa2Ugb2JqZWN0cworICBhbmQgaXRlcmFibGVzLiAgU3BlZWQgdXAgdG8gMyB0aW1lcyBmb3Igc2hvcnQgb2JqZWN0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIE5hb2tpIEluYWRhLgorCistIElzc3VlICMyNjgyMzogTGFyZ2Ugc2VjdGlvbnMgb2YgcmVwZWF0ZWQgbGluZXMgaW4gdHJhY2ViYWNrcyBhcmUgbm93CisgIGFiYnJldmlhdGVkIGFzICJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdIiBieSB0aGUgYnVpbHRpbgorICB0cmFjZWJhY2sgcmVuZGVyaW5nLiBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzU3NDogRGVjcmVhc2VkIGFuIG92ZXJoZWFkIG9mIHBhcnNpbmcga2V5d29yZCBhcmd1bWVudHMgaW4gZnVuY3Rpb25zCisgIGltcGxlbWVudGVkIHdpdGggdXNpbmcgQXJndW1lbnQgQ2xpbmljLgorCistIElzc3VlICMyMjU1NzogTm93IGltcG9ydGluZyBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZXMgaXMgdXAgdG8gMi41IHRpbWVzCisgIGZhc3Rlci4KKworLSBJc3N1ZSAjMTc1OTY6IEluY2x1ZGUgPHdpbmNyeXB0Lmg+IHRvIGhlbHAgd2l0aCBNaW4gR1cgYnVpbGRpbmcuCisKKy0gSXNzdWUgIzE3NTk5OiBPbiBXaW5kb3dzLCByZW5hbWUgdGhlIHByaXZhdGVseSBkZWZpbmVkIFJFUEFSU0VfREFUQV9CVUZGRVIKKyAgc3RydWN0dXJlIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggdGhlIGRlZmluaXRpb24gZnJvbSBNaW4gR1cuCisKKy0gSXNzdWUgIzI3NTA3OiBBZGQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaCBieQorICBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc1ODE6IERvbid0IHJlbHkgb24gd3JhcHBpbmcgZm9yIG92ZXJmbG93IGNoZWNrIGluCisgIFB5U2VxdWVuY2VfVHVwbGUoKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMxNjIxOiBBdm9pZCBzaWduZWQgaW50ZWdlciBvdmVyZmxvdyBpbiBsaXN0IGFuZCB0dXBsZSBvcGVyYXRpb25zLgorICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc0MTk6IFN0YW5kYXJkIF9faW1wb3J0X18oKSBubyBsb25nZXIgbG9vayB1cCAiX19pbXBvcnRfXyIgaW4gZ2xvYmFscworICBvciBidWlsdGlucyBmb3IgaW1wb3J0aW5nIHN1Ym1vZHVsZXMgb3IgImZyb20gaW1wb3J0Ii4gIEZpeGVkIGEgY3Jhc2ggaWYKKyAgcmFpc2UgYSB3YXJuaW5nIGFib3V0IHVuYWJsaW5nIHRvIHJlc29sdmUgcGFja2FnZSBmcm9tIF9fc3BlY19fIG9yCisgIF9fcGFja2FnZV9fLgorCistIElzc3VlICMyNzA4MzogUmVzcGVjdCB0aGUgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlIHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI3NTE0OiBNYWtlIGhhdmluZyB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MgYSBTeW50YXhFcnJvcgorICBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yLgorCistIElzc3VlICMyNzM2NjogSW1wbGVtZW50ZWQgUEVQIDQ4NyAoU2ltcGxlciBjdXN0b21pemF0aW9uIG9mIGNsYXNzIGNyZWF0aW9uKS4KKyAgVXBvbiBzdWJjbGFzc2luZywgdGhlIF9faW5pdF9zdWJjbGFzc19fIGNsYXNzbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgYmFzZQorICBjbGFzcy4gRGVzY3JpcHRvcnMgYXJlIGluaXRpYWxpemVkIHdpdGggX19zZXRfbmFtZV9fIGFmdGVyIGNsYXNzIGNyZWF0aW9uLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI2MDI3LCAjMjc1MjQ6IEFkZCBQRVAgNTE5L19fZnNwYXRoX18oKSBzdXBwb3J0IHRvIHRoZSBvcyBhbmQgb3MucGF0aAorICBtb2R1bGVzLiBJbmNsdWRlcyBjb2RlIGZyb20gSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzI3NTk4OiBBZGQgQ29sbGVjdGlvbnMgdG8gY29sbGVjdGlvbnMuYWJjLgorICBQYXRjaCBieSBJdmFuIExldmtpdnNreWksIGRvY3MgYnkgTmVpbCBHaXJkaGFyLgorCistIElzc3VlICMyNTk1ODogU3VwcG9ydCAiYW50aS1yZWdpc3RyYXRpb24iIG9mIHNwZWNpYWwgbWV0aG9kcyBmcm9tCisgIHZhcmlvdXMgQUJDcywgbGlrZSBfX2hhc2hfXywgX19pdGVyX18gb3IgX19sZW5fXy4gIEFsbCB0aGVzZSAoYW5kCisgIHNldmVyYWwgbW9yZSkgY2FuIGJlIHNldCB0byBOb25lIGluIGFuIGltcGxlbWVudGF0aW9uIGNsYXNzIGFuZCB0aGUKKyAgYmVoYXZpb3Igd2lsbCBiZSBhcyBpZiB0aGUgbWV0aG9kIGlzIG5vdCBkZWZpbmVkIGF0IGFsbC4KKyAgKFByZXZpb3VzbHksIHRoaXMgbWVjaGFuaXNtIGV4aXN0ZWQgb25seSBmb3IgX19oYXNoX18sIHRvIG1ha2UKKyAgbXV0YWJsZSBjbGFzc2VzIHVuaGFzaGFibGUuKSAgQ29kZSBjb250cmlidXRlZCBieSBBbmRyZXcgQmFybmVydCBhbmQKKyAgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMxNjc2NDogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyB0byB6bGliLmRlY29tcHJlc3MoKS4gIFBhdGNoIGJ5CisgIFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNzczNjogUHJldmVudCBzZWdmYXVsdCBhZnRlciBpbnRlcnByZXRlciByZS1pbml0aWFsaXphdGlvbiBkdWUKKyAgdG8gcmVmIGNvdW50IHByb2JsZW0gaW50cm9kdWNlZCBpbiBjb2RlIGZvciBJc3N1ZSAjMjcwMzggaW4gMy42LjBhMy4KKyAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI1NjI4OiAgVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogcGFyYW1ldGVycyBmb3IKKyAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSBhcmUgbm93IGtleXdvcmQtb25seS4KKworLSBJc3N1ZSAjMTIzNDU6IEFkZCBtYXRoZW1hdGljYWwgY29uc3RhbnQgdGF1IHRvIG1hdGggYW5kIGNtYXRoLiBTZWUgYWxzbworICBQRVAgNjI4LgorCistIElzc3VlICMyNjgyMzogdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mb3JtYXQgbm93IGFiYnJldmlhdGVzIGxhcmdlIHNlY3Rpb25zIG9mCisgIHJlcGVhdGVkIGxpbmVzIGFzICJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdIiAodGhpcyBjaGFuZ2UKKyAgdGhlbiBmdXJ0aGVyIGFmZmVjdHMgb3RoZXIgdHJhY2ViYWNrIGRpc3BsYXkgb3BlcmF0aW9ucyBpbiB0aGUgbW9kdWxlKS4gUGF0Y2gKKyAgYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjc2NjQ6IEFkZCB0byBjb25jdXJyZW50LmZ1dHVyZXMudGhyZWFkLlRocmVhZFBvb2xFeGVjdXRvcigpCisgIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYSB0aHJlYWQgbmFtZSBwcmVmaXguCisKKy0gSXNzdWUgIzI3MTgxOiBBZGQgZ2VvbWV0cmljX21lYW4gYW5kIGhhcm1vbmljX21lYW4gdG8gc3RhdGlzdGljcyBtb2R1bGUuCisKKy0gSXNzdWUgIzI3NTczOiBjb2RlLmludGVyYWN0IG5vdyBwcmludHMgYW4gbWVzc2FnZSB3aGVuIGV4aXRpbmcuCisKKy0gSXNzdWUgIzY0MjI6IEFkZCBhdXRvcmFuZ2UgbWV0aG9kIHRvIHRpbWVpdC5UaW1lciBvYmplY3RzLgorCiAtIElzc3VlICMyNzc3MzogQ29ycmVjdCBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGVycm9ycyBzZXJ2ZXJfaG9zdG5hbWUgaW4KICAgX3NzbC53cmFwX3NvY2tldCgpLgogCiAtIElzc3VlICMyNjc1MDogdW5pdHRlc3QubW9jay5jcmVhdGVfYXV0b3NwZWMoKSBub3cgd29ya3MgcHJvcGVybHkgZm9yCi0gIHN1YmNsYXNzZXMgb2YgcHJvcGVydHkoKSBhbmQgb3RoZXIgZGF0YSBkZXNjcmlwdG9ycy4KKyAgc3ViY2xhc3NlcyBvZiBwcm9wZXJ0eSgpIGFuZCBvdGhlciBkYXRhIGRlc2NyaXB0b3JzLiAgUmVtb3ZlcyB0aGUgbmV2ZXIKKyAgcHVibGljbHkgdXNlZCwgbmV2ZXIgZG9jdW1lbnRlZCB1bml0dGVzdC5tb2NrLkRlc2NyaXB0b3JUeXBlcyB0dXBsZS4KKworLSBJc3N1ZSAjMjY3NTQ6IFVuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgYnl0ZXMtbGlrZSBvYmplY3RzCisgIGFzIHBhdGggaW4gY29tcGlsZSgpIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyBpcyBub3cgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjY4MDA6IFVuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgYnl0ZXMtbGlrZSBvYmplY3RzCisgIGFzIHBhdGhzIGluIG9zIGZ1bmN0aW9ucyBpcyBub3cgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjY5ODE6IEFkZCBfb3JkZXJfIGNvbXBhdGliaWxpdHkgc2hpbSB0byBlbnVtLkVudW0gZm9yCisgIFB5dGhvbiAyLzMgY29kZSBiYXNlcy4KKworLSBJc3N1ZSAjMjc2NjE6IEFkZGVkIHR6aW5mbyBrZXl3b3JkIGFyZ3VtZW50IHRvIGRhdGV0aW1lLmNvbWJpbmUuCiAKIC0gSW4gdGhlIGN1cnNlcyBtb2R1bGUsIHJhaXNlIGFuIGVycm9yIGlmIHdpbmRvdy5nZXRzdHIoKSBvciB3aW5kb3cuaW5zdHIoKSBpcwogICBwYXNzZWQgYSBuZWdhdGl2ZSB2YWx1ZS4KQEAgLTI1MSw2ICs4NDMsOSBAQAogICBIVFRQX1BST1hZIHZhcmlhYmxlIHdoZW4gUkVRVUVTVF9NRVRIT0QgZW52aXJvbm1lbnQgaXMgc2V0LCB3aGljaCBpbmRpY2F0ZXMKICAgdGhhdCB0aGUgc2NyaXB0IGlzIGluIENHSSBtb2RlLgogCistIElzc3VlICM3MDYzOiBSZW1vdmUgZGVhZCBjb2RlIGZyb20gdGhlICJhcnJheSIgbW9kdWxlJ3Mgc2xpY2UgaGFuZGxpbmcuCisgIFBhdGNoIGJ5IENodWNrLgorCiAtIElzc3VlICMyNzY1NjogRG8gbm90IGFzc3VtZSBzY2hlZC5oIGRlZmluZXMgYW55IFNDSEVEXyogY29uc3RhbnRzLgogCiAtIElzc3VlICMyNzEzMDogSW4gdGhlICJ6bGliIiBtb2R1bGUsIGZpeCBoYW5kbGluZyBvZiBsYXJnZSBidWZmZXJzCkBAIC0yNTgsNiArODUzLDE1IEBACiAgIHdlcmUgbGltaXRlZCB0byA0IEdpQiwgYW5kIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIG9wZXJhdGlvbnMgZGlkIG5vdAogICBwcm9wZXJseSBoYW5kbGUgcmVzdWx0cyBvZiA0IEdpQi4KIAorLSBJc3N1ZSAjMjQ3NzM6IEltcGxlbWVudGVkIFBFUCA0OTUgKExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24pLgorCistIEV4cG9zZSB0aGUgRVBPTExFWENMVVNJVkUgY29uc3RhbnQgKHdoZW4gaXQgaXMgZGVmaW5lZCkgaW4gdGhlIHNlbGVjdCBtb2R1bGUuCisKKy0gSXNzdWUgIzI3NTY3OiBFeHBvc2UgdGhlIEVQT0xMUkRIVVAgYW5kIFBPTExSREhVUCBjb25zdGFudHMgaW4gdGhlIHNlbGVjdAorICBtb2R1bGUuCisKKy0gSXNzdWUgIzE2MjE6IEF2b2lkIHNpZ25lZCBpbnQgbmVnYXRpb24gb3ZlcmZsb3cgaW4gdGhlICJhdWRpb29wIiBtb2R1bGUuCisKIC0gSXNzdWUgIzI3NTMzOiBSZWxlYXNlIEdJTCBpbiBudC5faXNkaXIKIAogLSBJc3N1ZSAjMTc3MTE6IEZpeGVkIHVucGlja2xpbmcgYnkgdGhlIHBlcnNpc3RlbnQgSUQgd2l0aCBwcm90b2NvbCAwLgpAQCAtMjY1LDYgKzg2OSwxMTIgQEAKIAogLSBJc3N1ZSAjMjc1MjI6IEF2b2lkIGFuIHVuaW50ZW50aW9uYWwgcmVmZXJlbmNlIGN5Y2xlIGluIGVtYWlsLmZlZWRwYXJzZXIuCiAKKy0gSXNzdWUgIzI3NTEyOiBGaXggYSBzZWdmYXVsdCB3aGVuIG9zLmZzcGF0aCgpIGNhbGxlZCBhbiBfX2ZzcGF0aF9fKCkgbWV0aG9kCisgIHRoYXQgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMjc3MTQ6IHRleHRfdGV4dHZpZXcgYW5kIHRlc3RfYXV0b2NvbXBsZXRlIG5vdyBwYXNzIHdoZW4gcmUtcnVuCisgIGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZQorICAtdyBvcHRpb24gYnV0IHdpdGhvdXQgLWpuLiAgRml4IHdhcm5pbmcgZnJvbSB0ZXN0X2NvbmZpZy4KKworLSBJc3N1ZSAjMjc2MjE6IFB1dCBxdWVyeSByZXNwb25zZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBxdWVyeQorICBib3ggaXRzZWxmIGluc3RlYWQgb2YgaW4gYSBzZXBhcmF0ZSBtYXNzYWdlYm94LiAgUmVkbyB0ZXN0cyB0byBtYXRjaC4KKyAgQWRkIE1hYyBPU1ggcmVmaW5lbWVudHMuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI3NjIwOiBFc2NhcGUga2V5IG5vdyBjbG9zZXMgUXVlcnkgYm94IGFzIGNhbmNlbGxlZC4KKworLSBJc3N1ZSAjMjc2MDk6IElETEU6IHRhYiBhZnRlciBpbml0aWFsIHdoaXRlc3BhY2Ugc2hvdWxkIHRhYiwgbm90CisgIGF1dG9jb21wbGV0ZS4gVGhpcyBmaXhlcyBwcm9ibGVtIHdpdGggd3JpdGluZyBkb2NzdHJpbmdzIGF0IGxlYXN0CisgIHR3aWNlIGluZGVudGVkLgorCistIElzc3VlICMyNzYwOTogRXhwbGljaXRseSByZXR1cm4gTm9uZSB3aGVuIHRoZXJlIGFyZSBhbHNvIG5vbi1Ob25lCisgIHJldHVybnMuIEluIGEgZmV3IGNhc2VzLCByZXZlcnNlIGEgY29uZGl0aW9uIGFuZCBlbGltaW5hdGUgYSByZXR1cm4uCisKKy0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgorICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgorCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCistIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNTgwNTogU2tpcCBhIHRlc3QgaW4gdGVzdF9wa2d1dGlsIGFzIG5lZWRlZCB0aGF0IGRvZXNuJ3Qgd29yayB3aGVuCisgIGBgX19uYW1lX18gPT0gX19tYWluX19gYC4gUGF0Y2ggYnkgU2lsZW50R2hvc3QuCisKKy0gSXNzdWUgIzI3NDcyOiBBZGQgdGVzdC5zdXBwb3J0LnVuaXhfc2hlbGwgYXMgdGhlIHBhdGggdG8gdGhlIGRlZmF1bHQgc2hlbGwuCisKKy0gSXNzdWUgIzI3MzY5OiBJbiB0ZXN0X3B5ZXhwYXQsIGF2b2lkIHRlc3RpbmcgYW4gZXJyb3IgbWVzc2FnZSBkZXRhaWwgdGhhdAorICBjaGFuZ2VkIGluIEV4cGF0IDIuMi4wLgorCistIElzc3VlICMyNzU5NDogUHJldmVudCBhc3NlcnRpb24gZXJyb3Igd2hlbiBydW5uaW5nIHRlc3RfYXN0IHdpdGggY292ZXJhZ2UKKyAgZW5hYmxlZDogZW5zdXJlIGNvZGUgb2JqZWN0IGhhcyBhIHZhbGlkIGZpcnN0IGxpbmUgbnVtYmVyLgorICBQYXRjaCBzdWdnZXN0ZWQgYnkgSXZhbiBMZXZraXZza3lpLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI3NjQ3OiBVcGRhdGUgYnVuZGxlZCBUY2wvVGsgdG8gOC42LjYuCisKKy0gSXNzdWUgIzI3NjEwOiBBZGRzIFBFUCA1MTQgbWV0YWRhdGEgdG8gV2luZG93cyBpbnN0YWxsZXIKKworLSBJc3N1ZSAjMjc0Njk6IEFkZHMgYSBzaGVsbCBleHRlbnNpb24gdG8gdGhlIGxhdW5jaGVyIHNvIHRoYXQgZHJhZyBhbmQgZHJvcAorICB3b3JrcyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzI3MzA5OiBFbmFibGVzIHByb3BlciBXaW5kb3dzIHN0eWxlcyBpbiBweXRob25bd10uZXhlIG1hbmlmZXN0LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKKyAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKKworLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwLCB3aGljaCBpcworICByZXF1aXJlZCBvbiBBSVguICBUaGUgcmVmZXJlbmNlcyB3ZXJlIGFjY2lkZW50YWxseSBjaGFuZ2VkIGluIDMuNS4wYTEuCisKKy0gSXNzdWUgIzI3NDUzOiBDUFAgaW52b2NhdGlvbiBpbiBjb25maWd1cmUgbXVzdCB1c2UgQ1BQRkxBR1MuIFBhdGNoIGJ5CisgIENoaSBIc3VhbiBZZW4uCisKKy0gSXNzdWUgIzI3NjQxOiBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgaW5zZXJ0cyBjb21tZW50cyBpbnRvIHRoZSBtYWtlZmlsZQorICB0byBwcmV2ZW50IHRoZSBwZ2VuIGFuZCBfZnJlZXplX2ltcG9ydGxpYiBleGVjdXRhYmxlcyBmcm9tIGJlaW5nIGNyb3NzLQorICBjb21waWxlZC4KKworLSBJc3N1ZSAjMjY2NjI6IFNldCBQWVRIT05fRk9SX0dFTiBpbiBjb25maWd1cmUgYXMgdGhlIFB5dGhvbiBwcm9ncmFtIHRvIGJlCisgIHVzZWQgZm9yIGZpbGUgZ2VuZXJhdGlvbiBkdXJpbmcgdGhlIGJ1aWxkLgorCistIElzc3VlICMxMDkxMDogQXZvaWQgQysrIGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNEIGFuZCBPUyBYLgorICBBbHNvIHVwZGF0ZSBGcmVlZEJTRCB2ZXJzaW9uIGNoZWNrcyBmb3IgdGhlIG9yaWdpbmFsIGN0eXBlIFVURi04IHdvcmthcm91bmQuCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGFscGhhIDMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0wNy0xMSoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI3NDczOiBGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIGJ5dGVzIGFuZCBieXRlYXJyYXkKKyAgY29uY2F0ZW5hdGlvbnMuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjMwMzQ6IFRoZSBvdXRwdXQgb2YgYSBzcGVjaWFsIFB5dGhvbiBidWlsZCB3aXRoIGRlZmluZWQgQ09VTlRfQUxMT0NTLAorICBTSE9XX0FMTE9DX0NPVU5UIG9yIFNIT1dfVFJBQ0tfQ09VTlQgbWFjcm9zIGlzIG5vdyBvZmYgYnkgIGRlZmF1bHQuICBJdCBjYW4KKyAgYmUgcmUtZW5hYmxlZCB1c2luZyB0aGUgIi1YIHNob3dhbGxvY2NvdW50IiBvcHRpb24uICBJdCBub3cgb3V0cHV0cyB0byBzdGRlcnIKKyAgaW5zdGVhZCBvZiBzdGRvdXQuCisKKy0gSXNzdWUgIzI3NDQzOiBfX2xlbmd0aF9oaW50X18oKSBvZiBieXRlYXJyYXkgaXRlcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYQorICBuZWdhdGl2ZSBpbnRlZ2VyIGZvciBhIHJlc2l6ZWQgYnl0ZWFycmF5LgorCistIElzc3VlICMyNzAwNzogVGhlIGZyb21oZXgoKSBjbGFzcyBtZXRob2RzIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkgc3ViY2xhc3NlcworICBub3cgcmV0dXJuIGFuIGluc3RhbmNlIG9mIGNvcnJlc3BvbmRpbmcgc3ViY2xhc3MuCisKK0xpYnJhcnkKKy0tLS0tLS0KKwogLSBJc3N1ZSAjMjY4NDQ6IEZpeCBlcnJvciBtZXNzYWdlIGZvciBpbXAuZmluZF9tb2R1bGUoKSB0byByZWZlciB0byAncGF0aCcKICAgaW5zdGVhZCBvZiAnbmFtZScuIFBhdGNoIGJ5IExldiBNYXhpbW92LgogCkBAIC0yNzUsMjIgKzk4NSw1NCBAQAogICBjb25maXJtaW5nIHRoZSBuZXRzY2FwZSBjb29raWUgZm9ybWF0IGFuZCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoCiAgIGRvY3VtZW50YXRpb24uCiAKLS0gSXNzdWUgIzI2NjY0OiBGaXggYWN0aXZhdGUuZmlzaCBieSByZW1vdmluZyBtaXMtdXNlIG9mIGBgJGBgLgorLSBJc3N1ZSAjMjE3MDg6IERlcHJlY2F0ZWQgZGJtLmR1bWIgYmVoYXZpb3IgdGhhdCBkaWZmZXJzIGZyb20gY29tbW9uIGRibQorICBiZWhhdmlvcjogY3JlYXRpbmcgYSBkYXRhYmFzZSBpbiAncicgYW5kICd3JyBtb2RlcyBhbmQgbW9kaWZ5aW5nIGEgZGF0YWJhc2UKKyAgaW4gJ3InIG1vZGUuCiAKLS0gSXNzdWUgIzIyMTE1OiBGaXhlZCB0cmFjaW5nIFRraW50ZXIgdmFyaWFibGVzOiB0cmFjZV92ZGVsZXRlKCkgd2l0aCB3cm9uZwotICBtb2RlIG5vIGxvbmdlciBicmVhayB0cmFjaW5nLCB0cmFjZV92aW5mbygpIG5vdyBhbHdheXMgcmV0dXJucyBhIGxpc3Qgb2YKLSAgcGFpcnMgb2Ygc3RyaW5ncywgdHJhY2luZyBpbiB0aGUgInUiIG1vZGUgbm93IHdvcmtzLgorLSBJc3N1ZSAjMjY3MjE6IENoYW5nZSB0aGUgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLndmaWxlIGF0dHJpYnV0ZQorICB0byBpbXBsZW1lbnQgQnVmZmVyZWRJT0Jhc2UuIEluIHBhcnRpY3VsYXIsIHRoZSB3cml0ZSgpIG1ldGhvZCBubyBsb25nZXIKKyAgZG9lcyBwYXJ0aWFsIHdyaXRlcy4KIAotLSBGaXggYSBzY29waW5nIGlzc3VlIGluIGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIgd2hpY2ggdHJpZ2dlcmVkIGFuCi0gIFVuYm91bmRMb2NhbEVycm9yIHdoZW4gbGF6eS1sb2FkaW5nIGEgbW9kdWxlIHRoYXQgd2FzIGFscmVhZHkgcHV0IGludG8KLSAgc3lzLm1vZHVsZXMuCistIElzc3VlICMyMjExNTogQWRkZWQgbWV0aG9kcyB0cmFjZV9hZGQsIHRyYWNlX3JlbW92ZSBhbmQgdHJhY2VfaW5mbyBpbiB0aGUKKyAgdGtpbnRlci5WYXJpYWJsZSBjbGFzcy4gIFRoZXkgcmVwbGFjZSBvbGQgbWV0aG9kcyB0cmFjZV92YXJpYWJsZSwgdHJhY2UsCisgIHRyYWNlX3ZkZWxldGUgYW5kIHRyYWNlX3ZpbmZvIHRoYXQgdXNlIG9ic29sZXRlIFRjbCBjb21tYW5kcyBhbmQgbWlnaHQKKyAgbm90IHdvcmsgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFRjbC4gIEZpeGVkIG9sZCB0cmFjaW5nIG1ldGhvZHM6CisgIHRyYWNlX3ZkZWxldGUoKSB3aXRoIHdyb25nIG1vZGUgbm8gbG9uZ2VyIGJyZWFrIHRyYWNpbmcsIHRyYWNlX3ZpbmZvKCkgbm93CisgIGFsd2F5cyByZXR1cm5zIGEgbGlzdCBvZiBwYWlycyBvZiBzdHJpbmdzLCB0cmFjaW5nIGluIHRoZSAidSIgbW9kZSBub3cgd29ya3MuCisKKy0gSXNzdWUgIzI2MjQzOiBPbmx5IHRoZSBsZXZlbCBhcmd1bWVudCB0byB6bGliLmNvbXByZXNzKCkgaXMga2V5d29yZCBhcmd1bWVudAorICBub3cuICBUaGUgZmlyc3QgYXJndW1lbnQgaXMgcG9zaXRpb25hbC1vbmx5LgorCistIElzc3VlICMyNzAzODogRXhwb3NlIHRoZSBEaXJFbnRyeSB0eXBlIGFzIG9zLkRpckVudHJ5LiBDb2RlIHBhdGNoIGJ5CisgIEplbGxlIFppamxzdHJhLgorCistIElzc3VlICMyNzE4NjogVXBkYXRlIG9zLmZzcGF0aCgpL1B5T1NfRlNQYXRoKCkgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZgorICBfX2ZzcGF0aF9fKCkgdG8gYmUgZWl0aGVyIHN0ciBvciBieXRlcy4KKworLSBJc3N1ZSAjMTg3MjY6IEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIG9mIHRoZSBkdW1wKCksIGR1bXBzKCksCisgIGxvYWQoKSBhbmQgbG9hZHMoKSBmdW5jdGlvbnMgYW5kIEpTT05FbmNvZGVyIGFuZCBKU09ORGVjb2RlciBjbGFzcworICBjb25zdHJ1Y3RvcnMgaW4gdGhlIGpzb24gbW9kdWxlIGFyZSBub3cga2V5d29yZC1vbmx5LgorCistIElzc3VlICMyNzMxOTogTWV0aG9kcyBzZWxlY3Rpb25fc2V0KCksIHNlbGVjdGlvbl9hZGQoKSwgc2VsZWN0aW9uX3JlbW92ZSgpCisgIGFuZCBzZWxlY3Rpb25fdG9nZ2xlKCkgb2YgdHRrLlRyZWVWaWV3IG5vdyBhbGxvdyBwYXNzaW5nIG11bHRpcGxlIGl0ZW1zIGFzCisgIG11bHRpcGxlIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlbSBhcyBhIHR1cGxlLiAgRGVwcmVjYXRlZAorICB1bmRvY3VtZW50ZWQgYWJpbGl0eSBvZiBjYWxsaW5nIHRoZSBzZWxlY3Rpb24oKSBtZXRob2Qgd2l0aCBhcmd1bWVudHMuCiAKIC0gSXNzdWUgIzI3MDc5OiBGaXhlZCBjdXJzZXMuYXNjaWkgZnVuY3Rpb25zIGlzYmxhbmsoKSwgaXNjbnRybCgpIGFuZCBpc3B1bmN0KCkuCiAKKy0gSXNzdWUgIzI3Mjk0OiBOdW1lcmljYWwgc3RhdGUgaW4gdGhlIHJlcHIgZm9yIFRraW50ZXIgZXZlbnQgb2JqZWN0cyBpcyBub3cKKyAgcmVwcmVzZW50ZWQgYXMgYSBjb21iaW5hdGlvbiBvZiBrbm93biBmbGFncy4KKworLSBJc3N1ZSAjMjcxNzc6IE1hdGNoIG9iamVjdHMgaW4gdGhlIHJlIG1vZHVsZSBub3cgc3VwcG9ydCBpbmRleC1saWtlIG9iamVjdHMKKyAgYXMgZ3JvdXAgaW5kaWNlcy4gIEJhc2VkIG9uIHBhdGNoZXMgYnkgSmVyb2VuIERlbWV5ZXIgYW5kIFhpYW5nIFpoYW5nLgorCiAtIElzc3VlICMyNjc1NDogU29tZSBmdW5jdGlvbnMgKGNvbXBpbGUoKSBldGMpIGFjY2VwdGVkIGEgZmlsZW5hbWUgYXJndW1lbnQKICAgZW5jb2RlZCBhcyBhbiBpdGVyYWJsZSBvZiBpbnRlZ2Vycy4gTm93IG9ubHkgc3RyaW5ncyBhbmQgYnl0ZS1saWtlIG9iamVjdHMKICAgYXJlIGFjY2VwdGVkLgogCistIElzc3VlICMyNjUzNjogc29ja2V0LmlvY3RsIG5vdyBzdXBwb3J0cyBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRILiBQYXRjaCBieQorICBEYW5pZWwgU3Rva2VzLgorCiAtIElzc3VlICMyNzA0ODogUHJldmVudHMgZGlzdHV0aWxzIGZhaWxpbmcgb24gV2luZG93cyB3aGVuIGVudmlyb25tZW50CiAgIHZhcmlhYmxlcyBjb250YWluIG5vbi1BU0NJSSBjaGFyYWN0ZXJzCiAKQEAgLTMwOSw5ICsxMDUxLDE1IEBACiAgIExpbnV4LiAgVHJ1bmNhdGUgc2l6ZSB0byBJTlRfTUFYIGFuZCBsb29wIHVudGlsIHdlIGNvbGxlY3RlZCBlbm91Z2ggcmFuZG9tCiAgIGJ5dGVzLCBpbnN0ZWFkIG9mIGNhc3RpbmcgYSBkaXJlY3RseSBQeV9zc2l6ZV90IHRvIGludC4KIAorLSBJc3N1ZSAjMTY4NjQ6IHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZCBub3cgc3VwcG9ydHMgUkVQTEFDRSBzdGF0ZW1lbnQuCisgIEluaXRpYWwgcGF0Y2ggYnkgQWxleCBMb3JkVGhvcnNlbi4KKwogLSBJc3N1ZSAjMjYzODY6IEZpeGVkIHR0ay5UcmVlVmlldyBzZWxlY3Rpb24gb3BlcmF0aW9ucyB3aXRoIGl0ZW0gaWQncwogICBjb250YWluaW5nIHNwYWNlcy4KIAorLSBJc3N1ZSAjODYzNzogSG9ub3IgYSBwYWdlciBzZXQgYnkgdGhlIGVudiB2YXIgTUFOUEFHRVIgKGluIHByZWZlcmVuY2UgdG8KKyAgb25lIHNldCBieSB0aGUgZW52IHZhciBQQUdFUikuCisKIC0gW1NlY3VyaXR5XSBJc3N1ZSAjMjI2MzY6IEF2b2lkIHNoZWxsIGluamVjdGlvbiBwcm9ibGVtcyB3aXRoCiAgIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpLgogCkBAIC0zMTksMjAyICsxMDY3LDQwMCBAQAogICBsb2NhbGUgZW5jb2RpbmcsIGFuZCBmaXggZ2V0X2JlZ2lkeCgpIGFuZCBnZXRfZW5kaWR4KCkgdG8gcmV0dXJuIGNvZGUgcG9pbnQKICAgaW5kZXhlcy4KIAotLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmguCi0KIC0gSXNzdWUgIzI3MzkyOiBBZGQgbG9vcC5jb25uZWN0X2FjY2VwdGVkX3NvY2tldCgpLgogICBQYXRjaCBieSBKaW0gRnVsdG9uLgogCi0tIElzc3VlICMyNzkzMDogSW1wcm92ZWQgYmVoYXZpb3VyIG9mIGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lci4KLSAgVGhhbmtzIHRvIFBhdWxvIEFuZHJhZGUgYW5kIFBldHIgVmlrdG9yaW4gZm9yIHRoZSBhbmFseXNpcyBhbmQgcGF0Y2guCi0KLS0gSXNzdWUgIzIxMjAxOiBJbXByb3ZlcyByZWFkYWJpbGl0eSBvZiBtdWx0aXByb2Nlc3NpbmcgZXJyb3IgbWVzc2FnZS4gIFRoYW5rcwotICB0byBXb2pjaWVjaCBXYWxjemFrIGZvciBwYXRjaC4KLQotLSBJc3N1ZSAjMjc0NTY6IGFzeW5jaW86IFNldCBUQ1BfTk9ERUxBWSBieSBkZWZhdWx0LgotCi0tIElzc3VlICMyNzkwNjogRml4IHNvY2tldCBhY2NlcHQgZXhoYXVzdGlvbiBkdXJpbmcgaGlnaCBUQ1AgdHJhZmZpYy4KLSAgUGF0Y2ggYnkgS2V2aW4gQ29ud2F5LgotCi0tIElzc3VlICMyODE3NDogSGFuZGxlIHdoZW4gU09fUkVVU0VQT1JUIGlzbid0IHByb3Blcmx5IHN1cHBvcnRlZC4KLSAgUGF0Y2ggYnkgU2V0aCBNaWNoYWVsIExhcnNvbi4KLQotLSBJc3N1ZSAjMjY2NTQ6IEluc3BlY3QgZnVuY3Rvb2xzLnBhcnRpYWwgaW4gYXN5bmNpby5IYW5kbGUuX19yZXByX18uCi0gIFBhdGNoIGJ5IGljZWJveS4KLQotLSBJc3N1ZSAjMjY5MDk6IEZpeCBzbG93IHBpcGVzIElPIGluIGFzeW5jaW8uCi0gIFBhdGNoIGJ5IElOQURBIE5hb2tpLgotCi0tIElzc3VlICMyODE3NjogRml4IGNhbGxiYWNrcyByYWNlIGluIGFzeW5jaW8uU2VsZWN0b3JMb29wLnNvY2tfY29ubmVjdC4KLQotLSBJc3N1ZSAjMjc3NTk6IEZpeCBzZWxlY3RvcnMgaW5jb3JyZWN0bHkgcmV0YWluIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4KLSAgUGF0Y2ggYnkgTWFyayBXaWxsaWFtcy4KLQotLSBJc3N1ZSAjMjgzNjg6IFJlZnVzZSBtb25pdG9yaW5nIHByb2Nlc3NlcyBpZiB0aGUgY2hpbGQgd2F0Y2hlciBoYXMgCi0gIG5vIGxvb3AgYXR0YWNoZWQuCi0gIFBhdGNoIGJ5IFZpbmNlbnQgTWljaGVsLgotCi0tIElzc3VlICMyODM2OTogUmFpc2UgUnVudGltZUVycm9yIHdoZW4gdHJhbnNwb3J0J3MgRkQgaXMgdXNlZCB3aXRoIAotICBhZGRfcmVhZGVyLCBhZGRfd3JpdGVyLCBldGMuCi0KLS0gSXNzdWUgIzI4MzcwOiBTcGVlZHVwIGFzeW5jaW8uU3RyZWFtUmVhZGVyLnJlYWRleGFjdGx5LgotICBQYXRjaCBieSDQmtC+0YDQtdC90LHQtdGA0LMg0JzQsNGA0LouCi0KLS0gSXNzdWUgIzI4MzcxOiBEZXByZWNhdGUgcGFzc2luZyBhc3luY2lvLkhhbmRsZXMgdG8gcnVuX2luX2V4ZWN1dG9yLgotCi0tIElzc3VlICMyODM3MjogRml4IGFzeW5jaW8gdG8gc3VwcG9ydCBmb3JtYXR0aW5nIG9mIG5vbi1weXRob24gY29yb3V0aW5lcy4KLQogSURMRQogLS0tLQogCi0tIElzc3VlICMxNTMwODogQWRkICdpbnRlcnJ1cHQgZXhlY3V0aW9uJyAoXkMpIHRvIFNoZWxsIG1lbnUuCi0gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LCB1cGRhdGVkIGJ5IEJheWFyZCBSYW5kZWwuCistIElzc3VlICMyNzQ3NzogSURMRSBzZWFyY2ggZGlhbG9ncyBub3cgdXNlIHR0ayB3aWRnZXRzLgogCi0tIElzc3VlICMyNzkyMjogU3RvcCBJRExFIHRlc3RzIGZyb20gJ2ZsYXNoaW5nJyBndWkgd2lkZ2V0cyBvbiB0aGUgc2NyZWVuLgorLSBJc3N1ZSAjMjcxNzM6IEFkZCAnSURMRSBNb2Rlcm4gVW5peCcgdG8gdGhlIGJ1aWx0LWluIGtleSBzZXRzLgorICBNYWtlIHRoZSBkZWZhdWx0IGtleSBzZXQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybS4KKyAgQWRkIHRlc3RzIGZvciB0aGUgY2hhbmdlcyB0byB0aGUgY29uZmlnIG1vZHVsZS4KIAotLSBBZGQgdmVyc2lvbiB0byB0aXRsZSBvZiBJRExFIGhlbHAgd2luZG93LgotCi0tIElzc3VlICMyNTU2NDogSW4gc2VjdGlvbiBvbiBJRExFIC0tIGNvbnNvbGUgZGlmZmVyZW5jZXMsIG1lbnRpb24gdGhhdAotICB1c2luZyBleGVjIG1lYW5zIHRoYXQgX19idWlsdGluc19fIGlzIGRlZmluZWQgZm9yIGVhY2ggc3RhdGVtZW50LgotCi0tIElzc3VlICMyNzcxNDogdGV4dF90ZXh0dmlldyBhbmQgdGVzdF9hdXRvY29tcGxldGUgbm93IHBhc3Mgd2hlbiByZS1ydW4KLSAgaW4gdGhlIHNhbWUgcHJvY2Vzcy4gIFRoaXMgb2NjdXJzIHdoZW4gdGVzdF9pZGxlIGZhaWxzIHdoZW4gcnVuIHdpdGggdGhlCi0gIC13IG9wdGlvbiBidXQgd2l0aG91dCAtam4uICBGaXggd2FybmluZyBmcm9tIHRlc3RfY29uZmlnLgotCi0tIElzc3VlICMyNTUwNzogSURMRSBubyBsb25nZXIgcnVucyBidWdneSBjb2RlIGJlY2F1c2Ugb2YgaXRzIHRraW50ZXIgaW1wb3J0cy4KLSAgVXNlcnMgbXVzdCBpbmNsdWRlIHRoZSBzYW1lIGltcG9ydHMgcmVxdWlyZWQgdG8gcnVuIGRpcmVjdGx5IGluIFB5dGhvbi4KKy0gSXNzdWUgIzI3NDUyOiBtYWtlIGNvbW1hbmQgbGluZSAiaWRsZS10ZXN0PiBweXRob24gdGVzdF9oZWxwLnB5IiB3b3JrLgorICBfX2ZpbGVfXyBpcyByZWxhdGl2ZSB3aGVuIHB5dGhvbiBpcyBzdGFydGVkIGluIHRoZSBmaWxlJ3MgZGlyZWN0b3J5LgogCiAtIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCiAKKy0gSXNzdWUgIzI3MzgwOiBJRExFOiBhZGQgcXVlcnkucHkgd2l0aCBiYXNlIFF1ZXJ5IGRpYWxvZyBhbmQgdHRrIHdpZGdldHMuCisgIE1vZHVsZSBoYWQgc3ViY2xhc3NlcyBTZWN0aW9uTmFtZSwgTW9kdWxlTmFtZSwgYW5kIEhlbHBTb3VyY2UsIHdoaWNoIGFyZQorICB1c2VkIHRvIGdldCBpbmZvcm1hdGlvbiBmcm9tIHVzZXJzIGJ5IGNvbmZpZ2RpYWxvZyBhbmQgZmlsZSA9PkxvYWQgTW9kdWxlLgorICBFYWNoIHN1YmNsYXNzIGhhcyBpdHcgb3duIHZhbGlkaXR5IGNoZWNrcy4gIFVzaW5nIE1vZHVsZU5hbWUgYWxsb3dzIHVzZXJzCisgIHRvIGVkaXQgYmFkIG1vZHVsZSBuYW1lcyBpbnN0ZWFkIG9mIHN0YXJ0aW5nIG92ZXIuCisgIEFkZCB0ZXN0cyBhbmQgZGVsZXRlIHRoZSB0d28gZmlsZXMgY29tYmluZWQgaW50byB0aGUgbmV3IG9uZS4KKworLSBJc3N1ZSAjMjczNzI6IFRlc3RfaWRsZSBubyBsb25nZXIgY2hhbmdlcyB0aGUgbG9jYWxlLgorCiAtIElzc3VlICMyNzM2NTogQWxsb3cgbm9uLWFzY2lpIGNoYXJzIGluIElETEUgTkVXUy50eHQsIGZvciBjb250cmlidXRvciBuYW1lcy4KIAogLSBJc3N1ZSAjMjcyNDU6IElETEU6IENsZWFubHkgZGVsZXRlIGN1c3RvbSB0aGVtZXMgYW5kIGtleSBiaW5kaW5ncy4KICAgUHJldmlvdXNseSwgd2hlbiBJRExFIHdhcyBzdGFydGVkIGZyb20gYSBjb25zb2xlIG9yIGJ5IGltcG9ydCwgYSBjYXNjYWRlCiAgIG9mIHdhcm5pbmdzIHdhcyBlbWl0dGVkLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMjQxMzc6IFJ1biBJRExFLCB0ZXN0X2lkbGUsIGFuZCBodGVzdCB3aXRoIHRraW50ZXIgZGVmYXVsdCByb290CisgIGRpc2FibGVkLiAgRml4IGNvZGUgYW5kIHRlc3RzIHRoYXQgZmFpbCB3aXRoIHRoaXMgcmVzdHJpY3Rpb24uICBGaXggaHRlc3RzIHRvCisgIG5vdCBjcmVhdGUgYSBzZWNvbmQgYW5kIHJlZHVuZGFudCByb290IGFuZCBtYWlubG9vcC4KKworLSBJc3N1ZSAjMjczMTA6IEZpeCBJRExFLmFwcCBmYWlsdXJlIHRvIGxhdW5jaCBvbiBPUyBYIGR1ZSB0byB2ZXN0aWdpYWwgaW1wb3J0LgorCiBDIEFQSQogLS0tLS0KIAogLSBJc3N1ZSAjMjY3NTQ6IFB5VW5pY29kZV9GU0RlY29kZXIoKSBhY2NlcHRlZCBhIGZpbGVuYW1lIGFyZ3VtZW50IGVuY29kZWQgYXMKLSAgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMuIE5vdyBvbmx5IHN0cmluZ3MgYW5kIGJ5dGVzLWxpa2Ugb2JqZWN0cyBhcmUgYWNjZXB0ZWQuCisgIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzLiBOb3cgb25seSBzdHJpbmdzIGFuZCBieXRlLWxpa2Ugb2JqZWN0cyBhcmUgYWNjZXB0ZWQuCiAKLVRlc3RzCitCdWlsZAogLS0tLS0KIAotLSBJc3N1ZSAjMjc3ODc6IENhbGwgZ2MuY29sbGVjdCgpIGJlZm9yZSBjaGVja2luZyBlYWNoIHRlc3QgZm9yICJkYW5nbGluZwotICB0aHJlYWRzIiwgc2luY2UgdGhlIGRhbmdsaW5nIHRocmVhZHMgYXJlIHdlYWsgcmVmZXJlbmNlcy4KKy0gSXNzdWUgIzI4MDY2OiBGaXggdGhlIGxvZ2ljIHRoYXQgc2VhcmNoZXMgYnVpbGQgZGlyZWN0b3JpZXMgZm9yIGdlbmVyYXRlZAorICBpbmNsdWRlIGZpbGVzIHdoZW4gYnVpbGRpbmcgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCiAKLS0gSXNzdWUgIzI3MzY5OiBJbiB0ZXN0X3B5ZXhwYXQsIGF2b2lkIHRlc3RpbmcgYW4gZXJyb3IgbWVzc2FnZSBkZXRhaWwgdGhhdAotICBjaGFuZ2VkIGluIEV4cGF0IDIuMi4wLgorLSBJc3N1ZSAjMjc0NDI6IEV4cG9zZSB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwgdGhhdCBweXRob24gd2FzIGJ1aWx0IGFnYWluc3QsIGluCisgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKSBhcyAnQU5EUk9JRF9BUElfTEVWRUwnLgorCistIElzc3VlICMyNzQzNDogVGhlIGludGVycHJldGVyIHRoYXQgcnVucyB0aGUgY3Jvc3MtYnVpbGQsIGZvdW5kIGluIFBBVEgsIG11c3QKKyAgbm93IGJlIG9mIHRoZSBzYW1lIGZlYXR1cmUgdmVyc2lvbiAoZS5nLiAzLjYpIGFzIHRoZSBzb3VyY2UgYmVpbmcgYnVpbHQuCisKKy0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJoLgorCistIElzc3VlICMyMzk2ODogUmVuYW1lIHRoZSBwbGF0Zm9ybSBkaXJlY3RvcnkgZnJvbSBwbGF0LSQoTUFDSERFUCkgdG8KKyAgcGxhdC0kKFBMQVRGT1JNX1RSSVBMRVQpLgorICBSZW5hbWUgdGhlIGNvbmZpZyBkaXJlY3RvcnkgKExJQlBMKSBmcm9tIGNvbmZpZy0kKExEVkVSU0lPTikgdG8KKyAgY29uZmlnLSQoTERWRVJTSU9OKS0kKFBMQVRGT1JNX1RSSVBMRVQpLgorICBJbnN0YWxsIHRoZSBwbGF0Zm9ybSBzcGVjaWZjIF9zeXNjb25maWdkYXRhIG1vZHVsZSBpbnRvIHRoZSBwbGF0Zm9ybQorICBkaXJlY3RvcnkgYW5kIHJlbmFtZSBpdCB0byBpbmNsdWRlIHRoZSBBQklGTEFHUy4KKworLSBEb24ndCB1c2UgbGFyZ2VmaWxlIHN1cHBvcnQgZm9yIEdOVS9IdXJkLgogCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjc5NTI6IEdldCBUb29scy9zY3JpcHRzL2ZpeGNpZC5weSB3b3JraW5nIHdpdGggUHl0aG9uIDMgYW5kIHRoZQotICBjdXJyZW50ICJyZSIgbW9kdWxlLCBhdm9pZCBpbnZhbGlkIFB5dGhvbiBiYWNrc2xhc2ggZXNjYXBlcywgYW5kIGZpeCBhIGJ1ZwotICBwYXJzaW5nIGVzY2FwZWQgQyBxdW90ZSBzaWducy4KLQogLSBJc3N1ZSAjMjczMzI6IEZpeGVkIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBtb2R1bGUtbGV2ZWwgZnVuY3Rpb25zCiAgIGdlbmVyYXRlZCBieSBBcmd1bWVudCBDbGluaWMuICBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgogCiAtIElzc3VlICMyNzQxODogRml4ZWQgVG9vbHMvaW1wb3J0YmVuY2gvaW1wb3J0YmVuY2gucHkuCiAKLVdpbmRvd3MKLS0tLS0tLS0KK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjgyNTE6IEltcHJvdmVtZW50cyB0byBoZWxwIG1hbnVhbHMgb24gV2luZG93cy4KKy0gSXNzdWUgIzE5NDg5OiBNb3ZlZCB0aGUgc2VhcmNoIGJveCBmcm9tIHRoZSBzaWRlYmFyIHRvIHRoZSBoZWFkZXIgYW5kIGZvb3RlcgorICBvZiBlYWNoIHBhZ2UuICBQYXRjaCBieSBBbW1hciBBc2thci4KIAotLSBJc3N1ZSAjMjgxMTA6IGxhdW5jaGVyLm1zaSBoYXMgZGlmZmVyZW50IHByb2R1Y3QgY29kZXMgYmV0d2VlbiAzMi1iaXQgYW5kCi0gIDY0LWJpdAotCi0tIElzc3VlICMyNTE0NDogRW5zdXJlcyBUYXJnZXREaXIgaXMgc2V0IGJlZm9yZSBjb250aW51aW5nIHdpdGggY3VzdG9tCi0gIGluc3RhbGwuCi0KLS0gSXNzdWUgIzI3NDY5OiBBZGRzIGEgc2hlbGwgZXh0ZW5zaW9uIHRvIHRoZSBsYXVuY2hlciBzbyB0aGF0IGRyYWcgYW5kIGRyb3AKLSAgd29ya3MgY29ycmVjdGx5LgotCi0tIElzc3VlICMyNzMwOTogRW5hYmxlZCBwcm9wZXIgV2luZG93cyBzdHlsZXMgaW4gcHl0aG9uW3ddLmV4ZSBtYW5pZmVzdC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzI4MjU4OiBGaXhlZCBidWlsZCB3aXRoIEVzdG9uaWFuIGxvY2FsZSAocHl0aG9uLWNvbmZpZyBhbmQgZGlzdGNsZWFuCi0gIHRhcmdldHMgaW4gTWFrZWZpbGUpLiAgUGF0Y2ggYnkgQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMuCi0KLS0gSXNzdWUgIzI2NjYxOiBzZXR1cC5weSBub3cgZGV0ZWN0cyBzeXN0ZW0gbGliZmZpIHdpdGggbXVsdGlhcmNoIHdyYXBwZXIuCi0KLS0gSXNzdWUgIzI4MDY2OiBGaXggdGhlIGxvZ2ljIHRoYXQgc2VhcmNoZXMgYnVpbGQgZGlyZWN0b3JpZXMgZm9yIGdlbmVyYXRlZAotICBpbmNsdWRlIGZpbGVzIHdoZW4gYnVpbGRpbmcgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCi0KLS0gSXNzdWUgIzE1ODE5OiBSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGUgc2VhcmNoIGRpcmVjdG9yeSBvcHRpb24gZm9yIGJ1aWxkaW5nCi0gIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgotCi0tIElzc3VlICMyNzU2NjogRml4IGNsZWFuIHRhcmdldCBpbiBmcmVlemUgbWFrZWZpbGUgKHBhdGNoIGJ5IExpc2EgUm9hY2gpCi0KLS0gSXNzdWUgIzI3NzA1OiBVcGRhdGUgbWVzc2FnZSBpbiB2YWxpZGF0ZV91Y3J0YmFzZS5weQotCi0tIElzc3VlICMyNzk4MzogQ2F1c2UgbGFjayBvZiBsbHZtLXByb2ZkYXRhIHRvb2wgd2hlbiB1c2luZyBjbGFuZyBhcwotICByZXF1aXJlZCBmb3IgUEdPIGxpbmtpbmcgdG8gYmUgYSBjb25maWd1cmUgdGltZSBlcnJvciByYXRoZXIgdGhhbgotICBtYWtlIHRpbWUgd2hlbiAtLXdpdGgtb3B0aW1pemF0aW9ucyBpcyBlbmFibGVkLiAgQWxzbyBpbXByb3ZlIG91cgotICBhYmlsaXR5IHRvIGZpbmQgdGhlIGxsdm0tcHJvZmRhdGEgdG9vbCBvbiBNYWNPUyBhbmQgc29tZSBMaW51eGVzLgotCi0tIElzc3VlICMyNjMwNzogVGhlIHByb2ZpbGUtb3B0IGJ1aWxkIG5vdyBhcHBseXMgUEdPIHRvIHRoZSBidWlsdC1pbiBtb2R1bGVzLgotCi0tIElzc3VlICMyNjM1OTogQWRkIHRoZSAtLXdpdGgtb3B0aW1pemF0aW9ucyBjb25maWd1cmUgZmxhZy4KLQotLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKLSAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKLQotLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwIGFuZCBsZF9zb19haXgsCi0gIHdoaWNoIGFyZSByZXF1aXJlZCBvbiBBSVguICBUaGlzIHVwZGF0ZXMgcmVmZXJlbmNlcyB0byBhbiBpbnN0YWxsYXRpb24gcGF0aAotICB0aGF0IHdhcyBjaGFuZ2VkIGluIDMuMmE0LCBhbmQgdW5kb2VzIGNoYW5nZWQgcmVmZXJlbmNlcyB0byB0aGUgYnVpbGQgdHJlZQotICB0aGF0IHdlcmUgbWFkZSBpbiAzLjUuMGExLgotCi0tIElzc3VlICMyNzQ1MzogQ1BQIGludm9jYXRpb24gaW4gY29uZmlndXJlIG11c3QgdXNlIENQUEZMQUdTLiBQYXRjaCBieQotICBDaGkgSHN1YW4gWWVuLgotCi0tIElzc3VlICMyNzY0MTogVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IGluc2VydHMgY29tbWVudHMgaW50byB0aGUgbWFrZWZpbGUKLSAgdG8gcHJldmVudCB0aGUgcGdlbiBhbmQgX2ZyZWV6ZV9pbXBvcnRsaWIgZXhlY3V0YWJsZXMgZnJvbSBiZWluZyBjcm9zcy0KLSAgY29tcGlsZWQuCi0KLS0gSXNzdWUgIzI2NjYyOiBTZXQgUFlUSE9OX0ZPUl9HRU4gaW4gY29uZmlndXJlIGFzIHRoZSBQeXRob24gcHJvZ3JhbSB0byBiZQotICB1c2VkIGZvciBmaWxlIGdlbmVyYXRpb24gZHVyaW5nIHRoZSBidWlsZC4KLQotLSBJc3N1ZSAjMTA5MTA6IEF2b2lkIEMrKyBjb21waWxhdGlvbiBlcnJvcnMgb24gRnJlZUJTRCBhbmQgT1MgWC4KLSAgQWxzbyB1cGRhdGUgRnJlZWRCU0QgdmVyc2lvbiBjaGVja3MgZm9yIHRoZSBvcmlnaW5hbCBjdHlwZSBVVEYtOCB3b3JrYXJvdW5kLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNi0wNi0yNgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmguCistIElzc3VlICMyNzI4NTogVXBkYXRlIGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCB0aGUgZGVwcmVjYXRpb24gb2YgYGBweXZlbnZgYAorICBhbmQgbm9ybWFsaXplIG9uIHRoZSB0ZXJtICJ2aXJ0dWFsIGVudmlyb25tZW50Ii4gUGF0Y2ggYnkgU3RldmUgUGllcmN5LgogCiBUZXN0cwogLS0tLS0KIAotLSBJc3N1ZSAjMjY4Njc6IFVidW50dSdzIG9wZW5zc2wgT1BfTk9fU1NMdjMgaXMgZm9yY2VkIG9uIGJ5IGRlZmF1bHQ7IGZpeCB0ZXN0LgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzI3MzY1OiBBbGxvdyBub24tYXNjaWkgaW4gaWRsZWxpYi9ORVdTLnR4dCAtIG1pbmltYWwgcGFydCBmb3IgMy41LjIuCistIElzc3VlICMyNzAyNzogQWRkZWQgdGVzdC5zdXBwb3J0LmlzX2FuZHJvaWQgdGhhdCBpcyBUcnVlIHdoZW4gdGhpcyBpcyBhbgorICBBbmRyb2lkIGJ1aWxkLgogCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4yIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1SZWxlYXNlIGRhdGU6IDIwMTYtMDYtMTIKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDYtMTMqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMyNzA5NTogU2ltcGxpZmllZCBNQUtFX0ZVTkNUSU9OIGFuZCByZW1vdmVkIE1BS0VfQ0xPU1VSRSBvcGNvZGVzLgorICBQYXRjaCBieSBEZW11ciBSdW1lZC4KKworLSBJc3N1ZSAjMjcxOTA6IFJhaXNlIE5vdFN1cHBvcnRlZEVycm9yIGlmIHNxbGl0ZTMgaXMgb2xkZXIgdGhhbiAzLjMuMS4KKyAgUGF0Y2ggYnkgRGF2ZSBTYXd5ZXIuCisKKy0gSXNzdWUgIzI3Mjg2OiBGaXhlZCBjb21waWxpbmcgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgb3Bjb2RlLiAgQ2FsbGluZworICBmdW5jdGlvbiB3aXRoIGdlbmVyYWxpemVkIHVucGFja2luZyAoUEVQIDQ0OCkgYW5kIGNvbmZsaWN0aW5nIGtleXdvcmQgbmFtZXMKKyAgY291bGQgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLgorCistIElzc3VlICMyNzE0MDogQWRkZWQgQlVJTERfQ09OU1RfS0VZX01BUCBvcGNvZGUuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgc3VwcG9ydCBmb3Igb3MuUGF0aExpa2Ugb2JqZWN0cyB0byBvcGVuKCkgKHBhcnQgb2YgUEVQIDUxOSkuCisKIC0gSXNzdWUgIzI3MDY2OiBGaXhlZCBTeXN0ZW1FcnJvciBpZiBhIGN1c3RvbSBvcGVuZXIgKGZvciBvcGVuKCkpIHJldHVybnMgYQogICBuZWdhdGl2ZSBudW1iZXIgd2l0aG91dCBzZXR0aW5nIGFuIGV4Y2VwdGlvbi4KIAorLSBJc3N1ZSAjMjY5ODM6IGZsb2F0KCkgbm93IGFsd2F5cyByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgZXhhY3QgZmxvYXQuCisgIFRoZSBkZXByZWNhdGlvbiB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgX19mbG9hdF9fIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YKKyAgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQuICBJbiBhIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24gdGhpcyBjYW4KKyAgYmUgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzI3MDk3OiBQeXRob24gaW50ZXJwcmV0ZXIgaXMgbm93IGFib3V0IDclIGZhc3RlciBkdWUgdG8gb3B0aW1pemVkCisgIGluc3RydWN0aW9uIGRlY29kaW5nLiAgQmFzZWQgb24gcGF0Y2ggYnkgRGVtdXIgUnVtZWQuCisKKy0gSXNzdWUgIzI2NjQ3OiBQeXRob24gaW50ZXJwcmV0ZXIgbm93IHVzZXMgMTYtYml0IHdvcmRjb2RlIGluc3RlYWQgb2YgYnl0ZWNvZGUuCisgIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICMyMzI3NTogQWxsb3cgYXNzaWduaW5nIHRvIGFuIGVtcHR5IHRhcmdldCBsaXN0IGluIHJvdW5kIGJyYWNrZXRzOgorICAoKSA9IGl0ZXJhYmxlLgorCistIElzc3VlICMyNzI0MzogVXBkYXRlIHRoZSBfX2FpdGVyX18gcHJvdG9jb2w6IGluc3RlYWQgb2YgcmV0dXJuaW5nCisgIGFuIGF3YWl0YWJsZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFzeW5jaHJvbm91cyBpdGVyYXRvciwgdGhlIGFzeW5jaHJvbm91cworICBpdGVyYXRvciBzaG91bGQgYmUgcmV0dXJuZWQgZGlyZWN0bHkuICBEb2luZyB0aGUgZm9ybWVyIHdpbGwgdHJpZ2dlciBhCisgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCisKKworTGlicmFyeQorLS0tLS0tLQorCistIENvbW1lbnQgb3V0IHNvY2tldCAoU09fUkVVU0VQT1JUKSBhbmQgcG9zaXggKE9fU0hMT0NLLCBPX0VYTE9DSykgY29uc3RhbnRzCisgIGV4cG9zZWQgb24gdGhlIEFQSSB3aGljaCBhcmUgbm90IGltcGxlbWVudGVkIG9uIEdOVS9IdXJkLiBUaGV5IHdvdWxkIG5vdAorICB3b3JrIGF0IHJ1bnRpbWUgYW55d2F5LgorCistIElzc3VlICMyNTQ1NTogRml4ZWQgY3Jhc2hlcyBpbiByZXByIG9mIHJlY3Vyc2l2ZSBFbGVtZW50VHJlZS5FbGVtZW50IGFuZAorICBmdW5jdG9vbHMucGFydGlhbCBvYmplY3RzLgorCistIElzc3VlICMyNzI5NDogSW1wcm92ZWQgcmVwciBmb3IgVGtpbnRlciBldmVudCBvYmplY3RzLgorCistIElzc3VlICMyMDUwODogSW1wcm92ZSBleGNlcHRpb24gbWVzc2FnZSBvZiBJUHZ7NCw2fU5ldHdvcmsuX19nZXRpdGVtX18uCisgIFBhdGNoIGJ5IEdhcmV0aCBSZWVzLgorCistIFtTZWN1cml0eV0gSXNzdWUgIzI2NTU2OiBVcGRhdGUgZXhwYXQgdG8gMi4xLjEsIGZpeGVzIENWRS0yMDE1LTEyODMuCisKKy0gW1NlY3VyaXR5XSBGaXggVExTIHN0cmlwcGluZyB2dWxuZXJhYmlsaXR5IGluIHNtdHBsaWIsIENWRS0yMDE2LTA3NzIuCisgIFJlcG9ydGVkIGJ5IFRlYW0gT3N0c3Ryb20uCisKKy0gSXNzdWUgIzIxMzg2OiBJbXBsZW1lbnQgbWlzc2luZyBJUHY0QWRkcmVzcy5pc19nbG9iYWwgcHJvcGVydHkuICBJdCB3YXMKKyAgZG9jdW1lbnRlZCBzaW5jZSAwN2E1NjEwYmFlOWQuICBJbml0aWFsIHBhdGNoIGJ5IFJvZ2VyIEx1ZXRoaS4KKworLSBJc3N1ZSAjMjcwMjk6IFJlbW92ZWQgZGVwcmVjYXRlZCBzdXBwb3J0IG9mIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGZyb20KKyAgWmlwRmlsZS5vcGVuKCkuCisKKy0gSXNzdWUgIzI3MDMwOiBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgaW4KKyAgcmVndWxhciBleHByZXNzaW9ucyBub3cgYXJlIGVycm9ycy4gIFRoZSByZS5MT0NBTEUgZmxhZyBub3cgY2FuIGJlIHVzZWQKKyAgb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zLgorCistIElzc3VlICMyNzE4NjogQWRkIG9zLlBhdGhMaWtlIHN1cHBvcnQgdG8gRGlyRW50cnkgKHBhcnQgb2YgUEVQIDUxOSkuCisgIEluaXRpYWwgcGF0Y2ggYnkgSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzIwOTAwOiBkaXN0dXRpbHMgcmVnaXN0ZXIgY29tbWFuZCBub3cgZGVjb2RlcyBIVFRQIHJlc3BvbnNlcworICBjb3JyZWN0bHkuICBJbml0aWFsIHBhdGNoIGJ5IGluZ3JpZC4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBvcy5QYXRoTGlrZSBzdXBwb3J0IHRvIHBhdGhsaWIsIHJlbW92aW5nIGl0cyBwcm92aXNpb25hbAorICBzdGF0dXMgKHBhcnQgb2YgUEVQIDUxOSkuIEluaXRpYWwgcGF0Y2ggYnkgRHVzdHkgUGhpbGxpcHMuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgc3VwcG9ydCBmb3Igb3MuUGF0aExpa2Ugb2JqZWN0cyB0byBvcy5mc2VuY29kZSgpIGFuZAorICBvcy5mc2RlY29kZSgpIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIElzc3VlICMyNzE4NjogSW50cm9kdWNlIG9zLlBhdGhMaWtlIGFuZCBvcy5mc3BhdGgoKSAocGFydCBvZiBQRVAgNTE5KS4KKworLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBwcm92aWRlcyBzZXZlcmFsIG5ldyBjbGFzc2VzIGFuZAorICBmZWF0dXJlczogQG92ZXJsb2FkIG91dHNpZGUgc3R1YnMsIFJldmVyc2libGUsIERlZmF1bHREaWN0LCBUZXh0LAorICBDb250ZXh0TWFuYWdlciwgVHlwZVtdLCBOZXdUeXBlKCksIFRZUEVfQ0hFQ0tJTkcsIGFuZCBudW1lcm91cyBidWcKKyAgZml4ZXMgKG5vdGUgdGhhdCBzb21lIG9mIHRoZSBuZXcgZmVhdHVyZXMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4KKyAgbXlweSBvciBvdGhlciBzdGF0aWMgYW5hbHl6ZXJzKS4gIEFsc28gY2xhc3NlcyBmb3IgUEVQIDQ5MgorICAoQXdhaXRhYmxlLCBBc3luY0l0ZXJhYmxlLCBBc3luY0l0ZXJhdG9yKSBoYXZlIGJlZW4gYWRkZWQgKGluIGZhY3QKKyAgdGhleSBtYWRlIGl0IGludG8gMy41LjEgYnV0IHdlcmUgbmV2ZXIgbWVudGlvbmVkKS4KKworLSBJc3N1ZSAjMjU3Mzg6IFN0b3AgaHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5zZW5kX2Vycm9yKCkgZnJvbQorICBzZW5kaW5nIGEgbWVzc2FnZSBib2R5IGZvciAyMDUgUmVzZXQgQ29udGVudC4gIEFsc28sIGRvbid0IHNlbmQgQ29udGVudAorICBoZWFkZXIgZmllbGRzIGluIHJlc3BvbnNlcyB0aGF0IGRvbid0IGhhdmUgYSBib2R5LiAgUGF0Y2ggYnkgU3VzdW11CisgIEtvc2hpYmEuCisKKy0gSXNzdWUgIzIxMzEzOiBGaXggdGhlICJwbGF0Zm9ybSIgbW9kdWxlIHRvIHRvbGVyYXRlIHdoZW4gc3lzLnZlcnNpb24KKyAgY29udGFpbnMgdHJ1bmNhdGVkIGJ1aWxkIGluZm9ybWF0aW9uLgorCistIFtTZWN1cml0eV0gSXNzdWUgIzI2ODM5OiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBjYWxscworICBgYGdldHJhbmRvbSgpYGAgd2l0aCBgYEdSTkRfTk9OQkxPQ0tgYCB0byBmYWxsIGJhY2sgb24gcmVhZGluZworICBgYC9kZXYvdXJhbmRvbWBgIGlmIHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiBQYXRjaAorICB3cml0dGVuIGJ5IENvbG0gQnVja2xleS4KKworLSBJc3N1ZSAjMjM4ODM6IEFkZGVkIG1pc3NpbmcgQVBJcyB0byBfX2FsbF9fIHRvIG1hdGNoIHRoZSBkb2N1bWVudGVkIEFQSXMKKyAgZm9yIHRoZSBmb2xsb3dpbmcgbW9kdWxlczogY2dpLCBtYWlsYm94LCBtaW1ldHlwZXMsIHBsaXN0bGliIGFuZCBzbXRwZC4KKyAgUGF0Y2hlcyBieSBKYWNlayBLb8WCb2R6aWVqLgorCistIElzc3VlICMyNzE2NDogSW4gdGhlIHpsaWIgbW9kdWxlLCBhbGxvdyBkZWNvbXByZXNzaW5nIHJhdyBEZWZsYXRlIHN0cmVhbXMKKyAgd2l0aCBhIHByZWRlZmluZWQgemRpY3QuICBCYXNlZCBvbiBwYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjQyOTE6IEZpeCB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIuV1NHSVJlcXVlc3RIYW5kbGVyIHRvIGNvbXBsZXRlbHkKKyAgd3JpdGUgZGF0YSB0byB0aGUgY2xpZW50LiAgUHJldmlvdXNseSBpdCBjb3VsZCBkbyBwYXJ0aWFsIHdyaXRlcyBhbmQKKyAgdHJ1bmNhdGUgZGF0YS4gIEFsc28sIHdzZ2lyZWYuaGFuZGxlci5TZXJ2ZXJIYW5kbGVyIGNhbiBub3cgaGFuZGxlIHN0ZG91dAorICBkb2luZyBwYXJ0aWFsIHdyaXRlcywgYnV0IHRoaXMgaXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjEyNzI6IFVzZSBfc3lzY29uZmlnZGF0YS5weSB0byBpbml0aWFsaXplIGRpc3R1dGlscy5zeXNjb25maWcuCisKKy0gSXNzdWUgIzE5NjExOiA6bW9kOmBpbnNwZWN0YCBub3cgcmVwb3J0cyB0aGUgaW1wbGljaXQgYGAuMGBgIHBhcmFtZXRlcnMKKyAgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBmb3IgY29tcHJlaGVuc2lvbiBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb24gc2NvcGVzCisgIGFzIGlmIHRoZXkgd2VyZSBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyBjYWxsZWQgYGBpbXBsaWNpdDBgYC4KKyAgUGF0Y2ggYnkgSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzI2ODA5OiBBZGQgYGBfX2FsbF9fYGAgdG8gOm1vZDpgc3RyaW5nYC4gIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI2MzczOiBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlIG5vdyBjb3JyZWN0bHkgaWdub3JlcworICBCcm9rZW5QaXBlRXJyb3Igd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVzIGJlZm9yZSAuY29tbXVuaWNhdGUoKQorICBpcyBjYWxsZWQgaW4gbW9yZS9hbGwgY2lyY3Vtc3RhbmNlcy4KKworLSBzaWduYWwsIHNvY2tldCwgYW5kIHNzbCBtb2R1bGUgSW50RW51bSBjb25zdGFudCBuYW1lIGxvb2t1cHMgbm93IHJldHVybiBhCisgIGNvbnNpc3RlbnQgbmFtZSBmb3IgdmFsdWVzIGhhdmluZyBtdWx0aXBsZSBuYW1lcy4gIEV4OiBzaWduYWwuU2lnbmFscyg2KQorICBub3cgcmVmZXJzIHRvIGl0c2VsZiBhcyBzaWduYWwuU0lHQUxSTSByYXRoZXIgdGhhbiBmbGlwcGluZyBiZXR3ZWVuIHRoYXQKKyAgYW5kIHNpZ25hbC5TSUdJT1QgYmFzZWQgb24gdGhlIGludGVycHJldGVyJ3MgaGFzaCByYW5kb21pemF0aW9uIHNlZWQuCisKKy0gSXNzdWUgIzI3MTY3OiBDbGFyaWZ5IHRoZSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBlcnJvciBtZXNzYWdlIHRleHQKKyAgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVkIGR1ZSB0byBhIHNpZ25hbC4KKworLSBJc3N1ZSAjMjU5MzE6IERvbid0IGRlZmluZSBzb2NrZXRzZXJ2ZXIuRm9ya2luZyogbmFtZXMgb24gcGxhdGZvcm1zIHN1Y2gKKyAgYXMgV2luZG93cyB0aGF0IGRvIG5vdCBzdXBwb3J0IG9zLmZvcmsoKS4KKworLSBJc3N1ZSAjMjE3NzY6IGRpc3R1dGlscy51cGxvYWQgbm93IGNvcnJlY3RseSBoYW5kbGVzIEhUVFBFcnJvci4KKyAgSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzI2NTI2OiBSZXBsYWNlIGN1c3RvbSBwYXJzZSB0cmVlIHZhbGlkYXRpb24gaW4gdGhlIHBhcnNlcgorICBtb2R1bGUgd2l0aCBhIHNpbXBsZSBERkEgdmFsaWRhdG9yLgorCistIElzc3VlICMyNzExNDogRml4IFNTTENvbnRleHQuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyB3aXRoCisgIFBlcm1pc3Npb25FcnJvcgorCistIElzc3VlICMxODM4MzogQXZvaWQgY3JlYXRpbmcgZHVwbGljYXRlIGZpbHRlcnMgd2hlbiB1c2luZyBmaWx0ZXJ3YXJuaW5ncworICBhbmQgc2ltcGxlZmlsdGVyLiAgQmFzZWQgb24gcGF0Y2ggYnkgQWxleCBTaGtvcC4KKworLSBJc3N1ZSAjMjMwMjY6IHdpbnJlZy5RdWVyeVZhbHVlRXgoKSBub3cgcmV0dXJuIGFuIGludGVnZXIgZm9yIFJFR19RV09SRCB0eXBlLgorCistIElzc3VlICMyNjc0MTogc3VicHJvY2Vzcy5Qb3BlbiBkZXN0cnVjdG9yIG5vdyBlbWl0cyBhIFJlc291cmNlV2FybmluZyB3YXJuaW5nCisgIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuCisKKy0gSXNzdWUgIzI3MDU2OiBPcHRpbWl6ZSBwaWNrbGUubG9hZCgpIGFuZCBwaWNrbGUubG9hZHMoKSwgdXAgdG8gMTAlIGZhc3RlcgorICB0byBkZXNlcmlhbGl6ZSBhIGxvdCBvZiBzbWFsbCBvYmplY3RzLgorCistIElzc3VlICMyMTI3MTogTmV3IGtleXdvcmQgb25seSBwYXJhbWV0ZXJzIGluIHJlc2V0X21vY2sgY2FsbC4KKworSURMRQorLS0tLQorCistIElzc3VlICM1MTI0OiBQYXN0ZSB3aXRoIHRleHQgc2VsZWN0ZWQgbm93IHJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gb24gWDExLgorICBUaGlzIG1hdGNoZXMgaG93IHBhc3RlIHdvcmtzIG9uIFdpbmRvd3MsIE1hYywgbW9zdCBtb2Rlcm4gTGludXggYXBwcywKKyAgYW5kIHR0ayB3aWRnZXRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjQ3NTA6IFN3aXRjaCBhbGwgc2Nyb2xsYmFycyBpbiBJRExFIHRvIHR0ayB2ZXJzaW9ucy4KKyAgV2hlcmUgbmVlZGVkLCBtaW5pbWFsIHRlc3RzIGFyZSBhZGRlZCB0byBjb3ZlciBjaGFuZ2VzLgorCistIElzc3VlICMyNDc1OTogSURMRSByZXF1aXJlcyB0ayA4LjUgYW5kIGF2YWlsYWJpbGl0eSB0dGsgd2lkZ2V0cy4KKyAgRGVsZXRlIG5vdyB1bm5lZWRlZCB0ayB2ZXJzaW9uIHRlc3RzIGFuZCBjb2RlIGZvciBvbGRlciB2ZXJzaW9ucy4KKyAgQWRkIHRlc3QgZm9yIElETEUgc3ludGF4IGNvbG9yaXpvZXIuCisKKy0gSXNzdWUgIzI3MjM5OiBpZGxlbGliLm1hY29zeC5pc1h5elRrIGZ1bmN0aW9ucyBpbml0aWFsaXplIGFzIG5lZWRlZC4KKworLSBJc3N1ZSAjMjcyNjI6IG1vdmUgQXF1YSB1bmJpbmRpbmcgY29kZSwgd2hpY2ggZW5hYmxlIGNvbnRleHQgbWVudXMsIHRvIG1heG9zeC4KKworLSBJc3N1ZSAjMjQ3NTk6IE1ha2UgY2xlYXIgaW4gaWRsZWxpYi5pZGxlX3Rlc3QuX19pbml0X18gdGhhdCB0aGUgZGlyZWN0b3J5CisgIGlzIGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0LnRlc3RfaWRsZSBhbmQgdG9vbCBmb3IgbWFpbnRhaW5lcnMuCisKKy0gSXNzdWUgIzI3MTk2OiBTdG9wICdUaGVtZUNoYW5nZWQnIHdhcm5pbmdzIHdoZW4gcnVubmluZyBJRExFIHRlc3RzLgorICBUaGVzZSBwZXJzaXN0ZWQgYWZ0ZXIgb3RoZXIgd2FybmluZ3Mgd2VyZSBzdXBwcmVzc2VkIGluICMyMDU2Ny4KKyAgQXBwbHkgU2VyaGl5IFN0b3JjaGFrYSdzIHVwZGF0ZV9pZGxldGFza3Mgc29sdXRpb24gdG8gZm91ciB0ZXN0IGZpbGVzLgorICBSZWNvcmQgdGhpcyBhZGRpdGlvbmFsIGFkdmljZSBpbiBpZGxlX3Rlc3QvUkVBRE1FLnR4dAorCistIElzc3VlICMyMDU2NzogUmV2aXNlIGlkbGVfdGVzdC9SRUFETUUudHh0IHdpdGggYWR2aWNlIGFib3V0IGF2b2lkaW5nCisgIHRrIHdhcm5pbmcgbWVzc2FnZXMgZnJvbSB0ZXN0cy4gIEFwcGx5IGFkdmljZSB0byBzZXZlcmFsIElETEUgdGVzdHMuCisKKy0gSXNzdWUgIzI0MjI1OiBVcGRhdGUgaWRsZWxpYi9SRUFETUUudHh0IHdpdGggbmV3IGZpbGUgbmFtZXMKKyAgYW5kIGV2ZW50IGhhbmRsZXJzLgorCistIElzc3VlICMyNzE1NjogUmVtb3ZlIG9ic29sZXRlIGNvZGUgbm90IHVzZWQgYnkgSURMRS4gIFJlcGxhY2VtZW50czoKKyAgMS4gaGVscC50eHQsIHJlcGxhY2VkIGJ5IGhlbHAuaHRtbCwgaXMgb3V0LW9mLWRhdGUgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4KKyAgSXRzIGRlZGljYXRlZCB2aWV3ZXIgaGFzIGJlIHJlcGxhY2VkIGJ5IHRoZSBodG1sIHZpZXdlciBpbiBoZWxwLnB5LgorICAyLiBgYGltcG9ydCBpZGxldmVyOyBJID0gaWRsZXZlci5JRExFX1ZFUlNJT05gYCBpcyB0aGUgc2FtZSBhcworICBgYGltcG9ydCBzeXM7IEkgPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldYGAKKyAgMy4gQWZ0ZXIgYGBvYiA9IHN0YWNrdmlld2VyLlZhcmlhYmxlc1RyZWVJdGVtKCphcmdzKWBgLAorICBgYG9iLmtleXMoKSA9PSBsaXN0KG9iLm9iamVjdC5rZXlzKWBgLgorICA0LiBJbiBtYWNvc2MsIHJ1bm5pbmdBc09TWEFQUCA9PSBpc0FxdWFUazsgaWRDYXJib25BcXVhVGsgPT0gaXNDYXJib25UaworCistIElzc3VlICMyNzExNzogTWFrZSBjb2xvcml6ZXIgaHRlc3QgYW5kIHR1cnRsZWRlbW8gd29yayB3aXRoIGRhcmsgdGhlbWVzLgorICBNb3ZlIGNvZGUgZm9yIGNvbmZpZ3VyaW5nIHRleHQgd2lkZ2V0IGNvbG9ycyB0byBhIG5ldyBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMjQyMjU6IFJlbmFtZSBtYW55IGBpZGxlbGliLyoucHlgIGFuZCBgaWRsZV90ZXN0L3Rlc3RfKi5weWAgZmlsZXMuCisgIEVkaXQgZmlsZXMgdG8gcmVwbGFjZSBvbGQgbmFtZXMgd2l0aCBuZXcgbmFtZXMgd2hlbiB0aGUgb2xkIG5hbWUKKyAgcmVmZXJyZWQgdG8gdGhlIG1vZHVsZSByYXRoZXIgdGhhbiB0aGUgY2xhc3MgaXQgY29udGFpbmVkLgorICBTZWUgdGhlIGlzc3VlIGFuZCBJRExFIHNlY3Rpb24gaW4gV2hhdCdzIE5ldyBpbiAzLjYgZm9yIG1vcmUuCisKKy0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgorICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgorCistIElzc3VlICMyMTkzOTogQWRkIHRlc3QgZm9yIElETEUncyBwZXJjb2xhdG9yLgorICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy0gSXNzdWUgIzIxNjc2OiBBZGQgdGVzdCBmb3IgSURMRSdzIHJlcGxhY2UgZGlhbG9nLgorICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy0gSXNzdWUgIzE4NDEwOiBBZGQgdGVzdCBmb3IgSURMRSdzIHNlYXJjaCBkaWFsb2cuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFdlc3RsZXkgTWFydMOtbmV6LgorCistIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIHVuZG8gZGVsZWdhdG9yLiAgUGF0Y2ggbW9zdGx5IGJ5CisgIFNhaW1hZGhhdiBIZWJsaWthciAuCisKKy0gSXNzdWUgIzI3MDQ0OiBBZGQgQ29uZmlnRGlhbG9nLnJlbW92ZV92YXJfY2FsbGJhY2tzIHRvIHN0b3AgbWVtb3J5IGxlYWtzLgorCistIElzc3VlICMyMzk3NzogQWRkIG1vcmUgYXNzZXJ0cyB0byB0ZXN0X2RlbGVnYXRvci4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNjQ4NDogQ2hhbmdlIHRoZSBkZWZhdWx0IFBZVEhPTkRPQ1MgVVJMIHRvICJodHRwczoiLCBhbmQgZml4IHRoZQorICByZXN1bHRpbmcgbGlua3MgdG8gdXNlIGxvd2VyY2FzZS4gIFBhdGNoIGJ5IFNlYW4gUm9kbWFuLCB0ZXN0IGJ5IEthdXNoaWsKKyAgTmFkaWt1ZGl0aS4KKworLSBJc3N1ZSAjMjQxMzY6IERvY3VtZW50IHRoZSBuZXcgUEVQIDQ0OCB1bnBhY2tpbmcgc3ludGF4IG9mIDMuNS4KKworLSBJc3N1ZSAjMjI1NTg6IEFkZCByZW1haW5pbmcgZG9jIGxpbmtzIHRvIHNvdXJjZSBjb2RlIGZvciBQeXRob24tY29kZWQgbW9kdWxlcy4KKyAgUGF0Y2ggYnkgWW9uaSBMYXZpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjUyODU6IHJlZ3J0ZXN0IG5vdyB1c2VzIHN1YnByb2Nlc3NlcyB3aGVuIHRoZSAtajEgY29tbWFuZCBsaW5lIG9wdGlvbgorICBpcyB1c2VkOiBlYWNoIHRlc3QgZmlsZSBydW5zIGluIGEgZnJlc2ggY2hpbGQgcHJvY2Vzcy4gQmVmb3JlLCB0aGUgLWoxIG9wdGlvbgorICB3YXMgaWdub3JlZC4KKworLSBJc3N1ZSAjMjUyODU6IFRvb2xzL2J1aWxkYm90L3Rlc3QuYmF0IHNjcmlwdCBub3cgdXNlcyAtajEgYnkgZGVmYXVsdCB0byBydW4KKyAgZWFjaCB0ZXN0IGZpbGUgaW4gZnJlc2ggY2hpbGQgcHJvY2Vzcy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyNzA2NDogVGhlIHB5LmV4ZSBsYXVuY2hlciBub3cgZGVmYXVsdHMgdG8gUHl0aG9uIDMuCisgIFRoZSBXaW5kb3dzIGxhdW5jaGVyIGBgcHkuZXhlYGAgbm8gbG9uZ2VyIHByZWZlcnMgYW4gaW5zdGFsbGVkCisgIFB5dGhvbiAyIHZlcnNpb24gb3ZlciBQeXRob24gMyBieSBkZWZhdWx0IHdoZW4gdXNlZCBpbnRlcmFjdGl2ZWx5LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjcyMjk6IEZpeCB0aGUgY3Jvc3MtY29tcGlsaW5nIHBnZW4gcnVsZSBmb3IgaW4tdHJlZSBidWlsZHMuICBQYXRjaAorICBieSBYYXZpZXIgZGUgR2F5ZS4KKworLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBPUyBYIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlciB0byBidWlsZAorICBhbmQgbGluayB3aXRoIE9wZW5TU0wgMS4wLjJoLgorCitNaXNjCistLS0tCisKKy0gSXNzdWUgIzE3NTAwLCBhbmQgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9weXRob25kb3RvcmcvaXNzdWVzLzk0NTogUmVtb3ZlCisgIHVudXNlZCBhbmQgb3V0ZGF0ZWQgaWNvbnMuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyNzE4NjogQWRkIHRoZSBQeU9TX0ZTUGF0aCgpIGZ1bmN0aW9uIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIElzc3VlICMyNjI4MjogUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKCkgbm93IHN1cHBvcnRzIHBvc2l0aW9uYWwtb25seQorICBwYXJhbWV0ZXJzLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjYyODI6IEFyZ3VtZW50IENsaW5pYyBub3cgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5IGFuZCBrZXl3b3JkCisgIHBhcmFtZXRlcnMgaW4gdGhlIHNhbWUgZnVuY3Rpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNi0wNS0xNgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKwogLSBJc3N1ZSAjMjAwNDE6IEZpeGVkIFR5cGVFcnJvciB3aGVuIGZyYW1lLmZfdHJhY2UgaXMgc2V0IHRvIE5vbmUuCiAgIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCkBAIC01MjMsMTEgKzE0NjksMTcgQEAKIAogLSBJc3N1ZSAjMjY5OTE6IEZpeCBwb3NzaWJsZSByZWZsZWFrIHdoZW4gY3JlYXRpbmcgYSBmdW5jdGlvbiB3aXRoIGFubm90YXRpb25zLgogCi0tIElzc3VlICMyNzAzOTogRml4ZWQgYnl0ZWFycmF5LnJlbW92ZSgpIGZvciB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNy4gIFBhdGNoIGJ5Ci0gIEpvZSBKZXZuaWsuCistIElzc3VlICMyNzAzOTogRml4ZWQgYnl0ZWFycmF5LnJlbW92ZSgpIGZvciB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNy4gIEJhc2VkIG9uCisgIHBhdGNoIGJ5IEpvZSBKZXZuaWsuCiAKIC0gSXNzdWUgIzIzNjQwOiBpbnQuZnJvbV9ieXRlcygpIG5vIGxvbmdlciBieXBhc3NlcyBjb25zdHJ1Y3RvcnMgZm9yIHN1YmNsYXNzZXMuCiAKKy0gSXNzdWUgIzI3MDA1OiBPcHRpbWl6ZWQgdGhlIGZsb2F0LmZyb21oZXgoKSBjbGFzcyBtZXRob2QgZm9yIGV4YWN0IGZsb2F0LgorICBJdCBpcyBub3cgMiB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzE4NTMxOiBTaW5nbGUgdmFyLWtleXdvcmQgYXJndW1lbnQgb2YgZGljdCBzdWJ0eXBlIHdhcyBwYXNzZWQKKyAgdW5zY2F0aGVkIHRvIHRoZSBDLWRlZmluZWQgZnVuY3Rpb24uICBOb3cgaXQgaXMgY29udmVydGVkIHRvIGV4YWN0IGRpY3QuCisKIC0gSXNzdWUgIzI2ODExOiBnYy5nZXRfb2JqZWN0cygpIG5vIGxvbmdlciBjb250YWlucyBhIGJyb2tlbiB0dXBsZSB3aXRoIE5VTEwKICAgcG9pbnRlci4KIApAQCAtNTM3LDExICsxNDg5LDI2IEBACiAgIGludGVycG9sYXRpb24gaW4gLnB5cGlyYyBmaWxlcywgbWF0Y2hpbmcgYmVoYXZpb3IgaW4gUHl0aG9uCiAgIDIuNyBhbmQgU2V0dXB0b29scyAxOS4wLgogCistIElzc3VlICMyNjI0OTogTWVtb3J5IGZ1bmN0aW9ucyBvZiB0aGUgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCBkb21haW4KKyAgKDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gKSBub3cgdXNlIHRoZSA6cmVmOmBweW1hbGxvYyBhbGxvY2F0b3IgPHB5bWFsbG9jPmAKKyAgcmF0aGVyIHRoYW4gc3lzdGVtIDpjOmZ1bmM6YG1hbGxvY2AuIEFwcGxpY2F0aW9ucyBjYWxsaW5nCisgIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2Agd2l0aG91dCBob2xkaW5nIHRoZSBHSUwgY2FuIG5vdyBjcmFzaDogdXNlCisgIGBgUFlUSE9OTUFMTE9DPWRlYnVnYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdmFsaWRhdGUgdGhlIHVzYWdlIG9mIG1lbW9yeQorICBhbGxvY2F0b3JzIGluIHlvdXIgYXBwbGljYXRpb24uCisKKy0gSXNzdWUgIzI2ODAyOiBPcHRpbWl6ZSBmdW5jdGlvbiBjYWxscyBvbmx5IHVzaW5nIHVucGFja2luZyBsaWtlCisgIGBgZnVuYygqdHVwbGUpYGAgKG5vIG90aGVyIHBvc2l0aW9uYWwgYXJndW1lbnQsIG5vIGtleXdvcmQpOiBhdm9pZCBjb3B5aW5nCisgIHRoZSB0dXBsZS4gUGF0Y2ggd3JpdHRlbiBieSBKb2UgSmV2bmlrLgorCiAtIElzc3VlICMyNjY1OTogTWFrZSB0aGUgYnVpbHRpbiBzbGljZSB0eXBlIHN1cHBvcnQgY3ljbGUgY29sbGVjdGlvbi4KIAogLSBJc3N1ZSAjMjY3MTg6IHN1cGVyLl9faW5pdF9fIG5vIGxvbmdlciBsZWFrcyBtZW1vcnkgaWYgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgogICBOT1RFOiBBIGRpcmVjdCBjYWxsIG9mIHN1cGVyLl9faW5pdF9fIGlzIG5vdCBlbmRvcnNlZCEKIAorLSBJc3N1ZSAjMjcxMzg6IEZpeCB0aGUgZG9jIGNvbW1lbnQgZm9yIEZpbGVGaW5kZXIuZmluZF9zcGVjKCkuCisKKy0gSXNzdWUgIzI3MTQ3OiBNZW50aW9uIFBFUCA0MjAgaW4gdGhlIGltcG9ydGxpYiBkb2NzLgorCiAtIElzc3VlICMyNTMzOTogUFlUSE9OSU9FTkNPRElORyBub3cgaGFzIHByaW9yaXR5IG92ZXIgbG9jYWxlIGluIHNldHRpbmcgdGhlCiAgIGVycm9yIGhhbmRsZXIgZm9yIHN0ZGluIGFuZCBzdGRvdXQuCiAKQEAgLTU1MCw5ICsxNTE3LDQxIEBACiAgIGJ5dGVhcnJheSwgbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBPcmRlcmVkRGljdCwgY29ycmVzcG9uZGluZwogICB2aWV3cyBhbmQgb3Muc2NhbmRpcigpIGl0ZXJhdG9yLgogCistIElzc3VlICMyNjU3NDogT3B0aW1pemUgYGBieXRlcy5yZXBsYWNlKGInJywgYicuJylgYCBhbmQKKyAgYGBieXRlYXJyYXkucmVwbGFjZShiJycsIGInLicpYGAuIFBhdGNoIHdyaXR0ZW4gYnkgSm9zaCBTbmlkZXIuCisKIC0gSXNzdWUgIzI2NTgxOiBJZiBjb2RpbmcgY29va2llIGlzIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcyBvbiBhIGxpbmUgaW4KICAgUHl0aG9uIHNvdXJjZSBjb2RlIGZpbGUsIG9ubHkgdGhlIGZpcnN0IG9uZSBpcyB0YWtlbiB0byBhY2NvdW50LgogCistIElzc3VlICMxOTcxMTogQWRkIHRlc3RzIGZvciByZWxvYWRpbmcgbmFtZXNwYWNlIHBhY2thZ2VzLgorCistIElzc3VlICMyMTA5OTogU3dpdGNoIGFwcGxpY2FibGUgaW1wb3J0bGliIHRlc3RzIHRvIHVzZSBQRVAgNDUxIEFQSS4KKworLSBJc3N1ZSAjMjY1NjM6IERlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBub3cgcmFpc2UgYSBmYXRhbAorICBlcnJvciBpZiBmdW5jdGlvbnMgb2YgdGhlIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgZmFtaWx5IGFyZSBjYWxsZWQgd2l0aG91dAorICBob2xkaW5nIHRoZSBHSUwuCisKKy0gSXNzdWUgIzI2NTY0OiBPbiBlcnJvciwgdGhlIGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBub3cgdXNlCisgIHRoZSA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcworICBhbGxvY2F0ZWQuCisKKy0gSXNzdWUgIzI2NTU4OiBUaGUgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IKKyAgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCBub3cgZGV0ZWN0IHdoZW4gZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aG91dAorICBob2xkaW5nIHRoZSBHSUwuCisKKy0gSXNzdWUgIzI2NTE2OiBBZGQgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBzZXQgdGhlCisgIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rcy4KKworLSBJc3N1ZSAjMjY1MTY6IFRoZSA6YzpmdW5jOmBQeU1lbV9TZXR1cERlYnVnSG9va3NgIGZ1bmN0aW9uIGNhbiBub3cgYWxzbyBiZQorICB1c2VkIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuCisKKy0gSXNzdWUgIzI2NTE2OiBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DU1RBVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBub3cKKyAgYWxzbyBiZSB1c2VkIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuIEl0IG5vdyBoYXMgbm8gZWZmZWN0IGlmCisgIHNldCB0byBhbiBlbXB0eSBzdHJpbmcuCisKKy0gSXNzdWUgIzI2NTE2OiBJbiBkZWJ1ZyBtb2RlLCBkZWJ1ZyBob29rcyBhcmUgbm93IGFsc28gaW5zdGFsbGVkIG9uIFB5dGhvbgorICBtZW1vcnkgYWxsb2NhdG9ycyB3aGVuIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGhvdXQgcHltYWxsb2MuCisKIC0gSXNzdWUgIzI2NDY0OiBGaXggc3RyLnRyYW5zbGF0ZSgpIHdoZW4gc3RyaW5nIGlzIEFTQ0lJIGFuZCBmaXJzdCByZXBsYWNlbWVudHMKICAgcmVtb3ZlcyBjaGFyYWN0ZXIsIGJ1dCBuZXh0IHJlcGxhY2VtZW50IHVzZXMgYSBub24tQVNDSUkgY2hhcmFjdGVyIG9yIGEKICAgc3RyaW5nIGxvbmdlciB0aGFuIDEgY2hhcmFjdGVyLiBSZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuNS4wLgpAQCAtNTY1LDExICsxNTY0LDM3IEBACiAtIElzc3VlICMyNjMwMjogQ29ycmVjdCBiZWhhdmlvciB0byByZWplY3QgY29tbWEgYXMgYSBsZWdhbCBjaGFyYWN0ZXIgZm9yCiAgIGNvb2tpZSBuYW1lcy4KIAorLSBJc3N1ZSAjMjYxMzY6IFVwZ3JhZGUgdGhlIHdhcm5pbmcgd2hlbiBhIGdlbmVyYXRvciByYWlzZXMgU3RvcEl0ZXJhdGlvbgorICBmcm9tIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgdG8gRGVwcmVjYXRpb25XYXJuaW5nLiAgUGF0Y2ggYnkgQW5pc2gKKyAgU2hhaC4KKworLSBJc3N1ZSAjMjYyMDQ6IFRoZSBjb21waWxlciBub3cgaWdub3JlcyBhbGwgY29uc3RhbnQgc3RhdGVtZW50czogYnl0ZXMsIHN0ciwKKyAgaW50LCBmbG9hdCwgY29tcGxleCwgbmFtZSBjb25zdGFudHMgKE5vbmUsIEZhbHNlLCBUcnVlKSwgRWxsaXBzaXMKKyAgYW5kIGFzdC5Db25zdGFudDsgbm90IG9ubHkgc3RyIGFuZCBpbnQuIEZvciBleGFtcGxlLCBgYDEuMGBgIGlzIG5vdyBpZ25vcmVkCisgIGluIGBgZGVmIGYoKTogMS4wYGAuCisKIC0gSXNzdWUgIzQ4MDY6IEF2b2lkIG1hc2tpbmcgdGhlIG9yaWdpbmFsIFR5cGVFcnJvciBleGNlcHRpb24gd2hlbiB1c2luZyBzdGFyCiAgICgqKSB1bnBhY2tpbmcgaW4gZnVuY3Rpb24gY2FsbHMuICBCYXNlZCBvbiBwYXRjaCBieSBIYWdlbiBGw7xyc3RlbmF1IGFuZAogICBEYW5pZWwgVXJiYW4uCiAKLS0gSXNzdWUgIzI3MTM4OiBGaXggdGhlIGRvYyBjb21tZW50IGZvciBGaWxlRmluZGVyLmZpbmRfc3BlYygpLgorLSBJc3N1ZSAjMjYxNDY6IEFkZCBhIG5ldyBraW5kIG9mIEFTVCBub2RlOiBgYGFzdC5Db25zdGFudGBgLiBJdCBjYW4gYmUgdXNlZAorICBieSBleHRlcm5hbCBBU1Qgb3B0aW1pemVycywgYnV0IHRoZSBjb21waWxlciBkb2VzIG5vdCBlbWl0IGRpcmVjdGx5IHN1Y2gKKyAgbm9kZS4KKworLSBJc3N1ZSAjMjM2MDE6ICBTcGVkLXVwIGFsbG9jYXRpb24gb2YgZGljdCBrZXkgb2JqZWN0cyBieSB1c2luZyBQeXRob24ncworICBzbWFsbCBvYmplY3QgYWxsb2NhdG9yLiAgKENvbnRyaWJ1dGVkIGJ5IEp1bGlhbiBUYXlsb3IuKQorCistIElzc3VlICMxODAxODogSW1wb3J0IHJhaXNlcyBJbXBvcnRFcnJvciBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yIGlmIGEgcmVsYXRpdmUKKyAgaW1wb3J0IGlzIGF0dGVtcHRlZCB3aXRob3V0IGEga25vd24gcGFyZW50IHBhY2thZ2UuCisKKy0gSXNzdWUgIzI1ODQzOiBXaGVuIGNvbXBpbGluZyBjb2RlLCBkb24ndCBtZXJnZSBjb25zdGFudHMgaWYgdGhleSBhcmUgZXF1YWwKKyAgYnV0IGhhdmUgYSBkaWZmZXJlbnQgdHlwZXMuIEZvciBleGFtcGxlLCBgYGYxLCBmMiA9IGxhbWJkYTogMSwgbGFtYmRhOiAxLjBgYAorICBpcyBub3cgY29ycmVjdGx5IGNvbXBpbGVkIHRvIHR3byBkaWZmZXJlbnQgZnVuY3Rpb25zOiBgYGYxKClgYCByZXR1cm5zIGBgMWBgCisgIChgYGludGBgKSBhbmQgYGBmMigpYGAgcmV0dXJucyBgYDEuMGBgIChgYGZsb2F0YGApLCBldmVuIGlmIGBgMWBgIGFuZCBgYDEuMGBgCisgIGFyZSBlcXVhbC4KKworLSBJc3N1ZSAjMjYxMDc6IFRoZSBmb3JtYXQgb2YgdGhlIGBgY29fbG5vdGFiYGAgYXR0cmlidXRlIG9mIGNvZGUgb2JqZWN0cworICBjaGFuZ2VzIHRvIHN1cHBvcnQgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuCiAKIC0gSXNzdWUgIzI2MTU0OiBBZGQgYSBuZXcgcHJpdmF0ZSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKSBmdW5jdGlvbiB0byBnZXQKICAgdGhlIGN1cnJlbnQgUHl0aG9uIHRocmVhZCBzdGF0ZSwgYnV0IGRvbid0IGlzc3VlIGEgZmF0YWwgZXJyb3IgaWYgaXQgaXMgTlVMTC4KQEAgLTU3OCwxNSArMTYwMyw4IEBACiAgIFB5dGhvbiAzLjUuMSB0byBoaWRlIHRoZSBleGFjdCBpbXBsZW1lbnRhdGlvbiBvZiBhdG9taWMgQyB0eXBlcywgdG8gYXZvaWQKICAgY29tcGlsZXIgaXNzdWVzLgogCi0tIElzc3VlICMyNjE5NDogIERlcXVlLmluc2VydCgpIGdhdmUgb2RkIHJlc3VsdHMgZm9yIGJvdW5kZWQgZGVxdWVzIHRoYXQgaGFkCi0gIHJlYWNoZWQgdGhlaXIgbWF4aW11bSBzaXplLiAgTm93IGFuIEluZGV4RXJyb3Igd2lsbCBiZSByYWlzZWQgd2hlbiBhdHRlbXB0aW5nCi0gIHRvIGluc2VydCBpbnRvIGEgZnVsbCBkZXF1ZS4KLQotLSBJc3N1ZSAjMjU4NDM6IFdoZW4gY29tcGlsaW5nIGNvZGUsIGRvbid0IG1lcmdlIGNvbnN0YW50cyBpZiB0aGV5IGFyZSBlcXVhbAotICBidXQgaGF2ZSBhIGRpZmZlcmVudCB0eXBlcy4gRm9yIGV4YW1wbGUsIGBgZjEsIGYyID0gbGFtYmRhOiAxLCBsYW1iZGE6IDEuMGBgCi0gIGlzIG5vdyBjb3JyZWN0bHkgY29tcGlsZWQgdG8gdHdvIGRpZmZlcmVudCBmdW5jdGlvbnM6IGBgZjEoKWBgIHJldHVybnMgYGAxYGAKLSAgKGBgaW50YGApIGFuZCBgYGYyKClgYCByZXR1cm5zIGBgMS4wYGAgKGBgaW50YGApLCBldmVuIGlmIGBgMWBgIGFuZCBgYDEuMGBgCi0gIGFyZSBlcXVhbC4KKy0gSXNzdWUgIzI1NzkxOiBJZiBfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQgb3IgaWYgbmVpdGhlciBfX3BhY2thZ2VfXyBvcgorICBfX3NwZWNfXyBhcmUgZGVmaW5lZCB0aGVuIEltcG9ydFdhcm5pbmcgaXMgcmFpc2VkLgogCiAtIElzc3VlICMyMjk5NTogW1VQREFURV0gQ29tbWVudCBvdXQgdGhlIG9uZSBvZiB0aGUgcGlja2xlYWJpbGl0eSB0ZXN0cyBpbgogICBfUHlPYmplY3RfR2V0U3RhdGUoKSBkdWUgdG8gcmVncmVzc2lvbnMgb2JzZXJ2ZWQgaW4gQ3l0aG9uLWJhc2VkIHByb2plY3RzLgpAQCAtNjEzLDcgKzE2MzEsMTAgQEAKIC0gSXNzdWUgIzI1NzA5OiBGaXhlZCBwcm9ibGVtIHdpdGggaW4tcGxhY2Ugc3RyaW5nIGNvbmNhdGVuYXRpb24gYW5kIHV0Zi04CiAgIGNhY2hlLgogCi0tIElzc3VlICMyNzE0NzogTWVudGlvbiBQRVAgNDIwIGluIHRoZSBpbXBvcnRsaWIgZG9jcy4KKy0gSXNzdWUgIzUzMTk6IE5ldyBQeV9GaW5hbGl6ZUV4KCkgQVBJIGFsbG93aW5nIFB5dGhvbiB0byBzZXQgYW4gZXhpdCBzdGF0dXMKKyAgb2YgMTIwIG9uIGZhaWx1cmUgdG8gZmx1c2ggYnVmZmVyZWQgc3RyZWFtcy4KKworLSBJc3N1ZSAjMjU0ODU6IHRlbG5ldGxpYi5UZWxuZXQgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyLgogCiAtIElzc3VlICMyNDA5NzogRml4ZWQgY3Jhc2ggaW4gb2JqZWN0Ll9fcmVkdWNlX18oKSBpZiBzbG90IG5hbWUgaXMgZnJlZWQgaW5zaWRlCiAgIF9fZ2V0YXR0cl9fLgpAQCAtNjIyLDYgKzE2NDMsODggQEAKICAgX19ieXRlc19fLCBfX3RydW5jX18sIGFuZCBfX2Zsb2F0X18gcmV0dXJuaW5nIGluc3RhbmNlcyBvZiBzdWJjbGFzc2VzIG9mCiAgIGJ5dGVzLCBpbnQsIGFuZCBmbG9hdCB0byBzdWJjbGFzc2VzIG9mIGJ5dGVzLCBpbnQsIGFuZCBmbG9hdCBjb3JyZXNwb25kaW5nbHkuCiAKKy0gSXNzdWUgIzI1NjMwOiBGaXggYSBwb3NzaWJsZSBzZWdmYXVsdCBkdXJpbmcgYXJndW1lbnQgcGFyc2luZyBpbiBmdW5jdGlvbnMKKyAgdGhhdCBhY2NlcHQgZmlsZXN5c3RlbSBwYXRocy4KKworLSBJc3N1ZSAjMjM1NjQ6IEZpeGVkIGEgcGFydGlhbGx5IGJyb2tlbiBzYW5pdHkgY2hlY2sgaW4gdGhlIF9wb3NpeHN1YnByb2Nlc3MKKyAgaW50ZXJuYWxzIHJlZ2FyZGluZyBob3cgZmRzX3RvX3Bhc3Mgd2VyZSBwYXNzZWQgdG8gdGhlIGNoaWxkLiAgVGhlIGJ1ZyBoYWQKKyAgbm8gYWN0dWFsIGltcGFjdCBhcyBzdWJwcm9jZXNzLnB5IGFscmVhZHkgYXZvaWRlZCBpdC4KKworLSBJc3N1ZSAjMjUzODg6IEZpeGVkIHRva2VuaXplciBjcmFzaCB3aGVuIHByb2Nlc3NpbmcgdW5kZWNvZGFibGUgc291cmNlIGNvZGUKKyAgd2l0aCBhIG51bGwgYnl0ZS4KKworLSBJc3N1ZSAjMjU0NjI6IFRoZSBoYXNoIG9mIHRoZSBrZXkgbm93IGlzIGNhbGN1bGF0ZWQgb25seSBvbmNlIGluIG1vc3QKKyAgb3BlcmF0aW9ucyBpbiBDIGltcGxlbWVudGF0aW9uIG9mIE9yZGVyZWREaWN0LgorCistIElzc3VlICMyMjk5NTogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBfX3JlZHVjZV9fIGFuZCBfX3JlZHVjZV9leF9fIG5vdworICByZWplY3RzIGJ1aWx0aW4gdHlwZXMgd2l0aCBub3QgZGVmaW5lZCBfX25ld19fLgorCistIElzc3VlICMyNDgwMjogQXZvaWQgYnVmZmVyIG92ZXJyZWFkcyB3aGVuIGludCgpLCBmbG9hdCgpLCBjb21waWxlKCksIGV4ZWMoKQorICBhbmQgZXZhbCgpIGFyZSBwYXNzZWQgYnl0ZXMtbGlrZSBvYmplY3RzLiAgVGhlc2Ugb2JqZWN0cyBhcmUgbm90CisgIG5lY2Vzc2FyaWx5IHRlcm1pbmF0ZWQgYnkgYSBudWxsIGJ5dGUsIGJ1dCB0aGUgZnVuY3Rpb25zIGFzc3VtZWQgdGhleSB3ZXJlLgorCistIElzc3VlICMyNTU1NTogRml4IHBhcnNlciBhbmQgQVNUOiBmaWxsIGxpbmVubyBhbmQgY29sX29mZnNldCBvZiAiYXJnIiBub2RlCisgIHdoZW4gY29tcGlsaW5nIEFTVCBmcm9tIFB5dGhvbiBvYmplY3RzLgorCistIElzc3VlICMyNDcyNjogRml4ZWQgYSBjcmFzaCBhbmQgbGVha2luZyBOVUxMIGluIHJlcHIoKSBvZiBPcmRlcmVkRGljdCB0aGF0CisgIHdhcyBtdXRhdGVkIGJ5IGRpcmVjdCBjYWxscyBvZiBkaWN0IG1ldGhvZHMuCisKKy0gSXNzdWUgIzI1NDQ5OiBJdGVyYXRpbmcgT3JkZXJlZERpY3Qgd2l0aCBrZXlzIHdpdGggdW5zdGFibGUgaGFzaCBub3cgcmFpc2VzCisgIEtleUVycm9yIGluIEMgaW1wbGVtZW50YXRpb25zIGFzIHdlbGwgYXMgaW4gUHl0aG9uIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMyNTM5NTogRml4ZWQgY3Jhc2ggd2hlbiBoaWdobHkgbmVzdGVkIE9yZGVyZWREaWN0IHN0cnVjdHVyZXMgd2VyZQorICBnYXJiYWdlIGNvbGxlY3RlZC4KKworLSBJc3N1ZSAjMjU0MDE6IE9wdGltaXplIGJ5dGVzLmZyb21oZXgoKSBhbmQgYnl0ZWFycmF5LmZyb21oZXgoKTogdGhleSBhcmUgbm93CisgIGJldHdlZW4gMnggYW5kIDMuNXggZmFzdGVyLgorCistIElzc3VlICMyNTM5OTogT3B0aW1pemUgYnl0ZWFycmF5ICUgYXJncyB1c2luZyB0aGUgbmV3IHByaXZhdGUgX1B5Qnl0ZXNXcml0ZXIKKyAgQVBJLiBGb3JtYXR0aW5nIGlzIG5vdyBiZXR3ZWVuIDIuNSBhbmQgNSB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1Mjc0OiBzeXMuc2V0cmVjdXJzaW9ubGltaXQoKSBub3cgcmFpc2VzIGEgUmVjdXJzaW9uRXJyb3IgaWYgdGhlIG5ldworICByZWN1cnNpb24gbGltaXQgaXMgdG9vIGxvdyBkZXBlbmRpbmcgYXQgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoLiBNb2RpZnkKKyAgYWxzbyB0aGUgImxvd2VyLXdhdGVyIG1hcmsiIGZvcm11bGEgdG8gbWFrZSBpdCBtb25vdG9uaWMuIFRoaXMgbWFyayBpcyB1c2VkCisgIHRvIGRlY2lkZSB3aGVuIHRoZSBvdmVyZmxvd2VkIGZsYWcgb2YgdGhlIHRocmVhZCBzdGF0ZSBpcyByZXNldC4KKworLSBJc3N1ZSAjMjQ0MDI6IEZpeCBpbnB1dCgpIHRvIHByb21wdCB0byB0aGUgcmVkaXJlY3RlZCBzdGRvdXQgd2hlbgorICBzeXMuc3Rkb3V0LmZpbGVubygpIGZhaWxzLgorCistIElzc3VlICMyNTM0OTogT3B0aW1pemUgYnl0ZXMgJSBhcmdzIHVzaW5nIHRoZSBuZXcgcHJpdmF0ZSBfUHlCeXRlc1dyaXRlciBBUEkuCisgIEZvcm1hdHRpbmcgaXMgbm93IHVwIHRvIDIgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNDgwNjogUHJldmVudCBidWlsdGluIHR5cGVzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHN1YmNsYXNzZWQgZnJvbQorICBiZWluZyBzdWJjbGFzc2VkIHRocm91Z2ggbXVsdGlwbGUgaW5oZXJpdGFuY2UuCisKKy0gSXNzdWUgIzI1MzAxOiBUaGUgVVRGLTggZGVjb2RlciBpcyBub3cgdXAgdG8gMTUgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IKKyAgaGFuZGxlcnM6IGBgaWdub3JlYGAsIGBgcmVwbGFjZWBgIGFuZCBgYHN1cnJvZ2F0ZWVzY2FwZWBgLgorCistIElzc3VlICMyNDg0ODogRml4ZWQgYSBudW1iZXIgb2YgYnVncyBpbiBVVEYtNyBkZWNvZGluZyBvZiBtaXNmb3JtZWQgZGF0YS4KKworLSBJc3N1ZSAjMjUyNjc6IFRoZSBVVEYtOCBlbmNvZGVyIGlzIG5vdyB1cCB0byA3NSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvcgorICBoYW5kbGVyczogYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAsIGBgc3Vycm9nYXRlZXNjYXBlYGAsIGBgc3Vycm9nYXRlcGFzc2BgLgorICBQYXRjaCBjby13cml0dGVuIHdpdGggU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjUyODA6IEltcG9ydCB0cmFjZSBtZXNzYWdlcyBlbWl0dGVkIGluIHZlcmJvc2UgKC12KSBtb2RlIGFyZSBubworICBsb25nZXIgZm9ybWF0dGVkIHR3aWNlLgorCistIElzc3VlICMyNTIyNzogT3B0aW1pemUgQVNDSUkgYW5kIGxhdGluMSBlbmNvZGVycyB3aXRoIHRoZSBgYHN1cnJvZ2F0ZWVzY2FwZWBgCisgIGVycm9yIGhhbmRsZXI6IHRoZSBlbmNvZGVycyBhcmUgbm93IHVwIHRvIDMgdGltZXMgYXMgZmFzdC4gSW5pdGlhbCBwYXRjaAorICB3cml0dGVuIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI1MDAzOiBPbiBTb2xhcmlzIDExLjMgb3IgbmV3ZXIsIG9zLnVyYW5kb20oKSBub3cgdXNlcyB0aGUKKyAgZ2V0cmFuZG9tKCkgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uLiBUaGUgZ2V0ZW50cm9weSgpCisgIGZ1bmN0aW9uIGlzIGJsb2NraW5nIHRvIGdlbmVyYXRlIHZlcnkgZ29vZCBxdWFsaXR5IGVudHJvcHksIG9zLnVyYW5kb20oKQorICBkb2Vzbid0IG5lZWQgc3VjaCBoaWdoLXF1YWxpdHkgZW50cm9weS4KKworLSBJc3N1ZSAjOTIzMjogTW9kaWZ5IFB5dGhvbidzIGdyYW1tYXIgdG8gYWxsb3cgdHJhaWxpbmcgY29tbWFzIGluIHRoZQorICBhcmd1bWVudCBsaXN0IG9mIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uICBGb3IgZXhhbXBsZSwgImRlZiBmKFwqLCBhID0KKyAgMywpOiBwYXNzIiBpcyBub3cgbGVnYWwuIFBhdGNoIGZyb20gTWFyayBEaWNraW5zb24uCisKKy0gSXNzdWUgIzI0OTY1OiBJbXBsZW1lbnQgUEVQIDQ5OCAiTGl0ZXJhbCBTdHJpbmcgSW50ZXJwb2xhdGlvbiIuIFRoaXMKKyAgYWxsb3dzIHlvdSB0byBlbWJlZCBleHByZXNzaW9ucyBpbnNpZGUgZi1zdHJpbmdzLCB3aGljaCBhcmUKKyAgY29udmVydGVkIHRvIG5vcm1hbCBzdHJpbmdzIGF0IHJ1biB0aW1lLiBHaXZlbiB4PTMsIHRoZW4KKyAgZid2YWx1ZT17eH0nID09ICd2YWx1ZT0zJy4gUGF0Y2ggYnkgRXJpYyBWLiBTbWl0aC4KKwogLSBJc3N1ZSAjMjY0Nzg6IEZpeCBzZW1hbnRpYyBidWdzIHdoZW4gdXNpbmcgYmluYXJ5IG9wZXJhdG9ycyB3aXRoIGRpY3Rpb25hcnkKICAgdmlld3MgYW5kIHR1cGxlcy4KIApAQCAtNjMwLDc5ICsxNzMzLDI3IEBACiAKIC0gSXNzdWUgIzI1NjYwOiBGaXggVEFCIGtleSBiZWhhdmlvdXIgaW4gUkVQTCB3aXRoIHJlYWRsaW5lLgogCistIElzc3VlICMyNjI4ODogT3B0aW1pemUgUHlMb25nX0FzRG91YmxlLgorCistIElzc3VlcyAjMjYyODkgYW5kICMyNjMxNTogT3B0aW1pemUgZmxvb3IgYW5kIG1vZHVsbyBkaXZpc2lvbiBmb3IKKyAgc2luZ2xlLWRpZ2l0IGxvbmdzLiAgTWljcm9iZW5jaG1hcmtzIHNob3cgMi0yLjV4IGltcHJvdmVtZW50LiAgQnVpbHQtaW4KKyAgJ2Rpdm1vZCcgZnVuY3Rpb24gaXMgbm93IGFsc28gfjEwJSBmYXN0ZXIuCisKIC0gSXNzdWUgIzI1ODg3OiBSYWlzZSBhIFJ1bnRpbWVFcnJvciB3aGVuIGEgY29yb3V0aW5lIG9iamVjdCBpcyBhd2FpdGVkCiAgIG1vcmUgdGhhbiBvbmNlLgogCi0tIElzc3VlICMyNzI0MzogVXBkYXRlIHRoZSBfX2FpdGVyX18gcHJvdG9jb2w6IGluc3RlYWQgb2YgcmV0dXJuaW5nCi0gIGFuIGF3YWl0YWJsZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFzeW5jaHJvbm91cyBpdGVyYXRvciwgdGhlIGFzeW5jaHJvbm91cwotICBpdGVyYXRvciBzaG91bGQgYmUgcmV0dXJuZWQgZGlyZWN0bHkuICBEb2luZyB0aGUgZm9ybWVyIHdpbGwgdHJpZ2dlciBhCi0gIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCi0KLQogTGlicmFyeQogLS0tLS0tLQogCi0tIFtTZWN1cml0eV0gSXNzdWUgIzI2NTU2OiBVcGRhdGUgZXhwYXQgdG8gMi4xLjEsIGZpeGVzIENWRS0yMDE1LTEyODMuCi0KLS0gW1NlY3VyaXR5XSBGaXggVExTIHN0cmlwcGluZyB2dWxuZXJhYmlsaXR5IGluIHNtdHBsaWIsIENWRS0yMDE2LTA3NzIuCi0gIFJlcG9ydGVkIGJ5IFRlYW0gT3N0c3Ryb20KLQotLSBJc3N1ZSAjMjEzODY6IEltcGxlbWVudCBtaXNzaW5nIElQdjRBZGRyZXNzLmlzX2dsb2JhbCBwcm9wZXJ0eS4gIEl0IHdhcwotICBkb2N1bWVudGVkIHNpbmNlIDA3YTU2MTBiYWU5ZC4gIEluaXRpYWwgcGF0Y2ggYnkgUm9nZXIgTHVldGhpLgotCi0tIElzc3VlICMyMDkwMDogZGlzdHV0aWxzIHJlZ2lzdGVyIGNvbW1hbmQgbm93IGRlY29kZXMgSFRUUCByZXNwb25zZXMKLSAgY29ycmVjdGx5LiAgSW5pdGlhbCBwYXRjaCBieSBpbmdyaWQuCi0KLS0gQSBuZXcgdmVyc2lvbiBvZiB0eXBpbmcucHkgcHJvdmlkZXMgc2V2ZXJhbCBuZXcgY2xhc3NlcyBhbmQKLSAgZmVhdHVyZXM6IEBvdmVybG9hZCBvdXRzaWRlIHN0dWJzLCBSZXZlcnNpYmxlLCBEZWZhdWx0RGljdCwgVGV4dCwKLSAgQ29udGV4dE1hbmFnZXIsIFR5cGVbXSwgTmV3VHlwZSgpLCBUWVBFX0NIRUNLSU5HLCBhbmQgbnVtZXJvdXMgYnVnCi0gIGZpeGVzIChub3RlIHRoYXQgc29tZSBvZiB0aGUgbmV3IGZlYXR1cmVzIGFyZSBub3QgeWV0IGltcGxlbWVudGVkIGluCi0gIG15cHkgb3Igb3RoZXIgc3RhdGljIGFuYWx5emVycykuICBBbHNvIGNsYXNzZXMgZm9yIFBFUCA0OTIKLSAgKEF3YWl0YWJsZSwgQXN5bmNJdGVyYWJsZSwgQXN5bmNJdGVyYXRvcikgaGF2ZSBiZWVuIGFkZGVkIChpbiBmYWN0Ci0gIHRoZXkgbWFkZSBpdCBpbnRvIDMuNS4xIGJ1dCB3ZXJlIG5ldmVyIG1lbnRpb25lZCkuCi0KLS0gSXNzdWUgIzI1NzM4OiBTdG9wIGh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuc2VuZF9lcnJvcigpIGZyb20KLSAgc2VuZGluZyBhIG1lc3NhZ2UgYm9keSBmb3IgMjA1IFJlc2V0IENvbnRlbnQuICBBbHNvLCBkb24ndCBzZW5kIENvbnRlbnQKLSAgaGVhZGVyIGZpZWxkcyBpbiByZXNwb25zZXMgdGhhdCBkb24ndCBoYXZlIGEgYm9keS4gIFBhdGNoIGJ5IFN1c3VtdQotICBLb3NoaWJhLgotCi0tIElzc3VlICMyMTMxMzogRml4IHRoZSAicGxhdGZvcm0iIG1vZHVsZSB0byB0b2xlcmF0ZSB3aGVuIHN5cy52ZXJzaW9uCi0gIGNvbnRhaW5zIHRydW5jYXRlZCBidWlsZCBpbmZvcm1hdGlvbi4KLQotLSBbU2VjdXJpdHldIElzc3VlICMyNjgzOTogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgY2FsbHMKLSAgYGBnZXRyYW5kb20oKWBgIHdpdGggYGBHUk5EX05PTkJMT0NLYGAgdG8gZmFsbCBiYWNrIG9uIHJlYWRpbmcKLSAgYGAvZGV2L3VyYW5kb21gYCBpZiB0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgbm90IGluaXRpYWxpemVkIHlldC4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDb2xtIEJ1Y2tsZXkuCi0KLS0gSXNzdWUgIzI3MTY0OiBJbiB0aGUgemxpYiBtb2R1bGUsIGFsbG93IGRlY29tcHJlc3NpbmcgcmF3IERlZmxhdGUgc3RyZWFtcwotICB3aXRoIGEgcHJlZGVmaW5lZCB6ZGljdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNDI5MTogRml4IHdzZ2lyZWYuc2ltcGxlX3NlcnZlci5XU0dJUmVxdWVzdEhhbmRsZXIgdG8gY29tcGxldGVseQotICB3cml0ZSBkYXRhIHRvIHRoZSBjbGllbnQuICBQcmV2aW91c2x5IGl0IGNvdWxkIGRvIHBhcnRpYWwgd3JpdGVzIGFuZAotICB0cnVuY2F0ZSBkYXRhLiAgQWxzbywgd3NnaXJlZi5oYW5kbGVyLlNlcnZlckhhbmRsZXIgY2FuIG5vdyBoYW5kbGUgc3Rkb3V0Ci0gIGRvaW5nIHBhcnRpYWwgd3JpdGVzLCBidXQgdGhpcyBpcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICMyNjgwOTogQWRkIGBgX19hbGxfX2BgIHRvIDptb2Q6YHN0cmluZ2AuICBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgotCi0tIElzc3VlICMyNjM3Mzogc3VicHJvY2Vzcy5Qb3Blbi5jb21tdW5pY2F0ZSBub3cgY29ycmVjdGx5IGlnbm9yZXMKLSAgQnJva2VuUGlwZUVycm9yIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgZGllcyBiZWZvcmUgLmNvbW11bmljYXRlKCkKLSAgaXMgY2FsbGVkIGluIG1vcmUvYWxsIGNpcmN1bXN0YW5jZXMuCi0KLS0gSXNzdWUgIzIxNzc2OiBkaXN0dXRpbHMudXBsb2FkIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBIVFRQRXJyb3IuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICMyNzExNDogRml4IFNTTENvbnRleHQuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyB3aXRoCi0gIFBlcm1pc3Npb25FcnJvcgotCi0tIElzc3VlICMxODM4MzogQXZvaWQgY3JlYXRpbmcgZHVwbGljYXRlIGZpbHRlcnMgd2hlbiB1c2luZyBmaWx0ZXJ3YXJuaW5ncwotICBhbmQgc2ltcGxlZmlsdGVyLiAgQmFzZWQgb24gcGF0Y2ggYnkgQWxleCBTaGtvcC4KLQogLSBJc3N1ZSAjMjcwNTc6IEZpeCBvcy5zZXRfaW5oZXJpdGFibGUoKSBvbiBBbmRyb2lkLCBpb2N0bCgpIGlzIGJsb2NrZWQgYnkKICAgU0VMaW51eCBhbmQgZmFpbHMgd2l0aCBFQUNDRVNTLiBUaGUgZnVuY3Rpb24gbm93IGZhbGxzIGJhY2sgdG8gZmNudGwoKS4KICAgUGF0Y2ggd3JpdHRlbiBieSBNaWNoYcWCIEJlZG5hcnNraS4KIAogLSBJc3N1ZSAjMjcwMTQ6IEZpeCBpbmZpbml0ZSByZWN1cnNpb24gdXNpbmcgdHlwaW5nLnB5LiAgVGhhbmtzIHRvIEthbGxlIFR1dXJlIQogCistIElzc3VlICMyNzAzMTogUmVtb3ZlZCBkdW1teSBtZXRob2RzIGluIFRraW50ZXIgd2lkZ2V0IGNsYXNzZXM6IHRrX21lbnVCYXIoKQorICBhbmQgdGtfYmluZEZvclRyYXZlcnNhbCgpLgorCiAtIElzc3VlICMxNDEzMjogRml4IHVybGxpYi5yZXF1ZXN0IHJlZGlyZWN0IGhhbmRsaW5nIHdoZW4gdGhlIHRhcmdldCBvbmx5IGhhcwogICBhIHF1ZXJ5IHN0cmluZy4gIE9yaWdpbmFsIGZpeCBieSBKw6FuIEphbmVjaC4KIApAQCAtNzEyLDYgKzE3NjMsMTggQEAKICAgdG8gYmUgQVNDSUktZW5jb2RhYmxlLCBvdGhlcndpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IgaXMgcmFpc2VkLiAgQmFzZWQgb24KICAgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KIAorLSBJc3N1ZSAjMjcwMzM6IFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBkZWNvZGVfZGF0YSBwYXJhbWV0ZXIgZm9yCisgIHNtdHBkLlNNVFBDaGFubmVsIGFuZCBzbXRwZC5TTVRQU2VydmVyIGNvbnN0cnVjdG9ycyBpcyBjaGFuZ2VkIHRvIEZhbHNlLgorCistIElzc3VlICMyNzAzNDogUmVtb3ZlZCBkZXByZWNhdGVkIGNsYXNzIGFzeW5jaGF0LmZpZm8uCisKKy0gSXNzdWUgIzI2ODcwOiBBZGRlZCByZWFkbGluZS5zZXRfYXV0b19oaXN0b3J5KCksIHdoaWNoIGNhbiBzdG9wIGVudHJpZXMKKyAgYmVpbmcgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0LiAgQmFzZWQgb24gcGF0Y2ggYnkgVHlsZXIKKyAgQ3JvbXB0b24uCisKKy0gSXNzdWUgIzI2MDM5OiB6aXBmaWxlLlppcEZpbGUub3BlbigpIGNhbiBub3cgYmUgdXNlZCB0byB3cml0ZSBkYXRhIGludG8gYSBaSVAKKyAgZmlsZSwgYXMgd2VsbCBhcyBmb3IgZXh0cmFjdGluZyBkYXRhLiAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCisKIC0gSXNzdWUgIzI2ODkyOiBIb25vciBkZWJ1Z2xldmVsIGZsYWcgaW4gdXJsbGliLnJlcXVlc3QuSFRUUEhhbmRsZXIuIFBhdGNoCiAgIGNvbnRyaWJ1dGVkIGJ5IENoaSBIc3VhbiBZZW4uCiAKQEAgLTcyNiw2ICsxNzg5LDE0IEBACiAtIElzc3VlICMyNjk3NzogUmVtb3ZlZCB1bm5lY2Vzc2FyeSwgYW5kIGlnbm9yZWQsIGNhbGwgdG8gc3VtIG9mIHNxdWFyZXMgaGVscGVyCiAgIGluIHN0YXRpc3RpY3MucHZhcmlhbmNlLgogCistIElzc3VlICMyNjAwMjogVXNlIGJpc2VjdCBpbiBzdGF0aXN0aWNzLm1lZGlhbiBpbnN0ZWFkIG9mIGEgbGluZWFyIHNlYXJjaC4KKyAgUGF0Y2ggYnkgVXBlbmRyYSBLdW1hLgorCistIElzc3VlICMyNTk3NDogTWFrZSB1c2Ugb2YgbmV3IERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpIG1ldGhvZCBpbiBzdGF0aXN0aWNzCisgIG1vZHVsZS4gUGF0Y2ggYnkgU3RlZmFuIEtyYWguCisKKy0gSXNzdWUgIzI2OTk2OiBBZGQgc2VjcmV0cyBtb2R1bGUgYXMgZGVzY3JpYmVkIGluIFBFUCA1MDYuCisKIC0gSXNzdWUgIzI2ODgxOiBUaGUgbW9kdWxlZmluZGVyIG1vZHVsZSBub3cgc3VwcG9ydHMgZXh0ZW5kZWQgb3Bjb2RlIGFyZ3VtZW50cy4KIAogLSBJc3N1ZSAjMjM4MTU6IEZpeGVkIGNyYXNoZXMgcmVsYXRlZCB0byBkaXJlY3RseSBjcmVhdGVkIGluc3RhbmNlcyBvZiB0eXBlcyBpbgpAQCAtNzM3LDYgKzE4MDgsMTEgQEAKIC0gSXNzdWUgIzI2ODczOiB4bWxycGMgbm93IHJhaXNlcyBSZXNwb25zZUVycm9yIG9uIHVuc3VwcG9ydGVkIHR5cGUgdGFncwogICBpbnN0ZWFkIG9mIHNpbGVudGx5IHJldHVybiBpbmNvcnJlY3QgcmVzdWx0LgogCistIElzc3VlICMyNjkxNTogIFRoZSBfX2NvbnRhaW5zX18gbWV0aG9kcyBpbiB0aGUgY29sbGVjdGlvbnMgQUJDcyBub3cgY2hlY2sKKyAgZm9yIGlkZW50aXR5IGJlZm9yZSBjaGVja2luZyBlcXVhbGl0eS4gIFRoaXMgYmV0dGVyIG1hdGNoZXMgdGhlIGJlaGF2aW9yCisgIG9mIHRoZSBjb25jcmV0ZSBjbGFzc2VzLCBhbGxvd3Mgc2Vuc2libGUgaGFuZGxpbmcgb2YgTmFOcywgYW5kIG1ha2VzIGl0CisgIGVhc2llciB0byByZWFzb24gYWJvdXQgY29udGFpbmVyIGludmFyaWFudHMuCisKIC0gSXNzdWUgIzI2NzExOiBGaXhlZCB0aGUgY29tcGFyaXNvbiBvZiBwbGlzdGxpYi5EYXRhIHdpdGggb3RoZXIgdHlwZXMuCiAKIC0gSXNzdWUgIzI0MTE0OiBGaXggYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSBpbiBgY3R5cGVzLnV0aWxgLgpAQCAtNzUwLDYgKzE4MjYsMTIgQEAKICAgbmFtZXMgdGhhdCBoYXBwZW4gdG8gaGF2ZSBhIGJ5cGFzc2VkIGhvc3RuYW1lIGFzIGEgc3VmZml4LiAgUGF0Y2ggYnkgWGlhbmcKICAgWmhhbmcuCiAKKy0gSXNzdWUgIzI0OTAyOiBQcmludCBzZXJ2ZXIgVVJMIG9uIGh0dHAuc2VydmVyIHN0YXJ0dXAuICBJbml0aWFsIHBhdGNoIGJ5CisgIEZlbGl4IEthaXNlci4KKworLSBJc3N1ZSAjMjU3ODg6IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoKSBub3cgc3VwcG9ydHMgYW4gImVycm9ycyIgYXJndW1lbnQKKyAgZm9yIHBhc3NpbmcgdG8gb3Blbi4gIE9yaWdpbmFsIHBhdGNoIGJ5IEpvc2VwaCBIYWNrbWFuLgorCiAtIElzc3VlICMyNjYzNDogcmVjdXJzaXZlX3JlcHIoKSBub3cgc2V0cyBfX3F1YWxuYW1lX18gb2Ygd3JhcHBlci4gIFBhdGNoIGJ5CiAgIFhpYW5nIFpoYW5nLgogCkBAIC03ODUsMjYgKzE4NjcsNTQgQEAKIC0gSXNzdWUgIzI2NzE3OiBTdG9wIGVuY29kaW5nIExhdGluLTEtaXplZCBXU0dJIHBhdGhzIHdpdGggVVRGLTguICBQYXRjaCBieQogICBBbnRob255IFNvdHRpbGUuCiAKKy0gSXNzdWUgIzI2NzgyOiBBZGQgU1RBUlRVUElORk8gdG8gc3VicHJvY2Vzcy5fX2FsbF9fIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI2NDA0OiBBZGQgY29udGV4dCBtYW5hZ2VyIHRvIHNvY2tldHNlcnZlci4gIFBhdGNoIGJ5IEF2aXYgUGFsaXZvZGEuCisKIC0gSXNzdWUgIzI2NzM1OiBGaXggOmZ1bmM6YG9zLnVyYW5kb21gIG9uIFNvbGFyaXMgMTEuMyBhbmQgbmV3ZXIgd2hlbiByZWFkaW5nCiAgIG1vcmUgdGhhbiAxLDAyNCBieXRlczogY2FsbCBgYGdldHJhbmRvbSgpYGAgbXVsdGlwbGUgdGltZXMgd2l0aCBhIGxpbWl0IG9mCiAgIDEwMjQgYnl0ZXMgcGVyIGNhbGwuCiAKKy0gSXNzdWUgIzI2NTg1OiBFbGltaW5hdGUgaHR0cC5zZXJ2ZXIuX3F1b3RlX2h0bWwoKSBhbmQgdXNlCisgIGh0bWwuZXNjYXBlKHF1b3RlPUZhbHNlKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNjY4NTogUmFpc2UgT1NFcnJvciBpZiBjbG9zaW5nIGEgc29ja2V0IGZhaWxzLgorCiAtIElzc3VlICMxNjMyOTogQWRkIC53ZWJtIHRvIG1pbWV0eXBlcy50eXBlc19tYXAuICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KIAogLSBJc3N1ZSAjMTM5NTI6IEFkZCAuY3N2IHRvIG1pbWV0eXBlcy50eXBlc19tYXAuICBQYXRjaCBieSBHZW9mZiBXaWxzb24uCiAKKy0gSXNzdWUgIzI2NTg3OiB0aGUgc2l0ZSBtb2R1bGUgbm93IGFsbG93cyAucHRoIGZpbGVzIHRvIHNwZWNpZnkgZmlsZXMgdG8gYmUKKyAgYWRkZWQgdG8gc3lzLnBhdGggKGUuZy4gemlwIGZpbGVzKS4KKworLSBJc3N1ZSAjMjU2MDk6IEludHJvZHVjZSBjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXIgYW5kCisgIHR5cGluZy5Db250ZXh0TWFuYWdlci4KKwogLSBJc3N1ZSAjMjY3MDk6IEZpeGVkIFkyMDM4IHByb2JsZW0gaW4gbG9hZGluZyBiaW5hcnkgUExpc3RzLgogCiAtIElzc3VlICMyMzczNTogSGFuZGxlIHRlcm1pbmFsIHJlc2l6aW5nIHdpdGggUmVhZGxpbmUgNi4zKyBieSBpbnN0YWxsaW5nIG91cgogICBvd24gU0lHV0lOQ0ggaGFuZGxlci4gIFBhdGNoIGJ5IEVyaWMgUHJpY2UuCiAKKy0gSXNzdWUgIzI1OTUxOiBDaGFuZ2UgU1NMU29ja2V0LnNlbmRhbGwoKSB0byByZXR1cm4gTm9uZSwgYXMgZXhwbGljaXRseQorICBkb2N1bWVudGVkIGZvciBwbGFpbiBzb2NrZXQgb2JqZWN0cy4gIFBhdGNoIGJ5IEF2aXYgUGFsaXZvZGEuCisKIC0gSXNzdWUgIzI2NTg2OiBJbiBodHRwLnNlcnZlciwgcmVzcG9uZCB3aXRoICI0MTMgUmVxdWVzdCBoZWFkZXIgZmllbGRzIHRvbwogICBsYXJnZSIgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGhlYWRlciBmaWVsZHMgdG8gcGFyc2UsIHJhdGhlciB0aGFuIGtpbGxpbmcKICAgdGhlIGNvbm5lY3Rpb24gYW5kIHJhaXNpbmcgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgogCistIElzc3VlICMyNjY3NjogQWRkZWQgbWlzc2luZyBYTUxQdWxsUGFyc2VyIHRvIEVsZW1lbnRUcmVlLl9fYWxsX18uCisKIC0gSXNzdWUgIzIyODU0OiBDaGFuZ2UgQnVmZmVyZWRSZWFkZXIud3JpdGFibGUoKSBhbmQKICAgQnVmZmVyZWRXcml0ZXIucmVhZGFibGUoKSB0byBhbHdheXMgcmV0dXJuIEZhbHNlLgogCistIElzc3VlICMyNjQ5MjogRXhoYXVzdGVkIGl0ZXJhdG9yIG9mIGFycmF5LmFycmF5IG5vdyBjb25mb3JtcyB3aXRoIHRoZSBiZWhhdmlvcgorICBvZiBpdGVyYXRvcnMgb2Ygb3RoZXIgbXV0YWJsZSBzZXF1ZW5jZXM6IGl0IGxlZnRzIGV4aGF1c3RlZCBldmVuIGlmIGl0ZXJhdGVkCisgIGFycmF5IGlzIGV4dGVuZGVkLgorCistIElzc3VlICMyNjY0MTogZG9jdGVzdC5Eb2NGaWxlVGVzdCBhbmQgZG9jdGVzdC50ZXN0ZmlsZSgpIG5vdyBzdXBwb3J0CisgIHBhY2thZ2VzIChtb2R1bGUgc3BsaXR0ZWQgaW50byBtdWx0aXBsZSBkaXJlY3RvcmllcykgZm9yIHRoZSBwYWNrYWdlCisgIHBhcmFtZXRlci4KKwogLSBJc3N1ZSAjMjUxOTU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gbW9jay5NYWdpY01vY2suIF9DYWxsIGlzIGEgc3ViY2xhc3Mgb2YKICAgdHVwbGUgKGNoYW5nZXNldCAzNjAzYmFlNjNjMTMgb25seSB3b3JrcyBmb3IgY2xhc3Nlcykgc28gd2UgbmVlZCB0bwogICBpbXBsZW1lbnQgX19uZV9fIG91cnNlbHZlcy4gIFBhdGNoIGJ5IEFuZHJldyBQbHVtbWVyLgpAQCAtODE3LDE2ICsxOTI3LDQ1IEBACiAKIC0gSXNzdWUgIzI2NjE2OiBGaXhlZCBhIGJ1ZyBpbiBkYXRldGltZS5hc3RpbWV6b25lKCkgbWV0aG9kLgogCi0tIElzc3VlICMyMTkyNTogOmZ1bmM6YHdhcm5pbmdzLmZvcm1hdHdhcm5pbmdgIG5vdyBjYXRjaGVzIGV4Y2VwdGlvbnMgb24KLSAgYGBsaW5lY2FjaGUuZ2V0bGluZSguLi4pYGAgdG8gYmUgYWJsZSB0byBsb2cgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCBlbWl0dGVkCi0gIGxhdGUgZHVyaW5nIHRoZSBQeXRob24gc2h1dGRvd24gcHJvY2Vzcy4KKy0gSXNzdWUgIzI2NjM3OiBUaGUgOm1vZDpgaW1wb3J0bGliYCBtb2R1bGUgbm93IGVtaXRzIGFuIDpleGM6YEltcG9ydEVycm9yYAorICByYXRoZXIgdGhhbiBhIDpleGM6YFR5cGVFcnJvcmAgaWYgOmZ1bmM6YF9faW1wb3J0X19gIGlzIHRyaWVkIGR1cmluZyB0aGUKKyAgUHl0aG9uIHNodXRkb3duIHByb2Nlc3MgYnV0IDpkYXRhOmBzeXMucGF0aGAgaXMgYWxyZWFkeSBjbGVhcmVkIChzZXQgdG8KKyAgYGBOb25lYGApLgorCistIElzc3VlICMyMTkyNTogOmZ1bmM6YHdhcm5pbmdzLmZvcm1hdHdhcm5pbmdgIG5vdyBjYXRjaGVzIGV4Y2VwdGlvbnMgd2hlbgorICBjYWxsaW5nIDpmdW5jOmBsaW5lY2FjaGUuZ2V0bGluZWAgYW5kCisgIDpmdW5jOmB0cmFjZW1hbGxvYy5nZXRfb2JqZWN0X3RyYWNlYmFja2AgdG8gYmUgYWJsZSB0byBsb2cKKyAgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCBlbWl0dGVkIGxhdGUgZHVyaW5nIHRoZSBQeXRob24gc2h1dGRvd24gcHJvY2Vzcy4KKworLSBJc3N1ZSAjMjM4NDg6IE9uIFdpbmRvd3MsIGZhdWx0aGFuZGxlci5lbmFibGUoKSBub3cgYWxzbyBpbnN0YWxscyBhbgorICBleGNlcHRpb24gaGFuZGxlciB0byBkdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIFB5dGhvbiB0aHJlYWRzIG9uIGFueSBXaW5kb3dzCisgIGV4Y2VwdGlvbiwgbm90IG9ubHkgb24gVU5JWCBzaWduYWxzIChTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQpLgorCistIElzc3VlICMyNjUzMDogQWRkIEMgZnVuY3Rpb25zIDpjOmZ1bmM6YF9QeVRyYWNlTWFsbG9jX1RyYWNrYCBhbmQKKyAgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfVW50cmFja2AgdG8gdHJhY2sgbWVtb3J5IGJsb2NrcyB1c2luZyB0aGUKKyAgOm1vZDpgdHJhY2VtYWxsb2NgIG1vZHVsZS4gQWRkIDpjOmZ1bmM6YF9QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFja2AgdG8gZ2V0CisgIHRoZSB0cmFjZWJhY2sgb2YgYW4gb2JqZWN0LgorCistIElzc3VlICMyNjU4ODogVGhlIF90cmFjZW1hbGxvYyBub3cgc3VwcG9ydHMgdHJhY2luZyBtZW1vcnkgYWxsb2NhdGlvbnMgb2YKKyAgbXVsdGlwbGUgYWRkcmVzcyBzcGFjZXMgKGRvbWFpbnMpLgogCiAtIElzc3VlICMyNDI2NjogQ3RybCtDIGR1cmluZyBSZWFkbGluZSBoaXN0b3J5IHNlYXJjaCBub3cgY2FuY2VscyB0aGUgc2VhcmNoCiAgIG1vZGUgd2hlbiBjb21waWxlZCB3aXRoIFJlYWRsaW5lIDcuCiAKKy0gSXNzdWUgIzI2NTkwOiBJbXBsZW1lbnQgYSBzYWZlIGZpbmFsaXplciBmb3IgdGhlIF9zb2NrZXQuc29ja2V0IHR5cGUuIEl0IG5vdworICByZWxlYXNlcyB0aGUgR0lMIHRvIGNsb3NlIHRoZSBzb2NrZXQuCisKKy0gSXNzdWUgIzE4Nzg3OiBzcHdkLmdldHNwbmFtKCkgbm93IHJhaXNlcyBhIFBlcm1pc3Npb25FcnJvciBpZiB0aGUgdXNlcgorICBkb2Vzbid0IGhhdmUgcHJpdmlsZWdlcy4KKwogLSBJc3N1ZSAjMjY1NjA6IEF2b2lkIHBvdGVudGlhbCBWYWx1ZUVycm9yIGluIEJhc2VIYW5kbGVyLnN0YXJ0X3Jlc3BvbnNlLgogICBJbml0aWFsIHBhdGNoIGJ5IFBldGVyIEluZ2xlc2J5LgogCistIElzc3VlICMyNjU2NzogQWRkIGEgbmV3IGZ1bmN0aW9uIDpjOmZ1bmM6YFB5RXJyX1Jlc291cmNlV2FybmluZ2AgZnVuY3Rpb24gdG8KKyAgcGFzcyB0aGUgZGVzdHJveWVkIG9iamVjdC4gQWRkIGEgKnNvdXJjZSogYXR0cmlidXRlIHRvCisgIDpjbGFzczpgd2FybmluZ3MuV2FybmluZ01lc3NhZ2VgLiBBZGQgd2FybmluZ3MuX3Nob3d3YXJubXNnKCkgd2hpY2ggdXNlcworICB0cmFjZW1hbGxvYyB0byBnZXQgdGhlIHRyYWNlYmFjayB3aGVyZSBzb3VyY2Ugb2JqZWN0IHdhcyBhbGxvY2F0ZWQuCisKIC0gW1NlY3VyaXR5XSBJc3N1ZSAjMjYzMTM6IHNzbC5weSBfbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIGlmIHdpbmRvd3MKICAgY2VydCBzdG9yZSBpcyBlbXB0eS4gUGF0Y2ggYnkgQmFqaS4KIApAQCAtODQ4LDI0ICsxOTg3LDM5IEBACiAtIElzc3VlICMyMzcxODogRml4ZWQgcGFyc2luZyB0aW1lIGluIHdlZWsgMCBiZWZvcmUgSmFuIDEuICBPcmlnaW5hbCBwYXRjaCBieQogICBUYW3DoXMgQmVuY2UgR2VkYWkuCiAKKy0gSXNzdWUgIzI2MzIzOiBBZGQgTW9jay5hc3NlcnRfY2FsbGVkKCkgYW5kIE1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgbWV0aG9kcyB0byB1bml0dGVzdC5tb2NrLiBQYXRjaCB3cml0dGVuIGJ5IEFtaXQgU2FoYS4KKwogLSBJc3N1ZSAjMjA1ODk6IEludm9raW5nIFBhdGgub3duZXIoKSBhbmQgUGF0aC5ncm91cCgpIG9uIFdpbmRvd3Mgbm93IHJhaXNlCiAgIE5vdEltcGxlbWVudGVkRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvci4KIAogLSBJc3N1ZSAjMjYxNzc6IEZpeGVkIHRoZSBrZXlzKCkgbWV0aG9kIGZvciBDYW52YXMgYW5kIFNjcm9sbGJhciB3aWRnZXRzLgogCi0tIElzc3VlICMxNTA2ODogR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIHRoZSBmaWxlaW5wdXQgbW9kdWxlLgotICBUaGUgYnVmc2l6ZSBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuCistIElzc3VlICMxNTA2ODogR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIGZpbGVpbnB1dC4KKyAgVGhlIGJ1ZnNpemUgcGFyYW1ldGVyIGlzIG5vdyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkLgorCistIElzc3VlICMxOTQ3NTogQWRkZWQgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgdG8gdGhlIGRhdGV0aW1lCisgIGlzb2Zvcm1hdCgpIG1ldGhvZCB0byBjaG9vc2UgdGhlIHByZWNpc2lvbiBvZiB0aGUgdGltZSBjb21wb25lbnQuCiAKIC0gSXNzdWUgIzIyMDI6IEZpeCBVbmJvdW5kTG9jYWxFcnJvciBpbgogICBBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyLmdldF9hbGdvcml0aG1faW1wbHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdGhpZXUKICAgRHVwdXkuCiAKKy0gSXNzdWUgIzI2MTY3OiBNaW5pbWl6ZWQgb3ZlcmhlYWQgaW4gY29weS5jb3B5KCkgYW5kIGNvcHkuZGVlcGNvcHkoKS4KKyAgT3B0aW1pemVkIGNvcHlpbmcgYW5kIGRlZXBjb3B5aW5nIGJ5dGVhcnJheXMsIE5vdEltcGxlbWVudGVkLCBzbGljZXMsCisgIHNob3J0IGxpc3RzLCB0dXBsZXMsIGRpY3RzLCBzZXRzLgorCiAtIElzc3VlICMyNTcxODogRml4ZWQgcGlja2xpbmcgYW5kIGNvcHlpbmcgdGhlIGFjY3VtdWxhdGUoKSBpdGVyYXRvciB3aXRoCiAgIHRvdGFsIGlzIE5vbmUuCiAKIC0gSXNzdWUgIzI2NDc1OiBGaXhlZCBkZWJ1Z2dpbmcgb3V0cHV0IGZvciByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggdGhlICg/eCkKICAgZmxhZy4KIAorLSBJc3N1ZSAjMjY0ODI6IEFsbG93ZWQgcGlja2xpbmcgcmVjdXJzaXZlIGRlcXVldWVzLgorCistIElzc3VlICMyNjMzNTogTWFrZSBtbWFwLndyaXRlKCkgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBsaWtlCisgIG90aGVyIHdyaXRlIG1ldGhvZHMuICBQYXRjaCBieSBKYWt1YiBTdGFzaWFrLgorCiAtIElzc3VlICMyNjQ1NzogRml4ZWQgdGhlIHN1Ym5ldHMoKSBtZXRob2RzIGluIElQIG5ldHdvcmsgY2xhc3NlcyBmb3IgdGhlIGNhc2UKICAgd2hlbiByZXN1bHRpbmcgcHJlZml4IGxlbmd0aCBpcyBlcXVhbCB0byBtYXhpbWFsIHByZWZpeCBsZW5ndGguCiAgIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgpAQCAtODgyLDcgKzIwMzYsNyBAQAogCiAtIElzc3VlICMyNjE4NjogUmVtb3ZlIGFuIGludmFsaWQgdHlwZSBjaGVjayBpbiBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyLgogCi0tIElzc3VlICMyNjM2NzogaW1wb3J0bGliLl9faW1wb3J0X18oKSByYWlzZXMgU3lzdGVtRXJyb3IgbGlrZQorLSBJc3N1ZSAjMjYzNjc6IGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgcmFpc2VzIEltcG9ydEVycm9yIGxpa2UKICAgYnVpbHRpbnMuX19pbXBvcnRfXygpIHdoZW4gYGBsZXZlbGBgIGlzIHNwZWNpZmllZCBidXQgd2l0aG91dCBhbiBhY2NvbXBhbnlpbmcKICAgcGFja2FnZSBzcGVjaWZpZWQuCiAKQEAgLTg5MCwxOSArMjA0NCwzOSBAQAogICB0aGUgY29ubmVjdGVkIHNvY2tldCkgd2hlbiB2ZXJpZnlfcmVxdWVzdCgpIHJldHVybnMgZmFsc2UuICBQYXRjaCBieSBBdml2CiAgIFBhbGl2b2RhLgogCistIElzc3VlICMyMzQzMDogQ2hhbmdlIHRoZSBzb2NrZXRzZXJ2ZXIgbW9kdWxlIHRvIG9ubHkgY2F0Y2ggZXhjZXB0aW9ucworICByYWlzZWQgZnJvbSBhIHJlcXVlc3QgaGFuZGxlciB0aGF0IGFyZSBkZXJpdmVkIGZyb20gRXhjZXB0aW9uIChpbnN0ZWFkIG9mCisgIEJhc2VFeGNlcHRpb24pLiAgVGhlcmVmb3JlIFN5c3RlbUV4aXQgYW5kIEtleWJvYXJkSW50ZXJydXB0IG5vIGxvbmdlcgorICB0cmlnZ2VyIHRoZSBoYW5kbGVfZXJyb3IoKSBtZXRob2QsIGFuZCB3aWxsIG5vdyB0byBzdG9wIGEgc2luZ2xlLXRocmVhZGVkCisgIHNlcnZlci4KKwogLSBbU2VjdXJpdHldIElzc3VlICMyNTkzOTogT24gV2luZG93cyBvcGVuIHRoZSBjZXJ0IHN0b3JlIHJlYWRvbmx5IGluCiAgIHNzbC5lbnVtX2NlcnRpZmljYXRlcy4KIAogLSBJc3N1ZSAjMjU5OTU6IG9zLndhbGsoKSBubyBsb25nZXIgdXNlcyBGRHMgcHJvcG9ydGlvbmFsIHRvIHRoZSB0cmVlIGRlcHRoLgogCistIElzc3VlICMyNTk5NDogQWRkZWQgdGhlIGNsb3NlKCkgbWV0aG9kIGFuZCB0aGUgc3VwcG9ydCBvZiB0aGUgY29udGV4dCBtYW5hZ2VyCisgIHByb3RvY29sIGZvciB0aGUgb3Muc2NhbmRpcigpIGl0ZXJhdG9yLgorCistIElzc3VlICMyMzk5MjogbXVsdGlwcm9jZXNzaW5nOiBtYWtlIE1hcFJlc3VsdCBub3QgZmFpbC1mYXN0IHVwb24gZXhjZXB0aW9uLgorCistIElzc3VlICMyNjI0MzogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyB0byB6bGliLmNvbXByZXNzKCkuICBQYXRjaCBieSBBdml2CisgIFBhbGl2b2RhLgorCiAtIElzc3VlICMyNjExNzogVGhlIG9zLnNjYW5kaXIoKSBpdGVyYXRvciBub3cgY2xvc2VzIGZpbGUgZGVzY3JpcHRvciBub3Qgb25seQogICB3aGVuIHRoZSBpdGVyYXRpb24gaXMgZmluaXNoZWQsIGJ1dCB3aGVuIGl0IHdhcyBmYWlsZWQgd2l0aCBlcnJvci4KIAorLSBJc3N1ZSAjMjU5NDk6IF9fZGljdF9fIGZvciBhbiBPcmRlcmVkRGljdCBpbnN0YW5jZSBpcyBub3cgY3JlYXRlZCBvbmx5IHdoZW4KKyAgbmVlZGVkLgorCiAtIElzc3VlICMyNTkxMTogUmVzdG9yZWQgc3VwcG9ydCBvZiBieXRlcyBwYXRocyBpbiBvcy53YWxrKCkgb24gV2luZG93cy4KIAogLSBJc3N1ZSAjMjYwNDU6IEFkZCBVVEYtOCBzdWdnZXN0aW9uIHRvIGVycm9yIG1lc3NhZ2Ugd2hlbiBwb3N0aW5nIGEKICAgbm9uLUxhdGluLTEgc3RyaW5nIHdpdGggaHR0cC5jbGllbnQuCiAKKy0gSXNzdWUgIzI2MDM5OiBBZGRlZCB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKCkgYW5kIHppcGluZm8uWmlwSW5mby5pc19kaXIoKS4KKyAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCisKIC0gSXNzdWUgIzEyOTIzOiBSZXNldCBGYW5jeVVSTG9wZW5lcidzIHJlZGlyZWN0IGNvdW50ZXIgZXZlbiBpZiB0aGVyZSBpcyBhbgogICBleGNlcHRpb24uICBCYXNlZCBvbiBwYXRjaGVzIGJ5IEJyaWFuIEJyYXppbCBhbmQgRGFuaWVsIFJvY2NvLgogCkBAIC05MjMsNiArMjA5NywxMCBAQAogICBnZXRob3N0YnluYW1lX2V4KCkgZnVuY3Rpb25zIG9mIHRoZSBzb2NrZXQgbW9kdWxlIG5vdyBkZWNvZGUgdGhlIGhvc3RuYW1lCiAgIGZyb20gdGhlIEFOU0kgY29kZSBwYWdlIHJhdGhlciB0aGFuIFVURi04LgogCistIElzc3VlICMyNjA5OTogVGhlIHNpdGUgbW9kdWxlIG5vdyB3cml0ZXMgYW4gZXJyb3IgaW50byBzdGRlcnIgaWYKKyAgc2l0ZWN1c3RvbWl6ZSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkIGJ1dCBleGVjdXRpbmcgdGhlIG1vZHVsZSByYWlzZSBhbgorICBJbXBvcnRFcnJvci4gU2FtZSBjaGFuZ2UgZm9yIHVzZXJjdXN0b21pemUuCisKIC0gSXNzdWUgIzI2MTQ3OiB4bWxycGMgbm93IHdvcmtzIHdpdGggc3RyaW5ncyBub3QgZW5jb2RhYmxlIHdpdGggdXNlZAogICBub24tVVRGLTggZW5jb2RpbmcuCiAKQEAgLTkzMywxMyArMjExMSwyMSBAQAogLSBJc3N1ZSAjMjYwMTM6IEFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCBicm9rZW4gcHJvdG9jb2wgMiBwaWNrbGVzIGNyZWF0ZWQKICAgaW4gb2xkIFB5dGhvbiAzIHZlcnNpb25zICgzLjQuMyBhbmQgbG93ZXIpLgogCistIElzc3VlICMyNjEyOTogRGVwcmVjYXRlZCBhY2NlcHRpbmcgbm9uLWludGVnZXJzIGluIGdycC5nZXRncmdpZCgpLgorCiAtIElzc3VlICMyNTg1MDogVXNlIGNyb3NzLWNvbXBpbGF0aW9uIGJ5IGRlZmF1bHQgZm9yIDY0LWJpdCBXaW5kb3dzLgogCi0tIElzc3VlICMxNzYzMzogSW1wcm92ZSB6aXBpbXBvcnQncyBzdXBwb3J0IGZvciBuYW1lc3BhY2UgcGFja2FnZXMuCistIElzc3VlICMyNTgyMjogQWRkIGRvY3N0cmluZ3MgdG8gdGhlIGZpZWxkcyBvZiB1cmxsaWIucGFyc2UgcmVzdWx0cy4KKyAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgU3dhdGkgSmFpc3dhbC4KKworLSBJc3N1ZSAjMjI2NDI6IENvbnZlcnQgdHJhY2UgbW9kdWxlIG9wdGlvbiBwYXJzaW5nIG1lY2hhbmlzbSB0byBhcmdwYXJzZS4KKyAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgU2lsZW50R2hvc3QuCiAKIC0gSXNzdWUgIzI0NzA1OiBGaXggc3lzY29uZmlnLl9wYXJzZV9tYWtlZmlsZSBub3QgZXhwYW5kaW5nICR7fSB2YXJzCiAgIGFwcGVhcmluZyBiZWZvcmUgJCgpIHZhcnMuCiAKKy0gSXNzdWUgIzI2MDY5OiBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgYXBpcyBpbiB0aGUgdHJhY2UgbW9kdWxlLgorCiAtIElzc3VlICMyMjEzODogRml4IG1vY2sucGF0Y2ggYmVoYXZpb3Igd2hlbiBwYXRjaGluZyBkZXNjcmlwdG9ycy4gUmVzdG9yZQogICBvcmlnaW5hbCB2YWx1ZXMgYWZ0ZXIgcGF0Y2hpbmcuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFNlYW4gTWNDdWxseS4KIApAQCAtOTUyLDEzICsyMTM4LDI4IEBACiAtIElzc3VlICMyNDEyMDogSWdub3JlIFBlcm1pc3Npb25FcnJvciB3aGVuIHRyYXZlcnNpbmcgYSB0cmVlIHdpdGgKICAgcGF0aGxpYi5QYXRoLltyXWdsb2IoKS4gIFBhdGNoIGJ5IFVscmljaCBQZXRyaS4KIAorLSBJc3N1ZSAjMjE4MTU6IEFjY2VwdCBdIGNoYXJhY3RlcnMgaW4gdGhlIGRhdGEgcG9ydGlvbiBvZiBpbWFwIHJlc3BvbnNlcywKKyAgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBmbGFncyB3aXRoIHNxdWFyZSBicmFja2V0cyBhY2NlcHRlZCBhbmQgcHJvZHVjZWQKKyAgYnkgc2VydmVycyBzdWNoIGFzIGdtYWlsLgorCiAtIElzc3VlICMyNTQ0NzogZmlsZWlucHV0IG5vdyB1c2VzIHN5cy5zdGRpbiBhcy1pcyBpZiBpdCBkb2VzIG5vdCBoYXZlIGEKICAgYnVmZmVyIGF0dHJpYnV0ZSAocmVzdG9yZXMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkuCiAKKy0gSXNzdWUgIzI1OTcxOiBPcHRpbWl6ZWQgY3JlYXRpbmcgRnJhY3Rpb25zIGZyb20gZmxvYXRzIGJ5IDIgdGltZXMgYW5kIGZyb20KKyAgRGVjaW1hbHMgYnkgMyB0aW1lcy4KKworLSBJc3N1ZSAjMjU4MDI6IERvY3VtZW50IGFzIGRlcHJlY2F0ZWQgdGhlIHJlbWFpbmluZyBpbXBsZW1lbnRhdGlvbnMgb2YKKyAgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGUoKS4KKworLSBJc3N1ZSAjMjU5Mjg6IEFkZCBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8oKS4KKwogLSBJc3N1ZSAjMjU0NDc6IENvcHlpbmcgdGhlIGxydV9jYWNoZSgpIHdyYXBwZXIgb2JqZWN0IG5vdyBhbHdheXMgd29ya3MsCi0gIGluZGVwZW5kZWRseSBmcm9tIHRoZSB0eXBlIG9mIHRoZSB3cmFwcGVkIG9iamVjdCAoYnkgcmV0dXJuaW5nIHRoZSBvcmlnaW5hbAorICBpbmRlcGVuZGVudGx5IGZyb20gdGhlIHR5cGUgb2YgdGhlIHdyYXBwZWQgb2JqZWN0IChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsCiAgIG9iamVjdCB1bmNoYW5nZWQpLgogCistIElzc3VlICMyNTc2ODogSGF2ZSB0aGUgZnVuY3Rpb25zIGluIGNvbXBpbGVhbGwgcmV0dXJuIGJvb2xlYW5zIGluc3RlYWQgb2YKKyAgaW50cyBhbmQgYWRkIHByb3BlciBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0cyBmb3IgdGhlIHJldHVybiB2YWx1ZXMuCisKIC0gSXNzdWUgIzI0MTAzOiBGaXhlZCBwb3NzaWJsZSB1c2UgYWZ0ZXIgZnJlZSBpbiBFbGVtZW50VHJlZS5YTUxQdWxsUGFyc2VyLgogCiAtIElzc3VlICMyNTg2MDogb3MuZndhbGsoKSBubyBsb25nZXIgc2tpcHMgcmVtYWluaW5nIGRpcmVjdG9yaWVzIHdoZW4gZXJyb3IKQEAgLTk2Niw4ICsyMTY3LDIyIEBACiAKIC0gSXNzdWUgIzI1OTE0OiBGaXhlZCBhbmQgc2ltcGxpZmllZCBPcmRlcmVkRGljdC5fX3NpemVvZl9fLgogCistIElzc3VlICMyNTg2OTogT3B0aW1pemVkIGRlZXBjb3B5aW5nIEVsZW1lbnRUcmVlOyBpdCBpcyBub3cgMjAgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNTg3MzogT3B0aW1pemVkIGl0ZXJhdGluZyBFbGVtZW50VHJlZS4gIEl0ZXJhdGluZyBlbGVtZW50cworICBFbGVtZW50Lml0ZXIoKSBpcyBub3cgNDAlIGZhc3RlciwgaXRlcmF0aW5nIHRleHQgRWxlbWVudC5pdGVydGV4dCgpCisgIGlzIG5vdyB1cCB0byAyLjUgdGltZXMgZmFzdGVyLgorCiAtIElzc3VlICMyNTkwMjogRml4ZWQgdmFyaW91cyByZWZjb3VudCBpc3N1ZXMgaW4gRWxlbWVudFRyZWUgaXRlcmF0aW9uLgogCistIElzc3VlICMyMjIyNzogVGhlIFRhckZpbGUgaXRlcmF0b3IgaXMgcmVpbXBsZW1lbnRlZCB1c2luZyBnZW5lcmF0b3IuCisgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltcGxlciB0aGF0IHVzaW5nIGNsYXNzLgorCistIElzc3VlICMyNTYzODogT3B0aW1pemVkIEVsZW1lbnRUcmVlLml0ZXJwYXJzZSgpOyBpdCBpcyBub3cgMnggZmFzdGVyLgorICBPcHRpbWl6ZWQgRWxlbWVudFRyZWUgcGFyc2luZzsgaXQgaXMgbm93IDEwJSBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1NzYxOiBJbXByb3ZlZCBkZXRlY3RpbmcgZXJyb3JzIGluIGJyb2tlbiBwaWNrbGUgZGF0YS4KKwogLSBJc3N1ZSAjMjU3MTc6IFJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW91ciBvZiB0b2xlcmF0aW5nIG1vc3QgZnN0YXQoKQogICBlcnJvcnMgd2hlbiBvcGVuaW5nIGZpbGVzLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGluIDMuNWExLCBhbmQgc3RvcHBlZAogICBhbm9ueW1vdXMgdGVtcG9yYXJ5IGZpbGVzIGZyb20gd29ya2luZyBpbiBzcGVjaWFsIGNhc2VzLgpAQCAtOTc5LDYgKzIxOTQsOSBAQAogLSBJc3N1ZSAjMjU3NjQ6IEluIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSwgcHJlc2VydmUgYW55IGV4Y2VwdGlvbiBjYXVzZWQgYnkKICAgZm9yaygpIGZhaWx1cmUgd2hlbiBwcmVleGVjX2ZuIGlzIHVzZWQuCiAKKy0gSXNzdWUgIzI1NzcxOiBUd2VhayB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UgZm9yIGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgpCisgIHdoZW4gJ3BhY2thZ2UnIGlzbid0IHNwZWNpZmllZCBidXQgbmVjZXNzYXJ5LgorCiAtIElzc3VlICM2NDc4OiBfc3RycHRpbWUncyByZWdleHAgY2FjaGUgbm93IGlzIHJlc2V0IGFmdGVyIGNoYW5naW5nIHRpbWV6b25lCiAgIHdpdGggdGltZS50enNldCgpLgogCkBAIC0xMDAwLDYgKzIyMTgsOSBAQAogLSBJc3N1ZSAjMTAxMzE6IEZpeGVkIGRlZXAgY29weWluZyBvZiBtaW5pZG9tIGRvY3VtZW50cy4gIEJhc2VkIG9uIHBhdGNoCiAgIGJ5IE1hcmlhbiBHYW5pc2luLgogCistIElzc3VlICM3OTkwOiBkaXIoKSBvbiBFbGVtZW50VHJlZS5FbGVtZW50IG5vdyBsaXN0cyBwcm9wZXJ0aWVzOiAidGFnIiwKKyAgInRleHQiLCAidGFpbCIgYW5kICJhdHRyaWIiLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FudG9zbyBXaWpheWEuCisKIC0gSXNzdWUgIzI1NzI1OiBGaXhlZCBhIHJlZmVyZW5jZSBsZWFrIGluIHBpY2tsZS5sb2FkcygpIHdoZW4gdW5waWNrbGluZwogICBpbnZhbGlkIGRhdGEgaW5jbHVkaW5nIHR1cGxlIGluc3RydWN0aW9ucy4KIApAQCAtMTAxNSw2ICsyMjM2LDIwMyBAQAogLSBJc3N1ZSAjMjU2MjQ6IFppcEZpbGUgbm93IGFsd2F5cyB3cml0ZXMgYSBaSVBfU1RPUkVEIGhlYWRlciBmb3IgZGlyZWN0b3J5CiAgIGVudHJpZXMuICBQYXRjaCBieSBEaW5neXVhbiBXYW5nLgogCistIElzc3VlICMyNTYyNjogQ2hhbmdlIHRocmVlIHpsaWIgZnVuY3Rpb25zIHRvIGFjY2VwdCBzaXplcyB0aGF0IGZpdCBpbgorICBQeV9zc2l6ZV90LCBidXQgaW50ZXJuYWxseSBjYXAgdGhvc2Ugc2l6ZXMgdG8gVUlOVF9NQVguICBUaGlzIHJlc29sdmVzIGEKKyAgcmVncmVzc2lvbiBpbiAzLjUgd2hlcmUgR3ppcEZpbGUucmVhZCgpIGZhaWxlZCB0byByZWFkIGNodW5rcyBsYXJnZXIgdGhhbiAyCisgIG9yIDQgR2lCLiAgVGhlIGNoYW5nZSBhZmZlY3RzIHRoZSB6bGliLkRlY29tcHJlc3MuZGVjb21wcmVzcygpIG1heF9sZW5ndGgKKyAgcGFyYW1ldGVyLCB0aGUgemxpYi5kZWNvbXByZXNzKCkgYnVmc2l6ZSBwYXJhbWV0ZXIsIGFuZCB0aGUKKyAgemxpYi5EZWNvbXByZXNzLmZsdXNoKCkgbGVuZ3RoIHBhcmFtZXRlci4KKworLSBJc3N1ZSAjMjU1ODM6IEF2b2lkIGluY29ycmVjdCBlcnJvcnMgcmFpc2VkIGJ5IG9zLm1ha2VkaXJzKGV4aXN0X29rPVRydWUpCisgIHdoZW4gdGhlIE9TIGdpdmVzIHByaW9yaXR5IHRvIGVycm9ycyBzdWNoIGFzIEVBQ0NFUyBvdmVyIEVFWElTVC4KKworLSBJc3N1ZSAjMjU1OTM6IENoYW5nZSBzZW1hbnRpY3Mgb2YgRXZlbnRMb29wLnN0b3AoKSBpbiBhc3luY2lvLgorCistIElzc3VlICM2OTczOiBXaGVuIHdlIGtub3cgYSBzdWJwcm9jZXNzLlBvcGVuIHByb2Nlc3MgaGFzIGRpZWQsIGRvCisgIG5vdCBhbGxvdyB0aGUgc2VuZF9zaWduYWwoKSwgdGVybWluYXRlKCksIG9yIGtpbGwoKSBtZXRob2RzIHRvIGRvCisgIGFueXRoaW5nIGFzIHRoZXkgY291bGQgcG90ZW50aWFsbHkgc2lnbmFsIGEgZGlmZmVyZW50IHByb2Nlc3MuCisKKy0gSXNzdWUgIzIzODgzOiBBZGRlZCBtaXNzaW5nIEFQSXMgdG8gX19hbGxfXyB0byBtYXRjaCB0aGUgZG9jdW1lbnRlZCBBUElzCisgIGZvciB0aGUgZm9sbG93aW5nIG1vZHVsZXM6IGNhbGVuZGFyLCBjc3YsIGVudW0sIGZpbGVpbnB1dCwgZnRwbGliLCBsb2dnaW5nLAorICBvcHRwYXJzZSwgdGFyZmlsZSwgdGhyZWFkaW5nIGFuZCB3YXZlLiAgQWxzbyBhZGRlZCBhCisgIHRlc3Quc3VwcG9ydC5jaGVja19fYWxsX18oKSBoZWxwZXIuICBQYXRjaGVzIGJ5IEphY2VrIEtvxYJvZHppZWosIE1hdXJvCisgIFMuIE0uIFJvZHJpZ3VlcyBhbmQgSm9lbCBUYWRkZWkuCisKKy0gSXNzdWUgIzI1NTkwOiBJbiB0aGUgUmVhZGxpbmUgY29tcGxldGVyLCBvbmx5IGNhbGwgZ2V0YXR0cigpIG9uY2UgcGVyCisgIGF0dHJpYnV0ZS4gIEFsc28gY29tcGxldGUgbmFtZXMgb2YgYXR0cmlidXRlcyBzdWNoIGFzIHByb3BlcnRpZXMgYW5kIHNsb3RzCisgIHdoaWNoIGFyZSBsaXN0ZWQgYnkgZGlyKCkgYnV0IG5vdCB5ZXQgY3JlYXRlZCBvbiBhbiBpbnN0YW5jZS4KKworLSBJc3N1ZSAjMjU0OTg6IEZpeCBhIGNyYXNoIHdoZW4gZ2FyYmFnZS1jb2xsZWN0aW5nIGN0eXBlcyBvYmplY3RzIGNyZWF0ZWQKKyAgYnkgd3JhcHBpbmcgYSBtZW1vcnl2aWV3LiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIG1hZGUgaW4gMy41YTEuICBCYXNlZAorICBvbiBwYXRjaCBieSBFcnlrc3VuLgorCistIElzc3VlICMyNTU4NDogQWRkZWQgImVzY2FwZSIgdG8gdGhlIF9fYWxsX18gbGlzdCBpbiB0aGUgZ2xvYiBtb2R1bGUuCisKKy0gSXNzdWUgIzI1NTg0OiBGaXhlZCByZWN1cnNpdmUgZ2xvYigpIHdpdGggcGF0dGVybnMgc3RhcnRpbmcgd2l0aCAnXCpcKicuCisKKy0gSXNzdWUgIzI1NDQ2OiBGaXggcmVncmVzc2lvbiBpbiBzbXRwbGliJ3MgQVVUSCBMT0dJTiBzdXBwb3J0LgorCistIElzc3VlICMxODAxMDogRml4IHRoZSBweWRvYyB3ZWIgc2VydmVyJ3MgbW9kdWxlIHNlYXJjaCBmdW5jdGlvbiB0byBoYW5kbGUKKyAgZXhjZXB0aW9ucyBmcm9tIGltcG9ydGluZyBwYWNrYWdlcy4KKworLSBJc3N1ZSAjMjU1NTQ6IEdvdCByaWQgb2YgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gcGFyc2luZy4KKworLSBJc3N1ZSAjMTg5NzM6IENvbW1hbmQtbGluZSBpbnRlcmZhY2Ugb2YgdGhlIGNhbGVuZGFyIG1vZHVsZSBub3cgdXNlcyBhcmdwYXJzZQorICBpbnN0ZWFkIG9mIG9wdHBhcnNlLgorCistIElzc3VlICMyNTUxMDogZmlsZWlucHV0LkZpbGVJbnB1dC5yZWFkbGluZSgpIG5vdyByZXR1cm5zIGInJyBpbnN0ZWFkIG9mICcnCisgIGF0IHRoZSBlbmQgaWYgdGhlIEZpbGVJbnB1dCB3YXMgb3BlbmVkIHdpdGggYmluYXJ5IG1vZGUuCisgIFBhdGNoIGJ5IFJ5b3N1a2UgSXRvLgorCistIElzc3VlICMyNTUwMzogRml4ZWQgaW5zcGVjdC5nZXRkb2MoKSBmb3IgaW5oZXJpdGVkIGRvY3N0cmluZ3Mgb2YgcHJvcGVydGllcy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgSm9obiBNYXJrIFZhbmRlbmJlcmcuCisKKy0gSXNzdWUgIzI1NTE1OiBBbHdheXMgdXNlIG9zLnVyYW5kb20gYXMgYSBzb3VyY2Ugb2YgcmFuZG9tbmVzcyBpbiB1dWlkLnV1aWQ0LgorCistIElzc3VlICMyMTgyNzogRml4ZWQgdGV4dHdyYXAuZGVkZW50KCkgZm9yIHRoZSBjYXNlIHdoZW4gbGFyZ2VzdCBjb21tb24KKyAgd2hpdGVzcGFjZSBpcyBhIHN1YnN0cmluZyBvZiBzbWFsbGVzdCBsZWFkaW5nIHdoaXRlc3BhY2UuCisgIEJhc2VkIG9uIHBhdGNoIGJ5IFJvYmVydCBMaS4KKworLSBJc3N1ZSAjMjU0NDc6IFRoZSBscnVfY2FjaGUoKSB3cmFwcGVyIG9iamVjdHMgbm93IGNhbiBiZSBjb3BpZWQgYW5kIHBpY2tsZWQKKyAgKGJ5IHJldHVybmluZyB0aGUgb3JpZ2luYWwgb2JqZWN0IHVuY2hhbmdlZCkuCisKKy0gSXNzdWUgIzI1MzkwOiB0eXBpbmc6IERvbid0IGNyYXNoIG9uIFVuaW9uW3N0ciwgUGF0dGVybl0uCisKKy0gSXNzdWUgIzI1NDQxOiBhc3luY2lvOiBSYWlzZSBlcnJvciBmcm9tIGRyYWluKCkgd2hlbiBzb2NrZXQgaXMgY2xvc2VkLgorCistIElzc3VlICMyNTQxMDogQ2xlYW5lZCB1cCBhbmQgZml4ZWQgbWlub3IgYnVncyBpbiBDIGltcGxlbWVudGF0aW9uIG9mCisgIE9yZGVyZWREaWN0LgorCistIElzc3VlICMyNTQxMTogSW1wcm92ZWQgVW5pY29kZSBzdXBwb3J0IGluIFNNVFBIYW5kbGVyIHRocm91Z2ggYmV0dGVyIHVzZSBvZgorICB0aGUgZW1haWwgcGFja2FnZS4gVGhhbmtzIHRvIHVzZXIgc2ltb24wNCBmb3IgdGhlIHBhdGNoLgorCistIE1vdmUgdGhlIGltcCBtb2R1bGUgZnJvbSBhIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgdG8gRGVwcmVjYXRpb25XYXJuaW5nLgorCistIElzc3VlICMyNTQwNzogUmVtb3ZlIG1lbnRpb25zIG9mIHRoZSBmb3JtYXR0ZXIgbW9kdWxlIGJlaW5nIHJlbW92ZWQgaW4KKyAgUHl0aG9uIDMuNi4KKworLSBJc3N1ZSAjMjU0MDY6IEZpeGVkIGEgYnVnIGluIEMgaW1wbGVtZW50YXRpb24gb2YgT3JkZXJlZERpY3QubW92ZV90b19lbmQoKQorICB0aGF0IGNhdXNlZCBzZWdtZW50YXRpb24gZmF1bHQgb3IgaGFuZyBpbiBpdGVyYXRpbmcgYWZ0ZXIgbW92aW5nIHNldmVyYWwKKyAgaXRlbXMgdG8gdGhlIHN0YXJ0IG9mIG9yZGVyZWQgZGljdC4KKworLSBJc3N1ZSAjMjUzODI6IHBpY2tsZXRvb2xzLmRpcygpIG5vdyBvdXRwdXRzIGltcGxpY2l0IG1lbW8gaW5kZXggZm9yIHRoZQorICBNRU1PSVpFIG9wY29kZS4KKworLSBJc3N1ZSAjMjUzNTc6IEFkZCBhbiBvcHRpb25hbCBuZXdsaW5lIHBhcmFtZXIgdG8gYmluYXNjaWkuYjJhX2Jhc2U2NCgpLgorICBiYXNlNjQuYjY0ZW5jb2RlKCkgdXNlcyBpdCB0byBhdm9pZCBhIG1lbW9yeSBjb3B5LgorCistIElzc3VlICMyNDE2NDogT2JqZWN0cyB0aGF0IG5lZWQgY2FsbGluZyBgYF9fbmV3X19gYCB3aXRoIGtleXdvcmQgYXJndW1lbnRzLAorICBjYW4gbm93IGJlIHBpY2tsZWQgdXNpbmcgcGlja2xlIHByb3RvY29scyBvbGRlciB0aGFuIHByb3RvY29sIHZlcnNpb24gNC4KKworLSBJc3N1ZSAjMjUzNjQ6IHppcGZpbGUgbm93IHdvcmtzIGluIHRocmVhZHMgZGlzYWJsZWQgYnVpbGRzLgorCistIElzc3VlICMyNTMyODogc210cGQncyBTTVRQQ2hhbm5lbCBub3cgY29ycmVjdGx5IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgYm90aAorICBkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGFyZSBzZXQgdG8gdHJ1ZS4KKworLSBJc3N1ZSAjMTYwOTk6IFJvYm90RmlsZVBhcnNlciBub3cgc3VwcG9ydHMgQ3Jhd2wtZGVsYXkgYW5kIFJlcXVlc3QtcmF0ZQorICBleHRlbnNpb25zLiAgUGF0Y2ggYnkgTmlrb2xheSBCb2dveWNoZXYuCisKKy0gSXNzdWUgIzI1MzE2OiBkaXN0dXRpbHMgcmFpc2VzIE9TRXJyb3IgaW5zdGVhZCBvZiBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yCisgIHdoZW4gTVNWQyBpcyBub3QgaW5zdGFsbGVkLgorCistIElzc3VlICMyNTM4MDogRml4ZWQgcHJvdG9jb2wgZm9yIHRoZSBTVEFDS19HTE9CQUwgb3Bjb2RlIGluCisgIHBpY2tsZXRvb2xzLm9wY29kZXMuCisKKy0gSXNzdWUgIzIzOTcyOiBVcGRhdGVzIGFzeW5jaW8gZGF0YWdyYW0gY3JlYXRlIG1ldGhvZCBhbGxvd2luZyByZXVzZXBvcnQKKyAgYW5kIHJldXNlYWRkciBzb2NrZXQgb3B0aW9ucyB0byBiZSBzZXQgcHJpb3IgdG8gYmluZGluZyB0aGUgc29ja2V0LgorICBNaXJyb3JpbmcgdGhlIGV4aXN0aW5nIGFzeW5jaW8gY3JlYXRlX3NlcnZlciBtZXRob2QgdGhlIHJldXNlYWRkciBvcHRpb24KKyAgZm9yIGRhdGFncmFtIHNvY2tldHMgZGVmYXVsdHMgdG8gVHJ1ZSBpZiB0aGUgTy9TIGlzICdwb3NpeCcgKGV4Y2VwdCBpZiB0aGUKKyAgcGxhdGZvcm0gaXMgQ3lnd2luKS4gUGF0Y2ggYnkgQ2hyaXMgTGF3cy4KKworLSBJc3N1ZSAjMjUzMDQ6IEFkZCBhc3luY2lvLnJ1bl9jb3JvdXRpbmVfdGhyZWFkc2FmZSgpLiAgVGhpcyBsZXRzIHlvdQorICBzdWJtaXQgYSBjb3JvdXRpbmUgdG8gYSBsb29wIGZyb20gYW5vdGhlciB0aHJlYWQsIHJldHVybmluZyBhCisgIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuICBCeSBWaW5jZW50IE1pY2hlbC4KKworLSBJc3N1ZSAjMjUyMzI6IEZpeCBDR0lSZXF1ZXN0SGFuZGxlciB0byBzcGxpdCB0aGUgcXVlcnkgZnJvbSB0aGUgVVJMIGF0IHRoZQorICBmaXJzdCBxdWVzdGlvbiBtYXJrICg/KSByYXRoZXIgdGhhbiB0aGUgbGFzdC4gUGF0Y2ggZnJvbSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjQ2NTc6IFByZXZlbnQgQ0dJUmVxdWVzdEhhbmRsZXIgZnJvbSBjb2xsYXBzaW5nIHNsYXNoZXMgaW4gdGhlCisgIHF1ZXJ5IHBhcnQgb2YgdGhlIFVSTCBhcyBpZiBpdCB3ZXJlIGEgcGF0aC4gUGF0Y2ggZnJvbSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjUyODc6IERvbid0IGFkZCBjcnlwdC5NRVRIT0RfQ1JZUFQgdG8gY3J5cHQubWV0aG9kcyBpZiBpdCdzIG5vdAorICBzdXBwb3J0ZWQuIENoZWNrIGlmIGl0IGlzIHN1cHBvcnRlZCwgaXQgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24gT3BlbkJTRCBmb3IKKyAgZXhhbXBsZS4KKworLSBJc3N1ZSAjMjM2MDA6IERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdHppbmZvLmZyb211dGMoKSB3YXMgcmV0dXJuaW5nCisgIHdyb25nIHJlc3VsdHMgaW4gc29tZSBjYXNlcy4KKworLSBJc3N1ZSAjMjUyMDM6IEZhaWxlZCByZWFkbGluZS5zZXRfY29tcGxldGVyX2RlbGltcygpIG5vIGxvbmdlciBsZWZ0IHRoZQorICBtb2R1bGUgaW4gaW5jb25zaXN0ZW50IHN0YXRlLgorCistIElzc3VlICMyNTAxMTogcmxjb21wbGV0ZXIgbm93IG9taXRzIHByaXZhdGUgYW5kIHNwZWNpYWwgYXR0cmlidXRlIG5hbWVzIHVubGVzcworICB0aGUgcHJlZml4IHN0YXJ0cyB3aXRoIHVuZGVyc2NvcmVzLgorCistIElzc3VlICMyNTIwOTogcmxjb21wbGV0ZXIgbm93IGNhbiBhZGQgYSBzcGFjZSBvciBhIGNvbG9uIGFmdGVyIGNvbXBsZXRlZAorICBrZXl3b3JkLgorCistIElzc3VlICMyMjI0MTogdGltZXpvbmUudXRjIG5hbWUgaXMgbm93IHBsYWluICdVVEMnLCBub3QgJ1VUQy0wMDowMCcuCisKKy0gSXNzdWUgIzIzNTE3OiBmcm9tdGltZXN0YW1wKCkgYW5kIHV0Y2Zyb210aW1lc3RhbXAoKSBtZXRob2RzIG9mCisgIGRhdGV0aW1lLmRhdGV0aW1lIG5vdyByb3VuZCBtaWNyb3NlY29uZHMgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG8KKyAgbmVhcmVzdCBldmVuIGludGVnZXIgKFJPVU5EX0hBTEZfRVZFTiksIGFzIHJvdW5kKGZsb2F0KSwgaW5zdGVhZCBvZiByb3VuZGluZworICB0b3dhcmRzIC1JbmZpbml0eSAoUk9VTkRfRkxPT1IpLgorCistIElzc3VlICMyMzU1MjogVGltZWl0IG5vdyB3YXJucyB3aGVuIHRoZXJlIGlzIHN1YnN0YW50aWFsICg0eCkgdmFyaWFuY2UKKyAgYmV0d2VlbiBiZXN0IGFuZCB3b3JzdCB0aW1lcy4gUGF0Y2ggZnJvbSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNDYzMzogc2l0ZS1wYWNrYWdlcy9SRUFETUUgLT4gUkVBRE1FLnR4dC4KKworLSBJc3N1ZSAjMjQ4Nzk6IGhlbHAoKSBhbmQgcHlkb2MgY2FuIG5vdyBsaXN0IG5hbWVkIHR1cGxlIGZpZWxkcyBpbiB0aGUKKyAgb3JkZXIgdGhleSB3ZXJlIGRlZmluZWQgcmF0aGVyIHRoYW4gYWxwaGFiZXRpY2FsbHkuICBUaGUgb3JkZXJpbmcgaXMKKyAgZGV0ZXJtaW5lZCBieSB0aGUgX2ZpZWxkcyBhdHRyaWJ1dGUgaWYgcHJlc2VudC4KKworLSBJc3N1ZSAjMjQ4NzQ6IEltcHJvdmUgc3BlZWQgb2YgaXRlcnRvb2xzLmN5Y2xlKCkgYW5kIG1ha2UgaXRzCisgIHBpY2tsZSBtb3JlIGNvbXBhY3QuCisKKy0gRml4IGNyYXNoIGluIGl0ZXJ0b29scy5jeWNsZS5fX3NldHN0YXRlX18oKSB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCB3YXNuJ3QKKyAgYSBsaXN0LgorCistIElzc3VlICMyMDA1OTogdXJsbGliLnBhcnNlIHJhaXNlcyBWYWx1ZUVycm9yIG9uIGFsbCBpbnZhbGlkIHBvcnRzLgorICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyNDM2MDogSW1wcm92ZSBfX3JlcHJfXyBvZiBhcmdwYXJzZS5OYW1lc3BhY2UoKSBmb3IgaW52YWxpZAorICBpZGVudGlmaWVycy4gIFBhdGNoIGJ5IE1hdHRoaWFzIEJ1c3Nvbm5pZXIuCisKKy0gSXNzdWUgIzIzNDI2OiBydW5fc2V0dXAgd2FzIGJyb2tlbiBpbiBkaXN0dXRpbHMuCisgIFBhdGNoIGZyb20gQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKy0gSXNzdWUgIzEzOTM4OiAydG8zIGNvbnZlcnRzIFN0cmluZ1R5cGVzIHRvIGEgdHVwbGUuIFBhdGNoIGZyb20gTWFyayBIYW1tb25kLgorCistIElzc3VlICMyMDkxOiBvcGVuKCkgYWNjZXB0ZWQgYSAnVScgbW9kZSBzdHJpbmcgY29udGFpbmluZyAnKycsIGJ1dCAnVScgY2FuCisgIG9ubHkgYmUgdXNlZCB3aXRoICdyJy4gUGF0Y2ggZnJvbSBKZWZmIEJhbG9naCBhbmQgSm9obiBPJ0Nvbm5vci4KKworLSBJc3N1ZSAjODU4NTogaW1wcm92ZWQgdGVzdHMgZm9yIHppcGltcG9ydGVyMi4gUGF0Y2ggZnJvbSBNYXJrIExhd3JlbmNlLgorCistIElzc3VlICMxODYyMjogdW5pdHRlc3QubW9jay5tb2NrX29wZW4oKS5yZXNldF9tb2NrIHdvdWxkIHJlY3Vyc2UgaW5maW5pdGVseS4KKyAgUGF0Y2ggZnJvbSBOaWNvbGEgUGFsdW1ibyBhbmQgTGF1cmVudCBEZSBCdXlzdC4KKworLSBJc3N1ZSAjMjQ0MjY6IEZhc3Qgc2VhcmNoaW5nIG9wdGltaXphdGlvbiBpbiByZWd1bGFyIGV4cHJlc3Npb25zIG5vdyB3b3JrcworICBmb3IgcGF0dGVybnMgdGhhdCBzdGFydHMgd2l0aCBjYXB0dXJpbmcgZ3JvdXBzLiAgRmFzdCBzZWFyY2hpbmcgb3B0aW1pemF0aW9uCisgIG5vdyBjYW4ndCBiZSBkaXNhYmxlZCBhdCBjb21waWxlIHRpbWUuCisKKy0gSXNzdWUgIzIzNjYxOiB1bml0dGVzdC5tb2NrIHNpZGVfZWZmZWN0cyBjYW4gbm93IGJlIGV4Y2VwdGlvbnMgYWdhaW4uIFRoaXMKKyAgd2FzIGEgcmVncmVzc2lvbiB2cyBQeXRob24gMy40LiBQYXRjaCBmcm9tIElnbmFjaW8gUm9zc2kKKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBkZXByZWNhdGVkIGluc3BlY3QuZ2V0bW9kdWxlaW5mbyBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMjU1Nzg6IEZpeCAoYW5vdGhlcikgbWVtb3J5IGxlYWsgaW4gU1NMU29ja2V0LmdldHBlZXJjZXIoKS4KKworLSBJc3N1ZSAjMjU1MzA6IERpc2FibGUgdGhlIHZ1bG5lcmFibGUgU1NMdjMgcHJvdG9jb2wgYnkgZGVmYXVsdCB3aGVuIGNyZWF0aW5nCisgIHNzbC5TU0xDb250ZXh0LgorCistIElzc3VlICMyNTU2OTogRml4IG1lbW9yeSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpLgorCistIElzc3VlICMyNTQ3MTogU29ja2V0cyByZXR1cm5lZCBmcm9tIGFjY2VwdCgpIHNob3VsZG4ndCBhcHBlYXIgdG8gYmUKKyAgbm9uYmxvY2tpbmcuCisKKy0gSXNzdWUgIzI1MzE5OiBXaGVuIHRocmVhZGluZy5FdmVudCBpcyByZWluaXRpYWxpemVkLCB0aGUgdW5kZXJseWluZyBjb25kaXRpb24KKyAgc2hvdWxkIHVzZSBhIHJlZ3VsYXIgbG9jayByYXRoZXIgdGhhbiBhIHJlY3Vyc2l2ZSBsb2NrLgorCiAtIFNraXAgZ2V0YWRkcmluZm8gaWYgaG9zdCBpcyBhbHJlYWR5IHJlc29sdmVkLgogICBQYXRjaCBieSBBLiBKZXNzZSBKaXJ5dSBEYXZpcy4KIApAQCAtMTAzNCw1MyArMjQ1Miw5IEBACiAKIC0gSXNzdWUgIzI3MDQxOiBhc3luY2lvOiBBZGQgbG9vcC5jcmVhdGVfZnV0dXJlIG1ldGhvZAogCi0tIElzc3VlICMyNzIyMzogYXN5bmNpbzogRml4IF9yZWFkX3JlYWR5IGFuZCBfd3JpdGVfcmVhZHkgdG8gcmVzcGVjdAotICBfY29ubl9sb3N0LgotICBQYXRjaCBieSDFgXVrYXN6IExhbmdhLgotCi0tIElzc3VlICMyMjk3MDogYXN5bmNpbzogRml4IGluY29uc2lzdGVuY3kgY2FuY2VsbGluZyBDb25kaXRpb24ud2FpdC4KLSAgUGF0Y2ggYnkgRGF2aWQgQ29sZXMuCi0KIElETEUKIC0tLS0KIAotLSBJc3N1ZSAjNTEyNDogUGFzdGUgd2l0aCB0ZXh0IHNlbGVjdGVkIG5vdyByZXBsYWNlcyB0aGUgc2VsZWN0aW9uIG9uIFgxMS4KLSAgVGhpcyBtYXRjaGVzIGhvdyBwYXN0ZSB3b3JrcyBvbiBXaW5kb3dzLCBNYWMsIG1vc3QgbW9kZXJuIExpbnV4IGFwcHMsCi0gIGFuZCB0dGsgd2lkZ2V0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzI0NzU5OiBNYWtlIGNsZWFyIGluIGlkbGVsaWIuaWRsZV90ZXN0Ll9faW5pdF9fIHRoYXQgdGhlIGRpcmVjdG9yeQotICBpcyBhIHByaXZhdGUgaW1wbGVtZW50YXRpb24gb2YgdGVzdC50ZXN0X2lkbGUgYW5kIHRvb2wgZm9yIG1haW50YWluZXJzLgotCi0tIElzc3VlICMyNzE5NjogU3RvcCAnVGhlbWVDaGFuZ2VkJyB3YXJuaW5ncyB3aGVuIHJ1bm5pbmcgSURMRSB0ZXN0cy4KLSAgVGhlc2UgcGVyc2lzdGVkIGFmdGVyIG90aGVyIHdhcm5pbmdzIHdlcmUgc3VwcHJlc3NlZCBpbiAjMjA1NjcuCi0gIEFwcGx5IFNlcmhpeSBTdG9yY2hha2EncyB1cGRhdGVfaWRsZXRhc2tzIHNvbHV0aW9uIHRvIGZvdXIgdGVzdCBmaWxlcy4KLSAgUmVjb3JkIHRoaXMgYWRkaXRpb25hbCBhZHZpY2UgaW4gaWRsZV90ZXN0L1JFQURNRS50eHQKLQotLSBJc3N1ZSAjMjA1Njc6IFJldmlzZSBpZGxlX3Rlc3QvUkVBRE1FLnR4dCB3aXRoIGFkdmljZSBhYm91dCBhdm9pZGluZwotICB0ayB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gdGVzdHMuICBBcHBseSBhZHZpY2UgdG8gc2V2ZXJhbCBJRExFIHRlc3RzLgotCi0tIElzc3VlICMyNzExNzogTWFrZSBjb2xvcml6ZXIgaHRlc3QgYW5kIHR1cnRsZWRlbW8gd29yayB3aXRoIGRhcmsgdGhlbWVzLgotICBNb3ZlIGNvZGUgZm9yIGNvbmZpZ3VyaW5nIHRleHQgd2lkZ2V0IGNvbG9ycyB0byBhIG5ldyBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMjY2NzM6IFdoZW4gdGsgcmVwb3J0cyBmb250IHNpemUgYXMgMCwgY2hhbmdlIHRvIHNpemUgMTAuCi0gIFN1Y2ggZm9udHMgb24gTGludXggcHJldmVudGVkIHRoZSBjb25maWd1cmF0aW9uIGRpYWxvZyBmcm9tIG9wZW5pbmcuCi0KLS0gSXNzdWUgIzIxOTM5OiBBZGQgdGVzdCBmb3IgSURMRSdzIHBlcmNvbGF0b3IuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KLQotLSBJc3N1ZSAjMjE2NzY6IEFkZCB0ZXN0IGZvciBJRExFJ3MgcmVwbGFjZSBkaWFsb2cuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KLQotLSBJc3N1ZSAjMTg0MTA6IEFkZCB0ZXN0IGZvciBJRExFJ3Mgc2VhcmNoIGRpYWxvZy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgV2VzdGxleSBNYXJ0w61uZXouCi0KLS0gSXNzdWUgIzIxNzAzOiBBZGQgdGVzdCBmb3IgSURMRSdzIHVuZG8gZGVsZWdhdG9yLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIgLgotCi0tIElzc3VlICMyNzA0NDogQWRkIENvbmZpZ0RpYWxvZy5yZW1vdmVfdmFyX2NhbGxiYWNrcyB0byBzdG9wIG1lbW9yeSBsZWFrcy4KLQotLSBJc3N1ZSAjMjM5Nzc6IEFkZCBtb3JlIGFzc2VydHMgdG8gdGVzdF9kZWxlZ2F0b3IuCi0KIC0gSXNzdWUgIzIwNjQwOiBBZGQgdGVzdHMgZm9yIGlkbGVsaWIuY29uZmlnSGVscFNvdXJjZUVkaXQuCiAgIFBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KIApAQCAtMTA5NCwxNCArMjQ2OCwxMDMgQEAKICAgTUFSSyBpbiBSRUFETUUudHh0IGFuZCBvcGVuIHRoaXMgYW5kIE5FV1MudHh0IHdpdGggJ2FzY2lpJy4KICAgUmUtZW5jb2RlIENSRURJVFMudHh0IHRvIHV0Zi04IGFuZCBvcGVuIGl0IHdpdGggJ3V0Zi04Jy4KIAorLSBJc3N1ZSAjMTUzNDg6IFN0b3AgdGhlIGRlYnVnZ2VyIGVuZ2luZSAobm9ybWFsbHkgaW4gYSB1c2VyIHByb2Nlc3MpCisgIGJlZm9yZSBjbG9zaW5nIHRoZSBkZWJ1Z2dlciB3aW5kb3cgKHJ1bm5pbmcgaW4gdGhlIElETEUgcHJvY2VzcykuCisgIFRoaXMgcHJldmVudHMgdGhlIFJ1bnRpbWVFcnJvcnMgdGhhdCB3ZXJlIGJlaW5nIGNhdWdodCBhbmQgaWdub3JlZC4KKworLSBJc3N1ZSAjMjQ0NTU6IFByZXZlbnQgSURMRSBmcm9tIGhhbmdpbmcgd2hlbiBhKSBjbG9zaW5nIHRoZSBzaGVsbCB3aGlsZSB0aGUKKyAgZGVidWdnZXIgaXMgYWN0aXZlICgxNTM0Nyk7IGIpIGNsb3NpbmcgdGhlIGRlYnVnZ2VyIHdpdGggdGhlIFtYXSBidXR0b24KKyAgKDE1MzQ4KTsgYW5kIGMpIGFjdGl2YXRpbmcgdGhlIGRlYnVnZ2VyIHdoZW4gYWxyZWFkeSBhY3RpdmUgKDI0NDU1KS4KKyAgVGhlIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbiBkb2VzIHRoaXMgYnkgbWFraW5nIHR3byBjaGFuZ2VzLgorICAxLiBTdXNwZW5kIGFuZCByZXN1bWUgdGhlIGd1aS5pbnRlcmFjdGlvbiBtZXRob2Qgd2l0aCB0aGUgdGNsIHZ3YWl0CisgIG1lY2hhbmlzbSBpbnRlbmRlZCBmb3IgdGhpcyBwdXJwb3NlIChpbnN0ZWFkIG9mIHJvb3QubWFpbmxvb3AgJiAucXVpdCkuCisgIDIuIEluIGd1aS5ydW4sIGFsbG93IGFueSBleGlzdGluZyBpbnRlcmFjdGlvbiB0byB0ZXJtaW5hdGUgZmlyc3QuCisKKy0gQ2hhbmdlICdUaGUgcHJvZ3JhbScgdG8gJ1lvdXIgcHJvZ3JhbScgaW4gYW4gSURMRSAna2lsbCBwcm9ncmFtPycgbWVzc2FnZQorICB0byBtYWtlIGl0IGNsZWFyZXIgdGhhdCB0aGUgcHJvZ3JhbSByZWZlcnJlZCB0byBpcyB0aGUgY3VycmVudGx5IHJ1bm5pbmcKKyAgdXNlciBwcm9ncmFtLCBub3QgSURMRSBpdHNlbGYuCisKKy0gSXNzdWUgIzI0NzUwOiBJbXByb3ZlIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBJRExFIGVkaXRvciB3aW5kb3cgc3RhdHVzIGJhci4KKyAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNTMxMzogQ2hhbmdlIHRoZSBoYW5kbGluZyBvZiBuZXcgYnVpbHQtaW4gdGV4dCBjb2xvciB0aGVtZXMgdG8gYmV0dGVyCisgIGFkZHJlc3MgdGhlIGNvbXBhdGliaWxpdHkgcHJvYmxlbSBpbnRyb2R1Y2VkIGJ5IHRoZSBhZGRpdGlvbiBvZiBJRExFIERhcmsuCisgIENvbnNpc3RlbnRseSB1c2UgdGhlIHJldmlzZWQgaWRsZUNvbmYuQ3VycmVudFRoZW1lIGV2ZXJ5d2hlcmUgaW4gaWRsZWxpYi4KKworLSBJc3N1ZSAjMjQ3ODI6IEV4dGVuc2lvbiBjb25maWd1cmF0aW9uIGlzIG5vdyBhIHRhYiBpbiB0aGUgSURMRSBQcmVmZXJlbmNlcworICBkaWFsb2cgcmF0aGVyIHRoYW4gYSBzZXBhcmF0ZSBkaWFsb2cuICBUaGUgZm9ybWVyIHRhYnMgYXJlIG5vdyBhIHNvcnRlZAorICBsaXN0LiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyMjcyNjogUmUtYWN0aXZhdGUgdGhlIGNvbmZpZyBkaWFsb2cgaGVscCBidXR0b24gd2l0aCBzb21lIGNvbnRlbnQKKyAgYWJvdXQgdGhlIG90aGVyIGJ1dHRvbnMgYW5kIHRoZSBuZXcgSURMRSBEYXJrIHRoZW1lLgorCistIElzc3VlICMyNDgyMDogSURMRSBub3cgaGFzIGFuICdJRExFIERhcmsnIGJ1aWx0LWluIHRleHQgY29sb3IgdGhlbWUuCisgIEl0IGlzIG1vcmUgb3IgbGVzcyBJRExFIENsYXNzaWMgaW52ZXJ0ZWQsIHdpdGggYSBjb2JhbHQgYmx1ZSBiYWNrZ3JvdW5kLgorICBTdHJpbmdzLCBjb21tZW50cywga2V5d29yZHMsIC4uLiBhcmUgc3RpbGwgZ3JlZW4sIHJlZCwgb3JhbmdlLCAuLi4gLgorICBUbyB1c2UgaXQgd2l0aCBJRExFcyByZWxlYXNlZCBiZWZvcmUgTm92ZW1iZXIgMjAxNSwgaGl0IHRoZQorICAnU2F2ZSBhcyBOZXcgQ3VzdG9tIFRoZW1lJyBidXR0b24gYW5kIGVudGVyIGEgbmV3IG5hbWUsCisgIHN1Y2ggYXMgJ0N1c3RvbSBEYXJrJy4gIFRoZSBjdXN0b20gdGhlbWUgd2lsbCB3b3JrIHdpdGggYW55IElETEUKKyAgcmVsZWFzZSwgYW5kIGNhbiBiZSBtb2RpZmllZC4KKworLSBJc3N1ZSAjMjUyMjQ6IFJFQURNRS50eHQgaXMgbm93IGFuIGlkbGVsaWIgaW5kZXggZm9yIElETEUgZGV2ZWxvcGVycyBhbmQKKyAgY3VyaW91cyB1c2Vycy4gIFRoZSBwcmV2aW91cyB1c2VyIGNvbnRlbnQgaXMgbm93IGluIHRoZSBJRExFIGRvYyBjaGFwdGVyLgorICAnSURMRScgbm93IG1lYW5zICdJbnRlZ3JhdGVkIERldmVsb3BtZW50IGFuZCBMZWFybmluZyBFbnZpcm9ubWVudCcuCisKKy0gSXNzdWUgIzI0ODIwOiBVc2VycyBjYW4gbm93IHNldCBicmVha3BvaW50IGNvbG9ycyBpbgorICBTZXR0aW5ncyAtPiBDdXN0b20gSGlnaGxpZ2h0aW5nLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNDk3MjogSW5hY3RpdmUgc2VsZWN0aW9uIGJhY2tncm91bmQgbm93IG1hdGNoZXMgYWN0aXZlIHNlbGVjdGlvbgorICBiYWNrZ3JvdW5kLCBhcyBjb25maWd1cmVkIGJ5IHVzZXJzLCBvbiBhbGwgc3lzdGVtcy4gIEZvdW5kIGl0ZW1zIGFyZSBub3cKKyAgYWx3YXlzIGhpZ2hsaWdodGVkIG9uIFdpbmRvd3MuICBJbml0aWFsIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ1NzA6IElkbGU6IG1ha2UgY2FsbHRpcCBhbmQgY29tcGxldGlvbiBib3hlcyBhcHBlYXIgb24gTWFjcworICBhZmZlY3RlZCBieSBhIHRrIHJlZ3Jlc3Npb24uICBJbml0aWFsIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ5ODg6IElkbGUgU2Nyb2xsZWRMaXN0IGNvbnRleHQgbWVudXMgKHVzZWQgaW4gZGVidWdnZXIpCisgIG5vdyB3b3JrIG9uIE1hYyBBcXVhLiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNDgwMTogTWFrZSByaWdodC1jbGljayBmb3IgY29udGV4dCBtZW51IHdvcmsgb24gTWFjIEFxdWEuCisgIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjUxNzM6IEFzc29jaWF0ZSB0a2ludGVyIG1lc3NhZ2Vib3hlcyB3aXRoIGEgc3BlY2lmaWMgd2lkZ2V0LgorICBGb3IgTWFjIE9TWCwgbWFrZSB0aGVtIGEgJ3NoZWV0Jy4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjUxOTg6IEVuaGFuY2UgdGhlIGluaXRpYWwgaHRtbCB2aWV3ZXIgbm93IHVzZWQgZm9yIElkbGUgSGVscC4KKyAgKiBQcm9wZXJseSBpbmRlbnQgZml4ZWQtcGl0Y2ggdGV4dCAocGF0Y2ggYnkgTWFyayBSb3NlbWFuKS4KKyAgKiBHaXZlIGNvZGUgc25pcHBldCBhIHZlcnkgU3BoaW54LWxpa2UgbGlnaHQgYmx1ZWlzaC1ncmF5IGJhY2tncm91bmQuCisgICogUmUtdXNlIGluaXRpYWwgd2lkdGggYW5kIGhlaWdodCBzZXQgYnkgdXNlcnMgZm9yIHNoZWxsIGFuZCBlZGl0b3IuCisgICogV2hlbiB0aGUgVGFibGUgb2YgQ29udGVudHMgKFRPQykgbWVudSBpcyB1c2VkLCBwdXQgdGhlIHNlY3Rpb24gaGVhZGVyCisgIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbi4KKworLSBJc3N1ZSAjMjUyMjU6IENvbmRlbnNlIGFuZCByZXdyaXRlIElkbGUgZG9jIHNlY3Rpb24gb24gdGV4dCBjb2xvcnMuCisKKy0gSXNzdWUgIzIxOTk1OiBFeHBsYWluIHNvbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiBJRExFIGFuZCBjb25zb2xlIFB5dGhvbi4KKworLSBJc3N1ZSAjMjI4MjA6IEV4cGxhaW4gbmVlZCBmb3IgKnByaW50KiB3aGVuIHJ1bm5pbmcgZmlsZSBmcm9tIElkbGUgZWRpdG9yLgorCistIElzc3VlICMyNTIyNDogRG9jOiBhdWdtZW50IElkbGUgZmVhdHVyZSBsaXN0IGFuZCBuby1zdWJwcm9jZXNzIHNlY3Rpb24uCisKKy0gSXNzdWUgIzI1MjE5OiBVcGRhdGUgZG9jIGZvciBJZGxlIGNvbW1hbmQgbGluZSBvcHRpb25zLgorICBTb21lIHdlcmUgbWlzc2luZyBhbmQgbm90ZXMgd2VyZSBub3QgY29ycmVjdC4KKworLSBJc3N1ZSAjMjQ4NjE6IE1vc3Qgb2YgaWRsZWxpYiBpcyBwcml2YXRlIGFuZCBzdWJqZWN0IHRvIGNoYW5nZS4KKyAgVXNlIGlkbGVpYi5pZGxlLiogdG8gc3RhcnQgSWRsZS4gU2VlIGlkbGVsaWIuX19pbml0X18uX19kb2NfXy4KKworLSBJc3N1ZSAjMjUxOTk6IElkbGU6IGFkZCBzeW5jaHJvbml6YXRpb24gY29tbWVudHMgZm9yIGZ1dHVyZSBtYWludGFpbmVycy4KKworLSBJc3N1ZSAjMTY4OTM6IFJlcGxhY2UgaGVscC50eHQgd2l0aCBoZWxwLmh0bWwgZm9yIElkbGUgZG9jIGRpc3BsYXkuCisgIFRoZSBuZXcgaWRsZWxpYi9oZWxwLmh0bWwgaXMgcnN0cmlwcGVkIERvYy9idWlsZC9odG1sL2xpYnJhcnkvaWRsZS5odG1sLgorICBJdCBsb29rcyBiZXR0ZXIgdGhhbiBoZWxwLnR4dCBhbmQgd2lsbCBiZXR0ZXIgZG9jdW1lbnQgSWRsZSBhcyByZWxlYXNlZC4KKyAgVGhlIHRraW50ZXIgaHRtbCB2aWV3ZXIgdGhhdCB3b3JrcyBmb3IgdGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IFJvc2UgUm9zZW1hbi4KKyAgVGhlIG5vdyB1bnVzZWQgRWRpdG9yV2luZG93LkhlbHBEaWFsb2cgY2xhc3MgYW5kIGhlbHQudHh0IGZpbGUgYXJlIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzI0MTk5OiBEZXByZWNhdGUgdW51c2VkIGlkbGVsaWIuaWRsZXZlciB3aXRoIHBvc3NpYmxlIHJlbW92YWwgaW4gMy42LgorCistIElzc3VlICMyNDc5MDogUmVtb3ZlIGV4dHJhbmVvdXMgY29kZSAod2hpY2ggYWxzbyBjcmVhdGUgMiAmIDMgY29uZmxpY3RzKS4KKwogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxOTQ4OTogTW92ZWQgdGhlIHNlYXJjaCBib3ggZnJvbSB0aGUgc2lkZWJhciB0byB0aGUgaGVhZGVyIGFuZCBmb290ZXIKLSAgb2YgZWFjaCBwYWdlLiAgUGF0Y2ggYnkgQW1tYXIgQXNrYXIuCi0KLS0gSXNzdWUgIzI0MTM2OiBEb2N1bWVudCB0aGUgbmV3IFBFUCA0NDggdW5wYWNraW5nIHN5bnRheCBvZiAzLjUuCi0KIC0gSXNzdWUgIzI2NzM2OiBVc2VkIEhUVFBTIGZvciBleHRlcm5hbCBsaW5rcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBpZiBwb3NzaWJsZS4KIAogLSBJc3N1ZSAjNjk1MzogUmV3b3JrIHRoZSBSZWFkbGluZSBtb2R1bGUgZG9jdW1lbnRhdGlvbiB0byBncm91cCByZWxhdGVkCkBAIC0xMTEwLDggKzI1NzMsOCBAQAogCiAtIElzc3VlICMyMzYwNjogQWRkcyBub3RlIHRvIGN0eXBlcyBkb2N1bWVudGF0aW9uIHJlZ2FyZGluZyBjZGxsLm1zdmNydC4KIAotLSBJc3N1ZSAjMjU1MDA6IEZpeCBkb2N1bWVudGF0aW9uIHRvIG5vdCBjbGFpbSB0aGF0IF9faW1wb3J0X18gaXMgc2VhcmNoZWQgZm9yCi0gIGluIHRoZSBnbG9iYWwgc2NvcGUuCistIElzc3VlICMyNDk1MjogQ2xhcmlmeSB0aGUgZGVmYXVsdCBzaXplIGFyZ3VtZW50IG9mIHN0YWNrX3NpemUoKSBpbgorICB0aGUgInRocmVhZGluZyIgYW5kICJfdGhyZWFkIiBtb2R1bGVzLiBQYXRjaCBmcm9tIE1hdHRpcC4KIAogLSBJc3N1ZSAjMjYwMTQ6IFVwZGF0ZSAzLnggcGFja2FnaW5nIGRvY3VtZW50YXRpb246CiAgICogIlNlZSBhbHNvIiBsaW5rcyB0byB0aGUgbmV3IGRvY3MgYXJlIG5vdyBwcm92aWRlZCBpbiB0aGUgbGVnYWN5IHBhZ2VzCkBAIC0xMTIzLDYgKzI1ODYsOSBAQAogLSBJc3N1ZSAjMjE5MTY6IEFkZGVkIHRlc3RzIGZvciB0aGUgdHVydGxlIG1vZHVsZS4gIFBhdGNoIGJ5IGluZ3JpZCwKICAgR3JlZ29yeSBMb3lzZSBhbmQgSmVsbGUgWmlqbHN0cmEuCiAKKy0gSXNzdWUgIzI2Mjk1OiBXaGVuIHVzaW5nICJweXRob24zIC1tIHRlc3QgLS10ZXN0ZGlyPVRFU1RESVIiLCByZWdydGVzdAorICBkb2Vzbid0IGFkZCAidGVzdC4iIHByZWZpeCB0byB0ZXN0IG1vZHVsZSBuYW1lcy4KKwogLSBJc3N1ZSAjMjY1MjM6IFRoZSBtdWx0aXByb2Nlc3NpbmcgdGhyZWFkIHBvb2wgKG11bHRpcHJvY2Vzc2luZy5kdW1teS5Qb29sKQogICB3YXMgdW50ZXN0ZWQuCiAKQEAgLTExMzEsMzEgKzI1OTcsNTAgQEAKIC0gSXNzdWUgIzI2MzI1OiBBZGRlZCB0ZXN0LnN1cHBvcnQuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZygpIHRvIGNoZWNrIHRoYXQKICAgbm8gUmVzb3VyY2VXYXJuaW5nIGlzIGVtaXR0ZWQuCiAKLS0gSXNzdWUgIzI1OTQwOiBDaGFuZ2VkIHRlc3Rfc3NsIHRvIHVzZSBzZWxmLXNpZ25lZC5weXRob250ZXN0Lm5ldC4gIFRoaXMKKy0gSXNzdWUgIzI1OTQwOiBDaGFuZ2VkIHRlc3Rfc3NsIHRvIHVzZSBpdHMgaW50ZXJuYWwgbG9jYWwgc2VydmVyIG1vcmUuICBUaGlzCiAgIGF2b2lkcyByZWx5aW5nIG9uIHN2bi5weXRob24ub3JnLCB3aGljaCByZWNlbnRseSBjaGFuZ2VkIHJvb3QgY2VydGlmaWNhdGUuCiAKIC0gSXNzdWUgIzI1NjE2OiBUZXN0cyBmb3IgT3JkZXJlZERpY3QgYXJlIGV4dHJhY3RlZCBmcm9tIHRlc3RfY29sbGVjdGlvbnMKICAgaW50byBzZXBhcmF0ZSBmaWxlIHRlc3Rfb3JkZXJlZF9kaWN0LgogCistIElzc3VlICMyNTQ0OTogQWRkZWQgdGVzdHMgZm9yIE9yZGVyZWREaWN0IHN1YmNsYXNzZXMuCisKKy0gSXNzdWUgIzI1MTg4OiBBZGQgLVAvLS1wZ28gdG8gdGVzdC5yZWdydGVzdCB0byBzdXBwcmVzcyBlcnJvciBvdXRwdXQgd2hlbgorICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlIGZvciB0aGUgcHVycG9zZXMgb2YgYSBQR08gYnVpbGQuIEluaXRpYWwgcGF0Y2ggYnkKKyAgQWxlY3NhbmRydSBQYXRyYXNjdS4KKworLSBJc3N1ZSAjMjI4MDY6IEFkZCBgYHB5dGhvbiAtbSB0ZXN0IC0tbGlzdC10ZXN0c2BgIGNvbW1hbmQgdG8gbGlzdCB0ZXN0cy4KKworLSBJc3N1ZSAjMTgxNzQ6IGBgcHl0aG9uIC1tIHRlc3QgLS1odW50cmxlYWtzIC4uLmBgIG5vdyBhbHNvIGNoZWNrcyBmb3IgbGVhayBvZgorICBmaWxlIGRlc2NyaXB0b3JzLiBQYXRjaCB3cml0dGVuIGJ5IFJpY2hhcmQgT3Vka2Vyay4KKworLSBJc3N1ZSAjMjUyNjA6IEZpeCBgYHB5dGhvbiAtbSB0ZXN0IC0tY292ZXJhZ2VgYCBvbiBXaW5kb3dzLiBSZW1vdmUgdGhlCisgIGxpc3Qgb2YgaWdub3JlZCBkaXJlY3Rvcmllcy4KKworLSBgYFBDYnVpbGRccnQuYmF0YGAgbm93IGFjY2VwdHMgYW4gdW5saW1pdGVkIG51bWJlciBvZiBhcmd1bWVudHMgdG8gcGFzcyBhbG9uZworICB0byByZWdydGVzdC5weS4gIFByZXZpb3VzbHkgdGhlcmUgd2FzIGEgbGltaXQgb2YgOS4KKwogLSBJc3N1ZSAjMjY1ODM6IFNraXAgdGVzdF90aW1lc3RhbXBfb3ZlcmZsb3cgaW4gdGVzdF9pbXBvcnQgaWYgYnl0ZWNvZGUKICAgZmlsZXMgY2Fubm90IGJlIHdyaXR0ZW4uCiAKIEJ1aWxkCiAtLS0tLQogCistIElzc3VlICMyMTI3NzogRG9uJ3QgdHJ5IHRvIGxpbmsgX2N0eXBlcyB3aXRoIGEgZmZpX2NvbnZlbmllbmNlIGxpYnJhcnkuCisKIC0gSXNzdWUgIzI2ODg0OiBGaXggbGlua2luZyBleHRlbnNpb24gbW9kdWxlcyBmb3IgY3Jvc3MgYnVpbGRzLgogICBQYXRjaCBieSBYYXZpZXIgZGUgR2F5ZS4KIAorLSBJc3N1ZSAjMjY5MzI6IEZpeGVkIHN1cHBvcnQgb2YgUlRMRF8qIGNvbnN0YW50cyBkZWZpbmVkIGFzIGVudW0gdmFsdWVzLAorICBub3QgdmlhIG1hY3JvcyAoaW4gcGFydGljdWxhciBvbiBBbmRyb2lkKS4gIFBhdGNoIGJ5IENoaSBIc3VhbiBZZW4uCisKIC0gSXNzdWUgIzIyMzU5OiBEaXNhYmxlIHRoZSBydWxlcyBmb3IgcnVubmluZyBfZnJlZXplX2ltcG9ydGxpYiBhbmQgcGdlbiB3aGVuCiAgIGNyb3NzLWNvbXBpbGluZy4gIFRoZSBvdXRwdXQgb2YgdGhlc2UgcHJvZ3JhbXMgaXMgbm9ybWFsbHkgc2F2ZWQgd2l0aCB0aGUKICAgc291cmNlIGNvZGUgYW55d2F5LCBhbmQgaXMgc3RpbGwgcmVnZW5lcmF0ZWQgd2hlbiBkb2luZyBhIG5hdGl2ZSBidWlsZC4KICAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKLS0gSXNzdWUgIzI3MjI5OiBGaXggdGhlIGNyb3NzLWNvbXBpbGluZyBwZ2VuIHJ1bGUgZm9yIGluLXRyZWUgYnVpbGRzLiAgUGF0Y2gKLSAgYnkgWGF2aWVyIGRlIEdheWUuCi0KIC0gSXNzdWUgIzIxNjY4OiBMaW5rIGF1ZGlvb3AsIF9kYXRldGltZSwgX2N0eXBlc190ZXN0IG1vZHVsZXMgdG8gbGlibSwKLSAgZXhjZXB0IG9uIE1hYyBPUyBYLiBQYXRjaCB3cml0dGVuIGJ5IFhhdmllciBkZSBHYXllLgorICBleGNlcHQgb24gTWFjIE9TIFguIFBhdGNoIHdyaXR0ZW4gYnkgQ2hpIEhzdWFuIFllbi4KIAogLSBJc3N1ZSAjMjU3MDI6IEEgLS13aXRoLWx0byBjb25maWd1cmUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRoYXQgd2lsbAogICBlbmFibGUgbGluayB0aW1lIG9wdGltaXphdGlvbnMgYXQgYnVpbGQgdGltZSBkdXJpbmcgYSBtYWtlIHByb2ZpbGUtb3B0LgpAQCAtMTE3NCwyMiArMjY1OSwyNCBAQAogCiAtIElzc3VlICMyNjQ2NTogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yZy4KIAotLSBJc3N1ZSAjMjQ0MjE6IENvbXBpbGUgTW9kdWxlcy9fbWF0aC5jIG9uY2UsIGJlZm9yZSBidWlsZGluZyBleHRlbnNpb25zLgotICBQcmV2aW91c2x5IGl0IGNvdWxkIGZhaWwgdG8gY29tcGlsZSBwcm9wZXJseSBpZiB0aGUgbWF0aCBhbmQgY21hdGggYnVpbGRzCi0gIHdlcmUgY29uY3VycmVudC4KLQogLSBJc3N1ZSAjMjUzNDg6IEFkZGVkIGBgLS1wZ29gYCBhbmQgYGAtLXBnby1qb2JgYCBhcmd1bWVudHMgdG8KICAgYGBQQ2J1aWxkXGJ1aWxkLmJhdGBgIGZvciBidWlsZGluZyB3aXRoIFByb2ZpbGUtR3VpZGVkIE9wdGltaXphdGlvbi4gIFRoZQotICBvbGQgYGBQQ2J1aWxkXGJ1aWxkX3Bnby5iYXRgYCBzY3JpcHQgaXMgbm93IGRlcHJlY2F0ZWQsIGFuZCBzaW1wbHkgY2FsbHMKLSAgYGBQQ2J1aWxkXGJ1aWxkLmJhdCAtLXBnbyAlKmBgLgorICBvbGQgYGBQQ2J1aWxkXGJ1aWxkX3Bnby5iYXRgYCBzY3JpcHQgaXMgcmVtb3ZlZC4KIAogLSBJc3N1ZSAjMjU4Mjc6IEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyB3aXRoIElDQyB0byBgYGNvbmZpZ3VyZWBgLCBpbmNsdWRpbmcKICAgYSBuZXcgYGAtLXdpdGgtaWNjYGAgZmxhZy4KIAogLSBJc3N1ZSAjMjU2OTY6IEZpeCBpbnN0YWxsYXRpb24gb2YgUHl0aG9uIG9uIFVOSVggd2l0aCBtYWtlIC1qOS4KIAotLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBPUyBYIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlciB0byBidWlsZAotICBhbmQgbGluayB3aXRoIE9wZW5TU0wgMS4wLjJoLgorLSBJc3N1ZSAjMjQ5ODY6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byBidWlsZCBQeXRob24gb24gV2luZG93cyB3aXRob3V0IGVycm9ycworICB3aGVuIGV4dGVybmFsIGxpYnJhcmllcyBhcmUgbm90IGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMjQ0MjE6IENvbXBpbGUgTW9kdWxlcy9fbWF0aC5jIG9uY2UsIGJlZm9yZSBidWlsZGluZyBleHRlbnNpb25zLgorICBQcmV2aW91c2x5IGl0IGNvdWxkIGZhaWwgdG8gY29tcGlsZSBwcm9wZXJseSBpZiB0aGUgbWF0aCBhbmQgY21hdGggYnVpbGRzCisgIHdlcmUgY29uY3VycmVudC4KKworLSBJc3N1ZSAjMjY0NjU6IFVwZGF0ZSBPUyBYIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlciB0byBidWlsZAorICBhbmQgbGluayB3aXRoIE9wZW5TU0wgMS4wLjJnLgogCiAtIElzc3VlICMyNjI2ODogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yZi4KIApAQCAtMTIxNiw2ICsyNzAzLDggQEAKIC0gSXNzdWUgIzI2MDY1OiBFeGNsdWRlcyB2ZW52IGZyb20gbGlicmFyeSB3aGVuIGdlbmVyYXRpbmcgZW1iZWRkYWJsZQogICBkaXN0cm8uCiAKKy0gSXNzdWUgIzI1MDIyOiBSZW1vdmVkIHZlcnkgb3V0ZGF0ZWQgUEMvZXhhbXBsZV9udC8gZGlyZWN0b3J5LgorCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIApAQCAtMTIzMiwxMSArMjcyMSwyMSBAQAogCiAtIElzc3VlICMyNjMxNjogRml4IHZhcmlhYmxlIG5hbWUgdHlwbyBpbiBBcmd1bWVudCBDbGluaWMuCiAKLU1pc2MKLS0tLS0KKy0gSXNzdWUgIzI1NDQwOiBGaXggb3V0cHV0IG9mIHB5dGhvbi1jb25maWcgLS1leHRlbnNpb24tc3VmZml4LgogCi0tIElzc3VlICMxNzUwMCwgYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vcHl0aG9uZG90b3JnL2lzc3Vlcy85NDU6IFJlbW92ZQotICB1bnVzZWQgYW5kIG91dGRhdGVkIGljb25zLgorLSBJc3N1ZSAjMjUxNTQ6IFRoZSBweXZlbnYgc2NyaXB0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mCisgIGBweXRob24zIC1tIHZlbnZgLgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjYzMTI6IFN5c3RlbUVycm9yIGlzIG5vdyByYWlzZWQgaW4gYWxsIHByb2dyYW1taW5nIGJ1Z3Mgd2l0aCB1c2luZworICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKS4gIFJ1bnRpbWVFcnJvciBkaWQgcmFpc2VkIGJlZm9yZSBpbiBzb21lCisgIHByb2dyYW1taW5nIGJ1Z3MuCisKKy0gSXNzdWUgIzI2MTk4OiBWYWx1ZUVycm9yIGlzIG5vdyByYWlzZWQgaW5zdGVhZCBvZiBUeXBlRXJyb3Igb24gYnVmZmVyCisgIG92ZXJmbG93IGluIHBhcnNpbmcgImVzIyIgYW5kICJldCMiIGZvcm1hdCB1bml0cy4gIFN5c3RlbUVycm9yIGlzIG5vdyByYWlzZWQKKyAgaW5zdGVhZCBvZiBUeXBlRXJyb3Igb24gcHJvZ3JhbW1pY2FsIGVycm9yIGluIHBhcnNpbmcgZm9ybWF0IHN0cmluZy4KIAogCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMSBmaW5hbD8KQEAgLTE1NDgsNyArMzA0Nyw3IEBACiAtIElzc3VlICMyNDc3NDogRml4IGRvY3N0cmluZyBpbiBodHRwLnNlcnZlci50ZXN0LiBQYXRjaCBmcm9tIENoaXUtSHNpYW5nIEhzdS4KIAogLSBJc3N1ZSAjMjExNTk6IEltcHJvdmUgbWVzc2FnZSBpbiBjb25maWdwYXJzZXIuSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvci4KLSAgUGF0Y2ggZnJvbSDFgXVrYXN6IExhbmdhLgorICBQYXRjaCBmcm9tIO+/vT91a2FzeiBMYW5nYS4KIAogLSBJc3N1ZSAjMjAzNjI6IEhvbm91ciBUZXN0Q2FzZS5sb25nTWVzc2FnZSBjb3JyZWN0bHkgaW4gYXNzZXJ0UmVnZXguCiAgIFBhdGNoIGZyb20gSWxpYSBLdXJlbmtvdi4KQEAgLTE2NTgsOSArMzE1Nyw2IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzIyNTU4OiBBZGQgcmVtYWluaW5nIGRvYyBsaW5rcyB0byBzb3VyY2UgY29kZSBmb3IgUHl0aG9uLWNvZGVkIG1vZHVsZXMuCi0gIFBhdGNoIGJ5IFlvbmkgTGF2aS4KLQogLSBJc3N1ZSAjMTIwNjc6IFJld3JpdGUgQ29tcGFyaXNvbnMgc2VjdGlvbiBpbiB0aGUgRXhwcmVzc2lvbnMgY2hhcHRlciBvZiB0aGUKICAgbGFuZ3VhZ2UgcmVmZXJlbmNlLiBTb21lIG9mIHRoZSBkZXRhaWxzIG9mIGNvbXBhcmluZyBtaXhlZCB0eXBlcyB3ZXJlCiAgIGluY29ycmVjdCBvciBhbWJpZ3VvdXMuIE5vdEltcGxlbWVudGVkIGlzIG9ubHkgcmVsZXZhbnQgYXQgYSBsb3dlciBsZXZlbApAQCAtMTk5MCwxMiArMzQ4Niw2IEBACiAKIC0gSXNzdWUgIzI0NjMxOiBGaXhlZCByZWdyZXNzaW9uIGluIHRoZSB0aW1laXQgbW9kdWxlIHdpdGggbXVsdGlsaW5lIHNldHVwLgogCi0tIElzc3VlICMxODYyMjogdW5pdHRlc3QubW9jay5tb2NrX29wZW4oKS5yZXNldF9tb2NrIHdvdWxkIHJlY3Vyc2UgaW5maW5pdGVseS4KLSAgUGF0Y2ggZnJvbSBOaWNvbGEgUGFsdW1ibyBhbmQgTGF1cmVudCBEZSBCdXlzdC4KLQotLSBJc3N1ZSAjMjM2NjE6IHVuaXR0ZXN0Lm1vY2sgc2lkZV9lZmZlY3RzIGNhbiBub3cgYmUgZXhjZXB0aW9ucyBhZ2Fpbi4gVGhpcwotICB3YXMgYSByZWdyZXNzaW9uIHZzIFB5dGhvbiAzLjQuIFBhdGNoIGZyb20gSWduYWNpbyBSb3NzaQotCiAtIElzc3VlICMyNDYwODogY2h1bmsuQ2h1bmsucmVhZCgpIG5vdyBhbHdheXMgcmV0dXJucyBieXRlcywgbm90IHN0ci4KIAogLSBJc3N1ZSAjMTg2ODQ6IEZpeGVkIHJlYWRpbmcgb3V0IG9mIHRoZSBidWZmZXIgaW4gdGhlIHJlIG1vZHVsZS4KQEAgLTIwMDYsNiArMzQ5Niw5IEBACiAtIElzc3VlICMxNTAxNDogU01UUC5hdXRoKCkgYW5kIFNNVFAubG9naW4oKSBub3cgc3VwcG9ydCBSRkMgNDk1NCdzIG9wdGlvbmFsCiAgIGluaXRpYWwtcmVzcG9uc2UgYXJndW1lbnQgdG8gdGhlIFNNVFAgQVVUSCBjb21tYW5kLgogCistIElzc3VlICM2NTQ5OiBSZW1vdmUgaHlwaGVuIGZyb20gdHRrLlN0eWxlKCkuZWxlbWVudCBvcHRpb25zLiAgT25seSByZXR1cm4gcmVzdWx0CisgIGZyb20gdHRrLlN0eWxlKCkuY29uZmlndXJlIGlmIGEgcmVzdWx0IHdhcyBnZW5lcmF0ZWQgb3IgYSBxdWVyeSBzdWJtaXR0ZWQuCisKIC0gSXNzdWUgIzI0NjY5OiBGaXggaW5zcGVjdC5nZXRzb3VyY2UoKSBmb3IgJ2FzeW5jIGRlZicgZnVuY3Rpb25zLgogICBQYXRjaCBieSBLYWkgR3JvbmVyLgogCkBAIC0yMDE3LDcgKzM1MTAsNiBAQAogLSBJc3N1ZSAjMjQ2MDM6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyBhbmQgT1MgWCAxMC41IGluc3RhbGxlciB0byB1c2UgT3BlblNTTAogICAxLjAuMmQuCiAKLQogV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYmV0YSAzPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC0yMTc4LDYgKzM2NzAsOSBAQAogLSBJc3N1ZSAjMjQyNjg6IFBFUCA0ODk6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCiAgIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCiAKKy0gSXNzdWUgIzIzMzU5OiBPcHRpbWl6ZSBzZXQgb2JqZWN0IGludGVybmFscyBieSBzcGVjaWFsaXppbmcgdGhlCisgIGhhc2ggdGFibGUgc2VhcmNoIGludG8gYSBsb29rdXAgZnVuY3Rpb24gYW5kIGFuIGluc2VydCBmdW5jdGlvbi4KKwogLSBJc3N1ZSAjMjM5NTU6IEFkZCBweXZlbnYuY2ZnIG9wdGlvbiB0byBzdXBwcmVzcyByZWdpc3RyeS9lbnZpcm9ubWVudAogICBsb29rdXAgZm9yIGdlbmVyYXRpbmcgc3lzLnBhdGggb24gV2luZG93cy4KIApAQCAtMjI5OCw4ICszNzkzLDggQEAKIC0gSXNzdWUgIzEzMjI6IHBsYXRmb3JtLmRpc3QoKSBhbmQgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZQogICBub3cgZGVwcmVjYXRlZC4gIEluaXRpYWwgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgogCi0tIElzc3VlICMyMjQ4NjogQWRkZWQgdGhlIG1hdGguZ2NkKCkgZnVuY3Rpb24uICBUaGUgZnJhY3Rpb25zLmdjZCgpIGZ1bmN0aW9uCi0gIG5vdyBpcyBkZXByZWNhdGVkLiAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBEaWNraW5zb24uCistIElzc3VlICMyMjQ4NjogQWRkZWQgdGhlIG1hdGguZ2NkKCkgZnVuY3Rpb24uICBUaGUgZnJhY3Rpb25zLmdjZCgpIGZ1bmN0aW9uIG5vdyBpcworICBkZXByZWNhdGVkLiAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBEaWNraW5zb24uCiAKIC0gSXNzdWUgIzI0MDY0OiBQcm9wZXJ0eSgpIGRvY3N0cmluZ3MgYXJlIG5vdyB3cml0ZWFibGUuCiAgIChQYXRjaCBieSBCZXJrZXIgUGVrc2FnLikKQEAgLTI3MjAsOCArNDIxNSw4IEBACiAgIHdyaXRlciBmYWlsZWQgaW4gQnVmZmVyZWRSV1BhaXIuY2xvc2UoKS4KIAogLSBJc3N1ZSAjMjM2MjI6IFVua25vd24gZXNjYXBlcyBpbiByZWd1bGFyIGV4cHJlc3Npb25zIHRoYXQgY29uc2lzdCBvZiBgYCdcJ2BgCi0gIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4KLSAgUHl0aG9uIDMuNi4KKyAgYW5kIGFuIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbgorICBpbiBQeXRob24gMy42LgogCiAtIElzc3VlICMyMzY3MTogc3RyaW5nLlRlbXBsYXRlIG5vdyBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgInNlbGYiIHBhcmFtZXRlciBhcwogICBhIGtleXdvcmQgYXJndW1lbnQuICBzdHJpbmcuRm9ybWF0dGVyIG5vdyBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgInNlbGYiIGFuZApAQCAtMzQ4MCw3ICs0OTc1LDcgQEAKICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAogLSBJc3N1ZSAjMTcyOTM6IHV1aWQuZ2V0bm9kZSgpIG5vdyBkZXRlcm1pbmVzIE1BQyBhZGRyZXNzIG9uIEFJWCB1c2luZyBuZXRzdGF0LgotICBCYXNlZCBvbiBwYXRjaCBieSBBaXZhcnMgS2FsdsSBbnMuCisgIEJhc2VkIG9uIHBhdGNoIGJ5IEFpdmFycyBLYWx277+9P25zLgogCiAtIElzc3VlICMyMjc2OTogRml4ZWQgdHRrLlRyZWV2aWV3LnRhZ19oYXMoKSB3aGVuIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cy4KIApAQCAtNTg4Niw2ICs3MzgxLDkgQEAKIAogLSBJc3N1ZSAjMTkzNjk6IE9wdGltaXplZCB0aGUgdXNhZ2Ugb2YgX19sZW5ndGhfaGludF9fKCkuCiAKKy0gSXNzdWUgIzI4MDI2OiBSYWlzZSBJbXBvcnRFcnJvciB3aGVuIGV4ZWNfbW9kdWxlKCkgZXhpc3RzIGJ1dAorICBjcmVhdGVfbW9kdWxlKCkgaXMgbWlzc2luZy4KKwogLSBJc3N1ZSAjMTg2MDM6IEVuc3VyZSB0aGF0IFB5T1NfbXlzdHJpY21wIGFuZCBQeU9TX215c3RybmljbXAgYXJlIGluIHRoZQogICBQeXRob24gZXhlY3V0YWJsZSBhbmQgbm90IHJlbW92ZWQgYnkgdGhlIGxpbmtlcidzIG9wdGltaXplci4KIApAQCAtNjc3Myw2ICs4MjcxLDkgQEAKIC0gSXNzdWUgIzE2ODA5OiBUa2ludGVyJ3Mgc3BsaXRsaXN0KCkgYW5kIHNwbGl0KCkgbWV0aG9kcyBub3cgYWNjZXB0IFRjbF9PYmoKICAgYXJndW1lbnQuCiAKKy0gSXNzdWUgIzE3MjExOiBZaWVsZCBhIG5hbWVkdHVwbGUgaW4gcGtndXRpbC4KKyAgUGF0Y2ggYnkgUmFtY2hhbmRyYSBBcHRlLgorCiAtIElzc3VlICMxODMyNDogc2V0X3BheWxvYWQgbm93IGNvcnJlY3RseSBoYW5kbGVzIGJpbmFyeSBpbnB1dC4gIFRoaXMgYWxzbwogICBzdXBlcnNlZGVzIHRoZSBwcmV2aW91cyBmaXhlcyBmb3IgIzE0MzYwLCAjMTcxNywgYW5kICMxNjU2NC4KIApAQCAtNjc4Miw2ICs4MjgzLDggQEAKIC0gSXNzdWUgIzE3MTE5OiBGaXhlZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIHByb2Nlc3NpbmcgbGFyZ2Ugc3RyaW5ncyBhbmQgdHVwbGVzCiAgIGluIHRoZSB0a2ludGVyIG1vZHVsZS4KIAorLSBJc3N1ZSAjMTUzNTI6IFJlYnVpbGQgZnJvemVuIG1vZHVsZXMgd2hlbiBtYXJzaGFsLmMgaXMgY2hhbmdlZC4KKwogLSBJc3N1ZSAjMTg3NDc6IFJlLXNlZWQgT3BlblNTTCdzIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBhZnRlciBmb3JrLgogICBBIHB0aHJlYWRfYXRmb3JrKCkgcGFyZW50IGhhbmRsZXIgaXMgdXNlZCB0byBzZWVkIHRoZSBQUk5HIHdpdGggcGlkLCB0aW1lCiAgIGFuZCBzb21lIHN0YWNrIGRhdGEuCkBAIC02OTg5LDYgKzg0OTIsOSBAQAogLSBJc3N1ZSAjMTgxMzc6IERldGVjdCBpbnRlZ2VyIG92ZXJmbG93IG9uIHByZWNpc2lvbiBpbiBmbG9hdC5fX2Zvcm1hdF9fKCkKICAgYW5kIGNvbXBsZXguX19mb3JtYXRfXygpLgogCistIElzc3VlICMxNTc2NzogSW50cm9kdWNlIE1vZHVsZU5vdEZvdW5kRXJyb3Igd2hpY2ggaXMgcmFpc2VkIHdoZW4gYSBtb2R1bGUKKyAgY291bGQgbm90IGJlIGZvdW5kLgorCiAtIElzc3VlICMxODE4MzogRml4IHZhcmlvdXMgdW5pY29kZSBvcGVyYXRpb25zIG9uIHN0cmluZ3Mgd2l0aCBsYXJnZSB1bmljb2RlCiAgIGNvZGVwb2ludHMuCiAKQEAgLTg5MDksNiArMTA0MTUsMTAgQEAKICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgKGFuZCB0aHVzIGJ5IGV4dGVuc2lvbgogICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZSgpIGFuZCBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KCkpLgogCistIElzc3VlICMxNTc2NzogQWRkZWQgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcygpLgorCistIFB5RXJyX1NldEltcG9ydEVycm9yKCkgbm93IHNldHMgVHlwZUVycm9yIHdoZW4gaXRzIG1zZyBhcmd1bWVudCBpcyBzZXQuCisKIC0gSXNzdWUgIzkzNjk6IFRoZSB0eXBlcyBvZiBgY2hhcipgIGFyZ3VtZW50cyBvZiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKSBhbmQKICAgUHlPYmplY3RfQ2FsbE1ldGhvZCgpIG5vdyBjaGFuZ2VkIHRvIGBjb25zdCBjaGFyKmAuICBCYXNlZCBvbiBwYXRjaGVzIGJ5CiAgIErDtnJnIE3DvGxsZXIgYW5kIExhcnMgQnVpdGluY2suCmRpZmYgLS1naXQgYS9NaXNjL1JFQURNRS52YWxncmluZCBiL01pc2MvUkVBRE1FLnZhbGdyaW5kCmluZGV4IGI1YTlhMzIuLjkwOGYxMzcgMTAwNjQ0Ci0tLSBhL01pc2MvUkVBRE1FLnZhbGdyaW5kCisrKyBiL01pc2MvUkVBRE1FLnZhbGdyaW5kCkBAIC0yLDYgKzIsOSBAQAogUHl0aG9uLiAgVmFsZ3JpbmQgaXMgdXNlZCBwZXJpb2RpY2FsbHkgYnkgUHl0aG9uIGRldmVsb3BlcnMgdG8gdHJ5CiB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1lbW9yeSBsZWFrcyBvciBpbnZhbGlkIG1lbW9yeSByZWFkcy93cml0ZXMuCiAKK1VQREFURTogUHl0aG9uIDMuNiBub3cgc3VwcG9ydHMgUFlUSE9OTUFMTE9DPW1hbGxvYyBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGljaAorY2FuIGJlIHVzZWQgdG8gZm9yY2UgdGhlIHVzYWdlIG9mIHRoZSBtYWxsb2MoKSBhbGxvY2F0b3Igb2YgdGhlIEMgbGlicmFyeS4KKwogSWYgeW91IGRvbid0IHdhbnQgdG8gcmVhZCBhYm91dCB0aGUgZGV0YWlscyBvZiB1c2luZyBWYWxncmluZCwgdGhlcmUKIGFyZSBzdGlsbCB0d28gdGhpbmdzIHlvdSBtdXN0IGRvIHRvIHN1cHByZXNzIHRoZSB3YXJuaW5ncy4gIEZpcnN0LAogeW91IG11c3QgdXNlIGEgc3VwcHJlc3Npb25zIGZpbGUuICBPbmUgaXMgc3VwcGxpZWQgaW4KZGlmZiAtLWdpdCBhL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQgYi9NaXNjL1NwZWNpYWxCdWlsZHMudHh0CmluZGV4IDMwMDQxNzQuLjgyZmEyM2UgMTAwNjQ0Ci0tLSBhL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQKKysrIGIvTWlzYy9TcGVjaWFsQnVpbGRzLnR4dApAQCAtNjUsOSArNjUsOSBAQAogICAgIHNpbXBseSBieSB2aXJ0dWUgb2YgYmVpbmcgaW4gdGhlIGxpc3QuCiAKIGVudnZhciBQWVRIT05EVU1QUkVGUwotICAgIElmIHRoaXMgZW52dmFyIGV4aXN0cywgUHlfRmluYWxpemUoKSBhcnJhbmdlcyB0byBwcmludCBhIGxpc3Qgb2YgYWxsCisgICAgSWYgdGhpcyBlbnZ2YXIgZXhpc3RzLCBQeV9GaW5hbGl6ZUV4KCkgYXJyYW5nZXMgdG8gcHJpbnQgYSBsaXN0IG9mIGFsbAogICAgIHN0aWxsLWxpdmUgaGVhcCBvYmplY3RzLiAgVGhpcyBpcyBwcmludGVkIHR3aWNlLCBpbiBkaWZmZXJlbnQgZm9ybWF0cywKLSAgICBiZWZvcmUgYW5kIGFmdGVyIFB5X0ZpbmFsaXplIGhhcyBjbGVhbmVkIHVwIGV2ZXJ5dGhpbmcgaXQgY2FuIGNsZWFuIHVwLiAgVGhlCisgICAgYmVmb3JlIGFuZCBhZnRlciBQeV9GaW5hbGl6ZUV4IGhhcyBjbGVhbmVkIHVwIGV2ZXJ5dGhpbmcgaXQgY2FuIGNsZWFuIHVwLiAgVGhlCiAgICAgZmlyc3Qgb3V0cHV0IGJsb2NrIHByb2R1Y2VzIHRoZSByZXByKCkgb2YgZWFjaCBvYmplY3Qgc28gaXMgbW9yZQogICAgIGluZm9ybWF0aXZlOyBob3dldmVyLCBhIGxvdCBvZiBzdHVmZiBkZXN0aW5lZCB0byBkaWUgaXMgc3RpbGwgYWxpdmUgdGhlbi4KICAgICBUaGUgc2Vjb25kIG91dHB1dCBibG9jayBpcyBtdWNoIGhhcmRlciB0byB3b3JrIHdpdGggKHJlcHIoKSBjYW4ndCBiZSBpbnZva2VkCkBAIC0xNDQsNyArMTQ0LDcgQEAKIAogZW52dmFyIFBZVEhPTk1BTExPQ1NUQVRTCiAgICAgSWYgdGhpcyBlbnZ2YXIgZXhpc3RzLCBhIHJlcG9ydCBvZiBweW1hbGxvYyBzdW1tYXJ5IHN0YXRpc3RpY3MgaXMgcHJpbnRlZCB0bwotICAgIHN0ZGVyciB3aGVuZXZlciBhIG5ldyBhcmVuYSBpcyBhbGxvY2F0ZWQsIGFuZCBhbHNvIGJ5IFB5X0ZpbmFsaXplKCkuCisgICAgc3RkZXJyIHdoZW5ldmVyIGEgbmV3IGFyZW5hIGlzIGFsbG9jYXRlZCwgYW5kIGFsc28gYnkgUHlfRmluYWxpemVFeCgpLgogCiBDaGFuZ2VkIGluIDIuNTogIFRoZSBudW1iZXIgb2YgZXh0cmEgYnl0ZXMgYWxsb2NhdGVkIGlzIDQqc2l6ZW9mKHNpemVfdCkuCiBCZWZvcmUgaXQgd2FzIDE2IG9uIGFsbCBib3hlcywgcmVmbGVjdGluZyB0aGF0IFB5dGhvbiBjb3VsZG4ndCBtYWtlIHVzZSBvZgpAQCAtMTc5LDcgKzE3OSw3IEBACiAgICAgICovCiAgICAgaW50IHRwX21heGFsbG9jOwogCi1BbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gY29kZSBrZWVwcyB0aGVzZSBjb3VudHMgdXAgdG8gZGF0ZS4gIFB5X0ZpbmFsaXplKCkKK0FsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIGtlZXBzIHRoZXNlIGNvdW50cyB1cCB0byBkYXRlLiAgUHlfRmluYWxpemVFeCgpCiBkaXNwbGF5cyBhIHN1bW1hcnkgb2YgdGhlIGluZm8gcmV0dXJuZWQgYnkgc3lzLmdldGNvdW50cygpIChzZWUgYmVsb3cpLCBhbG9uZwogd2l0aCBhc3NvcnRlZCBvdGhlciBzcGVjaWFsIGFsbG9jYXRpb24gY291bnRzIChsaWtlIHRoZSBudW1iZXIgb2YgdHVwbGUKIGFsbG9jYXRpb25zIHNhdGlzZmllZCBieSBhIHR1cGxlIGZyZWUtbGlzdCwgdGhlIG51bWJlciBvZiAxLWNoYXJhY3RlciBzdHJpbmdzCkBAIC0yMzQsMjkgKzIzNCwzIEBACiBudW1iZXIgb2YgZnVuY3Rpb24gY2FsbHMgbWFkZS4gIEl0IGtlZXBzIGRldGFpbGVkIHN0YXRpc3RpY3MgYWJvdXQgd2hhdCBraW5kIG9mCiBvYmplY3Qgd2FzIGNhbGxlZCBhbmQgd2hldGhlciB0aGUgY2FsbCBoaXQgYW55IG9mIHRoZSBzcGVjaWFsIGZhc3QgcGF0aHMgaW4gdGhlCiBjb2RlLgotCi0KLVdJVEhfVFNDCi0tLS0tLS0tLQotCi1TdXBlci1sb3dsZXZlbCBwcm9maWxpbmcgb2YgdGhlIGludGVycHJldGVyLiAgV2hlbiBlbmFibGVkLCB0aGUgc3lzIG1vZHVsZSBncm93cwotYSBuZXcgZnVuY3Rpb246Ci0KLXNldHRzY2R1bXAoYm9vbCkKLSAgICBJZiB0cnVlLCB0ZWxsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgdG8gZHVtcCBWTSBtZWFzdXJlbWVudHMgdG8gc3RkZXJyLiAgSWYKLSAgICBmYWxzZSwgdHVybiBvZmYgZHVtcC4gIFRoZSBtZWFzdXJlbWVudHMgYXJlIGJhc2VkIG9uIHRoZSBwcm9jZXNzb3IncwotICAgIHRpbWUtc3RhbXAgY291bnRlci4KLQotVGhpcyBidWlsZCBvcHRpb24gcmVxdWlyZXMgYSBzbWFsbCBhbW91bnQgb2YgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gIEN1cnJlbnRseQotdGhpcyBjb2RlIGlzIHByZXNlbnQgZm9yIGxpbnV4L3g4NiBhbmQgYW55IFBvd2VyUEMgcGxhdGZvcm0gdGhhdCB1c2VzIEdDQwotKGkuZS4gT1MgWCBhbmQgbGludXgvcHBjKS4KLQotT24gdGhlIFBvd2VyUEMgdGhlIHJhdGUgYXQgd2hpY2ggdGhlIHRpbWUgYmFzZSByZWdpc3RlciBpcyBpbmNyZW1lbnRlZCBpcyBub3QKLWRlZmluZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2F0aW9uLCBzbyB5b3UnbGwgbmVlZCB0byBmaW5kIHRoZSBtYW51YWwgZm9yCi15b3VyIHNwZWNpZmljIHByb2Nlc3Nvci4gIEZvciB0aGUgNzUwQ1gsIDc1MENYZSBhbmQgNzUwRlggKGFsbCBzb2xkIGFzIHRoZSBHMykKLXdlIGZpbmQ6Ci0KLSAgICBUaGUgdGltZSBiYXNlIGNvdW50ZXIgaXMgY2xvY2tlZCBhdCBhIGZyZXF1ZW5jeSB0aGF0IGlzIG9uZS1mb3VydGggdGhhdCBvZgotICAgIHRoZSBidXMgY2xvY2suCi0KLVRoaXMgYnVpbGQgaXMgZW5hYmxlZCBieSB0aGUgLS13aXRoLXRzYyBmbGFnIHRvIGNvbmZpZ3VyZS4KZGlmZiAtLWdpdCBhL01pc2MvY292ZXJpdHlfbW9kZWwuYyBiL01pc2MvY292ZXJpdHlfbW9kZWwuYwppbmRleCA3NDlmMmYwLi4xYWU2MTc5IDEwMDY0NAotLS0gYS9NaXNjL2NvdmVyaXR5X21vZGVsLmMKKysrIGIvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCkBAIC0yMiw3ICsyMiw2IEBACiAjZGVmaW5lIGFzc2VydChvcCkgLyogZW1wdHkgKi8KIHR5cGVkZWYgaW50IHNkaWdpdDsKIHR5cGVkZWYgbG9uZyBQeV9zc2l6ZV90OwotdHlwZWRlZiBsb25nIGxvbmcgUFlfTE9OR19MT05HOwogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB3Y2hhcl90OwogdHlwZWRlZiBzdHJ1Y3Qge30gUHlPYmplY3Q7CiB0eXBlZGVmIHN0cnVjdCB7fSBncmFtbWFyOwpAQCAtNjMsNyArNjIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5TG9uZ19Gcm9tTG9uZ0xvbmcoUFlfTE9OR19MT05HIGl2YWwpCitQeU9iamVjdCAqUHlMb25nX0Zyb21Mb25nTG9uZyhsb25nIGxvbmcgaXZhbCkKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWl2YWwpOwogfQpAQCAtOTQsNyArOTMsNyBAQAogfQogCiAvKiBQYXJzZXIvcGdlbm1haW4uYyAqLwotZ3JhbW1hciAqZ2V0Z3JhbW1hcihjaGFyICpmaWxlbmFtZSkKK2dyYW1tYXIgKmdldGdyYW1tYXIoY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAgICAgZ3JhbW1hciAqZzsKICAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zaW5rX18oZmlsZW5hbWUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4gYi9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgppbmRleCBhZGFjMDMwLi42NDUwNTI4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgorKysgYi9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgpAQCAtNiw4ICs2LDUgQEAKICMgVGhyZWFkaW5nCiBAVVNFX1RIUkVBRF9NT0RVTEVAX3RocmVhZCBfdGhyZWFkbW9kdWxlLmMKIAotIyBUaGUgc2lnbmFsIG1vZHVsZQotQFVTRV9TSUdOQUxfTU9EVUxFQF9zaWduYWwgc2lnbmFsbW9kdWxlLmMKLQogIyBUaGUgcmVzdCBvZiB0aGUgbW9kdWxlcyBwcmV2aW91c2x5IGxpc3RlZCBpbiB0aGlzIGZpbGUgYXJlIGJ1aWx0CiAjIGJ5IHRoZSBzZXR1cC5weSBzY3JpcHQgaW4gUHl0aG9uIDIuMSBhbmQgbGF0ZXIuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmRpc3QgYi9Nb2R1bGVzL1NldHVwLmRpc3QKaW5kZXggMDZiYTZhZC4uZTE3ZmYxMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9TZXR1cC5kaXN0CisrKyBiL01vZHVsZXMvU2V0dXAuZGlzdApAQCAtMTE3LDYgKzExNyw3IEBACiBfY29sbGVjdGlvbnMgX2NvbGxlY3Rpb25zbW9kdWxlLmMgIyBDb250YWluZXIgdHlwZXMKIGl0ZXJ0b29scyBpdGVydG9vbHNtb2R1bGUuYyAgICAjIEZ1bmN0aW9ucyBjcmVhdGluZyBpdGVyYXRvcnMgZm9yIGVmZmljaWVudCBsb29waW5nCiBhdGV4aXQgYXRleGl0bW9kdWxlLmMgICAgICAjIFJlZ2lzdGVyIGZ1bmN0aW9ucyB0byBiZSBydW4gYXQgaW50ZXJwcmV0ZXItc2h1dGRvd24KK19zaWduYWwgc2lnbmFsbW9kdWxlLmMKIF9zdGF0IF9zdGF0LmMJCQkjIHN0YXQuaCBpbnRlcmZhY2UKIHRpbWUgdGltZW1vZHVsZS5jCSMgLWxtICMgdGltZSBvcGVyYXRpb25zIGFuZCB2YXJpYWJsZXMKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMgYi9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYwppbmRleCAwMmI1NWQxLi4yMmRkYmYyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYwpAQCAtMTIsNyArMTIsOCBAQAogaW50ZXJuYWxfYmlzZWN0X3JpZ2h0KFB5T2JqZWN0ICpsaXN0LCBQeU9iamVjdCAqaXRlbSwgUHlfc3NpemVfdCBsbywgUHlfc3NpemVfdCBoaSkKIHsKICAgICBQeU9iamVjdCAqbGl0ZW07Ci0gICAgUHlfc3NpemVfdCBtaWQsIHJlczsKKyAgICBQeV9zc2l6ZV90IG1pZDsKKyAgICBpbnQgcmVzOwogCiAgICAgaWYgKGxvIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImxvIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CkBAIC0xMTUsNyArMTE2LDggQEAKIGludGVybmFsX2Jpc2VjdF9sZWZ0KFB5T2JqZWN0ICpsaXN0LCBQeU9iamVjdCAqaXRlbSwgUHlfc3NpemVfdCBsbywgUHlfc3NpemVfdCBoaSkKIHsKICAgICBQeU9iamVjdCAqbGl0ZW07Ci0gICAgUHlfc3NpemVfdCBtaWQsIHJlczsKKyAgICBQeV9zc2l6ZV90IG1pZDsKKyAgICBpbnQgcmVzOwogCiAgICAgaWYgKGxvIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImxvIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5IGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmIycy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wMWNmMjY1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmIycy5weQpAQCAtMCwwICsxLDQ5IEBACisjIS91c3IvYmluL3B5dGhvbjMKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKKworSEVSRSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorQkxBS0UyID0gb3MucGF0aC5qb2luKEhFUkUsICdpbXBsJykKKworUFVCTElDX1NFQVJDSCA9IHJlLmNvbXBpbGUocidcIGludCAoYmxha2UyW2JzXXA/W2Etel9dKilcKCcpCisKKworZGVmIGdldGZpbGVzKCk6CisgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihCTEFLRTIpOgorICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKEJMQUtFMiwgbmFtZSkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobmFtZSk6CisgICAgICAgICAgICB5aWVsZCBuYW1lCisKKworZGVmIGZpbmRfcHVibGljKCk6CisgICAgcHVibGljX2Z1bmNzID0gc2V0KCkKKyAgICBmb3IgbmFtZSBpbiBnZXRmaWxlcygpOgorICAgICAgICB3aXRoIG9wZW4obmFtZSkgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgIyBmaW5kIHB1YmxpYyBmdW5jdGlvbnMKKyAgICAgICAgICAgICAgICBtbyA9IFBVQkxJQ19TRUFSQ0guc2VhcmNoKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbW86CisgICAgICAgICAgICAgICAgICAgIHB1YmxpY19mdW5jcy5hZGQobW8uZ3JvdXAoMSkpCisKKyAgICBmb3IgZiBpbiBzb3J0ZWQocHVibGljX2Z1bmNzKToKKyAgICAgICAgcHJpbnQoJyNkZWZpbmUgezA6PDE4fSBQeUJsYWtlMl97MH0nLmZvcm1hdChmKSkKKworICAgIHJldHVybiBwdWJsaWNfZnVuY3MKKworCitkZWYgbWFpbigpOgorICAgIGxpbmVzID0gW10KKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKEhFUkUsICdibGFrZTJiX2ltcGwuYycpKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnYmxha2UyYicsICdibGFrZTJzJykKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ0JMQUtFMmInLCAnQkxBS0UycycpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdCTEFLRTJCJywgJ0JMQUtFMlMnKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihIRVJFLCAnYmxha2Uyc19pbXBsLmMnKSwgJ3cnKSBhcyBmOgorICAgICAgICBmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICMgZmluZF9wdWJsaWMoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYl9pbXBsLmMgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYl9pbXBsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThiNTAyYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiX2ltcGwuYwpAQCAtMCwwICsxLDQ2MCBAQAorLyoKKyAqIFdyaXR0ZW4gaW4gMjAxMyBieSBEbWl0cnkgQ2hlc3RueWtoIDxkbWl0cnlAY29kaW5ncm9ib3RzLmNvbT4KKyAqIE1vZGlmaWVkIGZvciBDUHl0aG9uIGJ5IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorICoKKyAqIFRvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgYXV0aG9yIGhhdmUgZGVkaWNhdGVkIGFsbAorICogY29weXJpZ2h0IGFuZCByZWxhdGVkIGFuZCBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhpcyBzb2Z0d2FyZSB0bworICogdGhlIHB1YmxpYyBkb21haW4gd29ybGR3aWRlLiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIHdpdGhvdXQKKyAqIGFueSB3YXJyYW50eS4gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworICovCisKKy8qIFdBUk5JTkc6IGF1dG9nZW5lcmF0ZWQgZmlsZSEKKyAqCisgKiBUaGUgYmxha2Uyc19pbXBsLmMgaXMgYXV0b2dlbmVyYXRlZCBmcm9tIGJsYWtlMmJfaW1wbC5jLgorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgorI2lmZGVmIFdJVEhfVEhSRUFECisjaW5jbHVkZSAicHl0aHJlYWQuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiLi4vaGFzaGxpYi5oIgorI2luY2x1ZGUgImJsYWtlMm5zLmgiCisKKyNkZWZpbmUgSEFWRV9CTEFLRTJCIDEKKyNkZWZpbmUgQkxBS0UyX0xPQ0FMX0lOTElORSh0eXBlKSBQeV9MT0NBTF9JTkxJTkUodHlwZSkKKworI2luY2x1ZGUgImltcGwvYmxha2UyLmgiCisjaW5jbHVkZSAiaW1wbC9ibGFrZTItaW1wbC5oIiAvKiBmb3Igc2VjdXJlX3plcm9fbWVtb3J5KCkgYW5kIHN0b3JlNDgoKSAqLworCisjaWZkZWYgQkxBS0UyX1VTRV9TU0UKKyNpbmNsdWRlICJpbXBsL2JsYWtlMmIuYyIKKyNlbHNlCisjaW5jbHVkZSAiaW1wbC9ibGFrZTJiLXJlZi5jIgorI2VuZGlmCisKKworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUJsYWtlMl9CTEFLRTJiVHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBibGFrZTJiX3BhcmFtICAgIHBhcmFtOworICAgIGJsYWtlMmJfc3RhdGUgICAgc3RhdGU7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKyNlbmRpZgorfSBCTEFLRTJiT2JqZWN0OworCisjaW5jbHVkZSAiY2xpbmljL2JsYWtlMmJfaW1wbC5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfYmxha2UyYgorY2xhc3MgX2JsYWtlMmIuYmxha2UyYiAiQkxBS0UyYk9iamVjdCAqIiAiJlB5Qmxha2UyX0JMQUtFMmJUeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9Njg5MzM1OGM2NjIyYWVjZl0qLworCisKK3N0YXRpYyBCTEFLRTJiT2JqZWN0ICoKK25ld19CTEFLRTJiT2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBCTEFLRTJiT2JqZWN0ICpzZWxmOworICAgIHNlbGYgPSAoQkxBS0UyYk9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYgIT0gTlVMTCkgeworICAgICAgICBzZWxmLT5sb2NrID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gc2VsZjsKK30KKworLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitfYmxha2UyYi5ibGFrZTJiLl9fbmV3X18gYXMgcHlfYmxha2UyYl9uZXcKKyAgICBzdHJpbmcgYXMgZGF0YTogb2JqZWN0ID0gTlVMTAorICAgICoKKyAgICBkaWdlc3Rfc2l6ZTogaW50KGNfZGVmYXVsdD0iQkxBS0UyQl9PVVRCWVRFUyIpID0gX2JsYWtlMmIuYmxha2UyYi5NQVhfRElHRVNUX1NJWkUKKyAgICBrZXk6IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBzYWx0OiBQeV9idWZmZXIgPSBOb25lCisgICAgcGVyc29uOiBQeV9idWZmZXIgPSBOb25lCisgICAgZmFub3V0OiBpbnQgPSAxCisgICAgZGVwdGg6IGludCA9IDEKKyAgICBsZWFmX3NpemUgYXMgbGVhZl9zaXplX29iajogb2JqZWN0ID0gTlVMTAorICAgIG5vZGVfb2Zmc2V0IGFzIG5vZGVfb2Zmc2V0X29iajogb2JqZWN0ID0gTlVMTAorICAgIG5vZGVfZGVwdGg6IGludCA9IDAKKyAgICBpbm5lcl9zaXplOiBpbnQgPSAwCisgICAgbGFzdF9ub2RlOiBib29sID0gRmFsc2UKKworUmV0dXJuIGEgbmV3IEJMQUtFMmIgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJiX25ld19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmRhdGEsIGludCBkaWdlc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICprZXksIFB5X2J1ZmZlciAqc2FsdCwgUHlfYnVmZmVyICpwZXJzb24sCisgICAgICAgICAgICAgICAgICAgIGludCBmYW5vdXQsIGludCBkZXB0aCwgUHlPYmplY3QgKmxlYWZfc2l6ZV9vYmosCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpub2RlX29mZnNldF9vYmosIGludCBub2RlX2RlcHRoLAorICAgICAgICAgICAgICAgICAgICBpbnQgaW5uZXJfc2l6ZSwgaW50IGxhc3Rfbm9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NTA2ZDhkODkwZTVmMTNiIGlucHV0PWU0MTU0OGRmYTA4NjYwMzFdKi8KK3sKKyAgICBCTEFLRTJiT2JqZWN0ICpzZWxmID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmOworCisgICAgdW5zaWduZWQgbG9uZyBsZWFmX3NpemUgPSAwOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBub2RlX29mZnNldCA9IDA7CisKKyAgICBzZWxmID0gbmV3X0JMQUtFMmJPYmplY3QodHlwZSk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIFplcm8gcGFyYW1ldGVyIGJsb2NrLiAqLworICAgIG1lbXNldCgmc2VsZi0+cGFyYW0sIDAsIHNpemVvZihzZWxmLT5wYXJhbSkpOworCisgICAgLyogU2V0IGRpZ2VzdCBzaXplLiAqLworICAgIGlmIChkaWdlc3Rfc2l6ZSA8PSAwIHx8IGRpZ2VzdF9zaXplID4gQkxBS0UyQl9PVVRCWVRFUykgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZGlnZXN0X3NpemUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kICVkIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJCX09VVEJZVEVTKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCA9IGRpZ2VzdF9zaXplOworCisgICAgLyogU2V0IHNhbHQgcGFyYW1ldGVyLiAqLworICAgIGlmICgoc2FsdC0+b2JqICE9IE5VTEwpICYmIHNhbHQtPmxlbikgeworICAgICAgICBpZiAoc2FsdC0+bGVuID4gQkxBS0UyQl9TQUxUQllURVMpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtYXhpbXVtIHNhbHQgbGVuZ3RoIGlzICVkIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJCX1NBTFRCWVRFUyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIG1lbWNweShzZWxmLT5wYXJhbS5zYWx0LCBzYWx0LT5idWYsIHNhbHQtPmxlbik7CisgICAgfQorCisgICAgLyogU2V0IHBlcnNvbmFsaXphdGlvbiBwYXJhbWV0ZXIuICovCisgICAgaWYgKChwZXJzb24tPm9iaiAhPSBOVUxMKSAmJiBwZXJzb24tPmxlbikgeworICAgICAgICBpZiAocGVyc29uLT5sZW4gPiBCTEFLRTJCX1BFUlNPTkFMQllURVMpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtYXhpbXVtIHBlcnNvbiBsZW5ndGggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMkJfUEVSU09OQUxCWVRFUyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIG1lbWNweShzZWxmLT5wYXJhbS5wZXJzb25hbCwgcGVyc29uLT5idWYsIHBlcnNvbi0+bGVuKTsKKyAgICB9CisKKyAgICAvKiBTZXQgdHJlZSBwYXJhbWV0ZXJzLiAqLworICAgIGlmIChmYW5vdXQgPCAwIHx8IGZhbm91dCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZmFub3V0IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNTUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0uZmFub3V0ID0gKHVpbnQ4X3QpZmFub3V0OworCisgICAgaWYgKGRlcHRoIDw9IDAgfHwgZGVwdGggPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImRlcHRoIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyNTUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0uZGVwdGggPSAodWludDhfdClkZXB0aDsKKworICAgIGlmIChsZWFmX3NpemVfb2JqICE9IE5VTEwpIHsKKyAgICAgICAgbGVhZl9zaXplID0gUHlMb25nX0FzVW5zaWduZWRMb25nKGxlYWZfc2l6ZV9vYmopOworICAgICAgICBpZiAobGVhZl9zaXplID09ICh1bnNpZ25lZCBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChsZWFmX3NpemUgPiAweEZGRkZGRkZGVSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJsZWFmX3NpemUgaXMgdG9vIGxhcmdlIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmxlYWZfbGVuZ3RoID0gKHVuc2lnbmVkIGludClsZWFmX3NpemU7CisKKyAgICBpZiAobm9kZV9vZmZzZXRfb2JqICE9IE5VTEwpIHsKKyAgICAgICAgbm9kZV9vZmZzZXQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG5vZGVfb2Zmc2V0X29iaik7CisgICAgICAgIGlmIChub2RlX29mZnNldCA9PSAodW5zaWduZWQgbG9uZyBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorI2lmZGVmIEhBVkVfQkxBS0UyUworICAgIGlmIChub2RlX29mZnNldCA+IDB4RkZGRkZGRkZGRkZGVUxMKSB7CisgICAgICAgIC8qIG1heGltdW0gMioqNDggLSAxICovCisgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm5vZGVfb2Zmc2V0IGlzIHRvbyBsYXJnZSIpOworICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgfQorICAgIHN0b3JlNDgoJihzZWxmLT5wYXJhbS5ub2RlX29mZnNldCksIG5vZGVfb2Zmc2V0KTsKKyNlbHNlCisgICAgc2VsZi0+cGFyYW0ubm9kZV9vZmZzZXQgPSBub2RlX29mZnNldDsKKyNlbmRpZgorCisgICAgaWYgKG5vZGVfZGVwdGggPCAwIHx8IG5vZGVfZGVwdGggPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm5vZGVfZGVwdGggbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI1NSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5ub2RlX2RlcHRoID0gbm9kZV9kZXB0aDsKKworICAgIGlmIChpbm5lcl9zaXplIDwgMCB8fCBpbm5lcl9zaXplID4gQkxBS0UyQl9PVVRCWVRFUykgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiaW5uZXJfc2l6ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgaXMgJWQiLAorICAgICAgICAgICAgICAgIEJMQUtFMkJfT1VUQllURVMpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5pbm5lcl9sZW5ndGggPSBpbm5lcl9zaXplOworCisgICAgLyogU2V0IGtleSBsZW5ndGguICovCisgICAgaWYgKChrZXktPm9iaiAhPSBOVUxMKSAmJiBrZXktPmxlbikgeworICAgICAgICBpZiAoa2V5LT5sZW4gPiBCTEFLRTJCX0tFWUJZVEVTKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWF4aW11bSBrZXkgbGVuZ3RoIGlzICVkIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJCX0tFWUJZVEVTKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgc2VsZi0+cGFyYW0ua2V5X2xlbmd0aCA9ICh1aW50OF90KWtleS0+bGVuOworICAgIH0KKworICAgIC8qIEluaXRpYWxpemUgaGFzaCBzdGF0ZS4gKi8KKyAgICBpZiAoYmxha2UyYl9pbml0X3BhcmFtKCZzZWxmLT5zdGF0ZSwgJnNlbGYtPnBhcmFtKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZXJyb3IgaW5pdGlhbGl6aW5nIGhhc2ggc3RhdGUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBTZXQgbGFzdCBub2RlIGZsYWcgKG11c3QgY29tZSBhZnRlciBpbml0aWFsaXphdGlvbikuICovCisgICAgc2VsZi0+c3RhdGUubGFzdF9ub2RlID0gbGFzdF9ub2RlOworCisgICAgLyogUHJvY2VzcyBrZXkgYmxvY2sgaWYgYW55LiAqLworICAgIGlmIChzZWxmLT5wYXJhbS5rZXlfbGVuZ3RoKSB7CisgICAgICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyQl9CTE9DS0JZVEVTXTsKKyAgICAgICAgbWVtc2V0KGJsb2NrLCAwLCBzaXplb2YoYmxvY2spKTsKKyAgICAgICAgbWVtY3B5KGJsb2NrLCBrZXktPmJ1Ziwga2V5LT5sZW4pOworICAgICAgICBibGFrZTJiX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJsb2NrLCBzaXplb2YoYmxvY2spKTsKKyAgICAgICAgc2VjdXJlX3plcm9fbWVtb3J5KGJsb2NrLCBzaXplb2YoYmxvY2spKTsKKyAgICB9CisKKyAgICAvKiBQcm9jZXNzIGluaXRpYWwgZGF0YSBpZiBhbnkuICovCisgICAgaWYgKGRhdGEgIT0gTlVMTCkgeworICAgICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1IoZGF0YSwgJmJ1ZiwgZ290byBlcnJvcik7CisKKyAgICAgICAgaWYgKGJ1Zi5sZW4gPj0gSEFTSExJQl9HSUxfTUlOU0laRSkgeworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBibGFrZTJiX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgICB9CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisKKyAgZXJyb3I6CisgICAgaWYgKHNlbGYgIT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2UyYi5ibGFrZTJiLmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2NvcHlfaW1wbChCTEFLRTJiT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM4OWNkMzM1NTBhYjE1NDMgaW5wdXQ9NGM5YzMxOWYxOGYxMDc0N10qLworeworICAgIEJMQUtFMmJPYmplY3QgKmNweTsKKworICAgIGlmICgoY3B5ID0gbmV3X0JMQUtFMmJPYmplY3QoUHlfVFlQRShzZWxmKSkpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBjcHktPnBhcmFtID0gc2VsZi0+cGFyYW07CisgICAgY3B5LT5zdGF0ZSA9IHNlbGYtPnN0YXRlOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKWNweTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMmIuYmxha2UyYi51cGRhdGUKKworICAgIG9iajogb2JqZWN0CisgICAgLworCitVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfdXBkYXRlKEJMQUtFMmJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTg4OGYwN2M0Y2RkYmU5NCBpbnB1dD0zZWNiOGMxM2VlNDI2MGYyXSovCit7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKworICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCAmJiBidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpCisgICAgICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisKKyAgICBpZiAoc2VsZi0+bG9jayAhPSBOVUxMKSB7CisgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrLCAxKTsKKyAgICAgICBibGFrZTJiX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrKTsKKyAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gZWxzZSB7CisgICAgICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgfQorI2Vsc2UKKyAgICBibGFrZTJiX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworI2VuZGlmIC8qICFXSVRIX1RIUkVBRCAqLworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJiLmJsYWtlMmIuZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9kaWdlc3RfaW1wbChCTEFLRTJiT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIxM2E3OTM2MGQ5ODQ3NDAgaW5wdXQ9YWMyZmE0NjJlYmIxYjljN10qLworeworICAgIHVpbnQ4X3QgZGlnZXN0W0JMQUtFMkJfT1VUQllURVNdOworICAgIGJsYWtlMmJfc3RhdGUgc3RhdGVfY3B5OworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBzdGF0ZV9jcHkgPSBzZWxmLT5zdGF0ZTsKKyAgICBibGFrZTJiX2ZpbmFsKCZzdGF0ZV9jcHksIGRpZ2VzdCwgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKWRpZ2VzdCwKKyAgICAgICAgICAgIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2UyYi5ibGFrZTJiLmhleGRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdF9pbXBsKEJMQUtFMmJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmE1MDM2MTE3MTViMjRiZCBpbnB1dD1kNThmMGIyZjM3ODEyZTMzXSovCit7CisgICAgdWludDhfdCBkaWdlc3RbQkxBS0UyQl9PVVRCWVRFU107CisgICAgYmxha2UyYl9zdGF0ZSBzdGF0ZV9jcHk7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIHN0YXRlX2NweSA9IHNlbGYtPnN0YXRlOworICAgIGJsYWtlMmJfZmluYWwoJnN0YXRlX2NweSwgZGlnZXN0LCBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiBfUHlfc3RyaGV4KChjb25zdCBjaGFyICopZGlnZXN0LCBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgcHlfYmxha2UyYl9tZXRob2RzW10gPSB7CisgICAgX0JMQUtFMkJfQkxBS0UyQl9DT1BZX01FVEhPRERFRgorICAgIF9CTEFLRTJCX0JMQUtFMkJfRElHRVNUX01FVEhPRERFRgorICAgIF9CTEFLRTJCX0JMQUtFMkJfSEVYRElHRVNUX01FVEhPRERFRgorICAgIF9CTEFLRTJCX0JMQUtFMkJfVVBEQVRFX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKworCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJiX2dldF9uYW1lKEJMQUtFMmJPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJibGFrZTJiIik7Cit9CisKKworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9nZXRfYmxvY2tfc2l6ZShCTEFLRTJiT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoQkxBS0UyQl9CTE9DS0JZVEVTKTsKK30KKworCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJiX2dldF9kaWdlc3Rfc2l6ZShCTEFLRTJiT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIHB5X2JsYWtlMmJfZ2V0c2V0dGVyc1tdID0geworICAgIHsibmFtZSIsIChnZXR0ZXIpcHlfYmxha2UyYl9nZXRfbmFtZSwKKyAgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJibG9ja19zaXplIiwgKGdldHRlcilweV9ibGFrZTJiX2dldF9ibG9ja19zaXplLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7ImRpZ2VzdF9zaXplIiwgKGdldHRlcilweV9ibGFrZTJiX2dldF9kaWdlc3Rfc2l6ZSwKKyAgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAge05VTEx9Cit9OworCisKK3N0YXRpYyB2b2lkCitweV9ibGFrZTJiX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpCit7CisgICAgQkxBS0UyYk9iamVjdCAqb2JqID0gKEJMQUtFMmJPYmplY3QgKilzZWxmOworCisgICAgLyogVHJ5IG5vdCB0byBsZWF2ZSBzdGF0ZSBpbiBtZW1vcnkuICovCisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCZvYmotPnBhcmFtLCBzaXplb2Yob2JqLT5wYXJhbSkpOworICAgIHNlY3VyZV96ZXJvX21lbW9yeSgmb2JqLT5zdGF0ZSwgc2l6ZW9mKG9iai0+c3RhdGUpKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChvYmotPmxvY2spIHsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKG9iai0+bG9jayk7CisgICAgICAgIG9iai0+bG9jayA9IE5VTEw7CisgICAgfQorI2VuZGlmCisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCisKK1B5VHlwZU9iamVjdCBQeUJsYWtlMl9CTEFLRTJiVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2JsYWtlMi5ibGFrZTJiIiwgICAgICAgIC8qIHRwX25hbWUgICAgICAgICAgICAqLworICAgIHNpemVvZihCTEFLRTJiT2JqZWN0KSwgICAgLyogdHBfc2l6ZSAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAgICAgICAgKi8KKyAgICBweV9ibGFrZTJiX2RlYWxsb2MsICAgICAgIC8qIHRwX2RlYWxsb2MgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgICAgICAgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgIC8qIHRwX2ZsYWdzICAgICAgICAgICAqLworICAgIHB5X2JsYWtlMmJfbmV3X19kb2NfXywgICAgLyogdHBfZG9jICAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgICAgICAgICovCisgICAgcHlfYmxha2UyYl9tZXRob2RzLCAgICAgICAvKiB0cF9tZXRob2RzICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgICAgICAgICAqLworICAgIHB5X2JsYWtlMmJfZ2V0c2V0dGVycywgICAgLyogdHBfZ2V0c2V0ICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAgICAgICAgICAgKi8KKyAgICBweV9ibGFrZTJiX25ldywgICAgICAgICAgIC8qIHRwX25ldyAgICAgICAgICAgICAqLworfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJtb2R1bGUuYyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJtb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmEzZDQyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMm1vZHVsZS5jCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogV3JpdHRlbiBpbiAyMDEzIGJ5IERtaXRyeSBDaGVzdG55a2ggPGRtaXRyeUBjb2Rpbmdyb2JvdHMuY29tPgorICogTW9kaWZpZWQgZm9yIENQeXRob24gYnkgQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CisgKgorICogVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBhdXRob3IgaGF2ZSBkZWRpY2F0ZWQgYWxsCisgKiBjb3B5cmlnaHQgYW5kIHJlbGF0ZWQgYW5kIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGlzIHNvZnR3YXJlIHRvCisgKiB0aGUgcHVibGljIGRvbWFpbiB3b3JsZHdpZGUuIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgd2l0aG91dAorICogYW55IHdhcnJhbnR5LiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisgKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCisjaW5jbHVkZSAiaW1wbC9ibGFrZTIuaCIKKworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUJsYWtlMl9CTEFLRTJiVHlwZTsKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0Uyc1R5cGU7CisKKworUHlEb2NfU1RSVkFSKGJsYWtlMm1vZF9fZG9jX18sCisiX2JsYWtlMmIgcHJvdmlkZXMgQkxBS0UyYiBmb3IgaGFzaGxpYlxuIgorKTsKKworCitzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIGJsYWtlMm1vZF9mdW5jdGlvbnNbXSA9IHsKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgYmxha2UyX21vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl9ibGFrZTIiLAorICAgIGJsYWtlMm1vZF9fZG9jX18sCisgICAgLTEsCisgICAgYmxha2UybW9kX2Z1bmN0aW9ucywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCisjZGVmaW5lIEFERF9JTlQoZCwgbmFtZSwgdmFsdWUpIGRvIHsgXAorICAgIFB5T2JqZWN0ICp4ID0gUHlMb25nX0Zyb21Mb25nKHZhbHVlKTsgXAorICAgIGlmICgheCkgeyBcCisgICAgICAgIFB5X0RFQ1JFRihtKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgIH0gXAorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCBuYW1lLCB4KSA8IDApIHsgXAorICAgICAgICBQeV9ERUNSRUYobSk7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9IFwKKyAgICBQeV9ERUNSRUYoeCk7IFwKK30gd2hpbGUoMCkKKworCitQeU1PRElOSVRfRlVOQworUHlJbml0X19ibGFrZTIodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbTsKKyAgICBQeU9iamVjdCAqZDsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJmJsYWtlMl9tb2R1bGUpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogQkxBS0UyYiAqLworICAgIFB5X1RZUEUoJlB5Qmxha2UyX0JMQUtFMmJUeXBlKSA9ICZQeVR5cGVfVHlwZTsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUJsYWtlMl9CTEFLRTJiVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRigmUHlCbGFrZTJfQkxBS0UyYlR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiYmxha2UyYiIsIChQeU9iamVjdCAqKSZQeUJsYWtlMl9CTEFLRTJiVHlwZSk7CisKKyAgICBkID0gUHlCbGFrZTJfQkxBS0UyYlR5cGUudHBfZGljdDsKKyAgICBBRERfSU5UKGQsICJTQUxUX1NJWkUiLCBCTEFLRTJCX1NBTFRCWVRFUyk7CisgICAgQUREX0lOVChkLCAiUEVSU09OX1NJWkUiLCBCTEFLRTJCX1BFUlNPTkFMQllURVMpOworICAgIEFERF9JTlQoZCwgIk1BWF9LRVlfU0laRSIsIEJMQUtFMkJfS0VZQllURVMpOworICAgIEFERF9JTlQoZCwgIk1BWF9ESUdFU1RfU0laRSIsIEJMQUtFMkJfT1VUQllURVMpOworCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMkJfU0FMVF9TSVpFIiwgQkxBS0UyQl9TQUxUQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJCX1BFUlNPTl9TSVpFIiwgQkxBS0UyQl9QRVJTT05BTEJZVEVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyQl9NQVhfS0VZX1NJWkUiLCBCTEFLRTJCX0tFWUJZVEVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyQl9NQVhfRElHRVNUX1NJWkUiLCBCTEFLRTJCX09VVEJZVEVTKTsKKworICAgIC8qIEJMQUtFMnMgKi8KKyAgICBQeV9UWVBFKCZQeUJsYWtlMl9CTEFLRTJzVHlwZSkgPSAmUHlUeXBlX1R5cGU7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlCbGFrZTJfQkxBS0Uyc1R5cGUpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoJlB5Qmxha2UyX0JMQUtFMnNUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImJsYWtlMnMiLCAoUHlPYmplY3QgKikmUHlCbGFrZTJfQkxBS0Uyc1R5cGUpOworCisgICAgZCA9IFB5Qmxha2UyX0JMQUtFMnNUeXBlLnRwX2RpY3Q7CisgICAgQUREX0lOVChkLCAiU0FMVF9TSVpFIiwgQkxBS0UyU19TQUxUQllURVMpOworICAgIEFERF9JTlQoZCwgIlBFUlNPTl9TSVpFIiwgQkxBS0UyU19QRVJTT05BTEJZVEVTKTsKKyAgICBBRERfSU5UKGQsICJNQVhfS0VZX1NJWkUiLCBCTEFLRTJTX0tFWUJZVEVTKTsKKyAgICBBRERfSU5UKGQsICJNQVhfRElHRVNUX1NJWkUiLCBCTEFLRTJTX09VVEJZVEVTKTsKKworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJTX1NBTFRfU0laRSIsIEJMQUtFMlNfU0FMVEJZVEVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyU19QRVJTT05fU0laRSIsIEJMQUtFMlNfUEVSU09OQUxCWVRFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMlNfTUFYX0tFWV9TSVpFIiwgQkxBS0UyU19LRVlCWVRFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMlNfTUFYX0RJR0VTVF9TSVpFIiwgQkxBS0UyU19PVVRCWVRFUyk7CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJucy5oIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMm5zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNiY2U4ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJucy5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qIFByZWZpeCBhbGwgcHVibGljIGJsYWtlMiBzeW1ib2xzIHdpdGggUHlCbGFrZTJfCisgKi8KKworI2lmbmRlZiBQeV9CTEFLRTJfTlMKKyNkZWZpbmUgUHlfQkxBS0UyX05TCisKKyNkZWZpbmUgYmxha2UyYiAgICAgICAgICAgIFB5Qmxha2UyX2JsYWtlMmIKKyNkZWZpbmUgYmxha2UyYl9jb21wcmVzcyAgIFB5Qmxha2UyX2JsYWtlMmJfY29tcHJlc3MKKyNkZWZpbmUgYmxha2UyYl9maW5hbCAgICAgIFB5Qmxha2UyX2JsYWtlMmJfZmluYWwKKyNkZWZpbmUgYmxha2UyYl9pbml0ICAgICAgIFB5Qmxha2UyX2JsYWtlMmJfaW5pdAorI2RlZmluZSBibGFrZTJiX2luaXRfa2V5ICAgUHlCbGFrZTJfYmxha2UyYl9pbml0X2tleQorI2RlZmluZSBibGFrZTJiX2luaXRfcGFyYW0gUHlCbGFrZTJfYmxha2UyYl9pbml0X3BhcmFtCisjZGVmaW5lIGJsYWtlMmJfdXBkYXRlICAgICBQeUJsYWtlMl9ibGFrZTJiX3VwZGF0ZQorI2RlZmluZSBibGFrZTJicCAgICAgICAgICAgUHlCbGFrZTJfYmxha2UyYnAKKyNkZWZpbmUgYmxha2UyYnBfZmluYWwgICAgIFB5Qmxha2UyX2JsYWtlMmJwX2ZpbmFsCisjZGVmaW5lIGJsYWtlMmJwX2luaXQgICAgICBQeUJsYWtlMl9ibGFrZTJicF9pbml0CisjZGVmaW5lIGJsYWtlMmJwX2luaXRfa2V5ICBQeUJsYWtlMl9ibGFrZTJicF9pbml0X2tleQorI2RlZmluZSBibGFrZTJicF91cGRhdGUgICAgUHlCbGFrZTJfYmxha2UyYnBfdXBkYXRlCisjZGVmaW5lIGJsYWtlMnMgICAgICAgICAgICBQeUJsYWtlMl9ibGFrZTJzCisjZGVmaW5lIGJsYWtlMnNfY29tcHJlc3MgICBQeUJsYWtlMl9ibGFrZTJzX2NvbXByZXNzCisjZGVmaW5lIGJsYWtlMnNfZmluYWwgICAgICBQeUJsYWtlMl9ibGFrZTJzX2ZpbmFsCisjZGVmaW5lIGJsYWtlMnNfaW5pdCAgICAgICBQeUJsYWtlMl9ibGFrZTJzX2luaXQKKyNkZWZpbmUgYmxha2Uyc19pbml0X2tleSAgIFB5Qmxha2UyX2JsYWtlMnNfaW5pdF9rZXkKKyNkZWZpbmUgYmxha2Uyc19pbml0X3BhcmFtIFB5Qmxha2UyX2JsYWtlMnNfaW5pdF9wYXJhbQorI2RlZmluZSBibGFrZTJzX3VwZGF0ZSAgICAgUHlCbGFrZTJfYmxha2Uyc191cGRhdGUKKyNkZWZpbmUgYmxha2Uyc3AgICAgICAgICAgIFB5Qmxha2UyX2JsYWtlMnNwCisjZGVmaW5lIGJsYWtlMnNwX2ZpbmFsICAgICBQeUJsYWtlMl9ibGFrZTJzcF9maW5hbAorI2RlZmluZSBibGFrZTJzcF9pbml0ICAgICAgUHlCbGFrZTJfYmxha2Uyc3BfaW5pdAorI2RlZmluZSBibGFrZTJzcF9pbml0X2tleSAgUHlCbGFrZTJfYmxha2Uyc3BfaW5pdF9rZXkKKyNkZWZpbmUgYmxha2Uyc3BfdXBkYXRlICAgIFB5Qmxha2UyX2JsYWtlMnNwX3VwZGF0ZQorCisjZW5kaWYgLyogUHlfQkxBS0UyX05TICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvYmxha2Uyc19pbXBsLmMgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2Uyc19pbXBsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFkMmUwMgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYwpAQCAtMCwwICsxLDQ2MCBAQAorLyoKKyAqIFdyaXR0ZW4gaW4gMjAxMyBieSBEbWl0cnkgQ2hlc3RueWtoIDxkbWl0cnlAY29kaW5ncm9ib3RzLmNvbT4KKyAqIE1vZGlmaWVkIGZvciBDUHl0aG9uIGJ5IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorICoKKyAqIFRvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgYXV0aG9yIGhhdmUgZGVkaWNhdGVkIGFsbAorICogY29weXJpZ2h0IGFuZCByZWxhdGVkIGFuZCBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhpcyBzb2Z0d2FyZSB0bworICogdGhlIHB1YmxpYyBkb21haW4gd29ybGR3aWRlLiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIHdpdGhvdXQKKyAqIGFueSB3YXJyYW50eS4gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworICovCisKKy8qIFdBUk5JTkc6IGF1dG9nZW5lcmF0ZWQgZmlsZSEKKyAqCisgKiBUaGUgYmxha2Uyc19pbXBsLmMgaXMgYXV0b2dlbmVyYXRlZCBmcm9tIGJsYWtlMnNfaW1wbC5jLgorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgorI2lmZGVmIFdJVEhfVEhSRUFECisjaW5jbHVkZSAicHl0aHJlYWQuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiLi4vaGFzaGxpYi5oIgorI2luY2x1ZGUgImJsYWtlMm5zLmgiCisKKyNkZWZpbmUgSEFWRV9CTEFLRTJTIDEKKyNkZWZpbmUgQkxBS0UyX0xPQ0FMX0lOTElORSh0eXBlKSBQeV9MT0NBTF9JTkxJTkUodHlwZSkKKworI2luY2x1ZGUgImltcGwvYmxha2UyLmgiCisjaW5jbHVkZSAiaW1wbC9ibGFrZTItaW1wbC5oIiAvKiBmb3Igc2VjdXJlX3plcm9fbWVtb3J5KCkgYW5kIHN0b3JlNDgoKSAqLworCisjaWZkZWYgQkxBS0UyX1VTRV9TU0UKKyNpbmNsdWRlICJpbXBsL2JsYWtlMnMuYyIKKyNlbHNlCisjaW5jbHVkZSAiaW1wbC9ibGFrZTJzLXJlZi5jIgorI2VuZGlmCisKKworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUJsYWtlMl9CTEFLRTJzVHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBibGFrZTJzX3BhcmFtICAgIHBhcmFtOworICAgIGJsYWtlMnNfc3RhdGUgICAgc3RhdGU7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKyNlbmRpZgorfSBCTEFLRTJzT2JqZWN0OworCisjaW5jbHVkZSAiY2xpbmljL2JsYWtlMnNfaW1wbC5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfYmxha2UycworY2xhc3MgX2JsYWtlMnMuYmxha2UycyAiQkxBS0Uyc09iamVjdCAqIiAiJlB5Qmxha2UyX0JMQUtFMnNUeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZWRiZmNmNzU1N2E2ODVhN10qLworCisKK3N0YXRpYyBCTEFLRTJzT2JqZWN0ICoKK25ld19CTEFLRTJzT2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBCTEFLRTJzT2JqZWN0ICpzZWxmOworICAgIHNlbGYgPSAoQkxBS0Uyc09iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYgIT0gTlVMTCkgeworICAgICAgICBzZWxmLT5sb2NrID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gc2VsZjsKK30KKworLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitfYmxha2Uycy5ibGFrZTJzLl9fbmV3X18gYXMgcHlfYmxha2Uyc19uZXcKKyAgICBzdHJpbmcgYXMgZGF0YTogb2JqZWN0ID0gTlVMTAorICAgICoKKyAgICBkaWdlc3Rfc2l6ZTogaW50KGNfZGVmYXVsdD0iQkxBS0UyU19PVVRCWVRFUyIpID0gX2JsYWtlMnMuYmxha2Uycy5NQVhfRElHRVNUX1NJWkUKKyAgICBrZXk6IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBzYWx0OiBQeV9idWZmZXIgPSBOb25lCisgICAgcGVyc29uOiBQeV9idWZmZXIgPSBOb25lCisgICAgZmFub3V0OiBpbnQgPSAxCisgICAgZGVwdGg6IGludCA9IDEKKyAgICBsZWFmX3NpemUgYXMgbGVhZl9zaXplX29iajogb2JqZWN0ID0gTlVMTAorICAgIG5vZGVfb2Zmc2V0IGFzIG5vZGVfb2Zmc2V0X29iajogb2JqZWN0ID0gTlVMTAorICAgIG5vZGVfZGVwdGg6IGludCA9IDAKKyAgICBpbm5lcl9zaXplOiBpbnQgPSAwCisgICAgbGFzdF9ub2RlOiBib29sID0gRmFsc2UKKworUmV0dXJuIGEgbmV3IEJMQUtFMnMgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJzX25ld19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmRhdGEsIGludCBkaWdlc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICprZXksIFB5X2J1ZmZlciAqc2FsdCwgUHlfYnVmZmVyICpwZXJzb24sCisgICAgICAgICAgICAgICAgICAgIGludCBmYW5vdXQsIGludCBkZXB0aCwgUHlPYmplY3QgKmxlYWZfc2l6ZV9vYmosCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpub2RlX29mZnNldF9vYmosIGludCBub2RlX2RlcHRoLAorICAgICAgICAgICAgICAgICAgICBpbnQgaW5uZXJfc2l6ZSwgaW50IGxhc3Rfbm9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZTA2MGIyNThhOGNiZmM2IGlucHV0PTQ1OGNmZGNiM2QwZDQ3ZmZdKi8KK3sKKyAgICBCTEFLRTJzT2JqZWN0ICpzZWxmID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmOworCisgICAgdW5zaWduZWQgbG9uZyBsZWFmX3NpemUgPSAwOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBub2RlX29mZnNldCA9IDA7CisKKyAgICBzZWxmID0gbmV3X0JMQUtFMnNPYmplY3QodHlwZSk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIFplcm8gcGFyYW1ldGVyIGJsb2NrLiAqLworICAgIG1lbXNldCgmc2VsZi0+cGFyYW0sIDAsIHNpemVvZihzZWxmLT5wYXJhbSkpOworCisgICAgLyogU2V0IGRpZ2VzdCBzaXplLiAqLworICAgIGlmIChkaWdlc3Rfc2l6ZSA8PSAwIHx8IGRpZ2VzdF9zaXplID4gQkxBS0UyU19PVVRCWVRFUykgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZGlnZXN0X3NpemUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kICVkIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJTX09VVEJZVEVTKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCA9IGRpZ2VzdF9zaXplOworCisgICAgLyogU2V0IHNhbHQgcGFyYW1ldGVyLiAqLworICAgIGlmICgoc2FsdC0+b2JqICE9IE5VTEwpICYmIHNhbHQtPmxlbikgeworICAgICAgICBpZiAoc2FsdC0+bGVuID4gQkxBS0UyU19TQUxUQllURVMpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtYXhpbXVtIHNhbHQgbGVuZ3RoIGlzICVkIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJTX1NBTFRCWVRFUyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIG1lbWNweShzZWxmLT5wYXJhbS5zYWx0LCBzYWx0LT5idWYsIHNhbHQtPmxlbik7CisgICAgfQorCisgICAgLyogU2V0IHBlcnNvbmFsaXphdGlvbiBwYXJhbWV0ZXIuICovCisgICAgaWYgKChwZXJzb24tPm9iaiAhPSBOVUxMKSAmJiBwZXJzb24tPmxlbikgeworICAgICAgICBpZiAocGVyc29uLT5sZW4gPiBCTEFLRTJTX1BFUlNPTkFMQllURVMpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtYXhpbXVtIHBlcnNvbiBsZW5ndGggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMlNfUEVSU09OQUxCWVRFUyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIG1lbWNweShzZWxmLT5wYXJhbS5wZXJzb25hbCwgcGVyc29uLT5idWYsIHBlcnNvbi0+bGVuKTsKKyAgICB9CisKKyAgICAvKiBTZXQgdHJlZSBwYXJhbWV0ZXJzLiAqLworICAgIGlmIChmYW5vdXQgPCAwIHx8IGZhbm91dCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZmFub3V0IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNTUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0uZmFub3V0ID0gKHVpbnQ4X3QpZmFub3V0OworCisgICAgaWYgKGRlcHRoIDw9IDAgfHwgZGVwdGggPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImRlcHRoIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyNTUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0uZGVwdGggPSAodWludDhfdClkZXB0aDsKKworICAgIGlmIChsZWFmX3NpemVfb2JqICE9IE5VTEwpIHsKKyAgICAgICAgbGVhZl9zaXplID0gUHlMb25nX0FzVW5zaWduZWRMb25nKGxlYWZfc2l6ZV9vYmopOworICAgICAgICBpZiAobGVhZl9zaXplID09ICh1bnNpZ25lZCBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChsZWFmX3NpemUgPiAweEZGRkZGRkZGVSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJsZWFmX3NpemUgaXMgdG9vIGxhcmdlIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmxlYWZfbGVuZ3RoID0gKHVuc2lnbmVkIGludClsZWFmX3NpemU7CisKKyAgICBpZiAobm9kZV9vZmZzZXRfb2JqICE9IE5VTEwpIHsKKyAgICAgICAgbm9kZV9vZmZzZXQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG5vZGVfb2Zmc2V0X29iaik7CisgICAgICAgIGlmIChub2RlX29mZnNldCA9PSAodW5zaWduZWQgbG9uZyBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorI2lmZGVmIEhBVkVfQkxBS0UyUworICAgIGlmIChub2RlX29mZnNldCA+IDB4RkZGRkZGRkZGRkZGVUxMKSB7CisgICAgICAgIC8qIG1heGltdW0gMioqNDggLSAxICovCisgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm5vZGVfb2Zmc2V0IGlzIHRvbyBsYXJnZSIpOworICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgfQorICAgIHN0b3JlNDgoJihzZWxmLT5wYXJhbS5ub2RlX29mZnNldCksIG5vZGVfb2Zmc2V0KTsKKyNlbHNlCisgICAgc2VsZi0+cGFyYW0ubm9kZV9vZmZzZXQgPSBub2RlX29mZnNldDsKKyNlbmRpZgorCisgICAgaWYgKG5vZGVfZGVwdGggPCAwIHx8IG5vZGVfZGVwdGggPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm5vZGVfZGVwdGggbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI1NSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5ub2RlX2RlcHRoID0gbm9kZV9kZXB0aDsKKworICAgIGlmIChpbm5lcl9zaXplIDwgMCB8fCBpbm5lcl9zaXplID4gQkxBS0UyU19PVVRCWVRFUykgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiaW5uZXJfc2l6ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgaXMgJWQiLAorICAgICAgICAgICAgICAgIEJMQUtFMlNfT1VUQllURVMpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5pbm5lcl9sZW5ndGggPSBpbm5lcl9zaXplOworCisgICAgLyogU2V0IGtleSBsZW5ndGguICovCisgICAgaWYgKChrZXktPm9iaiAhPSBOVUxMKSAmJiBrZXktPmxlbikgeworICAgICAgICBpZiAoa2V5LT5sZW4gPiBCTEFLRTJTX0tFWUJZVEVTKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWF4aW11bSBrZXkgbGVuZ3RoIGlzICVkIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJTX0tFWUJZVEVTKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgc2VsZi0+cGFyYW0ua2V5X2xlbmd0aCA9ICh1aW50OF90KWtleS0+bGVuOworICAgIH0KKworICAgIC8qIEluaXRpYWxpemUgaGFzaCBzdGF0ZS4gKi8KKyAgICBpZiAoYmxha2Uyc19pbml0X3BhcmFtKCZzZWxmLT5zdGF0ZSwgJnNlbGYtPnBhcmFtKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZXJyb3IgaW5pdGlhbGl6aW5nIGhhc2ggc3RhdGUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBTZXQgbGFzdCBub2RlIGZsYWcgKG11c3QgY29tZSBhZnRlciBpbml0aWFsaXphdGlvbikuICovCisgICAgc2VsZi0+c3RhdGUubGFzdF9ub2RlID0gbGFzdF9ub2RlOworCisgICAgLyogUHJvY2VzcyBrZXkgYmxvY2sgaWYgYW55LiAqLworICAgIGlmIChzZWxmLT5wYXJhbS5rZXlfbGVuZ3RoKSB7CisgICAgICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICAgICAgbWVtc2V0KGJsb2NrLCAwLCBzaXplb2YoYmxvY2spKTsKKyAgICAgICAgbWVtY3B5KGJsb2NrLCBrZXktPmJ1Ziwga2V5LT5sZW4pOworICAgICAgICBibGFrZTJzX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJsb2NrLCBzaXplb2YoYmxvY2spKTsKKyAgICAgICAgc2VjdXJlX3plcm9fbWVtb3J5KGJsb2NrLCBzaXplb2YoYmxvY2spKTsKKyAgICB9CisKKyAgICAvKiBQcm9jZXNzIGluaXRpYWwgZGF0YSBpZiBhbnkuICovCisgICAgaWYgKGRhdGEgIT0gTlVMTCkgeworICAgICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1IoZGF0YSwgJmJ1ZiwgZ290byBlcnJvcik7CisKKyAgICAgICAgaWYgKGJ1Zi5sZW4gPj0gSEFTSExJQl9HSUxfTUlOU0laRSkgeworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBibGFrZTJzX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgICB9CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisKKyAgZXJyb3I6CisgICAgaWYgKHNlbGYgIT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2Uycy5ibGFrZTJzLmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2NvcHlfaW1wbChCTEFLRTJzT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjNWJhZGE0MDRiN2FlZDcgaW5wdXQ9Yzg4NThlODg3YWU0YTA3YV0qLworeworICAgIEJMQUtFMnNPYmplY3QgKmNweTsKKworICAgIGlmICgoY3B5ID0gbmV3X0JMQUtFMnNPYmplY3QoUHlfVFlQRShzZWxmKSkpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBjcHktPnBhcmFtID0gc2VsZi0+cGFyYW07CisgICAgY3B5LT5zdGF0ZSA9IHNlbGYtPnN0YXRlOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKWNweTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMnMuYmxha2Uycy51cGRhdGUKKworICAgIG9iajogb2JqZWN0CisgICAgLworCitVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfdXBkYXRlKEJMQUtFMnNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmU4NDM4YTFkM2NlZGU4NyBpbnB1dD00N2E0MDhiOWEzY2MwNWM1XSovCit7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKworICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCAmJiBidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpCisgICAgICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisKKyAgICBpZiAoc2VsZi0+bG9jayAhPSBOVUxMKSB7CisgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrLCAxKTsKKyAgICAgICBibGFrZTJzX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrKTsKKyAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gZWxzZSB7CisgICAgICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgfQorI2Vsc2UKKyAgICBibGFrZTJzX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworI2VuZGlmIC8qICFXSVRIX1RIUkVBRCAqLworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJzLmJsYWtlMnMuZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19kaWdlc3RfaW1wbChCTEFLRTJzT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgwZTgxYTQ4YzZmNzljZjkgaW5wdXQ9ZmViOWEyMjAxMzViZGViYV0qLworeworICAgIHVpbnQ4X3QgZGlnZXN0W0JMQUtFMlNfT1VUQllURVNdOworICAgIGJsYWtlMnNfc3RhdGUgc3RhdGVfY3B5OworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBzdGF0ZV9jcHkgPSBzZWxmLT5zdGF0ZTsKKyAgICBibGFrZTJzX2ZpbmFsKCZzdGF0ZV9jcHksIGRpZ2VzdCwgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKWRpZ2VzdCwKKyAgICAgICAgICAgIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2Uycy5ibGFrZTJzLmhleGRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdF9pbXBsKEJMQUtFMnNPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGI2YzUwMjhjMGEzYzJlNSBpbnB1dD00ZTQ4NzdiOGJkN2FlYTkxXSovCit7CisgICAgdWludDhfdCBkaWdlc3RbQkxBS0UyU19PVVRCWVRFU107CisgICAgYmxha2Uyc19zdGF0ZSBzdGF0ZV9jcHk7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIHN0YXRlX2NweSA9IHNlbGYtPnN0YXRlOworICAgIGJsYWtlMnNfZmluYWwoJnN0YXRlX2NweSwgZGlnZXN0LCBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiBfUHlfc3RyaGV4KChjb25zdCBjaGFyICopZGlnZXN0LCBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgcHlfYmxha2Uyc19tZXRob2RzW10gPSB7CisgICAgX0JMQUtFMlNfQkxBS0UyU19DT1BZX01FVEhPRERFRgorICAgIF9CTEFLRTJTX0JMQUtFMlNfRElHRVNUX01FVEhPRERFRgorICAgIF9CTEFLRTJTX0JMQUtFMlNfSEVYRElHRVNUX01FVEhPRERFRgorICAgIF9CTEFLRTJTX0JMQUtFMlNfVVBEQVRFX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKworCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJzX2dldF9uYW1lKEJMQUtFMnNPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJibGFrZTJzIik7Cit9CisKKworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19nZXRfYmxvY2tfc2l6ZShCTEFLRTJzT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoQkxBS0UyU19CTE9DS0JZVEVTKTsKK30KKworCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJzX2dldF9kaWdlc3Rfc2l6ZShCTEFLRTJzT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIHB5X2JsYWtlMnNfZ2V0c2V0dGVyc1tdID0geworICAgIHsibmFtZSIsIChnZXR0ZXIpcHlfYmxha2Uyc19nZXRfbmFtZSwKKyAgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJibG9ja19zaXplIiwgKGdldHRlcilweV9ibGFrZTJzX2dldF9ibG9ja19zaXplLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7ImRpZ2VzdF9zaXplIiwgKGdldHRlcilweV9ibGFrZTJzX2dldF9kaWdlc3Rfc2l6ZSwKKyAgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAge05VTEx9Cit9OworCisKK3N0YXRpYyB2b2lkCitweV9ibGFrZTJzX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpCit7CisgICAgQkxBS0Uyc09iamVjdCAqb2JqID0gKEJMQUtFMnNPYmplY3QgKilzZWxmOworCisgICAgLyogVHJ5IG5vdCB0byBsZWF2ZSBzdGF0ZSBpbiBtZW1vcnkuICovCisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCZvYmotPnBhcmFtLCBzaXplb2Yob2JqLT5wYXJhbSkpOworICAgIHNlY3VyZV96ZXJvX21lbW9yeSgmb2JqLT5zdGF0ZSwgc2l6ZW9mKG9iai0+c3RhdGUpKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChvYmotPmxvY2spIHsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKG9iai0+bG9jayk7CisgICAgICAgIG9iai0+bG9jayA9IE5VTEw7CisgICAgfQorI2VuZGlmCisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCisKK1B5VHlwZU9iamVjdCBQeUJsYWtlMl9CTEFLRTJzVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2JsYWtlMi5ibGFrZTJzIiwgICAgICAgIC8qIHRwX25hbWUgICAgICAgICAgICAqLworICAgIHNpemVvZihCTEFLRTJzT2JqZWN0KSwgICAgLyogdHBfc2l6ZSAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAgICAgICAgKi8KKyAgICBweV9ibGFrZTJzX2RlYWxsb2MsICAgICAgIC8qIHRwX2RlYWxsb2MgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgICAgICAgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgIC8qIHRwX2ZsYWdzICAgICAgICAgICAqLworICAgIHB5X2JsYWtlMnNfbmV3X19kb2NfXywgICAgLyogdHBfZG9jICAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgICAgICAgICovCisgICAgcHlfYmxha2Uyc19tZXRob2RzLCAgICAgICAvKiB0cF9tZXRob2RzICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgICAgICAgICAqLworICAgIHB5X2JsYWtlMnNfZ2V0c2V0dGVycywgICAgLyogdHBfZ2V0c2V0ICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAgICAgICAgICAgKi8KKyAgICBweV9ibGFrZTJzX25ldywgICAgICAgICAgIC8qIHRwX25ldyAgICAgICAgICAgICAqLworfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9jbGluaWMvYmxha2UyYl9pbXBsLmMuaCBiL01vZHVsZXMvX2JsYWtlMi9jbGluaWMvYmxha2UyYl9pbXBsLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWMwNzNhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2NsaW5pYy9ibGFrZTJiX2ltcGwuYy5oCkBAIC0wLDAgKzEsMTI1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIocHlfYmxha2UyYl9uZXdfX2RvY19fLAorImJsYWtlMmIoc3RyaW5nPU5vbmUsICosIGRpZ2VzdF9zaXplPV9ibGFrZTJiLmJsYWtlMmIuTUFYX0RJR0VTVF9TSVpFLFxuIgorIiAgICAgICAga2V5PU5vbmUsIHNhbHQ9Tm9uZSwgcGVyc29uPU5vbmUsIGZhbm91dD0xLCBkZXB0aD0xLFxuIgorIiAgICAgICAgbGVhZl9zaXplPU5vbmUsIG5vZGVfb2Zmc2V0PU5vbmUsIG5vZGVfZGVwdGg9MCwgaW5uZXJfc2l6ZT0wLFxuIgorIiAgICAgICAgbGFzdF9ub2RlPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IEJMQUtFMmIgaGFzaCBvYmplY3QuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJiX25ld19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmRhdGEsIGludCBkaWdlc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICprZXksIFB5X2J1ZmZlciAqc2FsdCwgUHlfYnVmZmVyICpwZXJzb24sCisgICAgICAgICAgICAgICAgICAgIGludCBmYW5vdXQsIGludCBkZXB0aCwgUHlPYmplY3QgKmxlYWZfc2l6ZV9vYmosCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpub2RlX29mZnNldF9vYmosIGludCBub2RlX2RlcHRoLAorICAgICAgICAgICAgICAgICAgICBpbnQgaW5uZXJfc2l6ZSwgaW50IGxhc3Rfbm9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJiX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJkaWdlc3Rfc2l6ZSIsICJrZXkiLCAic2FsdCIsICJwZXJzb24iLCAiZmFub3V0IiwgImRlcHRoIiwgImxlYWZfc2l6ZSIsICJub2RlX29mZnNldCIsICJub2RlX2RlcHRoIiwgImlubmVyX3NpemUiLCAibGFzdF9ub2RlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE8kaXkqeSp5KmlpT09paXA6Ymxha2UyYiIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmRhdGEgPSBOVUxMOworICAgIGludCBkaWdlc3Rfc2l6ZSA9IEJMQUtFMkJfT1VUQllURVM7CisgICAgUHlfYnVmZmVyIGtleSA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9idWZmZXIgc2FsdCA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9idWZmZXIgcGVyc29uID0ge05VTEwsIE5VTEx9OworICAgIGludCBmYW5vdXQgPSAxOworICAgIGludCBkZXB0aCA9IDE7CisgICAgUHlPYmplY3QgKmxlYWZfc2l6ZV9vYmogPSBOVUxMOworICAgIFB5T2JqZWN0ICpub2RlX29mZnNldF9vYmogPSBOVUxMOworICAgIGludCBub2RlX2RlcHRoID0gMDsKKyAgICBpbnQgaW5uZXJfc2l6ZSA9IDA7CisgICAgaW50IGxhc3Rfbm9kZSA9IDA7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmZGlnZXN0X3NpemUsICZrZXksICZzYWx0LCAmcGVyc29uLCAmZmFub3V0LCAmZGVwdGgsICZsZWFmX3NpemVfb2JqLCAmbm9kZV9vZmZzZXRfb2JqLCAmbm9kZV9kZXB0aCwgJmlubmVyX3NpemUsICZsYXN0X25vZGUpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gcHlfYmxha2UyYl9uZXdfaW1wbCh0eXBlLCBkYXRhLCBkaWdlc3Rfc2l6ZSwgJmtleSwgJnNhbHQsICZwZXJzb24sIGZhbm91dCwgZGVwdGgsIGxlYWZfc2l6ZV9vYmosIG5vZGVfb2Zmc2V0X29iaiwgbm9kZV9kZXB0aCwgaW5uZXJfc2l6ZSwgbGFzdF9ub2RlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBrZXkgKi8KKyAgICBpZiAoa2V5Lm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmtleSk7CisgICAgfQorICAgIC8qIENsZWFudXAgZm9yIHNhbHQgKi8KKyAgICBpZiAoc2FsdC5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzYWx0KTsKKyAgICB9CisgICAgLyogQ2xlYW51cCBmb3IgcGVyc29uICovCisgICAgaWYgKHBlcnNvbi5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZXJzb24pOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfYmxha2UyYl9ibGFrZTJiX2NvcHlfX2RvY19fLAorImNvcHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4iKTsKKworI2RlZmluZSBfQkxBS0UyQl9CTEFLRTJCX0NPUFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMmJfYmxha2UyYl9jb3B5LCBNRVRIX05PQVJHUywgX2JsYWtlMmJfYmxha2UyYl9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2NvcHlfaW1wbChCTEFLRTJiT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfY29weShCTEFLRTJiT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYmxha2UyYl9ibGFrZTJiX2NvcHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9ibGFrZTJiX2JsYWtlMmJfdXBkYXRlX19kb2NfXywKKyJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0XCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKworI2RlZmluZSBfQkxBS0UyQl9CTEFLRTJCX1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJiX2JsYWtlMmJfdXBkYXRlLCBNRVRIX08sIF9ibGFrZTJiX2JsYWtlMmJfdXBkYXRlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgX0JMQUtFMkJfQkxBS0UyQl9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdCwgTUVUSF9OT0FSR1MsIF9ibGFrZTJiX2JsYWtlMmJfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdF9pbXBsKEJMQUtFMmJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9kaWdlc3QoQkxBS0UyYk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2JsYWtlMmJfYmxha2UyYl9kaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0X19kb2NfXywKKyJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgX0JMQUtFMkJfQkxBS0UyQl9IRVhESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsIF9ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdF9pbXBsKEJMQUtFMmJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3QoQkxBS0UyYk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MzVhNTQ4NTJjOThlNTFjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9jbGluaWMvYmxha2Uyc19pbXBsLmMuaCBiL01vZHVsZXMvX2JsYWtlMi9jbGluaWMvYmxha2Uyc19pbXBsLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTkwOGQzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2NsaW5pYy9ibGFrZTJzX2ltcGwuYy5oCkBAIC0wLDAgKzEsMTI1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIocHlfYmxha2Uyc19uZXdfX2RvY19fLAorImJsYWtlMnMoc3RyaW5nPU5vbmUsICosIGRpZ2VzdF9zaXplPV9ibGFrZTJzLmJsYWtlMnMuTUFYX0RJR0VTVF9TSVpFLFxuIgorIiAgICAgICAga2V5PU5vbmUsIHNhbHQ9Tm9uZSwgcGVyc29uPU5vbmUsIGZhbm91dD0xLCBkZXB0aD0xLFxuIgorIiAgICAgICAgbGVhZl9zaXplPU5vbmUsIG5vZGVfb2Zmc2V0PU5vbmUsIG5vZGVfZGVwdGg9MCwgaW5uZXJfc2l6ZT0wLFxuIgorIiAgICAgICAgbGFzdF9ub2RlPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IEJMQUtFMnMgaGFzaCBvYmplY3QuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJzX25ld19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmRhdGEsIGludCBkaWdlc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICprZXksIFB5X2J1ZmZlciAqc2FsdCwgUHlfYnVmZmVyICpwZXJzb24sCisgICAgICAgICAgICAgICAgICAgIGludCBmYW5vdXQsIGludCBkZXB0aCwgUHlPYmplY3QgKmxlYWZfc2l6ZV9vYmosCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpub2RlX29mZnNldF9vYmosIGludCBub2RlX2RlcHRoLAorICAgICAgICAgICAgICAgICAgICBpbnQgaW5uZXJfc2l6ZSwgaW50IGxhc3Rfbm9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJzX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJkaWdlc3Rfc2l6ZSIsICJrZXkiLCAic2FsdCIsICJwZXJzb24iLCAiZmFub3V0IiwgImRlcHRoIiwgImxlYWZfc2l6ZSIsICJub2RlX29mZnNldCIsICJub2RlX2RlcHRoIiwgImlubmVyX3NpemUiLCAibGFzdF9ub2RlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE8kaXkqeSp5KmlpT09paXA6Ymxha2UycyIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmRhdGEgPSBOVUxMOworICAgIGludCBkaWdlc3Rfc2l6ZSA9IEJMQUtFMlNfT1VUQllURVM7CisgICAgUHlfYnVmZmVyIGtleSA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9idWZmZXIgc2FsdCA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9idWZmZXIgcGVyc29uID0ge05VTEwsIE5VTEx9OworICAgIGludCBmYW5vdXQgPSAxOworICAgIGludCBkZXB0aCA9IDE7CisgICAgUHlPYmplY3QgKmxlYWZfc2l6ZV9vYmogPSBOVUxMOworICAgIFB5T2JqZWN0ICpub2RlX29mZnNldF9vYmogPSBOVUxMOworICAgIGludCBub2RlX2RlcHRoID0gMDsKKyAgICBpbnQgaW5uZXJfc2l6ZSA9IDA7CisgICAgaW50IGxhc3Rfbm9kZSA9IDA7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmZGlnZXN0X3NpemUsICZrZXksICZzYWx0LCAmcGVyc29uLCAmZmFub3V0LCAmZGVwdGgsICZsZWFmX3NpemVfb2JqLCAmbm9kZV9vZmZzZXRfb2JqLCAmbm9kZV9kZXB0aCwgJmlubmVyX3NpemUsICZsYXN0X25vZGUpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gcHlfYmxha2Uyc19uZXdfaW1wbCh0eXBlLCBkYXRhLCBkaWdlc3Rfc2l6ZSwgJmtleSwgJnNhbHQsICZwZXJzb24sIGZhbm91dCwgZGVwdGgsIGxlYWZfc2l6ZV9vYmosIG5vZGVfb2Zmc2V0X29iaiwgbm9kZV9kZXB0aCwgaW5uZXJfc2l6ZSwgbGFzdF9ub2RlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBrZXkgKi8KKyAgICBpZiAoa2V5Lm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmtleSk7CisgICAgfQorICAgIC8qIENsZWFudXAgZm9yIHNhbHQgKi8KKyAgICBpZiAoc2FsdC5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzYWx0KTsKKyAgICB9CisgICAgLyogQ2xlYW51cCBmb3IgcGVyc29uICovCisgICAgaWYgKHBlcnNvbi5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZXJzb24pOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfYmxha2Uyc19ibGFrZTJzX2NvcHlfX2RvY19fLAorImNvcHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4iKTsKKworI2RlZmluZSBfQkxBS0UyU19CTEFLRTJTX0NPUFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMnNfYmxha2Uyc19jb3B5LCBNRVRIX05PQVJHUywgX2JsYWtlMnNfYmxha2Uyc19jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2NvcHlfaW1wbChCTEFLRTJzT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfY29weShCTEFLRTJzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYmxha2Uyc19ibGFrZTJzX2NvcHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9ibGFrZTJzX2JsYWtlMnNfdXBkYXRlX19kb2NfXywKKyJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0XCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKworI2RlZmluZSBfQkxBS0UyU19CTEFLRTJTX1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJzX2JsYWtlMnNfdXBkYXRlLCBNRVRIX08sIF9ibGFrZTJzX2JsYWtlMnNfdXBkYXRlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgX0JMQUtFMlNfQkxBS0UyU19ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdCwgTUVUSF9OT0FSR1MsIF9ibGFrZTJzX2JsYWtlMnNfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdF9pbXBsKEJMQUtFMnNPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19kaWdlc3QoQkxBS0Uyc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2JsYWtlMnNfYmxha2Uyc19kaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0X19kb2NfXywKKyJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgX0JMQUtFMlNfQkxBS0UyU19IRVhESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsIF9ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdF9pbXBsKEJMQUtFMnNPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3QoQkxBS0Uyc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MzVlYTc5MDNmOWNjZjc2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi1jb25maWcuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi1jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDQ1NWIxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWNvbmZpZy5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKworICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMl9DT05GSUdfSF9fCisjZGVmaW5lIF9fQkxBS0UyX0NPTkZJR19IX18KKworLyogVGhlc2UgZG9uJ3Qgd29yayBldmVyeXdoZXJlICovCisjaWYgZGVmaW5lZChfX1NTRTJfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYW1kNjRfXykKKyNkZWZpbmUgSEFWRV9TU0UyCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19TU1NFM19fKQorI2RlZmluZSBIQVZFX1NTU0UzCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19TU0U0XzFfXykKKyNkZWZpbmUgSEFWRV9TU0U0MQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fQVZYX18pCisjZGVmaW5lIEhBVkVfQVZYCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19YT1BfXykKKyNkZWZpbmUgSEFWRV9YT1AKKyNlbmRpZgorCisKKyNpZmRlZiBIQVZFX0FWWDIKKyNpZm5kZWYgSEFWRV9BVlgKKyNkZWZpbmUgSEFWRV9BVlgKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1hPUAorI2lmbmRlZiBIQVZFX0FWWAorI2RlZmluZSBIQVZFX0FWWAorI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIEhBVkVfQVZYCisjaWZuZGVmIEhBVkVfU1NFNDEKKyNkZWZpbmUgSEFWRV9TU0U0MQorI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1NFNDEKKyNpZm5kZWYgSEFWRV9TU1NFMworI2RlZmluZSBIQVZFX1NTU0UzCisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TU1NFMworI2RlZmluZSBIQVZFX1NTRTIKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoSEFWRV9TU0UyKQorI2Vycm9yICJUaGlzIGNvZGUgcmVxdWlyZXMgYXQgbGVhc3QgU1NFMi4iCisjZW5kaWYKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi1pbXBsLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTItaW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZTNjMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTItaW1wbC5oCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJfSU1QTF9IX18KKyNkZWZpbmUgX19CTEFLRTJfSU1QTF9IX18KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQzMl90KSBsb2FkMzIoIGNvbnN0IHZvaWQgKnNyYyApCit7CisjaWYgZGVmaW5lZChOQVRJVkVfTElUVExFX0VORElBTikKKyAgdWludDMyX3QgdzsKKyAgbWVtY3B5KCZ3LCBzcmMsIHNpemVvZiB3KTsKKyAgcmV0dXJuIHc7CisjZWxzZQorICBjb25zdCB1aW50OF90ICpwID0gKCBjb25zdCB1aW50OF90ICogKXNyYzsKKyAgdWludDMyX3QgdyA9ICpwKys7CisgIHcgfD0gKCB1aW50MzJfdCApKCAqcCsrICkgPDwgIDg7CisgIHcgfD0gKCB1aW50MzJfdCApKCAqcCsrICkgPDwgMTY7CisgIHcgfD0gKCB1aW50MzJfdCApKCAqcCsrICkgPDwgMjQ7CisgIHJldHVybiB3OworI2VuZGlmCit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDY0X3QpIGxvYWQ2NCggY29uc3Qgdm9pZCAqc3JjICkKK3sKKyNpZiBkZWZpbmVkKE5BVElWRV9MSVRUTEVfRU5ESUFOKQorICB1aW50NjRfdCB3OworICBtZW1jcHkoJncsIHNyYywgc2l6ZW9mIHcpOworICByZXR1cm4gdzsKKyNlbHNlCisgIGNvbnN0IHVpbnQ4X3QgKnAgPSAoIGNvbnN0IHVpbnQ4X3QgKiApc3JjOworICB1aW50NjRfdCB3ID0gKnArKzsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAgODsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAxNjsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAyNDsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAzMjsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCA0MDsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCA0ODsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCA1NjsKKyAgcmV0dXJuIHc7CisjZW5kaWYKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh2b2lkKSBzdG9yZTMyKCB2b2lkICpkc3QsIHVpbnQzMl90IHcgKQoreworI2lmIGRlZmluZWQoTkFUSVZFX0xJVFRMRV9FTkRJQU4pCisgIG1lbWNweShkc3QsICZ3LCBzaXplb2Ygdyk7CisjZWxzZQorICB1aW50OF90ICpwID0gKCB1aW50OF90ICogKWRzdDsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsKKyNlbmRpZgorfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHZvaWQpIHN0b3JlNjQoIHZvaWQgKmRzdCwgdWludDY0X3QgdyApCit7CisjaWYgZGVmaW5lZChOQVRJVkVfTElUVExFX0VORElBTikKKyAgbWVtY3B5KGRzdCwgJncsIHNpemVvZiB3KTsKKyNlbHNlCisgIHVpbnQ4X3QgKnAgPSAoIHVpbnQ4X3QgKiApZHN0OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OworI2VuZGlmCit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDY0X3QpIGxvYWQ0OCggY29uc3Qgdm9pZCAqc3JjICkKK3sKKyAgY29uc3QgdWludDhfdCAqcCA9ICggY29uc3QgdWludDhfdCAqIClzcmM7CisgIHVpbnQ2NF90IHcgPSAqcCsrOworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8ICA4OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDE2OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDI0OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDMyOworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDQwOworICByZXR1cm4gdzsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh2b2lkKSBzdG9yZTQ4KCB2b2lkICpkc3QsIHVpbnQ2NF90IHcgKQoreworICB1aW50OF90ICpwID0gKCB1aW50OF90ICogKWRzdDsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50MzJfdCkgcm90bDMyKCBjb25zdCB1aW50MzJfdCB3LCBjb25zdCB1bnNpZ25lZCBjICkKK3sKKyAgcmV0dXJuICggdyA8PCBjICkgfCAoIHcgPj4gKCAzMiAtIGMgKSApOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQ2NF90KSByb3RsNjQoIGNvbnN0IHVpbnQ2NF90IHcsIGNvbnN0IHVuc2lnbmVkIGMgKQoreworICByZXR1cm4gKCB3IDw8IGMgKSB8ICggdyA+PiAoIDY0IC0gYyApICk7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDMyX3QpIHJvdHIzMiggY29uc3QgdWludDMyX3QgdywgY29uc3QgdW5zaWduZWQgYyApCit7CisgIHJldHVybiAoIHcgPj4gYyApIHwgKCB3IDw8ICggMzIgLSBjICkgKTsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50NjRfdCkgcm90cjY0KCBjb25zdCB1aW50NjRfdCB3LCBjb25zdCB1bnNpZ25lZCBjICkKK3sKKyAgcmV0dXJuICggdyA+PiBjICkgfCAoIHcgPDwgKCA2NCAtIGMgKSApOworfQorCisvKiBwcmV2ZW50cyBjb21waWxlciBvcHRpbWl6aW5nIG91dCBtZW1zZXQoKSAqLworQkxBS0UyX0xPQ0FMX0lOTElORSh2b2lkKSBzZWN1cmVfemVyb19tZW1vcnkodm9pZCAqdiwgc2l6ZV90IG4pCit7CisgIHN0YXRpYyB2b2lkICooKmNvbnN0IHZvbGF0aWxlIG1lbXNldF92KSh2b2lkICosIGludCwgc2l6ZV90KSA9ICZtZW1zZXQ7CisgIG1lbXNldF92KHYsIDAsIG4pOworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTlmZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLmgKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSByZWZlcmVuY2UgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMl9IX18KKyNkZWZpbmUgX19CTEFLRTJfSF9fCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2lmZGVmIEJMQUtFMl9OT19JTkxJTkUKKyNkZWZpbmUgQkxBS0UyX0xPQ0FMX0lOTElORSh0eXBlKSBzdGF0aWMgdHlwZQorI2VuZGlmCisKKyNpZm5kZWYgQkxBS0UyX0xPQ0FMX0lOTElORQorI2RlZmluZSBCTEFLRTJfTE9DQUxfSU5MSU5FKHR5cGUpIHN0YXRpYyBpbmxpbmUgdHlwZQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYKKworICBlbnVtIGJsYWtlMnNfY29uc3RhbnQKKyAgeworICAgIEJMQUtFMlNfQkxPQ0tCWVRFUyA9IDY0LAorICAgIEJMQUtFMlNfT1VUQllURVMgICA9IDMyLAorICAgIEJMQUtFMlNfS0VZQllURVMgICA9IDMyLAorICAgIEJMQUtFMlNfU0FMVEJZVEVTICA9IDgsCisgICAgQkxBS0UyU19QRVJTT05BTEJZVEVTID0gOAorICB9OworCisgIGVudW0gYmxha2UyYl9jb25zdGFudAorICB7CisgICAgQkxBS0UyQl9CTE9DS0JZVEVTID0gMTI4LAorICAgIEJMQUtFMkJfT1VUQllURVMgICA9IDY0LAorICAgIEJMQUtFMkJfS0VZQllURVMgICA9IDY0LAorICAgIEJMQUtFMkJfU0FMVEJZVEVTICA9IDE2LAorICAgIEJMQUtFMkJfUEVSU09OQUxCWVRFUyA9IDE2CisgIH07CisKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJzX3N0YXRlCisgIHsKKyAgICB1aW50MzJfdCBoWzhdOworICAgIHVpbnQzMl90IHRbMl07CisgICAgdWludDMyX3QgZlsyXTsKKyAgICB1aW50OF90ICBidWZbMiAqIEJMQUtFMlNfQkxPQ0tCWVRFU107CisgICAgc2l6ZV90ICAgYnVmbGVuOworICAgIHVpbnQ4X3QgIGxhc3Rfbm9kZTsKKyAgfSBibGFrZTJzX3N0YXRlOworCisgIHR5cGVkZWYgc3RydWN0IF9fYmxha2UyYl9zdGF0ZQorICB7CisgICAgdWludDY0X3QgaFs4XTsKKyAgICB1aW50NjRfdCB0WzJdOworICAgIHVpbnQ2NF90IGZbMl07CisgICAgdWludDhfdCAgYnVmWzIgKiBCTEFLRTJCX0JMT0NLQllURVNdOworICAgIHNpemVfdCAgIGJ1ZmxlbjsKKyAgICB1aW50OF90ICBsYXN0X25vZGU7CisgIH0gYmxha2UyYl9zdGF0ZTsKKworICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMnNwX3N0YXRlCisgIHsKKyAgICBibGFrZTJzX3N0YXRlIFNbOF1bMV07CisgICAgYmxha2Uyc19zdGF0ZSBSWzFdOworICAgIHVpbnQ4X3QgYnVmWzggKiBCTEFLRTJTX0JMT0NLQllURVNdOworICAgIHNpemVfdCAgYnVmbGVuOworICB9IGJsYWtlMnNwX3N0YXRlOworCisgIHR5cGVkZWYgc3RydWN0IF9fYmxha2UyYnBfc3RhdGUKKyAgeworICAgIGJsYWtlMmJfc3RhdGUgU1s0XVsxXTsKKyAgICBibGFrZTJiX3N0YXRlIFJbMV07CisgICAgdWludDhfdCBidWZbNCAqIEJMQUtFMkJfQkxPQ0tCWVRFU107CisgICAgc2l6ZV90ICBidWZsZW47CisgIH0gYmxha2UyYnBfc3RhdGU7CisKKworI3ByYWdtYSBwYWNrKHB1c2gsIDEpCisgIHR5cGVkZWYgc3RydWN0IF9fYmxha2Uyc19wYXJhbQorICB7CisgICAgdWludDhfdCAgZGlnZXN0X2xlbmd0aDsgLyogMSAqLworICAgIHVpbnQ4X3QgIGtleV9sZW5ndGg7ICAgIC8qIDIgKi8KKyAgICB1aW50OF90ICBmYW5vdXQ7ICAgICAgICAvKiAzICovCisgICAgdWludDhfdCAgZGVwdGg7ICAgICAgICAgLyogNCAqLworICAgIHVpbnQzMl90IGxlYWZfbGVuZ3RoOyAgIC8qIDggKi8KKyAgICB1aW50OF90ICBub2RlX29mZnNldFs2XTsvLyAxNAorICAgIHVpbnQ4X3QgIG5vZGVfZGVwdGg7ICAgIC8qIDE1ICovCisgICAgdWludDhfdCAgaW5uZXJfbGVuZ3RoOyAgLyogMTYgKi8KKyAgICAvKiB1aW50OF90ICByZXNlcnZlZFswXTsgKi8KKyAgICB1aW50OF90ICBzYWx0W0JMQUtFMlNfU0FMVEJZVEVTXTsgLyogMjQgKi8KKyAgICB1aW50OF90ICBwZXJzb25hbFtCTEFLRTJTX1BFUlNPTkFMQllURVNdOyAgLyogMzIgKi8KKyAgfSBibGFrZTJzX3BhcmFtOworCisgIHR5cGVkZWYgc3RydWN0IF9fYmxha2UyYl9wYXJhbQorICB7CisgICAgdWludDhfdCAgZGlnZXN0X2xlbmd0aDsgLyogMSAqLworICAgIHVpbnQ4X3QgIGtleV9sZW5ndGg7ICAgIC8qIDIgKi8KKyAgICB1aW50OF90ICBmYW5vdXQ7ICAgICAgICAvKiAzICovCisgICAgdWludDhfdCAgZGVwdGg7ICAgICAgICAgLyogNCAqLworICAgIHVpbnQzMl90IGxlYWZfbGVuZ3RoOyAgIC8qIDggKi8KKyAgICB1aW50NjRfdCBub2RlX29mZnNldDsgICAvKiAxNiAqLworICAgIHVpbnQ4X3QgIG5vZGVfZGVwdGg7ICAgIC8qIDE3ICovCisgICAgdWludDhfdCAgaW5uZXJfbGVuZ3RoOyAgLyogMTggKi8KKyAgICB1aW50OF90ICByZXNlcnZlZFsxNF07ICAvKiAzMiAqLworICAgIHVpbnQ4X3QgIHNhbHRbQkxBS0UyQl9TQUxUQllURVNdOyAvKiA0OCAqLworICAgIHVpbnQ4X3QgIHBlcnNvbmFsW0JMQUtFMkJfUEVSU09OQUxCWVRFU107ICAvKiA2NCAqLworICB9IGJsYWtlMmJfcGFyYW07CisjcHJhZ21hIHBhY2socG9wKQorCisgIC8qIFN0cmVhbWluZyBBUEkgKi8KKyAgaW50IGJsYWtlMnNfaW5pdCggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKTsKKyAgaW50IGJsYWtlMnNfaW5pdF9rZXkoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICk7CisgIGludCBibGFrZTJzX2luaXRfcGFyYW0oIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IGJsYWtlMnNfcGFyYW0gKlAgKTsKKyAgaW50IGJsYWtlMnNfdXBkYXRlKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKTsKKyAgaW50IGJsYWtlMnNfZmluYWwoIGJsYWtlMnNfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKTsKKworICBpbnQgYmxha2UyYl9pbml0KCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApOworICBpbnQgYmxha2UyYl9pbml0X2tleSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMmJfaW5pdF9wYXJhbSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgYmxha2UyYl9wYXJhbSAqUCApOworICBpbnQgYmxha2UyYl91cGRhdGUoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApOworICBpbnQgYmxha2UyYl9maW5hbCggYmxha2UyYl9zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApOworCisgIGludCBibGFrZTJzcF9pbml0KCBibGFrZTJzcF9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKTsKKyAgaW50IGJsYWtlMnNwX2luaXRfa2V5KCBibGFrZTJzcF9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMnNwX3VwZGF0ZSggYmxha2Uyc3Bfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApOworICBpbnQgYmxha2Uyc3BfZmluYWwoIGJsYWtlMnNwX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICk7CisKKyAgaW50IGJsYWtlMmJwX2luaXQoIGJsYWtlMmJwX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApOworICBpbnQgYmxha2UyYnBfaW5pdF9rZXkoIGJsYWtlMmJwX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2UyYnBfdXBkYXRlKCBibGFrZTJicF9zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICk7CisgIGludCBibGFrZTJicF9maW5hbCggYmxha2UyYnBfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKTsKKworICAvKiBTaW1wbGUgQVBJICovCisgIGludCBibGFrZTJzKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMmIoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApOworCisgIGludCBibGFrZTJzcCggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICk7CisgIGludCBibGFrZTJicCggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICk7CisKKyAgc3RhdGljIGlubGluZSBpbnQgYmxha2UyKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKQorICB7CisgICAgcmV0dXJuIGJsYWtlMmIoIG91dCwgaW4sIGtleSwgb3V0bGVuLCBpbmxlbiwga2V5bGVuICk7CisgIH0KKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCit9CisjZW5kaWYKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2UyLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLWxvYWQtc3NlMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMDRhOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLWxvYWQtc3NlMi5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMkJfTE9BRF9TU0UyX0hfXworI2RlZmluZSBfX0JMQUtFMkJfTE9BRF9TU0UyX0hfXworCisjZGVmaW5lIExPQURfTVNHXzBfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTIsIG0wKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNiwgbTQpCisjZGVmaW5lIExPQURfTVNHXzBfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTMsIG0xKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNywgbTUpCisjZGVmaW5lIExPQURfTVNHXzBfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEwLCBtOCk7IGIxID0gX21tX3NldF9lcGk2NHgobTE0LCBtMTIpCisjZGVmaW5lIExPQURfTVNHXzBfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTExLCBtOSk7IGIxID0gX21tX3NldF9lcGk2NHgobTE1LCBtMTMpCisjZGVmaW5lIExPQURfTVNHXzFfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTQsIG0xNCk7IGIxID0gX21tX3NldF9lcGk2NHgobTEzLCBtOSkKKyNkZWZpbmUgTE9BRF9NU0dfMV8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtOCwgbTEwKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNiwgbTE1KQorI2RlZmluZSBMT0FEX01TR18xXzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0wLCBtMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTUsIG0xMSkKKyNkZWZpbmUgTE9BRF9NU0dfMV80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMiwgbTEyKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMywgbTcpCisjZGVmaW5lIExPQURfTVNHXzJfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEyLCBtMTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTUpCisjZGVmaW5lIExPQURfTVNHXzJfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTAsIG04KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTMsIG0yKQorI2RlZmluZSBMT0FEX01TR18yXzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtMTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG05LCBtNykKKyNkZWZpbmUgTE9BRF9NU0dfMl80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNiwgbTE0KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNCwgbTEpCisjZGVmaW5lIExPQURfTVNHXzNfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTMsIG03KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTEsIG0xMykKKyNkZWZpbmUgTE9BRF9NU0dfM18yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMSwgbTkpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTEyKQorI2RlZmluZSBMT0FEX01TR18zXzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG01LCBtMik7IGIxID0gX21tX3NldF9lcGk2NHgobTE1LCBtNCkKKyNkZWZpbmUgTE9BRF9NU0dfM180KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG02KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOCwgbTApCisjZGVmaW5lIExPQURfTVNHXzRfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTUsIG05KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG0yKQorI2RlZmluZSBMT0FEX01TR180XzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG03LCBtMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTE1LCBtNCkKKyNkZWZpbmUgTE9BRF9NU0dfNF8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTEsIG0xNCk7IGIxID0gX21tX3NldF9lcGk2NHgobTMsIG02KQorI2RlZmluZSBMT0FEX01TR180XzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMiwgbTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMywgbTgpCisjZGVmaW5lIExPQURfTVNHXzVfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTYsIG0yKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOCwgbTApCisjZGVmaW5lIExPQURfTVNHXzVfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEwLCBtMTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtMTEpCisjZGVmaW5lIExPQURfTVNHXzVfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTcsIG00KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMSwgbTE1KQorI2RlZmluZSBMT0FEX01TR181XzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG01LCBtMTMpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG05LCBtMTQpCisjZGVmaW5lIExPQURfTVNHXzZfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEsIG0xMik7IGIxID0gX21tX3NldF9lcGk2NHgobTQsIG0xNCkKKyNkZWZpbmUgTE9BRF9NU0dfNl8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG01KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG0xMykKKyNkZWZpbmUgTE9BRF9NU0dfNl8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNiwgbTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG04LCBtOSkKKyNkZWZpbmUgTE9BRF9NU0dfNl80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMywgbTcpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMSwgbTIpCisjZGVmaW5lIExPQURfTVNHXzdfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTcsIG0xMyk7IGIxID0gX21tX3NldF9lcGk2NHgobTMsIG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfN18yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG0xMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTksIG0xKQorI2RlZmluZSBMT0FEX01TR183XzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTUpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0yLCBtOCkKKyNkZWZpbmUgTE9BRF9NU0dfN180KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNCwgbTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTYpCisjZGVmaW5lIExPQURfTVNHXzhfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTE0LCBtNik7IGIxID0gX21tX3NldF9lcGk2NHgobTAsIG0xMSkKKyNkZWZpbmUgTE9BRF9NU0dfOF8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtOSwgbTE1KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOCwgbTMpCisjZGVmaW5lIExPQURfTVNHXzhfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEzLCBtMTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTEpCisjZGVmaW5lIExPQURfTVNHXzhfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTcsIG0yKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTQpCisjZGVmaW5lIExPQURfTVNHXzlfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTgsIG0xMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTEsIG03KQorI2RlZmluZSBMT0FEX01TR185XzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMik7IGIxID0gX21tX3NldF9lcGk2NHgobTUsIG02KQorI2RlZmluZSBMT0FEX01TR185XzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG05LCBtMTUpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMywgbTMpCisjZGVmaW5lIExPQURfTVNHXzlfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTE0LCBtMTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0wLCBtMTIpCisjZGVmaW5lIExPQURfTVNHXzEwXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0yLCBtMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTYsIG00KQorI2RlZmluZSBMT0FEX01TR18xMF8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMywgbTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG03LCBtNSkKKyNkZWZpbmUgTE9BRF9NU0dfMTBfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEwLCBtOCk7IGIxID0gX21tX3NldF9lcGk2NHgobTE0LCBtMTIpCisjZGVmaW5lIExPQURfTVNHXzEwXzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMSwgbTkpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTEzKQorI2RlZmluZSBMT0FEX01TR18xMV8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNCwgbTE0KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTMsIG05KQorI2RlZmluZSBMT0FEX01TR18xMV8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtOCwgbTEwKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNiwgbTE1KQorI2RlZmluZSBMT0FEX01TR18xMV8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMCwgbTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG01LCBtMTEpCisjZGVmaW5lIExPQURfTVNHXzExXzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0yLCBtMTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtNykKKworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTQxLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLWxvYWQtc3NlNDEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmExMzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTQxLmgKQEAgLTAsMCArMSw0MDQgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMkJfTE9BRF9TU0U0MV9IX18KKyNkZWZpbmUgX19CTEFLRTJCX0xPQURfU1NFNDFfSF9fCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMCwgbTEpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtMiwgbTMpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18wXzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG0wLCBtMSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0yLCBtMyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzBfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTQsIG01KTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTYsIG03KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMF80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTUpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNiwgbTcpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xXzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG03LCBtMik7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtNik7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzFfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTUsIG00KTsgXAorYjEgPSBfbW1fYWxpZ25yX2VwaTgobTMsIG03LCA4KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMV8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9zaHVmZmxlX2VwaTMyKG0wLCBfTU1fU0hVRkZMRSgxLDAsMywyKSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG01LCBtMik7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzFfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTYsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTMsIG0xKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMl8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9hbGlnbnJfZXBpOChtNiwgbTUsIDgpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMiwgbTcpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18yXzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG00LCBtMCk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG0xLCBtNiwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzJfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTUsIG0xLCAweEYwKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTMsIG00KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMl80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNywgbTMpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtMiwgbTAsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18zXzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtMSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG02LCBtNSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzNfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTQsIG0wKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTYsIG03KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfM18zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtMSwgbTIsIDB4RjApOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtMiwgbTcsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18zXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0zLCBtNSk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtNCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzRfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTQsIG0yKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTEsIG01KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNF8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtMCwgbTMsIDB4RjApOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtMiwgbTcsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR180XzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG03LCBtNSwgMHhGMCk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG0zLCBtMSwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzRfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYWxpZ25yX2VwaTgobTYsIG0wLCA4KTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTQsIG02LCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNV8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMSwgbTMpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtMCwgbTQpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR181XzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtNSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG01LCBtMSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzVfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTIsIG0zLCAweEYwKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTcsIG0wKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNV80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNiwgbTIpOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtNywgbTQsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR182XzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG02LCBtMCwgMHhGMCk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG03LCBtMik7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzZfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTIsIG03KTsgXAorYjEgPSBfbW1fYWxpZ25yX2VwaTgobTUsIG02LCA4KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNl8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMCwgbTMpOyBcCitiMSA9IF9tbV9zaHVmZmxlX2VwaTMyKG00LCBfTU1fU0hVRkZMRSgxLDAsMywyKSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzZfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTMsIG0xKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTEsIG01LCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfN18xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNiwgbTMpOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtNiwgbTEsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR183XzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2FsaWducl9lcGk4KG03LCBtNSwgOCk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0wLCBtNCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzdfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTIsIG03KTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTQsIG0xKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfN180KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMCwgbTIpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtMywgbTUpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR184XzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0zLCBtNyk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG0wLCBtNSwgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzhfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTcsIG00KTsgXAorYjEgPSBfbW1fYWxpZ25yX2VwaTgobTQsIG0xLCA4KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOF8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IG02OyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtNSwgbTAsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR184XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG0xLCBtMywgMHhGMCk7IFwKK2IxID0gbTI7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzlfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTUsIG00KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTMsIG0wKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOV8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMSwgbTIpOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtMywgbTIsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR185XzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG03LCBtNCk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0xLCBtNik7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzlfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYWxpZ25yX2VwaTgobTcsIG01LCA4KTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTYsIG0wKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMTBfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTIsIG0zKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMTBfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTAsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTIsIG0zKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMTBfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTQsIG01KTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTYsIG03KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMTBfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTQsIG01KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTYsIG03KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMTFfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTcsIG0yKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTQsIG02KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMTFfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTUsIG00KTsgXAorYjEgPSBfbW1fYWxpZ25yX2VwaTgobTMsIG03LCA4KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMTFfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fc2h1ZmZsZV9lcGkzMihtMCwgX01NX1NIVUZGTEUoMSwwLDMsMikpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNSwgbTIpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMV80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTEpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTEpOyBcCit9IHdoaWxlKDApCisKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcmVmLmMgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLXJlZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMzc1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLXJlZi5jCkBAIC0wLDAgKzEsNDIwIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gcmVmZXJlbmNlIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiYmxha2UyLmgiCisjaW5jbHVkZSAiYmxha2UyLWltcGwuaCIKKworc3RhdGljIGNvbnN0IHVpbnQ2NF90IGJsYWtlMmJfSVZbOF0gPQoreworICAweDZhMDllNjY3ZjNiY2M5MDhVTEwsIDB4YmI2N2FlODU4NGNhYTczYlVMTCwKKyAgMHgzYzZlZjM3MmZlOTRmODJiVUxMLCAweGE1NGZmNTNhNWYxZDM2ZjFVTEwsCisgIDB4NTEwZTUyN2ZhZGU2ODJkMVVMTCwgMHg5YjA1Njg4YzJiM2U2YzFmVUxMLAorICAweDFmODNkOWFiZmI0MWJkNmJVTEwsIDB4NWJlMGNkMTkxMzdlMjE3OVVMTAorfTsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgYmxha2UyYl9zaWdtYVsxMl1bMTZdID0KK3sKKyAgeyAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSB9ICwKKyAgeyAxNCwgMTAsICA0LCAgOCwgIDksIDE1LCAxMywgIDYsICAxLCAxMiwgIDAsICAyLCAxMSwgIDcsICA1LCAgMyB9ICwKKyAgeyAxMSwgIDgsIDEyLCAgMCwgIDUsICAyLCAxNSwgMTMsIDEwLCAxNCwgIDMsICA2LCAgNywgIDEsICA5LCAgNCB9ICwKKyAgeyAgNywgIDksICAzLCAgMSwgMTMsIDEyLCAxMSwgMTQsICAyLCAgNiwgIDUsIDEwLCAgNCwgIDAsIDE1LCAgOCB9ICwKKyAgeyAgOSwgIDAsICA1LCAgNywgIDIsICA0LCAxMCwgMTUsIDE0LCAgMSwgMTEsIDEyLCAgNiwgIDgsICAzLCAxMyB9ICwKKyAgeyAgMiwgMTIsICA2LCAxMCwgIDAsIDExLCAgOCwgIDMsICA0LCAxMywgIDcsICA1LCAxNSwgMTQsICAxLCAgOSB9ICwKKyAgeyAxMiwgIDUsICAxLCAxNSwgMTQsIDEzLCAgNCwgMTAsICAwLCAgNywgIDYsICAzLCAgOSwgIDIsICA4LCAxMSB9ICwKKyAgeyAxMywgMTEsICA3LCAxNCwgMTIsICAxLCAgMywgIDksICA1LCAgMCwgMTUsICA0LCAgOCwgIDYsICAyLCAxMCB9ICwKKyAgeyAgNiwgMTUsIDE0LCAgOSwgMTEsICAzLCAgMCwgIDgsIDEyLCAgMiwgMTMsICA3LCAgMSwgIDQsIDEwLCAgNSB9ICwKKyAgeyAxMCwgIDIsICA4LCAgNCwgIDcsICA2LCAgMSwgIDUsIDE1LCAxMSwgIDksIDE0LCAgMywgMTIsIDEzICwgMCB9ICwKKyAgeyAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSB9ICwKKyAgeyAxNCwgMTAsICA0LCAgOCwgIDksIDE1LCAxMywgIDYsICAxLCAxMiwgIDAsICAyLCAxMSwgIDcsICA1LCAgMyB9Cit9OworCisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3NldF9sYXN0bm9kZSggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2NsZWFyX2xhc3Rub2RlKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IDA7CisgIHJldHVybiAwOworfQorCisvKiBTb21lIGhlbHBlciBmdW5jdGlvbnMsIG5vdCBuZWNlc3NhcmlseSB1c2VmdWwgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2lzX2xhc3RibG9jayggY29uc3QgYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIHJldHVybiBTLT5mWzBdICE9IDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3NldF9sYXN0YmxvY2soIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2UyYl9zZXRfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9jbGVhcl9sYXN0YmxvY2soIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2UyYl9jbGVhcl9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAwOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ2NF90IGluYyApCit7CisgIFMtPnRbMF0gKz0gaW5jOworICBTLT50WzFdICs9ICggUy0+dFswXSA8IGluYyApOworICByZXR1cm4gMDsKK30KKworCisKKy8qIFBhcmFtZXRlci1yZWxhdGVkIGZ1bmN0aW9ucyAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2RpZ2VzdF9sZW5ndGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGlnZXN0X2xlbmd0aCApCit7CisgIFAtPmRpZ2VzdF9sZW5ndGggPSBkaWdlc3RfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2Zhbm91dCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBmYW5vdXQgKQoreworICBQLT5mYW5vdXQgPSBmYW5vdXQ7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbWF4X2RlcHRoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRlcHRoICkKK3sKKyAgUC0+ZGVwdGggPSBkZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9sZWFmX2xlbmd0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDMyX3QgbGVhZl9sZW5ndGggKQoreworICBzdG9yZTMyKCAmUC0+bGVhZl9sZW5ndGgsIGxlYWZfbGVuZ3RoICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbm9kZV9vZmZzZXQoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ2NF90IG5vZGVfb2Zmc2V0ICkKK3sKKyAgc3RvcmU2NCggJlAtPm5vZGVfb2Zmc2V0LCBub2RlX29mZnNldCApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X25vZGVfZGVwdGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgbm9kZV9kZXB0aCApCit7CisgIFAtPm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2lubmVyX2xlbmd0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBpbm5lcl9sZW5ndGggKQoreworICBQLT5pbm5lcl9sZW5ndGggPSBpbm5lcl9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfc2FsdCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBzYWx0W0JMQUtFMkJfU0FMVEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+c2FsdCwgc2FsdCwgQkxBS0UyQl9TQUxUQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9wZXJzb25hbCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBwZXJzb25hbFtCTEFLRTJCX1BFUlNPTkFMQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5wZXJzb25hbCwgcGVyc29uYWwsIEJMQUtFMkJfUEVSU09OQUxCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfaW5pdDAoIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBpbnQgaTsKKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMmJfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSBTLT5oW2ldID0gYmxha2UyYl9JVltpXTsKKworICByZXR1cm4gMDsKK30KKworLyogaW5pdCB4b3JzIElWIHdpdGggaW5wdXQgcGFyYW1ldGVyIGJsb2NrICovCitpbnQgYmxha2UyYl9pbml0X3BhcmFtKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCBibGFrZTJiX3BhcmFtICpQICkKK3sKKyAgY29uc3QgdWludDhfdCAqcCA9ICggY29uc3QgdWludDhfdCAqICkoIFAgKTsKKyAgc2l6ZV90IGk7CisKKyAgYmxha2UyYl9pbml0MCggUyApOworCisgIC8qIElWIFhPUiBQYXJhbUJsb2NrICovCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKQorICAgIFMtPmhbaV0gXj0gbG9hZDY0KCBwICsgc2l6ZW9mKCBTLT5oW2ldICkgKiBpICk7CisKKyAgcmV0dXJuIDA7Cit9CisKKworCitpbnQgYmxha2UyYl9pbml0KCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApCit7CisgIGJsYWtlMmJfcGFyYW0gUFsxXTsKKworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIFAtPmRpZ2VzdF9sZW5ndGggPSBvdXRsZW47CisgIFAtPmtleV9sZW5ndGggICAgPSAwOworICBQLT5mYW5vdXQgICAgICAgID0gMTsKKyAgUC0+ZGVwdGggICAgICAgICA9IDE7CisgIHN0b3JlMzIoICZQLT5sZWFmX2xlbmd0aCwgMCApOworICBzdG9yZTY0KCAmUC0+bm9kZV9vZmZzZXQsIDAgKTsKKyAgUC0+bm9kZV9kZXB0aCAgICA9IDA7CisgIFAtPmlubmVyX2xlbmd0aCAgPSAwOworICBtZW1zZXQoIFAtPnJlc2VydmVkLCAwLCBzaXplb2YoIFAtPnJlc2VydmVkICkgKTsKKyAgbWVtc2V0KCBQLT5zYWx0LCAgICAgMCwgc2l6ZW9mKCBQLT5zYWx0ICkgKTsKKyAgbWVtc2V0KCBQLT5wZXJzb25hbCwgMCwgc2l6ZW9mKCBQLT5wZXJzb25hbCApICk7CisgIHJldHVybiBibGFrZTJiX2luaXRfcGFyYW0oIFMsIFAgKTsKK30KKworCitpbnQgYmxha2UyYl9pbml0X2tleSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKQoreworICBibGFrZTJiX3BhcmFtIFBbMV07CisKKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICBpZiAoICFrZXkgfHwgIWtleWxlbiB8fCBrZXlsZW4gPiBCTEFLRTJCX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIFAtPmRpZ2VzdF9sZW5ndGggPSBvdXRsZW47CisgIFAtPmtleV9sZW5ndGggICAgPSBrZXlsZW47CisgIFAtPmZhbm91dCAgICAgICAgPSAxOworICBQLT5kZXB0aCAgICAgICAgID0gMTsKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCAwICk7CisgIHN0b3JlNjQoICZQLT5ub2RlX29mZnNldCwgMCApOworICBQLT5ub2RlX2RlcHRoICAgID0gMDsKKyAgUC0+aW5uZXJfbGVuZ3RoICA9IDA7CisgIG1lbXNldCggUC0+cmVzZXJ2ZWQsIDAsIHNpemVvZiggUC0+cmVzZXJ2ZWQgKSApOworICBtZW1zZXQoIFAtPnNhbHQsICAgICAwLCBzaXplb2YoIFAtPnNhbHQgKSApOworICBtZW1zZXQoIFAtPnBlcnNvbmFsLCAwLCBzaXplb2YoIFAtPnBlcnNvbmFsICkgKTsKKworICBpZiggYmxha2UyYl9pbml0X3BhcmFtKCBTLCBQICkgPCAwICkgcmV0dXJuIC0xOworCisgIHsKKyAgICB1aW50OF90IGJsb2NrW0JMQUtFMkJfQkxPQ0tCWVRFU107CisgICAgbWVtc2V0KCBibG9jaywgMCwgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgbWVtY3B5KCBibG9jaywga2V5LCBrZXlsZW4gKTsKKyAgICBibGFrZTJiX3VwZGF0ZSggUywgYmxvY2ssIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgIHNlY3VyZV96ZXJvX21lbW9yeSggYmxvY2ssIEJMQUtFMkJfQkxPQ0tCWVRFUyApOyAvKiBCdXJuIHRoZSBrZXkgZnJvbSBzdGFjayAqLworICB9CisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGJsYWtlMmJfY29tcHJlc3MoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgYmxvY2tbQkxBS0UyQl9CTE9DS0JZVEVTXSApCit7CisgIHVpbnQ2NF90IG1bMTZdOworICB1aW50NjRfdCB2WzE2XTsKKyAgaW50IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDE2OyArK2kgKQorICAgIG1baV0gPSBsb2FkNjQoIGJsb2NrICsgaSAqIHNpemVvZiggbVtpXSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApCisgICAgdltpXSA9IFMtPmhbaV07CisKKyAgdlsgOF0gPSBibGFrZTJiX0lWWzBdOworICB2WyA5XSA9IGJsYWtlMmJfSVZbMV07CisgIHZbMTBdID0gYmxha2UyYl9JVlsyXTsKKyAgdlsxMV0gPSBibGFrZTJiX0lWWzNdOworICB2WzEyXSA9IFMtPnRbMF0gXiBibGFrZTJiX0lWWzRdOworICB2WzEzXSA9IFMtPnRbMV0gXiBibGFrZTJiX0lWWzVdOworICB2WzE0XSA9IFMtPmZbMF0gXiBibGFrZTJiX0lWWzZdOworICB2WzE1XSA9IFMtPmZbMV0gXiBibGFrZTJiX0lWWzddOworI2RlZmluZSBHKHIsaSxhLGIsYyxkKSBcCisgIGRvIHsgXAorICAgIGEgPSBhICsgYiArIG1bYmxha2UyYl9zaWdtYVtyXVsyKmkrMF1dOyBcCisgICAgZCA9IHJvdHI2NChkIF4gYSwgMzIpOyBcCisgICAgYyA9IGMgKyBkOyBcCisgICAgYiA9IHJvdHI2NChiIF4gYywgMjQpOyBcCisgICAgYSA9IGEgKyBiICsgbVtibGFrZTJiX3NpZ21hW3JdWzIqaSsxXV07IFwKKyAgICBkID0gcm90cjY0KGQgXiBhLCAxNik7IFwKKyAgICBjID0gYyArIGQ7IFwKKyAgICBiID0gcm90cjY0KGIgXiBjLCA2Myk7IFwKKyAgfSB3aGlsZSgwKQorI2RlZmluZSBST1VORChyKSAgXAorICBkbyB7IFwKKyAgICBHKHIsMCx2WyAwXSx2WyA0XSx2WyA4XSx2WzEyXSk7IFwKKyAgICBHKHIsMSx2WyAxXSx2WyA1XSx2WyA5XSx2WzEzXSk7IFwKKyAgICBHKHIsMix2WyAyXSx2WyA2XSx2WzEwXSx2WzE0XSk7IFwKKyAgICBHKHIsMyx2WyAzXSx2WyA3XSx2WzExXSx2WzE1XSk7IFwKKyAgICBHKHIsNCx2WyAwXSx2WyA1XSx2WzEwXSx2WzE1XSk7IFwKKyAgICBHKHIsNSx2WyAxXSx2WyA2XSx2WzExXSx2WzEyXSk7IFwKKyAgICBHKHIsNix2WyAyXSx2WyA3XSx2WyA4XSx2WzEzXSk7IFwKKyAgICBHKHIsNyx2WyAzXSx2WyA0XSx2WyA5XSx2WzE0XSk7IFwKKyAgfSB3aGlsZSgwKQorICBST1VORCggMCApOworICBST1VORCggMSApOworICBST1VORCggMiApOworICBST1VORCggMyApOworICBST1VORCggNCApOworICBST1VORCggNSApOworICBST1VORCggNiApOworICBST1VORCggNyApOworICBST1VORCggOCApOworICBST1VORCggOSApOworICBST1VORCggMTAgKTsKKyAgUk9VTkQoIDExICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApCisgICAgUy0+aFtpXSA9IFMtPmhbaV0gXiB2W2ldIF4gdltpICsgOF07CisKKyN1bmRlZiBHCisjdW5kZWYgUk9VTkQKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGlubGVuIG5vdyBpbiBieXRlcyAqLworaW50IGJsYWtlMmJfdXBkYXRlKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKQoreworICB3aGlsZSggaW5sZW4gPiAwICkKKyAgeworICAgIHNpemVfdCBsZWZ0ID0gUy0+YnVmbGVuOworICAgIHNpemVfdCBmaWxsID0gMiAqIEJMQUtFMkJfQkxPQ0tCWVRFUyAtIGxlZnQ7CisKKyAgICBpZiggaW5sZW4gPiBmaWxsICkKKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCBmaWxsICk7IC8qIEZpbGwgYnVmZmVyICovCisgICAgICBTLT5idWZsZW4gKz0gZmlsbDsKKyAgICAgIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgICAgYmxha2UyYl9jb21wcmVzcyggUywgUy0+YnVmICk7IC8qIENvbXByZXNzICovCisgICAgICBtZW1jcHkoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyQl9CTE9DS0JZVEVTLCBCTEFLRTJCX0JMT0NLQllURVMgKTsgLyogU2hpZnQgYnVmZmVyIGxlZnQgKi8KKyAgICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJCX0JMT0NLQllURVM7CisgICAgICBpbiArPSBmaWxsOworICAgICAgaW5sZW4gLT0gZmlsbDsKKyAgICB9CisgICAgZWxzZSAvKiBpbmxlbiA8PSBmaWxsICovCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgKHNpemVfdClpbmxlbiApOworICAgICAgUy0+YnVmbGVuICs9IChzaXplX3QpaW5sZW47IC8qIEJlIGxhenksIGRvIG5vdCBjb21wcmVzcyAqLworICAgICAgaW4gKz0gaW5sZW47CisgICAgICBpbmxlbiAtPSBpbmxlbjsKKyAgICB9CisgIH0KKworICByZXR1cm4gMDsKK30KKworLyogSXMgdGhpcyBjb3JyZWN0PyAqLworaW50IGJsYWtlMmJfZmluYWwoIGJsYWtlMmJfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKQoreworICB1aW50OF90IGJ1ZmZlcltCTEFLRTJCX09VVEJZVEVTXSA9IHswfTsKKyAgaW50IGk7CisKKyAgaWYoIG91dCA9PSBOVUxMIHx8IG91dGxlbiA9PSAwIHx8IG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKQorICAgIHJldHVybiAtMTsKKworICBpZiggYmxha2UyYl9pc19sYXN0YmxvY2soIFMgKSApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBTLT5idWZsZW4gPiBCTEFLRTJCX0JMT0NLQllURVMgKQorICB7CisgICAgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgYmxha2UyYl9jb21wcmVzcyggUywgUy0+YnVmICk7CisgICAgUy0+YnVmbGVuIC09IEJMQUtFMkJfQkxPQ0tCWVRFUzsKKyAgICBtZW1tb3ZlKCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMkJfQkxPQ0tCWVRFUywgUy0+YnVmbGVuICk7CisgIH0KKworICBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBTLCBTLT5idWZsZW4gKTsKKyAgYmxha2UyYl9zZXRfbGFzdGJsb2NrKCBTICk7CisgIG1lbXNldCggUy0+YnVmICsgUy0+YnVmbGVuLCAwLCAyICogQkxBS0UyQl9CTE9DS0JZVEVTIC0gUy0+YnVmbGVuICk7IC8qIFBhZGRpbmcgKi8KKyAgYmxha2UyYl9jb21wcmVzcyggUywgUy0+YnVmICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIC8qIE91dHB1dCBmdWxsIGhhc2ggdG8gdGVtcCBidWZmZXIgKi8KKyAgICBzdG9yZTY0KCBidWZmZXIgKyBzaXplb2YoIFMtPmhbaV0gKSAqIGksIFMtPmhbaV0gKTsKKworICBtZW1jcHkoIG91dCwgYnVmZmVyLCBvdXRsZW4gKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGlubGVuLCBhdCBsZWFzdCwgc2hvdWxkIGJlIHVpbnQ2NF90LiBPdGhlcnMgY2FuIGJlIHNpemVfdC4gKi8KK2ludCBibGFrZTJiKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKQoreworICBibGFrZTJiX3N0YXRlIFNbMV07CisKKyAgLyogVmVyaWZ5IHBhcmFtZXRlcnMgKi8KKyAgaWYgKCBOVUxMID09IGluICYmIGlubGVuID4gMCApIHJldHVybiAtMTsKKworICBpZiAoIE5VTEwgPT0gb3V0ICkgcmV0dXJuIC0xOworCisgIGlmKCBOVUxMID09IGtleSAmJiBrZXlsZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmKCAhb3V0bGVuIHx8IG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGtleWxlbiA+IEJMQUtFMkJfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGtleWxlbiA+IDAgKQorICB7CisgICAgaWYoIGJsYWtlMmJfaW5pdF9rZXkoIFMsIG91dGxlbiwga2V5LCBrZXlsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKyAgZWxzZQorICB7CisgICAgaWYoIGJsYWtlMmJfaW5pdCggUywgb3V0bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisKKyAgYmxha2UyYl91cGRhdGUoIFMsICggY29uc3QgdWludDhfdCAqIClpbiwgaW5sZW4gKTsKKyAgYmxha2UyYl9maW5hbCggUywgb3V0LCBvdXRsZW4gKTsKKyAgcmV0dXJuIDA7Cit9CisKKyNpZiBkZWZpbmVkKFNVUEVSQ09QKQoraW50IGNyeXB0b19oYXNoKCB1bnNpZ25lZCBjaGFyICpvdXQsIHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBsb25nIGxvbmcgaW5sZW4gKQoreworICByZXR1cm4gYmxha2UyYiggb3V0LCBpbiwgTlVMTCwgQkxBS0UyQl9PVVRCWVRFUywgaW5sZW4sIDAgKTsKK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZChCTEFLRTJCX1NFTEZURVNUKQorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgImJsYWtlMi1rYXQuaCIKK2ludCBtYWluKCBpbnQgYXJnYywgY2hhciAqKmFyZ3YgKQoreworICB1aW50OF90IGtleVtCTEFLRTJCX0tFWUJZVEVTXTsKKyAgdWludDhfdCBidWZbS0FUX0xFTkdUSF07CisgIHNpemVfdCBpOworCisgIGZvciggaSA9IDA7IGkgPCBCTEFLRTJCX0tFWUJZVEVTOyArK2kgKQorICAgIGtleVtpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgICBidWZbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgIHsKKyAgICB1aW50OF90IGhhc2hbQkxBS0UyQl9PVVRCWVRFU107CisgICAgYmxha2UyYiggaGFzaCwgYnVmLCBrZXksIEJMQUtFMkJfT1VUQllURVMsIGksIEJMQUtFMkJfS0VZQllURVMgKTsKKworICAgIGlmKCAwICE9IG1lbWNtcCggaGFzaCwgYmxha2UyYl9rZXllZF9rYXRbaV0sIEJMQUtFMkJfT1VUQllURVMgKSApCisgICAgeworICAgICAgcHV0cyggImVycm9yIiApOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgfQorCisgIHB1dHMoICJvayIgKTsKKyAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yb3VuZC5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yb3VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZTIyNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLXJvdW5kLmgKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMkJfUk9VTkRfSF9fCisjZGVmaW5lIF9fQkxBS0UyQl9ST1VORF9IX18KKworI2RlZmluZSBMT0FEVShwKSAgX21tX2xvYWR1X3NpMTI4KCAoY29uc3QgX19tMTI4aSAqKShwKSApCisjZGVmaW5lIFNUT1JFVShwLHIpIF9tbV9zdG9yZXVfc2kxMjgoKF9fbTEyOGkgKikocCksIHIpCisKKyNkZWZpbmUgVE9GKHJlZykgX21tX2Nhc3RzaTEyOF9wcygocmVnKSkKKyNkZWZpbmUgVE9JKHJlZykgX21tX2Nhc3Rwc19zaTEyOCgocmVnKSkKKworI2RlZmluZSBMSUtFTFkoeCkgX19idWlsdGluX2V4cGVjdCgoeCksMSkKKworCisvKiBNaWNyb2FyY2hpdGVjdHVyZS1zcGVjaWZpYyBtYWNyb3MgKi8KKyNpZm5kZWYgSEFWRV9YT1AKKyNpZmRlZiBIQVZFX1NTU0UzCisjZGVmaW5lIF9tbV9yb3RpX2VwaTY0KHgsIGMpIFwKKyAgICAoLShjKSA9PSAzMikgPyBfbW1fc2h1ZmZsZV9lcGkzMigoeCksIF9NTV9TSFVGRkxFKDIsMywwLDEpKSAgXAorICAgIDogKC0oYykgPT0gMjQpID8gX21tX3NodWZmbGVfZXBpOCgoeCksIHIyNCkgXAorICAgIDogKC0oYykgPT0gMTYpID8gX21tX3NodWZmbGVfZXBpOCgoeCksIHIxNikgXAorICAgIDogKC0oYykgPT0gNjMpID8gX21tX3hvcl9zaTEyOChfbW1fc3JsaV9lcGk2NCgoeCksIC0oYykpLCBfbW1fYWRkX2VwaTY0KCh4KSwgKHgpKSkgIFwKKyAgICA6IF9tbV94b3Jfc2kxMjgoX21tX3NybGlfZXBpNjQoKHgpLCAtKGMpKSwgX21tX3NsbGlfZXBpNjQoKHgpLCA2NC0oLShjKSkpKQorI2Vsc2UKKyNkZWZpbmUgX21tX3JvdGlfZXBpNjQociwgYykgX21tX3hvcl9zaTEyOChfbW1fc3JsaV9lcGk2NCggKHIpLCAtKGMpICksX21tX3NsbGlfZXBpNjQoIChyKSwgNjQtKC0oYykpICkpCisjZW5kaWYKKyNlbHNlCisvKiAuLi4gKi8KKyNlbmRpZgorCisKKworI2RlZmluZSBHMShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSkgXAorICByb3cxbCA9IF9tbV9hZGRfZXBpNjQoX21tX2FkZF9lcGk2NChyb3cxbCwgYjApLCByb3cybCk7IFwKKyAgcm93MWggPSBfbW1fYWRkX2VwaTY0KF9tbV9hZGRfZXBpNjQocm93MWgsIGIxKSwgcm93MmgpOyBcCisgIFwKKyAgcm93NGwgPSBfbW1feG9yX3NpMTI4KHJvdzRsLCByb3cxbCk7IFwKKyAgcm93NGggPSBfbW1feG9yX3NpMTI4KHJvdzRoLCByb3cxaCk7IFwKKyAgXAorICByb3c0bCA9IF9tbV9yb3RpX2VwaTY0KHJvdzRsLCAtMzIpOyBcCisgIHJvdzRoID0gX21tX3JvdGlfZXBpNjQocm93NGgsIC0zMik7IFwKKyAgXAorICByb3czbCA9IF9tbV9hZGRfZXBpNjQocm93M2wsIHJvdzRsKTsgXAorICByb3czaCA9IF9tbV9hZGRfZXBpNjQocm93M2gsIHJvdzRoKTsgXAorICBcCisgIHJvdzJsID0gX21tX3hvcl9zaTEyOChyb3cybCwgcm93M2wpOyBcCisgIHJvdzJoID0gX21tX3hvcl9zaTEyOChyb3cyaCwgcm93M2gpOyBcCisgIFwKKyAgcm93MmwgPSBfbW1fcm90aV9lcGk2NChyb3cybCwgLTI0KTsgXAorICByb3cyaCA9IF9tbV9yb3RpX2VwaTY0KHJvdzJoLCAtMjQpOyBcCisgCisjZGVmaW5lIEcyKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoLGIwLGIxKSBcCisgIHJvdzFsID0gX21tX2FkZF9lcGk2NChfbW1fYWRkX2VwaTY0KHJvdzFsLCBiMCksIHJvdzJsKTsgXAorICByb3cxaCA9IF9tbV9hZGRfZXBpNjQoX21tX2FkZF9lcGk2NChyb3cxaCwgYjEpLCByb3cyaCk7IFwKKyAgXAorICByb3c0bCA9IF9tbV94b3Jfc2kxMjgocm93NGwsIHJvdzFsKTsgXAorICByb3c0aCA9IF9tbV94b3Jfc2kxMjgocm93NGgsIHJvdzFoKTsgXAorICBcCisgIHJvdzRsID0gX21tX3JvdGlfZXBpNjQocm93NGwsIC0xNik7IFwKKyAgcm93NGggPSBfbW1fcm90aV9lcGk2NChyb3c0aCwgLTE2KTsgXAorICBcCisgIHJvdzNsID0gX21tX2FkZF9lcGk2NChyb3czbCwgcm93NGwpOyBcCisgIHJvdzNoID0gX21tX2FkZF9lcGk2NChyb3czaCwgcm93NGgpOyBcCisgIFwKKyAgcm93MmwgPSBfbW1feG9yX3NpMTI4KHJvdzJsLCByb3czbCk7IFwKKyAgcm93MmggPSBfbW1feG9yX3NpMTI4KHJvdzJoLCByb3czaCk7IFwKKyAgXAorICByb3cybCA9IF9tbV9yb3RpX2VwaTY0KHJvdzJsLCAtNjMpOyBcCisgIHJvdzJoID0gX21tX3JvdGlfZXBpNjQocm93MmgsIC02Myk7IFwKKyAKKyNpZiBkZWZpbmVkKEhBVkVfU1NTRTMpCisjZGVmaW5lIERJQUdPTkFMSVpFKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoKSBcCisgIHQwID0gX21tX2FsaWducl9lcGk4KHJvdzJoLCByb3cybCwgOCk7IFwKKyAgdDEgPSBfbW1fYWxpZ25yX2VwaTgocm93MmwsIHJvdzJoLCA4KTsgXAorICByb3cybCA9IHQwOyBcCisgIHJvdzJoID0gdDE7IFwKKyAgXAorICB0MCA9IHJvdzNsOyBcCisgIHJvdzNsID0gcm93M2g7IFwKKyAgcm93M2ggPSB0MDsgICAgXAorICBcCisgIHQwID0gX21tX2FsaWducl9lcGk4KHJvdzRoLCByb3c0bCwgOCk7IFwKKyAgdDEgPSBfbW1fYWxpZ25yX2VwaTgocm93NGwsIHJvdzRoLCA4KTsgXAorICByb3c0bCA9IHQxOyBcCisgIHJvdzRoID0gdDA7CisKKyNkZWZpbmUgVU5ESUFHT05BTElaRShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCkgXAorICB0MCA9IF9tbV9hbGlnbnJfZXBpOChyb3cybCwgcm93MmgsIDgpOyBcCisgIHQxID0gX21tX2FsaWducl9lcGk4KHJvdzJoLCByb3cybCwgOCk7IFwKKyAgcm93MmwgPSB0MDsgXAorICByb3cyaCA9IHQxOyBcCisgIFwKKyAgdDAgPSByb3czbDsgXAorICByb3czbCA9IHJvdzNoOyBcCisgIHJvdzNoID0gdDA7IFwKKyAgXAorICB0MCA9IF9tbV9hbGlnbnJfZXBpOChyb3c0bCwgcm93NGgsIDgpOyBcCisgIHQxID0gX21tX2FsaWducl9lcGk4KHJvdzRoLCByb3c0bCwgOCk7IFwKKyAgcm93NGwgPSB0MTsgXAorICByb3c0aCA9IHQwOworI2Vsc2UKKworI2RlZmluZSBESUFHT05BTElaRShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCkgXAorICB0MCA9IHJvdzRsO1wKKyAgdDEgPSByb3cybDtcCisgIHJvdzRsID0gcm93M2w7XAorICByb3czbCA9IHJvdzNoO1wKKyAgcm93M2ggPSByb3c0bDtcCisgIHJvdzRsID0gX21tX3VucGFja2hpX2VwaTY0KHJvdzRoLCBfbW1fdW5wYWNrbG9fZXBpNjQodDAsIHQwKSk7IFwKKyAgcm93NGggPSBfbW1fdW5wYWNraGlfZXBpNjQodDAsIF9tbV91bnBhY2tsb19lcGk2NChyb3c0aCwgcm93NGgpKTsgXAorICByb3cybCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3cybCwgX21tX3VucGFja2xvX2VwaTY0KHJvdzJoLCByb3cyaCkpOyBcCisgIHJvdzJoID0gX21tX3VucGFja2hpX2VwaTY0KHJvdzJoLCBfbW1fdW5wYWNrbG9fZXBpNjQodDEsIHQxKSkKKworI2RlZmluZSBVTkRJQUdPTkFMSVpFKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoKSBcCisgIHQwID0gcm93M2w7XAorICByb3czbCA9IHJvdzNoO1wKKyAgcm93M2ggPSB0MDtcCisgIHQwID0gcm93Mmw7XAorICB0MSA9IHJvdzRsO1wKKyAgcm93MmwgPSBfbW1fdW5wYWNraGlfZXBpNjQocm93MmgsIF9tbV91bnBhY2tsb19lcGk2NChyb3cybCwgcm93MmwpKTsgXAorICByb3cyaCA9IF9tbV91bnBhY2toaV9lcGk2NCh0MCwgX21tX3VucGFja2xvX2VwaTY0KHJvdzJoLCByb3cyaCkpOyBcCisgIHJvdzRsID0gX21tX3VucGFja2hpX2VwaTY0KHJvdzRsLCBfbW1fdW5wYWNrbG9fZXBpNjQocm93NGgsIHJvdzRoKSk7IFwKKyAgcm93NGggPSBfbW1fdW5wYWNraGlfZXBpNjQocm93NGgsIF9tbV91bnBhY2tsb19lcGk2NCh0MSwgdDEpKQorCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyNpbmNsdWRlICJibGFrZTJiLWxvYWQtc3NlNDEuaCIKKyNlbHNlCisjaW5jbHVkZSAiYmxha2UyYi1sb2FkLXNzZTIuaCIKKyNlbmRpZgorCisjZGVmaW5lIFJPVU5EKHIpIFwKKyAgTE9BRF9NU0dfICMjciAjI18xKGIwLCBiMSk7IFwKKyAgRzEocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgsYjAsYjEpOyBcCisgIExPQURfTVNHXyAjI3IgIyNfMihiMCwgYjEpOyBcCisgIEcyKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoLGIwLGIxKTsgXAorICBESUFHT05BTElaRShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCk7IFwKKyAgTE9BRF9NU0dfICMjciAjI18zKGIwLCBiMSk7IFwKKyAgRzEocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgsYjAsYjEpOyBcCisgIExPQURfTVNHXyAjI3IgIyNfNChiMCwgYjEpOyBcCisgIEcyKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoLGIwLGIxKTsgXAorICBVTkRJQUdPTkFMSVpFKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoKTsKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmIuYyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmI2NWJiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi5jCkBAIC0wLDAgKzEsNDUzIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiYmxha2UyLmgiCisjaW5jbHVkZSAiYmxha2UyLWltcGwuaCIKKworI2luY2x1ZGUgImJsYWtlMi1jb25maWcuaCIKKworI2lmZGVmIF9NU0NfVkVSCisjaW5jbHVkZSA8aW50cmluLmg+IC8qIGZvciBfbW1fc2V0X2VwaTY0eCAqLworI2VuZGlmCisjaW5jbHVkZSA8ZW1taW50cmluLmg+CisjaWYgZGVmaW5lZChIQVZFX1NTU0UzKQorI2luY2x1ZGUgPHRtbWludHJpbi5oPgorI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX1NTRTQxKQorI2luY2x1ZGUgPHNtbWludHJpbi5oPgorI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX0FWWCkKKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9YT1ApCisjaW5jbHVkZSA8eDg2aW50cmluLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImJsYWtlMmItcm91bmQuaCIKKworc3RhdGljIGNvbnN0IHVpbnQ2NF90IGJsYWtlMmJfSVZbOF0gPQoreworICAweDZhMDllNjY3ZjNiY2M5MDhVTEwsIDB4YmI2N2FlODU4NGNhYTczYlVMTCwKKyAgMHgzYzZlZjM3MmZlOTRmODJiVUxMLCAweGE1NGZmNTNhNWYxZDM2ZjFVTEwsCisgIDB4NTEwZTUyN2ZhZGU2ODJkMVVMTCwgMHg5YjA1Njg4YzJiM2U2YzFmVUxMLAorICAweDFmODNkOWFiZmI0MWJkNmJVTEwsIDB4NWJlMGNkMTkxMzdlMjE3OVVMTAorfTsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgYmxha2UyYl9zaWdtYVsxMl1bMTZdID0KK3sKKyAgeyAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSB9ICwKKyAgeyAxNCwgMTAsICA0LCAgOCwgIDksIDE1LCAxMywgIDYsICAxLCAxMiwgIDAsICAyLCAxMSwgIDcsICA1LCAgMyB9ICwKKyAgeyAxMSwgIDgsIDEyLCAgMCwgIDUsICAyLCAxNSwgMTMsIDEwLCAxNCwgIDMsICA2LCAgNywgIDEsICA5LCAgNCB9ICwKKyAgeyAgNywgIDksICAzLCAgMSwgMTMsIDEyLCAxMSwgMTQsICAyLCAgNiwgIDUsIDEwLCAgNCwgIDAsIDE1LCAgOCB9ICwKKyAgeyAgOSwgIDAsICA1LCAgNywgIDIsICA0LCAxMCwgMTUsIDE0LCAgMSwgMTEsIDEyLCAgNiwgIDgsICAzLCAxMyB9ICwKKyAgeyAgMiwgMTIsICA2LCAxMCwgIDAsIDExLCAgOCwgIDMsICA0LCAxMywgIDcsICA1LCAxNSwgMTQsICAxLCAgOSB9ICwKKyAgeyAxMiwgIDUsICAxLCAxNSwgMTQsIDEzLCAgNCwgMTAsICAwLCAgNywgIDYsICAzLCAgOSwgIDIsICA4LCAxMSB9ICwKKyAgeyAxMywgMTEsICA3LCAxNCwgMTIsICAxLCAgMywgIDksICA1LCAgMCwgMTUsICA0LCAgOCwgIDYsICAyLCAxMCB9ICwKKyAgeyAgNiwgMTUsIDE0LCAgOSwgMTEsICAzLCAgMCwgIDgsIDEyLCAgMiwgMTMsICA3LCAgMSwgIDQsIDEwLCAgNSB9ICwKKyAgeyAxMCwgIDIsICA4LCAgNCwgIDcsICA2LCAgMSwgIDUsIDE1LCAxMSwgIDksIDE0LCAgMywgMTIsIDEzICwgMCB9ICwKKyAgeyAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSB9ICwKKyAgeyAxNCwgMTAsICA0LCAgOCwgIDksIDE1LCAxMywgIDYsICAxLCAxMiwgIDAsICAyLCAxMSwgIDcsICA1LCAgMyB9Cit9OworCisKKy8qIFNvbWUgaGVscGVyIGZ1bmN0aW9ucywgbm90IG5lY2Vzc2FyaWx5IHVzZWZ1bCAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfc2V0X2xhc3Rub2RlKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfY2xlYXJfbGFzdG5vZGUoIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2lzX2xhc3RibG9jayggY29uc3QgYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIHJldHVybiBTLT5mWzBdICE9IDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3NldF9sYXN0YmxvY2soIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2UyYl9zZXRfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9jbGVhcl9sYXN0YmxvY2soIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2UyYl9jbGVhcl9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAwOworICByZXR1cm4gMDsKK30KKworCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDY0X3QgaW5jICkKK3sKKyNpZiBfX3g4Nl82NF9fCisgIC8qIEFERC9BREMgY2hhaW4gKi8KKyAgX191aW50MTI4X3QgdCA9ICggKCBfX3VpbnQxMjhfdCApUy0+dFsxXSA8PCA2NCApIHwgUy0+dFswXTsKKyAgdCArPSBpbmM7CisgIFMtPnRbMF0gPSAoIHVpbnQ2NF90ICkoIHQgPj4gIDAgKTsKKyAgUy0+dFsxXSA9ICggdWludDY0X3QgKSggdCA+PiA2NCApOworI2Vsc2UKKyAgUy0+dFswXSArPSBpbmM7CisgIFMtPnRbMV0gKz0gKCBTLT50WzBdIDwgaW5jICk7CisjZW5kaWYKKyAgcmV0dXJuIDA7Cit9CisKKworLyogUGFyYW1ldGVyLXJlbGF0ZWQgZnVuY3Rpb25zICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfZGlnZXN0X2xlbmd0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkaWdlc3RfbGVuZ3RoICkKK3sKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IGRpZ2VzdF9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfZmFub3V0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGZhbm91dCApCit7CisgIFAtPmZhbm91dCA9IGZhbm91dDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9tYXhfZGVwdGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGVwdGggKQoreworICBQLT5kZXB0aCA9IGRlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2xlYWZfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50MzJfdCBsZWFmX2xlbmd0aCApCit7CisgIFAtPmxlYWZfbGVuZ3RoID0gbGVhZl9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbm9kZV9vZmZzZXQoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ2NF90IG5vZGVfb2Zmc2V0ICkKK3sKKyAgUC0+bm9kZV9vZmZzZXQgPSBub2RlX29mZnNldDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9ub2RlX2RlcHRoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IG5vZGVfZGVwdGggKQoreworICBQLT5ub2RlX2RlcHRoID0gbm9kZV9kZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9pbm5lcl9sZW5ndGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgaW5uZXJfbGVuZ3RoICkKK3sKKyAgUC0+aW5uZXJfbGVuZ3RoID0gaW5uZXJfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X3NhbHQoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgc2FsdFtCTEFLRTJCX1NBTFRCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnNhbHQsIHNhbHQsIEJMQUtFMkJfU0FMVEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfcGVyc29uYWwoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgcGVyc29uYWxbQkxBS0UyQl9QRVJTT05BTEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+cGVyc29uYWwsIHBlcnNvbmFsLCBCTEFLRTJCX1BFUlNPTkFMQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2luaXQwKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaW50IGk7CisgIG1lbXNldCggUywgMCwgc2l6ZW9mKCBibGFrZTJiX3N0YXRlICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgUy0+aFtpXSA9IGJsYWtlMmJfSVZbaV07CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGluaXQgeG9ycyBJViB3aXRoIGlucHV0IHBhcmFtZXRlciBibG9jayAqLworaW50IGJsYWtlMmJfaW5pdF9wYXJhbSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgYmxha2UyYl9wYXJhbSAqUCApCit7CisgIC8qYmxha2UyYl9pbml0MCggUyApOyAqLworICBjb25zdCB1aW50OF90ICogdiA9ICggY29uc3QgdWludDhfdCAqICkoIGJsYWtlMmJfSVYgKTsKKyAgY29uc3QgdWludDhfdCAqIHAgPSAoIGNvbnN0IHVpbnQ4X3QgKiApKCBQICk7CisgIHVpbnQ4X3QgKiBoID0gKCB1aW50OF90ICogKSggUy0+aCApOworICBpbnQgaTsKKyAgLyogSVYgWE9SIFBhcmFtQmxvY2sgKi8KKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMmJfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCBCTEFLRTJCX09VVEJZVEVTOyArK2kgKSBoW2ldID0gdltpXSBeIHBbaV07CisKKyAgcmV0dXJuIDA7Cit9CisKKworLyogU29tZSBzb3J0IG9mIGRlZmF1bHQgcGFyYW1ldGVyIGJsb2NrIGluaXRpYWxpemF0aW9uLCBmb3Igc2VxdWVudGlhbCBibGFrZTJiICovCitpbnQgYmxha2UyYl9pbml0KCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApCit7CisgIGNvbnN0IGJsYWtlMmJfcGFyYW0gUCA9CisgIHsKKyAgICBvdXRsZW4sCisgICAgMCwKKyAgICAxLAorICAgIDEsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICB7MH0sCisgICAgezB9LAorICAgIHswfQorICB9OworCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgcmV0dXJuIGJsYWtlMmJfaW5pdF9wYXJhbSggUywgJlAgKTsKK30KKworaW50IGJsYWtlMmJfaW5pdF9rZXkoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgY29uc3QgYmxha2UyYl9wYXJhbSBQID0KKyAgeworICAgIG91dGxlbiwKKyAgICBrZXlsZW4sCisgICAgMSwKKyAgICAxLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgezB9LAorICAgIHswfSwKKyAgICB7MH0KKyAgfTsKKworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIGlmICggKCAha2V5bGVuICkgfHwga2V5bGVuID4gQkxBS0UyQl9LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZiggYmxha2UyYl9pbml0X3BhcmFtKCBTLCAmUCApIDwgMCApCisgICAgcmV0dXJuIDA7CisKKyAgeworICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyQl9CTE9DS0JZVEVTXTsKKyAgICBtZW1zZXQoIGJsb2NrLCAwLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBtZW1jcHkoIGJsb2NrLCBrZXksIGtleWxlbiApOworICAgIGJsYWtlMmJfdXBkYXRlKCBTLCBibG9jaywgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCBibG9jaywgQkxBS0UyQl9CTE9DS0JZVEVTICk7IC8qIEJ1cm4gdGhlIGtleSBmcm9tIHN0YWNrICovCisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2NvbXByZXNzKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IGJsb2NrW0JMQUtFMkJfQkxPQ0tCWVRFU10gKQoreworICBfX20xMjhpIHJvdzFsLCByb3cxaDsKKyAgX19tMTI4aSByb3cybCwgcm93Mmg7CisgIF9fbTEyOGkgcm93M2wsIHJvdzNoOworICBfX20xMjhpIHJvdzRsLCByb3c0aDsKKyAgX19tMTI4aSBiMCwgYjE7CisgIF9fbTEyOGkgdDAsIHQxOworI2lmIGRlZmluZWQoSEFWRV9TU1NFMykgJiYgIWRlZmluZWQoSEFWRV9YT1ApCisgIGNvbnN0IF9fbTEyOGkgcjE2ID0gX21tX3NldHJfZXBpOCggMiwgMywgNCwgNSwgNiwgNywgMCwgMSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgOCwgOSApOworICBjb25zdCBfX20xMjhpIHIyNCA9IF9tbV9zZXRyX2VwaTgoIDMsIDQsIDUsIDYsIDcsIDAsIDEsIDIsIDExLCAxMiwgMTMsIDE0LCAxNSwgOCwgOSwgMTAgKTsKKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyAgY29uc3QgX19tMTI4aSBtMCA9IExPQURVKCBibG9jayArIDAwICk7CisgIGNvbnN0IF9fbTEyOGkgbTEgPSBMT0FEVSggYmxvY2sgKyAxNiApOworICBjb25zdCBfX20xMjhpIG0yID0gTE9BRFUoIGJsb2NrICsgMzIgKTsKKyAgY29uc3QgX19tMTI4aSBtMyA9IExPQURVKCBibG9jayArIDQ4ICk7CisgIGNvbnN0IF9fbTEyOGkgbTQgPSBMT0FEVSggYmxvY2sgKyA2NCApOworICBjb25zdCBfX20xMjhpIG01ID0gTE9BRFUoIGJsb2NrICsgODAgKTsKKyAgY29uc3QgX19tMTI4aSBtNiA9IExPQURVKCBibG9jayArIDk2ICk7CisgIGNvbnN0IF9fbTEyOGkgbTcgPSBMT0FEVSggYmxvY2sgKyAxMTIgKTsKKyNlbHNlCisgIGNvbnN0IHVpbnQ2NF90ICBtMCA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyAwXTsKKyAgY29uc3QgdWludDY0X3QgIG0xID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDFdOworICBjb25zdCB1aW50NjRfdCAgbTIgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgMl07CisgIGNvbnN0IHVpbnQ2NF90ICBtMyA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyAzXTsKKyAgY29uc3QgdWludDY0X3QgIG00ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDRdOworICBjb25zdCB1aW50NjRfdCAgbTUgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgNV07CisgIGNvbnN0IHVpbnQ2NF90ICBtNiA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyA2XTsKKyAgY29uc3QgdWludDY0X3QgIG03ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDddOworICBjb25zdCB1aW50NjRfdCAgbTggPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgOF07CisgIGNvbnN0IHVpbnQ2NF90ICBtOSA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyA5XTsKKyAgY29uc3QgdWludDY0X3QgbTEwID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbMTBdOworICBjb25zdCB1aW50NjRfdCBtMTEgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsxMV07CisgIGNvbnN0IHVpbnQ2NF90IG0xMiA9ICggKCB1aW50NjRfdCAqIClibG9jayApWzEyXTsKKyAgY29uc3QgdWludDY0X3QgbTEzID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbMTNdOworICBjb25zdCB1aW50NjRfdCBtMTQgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsxNF07CisgIGNvbnN0IHVpbnQ2NF90IG0xNSA9ICggKCB1aW50NjRfdCAqIClibG9jayApWzE1XTsKKyNlbmRpZgorICByb3cxbCA9IExPQURVKCAmUy0+aFswXSApOworICByb3cxaCA9IExPQURVKCAmUy0+aFsyXSApOworICByb3cybCA9IExPQURVKCAmUy0+aFs0XSApOworICByb3cyaCA9IExPQURVKCAmUy0+aFs2XSApOworICByb3czbCA9IExPQURVKCAmYmxha2UyYl9JVlswXSApOworICByb3czaCA9IExPQURVKCAmYmxha2UyYl9JVlsyXSApOworICByb3c0bCA9IF9tbV94b3Jfc2kxMjgoIExPQURVKCAmYmxha2UyYl9JVls0XSApLCBMT0FEVSggJlMtPnRbMF0gKSApOworICByb3c0aCA9IF9tbV94b3Jfc2kxMjgoIExPQURVKCAmYmxha2UyYl9JVls2XSApLCBMT0FEVSggJlMtPmZbMF0gKSApOworICBST1VORCggMCApOworICBST1VORCggMSApOworICBST1VORCggMiApOworICBST1VORCggMyApOworICBST1VORCggNCApOworICBST1VORCggNSApOworICBST1VORCggNiApOworICBST1VORCggNyApOworICBST1VORCggOCApOworICBST1VORCggOSApOworICBST1VORCggMTAgKTsKKyAgUk9VTkQoIDExICk7CisgIHJvdzFsID0gX21tX3hvcl9zaTEyOCggcm93M2wsIHJvdzFsICk7CisgIHJvdzFoID0gX21tX3hvcl9zaTEyOCggcm93M2gsIHJvdzFoICk7CisgIFNUT1JFVSggJlMtPmhbMF0sIF9tbV94b3Jfc2kxMjgoIExPQURVKCAmUy0+aFswXSApLCByb3cxbCApICk7CisgIFNUT1JFVSggJlMtPmhbMl0sIF9tbV94b3Jfc2kxMjgoIExPQURVKCAmUy0+aFsyXSApLCByb3cxaCApICk7CisgIHJvdzJsID0gX21tX3hvcl9zaTEyOCggcm93NGwsIHJvdzJsICk7CisgIHJvdzJoID0gX21tX3hvcl9zaTEyOCggcm93NGgsIHJvdzJoICk7CisgIFNUT1JFVSggJlMtPmhbNF0sIF9tbV94b3Jfc2kxMjgoIExPQURVKCAmUy0+aFs0XSApLCByb3cybCApICk7CisgIFNUT1JFVSggJlMtPmhbNl0sIF9tbV94b3Jfc2kxMjgoIExPQURVKCAmUy0+aFs2XSApLCByb3cyaCApICk7CisgIHJldHVybiAwOworfQorCisKK2ludCBibGFrZTJiX3VwZGF0ZSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICkKK3sKKyAgd2hpbGUoIGlubGVuID4gMCApCisgIHsKKyAgICBzaXplX3QgbGVmdCA9IFMtPmJ1ZmxlbjsKKyAgICBzaXplX3QgZmlsbCA9IDIgKiBCTEFLRTJCX0JMT0NLQllURVMgLSBsZWZ0OworCisgICAgaWYoIGlubGVuID4gZmlsbCApCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgZmlsbCApOyAvKiBGaWxsIGJ1ZmZlciAqLworICAgICAgUy0+YnVmbGVuICs9IGZpbGw7CisgICAgICBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICAgIGJsYWtlMmJfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOyAvKiBDb21wcmVzcyAqLworICAgICAgbWVtY3B5KCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMkJfQkxPQ0tCWVRFUywgQkxBS0UyQl9CTE9DS0JZVEVTICk7IC8qIFNoaWZ0IGJ1ZmZlciBsZWZ0ICovCisgICAgICBTLT5idWZsZW4gLT0gQkxBS0UyQl9CTE9DS0JZVEVTOworICAgICAgaW4gKz0gZmlsbDsKKyAgICAgIGlubGVuIC09IGZpbGw7CisgICAgfQorICAgIGVsc2UgLyogaW5sZW4gPD0gZmlsbCAqLworICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIGlubGVuICk7CisgICAgICBTLT5idWZsZW4gKz0gaW5sZW47IC8qIEJlIGxhenksIGRvIG5vdCBjb21wcmVzcyAqLworICAgICAgaW4gKz0gaW5sZW47CisgICAgICBpbmxlbiAtPSBpbmxlbjsKKyAgICB9CisgIH0KKworICByZXR1cm4gMDsKK30KKworCitpbnQgYmxha2UyYl9maW5hbCggYmxha2UyYl9zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApCit7CisgIGlmKCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIGJsYWtlMmJfaXNfbGFzdGJsb2NrKCBTICkgKQorICAgIHJldHVybiAtMTsKKworICBpZiggUy0+YnVmbGVuID4gQkxBS0UyQl9CTE9DS0JZVEVTICkKKyAgeworICAgIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgIGJsYWtlMmJfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJCX0JMT0NLQllURVM7CisgICAgbWVtbW92ZSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJCX0JMT0NLQllURVMsIFMtPmJ1ZmxlbiApOworICB9CisKKyAgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggUywgUy0+YnVmbGVuICk7CisgIGJsYWtlMmJfc2V0X2xhc3RibG9jayggUyApOworICBtZW1zZXQoIFMtPmJ1ZiArIFMtPmJ1ZmxlbiwgMCwgMiAqIEJMQUtFMkJfQkxPQ0tCWVRFUyAtIFMtPmJ1ZmxlbiApOyAvKiBQYWRkaW5nICovCisgIGJsYWtlMmJfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworICBtZW1jcHkoIG91dCwgJlMtPmhbMF0sIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworCitpbnQgYmxha2UyYiggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgYmxha2UyYl9zdGF0ZSBTWzFdOworCisgIC8qIFZlcmlmeSBwYXJhbWV0ZXJzICovCisgIGlmICggTlVMTCA9PSBpbiAmJiBpbmxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IG91dCApIHJldHVybiAtMTsKKworICBpZiggTlVMTCA9PSBrZXkgJiYga2V5bGVuID4gMCApIHJldHVybiAtMTsKKworICBpZiggIW91dGxlbiB8fCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiBCTEFLRTJCX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gKQorICB7CisgICAgaWYoIGJsYWtlMmJfaW5pdF9rZXkoIFMsIG91dGxlbiwga2V5LCBrZXlsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKyAgZWxzZQorICB7CisgICAgaWYoIGJsYWtlMmJfaW5pdCggUywgb3V0bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisKKyAgYmxha2UyYl91cGRhdGUoIFMsICggY29uc3QgdWludDhfdCAqIClpbiwgaW5sZW4gKTsKKyAgYmxha2UyYl9maW5hbCggUywgb3V0LCBvdXRsZW4gKTsKKyAgcmV0dXJuIDA7Cit9CisKKyNpZiBkZWZpbmVkKFNVUEVSQ09QKQoraW50IGNyeXB0b19oYXNoKCB1bnNpZ25lZCBjaGFyICpvdXQsIHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBsb25nIGxvbmcgaW5sZW4gKQoreworICByZXR1cm4gYmxha2UyYiggb3V0LCBpbiwgTlVMTCwgQkxBS0UyQl9PVVRCWVRFUywgaW5sZW4sIDAgKTsKK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZChCTEFLRTJCX1NFTEZURVNUKQorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgImJsYWtlMi1rYXQuaCIKK2ludCBtYWluKCBpbnQgYXJnYywgY2hhciAqKmFyZ3YgKQoreworICB1aW50OF90IGtleVtCTEFLRTJCX0tFWUJZVEVTXTsKKyAgdWludDhfdCBidWZbS0FUX0xFTkdUSF07CisgIHNpemVfdCBpOworCisgIGZvciggaSA9IDA7IGkgPCBCTEFLRTJCX0tFWUJZVEVTOyArK2kgKQorICAgIGtleVtpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgICBidWZbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgIHsKKyAgICB1aW50OF90IGhhc2hbQkxBS0UyQl9PVVRCWVRFU107CisgICAgYmxha2UyYiggaGFzaCwgYnVmLCBrZXksIEJMQUtFMkJfT1VUQllURVMsIGksIEJMQUtFMkJfS0VZQllURVMgKTsKKworICAgIGlmKCAwICE9IG1lbWNtcCggaGFzaCwgYmxha2UyYl9rZXllZF9rYXRbaV0sIEJMQUtFMkJfT1VUQllURVMgKSApCisgICAgeworICAgICAgcHV0cyggImVycm9yIiApOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgfQorCisgIHB1dHMoICJvayIgKTsKKyAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXNzZTIuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC1zc2UyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFkZWZhNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC1zc2UyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyU19MT0FEX1NTRTJfSF9fCisjZGVmaW5lIF9fQkxBS0UyU19MT0FEX1NTRTJfSF9fCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8xKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNixtNCxtMixtMCkKKyNkZWZpbmUgTE9BRF9NU0dfMF8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNyxtNSxtMyxtMSkKKyNkZWZpbmUgTE9BRF9NU0dfMF8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTQsbTEyLG0xMCxtOCkKKyNkZWZpbmUgTE9BRF9NU0dfMF80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTUsbTEzLG0xMSxtOSkKKyNkZWZpbmUgTE9BRF9NU0dfMV8xKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTMsbTksbTQsbTE0KQorI2RlZmluZSBMT0FEX01TR18xXzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG02LG0xNSxtOCxtMTApCisjZGVmaW5lIExPQURfTVNHXzFfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTUsbTExLG0wLG0xKQorI2RlZmluZSBMT0FEX01TR18xXzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0zLG03LG0yLG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfMl8xKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTUsbTUsbTEyLG0xMSkKKyNkZWZpbmUgTE9BRF9NU0dfMl8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTMsbTIsbTAsbTgpCisjZGVmaW5lIExPQURfTVNHXzJfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTksbTcsbTMsbTEwKQorI2RlZmluZSBMT0FEX01TR18yXzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG00LG0xLG02LG0xNCkKKyNkZWZpbmUgTE9BRF9NU0dfM18xKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTEsbTEzLG0zLG03KQorI2RlZmluZSBMT0FEX01TR18zXzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNCxtMTIsbTEsbTkpCisjZGVmaW5lIExPQURfTVNHXzNfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTE1LG00LG01LG0yKQorI2RlZmluZSBMT0FEX01TR18zXzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG04LG0wLG0xMCxtNikKKyNkZWZpbmUgTE9BRF9NU0dfNF8xKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTAsbTIsbTUsbTkpCisjZGVmaW5lIExPQURfTVNHXzRfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTE1LG00LG03LG0wKQorI2RlZmluZSBMT0FEX01TR180XzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0zLG02LG0xMSxtMTQpCisjZGVmaW5lIExPQURfTVNHXzRfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEzLG04LG0xMixtMSkKKyNkZWZpbmUgTE9BRF9NU0dfNV8xKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOCxtMCxtNixtMikKKyNkZWZpbmUgTE9BRF9NU0dfNV8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMyxtMTEsbTEwLG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfNV8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMSxtMTUsbTcsbTQpCisjZGVmaW5lIExPQURfTVNHXzVfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTksbTE0LG01LG0xMykKKyNkZWZpbmUgTE9BRF9NU0dfNl8xKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNCxtMTQsbTEsbTEyKQorI2RlZmluZSBMT0FEX01TR182XzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMCxtMTMsbTE1LG01KQorI2RlZmluZSBMT0FEX01TR182XzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG04LG05LG02LG0wKQorI2RlZmluZSBMT0FEX01TR182XzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMSxtMixtMyxtNykKKyNkZWZpbmUgTE9BRF9NU0dfN18xKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMyxtMTIsbTcsbTEzKQorI2RlZmluZSBMT0FEX01TR183XzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG05LG0xLG0xNCxtMTEpCisjZGVmaW5lIExPQURfTVNHXzdfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTIsbTgsbTE1LG01KQorI2RlZmluZSBMT0FEX01TR183XzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMCxtNixtNCxtMCkKKyNkZWZpbmUgTE9BRF9NU0dfOF8xKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMCxtMTEsbTE0LG02KQorI2RlZmluZSBMT0FEX01TR184XzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG04LG0zLG05LG0xNSkKKyNkZWZpbmUgTE9BRF9NU0dfOF8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTAsbTEsbTEzLG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfOF80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNSxtNCxtNyxtMikKKyNkZWZpbmUgTE9BRF9NU0dfOV8xKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMSxtNyxtOCxtMTApCisjZGVmaW5lIExPQURfTVNHXzlfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTUsbTYsbTQsbTIpCisjZGVmaW5lIExPQURfTVNHXzlfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEzLG0zLG05LG0xNSkKKyNkZWZpbmUgTE9BRF9NU0dfOV80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMCxtMTIsbTE0LG0xMSkKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC1zc2U0MS5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXNzZTQxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRiZjBjZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC1zc2U0MS5oCkBAIC0wLDAgKzEsMjMxIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJTX0xPQURfU1NFNDFfSF9fCisjZGVmaW5lIF9fQkxBS0UyU19MT0FEX1NTRTQxX0hfXworCisjZGVmaW5lIExPQURfTVNHXzBfMShidWYpIFwKK2J1ZiA9IFRPSShfbW1fc2h1ZmZsZV9wcyhUT0YobTApLCBUT0YobTEpLCBfTU1fU0hVRkZMRSgyLDAsMiwwKSkpOworCisjZGVmaW5lIExPQURfTVNHXzBfMihidWYpIFwKK2J1ZiA9IFRPSShfbW1fc2h1ZmZsZV9wcyhUT0YobTApLCBUT0YobTEpLCBfTU1fU0hVRkZMRSgzLDEsMywxKSkpOworCisjZGVmaW5lIExPQURfTVNHXzBfMyhidWYpIFwKK2J1ZiA9IFRPSShfbW1fc2h1ZmZsZV9wcyhUT0YobTIpLCBUT0YobTMpLCBfTU1fU0hVRkZMRSgyLDAsMiwwKSkpOworCisjZGVmaW5lIExPQURfTVNHXzBfNChidWYpIFwKK2J1ZiA9IFRPSShfbW1fc2h1ZmZsZV9wcyhUT0YobTIpLCBUT0YobTMpLCBfTU1fU0hVRkZMRSgzLDEsMywxKSkpOworCisjZGVmaW5lIExPQURfTVNHXzFfMShidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0xLCBtMiwgMHgwQyk7IFwKK3QxID0gX21tX3NsbGlfc2kxMjgobTMsIDQpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCwgdDEsIDB4RjApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwxLDAsMykpOworCisjZGVmaW5lIExPQURfTVNHXzFfMihidWYpIFwKK3QwID0gX21tX3NodWZmbGVfZXBpMzIobTIsX01NX1NIVUZGTEUoMCwwLDIsMCkpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMSxtMywweEMwKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsIHQxLCAweEYwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDIsMywwLDEpKTsKKworI2RlZmluZSBMT0FEX01TR18xXzMoYnVmKSBcCit0MCA9IF9tbV9zbGxpX3NpMTI4KG0xLCA0KTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTIsIHQwLCAweDMwKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYobTAsIHQxLCAweEYwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDIsMywwLDEpKTsKKworI2RlZmluZSBMT0FEX01TR18xXzQoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMCxtMSk7IFwKK3QxID0gX21tX3NsbGlfc2kxMjgobTMsIDQpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCwgdDEsIDB4MEMpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwzLDAsMSkpOworCisjZGVmaW5lIExPQURfTVNHXzJfMShidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0yLG0zKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTMsbTEsMHgwQyk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLCB0MSwgMHgwRik7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgzLDEsMCwyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl8yKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTIsbTApOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNih0MCwgbTAsIDB4RjApOyBcCit0MiA9IF9tbV9zbGxpX3NpMTI4KG0zLCA4KTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQxLCB0MiwgMHhDMCk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl8zKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTAsIG0yLCAweDNDKTsgXAordDEgPSBfbW1fc3JsaV9zaTEyOChtMSwgMTIpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDAzKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDEsMCwzLDIpKTsKKworI2RlZmluZSBMT0FEX01TR18yXzQoYnVmKSBcCit0MCA9IF9tbV9zbGxpX3NpMTI4KG0zLCA0KTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTAsIG0xLCAweDMzKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsIHQwLCAweEMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDAsMSwyLDMpKTsKKworI2RlZmluZSBMT0FEX01TR18zXzEoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMCxtMSk7IFwKK3QxID0gX21tX3VucGFja2hpX2VwaTMyKHQwLCBtMik7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQxLCBtMywgMHgwQyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgzLDEsMCwyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18yKGJ1ZikgXAordDAgPSBfbW1fc2xsaV9zaTEyOChtMiwgOCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0zLG0wLDB4MEMpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MSwgdDAsIDB4QzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwwLDEsMykpOworCisjZGVmaW5lIExPQURfTVNHXzNfMyhidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0wLG0xLDB4MEYpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNih0MCwgbTMsIDB4QzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MSwgX01NX1NIVUZGTEUoMywwLDEsMikpOworCisjZGVmaW5lIExPQURfTVNHXzNfNChidWYpIFwKK3QwID0gX21tX3VucGFja2xvX2VwaTMyKG0wLG0yKTsgXAordDEgPSBfbW1fdW5wYWNraGlfZXBpMzIobTEsbTIpOyBcCitidWYgPSBfbW1fdW5wYWNrbG9fZXBpNjQodDEsdDApOworCisjZGVmaW5lIExPQURfTVNHXzRfMShidWYpIFwKK3QwID0gX21tX3VucGFja2xvX2VwaTY0KG0xLG0yKTsgXAordDEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTAsbTIpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDMzKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDIsMCwxLDMpKTsKKworI2RlZmluZSBMT0FEX01TR180XzIoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGk2NChtMSxtMyk7IFwKK3QxID0gX21tX3VucGFja2xvX2VwaTY0KG0wLG0xKTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MzMpOworCisjZGVmaW5lIExPQURfTVNHXzRfMyhidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTY0KG0zLG0xKTsgXAordDEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTIsbTApOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDEsdDAsMHgzMyk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF80KGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTAsbTIsMHgwMyk7IFwKK3QxID0gX21tX3NsbGlfc2kxMjgodDAsIDgpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MSxtMywweDBGKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDEsMiwwLDMpKTsKKworI2RlZmluZSBMT0FEX01TR181XzEoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMCxtMSk7IFwKK3QxID0gX21tX3VucGFja2xvX2VwaTMyKG0wLG0yKTsgXAorYnVmID0gX21tX3VucGFja2xvX2VwaTY0KHQwLHQxKTsKKworI2RlZmluZSBMT0FEX01TR181XzIoYnVmKSBcCit0MCA9IF9tbV9zcmxpX3NpMTI4KG0yLCA0KTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTAsbTMsMHgwMyk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MSx0MCwweDNDKTsKKworI2RlZmluZSBMT0FEX01TR181XzMoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMSxtMCwweDBDKTsgXAordDEgPSBfbW1fc3JsaV9zaTEyOChtMywgNCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMSwyLDMsMCkpOworCisjZGVmaW5lIExPQURfTVNHXzVfNChidWYpIFwKK3QwID0gX21tX3VucGFja2xvX2VwaTY0KG0xLG0yKTsgXAordDE9IF9tbV9zaHVmZmxlX2VwaTMyKG0zLCBfTU1fU0hVRkZMRSgwLDIsMCwxKSk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDMzKTsKKworI2RlZmluZSBMT0FEX01TR182XzEoYnVmKSBcCit0MCA9IF9tbV9zbGxpX3NpMTI4KG0xLCAxMik7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0wLG0zLDB4MzMpOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDEsdDAsMHhDMCk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl8yKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTMsbTIsMHgzMCk7IFwKK3QxID0gX21tX3NybGlfc2kxMjgobTEsIDQpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDAzKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDIsMSwzLDApKTsKKworI2RlZmluZSBMT0FEX01TR182XzMoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGk2NChtMCxtMik7IFwKK3QxID0gX21tX3NybGlfc2kxMjgobTEsIDQpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMihfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgwQyksIF9NTV9TSFVGRkxFKDIsMywxLDApKTsKKworI2RlZmluZSBMT0FEX01TR182XzQoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMSxtMik7IFwKK3QxID0gX21tX3VucGFja2hpX2VwaTY0KG0wLHQwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDEsIF9NTV9TSFVGRkxFKDMsMCwxLDIpKTsKKworI2RlZmluZSBMT0FEX01TR183XzEoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMCxtMSk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KHQwLG0zLDB4MEYpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MSxfTU1fU0hVRkZMRSgyLDAsMywxKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN18yKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTIsbTMsMHgzMCk7IFwKK3QxID0gX21tX3NybGlfc2kxMjgobTAsNCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MDMpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMSwwLDIsMykpOworCisjZGVmaW5lIExPQURfTVNHXzdfMyhidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTY0KG0wLG0zKTsgXAordDEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTEsbTIpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDNDKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsX01NX1NIVUZGTEUoMCwyLDMsMSkpOworCisjZGVmaW5lIExPQURfTVNHXzdfNChidWYpIFwKK3QwID0gX21tX3VucGFja2xvX2VwaTMyKG0wLG0xKTsgXAordDEgPSBfbW1fdW5wYWNraGlfZXBpMzIobTEsbTIpOyBcCitidWYgPSBfbW1fdW5wYWNrbG9fZXBpNjQodDAsdDEpOworCisjZGVmaW5lIExPQURfTVNHXzhfMShidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0xLG0zKTsgXAordDEgPSBfbW1fdW5wYWNrbG9fZXBpNjQodDAsbTApOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MSxtMiwweEMwKTsgXAorYnVmID0gX21tX3NodWZmbGVoaV9lcGkxNih0MixfTU1fU0hVRkZMRSgxLDAsMywyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOF8yKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTMpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMix0MCwweEYwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDEsX01NX1NIVUZGTEUoMCwyLDEsMykpOworCisjZGVmaW5lIExPQURfTVNHXzhfMyhidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0yLG0wLDB4MEMpOyBcCit0MSA9IF9tbV9zbGxpX3NpMTI4KHQwLDQpOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDEsbTMsMHgwRik7CisKKyNkZWZpbmUgTE9BRF9NU0dfOF80KGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTEsbTAsMHgzMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQwLF9NTV9TSFVGRkxFKDEsMCwzLDIpKTsKKworI2RlZmluZSBMT0FEX01TR185XzEoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMCxtMiwweDAzKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTEsbTIsMHgzMCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQxLHQwLDB4MEYpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MixfTU1fU0hVRkZMRSgxLDMsMCwyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8yKGJ1ZikgXAordDAgPSBfbW1fc2xsaV9zaTEyOChtMCw0KTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTEsdDAsMHhDMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQxLF9NTV9TSFVGRkxFKDEsMiwwLDMpKTsKKworI2RlZmluZSBMT0FEX01TR185XzMoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMCxtMyk7IFwKK3QxID0gX21tX3VucGFja2xvX2VwaTMyKG0yLG0zKTsgXAordDIgPSBfbW1fdW5wYWNraGlfZXBpNjQodDAsdDEpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MixfTU1fU0hVRkZMRSgzLDAsMiwxKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV80KGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTMsbTIsMHhDMCk7IFwKK3QxID0gX21tX3VucGFja2xvX2VwaTMyKG0wLG0zKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgwRik7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLF9NTV9TSFVGRkxFKDAsMSwyLDMpKTsKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC14b3AuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC14b3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2I1ZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXhvcC5oCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJTX0xPQURfWE9QX0hfXworI2RlZmluZSBfX0JMQUtFMlNfTE9BRF9YT1BfSF9fCisKKyNkZWZpbmUgVE9CKHgpICgoeCkqNCoweDAxMDEwMTAxICsgMHgwMzAyMDEwMCkgLyogLi5vciBub3QgVE9CICovCisKKy8qIEJhc2ljIFZQUEVSTSBlbXVsYXRpb24sIGZvciB0ZXN0aW5nIHB1cnBvc2VzICovCisvKnN0YXRpYyBfX20xMjhpIF9tbV9wZXJtX2VwaTgoY29uc3QgX19tMTI4aSBzcmMxLCBjb25zdCBfX20xMjhpIHNyYzIsIGNvbnN0IF9fbTEyOGkgc2VsKQoreworICAgY29uc3QgX19tMTI4aSBzaXh0ZWVuID0gX21tX3NldDFfZXBpOCgxNik7CisgICBjb25zdCBfX20xMjhpIHQwID0gX21tX3NodWZmbGVfZXBpOChzcmMxLCBzZWwpOworICAgY29uc3QgX19tMTI4aSBzMSA9IF9tbV9zaHVmZmxlX2VwaTgoc3JjMiwgX21tX3N1Yl9lcGk4KHNlbCwgc2l4dGVlbikpOworICAgY29uc3QgX19tMTI4aSBtYXNrID0gX21tX29yX3NpMTI4KF9tbV9jbXBlcV9lcGk4KHNlbCwgc2l4dGVlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21tX2NtcGd0X2VwaTgoc2VsLCBzaXh0ZWVuKSk7IC8qICg+PTE2KSA9IDB4ZmYgOiAwMCAqLworICAgcmV0dXJuIF9tbV9ibGVuZHZfZXBpOCh0MCwgczEsIG1hc2spOworfSovCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8xKGJ1ZikgXAorYnVmID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQig0KSxUT0IoMiksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzBfMihidWYpIFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoNSksVE9CKDMpLFRPQigxKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18wXzMoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0yLCBtMywgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDQpLFRPQigyKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF80KGJ1ZikgXAorYnVmID0gX21tX3Blcm1fZXBpOChtMiwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQig1KSxUT0IoMyksVE9CKDEpKSApOworCisjZGVmaW5lIExPQURfTVNHXzFfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQig1KSxUT0IoMCksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDIpLFRPQigxKSxUT0IoNikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0xLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMiksVE9CKDApLFRPQig0KSxUT0IoNikpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNyksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18xXzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMCksVE9CKDApLFRPQigxKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig3KSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzFfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig3KSxUT0IoMiksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQigxKSxUT0IoNCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0xLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDEpLFRPQigwKSxUT0IoNykpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoMiksVE9CKDQpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18yXzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMiksVE9CKDApLFRPQig0KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzJfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQig3KSxUT0IoMyksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDIpLFRPQigxKSxUT0IoNikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl80KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNCksVE9CKDEpLFRPQig2KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDEpLFRPQig2KSkgKTsKKworI2RlZmluZSBMT0FEX01TR18zXzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMCksVE9CKDMpLFRPQig3KSkgKTsgXAordDAgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNyksVE9CKDIpLFRPQigxKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNSksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18zXzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMCksVE9CKDEpLFRPQig1KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQig0KSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzNfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQig0KSxUT0IoNSksVE9CKDIpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoNyksVE9CKDIpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM180KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQigwKSxUT0IoNikpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoMiksVE9CKDYpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR180XzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMiksVE9CKDUpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQigyKSxUT0IoMSksVE9CKDUpKSApOworCisjZGVmaW5lIExPQURfTVNHXzRfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQig0KSxUT0IoNyksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoNyksVE9CKDIpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDYpLFRPQigwKSxUT0IoMCkpICk7IFwKK3QwID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoNyksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQigxKSxUT0IoNikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF80KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDQpLFRPQigwKSxUT0IoMSkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMiksVE9CKDQpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR181XzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMCksVE9CKDYpLFRPQigyKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDQpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzVfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig3KSxUT0IoNiksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQigxKSxUT0IoNCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMSksVE9CKDApLFRPQig3KSxUT0IoNCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNyksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR181XzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMCksVE9CKDEpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig2KSxUT0IoMSksVE9CKDUpKSApOworCisjZGVmaW5lIExPQURfTVNHXzZfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDQpLFRPQigwKSxUT0IoMSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDYpLFRPQigxKSxUT0IoNCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl8yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0xLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDApLFRPQigwKSxUT0IoMSkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNSksVE9CKDcpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR182XzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMCksVE9CKDYpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDQpLFRPQig1KSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzZfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigyKSxUT0IoMyksVE9CKDcpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNyksVE9CKDIpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN18xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDApLFRPQig3KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNCksVE9CKDEpLFRPQig1KSkgKTsKKworI2RlZmluZSBMT0FEX01TR183XzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMSksVE9CKDApLFRPQig3KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoNiksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzdfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDIpLFRPQigwKSxUT0IoMCksVE9CKDUpKSApOyBcCit0MCA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNCksVE9CKDEpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoNyksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzdfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQig2KSxUT0IoNCksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDIpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOF8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQigwKSxUT0IoNikpICk7IFwKK3QwID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig3KSxUT0IoMSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig2KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOF8yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNCksVE9CKDMpLFRPQig1KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDEpLFRPQig3KSkgKTsKKworI2RlZmluZSBMT0FEX01TR184XzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoMSksVE9CKDApLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoNSksVE9CKDQpKSApOyBcCisgCisjZGVmaW5lIExPQURfTVNHXzhfNChidWYpIFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoNCksVE9CKDcpLFRPQigyKSkgKTsKKworI2RlZmluZSBMT0FEX01TR185XzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigxKSxUT0IoNyksVE9CKDApLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoNCksVE9CKDYpKSApOworCisjZGVmaW5lIExPQURfTVNHXzlfMihidWYpIFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoNiksVE9CKDQpLFRPQigyKSkgKTsKKworI2RlZmluZSBMT0FEX01TR185XzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMyksVE9CKDUpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigyKSxUT0IoMSksVE9CKDcpKSApOworCisjZGVmaW5lIExPQURfTVNHXzlfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoMCksVE9CKDcpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDQpLFRPQig2KSxUT0IoMCkpICk7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLXJlZi5jIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1yZWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjM2NzUzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1yZWYuYwpAQCAtMCwwICsxLDQxMSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIHJlZmVyZW5jZSBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImJsYWtlMi5oIgorI2luY2x1ZGUgImJsYWtlMi1pbXBsLmgiCisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBibGFrZTJzX0lWWzhdID0KK3sKKyAgMHg2QTA5RTY2N1VMLCAweEJCNjdBRTg1VUwsIDB4M0M2RUYzNzJVTCwgMHhBNTRGRjUzQVVMLAorICAweDUxMEU1MjdGVUwsIDB4OUIwNTY4OENVTCwgMHgxRjgzRDlBQlVMLCAweDVCRTBDRDE5VUwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGJsYWtlMnNfc2lnbWFbMTBdWzE2XSA9Cit7CisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfSAsCisgIHsgMTEsICA4LCAxMiwgIDAsICA1LCAgMiwgMTUsIDEzLCAxMCwgMTQsICAzLCAgNiwgIDcsICAxLCAgOSwgIDQgfSAsCisgIHsgIDcsICA5LCAgMywgIDEsIDEzLCAxMiwgMTEsIDE0LCAgMiwgIDYsICA1LCAxMCwgIDQsICAwLCAxNSwgIDggfSAsCisgIHsgIDksICAwLCAgNSwgIDcsICAyLCAgNCwgMTAsIDE1LCAxNCwgIDEsIDExLCAxMiwgIDYsICA4LCAgMywgMTMgfSAsCisgIHsgIDIsIDEyLCAgNiwgMTAsICAwLCAxMSwgIDgsICAzLCAgNCwgMTMsICA3LCAgNSwgMTUsIDE0LCAgMSwgIDkgfSAsCisgIHsgMTIsICA1LCAgMSwgMTUsIDE0LCAxMywgIDQsIDEwLCAgMCwgIDcsICA2LCAgMywgIDksICAyLCAgOCwgMTEgfSAsCisgIHsgMTMsIDExLCAgNywgMTQsIDEyLCAgMSwgIDMsICA5LCAgNSwgIDAsIDE1LCAgNCwgIDgsICA2LCAgMiwgMTAgfSAsCisgIHsgIDYsIDE1LCAxNCwgIDksIDExLCAgMywgIDAsICA4LCAxMiwgIDIsIDEzLCAgNywgIDEsICA0LCAxMCwgIDUgfSAsCisgIHsgMTAsICAyLCAgOCwgIDQsICA3LCAgNiwgIDEsICA1LCAxNSwgMTEsICA5LCAxNCwgIDMsIDEyLCAxMyAsIDAgfSAsCit9OworCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19zZXRfbGFzdG5vZGUoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19jbGVhcl9sYXN0bm9kZSggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAwOworICByZXR1cm4gMDsKK30KKworLyogU29tZSBoZWxwZXIgZnVuY3Rpb25zLCBub3QgbmVjZXNzYXJpbHkgdXNlZnVsICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19pc19sYXN0YmxvY2soIGNvbnN0IGJsYWtlMnNfc3RhdGUgKlMgKQoreworICByZXR1cm4gUy0+ZlswXSAhPSAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19zZXRfbGFzdGJsb2NrKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMnNfc2V0X2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfY2xlYXJfbGFzdGJsb2NrKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMnNfY2xlYXJfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50MzJfdCBpbmMgKQoreworICBTLT50WzBdICs9IGluYzsKKyAgUy0+dFsxXSArPSAoIFMtPnRbMF0gPCBpbmMgKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIFBhcmFtZXRlci1yZWxhdGVkIGZ1bmN0aW9ucyAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2RpZ2VzdF9sZW5ndGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGlnZXN0X2xlbmd0aCApCit7CisgIFAtPmRpZ2VzdF9sZW5ndGggPSBkaWdlc3RfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2Zhbm91dCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBmYW5vdXQgKQoreworICBQLT5mYW5vdXQgPSBmYW5vdXQ7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbWF4X2RlcHRoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRlcHRoICkKK3sKKyAgUC0+ZGVwdGggPSBkZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9sZWFmX2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDMyX3QgbGVhZl9sZW5ndGggKQoreworICBzdG9yZTMyKCAmUC0+bGVhZl9sZW5ndGgsIGxlYWZfbGVuZ3RoICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbm9kZV9vZmZzZXQoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ2NF90IG5vZGVfb2Zmc2V0ICkKK3sKKyAgc3RvcmU0OCggUC0+bm9kZV9vZmZzZXQsIG5vZGVfb2Zmc2V0ICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbm9kZV9kZXB0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBub2RlX2RlcHRoICkKK3sKKyAgUC0+bm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfaW5uZXJfbGVuZ3RoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGlubmVyX2xlbmd0aCApCit7CisgIFAtPmlubmVyX2xlbmd0aCA9IGlubmVyX2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9zYWx0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHNhbHRbQkxBS0UyU19TQUxUQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5zYWx0LCBzYWx0LCBCTEFLRTJTX1NBTFRCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X3BlcnNvbmFsKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHBlcnNvbmFsW0JMQUtFMlNfUEVSU09OQUxCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnBlcnNvbmFsLCBwZXJzb25hbCwgQkxBS0UyU19QRVJTT05BTEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19pbml0MCggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIGludCBpOworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2Uyc19zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIFMtPmhbaV0gPSBibGFrZTJzX0lWW2ldOworCisgIHJldHVybiAwOworfQorCisvKiBpbml0MiB4b3JzIElWIHdpdGggaW5wdXQgcGFyYW1ldGVyIGJsb2NrICovCitpbnQgYmxha2Uyc19pbml0X3BhcmFtKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCBibGFrZTJzX3BhcmFtICpQICkKK3sKKyAgY29uc3QgdWludDMyX3QgKnAgPSAoIGNvbnN0IHVpbnQzMl90ICogKSggUCApOworICBzaXplX3QgaTsKKworICBibGFrZTJzX2luaXQwKCBTICk7CisKKyAgLyogSVYgWE9SIFBhcmFtQmxvY2sgKi8KKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApCisgICAgUy0+aFtpXSBePSBsb2FkMzIoICZwW2ldICk7CisKKyAgcmV0dXJuIDA7Cit9CisKKworLyogU2VxdWVudGlhbCBibGFrZTJzIGluaXRpYWxpemF0aW9uICovCitpbnQgYmxha2Uyc19pbml0KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApCit7CisgIGJsYWtlMnNfcGFyYW0gUFsxXTsKKworICAvKiBNb3ZlIGludGVydmFsIHZlcmlmaWNhdGlvbiBoZXJlPyAqLworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIFAtPmRpZ2VzdF9sZW5ndGggPSBvdXRsZW47CisgIFAtPmtleV9sZW5ndGggICAgPSAwOworICBQLT5mYW5vdXQgICAgICAgID0gMTsKKyAgUC0+ZGVwdGggICAgICAgICA9IDE7CisgIHN0b3JlMzIoICZQLT5sZWFmX2xlbmd0aCwgMCApOworICBzdG9yZTQ4KCAmUC0+bm9kZV9vZmZzZXQsIDAgKTsKKyAgUC0+bm9kZV9kZXB0aCAgICA9IDA7CisgIFAtPmlubmVyX2xlbmd0aCAgPSAwOworICAvKiBtZW1zZXQoUC0+cmVzZXJ2ZWQsIDAsIHNpemVvZihQLT5yZXNlcnZlZCkgKTsgKi8KKyAgbWVtc2V0KCBQLT5zYWx0LCAgICAgMCwgc2l6ZW9mKCBQLT5zYWx0ICkgKTsKKyAgbWVtc2V0KCBQLT5wZXJzb25hbCwgMCwgc2l6ZW9mKCBQLT5wZXJzb25hbCApICk7CisgIHJldHVybiBibGFrZTJzX2luaXRfcGFyYW0oIFMsIFAgKTsKK30KKworaW50IGJsYWtlMnNfaW5pdF9rZXkoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgYmxha2Uyc19wYXJhbSBQWzFdOworCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgaWYgKCAha2V5IHx8ICFrZXlsZW4gfHwga2V5bGVuID4gQkxBS0UyU19LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBQLT5kaWdlc3RfbGVuZ3RoID0gb3V0bGVuOworICBQLT5rZXlfbGVuZ3RoICAgID0ga2V5bGVuOworICBQLT5mYW5vdXQgICAgICAgID0gMTsKKyAgUC0+ZGVwdGggICAgICAgICA9IDE7CisgIHN0b3JlMzIoICZQLT5sZWFmX2xlbmd0aCwgMCApOworICBzdG9yZTQ4KCAmUC0+bm9kZV9vZmZzZXQsIDAgKTsKKyAgUC0+bm9kZV9kZXB0aCAgICA9IDA7CisgIFAtPmlubmVyX2xlbmd0aCAgPSAwOworICAvKiBtZW1zZXQoUC0+cmVzZXJ2ZWQsIDAsIHNpemVvZihQLT5yZXNlcnZlZCkgKTsgKi8KKyAgbWVtc2V0KCBQLT5zYWx0LCAgICAgMCwgc2l6ZW9mKCBQLT5zYWx0ICkgKTsKKyAgbWVtc2V0KCBQLT5wZXJzb25hbCwgMCwgc2l6ZW9mKCBQLT5wZXJzb25hbCApICk7CisKKyAgaWYoIGJsYWtlMnNfaW5pdF9wYXJhbSggUywgUCApIDwgMCApIHJldHVybiAtMTsKKworICB7CisgICAgdWludDhfdCBibG9ja1tCTEFLRTJTX0JMT0NLQllURVNdOworICAgIG1lbXNldCggYmxvY2ssIDAsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIG1lbWNweSggYmxvY2ssIGtleSwga2V5bGVuICk7CisgICAgYmxha2Uyc191cGRhdGUoIFMsIGJsb2NrLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoIGJsb2NrLCBCTEFLRTJTX0JMT0NLQllURVMgKTsgLyogQnVybiB0aGUga2V5IGZyb20gc3RhY2sgKi8KKyAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBibGFrZTJzX2NvbXByZXNzKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IGJsb2NrW0JMQUtFMlNfQkxPQ0tCWVRFU10gKQoreworICB1aW50MzJfdCBtWzE2XTsKKyAgdWludDMyX3QgdlsxNl07CisgIHNpemVfdCBpOworCisgIGZvciggaSA9IDA7IGkgPCAxNjsgKytpICkKKyAgICBtW2ldID0gbG9hZDMyKCBibG9jayArIGkgKiBzaXplb2YoIG1baV0gKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKQorICAgIHZbaV0gPSBTLT5oW2ldOworCisgIHZbIDhdID0gYmxha2Uyc19JVlswXTsKKyAgdlsgOV0gPSBibGFrZTJzX0lWWzFdOworICB2WzEwXSA9IGJsYWtlMnNfSVZbMl07CisgIHZbMTFdID0gYmxha2Uyc19JVlszXTsKKyAgdlsxMl0gPSBTLT50WzBdIF4gYmxha2Uyc19JVls0XTsKKyAgdlsxM10gPSBTLT50WzFdIF4gYmxha2Uyc19JVls1XTsKKyAgdlsxNF0gPSBTLT5mWzBdIF4gYmxha2Uyc19JVls2XTsKKyAgdlsxNV0gPSBTLT5mWzFdIF4gYmxha2Uyc19JVls3XTsKKyNkZWZpbmUgRyhyLGksYSxiLGMsZCkgXAorICBkbyB7IFwKKyAgICBhID0gYSArIGIgKyBtW2JsYWtlMnNfc2lnbWFbcl1bMippKzBdXTsgXAorICAgIGQgPSByb3RyMzIoZCBeIGEsIDE2KTsgXAorICAgIGMgPSBjICsgZDsgXAorICAgIGIgPSByb3RyMzIoYiBeIGMsIDEyKTsgXAorICAgIGEgPSBhICsgYiArIG1bYmxha2Uyc19zaWdtYVtyXVsyKmkrMV1dOyBcCisgICAgZCA9IHJvdHIzMihkIF4gYSwgOCk7IFwKKyAgICBjID0gYyArIGQ7IFwKKyAgICBiID0gcm90cjMyKGIgXiBjLCA3KTsgXAorICB9IHdoaWxlKDApCisjZGVmaW5lIFJPVU5EKHIpICBcCisgIGRvIHsgXAorICAgIEcociwwLHZbIDBdLHZbIDRdLHZbIDhdLHZbMTJdKTsgXAorICAgIEcociwxLHZbIDFdLHZbIDVdLHZbIDldLHZbMTNdKTsgXAorICAgIEcociwyLHZbIDJdLHZbIDZdLHZbMTBdLHZbMTRdKTsgXAorICAgIEcociwzLHZbIDNdLHZbIDddLHZbMTFdLHZbMTVdKTsgXAorICAgIEcociw0LHZbIDBdLHZbIDVdLHZbMTBdLHZbMTVdKTsgXAorICAgIEcociw1LHZbIDFdLHZbIDZdLHZbMTFdLHZbMTJdKTsgXAorICAgIEcociw2LHZbIDJdLHZbIDddLHZbIDhdLHZbMTNdKTsgXAorICAgIEcociw3LHZbIDNdLHZbIDRdLHZbIDldLHZbMTRdKTsgXAorICB9IHdoaWxlKDApCisgIFJPVU5EKCAwICk7CisgIFJPVU5EKCAxICk7CisgIFJPVU5EKCAyICk7CisgIFJPVU5EKCAzICk7CisgIFJPVU5EKCA0ICk7CisgIFJPVU5EKCA1ICk7CisgIFJPVU5EKCA2ICk7CisgIFJPVU5EKCA3ICk7CisgIFJPVU5EKCA4ICk7CisgIFJPVU5EKCA5ICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApCisgICAgUy0+aFtpXSA9IFMtPmhbaV0gXiB2W2ldIF4gdltpICsgOF07CisKKyN1bmRlZiBHCisjdW5kZWYgUk9VTkQKKyAgcmV0dXJuIDA7Cit9CisKKworaW50IGJsYWtlMnNfdXBkYXRlKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKQoreworICB3aGlsZSggaW5sZW4gPiAwICkKKyAgeworICAgIHNpemVfdCBsZWZ0ID0gUy0+YnVmbGVuOworICAgIHNpemVfdCBmaWxsID0gMiAqIEJMQUtFMlNfQkxPQ0tCWVRFUyAtIGxlZnQ7CisKKyAgICBpZiggaW5sZW4gPiBmaWxsICkKKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCBmaWxsICk7IC8qIEZpbGwgYnVmZmVyICovCisgICAgICBTLT5idWZsZW4gKz0gZmlsbDsKKyAgICAgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgICAgYmxha2Uyc19jb21wcmVzcyggUywgUy0+YnVmICk7IC8qIENvbXByZXNzICovCisgICAgICBtZW1jcHkoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyU19CTE9DS0JZVEVTLCBCTEFLRTJTX0JMT0NLQllURVMgKTsgLyogU2hpZnQgYnVmZmVyIGxlZnQgKi8KKyAgICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJTX0JMT0NLQllURVM7CisgICAgICBpbiArPSBmaWxsOworICAgICAgaW5sZW4gLT0gZmlsbDsKKyAgICB9CisgICAgZWxzZSAvKiBpbmxlbiA8PSBmaWxsICovCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgKHNpemVfdClpbmxlbiApOworICAgICAgUy0+YnVmbGVuICs9IChzaXplX3QpaW5sZW47IC8qIEJlIGxhenksIGRvIG5vdCBjb21wcmVzcyAqLworICAgICAgaW4gKz0gaW5sZW47CisgICAgICBpbmxlbiAtPSBpbmxlbjsKKyAgICB9CisgIH0KKworICByZXR1cm4gMDsKK30KKworaW50IGJsYWtlMnNfZmluYWwoIGJsYWtlMnNfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKQoreworICB1aW50OF90IGJ1ZmZlcltCTEFLRTJTX09VVEJZVEVTXSA9IHswfTsKKyAgaW50IGk7CisKKyAgaWYoIG91dCA9PSBOVUxMIHx8IG91dGxlbiA9PSAwIHx8IG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKQorICAgIHJldHVybiAtMTsKKworICBpZiggYmxha2Uyc19pc19sYXN0YmxvY2soIFMgKSApCisgICAgcmV0dXJuIC0xOworCisKKyAgaWYoIFMtPmJ1ZmxlbiA+IEJMQUtFMlNfQkxPQ0tCWVRFUyApCisgIHsKKyAgICBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKyAgICBTLT5idWZsZW4gLT0gQkxBS0UyU19CTE9DS0JZVEVTOworICAgIG1lbW1vdmUoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyU19CTE9DS0JZVEVTLCBTLT5idWZsZW4gKTsKKyAgfQorCisgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsICggdWludDMyX3QgKVMtPmJ1ZmxlbiApOworICBibGFrZTJzX3NldF9sYXN0YmxvY2soIFMgKTsKKyAgbWVtc2V0KCBTLT5idWYgKyBTLT5idWZsZW4sIDAsIDIgKiBCTEFLRTJTX0JMT0NLQllURVMgLSBTLT5idWZsZW4gKTsgLyogUGFkZGluZyAqLworICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgLyogT3V0cHV0IGZ1bGwgaGFzaCB0byB0ZW1wIGJ1ZmZlciAqLworICAgIHN0b3JlMzIoIGJ1ZmZlciArIHNpemVvZiggUy0+aFtpXSApICogaSwgUy0+aFtpXSApOworICAgIAorICBtZW1jcHkoIG91dCwgYnVmZmVyLCBvdXRsZW4gKTsKKyAgcmV0dXJuIDA7Cit9CisKK2ludCBibGFrZTJzKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKQoreworICBibGFrZTJzX3N0YXRlIFNbMV07CisKKyAgLyogVmVyaWZ5IHBhcmFtZXRlcnMgKi8KKyAgaWYgKCBOVUxMID09IGluICYmIGlubGVuID4gMCApIHJldHVybiAtMTsKKworICBpZiAoIE5VTEwgPT0gb3V0ICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBrZXkgJiYga2V5bGVuID4gMCkgcmV0dXJuIC0xOworCisgIGlmKCAhb3V0bGVuIHx8IG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGtleWxlbiA+IEJMQUtFMlNfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGtleWxlbiA+IDAgKQorICB7CisgICAgaWYoIGJsYWtlMnNfaW5pdF9rZXkoIFMsIG91dGxlbiwga2V5LCBrZXlsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKyAgZWxzZQorICB7CisgICAgaWYoIGJsYWtlMnNfaW5pdCggUywgb3V0bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisKKyAgYmxha2Uyc191cGRhdGUoIFMsICggY29uc3QgdWludDhfdCAqIClpbiwgaW5sZW4gKTsKKyAgYmxha2Uyc19maW5hbCggUywgb3V0LCBvdXRsZW4gKTsKKyAgcmV0dXJuIDA7Cit9CisKKyNpZiBkZWZpbmVkKFNVUEVSQ09QKQoraW50IGNyeXB0b19oYXNoKCB1bnNpZ25lZCBjaGFyICpvdXQsIHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBsb25nIGxvbmcgaW5sZW4gKQoreworICByZXR1cm4gYmxha2Uycyggb3V0LCBpbiwgTlVMTCwgQkxBS0UyU19PVVRCWVRFUywgaW5sZW4sIDAgKTsKK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZChCTEFLRTJTX1NFTEZURVNUKQorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgImJsYWtlMi1rYXQuaCIKK2ludCBtYWluKCBpbnQgYXJnYywgY2hhciAqKmFyZ3YgKQoreworICB1aW50OF90IGtleVtCTEFLRTJTX0tFWUJZVEVTXTsKKyAgdWludDhfdCBidWZbS0FUX0xFTkdUSF07CisgIHNpemVfdCBpOworCisgIGZvciggaSA9IDA7IGkgPCBCTEFLRTJTX0tFWUJZVEVTOyArK2kgKQorICAgIGtleVtpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgICBidWZbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgIHsKKyAgICB1aW50OF90IGhhc2hbQkxBS0UyU19PVVRCWVRFU107CisgICAgYmxha2UycyggaGFzaCwgYnVmLCBrZXksIEJMQUtFMlNfT1VUQllURVMsIGksIEJMQUtFMlNfS0VZQllURVMgKTsKKworICAgIGlmKCAwICE9IG1lbWNtcCggaGFzaCwgYmxha2Uyc19rZXllZF9rYXRbaV0sIEJMQUtFMlNfT1VUQllURVMgKSApCisgICAgeworICAgICAgcHV0cyggImVycm9yIiApOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgfQorCisgIHB1dHMoICJvayIgKTsKKyAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLXJvdW5kLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLXJvdW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ3MGQ5MgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcm91bmQuaApAQCAtMCwwICsxLDkwIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJTX1JPVU5EX0hfXworI2RlZmluZSBfX0JMQUtFMlNfUk9VTkRfSF9fCisKKyNkZWZpbmUgTE9BRFUocCkgIF9tbV9sb2FkdV9zaTEyOCggKGNvbnN0IF9fbTEyOGkgKikocCkgKQorI2RlZmluZSBTVE9SRVUocCxyKSBfbW1fc3RvcmV1X3NpMTI4KChfX20xMjhpICopKHApLCByKQorCisjZGVmaW5lIFRPRihyZWcpIF9tbV9jYXN0c2kxMjhfcHMoKHJlZykpCisjZGVmaW5lIFRPSShyZWcpIF9tbV9jYXN0cHNfc2kxMjgoKHJlZykpCisKKyNkZWZpbmUgTElLRUxZKHgpIF9fYnVpbHRpbl9leHBlY3QoKHgpLDEpCisKKworLyogTWljcm9hcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFjcm9zICovCisjaWZuZGVmIEhBVkVfWE9QCisjaWZkZWYgSEFWRV9TU1NFMworI2RlZmluZSBfbW1fcm90aV9lcGkzMihyLCBjKSAoIFwKKyAgICAgICAgICAgICAgICAoOD09LShjKSkgPyBfbW1fc2h1ZmZsZV9lcGk4KHIscjgpIFwKKyAgICAgICAgICAgICAgOiAoMTY9PS0oYykpID8gX21tX3NodWZmbGVfZXBpOChyLHIxNikgXAorICAgICAgICAgICAgICA6IF9tbV94b3Jfc2kxMjgoX21tX3NybGlfZXBpMzIoIChyKSwgLShjKSApLF9tbV9zbGxpX2VwaTMyKCAociksIDMyLSgtKGMpKSApKSApCisjZWxzZQorI2RlZmluZSBfbW1fcm90aV9lcGkzMihyLCBjKSBfbW1feG9yX3NpMTI4KF9tbV9zcmxpX2VwaTMyKCAociksIC0oYykgKSxfbW1fc2xsaV9lcGkzMiggKHIpLCAzMi0oLShjKSkgKSkKKyNlbmRpZgorI2Vsc2UKKy8qIC4uLiAqLworI2VuZGlmCisKKworI2RlZmluZSBHMShyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZikgXAorICByb3cxID0gX21tX2FkZF9lcGkzMiggX21tX2FkZF9lcGkzMiggcm93MSwgYnVmKSwgcm93MiApOyBcCisgIHJvdzQgPSBfbW1feG9yX3NpMTI4KCByb3c0LCByb3cxICk7IFwKKyAgcm93NCA9IF9tbV9yb3RpX2VwaTMyKHJvdzQsIC0xNik7IFwKKyAgcm93MyA9IF9tbV9hZGRfZXBpMzIoIHJvdzMsIHJvdzQgKTsgICBcCisgIHJvdzIgPSBfbW1feG9yX3NpMTI4KCByb3cyLCByb3czICk7IFwKKyAgcm93MiA9IF9tbV9yb3RpX2VwaTMyKHJvdzIsIC0xMik7CisKKyNkZWZpbmUgRzIocm93MSxyb3cyLHJvdzMscm93NCxidWYpIFwKKyAgcm93MSA9IF9tbV9hZGRfZXBpMzIoIF9tbV9hZGRfZXBpMzIoIHJvdzEsIGJ1ZiksIHJvdzIgKTsgXAorICByb3c0ID0gX21tX3hvcl9zaTEyOCggcm93NCwgcm93MSApOyBcCisgIHJvdzQgPSBfbW1fcm90aV9lcGkzMihyb3c0LCAtOCk7IFwKKyAgcm93MyA9IF9tbV9hZGRfZXBpMzIoIHJvdzMsIHJvdzQgKTsgICBcCisgIHJvdzIgPSBfbW1feG9yX3NpMTI4KCByb3cyLCByb3czICk7IFwKKyAgcm93MiA9IF9tbV9yb3RpX2VwaTMyKHJvdzIsIC03KTsKKworI2RlZmluZSBESUFHT05BTElaRShyb3cxLHJvdzIscm93Myxyb3c0KSBcCisgIHJvdzQgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcm93NCwgX01NX1NIVUZGTEUoMiwxLDAsMykgKTsgXAorICByb3czID0gX21tX3NodWZmbGVfZXBpMzIoIHJvdzMsIF9NTV9TSFVGRkxFKDEsMCwzLDIpICk7IFwKKyAgcm93MiA9IF9tbV9zaHVmZmxlX2VwaTMyKCByb3cyLCBfTU1fU0hVRkZMRSgwLDMsMiwxKSApOworCisjZGVmaW5lIFVORElBR09OQUxJWkUocm93MSxyb3cyLHJvdzMscm93NCkgXAorICByb3c0ID0gX21tX3NodWZmbGVfZXBpMzIoIHJvdzQsIF9NTV9TSFVGRkxFKDAsMywyLDEpICk7IFwKKyAgcm93MyA9IF9tbV9zaHVmZmxlX2VwaTMyKCByb3czLCBfTU1fU0hVRkZMRSgxLDAsMywyKSApOyBcCisgIHJvdzIgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcm93MiwgX01NX1NIVUZGTEUoMiwxLDAsMykgKTsKKworI2lmIGRlZmluZWQoSEFWRV9YT1ApCisjaW5jbHVkZSAiYmxha2Uycy1sb2FkLXhvcC5oIgorI2VsaWYgZGVmaW5lZChIQVZFX1NTRTQxKQorI2luY2x1ZGUgImJsYWtlMnMtbG9hZC1zc2U0MS5oIgorI2Vsc2UKKyNpbmNsdWRlICJibGFrZTJzLWxvYWQtc3NlMi5oIgorI2VuZGlmCisKKyNkZWZpbmUgUk9VTkQocikgIFwKKyAgTE9BRF9NU0dfICMjciAjI18xKGJ1ZjEpOyBcCisgIEcxKHJvdzEscm93Mixyb3czLHJvdzQsYnVmMSk7IFwKKyAgTE9BRF9NU0dfICMjciAjI18yKGJ1ZjIpOyBcCisgIEcyKHJvdzEscm93Mixyb3czLHJvdzQsYnVmMik7IFwKKyAgRElBR09OQUxJWkUocm93MSxyb3cyLHJvdzMscm93NCk7IFwKKyAgTE9BRF9NU0dfICMjciAjI18zKGJ1ZjMpOyBcCisgIEcxKHJvdzEscm93Mixyb3czLHJvdzQsYnVmMyk7IFwKKyAgTE9BRF9NU0dfICMjciAjI180KGJ1ZjQpOyBcCisgIEcyKHJvdzEscm93Mixyb3czLHJvdzQsYnVmNCk7IFwKKyAgVU5ESUFHT05BTElaRShyb3cxLHJvdzIscm93Myxyb3c0KTsgXAorIAorI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMuYyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTM4NWRjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy5jCkBAIC0wLDAgKzEsNDM1IEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiYmxha2UyLmgiCisjaW5jbHVkZSAiYmxha2UyLWltcGwuaCIKKworI2luY2x1ZGUgImJsYWtlMi1jb25maWcuaCIKKworCisjaW5jbHVkZSA8ZW1taW50cmluLmg+CisjaWYgZGVmaW5lZChIQVZFX1NTU0UzKQorI2luY2x1ZGUgPHRtbWludHJpbi5oPgorI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX1NTRTQxKQorI2luY2x1ZGUgPHNtbWludHJpbi5oPgorI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX0FWWCkKKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9YT1ApCisjaW5jbHVkZSA8eDg2aW50cmluLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImJsYWtlMnMtcm91bmQuaCIKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IGJsYWtlMnNfSVZbOF0gPQoreworICAweDZBMDlFNjY3VUwsIDB4QkI2N0FFODVVTCwgMHgzQzZFRjM3MlVMLCAweEE1NEZGNTNBVUwsCisgIDB4NTEwRTUyN0ZVTCwgMHg5QjA1Njg4Q1VMLCAweDFGODNEOUFCVUwsIDB4NUJFMENEMTlVTAorfTsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgYmxha2Uyc19zaWdtYVsxMF1bMTZdID0KK3sKKyAgeyAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSB9ICwKKyAgeyAxNCwgMTAsICA0LCAgOCwgIDksIDE1LCAxMywgIDYsICAxLCAxMiwgIDAsICAyLCAxMSwgIDcsICA1LCAgMyB9ICwKKyAgeyAxMSwgIDgsIDEyLCAgMCwgIDUsICAyLCAxNSwgMTMsIDEwLCAxNCwgIDMsICA2LCAgNywgIDEsICA5LCAgNCB9ICwKKyAgeyAgNywgIDksICAzLCAgMSwgMTMsIDEyLCAxMSwgMTQsICAyLCAgNiwgIDUsIDEwLCAgNCwgIDAsIDE1LCAgOCB9ICwKKyAgeyAgOSwgIDAsICA1LCAgNywgIDIsICA0LCAxMCwgMTUsIDE0LCAgMSwgMTEsIDEyLCAgNiwgIDgsICAzLCAxMyB9ICwKKyAgeyAgMiwgMTIsICA2LCAxMCwgIDAsIDExLCAgOCwgIDMsICA0LCAxMywgIDcsICA1LCAxNSwgMTQsICAxLCAgOSB9ICwKKyAgeyAxMiwgIDUsICAxLCAxNSwgMTQsIDEzLCAgNCwgMTAsICAwLCAgNywgIDYsICAzLCAgOSwgIDIsICA4LCAxMSB9ICwKKyAgeyAxMywgMTEsICA3LCAxNCwgMTIsICAxLCAgMywgIDksICA1LCAgMCwgMTUsICA0LCAgOCwgIDYsICAyLCAxMCB9ICwKKyAgeyAgNiwgMTUsIDE0LCAgOSwgMTEsICAzLCAgMCwgIDgsIDEyLCAgMiwgMTMsICA3LCAgMSwgIDQsIDEwLCAgNSB9ICwKKyAgeyAxMCwgIDIsICA4LCAgNCwgIDcsICA2LCAgMSwgIDUsIDE1LCAxMSwgIDksIDE0LCAgMywgMTIsIDEzICwgMCB9ICwKK307CisKKworLyogU29tZSBoZWxwZXIgZnVuY3Rpb25zLCBub3QgbmVjZXNzYXJpbHkgdXNlZnVsICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19zZXRfbGFzdG5vZGUoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19jbGVhcl9sYXN0bm9kZSggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAwOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaXNfbGFzdGJsb2NrKCBjb25zdCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgcmV0dXJuIFMtPmZbMF0gIT0gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfc2V0X2xhc3RibG9jayggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJzX3NldF9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2NsZWFyX2xhc3RibG9jayggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJzX2NsZWFyX2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IDA7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDMyX3QgaW5jICkKK3sKKyAgdWludDY0X3QgdCA9ICggKCB1aW50NjRfdCApUy0+dFsxXSA8PCAzMiApIHwgUy0+dFswXTsKKyAgdCArPSBpbmM7CisgIFMtPnRbMF0gPSAoIHVpbnQzMl90ICkoIHQgPj4gIDAgKTsKKyAgUy0+dFsxXSA9ICggdWludDMyX3QgKSggdCA+PiAzMiApOworICByZXR1cm4gMDsKK30KKworCisvKiBQYXJhbWV0ZXItcmVsYXRlZCBmdW5jdGlvbnMgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9kaWdlc3RfbGVuZ3RoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRpZ2VzdF9sZW5ndGggKQoreworICBQLT5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9mYW5vdXQoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZmFub3V0ICkKK3sKKyAgUC0+ZmFub3V0ID0gZmFub3V0OworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X21heF9kZXB0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkZXB0aCApCit7CisgIFAtPmRlcHRoID0gZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbGVhZl9sZW5ndGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQzMl90IGxlYWZfbGVuZ3RoICkKK3sKKyAgUC0+bGVhZl9sZW5ndGggPSBsZWFmX2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9ub2RlX29mZnNldCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDY0X3Qgbm9kZV9vZmZzZXQgKQoreworICBzdG9yZTQ4KCBQLT5ub2RlX29mZnNldCwgbm9kZV9vZmZzZXQgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9ub2RlX2RlcHRoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IG5vZGVfZGVwdGggKQoreworICBQLT5ub2RlX2RlcHRoID0gbm9kZV9kZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9pbm5lcl9sZW5ndGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgaW5uZXJfbGVuZ3RoICkKK3sKKyAgUC0+aW5uZXJfbGVuZ3RoID0gaW5uZXJfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X3NhbHQoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgc2FsdFtCTEFLRTJTX1NBTFRCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnNhbHQsIHNhbHQsIEJMQUtFMlNfU0FMVEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfcGVyc29uYWwoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgcGVyc29uYWxbQkxBS0UyU19QRVJTT05BTEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+cGVyc29uYWwsIHBlcnNvbmFsLCBCTEFLRTJTX1BFUlNPTkFMQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2luaXQwKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgaW50IGk7CisgIG1lbXNldCggUywgMCwgc2l6ZW9mKCBibGFrZTJzX3N0YXRlICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgUy0+aFtpXSA9IGJsYWtlMnNfSVZbaV07CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGluaXQyIHhvcnMgSVYgd2l0aCBpbnB1dCBwYXJhbWV0ZXIgYmxvY2sgKi8KK2ludCBibGFrZTJzX2luaXRfcGFyYW0oIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IGJsYWtlMnNfcGFyYW0gKlAgKQoreworICAvKmJsYWtlMnNfaW5pdDAoIFMgKTsgKi8KKyAgY29uc3QgdWludDhfdCAqIHYgPSAoIGNvbnN0IHVpbnQ4X3QgKiApKCBibGFrZTJzX0lWICk7CisgIGNvbnN0IHVpbnQ4X3QgKiBwID0gKCBjb25zdCB1aW50OF90ICogKSggUCApOworICB1aW50OF90ICogaCA9ICggdWludDhfdCAqICkoIFMtPmggKTsKKyAgaW50IGk7CisgIC8qIElWIFhPUiBQYXJhbUJsb2NrICovCisgIG1lbXNldCggUywgMCwgc2l6ZW9mKCBibGFrZTJzX3N0YXRlICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyU19PVVRCWVRFUzsgKytpICkgaFtpXSA9IHZbaV0gXiBwW2ldOworCisgIHJldHVybiAwOworfQorCisKKy8qIFNvbWUgc29ydCBvZiBkZWZhdWx0IHBhcmFtZXRlciBibG9jayBpbml0aWFsaXphdGlvbiwgZm9yIHNlcXVlbnRpYWwgYmxha2UycyAqLworaW50IGJsYWtlMnNfaW5pdCggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKQoreworICBjb25zdCBibGFrZTJzX3BhcmFtIFAgPQorICB7CisgICAgb3V0bGVuLAorICAgIDAsCisgICAgMSwKKyAgICAxLAorICAgIDAsCisgICAgezB9LAorICAgIDAsCisgICAgMCwKKyAgICB7MH0sCisgICAgezB9CisgIH07CisgIC8qIE1vdmUgaW50ZXJ2YWwgdmVyaWZpY2F0aW9uIGhlcmU/ICovCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisgIHJldHVybiBibGFrZTJzX2luaXRfcGFyYW0oIFMsICZQICk7Cit9CisKKworaW50IGJsYWtlMnNfaW5pdF9rZXkoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgY29uc3QgYmxha2Uyc19wYXJhbSBQID0KKyAgeworICAgIG91dGxlbiwKKyAgICBrZXlsZW4sCisgICAgMSwKKyAgICAxLAorICAgIDAsCisgICAgezB9LAorICAgIDAsCisgICAgMCwKKyAgICB7MH0sCisgICAgezB9CisgIH07CisKKyAgLyogTW92ZSBpbnRlcnZhbCB2ZXJpZmljYXRpb24gaGVyZT8gKi8KKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICBpZiAoICggIWtleSApIHx8ICggIWtleWxlbiApIHx8IGtleWxlbiA+IEJMQUtFMlNfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGJsYWtlMnNfaW5pdF9wYXJhbSggUywgJlAgKSA8IDAgKQorICAgIHJldHVybiAtMTsKKworICB7CisgICAgdWludDhfdCBibG9ja1tCTEFLRTJTX0JMT0NLQllURVNdOworICAgIG1lbXNldCggYmxvY2ssIDAsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIG1lbWNweSggYmxvY2ssIGtleSwga2V5bGVuICk7CisgICAgYmxha2Uyc191cGRhdGUoIFMsIGJsb2NrLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoIGJsb2NrLCBCTEFLRTJTX0JMT0NLQllURVMgKTsgLyogQnVybiB0aGUga2V5IGZyb20gc3RhY2sgKi8KKyAgfQorICByZXR1cm4gMDsKK30KKworCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19jb21wcmVzcyggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBibG9ja1tCTEFLRTJTX0JMT0NLQllURVNdICkKK3sKKyAgX19tMTI4aSByb3cxLCByb3cyLCByb3czLCByb3c0OworICBfX20xMjhpIGJ1ZjEsIGJ1ZjIsIGJ1ZjMsIGJ1ZjQ7CisjaWYgZGVmaW5lZChIQVZFX1NTRTQxKQorICBfX20xMjhpIHQwLCB0MTsKKyNpZiAhZGVmaW5lZChIQVZFX1hPUCkKKyAgX19tMTI4aSB0MjsKKyNlbmRpZgorI2VuZGlmCisgIF9fbTEyOGkgZmYwLCBmZjE7CisjaWYgZGVmaW5lZChIQVZFX1NTU0UzKSAmJiAhZGVmaW5lZChIQVZFX1hPUCkKKyAgY29uc3QgX19tMTI4aSByOCA9IF9tbV9zZXRfZXBpOCggMTIsIDE1LCAxNCwgMTMsIDgsIDExLCAxMCwgOSwgNCwgNywgNiwgNSwgMCwgMywgMiwgMSApOworICBjb25zdCBfX20xMjhpIHIxNiA9IF9tbV9zZXRfZXBpOCggMTMsIDEyLCAxNSwgMTQsIDksIDgsIDExLCAxMCwgNSwgNCwgNywgNiwgMSwgMCwgMywgMiApOworI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX1NTRTQxKQorICBjb25zdCBfX20xMjhpIG0wID0gTE9BRFUoIGJsb2NrICsgIDAwICk7CisgIGNvbnN0IF9fbTEyOGkgbTEgPSBMT0FEVSggYmxvY2sgKyAgMTYgKTsKKyAgY29uc3QgX19tMTI4aSBtMiA9IExPQURVKCBibG9jayArICAzMiApOworICBjb25zdCBfX20xMjhpIG0zID0gTE9BRFUoIGJsb2NrICsgIDQ4ICk7CisjZWxzZQorICBjb25zdCB1aW50MzJfdCAgbTAgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgMF07CisgIGNvbnN0IHVpbnQzMl90ICBtMSA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyAxXTsKKyAgY29uc3QgdWludDMyX3QgIG0yID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDJdOworICBjb25zdCB1aW50MzJfdCAgbTMgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgM107CisgIGNvbnN0IHVpbnQzMl90ICBtNCA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyA0XTsKKyAgY29uc3QgdWludDMyX3QgIG01ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDVdOworICBjb25zdCB1aW50MzJfdCAgbTYgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgNl07CisgIGNvbnN0IHVpbnQzMl90ICBtNyA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyA3XTsKKyAgY29uc3QgdWludDMyX3QgIG04ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDhdOworICBjb25zdCB1aW50MzJfdCAgbTkgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgOV07CisgIGNvbnN0IHVpbnQzMl90IG0xMCA9ICggKCB1aW50MzJfdCAqIClibG9jayApWzEwXTsKKyAgY29uc3QgdWludDMyX3QgbTExID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbMTFdOworICBjb25zdCB1aW50MzJfdCBtMTIgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsxMl07CisgIGNvbnN0IHVpbnQzMl90IG0xMyA9ICggKCB1aW50MzJfdCAqIClibG9jayApWzEzXTsKKyAgY29uc3QgdWludDMyX3QgbTE0ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbMTRdOworICBjb25zdCB1aW50MzJfdCBtMTUgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsxNV07CisjZW5kaWYKKyAgcm93MSA9IGZmMCA9IExPQURVKCAmUy0+aFswXSApOworICByb3cyID0gZmYxID0gTE9BRFUoICZTLT5oWzRdICk7CisgIHJvdzMgPSBfbW1fc2V0cl9lcGkzMiggMHg2QTA5RTY2NywgMHhCQjY3QUU4NSwgMHgzQzZFRjM3MiwgMHhBNTRGRjUzQSApOworICByb3c0ID0gX21tX3hvcl9zaTEyOCggX21tX3NldHJfZXBpMzIoIDB4NTEwRTUyN0YsIDB4OUIwNTY4OEMsIDB4MUY4M0Q5QUIsIDB4NUJFMENEMTkgKSwgTE9BRFUoICZTLT50WzBdICkgKTsKKyAgUk9VTkQoIDAgKTsKKyAgUk9VTkQoIDEgKTsKKyAgUk9VTkQoIDIgKTsKKyAgUk9VTkQoIDMgKTsKKyAgUk9VTkQoIDQgKTsKKyAgUk9VTkQoIDUgKTsKKyAgUk9VTkQoIDYgKTsKKyAgUk9VTkQoIDcgKTsKKyAgUk9VTkQoIDggKTsKKyAgUk9VTkQoIDkgKTsKKyAgU1RPUkVVKCAmUy0+aFswXSwgX21tX3hvcl9zaTEyOCggZmYwLCBfbW1feG9yX3NpMTI4KCByb3cxLCByb3czICkgKSApOworICBTVE9SRVUoICZTLT5oWzRdLCBfbW1feG9yX3NpMTI4KCBmZjEsIF9tbV94b3Jfc2kxMjgoIHJvdzIsIHJvdzQgKSApICk7CisgIHJldHVybiAwOworfQorCisvKiBpbmxlbiBub3cgaW4gYnl0ZXMgKi8KK2ludCBibGFrZTJzX3VwZGF0ZSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICkKK3sKKyAgd2hpbGUoIGlubGVuID4gMCApCisgIHsKKyAgICBzaXplX3QgbGVmdCA9IFMtPmJ1ZmxlbjsKKyAgICBzaXplX3QgZmlsbCA9IDIgKiBCTEFLRTJTX0JMT0NLQllURVMgLSBsZWZ0OworCisgICAgaWYoIGlubGVuID4gZmlsbCApCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgZmlsbCApOyAvKiBGaWxsIGJ1ZmZlciAqLworICAgICAgUy0+YnVmbGVuICs9IGZpbGw7CisgICAgICBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICAgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOyAvKiBDb21wcmVzcyAqLworICAgICAgbWVtY3B5KCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMlNfQkxPQ0tCWVRFUywgQkxBS0UyU19CTE9DS0JZVEVTICk7IC8qIFNoaWZ0IGJ1ZmZlciBsZWZ0ICovCisgICAgICBTLT5idWZsZW4gLT0gQkxBS0UyU19CTE9DS0JZVEVTOworICAgICAgaW4gKz0gZmlsbDsKKyAgICAgIGlubGVuIC09IGZpbGw7CisgICAgfQorICAgIGVsc2UgLyogaW5sZW4gPD0gZmlsbCAqLworICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIGlubGVuICk7CisgICAgICBTLT5idWZsZW4gKz0gaW5sZW47IC8qIEJlIGxhenksIGRvIG5vdCBjb21wcmVzcyAqLworICAgICAgaW4gKz0gaW5sZW47CisgICAgICBpbmxlbiAtPSBpbmxlbjsKKyAgICB9CisgIH0KKworICByZXR1cm4gMDsKK30KKworLyogSXMgdGhpcyBjb3JyZWN0PyAqLworaW50IGJsYWtlMnNfZmluYWwoIGJsYWtlMnNfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKQoreworICB1aW50OF90IGJ1ZmZlcltCTEFLRTJTX09VVEJZVEVTXSA9IHswfTsKKyAgaW50IGk7CisKKyAgaWYoIG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKQorICAgIHJldHVybiAtMTsKKworICBpZiggYmxha2Uyc19pc19sYXN0YmxvY2soIFMgKSApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBTLT5idWZsZW4gPiBCTEFLRTJTX0JMT0NLQllURVMgKQorICB7CisgICAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgYmxha2Uyc19jb21wcmVzcyggUywgUy0+YnVmICk7CisgICAgUy0+YnVmbGVuIC09IEJMQUtFMlNfQkxPQ0tCWVRFUzsKKyAgICBtZW1tb3ZlKCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMlNfQkxPQ0tCWVRFUywgUy0+YnVmbGVuICk7CisgIH0KKworICBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBTLCAoIHVpbnQzMl90IClTLT5idWZsZW4gKTsKKyAgYmxha2Uyc19zZXRfbGFzdGJsb2NrKCBTICk7CisgIG1lbXNldCggUy0+YnVmICsgUy0+YnVmbGVuLCAwLCAyICogQkxBS0UyU19CTE9DS0JZVEVTIC0gUy0+YnVmbGVuICk7IC8qIFBhZGRpbmcgKi8KKyAgYmxha2Uyc19jb21wcmVzcyggUywgUy0+YnVmICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIC8qIE91dHB1dCBmdWxsIGhhc2ggdG8gdGVtcCBidWZmZXIgKi8KKyAgICBzdG9yZTMyKCBidWZmZXIgKyBzaXplb2YoIFMtPmhbaV0gKSAqIGksIFMtPmhbaV0gKTsKKworICBtZW1jcHkoIG91dCwgYnVmZmVyLCBvdXRsZW4gKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGlubGVuLCBhdCBsZWFzdCwgc2hvdWxkIGJlIHVpbnQ2NF90LiBPdGhlcnMgY2FuIGJlIHNpemVfdC4gKi8KK2ludCBibGFrZTJzKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKQoreworICBibGFrZTJzX3N0YXRlIFNbMV07CisKKyAgLyogVmVyaWZ5IHBhcmFtZXRlcnMgKi8KKyAgaWYgKCBOVUxMID09IGluICYmIGlubGVuID4gMCApIHJldHVybiAtMTsKKworICBpZiAoIE5VTEwgPT0gb3V0ICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBrZXkgJiYga2V5bGVuID4gMCkgcmV0dXJuIC0xOworCisgIGlmKCAhb3V0bGVuIHx8IG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGtleWxlbiA+IEJMQUtFMlNfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGtleWxlbiA+IDAgKQorICB7CisgICAgaWYoIGJsYWtlMnNfaW5pdF9rZXkoIFMsIG91dGxlbiwga2V5LCBrZXlsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKyAgZWxzZQorICB7CisgICAgaWYoIGJsYWtlMnNfaW5pdCggUywgb3V0bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisKKyAgYmxha2Uyc191cGRhdGUoIFMsICggY29uc3QgdWludDhfdCAqIClpbiwgaW5sZW4gKTsKKyAgYmxha2Uyc19maW5hbCggUywgb3V0LCBvdXRsZW4gKTsKKyAgcmV0dXJuIDA7Cit9CisKKyNpZiBkZWZpbmVkKFNVUEVSQ09QKQoraW50IGNyeXB0b19oYXNoKCB1bnNpZ25lZCBjaGFyICpvdXQsIHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBsb25nIGxvbmcgaW5sZW4gKQoreworICByZXR1cm4gYmxha2Uycyggb3V0LCBpbiwgTlVMTCwgQkxBS0UyU19PVVRCWVRFUywgaW5sZW4sIDAgKTsKK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZChCTEFLRTJTX1NFTEZURVNUKQorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgImJsYWtlMi1rYXQuaCIKK2ludCBtYWluKCBpbnQgYXJnYywgY2hhciAqKmFyZ3YgKQoreworICB1aW50OF90IGtleVtCTEFLRTJTX0tFWUJZVEVTXTsKKyAgdWludDhfdCBidWZbS0FUX0xFTkdUSF07CisgIHNpemVfdCBpOworCisgIGZvciggaSA9IDA7IGkgPCBCTEFLRTJTX0tFWUJZVEVTOyArK2kgKQorICAgIGtleVtpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgICBidWZbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgIHsKKyAgICB1aW50OF90IGhhc2hbQkxBS0UyU19PVVRCWVRFU107CisKKyAgICBpZiggYmxha2UycyggaGFzaCwgYnVmLCBrZXksIEJMQUtFMlNfT1VUQllURVMsIGksIEJMQUtFMlNfS0VZQllURVMgKSA8IDAgfHwKKyAgICAgICAgMCAhPSBtZW1jbXAoIGhhc2gsIGJsYWtlMnNfa2V5ZWRfa2F0W2ldLCBCTEFLRTJTX09VVEJZVEVTICkgKQorICAgIHsKKyAgICAgIHB1dHMoICJlcnJvciIgKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKworICBwdXRzKCAib2siICk7CisgIHJldHVybiAwOworfQorI2VuZGlmCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYnoybW9kdWxlLmMgYi9Nb2R1bGVzL19iejJtb2R1bGUuYwppbmRleCA2N2UxYjY1Li41Y2VhNDJjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19iejJtb2R1bGUuYworKysgYi9Nb2R1bGVzL19iejJtb2R1bGUuYwpAQCAtNTk0LDcgKzU5NCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfYnoyLkJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkJaMkRlY29tcHJlc3NvciAqIikKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICBtYXhfbGVuZ3RoOiBQeV9zc2l6ZV90PS0xCiAKQEAgLTYxNyw3ICs2MTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjNlNDEwNDVkZWIyNDBhMyBpbnB1dD05NTU4YjQyNGM4YjAwNTE2XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjNlNDEwNDVkZWIyNDBhMyBpbnB1dD01MmUxZmZjNjZhOGVhNjI0XSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jIGIvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKaW5kZXggOWIxMTk0ZS4uNTg2YjczYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKQEAgLTIwLDEwICsyMCw2IEBACiAgICAgIDxlbmNvZGluZz5fZGVjb2RlKGNoYXJfYnVmZmVyX29ialssZXJyb3JzPSdzdHJpY3QnXSkgLT4KICAgICAgICAgKFVuaWNvZGUgb2JqZWN0LCBieXRlcyBjb25zdW1lZCkKIAotICAgPGVuY29kaW5nPl9lbmNvZGUoKSBpbnRlcmZhY2VzIGFsc28gYWNjZXB0IG5vbi1Vbmljb2RlIG9iamVjdCBhcwotICAgaW5wdXQuIFRoZSBvYmplY3RzIGFyZSB0aGVuIGNvbnZlcnRlZCB0byBVbmljb2RlIHVzaW5nCi0gICBQeVVuaWNvZGVfRnJvbU9iamVjdCgpIHByaW9yIHRvIGFwcGx5aW5nIHRoZSBjb252ZXJzaW9uLgotCiAgICBUaGVzZSA8ZW5jb2Rpbmc+cyBhcmUgYXZhaWxhYmxlOiB1dGZfOCwgdW5pY29kZV9lc2NhcGUsCiAgICByYXdfdW5pY29kZV9lc2NhcGUsIHVuaWNvZGVfaW50ZXJuYWwsIGxhdGluXzEsIGFzY2lpICg3LWJpdCksCiAgICBtYmNzIChvbiB3aW4zMikuCkBAIC02MDgsNyArNjA0LDcgQEAKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgZGF0YS0+bGVuKTsKIH0KIAotI2lmZGVmIEhBVkVfTUJDUworI2lmZGVmIE1TX1dJTkRPV1MKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5tYmNzX2RlY29kZQpAQCAtNjMwLDYgKzYyNiwyNSBAQAogfQogCiAvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLm9lbV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9kZWNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTE2MTc2MTJmM2ZjYWQ4IGlucHV0PTk1YjhhOTJjNDQ2YjAzY2RdKi8KK3sKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoQ1BfT0VNQ1AsCisgICAgICAgIGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLCBlcnJvcnMsIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKK30KKworLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlCiAgICAgY29kZXBhZ2U6IGludAogICAgIGRhdGE6IFB5X2J1ZmZlcgpAQCAtNjUxLDcgKzY2Niw3IEBACiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIAotI2VuZGlmIC8qIEhBVkVfTUJDUyAqLworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogLyogLS0tIEVuY29kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTcxOCw3ICs3MzMsNyBAQAogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl83X2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtNzI2LDI0ICs3NDEsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl83X2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZmVkYTIxZmZjOTIxYmM4IGlucHV0PWZkOTFhNzhmMTAzYjA0MjFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZmVkYTIxZmZjOTIxYmM4IGlucHV0PWQxYTQ3NTc5ZTc5Y2JlMTVdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEY3KHN0ciwgMCwgMCwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGNyhzdHIsIDAsIDAsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl84X2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtNzUxLDE5ICs3NTcsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl84X2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMmJmNDczMzJiOWM3OTZjIGlucHV0PTJjMjJkNDA1MzJmMDcxZjNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMmJmNDczMzJiOWM3OTZjIGlucHV0PTQyZTNiYTczYzQzOTJlZWZdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhzdHIsICJ1dGYtOCIsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzVVRGOFN0cmluZyhzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKiBUaGlzIHZlcnNpb24gcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBieXRlb3JkZXIgcGFyYW1ldGVyIG9mIHRoZQpAQCAtNzc1LDcgKzc3Miw3IEBACiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzE2X2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgYnl0ZW9yZGVyOiBpbnQgPSAwCiAgICAgLwpAQCAtNzg0LDI0ICs3ODEsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8xNl9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM2NTRlMTNlZmEyZTY0ZTQgaW5wdXQ9MzkzNWE0ODliMmQ1Mzg1ZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM2NTRlMTNlZmEyZTY0ZTQgaW5wdXQ9ZmY0NjQxNmIwNGVkYjk0NF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzE2X2xlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtODA5LDI0ICs3OTcsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQzMWIwMWU1NWYyZDQ5OTUgaW5wdXQ9YmMyN2RmMDVkMWQyMGRmZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQzMWIwMWU1NWYyZDQ5OTUgaW5wdXQ9Y2IzODU0NTVlYThmMmZlMF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCAtMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8xNl9iZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTgzNCwxOSArODEzLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMTZfYmVfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Njg4NmE2ZmQ1NGRjYWUzIGlucHV0PTVhNjlkNDExMjc2MzQ2MmJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Njg4NmE2ZmQ1NGRjYWUzIGlucHV0PTkxMTk5OTcwNjZiZGFlZmRdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgKzEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgKzEpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLyogVGhpcyB2ZXJzaW9uIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgYnl0ZW9yZGVyIHBhcmFtZXRlciBvZiB0aGUKQEAgLTg1OCw3ICs4MjgsNyBAQAogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8zMl9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIGJ5dGVvcmRlcjogaW50ID0gMAogICAgIC8KQEAgLTg2NywyNCArODM3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMzJfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01Yzc2MGRhMGMwOWE4YjgzIGlucHV0PTQzNGExZWZhNDkyYjhkNThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01Yzc2MGRhMGMwOWE4YjgzIGlucHV0PWM1ZTc3ZGE4MmZiZTVjMmFdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8zMl9sZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTg5MiwyNCArODUzLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNjVjZDE3NmRlOGUzNmQ2IGlucHV0PWRmYTJkN2RjNzhiOTk0MjJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNjVjZDE3NmRlOGUzNmQ2IGlucHV0PTk5OTNiMjVmZTA4Nzc4NDhdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgLTEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMzJfYmVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC05MTcsMjQgKzg2OSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzMyX2JlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWQ5ZTcxYTkzNTg3MDllOSBpbnB1dD00NTk1NjE3YjE4MTY5MDAyXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWQ5ZTcxYTkzNTg3MDllOSBpbnB1dD1kM2UwY2NhYTAyOTIwNDMxXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsICsxKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsICsxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudW5pY29kZV9lc2NhcGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC05NDIsMjQgKzg4NSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY2MjcxYjMwYmM0ZjdhM2MgaW5wdXQ9ODI3MzUwNmYxNDA3NjkxMl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY2MjcxYjMwYmM0ZjdhM2MgaW5wdXQ9NjVkOWVlZmNhNjViNDU1YV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKHN0ciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKHN0ciksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTk2NywyNCArOTAxLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNjZhODA2ZWQwMWM4MzBhIGlucHV0PTE4MTc1NWQ1ZGZhY2VmM2NdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNjZhODA2ZWQwMWM4MzBhIGlucHV0PTVhYTMzZTRhMTMzMzkxYWJdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5sYXRpbl8xX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTkyLDI0ICs5MTcsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2xhdGluXzFfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmMyOGM4M2EyNzg4NGUwOCBpbnB1dD1mMDNmNmRjZjFkODRiZWU0XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmMyOGM4M2EyNzg4NGUwOCBpbnB1dD0zMGIxMWM5ZTQ5YTY1MTUwXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoc3RyLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLmFzY2lpX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtMTAxNywyNCArOTMzLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19hc2NpaV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjVlMDM1MTgyZDMzYmVmYyBpbnB1dD1kODdlMjVhMTBhNTkzZmVlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjVlMDM1MTgyZDMzYmVmYyBpbnB1dD04NDNhMWQyNjhlNmRmYThlXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhzdHIsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5jaGFybWFwX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgbWFwcGluZzogb2JqZWN0ID0gTlVMTAogICAgIC8KQEAgLTEwNDMsMjIgKzk1MCwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfY2hhcm1hcF9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgUHlPYmplY3QgKm1hcHBpbmcpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDQ3NDc2ZjQ4NDk1YTllOSBpbnB1dD04NWY0MTcyNjYxZThkYWQ5XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDQ3NDc2ZjQ4NDk1YTllOSBpbnB1dD0wNzUyY2RlMDdhNmQ2ZDAwXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KICAgICBpZiAobWFwcGluZyA9PSBQeV9Ob25lKQogICAgICAgICBtYXBwaW5nID0gTlVMTDsKIAotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCkBAIC0xMDc0LDM2ICs5NzIsNDIgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAobWFwKTsKIH0KIAotI2lmZGVmIEhBVkVfTUJDUworI2lmZGVmIE1TX1dJTkRPV1MKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5tYmNzX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19tYmNzX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NmUyZTE3MGM5NjZjMDgwIGlucHV0PTY1YzA5ZWUxZTQyMDMyNjNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NmUyZTE3MGM5NjZjMDgwIGlucHV0PWRlNDcxZTA4MTU5NDc1NTNdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKK30KIAotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgc3RyLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3Mub2VtX2VuY29kZQorICAgIHN0cjogdW5pY29kZQorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3Nfb2VtX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NWQ1OTgyYzczN2RlNjQ5IGlucHV0PTNmYzVmMDAyOGFhZDNjZGFdKi8KK3sKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX09FTUNQLCBzdHIsIGVycm9ycyksCisgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUKICAgICBjb2RlX3BhZ2U6IGludAotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtMTExMSwyNCArMTAxNSwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfY29kZV9wYWdlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBjb2RlX3BhZ2UsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDU2NzNmNjA4NTY1N2E5ZSBpbnB1dD1jODU2MmVjNDYwYzJlMzA5XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDU2NzNmNjA4NTY1N2E5ZSBpbnB1dD03ODY0MjFhZTYxN2Q2ODBiXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShjb2RlX3BhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKGNvZGVfcGFnZSwgc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAotI2VuZGlmIC8qIEhBVkVfTUJDUyAqLworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogLyogLS0tIEVycm9yIGhhbmRsZXIgcmVnaXN0cnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTEyMTYsNiArMTEwOSw4IEBACiAgICAgX0NPREVDU19SRUFEQlVGRkVSX0VOQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRgogICAgIF9DT0RFQ1NfTUJDU19ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19PRU1fRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfT0VNX0RFQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRgogICAgIF9DT0RFQ1NfUkVHSVNURVJfRVJST1JfTUVUSE9EREVGCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwppbmRleCAxMGZiY2ZlLi45ZWQ2ZjE0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKQEAgLTgxLDcgKzgxLDcgQEAKICAgICBQeV9zc2l6ZV90IGxlZnRpbmRleDsgICAgICAgLyogMCA8PSBsZWZ0aW5kZXggPCBCTE9DS0xFTiAqLwogICAgIFB5X3NzaXplX3QgcmlnaHRpbmRleDsgICAgICAvKiAwIDw9IHJpZ2h0aW5kZXggPCBCTE9DS0xFTiAqLwogICAgIHNpemVfdCBzdGF0ZTsgICAgICAgICAgICAgICAvKiBpbmNyZW1lbnRlZCB3aGVuZXZlciB0aGUgaW5kaWNlcyBtb3ZlICovCi0gICAgUHlfc3NpemVfdCBtYXhsZW47CisgICAgUHlfc3NpemVfdCBtYXhsZW47ICAgICAgICAgIC8qIG1heGxlbiBpcyAtMSBmb3IgdW5ib3VuZGVkIGRlcXVlcyAqLwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gZGVxdWVvYmplY3Q7CiAKQEAgLTEwOCwyOSArMTA4LDE4IEBACiAjZGVmaW5lIENIRUNLX05PVF9FTkQobGluaykKICNlbmRpZgogCi0vKiBUbyBwcmV2ZW50IGxlbiBmcm9tIG92ZXJmbG93aW5nIFBZX1NTSVpFX1RfTUFYLCB3ZSByZWZ1c2UgdG8KLSAgIGFsbG9jYXRlIG5ldyBibG9ja3MgaWYgdGhlIGN1cnJlbnQgbGVuIGlzIG5lYXJpbmcgb3ZlcmZsb3cuCi0qLwotCi0jZGVmaW5lIE1BWF9ERVFVRV9MRU4gKFBZX1NTSVpFX1RfTUFYIC0gMypCTE9DS0xFTikKLQogLyogQSBzaW1wbGUgZnJlZWxpc3Rpbmcgc2NoZW1lIGlzIHVzZWQgdG8gbWluaW1pemUgY2FsbHMgdG8gdGhlIG1lbW9yeQogICAgYWxsb2NhdG9yLiAgSXQgYWNjb21tb2RhdGVzIGNvbW1vbiB1c2UgY2FzZXMgd2hlcmUgbmV3IGJsb2NrcyBhcmUgYmVpbmcKICAgIGFkZGVkIGF0IGFib3V0IHRoZSBzYW1lIHJhdGUgYXMgb2xkIGJsb2NrcyBhcmUgYmVpbmcgZnJlZWQuCiAgKi8KIAotI2RlZmluZSBNQVhGUkVFQkxPQ0tTIDEwCisjZGVmaW5lIE1BWEZSRUVCTE9DS1MgMTYKIHN0YXRpYyBQeV9zc2l6ZV90IG51bWZyZWVibG9ja3MgPSAwOwogc3RhdGljIGJsb2NrICpmcmVlYmxvY2tzW01BWEZSRUVCTE9DS1NdOwogCiBzdGF0aWMgYmxvY2sgKgotbmV3YmxvY2soUHlfc3NpemVfdCBsZW4pIHsKK25ld2Jsb2NrKHZvaWQpIHsKICAgICBibG9jayAqYjsKLSAgICBpZiAobGVuID49IE1BWF9ERVFVRV9MRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGFkZCBtb3JlIGJsb2NrcyB0byB0aGUgZGVxdWUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIGlmIChudW1mcmVlYmxvY2tzKSB7CiAgICAgICAgIG51bWZyZWVibG9ja3MtLTsKICAgICAgICAgcmV0dXJuIGZyZWVibG9ja3NbbnVtZnJlZWJsb2Nrc107CkBAIC0xNTQsMTIgKzE0Myw2IEBACiAgICAgfQogfQogCi0vKiBYWFggVG9kbzoKLSAgIElmIGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb25zIGJlY29tZSBhdmFpbGFibGUsIG1ha2UgdGhlCi0gICBkZXF1ZSBvYmplY3QgNjQgYnl0ZSBhbGlnbmVkIHNvIHRoYXQgYWxsIG9mIHRoZSBmaWVsZHMKLSAgIGNhbiBiZSByZXRyaWV2ZWQgb3IgdXBkYXRlZCBpbiBhIHNpbmdsZSBjYWNoZSBsaW5lLgotKi8KLQogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTE3MSw3ICsxNTQsNyBAQAogICAgIGlmIChkZXF1ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGIgPSBuZXdibG9jaygwKTsKKyAgICBiID0gbmV3YmxvY2soKTsKICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihkZXF1ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjA3LDcgKzE5MCw3IEBACiAgICAgUHlfU0laRShkZXF1ZSktLTsKICAgICBkZXF1ZS0+c3RhdGUrKzsKIAotICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSAtMSkgeworICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA8IDApIHsKICAgICAgICAgaWYgKFB5X1NJWkUoZGVxdWUpKSB7CiAgICAgICAgICAgICBwcmV2YmxvY2sgPSBkZXF1ZS0+cmlnaHRibG9jay0+bGVmdGxpbms7CiAgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayAhPSBkZXF1ZS0+cmlnaHRibG9jayk7CkBAIC0yNzAsNDIgKzI1MywyNCBAQAogLyogVGhlIGRlcXVlJ3Mgc2l6ZSBsaW1pdCBpcyBkLm1heGxlbi4gIFRoZSBsaW1pdCBjYW4gYmUgemVybyBvciBwb3NpdGl2ZS4KICAqIElmIHRoZXJlIGlzIG5vIGxpbWl0LCB0aGVuIGQubWF4bGVuID09IC0xLgogICoKLSAqIEFmdGVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gYSBkZXF1ZSwgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBzaXplIGhhcyBncm93biBwYXN0Ci0gKiB0aGUgbGltaXQuIElmIGl0IGhhcywgd2UgZ2V0IHRoZSBzaXplIGJhY2sgZG93biB0byB0aGUgbGltaXQgYnkgcG9wcGluZyBhbgotICogaXRlbSBvZmYgb2YgdGhlIG9wcG9zaXRlIGVuZC4gIFRoZSBtZXRob2RzIHRoYXQgY2FuIHRyaWdnZXIgdGhpcyBhcmUgYXBwZW5kKCksCi0gKiBhcHBlbmRsZWZ0KCksIGV4dGVuZCgpLCBhbmQgZXh0ZW5kbGVmdCgpLgorICogQWZ0ZXIgYW4gaXRlbSBpcyBhZGRlZCB0byBhIGRlcXVlLCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIHNpemUgaGFzCisgKiBncm93biBwYXN0IHRoZSBsaW1pdC4gSWYgaXQgaGFzLCB3ZSBnZXQgdGhlIHNpemUgYmFjayBkb3duIHRvIHRoZSBsaW1pdAorICogYnkgcG9wcGluZyBhbiBpdGVtIG9mZiBvZiB0aGUgb3Bwb3NpdGUgZW5kLiAgVGhlIG1ldGhvZHMgdGhhdCBjYW4KKyAqIHRyaWdnZXIgdGhpcyBhcmUgYXBwZW5kKCksIGFwcGVuZGxlZnQoKSwgZXh0ZW5kKCksIGFuZCBleHRlbmRsZWZ0KCkuCisgKgorICogVGhlIG1hY3JvIHRvIGNoZWNrIHdoZXRoZXIgYSBkZXF1ZSBuZWVkcyB0byBiZSB0cmltbWVkIHVzZXMgYSBzaW5nbGUKKyAqIHVuc2lnbmVkIHRlc3QgdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgMCA8PSBtYXhsZW4gPCBQeV9TSVpFKGRlcXVlKS4KICAqLwogCi1zdGF0aWMgdm9pZAotZGVxdWVfdHJpbV9yaWdodChkZXF1ZW9iamVjdCAqZGVxdWUpCi17Ci0gICAgaWYgKGRlcXVlLT5tYXhsZW4gIT0gLTEgJiYgUHlfU0laRShkZXF1ZSkgPiBkZXF1ZS0+bWF4bGVuKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpydiA9IGRlcXVlX3BvcChkZXF1ZSwgTlVMTCk7Ci0gICAgICAgIGFzc2VydChydiAhPSBOVUxMKTsKLSAgICAgICAgYXNzZXJ0KFB5X1NJWkUoZGVxdWUpIDw9IGRlcXVlLT5tYXhsZW4pOwotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgIH0KLX0KKyNkZWZpbmUgTkVFRFNfVFJJTShkZXF1ZSwgbWF4bGVuKSAoKHNpemVfdCkobWF4bGVuKSA8IChzaXplX3QpKFB5X1NJWkUoZGVxdWUpKSkKIAotc3RhdGljIHZvaWQKLWRlcXVlX3RyaW1fbGVmdChkZXF1ZW9iamVjdCAqZGVxdWUpCitzdGF0aWMgaW50CitkZXF1ZV9hcHBlbmRfaW50ZXJuYWwoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlbSwgUHlfc3NpemVfdCBtYXhsZW4pCiB7Ci0gICAgaWYgKGRlcXVlLT5tYXhsZW4gIT0gLTEgJiYgUHlfU0laRShkZXF1ZSkgPiBkZXF1ZS0+bWF4bGVuKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpydiA9IGRlcXVlX3BvcGxlZnQoZGVxdWUsIE5VTEwpOwotICAgICAgICBhc3NlcnQocnYgIT0gTlVMTCk7Ci0gICAgICAgIGFzc2VydChQeV9TSVpFKGRlcXVlKSA8PSBkZXF1ZS0+bWF4bGVuKTsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kZXF1ZV9hcHBlbmQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlbSkKLXsKLSAgICBkZXF1ZS0+c3RhdGUrKzsKICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4gLSAxKSB7Ci0gICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soUHlfU0laRShkZXF1ZSkpOworICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKCk7CiAgICAgICAgIGlmIChiID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgYi0+bGVmdGxpbmsgPSBkZXF1ZS0+cmlnaHRibG9jazsKICAgICAgICAgQ0hFQ0tfRU5EKGRlcXVlLT5yaWdodGJsb2NrLT5yaWdodGxpbmspOwogICAgICAgICBkZXF1ZS0+cmlnaHRibG9jay0+cmlnaHRsaW5rID0gYjsKQEAgLTMxMywyNCArMjc4LDM2IEBACiAgICAgICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7CiAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gLTE7CiAgICAgfQotICAgIFB5X0lOQ1JFRihpdGVtKTsKICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgIGRlcXVlLT5yaWdodGluZGV4Kys7CiAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdID0gaXRlbTsKLSAgICBkZXF1ZV90cmltX2xlZnQoZGVxdWUpOworICAgIGlmIChORUVEU19UUklNKGRlcXVlLCBtYXhsZW4pKSB7CisgICAgICAgIFB5T2JqZWN0ICpvbGRpdGVtID0gZGVxdWVfcG9wbGVmdChkZXF1ZSwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihvbGRpdGVtKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9hcHBlbmQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgaWYgKGRlcXVlX2FwcGVuZF9pbnRlcm5hbChkZXF1ZSwgaXRlbSwgZGVxdWUtPm1heGxlbikgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKGFwcGVuZF9kb2MsICJBZGQgYW4gZWxlbWVudCB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kZXF1ZV9hcHBlbmRsZWZ0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0pCitzdGF0aWMgaW50CitkZXF1ZV9hcHBlbmRsZWZ0X2ludGVybmFsKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbWF4bGVuKQogewotICAgIGRlcXVlLT5zdGF0ZSsrOwogICAgIGlmIChkZXF1ZS0+bGVmdGluZGV4ID09IDApIHsKLSAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CisgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soKTsKICAgICAgICAgaWYgKGIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBiLT5yaWdodGxpbmsgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgICAgICBDSEVDS19FTkQoZGVxdWUtPmxlZnRibG9jay0+bGVmdGxpbmspOwogICAgICAgICBkZXF1ZS0+bGVmdGJsb2NrLT5sZWZ0bGluayA9IGI7CkBAIC0zMzgsMzcgKzMxNSw2NSBAQAogICAgICAgICBNQVJLX0VORChiLT5sZWZ0bGluayk7CiAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBCTE9DS0xFTjsKICAgICB9Ci0gICAgUHlfSU5DUkVGKGl0ZW0pOwogICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgZGVxdWUtPmxlZnRpbmRleC0tOwogICAgIGRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleF0gPSBpdGVtOwotICAgIGRlcXVlX3RyaW1fcmlnaHQoZGVxdWUpOworICAgIGlmIChORUVEU19UUklNKGRlcXVlLCBkZXF1ZS0+bWF4bGVuKSkgeworICAgICAgICBQeU9iamVjdCAqb2xkaXRlbSA9IGRlcXVlX3BvcChkZXF1ZSwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihvbGRpdGVtKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9hcHBlbmRsZWZ0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0pCit7CisgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgIGlmIChkZXF1ZV9hcHBlbmRsZWZ0X2ludGVybmFsKGRlcXVlLCBpdGVtLCBkZXF1ZS0+bWF4bGVuKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoYXBwZW5kbGVmdF9kb2MsICJBZGQgYW4gZWxlbWVudCB0byB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4iKTsKIAorc3RhdGljIFB5T2JqZWN0KgorZmluYWxpemVfaXRlcmF0b3IoUHlPYmplY3QgKml0KQoreworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfREVDUkVGKGl0KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KIAogLyogUnVuIGFuIGl0ZXJhdG9yIHRvIGV4aGF1c3Rpb24uICBTaG9ydGN1dCBmb3IKICAgIHRoZSBleHRlbmQvZXh0ZW5kbGVmdCBtZXRob2RzIHdoZW4gbWF4bGVuID09IDAuICovCiBzdGF0aWMgUHlPYmplY3QqCiBjb25zdW1lX2l0ZXJhdG9yKFB5T2JqZWN0ICppdCkKIHsKKyAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CiAgICAgUHlPYmplY3QgKml0ZW07CiAKLSAgICB3aGlsZSAoKGl0ZW0gPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKKyAgICBpdGVybmV4dCA9ICpQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQ7CisgICAgd2hpbGUgKChpdGVtID0gaXRlcm5leHQoaXQpKSAhPSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICB9Ci0gICAgUHlfREVDUkVGKGl0KTsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIGZpbmFsaXplX2l0ZXJhdG9yKGl0KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2V4dGVuZChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVyYWJsZSkKIHsKICAgICBQeU9iamVjdCAqaXQsICppdGVtOworICAgIFB5T2JqZWN0ICooKml0ZXJuZXh0KShQeU9iamVjdCAqKTsKKyAgICBQeV9zc2l6ZV90IG1heGxlbiA9IGRlcXVlLT5tYXhsZW47CiAKICAgICAvKiBIYW5kbGUgY2FzZSB3aGVyZSBpZChkZXF1ZSkgPT0gaWQoaXRlcmFibGUpICovCiAgICAgaWYgKChQeU9iamVjdCAqKWRlcXVlID09IGl0ZXJhYmxlKSB7CkBAIC0zODEsNiArMzg2LDEzIEBACiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobWF4bGVuID09IDApCisgICAgICAgIHJldHVybiBjb25zdW1lX2l0ZXJhdG9yKGl0KTsKKwogICAgIC8qIFNwYWNlIHNhdmluZyBoZXVyaXN0aWMuICBTdGFydCBmaWxsaW5nIGZyb20gdGhlIGxlZnQgKi8KICAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkgewogICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayk7CkBAIC0zODksMTcgKzQwMSwxMCBAQAogICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IDA7CiAgICAgfQogCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKLSAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZGVxdWUtPm1heGxlbiA9PSAwKQotICAgICAgICByZXR1cm4gY29uc3VtZV9pdGVyYXRvcihpdCk7Ci0KLSAgICB3aGlsZSAoKGl0ZW0gPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OworICAgIHdoaWxlICgoaXRlbSA9IGl0ZXJuZXh0KGl0KSkgIT0gTlVMTCkgewogICAgICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4gLSAxKSB7Ci0gICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKFB5X1NJWkUoZGVxdWUpKTsKKyAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soKTsKICAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKQEAgLTQxNSwxNCArNDIwLDE0IEBACiAgICAgICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4Kys7CiAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrLT5kYXRhW2RlcXVlLT5yaWdodGluZGV4XSA9IGl0ZW07Ci0gICAgICAgIGRlcXVlX3RyaW1fbGVmdChkZXF1ZSk7CisgICAgICAgIGlmIChORUVEU19UUklNKGRlcXVlLCBtYXhsZW4pKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqb2xkaXRlbSA9IGRlcXVlX3BvcGxlZnQoZGVxdWUsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKG9sZGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfREVDUkVGKGl0KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIGZpbmFsaXplX2l0ZXJhdG9yKGl0KTsKIH0KIAogUHlEb2NfU1RSVkFSKGV4dGVuZF9kb2MsCkBAIC00MzIsNiArNDM3LDggQEAKIGRlcXVlX2V4dGVuZGxlZnQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlcmFibGUpCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbTsKKyAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CisgICAgUHlfc3NpemVfdCBtYXhsZW4gPSBkZXF1ZS0+bWF4bGVuOwogCiAgICAgLyogSGFuZGxlIGNhc2Ugd2hlcmUgaWQoZGVxdWUpID09IGlkKGl0ZXJhYmxlKSAqLwogICAgIGlmICgoUHlPYmplY3QgKilkZXF1ZSA9PSBpdGVyYWJsZSkgewpAQCAtNDQ0LDYgKzQ1MSwxMyBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaWYgKGl0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKG1heGxlbiA9PSAwKQorICAgICAgICByZXR1cm4gY29uc3VtZV9pdGVyYXRvcihpdCk7CisKICAgICAvKiBTcGFjZSBzYXZpbmcgaGV1cmlzdGljLiAgU3RhcnQgZmlsbGluZyBmcm9tIHRoZSByaWdodCAqLwogICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKSB7CiAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrKTsKQEAgLTQ1MiwxNyArNDY2LDEwIEBACiAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQkxPQ0tMRU4gLSAyOwogICAgIH0KIAotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7Ci0gICAgaWYgKGl0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGRlcXVlLT5tYXhsZW4gPT0gMCkKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVfaXRlcmF0b3IoaXQpOwotCi0gICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgIGl0ZXJuZXh0ID0gKlB5X1RZUEUoaXQpLT50cF9pdGVybmV4dDsKKyAgICB3aGlsZSAoKGl0ZW0gPSBpdGVybmV4dChpdCkpICE9IE5VTEwpIHsKICAgICAgICAgaWYgKGRlcXVlLT5sZWZ0aW5kZXggPT0gMCkgewotICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CisgICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKCk7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CkBAIC00NzgsMTQgKzQ4NSwxNCBAQAogICAgICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgICAgICBkZXF1ZS0+bGVmdGluZGV4LS07CiAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleF0gPSBpdGVtOwotICAgICAgICBkZXF1ZV90cmltX3JpZ2h0KGRlcXVlKTsKKyAgICAgICAgaWYgKE5FRURTX1RSSU0oZGVxdWUsIG1heGxlbikpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvbGRpdGVtID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvbGRpdGVtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBmaW5hbGl6ZV9pdGVyYXRvcihpdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihleHRlbmRsZWZ0X2RvYywKQEAgLTUwNCw3ICs1MTEsNDAgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqZGVxdWVfY29weShQeU9iamVjdCAqZGVxdWUpOworc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX2NvcHkoUHlPYmplY3QgKmRlcXVlKQoreworICAgIGRlcXVlb2JqZWN0ICpvbGRfZGVxdWUgPSAoZGVxdWVvYmplY3QgKilkZXF1ZTsKKyAgICBpZiAoUHlfVFlQRShkZXF1ZSkgPT0gJmRlcXVlX3R5cGUpIHsKKyAgICAgICAgZGVxdWVvYmplY3QgKm5ld19kZXF1ZTsKKyAgICAgICAgUHlPYmplY3QgKnJ2OworCisgICAgICAgIG5ld19kZXF1ZSA9IChkZXF1ZW9iamVjdCAqKWRlcXVlX25ldygmZGVxdWVfdHlwZSwgKFB5T2JqZWN0ICopTlVMTCwgKFB5T2JqZWN0ICopTlVMTCk7CisgICAgICAgIGlmIChuZXdfZGVxdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBuZXdfZGVxdWUtPm1heGxlbiA9IG9sZF9kZXF1ZS0+bWF4bGVuOworICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHRoZSBkZXF1ZV9yZXBlYXQoKSBjb21tb24gY2FzZSB3aGVyZSBsZW4oZGVxdWUpID09IDEgKi8KKyAgICAgICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDEpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gb2xkX2RlcXVlLT5sZWZ0YmxvY2stPmRhdGFbb2xkX2RlcXVlLT5sZWZ0aW5kZXhdOworICAgICAgICAgICAgcnYgPSBkZXF1ZV9hcHBlbmQobmV3X2RlcXVlLCBpdGVtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJ2ID0gZGVxdWVfZXh0ZW5kKG5ld19kZXF1ZSwgZGVxdWUpOworICAgICAgICB9CisgICAgICAgIGlmIChydiAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocnYpOworICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld19kZXF1ZTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYobmV3X2RlcXVlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChvbGRfZGVxdWUtPm1heGxlbiA8IDApCisgICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopKFB5X1RZUEUoZGVxdWUpKSwgIk8iLCBkZXF1ZSwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKShQeV9UWVBFKGRlcXVlKSksICJPaSIsCisgICAgICAgICAgICBkZXF1ZSwgb2xkX2RlcXVlLT5tYXhsZW4sIE5VTEwpOworfQorCitQeURvY19TVFJWQVIoY29weV9kb2MsICJSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgYSBkZXF1ZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2NvbmNhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICpvdGhlcikKQEAgLTUzNCwzOCArNTc0LDEwMiBAQAogICAgIHJldHVybiBuZXdfZGVxdWU7CiB9CiAKLXN0YXRpYyB2b2lkIGRlcXVlX2NsZWFyKGRlcXVlb2JqZWN0ICpkZXF1ZSk7CitzdGF0aWMgdm9pZAorZGVxdWVfY2xlYXIoZGVxdWVvYmplY3QgKmRlcXVlKQoreworICAgIGJsb2NrICpiOworICAgIGJsb2NrICpwcmV2YmxvY2s7CisgICAgYmxvY2sgKmxlZnRibG9jazsKKyAgICBQeV9zc2l6ZV90IGxlZnRpbmRleDsKKyAgICBQeV9zc2l6ZV90IG4sIG07CisgICAgUHlPYmplY3QgKml0ZW07CisgICAgUHlPYmplY3QgKippdGVtcHRyLCAqKmxpbWl0OworCisgICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDApCisgICAgICAgIHJldHVybjsKKworICAgIC8qIER1cmluZyB0aGUgcHJvY2VzcyBvZiBjbGVhcmluZyBhIGRlcXVlLCBkZWNyZWZzIGNhbiBjYXVzZSB0aGUKKyAgICAgICBkZXF1ZSB0byBtdXRhdGUuICBUbyBhdm9pZCBmYXRhbCBjb25mdXNpb24sIHdlIGhhdmUgdG8gbWFrZSB0aGUKKyAgICAgICBkZXF1ZSBlbXB0eSBiZWZvcmUgY2xlYXJpbmcgdGhlIGJsb2NrcyBhbmQgbmV2ZXIgcmVmZXIgdG8KKyAgICAgICBhbnl0aGluZyB2aWEgZGVxdWUtPnJlZiB3aGlsZSBjbGVhcmluZy4gIChUaGlzIGlzIHRoZSBzYW1lCisgICAgICAgdGVjaG5pcXVlIHVzZWQgZm9yIGNsZWFyaW5nIGxpc3RzLCBzZXRzLCBhbmQgZGljdHMuKQorCisgICAgICAgTWFraW5nIHRoZSBkZXF1ZSBlbXB0eSByZXF1aXJlcyBhbGxvY2F0aW5nIGEgbmV3IGVtcHR5IGJsb2NrLiAgSW4KKyAgICAgICB0aGUgdW5saWtlbHkgZXZlbnQgdGhhdCBtZW1vcnkgaXMgZnVsbCwgd2UgZmFsbCBiYWNrIHRvIGFuCisgICAgICAgYWx0ZXJuYXRlIG1ldGhvZCB0aGF0IGRvZXNuJ3QgcmVxdWlyZSBhIG5ldyBibG9jay4gIFJlcGVhdGluZworICAgICAgIHBvcHMgaW4gYSB3aGlsZS1sb29wIGlzIHNsb3dlciwgcG9zc2libHkgcmUtZW50cmFudCAoYW5kIGEgY2xldmVyCisgICAgICAgYWR2ZXJzYXJ5IGNvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHRlcm1pbmF0ZSkuCisgICAgKi8KKworICAgIGIgPSBuZXdibG9jaygpOworICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZ290byBhbHRlcm5hdGVfbWV0aG9kOworICAgIH0KKworICAgIC8qIFJlbWVtYmVyIHRoZSBvbGQgc2l6ZSwgbGVmdGJsb2NrLCBhbmQgbGVmdGluZGV4ICovCisgICAgbiA9IFB5X1NJWkUoZGVxdWUpOworICAgIGxlZnRibG9jayA9IGRlcXVlLT5sZWZ0YmxvY2s7CisgICAgbGVmdGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKKworICAgIC8qIFNldCB0aGUgZGVxdWUgdG8gYmUgZW1wdHkgdXNpbmcgdGhlIG5ld2x5IGFsbG9jYXRlZCBibG9jayAqLworICAgIE1BUktfRU5EKGItPmxlZnRsaW5rKTsKKyAgICBNQVJLX0VORChiLT5yaWdodGxpbmspOworICAgIFB5X1NJWkUoZGVxdWUpID0gMDsKKyAgICBkZXF1ZS0+bGVmdGJsb2NrID0gYjsKKyAgICBkZXF1ZS0+cmlnaHRibG9jayA9IGI7CisgICAgZGVxdWUtPmxlZnRpbmRleCA9IENFTlRFUiArIDE7CisgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBDRU5URVI7CisgICAgZGVxdWUtPnN0YXRlKys7CisKKyAgICAvKiBOb3cgdGhlIG9sZCBzaXplLCBsZWZ0YmxvY2ssIGFuZCBsZWZ0aW5kZXggYXJlIGRpc2Nvbm5lY3RlZCBmcm9tCisgICAgICAgdGhlIGVtcHR5IGRlcXVlIGFuZCB3ZSBjYW4gdXNlIHRoZW0gdG8gZGVjcmVmIHRoZSBwb2ludGVycy4KKyAgICAqLworICAgIG0gPSAoQkxPQ0tMRU4gLSBsZWZ0aW5kZXggPiBuKSA/IG4gOiBCTE9DS0xFTiAtIGxlZnRpbmRleDsKKyAgICBpdGVtcHRyID0gJmxlZnRibG9jay0+ZGF0YVtsZWZ0aW5kZXhdOworICAgIGxpbWl0ID0gaXRlbXB0ciArIG07CisgICAgbiAtPSBtOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmIChpdGVtcHRyID09IGxpbWl0KSB7CisgICAgICAgICAgICBpZiAobiA9PSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChsZWZ0YmxvY2stPnJpZ2h0bGluayk7CisgICAgICAgICAgICBwcmV2YmxvY2sgPSBsZWZ0YmxvY2s7CisgICAgICAgICAgICBsZWZ0YmxvY2sgPSBsZWZ0YmxvY2stPnJpZ2h0bGluazsKKyAgICAgICAgICAgIG0gPSAobiA+IEJMT0NLTEVOKSA/IEJMT0NLTEVOIDogbjsKKyAgICAgICAgICAgIGl0ZW1wdHIgPSBsZWZ0YmxvY2stPmRhdGE7CisgICAgICAgICAgICBsaW1pdCA9IGl0ZW1wdHIgKyBtOworICAgICAgICAgICAgbiAtPSBtOworICAgICAgICAgICAgZnJlZWJsb2NrKHByZXZibG9jayk7CisgICAgICAgIH0KKyAgICAgICAgaXRlbSA9ICooaXRlbXB0cisrKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgIH0KKyAgICBDSEVDS19FTkQobGVmdGJsb2NrLT5yaWdodGxpbmspOworICAgIGZyZWVibG9jayhsZWZ0YmxvY2spOworICAgIHJldHVybjsKKworICBhbHRlcm5hdGVfbWV0aG9kOgorICAgIHdoaWxlIChQeV9TSVpFKGRlcXVlKSkgeworICAgICAgICBpdGVtID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKKyAgICAgICAgYXNzZXJ0IChpdGVtICE9IE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgfQorfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGVxdWVfcmVwZWF0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBuKQorZGVxdWVfY2xlYXJtZXRob2QoZGVxdWVvYmplY3QgKmRlcXVlKQogewotICAgIGRlcXVlb2JqZWN0ICpuZXdfZGVxdWU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFhYWCBhZGQgYSBzcGVjaWFsIGNhc2UgZm9yIHdoZW4gbWF4bGVuIGlzIGRlZmluZWQgKi8KLSAgICBpZiAobiA8IDApCi0gICAgICAgIG4gPSAwOwotICAgIGVsc2UgaWYgKG4gPiAwICYmIFB5X1NJWkUoZGVxdWUpID4gTUFYX0RFUVVFX0xFTiAvIG4pCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgbmV3X2RlcXVlID0gKGRlcXVlb2JqZWN0ICopZGVxdWVfbmV3KCZkZXF1ZV90eXBlLCAoUHlPYmplY3QgKilOVUxMLCAoUHlPYmplY3QgKilOVUxMKTsKLSAgICBuZXdfZGVxdWUtPm1heGxlbiA9IGRlcXVlLT5tYXhsZW47Ci0KLSAgICBmb3IgKCA7IG4gOyBuLS0pIHsKLSAgICAgICAgcmVzdWx0ID0gZGVxdWVfZXh0ZW5kKG5ld19kZXF1ZSwgKFB5T2JqZWN0ICopZGVxdWUpOwotICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdfZGVxdWUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdfZGVxdWU7CisgICAgZGVxdWVfY2xlYXIoZGVxdWUpOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCitQeURvY19TVFJWQVIoY2xlYXJfZG9jLCAiUmVtb3ZlIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBkZXF1ZS4iKTsKKwogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2lucGxhY2VfcmVwZWF0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBuKQogewotICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIG0sIHNpemU7CiAgICAgUHlPYmplY3QgKnNlcTsKICAgICBQeU9iamVjdCAqcnY7CiAKQEAgLTU4MSwyNyArNjg1LDQ3IEBACiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKICAgICB9CiAKLSAgICBpZiAoc2l6ZSA+IE1BWF9ERVFVRV9MRU4gLyBuKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLQogICAgIGlmIChzaXplID09IDEpIHsKICAgICAgICAgLyogY29tbW9uIGNhc2UsIHJlcGVhdGluZyBhIHNpbmdsZSBlbGVtZW50ICovCiAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XTsKIAotICAgICAgICBpZiAoZGVxdWUtPm1heGxlbiAhPSAtMSAmJiBuID4gZGVxdWUtPm1heGxlbikKKyAgICAgICAgaWYgKGRlcXVlLT5tYXhsZW4gPj0gMCAmJiBuID4gZGVxdWUtPm1heGxlbikKICAgICAgICAgICAgIG4gPSBkZXF1ZS0+bWF4bGVuOwogCi0gICAgICAgIGZvciAoaSA9IDAgOyBpIDwgbi0xIDsgaSsrKSB7Ci0gICAgICAgICAgICBydiA9IGRlcXVlX2FwcGVuZChkZXF1ZSwgaXRlbSk7Ci0gICAgICAgICAgICBpZiAocnYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgICAgICBmb3IgKGkgPSAwIDsgaSA8IG4tMSA7ICkgeworICAgICAgICAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOIC0gMSkgeworICAgICAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soKTsKKyAgICAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1NJWkUoZGVxdWUpICs9IGk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBiLT5sZWZ0bGluayA9IGRlcXVlLT5yaWdodGJsb2NrOworICAgICAgICAgICAgICAgIENIRUNLX0VORChkZXF1ZS0+cmlnaHRibG9jay0+cmlnaHRsaW5rKTsKKyAgICAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRibG9jay0+cmlnaHRsaW5rID0gYjsKKyAgICAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRibG9jayA9IGI7CisgICAgICAgICAgICAgICAgTUFSS19FTkQoYi0+cmlnaHRsaW5rKTsKKyAgICAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbSA9IG4gLSAxIC0gaTsKKyAgICAgICAgICAgIGlmIChtID4gQkxPQ0tMRU4gLSAxIC0gZGVxdWUtPnJpZ2h0aW5kZXgpCisgICAgICAgICAgICAgICAgbSA9IEJMT0NLTEVOIC0gMSAtIGRlcXVlLT5yaWdodGluZGV4OworICAgICAgICAgICAgaSArPSBtOworICAgICAgICAgICAgd2hpbGUgKG0tLSkgeworICAgICAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4Kys7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrLT5kYXRhW2RlcXVlLT5yaWdodGluZGV4XSA9IGl0ZW07CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgUHlfU0laRShkZXF1ZSkgKz0gaTsKICAgICAgICAgUHlfSU5DUkVGKGRlcXVlKTsKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOwogICAgIH0KIAorICAgIGlmICgoc2l6ZV90KXNpemUgPiBQWV9TU0laRV9UX01BWCAvIChzaXplX3QpbikgeworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisKICAgICBzZXEgPSBQeVNlcXVlbmNlX0xpc3QoKFB5T2JqZWN0ICopZGVxdWUpOwogICAgIGlmIChzZXEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIHNlcTsKQEAgLTYxOSw2ICs3NDMsMjAgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9yZXBlYXQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeV9zc2l6ZV90IG4pCit7CisgICAgZGVxdWVvYmplY3QgKm5ld19kZXF1ZTsKKyAgICBQeU9iamVjdCAqcnY7CisKKyAgICBuZXdfZGVxdWUgPSAoZGVxdWVvYmplY3QgKilkZXF1ZV9jb3B5KChQeU9iamVjdCAqKSBkZXF1ZSk7CisgICAgaWYgKG5ld19kZXF1ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBydiA9IGRlcXVlX2lucGxhY2VfcmVwZWF0KG5ld19kZXF1ZSwgbik7CisgICAgUHlfREVDUkVGKG5ld19kZXF1ZSk7CisgICAgcmV0dXJuIHJ2OworfQorCiAvKiBUaGUgcm90YXRlKCkgbWV0aG9kIGlzIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgYW5kIGlzIHVzZWQgaW50ZXJuYWxseQogYXMgYSBwcmltaXRpdmUgZm9yIG90aGVyIG1ldGhvZHMuCiAKQEAgLTY3MSw3ICs4MDksNyBAQAogICAgIHdoaWxlIChuID4gMCkgewogICAgICAgICBpZiAobGVmdGluZGV4ID09IDApIHsKICAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBiID0gbmV3YmxvY2sobGVuKTsKKyAgICAgICAgICAgICAgICBiID0gbmV3YmxvY2soKTsKICAgICAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICB9CkBAIC03MDIsNyArODQwLDcgQEAKICAgICAgICAgICAgICAgICAqKGRlc3QrKykgPSAqKHNyYysrKTsKICAgICAgICAgICAgIH0gd2hpbGUgKC0tbSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJpZ2h0aW5kZXggPT0gLTEpIHsKKyAgICAgICAgaWYgKHJpZ2h0aW5kZXggPCAwKSB7CiAgICAgICAgICAgICBhc3NlcnQobGVmdGJsb2NrICE9IHJpZ2h0YmxvY2spOwogICAgICAgICAgICAgYXNzZXJ0KGIgPT0gTlVMTCk7CiAgICAgICAgICAgICBiID0gcmlnaHRibG9jazsKQEAgLTcxNSw3ICs4NTMsNyBAQAogICAgIHdoaWxlIChuIDwgMCkgewogICAgICAgICBpZiAocmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKICAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBiID0gbmV3YmxvY2sobGVuKTsKKyAgICAgICAgICAgICAgICBiID0gbmV3YmxvY2soKTsKICAgICAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICB9CkBAIC03OTAsMTEgKzkyOCwxMSBAQAogICAgIGJsb2NrICpyaWdodGJsb2NrID0gZGVxdWUtPnJpZ2h0YmxvY2s7CiAgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OwogICAgIFB5X3NzaXplX3QgcmlnaHRpbmRleCA9IGRlcXVlLT5yaWdodGluZGV4OwotICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpIC8gMjsKLSAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSkgPj4gMTsKICAgICBQeU9iamVjdCAqdG1wOwogCi0gICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKKyAgICBuKys7CisgICAgd2hpbGUgKC0tbikgewogICAgICAgICAvKiBWYWxpZGF0ZSB0aGF0IHBvaW50ZXJzIGhhdmVuJ3QgbWV0IGluIHRoZSBtaWRkbGUgKi8KICAgICAgICAgYXNzZXJ0KGxlZnRibG9jayAhPSByaWdodGJsb2NrIHx8IGxlZnRpbmRleCA8IHJpZ2h0aW5kZXgpOwogICAgICAgICBDSEVDS19OT1RfRU5EKGxlZnRibG9jayk7CkBAIC04MTQsNyArOTUyLDcgQEAKIAogICAgICAgICAvKiBTdGVwIGJhY2t3YXJkcyB3aXRoIHRoZSByaWdodCBibG9jay9pbmRleCBwYWlyICovCiAgICAgICAgIHJpZ2h0aW5kZXgtLTsKLSAgICAgICAgaWYgKHJpZ2h0aW5kZXggPT0gLTEpIHsKKyAgICAgICAgaWYgKHJpZ2h0aW5kZXggPCAwKSB7CiAgICAgICAgICAgICByaWdodGJsb2NrID0gcmlnaHRibG9jay0+bGVmdGxpbms7CiAgICAgICAgICAgICByaWdodGluZGV4ID0gQkxPQ0tMRU4gLSAxOwogICAgICAgICB9CkBAIC04MzEsMjAgKzk2OSwxOSBAQAogICAgIGJsb2NrICpiID0gZGVxdWUtPmxlZnRibG9jazsKICAgICBQeV9zc2l6ZV90IGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKTsKLSAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CiAgICAgc2l6ZV90IHN0YXJ0X3N0YXRlID0gZGVxdWUtPnN0YXRlOwogICAgIFB5T2JqZWN0ICppdGVtOwogICAgIGludCBjbXA7CiAKLSAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgeworICAgIG4rKzsKKyAgICB3aGlsZSAoLS1uKSB7CiAgICAgICAgIENIRUNLX05PVF9FTkQoYik7CiAgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0sIHYsIFB5X0VRKTsKLSAgICAgICAgaWYgKGNtcCA+IDApCi0gICAgICAgICAgICBjb3VudCsrOwotICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQorICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBjb3VudCArPSBjbXA7CiAKICAgICAgICAgaWYgKHN0YXJ0X3N0YXRlICE9IGRlcXVlLT5zdGF0ZSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKQEAgLTg3MSwxMiArMTAwOCwxMiBAQAogICAgIGJsb2NrICpiID0gZGVxdWUtPmxlZnRibG9jazsKICAgICBQeV9zc2l6ZV90IGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKTsKLSAgICBQeV9zc2l6ZV90IGk7CiAgICAgc2l6ZV90IHN0YXJ0X3N0YXRlID0gZGVxdWUtPnN0YXRlOwogICAgIFB5T2JqZWN0ICppdGVtOwogICAgIGludCBjbXA7CiAKLSAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgeworICAgIG4rKzsKKyAgICB3aGlsZSAoLS1uKSB7CiAgICAgICAgIENIRUNLX05PVF9FTkQoYik7CiAgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0sIHYsIFB5X0VRKTsKQEAgLTkwNiwxMSArMTA0MywxMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2luZGV4KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBzdGFydD0wLCBzdG9wPVB5X1NJWkUoZGVxdWUpOworICAgIFB5X3NzaXplX3QgaSwgbiwgc3RhcnQ9MCwgc3RvcD1QeV9TSVpFKGRlcXVlKTsKICAgICBQeU9iamVjdCAqdiwgKml0ZW07CiAgICAgYmxvY2sgKmIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OwogICAgIHNpemVfdCBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKKyAgICBpbnQgY21wOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8mTyY6aW5kZXgiLCAmdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RXZhbF9TbGljZUluZGV4LCAmc3RhcnQsCkBAIC05MjgsMjIgKzEwNjYsMzIgQEAKICAgICB9CiAgICAgaWYgKHN0b3AgPiBQeV9TSVpFKGRlcXVlKSkKICAgICAgICAgc3RvcCA9IFB5X1NJWkUoZGVxdWUpOworICAgIGlmIChzdGFydCA+IHN0b3ApCisgICAgICAgIHN0YXJ0ID0gc3RvcDsKKyAgICBhc3NlcnQoMCA8PSBzdGFydCAmJiBzdGFydCA8PSBzdG9wICYmIHN0b3AgPD0gUHlfU0laRShkZXF1ZSkpOwogCi0gICAgZm9yIChpPTAgOyBpPHN0b3AgOyBpKyspIHsKLSAgICAgICAgaWYgKGkgPj0gc3RhcnQpIHsKLSAgICAgICAgICAgIGludCBjbXA7Ci0gICAgICAgICAgICBDSEVDS19OT1RfRU5EKGIpOwotICAgICAgICAgICAgaXRlbSA9IGItPmRhdGFbaW5kZXhdOwotICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0sIHYsIFB5X0VRKTsKLSAgICAgICAgICAgIGlmIChjbXAgPiAwKQotICAgICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoaSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaWYgKHN0YXJ0X3N0YXRlICE9IGRlcXVlLT5zdGF0ZSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXF1ZSBtdXRhdGVkIGR1cmluZyBpdGVyYXRpb24iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAvKiBYWFggUmVwbGFjZSB0aGlzIGxvb3Agd2l0aCBmYXN0ZXIgY29kZSBmcm9tIGRlcXVlX2l0ZW0oKSAqLworICAgIGZvciAoaT0wIDsgaTxzdGFydCA7IGkrKykgeworICAgICAgICBpbmRleCsrOworICAgICAgICBpZiAoaW5kZXggPT0gQkxPQ0tMRU4pIHsKKyAgICAgICAgICAgIGIgPSBiLT5yaWdodGxpbms7CisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBuID0gc3RvcCAtIGkgKyAxOworICAgIHdoaWxlICgtLW4pIHsKKyAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKKyAgICAgICAgaXRlbSA9IGItPmRhdGFbaW5kZXhdOworICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXRlbSwgdiwgUHlfRVEpOworICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc3RvcCAtIG4pOworICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoc3RhcnRfc3RhdGUgIT0gZGVxdWUtPnN0YXRlKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXF1ZSBtdXRhdGVkIGR1cmluZyBpdGVyYXRpb24iKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGluZGV4Kys7CiAgICAgICAgIGlmIChpbmRleCA9PSBCTE9DS0xFTikgewpAQCAtMTAzNyw4NCArMTE4NSwxMCBAQAogUHlEb2NfU1RSVkFSKHJlbW92ZV9kb2MsCiAiRC5yZW1vdmUodmFsdWUpIC0tIHJlbW92ZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHZhbHVlLiIpOwogCi1zdGF0aWMgdm9pZAotZGVxdWVfY2xlYXIoZGVxdWVvYmplY3QgKmRlcXVlKQotewotICAgIGJsb2NrICpiOwotICAgIGJsb2NrICpwcmV2YmxvY2s7Ci0gICAgYmxvY2sgKmxlZnRibG9jazsKLSAgICBQeV9zc2l6ZV90IGxlZnRpbmRleDsKLSAgICBQeV9zc2l6ZV90IG47Ci0gICAgUHlPYmplY3QgKml0ZW07Ci0KLSAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLyogRHVyaW5nIHRoZSBwcm9jZXNzIG9mIGNsZWFyaW5nIGEgZGVxdWUsIGRlY3JlZnMgY2FuIGNhdXNlIHRoZQotICAgICAgIGRlcXVlIHRvIG11dGF0ZS4gIFRvIGF2b2lkIGZhdGFsIGNvbmZ1c2lvbiwgd2UgaGF2ZSB0byBtYWtlIHRoZQotICAgICAgIGRlcXVlIGVtcHR5IGJlZm9yZSBjbGVhcmluZyB0aGUgYmxvY2tzIGFuZCBuZXZlciByZWZlciB0bwotICAgICAgIGFueXRoaW5nIHZpYSBkZXF1ZS0+cmVmIHdoaWxlIGNsZWFyaW5nLiAgKFRoaXMgaXMgdGhlIHNhbWUKLSAgICAgICB0ZWNobmlxdWUgdXNlZCBmb3IgY2xlYXJpbmcgbGlzdHMsIHNldHMsIGFuZCBkaWN0cy4pCi0KLSAgICAgICBNYWtpbmcgdGhlIGRlcXVlIGVtcHR5IHJlcXVpcmVzIGFsbG9jYXRpbmcgYSBuZXcgZW1wdHkgYmxvY2suICBJbgotICAgICAgIHRoZSB1bmxpa2VseSBldmVudCB0aGF0IG1lbW9yeSBpcyBmdWxsLCB3ZSBmYWxsIGJhY2sgdG8gYW4KLSAgICAgICBhbHRlcm5hdGUgbWV0aG9kIHRoYXQgZG9lc24ndCByZXF1aXJlIGEgbmV3IGJsb2NrLiAgUmVwZWF0aW5nCi0gICAgICAgcG9wcyBpbiBhIHdoaWxlLWxvb3AgaXMgc2xvd2VyLCBwb3NzaWJseSByZS1lbnRyYW50IChhbmQgYSBjbGV2ZXIKLSAgICAgICBhZHZlcnNhcnkgY291bGQgY2F1c2UgaXQgdG8gbmV2ZXIgdGVybWluYXRlKS4KLSAgICAqLwotCi0gICAgYiA9IG5ld2Jsb2NrKDApOwotICAgIGlmIChiID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZ290byBhbHRlcm5hdGVfbWV0aG9kOwotICAgIH0KLQotICAgIC8qIFJlbWVtYmVyIHRoZSBvbGQgc2l6ZSwgbGVmdGJsb2NrLCBhbmQgbGVmdGluZGV4ICovCi0gICAgbGVmdGJsb2NrID0gZGVxdWUtPmxlZnRibG9jazsKLSAgICBsZWZ0aW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OwotICAgIG4gPSBQeV9TSVpFKGRlcXVlKTsKLQotICAgIC8qIFNldCB0aGUgZGVxdWUgdG8gYmUgZW1wdHkgdXNpbmcgdGhlIG5ld2x5IGFsbG9jYXRlZCBibG9jayAqLwotICAgIE1BUktfRU5EKGItPmxlZnRsaW5rKTsKLSAgICBNQVJLX0VORChiLT5yaWdodGxpbmspOwotICAgIFB5X1NJWkUoZGVxdWUpID0gMDsKLSAgICBkZXF1ZS0+bGVmdGJsb2NrID0gYjsKLSAgICBkZXF1ZS0+cmlnaHRibG9jayA9IGI7Ci0gICAgZGVxdWUtPmxlZnRpbmRleCA9IENFTlRFUiArIDE7Ci0gICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBDRU5URVI7Ci0gICAgZGVxdWUtPnN0YXRlKys7Ci0KLSAgICAvKiBOb3cgdGhlIG9sZCBzaXplLCBsZWZ0YmxvY2ssIGFuZCBsZWZ0aW5kZXggYXJlIGRpc2Nvbm5lY3RlZCBmcm9tCi0gICAgICAgdGhlIGVtcHR5IGRlcXVlIGFuZCB3ZSBjYW4gdXNlIHRoZW0gdG8gZGVjcmVmIHRoZSBwb2ludGVycy4KLSAgICAqLwotICAgIHdoaWxlIChuLS0pIHsKLSAgICAgICAgaXRlbSA9IGxlZnRibG9jay0+ZGF0YVtsZWZ0aW5kZXhdOwotICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgIGxlZnRpbmRleCsrOwotICAgICAgICBpZiAobGVmdGluZGV4ID09IEJMT0NLTEVOICYmIG4pIHsKLSAgICAgICAgICAgIENIRUNLX05PVF9FTkQobGVmdGJsb2NrLT5yaWdodGxpbmspOwotICAgICAgICAgICAgcHJldmJsb2NrID0gbGVmdGJsb2NrOwotICAgICAgICAgICAgbGVmdGJsb2NrID0gbGVmdGJsb2NrLT5yaWdodGxpbms7Ci0gICAgICAgICAgICBsZWZ0aW5kZXggPSAwOwotICAgICAgICAgICAgZnJlZWJsb2NrKHByZXZibG9jayk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQ0hFQ0tfRU5EKGxlZnRibG9jay0+cmlnaHRsaW5rKTsKLSAgICBmcmVlYmxvY2sobGVmdGJsb2NrKTsKLSAgICByZXR1cm47Ci0KLSAgYWx0ZXJuYXRlX21ldGhvZDoKLSAgICB3aGlsZSAoUHlfU0laRShkZXF1ZSkpIHsKLSAgICAgICAgaXRlbSA9IGRlcXVlX3BvcChkZXF1ZSwgTlVMTCk7Ci0gICAgICAgIGFzc2VydCAoaXRlbSAhPSBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgIH0KLX0KLQogc3RhdGljIGludAogdmFsaWRfaW5kZXgoUHlfc3NpemVfdCBpLCBQeV9zc2l6ZV90IGxpbWl0KQogewotICAgIC8qIFRoZSBjYXN0IHRvIHNpemVfdCBsZXQgdXMgdXNlIGp1c3QgYSBzaW5nbGUgY29tcGFyaXNvbgorICAgIC8qIFRoZSBjYXN0IHRvIHNpemVfdCBsZXRzIHVzIHVzZSBqdXN0IGEgc2luZ2xlIGNvbXBhcmlzb24KICAgICAgICB0byBjaGVjayB3aGV0aGVyIGkgaXMgaW4gdGhlIHJhbmdlOiAwIDw9IGkgPCBsaW1pdCAqLwogICAgIHJldHVybiAoc2l6ZV90KSBpIDwgKHNpemVfdCkgbGltaXQ7CiB9CkBAIC0xMTQzLDE0ICsxMjE3LDE2IEBACiAgICAgICAgIGkgPSAoUHlfc3NpemVfdCkoKHNpemVfdCkgaSAlIEJMT0NLTEVOKTsKICAgICAgICAgaWYgKGluZGV4IDwgKFB5X1NJWkUoZGVxdWUpID4+IDEpKSB7CiAgICAgICAgICAgICBiID0gZGVxdWUtPmxlZnRibG9jazsKLSAgICAgICAgICAgIHdoaWxlIChuLS0pCisgICAgICAgICAgICBuKys7CisgICAgICAgICAgICB3aGlsZSAoLS1uKQogICAgICAgICAgICAgICAgIGIgPSBiLT5yaWdodGxpbms7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBuID0gKFB5X3NzaXplX3QpKAogICAgICAgICAgICAgICAgICAgICAoKHNpemVfdCkoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpIC0gMSkpCiAgICAgICAgICAgICAgICAgICAgIC8gQkxPQ0tMRU4gLSBuKTsKICAgICAgICAgICAgIGIgPSBkZXF1ZS0+cmlnaHRibG9jazsKLSAgICAgICAgICAgIHdoaWxlIChuLS0pCisgICAgICAgICAgICBuKys7CisgICAgICAgICAgICB3aGlsZSAoLS1uKQogICAgICAgICAgICAgICAgIGIgPSBiLT5sZWZ0bGluazsKICAgICAgICAgfQogICAgIH0KQEAgLTExOTQsMTQgKzEyNzAsMTYgQEAKICAgICBpID0gKFB5X3NzaXplX3QpKChzaXplX3QpIGkgJSBCTE9DS0xFTik7CiAgICAgaWYgKGluZGV4IDw9IGhhbGZsZW4pIHsKICAgICAgICAgYiA9IGRlcXVlLT5sZWZ0YmxvY2s7Ci0gICAgICAgIHdoaWxlIChuLS0pCisgICAgICAgIG4rKzsKKyAgICAgICAgd2hpbGUgKC0tbikKICAgICAgICAgICAgIGIgPSBiLT5yaWdodGxpbms7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbiA9IChQeV9zc2l6ZV90KSgKICAgICAgICAgICAgICAgICAoKHNpemVfdCkoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpIC0gMSkpCiAgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICBiID0gZGVxdWUtPnJpZ2h0YmxvY2s7Ci0gICAgICAgIHdoaWxlIChuLS0pCisgICAgICAgIG4rKzsKKyAgICAgICAgd2hpbGUgKC0tbikKICAgICAgICAgICAgIGIgPSBiLT5sZWZ0bGluazsKICAgICB9CiAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMTIxMSwxNSArMTI4OSw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kZXF1ZV9jbGVhcm1ldGhvZChkZXF1ZW9iamVjdCAqZGVxdWUpCi17Ci0gICAgZGVxdWVfY2xlYXIoZGVxdWUpOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1QeURvY19TVFJWQVIoY2xlYXJfZG9jLCAiUmVtb3ZlIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBkZXF1ZS4iKTsKLQogc3RhdGljIHZvaWQKIGRlcXVlX2RlYWxsb2MoZGVxdWVvYmplY3QgKmRlcXVlKQogewpAQCAtMTI0Myw2ICsxMzEyLDcgQEAKICAgICBQeU9iamVjdCAqaXRlbTsKICAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIFB5X3NzaXplX3QgaW5kZXhsbyA9IGRlcXVlLT5sZWZ0aW5kZXg7CisgICAgUHlfc3NpemVfdCBpbmRleGhpZ2g7CiAKICAgICBmb3IgKGIgPSBkZXF1ZS0+bGVmdGJsb2NrOyBiICE9IGRlcXVlLT5yaWdodGJsb2NrOyBiID0gYi0+cmlnaHRsaW5rKSB7CiAgICAgICAgIGZvciAoaW5kZXggPSBpbmRleGxvOyBpbmRleCA8IEJMT0NLTEVOIDsgaW5kZXgrKykgewpAQCAtMTI1MSw3ICsxMzIxLDggQEAKICAgICAgICAgfQogICAgICAgICBpbmRleGxvID0gMDsKICAgICB9Ci0gICAgZm9yIChpbmRleCA9IGluZGV4bG87IGluZGV4IDw9IGRlcXVlLT5yaWdodGluZGV4OyBpbmRleCsrKSB7CisgICAgaW5kZXhoaWdoID0gZGVxdWUtPnJpZ2h0aW5kZXg7CisgICAgZm9yIChpbmRleCA9IGluZGV4bG87IGluZGV4IDw9IGluZGV4aGlnaDsgaW5kZXgrKykgewogICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07CiAgICAgICAgIFB5X1ZJU0lUKGl0ZW0pOwogICAgIH0KQEAgLTEyNTksNDUgKzEzMzAsMzMgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRlcXVlX2NvcHkoUHlPYmplY3QgKmRlcXVlKQotewotICAgIGlmICgoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4gPT0gLTEpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopKFB5X1RZUEUoZGVxdWUpKSwgIk8iLCBkZXF1ZSwgTlVMTCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKShQeV9UWVBFKGRlcXVlKSksICJPaSIsCi0gICAgICAgICAgICBkZXF1ZSwgKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuLCBOVUxMKTsKLX0KLQotUHlEb2NfU1RSVkFSKGNvcHlfZG9jLCAiUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIGEgZGVxdWUuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9yZWR1Y2UoZGVxdWVvYmplY3QgKmRlcXVlKQogewotICAgIFB5T2JqZWN0ICpkaWN0LCAqcmVzdWx0LCAqYXNsaXN0OworICAgIFB5T2JqZWN0ICpkaWN0LCAqaXQ7CiAgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOwogCiAgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopZGVxdWUsICZQeUlkX19fZGljdF9fKTsKLSAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBhc2xpc3QgPSBQeVNlcXVlbmNlX0xpc3QoKFB5T2JqZWN0ICopZGVxdWUpOwotICAgIGlmIChhc2xpc3QgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKGRpY3QpOworICAgICAgICBkaWN0ID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKGRpY3QpOworICAgIH0KKworICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcigoUHlPYmplY3QgKilkZXF1ZSk7CisgICAgaWYgKGl0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGVxdWUtPm1heGxlbiA9PSAtMSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk8oTykiLCBQeV9UWVBFKGRlcXVlKSwgYXNsaXN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiTyhPbikiLCBQeV9UWVBFKGRlcXVlKSwgYXNsaXN0LCBkZXF1ZS0+bWF4bGVuKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZGVxdWUtPm1heGxlbiA9PSAtMSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk8oT08pTyIsIFB5X1RZUEUoZGVxdWUpLCBhc2xpc3QsIFB5X05vbmUsIGRpY3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPKE9uKU8iLCBQeV9UWVBFKGRlcXVlKSwgYXNsaXN0LCBkZXF1ZS0+bWF4bGVuLCBkaWN0KTsKKworICAgIGlmIChkZXF1ZS0+bWF4bGVuIDwgMCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygpTk4iLCBQeV9UWVBFKGRlcXVlKSwgZGljdCwgaXQpOwogICAgIH0KLSAgICBQeV9YREVDUkVGKGRpY3QpOwotICAgIFB5X0RFQ1JFRihhc2xpc3QpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpbilOTiIsIFB5X1RZUEUoZGVxdWUpLCBkZXF1ZS0+bWF4bGVuLCBkaWN0LCBpdCk7CisgICAgfQogfQogCiBQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CkBAIC0xMzIwLDcgKzEzNzksNyBAQAogICAgICAgICBQeV9SZXByTGVhdmUoZGVxdWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKCgoZGVxdWVvYmplY3QgKilkZXF1ZSktPm1heGxlbiAhPSAtMSkKKyAgICBpZiAoKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuID49IDApCiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkZXF1ZSglUiwgbWF4bGVuPSV6ZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2xpc3QsICgoZGVxdWVvYmplY3QgKilkZXF1ZSktPm1heGxlbik7CiAgICAgZWxzZQpAQCAtMTM4MSw3ICsxNDQwLDcgQEAKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgIFB5X0RFQ1JFRih5KTsKLSAgICAgICAgaWYgKGIgPT0gLTEpCisgICAgICAgIGlmIChiIDwgMCkKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAgICAgLyogV2UgcmVhY2hlZCB0aGUgZW5kIG9mIG9uZSBkZXF1ZSBvciBib3RoICovCkBAIC0xNDE2LDggKzE0NzUsMTQgQEAKICAgICBQeV9zc2l6ZV90IG1heGxlbiA9IC0xOwogICAgIGNoYXIgKmt3bGlzdFtdID0geyJpdGVyYWJsZSIsICJtYXhsZW4iLCAwfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGFyZ3MsICJ8T086ZGVxdWUiLCBrd2xpc3QsICZpdGVyYWJsZSwgJm1heGxlbm9iaikpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoa3dkYXJncyA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRlcXVlKCkiLCAwLCAyLCAmaXRlcmFibGUsICZtYXhsZW5vYmopKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGFyZ3MsICJ8T086ZGVxdWUiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpdGVyYWJsZSwgJm1heGxlbm9iaikpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGlmIChtYXhsZW5vYmogIT0gTlVMTCAmJiBtYXhsZW5vYmogIT0gUHlfTm9uZSkgewogICAgICAgICBtYXhsZW4gPSBQeUxvbmdfQXNTc2l6ZV90KG1heGxlbm9iaik7CiAgICAgICAgIGlmIChtYXhsZW4gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTE0NDYsNyArMTUxMSw3IEBACiAgICAgUHlfc3NpemVfdCBibG9ja3M7CiAKICAgICByZXMgPSBfUHlPYmplY3RfU0laRShQeV9UWVBFKGRlcXVlKSk7Ci0gICAgYmxvY2tzID0gKGRlcXVlLT5sZWZ0aW5kZXggKyBQeV9TSVpFKGRlcXVlKSArIEJMT0NLTEVOIC0gMSkgLyBCTE9DS0xFTjsKKyAgICBibG9ja3MgPSAoc2l6ZV90KShkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgKyBCTE9DS0xFTiAtIDEpIC8gQkxPQ0tMRU47CiAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0aW5kZXggKyBQeV9TSVpFKGRlcXVlKSAtIDEgPT0KICAgICAgICAgICAgKGJsb2NrcyAtIDEpICogQkxPQ0tMRU4gKyBkZXF1ZS0+cmlnaHRpbmRleCk7CiAgICAgcmVzICs9IGJsb2NrcyAqIHNpemVvZihibG9jayk7CkBAIC0xNDY1LDcgKzE1MzAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2dldF9tYXhsZW4oZGVxdWVvYmplY3QgKmRlcXVlKQogewotICAgIGlmIChkZXF1ZS0+bWF4bGVuID09IC0xKQorICAgIGlmIChkZXF1ZS0+bWF4bGVuIDwgMCkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChkZXF1ZS0+bWF4bGVuKTsKIH0KQEAgLTE4MDYsNyArMTg3MSw3IEBACiAgICAgaXRlbSA9IGl0LT5iLT5kYXRhW2l0LT5pbmRleF07CiAgICAgaXQtPmluZGV4LS07CiAgICAgaXQtPmNvdW50ZXItLTsKLSAgICBpZiAoaXQtPmluZGV4ID09IC0xICYmIGl0LT5jb3VudGVyID4gMCkgeworICAgIGlmIChpdC0+aW5kZXggPCAwICYmIGl0LT5jb3VudGVyID4gMCkgewogICAgICAgICBDSEVDS19OT1RfRU5EKGl0LT5iLT5sZWZ0bGluayk7CiAgICAgICAgIGl0LT5iID0gaXQtPmItPmxlZnRsaW5rOwogICAgICAgICBpdC0+aW5kZXggPSBCTE9DS0xFTiAtIDE7CkBAIC0xOTgwLDcgKzIwNDUsNyBAQAogICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIGRkLT5kZWZhdWx0X2ZhY3RvcnkpOwogICAgIGlmIChhcmdzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilkZCwgJlB5SWRfaXRlbXMsICIoKSIpOworICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilkZCwgJlB5SWRfaXRlbXMsIE5VTEwpOwogICAgIGlmIChpdGVtcyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMjM1LDEzICsyMzAwLDEzIEBACiAKICAgICAgICAgICAgIG9sZHZhbCA9IF9QeURpY3RfR2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBoYXNoKTsKICAgICAgICAgICAgIGlmIChvbGR2YWwgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgb25lLCBoYXNoKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG9uZSwgaGFzaCkgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG5ld3ZhbCA9IFB5TnVtYmVyX0FkZChvbGR2YWwsIG9uZSk7CiAgICAgICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBuZXd2YWwsIGhhc2gpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgbmV3dmFsLCBoYXNoKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgICAgICBQeV9DTEVBUihuZXd2YWwpOwogICAgICAgICAgICAgfQpAQCAtMjI2Nyw3ICsyMzMyLDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihvbGR2YWwpOwogICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBuZXd2YWwpID09IC0xKQorICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBuZXd2YWwpIDwgMCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIFB5X0NMRUFSKG5ld3ZhbCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Nzdi5jIGIvTW9kdWxlcy9fY3N2LmMKaW5kZXggYjQyODI3OS4uN2E3ODU0MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3N2LmMKKysrIGIvTW9kdWxlcy9fY3N2LmMKQEAgLTYwLDEwICs2MCwxMCBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUXVvdGVTdHlsZSBzdHlsZTsKLSAgICBjaGFyICpuYW1lOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CiB9IFN0eWxlRGVzYzsKIAotc3RhdGljIFN0eWxlRGVzYyBxdW90ZV9zdHlsZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBTdHlsZURlc2MgcXVvdGVfc3R5bGVzW10gPSB7CiAgICAgeyBRVU9URV9NSU5JTUFMLCAgICAiUVVPVEVfTUlOSU1BTCIgfSwKICAgICB7IFFVT1RFX0FMTCwgICAgICAgICJRVU9URV9BTEwiIH0sCiAgICAgeyBRVU9URV9OT05OVU1FUklDLCAiUVVPVEVfTk9OTlVNRVJJQyIgfSwKQEAgLTI4Niw3ICsyODYsNyBAQAogc3RhdGljIGludAogZGlhbGVjdF9jaGVja19xdW90aW5nKGludCBxdW90aW5nKQogewotICAgIFN0eWxlRGVzYyAqcXM7CisgICAgY29uc3QgU3R5bGVEZXNjICpxczsKIAogICAgIGZvciAocXMgPSBxdW90ZV9zdHlsZXM7IHFzLT5uYW1lOyBxcysrKSB7CiAgICAgICAgIGlmICgoaW50KXFzLT5zdHlsZSA9PSBxdW90aW5nKQpAQCAtNTE4LDE1ICs1MTgsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY2FsbF9kaWFsZWN0KFB5T2JqZWN0ICpkaWFsZWN0X2luc3QsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKmN0b3JfYXJnczsKLSAgICBQeU9iamVjdCAqZGlhbGVjdDsKLQotICAgIGN0b3JfYXJncyA9IFB5X0J1aWxkVmFsdWUoZGlhbGVjdF9pbnN0ID8gIihPKSIgOiAiKCkiLCBkaWFsZWN0X2luc3QpOwotICAgIGlmIChjdG9yX2FyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGlhbGVjdCA9IFB5T2JqZWN0X0NhbGwoKFB5T2JqZWN0ICopJkRpYWxlY3RfVHlwZSwgY3Rvcl9hcmdzLCBrd2FyZ3MpOwotICAgIFB5X0RFQ1JFRihjdG9yX2FyZ3MpOwotICAgIHJldHVybiBkaWFsZWN0OworICAgIFB5T2JqZWN0ICp0eXBlID0gKFB5T2JqZWN0ICopJkRpYWxlY3RfVHlwZTsKKyAgICBpZiAoZGlhbGVjdF9pbnN0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHR5cGUsICZkaWFsZWN0X2luc3QsIDEsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdCh0eXBlLCBOVUxMLCAwLCBrd2FyZ3MpOworICAgIH0KIH0KIAogLyoKQEAgLTE2NDgsNyArMTY0Niw3IEBACiBQeUluaXRfX2Nzdih2b2lkKQogewogICAgIFB5T2JqZWN0ICptb2R1bGU7Ci0gICAgU3R5bGVEZXNjICpzdHlsZTsKKyAgICBjb25zdCBTdHlsZURlc2MgKnN0eWxlOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmRGlhbGVjdF9UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKaW5kZXggMjkzNTI5Mi4uYjNhOTU4MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCkBAIC0xMTEsMTIgKzExMSw2IEBACiAjaWZuZGVmIElTX0lOVFJFU09VUkNFCiAjZGVmaW5lIElTX0lOVFJFU09VUkNFKHgpICgoKHNpemVfdCkoeCkgPj4gMTYpID09IDApCiAjZW5kaWYKLSMgaWZkZWYgX1dJTjMyX1dDRQotLyogVW5saWtlIGRlc2t0b3AgV2luZG93cywgV2luQ0UgaGFzIGJvdGggVyBhbmQgQSB2YXJpYW50cyBvZgotICAgR2V0UHJvY0FkZHJlc3MsIGJ1dCB0aGUgZGVmYXVsdCBXIHZlcnNpb24gaXMgbm90IHdoYXQgd2Ugd2FudCAqLwotIyAgdW5kZWYgR2V0UHJvY0FkZHJlc3MKLSMgIGRlZmluZSBHZXRQcm9jQWRkcmVzcyBHZXRQcm9jQWRkcmVzc0EKLSMgZW5kaWYKICNlbHNlCiAjaW5jbHVkZSAiY3R5cGVzX2RsZmNuLmgiCiAjZW5kaWYKQEAgLTQzNSw3ICs0MjksNyBAQAogICAgIHJldHVybiBTdHJ1Y3RVbmlvblR5cGVfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMsIDApOwogfQogCi1zdGF0aWMgY2hhciBmcm9tX2FkZHJlc3NfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJvbV9hZGRyZXNzX2RvY1tdID0KICJDLmZyb21fYWRkcmVzcyhpbnRlZ2VyKSAtPiBDIGluc3RhbmNlXG5hY2Nlc3MgYSBDIGluc3RhbmNlIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcyI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NTMsNyArNDQ3LDcgQEAKICAgICByZXR1cm4gUHlDRGF0YV9BdEFkZHJlc3ModHlwZSwgYnVmKTsKIH0KIAotc3RhdGljIGNoYXIgZnJvbV9idWZmZXJfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJvbV9idWZmZXJfZG9jW10gPQogIkMuZnJvbV9idWZmZXIob2JqZWN0LCBvZmZzZXQ9MCkgLT4gQyBpbnN0YW5jZVxuY3JlYXRlIGEgQyBpbnN0YW5jZSBmcm9tIGEgd3JpdGVhYmxlIGJ1ZmZlciI7CiAKIHN0YXRpYyBpbnQKQEAgLTUyNCw3ICs1MTgsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBjaGFyIGZyb21fYnVmZmVyX2NvcHlfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJvbV9idWZmZXJfY29weV9kb2NbXSA9CiAiQy5mcm9tX2J1ZmZlcl9jb3B5KG9iamVjdCwgb2Zmc2V0PTApIC0+IEMgaW5zdGFuY2VcbmNyZWF0ZSBhIEMgaW5zdGFuY2UgZnJvbSBhIHJlYWRhYmxlIGJ1ZmZlciI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01NjYsNyArNTYwLDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY2hhciBpbl9kbGxfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgaW5fZGxsX2RvY1tdID0KICJDLmluX2RsbChkbGwsIG5hbWUpIC0+IEMgaW5zdGFuY2VcbmFjY2VzcyBhIEMgaW5zdGFuY2UgaW4gYSBkbGwiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjIzLDcgKzYxNyw3IEBACiAgICAgcmV0dXJuIFB5Q0RhdGFfQXRBZGRyZXNzKHR5cGUsIGFkZHJlc3MpOwogfQogCi1zdGF0aWMgY2hhciBmcm9tX3BhcmFtX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fcGFyYW1fZG9jW10gPQogIkNvbnZlcnQgYSBQeXRob24gb2JqZWN0IGludG8gYSBmdW5jdGlvbiBjYWxsIHBhcmFtZXRlci4iOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTQ4OSw3ICsxNDgzLDcgQEAKIAogKi8KIAotc3RhdGljIGNoYXIgKlNJTVBMRV9UWVBFX0NIQVJTID0gImNiQmhIaUlsTGRmdXpacVFQWE92P2ciOworc3RhdGljIGNvbnN0IGNoYXIgU0lNUExFX1RZUEVfQ0hBUlNbXSA9ICJjYkJoSGlJbExkZnV6WnFRUFhPdj9nIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGNfd2NoYXJfcF9mcm9tX3BhcmFtKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUpCkBAIC0yNDE0LDcgKzI0MDgsNyBAQAogICAgIGNoYXIgKmNwID0gc3RyaW5nOwogICAgIHNpemVfdCBieXRlc19sZWZ0OwogCi0gICAgYXNzZXJ0KHNpemVvZihzdHJpbmcpIC0gMSA+IHNpemVvZihQeV9zc2l6ZV90KSAqIDIpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2Yoc3RyaW5nKSAtIDEgPiBzaXplb2YoUHlfc3NpemVfdCkgKiAyKTsKICAgICBjcCArPSBzcHJpbnRmKGNwLCAiJXgiLCBQeV9TQUZFX0RPV05DQVNUKGluZGV4LCBQeV9zc2l6ZV90LCBpbnQpKTsKICAgICB3aGlsZSAodGFyZ2V0LT5iX2Jhc2UpIHsKICAgICAgICAgYnl0ZXNfbGVmdCA9IHNpemVvZihzdHJpbmcpIC0gKGNwIC0gc3RyaW5nKSAtIDE7CkBAIC0zMDc1LDcgKzMwNjksNyBAQAogfTsKIAogI2lmZGVmIE1TX1dJTjMyCi1zdGF0aWMgUFBST0MgRmluZEFkZHJlc3Modm9pZCAqaGFuZGxlLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdHlwZSkKK3N0YXRpYyBQUFJPQyBGaW5kQWRkcmVzcyh2b2lkICpoYW5kbGUsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp0eXBlKQogewogI2lmZGVmIE1TX1dJTjY0CiAgICAgLyogd2luNjQgaGFzIG5vIHN0ZGNhbGwgY2FsbGluZyBjb252LCBzbyBpdCBzaG91bGQKQEAgLTMyMDksNyArMzIwMyw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9nZXRfbmFtZShQeU9iamVjdCAqb2JqLCBjaGFyICoqcG5hbWUpCitfZ2V0X25hbWUoUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqKnBuYW1lKQogewogI2lmZGVmIE1TX1dJTjMyCiAgICAgaWYgKFB5TG9uZ19DaGVjayhvYmopKSB7CkBAIC0zMjM3LDcgKzMyMzEsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q0Z1bmNQdHJfRnJvbURsbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgaW50ICgqIGFkZHJlc3MpKHZvaWQpOwogICAgIFB5T2JqZWN0ICpmdHVwbGU7CiAgICAgUHlPYmplY3QgKmRsbDsKQEAgLTUxMjcsMTMgKzUxMjEsMTIgQEAKIAogI2lmZGVmIE1TX1dJTjMyCiAKLXN0YXRpYyBjaGFyIGNvbWVycm9yX2RvY1tdID0gIlJhaXNlZCB3aGVuIGEgQ09NIG1ldGhvZCBjYWxsIGZhaWxlZC4iOworc3RhdGljIGNvbnN0IGNoYXIgY29tZXJyb3JfZG9jW10gPSAiUmFpc2VkIHdoZW4gYSBDT00gbWV0aG9kIGNhbGwgZmFpbGVkLiI7CiAKIGludAogY29tZXJyb3JfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpocmVzdWx0LCAqdGV4dCwgKmRldGFpbHM7Ci0gICAgUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICpic2VsZjsKICAgICBQeU9iamVjdCAqYTsKICAgICBpbnQgc3RhdHVzOwogCkBAIC01MTYwLDkgKzUxNTMsOCBAQAogICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHNlbGYsICJkZXRhaWxzIiwgZGV0YWlscykgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBic2VsZiA9IChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmOwogICAgIFB5X0lOQ1JFRihhcmdzKTsKLSAgICBQeV9TRVRSRUYoYnNlbGYtPmFyZ3MsIGFyZ3MpOworICAgIFB5X1NFVFJFRigoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5hcmdzLCBhcmdzKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNTQ5MiwxNCArNTQ4NCwxNCBAQAogI2VuZGlmCiAKIC8qIElmIFJUTERfTE9DQUwgaXMgbm90IGRlZmluZWQgKFdpbmRvd3MhKSwgc2V0IGl0IHRvIHplcm8uICovCi0jaWZuZGVmIFJUTERfTE9DQUwKKyNpZiAhSEFWRV9ERUNMX1JUTERfTE9DQUwKICNkZWZpbmUgUlRMRF9MT0NBTCAwCiAjZW5kaWYKIAogLyogSWYgUlRMRF9HTE9CQUwgaXMgbm90IGRlZmluZWQgKGN5Z3dpbiksIHNldCBpdCB0byB0aGUgc2FtZSB2YWx1ZSBhcwogICAgUlRMRF9MT0NBTC4KICovCi0jaWZuZGVmIFJUTERfR0xPQkFMCisjaWYgIUhBVkVfREVDTF9SVExEX0dMT0JBTAogI2RlZmluZSBSVExEX0dMT0JBTCBSVExEX0xPQ0FMCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jCmluZGV4IDNjN2Y4OTIuLjYyOWRkZjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzX3Rlc3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMKQEAgLTIzMywxNiArMjMzLDE1IEBACiAgICAgcmV0dXJuICgqZnVuYykodGFibGUpOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLUVYUE9SVChQWV9MT05HX0xPTkcpIF90ZXN0ZnVuY19xX2JoaWxmZHEoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZCwgUFlfTE9OR19MT05HIHEpCitFWFBPUlQobG9uZyBsb25nKSBfdGVzdGZ1bmNfcV9iaGlsZmRxKHNpZ25lZCBjaGFyIGIsIHNob3J0IGgsIGludCBpLCBsb25nIGwsIGZsb2F0IGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkLCBsb25nIGxvbmcgcSkKIHsKLSAgICByZXR1cm4gKFBZX0xPTkdfTE9ORykoYiArIGggKyBpICsgbCArIGYgKyBkICsgcSk7CisgICAgcmV0dXJuIChsb25nIGxvbmcpKGIgKyBoICsgaSArIGwgKyBmICsgZCArIHEpOwogfQogCi1FWFBPUlQoUFlfTE9OR19MT05HKSBfdGVzdGZ1bmNfcV9iaGlsZmQoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwgZG91YmxlIGQpCitFWFBPUlQobG9uZyBsb25nKSBfdGVzdGZ1bmNfcV9iaGlsZmQoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwgZG91YmxlIGQpCiB7Ci0gICAgcmV0dXJuIChQWV9MT05HX0xPTkcpKGIgKyBoICsgaSArIGwgKyBmICsgZCk7CisgICAgcmV0dXJuIChsb25nIGxvbmcpKGIgKyBoICsgaSArIGwgKyBmICsgZCk7CiB9CiAKIEVYUE9SVChpbnQpIF90ZXN0ZnVuY19jYWxsYmFja19pX2lmKGludCB2YWx1ZSwgaW50ICgqZnVuYykoaW50KSkKQEAgLTI1NSwxMCArMjU0LDEwIEBACiAgICAgcmV0dXJuIHN1bTsKIH0KIAotRVhQT1JUKFBZX0xPTkdfTE9ORykgX3Rlc3RmdW5jX2NhbGxiYWNrX3FfcWYoUFlfTE9OR19MT05HIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfTE9OR19MT05HICgqZnVuYykoUFlfTE9OR19MT05HKSkKK0VYUE9SVChsb25nIGxvbmcpIF90ZXN0ZnVuY19jYWxsYmFja19xX3FmKGxvbmcgbG9uZyB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyAoKmZ1bmMpKGxvbmcgbG9uZykpCiB7Ci0gICAgUFlfTE9OR19MT05HIHN1bSA9IDA7CisgICAgbG9uZyBsb25nIHN1bSA9IDA7CiAKICAgICB3aGlsZSAodmFsdWUgIT0gMCkgewogICAgICAgICBzdW0gKz0gZnVuYyh2YWx1ZSk7CkBAIC0yNjcsOCArMjY2LDYgQEAKICAgICByZXR1cm4gc3VtOwogfQogCi0jZW5kaWYKLQogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGNoYXIgKm5hbWU7CiAgICAgY2hhciAqdmFsdWU7CkBAIC0zODQsOCArMzgxLDggQEAKIHsKIH0KIAotRVhQT1JUKFBZX0xPTkdfTE9ORykgbGFzdF90Zl9hcmdfczsKLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIGxhc3RfdGZfYXJnX3U7CitFWFBPUlQobG9uZyBsb25nKSBsYXN0X3RmX2FyZ19zOworRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgbGFzdF90Zl9hcmdfdTsKIAogc3RydWN0IEJJVFMgewogICAgIGludCBBOiAxLCBCOjIsIEM6MywgRDo0LCBFOiA1LCBGOiA2LCBHOiA3LCBIOiA4LCBJOiA5OwpAQCAtNDQ4LDggKzQ0NSw4IEBACiAgICAgeyBOVUxMLCBOVUxMLCAwLCBOVUxMfSwKIH07CiAKLSNkZWZpbmUgUyBsYXN0X3RmX2FyZ19zID0gKFBZX0xPTkdfTE9ORyljCi0jZGVmaW5lIFUgbGFzdF90Zl9hcmdfdSA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpYworI2RlZmluZSBTIGxhc3RfdGZfYXJnX3MgPSAobG9uZyBsb25nKWMKKyNkZWZpbmUgVSBsYXN0X3RmX2FyZ191ID0gKHVuc2lnbmVkIGxvbmcgbG9uZyljCiAKIEVYUE9SVChzaWduZWQgY2hhcikgdGZfYihzaWduZWQgY2hhciBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBjaGFyKSB0Zl9CKHVuc2lnbmVkIGNoYXIgYykgeyBVOyByZXR1cm4gYy8zOyB9CkBAIC00NTksOCArNDU2LDggQEAKIEVYUE9SVCh1bnNpZ25lZCBpbnQpIHRmX0kodW5zaWduZWQgaW50IGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcpIHRmX2wobG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBsb25nKSB0Zl9MKHVuc2lnbmVkIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQoUFlfTE9OR19MT05HKSB0Zl9xKFBZX0xPTkdfTE9ORyBjKSB7IFM7IHJldHVybiBjLzM7IH0KLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHRmX1EodW5zaWduZWQgUFlfTE9OR19MT05HIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKGxvbmcgbG9uZykgdGZfcShsb25nIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSB0Zl9RKHVuc2lnbmVkIGxvbmcgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChmbG9hdCkgdGZfZihmbG9hdCBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChkb3VibGUpIHRmX2QoZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcgZG91YmxlKSB0Zl9EKGxvbmcgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQpAQCAtNDc0LDggKzQ3MSw4IEBACiBFWFBPUlQodW5zaWduZWQgaW50KSBfX3N0ZGNhbGwgc190Zl9JKHVuc2lnbmVkIGludCBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nKSBfX3N0ZGNhbGwgc190Zl9sKGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgbG9uZykgX19zdGRjYWxsIHNfdGZfTCh1bnNpZ25lZCBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfcShQWV9MT05HX0xPTkcgYykgeyBTOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSBfX3N0ZGNhbGwgc190Zl9RKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBjKSB7IFU7IHJldHVybiBjLzM7IH0KK0VYUE9SVChsb25nIGxvbmcpIF9fc3RkY2FsbCBzX3RmX3EobG9uZyBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfUSh1bnNpZ25lZCBsb25nIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZmxvYXQpIF9fc3RkY2FsbCBzX3RmX2YoZmxvYXQgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZG91YmxlKSBfX3N0ZGNhbGwgc190Zl9kKGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nIGRvdWJsZSkgX19zdGRjYWxsIHNfdGZfRChsb25nIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KQEAgLTQ5MCw4ICs0ODcsOCBAQAogRVhQT1JUKHVuc2lnbmVkIGludCkgdGZfYkkoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgaW50IGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcpIHRmX2JsKHNpZ25lZCBjaGFyIHgsIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgbG9uZykgdGZfYkwoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KLUVYUE9SVChQWV9MT05HX0xPTkcpIHRmX2JxKHNpZ25lZCBjaGFyIHgsIFBZX0xPTkdfTE9ORyBjKSB7IFM7IHJldHVybiBjLzM7IH0KLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHRmX2JRKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBjKSB7IFU7IHJldHVybiBjLzM7IH0KK0VYUE9SVChsb25nIGxvbmcpIHRmX2JxKHNpZ25lZCBjaGFyIHgsIGxvbmcgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIHRmX2JRKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGxvbmcgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChmbG9hdCkgdGZfYmYoc2lnbmVkIGNoYXIgeCwgZmxvYXQgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZG91YmxlKSB0Zl9iZChzaWduZWQgY2hhciB4LCBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZyBkb3VibGUpIHRmX2JEKHNpZ25lZCBjaGFyIHgsIGxvbmcgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQpAQCAtNTA2LDggKzUwMyw4IEBACiBFWFBPUlQodW5zaWduZWQgaW50KSBfX3N0ZGNhbGwgc190Zl9iSShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBpbnQgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZykgX19zdGRjYWxsIHNfdGZfYmwoc2lnbmVkIGNoYXIgeCwgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBsb25nKSBfX3N0ZGNhbGwgc190Zl9iTChzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfYnEoc2lnbmVkIGNoYXIgeCwgUFlfTE9OR19MT05HIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfYlEoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgUFlfTE9OR19MT05HIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfYnEoc2lnbmVkIGNoYXIgeCwgbG9uZyBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfYlEoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgbG9uZyBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGZsb2F0KSBfX3N0ZGNhbGwgc190Zl9iZihzaWduZWQgY2hhciB4LCBmbG9hdCBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChkb3VibGUpIF9fc3RkY2FsbCBzX3RmX2JkKHNpZ25lZCBjaGFyIHgsIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nIGRvdWJsZSkgX19zdGRjYWxsIHNfdGZfYkQoc2lnbmVkIGNoYXIgeCwgbG9uZyBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMKaW5kZXggOTE0MTNkNy4uYjk1OGYzMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxsYmFja3MuYwpAQCAtNzcsNyArNzcsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBzdGF0aWMgdm9pZAotUHJpbnRFcnJvcihjaGFyICptc2csIC4uLikKK1ByaW50RXJyb3IoY29uc3QgY2hhciAqbXNnLCAuLi4pCiB7CiAgICAgY2hhciBidWZbNTEyXTsKICAgICBQeU9iamVjdCAqZiA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCmluZGV4IDMwZTNhOTYuLmQzMDQ0ZjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCkBAIC0zODIsNyArMzgyLDcgQEAKICAgICAgICAgICAgd2hvc2Ugb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50CiAgICAgICAgICAgIG1hY2hpbmUgbW9kZS4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uOiBwcml2aWxlZGdlZCBpbnN0cnVjdGlvbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbjogcHJpdmlsZWdlZCBpbnN0cnVjdGlvbiIpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFX0VYQ0VQVElPTjoKQEAgLTQ3NCw3ICs0NzQsNiBAQAogICAgICAgICAgICAgc2VsZi0+dGFnLCBzZWxmLT52YWx1ZS5sKTsKICAgICAgICAgYnJlYWs7CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIGNhc2UgJ3EnOgogICAgIGNhc2UgJ1EnOgogICAgICAgICBzcHJpbnRmKGJ1ZmZlciwKQEAgLTQ4NSw3ICs0ODQsNiBAQAogI2VuZGlmCiAgICAgICAgICAgICBzZWxmLT50YWcsIHNlbGYtPnZhbHVlLnEpOwogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgJ2QnOgogICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIjxjcGFyYW0gJyVjJyAoJWYpPiIsCiAgICAgICAgICAgICBzZWxmLT50YWcsIHNlbGYtPnZhbHVlLmQpOwpAQCAtNTkzLDkgKzU5MSw3IEBACiAgICAgc2hvcnQgaDsKICAgICBpbnQgaTsKICAgICBsb25nIGw7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgcTsKLSNlbmRpZgorICAgIGxvbmcgbG9uZyBxOwogICAgIGxvbmcgZG91YmxlIEQ7CiAgICAgZG91YmxlIGQ7CiAgICAgZmxvYXQgZjsKQEAgLTkzMCw3ICs5MjYsNyBAQAogICogUmFpc2UgYSBuZXcgZXhjZXB0aW9uICdleGNfY2xhc3MnLCBhZGRpbmcgYWRkaXRpb25hbCB0ZXh0IHRvIHRoZSBvcmlnaW5hbAogICogZXhjZXB0aW9uIHN0cmluZy4KICAqLwotdm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjaGFyICpmbXQsIC4uLikKK3ZvaWQgX2N0eXBlc19leHRlbmRfZXJyb3IoUHlPYmplY3QgKmV4Y19jbGFzcywgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YXJnczsKICAgICBQeU9iamVjdCAqdHAsICp2LCAqdGIsICpzLCAqY2xzX3N0ciwgKm1zZ19zdHI7CkBAIC0xMjAzLDcgKzExOTksNyBAQAogCiAjaWZkZWYgTVNfV0lOMzIKIAotc3RhdGljIGNoYXIgZm9ybWF0X2Vycm9yX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZvcm1hdF9lcnJvcl9kb2NbXSA9CiAiRm9ybWF0RXJyb3IoW2ludGVnZXJdKSAtPiBzdHJpbmdcblwKIFxuXAogQ29udmVydCBhIHdpbjMyIGVycm9yIGNvZGUgaW50byBhIHN0cmluZy4gSWYgdGhlIGVycm9yIGNvZGUgaXMgbm90XG5cCkBAIC0xMjI3LDcgKzEyMjMsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBjaGFyIGxvYWRfbGlicmFyeV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBsb2FkX2xpYnJhcnlfZG9jW10gPQogIkxvYWRMaWJyYXJ5KG5hbWUpIC0+IGhhbmRsZVxuXAogXG5cCiBMb2FkIGFuIGV4ZWN1dGFibGUgKHVzdWFsbHkgYSBETEwpLCBhbmQgcmV0dXJuIGEgaGFuZGxlIHRvIGl0LlxuXApAQCAtMTI1Niw3ICsxMjUyLDcgQEAKICNlbmRpZgogfQogCi1zdGF0aWMgY2hhciBmcmVlX2xpYnJhcnlfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJlZV9saWJyYXJ5X2RvY1tdID0KICJGcmVlTGlicmFyeShoYW5kbGUpIC0+IHZvaWRcblwKIFxuXAogRnJlZSB0aGUgaGFuZGxlIG9mIGFuIGV4ZWN1dGFibGUgcHJldmlvdXNseSBsb2FkZWQgYnkgTG9hZExpYnJhcnkuXG4iOwpAQCAtMTI3MSw3ICsxMjY3LDcgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotc3RhdGljIGNoYXIgY29weV9jb21fcG9pbnRlcl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBjb3B5X2NvbV9wb2ludGVyX2RvY1tdID0KICJDb3B5Q29tUG9pbnRlcihzcmMsIGRzdCkgLT4gSFJFU1VMVCB2YWx1ZVxuIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzMDksNyArMTMwNSw3IEBACiAgICAgUHlPYmplY3QgKm5hbWUsICpuYW1lMjsKICAgICBjaGFyICpuYW1lX3N0cjsKICAgICB2b2lkICogaGFuZGxlOwotI2lmZGVmIFJUTERfTE9DQUwKKyNpZiBIQVZFX0RFQ0xfUlRMRF9MT0NBTAogICAgIGludCBtb2RlID0gUlRMRF9OT1cgfCBSVExEX0xPQ0FMOwogI2Vsc2UKICAgICAvKiBjeWd3aW4gZG9lc24ndCBkZWZpbmUgUlRMRF9MT0NBTCAqLwpAQCAtMTQ0MSw3ICsxNDM3LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogZnVuY3Rpb25zCiAgKi8KLXN0YXRpYyBjaGFyIHNpemVvZl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBzaXplb2ZfZG9jW10gPQogInNpemVvZihDIHR5cGUpIC0+IGludGVnZXJcbiIKICJzaXplb2YoQyBpbnN0YW5jZSkgLT4gaW50ZWdlclxuIgogIlJldHVybiB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhIEMgaW5zdGFuY2UiOwpAQCAtMTQ2Miw3ICsxNDU4LDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIGNoYXIgYWxpZ25tZW50X2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGFsaWdubWVudF9kb2NbXSA9CiAiYWxpZ25tZW50KEMgdHlwZSkgLT4gaW50ZWdlclxuIgogImFsaWdubWVudChDIGluc3RhbmNlKSAtPiBpbnRlZ2VyXG4iCiAiUmV0dXJuIHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIG9mIGEgQyBpbnN0YW5jZSI7CkBAIC0xNDg1LDcgKzE0ODEsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgY2hhciBieXJlZl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBieXJlZl9kb2NbXSA9CiAiYnlyZWYoQyBpbnN0YW5jZVssIG9mZnNldD0wXSkgLT4gYnlyZWYtb2JqZWN0XG4iCiAiUmV0dXJuIGEgcG9pbnRlciBsb29rYWxpa2UgdG8gYSBDIGluc3RhbmNlLCBvbmx5IHVzYWJsZVxuIgogImFzIGZ1bmN0aW9uIGFyZ3VtZW50IjsKQEAgLTE1MjksNyArMTUyNSw3IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXBhcmc7CiB9CiAKLXN0YXRpYyBjaGFyIGFkZHJlc3NvZl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBhZGRyZXNzb2ZfZG9jW10gPQogImFkZHJlc3NvZihDIGluc3RhbmNlKSAtPiBpbnRlZ2VyXG4iCiAiUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBDIGluc3RhbmNlIGludGVybmFsIGJ1ZmZlciI7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwppbmRleCBkNjY2YmU1Li5hNDM1ODVmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCkBAIC0zNzksMTQgKzM3OSwxMiBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogLyogU2FtZSwgYnV0IGhhbmRsaW5nIG5hdGl2ZSBsb25nIGxvbmcuICovCiAKIHN0YXRpYyBpbnQKLWdldF9sb25nbG9uZyhQeU9iamVjdCAqdiwgUFlfTE9OR19MT05HICpwKQorZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBsb25nIGxvbmcgKnApCiB7Ci0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHg7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sodikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZXhwZWN0ZWQgaW5zdGVhZCBvZiBmbG9hdCIpOwpAQCAtNDAyLDIzICs0MDAsMjEgQEAKIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBuYXRpdmUgdW5zaWduZWQgbG9uZyBsb25nLiAqLwogCiBzdGF0aWMgaW50Ci1nZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKnApCitnZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBsb25nIGxvbmcgKnApCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sodikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZXhwZWN0ZWQgaW5zdGVhZCBvZiBmbG9hdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayh2KTsKLSAgICBpZiAoeCA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKHggPT0gKHVuc2lnbmVkIGxvbmcgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgKnAgPSB4OwogICAgIHJldHVybiAwOwogfQogCi0jZW5kaWYKLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBJbnRlZ2VyIGZpZWxkcywgd2l0aCBiaXRmaWVsZCBzdXBwb3J0CiAgKi8KQEAgLTcxNSwxNCArNzExLDYgQEAKIH0KICNlbmRpZgogCi0jaWZkZWYgSEFWRV9DOTlfQk9PTAotI2RlZmluZSBCT09MX1RZUEUgX0Jvb2wKLSNlbHNlCi0jZGVmaW5lIEJPT0xfVFlQRSBjaGFyCi0jdW5kZWYgU0laRU9GX19CT09MCi0jZGVmaW5lIFNJWkVPRl9fQk9PTCAxCi0jZW5kaWYKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJvb2xfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7CkBAIC03MzAsMTAgKzcxOCwxMCBAQAogICAgIGNhc2UgLTE6CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGNhc2UgMDoKLSAgICAgICAgKihCT09MX1RZUEUgKilwdHIgPSAwOworICAgICAgICAqKF9Cb29sICopcHRyID0gMDsKICAgICAgICAgX1JFVCh2YWx1ZSk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgKihCT09MX1RZUEUgKilwdHIgPSAxOworICAgICAgICAqKF9Cb29sICopcHRyID0gMTsKICAgICAgICAgX1JFVCh2YWx1ZSk7CiAgICAgfQogfQpAQCAtNzQxLDcgKzcyOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYm9vbF9nZXQodm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykqKEJPT0xfVFlQRSAqKXB0cik7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykqKF9Cb29sICopcHRyKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg4OCwxNiArODc2LDE1IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHZhbCk7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogc3RhdGljIFB5T2JqZWN0ICoKIHFfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbDsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgdmFsOworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfbG9uZ2xvbmcodmFsdWUsICZ2YWwpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWVtY3B5KCZ4LCBwdHIsIHNpemVvZih4KSk7Ci0gICAgeCA9IFNFVChQWV9MT05HX0xPTkcsIHgsIHZhbCwgc2l6ZSk7CisgICAgeCA9IFNFVChsb25nIGxvbmcsIHgsIHZhbCwgc2l6ZSk7CiAgICAgbWVtY3B5KHB0ciwgJngsIHNpemVvZih4KSk7CiAgICAgX1JFVCh2YWx1ZSk7CiB9CkBAIC05MDUsMTMgKzg5MiwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHFfc2V0X3N3KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbDsKLSAgICBQWV9MT05HX0xPTkcgZmllbGQ7CisgICAgbG9uZyBsb25nIHZhbDsKKyAgICBsb25nIGxvbmcgZmllbGQ7CiAgICAgaWYgKGdldF9sb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJmZpZWxkLCBwdHIsIHNpemVvZihmaWVsZCkpOwogICAgIGZpZWxkID0gU1dBUF84KGZpZWxkKTsKLSAgICBmaWVsZCA9IFNFVChQWV9MT05HX0xPTkcsIGZpZWxkLCB2YWwsIHNpemUpOworICAgIGZpZWxkID0gU0VUKGxvbmcgbG9uZywgZmllbGQsIHZhbCwgc2l6ZSk7CiAgICAgZmllbGQgPSBTV0FQXzgoZmllbGQpOwogICAgIG1lbWNweShwdHIsICZmaWVsZCwgc2l6ZW9mKGZpZWxkKSk7CiAgICAgX1JFVCh2YWx1ZSk7CkBAIC05MjAsNyArOTA3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBxX2dldCh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsOworICAgIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHZhbCk7CkBAIC05MjksNyArOTE2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBxX2dldF9zdyh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsOworICAgIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIHZhbCA9IFNXQVBfOCh2YWwpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwpAQCAtOTM5LDEyICs5MjYsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBRX3NldCh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBpZiAoZ2V0X3Vsb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJngsIHB0ciwgc2l6ZW9mKHgpKTsKLSAgICB4ID0gU0VUKFBZX0xPTkdfTE9ORywgeCwgdmFsLCBzaXplKTsKKyAgICB4ID0gU0VUKGxvbmcgbG9uZywgeCwgdmFsLCBzaXplKTsKICAgICBtZW1jcHkocHRyLCAmeCwgc2l6ZW9mKHgpKTsKICAgICBfUkVUKHZhbHVlKTsKIH0KQEAgLTk1MiwxMyArOTM5LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogUV9zZXRfc3codm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmaWVsZDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmaWVsZDsKICAgICBpZiAoZ2V0X3Vsb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJmZpZWxkLCBwdHIsIHNpemVvZihmaWVsZCkpOwogICAgIGZpZWxkID0gU1dBUF84KGZpZWxkKTsKLSAgICBmaWVsZCA9IFNFVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGZpZWxkLCB2YWwsIHNpemUpOworICAgIGZpZWxkID0gU0VUKHVuc2lnbmVkIGxvbmcgbG9uZywgZmllbGQsIHZhbCwgc2l6ZSk7CiAgICAgZmllbGQgPSBTV0FQXzgoZmllbGQpOwogICAgIG1lbWNweShwdHIsICZmaWVsZCwgc2l6ZW9mKGZpZWxkKSk7CiAgICAgX1JFVCh2YWx1ZSk7CkBAIC05NjcsNyArOTU0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBRX2dldCh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsKTsKQEAgLTk3NiwxMyArOTYzLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogUV9nZXRfc3codm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwogICAgIG1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTsKICAgICB2YWwgPSBTV0FQXzgodmFsKTsKICAgICBHRVRfQklURklFTEQodmFsLCBzaXplKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHZhbCk7CiB9Ci0jZW5kaWYKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBub24taW50ZWdlciBhY2Nlc3NvciBtZXRob2RzLCBub3Qgc3VwcG9ydGluZyBiaXQgZmllbGRzCkBAIC0xNDkwLDEwICsxNDc2LDggQEAKICNpZiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HCiAgICAgdiA9ICh2b2lkICopUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayh2YWx1ZSk7CiAjZWxzZQotI2lmbmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2Yodm9pZCopID4gc2l6ZW9mKGxvbmcpLCBidXQgbm8gbG9uZyBsb25nIgotI2VsaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKLSMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKFBZX0xPTkdfTE9ORykgPCBzaXplb2Yodm9pZCopIgorI2lmIFNJWkVPRl9MT05HX0xPTkcgPCBTSVpFT0ZfVk9JRF9QCisjICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZihsb25nIGxvbmcpIDwgc2l6ZW9mKHZvaWQqKSIKICNlbmRpZgogICAgIHYgPSAodm9pZCAqKVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKHZhbHVlKTsKICNlbmRpZgpAQCAtMTUzOCwxNCArMTUyMiwxMiBAQAogI2Vsc2UKICMgZXJyb3IKICNlbmRpZgotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjaWYgU0laRU9GX0xPTkdfTE9ORyA9PSA4CiAgICAgeyAncScsIHFfc2V0LCBxX2dldCwgJmZmaV90eXBlX3NpbnQ2NCwgcV9zZXRfc3csIHFfZ2V0X3N3fSwKICAgICB7ICdRJywgUV9zZXQsIFFfZ2V0LCAmZmZpX3R5cGVfdWludDY0LCBRX3NldF9zdywgUV9nZXRfc3d9LAogI2Vsc2UKICMgZXJyb3IKICNlbmRpZgotI2VuZGlmCiAgICAgeyAnUCcsIFBfc2V0LCBQX2dldCwgJmZmaV90eXBlX3BvaW50ZXJ9LAogICAgIHsgJ3onLCB6X3NldCwgel9nZXQsICZmZmlfdHlwZV9wb2ludGVyfSwKICNpZmRlZiBDVFlQRVNfVU5JQ09ERQpAQCAtMTYzNSwxMCArMTYxNyw4IEBACiAjZW5kaWYKICovCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IFBZX0xPTkdfTE9ORyB4OyB9IHNfbG9uZ19sb25nOwotI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YoUFlfTE9OR19MT05HKSkKLSNlbmRpZgordHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGxvbmcgbG9uZyB4OyB9IHNfbG9uZ19sb25nOworI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YobG9uZyBsb25nKSkKIAogLyogZnJvbSBmZmkuaDoKIHR5cGVkZWYgc3RydWN0IF9mZmlfdHlwZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oIGIvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oCmluZGV4IGYyZGY1YzAuLjVkM2I5NjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jdHlwZXMuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmgKQEAgLTMxLDkgKzMxLDcgQEAKICAgICAgICAgICAgICAgICBsb25nIGw7CiAgICAgICAgICAgICAgICAgZmxvYXQgZjsKICAgICAgICAgICAgICAgICBkb3VibGUgZDsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIFBZX0xPTkdfTE9ORyBsbDsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsbDsKICAgICAgICAgICAgICAgICBsb25nIGRvdWJsZSBEOwogfTsKIApAQCAtMzAzLDkgKzMwMSw3IEBACiAgICAgICAgIHNob3J0IGg7CiAgICAgICAgIGludCBpOwogICAgICAgICBsb25nIGw7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgUFlfTE9OR19MT05HIHE7Ci0jZW5kaWYKKyAgICAgICAgbG9uZyBsb25nIHE7CiAgICAgICAgIGxvbmcgZG91YmxlIEQ7CiAgICAgICAgIGRvdWJsZSBkOwogICAgICAgICBmbG9hdCBmOwpAQCAtMzI3LDcgKzMyMyw3IEBACiBQeUNEYXRhX3NldChQeU9iamVjdCAqZHN0LCBQeU9iamVjdCAqdHlwZSwgU0VURlVOQyBzZXRmdW5jLCBQeU9iamVjdCAqdmFsdWUsCiAgICAgICAgICAgUHlfc3NpemVfdCBpbmRleCwgUHlfc3NpemVfdCBzaXplLCBjaGFyICpwdHIpOwogCi1leHRlcm4gdm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjaGFyICpmbXQsIC4uLik7CitleHRlcm4gdm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiAKIHN0cnVjdCBiYXNlc3BlYyB7CiAgICAgQ0RhdGFPYmplY3QgKmJhc2U7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYwppbmRleCA2ZTQ3NGI3Li41NWMyZDc2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKQEAgLTUyNSw3ICs1MjUsNyBAQAogI2RlZmluZSBNTUFQX0NMRUFSUyAxCiAjZW5kaWYgIC8qIE1NQVBfQ0xFQVJTICovCiAjaWZuZGVmIEhBVkVfTVJFTUFQCi0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICNkZWZpbmUgSEFWRV9NUkVNQVAgMQogI2Vsc2UgICAvKiBsaW51eCAqLwogI2RlZmluZSBIQVZFX01SRU1BUCAwCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9kZWJ1Zy5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZGVidWcuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThmMWY5Zi4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9kZWJ1Zy5jCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGRlYnVnLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYgUmVkIEhhdCwgSW5jLgotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaW5jbHVkZSA8ZmZpLmg+Ci0jaW5jbHVkZSA8ZmZpX2NvbW1vbi5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLS8qIEdlbmVyYWwgZGVidWdnaW5nIHJvdXRpbmVzICovCi0KLXZvaWQgZmZpX3N0b3BfaGVyZSh2b2lkKQotewotICAvKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCi0gICAgIFBsYWNlIGEgYnJlYWtwb2ludCBvbiBmZmlfc3RvcF9oZXJlIHRvIGJlIG5vdGlmaWVkIG9mIAotICAgICBzaWduaWZpY2FudCBldmVudHMuICovCi19Ci0KLS8qIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHZpYSB0aGUgRkZJX0FTU0VSVCgpIG1hY3JvICovCi0KLXZvaWQgZmZpX2Fzc2VydChjaGFyICpleHByLCBjaGFyICpmaWxlLCBpbnQgbGluZSkKLXsKLSAgZnByaW50ZihzdGRlcnIsICJBU1NFUlRJT04gRkFJTFVSRTogJXMgYXQgJXM6JWRcbiIsIGV4cHIsIGZpbGUsIGxpbmUpOwotICBmZmlfc3RvcF9oZXJlKCk7Ci0gIGFib3J0KCk7Ci19Ci0KLS8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gYW4gZmZpX3R5cGUgc3RydWN0dXJlICovCi0KLXZvaWQgZmZpX3R5cGVfdGVzdChmZmlfdHlwZSAqYSwgY2hhciAqZmlsZSwgaW50IGxpbmUpCi17Ci0gIEZGSV9BU1NFUlRfQVQoYSAhPSBOVUxMLCBmaWxlLCBsaW5lKTsKLQotICAvKkAtdXNlZGVmQCovCi0gIEZGSV9BU1NFUlRfQVQoYS0+dHlwZSA8PSBGRklfVFlQRV9MQVNULCBmaWxlLCBsaW5lKTsKLSAgRkZJX0FTU0VSVF9BVChhLT50eXBlID09IEZGSV9UWVBFX1ZPSUQgfHwgYS0+c2l6ZSA+IDAsIGZpbGUsIGxpbmUpOwotICBGRklfQVNTRVJUX0FUKGEtPnR5cGUgPT0gRkZJX1RZUEVfVk9JRCB8fCBhLT5hbGlnbm1lbnQgPiAwLCBmaWxlLCBsaW5lKTsKLSAgRkZJX0FTU0VSVF9BVChhLT50eXBlICE9IEZGSV9UWVBFX1NUUlVDVCB8fCBhLT5lbGVtZW50cyAhPSBOVUxMLCBmaWxlLCBsaW5lKTsKLSAgLypAPXVzZWRlZkAqLwotfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE5M2FhYS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuYworKysgL2Rldi9udWxsCkBAIC0xLDMxMCArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTggIFJlZCBIYXQsIEluYy4KLSAgIAotICAgQVJNIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaW5jbHVkZSA8ZmZpLmg+Ci0jaW5jbHVkZSA8ZmZpX2NvbW1vbi5oPgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpZmRlZiBfV0lOMzJfV0NFCi0jcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MTQyKSAgICAvKiBiZW5pZ24gcmVkZWZpbml0aW9uIG9mIHR5cGUgKi8KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotLyogZmZpX3ByZXBfYXJncyBpcyBjYWxsZWQgYnkgdGhlIGFzc2VtYmx5IHJvdXRpbmUgb25jZSBzdGFjayBzcGFjZQotICAgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMgKi8KLQotLypALWV4cG9ydGhlYWRlckAqLwotdm9pZCBmZmlfcHJlcF9hcmdzKGNoYXIgKnN0YWNrLCBleHRlbmRlZF9jaWYgKmVjaWYpCi0vKkA9ZXhwb3J0aGVhZGVyQCovCi17Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpOwotICByZWdpc3RlciB2b2lkICoqcF9hcmd2OwotICByZWdpc3RlciBjaGFyICphcmdwOwotICByZWdpc3RlciBmZmlfdHlwZSAqKnBfYXJnOwotCi0gIGFyZ3AgPSBzdGFjazsKLQotICBpZiAoIGVjaWYtPmNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUICkgewotICAgICoodm9pZCAqKikgYXJncCA9IGVjaWYtPnJ2YWx1ZTsKLSAgICBhcmdwICs9IDQ7Ci0gIH0KLQotICBwX2FyZ3YgPSBlY2lmLT5hdmFsdWU7Ci0KLSAgZm9yIChpID0gZWNpZi0+Y2lmLT5uYXJncywgcF9hcmcgPSBlY2lmLT5jaWYtPmFyZ190eXBlczsKLSAgICAgICAoaSAhPSAwKTsKLSAgICAgICBpLS0sIHBfYXJnKyspCi0gICAgewotICAgICAgc2l6ZV90IHo7Ci0gICAgICBzaXplX3QgYXJnYWxpZ24gPSAoKnBfYXJnKS0+YWxpZ25tZW50OwotCi0jaWZkZWYgX1dJTjMyX1dDRQotICAgICAgaWYgKGFyZ2FsaWduID4gNCkKLSAgICAgICAgYXJnYWxpZ24gPSA0OwotI2VuZGlmCi0gICAgICAvKiBBbGlnbiBpZiBuZWNlc3NhcnkgKi8KLSAgICAgIGlmICgoYXJnYWxpZ24gLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgewotCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBhcmdhbGlnbik7Ci0gICAgICB9Ci0KLQkgIHogPSAoKnBfYXJnKS0+c2l6ZTsKLQkgIGlmICh6IDwgc2l6ZW9mKGludCkpCi0JICAgIHsKLQkgICAgICB6ID0gc2l6ZW9mKGludCk7Ci0JICAgICAgc3dpdGNoICgoKnBfYXJnKS0+dHlwZSkKLQkJewotCQljYXNlIEZGSV9UWVBFX1NJTlQ4OgotCQkgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UOCAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfVUlOVDg6Ci0JCSAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UOCAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfU0lOVDE2OgotCQkgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UMTYgKikoKiBwX2FyZ3YpOwotCQkgIGJyZWFrOwotCQkgIAotCQljYXNlIEZGSV9UWVBFX1VJTlQxNjoKLQkJICAqKHVuc2lnbmVkIGludCAqKSBhcmdwID0gKHVuc2lnbmVkIGludCkqKFVJTlQxNiAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgotICAgICAgICAgICAgICAgICAgLyogKnBfYXJndiBtYXkgbm90IGJlIGFsaWduZWQgZm9yIGEgVUlOVDMyICovCi0gICAgICAgICAgICAgICAgICBtZW1jcHkoYXJncCwgKnBfYXJndiwgeik7Ci0JCSAgYnJlYWs7Ci0KLQkJZGVmYXVsdDoKLQkJICBGRklfQVNTRVJUKDApOwotCQl9Ci0JICAgIH0KLQkgIGVsc2UgaWYgKHogPT0gc2l6ZW9mKGludCkpCi0JICAgIHsKLQkgICAgICAqKHVuc2lnbmVkIGludCAqKSBhcmdwID0gKHVuc2lnbmVkIGludCkqKFVJTlQzMiAqKSgqIHBfYXJndik7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIG1lbWNweShhcmdwLCAqcF9hcmd2LCB6KTsKLQkgICAgfQotCSAgcF9hcmd2Kys7Ci0JICBhcmdwICs9IHo7Ci0gICAgfQotICAKLSAgcmV0dXJuOwotfQotCi0vKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGZmaV9jaWYgKmNpZikKLXsKLSAgLyogU2V0IHRoZSByZXR1cm4gdHlwZSBmbGFnICovCi0gIHN3aXRjaCAoY2lmLT5ydHlwZS0+dHlwZSkKLSAgICB7Ci0gICAgY2FzZSBGRklfVFlQRV9WT0lEOgotICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotICAgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6Ci0gICAgY2FzZSBGRklfVFlQRV9ET1VCTEU6Ci0gICAgY2FzZSBGRklfVFlQRV9TSU5UNjQ6Ci0gICAgICBjaWYtPmZsYWdzID0gKHVuc2lnbmVkKSBjaWYtPnJ0eXBlLT50eXBlOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEZGSV9UWVBFX1VJTlQ2NDoKLSAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9TSU5UNjQ7Ci0gICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICBjaWYtPmZsYWdzID0gRkZJX1RZUEVfSU5UOwotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gIHJldHVybiBGRklfT0s7Ci19Ci0KLS8qQC1kZWNsdW5kZWZAKi8KLS8qQC1leHBvcnRoZWFkZXJAKi8KLWV4dGVybiB2b2lkIGZmaV9jYWxsX1NZU1Yodm9pZCAoKikoY2hhciAqLCBleHRlbmRlZF9jaWYgKiksIAotCQkJICAvKkBvdXRAKi8gZXh0ZW5kZWRfY2lmICosIAotCQkJICB1bnNpZ25lZCwgdW5zaWduZWQsIAotCQkJICAvKkBvdXRAKi8gdW5zaWduZWQgKiwgCi0JCQkgIHZvaWQgKCpmbikoKSk7Ci0vKkA9ZGVjbHVuZGVmQCovCi0vKkA9ZXhwb3J0aGVhZGVyQCovCi0KLS8qIFJldHVybiB0eXBlIGNoYW5nZWQgZnJvbSB2b2lkIGZvciBjdHlwZXMgKi8KLWludCBmZmlfY2FsbCgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkgICAgICB2b2lkICgqZm4pKCksIAotCSAgICAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCSAgICAgIC8qQGRlcGVuZGVudEAqLyB2b2lkICoqYXZhbHVlKQotewotICBleHRlbmRlZF9jaWYgZWNpZjsKLQotICBlY2lmLmNpZiA9IGNpZjsKLSAgZWNpZi5hdmFsdWUgPSBhdmFsdWU7Ci0gIAotICAvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RydWN0IGFuZCB3ZSBkb24ndCBoYXZlIGEgcmV0dXJuCSovCi0gIC8qIHZhbHVlIGFkZHJlc3MgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugb25lCQkgICAgICAgICovCi0KLSAgaWYgKChydmFsdWUgPT0gTlVMTCkgJiYgCi0gICAgICAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpKQotICAgIHsKLSAgICAgIC8qQC1zeXN1bnJlY29nQCovCi0gICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKLSAgICAgIC8qQD1zeXN1bnJlY29nQCovCi0gICAgfQotICBlbHNlCi0gICAgZWNpZi5ydmFsdWUgPSBydmFsdWU7Ci0gICAgCi0gIAotICBzd2l0Y2ggKGNpZi0+YWJpKSAKLSAgICB7Ci0gICAgY2FzZSBGRklfU1lTVjoKLSAgICAgIC8qQC11c2VkZWZAKi8KLSAgICAgIGZmaV9jYWxsX1NZU1YoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsIAotCQkgICAgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUsIGZuKTsKLSAgICAgIC8qQD11c2VkZWZAKi8KLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBGRklfQVNTRVJUKDApOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAvKiBJIHRoaW5rIGNhbGN1bGF0aW5nIHRoZSByZWFsIHN0YWNrIHBvaW50ZXIgZGVsdGEgaXMgbm90IHVzZWZ1bAotICAgICBiZWNhdXNlIHN0ZGNhbGwgaXMgbm90IHN1cHBvcnRlZCAqLwotICByZXR1cm4gMDsKLX0KLQotLyoqIHByaXZhdGUgbWVtYmVycyAqKi8KLQotc3RhdGljIHZvaWQgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWIChjaGFyICpzdGFjaywgdm9pZCAqKnJldCwKLQkJCQkJIHZvaWQqKiBhcmdzLCBmZmlfY2lmKiBjaWYpOwotCi0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBmZmlfY2xvc3VyZV9TWVNWIGluIHN5c3YuYXNtICovCi0KLXVuc2lnbmVkIGludAotZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoZmZpX2Nsb3N1cmUgKmNsb3N1cmUsIGNoYXIgKmluX2FyZ3MsIHZvaWQgKnJ2YWx1ZSkKLXsKLSAgZmZpX2NpZiAqY2lmID0gY2xvc3VyZS0+Y2lmOwotICB2b2lkICoqb3V0X2FyZ3M7Ci0KLSAgb3V0X2FyZ3MgPSAodm9pZCAqKikgYWxsb2NhKGNpZi0+bmFyZ3MgKiBzaXplb2YgKHZvaWQgKikpOyAgCi0KLSAgLyogdGhpcyBjYWxsIHdpbGwgaW5pdGlhbGl6ZSBvdXRfYXJncywgc3VjaCB0aGF0IGVhY2gKLSAgICogZWxlbWVudCBpbiB0aGF0IGFycmF5IHBvaW50cyB0byB0aGUgY29ycmVzcG9uZGluZyAKLSAgICogdmFsdWUgb24gdGhlIHN0YWNrOyBhbmQgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMKLSAgICogYSBzdHJ1Y3R1cmUsIGl0IHdpbGwgcmUtc2V0IHJ2YWx1ZSB0byBwb2ludCB0byB0aGUKLSAgICogc3RydWN0dXJlIHJldHVybiBhZGRyZXNzLiAgKi8KLQotICBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoaW5fYXJncywgJnJ2YWx1ZSwgb3V0X2FyZ3MsIGNpZik7Ci0gIAotICAoY2xvc3VyZS0+ZnVuKShjaWYsIHJ2YWx1ZSwgb3V0X2FyZ3MsIGNsb3N1cmUtPnVzZXJfZGF0YSk7Ci0KLSAgLyogVGVsbCBmZmlfY2xvc3VyZV9TWVNWIHdoYXQgdGhlIHJldHVybnR5cGUgaXMgKi8KLSAgcmV0dXJuIGNpZi0+ZmxhZ3M7Ci19Ci0KLS8qQC1leHBvcnRoZWFkZXJAKi8KLXN0YXRpYyB2b2lkIAotZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGNoYXIgKnN0YWNrLCB2b2lkICoqcnZhbHVlLAotCQkJICAgIHZvaWQgKiphdmFsdWUsIGZmaV9jaWYgKmNpZikKLS8qQD1leHBvcnRoZWFkZXJAKi8KLXsKLSAgdW5zaWduZWQgaW50IGk7Ci0gIHZvaWQgKipwX2FyZ3Y7Ci0gIGNoYXIgKmFyZ3A7Ci0gIGZmaV90eXBlICoqcF9hcmc7Ci0KLSAgYXJncCA9IHN0YWNrOwotCi0gIGlmICggY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QgKSB7Ci0gICAgKnJ2YWx1ZSA9ICoodm9pZCAqKikgYXJncDsKLSAgICBhcmdwICs9IDQ7Ci0gIH0KLQotICBwX2FyZ3YgPSBhdmFsdWU7Ci0KLSAgZm9yIChpID0gY2lmLT5uYXJncywgcF9hcmcgPSBjaWYtPmFyZ190eXBlczsgKGkgIT0gMCk7IGktLSwgcF9hcmcrKykKLSAgICB7Ci0gICAgICBzaXplX3QgejsKLSAgICAgIHNpemVfdCBhcmdhbGlnbiA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7Ci0KLSNpZmRlZiBfV0lOMzJfV0NFCi0gICAgICBpZiAoYXJnYWxpZ24gPiA0KQotICAgICAgICBhcmdhbGlnbiA9IDQ7Ci0jZW5kaWYKLSAgICAgIC8qIEFsaWduIGlmIG5lY2Vzc2FyeSAqLwotICAgICAgaWYgKChhcmdhbGlnbiAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7Ci0JYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIGFyZ2FsaWduKTsKLSAgICAgIH0KLQotICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOwotICAgICAgaWYgKHogPCBzaXplb2YoaW50KSkKLSAgICAgICAgeiA9IHNpemVvZihpbnQpOwotCi0gICAgICAqcF9hcmd2ID0gKHZvaWQqKSBhcmdwOwotCi0gICAgICBwX2FyZ3YrKzsKLSAgICAgIGFyZ3AgKz0gejsKLSAgICB9Ci19Ci0KLS8qCi0gICAgYWRkICAgaXAsIHBjLCAjLTggICAgIDsgaXAgPSBhZGRyZXNzIG9mIHRoaXMgdHJhbXBvbGluZSA9PSBhZGRyZXNzIG9mIGZmaV9jbG9zdXJlCi0gICAgbGRyICAgcGMsIFtwYywgIy00XSAgIDsganVtcCB0byBfX2Z1bgotICAgIERDRCBfX2Z1bgotKi8KLSNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORShUUkFNUCxGVU4pIFwKLXsgXAotICAgIHVuc2lnbmVkIGludCAqX190cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikoVFJBTVApOyBcCi0gICAgX190cmFtcFswXSA9IDB4ZTI0ZmMwMDg7ICAgICAgICAgICAgLyogYWRkICAgaXAsIHBjLCAjLTggICAgKi8gXAotICAgIF9fdHJhbXBbMV0gPSAweGU1MWZmMDA0OyAgICAgICAgICAgIC8qIGxkciAgIHBjLCBbcGMsICMtNF0gICovIFwKLSAgICBfX3RyYW1wWzJdID0gKHVuc2lnbmVkIGludCkoRlVOKTsgXAotICB9Ci0KLS8qIHRoZSBjaWYgbXVzdCBhbHJlYWR5IGJlIHByZXAnZWQgKi8KLQotLyogZGVmaW5lZCBpbiBzeXN2LmFzbSAqLwotdm9pZCBmZmlfY2xvc3VyZV9TWVNWKHZvaWQpOwotCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9jbG9zdXJlIChmZmlfY2xvc3VyZSogY2xvc3VyZSwKLQkJICBmZmlfY2lmKiBjaWYsCi0JCSAgdm9pZCAoKmZ1bikoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKSwKLQkJICB2b2lkICp1c2VyX2RhdGEpCi17Ci0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9TWVNWKTsKLSAgCi0gIEZGSV9JTklUX1RSQU1QT0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwgJmZmaV9jbG9zdXJlX1NZU1YpOwotCi0gIGNsb3N1cmUtPmNpZiAgPSBjaWY7Ci0gIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKLSAgY2xvc3VyZS0+ZnVuICA9IGZ1bjsKLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSAgLyogVGhpcyBpcyBpbXBvcnRhbnQgdG8gYWxsb3cgY2FsbGluZyB0aGUgdHJhbXBvbGluZSBzYWZlbHkgKi8KLSAgRmx1c2hJbnN0cnVjdGlvbkNhY2hlKEdldEN1cnJlbnRQcm9jZXNzKCksIDAsIDApOwotI2VuZGlmCi0KLSAgcmV0dXJuIEZGSV9PSzsKLX0KLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc5NzViNi4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuaAorKysgL2Rldi9udWxsCkBAIC0xLDMxNyArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgbGliZmZpIDIuMDAtYmV0YS13aW5jZSAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLQotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgVGhlIGJhc2ljIEFQSSBpcyBkZXNjcmliZWQgaW4gdGhlIFJFQURNRSBmaWxlLgotCi0gICBUaGUgcmF3IEFQSSBpcyBkZXNpZ25lZCB0byBieXBhc3Mgc29tZSBvZiB0aGUgYXJndW1lbnQgcGFja2luZwotICAgYW5kIHVucGFja2luZyBvbiBhcmNoaXRlY3R1cmVzIGZvciB3aGljaCBpdCBjYW4gYmUgYXZvaWRlZC4KLQotICAgVGhlIGNsb3N1cmUgQVBJIGFsbG93cyBpbnRlcnByZXRlZCBmdW5jdGlvbnMgdG8gYmUgcGFja2FnZWQgdXAKLSAgIGluc2lkZSBhIEMgZnVuY3Rpb24gcG9pbnRlciwgc28gdGhhdCB0aGV5IGNhbiBiZSBjYWxsZWQgYXMgQyBmdW5jdGlvbnMsCi0gICB3aXRoIG5vIHVuZGVyc3RhbmRpbmcgb24gdGhlIGNsaWVudCBzaWRlIHRoYXQgdGhleSBhcmUgaW50ZXJwcmV0ZWQuCi0gICBJdCBjYW4gYWxzbyBiZSB1c2VkIGluIG90aGVyIGNhc2VzIGluIHdoaWNoIGl0IGlzIG5lY2Vzc2FyeSB0byBwYWNrYWdlCi0gICB1cCBhIHVzZXIgc3BlY2lmaWVkIHBhcmFtZXRlciBhbmQgYSBmdW5jdGlvbiBwb2ludGVyIGFzIGEgc2luZ2xlCi0gICBmdW5jdGlvbiBwb2ludGVyLgotCi0gICBUaGUgY2xvc3VyZSBBUEkgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBvcmRlciB0byBnZXQgaXRzIGZ1bmN0aW9uYWxpdHksCi0gICBlLmcuIGZvciB1c2UgYnkgZ2lqLiAgUm91dGluZXMgYXJlIHByb3ZpZGVkIHRvIGVtdWxhdGUgdGhlIHJhdyBBUEkKLSAgIGlmIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIGRvZXNuJ3QgYWxsb3cgZmFzdGVyIGltcGxlbWVudGF0aW9uLgotCi0gICBNb3JlIGRldGFpbHMgb24gdGhlIHJhdyBhbmQgY2xvdXJlIEFQSSBjYW4gYmUgZm91bmQgaW46Ci0KLSAgIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9qYXZhLzE5OTktcTMvbXNnMDAxMzguaHRtbAotCi0gICBhbmQKLQotICAgaHR0cDovL2djYy5nbnUub3JnL21sL2phdmEvMTk5OS1xMy9tc2cwMDE3NC5odG1sCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIExJQkZGSV9ICi0jZGVmaW5lIExJQkZGSV9ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyogU3BlY2lmeSB3aGljaCBhcmNoaXRlY3R1cmUgbGliZmZpIGlzIGNvbmZpZ3VyZWQgZm9yLiAqLwotLyojZGVmaW5lIEBUQVJHRVRAKi8KLQotLyogLS0tLSBTeXN0ZW0gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGZmaXRhcmdldC5oPgotCi0jaWZuZGVmIExJQkZGSV9BU00KLQotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotCi0vKiBMT05HX0xPTkdfTUFYIGlzIG5vdCBhbHdheXMgZGVmaW5lZCAobm90IGlmIFNUUklDVF9BTlNJLCBmb3IgZXhhbXBsZSkuCi0gICBCdXQgd2UgY2FuIGZpbmQgaXQgZWl0aGVyIHVuZGVyIHRoZSBjb3JyZWN0IEFOU0kgbmFtZSwgb3IgdW5kZXIgR05VCi0gICBDJ3MgaW50ZXJuYWwgbmFtZS4gICovCi0jaWZkZWYgTE9OR19MT05HX01BWAotIyBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggTE9OR19MT05HX01BWAotI2Vsc2UKLSMgaWZkZWYgTExPTkdfTUFYCi0jICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggTExPTkdfTUFYCi0jIGVsc2UKLSMgIGlmZGVmIF9fR05VQ19fCi0jICAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIF9fTE9OR19MT05HX01BWF9fCi0jICBlbmRpZgotIyAgaWZkZWYgX01TQ19WRVIKLSMgICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggX0k2NF9NQVgKLSMgIGVuZGlmCi0jIGVuZGlmCi0jZW5kaWYKLQotI2lmIFNDSEFSX01BWCA9PSAxMjcKLSMgZGVmaW5lIGZmaV90eXBlX3VjaGFyICAgICAgICAgICAgICAgIGZmaV90eXBlX3VpbnQ4Ci0jIGRlZmluZSBmZmlfdHlwZV9zY2hhciAgICAgICAgICAgICAgICBmZmlfdHlwZV9zaW50OAotI2Vsc2UKLSAjZXJyb3IgImNoYXIgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLSNpZiBTSFJUX01BWCA9PSAzMjc2NwotIyBkZWZpbmUgZmZpX3R5cGVfdXNob3J0ICAgICAgIGZmaV90eXBlX3VpbnQxNgotIyBkZWZpbmUgZmZpX3R5cGVfc3Nob3J0ICAgICAgIGZmaV90eXBlX3NpbnQxNgotI2VsaWYgU0hSVF9NQVggPT0gMjE0NzQ4MzY0NwotIyBkZWZpbmUgZmZpX3R5cGVfdXNob3J0ICAgICAgIGZmaV90eXBlX3VpbnQzMgotIyBkZWZpbmUgZmZpX3R5cGVfc3Nob3J0ICAgICAgIGZmaV90eXBlX3NpbnQzMgotI2Vsc2UKLSAjZXJyb3IgInNob3J0IHNpemUgbm90IHN1cHBvcnRlZCIKLSNlbmRpZgotCi0jaWYgSU5UX01BWCA9PSAzMjc2NwotIyBkZWZpbmUgZmZpX3R5cGVfdWludCAgICAgICAgIGZmaV90eXBlX3VpbnQxNgotIyBkZWZpbmUgZmZpX3R5cGVfc2ludCAgICAgICAgIGZmaV90eXBlX3NpbnQxNgotI2VsaWYgSU5UX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jIGRlZmluZSBmZmlfdHlwZV91aW50ICAgICAgICAgZmZpX3R5cGVfdWludDMyCi0jIGRlZmluZSBmZmlfdHlwZV9zaW50ICAgICAgICAgZmZpX3R5cGVfc2ludDMyCi0jZWxpZiBJTlRfTUFYID09IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSMgZGVmaW5lIGZmaV90eXBlX3VpbnQgICAgICAgICBmZmlfdHlwZV91aW50NjQKLSMgZGVmaW5lIGZmaV90eXBlX3NpbnQgICAgICAgICBmZmlfdHlwZV9zaW50NjQKLSNlbHNlCi0gI2Vycm9yICJpbnQgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLSNkZWZpbmUgZmZpX3R5cGVfdWxvbmcgICAgICAgICBmZmlfdHlwZV91aW50NjQKLSNkZWZpbmUgZmZpX3R5cGVfc2xvbmcgICAgICAgICBmZmlfdHlwZV9zaW50NjQKLSNpZiBMT05HX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jIGlmIEZGSV9MT05HX0xPTkdfTUFYICE9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSAgI2Vycm9yICJubyA2NC1iaXQgZGF0YSB0eXBlIHN1cHBvcnRlZCIKLSMgZW5kaWYKLSNlbGlmIExPTkdfTUFYICE9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSAjZXJyb3IgImxvbmcgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLS8qIFRoZSBjbG9zdXJlIGNvZGUgYXNzdW1lcyB0aGF0IHRoaXMgd29ya3Mgb24gcG9pbnRlcnMsIGkuZS4gYSBzaXplX3QJKi8KLS8qIGNhbiBob2xkIGEgcG9pbnRlci4JCQkJCQkJKi8KLQotdHlwZWRlZiBzdHJ1Y3QgX2ZmaV90eXBlCi17Ci0gIHNpemVfdCBzaXplOwotICB1bnNpZ25lZCBzaG9ydCBhbGlnbm1lbnQ7Ci0gIHVuc2lnbmVkIHNob3J0IHR5cGU7Ci0gIC8qQG51bGxAKi8gc3RydWN0IF9mZmlfdHlwZSAqKmVsZW1lbnRzOwotfSBmZmlfdHlwZTsKLQotLyogVGhlc2UgYXJlIGRlZmluZWQgaW4gdHlwZXMuYyAqLwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3ZvaWQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDg7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDg7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDE2OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQxNjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MzI7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDMyOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ2NDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50NjQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfZmxvYXQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfZG91YmxlOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2xvbmdkb3VibGU7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfcG9pbnRlcjsKLQotCi10eXBlZGVmIGVudW0gewotICBGRklfT0sgPSAwLAotICBGRklfQkFEX1RZUEVERUYsCi0gIEZGSV9CQURfQUJJIAotfSBmZmlfc3RhdHVzOwotCi10eXBlZGVmIHVuc2lnbmVkIEZGSV9UWVBFOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGZmaV9hYmkgYWJpOwotICB1bnNpZ25lZCBuYXJnczsKLSAgLypAZGVwZW5kZW50QCovIGZmaV90eXBlICoqYXJnX3R5cGVzOwotICAvKkBkZXBlbmRlbnRAKi8gZmZpX3R5cGUgKnJ0eXBlOwotICB1bnNpZ25lZCBieXRlczsKLSAgdW5zaWduZWQgZmxhZ3M7Ci0jaWZkZWYgRkZJX0VYVFJBX0NJRl9GSUVMRFMKLSAgRkZJX0VYVFJBX0NJRl9GSUVMRFM7Ci0jZW5kaWYKLX0gZmZpX2NpZjsKLQotLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgdGhlIHJhdyBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBGRklfU0laRU9GX0FSRwotIyBpZiBMT05HX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jICBkZWZpbmUgRkZJX1NJWkVPRl9BUkcgICAgICAgIDQKLSMgZWxpZiBMT05HX01BWCA9PSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci0jICBkZWZpbmUgRkZJX1NJWkVPRl9BUkcgICAgICAgIDgKLSMgZW5kaWYKLSNlbmRpZgotCi10eXBlZGVmIHVuaW9uIHsKLSAgZmZpX3NhcmcgIHNpbnQ7Ci0gIGZmaV9hcmcgICB1aW50OwotICBmbG9hdAkgICAgZmx0OwotICBjaGFyICAgICAgZGF0YVtGRklfU0laRU9GX0FSR107Ci0gIHZvaWQqICAgICBwdHI7Ci19IGZmaV9yYXc7Ci0KLXZvaWQgZmZpX3Jhd19jYWxsICgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkJICAgdm9pZCAoKmZuKSgpLCAKLQkJICAgLypAb3V0QCovIHZvaWQgKnJ2YWx1ZSwgCi0JCSAgIC8qQGRlcGVuZGVudEAqLyBmZmlfcmF3ICphdmFsdWUpOwotCi12b2lkIGZmaV9wdHJhcnJheV90b19yYXcgKGZmaV9jaWYgKmNpZiwgdm9pZCAqKmFyZ3MsIGZmaV9yYXcgKnJhdyk7Ci12b2lkIGZmaV9yYXdfdG9fcHRyYXJyYXkgKGZmaV9jaWYgKmNpZiwgZmZpX3JhdyAqcmF3LCB2b2lkICoqYXJncyk7Ci1zaXplX3QgZmZpX3Jhd19zaXplIChmZmlfY2lmICpjaWYpOwotCi0vKiBUaGlzIGlzIGFuYWxvZ291cyB0byB0aGUgcmF3IEFQSSwgZXhjZXB0IGl0IHVzZXMgSmF2YSBwYXJhbWV0ZXIJKi8KLS8qIHBhY2tpbmcsIGV2ZW4gb24gNjQtYml0IG1hY2hpbmVzLiAgSS5lLiBvbiA2NC1iaXQgbWFjaGluZXMJCSovCi0vKiBsb25ncyBhbmQgZG91YmxlcyBhcmUgZm9sbG93ZWQgYnkgYW4gZW1wdHkgNjQtYml0IHdvcmQuCQkqLwotCi12b2lkIGZmaV9qYXZhX3Jhd19jYWxsICgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkJICAgICAgICB2b2lkICgqZm4pKCksIAotCQkgICAgICAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCQkgICAgICAgIC8qQGRlcGVuZGVudEAqLyBmZmlfcmF3ICphdmFsdWUpOwotCi12b2lkIGZmaV9qYXZhX3B0cmFycmF5X3RvX3JhdyAoZmZpX2NpZiAqY2lmLCB2b2lkICoqYXJncywgZmZpX3JhdyAqcmF3KTsKLXZvaWQgZmZpX2phdmFfcmF3X3RvX3B0cmFycmF5IChmZmlfY2lmICpjaWYsIGZmaV9yYXcgKnJhdywgdm9pZCAqKmFyZ3MpOwotc2l6ZV90IGZmaV9qYXZhX3Jhd19zaXplIChmZmlfY2lmICpjaWYpOwotCi0vKiAtLS0tIERlZmluaXRpb25zIGZvciBjbG9zdXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWYgRkZJX0NMT1NVUkVTCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKLSAgZmZpX2NpZiAgICpjaWY7Ci0gIHZvaWQgICAgICgqZnVuKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopOwotICB2b2lkICAgICAgKnVzZXJfZGF0YTsKLX0gZmZpX2Nsb3N1cmU7Ci0KLWZmaV9zdGF0dXMKLWZmaV9wcmVwX2Nsb3N1cmUgKGZmaV9jbG9zdXJlKiwKLQkJICBmZmlfY2lmICosCi0JCSAgdm9pZCAoKmZ1bikoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKSwKLQkJICB2b2lkICp1c2VyX2RhdGEpOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGNoYXIgdHJhbXBbRkZJX1RSQU1QT0xJTkVfU0laRV07Ci0KLSAgZmZpX2NpZiAgICpjaWY7Ci0KLSNpZiAhRkZJX05BVElWRV9SQVdfQVBJCi0KLSAgLyogaWYgdGhpcyBpcyBlbmFibGVkLCB0aGVuIGEgcmF3IGNsb3N1cmUgaGFzIHRoZSBzYW1lIGxheW91dCAKLSAgICAgYXMgYSByZWd1bGFyIGNsb3N1cmUuICBXZSB1c2UgdGhpcyB0byBpbnN0YWxsIGFuIGludGVybWVkaWF0ZSAKLSAgICAgaGFuZGxlciB0byBkbyB0aGUgdHJhbnNhbHRpb24sIHZvaWQqKiAtPiBmZmlfcmF3Ki4gKi8KLQotICB2b2lkICAgICAoKnRyYW5zbGF0ZV9hcmdzKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopOwotICB2b2lkICAgICAgKnRoaXNfY2xvc3VyZTsKLQotI2VuZGlmCi0KLSAgdm9pZCAgICAgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLGZmaV9yYXcqLHZvaWQqKTsKLSAgdm9pZCAgICAgICp1c2VyX2RhdGE7Ci0KLX0gZmZpX3Jhd19jbG9zdXJlOwotCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9yYXdfY2xvc3VyZSAoZmZpX3Jhd19jbG9zdXJlKiwKLQkJICAgICAgZmZpX2NpZiAqY2lmLAotCQkgICAgICB2b2lkICgqZnVuKShmZmlfY2lmKix2b2lkKixmZmlfcmF3Kix2b2lkKiksCi0JCSAgICAgIHZvaWQgKnVzZXJfZGF0YSk7Ci0KLWZmaV9zdGF0dXMKLWZmaV9wcmVwX2phdmFfcmF3X2Nsb3N1cmUgKGZmaV9yYXdfY2xvc3VyZSosCi0JCSAgICAgICAgICAgZmZpX2NpZiAqY2lmLAotCQkgICAgICAgICAgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLGZmaV9yYXcqLHZvaWQqKSwKLQkJICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpOwotCi0jZW5kaWYgLyogRkZJX0NMT1NVUkVTICovCi0KLS8qIC0tLS0gUHVibGljIGludGVyZmFjZSBkZWZpbml0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLWZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmKC8qQG91dEAqLyAvKkBwYXJ0aWFsQCovIGZmaV9jaWYgKmNpZiwgCi0JCQlmZmlfYWJpIGFiaSwKLQkJCXVuc2lnbmVkIGludCBuYXJncywgCi0JCQkvKkBkZXBlbmRlbnRAKi8gLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX3R5cGUgKnJ0eXBlLCAKLQkJCS8qQGRlcGVuZGVudEAqLyBmZmlfdHlwZSAqKmF0eXBlcyk7Ci0KLS8qIFJldHVybiB0eXBlIGNoYW5nZWQgZnJvbSB2b2lkIGZvciBjdHlwZXMgKi8KLWludCBmZmlfY2FsbCgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkgICAgICB2b2lkICgqZm4pKCksIAotCSAgICAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCSAgICAgIC8qQGRlcGVuZGVudEAqLyB2b2lkICoqYXZhbHVlKTsKLQotLyogVXNlZnVsIGZvciBlbGltaW5hdGluZyBjb21waWxlciB3YXJuaW5ncyAqLwotI2RlZmluZSBGRklfRk4oZikgKCh2b2lkICgqKSgpKWYpCi0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgc2hhcmVkIHdpdGggYXNzZW1ibHkgY29kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNlbmRpZgotCi0vKiBJZiB0aGVzZSBjaGFuZ2UsIHVwZGF0ZSBzcmMvbWlwcy9mZml0YXJnZXQuaC4gKi8KLSNkZWZpbmUgRkZJX1RZUEVfVk9JRCAgICAgICAwICAgIAotI2RlZmluZSBGRklfVFlQRV9JTlQgICAgICAgIDEKLSNkZWZpbmUgRkZJX1RZUEVfRkxPQVQgICAgICAyICAgIAotI2RlZmluZSBGRklfVFlQRV9ET1VCTEUgICAgIDMKLSNpZiAwIC8qQEhBVkVfTE9OR19ET1VCTEVAKi8KLSNkZWZpbmUgRkZJX1RZUEVfTE9OR0RPVUJMRSA0Ci0jZWxzZQotI2RlZmluZSBGRklfVFlQRV9MT05HRE9VQkxFIEZGSV9UWVBFX0RPVUJMRQotI2VuZGlmCi0jZGVmaW5lIEZGSV9UWVBFX1VJTlQ4ICAgICAgNSAgIAotI2RlZmluZSBGRklfVFlQRV9TSU5UOCAgICAgIDYKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDE2ICAgICA3IAotI2RlZmluZSBGRklfVFlQRV9TSU5UMTYgICAgIDgKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDMyICAgICA5Ci0jZGVmaW5lIEZGSV9UWVBFX1NJTlQzMiAgICAgMTAKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDY0ICAgICAxMQotI2RlZmluZSBGRklfVFlQRV9TSU5UNjQgICAgIDEyCi0jZGVmaW5lIEZGSV9UWVBFX1NUUlVDVCAgICAgMTMKLSNkZWZpbmUgRkZJX1RZUEVfUE9JTlRFUiAgICAxNAotCi0vKiBUaGlzIHNob3VsZCBhbHdheXMgcmVmZXIgdG8gdGhlIGxhc3QgdHlwZSBjb2RlIChmb3Igc2FuaXR5IGNoZWNrcykgKi8KLSNkZWZpbmUgRkZJX1RZUEVfTEFTVCAgICAgICBGRklfVFlQRV9QT0lOVEVSCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmlfY29tbW9uLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmlfY29tbW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmODc5ZDEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpX2NvbW1vbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmlfY29tbW9uLmggLSBDb3B5cmlnaHQgKGMpIDE5OTYgIFJlZCBIYXQsIEluYy4KLQotICAgQ29tbW9uIGludGVybmFsIGRlZmluaXRpb25zIGFuZCBtYWNyb3MuIE9ubHkgbmVjZXNzYXJ5IGZvciBidWlsZGluZwotICAgbGliZmZpLgotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBGRklfQ09NTU9OX0gKLSNkZWZpbmUgRkZJX0NPTU1PTl9ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGZmaWNvbmZpZy5oPgotCi0vKiBEbyBub3QgbW92ZSB0aGlzLiBTb21lIHZlcnNpb25zIG9mIEFJWCBhcmUgdmVyeSBwaWNreSBhYm91dCB3aGVyZQotICAgdGhpcyBpcyBwb3NpdGlvbmVkLiAqLwotI2lmZGVmIF9fR05VQ19fCi0jIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotI2Vsc2UKLSMgaWYgSEFWRV9BTExPQ0FfSAotIyAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0jIGVsc2UKLSMgIGlmZGVmIF9BSVgKLSAjcHJhZ21hIGFsbG9jYQotIyAgZWxzZQotIyAgIGlmbmRlZiBhbGxvY2EgLyogcHJlZGVmaW5lZCBieSBIUCBjYyArT2xpYmNhbGxzICovCi1jaGFyICphbGxvY2EgKCk7Ci0jICAgZW5kaWYKLSMgIGVuZGlmCi0jIGVuZGlmCi0jZW5kaWYKLQotLyogQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgbWVtY3B5LiAqLwotI2lmIFNURENfSEVBREVSUwotIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jIGlmbmRlZiBIQVZFX01FTUNQWQotIyAgZGVmaW5lIG1lbWNweShkLCBzLCBuKSBiY29weSAoKHMpLCAoZCksIChuKSkKLSMgZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChGRklfREVCVUcpIAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jZW5kaWYKLQotI2lmZGVmIEZGSV9ERUJVRwotLypAZXhpdHNAKi8gdm9pZCBmZmlfYXNzZXJ0KC8qQHRlbXBAKi8gY2hhciAqZXhwciwgLypAdGVtcEAqLyBjaGFyICpmaWxlLCBpbnQgbGluZSk7Ci12b2lkIGZmaV9zdG9wX2hlcmUodm9pZCk7Ci12b2lkIGZmaV90eXBlX3Rlc3QoLypAdGVtcEAqLyAvKkBvdXRAKi8gZmZpX3R5cGUgKmEsIC8qQHRlbXBAKi8gY2hhciAqZmlsZSwgaW50IGxpbmUpOwotCi0jZGVmaW5lIEZGSV9BU1NFUlQoeCkgKCh4KSA/ICh2b2lkKTAgOiBmZmlfYXNzZXJ0KCN4LCBfX0ZJTEVfXyxfX0xJTkVfXykpCi0jZGVmaW5lIEZGSV9BU1NFUlRfQVQoeCwgZiwgbCkgKCh4KSA/IDAgOiBmZmlfYXNzZXJ0KCN4LCAoZiksIChsKSkpCi0jZGVmaW5lIEZGSV9BU1NFUlRfVkFMSURfVFlQRSh4KSBmZmlfdHlwZV90ZXN0ICh4LCBfX0ZJTEVfXywgX19MSU5FX18pCi0jZWxzZQotI2RlZmluZSBGRklfQVNTRVJUKHgpIAotI2RlZmluZSBGRklfQVNTRVJUX0FUKHgsIGYsIGwpCi0jZGVmaW5lIEZGSV9BU1NFUlRfVkFMSURfVFlQRSh4KQotI2VuZGlmCi0KLSNkZWZpbmUgQUxJR04odiwgYSkgICgoKCgoc2l6ZV90KSAodikpLTEpIHwgKChhKS0xKSkrMSkKLQotLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcChmZmlfY2lmICpjaWYpOwotCi0vKiBFeHRlbmRlZCBjaWYsIHVzZWQgaW4gY2FsbGJhY2sgZnJvbSBhc3NlbWJseSByb3V0aW5lICovCi10eXBlZGVmIHN0cnVjdAotewotICAvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmOwotICAvKkBkZXBlbmRlbnRAKi8gdm9pZCAqcnZhbHVlOwotICAvKkBkZXBlbmRlbnRAKi8gdm9pZCAqKmF2YWx1ZTsKLX0gZXh0ZW5kZWRfY2lmOwotCi0vKiBUZXJzZSBzaXplZCB0eXBlIGRlZmluaXRpb25zLiAgKi8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotCi10eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UOCAgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19RSV9fKSkpOwotdHlwZWRlZiBzaWduZWQgaW50ICAgU0lOVDggIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fUUlfXykpKTsKLXR5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQxNiBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0hJX18pKSk7Ci10eXBlZGVmIHNpZ25lZCBpbnQgICBTSU5UMTYgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ISV9fKSkpOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fU0lfXykpKTsKLXR5cGVkZWYgc2lnbmVkIGludCAgIFNJTlQzMiBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1NJX18pKSk7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UNjQgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ESV9fKSkpOwotdHlwZWRlZiBzaWduZWQgaW50ICAgU0lOVDY0IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fRElfXykpKTsKLQotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKLQotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDggIFVJTlQ4OwotdHlwZWRlZiBzaWduZWQgX19pbnQ4ICAgIFNJTlQ4OwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDE2IFVJTlQxNjsKLXR5cGVkZWYgc2lnbmVkIF9faW50MTYgICBTSU5UMTY7Ci10eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgVUlOVDMyOwotdHlwZWRlZiBzaWduZWQgX19pbnQzMiAgIFNJTlQzMjsKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBVSU5UNjQ7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDY0ICAgU0lOVDY0OwotCi0jZWxzZQotI2Vycm9yICJOZWVkIHR5cGVkZWZzIGhlcmUiCi0jZW5kaWYKLQotdHlwZWRlZiBmbG9hdCBGTE9BVDMyOwotCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaWNvbmZpZy5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNzk2NGMuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyogZmZpY29uZmlnLmggY3JlYXRlZCBtYW51YWxseSBmb3IgV2luZG93cyBDRSBvbiBBUk0gKi8KLS8qIGZmaWNvbmZpZy5oLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLwotCi0vKiAxMjM0ID0gTElMX0VORElBTiwgNDMyMSA9IEJJR0VORElBTiAqLwotI2RlZmluZSBCWVRFT1JERVIgMTIzNAotCi0vKiBEZWZpbmUgdG8gb25lIG9mIGBfZ2V0YjY3JywgYEdFVEI2NycsIGBnZXRiNjcnIGZvciBDcmF5LTIgYW5kIENyYXktWU1QCi0gICBzeXN0ZW1zLiBUaGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIGZvciBgYWxsb2NhLmMnIHN1cHBvcnQgb24gdGhvc2Ugc3lzdGVtcy4KLSAgICovCi0vKiAjdW5kZWYgQ1JBWV9TVEFDS1NFR19FTkQgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgdXNpbmcgYGFsbG9jYS5jJy4gKi8KLS8qICN1bmRlZiBDX0FMTE9DQSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIGZsYWdzIG5lZWRlZCBmb3IgdGhlIC5zZWN0aW9uIC5laF9mcmFtZSBkaXJlY3RpdmUuICovCi0vKiAjdW5kZWYgRUhfRlJBTUVfRkxBR1MgKi8KLQotLyogRGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgZXh0cmEgZGVidWdnaW5nLiAqLwotI2lmZGVmIERFQlVHICAvKiBEZWZpbmVkIGJ5IHRoZSBwcm9qZWN0IHNldHRpbmdzIGZvciBEZWJ1ZyBidWlsZHMgKi8KLSNkZWZpbmUgRkZJX0RFQlVHCi0jZWxzZQotI3VuZGVmIEZGSV9ERUJVRwotI2VuZGlmCi0KLS8qIERlZmluZSB0aGlzIGlzIHlvdSBkbyBub3Qgd2FudCBzdXBwb3J0IGZvciB0aGUgcmF3IEFQSS4gKi8KLS8qICN1bmRlZiBGRklfTk9fUkFXX0FQSSAqLwotCi0vKiBEZWZpbmUgdGhpcyBpcyB5b3UgZG8gbm90IHdhbnQgc3VwcG9ydCBmb3IgYWdncmVnYXRlIHR5cGVzLiAqLwotLyogI3VuZGVmIEZGSV9OT19TVFJVQ1RTICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIGBhbGxvY2EnLCBhcyBhIGZ1bmN0aW9uIG9yIG1hY3JvLiAqLwotI2RlZmluZSBIQVZFX0FMTE9DQSAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIDxhbGxvY2EuaD4gYW5kIGl0IHNob3VsZCBiZSB1c2VkIChub3Qgb24gVWx0cml4KS4KLSAgICovCi0vKiAjdW5kZWYgSEFWRV9BTExPQ0FfSCAqLwotCi0vKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLnJlZ2lzdGVyLiAqLwotLyogI3VuZGVmIEhBVkVfQVNfUkVHSVNURVJfUFNFVURPX09QICovCi0KLS8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBhbmQgbGlua2VyIHN1cHBvcnQgdW5hbGlnbmVkIFBDIHJlbGF0aXZlIHJlbG9jcy4KLSAgICovCi0vKiAjdW5kZWYgSEFWRV9BU19TUEFSQ19VQV9QQ1JFTCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSCAqLwotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxvbmcgZG91YmxlIHR5cGUgYW5kIGl0IGlzIGJpZ2dlciB0aGFuIGEgZG91YmxlICovCi0vKiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgTVNWQyBidWlsZCwgYnV0IGV2ZW4gdGhlcmUgaXQgc2hvdWxkIG5vdCBiZSBkZWZpbmVkICovCi0vKiAjdW5kZWYgSEFWRV9MT05HX0RPVUJMRSAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbWNweScgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfTUVNQ1BZIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCi0vKiBXaW5DRSBoYXMgdGhpcyBidXQgSSBkb24ndCB0aGluayB3ZSBuZWVkIHRvIHVzZSBpdCAqLwotLyogI3VuZGVmIEhBVkVfTUVNT1JZX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtbWFwJyBmdW5jdGlvbi4gKi8KLS8qICN1bmRlZiBIQVZFX01NQVAgKi8KLQotLyogRGVmaW5lIGlmIG1tYXAgd2l0aCBNQVBfQU5PTihZTU9VUykgd29ya3MuICovCi0vKiAjdW5kZWYgSEFWRV9NTUFQX0FOT04gKi8KLQotLyogRGVmaW5lIGlmIG1tYXAgb2YgL2Rldi96ZXJvIHdvcmtzLiAqLwotLyogI3VuZGVmIEhBVkVfTU1BUF9ERVZfWkVSTyAqLwotCi0vKiBEZWZpbmUgaWYgcmVhZC1vbmx5IG1tYXAgb2YgYSBwbGFpbiBmaWxlIHdvcmtzLiAqLwotLyogI3VuZGVmIEhBVkVfTU1BUF9GSUxFICovCi0KLS8qIERlZmluZSBpZiAuZWhfZnJhbWUgc2VjdGlvbnMgc2hvdWxkIGJlIHJlYWQtb25seS4gKi8KLS8qICN1bmRlZiBIQVZFX1JPX0VIX0ZSQU1FICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1RESU5UX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RETElCX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TVFJJTkdTX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tbWFuLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1lTX01NQU5fSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1lTX1NUQVRfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NZU19UWVBFU19IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfVU5JU1REX0ggKi8KLQotLyogRGVmaW5lIGlmIHRoZSBob3N0IG1hY2hpbmUgc3RvcmVzIHdvcmRzIG9mIG11bHRpLXdvcmQgaW50ZWdlcnMgaW4KLSAgIGJpZy1lbmRpYW4gb3JkZXIuICovCi0vKiAjdW5kZWYgSE9TVF9XT1JEU19CSUdfRU5ESUFOICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdXIgQyBjb21waWxlciBkb2Vzbid0IGFjY2VwdCAtYyBhbmQgLW8gdG9nZXRoZXIuICovCi0vKiAjdW5kZWYgTk9fTUlOVVNfQ19NSU5VU19PICovCi0KLS8qIE5hbWUgb2YgcGFja2FnZSAqLwotLyogI3VuZGVmIFBBQ0tBR0UgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfTkFNRSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9TVFJJTkcgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTiAqLwotCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIHR5cGUgZG91YmxlICovCi0jZGVmaW5lIFNJWkVPRl9ET1VCTEUgOAotCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIHR5cGUgbG9uZyBkb3VibGUgKi8KLSNkZWZpbmUgU0laRU9GX0xPTkdfRE9VQkxFIDgKLQotLyogSWYgdXNpbmcgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgYWxsb2NhLCBkZWZpbmUgaWYgeW91IGtub3cgdGhlCi0gICBkaXJlY3Rpb24gb2Ygc3RhY2sgZ3Jvd3RoIGZvciB5b3VyIHN5c3RlbTsgb3RoZXJ3aXNlIGl0IHdpbGwgYmUKLSAgIGF1dG9tYXRpY2FsbHkgZGVkdWNlZCBhdCBydW4tdGltZS4KLQlTVEFDS19ESVJFQ1RJT04gPiAwID0+IGdyb3dzIHRvd2FyZCBoaWdoZXIgYWRkcmVzc2VzCi0JU1RBQ0tfRElSRUNUSU9OIDwgMCA9PiBncm93cyB0b3dhcmQgbG93ZXIgYWRkcmVzc2VzCi0JU1RBQ0tfRElSRUNUSU9OID0gMCA9PiBkaXJlY3Rpb24gb2YgZ3Jvd3RoIHVua25vd24gKi8KLS8qICN1bmRlZiBTVEFDS19ESVJFQ1RJT04gKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCi0jZGVmaW5lIFNURENfSEVBREVSUyAxCi0KLS8qIERlZmluZSB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgUHVyaWZ5IGFuZCB3YW50IHRvIHN1cHByZXNzIHNwdXJpb3VzIG1lc3NhZ2VzLgotICAgKi8KLS8qICN1bmRlZiBVU0lOR19QVVJJRlkgKi8KLQotLyogVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZSAqLwotLyogI3VuZGVmIFZFUlNJT04gKi8KLQotLyogd2hldGhlciBieXRlb3JkZXIgaXMgYmlnZW5kaWFuICovCi0vKiAjdW5kZWYgV09SRFNfQklHRU5ESUFOICovCi0KLSNkZWZpbmUgYWxsb2NhIF9hbGxvY2EKLQotI2RlZmluZSBhYm9ydCgpIGV4aXQoOTk5KQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZml0YXJnZXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYyN2IyNS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZml0YXJnZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCi0gICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIEFSTS4KLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIExJQkZGSV9UQVJHRVRfSAotI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKLQotI2lmbmRlZiBMSUJGRklfQVNNCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKLXR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKLQotdHlwZWRlZiBlbnVtIGZmaV9hYmkgewotICBGRklfRklSU1RfQUJJID0gMCwKLSAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCi19IGZmaV9hYmk7Ci0jZW5kaWYKLQotLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgY2xvc3VyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2RlZmluZSBGRklfQ0xPU1VSRVMgMQotI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDEyCi0KLSNkZWZpbmUgRkZJX05BVElWRV9SQVdfQVBJIDAKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3ByZXBfY2lmLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9wcmVwX2NpZi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWRjZTJmLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3ByZXBfY2lmLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByZXBfY2lmLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTggIFJlZCBIYXQsIEluYy4KLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGZmaS5oPgotI2luY2x1ZGUgPGZmaV9jb21tb24uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotCi0vKiBSb3VuZCB1cCB0byBGRklfU0laRU9GX0FSRy4gKi8KLQotI2RlZmluZSBTVEFDS19BUkdfU0laRSh4KSBBTElHTih4LCBGRklfU0laRU9GX0FSRykKLQotLyogUGVyZm9ybSBtYWNoaW5lIGluZGVwZW5kZW50IGluaXRpYWxpemF0aW9uIG9mIGFnZ3JlZ2F0ZSB0eXBlCi0gICBzcGVjaWZpY2F0aW9ucy4gKi8KLQotc3RhdGljIGZmaV9zdGF0dXMgaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoLypAb3V0QCovIGZmaV90eXBlICphcmcpCi17Ci0gIGZmaV90eXBlICoqcHRyOyAKLQotICBGRklfQVNTRVJUKGFyZyAhPSBOVUxMKTsKLQotICAvKkAtdXNlZGVmQCovCi0KLSAgRkZJX0FTU0VSVChhcmctPmVsZW1lbnRzICE9IE5VTEwpOwotICBGRklfQVNTRVJUKGFyZy0+c2l6ZSA9PSAwKTsKLSAgRkZJX0FTU0VSVChhcmctPmFsaWdubWVudCA9PSAwKTsKLQotICBwdHIgPSAmKGFyZy0+ZWxlbWVudHNbMF0pOwotCi0gIHdoaWxlICgoKnB0cikgIT0gTlVMTCkKLSAgICB7Ci0gICAgICBpZiAoKCgqcHRyKS0+c2l6ZSA9PSAwKSAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoKCpwdHIpKSAhPSBGRklfT0spKQotCXJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0gICAgICAKLSAgICAgIC8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gdGhlIGFyZ3VtZW50IHR5cGUgKi8KLSAgICAgIEZGSV9BU1NFUlRfVkFMSURfVFlQRSgqcHRyKTsKLQotICAgICAgYXJnLT5zaXplID0gQUxJR04oYXJnLT5zaXplLCAoKnB0ciktPmFsaWdubWVudCk7Ci0gICAgICBhcmctPnNpemUgKz0gKCpwdHIpLT5zaXplOwotCi0gICAgICBhcmctPmFsaWdubWVudCA9IChhcmctPmFsaWdubWVudCA+ICgqcHRyKS0+YWxpZ25tZW50KSA/IAotCWFyZy0+YWxpZ25tZW50IDogKCpwdHIpLT5hbGlnbm1lbnQ7Ci0KLSAgICAgIHB0cisrOwotICAgIH0KLQotICAvKiBTdHJ1Y3R1cmUgc2l6ZSBpbmNsdWRlcyB0YWlsIHBhZGRpbmcuICBUaGlzIGlzIGltcG9ydGFudCBmb3IKLSAgICAgc3RydWN0dXJlcyB0aGF0IGZpdCBpbiBvbmUgcmVnaXN0ZXIgb24gQUJJcyBsaWtlIHRoZSBQb3dlclBDNjQKLSAgICAgTGludXggQUJJIHRoYXQgcmlnaHQganVzdGlmeSBzbWFsbCBzdHJ1Y3RzIGluIGEgcmVnaXN0ZXIuCi0gICAgIEl0J3MgYWxzbyBuZWVkZWQgZm9yIG5lc3RlZCBzdHJ1Y3R1cmUgbGF5b3V0LCBmb3IgZXhhbXBsZQotICAgICBzdHJ1Y3QgQSB7IGxvbmcgYTsgY2hhciBiOyB9OyBzdHJ1Y3QgQiB7IHN0cnVjdCBBIHg7IGNoYXIgeTsgfTsKLSAgICAgc2hvdWxkIGZpbmQgeSBhdCBhbiBvZmZzZXQgb2YgMipzaXplb2YobG9uZykgYW5kIHJlc3VsdCBpbiBhCi0gICAgIHRvdGFsIHNpemUgb2YgMypzaXplb2YobG9uZykuICAqLwotICBhcmctPnNpemUgPSBBTElHTiAoYXJnLT5zaXplLCBhcmctPmFsaWdubWVudCk7Ci0KLSAgaWYgKGFyZy0+c2l6ZSA9PSAwKQotICAgIHJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0gIGVsc2UKLSAgICByZXR1cm4gRkZJX09LOwotCi0gIC8qQD11c2VkZWZAKi8KLX0KLQotLyogUGVyZm9ybSBtYWNoaW5lIGluZGVwZW5kZW50IGZmaV9jaWYgcHJlcGFyYXRpb24sIHRoZW4gY2FsbAotICAgbWFjaGluZSBkZXBlbmRlbnQgcm91dGluZS4gKi8KLQotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWYoLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX2NpZiAqY2lmLCAKLQkJCWZmaV9hYmkgYWJpLCB1bnNpZ25lZCBpbnQgbmFyZ3MsIAotCQkJLypAZGVwZW5kZW50QCovIC8qQG91dEAqLyAvKkBwYXJ0aWFsQCovIGZmaV90eXBlICpydHlwZSwgCi0JCQkvKkBkZXBlbmRlbnRAKi8gZmZpX3R5cGUgKiphdHlwZXMpCi17Ci0gIHVuc2lnbmVkIGJ5dGVzID0gMDsKLSAgdW5zaWduZWQgaW50IGk7Ci0gIGZmaV90eXBlICoqcHRyOwotCi0gIEZGSV9BU1NFUlQoY2lmICE9IE5VTEwpOwotICBGRklfQVNTRVJUKChhYmkgPiBGRklfRklSU1RfQUJJKSAmJiAoYWJpIDw9IEZGSV9ERUZBVUxUX0FCSSkpOwotCi0gIGNpZi0+YWJpID0gYWJpOwotICBjaWYtPmFyZ190eXBlcyA9IGF0eXBlczsKLSAgY2lmLT5uYXJncyA9IG5hcmdzOwotICBjaWYtPnJ0eXBlID0gcnR5cGU7Ci0KLSAgY2lmLT5mbGFncyA9IDA7Ci0KLSAgLyogSW5pdGlhbGl6ZSB0aGUgcmV0dXJuIHR5cGUgaWYgbmVjZXNzYXJ5ICovCi0gIC8qQC11c2VkZWZAKi8KLSAgaWYgKChjaWYtPnJ0eXBlLT5zaXplID09IDApICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZShjaWYtPnJ0eXBlKSAhPSBGRklfT0spKQotICAgIHJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0gIC8qQD11c2VkZWZAKi8KLQotICAvKiBQZXJmb3JtIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSByZXR1cm4gdHlwZSAqLwotICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoY2lmLT5ydHlwZSk7Ci0KLSAgLyogeDg2LTY0IGFuZCBzMzkwIHN0YWNrIHNwYWNlIGFsbG9jYXRpb24gaXMgaGFuZGxlZCBpbiBwcmVwX21hY2hkZXAuICAqLwotI2lmICFkZWZpbmVkIE02OEsgJiYgIWRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBTMzkwCi0gIC8qIE1ha2Ugc3BhY2UgZm9yIHRoZSByZXR1cm4gc3RydWN0dXJlIHBvaW50ZXIgKi8KLSAgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0gICAgICAvKiBNU1ZDIHJldHVybnMgc21hbGwgc3RydWN0dXJlcyBpbiByZWdpc3RlcnMuICBCdXQgd2UgaGF2ZSBhIGRpZmZlcmVudAotICAgICAgd29ya2Fyb3VuZDogcHJldGVuZCBpbnQzMiBvciBpbnQ2NCByZXR1cm4gdHlwZSwgYW5kIGNvbnZlcnRpbmcgdG8KLSAgICAgIHN0cnVjdHVyZSBhZnRlcndhcmRzLiAqLwotI2lmZGVmIFNQQVJDCi0gICAgICAmJiAoY2lmLT5hYmkgIT0gRkZJX1Y5IHx8IGNpZi0+cnR5cGUtPnNpemUgPiAzMikKLSNlbmRpZgotICAgICAgKQotICAgIGJ5dGVzID0gU1RBQ0tfQVJHX1NJWkUoc2l6ZW9mKHZvaWQqKSk7Ci0jZW5kaWYKLQotICBmb3IgKHB0ciA9IGNpZi0+YXJnX3R5cGVzLCBpID0gY2lmLT5uYXJnczsgaSA+IDA7IGktLSwgcHRyKyspCi0gICAgewotCi0gICAgICAvKiBJbml0aWFsaXplIGFueSB1bmluaXRpYWxpemVkIGFnZ3JlZ2F0ZSB0eXBlIGRlZmluaXRpb25zICovCi0gICAgICBpZiAoKCgqcHRyKS0+c2l6ZSA9PSAwKSAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoKCpwdHIpKSAhPSBGRklfT0spKQotCXJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0KLSAgICAgIC8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gdGhlIGFyZ3VtZW50IHR5cGUsIGRvIHRoaXMgCi0JIGNoZWNrIGFmdGVyIHRoZSBpbml0aWFsaXphdGlvbi4gICovCi0gICAgICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoKnB0cik7Ci0KLSNpZiAhZGVmaW5lZCBfX3g4Nl82NF9fICYmICFkZWZpbmVkIFMzOTAKLSNpZmRlZiBTUEFSQwotICAgICAgaWYgKCgoKnB0ciktPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0JICAgJiYgKCgqcHRyKS0+c2l6ZSA+IDE2IHx8IGNpZi0+YWJpICE9IEZGSV9WOSkpCi0JICB8fCAoKCpwdHIpLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUKLQkgICAgICAmJiBjaWYtPmFiaSAhPSBGRklfVjkpKQotCWJ5dGVzICs9IHNpemVvZih2b2lkKik7Ci0gICAgICBlbHNlCi0jZW5kaWYKLQl7Ci0jaWZuZGVmIF9NU0NfVkVSCi0JCS8qIERvbid0IGtub3cgaWYgdGhpcyBpcyBhIGxpYmZmaSBidWcgb3Igbm90LiAgQXQgbGVhc3Qgb24KLQkJICAgV2luZG93cyB3aXRoIE1TVkMsIGZ1bmN0aW9uIGNhbGwgcGFyYW1ldGVycyBhcmUgKm5vdCoKLQkJICAgYWxpZ25lZCBpbiB0aGUgc2FtZSB3YXkgYXMgc3RydWN0dXJlIGZpZWxkcyBhcmUsIHRoZXkgYXJlCi0JCSAgIG9ubHkgYWxpZ25lZCBpbiBpbnRlZ2VyIGJvdW5kYXJpZXMuCi0KLQkJICAgVGhpcyBkb2Vzbid0IGRvIGFueSBoYXJtIGZvciBjZGVjbCBmdW5jdGlvbnMgYW5kIGNsb3N1cmVzLAotCQkgICBzaW5jZSB0aGUgY2FsbGVyIGNsZWFucyB1cCB0aGUgc3RhY2ssIGJ1dCBpdCBpcyB3cm9uZyBmb3IKLQkJICAgc3RkY2FsbCBmdW5jdGlvbnMgd2hlcmUgdGhlIGNhbGxlZSBjbGVhbnMuCi0JCSovCi0KLQkgIC8qIEFkZCBhbnkgcGFkZGluZyBpZiBuZWNlc3NhcnkgKi8KLQkgIGlmICgoKCpwdHIpLT5hbGlnbm1lbnQgLSAxKSAmIGJ5dGVzKQotCSAgICBieXRlcyA9IEFMSUdOKGJ5dGVzLCAoKnB0ciktPmFsaWdubWVudCk7Ci0JICAKLSNlbmRpZgotCSAgYnl0ZXMgKz0gU1RBQ0tfQVJHX1NJWkUoKCpwdHIpLT5zaXplKTsKLQl9Ci0jZW5kaWYKLSAgICB9Ci0KLSAgY2lmLT5ieXRlcyA9IGJ5dGVzOwotCi0gIC8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KLSAgcmV0dXJuIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGNpZik7Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9zeXN2LmFzbSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3N5c3YuYXNtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjc4YjkwLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3N5c3YuYXNtCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLTsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLTsgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5OCBSZWQgSGF0LCBJbmMuCi07ICAKLTsgIEFSTSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKLTsKLTsgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotOyAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi07ICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLTsgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLTsgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotOyAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi07ICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci07Ci07ICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotOyAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi07Ci07ICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi07ICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi07ICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi07ICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi07ICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLTsgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotOyAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotOyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotOyNkZWZpbmUgTElCRkZJX0FTTSAgICAgCi07I2luY2x1ZGUgPGZmaWNvbmZpZy5oPgotOyNpbmNsdWRlIDxmZmkuaD4KLTsjaWZkZWYgSEFWRV9NQUNISU5FX0FTTV9ICi07I2luY2x1ZGUgPG1hY2hpbmUvYXNtLmg+Ci07I2Vsc2UKLTsjaWZkZWYgX19VU0VSX0xBQkVMX1BSRUZJWF9fCi07I2RlZmluZSBDT05DQVQxKGEsIGIpIENPTkNBVDIoYSwgYikKLTsjZGVmaW5lIENPTkNBVDIoYSwgYikgYSAjIyBiCi0KLTsvKiBVc2UgdGhlIHJpZ2h0IHByZWZpeCBmb3IgZ2xvYmFsIGxhYmVscy4gICovCi07I2RlZmluZSBDTkFNRSh4KSBDT05DQVQxIChfX1VTRVJfTEFCRUxfUFJFRklYX18sIHgpCi07I2Vsc2UKLTsjZGVmaW5lIENOQU1FKHgpIHgKLTsjZW5kaWYKLTsjZGVmaW5lIEVOVFJZKHgpIC5nbG9ibCBDTkFNRSh4KTsgLnR5cGUgQ05BTUUoeCksJWZ1bmN0aW9uOyBDTkFNRSh4KToKLTsjZW5kaWYKLQotCi1GRklfVFlQRV9WT0lEICAgICAgIEVRVSAwCi1GRklfVFlQRV9JTlQgICAgICAgIEVRVSAxCi1GRklfVFlQRV9GTE9BVCAgICAgIEVRVSAyCi1GRklfVFlQRV9ET1VCTEUgICAgIEVRVSAzCi07RkZJX1RZUEVfTE9OR0RPVUJMRSBFUVUgNAotRkZJX1RZUEVfVUlOVDggICAgICBFUVUgNQotRkZJX1RZUEVfU0lOVDggICAgICBFUVUgNgotRkZJX1RZUEVfVUlOVDE2ICAgICBFUVUgNwotRkZJX1RZUEVfU0lOVDE2ICAgICBFUVUgOAotRkZJX1RZUEVfVUlOVDMyICAgICBFUVUgOQotRkZJX1RZUEVfU0lOVDMyICAgICBFUVUgMTAKLUZGSV9UWVBFX1VJTlQ2NCAgICAgRVFVIDExCi1GRklfVFlQRV9TSU5UNjQgICAgIEVRVSAxMgotRkZJX1RZUEVfU1RSVUNUICAgICBFUVUgMTMKLUZGSV9UWVBFX1BPSU5URVIgICAgRVFVIDE0Ci0KLTsgV2luQ0UgYWx3YXlzIHVzZXMgc29mdHdhcmUgZmxvYXRpbmcgcG9pbnQgKEkgdGhpbmspCi1fX1NPRlRGUF9fIEVRVSB7VFJVRX0KLQotCi0gICAgQVJFQSB8LnRleHR8LCBDT0RFLCBBUk0gICAgIDsgLnRleHQKLQotCi0gICAgOyBhMTogICBmZmlfcHJlcF9hcmdzCi0gICAgOyBhMjogICAmZWNpZgotICAgIDsgYTM6ICAgY2lmLT5ieXRlcwotICAgIDsgYTQ6ICAgZmlnLT5mbGFncwotICAgIDsgc3ArMDogZWNpZi5ydmFsdWUKLSAgICA7IHNwKzQ6IGZuCi0KLSAgICA7IFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgotO0VOVFJZKGZmaV9jYWxsX1NZU1YpCi0KLSAgICBFWFBPUlQgfGZmaV9jYWxsX1NZU1Z8Ci0KLXxmZmlfY2FsbF9TWVNWfCBQUk9DCi0KLSAgICA7IFNhdmUgcmVnaXN0ZXJzCi0gICAgc3RtZmQgc3AhLCB7YTEtYTQsIGZwLCBscn0KLSAgICBtb3YgICBmcCwgc3AKLQotICAgIDsgTWFrZSByb29tIGZvciBhbGwgb2YgdGhlIG5ldyBhcmdzLgotICAgIHN1YiAgIHNwLCBmcCwgYTMKLQotICAgIDsgUGxhY2UgYWxsIG9mIHRoZSBmZmlfcHJlcF9hcmdzIGluIHBvc2l0aW9uCi0gICAgbW92ICAgaXAsIGExCi0gICAgbW92ICAgYTEsIHNwCi0gICAgOyAgICAgYTIgYWxyZWFkeSBzZXQKLQotICAgIDsgQW5kIGNhbGwKLSAgICBtb3YgICBsciwgcGMKLSAgICBtb3YgICBwYywgaXAKLQotICAgIDsgbW92ZSBmaXJzdCA0IHBhcmFtZXRlcnMgaW4gcmVnaXN0ZXJzCi0gICAgbGRyICAgYTEsIFtzcCwgIzBdCi0gICAgbGRyICAgYTIsIFtzcCwgIzRdCi0gICAgbGRyICAgYTMsIFtzcCwgIzhdCi0gICAgbGRyICAgYTQsIFtzcCwgIzEyXQotCi0gICAgOyBhbmQgYWRqdXN0IHN0YWNrCi0gICAgbGRyICAgaXAsIFtmcCwgIzhdCi0gICAgY21wICAgaXAsICMxNgotICAgIG1vdmdlIGlwLCAjMTYKLSAgICBhZGQgICBzcCwgc3AsIGlwCi0KLSAgICA7IGNhbGwgZnVuY3Rpb24KLSAgICBtb3YgICBsciwgcGMKLSAgICBsZHIgICBwYywgW2ZwLCAjMjhdCi0KLSAgICA7IFJlbW92ZSB0aGUgc3BhY2Ugd2UgcHVzaGVkIGZvciB0aGUgYXJncwotICAgIG1vdiAgIHNwLCBmcAotCi0gICAgOyBMb2FkIGEzIHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgIGxkciAgIGEzLCBbc3AsICMyNF0KLQotICAgIDsgTG9hZCBhNCB3aXRoIHRoZSByZXR1cm4gdHlwZSBjb2RlIAotICAgIGxkciAgIGE0LCBbc3AsICMxMl0KLQotICAgIDsgSWYgdGhlIHJldHVybiB2YWx1ZSBwb2ludGVyIGlzIE5VTEwsIGFzc3VtZSBubyByZXR1cm4gdmFsdWUuCi0gICAgY21wICAgYTMsICMwCi0gICAgYmVxICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBJTlQKLSAgICBjbXAgICBhNCwgI0ZGSV9UWVBFX0lOVAotICAgIHN0cmVxIGExLCBbYTNdCi0gICAgYmVxICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBGTE9BVAotICAgIGNtcCAgICAgYTQsICNGRklfVFlQRV9GTE9BVAotICAgIFsgX19TT0ZURlBfXyAgICAgICAgICAgICAgICAgICAgO2lmZGVmIF9fU09GVEZQX18KLSAgICBzdHJlcSAgIGExLCBbYTNdCi0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZWxzZQotICAgIHN0ZmVxcyAgZjAsIFthM10KLSAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbmRpZgotICAgIGJlcSAgICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBET1VCTEUgb3IgTE9OR0RPVUJMRQotICAgIGNtcCAgICAgYTQsICNGRklfVFlQRV9ET1VCTEUKLSAgICBbIF9fU09GVEZQX18gICAgICAgICAgICAgICAgICAgIDtpZmRlZiBfX1NPRlRGUF9fCi0gICAgc3RtZXFpYSBhMywge2ExLCBhMn0KLSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbHNlCi0gICAgc3RmZXFkICBmMCwgW2EzXQotICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2VuZGlmCi0gICAgYmVxICAgICBjYWxsX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIFNJTlQ2NCBvciBVSU5UNjQKLSAgICBjbXAgICAgIGE0LCAjRkZJX1RZUEVfU0lOVDY0Ci0gICAgc3RtZXFpYSBhMywge2ExLCBhMn0KLQotY2FsbF9lcGlsb2d1ZQotICAgIGxkbWZkICAgc3AhLCB7YTEtYTQsIGZwLCBwY30KLQotOy5mZmlfY2FsbF9TWVNWX2VuZDoKLSAgICA7LnNpemUgICAgQ05BTUUoZmZpX2NhbGxfU1lTViksLmZmaV9jYWxsX1NZU1ZfZW5kLUNOQU1FKGZmaV9jYWxsX1NZU1YpCi0gICAgRU5EUAotCi0KLVJFU0VSVkVfUkVUVVJOIEVRVSAxNgotCi0gICAgOyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdHJhbXBvbGluZQotICAgIDsgSXQgaXMgTk9UIGNhbGxhYmxlIGZyb20gQwotICAgIDsgaXAgPSBwb2ludGVyIHRvIHN0cnVjdCBmZmlfY2xvc3VyZQotCi0gICAgSU1QT1JUIHxmZmlfY2xvc3VyZV9TWVNWX2lubmVyfAotCi0gICAgRVhQT1JUIHxmZmlfY2xvc3VyZV9TWVNWfAotfGZmaV9jbG9zdXJlX1NZU1Z8IFBST0MKLQotICAgIDsgU3RvcmUgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycyBvbiB0aGUgc3RhY2sKLSAgICBzdG1mZCAgIHNwISwge2ExLWE0fQotICAgIDsgUHVzaCB0aGUgcmV0dXJuIGFkZHJlc3Mgb250byB0aGUgc3RhY2sKLSAgICBzdG1mZCAgIHNwISwge2xyfQotCi0gICAgbW92ICAgICBhMSwgaXAgICAgICAgICAgICA7IGZpcnN0IGFyZyA9IGFkZHJlc3Mgb2YgZmZpX2Nsb3N1cmUKLSAgICBhZGQgICAgIGEyLCBzcCwgIzQgICAgICAgIDsgc2Vjb25kIGFyZyA9IHNwKzQgKHBvaW50cyB0byBzYXZlZCBhMSkKLQotICAgIDsgQWxsb2NhdGUgc3BhY2UgZm9yIGEgbm9uLXN0cnVjdCByZXR1cm4gdmFsdWUKLSAgICBzdWIgICAgIHNwLCBzcCwgI1JFU0VSVkVfUkVUVVJOCi0gICAgbW92ICAgICBhMywgc3AgICAgICAgICAgICA7IHRoaXJkIGFyZyA9IHJldHVybiB2YWx1ZSBhZGRyZXNzCi0KLSAgICA7IHN0YXRpYyB1bnNpZ25lZCBpbnQKLSAgICA7IGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIgKGZmaV9jbG9zdXJlICpjbG9zdXJlLCBjaGFyICppbl9hcmdzLCB2b2lkICpydmFsdWUpCi0gICAgYmwgICAgICBmZmlfY2xvc3VyZV9TWVNWX2lubmVyCi0gICAgOyBhMSBub3cgY29udGFpbnMgdGhlIHJldHVybiB0eXBlIGNvZGUgCi0KLSAgICA7IEF0IHRoaXMgcG9pbnQgdGhlIHJldHVybiB2YWx1ZSBpcyBvbiB0aGUgc3RhY2sKLSAgICA7IFRyYW5zZmVyIGl0IHRvIHRoZSBjb3JyZWN0IHJlZ2lzdGVycyBpZiBuZWNlc3NhcnkKLQotOyByZXR1cm4gSU5UCi0gICAgY21wICAgICBhMSwgI0ZGSV9UWVBFX0lOVAotICAgIGxkcmVxICAgYTEsIFtzcF0KLSAgICBiZXEgICAgIGNsb3N1cmVfZXBpbG9ndWUKLQotOyByZXR1cm4gRkxPQVQKLSAgICBjbXAgICAgIGExLCAjRkZJX1RZUEVfRkxPQVQKLSAgICBbIF9fU09GVEZQX18gICAgICAgICAgICAgICAgICAgIDtpZmRlZiBfX1NPRlRGUF9fCi0gICAgbGRyZXEgICBhMSwgW3NwXQotICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2Vsc2UKLSAgICBzdGZlcXMgIGYwLCBbc3BdCi0gICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZW5kaWYKLSAgICBiZXEgICAgIGNsb3N1cmVfZXBpbG9ndWUKLQotOyByZXR1cm4gRE9VQkxFIG9yIExPTkdET1VCTEUKLSAgICBjbXAgICAgIGExLCAjRkZJX1RZUEVfRE9VQkxFCi0gICAgWyBfX1NPRlRGUF9fICAgICAgICAgICAgICAgICAgICA7aWZkZWYgX19TT0ZURlBfXwotICAgIGxkbWVxaWEgc3AsIHthMSwgYTJ9Ci0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZWxzZQotICAgIHN0ZmVxZCAgZjAsIFtzcF0KLSAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbmRpZgotICAgIGJlcSAgICAgY2xvc3VyZV9lcGlsb2d1ZQotCi07IHJldHVybiBTSU5UNjQgb3IgVUlOVDY0Ci0gICAgY21wICAgICBhMSwgI0ZGSV9UWVBFX1NJTlQ2NAotICAgIGxkbWVxaWEgc3AsIHthMSwgYTJ9Ci0KLWNsb3N1cmVfZXBpbG9ndWUKLSAgICBhZGQgICAgIHNwLCBzcCwgI1JFU0VSVkVfUkVUVVJOICAgOyByZW1vdmUgcmV0dXJuIHZhbHVlIGJ1ZmZlcgotICAgIGxkbWZkICAgc3AhLCB7aXB9ICAgICAgICAgOyBpcCA9IHBvcCByZXR1cm4gYWRkcmVzcwotICAgIGFkZCAgICAgc3AsIHNwLCAjMTYgICAgICAgOyByZW1vdmUgc2F2ZWQgYXJndW1lbnQgcmVnaXN0ZXJzIHthMS1hNH0gZnJvbSB0aGUgc3RhY2sKLSAgICBtb3YgICAgIHBjLCBpcCAgICAgICAgICAgIDsgcmV0dXJuCi0KLSAgICBFTkRQICAgIDsgZmZpX2Nsb3N1cmVfU1lTVgotCi0gICAgRU5ECmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCmluZGV4IDIyOGY0OTcuLjE4ZWYzMzUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCisrKyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCkBAIC02LDcgKzYsNyBAQAogCiAvKiBSZWxlYXNlIE51bWJlciAqLwogCi1zdGF0aWMgY2hhciAqUHlDdXJzZXNWZXJzaW9uID0gIjIuMSI7CitzdGF0aWMgY29uc3QgY2hhciBQeUN1cnNlc1ZlcnNpb25bXSA9ICIyLjEiOwogCiAvKiBJbmNsdWRlcyAqLwogCkBAIC01Niw3ICs1Niw3IEBACiAgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5Q3Vyc2VzQ2hlY2tFUlIoaW50IGNvZGUsIGNoYXIgKmZuYW1lKQorUHlDdXJzZXNDaGVja0VSUihpbnQgY29kZSwgY29uc3QgY2hhciAqZm5hbWUpCiB7CiAgICAgaWYgKGNvZGUgIT0gRVJSKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jIGIvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMKaW5kZXggOTYwNzUyYy4uYTQ4NzM1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMKQEAgLTIzMDYsNyArMjMwNiw3IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc3RyZWFtLCAmUHlJZF9yZWFkLCAiIik7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc3RyZWFtLCAmUHlJZF9yZWFkLCBOVUxMKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGlmICghUHlCeXRlc19DaGVjayhkYXRhKSkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKaW5kZXggZjQxOWNiMi4uNWRkZjY1MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCkBAIC01Niw2ICs1Niw3IEBACiAjZGVmaW5lIERBVEVfR0VUX01JTlVURSAgICAgICAgIFB5RGF0ZVRpbWVfREFURV9HRVRfTUlOVVRFCiAjZGVmaW5lIERBVEVfR0VUX1NFQ09ORCAgICAgICAgIFB5RGF0ZVRpbWVfREFURV9HRVRfU0VDT05ECiAjZGVmaW5lIERBVEVfR0VUX01JQ1JPU0VDT05EICAgIFB5RGF0ZVRpbWVfREFURV9HRVRfTUlDUk9TRUNPTkQKKyNkZWZpbmUgREFURV9HRVRfRk9MRCAgICAgICAgICAgUHlEYXRlVGltZV9EQVRFX0dFVF9GT0xECiAKIC8qIERhdGUgYWNjZXNzb3JzIGZvciBkYXRlIGFuZCBkYXRldGltZS4gKi8KICNkZWZpbmUgU0VUX1lFQVIobywgdikgICAgICAgICAgKCgobyktPmRhdGFbMF0gPSAoKHYpICYgMHhmZjAwKSA+PiA4KSwgXApAQCAtNzEsMTIgKzcyLDE0IEBACiAgICAgKCgobyktPmRhdGFbN10gPSAoKHYpICYgMHhmZjAwMDApID4+IDE2KSwgXAogICAgICAoKG8pLT5kYXRhWzhdID0gKCh2KSAmIDB4MDBmZjAwKSA+PiA4KSwgXAogICAgICAoKG8pLT5kYXRhWzldID0gKCh2KSAmIDB4MDAwMGZmKSkpCisjZGVmaW5lIERBVEVfU0VUX0ZPTEQobywgdikgICAoUHlEYXRlVGltZV9EQVRFX0dFVF9GT0xEKG8pID0gKHYpKQogCiAvKiBUaW1lIGFjY2Vzc29ycyBmb3IgdGltZS4gKi8KICNkZWZpbmUgVElNRV9HRVRfSE9VUiAgICAgICAgICAgUHlEYXRlVGltZV9USU1FX0dFVF9IT1VSCiAjZGVmaW5lIFRJTUVfR0VUX01JTlVURSAgICAgICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfTUlOVVRFCiAjZGVmaW5lIFRJTUVfR0VUX1NFQ09ORCAgICAgICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfU0VDT05ECiAjZGVmaW5lIFRJTUVfR0VUX01JQ1JPU0VDT05EICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfTUlDUk9TRUNPTkQKKyNkZWZpbmUgVElNRV9HRVRfRk9MRCAgICAgICAgICAgUHlEYXRlVGltZV9USU1FX0dFVF9GT0xECiAjZGVmaW5lIFRJTUVfU0VUX0hPVVIobywgdikgICAgIChQeURhdGVUaW1lX1RJTUVfR0VUX0hPVVIobykgPSAodikpCiAjZGVmaW5lIFRJTUVfU0VUX01JTlVURShvLCB2KSAgIChQeURhdGVUaW1lX1RJTUVfR0VUX01JTlVURShvKSA9ICh2KSkKICNkZWZpbmUgVElNRV9TRVRfU0VDT05EKG8sIHYpICAgKFB5RGF0ZVRpbWVfVElNRV9HRVRfU0VDT05EKG8pID0gKHYpKQpAQCAtODQsNiArODcsNyBAQAogICAgICgoKG8pLT5kYXRhWzNdID0gKCh2KSAmIDB4ZmYwMDAwKSA+PiAxNiksIFwKICAgICAgKChvKS0+ZGF0YVs0XSA9ICgodikgJiAweDAwZmYwMCkgPj4gOCksIFwKICAgICAgKChvKS0+ZGF0YVs1XSA9ICgodikgJiAweDAwMDBmZikpKQorI2RlZmluZSBUSU1FX1NFVF9GT0xEKG8sIHYpICAgKFB5RGF0ZVRpbWVfVElNRV9HRVRfRk9MRChvKSA9ICh2KSkKIAogLyogRGVsdGEgYWNjZXNzb3JzIGZvciB0aW1lZGVsdGEuICovCiAjZGVmaW5lIEdFVF9URF9EQVlTKG8pICAgICAgICAgICgoKFB5RGF0ZVRpbWVfRGVsdGEgKikobykpLT5kYXlzKQpAQCAtMTg0LDEyICsxODgsMTIgQEAKICAqIGFuZCB0aGUgbnVtYmVyIG9mIGRheXMgYmVmb3JlIHRoYXQgbW9udGggaW4gdGhlIHNhbWUgeWVhci4gIFRoZXNlCiAgKiBhcmUgY29ycmVjdCBmb3Igbm9uLWxlYXAgeWVhcnMgb25seS4KICAqLwotc3RhdGljIGludCBfZGF5c19pbl9tb250aFtdID0geworc3RhdGljIGNvbnN0IGludCBfZGF5c19pbl9tb250aFtdID0gewogICAgIDAsIC8qIHVudXNlZDsgdGhpcyB2ZWN0b3IgdXNlcyAxLWJhc2VkIGluZGV4aW5nICovCiAgICAgMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMQogfTsKIAotc3RhdGljIGludCBfZGF5c19iZWZvcmVfbW9udGhbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgX2RheXNfYmVmb3JlX21vbnRoW10gPSB7CiAgICAgMCwgLyogdW51c2VkOyB0aGlzIHZlY3RvciB1c2VzIDEtYmFzZWQgaW5kZXhpbmcgKi8KICAgICAwLCAzMSwgNTksIDkwLCAxMjAsIDE1MSwgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNAogfTsKQEAgLTQxNyw3ICs0MjEsNyBAQAogICogYXJlbid0LCByYWlzZSBWYWx1ZUVycm9yIGFuZCByZXR1cm4gLTEuCiAgKi8KIHN0YXRpYyBpbnQKLWNoZWNrX3RpbWVfYXJncyhpbnQgaCwgaW50IG0sIGludCBzLCBpbnQgdXMpCitjaGVja190aW1lX2FyZ3MoaW50IGgsIGludCBtLCBpbnQgcywgaW50IHVzLCBpbnQgZm9sZCkKIHsKICAgICBpZiAoaCA8IDAgfHwgaCA+IDIzKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNDM5LDYgKzQ0MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3Jvc2Vjb25kIG11c3QgYmUgaW4gMC4uOTk5OTk5Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgaWYgKGZvbGQgIT0gMCAmJiBmb2xkICE9IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9sZCBtdXN0IGJlIGVpdGhlciAwIG9yIDEiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjc0LDggKzY4Myw4IEBACiAKIC8qIENyZWF0ZSBhIGRhdGV0aW1lIGluc3RhbmNlIHdpdGggbm8gcmFuZ2UgY2hlY2tpbmcuICovCiBzdGF0aWMgUHlPYmplY3QgKgotbmV3X2RhdGV0aW1lX2V4KGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksIGludCBob3VyLCBpbnQgbWludXRlLAotICAgICAgICAgICAgIGludCBzZWNvbmQsIGludCB1c2Vjb25kLCBQeU9iamVjdCAqdHppbmZvLCBQeVR5cGVPYmplY3QgKnR5cGUpCituZXdfZGF0ZXRpbWVfZXgyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksIGludCBob3VyLCBpbnQgbWludXRlLAorICAgICAgICAgICAgICAgICBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwgUHlPYmplY3QgKnR6aW5mbywgaW50IGZvbGQsIFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKICAgICBQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmOwogICAgIGNoYXIgYXdhcmUgPSB0emluZm8gIT0gUHlfTm9uZTsKQEAgLTY5MiwxOCArNzAxLDI3IEBACiAgICAgICAgICAgICBQeV9JTkNSRUYodHppbmZvKTsKICAgICAgICAgICAgIHNlbGYtPnR6aW5mbyA9IHR6aW5mbzsKICAgICAgICAgfQorICAgICAgICBEQVRFX1NFVF9GT0xEKHNlbGYsIGZvbGQpOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKIH0KIAotI2RlZmluZSBuZXdfZGF0ZXRpbWUoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6aW5mbykgICAgICAgICAgIFwKLSAgICBuZXdfZGF0ZXRpbWVfZXgoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgICAgICAgICAgICBcCitzdGF0aWMgUHlPYmplY3QgKgorbmV3X2RhdGV0aW1lX2V4KGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksIGludCBob3VyLCBpbnQgbWludXRlLAorICAgICAgICAgICAgICAgIGludCBzZWNvbmQsIGludCB1c2Vjb25kLCBQeU9iamVjdCAqdHppbmZvLCBQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgcmV0dXJuIG5ld19kYXRldGltZV9leDIoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvLCAwLCB0eXBlKTsKK30KKworI2RlZmluZSBuZXdfZGF0ZXRpbWUoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgZm9sZCkgXAorICAgIG5ld19kYXRldGltZV9leDIoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgZm9sZCwgXAogICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9EYXRlVGltZVR5cGUpCiAKIC8qIENyZWF0ZSBhIHRpbWUgaW5zdGFuY2Ugd2l0aCBubyByYW5nZSBjaGVja2luZy4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1uZXdfdGltZV9leChpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsCi0gICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvLCBQeVR5cGVPYmplY3QgKnR5cGUpCituZXdfdGltZV9leDIoaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCB1c2Vjb25kLAorICAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8sIGludCBmb2xkLCBQeVR5cGVPYmplY3QgKnR5cGUpCiB7CiAgICAgUHlEYXRlVGltZV9UaW1lICpzZWxmOwogICAgIGNoYXIgYXdhcmUgPSB0emluZm8gIT0gUHlfTm9uZTsKQEAgLTcyMCwxMiArNzM4LDIwIEBACiAgICAgICAgICAgICBQeV9JTkNSRUYodHppbmZvKTsKICAgICAgICAgICAgIHNlbGYtPnR6aW5mbyA9IHR6aW5mbzsKICAgICAgICAgfQorICAgICAgICBUSU1FX1NFVF9GT0xEKHNlbGYsIGZvbGQpOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKIH0KIAotI2RlZmluZSBuZXdfdGltZShoaCwgbW0sIHNzLCB1cywgdHppbmZvKSAgICAgICAgICAgICAgICBcCi0gICAgbmV3X3RpbWVfZXgoaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgJlB5RGF0ZVRpbWVfVGltZVR5cGUpCitzdGF0aWMgUHlPYmplY3QgKgorbmV3X3RpbWVfZXgoaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCB1c2Vjb25kLAorICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIHJldHVybiBuZXdfdGltZV9leDIoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIHR6aW5mbywgMCwgdHlwZSk7Cit9CisKKyNkZWZpbmUgbmV3X3RpbWUoaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgZm9sZCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBuZXdfdGltZV9leDIoaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgZm9sZCwgJlB5RGF0ZVRpbWVfVGltZVR5cGUpCiAKIC8qIENyZWF0ZSBhIHRpbWVkZWx0YSBpbnN0YW5jZS4gIE5vcm1hbGl6ZSB0aGUgbWVtYmVycyBpZmYgbm9ybWFsaXplIGlzCiAgKiB0cnVlLiAgUGFzc2luZyBmYWxzZSBpcyBhIHNwZWVkIG9wdGltaXphdGlvbiwgaWYgeW91IGtub3cgZm9yIHN1cmUKQEAgLTg3Myw3ICs4OTksNyBAQAogICogdGhpcyByZXR1cm5zIE5VTEwuICBFbHNlIHJlc3VsdCBpcyByZXR1cm5lZC4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfdHppbmZvX21ldGhvZChQeU9iamVjdCAqdHppbmZvLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdHppbmZvYXJnKQorY2FsbF90emluZm9fbWV0aG9kKFB5T2JqZWN0ICp0emluZm8sIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp0emluZm9hcmcpCiB7CiAgICAgUHlPYmplY3QgKm9mZnNldDsKIApAQCAtODg3LDEwICs5MTMsMTAgQEAKICAgICBpZiAob2Zmc2V0ID09IFB5X05vbmUgfHwgb2Zmc2V0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAgICAgaWYgKFB5RGVsdGFfQ2hlY2sob2Zmc2V0KSkgewotICAgICAgICBpZiAoR0VUX1REX01JQ1JPU0VDT05EUyhvZmZzZXQpICE9IDAgfHwgR0VUX1REX1NFQ09ORFMob2Zmc2V0KSAlIDYwICE9IDApIHsKKyAgICAgICAgaWYgKEdFVF9URF9NSUNST1NFQ09ORFMob2Zmc2V0KSAhPSAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiByZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIHNlY29uZHMiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICgoR0VUX1REX0RBWVMob2Zmc2V0KSA9PSAtMSAmJiBHRVRfVERfU0VDT05EUyhvZmZzZXQpID09IDApIHx8CkBAIC0xMDAyLDYgKzEwMjgsMzAgQEAKICAgICByZXR1cm4gcmVwcjsKIH0KIAorLyogcmVwciBpcyBsaWtlICJzb21lY2xhc3MoYXJnMSwgYXJnMikiLiAgSWYgZm9sZCBpc24ndCAwLAorICogc3R1ZmYKKyAqICAgICAiLCBmb2xkPSIgKyByZXByKHR6aW5mbykKKyAqIGJlZm9yZSB0aGUgY2xvc2luZyAiKSIuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCithcHBlbmRfa2V5d29yZF9mb2xkKFB5T2JqZWN0ICpyZXByLCBpbnQgZm9sZCkKK3sKKyAgICBQeU9iamVjdCAqdGVtcDsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2socmVwcikpOworICAgIGlmIChmb2xkID09IDApCisgICAgICAgIHJldHVybiByZXByOworICAgIC8qIEdldCByaWQgb2YgdGhlIHRyYWlsaW5nICcpJy4gKi8KKyAgICBhc3NlcnQoUHlVbmljb2RlX1JFQURfQ0hBUihyZXByLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKS0xKSA9PSAnKScpOworICAgIHRlbXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHJlcHIsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHIpIC0gMSk7CisgICAgUHlfREVDUkVGKHJlcHIpOworICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUsIGZvbGQ9JWQpIiwgdGVtcCwgZm9sZCk7CisgICAgUHlfREVDUkVGKHRlbXApOworICAgIHJldHVybiByZXByOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmluZyBmb3JtYXQgaGVscGVycy4KICAqLwpAQCAtMTAwOSwxMCArMTA1OSwxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZvcm1hdF9jdGltZShQeURhdGVUaW1lX0RhdGUgKmRhdGUsIGludCBob3VycywgaW50IG1pbnV0ZXMsIGludCBzZWNvbmRzKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICpEYXlOYW1lc1tdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgRGF5TmFtZXNbXSA9IHsKICAgICAgICAgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IiwgIlN1biIKICAgICB9OwotICAgIHN0YXRpYyBjb25zdCBjaGFyICpNb250aE5hbWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBNb250aE5hbWVzW10gPSB7CiAgICAgICAgICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsCiAgICAgICAgICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIKICAgICB9OwpAQCAtMTA1NywxMCArMTEwNyw4IEBACiAgICAgfQogICAgIC8qIE9mZnNldCBpcyBub3JtYWxpemVkLCBzbyBpdCBpcyBuZWdhdGl2ZSBpZiBkYXlzIDwgMCAqLwogICAgIGlmIChHRVRfVERfREFZUyhvZmZzZXQpIDwgMCkgewotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IG9mZnNldDsKICAgICAgICAgc2lnbiA9ICctJzsKLSAgICAgICAgb2Zmc2V0ID0gZGVsdGFfbmVnYXRpdmUoKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQpOwotICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgIFB5X1NFVFJFRihvZmZzZXQsIGRlbHRhX25lZ2F0aXZlKChQeURhdGVUaW1lX0RlbHRhICopb2Zmc2V0KSk7CiAgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0xMDcyLDEwICsxMTIwLDExIEBACiAgICAgUHlfREVDUkVGKG9mZnNldCk7CiAgICAgbWludXRlcyA9IGRpdm1vZChzZWNvbmRzLCA2MCwgJnNlY29uZHMpOwogICAgIGhvdXJzID0gZGl2bW9kKG1pbnV0ZXMsIDYwLCAmbWludXRlcyk7Ci0gICAgYXNzZXJ0KHNlY29uZHMgPT0gMCk7Ci0gICAgLyogWFhYIGlnbm9yZSBzdWItbWludXRlIGRhdGEsIGN1cnJlbnRseSBub3QgYWxsb3dlZC4gKi8KLSAgICBQeU9TX3NucHJpbnRmKGJ1ZiwgYnVmbGVuLCAiJWMlMDJkJXMlMDJkIiwgc2lnbiwgaG91cnMsIHNlcCwgbWludXRlcyk7Ci0KKyAgICBpZiAoc2Vjb25kcyA9PSAwKQorICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZiwgYnVmbGVuLCAiJWMlMDJkJXMlMDJkIiwgc2lnbiwgaG91cnMsIHNlcCwgbWludXRlcyk7CisgICAgZWxzZQorICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZiwgYnVmbGVuLCAiJWMlMDJkJXMlMDJkJXMlMDJkIiwgc2lnbiwgaG91cnMsCisgICAgICAgICAgICAgICAgICAgICAgc2VwLCBtaW51dGVzLCBzZXAsIHNlY29uZHMpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMzIzLDcgKzEzNzIsNyBAQAogICAgIGlmICh0aW1lICE9IE5VTEwpIHsKICAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7CiAKLSAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF90aW1lLCAiKCkiKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF90aW1lLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHRpbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjMwNyw3ICsyMzU2LDcgQEAKICAgICB7TlVMTCwgICAgICBOVUxMfSwKIH07CiAKLXN0YXRpYyBjaGFyIGRlbHRhX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGRlbHRhX2RvY1tdID0KIFB5RG9jX1NUUigiRGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBkYXRldGltZSB2YWx1ZXMuIik7CiAKIHN0YXRpYyBQeU51bWJlck1ldGhvZHMgZGVsdGFfYXNfbnVtYmVyID0gewpAQCAtMjQ2MiwyNyArMjUxMSwxOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfbG9jYWxfZnJvbV9vYmplY3QoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKm9iaikKIHsKLSAgICBzdHJ1Y3QgdG0gKnRtOworICAgIHN0cnVjdCB0bSB0bTsKICAgICB0aW1lX3QgdDsKIAogICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZV90KG9iaiwgJnQsIF9QeVRpbWVfUk9VTkRfRkxPT1IpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRtID0gbG9jYWx0aW1lKCZ0KTsKLSAgICBpZiAodG0gPT0gTlVMTCkgewotICAgICAgICAvKiB1bmNvbnZlcnRpYmxlIHRpbWUgKi8KLSNpZmRlZiBFSU5WQUwKLSAgICAgICAgaWYgKGVycm5vID09IDApCi0gICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKLSNlbmRpZgotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHQsICZ0bSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21vbiArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWRheSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS50bV9tZGF5KTsKIH0KIAogLyogUmV0dXJuIG5ldyBkYXRlIGZyb20gY3VycmVudCB0aW1lLgpAQCAtMjY0OCw3ICsyNjg5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX3N0cihQeURhdGVUaW1lX0RhdGUgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsIE5VTEwpOwogfQogCiAKQEAgLTI2NzQsNyArMjcxNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHR1cGxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF90aW1ldHVwbGUsICIoKSIpOworICAgIHR1cGxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF90aW1ldHVwbGUsIE5VTEwpOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXN1bHQgPSB3cmFwX3N0cmZ0aW1lKChQeU9iamVjdCAqKXNlbGYsIGZvcm1hdCwgdHVwbGUsCkBAIC0yNzg2LDkgKzI4MjcsMTAgQEAKIHN0YXRpYyBQeV9oYXNoX3QKIGRhdGVfaGFzaChQeURhdGVUaW1lX0RhdGUgKnNlbGYpCiB7Ci0gICAgaWYgKHNlbGYtPmhhc2hjb2RlID09IC0xKQorICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkgewogICAgICAgICBzZWxmLT5oYXNoY29kZSA9IGdlbmVyaWNfaGFzaCgKICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopc2VsZi0+ZGF0YSwgX1B5RGF0ZVRpbWVfREFURV9EQVRBU0laRSk7CisgICAgfQogCiAgICAgcmV0dXJuIHNlbGYtPmhhc2hjb2RlOwogfQpAQCAtMjg4Niw3ICsyOTI4LDcgQEAKICAgICB7TlVMTCwgICAgICBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgZGF0ZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBkYXRlX2RvY1tdID0KIFB5RG9jX1NUUigiZGF0ZSh5ZWFyLCBtb250aCwgZGF5KSAtLT4gZGF0ZSBvYmplY3QiKTsKIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBkYXRlX2FzX251bWJlciA9IHsKQEAgLTMwNDcsMTAgKzMwODksOCBAQAogICAgIGlmIChkc3QgPT0gUHlfTm9uZSkKICAgICAgICAgZ290byBJbmNvbnNpc3RlbnQ7CiAgICAgaWYgKGRlbHRhX2Jvb2woKFB5RGF0ZVRpbWVfRGVsdGEgKilkc3QpICE9IDApIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IGFkZF9kYXRldGltZV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilyZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilkc3QsIDEpOwotICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIGFkZF9kYXRldGltZV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilkc3QsIDEpKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBGYWlsOwogICAgIH0KQEAgLTMwODAsMzcgKzMxMjAsMzQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0emluZm9fcmVkdWNlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqc3RhdGUsICp0bXA7CisgICAgUHlPYmplY3QgKmFyZ3MsICpzdGF0ZTsKICAgICBQeU9iamVjdCAqZ2V0aW5pdGFyZ3MsICpnZXRzdGF0ZTsKICAgICBfUHlfSURFTlRJRklFUihfX2dldGluaXRhcmdzX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0c3RhdGVfXyk7CiAKLSAgICB0bXAgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgZ2V0aW5pdGFyZ3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZ2V0aW5pdGFyZ3NfXyk7CiAgICAgaWYgKGdldGluaXRhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgYXJncyA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZ2V0aW5pdGFyZ3MsIHRtcCk7CisgICAgICAgIGFyZ3MgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGdldGluaXRhcmdzKTsKICAgICAgICAgUHlfREVDUkVGKGdldGluaXRhcmdzKTsKICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgYXJncyA9IHRtcDsKLSAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworCisgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CiAKICAgICBnZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19nZXRzdGF0ZV9fKTsKICAgICBpZiAoZ2V0c3RhdGUgIT0gTlVMTCkgewotICAgICAgICBzdGF0ZSA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZ2V0c3RhdGUsIHRtcCk7CisgICAgICAgIHN0YXRlID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhnZXRzdGF0ZSk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRzdGF0ZSk7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQpAQCAtMzExOSwxMyArMzE1NiwxMiBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBzdGF0ZSA9IFB5X05vbmU7CiAgICAgICAgIGRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihzZWxmKTsKLSAgICAgICAgaWYgKGRpY3RwdHIgJiYgKmRpY3RwdHIgJiYgUHlEaWN0X1NpemUoKmRpY3RwdHIpKQorICAgICAgICBpZiAoZGljdHB0ciAmJiAqZGljdHB0ciAmJiBQeURpY3RfU2l6ZSgqZGljdHB0cikpIHsKICAgICAgICAgICAgIHN0YXRlID0gKmRpY3RwdHI7CisgICAgICAgIH0KICAgICAgICAgUHlfSU5DUkVGKHN0YXRlKTsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYodG1wKTsKLQogICAgIGlmIChzdGF0ZSA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdGF0ZSk7CiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgYXJncyk7CkBAIC0zMTU1LDcgKzMxOTEsNyBAQAogICAgIHtOVUxMLCBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgdHppbmZvX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHR6aW5mb19kb2NbXSA9CiBQeURvY19TVFIoIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHRpbWUgem9uZSBpbmZvIG9iamVjdHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlEYXRlVGltZV9UWkluZm9UeXBlID0gewpAQCAtMzI4Nyw2ICszMzIzLDExIEBACiAgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5uYW1lKTsKICAgICAgICAgcmV0dXJuIHNlbGYtPm5hbWU7CiAgICAgfQorICAgIGlmICgoUHlPYmplY3QgKilzZWxmID09IFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDIHx8CisgICAgICAgICAgIChHRVRfVERfREFZUyhzZWxmLT5vZmZzZXQpID09IDAgJiYKKyAgICAgICAgICAgIEdFVF9URF9TRUNPTkRTKHNlbGYtPm9mZnNldCkgPT0gMCAmJgorICAgICAgICAgICAgR0VUX1REX01JQ1JPU0VDT05EUyhzZWxmLT5vZmZzZXQpID09IDApKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIlVUQyIpOwogICAgIC8qIE9mZnNldCBpcyBub3JtYWxpemVkLCBzbyBpdCBpcyBuZWdhdGl2ZSBpZiBkYXlzIDwgMCAqLwogICAgIGlmIChHRVRfVERfREFZUyhzZWxmLT5vZmZzZXQpIDwgMCkgewogICAgICAgICBzaWduID0gJy0nOwpAQCAtMzM4Miw3ICszNDIzLDcgQEAKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIHRpbWV6b25lX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHRpbWV6b25lX2RvY1tdID0KIFB5RG9jX1NUUigiRml4ZWQgb2Zmc2V0IGZyb20gVVRDIGltcGxlbWVudGF0aW9uIG9mIHR6aW5mby4iKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBQeURhdGVUaW1lX1RpbWVab25lVHlwZSA9IHsKQEAgLTM0NjYsMTIgKzM1MDcsMTkgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9mb2xkKFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgdm9pZCAqdW51c2VkKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoVElNRV9HRVRfRk9MRChzZWxmKSk7Cit9CisKIHN0YXRpYyBQeUdldFNldERlZiB0aW1lX2dldHNldFtdID0gewogICAgIHsiaG91ciIsICAgICAgICAoZ2V0dGVyKXRpbWVfaG91cn0sCiAgICAgeyJtaW51dGUiLCAgICAgIChnZXR0ZXIpdGltZV9taW51dGV9LAogICAgIHsic2Vjb25kIiwgICAgICAoZ2V0dGVyKXB5X3RpbWVfc2Vjb25kfSwKICAgICB7Im1pY3Jvc2Vjb25kIiwgKGdldHRlcil0aW1lX21pY3Jvc2Vjb25kfSwKLSAgICB7InR6aW5mbyIsICAgICAgICAgIChnZXR0ZXIpdGltZV90emluZm99LAorICAgIHsidHppbmZvIiwgICAgICAoZ2V0dGVyKXRpbWVfdHppbmZvfSwKKyAgICB7ImZvbGQiLCAgICAgICAgKGdldHRlcil0aW1lX2ZvbGR9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzQ4MCw3ICszNTI4LDcgQEAKICAqLwogCiBzdGF0aWMgY2hhciAqdGltZV9rd3NbXSA9IHsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pY3Jvc2Vjb25kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0emluZm8iLCBOVUxMfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0emluZm8iLCAiZm9sZCIsIE5VTEx9OwogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQpAQCAtMzQ5MiwxMyArMzU0MCwxNCBAQAogICAgIGludCBzZWNvbmQgPSAwOwogICAgIGludCB1c2Vjb25kID0gMDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKKyAgICBpbnQgZm9sZCA9IDA7CiAKICAgICAvKiBDaGVjayBmb3IgaW52b2NhdGlvbiBmcm9tIHBpY2tsZSB3aXRoIF9fZ2V0c3RhdGVfXyBzdGF0ZSAqLwogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID49IDEgJiYKICAgICAgICAgUHlUdXBsZV9HRVRfU0laRShhcmdzKSA8PSAyICYmCiAgICAgICAgIFB5Qnl0ZXNfQ2hlY2soc3RhdGUgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApKSAmJgogICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHN0YXRlKSA9PSBfUHlEYXRlVGltZV9USU1FX0RBVEFTSVpFICYmCi0gICAgICAgICgodW5zaWduZWQgY2hhcikgKFB5Qnl0ZXNfQVNfU1RSSU5HKHN0YXRlKVswXSkpIDwgMjQpCisgICAgICAgICgweDdGICYgKCh1bnNpZ25lZCBjaGFyKSAoUHlCeXRlc19BU19TVFJJTkcoc3RhdGUpWzBdKSkpIDwgMjQpCiAgICAgewogICAgICAgICBQeURhdGVUaW1lX1RpbWUgKm1lOwogICAgICAgICBjaGFyIGF3YXJlOwpAQCAtMzUyMywxOSArMzU3MiwyNiBAQAogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0emluZm8pOwogICAgICAgICAgICAgICAgIG1lLT50emluZm8gPSB0emluZm87CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocGRhdGFbMF0gJiAoMSA8PCA3KSkgeworICAgICAgICAgICAgICAgIG1lLT5kYXRhWzBdIC09IDEyODsKKyAgICAgICAgICAgICAgICBtZS0+Zm9sZCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtZS0+Zm9sZCA9IDA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1lOwogICAgIH0KIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaU8iLCB0aW1lX2t3cywKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlPJGkiLCB0aW1lX2t3cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZob3VyLCAmbWludXRlLCAmc2Vjb25kLCAmdXNlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8pKSB7Ci0gICAgICAgIGlmIChjaGVja190aW1lX2FyZ3MoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8sICZmb2xkKSkgeworICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBmb2xkKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzZWxmID0gbmV3X3RpbWVfZXgoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIHR6aW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOworICAgICAgICBzZWxmID0gbmV3X3RpbWVfZXgyKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCB0emluZm8sIGZvbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSk7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzU4NSw2ICszNjQxLDcgQEAKICAgICBpbnQgbSA9IFRJTUVfR0VUX01JTlVURShzZWxmKTsKICAgICBpbnQgcyA9IFRJTUVfR0VUX1NFQ09ORChzZWxmKTsKICAgICBpbnQgdXMgPSBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKTsKKyAgICBpbnQgZm9sZCA9IFRJTUVfR0VUX0ZPTEQoc2VsZik7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKICAgICBpZiAodXMpCkBAIC0zNTk3LDMzICszNjU0LDY4IEBACiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglZCwgJWQpIiwgdHlwZV9uYW1lLCBoLCBtKTsKICAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgSEFTVFpJTkZPKHNlbGYpKQogICAgICAgICByZXN1bHQgPSBhcHBlbmRfa2V5d29yZF90emluZm8ocmVzdWx0LCBzZWxmLT50emluZm8pOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBmb2xkKQorICAgICAgICByZXN1bHQgPSBhcHBlbmRfa2V5d29yZF9mb2xkKHJlc3VsdCwgZm9sZCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc3RyKFB5RGF0ZVRpbWVfVGltZSAqc2VsZikKIHsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsICIoKSIpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi10aW1lX2lzb2Zvcm1hdChQeURhdGVUaW1lX1RpbWUgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit0aW1lX2lzb2Zvcm1hdChQeURhdGVUaW1lX1RpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7CiAgICAgY2hhciBidWZbMTAwXTsKKyAgICBjaGFyICp0aW1lc3BlYyA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InRpbWVzcGVjIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBpbnQgdXMgPSBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKTsKKyAgICBzdGF0aWMgY2hhciAqc3BlY3NbXVsyXSA9IHsKKyAgICAgICAgeyJob3VycyIsICIlMDJkIn0sCisgICAgICAgIHsibWludXRlcyIsICIlMDJkOiUwMmQifSwKKyAgICAgICAgeyJzZWNvbmRzIiwgIiUwMmQ6JTAyZDolMDJkIn0sCisgICAgICAgIHsibWlsbGlzZWNvbmRzIiwgIiUwMmQ6JTAyZDolMDJkLiUwM2QifSwKKyAgICAgICAgeyJtaWNyb3NlY29uZHMiLCAiJTAyZDolMDJkOiUwMmQuJTA2ZCJ9LAorICAgIH07CisgICAgc2l6ZV90IGdpdmVuX3NwZWM7CiAKLSAgICBpZiAodXMpCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDJkOiUwMmQ6JTAyZC4lMDZkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUihzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9TRUNPTkQoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDJkOiUwMmQ6JTAyZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JTlVURShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHNlbGYpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxzOmlzb2Zvcm1hdCIsIGtleXdvcmRzLCAmdGltZXNwZWMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh0aW1lc3BlYyA9PSBOVUxMIHx8IHN0cmNtcCh0aW1lc3BlYywgImF1dG8iKSA9PSAwKSB7CisgICAgICAgIGlmICh1cyA9PSAwKSB7CisgICAgICAgICAgICAvKiBzZWNvbmRzICovCisgICAgICAgICAgICBnaXZlbl9zcGVjID0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG1pY3Jvc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoZ2l2ZW5fc3BlYyA9IDA7IGdpdmVuX3NwZWMgPCBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpOyBnaXZlbl9zcGVjKyspIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAodGltZXNwZWMsIHNwZWNzW2dpdmVuX3NwZWNdWzBdKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdpdmVuX3NwZWMgPT0gMykgeworICAgICAgICAgICAgICAgICAgICAvKiBtaWxsaXNlY29uZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgdXMgPSB1cyAvIDEwMDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGdpdmVuX3NwZWMgPT0gUHlfQVJSQVlfTEVOR1RIKHNwZWNzKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIlVua25vd24gdGltZXNwZWMgdmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChzcGVjc1tnaXZlbl9zcGVjXVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUihzZWxmKSwgVElNRV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9TRUNPTkQoc2VsZiksIHVzKTsKKyAgICB9CiAKICAgICBpZiAocmVzdWx0ID09IE5VTEwgfHwgIUhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM3NTAsOSArMzg0MiwyMyBAQAogdGltZV9oYXNoKFB5RGF0ZVRpbWVfVGltZSAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+aGFzaGNvZGUgPT0gLTEpIHsKLSAgICAgICAgUHlPYmplY3QgKm9mZnNldDsKLQotICAgICAgICBvZmZzZXQgPSB0aW1lX3V0Y29mZnNldCgoUHlPYmplY3QgKilzZWxmLCBOVUxMKTsKKyAgICAgICAgUHlPYmplY3QgKm9mZnNldCwgKnNlbGYwOworICAgICAgICBpZiAoREFURV9HRVRfRk9MRChzZWxmKSkgeworICAgICAgICAgICAgc2VsZjAgPSBuZXdfdGltZV9leDIoREFURV9HRVRfSE9VUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKHNlbGYpID8gc2VsZi0+dHppbmZvIDogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFB5X1RZUEUoc2VsZikpOworICAgICAgICAgICAgaWYgKHNlbGYwID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2VsZjAgPSAoUHlPYmplY3QgKilzZWxmOworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYwKTsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQgPSB0aW1lX3V0Y29mZnNldChzZWxmMCwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmMCk7CiAKICAgICAgICAgaWYgKG9mZnNldCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMzc5OCwxNSArMzkwNCwyNCBAQAogICAgIGludCBzcyA9IFRJTUVfR0VUX1NFQ09ORChzZWxmKTsKICAgICBpbnQgdXMgPSBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKTsKICAgICBQeU9iamVjdCAqdHppbmZvID0gSEFTVFpJTkZPKHNlbGYpID8gc2VsZi0+dHppbmZvIDogUHlfTm9uZTsKKyAgICBpbnQgZm9sZCA9IFRJTUVfR0VUX0ZPTEQoc2VsZik7CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaU86cmVwbGFjZSIsCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlPJGk6cmVwbGFjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVfa3dzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGgsICZtbSwgJnNzLCAmdXMsICZ0emluZm8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGgsICZtbSwgJnNzLCAmdXMsICZ0emluZm8sICZmb2xkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJpaWlpTyIsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjbG9uZSA9IHRpbWVfbmV3KFB5X1RZUEUoc2VsZiksIHR1cGxlLCBOVUxMKTsKKyAgICBpZiAoY2xvbmUgIT0gTlVMTCkgeworICAgICAgICBpZiAoZm9sZCAhPSAwICYmIGZvbGQgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBUSU1FX1NFVF9GT0xEKGNsb25lLCBmb2xkKTsKKyAgICB9CiAgICAgUHlfREVDUkVGKHR1cGxlKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CkBAIC0zODE5LDcgKzM5MzQsNyBAQAogICogX19nZXRzdGF0ZV9fIGlzbid0IGV4cG9zZWQuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi10aW1lX2dldHN0YXRlKFB5RGF0ZVRpbWVfVGltZSAqc2VsZikKK3RpbWVfZ2V0c3RhdGUoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBpbnQgcHJvdG8pCiB7CiAgICAgUHlPYmplY3QgKmJhc2VzdGF0ZTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKQEAgLTM4MjcsNiArMzk0Miw5IEBACiAgICAgYmFzZXN0YXRlID0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilzZWxmLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlEYXRlVGltZV9USU1FX0RBVEFTSVpFKTsKICAgICBpZiAoYmFzZXN0YXRlICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHByb3RvID4gMyAmJiBUSU1FX0dFVF9GT0xEKHNlbGYpKQorICAgICAgICAgICAgLyogU2V0IHRoZSBmaXJzdCBiaXQgb2YgdGhlIGZpcnN0IGJ5dGUgKi8KKyAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGJhc2VzdGF0ZSlbMF0gfD0gKDEgPDwgNyk7CiAgICAgICAgIGlmICghIEhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfUGFjaygxLCBiYXNlc3RhdGUpOwogICAgICAgICBlbHNlCkBAIC0zODM3LDE2ICszOTU1LDIxIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi10aW1lX3JlZHVjZShQeURhdGVUaW1lX1RpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit0aW1lX3JlZHVjZShQeURhdGVUaW1lX1RpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgdGltZV9nZXRzdGF0ZShzZWxmKSk7CisgICAgaW50IHByb3RvID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLCAmcHJvdG8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgdGltZV9nZXRzdGF0ZShzZWxmLCBwcm90bykpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgdGltZV9tZXRob2RzW10gPSB7CiAKLSAgICB7Imlzb2Zvcm1hdCIsICAgKFB5Q0Z1bmN0aW9uKXRpbWVfaXNvZm9ybWF0LCAgICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIFB5RG9jX1NUUigiUmV0dXJuIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQsIEhIOk1NOlNTWy5tbW1tbW1dIgotICAgICAgICAgICAgICAgIlsrSEg6TU1dLiIpfSwKKyAgICB7Imlzb2Zvcm1hdCIsICAgKFB5Q0Z1bmN0aW9uKXRpbWVfaXNvZm9ybWF0LCAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgUHlEb2NfU1RSKCJSZXR1cm4gc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdCwgW0hIWzpNTVs6U1NbLm1tbVt1dXVdXV1dXSIKKyAgICAgICAgICAgICAgICJbK0hIOk1NXS5cblxuIgorICAgICAgICAgICAgICAgInRpbWVzcGVjIHNwZWNpZmllcyB3aGF0IGNvbXBvbmVudHMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZS5cbiIpfSwKIAogICAgIHsic3RyZnRpbWUiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXRpbWVfc3RyZnRpbWUsICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoImZvcm1hdCAtPiBzdHJmdGltZSgpIHN0eWxlIHN0cmluZy4iKX0sCkBAIC0zODY2LDEzICszOTg5LDEzIEBACiAgICAgeyJyZXBsYWNlIiwgICAgIChQeUNGdW5jdGlvbil0aW1lX3JlcGxhY2UsICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigiUmV0dXJuIHRpbWUgd2l0aCBuZXcgc3BlY2lmaWVkIGZpZWxkcy4iKX0sCiAKLSAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pdGltZV9yZWR1Y2UsICAgICAgICBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJfX3JlZHVjZV9fKCkgLT4gKGNscywgc3RhdGUpIil9LAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbil0aW1lX3JlZHVjZSwgICAgICAgIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX3JlZHVjZV9leF9fKHByb3RvKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCiAKICAgICB7TlVMTCwgICAgICBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgdGltZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciB0aW1lX2RvY1tdID0KIFB5RG9jX1NUUigidGltZShbaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWywgdHppbmZvXV1dXV0pIC0tPiBhIHRpbWUgb2JqZWN0XG5cCiBcblwKIEFsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiB0emluZm8gbWF5IGJlIE5vbmUsIG9yIGFuIGluc3RhbmNlIG9mXG5cCkBAIC0zOTYwLDEyICs0MDgzLDE5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RhdGV0aW1lX2ZvbGQoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgdm9pZCAqdW51c2VkKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoREFURV9HRVRfRk9MRChzZWxmKSk7Cit9CisKIHN0YXRpYyBQeUdldFNldERlZiBkYXRldGltZV9nZXRzZXRbXSA9IHsKICAgICB7ImhvdXIiLCAgICAgICAgKGdldHRlcilkYXRldGltZV9ob3VyfSwKICAgICB7Im1pbnV0ZSIsICAgICAgKGdldHRlcilkYXRldGltZV9taW51dGV9LAogICAgIHsic2Vjb25kIiwgICAgICAoZ2V0dGVyKWRhdGV0aW1lX3NlY29uZH0sCiAgICAgeyJtaWNyb3NlY29uZCIsIChnZXR0ZXIpZGF0ZXRpbWVfbWljcm9zZWNvbmR9LAotICAgIHsidHppbmZvIiwgICAgICAgICAgKGdldHRlcilkYXRldGltZV90emluZm99LAorICAgIHsidHppbmZvIiwgICAgICAoZ2V0dGVyKWRhdGV0aW1lX3R6aW5mb30sCisgICAgeyJmb2xkIiwgICAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfZm9sZH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0zOTc1LDcgKzQxMDUsNyBAQAogCiBzdGF0aWMgY2hhciAqZGF0ZXRpbWVfa3dzW10gPSB7CiAgICAgInllYXIiLCAibW9udGgiLCAiZGF5IiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsCi0gICAgIm1pY3Jvc2Vjb25kIiwgInR6aW5mbyIsIE5VTEwKKyAgICAibWljcm9zZWNvbmQiLCAidHppbmZvIiwgImZvbGQiLCBOVUxMCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzk5MCw2ICs0MTIwLDcgQEAKICAgICBpbnQgbWludXRlID0gMDsKICAgICBpbnQgc2Vjb25kID0gMDsKICAgICBpbnQgdXNlY29uZCA9IDA7CisgICAgaW50IGZvbGQgPSAwOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwogCiAgICAgLyogQ2hlY2sgZm9yIGludm9jYXRpb24gZnJvbSBwaWNrbGUgd2l0aCBfX2dldHN0YXRlX18gc3RhdGUgKi8KQEAgLTM5OTcsNyArNDEyOCw3IEBACiAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPD0gMiAmJgogICAgICAgICBQeUJ5dGVzX0NoZWNrKHN0YXRlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSkgJiYKICAgICAgICAgUHlCeXRlc19HRVRfU0laRShzdGF0ZSkgPT0gX1B5RGF0ZVRpbWVfREFURVRJTUVfREFUQVNJWkUgJiYKLSAgICAgICAgTU9OVEhfSVNfU0FORShQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMl0pKQorICAgICAgICBNT05USF9JU19TQU5FKFB5Qnl0ZXNfQVNfU1RSSU5HKHN0YXRlKVsyXSAmIDB4N0YpKQogICAgIHsKICAgICAgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqbWU7CiAgICAgICAgIGNoYXIgYXdhcmU7CkBAIC00MDIyLDI4ICs0MTUzLDczIEBACiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICAgICAgbWUtPnR6aW5mbyA9IHR6aW5mbzsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwZGF0YVsyXSAmICgxIDw8IDcpKSB7CisgICAgICAgICAgICAgICAgbWUtPmRhdGFbMl0gLT0gMTI4OworICAgICAgICAgICAgICAgIG1lLT5mb2xkID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1lLT5mb2xkID0gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopbWU7CiAgICAgfQogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgImlpaXxpaWlpTyIsIGRhdGV0aW1lX2t3cywKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiaWlpfGlpaWlPJGkiLCBkYXRldGltZV9rd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeWVhciwgJm1vbnRoLCAmZGF5LCAmaG91ciwgJm1pbnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWNvbmQsICZ1c2Vjb25kLCAmdHppbmZvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlY29uZCwgJnVzZWNvbmQsICZ0emluZm8sICZmb2xkKSkgewogICAgICAgICBpZiAoY2hlY2tfZGF0ZV9hcmdzKHllYXIsIG1vbnRoLCBkYXkpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kKSA8IDApCisgICAgICAgIGlmIChjaGVja190aW1lX2FyZ3MoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIGZvbGQpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHNlbGYgPSBuZXdfZGF0ZXRpbWVfZXgoeWVhciwgbW9udGgsIGRheSwKKyAgICAgICAgc2VsZiA9IG5ld19kYXRldGltZV9leDIoeWVhciwgbW9udGgsIGRheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbywgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbywgZm9sZCwgdHlwZSk7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQogCi0vKiBUTV9GVU5DIGlzIHRoZSBzaGFyZWQgdHlwZSBvZiBsb2NhbHRpbWUoKSBhbmQgZ210aW1lKCkuICovCi10eXBlZGVmIHN0cnVjdCB0bSAqKCpUTV9GVU5DKShjb25zdCB0aW1lX3QgKnRpbWVyKTsKKy8qIFRNX0ZVTkMgaXMgdGhlIHNoYXJlZCB0eXBlIG9mIF9QeVRpbWVfbG9jYWx0aW1lKCkgYW5kCisgKiBfUHlUaW1lX2dtdGltZSgpLiAqLwordHlwZWRlZiBpbnQgKCpUTV9GVU5DKSh0aW1lX3QgdGltZXIsIHN0cnVjdCB0bSopOworCisvKiBBcyBvZiB2ZXJzaW9uIDIwMTVmIG1heCBmb2xkIGluIElBTkEgZGF0YWJhc2UgaXMKKyAqIDIzIGhvdXJzIGF0IDE5NjktMDktMzAgMTM6MDA6MDAgaW4gS3dhamFsZWluLiAqLworc3RhdGljIGxvbmcgbG9uZyBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwOworLyogTkI6IGRhdGUoMTk3MCwxLDEpLnRvb3JkaW5hbCgpID09IDcxOTE2MyAqLworc3RhdGljIGxvbmcgbG9uZyBlcG9jaCA9IDcxOTE2M0xMICogMjQgKiA2MCAqIDYwOworCitzdGF0aWMgbG9uZyBsb25nCit1dGNfdG9fc2Vjb25kcyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LAorICAgICAgICAgICAgICAgaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQpCit7CisgICAgbG9uZyBsb25nIG9yZGluYWwgPSB5bWRfdG9fb3JkKHllYXIsIG1vbnRoLCBkYXkpOworICAgIHJldHVybiAoKG9yZGluYWwgKiAyNCArIGhvdXIpICogNjAgKyBtaW51dGUpICogNjAgKyBzZWNvbmQ7Cit9CisKK3N0YXRpYyBsb25nIGxvbmcKK2xvY2FsKGxvbmcgbG9uZyB1KQoreworICAgIHN0cnVjdCB0bSBsb2NhbF90aW1lOworICAgIHRpbWVfdCB0OworICAgIHUgLT0gZXBvY2g7CisgICAgdCA9IHU7CisgICAgaWYgKHQgIT0gdSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yIHBsYXRmb3JtIHRpbWVfdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIC8qIFhYWDogYWRkIGJvdW5kcyBjaGVja2luZyAqLworICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0LCAmbG9jYWxfdGltZSkgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiB1dGNfdG9fc2Vjb25kcyhsb2NhbF90aW1lLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9zZWMpOworfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIuCiAgKiBCdWlsZCBkYXRldGltZSBmcm9tIGEgdGltZV90IGFuZCBhIGRpc3RpbmN0IGNvdW50IG9mIG1pY3Jvc2Vjb25kcy4KQEAgLTQwNTMsNzIgKzQyMjksNDYgQEAKIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgdGltZV90IHRpbWV0LCBpbnQgdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvKQogewotICAgIHN0cnVjdCB0bSAqdG07CisgICAgc3RydWN0IHRtIHRtOworICAgIGludCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgZm9sZCA9IDA7CiAKLSAgICB0bSA9IGYoJnRpbWV0KTsKLSAgICBpZiAodG0gPT0gTlVMTCkgewotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgfQorICAgIGlmIChmKHRpbWV0LCAmdG0pICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgeWVhciA9IHRtLnRtX3llYXIgKyAxOTAwOworICAgIG1vbnRoID0gdG0udG1fbW9uICsgMTsKKyAgICBkYXkgPSB0bS50bV9tZGF5OworICAgIGhvdXIgPSB0bS50bV9ob3VyOworICAgIG1pbnV0ZSA9IHRtLnRtX21pbjsKICAgICAvKiBUaGUgcGxhdGZvcm0gbG9jYWx0aW1lL2dtdGltZSBtYXkgaW5zZXJ0IGxlYXAgc2Vjb25kcywKLSAgICAgKiBpbmRpY2F0ZWQgYnkgdG0tPnRtX3NlYyA+IDU5LiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGVtLAorICAgICAqIGluZGljYXRlZCBieSB0bS50bV9zZWMgPiA1OS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlbSwKICAgICAgKiBleGNlcHQgdG8gdGhlIGV4dGVudCB0aGF0IHBhc3NpbmcgdGhlbSBvbiB0byB0aGUgZGF0ZXRpbWUKICAgICAgKiBjb25zdHJ1Y3RvciB3b3VsZCByYWlzZSBWYWx1ZUVycm9yIGZvciBhIHJlYXNvbiB0aGF0CiAgICAgICogbWFkZSBubyBzZW5zZSB0byB0aGUgdXNlci4KICAgICAgKi8KLSAgICBpZiAodG0tPnRtX3NlYyA+IDU5KQotICAgICAgICB0bS0+dG1fc2VjID0gNTk7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3NlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKLX0KKyAgICBzZWNvbmQgPSBQeV9NSU4oNTksIHRtLnRtX3NlYyk7CiAKLXN0YXRpYyB0aW1lX3QKLV9QeVRpbWVfRG91YmxlVG9UaW1ldChkb3VibGUgeCkKLXsKLSAgICB0aW1lX3QgcmVzdWx0OwotICAgIGRvdWJsZSBkaWZmOworICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSAmJiBmID09IF9QeVRpbWVfbG9jYWx0aW1lKSB7CisgICAgICAgIGxvbmcgbG9uZyBwcm9iZV9zZWNvbmRzLCByZXN1bHRfc2Vjb25kcywgdHJhbnNpdGlvbjsKIAotICAgIHJlc3VsdCA9ICh0aW1lX3QpeDsKLSAgICAvKiBIb3cgbXVjaCBpbmZvIGRpZCB3ZSBsb3NlPyAgdGltZV90IG1heSBiZSBhbiBpbnRlZ3JhbCBvcgotICAgICAqIGZsb2F0aW5nIHR5cGUsIGFuZCB3ZSBkb24ndCBrbm93IHdoaWNoLiAgSWYgaXQncyBpbnRlZ3JhbCwKLSAgICAgKiB3ZSBkb24ndCBrbm93IHdoZXRoZXIgQyB0cnVuY2F0ZXMsIHJvdW5kcywgcmV0dXJucyB0aGUgZmxvb3IsCi0gICAgICogZXRjLiAgSWYgd2UgbG9zdCBhIHNlY29uZCBvciBtb3JlLCB0aGUgQyByb3VuZGluZyBpcwotICAgICAqIHVucmVhc29uYWJsZSwgb3IgdGhlIGlucHV0IGp1c3QgZG9lc24ndCBmaXQgaW4gYSB0aW1lX3Q7Ci0gICAgICogY2FsbCBpdCBhbiBlcnJvciByZWdhcmRsZXNzLiAgTm90ZSB0aGF0IHRoZSBvcmlnaW5hbCBjYXN0IHRvCi0gICAgICogdGltZV90IGNhbiBjYXVzZSBhIEMgZXJyb3IgdG9vLCBidXQgbm90aGluZyB3ZSBjYW4gZG8gdG8KLSAgICAgKiB3b3JtIGFyb3VuZCB0aGF0LgotICAgICAqLwotICAgIGRpZmYgPSB4IC0gKGRvdWJsZSlyZXN1bHQ7Ci0gICAgaWYgKGRpZmYgPD0gLTEuMCB8fCBkaWZmID49IDEuMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciBwbGF0Zm9ybSB0aW1lX3QiKTsKLSAgICAgICAgcmVzdWx0ID0gKHRpbWVfdCktMTsKKyAgICAgICAgcmVzdWx0X3NlY29uZHMgPSB1dGNfdG9fc2Vjb25kcyh5ZWFyLCBtb250aCwgZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTsKKyAgICAgICAgLyogUHJvYmUgbWF4X2ZvbGRfc2Vjb25kcyB0byBkZXRlY3QgYSBmb2xkLiAqLworICAgICAgICBwcm9iZV9zZWNvbmRzID0gbG9jYWwoZXBvY2ggKyB0aW1ldCAtIG1heF9mb2xkX3NlY29uZHMpOworICAgICAgICBpZiAocHJvYmVfc2Vjb25kcyA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB0cmFuc2l0aW9uID0gcmVzdWx0X3NlY29uZHMgLSBwcm9iZV9zZWNvbmRzIC0gbWF4X2ZvbGRfc2Vjb25kczsKKyAgICAgICAgaWYgKHRyYW5zaXRpb24gPCAwKSB7CisgICAgICAgICAgICBwcm9iZV9zZWNvbmRzID0gbG9jYWwoZXBvY2ggKyB0aW1ldCArIHRyYW5zaXRpb24pOworICAgICAgICAgICAgaWYgKHByb2JlX3NlY29uZHMgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBpZiAocHJvYmVfc2Vjb25kcyA9PSByZXN1bHRfc2Vjb25kcykKKyAgICAgICAgICAgICAgICBmb2xkID0gMTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBSb3VuZCBhIGRvdWJsZSB0byB0aGUgbmVhcmVzdCBsb25nLiAgfHh8IG11c3QgYmUgc21hbGwgZW5vdWdoIHRvIGZpdAotICogaW4gYSBDIGxvbmc7IHRoaXMgaXMgbm90IGNoZWNrZWQuCi0gKi8KLXN0YXRpYyBkb3VibGUKLV9QeVRpbWVfUm91bmRIYWxmRXZlbihkb3VibGUgeCkKLXsKLSAgICBkb3VibGUgcm91bmRlZCA9IHJvdW5kKHgpOwotICAgIGlmIChmYWJzKHgtcm91bmRlZCkgPT0gMC41KQotICAgICAgICAvKiBoYWxmd2F5IGNhc2U6IHJvdW5kIHRvIGV2ZW4gKi8KLSAgICAgICAgcm91bmRlZCA9IDIuMCpyb3VuZCh4LzIuMCk7Ci0gICAgcmV0dXJuIHJvdW5kZWQ7CisgICAgcmV0dXJuIG5ld19kYXRldGltZV9leDIoeWVhciwgbW9udGgsIGRheSwgaG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGUsIHNlY29uZCwgdXMsIHR6aW5mbywgZm9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlUeXBlT2JqZWN0ICopY2xzKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLgpAQCAtNDEyOSwzMiArNDI3OSwxNyBAQAogICogdG8gZ2V0IHRoYXQgbXVjaCBwcmVjaXNpb24gKGUuZy4sIEMgdGltZSgpIGlzbid0IGdvb2QgZW5vdWdoKS4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgZG91YmxlIHRpbWVzdGFtcCwKK2RhdGV0aW1lX2Zyb21fdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgUHlPYmplY3QgKnRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8pCiB7CiAgICAgdGltZV90IHRpbWV0OwotICAgIGRvdWJsZSBmcmFjdGlvbjsKLSAgICBpbnQgdXM7CisgICAgbG9uZyB1czsKIAotICAgIHRpbWV0ID0gX1B5VGltZV9Eb3VibGVUb1RpbWV0KHRpbWVzdGFtcCk7Ci0gICAgaWYgKHRpbWV0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGltZXQsICZ1cywgX1B5VGltZV9ST1VORF9IQUxGX0VWRU4pID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcmFjdGlvbiA9IHRpbWVzdGFtcCAtIChkb3VibGUpdGltZXQ7Ci0gICAgdXMgPSAoaW50KV9QeVRpbWVfUm91bmRIYWxmRXZlbihmcmFjdGlvbiAqIDFlNik7Ci0gICAgaWYgKHVzIDwgMCkgewotICAgICAgICAvKiBUcnVuY2F0aW9uIHRvd2FyZHMgemVybyBpcyBub3Qgd2hhdCB3ZSB3YW50ZWQKLSAgICAgICAgICAgZm9yIG5lZ2F0aXZlIG51bWJlcnMgKFB5dGhvbidzIG1vZCBzZW1hbnRpY3MpICovCi0gICAgICAgIHRpbWV0IC09IDE7Ci0gICAgICAgIHVzICs9IDEwMDAwMDA7Ci0gICAgfQotICAgIC8qIElmIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gb25lIG1pY3Jvc2Vjb25kIHNtYWxsZXIgdGhhbiBhCi0gICAgICogZnVsbCBzZWNvbmQsIHJvdW5kIHVwLiBPdGhlcndpc2UsIFZhbHVlRXJyb3JzIGFyZSByYWlzZWQKLSAgICAgKiBmb3Igc29tZSBmbG9hdHMuICovCi0gICAgaWYgKHVzID09IDEwMDAwMDApIHsKLSAgICAgICAgdGltZXQgKz0gMTsKLSAgICAgICAgdXMgPSAwOwotICAgIH0KLSAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgdXMsIHR6aW5mbyk7CisKKyAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgKGludCl1cywgdHppbmZvKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLgpAQCAtNDIwMSwxNCArNDMzNiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHNlbGYgPSBkYXRldGltZV9iZXN0X3Bvc3NpYmxlKChQeU9iamVjdCAqKXR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHogPT0gUHlfTm9uZSA/IGxvY2FsdGltZSA6IGdtdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9PSBQeV9Ob25lID8gX1B5VGltZV9sb2NhbHRpbWUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfZ210aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6KTsKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6ICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotCi0gICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6LCAmUHlJZF9mcm9tdXRjLCAiTyIsIHNlbGYpOwotICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6LCAmUHlJZF9mcm9tdXRjLCAiTiIsIHNlbGYpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTQyMTksNyArNDM1Miw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfdXRjbm93KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpkdW1teSkKIHsKLSAgICByZXR1cm4gZGF0ZXRpbWVfYmVzdF9wb3NzaWJsZShjbHMsIGdtdGltZSwgUHlfTm9uZSk7CisgICAgcmV0dXJuIGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoY2xzLCBfUHlUaW1lX2dtdGltZSwgUHlfTm9uZSk7CiB9CiAKIC8qIFJldHVybiBuZXcgbG9jYWwgZGF0ZXRpbWUgZnJvbSB0aW1lc3RhbXAgKFB5dGhvbiB0aW1lc3RhbXAgLS0gYSBkb3VibGUpLiAqLwpAQCAtNDIyNywyNiArNDM2MCwyNCBAQAogZGF0ZXRpbWVfZnJvbXRpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIFB5T2JqZWN0ICpzZWxmOwotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidGltZXN0YW1wIiwgInR6IiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJkfE86ZnJvbXRpbWVzdGFtcCIsCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT3xPOmZyb210aW1lc3RhbXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywgJnRpbWVzdGFtcCwgJnR6aW5mbykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZiA9IGRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKGNscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvID09IFB5X05vbmUgPyBsb2NhbHRpbWUgOiBnbXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyA9PSBQeV9Ob25lID8gX1B5VGltZV9sb2NhbHRpbWUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX2dtdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOwogICAgIGlmIChzZWxmICE9IE5VTEwgJiYgdHppbmZvICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotCi0gICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJOIiwgc2VsZik7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtNDI1NSwxMSArNDM4NiwxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3V0Y2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6dXRjZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQotICAgICAgICByZXN1bHQgPSBkYXRldGltZV9mcm9tX3RpbWVzdGFtcChjbHMsIGdtdGltZSwgdGltZXN0YW1wLAorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKKyAgICAgICAgcmVzdWx0ID0gZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoY2xzLCBfUHlUaW1lX2dtdGltZSwgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDI4OCwyNyArNDQxOSwzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2NvbWJpbmUoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZGF0ZSIsICJ0aW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImRhdGUiLCAidGltZSIsICJ0emluZm8iLCBOVUxMfTsKICAgICBQeU9iamVjdCAqZGF0ZTsKICAgICBQeU9iamVjdCAqdGltZTsKKyAgICBQeU9iamVjdCAqdHppbmZvID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPIU8hOmNvbWJpbmUiLCBrZXl3b3JkcywKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyFPIXxPOmNvbWJpbmUiLCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX0RhdGVUeXBlLCAmZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX1RpbWVUeXBlLCAmdGltZSkpIHsKLSAgICAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7Ci0KLSAgICAgICAgaWYgKEhBU1RaSU5GTyh0aW1lKSkKLSAgICAgICAgICAgIHR6aW5mbyA9ICgoUHlEYXRlVGltZV9UaW1lICopdGltZSktPnR6aW5mbzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX1RpbWVUeXBlLCAmdGltZSwgJnR6aW5mbykpIHsKKyAgICAgICAgaWYgKHR6aW5mbyA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoSEFTVFpJTkZPKHRpbWUpKQorICAgICAgICAgICAgICAgIHR6aW5mbyA9ICgoUHlEYXRlVGltZV9UaW1lICopdGltZSktPnR6aW5mbzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0emluZm8gPSBQeV9Ob25lOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoZGF0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKGRhdGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZGF0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUih0aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSU5VVEUodGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JQ1JPU0VDT05EKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihkYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZGF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlDUk9TRUNPTkQodGltZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgREFURV9TRVRfRk9MRChyZXN1bHQsIFRJTUVfR0VUX0ZPTEQodGltZSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDM3Niw3ICs0NTEyLDcgQEAKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBuZXdfZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGRhdGUpID8gZGF0ZS0+dHppbmZvIDogUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGRhdGUpID8gZGF0ZS0+dHppbmZvIDogUHlfTm9uZSwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NDY5LDkgKzQ2MDUsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgICAgICAgICBpZiAob2ZmZGlmZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZGVsdGFfc3VidHJhY3QocmVzdWx0LCBvZmZkaWZmKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgICAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgZGVsdGFfc3VidHJhY3QocmVzdWx0LCBvZmZkaWZmKSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG9mZmRpZmYpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTIxLDYgKzQ2NTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIEdFVF9ZRUFSKHNlbGYpLCBHRVRfTU9OVEgoc2VsZiksIEdFVF9EQVkoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpKTsKICAgICB9CisgICAgaWYgKGJhc2VyZXByICE9IE5VTEwgJiYgREFURV9HRVRfRk9MRChzZWxmKSAhPSAwKQorICAgICAgICBiYXNlcmVwciA9IGFwcGVuZF9rZXl3b3JkX2ZvbGQoYmFzZXJlcHIsIERBVEVfR0VUX0ZPTEQoc2VsZikpOwogICAgIGlmIChiYXNlcmVwciA9PSBOVUxMIHx8ICEgSEFTVFpJTkZPKHNlbGYpKQogICAgICAgICByZXR1cm4gYmFzZXJlcHI7CiAgICAgcmV0dXJuIGFwcGVuZF9rZXl3b3JkX3R6aW5mbyhiYXNlcmVwciwgc2VsZi0+dHppbmZvKTsKQEAgLTQ1MzYsMjUgKzQ2NzIsNTUgQEAKIGRhdGV0aW1lX2lzb2Zvcm1hdChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIGludCBzZXAgPSAnVCc7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNlcCIsIE5VTEx9OworICAgIGNoYXIgKnRpbWVzcGVjID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic2VwIiwgInRpbWVzcGVjIiwgTlVMTH07CiAgICAgY2hhciBidWZmZXJbMTAwXTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGludCB1cyA9IERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOworICAgIHN0YXRpYyBjaGFyICpzcGVjc1tdWzJdID0geworICAgICAgICB7ImhvdXJzIiwgIiUwNGQtJTAyZC0lMDJkJWMlMDJkIn0sCisgICAgICAgIHsibWludXRlcyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkIn0sCisgICAgICAgIHsic2Vjb25kcyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQifSwKKyAgICAgICAgeyJtaWxsaXNlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkLiUwM2QifSwKKyAgICAgICAgeyJtaWNyb3NlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkLiUwNmQifSwKKyAgICB9OworICAgIHNpemVfdCBnaXZlbl9zcGVjOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Qzppc29mb3JtYXQiLCBrZXl3b3JkcywgJnNlcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Q3M6aXNvZm9ybWF0Iiwga2V5d29yZHMsICZzZXAsICZ0aW1lc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh1cykKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDZkIiwKKworICAgIGlmICh0aW1lc3BlYyA9PSBOVUxMIHx8IHN0cmNtcCh0aW1lc3BlYywgImF1dG8iKSA9PSAwKSB7CisgICAgICAgIGlmICh1cyA9PSAwKSB7CisgICAgICAgICAgICAvKiBzZWNvbmRzICovCisgICAgICAgICAgICBnaXZlbl9zcGVjID0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG1pY3Jvc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoZ2l2ZW5fc3BlYyA9IDA7IGdpdmVuX3NwZWMgPCBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpOyBnaXZlbl9zcGVjKyspIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAodGltZXNwZWMsIHNwZWNzW2dpdmVuX3NwZWNdWzBdKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdpdmVuX3NwZWMgPT0gMykgeworICAgICAgICAgICAgICAgICAgICB1cyA9IHVzIC8gMTAwMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZ2l2ZW5fc3BlYyA9PSBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiVW5rbm93biB0aW1lc3BlYyB2YWx1ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KHNwZWNzW2dpdmVuX3NwZWNdWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLCAoaW50KXNlcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksIHVzKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLCAoaW50KXNlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZikpOworICAgIH0KIAogICAgIGlmICghcmVzdWx0IHx8ICFIQVNUWklORk8oc2VsZikpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC00NTgxLDYgKzQ3NDcsNzAgQEAKIC8qIE1pc2NlbGxhbmVvdXMgbWV0aG9kcy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKK2ZsaXBfZm9sZChQeU9iamVjdCAqZHQpCit7CisgICAgcmV0dXJuIG5ld19kYXRldGltZV9leDIoR0VUX1lFQVIoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNUWklORk8oZHQpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeURhdGVUaW1lX0RhdGVUaW1lICopZHQpLT50emluZm8gOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFEQVRFX0dFVF9GT0xEKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGR0KSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfZmxpcF9mb2xkX29mZnNldChQeU9iamVjdCAqZHQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKmZsaXBfZHQ7CisKKyAgICBmbGlwX2R0ID0gZmxpcF9mb2xkKGR0KTsKKyAgICBpZiAoZmxpcF9kdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBkYXRldGltZV91dGNvZmZzZXQoZmxpcF9kdCwgTlVMTCk7CisgICAgUHlfREVDUkVGKGZsaXBfZHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFBFUCA0OTUgZXhjZXB0aW9uOiBXaGVuZXZlciBvbmUgb3IgYm90aCBvZiB0aGUgb3BlcmFuZHMgaW4KKyAqIGludGVyLXpvbmUgY29tcGFyaXNvbiBpcyBzdWNoIHRoYXQgaXRzIHV0Y29mZnNldCgpIGRlcGVuZHMKKyAqIG9uIHRoZSB2YWx1ZSBvZiBpdHMgZm9sZCBmb2xkIGF0dHJpYnV0ZSwgdGhlIHJlc3VsdCBpcyBGYWxzZS4KKyAqCisgKiBSZXR1cm4gMSBpZiBleGNlcHRpb24gYXBwbGllcywgMCBpZiBub3QsICBhbmQgLTEgb24gZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQKK3BlcDQ5NV9lcV9leGNlcHRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9mZnNldF9zZWxmLCBQeU9iamVjdCAqb2Zmc2V0X290aGVyKQoreworICAgIGludCByZXN1bHQgPSAwOworICAgIFB5T2JqZWN0ICpmbGlwX29mZnNldDsKKworICAgIGZsaXBfb2Zmc2V0ID0gZ2V0X2ZsaXBfZm9sZF9vZmZzZXQoc2VsZik7CisgICAgaWYgKGZsaXBfb2Zmc2V0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgIT0gb2Zmc2V0X3NlbGYgJiYKKyAgICAgICAgZGVsdGFfY21wKGZsaXBfb2Zmc2V0LCBvZmZzZXRfc2VsZikpCisgICAgeworICAgICAgICByZXN1bHQgPSAxOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorICAgIFB5X0RFQ1JFRihmbGlwX29mZnNldCk7CisKKyAgICBmbGlwX29mZnNldCA9IGdldF9mbGlwX2ZvbGRfb2Zmc2V0KG90aGVyKTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChmbGlwX29mZnNldCAhPSBvZmZzZXRfb3RoZXIgJiYKKyAgICAgICAgZGVsdGFfY21wKGZsaXBfb2Zmc2V0LCBvZmZzZXRfb3RoZXIpKQorICAgICAgICByZXN1bHQgPSAxOworIGRvbmU6CisgICAgUHlfREVDUkVGKGZsaXBfb2Zmc2V0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwpAQCAtNDYyNyw2ICs0ODU3LDEzIEBACiAgICAgICAgIGRpZmYgPSBtZW1jbXAoKChQeURhdGVUaW1lX0RhdGVUaW1lICopc2VsZiktPmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgKChQeURhdGVUaW1lX0RhdGVUaW1lICopb3RoZXIpLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVUSU1FX0RBVEFTSVpFKTsKKyAgICAgICAgaWYgKChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgJiYgZGlmZiA9PSAwKSB7CisgICAgICAgICAgICBpbnQgZXggPSBwZXA0OTVfZXFfZXhjZXB0aW9uKHNlbGYsIG90aGVyLCBvZmZzZXQxLCBvZmZzZXQyKTsKKyAgICAgICAgICAgIGlmIChleCA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICBpZiAoZXgpCisgICAgICAgICAgICAgICAgZGlmZiA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSBpZiAob2Zmc2V0MSAhPSBQeV9Ob25lICYmIG9mZnNldDIgIT0gUHlfTm9uZSkgewpAQCAtNDY0Miw2ICs0ODc5LDEzIEBACiAgICAgICAgICAgICBkaWZmID0gR0VUX1REX1NFQ09ORFMoZGVsdGEpIHwKICAgICAgICAgICAgICAgICAgICBHRVRfVERfTUlDUk9TRUNPTkRTKGRlbHRhKTsKICAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICAgICAgaWYgKChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgJiYgZGlmZiA9PSAwKSB7CisgICAgICAgICAgICBpbnQgZXggPSBwZXA0OTVfZXFfZXhjZXB0aW9uKHNlbGYsIG90aGVyLCBvZmZzZXQxLCBvZmZzZXQyKTsKKyAgICAgICAgICAgIGlmIChleCA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICBpZiAoZXgpCisgICAgICAgICAgICAgICAgZGlmZiA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSBpZiAob3AgPT0gUHlfRVEpIHsKQEAgLTQ2NjcsOSArNDkxMSwyNiBAQAogZGF0ZXRpbWVfaGFzaChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQogewogICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkgewotICAgICAgICBQeU9iamVjdCAqb2Zmc2V0OwotCi0gICAgICAgIG9mZnNldCA9IGRhdGV0aW1lX3V0Y29mZnNldCgoUHlPYmplY3QgKilzZWxmLCBOVUxMKTsKKyAgICAgICAgUHlPYmplY3QgKm9mZnNldCwgKnNlbGYwOworICAgICAgICBpZiAoREFURV9HRVRfRk9MRChzZWxmKSkgeworICAgICAgICAgICAgc2VsZjAgPSBuZXdfZGF0ZXRpbWVfZXgyKEdFVF9ZRUFSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFB5X1RZUEUoc2VsZikpOworICAgICAgICAgICAgaWYgKHNlbGYwID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2VsZjAgPSAoUHlPYmplY3QgKilzZWxmOworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYwKTsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQgPSBkYXRldGltZV91dGNvZmZzZXQoc2VsZjAsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoc2VsZjApOwogCiAgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQ3MjMsNzYgKzQ5ODQsODAgQEAKICAgICBpbnQgc3MgPSBEQVRFX0dFVF9TRUNPTkQoc2VsZik7CiAgICAgaW50IHVzID0gREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IEhBU1RaSU5GTyhzZWxmKSA/IHNlbGYtPnR6aW5mbyA6IFB5X05vbmU7CisgICAgaW50IGZvbGQgPSBEQVRFX0dFVF9GT0xEKHNlbGYpOwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlpaWlPOnJlcGxhY2UiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpaWlpTyRpOnJlcGxhY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZV9rd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ5LCAmbSwgJmQsICZoaCwgJm1tLCAmc3MsICZ1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR6aW5mbykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8sICZmb2xkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJpaWlpaWlpTyIsIHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjbG9uZSA9IGRhdGV0aW1lX25ldyhQeV9UWVBFKHNlbGYpLCB0dXBsZSwgTlVMTCk7CisKKyAgICBpZiAoY2xvbmUgIT0gTlVMTCkgeworICAgICAgICBpZiAoZm9sZCAhPSAwICYmIGZvbGQgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBEQVRFX1NFVF9GT0xEKGNsb25lLCBmb2xkKTsKKyAgICB9CiAgICAgUHlfREVDUkVGKHR1cGxlKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1sb2NhbF90aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICp1dGNfdGltZSkKK2xvY2FsX3RpbWV6b25lX2Zyb21fdGltZXN0YW1wKHRpbWVfdCB0aW1lc3RhbXApCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RydWN0IHRtICp0aW1lcDsKLSAgICB0aW1lX3QgdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpkZWx0YTsKLSAgICBQeU9iamVjdCAqb25lX3NlY29uZDsKLSAgICBQeU9iamVjdCAqc2Vjb25kczsKKyAgICBzdHJ1Y3QgdG0gbG9jYWxfdGltZV90bTsKICAgICBQeU9iamVjdCAqbmFtZW8gPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnpvbmUgPSBOVUxMOwogCi0gICAgZGVsdGEgPSBuZXdfZGVsdGEoeW1kX3RvX29yZChHRVRfWUVBUih1dGNfdGltZSksIEdFVF9NT05USCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHV0Y190aW1lKSkgLSA3MTkxNjMsCi0gICAgICAgICAgICAgICAgICAgICAgNjAgKiAoNjAgKiBEQVRFX0dFVF9IT1VSKHV0Y190aW1lKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHV0Y190aW1lKSkgKwotICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgMCwgMCk7Ci0gICAgaWYgKGRlbHRhID09IE5VTEwpCisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHRpbWVzdGFtcCwgJmxvY2FsX3RpbWVfdG0pICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG9uZV9zZWNvbmQgPSBuZXdfZGVsdGEoMCwgMSwgMCwgMCk7Ci0gICAgaWYgKG9uZV9zZWNvbmQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBzZWNvbmRzID0gZGl2aWRlX3RpbWVkZWx0YV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGVsdGEgKilkZWx0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvbmVfc2Vjb25kKTsKLSAgICBQeV9ERUNSRUYob25lX3NlY29uZCk7Ci0gICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBQeV9ERUNSRUYoZGVsdGEpOwotICAgIHRpbWVzdGFtcCA9IFB5TG9uZ19Bc0xvbmcoc2Vjb25kcyk7Ci0gICAgUHlfREVDUkVGKHNlY29uZHMpOwotICAgIGlmICh0aW1lc3RhbXAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdGltZXAgPSBsb2NhbHRpbWUoJnRpbWVzdGFtcCk7CiAjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQotICAgIHpvbmUgPSB0aW1lcC0+dG1fem9uZTsKLSAgICBkZWx0YSA9IG5ld19kZWx0YSgwLCB0aW1lcC0+dG1fZ210b2ZmLCAwLCAxKTsKKyAgICB6b25lID0gbG9jYWxfdGltZV90bS50bV96b25lOworICAgIGRlbHRhID0gbmV3X2RlbHRhKDAsIGxvY2FsX3RpbWVfdG0udG1fZ210b2ZmLCAwLCAxKTsKICNlbHNlIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpsb2NhbF90aW1lOwotICAgICAgICBsb2NhbF90aW1lID0gbmV3X2RhdGV0aW1lKHRpbWVwLT50bV95ZWFyICsgMTkwMCwgdGltZXAtPnRtX21vbiArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXAtPnRtX21kYXksIHRpbWVwLT50bV9ob3VyLCB0aW1lcC0+dG1fbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVwLT50bV9zZWMsIERBVEVfR0VUX01JQ1JPU0VDT05EKHV0Y190aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZS0+dHppbmZvKTsKLSAgICAgICAgaWYgKGxvY2FsX3RpbWUgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QobG9jYWxfdGltZSwgKFB5T2JqZWN0Kil1dGNfdGltZSk7Ci0gICAgICAgIC8qIFhYWDogYmVmb3JlIHJlbHlpbmcgb24gdHpuYW1lLCB3ZSBzaG91bGQgY29tcGFyZSBkZWx0YQotICAgICAgICAgICB0byB0aGUgb2Zmc2V0IGltcGxpZWQgYnkgdGltZXpvbmUvYWx0em9uZSAqLwotICAgICAgICBpZiAoZGF5bGlnaHQgJiYgdGltZXAtPnRtX2lzZHN0ID49IDApCi0gICAgICAgICAgICB6b25lID0gdHpuYW1lW3RpbWVwLT50bV9pc2RzdCAlIDJdOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB6b25lID0gdHpuYW1lWzBdOworICAgICAgICBQeU9iamVjdCAqbG9jYWxfdGltZSwgKnV0Y190aW1lOworICAgICAgICBzdHJ1Y3QgdG0gdXRjX3RpbWVfdG07CisgICAgICAgIGNoYXIgYnVmWzEwMF07CisgICAgICAgIHN0cmZ0aW1lKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlWiIsICZsb2NhbF90aW1lX3RtKTsKKyAgICAgICAgem9uZSA9IGJ1ZjsKKyAgICAgICAgbG9jYWxfdGltZSA9IG5ld19kYXRldGltZShsb2NhbF90aW1lX3RtLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZV90bS50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1fc2VjLCAwLCBQeV9Ob25lLCAwKTsKKyAgICAgICAgaWYgKGxvY2FsX3RpbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVRpbWVfZ210aW1lKHRpbWVzdGFtcCwgJnV0Y190aW1lX3RtKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHV0Y190aW1lID0gbmV3X2RhdGV0aW1lKHV0Y190aW1lX3RtLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Y190aW1lX3RtLnRtX3NlYywgMCwgUHlfTm9uZSwgMCk7CisgICAgICAgIGlmICh1dGNfdGltZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobG9jYWxfdGltZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KGxvY2FsX3RpbWUsIHV0Y190aW1lKTsKICAgICAgICAgUHlfREVDUkVGKGxvY2FsX3RpbWUpOworICAgICAgICBQeV9ERUNSRUYodXRjX3RpbWUpOwogICAgIH0KICNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCisgICAgaWYgKGRlbHRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoem9uZSAhPSBOVUxMKSB7CiAgICAgICAgIG5hbWVvID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh6b25lLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgICAgIGlmIChuYW1lbyA9PSBOVUxMKQpAQCAtNDgwNSwxMiArNTA3MCw2NSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitsb2NhbF90aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICp1dGNfdGltZSkKK3sKKyAgICB0aW1lX3QgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICpkZWx0YTsKKyAgICBQeU9iamVjdCAqb25lX3NlY29uZDsKKyAgICBQeU9iamVjdCAqc2Vjb25kczsKKworICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QoKFB5T2JqZWN0ICopdXRjX3RpbWUsIFB5RGF0ZVRpbWVfRXBvY2gpOworICAgIGlmIChkZWx0YSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBvbmVfc2Vjb25kID0gbmV3X2RlbHRhKDAsIDEsIDAsIDApOworICAgIGlmIChvbmVfc2Vjb25kID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlY29uZHMgPSBkaXZpZGVfdGltZWRlbHRhX3RpbWVkZWx0YSgoUHlEYXRlVGltZV9EZWx0YSAqKWRlbHRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9uZV9zZWNvbmQpOworICAgIFB5X0RFQ1JFRihvbmVfc2Vjb25kKTsKKyAgICBQeV9ERUNSRUYoZGVsdGEpOworICAgIGlmIChzZWNvbmRzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHRpbWVzdGFtcCA9IF9QeUxvbmdfQXNUaW1lX3Qoc2Vjb25kcyk7CisgICAgUHlfREVDUkVGKHNlY29uZHMpOworICAgIGlmICh0aW1lc3RhbXAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGxvY2FsX3RpbWV6b25lX2Zyb21fdGltZXN0YW1wKHRpbWVzdGFtcCk7Cit9CisKK3N0YXRpYyBsb25nIGxvbmcKK2xvY2FsX3RvX3NlY29uZHMoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwKKyAgICAgICAgICAgICAgICAgaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCBmb2xkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2xvY2FsX3RpbWV6b25lX2Zyb21fbG9jYWwoUHlEYXRlVGltZV9EYXRlVGltZSAqbG9jYWxfZHQpCit7CisgICAgbG9uZyBsb25nIHNlY29uZHM7CisgICAgdGltZV90IHRpbWVzdGFtcDsKKyAgICBzZWNvbmRzID0gbG9jYWxfdG9fc2Vjb25kcyhHRVRfWUVBUihsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChsb2NhbF9kdCkpOworICAgIGlmIChzZWNvbmRzID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBYWFg6IGFkZCBib3VuZHMgY2hlY2sgKi8KKyAgICB0aW1lc3RhbXAgPSBzZWNvbmRzIC0gZXBvY2g7CisgICAgcmV0dXJuIGxvY2FsX3RpbWV6b25lX2Zyb21fdGltZXN0YW1wKHRpbWVzdGFtcCk7Cit9CisKIHN0YXRpYyBQeURhdGVUaW1lX0RhdGVUaW1lICoKIGRhdGV0aW1lX2FzdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBQeURhdGVUaW1lX0RhdGVUaW1lICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKm9mZnNldDsKICAgICBQeU9iamVjdCAqdGVtcDsKKyAgICBQeU9iamVjdCAqc2VsZl90emluZm87CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CiAKQEAgLTQ4MjEsMjcgKzUxMzksMjcgQEAKICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCi0gICAgICAgIGdvdG8gTmVlZEF3YXJlOworICAgIGlmICghSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKSB7CisgICAgICAgIHNlbGZfdHppbmZvID0gbG9jYWxfdGltZXpvbmVfZnJvbV9sb2NhbChzZWxmKTsKKyAgICAgICAgaWYgKHNlbGZfdHppbmZvID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9IGVsc2UgeworICAgICAgICBzZWxmX3R6aW5mbyA9IHNlbGYtPnR6aW5mbzsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGZfdHppbmZvKTsKKyAgICB9CiAKICAgICAvKiBDb252ZXJzaW9uIHRvIHNlbGYncyBvd24gdGltZSB6b25lIGlzIGEgTk9QLiAqLwotICAgIGlmIChzZWxmLT50emluZm8gPT0gdHppbmZvKSB7CisgICAgaWYgKHNlbGZfdHppbmZvID09IHR6aW5mbykgeworICAgICAgICBQeV9ERUNSRUYoc2VsZl90emluZm8pOwogICAgICAgICBQeV9JTkNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBzZWxmOwogICAgIH0KIAogICAgIC8qIENvbnZlcnQgc2VsZiB0byBVVEMuICovCi0gICAgb2Zmc2V0ID0gZGF0ZXRpbWVfdXRjb2Zmc2V0KChQeU9iamVjdCAqKXNlbGYsIE5VTEwpOworICAgIG9mZnNldCA9IGNhbGxfdXRjb2Zmc2V0KHNlbGZfdHppbmZvLCAoUHlPYmplY3QgKilzZWxmKTsKKyAgICBQeV9ERUNSRUYoc2VsZl90emluZm8pOwogICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG9mZnNldCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvZmZzZXQpOwotICAgICAgTmVlZEF3YXJlOgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImFzdGltZXpvbmUoKSBjYW5ub3QgYmUgYXBwbGllZCB0byAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiYSBuYWl2ZSBkYXRldGltZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICAvKiByZXN1bHQgPSBzZWxmIC0gb2Zmc2V0ICovCiAgICAgcmVzdWx0ID0gKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCwgLTEpOwpAQCAtNDg0OSw2ICs1MTY3LDMyIEBACiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIC8qIE1ha2Ugc3VyZSByZXN1bHQgaXMgYXdhcmUgYW5kIFVUQy4gKi8KKyAgICBpZiAoIUhBU1RaSU5GTyhyZXN1bHQpKSB7CisgICAgICAgIHRlbXAgPSAoUHlPYmplY3QgKilyZXN1bHQ7CisgICAgICAgIHJlc3VsdCA9IChQeURhdGVUaW1lX0RhdGVUaW1lICopCisgICAgICAgICAgICAgICAgICAgbmV3X2RhdGV0aW1lX2V4MihHRVRfWUVBUihyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyZXN1bHQpKTsKKyAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFJlc3VsdCBpcyBhbHJlYWR5IGF3YXJlIC0ganVzdCByZXBsYWNlIHR6aW5mby4gKi8KKyAgICAgICAgdGVtcCA9IHJlc3VsdC0+dHppbmZvOworICAgICAgICByZXN1bHQtPnR6aW5mbyA9IFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0LT50emluZm8pOworICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgfQorCiAgICAgLyogQXR0YWNoIG5ldyB0emluZm8gYW5kIGxldCBmcm9tdXRjKCkgZG8gdGhlIHJlc3QuICovCiAgICAgdGVtcCA9IHJlc3VsdC0+dHppbmZvOwogICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSkgewpAQCAtNDg5Niw2ICs1MjQwLDU2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOwogfQogCitzdGF0aWMgbG9uZyBsb25nCitsb2NhbF90b19zZWNvbmRzKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksCisgICAgICAgICAgICAgICAgIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgZm9sZCkKK3sKKyAgICBsb25nIGxvbmcgdCwgYSwgYiwgdTEsIHUyLCB0MSwgdDIsIGx0OworICAgIHQgPSB1dGNfdG9fc2Vjb25kcyh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCk7CisgICAgLyogT3VyIGdvYWwgaXMgdG8gc29sdmUgdCA9IGxvY2FsKHUpIGZvciB1LiAqLworICAgIGx0ID0gbG9jYWwodCk7CisgICAgaWYgKGx0ID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgYSA9IGx0IC0gdDsKKyAgICB1MSA9IHQgLSBhOworICAgIHQxID0gbG9jYWwodTEpOworICAgIGlmICh0MSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MSA9PSB0KSB7CisgICAgICAgIC8qIFdlIGZvdW5kIG9uZSBzb2x1dGlvbiwgYnV0IGl0IG1heSBub3QgYmUgdGhlIG9uZSB3ZSBuZWVkLgorICAgICAgICAgKiBMb29rIGZvciBhbiBlYXJsaWVyIHNvbHV0aW9uIChpZiBgZm9sZGAgaXMgMCksIG9yIGEKKyAgICAgICAgICogbGF0ZXIgb25lIChpZiBgZm9sZGAgaXMgMSkuICovCisgICAgICAgIGlmIChmb2xkKQorICAgICAgICAgICAgdTIgPSB1MSArIG1heF9mb2xkX3NlY29uZHM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHUyID0gdTEgLSBtYXhfZm9sZF9zZWNvbmRzOworICAgICAgICBsdCA9IGxvY2FsKHUyKTsKKyAgICAgICAgaWYgKGx0ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBiID0gbHQgLSB1MjsKKyAgICAgICAgaWYgKGEgPT0gYikKKyAgICAgICAgICAgIHJldHVybiB1MTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGIgPSB0MSAtIHUxOworICAgICAgICBhc3NlcnQoYSAhPSBiKTsKKyAgICB9CisgICAgdTIgPSB0IC0gYjsKKyAgICB0MiA9IGxvY2FsKHUyKTsKKyAgICBpZiAodDIgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodDIgPT0gdCkKKyAgICAgICAgcmV0dXJuIHUyOworICAgIGlmICh0MSA9PSB0KQorICAgICAgICByZXR1cm4gdTE7CisgICAgLyogV2UgaGF2ZSBmb3VuZCBib3RoIG9mZnNldHMgYSBhbmQgYiwgYnV0IG5laXRoZXIgdCAtIGEgbm9yIHQgLSBiIGlzCisgICAgICogYSBzb2x1dGlvbi4gIFRoaXMgbWVhbnMgdCBpcyBpbiB0aGUgZ2FwLiAqLworICAgIHJldHVybiBmb2xkP1B5X01JTih1MSwgdTIpOlB5X01BWCh1MSwgdTIpOworfQorCisvKiBkYXRlKDE5NzAsMSwxKS50b29yZGluYWwoKSA9PSA3MTkxNjMgKi8KKyNkZWZpbmUgRVBPQ0hfU0VDT05EUyAoNzE5MTYzTEwgKiAyNCAqIDYwICogNjApCisKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV90aW1lc3RhbXAoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKIHsKQEAgLTQ5MTAsMzMgKzUzMDQsMTggQEAKICAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0cnVjdCB0bSB0aW1lOwotICAgICAgICB0aW1lX3QgdGltZXN0YW1wOwotICAgICAgICBtZW1zZXQoKHZvaWQgKikgJnRpbWUsICdcMCcsIHNpemVvZihzdHJ1Y3QgdG0pKTsKLSAgICAgICAgdGltZS50bV95ZWFyID0gR0VUX1lFQVIoc2VsZikgLSAxOTAwOwotICAgICAgICB0aW1lLnRtX21vbiA9IEdFVF9NT05USChzZWxmKSAtIDE7Ci0gICAgICAgIHRpbWUudG1fbWRheSA9IEdFVF9EQVkoc2VsZik7Ci0gICAgICAgIHRpbWUudG1faG91ciA9IERBVEVfR0VUX0hPVVIoc2VsZik7Ci0gICAgICAgIHRpbWUudG1fbWluID0gREFURV9HRVRfTUlOVVRFKHNlbGYpOwotICAgICAgICB0aW1lLnRtX3NlYyA9IERBVEVfR0VUX1NFQ09ORChzZWxmKTsKLSAgICAgICAgdGltZS50bV93ZGF5ID0gLTE7Ci0gICAgICAgIHRpbWUudG1faXNkc3QgPSAtMTsKLSAgICAgICAgdGltZXN0YW1wID0gbWt0aW1lKCZ0aW1lKTsKLSAgICAgICAgaWYgKHRpbWVzdGFtcCA9PSAodGltZV90KSgtMSkKLSNpZm5kZWYgX0FJWAotICAgICAgICAgICAgLyogUmV0dXJuIHZhbHVlIG9mIC0xIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gYW4gZXJyb3IsCi0gICAgICAgICAgICAgKiBidXQgdG1fd2RheSBjYW5ub3QgcmVtYWluIHNldCB0byAtMSBpZiBta3RpbWUgc3VjY2VlZGVkLiAqLwotICAgICAgICAgICAgJiYgdGltZS50bV93ZGF5ID09IC0xCi0jZWxzZQotICAgICAgICAgICAgLyogb24gQUlYLCB0bV93ZGF5IGlzIGFsd2F5cyBzZXRzLCBldmVuIG9uIGVycm9yICovCi0jZW5kaWYKLSAgICAgICAgICApCi0gICAgICAgIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIGxvbmcgbG9uZyBzZWNvbmRzOworICAgICAgICBzZWNvbmRzID0gbG9jYWxfdG9fc2Vjb25kcyhHRVRfWUVBUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChzZWxmKSk7CisgICAgICAgIGlmIChzZWNvbmRzID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHRpbWVzdGFtcCArIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpIC8gMWU2KTsKKyAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY29uZHMgLSBFUE9DSF9TRUNPTkRTICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpIC8gMWU2KTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQ5NTYsNyArNTMzNSw4IEBACiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQoc2VsZikpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDk2Niw3ICs1MzQ2LDggQEAKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICBHRVRfRFRfVFpJTkZPKHNlbGYpKTsKKyAgICAgICAgICAgICAgICAgICAgR0VUX0RUX1RaSU5GTyhzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChzZWxmKSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01MDE4LDcgKzUzOTksNyBAQAogICogX19nZXRzdGF0ZV9fIGlzbid0IGV4cG9zZWQuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9nZXRzdGF0ZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQorZGF0ZXRpbWVfZ2V0c3RhdGUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgaW50IHByb3RvKQogewogICAgIFB5T2JqZWN0ICpiYXNlc3RhdGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CkBAIC01MDI2LDYgKzU0MDcsOSBAQAogICAgIGJhc2VzdGF0ZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilzZWxmLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVUSU1FX0RBVEFTSVpFKTsKICAgICBpZiAoYmFzZXN0YXRlICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHByb3RvID4gMyAmJiBEQVRFX0dFVF9GT0xEKHNlbGYpKQorICAgICAgICAgICAgLyogU2V0IHRoZSBmaXJzdCBiaXQgb2YgdGhlIHRoaXJkIGJ5dGUgKi8KKyAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGJhc2VzdGF0ZSlbMl0gfD0gKDEgPDwgNyk7CiAgICAgICAgIGlmICghIEhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfUGFjaygxLCBiYXNlc3RhdGUpOwogICAgICAgICBlbHNlCkBAIC01MDM2LDkgKzU0MjAsMTMgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX3JlZHVjZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJnKQorZGF0ZXRpbWVfcmVkdWNlKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgZGF0ZXRpbWVfZ2V0c3RhdGUoc2VsZikpOworICAgIGludCBwcm90byA9IDA7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIGRhdGV0aW1lX2dldHN0YXRlKHNlbGYsIHByb3RvKSk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBkYXRldGltZV9tZXRob2RzW10gPSB7CkBAIC01MDkzLDkgKzU0ODEsMTIgQEAKIAogICAgIHsiaXNvZm9ybWF0IiwgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfaXNvZm9ybWF0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoIltzZXBdIC0+IHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQsICIKLSAgICAgICAgICAgICAgICJZWVlZLU1NLUREVEhIOk1NOlNTWy5tbW1tbW1dWytISDpNTV0uXG5cbiIKKyAgICAgICAgICAgICAgICJZWVlZLU1NLUREVFtISFs6TU1bOlNTWy5tbW1bdXV1XV1dXV1bK0hIOk1NXS5cbiIKICAgICAgICAgICAgICAgICJzZXAgaXMgdXNlZCB0byBzZXBhcmF0ZSB0aGUgeWVhciBmcm9tIHRoZSB0aW1lLCBhbmQgIgotICAgICAgICAgICAgICAgImRlZmF1bHRzIHRvICdUJy4iKX0sCisgICAgICAgICAgICAgICAiZGVmYXVsdHMgdG8gJ1QnLlxuIgorICAgICAgICAgICAgICAgInRpbWVzcGVjIHNwZWNpZmllcyB3aGF0IGNvbXBvbmVudHMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZSIKKyAgICAgICAgICAgICAgICIgKGFsbG93ZWQgdmFsdWVzIGFyZSAnYXV0bycsICdob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnLCIKKyAgICAgICAgICAgICAgICIgJ21pbGxpc2Vjb25kcycsIGFuZCAnbWljcm9zZWNvbmRzJykuXG4iKX0sCiAKICAgICB7InV0Y29mZnNldCIsICAgICAgIChQeUNGdW5jdGlvbilkYXRldGltZV91dGNvZmZzZXQsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIlJldHVybiBzZWxmLnR6aW5mby51dGNvZmZzZXQoc2VsZikuIil9LApAQCAtNTExMiwxMyArNTUwMywxMyBAQAogICAgIHsiYXN0aW1lem9uZSIsICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfYXN0aW1lem9uZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJ0eiAtPiBjb252ZXJ0IHRvIGxvY2FsIHRpbWUgaW4gbmV3IHRpbWV6b25lIHR6XG4iKX0sCiAKLSAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfcmVkdWNlLCAgICAgTUVUSF9OT0FSR1MsCi0gICAgIFB5RG9jX1NUUigiX19yZWR1Y2VfXygpIC0+IChjbHMsIHN0YXRlKSIpfSwKKyAgICB7Il9fcmVkdWNlX2V4X18iLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfcmVkdWNlLCAgICAgTUVUSF9WQVJBUkdTLAorICAgICBQeURvY19TVFIoIl9fcmVkdWNlX2V4X18ocHJvdG8pIC0+IChjbHMsIHN0YXRlKSIpfSwKIAogICAgIHtOVUxMLCAgICAgIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciBkYXRldGltZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBkYXRldGltZV9kb2NbXSA9CiBQeURvY19TVFIoImRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXlbLCBob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLHR6aW5mb11dXV1dKVxuXAogXG5cCiBUaGUgeWVhciwgbW9udGggYW5kIGRheSBhcmd1bWVudHMgYXJlIHJlcXVpcmVkLiB0emluZm8gbWF5IGJlIE5vbmUsIG9yIGFuXG5cCkBAIC01MjAxLDcgKzU1OTIsOSBAQAogICAgIG5ld190aW1lX2V4LAogICAgIG5ld19kZWx0YV9leCwKICAgICBkYXRldGltZV9mcm9tdGltZXN0YW1wLAotICAgIGRhdGVfZnJvbXRpbWVzdGFtcAorICAgIGRhdGVfZnJvbXRpbWVzdGFtcCwKKyAgICBuZXdfZGF0ZXRpbWVfZXgyLAorICAgIG5ld190aW1lX2V4MgogfTsKIAogCkBAIC01MjgyLDEyICs1Njc1LDEyIEBACiAgICAgLyogdGltZSB2YWx1ZXMgKi8KICAgICBkID0gUHlEYXRlVGltZV9UaW1lVHlwZS50cF9kaWN0OwogCi0gICAgeCA9IG5ld190aW1lKDAsIDAsIDAsIDAsIFB5X05vbmUpOworICAgIHggPSBuZXdfdGltZSgwLCAwLCAwLCAwLCBQeV9Ob25lLCAwKTsKICAgICBpZiAoeCA9PSBOVUxMIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtaW4iLCB4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKIAotICAgIHggPSBuZXdfdGltZSgyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUpOworICAgIHggPSBuZXdfdGltZSgyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUsIDApOwogICAgIGlmICh4ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1heCIsIHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwpAQCAtNTMwMCwxMiArNTY5MywxMiBAQAogICAgIC8qIGRhdGV0aW1lIHZhbHVlcyAqLwogICAgIGQgPSBQeURhdGVUaW1lX0RhdGVUaW1lVHlwZS50cF9kaWN0OwogCi0gICAgeCA9IG5ld19kYXRldGltZSgxLCAxLCAxLCAwLCAwLCAwLCAwLCBQeV9Ob25lKTsKKyAgICB4ID0gbmV3X2RhdGV0aW1lKDEsIDEsIDEsIDAsIDAsIDAsIDAsIFB5X05vbmUsIDApOwogICAgIGlmICh4ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1pbiIsIHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwogCi0gICAgeCA9IG5ld19kYXRldGltZShNQVhZRUFSLCAxMiwgMzEsIDIzLCA1OSwgNTksIDk5OTk5OSwgUHlfTm9uZSk7CisgICAgeCA9IG5ld19kYXRldGltZShNQVhZRUFSLCAxMiwgMzEsIDIzLCA1OSwgNTksIDk5OTk5OSwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKHggPT0gTlVMTCB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAibWF4IiwgeCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYoeCk7CkBAIC01MzQ3LDcgKzU3NDAsNyBAQAogCiAgICAgLyogRXBvY2ggKi8KICAgICBQeURhdGVUaW1lX0Vwb2NoID0gbmV3X2RhdGV0aW1lKDE5NzAsIDEsIDEsIDAsIDAsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQywgMCk7CiAgICAgaWYgKFB5RGF0ZVRpbWVfRXBvY2ggPT0gTlVMTCkKICAgICAgIHJldHVybiBOVUxMOwogCkBAIC01MzgyLDE5ICs1Nzc1LDE5IEBACiAgICAgLyogQSA0LXllYXIgY3ljbGUgaGFzIGFuIGV4dHJhIGxlYXAgZGF5IG92ZXIgd2hhdCB3ZSdkIGdldCBmcm9tCiAgICAgICogcGFzdGluZyB0b2dldGhlciA0IHNpbmdsZSB5ZWFycy4KICAgICAgKi8KLSAgICBhc3NlcnQoREk0WSA9PSA0ICogMzY1ICsgMSk7CisgICAgUHlfQlVJTERfQVNTRVJUKERJNFkgPT0gNCAqIDM2NSArIDEpOwogICAgIGFzc2VydChESTRZID09IGRheXNfYmVmb3JlX3llYXIoNCsxKSk7CiAKICAgICAvKiBTaW1pbGFybHksIGEgNDAwLXllYXIgY3ljbGUgaGFzIGFuIGV4dHJhIGxlYXAgZGF5IG92ZXIgd2hhdCB3ZSdkCiAgICAgICogZ2V0IGZyb20gcGFzdGluZyB0b2dldGhlciA0IDEwMC15ZWFyIGN5Y2xlcy4KICAgICAgKi8KLSAgICBhc3NlcnQoREk0MDBZID09IDQgKiBESTEwMFkgKyAxKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoREk0MDBZID09IDQgKiBESTEwMFkgKyAxKTsKICAgICBhc3NlcnQoREk0MDBZID09IGRheXNfYmVmb3JlX3llYXIoNDAwKzEpKTsKIAogICAgIC8qIE9UT0gsIGEgMTAwLXllYXIgY3ljbGUgaGFzIG9uZSBmZXdlciBsZWFwIGRheSB0aGFuIHdlJ2QgZ2V0IGZyb20KICAgICAgKiBwYXN0aW5nIHRvZ2V0aGVyIDI1IDQteWVhciBjeWNsZXMuCiAgICAgICovCi0gICAgYXNzZXJ0KERJMTAwWSA9PSAyNSAqIERJNFkgLSAxKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoREkxMDBZID09IDI1ICogREk0WSAtIDEpOwogICAgIGFzc2VydChESTEwMFkgPT0gZGF5c19iZWZvcmVfeWVhcigxMDArMSkpOwogCiAgICAgb25lID0gUHlMb25nX0Zyb21Mb25nKDEpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwppbmRleCBlYTg3OTBiLi44MDQ5NzhhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwpAQCAtMTQsMTYgKzE0LDE2IEBACiAgKi8KICNpZiBkZWZpbmVkKEhBVkVfTkRCTV9IKQogI2luY2x1ZGUgPG5kYm0uaD4KLXN0YXRpYyBjaGFyICp3aGljaF9kYm0gPSAiR05VIGdkYm0iOyAgLyogRU1YIHBvcnQgb2YgR0RCTSAqLworc3RhdGljIGNvbnN0IGNoYXIgd2hpY2hfZGJtW10gPSAiR05VIGdkYm0iOyAgLyogRU1YIHBvcnQgb2YgR0RCTSAqLwogI2VsaWYgZGVmaW5lZChIQVZFX0dEQk1fTkRCTV9IKQogI2luY2x1ZGUgPGdkYm0vbmRibS5oPgotc3RhdGljIGNoYXIgKndoaWNoX2RibSA9ICJHTlUgZ2RibSI7CitzdGF0aWMgY29uc3QgY2hhciB3aGljaF9kYm1bXSA9ICJHTlUgZ2RibSI7CiAjZWxpZiBkZWZpbmVkKEhBVkVfR0RCTV9EQVNIX05EQk1fSCkKICNpbmNsdWRlIDxnZGJtLW5kYm0uaD4KLXN0YXRpYyBjaGFyICp3aGljaF9kYm0gPSAiR05VIGdkYm0iOworc3RhdGljIGNvbnN0IGNoYXIgd2hpY2hfZGJtW10gPSAiR05VIGdkYm0iOwogI2VsaWYgZGVmaW5lZChIQVZFX0JFUktEQl9IKQogI2luY2x1ZGUgPGRiLmg+Ci1zdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkJlcmtlbGV5IERCIjsKK3N0YXRpYyBjb25zdCBjaGFyIHdoaWNoX2RibVtdID0gIkJlcmtlbGV5IERCIjsKICNlbHNlCiAjZXJyb3IgIk5vIG5kYm0uaCBhdmFpbGFibGUhIgogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKaW5kZXggZTE1OTQxYS4uZmNjMWYxNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYwpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiAjaW5jbHVkZSAiZG9jc3RyaW5ncy5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgogCiAKICNpZiAhZGVmaW5lZChNUERfVkVSU0lPTl9IRVgpIHx8IE1QRF9WRVJTSU9OX0hFWCA8IDB4MDIwNDAxMDAKQEAgLTE4OTAsMTIgKzE4ODksMTMgQEAKIC8qIFJldHVybiB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24gb2YgYSBudW1lcmljIFVuaWNvZGUgc3RyaW5nLiBUaGUgbnVtZXJpYwogICAgc3RyaW5nIG1heSBjb250YWluIGFzY2lpIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFsxLCAxMjddLCBhbnkgVW5pY29kZQogICAgc3BhY2UgYW5kIGFueSB1bmljb2RlIGRpZ2l0LiBJZiBzdHJpcF93cyBpcyB0cnVlLCBsZWFkaW5nIGFuZCB0cmFpbGluZwotICAgd2hpdGVzcGFjZSBpcyBzdHJpcHBlZC4KKyAgIHdoaXRlc3BhY2UgaXMgc3RyaXBwZWQuIElmIGlnbm9yZV91bmRlcnNjb3JlcyBpcyB0cnVlLCB1bmRlcnNjb3JlcyBhcmUKKyAgIGlnbm9yZWQuCiAKICAgIFJldHVybiBOVUxMIGlmIG1hbGxvYyBmYWlscyBhbmQgYW4gZW1wdHkgc3RyaW5nIGlmIGludmFsaWQgY2hhcmFjdGVycwogICAgYXJlIGZvdW5kLiAqLwogc3RhdGljIGNoYXIgKgotbnVtZXJpY19hc19hc2NpaShjb25zdCBQeU9iamVjdCAqdSwgaW50IHN0cmlwX3dzKQorbnVtZXJpY19hc19hc2NpaShjb25zdCBQeU9iamVjdCAqdSwgaW50IHN0cmlwX3dzLCBpbnQgaWdub3JlX3VuZGVyc2NvcmVzKQogewogICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKICAgICB2b2lkICpkYXRhOwpAQCAtMTkzMCw2ICsxOTMwLDkgQEAKIAogICAgIGZvciAoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKTsKKyAgICAgICAgaWYgKGlnbm9yZV91bmRlcnNjb3JlcyAmJiBjaCA9PSAnXycpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIGlmICgwIDwgY2ggJiYgY2ggPD0gMTI3KSB7CiAgICAgICAgICAgICAqY3ArKyA9IGNoOwogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMDEyLDcgKzIwMTUsNyBAQAogICAgIFB5T2JqZWN0ICpkZWM7CiAgICAgY2hhciAqczsKIAotICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDApOworICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDAsIDApOwogICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjAzMiw3ICsyMDM1LDcgQEAKICAgICBQeU9iamVjdCAqZGVjOwogICAgIGNoYXIgKnM7CiAKLSAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAxKTsKKyAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAxLCAxKTsKICAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTMzOTQsNiArMzM5NywxMDUgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIHB5bG9uZzsKIH0KIAorLyogQ29udmVydCBhIERlY2ltYWwgdG8gaXRzIGV4YWN0IGludGVnZXIgcmF0aW8gcmVwcmVzZW50YXRpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2FzX2ludGVnZXJfcmF0aW8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqbnVtZXJhdG9yID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGVub21pbmF0b3IgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleHBvbmVudCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBtcGRfc3NpemVfdCBleHA7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKE1QRChzZWxmKSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc25hbihNUEQoc2VsZikpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworCisgICAgdG1wID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghbXBkX3Fjb3B5KE1QRCh0bXApLCBNUEQoc2VsZiksICZzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBleHAgPSBtcGRfaXN6ZXJvKE1QRCh0bXApKSA/IDAgOiBNUEQodG1wKS0+ZXhwOworICAgIE1QRCh0bXApLT5leHAgPSAwOworCisgICAgLyogY29udGV4dCBhbmQgcm91bmRpbmcgYXJlIHVudXNlZCBoZXJlOiB0aGUgY29udmVyc2lvbiBpcyBleGFjdCAqLworICAgIG51bWVyYXRvciA9IGRlY19hc19sb25nKHRtcCwgY29udGV4dCwgTVBEX1JPVU5EX0ZMT09SKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBleHBvbmVudCA9IFB5TG9uZ19Gcm9tU3NpemVfdChleHAgPCAwID8gLWV4cCA6IGV4cCk7CisgICAgaWYgKGV4cG9uZW50ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICB0bXAgPSBQeUxvbmdfRnJvbUxvbmcoMTApOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIFB5X1NFVFJFRihleHBvbmVudCwgX3B5X2xvbmdfcG93ZXIodG1wLCBleHBvbmVudCwgUHlfTm9uZSkpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIGlmIChleHBvbmVudCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKGV4cCA+PSAwKSB7CisgICAgICAgIFB5X1NFVFJFRihudW1lcmF0b3IsIF9weV9sb25nX211bHRpcGx5KG51bWVyYXRvciwgZXhwb25lbnQpKTsKKyAgICAgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGRlbm9taW5hdG9yID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgICAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZGVub21pbmF0b3IgPSBleHBvbmVudDsKKyAgICAgICAgZXhwb25lbnQgPSBOVUxMOworICAgICAgICB0bXAgPSBfUHlMb25nX0dDRChudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X1NFVFJFRihudW1lcmF0b3IsIF9weV9sb25nX2Zsb29yX2RpdmlkZShudW1lcmF0b3IsIHRtcCkpOworICAgICAgICBQeV9TRVRSRUYoZGVub21pbmF0b3IsIF9weV9sb25nX2Zsb29yX2RpdmlkZShkZW5vbWluYXRvciwgdG1wKSk7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICBpZiAobnVtZXJhdG9yID09IE5VTEwgfHwgZGVub21pbmF0b3IgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdCA9IFB5VHVwbGVfUGFjaygyLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKKworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGV4cG9uZW50KTsKKyAgICBQeV9YREVDUkVGKGRlbm9taW5hdG9yKTsKKyAgICBQeV9YREVDUkVGKG51bWVyYXRvcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIFB5RGVjX1RvSW50ZWdyYWxWYWx1ZShQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC00NzAyLDYgKzQ4MDQsNyBAQAogICAvKiBNaXNjZWxsYW5lb3VzICovCiAgIHsgImZyb21fZmxvYXQiLCBkZWNfZnJvbV9mbG9hdCwgTUVUSF9PfE1FVEhfQ0xBU1MsIGRvY19mcm9tX2Zsb2F0IH0sCiAgIHsgImFzX3R1cGxlIiwgUHlEZWNfQXNUdXBsZSwgTUVUSF9OT0FSR1MsIGRvY19hc190dXBsZSB9LAorICB7ICJhc19pbnRlZ2VyX3JhdGlvIiwgZGVjX2FzX2ludGVnZXJfcmF0aW8sIE1FVEhfTk9BUkdTLCBkb2NfYXNfaW50ZWdlcl9yYXRpbyB9LAogCiAgIC8qIFNwZWNpYWwgbWV0aG9kcyAqLwogICB7ICJfX2NvcHlfXyIsIGRlY19jb3B5LCBNRVRIX05PQVJHUywgTlVMTCB9LApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmggYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAppbmRleCA3MTAyOWE5Li5mN2ZkNmU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaApAQCAtNzAsNiArNzAsMTUgQEAKIFJldHVybiBhIHR1cGxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuXG5cCiBcbiIpOwogCitQeURvY19TVFJWQVIoZG9jX2FzX2ludGVnZXJfcmF0aW8sCisiYXNfaW50ZWdlcl9yYXRpbygkc2VsZiwgLylcbi0tXG5cblwKK0RlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpIC0+IChpbnQsIGludClcblwKK1xuXAorUmV0dXJuIGEgcGFpciBvZiBpbnRlZ2Vycywgd2hvc2UgcmF0aW8gaXMgZXhhY3RseSBlcXVhbCB0byB0aGUgb3JpZ2luYWxcblwKK0RlY2ltYWwgYW5kIHdpdGggYSBwb3NpdGl2ZSBkZW5vbWluYXRvci4gVGhlIHJhdGlvIGlzIGluIGxvd2VzdCB0ZXJtcy5cblwKK1JhaXNlIE92ZXJmbG93RXJyb3Igb24gaW5maW5pdGllcyBhbmQgYSBWYWx1ZUVycm9yIG9uIE5hTnMuXG5cCitcbiIpOworCiBQeURvY19TVFJWQVIoZG9jX2Nhbm9uaWNhbCwKICJjYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCiBSZXR1cm4gdGhlIGNhbm9uaWNhbCBlbmNvZGluZyBvZiB0aGUgYXJndW1lbnQuICBDdXJyZW50bHksIHRoZSBlbmNvZGluZ1xuXApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKaW5kZXggMzVkZTZiOC4uZGZlMTUyMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSAiY29uc3RhbnRzLmgiCi0jaW5jbHVkZSAibWVtb3J5LmgiCiAjaW5jbHVkZSAidHlwZWFyaXRoLmgiCiAjaW5jbHVkZSAiYmFzZWFyaXRoLmgiCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYwppbmRleCBhNDVhNDI5Li4zYWFkZmIwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSAiYml0cy5oIgogI2luY2x1ZGUgImNvbnN0YW50cy5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgogI2luY2x1ZGUgImlvLmgiCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jCmluZGV4IDBmNDFmZTUuLmE4NTRlMDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYwpAQCAtMzAsNyArMzAsMTIgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgIm1wYWxsb2MuaCIKKworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjMyKQorI2VuZGlmCiAKIAogLyogR3VhcmFudGVlZCBtaW5pbXVtIGFsbG9jYXRpb24gZm9yIGEgY29lZmZpY2llbnQuIE1heSBiZSBjaGFuZ2VkIG9uY2UKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaApzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBNb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCnJlbmFtZSB0byBNb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaAppbmRleCA5Yzk4ZDFhLi5lZmQ3MTE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBhbGxvYy5oCkBAIC0yNiw4ICsyNiw4IEBACiAgKi8KIAogCi0jaWZuZGVmIE1FTU9SWV9ICi0jZGVmaW5lIE1FTU9SWV9ICisjaWZuZGVmIE1QQUxMT0NfSAorI2RlZmluZSBNUEFMTE9DX0gKIAogCiAjaW5jbHVkZSAibXBkZWNpbWFsLmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYwppbmRleCA1OTNmOWY1Li4zMjhhYjkyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJiaXRzLmgiCiAjaW5jbHVkZSAiY29udm9sdXRlLmgiCiAjaW5jbHVkZSAiY3J0LmgiCi0jaW5jbHVkZSAibWVtb3J5LmgiCisjaW5jbHVkZSAibXBhbGxvYy5oIgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgogI2luY2x1ZGUgInVtb2Rhcml0aC5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaAppbmRleCA1Y2E3NDEzLi5kYWYyYjlkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgKQEAgLTQ4LDYgKzQ4LDggQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgogCiAjaWZkZWYgX01TQ19WRVIKICAgI2luY2x1ZGUgInZjY29tcGF0LmgiCkBAIC01OSwxMiArNjEsNiBAQAogICAjZGVmaW5lIE1QRF9ISURFX1NZTUJPTFNfRU5ECiAgICNkZWZpbmUgRVhUSU5MSU5FIGV4dGVybiBpbmxpbmUKICNlbHNlCi0gICNpZmRlZiBIQVZFX1NURElOVF9ICi0gICAgI2luY2x1ZGUgPHN0ZGludC5oPgotICAjZW5kaWYKLSAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAotICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAjZW5kaWYKICAgI2lmbmRlZiBfX0dOVUNfU1REQ19JTkxJTkVfXwogICAgICNkZWZpbmUgX19HTlVDX1NURENfSU5MSU5FX18gMQogICAjZW5kaWYKQEAgLTEwOCw5ICsxMDQsOSBAQAogCiAjZGVmaW5lIE1QRF9NQUpPUl9WRVJTSU9OIDIKICNkZWZpbmUgTVBEX01JTk9SX1ZFUlNJT04gNAotI2RlZmluZSBNUERfTUlDUk9fVkVSU0lPTiAxCisjZGVmaW5lIE1QRF9NSUNST19WRVJTSU9OIDIKIAotI2RlZmluZSBNUERfVkVSU0lPTiAiMi40LjEiCisjZGVmaW5lIE1QRF9WRVJTSU9OICIyLjQuMiIKIAogI2RlZmluZSBNUERfVkVSU0lPTl9IRVggKChNUERfTUFKT1JfVkVSU0lPTiA8PCAyNCkgfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE1QRF9NSU5PUl9WRVJTSU9OIDw8IDE2KSB8IFwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaAppbmRleCBmNThlMDIzLi5kZDEzMWQ4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmgKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oCkBAIC0zMiw3ICszMiw2IEBACiAKIC8qIFZpc3VhbCBDIGZpeGVzOiBubyBzdGRpbnQuaCwgbm8gc25wcmludGYgLi4uICovCiAjaWZkZWYgX01TQ19WRVIKLSAgI2luY2x1ZGUgInZjc3RkaW50LmgiCiAgICN1bmRlZiBpbmxpbmUKICAgI2RlZmluZSBpbmxpbmUgX19pbmxpbmUKICAgI3VuZGVmIHJhbmRvbQpAQCAtNDksMTAgKzQ4LDYgQEAKICAgI3VuZGVmIHN0cnRvbGwKICAgI2RlZmluZSBzdHJ0b2xsIF9zdHJ0b2k2NAogICAjZGVmaW5lIHN0cmR1cCBfc3RyZHVwCi0gICNkZWZpbmUgUFJJaTY0ICJJNjRpIgotICAjZGVmaW5lIFBSSXU2NCAiSTY0dSIKLSAgI2RlZmluZSBQUklpMzIgIkkzMmkiCi0gICNkZWZpbmUgUFJJdTMyICJJMzJ1IgogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKaW5kZXggYWI3ZDViZC4uZjkwNzUzMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CkBAIC01MCw4ICs1MCw4IEBACiAgICAgICAgICdfX2Fic19fJywgJ19fYm9vbF9fJywgJ19fY2VpbF9fJywgJ19fY29tcGxleF9fJywgJ19fY29weV9fJywKICAgICAgICAgJ19fZmxvb3JfXycsICdfX2Zsb2F0X18nLCAnX19oYXNoX18nLCAnX19pbnRfXycsICdfX25lZ19fJywKICAgICAgICAgJ19fcG9zX18nLCAnX19yZWR1Y2VfXycsICdfX3JlcHJfXycsICdfX3N0cl9fJywgJ19fdHJ1bmNfXycsCi0gICAgICAgICdhZGp1c3RlZCcsICdhc190dXBsZScsICdjYW5vbmljYWwnLCAnY29uanVnYXRlJywgJ2NvcHlfYWJzJywKLSAgICAgICAgJ2NvcHlfbmVnYXRlJywgJ2lzX2Nhbm9uaWNhbCcsICdpc19maW5pdGUnLCAnaXNfaW5maW5pdGUnLAorICAgICAgICAnYWRqdXN0ZWQnLCAnYXNfaW50ZWdlcl9yYXRpbycsICdhc190dXBsZScsICdjYW5vbmljYWwnLCAnY29uanVnYXRlJywKKyAgICAgICAgJ2NvcHlfYWJzJywgJ2NvcHlfbmVnYXRlJywgJ2lzX2Nhbm9uaWNhbCcsICdpc19maW5pdGUnLCAnaXNfaW5maW5pdGUnLAogICAgICAgICAnaXNfbmFuJywgJ2lzX3FuYW4nLCAnaXNfc2lnbmVkJywgJ2lzX3NuYW4nLCAnaXNfemVybycsICdyYWRpeCcKICAgICApLAogICAgICMgVW5hcnkgd2l0aCBvcHRpb25hbCBjb250ZXh0OgpAQCAtMTI4LDcgKzEyOCw3IEBACiAjIEZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgYSByZXN0cmljdGVkIGV4cG9uZW50IHJhbmdlIGZvciByZWFzb25hYmxlIHJ1bnRpbWVzLgogVW5hcnlSZXN0cmljdGVkID0gWwogICAnX19jZWlsX18nLCAnX19mbG9vcl9fJywgJ19faW50X18nLCAnX190cnVuY19fJywKLSAgJ3RvX2ludGVncmFsJywgJ3RvX2ludGVncmFsX3ZhbHVlJworICAnYXNfaW50ZWdlcl9yYXRpbycsICd0b19pbnRlZ3JhbCcsICd0b19pbnRlZ3JhbF92YWx1ZScKIF0KIAogQmluYXJ5UmVzdHJpY3RlZCA9IFsnX19yb3VuZF9fJ10KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCmluZGV4IDg1ZmZjYTIuLjMzNjIxOTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKKysrIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwpAQCAtNTcsOSArNTcsOSBAQAogICAgdGhhdCBhbGwgdXNlIG9mIHRleHQgYW5kIHRhaWwgYXMgb2JqZWN0IHBvaW50ZXJzIG11c3QgYmUgd3JhcHBlZCBpbgogICAgSk9JTl9PQkouICBzZWUgY29tbWVudHMgaW4gdGhlIEVsZW1lbnRPYmplY3QgZGVmaW5pdGlvbiBmb3IgbW9yZQogICAgaW5mby4gKi8KLSNkZWZpbmUgSk9JTl9HRVQocCkgKChQeV91aW50cHRyX3QpIChwKSAmIDEpCi0jZGVmaW5lIEpPSU5fU0VUKHAsIGZsYWcpICgodm9pZCopICgoUHlfdWludHB0cl90KSAoSk9JTl9PQkoocCkpIHwgKGZsYWcpKSkKLSNkZWZpbmUgSk9JTl9PQkoocCkgKChQeU9iamVjdCopICgoUHlfdWludHB0cl90KSAocCkgJiB+KFB5X3VpbnRwdHJfdCkxKSkKKyNkZWZpbmUgSk9JTl9HRVQocCkgKCh1aW50cHRyX3QpIChwKSAmIDEpCisjZGVmaW5lIEpPSU5fU0VUKHAsIGZsYWcpICgodm9pZCopICgodWludHB0cl90KSAoSk9JTl9PQkoocCkpIHwgKGZsYWcpKSkKKyNkZWZpbmUgSk9JTl9PQkoocCkgKChQeU9iamVjdCopICgodWludHB0cl90KSAocCkgJiB+KHVpbnRwdHJfdCkxKSkKIAogLyogUHlfQ0xFQVIgZm9yIGEgUHlPYmplY3QqIHRoYXQgdXNlcyBhIGpvaW4gZmxhZy4gUGFzcyB0aGUgcG9pbnRlciBieQogICogcmVmZXJlbmNlIHNpbmNlIHRoaXMgZnVuY3Rpb24gc2V0cyBpdCB0byBOVUxMLgpAQCAtMTI5LDMwICsxMjksNiBAQAogLyogaGVscGVycyAqLwogCiBMT0NBTChQeU9iamVjdCopCi1kZWVwY29weShQeU9iamVjdCogb2JqZWN0LCBQeU9iamVjdCogbWVtbykKLXsKLSAgICAvKiBkbyBhIGRlZXAgY29weSBvZiB0aGUgZ2l2ZW4gb2JqZWN0ICovCi0gICAgUHlPYmplY3QqIGFyZ3M7Ci0gICAgUHlPYmplY3QqIHJlc3VsdDsKLSAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKLQotICAgIGlmICghc3QtPmRlZXBjb3B5X29iaikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAiZGVlcGNvcHkgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMiwgb2JqZWN0LCBtZW1vKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3Qoc3QtPmRlZXBjb3B5X29iaiwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUxPQ0FMKFB5T2JqZWN0KikKIGxpc3Rfam9pbihQeU9iamVjdCogbGlzdCkKIHsKICAgICAvKiBqb2luIGxpc3QgZWxlbWVudHMgKGRlc3Ryb3lpbmcgdGhlIGxpc3QgaW4gdGhlIHByb2Nlc3MpICovCkBAIC00MjAsMTAgKzM5Niw4IEBACiAgICAgUHlfWERFQ1JFRihhdHRyaWIpOwogCiAgICAgLyogUmVwbGFjZSB0aGUgb2JqZWN0cyBhbHJlYWR5IHBvaW50ZWQgdG8gYnkgdGFnLCB0ZXh0IGFuZCB0YWlsLiAqLwotICAgIHRtcCA9IHNlbGZfZWxlbS0+dGFnOwogICAgIFB5X0lOQ1JFRih0YWcpOwotICAgIHNlbGZfZWxlbS0+dGFnID0gdGFnOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYoc2VsZl9lbGVtLT50YWcsIHRhZyk7CiAKICAgICB0bXAgPSBzZWxmX2VsZW0tPnRleHQ7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtNzQ4LDYgKzcyMiw5IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopIGVsZW1lbnQ7CiB9CiAKKy8qIEhlbHBlciBmb3IgYSBkZWVwIGNvcHkuICovCitMT0NBTChQeU9iamVjdCAqKSBkZWVwY29weShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKwogLypbY2xpbmljIGlucHV0XQogX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19kZWVwY29weV9fCiAKQEAgLTgyMCw3ICs3OTcsNyBAQAogICAgIH0KIAogICAgIC8qIGFkZCBvYmplY3QgdG8gbWVtbyBkaWN0aW9uYXJ5IChzbyBkZWVwY29weSB3b24ndCB2aXNpdCBpdCBhZ2FpbikgKi8KLSAgICBpZCA9IFB5TG9uZ19Gcm9tU3NpemVfdCgoUHlfdWludHB0cl90KSBzZWxmKTsKKyAgICBpZCA9IFB5TG9uZ19Gcm9tU3NpemVfdCgodWludHB0cl90KSBzZWxmKTsKICAgICBpZiAoIWlkKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC04MzgsNiArODE1LDUzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK0xPQ0FMKFB5T2JqZWN0ICopCitkZWVwY29weShQeU9iamVjdCAqb2JqZWN0LCBQeU9iamVjdCAqbWVtbykKK3sKKyAgICAvKiBkbyBhIGRlZXAgY29weSBvZiB0aGUgZ2l2ZW4gb2JqZWN0ICovCisgICAgZWxlbWVudHRyZWVzdGF0ZSAqc3Q7CisgICAgUHlPYmplY3QgKnN0YWNrWzJdOworCisgICAgLyogRmFzdCBwYXRocyAqLworICAgIGlmIChvYmplY3QgPT0gUHlfTm9uZSB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmplY3QpKSB7CisgICAgICAgIFB5X0lOQ1JFRihvYmplY3QpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0KKworICAgIGlmIChQeV9SRUZDTlQob2JqZWN0KSA9PSAxKSB7CisgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvYmplY3QpKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgICAgICAgICBpbnQgc2ltcGxlID0gMTsKKyAgICAgICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChvYmplY3QsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwgIVB5VW5pY29kZV9DaGVja0V4YWN0KHZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBzaW1wbGUgPSAwOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2ltcGxlKQorICAgICAgICAgICAgICAgIHJldHVybiBQeURpY3RfQ29weShvYmplY3QpOworICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoIHRvIGdlbmVyYWwgY2FzZSAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKEVsZW1lbnRfQ2hlY2tFeGFjdChvYmplY3QpKSB7CisgICAgICAgICAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19kZWVwY29weV9fKChFbGVtZW50T2JqZWN0ICopb2JqZWN0LCBtZW1vKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEdlbmVyYWwgY2FzZSAqLworICAgIHN0ID0gRVRfU1RBVEVfR0xPQkFMOworICAgIGlmICghc3QtPmRlZXBjb3B5X29iaikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlZXBjb3B5IGhlbHBlciBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc3RhY2tbMF0gPSBvYmplY3Q7CisgICAgc3RhY2tbMV0gPSBtZW1vOworICAgIHJldHVybiBfUHlPYmplY3RfRmFzdENhbGwoc3QtPmRlZXBjb3B5X29iaiwgc3RhY2ssIDIpOworfQorCisKIC8qW2NsaW5pYyBpbnB1dF0KIF9lbGVtZW50dHJlZS5FbGVtZW50Ll9fc2l6ZW9mX18gLT4gUHlfc3NpemVfdAogCkBAIC0xNzYzLDcgKzE3ODcsNyBAQAogICAgICAgICAgICAgICAgIHN0ZXAgPSAtc3RlcDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW4gPD0gUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW4gPD0gU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpOwogCiAgICAgICAgICAgICAvKiByZWN5Y2xlIGlzIGEgbGlzdCB0aGF0IHdpbGwgY29udGFpbiBhbGwgdGhlIGNoaWxkcmVuCiAgICAgICAgICAgICAgKiBzY2hlZHVsZWQgZm9yIHJlbW92YWwuCkBAIC0xODkyLDkyICsxOTE2LDkwIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZ2V0YXR0cm8oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmopCitlbGVtZW50X3RhZ19nZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKIHsKLSAgICBQeU9iamVjdCogcmVzOwotICAgIGNoYXIgKm5hbWUgPSAiIjsKLQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCi0gICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOwotCi0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBoYW5kbGUgY29tbW9uIGF0dHJpYnV0ZXMgZmlyc3QgKi8KLSAgICBpZiAoc3RyY21wKG5hbWUsICJ0YWciKSA9PSAwKSB7Ci0gICAgICAgIHJlcyA9IHNlbGYtPnRhZzsKLSAgICAgICAgUHlfSU5DUkVGKHJlcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInRleHQiKSA9PSAwKSB7Ci0gICAgICAgIHJlcyA9IGVsZW1lbnRfZ2V0X3RleHQoc2VsZik7Ci0gICAgICAgIFB5X1hJTkNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICAvKiBtZXRob2RzICovCi0gICAgcmVzID0gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoKFB5T2JqZWN0Kikgc2VsZiwgbmFtZW9iaik7Ci0gICAgaWYgKHJlcykKLSAgICAgICAgcmV0dXJuIHJlczsKLQotICAgIC8qIGxlc3MgY29tbW9uIGF0dHJpYnV0ZXMgKi8KLSAgICBpZiAoc3RyY21wKG5hbWUsICJ0YWlsIikgPT0gMCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXMgPSBlbGVtZW50X2dldF90YWlsKHNlbGYpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJhdHRyaWIiKSA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKLSAgICAgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHJlcyA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KKyAgICBQeU9iamVjdCAqcmVzID0gc2VsZi0+dGFnOwogICAgIFB5X0lOQ1JFRihyZXMpOwogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBpbnQKLWVsZW1lbnRfc2V0YXR0cm8oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmosIFB5T2JqZWN0KiB2YWx1ZSkKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfdGV4dF9nZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKIHsKLSAgICBjaGFyICpuYW1lID0gIiI7CisgICAgUHlPYmplY3QgKnJlcyA9IGVsZW1lbnRfZ2V0X3RleHQoc2VsZik7CisgICAgUHlfWElOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CiAKLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAiY2FuJ3QgZGVsZXRlIGF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm4gLTE7CitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3RhaWxfZ2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlPYmplY3QgKnJlcyA9IGVsZW1lbnRfZ2V0X3RhaWwoc2VsZik7CisgICAgUHlfWElOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfYXR0cmliX2dldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgaWYgKCFzZWxmLT5leHRyYSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQotICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKLSAgICBpZiAobmFtZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gZWxlbWVudF9nZXRfYXR0cmliKHNlbGYpOworICAgIFB5X1hJTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQogCi0gICAgaWYgKHN0cmNtcChuYW1lLCAidGFnIikgPT0gMCkgewotICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICBQeV9TRVRSRUYoc2VsZi0+dGFnLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInRleHQiKSA9PSAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7Ci0gICAgICAgIHNlbGYtPnRleHQgPSB2YWx1ZTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnRleHQpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0YWlsIikgPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGFpbCkpOwotICAgICAgICBzZWxmLT50YWlsID0gdmFsdWU7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT50YWlsKTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewotICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7Ci0gICAgICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgUHlfU0VUUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIsIHZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAiQ2FuJ3Qgc2V0IGFyYml0cmFyeSBhdHRyaWJ1dGVzIG9uIEVsZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIC0xOworLyogbWFjcm8gZm9yIHNldHRlciB2YWxpZGF0aW9uICovCisjZGVmaW5lIF9WQUxJREFURV9BVFRSX1ZBTFVFKFYpICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgoVikgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBQeUV4Y19BdHRyaWJ1dGVFcnJvciwgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgImNhbid0IGRlbGV0ZSBlbGVtZW50IGF0dHJpYnV0ZSIpOyAgICAgIFwKKyAgICAgICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQogCitzdGF0aWMgaW50CitlbGVtZW50X3RhZ19zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X1NFVFJFRihzZWxmLT50YWcsIHZhbHVlKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZWxlbWVudF90ZXh0X3NldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgX1ZBTElEQVRFX0FUVFJfVkFMVUUodmFsdWUpOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKKyAgICBzZWxmLT50ZXh0ID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfdGFpbF9zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50YWlsKSk7CisgICAgc2VsZi0+dGFpbCA9IHZhbHVlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitlbGVtZW50X2F0dHJpYl9zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CisgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X1NFVFJFRihzZWxmLT5leHRyYS0+YXR0cmliLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE5OTcsMjIgKzIwMTksMjIgQEAKICAqIHByZS1vcmRlciB0cmF2ZXJzYWwuIFRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggc3ViLWVsZW1lbnQgc2hvdWxkIGJlIHJldHVybmVkCiAgKiBuZXh0LCBhIHN0YWNrIG9mIHBhcmVudHMgaXMgbWFpbnRhaW5lZC4gVGhpcyBpcyBhIHN0YW5kYXJkIHN0YWNrLWJhc2VkCiAgKiBpdGVyYXRpdmUgcHJlLW9yZGVyIHRyYXZlcnNhbCBvZiBhIHRyZWUuCi0gKiBUaGUgc3RhY2sgaXMgbWFuYWdlZCB1c2luZyBhIHNpbmdsZS1saW5rZWQgbGlzdCBzdGFydGluZyBhdCBwYXJlbnRfc3RhY2suCi0gKiBFYWNoIHN0YWNrIG5vZGUgY29udGFpbnMgdGhlIHNhdmVkIHBhcmVudCB0byB3aGljaCB3ZSBzaG91bGQgcmV0dXJuIGFmdGVyCisgKiBUaGUgc3RhY2sgaXMgbWFuYWdlZCB1c2luZyBhIGNvbnRpbnVvdXMgYXJyYXkuCisgKiBFYWNoIHN0YWNrIGl0ZW0gY29udGFpbnMgdGhlIHNhdmVkIHBhcmVudCB0byB3aGljaCB3ZSBzaG91bGQgcmV0dXJuIGFmdGVyCiAgKiB0aGUgY3VycmVudCBvbmUgaXMgZXhoYXVzdGVkLCBhbmQgdGhlIG5leHQgY2hpbGQgdG8gZXhhbWluZSBpbiB0aGF0IHBhcmVudC4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgUGFyZW50TG9jYXRvcl90IHsKICAgICBFbGVtZW50T2JqZWN0ICpwYXJlbnQ7CiAgICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKLSAgICBzdHJ1Y3QgUGFyZW50TG9jYXRvcl90ICpuZXh0OwogfSBQYXJlbnRMb2NhdG9yOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFBhcmVudExvY2F0b3IgKnBhcmVudF9zdGFjazsKKyAgICBQeV9zc2l6ZV90IHBhcmVudF9zdGFja191c2VkOworICAgIFB5X3NzaXplX3QgcGFyZW50X3N0YWNrX3NpemU7CiAgICAgRWxlbWVudE9iamVjdCAqcm9vdF9lbGVtZW50OwogICAgIFB5T2JqZWN0ICpzb3VnaHRfdGFnOwotICAgIGludCByb290X2RvbmU7CiAgICAgaW50IGdldHRleHQ7CiB9IEVsZW1lbnRJdGVyT2JqZWN0OwogCkBAIC0yMDIwLDEzICsyMDQyLDExIEBACiBzdGF0aWMgdm9pZAogZWxlbWVudGl0ZXJfZGVhbGxvYyhFbGVtZW50SXRlck9iamVjdCAqaXQpCiB7Ci0gICAgUGFyZW50TG9jYXRvciAqcCA9IGl0LT5wYXJlbnRfc3RhY2s7Ci0gICAgd2hpbGUgKHApIHsKLSAgICAgICAgUGFyZW50TG9jYXRvciAqdGVtcCA9IHA7Ci0gICAgICAgIFB5X1hERUNSRUYocC0+cGFyZW50KTsKLSAgICAgICAgcCA9IHAtPm5leHQ7Ci0gICAgICAgIFB5T2JqZWN0X0ZyZWUodGVtcCk7Ci0gICAgfQorICAgIFB5X3NzaXplX3QgaSA9IGl0LT5wYXJlbnRfc3RhY2tfdXNlZDsKKyAgICBpdC0+cGFyZW50X3N0YWNrX3VzZWQgPSAwOworICAgIHdoaWxlIChpLS0pCisgICAgICAgIFB5X1hERUNSRUYoaXQtPnBhcmVudF9zdGFja1tpXS5wYXJlbnQpOworICAgIFB5TWVtX0ZyZWUoaXQtPnBhcmVudF9zdGFjayk7CiAKICAgICBQeV9YREVDUkVGKGl0LT5zb3VnaHRfdGFnKTsKICAgICBQeV9YREVDUkVGKGl0LT5yb290X2VsZW1lbnQpOwpAQCAtMjAzOCwxMSArMjA1OCw5IEBACiBzdGF0aWMgaW50CiBlbGVtZW50aXRlcl90cmF2ZXJzZShFbGVtZW50SXRlck9iamVjdCAqaXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIFBhcmVudExvY2F0b3IgKnAgPSBpdC0+cGFyZW50X3N0YWNrOwotICAgIHdoaWxlIChwKSB7Ci0gICAgICAgIFB5X1ZJU0lUKHAtPnBhcmVudCk7Ci0gICAgICAgIHAgPSBwLT5uZXh0OwotICAgIH0KKyAgICBQeV9zc2l6ZV90IGkgPSBpdC0+cGFyZW50X3N0YWNrX3VzZWQ7CisgICAgd2hpbGUgKGktLSkKKyAgICAgICAgUHlfVklTSVQoaXQtPnBhcmVudF9zdGFja1tpXS5wYXJlbnQpOwogCiAgICAgUHlfVklTSVQoaXQtPnJvb3RfZWxlbWVudCk7CiAgICAgUHlfVklTSVQoaXQtPnNvdWdodF90YWcpOwpAQCAtMjA1MSwxNyArMjA2OSwyNSBAQAogCiAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGVsZW1lbnRpdGVyX25leHQuIEFkZCBhIG5ldyBwYXJlbnQgdG8gdGhlIHBhcmVudCBzdGFjay4KICAqLwotc3RhdGljIFBhcmVudExvY2F0b3IgKgotcGFyZW50X3N0YWNrX3B1c2hfbmV3KFBhcmVudExvY2F0b3IgKnN0YWNrLCBFbGVtZW50T2JqZWN0ICpwYXJlbnQpCitzdGF0aWMgaW50CitwYXJlbnRfc3RhY2tfcHVzaF9uZXcoRWxlbWVudEl0ZXJPYmplY3QgKml0LCBFbGVtZW50T2JqZWN0ICpwYXJlbnQpCiB7Ci0gICAgUGFyZW50TG9jYXRvciAqbmV3X25vZGUgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFBhcmVudExvY2F0b3IpKTsKLSAgICBpZiAobmV3X25vZGUpIHsKLSAgICAgICAgbmV3X25vZGUtPnBhcmVudCA9IHBhcmVudDsKLSAgICAgICAgUHlfSU5DUkVGKHBhcmVudCk7Ci0gICAgICAgIG5ld19ub2RlLT5jaGlsZF9pbmRleCA9IDA7Ci0gICAgICAgIG5ld19ub2RlLT5uZXh0ID0gc3RhY2s7CisgICAgUGFyZW50TG9jYXRvciAqaXRlbTsKKworICAgIGlmIChpdC0+cGFyZW50X3N0YWNrX3VzZWQgPj0gaXQtPnBhcmVudF9zdGFja19zaXplKSB7CisgICAgICAgIFB5X3NzaXplX3QgbmV3X3NpemUgPSBpdC0+cGFyZW50X3N0YWNrX3NpemUgKiAyOyAgLyogbmV2ZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgUGFyZW50TG9jYXRvciAqcGFyZW50X3N0YWNrID0gaXQtPnBhcmVudF9zdGFjazsKKyAgICAgICAgUHlNZW1fUmVzaXplKHBhcmVudF9zdGFjaywgUGFyZW50TG9jYXRvciwgbmV3X3NpemUpOworICAgICAgICBpZiAocGFyZW50X3N0YWNrID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2s7CisgICAgICAgIGl0LT5wYXJlbnRfc3RhY2tfc2l6ZSA9IG5ld19zaXplOwogICAgIH0KLSAgICByZXR1cm4gbmV3X25vZGU7CisgICAgaXRlbSA9IGl0LT5wYXJlbnRfc3RhY2sgKyBpdC0+cGFyZW50X3N0YWNrX3VzZWQrKzsKKyAgICBQeV9JTkNSRUYocGFyZW50KTsKKyAgICBpdGVtLT5wYXJlbnQgPSBwYXJlbnQ7CisgICAgaXRlbS0+Y2hpbGRfaW5kZXggPSAwOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjA3OCwxNTEgKzIxMDQsOTEgQEAKICAgICAgKiAgIC0gaXRlcnRleHQoKSBhbHNvIGhhcyB0byBoYW5kbGUgdGFpbCwgYWZ0ZXIgZmluaXNoaW5nIHdpdGggYWxsIHRoZQogICAgICAqICAgICBjaGlsZHJlbiBvZiBhIG5vZGUuCiAgICAgICovCi0gICAgRWxlbWVudE9iamVjdCAqY3VyX3BhcmVudDsKLSAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4OwogICAgIGludCByYzsKICAgICBFbGVtZW50T2JqZWN0ICplbGVtOworICAgIFB5T2JqZWN0ICp0ZXh0OwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgLyogSGFuZGxlIHRoZSBjYXNlIHJlYWNoZWQgaW4gdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGl0ZXJhdGlvbiwgd2hlcmUKLSAgICAgICAgICogdGhlIHBhcmVudCBzdGFjayBpcyBlbXB0eS4gVGhlIHJvb3RfZG9uZSBmbGFnIGdpdmVzIHVzIGluZGljYXRpb24KLSAgICAgICAgICogd2hldGhlciB3ZSd2ZSBqdXN0IHN0YXJ0ZWQgaXRlcmF0aW5nIChzbyByb290X2RvbmUgaXMgMCksIGluIHdoaWNoCi0gICAgICAgICAqIGNhc2UgdGhlIHJvb3QgaXMgcmV0dXJuZWQuIElmIHJvb3RfZG9uZSBpcyAxIGFuZCB3ZSdyZSBoZXJlLCB0aGUKKyAgICAgICAgICogdGhlIHBhcmVudCBzdGFjayBpcyBlbXB0eS4gSWYgcm9vdF9lbGVtZW50IGlzIE5VTEwgYW5kIHdlJ3JlIGhlcmUsIHRoZQogICAgICAgICAgKiBpdGVyYXRvciBpcyBleGhhdXN0ZWQuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCkgewotICAgICAgICAgICAgaWYgKGl0LT5yb290X2RvbmUpIHsKKyAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrX3VzZWQpIHsKKyAgICAgICAgICAgIGlmICghaXQtPnJvb3RfZWxlbWVudCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVsZW0gPSBpdC0+cm9vdF9lbGVtZW50OwotICAgICAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQtPnBhcmVudF9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0pOwotICAgICAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgaXQtPnJvb3RfZG9uZSA9IDE7Ci0gICAgICAgICAgICAgICAgcmMgPSAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyYykgewotICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChlbGVtLT50YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyYykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJjID4gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qIFNlZSBpZiB0aGVyZSBhcmUgY2hpbGRyZW4gbGVmdCB0byB0cmF2ZXJzZSBpbiB0aGUgY3VycmVudCBwYXJlbnQuIElmCi0gICAgICAgICAqIHllcywgdmlzaXQgdGhlIG5leHQgY2hpbGQuIElmIG5vdCwgcG9wIHRoZSBzdGFjayBhbmQgdHJ5IGFnYWluLgotICAgICAgICAgKi8KLSAgICAgICAgY3VyX3BhcmVudCA9IGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudDsKLSAgICAgICAgY2hpbGRfaW5kZXggPSBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleDsKLSAgICAgICAgaWYgKGN1cl9wYXJlbnQtPmV4dHJhICYmIGNoaWxkX2luZGV4IDwgY3VyX3BhcmVudC0+ZXh0cmEtPmxlbmd0aCkgewotICAgICAgICAgICAgZWxlbSA9IChFbGVtZW50T2JqZWN0ICopY3VyX3BhcmVudC0+ZXh0cmEtPmNoaWxkcmVuW2NoaWxkX2luZGV4XTsKLSAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4Kys7Ci0gICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LT5wYXJlbnRfc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0pOwotICAgICAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOwotICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQgPSBlbGVtZW50X2dldF90ZXh0KGVsZW0pOwotICAgICAgICAgICAgICAgIGlmICghdGV4dCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRleHQpOwotICAgICAgICAgICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmMgPSAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyYykgewotICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChlbGVtLT50YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyYykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxlbSA9IGl0LT5yb290X2VsZW1lbnQ7ICAvKiBzdGVhbHMgYSByZWZlcmVuY2UgKi8KKyAgICAgICAgICAgIGl0LT5yb290X2VsZW1lbnQgPSBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKnRhaWw7Ci0gICAgICAgICAgICBQYXJlbnRMb2NhdG9yICpuZXh0OwotICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgICAgIHRhaWwgPSBlbGVtZW50X2dldF90YWlsKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgICAgIGlmICghdGFpbCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3VyX3BhcmVudCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGFpbCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGFpbCA9IFB5X05vbmU7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRhaWwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV4dCA9IGl0LT5wYXJlbnRfc3RhY2stPm5leHQ7Ci0gICAgICAgICAgICBjdXJfcGFyZW50ID0gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50OwotICAgICAgICAgICAgUHlPYmplY3RfRnJlZShpdC0+cGFyZW50X3N0YWNrKTsKLSAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBuZXh0OwotICAgICAgICAgICAgUHlfWERFQ1JFRihjdXJfcGFyZW50KTsKLQotICAgICAgICAgICAgLyogTm90ZSB0aGF0IGV4dHJhIGNvbmRpdGlvbiBvbiBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgaGVyZTsKLSAgICAgICAgICAgICAqIHRoaXMgaXMgYmVjYXVzZSBpdGVydGV4dCgpIGlzIHN1cHBvc2VkIHRvIG9ubHkgcmV0dXJuICppbm5lcioKLSAgICAgICAgICAgICAqIHRleHQsIG5vdCB0ZXh0IGZvbGxvd2luZyB0aGUgZWxlbWVudCBpdCBiZWdhbiBpdGVyYXRpb24gd2l0aC4KKyAgICAgICAgICAgIC8qIFNlZSBpZiB0aGVyZSBhcmUgY2hpbGRyZW4gbGVmdCB0byB0cmF2ZXJzZSBpbiB0aGUgY3VycmVudCBwYXJlbnQuIElmCisgICAgICAgICAgICAgKiB5ZXMsIHZpc2l0IHRoZSBuZXh0IGNoaWxkLiBJZiBub3QsIHBvcCB0aGUgc3RhY2sgYW5kIHRyeSBhZ2Fpbi4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCkgewotICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRhaWwpOwotICAgICAgICAgICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWlsOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIFBhcmVudExvY2F0b3IgKml0ZW0gPSAmaXQtPnBhcmVudF9zdGFja1tpdC0+cGFyZW50X3N0YWNrX3VzZWQgLSAxXTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXggPSBpdGVtLT5jaGlsZF9pbmRleDsKKyAgICAgICAgICAgIEVsZW1lbnRPYmplY3RFeHRyYSAqZXh0cmE7CisgICAgICAgICAgICBlbGVtID0gaXRlbS0+cGFyZW50OworICAgICAgICAgICAgZXh0cmEgPSBlbGVtLT5leHRyYTsKKyAgICAgICAgICAgIGlmICghZXh0cmEgfHwgY2hpbGRfaW5kZXggPj0gZXh0cmEtPmxlbmd0aCkgeworICAgICAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2tfdXNlZC0tOworICAgICAgICAgICAgICAgIC8qIE5vdGUgdGhhdCBleHRyYSBjb25kaXRpb24gb24gaXQtPnBhcmVudF9zdGFja191c2VkIGhlcmU7CisgICAgICAgICAgICAgICAgICogdGhpcyBpcyBiZWNhdXNlIGl0ZXJ0ZXh0KCkgaXMgc3VwcG9zZWQgdG8gb25seSByZXR1cm4gKmlubmVyKgorICAgICAgICAgICAgICAgICAqIHRleHQsIG5vdCB0ZXh0IGZvbGxvd2luZyB0aGUgZWxlbWVudCBpdCBiZWdhbiBpdGVyYXRpb24gd2l0aC4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoaXQtPmdldHRleHQgJiYgaXQtPnBhcmVudF9zdGFja191c2VkKSB7CisgICAgICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X2dldF90YWlsKGVsZW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGdldHRleHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWxlbSA9IChFbGVtZW50T2JqZWN0ICopZXh0cmEtPmNoaWxkcmVuW2NoaWxkX2luZGV4XTsKKyAgICAgICAgICAgIGl0ZW0tPmNoaWxkX2luZGV4Kys7CisgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LCBlbGVtKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKKyAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X2dldF90ZXh0KGVsZW0pOworICAgICAgICAgICAgZ290byBnZXR0ZXh0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUpCisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKKworICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChlbGVtLT50YWcsIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSk7CisgICAgICAgIGlmIChyYyA+IDApCisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKKworICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgY29udGludWU7CisKK2dldHRleHQ6CisgICAgICAgIGlmICghdGV4dCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRleHQgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9Jc1RydWUodGV4dCk7CisgICAgICAgICAgICBpZiAocmMgPiAwKQorICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICAgICAgUHlfREVDUkVGKHRleHQpOworICAgICAgICAgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjI3NCw2ICsyMjQwLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogfTsKIAorI2RlZmluZSBJTklUX1BBUkVOVF9TVEFDS19TSVpFIDgKIAogc3RhdGljIFB5T2JqZWN0ICoKIGNyZWF0ZV9lbGVtZW50aXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLCBpbnQgZ2V0dGV4dCkKQEAgLTIyODYsMjIgKzIyNTMsMjAgQEAKIAogICAgIFB5X0lOQ1JFRih0YWcpOwogICAgIGl0LT5zb3VnaHRfdGFnID0gdGFnOwotICAgIGl0LT5yb290X2RvbmUgPSAwOwogICAgIGl0LT5nZXR0ZXh0ID0gZ2V0dGV4dDsKICAgICBQeV9JTkNSRUYoc2VsZik7CiAgICAgaXQtPnJvb3RfZWxlbWVudCA9IHNlbGY7CiAKICAgICBQeU9iamVjdF9HQ19UcmFjayhpdCk7CiAKLSAgICBpdC0+cGFyZW50X3N0YWNrID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQYXJlbnRMb2NhdG9yKSk7CisgICAgaXQtPnBhcmVudF9zdGFjayA9IFB5TWVtX05ldyhQYXJlbnRMb2NhdG9yLCBJTklUX1BBUkVOVF9TVEFDS19TSVpFKTsKICAgICBpZiAoaXQtPnBhcmVudF9zdGFjayA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgPSBOVUxMOwotICAgIGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4ID0gMDsKLSAgICBpdC0+cGFyZW50X3N0YWNrLT5uZXh0ID0gTlVMTDsKKyAgICBpdC0+cGFyZW50X3N0YWNrX3VzZWQgPSAwOworICAgIGl0LT5wYXJlbnRfc3RhY2tfc2l6ZSA9IElOSVRfUEFSRU5UX1NUQUNLX1NJWkU7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CkBAIC0yMzI2LDcgKzIyOTEsNyBAQAogICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3Rvcnk7CiAKICAgICAvKiBlbGVtZW50IHRyYWNpbmcgKi8KLSAgICBQeU9iamVjdCAqZXZlbnRzOyAvKiBsaXN0IG9mIGV2ZW50cywgb3IgTlVMTCBpZiBub3QgY29sbGVjdGluZyAqLworICAgIFB5T2JqZWN0ICpldmVudHNfYXBwZW5kOyAvKiB0aGUgYXBwZW5kIG1ldGhvZCBvZiB0aGUgbGlzdCBvZiBldmVudHMsIG9yIE5VTEwgKi8KICAgICBQeU9iamVjdCAqc3RhcnRfZXZlbnRfb2JqOyAvKiBldmVudCBvYmplY3RzIChOVUxMIHRvIGlnbm9yZSkgKi8KICAgICBQeU9iamVjdCAqZW5kX2V2ZW50X29iajsKICAgICBQeU9iamVjdCAqc3RhcnRfbnNfZXZlbnRfb2JqOwpAQCAtMjM2MSw3ICsyMzI2LDcgQEAKICAgICAgICAgfQogICAgICAgICB0LT5pbmRleCA9IDA7CiAKLSAgICAgICAgdC0+ZXZlbnRzID0gTlVMTDsKKyAgICAgICAgdC0+ZXZlbnRzX2FwcGVuZCA9IE5VTEw7CiAgICAgICAgIHQtPnN0YXJ0X2V2ZW50X29iaiA9IHQtPmVuZF9ldmVudF9vYmogPSBOVUxMOwogICAgICAgICB0LT5zdGFydF9uc19ldmVudF9vYmogPSB0LT5lbmRfbnNfZXZlbnRfb2JqID0gTlVMTDsKICAgICB9CkBAIC0yMzgwLDEzICsyMzQ1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTFjZmE3NTU4OTcwZWU5NiBpbnB1dD0xYjQyNGVlZWZjMzUyNDljXSovCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmIChlbGVtZW50X2ZhY3RvcnkpIHsKICAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnRfZmFjdG9yeSk7Ci0gICAgICAgIHRtcCA9IHNlbGYtPmVsZW1lbnRfZmFjdG9yeTsKLSAgICAgICAgc2VsZi0+ZWxlbWVudF9mYWN0b3J5ID0gZWxlbWVudF9mYWN0b3J5OwotICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgIFB5X1hTRVRSRUYoc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCBlbGVtZW50X2ZhY3RvcnkpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMjQxMSw3ICsyMzcyLDcgQEAKICAgICBQeV9DTEVBUihzZWxmLT5zdGFydF9uc19ldmVudF9vYmopOwogICAgIFB5X0NMRUFSKHNlbGYtPmVuZF9ldmVudF9vYmopOwogICAgIFB5X0NMRUFSKHNlbGYtPnN0YXJ0X2V2ZW50X29iaik7Ci0gICAgUHlfQ0xFQVIoc2VsZi0+ZXZlbnRzKTsKKyAgICBQeV9DTEVBUihzZWxmLT5ldmVudHNfYXBwZW5kKTsKICAgICBQeV9DTEVBUihzZWxmLT5zdGFjayk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZGF0YSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+bGFzdCk7CkBAIC0yNDkyLDEzICsyNDUzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGUpCiB7CiAgICAgaWYgKGFjdGlvbiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeVR1cGxlX1BhY2soMiwgYWN0aW9uLCBub2RlKTsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgUHlPYmplY3QgKmV2ZW50ID0gUHlUdXBsZV9QYWNrKDIsIGFjdGlvbiwgbm9kZSk7CisgICAgICAgIGlmIChldmVudCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNlbGYtPmV2ZW50c19hcHBlbmQsIGV2ZW50LCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGV2ZW50KTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChzZWxmLT5ldmVudHMsIHJlcykgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0yNTI3LDEwICsyNDg5LDE3IEBACiAgICAgICAgIHNlbGYtPmRhdGEgPSBOVUxMOwogICAgIH0KIAotICAgIGlmIChzZWxmLT5lbGVtZW50X2ZhY3RvcnkgJiYgc2VsZi0+ZWxlbWVudF9mYWN0b3J5ICE9IFB5X05vbmUpIHsKLSAgICAgICAgbm9kZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5lbGVtZW50X2ZhY3RvcnksICJPTyIsIHRhZywgYXR0cmliKTsKLSAgICB9IGVsc2UgeworICAgIGlmICghc2VsZi0+ZWxlbWVudF9mYWN0b3J5IHx8IHNlbGYtPmVsZW1lbnRfZmFjdG9yeSA9PSBQeV9Ob25lKSB7CiAgICAgICAgIG5vZGUgPSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOworICAgIH0gZWxzZSBpZiAoYXR0cmliID09IFB5X05vbmUpIHsKKyAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBub2RlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgIk9PIiwgdGFnLCBhdHRyaWIpOworICAgICAgICBQeV9ERUNSRUYoYXR0cmliKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5vZGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCAiT08iLCB0YWcsIGF0dHJpYik7CiAgICAgfQogICAgIGlmICghbm9kZSkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI5ODksMTIgKzI5NTgsOCBAQAogICAgICAgICAgICAgYXR0cmliX2luICs9IDI7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICAvKiBQYXNzIGFuIGVtcHR5IGRpY3Rpb25hcnkgb24gKi8KLSAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoIWF0dHJpYikgewotICAgICAgICAgICAgUHlfREVDUkVGKHRhZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwogICAgIH0KIAogICAgIGlmIChUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKQEAgLTMwMDMsNiArMjk2OCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnLCBhdHRyaWIpOwogICAgIH0KICAgICBlbHNlIGlmIChzZWxmLT5oYW5kbGVfc3RhcnQpIHsKKyAgICAgICAgaWYgKGF0dHJpYiA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmliKTsKKyAgICAgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmICghYXR0cmliKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRhZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5oYW5kbGVfc3RhcnQsICJPTyIsIHRhZywgYXR0cmliKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzID0gTlVMTDsKQEAgLTMwNzYsNyArMzA0OSw3IEBACiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghdGFyZ2V0LT5ldmVudHMgfHwgIXRhcmdldC0+c3RhcnRfbnNfZXZlbnRfb2JqKQorICAgIGlmICghdGFyZ2V0LT5ldmVudHNfYXBwZW5kIHx8ICF0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF1cmkpCkBAIC0zMDk5LDcgKzMwNzIsNyBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRhcmdldC0+ZXZlbnRzKQorICAgIGlmICghdGFyZ2V0LT5ldmVudHNfYXBwZW5kKQogICAgICAgICByZXR1cm47CiAKICAgICB0cmVlYnVpbGRlcl9hcHBlbmRfZXZlbnQodGFyZ2V0LCB0YXJnZXQtPmVuZF9uc19ldmVudF9vYmosIFB5X05vbmUpOwpAQCAtMzQyNiw3ICszMzk5LDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoc2VsZi0+aGFuZGxlX2Nsb3NlKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmhhbmRsZV9jbG9zZSwgIiIpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhzZWxmLT5oYW5kbGVfY2xvc2UpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgcmV0dXJuIHJlczsKQEAgLTM1ODgsNyArMzU2MSw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBfZWxlbWVudHRyZWUuWE1MUGFyc2VyLl9zZXRldmVudHMKIAotICAgIGV2ZW50c19xdWV1ZTogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMaXN0X1R5cGUnKQorICAgIGV2ZW50c19xdWV1ZTogb2JqZWN0CiAgICAgZXZlbnRzX3RvX3JlcG9ydDogb2JqZWN0ID0gTm9uZQogICAgIC8KIApAQCAtMzU5OCwxMiArMzU3MSwxMiBAQAogX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV2ZW50c19xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NDAwOTI5MjJiMTNlZDEgaW5wdXQ9NTlkYjk3NDI5MTBjNjE3NF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NDAwOTI5MjJiMTNlZDEgaW5wdXQ9YWJmOTA4MzBhMWMzYjBmY10qLwogewogICAgIC8qIGFjdGl2YXRlIGVsZW1lbnQgZXZlbnQgcmVwb3J0aW5nICovCiAgICAgUHlfc3NpemVfdCBpOwogICAgIFRyZWVCdWlsZGVyT2JqZWN0ICp0YXJnZXQ7Ci0gICAgUHlPYmplY3QgKmV2ZW50c19zZXE7CisgICAgUHlPYmplY3QgKmV2ZW50c19hcHBlbmQsICpldmVudHNfc2VxOwogCiAgICAgaWYgKCFUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKApAQCAtMzYxNiw4ICszNTg5LDEwIEBACiAKICAgICB0YXJnZXQgPSAoVHJlZUJ1aWxkZXJPYmplY3QqKSBzZWxmLT50YXJnZXQ7CiAKLSAgICBQeV9JTkNSRUYoZXZlbnRzX3F1ZXVlKTsKLSAgICBQeV9YU0VUUkVGKHRhcmdldC0+ZXZlbnRzLCBldmVudHNfcXVldWUpOworICAgIGV2ZW50c19hcHBlbmQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGV2ZW50c19xdWV1ZSwgImFwcGVuZCIpOworICAgIGlmIChldmVudHNfYXBwZW5kID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1hTRVRSRUYodGFyZ2V0LT5ldmVudHNfYXBwZW5kLCBldmVudHNfYXBwZW5kKTsKIAogICAgIC8qIGNsZWFyIG91dCBleGlzdGluZyBldmVudHMgKi8KICAgICBQeV9DTEVBUih0YXJnZXQtPnN0YXJ0X2V2ZW50X29iaik7CkBAIC0zNzI3LDcgKzM3MDIsNyBAQAogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJURVhUX01FVEhPRERFRgogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJGSU5EX01FVEhPRERFRgogCi0gICAgeyJnZXRpdGVyYXRvciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAorICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVENISUxEUkVOX01FVEhPRERFRgogCiAgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFTVNfTUVUSE9EREVGCkBAIC0zNzUwLDYgKzM3MjUsMjYgQEAKICAgICAob2Jqb2JqYXJncHJvYykgZWxlbWVudF9hc3Nfc3Vic2NyLAogfTsKIAorc3RhdGljIFB5R2V0U2V0RGVmIGVsZW1lbnRfZ2V0c2V0bGlzdFtdID0geworICAgIHsidGFnIiwKKyAgICAgICAgKGdldHRlcillbGVtZW50X3RhZ19nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF90YWdfc2V0dGVyLAorICAgICAgICAiQSBzdHJpbmcgaWRlbnRpZnlpbmcgd2hhdCBraW5kIG9mIGRhdGEgdGhpcyBlbGVtZW50IHJlcHJlc2VudHMifSwKKyAgICB7InRleHQiLAorICAgICAgICAoZ2V0dGVyKWVsZW1lbnRfdGV4dF9nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF90ZXh0X3NldHRlciwKKyAgICAgICAgIkEgc3RyaW5nIG9mIHRleHQgZGlyZWN0bHkgYWZ0ZXIgdGhlIHN0YXJ0IHRhZywgb3IgTm9uZSJ9LAorICAgIHsidGFpbCIsCisgICAgICAgIChnZXR0ZXIpZWxlbWVudF90YWlsX2dldHRlciwKKyAgICAgICAgKHNldHRlcillbGVtZW50X3RhaWxfc2V0dGVyLAorICAgICAgICAiQSBzdHJpbmcgb2YgdGV4dCBkaXJlY3RseSBhZnRlciB0aGUgZW5kIHRhZywgb3IgTm9uZSJ9LAorICAgIHsiYXR0cmliIiwKKyAgICAgICAgKGdldHRlcillbGVtZW50X2F0dHJpYl9nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF9hdHRyaWJfc2V0dGVyLAorICAgICAgICAiQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzIn0sCisgICAge05VTEx9LAorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLApAQCAtMzc2Niw4ICszNzYxLDggQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIChnZXRhdHRyb2Z1bmMpZWxlbWVudF9nZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgKHNldGF0dHJvZnVuYyllbGVtZW50X3NldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwpAQCAtMzc4MCw3ICszNzc1LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGVsZW1lbnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgZWxlbWVudF9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKaW5kZXggZDc4NWM0OS4uZmE1ZmFkMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKQEAgLTEyOCw0NCArMTI4LDYwIEBACiB7CiAgICAgUHlPYmplY3QgKnJldDsKICAgICBQeU9iamVjdCAqYXJnYXBwbCwgKmt3YXBwbDsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CiAKICAgICBhc3NlcnQgKFB5Q2FsbGFibGVfQ2hlY2socHRvLT5mbikpOwogICAgIGFzc2VydCAoUHlUdXBsZV9DaGVjayhwdG8tPmFyZ3MpKTsKICAgICBhc3NlcnQgKFB5RGljdF9DaGVjayhwdG8tPmt3KSk7CiAKICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShwdG8tPmFyZ3MpID09IDApIHsKLSAgICAgICAgYXJnYXBwbCA9IGFyZ3M7Ci0gICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKLSAgICB9IGVsc2UgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkgewotICAgICAgICBhcmdhcHBsID0gcHRvLT5hcmdzOwotICAgICAgICBQeV9JTkNSRUYocHRvLT5hcmdzKTsKLSAgICB9IGVsc2UgeworICAgICAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgICAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgICAgIGFyZ2FwcGwgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApIHsKKyAgICAgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShwdG8tPmFyZ3MsIDApOworICAgICAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUocHRvLT5hcmdzKTsKKyAgICAgICAgYXJnYXBwbCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IE5VTEw7CiAgICAgICAgIGFyZ2FwcGwgPSBQeVNlcXVlbmNlX0NvbmNhdChwdG8tPmFyZ3MsIGFyZ3MpOwotICAgICAgICBpZiAoYXJnYXBwbCA9PSBOVUxMKQorICAgICAgICBpZiAoYXJnYXBwbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCiAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ2FwcGwpKTsKICAgICB9CiAKICAgICBpZiAoUHlEaWN0X1NpemUocHRvLT5rdykgPT0gMCkgewogICAgICAgICBrd2FwcGwgPSBrdzsKICAgICAgICAgUHlfWElOQ1JFRihrd2FwcGwpOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBrd2FwcGwgPSBQeURpY3RfQ29weShwdG8tPmt3KTsKICAgICAgICAgaWYgKGt3YXBwbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJnYXBwbCk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ2FwcGwpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoa3cgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RGljdF9NZXJnZShrd2FwcGwsIGt3LCAxKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoYXJnYXBwbCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGt3YXBwbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXQgPSBQeU9iamVjdF9DYWxsKHB0by0+Zm4sIGFyZ2FwcGwsIGt3YXBwbCk7Ci0gICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgIGlmIChzdGFjaykgeworICAgICAgICByZXQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHB0by0+Zm4sIHN0YWNrLCBuYXJncywga3dhcHBsKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGwocHRvLT5mbiwgYXJnYXBwbCwga3dhcHBsKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgIH0KICAgICBQeV9YREVDUkVGKGt3YXBwbCk7CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTIxMyw3ICsyMjksNyBAQAogICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICBpZiAoc3RhdHVzIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKC4uLikiLCBQeV9UWVBFKHB0byktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIi4uLiIpOwogICAgIH0KIAogICAgIGFyZ2xpc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7CkBAIC00NjEsMTIgKzQ3NywxMiBAQAoga2V5b2JqZWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICprbywgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBQeU9iamVjdCAqYXJnczsKICAgICBQeU9iamVjdCAqeDsKICAgICBQeU9iamVjdCAqeTsKICAgICBQeU9iamVjdCAqY29tcGFyZTsKICAgICBQeU9iamVjdCAqYW5zd2VyOwogICAgIHN0YXRpYyBQeU9iamVjdCAqemVybzsKKyAgICBQeU9iamVjdCogc3RhY2tbMl07CiAKICAgICBpZiAoemVybyA9PSBOVUxMKSB7CiAgICAgICAgIHplcm8gPSBQeUxvbmdfRnJvbUxvbmcoMCk7CkBAIC00OTAsMTcgKzUwNiwxMyBAQAogICAgIC8qIENhbGwgdGhlIHVzZXIncyBjb21wYXJpc29uIGZ1bmN0aW9uIGFuZCB0cmFuc2xhdGUgdGhlIDMtd2F5CiAgICAgICogcmVzdWx0IGludG8gdHJ1ZSBvciBmYWxzZSAob3IgZXJyb3IpLgogICAgICAqLwotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgIHN0YWNrWzBdID0geDsKKyAgICBzdGFja1sxXSA9IHk7CisgICAgcmVzID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNvbXBhcmUsIHN0YWNrLCAyKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKHgpOwotICAgIFB5X0lOQ1JFRih5KTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIHgpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgeSk7Ci0gICAgcmVzID0gUHlPYmplY3RfQ2FsbChjb21wYXJlLCBhcmdzLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBhbnN3ZXIgPSBQeU9iamVjdF9SaWNoQ29tcGFyZShyZXMsIHplcm8sIG9wKTsKICAgICBQeV9ERUNSRUYocmVzKTsKICAgICByZXR1cm4gYW5zd2VyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZ2RibW1vZHVsZS5jIGIvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCmluZGV4IGI4NDBiZjUuLmRhYWU3MWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2dkYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKQEAgLTYxNCw3ICs2MTQsNyBAQAogICAgIHJldHVybiBuZXdkYm1vYmplY3QobmFtZSwgaWZsYWdzLCBtb2RlKTsKIH0KIAotc3RhdGljIGNoYXIgZGJtbW9kdWxlX29wZW5fZmxhZ3NbXSA9ICJyd2NuIgorc3RhdGljIGNvbnN0IGNoYXIgZGJtbW9kdWxlX29wZW5fZmxhZ3NbXSA9ICJyd2NuIgogI2lmZGVmIEdEQk1fRkFTVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmIgogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19oYXNob3BlbnNzbC5jIGIvTW9kdWxlcy9faGFzaG9wZW5zc2wuYwppbmRleCBmZjU3NjE0Li5kYWE0ZjNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCisrKyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKQEAgLTI1LDYgKzI1LDEyIEBACiAjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+CiAjaW5jbHVkZSAib3BlbnNzbC9lcnIuaCIKIAorI2luY2x1ZGUgImNsaW5pYy9faGFzaG9wZW5zc2wuYy5oIgorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9oYXNobGliCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jMmI0ZmYwODFiYWM0YmUxXSovCisKICNkZWZpbmUgTVVOQ0hfU0laRSBJTlRfTUFYCiAKICNpZm5kZWYgSEFTSF9PQkpfQ09OU1RSVUNUT1IKQEAgLTcxMyw2ICs3MTksMTI4IEBACiAKICNlbmRpZgogCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+IDB4MTAxMDAwMDBMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0NSWVBUKSAmJiAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKKyNkZWZpbmUgUFlfU0NSWVBUIDEKKworLypbY2xpbmljIGlucHV0XQorX2hhc2hsaWIuc2NyeXB0CisKKyAgICBwYXNzd29yZDogUHlfYnVmZmVyCisgICAgKgorICAgIHNhbHQ6IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBuIGFzIG5fb2JqOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxvbmdfVHlwZScpID0gTm9uZQorICAgIHIgYXMgcl9vYmo6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TG9uZ19UeXBlJykgPSBOb25lCisgICAgcCBhcyBwX29iajogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMb25nX1R5cGUnKSA9IE5vbmUKKyAgICBtYXhtZW06IGxvbmcgPSAwCisgICAgZGtsZW46IGxvbmcgPSA2NAorCisKK3NjcnlwdCBwYXNzd29yZC1iYXNlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19oYXNobGliX3NjcnlwdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqcGFzc3dvcmQsIFB5X2J1ZmZlciAqc2FsdCwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuX29iaiwgUHlPYmplY3QgKnJfb2JqLCBQeU9iamVjdCAqcF9vYmosCisgICAgICAgICAgICAgICAgICAgICBsb25nIG1heG1lbSwgbG9uZyBka2xlbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDg0OWUyYWEyYjdiNDZjIGlucHV0PTQ4YTdkNjNiZjNmNzVjNDJdKi8KK3sKKyAgICBQeU9iamVjdCAqa2V5X29iaiA9IE5VTEw7CisgICAgY2hhciAqa2V5OworICAgIGludCByZXR2YWw7CisgICAgdW5zaWduZWQgbG9uZyBuLCByLCBwOworCisgICAgaWYgKHBhc3N3b3JkLT5sZW4gPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInBhc3N3b3JkIGlzIHRvbyBsb25nLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc2FsdC0+YnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzYWx0IGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoc2FsdC0+bGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzYWx0IGlzIHRvbyBsb25nLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuID0gUHlMb25nX0FzVW5zaWduZWRMb25nKG5fb2JqKTsKKyAgICBpZiAobiA9PSAodW5zaWduZWQgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm4gaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYW4gdW5zaWduZWQgaW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobiA8IDIgfHwgbiAmIChuIC0gMSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibiBtdXN0IGJlIGEgcG93ZXIgb2YgMi4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgciA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhyX29iaik7CisgICAgaWYgKHIgPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiciBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhbiB1bnNpZ25lZCBpbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhwX29iaik7CisgICAgaWYgKHAgPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicCBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhbiB1bnNpZ25lZCBpbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG1heG1lbSA8IDAgfHwgbWF4bWVtID4gSU5UX01BWCkgeworICAgICAgICAvKiBPcGVuU1NMIDEuMS4wIHJlc3RyaWN0cyBtYXhtZW0gdG8gMzJNQi4gSXQgbWF5IGNoYW5nZSBpbiB0aGUKKyAgICAgICAgICAgZnV0dXJlLiBUaGUgbWF4bWVtIGNvbnN0YW50IGlzIHByaXZhdGUgdG8gT3BlblNTTC4gKi8KKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAibWF4bWVtIG11c3QgYmUgcG9zaXRpdmUgYW5kIHNtYWxsZXIgdGhhbiAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgSU5UX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChka2xlbiA8IDEgfHwgZGtsZW4gPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiZGtsZW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMCBhbmQgc21hbGxlciB0aGFuICVkIiwKKyAgICAgICAgICAgICAgICAgICAgSU5UX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGxldCBPcGVuU1NMIHZhbGlkYXRlIHRoZSByZXN0ICovCisgICAgcmV0dmFsID0gRVZQX1BCRV9zY3J5cHQoTlVMTCwgMCwgTlVMTCwgMCwgbiwgciwgcCwgbWF4bWVtLCBOVUxMLCAwKTsKKyAgICBpZiAoIXJldHZhbCkgeworICAgICAgICAvKiBzb3JyeSwgY2FuJ3QgZG8gbXVjaCBiZXR0ZXIgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBwYXJhbWVtdGVyIGNvbWJpbmF0aW9uIGZvciBuLCByLCBwLCBtYXhtZW0uIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgfQorCisgICAga2V5X29iaiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZGtsZW4pOworICAgIGlmIChrZXlfb2JqID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGtleSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGtleV9vYmopOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldHZhbCA9IEVWUF9QQkVfc2NyeXB0KAorICAgICAgICAoY29uc3QgY2hhciopcGFzc3dvcmQtPmJ1ZiwgKHNpemVfdClwYXNzd29yZC0+bGVuLAorICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKXNhbHQtPmJ1ZiwgKHNpemVfdClzYWx0LT5sZW4sCisgICAgICAgIG4sIHIsIHAsIG1heG1lbSwKKyAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilrZXksIChzaXplX3QpZGtsZW4KKyAgICApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXJldHZhbCkgeworICAgICAgICBQeV9DTEVBUihrZXlfb2JqKTsKKyAgICAgICAgX3NldEV4Y2VwdGlvbihQeUV4Y19WYWx1ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBrZXlfb2JqOworfQorI2VuZGlmCisKIC8qIFN0YXRlIGZvciBvdXIgY2FsbGJhY2sgZnVuY3Rpb24gc28gdGhhdCBpdCBjYW4gYWNjdW11bGF0ZSBhIHJlc3VsdC4gKi8KIHR5cGVkZWYgc3RydWN0IF9pbnRlcm5hbF9uYW1lX21hcHBlcl9zdGF0ZSB7CiAgICAgUHlPYmplY3QgKnNldDsKQEAgLTgzNiw2ICs5NjQsNyBAQAogICAgIHsicGJrZGYyX2htYWMiLCAoUHlDRnVuY3Rpb24pcGJrZGYyX2htYWMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICBwYmtkZjJfaG1hY19fZG9jX199LAogI2VuZGlmCisgICAgX0hBU0hMSUJfU0NSWVBUX01FVEhPRERFRgogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKG1kNSksCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYoc2hhMSksCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYoc2hhMjI0KSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMgYi9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCmluZGV4IDEzNmFiZjUuLmI0OTllMWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faGVhcHFtb2R1bGUuYwpAQCAtNjYsNyArNjYsNyBAQAogCiAgICAgLyogQnViYmxlIHVwIHRoZSBzbWFsbGVyIGNoaWxkIHVudGlsIGhpdHRpbmcgYSBsZWFmLiAqLwogICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7Ci0gICAgbGltaXQgPSBlbmRwb3MgLyAyOyAgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KKyAgICBsaW1pdCA9IGVuZHBvcyA+PiAxOyAgICAgICAgIC8qIHNtYWxsZXN0IHBvcyB0aGF0IGhhcyBubyBjaGlsZCAqLwogICAgIHdoaWxlIChwb3MgPCBsaW1pdCkgewogICAgICAgICAvKiBTZXQgY2hpbGRwb3MgdG8gaW5kZXggb2Ygc21hbGxlciBjaGlsZC4gICAqLwogICAgICAgICBjaGlsZHBvcyA9IDIqcG9zICsgMTsgICAgLyogbGVmdG1vc3QgY2hpbGQgcG9zaXRpb24gICovCkBAIC03OCw2ICs3OCw3IEBACiAgICAgICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBjaGlsZHBvcyArPSAoKHVuc2lnbmVkKWNtcCBeIDEpOyAgIC8qIGluY3JlbWVudCB3aGVuIGNtcD09MCAqLworICAgICAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsgICAgICAgICAvKiBhcnIgbWF5IGhhdmUgY2hhbmdlZCAqLwogICAgICAgICAgICAgaWYgKGVuZHBvcyAhPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwpAQCAtODUsNyArODYsNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8qIE1vdmUgdGhlIHNtYWxsZXIgY2hpbGQgdXAuICovCi0gICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CiAgICAgICAgIHRtcDEgPSBhcnJbY2hpbGRwb3NdOwogICAgICAgICB0bXAyID0gYXJyW3Bvc107CiAgICAgICAgIGFycltjaGlsZHBvc10gPSB0bXAyOwpAQCAtMzQ3LDcgKzM0Nyw3IEBACiAgICAgICAgbiBpcyBvZGQgPSAyKmorMSwgdGhpcyBpcyAoMipqKzEtMSkvMiA9IGogc28gai0xIGlzIHRoZSBsYXJnZXN0LAogICAgICAgIGFuZCB0aGF0J3MgYWdhaW4gbi8vMi0xLgogICAgICovCi0gICAgZm9yIChpID0gbi8yIC0gMSA7IGkgPj0gMCA7IGktLSkKKyAgICBmb3IgKGkgPSAobiA+PiAxKSAtIDEgOyBpID49IDAgOyBpLS0pCiAgICAgICAgIGlmIChzaWZ0dXBfZnVuYygoUHlMaXN0T2JqZWN0ICopaGVhcCwgaSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTQyMCw3ICs0MjAsNyBAQAogCiAgICAgLyogQnViYmxlIHVwIHRoZSBzbWFsbGVyIGNoaWxkIHVudGlsIGhpdHRpbmcgYSBsZWFmLiAqLwogICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7Ci0gICAgbGltaXQgPSBlbmRwb3MgLyAyOyAgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KKyAgICBsaW1pdCA9IGVuZHBvcyA+PiAxOyAgICAgICAgIC8qIHNtYWxsZXN0IHBvcyB0aGF0IGhhcyBubyBjaGlsZCAqLwogICAgIHdoaWxlIChwb3MgPCBsaW1pdCkgewogICAgICAgICAvKiBTZXQgY2hpbGRwb3MgdG8gaW5kZXggb2Ygc21hbGxlciBjaGlsZC4gICAqLwogICAgICAgICBjaGlsZHBvcyA9IDIqcG9zICsgMTsgICAgLyogbGVmdG1vc3QgY2hpbGQgcG9zaXRpb24gICovCkBAIC00MzIsNiArNDMyLDcgQEAKICAgICAgICAgICAgIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGNoaWxkcG9zICs9ICgodW5zaWduZWQpY21wIF4gMSk7ICAgLyogaW5jcmVtZW50IHdoZW4gY21wPT0wICovCisgICAgICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOyAgICAgICAgIC8qIGFyciBtYXkgaGF2ZSBjaGFuZ2VkICovCiAgICAgICAgICAgICBpZiAoZW5kcG9zICE9IFB5TGlzdF9HRVRfU0laRShoZWFwKSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CkBAIC00MzksNyArNDQwLDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvKiBNb3ZlIHRoZSBzbWFsbGVyIGNoaWxkIHVwLiAqLwotICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwogICAgICAgICB0bXAxID0gYXJyW2NoaWxkcG9zXTsKICAgICAgICAgdG1wMiA9IGFycltwb3NdOwogICAgICAgICBhcnJbY2hpbGRwb3NdID0gdG1wMjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKaW5kZXggNjVjOTU1YS4uNjBmOGI1NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKQEAgLTIwLDYgKzIwLDkgQEAKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2VuZGlmIC8qIEhBVkVfU1lTX1NUQVRfSCAqLwogCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPGNvbnNvbGVhcGkuaD4KKyNlbmRpZgogCiAvKiBWYXJpb3VzIGludGVybmVkIHN0cmluZ3MgKi8KIApAQCAtNTIsNyArNTUsNiBAQAogUHlPYmplY3QgKl9QeUlPX2VtcHR5X2J5dGVzOwogUHlPYmplY3QgKl9QeUlPX3plcm87CiAKLQwKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogIlRoZSBpbyBtb2R1bGUgcHJvdmlkZXMgdGhlIFB5dGhvbiBpbnRlcmZhY2VzIHRvIHN0cmVhbSBoYW5kbGluZy4gVGhlXG4iCiAiYnVpbHRpbiBvcGVuIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUuXG4iCkBAIC0yMzgsMjAgKzI0MCwzMyBAQAogICAgIGludCB0ZXh0ID0gMCwgYmluYXJ5ID0gMCwgdW5pdmVyc2FsID0gMDsKIAogICAgIGNoYXIgcmF3bW9kZVs2XSwgKm07Ci0gICAgaW50IGxpbmVfYnVmZmVyaW5nLCBpc2F0dHk7CisgICAgaW50IGxpbmVfYnVmZmVyaW5nLCBpc19udW1iZXI7CisgICAgbG9uZyBpc2F0dHk7CiAKLSAgICBQeU9iamVjdCAqcmF3LCAqbW9kZW9iaiA9IE5VTEwsICpidWZmZXIsICp3cmFwcGVyLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmF3LCAqbW9kZW9iaiA9IE5VTEwsICpidWZmZXIsICp3cmFwcGVyLCAqcmVzdWx0ID0gTlVMTCwgKnBhdGhfb3JfZmQgPSBOVUxMOwogCiAgICAgX1B5X0lERU5USUZJRVIoX2Jsa3NpemUpOwogICAgIF9QeV9JREVOVElGSUVSKGlzYXR0eSk7CiAgICAgX1B5X0lERU5USUZJRVIobW9kZSk7CiAgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOwogCi0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZmlsZSkgJiYKLQkhUHlCeXRlc19DaGVjayhmaWxlKSAmJgotCSFQeU51bWJlcl9DaGVjayhmaWxlKSkgeworICAgIGlzX251bWJlciA9IFB5TnVtYmVyX0NoZWNrKGZpbGUpOworCisgICAgaWYgKGlzX251bWJlcikgeworICAgICAgICBwYXRoX29yX2ZkID0gZmlsZTsKKyAgICAgICAgUHlfSU5DUkVGKHBhdGhfb3JfZmQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHBhdGhfb3JfZmQgPSBQeU9TX0ZTUGF0aChmaWxlKTsKKyAgICAgICAgaWYgKHBhdGhfb3JfZmQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWlzX251bWJlciAmJgorICAgICAgICAhUHlVbmljb2RlX0NoZWNrKHBhdGhfb3JfZmQpICYmCisgICAgICAgICFQeUJ5dGVzX0NoZWNrKHBhdGhfb3JfZmQpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGZpbGU6ICVSIiwgZmlsZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIC8qIERlY29kZSBtb2RlICovCkBAIC0yOTIsNyArMzA3LDcgQEAKICAgICAgICAgaWYgKHN0cmNocihtb2RlK2krMSwgYykpIHsKICAgICAgICAgICBpbnZhbGlkX21vZGU6CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgbW9kZTogJyVzJyIsIG1vZGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAKICAgICB9CkBAIC0zMDcsNTQgKzMyMiw2NyBAQAogCiAgICAgLyogUGFyYW1ldGVycyB2YWxpZGF0aW9uICovCiAgICAgaWYgKHVuaXZlcnNhbCkgewotICAgICAgICBpZiAod3JpdGluZyB8fCBhcHBlbmRpbmcpIHsKKyAgICAgICAgaWYgKGNyZWF0aW5nIHx8IHdyaXRpbmcgfHwgYXBwZW5kaW5nIHx8IHVwZGF0aW5nKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIFUgYW5kIHdyaXRpbmcgbW9kZSBhdCBvbmNlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZSBVIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIHgnLCAndycsICdhJywgb3IgJysnIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICInVScgbW9kZSBpcyBkZXByZWNhdGVkIiwgMSkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICByZWFkaW5nID0gMTsKICAgICB9CiAKICAgICBpZiAodGV4dCAmJiBiaW5hcnkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgaGF2ZSB0ZXh0IGFuZCBiaW5hcnkgbW9kZSBhdCBvbmNlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIGlmIChjcmVhdGluZyArIHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgY3JlYXRlL3JlYWQvd3JpdGUvYXBwZW5kIG1vZGUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgaWYgKGJpbmFyeSAmJiBlbmNvZGluZyAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhbiBlbmNvZGluZyBhcmd1bWVudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICBpZiAoYmluYXJ5ICYmIGVycm9ycyAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhbiBlcnJvcnMgYXJndW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgaWYgKGJpbmFyeSAmJiBuZXdsaW5lICE9IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYmluYXJ5IG1vZGUgZG9lc24ndCB0YWtlIGEgbmV3bGluZSBhcmd1bWVudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICAvKiBDcmVhdGUgdGhlIFJhdyBmaWxlIHN0cmVhbSAqLwotICAgIHJhdyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikmUHlGaWxlSU9fVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9zaU8iLCBmaWxlLCByYXdtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOworICAgIHsKKyAgICAgICAgUHlPYmplY3QgKlJhd0lPX2NsYXNzID0gKFB5T2JqZWN0ICopJlB5RmlsZUlPX1R5cGU7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBpZiAoIVB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgJiYgX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZShwYXRoX29yX2ZkKSAhPSAnXDAnKSB7CisgICAgICAgICAgICBSYXdJT19jbGFzcyA9IChQeU9iamVjdCAqKSZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKyAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIHJhdyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihSYXdJT19jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPc2lPIiwgcGF0aF9vcl9mZCwgcmF3bW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKKyAgICB9CisKICAgICBpZiAocmF3ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIHJlc3VsdCA9IHJhdzsKIAorICAgIFB5X0RFQ1JFRihwYXRoX29yX2ZkKTsKKyAgICBwYXRoX29yX2ZkID0gTlVMTDsKKwogICAgIG1vZGVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtb2RlKTsKICAgICBpZiAobW9kZW9iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNDM3LDEwICs0NjUsMTAgQEAKIAogICAgIC8qIHdyYXBzIGludG8gYSBUZXh0SU9XcmFwcGVyICovCiAgICAgd3JhcHBlciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikmUHlUZXh0SU9XcmFwcGVyX1R5cGUsCi0JCQkJICAgICJPc3NzaSIsCi0JCQkJICAgIGJ1ZmZlciwKLQkJCQkgICAgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwKLQkJCQkgICAgbGluZV9idWZmZXJpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9zc3NpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZyk7CiAgICAgaWYgKHdyYXBwZXIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICByZXN1bHQgPSB3cmFwcGVyOwpAQCAtNDYwLDYgKzQ4OCw3IEBACiAgICAgICAgIFB5X1hERUNSRUYoY2xvc2VfcmVzdWx0KTsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgfQorICAgIFB5X1hERUNSRUYocGF0aF9vcl9mZCk7CiAgICAgUHlfWERFQ1JFRihtb2Rlb2JqKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTY5MSw2ICs3MjAsMTIgQEAKICAgICBQeVN0cmluZ0lPX1R5cGUudHBfYmFzZSA9ICZQeVRleHRJT0Jhc2VfVHlwZTsKICAgICBBRERfVFlQRSgmUHlTdHJpbmdJT19UeXBlLCAiU3RyaW5nSU8iKTsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBXaW5kb3dzQ29uc29sZUlPICovCisgICAgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUudHBfYmFzZSA9ICZQeVJhd0lPQmFzZV9UeXBlOworICAgIEFERF9UWVBFKCZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZSwgIl9XaW5kb3dzQ29uc29sZUlPIik7CisjZW5kaWYKKwogICAgIC8qIEJ1ZmZlcmVkUmVhZGVyICovCiAgICAgUHlCdWZmZXJlZFJlYWRlcl9UeXBlLnRwX2Jhc2UgPSAmUHlCdWZmZXJlZElPQmFzZV9UeXBlOwogICAgIEFERF9UWVBFKCZQeUJ1ZmZlcmVkUmVhZGVyX1R5cGUsICJCdWZmZXJlZFJlYWRlciIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmggYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAppbmRleCAwYzZlYWUyLi5kYWFlYmQyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAorKysgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaApAQCAtMTksNiArMTksMTMgQEAKIGV4dGVybiBQeVR5cGVPYmplY3QgUHlUZXh0SU9XcmFwcGVyX1R5cGU7CiBleHRlcm4gUHlUeXBlT2JqZWN0IFB5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9UeXBlOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisjaWZkZWYgTVNfV0lORE9XUworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgX1B5V2luZG93c0NvbnNvbGVJT19UeXBlOworI2RlZmluZSBQeVdpbmRvd3NDb25zb2xlSU9fQ2hlY2sob3ApIChQeU9iamVjdF9UeXBlQ2hlY2soKG9wKSwgKFB5VHlwZU9iamVjdCopX1B5V2luZG93c0NvbnNvbGVJT19UeXBlKSkKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogZXh0ZXJuIGludCBfUHlJT19Db252ZXJ0U3NpemVfdChQeU9iamVjdCAqLCB2b2lkICopOwogCkBAIC02MCw3ICs2Nyw3IEBACiAgICAqIE90aGVyd2lzZSwgdGhlIGxpbmUgZW5kaW5nIGlzIHNwZWNpZmllZCBieSByZWFkbmwsIGEgc3RyIG9iamVjdCAqLwogZXh0ZXJuIFB5X3NzaXplX3QgX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICBpbnQgdHJhbnNsYXRlZCwgaW50IHVuaXZlcnNhbCwgUHlPYmplY3QgKnJlYWRubCwKLSAgICBpbnQga2luZCwgY2hhciAqc3RhcnQsIGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOworICAgIGludCBraW5kLCBjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCk7CiAKIC8qIFJldHVybiAxIGlmIGFuIEVudmlyb25tZW50RXJyb3Igd2l0aCBlcnJubyA9PSBFSU5UUiBpcyBzZXQgKGFuZCB0aGVuCiAgICBjbGVhcnMgdGhlIGVycm9yIGluZGljYXRvciksIDAgb3RoZXJ3aXNlLgpAQCAtODUsMTIgKzkyLDEyIEBACiAjaWZkZWYgTVNfV0lORE9XUwogCiAvKiBXaW5kb3dzIHVzZXMgbG9uZyBsb25nIGZvciBvZmZzZXRzICovCi10eXBlZGVmIFBZX0xPTkdfTE9ORyBQeV9vZmZfdDsKK3R5cGVkZWYgbG9uZyBsb25nIFB5X29mZl90OwogIyBkZWZpbmUgUHlMb25nX0FzT2ZmX3QgICAgIFB5TG9uZ19Bc0xvbmdMb25nCiAjIGRlZmluZSBQeUxvbmdfRnJvbU9mZl90ICAgUHlMb25nX0Zyb21Mb25nTG9uZwotIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIFBZX0xMT05HX01BWAotIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIFBZX0xMT05HX01JTgotIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIFBZX0xPTkdfTE9ORyAvKiB0eXBlIGNvbXBhdGlibGUgd2l0aCBvZmZfdCAqLworIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIExMT05HX01BWAorIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIExMT05HX01JTgorIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIGxvbmcgbG9uZyAgICAvKiB0eXBlIGNvbXBhdGlibGUgd2l0aCBvZmZfdCAqLwogIyBkZWZpbmUgUFlfUFJJZE9GRiAgICAgICAgICJsbGQiICAgICAgICAvKiBmb3JtYXQgdG8gdXNlIGZvciB0aGF0IHR5cGUgKi8KIAogI2Vsc2UKQEAgLTEwNCwxMiArMTExLDEyIEBACiAjIGRlZmluZSBQWV9PRkZfVF9NSU4gICAgICAgUFlfU1NJWkVfVF9NSU4KICMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBQeV9zc2l6ZV90CiAjIGRlZmluZSBQWV9QUklkT0ZGICAgICAgICAgInpkIgotI2VsaWYgKEhBVkVfTE9OR19MT05HICYmIFNJWkVPRl9PRkZfVCA9PSBTSVpFT0ZfTE9OR19MT05HKQorI2VsaWYgKFNJWkVPRl9PRkZfVCA9PSBTSVpFT0ZfTE9OR19MT05HKQogIyBkZWZpbmUgUHlMb25nX0FzT2ZmX3QgICAgIFB5TG9uZ19Bc0xvbmdMb25nCiAjIGRlZmluZSBQeUxvbmdfRnJvbU9mZl90ICAgUHlMb25nX0Zyb21Mb25nTG9uZwotIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIFBZX0xMT05HX01BWAotIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIFBZX0xMT05HX01JTgotIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIFBZX0xPTkdfTE9ORworIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIExMT05HX01BWAorIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIExMT05HX01JTgorIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIGxvbmcgbG9uZwogIyBkZWZpbmUgUFlfUFJJZE9GRiAgICAgICAgICJsbGQiCiAjZWxpZiAoU0laRU9GX09GRl9UID09IFNJWkVPRl9MT05HKQogIyBkZWZpbmUgUHlMb25nX0FzT2ZmX3QgICAgIFB5TG9uZ19Bc0xvbmcKQEAgLTE0NSw2ICsxNTIsMTAgQEAKIGV4dGVybiBfUHlJT19TdGF0ZSAqX1B5SU9fZ2V0X21vZHVsZV9zdGF0ZSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fZ2V0X2xvY2FsZV9tb2R1bGUoX1B5SU9fU3RhdGUgKik7CiAKKyNpZmRlZiBNU19XSU5ET1dTCitleHRlcm4gY2hhciBfUHlJT19nZXRfY29uc29sZV90eXBlKFB5T2JqZWN0ICopOworI2VuZGlmCisKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX2Nsb3NlOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfY2xvc2VkOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfZGVjb2RlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCmluZGV4IDZkNjc3NTEuLmNiZTc0MjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYworKysgYi9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKQEAgLTY1OSw3ICs2NTksNyBAQAogCiAvKiBTZXRzIHRoZSBjdXJyZW50IGVycm9yIHRvIEJsb2NraW5nSU9FcnJvciAqLwogc3RhdGljIHZvaWQKLV9zZXRfQmxvY2tpbmdJT0Vycm9yKGNoYXIgKm1zZywgUHlfc3NpemVfdCB3cml0dGVuKQorX3NldF9CbG9ja2luZ0lPRXJyb3IoY29uc3QgY2hhciAqbXNnLCBQeV9zc2l6ZV90IHdyaXR0ZW4pCiB7CiAgICAgUHlPYmplY3QgKmVycjsKICAgICBQeUVycl9DbGVhcigpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCmluZGV4IDllNWQ3OGIuLmExYmExMjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYworKysgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKQEAgLTg3LDcgKzg3LDcgQEAKIHN0YXRpYyBpbnQKIHVuc2hhcmVfYnVmZmVyKGJ5dGVzaW8gKnNlbGYsIHNpemVfdCBzaXplKQogewotICAgIFB5T2JqZWN0ICpuZXdfYnVmLCAqb2xkX2J1ZjsKKyAgICBQeU9iamVjdCAqbmV3X2J1ZjsKICAgICBhc3NlcnQoU0hBUkVEX0JVRihzZWxmKSk7CiAgICAgYXNzZXJ0KHNlbGYtPmV4cG9ydHMgPT0gMCk7CiAgICAgYXNzZXJ0KHNpemUgPj0gKHNpemVfdClzZWxmLT5zdHJpbmdfc2l6ZSk7CkBAIC05Niw5ICs5Niw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcobmV3X2J1ZiksIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZiksCiAgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplKTsKLSAgICBvbGRfYnVmID0gc2VsZi0+YnVmOwotICAgIHNlbGYtPmJ1ZiA9IG5ld19idWY7Ci0gICAgUHlfREVDUkVGKG9sZF9idWYpOworICAgIFB5X1NFVFJFRihzZWxmLT5idWYsIG5ld19idWYpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9faW9tb2R1bGUuYy5oCmluZGV4IDZjODhlMzIuLmYyZTkxYTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9faW9tb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9faW9tb2R1bGUuYy5oCkBAIC0xMjcsNyArMTI3LDcgQEAKICJvcGVuZWQgaW4gYSBiaW5hcnkgbW9kZS4iKTsKIAogI2RlZmluZSBfSU9fT1BFTl9NRVRIT0RERUYgICAgXAotICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilfaW9fb3BlbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9pb19vcGVuX19kb2NfX30sCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKV9pb19vcGVuLCBNRVRIX0ZBU1RDQUxMLCBfaW9fb3Blbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2lvX29wZW5faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgY29uc3QgY2hhciAqbW9kZSwKQEAgLTEzNSwxMCArMTM1LDExIEBACiAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUsIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9pb19vcGVuKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2lvX29wZW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJidWZmZXJpbmciLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgIm5ld2xpbmUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xzaXp6emlPOm9wZW4iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIGNvbnN0IGNoYXIgKm1vZGUgPSAiciI7CiAgICAgaW50IGJ1ZmZlcmluZyA9IC0xOwpAQCAtMTQ4LDEyICsxNDksMTMgQEAKICAgICBpbnQgY2xvc2VmZCA9IDE7CiAgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNpenp6aU86b3BlbiIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZpbGUsICZtb2RlLCAmYnVmZmVyaW5nLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmY2xvc2VmZCwgJm9wZW5lcikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmNsb3NlZmQsICZvcGVuZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX29wZW5faW1wbChtb2R1bGUsIGZpbGUsIG1vZGUsIGJ1ZmZlcmluZywgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwgY2xvc2VmZCwgb3BlbmVyKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJjMmMwMDNjYjdkYWVhZmUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM1YjhmYzhiODMxMDJiYmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCmluZGV4IDQzN2UyNzUuLjU4MTQ0YTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmgKQEAgLTE5LDE0ICsxOSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDgsMTQgKzUwLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8xIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC05OSw4ICsxMDMsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBlZWsiLAotICAgICAgICAmc2l6ZSkpCisgICAgICAgICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcGVla19pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMTI1LDggKzEzMCw5IEBACiAgICAgUHlfc3NpemVfdCBuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcmVhZF9pbXBsKHNlbGYsIG4pOwogCiBleGl0OgpAQCAtMTUwLDggKzE1Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJuOnJlYWQxIiwgJm4pKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjpyZWFkMSIsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcmVhZDFfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTE3NSwxNCArMTgyLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yMDQsMTQgKzIxMywxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8xIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvMV9pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjM0LDggKzI0NSw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZSIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lX2ltcGwoc2VsZiwgc2l6ZSk7CiAKIGV4aXQ6CkBAIC0yNjEsOCArMjczLDkgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnNlZWsiLAotICAgICAgICAmdGFyZ2V0b2JqLCAmd2hlbmNlKSkKKyAgICAgICAgJnRhcmdldG9iaiwgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3NlZWtfaW1wbChzZWxmLCB0YXJnZXRvYmosIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC0yODgsOCArMzAxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnBvcykpCisgICAgICAgICZwb3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF90cnVuY2F0ZV9pbXBsKHNlbGYsIHBvcyk7CiAKIGV4aXQ6CkBAIC0zMTAsMTMgKzMyNCwxNSBAQAogX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG46QnVmZmVyZWRSZWFkZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpyYXc7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG46QnVmZmVyZWRSZWFkZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CkBAIC0zNDEsMTMgKzM1NywxNSBAQAogX2lvX0J1ZmZlcmVkV3JpdGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG46QnVmZmVyZWRXcml0ZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpyYXc7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG46QnVmZmVyZWRXcml0ZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkV3JpdGVyX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CkBAIC0zNzEsMTQgKzM4OSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MTAsMTEgKzQzMCwxMyBAQAogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCiAgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZQeUJ1ZmZlcmVkUldQYWlyX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQnVmZmVyZWRSV1BhaXIiLCBrd2FyZ3MpKQorICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJ1ZmZlcmVkUldQYWlyIiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpCdWZmZXJlZFJXUGFpciIsCi0gICAgICAgICZyZWFkZXIsICZ3cml0ZXIsICZidWZmZXJfc2l6ZSkpCisgICAgICAgICZyZWFkZXIsICZ3cml0ZXIsICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19faW1wbCgocndwYWlyICopc2VsZiwgcmVhZGVyLCB3cml0ZXIsIGJ1ZmZlcl9zaXplKTsKIAogZXhpdDoKQEAgLTQzOSwxNiArNDYxLDE4IEBACiBfaW9fQnVmZmVyZWRSYW5kb21fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98bjpCdWZmZXJlZFJhbmRvbSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnJhdzsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFJhbmRvbSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnVmZmVyZWRSYW5kb21fX19pbml0X19faW1wbCgoYnVmZmVyZWQgKilzZWxmLCByYXcsIGJ1ZmZlcl9zaXplKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiYmI1ZTIzOWI0ZmZlNmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE5NTZmMzk0ZWNkZTRjZjkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oCmluZGV4IDVmMmFiYjAuLmM2NGNlNWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKQEAgLTE3MSw4ICsxNzEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3JlYWRfaW1wbChzZWxmLCBhcmcpOwogCiBleGl0OgpAQCAtMjE1LDggKzIxNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3JlYWRsaW5lX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTI0Nyw4ICsyNDksOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmVzIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZGxpbmVzX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTI3NiwxNCArMjc5LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzExLDggKzMxNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3RydW5jYXRlX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTM0NSw4ICszNTEsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsCi0gICAgICAgICZwb3MsICZ3aGVuY2UpKQorICAgICAgICAmcG9zLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3NlZWtfaW1wbChzZWxmLCBwb3MsIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC00MDgsMTUgKzQxNSwxNyBAQAogX2lvX0J5dGVzSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImluaXRpYWxfYnl0ZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbml0aWFsX2J5dGVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86Qnl0ZXNJTyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmluaXR2YWx1ZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpCeXRlc0lPIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5pdHZhbHVlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZpbml0dmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fX19pbml0X19faW1wbCgoYnl0ZXNpbyAqKXNlbGYsIGluaXR2YWx1ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MGNlMmM2MjcyNzE4NDMxIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MzgyZThlYjU3OGVlYTY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmgKaW5kZXggMTA0MjAwOC4uOTA4ZmUwZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmgKQEAgLTQ5LDE1ICs0OSwxNyBAQAogX2lvX0ZpbGVJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xzaU86RmlsZUlPIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqbmFtZW9iajsKICAgICBjb25zdCBjaGFyICptb2RlID0gInIiOwogICAgIGludCBjbG9zZWZkID0gMTsKICAgICBQeU9iamVjdCAqb3BlbmVyID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98c2lPOkZpbGVJTyIsIF9rZXl3b3JkcywKLSAgICAgICAgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwgJm9wZW5lcikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmbmFtZW9iaiwgJm1vZGUsICZjbG9zZWZkLCAmb3BlbmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fX19pbml0X19faW1wbCgoZmlsZWlvICopc2VsZiwgbmFtZW9iaiwgbW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKIAogZXhpdDoKQEAgLTE1NCwxNCArMTU2LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yMTAsOCArMjE0LDkgQEAKICAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19yZWFkX2ltcGwoc2VsZiwgc2l6ZSk7CiAKIGV4aXQ6CkBAIC0yNDAsMTQgKzI0NSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBiID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT193cml0ZV9pbXBsKHNlbGYsICZiKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBiICovCi0gICAgaWYgKGIub2JqKQorICAgIGlmIChiLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yODAsOCArMjg3LDkgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnNlZWsiLAotICAgICAgICAmcG9zLCAmd2hlbmNlKSkKKyAgICAgICAgJnBvcywgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3NlZWtfaW1wbChzZWxmLCBwb3MsIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC0zMzMsOCArMzQxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnBvc29iaikpCisgICAgICAgICZwb3NvYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT190cnVuY2F0ZV9pbXBsKHNlbGYsIHBvc29iaik7CiAKIGV4aXQ6CkBAIC0zNjQsNCArMzczLDQgQEAKICNpZm5kZWYgX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYKICAgICAjZGVmaW5lIF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGNiYzM5YjQ2NjU5ODQ5MiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTE5MjRiYzBlZTExZDU4ZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oCmluZGV4IDk3NjJmMTEuLmVkYmY3M2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oCkBAIC0xODYsOCArMTg2LDkgQEAKICAgICBQeV9zc2l6ZV90IGxpbWl0ID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZSIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmxpbWl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fSU9CYXNlX3JlYWRsaW5lX2ltcGwoc2VsZiwgbGltaXQpOwogCiBleGl0OgpAQCAtMjE3LDggKzIxOCw5IEBACiAgICAgUHlfc3NpemVfdCBoaW50ID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZXMiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmhpbnQpKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmhpbnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19JT0Jhc2VfcmVhZGxpbmVzX2ltcGwoc2VsZiwgaGludCk7CiAKIGV4aXQ6CkBAIC0yNTEsOCArMjUzLDkgQEAKICAgICBQeV9zc2l6ZV90IG4gPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cmVhZCIsCi0gICAgICAgICZuKSkKKyAgICAgICAgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19SYXdJT0Jhc2VfcmVhZF9pbXBsKHNlbGYsIG4pOwogCiBleGl0OgpAQCAtMjc2LDQgKzI3OSw0IEBACiB7CiAgICAgcmV0dXJuIF9pb19fUmF3SU9CYXNlX3JlYWRhbGxfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iODc0OTUyZjVjYzI0OGE0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZjUzZmVkOTI4ZDhlMDJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCmluZGV4IGE4ZTMyYTMuLmQyYzA1ZDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL3N0cmluZ2lvLmMuaApAQCAtNjEsOCArNjEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19yZWFkX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTkxLDggKzkyLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3JlYWRsaW5lX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTEyMyw4ICsxMjUsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBhcmcpOwogCiBleGl0OgpAQCAtMTU3LDggKzE2MCw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58aTpzZWVrIiwKLSAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgICZwb3MsICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3NlZWtfaW1wbChzZWxmLCBwb3MsIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC0yMTcsMTMgKzIyMSwxNSBAQAogX2lvX1N0cmluZ0lPX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbml0aWFsX3ZhbHVlIiwgIm5ld2xpbmUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbml0aWFsX3ZhbHVlIiwgIm5ld2xpbmUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T086U3RyaW5nSU8iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5ld2xpbmVfb2JqID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPTzpTdHJpbmdJTyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnZhbHVlLCAmbmV3bGluZV9vYmopKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnZhbHVlLCAmbmV3bGluZV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX19faW5pdF9fX2ltcGwoKHN0cmluZ2lvICopc2VsZiwgdmFsdWUsIG5ld2xpbmVfb2JqKTsKIAogZXhpdDoKQEAgLTI4Myw0ICsyODksNCBAQAogewogICAgIHJldHVybiBfaW9fU3RyaW5nSU9fc2Vla2FibGVfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMDYxY2YzYTIwY2QxNGVkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZGQ1YzJhMjEzZTc1NDA1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3RleHRpby5jLmgKaW5kZXggZGM3ZThjNy4uZjM5YzM1NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vY2xpbmljL3RleHRpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL3RleHRpby5jLmgKQEAgLTI0LDE0ICsyNCwxNiBAQAogX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRlY29kZXIiLCAidHJhbnNsYXRlIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRlY29kZXIiLCAidHJhbnNsYXRlIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9pfE86SW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmRlY29kZXI7CiAgICAgaW50IHRyYW5zbGF0ZTsKICAgICBQeU9iamVjdCAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9pfE86SW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRlY29kZXIsICZ0cmFuc2xhdGUsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmRlY29kZXIsICZ0cmFuc2xhdGUsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X19faW1wbCgobmxkZWNvZGVyX29iamVjdCAqKXNlbGYsIGRlY29kZXIsIHRyYW5zbGF0ZSwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTQ0LDIzICs0NiwyNSBAQAogIlxuIik7CiAKICNkZWZpbmUgX0lPX0lOQ1JFTUVOVEFMTkVXTElORURFQ09ERVJfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQsIGludCBmaW5hbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1faW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfGk6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqaW5wdXQ7CiAgICAgaW50IGZpbmFsID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98aTpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZpbnB1dCwgJmZpbmFsKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlucHV0LCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGZpbmFsKTsKIAogZXhpdDoKQEAgLTE1Myw3ICsxNTcsOCBAQAogX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImJ1ZmZlciIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJsaW5lX2J1ZmZlcmluZyIsICJ3cml0ZV90aHJvdWdoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiYnVmZmVyIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImxpbmVfYnVmZmVyaW5nIiwgIndyaXRlX3Rocm91Z2giLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHp6emlpOlRleHRJT1dyYXBwZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpidWZmZXI7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CkBAIC0xNjEsOSArMTY2LDEwIEBACiAgICAgaW50IGxpbmVfYnVmZmVyaW5nID0gMDsKICAgICBpbnQgd3JpdGVfdGhyb3VnaCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHp6emlpOlRleHRJT1dyYXBwZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZidWZmZXIsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZsaW5lX2J1ZmZlcmluZywgJndyaXRlX3Rocm91Z2gpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmJ1ZmZlciwgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmxpbmVfYnVmZmVyaW5nLCAmd3JpdGVfdGhyb3VnaCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfX19pbXBsKCh0ZXh0aW8gKilzZWxmLCBidWZmZXIsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsIGxpbmVfYnVmZmVyaW5nLCB3cml0ZV90aHJvdWdoKTsKIAogZXhpdDoKQEAgLTIwNCw4ICsyMTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp0ZXh0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOndyaXRlIiwgJnRleHQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTp3cml0ZSIsICZ0ZXh0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3dyaXRlX2ltcGwoc2VsZiwgdGV4dCk7CiAKIGV4aXQ6CkBAIC0yMzAsOCArMjM3LDkgQEAKICAgICBQeV9zc2l6ZV90IG4gPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfcmVhZF9pbXBsKHNlbGYsIG4pOwogCiBleGl0OgpAQCAtMjU2LDggKzI2NCw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWRsaW5lIiwKLSAgICAgICAgJnNpemUpKQorICAgICAgICAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMjgzLDggKzI5Miw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKLSAgICAgICAgJmNvb2tpZU9iaiwgJndoZW5jZSkpCisgICAgICAgICZjb29raWVPYmosICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfc2Vla19pbXBsKHNlbGYsIGNvb2tpZU9iaiwgd2hlbmNlKTsKIAogZXhpdDoKQEAgLTMyNyw4ICszMzcsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmcG9zKSkKKyAgICAgICAgJnBvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl90cnVuY2F0ZV9pbXBsKHNlbGYsIHBvcyk7CiAKIGV4aXQ6CkBAIC00NTMsNCArNDY0LDQgQEAKIHsKICAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfY2xvc2VfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OTA2MDhmODVhYWI4YmE1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OGFkMTRlYmExNjY3MjU0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy93aW5jb25zb2xlaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3dpbmNvbnNvbGVpby5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0ZmNiYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy93aW5jb25zb2xlaW8uYy5oCkBAIC0wLDAgKzEsMzMxIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIHRoZSBoYW5kbGUuXG4iCisiXG4iCisiQSBjbG9zZWQgaGFuZGxlIGNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiAgY2xvc2UoKSBtYXkgYmVcbiIKKyJjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZSwgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2Nsb3NlX2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX19kb2NfXywKKyJfV2luZG93c0NvbnNvbGVJTyhmaWxlLCBtb2RlPVwnclwnLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbiBhIGNvbnNvbGUgYnVmZmVyIGJ5IGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyJUaGUgbW9kZSBjYW4gYmUgXCdyYlwnIChkZWZhdWx0KSwgb3IgXCd3YlwnIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgYnl0ZXMuIEFsbFxuIgorIm90aGVyIG1vZGUgY2hhcmFjdGVycyB3aWxsIGJlIGlnbm9yZWQuIE1vZGUgXCdiXCcgd2lsbCBiZSBhc3N1bWVkIGlmIGl0IGlzXG4iCisib21pdHRlZC4gVGhlICpvcGVuZXIqIHBhcmFtZXRlciBpcyBhbHdheXMgaWdub3JlZC4iKTsKKworc3RhdGljIGludAorX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqbmFtZW9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1vZGUsIGludCBjbG9zZWZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9wZW5lcik7CisKK3N0YXRpYyBpbnQKK19pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c2lPOl9XaW5kb3dzQ29uc29sZUlPIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqbmFtZW9iajsKKyAgICBjb25zdCBjaGFyICptb2RlID0gInIiOworICAgIGludCBjbG9zZWZkID0gMTsKKyAgICBQeU9iamVjdCAqb3BlbmVyID0gUHlfTm9uZTsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwgJm9wZW5lcikpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X19faW1wbCgod2luY29uc29sZWlvICopc2VsZiwgbmFtZW9iaiwgbW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVub19fZG9jX18sCisiZmlsZW5vKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuXG4iCisiXG4iCisiZmlsZW5vIGlzIG9ubHkgc2V0IHdoZW4gYSBmaWxlIGRlc2NyaXB0b3IgaXMgdXNlZCB0byBvcGVuXG4iCisib25lIG9mIHRoZSBzdGFuZGFyZCBzdHJlYW1zLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19GSUxFTk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbGVubyIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fZmlsZW5vLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVub19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVub19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fZmlsZW5vKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVub19pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX19kb2NfXywKKyJyZWFkYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgY29uc29sZSBpcyBhbiBpbnB1dCBidWZmZXIuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGUod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9fZG9jX18sCisid3JpdGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGNvbnNvbGUgaXMgYW4gb3V0cHV0IGJ1ZmZlci4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZSwgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRhYmxlX2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX19kb2NfXywKKyJyZWFkaW50bygkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRElOVE9fTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRpbnRvIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50bywgTUVUSF9PLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbF9fZG9jX18sCisicmVhZGFsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYWxsIGRhdGEgZnJvbSB0aGUgY29uc29sZSwgcmV0dXJuZWQgYXMgYnl0ZXMuXG4iCisiXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBTExfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRhbGwiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGwsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGwod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbF9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfX2RvY19fLAorInJlYWQoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuXG4iCisiXG4iCisiT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwgd2hlbiBzaXplIGlzIGEgcG9zaXRpdmUgaW50ZWdlcixcbiIKKyJzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkLlxuIgorIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkLCBNRVRIX1ZBUkFSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkX2ltcGwoc2VsZiwgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIGIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBidWZmZXIgYiB0byBmaWxlLCByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uXG4iCisiXG4iCisiT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIG5vdCBhbGwgb2YgdGhlIGRhdGEgbWF5IGJlIHdyaXR0ZW4uXG4iCisiVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlLCBNRVRIX08sIF9pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeV9idWZmZXIgKmIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYiAqLworICAgIGlmIChiLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X19kb2NfXywKKyJpc2F0dHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBbHdheXMgVHJ1ZS4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRiAgICBcCisgICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eSwgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHlfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHlfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fQ0xPU0VfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fQ0xPU0VfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFCTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFCTEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRElOVE9fTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRElOVE9fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZWJhOTE2Zjg1MzdmZmY3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2ZpbGVpby5jIGIvTW9kdWxlcy9faW8vZmlsZWlvLmMKaW5kZXggOTE5Y2Y1MC4uNTRjZmI3ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vZmlsZWlvLmMKKysrIGIvTW9kdWxlcy9faW8vZmlsZWlvLmMKQEAgLTkyLDggKzkyLDcgQEAKICAgICBpZiAoc2VsZi0+ZmQgPj0gMCAmJiBzZWxmLT5jbG9zZWZkKSB7CiAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUmVzb3VyY2VXYXJuaW5nLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5jbG9zZWQgZmlsZSAlUiIsIHNvdXJjZSkpIHsKKyAgICAgICAgaWYgKFB5RXJyX1Jlc291cmNlV2FybmluZyhzb3VyY2UsIDEsICJ1bmNsb3NlZCBmaWxlICVSIiwgc291cmNlKSkgewogICAgICAgICAgICAgLyogU3B1cmlvdXMgZXJyb3JzIGNhbiBhcHBlYXIgYXQgc2h1dGRvd24gKi8KICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1dhcm5pbmcpKQogICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKikgc2VsZik7CkBAIC0xMTgsMTggKzExNywxMyBAQAogICAgICAgICBpbnQgZmQgPSBzZWxmLT5mZDsKICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICAgICAgLyogZmQgaXMgYWNjZXNzaWJsZSBhbmQgc29tZW9uZSBlbHNlIG1heSBoYXZlIGNsb3NlZCBpdCAqLwotICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgICAgICAgICAgZXJyID0gY2xvc2UoZmQpOwotICAgICAgICAgICAgaWYgKGVyciA8IDApCi0gICAgICAgICAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBlcnIgPSBjbG9zZShmZCk7CisgICAgICAgIGlmIChlcnIgPCAwKQogICAgICAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgICAgZXJyID0gLTE7Ci0gICAgICAgIH0KKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9CiAgICAgaWYgKGVyciA8IDApIHsKICAgICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOwpAQCAtNTQ2LDcgKzU0MCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1lcnJfbW9kZShjaGFyICphY3Rpb24pCitlcnJfbW9kZShjb25zdCBjaGFyICphY3Rpb24pCiB7CiAgICAgX1B5SU9fU3RhdGUgKnN0YXRlID0gSU9fU1RBVEUoKTsKICAgICBpZiAoc3RhdGUgIT0gTlVMTCkKQEAgLTcwMSw4ICs2OTUsNiBAQAogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChzZWxmLT5mZCkpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtOTE1LDE4ICs5MDcsMTUgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgICAgICByZXMgPSBfbHNlZWtpNjQoZmQsIHBvcywgd2hlbmNlKTsKKyAgICByZXMgPSBfbHNlZWtpNjQoZmQsIHBvcywgd2hlbmNlKTsKICNlbHNlCi0gICAgICAgIHJlcyA9IGxzZWVrKGZkLCBwb3MsIHdoZW5jZSk7CisgICAgcmVzID0gbHNlZWsoZmQsIHBvcywgd2hlbmNlKTsKICNlbmRpZgotICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICByZXMgPSAtMTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKQEAgLTEwNDksNyArMTAzOCw3IEBACiB9CiAjZW5kaWYgLyogSEFWRV9GVFJVTkNBVEUgKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogbW9kZV9zdHJpbmcoZmlsZWlvICpzZWxmKQogewogICAgIGlmIChzZWxmLT5jcmVhdGVkKSB7CkBAIC0xMTE3LDEwICsxMTA2LDcgQEAKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIGlmIChfUHlWZXJpZnlfZmQoc2VsZi0+ZmQpKQotICAgICAgICByZXMgPSBpc2F0dHkoc2VsZi0+ZmQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gMDsKKyAgICByZXMgPSBpc2F0dHkoc2VsZi0+ZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlcyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9pb2Jhc2UuYyBiL01vZHVsZXMvX2lvL2lvYmFzZS5jCmluZGV4IDU3NTQxYTguLjQ3MmVmM2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2lvYmFzZS5jCisrKyBiL01vZHVsZXMvX2lvL2lvYmFzZS5jCkBAIC04MjgsNyArODI4LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCi0gICAgKGRlc3RydWN0b3IpaW9iYXNlX2ZpbmFsaXplLCAvKiB0cF9maW5hbGl6ZSAqLworICAgIGlvYmFzZV9maW5hbGl6ZSwgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jIGIvTW9kdWxlcy9faW8vc3RyaW5naW8uYwppbmRleCAwNmI0MTQ0Li5lY2Y2ZGMxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jCisrKyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKQEAgLTQzOCw3ICs0MzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUlPX3N0cl9yZWFkbGluZSwgTlVMTCk7CiAgICAgICAgIGlmIChsaW5lICYmICFQeVVuaWNvZGVfQ2hlY2sobGluZSkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkbGluZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGFuIHN0ciBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIHN0ciBvYmplY3QsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICclLjIwMHMnIiwgUHlfVFlQRShsaW5lKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL3RleHRpby5jIGIvTW9kdWxlcy9faW8vdGV4dGlvLmMKaW5kZXggMDYzY2FhNi4uNTA4ZTQ2ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vdGV4dGlvLmMKKysrIGIvTW9kdWxlcy9faW8vdGV4dGlvLmMKQEAgLTUzMSw3ICs1MzEsNyBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYwZDJjOWMxMzZmNGUwZDAgaW5wdXQ9ZjhmZjEwMTgyNWUzMmU3Zl0qLwogewogICAgIFB5T2JqZWN0ICpidWZmZXI7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGZsYWc7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGZsYWc7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlciAhPSBQeV9Ob25lKSB7CiAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZSA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPmRlY29kZXIsCkBAIC01NjcsNyArNTY3LDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMTBjNjIyNTA4YjU3NmNiIGlucHV0PWM1M2ZiNTA1YTc2ZGJiZTJdKi8KIHsKICAgICBQeU9iamVjdCAqYnVmZmVyOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmbGFnOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmbGFnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiT0siLCAmYnVmZmVyLCAmZmxhZykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzcyLDcgKzc3Miw3IEBACiAgICAgZW5jb2RlZnVuY190IGVuY29kZWZ1bmM7CiB9IGVuY29kZWZ1bmNlbnRyeTsKIAotc3RhdGljIGVuY29kZWZ1bmNlbnRyeSBlbmNvZGVmdW5jc1tdID0geworc3RhdGljIGNvbnN0IGVuY29kZWZ1bmNlbnRyeSBlbmNvZGVmdW5jc1tdID0gewogICAgIHsiYXNjaWkiLCAgICAgICAoZW5jb2RlZnVuY190KSBhc2NpaV9lbmNvZGV9LAogICAgIHsiaXNvODg1OS0xIiwgICAoZW5jb2RlZnVuY190KSBsYXRpbjFfZW5jb2RlfSwKICAgICB7InV0Zi04IiwgICAgICAgKGVuY29kZWZ1bmNfdCkgdXRmOF9lbmNvZGV9LApAQCAtMTAyMSw3ICsxMDIxLDcgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhyZXMpKSB7Ci0gICAgICAgICAgICBlbmNvZGVmdW5jZW50cnkgKmUgPSBlbmNvZGVmdW5jczsKKyAgICAgICAgICAgIGNvbnN0IGVuY29kZWZ1bmNlbnRyeSAqZSA9IGVuY29kZWZ1bmNzOwogICAgICAgICAgICAgd2hpbGUgKGUtPm5hbWUgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcocmVzLCBlLT5uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBzZWxmLT5lbmNvZGVmdW5jID0gZS0+ZW5jb2RlZnVuYzsKQEAgLTE2NDQsOCArMTY0NCw4IEBACiAvKiBOT1RFOiBgZW5kYCBtdXN0IHBvaW50IHRvIHRoZSByZWFsIGVuZCBvZiB0aGUgUHlfVUNTNCBzdG9yYWdlLAogICAgdGhhdCBpcyB0byB0aGUgTlVMIGNoYXJhY3Rlci4gT3RoZXJ3aXNlIHRoZSBmdW5jdGlvbiB3aWxsIHByb2R1Y2UKICAgIGluY29ycmVjdCByZXN1bHRzLiAqLwotc3RhdGljIGNoYXIgKgotZmluZF9jb250cm9sX2NoYXIoaW50IGtpbmQsIGNoYXIgKnMsIGNoYXIgKmVuZCwgUHlfVUNTNCBjaCkKK3N0YXRpYyBjb25zdCBjaGFyICoKK2ZpbmRfY29udHJvbF9jaGFyKGludCBraW5kLCBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICplbmQsIFB5X1VDUzQgY2gpCiB7CiAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgYXNzZXJ0KGNoIDwgMjU2KTsKQEAgLTE2NjUsMTMgKzE2NjUsMTMgQEAKIFB5X3NzaXplX3QKIF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgaW50IHRyYW5zbGF0ZWQsIGludCB1bml2ZXJzYWwsIFB5T2JqZWN0ICpyZWFkbmwsCi0gICAgaW50IGtpbmQsIGNoYXIgKnN0YXJ0LCBjaGFyICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorICAgIGludCBraW5kLCBjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9ICgoY2hhciopZW5kIC0gKGNoYXIqKXN0YXJ0KS9raW5kOwogCiAgICAgaWYgKHRyYW5zbGF0ZWQpIHsKICAgICAgICAgLyogTmV3bGluZXMgYXJlIGFscmVhZHkgdHJhbnNsYXRlZCwgb25seSBzZWFyY2ggZm9yIFxuICovCi0gICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsICdcbicpOworICAgICAgICBjb25zdCBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCAnXG4nKTsKICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgIGVsc2UgewpAQCAtMTY4Myw3ICsxNjgzLDcgQEAKICAgICAgICAgLyogVW5pdmVyc2FsIG5ld2xpbmUgc2VhcmNoLiBGaW5kIGFueSBvZiBcciwgXHJcbiwgXG4KICAgICAgICAgICogVGhlIGRlY29kZXIgZW5zdXJlcyB0aGF0IFxyXG4gYXJlIG5vdCBzcGxpdCBpbiB0d28gcGllY2VzCiAgICAgICAgICAqLwotICAgICAgICBjaGFyICpzID0gc3RhcnQ7CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdGFydDsKICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3Igbm9uLWNvbnRyb2wgY2hhcnMuIFRoZSBsb29wIGFsd2F5cyBlbmRzCkBAIC0xNzEzLDIxICsxNzEzLDIxIEBACiAgICAgICAgIC8qIEFzc3VtZSB0aGF0IHJlYWRubCBpcyBhbiBBU0NJSSBjaGFyYWN0ZXIuICovCiAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZWFkbmwpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKICAgICAgICAgaWYgKHJlYWRubF9sZW4gPT0gMSkgewotICAgICAgICAgICAgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgY29uc3QgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAocG9zIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICAgICAgKmNvbnN1bWVkID0gbGVuOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2hhciAqcyA9IHN0YXJ0OwotICAgICAgICAgICAgY2hhciAqZSA9IGVuZCAtIChyZWFkbmxfbGVuIC0gMSkqa2luZDsKLSAgICAgICAgICAgIGNoYXIgKnBvczsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdGFydDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmUgPSBlbmQgLSAocmVhZG5sX2xlbiAtIDEpKmtpbmQ7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwb3M7CiAgICAgICAgICAgICBpZiAoZSA8IHMpCiAgICAgICAgICAgICAgICAgZSA9IHM7CiAgICAgICAgICAgICB3aGlsZSAocyA8IGUpIHsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgcywgZW5kLCBubFswXSk7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgcywgZW5kLCBubFswXSk7CiAgICAgICAgICAgICAgICAgaWYgKHBvcyA9PSBOVUxMIHx8IHBvcyA+PSBlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgcmVhZG5sX2xlbjsgaSsrKSB7CkBAIC0yNjg5LDcgKzI2ODksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUlPX3N0cl9yZWFkbGluZSwgTlVMTCk7CiAgICAgICAgIGlmIChsaW5lICYmICFQeVVuaWNvZGVfQ2hlY2sobGluZSkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkbGluZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGFuIHN0ciBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIHN0ciBvYmplY3QsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICclLjIwMHMnIiwgUHlfVFlQRShsaW5lKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL3dpbmNvbnNvbGVpby5jIGIvTW9kdWxlcy9faW8vd2luY29uc29sZWlvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU3YTFiMgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL3dpbmNvbnNvbGVpby5jCkBAIC0wLDAgKzEsMTE0NSBAQAorLyoKKyAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiBXaW5kb3dzIGNvbnNvbGUgSS9PCisKKyAgICBDbGFzc2VzIGRlZmluZWQgaGVyZTogX1dpbmRvd3NDb25zb2xlSU8KKworICAgIFdyaXR0ZW4gYnkgU3RldmUgRG93ZXIKKyovCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorI2luY2x1ZGUgIlB5dGhvbi5oIgorCisjaWZkZWYgTVNfV0lORE9XUworCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0ZGRlZi5oPiAvKiBGb3Igb2Zmc2V0b2YgKi8KKworI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyNpbmNsdWRlICJfaW9tb2R1bGUuaCIKKworLyogQlVGU0laIGRldGVybWluZXMgaG93IG1hbnkgY2hhcmFjdGVycyBjYW4gYmUgdHlwZWQgYXQgdGhlIGNvbnNvbGUKKyAgIGJlZm9yZSBpdCBzdGFydHMgYmxvY2tpbmcuICovCisjaWYgQlVGU0laIDwgKDE2KjEwMjQpCisjZGVmaW5lIFNNQUxMQ0hVTksgKDIqMTAyNCkKKyNlbGlmIChCVUZTSVogPj0gKDIgPDwgMjUpKQorI2Vycm9yICJ1bnJlYXNvbmFibGUgQlVGU0laID4gNjRNQiBkZWZpbmVkIgorI2Vsc2UKKyNkZWZpbmUgU01BTExDSFVOSyBCVUZTSVoKKyNlbmRpZgorCisvKiBCVUZNQVggZGV0ZXJtaW5lcyBob3cgbWFueSBieXRlcyBjYW4gYmUgcmVhZCBpbiBvbmUgZ28uICovCisjZGVmaW5lIEJVRk1BWCAoMzIqMTAyNCoxMDI0KQorCisvKiBTTUFMTEJVRiBkZXRlcm1pbmVzIGhvdyBtYW55IHV0Zi04IGNoYXJhY3RlcnMgd2lsbCBiZQorICAgYnVmZmVyZWQgd2l0aGluIHRoZSBzdHJlYW0sIGluIG9yZGVyIHRvIHN1cHBvcnQgcmVhZHMKKyAgIG9mIGxlc3MgdGhhbiBvbmUgY2hhcmFjdGVyICovCisjZGVmaW5lIFNNQUxMQlVGIDQKKworY2hhciBfZ2V0X2NvbnNvbGVfdHlwZShIQU5ETEUgaGFuZGxlKSB7CisgICAgRFdPUkQgbW9kZSwgcGVla19jb3VudDsKKworICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiAnXDAnOworCisgICAgaWYgKCFHZXRDb25zb2xlTW9kZShoYW5kbGUsICZtb2RlKSkKKyAgICAgICAgcmV0dXJuICdcMCc7CisKKyAgICAvKiBQZWVrIGF0IHRoZSBoYW5kbGUgdG8gc2VlIHdoZXRoZXIgaXQgaXMgYW4gaW5wdXQgb3Igb3V0cHV0IGhhbmRsZSAqLworICAgIGlmIChHZXROdW1iZXJPZkNvbnNvbGVJbnB1dEV2ZW50cyhoYW5kbGUsICZwZWVrX2NvdW50KSkKKyAgICAgICAgcmV0dXJuICdyJzsKKyAgICByZXR1cm4gJ3cnOworfQorCitjaGFyIF9QeUlPX2dldF9jb25zb2xlX3R5cGUoUHlPYmplY3QgKnBhdGhfb3JfZmQpIHsKKyAgICBpbnQgZmQ7CisKKyAgICBmZCA9IFB5TG9uZ19Bc0xvbmcocGF0aF9vcl9mZCk7CisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBpZiAoZmQgPj0gMCkgeworICAgICAgICBIQU5ETEUgaGFuZGxlOworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgICAgIHJldHVybiAnXDAnOworICAgICAgICByZXR1cm4gX2dldF9jb25zb2xlX3R5cGUoaGFuZGxlKTsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqZGVjb2RlZCwgKmRlY29kZWRfdXBwZXI7CisKKyAgICBpbnQgZCA9IFB5VW5pY29kZV9GU0RlY29kZXIocGF0aF9vcl9mZCwgJmRlY29kZWQpOworICAgIGlmICghZCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICB9CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZGVjb2RlZCkpIHsKKyAgICAgICAgUHlfQ0xFQVIoZGVjb2RlZCk7CisgICAgICAgIHJldHVybiAnXDAnOworICAgIH0KKyAgICBkZWNvZGVkX3VwcGVyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChkZWNvZGVkLCAidXBwZXIiLCAiIik7CisgICAgUHlfQ0xFQVIoZGVjb2RlZCk7CisgICAgaWYgKCFkZWNvZGVkX3VwcGVyKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiAnXDAnOworICAgIH0KKworICAgIGNoYXIgbSA9ICdcMCc7CisgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGRlY29kZWRfdXBwZXIsICJDT05JTiQiKSA9PSAwKSB7CisgICAgICAgIG0gPSAncic7CisgICAgfSBlbHNlIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OT1VUJCIpID09IDApIHsKKyAgICAgICAgbSA9ICd3JzsKKyAgICB9IGVsc2UgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGRlY29kZWRfdXBwZXIsICJDT04iKSA9PSAwKSB7CisgICAgICAgIG0gPSAneCc7CisgICAgfQorCisgICAgUHlfQ0xFQVIoZGVjb2RlZF91cHBlcik7CisgICAgcmV0dXJuIG07Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5fV2luZG93c0NvbnNvbGVJTyAid2luY29uc29sZWlvICoiICImUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1lODk3ZmRjMWZiYTRlMTMxXSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIGlvX3NzaXplX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfc3NpemVfdCcKKyAgICBjb252ZXJ0ZXIgPSAnX1B5SU9fQ29udmVydFNzaXplX3QnCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kMGE4MTFkM2NiZmQxYjMzXSovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgZmQ7CisgICAgdW5zaWduZWQgaW50IGNyZWF0ZWQgOiAxOworICAgIHVuc2lnbmVkIGludCByZWFkYWJsZSA6IDE7CisgICAgdW5zaWduZWQgaW50IHdyaXRhYmxlIDogMTsKKyAgICB1bnNpZ25lZCBpbnQgY2xvc2VoYW5kbGUgOiAxOworICAgIGNoYXIgZmluYWxpemluZzsKKyAgICB1bnNpZ25lZCBpbnQgYmxrc2l6ZTsKKyAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CisgICAgUHlPYmplY3QgKmRpY3Q7CisgICAgY2hhciBidWZbU01BTExCVUZdOworICAgIHdjaGFyX3Qgd2J1ZjsKK30gd2luY29uc29sZWlvOworCitQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisKK19QeV9JREVOVElGSUVSKG5hbWUpOworCitpbnQKK19QeVdpbmRvd3NDb25zb2xlSU9fY2xvc2VkKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiAoKHdpbmNvbnNvbGVpbyAqKXNlbGYpLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKKworLyogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC0xIHdpdGggZXhjZXB0aW9uIHNldCBvbiBmYWlsdXJlLiAqLworc3RhdGljIGludAoraW50ZXJuYWxfY2xvc2Uod2luY29uc29sZWlvICpzZWxmKQoreworICAgIGlmIChzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgaWYgKHNlbGYtPmNsb3NlaGFuZGxlKSB7CisgICAgICAgICAgICBpZiAoc2VsZi0+ZmQgPj0gMCkgeworICAgICAgICAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgICAgICAgICBjbG9zZShzZWxmLT5mZCk7CisgICAgICAgICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENsb3NlSGFuZGxlKHNlbGYtPmhhbmRsZSk7CisgICAgICAgIH0KKyAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgICAgIHNlbGYtPmZkID0gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8uY2xvc2UKKworQ2xvc2UgdGhlIGhhbmRsZS4KKworQSBjbG9zZWQgaGFuZGxlIGNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiAgY2xvc2UoKSBtYXkgYmUKK2NhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2Nsb3NlX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI3ZWY5NWI2NmMyOTA1N2IgaW5wdXQ9MTg1NjE3ZTM0OWFlNGM3Yl0qLworeworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOworICAgIGludCByYzsKKyAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKSZQeVJhd0lPQmFzZV9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfY2xvc2UsICJPIiwgc2VsZik7CisgICAgaWYgKCFzZWxmLT5jbG9zZWhhbmRsZSkgeworICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworICAgIHJjID0gaW50ZXJuYWxfY2xvc2Uoc2VsZik7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBfUHlFcnJfQ2hhaW5FeGNlcHRpb25zKGV4YywgdmFsLCB0Yik7CisgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luY29uc29sZWlvX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICB3aW5jb25zb2xlaW8gKnNlbGY7CisKKyAgICBhc3NlcnQodHlwZSAhPSBOVUxMICYmIHR5cGUtPnRwX2FsbG9jICE9IE5VTEwpOworCisgICAgc2VsZiA9ICh3aW5jb25zb2xlaW8gKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHNlbGYgIT0gTlVMTCkgeworICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICAgICAgc2VsZi0+ZmQgPSAtMTsKKyAgICAgICAgc2VsZi0+Y3JlYXRlZCA9IDA7CisgICAgICAgIHNlbGYtPnJlYWRhYmxlID0gMDsKKyAgICAgICAgc2VsZi0+d3JpdGFibGUgPSAwOworICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA9IDA7CisgICAgICAgIHNlbGYtPmJsa3NpemUgPSAwOworICAgICAgICBzZWxmLT53ZWFrcmVmbGlzdCA9IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8uX19pbml0X18KKyAgICBmaWxlIGFzIG5hbWVvYmo6IG9iamVjdAorICAgIG1vZGU6IHN0ciA9ICJyIgorICAgIGNsb3NlZmQ6IGludChjX2RlZmF1bHQ9IjEiKSA9IFRydWUKKyAgICBvcGVuZXI6IG9iamVjdCA9IE5vbmUKKworT3BlbiBhIGNvbnNvbGUgYnVmZmVyIGJ5IGZpbGUgZGVzY3JpcHRvci4KKworVGhlIG1vZGUgY2FuIGJlICdyYicgKGRlZmF1bHQpLCBvciAnd2InIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgYnl0ZXMuIEFsbAorb3RoZXIgbW9kZSBjaGFyYWN0ZXJzIHdpbGwgYmUgaWdub3JlZC4gTW9kZSAnYicgd2lsbCBiZSBhc3N1bWVkIGlmIGl0IGlzCitvbWl0dGVkLiBUaGUgKm9wZW5lciogcGFyYW1ldGVyIGlzIGFsd2F5cyBpZ25vcmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50CitfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X19faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbW9kZSwgaW50IGNsb3NlZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb3BlbmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNmZDljYmNkZDhkOTU0MjkgaW5wdXQ9NjFiZTM5NjMzYTg2ZjVkN10qLworeworICAgIGNvbnN0IGNoYXIgKnM7CisgICAgd2NoYXJfdCAqbmFtZSA9IE5VTEw7CisgICAgY2hhciBjb25zb2xlX3R5cGUgPSAnXDAnOworICAgIGludCByZXQgPSAwOworICAgIGludCByd2EgPSAwOworICAgIGludCBmZCA9IC0xOworICAgIGludCBmZF9pc19vd24gPSAwOworCisgICAgYXNzZXJ0KFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhzZWxmKSk7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA+PSAwKSB7CisgICAgICAgIGlmIChzZWxmLT5jbG9zZWhhbmRsZSkgeworICAgICAgICAgICAgLyogSGF2ZSB0byBjbG9zZSB0aGUgZXhpc3RpbmcgZmlsZSBmaXJzdC4gKi8KKyAgICAgICAgICAgIGlmIChpbnRlcm5hbF9jbG9zZShzZWxmKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgIH0KKworICAgIGlmIChQeUZsb2F0X0NoZWNrKG5hbWVvYmopKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290IGZsb2F0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmZCA9IF9QeUxvbmdfQXNJbnQobmFtZW9iaik7CisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBmaWxlIGRlc2NyaXB0b3IiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyAgICBzZWxmLT5mZCA9IGZkOworCisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBQeU9iamVjdCAqZGVjb2RlZG5hbWUgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYoZGVjb2RlZG5hbWUpOworCisgICAgICAgIGludCBkID0gUHlVbmljb2RlX0ZTRGVjb2RlcihuYW1lb2JqLCAodm9pZCopJmRlY29kZWRuYW1lKTsKKyAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgICAgICBuYW1lID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoZGVjb2RlZG5hbWUsICZsZW5ndGgpOworICAgICAgICBjb25zb2xlX3R5cGUgPSBfUHlJT19nZXRfY29uc29sZV90eXBlKGRlY29kZWRuYW1lKTsKKyAgICAgICAgUHlfQ0xFQVIoZGVjb2RlZG5hbWUpOworICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIGlmICh3Y3NsZW4obmFtZSkgIT0gbGVuZ3RoKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKG5hbWUpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgcyA9IG1vZGU7CisgICAgd2hpbGUgKCpzKSB7CisgICAgICAgIHN3aXRjaCAoKnMrKykgeworICAgICAgICBjYXNlICcrJzoKKyAgICAgICAgY2FzZSAnYSc6CisgICAgICAgIGNhc2UgJ2InOgorICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgIGlmIChyd2EpCisgICAgICAgICAgICAgICAgZ290byBiYWRfbW9kZTsKKyAgICAgICAgICAgIHJ3YSA9IDE7CisgICAgICAgICAgICBzZWxmLT5yZWFkYWJsZSA9IDE7CisgICAgICAgICAgICBpZiAoY29uc29sZV90eXBlID09ICd4JykKKyAgICAgICAgICAgICAgICBjb25zb2xlX3R5cGUgPSAncic7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAndyc6CisgICAgICAgICAgICBpZiAocndhKQorICAgICAgICAgICAgICAgIGdvdG8gYmFkX21vZGU7CisgICAgICAgICAgICByd2EgPSAxOworICAgICAgICAgICAgc2VsZi0+d3JpdGFibGUgPSAxOworICAgICAgICAgICAgaWYgKGNvbnNvbGVfdHlwZSA9PSAneCcpCisgICAgICAgICAgICAgICAgY29uc29sZV90eXBlID0gJ3cnOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBtb2RlOiAlLjIwMHMiLCBtb2RlKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXJ3YSkKKyAgICAgICAgZ290byBiYWRfbW9kZTsKKworICAgIGlmIChmZCA+PSAwKSB7CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgc2VsZi0+aGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIHNlbGYtPmNsb3NlaGFuZGxlID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBEV09SRCBhY2Nlc3MgPSBHRU5FUklDX1JFQUQ7CisKKyAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPSAxOworICAgICAgICBpZiAoIWNsb3NlZmQpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJDYW5ub3QgdXNlIGNsb3NlZmQ9RmFsc2Ugd2l0aCBmaWxlIG5hbWUiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2VsZi0+d3JpdGFibGUpCisgICAgICAgICAgICBhY2Nlc3MgPSBHRU5FUklDX1dSSVRFOworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgLyogQXR0ZW1wdCB0byBvcGVuIGZvciByZWFkL3dyaXRlIGluaXRpYWxseSwgdGhlbiBmYWxsIGJhY2sKKyAgICAgICAgICAgb24gdGhlIHNwZWNpZmljIGFjY2Vzcy4gVGhpcyBpcyByZXF1aXJlZCBmb3IgbW9kZXJuIG5hbWVzCisgICAgICAgICAgIENPTklOJCBhbmQgQ09OT1VUJCwgd2hpY2ggYWxsb3cgcmVhZGluZy93cml0aW5nIHN0YXRlIGFzCisgICAgICAgICAgIHdlbGwgYXMgcmVhZGluZy93cml0aW5nIGNvbnRlbnQuICovCisgICAgICAgIHNlbGYtPmhhbmRsZSA9IENyZWF0ZUZpbGVXKG5hbWUsIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsCisgICAgICAgICAgICBGSUxFX1NIQVJFX1JFQUQgfCBGSUxFX1NIQVJFX1dSSVRFLCBOVUxMLCBPUEVOX0VYSVNUSU5HLCAwLCBOVUxMKTsKKyAgICAgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgICAgIHNlbGYtPmhhbmRsZSA9IENyZWF0ZUZpbGVXKG5hbWUsIGFjY2VzcywKKyAgICAgICAgICAgICAgICBGSUxFX1NIQVJFX1JFQUQgfCBGSUxFX1NIQVJFX1dSSVRFLCBOVUxMLCBPUEVOX0VYSVNUSU5HLCAwLCBOVUxMKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBHZXRMYXN0RXJyb3IoKSwgbmFtZW9iaik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNvbnNvbGVfdHlwZSA9PSAnXDAnKQorICAgICAgICBjb25zb2xlX3R5cGUgPSBfZ2V0X2NvbnNvbGVfdHlwZShzZWxmLT5oYW5kbGUpOworCisgICAgaWYgKHNlbGYtPndyaXRhYmxlICYmIGNvbnNvbGVfdHlwZSAhPSAndycpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiQ2Fubm90IG9wZW4gY29uc29sZSBpbnB1dCBidWZmZXIgZm9yIHdyaXRpbmciKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKHNlbGYtPnJlYWRhYmxlICYmIGNvbnNvbGVfdHlwZSAhPSAncicpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiQ2Fubm90IG9wZW4gY29uc29sZSBvdXRwdXQgYnVmZmVyIGZvciByZWFkaW5nIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgc2VsZi0+Ymxrc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CisgICAgbWVtc2V0KHNlbGYtPmJ1ZiwgMCwgNCk7CisKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9uYW1lLCBuYW1lb2JqKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBnb3RvIGRvbmU7CisKK2JhZF9tb2RlOgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiTXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIHJlYWQgb3Igd3JpdGUgbW9kZSIpOworZXJyb3I6CisgICAgcmV0ID0gLTE7CisgICAgaW50ZXJuYWxfY2xvc2Uoc2VsZik7CisKK2RvbmU6CisgICAgaWYgKG5hbWUpCisgICAgICAgIFB5TWVtX0ZyZWUobmFtZSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAord2luY29uc29sZWlvX3RyYXZlcnNlKHdpbmNvbnNvbGVpbyAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3dpbmNvbnNvbGVpb19jbGVhcih3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCit3aW5jb25zb2xlaW9fZGVhbGxvYyh3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgc2VsZi0+ZmluYWxpemluZyA9IDE7CisgICAgaWYgKF9QeUlPQmFzZV9maW5hbGl6ZSgoUHlPYmplY3QgKikgc2VsZikgPCAwKQorICAgICAgICByZXR1cm47CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPndlYWtyZWZsaXN0ICE9IE5VTEwpCisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopIHNlbGYpOworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitlcnJfY2xvc2VkKHZvaWQpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitlcnJfbW9kZShjb25zdCBjaGFyICphY3Rpb24pCit7CisgICAgX1B5SU9fU3RhdGUgKnN0YXRlID0gSU9fU1RBVEUoKTsKKyAgICBpZiAoc3RhdGUgIT0gTlVMTCkKKyAgICAgICAgUHlFcnJfRm9ybWF0KHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAiQ29uc29sZSBidWZmZXIgZG9lcyBub3Qgc3VwcG9ydCAlcyIsIGFjdGlvbik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5maWxlbm8KKworUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuCisKK2ZpbGVubyBpcyBvbmx5IHNldCB3aGVuIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHVzZWQgdG8gb3Blbgorb25lIG9mIHRoZSBzdGFuZGFyZCBzdHJlYW1zLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fZmlsZW5vX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAwNmZhNzRjZTNiNWNmYmYgaW5wdXQ9MDc5YWRjMzMwZGRhYWJlNl0qLworeworICAgIGlmIChzZWxmLT5mZCA8IDAgJiYgc2VsZi0+aGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgaWYgKHNlbGYtPndyaXRhYmxlKQorICAgICAgICAgICAgc2VsZi0+ZmQgPSBfb3Blbl9vc2ZoYW5kbGUoKGludHB0cl90KXNlbGYtPmhhbmRsZSwgX09fV1JPTkxZIHwgX09fQklOQVJZKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZi0+ZmQgPSBfb3Blbl9vc2ZoYW5kbGUoKGludHB0cl90KXNlbGYtPmhhbmRsZSwgX09fUkRPTkxZIHwgX09fQklOQVJZKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICB9CisgICAgaWYgKHNlbGYtPmZkIDwgMCkKKyAgICAgICAgcmV0dXJuIGVycl9tb2RlKCJmaWxlbm8iKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLnJlYWRhYmxlCisKK1RydWUgaWYgY29uc29sZSBpcyBhbiBpbnB1dCBidWZmZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGFmOWNlZjI3NDNiZWNmMCBpbnB1dD02YmU5ZGVmYjUzMDJkYWFlXSovCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSBzZWxmLT5yZWFkYWJsZSk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy53cml0YWJsZQorCitUcnVlIGlmIGNvbnNvbGUgaXMgYW4gb3V0cHV0IGJ1ZmZlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGEyYWQ3ZWFlNWFiZjY3IGlucHV0PWNlZmJkOGFiYzI0ZGY2YTBdKi8KK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPndyaXRhYmxlKTsKK30KKworc3RhdGljIERXT1JECitfYnVmbGVuKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgU01BTExCVUY7ICsraSkgeworICAgICAgICBpZiAoIXNlbGYtPmJ1ZltpXSkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gU01BTExCVUY7Cit9CisKK3N0YXRpYyBEV09SRAorX2NvcHlmcm9tYnVmKHdpbmNvbnNvbGVpbyAqc2VsZiwgY2hhciAqYnVmLCBEV09SRCBsZW4pCit7CisgICAgRFdPUkQgbiA9IDA7CisKKyAgICB3aGlsZSAoc2VsZi0+YnVmWzBdICYmIGxlbi0tKSB7CisgICAgICAgIGJ1ZltuKytdID0gc2VsZi0+YnVmWzBdOworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IFNNQUxMQlVGOyArK2kpCisgICAgICAgICAgICBzZWxmLT5idWZbaSAtIDFdID0gc2VsZi0+YnVmW2ldOworICAgICAgICBzZWxmLT5idWZbU01BTExCVUYgLSAxXSA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYyB3Y2hhcl90ICoKK3JlYWRfY29uc29sZV93KEhBTkRMRSBoYW5kbGUsIERXT1JEIG1heGxlbiwgRFdPUkQgKnJlYWRsZW4pIHsKKyAgICBpbnQgZXJyID0gMCwgc2lnID0gMDsKKworICAgIHdjaGFyX3QgKmJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9NYWxsb2MobWF4bGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBpZiAoIWJ1ZikKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgICpyZWFkbGVuID0gMDsKKworICAgIC8vRGVidWdCcmVhaygpOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBEV09SRCBvZmYgPSAwOworICAgIHdoaWxlIChvZmYgPCBtYXhsZW4pIHsKKyAgICAgICAgRFdPUkQgbiwgbGVuID0gbWluKG1heGxlbiAtIG9mZiwgQlVGU0laKTsKKyAgICAgICAgU2V0TGFzdEVycm9yKDApOworICAgICAgICBCT09MIHJlcyA9IFJlYWRDb25zb2xlVyhoYW5kbGUsICZidWZbb2ZmXSwgbGVuLCAmbiwgTlVMTCk7CisKKyAgICAgICAgaWYgKCFyZXMpIHsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBpZiAoZXJyICE9IEVSUk9SX09QRVJBVElPTl9BQk9SVEVEKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZXJyID0gMDsKKyAgICAgICAgICAgIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICAgICAgaWYgKFdhaXRGb3JTaW5nbGVPYmplY3RFeChoSW50ZXJydXB0RXZlbnQsIDEwMCwgRkFMU0UpCisgICAgICAgICAgICAgICAgICAgID09IFdBSVRfT0JKRUNUXzApIHsKKyAgICAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CisgICAgICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUworICAgICAgICAgICAgICAgIHNpZyA9IFB5RXJyX0NoZWNrU2lnbmFscygpOworICAgICAgICAgICAgICAgIFB5X1VOQkxPQ0tfVEhSRUFEUworICAgICAgICAgICAgICAgIGlmIChzaWcgPCAwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAqcmVhZGxlbiArPSBuOworCisgICAgICAgIC8qIElmIHdlIGRpZG4ndCByZWFkIGEgZnVsbCBidWZmZXIgdGhhdCB0aW1lLCBkb24ndCB0cnkKKyAgICAgICAgICAgYWdhaW4gb3Igd2Ugd2lsbCBibG9jayBhIHNlY29uZCB0aW1lLiAqLworICAgICAgICBpZiAobiA8IGxlbikKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiBJZiB0aGUgYnVmZmVyIGVuZGVkIHdpdGggYSBuZXdsaW5lLCBicmVhayBvdXQgKi8KKyAgICAgICAgaWYgKGJ1ZlsqcmVhZGxlbiAtIDFdID09ICdcbicpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyogSWYgdGhlIGJ1ZmZlciBlbmRzIHdpdGggYSBoaWdoIHN1cnJvZ2F0ZSwgZXhwYW5kIHRoZQorICAgICAgICAgICBidWZmZXIgYW5kIHJlYWQgYW4gZXh0cmEgY2hhcmFjdGVyLiAqLworICAgICAgICBXT1JEIGNoYXJfdHlwZTsKKyAgICAgICAgaWYgKG9mZiArIEJVRlNJWiA+PSBtYXhsZW4gJiYKKyAgICAgICAgICAgIEdldFN0cmluZ1R5cGVXKENUX0NUWVBFMywgJmJ1ZlsqcmVhZGxlbiAtIDFdLCAxLCAmY2hhcl90eXBlKSAmJgorICAgICAgICAgICAgY2hhcl90eXBlID09IEMzX0hJR0hTVVJST0dBVEUpIHsKKyAgICAgICAgICAgIHdjaGFyX3QgKm5ld2J1ZjsKKyAgICAgICAgICAgIG1heGxlbiArPSAxOworICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUworICAgICAgICAgICAgbmV3YnVmID0gKHdjaGFyX3QqKVB5TWVtX1JlYWxsb2MoYnVmLCBtYXhsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgUHlfVU5CTE9DS19USFJFQURTCisgICAgICAgICAgICBpZiAoIW5ld2J1ZikgeworICAgICAgICAgICAgICAgIHNpZyA9IC0xOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmID0gbmV3YnVmOworICAgICAgICAgICAgLyogT25seSBhZHZhbmNlIGJ5IG4gYW5kIG5vdCBCVUZTSVogaW4gdGhpcyBjYXNlICovCisgICAgICAgICAgICBvZmYgKz0gbjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgb2ZmICs9IEJVRlNJWjsKKyAgICB9CisKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHNpZykKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKCpyZWFkbGVuID4gMCAmJiBidWZbMF0gPT0gTCdceDFhJykgeworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIGJ1ZiA9ICh3Y2hhcl90ICopUHlNZW1fTWFsbG9jKHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIGlmICghYnVmKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgYnVmWzBdID0gTCdcMCc7CisgICAgICAgICpyZWFkbGVuID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gYnVmOworCitlcnJvcjoKKyAgICBpZiAoYnVmKQorICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5X3NzaXplX3QKK3JlYWRpbnRvKHdpbmNvbnNvbGVpbyAqc2VsZiwgY2hhciAqYnVmLCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIGVycl9jbG9zZWQoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKSB7CisgICAgICAgIGVycl9tb2RlKCJyZWFkaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobGVuID4gQlVGTUFYKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiY2Fubm90IHJlYWQgbW9yZSB0aGFuICVkIGJ5dGVzIiwgQlVGTUFYKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIEVhY2ggY2hhcmFjdGVyIG1heSB0YWtlIHVwIHRvIDQgYnl0ZXMgaW4gdGhlIGZpbmFsIGJ1ZmZlci4KKyAgICAgICBUaGlzIGlzIGhpZ2hseSBjb25zZXJ2YXRpdmUsIGJ1dCBuZWNlc3NhcnkgdG8gYXZvaWQKKyAgICAgICBmYWlsdXJlIGZvciBhbnkgZ2l2ZW4gVW5pY29kZSBpbnB1dCAoZS5nLiBcVTAwMTBmZmZmKS4KKyAgICAgICBJZiB0aGUgY2FsbGVyIHJlcXVlc3RzIGZld2VyIHRoYW4gNCBieXRlcywgd2UgYnVmZmVyIG9uZQorICAgICAgIGNoYXJhY3Rlci4KKyAgICAqLworICAgIERXT1JEIHdsZW4gPSAoRFdPUkQpKGxlbiAvIDQpOworICAgIGlmICh3bGVuID09IDApIHsKKyAgICAgICAgd2xlbiA9IDE7CisgICAgfQorCisgICAgRFdPUkQgcmVhZF9sZW4gPSBfY29weWZyb21idWYoc2VsZiwgYnVmLCAoRFdPUkQpbGVuKTsKKyAgICBpZiAocmVhZF9sZW4pIHsKKyAgICAgICAgYnVmID0gJmJ1ZltyZWFkX2xlbl07CisgICAgICAgIGxlbiAtPSByZWFkX2xlbjsKKyAgICAgICAgd2xlbiAtPSAxOworICAgIH0KKyAgICBpZiAobGVuID09IHJlYWRfbGVuIHx8IHdsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIHJlYWRfbGVuOworCisgICAgRFdPUkQgbjsKKyAgICB3Y2hhcl90ICp3YnVmID0gcmVhZF9jb25zb2xlX3coc2VsZi0+aGFuZGxlLCB3bGVuLCAmbik7CisgICAgaWYgKHdidWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChuID09IDApIHsKKyAgICAgICAgUHlNZW1fRnJlZSh3YnVmKTsKKyAgICAgICAgcmV0dXJuIHJlYWRfbGVuOworICAgIH0KKworICAgIGludCBlcnIgPSAwOworICAgIERXT1JEIHU4biA9IDA7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKGxlbiA8IDQpIHsKKyAgICAgICAgaWYgKFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgbiwKKyAgICAgICAgICAgICAgICBzZWxmLT5idWYsIHNpemVvZihzZWxmLT5idWYpIC8gc2l6ZW9mKHNlbGYtPmJ1ZlswXSksCisgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCkpCisgICAgICAgICAgICB1OG4gPSBfY29weWZyb21idWYoc2VsZiwgYnVmLCAoRFdPUkQpbGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1OG4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIG4sCisgICAgICAgICAgICBidWYsIChEV09SRClsZW4sIE5VTEwsIE5VTEwpOworICAgIH0KKworICAgIGlmICh1OG4pIHsKKyAgICAgICAgcmVhZF9sZW4gKz0gdThuOworICAgICAgICB1OG4gPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBpZiAoZXJyID09IEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIpIHsKKyAgICAgICAgICAgIC8qIENhbGN1bGF0ZSB0aGUgbmVlZGVkIGJ1ZmZlciBmb3IgYSBtb3JlIHVzZWZ1bCBlcnJvciwgYXMgdGhpcworICAgICAgICAgICAgICAgIG1lYW5zIG91ciAiLyA0IiBsb2dpYyBhYm92ZSBpcyBpbnN1ZmZpY2llbnQgZm9yIHNvbWUgaW5wdXQuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgdThuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCBuLAorICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgICAgICB9CisgICAgfQorICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeU1lbV9GcmVlKHdidWYpOworCisgICAgaWYgKHU4bikgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAiQnVmZmVyIGhhZCByb29tIGZvciAlZCBieXRlcyBidXQgJWQgYnl0ZXMgcmVxdWlyZWQiLAorICAgICAgICAgICAgbGVuLCB1OG4pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChlcnIpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiByZWFkX2xlbjsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLnJlYWRpbnRvCisgICAgYnVmZmVyOiBQeV9idWZmZXIoYWNjZXB0PXtyd2J1ZmZlcn0pCisgICAgLworCitTYW1lIGFzIFJhd0lPQmFzZS5yZWFkaW50bygpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NmQxYmRmYTNmMjBhZjM5IGlucHV0PTRlZDY4ZGE0OGE2YmFmZmVdKi8KK3sKKyAgICBQeV9zc2l6ZV90IGxlbiA9IHJlYWRpbnRvKHNlbGYsIGJ1ZmZlci0+YnVmLCBidWZmZXItPmxlbik7CisgICAgaWYgKGxlbiA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOworfQorCitzdGF0aWMgRFdPUkQKK25ld19idWZmZXJzaXplKHdpbmNvbnNvbGVpbyAqc2VsZiwgRFdPUkQgY3VycmVudHNpemUpCit7CisgICAgRFdPUkQgYWRkZW5kOworCisgICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAorICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuICBGb3IgYmlnZ2VyIHNpemVzLCB1c2UgYQorICAgICAgIGxlc3MtdGhhbi1kb3VibGUgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KKyAgICBpZiAoY3VycmVudHNpemUgPiA2NTUzNikKKyAgICAgICAgYWRkZW5kID0gY3VycmVudHNpemUgPj4gMzsKKyAgICBlbHNlCisgICAgICAgIGFkZGVuZCA9IDI1NiArIGN1cnJlbnRzaXplOworICAgIGlmIChhZGRlbmQgPCBTTUFMTENIVU5LKQorICAgICAgICAvKiBBdm9pZCB0aW55IHJlYWQoKSBjYWxscy4gKi8KKyAgICAgICAgYWRkZW5kID0gU01BTExDSFVOSzsKKyAgICByZXR1cm4gYWRkZW5kICsgY3VycmVudHNpemU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5yZWFkYWxsCisKK1JlYWQgYWxsIGRhdGEgZnJvbSB0aGUgY29uc29sZSwgcmV0dXJuZWQgYXMgYnl0ZXMuCisKK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTZkMzEyYzY4NGY2ZTIzYiBpbnB1dD00MDI0ZDY0OWExMDA2ZTY5XSovCit7CisgICAgd2NoYXJfdCAqYnVmOworICAgIERXT1JEIGJ1ZnNpemUsIG4sIGxlbiA9IDA7CisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIERXT1JEIGJ5dGVzX3NpemUsIHJuOworCisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKworICAgIGJ1ZnNpemUgPSBCVUZTSVo7CisKKyAgICBidWYgPSAod2NoYXJfdCopUHlNZW1fTWFsbG9jKChidWZzaXplICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgIGlmIChidWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICB3Y2hhcl90ICpzdWJidWY7CisKKyAgICAgICAgaWYgKGxlbiA+PSAoUHlfc3NpemVfdClidWZzaXplKSB7CisgICAgICAgICAgICBEV09SRCBuZXdzaXplID0gbmV3X2J1ZmZlcnNpemUoc2VsZiwgbGVuKTsKKyAgICAgICAgICAgIGlmIChuZXdzaXplID4gQlVGTUFYKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG5ld3NpemUgPCBidWZzaXplKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmJvdW5kZWQgcmVhZCByZXR1cm5lZCBtb3JlIGJ5dGVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoYW4gYSBQeXRob24gYnl0ZXMgb2JqZWN0IGNhbiBob2xkIik7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmc2l6ZSA9IG5ld3NpemU7CisKKyAgICAgICAgICAgIGJ1ZiA9IFB5TWVtX1JlYWxsb2MoYnVmLCAoYnVmc2l6ZSArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICghYnVmKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc3ViYnVmID0gcmVhZF9jb25zb2xlX3coc2VsZi0+aGFuZGxlLCBidWZzaXplIC0gbGVuLCAmbik7CisKKyAgICAgICAgaWYgKHN1YmJ1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuID4gMCkKKyAgICAgICAgICAgIHdjc25jcHlfcygmYnVmW2xlbl0sIGJ1ZnNpemUgLSBsZW4gKyAxLCBzdWJidWYsIG4pOworCisgICAgICAgIFB5TWVtX0ZyZWUoc3ViYnVmKTsKKworICAgICAgICAvKiB3aGVuIHRoZSByZWFkIHN0YXJ0cyB3aXRoIF5aIG9yIGlzIGVtcHR5IHdlIGJyZWFrICovCisgICAgICAgIGlmIChuID09IDAgfHwgYnVmW2xlbl0gPT0gJ1x4MWEnKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbGVuICs9IG47CisgICAgfQorCisgICAgaWYgKGxlbiA9PSAwIHx8IGJ1ZlswXSA9PSAnXHgxYScgJiYgX2J1ZmxlbihzZWxmKSA9PSAwKSB7CisgICAgICAgIC8qIHdoZW4gdGhlIHJlc3VsdCBzdGFydHMgd2l0aCBeWiB3ZSByZXR1cm4gYW4gZW1wdHkgYnVmZmVyICovCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGJ5dGVzX3NpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIGJ1ZiwgbGVuLAorICAgICAgICBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFieXRlc19zaXplKSB7CisgICAgICAgIERXT1JEIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgIH0KKworICAgIGJ5dGVzX3NpemUgKz0gX2J1ZmxlbihzZWxmKTsKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNfc2l6ZSk7CisgICAgcm4gPSBfY29weWZyb21idWYoc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBieXRlc19zaXplKTsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBieXRlc19zaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCBidWYsIGxlbiwKKyAgICAgICAgJlB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKVtybl0sIGJ5dGVzX3NpemUgLSBybiwgTlVMTCwgTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghYnl0ZXNfc2l6ZSkgeworICAgICAgICBEV09SRCBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgIH0KKworICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICBpZiAoYnl0ZXNfc2l6ZSA8IChzaXplX3QpUHlCeXRlc19HRVRfU0laRShieXRlcykpIHsKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnl0ZXMsIG4gKiBzaXplb2Yod2NoYXJfdCkpIDwgMCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGJ5dGVzOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZAorICAgIHNpemU6IGlvX3NzaXplX3QgPSAtMQorICAgIC8KKworUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLgorCitPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCB3aGVuIHNpemUgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLAorc28gbGVzcyBkYXRhIG1heSBiZSByZXR1cm5lZCB0aGFuIHJlcXVlc3RlZC4KK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01N2RmNjhhZjlmNGIyMmQwIGlucHV0PTZjNTZmY2VlYzQ2MGYxZGRdKi8KK3sKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfc3NpemVfdCBieXRlc19zaXplOworCisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKyAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKQorICAgICAgICByZXR1cm4gZXJyX21vZGUoInJlYWRpbmciKTsKKworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwoc2VsZik7CisgICAgaWYgKHNpemUgPiBCVUZNQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJjYW5ub3QgcmVhZCBtb3JlIHRoYW4gJWQgYnl0ZXMiLCBCVUZNQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYnl0ZXNfc2l6ZSA9IHJlYWRpbnRvKHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIGlmIChieXRlc19zaXplIDwgMCkgeworICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChieXRlc19zaXplIDwgUHlCeXRlc19HRVRfU0laRShieXRlcykpIHsKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnl0ZXMsIGJ5dGVzX3NpemUpIDwgMCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnl0ZXM7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy53cml0ZQorICAgIGI6IFB5X2J1ZmZlcgorICAgIC8KKworV3JpdGUgYnVmZmVyIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorCitPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi4KK1RoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3NWJkYjE2ZmJmOTEzN2IgaW5wdXQ9YmUzNWZiNjI0Zjk3Yzk0MV0qLworeworICAgIEJPT0wgcmVzID0gVFJVRTsKKyAgICB3Y2hhcl90ICp3YnVmOworICAgIERXT1JEIGxlbiwgd2xlbiwgbiA9IDA7CisKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIGlmICghc2VsZi0+d3JpdGFibGUpCisgICAgICAgIHJldHVybiBlcnJfbW9kZSgid3JpdGluZyIpOworCisgICAgaWYgKGItPmxlbiA+IEJVRk1BWCkKKyAgICAgICAgbGVuID0gQlVGTUFYOworICAgIGVsc2UKKyAgICAgICAgbGVuID0gKERXT1JEKWItPmxlbjsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBiLT5idWYsIGxlbiwgTlVMTCwgMCk7CisKKyAgICAvKiBpc3N1ZTExMzk1IHRoZXJlIGlzIGFuIHVuc3BlY2lmaWVkIHVwcGVyIGJvdW5kIG9uIGhvdyBtYW55IGJ5dGVzCisgICAgICAgY2FuIGJlIHdyaXR0ZW4gYXQgb25jZS4gV2UgY2FwIGF0IDMyayAtIHRoZSBjYWxsZXIgd2lsbCBoYXZlIHRvCisgICAgICAgaGFuZGxlIHBhcnRpYWwgd3JpdGVzLgorICAgICAgIFNpbmNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkgaW5wdXQgYnl0ZXMgYXJlIGJlaW5nIGlnbm9yZWQsIHdlCisgICAgICAgaGF2ZSB0byByZWR1Y2UgYW5kIHJlY2FsY3VsYXRlLiAqLworICAgIHdoaWxlICh3bGVuID4gMzI3NjYgLyBzaXplb2Yod2NoYXJfdCkpIHsKKyAgICAgICAgbGVuIC89IDI7CisgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLCBOVUxMLCAwKTsKKyAgICB9CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghd2xlbikKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgd2J1ZiA9ICh3Y2hhcl90KilQeU1lbV9NYWxsb2Mod2xlbiAqIHNpemVvZih3Y2hhcl90KSk7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYi0+YnVmLCBsZW4sIHdidWYsIHdsZW4pOworICAgIGlmICh3bGVuKSB7CisgICAgICAgIHJlcyA9IFdyaXRlQ29uc29sZVcoc2VsZi0+aGFuZGxlLCB3YnVmLCB3bGVuLCAmbiwgTlVMTCk7CisgICAgICAgIGlmIChuIDwgd2xlbikgeworICAgICAgICAgICAgLyogV3JvdGUgZmV3ZXIgY2hhcmFjdGVycyB0aGFuIGV4cGVjdGVkLCB3aGljaCBtZWFucyBvdXIKKyAgICAgICAgICAgICAqIGxlbiB2YWx1ZSBtYXkgYmUgd3JvbmcuIFNvIHJlY2FsY3VsYXRlIGl0IGZyb20gdGhlCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXJzIHRoYXQgd2VyZSB3cml0dGVuLiBBcyB0aGlzIGNvdWxkIHBvdGVudGlhbGx5CisgICAgICAgICAgICAgKiByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdmFsdWUsIHdlIGFsc28gdmFsaWRhdGUgdGhhdCB2YWx1ZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCBuLAorICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLAorICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQod2xlbiA9PSBsZW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHJlcyA9IDA7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzKSB7CisgICAgICAgIERXT1JEIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBQeU1lbV9GcmVlKHdidWYpOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICB9CisKKyAgICBQeU1lbV9GcmVlKHdidWYpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmNvbnNvbGVpb19yZXByKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxfaW8uX1dpbmRvd3NDb25zb2xlSU8gW2Nsb3NlZF0+Iik7CisKKyAgICBpZiAoc2VsZi0+cmVhZGFibGUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5fV2luZG93c0NvbnNvbGVJTyBtb2RlPSdyYicgY2xvc2VmZD0lcz4iLAorICAgICAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKKyAgICBpZiAoc2VsZi0+d3JpdGFibGUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5fV2luZG93c0NvbnNvbGVJTyBtb2RlPSd3YicgY2xvc2VmZD0lcz4iLAorICAgICAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKKworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgIl9XaW5kb3dzQ29uc29sZUlPIGhhcyBpbnZhbGlkIG1vZGUiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLmlzYXR0eQorCitBbHdheXMgVHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHlfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWVhYzA5ZDI4N2MxMWJkNyBpbnB1dD05YjkxNTkxZGJlMzU2Zjg2XSovCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKworICAgIFB5X1JFVFVSTl9UUlVFOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luY29uc29sZWlvX2dldHN0YXRlKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiY2Fubm90IHNlcmlhbGl6ZSAnJXMnIG9iamVjdCIsIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCisjaW5jbHVkZSAiY2xpbmljL3dpbmNvbnNvbGVpby5jLmgiCisKK3N0YXRpYyBQeU1ldGhvZERlZiB3aW5jb25zb2xlaW9fbWV0aG9kc1tdID0geworICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRgorICAgIHsiX19nZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKXdpbmNvbnNvbGVpb19nZXRzdGF0ZSwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKKy8qICdjbG9zZWQnIGFuZCAnbW9kZScgYXJlIGF0dHJpYnV0ZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBGaWxlSU8uICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfY2xvc2VkKHdpbmNvbnNvbGVpbyAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jbG9zZWZkKHdpbmNvbnNvbGVpbyAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5jbG9zZWhhbmRsZSkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X21vZGUod2luY29uc29sZWlvICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhzZWxmLT5yZWFkYWJsZSA/ICJyYiIgOiAid2IiKTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIHdpbmNvbnNvbGVpb19nZXRzZXRsaXN0W10gPSB7CisgICAgeyJjbG9zZWQiLCAoZ2V0dGVyKWdldF9jbG9zZWQsIE5VTEwsICJUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZCJ9LAorICAgIHsiY2xvc2VmZCIsIChnZXR0ZXIpZ2V0X2Nsb3NlZmQsIE5VTEwsCisgICAgICAgICJUcnVlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBjbG9zZWQgYnkgY2xvc2UoKS4ifSwKKyAgICB7Im1vZGUiLCAoZ2V0dGVyKWdldF9tb2RlLCBOVUxMLCAiU3RyaW5nIGdpdmluZyB0aGUgZmlsZSBtb2RlIn0sCisgICAge05VTEx9LAorfTsKKworc3RhdGljIFB5TWVtYmVyRGVmIHdpbmNvbnNvbGVpb19tZW1iZXJzW10gPSB7CisgICAgeyJfYmxrc2l6ZSIsIFRfVUlOVCwgb2Zmc2V0b2Yod2luY29uc29sZWlvLCBibGtzaXplKSwgMH0sCisgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2Yod2luY29uc29sZWlvLCBmaW5hbGl6aW5nKSwgMH0sCisgICAge05VTEx9Cit9OworCitQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9pby5fV2luZG93c0NvbnNvbGVJTyIsCisgICAgc2l6ZW9mKHdpbmNvbnNvbGVpbyksCisgICAgMCwKKyAgICAoZGVzdHJ1Y3Rvcil3aW5jb25zb2xlaW9fZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYyl3aW5jb25zb2xlaW9fcmVwciwgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX19kb2NfXywgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXdpbmNvbnNvbGVpb190cmF2ZXJzZSwgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpd2luY29uc29sZWlvX2NsZWFyLCAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZih3aW5jb25zb2xlaW8sIHdlYWtyZWZsaXN0KSwgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHdpbmNvbnNvbGVpb19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHdpbmNvbnNvbGVpb19tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIHdpbmNvbnNvbGVpb19nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIG9mZnNldG9mKHdpbmNvbnNvbGVpbywgZGljdCksICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIF9pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfXywgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICB3aW5jb25zb2xlaW9fbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgX1B5V2luZG93c0NvbnNvbGVJT19UeXBlID0gKFB5T2JqZWN0KikmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19qc29uLmMgYi9Nb2R1bGVzL19qc29uLmMKaW5kZXggZjgyYWYzNC4uZDNkYmY5OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fanNvbi5jCisrKyBiL01vZHVsZXMvX2pzb24uYwpAQCAtMTEyLDcgKzExMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2VuY29kZWRfY29uc3QoUHlPYmplY3QgKm9iaik7CiBzdGF0aWMgdm9pZAotcmFpc2VfZXJybXNnKGNoYXIgKm1zZywgUHlPYmplY3QgKnMsIFB5X3NzaXplX3QgZW5kKTsKK3JhaXNlX2Vycm1zZyhjb25zdCBjaGFyICptc2csIFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IGVuZCk7CiBzdGF0aWMgUHlPYmplY3QgKgogZW5jb2Rlcl9lbmNvZGVfc3RyaW5nKFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKm9iaik7CiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzIxLDcgKzMyMSw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1yYWlzZV9lcnJtc2coY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCityYWlzZV9lcnJtc2coY29uc3QgY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgLyogVXNlIEpTT05EZWNvZGVFcnJvciBleGNlcHRpb24gdG8gcmFpc2UgYSBuaWNlIGxvb2tpbmcgVmFsdWVFcnJvciBzdWJjbGFzcyAqLwogICAgIHN0YXRpYyBQeU9iamVjdCAqSlNPTkRlY29kZUVycm9yID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jIGIvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKaW5kZXggYjEzMDdlZi4uZmViMzgwMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogLyogdGhlIGdyb3VwaW5nIGlzIHRlcm1pbmF0ZWQgYnkgZWl0aGVyIDAgb3IgQ0hBUl9NQVggKi8KIHN0YXRpYyBQeU9iamVjdCoKLWNvcHlfZ3JvdXBpbmcoY2hhciogcykKK2NvcHlfZ3JvdXBpbmcoY29uc3QgY2hhciogcykKIHsKICAgICBpbnQgaTsKICAgICBQeU9iamVjdCAqcmVzdWx0LCAqdmFsID0gTlVMTDsKQEAgLTYyMiw1MyArNjIyLDM0IEBACiBQeU1PRElOSVRfRlVOQwogUHlJbml0X19sb2NhbGUodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKmQsICp4OworICAgIFB5T2JqZWN0ICptOwogI2lmZGVmIEhBVkVfTEFOR0lORk9fSAogICAgIGludCBpOwogI2VuZGlmCiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfbG9jYWxlbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQotICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19DVFlQRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX0NUWVBFIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfVElNRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX1RJTUUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19DT0xMQVRFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfQ09MTEFURSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX01PTkVUQVJZKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfTU9ORVRBUlkiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX0NUWVBFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19USU1FKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19DT0xMQVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19NT05FVEFSWSk7CiAKICNpZmRlZiBMQ19NRVNTQUdFUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfTUVTU0FHRVMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19NRVNTQUdFUyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfTUVTU0FHRVMpOwogI2VuZGlmIC8qIExDX01FU1NBR0VTICovCiAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX05VTUVSSUMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19OVU1FUklDIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfQUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfQUxMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ0hBUl9NQVgpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDSEFSX01BWCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfTlVNRVJJQyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfQUxMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDSEFSX01BWCk7CiAKICAgICBFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigibG9jYWxlLkVycm9yIiwgTlVMTCwgTlVMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkVycm9yIiwgRXJyb3IpOworICAgIGlmIChFcnJvciA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRXJyb3IiLCBFcnJvcik7CiAKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKICAgICBmb3IgKGkgPSAwOyBsYW5naW5mb19jb25zdGFudHNbaV0ubmFtZTsgaSsrKSB7CkBAIC02NzYsNiArNjU3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdpbmZvX2NvbnN0YW50c1tpXS52YWx1ZSk7CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gbTsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbHNwcm9mLmMgYi9Nb2R1bGVzL19sc3Byb2YuYwppbmRleCA2NmU1MzRmLi5kYzNmOGFiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sc3Byb2YuYworKysgYi9Nb2R1bGVzL19sc3Byb2YuYwpAQCAtMiwxNyArMiwxMyBAQAogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAicm90YXRpbmd0cmVlLmgiCiAKLSNpZiAhZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKLSNlcnJvciAiVGhpcyBtb2R1bGUgcmVxdWlyZXMgbG9uZyBsb25ncyEiCi0jZW5kaWYKLQogLyoqKiBTZWxlY3Rpb24gb2YgYSBoaWdoLXByZWNpc2lvbiB0aW1lciAqKiovCiAKICNpZmRlZiBNU19XSU5ET1dTCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIGhwVGltZXIodm9pZCkKIHsKICAgICBMQVJHRV9JTlRFR0VSIGxpOwpAQCAtMzksMTEgKzM1LDExIEBACiAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CiAjaW5jbHVkZSA8c3lzL3RpbWVzLmg+CiAKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIGhwVGltZXIodm9pZCkKIHsKICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICBQWV9MT05HX0xPTkcgcmV0OworICAgIGxvbmcgbG9uZyByZXQ7CiAjaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCiAgICAgZ2V0dGltZW9mZGF5KCZ0dik7CiAjZWxzZQpAQCAtNzAsOCArNjYsOCBAQAogLyogcmVwcmVzZW50cyBhIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGFub3RoZXIgZnVuY3Rpb24gKi8KIHR5cGVkZWYgc3RydWN0IF9Qcm9maWxlclN1YkVudHJ5IHsKICAgICByb3RhdGluZ19ub2RlX3QgaGVhZGVyOwotICAgIFBZX0xPTkdfTE9ORyB0dDsKLSAgICBQWV9MT05HX0xPTkcgaXQ7CisgICAgbG9uZyBsb25nIHR0OworICAgIGxvbmcgbG9uZyBpdDsKICAgICBsb25nIGNhbGxjb3VudDsKICAgICBsb25nIHJlY3Vyc2l2ZWNhbGxjb3VudDsKICAgICBsb25nIHJlY3Vyc2lvbkxldmVsOwpAQCAtODEsOCArNzcsOCBAQAogdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVyRW50cnkgewogICAgIHJvdGF0aW5nX25vZGVfdCBoZWFkZXI7CiAgICAgUHlPYmplY3QgKnVzZXJPYmo7IC8qIFB5Q29kZU9iamVjdCwgb3IgYSBkZXNjcmlwdGl2ZSBzdHIgZm9yIGJ1aWx0aW5zICovCi0gICAgUFlfTE9OR19MT05HIHR0OyAvKiB0b3RhbCB0aW1lIGluIHRoaXMgZW50cnkgKi8KLSAgICBQWV9MT05HX0xPTkcgaXQ7IC8qIGlubGluZSB0aW1lIGluIHRoaXMgZW50cnkgKG5vdCBpbiBzdWJjYWxscykgKi8KKyAgICBsb25nIGxvbmcgdHQ7IC8qIHRvdGFsIHRpbWUgaW4gdGhpcyBlbnRyeSAqLworICAgIGxvbmcgbG9uZyBpdDsgLyogaW5saW5lIHRpbWUgaW4gdGhpcyBlbnRyeSAobm90IGluIHN1YmNhbGxzKSAqLwogICAgIGxvbmcgY2FsbGNvdW50OyAvKiBob3cgbWFueSB0aW1lcyB0aGlzIHdhcyBjYWxsZWQgKi8KICAgICBsb25nIHJlY3Vyc2l2ZWNhbGxjb3VudDsgLyogaG93IG1hbnkgdGltZXMgY2FsbGVkIHJlY3Vyc2l2ZWx5ICovCiAgICAgbG9uZyByZWN1cnNpb25MZXZlbDsKQEAgLTkwLDggKzg2LDggQEAKIH0gUHJvZmlsZXJFbnRyeTsKIAogdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVyQ29udGV4dCB7Ci0gICAgUFlfTE9OR19MT05HIHQwOwotICAgIFBZX0xPTkdfTE9ORyBzdWJ0OworICAgIGxvbmcgbG9uZyB0MDsKKyAgICBsb25nIGxvbmcgc3VidDsKICAgICBzdHJ1Y3QgX1Byb2ZpbGVyQ29udGV4dCAqcHJldmlvdXM7CiAgICAgUHJvZmlsZXJFbnRyeSAqY3R4RW50cnk7CiB9IFByb2ZpbGVyQ29udGV4dDsKQEAgLTEyMSw5ICsxMTcsOSBAQAogI2RlZmluZSBET1VCTEVfVElNRVJfUFJFQ0lTSU9OICAgNDI5NDk2NzI5Ni4wCiBzdGF0aWMgUHlPYmplY3QgKmVtcHR5X3R1cGxlOwogCi1zdGF0aWMgUFlfTE9OR19MT05HIENhbGxFeHRlcm5hbFRpbWVyKFByb2ZpbGVyT2JqZWN0ICpwT2JqKQorc3RhdGljIGxvbmcgbG9uZyBDYWxsRXh0ZXJuYWxUaW1lcihQcm9maWxlck9iamVjdCAqcE9iaikKIHsKLSAgICBQWV9MT05HX0xPTkcgcmVzdWx0OworICAgIGxvbmcgbG9uZyByZXN1bHQ7CiAgICAgUHlPYmplY3QgKm8gPSBQeU9iamVjdF9DYWxsKHBPYmotPmV4dGVybmFsVGltZXIsIGVtcHR5X3R1cGxlLCBOVUxMKTsKICAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShwT2JqLT5leHRlcm5hbFRpbWVyKTsKQEAgLTEzNiwxMSArMTMyLDExIEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBpbnRlcnByZXQgdGhlIHJlc3VsdCBhcyBhIGRvdWJsZSBtZWFzdXJlZCBpbiBzZWNvbmRzLgotICAgICAgICAgICBBcyB0aGUgcHJvZmlsZXIgd29ya3Mgd2l0aCBQWV9MT05HX0xPTkcgaW50ZXJuYWxseQorICAgICAgICAgICBBcyB0aGUgcHJvZmlsZXIgd29ya3Mgd2l0aCBsb25nIGxvbmcgaW50ZXJuYWxseQogICAgICAgICAgICB3ZSBjb252ZXJ0IGl0IHRvIGEgbGFyZ2UgaW50ZWdlciAqLwogICAgICAgICBkb3VibGUgdmFsID0gUHlGbG9hdF9Bc0RvdWJsZShvKTsKICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgZGVsYXllZCB0byB0aGUgY29kZSBiZWxvdyAqLwotICAgICAgICByZXN1bHQgPSAoUFlfTE9OR19MT05HKSAodmFsICogRE9VQkxFX1RJTUVSX1BSRUNJU0lPTik7CisgICAgICAgIHJlc3VsdCA9IChsb25nIGxvbmcpICh2YWwgKiBET1VCTEVfVElNRVJfUFJFQ0lTSU9OKTsKICAgICB9CiAgICAgUHlfREVDUkVGKG8pOwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CkBAIC0zNDIsOCArMzM4LDggQEAKIHN0YXRpYyB2b2lkCiBTdG9wKFByb2ZpbGVyT2JqZWN0ICpwT2JqLCBQcm9maWxlckNvbnRleHQgKnNlbGYsIFByb2ZpbGVyRW50cnkgKmVudHJ5KQogewotICAgIFBZX0xPTkdfTE9ORyB0dCA9IENBTExfVElNRVIocE9iaikgLSBzZWxmLT50MDsKLSAgICBQWV9MT05HX0xPTkcgaXQgPSB0dCAtIHNlbGYtPnN1YnQ7CisgICAgbG9uZyBsb25nIHR0ID0gQ0FMTF9USU1FUihwT2JqKSAtIHNlbGYtPnQwOworICAgIGxvbmcgbG9uZyBpdCA9IHR0IC0gc2VsZi0+c3VidDsKICAgICBpZiAoc2VsZi0+cHJldmlvdXMpCiAgICAgICAgIHNlbGYtPnByZXZpb3VzLT5zdWJ0ICs9IHR0OwogICAgIHBPYmotPmN1cnJlbnRQcm9maWxlckNvbnRleHQgPSBzZWxmLT5wcmV2aW91czsKQEAgLTc2Miw3ICs3NTgsNiBAQAogc3RhdGljIGludAogcHJvZmlsZXJfaW5pdChQcm9maWxlck9iamVjdCAqcE9iaiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqbzsKICAgICBQeU9iamVjdCAqdGltZXIgPSBOVUxMOwogICAgIGRvdWJsZSB0aW1ldW5pdCA9IDAuMDsKICAgICBpbnQgc3ViY2FsbHMgPSAxOwpAQCAtNzc3LDExICs3NzIsOSBAQAogCiAgICAgaWYgKHNldFN1YmNhbGxzKHBPYmosIHN1YmNhbGxzKSA8IDAgfHwgc2V0QnVpbHRpbnMocE9iaiwgYnVpbHRpbnMpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIG8gPSBwT2JqLT5leHRlcm5hbFRpbWVyOwotICAgIHBPYmotPmV4dGVybmFsVGltZXIgPSB0aW1lcjsKLSAgICBQeV9YSU5DUkVGKHRpbWVyKTsKLSAgICBQeV9YREVDUkVGKG8pOwogICAgIHBPYmotPmV4dGVybmFsVGltZXJVbml0ID0gdGltZXVuaXQ7CisgICAgUHlfWElOQ1JFRih0aW1lcik7CisgICAgUHlfWFNFVFJFRihwT2JqLT5leHRlcm5hbFRpbWVyLCB0aW1lcik7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwppbmRleCA3NGMzMDFkLi5mNWRjZWExIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCkBAIC0xOCwxMiArMTgsNiBAQAogCiAjaW5jbHVkZSA8bHptYS5oPgogCi0KLSNpZm5kZWYgUFlfTE9OR19MT05HCi0jZXJyb3IgIlRoaXMgbW9kdWxlIHJlcXVpcmVzIFBZX0xPTkdfTE9ORyB0byBiZSBkZWZpbmVkIgotI2VuZGlmCi0KLQogI2lmZGVmIFdJVEhfVEhSRUFECiAjZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopIGRvIHsgXAogICAgIGlmICghUHlUaHJlYWRfYWNxdWlyZV9sb2NrKChvYmopLT5sb2NrLCAwKSkgeyBcCkBAIC0xNjMsNyArMTU3LDcgQEAKICAgICAgIHVpbnQzMl90IC0gdGhlICJJIiAodW5zaWduZWQgaW50KSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0IHNpemUsIGJ1dAogICAgICAgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KIAotICAgICAgbHptYV92bGkgLSB0aGUgIksiICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQKKyAgICAgIGx6bWFfdmxpIC0gdGhlICJLIiAodW5zaWduZWQgbG9uZyBsb25nKSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0CiAgICAgICBzaXplLCBidXQgbGlrZSAiSSIgaXQgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KIAogICAgICAgbHptYV9tb2RlIGFuZCBsem1hX21hdGNoX2ZpbmRlciAtIHRoZXNlIGFyZSBlbnVtZXJhdGlvbiB0eXBlcywgYW5kCkBAIC0xNzYsMTIgKzE3MCwxMiBAQAogICAgIHN0YXRpYyBpbnQgXAogICAgIEZVTkNOQU1FKFB5T2JqZWN0ICpvYmosIHZvaWQgKnB0cikgXAogICAgIHsgXAotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOyBcCisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7IFwKICAgICAgICAgXAogICAgICAgICB2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG9iaik7IFwKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIFwKICAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgICAgIGlmICgodW5zaWduZWQgUFlfTE9OR19MT05HKShUWVBFKXZhbCAhPSB2YWwpIHsgXAorICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcgbG9uZykoVFlQRSl2YWwgIT0gdmFsKSB7IFwKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIHRvbyBsYXJnZSBmb3IgIiAjVFlQRSAiIHR5cGUiKTsgXAogICAgICAgICAgICAgcmV0dXJuIDA7IFwKQEAgLTM5OCw3ICszOTIsNyBAQAogICAgUHl0aG9uLWxldmVsIGZpbHRlciBzcGVjaWZpZXJzIChyZXByZXNlbnRlZCBhcyBkaWN0cykuICovCiAKIHN0YXRpYyBpbnQKLXNwZWNfYWRkX2ZpZWxkKFB5T2JqZWN0ICpzcGVjLCBfUHlfSWRlbnRpZmllciAqa2V5LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWUpCitzcGVjX2FkZF9maWVsZChQeU9iamVjdCAqc3BlYywgX1B5X0lkZW50aWZpZXIgKmtleSwgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQogewogICAgIGludCBzdGF0dXM7CiAgICAgUHlPYmplY3QgKnZhbHVlX29iamVjdDsKQEAgLTU1Myw3ICs1NDcsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQUNvbXByZXNzb3IuY29tcHJlc3MKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQ29tcHJlc3NvciAqIikKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAvCiAKQEAgLTU2Nyw3ICs1NjAsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChDb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFmNjE1MTM2OTYzZTAwZiBpbnB1dD04YjYwY2IxM2UwY2U2NDIwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFmNjE1MTM2OTYzZTAwZiBpbnB1dD02NDAxOWVhYzdmMmNjOGQwXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTU4Myw4ICs1NzYsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQUNvbXByZXNzb3IuZmx1c2gKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQ29tcHJlc3NvciAqIikKLQogRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLgogCiBSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgbGVmdCBpbiBpbnRlcm5hbCBidWZmZXJzLgpAQCAtNTk0LDcgKzU4NSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9MWk1BQ29tcHJlc3Nvcl9mbHVzaF9pbXBsKENvbXByZXNzb3IgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVjMjFmM2UyMjUwNGY1MCBpbnB1dD0zMDYwZmIyNmY5YjQwNDJjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVjMjFmM2UyMjUwNGY1MCBpbnB1dD02YjM2OTMwM2Y2N2FkMGE4XSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTY5OCw3ICs2ODksNiBAQAogLypbLWNsaW5pYyBpbnB1dF0KIF9sem1hLkxaTUFDb21wcmVzc29yLl9faW5pdF9fCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkNvbXByZXNzb3IgKiIpCiAgICAgZm9ybWF0OiBpbnQoY19kZWZhdWx0PSJGT1JNQVRfWFoiKSA9IEZPUk1BVF9YWgogICAgICAgICBUaGUgY29udGFpbmVyIGZvcm1hdCB0byB1c2UgZm9yIHRoZSBvdXRwdXQuICBUaGlzIGNhbgogICAgICAgICBiZSBGT1JNQVRfWFogKGRlZmF1bHQpLCBGT1JNQVRfQUxPTkUsIG9yIEZPUk1BVF9SQVcuCkBAIC0xMDY1LDcgKzEwNTUsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQURlY29tcHJlc3Nvci5kZWNvbXByZXNzCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkRlY29tcHJlc3NvciAqIikKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICBtYXhfbGVuZ3RoOiBQeV9zc2l6ZV90PS0xCiAKQEAgLTEwODgsNyArMTA3Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY0ZTIwZWM3MTIyMjQxZCBpbnB1dD1mMmJiOTAyY2MxY2FmMjAzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY0ZTIwZWM3MTIyMjQxZCBpbnB1dD02MGMxZjEzNTgyMGUzMDlkXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTExMjgsNyArMTExNyw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BRGVjb21wcmVzc29yLl9faW5pdF9fCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkRlY29tcHJlc3NvciAqIikKICAgICBmb3JtYXQ6IGludChjX2RlZmF1bHQ9IkZPUk1BVF9BVVRPIikgPSBGT1JNQVRfQVVUTwogICAgICAgICBTcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgb2YgdGhlIGlucHV0IHN0cmVhbS4gIElmIHRoaXMgaXMKICAgICAgICAgRk9STUFUX0FVVE8gKHRoZSBkZWZhdWx0KSwgdGhlIGRlY29tcHJlc3NvciB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0CkBAIC0xMTU0LDcgKzExNDIsNyBAQAogc3RhdGljIGludAogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9NDU4Y2E2MTMyZWYyOTgwMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9ODFmZTY4NGE2YzJmOGEyN10qLwogewogICAgIGNvbnN0IHVpbnQzMl90IGRlY29kZXJfZmxhZ3MgPSBMWk1BX1RFTExfQU5ZX0NIRUNLIHwgTFpNQV9URUxMX05PX0NIRUNLOwogICAgIHVpbnQ2NF90IG1lbWxpbWl0XyA9IFVJTlQ2NF9NQVg7CkBAIC0xNDQ5LDcgKzE0MzcsNyBAQAogLyogU29tZSBvZiBvdXIgY29uc3RhbnRzIGFyZSBtb3JlIHRoYW4gMzIgYml0cyB3aWRlLCBzbyBQeU1vZHVsZV9BZGRJbnRDb25zdGFudAogICAgd291bGQgbm90IHdvcmsgY29ycmVjdGx5IG9uIHBsYXRmb3JtcyB3aXRoIDMyLWJpdCBsb25ncy4gKi8KIHN0YXRpYyBpbnQKLW1vZHVsZV9hZGRfaW50X2NvbnN0YW50KFB5T2JqZWN0ICptLCBjb25zdCBjaGFyICpuYW1lLCBQWV9MT05HX0xPTkcgdmFsdWUpCittb2R1bGVfYWRkX2ludF9jb25zdGFudChQeU9iamVjdCAqbSwgY29uc3QgY2hhciAqbmFtZSwgbG9uZyBsb25nIHZhbHVlKQogewogICAgIFB5T2JqZWN0ICpvID0gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CiAgICAgaWYgKG8gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYwppbmRleCA0YWU2MzhlLi5kOTJhOGJmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKKysrIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICB7InJlY3YiLCBtdWx0aXByb2Nlc3NpbmdfcmVjdiwgTUVUSF9WQVJBUkdTLCAiIn0sCiAgICAgeyJzZW5kIiwgbXVsdGlwcm9jZXNzaW5nX3NlbmQsIE1FVEhfVkFSQVJHUywgIiJ9LAogI2VuZGlmCi0jaWZuZGVmIFBPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQKKyNpZiAhZGVmaW5lZChQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKICAgICB7InNlbV91bmxpbmsiLCBfUHlNcF9zZW1fdW5saW5rLCBNRVRIX1ZBUkFSR1MsICIifSwKICNlbmRpZgogICAgIHtOVUxMfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCmluZGV4IDlhZWVhOGQuLjUxMmJjMTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaAorKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKQEAgLTYwLDcgKzYwLDcgQEAKICNpZiBTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HCiAjICBkZWZpbmUgRl9QT0lOVEVSICJrIgogIyAgZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HCi0jZWxpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiAoU0laRU9GX1ZPSURfUCA9PSBTSVpFT0ZfTE9OR19MT05HKQorI2VsaWYgU0laRU9GX1ZPSURfUCA9PSBTSVpFT0ZfTE9OR19MT05HCiAjICBkZWZpbmUgRl9QT0lOVEVSICJLIgogIyAgZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HTE9ORwogI2Vsc2UKZGlmZiAtLWdpdCBhL01vZHVsZXMvX29wZXJhdG9yLmMgYi9Nb2R1bGVzL19vcGVyYXRvci5jCmluZGV4IGRmZmYxZDIuLmZiOGVhZmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX29wZXJhdG9yLmMKKysrIGIvTW9kdWxlcy9fb3BlcmF0b3IuYwpAQCAtMTExMSw2ICsxMTExLDggQEAKICAgICAgICAgUHlPYmplY3QgKmZ1bmN0b29sczsKICAgICAgICAgUHlPYmplY3QgKnBhcnRpYWw7CiAgICAgICAgIFB5T2JqZWN0ICpjb25zdHJ1Y3RvcjsKKyAgICAgICAgUHlPYmplY3QgKm5ld2FyZ3NbMl07CisKICAgICAgICAgX1B5X0lERU5USUZJRVIocGFydGlhbCk7CiAgICAgICAgIGZ1bmN0b29scyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZnVuY3Rvb2xzIik7CiAgICAgICAgIGlmICghZnVuY3Rvb2xzKQpAQCAtMTExOSwxNyArMTEyMSwxMSBAQAogICAgICAgICBQeV9ERUNSRUYoZnVuY3Rvb2xzKTsKICAgICAgICAgaWYgKCFwYXJ0aWFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldygyKTsKLSAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpYWwpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKFB5X1RZUEUobWMpKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCAoUHlPYmplY3QgKilQeV9UWVBFKG1jKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihtYy0+bmFtZSk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMSwgbWMtPm5hbWUpOwotICAgICAgICBjb25zdHJ1Y3RvciA9IFB5T2JqZWN0X0NhbGwocGFydGlhbCwgbmV3YXJncywgbWMtPmt3ZHMpOwotICAgICAgICBQeV9ERUNSRUYobmV3YXJncyk7CisKKyAgICAgICAgbmV3YXJnc1swXSA9IChQeU9iamVjdCAqKVB5X1RZUEUobWMpOworICAgICAgICBuZXdhcmdzWzFdID0gbWMtPm5hbWU7CisgICAgICAgIGNvbnN0cnVjdG9yID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChwYXJ0aWFsLCBuZXdhcmdzLCAyLCBtYy0+a3dkcyk7CisKICAgICAgICAgUHlfREVDUkVGKHBhcnRpYWwpOwogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk8iLCBjb25zdHJ1Y3RvciwgbWMtPmFyZ3MpOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3BpY2tsZS5jIGIvTW9kdWxlcy9fcGlja2xlLmMKaW5kZXggM2MyMWI2YS4uZmMxNmM2MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcGlja2xlLmMKKysrIGIvTW9kdWxlcy9fcGlja2xlLmMKQEAgLTE1Myw2ICsxNTMsOSBAQAogICAgIFB5T2JqZWN0ICpjb2RlY3NfZW5jb2RlOwogICAgIC8qIGJ1aWx0aW5zLmdldGF0dHIsIHVzZWQgZm9yIHNhdmluZyBuZXN0ZWQgbmFtZXMgd2l0aCBwcm90b2NvbCA8IDQgKi8KICAgICBQeU9iamVjdCAqZ2V0YXR0cjsKKyAgICAvKiBmdW5jdG9vbHMucGFydGlhbCwgdXNlZCBmb3IgaW1wbGVtZW50aW5nIF9fbmV3b2JqX2V4X18gd2l0aCBwcm90b2NvbHMKKyAgICAgICAyIGFuZCAzICovCisgICAgUHlPYmplY3QgKnBhcnRpYWw7CiB9IFBpY2tsZVN0YXRlOwogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHRoZSBfcGlja2xlIG1vZHVsZSBkZWZpbml0aW9uLiAqLwpAQCAtMTkwLDYgKzE5Myw3IEBACiAgICAgUHlfQ0xFQVIoc3QtPmltcG9ydF9tYXBwaW5nXzN0bzIpOwogICAgIFB5X0NMRUFSKHN0LT5jb2RlY3NfZW5jb2RlKTsKICAgICBQeV9DTEVBUihzdC0+Z2V0YXR0cik7CisgICAgUHlfQ0xFQVIoc3QtPnBhcnRpYWwpOwogfQogCiAvKiBJbml0aWFsaXplIHRoZSBnaXZlbiBwaWNrbGUgbW9kdWxlIHN0YXRlLiAqLwpAQCAtMjAwLDYgKzIwNCw3IEBACiAgICAgUHlPYmplY3QgKmNvcHlyZWcgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb21wYXRfcGlja2xlID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29kZWNzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuY3Rvb2xzID0gTlVMTDsKIAogICAgIGJ1aWx0aW5zID0gUHlFdmFsX0dldEJ1aWx0aW5zKCk7CiAgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpCkBAIC0zMTQsMTIgKzMxOSwyMSBAQAogICAgIH0KICAgICBQeV9DTEVBUihjb2RlY3MpOwogCisgICAgZnVuY3Rvb2xzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmdW5jdG9vbHMiKTsKKyAgICBpZiAoIWZ1bmN0b29scykKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBzdC0+cGFydGlhbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZnVuY3Rvb2xzLCAicGFydGlhbCIpOworICAgIGlmICghc3QtPnBhcnRpYWwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIoZnVuY3Rvb2xzKTsKKwogICAgIHJldHVybiAwOwogCiAgIGVycm9yOgogICAgIFB5X0NMRUFSKGNvcHlyZWcpOwogICAgIFB5X0NMRUFSKGNvbXBhdF9waWNrbGUpOwogICAgIFB5X0NMRUFSKGNvZGVjcyk7CisgICAgUHlfQ0xFQVIoZnVuY3Rvb2xzKTsKICAgICBfUGlja2xlX0NsZWFyU3RhdGUoc3QpOwogICAgIHJldHVybiAtMTsKIH0KQEAgLTMzMSw0MyArMzQ1LDIwIEBACiBfUGlja2xlX0Zhc3RDYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqb2JqKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlPYmplY3QgKmFyZ190dXBsZSA9IFB5VHVwbGVfTmV3KDEpOwogCi0gICAgLyogTm90ZTogdGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJldXNlIHRoZSBhcmd1bWVudCB0dXBsZS4gVGhpcyB1c2VkIHRvIGdpdmUKLSAgICAgICBhIHNsaWdodCBwZXJmb3JtYW5jZSBib29zdCB3aXRoIG9sZGVyIHBpY2tsZSBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgbWFueQotICAgICAgIHVuYnVmZmVyZWQgcmVhZHMgb2NjdXJyZWQgKHRodXMgbmVlZGluZyBtYW55IGZ1bmN0aW9uIGNhbGxzKS4KLQotICAgICAgIEhvd2V2ZXIsIHRoaXMgb3B0aW1pemF0aW9uIHdhcyByZW1vdmVkIGJlY2F1c2UgaXQgd2FzIHRvbyBjb21wbGljYXRlZAotICAgICAgIHRvIGdldCByaWdodC4gSXQgYWJ1c2VkIHRoZSBDIEFQSSBmb3IgdHVwbGVzIHRvIG11dGF0ZSB0aGVtIHdoaWNoIGxlZAotICAgICAgIHRvIHN1YnRsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNvbmN1cnJlbmN5IGJ1Z3MuIEZ1cnRoZXJtb3JlLCB0aGUKLSAgICAgICBpbnRyb2R1Y3Rpb24gb2YgcHJvdG9jb2wgNCBhbmQgdGhlIHByZWZldGNoaW5nIG9wdGltaXphdGlvbiB2aWEgcGVlaygpCi0gICAgICAgc2lnbmlmaWNhbnRseSByZWR1Y2VkIHRoZSBudW1iZXIgb2YgZnVuY3Rpb24gY2FsbHMgd2UgZG8uIFRodXMsIHRoZQotICAgICAgIGJlbmVmaXRzIGJlY2FtZSBtYXJnaW5hbCBhdCBiZXN0LiAqLwotCi0gICAgaWYgKGFyZ190dXBsZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdfdHVwbGUsIDAsIG9iaik7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdfdHVwbGUsIE5VTEwpOwotICAgIFB5X0NMRUFSKGFyZ190dXBsZSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIG9iaik7CisgICAgUHlfREVDUkVGKG9iaik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyBpbnQKLXN0YWNrX3VuZGVyZmxvdyh2b2lkKQotewotICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInVucGlja2xpbmcgc3RhY2sgdW5kZXJmbG93Iik7Ci0gICAgcmV0dXJuIC0xOwotfQotCiAvKiBJbnRlcm5hbCBkYXRhIHR5cGUgdXNlZCBhcyB0aGUgdW5waWNrbGluZyBzdGFjay4gKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9WQVJfSEVBRAogICAgIFB5T2JqZWN0ICoqZGF0YTsKKyAgICBpbnQgbWFya19zZXQ7ICAgICAgICAgIC8qIGlzIE1BUksgc2V0PyAqLworICAgIFB5X3NzaXplX3QgZmVuY2U7ICAgICAgLyogcG9zaXRpb24gb2YgdG9wIE1BUksgb3IgMCAqLwogICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOyAgLyogbnVtYmVyIG9mIHNsb3RzIGluIGRhdGEgYWxsb2NhdGVkICovCiB9IFBkYXRhOwogCkBAIC0zOTgsNiArMzg5LDggQEAKICAgICBpZiAoIShzZWxmID0gUHlPYmplY3RfTmV3KFBkYXRhLCAmUGRhdGFfVHlwZSkpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9TSVpFKHNlbGYpID0gMDsKKyAgICBzZWxmLT5tYXJrX3NldCA9IDA7CisgICAgc2VsZi0+ZmVuY2UgPSAwOwogICAgIHNlbGYtPmFsbG9jYXRlZCA9IDg7CiAgICAgc2VsZi0+ZGF0YSA9IFB5TWVtX01BTExPQyhzZWxmLT5hbGxvY2F0ZWQgKiBzaXplb2YoUHlPYmplY3QgKikpOwogICAgIGlmIChzZWxmLT5kYXRhKQpAQCAtNDE1LDggKzQwOCw3IEBACiB7CiAgICAgUHlfc3NpemVfdCBpID0gUHlfU0laRShzZWxmKTsKIAotICAgIGlmIChjbGVhcnRvIDwgMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGFzc2VydChjbGVhcnRvID49IHNlbGYtPmZlbmNlKTsKICAgICBpZiAoY2xlYXJ0byA+PSBpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNDUyLDYgKzQ0NCwxNyBAQAogICAgIHJldHVybiAtMTsKIH0KIAorc3RhdGljIGludAorUGRhdGFfc3RhY2tfdW5kZXJmbG93KFBkYXRhICpzZWxmKQoreworICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+bWFya19zZXQgPworICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBNQVJLIGZvdW5kIiA6CisgICAgICAgICAgICAgICAgICAgICJ1bnBpY2tsaW5nIHN0YWNrIHVuZGVyZmxvdyIpOworICAgIHJldHVybiAtMTsKK30KKwogLyogRCBpcyBhIFBkYXRhKi4gIFBvcCB0aGUgdG9wbW9zdCBlbGVtZW50IGFuZCBzdG9yZSBpdCBpbnRvIFYsIHdoaWNoCiAgKiBtdXN0IGJlIGFuIGx2YWx1ZSBob2xkaW5nIFB5T2JqZWN0Ki4gIE9uIHN0YWNrIHVuZGVyZmxvdywgVW5waWNrbGluZ0Vycm9yCiAgKiBpcyByYWlzZWQgYW5kIFYgaXMgc2V0IHRvIE5VTEwuCkBAIC00NTksOSArNDYyLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBQZGF0YV9wb3AoUGRhdGEgKnNlbGYpCiB7Ci0gICAgaWYgKFB5X1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAiYmFkIHBpY2tsZSBkYXRhIik7CisgICAgaWYgKFB5X1NJWkUoc2VsZikgPD0gc2VsZi0+ZmVuY2UpIHsKKyAgICAgICAgUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIHNlbGYtPmRhdGFbLS1QeV9TSVpFKHNlbGYpXTsKQEAgLTQ5Myw2ICs0OTUsMTAgQEAKICAgICBQeU9iamVjdCAqdHVwbGU7CiAgICAgUHlfc3NpemVfdCBsZW4sIGksIGo7CiAKKyAgICBpZiAoc3RhcnQgPCBzZWxmLT5mZW5jZSkgeworICAgICAgICBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBsZW4gPSBQeV9TSVpFKHNlbGYpIC0gc3RhcnQ7CiAgICAgdHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQpAQCAtODYwLDcgKzg2Niw3IEBACiB7CiAgICAgc2l6ZV90IGk7CiAKLSAgICBhc3NlcnQoc2l6ZW9mKHNpemVfdCkgPD0gOCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihzaXplX3QpIDw9IDgpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZihzaXplX3QpOyBpKyspIHsKICAgICAgICAgb3V0W2ldID0gKHVuc2lnbmVkIGNoYXIpKCh2YWx1ZSA+PiAoOCAqIGkpKSAmIDB4ZmYpOwpAQCAtMTA4Niw2ICsxMDkyLDE0IEBACiB9CiAKIHN0YXRpYyBpbnQKK2JhZF9yZWFkbGluZSh2b2lkKQoreworICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInBpY2tsZSBkYXRhIHdhcyB0cnVuY2F0ZWQiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQKIF9VbnBpY2tsZXJfU2tpcENvbnN1bWVkKFVucGlja2xlck9iamVjdCAqc2VsZikKIHsKICAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwpAQCAtMTEzNCw5ICsxMTQ4LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKG4gPT0gUkVBRF9XSE9MRV9MSU5FKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplbXB0eV90dXBsZSA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBkYXRhID0gUHlPYmplY3RfQ2FsbChzZWxmLT5yZWFkbGluZSwgZW1wdHlfdHVwbGUsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoZW1wdHlfdHVwbGUpOworICAgICAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhzZWxmLT5yZWFkbGluZSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCAqbGVuOwpAQCAtMTE3NCw2ICsxMTg2LDM2IEBACiAgICAgcmV0dXJuIHJlYWRfc2l6ZTsKIH0KIAorLyogRG9uJ3QgY2FsbCBpdCBkaXJlY3RseTogdXNlIF9VbnBpY2tsZXJfUmVhZCgpICovCitzdGF0aWMgUHlfc3NpemVfdAorX1VucGlja2xlcl9SZWFkSW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIGNoYXIgKipzLCBQeV9zc2l6ZV90IG4pCit7CisgICAgUHlfc3NpemVfdCBudW1fcmVhZDsKKworICAgICpzID0gTlVMTDsKKyAgICBpZiAoc2VsZi0+bmV4dF9yZWFkX2lkeCA+IFBZX1NTSVpFX1RfTUFYIC0gbikgeworICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQgd291bGQgb3ZlcmZsb3cgKGludmFsaWQgYnl0ZWNvZGUpIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBUaGlzIGNhc2UgaXMgaGFuZGxlZCBieSB0aGUgX1VucGlja2xlcl9SZWFkKCkgbWFjcm8gZm9yIGVmZmljaWVuY3kgKi8KKyAgICBhc3NlcnQoc2VsZi0+bmV4dF9yZWFkX2lkeCArIG4gPiBzZWxmLT5pbnB1dF9sZW4pOworCisgICAgaWYgKCFzZWxmLT5yZWFkKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisKKyAgICBudW1fcmVhZCA9IF9VbnBpY2tsZXJfUmVhZEZyb21GaWxlKHNlbGYsIG4pOworICAgIGlmIChudW1fcmVhZCA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobnVtX3JlYWQgPCBuKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisgICAgKnMgPSBzZWxmLT5pbnB1dF9idWZmZXI7CisgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG47CisgICAgcmV0dXJuIG47Cit9CisKIC8qIFJlYWQgYG5gIGJ5dGVzIGZyb20gdGhlIHVucGlja2xlcidzIGRhdGEgc291cmNlLCBzdG9yaW5nIHRoZSByZXN1bHQgaW4gYCpzYC4KIAogICAgVGhpcyBzaG91bGQgYmUgdXNlZCBmb3IgYWxsIGRhdGEgcmVhZHMsIHJhdGhlciB0aGFuIGFjY2Vzc2luZyB0aGUgdW5waWNrbGVyJ3MKQEAgLTExODcsMzggKzEyMjksMTIgQEAKIAogICAgUmV0dXJucyAtMSAod2l0aCBhbiBleGNlcHRpb24gc2V0KSBvbiBmYWlsdXJlLiBPbiBzdWNjZXNzLCByZXR1cm4gdGhlCiAgICBudW1iZXIgb2YgY2hhcnMgcmVhZC4gKi8KLXN0YXRpYyBQeV9zc2l6ZV90Ci1fVW5waWNrbGVyX1JlYWQoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICoqcywgUHlfc3NpemVfdCBuKQotewotICAgIFB5X3NzaXplX3QgbnVtX3JlYWQ7Ci0KLSAgICAqcyA9IE5VTEw7Ci0gICAgaWYgKHNlbGYtPm5leHRfcmVhZF9pZHggPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKLSAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkIHdvdWxkIG92ZXJmbG93IChpbnZhbGlkIGJ5dGVjb2RlKSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChzZWxmLT5uZXh0X3JlYWRfaWR4ICsgbiA8PSBzZWxmLT5pbnB1dF9sZW4pIHsKLSAgICAgICAgKnMgPSBzZWxmLT5pbnB1dF9idWZmZXIgKyBzZWxmLT5uZXh0X3JlYWRfaWR4OwotICAgICAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ICs9IG47Ci0gICAgICAgIHJldHVybiBuOwotICAgIH0KLSAgICBpZiAoIXNlbGYtPnJlYWQpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0VPRkVycm9yLCAiUmFuIG91dCBvZiBpbnB1dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgbik7Ci0gICAgaWYgKG51bV9yZWFkIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChudW1fcmVhZCA8IG4pIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0VPRkVycm9yLCAiUmFuIG91dCBvZiBpbnB1dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgICpzID0gc2VsZi0+aW5wdXRfYnVmZmVyOwotICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBuOwotICAgIHJldHVybiBuOwotfQorI2RlZmluZSBfVW5waWNrbGVyX1JlYWQoc2VsZiwgcywgbikgXAorICAgICgoKG4pIDw9IChzZWxmKS0+aW5wdXRfbGVuIC0gKHNlbGYpLT5uZXh0X3JlYWRfaWR4KSAgICAgIFwKKyAgICAgPyAoKihzKSA9IChzZWxmKS0+aW5wdXRfYnVmZmVyICsgKHNlbGYpLT5uZXh0X3JlYWRfaWR4LCBcCisgICAgICAgIChzZWxmKS0+bmV4dF9yZWFkX2lkeCArPSAobiksICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAobikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgOiBfVW5waWNrbGVyX1JlYWRJbXBsKHNlbGYsIChzKSwgKG4pKSkKIAogc3RhdGljIFB5X3NzaXplX3QKIF9VbnBpY2tsZXJfQ29weUxpbmUoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICpsaW5lLCBQeV9zc2l6ZV90IGxlbiwKQEAgLTEyMzgsNyArMTI1NCw3IEBACiB9CiAKIC8qIFJlYWQgYSBsaW5lIGZyb20gdGhlIGlucHV0IHN0cmVhbS9idWZmZXIuIElmIHdlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQKLSAgIGJlZm9yZSBoaXR0aW5nIFxuLCByZXR1cm4gdGhlIGRhdGEgd2UgZm91bmQuCisgICBiZWZvcmUgaGl0dGluZyBcbiwgcmFpc2UgYW4gZXJyb3IuCiAKICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBjaGFycyByZWFkLCBvciAtMSBvbiBmYWlsdXJlLiAqLwogc3RhdGljIFB5X3NzaXplX3QKQEAgLTEyNTQsMjAgKzEyNzAsMTYgQEAKICAgICAgICAgICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIGxpbmVfc3RhcnQsIG51bV9yZWFkLCByZXN1bHQpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChzZWxmLT5yZWFkKSB7Ci0gICAgICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgUkVBRF9XSE9MRV9MSU5FKTsKLSAgICAgICAgaWYgKG51bV9yZWFkIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG51bV9yZWFkOwotICAgICAgICByZXR1cm4gX1VucGlja2xlcl9Db3B5TGluZShzZWxmLCBzZWxmLT5pbnB1dF9idWZmZXIsIG51bV9yZWFkLCByZXN1bHQpOwotICAgIH0KKyAgICBpZiAoIXNlbGYtPnJlYWQpCisgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKIAotICAgIC8qIElmIHdlIGdldCBoZXJlLCB3ZSd2ZSBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGlucHV0IHN0cmluZy4gUmV0dXJuIHRoZQotICAgICAgIHJlbWFpbmluZyBzdHJpbmcgYW5kIGxldCB0aGUgY2FsbGVyIGZpZ3VyZSBpdCBvdXQuICovCi0gICAgKnJlc3VsdCA9IHNlbGYtPmlucHV0X2J1ZmZlciArIHNlbGYtPm5leHRfcmVhZF9pZHg7Ci0gICAgbnVtX3JlYWQgPSBpIC0gc2VsZi0+bmV4dF9yZWFkX2lkeDsKLSAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gaTsKLSAgICByZXR1cm4gbnVtX3JlYWQ7CisgICAgbnVtX3JlYWQgPSBfVW5waWNrbGVyX1JlYWRGcm9tRmlsZShzZWxmLCBSRUFEX1dIT0xFX0xJTkUpOworICAgIGlmIChudW1fcmVhZCA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobnVtX3JlYWQgPT0gMCB8fCBzZWxmLT5pbnB1dF9idWZmZXJbbnVtX3JlYWQgLSAxXSAhPSAnXG4nKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG51bV9yZWFkOworICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIHNlbGYtPmlucHV0X2J1ZmZlciwgbnVtX3JlYWQsIHJlc3VsdCk7CiB9CiAKIC8qIFJldHVybnMgLTEgKHdpdGggYW4gZXhjZXB0aW9uIHNldCkgb24gZmFpbHVyZSwgMCBvbiBzdWNjZXNzLiBUaGUgbWVtbyBhcnJheQpAQCAtMjA5NiwzOCArMjEwOCwzNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHJhd191bmljb2RlX2VzY2FwZShQeU9iamVjdCAqb2JqKQogewotICAgIFB5T2JqZWN0ICpyZXByOwogICAgIGNoYXIgKnA7CiAgICAgUHlfc3NpemVfdCBpLCBzaXplOwotICAgIHNpemVfdCBleHBhbmRzaXplOwogICAgIHZvaWQgKmRhdGE7CiAgICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisKICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEob2JqKTsKICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQob2JqKTsKLSAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkKLSAgICAgICAgZXhwYW5kc2l6ZSA9IDEwOwotICAgIGVsc2UKLSAgICAgICAgZXhwYW5kc2l6ZSA9IDY7CiAKLSAgICBpZiAoKHNpemVfdClzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBzaXplKTsKLSAgICBpZiAocmVwciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gcmVwcjsKLSAgICBhc3NlcnQoUHlfUkVGQ05UKHJlcHIpID09IDEpOworICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzaXplKTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCi0gICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwogICAgIGZvciAoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwogICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgLyogLTE6IHN1YnRyYWN0IDEgcHJlYWxsb2NhdGVkIGJ5dGUgKi8KKyAgICAgICAgICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHAsIDEwLTEpOworICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAnVSc7CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweGZdOwpAQCAtMjEzOSw4ICsyMTQ4LDEzIEBACiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9Ci0gICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLworICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMsICdcXCcgYW5kICdcbicgdG8gJ1x1eHh4eCcgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPj0gMjU2IHx8IGNoID09ICdcXCcgfHwgY2ggPT0gJ1xuJykgeworICAgICAgICAgICAgLyogLTE6IHN1YnRyYWN0IDEgcHJlYWxsb2NhdGVkIGJ5dGUgKi8KKyAgICAgICAgICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHAsIDYtMSk7CisgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CkBAIC0yMTUyLDE0ICsyMTY2LDE2IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgfQotICAgIHNpemUgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgc2l6ZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gcmVwcjsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcCk7CisKK2Vycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQKLXdyaXRlX3V0ZjgoUGlja2xlck9iamVjdCAqc2VsZiwgY2hhciAqZGF0YSwgUHlfc3NpemVfdCBzaXplKQord3JpdGVfdXRmOChQaWNrbGVyT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpkYXRhLCBQeV9zc2l6ZV90IHNpemUpCiB7CiAgICAgY2hhciBoZWFkZXJbOV07CiAgICAgUHlfc3NpemVfdCBsZW47CkBAIC0yODU4LDcgKzI4NzQsNyBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOwogCi0gICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgIigpIik7CisgICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgTlVMTCk7CiAgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlbXMpOwpAQCAtMzUzNSwxMSArMzU1MSw5IEBACiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lKSkgewotICAgICAgICAgICAgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKLSAgICAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9leF9fKTsKLSAgICAgICAgICAgICAgICB1c2VfbmV3b2JqX2V4ID0gUHlVbmljb2RlX0NvbXBhcmUoCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9leF9fKSkgPT0gMDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOworICAgICAgICAgICAgdXNlX25ld29ial9leCA9IFB5VW5pY29kZV9Db21wYXJlKAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9leF9fKSkgPT0gMDsKICAgICAgICAgICAgIGlmICghdXNlX25ld29ial9leCkgewogICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX18pOwogICAgICAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ29tcGFyZSgKQEAgLTM1ODMsMTEgKzM1OTcsNTggQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzYXZlKHNlbGYsIGNscywgMCkgPCAwIHx8Ci0gICAgICAgICAgICBzYXZlKHNlbGYsIGFyZ3MsIDApIDwgMCB8fAotICAgICAgICAgICAgc2F2ZShzZWxmLCBrd2FyZ3MsIDApIDwgMCB8fAotICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJm5ld29ial9leF9vcCwgMSkgPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChzZWxmLT5wcm90byA+PSA0KSB7CisgICAgICAgICAgICBpZiAoc2F2ZShzZWxmLCBjbHMsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIHNhdmUoc2VsZiwgYXJncywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgc2F2ZShzZWxmLCBrd2FyZ3MsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIF9QaWNrbGVyX1dyaXRlKHNlbGYsICZuZXdvYmpfZXhfb3AsIDEpIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdhcmdzOworICAgICAgICAgICAgUHlPYmplY3QgKmNsc19uZXc7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld19fKTsKKworICAgICAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KFB5X1NJWkUoYXJncykgKyAyKTsKKyAgICAgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgICAgICBjbHNfbmV3ID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fbmV3X18pOworICAgICAgICAgICAgaWYgKGNsc19uZXcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIGNsc19uZXcpOworICAgICAgICAgICAgUHlfSU5DUkVGKGNscyk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDEsIGNscyk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRShhcmdzKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIGkgKyAyLCBpdGVtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGFibGUgPSBQeU9iamVjdF9DYWxsKHN0LT5wYXJ0aWFsLCBuZXdhcmdzLCBrd2FyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzYXZlKHNlbGYsIGNhbGxhYmxlLCAwKSA8IDAgfHwKKyAgICAgICAgICAgICAgICBzYXZlKHNlbGYsIG5ld2FyZ3MsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIF9QaWNrbGVyX1dyaXRlKHNlbGYsICZyZWR1Y2Vfb3AsIDEpIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAodXNlX25ld29iaikgewpAQCAtMzg3NywxMCArMzkzOCw3IEBACiAgICAgICAgICAgICAvKiBDaGVjayBmb3IgYSBfX3JlZHVjZV9fIG1ldGhvZC4gKi8KICAgICAgICAgICAgIHJlZHVjZV9mdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fcmVkdWNlX18pOwogICAgICAgICAgICAgaWYgKHJlZHVjZV9mdW5jICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZW1wdHlfdHVwbGUgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgICAgICAgICByZWR1Y2VfdmFsdWUgPSBQeU9iamVjdF9DYWxsKHJlZHVjZV9mdW5jLCBlbXB0eV90dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbXB0eV90dXBsZSk7CisgICAgICAgICAgICAgICAgcmVkdWNlX3ZhbHVlID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhyZWR1Y2VfZnVuYyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlBpY2tsaW5nRXJyb3IsCkBAIC00Mzk3LDcgKzQ0NTUsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInbWVtbycgYXR0cmlidXRlIG11c3QgYmUgYW4gUGlja2xlck1lbW9Qcm94eSBvYmplY3QiCisgICAgICAgICAgICAgICAgICAgICAiJ21lbW8nIGF0dHJpYnV0ZSBtdXN0IGJlIGEgUGlja2xlck1lbW9Qcm94eSBvYmplY3QiCiAgICAgICAgICAgICAgICAgICAgICAib3IgZGljdCwgbm90ICUuMjAwcyIsIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC00NDI2LDggKzQ0ODQsNiBAQAogc3RhdGljIGludAogUGlja2xlcl9zZXRfcGVyc2lkKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGUgZGVsZXRpb24gaXMgbm90IHN1cHBvcnRlZCIpOwpAQCAtNDQzOSwxMCArNDQ5NSw4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICB0bXAgPSBzZWxmLT5wZXJzX2Z1bmM7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBzZWxmLT5wZXJzX2Z1bmMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7ICAgICAgLyogc2VsZi0+cGVyc19mdW5jIGNhbiBiZSBOVUxMLCBzbyBiZSBjYXJlZnVsLiAqLworICAgIFB5X1hTRVRSRUYoc2VsZi0+cGVyc19mdW5jLCB2YWx1ZSk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ1MjQsMTMgKzQ1NzgsMTkgQEAKIHN0YXRpYyBQeV9zc2l6ZV90CiBtYXJrZXIoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewotICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeV9zc2l6ZV90IG1hcms7CisKICAgICBpZiAoc2VsZi0+bnVtX21hcmtzIDwgMSkgeworICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAiY291bGQgbm90IGZpbmQgTUFSSyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmV0dXJuIHNlbGYtPm1hcmtzWy0tc2VsZi0+bnVtX21hcmtzXTsKKyAgICBtYXJrID0gc2VsZi0+bWFya3NbLS1zZWxmLT5udW1fbWFya3NdOworICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IHNlbGYtPm51bV9tYXJrcyAhPSAwOworICAgIHNlbGYtPnN0YWNrLT5mZW5jZSA9IHNlbGYtPm51bV9tYXJrcyA/CisgICAgICAgICAgICBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MgLSAxXSA6IDA7CisgICAgcmV0dXJuIG1hcms7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTQ1NDEsMTQgKzQ2MDEsNiBAQAogfQogCiBzdGF0aWMgaW50Ci1iYWRfcmVhZGxpbmUodm9pZCkKLXsKLSAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJwaWNrbGUgZGF0YSB3YXMgdHJ1bmNhdGVkIik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgaW50CiBsb2FkX2ludChVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwpAQCAtNDk5MSw3ICs1MDQzLDcgQEAKICAgICBQeU9iamVjdCAqdHVwbGU7CiAKICAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPCBsZW4pCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAKICAgICB0dXBsZSA9IFBkYXRhX3BvcHR1cGxlKHNlbGYtPnN0YWNrLCBQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIGxlbik7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCkBAIC01MDczLDYgKzUxMjUsMTMgQEAKICAgICBpZiAoKGRpY3QgPSBQeURpY3RfTmV3KCkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAorICAgIGlmICgoaiAtIGkpICUgMiAhPSAwKSB7CisgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJvZGQgbnVtYmVyIG9mIGl0ZW1zIGZvciBESUNUIik7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIGZvciAoayA9IGkgKyAxOyBrIDwgajsgayArPSAyKSB7CiAgICAgICAgIGtleSA9IHNlbGYtPnN0YWNrLT5kYXRhW2sgLSAxXTsKICAgICAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtrXTsKQEAgLTUxNDAsNyArNTE5OSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIGkgPCAxKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogCiAgICAgYXJncyA9IFBkYXRhX3BvcHR1cGxlKHNlbGYtPnN0YWNrLCBpICsgMSk7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTU0NjMsMTIgKzU1MjIsMTUgQEAKICAgICAgKi8KICAgICBpZiAoc2VsZi0+bnVtX21hcmtzID4gMCAmJiBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MgLSAxXSA9PSBsZW4pIHsKICAgICAgICAgc2VsZi0+bnVtX21hcmtzLS07Ci0gICAgfSBlbHNlIGlmIChsZW4gPiAwKSB7CisgICAgICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IHNlbGYtPm51bV9tYXJrcyAhPSAwOworICAgICAgICBzZWxmLT5zdGFjay0+ZmVuY2UgPSBzZWxmLT5udW1fbWFya3MgPworICAgICAgICAgICAgICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcyAtIDFdIDogMDsKKyAgICB9IGVsc2UgaWYgKGxlbiA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOworICAgIGVsc2UgewogICAgICAgICBsZW4tLTsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnN0YWNrLT5kYXRhW2xlbl0pOwogICAgICAgICBQeV9TSVpFKHNlbGYtPnN0YWNrKSA9IGxlbjsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtNTQ5MCwxMCArNTU1MiwxMCBAQAogbG9hZF9kdXAoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpsYXN0OwotICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5X3NzaXplX3QgbGVuID0gUHlfU0laRShzZWxmLT5zdGFjayk7CiAKLSAgICBpZiAoKGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKGxlbiA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIGxhc3QgPSBzZWxmLT5zdGFjay0+ZGF0YVtsZW4gLSAxXTsKICAgICBQREFUQV9BUFBFTkQoc2VsZi0+c3RhY2ssIGxhc3QsIC0xKTsKICAgICByZXR1cm4gMDsKQEAgLTU2NzYsOCArNTczOCw4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAobGVuIDwgMikKICAgICAgICAgcmV0dXJuIGJhZF9yZWFkbGluZSgpOwotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCiAgICAga2V5ID0gUHlMb25nX0Zyb21TdHJpbmcocywgTlVMTCwgMTApOwpAQCAtNTcwNSw4ICs1NzY3LDggQEAKICAgICBpZiAoX1VucGlja2xlcl9SZWFkKHNlbGYsICZzLCAxKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCiAgICAgaWR4ID0gUHlfQ0hBUk1BU0soc1swXSk7CkBAIC01NzI0LDggKzU3ODYsOCBAQAogICAgIGlmIChfVW5waWNrbGVyX1JlYWQoc2VsZiwgJnMsIDQpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICBpZHggPSBjYWxjX2JpbnNpemUocywgNCk7CkBAIC01NzQzLDggKzU4MDUsOCBAQAogewogICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCiAgICAgcmV0dXJuIF9VbnBpY2tsZXJfTWVtb1B1dChzZWxmLCBzZWxmLT5tZW1vX2xlbiwgdmFsdWUpOwpAQCAtNTc1OCw4ICs1ODIwLDggQEAKICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKIAogICAgIGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwotICAgIGlmICh4ID4gbGVuIHx8IHggPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmICh4ID4gbGVuIHx8IHggPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICBpZiAobGVuID09IHgpICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwogCkBAIC01ODA4LDggKzU4NzAsOCBAQAogc3RhdGljIGludAogbG9hZF9hcHBlbmQoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDEgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDEgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICByZXR1cm4gZG9fYXBwZW5kKHNlbGYsIFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMSk7CiB9CiAKQEAgLTU4MzEsOCArNTg5Myw4IEBACiAgICAgaW50IHN0YXR1cyA9IDA7CiAKICAgICBsZW4gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKLSAgICBpZiAoeCA+IGxlbiB8fCB4IDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoeCA+IGxlbiB8fCB4IDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgaWYgKGxlbiA9PSB4KSAgLyogbm90aGluZyB0byBkbyAqLwogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoKGxlbiAtIHgpICUgMiAhPSAwKSB7CkBAIC01ODg1LDggKzU5NDcsOCBAQAogICAgIGlmIChtYXJrIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwotICAgIGlmIChtYXJrID4gbGVuIHx8IG1hcmsgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChtYXJrID4gbGVuIHx8IG1hcmsgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICBpZiAobGVuID09IG1hcmspICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwogCkBAIC01OTQxLDggKzYwMDMsOCBAQAogICAgIC8qIFN0YWNrIGlzIC4uLiBpbnN0YW5jZSwgc3RhdGUuICBXZSB3YW50IHRvIGxlYXZlIGluc3RhbmNlIGF0CiAgICAgICogdGhlIHN0YWNrIHRvcCwgcG9zc2libHkgbXV0YXRlZCB2aWEgaW5zdGFuY2UuX19zZXRzdGF0ZV9fKHN0YXRlKS4KICAgICAgKi8KLSAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPCAyKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMiA8IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAKICAgICBQREFUQV9QT1Aoc2VsZi0+c3RhY2ssIHN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT0gTlVMTCkKQEAgLTYwNzgsNyArNjE0MCw4IEBACiAgICAgICAgIHNlbGYtPm1hcmtzX3NpemUgPSAoUHlfc3NpemVfdClhbGxvYzsKICAgICB9CiAKLSAgICBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MrK10gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKKyAgICBzZWxmLT5zdGFjay0+bWFya19zZXQgPSAxOworICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcysrXSA9IHNlbGYtPnN0YWNrLT5mZW5jZSA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC02MTYxLDYgKzYyMjQsOCBAQAogICAgIGNoYXIgKnMgPSBOVUxMOwogCiAgICAgc2VsZi0+bnVtX21hcmtzID0gMDsKKyAgICBzZWxmLT5zdGFjay0+bWFya19zZXQgPSAwOworICAgIHNlbGYtPnN0YWNrLT5mZW5jZSA9IDA7CiAgICAgc2VsZi0+cHJvdG8gPSAwOwogICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSkKICAgICAgICAgUGRhdGFfY2xlYXIoc2VsZi0+c3RhY2ssIDApOwpAQCAtNjE3Myw4ICs2MjM4LDEzIEBACiAgICAgY2FzZSBvcGNvZGU6IGlmIChsb2FkX2Z1bmMoc2VsZiwgKGFyZykpIDwgMCkgYnJlYWs7IGNvbnRpbnVlOwogCiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgaWYgKF9VbnBpY2tsZXJfUmVhZChzZWxmLCAmcywgMSkgPCAwKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChfVW5waWNrbGVyX1JlYWQoc2VsZiwgJnMsIDEpIDwgMCkgeworICAgICAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoc3QtPlVucGlja2xpbmdFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfRU9GRXJyb3IsICJSYW4gb3V0IG9mIGlucHV0Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAoKGVudW0gb3Bjb2RlKXNbMF0pIHsKICAgICAgICAgT1AoTk9ORSwgbG9hZF9ub25lKQpAQCAtNjI0NiwxNSArNjMxNiwxOSBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChzWzBdID09ICdcMCcpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX0VPRkVycm9yKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlVucGlja2xpbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbG9hZCBrZXksICclYycuIiwgc1swXSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpICpzOworICAgICAgICAgICAgICAgIGlmICgweDIwIDw9IGMgJiYgYyA8PSAweDdlICYmIGMgIT0gJ1wnJyAmJiBjICE9ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHN0LT5VbnBpY2tsaW5nRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsb2FkIGtleSwgJyVjJy4iLCBjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+VW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbG9hZCBrZXksICdcXHglMDJ4Jy4iLCBjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgIC8qIGFuZCB3ZSBhcmUgZG9uZSEgKi8KQEAgLTY4NjUsOCArNjkzOSw2IEBACiBzdGF0aWMgaW50CiBVbnBpY2tsZXJfc2V0X3BlcnNsb2FkKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSBkZWxldGlvbiBpcyBub3Qgc3VwcG9ydGVkIik7CkBAIC02ODc5LDEwICs2OTUxLDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHRtcCA9IHNlbGYtPnBlcnNfZnVuYzsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIHNlbGYtPnBlcnNfZnVuYyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsgICAgICAvKiBzZWxmLT5wZXJzX2Z1bmMgY2FuIGJlIE5VTEwsIHNvIGJlIGNhcmVmdWwuICovCisgICAgUHlfWFNFVFJFRihzZWxmLT5wZXJzX2Z1bmMsIHZhbHVlKTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwppbmRleCBjMDI0MGUyLi41MDA3YTM5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYworKysgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwpAQCAtMjEsOCArMjEsNyBAQAogI2luY2x1ZGUgPGRpcmVudC5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChTWVNfZ2V0ZGVudHM2NCkKLS8qIEFuZHJvaWQgZG9lc24ndCBleHBvc2Ugc3lzY2FsbHMsIGFkZCB0aGUgZGVmaW5pdGlvbiBtYW51YWxseS4gKi8KKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiBfX0FORFJPSURfQVBJX18gPCAyMSAmJiAhZGVmaW5lZChTWVNfZ2V0ZGVudHM2NCkKICMgaW5jbHVkZSA8c3lzL2xpbnV4LXN5c2NhbGxzLmg+CiAjIGRlZmluZSBTWVNfZ2V0ZGVudHM2NCAgX19OUl9nZXRkZW50czY0CiAjZW5kaWYKQEAgLTcyLDcgKzcxLDcgQEAKIAogLyogQ29udmVydCBBU0NJSSB0byBhIHBvc2l0aXZlIGludCwgbm8gbGliYyBjYWxsLiBubyBvdmVyZmxvdy4gLTEgb24gZXJyb3IuICovCiBzdGF0aWMgaW50Ci1fcG9zX2ludF9mcm9tX2FzY2lpKGNoYXIgKm5hbWUpCitfcG9zX2ludF9mcm9tX2FzY2lpKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgaW50IG51bSA9IDA7CiAgICAgd2hpbGUgKCpuYW1lID49ICcwJyAmJiAqbmFtZSA8PSAnOScpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jIGIvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMKaW5kZXggOTVhZDRhNC4uNjM3NTlkNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMKQEAgLTY4LDkgKzY4LDggQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgPHRpbWUuaD4gICAgICAgICAgICAgICAvKiBmb3Igc2VlZGluZyB0byBjdXJyZW50IHRpbWUgKi8KLQotI2lmbmRlZiBQWV9VSU5UMzJfVAotIyAgZXJyb3IgIkZhaWxlZCB0byBmaW5kIGFuIGV4YWN0LXdpZHRoIDMyLWJpdCBpbnRlZ2VyIHR5cGUiCisjaWZkZWYgSEFWRV9QUk9DRVNTX0gKKyMgIGluY2x1ZGUgPHByb2Nlc3MuaD4gICAgICAgICAgLyogbmVlZGVkIGZvciBnZXRwaWQoKSAqLwogI2VuZGlmCiAKIC8qIFBlcmlvZCBwYXJhbWV0ZXJzIC0tIFRoZXNlIGFyZSBhbGwgbWFnaWMuICBEb24ndCBjaGFuZ2UuICovCkBAIC04Myw3ICs4Miw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIGludCBpbmRleDsKLSAgICBQWV9VSU5UMzJfVCBzdGF0ZVtOXTsKKyAgICB1aW50MzJfdCBzdGF0ZVtOXTsKIH0gUmFuZG9tT2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFJhbmRvbV9UeXBlOwpAQCAtOTUsMTMgKzk0LDEzIEBACiAKIAogLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweGZmZmZmZmZmXS1pbnRlcnZhbCAqLwotc3RhdGljIFBZX1VJTlQzMl9UCitzdGF0aWMgdWludDMyX3QKIGdlbnJhbmRfaW50MzIoUmFuZG9tT2JqZWN0ICpzZWxmKQogewotICAgIFBZX1VJTlQzMl9UIHk7Ci0gICAgc3RhdGljIFBZX1VJTlQzMl9UIG1hZzAxWzJdPXsweDBVLCBNQVRSSVhfQX07CisgICAgdWludDMyX3QgeTsKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgbWFnMDFbMl0gPSB7MHgwVSwgTUFUUklYX0F9OwogICAgIC8qIG1hZzAxW3hdID0geCAqIE1BVFJJWF9BICBmb3IgeD0wLDEgKi8KLSAgICBQWV9VSU5UMzJfVCAqbXQ7CisgICAgdWludDMyX3QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKICAgICBpZiAoc2VsZi0+aW5kZXggPj0gTikgeyAvKiBnZW5lcmF0ZSBOIHdvcmRzIGF0IG9uZSB0aW1lICovCkBAIC0xMzYsMjEgKzEzNSwyMSBAQAogICogb3B0aW1pemUgdGhlIGRpdmlzaW9uIGF3YXkgYXQgY29tcGlsZS10aW1lLiAgNjcxMDg4NjQgaXMgMioqMjYuICBJbgogICogZWZmZWN0LCBhIGNvbnRhaW5zIDI3IHJhbmRvbSBiaXRzIHNoaWZ0ZWQgbGVmdCAyNiwgYW5kIGIgZmlsbHMgaW4gdGhlCiAgKiBsb3dlciAyNiBiaXRzIG9mIHRoZSA1My1iaXQgbnVtZXJhdG9yLgotICogVGhlIG9yZ2luYWwgY29kZSBjcmVkaXRlZCBJc2FrdSBXYWRhIGZvciB0aGlzIGFsZ29yaXRobSwgMjAwMi8wMS8wOS4KKyAqIFRoZSBvcmlnaW5hbCBjb2RlIGNyZWRpdGVkIElzYWt1IFdhZGEgZm9yIHRoaXMgYWxnb3JpdGhtLCAyMDAyLzAxLzA5LgogICovCiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZG9tX3JhbmRvbShSYW5kb21PYmplY3QgKnNlbGYpCiB7Ci0gICAgUFlfVUlOVDMyX1QgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CisgICAgdWludDMyX3QgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoYSo2NzEwODg2NC4wK2IpKigxLjAvOTAwNzE5OTI1NDc0MDk5Mi4wKSk7CiB9CiAKIC8qIGluaXRpYWxpemVzIG10W05dIHdpdGggYSBzZWVkICovCiBzdGF0aWMgdm9pZAotaW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgcykKK2luaXRfZ2VucmFuZChSYW5kb21PYmplY3QgKnNlbGYsIHVpbnQzMl90IHMpCiB7CiAgICAgaW50IG10aTsKLSAgICBQWV9VSU5UMzJfVCAqbXQ7CisgICAgdWludDMyX3QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKICAgICBtdFswXT0gczsKQEAgLTE2OSwxMSArMTY4LDExIEBACiAvKiBpbml0aWFsaXplIGJ5IGFuIGFycmF5IHdpdGggYXJyYXktbGVuZ3RoICovCiAvKiBpbml0X2tleSBpcyB0aGUgYXJyYXkgZm9yIGluaXRpYWxpemluZyBrZXlzICovCiAvKiBrZXlfbGVuZ3RoIGlzIGl0cyBsZW5ndGggKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1pbml0X2J5X2FycmF5KFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCitzdGF0aWMgdm9pZAoraW5pdF9ieV9hcnJheShSYW5kb21PYmplY3QgKnNlbGYsIHVpbnQzMl90IGluaXRfa2V5W10sIHNpemVfdCBrZXlfbGVuZ3RoKQogewogICAgIHNpemVfdCBpLCBqLCBrOyAgICAgICAvKiB3YXMgc2lnbmVkIGluIHRoZSBvcmlnaW5hbCBjb2RlLiBSREggMTIvMTYvMjAwMiAqLwotICAgIFBZX1VJTlQzMl9UICptdDsKKyAgICB1aW50MzJfdCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwogICAgIGluaXRfZ2VucmFuZChzZWxmLCAxOTY1MDIxOFUpOwpAQCAtMTgxLDIxICsxODAsMTkgQEAKICAgICBrID0gKE4+a2V5X2xlbmd0aCA/IE4gOiBrZXlfbGVuZ3RoKTsKICAgICBmb3IgKDsgazsgay0tKSB7CiAgICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjVVKSkKLSAgICAgICAgICAgICAgICAgKyBpbml0X2tleVtqXSArIChQWV9VSU5UMzJfVClqOyAvKiBub24gbGluZWFyICovCisgICAgICAgICAgICAgICAgICsgaW5pdF9rZXlbal0gKyAodWludDMyX3QpajsgLyogbm9uIGxpbmVhciAqLwogICAgICAgICBpKys7IGorKzsKICAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KICAgICAgICAgaWYgKGo+PWtleV9sZW5ndGgpIGo9MDsKICAgICB9CiAgICAgZm9yIChrPU4tMTsgazsgay0tKSB7CiAgICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE1NjYwODM5NDFVKSkKLSAgICAgICAgICAgICAgICAgLSAoUFlfVUlOVDMyX1QpaTsgLyogbm9uIGxpbmVhciAqLworICAgICAgICAgICAgICAgICAtICh1aW50MzJfdClpOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KICAgICB9CiAKICAgICBtdFswXSA9IDB4ODAwMDAwMDBVOyAvKiBNU0IgaXMgMTsgYXNzdXJpbmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqLwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAogLyoKQEAgLTIwMywxMiArMjAwLDQzIEBACiAgKiBUd2lzdGVyIGRvd25sb2FkLgogICovCiAKK3N0YXRpYyBpbnQKK3JhbmRvbV9zZWVkX3VyYW5kb20oUmFuZG9tT2JqZWN0ICpzZWxmKQoreworICAgIFBZX1VJTlQzMl9UIGtleVtOXTsKKworICAgIGlmIChfUHlPU19VUmFuZG9tTm9uYmxvY2soa2V5LCBzaXplb2Yoa2V5KSkgPCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIFB5X0FSUkFZX0xFTkdUSChrZXkpKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3JhbmRvbV9zZWVkX3RpbWVfcGlkKFJhbmRvbU9iamVjdCAqc2VsZikKK3sKKyAgICBfUHlUaW1lX3Qgbm93OworICAgIHVpbnQzMl90IGtleVs1XTsKKworICAgIG5vdyA9IF9QeVRpbWVfR2V0U3lzdGVtQ2xvY2soKTsKKyAgICBrZXlbMF0gPSAoUFlfVUlOVDMyX1QpKG5vdyAmIDB4ZmZmZmZmZmZVKTsKKyAgICBrZXlbMV0gPSAoUFlfVUlOVDMyX1QpKG5vdyA+PiAzMik7CisKKyAgICBrZXlbMl0gPSAoUFlfVUlOVDMyX1QpZ2V0cGlkKCk7CisKKyAgICBub3cgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAga2V5WzNdID0gKFBZX1VJTlQzMl9UKShub3cgJiAweGZmZmZmZmZmVSk7CisgICAga2V5WzRdID0gKFBZX1VJTlQzMl9UKShub3cgPj4gMzIpOworCisgICAgaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIFB5X0FSUkFZX0xFTkdUSChrZXkpKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHJhbmRvbV9zZWVkKFJhbmRvbU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7ICAgICAgICAgICAgLyogZ3VpbHR5IHVudGlsIHByb3ZlZCBpbm5vY2VudCAqLwogICAgIFB5T2JqZWN0ICpuID0gTlVMTDsKLSAgICBQWV9VSU5UMzJfVCAqa2V5ID0gTlVMTDsKKyAgICB1aW50MzJfdCAqa2V5ID0gTlVMTDsKICAgICBzaXplX3QgYml0cywga2V5dXNlZDsKICAgICBpbnQgcmVzOwogICAgIFB5T2JqZWN0ICphcmcgPSBOVUxMOwpAQCAtMjE2LDE0ICsyNDQsMTcgQEAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZWVkIiwgMCwgMSwgJmFyZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGFyZyA9PSBOVUxMIHx8IGFyZyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIHRpbWVfdCBub3c7CisgICAgIGlmIChhcmcgPT0gTlVMTCB8fCBhcmcgPT0gUHlfTm9uZSkgeworICAgICAgICBpZiAocmFuZG9tX3NlZWRfdXJhbmRvbShzZWxmKSA+PSAwKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgIHRpbWUoJm5vdyk7Ci0gICAgICAgIGluaXRfZ2VucmFuZChzZWxmLCAoUFlfVUlOVDMyX1Qpbm93KTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgICAgIC8qIFJlYWRpbmcgc3lzdGVtIGVudHJvcHkgZmFpbGVkLCBmYWxsIGJhY2sgb24gdGhlIHdvcnN0IGVudHJvcHk6CisgICAgICAgICAgICAgICB1c2UgdGhlIGN1cnJlbnQgdGltZSBhbmQgcHJvY2VzcyBpZGVudGlmaWVyLiAqLworICAgICAgICAgICAgcmFuZG9tX3NlZWRfdGltZV9waWQoc2VsZik7CisgICAgICAgIH0KKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQorCiAgICAgLyogVGhpcyBhbGdvcml0aG0gcmVsaWVzIG9uIHRoZSBudW1iZXIgYmVpbmcgdW5zaWduZWQuCiAgICAgICogU286IGlmIHRoZSBhcmcgaXMgYSBQeUxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWUuCiAgICAgICogT3RoZXJ3aXNlIHVzZSBpdHMgaGFzaCB2YWx1ZSwgY2FzdCB0byB1bnNpZ25lZC4KQEAgLTI0OCw3ICsyNzksNyBAQAogICAgIGtleXVzZWQgPSBiaXRzID09IDAgPyAxIDogKGJpdHMgLSAxKSAvIDMyICsgMTsKIAogICAgIC8qIENvbnZlcnQgc2VlZCB0byBieXRlIHNlcXVlbmNlLiAqLwotICAgIGtleSA9IChQWV9VSU5UMzJfVCAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKKyAgICBrZXkgPSAodWludDMyX3QgKilQeU1lbV9NYWxsb2MoKHNpemVfdCk0ICoga2V5dXNlZCk7CiAgICAgaWYgKGtleSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gRG9uZTsKQEAgLTI2NywxMyArMjk4LDE3IEBACiAgICAgICAgIHNpemVfdCBpLCBqOwogICAgICAgICAvKiBSZXZlcnNlIGFuIGFycmF5LiAqLwogICAgICAgICBmb3IgKGkgPSAwLCBqID0ga2V5dXNlZCAtIDE7IGkgPCBqOyBpKyssIGotLSkgewotICAgICAgICAgICAgUFlfVUlOVDMyX1QgdG1wID0ga2V5W2ldOworICAgICAgICAgICAgdWludDMyX3QgdG1wID0ga2V5W2ldOwogICAgICAgICAgICAga2V5W2ldID0ga2V5W2pdOwogICAgICAgICAgICAga2V5W2pdID0gdG1wOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgcmVzdWx0ID0gaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIGtleXVzZWQpOworICAgIGluaXRfYnlfYXJyYXkoc2VsZiwga2V5LCBrZXl1c2VkKTsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXN1bHQgPSBQeV9Ob25lOworCiBEb25lOgogICAgIFB5X1hERUNSRUYobik7CiAgICAgUHlNZW1fRnJlZShrZXkpOwpAQCAtMzI5LDcgKzM2NCw3IEBACiAgICAgICAgIGVsZW1lbnQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwogICAgICAgICBpZiAoZWxlbWVudCA9PSAodW5zaWduZWQgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHNlbGYtPnN0YXRlW2ldID0gKFBZX1VJTlQzMl9UKWVsZW1lbnQ7CisgICAgICAgIHNlbGYtPnN0YXRlW2ldID0gKHVpbnQzMl90KWVsZW1lbnQ7CiAgICAgfQogCiAgICAgaW5kZXggPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpKTsKQEAgLTM0OSw4ICszODQsOCBAQAogcmFuZG9tX2dldHJhbmRiaXRzKFJhbmRvbU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IGssIGksIHdvcmRzOwotICAgIFBZX1VJTlQzMl9UIHI7Ci0gICAgUFlfVUlOVDMyX1QgKndvcmRhcnJheTsKKyAgICB1aW50MzJfdCByOworICAgIHVpbnQzMl90ICp3b3JkYXJyYXk7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRyYW5kYml0cyIsICZrKSkKQEAgLTM2Niw3ICs0MDEsNyBAQAogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZ2VucmFuZF9pbnQzMihzZWxmKSA+PiAoMzIgLSBrKSk7CiAKICAgICB3b3JkcyA9IChrIC0gMSkgLyAzMiArIDE7Ci0gICAgd29yZGFycmF5ID0gKFBZX1VJTlQzMl9UICopUHlNZW1fTWFsbG9jKHdvcmRzICogNCk7CisgICAgd29yZGFycmF5ID0gKHVpbnQzMl90ICopUHlNZW1fTWFsbG9jKHdvcmRzICogNCk7CiAgICAgaWYgKHdvcmRhcnJheSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2Nwcm94eS5jIGIvTW9kdWxlcy9fc2Nwcm94eS5jCmluZGV4IDY2YjZlMzQuLjFjZTRiNzcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NjcHJveHkuYworKysgYi9Nb2R1bGVzL19zY3Byb3h5LmMKQEAgLTcxLDE2ICs3MSwxMiBAQAogICAgIHJlc3VsdCA9IFB5RGljdF9OZXcoKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoJmtTQ1Byb3BOZXRQcm94aWVzRXhjbHVkZVNpbXBsZUhvc3RuYW1lcyAhPSBOVUxMKSB7Ci0gICAgICAgIGFOdW0gPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3QsCi0gICAgICAgICAgICBrU0NQcm9wTmV0UHJveGllc0V4Y2x1ZGVTaW1wbGVIb3N0bmFtZXMpOwotICAgICAgICBpZiAoYU51bSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdiA9IFB5Qm9vbF9Gcm9tTG9uZyhjZm51bV90b19pbnQzMihhTnVtKSk7Ci0gICAgICAgIH0KLSAgICB9ICBlbHNlIHsKKyAgICBhTnVtID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJveHlEaWN0LAorICAgICAgICBrU0NQcm9wTmV0UHJveGllc0V4Y2x1ZGVTaW1wbGVIb3N0bmFtZXMpOworICAgIGlmIChhTnVtID09IE5VTEwpIHsKICAgICAgICAgdiA9IFB5Qm9vbF9Gcm9tTG9uZygwKTsKKyAgICB9IGVsc2UgeworICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKGNmbnVtX3RvX2ludDMyKGFOdW0pKTsKICAgICB9CiAKICAgICBpZiAodiA9PSBOVUxMKSBnb3RvIGVycm9yOwpAQCAtMTMwLDcgKzEyNiw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXNldF9wcm94eShQeU9iamVjdCogcHJveGllcywgY2hhciogcHJvdG8sIENGRGljdGlvbmFyeVJlZiBwcm94eURpY3QsCitzZXRfcHJveHkoUHlPYmplY3QqIHByb3hpZXMsIGNvbnN0IGNoYXIqIHByb3RvLCBDRkRpY3Rpb25hcnlSZWYgcHJveHlEaWN0LAogICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGVuYWJsZWRLZXksCiAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgaG9zdEtleSwgQ0ZTdHJpbmdSZWYgcG9ydEtleSkKIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvUkVBRE1FLnR4dCBiL01vZHVsZXMvX3NoYTMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzRiMWQxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9SRUFETUUudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0tlY2NhayBDb2RlIFBhY2thZ2UKKz09PT09PT09PT09PT09PT09PT0KKworVGhlIGZpbGVzIGluIGtjcCBhcmUgdGFrZW4gZnJvbSB0aGUgS2VjY2FrIENvZGUgUGFja2FnZS4gVGhleSBoYXZlIGJlZW4KK3NsaWdodGx5IHRvIGJlIEM4OSBjb21wYXRpYmxlLiBUaGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGhlYWRlciBmaWxlCitLZWNjYWtQLTE2MDAtU25QLmggaGEgYmVlbiByZW5hbWVkIHRvIEtlY2Nha1AtMTYwMC1TblAtb3B0MzIuaCBvcgorS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oLgorCitUaGUgNjRiaXQgZmlsZXMgd2VyZSBnZW5lcmF0ZWQgd2l0aCBnZW5lcmljNjRsYy9saWJrZWNjYWsuYS5wYWNrIHRhcmdldCwgdGhlCiszMmJpdCBmaWxlcyB3aXRoIGdlbmVyaWMzMmxjL2xpYmtlY2Nhay5hLnBhY2suCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvY2xlYW51cC5weSBiL01vZHVsZXMvX3NoYTMvY2xlYW51cC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xN2M1NmIzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9jbGVhbnVwLnB5CkBAIC0wLDAgKzEsNTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgICBDaHJpc3RpYW4gSGVpbWVzIChjaHJpc3RpYW5AcHl0aG9uLm9yZykKKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorIworIyBjbGVhbnVwIEtlY2NhayBzb3VyY2VzCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKK0NQUDEgPSByZS5jb21waWxlKCJeLy8oLiopIikKK0NQUDIgPSByZS5jb21waWxlKCJcIC8vKC4qKSIpCisKK1NUQVRJQ1MgPSAoInZvaWQgIiwgImludCAiLCAiSGFzaFJldHVybiAiLAorICAgICAgICAgICAiY29uc3QgVUlOVDY0ICIsICJVSU5UMTYgIiwgIiAgICBpbnQgcHJlZml4IyMiKQorCitIRVJFID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCitLRUNDQUsgPSBvcy5wYXRoLmpvaW4oSEVSRSwgImtjcCIpCisKK2RlZiBnZXRmaWxlcygpOgorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoS0VDQ0FLKToKKyAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihLRUNDQUssIG5hbWUpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAgeWllbGQgbmFtZQorCitkZWYgY2xlYW51cChmKToKKyAgICBidWYgPSBbXQorICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICMgbWFyayBhbGwgZnVuY3Rpb25zIGFuZCBnbG9iYWwgZGF0YSBhcyBzdGF0aWMKKyAgICAgICAgI2lmIGxpbmUuc3RhcnRzd2l0aChTVEFUSUNTKToKKyAgICAgICAgIyAgICBidWYuYXBwZW5kKCJzdGF0aWMgIiArIGxpbmUpCisgICAgICAgICMgICAgY29udGludWUKKyAgICAgICAgIyByZW1vdmUgVUlOVDY0IHR5cGVkZWYsIHdlIGhhdmUgb3VyIG93bgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoInR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCIpOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgiLyogJXMgKi9cbiIgJSBsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIyByZW1vdmUgI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIKKyAgICAgICAgaWYgImJyZ19lbmRpYW4uaCIgaW4gbGluZToKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIi8qICVzICovXG4iICUgbGluZS5zdHJpcCgpKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyB0cmFuc2Zvcm0gQysrIGNvbW1lbnRzIGludG8gQU5TSSBDIGNvbW1lbnRzCisgICAgICAgIGxpbmUgPSBDUFAxLnN1YihyIi8qXDEgKi9cbiIsIGxpbmUpCisgICAgICAgIGxpbmUgPSBDUFAyLnN1YihyIiAvKlwxICovXG4iLCBsaW5lKQorICAgICAgICBidWYuYXBwZW5kKGxpbmUpCisgICAgcmV0dXJuICIiLmpvaW4oYnVmKQorCitmb3IgbmFtZSBpbiBnZXRmaWxlcygpOgorICAgIHdpdGggb3BlbihuYW1lKSBhcyBmOgorICAgICAgICByZXMgPSBjbGVhbnVwKGYpCisgICAgd2l0aCBvcGVuKG5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgZi53cml0ZShyZXMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2NsaW5pYy9zaGEzbW9kdWxlLmMuaCBiL01vZHVsZXMvX3NoYTMvY2xpbmljL3NoYTNtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ODhlN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2NsaW5pYy9zaGEzbW9kdWxlLmMuaApAQCAtMCwwICsxLDE1NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB5X3NoYTNfbmV3X19kb2NfXywKKyJzaGEzXzIyNChzdHJpbmc9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NoYTNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9zaGEzX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTNfMjI0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZGF0YSA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHB5X3NoYTNfbmV3X2ltcGwodHlwZSwgZGF0YSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2NvcHlfX2RvY19fLAorImNvcHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4iKTsKKworI2RlZmluZSBfU0hBM19TSEEzXzIyNF9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X2NvcHksIE1FVEhfTk9BUkdTLCBfc2hhM19zaGEzXzIyNF9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5X2ltcGwoU0hBM29iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zaGEzX3NoYTNfMjI0X2NvcHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBM18yMjRfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfZGlnZXN0LCBNRVRIX05PQVJHUywgX3NoYTNfc2hhM18yMjRfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2RpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsIF9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc2hhM19zaGEzXzIyNF91cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X3VwZGF0ZSwgTUVUSF9PLCBfc2hhM19zaGEzXzIyNF91cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYWtlXzEyOF9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLywgbGVuZ3RoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBS0VfMTI4X0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYWtlXzEyOF9kaWdlc3QsIE1FVEhfRkFTVENBTEwsIF9zaGEzX3NoYWtlXzEyOF9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiazpkaWdlc3QiLCBfa2V5d29yZHMsIDB9OworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsZW5ndGgpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9pbXBsKHNlbGYsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLywgbGVuZ3RoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQUtFXzEyOF9IRVhESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0LCBNRVRIX0ZBU1RDQUxMLCBfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Imxlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ims6aGV4ZGlnZXN0IiwgX2tleXdvcmRzLCAwfTsKKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbGVuZ3RoKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfaW1wbChzZWxmLCBsZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTg4OGJlYWI0NTEzNmE1NiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA5ZmI0MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guYwpAQCAtMCwwICsxLDgyIEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiS2VjY2FrSGFzaC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hJbml0aWFsaXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCB1bnNpZ25lZCBpbnQgaGFzaGJpdGxlbiwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXgpCit7CisgICAgSGFzaFJldHVybiByZXN1bHQ7CisKKyAgICBpZiAoZGVsaW1pdGVkU3VmZml4ID09IDApCisgICAgICAgIHJldHVybiBGQUlMOworICAgIHJlc3VsdCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplKCZpbnN0YW5jZS0+c3BvbmdlLCByYXRlLCBjYXBhY2l0eSk7CisgICAgaWYgKHJlc3VsdCAhPSBTVUNDRVNTKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGluc3RhbmNlLT5maXhlZE91dHB1dExlbmd0aCA9IGhhc2hiaXRsZW47CisgICAgaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA9IGRlbGltaXRlZFN1ZmZpeDsKKyAgICByZXR1cm4gU1VDQ0VTUzsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoVXBkYXRlKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCBjb25zdCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKQoreworICAgIGlmICgoZGF0YWJpdGxlbiAlIDgpID09IDApCisgICAgICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiKCZpbnN0YW5jZS0+c3BvbmdlLCBkYXRhLCBkYXRhYml0bGVuLzgpOworICAgIGVsc2UgeworICAgICAgICBIYXNoUmV0dXJuIHJldCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7CisgICAgICAgIGlmIChyZXQgPT0gU1VDQ0VTUykgeworICAgICAgICAgICAgLyogVGhlIGxhc3QgcGFydGlhbCBieXRlIGlzIGFzc3VtZWQgdG8gYmUgYWxpZ25lZCBvbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyAqLworCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxhc3RCeXRlID0gZGF0YVtkYXRhYml0bGVuLzhdOworICAgICAgICAgICAgLyogQ29uY2F0ZW5hdGUgdGhlIGxhc3QgZmV3IGJpdHMgcHJvdmlkZWQgaGVyZSB3aXRoIHRob3NlIG9mIHRoZSBzdWZmaXggKi8KKworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgZGVsaW1pdGVkTGFzdEJ5dGVzID0gKHVuc2lnbmVkIHNob3J0KSgodW5zaWduZWQgc2hvcnQpbGFzdEJ5dGUgfCAoKHVuc2lnbmVkIHNob3J0KWluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPDwgKGRhdGFiaXRsZW4gJSA4KSkpOworICAgICAgICAgICAgaWYgKChkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGMDApID09IDB4MDAwMCkgeworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPSBkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBvbmVCeXRlWzFdOworICAgICAgICAgICAgICAgIG9uZUJ5dGVbMF0gPSBkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGOworICAgICAgICAgICAgICAgIHJldCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIG9uZUJ5dGUsIDEpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPSAoZGVsaW1pdGVkTGFzdEJ5dGVzID4+IDgpICYgMHhGRjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoRmluYWwoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaW5zdGFuY2UsIEJpdFNlcXVlbmNlICpoYXNodmFsKQoreworICAgIEhhc2hSZXR1cm4gcmV0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCZpbnN0YW5jZS0+c3BvbmdlLCBpbnN0YW5jZS0+ZGVsaW1pdGVkU3VmZml4KTsKKyAgICBpZiAocmV0ID09IFNVQ0NFU1MpCisgICAgICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgmaW5zdGFuY2UtPnNwb25nZSwgaGFzaHZhbCwgaW5zdGFuY2UtPmZpeGVkT3V0cHV0TGVuZ3RoLzgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHJldDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoU3F1ZWV6ZShLZWNjYWtfSGFzaEluc3RhbmNlICppbnN0YW5jZSwgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbikKK3sKKyAgICBpZiAoKGRhdGFiaXRsZW4gJSA4KSAhPSAwKQorICAgICAgICByZXR1cm4gRkFJTDsKKyAgICByZXR1cm4gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZVNxdWVlemUoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJkM2RjNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guaApAQCAtMCwwICsxLDExNCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrSGFzaEludGVyZmFjZV9oXworI2RlZmluZSBfS2VjY2FrSGFzaEludGVyZmFjZV9oXworCisjaWZuZGVmIEtlY2Nha1AxNjAwX2V4Y2x1ZGVkCisKKyNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIEJpdFNlcXVlbmNlOwordHlwZWRlZiBzaXplX3QgRGF0YUxlbmd0aDsKK3R5cGVkZWYgZW51bSB7IFNVQ0NFU1MgPSAwLCBGQUlMID0gMSwgQkFEX0hBU0hMRU4gPSAyIH0gSGFzaFJldHVybjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbnN0YW5jZSBzcG9uZ2U7CisgICAgdW5zaWduZWQgaW50IGZpeGVkT3V0cHV0TGVuZ3RoOworICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkU3VmZml4OworfSBLZWNjYWtfSGFzaEluc3RhbmNlOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBpbml0aWFsaXplIHRoZSBLZWNjYWtbciwgY10gc3BvbmdlIGZ1bmN0aW9uIGluc3RhbmNlIHVzZWQgaW4gc2VxdWVudGlhbCBoYXNoaW5nIG1vZGUuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSB0byBiZSBpbml0aWFsaXplZC4KKyAgKiBAcGFyYW0gIHJhdGUgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgcmF0ZSByLgorICAqIEBwYXJhbSAgY2FwYWNpdHkgICAgVGhlIHZhbHVlIG9mIHRoZSBjYXBhY2l0eSBjLgorICAqIEBwYXJhbSAgaGFzaGJpdGxlbiAgVGhlIGRlc2lyZWQgbnVtYmVyIG9mIG91dHB1dCBiaXRzLAorICAqICAgICAgICAgICAgICAgICAgICAgb3IgMCBmb3IgYW4gYXJiaXRyYXJpbHktbG9uZyBvdXRwdXQuCisgICogQHBhcmFtICBkZWxpbWl0ZWRTdWZmaXggQml0cyB0aGF0IHdpbGwgYmUgYXV0b21hdGljYWxseSBhcHBlbmRlZCB0byB0aGUgZW5kCisgICogICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGlucHV0IG1lc3NhZ2UsIGFzIGluIGRvbWFpbiBzZXBhcmF0aW9uLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBieXRlIGNvbnRhaW5pbmcgZnJvbSAwIHRvIDcgYml0cworICAqICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZCBsaWtlIHRoZSBAYSBkZWxpbWl0ZWREYXRhIHBhcmFtZXRlciBvZgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBLZWNjYWtfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKSBmdW5jdGlvbi4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjPTE2MDAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIGluIHRoaXMgaW1wbGVtZW50YXRpb24uCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaEluaXRpYWxpemUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaGFzaEluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCB1bnNpZ25lZCBpbnQgaGFzaGJpdGxlbiwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXgpOworCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQUtFMTI4IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEFLRTEyOChoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMzQ0LCAgMjU2LCAgIDAsIDB4MUYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBS0UyNTYgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMjU2KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsIDEwODgsICA1MTIsICAgMCwgMHgxRikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTIyNCBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18yMjQoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgMTE1MiwgIDQ0OCwgMjI0LCAweDA2KQorCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQTMtMjU2IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzI1NihoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMDg4LCAgNTEyLCAyNTYsIDB4MDYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBMy0zODQgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMzg0KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsICA4MzIsICA3NjgsIDM4NCwgMHgwNikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTUxMiBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM181MTIoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgIDU3NiwgMTAyNCwgNTEyLCAweDA2KQorCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgdG8gYmUgYWJzb3JiZWQuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IGRhdGEuCisgICogICAgICAgICAgICAgICAgICAgICBXaGVuIEBhIGRhdGFiaXRMZW4gaXMgbm90IGEgbXVsdGlwbGUgb2YgOCwgdGhlIGxhc3QgYml0cyBvZiBkYXRhIG11c3QgYmUKKyAgKiAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSBsYXN0IGJ5dGUgKGxpdHRsZS1lbmRpYW4gY29udmVudGlvbikuCisgICogQHBhcmFtICBkYXRhYml0TGVuICBUaGUgbnVtYmVyIG9mIGlucHV0IGJpdHMgcHJvdmlkZWQgaW4gdGhlIGlucHV0IGRhdGEuCisgICogQHByZSAgICBJbiB0aGUgcHJldmlvdXMgY2FsbCB0byBLZWNjYWtfSGFzaFVwZGF0ZSgpLCBkYXRhYml0bGVuIHdhcyBhIG11bHRpcGxlIG9mIDguCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaFVwZGF0ZShLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIGNvbnN0IEJpdFNlcXVlbmNlICpkYXRhLCBEYXRhTGVuZ3RoIGRhdGFiaXRsZW4pOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBjYWxsIGFmdGVyIGFsbCBpbnB1dCBibG9ja3MgaGF2ZSBiZWVuIGlucHV0IGFuZCB0byBnZXQKKyAgKiBvdXRwdXQgYml0cyBpZiB0aGUgbGVuZ3RoIHdhcyBzcGVjaWZpZWQgd2hlbiBjYWxsaW5nIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgaGFzaEluc3RhbmNlICAgIFBvaW50ZXIgdG8gdGhlIGhhc2ggaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgS2VjY2FrX0hhc2hJbml0aWFsaXplKCkuCisgICogSWYgQGEgaGFzaGJpdGxlbiB3YXMgbm90IDAgaW4gdGhlIGNhbGwgdG8gS2VjY2FrX0hhc2hJbml0aWFsaXplKCksIHRoZSBudW1iZXIgb2YKKyAgKiAgICAgb3V0cHV0IGJpdHMgaXMgZXF1YWwgdG8gQGEgaGFzaGJpdGxlbi4KKyAgKiBJZiBAYSBoYXNoYml0bGVuIHdhcyAwIGluIHRoZSBjYWxsIHRvIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLCB0aGUgb3V0cHV0IGJpdHMKKyAgKiAgICAgbXVzdCBiZSBleHRyYWN0ZWQgdXNpbmcgdGhlIEtlY2Nha19IYXNoU3F1ZWV6ZSgpIGZ1bmN0aW9uLgorICAqIEBwYXJhbSAgc3RhdGUgICAgICAgUG9pbnRlciB0byB0aGUgc3RhdGUgb2YgdGhlIHNwb25nZSBmdW5jdGlvbiBpbml0aWFsaXplZCBieSBJbml0KCkuCisgICogQHBhcmFtICBoYXNodmFsICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBkYXRhLgorICAqIEByZXR1cm4gU1VDQ0VTUyBpZiBzdWNjZXNzZnVsLCBGQUlMIG90aGVyd2lzZS4KKyAgKi8KK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hGaW5hbChLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIEJpdFNlcXVlbmNlICpoYXNodmFsKTsKKworIC8qKgorICAqIEZ1bmN0aW9uIHRvIHNxdWVlemUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBkYXRhYml0bGVuICBUaGUgbnVtYmVyIG9mIG91dHB1dCBiaXRzIGRlc2lyZWQgKG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4KS4KKyAgKiBAcHJlICAgIEtlY2Nha19IYXNoRmluYWwoKSBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGNhbGxlZC4KKyAgKiBAcHJlICAgIEBhIGRhdGFiaXRsZW4gaXMgYSBtdWx0aXBsZSBvZiA4LgorICAqIEByZXR1cm4gU1VDQ0VTUyBpZiBzdWNjZXNzZnVsLCBGQUlMIG90aGVyd2lzZS4KKyAgKi8KK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hTcXVlZXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmhhc2hJbnN0YW5jZSwgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbik7CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC02NC5tYWNyb3MgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtNjQubWFjcm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMTFmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtNjQubWFjcm9zCkBAIC0wLDAgKzEsMjIwOCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2RlZmluZSBkZWNsYXJlQUJDREUgXAorICAgIFVJTlQ2NCBBYmEsIEFiZSwgQWJpLCBBYm8sIEFidTsgXAorICAgIFVJTlQ2NCBBZ2EsIEFnZSwgQWdpLCBBZ28sIEFndTsgXAorICAgIFVJTlQ2NCBBa2EsIEFrZSwgQWtpLCBBa28sIEFrdTsgXAorICAgIFVJTlQ2NCBBbWEsIEFtZSwgQW1pLCBBbW8sIEFtdTsgXAorICAgIFVJTlQ2NCBBc2EsIEFzZSwgQXNpLCBBc28sIEFzdTsgXAorICAgIFVJTlQ2NCBCYmEsIEJiZSwgQmJpLCBCYm8sIEJidTsgXAorICAgIFVJTlQ2NCBCZ2EsIEJnZSwgQmdpLCBCZ28sIEJndTsgXAorICAgIFVJTlQ2NCBCa2EsIEJrZSwgQmtpLCBCa28sIEJrdTsgXAorICAgIFVJTlQ2NCBCbWEsIEJtZSwgQm1pLCBCbW8sIEJtdTsgXAorICAgIFVJTlQ2NCBCc2EsIEJzZSwgQnNpLCBCc28sIEJzdTsgXAorICAgIFVJTlQ2NCBDYSwgQ2UsIENpLCBDbywgQ3U7IFwKKyAgICBVSU5UNjQgRGEsIERlLCBEaSwgRG8sIER1OyBcCisgICAgVUlOVDY0IEViYSwgRWJlLCBFYmksIEVibywgRWJ1OyBcCisgICAgVUlOVDY0IEVnYSwgRWdlLCBFZ2ksIEVnbywgRWd1OyBcCisgICAgVUlOVDY0IEVrYSwgRWtlLCBFa2ksIEVrbywgRWt1OyBcCisgICAgVUlOVDY0IEVtYSwgRW1lLCBFbWksIEVtbywgRW11OyBcCisgICAgVUlOVDY0IEVzYSwgRXNlLCBFc2ksIEVzbywgRXN1OyBcCisKKyNkZWZpbmUgcHJlcGFyZVRoZXRhIFwKKyAgICBDYSA9IEFiYV5BZ2FeQWthXkFtYV5Bc2E7IFwKKyAgICBDZSA9IEFiZV5BZ2VeQWtlXkFtZV5Bc2U7IFwKKyAgICBDaSA9IEFiaV5BZ2leQWtpXkFtaV5Bc2k7IFwKKyAgICBDbyA9IEFib15BZ29eQWtvXkFtb15Bc287IFwKKyAgICBDdSA9IEFidV5BZ3VeQWt1XkFtdV5Bc3U7IFwKKworI2lmZGVmIFVzZUJlYmlnb2tpbWlzYQorLyogLS0tIENvZGUgZm9yIHJvdW5kLCB3aXRoIHByZXBhcmUtdGhldGEgKGxhbmUgY29tcGxlbWVudGluZyBwYXR0ZXJuICdiZWJpZ29raW1pc2EnKSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oICBCYmUgfCAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgQ2EgPSBFIyNiYTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSl8ICBCYm8gKTsgXAorICAgIENlID0gRSMjYmU7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oICBCYm8gJiAgQmJ1ICk7IFwKKyAgICBDaSA9IEUjI2JpOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCAgQmJ1IHwgIEJiYSApOyBcCisgICAgQ28gPSBFIyNibzsgXAorICAgIEUjI2J1ID0gICBCYnUgXiggIEJiYSAmICBCYmUgKTsgXAorICAgIEN1ID0gRSMjYnU7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXiggIEJnZSB8ICBCZ2kgKTsgXAorICAgIENhIF49IEUjI2dhOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCAgQmdpICYgIEJnbyApOyBcCisgICAgQ2UgXj0gRSMjZ2U7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oICBCZ28gfCh+Qmd1KSk7IFwKKyAgICBDaSBePSBFIyNnaTsgXAorICAgIEUjI2dvID0gICBCZ28gXiggIEJndSB8ICBCZ2EgKTsgXAorICAgIENvIF49IEUjI2dvOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCAgQmdhICYgIEJnZSApOyBcCisgICAgQ3UgXj0gRSMjZ3U7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oICBCa2UgfCAgQmtpICk7IFwKKyAgICBDYSBePSBFIyNrYTsgXAorICAgIEUjI2tlID0gICBCa2UgXiggIEJraSAmICBCa28gKTsgXAorICAgIENlIF49IEUjI2tlOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgQ2kgXj0gRSMja2k7IFwKKyAgICBFIyNrbyA9ICh+QmtvKV4oICBCa3UgfCAgQmthICk7IFwKKyAgICBDbyBePSBFIyNrbzsgXAorICAgIEUjI2t1ID0gICBCa3UgXiggIEJrYSAmICBCa2UgKTsgXAorICAgIEN1IF49IEUjI2t1OyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCAgQm1lICYgIEJtaSApOyBcCisgICAgQ2EgXj0gRSMjbWE7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oICBCbWkgfCAgQm1vICk7IFwKKyAgICBDZSBePSBFIyNtZTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbyl8ICBCbXUgKTsgXAorICAgIENpIF49IEUjI21pOyBcCisgICAgRSMjbW8gPSAofkJtbyleKCAgQm11ICYgIEJtYSApOyBcCisgICAgQ28gXj0gRSMjbW87IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oICBCbWEgfCAgQm1lICk7IFwKKyAgICBDdSBePSBFIyNtdTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgQ2EgXj0gRSMjc2E7IFwKKyAgICBFIyNzZSA9ICh+QnNlKV4oICBCc2kgfCAgQnNvICk7IFwKKyAgICBDZSBePSBFIyNzZTsgXAorICAgIEUjI3NpID0gICBCc2kgXiggIEJzbyAmICBCc3UgKTsgXAorICAgIENpIF49IEUjI3NpOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCAgQnN1IHwgIEJzYSApOyBcCisgICAgQ28gXj0gRSMjc287IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oICBCc2EgJiAgQnNlICk7IFwKKyAgICBDdSBePSBFIyNzdTsgXAorXAorCisvKiAtLS0gQ29kZSBmb3Igcm91bmQgKGxhbmUgY29tcGxlbWVudGluZyBwYXR0ZXJuICdiZWJpZ29raW1pc2EnKSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oICBCYmUgfCAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgRSMjYmUgPSAgIEJiZSBeKCh+QmJpKXwgIEJibyApOyBcCisgICAgRSMjYmkgPSAgIEJiaSBeKCAgQmJvICYgIEJidSApOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCAgQmJ1IHwgIEJiYSApOyBcCisgICAgRSMjYnUgPSAgIEJidSBeKCAgQmJhICYgIEJiZSApOyBcCitcCisgICAgQSMjYm8gXj0gRG87IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgQSMjZ3UgXj0gRHU7IFwKKyAgICBCZ2UgPSBST0w2NChBIyNndSwgMjApOyBcCisgICAgQSMja2EgXj0gRGE7IFwKKyAgICBCZ2kgPSBST0w2NChBIyNrYSwgMyk7IFwKKyAgICBBIyNtZSBePSBEZTsgXAorICAgIEJnbyA9IFJPTDY0KEEjI21lLCA0NSk7IFwKKyAgICBBIyNzaSBePSBEaTsgXAorICAgIEJndSA9IFJPTDY0KEEjI3NpLCA2MSk7IFwKKyAgICBFIyNnYSA9ICAgQmdhIF4oICBCZ2UgfCAgQmdpICk7IFwKKyAgICBFIyNnZSA9ICAgQmdlIF4oICBCZ2kgJiAgQmdvICk7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oICBCZ28gfCh+Qmd1KSk7IFwKKyAgICBFIyNnbyA9ICAgQmdvIF4oICBCZ3UgfCAgQmdhICk7IFwKKyAgICBFIyNndSA9ICAgQmd1IF4oICBCZ2EgJiAgQmdlICk7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oICBCa2UgfCAgQmtpICk7IFwKKyAgICBFIyNrZSA9ICAgQmtlIF4oICBCa2kgJiAgQmtvICk7IFwKKyAgICBFIyNraSA9ICAgQmtpIF4oKH5Ca28pJiAgQmt1ICk7IFwKKyAgICBFIyNrbyA9ICh+QmtvKV4oICBCa3UgfCAgQmthICk7IFwKKyAgICBFIyNrdSA9ICAgQmt1IF4oICBCa2EgJiAgQmtlICk7IFwKK1wKKyAgICBBIyNidSBePSBEdTsgXAorICAgIEJtYSA9IFJPTDY0KEEjI2J1LCAyNyk7IFwKKyAgICBBIyNnYSBePSBEYTsgXAorICAgIEJtZSA9IFJPTDY0KEEjI2dhLCAzNik7IFwKKyAgICBBIyNrZSBePSBEZTsgXAorICAgIEJtaSA9IFJPTDY0KEEjI2tlLCAxMCk7IFwKKyAgICBBIyNtaSBePSBEaTsgXAorICAgIEJtbyA9IFJPTDY0KEEjI21pLCAxNSk7IFwKKyAgICBBIyNzbyBePSBEbzsgXAorICAgIEJtdSA9IFJPTDY0KEEjI3NvLCA1Nik7IFwKKyAgICBFIyNtYSA9ICAgQm1hIF4oICBCbWUgJiAgQm1pICk7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oICBCbWkgfCAgQm1vICk7IFwKKyAgICBFIyNtaSA9ICAgQm1pIF4oKH5CbW8pfCAgQm11ICk7IFwKKyAgICBFIyNtbyA9ICh+Qm1vKV4oICBCbXUgJiAgQm1hICk7IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oICBCbWEgfCAgQm1lICk7IFwKK1wKKyAgICBBIyNiaSBePSBEaTsgXAorICAgIEJzYSA9IFJPTDY0KEEjI2JpLCA2Mik7IFwKKyAgICBBIyNnbyBePSBEbzsgXAorICAgIEJzZSA9IFJPTDY0KEEjI2dvLCA1NSk7IFwKKyAgICBBIyNrdSBePSBEdTsgXAorICAgIEJzaSA9IFJPTDY0KEEjI2t1LCAzOSk7IFwKKyAgICBBIyNtYSBePSBEYTsgXAorICAgIEJzbyA9IFJPTDY0KEEjI21hLCA0MSk7IFwKKyAgICBBIyNzZSBePSBEZTsgXAorICAgIEJzdSA9IFJPTDY0KEEjI3NlLCAyKTsgXAorICAgIEUjI3NhID0gICBCc2EgXigofkJzZSkmICBCc2kgKTsgXAorICAgIEUjI3NlID0gKH5Cc2UpXiggIEJzaSB8ICBCc28gKTsgXAorICAgIEUjI3NpID0gICBCc2kgXiggIEJzbyAmICBCc3UgKTsgXAorICAgIEUjI3NvID0gICBCc28gXiggIEJzdSB8ICBCc2EgKTsgXAorICAgIEUjI3N1ID0gICBCc3UgXiggIEJzYSAmICBCc2UgKTsgXAorXAorCisjZWxzZSAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworLyogLS0tIENvZGUgZm9yIHJvdW5kLCB3aXRoIHByZXBhcmUtdGhldGEgKi8KKworLyogLS0tIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gNjQtYml0IHdvcmRzICovCisKKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSwgQSwgRSkgXAorICAgIERhID0gQ3VeUk9MNjQoQ2UsIDEpOyBcCisgICAgRGUgPSBDYV5ST0w2NChDaSwgMSk7IFwKKyAgICBEaSA9IENlXlJPTDY0KENvLCAxKTsgXAorICAgIERvID0gQ2leUk9MNjQoQ3UsIDEpOyBcCisgICAgRHUgPSBDb15ST0w2NChDYSwgMSk7IFwKK1wKKyAgICBBIyNiYSBePSBEYTsgXAorICAgIEJiYSA9IEEjI2JhOyBcCisgICAgQSMjZ2UgXj0gRGU7IFwKKyAgICBCYmUgPSBST0w2NChBIyNnZSwgNDQpOyBcCisgICAgQSMja2kgXj0gRGk7IFwKKyAgICBCYmkgPSBST0w2NChBIyNraSwgNDMpOyBcCisgICAgQSMjbW8gXj0gRG87IFwKKyAgICBCYm8gPSBST0w2NChBIyNtbywgMjEpOyBcCisgICAgQSMjc3UgXj0gRHU7IFwKKyAgICBCYnUgPSBST0w2NChBIyNzdSwgMTQpOyBcCisgICAgRSMjYmEgPSAgIEJiYSBeKCh+QmJlKSYgIEJiaSApOyBcCisgICAgRSMjYmEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1tpXTsgXAorICAgIENhID0gRSMjYmE7IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpJiAgQmJvICk7IFwKKyAgICBDZSA9IEUjI2JlOyBcCisgICAgRSMjYmkgPSAgIEJiaSBeKCh+QmJvKSYgIEJidSApOyBcCisgICAgQ2kgPSBFIyNiaTsgXAorICAgIEUjI2JvID0gICBCYm8gXigofkJidSkmICBCYmEgKTsgXAorICAgIENvID0gRSMjYm87IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oKH5CYmEpJiAgQmJlICk7IFwKKyAgICBDdSA9IEUjI2J1OyBcCitcCisgICAgQSMjYm8gXj0gRG87IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgQSMjZ3UgXj0gRHU7IFwKKyAgICBCZ2UgPSBST0w2NChBIyNndSwgMjApOyBcCisgICAgQSMja2EgXj0gRGE7IFwKKyAgICBCZ2kgPSBST0w2NChBIyNrYSwgMyk7IFwKKyAgICBBIyNtZSBePSBEZTsgXAorICAgIEJnbyA9IFJPTDY0KEEjI21lLCA0NSk7IFwKKyAgICBBIyNzaSBePSBEaTsgXAorICAgIEJndSA9IFJPTDY0KEEjI3NpLCA2MSk7IFwKKyAgICBFIyNnYSA9ICAgQmdhIF4oKH5CZ2UpJiAgQmdpICk7IFwKKyAgICBDYSBePSBFIyNnYTsgXAorICAgIEUjI2dlID0gICBCZ2UgXigofkJnaSkmICBCZ28gKTsgXAorICAgIENlIF49IEUjI2dlOyBcCisgICAgRSMjZ2kgPSAgIEJnaSBeKCh+QmdvKSYgIEJndSApOyBcCisgICAgQ2kgXj0gRSMjZ2k7IFwKKyAgICBFIyNnbyA9ICAgQmdvIF4oKH5CZ3UpJiAgQmdhICk7IFwKKyAgICBDbyBePSBFIyNnbzsgXAorICAgIEUjI2d1ID0gICBCZ3UgXigofkJnYSkmICBCZ2UgKTsgXAorICAgIEN1IF49IEUjI2d1OyBcCitcCisgICAgQSMjYmUgXj0gRGU7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBBIyNnaSBePSBEaTsgXAorICAgIEJrZSA9IFJPTDY0KEEjI2dpLCA2KTsgXAorICAgIEEjI2tvIF49IERvOyBcCisgICAgQmtpID0gUk9MNjQoQSMja28sIDI1KTsgXAorICAgIEEjI211IF49IER1OyBcCisgICAgQmtvID0gUk9MNjQoQSMjbXUsIDgpOyBcCisgICAgQSMjc2EgXj0gRGE7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2EgPSAgIEJrYSBeKCh+QmtlKSYgIEJraSApOyBcCisgICAgQ2EgXj0gRSMja2E7IFwKKyAgICBFIyNrZSA9ICAgQmtlIF4oKH5Ca2kpJiAgQmtvICk7IFwKKyAgICBDZSBePSBFIyNrZTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIENpIF49IEUjI2tpOyBcCisgICAgRSMja28gPSAgIEJrbyBeKCh+Qmt1KSYgIEJrYSApOyBcCisgICAgQ28gXj0gRSMja287IFwKKyAgICBFIyNrdSA9ICAgQmt1IF4oKH5Ca2EpJiAgQmtlICk7IFwKKyAgICBDdSBePSBFIyNrdTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXigofkJtZSkmICBCbWkgKTsgXAorICAgIENhIF49IEUjI21hOyBcCisgICAgRSMjbWUgPSAgIEJtZSBeKCh+Qm1pKSYgIEJtbyApOyBcCisgICAgQ2UgXj0gRSMjbWU7IFwKKyAgICBFIyNtaSA9ICAgQm1pIF4oKH5CbW8pJiAgQm11ICk7IFwKKyAgICBDaSBePSBFIyNtaTsgXAorICAgIEUjI21vID0gICBCbW8gXigofkJtdSkmICBCbWEgKTsgXAorICAgIENvIF49IEUjI21vOyBcCisgICAgRSMjbXUgPSAgIEJtdSBeKCh+Qm1hKSYgIEJtZSApOyBcCisgICAgQ3UgXj0gRSMjbXU7IFwKK1wKKyAgICBBIyNiaSBePSBEaTsgXAorICAgIEJzYSA9IFJPTDY0KEEjI2JpLCA2Mik7IFwKKyAgICBBIyNnbyBePSBEbzsgXAorICAgIEJzZSA9IFJPTDY0KEEjI2dvLCA1NSk7IFwKKyAgICBBIyNrdSBePSBEdTsgXAorICAgIEJzaSA9IFJPTDY0KEEjI2t1LCAzOSk7IFwKKyAgICBBIyNtYSBePSBEYTsgXAorICAgIEJzbyA9IFJPTDY0KEEjI21hLCA0MSk7IFwKKyAgICBBIyNzZSBePSBEZTsgXAorICAgIEJzdSA9IFJPTDY0KEEjI3NlLCAyKTsgXAorICAgIEUjI3NhID0gICBCc2EgXigofkJzZSkmICBCc2kgKTsgXAorICAgIENhIF49IEUjI3NhOyBcCisgICAgRSMjc2UgPSAgIEJzZSBeKCh+QnNpKSYgIEJzbyApOyBcCisgICAgQ2UgXj0gRSMjc2U7IFwKKyAgICBFIyNzaSA9ICAgQnNpIF4oKH5Cc28pJiAgQnN1ICk7IFwKKyAgICBDaSBePSBFIyNzaTsgXAorICAgIEUjI3NvID0gICBCc28gXigofkJzdSkmICBCc2EgKTsgXAorICAgIENvIF49IEUjI3NvOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCh+QnNhKSYgIEJzZSApOyBcCisgICAgQ3UgXj0gRSMjc3U7IFwKK1wKKworLyogLS0tIENvZGUgZm9yIHJvdW5kICovCisKKy8qIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXigofkJiZSkmICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpJiAgQmJvICk7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oKH5CYm8pJiAgQmJ1ICk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oKH5CYnUpJiAgQmJhICk7IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oKH5CYmEpJiAgQmJlICk7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXigofkJnZSkmICBCZ2kgKTsgXAorICAgIEUjI2dlID0gICBCZ2UgXigofkJnaSkmICBCZ28gKTsgXAorICAgIEUjI2dpID0gICBCZ2kgXigofkJnbykmICBCZ3UgKTsgXAorICAgIEUjI2dvID0gICBCZ28gXigofkJndSkmICBCZ2EgKTsgXAorICAgIEUjI2d1ID0gICBCZ3UgXigofkJnYSkmICBCZ2UgKTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXigofkJrZSkmICBCa2kgKTsgXAorICAgIEUjI2tlID0gICBCa2UgXigofkJraSkmICBCa28gKTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIEUjI2tvID0gICBCa28gXigofkJrdSkmICBCa2EgKTsgXAorICAgIEUjI2t1ID0gICBCa3UgXigofkJrYSkmICBCa2UgKTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXigofkJtZSkmICBCbWkgKTsgXAorICAgIEUjI21lID0gICBCbWUgXigofkJtaSkmICBCbW8gKTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbykmICBCbXUgKTsgXAorICAgIEUjI21vID0gICBCbW8gXigofkJtdSkmICBCbWEgKTsgXAorICAgIEUjI211ID0gICBCbXUgXigofkJtYSkmICBCbWUgKTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgRSMjc2UgPSAgIEJzZSBeKCh+QnNpKSYgIEJzbyApOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCh+QnNvKSYgIEJzdSApOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCh+QnN1KSYgIEJzYSApOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCh+QnNhKSYgIEJzZSApOyBcCitcCisKKyNlbmRpZiAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworCisjZGVmaW5lIGNvcHlGcm9tU3RhdGUoWCwgc3RhdGUpIFwKKyAgICBYIyNiYSA9IHN0YXRlWyAwXTsgXAorICAgIFgjI2JlID0gc3RhdGVbIDFdOyBcCisgICAgWCMjYmkgPSBzdGF0ZVsgMl07IFwKKyAgICBYIyNibyA9IHN0YXRlWyAzXTsgXAorICAgIFgjI2J1ID0gc3RhdGVbIDRdOyBcCisgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgIFgjI2dpID0gc3RhdGVbIDddOyBcCisgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICBYIyNndSA9IHN0YXRlWyA5XTsgXAorICAgIFgjI2thID0gc3RhdGVbMTBdOyBcCisgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICBYIyNtYSA9IHN0YXRlWzE1XTsgXAorICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICBYIyNzdSA9IHN0YXRlWzI0XTsgXAorCisjZGVmaW5lIGNvcHlUb1N0YXRlKHN0YXRlLCBYKSBcCisgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKworI2RlZmluZSBjb3B5U3RhdGVWYXJpYWJsZXMoWCwgWSkgXAorICAgIFgjI2JhID0gWSMjYmE7IFwKKyAgICBYIyNiZSA9IFkjI2JlOyBcCisgICAgWCMjYmkgPSBZIyNiaTsgXAorICAgIFgjI2JvID0gWSMjYm87IFwKKyAgICBYIyNidSA9IFkjI2J1OyBcCisgICAgWCMjZ2EgPSBZIyNnYTsgXAorICAgIFgjI2dlID0gWSMjZ2U7IFwKKyAgICBYIyNnaSA9IFkjI2dpOyBcCisgICAgWCMjZ28gPSBZIyNnbzsgXAorICAgIFgjI2d1ID0gWSMjZ3U7IFwKKyAgICBYIyNrYSA9IFkjI2thOyBcCisgICAgWCMja2UgPSBZIyNrZTsgXAorICAgIFgjI2tpID0gWSMja2k7IFwKKyAgICBYIyNrbyA9IFkjI2tvOyBcCisgICAgWCMja3UgPSBZIyNrdTsgXAorICAgIFgjI21hID0gWSMjbWE7IFwKKyAgICBYIyNtZSA9IFkjI21lOyBcCisgICAgWCMjbWkgPSBZIyNtaTsgXAorICAgIFgjI21vID0gWSMjbW87IFwKKyAgICBYIyNtdSA9IFkjI211OyBcCisgICAgWCMjc2EgPSBZIyNzYTsgXAorICAgIFgjI3NlID0gWSMjc2U7IFwKKyAgICBYIyNzaSA9IFkjI3NpOyBcCisgICAgWCMjc28gPSBZIyNzbzsgXAorICAgIFgjI3N1ID0gWSMjc3U7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kQWRkKFgsIHN0YXRlLCBpbnB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSA9IHN0YXRlWyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNibyA9IHN0YXRlWyAzXTsgXAorICAgICAgICAgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdOyBcCisgICAgICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICAgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgIFgjI2JvID0gc3RhdGVbIDNdXmlucHV0WyAzXTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF1eaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdXmlucHV0WyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgWCMjZ2kgPSBzdGF0ZVsgN107IFwKKyAgICAgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdOyBcCisgICAgICAgICAgICBYIyNndSA9IHN0YXRlWyA5XTsgXAorICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgIFgjI2tlID0gc3RhdGVbMTFdOyBcCisgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICBYIyNiZSA9IHN0YXRlWyAxXV5pbnB1dFsgMV07IFwKKyAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgICAgICBYIyNnaSA9IHN0YXRlWyA3XV5pbnB1dFsgN107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2thID0gc3RhdGVbMTBdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF1eaW5wdXRbIDhdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldXmlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXV5pbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICBYIyNndSA9IHN0YXRlWyA5XV5pbnB1dFsgOV07IFwKKyAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXV5pbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICBYIyNrZSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIFgjI21hID0gc3RhdGVbMTVdOyBcCisgICAgICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgICAgIFgjI21pID0gc3RhdGVbMTddOyBcCisgICAgICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgICAgIFgjI3NvID0gc3RhdGVbMjNdOyBcCisgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICBYIyNiaSA9IHN0YXRlWyAyXV5pbnB1dFsgMl07IFwKKyAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgICAgICBYIyNnYSA9IHN0YXRlWyA1XV5pbnB1dFsgNV07IFwKKyAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgWCMjZ3UgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgICAgICBYIyNrZSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICAgICAgWCMjbWEgPSBzdGF0ZVsxNV1eaW5wdXRbMTVdOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XV5pbnB1dFsxNl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN11eaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNtdSA9IHN0YXRlWzE5XTsgXAorICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgIFgjI21pID0gc3RhdGVbMTddXmlucHV0WzE3XTsgXAorICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgIFgjI211ID0gc3RhdGVbMTldXmlucHV0WzE5XTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdXmlucHV0WzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICAgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl1eaW5wdXRbMTZdOyBcCisgICAgICAgICAgICBYIyNtaSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgWCMjbXUgPSBzdGF0ZVsxOV1eaW5wdXRbMTldOyBcCisgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICAgICAgICAgIFgjI3NlID0gc3RhdGVbMjFdXmlucHV0WzIxXTsgXAorICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl1eaW5wdXRbMjJdOyBcCisgICAgICAgICAgICBYIyNzbyA9IHN0YXRlWzIzXV5pbnB1dFsyM107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNSkgeyBcCisgICAgICAgICAgICAgICAgWCMjc3UgPSBzdGF0ZVsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSA9IHN0YXRlWzI0XV5pbnB1dFsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgYWRkSW5wdXQoWCwgaW5wdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPT0gMjEpIHsgXAorICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgIFgjI2JpIF49IGlucHV0WyAyXTsgXAorICAgICAgICBYIyNibyBePSBpbnB1dFsgM107IFwKKyAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgIFgjI2dhIF49IGlucHV0WyA1XTsgXAorICAgICAgICBYIyNnZSBePSBpbnB1dFsgNl07IFwKKyAgICAgICAgWCMjZ2kgXj0gaW5wdXRbIDddOyBcCisgICAgICAgIFgjI2dvIF49IGlucHV0WyA4XTsgXAorICAgICAgICBYIyNndSBePSBpbnB1dFsgOV07IFwKKyAgICAgICAgWCMja2EgXj0gaW5wdXRbMTBdOyBcCisgICAgICAgIFgjI2tlIF49IGlucHV0WzExXTsgXAorICAgICAgICBYIyNraSBePSBpbnB1dFsxMl07IFwKKyAgICAgICAgWCMja28gXj0gaW5wdXRbMTNdOyBcCisgICAgICAgIFgjI2t1IF49IGlucHV0WzE0XTsgXAorICAgICAgICBYIyNtYSBePSBpbnB1dFsxNV07IFwKKyAgICAgICAgWCMjbWUgXj0gaW5wdXRbMTZdOyBcCisgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICBYIyNtbyBePSBpbnB1dFsxOF07IFwKKyAgICAgICAgWCMjbXUgXj0gaW5wdXRbMTldOyBcCisgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgIH0gXAorICAgIGVsc2UgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgICAgICAgICAgWCMjYm8gXj0gaW5wdXRbIDNdOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IGlucHV0WyA0XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICAgICAgWCMjZ2kgXj0gaW5wdXRbIDddOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2thIF49IGlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICBYIyNndSBePSBpbnB1dFsgOV07IFwKKyAgICAgICAgICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICBYIyNrZSBePSBpbnB1dFsxMV07IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNraSBePSBpbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gaW5wdXRbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgWCMjZ2EgXj0gaW5wdXRbIDVdOyBcCisgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICBYIyNnaSBePSBpbnB1dFsgN107IFwKKyAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgWCMja2UgXj0gaW5wdXRbMTFdOyBcCisgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICBYIyNrbyBePSBpbnB1dFsxM107IFwKKyAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgIFgjI21hIF49IGlucHV0WzE1XTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICAgICAgICAgIFgjI21vIF49IGlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgIFgjI211IF49IGlucHV0WzE5XTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSBpbnB1dFsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSBePSBpbnB1dFsyMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICBYIyNtdSBePSBpbnB1dFsxOV07IFwKKyAgICAgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgICAgICAgICAgWCMjc2UgXj0gaW5wdXRbMjFdOyBcCisgICAgICAgICAgICBYIyNzaSBePSBpbnB1dFsyMl07IFwKKyAgICAgICAgICAgIFgjI3NvIF49IGlucHV0WzIzXTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSBpbnB1dFsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNpZmRlZiBVc2VCZWJpZ29raW1pc2EKKworI2RlZmluZSBjb3B5VG9TdGF0ZUFuZE91dHB1dChYLCBzdGF0ZSwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgc3RhdGVbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBvdXRwdXRbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgb3V0cHV0KFgsIG91dHB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSB+WCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNV0gPSBYIyNtYTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyNSkgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQorCisjZGVmaW5lIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBYIyNuYW1lIF49IGlucHV0W2luZGV4XTsgXAorICAgIG91dHB1dFtpbmRleF0gPSBYIyNuYW1lOworCisjZGVmaW5lIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBYIyNuYW1lIF49IGlucHV0W2luZGV4XTsgXAorICAgIG91dHB1dFtpbmRleF0gPSB+WCMjbmFtZTsKKworI2RlZmluZSB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gaW5wdXRbaW5kZXhdIF4gWCMjbmFtZTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsKKworI2RlZmluZSB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gfihpbnB1dFtpbmRleF0gXiBYIyNuYW1lKTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsgXAorCisjZWxzZSAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworCisjZGVmaW5lIGNvcHlUb1N0YXRlQW5kT3V0cHV0KFgsIHN0YXRlLCBvdXRwdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE0KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRlWzE1XSA9IFgjI21hOyBcCisgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgb3V0cHV0WzEyXT0gWCMja2k7IFwKKyAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgICAgICBvdXRwdXRbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjUpIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBvdXRwdXQoWCwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgb3V0cHV0WzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgb3V0cHV0W2luZGV4XSA9IGlucHV0W2luZGV4XSBeIFgjI25hbWU7IFwKKyAgICBYIyNuYW1lIF49IG91dHB1dFtpbmRleF07CisKKyNkZWZpbmUgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgb3V0cHV0W2luZGV4XSA9IGlucHV0W2luZGV4XSBeIFgjI25hbWU7IFwKKyAgICBYIyNuYW1lIF49IG91dHB1dFtpbmRleF07CisKKyNlbmRpZgorCisjZGVmaW5lIHdyYXAoWCwgaW5wdXQsIG91dHB1dCwgbGFuZUNvdW50LCB0cmFpbGluZ0JpdHMpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEzLCBrbykgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21hIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA1LCBnYSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTEsIGtlKSBcCisgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTQsIGt1KSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTUsIG1hKSBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbXUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTksIG11KSBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMjAsIHNhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMSwgc2UpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjEsIHNlKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMywgc28pIFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNSkgeyBcCisgICAgICAgICAgICAgICAgWCMjc3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyNCwgc3UpIFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgdW53cmFwKFgsIGlucHV0LCBvdXRwdXQsIGxhbmVDb3VudCwgdHJhaWxpbmdCaXRzKSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2d1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEwLCBrYSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEzLCBrbykgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE0LCBrdSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE1LCBtYSkgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbXUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxOSwgbXUpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIzLCBzbykgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjQsIHN1KSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZjc2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDMyLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrUF8xNjAwX1NuUF9oXworI2RlZmluZSBfS2VjY2FrUF8xNjAwX1NuUF9oXworCisvKiogRm9yIHRoZSBkb2N1bWVudGF0aW9uLCBzZWUgU25QLWRvY3VtZW50YXRpb24uaC4KKyAqLworCisjZGVmaW5lIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uICAgICAgImluLXBsYWNlIDMyLWJpdCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24iCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlU2l6ZUluQnl0ZXMgICAgMjAwCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlQWxpZ25tZW50ICAgICAgOAorCisjZGVmaW5lIEtlY2Nha1AxNjAwX1N0YXRpY0luaXRpYWxpemUoKQordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciBkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KTsKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpOwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4OWEzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDY0LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrUF8xNjAwX1NuUF9oXworI2RlZmluZSBfS2VjY2FrUF8xNjAwX1NuUF9oXworCisvKiogRm9yIHRoZSBkb2N1bWVudGF0aW9uLCBzZWUgU25QLWRvY3VtZW50YXRpb24uaC4KKyAqLworCisvKiAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIiAqLworI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaCIKKworI2RlZmluZSBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbiAgICAgICJnZW5lcmljIDY0LWJpdCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gKCIgS2VjY2FrUDE2MDBfaW1wbGVtZW50YXRpb25fY29uZmlnICIpIgorI2RlZmluZSBLZWNjYWtQMTYwMF9zdGF0ZVNpemVJbkJ5dGVzICAgIDIwMAorI2RlZmluZSBLZWNjYWtQMTYwMF9zdGF0ZUFsaWdubWVudCAgICAgIDgKKyNkZWZpbmUgS2VjY2FrRjE2MDBfRmFzdExvb3Bfc3VwcG9ydGVkCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2RlZmluZSBLZWNjYWtQMTYwMF9TdGF0aWNJbml0aWFsaXplKCkKK3ZvaWQgS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZSh2b2lkICpzdGF0ZSk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkQnl0ZShzdGF0ZSwgYnl0ZSwgb2Zmc2V0KSBcCisgICAgKCh1bnNpZ25lZCBjaGFyKikoc3RhdGUpKVsob2Zmc2V0KV0gXj0gKGJ5dGUpCisjZWxzZQordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyIGRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQpOworI2VuZGlmCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgYnl0ZUNvdW50KTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHModm9pZCAqc3RhdGUpOwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOworc2l6ZV90IEtlY2Nha0YxNjAwX0Zhc3RMb29wX0Fic29yYih2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyM2YwOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAuaApAQCAtMCwwICsxLDcgQEAKKyNpZiBLZWNjYWtPcHQgPT0gNjQKKyAgI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1TblAtb3B0NjQuaCIKKyNlbGlmIEtlY2Nha09wdCA9PSAzMgorICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIgorI2Vsc2UKKyAgI2Vycm9yICJObyBLZWNjYWtPcHQiCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJmOWZmZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jCkBAIC0wLDAgKzEsMTE2MiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgICAgPHN0cmluZy5oPgorLyogI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIgKi8KKyNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisjaW5jbHVkZSAiU25QLVJlbGFuZWQuaCIKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyOworLyogV0FSTklORzogb24gOC1iaXQgYW5kIDE2LWJpdCBwbGF0Zm9ybXMsIHRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5OiAqLworCisvKnR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICBVSU5UMzI7ICovCisKKworI2RlZmluZSBST0wzMihhLCBvZmZzZXQpICgoKChVSU5UMzIpYSkgPDwgKG9mZnNldCkpIF4gKCgoVUlOVDMyKWEpID4+ICgzMi0ob2Zmc2V0KSkpKQorCisvKiBDcmVkaXQgdG8gSGVucnkgUy4gV2FycmVuLCBIYWNrZXIncyBEZWxpZ2h0LCBBZGRpc29uLVdlc2xleSwgMjAwMiAqLworCisjZGVmaW5lIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICB0ZW1wMCA9IChsb3cpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAxID0gKGhpZ2gpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOworCisjZGVmaW5lIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgZXZlbiwgb2RkLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgcHJlcGFyZVRvQml0SW50ZXJsZWF2aW5nKGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGV2ZW4gXj0gKHRlbXAwICYgMHgwMDAwRkZGRikgfCAodGVtcDEgPDwgMTYpOyBcCisgICAgICAgIG9kZCBePSAodGVtcDAgPj4gMTYpIHwgKHRlbXAxICYgMHhGRkZGMDAwMCk7CisKKyNkZWZpbmUgdG9CaXRJbnRlcmxlYXZpbmdBbmRBTkQobG93LCBoaWdoLCBldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlVG9CaXRJbnRlcmxlYXZpbmcobG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgZXZlbiAmPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgb2RkICY9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworI2RlZmluZSB0b0JpdEludGVybGVhdmluZ0FuZFNldChsb3csIGhpZ2gsIGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBldmVuID0gKHRlbXAwICYgMHgwMDAwRkZGRikgfCAodGVtcDEgPDwgMTYpOyBcCisgICAgICAgIG9kZCA9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworLyogQ3JlZGl0IHRvIEhlbnJ5IFMuIFdhcnJlbiwgSGFja2VyJ3MgRGVsaWdodCwgQWRkaXNvbi1XZXNsZXksIDIwMDIgKi8KKworI2RlZmluZSBwcmVwYXJlRnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICB0ZW1wMCA9IChldmVuKTsgXAorICAgICAgICB0ZW1wMSA9IChvZGQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgdGVtcDEgPSAodGVtcDAgPj4gMTYpIHwgKHRlbXAxICYgMHhGRkZGMDAwMCk7IFwKKyAgICAgICAgdGVtcDAgPSB0ZW1wOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOworCisjZGVmaW5lIGZyb21CaXRJbnRlcmxlYXZpbmcoZXZlbiwgb2RkLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlRnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBsb3cgPSB0ZW1wMDsgXAorICAgICAgICBoaWdoID0gdGVtcDE7CisKKyNkZWZpbmUgZnJvbUJpdEludGVybGVhdmluZ0FuZFhPUihldmVuLCBvZGQsIGxvd0luLCBoaWdoSW4sIGxvd091dCwgaGlnaE91dCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVGcm9tQml0SW50ZXJsZWF2aW5nKGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGxvd091dCA9IGxvd0luIF4gdGVtcDA7IFwKKyAgICAgICAgaGlnaE91dCA9IGhpZ2hJbiBeIHRlbXAxOworCit2b2lkIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIG1lbXNldChsYW5lQXNCeXRlcywgMHhGRiwgb2Zmc2V0KTsKKyAgICBtZW1zZXQobGFuZUFzQnl0ZXMrb2Zmc2V0LCAweDAwLCBsZW5ndGgpOworICAgIG1lbXNldChsYW5lQXNCeXRlcytvZmZzZXQrbGVuZ3RoLCAweEZGLCA4LW9mZnNldC1sZW5ndGgpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgbG93ID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgIGhpZ2ggPSAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSk7CisjZWxzZQorICAgIGxvdyA9IGxhbmVBc0J5dGVzWzBdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzNdKSA8PCAyNCk7CisgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s2XSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisjZW5kaWYKKyAgICB0b0JpdEludGVybGVhdmluZ0FuZEFORChsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKQoreworICAgIG1lbXNldChzdGF0ZSwgMCwgMjAwKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uID0gb2Zmc2V0Lzg7CisgICAgdW5zaWduZWQgaW50IG9mZnNldEluTGFuZSA9IG9mZnNldCU4OworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIGlmIChvZmZzZXRJbkxhbmUgPCA0KSB7CisgICAgICAgIGxvdyA9IChVSU5UMzIpYnl0ZSA8PCAob2Zmc2V0SW5MYW5lKjgpOworICAgICAgICBoaWdoID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGxvdyA9IDA7CisgICAgICAgIGhpZ2ggPSAoVUlOVDMyKWJ5dGUgPDwgKChvZmZzZXRJbkxhbmUtNCkqOCk7CisgICAgfQorICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMiswXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIG1lbXNldChsYW5lQXNCeXRlcywgMCwgOCk7CisgICAgbWVtY3B5KGxhbmVBc0J5dGVzK29mZnNldCwgZGF0YSwgbGVuZ3RoKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGxvdyA9ICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKTsKKyAgICBoaWdoID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpOworI2Vsc2UKKyAgICBsb3cgPSBsYW5lQXNCeXRlc1swXQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1sxXSkgPDwgOCkKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1szXSkgPDwgMjQpOworICAgIGhpZ2ggPSBsYW5lQXNCeXRlc1s0XQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNl0pIDw8IDE2KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s3XSkgPDwgMjQpOworI2VuZGlmCisgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkTGFuZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBjb25zdCBVSU5UMzIgKiBwSSA9IChjb25zdCBVSU5UMzIgKilkYXRhOworICAgIFVJTlQzMiAqIHBTID0gKFVJTlQzMiopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBtZW1jcHkoJmxvdywgcEkrKywgNCk7CisgICAgICAgIG1lbWNweSgmaGlnaCwgcEkrKywgNCk7CisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKTsKKyNlbHNlCisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKCoocEkrKyksICoocEkrKyksICoocFMrKyksICoocFMrKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lczsKKyAgICAgICAgbWVtY3B5KGxhbmVBc0J5dGVzLCBkYXRhK2xhbmVQb3NpdGlvbio4LCA4KTsKKyAgICAgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICAgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfQWRkTGFuZXMsIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHN0YXRlLCBsYW5lUG9zaXRpb24sIG9mZnNldCwgbGVuZ3RoKTsKKyAgICBLZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgbGFuZVBvc2l0aW9uLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWRhdGE7CisgICAgVUlOVDMyICogcFMgPSAoVUlOVDMyICopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBtZW1jcHkoJmxvdywgcEkrKywgNCk7CisgICAgICAgIG1lbWNweSgmaGlnaCwgcEkrKywgNCk7CisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KGxvdywgaGlnaCwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKTsKKyNlbHNlCisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KCoocEkrKyksICoocEkrKyksICoocFMrKyksICoocFMrKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lczsKKyAgICAgICAgbWVtY3B5KGxhbmVBc0J5dGVzLCBkYXRhK2xhbmVQb3NpdGlvbio4LCA4KTsKKyAgICAgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICAgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRTZXQobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMsIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPGJ5dGVDb3VudC84OyBpKyspIHsKKyAgICAgICAgc3RhdGVBc0hhbGZMYW5lc1tpKjIrMF0gPSAwOworICAgICAgICBzdGF0ZUFzSGFsZkxhbmVzW2kqMisxXSA9IDA7CisgICAgfQorICAgIGlmIChieXRlQ291bnQlOCAhPSAwKQorICAgICAgICBLZWNjYWtQMTYwMF9TZXRCeXRlc0luTGFuZVRvWmVybyhzdGF0ZSwgYnl0ZUNvdW50LzgsIDAsIGJ5dGVDb3VudCU4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisKKyAgICBmcm9tQml0SW50ZXJsZWF2aW5nKHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjJdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcyswKSkgPSBsb3c7CisgICAgKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpID0gaGlnaDsKKyNlbHNlCisgICAgbGFuZUFzQnl0ZXNbMF0gPSBsb3cgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMl0gPSAobG93ID4+IDE2KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbM10gPSAobG93ID4+IDI0KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s1XSA9IChoaWdoID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s2XSA9IChoaWdoID4+IDE2KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworI2VuZGlmCisgICAgbWVtY3B5KGRhdGEsIGxhbmVBc0J5dGVzK29mZnNldCwgbGVuZ3RoKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIFVJTlQzMiAqIHBJID0gKFVJTlQzMiAqKWRhdGE7CisgICAgY29uc3QgVUlOVDMyICogcFMgPSAoIGNvbnN0IFVJTlQzMiAqKXN0YXRlOworICAgIFVJTlQzMiB0LCB4MCwgeDE7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gbGFuZUNvdW50LTE7IGkgPj0gMDsgLS1pKSB7CisjaWZkZWYgTk9fTUlTQUxJR05FRF9BQ0NFU1NFUworICAgICAgICBVSU5UMzIgbG93OworICAgICAgICBVSU5UMzIgaGlnaDsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZygqKHBTKyspLCAqKHBTKyspLCBsb3csIGhpZ2gsIHQsIHgwLCB4MSk7CisgICAgICAgIG1lbWNweShwSSsrLCAmbG93LCA0KTsKKyAgICAgICAgbWVtY3B5KHBJKyssICZoaWdoLCA0KTsKKyNlbHNlCisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoKihwUysrKSwgKihwUysrKSwgKihwSSsrKSwgKihwSSsrKSwgdCwgeDAsIHgxKQorI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uOworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspIHsKKyAgICAgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICAgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyAgICAgICAgbGFuZUFzQnl0ZXNbMF0gPSBsb3cgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1sxXSA9IChsb3cgPj4gOCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbM10gPSAobG93ID4+IDI0KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzRdID0gaGlnaCAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s2XSA9IChoaWdoID4+IDE2KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzddID0gKGhpZ2ggPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbWVtY3B5KGRhdGErbGFuZVBvc2l0aW9uKjgsIGxhbmVBc0J5dGVzLCA4KTsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKSA9IGxvdzsKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSkgPSBoaWdoOworI2Vsc2UKKyAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMV0gPSAobG93ID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s0XSA9IGhpZ2ggJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s3XSA9IChoaWdoID4+IDI0KSAmIDB4RkY7CisjZW5kaWYKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICBvdXRwdXRbaV0gPSBpbnB1dFtpXSBeIGxhbmVBc0J5dGVzW29mZnNldCtpXTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWlucHV0OworICAgIFVJTlQzMiAqIHBPID0gKFVJTlQzMiAqKW91dHB1dDsKKyAgICBjb25zdCBVSU5UMzIgKiBwUyA9IChjb25zdCBVSU5UMzIgKilzdGF0ZTsKKyAgICBVSU5UMzIgdCwgeDAsIHgxOworICAgIGludCBpOworICAgIGZvciAoaSA9IGxhbmVDb3VudC0xOyBpID49IDA7IC0taSkgeworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAgICAgVUlOVDMyIGxvdzsKKyAgICAgICAgVUlOVDMyIGhpZ2g7CisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoKihwUysrKSwgKihwUysrKSwgbG93LCBoaWdoLCB0LCB4MCwgeDEpOworICAgICAgICAqKHBPKyspID0gKihwSSsrKSBeIGxvdzsKKyAgICAgICAgKihwTysrKSA9ICoocEkrKykgXiBoaWdoOworI2Vsc2UKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZ0FuZFhPUigqKHBTKyspLCAqKHBTKyspLCAqKHBJKyspLCAqKHBJKyspLCAqKHBPKyspLCAqKHBPKyspLCB0LCB4MCwgeDEpCisjZW5kaWYKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisgICAgZm9yKGxhbmVQb3NpdGlvbj0wOyBsYW5lUG9zaXRpb248bGFuZUNvdW50OyBsYW5lUG9zaXRpb24rKykgeworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgVUlOVDMyIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgICAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZyhzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgICAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzJdID0gKGxvdyA+PiAxNikgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNV0gPSAoaGlnaCA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworICAgICAgICAoKFVJTlQzMiopKG91dHB1dCtsYW5lUG9zaXRpb24qOCkpWzBdID0gKChVSU5UMzIqKShpbnB1dCtsYW5lUG9zaXRpb24qOCkpWzBdIF4gKCooY29uc3QgVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgICAgICAoKFVJTlQzMiopKG91dHB1dCtsYW5lUG9zaXRpb24qOCkpWzFdID0gKChVSU5UMzIqKShpbnB1dCtsYW5lUG9zaXRpb24qOCkpWzBdIF4gKCooY29uc3QgVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpOworICAgIH0KKyNlbmRpZgorfQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3N0YXRpYyBjb25zdCBVSU5UMzIgS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyWzIqMjQrMV0gPQoreworICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDA4OVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4YlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODA4MFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwMDA4YlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODAwMFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwODA4OFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4MlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDAwYlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDAwYVVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODA4MlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwODAwM1VMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODA4YlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDAwYlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4YVVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4MVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4MVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDAwOFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDA4M1VMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODAwM1VMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwODA4OFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4OFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODAwMFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODA4MlVMLAorICAgIDB4MDAwMDAwRkZVTAorfTsKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMCgpIFwKKyAgICAgICAgQ3ggPSBBYnUwXkFndTBeQWt1MF5BbXUwXkFzdTA7IFwKKyAgICAgICAgRHUxID0gQWJlMV5BZ2UxXkFrZTFeQW1lMV5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYnUxXkFndTFeQWt1MV5BbXUxXkFzdTE7IFwKKyAgICAgICAgRHUwID0gQWJlMF5BZ2UwXkFrZTBeQW1lMF5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFiaTBeQWdpMF5Ba2kwXkFtaTBeQXNpMDsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBYmkxXkFnaTFeQWtpMV5BbWkxXkFzaTE7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFnYTBeQWthMF5BbWEwXkFzYTA7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5BZ2ExXkFrYTFeQW1hMV5Bc2ExOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQWJvMV5BZ28xXkFrbzFeQW1vMV5Bc28xOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBYm8wXkFnbzBeQWtvMF5BbW8wXkFzbzA7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCisjZGVmaW5lIEtlY2Nha0F0b0Rfcm91bmQxKCkgXAorICAgICAgICBDeCA9IEFzdTBeQWd1MF5BbXUwXkFidTFeQWt1MTsgXAorICAgICAgICBEdTEgPSBBZ2UxXkFtZTBeQWJlMF5Ba2UxXkFzZTE7IFwKKyAgICAgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorICAgICAgICBDeiA9IEFzdTFeQWd1MV5BbXUxXkFidTBeQWt1MDsgXAorICAgICAgICBEdTAgPSBBZ2UwXkFtZTFeQWJlMV5Ba2UwXkFzZTA7IFwKKyAgICAgICAgRGExID0gQ3peRHUwOyBcCitcCisgICAgICAgIEN3ID0gQWtpMV5Bc2kxXkFnaTBeQW1pMV5BYmkwOyBcCisgICAgICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBDeSA9IEFraTBeQXNpMF5BZ2kxXkFtaTBeQWJpMTsgXAorICAgICAgICBEbzEgPSBDeV5DeDsgXAorXAorICAgICAgICBDeCA9IEFiYTBeQWthMV5Bc2EwXkFnYTBeQW1hMTsgXAorICAgICAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYmExXkFrYTBeQXNhMV5BZ2ExXkFtYTA7IFwKKyAgICAgICAgRGUxID0gQ3peQ3c7IFwKK1wKKyAgICAgICAgQ3kgPSBBbW8wXkFibzFeQWtvMF5Bc28xXkFnbzA7IFwKKyAgICAgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDdyA9IEFtbzFeQWJvMF5Ba28xXkFzbzBeQWdvMTsgXAorICAgICAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKyAgICAgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIER1MSA9IEN5XkN4OyBcCisKKyNkZWZpbmUgS2VjY2FrQXRvRF9yb3VuZDIoKSBcCisgICAgICAgIEN4ID0gQWt1MV5BZ3UwXkFidTFeQXN1MV5BbXUxOyBcCisgICAgICAgIER1MSA9IEFtZTBeQWtlMF5BZ2UwXkFiZTBeQXNlMTsgXAorICAgICAgICBEYTAgPSBDeF5ST0wzMihEdTEsIDEpOyBcCisgICAgICAgIEN6ID0gQWt1MF5BZ3UxXkFidTBeQXN1MF5BbXUwOyBcCisgICAgICAgIER1MCA9IEFtZTFeQWtlMV5BZ2UxXkFiZTFeQXNlMDsgXAorICAgICAgICBEYTEgPSBDel5EdTA7IFwKK1wKKyAgICAgICAgQ3cgPSBBZ2kxXkFiaTFeQXNpMV5BbWkwXkFraTE7IFwKKyAgICAgICAgRG8wID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIEN5ID0gQWdpMF5BYmkwXkFzaTBeQW1pMV5Ba2kwOyBcCisgICAgICAgIERvMSA9IEN5XkN4OyBcCitcCisgICAgICAgIEN4ID0gQWJhMF5Bc2ExXkFtYTFeQWthMV5BZ2ExOyBcCisgICAgICAgIERlMCA9IEN4XlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDeiA9IEFiYTFeQXNhMF5BbWEwXkFrYTBeQWdhMDsgXAorICAgICAgICBEZTEgPSBDel5DdzsgXAorXAorICAgICAgICBDeSA9IEFzbzBeQW1vMF5Ba28xXkFnbzBeQWJvMDsgXAorICAgICAgICBEaTAgPSBEdTBeUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN3ID0gQXNvMV5BbW8xXkFrbzBeQWdvMV5BYm8xOyBcCisgICAgICAgIERpMSA9IER1MV5DdzsgXAorXAorICAgICAgICBEdTAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgRHUxID0gQ3leQ3g7IFwKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMygpIFwKKyAgICAgICAgQ3ggPSBBbXUxXkFndTBeQXN1MV5Ba3UwXkFidTA7IFwKKyAgICAgICAgRHUxID0gQWtlMF5BYmUxXkFtZTFeQWdlMF5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBbXUwXkFndTFeQXN1MF5Ba3UxXkFidTE7IFwKKyAgICAgICAgRHUwID0gQWtlMV5BYmUwXkFtZTBeQWdlMV5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFzaTBeQWtpMF5BYmkxXkFtaTFeQWdpMTsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBc2kxXkFraTFeQWJpMF5BbWkwXkFnaTA7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFtYTBeQWdhMV5Bc2ExXkFrYTA7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5BbWExXkFnYTBeQXNhMF5Ba2ExOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQWdvMV5Bc28wXkFrbzBeQWJvMF5BbW8xOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBZ28wXkFzbzFeQWtvMV5BYm8xXkFtbzA7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IG5Sb3VuZHMpCit7CisgICAgeworICAgICAgICBVSU5UMzIgRGEwLCBEZTAsIERpMCwgRG8wLCBEdTA7CisgICAgICAgIFVJTlQzMiBEYTEsIERlMSwgRGkxLCBEbzEsIER1MTsKKyAgICAgICAgVUlOVDMyIENhMCwgQ2UwLCBDaTAsIENvMCwgQ3UwOworICAgICAgICBVSU5UMzIgQ3gsIEN5LCBDeiwgQ3c7CisgICAgICAgICNkZWZpbmUgQmEgQ2EwCisgICAgICAgICNkZWZpbmUgQmUgQ2UwCisgICAgICAgICNkZWZpbmUgQmkgQ2kwCisgICAgICAgICNkZWZpbmUgQm8gQ28wCisgICAgICAgICNkZWZpbmUgQnUgQ3UwCisgICAgICAgIGNvbnN0IFVJTlQzMiAqcFJvdW5kQ29uc3RhbnRzID0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyKygyNC1uUm91bmRzKSoyOworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgI2RlZmluZSBBYmEwIHN0YXRlQXNIYWxmTGFuZXNbIDBdCisgICAgICAgICNkZWZpbmUgQWJhMSBzdGF0ZUFzSGFsZkxhbmVzWyAxXQorICAgICAgICAjZGVmaW5lIEFiZTAgc3RhdGVBc0hhbGZMYW5lc1sgMl0KKyAgICAgICAgI2RlZmluZSBBYmUxIHN0YXRlQXNIYWxmTGFuZXNbIDNdCisgICAgICAgICNkZWZpbmUgQWJpMCBzdGF0ZUFzSGFsZkxhbmVzWyA0XQorICAgICAgICAjZGVmaW5lIEFiaTEgc3RhdGVBc0hhbGZMYW5lc1sgNV0KKyAgICAgICAgI2RlZmluZSBBYm8wIHN0YXRlQXNIYWxmTGFuZXNbIDZdCisgICAgICAgICNkZWZpbmUgQWJvMSBzdGF0ZUFzSGFsZkxhbmVzWyA3XQorICAgICAgICAjZGVmaW5lIEFidTAgc3RhdGVBc0hhbGZMYW5lc1sgOF0KKyAgICAgICAgI2RlZmluZSBBYnUxIHN0YXRlQXNIYWxmTGFuZXNbIDldCisgICAgICAgICNkZWZpbmUgQWdhMCBzdGF0ZUFzSGFsZkxhbmVzWzEwXQorICAgICAgICAjZGVmaW5lIEFnYTEgc3RhdGVBc0hhbGZMYW5lc1sxMV0KKyAgICAgICAgI2RlZmluZSBBZ2UwIHN0YXRlQXNIYWxmTGFuZXNbMTJdCisgICAgICAgICNkZWZpbmUgQWdlMSBzdGF0ZUFzSGFsZkxhbmVzWzEzXQorICAgICAgICAjZGVmaW5lIEFnaTAgc3RhdGVBc0hhbGZMYW5lc1sxNF0KKyAgICAgICAgI2RlZmluZSBBZ2kxIHN0YXRlQXNIYWxmTGFuZXNbMTVdCisgICAgICAgICNkZWZpbmUgQWdvMCBzdGF0ZUFzSGFsZkxhbmVzWzE2XQorICAgICAgICAjZGVmaW5lIEFnbzEgc3RhdGVBc0hhbGZMYW5lc1sxN10KKyAgICAgICAgI2RlZmluZSBBZ3UwIHN0YXRlQXNIYWxmTGFuZXNbMThdCisgICAgICAgICNkZWZpbmUgQWd1MSBzdGF0ZUFzSGFsZkxhbmVzWzE5XQorICAgICAgICAjZGVmaW5lIEFrYTAgc3RhdGVBc0hhbGZMYW5lc1syMF0KKyAgICAgICAgI2RlZmluZSBBa2ExIHN0YXRlQXNIYWxmTGFuZXNbMjFdCisgICAgICAgICNkZWZpbmUgQWtlMCBzdGF0ZUFzSGFsZkxhbmVzWzIyXQorICAgICAgICAjZGVmaW5lIEFrZTEgc3RhdGVBc0hhbGZMYW5lc1syM10KKyAgICAgICAgI2RlZmluZSBBa2kwIHN0YXRlQXNIYWxmTGFuZXNbMjRdCisgICAgICAgICNkZWZpbmUgQWtpMSBzdGF0ZUFzSGFsZkxhbmVzWzI1XQorICAgICAgICAjZGVmaW5lIEFrbzAgc3RhdGVBc0hhbGZMYW5lc1syNl0KKyAgICAgICAgI2RlZmluZSBBa28xIHN0YXRlQXNIYWxmTGFuZXNbMjddCisgICAgICAgICNkZWZpbmUgQWt1MCBzdGF0ZUFzSGFsZkxhbmVzWzI4XQorICAgICAgICAjZGVmaW5lIEFrdTEgc3RhdGVBc0hhbGZMYW5lc1syOV0KKyAgICAgICAgI2RlZmluZSBBbWEwIHN0YXRlQXNIYWxmTGFuZXNbMzBdCisgICAgICAgICNkZWZpbmUgQW1hMSBzdGF0ZUFzSGFsZkxhbmVzWzMxXQorICAgICAgICAjZGVmaW5lIEFtZTAgc3RhdGVBc0hhbGZMYW5lc1szMl0KKyAgICAgICAgI2RlZmluZSBBbWUxIHN0YXRlQXNIYWxmTGFuZXNbMzNdCisgICAgICAgICNkZWZpbmUgQW1pMCBzdGF0ZUFzSGFsZkxhbmVzWzM0XQorICAgICAgICAjZGVmaW5lIEFtaTEgc3RhdGVBc0hhbGZMYW5lc1szNV0KKyAgICAgICAgI2RlZmluZSBBbW8wIHN0YXRlQXNIYWxmTGFuZXNbMzZdCisgICAgICAgICNkZWZpbmUgQW1vMSBzdGF0ZUFzSGFsZkxhbmVzWzM3XQorICAgICAgICAjZGVmaW5lIEFtdTAgc3RhdGVBc0hhbGZMYW5lc1szOF0KKyAgICAgICAgI2RlZmluZSBBbXUxIHN0YXRlQXNIYWxmTGFuZXNbMzldCisgICAgICAgICNkZWZpbmUgQXNhMCBzdGF0ZUFzSGFsZkxhbmVzWzQwXQorICAgICAgICAjZGVmaW5lIEFzYTEgc3RhdGVBc0hhbGZMYW5lc1s0MV0KKyAgICAgICAgI2RlZmluZSBBc2UwIHN0YXRlQXNIYWxmTGFuZXNbNDJdCisgICAgICAgICNkZWZpbmUgQXNlMSBzdGF0ZUFzSGFsZkxhbmVzWzQzXQorICAgICAgICAjZGVmaW5lIEFzaTAgc3RhdGVBc0hhbGZMYW5lc1s0NF0KKyAgICAgICAgI2RlZmluZSBBc2kxIHN0YXRlQXNIYWxmTGFuZXNbNDVdCisgICAgICAgICNkZWZpbmUgQXNvMCBzdGF0ZUFzSGFsZkxhbmVzWzQ2XQorICAgICAgICAjZGVmaW5lIEFzbzEgc3RhdGVBc0hhbGZMYW5lc1s0N10KKyAgICAgICAgI2RlZmluZSBBc3UwIHN0YXRlQXNIYWxmTGFuZXNbNDhdCisgICAgICAgICNkZWZpbmUgQXN1MSBzdGF0ZUFzSGFsZkxhbmVzWzQ5XQorCisgICAgICAgIGRvCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIC0tLSBDb2RlIGZvciA0IHJvdW5kcyAqLworCisgICAgICAgICAgICAvKiAtLS0gdXNpbmcgZmFjdG9yIDIgaW50ZXJsZWF2aW5nLCA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDMyLWJpdCB3b3JkcyAqLworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMCgpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2UwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFraTFeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1vMV5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc3UwXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWdlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnZTFeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtpMF5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbW8wXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzdTFeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWthMV5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtZTFeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYm8wXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQWthMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWthMF5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNpMF5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYm8xXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNhMF5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFiZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2kwXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMV5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbXUwXkR1MCksIDQpOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNhMV5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFiZTBeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnaTFeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28wXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtdTFeRHUxKSwgNCk7CisgICAgICAgICAgICBBc2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2EwXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrZTBeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkxXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNvMF5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYnUxXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnYTFeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtlMV5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTBeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc28xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFidTBeRHUwKSwgMTMpOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1hMV5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJpMF5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ28xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrdTFeRHUxKSwgMjApOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1hMF5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ28wXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrdTBeRHUwKSwgMTkpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgS2VjY2FrQXRvRF9yb3VuZDEoKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMF5EYTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1lMV5EZTApLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2kxXkRpMSksIDIyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFzbzFeRG8xKSwgMTEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWt1MV5EdTApLCA3KTsKKyAgICAgICAgICAgIEFiYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMCBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCYSA9IChBYmExXkRhMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWUwXkRlMSksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFnaTBeRGkwKSwgMjEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNvMF5EbzApLCAxMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa3UwXkR1MSksIDcpOworICAgICAgICAgICAgQWJhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmExIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzYTFeRGExKSwgMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2UxXkRlMSksIDIzKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFiaTFeRGkxKSwgMzEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1vMV5EbzApLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UwXkR1MCksIDEwKTsKKyAgICAgICAgICAgIEFzYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzYTBeRGEwKSwgMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2UwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFiaTBeRGkwKSwgMzApOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1vMF5EbzEpLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UxXkR1MSksIDEwKTsKKyAgICAgICAgICAgIEFzYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtYTFeRGEwKSwgOSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNpMV5EaTApLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8xKSwgMTMpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJ1MV5EdTApLCA0KTsKKyAgICAgICAgICAgIEFtYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWdlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBc2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtYTBeRGExKSwgOSk7CisgICAgICAgICAgICBCYSA9IChBZ2UwXkRlMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc2kwXkRpMSksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMV5EbzApLCAxMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYnUwXkR1MSksIDQpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQWthMV5EYTApLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYmUxXkRlMCksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTEpLCA4KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFnbzFeRG8wKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXN1MV5EdTEpLCAxNCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2EwXkRhMSksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiZTBeRGUxKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkxXkRpMCksIDcpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdvMF5EbzEpLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc3UwXkR1MCksIDEzKTsKKyAgICAgICAgICAgIEFrYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFnbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnYTFeRGExKSwgMjEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMF5EZTApLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFraTFeRGkwKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJvMV5EbzEpLCAyOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbXUxXkR1MSksIDIwKTsKKyAgICAgICAgICAgIEFnYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnYTBeRGEwKSwgMjApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMV5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFraTBeRGkxKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJvMF5EbzApLCAyNyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbXUwXkR1MCksIDE5KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEtlY2Nha0F0b0Rfcm91bmQyKCk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTBeRGEwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFrZTFeRGUwKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQXNpMF5EaTEpLCAyMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBZ28wXkRvMSksIDExKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtdTFeRHUwKSwgNyk7CisgICAgICAgICAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTAgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMV5EYTEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWtlMF5EZTEpLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBc2kxXkRpMCksIDIxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnbzFeRG8wKSwgMTApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW11MF5EdTEpLCA3KTsKKyAgICAgICAgICAgIEFiYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMSBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFrZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWEwXkRhMSksIDIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJlMF5EZTEpLCAyMyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzbzFeRG8wKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MF5EdTApLCAxMCk7CisgICAgICAgICAgICBBbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWExXkRhMCksIDEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJlMV5EZTApLCAyMik7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2kxXkRpMCksIDMwKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzbzBeRG8xKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MV5EdTEpLCAxMCk7CisgICAgICAgICAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2ExXkRhMCksIDkpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1lMF5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiaTFeRGkwKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMSksIDEzKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFzdTFeRHUwKSwgNCk7CisgICAgICAgICAgICBBZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2EwXkRhMSksIDkpOworICAgICAgICAgICAgQmEgPSAoQW1lMV5EZTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJpMF5EaTEpLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8wKSwgMTIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXN1MF5EdTEpLCA0KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzYTFeRGEwKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdlMV5EZTApLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkxKSwgOCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBYm8xXkRvMCksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFrdTBeRHUxKSwgMTQpOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNhMF5EYTEpLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2UwXkRlMSksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTApLCA3KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFibzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWt1MV5EdTApLCAxMyk7CisgICAgICAgICAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2EwXkRhMSksIDIxKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTBeRGUwKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2kxXkRpMCksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtbzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJ1MF5EdTEpLCAyMCk7CisgICAgICAgICAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2ExXkRhMCksIDIwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtbzFeRG8wKSwgMjcpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJ1MV5EdTApLCAxOSk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMygpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYmUwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiaTBeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJvMF5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBYnUwXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiZTFeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJpMV5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYm8xXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFidTFeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBYmUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdhMF5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnZTBeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdpMF5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ28wXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdhMV5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnZTFeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdpMV5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ28xXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQWthMF5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFrZTBeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2kwXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMF5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa3UwXkR1MCksIDQpOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQWthMV5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFrZTFeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFraTFeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrdTFeRHUxKSwgNCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWEwXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtZTBeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkwXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW1vMF5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbXUwXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFtYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtYTFeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQW1lMV5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBbW8xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFtdTFeRHUwKSwgMTMpOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNhMF5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNpMF5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc28wXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzdTBeRHUxKSwgMjApOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNhMV5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc28xXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzdTFeRHUwKSwgMTkpOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoICpwUm91bmRDb25zdGFudHMgIT0gMHhGRiApOworCisgICAgICAgICN1bmRlZiBBYmEwCisgICAgICAgICN1bmRlZiBBYmExCisgICAgICAgICN1bmRlZiBBYmUwCisgICAgICAgICN1bmRlZiBBYmUxCisgICAgICAgICN1bmRlZiBBYmkwCisgICAgICAgICN1bmRlZiBBYmkxCisgICAgICAgICN1bmRlZiBBYm8wCisgICAgICAgICN1bmRlZiBBYm8xCisgICAgICAgICN1bmRlZiBBYnUwCisgICAgICAgICN1bmRlZiBBYnUxCisgICAgICAgICN1bmRlZiBBZ2EwCisgICAgICAgICN1bmRlZiBBZ2ExCisgICAgICAgICN1bmRlZiBBZ2UwCisgICAgICAgICN1bmRlZiBBZ2UxCisgICAgICAgICN1bmRlZiBBZ2kwCisgICAgICAgICN1bmRlZiBBZ2kxCisgICAgICAgICN1bmRlZiBBZ28wCisgICAgICAgICN1bmRlZiBBZ28xCisgICAgICAgICN1bmRlZiBBZ3UwCisgICAgICAgICN1bmRlZiBBZ3UxCisgICAgICAgICN1bmRlZiBBa2EwCisgICAgICAgICN1bmRlZiBBa2ExCisgICAgICAgICN1bmRlZiBBa2UwCisgICAgICAgICN1bmRlZiBBa2UxCisgICAgICAgICN1bmRlZiBBa2kwCisgICAgICAgICN1bmRlZiBBa2kxCisgICAgICAgICN1bmRlZiBBa28wCisgICAgICAgICN1bmRlZiBBa28xCisgICAgICAgICN1bmRlZiBBa3UwCisgICAgICAgICN1bmRlZiBBa3UxCisgICAgICAgICN1bmRlZiBBbWEwCisgICAgICAgICN1bmRlZiBBbWExCisgICAgICAgICN1bmRlZiBBbWUwCisgICAgICAgICN1bmRlZiBBbWUxCisgICAgICAgICN1bmRlZiBBbWkwCisgICAgICAgICN1bmRlZiBBbWkxCisgICAgICAgICN1bmRlZiBBbW8wCisgICAgICAgICN1bmRlZiBBbW8xCisgICAgICAgICN1bmRlZiBBbXUwCisgICAgICAgICN1bmRlZiBBbXUxCisgICAgICAgICN1bmRlZiBBc2EwCisgICAgICAgICN1bmRlZiBBc2ExCisgICAgICAgICN1bmRlZiBBc2UwCisgICAgICAgICN1bmRlZiBBc2UxCisgICAgICAgICN1bmRlZiBBc2kwCisgICAgICAgICN1bmRlZiBBc2kxCisgICAgICAgICN1bmRlZiBBc28wCisgICAgICAgICN1bmRlZiBBc28xCisgICAgICAgICN1bmRlZiBBc3UwCisgICAgICAgICN1bmRlZiBBc3UxCisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcyh2b2lkICpzdGF0ZSkKK3sKKyAgICAgS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzKHN0YXRlLCAxMik7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgICBLZWNjYWtQMTYwMF9QZXJtdXRlX05yb3VuZHMoc3RhdGUsIDI0KTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTAxYzY0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oCkBAIC0wLDAgKzEsMyBAQAorI2RlZmluZSBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbl9jb25maWcgImxhbmUgY29tcGxlbWVudGluZywgYWxsIHJvdW5kcyB1bnJvbGxlZCIKKyNkZWZpbmUgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworI2RlZmluZSBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTAwMTBkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LmMKQEAgLTAsMCArMSw0NzQgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKy8qICNpbmNsdWRlICJicmdfZW5kaWFuLmgiICovCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oIgorCisjaWYgTk9UX1BZVEhPTgordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OworLyogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IFVJTlQ2NDsgKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZChLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZykKKyNkZWZpbmUgVXNlQmViaWdva2ltaXNhCisjZW5kaWYKKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIFJPTDY0KGEsIG9mZnNldCkgX3JvdGw2NChhLCBvZmZzZXQpCisjZWxpZiBkZWZpbmVkKEtlY2Nha1AxNjAwX3VzZVNITEQpCisgICAgI2RlZmluZSBST0w2NCh4LE4pICh7IFwKKyAgICByZWdpc3RlciBVSU5UNjQgX19vdXQ7IFwKKyAgICByZWdpc3RlciBVSU5UNjQgX19pbiA9IHg7IFwKKyAgICBfX2FzbV9fICgic2hsZCAlMiwlMCwlMCIgOiAiPXIiKF9fb3V0KSA6ICIwIihfX2luKSwgImkiKE4pKTsgXAorICAgIF9fb3V0OyBcCisgICAgfSkKKyNlbHNlCisjZGVmaW5lIFJPTDY0KGEsIG9mZnNldCkgKCgoKFVJTlQ2NClhKSA8PCBvZmZzZXQpIF4gKCgoVUlOVDY0KWEpID4+ICg2NC1vZmZzZXQpKSkKKyNlbmRpZgorCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLTY0Lm1hY3JvcyIKKyNpZmRlZiBLZWNjYWtQMTYwMF9mdWxsVW5yb2xsaW5nCisjZGVmaW5lIEZ1bGxVbnJvbGxpbmcKKyNlbHNlCisjZGVmaW5lIFVucm9sbGluZyBLZWNjYWtQMTYwMF91bnJvbGxpbmcKKyNlbmRpZgorI2luY2x1ZGUgIktlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zIgorI2luY2x1ZGUgIlNuUC1SZWxhbmVkLmgiCisKK3N0YXRpYyBjb25zdCBVSU5UNjQgS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1syNF0gPSB7CisgICAgMHgwMDAwMDAwMDAwMDAwMDAxVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwODA4MlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwOGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDAwVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwODA4YlVMTCwKKyAgICAweDAwMDAwMDAwODAwMDAwMDFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDgxVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODAwOVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDAwOGFVTEwsCisgICAgMHgwMDAwMDAwMDAwMDAwMDg4VUxMLAorICAgIDB4MDAwMDAwMDA4MDAwODAwOVVMTCwKKyAgICAweDAwMDAwMDAwODAwMDAwMGFVTEwsCisgICAgMHgwMDAwMDAwMDgwMDA4MDhiVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwMDA4YlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwODlVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDAzVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODAwMlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDAwODBVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDBhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwMDAwYVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwODFVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDgwVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwMVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwMDhVTEwgfTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0luaXRpYWxpemUodm9pZCAqc3RhdGUpCit7CisgICAgbWVtc2V0KHN0YXRlLCAwLCAyMDApOworI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgKChVSU5UNjQqKXN0YXRlKVsgMV0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbIDJdID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWyA4XSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsxMl0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbMTddID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWzIwXSA9IH4oVUlOVDY0KTA7CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgVUlOVDY0IGxhbmU7CisgICAgaWYgKGxlbmd0aCA9PSAwKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICBsYW5lID0gZGF0YVswXTsKKyAgICBlbHNlIHsKKyAgICAgICAgbGFuZSA9IDA7CisgICAgICAgIG1lbWNweSgmbGFuZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisgICAgbGFuZSA8PD0gb2Zmc2V0Kjg7CisjZWxzZQorICAgIFVJTlQ2NCBsYW5lID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICBsYW5lIHw9ICgoVUlOVDY0KWRhdGFbaV0pIDw8ICgoaStvZmZzZXQpKjgpOworI2VuZGlmCisgICAgKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dIF49IGxhbmU7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9BZGRMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIHVuc2lnbmVkIGludCBpID0gMDsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgLyogSWYgZWl0aGVyIHBvaW50ZXIgaXMgbWlzYWxpZ25lZCwgZmFsbCBiYWNrIHRvIGJ5dGUtd2lzZSB4b3IuICovCisKKyAgICBpZiAoKCgoKHVpbnRwdHJfdClzdGF0ZSkgJiA3KSAhPSAwKSB8fCAoKCgodWludHB0cl90KWRhdGEpICYgNykgIT0gMCkpIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBsYW5lQ291bnQgKiA4OyBpKyspIHsKKyAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilzdGF0ZSlbaV0gXj0gZGF0YVtpXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgLyogT3RoZXJ3aXNlLi4uICovCisKKyAgICAgIGZvciggOyAoaSs4KTw9bGFuZUNvdW50OyBpKz04KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsxXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsxXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMl0gXj0gKChVSU5UNjQqKWRhdGEpW2krMl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzNdIF49ICgoVUlOVDY0KilkYXRhKVtpKzNdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs0XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs0XTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krNV0gXj0gKChVSU5UNjQqKWRhdGEpW2krNV07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzZdIF49ICgoVUlOVDY0KilkYXRhKVtpKzZdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs3XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs3XTsKKyAgICAgIH0KKyAgICAgIGZvciggOyAoaSs0KTw9bGFuZUNvdW50OyBpKz00KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsxXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsxXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMl0gXj0gKChVSU5UNjQqKWRhdGEpW2krMl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzNdIF49ICgoVUlOVDY0KilkYXRhKVtpKzNdOworICAgICAgfQorICAgICAgZm9yKCA7IChpKzIpPD1sYW5lQ291bnQ7IGkrPTIpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzFdIF49ICgoVUlOVDY0KilkYXRhKVtpKzFdOworICAgICAgfQorICAgICAgaWYgKGk8bGFuZUNvdW50KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisgICAgVUlOVDggKmN1ckRhdGEgPSBkYXRhOworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyssIGN1ckRhdGErPTgpIHsKKyAgICAgICAgVUlOVDY0IGxhbmUgPSAoVUlOVDY0KWN1ckRhdGFbMF0KKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVsxXSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzJdIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzNdIDw8IDI0KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzRdIDw8MzIpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNV0gPDwgNDApCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNl0gPDwgNDgpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbN10gPDwgNTYpOworICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2ldIF49IGxhbmU7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2lmIChQTEFURk9STV9CWVRFX09SREVSICE9IElTX0xJVFRMRV9FTkRJQU4pCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9IGJ5dGU7CisgICAgbGFuZSA8PD0gKG9mZnNldCU4KSo4OworICAgICgoVUlOVDY0KilzdGF0ZSlbb2Zmc2V0LzhdIF49IGxhbmU7Cit9CisjZW5kaWYKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFNuUF9BZGRCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0FkZExhbmVzLCBLZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZSwgOCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlc0luTGFuZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKSB7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilzdGF0ZSlbbGFuZVBvc2l0aW9uKjgrb2Zmc2V0K2ldID0gfmRhdGFbaV07CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgIHsKKyAgICAgICAgbWVtY3B5KCh1bnNpZ25lZCBjaGFyKilzdGF0ZStsYW5lUG9zaXRpb24qOCtvZmZzZXQsIGRhdGEsIGxlbmd0aCk7CisgICAgfQorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKQorICAgICAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpCisgICAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gPSB+KChjb25zdCBVSU5UNjQqKWRhdGEpW2xhbmVQb3NpdGlvbl07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9ICgoY29uc3QgVUlOVDY0KilkYXRhKVtsYW5lUG9zaXRpb25dOworI2Vsc2UKKyAgICBtZW1jcHkoc3RhdGUsIGRhdGEsIGxhbmVDb3VudCo4KTsKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMsIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxieXRlQ291bnQvODsgbGFuZVBvc2l0aW9uKyspCisgICAgICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9IH4wOworICAgICAgICBlbHNlCisgICAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gPSAwOworICAgIGlmIChieXRlQ291bnQlOCAhPSAwKSB7CisgICAgICAgIGxhbmVQb3NpdGlvbiA9IGJ5dGVDb3VudC84OworICAgICAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpCisgICAgICAgICAgICBtZW1zZXQoKHVuc2lnbmVkIGNoYXIqKXN0YXRlK2xhbmVQb3NpdGlvbio4LCAweEZGLCBieXRlQ291bnQlOCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbXNldCgodW5zaWduZWQgY2hhciopc3RhdGUrbGFuZVBvc2l0aW9uKjgsIDAsIGJ5dGVDb3VudCU4KTsKKyAgICB9CisjZWxzZQorICAgIG1lbXNldChzdGF0ZSwgMCwgYnl0ZUNvdW50KTsKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICAjaWZuZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAjZW5kaWYKKyAgICBVSU5UNjQgKnN0YXRlQXNMYW5lcyA9IChVSU5UNjQqKXN0YXRlOworCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZUFzTGFuZXMpCisgICAgcm91bmRzMjQKKyAgICBjb3B5VG9TdGF0ZShzdGF0ZUFzTGFuZXMsIEEpCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgIGRlY2xhcmVBQkNERQorICAgICNpZm5kZWYgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworICAgIHVuc2lnbmVkIGludCBpOworICAgICNlbmRpZgorICAgIFVJTlQ2NCAqc3RhdGVBc0xhbmVzID0gKFVJTlQ2NCopc3RhdGU7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICByb3VuZHMxMgorICAgIGNvcHlUb1N0YXRlKHN0YXRlQXNMYW5lcywgQSkKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9ICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXTsKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgbGFuZSA9IH5sYW5lOworI2VuZGlmCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICB7CisgICAgICAgIFVJTlQ2NCBsYW5lMVsxXTsKKyAgICAgICAgbGFuZTFbMF0gPSBsYW5lOworICAgICAgICBtZW1jcHkoZGF0YSwgKFVJTlQ4KilsYW5lMStvZmZzZXQsIGxlbmd0aCk7CisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBsYW5lID4+PSBvZmZzZXQqODsKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGRhdGFbaV0gPSBsYW5lICYgMHhGRjsKKyAgICAgICAgbGFuZSA+Pj0gODsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgIT0gSVNfTElUVExFX0VORElBTikKK3ZvaWQgZnJvbVdvcmRUb0J5dGVzKFVJTlQ4ICpieXRlcywgY29uc3QgVUlOVDY0IHdvcmQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPCg2NC84KTsgaSsrKQorICAgICAgICBieXRlc1tpXSA9ICh3b3JkID4+ICg4KmkpKSAmIDB4RkY7Cit9CisjZW5kaWYKKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0TGFuZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBtZW1jcHkoZGF0YSwgc3RhdGUsIGxhbmVDb3VudCo4KTsKKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPGxhbmVDb3VudDsgaSsrKQorICAgICAgICBmcm9tV29yZFRvQnl0ZXMoZGF0YSsoaSo4KSwgKChjb25zdCBVSU5UNjQqKXN0YXRlKVtpXSk7CisjZW5kaWYKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmIChsYW5lQ291bnQgPiAxKSB7CisgICAgICAgICgoVUlOVDY0KilkYXRhKVsgMV0gPSB+KChVSU5UNjQqKWRhdGEpWyAxXTsKKyAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIpIHsKKyAgICAgICAgICAgICgoVUlOVDY0KilkYXRhKVsgMl0gPSB+KChVSU5UNjQqKWRhdGEpWyAyXTsKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiA4KSB7CisgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWyA4XSA9IH4oKFVJTlQ2NCopZGF0YSlbIDhdOworICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxMikgeworICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbMTJdID0gfigoVUlOVDY0KilkYXRhKVsxMl07CisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxNykgeworICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWzE3XSA9IH4oKFVJTlQ2NCopZGF0YSlbMTddOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWzIwXSA9IH4oKFVJTlQ2NCopZGF0YSlbMjBdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcywgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9ICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXTsKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgbGFuZSA9IH5sYW5lOworI2VuZGlmCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICBVSU5UNjQgbGFuZTFbMV07CisgICAgICAgIGxhbmUxWzBdID0gbGFuZTsKKyAgICAgICAgZm9yKGk9MDsgaTxsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIG91dHB1dFtpXSA9IGlucHV0W2ldIF4gKChVSU5UOCopbGFuZTEpW29mZnNldCtpXTsKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBpOworICAgIGxhbmUgPj49IG9mZnNldCo4OworICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgb3V0cHV0W2ldID0gaW5wdXRbaV0gXiAobGFuZSAmIDB4RkYpOworICAgICAgICBsYW5lID4+PSA4OworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworICAgIHVuc2lnbmVkIGludCBpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSICE9IElTX0xJVFRMRV9FTkRJQU4pCisgICAgdW5zaWduZWQgY2hhciB0ZW1wWzhdOworICAgIHVuc2lnbmVkIGludCBqOworI2VuZGlmCisKKyAgICBmb3IoaT0wOyBpPGxhbmVDb3VudDsgaSsrKSB7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICAgICAgKChVSU5UNjQqKW91dHB1dClbaV0gPSAoKFVJTlQ2NCopaW5wdXQpW2ldIF4gKChjb25zdCBVSU5UNjQqKXN0YXRlKVtpXTsKKyNlbHNlCisgICAgICAgIGZyb21Xb3JkVG9CeXRlcyh0ZW1wLCAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldKTsKKyAgICAgICAgZm9yKGo9MDsgajw4OyBqKyspCisgICAgICAgICAgICBvdXRwdXRbaSo4K2pdID0gaW5wdXRbaSo4K2pdIF4gdGVtcFtqXTsKKyNlbmRpZgorICAgIH0KKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmIChsYW5lQ291bnQgPiAxKSB7CisgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWyAxXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsgMV07CisgICAgICAgIGlmIChsYW5lQ291bnQgPiAyKSB7CisgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsgMl0gPSB+KChVSU5UNjQqKW91dHB1dClbIDJdOworICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDgpIHsKKyAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsgOF0gPSB+KChVSU5UNjQqKW91dHB1dClbIDhdOworICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxMikgeworICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsxMl0gPSB+KChVSU5UNjQqKW91dHB1dClbMTJdOworICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMTcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWzE3XSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsxN107CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMjApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsyMF0gPSB+KChVSU5UNjQqKW91dHB1dClbMjBdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZSwgaW5wdXQsIG91dHB1dCwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcywgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzaXplX3QgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pCit7CisgICAgc2l6ZV90IG9yaWdpbmFsRGF0YUJ5dGVMZW4gPSBkYXRhQnl0ZUxlbjsKKyAgICBkZWNsYXJlQUJDREUKKyAgICAjaWZuZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAjZW5kaWYKKyAgICBVSU5UNjQgKnN0YXRlQXNMYW5lcyA9IChVSU5UNjQqKXN0YXRlOworICAgIFVJTlQ2NCAqaW5EYXRhQXNMYW5lcyA9IChVSU5UNjQqKWRhdGE7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICB3aGlsZShkYXRhQnl0ZUxlbiA+PSBsYW5lQ291bnQqOCkgeworICAgICAgICBhZGRJbnB1dChBLCBpbkRhdGFBc0xhbmVzLCBsYW5lQ291bnQpCisgICAgICAgIHJvdW5kczI0CisgICAgICAgIGluRGF0YUFzTGFuZXMgKz0gbGFuZUNvdW50OworICAgICAgICBkYXRhQnl0ZUxlbiAtPSBsYW5lQ291bnQqODsKKyAgICB9CisgICAgY29weVRvU3RhdGUoc3RhdGVBc0xhbmVzLCBBKQorICAgIHJldHVybiBvcmlnaW5hbERhdGFCeXRlTGVuIC0gZGF0YUJ5dGVMZW47Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtdW5yb2xsaW5nLm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNWNlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtdW5yb2xsaW5nLm1hY3JvcwpAQCAtMCwwICsxLDE4NSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmIChkZWZpbmVkKEZ1bGxVbnJvbGxpbmcpKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA0LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDUsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggNiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA3LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDgsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggOSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGEoMjMsIEUsIEEpIFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGEoMjMsIEUsIEEpIFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAxMikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9MTIpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyAzLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDQsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA2LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDcsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgOCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA5LCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMTAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxMSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDYpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTYpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs0LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKz02KSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSszLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzUsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSA0KQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz00KSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSszLCBFLCBBKSBcCisgICAgfSBcCisKKyNkZWZpbmUgcm91bmRzMTIgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MTI7IGk8MjQ7IGkrPTQpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAzKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz0zKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9MykgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsyLCBBLCBFKSBcCisgICAgICAgIGNvcHlTdGF0ZVZhcmlhYmxlcyhBLCBFKSBcCisgICAgfSBcCisKKyNlbGlmIChVbnJvbGxpbmcgPT0gMikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9MikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9MikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAxKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKyspIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSsrKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIGNvcHlTdGF0ZVZhcmlhYmxlcyhBLCBFKSBcCisgICAgfSBcCisKKyNlbHNlCisjZXJyb3IgIlVucm9sbGluZyBpcyBub3QgY29ycmVjdGx5IHNwZWNpZmllZCEiCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkYjczMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5jCkBAIC0wLDAgKzEsOTIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaCIKKworI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICNpbmNsdWRlICJkaXNwbGF5SW50ZXJtZWRpYXRlVmFsdWVzLmgiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMjAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtMjAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGgyMDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQMjAwCisgICAgI2RlZmluZSBTblBfd2lkdGggMjAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQMjAwX1Blcm11dGVfMThyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGMjAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0YyMDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQNDAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtNDAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGg0MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQNDAwCisgICAgI2RlZmluZSBTblBfd2lkdGggNDAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQNDAwX1Blcm11dGVfMjByb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGNDAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0Y0MDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQODAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtODAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGg4MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQODAwCisgICAgI2RlZmluZSBTblBfd2lkdGggODAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQODAwX1Blcm11dGVfMjJyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGODAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0Y4MDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMTYwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDE2MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQMTYwMAorICAgICNkZWZpbmUgU25QX3dpZHRoIDE2MDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGMTYwMF9GYXN0TG9vcF9zdXBwb3J0ZWQpCisgICAgICAgICNkZWZpbmUgU25QX0Zhc3RMb29wX0Fic29yYiBLZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjRiYWRjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpZm5kZWYgX0tlY2Nha1Nwb25nZV9oXworI2RlZmluZSBfS2VjY2FrU3BvbmdlX2hfCisKKy8qKiBHZW5lcmFsIGluZm9ybWF0aW9uCisgICoKKyAgKiBUaGUgZm9sbG93aW5nIHR5cGUgYW5kIGZ1bmN0aW9ucyBhcmUgbm90IGFjdHVhbGx5IGltcGxlbWVudGVkLiBUaGVpcgorICAqIGRvY3VtZW50YXRpb24gaXMgZ2VuZXJpYywgd2l0aCB0aGUgcHJlZml4IFByZWZpeCByZXBsYWNlZCBieQorICAqIC0gS2VjY2FrV2lkdGgyMDAgZm9yIGEgc3BvbmdlIGZ1bmN0aW9uIGJhc2VkIG9uIEtlY2Nhay1mWzIwMF0KKyAgKiAtIEtlY2Nha1dpZHRoNDAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZls0MDBdCisgICogLSBLZWNjYWtXaWR0aDgwMCBmb3IgYSBzcG9uZ2UgZnVuY3Rpb24gYmFzZWQgb24gS2VjY2FrLWZbODAwXQorICAqIC0gS2VjY2FrV2lkdGgxNjAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZlsxNjAwXQorICAqCisgICogSW4gYWxsIHRoZXNlIGZ1bmN0aW9ucywgdGhlIHJhdGUgYW5kIGNhcGFjaXR5IG11c3Qgc3VtIHRvIHRoZSB3aWR0aCBvZiB0aGUKKyAgKiBjaG9zZW4gcGVybXV0YXRpb24uIEZvciBpbnN0YW5jZSwgdG8gdXNlIHRoZSBzcG9uZ2UgZnVuY3Rpb24KKyAgKiBLZWNjYWtbcj0xMzQ0LCBjPTI1Nl0sIG9uZSBtdXN0IHVzZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlKCkgb3IgYSBjb21iaW5hdGlvbgorICAqIG9mIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplKCksIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoKSwKKyAgKiBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKSBhbmQKKyAgKiBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgpLgorICAqCisgICogVGhlIFByZWZpeF9TcG9uZ2VJbnN0YW5jZSBjb250YWlucyB0aGUgc3BvbmdlIGluc3RhbmNlIGF0dHJpYnV0ZXMgZm9yIHVzZQorICAqIHdpdGggdGhlIFByZWZpeF9TcG9uZ2UqIGZ1bmN0aW9ucy4KKyAgKiBJdCBnYXRoZXJzIHRoZSBzdGF0ZSBwcm9jZXNzZWQgYnkgdGhlIHBlcm11dGF0aW9uIGFzIHdlbGwgYXMgdGhlIHJhdGUsCisgICogdGhlIHBvc2l0aW9uIG9mIGlucHV0L291dHB1dCBieXRlcyBpbiB0aGUgc3RhdGUgYW5kIHRoZSBwaGFzZQorICAqIChhYnNvcmJpbmcgb3Igc3F1ZWV6aW5nKS4KKyAgKi8KKworI2lmZGVmIERvbnRSZWFsbHlJbmNsdWRlX0RvY3VtZW50YXRpb25Pbmx5CisvKiogRnVuY3Rpb24gdG8gZXZhbHVhdGUgdGhlIHNwb25nZSBmdW5jdGlvbiBLZWNjYWtbciwgY10gaW4gYSBzaW5nbGUgY2FsbC4KKyAgKiBAcGFyYW0gIHJhdGUgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgcmF0ZSByLgorICAqIEBwYXJhbSAgY2FwYWNpdHkgICAgVGhlIHZhbHVlIG9mIHRoZSBjYXBhY2l0eSBjLgorICAqIEBwYXJhbSAgaW5wdXQgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IG1lc3NhZ2UgKGJlZm9yZSB0aGUgc3VmZml4KS4KKyAgKiBAcGFyYW0gIGlucHV0Qnl0ZUxlbiAgICBUaGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBtZXNzYWdlIGluIGJ5dGVzLgorICAqIEBwYXJhbSAgc3VmZml4ICAgICAgICAgIEJ5dGUgY29udGFpbmluZyBmcm9tIDAgdG8gNyBzdWZmaXggYml0cworICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbXVzdCBiZSBhYnNvcmJlZCBhZnRlciBAYSBpbnB1dC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSA8aT5uPC9pPiBiaXRzIG11c3QgYmUgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBwb3NpdGlvbnMuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgYml0cyBtdXN0IGJlIGRlbGltaXRlZCB3aXRoIGEgYml0IDEgYXQgcG9zaXRpb24gPGk+bjwvaT4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAoY291bnRpbmcgZnJvbSAwPUxTQiB0byA3PU1TQikgYW5kIGZvbGxvd2VkIGJ5IGJpdHMgMAorICAqICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gcG9zaXRpb24gPGk+bjwvaT4rMSB0byBwb3NpdGlvbiA3LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgbm8gYml0cyBhcmUgdG8gYmUgYWJzb3JiZWQsIHRoZW4gQGEgc3VmZml4IG11c3QgYmUgMHgwMS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgMi1iaXQgc2VxdWVuY2UgMCwwIGlzIHRvIGJlIGFic29yYmVkLCBAYSBzdWZmaXggbXVzdCBiZSAweDA0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSA1LWJpdCBzZXF1ZW5jZSAwLDEsMCwwLDEgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4MzIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDctYml0IHNlcXVlbmNlIDEsMSwwLDEsMCwwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4OEIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLgorICAqIEBwYXJhbSAgb3V0cHV0ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIG91dHB1dCBidWZmZXIuCisgICogQHBhcmFtICBvdXRwdXRCeXRlTGVuICAgVGhlIGRlc2lyZWQgbnVtYmVyIG9mIG91dHB1dCBieXRlcy4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjIGVxdWFsIHRvIHRoZSBzdXBwb3J0ZWQgd2lkdGggb2YgdGhpcyBpbXBsZW1lbnRhdGlvbgorICAqICAgICAgICAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIChvbmUgYnl0ZSkgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcHJlICAgIEBhIHN1ZmZpeCDiiaAgMHgwMAorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlKHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCBzaXplX3QgaW5wdXRCeXRlTGVuLCB1bnNpZ25lZCBjaGFyIHN1ZmZpeCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Qnl0ZUxlbik7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGluaXRpYWxpemUgdGhlIHN0YXRlIG9mIHRoZSBLZWNjYWtbciwgY10gc3BvbmdlIGZ1bmN0aW9uLgorICAqIFRoZSBwaGFzZSBvZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIGlzIHNldCB0byBhYnNvcmJpbmcuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIHRvIGJlIGluaXRpYWxpemVkLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHByZSAgICBPbmUgbXVzdCBoYXZlIHIrYyBlcXVhbCB0byB0aGUgc3VwcG9ydGVkIHdpZHRoIG9mIHRoaXMgaW1wbGVtZW50YXRpb24KKyAgKiAgICAgICAgIGFuZCB0aGUgcmF0ZSBhIG11bHRpcGxlIG9mIDggYml0cyAob25lIGJ5dGUpIGluIHRoaXMgaW1wbGVtZW50YXRpb24uCisgICogQHJldHVybiBaZXJvIGlmIHN1Y2Nlc3NmdWwsIDEgb3RoZXJ3aXNlLgorICAqLworaW50IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKFByZWZpeF9TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHkpOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgYnl0ZXMgZm9yIHRoZSBzcG9uZ2UgZnVuY3Rpb24gdG8gYWJzb3JiLgorICAqIEBwYXJhbSAgc3BvbmdlSW5zdGFuY2UgIFBvaW50ZXIgdG8gdGhlIHNwb25nZSBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBQcmVmaXhfU3BvbmdlSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgZGF0YS4KKyAgKiBAcGFyYW0gIGRhdGFCeXRlTGVuICBUaGUgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHByb3ZpZGVkIGluIHRoZSBpbnB1dCBkYXRhLgorICAqIEBwcmUgICAgVGhlIHNwb25nZSBmdW5jdGlvbiBtdXN0IGJlIGluIHRoZSBhYnNvcmJpbmcgcGhhc2UsCisgICogICAgICAgICBpLmUuLCBQcmVmaXhfU3BvbmdlU3F1ZWV6ZSgpIG9yIFByZWZpeF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cygpCisgICogICAgICAgICBtdXN0IG5vdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZS4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZUFic29yYihQcmVmaXhfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgYml0cyBmb3IgdGhlIHNwb25nZSBmdW5jdGlvbiB0byBhYnNvcmIKKyAgKiBhbmQgdGhlbiB0byBzd2l0Y2ggdG8gdGhlIHNxdWVlemluZyBwaGFzZS4KKyAgKiBAcGFyYW0gIHNwb25nZUluc3RhbmNlICBQb2ludGVyIHRvIHRoZSBzcG9uZ2UgaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgUHJlZml4X1Nwb25nZUluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRlbGltaXRlZERhdGEgICBCeXRlIGNvbnRhaW5pbmcgZnJvbSAwIHRvIDcgdHJhaWxpbmcgYml0cworICAqICAgICAgICAgICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGFic29yYmVkLgorICAqICAgICAgICAgICAgICAgICAgICAgVGhlc2UgPGk+bjwvaT4gYml0cyBtdXN0IGJlIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgcG9zaXRpb25zLgorICAqICAgICAgICAgICAgICAgICAgICAgVGhlc2UgYml0cyBtdXN0IGJlIGRlbGltaXRlZCB3aXRoIGEgYml0IDEgYXQgcG9zaXRpb24gPGk+bjwvaT4KKyAgKiAgICAgICAgICAgICAgICAgICAgIChjb3VudGluZyBmcm9tIDA9TFNCIHRvIDc9TVNCKSBhbmQgZm9sbG93ZWQgYnkgYml0cyAwCisgICogICAgICAgICAgICAgICAgICAgICBmcm9tIHBvc2l0aW9uIDxpPm48L2k+KzEgdG8gcG9zaXRpb24gNy4KKyAgKiAgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiBubyBiaXRzIGFyZSB0byBiZSBhYnNvcmJlZCwgdGhlbiBAYSBkZWxpbWl0ZWREYXRhIG11c3QgYmUgMHgwMS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSAyLWJpdCBzZXF1ZW5jZSAwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIGRlbGltaXRlZERhdGEgbXVzdCBiZSAweDA0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDUtYml0IHNlcXVlbmNlIDAsMSwwLDAsMSBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4MzIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgNy1iaXQgc2VxdWVuY2UgMSwxLDAsMSwwLDAsMCBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4OEIuCisgICogICAgICAgICAgICAgICAgICAgICAuCisgICogQHByZSAgICBUaGUgc3BvbmdlIGZ1bmN0aW9uIG11c3QgYmUgaW4gdGhlIGFic29yYmluZyBwaGFzZSwKKyAgKiAgICAgICAgIGkuZS4sIFByZWZpeF9TcG9uZ2VTcXVlZXplKCkgb3IgUHJlZml4X1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCkKKyAgKiAgICAgICAgIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlLgorICAqIEBwcmUgICAgQGEgZGVsaW1pdGVkRGF0YSDiiaAgMHgwMAorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhKTsKKworLyoqCisgICogRnVuY3Rpb24gdG8gc3F1ZWV6ZSBvdXRwdXQgZGF0YSBmcm9tIHRoZSBzcG9uZ2UgZnVuY3Rpb24uCisgICogSWYgdGhlIHNwb25nZSBmdW5jdGlvbiB3YXMgaW4gdGhlIGFic29yYmluZyBwaGFzZSwgdGhpcyBmdW5jdGlvbgorICAqIHN3aXRjaGVzIGl0IHRvIHRoZSBzcXVlZXppbmcgcGhhc2UKKyAgKiBhcyBpZiBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoc3BvbmdlSW5zdGFuY2UsIDB4MDEpIHdhcyBjYWxsZWQuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKCkuCisgICogQHBhcmFtICBkYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBkYXRhLgorICAqIEBwYXJhbSAgZGF0YUJ5dGVMZW4gVGhlIG51bWJlciBvZiBvdXRwdXQgYnl0ZXMgZGVzaXJlZC4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZVNxdWVlemUoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYWxpZ24uaCIKKworI2RlZmluZSBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShwcmVmaXgsIHNpemUsIGFsaWdubWVudCkgXAorICAgIEFMSUdOKGFsaWdubWVudCkgdHlwZWRlZiBzdHJ1Y3QgcHJlZml4IyNfU3BvbmdlSW5zdGFuY2VTdHJ1Y3QgeyBcCisgICAgICAgIHVuc2lnbmVkIGNoYXIgc3RhdGVbc2l6ZV07IFwKKyAgICAgICAgdW5zaWduZWQgaW50IHJhdGU7IFwKKyAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVJT0luZGV4OyBcCisgICAgICAgIGludCBzcXVlZXppbmc7IFwKKyAgICB9IHByZWZpeCMjX1Nwb25nZUluc3RhbmNlOworCisjZGVmaW5lIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKHByZWZpeCkgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2UodW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHNpemVfdCBpbnB1dEJ5dGVMZW4sIHVuc2lnbmVkIGNoYXIgc3VmZml4LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBvdXRwdXRCeXRlTGVuKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VJbml0aWFsaXplKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSk7IFwKKyAgICBpbnQgcHJlZml4IyNfU3BvbmdlQWJzb3JiKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YSk7IFwKKyAgICBpbnQgcHJlZml4IyNfU3BvbmdlU3F1ZWV6ZShwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbik7CisKKyNpZm5kZWYgS2VjY2FrUDIwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTIwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDIwMCwgS2VjY2FrUDIwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQMjAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoMjAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDQwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTQwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDQwMCwgS2VjY2FrUDQwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQNDAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoNDAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDgwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTgwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDgwMCwgS2VjY2FrUDgwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQODAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoODAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDE2MDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoMTYwMCwgS2VjY2FrUDE2MDBfc3RhdGVTaXplSW5CeXRlcywgS2VjY2FrUDE2MDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGgxNjAwKQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmluYyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEwNzM5ZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5pbmMKQEAgLTAsMCArMSwzMzIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNkZWZpbmUgSk9JTjAoYSwgYikgICAgICAgICAgICAgICAgICAgICBhICMjIGIKKyNkZWZpbmUgSk9JTihhLCBiKSAgICAgICAgICAgICAgICAgICAgICBKT0lOMChhLCBiKQorCisjZGVmaW5lIFNwb25nZSAgICAgICAgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2UpCisjZGVmaW5lIFNwb25nZUluc3RhbmNlICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VJbnN0YW5jZSkKKyNkZWZpbmUgU3BvbmdlSW5pdGlhbGl6ZSAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUluaXRpYWxpemUpCisjZGVmaW5lIFNwb25nZUFic29yYiAgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VBYnNvcmIpCisjZGVmaW5lIFNwb25nZUFic29yYkxhc3RGZXdCaXRzICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cykKKyNkZWZpbmUgU3BvbmdlU3F1ZWV6ZSAgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZVNxdWVlemUpCisKKyNkZWZpbmUgU25QX3N0YXRlU2l6ZUluQnl0ZXMgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlU2l6ZUluQnl0ZXMpCisjZGVmaW5lIFNuUF9zdGF0ZUFsaWdubWVudCAgICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZUFsaWdubWVudCkKKyNkZWZpbmUgU25QX1N0YXRpY0luaXRpYWxpemUgICAgICAgICAgICBKT0lOKFNuUCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplKQorI2RlZmluZSBTblBfQWRkQnl0ZSAgICAgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkQnl0ZSkKKyNkZWZpbmUgU25QX0FkZEJ5dGVzICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGVzKQorI2RlZmluZSBTblBfRXh0cmFjdEJ5dGVzICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfRXh0cmFjdEJ5dGVzKQorCitpbnQgU3BvbmdlKHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCBzaXplX3QgaW5wdXRCeXRlTGVuLCB1bnNpZ25lZCBjaGFyIHN1ZmZpeCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Qnl0ZUxlbikKK3sKKyAgICBBTElHTihTblBfc3RhdGVBbGlnbm1lbnQpIHVuc2lnbmVkIGNoYXIgc3RhdGVbU25QX3N0YXRlU2l6ZUluQnl0ZXNdOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3VySW5wdXQgPSBpbnB1dDsKKyAgICB1bnNpZ25lZCBjaGFyICpjdXJPdXRwdXQgPSBvdXRwdXQ7CisgICAgdW5zaWduZWQgaW50IHJhdGVJbkJ5dGVzID0gcmF0ZS84OworCisgICAgaWYgKHJhdGUrY2FwYWNpdHkgIT0gU25QX3dpZHRoKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoKHJhdGUgPD0gMCkgfHwgKHJhdGUgPiBTblBfd2lkdGgpIHx8ICgocmF0ZSAlIDgpICE9IDApKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoc3VmZml4ID09IDApCisgICAgICAgIHJldHVybiAxOworCisgICAgLyogSW5pdGlhbGl6ZSB0aGUgc3RhdGUgKi8KKworICAgIFNuUF9TdGF0aWNJbml0aWFsaXplKCk7CisgICAgU25QX0luaXRpYWxpemUoc3RhdGUpOworCisgICAgLyogRmlyc3QsIGFic29yYiB3aG9sZSBibG9ja3MgKi8KKworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICBpZiAoKChyYXRlSW5CeXRlcyAlIChTblBfd2lkdGgvMjAwKSkgPT0gMCkgJiYgKGlucHV0Qnl0ZUxlbiA+PSByYXRlSW5CeXRlcykpIHsKKyAgICAgICAgLyogZmFzdCBsYW5lOiB3aG9sZSBsYW5lIHJhdGUgKi8KKworICAgICAgICBzaXplX3QgajsKKyAgICAgICAgaiA9IFNuUF9GYXN0TG9vcF9BYnNvcmIoc3RhdGUsIHJhdGVJbkJ5dGVzLyhTblBfd2lkdGgvMjAwKSwgY3VySW5wdXQsIGlucHV0Qnl0ZUxlbik7CisgICAgICAgIGN1cklucHV0ICs9IGo7CisgICAgICAgIGlucHV0Qnl0ZUxlbiAtPSBqOworICAgIH0KKyNlbmRpZgorICAgIHdoaWxlKGlucHV0Qnl0ZUxlbiA+PSAoc2l6ZV90KXJhdGVJbkJ5dGVzKSB7CisgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCIsIGN1cklucHV0LCByYXRlSW5CeXRlcyk7CisgICAgICAgICNlbmRpZgorICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGN1cklucHV0LCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAgICAgY3VySW5wdXQgKz0gcmF0ZUluQnl0ZXM7CisgICAgICAgIGlucHV0Qnl0ZUxlbiAtPSByYXRlSW5CeXRlczsKKyAgICB9CisKKyAgICAvKiBUaGVuLCBhYnNvcmIgd2hhdCByZW1haW5zICovCisKKyAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KWlucHV0Qnl0ZUxlbjsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCAocGFydCkiLCBjdXJJbnB1dCwgcGFydGlhbEJsb2NrKTsKKyAgICAjZW5kaWYKKyAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGN1cklucHV0LCAwLCBwYXJ0aWFsQmxvY2spOworCisgICAgLyogRmluYWxseSwgYWJzb3JiIHRoZSBzdWZmaXggKi8KKworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YTFbMV07CisgICAgICAgIGRlbGltaXRlZERhdGExWzBdID0gc3VmZml4OworICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChsYXN0IGZldyBiaXRzICsgZmlyc3QgYml0IG9mIHBhZGRpbmcpIiwgZGVsaW1pdGVkRGF0YTEsIDEpOworICAgIH0KKyAgICAjZW5kaWYKKyAgICAvKiBMYXN0IGZldyBiaXRzLCB3aG9zZSBkZWxpbWl0ZXIgY29pbmNpZGVzIHdpdGggZmlyc3QgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIFNuUF9BZGRCeXRlKHN0YXRlLCBzdWZmaXgsIHBhcnRpYWxCbG9jayk7CisgICAgLyogSWYgdGhlIGZpcnN0IGJpdCBvZiBwYWRkaW5nIGlzIGF0IHBvc2l0aW9uIHJhdGUtMSwgd2UgbmVlZCBhIHdob2xlIG5ldyBibG9jayBmb3IgdGhlIHNlY29uZCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgaWYgKChzdWZmaXggPj0gMHg4MCkgJiYgKHBhcnRpYWxCbG9jayA9PSAocmF0ZUluQnl0ZXMtMSkpKQorICAgICAgICBTblBfUGVybXV0ZShzdGF0ZSk7CisgICAgLyogU2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShzdGF0ZSwgMHg4MCwgcmF0ZUluQnl0ZXMtMSk7CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBibG9ja1tTblBfd2lkdGgvOF07CisgICAgICAgIG1lbXNldChibG9jaywgMCwgU25QX3dpZHRoLzgpOworICAgICAgICBibG9ja1tyYXRlSW5CeXRlcy0xXSA9IDB4ODA7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiU2Vjb25kIGJpdCBvZiBwYWRkaW5nIiwgYmxvY2ssIHJhdGVJbkJ5dGVzKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgU25QX1Blcm11dGUoc3RhdGUpOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5VGV4dCgxLCAiLS0tIFN3aXRjaGluZyB0byBzcXVlZXppbmcgcGhhc2UgLS0tIik7CisgICAgI2VuZGlmCisKKyAgICAvKiBGaXJzdCwgb3V0cHV0IHdob2xlIGJsb2NrcyAqLworCisgICAgd2hpbGUob3V0cHV0Qnl0ZUxlbiA+IChzaXplX3QpcmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgY3VyT3V0cHV0LCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIiwgY3VyT3V0cHV0LCByYXRlSW5CeXRlcyk7CisgICAgICAgICNlbmRpZgorICAgICAgICBjdXJPdXRwdXQgKz0gcmF0ZUluQnl0ZXM7CisgICAgICAgIG91dHB1dEJ5dGVMZW4gLT0gcmF0ZUluQnl0ZXM7CisgICAgfQorCisgICAgLyogRmluYWxseSwgb3V0cHV0IHdoYXQgcmVtYWlucyAqLworCisgICAgcGFydGlhbEJsb2NrID0gKHVuc2lnbmVkIGludClvdXRwdXRCeXRlTGVuOworICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGUsIGN1ck91dHB1dCwgMCwgcGFydGlhbEJsb2NrKTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayAocGFydCkiLCBjdXJPdXRwdXQsIHBhcnRpYWxCbG9jayk7CisgICAgI2VuZGlmCisKKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgU3BvbmdlSW5pdGlhbGl6ZShTcG9uZ2VJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHkpCit7CisgICAgaWYgKHJhdGUrY2FwYWNpdHkgIT0gU25QX3dpZHRoKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoKHJhdGUgPD0gMCkgfHwgKHJhdGUgPiBTblBfd2lkdGgpIHx8ICgocmF0ZSAlIDgpICE9IDApKQorICAgICAgICByZXR1cm4gMTsKKyAgICBTblBfU3RhdGljSW5pdGlhbGl6ZSgpOworICAgIFNuUF9Jbml0aWFsaXplKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgaW5zdGFuY2UtPnJhdGUgPSByYXRlOworICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCA9IDA7CisgICAgaW5zdGFuY2UtPnNxdWVlemluZyA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgU3BvbmdlQWJzb3JiKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKQoreworICAgIHNpemVfdCBpLCBqOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3VyRGF0YTsKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworCisgICAgaWYgKGluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIHJldHVybiAxOyAvKiBUb28gbGF0ZSBmb3IgYWRkaXRpb25hbCBpbnB1dCAqLworCisKKyAgICBpID0gMDsKKyAgICBjdXJEYXRhID0gZGF0YTsKKyAgICB3aGlsZShpIDwgZGF0YUJ5dGVMZW4pIHsKKyAgICAgICAgaWYgKChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gMCkgJiYgKGRhdGFCeXRlTGVuID49IChpICsgcmF0ZUluQnl0ZXMpKSkgeworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICAgICAgICAgIC8qIHByb2Nlc3NpbmcgZnVsbCBibG9ja3MgZmlyc3QgKi8KKworICAgICAgICAgICAgaWYgKChyYXRlSW5CeXRlcyAlIChTblBfd2lkdGgvMjAwKSkgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIGZhc3QgbGFuZTogd2hvbGUgbGFuZSByYXRlICovCisKKyAgICAgICAgICAgICAgICBqID0gU25QX0Zhc3RMb29wX0Fic29yYihpbnN0YW5jZS0+c3RhdGUsIHJhdGVJbkJ5dGVzLyhTblBfd2lkdGgvMjAwKSwgY3VyRGF0YSwgZGF0YUJ5dGVMZW4gLSBpKTsKKyAgICAgICAgICAgICAgICBpICs9IGo7CisgICAgICAgICAgICAgICAgY3VyRGF0YSArPSBqOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBmb3Ioaj1kYXRhQnl0ZUxlbi1pOyBqPj1yYXRlSW5CeXRlczsgai09cmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIiwgY3VyRGF0YSwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgU25QX0FkZEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgMCwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICAgICBTblBfUGVybXV0ZShpbnN0YW5jZS0+c3RhdGUpOworICAgICAgICAgICAgICAgICAgICBjdXJEYXRhKz1yYXRlSW5CeXRlczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSA9IGRhdGFCeXRlTGVuIC0gajsKKyNpZmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG5vcm1hbCBsYW5lOiB1c2luZyB0aGUgbWVzc2FnZSBxdWV1ZSAqLworCisgICAgICAgICAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KShkYXRhQnl0ZUxlbiAtIGkpOworICAgICAgICAgICAgaWYgKHBhcnRpYWxCbG9jaytpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPiByYXRlSW5CeXRlcykKKyAgICAgICAgICAgICAgICBwYXJ0aWFsQmxvY2sgPSByYXRlSW5CeXRlcy1pbnN0YW5jZS0+Ynl0ZUlPSW5kZXg7CisgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChwYXJ0KSIsIGN1ckRhdGEsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgIGkgKz0gcGFydGlhbEJsb2NrOworCisgICAgICAgICAgICBTblBfQWRkQnl0ZXMoaW5zdGFuY2UtPnN0YXRlLCBjdXJEYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICBjdXJEYXRhICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCArPSBwYXJ0aWFsQmxvY2s7CisgICAgICAgICAgICBpZiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IHJhdGVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhTcG9uZ2VJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworCisgICAgaWYgKGRlbGltaXRlZERhdGEgPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIHJldHVybiAxOyAvKiBUb28gbGF0ZSBmb3IgYWRkaXRpb25hbCBpbnB1dCAqLworCisKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZERhdGExWzFdOworICAgICAgICBkZWxpbWl0ZWREYXRhMVswXSA9IGRlbGltaXRlZERhdGE7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQgKGxhc3QgZmV3IGJpdHMgKyBmaXJzdCBiaXQgb2YgcGFkZGluZykiLCBkZWxpbWl0ZWREYXRhMSwgMSk7CisgICAgfQorICAgICNlbmRpZgorICAgIC8qIExhc3QgZmV3IGJpdHMsIHdob3NlIGRlbGltaXRlciBjb2luY2lkZXMgd2l0aCBmaXJzdCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgU25QX0FkZEJ5dGUoaW5zdGFuY2UtPnN0YXRlLCBkZWxpbWl0ZWREYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgpOworICAgIC8qIElmIHRoZSBmaXJzdCBiaXQgb2YgcGFkZGluZyBpcyBhdCBwb3NpdGlvbiByYXRlLTEsIHdlIG5lZWQgYSB3aG9sZSBuZXcgYmxvY2sgZm9yIHRoZSBzZWNvbmQgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIGlmICgoZGVsaW1pdGVkRGF0YSA+PSAweDgwKSAmJiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IChyYXRlSW5CeXRlcy0xKSkpCisgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgLyogU2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShpbnN0YW5jZS0+c3RhdGUsIDB4ODAsIHJhdGVJbkJ5dGVzLTEpOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYmxvY2tbU25QX3dpZHRoLzhdOworICAgICAgICBtZW1zZXQoYmxvY2ssIDAsIFNuUF93aWR0aC84KTsKKyAgICAgICAgYmxvY2tbcmF0ZUluQnl0ZXMtMV0gPSAweDgwOworICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNlY29uZCBiaXQgb2YgcGFkZGluZyIsIGJsb2NrLCByYXRlSW5CeXRlcyk7CisgICAgfQorICAgICNlbmRpZgorICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICBpbnN0YW5jZS0+c3F1ZWV6aW5nID0gMTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheVRleHQoMSwgIi0tLSBTd2l0Y2hpbmcgdG8gc3F1ZWV6aW5nIHBoYXNlIC0tLSIpOworICAgICNlbmRpZgorICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VTcXVlZXplKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKQoreworICAgIHNpemVfdCBpLCBqOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgdW5zaWduZWQgaW50IHJhdGVJbkJ5dGVzID0gaW5zdGFuY2UtPnJhdGUvODsKKyAgICB1bnNpZ25lZCBjaGFyICpjdXJEYXRhOworCisgICAgaWYgKCFpbnN0YW5jZS0+c3F1ZWV6aW5nKQorICAgICAgICBTcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhpbnN0YW5jZSwgMHgwMSk7CisKKyAgICBpID0gMDsKKyAgICBjdXJEYXRhID0gZGF0YTsKKyAgICB3aGlsZShpIDwgZGF0YUJ5dGVMZW4pIHsKKyAgICAgICAgaWYgKChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gcmF0ZUluQnl0ZXMpICYmIChkYXRhQnl0ZUxlbiA+PSAoaSArIHJhdGVJbkJ5dGVzKSkpIHsKKyAgICAgICAgICAgIGZvcihqPWRhdGFCeXRlTGVuLWk7IGo+PXJhdGVJbkJ5dGVzOyBqLT1yYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhpbnN0YW5jZS0+c3RhdGUsIGN1ckRhdGEsIDAsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayIsIGN1ckRhdGEsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBjdXJEYXRhKz1yYXRlSW5CeXRlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgPSBkYXRhQnl0ZUxlbiAtIGo7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBub3JtYWwgbGFuZTogdXNpbmcgdGhlIG1lc3NhZ2UgcXVldWUgKi8KKworICAgICAgICAgICAgaWYgKGluc3RhbmNlLT5ieXRlSU9JbmRleCA9PSByYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpKGRhdGFCeXRlTGVuIC0gaSk7CisgICAgICAgICAgICBpZiAocGFydGlhbEJsb2NrK2luc3RhbmNlLT5ieXRlSU9JbmRleCA+IHJhdGVJbkJ5dGVzKQorICAgICAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9IHJhdGVJbkJ5dGVzLWluc3RhbmNlLT5ieXRlSU9JbmRleDsKKyAgICAgICAgICAgIGkgKz0gcGFydGlhbEJsb2NrOworCisgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgaW5zdGFuY2UtPmJ5dGVJT0luZGV4LCBwYXJ0aWFsQmxvY2spOworICAgICAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayAocGFydCkiLCBjdXJEYXRhLCBwYXJ0aWFsQmxvY2spOworICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICBjdXJEYXRhICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCArPSBwYXJ0aWFsQmxvY2s7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI3VuZGVmIFNwb25nZQorI3VuZGVmIFNwb25nZUluc3RhbmNlCisjdW5kZWYgU3BvbmdlSW5pdGlhbGl6ZQorI3VuZGVmIFNwb25nZUFic29yYgorI3VuZGVmIFNwb25nZUFic29yYkxhc3RGZXdCaXRzCisjdW5kZWYgU3BvbmdlU3F1ZWV6ZQorI3VuZGVmIFNuUF9zdGF0ZVNpemVJbkJ5dGVzCisjdW5kZWYgU25QX3N0YXRlQWxpZ25tZW50CisjdW5kZWYgU25QX1N0YXRpY0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZQorI3VuZGVmIFNuUF9BZGRCeXRlCisjdW5kZWYgU25QX0FkZEJ5dGVzCisjdW5kZWYgU25QX0V4dHJhY3RCeXRlcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvUGxTblAtRmFsbGJhY2suaW5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvUGxTblAtRmFsbGJhY2suaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOTExOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9QbFNuUC1GYWxsYmFjay5pbmMKQEAgLTAsMCArMSwyNTcgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKy8qIGV4cGVjdCBQbFNuUF9iYXNlUGFyYWxsZWxpc20sIFBsU25QX3RhcmdldFBhcmFsbGVsaXNtICovCisKKy8qIGV4cGVjdCBTblBfc3RhdGVTaXplSW5CeXRlcywgU25QX3N0YXRlQWxpZ25tZW50ICovCisKKy8qIGV4cGVjdCBwcmVmaXggKi8KKworLyogZXhwZWN0IFNuUF8qICovCisKKworI2RlZmluZSBKT0lOMChhLCBiKSAgICAgICAgICAgICAgICAgICAgIGEgIyMgYgorI2RlZmluZSBKT0lOKGEsIGIpICAgICAgICAgICAgICAgICAgICAgIEpPSU4wKGEsIGIpCisKKyNkZWZpbmUgUGxTblBfU3RhdGljSW5pdGlhbGl6ZSAgICAgICAgICBKT0lOKHByZWZpeCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFBsU25QX0luaXRpYWxpemVBbGwgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9Jbml0aWFsaXplQWxsKQorI2RlZmluZSBQbFNuUF9BZGRCeXRlICAgICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkQnl0ZSkKKyNkZWZpbmUgUGxTblBfQWRkQnl0ZXMgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0FkZEJ5dGVzKQorI2RlZmluZSBQbFNuUF9BZGRMYW5lc0FsbCAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkTGFuZXNBbGwpCisjZGVmaW5lIFBsU25QX092ZXJ3cml0ZUJ5dGVzICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9PdmVyd3JpdGVCeXRlcykKKyNkZWZpbmUgUGxTblBfT3ZlcndyaXRlTGFuZXNBbGwgICAgICAgICBKT0lOKHByZWZpeCwgX092ZXJ3cml0ZUxhbmVzQWxsKQorI2RlZmluZSBQbFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzICAgICAgIEpPSU4ocHJlZml4LCBfT3ZlcndyaXRlV2l0aFplcm9lcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEJ5dGVzICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RCeXRlcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdExhbmVzQWxsICAgICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RMYW5lc0FsbCkKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEFuZEFkZEJ5dGVzICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RBbmRBZGRCeXRlcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RBbmRBZGRMYW5lc0FsbCkKKworI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZVNpemVJbkJ5dGVzICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZVNpemVJbkJ5dGVzKQorICAgICNkZWZpbmUgU25QX3N0YXRlQWxpZ25tZW50ICAgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlQWxpZ25tZW50KQorI2Vsc2UKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZVNpemVJbkJ5dGVzICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZXNTaXplSW5CeXRlcykKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZUFsaWdubWVudCAgICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZXNBbGlnbm1lbnQpCisjZW5kaWYKKyNkZWZpbmUgUGxTblBfZmFjdG9yICgoUGxTblBfdGFyZ2V0UGFyYWxsZWxpc20pLyhQbFNuUF9iYXNlUGFyYWxsZWxpc20pKQorI2RlZmluZSBTblBfc3RhdGVPZmZzZXQgKCgoU25QX3N0YXRlU2l6ZUluQnl0ZXMrKFNuUF9zdGF0ZUFsaWdubWVudC0xKSkvU25QX3N0YXRlQWxpZ25tZW50KSpTblBfc3RhdGVBbGlnbm1lbnQpCisjZGVmaW5lIHN0YXRlV2l0aEluZGV4KGkpICgodW5zaWduZWQgY2hhciAqKXN0YXRlcysoKGkpKlNuUF9zdGF0ZU9mZnNldCkpCisKKyNkZWZpbmUgU25QX1N0YXRpY0luaXRpYWxpemUgICAgICAgICAgICBKT0lOKFNuUCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplKQorI2RlZmluZSBTblBfSW5pdGlhbGl6ZUFsbCAgICAgICAgICAgICAgIEpPSU4oU25QLCBfSW5pdGlhbGl6ZUFsbCkKKyNkZWZpbmUgU25QX0FkZEJ5dGUgICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGUpCisjZGVmaW5lIFNuUF9BZGRCeXRlcyAgICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9BZGRCeXRlcykKKyNkZWZpbmUgU25QX0FkZExhbmVzQWxsICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZExhbmVzQWxsKQorI2RlZmluZSBTblBfT3ZlcndyaXRlQnl0ZXMgICAgICAgICAgICAgIEpPSU4oU25QLCBfT3ZlcndyaXRlQnl0ZXMpCisjZGVmaW5lIFNuUF9PdmVyd3JpdGVMYW5lc0FsbCAgICAgICAgICAgSk9JTihTblAsIF9PdmVyd3JpdGVMYW5lc0FsbCkKKyNkZWZpbmUgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMgICAgICAgICBKT0lOKFNuUCwgX092ZXJ3cml0ZVdpdGhaZXJvZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0Qnl0ZXMgICAgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0Qnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0TGFuZXNBbGwgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0TGFuZXNBbGwpCisjZGVmaW5lIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0QW5kQWRkQnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwgICAgICAgSk9JTihTblAsIF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwpCisKK3ZvaWQgUGxTblBfU3RhdGljSW5pdGlhbGl6ZSggdm9pZCApCit7CisgICAgU25QX1N0YXRpY0luaXRpYWxpemUoKTsKK30KKwordm9pZCBQbFNuUF9Jbml0aWFsaXplQWxsKHZvaWQgKnN0YXRlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspCisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0luaXRpYWxpemUoc3RhdGVXaXRoSW5kZXgoaSkpOworICAgICNlbHNlCisgICAgICAgIFNuUF9Jbml0aWFsaXplQWxsKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9BZGRCeXRlKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfQWRkQnl0ZShzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgYnl0ZSwgb2Zmc2V0KTsKKyAgICAjZWxzZQorICAgICAgICBTblBfQWRkQnl0ZShzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBieXRlLCBvZmZzZXQpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0FkZEJ5dGVzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9BZGRMYW5lc0FsbCh2b2lkICpzdGF0ZXMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIHVuc2lnbmVkIGludCBsYW5lT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykgeworICAgICAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9BZGRMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gUGxTblBfYmFzZVBhcmFsbGVsaXNtKmxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzOworICAgIH0KK30KKwordm9pZCBQbFNuUF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbHNlCisgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfT3ZlcndyaXRlTGFuZXNBbGwodm9pZCAqc3RhdGVzLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgMCwgbGFuZUNvdW50KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfT3ZlcndyaXRlTGFuZXNBbGwoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIGxhbmVDb3VudCwgbGFuZU9mZnNldCk7CisgICAgICAgICNlbmRpZgorICAgICAgICBkYXRhICs9IFBsU25QX2Jhc2VQYXJhbGxlbGlzbSpsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlczsKKyAgICB9Cit9CisKK3ZvaWQgUGxTblBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCB1bnNpZ25lZCBpbnQgYnl0ZUNvdW50KQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBieXRlQ291bnQpOworICAgICNlbHNlCisgICAgICAgIFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGJ5dGVDb3VudCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfUGVybXV0ZUFsbCh2b2lkICpzdGF0ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfUGVybXV0ZShzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfUGVybXV0ZUFsbChzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbmRpZgorICAgIH0KK30KKworI2lmIChkZWZpbmVkKFNuUF9QZXJtdXRlXzEycm91bmRzKSB8fCBkZWZpbmVkKFNuUF9QZXJtdXRlQWxsXzEycm91bmRzKSkKK3ZvaWQgUGxTblBfUGVybXV0ZUFsbF8xMnJvdW5kcyh2b2lkICpzdGF0ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfUGVybXV0ZV8xMnJvdW5kcyhzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfUGVybXV0ZUFsbF8xMnJvdW5kcyhzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbmRpZgorICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFBsU25QX0V4dHJhY3RCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZWxzZQorICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9FeHRyYWN0TGFuZXNBbGwoY29uc3Qgdm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIDAsIGxhbmVDb3VudCpTblBfbGFuZUxlbmd0aEluQnl0ZXMpOworICAgICAgICAjZWxzZQorICAgICAgICAgICAgU25QX0V4dHJhY3RMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gbGFuZU9mZnNldCpTblBfbGFuZUxlbmd0aEluQnl0ZXMqUGxTblBfYmFzZVBhcmFsbGVsaXNtOworICAgIH0KK30KKwordm9pZCBQbFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXModm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2VJbmRleCwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsKGNvbnN0IHZvaWQgKnN0YXRlcywgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgdW5zaWduZWQgaW50IGxhbmVPZmZzZXQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBpbnB1dCwgb3V0cHV0LCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwoc3RhdGVXaXRoSW5kZXgoaSksIGlucHV0LCBvdXRwdXQsIGxhbmVDb3VudCwgbGFuZU9mZnNldCk7CisgICAgICAgICNlbmRpZgorICAgICAgICBpbnB1dCArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgICAgIG91dHB1dCArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgfQorfQorCisjdW5kZWYgUGxTblBfZmFjdG9yCisjdW5kZWYgU25QX3N0YXRlT2Zmc2V0CisjdW5kZWYgc3RhdGVXaXRoSW5kZXgKKyN1bmRlZiBKT0lOMAorI3VuZGVmIEpPSU4KKyN1bmRlZiBQbFNuUF9TdGF0aWNJbml0aWFsaXplCisjdW5kZWYgUGxTblBfSW5pdGlhbGl6ZUFsbAorI3VuZGVmIFBsU25QX0FkZEJ5dGUKKyN1bmRlZiBQbFNuUF9BZGRCeXRlcworI3VuZGVmIFBsU25QX0FkZExhbmVzQWxsCisjdW5kZWYgUGxTblBfT3ZlcndyaXRlQnl0ZXMKKyN1bmRlZiBQbFNuUF9PdmVyd3JpdGVMYW5lc0FsbAorI3VuZGVmIFBsU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMKKyN1bmRlZiBQbFNuUF9QZXJtdXRlQWxsCisjdW5kZWYgUGxTblBfRXh0cmFjdEJ5dGVzCisjdW5kZWYgUGxTblBfRXh0cmFjdExhbmVzQWxsCisjdW5kZWYgUGxTblBfRXh0cmFjdEFuZEFkZEJ5dGVzCisjdW5kZWYgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsCisjdW5kZWYgU25QX3N0YXRlQWxpZ25tZW50CisjdW5kZWYgU25QX3N0YXRlU2l6ZUluQnl0ZXMKKyN1bmRlZiBQbFNuUF9mYWN0b3IKKyN1bmRlZiBTblBfc3RhdGVPZmZzZXQKKyN1bmRlZiBzdGF0ZVdpdGhJbmRleAorI3VuZGVmIFNuUF9TdGF0aWNJbml0aWFsaXplCisjdW5kZWYgU25QX0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZUFsbAorI3VuZGVmIFNuUF9BZGRCeXRlCisjdW5kZWYgU25QX0FkZEJ5dGVzCisjdW5kZWYgU25QX0FkZExhbmVzQWxsCisjdW5kZWYgU25QX092ZXJ3cml0ZUJ5dGVzCisjdW5kZWYgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMKKyN1bmRlZiBTblBfT3ZlcndyaXRlTGFuZXNBbGwKKyN1bmRlZiBTblBfRXh0cmFjdEJ5dGVzCisjdW5kZWYgU25QX0V4dHJhY3RMYW5lc0FsbAorI3VuZGVmIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyN1bmRlZiBTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9TblAtUmVsYW5lZC5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvU25QLVJlbGFuZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODZlNjM1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvU25QLVJlbGFuZWQuaApAQCAtMCwwICsxLDEzNCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfU25QX1JlbGFuZWRfaF8KKyNkZWZpbmUgX1NuUF9SZWxhbmVkX2hfCisKKyNkZWZpbmUgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX0FkZExhbmVzLCBTblBfQWRkQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfQWRkTGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChkYXRhKSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VyRGF0YSA9IChkYXRhKTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX092ZXJ3cml0ZUxhbmVzLCBTblBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfT3ZlcndyaXRlTGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZShzdGF0ZSwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChkYXRhKSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VyRGF0YSA9IChkYXRhKTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIFNuUF9FeHRyYWN0TGFuZXMsIFNuUF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdExhbmVzKHN0YXRlLCBkYXRhLCAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGRhdGEpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9jdXJEYXRhID0gKGRhdGEpOyBcCisgICAgICAgICAgICB3aGlsZShfc2l6ZUxlZnQgPiAwKSB7IFwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2J5dGVzSW5MYW5lID0gU25QX2xhbmVMZW5ndGhJbkJ5dGVzIC0gX29mZnNldEluTGFuZTsgXAorICAgICAgICAgICAgICAgIGlmIChfYnl0ZXNJbkxhbmUgPiBfc2l6ZUxlZnQpIFwKKyAgICAgICAgICAgICAgICAgICAgX2J5dGVzSW5MYW5lID0gX3NpemVMZWZ0OyBcCisgICAgICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZSwgaW5wdXQsIG91dHB1dCwgb2Zmc2V0LCBsZW5ndGgsIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXMsIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZExhbmVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGlucHV0KSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAob3V0cHV0KSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VySW5wdXQgPSAoaW5wdXQpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpfY3VyT3V0cHV0ID0gKG91dHB1dCk7IFwKKyAgICAgICAgICAgIHdoaWxlKF9zaXplTGVmdCA+IDApIHsgXAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfYnl0ZXNJbkxhbmUgPSBTblBfbGFuZUxlbmd0aEluQnl0ZXMgLSBfb2Zmc2V0SW5MYW5lOyBcCisgICAgICAgICAgICAgICAgaWYgKF9ieXRlc0luTGFuZSA+IF9zaXplTGVmdCkgXAorICAgICAgICAgICAgICAgICAgICBfYnl0ZXNJbkxhbmUgPSBfc2l6ZUxlZnQ7IFwKKyAgICAgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VySW5wdXQsIF9jdXJPdXRwdXQsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VySW5wdXQgKz0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2N1ck91dHB1dCArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvYWxpZ24uaCBiL01vZHVsZXMvX3NoYTMva2NwL2FsaWduLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY1MGZlOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL2FsaWduLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfYWxpZ25faF8KKyNkZWZpbmUgX2FsaWduX2hfCisKKy8qIG9uIE1hYyBPUy1YIGFuZCBwb3NzaWJseSBvdGhlcnMsIEFMSUdOKHgpIGlzIGRlZmluZWQgaW4gcGFyYW0uaCwgYW5kIC1XZXJyb3IgY2hva2VzIG9uIHRoZSByZWRlZi4gKi8KKworI2lmZGVmIEFMSUdOCisjdW5kZWYgQUxJR04KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0dOVUNfXykKKyNkZWZpbmUgQUxJR04oeCkgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoeCkpKQorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgQUxJR04oeCkgX19kZWNsc3BlYyhhbGlnbih4KSkKKyNlbGlmIGRlZmluZWQoX19BUk1DQ19WRVJTSU9OKQorI2RlZmluZSBBTElHTih4KSBfX2FsaWduKHgpCisjZWxzZQorI2RlZmluZSBBTElHTih4KQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9zaGEzbW9kdWxlLmMgYi9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWFhYTFmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9zaGEzbW9kdWxlLmMKQEAgLTAsMCArMSw3NTcgQEAKKy8qIFNIQTMgbW9kdWxlCisgKgorICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHRoZSBTSEEzIGFsZ29yaXRobQorICoKKyAqIFNlZSBiZWxvdyBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGNvZGUgdGhpcyBtb2R1bGUgd2FzCisgKiBiYXNlZCB1cG9uLiBBZGRpdGlvbmFsIHdvcmsgcGVyZm9ybWVkIGJ5OgorICoKKyAqICBBbmRyZXcgS3VjaGxpbmcgKGFta0BhbWsuY2EpCisgKiAgR3JlZyBTdGVpbiAoZ3N0ZWluQGx5cmEub3JnKQorICogIFRyZXZvciBQZXJyaW4gKHRyZXZwQHRyZXZwLm5ldCkKKyAqICBHcmVnb3J5IFAuIFNtaXRoIChncmVnQGtyeXB0by5vcmcpCisgKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgIENocmlzdGlhbiBIZWltZXMgKGNocmlzdGlhbkBweXRob24ub3JnKQorICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorICoKKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKKyNpbmNsdWRlICIuLi9oYXNobGliLmgiCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBLTMgKEtlY2NhaykgYW5kIFNIQUtFCisgKgorICogVGhlIGNvZGUgaXMgYmFzZWQgb24gS2VjY2FrQ29kZVBhY2thZ2UgZnJvbSAyMDE2LTA0LTIzCisgKiBjb21taXQgNjQ3ZjkzMDc5YWZjNGFkYTNkMjM3Mzc0NzdhNmU1MjUxMWNhNDFmZAorICoKKyAqIFRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgYWx0ZXJlZCBpbiB0aGlzIHBvaW50czoKKyAqICAtIEMrKyBjb21tZW50cyBhcmUgY29udmVydGVkIHRvIEFOU0kgQyBjb21tZW50cy4KKyAqICAtIGFsbCBmdW5jdGlvbiBuYW1lcyBhcmUgbWFuZ2xlZAorICogIC0gdHlwZWRlZiBmb3IgVUlOVDY0IGlzIGNvbW1lbnRlZCBvdXQuCisgKiAgLSBicmdfZW5kaWFuLmggaXMgcmVtb3ZlZAorICoKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBfX3NwYXJjCisgIC8qIG9wdDY0IHVzZXMgdW4tYWxpZ25lZCBtZW1vcnkgYWNjZXNzIHRoYXQgY2F1c2VzIGEgQlVTIGVycm9yIHdpdGggbXNnCisgICAqICdpbnZhbGlkIGFkZHJlc3MgYWxpZ25tZW50JyBvbiBTUEFSQy4gKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgMzIKKyNlbGlmIFBZX0JJR19FTkRJQU4KKyAgLyogb3B0NjQgaXMgbm90IHlldCBzdXBwb3J0ZWQgb24gYmlnIGVuZGlhbiBwbGF0Zm9ybXMgKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgMzIKKyNlbGlmIFNJWkVPRl9WT0lEX1AgPT0gOCAmJiBkZWZpbmVkKFBZX1VJTlQ2NF9UKQorICAvKiBvcHQ2NCB3b3JrcyBvbmx5IG9uIGxpdHRsZS1lbmRpYW4gNjRiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgNjQKKyNlbHNlCisgIC8qIG9wdDMyIGlzIHVzZWQgZm9yIHRoZSByZW1haW5pbmcgMzIgYW5kIDY0Yml0IHBsYXRmb3JtcyAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VuZGlmCisKKyNpZiBLZWNjYWtPcHQgPT0gNjQgJiYgZGVmaW5lZChQWV9VSU5UNjRfVCkKKyAgLyogNjRiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgdHlwZWRlZiBQWV9VSU5UNjRfVCBVSU5UNjQ7CisgIHR5cGVkZWYgdW5zaWduZWQgY2hhciBVSU5UODsKKyNlbmRpZgorCisvKiByZXBsYWNlbWVudCBmb3IgYnJnX2VuZGlhbi5oICovCisjZGVmaW5lIElTX0xJVFRMRV9FTkRJQU4gMTIzNAorI2RlZmluZSBJU19CSUdfRU5ESUFOIDQzMjEKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisjZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfTElUVExFX0VORElBTgorI2VuZGlmCisjaWYgUFlfQklHX0VORElBTgorI2RlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0JJR19FTkRJQU4KKyNlbmRpZgorCisvKiBtYW5nbGUgbmFtZXMgKi8KKyNkZWZpbmUgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiIF9QeVNIQTNfS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiCisjZGVmaW5lIEtlY2Nha19IYXNoRmluYWwgX1B5U0hBM19LZWNjYWtfSGFzaEZpbmFsCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSBfUHlTSEEzX0tlY2Nha19IYXNoSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtfSGFzaFNxdWVlemUgX1B5U0hBM19LZWNjYWtfSGFzaFNxdWVlemUKKyNkZWZpbmUgS2VjY2FrX0hhc2hVcGRhdGUgX1B5U0hBM19LZWNjYWtfSGFzaFVwZGF0ZQorI2RlZmluZSBLZWNjYWtQMTYwMF9BZGRCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0FkZEJ5dGVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkTGFuZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9Jbml0aWFsaXplIF9QeVNIQTNfS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcworI2RlZmluZSBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcworI2RlZmluZSBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcworI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZQorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYgorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMKKyNkZWZpbmUgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluaXRpYWxpemUgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSBfUHlTSEEzX0tlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplCisjaWYgS2VjY2FrT3B0ID09IDMyCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGUgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRCeXRlCisjZGVmaW5lIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyBfUHlTSEEzX0tlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcworI2RlZmluZSBLZWNjYWtQMTYwMF9TZXRCeXRlc0luTGFuZVRvWmVybyBfUHlTSEEzX0tlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvCisjZW5kaWYKKworLyogd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBLZWNjYWtQMTYwMCAqLworI2RlZmluZSBLZWNjYWtQMjAwX2V4Y2x1ZGVkIDEKKyNkZWZpbmUgS2VjY2FrUDQwMF9leGNsdWRlZCAxCisjZGVmaW5lIEtlY2Nha1A4MDBfZXhjbHVkZWQgMQorCisvKiBpbmxpbmUgYWxsIEtlY2NhayBkZXBlbmRlbmNpZXMgKi8KKyNpbmNsdWRlICJrY3AvS2VjY2FrSGFzaC5oIgorI2luY2x1ZGUgImtjcC9LZWNjYWtTcG9uZ2UuaCIKKyNpbmNsdWRlICJrY3AvS2VjY2FrSGFzaC5jIgorI2luY2x1ZGUgImtjcC9LZWNjYWtTcG9uZ2UuYyIKKyNpZiBLZWNjYWtPcHQgPT0gNjQKKyAgI2luY2x1ZGUgImtjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYyIKKyNlbGlmIEtlY2Nha09wdCA9PSAzMgorICAjaW5jbHVkZSAia2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jIgorI2VuZGlmCisKKyNkZWZpbmUgU0hBM19NQVhfRElHRVNUU0laRSA2NCAvKiA2NCBCeXRlcyAoNTEyIEJpdHMpIGZvciAyMjQgdG8gNTEyICovCisjZGVmaW5lIFNIQTNfTEFORVNJWkUgKDIwICogOCkgLyogRXh0cmFjdExhbmUgbmVlZHMgbWF4IHVpbnQ2NF90WzIwXSBleHRyYS4gKi8KKyNkZWZpbmUgU0hBM19zdGF0ZSBLZWNjYWtfSGFzaEluc3RhbmNlCisjZGVmaW5lIFNIQTNfaW5pdCBLZWNjYWtfSGFzaEluaXRpYWxpemUKKyNkZWZpbmUgU0hBM19wcm9jZXNzIEtlY2Nha19IYXNoVXBkYXRlCisjZGVmaW5lIFNIQTNfZG9uZSBLZWNjYWtfSGFzaEZpbmFsCisjZGVmaW5lIFNIQTNfc3F1ZWV6ZSBLZWNjYWtfSGFzaFNxdWVlemUKKyNkZWZpbmUgU0hBM19jb3B5c3RhdGUoZGVzdCwgc3JjKSBtZW1jcHkoJihkZXN0KSwgJihzcmMpLCBzaXplb2YoU0hBM19zdGF0ZSkpCisKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9zaGEzCitjbGFzcyBfc2hhMy5zaGEzXzIyNCAiU0hBM29iamVjdCAqIiAiJlNIQTNfMjI0dHlwIgorY2xhc3MgX3NoYTMuc2hhM18yNTYgIlNIQTNvYmplY3QgKiIgIiZTSEEzXzI1NnR5cCIKK2NsYXNzIF9zaGEzLnNoYTNfMzg0ICJTSEEzb2JqZWN0ICoiICImU0hBM18zODR0eXAiCitjbGFzcyBfc2hhMy5zaGEzXzUxMiAiU0hBM29iamVjdCAqIiAiJlNIQTNfNTEydHlwIgorY2xhc3MgX3NoYTMuc2hha2VfMTI4ICJTSEEzb2JqZWN0ICoiICImU0hBS0UxMjh0eXBlIgorY2xhc3MgX3NoYTMuc2hha2VfMjU2ICJTSEEzb2JqZWN0ICoiICImU0hBS0UyNTZ0eXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjhhNTM2ODBmMzcwMjg1YV0qLworCisvKiBUaGUgc3RydWN0dXJlIGZvciBzdG9yaW5nIFNIQTMgaW5mbyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFNIQTNfc3RhdGUgaGFzaF9zdGF0ZTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IFNIQTNvYmplY3Q7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBM18yMjR0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTSEEzXzI1NnR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTNfMzg0dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBM181MTJ0eXBlOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCitzdGF0aWMgUHlUeXBlT2JqZWN0IEtlY2Nha18yMjR0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBLZWNjYWtfMjU2dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgS2VjY2FrXzM4NHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IEtlY2Nha181MTJ0eXBlOworI2VuZGlmCitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQUtFMTI4dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBS0UyNTZ0eXBlOworCisjaW5jbHVkZSAiY2xpbmljL3NoYTNtb2R1bGUuYy5oIgorCitzdGF0aWMgU0hBM29iamVjdCAqCituZXdTSEEzb2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBTSEEzb2JqZWN0ICpuZXdvYmo7CisgICAgbmV3b2JqID0gKFNIQTNvYmplY3QgKilQeU9iamVjdF9OZXcoU0hBM29iamVjdCwgdHlwZSk7CisgICAgaWYgKG5ld29iaiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIG5ld29iai0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gbmV3b2JqOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX3NoYTMuc2hhM18yMjQuX19uZXdfXyBhcyBweV9zaGEzX25ldworICAgIHN0cmluZyBhcyBkYXRhOiBvYmplY3QgPSBOVUxMCisKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NoYTNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZDVjMzQyNzllNjliZjA5IGlucHV0PWQ3YzU4MmI5NTBhODU4YjZdKi8KK3sKKyAgICBTSEEzb2JqZWN0ICpzZWxmID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmID0ge05VTEwsIE5VTEx9OworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgc2VsZiA9IG5ld1NIQTNvYmplY3QodHlwZSk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICh0eXBlID09ICZTSEEzXzIyNHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMjI0KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfMjU2dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18yNTYoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM18zODR0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzM4NCgmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzUxMnR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfNTEyKCZzZWxmLT5oYXNoX3N0YXRlKTsKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzIyNHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplKCZzZWxmLT5oYXNoX3N0YXRlLCAxMTUyLCA0NDgsIDIyNCwgMHgwMSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjU2dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemUoJnNlbGYtPmhhc2hfc3RhdGUsIDEwODgsIDUxMiwgMjU2LCAweDAxKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18zODR0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgmc2VsZi0+aGFzaF9zdGF0ZSwgODMyLCA3NjgsIDM4NCwgMHgwMSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfNTEydHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemUoJnNlbGYtPmhhc2hfc3RhdGUsIDU3NiwgMTAyNCwgNTEyLCAweDAxKTsKKyNlbmRpZgorICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBS0UxMjh0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEFLRTEyOCgmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEFLRTI1NnR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMjU2KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1IoZGF0YSwgJmJ1ZiwgZ290byBlcnJvcik7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgaWYgKGJ1Zi5sZW4gPj0gSEFTSExJQl9HSUxfTUlOU0laRSkgeworICAgICAgICAgICAgLyogaW52YXJpYW50OiBOZXcgb2JqZWN0cyBjYW4ndCBiZSBhY2Nlc3NlZCBieSBvdGhlciBjb2RlIHlldCwKKyAgICAgICAgICAgICAqIHRodXMgaXQncyBzYWZlIHRvIHJlbGVhc2UgdGhlIEdJTCB3aXRob3V0IGxvY2tpbmcgdGhlIG9iamVjdC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworI2VuZGlmCisgICAgICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBVcGRhdGUoKSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworCisgIGVycm9yOgorICAgIGlmIChzZWxmKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICB9CisgICAgaWYgKGRhdGEgJiYgYnVmLm9iaikgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworCisvKiBJbnRlcm5hbCBtZXRob2RzIGZvciBhIGhhc2ggb2JqZWN0ICovCisKK3N0YXRpYyB2b2lkCitTSEEzX2RlYWxsb2MoU0hBM29iamVjdCAqc2VsZikKK3sKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICB9CisjZW5kaWYKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKKworLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLworCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYTNfMjI0LmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5X2ltcGwoU0hBM29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YzUzNzQxMWVjZGNkYTRjIGlucHV0PTkzYTQ0YWFlYmVhNTFiYThdKi8KK3sKKyAgICBTSEEzb2JqZWN0ICpuZXdvYmo7CisKKyAgICBpZiAoKG5ld29iaiA9IG5ld1NIQTNvYmplY3QoUHlfVFlQRShzZWxmKSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgU0hBM19jb3B5c3RhdGUobmV3b2JqLT5oYXNoX3N0YXRlLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdvYmo7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hhM18yMjQuZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZDUzMTg0MmUyMGIyZDViIGlucHV0PWE1ODA3OTE3ZDIxOWIzMGVdKi8KK3sKKyAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEEzX01BWF9ESUdFU1RTSVpFICsgU0hBM19MQU5FU0laRV07CisgICAgU0hBM19zdGF0ZSB0ZW1wOworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZSh0ZW1wLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJlcyA9IFNIQTNfZG9uZSgmdGVtcCwgZGlnZXN0KTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgRmluYWwoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmhhc2hfc3RhdGUuZml4ZWRPdXRwdXRMZW5ndGggLyA4KTsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitfc2hhMy5zaGEzXzIyNC5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NWFkMDMyNTc5MDY5MThkIGlucHV0PTJkOTFiYjZlMGQxMTRlZTNdKi8KK3sKKyAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEEzX01BWF9ESUdFU1RTSVpFICsgU0hBM19MQU5FU0laRV07CisgICAgU0hBM19zdGF0ZSB0ZW1wOworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZSh0ZW1wLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJlcyA9IFNIQTNfZG9uZSgmdGVtcCwgZGlnZXN0KTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgRmluYWwoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+aGFzaF9zdGF0ZS5maXhlZE91dHB1dExlbmd0aCAvIDgpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYTNfMjI0LnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfdXBkYXRlKFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDY3MjFkNTViNDgzZTBhZiBpbnB1dD1iZTQ0YmYwZDFjMjc5NzkxXSovCit7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKyAgICBIYXNoUmV0dXJuIHJlczsKKworICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKKworICAgIC8qIGFkZCBuZXcgZGF0YSwgdGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBsZW5ndGggaW4gYml0cyBub3QgYnl0ZXMgKi8KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwgJiYgYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgfQorICAgIC8qIE9uY2UgYSBsb2NrIGV4aXN0cyBhbGwgY29kZSBwYXRocyBtdXN0IGJlIHN5bmNocm9uaXplZC4gV2UgaGF2ZSB0bworICAgICAqIHJlbGVhc2UgdGhlIEdJTCBldmVuIGZvciBzbWFsbCBidWZmZXJzIGFzIGFjcXVpcmluZyB0aGUgbG9jayBtYXkgdGFrZQorICAgICAqIGFuIHVubGltaXRlZCBhbW91bnQgb2YgdGltZSB3aGVuIGFub3RoZXIgdGhyZWFkIHVwZGF0ZXMgdGhpcyBvYmplY3QKKyAgICAgKiB3aXRoIGxvdHMgb2YgZGF0YS4gKi8KKyAgICBpZiAoc2VsZi0+bG9jaykgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrLCAxKTsKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworICAgIH0KKyNlbHNlCisgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisjZW5kaWYKKworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImludGVybmFsIGVycm9yIGluIFNIQTMgVXBkYXRlKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIFNIQTNfbWV0aG9kc1tdID0geworICAgIF9TSEEzX1NIQTNfMjI0X0NPUFlfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBM18yMjRfRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQTNfMjI0X0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBfU0hBM19TSEEzXzIyNF9VUERBVEVfTUVUSE9EREVGCisgICAge05VTEwsICAgICAgICBOVUxMfSAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9ibG9ja19zaXplKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgaW50IHJhdGUgPSBzZWxmLT5oYXNoX3N0YXRlLnNwb25nZS5yYXRlOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmF0ZSAvIDgpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9uYW1lKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKKyAgICBpZiAodHlwZSA9PSAmU0hBM18yMjR0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hhM18yMjQiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfMjU2dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYTNfMjU2Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzM4NHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGEzXzM4NCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM181MTJ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hhM181MTIiKTsKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzIyNHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJrZWNjYWtfMjI0Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjU2dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImtlY2Nha18yNTYiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18zODR0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygia2VjY2FrXzM4NCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzUxMnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJrZWNjYWtfNTEyIik7CisjZW5kaWYKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQUtFMTI4dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYWtlXzEyOCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBS0UyNTZ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hha2VfMjU2Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfZGlnZXN0X3NpemUoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmhhc2hfc3RhdGUuZml4ZWRPdXRwdXRMZW5ndGggLyA4KTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfY2FwYWNpdHlfYml0cyhTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIGludCBjYXBhY2l0eSA9IDE2MDAgLSBzZWxmLT5oYXNoX3N0YXRlLnNwb25nZS5yYXRlOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoY2FwYWNpdHkpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9yYXRlX2JpdHMoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZSA9IHNlbGYtPmhhc2hfc3RhdGUuc3BvbmdlLnJhdGU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyYXRlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X3N1ZmZpeChTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHVuc2lnbmVkIGNoYXIgc3VmZml4WzJdOworICAgIHN1ZmZpeFswXSA9IHNlbGYtPmhhc2hfc3RhdGUuZGVsaW1pdGVkU3VmZml4OworICAgIHN1ZmZpeFsxXSA9IDA7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilzdWZmaXgsIDEpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBTSEEzX2dldHNldGVyc1tdID0geworICAgIHsiYmxvY2tfc2l6ZSIsIChnZXR0ZXIpU0hBM19nZXRfYmxvY2tfc2l6ZSwgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJuYW1lIiwgKGdldHRlcilTSEEzX2dldF9uYW1lLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7ImRpZ2VzdF9zaXplIiwgKGdldHRlcilTSEEzX2dldF9kaWdlc3Rfc2l6ZSwgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJfY2FwYWNpdHlfYml0cyIsIChnZXR0ZXIpU0hBM19nZXRfY2FwYWNpdHlfYml0cywgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJfcmF0ZV9iaXRzIiwgKGdldHRlcilTSEEzX2dldF9yYXRlX2JpdHMsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiX3N1ZmZpeCIsIChnZXR0ZXIpU0hBM19nZXRfc3VmZml4LCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCit9OworCisKKyNkZWZpbmUgU0hBM19UWVBFKHR5cGVfb2JqLCB0eXBlX25hbWUsIHR5cGVfZG9jLCB0eXBlX21ldGhvZHMpIFwKKyAgICBzdGF0aWMgUHlUeXBlT2JqZWN0IHR5cGVfb2JqID0geyBcCisgICAgICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKSBcCisgICAgICAgIHR5cGVfbmFtZSwgICAgICAgICAgLyogdHBfbmFtZSAqLyBcCisgICAgICAgIHNpemVvZihTSEEzb2JqZWN0KSwgLyogdHBfc2l6ZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8gXAorICAgICAgICAvKiAgbWV0aG9kcyAgKi8gXAorICAgICAgICAoZGVzdHJ1Y3RvcilTSEEzX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLyBcCisgICAgICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8gXAorICAgICAgICB0eXBlX2RvYywgICAgICAgICAgIC8qIHRwX2RvYyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovIFwKKyAgICAgICAgdHlwZV9tZXRob2RzLCAgICAgICAvKiB0cF9tZXRob2RzICovIFwKKyAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovIFwKKyAgICAgICAgU0hBM19nZXRzZXRlcnMsICAgICAvKiB0cF9nZXRzZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLyBcCisgICAgICAgIHB5X3NoYTNfbmV3LCAgICAgICAgLyogdHBfbmV3ICovIFwKKyAgICB9CisKK1B5RG9jX1NUUlZBUihzaGEzXzI1Nl9fZG9jX18sCisic2hhM18yNTYoW3N0cmluZ10pIC0+IFNIQTMgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAzMiBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKHNoYTNfMzg0X19kb2NfXywKKyJzaGEzXzM4NChbc3RyaW5nXSkgLT4gU0hBMyBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDQ4IGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoc2hhM181MTJfX2RvY19fLAorInNoYTNfNTEyKFtzdHJpbmddKSAtPiBTSEEzIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNjQgYnl0ZXMuIik7CisKK1NIQTNfVFlQRShTSEEzXzIyNHR5cGUsICJfc2hhMy5zaGEzXzIyNCIsIHB5X3NoYTNfbmV3X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShTSEEzXzI1NnR5cGUsICJfc2hhMy5zaGEzXzI1NiIsIHNoYTNfMjU2X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShTSEEzXzM4NHR5cGUsICJfc2hhMy5zaGEzXzM4NCIsIHNoYTNfMzg0X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShTSEEzXzUxMnR5cGUsICJfc2hhMy5zaGEzXzUxMiIsIHNoYTNfNTEyX19kb2NfXywgU0hBM19tZXRob2RzKTsKKworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCitQeURvY19TVFJWQVIoa2VjY2FrXzIyNF9fZG9jX18sCisia2VjY2FrXzIyNChbc3RyaW5nXSkgLT4gS2VjY2FrIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgS2VjY2FrIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKGtlY2Nha18yNTZfX2RvY19fLAorImtlY2Nha18yNTYoW3N0cmluZ10pIC0+IEtlY2NhayBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IEtlY2NhayBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgMzIgYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihrZWNjYWtfMzg0X19kb2NfXywKKyJrZWNjYWtfMzg0KFtzdHJpbmddKSAtPiBLZWNjYWsgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBLZWNjYWsgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDQ4IGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoa2VjY2FrXzUxMl9fZG9jX18sCisia2VjY2FrXzUxMihbc3RyaW5nXSkgLT4gS2VjY2FrIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgS2VjY2FrIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiA2NCBieXRlcy4iKTsKKworU0hBM19UWVBFKEtlY2Nha18yMjR0eXBlLCAiX3NoYTMua2VjY2FrXzIyNCIsIGtlY2Nha18yMjRfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKEtlY2Nha18yNTZ0eXBlLCAiX3NoYTMua2VjY2FrXzI1NiIsIGtlY2Nha18yNTZfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKEtlY2Nha18zODR0eXBlLCAiX3NoYTMua2VjY2FrXzM4NCIsIGtlY2Nha18zODRfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKEtlY2Nha181MTJ0eXBlLCAiX3NoYTMua2VjY2FrXzUxMiIsIGtlY2Nha181MTJfX2RvY19fLCBTSEEzX21ldGhvZHMpOworI2VuZGlmCisKKworc3RhdGljIFB5T2JqZWN0ICoKK19TSEFLRV9kaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBkaWdlc3RsZW4sIGludCBoZXgpCit7CisgICAgdW5zaWduZWQgY2hhciAqZGlnZXN0ID0gTlVMTDsKKyAgICBTSEEzX3N0YXRlIHRlbXA7CisgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIC8qIEV4dHJhY3RMYW5lIG5lZWRzIGF0IGxlYXN0IFNIQTNfTUFYX0RJR0VTVFNJWkUgKyBTSEEzX0xBTkVTSVpFIGFuZAorICAgICAqIFNIQTNfTEFORVNJWkUgZXh0cmEgc3BhY2UuCisgICAgICovCisgICAgZGlnZXN0ID0gKHVuc2lnbmVkIGNoYXIqKVB5TWVtX01hbGxvYyhkaWdlc3RsZW4gKyBTSEEzX0xBTkVTSVpFKTsKKyAgICBpZiAoZGlnZXN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQorCisgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZSh0ZW1wLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJlcyA9IFNIQTNfZG9uZSgmdGVtcCwgTlVMTCk7CisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIGRvbmUoKSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICByZXMgPSBTSEEzX3NxdWVlemUoJnRlbXAsIGRpZ2VzdCwgZGlnZXN0bGVuICogOCk7CisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIFNxdWVlemUoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGhleCkgeworICAgICAgICAgcmVzdWx0ID0gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgZGlnZXN0bGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdGxlbik7CisgICAgfQorICBlcnJvcjoKKyAgICBpZiAoZGlnZXN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRnJlZShkaWdlc3QpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYWtlXzEyOC5kaWdlc3QKKworICAgIGxlbmd0aDogdW5zaWduZWRfbG9uZyhiaXR3aXNlPVRydWUpCisgICAgXAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzEzNjA1ZTJmODdiYjhmIGlucHV0PTYwOGM4Y2E4MGFlOWQxMTVdKi8KK3sKKyAgICByZXR1cm4gX1NIQUtFX2RpZ2VzdChzZWxmLCBsZW5ndGgsIDApOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYWtlXzEyOC5oZXhkaWdlc3QKKworICAgIGxlbmd0aDogdW5zaWduZWRfbG9uZyhiaXR3aXNlPVRydWUpCisgICAgXAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBsZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmY4ZTJmMWU0OTA5NDRhOCBpbnB1dD02NGU1NmI0NzYwZGI0NTczXSovCit7CisgICAgcmV0dXJuIF9TSEFLRV9kaWdlc3Qoc2VsZiwgbGVuZ3RoLCAxKTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgU0hBS0VfbWV0aG9kc1tdID0geworICAgIF9TSEEzX1NIQTNfMjI0X0NPUFlfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBS0VfMTI4X0RJR0VTVF9NRVRIT0RERUYKKyAgICBfU0hBM19TSEFLRV8xMjhfSEVYRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQTNfMjI0X1VQREFURV9NRVRIT0RERUYKKyAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK1B5RG9jX1NUUlZBUihzaGFrZV8xMjhfX2RvY19fLAorInNoYWtlXzEyOChbc3RyaW5nXSkgLT4gU0hBS0Ugb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEFLRSBoYXNoIG9iamVjdC4iKTsKKworUHlEb2NfU1RSVkFSKHNoYWtlXzI1Nl9fZG9jX18sCisic2hha2VfMjU2KFtzdHJpbmddKSAtPiBTSEFLRSBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQUtFIGhhc2ggb2JqZWN0LiIpOworCitTSEEzX1RZUEUoU0hBS0UxMjh0eXBlLCAiX3NoYTMuc2hha2VfMTI4Iiwgc2hha2VfMTI4X19kb2NfXywgU0hBS0VfbWV0aG9kcyk7CitTSEEzX1RZUEUoU0hBS0UyNTZ0eXBlLCAiX3NoYTMuc2hha2VfMjU2Iiwgc2hha2VfMjU2X19kb2NfXywgU0hBS0VfbWV0aG9kcyk7CisKKworLyogSW5pdGlhbGl6ZSB0aGlzIG1vZHVsZS4gKi8KK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX1NIQTNtb2R1bGUgPSB7CisgICAgICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAgICAgIl9zaGEzIiwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgLTEsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwKK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fc2hhMyh2b2lkKQoreworICAgIFB5T2JqZWN0ICptID0gTlVMTDsKKworICAgIGlmICgobSA9IFB5TW9kdWxlX0NyZWF0ZSgmX1NIQTNtb2R1bGUpKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworI2RlZmluZSBpbml0X3NoYTN0eXBlKG5hbWUsIHR5cGUpICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfVFlQRSh0eXBlKSA9ICZQeVR5cGVfVHlwZTsgXAorICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkgeyBcCisgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopdHlwZSk7ICBcCisgICAgICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgbmFtZSwgKFB5T2JqZWN0ICopdHlwZSkgPCAwKSB7IFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSgwKQorCisgICAgaW5pdF9zaGEzdHlwZSgic2hhM18yMjQiLCAmU0hBM18yMjR0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJzaGEzXzI1NiIsICZTSEEzXzI1NnR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoInNoYTNfMzg0IiwgJlNIQTNfMzg0dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgic2hhM181MTIiLCAmU0hBM181MTJ0eXBlKTsKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha18yMjQiLCAmS2VjY2FrXzIyNHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha18yNTYiLCAmS2VjY2FrXzI1NnR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha18zODQiLCAmS2VjY2FrXzM4NHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha181MTIiLCAmS2VjY2FrXzUxMnR5cGUpOworI2VuZGlmCisgICAgaW5pdF9zaGEzdHlwZSgic2hha2VfMTI4IiwgJlNIQUtFMTI4dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgic2hha2VfMjU2IiwgJlNIQUtFMjU2dHlwZSk7CisKKyN1bmRlZiBpbml0X3NoYTN0eXBlCisKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImtlY2Nha29wdCIsIEtlY2Nha09wdCkgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiaW1wbGVtZW50YXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbikgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIG07CisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihtKTsKKyAgICByZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jYWNoZS5jIGIvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKaW5kZXggMzY4OWE0ZS4uNjJjNTg5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKQEAgLTI0NCw4ICsyNDQsNyBAQAogICAgICAgICBwdHIgPSBwdHItPm5leHQ7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgY2FjaGVfbWV0aG9kc1tdID0gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKaW5kZXggZGI5NzlmNS4uNjIxMDIyNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCkBAIC0xNjUsNyArMTY1LDYgQEAKICAgICBzZWxmLT5zdGF0ZW1lbnRfY2FjaGUtPmRlY3JlZl9mYWN0b3J5ID0gMDsKICAgICBQeV9ERUNSRUYoc2VsZik7CiAKLSAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMDsKICAgICBzZWxmLT5kZXRlY3RfdHlwZXMgPSBkZXRlY3RfdHlwZXM7CiAgICAgc2VsZi0+dGltZW91dCA9IHRpbWVvdXQ7CiAgICAgKHZvaWQpc3FsaXRlM19idXN5X3RpbWVvdXQoc2VsZi0+ZGIsIChpbnQpKHRpbWVvdXQqMTAwMCkpOwpAQCAtMjAyLDI2ICsyMDEsNiBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBFbXB0eSB0aGUgZW50aXJlIHN0YXRlbWVudCBjYWNoZSBvZiB0aGlzIGNvbm5lY3Rpb24gKi8KLXZvaWQgcHlzcWxpdGVfZmx1c2hfc3RhdGVtZW50X2NhY2hlKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYpCi17Ci0gICAgcHlzcWxpdGVfTm9kZSogbm9kZTsKLSAgICBweXNxbGl0ZV9TdGF0ZW1lbnQqIHN0YXRlbWVudDsKLQotICAgIG5vZGUgPSBzZWxmLT5zdGF0ZW1lbnRfY2FjaGUtPmZpcnN0OwotCi0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgc3RhdGVtZW50ID0gKHB5c3FsaXRlX1N0YXRlbWVudCopKG5vZGUtPmRhdGEpOwotICAgICAgICAodm9pZClweXNxbGl0ZV9zdGF0ZW1lbnRfZmluYWxpemUoc3RhdGVtZW50KTsKLSAgICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7Ci0gICAgfQotCi0gICAgUHlfU0VUUkVGKHNlbGYtPnN0YXRlbWVudF9jYWNoZSwKLSAgICAgICAgICAgICAgKHB5c3FsaXRlX0NhY2hlICopUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZweXNxbGl0ZV9DYWNoZVR5cGUsICJPIiwgc2VsZikpOwotICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICBzZWxmLT5zdGF0ZW1lbnRfY2FjaGUtPmRlY3JlZl9mYWN0b3J5ID0gMDsKLX0KLQogLyogYWN0aW9uIGluIChBQ1RJT05fUkVTRVQsIEFDVElPTl9GSU5BTElaRSkgKi8KIHZvaWQgcHlzcWxpdGVfZG9fYWxsX3N0YXRlbWVudHMocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgaW50IGFjdGlvbiwgaW50IHJlc2V0X2N1cnNvcnMpCiB7CkBAIC0zNjYsOCArMzQ1LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogLyoKQEAgLTQwNiw5ICszODQsNyBAQAogICAgIH0KIAogICAgIHJjID0gcHlzcWxpdGVfc3RlcChzdGF0ZW1lbnQsIHNlbGYpOwotICAgIGlmIChyYyA9PSBTUUxJVEVfRE9ORSkgewotICAgICAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMTsKLSAgICB9IGVsc2UgeworICAgIGlmIChyYyAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBfcHlzcWxpdGVfc2V0ZXJyb3Ioc2VsZi0+ZGIsIHN0YXRlbWVudCk7CiAgICAgfQogCkBAIC00MzksNyArNDE1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHNlbGYtPmluVHJhbnNhY3Rpb24pIHsKKyAgICBpZiAoIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+ZGIpKSB7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICByYyA9IHNxbGl0ZTNfcHJlcGFyZShzZWxmLT5kYiwgIkNPTU1JVCIsIC0xLCAmc3RhdGVtZW50LCAmdGFpbCk7CkBAIC00NTAsOSArNDI2LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RlcChzdGF0ZW1lbnQsIHNlbGYpOwotICAgICAgICBpZiAocmMgPT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAwOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAocmMgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIF9weXNxbGl0ZV9zZXRlcnJvcihzZWxmLT5kYiwgc3RhdGVtZW50KTsKICAgICAgICAgfQogCkBAIC00ODQsNyArNDU4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHNlbGYtPmluVHJhbnNhY3Rpb24pIHsKKyAgICBpZiAoIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+ZGIpKSB7CiAgICAgICAgIHB5c3FsaXRlX2RvX2FsbF9zdGF0ZW1lbnRzKHNlbGYsIEFDVElPTl9SRVNFVCwgMSk7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtNDk2LDkgKzQ3MCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICByYyA9IHB5c3FsaXRlX3N0ZXAoc3RhdGVtZW50LCBzZWxmKTsKLSAgICAgICAgaWYgKHJjID09IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMDsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHJjICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBfcHlzcWxpdGVfc2V0ZXJyb3Ioc2VsZi0+ZGIsIHN0YXRlbWVudCk7CiAgICAgICAgIH0KIApAQCAtNjczLDcgKzY0NSw3IEBACiAgICAgYWdncmVnYXRlX2luc3RhbmNlID0gKFB5T2JqZWN0Kiopc3FsaXRlM19hZ2dyZWdhdGVfY29udGV4dChjb250ZXh0LCBzaXplb2YoUHlPYmplY3QqKSk7CiAKICAgICBpZiAoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9PSAwKSB7Ci0gICAgICAgICphZ2dyZWdhdGVfaW5zdGFuY2UgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oYWdncmVnYXRlX2NsYXNzLCAiIik7CisgICAgICAgICphZ2dyZWdhdGVfaW5zdGFuY2UgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oYWdncmVnYXRlX2NsYXNzLCBOVUxMKTsKIAogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IDA7CkBAIC03NDUsNyArNzE3LDcgQEAKICAgICBQeUVycl9GZXRjaCgmZXhjZXB0aW9uLCAmdmFsdWUsICZ0Yik7CiAgICAgcmVzdG9yZSA9IDE7CiAKLSAgICBmdW5jdGlvbl9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKCphZ2dyZWdhdGVfaW5zdGFuY2UsICZQeUlkX2ZpbmFsaXplLCAiIik7CisgICAgZnVuY3Rpb25fcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgqYWdncmVnYXRlX2luc3RhbmNlLCAmUHlJZF9maW5hbGl6ZSwgTlVMTCk7CiAKICAgICBQeV9ERUNSRUYoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSk7CiAKQEAgLTg3NCw4ICs4NDYsNyBAQAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIGZ1bmMsIFB5X05vbmUpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC05MDYsOCArODc3LDcgQEAKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHNlbGYtPmZ1bmN0aW9uX3BpbmJvYXJkLCBhZ2dyZWdhdGVfY2xhc3MsIFB5X05vbmUpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC05NjMsNyArOTMzLDcgQEAKIAogICAgIGdpbHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKICNlbmRpZgotICAgIHJldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QqKXVzZXJfYXJnLCAiIik7CisgICAgcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCopdXNlcl9hcmcsIE5VTEwpOwogCiAgICAgaWYgKCFyZXQpIHsKICAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgewpAQCAtMTA0Miw4ICsxMDEyLDcgQEAKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHNlbGYtPmZ1bmN0aW9uX3BpbmJvYXJkLCBhdXRob3JpemVyX2NiLCBQeV9Ob25lKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIH0KIApAQCAtMTA3Miw4ICsxMDQxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIFB5T2JqZWN0KiBweXNxbGl0ZV9jb25uZWN0aW9uX3NldF90cmFjZV9jYWxsYmFjayhweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3YXJncykKQEAgLTExMDAsOCArMTA2OCw3IEBACiAgICAgICAgIHNxbGl0ZTNfdHJhY2Uoc2VsZi0+ZGIsIF90cmFjZV9jYWxsYmFjaywgdHJhY2VfY2FsbGJhY2spOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogI2lmZGVmIEhBVkVfTE9BRF9FWFRFTlNJT04KQEAgLTExMjQsOCArMTA5MSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9PcGVyYXRpb25hbEVycm9yLCAiRXJyb3IgZW5hYmxpbmcgbG9hZCBleHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC0xMTQ4LDggKzExMTQsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgZXJybXNnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xMTg2LDYgKzExNTEsMTcgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCogcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfaW5fdHJhbnNhY3Rpb24ocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgdm9pZCogdW51c2VkKQoreworICAgIGlmICghcHlzcWxpdGVfY2hlY2tfY29ubmVjdGlvbihzZWxmKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFzcWxpdGUzX2dldF9hdXRvY29tbWl0KHNlbGYtPmRiKSkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgUHlfUkVUVVJOX0ZBTFNFOworfQorCiBzdGF0aWMgaW50IHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X2lzb2xhdGlvbl9sZXZlbChweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogaXNvbGF0aW9uX2xldmVsKQogewogICAgIGlmIChpc29sYXRpb25fbGV2ZWwgPT0gUHlfTm9uZSkgewpAQCAtMTE5Niw3ICsxMTcyLDYgQEAKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAKICAgICAgICAgc2VsZi0+YmVnaW5fc3RhdGVtZW50ID0gTlVMTDsKLSAgICAgICAgc2VsZi0+aW5UcmFuc2FjdGlvbiA9IDA7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICpjYW5kaWRhdGU7CiAgICAgICAgIFB5T2JqZWN0ICp1cHBlcmNhc2VfbGV2ZWw7CkBAIC0xMjk5LDcgKzEyNzQsNyBAQAogICAgIFB5T2JqZWN0KiByZXN1bHQgPSAwOwogICAgIFB5T2JqZWN0KiBtZXRob2QgPSAwOwogCi0gICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsIE5VTEwpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTMyOCw3ICsxMzAzLDcgQEAKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKIAotICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKKyAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCBOVUxMKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEzNTcsNyArMTMzMiw3IEBACiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CiAKLSAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgTlVMTCk7CiAgICAgaWYgKCFjdXJzb3IpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC0xNjIxLDcgKzE1OTYsNyBAQAogICAgICAgICBtZXRob2RfbmFtZSA9ICJyb2xsYmFjayI7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsIG1ldGhvZF9uYW1lLCAiIik7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsIG1ldGhvZF9uYW1lLCBOVUxMKTsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xNjMwLDEyICsxNjA1LDEzIEBACiAgICAgUHlfUkVUVVJOX0ZBTFNFOwogfQogCi1zdGF0aWMgY2hhciBjb25uZWN0aW9uX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvbm5lY3Rpb25fZG9jW10gPQogUHlEb2NfU1RSKCJTUUxpdGUgZGF0YWJhc2UgY29ubmVjdGlvbiBvYmplY3QuIik7CiAKIHN0YXRpYyBQeUdldFNldERlZiBjb25uZWN0aW9uX2dldHNldFtdID0gewogICAgIHsiaXNvbGF0aW9uX2xldmVsIiwgIChnZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfaXNvbGF0aW9uX2xldmVsLCAoc2V0dGVyKXB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X2lzb2xhdGlvbl9sZXZlbH0sCiAgICAgeyJ0b3RhbF9jaGFuZ2VzIiwgIChnZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfdG90YWxfY2hhbmdlcywgKHNldHRlcikwfSwKKyAgICB7ImluX3RyYW5zYWN0aW9uIiwgIChnZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfaW5fdHJhbnNhY3Rpb24sIChzZXR0ZXIpMH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0xNjk3LDcgKzE2NzMsNiBAQAogICAgIHsiTm90U3VwcG9ydGVkRXJyb3IiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHlzcWxpdGVfQ29ubmVjdGlvbiwgTm90U3VwcG9ydGVkRXJyb3IpLCBSRUFET05MWX0sCiAgICAgeyJyb3dfZmFjdG9yeSIsIFRfT0JKRUNULCBvZmZzZXRvZihweXNxbGl0ZV9Db25uZWN0aW9uLCByb3dfZmFjdG9yeSl9LAogICAgIHsidGV4dF9mYWN0b3J5IiwgVF9PQkpFQ1QsIG9mZnNldG9mKHB5c3FsaXRlX0Nvbm5lY3Rpb24sIHRleHRfZmFjdG9yeSl9LAotICAgIHsiaW5fdHJhbnNhY3Rpb24iLCBUX0JPT0wsIG9mZnNldG9mKHB5c3FsaXRlX0Nvbm5lY3Rpb24sIGluVHJhbnNhY3Rpb24pLCBSRUFET05MWX0sCiAgICAge05VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAppbmRleCBhZGJmYjU0Li4yODYwYTBjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKQEAgLTM3LDEwICszNyw2IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIHNxbGl0ZTMqIGRiOwogCi0gICAgLyogMSBpZiB3ZSBhcmUgY3VycmVudGx5IHdpdGhpbiBhIHRyYW5zYWN0aW9uLCBpLiBlLiBpZiBhIEJFR0lOIGhhcyBiZWVuCi0gICAgICogaXNzdWVkICovCi0gICAgY2hhciBpblRyYW5zYWN0aW9uOwotCiAgICAgLyogdGhlIHR5cGUgZGV0ZWN0aW9uIG1vZGUuIE9ubHkgMCwgUEFSU0VfREVDTFRZUEVTLCBQQVJTRV9DT0xOQU1FUyBvciBhCiAgICAgICogYml0d2lzZSBjb21iaW5hdGlvbiB0aGVyZW9mIG1ha2VzIHNlbnNlICovCiAgICAgaW50IGRldGVjdF90eXBlczsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwppbmRleCBlMTY3NmRlLi5jNzE2OWY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCkBAIC0yNyw0NSArMjcsNyBAQAogCiBQeU9iamVjdCogcHlzcWxpdGVfY3Vyc29yX2l0ZXJuZXh0KHB5c3FsaXRlX0N1cnNvciogc2VsZik7CiAKLXN0YXRpYyBjaGFyKiBlcnJtc2dfZmV0Y2hfYWNyb3NzX3JvbGxiYWNrID0gIkN1cnNvciBuZWVkZWQgdG8gYmUgcmVzZXQgYmVjYXVzZSBvZiBjb21taXQvcm9sbGJhY2sgYW5kIGNhbiBubyBsb25nZXIgYmUgZmV0Y2hlZCBmcm9tLiI7Ci0KLXN0YXRpYyBweXNxbGl0ZV9TdGF0ZW1lbnRLaW5kIGRldGVjdF9zdGF0ZW1lbnRfdHlwZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQpCi17Ci0gICAgY2hhciBidWZbMjBdOwotICAgIGNvbnN0IGNoYXIqIHNyYzsKLSAgICBjaGFyKiBkc3Q7Ci0KLSAgICBzcmMgPSBzdGF0ZW1lbnQ7Ci0gICAgLyogc2tpcCBvdmVyIHdoaXRlcGFjZSAqLwotICAgIHdoaWxlICgqc3JjID09ICdccicgfHwgKnNyYyA9PSAnXG4nIHx8ICpzcmMgPT0gJyAnIHx8ICpzcmMgPT0gJ1x0JykgewotICAgICAgICBzcmMrKzsKLSAgICB9Ci0KLSAgICBpZiAoKnNyYyA9PSAwKQotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX0lOVkFMSUQ7Ci0KLSAgICBkc3QgPSBidWY7Ci0gICAgKmRzdCA9IDA7Ci0gICAgd2hpbGUgKFB5X0lTQUxQSEEoKnNyYykgJiYgKGRzdCAtIGJ1ZikgPCAoKFB5X3NzaXplX3Qpc2l6ZW9mKGJ1ZikgLSAyKSkgewotICAgICAgICAqZHN0KysgPSBQeV9UT0xPV0VSKCpzcmMrKyk7Ci0gICAgfQotCi0gICAgKmRzdCA9IDA7Ci0KLSAgICBpZiAoIXN0cmNtcChidWYsICJzZWxlY3QiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX1NFTEVDVDsKLSAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAiaW5zZXJ0IikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9JTlNFUlQ7Ci0gICAgfSBlbHNlIGlmICghc3RyY21wKGJ1ZiwgInVwZGF0ZSIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfVVBEQVRFOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcChidWYsICJkZWxldGUiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX0RFTEVURTsKLSAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAicmVwbGFjZSIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfUkVQTEFDRTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX09USEVSOwotICAgIH0KLX0KK3N0YXRpYyBjb25zdCBjaGFyIGVycm1zZ19mZXRjaF9hY3Jvc3Nfcm9sbGJhY2tbXSA9ICJDdXJzb3IgbmVlZGVkIHRvIGJlIHJlc2V0IGJlY2F1c2Ugb2YgY29tbWl0L3JvbGxiYWNrIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGZldGNoZWQgZnJvbS4iOwogCiBzdGF0aWMgaW50IHB5c3FsaXRlX2N1cnNvcl9pbml0KHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7CkBAIC0xNDMsNyArMTA1LDcgQEAKICAgICBQeU9iamVjdCogcmV0dmFsOwogICAgIF9QeV9JREVOVElGSUVSKHVwcGVyKTsKIAotICAgIHVwY2FzZV9rZXkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGtleSwgJlB5SWRfdXBwZXIsICIiKTsKKyAgICB1cGNhc2Vfa2V5ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChrZXksICZQeUlkX3VwcGVyLCBOVUxMKTsKICAgICBpZiAoIXVwY2FzZV9rZXkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjQyLDggKzIwNCw3IEBACiAgICAgY29uc3QgY2hhciogcG9zOwogCiAgICAgaWYgKCFjb2xuYW1lKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIAogICAgIGZvciAocG9zID0gY29sbmFtZTs7IHBvcysrKSB7CkBAIC00MjgsOSArMzg5LDkgQEAKICAgICBQeU9iamVjdCogZnVuY19hcmdzOwogICAgIFB5T2JqZWN0KiByZXN1bHQ7CiAgICAgaW50IG51bWNvbHM7Ci0gICAgaW50IHN0YXRlbWVudF90eXBlOwogICAgIFB5T2JqZWN0KiBkZXNjcmlwdG9yOwogICAgIFB5T2JqZWN0KiBzZWNvbmRfYXJndW1lbnQgPSBOVUxMOworICAgIHNxbGl0ZV9pbnQ2NCBsYXN0cm93aWQ7CiAKICAgICBpZiAoIWNoZWNrX2N1cnNvcihzZWxmKSkgewogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNTExLDcgKzQ3Miw3IEBACiAgICAgLyogcmVzZXQgZGVzY3JpcHRpb24gYW5kIHJvd2NvdW50ICovCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIFB5X1NFVFJFRihzZWxmLT5kZXNjcmlwdGlvbiwgUHlfTm9uZSk7Ci0gICAgc2VsZi0+cm93Y291bnQgPSAtMUw7CisgICAgc2VsZi0+cm93Y291bnQgPSAwTDsKIAogICAgIGZ1bmNfYXJncyA9IFB5VHVwbGVfTmV3KDEpOwogICAgIGlmICghZnVuY19hcmdzKSB7CkBAIC01NTAsNDMgKzUxMSwxOSBAQAogICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgIHB5c3FsaXRlX3N0YXRlbWVudF9tYXJrX2RpcnR5KHNlbGYtPnN0YXRlbWVudCk7CiAKLSAgICBzdGF0ZW1lbnRfdHlwZSA9IGRldGVjdF9zdGF0ZW1lbnRfdHlwZShvcGVyYXRpb25fY3N0cik7Ci0gICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPmJlZ2luX3N0YXRlbWVudCkgewotICAgICAgICBzd2l0Y2ggKHN0YXRlbWVudF90eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9VUERBVEU6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9ERUxFVEU6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9JTlNFUlQ6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9SRVBMQUNFOgotICAgICAgICAgICAgICAgIGlmICghc2VsZi0+Y29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbikgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBfcHlzcWxpdGVfY29ubmVjdGlvbl9iZWdpbihzZWxmLT5jb25uZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfT1RIRVI6Ci0gICAgICAgICAgICAgICAgLyogaXQncyBhIERETCBzdGF0ZW1lbnQgb3Igc29tZXRoaW5nIHNpbWlsYXIKLSAgICAgICAgICAgICAgICAgICAtIHdlIGJldHRlciBDT01NSVQgZmlyc3Qgc28gaXQgd29ya3MgZm9yIGFsbCBjYXNlcyAqLwotICAgICAgICAgICAgICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT5pblRyYW5zYWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHB5c3FsaXRlX2Nvbm5lY3Rpb25fY29tbWl0KHNlbGYtPmNvbm5lY3Rpb24sIE5VTEwpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9TRUxFQ1Q6Ci0gICAgICAgICAgICAgICAgaWYgKG11bHRpcGxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9Qcm9ncmFtbWluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWW91IGNhbm5vdCBleGVjdXRlIFNFTEVDVCBzdGF0ZW1lbnRzIGluIGV4ZWN1dGVtYW55KCkuIik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIC8qIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCBkbyBub3Qgc3RhcnQgYSB0cmFuc2FjdGlvbiBpZiBhCisgICAgICAgRERMIHN0YXRlbWVudCBpcyBlbmNvdW50ZXJlZC4gIElmIGFueWJvZHkgd2FudHMgdHJhbnNhY3Rpb25hbCBEREwsCisgICAgICAgdGhleSBjYW4gaXNzdWUgYSBCRUdJTiBzdGF0ZW1lbnQgbWFudWFsbHkuICovCisgICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPmJlZ2luX3N0YXRlbWVudCAmJiAhc3FsaXRlM19zdG10X3JlYWRvbmx5KHNlbGYtPnN0YXRlbWVudC0+c3QpICYmICFzZWxmLT5zdGF0ZW1lbnQtPmlzX2RkbCkgeworICAgICAgICBpZiAoc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5jb25uZWN0aW9uLT5kYikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IF9weXNxbGl0ZV9jb25uZWN0aW9uX2JlZ2luKHNlbGYtPmNvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CiAKLQogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHBhcmFtZXRlcnMgPSBQeUl0ZXJfTmV4dChwYXJhbWV0ZXJzX2l0ZXIpOwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMpIHsKQEAgLTY3Miw2ICs2MDksMjAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIGlmICghc3FsaXRlM19zdG10X3JlYWRvbmx5KHNlbGYtPnN0YXRlbWVudC0+c3QpKSB7CisgICAgICAgICAgICBzZWxmLT5yb3djb3VudCArPSAobG9uZylzcWxpdGUzX2NoYW5nZXMoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2VsZi0+cm93Y291bnQ9IC0xTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbXVsdGlwbGUpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0cm93aWQpOworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgbGFzdHJvd2lkID0gc3FsaXRlM19sYXN0X2luc2VydF9yb3dpZChzZWxmLT5jb25uZWN0aW9uLT5kYik7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgc2VsZi0+bGFzdHJvd2lkID0gX3B5c3FsaXRlX2xvbmdfZnJvbV9pbnQ2NChsYXN0cm93aWQpOworICAgICAgICB9CisKICAgICAgICAgaWYgKHJjID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIGlmIChtdWx0aXBsZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9Qcm9ncmFtbWluZ0Vycm9yLCAiZXhlY3V0ZW1hbnkoKSBjYW4gb25seSBleGVjdXRlIERNTCBzdGF0ZW1lbnRzLiIpOwpAQCAtNjg2LDI5ICs2MzcsNiBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+c3RhdGVtZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIHN3aXRjaCAoc3RhdGVtZW50X3R5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1VQREFURToKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX0RFTEVURToKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX0lOU0VSVDoKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1JFUExBQ0U6Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGYtPnJvd2NvdW50ID09IC0xTCkgewotICAgICAgICAgICAgICAgICAgICBzZWxmLT5yb3djb3VudCA9IDBMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzZWxmLT5yb3djb3VudCArPSAobG9uZylzcWxpdGUzX2NoYW5nZXMoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOwotICAgICAgICB9Ci0KLSAgICAgICAgUHlfREVDUkVGKHNlbGYtPmxhc3Ryb3dpZCk7Ci0gICAgICAgIGlmICghbXVsdGlwbGUgJiYgc3RhdGVtZW50X3R5cGUgPT0gU1RBVEVNRU5UX0lOU0VSVCkgewotICAgICAgICAgICAgc3FsaXRlX2ludDY0IGxhc3Ryb3dpZDsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIGxhc3Ryb3dpZCA9IHNxbGl0ZTNfbGFzdF9pbnNlcnRfcm93aWQoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOwotICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIHNlbGYtPmxhc3Ryb3dpZCA9IF9weXNxbGl0ZV9sb25nX2Zyb21faW50NjQobGFzdHJvd2lkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgICAgIHNlbGYtPmxhc3Ryb3dpZCA9IFB5X05vbmU7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAobXVsdGlwbGUpIHsKICAgICAgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgICAgICB9CkBAIC03MTYsMTUgKzY0NCw2IEBACiAgICAgfQogCiBlcnJvcjoKLSAgICAvKiBqdXN0IHRvIGJlIHN1cmUgKGltcGxpY2l0IFJPTExCQUNLcyB3aXRoIE9OIENPTkZMSUNUIFJPTExCQUNLL09SCi0gICAgICogUk9MTEJBQ0sgY291bGQgaGF2ZSBoYXBwZW5lZCAqLwotICAgICNpZmRlZiBTUUxJVEVfVkVSU0lPTl9OVU1CRVIKLSAgICAjaWYgU1FMSVRFX1ZFUlNJT05fTlVNQkVSID49IDMwMDIwMDIKLSAgICBpZiAoc2VsZi0+Y29ubmVjdGlvbiAmJiBzZWxmLT5jb25uZWN0aW9uLT5kYikKLSAgICAgICAgc2VsZi0+Y29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbiA9ICFzcWxpdGUzX2dldF9hdXRvY29tbWl0KHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKLSAgICAjZW5kaWYKLSAgICAjZW5kaWYKLQogICAgIFB5X1hERUNSRUYocGFyYW1ldGVycyk7CiAgICAgUHlfWERFQ1JFRihwYXJhbWV0ZXJzX2l0ZXIpOwogICAgIFB5X1hERUNSRUYocGFyYW1ldGVyc19saXN0KTsKQEAgLTkxMyw4ICs4MzIsNyBAQAogCiAgICAgcm93ID0gcHlzcWxpdGVfY3Vyc29yX2l0ZXJuZXh0KHNlbGYpOwogICAgIGlmICghcm93ICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIAogICAgIHJldHVybiByb3c7CkBAIC05OTUsOCArOTEzLDcgQEAKIFB5T2JqZWN0KiBweXNxbGl0ZV9ub29wKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIC8qIGRvbid0IGNhcmUsIHJldHVybiBOb25lICovCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeU9iamVjdCogcHlzcWxpdGVfY3Vyc29yX2Nsb3NlKHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCkBAIC0xMDEyLDggKzkyOSw3IEBACiAKICAgICBzZWxmLT5jbG9zZWQgPSAxOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgY3Vyc29yX21ldGhvZHNbXSA9IHsKQEAgLTEwNDksNyArOTY1LDcgQEAKICAgICB7TlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIGN1cnNvcl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBjdXJzb3JfZG9jW10gPQogUHlEb2NfU1RSKCJTUUxpdGUgZGF0YWJhc2UgY3Vyc29yIGNsYXNzLiIpOwogCiBQeVR5cGVPYmplY3QgcHlzcWxpdGVfQ3Vyc29yVHlwZSA9IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuaCBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuaAppbmRleCAxMThiYTM4Li4yOGJiZDVmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5oCkBAIC01MSwxMiArNTEsNiBAQAogICAgIFB5T2JqZWN0KiBpbl93ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KIH0gcHlzcWxpdGVfQ3Vyc29yOwogCi10eXBlZGVmIGVudW0gewotICAgIFNUQVRFTUVOVF9JTlZBTElELCBTVEFURU1FTlRfSU5TRVJULCBTVEFURU1FTlRfREVMRVRFLAotICAgIFNUQVRFTUVOVF9VUERBVEUsIFNUQVRFTUVOVF9SRVBMQUNFLCBTVEFURU1FTlRfU0VMRUNULAotICAgIFNUQVRFTUVOVF9PVEhFUgotfSBweXNxbGl0ZV9TdGF0ZW1lbnRLaW5kOwotCiBleHRlcm4gUHlUeXBlT2JqZWN0IHB5c3FsaXRlX0N1cnNvclR5cGU7CiAKIFB5T2JqZWN0KiBweXNxbGl0ZV9jdXJzb3JfZXhlY3V0ZShweXNxbGl0ZV9DdXJzb3IqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYwppbmRleCA3YTdlODYwLi5jYzQ1MzMxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCkBAIC0xMzksOCArMTM5LDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHB5c3FsaXRlX09wZXJhdGlvbmFsRXJyb3IsICJDaGFuZ2luZyB0aGUgc2hhcmVkX2NhY2hlIGZsYWcgZmFpbGVkIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIH0KIApAQCAtMTcyLDggKzE3MSw3IEBACiAgICAgaWYgKHJjID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKG1vZHVsZV9yZWdpc3Rlcl9hZGFwdGVyX2RvYywKQEAgLTE5NCw3ICsxOTIsNyBAQAogICAgIH0KIAogICAgIC8qIGNvbnZlcnQgdGhlIG5hbWUgdG8gdXBwZXIgY2FzZSAqLwotICAgIG5hbWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9yaWdfbmFtZSwgJlB5SWRfdXBwZXIsICIiKTsKKyAgICBuYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvcmlnX25hbWUsICZQeUlkX3VwcGVyLCBOVUxMKTsKICAgICBpZiAoIW5hbWUpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC0yMjEsOCArMjE5LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3NfZG9jLApAQCAtMjYxLDEzICsyNTgsMTMgQEAKIH07CiAKIHN0cnVjdCBfSW50Q29uc3RhbnRQYWlyIHsKLSAgICBjaGFyKiBjb25zdGFudF9uYW1lOworICAgIGNvbnN0IGNoYXIgKmNvbnN0YW50X25hbWU7CiAgICAgaW50IGNvbnN0YW50X3ZhbHVlOwogfTsKIAogdHlwZWRlZiBzdHJ1Y3QgX0ludENvbnN0YW50UGFpciBJbnRDb25zdGFudFBhaXI7CiAKLXN0YXRpYyBJbnRDb25zdGFudFBhaXIgX2ludF9jb25zdGFudHNbXSA9IHsKK3N0YXRpYyBjb25zdCBJbnRDb25zdGFudFBhaXIgX2ludF9jb25zdGFudHNbXSA9IHsKICAgICB7IlBBUlNFX0RFQ0xUWVBFUyIsIFBBUlNFX0RFQ0xUWVBFU30sCiAgICAgeyJQQVJTRV9DT0xOQU1FUyIsIFBBUlNFX0NPTE5BTUVTfSwKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCmluZGV4IGU4NzA2MzMuLjdiOTgwMTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKQEAgLTU0LDYgKzU0LDcgQEAKICAgICBpbnQgcmM7CiAgICAgY29uc3QgY2hhciogc3FsX2NzdHI7CiAgICAgUHlfc3NpemVfdCBzcWxfY3N0cl9sZW47CisgICAgY29uc3QgY2hhciogcDsKIAogICAgIHNlbGYtPnN0ID0gTlVMTDsKICAgICBzZWxmLT5pbl91c2UgPSAwOwpAQCAtNzIsNiArNzMsMjMgQEAKICAgICBQeV9JTkNSRUYoc3FsKTsKICAgICBzZWxmLT5zcWwgPSBzcWw7CiAKKyAgICAvKiBkZXRlcm1pbmUgaWYgdGhlIHN0YXRlbWVudCBpcyBhIERETCBzdGF0ZW1lbnQgKi8KKyAgICBzZWxmLT5pc19kZGwgPSAwOworICAgIGZvciAocCA9IHNxbF9jc3RyOyAqcCAhPSAwOyBwKyspIHsKKyAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnICc6CisgICAgICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICBjYXNlICdcbic6CisgICAgICAgICAgICBjYXNlICdcdCc6CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzZWxmLT5pc19kZGwgPSAoUHlPU19zdHJuaWNtcChwLCAiY3JlYXRlICIsIDcpID09IDApCisgICAgICAgICAgICAgICAgICAgIHx8IChQeU9TX3N0cm5pY21wKHAsICJkcm9wICIsIDUpID09IDApCisgICAgICAgICAgICAgICAgICAgIHx8IChQeU9TX3N0cm5pY21wKHAsICJyZWluZGV4ICIsIDgpID09IDApOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmMgPSBzcWxpdGUzX3ByZXBhcmUoY29ubmVjdGlvbi0+ZGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsX2NzdHIsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmggYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKaW5kZXggNDY4MTQ0My4uNmVlZjE2OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaApAQCAtMzgsNiArMzgsNyBAQAogICAgIHNxbGl0ZTNfc3RtdCogc3Q7CiAgICAgUHlPYmplY3QqIHNxbDsKICAgICBpbnQgaW5fdXNlOworICAgIGludCBpc19kZGw7CiAgICAgUHlPYmplY3QqIGluX3dlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogfSBweXNxbGl0ZV9TdGF0ZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMgYi9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jCmluZGV4IDMxMmZlM2IuLjM1MWIxYjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYwpAQCAtMTEzLDcgKzExMyw2IEBACiBQeU9iamVjdCAqCiBfcHlzcWxpdGVfbG9uZ19mcm9tX2ludDY0KHNxbGl0ZV9pbnQ2NCB2YWx1ZSkKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogIyBpZiBTSVpFT0ZfTE9OR19MT05HIDwgOAogICAgIGlmICh2YWx1ZSA+IFBZX0xMT05HX01BWCB8fCB2YWx1ZSA8IFBZX0xMT05HX01JTikgewogICAgICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwKQEAgLTEyNCwxNCArMTIzLDYgQEAKICAgICBpZiAodmFsdWUgPiBMT05HX01BWCB8fCB2YWx1ZSA8IExPTkdfTUlOKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CiAjIGVuZGlmCi0jZWxzZQotIyBpZiBTSVpFT0ZfTE9ORyA8IDgKLSAgICBpZiAodmFsdWUgPiBMT05HX01BWCB8fCB2YWx1ZSA8IExPTkdfTUlOKSB7Ci0gICAgICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoJnZhbHVlLCBzaXplb2YodmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX0xJVFRMRV9FTkRJQU4sIDEgLyogc2lnbmVkICovKTsKLSAgICB9Ci0jIGVuZGlmCi0jZW5kaWYKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QodmFsdWUsIHNxbGl0ZV9pbnQ2NCwgbG9uZykpOwogfQogCkBAIC0xMzksMjMgKzEzMCwxMyBAQAogX3B5c3FsaXRlX2xvbmdfYXNfaW50NjQoUHlPYmplY3QgKiBweV92YWwpCiB7CiAgICAgaW50IG92ZXJmbG93OwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhweV92YWwsICZvdmVyZmxvdyk7Ci0jZWxzZQotICAgIGxvbmcgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cocHlfdmFsLCAmb3ZlcmZsb3cpOwotI2VuZGlmCisgICAgbG9uZyBsb25nIHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhweV92YWwsICZvdmVyZmxvdyk7CiAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIW92ZXJmbG93KSB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICMgaWYgU0laRU9GX0xPTkdfTE9ORyA+IDgKICAgICAgICAgaWYgKC0weDgwMDAwMDAwMDAwMDAwMDBMTCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweDdGRkZGRkZGRkZGRkZGRkZMTCkKICMgZW5kaWYKLSNlbHNlCi0jIGlmIFNJWkVPRl9MT05HID4gOAotICAgICAgICBpZiAoLTB4ODAwMDAwMDAwMDAwMDAwMEwgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHg3RkZGRkZGRkZGRkZGRkZGTCkKLSMgZW5kaWYKLSNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KICAgICBlbHNlIGlmIChzaXplb2YodmFsdWUpIDwgc2l6ZW9mKHNxbGl0ZV9pbnQ2NCkpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NyZS5jIGIvTW9kdWxlcy9fc3JlLmMKaW5kZXggMDliNTgzNS4uNjljN2JjMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3JlLmMKKysrIGIvTW9kdWxlcy9fc3JlLmMKQEAgLTM1LDcgKzM1LDcgQEAKICAqIG90aGVyIGNvbXBhdGliaWxpdHkgd29yay4KICAqLwogCi1zdGF0aWMgY2hhciBjb3B5cmlnaHRbXSA9CitzdGF0aWMgY29uc3QgY2hhciBjb3B5cmlnaHRbXSA9CiAgICAgIiBTUkUgMi4yLjIgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDIgYnkgU2VjcmV0IExhYnMgQUIgIjsKIAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCkBAIC02Miw5ICs2Miw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogb3B0aW9uYWwgZmVhdHVyZXMgKi8KIAotLyogZW5hYmxlcyBmYXN0IHNlYXJjaGluZyAqLwotI2RlZmluZSBVU0VfRkFTVF9TRUFSQ0gKLQogLyogZW5hYmxlcyBjb3B5L2RlZXBjb3B5IGhhbmRsaW5nICh3b3JrIGluIHByb2dyZXNzKSAqLwogI3VuZGVmIFVTRV9CVUlMVElOX0NPUFkKIApAQCAtNzE3LDcgKzcxNCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWNhbGwoY2hhciogbW9kdWxlLCBjaGFyKiBmdW5jdGlvbiwgUHlPYmplY3QqIGFyZ3MpCitjYWxsKGNvbnN0IGNoYXIqIG1vZHVsZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIFB5T2JqZWN0KiBhcmdzKQogewogICAgIFB5T2JqZWN0KiBuYW1lOwogICAgIFB5T2JqZWN0KiBtb2Q7CkBAIC0xMDU5LDcgKzEwNTYsNiBAQAogICAgIFB5T2JqZWN0KiBqb2luZXI7CiAgICAgUHlPYmplY3QqIGl0ZW07CiAgICAgUHlPYmplY3QqIGZpbHRlcjsKLSAgICBQeU9iamVjdCogYXJnczsKICAgICBQeU9iamVjdCogbWF0Y2g7CiAgICAgdm9pZCogcHRyOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOwpAQCAtMTE2MSwxMyArMTE1Nyw3IEBACiAgICAgICAgICAgICBtYXRjaCA9IHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgMSk7CiAgICAgICAgICAgICBpZiAoIW1hdGNoKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIG1hdGNoKTsKLSAgICAgICAgICAgIGlmICghYXJncykgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtYXRjaCk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGl0ZW0gPSBQeU9iamVjdF9DYWxsT2JqZWN0KGZpbHRlciwgYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICBpdGVtID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZpbHRlciwgbWF0Y2gpOwogICAgICAgICAgICAgUHlfREVDUkVGKG1hdGNoKTsKICAgICAgICAgICAgIGlmICghaXRlbSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTU5Miw3ICsxNTgyLDcgQEAKICAgICAgICAgc2tpcCA9ICpjb2RlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBWVFJBQ0UoKCIlbHUgKHNraXAgdG8gJXApXG4iLCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylza2lwLCBjb2RlK3NraXApKTsgICAgICAgIFwKLSAgICAgICAgaWYgKHNraXAtYWRqID4gKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkpICAgICAgXAorICAgICAgICBpZiAoc2tpcC1hZGogPiAodWludHB0cl90KShlbmQgLSBjb2RlKSkgICAgICBcCiAgICAgICAgICAgICBGQUlMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgY29kZSsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCkBAIC0xNjI2LDcgKzE2MTYsNyBAQAogCiAgICAgICAgIGNhc2UgU1JFX09QX0NIQVJTRVQ6CiAgICAgICAgICAgICBvZmZzZXQgPSAyNTYvU1JFX0NPREVfQklUUzsgLyogMjU2LWJpdCBiaXRtYXAgKi8KLSAgICAgICAgICAgIGlmIChvZmZzZXQgPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPiAodWludHB0cl90KShlbmQgLSBjb2RlKSkKICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgY29kZSArPSBvZmZzZXQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE2MzQsNyArMTYyNCw3IEBACiAgICAgICAgIGNhc2UgU1JFX09QX0JJR0NIQVJTRVQ6CiAgICAgICAgICAgICBHRVRfQVJHOyAvKiBOdW1iZXIgb2YgYmxvY2tzICovCiAgICAgICAgICAgICBvZmZzZXQgPSAyNTYvc2l6ZW9mKFNSRV9DT0RFKTsgLyogMjU2LWJ5dGUgdGFibGUgKi8KLSAgICAgICAgICAgIGlmIChvZmZzZXQgPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPiAodWludHB0cl90KShlbmQgLSBjb2RlKSkKICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgLyogTWFrZSBzdXJlIHRoYXQgZWFjaCBieXRlIHBvaW50cyB0byBhIHZhbGlkIGJsb2NrICovCiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKQEAgLTE2NDMsNyArMTYzMyw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb2RlICs9IG9mZnNldDsKICAgICAgICAgICAgIG9mZnNldCA9IGFyZyAqICgyNTYvU1JFX0NPREVfQklUUyk7IC8qIDI1Ni1iaXQgYml0bWFwIHRpbWVzIGFyZyAqLwotICAgICAgICAgICAgaWYgKG9mZnNldCA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKQorICAgICAgICAgICAgaWYgKG9mZnNldCA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKQogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICBjb2RlICs9IG9mZnNldDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc5NCwxMSArMTc4NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOyBwcmVmaXhfbGVuID0gYXJnOwogICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOwogICAgICAgICAgICAgICAgICAgICAvKiBIZXJlIGNvbWVzIHRoZSBwcmVmaXggc3RyaW5nICovCi0gICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKFB5X3VpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQorICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4X2xlbiA+ICh1aW50cHRyX3QpKG5ld2NvZGUgLSBjb2RlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAgICAgICAgIGNvZGUgKz0gcHJlZml4X2xlbjsKICAgICAgICAgICAgICAgICAgICAgLyogQW5kIGhlcmUgY29tZXMgdGhlIG92ZXJsYXAgdGFibGUgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAoUHlfdWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKHVpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICAgICAgLyogRWFjaCBvdmVybGFwIHZhbHVlIHNob3VsZCBiZSA8IHByZWZpeF9sZW4gKi8KICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHByZWZpeF9sZW47IGkrKykgewpAQCAtMTkyNyw3ICsxOTE3LDcgQEAKICAgICAgICAgICAgICAgIHRvIGFsbG93IGFyYml0cmFyeSBqdW1wcyBhbnl3aGVyZSBpbiB0aGUgY29kZTsgc28gd2UganVzdCBsb29rCiAgICAgICAgICAgICAgICBmb3IgYSBKVU1QIG9wY29kZSBwcmVjZWRpbmcgb3VyIHNraXAgdGFyZ2V0LgogICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChza2lwID49IDMgJiYgc2tpcC0zIDwgKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkgJiYKKyAgICAgICAgICAgIGlmIChza2lwID49IDMgJiYgc2tpcC0zIDwgKHVpbnRwdHJfdCkoZW5kIC0gY29kZSkgJiYKICAgICAgICAgICAgICAgICBjb2RlW3NraXAtM10gPT0gU1JFX09QX0pVTVApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgVlRSQUNFKCgiYm90aCB0aGVuIGFuZCBlbHNlIHBhcnRzIHByZXNlbnRcbiIpKTsKQEAgLTIwNTIsOCArMjA0Miw5IEBACiAgICAgICAgIC8qIERlZmF1bHQgdmFsdWUgKi8KICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoUHlMb25nX0NoZWNrKGluZGV4KSkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Bc1NzaXplX3QoaW5kZXgpOworICAgIGlmIChQeUluZGV4X0NoZWNrKGluZGV4KSkgeworICAgICAgICByZXR1cm4gUHlOdW1iZXJfQXNTc2l6ZV90KGluZGV4LCBOVUxMKTsKKyAgICB9CiAKICAgICBpID0gLTE7CiAKQEAgLTIxMzAsNiArMjEyMSwxMiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK21hdGNoX2dldGl0ZW0oTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lKQoreworICAgIHJldHVybiBtYXRjaF9nZXRzbGljZShzZWxmLCBuYW1lLCBQeV9Ob25lKTsKK30KKwogLypbY2xpbmljIGlucHV0XQogX3NyZS5TUkVfTWF0Y2guZ3JvdXBzCiAKQEAgLTI3MTUsNiArMjcxMiwxMyBAQAogICAgIHBhdHRlcm5fZ2V0c2V0LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogfTsKIAorLyogTWF0Y2ggb2JqZWN0cyBkbyBub3Qgc3VwcG9ydCBsZW5ndGggb3IgYXNzaWdubWVudCwgYnV0IGRvIHN1cHBvcnQKKyAgIF9fZ2V0aXRlbV9fLiAqLworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbWF0Y2hfYXNfbWFwcGluZyA9IHsKKyAgICBOVUxMLAorICAgIChiaW5hcnlmdW5jKW1hdGNoX2dldGl0ZW0sCisgICAgTlVMTAorfTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1hdGNoX21ldGhvZHNbXSA9IHsKICAgICB7Imdyb3VwIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9ncm91cCwgTUVUSF9WQVJBUkdTLCBtYXRjaF9ncm91cF9kb2N9LApAQCAtMjc2MCw3ICsyNzY0LDcgQEAKICAgICAocmVwcmZ1bmMpbWF0Y2hfcmVwciwgICAgICAgLyogdHBfcmVwciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgICZtYXRjaF9hc19tYXBwaW5nLCAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NzbC5jIGIvTW9kdWxlcy9fc3NsLmMKaW5kZXggYTc5YzNhOC4uYjE5ODg1NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3NsLmMKKysrIGIvTW9kdWxlcy9fc3NsLmMKQEAgLTE0MCw2ICsxNDAsOCBAQAogI2VuZGlmCiAKICNkZWZpbmUgVExTX21ldGhvZCBTU0x2MjNfbWV0aG9kCisjZGVmaW5lIFRMU19jbGllbnRfbWV0aG9kIFNTTHYyM19jbGllbnRfbWV0aG9kCisjZGVmaW5lIFRMU19zZXJ2ZXJfbWV0aG9kIFNTTHYyM19zZXJ2ZXJfbWV0aG9kCiAKIHN0YXRpYyBpbnQgWDUwOV9OQU1FX0VOVFJZX3NldChjb25zdCBYNTA5X05BTUVfRU5UUlkgKm5lKQogewpAQCAtMTQ3LDEwICsxNDksMTIgQEAKIH0KIAogI2lmbmRlZiBPUEVOU1NMX05PX0NPTVAKKy8qIExDT1ZfRVhDTF9TVEFSVCAqLwogc3RhdGljIGludCBDT01QX2dldF90eXBlKGNvbnN0IENPTVBfTUVUSE9EICptZXRoKQogewogICAgIHJldHVybiBtZXRoLT50eXBlOwogfQorLyogTENPVl9FWENMX1NUT1AgKi8KICNlbmRpZgogCiBzdGF0aWMgcGVtX3Bhc3N3b3JkX2NiICpTU0xfQ1RYX2dldF9kZWZhdWx0X3Bhc3N3ZF9jYihTU0xfQ1RYICpjdHgpCkBAIC0xODcsNiArMTkxLDE5IEBACiB7CiAgICAgcmV0dXJuIHN0b3JlLT5wYXJhbTsKIH0KKworc3RhdGljIGludAorU1NMX1NFU1NJT05faGFzX3RpY2tldChjb25zdCBTU0xfU0VTU0lPTiAqcykKK3sKKyAgICByZXR1cm4gKHMtPnRsc2V4dF90aWNrbGVuID4gMCkgPyAxIDogMDsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcKK1NTTF9TRVNTSU9OX2dldF90aWNrZXRfbGlmZXRpbWVfaGludChjb25zdCBTU0xfU0VTU0lPTiAqcykKK3sKKyAgICByZXR1cm4gcy0+dGxzZXh0X3RpY2tfbGlmZXRpbWVfaGludDsKK30KKwogI2VuZGlmIC8qIE9wZW5TU0wgPCAxLjEuMCBvciBMaWJyZVNTTCAqLwogCiAKQEAgLTIyMCwxNCArMjM3LDE2IEBACiBlbnVtIHB5X3NzbF92ZXJzaW9uIHsKICAgICBQWV9TU0xfVkVSU0lPTl9TU0wyLAogICAgIFBZX1NTTF9WRVJTSU9OX1NTTDM9MSwKLSAgICBQWV9TU0xfVkVSU0lPTl9UTFMsCisgICAgUFlfU1NMX1ZFUlNJT05fVExTLCAvKiBTU0x2MjMgKi8KICNpZiBIQVZFX1RMU3YxXzIKICAgICBQWV9TU0xfVkVSU0lPTl9UTFMxLAogICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMSwKLSAgICBQWV9TU0xfVkVSU0lPTl9UTFMxXzIKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFMxXzIsCiAjZWxzZQotICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFMxLAogI2VuZGlmCisgICAgUFlfU1NMX1ZFUlNJT05fVExTX0NMSUVOVD0weDEwLAorICAgIFBZX1NTTF9WRVJTSU9OX1RMU19TRVJWRVIsCiB9OwogCiAjaWZkZWYgV0lUSF9USFJFQUQKQEAgLTI5MywyNSArMzEyLDM1IEBACiAgICAgaW50IGVvZl93cml0dGVuOwogfSBQeVNTTE1lbW9yeUJJTzsKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBTU0xfU0VTU0lPTiAqc2Vzc2lvbjsKKyAgICBQeVNTTENvbnRleHQgKmN0eDsKK30gUHlTU0xTZXNzaW9uOworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMQ29udGV4dF9UeXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTFNvY2tldF9UeXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTE1lbW9yeUJJT19UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTFNlc3Npb25fVHlwZTsKIAogLypbY2xpbmljIGlucHV0XQogbW9kdWxlIF9zc2wKIGNsYXNzIF9zc2wuX1NTTENvbnRleHQgIlB5U1NMQ29udGV4dCAqIiAiJlB5U1NMQ29udGV4dF9UeXBlIgogY2xhc3MgX3NzbC5fU1NMU29ja2V0ICJQeVNTTFNvY2tldCAqIiAiJlB5U1NMU29ja2V0X1R5cGUiCiBjbGFzcyBfc3NsLk1lbW9yeUJJTyAiUHlTU0xNZW1vcnlCSU8gKiIgIiZQeVNTTE1lbW9yeUJJT19UeXBlIgorY2xhc3MgX3NzbC5TU0xTZXNzaW9uICJQeVNTTFNlc3Npb24gKiIgIiZQeVNTTFNlc3Npb25fVHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTdiZjdjYjgzMjYzOGUyZTFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWJkYzY3ZmFmZWVhYTgxMDldKi8KIAogI2luY2x1ZGUgImNsaW5pYy9fc3NsLmMuaCIKIAogc3RhdGljIGludCBQeVNTTF9zZWxlY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgd3JpdGluZywgX1B5VGltZV90IHRpbWVvdXQpOwogCisKICNkZWZpbmUgUHlTU0xDb250ZXh0X0NoZWNrKHYpICAgKFB5X1RZUEUodikgPT0gJlB5U1NMQ29udGV4dF9UeXBlKQogI2RlZmluZSBQeVNTTFNvY2tldF9DaGVjayh2KSAgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xTb2NrZXRfVHlwZSkKICNkZWZpbmUgUHlTU0xNZW1vcnlCSU9fQ2hlY2sodikgICAgKFB5X1RZUEUodikgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpCisjZGVmaW5lIFB5U1NMU2Vzc2lvbl9DaGVjayh2KSAgIChQeV9UWVBFKHYpID09ICZQeVNTTFNlc3Npb25fVHlwZSkKIAogdHlwZWRlZiBlbnVtIHsKICAgICBTT0NLRVRfSVNfTk9OQkxPQ0tJTkcsCkBAIC00NTUsNyArNDg0LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX1NldEVycm9yKFB5U1NMU29ja2V0ICpvYmosIGludCByZXQsIGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQorUHlTU0xfU2V0RXJyb3IoUHlTU0xTb2NrZXQgKm9iaiwgaW50IHJldCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCiB7CiAgICAgUHlPYmplY3QgKnR5cGUgPSBQeVNTTEVycm9yT2JqZWN0OwogICAgIGNoYXIgKmVycnN0ciA9IE5VTEw7CkBAIC01MzcsNyArNTY2LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zZXRTU0xFcnJvciAoY2hhciAqZXJyc3RyLCBpbnQgZXJyY29kZSwgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pIHsKK19zZXRTU0xFcnJvciAoY29uc3QgY2hhciAqZXJyc3RyLCBpbnQgZXJyY29kZSwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pIHsKIAogICAgIGlmIChlcnJzdHIgPT0gTlVMTCkKICAgICAgICAgZXJyY29kZSA9IEVSUl9wZWVrX2xhc3RfZXJyb3IoKTsKQEAgLTE1NDcsNiArMTU3Niw2NSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAyMDAwVUwKK3N0YXRpYyBQeU9iamVjdCAqCitjaXBoZXJfdG9fZGljdChjb25zdCBTU0xfQ0lQSEVSICpjaXBoZXIpCit7CisgICAgY29uc3QgY2hhciAqY2lwaGVyX25hbWUsICpjaXBoZXJfcHJvdG9jb2w7CisKKyAgICB1bnNpZ25lZCBsb25nIGNpcGhlcl9pZDsKKyAgICBpbnQgYWxnX2JpdHMsIHN0cmVuZ3RoX2JpdHMsIGxlbjsKKyAgICBjaGFyIGJ1Zls1MTJdID0gezB9OworI2lmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICBpbnQgYWVhZCwgbmlkOworICAgIGNvbnN0IGNoYXIgKnNrY2lwaGVyID0gTlVMTCwgKmRpZ2VzdCA9IE5VTEwsICpreCA9IE5VTEwsICphdXRoID0gTlVMTDsKKyNlbmRpZgorCisgICAgLyogY2FuIGJlIE5VTEwgKi8KKyAgICBjaXBoZXJfbmFtZSA9IFNTTF9DSVBIRVJfZ2V0X25hbWUoY2lwaGVyKTsKKyAgICBjaXBoZXJfcHJvdG9jb2wgPSBTU0xfQ0lQSEVSX2dldF92ZXJzaW9uKGNpcGhlcik7CisgICAgY2lwaGVyX2lkID0gU1NMX0NJUEhFUl9nZXRfaWQoY2lwaGVyKTsKKyAgICBTU0xfQ0lQSEVSX2Rlc2NyaXB0aW9uKGNpcGhlciwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOworICAgIGxlbiA9IHN0cmxlbihidWYpOworICAgIGlmIChsZW4gPiAxICYmIGJ1ZltsZW4tMV0gPT0gJ1xuJykKKyAgICAgICAgYnVmW2xlbi0xXSA9ICdcMCc7CisgICAgc3RyZW5ndGhfYml0cyA9IFNTTF9DSVBIRVJfZ2V0X2JpdHMoY2lwaGVyLCAmYWxnX2JpdHMpOworCisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIGFlYWQgPSBTU0xfQ0lQSEVSX2lzX2FlYWQoY2lwaGVyKTsKKyAgICBuaWQgPSBTU0xfQ0lQSEVSX2dldF9jaXBoZXJfbmlkKGNpcGhlcik7CisgICAgc2tjaXBoZXIgPSBuaWQgIT0gTklEX3VuZGVmID8gT0JKX25pZDJsbihuaWQpIDogTlVMTDsKKyAgICBuaWQgPSBTU0xfQ0lQSEVSX2dldF9kaWdlc3RfbmlkKGNpcGhlcik7CisgICAgZGlnZXN0ID0gbmlkICE9IE5JRF91bmRlZiA/IE9CSl9uaWQybG4obmlkKSA6IE5VTEw7CisgICAgbmlkID0gU1NMX0NJUEhFUl9nZXRfa3hfbmlkKGNpcGhlcik7CisgICAga3ggPSBuaWQgIT0gTklEX3VuZGVmID8gT0JKX25pZDJsbihuaWQpIDogTlVMTDsKKyAgICBuaWQgPSBTU0xfQ0lQSEVSX2dldF9hdXRoX25pZChjaXBoZXIpOworICAgIGF1dGggPSBuaWQgIT0gTklEX3VuZGVmID8gT0JKX25pZDJsbihuaWQpIDogTlVMTDsKKyNlbmRpZgorCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoCisgICAgICAgICJ7c2tzc3Nzc3NzaXNpIgorI2lmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICAgICAgInNPc3Nzc3Nzc3MiCisjZW5kaWYKKyAgICAgICAgIn0iLAorICAgICAgICAiaWQiLCBjaXBoZXJfaWQsCisgICAgICAgICJuYW1lIiwgY2lwaGVyX25hbWUsCisgICAgICAgICJwcm90b2NvbCIsIGNpcGhlcl9wcm90b2NvbCwKKyAgICAgICAgImRlc2NyaXB0aW9uIiwgYnVmLAorICAgICAgICAic3RyZW5ndGhfYml0cyIsIHN0cmVuZ3RoX2JpdHMsCisgICAgICAgICJhbGdfYml0cyIsIGFsZ19iaXRzCisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgICAgICAsImFlYWQiLCBhZWFkID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlLAorICAgICAgICAic3ltbWV0cmljIiwgc2tjaXBoZXIsCisgICAgICAgICJkaWdlc3QiLCBkaWdlc3QsCisgICAgICAgICJrZWEiLCBreCwKKyAgICAgICAgImF1dGgiLCBhdXRoCisjZW5kaWYKKyAgICAgICApOworfQorI2VuZGlmCisKIC8qW2NsaW5pYyBpbnB1dF0KIF9zc2wuX1NTTFNvY2tldC5zaGFyZWRfY2lwaGVycwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtMjI1NSw2ICsyMzQzLDE1MiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKKyNpZmRlZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisKK3N0YXRpYyBTU0xfU0VTU0lPTioKK19zc2xfc2Vzc2lvbl9kdXAoU1NMX1NFU1NJT04gKnNlc3Npb24pIHsKKyAgICBTU0xfU0VTU0lPTiAqbmV3c2Vzc2lvbiA9IE5VTEw7CisgICAgaW50IHNsZW47CisgICAgdW5zaWduZWQgY2hhciAqc2VuYyA9IE5VTEwsICpwOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNvbnN0X3A7CisKKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBzZXNzaW9uIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogZ2V0IGxlbmd0aCAqLworICAgIHNsZW4gPSBpMmRfU1NMX1NFU1NJT04oc2Vzc2lvbiwgTlVMTCk7CisgICAgaWYgKHNsZW4gPT0gMCB8fCBzbGVuID4gMHhGRjAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaTJkKCkgZmFpbGVkLiIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoKHNlbmMgPSBQeU1lbV9NYWxsb2Moc2xlbikpID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcCA9IHNlbmM7CisgICAgaWYgKCFpMmRfU1NMX1NFU1NJT04oc2Vzc2lvbiwgJnApKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaTJkKCkgZmFpbGVkLiIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBjb25zdF9wID0gc2VuYzsKKyAgICBuZXdzZXNzaW9uID0gZDJpX1NTTF9TRVNTSU9OKE5VTEwsICZjb25zdF9wLCBzbGVuKTsKKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5TWVtX0ZyZWUoc2VuYyk7CisgICAgcmV0dXJuIG5ld3Nlc3Npb247CisgIGVycm9yOgorICAgIGlmIChzZW5jICE9IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRnJlZShzZW5jKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9zZXNzaW9uKFB5U1NMU29ja2V0ICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgLyogZ2V0X3Nlc3Npb24gY2FuIHJldHVybiBzZXNzaW9ucyBmcm9tIGEgc2VydmVyLXNpZGUgY29ubmVjdGlvbiwKKyAgICAgKiBpdCBkb2VzIG5vdCBjaGVjayBmb3IgaGFuZHNoYWtlIGRvbmUgb3IgY2xpZW50IHNvY2tldC4gKi8KKyAgICBQeVNTTFNlc3Npb24gKnB5c2VzczsKKyAgICBTU0xfU0VTU0lPTiAqc2Vzc2lvbjsKKworI2lmZGVmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICAvKiBkdXBsaWNhdGUgc2Vzc2lvbiBhcyB3b3JrYXJvdW5kIGZvciBzZXNzaW9uIGJ1ZyBpbiBPcGVuU1NMIDEuMS4wLAorICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NsL29wZW5zc2wvaXNzdWVzLzE1NTAgKi8KKyAgICBzZXNzaW9uID0gU1NMX2dldDBfc2Vzc2lvbihzZWxmLT5zc2wpOyAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCisgICAgaWYgKHNlc3Npb24gPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgaWYgKChzZXNzaW9uID0gX3NzbF9zZXNzaW9uX2R1cChzZXNzaW9uKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisjZWxzZQorICAgIHNlc3Npb24gPSBTU0xfZ2V0MV9zZXNzaW9uKHNlbGYtPnNzbCk7CisgICAgaWYgKHNlc3Npb24gPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisjZW5kaWYKKyAgICBweXNlc3MgPSBQeU9iamVjdF9HQ19OZXcoUHlTU0xTZXNzaW9uLCAmUHlTU0xTZXNzaW9uX1R5cGUpOworICAgIGlmIChweXNlc3MgPT0gTlVMTCkgeworICAgICAgICBTU0xfU0VTU0lPTl9mcmVlKHNlc3Npb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBhc3NlcnQoc2VsZi0+Y3R4KTsKKyAgICBweXNlc3MtPmN0eCA9IHNlbGYtPmN0eDsKKyAgICBQeV9JTkNSRUYocHlzZXNzLT5jdHgpOworICAgIHB5c2Vzcy0+c2Vzc2lvbiA9IHNlc3Npb247CisgICAgUHlPYmplY3RfR0NfVHJhY2socHlzZXNzKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopcHlzZXNzOworfQorCitzdGF0aWMgaW50IFB5U1NMX3NldF9zZXNzaW9uKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsb3N1cmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgUHlTU0xTZXNzaW9uICpweXNlc3M7CisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIFNTTF9TRVNTSU9OICpzZXNzaW9uOworI2VuZGlmCisgICAgaW50IHJlc3VsdDsKKworICAgIGlmICghUHlTU0xTZXNzaW9uX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiVmFsdWUgaXMgbm90IGEgU1NMU2Vzc2lvbi4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBweXNlc3MgPSAoUHlTU0xTZXNzaW9uICopdmFsdWU7CisKKyAgICBpZiAoc2VsZi0+Y3R4LT5jdHggIT0gcHlzZXNzLT5jdHgtPmN0eCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJTZXNzaW9uIHJlZmVycyB0byBhIGRpZmZlcmVudCBTU0xDb250ZXh0LiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzZWxmLT5zb2NrZXRfdHlwZSAhPSBQWV9TU0xfQ0xJRU5UKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzZXQgc2Vzc2lvbiBmb3Igc2VydmVyLXNpZGUgU1NMU29ja2V0LiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzZWxmLT5oYW5kc2hha2VfZG9uZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2V0IHNlc3Npb24gYWZ0ZXIgaGFuZHNoYWtlLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2lmZGVmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICAvKiBkdXBsaWNhdGUgc2Vzc2lvbiAqLworICAgIGlmICgoc2Vzc2lvbiA9IF9zc2xfc2Vzc2lvbl9kdXAocHlzZXNzLT5zZXNzaW9uKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJlc3VsdCA9IFNTTF9zZXRfc2Vzc2lvbihzZWxmLT5zc2wsIHNlc3Npb24pOworICAgIC8qIGZyZWUgZHVwbGljYXRlLCBTU0xfc2V0X3Nlc3Npb24oKSBidW1wcyByZWYgY291bnQgKi8KKyAgICBTU0xfU0VTU0lPTl9mcmVlKHNlc3Npb24pOworI2Vsc2UKKyAgICByZXN1bHQgPSBTU0xfc2V0X3Nlc3Npb24oc2VsZi0+c3NsLCBweXNlc3MtPnNlc3Npb24pOworI2VuZGlmCisgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfc2V0X3Nlc3Npb25fZG9jLAorIl9zZXR0ZXJfc2Vzc2lvbihzZXNzaW9uKVxuXAorXAorR2V0IC8gc2V0IFNTTFNlc3Npb24uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9nZXRfc2Vzc2lvbl9yZXVzZWQoUHlTU0xTb2NrZXQgKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICBpZiAoU1NMX3Nlc3Npb25fcmV1c2VkKHNlbGYtPnNzbCkpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9zZXNzaW9uX3JldXNlZF9kb2MsCisiV2FzIHRoZSBjbGllbnQgc2Vzc2lvbiByZXVzZWQgZHVyaW5nIGhhbmRzaGFrZT8iKTsKKwogc3RhdGljIFB5R2V0U2V0RGVmIHNzbF9nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJjb250ZXh0IiwgKGdldHRlcikgUHlTU0xfZ2V0X2NvbnRleHQsCiAgICAgICAgICAgICAgICAgKHNldHRlcikgUHlTU0xfc2V0X2NvbnRleHQsIFB5U1NMX3NldF9jb250ZXh0X2RvY30sCkBAIC0yMjY0LDYgKzI0OTgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5U1NMX2dldF9zZXJ2ZXJfaG9zdG5hbWVfZG9jfSwKICAgICB7Im93bmVyIiwgKGdldHRlcikgUHlTU0xfZ2V0X293bmVyLCAoc2V0dGVyKSBQeVNTTF9zZXRfb3duZXIsCiAgICAgICAgICAgICAgIFB5U1NMX2dldF9vd25lcl9kb2N9LAorICAgIHsic2Vzc2lvbiIsIChnZXR0ZXIpIFB5U1NMX2dldF9zZXNzaW9uLAorICAgICAgICAgICAgICAgIChzZXR0ZXIpIFB5U1NMX3NldF9zZXNzaW9uLCBQeVNTTF9zZXRfc2Vzc2lvbl9kb2N9LAorICAgIHsic2Vzc2lvbl9yZXVzZWQiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfc2Vzc2lvbl9yZXVzZWQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMX2dldF9zZXNzaW9uX3JldXNlZF9kb2N9LAogICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjMyMyw2ICsyNTYxLDMzIEBACiAgKiBfU1NMQ29udGV4dCBvYmplY3RzCiAgKi8KIAorc3RhdGljIGludAorX3NldF92ZXJpZnlfbW9kZShTU0xfQ1RYICpjdHgsIGVudW0gcHlfc3NsX2NlcnRfcmVxdWlyZW1lbnRzIG4pCit7CisgICAgaW50IG1vZGU7CisgICAgaW50ICgqdmVyaWZ5X2NiKShpbnQsIFg1MDlfU1RPUkVfQ1RYICopID0gTlVMTDsKKworICAgIHN3aXRjaChuKSB7CisgICAgY2FzZSBQWV9TU0xfQ0VSVF9OT05FOgorICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9OT05FOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBZX1NTTF9DRVJUX09QVElPTkFMOgorICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9QRUVSOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBZX1NTTF9DRVJUX1JFUVVJUkVEOgorICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9QRUVSIHwgU1NMX1ZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgdmFsdWUgZm9yIHZlcmlmeV9tb2RlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgLyoga2VlcCBjdXJyZW50IHZlcmlmeSBjYiAqLworICAgIHZlcmlmeV9jYiA9IFNTTF9DVFhfZ2V0X3ZlcmlmeV9jYWxsYmFjayhjdHgpOworICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShjdHgsIG1vZGUsIHZlcmlmeV9jYik7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qW2NsaW5pYyBpbnB1dF0KIEBjbGFzc21ldGhvZAogX3NzbC5fU1NMQ29udGV4dC5fX25ld19fCkBAIC0yMzM3LDYgKzI2MDIsNyBAQAogICAgIFB5U1NMQ29udGV4dCAqc2VsZjsKICAgICBsb25nIG9wdGlvbnM7CiAgICAgU1NMX0NUWCAqY3R4ID0gTlVMTDsKKyAgICBpbnQgcmVzdWx0OwogI2lmIGRlZmluZWQoU1NMX01PREVfUkVMRUFTRV9CVUZGRVJTKQogICAgIHVuc2lnbmVkIGxvbmcgbGlidmVyOwogI2VuZGlmCkBAIC0yMzU4LDggKzI2MjQsMTIgQEAKICAgICBlbHNlIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1NTTDIpCiAgICAgICAgIGN0eCA9IFNTTF9DVFhfbmV3KFNTTHYyX21ldGhvZCgpKTsKICNlbmRpZgotICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTKQorICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTKSAvKiBTU0x2MjMgKi8KICAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoVExTX21ldGhvZCgpKTsKKyAgICBlbHNlIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1RMU19DTElFTlQpCisgICAgICAgIGN0eCA9IFNTTF9DVFhfbmV3KFRMU19jbGllbnRfbWV0aG9kKCkpOworICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTX1NFUlZFUikKKyAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoVExTX3NlcnZlcl9tZXRob2QoKSk7CiAgICAgZWxzZQogICAgICAgICBwcm90b192ZXJzaW9uID0gLTE7CiAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKQEAgLTIzOTIsMTYgKzI2NjIsNTcgQEAKICAgICBzZWxmLT5zZXRfaG9zdG5hbWUgPSBOVUxMOwogI2VuZGlmCiAgICAgLyogRG9uJ3QgY2hlY2sgaG9zdCBuYW1lIGJ5IGRlZmF1bHQgKi8KLSAgICBzZWxmLT5jaGVja19ob3N0bmFtZSA9IDA7CisgICAgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTX0NMSUVOVCkgeworICAgICAgICBzZWxmLT5jaGVja19ob3N0bmFtZSA9IDE7CisgICAgICAgIGlmIChfc2V0X3ZlcmlmeV9tb2RlKHNlbGYtPmN0eCwgUFlfU1NMX0NFUlRfUkVRVUlSRUQpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYtPmNoZWNrX2hvc3RuYW1lID0gMDsKKyAgICAgICAgaWYgKF9zZXRfdmVyaWZ5X21vZGUoc2VsZi0+Y3R4LCBQWV9TU0xfQ0VSVF9OT05FKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CiAgICAgLyogRGVmYXVsdHMgKi8KLSAgICBTU0xfQ1RYX3NldF92ZXJpZnkoc2VsZi0+Y3R4LCBTU0xfVkVSSUZZX05PTkUsIE5VTEwpOwogICAgIG9wdGlvbnMgPSBTU0xfT1BfQUxMICYgflNTTF9PUF9ET05UX0lOU0VSVF9FTVBUWV9GUkFHTUVOVFM7CiAgICAgaWYgKHByb3RvX3ZlcnNpb24gIT0gUFlfU1NMX1ZFUlNJT05fU1NMMikKICAgICAgICAgb3B0aW9ucyB8PSBTU0xfT1BfTk9fU1NMdjI7CiAgICAgaWYgKHByb3RvX3ZlcnNpb24gIT0gUFlfU1NMX1ZFUlNJT05fU1NMMykKICAgICAgICAgb3B0aW9ucyB8PSBTU0xfT1BfTk9fU1NMdjM7CisgICAgLyogTWluaW1hbCBzZWN1cml0eSBmbGFncyBmb3Igc2VydmVyIGFuZCBjbGllbnQgc2lkZSBjb250ZXh0LgorICAgICAqIENsaWVudCBzb2NrZXRzIGlnbm9yZSBzZXJ2ZXItc2lkZSBwYXJhbWV0ZXJzLiAqLworI2lmZGVmIFNTTF9PUF9OT19DT01QUkVTU0lPTgorICAgIG9wdGlvbnMgfD0gU1NMX09QX05PX0NPTVBSRVNTSU9OOworI2VuZGlmCisjaWZkZWYgU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRQorICAgIG9wdGlvbnMgfD0gU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRTsKKyNlbmRpZgorI2lmZGVmIFNTTF9PUF9TSU5HTEVfREhfVVNFCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfU0lOR0xFX0RIX1VTRTsKKyNlbmRpZgorI2lmZGVmIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UKKyAgICBvcHRpb25zIHw9IFNTTF9PUF9TSU5HTEVfRUNESF9VU0U7CisjZW5kaWYKICAgICBTU0xfQ1RYX3NldF9vcHRpb25zKHNlbGYtPmN0eCwgb3B0aW9ucyk7CiAKKyAgICAvKiBBIGJhcmUgbWluaW11bSBjaXBoZXIgbGlzdCB3aXRob3V0IGNvbXBsZXRseSBicm9rZW4gY2lwaGVyIHN1aXRlcy4KKyAgICAgKiBJdCdzIGZhciBmcm9tIHBlcmZlY3QgYnV0IGdpdmVzIHVzZXJzIGEgYmV0dGVyIGhlYWQgc3RhcnQuICovCisgICAgaWYgKHByb3RvX3ZlcnNpb24gIT0gUFlfU1NMX1ZFUlNJT05fU1NMMikgeworICAgICAgICByZXN1bHQgPSBTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChjdHgsICJISUdIOiFhTlVMTDohZU5VTEw6IU1ENSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIFNTTHYyIG5lZWRzIE1ENSAqLworICAgICAgICByZXN1bHQgPSBTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChjdHgsICJISUdIOiFhTlVMTDohZU5VTEwiKTsKKyAgICB9CisgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNTTEVycm9yT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIk5vIGNpcGhlciBjYW4gYmUgc2VsZWN0ZWQuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogI2lmIGRlZmluZWQoU1NMX01PREVfUkVMRUFTRV9CVUZGRVJTKQogICAgIC8qIFNldCBTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMuIFRoaXMgcG90ZW50aWFsbHkgZ3JlYXRseSByZWR1Y2VzIG1lbW9yeQogICAgICAgIHVzYWdlIGZvciBubyBjb3N0IGF0IGFsbC4gSG93ZXZlciwgZG9uJ3QgZG8gdGhpcyBmb3IgT3BlblNTTCB2ZXJzaW9ucwpAQCAtMjUwNiw2ICsyODE3LDUyIEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBVTAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5nZXRfY2lwaGVycworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNTZlNGQ2OGE0MDZkZmM0IGlucHV0PWEyYWFkYzlhZjg5Yjc5YzVdKi8KK3sKKyAgICBTU0wgKnNzbCA9IE5VTEw7CisgICAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNrID0gTlVMTDsKKyAgICBjb25zdCBTU0xfQ0lQSEVSICpjaXBoZXI7CisgICAgaW50IGk9MDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTCwgKmRjdDsKKworICAgIHNzbCA9IFNTTF9uZXcoc2VsZi0+Y3R4KTsKKyAgICBpZiAoc3NsID09IE5VTEwpIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgc2sgPSBTU0xfZ2V0X2NpcGhlcnMoc3NsKTsKKworICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoc2tfU1NMX0NJUEhFUl9udW0oc2spKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBza19TU0xfQ0lQSEVSX251bShzayk7IGkrKykgeworICAgICAgICBjaXBoZXIgPSBza19TU0xfQ0lQSEVSX3ZhbHVlKHNrLCBpKTsKKyAgICAgICAgZGN0ID0gY2lwaGVyX3RvX2RpY3QoY2lwaGVyKTsKKyAgICAgICAgaWYgKGRjdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9DTEVBUihyZXN1bHQpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShyZXN1bHQsIGksIGRjdCk7CisgICAgfQorCisgIGV4aXQ6CisgICAgaWYgKHNzbCAhPSBOVUxMKQorICAgICAgICBTU0xfZnJlZShzc2wpOworICAgIHJldHVybiByZXN1bHQ7CisKK30KKyNlbmRpZgorCisKICNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECiBzdGF0aWMgaW50CiBkb19wcm90b2NvbF9zZWxlY3Rpb24oaW50IGFscG4sIHVuc2lnbmVkIGNoYXIgKipvdXQsIHVuc2lnbmVkIGNoYXIgKm91dGxlbiwKQEAgLTI2NjIsMjggKzMwMTksMTYgQEAKIHN0YXRpYyBpbnQKIHNldF92ZXJpZnlfbW9kZShQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmcsIHZvaWQgKmMpCiB7Ci0gICAgaW50IG4sIG1vZGU7CisgICAgaW50IG47CiAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpIiwgJm4pKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKG4gPT0gUFlfU1NMX0NFUlRfTk9ORSkKLSAgICAgICAgbW9kZSA9IFNTTF9WRVJJRllfTk9ORTsKLSAgICBlbHNlIGlmIChuID09IFBZX1NTTF9DRVJUX09QVElPTkFMKQotICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9QRUVSOwotICAgIGVsc2UgaWYgKG4gPT0gUFlfU1NMX0NFUlRfUkVRVUlSRUQpCi0gICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUOwotICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHZhbHVlIGZvciB2ZXJpZnlfbW9kZSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChtb2RlID09IFNTTF9WRVJJRllfTk9ORSAmJiBzZWxmLT5jaGVja19ob3N0bmFtZSkgeworICAgIGlmIChuID09IFBZX1NTTF9DRVJUX05PTkUgJiYgc2VsZi0+Y2hlY2tfaG9zdG5hbWUpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNldCB2ZXJpZnlfbW9kZSB0byBDRVJUX05PTkUgd2hlbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2hlY2tfaG9zdG5hbWUgaXMgZW5hYmxlZC4iKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBTU0xfQ1RYX3NldF92ZXJpZnkoc2VsZi0+Y3R4LCBtb2RlLCBOVUxMKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gX3NldF92ZXJpZnlfbW9kZShzZWxmLT5jdHgsIG4pOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzY3Myw2ICs0MDE4LDcgQEAKICAgICBfU1NMX19TU0xDT05URVhUX1NFVF9TRVJWRVJOQU1FX0NBTExCQUNLX01FVEhPRERFRgogICAgIF9TU0xfX1NTTENPTlRFWFRfQ0VSVF9TVE9SRV9TVEFUU19NRVRIT0RERUYKICAgICBfU1NMX19TU0xDT05URVhUX0dFVF9DQV9DRVJUU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX0dFVF9DSVBIRVJTX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTM5MzgsNiArNDI4NCwxOTQgQEAKIH07CiAKIAorLyoKKyAqIFNTTCBTZXNzaW9uIG9iamVjdAorICovCisKK3N0YXRpYyB2b2lkCitQeVNTTFNlc3Npb25fZGVhbGxvYyhQeVNTTFNlc3Npb24gKnNlbGYpCit7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhzZWxmKTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPmN0eCk7CisgICAgaWYgKHNlbGYtPnNlc3Npb24gIT0gTlVMTCkgeworICAgICAgICBTU0xfU0VTU0lPTl9mcmVlKHNlbGYtPnNlc3Npb24pOworICAgIH0KKyAgICBQeU9iamVjdF9HQ19EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fcmljaGNvbXBhcmUoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCwgaW50IG9wKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAobGVmdCA9PSBOVUxMIHx8IHJpZ2h0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlTU0xTZXNzaW9uX0NoZWNrKGxlZnQpIHx8ICFQeVNTTFNlc3Npb25fQ2hlY2socmlnaHQpKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICB9CisKKyAgICBpZiAobGVmdCA9PSByaWdodCkgeworICAgICAgICByZXN1bHQgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmxlZnRfaWQsICpyaWdodF9pZDsKKyAgICAgICAgdW5zaWduZWQgaW50IGxlZnRfbGVuLCByaWdodF9sZW47CisgICAgICAgIGxlZnRfaWQgPSBTU0xfU0VTU0lPTl9nZXRfaWQoKChQeVNTTFNlc3Npb24gKilsZWZ0KS0+c2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVmdF9sZW4pOworICAgICAgICByaWdodF9pZCA9IFNTTF9TRVNTSU9OX2dldF9pZCgoKFB5U1NMU2Vzc2lvbiAqKXJpZ2h0KS0+c2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJpZ2h0X2xlbik7CisgICAgICAgIGlmIChsZWZ0X2xlbiA9PSByaWdodF9sZW4pIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1lbWNtcChsZWZ0X2lkLCByaWdodF9pZCwgbGVmdF9sZW4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAob3ApIHsKKyAgICAgIGNhc2UgUHlfRVE6CisgICAgICAgIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFB5X05FOgorICAgICAgICBpZiAocmVzdWx0ICE9IDApIHsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBQeV9MVDoKKyAgICAgIGNhc2UgUHlfTEU6CisgICAgICBjYXNlIFB5X0dUOgorICAgICAgY2FzZSBQeV9HRToKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworc3RhdGljIGludAorUHlTU0xTZXNzaW9uX3RyYXZlcnNlKFB5U1NMU2Vzc2lvbiAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+Y3R4KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorUHlTU0xTZXNzaW9uX2NsZWFyKFB5U1NMU2Vzc2lvbiAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5jdHgpOworICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X3RpbWUoUHlTU0xTZXNzaW9uICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhTU0xfU0VTU0lPTl9nZXRfdGltZShzZWxmLT5zZXNzaW9uKSk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X3RpbWVfZG9jLAorIlNlc3Npb24gY3JlYXRpb24gdGltZSAoc2Vjb25kcyBzaW5jZSBlcG9jaCkuIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfdGltZW91dChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFNTTF9TRVNTSU9OX2dldF90aW1lb3V0KHNlbGYtPnNlc3Npb24pKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMU2Vzc2lvbl9nZXRfdGltZW91dF9kb2MsCisiU2Vzc2lvbiB0aW1lb3V0IChkZWx0YSBpbiBzZWNvbmRzKS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF90aWNrZXRfbGlmZXRpbWVfaGludChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICB1bnNpZ25lZCBsb25nIGhpbnQgPSBTU0xfU0VTU0lPTl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnQoc2VsZi0+c2Vzc2lvbik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGhpbnQpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF90aWNrZXRfbGlmZXRpbWVfaGludF9kb2MsCisiVGlja2V0IGxpZmUgdGltZSBoaW50LiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X3Nlc3Npb25faWQoUHlTU0xTZXNzaW9uICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaWQ7CisgICAgdW5zaWduZWQgaW50IGxlbjsKKyAgICBpZCA9IFNTTF9TRVNTSU9OX2dldF9pZChzZWxmLT5zZXNzaW9uLCAmbGVuKTsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKWlkLCBsZW4pOworfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF9zZXNzaW9uX2lkX2RvYywKKyJTZXNzaW9uIGlkIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfaGFzX3RpY2tldChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICBpZiAoU1NMX1NFU1NJT05faGFzX3RpY2tldChzZWxmLT5zZXNzaW9uKSkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF9oYXNfdGlja2V0X2RvYywKKyJEb2VzIHRoZSBzZXNzaW9uIGNvbnRhaW4gYSB0aWNrZXQ/Iik7CisKKworc3RhdGljIFB5R2V0U2V0RGVmIFB5U1NMU2Vzc2lvbl9nZXRzZXRsaXN0W10gPSB7CisgICAgeyJoYXNfdGlja2V0IiwgKGdldHRlcikgUHlTU0xTZXNzaW9uX2dldF9oYXNfdGlja2V0LCBOVUxMLAorICAgICAgICAgICAgICBQeVNTTFNlc3Npb25fZ2V0X2hhc190aWNrZXRfZG9jfSwKKyAgICB7ImlkIiwgICAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3Nlc3Npb25faWQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfc2Vzc2lvbl9pZF9kb2N9LAorICAgIHsidGlja2V0X2xpZmV0aW1lX2hpbnQiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50LAorICAgICAgICAgICAgICBOVUxMLCBQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50X2RvY30sCisgICAgeyJ0aW1lIiwgKGdldHRlcikgUHlTU0xTZXNzaW9uX2dldF90aW1lLCBOVUxMLAorICAgICAgICAgICAgICBQeVNTTFNlc3Npb25fZ2V0X3RpbWVfZG9jfSwKKyAgICB7InRpbWVvdXQiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3RpbWVvdXQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfdGltZW91dF9kb2N9LAorICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTFNlc3Npb25fVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX3NzbC5TZXNzaW9uIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KKyAgICBzaXplb2YoUHlTU0xTZXNzaW9uKSwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAoZGVzdHJ1Y3RvcilQeVNTTFNlc3Npb25fZGVhbGxvYywgICAgICAgICAgLyp0cF9kZWFsbG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAvKnRwX2ZsYWdzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLworICAgICh0cmF2ZXJzZXByb2MpUHlTU0xTZXNzaW9uX3RyYXZlcnNlLCAgICAgICAvKnRwX3RyYXZlcnNlKi8KKyAgICAoaW5xdWlyeSlQeVNTTFNlc3Npb25fY2xlYXIsICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCisgICAgUHlTU0xTZXNzaW9uX3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyovCisgICAgUHlTU0xTZXNzaW9uX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KK307CisKKwogLyogaGVscGVyIHJvdXRpbmVzIGZvciBzZWVkaW5nIHRoZSBTU0wgUFJORyAqLwogLypbY2xpbmljIGlucHV0XQogX3NzbC5SQU5EX2FkZApAQCAtNDA1OSw2ICs0NTkzLDcgQEAKIH0KIAogI2lmbmRlZiBPUEVOU1NMX05PX0VHRAorLyogTENPVl9FWENMX1NUQVJUICovCiAvKltjbGluaWMgaW5wdXRdCiBfc3NsLlJBTkRfZWdkCiAgICAgcGF0aDogb2JqZWN0KGNvbnZlcnRlcj0iUHlVbmljb2RlX0ZTQ29udmVydGVyIikKQEAgLTQwODQsNiArNDYxOSw3IEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoYnl0ZXMpOwogfQorLyogTENPVl9FWENMX1NUT1AgKi8KICNlbmRpZiAvKiBPUEVOU1NMX05PX0VHRCAqLwogCiAKQEAgLTQ1NDIsMTMgKzUwNzgsMTIgQEAKIAogICAgIGlmIChfc3NsX2xvY2tzID09IE5VTEwpIHsKICAgICAgICAgX3NzbF9sb2Nrc19jb3VudCA9IENSWVBUT19udW1fbG9ja3MoKTsKLSAgICAgICAgX3NzbF9sb2NrcyA9IFB5TWVtX05ldyhQeVRocmVhZF90eXBlX2xvY2ssIF9zc2xfbG9ja3NfY291bnQpOworICAgICAgICBfc3NsX2xvY2tzID0gUHlNZW1fQ2FsbG9jKF9zc2xfbG9ja3NfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5VGhyZWFkX3R5cGVfbG9jaykpOwogICAgICAgICBpZiAoX3NzbF9sb2NrcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgbWVtc2V0KF9zc2xfbG9ja3MsIDAsCi0gICAgICAgICAgICAgICBzaXplb2YoUHlUaHJlYWRfdHlwZV9sb2NrKSAqIF9zc2xfbG9ja3NfY291bnQpOwogICAgICAgICBmb3IgKGkgPSAwOyAgaSA8IF9zc2xfbG9ja3NfY291bnQ7ICBpKyspIHsKICAgICAgICAgICAgIF9zc2xfbG9ja3NbaV0gPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CiAgICAgICAgICAgICBpZiAoX3NzbF9sb2Nrc1tpXSA9PSBOVUxMKSB7CkBAIC00NjIzLDYgKzUxNTgsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNTTE1lbW9yeUJJT19UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMU2Vzc2lvbl9UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfc3NsbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQpAQCAtNDY5NCw2ICs1MjMyLDEwIEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJNZW1vcnlCSU8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlTU0xNZW1vcnlCSU9fVHlwZSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xTZXNzaW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5U1NMU2Vzc2lvbl9UeXBlKSAhPSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTU0xfRVJST1JfWkVST19SRVRVUk4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9aRVJPX1JFVFVSTik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNTTF9FUlJPUl9XQU5UX1JFQUQiLApAQCAtNDc5OCw2ICs1MzQwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX1ZFUlNJT05fVExTKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUFJPVE9DT0xfVExTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFNfQ0xJRU5UIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUFJPVE9DT0xfVExTX1NFUlZFUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX1ZFUlNJT05fVExTX1NFUlZFUik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBST1RPQ09MX1RMU3YxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFMxKTsKICNpZiBIQVZFX1RMU3YxXzIKQEAgLTQ4MjAsNiArNTM2Niw3IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX1NJTkdMRV9ESF9VU0UiLCBTU0xfT1BfU0lOR0xFX0RIX1VTRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RJQ0tFVCIsIFNTTF9PUF9OT19USUNLRVQpOwogI2lmZGVmIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3N0cnVjdC5jIGIvTW9kdWxlcy9fc3RydWN0LmMKaW5kZXggZjk2NTU0MS4uNzk2ZDE2OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fc3RydWN0LmMKQEAgLTYwLDYgKzYwLDcgQEAKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBkb3VibGUgeDsgfSBzdF9kb3VibGU7CiB0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgdm9pZCAqeDsgfSBzdF92b2lkX3A7CiB0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgc2l6ZV90IHg7IH0gc3Rfc2l6ZV90OwordHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IF9Cb29sIHg7IH0gc3RfYm9vbDsKIAogI2RlZmluZSBTSE9SVF9BTElHTiAoc2l6ZW9mKHN0X3Nob3J0KSAtIHNpemVvZihzaG9ydCkpCiAjZGVmaW5lIElOVF9BTElHTiAoc2l6ZW9mKHN0X2ludCkgLSBzaXplb2YoaW50KSkKQEAgLTY4LDIyICs2OSwxMiBAQAogI2RlZmluZSBET1VCTEVfQUxJR04gKHNpemVvZihzdF9kb3VibGUpIC0gc2l6ZW9mKGRvdWJsZSkpCiAjZGVmaW5lIFZPSURfUF9BTElHTiAoc2l6ZW9mKHN0X3ZvaWRfcCkgLSBzaXplb2Yodm9pZCAqKSkKICNkZWZpbmUgU0laRV9UX0FMSUdOIChzaXplb2Yoc3Rfc2l6ZV90KSAtIHNpemVvZihzaXplX3QpKQorI2RlZmluZSBCT09MX0FMSUdOIChzaXplb2Yoc3RfYm9vbCkgLSBzaXplb2YoX0Jvb2wpKQogCiAvKiBXZSBjYW4ndCBzdXBwb3J0IHEgYW5kIFEgaW4gbmF0aXZlIG1vZGUgdW5sZXNzIHRoZSBjb21waWxlciBkb2VzOwogICAgaW4gc3RkIG1vZGUsIHRoZXkncmUgOCBieXRlcyBvbiBhbGwgcGxhdGZvcm1zLiAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi10eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgUFlfTE9OR19MT05HIHg7IH0gc19sb25nX2xvbmc7Ci0jZGVmaW5lIExPTkdfTE9OR19BTElHTiAoc2l6ZW9mKHNfbG9uZ19sb25nKSAtIHNpemVvZihQWV9MT05HX0xPTkcpKQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0M5OV9CT09MCi0jZGVmaW5lIEJPT0xfVFlQRSBfQm9vbAotdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IF9Cb29sIHg7IH0gc19ib29sOwotI2RlZmluZSBCT09MX0FMSUdOIChzaXplb2Yoc19ib29sKSAtIHNpemVvZihCT09MX1RZUEUpKQotI2Vsc2UKLSNkZWZpbmUgQk9PTF9UWVBFIGNoYXIKLSNkZWZpbmUgQk9PTF9BTElHTiAwCi0jZW5kaWYKK3R5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBsb25nIGxvbmcgeDsgfSBzX2xvbmdfbG9uZzsKKyNkZWZpbmUgTE9OR19MT05HX0FMSUdOIChzaXplb2Yoc19sb25nX2xvbmcpIC0gc2l6ZW9mKGxvbmcgbG9uZykpCiAKICNpZmRlZiBfX3Bvd2VyYwogI3ByYWdtYSBvcHRpb25zIGFsaWduPXJlc2V0CkBAIC0xNjQsMTQgKzE1NSwxMiBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogLyogU2FtZSwgYnV0IGhhbmRsaW5nIG5hdGl2ZSBsb25nIGxvbmcuICovCiAKIHN0YXRpYyBpbnQKLWdldF9sb25nbG9uZyhQeU9iamVjdCAqdiwgUFlfTE9OR19MT05HICpwKQorZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBsb25nIGxvbmcgKnApCiB7Ci0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHg7CiAKICAgICB2ID0gZ2V0X3B5bG9uZyh2KTsKICAgICBpZiAodiA9PSBOVUxMKQpAQCAtMTc5LDcgKzE2OCw3IEBACiAgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2KSk7CiAgICAgeCA9IFB5TG9uZ19Bc0xvbmdMb25nKHYpOwogICAgIFB5X0RFQ1JFRih2KTsKLSAgICBpZiAoeCA9PSAoUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICBpZiAoeCA9PSAobG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG91dCBvZiByYW5nZSIpOwpAQCAtMTkyLDkgKzE4MSw5IEBACiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgbmF0aXZlIHVuc2lnbmVkIGxvbmcgbG9uZy4gKi8KIAogc3RhdGljIGludAotZ2V0X3Vsb25nbG9uZyhQeU9iamVjdCAqdiwgdW5zaWduZWQgUFlfTE9OR19MT05HICpwKQorZ2V0X3Vsb25nbG9uZyhQeU9iamVjdCAqdiwgdW5zaWduZWQgbG9uZyBsb25nICpwKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogCiAgICAgdiA9IGdldF9weWxvbmcodik7CiAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTIwMiw3ICsxOTEsNyBAQAogICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodikpOwogICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHYpOwogICAgIFB5X0RFQ1JFRih2KTsKLSAgICBpZiAoeCA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICBpZiAoeCA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG91dCBvZiByYW5nZSIpOwpAQCAtMjEyLDggKzIwMSw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNlbmRpZgotCiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgUHlfc3NpemVfdCAqLwogCiBzdGF0aWMgaW50CkBAIC0yNjcsNiArMjU0LDMzIEBACiAvKiBGbG9hdGluZyBwb2ludCBoZWxwZXJzICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCit1bnBhY2tfaGFsZmZsb2F0KGNvbnN0IGNoYXIgKnAsICAvKiBzdGFydCBvZiAyLWJ5dGUgc3RyaW5nICovCisgICAgICAgICAgICAgICAgIGludCBsZSkgICAgICAgICAvKiB0cnVlIGZvciBsaXR0bGUtZW5kaWFuLCBmYWxzZSBmb3IgYmlnLWVuZGlhbiAqLworeworICAgIGRvdWJsZSB4OworCisgICAgeCA9IF9QeUZsb2F0X1VucGFjazIoKHVuc2lnbmVkIGNoYXIgKilwLCBsZSk7CisgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHgpOworfQorCitzdGF0aWMgaW50CitwYWNrX2hhbGZmbG9hdChjaGFyICpwLCAgICAgIC8qIHN0YXJ0IG9mIDItYnl0ZSBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2LCAgLyogdmFsdWUgdG8gcGFjayAqLworICAgICAgICAgICAgICAgaW50IGxlKSAgICAgICAvKiB0cnVlIGZvciBsaXR0bGUtZW5kaWFuLCBmYWxzZSBmb3IgYmlnLWVuZGlhbiAqLworeworICAgIGRvdWJsZSB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIGFyZ3VtZW50IGlzIG5vdCBhIGZsb2F0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIF9QeUZsb2F0X1BhY2syKHgsICh1bnNpZ25lZCBjaGFyICopcCwgbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogdW5wYWNrX2Zsb2F0KGNvbnN0IGNoYXIgKnAsICAvKiBzdGFydCBvZiA0LWJ5dGUgc3RyaW5nICovCiAgICAgICAgICBpbnQgbGUpICAgICAgICAgICAgIC8qIHRydWUgZm9yIGxpdHRsZS1lbmRpYW4sIGZhbHNlIGZvciBiaWctZW5kaWFuICovCiB7CkBAIC00MzYsNDAgKzQ1MCw0NiBAQAogLyogTmF0aXZlIG1vZGUgZG9lc24ndCBzdXBwb3J0IHEgb3IgUSB1bmxlc3MgdGhlIHBsYXRmb3JtIEMgc3VwcG9ydHMKICAgIGxvbmcgbG9uZyAob3IsIG9uIFdpbmRvd3MsIF9faW50NjQpLiAqLwogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIFB5T2JqZWN0ICoKIG51X2xvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOwogICAgIGlmICh4ID49IExPTkdfTUlOICYmIHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHgpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogbnVfdWxvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOwogICAgIGlmICh4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHgpOwogfQogCi0jZW5kaWYKLQogc3RhdGljIFB5T2JqZWN0ICoKIG51X2Jvb2woY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIEJPT0xfVFlQRSB4OworICAgIF9Cb29sIHg7CiAgICAgbWVtY3B5KChjaGFyICopJngsIHAsIHNpemVvZiB4KTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHggIT0gMCk7CiB9CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKK251X2hhbGZmbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisjaWYgUFlfTElUVExFX0VORElBTgorICAgIHJldHVybiB1bnBhY2tfaGFsZmZsb2F0KHAsIDEpOworI2Vsc2UKKyAgICByZXR1cm4gdW5wYWNrX2hhbGZmbG9hdChwLCAwKTsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgogbnVfZmxvYXQoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGZsb2F0IHg7CkBAIC02NDMsMTIgKzY2MywxMCBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIGludAogbnBfbG9uZ2xvbmcoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBpZiAoZ2V0X2xvbmdsb25nKHYsICZ4KSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBtZW1jcHkocCwgKGNoYXIgKikmeCwgc2l6ZW9mIHgpOwpAQCAtNjU4LDIwICs2NzYsMTkgQEAKIHN0YXRpYyBpbnQKIG5wX3Vsb25nbG9uZyhjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfdWxvbmdsb25nKHYsICZ4KSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBtZW1jcHkocCwgKGNoYXIgKikmeCwgc2l6ZW9mIHgpOwogICAgIHJldHVybiAwOwogfQotI2VuZGlmCiAKIAogc3RhdGljIGludAogbnBfYm9vbChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGludCB5OwotICAgIEJPT0xfVFlQRSB4OworICAgIF9Cb29sIHg7CiAgICAgeSA9IFB5T2JqZWN0X0lzVHJ1ZSh2KTsKICAgICBpZiAoeSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTY4MSw2ICs2OTgsMTYgQEAKIH0KIAogc3RhdGljIGludAorbnBfaGFsZmZsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisjaWYgUFlfTElUVExFX0VORElBTgorICAgIHJldHVybiBwYWNrX2hhbGZmbG9hdChwLCB2LCAxKTsKKyNlbHNlCisgICAgcmV0dXJuIHBhY2tfaGFsZmZsb2F0KHAsIHYsIDApOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKIG5wX2Zsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZmxvYXQgeCA9IChmbG9hdClQeUZsb2F0X0FzRG91YmxlKHYpOwpAQCAtNzIzLDcgKzc1MCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBmb3JtYXRkZWYgbmF0aXZlX3RhYmxlW10gPSB7CitzdGF0aWMgY29uc3QgZm9ybWF0ZGVmIG5hdGl2ZV90YWJsZVtdID0gewogICAgIHsneCcsICAgICAgIHNpemVvZihjaGFyKSwgICAwLCAgICAgICAgICAgICAgTlVMTH0sCiAgICAgeydiJywgICAgICAgc2l6ZW9mKGNoYXIpLCAgIDAsICAgICAgICAgICAgICBudV9ieXRlLCAgICAgICAgbnBfYnl0ZX0sCiAgICAgeydCJywgICAgICAgc2l6ZW9mKGNoYXIpLCAgIDAsICAgICAgICAgICAgICBudV91Ynl0ZSwgICAgICAgbnBfdWJ5dGV9LApAQCAtNzM4LDExICs3NjUsMTAgQEAKICAgICB7J0wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X3Vsb25nLCAgICAgICBucF91bG9uZ30sCiAgICAgeyduJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zc2l6ZV90LCAgICAgbnBfc3NpemVfdH0sCiAgICAgeydOJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zaXplX3QsICAgICAgbnBfc2l6ZV90fSwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIHsncScsICAgICAgIHNpemVvZihQWV9MT05HX0xPTkcpLCBMT05HX0xPTkdfQUxJR04sIG51X2xvbmdsb25nLCBucF9sb25nbG9uZ30sCi0gICAgeydRJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfdWxvbmdsb25nLG5wX3Vsb25nbG9uZ30sCi0jZW5kaWYKLSAgICB7Jz8nLCAgICAgICBzaXplb2YoQk9PTF9UWVBFKSwgICAgICBCT09MX0FMSUdOLCAgICAgbnVfYm9vbCwgICAgICAgIG5wX2Jvb2x9LAorICAgIHsncScsICAgICAgIHNpemVvZihsb25nIGxvbmcpLCBMT05HX0xPTkdfQUxJR04sIG51X2xvbmdsb25nLCBucF9sb25nbG9uZ30sCisgICAgeydRJywgICAgICAgc2l6ZW9mKGxvbmcgbG9uZyksIExPTkdfTE9OR19BTElHTiwgbnVfdWxvbmdsb25nLG5wX3Vsb25nbG9uZ30sCisgICAgeyc/JywgICAgICAgc2l6ZW9mKF9Cb29sKSwgICAgICBCT09MX0FMSUdOLCAgICAgbnVfYm9vbCwgICAgICAgIG5wX2Jvb2x9LAorICAgIHsnZScsICAgICAgIHNpemVvZihzaG9ydCksICBTSE9SVF9BTElHTiwgICAgbnVfaGFsZmZsb2F0LCAgIG5wX2hhbGZmbG9hdH0sCiAgICAgeydmJywgICAgICAgc2l6ZW9mKGZsb2F0KSwgIEZMT0FUX0FMSUdOLCAgICBudV9mbG9hdCwgICAgICAgbnBfZmxvYXR9LAogICAgIHsnZCcsICAgICAgIHNpemVvZihkb3VibGUpLCBET1VCTEVfQUxJR04sICAgbnVfZG91YmxlLCAgICAgIG5wX2RvdWJsZX0sCiAgICAgeydQJywgICAgICAgc2l6ZW9mKHZvaWQgKiksIFZPSURfUF9BTElHTiwgICBudV92b2lkX3AsICAgICAgbnBfdm9pZF9wfSwKQEAgLTc4Myw4ICs4MDksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1X2xvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyB4ID0gMDsKKyAgICBsb25nIGxvbmcgeCA9IDA7CiAgICAgUHlfc3NpemVfdCBpID0gZi0+c2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopcDsKICAgICBkbyB7CkBAIC03OTIsMzcgKzgxNywzMCBAQAogICAgIH0gd2hpbGUgKC0taSA+IDApOwogICAgIC8qIEV4dGVuZCB0aGUgc2lnbiBiaXQuICovCiAgICAgaWYgKFNJWkVPRl9MT05HX0xPTkcgPiBmLT5zaXplKQotICAgICAgICB4IHw9IC0oeCAmICgoUFlfTE9OR19MT05HKTEgPDwgKCg4ICogZi0+c2l6ZSkgLSAxKSkpOworICAgICAgICB4IHw9IC0oeCAmICgobG9uZyBsb25nKTEgPDwgKCg4ICogZi0+c2l6ZSkgLSAxKSkpOwogICAgIGlmICh4ID49IExPTkdfTUlOICYmIHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHgpOwotI2Vsc2UKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KChjb25zdCB1bnNpZ25lZCBjaGFyICopcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIGxpdHRsZS1lbmRpYW4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAxICAvKiBzaWduZWQgKi8pOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidV91bG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHggPSAwOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4ID0gMDsKICAgICBQeV9zc2l6ZV90IGkgPSBmLT5zaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGRvIHsKICAgICAgICAgeCA9ICh4PDw4KSB8ICpieXRlcysrOwogICAgIH0gd2hpbGUgKC0taSA+IDApOwogICAgIGlmICh4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHgpOwotI2Vsc2UKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KChjb25zdCB1bnNpZ25lZCBjaGFyICopcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIGxpdHRsZS1lbmRpYW4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAwICAvKiBzaWduZWQgKi8pOwotI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitidV9oYWxmZmxvYXQoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHJldHVybiB1bnBhY2tfaGFsZmZsb2F0KHAsIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtOTIyLDYgKzk0MCwxMiBAQAogfQogCiBzdGF0aWMgaW50CiticF9oYWxmZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICByZXR1cm4gcGFja19oYWxmZmxvYXQocCwgdiwgMCk7Cit9CisKK3N0YXRpYyBpbnQKIGJwX2Zsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZG91YmxlIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwpAQCAtOTcyLDYgKzk5Niw3IEBACiAgICAgeydxJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9sb25nbG9uZywgICAgYnBfbG9uZ2xvbmd9LAogICAgIHsnUScsICAgICAgIDgsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfdWxvbmdsb25nLCAgIGJwX3Vsb25nbG9uZ30sCiAgICAgeyc/JywgICAgICAgMSwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9ib29sLCAgICAgICAgYnBfYm9vbH0sCisgICAgeydlJywgICAgICAgMiwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9oYWxmZmxvYXQsICAgYnBfaGFsZmZsb2F0fSwKICAgICB7J2YnLCAgICAgICA0LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2Zsb2F0LCAgICAgICBicF9mbG9hdH0sCiAgICAgeydkJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9kb3VibGUsICAgICAgYnBfZG91YmxlfSwKICAgICB7MH0KQEAgLTEwMTEsOCArMTAzNiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbHVfbG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHggPSAwOworICAgIGxvbmcgbG9uZyB4ID0gMDsKICAgICBQeV9zc2l6ZV90IGkgPSBmLT5zaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGRvIHsKQEAgLTEwMjAsMzcgKzEwNDQsMzAgQEAKICAgICB9IHdoaWxlIChpID4gMCk7CiAgICAgLyogRXh0ZW5kIHRoZSBzaWduIGJpdC4gKi8KICAgICBpZiAoU0laRU9GX0xPTkdfTE9ORyA+IGYtPnNpemUpCi0gICAgICAgIHggfD0gLSh4ICYgKChQWV9MT05HX0xPTkcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CisgICAgICAgIHggfD0gLSh4ICYgKChsb25nIGxvbmcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CiAgICAgaWYgKHggPj0gTE9OR19NSU4gJiYgeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDEgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGx1X3Vsb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeCA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHggPSAwOwogICAgIFB5X3NzaXplX3QgaSA9IGYtPnNpemU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXA7CiAgICAgZG8gewogICAgICAgICB4ID0gKHg8PDgpIHwgYnl0ZXNbLS1pXTsKICAgICB9IHdoaWxlIChpID4gMCk7CiAgICAgaWYgKHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDAgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2x1X2hhbGZmbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTQyLDYgKzExNTksMTIgQEAKIH0KIAogc3RhdGljIGludAorbHBfaGFsZmZsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgcmV0dXJuIHBhY2tfaGFsZmZsb2F0KHAsIHYsIDEpOworfQorCitzdGF0aWMgaW50CiBscF9mbG9hdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGRvdWJsZSB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKQEAgLTExODIsNiArMTIwNSw3IEBACiAgICAgeydRJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBsdV91bG9uZ2xvbmcsICAgbHBfdWxvbmdsb25nfSwKICAgICB7Jz8nLCAgICAgICAxLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2Jvb2wsICAgICAgICBicF9ib29sfSwgLyogU3RkIHJlcCBub3QgZW5kaWFuIGRlcCwKICAgICAgICAgYnV0IHBvdGVudGlhbGx5IGRpZmZlcmVudCBmcm9tIG5hdGl2ZSByZXAgLS0gcmV1c2UgYnhfYm9vbCBmdW5jcy4gKi8KKyAgICB7J2UnLCAgICAgICAyLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGx1X2hhbGZmbG9hdCwgICBscF9oYWxmZmxvYXR9LAogICAgIHsnZicsICAgICAgIDQsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgbHVfZmxvYXQsICAgICAgIGxwX2Zsb2F0fSwKICAgICB7J2QnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGx1X2RvdWJsZSwgICAgICBscF9kb3VibGV9LAogICAgIHswfQpAQCAtMTE4OSw3ICsxMjEzLDcgQEAKIAogCiBzdGF0aWMgY29uc3QgZm9ybWF0ZGVmICoKLXdoaWNodGFibGUoY2hhciAqKnBmbXQpCit3aGljaHRhYmxlKGNvbnN0IGNoYXIgKipwZm10KQogewogICAgIGNvbnN0IGNoYXIgKmZtdCA9ICgqcGZtdCkrKzsgLyogTWF5IGJlIGJhY2tlZCBvdXQgb2YgbGF0ZXIgKi8KICAgICBzd2l0Y2ggKCpmbXQpIHsKQEAgLTEyNjgsNyArMTI5Miw3IEBACiAKICAgICBmbXQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5zX2Zvcm1hdCk7CiAKLSAgICBmID0gd2hpY2h0YWJsZSgoY2hhciAqKikmZm10KTsKKyAgICBmID0gd2hpY2h0YWJsZSgmZm10KTsKIAogICAgIHMgPSBmbXQ7CiAgICAgc2l6ZSA9IDA7CkBAIC0xNDU2LDcgKzE0ODAsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotc191bnBhY2tfaW50ZXJuYWwoUHlTdHJ1Y3RPYmplY3QgKnNvc2VsZiwgY2hhciAqc3RhcnRmcm9tKSB7CitzX3VucGFja19pbnRlcm5hbChQeVN0cnVjdE9iamVjdCAqc29zZWxmLCBjb25zdCBjaGFyICpzdGFydGZyb20pIHsKICAgICBmb3JtYXRjb2RlICpjb2RlOwogICAgIFB5X3NzaXplX3QgaSA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5VHVwbGVfTmV3KHNvc2VsZi0+c19sZW4pOwpAQCAtMjIzOSw3ICsyMjYzLDcgQEAKICAgeDogcGFkIGJ5dGUgKG5vIGRhdGEpOyBjOmNoYXI7IGI6c2lnbmVkIGJ5dGU7IEI6dW5zaWduZWQgYnl0ZTtcblwKICAgPzogX0Jvb2wgKHJlcXVpcmVzIEM5OTsgaWYgbm90IGF2YWlsYWJsZSwgY2hhciBpcyB1c2VkIGluc3RlYWQpXG5cCiAgIGg6c2hvcnQ7IEg6dW5zaWduZWQgc2hvcnQ7IGk6aW50OyBJOnVuc2lnbmVkIGludDtcblwKLSAgbDpsb25nOyBMOnVuc2lnbmVkIGxvbmc7IGY6ZmxvYXQ7IGQ6ZG91YmxlLlxuXAorICBsOmxvbmc7IEw6dW5zaWduZWQgbG9uZzsgZjpmbG9hdDsgZDpkb3VibGU7IGU6aGFsZi1mbG9hdC5cblwKIFNwZWNpYWwgY2FzZXMgKHByZWNlZGluZyBkZWNpbWFsIGNvdW50IGluZGljYXRlcyBsZW5ndGgpOlxuXAogICBzOnN0cmluZyAoYXJyYXkgb2YgY2hhcik7IHA6IHBhc2NhbCBzdHJpbmcgKHdpdGggY291bnQgYnl0ZSkuXG5cCiBTcGVjaWFsIGNhc2VzIChvbmx5IGF2YWlsYWJsZSBpbiBuYXRpdmUgZm9ybWF0KTpcblwKQEAgLTIyNzksNyArMjMwMyw3IEBACiAKICAgICAvKiBDaGVjayBlbmRpYW4gYW5kIHN3YXAgaW4gZmFzdGVyIGZ1bmN0aW9ucyAqLwogICAgIHsKLSAgICAgICAgZm9ybWF0ZGVmICpuYXRpdmUgPSBuYXRpdmVfdGFibGU7CisgICAgICAgIGNvbnN0IGZvcm1hdGRlZiAqbmF0aXZlID0gbmF0aXZlX3RhYmxlOwogICAgICAgICBmb3JtYXRkZWYgKm90aGVyLCAqcHRyOwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KICAgICAgICAgb3RoZXIgPSBsaWxlbmRpYW5fdGFibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMgYi9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKaW5kZXggNDNkYjhhOC4uMTNkM2NjYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCisrKyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpAQCAtMTMsNyArMTMsNyBAQAogUHlPYmplY3QgKmNhbGNzaXplID0gTlVMTDsKIAogLyogY2FjaGUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgKi8KLXN0YXRpYyBjb25zdCBjaGFyICpzaW1wbGVfZm10ID0gIkIiOworc3RhdGljIGNvbnN0IGNoYXIgc2ltcGxlX2ZtdFtdID0gIkIiOwogUHlPYmplY3QgKnNpbXBsZV9mb3JtYXQgPSBOVUxMOwogI2RlZmluZSBTSU1QTEVfRk9STUFUKGZtdCkgKGZtdCA9PSBOVUxMIHx8IHN0cmNtcChmbXQsICJCIikgPT0gMCkKICNkZWZpbmUgRklYX0ZPUk1BVChmbXQpIChmbXQgPT0gTlVMTCA/ICJCIiA6IGZtdCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCmluZGV4IGY0YTFlOTcuLmE2Y2QzODYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwpAQCAtNjAsOSArNjAsNyBAQAogICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfTE9ORywgbG9uZyk7CiAgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9WT0lEX1AsIHZvaWQqKTsKICAgICBDSEVDS19TSVpFT0YoU0laRU9GX1RJTUVfVCwgdGltZV90KTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfTE9OR19MT05HLCBQWV9MT05HX0xPTkcpOwotI2VuZGlmCisgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9MT05HX0xPTkcsIGxvbmcgbG9uZyk7CiAKICN1bmRlZiBDSEVDS19TSVpFT0YKIApAQCAtMTAwLDIyICs5OCwxNCBAQAogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzEsIDApOwogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzIsIDApOwogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzQsIDApOwotI2lmZGVmIEhBVkVfSU5UMzJfVAotICAgIENIRUNLX1NJWkVPRihQWV9JTlQzMl9ULCA0KTsKLSAgICBDSEVDS19TSUdOTkVTUyhQWV9JTlQzMl9ULCAxKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfVUlOVDMyX1QKLSAgICBDSEVDS19TSVpFT0YoUFlfVUlOVDMyX1QsIDQpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX1VJTlQzMl9ULCAwKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfSU5UNjRfVAotICAgIENIRUNLX1NJWkVPRihQWV9JTlQ2NF9ULCA4KTsKLSAgICBDSEVDS19TSUdOTkVTUyhQWV9JTlQ2NF9ULCAxKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfVUlOVDY0X1QKLSAgICBDSEVDS19TSVpFT0YoUFlfVUlOVDY0X1QsIDgpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX1VJTlQ2NF9ULCAwKTsKLSNlbmRpZgorICAgIENIRUNLX1NJWkVPRihpbnQzMl90LCA0KTsKKyAgICBDSEVDS19TSUdOTkVTUyhpbnQzMl90LCAxKTsKKyAgICBDSEVDS19TSVpFT0YodWludDMyX3QsIDQpOworICAgIENIRUNLX1NJR05ORVNTKHVpbnQzMl90LCAwKTsKKyAgICBDSEVDS19TSVpFT0YoaW50NjRfdCwgOCk7CisgICAgQ0hFQ0tfU0lHTk5FU1MoaW50NjRfdCwgMSk7CisgICAgQ0hFQ0tfU0laRU9GKHVpbnQ2NF90LCA4KTsKKyAgICBDSEVDS19TSUdOTkVTUyh1aW50NjRfdCwgMCk7CiAKICAgICAvKiBwb2ludGVyL3NpemUgdHlwZXMgKi8KICAgICBDSEVDS19TSVpFT0Yoc2l6ZV90LCBzaXplb2Yodm9pZCAqKSk7CkBAIC0xMjMsMTAgKzExMywxMCBAQAogICAgIENIRUNLX1NJWkVPRihQeV9zc2l6ZV90LCBzaXplb2Yodm9pZCAqKSk7CiAgICAgQ0hFQ0tfU0lHTk5FU1MoUHlfc3NpemVfdCwgMSk7CiAKLSAgICBDSEVDS19TSVpFT0YoUHlfdWludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUHlfdWludHB0cl90LCAwKTsKLSAgICBDSEVDS19TSVpFT0YoUHlfaW50cHRyX3QsIHNpemVvZih2b2lkICopKTsKLSAgICBDSEVDS19TSUdOTkVTUyhQeV9pbnRwdHJfdCwgMSk7CisgICAgQ0hFQ0tfU0laRU9GKHVpbnRwdHJfdCwgc2l6ZW9mKHZvaWQgKikpOworICAgIENIRUNLX1NJR05ORVNTKHVpbnRwdHJfdCwgMCk7CisgICAgQ0hFQ0tfU0laRU9GKGludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7CisgICAgQ0hFQ0tfU0lHTk5FU1MoaW50cHRyX3QsIDEpOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMzU3LDEyICszNDcsMTIgQEAKIH0KIAogCi0vKiBUZXN0cyBvZiBQeUxvbmdfe0FzLCBGcm9tfXtVbnNpZ25lZCx9TG9uZygpLCBhbmQgKCNpZmRlZiBIQVZFX0xPTkdfTE9ORykKKy8qIFRlc3RzIG9mIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nKCksIGFuZAogICAgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmdMb25nKCkuCiAKICAgIE5vdGUgdGhhdCB0aGUgbWVhdCBvZiB0aGUgdGVzdCBpcyBjb250YWluZWQgaW4gdGVzdGNhcGlfbG9uZy5oLgogICAgVGhpcyBpcyByZXZvbHRpbmcsIGJ1dCBkZWxpY2F0ZSBjb2RlIGR1cGxpY2F0aW9uIGlzIHdvcnNlOiAgImFsbW9zdAotICAgZXhhY3RseSB0aGUgc2FtZSIgY29kZSBpcyBuZWVkZWQgdG8gdGVzdCBQWV9MT05HX0xPTkcsIGJ1dCB0aGUgdWJpcXVpdG91cworICAgZXhhY3RseSB0aGUgc2FtZSIgY29kZSBpcyBuZWVkZWQgdG8gdGVzdCBsb25nIGxvbmcsIGJ1dCB0aGUgdWJpcXVpdG91cwogICAgZGVwZW5kZW5jZSBvbiB0eXBlIG5hbWVzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gdXNlIGEgcGFyYW1ldGVyaXplZAogICAgZnVuY3Rpb24uICBBIGdpYW50IG1hY3JvIHdvdWxkIGJlIGV2ZW4gd29yc2UgdGhhbiB0aGlzLiAgQSBDKysgdGVtcGxhdGUKICAgIHdvdWxkIGJlIHBlcmZlY3QuCkBAIC00MDIsOCArMzkyLDYgQEAKICN1bmRlZiBGX1VfVE9fUFkKICN1bmRlZiBGX1BZX1RPX1UKIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KIHN0YXRpYyBQeU9iamVjdCAqCiByYWlzZV90ZXN0X2xvbmdsb25nX2Vycm9yKGNvbnN0IGNoYXIqIG1zZykKIHsKQEAgLTQxMSw3ICszOTksNyBAQAogfQogCiAjZGVmaW5lIFRFU1ROQU1FICAgICAgICB0ZXN0X2xvbmdsb25nX2FwaV9pbm5lcgotI2RlZmluZSBUWVBFTkFNRSAgICAgICAgUFlfTE9OR19MT05HCisjZGVmaW5lIFRZUEVOQU1FICAgICAgICBsb25nIGxvbmcKICNkZWZpbmUgRl9TX1RPX1BZICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcKICNkZWZpbmUgRl9QWV9UT19TICAgICAgIFB5TG9uZ19Bc0xvbmdMb25nCiAjZGVmaW5lIEZfVV9UT19QWSAgICAgICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKQEAgLTU5OCw3ICs1ODYsNyBAQAogfQogCiAvKiBUZXN0IHRoZSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93IEFQSS4gR2VuZXJhbCBjb252ZXJzaW9uIHRvCi0gICBQWV9MT05HX0xPTkcgaXMgdGVzdGVkIGJ5IHRlc3RfbG9uZ19hcGlfaW5uZXIuIFRoaXMgdGVzdCB3aWxsCisgICBsb25nIGxvbmcgaXMgdGVzdGVkIGJ5IHRlc3RfbG9uZ19hcGlfaW5uZXIuIFRoaXMgdGVzdCB3aWxsCiAgICBjb25jZW50cmF0ZSBvbiBwcm9wZXIgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuCiAqLwogCkBAIC02MDYsNyArNTk0LDcgQEAKIHRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdyhQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqbnVtLCAqb25lLCAqdGVtcDsKLSAgICBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgbG9uZyBsb25nIHZhbHVlOwogICAgIGludCBvdmVyZmxvdzsKIAogICAgIC8qIFRlc3QgdGhhdCBvdmVyZmxvdyBpcyBzZXQgcHJvcGVybHkgZm9yIGEgbGFyZ2UgdmFsdWUuICovCkBAIC04MjQsNyArODEyLDcgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotLyogVGVzdCB0aGUgTCBjb2RlIGZvciBQeUFyZ19QYXJzZVR1cGxlLiAgVGhpcyBzaG91bGQgZGVsaXZlciBhIFBZX0xPTkdfTE9ORworLyogVGVzdCB0aGUgTCBjb2RlIGZvciBQeUFyZ19QYXJzZVR1cGxlLiAgVGhpcyBzaG91bGQgZGVsaXZlciBhIGxvbmcgbG9uZwogICAgZm9yIGJvdGggbG9uZyBhbmQgaW50IGFyZ3VtZW50cy4gIFRoZSB0ZXN0IG1heSBsZWFrIGEgbGl0dGxlIG1lbW9yeSBpZgogICAgaXQgZmFpbHMuCiAqLwpAQCAtODMyLDcgKzgyMCw3IEBACiB0ZXN0X0xfY29kZShQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqdHVwbGUsICpudW07Ci0gICAgUFlfTE9OR19MT05HIHZhbHVlOworICAgIGxvbmcgbG9uZyB2YWx1ZTsKIAogICAgIHR1cGxlID0gUHlUdXBsZV9OZXcoMSk7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCkBAIC04NzAsOCArODU4LDYgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotI2VuZGlmICAvKiBpZmRlZiBIQVZFX0xPTkdfTE9ORyAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgogcmV0dXJuX25vbmUodm9pZCAqdW51c2VkKQogewpAQCAtMTAwMSw3ICs5ODcsNyBAQAogZ2V0YXJnc19rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImFyZzEiLCJhcmcyIiwiYXJnMyIsImFyZzQiLCJhcmc1IiwgTlVMTH07Ci0gICAgc3RhdGljIGNoYXIgKmZtdD0iKGlpKWl8KGkoaWkpKShpaWkpaSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZm10W10gPSAiKGlpKWl8KGkoaWkpKShpaWkpaSI7CiAgICAgaW50IGludF9hcmdzWzEwXT17LTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTF9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCBmbXQsIGtleXdvcmRzLApAQCAtMTAyOCw2ICsxMDE0LDIxIEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZF9vbmx5KTsKIH0KIAorLyogdGVzdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgcG9zaXRpb25hbC1vbmx5IGFyZ3VtZW50cyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3NfcG9zaXRpb25hbF9vbmx5X2FuZF9rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7IiIsICIiLCAia2V5d29yZCIsIE5VTEx9OworICAgIGludCByZXF1aXJlZCA9IC0xOworICAgIGludCBvcHRpb25hbCA9IC0xOworICAgIGludCBrZXl3b3JkID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpfGlpIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcXVpcmVkLCAmb3B0aW9uYWwsICZrZXl3b3JkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZCk7Cit9CisKIC8qIEZ1bmN0aW9ucyB0byBjYWxsIFB5QXJnX1BhcnNlVHVwbGUgd2l0aCBpbnRlZ2VyIGZvcm1hdCBjb2RlcywKICAgIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4KICovCkBAIC0xMTIxLDExICsxMTIyLDEwIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogc3RhdGljIFB5T2JqZWN0ICoKIGdldGFyZ3NfTChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbHVlOworICAgIGxvbmcgbG9uZyB2YWx1ZTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkwiLCAmdmFsdWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CkBAIC0xMTM0LDEyICsxMTM0LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0YXJnc19LKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIsICZ2YWx1ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsdWUpOwogfQotI2VuZGlmCiAKIC8qIFRoaXMgZnVuY3Rpb24gbm90IG9ubHkgdGVzdHMgdGhlICdrJyBnZXRhcmdzIGNvZGUsIGJ1dCBhbHNvIHRoZQogICAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIGFuZCBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgZnVuY3Rpb25zLiAqLwpAQCAtMTE2MSw3ICsxMTYwLDcgQEAKICAgICB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sobnVtKTsKICAgICBpZiAodmFsdWUgIT0gVUxPTkdfTUFYKQogICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfa19jb2RlIiwKLSAgICAgICAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOworICAgICAgICAgICAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOwogCiAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXBsZSwgMCwgbnVtKTsKIApAQCAtMTE4MCw3ICsxMTc5LDcgQEAKICAgICB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sobnVtKTsKICAgICBpZiAodmFsdWUgIT0gKHVuc2lnbmVkIGxvbmcpLTB4NDIpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9rX2NvZGUiLAotICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CisgICAgICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CiAKICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cGxlLCAwLCBudW0pOwogCkBAIC0yMTYwLDcgKzIxNTksNyBAQAogICAgIFB5T2JqZWN0ICpyYzsKICAgICBpbnQgc3VjY2VzczsKICAgICBQeUdJTFN0YXRlX1NUQVRFIHMgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwotICAgIHJjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKWNhbGxhYmxlLCAiIik7CisgICAgcmMgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKChQeU9iamVjdCAqKWNhbGxhYmxlKTsKICAgICBzdWNjZXNzID0gKHJjICE9IE5VTEwpOwogICAgIFB5X1hERUNSRUYocmMpOwogICAgIFB5R0lMU3RhdGVfUmVsZWFzZShzKTsKQEAgLTIyOTQsMTAgKzIyOTMsOCBAQAogICAgIENIRUNLXzFfRk9STUFUKCIlenUiLCBzaXplX3QpOwogCiAgICAgLyogIiVsbGQiIGFuZCAiJWxsdSIgc3VwcG9ydCBhZGRlZCBpbiBQeXRob24gMi43LiAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgQ0hFQ0tfMV9GT1JNQVQoIiVsbHUiLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOwotICAgIENIRUNLXzFfRk9STUFUKCIlbGxkIiwgUFlfTE9OR19MT05HKTsKLSNlbmRpZgorICAgIENIRUNLXzFfRk9STUFUKCIlbGx1IiwgdW5zaWduZWQgbG9uZyBsb25nKTsKKyAgICBDSEVDS18xX0ZPUk1BVCgiJWxsZCIsIGxvbmcgbG9uZyk7CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIApAQCAtMjM0Miw3ICsyMzM5LDcgQEAKICAgICByZXN1bHQgPSBQeU9TX3N0cmluZ190b19kb3VibGUoU1RSLCBOVUxMLCBOVUxMKTsgICAgICAgICAgICBcCiAgICAgaWYgKHJlc3VsdCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAocmVzdWx0ICE9IGV4cGVjdGVkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHJlc3VsdCAhPSAoZG91YmxlKWV4cGVjdGVkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBtc2cgPSAiY29udmVyc2lvbiBvZiAiIFNUUiAiIHRvIGZsb2F0IGZhaWxlZCI7ICAgICAgICAgIFwKICAgICAgICAgZ290byBmYWlsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQpAQCAtMjkzNCw3ICsyOTMxLDkgQEAKIHN0YXRpYyBpbnQKIGNoZWNrX3RpbWVfcm91bmRpbmcoaW50IHJvdW5kKQogewotICAgIGlmIChyb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0ZMT09SICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgeworICAgIGlmIChyb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0ZMT09SCisgICAgICAgICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfQ0VJTElORworICAgICAgICAmJiByb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgcm91bmRpbmciKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTM0MjksNyArMzQyOCw3IEBACiAgICAgLyogQWxsb2NhdGUgYSBQeXRob24gdGhyZWFkIHN0YXRlIGZvciB0aGlzIHRocmVhZCAqLwogICAgIHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKIAotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbih0ZXN0X2NfdGhyZWFkLT5jYWxsYmFjaywgIiIsIE5VTEwpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTm9BcmcodGVzdF9jX3RocmVhZC0+Y2FsbGJhY2spOwogICAgIFB5X0NMRUFSKHRlc3RfY190aHJlYWQtPmNhbGxiYWNrKTsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkgewpAQCAtMzcxOSw3ICszNzE4LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXN0X3B5dGltZV9hc3NlY29uZHNkb3VibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgX1B5VGltZV90IHRzOwogICAgIGRvdWJsZSBkOwogCkBAIC0zNzMzLDcgKzM3MzIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzVGltZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBpbnQgcm91bmQ7CiAgICAgX1B5VGltZV90IHQ7CiAgICAgc3RydWN0IHRpbWV2YWwgdHY7CkBAIC0zNzQ3LDcgKzM3NDYsNyBAQAogICAgIGlmIChfUHlUaW1lX0FzVGltZXZhbCh0LCAmdHYsIHJvdW5kKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2Vjb25kcyA9IFB5TG9uZ19Gcm9tTG9uZygoUFlfTE9OR19MT05HKXR2LnR2X3NlYyk7CisgICAgc2Vjb25kcyA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZyBsb25nKXR2LnR2X3NlYyk7CiAgICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgc2Vjb25kcywgdHYudHZfdXNlYyk7CkBAIC0zNzU3LDcgKzM3NTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzVGltZXNwZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgX1B5VGltZV90IHQ7CiAgICAgc3RydWN0IHRpbWVzcGVjIHRzOwogCkBAIC0zNzczLDcgKzM3NzIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgbG9uZyBsb25nIG5zOwogICAgIGludCByb3VuZDsKICAgICBfUHlUaW1lX3QgdCwgbXM7CiAKQEAgLTM3OTEsNyArMzc5MCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9QeVRpbWVfQXNNaWNyb3NlY29uZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgaW50IHJvdW5kOwogICAgIF9QeVRpbWVfdCB0LCBtczsKIApAQCAtMzgxNSw2ICszODE0LDE1MiBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodHN0YXRlLT5yZWN1cnNpb25fZGVwdGggLSAxKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorcHltZW1fYnVmZmVyX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIGJ1ZmZlciBvdmVyZmxvdyB0byBjaGVjayB0aGF0IFB5TWVtX0ZyZWUoKSBkZXRlY3RzCisgICAgICAgdGhlIG92ZXJmbG93IHdoZW4gZGVidWcgaG9va3MgYXJlIGluc3RhbGxlZC4gKi8KKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2MoMTYpOworICAgIGJ1ZmZlclsxNl0gPSAneCc7CisgICAgUHlNZW1fRnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3B5bWVtX2FwaV9taXN1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKmJ1ZmZlcjsKKworICAgIC8qIERlbGliZXJhdGUgbWlzdXNhZ2Ugb2YgUHl0aG9uIGFsbG9jYXRvcnM6CisgICAgICAgYWxsb2NvY2F0ZSB3aXRoIFB5TWVtIGJ1dCByZWxlYXNlIHdpdGggUHlNZW1fUmF3LiAqLworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYygxNik7CisgICAgUHlNZW1fUmF3RnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3B5bWVtX21hbGxvY193aXRob3V0X2dpbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqYnVmZmVyOworCisgICAgLyogRGVsaWJlcmF0ZSBidWcgdG8gdGVzdCBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnM6CisgICAgICAgY2FsbCBQeU1lbV9NYWxsb2MoKSB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2MoMTApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorcHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIGJ1ZyB0byB0ZXN0IGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yczoKKyAgICAgICBjYWxsIFB5T2JqZWN0X01hbGxvYygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGJ1ZmZlciA9IFB5T2JqZWN0X01hbGxvYygxMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5T2JqZWN0X0ZyZWUoYnVmZmVyKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHJhY2VtYWxsb2NfdHJhY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVuc2lnbmVkIGludCBkb21haW47CisgICAgUHlPYmplY3QgKnB0cl9vYmo7CisgICAgdm9pZCAqcHRyOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBpbnQgcmVsZWFzZV9naWwgPSAwOworICAgIGludCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIklPbnxpIiwgJmRvbWFpbiwgJnB0cl9vYmosICZzaXplLCAmcmVsZWFzZV9naWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwdHIgPSBQeUxvbmdfQXNWb2lkUHRyKHB0cl9vYmopOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChyZWxlYXNlX2dpbCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IF9QeVRyYWNlTWFsbG9jX1RyYWNrKGRvbWFpbiwgKHVpbnRwdHJfdClwdHIsIHNpemUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzID0gX1B5VHJhY2VNYWxsb2NfVHJhY2soZG9tYWluLCAodWludHB0cl90KXB0ciwgc2l6ZSk7CisgICAgfQorCisgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIl9QeVRyYWNlTWFsbG9jX1RyYWNrIGVycm9yIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHJhY2VtYWxsb2NfdW50cmFjayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdW5zaWduZWQgaW50IGRvbWFpbjsKKyAgICBQeU9iamVjdCAqcHRyX29iajsKKyAgICB2b2lkICpwdHI7CisgICAgaW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSU8iLCAmZG9tYWluLCAmcHRyX29iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHB0ciA9IFB5TG9uZ19Bc1ZvaWRQdHIocHRyX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzID0gX1B5VHJhY2VNYWxsb2NfVW50cmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyKTsKKyAgICBpZiAocmVzIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiX1B5VHJhY2VNYWxsb2NfVHJhY2sgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgZG9tYWluOworICAgIFB5T2JqZWN0ICpwdHJfb2JqOworICAgIHZvaWQgKnB0cjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSU8iLCAmZG9tYWluLCAmcHRyX29iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHB0ciA9IFB5TG9uZ19Bc1ZvaWRQdHIocHRyX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIF9QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RfZ2V0X3ZlcnNpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5RGljdE9iamVjdCAqZGljdDsKKyAgICB1aW50NjRfdCB2ZXJzaW9uOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPISIsICZQeURpY3RfVHlwZSwgJmRpY3QpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHZlcnNpb24gPSBkaWN0LT5tYV92ZXJzaW9uX3RhZzsKKworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodW5zaWduZWQgUFlfTE9OR19MT05HKSA+PSBzaXplb2YodmVyc2lvbikpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyl2ZXJzaW9uKTsKK30KKwogCiBzdGF0aWMgUHlNZXRob2REZWYgVGVzdE1ldGhvZHNbXSA9IHsKICAgICB7InJhaXNlX2V4Y2VwdGlvbiIsICAgICAgICAgcmFpc2VfZXhjZXB0aW9uLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTM4NjAsNiArNDAwNSw5IEBACiAgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCiAgICAgeyJnZXRhcmdzX2tleXdvcmRfb25seSIsIChQeUNGdW5jdGlvbilnZXRhcmdzX2tleXdvcmRfb25seSwKICAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKKyAgICB7ImdldGFyZ3NfcG9zaXRpb25hbF9vbmx5X2FuZF9rZXl3b3JkcyIsCisgICAgICAoUHlDRnVuY3Rpb24pZ2V0YXJnc19wb3NpdGlvbmFsX29ubHlfYW5kX2tleXdvcmRzLAorICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAogICAgIHsiZ2V0YXJnc19iIiwgICAgICAgICAgICAgICBnZXRhcmdzX2IsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19CIiwgICAgICAgICAgICAgICBnZXRhcmdzX0IsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19oIiwgICAgICAgICAgICAgICBnZXRhcmdzX2gsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMzg3MCwxNCArNDAxOCwxMiBAQAogICAgIHsiZ2V0YXJnc19sIiwgICAgICAgICAgICAgICBnZXRhcmdzX2wsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19uIiwgICAgICAgICAgICAgICBnZXRhcmdzX24sICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19wIiwgICAgICAgICAgICAgICBnZXRhcmdzX3AsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgeyJnZXRhcmdzX0wiLCAgICAgICAgICAgICAgIGdldGFyZ3NfTCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX0siLCAgICAgICAgICAgICAgIGdldGFyZ3NfSywgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdsb25nX2FwaSIsICAgICAgIHRlc3RfbG9uZ2xvbmdfYXBpLCAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdyIsCiAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfbG9uZ19hbmRfb3ZlcmZsb3csIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfTF9jb2RlIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfTF9jb2RlLCAgICAgICAgTUVUSF9OT0FSR1N9LAotI2VuZGlmCiAgICAgeyJnZXRhcmdzX2YiLCAgICAgICAgICAgICAgIGdldGFyZ3NfZiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2QiLCAgICAgICAgICAgICAgIGdldGFyZ3NfZCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX0QiLCAgICAgICAgICAgICAgIGdldGFyZ3NfRCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC00MDA3LDYgKzQxNTMsMTQgQEAKICAgICB7IlB5VGltZV9Bc01pbGxpc2Vjb25kcyIsIHRlc3RfUHlUaW1lX0FzTWlsbGlzZWNvbmRzLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiUHlUaW1lX0FzTWljcm9zZWNvbmRzIiwgdGVzdF9QeVRpbWVfQXNNaWNyb3NlY29uZHMsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRfcmVjdXJzaW9uX2RlcHRoIiwgZ2V0X3JlY3Vyc2lvbl9kZXB0aCwgTUVUSF9OT0FSR1N9LAorICAgIHsicHltZW1fYnVmZmVyX292ZXJmbG93IiwgcHltZW1fYnVmZmVyX292ZXJmbG93LCBNRVRIX05PQVJHU30sCisgICAgeyJweW1lbV9hcGlfbWlzdXNlIiwgcHltZW1fYXBpX21pc3VzZSwgTUVUSF9OT0FSR1N9LAorICAgIHsicHltZW1fbWFsbG9jX3dpdGhvdXRfZ2lsIiwgcHltZW1fbWFsbG9jX3dpdGhvdXRfZ2lsLCBNRVRIX05PQVJHU30sCisgICAgeyJweW9iamVjdF9tYWxsb2Nfd2l0aG91dF9naWwiLCBweW9iamVjdF9tYWxsb2Nfd2l0aG91dF9naWwsIE1FVEhfTk9BUkdTfSwKKyAgICB7InRyYWNlbWFsbG9jX3RyYWNrIiwgdHJhY2VtYWxsb2NfdHJhY2ssIE1FVEhfVkFSQVJHU30sCisgICAgeyJ0cmFjZW1hbGxvY191bnRyYWNrIiwgdHJhY2VtYWxsb2NfdW50cmFjaywgTUVUSF9WQVJBUkdTfSwKKyAgICB7InRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2siLCB0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZGljdF9nZXRfdmVyc2lvbiIsIGRpY3RfZ2V0X3ZlcnNpb24sIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC00MDI2LDEwICs0MTgwLDggQEAKICAgICBmbG9hdCBmbG9hdF9tZW1iZXI7CiAgICAgZG91YmxlIGRvdWJsZV9tZW1iZXI7CiAgICAgY2hhciBpbnBsYWNlX21lbWJlcls2XTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyBsb25nbG9uZ19tZW1iZXI7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHVsb25nbG9uZ19tZW1iZXI7Ci0jZW5kaWYKKyAgICBsb25nIGxvbmcgbG9uZ2xvbmdfbWVtYmVyOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bG9uZ2xvbmdfbWVtYmVyOwogfSBhbGxfc3RydWN0bWVtYmVyczsKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtNDA1MSwxMCArNDIwMyw4IEBACiAgICAgeyJUX0ZMT0FUIiwgVF9GTE9BVCwgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLmZsb2F0X21lbWJlciksIDAsIE5VTEx9LAogICAgIHsiVF9ET1VCTEUiLCBUX0RPVUJMRSwgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLmRvdWJsZV9tZW1iZXIpLCAwLCBOVUxMfSwKICAgICB7IlRfU1RSSU5HX0lOUExBQ0UiLCBUX1NUUklOR19JTlBMQUNFLCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMuaW5wbGFjZV9tZW1iZXIpLCAwLCBOVUxMfSwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIHsiVF9MT05HTE9ORyIsIFRfTE9OR0xPTkcsIG9mZnNldG9mKHRlc3Rfc3RydWN0bWVtYmVycywgc3RydWN0bWVtYmVycy5sb25nbG9uZ19tZW1iZXIpLCAwLCBOVUxMfSwKICAgICB7IlRfVUxPTkdMT05HIiwgVF9VTE9OR0xPTkcsIG9mZnNldG9mKHRlc3Rfc3RydWN0bWVtYmVycywgc3RydWN0bWVtYmVycy51bG9uZ2xvbmdfbWVtYmVyKSwgMCwgTlVMTH0sCi0jZW5kaWYKICAgICB7TlVMTH0KIH07CiAKQEAgLTQwNjYsMTUgKzQyMTYsOSBAQAogICAgICAgICAiVF9CT09MIiwgIlRfQllURSIsICJUX1VCWVRFIiwgIlRfU0hPUlQiLCAiVF9VU0hPUlQiLAogICAgICAgICAiVF9JTlQiLCAiVF9VSU5UIiwgIlRfTE9ORyIsICJUX1VMT05HIiwgIlRfUFlTU0laRVQiLAogICAgICAgICAiVF9GTE9BVCIsICJUX0RPVUJMRSIsICJUX1NUUklOR19JTlBMQUNFIiwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAiVF9MT05HTE9ORyIsICJUX1VMT05HTE9ORyIsCi0jZW5kaWYKICAgICAgICAgTlVMTH07Ci0gICAgc3RhdGljIGNoYXIgKmZtdCA9ICJ8YmJCaEhpSWxrbmZkcyMiCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgIkxLIgotI2VuZGlmCi0gICAgICAgIDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBmbXRbXSA9ICJ8YmJCaEhpSWxrbmZkcyNMSyI7CiAgICAgdGVzdF9zdHJ1Y3RtZW1iZXJzICpvYjsKICAgICBjb25zdCBjaGFyICpzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHN0cmluZ19sZW4gPSAwOwpAQCAtNDA5NiwxMCArNDI0MCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iLT5zdHJ1Y3RtZW1iZXJzLmZsb2F0X21lbWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2ItPnN0cnVjdG1lbWJlcnMuZG91YmxlX21lbWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcywgJnN0cmluZ19sZW4KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJm9iLT5zdHJ1Y3RtZW1iZXJzLmxvbmdsb25nX21lbWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2ItPnN0cnVjdG1lbWJlcnMudWxvbmdsb25nX21lbWJlcgotI2VuZGlmCiAgICAgICAgICkpIHsKICAgICAgICAgUHlfREVDUkVGKG9iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00NDI1LDYgKzQ1NjcsNyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUFlfU1NJWkVfVF9NQVgiLCBQeUxvbmdfRnJvbVNzaXplX3QoUFlfU1NJWkVfVF9NQVgpKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlBZX1NTSVpFX1RfTUlOIiwgUHlMb25nX0Zyb21Tc2l6ZV90KFBZX1NTSVpFX1RfTUlOKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJTSVpFT0ZfUFlHQ19IRUFEIiwgUHlMb25nX0Zyb21Tc2l6ZV90KHNpemVvZihQeUdDX0hlYWQpKSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJTSVpFT0ZfVElNRV9UIiwgUHlMb25nX0Zyb21Tc2l6ZV90KHNpemVvZih0aW1lX3QpKSk7CiAgICAgUHlfSU5DUkVGKCZQeUluc3RhbmNlTWV0aG9kX1R5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaW5zdGFuY2VtZXRob2QiLCAoUHlPYmplY3QgKikmUHlJbnN0YW5jZU1ldGhvZF9UeXBlKTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYyBiL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKaW5kZXggNDFkYTk5Ny4uNGRhYTM0ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYworKysgYi9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jCkBAIC02MSw3ICs2MSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLUV4YW1wbGVfc2V0YXR0cihFeGFtcGxlT2JqZWN0ICpzZWxmLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKK0V4YW1wbGVfc2V0YXR0cihFeGFtcGxlT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpIHsKICAgICAgICAgc2VsZi0+eF9hdHRyID0gUHlEaWN0X05ldygpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGtpbnRlci5jIGIvTW9kdWxlcy9fdGtpbnRlci5jCmluZGV4IDMxNmY5MzIuLjIxZjA2M2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RraW50ZXIuYworKysgYi9Nb2R1bGVzL190a2ludGVyLmMKQEAgLTQ2Miw3ICs0NjIsNyBAQAogICAgICAgICAgICAgICAgIHYgPSBOVUxMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHcpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2LCBpLCB3KTsKICAgICAgICAgfQogICAgIH0KICAgICBUY2xfRnJlZShGUkVFQ0FTVCBhcmd2KTsKQEAgLTQ4MCwxMyArNDgwLDEzIEBACiAgICAgICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKICAgICAgICAgUHlPYmplY3QgKmVsZW0sICpuZXdlbGVtLCAqcmVzdWx0OwogCi0gICAgICAgIHNpemUgPSBQeVR1cGxlX1NpemUoYXJnKTsKKyAgICAgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoYXJnKTsKICAgICAgICAgcmVzdWx0ID0gTlVMTDsKICAgICAgICAgLyogUmVjdXJzaXZlbHkgaW52b2tlIFNwbGl0T2JqIGZvciBhbGwgdHVwbGUgaXRlbXMuCiAgICAgICAgICAgIElmIHRoaXMgZG9lcyBub3QgcmV0dXJuIGEgbmV3IG9iamVjdCwgbm8gYWN0aW9uIGlzCiAgICAgICAgICAgIG5lZWRlZC4gKi8KICAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9HZXRJdGVtKGFyZywgaSk7CisgICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmcsIGkpOwogICAgICAgICAgICAgbmV3ZWxlbSA9IFNwbGl0T2JqKGVsZW0pOwogICAgICAgICAgICAgaWYgKCFuZXdlbGVtKSB7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwpAQCAtNTAyLDEyICs1MDIsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgZm9yKGsgPSAwOyBrIDwgaTsgaysrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dldEl0ZW0oYXJnLCBrKTsKKyAgICAgICAgICAgICAgICAgICAgZWxlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJnLCBrKTsKICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0ocmVzdWx0LCBrLCBlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGssIGVsZW0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGksIG5ld2VsZW0pOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIG5ld2VsZW0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTI5LDcgKzUyOSw3IEBACiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC01NTEsNyArNTUxLDcgQEAKICAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykpIHsKICAgICAgICAgaW50IGFyZ2M7CiAgICAgICAgIGNvbnN0IGNoYXIgKiphcmd2OwotICAgICAgICBjaGFyICpsaXN0ID0gUHlCeXRlc19Bc1N0cmluZyhhcmcpOworICAgICAgICBjaGFyICpsaXN0ID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKTsKIAogICAgICAgICBpZiAoVGNsX1NwbGl0TGlzdCgoVGNsX0ludGVycCAqKU5VTEwsIGxpc3QsICZhcmdjLCAmYXJndikgIT0gVENMX09LKSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoYXJnKTsKQEAgLTU1OSw3ICs1NTksNyBAQAogICAgICAgICB9CiAgICAgICAgIFRjbF9GcmVlKEZSRUVDQVNUIGFyZ3YpOwogICAgICAgICBpZiAoYXJnYyA+IDEpCi0gICAgICAgICAgICByZXR1cm4gU3BsaXQoUHlCeXRlc19Bc1N0cmluZyhhcmcpKTsKKyAgICAgICAgICAgIHJldHVybiBTcGxpdChQeUJ5dGVzX0FTX1NUUklORyhhcmcpKTsKICAgICAgICAgLyogRmFsbCB0aHJvdWdoLCByZXR1cm5pbmcgYXJnLiAqLwogICAgIH0KICAgICBQeV9JTkNSRUYoYXJnKTsKQEAgLTc1OCw3ICs3NTgsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBUY2xfU2V0VmFyKHYtPmludGVycCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0Y2xfbGlicmFyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKHV0ZjhfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh1dGY4X3BhdGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVENMX0dMT0JBTF9PTkxZKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodXRmOF9wYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTg0MSw3ICs4NDEsNyBAQAogICAgIFB5X0RFQ1JFRih0cCk7CiB9CiAKLXN0YXRpYyBjaGFyKgorc3RhdGljIGNvbnN0IGNoYXIgKgogUHlUY2xPYmplY3RfVGNsU3RyaW5nKFB5T2JqZWN0ICpzZWxmKQogewogICAgIHJldHVybiBUY2xfR2V0U3RyaW5nKCgoUHlUY2xPYmplY3QqKXNlbGYpLT52YWx1ZSk7CkBAIC05NzYsNyArOTc2LDcgQEAKIH07CiAKIAotI2lmIFBZX1NJWkVfTUFYID4gSU5UX01BWAorI2lmIFNJWkVfTUFYID4gSU5UX01BWAogI2RlZmluZSBDSEVDS19TVFJJTkdfTEVOR1RIKHMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAocyAhPSBOVUxMICYmIHN0cmxlbihzKSA+PSBJTlRfTUFYKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJzdHJpbmcgaXMgdG9vIGxvbmciKTsgXApAQCAtMTE4MiwxMCArMTE4Miw4IEBACiB7CiAgICAgICAgIFRjbF9XaWRlSW50IHdpZGVWYWx1ZTsKICAgICAgICAgaWYgKFRjbF9HZXRXaWRlSW50RnJvbU9iaihUa2FwcF9JbnRlcnAodGthcHApLCB2YWx1ZSwgJndpZGVWYWx1ZSkgPT0gVENMX09LKSB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgIGlmIChzaXplb2Yod2lkZVZhbHVlKSA8PSBTSVpFT0ZfTE9OR19MT05HKQogICAgICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHdpZGVWYWx1ZSk7Ci0jZW5kaWYKICAgICAgICAgICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKHVuc2lnbmVkIGNoYXIgKikodm9pZCAqKSZ3aWRlVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih3aWRlVmFsdWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9MSVRUTEVfRU5ESUFOLApAQCAtMTMwNiw3ICsxMzA0LDcgQEAKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGksIGVsZW0pOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIGVsZW0pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTUxNyw4ICsxNTE1LDggQEAKICAgICBpbnQgZmxhZ3MgPSBUQ0xfRVZBTF9ESVJFQ1QgfCBUQ0xfRVZBTF9HTE9CQUw7CiAKICAgICAvKiBJZiBhcmdzIGlzIGEgc2luZ2xlIHR1cGxlLCByZXBsYWNlIHdpdGggY29udGVudHMgb2YgdHVwbGUgKi8KLSAgICBpZiAoMSA9PSBQeVR1cGxlX1NpemUoYXJncykpewotICAgICAgICBQeU9iamVjdCogaXRlbSA9IFB5VHVwbGVfR2V0SXRlbShhcmdzLCAwKTsKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAxKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKICAgICAgICAgaWYgKFB5VHVwbGVfQ2hlY2soaXRlbSkpCiAgICAgICAgICAgICBhcmdzID0gaXRlbTsKICAgICB9CkBAIC0xNzI2LDE0ICsxNzI0LDE0IEBACiB2YXJuYW1lX2NvbnZlcnRlcihQeU9iamVjdCAqaW4sIHZvaWQgKl9vdXQpCiB7CiAgICAgY2hhciAqczsKLSAgICBjaGFyICoqb3V0ID0gKGNoYXIqKilfb3V0OworICAgIGNvbnN0IGNoYXIgKipvdXQgPSAoY29uc3QgY2hhcioqKV9vdXQ7CiAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soaW4pKSB7Ci0gICAgICAgIGlmIChQeUJ5dGVzX1NpemUoaW4pID4gSU5UX01BWCkgeworICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShpbikgPiBJTlRfTUFYKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgImJ5dGVzIG9iamVjdCBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoaW4pOwotICAgICAgICBpZiAoc3RybGVuKHMpICE9IChzaXplX3QpUHlCeXRlc19TaXplKGluKSkgeworICAgICAgICBzID0gUHlCeXRlc19BU19TVFJJTkcoaW4pOworICAgICAgICBpZiAoc3RybGVuKHMpICE9IChzaXplX3QpUHlCeXRlc19HRVRfU0laRShpbikpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMTg0Niw3ICsxODQ0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBTZXRWYXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgZmxhZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTEsICpuYW1lMjsKKyAgICBjb25zdCBjaGFyICpuYW1lMSwgKm5hbWUyOwogICAgIFB5T2JqZWN0ICpuZXdWYWx1ZTsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBUY2xfT2JqICpuZXd2YWwsICpvazsKQEAgLTE5MTUsNyArMTkxMyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogR2V0VmFyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IGZsYWdzKQogewotICAgIGNoYXIgKm5hbWUxLCAqbmFtZTI9TlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lMSwgKm5hbWUyPU5VTEw7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgVGNsX09iaiAqdHJlczsKIApAQCAtMjI3NCwxMCArMjI3MiwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvYmpjOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzID0gRnJvbU9iaigoUHlPYmplY3QqKXNlbGYsIG9ianZbaV0pOwotICAgICAgICAgICAgaWYgKCFzIHx8IFB5VHVwbGVfU2V0SXRlbSh2LCBpLCBzKSkgeworICAgICAgICAgICAgaWYgKCFzKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2LCBpLCBzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdjsKICAgICB9CkBAIC0yMzA0LDExICsyMzAzLDEyIEBACiAKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpzID0gdW5pY29kZUZyb21UY2xTdHJpbmcoYXJndltpXSk7Ci0gICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0odiwgaSwgcykpIHsKKyAgICAgICAgaWYgKCFzKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICB2ID0gTlVMTDsKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHMpOwogICAgIH0KIAogICBmaW5hbGx5OgpAQCAtMjM0OSwxMCArMjM0OSwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvYmpjOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzID0gRnJvbU9iaigoUHlPYmplY3QqKXNlbGYsIG9ianZbaV0pOwotICAgICAgICAgICAgaWYgKCFzIHx8IFB5VHVwbGVfU2V0SXRlbSh2LCBpLCBzKSkgeworICAgICAgICAgICAgaWYgKCFzKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2LCBpLCBzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdjsKICAgICB9CkBAIC0yNDEwLDEwICsyNDExLDExIEBACiAKICAgICBmb3IgKGkgPSAwOyBpIDwgKGFyZ2MgLSAxKTsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpzID0gdW5pY29kZUZyb21UY2xTdHJpbmcoYXJndltpICsgMV0pOwotICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKGFyZywgaSwgcykpIHsKKyAgICAgICAgaWYgKCFzKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYXJnKTsKICAgICAgICAgICAgIHJldHVybiBQeXRob25DbWRfRXJyb3IoaW50ZXJwKTsKICAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZywgaSwgcyk7CiAgICAgfQogICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsIGFyZyk7CiAgICAgUHlfREVDUkVGKGFyZyk7CkBAIC0yNDg1LDcgKzI0ODcsNiBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGthcHAuY3JlYXRlY29tbWFuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKICAgICBuYW1lOiBzdHIKICAgICBmdW5jOiBvYmplY3QKICAgICAvCkBAIC0yNDk1LDcgKzI0OTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF90a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTFjNzlhNGVlMmFmNDEwIGlucHV0PTJiYzJjMDQ2YTA5MTQyMzRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTFjNzlhNGVlMmFmNDEwIGlucHV0PTI1NTc4NWNiNzBlZGM2YTBdKi8KIHsKICAgICBQeXRob25DbWRfQ2xpZW50RGF0YSAqZGF0YTsKICAgICBpbnQgZXJyOwpAQCAtMjU2MSw3ICsyNTYyLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF90a2ludGVyLnRrYXBwLmRlbGV0ZWNvbW1hbmQKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCiAgICAgbmFtZTogc3RyCiAgICAgLwogCkBAIC0yNTY5LDcgKzI1NjksNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2N2U4Y2I1ODQ1ZTBkMmQgaW5wdXQ9YjYzMDY0NjhmMTBiMjE5Y10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2N2U4Y2I1ODQ1ZTBkMmQgaW5wdXQ9NTNlOTk1MmVhZTFmODVmNV0qLwogewogICAgIGludCBlcnI7CiAKQEAgLTI3NjIsMTMgKzI3NjIsMTEgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF90a2ludGVyLnRrdGltZXJ0b2tlbi5kZWxldGV0aW1lcmhhbmRsZXIKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGt0dE9iamVjdCAqIikKLQogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGt0aW1lcnRva2VuX2RlbGV0ZXRpbWVyaGFuZGxlcl9pbXBsKFRrdHRPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQ3ZmUxN2YzMjhjZmE1NSBpbnB1dD0yNWJhNWRkNTk0ZTUyMDg0XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQ3ZmUxN2YzMjhjZmE1NSBpbnB1dD00MGJkMDcwZmY4NWY1Y2YzXSovCiB7CiAgICAgVGt0dE9iamVjdCAqdiA9IHNlbGY7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSB2LT5mdW5jOwpAQCAtMjg5NCw3ICsyODkyLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF90a2ludGVyLnRrYXBwLm1haW5sb29wCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQogICAgIHRocmVzaG9sZDogaW50ID0gMAogICAgIC8KIApAQCAtMjkwMiw3ICsyODk5LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIF90a2ludGVyX3RrYXBwX21haW5sb29wX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCB0aHJlc2hvbGQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGJhOGVhYmJlNTc4NDFiMCBpbnB1dD1hZDU3YzljMWRkMmI5NDcwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGJhOGVhYmJlNTc4NDFiMCBpbnB1dD0wMzZiY2RjZjAzZDVlY2EwXSovCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwpAQCAtMzA3MiwxMyArMzA2OSwxMSBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGthcHAud2lsbGRpc3BhdGNoCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQotCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfaW1wbChUa2FwcE9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZTNmNDZkMjQ0NjQyMTU1IGlucHV0PTI2MzA2OTk3Njc4MDg5NzBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZTNmNDZkMjQ0NjQyMTU1IGlucHV0PWQ4OGY1OTcwODQzZDZkYWJdKi8KIHsKICAgICBzZWxmLT5kaXNwYXRjaGluZyA9IDE7CiAKQEAgLTM2MjksMTQgKzM2MjQsMTQgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFRjbF9GaW5kRXhlY3V0YWJsZShQeUJ5dGVzX0FzU3RyaW5nKGNleGUpKTsKKyAgICAgICAgICAgIFRjbF9GaW5kRXhlY3V0YWJsZShQeUJ5dGVzX0FTX1NUUklORyhjZXhlKSk7CiAKICAgICAgICAgICAgIGlmIChzZXRfdmFyKSB7CiAgICAgICAgICAgICAgICAgU2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoTCJUQ0xfTElCUkFSWSIsIE5VTEwpOwogICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUod2NzX3BhdGgpOwogICAgICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgICAgIFRjbF9GaW5kRXhlY3V0YWJsZShQeUJ5dGVzX0FzU3RyaW5nKGNleGUpKTsKKyAgICAgICAgICAgIFRjbF9GaW5kRXhlY3V0YWJsZShQeUJ5dGVzX0FTX1NUUklORyhjZXhlKSk7CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgICAgICB9CiAgICAgICAgIFB5X1hERUNSRUYoY2V4ZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190cmFjZW1hbGxvYy5jIGIvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYwppbmRleCA2NWJmN2EzLi5lYzhiZDk2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL190cmFjZW1hbGxvYy5jCisrKyBiL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMKQEAgLTM5LDcgKzM5LDExIEBACiAgICAgLyogbGltaXQgb2YgdGhlIG51bWJlciBvZiBmcmFtZXMgaW4gYSB0cmFjZWJhY2ssIDEgYnkgZGVmYXVsdC4KICAgICAgICBWYXJpYWJsZSBwcm90ZWN0ZWQgYnkgdGhlIEdJTC4gKi8KICAgICBpbnQgbWF4X25mcmFtZTsKLX0gdHJhY2VtYWxsb2NfY29uZmlnID0ge1RSQUNFTUFMTE9DX05PVF9JTklUSUFMSVpFRCwgMCwgMX07CisKKyAgICAvKiB1c2UgZG9tYWluIGluIHRyYWNlIGtleT8KKyAgICAgICBWYXJpYWJsZSBwcm90ZWN0ZWQgYnkgdGhlIEdJTC4gKi8KKyAgICBpbnQgdXNlX2RvbWFpbjsKK30gdHJhY2VtYWxsb2NfY29uZmlnID0ge1RSQUNFTUFMTE9DX05PVF9JTklUSUFMSVpFRCwgMCwgMSwgMH07CiAKICNpZiBkZWZpbmVkKFRSQUNFX1JBV19NQUxMT0MpICYmIGRlZmluZWQoV0lUSF9USFJFQUQpCiAvKiBUaGlzIGxvY2sgaXMgbmVlZGVkIGJlY2F1c2UgdHJhY2VtYWxsb2NfZnJlZSgpIGlzIGNhbGxlZCB3aXRob3V0CkBAIC01NCwxMCArNTgsMjEgQEAKICMgIGRlZmluZSBUQUJMRVNfVU5MT0NLKCkKICNlbmRpZgogCisKKyNkZWZpbmUgREVGQVVMVF9ET01BSU4gMAorCisvKiBQYWNrIHRoZSBmcmFtZV90IHN0cnVjdHVyZSB0byByZWR1Y2UgdGhlIG1lbW9yeSBmb290cHJpbnQuICovCit0eXBlZGVmIHN0cnVjdAorI2lmZGVmIF9fR05VQ19fCitfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQorI2VuZGlmCit7CisgICAgdWludHB0cl90IHB0cjsKKyAgICBfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW47Cit9IHBvaW50ZXJfdDsKKwogLyogUGFjayB0aGUgZnJhbWVfdCBzdHJ1Y3R1cmUgdG8gcmVkdWNlIHRoZSBtZW1vcnkgZm9vdHByaW50IG9uIDY0LWJpdAotICAgYXJjaGl0ZWN0dXJlczogMTIgYnl0ZXMgaW5zdGVhZCBvZiAxNi4gVGhpcyBvcHRpbWl6YXRpb24gbWlnaHQgcHJvZHVjZQotICAgU0lHQlVTIG9uIGFyY2hpdGVjdHVyZXMgbm90IHN1cHBvcnRpbmcgdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3NlcyAoNjQtYml0Ci0gICBNSVBTIENQVT8pOiBvbiBzdWNoIGFyY2hpdGVjdHVyZSwgdGhlIHN0cnVjdHVyZSBtdXN0IG5vdCBiZSBwYWNrZWQuICovCisgICBhcmNoaXRlY3R1cmVzOiAxMiBieXRlcyBpbnN0ZWFkIG9mIDE2LiAqLwogdHlwZWRlZiBzdHJ1Y3QKICNpZmRlZiBfX0dOVUNfXwogX19hdHRyaWJ1dGVfXygocGFja2VkKSkKQEAgLTY1LDEwICs4MCwxMyBAQAogX2RlY2xzcGVjKGFsaWduKDQpKQogI2VuZGlmCiB7CisgICAgLyogZmlsZW5hbWUgY2Fubm90IGJlIE5VTEw6ICI8dW5rbm93bj4iIGlzIHVzZWQgaWYgdGhlIFB5dGhvbiBmcmFtZQorICAgICAgIGZpbGVuYW1lIGlzIE5VTEwgKi8KICAgICBQeU9iamVjdCAqZmlsZW5hbWU7CiAgICAgdW5zaWduZWQgaW50IGxpbmVubzsKIH0gZnJhbWVfdDsKIAorCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlfdWhhc2hfdCBoYXNoOwogICAgIGludCBuZnJhbWU7CkBAIC04MSw2ICs5OSw3IEBACiAjZGVmaW5lIE1BWF9ORlJBTUUgXAogICAgICAgICAoKElOVF9NQVggLSAoaW50KXNpemVvZih0cmFjZWJhY2tfdCkpIC8gKGludClzaXplb2YoZnJhbWVfdCkgKyAxKQogCisKIHN0YXRpYyBQeU9iamVjdCAqdW5rbm93bl9maWxlbmFtZSA9IE5VTEw7CiBzdGF0aWMgdHJhY2ViYWNrX3QgdHJhY2VtYWxsb2NfZW1wdHlfdHJhY2ViYWNrOwogCkBAIC05Myw2ICsxMTIsNyBAQAogICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CiB9IHRyYWNlX3Q7CiAKKwogLyogU2l6ZSBpbiBieXRlcyBvZiBjdXJyZW50bHkgdHJhY2VkIG1lbW9yeS4KICAgIFByb3RlY3RlZCBieSBUQUJMRVNfTE9DSygpLiAqLwogc3RhdGljIHNpemVfdCB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ID0gMDsKQEAgLTExOSw2ICsxMzksNyBAQAogICAgUHJvdGVjdGVkIGJ5IFRBQkxFU19MT0NLKCkuICovCiBzdGF0aWMgX1B5X2hhc2h0YWJsZV90ICp0cmFjZW1hbGxvY190cmFjZXMgPSBOVUxMOwogCisKICNpZmRlZiBUUkFDRV9ERUJVRwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQpAQCAtMTMzLDYgKzE1NCw3IEBACiB9CiAjZW5kaWYKIAorCiAjaWYgZGVmaW5lZChXSVRIX1RIUkVBRCkgJiYgZGVmaW5lZChUUkFDRV9SQVdfTUFMTE9DKQogI2RlZmluZSBSRUVOVFJBTlRfVEhSRUFETE9DQUwKIApAQCAtMTQzLDcgKzE2NSw3IEBACiAjICBlcnJvciAibmVlZCBuYXRpdmUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykiCiAjZW5kaWYKIAotc3RhdGljIGludCB0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5Oworc3RhdGljIGludCB0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ID0gLTE7CiAKIC8qIEFueSBub24tTlVMTCBwb2ludGVyIGNhbiBiZSB1c2VkICovCiAjZGVmaW5lIFJFRU5UUkFOVCBQeV9UcnVlCkBAIC0xNTEsNyArMTczLDEwIEBACiBzdGF0aWMgaW50CiBnZXRfcmVlbnRyYW50KHZvaWQpCiB7Ci0gICAgdm9pZCAqcHRyID0gUHlUaHJlYWRfZ2V0X2tleV92YWx1ZSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5KTsKKyAgICB2b2lkICpwdHI7CisKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSAhPSAtMSk7CisgICAgcHRyID0gUHlUaHJlYWRfZ2V0X2tleV92YWx1ZSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5KTsKICAgICBpZiAocHRyICE9IE5VTEwpIHsKICAgICAgICAgYXNzZXJ0KHB0ciA9PSBSRUVOVFJBTlQpOwogICAgICAgICByZXR1cm4gMTsKQEAgLTE2NCwxMiArMTg5LDE0IEBACiBzZXRfcmVlbnRyYW50KGludCByZWVudHJhbnQpCiB7CiAgICAgYXNzZXJ0KHJlZW50cmFudCA9PSAwIHx8IHJlZW50cmFudCA9PSAxKTsKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSAhPSAtMSk7CisKICAgICBpZiAocmVlbnRyYW50KSB7Ci0gICAgICAgIGFzc2VydChQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpID09IE5VTEwpOworICAgICAgICBhc3NlcnQoIWdldF9yZWVudHJhbnQoKSk7CiAgICAgICAgIFB5VGhyZWFkX3NldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSwgUkVFTlRSQU5UKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGFzc2VydChQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpID09IFJFRU5UUkFOVCk7CisgICAgICAgIGFzc2VydChnZXRfcmVlbnRyYW50KCkpOwogICAgICAgICBQeVRocmVhZF9zZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXksIE5VTEwpOwogICAgIH0KIH0KQEAgLTE5NCwyNyArMjIxLDc1IEBACiB9CiAjZW5kaWYKIAotc3RhdGljIGludAotaGFzaHRhYmxlX2NvbXBhcmVfdW5pY29kZShjb25zdCB2b2lkICprZXksIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCisKK3N0YXRpYyBQeV91aGFzaF90CitoYXNodGFibGVfaGFzaF9weW9iamVjdChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5KQogewotICAgIGlmIChrZXkgIT0gTlVMTCAmJiBlbnRyeS0+a2V5ICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAoUHlVbmljb2RlX0NvbXBhcmUoKFB5T2JqZWN0ICopa2V5LCAoUHlPYmplY3QgKillbnRyeS0+a2V5KSA9PSAwKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBrZXkgPT0gZW50cnktPmtleTsKKyAgICBQeU9iamVjdCAqb2JqOworCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwgb2JqKTsKKyAgICByZXR1cm4gUHlPYmplY3RfSGFzaChvYmopOwogfQogCi1zdGF0aWMgX1B5X2hhc2h0YWJsZV9hbGxvY2F0b3JfdCBoYXNodGFibGVfYWxsb2MgPSB7bWFsbG9jLCBmcmVlfTsKKworc3RhdGljIGludAoraGFzaHRhYmxlX2NvbXBhcmVfdW5pY29kZShfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQoreworICAgIFB5T2JqZWN0ICprZXkxLCAqa2V5MjsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIGtleTEpOworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCBrZXkyKTsKKworICAgIGlmIChrZXkxICE9IE5VTEwgJiYga2V5MiAhPSBOVUxMKQorICAgICAgICByZXR1cm4gKFB5VW5pY29kZV9Db21wYXJlKGtleTEsIGtleTIpID09IDApOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGtleTEgPT0ga2V5MjsKK30KKworCitzdGF0aWMgUHlfdWhhc2hfdAoraGFzaHRhYmxlX2hhc2hfcG9pbnRlcl90KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXkpCit7CisgICAgcG9pbnRlcl90IHB0cjsKKyAgICBQeV91aGFzaF90IGhhc2g7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBwdHIpOworCisgICAgaGFzaCA9IChQeV91aGFzaF90KV9QeV9IYXNoUG9pbnRlcigodm9pZCopcHRyLnB0cik7CisgICAgaGFzaCBePSBwdHIuZG9tYWluOworICAgIHJldHVybiBoYXNoOworfQorCisKK3N0YXRpYyBpbnQKK2hhc2h0YWJsZV9jb21wYXJlX3BvaW50ZXJfdChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCit7CisgICAgcG9pbnRlcl90IHB0cjEsIHB0cjI7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBwdHIxKTsKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgcHRyMik7CisKKyAgICAvKiBjb21wYXJlIHBvaW50ZXIgYmVmb3JlIGRvbWFpbiwgYmVjYXVzZSBwb2ludGVyIGlzIG1vcmUgbGlrZWx5IHRvIGJlCisgICAgICAgZGlmZmVyZW50ICovCisgICAgcmV0dXJuIChwdHIxLnB0ciA9PSBwdHIyLnB0ciAmJiBwdHIxLmRvbWFpbiA9PSBwdHIyLmRvbWFpbik7CisKK30KKwogCiBzdGF0aWMgX1B5X2hhc2h0YWJsZV90ICoKLWhhc2h0YWJsZV9uZXcoc2l6ZV90IGRhdGFfc2l6ZSwKK2hhc2h0YWJsZV9uZXcoc2l6ZV90IGtleV9zaXplLCBzaXplX3QgZGF0YV9zaXplLAogICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYykKIHsKLSAgICByZXR1cm4gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChkYXRhX3NpemUsIDAsCisgICAgX1B5X2hhc2h0YWJsZV9hbGxvY2F0b3JfdCBoYXNodGFibGVfYWxsb2MgPSB7bWFsbG9jLCBmcmVlfTsKKyAgICByZXR1cm4gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChrZXlfc2l6ZSwgZGF0YV9zaXplLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hfZnVuYywgY29tcGFyZV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsICZoYXNodGFibGVfYWxsb2MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYXNodGFibGVfYWxsb2MpOwogfQogCisKIHN0YXRpYyB2b2lkKgogcmF3X21hbGxvYyhzaXplX3Qgc2l6ZSkKIHsKQEAgLTIyNywyMSArMzAyLDI4IEBACiAgICAgYWxsb2NhdG9ycy5yYXcuZnJlZShhbGxvY2F0b3JzLnJhdy5jdHgsIHB0cik7CiB9CiAKKwogc3RhdGljIFB5X3VoYXNoX3QKLWhhc2h0YWJsZV9oYXNoX3RyYWNlYmFjayhjb25zdCB2b2lkICprZXkpCitoYXNodGFibGVfaGFzaF90cmFjZWJhY2soX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSkKIHsKLSAgICBjb25zdCB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrID0ga2V5OworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCB0cmFjZWJhY2spOwogICAgIHJldHVybiB0cmFjZWJhY2stPmhhc2g7CiB9CiAKKwogc3RhdGljIGludAotaGFzaHRhYmxlX2NvbXBhcmVfdHJhY2ViYWNrKGNvbnN0IHRyYWNlYmFja190ICp0cmFjZWJhY2sxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqaGUpCitoYXNodGFibGVfY29tcGFyZV90cmFjZWJhY2soX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQogewotICAgIGNvbnN0IHRyYWNlYmFja190ICp0cmFjZWJhY2syID0gaGUtPmtleTsKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrMSwgKnRyYWNlYmFjazI7CiAgICAgY29uc3QgZnJhbWVfdCAqZnJhbWUxLCAqZnJhbWUyOwogICAgIGludCBpOwogCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwgdHJhY2ViYWNrMSk7CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIHRyYWNlYmFjazIpOworCiAgICAgaWYgKHRyYWNlYmFjazEtPm5mcmFtZSAhPSB0cmFjZWJhY2syLT5uZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yNjAsNiArMzQyLDcgQEAKICAgICByZXR1cm4gMTsKIH0KIAorCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfZ2V0X2ZyYW1lKFB5RnJhbWVPYmplY3QgKnB5ZnJhbWUsIGZyYW1lX3QgKmZyYW1lKQogewpAQCAtMzEwLDE1ICszOTMsMTUgQEAKICAgICB9CiAKICAgICAvKiBpbnRlcm4gdGhlIGZpbGVuYW1lICovCi0gICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeSh0cmFjZW1hbGxvY19maWxlbmFtZXMsIGZpbGVuYW1lKTsKKyAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZmlsZW5hbWUpOwogICAgIGlmIChlbnRyeSAhPSBOVUxMKSB7Ci0gICAgICAgIGZpbGVuYW1lID0gKFB5T2JqZWN0ICopZW50cnktPmtleTsKKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWSh0cmFjZW1hbGxvY19maWxlbmFtZXMsIGVudHJ5LCBmaWxlbmFtZSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiB0cmFjZW1hbGxvY19maWxlbmFtZXMgaXMgcmVzcG9uc2libGUgdG8ga2VlcCBhIHJlZmVyZW5jZQogICAgICAgICAgICB0byB0aGUgZmlsZW5hbWUgKi8KICAgICAgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKLSAgICAgICAgaWYgKF9QeV9oYXNodGFibGVfc2V0KHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZmlsZW5hbWUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBpZiAoX1B5X0hBU0hUQUJMRV9TRVRfTk9EQVRBKHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZmlsZW5hbWUpIDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKICNpZmRlZiBUUkFDRV9ERUJVRwogICAgICAgICAgICAgdHJhY2VtYWxsb2NfZXJyb3IoImZhaWxlZCB0byBpbnRlcm4gdGhlIGZpbGVuYW1lIik7CkBAIC0zMzEsNiArNDE0LDcgQEAKICAgICBmcmFtZS0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKIH0KIAorCiBzdGF0aWMgUHlfdWhhc2hfdAogdHJhY2ViYWNrX2hhc2godHJhY2ViYWNrX3QgKnRyYWNlYmFjaykKIHsKQEAgLTM1NSw2ICs0MzksNyBAQAogICAgIHJldHVybiB4OwogfQogCisKIHN0YXRpYyB2b2lkCiB0cmFjZWJhY2tfZ2V0X2ZyYW1lcyh0cmFjZWJhY2tfdCAqdHJhY2ViYWNrKQogewpAQCAtMzgyLDYgKzQ2Nyw3IEBACiAgICAgfQogfQogCisKIHN0YXRpYyB0cmFjZWJhY2tfdCAqCiB0cmFjZWJhY2tfbmV3KHZvaWQpCiB7CkBAIC00MDEsOSArNDg3LDkgQEAKICAgICB0cmFjZWJhY2stPmhhc2ggPSB0cmFjZWJhY2tfaGFzaCh0cmFjZWJhY2spOwogCiAgICAgLyogaW50ZXJuIHRoZSB0cmFjZWJhY2sgKi8KLSAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KHRyYWNlbWFsbG9jX3RyYWNlYmFja3MsIHRyYWNlYmFjayk7CisgICAgZW50cnkgPSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWSh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCB0cmFjZWJhY2spOwogICAgIGlmIChlbnRyeSAhPSBOVUxMKSB7Ci0gICAgICAgIHRyYWNlYmFjayA9ICh0cmFjZWJhY2tfdCAqKWVudHJ5LT5rZXk7CisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkodHJhY2VtYWxsb2NfdHJhY2ViYWNrcywgZW50cnksIHRyYWNlYmFjayk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICB0cmFjZWJhY2tfdCAqY29weTsKQEAgLTQyMCw3ICs1MDYsNyBAQAogICAgICAgICB9CiAgICAgICAgIG1lbWNweShjb3B5LCB0cmFjZWJhY2ssIHRyYWNlYmFja19zaXplKTsKIAotICAgICAgICBpZiAoX1B5X2hhc2h0YWJsZV9zZXQodHJhY2VtYWxsb2NfdHJhY2ViYWNrcywgY29weSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIGlmIChfUHlfSEFTSFRBQkxFX1NFVF9OT0RBVEEodHJhY2VtYWxsb2NfdHJhY2ViYWNrcywgY29weSkgPCAwKSB7CiAgICAgICAgICAgICByYXdfZnJlZShjb3B5KTsKICNpZmRlZiBUUkFDRV9ERUJVRwogICAgICAgICAgICAgdHJhY2VtYWxsb2NfZXJyb3IoImZhaWxlZCB0byBpbnRlcm4gdGhlIHRyYWNlYmFjazogcHV0ZGF0YSBmYWlsZWQiKTsKQEAgLTQzMiw1MyArNTE4LDE2MSBAQAogICAgIHJldHVybiB0cmFjZWJhY2s7CiB9CiAKKwogc3RhdGljIGludAotdHJhY2VtYWxsb2NfYWRkX3RyYWNlKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpCit0cmFjZW1hbGxvY191c2VfZG9tYWluX2NiKF9QeV9oYXNodGFibGVfdCAqb2xkX3RyYWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOwotICAgIHRyYWNlX3QgdHJhY2U7Ci0gICAgaW50IHJlczsKKyAgICB1aW50cHRyX3QgcHRyOworICAgIHBvaW50ZXJfdCBrZXk7CisgICAgX1B5X2hhc2h0YWJsZV90ICpuZXdfdHJhY2VzID0gKF9QeV9oYXNodGFibGVfdCAqKXVzZXJfZGF0YTsKKyAgICBjb25zdCB2b2lkICpwZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEob2xkX3RyYWNlcywgZW50cnkpOwogCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKLSNlbmRpZgorICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkob2xkX3RyYWNlcywgZW50cnksIHB0cik7CisgICAga2V5LnB0ciA9IHB0cjsKKyAgICBrZXkuZG9tYWluID0gREVGQVVMVF9ET01BSU47CiAKLSAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tfbmV3KCk7Ci0gICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKQorICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX3NldChuZXdfdHJhY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2V5KSwgJmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3RyYWNlcy0+ZGF0YV9zaXplLCBwZGF0YSk7Cit9CisKKworLyogQ29udmVydCB0cmFjZW1hbGxvY190cmFjZXMgZnJvbSBjb21wYWN0IGtleSAodWludHB0cl90KSB0byBwb2ludGVyX3Qga2V5LgorICogUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuICovCitzdGF0aWMgaW50Cit0cmFjZW1hbGxvY191c2VfZG9tYWluKHZvaWQpCit7CisgICAgX1B5X2hhc2h0YWJsZV90ICpuZXdfdHJhY2VzID0gTlVMTDsKKworICAgIGFzc2VydCghdHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pOworCisgICAgbmV3X3RyYWNlcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKHBvaW50ZXJfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRyYWNlX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9oYXNoX3BvaW50ZXJfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfY29tcGFyZV9wb2ludGVyX3QpOworICAgIGlmIChuZXdfdHJhY2VzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgdHJhY2Uuc2l6ZSA9IHNpemU7Ci0gICAgdHJhY2UudHJhY2ViYWNrID0gdHJhY2ViYWNrOwotCi0gICAgcmVzID0gX1B5X0hBU0hUQUJMRV9TRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKLSAgICBpZiAocmVzID09IDApIHsKLSAgICAgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPD0gUFlfU0laRV9NQVggLSBzaXplKTsKLSAgICAgICAgdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSArPSBzaXplOwotICAgICAgICBpZiAodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA+IHRyYWNlbWFsbG9jX3BlYWtfdHJhY2VkX21lbW9yeSkKLSAgICAgICAgICAgIHRyYWNlbWFsbG9jX3BlYWtfdHJhY2VkX21lbW9yeSA9IHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnk7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlczsKKyAgICBpZiAoX1B5X2hhc2h0YWJsZV9mb3JlYWNoKHRyYWNlbWFsbG9jX3RyYWNlcywgdHJhY2VtYWxsb2NfdXNlX2RvbWFpbl9jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld190cmFjZXMpIDwgMCkKKyAgICB7CisgICAgICAgIF9QeV9oYXNodGFibGVfZGVzdHJveShuZXdfdHJhY2VzKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIF9QeV9oYXNodGFibGVfZGVzdHJveSh0cmFjZW1hbGxvY190cmFjZXMpOworICAgIHRyYWNlbWFsbG9jX3RyYWNlcyA9IG5ld190cmFjZXM7CisKKyAgICB0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbiA9IDE7CisKKyAgICByZXR1cm4gMDsKIH0KIAorCiBzdGF0aWMgdm9pZAotdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHZvaWQgKnB0cikKK3RyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIpCiB7CiAgICAgdHJhY2VfdCB0cmFjZTsKKyAgICBpbnQgcmVtb3ZlZDsKIAotICAgIGlmIChfUHlfaGFzaHRhYmxlX3BvcCh0cmFjZW1hbGxvY190cmFjZXMsIHB0ciwgJnRyYWNlLCBzaXplb2YodHJhY2UpKSkgeworICAgIGFzc2VydCh0cmFjZW1hbGxvY19jb25maWcudHJhY2luZyk7CisKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgcG9pbnRlcl90IGtleSA9IHtwdHIsIGRvbWFpbn07CisgICAgICAgIHJlbW92ZWQgPSBfUHlfSEFTSFRBQkxFX1BPUCh0cmFjZW1hbGxvY190cmFjZXMsIGtleSwgdHJhY2UpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVtb3ZlZCA9IF9QeV9IQVNIVEFCTEVfUE9QKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCB0cmFjZSk7CisgICAgfQorICAgIGlmICghcmVtb3ZlZCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPj0gdHJhY2Uuc2l6ZSk7CisgICAgdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSAtPSB0cmFjZS5zaXplOworfQorCisjZGVmaW5lIFJFTU9WRV9UUkFDRShwdHIpIFwKKyAgICAgICAgICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShERUZBVUxUX0RPTUFJTiwgKHVpbnRwdHJfdCkocHRyKSkKKworCitzdGF0aWMgaW50Cit0cmFjZW1hbGxvY19hZGRfdHJhY2UoX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKQoreworICAgIHBvaW50ZXJfdCBrZXkgPSB7cHRyLCBkb21haW59OworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CisgICAgdHJhY2VfdCB0cmFjZTsKKyAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QqIGVudHJ5OworICAgIGludCByZXM7CisKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfY29uZmlnLnRyYWNpbmcpOworCisgICAgdHJhY2ViYWNrID0gdHJhY2ViYWNrX25ldygpOworICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCF0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbiAmJiBkb21haW4gIT0gREVGQVVMVF9ET01BSU4pIHsKKyAgICAgICAgLyogZmlyc3QgdHJhY2UgdXNpbmcgYSBub24temVybyBkb21haW4gd2hlcmVhcyB0cmFjZXMgdXNlIGNvbXBhY3QKKyAgICAgICAgICAgKHVpbnRwdHJfdCkga2V5czogc3dpdGNoIHRvIHBvaW50ZXJfdCBrZXlzLiAqLworICAgICAgICBpZiAodHJhY2VtYWxsb2NfdXNlX2RvbWFpbigpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgIGVudHJ5ID0gX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkodHJhY2VtYWxsb2NfdHJhY2VzLCBrZXkpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZW50cnkgPSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWSh0cmFjZW1hbGxvY190cmFjZXMsIHB0cik7CisgICAgfQorCisgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKKyAgICAgICAgLyogdGhlIG1lbW9yeSBibG9jayBpcyBhbHJlYWR5IHRyYWNrZWQgKi8KKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEodHJhY2VtYWxsb2NfdHJhY2VzLCBlbnRyeSwgdHJhY2UpOwogICAgICAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA+PSB0cmFjZS5zaXplKTsKICAgICAgICAgdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSAtPSB0cmFjZS5zaXplOworCisgICAgICAgIHRyYWNlLnNpemUgPSBzaXplOworICAgICAgICB0cmFjZS50cmFjZWJhY2sgPSB0cmFjZWJhY2s7CisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfV1JJVEVfREFUQSh0cmFjZW1hbGxvY190cmFjZXMsIGVudHJ5LCB0cmFjZSk7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICB0cmFjZS5zaXplID0gc2l6ZTsKKyAgICAgICAgdHJhY2UudHJhY2ViYWNrID0gdHJhY2ViYWNrOworCisgICAgICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICAgICAgcmVzID0gX1B5X0hBU0hUQUJMRV9TRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBrZXksIHRyYWNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IF9QeV9IQVNIVEFCTEVfU0VUKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCB0cmFjZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcyAhPSAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPD0gU0laRV9NQVggLSBzaXplKTsKKyAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ICs9IHNpemU7CisgICAgaWYgKHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPiB0cmFjZW1hbGxvY19wZWFrX3RyYWNlZF9tZW1vcnkpCisgICAgICAgIHRyYWNlbWFsbG9jX3BlYWtfdHJhY2VkX21lbW9yeSA9IHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnk7CisgICAgcmV0dXJuIDA7CiB9CiAKKyNkZWZpbmUgQUREX1RSQUNFKHB0ciwgc2l6ZSkgXAorICAgICAgICAgICAgdHJhY2VtYWxsb2NfYWRkX3RyYWNlKERFRkFVTFRfRE9NQUlOLCAodWludHB0cl90KShwdHIpLCBzaXplKQorCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfYWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewogICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CiAgICAgdm9pZCAqcHRyOwogCi0gICAgYXNzZXJ0KGVsc2l6ZSA9PSAwIHx8IG5lbGVtIDw9IFBZX1NJWkVfTUFYIC8gZWxzaXplKTsKKyAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gU0laRV9NQVggLyBlbHNpemUpOwogCiAgICAgaWYgKHVzZV9jYWxsb2MpCiAgICAgICAgIHB0ciA9IGFsbG9jLT5jYWxsb2MoYWxsb2MtPmN0eCwgbmVsZW0sIGVsc2l6ZSk7CkBAIC00ODgsNyArNjgyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBUQUJMRVNfTE9DSygpOwotICAgIGlmICh0cmFjZW1hbGxvY19hZGRfdHJhY2UocHRyLCBuZWxlbSAqIGVsc2l6ZSkgPCAwKSB7CisgICAgaWYgKEFERF9UUkFDRShwdHIsIG5lbGVtICogZWxzaXplKSA8IDApIHsKICAgICAgICAgLyogRmFpbGVkIHRvIGFsbG9jYXRlIGEgdHJhY2UgZm9yIHRoZSBuZXcgbWVtb3J5IGJsb2NrICovCiAgICAgICAgIFRBQkxFU19VTkxPQ0soKTsKICAgICAgICAgYWxsb2MtPmZyZWUoYWxsb2MtPmN0eCwgcHRyKTsKQEAgLTQ5OCw2ICs2OTIsNyBAQAogICAgIHJldHVybiBwdHI7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CkBAIC01MTIsOSArNzA3LDE0IEBACiAgICAgICAgIC8qIGFuIGV4aXN0aW5nIG1lbW9yeSBibG9jayBoYXMgYmVlbiByZXNpemVkICovCiAKICAgICAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICAgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHB0cik7CiAKLSAgICAgICAgaWYgKHRyYWNlbWFsbG9jX2FkZF90cmFjZShwdHIyLCBuZXdfc2l6ZSkgPCAwKSB7CisgICAgICAgIC8qIHRyYWNlbWFsbG9jX2FkZF90cmFjZSgpIHVwZGF0ZXMgdGhlIHRyYWNlIGlmIHRoZXJlIGlzIGFscmVhZHkKKyAgICAgICAgICAgYSB0cmFjZSBhdCBhZGRyZXNzIChkb21haW4sIHB0cjIpICovCisgICAgICAgIGlmIChwdHIyICE9IHB0cikgeworICAgICAgICAgICAgUkVNT1ZFX1RSQUNFKHB0cik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoQUREX1RSQUNFKHB0cjIsIG5ld19zaXplKSA8IDApIHsKICAgICAgICAgICAgIC8qIE1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZC4gVGhlIGVycm9yIGNhbm5vdCBiZSByZXBvcnRlZCB0bwogICAgICAgICAgICAgICAgdGhlIGNhbGxlciwgYmVjYXVzZSByZWFsbG9jKCkgbWF5IGFscmVhZHkgaGF2ZSBzaHJ1bmsgdGhlCiAgICAgICAgICAgICAgICBtZW1vcnkgYmxvY2sgYW5kIHNvIHJlbW92ZWQgYnl0ZXMuCkBAIC01MzIsNyArNzMyLDcgQEAKICAgICAgICAgLyogbmV3IGFsbG9jYXRpb24gKi8KIAogICAgICAgICBUQUJMRVNfTE9DSygpOwotICAgICAgICBpZiAodHJhY2VtYWxsb2NfYWRkX3RyYWNlKHB0cjIsIG5ld19zaXplKSA8IDApIHsKKyAgICAgICAgaWYgKEFERF9UUkFDRShwdHIyLCBuZXdfc2l6ZSkgPCAwKSB7CiAgICAgICAgICAgICAvKiBGYWlsZWQgdG8gYWxsb2NhdGUgYSB0cmFjZSBmb3IgdGhlIG5ldyBtZW1vcnkgYmxvY2sgKi8KICAgICAgICAgICAgIFRBQkxFU19VTkxPQ0soKTsKICAgICAgICAgICAgIGFsbG9jLT5mcmVlKGFsbG9jLT5jdHgsIHB0cjIpOwpAQCAtNTQzLDYgKzc0Myw3IEBACiAgICAgcmV0dXJuIHB0cjI7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2ZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpCiB7CkBAIC01NTcsMTAgKzc1OCwxMSBAQAogICAgIGFsbG9jLT5mcmVlKGFsbG9jLT5jdHgsIHB0cik7CiAKICAgICBUQUJMRVNfTE9DSygpOwotICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShwdHIpOworICAgIFJFTU9WRV9UUkFDRShwdHIpOwogICAgIFRBQkxFU19VTkxPQ0soKTsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX2FsbG9jX2dpbChpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CkBAIC01ODUsMTggKzc4NywyMSBAQAogICAgIHJldHVybiBwdHI7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19tYWxsb2NfZ2lsKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCiB7CiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX2FsbG9jX2dpbCgwLCBjdHgsIDEsIHNpemUpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfY2FsbG9jX2dpbCh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICAgICByZXR1cm4gdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yZWFsbG9jX2dpbCh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewpAQCAtNjEyLDcgKzgxNyw3IEBACiAgICAgICAgIHB0cjIgPSBhbGxvYy0+cmVhbGxvYyhhbGxvYy0+Y3R4LCBwdHIsIG5ld19zaXplKTsKICAgICAgICAgaWYgKHB0cjIgIT0gTlVMTCAmJiBwdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICAgICAgICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShwdHIpOworICAgICAgICAgICAgUkVNT1ZFX1RSQUNFKHB0cik7CiAgICAgICAgICAgICBUQUJMRVNfVU5MT0NLKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHB0cjI7CkBAIC02MjksNiArODM0LDcgQEAKICAgICByZXR1cm4gcHRyMjsKIH0KIAorCiAjaWZkZWYgVFJBQ0VfUkFXX01BTExPQwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yYXdfYWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQpAQCAtNjYzLDE4ICs4NjksMjEgQEAKICAgICByZXR1cm4gcHRyOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmF3X21hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKQogewogICAgIHJldHVybiB0cmFjZW1hbGxvY19yYXdfYWxsb2MoMCwgY3R4LCAxLCBzaXplKTsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3Jhd19jYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3Jhd19hbGxvYygxLCBjdHgsIG5lbGVtLCBlbHNpemUpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmF3X3JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKQEAgLTY5MSw3ICs5MDAsNyBAQAogCiAgICAgICAgIGlmIChwdHIyICE9IE5VTEwgJiYgcHRyICE9IE5VTEwpIHsKICAgICAgICAgICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgICAgICAgICB0cmFjZW1hbGxvY19yZW1vdmVfdHJhY2UocHRyKTsKKyAgICAgICAgICAgIFJFTU9WRV9UUkFDRShwdHIpOwogICAgICAgICAgICAgVEFCTEVTX1VOTE9DSygpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwdHIyOwpAQCAtNzE1LDIyICs5MjQsMzEgQEAKIH0KICNlbmRpZiAgIC8qIFRSQUNFX1JBV19NQUxMT0MgKi8KIAorCiBzdGF0aWMgaW50Ci10cmFjZW1hbGxvY19jbGVhcl9maWxlbmFtZShfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICp1c2VyX2RhdGEpCit0cmFjZW1hbGxvY19jbGVhcl9maWxlbmFtZShfUHlfaGFzaHRhYmxlX3QgKmh0LCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKQogewotICAgIFB5T2JqZWN0ICpmaWxlbmFtZSA9IChQeU9iamVjdCAqKWVudHJ5LT5rZXk7CisgICAgUHlPYmplY3QgKmZpbGVuYW1lOworCisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIGZpbGVuYW1lKTsKICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOwogICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyBpbnQKLXRyYWNlYmFja19mcmVlX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICp1c2VyX2RhdGEpCit0cmFjZWJhY2tfZnJlZV90cmFjZWJhY2soX1B5X2hhc2h0YWJsZV90ICpodCwgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7Ci0gICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjayA9ICh0cmFjZWJhY2tfdCAqKWVudHJ5LT5rZXk7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCB0cmFjZWJhY2spOwogICAgIHJhd19mcmVlKHRyYWNlYmFjayk7CiAgICAgcmV0dXJuIDA7CiB9CiAKKwogLyogcmVlbnRyYW50IGZsYWcgbXVzdCBiZSBzZXQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGFuZCBHSUwgbXVzdCBiZSBoZWxkICovCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfY2xlYXJfdHJhY2VzKHZvaWQpCkBAIC03NTMsNiArOTcxLDcgQEAKICAgICBfUHlfaGFzaHRhYmxlX2NsZWFyKHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyk7CiB9CiAKKwogc3RhdGljIGludAogdHJhY2VtYWxsb2NfaW5pdCh2b2lkKQogewpAQCAtNzg5LDIxICsxMDA4LDI5IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICB0cmFjZW1hbGxvY19maWxlbmFtZXMgPSBoYXNodGFibGVfbmV3KDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMpUHlPYmplY3RfSGFzaCwKKyAgICB0cmFjZW1hbGxvY19maWxlbmFtZXMgPSBoYXNodGFibGVfbmV3KHNpemVvZihQeU9iamVjdCAqKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9oYXNoX3B5b2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2NvbXBhcmVfdW5pY29kZSk7CiAKLSAgICB0cmFjZW1hbGxvY190cmFjZWJhY2tzID0gaGFzaHRhYmxlX25ldygwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyloYXNodGFibGVfaGFzaF90cmFjZWJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jKWhhc2h0YWJsZV9jb21wYXJlX3RyYWNlYmFjayk7CisgICAgdHJhY2VtYWxsb2NfdHJhY2ViYWNrcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKHRyYWNlYmFja190ICopLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9oYXNoX3RyYWNlYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfY29tcGFyZV90cmFjZWJhY2spOwogCi0gICAgdHJhY2VtYWxsb2NfdHJhY2VzID0gaGFzaHRhYmxlX25ldyhzaXplb2YodHJhY2VfdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdCk7CisgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgIHRyYWNlbWFsbG9jX3RyYWNlcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKHBvaW50ZXJfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRyYWNlX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9oYXNoX3BvaW50ZXJfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfY29tcGFyZV9wb2ludGVyX3QpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdHJhY2VtYWxsb2NfdHJhY2VzID0gaGFzaHRhYmxlX25ldyhzaXplb2YodWludHB0cl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHJhY2VfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKKyAgICB9CiAKICAgICBpZiAodHJhY2VtYWxsb2NfZmlsZW5hbWVzID09IE5VTEwgfHwgdHJhY2VtYWxsb2NfdHJhY2ViYWNrcyA9PSBOVUxMCi0gICAgICAgIHx8IHRyYWNlbWFsbG9jX3RyYWNlcyA9PSBOVUxMKQotICAgIHsKKyAgICAgICB8fCB0cmFjZW1hbGxvY190cmFjZXMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtODIzLDYgKzEwNTAsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19kZWluaXQodm9pZCkKIHsKQEAgLTgzMyw5ICsxMDYxLDkgQEAKICAgICB0cmFjZW1hbGxvY19zdG9wKCk7CiAKICAgICAvKiBkZXN0cm95IGhhc2ggdGFibGVzICovCi0gICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX3RyYWNlcyk7CiAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX3RyYWNlYmFja3MpOwogICAgIF9QeV9oYXNodGFibGVfZGVzdHJveSh0cmFjZW1hbGxvY19maWxlbmFtZXMpOworICAgIF9QeV9oYXNodGFibGVfZGVzdHJveSh0cmFjZW1hbGxvY190cmFjZXMpOwogCiAjaWYgZGVmaW5lZChXSVRIX1RIUkVBRCkgJiYgZGVmaW5lZChUUkFDRV9SQVdfTUFMTE9DKQogICAgIGlmICh0YWJsZXNfbG9jayAhPSBOVUxMKSB7CkBAIC04NDYsMTEgKzEwNzQsMTMgQEAKIAogI2lmZGVmIFJFRU5UUkFOVF9USFJFQURMT0NBTAogICAgIFB5VGhyZWFkX2RlbGV0ZV9rZXkodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSk7CisgICAgdHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSA9IC0xOwogI2VuZGlmCiAKICAgICBQeV9YREVDUkVGKHVua25vd25fZmlsZW5hbWUpOwogfQogCisKIHN0YXRpYyBpbnQKIHRyYWNlbWFsbG9jX3N0YXJ0KGludCBtYXhfbmZyYW1lKQogewpAQCAtOTA3LDYgKzExMzcsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19zdG9wKHZvaWQpCiB7CkBAIC05MjMsOCArMTE1NCw5IEBACiAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZhbGxvY2F0b3JzLm1lbSk7CiAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9PQkosICZhbGxvY2F0b3JzLm9iaik7CiAKLSAgICAvKiByZWxlYXNlIG1lbW9yeSAqLwogICAgIHRyYWNlbWFsbG9jX2NsZWFyX3RyYWNlcygpOworCisgICAgLyogcmVsZWFzZSBtZW1vcnkgKi8KICAgICByYXdfZnJlZSh0cmFjZW1hbGxvY190cmFjZWJhY2spOwogICAgIHRyYWNlbWFsbG9jX3RyYWNlYmFjayA9IE5VTEw7CiB9CkBAIC05MzUsNiArMTE2Nyw3IEBACiAgICAgIlRydWUgaWYgdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBpcyB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMsXG4iCiAgICAgIkZhbHNlIG90aGVyd2lzZS4iKTsKIAorCiBzdGF0aWMgUHlPYmplY3QqCiBweV90cmFjZW1hbGxvY19pc190cmFjaW5nKFB5T2JqZWN0ICpzZWxmKQogewpAQCAtOTQ2LDYgKzExNzksNyBAQAogICAgICJcbiIKICAgICAiQ2xlYXIgdHJhY2VzIG9mIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkIGJ5IFB5dGhvbi4iKTsKIAorCiBzdGF0aWMgUHlPYmplY3QqCiBweV90cmFjZW1hbGxvY19jbGVhcl90cmFjZXMoUHlPYmplY3QgKnNlbGYpCiB7CkBAIC05NTksNiArMTE5Myw3IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKwogc3RhdGljIFB5T2JqZWN0KgogZnJhbWVfdG9fcHlvYmplY3QoZnJhbWVfdCAqZnJhbWUpCiB7CkBAIC05NjgsOCArMTIwMyw2IEBACiAgICAgaWYgKGZyYW1lX29iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChmcmFtZS0+ZmlsZW5hbWUgPT0gTlVMTCkKLSAgICAgICAgZnJhbWUtPmZpbGVuYW1lID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoZnJhbWUtPmZpbGVuYW1lKTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKGZyYW1lX29iaiwgMCwgZnJhbWUtPmZpbGVuYW1lKTsKIApAQCAtOTgzLDYgKzEyMTYsNyBAQAogICAgIHJldHVybiBmcmFtZV9vYmo7CiB9CiAKKwogc3RhdGljIFB5T2JqZWN0KgogdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlYmFja190ICp0cmFjZWJhY2ssIF9QeV9oYXNodGFibGVfdCAqaW50ZXJuX3RhYmxlKQogewpAQCAtMTAyMSwzMyArMTI1NSw0MyBAQAogICAgIHJldHVybiBmcmFtZXM7CiB9CiAKKwogc3RhdGljIFB5T2JqZWN0KgotdHJhY2VfdG9fcHlvYmplY3QodHJhY2VfdCAqdHJhY2UsIF9QeV9oYXNodGFibGVfdCAqaW50ZXJuX3RyYWNlYmFja3MpCit0cmFjZV90b19weW9iamVjdChfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHRyYWNlX3QgKnRyYWNlLAorICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV90ICppbnRlcm5fdHJhY2ViYWNrcykKIHsKICAgICBQeU9iamVjdCAqdHJhY2Vfb2JqID0gTlVMTDsKLSAgICBQeU9iamVjdCAqc2l6ZSwgKnRyYWNlYmFjazsKKyAgICBQeU9iamVjdCAqb2JqOwogCi0gICAgdHJhY2Vfb2JqID0gUHlUdXBsZV9OZXcoMik7CisgICAgdHJhY2Vfb2JqID0gUHlUdXBsZV9OZXcoMyk7CiAgICAgaWYgKHRyYWNlX29iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHNpemUgPSBQeUxvbmdfRnJvbVNpemVfdCh0cmFjZS0+c2l6ZSk7Ci0gICAgaWYgKHNpemUgPT0gTlVMTCkgeworICAgIG9iaiA9IFB5TG9uZ19Gcm9tU2l6ZV90KGRvbWFpbik7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRih0cmFjZV9vYmopOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDAsIHNpemUpOworICAgIFB5VHVwbGVfU0VUX0lURU0odHJhY2Vfb2JqLCAwLCBvYmopOwogCi0gICAgdHJhY2ViYWNrID0gdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlLT50cmFjZWJhY2ssIGludGVybl90cmFjZWJhY2tzKTsKLSAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpIHsKKyAgICBvYmogPSBQeUxvbmdfRnJvbVNpemVfdCh0cmFjZS0+c2l6ZSk7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRih0cmFjZV9vYmopOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDEsIHRyYWNlYmFjayk7CisgICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDEsIG9iaik7CisKKyAgICBvYmogPSB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2UtPnRyYWNlYmFjaywgaW50ZXJuX3RyYWNlYmFja3MpOworICAgIGlmIChvYmogPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodHJhY2Vfb2JqKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5VHVwbGVfU0VUX0lURU0odHJhY2Vfb2JqLCAyLCBvYmopOwogCiAgICAgcmV0dXJuIHRyYWNlX29iajsKIH0KIAorCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgX1B5X2hhc2h0YWJsZV90ICp0cmFjZXM7CiAgICAgX1B5X2hhc2h0YWJsZV90ICp0cmFjZWJhY2tzOwpAQCAtMTA1NSwxNiArMTI5OSwyNiBAQAogfSBnZXRfdHJhY2VzX3Q7CiAKIHN0YXRpYyBpbnQKLXRyYWNlbWFsbG9jX2dldF90cmFjZXNfZmlsbChfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICp1c2VyX2RhdGEpCit0cmFjZW1hbGxvY19nZXRfdHJhY2VzX2ZpbGwoX1B5X2hhc2h0YWJsZV90ICp0cmFjZXMsIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKQogewogICAgIGdldF90cmFjZXNfdCAqZ2V0X3RyYWNlcyA9IHVzZXJfZGF0YTsKLSAgICB0cmFjZV90ICp0cmFjZTsKKyAgICBfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW47CisgICAgdHJhY2VfdCB0cmFjZTsKICAgICBQeU9iamVjdCAqdHJhY2VtYWxsb2Nfb2JqOwogICAgIGludCByZXM7CiAKLSAgICB0cmFjZSA9ICh0cmFjZV90ICopX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKGVudHJ5KTsKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgcG9pbnRlcl90IGtleTsKKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWSh0cmFjZXMsIGVudHJ5LCBrZXkpOworICAgICAgICBkb21haW4gPSBrZXkuZG9tYWluOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZG9tYWluID0gREVGQVVMVF9ET01BSU47CisgICAgfQorICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHRyYWNlcywgZW50cnksIHRyYWNlKTsKIAotICAgIHRyYWNlbWFsbG9jX29iaiA9IHRyYWNlX3RvX3B5b2JqZWN0KHRyYWNlLCBnZXRfdHJhY2VzLT50cmFjZWJhY2tzKTsKKyAgICB0cmFjZW1hbGxvY19vYmogPSB0cmFjZV90b19weW9iamVjdChkb21haW4sICZ0cmFjZSwgZ2V0X3RyYWNlcy0+dHJhY2ViYWNrcyk7CiAgICAgaWYgKHRyYWNlbWFsbG9jX29iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMTsKIApAQCAtMTA3NiwxNCArMTMzMCwxOSBAQAogICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyBpbnQKLXRyYWNlbWFsbG9jX3B5b2JqZWN0X2RlY3JlZl9jYihfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICp1c2VyX2RhdGEpCit0cmFjZW1hbGxvY19weW9iamVjdF9kZWNyZWZfY2IoX1B5X2hhc2h0YWJsZV90ICp0cmFjZWJhY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKQogewotICAgIFB5T2JqZWN0ICpvYmogPSAoUHlPYmplY3QgKilfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKGVudHJ5KTsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHRyYWNlYmFja3MsIGVudHJ5LCBvYmopOwogICAgIFB5X0RFQ1JFRihvYmopOwogICAgIHJldHVybiAwOwogfQogCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19nZXRfdHJhY2VzX2RvYywKICAgICAiX2dldF90cmFjZXMoKSAtPiBsaXN0XG4iCiAgICAgIlxuIgpAQCAtMTExMCw3ICsxMzY5LDggQEAKIAogICAgIC8qIHRoZSB0cmFjZWJhY2sgaGFzaCB0YWJsZSBpcyB1c2VkIHRlbXBvcmFyaWx5IHRvIGludGVybiB0cmFjZWJhY2sgdHVwbGUKICAgICAgICBvZiAoZmlsZW5hbWUsIGxpbmVubykgdHVwbGVzICovCi0gICAgZ2V0X3RyYWNlcy50cmFjZWJhY2tzID0gaGFzaHRhYmxlX25ldyhzaXplb2YoUHlPYmplY3QgKiksCisgICAgZ2V0X3RyYWNlcy50cmFjZWJhY2tzID0gaGFzaHRhYmxlX25ldyhzaXplb2YodHJhY2ViYWNrX3QgKiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlPYmplY3QgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdCk7CiAgICAgaWYgKGdldF90cmFjZXMudHJhY2ViYWNrcyA9PSBOVUxMKSB7CkBAIC0xMTQyLDE1ICsxNDAyLDQzIEBACiBmaW5hbGx5OgogICAgIGlmIChnZXRfdHJhY2VzLnRyYWNlYmFja3MgIT0gTlVMTCkgewogICAgICAgICBfUHlfaGFzaHRhYmxlX2ZvcmVhY2goZ2V0X3RyYWNlcy50cmFjZWJhY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jX3B5b2JqZWN0X2RlY3JlZl9jYiwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZW1hbGxvY19weW9iamVjdF9kZWNyZWZfY2IsIE5VTEwpOwogICAgICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koZ2V0X3RyYWNlcy50cmFjZWJhY2tzKTsKICAgICB9Ci0gICAgaWYgKGdldF90cmFjZXMudHJhY2VzICE9IE5VTEwpCisgICAgaWYgKGdldF90cmFjZXMudHJhY2VzICE9IE5VTEwpIHsKICAgICAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KGdldF90cmFjZXMudHJhY2VzKTsKKyAgICB9CiAKICAgICByZXR1cm4gZ2V0X3RyYWNlcy5saXN0OwogfQogCisKK3N0YXRpYyB0cmFjZWJhY2tfdCoKK3RyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyKQoreworICAgIHRyYWNlX3QgdHJhY2U7CisgICAgaW50IGZvdW5kOworCisgICAgaWYgKCF0cmFjZW1hbGxvY19jb25maWcudHJhY2luZykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBUQUJMRVNfTE9DSygpOworICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICBwb2ludGVyX3Qga2V5ID0ge3B0ciwgZG9tYWlufTsKKyAgICAgICAgZm91bmQgPSBfUHlfSEFTSFRBQkxFX0dFVCh0cmFjZW1hbGxvY190cmFjZXMsIGtleSwgdHJhY2UpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZm91bmQgPSBfUHlfSEFTSFRBQkxFX0dFVCh0cmFjZW1hbGxvY190cmFjZXMsIHB0ciwgdHJhY2UpOworICAgIH0KKyAgICBUQUJMRVNfVU5MT0NLKCk7CisKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiB0cmFjZS50cmFjZWJhY2s7Cit9CisKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF9vYmplY3RfdHJhY2ViYWNrX2RvYywKICAgICAiX2dldF9vYmplY3RfdHJhY2ViYWNrKG9iailcbiIKICAgICAiXG4iCkBAIC0xMTY1LDExICsxNDUzLDcgQEAKIHsKICAgICBQeVR5cGVPYmplY3QgKnR5cGU7CiAgICAgdm9pZCAqcHRyOwotICAgIHRyYWNlX3QgdHJhY2U7Ci0gICAgaW50IGZvdW5kOwotCi0gICAgaWYgKCF0cmFjZW1hbGxvY19jb25maWcudHJhY2luZykKLSAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKIAogICAgIHR5cGUgPSBQeV9UWVBFKG9iaik7CiAgICAgaWYgKFB5VHlwZV9JU19HQyh0eXBlKSkKQEAgLTExNzcsMTYgKzE0NjEsNDggQEAKICAgICBlbHNlCiAgICAgICAgIHB0ciA9ICh2b2lkICopb2JqOwogCi0gICAgVEFCTEVTX0xPQ0soKTsKLSAgICBmb3VuZCA9IF9QeV9IQVNIVEFCTEVfR0VUKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCB0cmFjZSk7Ci0gICAgVEFCTEVTX1VOTE9DSygpOwotCi0gICAgaWYgKCFmb3VuZCkKKyAgICB0cmFjZWJhY2sgPSB0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKERFRkFVTFRfRE9NQUlOLCAodWludHB0cl90KXB0cik7CisgICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIAotICAgIHJldHVybiB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2UudHJhY2ViYWNrLCBOVUxMKTsKKyAgICByZXR1cm4gdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlYmFjaywgTlVMTCk7CiB9CiAKKworI2RlZmluZSBQVVRTKGZkLCBzdHIpIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBzdHIsIChpbnQpc3RybGVuKHN0cikpCisKK3N0YXRpYyB2b2lkCitfUHlNZW1fRHVtcEZyYW1lKGludCBmZCwgZnJhbWVfdCAqIGZyYW1lKQoreworICAgIFBVVFMoZmQsICIgIEZpbGUgXCIiKTsKKyAgICBfUHlfRHVtcEFTQ0lJKGZkLCBmcmFtZS0+ZmlsZW5hbWUpOworICAgIFBVVFMoZmQsICJcIiwgbGluZSAiKTsKKyAgICBfUHlfRHVtcERlY2ltYWwoZmQsIGZyYW1lLT5saW5lbm8pOworICAgIFBVVFMoZmQsICJcbiIpOworfQorCisvKiBEdW1wIHRoZSB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzIGFsbG9jYXRlZCBpbnRvIGZpbGUgZGVzY3JpcHRvcgorICAgZmQuIFRoZSBmdW5jdGlvbiBtYXkgYmxvY2sgb24gVEFCTEVTX0xPQ0soKSBidXQgaXQgaXMgdW5saWtlbHkuICovCit2b2lkCitfUHlNZW1fRHVtcFRyYWNlYmFjayhpbnQgZmQsIGNvbnN0IHZvaWQgKnB0cikKK3sKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOworICAgIGludCBpOworCisgICAgdHJhY2ViYWNrID0gdHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayhERUZBVUxUX0RPTUFJTiwgKHVpbnRwdHJfdClwdHIpOworICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUFVUUyhmZCwgIk1lbW9yeSBibG9jayBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuIik7CisgICAgZm9yIChpPTA7IGkgPCB0cmFjZWJhY2stPm5mcmFtZTsgaSsrKSB7CisgICAgICAgIF9QeU1lbV9EdW1wRnJhbWUoZmQsICZ0cmFjZWJhY2stPmZyYW1lc1tpXSk7CisgICAgfQorICAgIFBVVFMoZmQsICJcbiIpOworfQorCisjdW5kZWYgUFVUUworCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19zdGFydF9kb2MsCiAgICAgInN0YXJ0KG5mcmFtZTogaW50PTEpXG4iCiAgICAgIlxuIgpAQCAtMTIyMiw2ICsxNTM4LDcgQEAKICAgICAiU3RvcCB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIGNsZWFyIHRyYWNlc1xuIgogICAgICJvZiBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZCBieSBQeXRob24uIik7CiAKKwogc3RhdGljIFB5T2JqZWN0KgogcHlfdHJhY2VtYWxsb2Nfc3RvcChQeU9iamVjdCAqc2VsZikKIHsKQEAgLTEyMjksNiArMTU0Niw3IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2tfbGltaXRfZG9jLAogICAgICJnZXRfdHJhY2ViYWNrX2xpbWl0KCkgLT4gaW50XG4iCiAgICAgIlxuIgpAQCAtMTI0NCw2ICsxNTYyLDcgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHRyYWNlbWFsbG9jX2NvbmZpZy5tYXhfbmZyYW1lKTsKIH0KIAorCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2NfZ2V0X3RyYWNlbWFsbG9jX21lbW9yeV9kb2MsCiAgICAgImdldF90cmFjZW1hbGxvY19tZW1vcnkoKSAtPiBpbnRcbiIKICAgICAiXG4iCkBAIC0xMjY3LDYgKzE1ODYsNyBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOIiwgc2l6ZV9vYmopOwogfQogCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19nZXRfdHJhY2VkX21lbW9yeV9kb2MsCiAgICAgImdldF90cmFjZWRfbWVtb3J5KCkgLT4gKGludCwgaW50KVxuIgogICAgICJcbiIKQEAgLTEyOTIsNiArMTYxMiw3IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5OIiwgc2l6ZV9vYmosIHBlYWtfc2l6ZV9vYmopOwogfQogCisKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0gewogICAgIHsiaXNfdHJhY2luZyIsIChQeUNGdW5jdGlvbilweV90cmFjZW1hbGxvY19pc190cmFjaW5nLAogICAgICBNRVRIX05PQVJHUywgdHJhY2VtYWxsb2NfaXNfdHJhY2luZ19kb2N9LApAQCAtMTM0Miw2ICsxNjYzLDcgQEAKICAgICByZXR1cm4gbTsKIH0KIAorCiBzdGF0aWMgaW50CiBwYXJzZV9zeXNfeG9wdGlvbnMoUHlPYmplY3QgKnZhbHVlKQogewpAQCAtMTM3MCw2ICsxNjkyLDcgQEAKICAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChuZnJhbWUsIGxvbmcsIGludCk7CiB9CiAKKwogaW50CiBfUHlUcmFjZU1hbGxvY19Jbml0KHZvaWQpCiB7CkBAIC0xNDI4LDYgKzE3NTEsNyBAQAogICAgIHJldHVybiB0cmFjZW1hbGxvY19zdGFydChuZnJhbWUpOwogfQogCisKIHZvaWQKIF9QeVRyYWNlTWFsbG9jX0Zpbmkodm9pZCkKIHsKQEAgLTE0MzcsMyArMTc2MSw1OSBAQAogICAgIHRyYWNlbWFsbG9jX2RlaW5pdCgpOwogfQogCitpbnQKK19QeVRyYWNlTWFsbG9jX1RyYWNrKF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdWludHB0cl90IHB0ciwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKQoreworICAgIGludCByZXM7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeUdJTFN0YXRlX1NUQVRFIGdpbF9zdGF0ZTsKKyNlbmRpZgorCisgICAgaWYgKCF0cmFjZW1hbGxvY19jb25maWcudHJhY2luZykgeworICAgICAgICAvKiB0cmFjZW1hbGxvYyBpcyBub3QgdHJhY2luZzogZG8gbm90aGluZyAqLworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBnaWxfc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOworI2VuZGlmCisKKyAgICBUQUJMRVNfTE9DSygpOworICAgIHJlcyA9IHRyYWNlbWFsbG9jX2FkZF90cmFjZShkb21haW4sIHB0ciwgc2l6ZSk7CisgICAgVEFCTEVTX1VOTE9DSygpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeUdJTFN0YXRlX1JlbGVhc2UoZ2lsX3N0YXRlKTsKKyNlbmRpZgorICAgIHJldHVybiByZXM7Cit9CisKKworaW50CitfUHlUcmFjZU1hbGxvY19VbnRyYWNrKF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdWludHB0cl90IHB0cikKK3sKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKSB7CisgICAgICAgIC8qIHRyYWNlbWFsbG9jIGlzIG5vdCB0cmFjaW5nOiBkbyBub3RoaW5nICovCisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICBUQUJMRVNfTE9DSygpOworICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShkb21haW4sIHB0cik7CisgICAgVEFCTEVTX1VOTE9DSygpOworCisgICAgcmV0dXJuIDA7Cit9CisKKworUHlPYmplY3QqCitfUHlUcmFjZU1hbGxvY19HZXRUcmFjZWJhY2soX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyKQoreworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CisKKyAgICB0cmFjZWJhY2sgPSB0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKGRvbWFpbiwgcHRyKTsKKyAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworCisgICAgcmV0dXJuIHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZWJhY2ssIE5VTEwpOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fd2luYXBpLmMgYi9Nb2R1bGVzL193aW5hcGkuYwppbmRleCBlZGM2Y2Y0Li45MWQ0ZjAxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL193aW5hcGkuYworKysgYi9Nb2R1bGVzL193aW5hcGkuYwpAQCAtMTc1LDcgKzE3NSw3IEBACiAgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQogICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZigiX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSIsIGRhdGEpCiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAotICAgICAgICAgICAgJ2lmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpXG4gICAgUHlfUkVUVVJOX05PTkU7XG4nKQorICAgICAgICAgICAgJ2lmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHtcbiAgICBQeV9SRVRVUk5fTk9ORTtcbn1cbicpCiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAogICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTtcbicpCiAKQEAgLTE4OCw3ICsxODgsNyBAQAogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKICAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7XG4nKQogW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9Mzc0MDc2OTc5NTk2ZWJiYV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OTQ4MTllNzJkMmM2ZDU1OF0qLwogCiAjaW5jbHVkZSAiY2xpbmljL193aW5hcGkuYy5oIgogCkBAIC00ODYsNyArNDg2LDcgQEAKICAgICBjb25zdCBVU0hPUlQgcHJlZml4X2xlbiA9IDQ7CiAgICAgVVNIT1JUIHByaW50X2xlbiA9IDA7CiAgICAgVVNIT1JUIHJkYl9zaXplID0gMDsKLSAgICBQUkVQQVJTRV9EQVRBX0JVRkZFUiByZGIgPSBOVUxMOworICAgIF9QeV9QUkVQQVJTRV9EQVRBX0JVRkZFUiByZGIgPSBOVUxMOwogCiAgICAgLyogSnVuY3Rpb24gcG9pbnQgY3JlYXRpb24gKi8KICAgICBIQU5ETEUganVuY3Rpb24gPSBOVUxMOwpAQCAtNTQyLDE4ICs1NDIsMTggQEAKICAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIHByaW50IG5hbWUgaW4gYnl0ZXMKICAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIHN1YnN0aXR1dGUgbmFtZSBpbiBieXRlcwogICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0d28gTlVMIHRlcm1pbmF0b3JzIGluIGJ5dGVzICovCi0gICAgcmRiX3NpemUgPSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICsKKyAgICByZGJfc2l6ZSA9IF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICsKICAgICAgICAgc2l6ZW9mKHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIpIC0KICAgICAgICAgc2l6ZW9mKHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUGF0aEJ1ZmZlcikgKwogICAgICAgICAvKiBUd28gKzEncyBmb3IgTlVMIHRlcm1pbmF0b3JzLiAqLwogICAgICAgICAocHJlZml4X2xlbiArIHByaW50X2xlbiArIDEgKyBwcmludF9sZW4gKyAxKSAqIHNpemVvZihXQ0hBUik7Ci0gICAgcmRiID0gKFBSRVBBUlNFX0RBVEFfQlVGRkVSKVB5TWVtX1Jhd01hbGxvYyhyZGJfc2l6ZSk7CisgICAgcmRiID0gKF9QeV9QUkVQQVJTRV9EQVRBX0JVRkZFUilQeU1lbV9SYXdNYWxsb2MocmRiX3NpemUpOwogICAgIGlmIChyZGIgPT0gTlVMTCkKICAgICAgICAgZ290byBjbGVhbnVwOwogCiAgICAgbWVtc2V0KHJkYiwgMCwgcmRiX3NpemUpOwogICAgIHJkYi0+UmVwYXJzZVRhZyA9IElPX1JFUEFSU0VfVEFHX01PVU5UX1BPSU5UOwotICAgIHJkYi0+UmVwYXJzZURhdGFMZW5ndGggPSByZGJfc2l6ZSAtIFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkU7CisgICAgcmRiLT5SZXBhcnNlRGF0YUxlbmd0aCA9IHJkYl9zaXplIC0gX1B5X1JFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkU7CiAgICAgcmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5TdWJzdGl0dXRlTmFtZU9mZnNldCA9IDA7CiAgICAgcmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5TdWJzdGl0dXRlTmFtZUxlbmd0aCA9CiAgICAgICAgIChwcmVmaXhfbGVuICsgcHJpbnRfbGVuKSAqIHNpemVvZihXQ0hBUik7CkBAIC02NzQsNyArNjc0LDcgQEAKIC8qIGhlbHBlcnMgZm9yIGNyZWF0ZXByb2Nlc3MgKi8KIAogc3RhdGljIHVuc2lnbmVkIGxvbmcKLWdldHVsb25nKFB5T2JqZWN0KiBvYmosIGNoYXIqIG5hbWUpCitnZXR1bG9uZyhQeU9iamVjdCogb2JqLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIFB5T2JqZWN0KiB2YWx1ZTsKICAgICB1bnNpZ25lZCBsb25nIHJldDsKQEAgLTY5MCw3ICs2OTAsNyBAQAogfQogCiBzdGF0aWMgSEFORExFCi1nZXRoYW5kbGUoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKK2dldGhhbmRsZShQeU9iamVjdCogb2JqLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIFB5T2JqZWN0KiB2YWx1ZTsKICAgICBIQU5ETEUgcmV0OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hZGRyaW5mby5oIGIvTW9kdWxlcy9hZGRyaW5mby5oCmluZGV4IDFjYjZmMGUuLmMzYzg2MjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYWRkcmluZm8uaAorKysgYi9Nb2R1bGVzL2FkZHJpbmZvLmgKQEAgLTE0MSwxMSArMTQxLDcgQEAKICAqIFJGQyAyNTUzOiBwcm90b2NvbC1pbmRlcGVuZGVudCBwbGFjZWhvbGRlciBmb3Igc29ja2V0IGFkZHJlc3NlcwogICovCiAjZGVmaW5lIF9TU19NQVhTSVpFICAgICAxMjgKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotI2RlZmluZSBfU1NfQUxJR05TSVpFICAgKHNpemVvZihQWV9MT05HX0xPTkcpKQotI2Vsc2UKLSNkZWZpbmUgX1NTX0FMSUdOU0laRSAgIChzaXplb2YoZG91YmxlKSkKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLworI2RlZmluZSBfU1NfQUxJR05TSVpFICAgKHNpemVvZihsb25nIGxvbmcpKQogI2RlZmluZSBfU1NfUEFEMVNJWkUgICAgKF9TU19BTElHTlNJWkUgLSBzaXplb2YodV9jaGFyKSAqIDIpCiAjZGVmaW5lIF9TU19QQUQyU0laRSAgICAoX1NTX01BWFNJWkUgLSBzaXplb2YodV9jaGFyKSAqIDIgLSBcCiAgICAgICAgICAgICAgICAgX1NTX1BBRDFTSVpFIC0gX1NTX0FMSUdOU0laRSkKQEAgLTE1OCwxMSArMTU0LDcgQEAKICAgICB1bnNpZ25lZCBzaG9ydCBzc19mYW1pbHk7ICAgICAgICAgICAvKiBhZGRyZXNzIGZhbWlseSAqLwogI2VuZGlmIC8qIEhBVkVfU09DS0FERFJfU0FfTEVOICovCiAgICAgY2hhciAgICAgICAgX19zc19wYWQxW19TU19QQUQxU0laRV07Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgX19zc19hbGlnbjsgICAgICAgICAgICAvKiBmb3JjZSBkZXNpcmVkIHN0cnVjdHVyZSBzdG9yYWdlIGFsaWdubWVudCAqLwotI2Vsc2UKLSAgICBkb3VibGUgX19zc19hbGlnbjsgICAgICAgICAgLyogZm9yY2UgZGVzaXJlZCBzdHJ1Y3R1cmUgc3RvcmFnZSBhbGlnbm1lbnQgKi8KLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLworICAgIGxvbmcgbG9uZyBfX3NzX2FsaWduOyAgICAgICAgICAgIC8qIGZvcmNlIGRlc2lyZWQgc3RydWN0dXJlIHN0b3JhZ2UgYWxpZ25tZW50ICovCiAgICAgY2hhciAgICAgICAgX19zc19wYWQyW19TU19QQUQyU0laRV07CiB9OwogI2VuZGlmIC8qICFIQVZFX1NPQ0tBRERSX1NUT1JBR0UgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvYXJyYXltb2R1bGUuYyBiL01vZHVsZXMvYXJyYXltb2R1bGUuYwppbmRleCBhNDk2NmI0Li4yY2FhOGVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCkBAIC0zMSw3ICszMSw3IEBACiAgICAgaW50IGl0ZW1zaXplOwogICAgIFB5T2JqZWN0ICogKCpnZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCk7CiAgICAgaW50ICgqc2V0aXRlbSkoc3RydWN0IGFycmF5b2JqZWN0ICosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOwotICAgIGNoYXIgKmZvcm1hdHM7CisgICAgY29uc3QgY2hhciAqZm9ybWF0czsKICAgICBpbnQgaXNfaW50ZWdlcl90eXBlOwogICAgIGludCBpc19zaWduZWQ7CiB9OwpAQCAtNDAsNyArNDAsNyBAQAogICAgIFB5T2JqZWN0X1ZBUl9IRUFECiAgICAgY2hhciAqb2JfaXRlbTsKICAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZDsKLSAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqb2JfZGVzY3I7CisgICAgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKm9iX2Rlc2NyOwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KICAgICBpbnQgb2JfZXhwb3J0czsgIC8qIE51bWJlciBvZiBleHBvcnRlZCBidWZmZXJzICovCiB9IGFycmF5b2JqZWN0OwpAQCAtNDE4LDIyICs0MTgsMjAgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBxX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCiB7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKChQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0pOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKCgobG9uZyBsb25nICopYXAtPm9iX2l0ZW0pW2ldKTsKIH0KIAogc3RhdGljIGludAogcV9zZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBpZiAoIVB5QXJnX1BhcnNlKHYsICJMO2FycmF5IGl0ZW0gbXVzdCBiZSBpbnRlZ2VyIiwgJngpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKGkgPj0gMCkKLSAgICAgICAgKChQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0gPSB4OworICAgICAgICAoKGxvbmcgbG9uZyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTQ0MSwyMCArNDM5LDIwIEBACiBRUV9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQogewogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoCi0gICAgICAgICgodW5zaWduZWQgUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldKTsKKyAgICAgICAgKCh1bnNpZ25lZCBsb25nIGxvbmcgKilhcC0+b2JfaXRlbSlbaV0pOwogfQogCiBzdGF0aWMgaW50CiBRUV9zZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CiAgICAgICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHYpOwotICAgICAgICBpZiAoeCA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoeCA9PSAodW5zaWduZWQgbG9uZyBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUFlfTE9OR19MT05HIHk7CisgICAgICAgIGxvbmcgbG9uZyB5OwogICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKHYsICJMO2FycmF5IGl0ZW0gbXVzdCBiZSBpbnRlZ2VyIiwgJnkpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBpZiAoeSA8IDApIHsKQEAgLTQ2MiwxNCArNDYwLDEzIEBACiAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmcgbG9uZyBpcyBsZXNzIHRoYW4gbWluaW11bSIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIHggPSAodW5zaWduZWQgUFlfTE9OR19MT05HKXk7CisgICAgICAgIHggPSAodW5zaWduZWQgbG9uZyBsb25nKXk7CiAgICAgfQogCiAgICAgaWYgKGkgPj0gMCkKLSAgICAgICAgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0gPSB4OworICAgICAgICAoKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CiAgICAgcmV0dXJuIDA7CiB9Ci0jZW5kaWYKIAogc3RhdGljIFB5T2JqZWN0ICoKIGZfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKQEAgLTUxMSw3ICs1MDgsNyBAQAogICogRG9uJ3QgZm9yZ2V0IHRvIHVwZGF0ZSB0eXBlY29kZV90b19tZm9ybWF0X2NvZGUoKSBpZiB5b3UgYWRkIGEgbmV3CiAgKiB0eXBlY29kZS4KICAqLwotc3RhdGljIHN0cnVjdCBhcnJheWRlc2NyIGRlc2NyaXB0b3JzW10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgZGVzY3JpcHRvcnNbXSA9IHsKICAgICB7J2InLCAxLCBiX2dldGl0ZW0sIGJfc2V0aXRlbSwgImIiLCAxLCAxfSwKICAgICB7J0InLCAxLCBCQl9nZXRpdGVtLCBCQl9zZXRpdGVtLCAiQiIsIDEsIDB9LAogICAgIHsndScsIHNpemVvZihQeV9VTklDT0RFKSwgdV9nZXRpdGVtLCB1X3NldGl0ZW0sICJ1IiwgMCwgMH0sCkBAIC01MjEsMTAgKzUxOCw4IEBACiAgICAgeydJJywgc2l6ZW9mKGludCksIElJX2dldGl0ZW0sIElJX3NldGl0ZW0sICJJIiwgMSwgMH0sCiAgICAgeydsJywgc2l6ZW9mKGxvbmcpLCBsX2dldGl0ZW0sIGxfc2V0aXRlbSwgImwiLCAxLCAxfSwKICAgICB7J0wnLCBzaXplb2YobG9uZyksIExMX2dldGl0ZW0sIExMX3NldGl0ZW0sICJMIiwgMSwgMH0sCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICB7J3EnLCBzaXplb2YoUFlfTE9OR19MT05HKSwgcV9nZXRpdGVtLCBxX3NldGl0ZW0sICJxIiwgMSwgMX0sCi0gICAgeydRJywgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIFFRX2dldGl0ZW0sIFFRX3NldGl0ZW0sICJRIiwgMSwgMH0sCi0jZW5kaWYKKyAgICB7J3EnLCBzaXplb2YobG9uZyBsb25nKSwgcV9nZXRpdGVtLCBxX3NldGl0ZW0sICJxIiwgMSwgMX0sCisgICAgeydRJywgc2l6ZW9mKGxvbmcgbG9uZyksIFFRX2dldGl0ZW0sIFFRX3NldGl0ZW0sICJRIiwgMSwgMH0sCiAgICAgeydmJywgc2l6ZW9mKGZsb2F0KSwgZl9nZXRpdGVtLCBmX3NldGl0ZW0sICJmIiwgMCwgMH0sCiAgICAgeydkJywgc2l6ZW9mKGRvdWJsZSksIGRfZ2V0aXRlbSwgZF9zZXRpdGVtLCAiZCIsIDAsIDB9LAogICAgIHsnXDAnLCAwLCAwLCAwLCAwLCAwLCAwfSAvKiBTZW50aW5lbCAqLwpAQCAtNTM5LDcgKzUzNCw3IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1hZDQzZDM3ZTk0MmE4ODU0XSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1uZXdhcnJheW9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5X3NzaXplX3Qgc2l6ZSwgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyKQorbmV3YXJyYXlvYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcikKIHsKICAgICBhcnJheW9iamVjdCAqb3A7CiAgICAgc2l6ZV90IG5ieXRlczsKQEAgLTg0MSwxMCArODM2LDEwIEBACiAgICAgICAgIG1lbXNldChucC0+b2JfaXRlbSwgYS0+b2JfaXRlbVswXSwgbmV3Ynl0ZXMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5X3NzaXplX3QgZG9uZSA9IG9sZGJ5dGVzOwotICAgICAgICBQeV9NRU1DUFkobnAtPm9iX2l0ZW0sIGEtPm9iX2l0ZW0sIG9sZGJ5dGVzKTsKKyAgICAgICAgbWVtY3B5KG5wLT5vYl9pdGVtLCBhLT5vYl9pdGVtLCBvbGRieXRlcyk7CiAgICAgICAgIHdoaWxlIChkb25lIDwgbmV3Ynl0ZXMpIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbmNvcHkgPSAoZG9uZSA8PSBuZXdieXRlcy1kb25lKSA/IGRvbmUgOiBuZXdieXRlcy1kb25lOwotICAgICAgICAgICAgUHlfTUVNQ1BZKG5wLT5vYl9pdGVtK2RvbmUsIG5wLT5vYl9pdGVtLCBuY29weSk7CisgICAgICAgICAgICBtZW1jcHkobnAtPm9iX2l0ZW0rZG9uZSwgbnAtPm9iX2l0ZW0sIG5jb3B5KTsKICAgICAgICAgICAgIGRvbmUgKz0gbmNvcHk7CiAgICAgICAgIH0KICAgICB9CkBAIC04NTIsMzcgKzg0NywxMCBAQAogfQogCiBzdGF0aWMgaW50Ci1hcnJheV9hc3Nfc2xpY2UoYXJyYXlvYmplY3QgKmEsIFB5X3NzaXplX3QgaWxvdywgUHlfc3NpemVfdCBpaGlnaCwgUHlPYmplY3QgKnYpCithcnJheV9kZWxfc2xpY2UoYXJyYXlvYmplY3QgKmEsIFB5X3NzaXplX3QgaWxvdywgUHlfc3NpemVfdCBpaGlnaCkKIHsKICAgICBjaGFyICppdGVtOwotICAgIFB5X3NzaXplX3QgbjsgLyogU2l6ZSBvZiByZXBsYWNlbWVudCBhcnJheSAqLwogICAgIFB5X3NzaXplX3QgZDsgLyogQ2hhbmdlIGluIHNpemUgKi8KLSNkZWZpbmUgYiAoKGFycmF5b2JqZWN0ICopdikKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBuID0gMDsKLSAgICBlbHNlIGlmIChhcnJheV9DaGVjayh2KSkgewotICAgICAgICBuID0gUHlfU0laRShiKTsKLSAgICAgICAgaWYgKGEgPT0gYikgewotICAgICAgICAgICAgLyogU3BlY2lhbCBjYXNlICJhW2k6al0gPSBhIiAtLSBjb3B5IGIgZmlyc3QgKi8KLSAgICAgICAgICAgIGludCByZXQ7Ci0gICAgICAgICAgICB2ID0gYXJyYXlfc2xpY2UoYiwgMCwgbik7Ci0gICAgICAgICAgICBpZiAoIXYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgcmV0ID0gYXJyYXlfYXNzX3NsaWNlKGEsIGlsb3csIGloaWdoLCB2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGItPm9iX2Rlc2NyICE9IGEtPm9iX2Rlc2NyKSB7Ci0gICAgICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgImNhbiBvbmx5IGFzc2lnbiBhcnJheSAobm90IFwiJS4yMDBzXCIpIHRvIGFycmF5IHNsaWNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICAgICBpZiAoaWxvdyA8IDApCiAgICAgICAgIGlsb3cgPSAwOwogICAgIGVsc2UgaWYgKGlsb3cgPiBQeV9TSVpFKGEpKQpAQCAtODk0LDcgKzg2Miw3IEBACiAgICAgZWxzZSBpZiAoaWhpZ2ggPiBQeV9TSVpFKGEpKQogICAgICAgICBpaGlnaCA9IFB5X1NJWkUoYSk7CiAgICAgaXRlbSA9IGEtPm9iX2l0ZW07Ci0gICAgZCA9IG4gLSAoaWhpZ2gtaWxvdyk7CisgICAgZCA9IGloaWdoLWlsb3c7CiAgICAgLyogSXNzdWUgIzQ1MDk6IElmIHRoZSBhcnJheSBoYXMgZXhwb3J0ZWQgYnVmZmVycyBhbmQgdGhlIHNsaWNlCiAgICAgICAgYXNzaWdubWVudCB3b3VsZCBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGFycmF5LCBmYWlsIGVhcmx5IHRvIG1ha2UKICAgICAgICBzdXJlIHdlIGRvbid0IG1vZGlmeSBpdC4gKi8KQEAgLTkwMywyNSArODcxLDE0IEBACiAgICAgICAgICAgICAiY2Fubm90IHJlc2l6ZSBhbiBhcnJheSB0aGF0IGlzIGV4cG9ydGluZyBidWZmZXJzIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgaWYgKGQgPCAwKSB7IC8qIERlbGV0ZSAtZCBpdGVtcyAqLwotICAgICAgICBtZW1tb3ZlKGl0ZW0gKyAoaWhpZ2grZCkqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAorICAgIGlmIChkID4gMCkgeyAvKiBEZWxldGUgZCBpdGVtcyAqLworICAgICAgICBtZW1tb3ZlKGl0ZW0gKyAoaWhpZ2gtZCkqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAogICAgICAgICAgICAgaXRlbSArIGloaWdoKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSwKICAgICAgICAgICAgIChQeV9TSVpFKGEpLWloaWdoKSphLT5vYl9kZXNjci0+aXRlbXNpemUpOwotICAgICAgICBpZiAoYXJyYXlfcmVzaXplKGEsIFB5X1NJWkUoYSkgKyBkKSA9PSAtMSkKKyAgICAgICAgaWYgKGFycmF5X3Jlc2l6ZShhLCBQeV9TSVpFKGEpIC0gZCkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVsc2UgaWYgKGQgPiAwKSB7IC8qIEluc2VydCBkIGl0ZW1zICovCi0gICAgICAgIGlmIChhcnJheV9yZXNpemUoYSwgUHlfU0laRShhKSArIGQpKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBtZW1tb3ZlKGl0ZW0gKyAoaWhpZ2grZCkqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAotICAgICAgICAgICAgaXRlbSArIGloaWdoKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSwKLSAgICAgICAgICAgIChQeV9TSVpFKGEpLWloaWdoKSphLT5vYl9kZXNjci0+aXRlbXNpemUpOwotICAgIH0KLSAgICBpZiAobiA+IDApCi0gICAgICAgIG1lbWNweShpdGVtICsgaWxvdyphLT5vYl9kZXNjci0+aXRlbXNpemUsIGItPm9iX2l0ZW0sCi0gICAgICAgICAgICAgICBuKmItPm9iX2Rlc2NyLT5pdGVtc2l6ZSk7CiAgICAgcmV0dXJuIDA7Ci0jdW5kZWYgYgogfQogCiBzdGF0aWMgaW50CkBAIC05MzMsNyArODkwLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gYXJyYXlfYXNzX3NsaWNlKGEsIGksIGkrMSwgdik7CisgICAgICAgIHJldHVybiBhcnJheV9kZWxfc2xpY2UoYSwgaSwgaSsxKTsKICAgICByZXR1cm4gKCphLT5vYl9kZXNjci0+c2V0aXRlbSkoYSwgaSwgdik7CiB9CiAKQEAgLTExNjMsOCArMTEyMCw3IEBACiAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzZWxmaSwgdiwgUHlfRVEpOwogICAgICAgICBQeV9ERUNSRUYoc2VsZmkpOwogICAgICAgICBpZiAoY21wID4gMCkgewotICAgICAgICAgICAgaWYgKGFycmF5X2Fzc19zbGljZShzZWxmLCBpLCBpKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopTlVMTCkgIT0gMCkKKyAgICAgICAgICAgIGlmIChhcnJheV9kZWxfc2xpY2Uoc2VsZiwgaSwgaSsxKSAhPSAwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0xMjA3LDcgKzExNjMsNyBAQAogICAgIHYgPSBnZXRhcnJheWl0ZW0oKFB5T2JqZWN0ICopc2VsZiwgaSk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGFycmF5X2Fzc19zbGljZShzZWxmLCBpLCBpKzEsIChQeU9iamVjdCAqKU5VTEwpICE9IDApIHsKKyAgICBpZiAoYXJyYXlfZGVsX3NsaWNlKHNlbGYsIGksIGkrMSkgIT0gMCkgewogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE4NjEsMTYgKzE4MTcsMTQgQEAKICAgICAgICAgaW50c2l6ZSA9IHNpemVvZihsb25nKTsKICAgICAgICAgaXNfc2lnbmVkID0gMDsKICAgICAgICAgYnJlYWs7Ci0jaWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlICdxJzoKLSAgICAgICAgaW50c2l6ZSA9IHNpemVvZihQWV9MT05HX0xPTkcpOworICAgICAgICBpbnRzaXplID0gc2l6ZW9mKGxvbmcgbG9uZyk7CiAgICAgICAgIGlzX3NpZ25lZCA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ1EnOgotICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGludHNpemUgPSBzaXplb2YobG9uZyBsb25nKTsKICAgICAgICAgaXNfc2lnbmVkID0gMDsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gVU5LTk9XTl9GT1JNQVQ7CiAgICAgfQpAQCAtMTk1NCw3ICsxOTA4LDcgQEAKIHsKICAgICBQeU9iamVjdCAqY29udmVydGVkX2l0ZW1zOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmICghUHlUeXBlX0NoZWNrKGFycmF5dHlwZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTIwOTIsNyArMjA0Niw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgaXRlbWNvdW50ID0gUHlfU0laRShpdGVtcykgLyBtZl9kZXNjci5zaXplOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICptZW1zdHIgPQogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhpdGVtcyk7Ci0gICAgICAgIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKKyAgICAgICAgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgICAgIC8qIElmIHBvc3NpYmxlLCB0cnkgdG8gcGFjayBhcnJheSdzIGl0ZW1zIHVzaW5nIGEgZGF0YSB0eXBlCiAgICAgICAgICAqIHRoYXQgZml0cyBiZXR0ZXIuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbiBhcnJheSB3aXRoIG5hcnJvd2VyCkBAIC0yNTYyLDcgKzI1MTYsNyBAQAogICAgIHZpZXctPmZvcm1hdCA9IE5VTEw7CiAgICAgdmlldy0+aW50ZXJuYWwgPSBOVUxMOwogICAgIGlmICgoZmxhZ3MgJiBQeUJVRl9GT1JNQVQpID09IFB5QlVGX0ZPUk1BVCkgewotICAgICAgICB2aWV3LT5mb3JtYXQgPSBzZWxmLT5vYl9kZXNjci0+Zm9ybWF0czsKKyAgICAgICAgdmlldy0+Zm9ybWF0ID0gKGNoYXIgKilzZWxmLT5vYl9kZXNjci0+Zm9ybWF0czsKICNpZmRlZiBQeV9VTklDT0RFX1dJREUKICAgICAgICAgaWYgKHNlbGYtPm9iX2Rlc2NyLT50eXBlY29kZSA9PSAndScpIHsKICAgICAgICAgICAgIHZpZXctPmZvcm1hdCA9ICJ3IjsKQEAgLTI2MDMsNyArMjU1Nyw3IEBACiB7CiAgICAgaW50IGM7CiAgICAgUHlPYmplY3QgKmluaXRpYWwgPSBOVUxMLCAqaXQgPSBOVUxMOwotICAgIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKKyAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAodHlwZSA9PSAmQXJyYXl0eXBlICYmICFfUHlBcmdfTm9LZXl3b3JkcygiYXJyYXkuYXJyYXkoKSIsIGt3ZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3MzIsMTEgKzI2ODYsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICJiYWQgdHlwZWNvZGUgKG11c3QgYmUgYiwgQiwgdSwgaCwgSCwgaSwgSSwgbCwgTCwgcSwgUSwgZiBvciBkKSIpOwotI2Vsc2UKLSAgICAgICAgImJhZCB0eXBlY29kZSAobXVzdCBiZSBiLCBCLCB1LCBoLCBILCBpLCBJLCBsLCBMLCBmIG9yIGQpIik7Ci0jZW5kaWYKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMjg4Myw5ICsyODMzLDIwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYXJyYXlpdGVyX25leHQoYXJyYXlpdGVyb2JqZWN0ICppdCkKIHsKKyAgICBhcnJheW9iamVjdCAqYW87CisKKyAgICBhc3NlcnQoaXQgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KFB5QXJyYXlJdGVyX0NoZWNrKGl0KSk7Ci0gICAgaWYgKGl0LT5pbmRleCA8IFB5X1NJWkUoaXQtPmFvKSkKLSAgICAgICAgcmV0dXJuICgqaXQtPmdldGl0ZW0pKGl0LT5hbywgaXQtPmluZGV4KyspOworICAgIGFvID0gaXQtPmFvOworICAgIGlmIChhbyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBhc3NlcnQoYXJyYXlfQ2hlY2soYW8pKTsKKyAgICBpZiAoaXQtPmluZGV4IDwgUHlfU0laRShhbykpIHsKKyAgICAgICAgcmV0dXJuICgqaXQtPmdldGl0ZW0pKGFvLCBpdC0+aW5kZXgrKyk7CisgICAgfQorICAgIGl0LT5hbyA9IE5VTEw7CisgICAgUHlfREVDUkVGKGFvKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMjkxNCw4ICsyODc1LDExIEBACiBhcnJheV9hcnJheWl0ZXJhdG9yX19fcmVkdWNlX19faW1wbChhcnJheWl0ZXJvYmplY3QgKnNlbGYpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Nzg5OGE1MmU4ZTY2ZTAxNiBpbnB1dD1hMDYyZWExZTk5NTE0MTdhXSovCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5hbywgc2VsZi0+aW5kZXgpOworICAgIFB5T2JqZWN0ICpmdW5jID0gX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKTsKKyAgICBpZiAoc2VsZi0+YW8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTigoKSkiLCBmdW5jKTsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgZnVuYywgc2VsZi0+YW8sIHNlbGYtPmluZGV4KTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtMjk5NSw3ICsyOTU5LDcgQEAKICAgICBjaGFyIGJ1ZmZlcltQeV9BUlJBWV9MRU5HVEgoZGVzY3JpcHRvcnMpXSwgKnA7CiAgICAgUHlPYmplY3QgKnR5cGVjb2RlczsKICAgICBQeV9zc2l6ZV90IHNpemUgPSAwOwotICAgIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKKyAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZBcnJheXR5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdWRpb29wLmMgYi9Nb2R1bGVzL2F1ZGlvb3AuYwppbmRleCAxZTEzMWQyLi5kY2Q3Nzg4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2F1ZGlvb3AuYworKysgYi9Nb2R1bGVzL2F1ZGlvb3AuYwpAQCAtNSw4ICs1LDYgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCi10eXBlZGVmIHNob3J0IFB5SW50MTY7Ci0KICNpZiBkZWZpbmVkKF9fQ0hBUl9VTlNJR05FRF9fKQogI2lmIGRlZmluZWQoc2lnbmVkKQogLyogVGhpcyBtb2R1bGUgY3VycmVudGx5IGRvZXMgbm90IHdvcmsgb24gc3lzdGVtcyB3aGVyZSBvbmx5IHVuc2lnbmVkCkBAIC01MSwxMyArNDksMTUgQEAKICNkZWZpbmUgU0VHX1NISUZUICAgICAgICg0KSAgICAgICAgICAgICAvKiBMZWZ0IHNoaWZ0IGZvciBzZWdtZW50IG51bWJlci4gKi8KICNkZWZpbmUgU0VHX01BU0sgICAgICAgICgweDcwKSAgICAgICAgICAvKiBTZWdtZW50IGZpZWxkIG1hc2suICovCiAKLXN0YXRpYyBQeUludDE2IHNlZ19hZW5kWzhdID0gezB4MUYsIDB4M0YsIDB4N0YsIDB4RkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFGRiwgMHgzRkYsIDB4N0ZGLCAweEZGRn07Ci1zdGF0aWMgUHlJbnQxNiBzZWdfdWVuZFs4XSA9IHsweDNGLCAweDdGLCAweEZGLCAweDFGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M0ZGLCAweDdGRiwgMHhGRkYsIDB4MUZGRn07CitzdGF0aWMgY29uc3QgaW50MTZfdCBzZWdfYWVuZFs4XSA9IHsKKyAgICAweDFGLCAweDNGLCAweDdGLCAweEZGLCAweDFGRiwgMHgzRkYsIDB4N0ZGLCAweEZGRgorfTsKK3N0YXRpYyBjb25zdCBpbnQxNl90IHNlZ191ZW5kWzhdID0geworICAgIDB4M0YsIDB4N0YsIDB4RkYsIDB4MUZGLCAweDNGRiwgMHg3RkYsIDB4RkZGLCAweDFGRkYKK307CiAKLXN0YXRpYyBQeUludDE2Ci1zZWFyY2goUHlJbnQxNiB2YWwsIFB5SW50MTYgKnRhYmxlLCBpbnQgc2l6ZSkKK3N0YXRpYyBpbnQxNl90CitzZWFyY2goaW50MTZfdCB2YWwsIGNvbnN0IGludDE2X3QgKnRhYmxlLCBpbnQgc2l6ZSkKIHsKICAgICBpbnQgaTsKIApAQCAtNzAsNyArNzAsNyBAQAogI2RlZmluZSBzdF91bGF3MmxpbmVhcjE2KHVjKSAoX3N0X3VsYXcybGluZWFyMTZbdWNdKQogI2RlZmluZSBzdF9hbGF3MmxpbmVhcjE2KHVjKSAoX3N0X2FsYXcybGluZWFyMTZbdWNdKQogCi1zdGF0aWMgUHlJbnQxNiBfc3RfdWxhdzJsaW5lYXIxNlsyNTZdID0geworc3RhdGljIGNvbnN0IGludDE2X3QgX3N0X3VsYXcybGluZWFyMTZbMjU2XSA9IHsKICAgICAtMzIxMjQsICAtMzExMDAsICAtMzAwNzYsICAtMjkwNTIsICAtMjgwMjgsICAtMjcwMDQsICAtMjU5ODAsCiAgICAgLTI0OTU2LCAgLTIzOTMyLCAgLTIyOTA4LCAgLTIxODg0LCAgLTIwODYwLCAgLTE5ODM2LCAgLTE4ODEyLAogICAgIC0xNzc4OCwgIC0xNjc2NCwgIC0xNTk5NiwgIC0xNTQ4NCwgIC0xNDk3MiwgIC0xNDQ2MCwgIC0xMzk0OCwKQEAgLTE0MywxMCArMTQzLDEwIEBACiAgKiBKb2huIFdpbGV5ICYgU29ucywgcHBzIDk4LTExMSBhbmQgNDcyLTQ3Ni4KICAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIKLXN0XzE0bGluZWFyMnVsYXcoUHlJbnQxNiBwY21fdmFsKSAgICAgICAvKiAyJ3MgY29tcGxlbWVudCAoMTQtYml0IHJhbmdlKSAqLworc3RfMTRsaW5lYXIydWxhdyhpbnQxNl90IHBjbV92YWwpICAgICAgIC8qIDIncyBjb21wbGVtZW50ICgxNC1iaXQgcmFuZ2UpICovCiB7Ci0gICAgUHlJbnQxNiAgICAgICAgIG1hc2s7Ci0gICAgUHlJbnQxNiAgICAgICAgIHNlZzsKKyAgICBpbnQxNl90ICAgICAgICAgbWFzazsKKyAgICBpbnQxNl90ICAgICAgICAgc2VnOwogICAgIHVuc2lnbmVkIGNoYXIgICB1dmFsOwogCiAgICAgLyogdS1sYXcgaW52ZXJ0cyBhbGwgYml0cyAqLwpAQCAtMTc2LDcgKzE3Niw3IEBACiAKIH0KIAotc3RhdGljIFB5SW50MTYgX3N0X2FsYXcybGluZWFyMTZbMjU2XSA9IHsKK3N0YXRpYyBjb25zdCBpbnQxNl90IF9zdF9hbGF3MmxpbmVhcjE2WzI1Nl0gPSB7CiAgICAgIC01NTA0LCAgIC01MjQ4LCAgIC02MDE2LCAgIC01NzYwLCAgIC00NDgwLCAgIC00MjI0LCAgIC00OTkyLAogICAgICAtNDczNiwgICAtNzU1MiwgICAtNzI5NiwgICAtODA2NCwgICAtNzgwOCwgICAtNjUyOCwgICAtNjI3MiwKICAgICAgLTcwNDAsICAgLTY3ODQsICAgLTI3NTIsICAgLTI2MjQsICAgLTMwMDgsICAgLTI4ODAsICAgLTIyNDAsCkBAIC0yMzcsMTAgKzIzNywxMCBAQAogICogSm9obiBXaWxleSAmIFNvbnMsIHBwcyA5OC0xMTEgYW5kIDQ3Mi00NzYuCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyCi1zdF9saW5lYXIyYWxhdyhQeUludDE2IHBjbV92YWwpIC8qIDIncyBjb21wbGVtZW50ICgxMy1iaXQgcmFuZ2UpICovCitzdF9saW5lYXIyYWxhdyhpbnQxNl90IHBjbV92YWwpIC8qIDIncyBjb21wbGVtZW50ICgxMy1iaXQgcmFuZ2UpICovCiB7Ci0gICAgUHlJbnQxNiAgICAgICAgIG1hc2s7Ci0gICAgc2hvcnQgICAgICAgICAgIHNlZzsKKyAgICBpbnQxNl90ICAgICAgICAgbWFzazsKKyAgICBpbnQxNl90ICAgICAgICAgc2VnOwogICAgIHVuc2lnbmVkIGNoYXIgICBhdmFsOwogCiAgICAgLyogQS1sYXcgdXNpbmcgZXZlbiBiaXQgaW52ZXJzaW9uICovCkBAIC0yNzAsMTIgKzI3MCwxMiBAQAogLyogRW5kIG9mIGNvZGUgdGFrZW4gZnJvbSBzb3ggKi8KIAogLyogSW50ZWwgQURQQ00gc3RlcCB2YXJpYXRpb24gdGFibGUgKi8KLXN0YXRpYyBpbnQgaW5kZXhUYWJsZVsxNl0gPSB7CitzdGF0aWMgY29uc3QgaW50IGluZGV4VGFibGVbMTZdID0gewogICAgIC0xLCAtMSwgLTEsIC0xLCAyLCA0LCA2LCA4LAogICAgIC0xLCAtMSwgLTEsIC0xLCAyLCA0LCA2LCA4LAogfTsKIAotc3RhdGljIGludCBzdGVwc2l6ZVRhYmxlWzg5XSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgc3RlcHNpemVUYWJsZVs4OV0gPSB7CiAgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNiwgMTcsCiAgICAgMTksIDIxLCAyMywgMjUsIDI4LCAzMSwgMzQsIDM3LCA0MSwgNDUsCiAgICAgNTAsIDU1LCA2MCwgNjYsIDczLCA4MCwgODgsIDk3LCAxMDcsIDExOCwKQEAgLTI5NCw4ICsyOTQsOCBAQAogCiAKICNkZWZpbmUgR0VUSU5UOChjcCwgaSkgICAgICAgICAgR0VUSU5UWChzaWduZWQgY2hhciwgKGNwKSwgKGkpKQotI2RlZmluZSBHRVRJTlQxNihjcCwgaSkgICAgICAgICBHRVRJTlRYKHNob3J0LCAoY3ApLCAoaSkpCi0jZGVmaW5lIEdFVElOVDMyKGNwLCBpKSAgICAgICAgIEdFVElOVFgoUFlfSU5UMzJfVCwgKGNwKSwgKGkpKQorI2RlZmluZSBHRVRJTlQxNihjcCwgaSkgICAgICAgICBHRVRJTlRYKGludDE2X3QsIChjcCksIChpKSkKKyNkZWZpbmUgR0VUSU5UMzIoY3AsIGkpICAgICAgICAgR0VUSU5UWChpbnQzMl90LCAoY3ApLCAoaSkpCiAKICNpZiBXT1JEU19CSUdFTkRJQU4KICNkZWZpbmUgR0VUSU5UMjQoY3AsIGkpICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMzExLDggKzMxMSw4IEBACiAKIAogI2RlZmluZSBTRVRJTlQ4KGNwLCBpLCB2YWwpICAgICBTRVRJTlRYKHNpZ25lZCBjaGFyLCAoY3ApLCAoaSksICh2YWwpKQotI2RlZmluZSBTRVRJTlQxNihjcCwgaSwgdmFsKSAgICBTRVRJTlRYKHNob3J0LCAoY3ApLCAoaSksICh2YWwpKQotI2RlZmluZSBTRVRJTlQzMihjcCwgaSwgdmFsKSAgICBTRVRJTlRYKFBZX0lOVDMyX1QsIChjcCksIChpKSwgKHZhbCkpCisjZGVmaW5lIFNFVElOVDE2KGNwLCBpLCB2YWwpICAgIFNFVElOVFgoaW50MTZfdCwgKGNwKSwgKGkpLCAodmFsKSkKKyNkZWZpbmUgU0VUSU5UMzIoY3AsIGksIHZhbCkgICAgU0VUSU5UWChpbnQzMl90LCAoY3ApLCAoaSksICh2YWwpKQogCiAjaWYgV09SRFNfQklHRU5ESUFOCiAjZGVmaW5lIFNFVElOVDI0KGNwLCBpLCB2YWwpICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNDQ0LDcgKzQ0NCw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZvciAoaSA9IDA7IGkgPCBmcmFnbWVudC0+bGVuOyBpICs9IHdpZHRoKSB7CiAgICAgICAgIGludCB2YWwgPSBHRVRSQVdTQU1QTEUod2lkdGgsIGZyYWdtZW50LT5idWYsIGkpOwotICAgICAgICBpZiAodmFsIDwgMCkgYWJzdmFsID0gKC12YWwpOworICAgICAgICAvKiBDYXN0IHRvIHVuc2lnbmVkIGJlZm9yZSBuZWdhdGluZy4gVW5zaWduZWQgb3ZlcmZsb3cgaXMgd2VsbC0KKyAgICAgICAgZGVmaW5lZCwgYnV0IHNpZ25lZCBvdmVyZmxvdyBpcyBub3QuICovCisgICAgICAgIGlmICh2YWwgPCAwKSBhYnN2YWwgPSAodW5zaWduZWQgaW50KS0oaW50NjRfdCl2YWw7CiAgICAgICAgIGVsc2UgYWJzdmFsID0gdmFsOwogICAgICAgICBpZiAoYWJzdmFsID4gbWF4KSBtYXggPSBhYnN2YWw7CiAgICAgfQpAQCAtNTQwLDcgKzU0Miw3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlcyk7CiB9CiAKLXN0YXRpYyBkb3VibGUgX3N1bTIoY29uc3Qgc2hvcnQgKmEsIGNvbnN0IHNob3J0ICpiLCBQeV9zc2l6ZV90IGxlbikKK3N0YXRpYyBkb3VibGUgX3N1bTIoY29uc3QgaW50MTZfdCAqYSwgY29uc3QgaW50MTZfdCAqYiwgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGRvdWJsZSBzdW0gPSAwLjA7CkBAIC01OTgsNyArNjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcmVmZXJlbmNlKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU3NTIzMDZkODNjYmJhZGEgaW5wdXQ9NjJjMzA1NjA1ZTE4M2M5YV0qLwogewotICAgIGNvbnN0IHNob3J0ICpjcDEsICpjcDI7CisgICAgY29uc3QgaW50MTZfdCAqY3AxLCAqY3AyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBQeV9zc2l6ZV90IGosIGJlc3RfajsKICAgICBkb3VibGUgYWpfbTEsIGFqX2xtMTsKQEAgLTYwOCw5ICs2MTAsOSBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoQXVkaW9vcEVycm9yLCAiU3RyaW5ncyBzaG91bGQgYmUgZXZlbi1zaXplZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgY3AxID0gKGNvbnN0IHNob3J0ICopZnJhZ21lbnQtPmJ1ZjsKKyAgICBjcDEgPSAoY29uc3QgaW50MTZfdCAqKWZyYWdtZW50LT5idWY7CiAgICAgbGVuMSA9IGZyYWdtZW50LT5sZW4gPj4gMTsKLSAgICBjcDIgPSAoY29uc3Qgc2hvcnQgKilyZWZlcmVuY2UtPmJ1ZjsKKyAgICBjcDIgPSAoY29uc3QgaW50MTZfdCAqKXJlZmVyZW5jZS0+YnVmOwogICAgIGxlbjIgPSByZWZlcmVuY2UtPmxlbiA+PiAxOwogCiAgICAgaWYgKGxlbjEgPCBsZW4yKSB7CkBAIC02NjcsNyArNjY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcmVmZXJlbmNlKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0ZWE5NTY1MmMxYWZjZjggaW5wdXQ9ODE2NjgwMzAxZDAxMmIyMV0qLwogewotICAgIGNvbnN0IHNob3J0ICpjcDEsICpjcDI7CisgICAgY29uc3QgaW50MTZfdCAqY3AxLCAqY3AyOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGRvdWJsZSBzdW1fcmlfMiwgc3VtX2Fpal9yaSwgcmVzdWx0OwogCkBAIC02NzksOCArNjgxLDggQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEF1ZGlvb3BFcnJvciwgIlNhbXBsZXMgc2hvdWxkIGJlIHNhbWUgc2l6ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgY3AxID0gKGNvbnN0IHNob3J0ICopZnJhZ21lbnQtPmJ1ZjsKLSAgICBjcDIgPSAoY29uc3Qgc2hvcnQgKilyZWZlcmVuY2UtPmJ1ZjsKKyAgICBjcDEgPSAoY29uc3QgaW50MTZfdCAqKWZyYWdtZW50LT5idWY7CisgICAgY3AyID0gKGNvbnN0IGludDE2X3QgKilyZWZlcmVuY2UtPmJ1ZjsKICAgICBsZW4gPSBmcmFnbWVudC0+bGVuID4+IDE7CiAgICAgc3VtX3JpXzIgPSBfc3VtMihjcDIsIGNwMiwgbGVuKTsKICAgICBzdW1fYWlqX3JpID0gX3N1bTIoY3AxLCBjcDIsIGxlbik7CkBAIC03MDksNyArNzExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYwMDgxMjgyMzM1MjMwNDAgaW5wdXQ9MmYzMDQ4MDFlZDQyMzgzY10qLwogewotICAgIGNvbnN0IHNob3J0ICpjcDE7CisgICAgY29uc3QgaW50MTZfdCAqY3AxOwogICAgIFB5X3NzaXplX3QgbGVuMTsKICAgICBQeV9zc2l6ZV90IGosIGJlc3RfajsKICAgICBkb3VibGUgYWpfbTEsIGFqX2xtMTsKQEAgLTcxOSw3ICs3MjEsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoQXVkaW9vcEVycm9yLCAiU3RyaW5ncyBzaG91bGQgYmUgZXZlbi1zaXplZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgY3AxID0gKGNvbnN0IHNob3J0ICopZnJhZ21lbnQtPmJ1ZjsKKyAgICBjcDEgPSAoY29uc3QgaW50MTZfdCAqKWZyYWdtZW50LT5idWY7CiAgICAgbGVuMSA9IGZyYWdtZW50LT5sZW4gPj4gMTsKIAogICAgIGlmIChsZW5ndGggPCAwIHx8IGxlbjEgPCBsZW5ndGgpIHsKQEAgLTExMjAsMTIgKzExMjIsMTIgQEAKICAgICAgICAgaWYgKHdpZHRoID09IDEpCiAgICAgICAgICAgICB2YWwgPSBHRVRJTlRYKHVuc2lnbmVkIGNoYXIsIGZyYWdtZW50LT5idWYsIGkpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAyKQotICAgICAgICAgICAgdmFsID0gR0VUSU5UWCh1bnNpZ25lZCBzaG9ydCwgZnJhZ21lbnQtPmJ1ZiwgaSk7CisgICAgICAgICAgICB2YWwgPSBHRVRJTlRYKHVpbnQxNl90LCBmcmFnbWVudC0+YnVmLCBpKTsKICAgICAgICAgZWxzZSBpZiAod2lkdGggPT0gMykKICAgICAgICAgICAgIHZhbCA9ICgodW5zaWduZWQgaW50KUdFVElOVDI0KGZyYWdtZW50LT5idWYsIGkpKSAmIDB4ZmZmZmZmdTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhc3NlcnQod2lkdGggPT0gNCk7Ci0gICAgICAgICAgICB2YWwgPSBHRVRJTlRYKFBZX1VJTlQzMl9ULCBmcmFnbWVudC0+YnVmLCBpKTsKKyAgICAgICAgICAgIHZhbCA9IEdFVElOVFgodWludDMyX3QsIGZyYWdtZW50LT5idWYsIGkpOwogICAgICAgICB9CiAKICAgICAgICAgdmFsICs9ICh1bnNpZ25lZCBpbnQpYmlhczsKQEAgLTExMzUsMTIgKzExMzcsMTIgQEAKICAgICAgICAgaWYgKHdpZHRoID09IDEpCiAgICAgICAgICAgICBTRVRJTlRYKHVuc2lnbmVkIGNoYXIsIG5jcCwgaSwgdmFsKTsKICAgICAgICAgZWxzZSBpZiAod2lkdGggPT0gMikKLSAgICAgICAgICAgIFNFVElOVFgodW5zaWduZWQgc2hvcnQsIG5jcCwgaSwgdmFsKTsKKyAgICAgICAgICAgIFNFVElOVFgodWludDE2X3QsIG5jcCwgaSwgdmFsKTsKICAgICAgICAgZWxzZSBpZiAod2lkdGggPT0gMykKICAgICAgICAgICAgIFNFVElOVDI0KG5jcCwgaSwgKGludCl2YWwpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFzc2VydCh3aWR0aCA9PSA0KTsKLSAgICAgICAgICAgIFNFVElOVFgoUFlfVUlOVDMyX1QsIG5jcCwgaSwgdmFsKTsKKyAgICAgICAgICAgIFNFVElOVFgodWludDMyX3QsIG5jcCwgaSwgdmFsKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcnY7CkBAIC0xMzMyLDcgKzEzMzQsNyBAQAogICAgIHdlaWdodEEgLz0gZDsKICAgICB3ZWlnaHRCIC89IGQ7CiAKLSAgICBpZiAoKHNpemVfdCluY2hhbm5lbHMgPiBQWV9TSVpFX01BWC9zaXplb2YoaW50KSkgeworICAgIGlmICgoc2l6ZV90KW5jaGFubmVscyA+IFNJWkVfTUFYL3NpemVvZihpbnQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgZW5vdWdoIG1lbW9yeSBmb3Igb3V0cHV0IGJ1ZmZlciIpOwogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYmluYXNjaWkuYyBiL01vZHVsZXMvYmluYXNjaWkuYwppbmRleCAxYTQwYjQxLi45YjljZDdmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2JpbmFzY2lpLmMKKysrIGIvTW9kdWxlcy9iaW5hc2NpaS5jCkBAIC03NCw3ICs3NCw3IEBACiAjZGVmaW5lIFNLSVAgMHg3RQogI2RlZmluZSBGQUlMIDB4N0QKIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgdGFibGVfYTJiX2hxeFsyNTZdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgdGFibGVfYTJiX2hxeFsyNTZdID0gewogLyogICAgICAgXkAgICAgXkEgICAgXkIgICAgXkMgICAgXkQgICAgXkUgICAgXkYgICAgXkcgICAqLwogLyogMCovICBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLAogLyogICAgICAgXGIgICAgXHQgICAgXG4gICAgXksgICAgXkwgICAgXHIgICAgXk4gICAgXk8gICAqLwpAQCAtMTI1LDEwICsxMjUsMTAgQEAKICAgICBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLCBGQUlMLAogfTsKIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgdGFibGVfYjJhX2hxeFtdID0KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHRhYmxlX2IyYV9ocXhbXSA9CiAiIVwiIyQlJicoKSorLC0wMTIzNDU2ODlAQUJDREVGR0hJSktMTU5QUVJTVFVWWFlaW2BhYmNkZWZoaWprbG1wcXIiOwogCi1zdGF0aWMgY2hhciB0YWJsZV9hMmJfYmFzZTY0W10gPSB7CitzdGF0aWMgY29uc3QgY2hhciB0YWJsZV9hMmJfYmFzZTY0W10gPSB7CiAgICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsCiAgICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsCiAgICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSw2MiwgLTEsLTEsLTEsNjMsCkBAIC0xNDQsMTIgKzE0NCwxMiBAQAogLyogTWF4IGJpbmFyeSBjaHVuayBzaXplOyBsaW1pdGVkIG9ubHkgYnkgYXZhaWxhYmxlIG1lbW9yeSAqLwogI2RlZmluZSBCQVNFNjRfTUFYQklOICgoUFlfU1NJWkVfVF9NQVggLSAzKSAvIDIpCiAKLXN0YXRpYyB1bnNpZ25lZCBjaGFyIHRhYmxlX2IyYV9iYXNlNjRbXSA9CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB0YWJsZV9iMmFfYmFzZTY0W10gPQogIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iOwogCiAKIAotc3RhdGljIHVuc2lnbmVkIHNob3J0IGNyY3RhYl9ocXhbMjU2XSA9IHsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBjcmN0YWJfaHF4WzI1Nl0gPSB7CiAgICAgMHgwMDAwLCAweDEwMjEsIDB4MjA0MiwgMHgzMDYzLCAweDQwODQsIDB4NTBhNSwgMHg2MGM2LCAweDcwZTcsCiAgICAgMHg4MTA4LCAweDkxMjksIDB4YTE0YSwgMHhiMTZiLCAweGMxOGMsIDB4ZDFhZCwgMHhlMWNlLCAweGYxZWYsCiAgICAgMHgxMjMxLCAweDAyMTAsIDB4MzI3MywgMHgyMjUyLCAweDUyYjUsIDB4NDI5NCwgMHg3MmY3LCAweDYyZDYsCkBAIC0yNTYsNyArMjU2LDggQEAKIGJpbmFzY2lpX2EyYl91dV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMDI3ZjhlMGIwNTk4NzQyIGlucHV0PTdjYWZlYWY3M2RmNjNkMWNdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwpAQCAtMzQyLDEzICszNDMsMTUgQEAKIGJpbmFzY2lpX2IyYV91dV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMDcwNjcwZTUyZTRhYTZiIGlucHV0PTAwZmRmNDU4Y2U4YjQ2NWJdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpydjsKLSAgICBQeV9zc2l6ZV90IGJpbl9sZW47CisgICAgUHlfc3NpemVfdCBiaW5fbGVuLCBvdXRfbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAorICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAgICAgYmluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgYmluX2xlbiA9IGRhdGEtPmxlbjsKICAgICBpZiAoIGJpbl9sZW4gPiA0NSApIHsKQEAgLTM1OCw5ICszNjEsMTAgQEAKICAgICB9CiAKICAgICAvKiBXZSdyZSBsYXp5IGFuZCBhbGxvY2F0ZSB0byBtdWNoIChmaXhlZCB1cCBsYXRlcikgKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDIgKyAoYmluX2xlbisyKS8zKjQpKSA9PSBOVUxMICkKKyAgICBvdXRfbGVuID0gMiArIChiaW5fbGVuICsgMikgLyAzICogNDsKKyAgICBhc2NpaV9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgb3V0X2xlbik7CisgICAgaWYgKGFzY2lpX2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNjaWlfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgLyogU3RvcmUgdGhlIGxlbmd0aCAqLwogICAgICphc2NpaV9kYXRhKysgPSAnICcgKyAoYmluX2xlbiAmIDA3Nyk7CkBAIC0zODIsMTcgKzM4NiwxMiBAQAogICAgIH0KICAgICAqYXNjaWlfZGF0YSsrID0gJ1xuJzsgICAgICAgLyogQXBwZW5kIGEgY291cnRlc3kgbmV3bGluZSAqLwogCi0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChhc2NpaV9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYXNjaWlfZGF0YSk7CiB9CiAKIAogc3RhdGljIGludAotYmluYXNjaWlfZmluZF92YWxpZCh1bnNpZ25lZCBjaGFyICpzLCBQeV9zc2l6ZV90IHNsZW4sIGludCBudW0pCitiaW5hc2NpaV9maW5kX3ZhbGlkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIFB5X3NzaXplX3Qgc2xlbiwgaW50IG51bSkKIHsKICAgICAvKiBGaW5kcyAmIHJldHVybnMgdGhlIChudW0rMSl0aAogICAgICoqIHZhbGlkIGNoYXJhY3RlciBmb3IgYmFzZTY0LCBvciAtMSBpZiBub25lLgpAQCAtNDI5LDEzICs0MjgsMTQgQEAKIGJpbmFzY2lpX2EyYl9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDYyODIyM2YxOWZkM2Y5YiBpbnB1dD01ODcyYWNmNmUxY2FjMjQzXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKmJpbl9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgaW50IGxlZnRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIHRoaXNfY2g7CiAgICAgdW5zaWduZWQgaW50IGxlZnRjaGFyID0gMDsKLSAgICBQeU9iamVjdCAqcnY7CiAgICAgUHlfc3NpemVfdCBhc2NpaV9sZW4sIGJpbl9sZW47CiAgICAgaW50IHF1YWRfcG9zID0gMDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBhc2NpaV9kYXRhID0gZGF0YS0+YnVmOwogICAgIGFzY2lpX2xlbiA9IGRhdGEtPmxlbjsKQEAgLTQ0NywxMSArNDQ3LDEyIEBACiAKICAgICBiaW5fbGVuID0gKChhc2NpaV9sZW4rMykvNCkqMzsgLyogVXBwZXIgYm91bmQsIGNvcnJlY3RlZCBsYXRlciAqLwogCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKwogICAgIC8qIEFsbG9jYXRlIHRoZSBidWZmZXIgKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJpbl9sZW4pKSA9PSBOVUxMICkKKyAgICBiaW5fZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGJpbl9sZW4pOworICAgIGlmIChiaW5fZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBiaW5fZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwotICAgIGJpbl9sZW4gPSAwOwogCiAgICAgZm9yKCA7IGFzY2lpX2xlbiA+IDA7IGFzY2lpX2xlbi0tLCBhc2NpaV9kYXRhKyspIHsKICAgICAgICAgdGhpc19jaCA9ICphc2NpaV9kYXRhOwpAQCAtNDk2LDMxICs0OTcsMTcgQEAKICAgICAgICAgaWYgKCBsZWZ0Yml0cyA+PSA4ICkgewogICAgICAgICAgICAgbGVmdGJpdHMgLT0gODsKICAgICAgICAgICAgICpiaW5fZGF0YSsrID0gKGxlZnRjaGFyID4+IGxlZnRiaXRzKSAmIDB4ZmY7Ci0gICAgICAgICAgICBiaW5fbGVuKys7CiAgICAgICAgICAgICBsZWZ0Y2hhciAmPSAoKDEgPDwgbGVmdGJpdHMpIC0gMSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobGVmdGJpdHMgIT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJJbmNvcnJlY3QgcGFkZGluZyIpOwotICAgICAgICBQeV9ERUNSRUYocnYpOworICAgICAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICAvKiBBbmQgc2V0IHN0cmluZyBzaXplIGNvcnJlY3RseS4gSWYgdGhlIHJlc3VsdCBzdHJpbmcgaXMgZW1wdHkKLSAgICAqKiAoYmVjYXVzZSB0aGUgaW5wdXQgd2FzIGFsbCBpbnZhbGlkKSByZXR1cm4gdGhlIHNoYXJlZCBlbXB0eQotICAgICoqIHN0cmluZyBpbnN0ZWFkOyBfUHlCeXRlc19SZXNpemUoKSB3b24ndCBkbyB0aGlzIGZvciB1cy4KLSAgICAqLwotICAgIGlmIChiaW5fbGVuID4gMCkgewotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwgYmluX2xlbikgPCAwKSB7Ci0gICAgICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7Ci0gICAgICAgIHJ2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgfQotICAgIHJldHVybiBydjsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGJpbl9kYXRhKTsKIH0KIAogCkBAIC01MjgsMjQgKzUxNSwyNyBAQAogYmluYXNjaWkuYjJhX2Jhc2U2NAogCiAgICAgZGF0YTogUHlfYnVmZmVyCi0gICAgLworICAgICoKKyAgICBuZXdsaW5lOiBpbnQoY19kZWZhdWx0PSIxIikgPSBUcnVlCiAKIEJhc2U2NC1jb2RlIGxpbmUgb2YgZGF0YS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGQ5NjY2MzE3MDc3OGRjMyBpbnB1dD0xNGVjNGU0NzM3MTE3NGE5XSovCitiaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgbmV3bGluZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YWQ2MmM4ZTg0ODVkM2IzIGlucHV0PTdiMmVhNmZhMzhkODkyNGNdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpydjsKLSAgICBQeV9zc2l6ZV90IGJpbl9sZW47CisgICAgUHlfc3NpemVfdCBiaW5fbGVuLCBvdXRfbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGJpbl9kYXRhID0gZGF0YS0+YnVmOwogICAgIGJpbl9sZW4gPSBkYXRhLT5sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKIAogICAgIGFzc2VydChiaW5fbGVuID49IDApOwogCkBAIC01NTUsMTEgKzU0NSwxNCBAQAogICAgIH0KIAogICAgIC8qIFdlJ3JlIGxhenkgYW5kIGFsbG9jYXRlIHRvbyBtdWNoIChmaXhlZCB1cCBsYXRlcikuCi0gICAgICAgIiszIiBsZWF2ZXMgcm9vbSBmb3IgdXAgdG8gdHdvIHBhZCBjaGFyYWN0ZXJzIGFuZCBhIHRyYWlsaW5nCi0gICAgICAgbmV3bGluZS4gIE5vdGUgdGhhdCAnYicgZ2V0cyBlbmNvZGVkIGFzICdZZz09XG4nICgxIGluLCA1IG91dCkuICovCi0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBiaW5fbGVuKjIgKyAzKSkgPT0gTlVMTCApCisgICAgICAgIisyIiBsZWF2ZXMgcm9vbSBmb3IgdXAgdG8gdHdvIHBhZCBjaGFyYWN0ZXJzLgorICAgICAgIE5vdGUgdGhhdCAnYicgZ2V0cyBlbmNvZGVkIGFzICdZZz09XG4nICgxIGluLCA1IG91dCkuICovCisgICAgb3V0X2xlbiA9IGJpbl9sZW4qMiArIDI7CisgICAgaWYgKG5ld2xpbmUpCisgICAgICAgIG91dF9sZW4rKzsKKyAgICBhc2NpaV9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgb3V0X2xlbik7CisgICAgaWYgKGFzY2lpX2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNjaWlfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgZm9yKCA7IGJpbl9sZW4gPiAwIDsgYmluX2xlbi0tLCBiaW5fZGF0YSsrICkgewogICAgICAgICAvKiBTaGlmdCB0aGUgZGF0YSBpbnRvIG91ciBidWZmZXIgKi8KQEAgLTU4MSwxNCArNTc0LDEwIEBACiAgICAgICAgICphc2NpaV9kYXRhKysgPSB0YWJsZV9iMmFfYmFzZTY0WyhsZWZ0Y2hhciYweGYpIDw8IDJdOwogICAgICAgICAqYXNjaWlfZGF0YSsrID0gQkFTRTY0X1BBRDsKICAgICB9Ci0gICAgKmFzY2lpX2RhdGErKyA9ICdcbic7ICAgICAgIC8qIEFwcGVuZCBhIGNvdXJ0ZXN5IG5ld2xpbmUgKi8KKyAgICBpZiAobmV3bGluZSkKKyAgICAgICAgKmFzY2lpX2RhdGErKyA9ICdcbic7ICAgICAgIC8qIEFwcGVuZCBhIGNvdXJ0ZXN5IG5ld2xpbmUgKi8KIAotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAotICAgICAgICAgICAgICAgICAgICAgICAoYXNjaWlfZGF0YSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgfQotICAgIHJldHVybiBydjsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGFzY2lpX2RhdGEpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCkBAIC02MDQsMTYgKzU5MywxOSBAQAogYmluYXNjaWlfYTJiX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDZkOGM1NGQ1NGVhMWMxIGlucHV0PTBkOTE0YzY4MGUwZWVkNTVdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpydjsKKyAgICBQeU9iamVjdCAqcmVzOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGludCBkb25lID0gMDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBhc2NpaV9kYXRhID0gZGF0YS0+YnVmOwogICAgIGxlbiA9IGRhdGEtPmxlbjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKIApAQCAtNjIzLDkgKzYxNSw5IEBACiAgICAgLyogQWxsb2NhdGUgYSBzdHJpbmcgdGhhdCBpcyB0b28gYmlnIChmaXhlZCBsYXRlcikKICAgICAgICBBZGQgdHdvIHRvIHRoZSBpbml0aWFsIGxlbmd0aCB0byBwcmV2ZW50IGludGVybmluZyB3aGljaAogICAgICAgIHdvdWxkIHByZWNsdWRlIHN1YnNlcXVlbnQgcmVzaXppbmcuICAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKzIpKSA9PSBOVUxMICkKKyAgICBiaW5fZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGxlbiArIDIpOworICAgIGlmIChiaW5fZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBiaW5fZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgZm9yKCA7IGxlbiA+IDAgOyBsZW4tLSwgYXNjaWlfZGF0YSsrICkgewogICAgICAgICAvKiBHZXQgdGhlIGJ5dGUgYW5kIGxvb2sgaXQgdXAgKi8KQEAgLTYzNCw3ICs2MjYsNyBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICggdGhpc19jaCA9PSBGQUlMICkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSWxsZWdhbCBjaGFyIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocnYpOworICAgICAgICAgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICggdGhpc19jaCA9PSBET05FICkgewpAQCAtNjU2LDIxICs2NDgsMTQgQEAKICAgICBpZiAoIGxlZnRiaXRzICYmICFkb25lICkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoSW5jb21wbGV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICJTdHJpbmcgaGFzIGluY29tcGxldGUgbnVtYmVyIG9mIGJ5dGVzIik7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGJpbl9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgaWYgKHJ2KSB7Ci0gICAgICAgIFB5T2JqZWN0ICpycnYgPSBQeV9CdWlsZFZhbHVlKCJPaSIsIHJ2LCBkb25lKTsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgcmV0dXJuIHJydjsKLSAgICB9CiAKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYmluX2RhdGEpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5pIiwgcmVzLCBkb25lKTsKIH0KIAogCkBAIC02ODcsMTEgKzY3MiwxMyBAQAogYmluYXNjaWlfcmxlY29kZV9ocXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzkzZDc5MzM4ZjVmNTYyOSBpbnB1dD1lMWYxNzEyNDQ3YTgyYjA5XSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqaW5fZGF0YSwgKm91dF9kYXRhOwotICAgIFB5T2JqZWN0ICpydjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbl9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKm91dF9kYXRhOwogICAgIHVuc2lnbmVkIGNoYXIgY2g7CiAgICAgUHlfc3NpemVfdCBpbiwgaW5lbmQsIGxlbjsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogICAgIGluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgbGVuID0gZGF0YS0+bGVuOwogCkBAIC03MDEsOSArNjg4LDkgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKICAgICAvKiBXb3JzdCBjYXNlOiBvdXRwdXQgaXMgdHdpY2UgYXMgYmlnIGFzIGlucHV0IChmaXhlZCBsYXRlcikgKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbioyKzIpKSA9PSBOVUxMICkKKyAgICBvdXRfZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGxlbiAqIDIgKyAyKTsKKyAgICBpZiAob3V0X2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgb3V0X2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKIAogICAgIGZvciggaW49MDsgaW48bGVuOyBpbisrKSB7CiAgICAgICAgIGNoID0gaW5fZGF0YVtpbl07CkBAIC03MjksMTIgKzcxNiw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChvdXRfZGF0YSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgfQotICAgIHJldHVybiBydjsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgb3V0X2RhdGEpOwogfQogCiAKQEAgLTc1MSwxNSArNzM0LDE3IEBACiBiaW5hc2NpaV9iMmFfaHF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQwYWE1YTcwNGJjOWY3ZGUgaW5wdXQ9OTU5NmViZTAxOWZlMTJiYV0qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OwogICAgIFB5X3NzaXplX3QgbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGJpbl9kYXRhID0gZGF0YS0+YnVmOwogICAgIGxlbiA9IGRhdGEtPmxlbjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKIApAQCAtNzY3LDkgKzc1Miw5IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgLyogQWxsb2NhdGUgYSBidWZmZXIgdGhhdCBpcyBhdCBsZWFzdCBsYXJnZSBlbm91Z2ggKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbioyKzIpKSA9PSBOVUxMICkKKyAgICBhc2NpaV9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgbGVuICogMiArIDIpOworICAgIGlmIChhc2NpaV9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzY2lpX2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKIAogICAgIGZvciggOyBsZW4gPiAwIDsgbGVuLS0sIGJpbl9kYXRhKysgKSB7CiAgICAgICAgIC8qIFNoaWZ0IGludG8gb3VyIGJ1ZmZlciwgYW5kIG91dHB1dCBhbnkgNmJpdHMgcmVhZHkgKi8KQEAgLTc4NiwxMiArNzcxLDggQEAKICAgICAgICAgbGVmdGNoYXIgPDw9ICg2LWxlZnRiaXRzKTsKICAgICAgICAgKmFzY2lpX2RhdGErKyA9IHRhYmxlX2IyYV9ocXhbbGVmdGNoYXIgJiAweDNmXTsKICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChhc2NpaV9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBhc2NpaV9kYXRhKTsKIH0KIAogCkBAIC04MDgsMTMgKzc4OSwxNSBAQAogYmluYXNjaWlfcmxlZGVjb2RlX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODI2NjE5NTY1ZGUxYzZjIGlucHV0PTU0Y2RkNDlmYzAxNDQwMmNdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICppbl9kYXRhLCAqb3V0X2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpvdXRfZGF0YTsKICAgICB1bnNpZ25lZCBjaGFyIGluX2J5dGUsIGluX3JlcGVhdDsKLSAgICBQeU9iamVjdCAqcnY7Ci0gICAgUHlfc3NpemVfdCBpbl9sZW4sIG91dF9sZW4sIG91dF9sZW5fbGVmdDsKKyAgICBQeV9zc2l6ZV90IGluX2xlbjsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBpbl9kYXRhID0gZGF0YS0+YnVmOwogICAgIGluX2xlbiA9IGRhdGEtPmxlbjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCiAgICAgYXNzZXJ0KGluX2xlbiA+PSAwKTsKIApAQCAtODI1LDU5ICs4MDgsNDggQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKICAgICAvKiBBbGxvY2F0ZSBhIGJ1ZmZlciBvZiByZWFzb25hYmxlIHNpemUuIFJlc2l6ZWQgd2hlbiBuZWVkZWQgKi8KLSAgICBvdXRfbGVuID0gaW5fbGVuKjI7Ci0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBvdXRfbGVuKSkgPT0gTlVMTCApCisgICAgb3V0X2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBpbl9sZW4pOworICAgIGlmIChvdXRfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvdXRfbGVuX2xlZnQgPSBvdXRfbGVuOwotICAgIG91dF9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CisKKyAgICAvKiBVc2Ugb3ZlcmFsbG9jYXRpb24gKi8KKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKIAogICAgIC8qCiAgICAgKiogV2UgbmVlZCB0d28gbWFjcm9zIGhlcmUgdG8gZ2V0L3B1dCBieXRlcyBhbmQgaGFuZGxlCiAgICAgKiogZW5kLW9mLWJ1ZmZlciBmb3IgaW5wdXQgYW5kIG91dHB1dCBzdHJpbmdzLgogICAgICovCi0jZGVmaW5lIElOQllURShiKSBcCi0gICAgZG8geyBcCi0gICAgICAgICAgICAgaWYgKCAtLWluX2xlbiA8IDAgKSB7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEluY29tcGxldGUsICIiKTsgXAotICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocnYpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCi0gICAgICAgICAgICAgfSBcCi0gICAgICAgICAgICAgYiA9ICppbl9kYXRhKys7IFwKKyNkZWZpbmUgSU5CWVRFKGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGlmICggLS1pbl9sZW4gPCAwICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEluY29tcGxldGUsICIiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgZ290byBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGIgPSAqaW5fZGF0YSsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlKDApCiAKLSNkZWZpbmUgT1VUQllURShiKSBcCi0gICAgZG8geyBcCi0gICAgICAgICAgICAgaWYgKCAtLW91dF9sZW5fbGVmdCA8IDAgKSB7IFwKLSAgICAgICAgICAgICAgICAgICAgICBpZiAoIG91dF9sZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsIDIqb3V0X2xlbikgPCAwKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICB7IFB5X1hERUNSRUYocnYpOyByZXR1cm4gTlVMTDsgfSBcCi0gICAgICAgICAgICAgICAgICAgICAgb3V0X2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvdXRfbGVuOyBcCi0gICAgICAgICAgICAgICAgICAgICAgb3V0X2xlbl9sZWZ0ID0gb3V0X2xlbi0xOyBcCi0gICAgICAgICAgICAgICAgICAgICAgb3V0X2xlbiA9IG91dF9sZW4gKiAyOyBcCi0gICAgICAgICAgICAgfSBcCi0gICAgICAgICAgICAgKm91dF9kYXRhKysgPSBiOyBcCi0gICAgfSB3aGlsZSgwKQotCi0gICAgICAgIC8qCi0gICAgICAgICoqIEhhbmRsZSBmaXJzdCBieXRlIHNlcGFyYXRlbHkgKHNpbmNlIHdlIGhhdmUgdG8gZ2V0IGFuZ3J5Ci0gICAgICAgICoqIGluIGNhc2Ugb2YgYW4gb3JwaGFuZWQgUkxFIGNvZGUpLgotICAgICAgICAqLwotICAgICAgICBJTkJZVEUoaW5fYnl0ZSk7CisgICAgLyoKKyAgICAqKiBIYW5kbGUgZmlyc3QgYnl0ZSBzZXBhcmF0ZWx5IChzaW5jZSB3ZSBoYXZlIHRvIGdldCBhbmdyeQorICAgICoqIGluIGNhc2Ugb2YgYW4gb3JwaGFuZWQgUkxFIGNvZGUpLgorICAgICovCisgICAgSU5CWVRFKGluX2J5dGUpOwogCiAgICAgaWYgKGluX2J5dGUgPT0gUlVOQ0hBUikgewogICAgICAgICBJTkJZVEUoaW5fcmVwZWF0KTsKKyAgICAgICAgLyogb25seSAxIGJ5dGUgd2lsbCBiZSB3cml0dGVuLCBidXQgMiBieXRlcyB3ZXJlIHByZWFsbG9jYXRlZDoKKyAgICAgICAgICAgc3VidHJhY3QgMSBieXRlIHRvIHByZXZlbnQgb3ZlcmFsbG9jYXRpb24gKi8KKyAgICAgICAgd3JpdGVyLm1pbl9zaXplLS07CisKICAgICAgICAgaWYgKGluX3JlcGVhdCAhPSAwKSB7CiAgICAgICAgICAgICAvKiBOb3RlIEVycm9yLCBub3QgSW5jb21wbGV0ZSAod2hpY2ggaXMgYXQgdGhlIGVuZAogICAgICAgICAgICAgKiogb2YgdGhlIHN0cmluZyBvbmx5KS4gVGhpcyBpcyBhIHByb2dyYW1tZXIgZXJyb3IuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiT3JwaGFuZWQgUkxFIGNvZGUgYXQgc3RhcnQiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihydik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLSAgICAgICAgT1VUQllURShSVU5DSEFSKTsKKyAgICAgICAgKm91dF9kYXRhKysgPSBSVU5DSEFSOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIE9VVEJZVEUoaW5fYnl0ZSk7CisgICAgICAgICpvdXRfZGF0YSsrID0gaW5fYnl0ZTsKICAgICB9CiAKICAgICB3aGlsZSggaW5fbGVuID4gMCApIHsKQEAgLTg4NSwyNiArODU3LDM5IEBACiAKICAgICAgICAgaWYgKGluX2J5dGUgPT0gUlVOQ0hBUikgewogICAgICAgICAgICAgSU5CWVRFKGluX3JlcGVhdCk7CisgICAgICAgICAgICAvKiBvbmx5IDEgYnl0ZSB3aWxsIGJlIHdyaXR0ZW4sIGJ1dCAyIGJ5dGVzIHdlcmUgcHJlYWxsb2NhdGVkOgorICAgICAgICAgICAgICAgc3VidHJhY3QgMSBieXRlIHRvIHByZXZlbnQgb3ZlcmFsbG9jYXRpb24gKi8KKyAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZS0tOworCiAgICAgICAgICAgICBpZiAoIGluX3JlcGVhdCA9PSAwICkgewogICAgICAgICAgICAgICAgIC8qIEp1c3QgYW4gZXNjYXBlZCBSVU5DSEFSIHZhbHVlICovCi0gICAgICAgICAgICAgICAgT1VUQllURShSVU5DSEFSKTsKKyAgICAgICAgICAgICAgICAqb3V0X2RhdGErKyA9IFJVTkNIQVI7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8qIFBpY2sgdXAgdmFsdWUgYW5kIG91dHB1dCBhIHNlcXVlbmNlIG9mIGl0ICovCiAgICAgICAgICAgICAgICAgaW5fYnl0ZSA9IG91dF9kYXRhWy0xXTsKKworICAgICAgICAgICAgICAgIC8qIGVubGFyZ2UgdGhlIGJ1ZmZlciBpZiBuZWVkZWQgKi8KKyAgICAgICAgICAgICAgICBpZiAoaW5fcmVwZWF0ID4gMSkgeworICAgICAgICAgICAgICAgICAgICAvKiAtMSBiZWNhdXNlIHdlIGFscmVhZHkgcHJlYWxsb2NhdGVkIDEgYnl0ZSAqLworICAgICAgICAgICAgICAgICAgICBvdXRfZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgb3V0X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9yZXBlYXQgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG91dF9kYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHdoaWxlICggLS1pbl9yZXBlYXQgPiAwICkKLSAgICAgICAgICAgICAgICAgICAgT1VUQllURShpbl9ieXRlKTsKKyAgICAgICAgICAgICAgICAgICAgKm91dF9kYXRhKysgPSBpbl9ieXRlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyogTm9ybWFsIGJ5dGUgKi8KLSAgICAgICAgICAgIE9VVEJZVEUoaW5fYnl0ZSk7CisgICAgICAgICAgICAqb3V0X2RhdGErKyA9IGluX2J5dGU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChvdXRfZGF0YSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9DTEVBUihydik7Ci0gICAgfQotICAgIHJldHVybiBydjsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIG91dF9kYXRhKTsKKworZXJyb3I6CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogCkBAIC05MjIsNyArOTA3LDcgQEAKIGJpbmFzY2lpX2NyY19ocXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIHVuc2lnbmVkIGludCBjcmMpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGVjMmE3ODU5MGQxOTE3MCBpbnB1dD1hZGQ4YzUzNzEyY2NjZWRhXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBjcmMgJj0gMHhmZmZmOwpAQCAtMTAwMCw3ICs5ODUsNyBAQAogICAgICB1c2luZyBieXRlLXN3YXAgaW5zdHJ1Y3Rpb25zLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgY3JjXzMyX3RhYlsyNTZdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBjcmNfMzJfdGFiWzI1Nl0gPSB7CiAweDAwMDAwMDAwVSwgMHg3NzA3MzA5NlUsIDB4ZWUwZTYxMmNVLCAweDk5MDk1MWJhVSwgMHgwNzZkYzQxOVUsCiAweDcwNmFmNDhmVSwgMHhlOTYzYTUzNVUsIDB4OWU2NDk1YTNVLCAweDBlZGI4ODMyVSwgMHg3OWRjYjhhNFUsCiAweGUwZDVlOTFlVSwgMHg5N2QyZDk4OFUsIDB4MDliNjRjMmJVLCAweDdlYjE3Y2JkVSwgMHhlN2I4MmQwN1UsCkBAIC0xMDczLDcgKzEwNTgsNyBAQAogI2lmZGVmIFVTRV9aTElCX0NSQzMyCiAvKiBUaGlzIHdhcyB0YWtlbiBmcm9tIHpsaWJtb2R1bGUuYyBQeVpsaWJfY3JjMzIgKGJ1dCBpcyBQWV9TU0laRV9UX0NMRUFOKSAqLwogewotICAgIEJ5dGUgKmJ1ZjsKKyAgICBjb25zdCBCeXRlICpidWY7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgaW50IHNpZ25lZF92YWw7CiAKQEAgLTEwODQsNyArMTA2OSw3IEBACiB9CiAjZWxzZSAgLyogVVNFX1pMSUJfQ1JDMzIgKi8KIHsgLyogQnkgSmltIEFobHN0cm9tOyBBbGwgcmlnaHRzIHRyYW5zZmVycmVkIHRvIENOUkkgKi8KLSAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICB1bnNpZ25lZCBpbnQgcmVzdWx0OwogCkBAIC0xMTY3LDcgKzExNTIsNyBAQAogYmluYXNjaWlfYTJiX2hleF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqaGV4c3RyKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBjYzFhMTM5YWYwZWVlY2IgaW5wdXQ9OWUxZTdmMmY5NGRiMjRmZF0qLwogewotICAgIGNoYXIqIGFyZ2J1ZjsKKyAgICBjb25zdCBjaGFyKiBhcmdidWY7CiAgICAgUHlfc3NpemVfdCBhcmdsZW47CiAgICAgUHlPYmplY3QgKnJldHZhbDsKICAgICBjaGFyKiByZXRidWY7CkBAIC0xMjI0LDcgKzEyMDksNyBAQAogICAgIHJldHVybiBiaW5hc2NpaV9hMmJfaGV4X2ltcGwobW9kdWxlLCBoZXhzdHIpOwogfQogCi1zdGF0aWMgaW50IHRhYmxlX2hleFsxMjhdID0geworc3RhdGljIGNvbnN0IGludCB0YWJsZV9oZXhbMTI4XSA9IHsKICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsCiAgIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLAogICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKQEAgLTEyNTUsNyArMTI0MCw4IEBACiB7CiAgICAgUHlfc3NpemVfdCBpbiwgb3V0OwogICAgIGNoYXIgY2g7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKm9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqb2RhdGE7CiAgICAgUHlfc3NpemVfdCBkYXRhbGVuID0gMDsKICAgICBQeU9iamVjdCAqcnY7CiAKQEAgLTEzNjIsMTMgKzEzNDgsMTQgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lOTg4NDQ3MmViYjFhOTRjIGlucHV0PTdmMmE5YWFhMDA4ZTkyYjJdKi8KIHsKICAgICBQeV9zc2l6ZV90IGluLCBvdXQ7Ci0gICAgdW5zaWduZWQgY2hhciAqZGF0YWJ1ZiwgKm9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGFidWY7CisgICAgdW5zaWduZWQgY2hhciAqb2RhdGE7CiAgICAgUHlfc3NpemVfdCBkYXRhbGVuID0gMCwgb2RhdGFsZW4gPSAwOwogICAgIFB5T2JqZWN0ICpydjsKICAgICB1bnNpZ25lZCBpbnQgbGluZWxlbiA9IDA7CiAgICAgdW5zaWduZWQgY2hhciBjaDsKICAgICBpbnQgY3JsZiA9IDA7Ci0gICAgdW5zaWduZWQgY2hhciAqcDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwOwogCiAgICAgZGF0YWJ1ZiA9IGRhdGEtPmJ1ZjsKICAgICBkYXRhbGVuID0gZGF0YS0+bGVuOwpAQCAtMTM3Nyw3ICsxMzY0LDcgQEAKICAgICAvKiBYWFg6IHRoaXMgZnVuY3Rpb24gaGFzIHRoZSBzaWRlIGVmZmVjdCBvZiBjb252ZXJ0aW5nIGFsbCBvZgogICAgICAqIHRoZSBlbmQgb2YgbGluZXMgdG8gYmUgdGhlIHNhbWUgZGVwZW5kaW5nIG9uIHRoaXMgZGV0ZWN0aW9uCiAgICAgICogaGVyZSAqLwotICAgIHAgPSAodW5zaWduZWQgY2hhciAqKSBtZW1jaHIoZGF0YWJ1ZiwgJ1xuJywgZGF0YWxlbik7CisgICAgcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIG1lbWNocihkYXRhYnVmLCAnXG4nLCBkYXRhbGVuKTsKICAgICBpZiAoKHAgIT0gTlVMTCkgJiYgKHAgPiBkYXRhYnVmKSAmJiAoKihwLTEpID09ICdccicpKQogICAgICAgICBjcmxmID0gMTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaCBiL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgKaW5kZXggOGE0N2ZmOC4uODRmZmQxMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaAorKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oCkBAIC0xNCw3ICsxNCw3IEBACiAicmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVW5pY29kZUVuY29kZUVycm9ycy4iKTsKIAogI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFQ09ERUNfRU5DT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfX2RvY19ffSwKKyAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlLCBNRVRIX0ZBU1RDQUxMLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX2ltcGwoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsCkBAIC0yMiwxNiArMjIsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3x6OmVuY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlucHV0OwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHo6ZW5jb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaW5wdXQsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9pbXBsKHNlbGYsIGlucHV0LCBlcnJvcnMpOwogCiBleGl0OgpAQCAtNTAsNyArNTIsNyBAQAogImNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGlzIGFibGUgdG8gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuXCIiKTsKIAogI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFQ09ERUNfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX2ltcGwoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsCkBAIC01OCwyMiArNjAsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8ejpkZWNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBpbnB1dCA9IHtOVUxMLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8ejpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZpbnB1dCwgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX2ltcGwoc2VsZiwgJmlucHV0LCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGlucHV0ICovCi0gICAgaWYgKGlucHV0Lm9iaikKKyAgICBpZiAoaW5wdXQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaW5wdXQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04NCw3ICs4OSw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxFTkNPREVSX0VOQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfX2RvY19ffSwKKyAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZSwgTUVUSF9GQVNUQ0FMTCwgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX2ltcGwoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmLApAQCAtOTIsMTYgKzk3LDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98aTplbmNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppbnB1dDsKICAgICBpbnQgZmluYWwgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xpOmVuY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlucHV0LCAmZmluYWwpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaW5wdXQsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9pbXBsKHNlbGYsIGlucHV0LCBmaW5hbCk7CiAKIGV4aXQ6CkBAIC0xMzEsNyArMTM4LDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTERFQ09ERVJfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYsCkBAIC0xMzksMjIgKzE0NiwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGlucHV0ID0ge05VTEwsIE5VTEx9OwogICAgIGludCBmaW5hbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxpOmRlY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlucHV0LCAmZmluYWwpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaW5wdXQsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9pbXBsKHNlbGYsICZpbnB1dCwgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGlucHV0ICovCi0gICAgaWYgKGlucHV0Lm9iaikKKyAgICBpZiAoaW5wdXQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaW5wdXQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xOTYsOCArMjA2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmc2l6ZW9iaikpCisgICAgICAgICZzaXplb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZF9pbXBsKHNlbGYsIHNpemVvYmopOwogCiBleGl0OgpAQCAtMjI0LDggKzIzNSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZzaXplb2JqKSkKKyAgICAgICAgJnNpemVvYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemVvYmopOwogCiBleGl0OgpAQCAtMjUyLDggKzI2NCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZXMiLAogICAgICAgICAwLCAxLAotICAgICAgICAmc2l6ZWhpbnRvYmopKQorICAgICAgICAmc2l6ZWhpbnRvYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZXNfaW1wbChzZWxmLCBzaXplaGludG9iaik7CiAKIGV4aXQ6CkBAIC0zMTcsNCArMzMwLDQgQEAKIAogI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfX19DUkVBVEVfQ09ERUNfTUVUSE9EREVGICAgIFwKICAgICB7Il9fY3JlYXRlX2NvZGVjIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlYywgTUVUSF9PLCBfbXVsdGlieXRlY29kZWNfX19jcmVhdGVfY29kZWNfX2RvY19ffSwKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZWJiMjFlMThjMzA0M2QxIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMzRiOWUzNmNiOTg1OTM5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19iejJtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKaW5kZXggM2VkODMwMy4uMWNhODEwYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmgKQEAgLTI1LDE0ICsyNSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgwLDExICs4MiwxMyBAQAogICAgIGludCBjb21wcmVzc2xldmVsID0gOTsKIAogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmQloyQ29tcHJlc3Nvcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkNvbXByZXNzb3IiLCBrd2FyZ3MpKQorICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkNvbXByZXNzb3IiLCBrd2FyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpCWjJDb21wcmVzc29yIiwKLSAgICAgICAgJmNvbXByZXNzbGV2ZWwpKQorICAgICAgICAmY29tcHJlc3NsZXZlbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkNvbXByZXNzb3JfX19pbml0X19faW1wbCgoQloyQ29tcHJlc3NvciAqKXNlbGYsIGNvbXByZXNzbGV2ZWwpOwogCiBleGl0OgpAQCAtMTExLDI5ICsxMTUsMzIgQEAKICJ0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOwogCiAjZGVmaW5lIF9CWjJfQloyREVDT01QUkVTU09SX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9GQVNUQ0FMTCwgX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxuOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsCi0gICAgICAgICZkYXRhLCAmbWF4X2xlbmd0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmbWF4X2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE1NSwxNCArMTYyLDE2IEBACiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwogCiAgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZCWjJEZWNvbXByZXNzb3JfVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob1Bvc2l0aW9uYWwoIkJaMkRlY29tcHJlc3NvciIsIGFyZ3MpKQorICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiQloyRGVjb21wcmVzc29yIiwgYXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJkJaMkRlY29tcHJlc3Nvcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkRlY29tcHJlc3NvciIsIGt3YXJncykpCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyRGVjb21wcmVzc29yIiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoKEJaMkRlY29tcHJlc3NvciAqKXNlbGYpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVmMjliNzZiMzMxNGZjNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2U1N2FmMGIzNjhkM2U1NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fY29kZWNzbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCmluZGV4IGFmMDZjNmQuLjA1NjI4N2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oCkBAIC0zMyw4ICszMyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwIiwgJmVuY29kaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwIiwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbG9va3VwX2ltcGwobW9kdWxlLCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC01NCwyNCArNTUsMjYgQEAKICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLiIpOwogCiAjZGVmaW5lIF9DT0RFQ1NfRU5DT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfY29kZWNzX2VuY29kZV9fZG9jX199LAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZW5jb2RlLCBNRVRIX0ZBU1RDQUxMLCBfY29kZWNzX2VuY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9jb2RlY3NfZW5jb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2NvZGVjc19lbmNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xzczplbmNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNzOmVuY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZW5jb2RlX2ltcGwobW9kdWxlLCBvYmosIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtOTEsMjQgKzk0LDI2IEBACiAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKIAogI2RlZmluZSBfQ09ERUNTX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2NvZGVjc19kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgX2NvZGVjc19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfZGVjb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fY29kZWNzX2RlY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19jb2RlY3NfZGVjb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsib2JqIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c3M6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqb2JqOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzczpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2RlY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTEzMyw4ICsxMzgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOl9mb3JnZXRfY29kZWMiLCAmZW5jb2RpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpfZm9yZ2V0X2NvZGVjIiwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfX2ZvcmdldF9jb2RlY19pbXBsKG1vZHVsZSwgZW5jb2RpbmcpOwogCiBleGl0OgpAQCAtMTYxLDE0ICsxNjcsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OmVzY2FwZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZXNjYXBlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTkzLDggKzIwMSw5IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8ejplc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgJlB5Qnl0ZXNfVHlwZSwgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmUHlCeXRlc19UeXBlLCAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VzY2FwZV9lbmNvZGVfaW1wbChtb2R1bGUsIGRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0yMjEsOCArMjMwLDkgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9kZWNvZGUiLAotICAgICAgICAmb2JqLCAmZXJyb3JzKSkKKyAgICAgICAgJm9iaiwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX2ltcGwobW9kdWxlLCBvYmosIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0yNTAsMTQgKzI2MCwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl83X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzdfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjgzLDE0ICsyOTUsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfOF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl84X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMxNiwxNCArMzMwLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM0OSwxNCArMzY1LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2xlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2xlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM4MiwxNCArNDAwLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2JlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2JlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQxNywxNCArNDM3LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8xNl9leF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGJ5dGVvcmRlciwgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ1MCwxNCArNDcyLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ4MywxNCArNTA3LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2xlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTUxNiwxNCArNTQyLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2JlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU1MSwxNCArNTc5LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8zMl9leF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9leF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGJ5dGVvcmRlciwgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU4MywxNCArNjEzLDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejp1bmljb2RlX2VzY2FwZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02MTUsMTQgKzY0NywxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02NDcsMTQgKzY4MSwxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHo6bGF0aW5fMV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbGF0aW5fMV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTY3OSwxNCArNzE1LDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ejphc2NpaV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfYXNjaWlfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03MTIsMTkgKzc1MCwyMSBAQAogICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ek86Y2hhcm1hcF9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJm1hcHBpbmcpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJm1hcHBpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgbWFwcGluZyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jaWYgZGVmaW5lZChIQVZFX01CQ1MpCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiBQeURvY19TVFJWQVIoX2NvZGVjc19tYmNzX2RlY29kZV9fZG9jX18sCiAibWJjc19kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgpAQCAtNzQ3LDIxICs3ODcsNjIgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTptYmNzX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbWJjc19kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKLSNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfY29kZWNzX29lbV9kZWNvZGVfX2RvY19fLAorIm9lbV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7Im9lbV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19vZW1fZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3Nfb2VtX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZGVjb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZGVjb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6b2VtX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19vZW1fZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGVfX2RvY19fLAogImNvZGVfcGFnZV9kZWNvZGUoJG1vZHVsZSwgY29kZXBhZ2UsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKQEAgLTc4NSwxOSArODY2LDIxIEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqfHppOmNvZGVfcGFnZV9kZWNvZGUiLAotICAgICAgICAmY29kZXBhZ2UsICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmY29kZXBhZ2UsICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX2ltcGwobW9kdWxlLCBjb2RlcGFnZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAogUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGVfX2RvY19fLAogInJlYWRidWZmZXJfZW5jb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgpAQCAtODE5LDE0ICs5MDIsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnJlYWRidWZmZXJfZW5jb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04NTEsOCArOTM2LDkgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLAotICAgICAgICAmb2JqLCAmZXJyb3JzKSkKKyAgICAgICAgJm9iaiwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZW5jb2RlX2ltcGwobW9kdWxlLCBvYmosIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC04NzgsOSArOTY0LDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzdfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzdfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl83X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtOTA2LDkgKzk5MywxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl84X2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl84X2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfOF9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTkzNSw5ICsxMDIzLDEwIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBpbnQgYnl0ZW9yZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6aTp1dGZfMTZfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHppOnV0Zl8xNl9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMsIGJ5dGVvcmRlcik7CiAKIGV4aXQ6CkBAIC05NjMsOSArMTA1MiwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8xNl9sZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfMTZfbGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTk5MSw5ICsxMDgxLDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzE2X2JlX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl8xNl9iZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2JlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTAyMCw5ICsxMTExLDEwIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBpbnQgYnl0ZW9yZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6aTp1dGZfMzJfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHppOnV0Zl8zMl9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMsIGJ5dGVvcmRlcik7CiAKIGV4aXQ6CkBAIC0xMDQ4LDkgKzExNDAsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfbGVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzMyX2xlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMDc2LDkgKzExNjksMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfYmVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzMyX2JlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTA0LDkgKzExOTgsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2VzY2FwZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1bmljb2RlX2VzY2FwZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTMyLDkgKzEyMjcsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejpyYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTYwLDkgKzEyNTYsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejpsYXRpbl8xX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OmxhdGluXzFfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xhdGluXzFfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMTg4LDkgKzEyODUsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejphc2NpaV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejphc2NpaV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfYXNjaWlfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMjE3LDkgKzEzMTUsMTAgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6TzpjaGFybWFwX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMsICZtYXBwaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ek86Y2hhcm1hcF9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmbWFwcGluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgbWFwcGluZyk7CiAKIGV4aXQ6CkBAIC0xMjQzLDE1ICsxMzQyLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1hcDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpjaGFybWFwX2J1aWxkIiwgJm1hcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmNoYXJtYXBfYnVpbGQiLCAmbWFwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY2hhcm1hcF9idWlsZF9pbXBsKG1vZHVsZSwgbWFwKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jaWYgZGVmaW5lZChIQVZFX01CQ1MpCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiBQeURvY19TVFJWQVIoX2NvZGVjc19tYmNzX2VuY29kZV9fZG9jX18sCiAibWJjc19lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKQEAgLTEyNzEsMTggKzEzNzEsNTEgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejptYmNzX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6Om1iY3NfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX21iY3NfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3Nfb2VtX2VuY29kZV9fZG9jX18sCisib2VtX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7Im9lbV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19vZW1fZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3Nfb2VtX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3Nfb2VtX2VuY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejpvZW1fZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX29lbV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiBQeURvY19TVFJWQVIoX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlX19kb2NfXywKICJjb2RlX3BhZ2VfZW5jb2RlKCRtb2R1bGUsIGNvZGVfcGFnZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKQEAgLTEzMDQsMTYgKzE0MzcsMTcgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPfHo6Y29kZV9wYWdlX2VuY29kZSIsCi0gICAgICAgICZjb2RlX3BhZ2UsICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaVV8ejpjb2RlX3BhZ2VfZW5jb2RlIiwKKyAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChtb2R1bGUsIGNvZGVfcGFnZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX19kb2NfXywKICJyZWdpc3Rlcl9lcnJvcigkbW9kdWxlLCBlcnJvcnMsIGhhbmRsZXIsIC8pXG4iCkBAIC0xMzQwLDggKzE0NzQsOSBAQAogICAgIFB5T2JqZWN0ICpoYW5kbGVyOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTzpyZWdpc3Rlcl9lcnJvciIsCi0gICAgICAgICZlcnJvcnMsICZoYW5kbGVyKSkKKyAgICAgICAgJmVycm9ycywgJmhhbmRsZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9pbXBsKG1vZHVsZSwgZXJyb3JzLCBoYW5kbGVyKTsKIAogZXhpdDoKQEAgLTEzNjksOCArMTUwNCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXBfZXJyb3IiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmxvb2t1cF9lcnJvciIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbG9va3VwX2Vycm9yX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTEzODEsNiArMTUxNywxMCBAQAogICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRikgKi8KIAorI2lmbmRlZiBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19PRU1fREVDT0RFX01FVEhPRERFRikgKi8KKwogI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRikgKi8KQEAgLTEzODksNyArMTUyOSwxMSBAQAogICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRikgKi8KIAorI2lmbmRlZiBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19PRU1fRU5DT0RFX01FVEhPRERFRikgKi8KKwogI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MmZlZDk0ZTJhYjc2NWJhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZDZhZmNhYmRlMTBlZDc5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCmluZGV4IGEzYzM3MWMuLjQxMmM2ZmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2NyeXB0bW9kdWxlLmMuaApAQCAtMjcsMTEgKzI3LDEyIEBACiAgICAgY29uc3QgY2hhciAqc2FsdDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3M6Y3J5cHQiLAotICAgICAgICAmd29yZCwgJnNhbHQpKQorICAgICAgICAmd29yZCwgJnNhbHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY3J5cHRfY3J5cHRfaW1wbChtb2R1bGUsIHdvcmQsIHNhbHQpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTA0OTNhOTY5MTUzNzY5MCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGRmYzg4MjY0ZTY2MmRmNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oCmluZGV4IDVlMTE3NDIuLjYyZmYxYzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oCkBAIC00MCwyMiArNDAsMjYgQEAKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86YWRkY2giLCAmY2gpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmFkZGNoIiwgJmNoKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sOmFkZGNoIiwgJmNoLCAmYXR0cikpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sOmFkZGNoIiwgJmNoLCAmYXR0cikpIHsKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTzphZGRjaCIsICZ5LCAmeCwgJmNoKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPOmFkZGNoIiwgJnksICZ4LCAmY2gpKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZ3JvdXBfbGVmdF8xID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpT2w6YWRkY2giLCAmeSwgJngsICZjaCwgJmF0dHIpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU9sOmFkZGNoIiwgJnksICZ4LCAmY2gsICZhdHRyKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwogICAgICAgICAgICAgZ3JvdXBfbGVmdF8xID0gMTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjgsNCArNzIsNCBAQAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MmIxZTcwOTU3N2YzZWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzZmZjNWY4ZDc5Y2JmYmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKaW5kZXggNjg4YzkwMy4uZGNiOTkyYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oCkBAIC0xNCwyNCArMTQsMjYgQEAKICJJZiBubyB0eiBpcyBzcGVjaWZpZWQsIHVzZXMgbG9jYWwgdGltZXpvbmUuIik7CiAKICNkZWZpbmUgREFURVRJTUVfREFURVRJTUVfTk9XX01FVEhPRERFRiAgICBcCi0gICAgeyJub3ciLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfZGF0ZXRpbWVfbm93LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU3xNRVRIX0NMQVNTLCBkYXRldGltZV9kYXRldGltZV9ub3dfX2RvY19ffSwKKyAgICB7Im5vdyIsIChQeUNGdW5jdGlvbilkYXRldGltZV9kYXRldGltZV9ub3csIE1FVEhfRkFTVENBTEx8TUVUSF9DTEFTUywgZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp0eik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9kYXRldGltZV9ub3coUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2RhdGV0aW1lX2RhdGV0aW1lX25vdyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0eiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86bm93IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdHogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86bm93IiwgX2tleXdvcmRzLAotICAgICAgICAmdHopKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdHopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X2ltcGwodHlwZSwgdHopOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2Y0NWM2NzBkNmU0OTUzYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGFhYWMwNzA1YWRkNjFjYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oCmluZGV4IDQ5Y2JjZWIuLjA2Y2Y3ZTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oCkBAIC02MCw4ICs2MCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI3xPOmdldCIsCi0gICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZGJtX2RibV9nZXRfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtOTMsOCArOTQsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpzZXRkZWZhdWx0IiwKLSAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9kYm1fZGJtX3NldGRlZmF1bHRfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMTMxLDExICsxMzMsMTIgQEAKICAgICBpbnQgbW9kZSA9IDQzODsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKLSAgICAgICAgJmZpbGVuYW1lLCAmZmxhZ3MsICZtb2RlKSkKKyAgICAgICAgJmZpbGVuYW1lLCAmZmxhZ3MsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGRibW9wZW5faW1wbChtb2R1bGUsIGZpbGVuYW1lLCBmbGFncywgbW9kZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZmYxMmYxNjhjZGY4YjQzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OWFkZjk2NmVmMDQ3NWZmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCmluZGV4IDg2YjRjNGMuLjFiMzA5Y2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2VsZW1lbnR0cmVlLmMuaApAQCAtMTksOCArMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITphcHBlbmQiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITphcHBlbmQiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfaW1wbChzZWxmLCBzdWJlbGVtZW50KTsKIAogZXhpdDoKQEAgLTg3LDggKzg4LDkgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zaXplb2ZfX19pbXBsKHNlbGYpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMzQsMjMgKzEzNiwyNSBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORF9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kLCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TzpmaW5kIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86ZmluZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKIAogZXhpdDoKQEAgLTE2Myw3ICsxNjcsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORFRFWFRfTUVUSE9EREVGICAgIFwKLSAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfX2RvY19ffSwKKyAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKQEAgLTE3MSwxNyArMTc1LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE9POmZpbmR0ZXh0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPTzpmaW5kdGV4dCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChzZWxmLCBwYXRoLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzKTsKIAogZXhpdDoKQEAgLTE5NCwyMyArMjAwLDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EQUxMX01FVEhPRERFRiAgICBcCi0gICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX19kb2NfX30sCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOmZpbmRhbGwiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXRoOwogICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzpmaW5kYWxsIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOwogCiBleGl0OgpAQCAtMjIzLDIzICsyMzEsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJGSU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJpdGVyZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX19kb2NfX30sCisgICAgeyJpdGVyZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZCwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TzppdGVyZmluZCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdGg7CiAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOml0ZXJmaW5kIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKIAogZXhpdDoKQEAgLTI1MiwyMyArMjYyLDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfX2RvY19ffSwKKyAgICB7ImdldCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2dldChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZXkiLCAiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TzpnZXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICprZXk7CiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmdldCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMjk4LDIxICszMTAsMjMgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJfTUVUSE9EREVGICAgIFwKLSAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19ffSwKKyAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InRhZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InRhZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOml0ZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0YWcgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86aXRlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJnRhZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0YWcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9pbXBsKHNlbGYsIHRhZyk7CiAKIGV4aXQ6CkBAIC0zNTYsOCArMzcwLDkgQEAKICAgICBQeU9iamVjdCAqc3ViZWxlbWVudDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk8hOmluc2VydCIsCi0gICAgICAgICZpbmRleCwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKQorICAgICAgICAmaW5kZXgsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydF9pbXBsKHNlbGYsIGluZGV4LCBzdWJlbGVtZW50KTsKIAogZXhpdDoKQEAgLTQxOSw4ICs0MzQsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibWFrZWVsZW1lbnQiLAogICAgICAgICAyLCAyLAotICAgICAgICAmdGFnLCAmYXR0cmliKSkKKyAgICAgICAgJnRhZywgJmF0dHJpYikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9tYWtlZWxlbWVudF9pbXBsKHNlbGYsIHRhZywgYXR0cmliKTsKIAogZXhpdDoKQEAgLTQ0NCw4ICs0NjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITpyZW1vdmUiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITpyZW1vdmUiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9yZW1vdmVfaW1wbChzZWxmLCBzdWJlbGVtZW50KTsKIAogZXhpdDoKQEAgLTQ3Myw4ICs0OTAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0IiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJmtleSwgJnZhbHVlKSkKKyAgICAgICAgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X3NldF9pbXBsKHNlbGYsIGtleSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDg5LDEyICs1MDcsMTQgQEAKIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZWxlbWVudF9mYWN0b3J5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZWxlbWVudF9mYWN0b3J5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86VHJlZUJ1aWxkZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86VHJlZUJ1aWxkZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZlbGVtZW50X2ZhY3RvcnkpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmVsZW1lbnRfZmFjdG9yeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfX19pbml0X19faW1wbCgoVHJlZUJ1aWxkZXJPYmplY3QgKilzZWxmLCBlbGVtZW50X2ZhY3RvcnkpOwogCiBleGl0OgpAQCAtNTU1LDggKzU3NSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdGFydCIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZ0YWcsICZhdHRycykpCisgICAgICAgICZ0YWcsICZhdHRycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfaW1wbChzZWxmLCB0YWcsIGF0dHJzKTsKIAogZXhpdDoKQEAgLTU3MSwxNCArNTkyLDE2IEBACiBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9PejpYTUxQYXJzZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpodG1sID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T096OlhNTFBhcnNlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmh0bWwsICZ0YXJnZXQsICZlbmNvZGluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmaHRtbCwgJnRhcmdldCwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX19pbml0X19faW1wbCgoWE1MUGFyc2VyT2JqZWN0ICopc2VsZiwgaHRtbCwgdGFyZ2V0LCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC02NDAsOCArNjYzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRvY3R5cGUiLAogICAgICAgICAzLCAzLAotICAgICAgICAmbmFtZSwgJnB1YmlkLCAmc3lzdGVtKSkKKyAgICAgICAgJm5hbWUsICZwdWJpZCwgJnN5c3RlbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfaW1wbChzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtKTsKIAogZXhpdDoKQEAgLTY2OCwxMiArNjkyLDE0IEBACiAgICAgUHlPYmplY3QgKmV2ZW50c19xdWV1ZTsKICAgICBQeU9iamVjdCAqZXZlbnRzX3RvX3JlcG9ydCA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86X3NldGV2ZW50cyIsCi0gICAgICAgICZQeUxpc3RfVHlwZSwgJmV2ZW50c19xdWV1ZSwgJmV2ZW50c190b19yZXBvcnQpKQorICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIl9zZXRldmVudHMiLAorICAgICAgICAxLCAyLAorICAgICAgICAmZXZlbnRzX3F1ZXVlLCAmZXZlbnRzX3RvX3JlcG9ydCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfaW1wbChzZWxmLCBldmVudHNfcXVldWUsIGV2ZW50c190b19yZXBvcnQpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjViOGJmN2U3ZjIxNTFjYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjRhNTcxYTk4Y2VkMzE2MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmgKaW5kZXggMmQ4N2NmYy4uZmRkNTg5YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2dkYm1tb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaApAQCAtMjMsOCArMjMsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZ2V0IiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX2dldF9pbXBsKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01Myw4ICs1NCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRkZWZhdWx0IiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX3NldGRlZmF1bHRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMTQ3LDggKzE0OSw5IEBACiAgICAgY29uc3QgY2hhciAqa2V5OwogICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bmV4dGtleSIsICZrZXksICZrZXlfbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOm5leHRrZXkiLCAma2V5LCAma2V5X2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX25leHRrZXlfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgpOwogCiBleGl0OgpAQCAtMjQyLDExICsyNDUsMTIgQEAKICAgICBpbnQgbW9kZSA9IDQzODsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKLSAgICAgICAgJm5hbWUsICZmbGFncywgJm1vZGUpKQorICAgICAgICAmbmFtZSwgJmZsYWdzLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkYm1vcGVuX2ltcGwobW9kdWxlLCBuYW1lLCBmbGFncywgbW9kZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YWM3YTg5ODU4YTk3NjVmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZDBmNWQ0ZTNkNzliODBjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19oYXNob3BlbnNzbC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9faGFzaG9wZW5zc2wuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NDUzNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9faGFzaG9wZW5zc2wuYy5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+IDB4MTAxMDAwMDBMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0NSWVBUKSAmJiAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikpCisKK1B5RG9jX1NUUlZBUihfaGFzaGxpYl9zY3J5cHRfX2RvY19fLAorInNjcnlwdCgkbW9kdWxlLCAvLCBwYXNzd29yZCwgKiwgc2FsdD1Ob25lLCBuPU5vbmUsIHI9Tm9uZSwgcD1Ob25lLFxuIgorIiAgICAgICBtYXhtZW09MCwgZGtsZW49NjQpXG4iCisiLS1cbiIKKyJcbiIKKyJzY3J5cHQgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uIik7CisKKyNkZWZpbmUgX0hBU0hMSUJfU0NSWVBUX01FVEhPRERFRiAgICBcCisgICAgeyJzY3J5cHQiLCAoUHlDRnVuY3Rpb24pX2hhc2hsaWJfc2NyeXB0LCBNRVRIX0ZBU1RDQUxMLCBfaGFzaGxpYl9zY3J5cHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19oYXNobGliX3NjcnlwdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqcGFzc3dvcmQsIFB5X2J1ZmZlciAqc2FsdCwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuX29iaiwgUHlPYmplY3QgKnJfb2JqLCBQeU9iamVjdCAqcF9vYmosCisgICAgICAgICAgICAgICAgICAgICBsb25nIG1heG1lbSwgbG9uZyBka2xlbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaGFzaGxpYl9zY3J5cHQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXNzd29yZCIsICJzYWx0IiwgIm4iLCAiciIsICJwIiwgIm1heG1lbSIsICJka2xlbiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfCR5Kk8hTyFPIWxsOnNjcnlwdCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlfYnVmZmVyIHBhc3N3b3JkID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBzYWx0ID0ge05VTEwsIE5VTEx9OworICAgIFB5T2JqZWN0ICpuX29iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnJfb2JqID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcF9vYmogPSBQeV9Ob25lOworICAgIGxvbmcgbWF4bWVtID0gMDsKKyAgICBsb25nIGRrbGVuID0gNjQ7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhc3N3b3JkLCAmc2FsdCwgJlB5TG9uZ19UeXBlLCAmbl9vYmosICZQeUxvbmdfVHlwZSwgJnJfb2JqLCAmUHlMb25nX1R5cGUsICZwX29iaiwgJm1heG1lbSwgJmRrbGVuKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9oYXNobGliX3NjcnlwdF9pbXBsKG1vZHVsZSwgJnBhc3N3b3JkLCAmc2FsdCwgbl9vYmosIHJfb2JqLCBwX29iaiwgbWF4bWVtLCBka2xlbik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGFzc3dvcmQgKi8KKyAgICBpZiAocGFzc3dvcmQub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFzc3dvcmQpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBzYWx0ICovCisgICAgaWYgKHNhbHQub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2FsdCk7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID4gMHgxMDEwMDAwMEwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TQ1JZUFQpICYmICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKSkgKi8KKworI2lmbmRlZiBfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0hBU0hMSUJfU0NSWVBUX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMThjZDcwMzZmYTBmYjUyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaAppbmRleCBmOGQzOGVhLi45ZTYwNzU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oCkBAIC0yNSwxNCArMjUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTc5LDI5ICs4MSwzMiBAQAogInRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuIik7CiAKICNkZWZpbmUgX0xaTUFfTFpNQURFQ09NUFJFU1NPUl9ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzKERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGggPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhLCBtYXhfbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMzcsMTQgKzE0MiwxNiBAQAogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZm9ybWF0IiwgIm1lbWxpbWl0IiwgImZpbHRlcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmb3JtYXQiLCAibWVtbGltaXQiLCAiZmlsdGVycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpT086TFpNQURlY29tcHJlc3NvciIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZvcm1hdCA9IEZPUk1BVF9BVVRPOwogICAgIFB5T2JqZWN0ICptZW1saW1pdCA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKmZpbHRlcnMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlPTzpMWk1BRGVjb21wcmVzc29yIiwgX2tleXdvcmRzLAotICAgICAgICAmZm9ybWF0LCAmbWVtbGltaXQsICZmaWx0ZXJzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZmb3JtYXQsICZtZW1saW1pdCwgJmZpbHRlcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChEZWNvbXByZXNzb3IgKilzZWxmLCBmb3JtYXQsIG1lbWxpbWl0LCBmaWx0ZXJzKTsKIAogZXhpdDoKQEAgLTE3MSw4ICsxNzgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaGVja19pZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc19jaGVja19zdXBwb3J0ZWQiLCAmY2hlY2tfaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc19jaGVja19zdXBwb3J0ZWQiLCAmY2hlY2tfaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfaXNfY2hlY2tfc3VwcG9ydGVkX2ltcGwobW9kdWxlLCBjaGVja19pZCk7CiAKIGV4aXQ6CkBAIC0xOTksOCArMjA3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBsem1hX2ZpbHRlciBmaWx0ZXIgPSB7TFpNQV9WTElfVU5LTk9XTiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCBsem1hX2ZpbHRlcl9jb252ZXJ0ZXIsICZmaWx0ZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIGx6bWFfZmlsdGVyX2NvbnZlcnRlciwgJmZpbHRlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwobW9kdWxlLCBmaWx0ZXIpOwogCiBleGl0OgpAQCAtMjM0LDE1ICsyNDMsMTcgQEAKICAgICBQeV9idWZmZXIgZW5jb2RlZF9wcm9wcyA9IHtOVUxMLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ5KjpfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwKLSAgICAgICAgbHptYV92bGlfY29udmVydGVyLCAmZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcykpCisgICAgICAgIGx6bWFfdmxpX2NvbnZlcnRlciwgJmZpbHRlcl9pZCwgJmVuY29kZWRfcHJvcHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKG1vZHVsZSwgZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZW5jb2RlZF9wcm9wcyAqLwotICAgIGlmIChlbmNvZGVkX3Byb3BzLm9iaikKKyAgICBpZiAoZW5jb2RlZF9wcm9wcy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZlbmNvZGVkX3Byb3BzKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZhZGEwNjAyMGZkMzE4Y2MgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYyN2FiYWU0NjAxMjI3MDYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX29wY29kZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaAppbmRleCBhNWY2NDQyLi41MTNjYmZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaApAQCAtMjMsMTQgKzIzLDE2IEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml8TzpzdGFja19lZmZlY3QiLAotICAgICAgICAmb3Bjb2RlLCAmb3BhcmcpKQorICAgICAgICAmb3Bjb2RlLCAmb3BhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF9vcGNvZGVfc3RhY2tfZWZmZWN0X2ltcGwobW9kdWxlLCBvcGNvZGUsIG9wYXJnKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTg0ZDZkZTE0MDMwM2QxMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGQ5MWM2YTc2NTA5Nzg1MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaCBiL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCmluZGV4IGJkMTJkMmEuLjlhZDRjMzcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oCkBAIC01Myw4ICs1Myw5IEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9waWNrbGVfUGlja2xlcl9fX3NpemVvZl9fX2ltcGwoc2VsZik7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTkyLDE0ICs5MywxNiBAQAogX3BpY2tsZV9QaWNrbGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98T3A6UGlja2xlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmZpbGU7CiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPcDpQaWNrbGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmZpbGUsICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKChQaWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKIAogZXhpdDoKQEAgLTIxMiw4ICsyMTUsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZmluZF9jbGFzcyIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZtb2R1bGVfbmFtZSwgJmdsb2JhbF9uYW1lKSkKKyAgICAgICAgJm1vZHVsZV9uYW1lLCAmZ2xvYmFsX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfZmluZF9jbGFzc19pbXBsKHNlbGYsIG1vZHVsZV9uYW1lLCBnbG9iYWxfbmFtZSk7CiAKIGV4aXQ6CkBAIC0yMzksOCArMjQzLDkgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfX19zaXplb2ZfX19pbXBsKHNlbGYpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yODEsMTUgKzI4NiwxNyBAQAogX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAiZml4X2ltcG9ydHMiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfCRwc3M6VW5waWNrbGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98JHBzczpVbnBpY2tsZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X19faW1wbCgoVW5waWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgZml4X2ltcG9ydHMsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMzc3LDI1ICszODQsMjcgQEAKICIyLCBzbyB0aGF0IHRoZSBwaWNrbGUgZGF0YSBzdHJlYW0gaXMgcmVhZGFibGUgd2l0aCBQeXRob24gMi4iKTsKIAogI2RlZmluZSBfUElDS0xFX0RVTVBfTUVUSE9EREVGICAgIFwKLSAgICB7ImR1bXAiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9kdW1wX19kb2NfX30sCisgICAgeyJkdW1wIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfZHVtcCwgTUVUSF9GQVNUQ0FMTCwgX3BpY2tsZV9kdW1wX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2R1bXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZmlsZSwKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19waWNrbGVfZHVtcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsib2JqIiwgImZpbGUiLCAicHJvdG9jb2wiLCAiZml4X2ltcG9ydHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZmlsZSIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PfE8kcDpkdW1wIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIFB5T2JqZWN0ICpwcm90b2NvbCA9IE5VTEw7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfE8kcDpkdW1wIiwgX2tleXdvcmRzLAotICAgICAgICAmb2JqLCAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmb2JqLCAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9kdW1wX2ltcGwobW9kdWxlLCBvYmosIGZpbGUsIHByb3RvY29sLCBmaXhfaW1wb3J0cyk7CiAKIGV4aXQ6CkBAIC00MjEsMjQgKzQzMCwyNiBAQAogIlB5dGhvbiAyLCBzbyB0aGF0IHRoZSBwaWNrbGUgZGF0YSBzdHJlYW0gaXMgcmVhZGFibGUgd2l0aCBQeXRob24gMi4iKTsKIAogI2RlZmluZSBfUElDS0xFX0RVTVBTX01FVEhPRERFRiAgICBcCi0gICAgeyJkdW1wcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2R1bXBzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9kdW1wc19fZG9jX199LAorICAgIHsiZHVtcHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wcywgTUVUSF9GQVNUQ0FMTCwgX3BpY2tsZV9kdW1wc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9kdW1wc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpwcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICBpbnQgZml4X2ltcG9ydHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9kdW1wcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19waWNrbGVfZHVtcHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im9iaiIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TyRwOmR1bXBzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5T2JqZWN0ICpwcm90b2NvbCA9IE5VTEw7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TyRwOmR1bXBzIiwgX2tleXdvcmRzLAotICAgICAgICAmb2JqLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvYmosICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfZHVtcHNfaW1wbChtb2R1bGUsIG9iaiwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKIAogZXhpdDoKQEAgLTQ3NSwyNSArNDg2LDI3IEBACiAic3RyaW5nIGluc3RhbmNlcyBhcyBieXRlcyBvYmplY3RzLiIpOwogCiAjZGVmaW5lIF9QSUNLTEVfTE9BRF9NRVRIT0RERUYgICAgXAotICAgIHsibG9hZCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2xvYWRfX2RvY19ffSwKKyAgICB7ImxvYWQiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkLCBNRVRIX0ZBU1RDQUxMLCBfcGlja2xlX2xvYWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9waWNrbGVfbG9hZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19waWNrbGVfbG9hZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98JHBzczpsb2FkIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98JHBzczpsb2FkIiwgX2tleXdvcmRzLAotICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9sb2FkX2ltcGwobW9kdWxlLCBmaWxlLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC01MjEsMjggKzUzNCwzMCBAQAogInN0cmluZyBpbnN0YW5jZXMgYXMgYnl0ZXMgb2JqZWN0cy4iKTsKIAogI2RlZmluZSBfUElDS0xFX0xPQURTX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWRzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9sb2Fkc19fZG9jX199LAorICAgIHsibG9hZHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkcywgTUVUSF9GQVNUQ0FMTCwgX3BpY2tsZV9sb2Fkc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2Fkc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZml4X2ltcG9ydHMsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2xvYWRzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3BpY2tsZV9sb2FkcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98JHBzczpsb2FkcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmRhdGE7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9ICJBU0NJSSI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gInN0cmljdCI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6bG9hZHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZkYXRhLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRzX2ltcGwobW9kdWxlLCBkYXRhLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MzY1N2U1NWQ2YTc0OGFmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MmJlMTM3YjNjMDljYjlmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19zcmUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKaW5kZXggMzI4MTcxNy4uMDYxMjAwNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKQEAgLTIwLDggKzIwLDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX2dldGNvZGVzaXplX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDgsMTEgKzQ5LDEzIEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOmdldGxvd2VyIiwKLSAgICAgICAgJmNoYXJhY3RlciwgJmZsYWdzKSkKKyAgICAgICAgJmNoYXJhY3RlciwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX2dldGxvd2VyX2ltcGwobW9kdWxlLCBjaGFyYWN0ZXIsIGZsYWdzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNjYsNyArNjksNyBAQAogIk1hdGNoZXMgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fTUFUQ0hfTUVUSE9EREVGICAgIFwKLSAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX19kb2NfX30sCisgICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX21hdGNoLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKQEAgLTc0LDE4ICs3NywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX21hdGNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzptYXRjaCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOm1hdGNoIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBwYXR0ZXJuKTsKIAogZXhpdDoKQEAgLTEwMCw3ICsxMDUsNyBAQAogIk1hdGNoZXMgYWdhaW5zdCBhbGwgb2YgdGhlIHN0cmluZyIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRlVMTE1BVENIX01FVEhPRERFRiAgICBcCi0gICAgeyJmdWxsbWF0Y2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9fZG9jX199LAorICAgIHsiZnVsbG1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLApAQCAtMTA4LDE4ICsxMTMsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T25uJE86ZnVsbG1hdGNoIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86ZnVsbG1hdGNoIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CiAKIGV4aXQ6CkBAIC0xMzYsNyArMTQzLDcgQEAKICJSZXR1cm4gTm9uZSBpZiBubyBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIG1hdGNoZXMuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TRUFSQ0hfTUVUSE9EREVGICAgIFwKLSAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX19kb2NfX30sCisgICAgeyJzZWFyY2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zZWFyY2gsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCkBAIC0xNDQsMTggKzE1MSwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc2VhcmNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzpzZWFyY2giLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOwogICAgIFB5T2JqZWN0ICpwYXR0ZXJuID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpzZWFyY2giLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBwYXR0ZXJuKTsKIAogZXhpdDoKQEAgLTE3MCw3ICsxNzksNyBAQAogIlJldHVybiBhIGxpc3Qgb2YgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIG9mIHBhdHRlcm4gaW4gc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRklOREFMTF9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfX2RvY19ffSwKKyAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCkBAIC0xNzgsMTggKzE4NywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNvdXJjZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzpmaW5kYWxsIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqc291cmNlID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpmaW5kYWxsIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmc291cmNlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnNvdXJjZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBzb3VyY2UpOwogCiBleGl0OgpAQCAtMjA1LDI0ICsyMTYsMjYgQEAKICJGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYSBtYXRjaCBvYmplY3QuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9GSU5ESVRFUl9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZGl0ZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfX2RvY19ffSwKKyAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98bm46ZmluZGl0ZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG5uOmZpbmRpdGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcyk7CiAKIGV4aXQ6CkBAIC0yMzUsMjQgKzI0OCwyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TQ0FOTkVSX01FVEhPRERFRiAgICBcCi0gICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9fZG9jX199LAorICAgIHsic2Nhbm5lciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG5uOnNjYW5uZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG5uOnNjYW5uZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOwogCiBleGl0OgpAQCAtMjY2LDI0ICsyODEsMjYgQEAKICJTcGxpdCBzdHJpbmcgYnkgdGhlIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4uIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfX2RvY19ffSwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3BsaXQsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQsIFB5T2JqZWN0ICpzb3VyY2UpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9zcGxpdChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc3BsaXQoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJtYXhzcGxpdCIsICJzb3VyY2UiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAibWF4c3BsaXQiLCAic291cmNlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uJE86c3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAwOwogICAgIFB5T2JqZWN0ICpzb3VyY2UgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uJE86c3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZtYXhzcGxpdCwgJnNvdXJjZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZtYXhzcGxpdCwgJnNvdXJjZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X2ltcGwoc2VsZiwgc3RyaW5nLCBtYXhzcGxpdCwgc291cmNlKTsKIAogZXhpdDoKQEAgLTI5NywyNCArMzE0LDI2IEBACiAiUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgcmVwbGFjaW5nIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcgYnkgdGhlIHJlcGxhY2VtZW50IHJlcGwuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TVUJfTUVUSE9EREVGICAgIFwKLSAgICB7InN1YiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3N1YiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc3ViX19kb2NfX30sCisgICAgeyJzdWIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWIsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc3ViX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpyZXBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyaW5nLCBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc3ViKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9zdWIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPT3xuOnN1YiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnJlcGw7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfG46c3ViIiwgX2tleXdvcmRzLAotICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9pbXBsKHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQpOwogCiBleGl0OgpAQCAtMzI4LDI0ICszNDcsMjYgQEAKICJSZXR1cm4gdGhlIHR1cGxlIChuZXdfc3RyaW5nLCBudW1iZXJfb2Zfc3Vic19tYWRlKSBmb3VuZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIHdpdGggdGhlIHJlcGxhY2VtZW50IHJlcGwuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9TVUJOX01FVEhPRERFRiAgICBcCi0gICAgeyJzdWJuIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3VibiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9fZG9jX199LAorICAgIHsic3VibiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3N1Ym4sIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9zdWJuX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyaW5nLCBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc3VibihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc3VibihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PfG46c3VibiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnJlcGw7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfG46c3VibiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZyZXBsLCAmc3RyaW5nLCAmY291bnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zdWJuX2ltcGwoc2VsZiwgcmVwbCwgc3RyaW5nLCBjb3VudCk7CiAKIGV4aXQ6CkBAIC0zNzUsMjEgKzM5NiwyMyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKLSAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX19kb2NfX30sCisgICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X18sIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X18oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICptZW1vOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsCi0gICAgICAgICZtZW1vKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm1lbW8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19faW1wbChzZWxmLCBtZW1vKTsKIAogZXhpdDoKQEAgLTQwMyw3ICs0MjYsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9DT01QSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfY29tcGlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfY29tcGlsZV9fZG9jX199LAorICAgIHsiY29tcGlsZSIsIChQeUNGdW5jdGlvbilfc3JlX2NvbXBpbGUsIE1FVEhfRkFTVENBTEwsIF9zcmVfY29tcGlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9jb21waWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdHRlcm4sIGludCBmbGFncywKQEAgLTQxMSwxMCArNDM0LDExIEBACiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5kZXhncm91cCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX2NvbXBpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX2NvbXBpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdHRlcm4iLCAiZmxhZ3MiLCAiY29kZSIsICJncm91cHMiLCAiZ3JvdXBpbmRleCIsICJpbmRleGdyb3VwIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0dGVybiIsICJmbGFncyIsICJjb2RlIiwgImdyb3VwcyIsICJncm91cGluZGV4IiwgImluZGV4Z3JvdXAiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPaU8hbk9POmNvbXBpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXR0ZXJuOwogICAgIGludCBmbGFnczsKICAgICBQeU9iamVjdCAqY29kZTsKQEAgLTQyMiw5ICs0NDYsMTAgQEAKICAgICBQeU9iamVjdCAqZ3JvdXBpbmRleDsKICAgICBQeU9iamVjdCAqaW5kZXhncm91cDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9pTyFuT086Y29tcGlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdHRlcm4sICZmbGFncywgJlB5TGlzdF9UeXBlLCAmY29kZSwgJmdyb3VwcywgJmdyb3VwaW5kZXgsICZpbmRleGdyb3VwKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdHRlcm4sICZmbGFncywgJlB5TGlzdF9UeXBlLCAmY29kZSwgJmdyb3VwcywgJmdyb3VwaW5kZXgsICZpbmRleGdyb3VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfY29tcGlsZV9pbXBsKG1vZHVsZSwgcGF0dGVybiwgZmxhZ3MsIGNvZGUsIGdyb3VwcywgZ3JvdXBpbmRleCwgaW5kZXhncm91cCk7CiAKIGV4aXQ6CkBAIC00MzgsMjEgKzQ2MywyMyBAQAogIlJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGRvaW5nIGJhY2tzbGFzaCBzdWJzdGl0dXRpb24gb24gdGhlIHN0cmluZyB0ZW1wbGF0ZSwgYXMgZG9uZSBieSB0aGUgc3ViKCkgbWV0aG9kLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX01BVENIX0VYUEFORF9NRVRIT0RERUYgICAgXAotICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2V4cGFuZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2V4cGFuZF9fZG9jX199LAorICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2V4cGFuZCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9NYXRjaF9leHBhbmRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRlbXBsYXRlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX01hdGNoX2V4cGFuZChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9NYXRjaF9leHBhbmQoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0ZW1wbGF0ZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InRlbXBsYXRlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpleHBhbmQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0ZW1wbGF0ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86ZXhwYW5kIiwgX2tleXdvcmRzLAotICAgICAgICAmdGVtcGxhdGUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGVtcGxhdGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX2ltcGwoc2VsZiwgdGVtcGxhdGUpOwogCiBleGl0OgpAQCAtNDY5LDIxICs0OTYsMjMgQEAKICIgICAgSXMgdXNlZCBmb3IgZ3JvdXBzIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2guIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfR1JPVVBTX01FVEhPRERFRiAgICBcCi0gICAgeyJncm91cHMiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX19kb2NfX30sCisgICAgeyJncm91cHMiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9NYXRjaF9ncm91cHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX01hdGNoX2dyb3Vwc19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9NYXRjaF9ncm91cHMoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8Tzpncm91cHMiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOmdyb3VwcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9ncm91cHNfaW1wbChzZWxmLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUwMCwyMSArNTI5LDIzIEBACiAiICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX01BVENIX0dST1VQRElDVF9NRVRIT0RERUYgICAgXAotICAgIHsiZ3JvdXBkaWN0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwZGljdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9fZG9jX199LAorICAgIHsiZ3JvdXBkaWN0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwZGljdCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0KE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX01hdGNoX2dyb3VwZGljdChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86Z3JvdXBkaWN0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8Tzpncm91cGRpY3QiLCBfa2V5d29yZHMsCi0gICAgICAgICZkZWZhdWx0X3ZhbHVlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X2ltcGwoc2VsZiwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01NDIsMTEgKzU3MywxMyBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RhcnQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmZ3JvdXApKQorICAgICAgICAmZ3JvdXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX3N0YXJ0X2ltcGwoc2VsZiwgZ3JvdXApOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01NzQsMTEgKzYwNywxMyBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZW5kIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgJmdyb3VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9lbmRfaW1wbChzZWxmLCBncm91cCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTYwNSw4ICs2NDAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3BhbiIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZncm91cCkpCisgICAgICAgICZncm91cCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9zcGFuX2ltcGwoc2VsZiwgZ3JvdXApOwogCiBleGl0OgpAQCAtNjM2LDIxICs2NzIsMjMgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX01BVENIX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19fZG9jX199LAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXywgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19faW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICptZW1vOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsCi0gICAgICAgICZtZW1vKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm1lbW8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoc2VsZiwgbWVtbyk7CiAKIGV4aXQ6CkBAIC02OTAsNCArNzI4LDQgQEAKIHsKICAgICByZXR1cm4gX3NyZV9TUkVfU2Nhbm5lcl9zZWFyY2hfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNGNlOWU1Yjc0OGNlNTMyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNGEyNDZiY2ExOTYzYmM5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19zc2wuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKaW5kZXggODUyZTM2NS4uMjlmNTgzOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKQEAgLTM2LDggKzM2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X3Rlc3RfZGVjb2RlX2NlcnQiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl90ZXN0X2RlY29kZV9jZXJ0IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX190ZXN0X2RlY29kZV9jZXJ0X2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTcxLDggKzcyLDkgQEAKICAgICBpbnQgYmluYXJ5X21vZGUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpwZWVyX2NlcnRpZmljYXRlIiwKLSAgICAgICAgJmJpbmFyeV9tb2RlKSkKKyAgICAgICAgJmJpbmFyeV9tb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlX2ltcGwoc2VsZiwgYmluYXJ5X21vZGUpOwogCiBleGl0OgpAQCAtMjA5LDE0ICsyMTEsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTFNvY2tldF93cml0ZV9pbXBsKHNlbGYsICZiKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBiICovCi0gICAgaWYgKGIub2JqKQorICAgIGlmIChiLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yNjAsMTIgKzI2NCwxNCBAQAogCiAgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJmxlbikpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6cmVhZCIsICZsZW4pKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXcqOnJlYWQiLCAmbGVuLCAmYnVmZmVyKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXcqOnJlYWQiLCAmbGVuLCAmYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNzYsOCArMjgyLDkgQEAKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMzMiwxMSArMzM5LDEzIEBACiAgICAgaW50IHByb3RvX3ZlcnNpb247CiAKICAgICBpZiAoKHR5cGUgPT0gJlB5U1NMQ29udGV4dF9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIl9TU0xDb250ZXh0Iiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJfU1NMQ29udGV4dCIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6X1NTTENvbnRleHQiLAotICAgICAgICAmcHJvdG9fdmVyc2lvbikpCisgICAgICAgICZwcm90b192ZXJzaW9uKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfaW1wbCh0eXBlLCBwcm90b192ZXJzaW9uKTsKIAogZXhpdDoKQEAgLTM2MCwxNCArMzY5LDM2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqY2lwaGVybGlzdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpzZXRfY2lwaGVycyIsICZjaXBoZXJsaXN0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6c2V0X2NpcGhlcnMiLCAmY2lwaGVybGlzdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX2ltcGwoc2VsZiwgY2lwaGVybGlzdCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAorI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBVTCkKKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnNfX2RvY19fLAorImdldF9jaXBoZXJzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DSVBIRVJTX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfY2lwaGVycyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMFVMKSAqLworCiBQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHNfX2RvY19fLAogIl9zZXRfbnBuX3Byb3RvY29scygkc2VsZiwgcHJvdG9zLCAvKVxuIgogIi0tXG4iCkBAIC0zODYsMTQgKzQxNywxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBwcm90b3MgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfbnBuX3Byb3RvY29scyIsICZwcm90b3MpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19pbXBsKHNlbGYsICZwcm90b3MpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHByb3RvcyAqLwotICAgIGlmIChwcm90b3Mub2JqKQorICAgIGlmIChwcm90b3Mub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDE2LDE0ICs0NDksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgcHJvdG9zID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X2FscG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X2FscG5fcHJvdG9jb2xzIiwgJnByb3RvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfaW1wbChzZWxmLCAmcHJvdG9zKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwcm90b3MgKi8KLSAgICBpZiAocHJvdG9zLm9iaikKKyAgICBpZiAocHJvdG9zLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQzNCwyNCArNDY5LDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfQ0VSVF9DSEFJTl9NRVRIT0RERUYgICAgXAotICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5fX2RvY19ffSwKKyAgICB7ImxvYWRfY2VydF9jaGFpbiIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbiwgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXlmaWxlLCBQeU9iamVjdCAqcGFzc3dvcmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjZXJ0ZmlsZSIsICJrZXlmaWxlIiwgInBhc3N3b3JkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPTzpsb2FkX2NlcnRfY2hhaW4iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZTsKICAgICBQeU9iamVjdCAqa2V5ZmlsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnBhc3N3b3JkID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T086bG9hZF9jZXJ0X2NoYWluIiwgX2tleXdvcmRzLAotICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5faW1wbChzZWxmLCBjZXJ0ZmlsZSwga2V5ZmlsZSwgcGFzc3dvcmQpOwogCiBleGl0OgpAQCAtNDY0LDcgKzUwMSw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfVkVSSUZZX0xPQ0FUSU9OU19NRVRIT0RERUYgICAgXAotICAgIHsibG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfX2RvY19ffSwKKyAgICB7ImxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLApAQCAtNDczLDE3ICs1MTAsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY2FmaWxlIiwgImNhcGF0aCIsICJjYWRhdGEiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjYWZpbGUiLCAiY2FwYXRoIiwgImNhZGF0YSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqY2FmaWxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2FwYXRoID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2FkYXRhID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgX2tleXdvcmRzLAotICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmNhZmlsZSwgJmNhcGF0aCwgJmNhZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19pbXBsKHNlbGYsIGNhZmlsZSwgY2FwYXRoLCBjYWRhdGEpOwogCiBleGl0OgpAQCAtNTA0LDI0ICs1NDMsMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfX1dSQVBfU09DS0VUX01FVEhPRERFRiAgICBcCi0gICAgeyJfd3JhcF9zb2NrZXQiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9fZG9jX199LAorICAgIHsiX3dyYXBfc29ja2V0IiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0LCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VydmVyX3NpZGUsIFB5T2JqZWN0ICpob3N0bmFtZV9vYmopOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0KFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNvY2siLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPIWl8Tzpfd3JhcF9zb2NrZXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzb2NrOwogICAgIGludCBzZXJ2ZXJfc2lkZTsKICAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8haXxPOl93cmFwX3NvY2tldCIsIF9rZXl3b3JkcywKLSAgICAgICAgUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlLCAmc29jaywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlLCAmc29jaywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X2ltcGwoc2VsZiwgc29jaywgc2VydmVyX3NpZGUsIGhvc3RuYW1lX29iaik7CiAKIGV4aXQ6CkBAIC01MzUsNyArNTc2LDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfX1dSQVBfQklPX01FVEhPRERFRiAgICBcCi0gICAgeyJfd3JhcF9iaW8iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19fZG9jX199LAorICAgIHsiX3dyYXBfYmlvIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9faW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5U1NMTWVtb3J5QklPICppbmNvbWluZywKQEAgLTU0MywxOCArNTg0LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmopOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImluY29taW5nIiwgIm91dGdvaW5nIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImluY29taW5nIiwgIm91dGdvaW5nIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8hTyFpfE86X3dyYXBfYmlvIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeVNTTE1lbW9yeUJJTyAqaW5jb21pbmc7CiAgICAgUHlTU0xNZW1vcnlCSU8gKm91dGdvaW5nOwogICAgIGludCBzZXJ2ZXJfc2lkZTsKICAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8hTyFpfE86X3dyYXBfYmlvIiwgX2tleXdvcmRzLAotICAgICAgICAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJmluY29taW5nLCAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJm91dGdvaW5nLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJmluY29taW5nLCAmUHlTU0xNZW1vcnlCSU9fVHlwZSwgJm91dGdvaW5nLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9faW1wbChzZWxmLCBpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlLCBob3N0bmFtZV9vYmopOwogCiBleGl0OgpAQCAtNjU3LDIxICs3MDAsMjMgQEAKICJiZWVuIHVzZWQgYXQgbGVhc3Qgb25jZS4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DQV9DRVJUU19NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0X2NhX2NlcnRzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfX2RvY19ffSwKKyAgICB7ImdldF9jYV9jZXJ0cyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0cywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBpbnQgYmluYXJ5X2Zvcm0pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImJpbmFyeV9mb3JtIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiYmluYXJ5X2Zvcm0iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8cDpnZXRfY2FfY2VydHMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBiaW5hcnlfZm9ybSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8cDpnZXRfY2FfY2VydHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZiaW5hcnlfZm9ybSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZiaW5hcnlfZm9ybSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19pbXBsKHNlbGYsIGJpbmFyeV9mb3JtKTsKIAogZXhpdDoKQEAgLTY4NywxMSArNzMyLDEzIEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoKHR5cGUgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJNZW1vcnlCSU8iLCBhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob1Bvc2l0aW9uYWwoIk1lbW9yeUJJTyIsIGFyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgaWYgKCh0eXBlID09ICZQeVNTTE1lbW9yeUJJT19UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIk1lbW9yeUJJTyIsIGt3YXJncykpCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiTWVtb3J5QklPIiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX2ltcGwodHlwZSk7CiAKIGV4aXQ6CkBAIC03MjIsOCArNzY5LDkgQEAKICAgICBpbnQgbGVuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnJlYWQiLAotICAgICAgICAmbGVuKSkKKyAgICAgICAgJmxlbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoc2VsZiwgbGVuKTsKIAogZXhpdDoKQEAgLTc1MCwxNCArNzk4LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT193cml0ZV9pbXBsKHNlbGYsICZiKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBiICovCi0gICAgaWYgKGIub2JqKQorICAgIGlmIChiLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04MDUsMTQgKzg1NSwxNiBAQAogICAgIGRvdWJsZSBlbnRyb3B5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKmQ6UkFORF9hZGQiLAotICAgICAgICAmdmlldywgJmVudHJvcHkpKQorICAgICAgICAmdmlldywgJmVudHJvcHkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2FkZF9pbXBsKG1vZHVsZSwgJnZpZXcsIGVudHJvcHkpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHZpZXcgKi8KLSAgICBpZiAodmlldy5vYmopCisgICAgaWYgKHZpZXcub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgzNSw4ICs4ODcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfYnl0ZXMiLCAmbikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfYnl0ZXMiLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfYnl0ZXNfaW1wbChtb2R1bGUsIG4pOwogCiBleGl0OgpAQCAtODY0LDggKzkxNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9wc2V1ZG9fYnl0ZXMiLCAmbikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfcHNldWRvX2J5dGVzIiwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX3BzZXVkb19ieXRlc19pbXBsKG1vZHVsZSwgbik7CiAKIGV4aXQ6CkBAIC05MTYsOCArOTcwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UkFORF9lZ2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlJBTkRfZWdkIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfZWdkX2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTk1NiwyMiArMTAxMSwyNCBAQAogImxvbmcgbmFtZSBhcmUgYWxzbyBtYXRjaGVkLiIpOwogCiAjZGVmaW5lIF9TU0xfVFhUMk9CSl9NRVRIT0RERUYgICAgXAotICAgIHsidHh0Mm9iaiIsIChQeUNGdW5jdGlvbilfc3NsX3R4dDJvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX3R4dDJvYmpfX2RvY19ffSwKKyAgICB7InR4dDJvYmoiLCAoUHlDRnVuY3Rpb24pX3NzbF90eHQyb2JqLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX3R4dDJvYmpfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfdHh0Mm9ial9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKnR4dCwgaW50IG5hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF90eHQyb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF90eHQyb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0eHQiLCAibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsic3xwOnR4dDJvYmoiLCBfa2V5d29yZHMsIDB9OwogICAgIGNvbnN0IGNoYXIgKnR4dDsKICAgICBpbnQgbmFtZSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJzfHA6dHh0Mm9iaiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnR4dCwgJm5hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdHh0LCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX3R4dDJvYmpfaW1wbChtb2R1bGUsIHR4dCwgbmFtZSk7CiAKIGV4aXQ6CkBAIC05OTYsOCArMTA1Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG5pZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWQyb2JqIiwgJm5pZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pZDJvYmoiLCAmbmlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfbmlkMm9ial9pbXBsKG1vZHVsZSwgbmlkKTsKIAogZXhpdDoKQEAgLTEwMTksMjEgKzEwNzcsMjMgQEAKICJhIHNldCBvZiBPSURzIG9yIHRoZSBib29sZWFuIFRydWUuIik7CiAKICNkZWZpbmUgX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYgICAgXAotICAgIHsiZW51bV9jZXJ0aWZpY2F0ZXMiLCAoUHlDRnVuY3Rpb24pX3NzbF9lbnVtX2NlcnRpZmljYXRlcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfX2RvY19ffSwKKyAgICB7ImVudW1fY2VydGlmaWNhdGVzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZW51bV9jZXJ0aWZpY2F0ZXMsIE1FVEhfRkFTVENBTEwsIF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBjb25zdCBjaGFyICpzdG9yZV9uYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfZW51bV9jZXJ0aWZpY2F0ZXMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX2VudW1fY2VydGlmaWNhdGVzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InM6ZW51bV9jZXJ0aWZpY2F0ZXMiLCBfa2V5d29yZHMsIDB9OwogICAgIGNvbnN0IGNoYXIgKnN0b3JlX25hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJzOmVudW1fY2VydGlmaWNhdGVzIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RvcmVfbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdG9yZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfZW51bV9jZXJ0aWZpY2F0ZXNfaW1wbChtb2R1bGUsIHN0b3JlX25hbWUpOwogCiBleGl0OgpAQCAtMTA1NiwyMSArMTExNiwyMyBAQAogIlg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIik7CiAKICNkZWZpbmUgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGICAgIFwKLSAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY3JscywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfZW51bV9jcmxzX19kb2NfX30sCisgICAgeyJlbnVtX2NybHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9lbnVtX2NybHMsIE1FVEhfRkFTVENBTEwsIF9zc2xfZW51bV9jcmxzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX2VudW1fY3Jsc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9lbnVtX2NybHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX2VudW1fY3JscyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJzOmVudW1fY3JscyIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqc3RvcmVfbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInM6ZW51bV9jcmxzIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RvcmVfbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdG9yZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfZW51bV9jcmxzX2ltcGwobW9kdWxlLCBzdG9yZV9uYW1lKTsKIAogZXhpdDoKQEAgLTEwODcsNiArMTE0OSwxMCBAQAogICAgICNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DSVBIRVJTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGKSAqLwpAQCAtMTEwMiw0ICsxMTY4LDQgQEAKICNpZm5kZWYgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmZiMTA1OTRkODM1MWRjNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTg1OWIyMWZlNjhhNjExNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmgKaW5kZXggNzdhZjA4My4uZWRkNTM4MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3RraW50ZXIuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaApAQCAtMTksOCArMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnNjcmlwdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpldmFsIiwgJnNjcmlwdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWwiLCAmc2NyaXB0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V2YWxfaW1wbChzZWxmLCBzY3JpcHQpOwogCiBleGl0OgpAQCAtNDQsOCArNDUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmZpbGVOYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWxmaWxlIiwgJmZpbGVOYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbGZpbGUiLCAmZmlsZU5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXZhbGZpbGVfaW1wbChzZWxmLCBmaWxlTmFtZSk7CiAKIGV4aXQ6CkBAIC02OSw4ICs3MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqc2NyaXB0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOnJlY29yZCIsICZzY3JpcHQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpyZWNvcmQiLCAmc2NyaXB0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX3JlY29yZF9pbXBsKHNlbGYsIHNjcmlwdCk7CiAKIGV4aXQ6CkBAIC05NCw4ICs5Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqbXNnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmFkZGVycmluZm8iLCAmbXNnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6YWRkZXJyaW5mbyIsICZtc2cpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfYWRkZXJyaW5mb19pbXBsKHNlbGYsIG1zZyk7CiAKIGV4aXQ6CkBAIC0xNDMsOCArMTQ3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJzdHJpbmciLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJzdHJpbmciLCAmcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByc3RyaW5nX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0xNjgsOCArMTczLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJsb25nIiwgJnMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHBybG9uZyIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJsb25nX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0xOTMsOCArMTk5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJkb3VibGUiLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJkb3VibGUiLCAmcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0yMTgsOCArMjI1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJib29sZWFuIiwgJnMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHByYm9vbGVhbiIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX2ltcGwoc2VsZiwgcyk7CiAKIGV4aXQ6CkBAIC0yNjIsOCArMjcwLDkgQEAKICAgICBQeU9iamVjdCAqZnVuYzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic086Y3JlYXRlY29tbWFuZCIsCi0gICAgICAgICZuYW1lLCAmZnVuYykpCisgICAgICAgICZuYW1lLCAmZnVuYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX2ltcGwoc2VsZiwgbmFtZSwgZnVuYyk7CiAKIGV4aXQ6CkBAIC0yODcsOCArMjk2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmRlbGV0ZWNvbW1hbmQiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmRlbGV0ZWNvbW1hbmQiLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX2ltcGwoc2VsZiwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0zMTgsOCArMzI4LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2lPOmNyZWF0ZWZpbGVoYW5kbGVyIiwKLSAgICAgICAgJmZpbGUsICZtYXNrLCAmZnVuYykpCisgICAgICAgICZmaWxlLCAmbWFzaywgJmZ1bmMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChzZWxmLCBmaWxlLCBtYXNrLCBmdW5jKTsKIAogZXhpdDoKQEAgLTM3Nyw4ICszODgsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjcmVhdGV0aW1lcmhhbmRsZXIiLAotICAgICAgICAmbWlsbGlzZWNvbmRzLCAmZnVuYykpCisgICAgICAgICZtaWxsaXNlY29uZHMsICZmdW5jKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9pbXBsKHNlbGYsIG1pbGxpc2Vjb25kcywgZnVuYyk7CiAKIGV4aXQ6CkBAIC00MDMsOCArNDE1LDkgQEAKICAgICBpbnQgdGhyZXNob2xkID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6bWFpbmxvb3AiLAotICAgICAgICAmdGhyZXNob2xkKSkKKyAgICAgICAgJnRocmVzaG9sZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9pbXBsKHNlbGYsIHRocmVzaG9sZCk7CiAKIGV4aXQ6CkBAIC00MjksOCArNDQyLDkgQEAKICAgICBpbnQgZmxhZ3MgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpkb29uZWV2ZW50IiwKLSAgICAgICAgJmZsYWdzKSkKKyAgICAgICAgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2Rvb25lZXZlbnRfaW1wbChzZWxmLCBmbGFncyk7CiAKIGV4aXQ6CkBAIC01NTEsOCArNTY1LDkgQEAKICAgICBjb25zdCBjaGFyICp1c2UgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8enNzaWlpaXo6Y3JlYXRlIiwKLSAgICAgICAgJnNjcmVlbk5hbWUsICZiYXNlTmFtZSwgJmNsYXNzTmFtZSwgJmludGVyYWN0aXZlLCAmd2FudG9iamVjdHMsICZ3YW50VGssICZzeW5jLCAmdXNlKSkKKyAgICAgICAgJnNjcmVlbk5hbWUsICZiYXNlTmFtZSwgJmNsYXNzTmFtZSwgJmludGVyYWN0aXZlLCAmd2FudG9iamVjdHMsICZ3YW50VGssICZzeW5jLCAmdXNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX2NyZWF0ZV9pbXBsKG1vZHVsZSwgc2NyZWVuTmFtZSwgYmFzZU5hbWUsIGNsYXNzTmFtZSwgaW50ZXJhY3RpdmUsIHdhbnRvYmplY3RzLCB3YW50VGssIHN5bmMsIHVzZSk7CiAKIGV4aXQ6CkBAIC01NzksOCArNTk0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbmV3X3ZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRidXN5d2FpdGludGVydmFsIiwgJm5ld192YWwpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRidXN5d2FpdGludGVydmFsIiwgJm5ld192YWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfc2V0YnVzeXdhaXRpbnRlcnZhbF9pbXBsKG1vZHVsZSwgbmV3X3ZhbCk7CiAKIGV4aXQ6CkBAIC02MDYsOCArNjIyLDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNjIxLDQgKzYzOCw0IEBACiAjaWZuZGVmIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRgogICAgICNkZWZpbmUgX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY5MDU3YzhiZjI4ODYzM2QgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgzNmM1NzhiNzFkNjkwOTcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCmluZGV4IGI4M2IzM2UuLmMxOTJlNzIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmgKQEAgLTIxLDExICsyMSwxMiBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChtb2R1bGUsIG9iamVjdCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ5MDg2Yzg1NzZkNDY5MzMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUxYWQ1ODcxNDczMjNlMTkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3dpbmFwaS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaAppbmRleCBhYzM4ZDM3Li41YmZiYWYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaApAQCAtMTksOCArMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCB3YWl0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJwOkdldE92ZXJsYXBwZWRSZXN1bHQiLCAmd2FpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJwOkdldE92ZXJsYXBwZWRSZXN1bHQiLCAmd2FpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdF9pbXBsKHNlbGYsIHdhaXQpOwogCiBleGl0OgpAQCAtNzksOCArODAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhBTkRMRSBoYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpDbG9zZUhhbmRsZSIsICZoYW5kbGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhhbmRsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUpOwogCiBleGl0OgpAQCAtOTMsMjMgKzk1LDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfV0lOQVBJX0NPTk5FQ1ROQU1FRFBJUEVfTUVUSE9EREVGICAgIFwKLSAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX19kb2NfX30sCisgICAgeyJDb25uZWN0TmFtZWRQaXBlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZSwgTUVUSF9GQVNUQ0FMTCwgX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK193aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgRl9IQU5ETEUgInxpOkNvbm5lY3ROYW1lZFBpcGUiLCBfa2V5d29yZHMsIDB9OwogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgInxpOkNvbm5lY3ROYW1lZFBpcGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZoYW5kbGUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZoYW5kbGUsICZ1c2Vfb3ZlcmxhcHBlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgdXNlX292ZXJsYXBwZWQpOwogCiBleGl0OgpAQCAtMTQ3LDEzICsxNTEsMTYgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2trIiBGX1BPSU5URVIgImtrIiBGX0hBTkRMRSAiOkNyZWF0ZUZpbGUiLAotICAgICAgICAmZmlsZV9uYW1lLCAmZGVzaXJlZF9hY2Nlc3MsICZzaGFyZV9tb2RlLCAmc2VjdXJpdHlfYXR0cmlidXRlcywgJmNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCAmZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsICZ0ZW1wbGF0ZV9maWxlKSkKKyAgICAgICAgJmZpbGVfbmFtZSwgJmRlc2lyZWRfYWNjZXNzLCAmc2hhcmVfbW9kZSwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMsICZjcmVhdGlvbl9kaXNwb3NpdGlvbiwgJmZsYWdzX2FuZF9hdHRyaWJ1dGVzLCAmdGVtcGxhdGVfZmlsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwobW9kdWxlLCBmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLCBzaGFyZV9tb2RlLCBzZWN1cml0eV9hdHRyaWJ1dGVzLCBjcmVhdGlvbl9kaXNwb3NpdGlvbiwgZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsIHRlbXBsYXRlX2ZpbGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTE4MCw4ICsxODcsOSBAQAogICAgIExQV1NUUiBkc3RfcGF0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXU6Q3JlYXRlSnVuY3Rpb24iLAotICAgICAgICAmc3JjX3BhdGgsICZkc3RfcGF0aCkpCisgICAgICAgICZzcmNfcGF0aCwgJmRzdF9wYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlSnVuY3Rpb25faW1wbChtb2R1bGUsIHNyY19wYXRoLCBkc3RfcGF0aCk7CiAKIGV4aXQ6CkBAIC0yMjAsMTMgKzIyOCwxNiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJza2tra2trIiBGX1BPSU5URVIgIjpDcmVhdGVOYW1lZFBpcGUiLAotICAgICAgICAmbmFtZSwgJm9wZW5fbW9kZSwgJnBpcGVfbW9kZSwgJm1heF9pbnN0YW5jZXMsICZvdXRfYnVmZmVyX3NpemUsICZpbl9idWZmZXJfc2l6ZSwgJmRlZmF1bHRfdGltZW91dCwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMpKQorICAgICAgICAmbmFtZSwgJm9wZW5fbW9kZSwgJnBpcGVfbW9kZSwgJm1heF9pbnN0YW5jZXMsICZvdXRfYnVmZmVyX3NpemUsICZpbl9idWZmZXJfc2l6ZSwgJmRlZmF1bHRfdGltZW91dCwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlTmFtZWRQaXBlX2ltcGwobW9kdWxlLCBuYW1lLCBvcGVuX21vZGUsIHBpcGVfbW9kZSwgbWF4X2luc3RhbmNlcywgb3V0X2J1ZmZlcl9zaXplLCBpbl9idWZmZXJfc2l6ZSwgZGVmYXVsdF90aW1lb3V0LCBzZWN1cml0eV9hdHRyaWJ1dGVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yNTgsOCArMjY5LDkgQEAKICAgICBEV09SRCBzaXplOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPazpDcmVhdGVQaXBlIiwKLSAgICAgICAgJnBpcGVfYXR0cnMsICZzaXplKSkKKyAgICAgICAgJnBpcGVfYXR0cnMsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlUGlwZV9pbXBsKG1vZHVsZSwgcGlwZV9hdHRycywgc2l6ZSk7CiAKIGV4aXQ6CkBAIC0zMDgsOCArMzIwLDkgQEAKICAgICBQeU9iamVjdCAqc3RhcnR1cF9pbmZvOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PaWtPWk86Q3JlYXRlUHJvY2VzcyIsCi0gICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLCAmY29tbWFuZF9saW5lLCAmcHJvY19hdHRycywgJnRocmVhZF9hdHRycywgJmluaGVyaXRfaGFuZGxlcywgJmNyZWF0aW9uX2ZsYWdzLCAmZW52X21hcHBpbmcsICZjdXJyZW50X2RpcmVjdG9yeSwgJnN0YXJ0dXBfaW5mbykpCisgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLCAmY29tbWFuZF9saW5lLCAmcHJvY19hdHRycywgJnRocmVhZF9hdHRycywgJmluaGVyaXRfaGFuZGxlcywgJmNyZWF0aW9uX2ZsYWdzLCAmZW52X21hcHBpbmcsICZjdXJyZW50X2RpcmVjdG9yeSwgJnN0YXJ0dXBfaW5mbykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGFwcGxpY2F0aW9uX25hbWUsIGNvbW1hbmRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLCBpbmhlcml0X2hhbmRsZXMsIGNyZWF0aW9uX2ZsYWdzLCBlbnZfbWFwcGluZywgY3VycmVudF9kaXJlY3RvcnksIHN0YXJ0dXBfaW5mbyk7CiAKIGV4aXQ6CkBAIC0zNTEsMTMgKzM2NCwxNiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICIiIEZfSEFORExFICIiIEZfSEFORExFICJraXxrOkR1cGxpY2F0ZUhhbmRsZSIsCi0gICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsICZzb3VyY2VfaGFuZGxlLCAmdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLCAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJm9wdGlvbnMpKQorICAgICAgICAmc291cmNlX3Byb2Nlc3NfaGFuZGxlLCAmc291cmNlX2hhbmRsZSwgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKG1vZHVsZSwgc291cmNlX3Byb2Nlc3NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLCB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgb3B0aW9ucyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzgxLDggKzM5Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgVUlOVCBFeGl0Q29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpFeGl0UHJvY2VzcyIsICZFeGl0Q29kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOkV4aXRQcm9jZXNzIiwgJkV4aXRDb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfRXhpdFByb2Nlc3NfaW1wbChtb2R1bGUsIEV4aXRDb2RlKTsKIAogZXhpdDoKQEAgLTQwOCwxMCArNDI1LDEyIEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRDdXJyZW50UHJvY2Vzc19pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDM3LDExICs0NTYsMTMgQEAKICAgICBIQU5ETEUgcHJvY2VzczsKICAgICBEV09SRCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0RXhpdENvZGVQcm9jZXNzIiwgJnByb2Nlc3MpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkdldEV4aXRDb2RlUHJvY2VzcyIsICZwcm9jZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldEV4aXRDb2RlUHJvY2Vzc19pbXBsKG1vZHVsZSwgcHJvY2Vzcyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiayIsIF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDY2LDggKzQ4Nyw5IEBACiAgICAgRFdPUkQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldExhc3RFcnJvcl9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiayIsIF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDk5LDggKzUyMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSE1PRFVMRSBtb2R1bGVfaGFuZGxlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLCAmbW9kdWxlX2hhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLCAmbW9kdWxlX2hhbmRsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lX2ltcGwobW9kdWxlLCBtb2R1bGVfaGFuZGxlKTsKIAogZXhpdDoKQEAgLTUzMSwxMyArNTU0LDE2IEBACiAgICAgRFdPUkQgc3RkX2hhbmRsZTsKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiazpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJrOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldFN0ZEhhbmRsZV9pbXBsKG1vZHVsZSwgc3RkX2hhbmRsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTYzLDggKzU4OSw5IEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0VmVyc2lvbl9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTU5MywxMyArNjIwLDE2IEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImtpazpPcGVuUHJvY2VzcyIsCi0gICAgICAgICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmcHJvY2Vzc19pZCkpCisgICAgICAgICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmcHJvY2Vzc19pZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9PcGVuUHJvY2Vzc19pbXBsKG1vZHVsZSwgZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBwcm9jZXNzX2lkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02MjUsOCArNjU1LDkgQEAKICAgICBpbnQgc2l6ZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgInxpOlBlZWtOYW1lZFBpcGUiLAotICAgICAgICAmaGFuZGxlLCAmc2l6ZSkpCisgICAgICAgICZoYW5kbGUsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfUGVla05hbWVkUGlwZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBzaXplKTsKIAogZXhpdDoKQEAgLTYzOSwyNCArNjcwLDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBfV0lOQVBJX1JFQURGSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1JlYWRGaWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9SZWFkRmlsZV9fZG9jX199LAorICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9SZWFkRmlsZSwgTUVUSF9GQVNUQ0FMTCwgX3dpbmFwaV9SZWFkRmlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3dpbmFwaV9SZWFkRmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsIGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fd2luYXBpX1JlYWRGaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3dpbmFwaV9SZWFkRmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgInNpemUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyIiIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgaW50IHNpemU7CiAgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZoYW5kbGUsICZzaXplLCAmdXNlX292ZXJsYXBwZWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9SZWFkRmlsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBzaXplLCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIGV4aXQ6CkBAIC02ODgsOCArNzIxLDkgQEAKICAgICBQeU9iamVjdCAqY29sbGVjdF9kYXRhX3RpbWVvdXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIk9PTzpTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSIsCi0gICAgICAgICZuYW1lZF9waXBlLCAmbW9kZSwgJm1heF9jb2xsZWN0aW9uX2NvdW50LCAmY29sbGVjdF9kYXRhX3RpbWVvdXQpKQorICAgICAgICAmbmFtZWRfcGlwZSwgJm1vZGUsICZtYXhfY29sbGVjdGlvbl9jb3VudCwgJmNvbGxlY3RfZGF0YV90aW1lb3V0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfaW1wbChtb2R1bGUsIG5hbWVkX3BpcGUsIG1vZGUsIG1heF9jb2xsZWN0aW9uX2NvdW50LCBjb2xsZWN0X2RhdGFfdGltZW91dCk7CiAKIGV4aXQ6CkBAIC03MTcsOCArNzUxLDkgQEAKICAgICBVSU5UIGV4aXRfY29kZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiSTpUZXJtaW5hdGVQcm9jZXNzIiwKLSAgICAgICAgJmhhbmRsZSwgJmV4aXRfY29kZSkpCisgICAgICAgICZoYW5kbGUsICZleGl0X2NvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9UZXJtaW5hdGVQcm9jZXNzX2ltcGwobW9kdWxlLCBoYW5kbGUsIGV4aXRfY29kZSk7CiAKIGV4aXQ6CkBAIC03NDQsOCArNzc5LDkgQEAKICAgICBEV09SRCB0aW1lb3V0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzazpXYWl0TmFtZWRQaXBlIiwKLSAgICAgICAgJm5hbWUsICZ0aW1lb3V0KSkKKyAgICAgICAgJm5hbWUsICZ0aW1lb3V0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgbmFtZSwgdGltZW91dCk7CiAKIGV4aXQ6CkBAIC03NzQsOCArODEwLDkgQEAKICAgICBEV09SRCBtaWxsaXNlY29uZHMgPSBJTkZJTklURTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2l8azpXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwKLSAgICAgICAgJmhhbmRsZV9zZXEsICZ3YWl0X2ZsYWcsICZtaWxsaXNlY29uZHMpKQorICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHNfaW1wbChtb2R1bGUsIGhhbmRsZV9zZXEsIHdhaXRfZmxhZywgbWlsbGlzZWNvbmRzKTsKIAogZXhpdDoKQEAgLTgwOCwxMSArODQ1LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJrOldhaXRGb3JTaW5nbGVPYmplY3QiLAotICAgICAgICAmaGFuZGxlLCAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgJmhhbmRsZSwgJm1pbGxpc2Vjb25kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0X2ltcGwobW9kdWxlLCBoYW5kbGUsIG1pbGxpc2Vjb25kcyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTgyNSwyNyArODY0LDI5IEBACiAiXG4iKTsKIAogI2RlZmluZSBfV0lOQVBJX1dSSVRFRklMRV9NRVRIT0RERUYgICAgXAotICAgIHsiV3JpdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfV3JpdGVGaWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9Xcml0ZUZpbGVfX2RvY19ffSwKKyAgICB7IldyaXRlRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1dyaXRlRmlsZSwgTUVUSF9GQVNUQ0FMTCwgX3dpbmFwaV9Xcml0ZUZpbGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF93aW5hcGlfV3JpdGVGaWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgUHlPYmplY3QgKmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV93aW5hcGlfV3JpdGVGaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3dpbmFwaV9Xcml0ZUZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKICAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmhhbmRsZSwgJmJ1ZmZlciwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmhhbmRsZSwgJmJ1ZmZlciwgJnVzZV9vdmVybGFwcGVkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV3JpdGVGaWxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGJ1ZmZlciwgdXNlX292ZXJsYXBwZWQpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTRjNGIyYTlmY2IwYmVhMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDZkNjM4MmE2NjYyYzRhOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKaW5kZXggMGM3MDYxYS4uM2I5ZmNkYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaApAQCAtNzcsOCArNzcsOSBAQAogICAgIFB5X3NzaXplX3QgaSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwb3AiLAotICAgICAgICAmaSkpCisgICAgICAgICZpKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X3BvcF9pbXBsKHNlbGYsIGkpOwogCiBleGl0OgpAQCAtMTE0LDggKzExNSw5IEBACiAgICAgUHlPYmplY3QgKnY7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5POmluc2VydCIsCi0gICAgICAgICZpLCAmdikpCisgICAgICAgICZpLCAmdikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9pbnNlcnRfaW1wbChzZWxmLCBpLCB2KTsKIAogZXhpdDoKQEAgLTIxMSw4ICsyMTMsOSBAQAogICAgIFB5X3NzaXplX3QgbjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLAotICAgICAgICAmZiwgJm4pKQorICAgICAgICAmZiwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWZpbGVfaW1wbChzZWxmLCBmLCBuKTsKIAogZXhpdDoKQEAgLTI3NSwxNCArMjc4LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXN0cmluZ19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzA1LDE0ICszMTAsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpmcm9tYnl0ZXMiLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNzksOCArMzg2LDkgQEAKICAgICBQeV9VTklDT0RFICp1c3RyOwogICAgIFB5X3NzaXplX2NsZWFuX3QgdXN0cl9sZW5ndGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZ1c3RyX2xlbmd0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1Izpmcm9tdW5pY29kZSIsICZ1c3RyLCAmdXN0cl9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGVfaW1wbChzZWxmLCB1c3RyLCB1c3RyX2xlbmd0aCk7CiAKIGV4aXQ6CkBAIC00NTMsOCArNDYxLDkgQEAKICAgICBQeU9iamVjdCAqaXRlbXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9DaU86X2FycmF5X3JlY29uc3RydWN0b3IiLAotICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGUsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpCisgICAgICAgICZhcnJheXR5cGUsICZ0eXBlY29kZSwgJm1mb3JtYXRfY29kZSwgJml0ZW1zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X19hcnJheV9yZWNvbnN0cnVjdG9yX2ltcGwobW9kdWxlLCBhcnJheXR5cGUsIHR5cGVjb2RlLCBtZm9ybWF0X2NvZGUsIGl0ZW1zKTsKIAogZXhpdDoKQEAgLTQ5Niw0ICs1MDUsNCBAQAogCiAjZGVmaW5lIEFSUkFZX0FSUkFZSVRFUkFUT1JfX19TRVRTVEFURV9fX01FVEhPRERFRiAgICBcCiAgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3NldHN0YXRlX18sIE1FVEhfTywgYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3NldHN0YXRlX19fX2RvY19ffSwKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMDVkZjNmNTc5NjAzOWU0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMjA1NGZiNzY0YzhjYzY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oIGIvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmgKaW5kZXggNjJlMzEzYjUuLmJlNGI3MTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oCkBAIC0yNCwxNCArMjQsMTYgQEAKICAgICBQeV9zc2l6ZV90IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmluOmdldHNhbXBsZSIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmaW5kZXgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBpbmRleCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU2LDE0ICs1OCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1heCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04OCwxNCArOTIsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTptaW5tYXgiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbWlubWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTIwLDE0ICsxMjYsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTphdmciLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYXZnX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTUyLDE0ICsxNjAsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpybXMiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3Bfcm1zX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTg1LDE3ICsxOTUsMjAgQEAKICAgICBQeV9idWZmZXIgcmVmZXJlbmNlID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOmZpbmRmaXQiLAotICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKQorICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kZml0X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsICZyZWZlcmVuY2UpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciByZWZlcmVuY2UgKi8KLSAgICBpZiAocmVmZXJlbmNlLm9iaikKKyAgICBpZiAocmVmZXJlbmNlLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnJlZmVyZW5jZSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIyMSwxNyArMjM0LDIwIEBACiAgICAgUHlfYnVmZmVyIHJlZmVyZW5jZSA9IHtOVUxMLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjpmaW5kZmFjdG9yIiwKLSAgICAgICAgJmZyYWdtZW50LCAmcmVmZXJlbmNlKSkKKyAgICAgICAgJmZyYWdtZW50LCAmcmVmZXJlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCAmcmVmZXJlbmNlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgcmVmZXJlbmNlICovCi0gICAgaWYgKHJlZmVyZW5jZS5vYmopCisgICAgaWYgKHJlZmVyZW5jZS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZyZWZlcmVuY2UpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yNTcsMTQgKzI3MywxNiBAQAogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Km46ZmluZG1heCIsCi0gICAgICAgICZmcmFnbWVudCwgJmxlbmd0aCkpCisgICAgICAgICZmcmFnbWVudCwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRtYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjg5LDE0ICszMDcsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTphdmdwcCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hdmdwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMyMSwxNCArMzQxLDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWF4cHAiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbWF4cHBfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNTMsMTQgKzM3NSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmNyb3NzIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2Nyb3NzX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzg3LDE0ICs0MTEsMTYgQEAKICAgICBkb3VibGUgZmFjdG9yOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlkOm11bCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmZmFjdG9yKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZmYWN0b3IpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tdWxfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGZhY3Rvcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQyMiwxNCArNDQ4LDE2IEBACiAgICAgZG91YmxlIHJmYWN0b3I7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWRkOnRvbW9ubyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdG9tb25vX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBsZmFjdG9yLCByZmFjdG9yKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDU3LDE0ICs0ODUsMTYgQEAKICAgICBkb3VibGUgcmZhY3RvcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZGQ6dG9zdGVyZW8iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3Rvc3RlcmVvX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBsZmFjdG9yLCByZmFjdG9yKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDkxLDE3ICs1MjEsMjAgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSppOmFkZCIsCi0gICAgICAgICZmcmFnbWVudDEsICZmcmFnbWVudDIsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudDEsICZmcmFnbWVudDIsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FkZF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50MSwgJmZyYWdtZW50Miwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50MSAqLwotICAgIGlmIChmcmFnbWVudDEub2JqKQorICAgIGlmIChmcmFnbWVudDEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQxKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQyICovCi0gICAgaWYgKGZyYWdtZW50Mi5vYmopCisgICAgaWYgKGZyYWdtZW50Mi5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudDIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01MjcsMTQgKzU2MCwxNiBAQAogICAgIGludCBiaWFzOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpOmJpYXMiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmJpYXMpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmJpYXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9iaWFzX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBiaWFzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTU5LDE0ICs1OTQsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpyZXZlcnNlIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3JldmVyc2VfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01OTEsMTQgKzYyOCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmJ5dGVzd2FwIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2J5dGVzd2FwX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjI1LDE0ICs2NjQsMTYgQEAKICAgICBpbnQgbmV3d2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWk6bGluMmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmV3d2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5ld3dpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmV3d2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02NjYsMTQgKzcwNywxNiBAQAogICAgIGludCB3ZWlnaHRCID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaWlpT3xpaTpyYXRlY3YiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5jaGFubmVscywgJmlucmF0ZSwgJm91dHJhdGUsICZzdGF0ZSwgJndlaWdodEEsICZ3ZWlnaHRCKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuY2hhbm5lbHMsICZpbnJhdGUsICZvdXRyYXRlLCAmc3RhdGUsICZ3ZWlnaHRBLCAmd2VpZ2h0QikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3JhdGVjdl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmNoYW5uZWxzLCBpbnJhdGUsIG91dHJhdGUsIHN0YXRlLCB3ZWlnaHRBLCB3ZWlnaHRCKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjk4LDE0ICs3NDEsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpsaW4ydWxhdyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4ydWxhd19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTczMCwxNCArNzc1LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6dWxhdzJsaW4iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdWxhdzJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03NjIsMTQgKzgwOSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmxpbjJhbGF3IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJhbGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNzk0LDE0ICs4NDMsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTphbGF3MmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hbGF3Mmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgyOCwxNCArODc5LDE2IEBACiAgICAgUHlPYmplY3QgKnN0YXRlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmxpbjJhZHBjbSIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJnN0YXRlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmFkcGNtX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBzdGF0ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg2MiwxNSArOTE1LDE3IEBACiAgICAgUHlPYmplY3QgKnN0YXRlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmFkcGNtMmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJnN0YXRlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYWRwY20ybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBzdGF0ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zODVmYjA5ZmEyMWE2MmMwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGFiNzRjM2ZhNTdjMzljIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaCBiL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaAppbmRleCBlMjBjYWMyLi5hY2FmY2JmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCkBAIC0yMCw4ICsyMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl91dSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl91dSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl91dV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgpAQCAtNTAsMTQgKzUxLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV91dSIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV91dSIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV91dV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgwLDggKzgzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9iYXNlNjQiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfYmFzZTY0X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CkBAIC05MywzMSArOTcsMzcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGJpbmFzY2lpX2IyYV9iYXNlNjRfX2RvY19fLAotImIyYV9iYXNlNjQoJG1vZHVsZSwgZGF0YSwgLylcbiIKKyJiMmFfYmFzZTY0KCRtb2R1bGUsIC8sIGRhdGEsICosIG5ld2xpbmU9VHJ1ZSlcbiIKICItLVxuIgogIlxuIgogIkJhc2U2NC1jb2RlIGxpbmUgb2YgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9CMkFfQkFTRTY0X01FVEhPRERFRiAgICBcCi0gICAgeyJiMmFfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9iYXNlNjQsIE1FVEhfTywgYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX199LAorICAgIHsiYjJhX2Jhc2U2NCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfYmFzZTY0LCBNRVRIX0ZBU1RDQUxMLCBiaW5hc2NpaV9iMmFfYmFzZTY0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKK2JpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBuZXdsaW5lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9iYXNlNjQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK2JpbmFzY2lpX2IyYV9iYXNlNjQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgIm5ld2xpbmUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnwkaTpiMmFfYmFzZTY0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgbmV3bGluZSA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9iYXNlNjQiLCAmZGF0YSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmbmV3bGluZSkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhKTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKG1vZHVsZSwgJmRhdGEsIG5ld2xpbmUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE0MCw4ICsxNTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaHF4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hxeCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKQEAgLTE3MCwxNCArMTgxLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWNvZGVfaHF4IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlY29kZV9ocXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9ybGVjb2RlX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIwMCwxNCArMjEzLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9ocXgiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfaHF4IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIzMCwxNCArMjQ1LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWRlY29kZV9ocXgiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVkZWNvZGVfaHF4IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfcmxlZGVjb2RlX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI2MywxNyArMjgwLDIwIEBACiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqSTpjcmNfaHF4IiwKLSAgICAgICAgJmRhdGEsICZjcmMpKQorICAgICAgICAmZGF0YSwgJmNyYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfY3JjX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEsIGNyYyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yOTksMTcgKzMxOSwyMCBAQAogICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmNyYzMyIiwKLSAgICAgICAgJmRhdGEsICZjcmMpKQorICAgICAgICAmZGF0YSwgJmNyYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCBjcmMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzM1LDE0ICszNTgsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hleCIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9oZXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfaGV4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzY3LDE0ICszOTIsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6aGV4bGlmeSIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmhleGxpZnkiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9oZXhsaWZ5X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDAwLDggKzQyNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGhleHN0ciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hleCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hleCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX2hleF9pbXBsKG1vZHVsZSwgJmhleHN0cik7CiAKIGV4aXQ6CkBAIC00MzIsOCArNDYwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgaGV4c3RyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bmhleGxpZnkiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuaGV4bGlmeSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfdW5oZXhsaWZ5X2ltcGwobW9kdWxlLCAmaGV4c3RyKTsKIAogZXhpdDoKQEAgLTQ1MSwyMiArNDgwLDI0IEBACiAiRGVjb2RlIGEgc3RyaW5nIG9mIHFwLWVuY29kZWQgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9BMkJfUVBfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl9xcCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfcXAsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBiaW5hc2NpaV9hMmJfcXBfX2RvY19ffSwKKyAgICB7ImEyYl9xcCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfcXAsIE1FVEhfRkFTVENBTEwsIGJpbmFzY2lpX2EyYl9xcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX3FwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgaGVhZGVyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2EyYl9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2JpbmFzY2lpX2EyYl9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJoZWFkZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSwgJmhlYWRlcikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhLCAmaGVhZGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9xcF9pbXBsKG1vZHVsZSwgJmRhdGEsIGhlYWRlcik7CiAKIGV4aXQ6CkBAIC00ODgsMzIgKzUxOSwzNSBAQAogImFyZSBib3RoIGVuY29kZWQuICBXaGVuIHF1b3RldGFicyBpcyBzZXQsIHNwYWNlIGFuZCB0YWJzIGFyZSBlbmNvZGVkLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9RUF9NRVRIT0RERUYgICAgXAotICAgIHsiYjJhX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9xcCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJpbmFzY2lpX2IyYV9xcF9fZG9jX199LAorICAgIHsiYjJhX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9xcCwgTUVUSF9GQVNUQ0FMTCwgYmluYXNjaWlfYjJhX3FwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfcXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgaXN0ZXh0LCBpbnQgaGVhZGVyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2JpbmFzY2lpX2IyYV9xcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJxdW90ZXRhYnMiLCAiaXN0ZXh0IiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAicXVvdGV0YWJzIiwgImlzdGV4dCIsICJoZWFkZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpaWk6YjJhX3FwIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgcXVvdGV0YWJzID0gMDsKICAgICBpbnQgaXN0ZXh0ID0gMTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGlpaTpiMmFfcXAiLCBfa2V5d29yZHMsCi0gICAgICAgICZkYXRhLCAmcXVvdGV0YWJzLCAmaXN0ZXh0LCAmaGVhZGVyKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZxdW90ZXRhYnMsICZpc3RleHQsICZoZWFkZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX3FwX2ltcGwobW9kdWxlLCAmZGF0YSwgcXVvdGV0YWJzLCBpc3RleHQsIGhlYWRlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxMTczZmM5NzE4YTVlZGMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFmOGQ2ZTQ4Zjc1ZjZkMWUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oCmluZGV4IGEyNTUzNTMuLjA1NDMxZmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmgKQEAgLTIxLDggKzIxLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3MiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3MiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc19pbXBsKG1vZHVsZSwgeik7CkBAIC02Miw4ICs2Myw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphY29zaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvc2giLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc2hfaW1wbChtb2R1bGUsIHopOwpAQCAtMTAzLDggKzEwNSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2FzaW5faW1wbChtb2R1bGUsIHopOwpAQCAtMTQ0LDggKzE0Nyw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXNpbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtMTg1LDggKzE4OSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2F0YW5faW1wbChtb2R1bGUsIHopOwpAQCAtMjI2LDggKzIzMSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXRhbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtMjY3LDggKzI3Myw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3MiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvcyIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9jb3NfaW1wbChtb2R1bGUsIHopOwpAQCAtMzA4LDggKzMxNSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3NoIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3NoIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2Nvc2hfaW1wbChtb2R1bGUsIHopOwpAQCAtMzQ5LDggKzM1Nyw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpleHAiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmV4cCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9leHBfaW1wbChtb2R1bGUsIHopOwpAQCAtMzkwLDggKzM5OSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpsb2cxMCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6bG9nMTAiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfbG9nMTBfaW1wbChtb2R1bGUsIHopOwpAQCAtNDMxLDggKzQ0MSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzaW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9zaW5faW1wbChtb2R1bGUsIHopOwpAQCAtNDcyLDggKzQ4Myw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzaW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzaW5oIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3NpbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtNTEzLDggKzUyNSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzcXJ0IiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzcXJ0IiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHopOwpAQCAtNTU0LDggKzU2Nyw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF90YW5faW1wbChtb2R1bGUsIHopOwpAQCAtNTk1LDggKzYwOSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW5oIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3RhbmhfaW1wbChtb2R1bGUsIHopOwpAQCAtNjM5LDggKzY1NCw5IEBACiAgICAgUHlPYmplY3QgKnlfb2JqID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRHxPOmxvZyIsCi0gICAgICAgICZ4LCAmeV9vYmopKQorICAgICAgICAmeCwgJnlfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2xvZ19pbXBsKG1vZHVsZSwgeCwgeV9vYmopOwogCiBleGl0OgpAQCAtNjY1LDggKzY4MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBoYXNlIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwaGFzZSIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3BoYXNlX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTY5Myw4ICs3MTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwb2xhciIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cG9sYXIiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9wb2xhcl9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC03MjEsOCArNzM5LDkgQEAKICAgICBkb3VibGUgcGhpOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkZDpyZWN0IiwKLSAgICAgICAgJnIsICZwaGkpKQorICAgICAgICAmciwgJnBoaSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9yZWN0X2ltcGwobW9kdWxlLCByLCBwaGkpOwogCiBleGl0OgpAQCAtNzQ3LDggKzc2Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzZmluaXRlIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2Zpbml0ZSIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzZmluaXRlX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTc3Myw4ICs3OTMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc25hbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNuYW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9pc25hbl9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC03OTksOCArODIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNpbmYiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzaW5mIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNpbmZfaW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtODI5LDMyICs4NTEsMzUgQEAKICJub3QgY2xvc2UgdG8gYW55dGhpbmcsIGV2ZW4gaXRzZWxmLiBpbmYgYW5kIC1pbmYgYXJlIG9ubHkgY2xvc2UgdG8gdGhlbXNlbHZlcy4iKTsKIAogI2RlZmluZSBDTUFUSF9JU0NMT1NFX01FVEhPRERFRiAgICBcCi0gICAgeyJpc2Nsb3NlIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzY2xvc2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBjbWF0aF9pc2Nsb3NlX19kb2NfX30sCisgICAgeyJpc2Nsb3NlIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzY2xvc2UsIE1FVEhfRkFTVENBTEwsIGNtYXRoX2lzY2xvc2VfX2RvY19ffSwKIAogc3RhdGljIGludAogY21hdGhfaXNjbG9zZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiLAogICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxfdG9sLCBkb3VibGUgYWJzX3RvbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9pc2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorY21hdGhfaXNjbG9zZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImEiLCAiYiIsICJyZWxfdG9sIiwgImFic190b2wiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJERHwkZGQ6aXNjbG9zZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfY29tcGxleCBhOwogICAgIFB5X2NvbXBsZXggYjsKICAgICBkb3VibGUgcmVsX3RvbCA9IDFlLTA5OwogICAgIGRvdWJsZSBhYnNfdG9sID0gMC4wOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiRER8JGRkOmlzY2xvc2UiLCBfa2V5d29yZHMsCi0gICAgICAgICZhLCAmYiwgJnJlbF90b2wsICZhYnNfdG9sKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmEsICZiLCAmcmVsX3RvbCwgJmFic190b2wpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2lzY2xvc2VfaW1wbChtb2R1bGUsIGEsIGIsIHJlbF90b2wsIGFic190b2wpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzIxOTQwMjliN2ZiMWU3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NzhmNTk3MDJiNDE2NTVmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaAppbmRleCA2NzY2MGViLi44NGEwMDRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oCkBAIC0zMyw4ICszMyw5IEBACiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPOmZjbnRsIiwKLSAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmYXJnKSkKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2ZjbnRsX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgYXJnKTsKIAogZXhpdDoKQEAgLTkxLDggKzkyLDkgQEAKICAgICBpbnQgbXV0YXRlX2FyZyA9IDE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mSXxPcDppb2N0bCIsCi0gICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJm9iX2FyZywgJm11dGF0ZV9hcmcpKQorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZvYl9hcmcsICZtdXRhdGVfYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2lvY3RsX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgb2JfYXJnLCBtdXRhdGVfYXJnKTsKIAogZXhpdDoKQEAgLTEyMiw4ICsxMjQsOSBAQAogICAgIGludCBjb2RlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6ZmxvY2siLAotICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKQorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfZmxvY2tfaW1wbChtb2R1bGUsIGZkLCBjb2RlKTsKIAogZXhpdDoKQEAgLTE3NSwxMSArMTc4LDEyIEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPT2k6bG9ja2YiLAotICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZsZW5vYmosICZzdGFydG9iaiwgJndoZW5jZSkpCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmxlbm9iaiwgJnN0YXJ0b2JqLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2xvY2tmX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgbGVub2JqLCBzdGFydG9iaiwgd2hlbmNlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk3YjEzMDZiODY0YzAxYzggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2Y2ZmNzZhOGZiMmM5YTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2dycG1vZHVsZS5jLmgKaW5kZXggMmM0N2E0Mi4uMDI4MmI0ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oCkBAIC0xMSwyMSArMTEsMjMgQEAKICJJZiBpZCBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiIpOwogCiAjZGVmaW5lIEdSUF9HRVRHUkdJRF9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0Z3JnaWQiLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdyZ2lkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZ3JwX2dldGdyZ2lkX19kb2NfX30sCisgICAgeyJnZXRncmdpZCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JnaWQsIE1FVEhfRkFTVENBTEwsIGdycF9nZXRncmdpZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogZ3JwX2dldGdyZ2lkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmlkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWdycF9nZXRncmdpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2dycF9nZXRncmdpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86Z2V0Z3JnaWQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86Z2V0Z3JnaWQiLCBfa2V5d29yZHMsCi0gICAgICAgICZpZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JnaWRfaW1wbChtb2R1bGUsIGlkKTsKIAogZXhpdDoKQEAgLTQxLDIxICs0MywyMyBAQAogIklmIG5hbWUgaXMgbm90IHZhbGlkLCByYWlzZSBLZXlFcnJvci4iKTsKIAogI2RlZmluZSBHUlBfR0VUR1JOQU1fTUVUSE9EREVGICAgIFwKLSAgICB7ImdldGdybmFtIiwgKFB5Q0Z1bmN0aW9uKWdycF9nZXRncm5hbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGdycF9nZXRncm5hbV9fZG9jX199LAorICAgIHsiZ2V0Z3JuYW0iLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdybmFtLCBNRVRIX0ZBU1RDQUxMLCBncnBfZ2V0Z3JuYW1fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGdycF9nZXRncm5hbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWdycF9nZXRncm5hbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2dycF9nZXRncm5hbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJVOmdldGdybmFtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlU6Z2V0Z3JuYW0iLCBfa2V5d29yZHMsCi0gICAgICAgICZuYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZ3JwX2dldGdybmFtX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTgyLDQgKzg2LDQgQEAKIHsKICAgICByZXR1cm4gZ3JwX2dldGdyYWxsX2ltcGwobW9kdWxlKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZWUwOWZlZWZjNTRhMmNiIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNjQxN2FlMGE3Mjk4ZTBlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oCmluZGV4IDBiZDk1OGEuLmE4NDFmZTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaApAQCAtNzIsMjQgKzcyLDI2IEBACiAiUmV0dXJuIGEgbmV3IE1ENSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9NRDVfTUQ1X01FVEhPRERFRiAgICBcCi0gICAgeyJtZDUiLCAoUHlDRnVuY3Rpb24pX21kNV9tZDUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbWQ1X21kNV9fZG9jX199LAorICAgIHsibWQ1IiwgKFB5Q0Z1bmN0aW9uKV9tZDVfbWQ1LCBNRVRIX0ZBU1RDQUxMLCBfbWQ1X21kNV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX21kNV9tZDVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9tZDVfbWQ1KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX21kNV9tZDUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOm1kNSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzptZDUiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tZDVfbWQ1X2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGNkM2NjOTZlMzU1NjNkMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTRjZDUwZGIwNTBmMjU4OSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmgKaW5kZXggMWJiZmMwNi4uNzJkNzgzNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvcG9zaXhtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaApAQCAtMjcsMjMgKzI3LDI1IEBACiAiICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4iKTsKIAogI2RlZmluZSBPU19TVEFUX01FVEhPRERFRiAgICBcCi0gICAgeyJzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zdGF0X19kb2NfX30sCisgICAgeyJzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXQsIE1FVEhfRkFTVENBTEwsIG9zX3N0YXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3N0YXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJnA6c3RhdCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3RhdCIsICJwYXRoIiwgMCwgMSk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mcDpzdGF0IiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC02MywyMiArNjUsMjQgQEAKICJFcXVpdmFsZW50IHRvIHN0YXQocGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogI2RlZmluZSBPU19MU1RBVF9NRVRIT0RERUYgICAgXAotICAgIHsibHN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfbHN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sc3RhdF9fZG9jX199LAorICAgIHsibHN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfbHN0YXQsIE1FVEhfRkFTVENBTEwsIG9zX2xzdGF0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sc3RhdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19sc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xzdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mOmxzdGF0IiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsc3RhdCIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOmxzdGF0IiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xzdGF0X2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEyMSwxNyArMTI1LDE4IEBACiAiICBoYXMgdGhlIHNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguIik7CiAKICNkZWZpbmUgT1NfQUNDRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJhY2Nlc3MiLCAoUHlDRnVuY3Rpb24pb3NfYWNjZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfYWNjZXNzX19kb2NfX30sCisgICAgeyJhY2Nlc3MiLCAoUHlDRnVuY3Rpb24pb3NfYWNjZXNzLCBNRVRIX0ZBU1RDQUxMLCBvc19hY2Nlc3NfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfYWNjZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKICAgICAgICAgICAgICAgIGludCBlZmZlY3RpdmVfaWRzLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2FjY2VzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2FjY2VzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZWZmZWN0aXZlX2lkcyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJml8JE8mcHA6YWNjZXNzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJhY2Nlc3MiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKQEAgLTEzOSwxMiArMTQ0LDE0IEBACiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcHA6YWNjZXNzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQUNDRVNTQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmVmZmVjdGl2ZV9pZHMsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQUNDRVNTQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmVmZmVjdGl2ZV9pZHMsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2FjY2Vzc19pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCwgZWZmZWN0aXZlX2lkcywgZm9sbG93X3N5bWxpbmtzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTc4LDExICsxODUsMTMgQEAKICAgICBpbnQgZmQ7CiAgICAgY2hhciAqX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0dHluYW1lIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dHR5bmFtZSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfdHR5bmFtZV9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMjQsMjEgKzIzMywyMyBAQAogIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiAjZGVmaW5lIE9TX0NIRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJjaGRpciIsIChQeUNGdW5jdGlvbilvc19jaGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2NoZGlyX19kb2NfX30sCisgICAgeyJjaGRpciIsIChQeUNGdW5jdGlvbilvc19jaGRpciwgTUVUSF9GQVNUQ0FMTCwgb3NfY2hkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NoZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2NoZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6Y2hkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNoZGlyIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNIRElSKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hkaXJfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTI2MCwyMSArMjcxLDIzIEBACiAiRXF1aXZhbGVudCB0byBvcy5jaGRpcihmZCkuIik7CiAKICNkZWZpbmUgT1NfRkNIRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJmY2hkaXIiLCAoUHlDRnVuY3Rpb24pb3NfZmNoZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNoZGlyX19kb2NfX30sCisgICAgeyJmY2hkaXIiLCAoUHlDRnVuY3Rpb24pb3NfZmNoZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19mY2hkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZjaGRpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpmY2hkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmZjaGRpciIsIF9rZXl3b3JkcywKLSAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZjaGRpcl9pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtMzEwLDI1ICszMjMsMjcgQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX0NITU9EX01FVEhPRERFRiAgICBcCi0gICAgeyJjaG1vZCIsIChQeUNGdW5jdGlvbilvc19jaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2NobW9kX19kb2NfX30sCisgICAgeyJjaG1vZCIsIChQeUNGdW5jdGlvbilvc19jaG1vZCwgTUVUSF9GQVNUQ0FMTCwgb3NfY2htb2RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NobW9kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZpfCRPJnA6Y2htb2QiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNobW9kIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNITU9EKTsKICAgICBpbnQgbW9kZTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcDpjaG1vZCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgRkNITU9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZDSE1PREFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2htb2RfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC0zNDksMjIgKzM2NCwyNCBAQAogIkVxdWl2YWxlbnQgdG8gb3MuY2htb2QoZmQsIG1vZGUpLiIpOwogCiAjZGVmaW5lIE9TX0ZDSE1PRF9NRVRIT0RERUYgICAgXAotICAgIHsiZmNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaG1vZF9fZG9jX199LAorICAgIHsiZmNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG1vZCwgTUVUSF9GQVNUQ0FMTCwgb3NfZmNobW9kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mY2htb2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQsIGludCBtb2RlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAibW9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaTpmY2htb2QiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKICAgICBpbnQgbW9kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmZjaG1vZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkLCAmbW9kZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCwgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNobW9kX2ltcGwobW9kdWxlLCBmZCwgbW9kZSk7CiAKIGV4aXQ6CkBAIC0zODUsMjIgKzQwMiwyNCBAQAogIkVxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5cIiIpOwogCiAjZGVmaW5lIE9TX0xDSE1PRF9NRVRIT0RERUYgICAgXAotICAgIHsibGNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG1vZF9fZG9jX199LAorICAgIHsibGNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG1vZCwgTUVUSF9GQVNUQ0FMTCwgb3NfbGNobW9kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sY2htb2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xjaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZpOmxjaG1vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNobW9kIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maTpsY2htb2QiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xjaG1vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUpOwogCiBleGl0OgpAQCAtNDI3LDI0ICs0NDYsMjYgQEAKICJ1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfQ0hGTEFHU19NRVRIT0RERUYgICAgXAotICAgIHsiY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19jaGZsYWdzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hmbGFnc19fZG9jX199LAorICAgIHsiY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19jaGZsYWdzLCBNRVRIX0ZBU1RDQUxMLCBvc19jaGZsYWdzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jaGZsYWdzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzLAogICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2hmbGFncyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NoZmxhZ3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJmt8cDpjaGZsYWdzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaGZsYWdzIiwgInBhdGgiLCAwLCAwKTsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZrfHA6Y2hmbGFncyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaGZsYWdzX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC00NjgsMjIgKzQ4OSwyNCBAQAogIkVxdWl2YWxlbnQgdG8gY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogI2RlZmluZSBPU19MQ0hGTEFHU19NRVRIT0RERUYgICAgXAotICAgIHsibGNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfbGNoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sY2hmbGFnc19fZG9jX199LAorICAgIHsibGNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfbGNoZmxhZ3MsIE1FVEhfRkFTVENBTEwsIG9zX2xjaGZsYWdzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sY2hmbGFnc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdW5zaWduZWQgbG9uZyBmbGFncyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19sY2hmbGFncyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xjaGZsYWdzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mazpsY2hmbGFncyIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNoZmxhZ3MiLCAicGF0aCIsIDAsIDApOwogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJms6bGNoZmxhZ3MiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGNoZmxhZ3NfaW1wbChtb2R1bGUsICZwYXRoLCBmbGFncyk7CiAKIGV4aXQ6CkBAIC01MDQsMjEgKzUyNywyMyBAQAogIkNoYW5nZSByb290IGRpcmVjdG9yeSB0byBwYXRoLiIpOwogCiAjZGVmaW5lIE9TX0NIUk9PVF9NRVRIT0RERUYgICAgXAotICAgIHsiY2hyb290IiwgKFB5Q0Z1bmN0aW9uKW9zX2Nocm9vdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nocm9vdF9fZG9jX199LAorICAgIHsiY2hyb290IiwgKFB5Q0Z1bmN0aW9uKW9zX2Nocm9vdCwgTUVUSF9GQVNUQ0FMTCwgb3NfY2hyb290X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jaHJvb3RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2hyb290KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hyb290KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmNocm9vdCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hyb290IiwgInBhdGgiLCAwLCAwKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNocm9vdCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nocm9vdF9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtNTM5LDIxICs1NjQsMjMgQEAKICJGb3JjZSB3cml0ZSBvZiBmZCB0byBkaXNrLiIpOwogCiAjZGVmaW5lIE9TX0ZTWU5DX01FVEhPRERFRiAgICBcCi0gICAgeyJmc3luYyIsIChQeUNGdW5jdGlvbilvc19mc3luYywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZzeW5jX19kb2NfX30sCisgICAgeyJmc3luYyIsIChQeUNGdW5jdGlvbilvc19mc3luYywgTUVUSF9GQVNUQ0FMTCwgb3NfZnN5bmNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZzeW5jX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZzeW5jKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZnN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpmc3luYyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZnN5bmMiLCBfa2V5d29yZHMsCi0gICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mc3luY19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNTkzLDIxICs2MjAsMjMgQEAKICJGb3JjZSB3cml0ZSBvZiBmZCB0byBkaXNrIHdpdGhvdXQgZm9yY2luZyB1cGRhdGUgb2YgbWV0YWRhdGEuIik7CiAKICNkZWZpbmUgT1NfRkRBVEFTWU5DX01FVEhPRERFRiAgICBcCi0gICAgeyJmZGF0YXN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZmRhdGFzeW5jLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmRhdGFzeW5jX19kb2NfX30sCisgICAgeyJmZGF0YXN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZmRhdGFzeW5jLCBNRVRIX0ZBU1RDQUxMLCBvc19mZGF0YXN5bmNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZkYXRhc3luY19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mZGF0YXN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mZGF0YXN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpmZGF0YXN5bmMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmZkYXRhc3luYyIsIF9rZXl3b3JkcywKLSAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZkYXRhc3luY19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNjQ5LDI2ICs2NzgsMjggQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX0NIT1dOX01FVEhPRERFRiAgICBcCi0gICAgeyJjaG93biIsIChQeUNGdW5jdGlvbilvc19jaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nob3duX19kb2NfX30sCisgICAgeyJjaG93biIsIChQeUNGdW5jdGlvbilvc19jaG93biwgTUVUSF9GQVNUQ0FMTCwgb3NfY2hvd25fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2Nob3duX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwKICAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2Nob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJk8mfCRPJnA6Y2hvd24iLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNob3duIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNIT1dOKTsKICAgICB1aWRfdCB1aWQ7CiAgICAgZ2lkX3QgZ2lkOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZPJnwkTyZwOmNob3duIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCwgRkNIT1dOQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLCBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nob3duX2ltcGwobW9kdWxlLCAmcGF0aCwgdWlkLCBnaWQsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTY5MSwyMyArNzIyLDI1IEBACiAiRXF1aXZhbGVudCB0byBvcy5jaG93bihmZCwgdWlkLCBnaWQpLiIpOwogCiAjZGVmaW5lIE9TX0ZDSE9XTl9NRVRIT0RERUYgICAgXAotICAgIHsiZmNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaG93bl9fZG9jX199LAorICAgIHsiZmNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaG93biwgTUVUSF9GQVNUQ0FMTCwgb3NfZmNob3duX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mY2hvd25faW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpTyZPJjpmY2hvd24iLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKICAgICB1aWRfdCB1aWQ7CiAgICAgZ2lkX3QgZ2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaU8mTyY6ZmNob3duIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZjaG93bl9pbXBsKG1vZHVsZSwgZmQsIHVpZCwgZ2lkKTsKIAogZXhpdDoKQEAgLTcyOCwyMyArNzYxLDI1IEBACiAiRXF1aXZhbGVudCB0byBvcy5jaG93bihwYXRoLCB1aWQsIGdpZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogI2RlZmluZSBPU19MQ0hPV05fTUVUSE9EREVGICAgIFwKLSAgICB7ImxjaG93biIsIChQeUNGdW5jdGlvbilvc19sY2hvd24sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sY2hvd25fX2RvY19ffSwKKyAgICB7ImxjaG93biIsIChQeUNGdW5jdGlvbilvc19sY2hvd24sIE1FVEhfRkFTVENBTEwsIG9zX2xjaG93bl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGNob3duX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19sY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19sY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZPJjpsY2hvd24iLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxjaG93biIsICJwYXRoIiwgMCwgMCk7CiAgICAgdWlkX3QgdWlkOwogICAgIGdpZF90IGdpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZPJjpsY2hvd24iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGNob3duX2ltcGwobW9kdWxlLCAmcGF0aCwgdWlkLCBnaWQpOwogCiBleGl0OgpAQCAtODEyLDI2ICs4NDcsMjggQEAKICIgIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfTElOS19NRVRIT0RERUYgICAgXAotICAgIHsibGluayIsIChQeUNGdW5jdGlvbilvc19saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGlua19fZG9jX199LAorICAgIHsibGluayIsIChQeUNGdW5jdGlvbilvc19saW5rLCBNRVRIX0ZBU1RDQUxMLCBvc19saW5rX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19saW5rX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKICAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkTyZPJnA6bGluayIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaW5rIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgibGluayIsICJkc3QiLCAwLCAwKTsKICAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRPJk8mcDpsaW5rIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC04NjMsMjEgKzkwMCwyMyBAQAogImVudHJpZXMgXCcuXCcgYW5kIFwnLi5cJyBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4iKTsKIAogI2RlZmluZSBPU19MSVNURElSX01FVEhPRERFRiAgICBcCi0gICAgeyJsaXN0ZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpc3RkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saXN0ZGlyX19kb2NfX30sCisgICAgeyJsaXN0ZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpc3RkaXIsIE1FVEhfRkFTVENBTEwsIG9zX2xpc3RkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xpc3RkaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbGlzdGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xpc3RkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE8mOmxpc3RkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpc3RkaXIiLCAicGF0aCIsIDEsIFBBVEhfSEFWRV9GRE9QRU5ESVIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOmxpc3RkaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19saXN0ZGlyX2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC05MDYsOCArOTQ1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJfZ2V0ZnVsbHBhdGhuYW1lIiwgInBhdGgiLCAwLCAwKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2dldGZ1bGxwYXRobmFtZSIsIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRmdWxscGF0aG5hbWVfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTkzOSw4ICs5NzksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOl9nZXRmaW5hbHBhdGhuYW1lIiwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpfZ2V0ZmluYWxwYXRobmFtZSIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRmaW5hbHBhdGhuYW1lX2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTk2OCw4ICsxMDA5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJfaXNkaXIiLCAicGF0aCIsIDAsIDApOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfaXNkaXIiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2lzZGlyIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19pc2Rpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtOTkwLDIxICsxMDMyLDIzIEBACiAiQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGlzbW91bnQgb24gV2luMzIuIik7CiAKICNkZWZpbmUgT1NfX0dFVFZPTFVNRVBBVEhOQU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJfZ2V0dm9sdW1lcGF0aG5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfX2dldHZvbHVtZXBhdGhuYW1lLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2dldHZvbHVtZXBhdGhuYW1lX19kb2NfX30sCisgICAgeyJfZ2V0dm9sdW1lcGF0aG5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfX2dldHZvbHVtZXBhdGhuYW1lLCBNRVRIX0ZBU1RDQUxMLCBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX19nZXR2b2x1bWVwYXRobmFtZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX19nZXR2b2x1bWVwYXRobmFtZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJVOl9nZXR2b2x1bWVwYXRobmFtZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVOl9nZXR2b2x1bWVwYXRobmFtZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtMTAyNywyMyArMTA3MSwyNSBAQAogIlRoZSBtb2RlIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4iKTsKIAogI2RlZmluZSBPU19NS0RJUl9NRVRIT0RERUYgICAgXAotICAgIHsibWtkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbWtkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta2Rpcl9fZG9jX199LAorICAgIHsibWtkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbWtkaXIsIE1FVEhfRkFTVENBTEwsIG9zX21rZGlyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19ta2Rpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbWtkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta2RpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxpJE8mOm1rZGlyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJta2RpciIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGUgPSA1MTE7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2RpciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtESVJBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtESVJBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX21rZGlyX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEwNzMsOCArMTExOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGluY3JlbWVudDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWNlIiwgJmluY3JlbWVudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pY2UiLCAmaW5jcmVtZW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX25pY2VfaW1wbChtb2R1bGUsIGluY3JlbWVudCk7CiAKIGV4aXQ6CkBAIC0xMDkyLDIyICsxMTM5LDI0IEBACiAiUmV0dXJuIHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKIAogI2RlZmluZSBPU19HRVRQUklPUklUWV9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19nZXRwcmlvcml0eV9fZG9jX199LAorICAgIHsiZ2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cHJpb3JpdHksIE1FVEhfRkFTVENBTEwsIG9zX2dldHByaW9yaXR5X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19nZXRwcmlvcml0eV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19nZXRwcmlvcml0eShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2dldHByaW9yaXR5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaTpnZXRwcmlvcml0eSIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHdoaWNoOwogICAgIGludCB3aG87CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaTpnZXRwcmlvcml0eSIsIF9rZXl3b3JkcywKLSAgICAgICAgJndoaWNoLCAmd2hvKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJndoaWNoLCAmd2hvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHByaW9yaXR5X2ltcGwobW9kdWxlLCB3aGljaCwgd2hvKTsKIAogZXhpdDoKQEAgLTExMjUsMjMgKzExNzQsMjUgQEAKICJTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOwogCiAjZGVmaW5lIE9TX1NFVFBSSU9SSVRZX01FVEhPRERFRiAgICBcCi0gICAgeyJzZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19zZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHByaW9yaXR5X19kb2NfX30sCisgICAgeyJzZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19zZXRwcmlvcml0eSwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2V0cHJpb3JpdHlfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NldHByaW9yaXR5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHdoaWNoLCBpbnQgd2hvLCBpbnQgcHJpb3JpdHkpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2V0cHJpb3JpdHkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zZXRwcmlvcml0eShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgInByaW9yaXR5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgInByaW9yaXR5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaWlpOnNldHByaW9yaXR5IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgd2hpY2g7CiAgICAgaW50IHdobzsKICAgICBpbnQgcHJpb3JpdHk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaWk6c2V0cHJpb3JpdHkiLCBfa2V5d29yZHMsCi0gICAgICAgICZ3aGljaCwgJndobywgJnByaW9yaXR5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJndoaWNoLCAmd2hvLCAmcHJpb3JpdHkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cHJpb3JpdHlfaW1wbChtb2R1bGUsIHdoaWNoLCB3aG8sIHByaW9yaXR5KTsKIAogZXhpdDoKQEAgLTExNjMsMjUgKzEyMTQsMjcgQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1JFTkFNRV9NRVRIT0RERUYgICAgXAotICAgIHsicmVuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbmFtZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbmFtZV9fZG9jX199LAorICAgIHsicmVuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbmFtZSwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVuYW1lX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZW5hbWVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAogICAgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkTyZPJjpyZW5hbWUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgicmVuYW1lIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgicmVuYW1lIiwgImRzdCIsIDAsIDApOwogICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JE8mTyY6cmVuYW1lIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbmFtZV9pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMjA2LDI1ICsxMjU5LDI3IEBACiAiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci5cIiIpOwogCiAjZGVmaW5lIE9TX1JFUExBQ0VfTUVUSE9EREVGICAgIFwKLSAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pb3NfcmVwbGFjZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlcGxhY2VfX2RvY19ffSwKKyAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pb3NfcmVwbGFjZSwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVwbGFjZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfcmVwbGFjZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsCiAgICAgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVwbGFjZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlcGxhY2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRPJk8mOnJlcGxhY2UiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgicmVwbGFjZSIsICJzcmMiLCAwLCAwKTsKICAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlcGxhY2UiLCAiZHN0IiwgMCwgMCk7CiAgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZXBsYWNlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlcGxhY2VfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQpOwogCiBleGl0OgpAQCAtMTI0OCwyMiArMTMwMywyNCBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1JNRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJybWRpciIsIChQeUNGdW5jdGlvbilvc19ybWRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JtZGlyX19kb2NfX30sCisgICAgeyJybWRpciIsIChQeUNGdW5jdGlvbilvc19ybWRpciwgTUVUSF9GQVNUQ0FMTCwgb3Nfcm1kaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JtZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3JtZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfcm1kaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyY6cm1kaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInJtZGlyIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cm1kaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19ybWRpcl9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMjgyLDI1ICsxMzM5LDI4IEBACiAiRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLiIpOwogCiAjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYgICAgXAotICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5c3RlbV9fZG9jX199LAorICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9GQVNUQ0FMTCwgb3Nfc3lzdGVtX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCiBvc19zeXN0ZW1faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpjb21tYW5kKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N5c3RlbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N5c3RlbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ1OnN5c3RlbSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfVU5JQ09ERSAqY29tbWFuZDsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ1OnN5c3RlbSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmNvbW1hbmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmY29tbWFuZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc3lzdGVtX2ltcGwobW9kdWxlLCBjb21tYW5kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTMxOCwyNSArMTM3OCwyOCBAQAogIkV4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gYSBzdWJzaGVsbC4iKTsKIAogI2RlZmluZSBPU19TWVNURU1fTUVUSE9EREVGICAgIFwKLSAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeXN0ZW1fX2RvY19ffSwKKyAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfRkFTVENBTEwsIG9zX3N5c3RlbV9fZG9jX199LAogCiBzdGF0aWMgbG9uZwogb3Nfc3lzdGVtX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmNvbW1hbmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOnN5c3RlbSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmNvbW1hbmQgPSBOVUxMOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOnN5c3RlbSIsIF9rZXl3b3JkcywKLSAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmY29tbWFuZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmNvbW1hbmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c3RlbV9pbXBsKG1vZHVsZSwgY29tbWFuZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTEzNjYsOCArMTQyOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG1hc2s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dW1hc2siLCAmbWFzaykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnVtYXNrIiwgJm1hc2spKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW1hc2tfaW1wbChtb2R1bGUsIG1hc2spOwogCiBleGl0OgpAQCAtMTM4NiwyMiArMTQ1MCwyNCBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1VOTElOS19NRVRIT0RERUYgICAgXAotICAgIHsidW5saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3VubGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3VubGlua19fZG9jX199LAorICAgIHsidW5saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3VubGluaywgTUVUSF9GQVNUQ0FMTCwgb3NfdW5saW5rX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc191bmxpbmtfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfdW5saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfdW5saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mOnVubGluayIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgidW5saW5rIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6dW5saW5rIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5saW5rX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTE0MjMsMjIgKzE0ODksMjQgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19SRU1PVkVfTUVUSE9EREVGICAgIFwKLSAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilvc19yZW1vdmUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZW1vdmVfX2RvY19ffSwKKyAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilvc19yZW1vdmUsIE1FVEhfRkFTVENBTEwsIG9zX3JlbW92ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfcmVtb3ZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3JlbW92ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlbW92ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJjpyZW1vdmUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlbW92ZSIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJlbW92ZSIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbW92ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xNTAzLDI2ICsxNTcxLDI4IEBACiAiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19VVElNRV9NRVRIT0RERUYgICAgXAotICAgIHsidXRpbWUiLCAoUHlDRnVuY3Rpb24pb3NfdXRpbWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc191dGltZV9fZG9jX199LAorICAgIHsidXRpbWUiLCAoUHlDRnVuY3Rpb24pb3NfdXRpbWUsIE1FVEhfRkFTVENBTEwsIG9zX3V0aW1lX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc191dGltZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKnRpbWVzLCBQeU9iamVjdCAqbnMsCiAgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfdXRpbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc191dGltZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ0aW1lcyIsICJucyIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ0aW1lcyIsICJucyIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8TyRPTyZwOnV0aW1lIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ1dGltZSIsICJwYXRoIiwgMCwgUEFUSF9VVElNRV9IQVZFX0ZEKTsKICAgICBQeU9iamVjdCAqdGltZXMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpucyA9IE5VTEw7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8TyRPTyZwOnV0aW1lIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZ0aW1lcywgJm5zLCBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZ0aW1lcywgJm5zLCBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdXRpbWVfaW1wbChtb2R1bGUsICZwYXRoLCB0aW1lcywgbnMsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTE1MzksMjEgKzE2MDksMjMgQEAKICJFeGl0IHRvIHRoZSBzeXN0ZW0gd2l0aCBzcGVjaWZpZWQgc3RhdHVzLCB3aXRob3V0IG5vcm1hbCBleGl0IHByb2Nlc3NpbmcuIik7CiAKICNkZWZpbmUgT1NfX0VYSVRfTUVUSE9EREVGICAgIFwKLSAgICB7Il9leGl0IiwgKFB5Q0Z1bmN0aW9uKW9zX19leGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2V4aXRfX2RvY19ffSwKKyAgICB7Il9leGl0IiwgKFB5Q0Z1bmN0aW9uKW9zX19leGl0LCBNRVRIX0ZBU1RDQUxMLCBvc19fZXhpdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfX2V4aXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX19leGl0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfX2V4aXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6X2V4aXQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOl9leGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZXhpdF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKIAogZXhpdDoKQEAgLTE1NzcsMjMgKzE2NDksMjQgQEAKICAgICB7ImV4ZWN2IiwgKFB5Q0Z1bmN0aW9uKW9zX2V4ZWN2LCBNRVRIX1ZBUkFSR1MsIG9zX2V4ZWN2X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19leGVjdl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndik7Citvc19leGVjdl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZXhlY3YoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImV4ZWN2IiwgInBhdGgiLCAwLCAwKTsKICAgICBQeU9iamVjdCAqYXJndjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOmV4ZWN2IiwKLSAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKQorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2KSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gb3NfZXhlY3ZfaW1wbChtb2R1bGUsIHBhdGgsIGFyZ3YpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdl9pbXBsKG1vZHVsZSwgJnBhdGgsIGFyZ3YpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KLSAgICBQeV9YREVDUkVGKHBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTYxNiwyMyArMTY4OSwyNSBAQAogIiAgICBEaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzLiIpOwogCiAjZGVmaW5lIE9TX0VYRUNWRV9NRVRIT0RERUYgICAgXAotICAgIHsiZXhlY3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX2V4ZWN2ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2V4ZWN2ZV9fZG9jX199LAorICAgIHsiZXhlY3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX2V4ZWN2ZSwgTUVUSF9GQVNUQ0FMTCwgb3NfZXhlY3ZlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19leGVjdmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LCBQeU9iamVjdCAqZW52KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2V4ZWN2ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhcmd2IiwgImVudiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnYiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk9POmV4ZWN2ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiZXhlY3ZlIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkVYRUNWRSk7CiAgICAgUHlPYmplY3QgKmFyZ3Y7CiAgICAgUHlPYmplY3QgKmVudjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mT086ZXhlY3ZlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmYXJndiwgJmVudikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdmVfaW1wbChtb2R1bGUsICZwYXRoLCBhcmd2LCBlbnYpOwogCiBleGl0OgpAQCAtMTY0NCw3ICsxNzE5LDcgQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9FWEVDVikgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9TUEFXTlYpCisjaWYgKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkKIAogUHlEb2NfU1RSVkFSKG9zX3NwYXdudl9fZG9jX18sCiAic3Bhd252KCRtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIC8pXG4iCkBAIC0xNjYzLDMxICsxNzM4LDMyIEBACiAgICAgeyJzcGF3bnYiLCAoUHlDRnVuY3Rpb24pb3Nfc3Bhd252LCBNRVRIX1ZBUkFSR1MsIG9zX3NwYXdudl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndik7Citvc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zcGF3bnYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG1vZGU7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInNwYXdudiIsICJwYXRoIiwgMCwgMCk7CiAgICAgUHlPYmplY3QgKmFyZ3Y7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk86c3Bhd252IiwKLSAgICAgICAgJm1vZGUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2KSkKKyAgICAgICAgJm1vZGUsIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZfaW1wbChtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZfaW1wbChtb2R1bGUsIG1vZGUsICZwYXRoLCBhcmd2KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCi0gICAgUHlfWERFQ1JFRihwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TUEFXTlYpICovCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9TUEFXTlYpCisjaWYgKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkKIAogUHlEb2NfU1RSVkFSKG9zX3NwYXdudmVfX2RvY19fLAogInNwYXdudmUoJG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgZW52LCAvKVxuIgpAQCAtMTcwOCw3ICsxNzg0LDcgQEAKICAgICB7InNwYXdudmUiLCAoUHlDRnVuY3Rpb24pb3Nfc3Bhd252ZSwgTUVUSF9WQVJBUkdTLCBvc19zcGF3bnZlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zcGF3bnZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndiwKK29zX3NwYXdudmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZW52KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE3MTYsMjMgKzE3OTIsMjQgQEAKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbW9kZTsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3Bhd252ZSIsICJwYXRoIiwgMCwgMCk7CiAgICAgUHlPYmplY3QgKmFyZ3Y7CiAgICAgUHlPYmplY3QgKmVudjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mT086c3Bhd252ZSIsCi0gICAgICAgICZtb2RlLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndiwgJmVudikpCisgICAgICAgICZtb2RlLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3Bhd252ZV9pbXBsKG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgZW52KTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3Bhd252ZV9pbXBsKG1vZHVsZSwgbW9kZSwgJnBhdGgsIGFyZ3YsIGVudik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLwotICAgIFB5X1hERUNSRUYocGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1BBV05WKSAqLworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfU1BBV05WKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikpICovCiAKICNpZiBkZWZpbmVkKEhBVkVfRk9SSzEpCiAKQEAgLTE3OTEsMjEgKzE4NjgsMjMgQEAKICJHZXQgdGhlIG1heGltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LiIpOwogCiAjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGICAgIFwKLSAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19ffSwKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBwb2xpY3kpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NjaGVkX2dldF9wcmlvcml0eV9tYXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHBvbGljeTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBvbGljeSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwb2xpY3kpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9pbXBsKG1vZHVsZSwgcG9saWN5KTsKIAogZXhpdDoKQEAgLTE4MjMsMjEgKzE5MDIsMjMgQEAKICJHZXQgdGhlIG1pbmltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LiIpOwogCiAjZGVmaW5lIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NSU5fTUVUSE9EREVGICAgIFwKLSAgICB7InNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19ffSwKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBwb2xpY3kpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NjaGVkX2dldF9wcmlvcml0eV9taW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHBvbGljeTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBvbGljeSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwb2xpY3kpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKG1vZHVsZSwgcG9saWN5KTsKIAogZXhpdDoKQEAgLTE4NjgsOCArMTk0OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRzY2hlZHVsZXIiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyX2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMTg5NiwxMiArMTk3OCwxNCBAQAogb3Nfc2NoZWRfcGFyYW0oUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2NoZWRfcHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOnNjaGVkX3BhcmFtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2NoZWRfcHJpb3JpdHk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNjaGVkX3BhcmFtIiwgX2tleXdvcmRzLAotICAgICAgICAmc2NoZWRfcHJpb3JpdHkpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnNjaGVkX3ByaW9yaXR5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3BhcmFtX2ltcGwodHlwZSwgc2NoZWRfcHJpb3JpdHkpOwogCiBleGl0OgpAQCAtMTkzNyw4ICsyMDIxLDkgQEAKICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaU8mOnNjaGVkX3NldHNjaGVkdWxlciIsCi0gICAgICAgICZwaWQsICZwb2xpY3ksIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgICZwaWQsICZwb2xpY3ksIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRzY2hlZHVsZXJfaW1wbChtb2R1bGUsIHBpZCwgcG9saWN5LCAmcGFyYW0pOwogCiBleGl0OgpAQCAtMTk3MCw4ICsyMDU1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0cGFyYW1faW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0yMDA2LDggKzIwOTIsOSBAQAogICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJPJjpzY2hlZF9zZXRwYXJhbSIsCi0gICAgICAgICZwaWQsIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgICZwaWQsIGNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRwYXJhbV9pbXBsKG1vZHVsZSwgcGlkLCAmcGFyYW0pOwogCiBleGl0OgpAQCAtMjAzOSwxMSArMjEyNiwxMyBAQAogICAgIHBpZF90IHBpZDsKICAgICBkb3VibGUgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAmcGlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfaW1wbChtb2R1bGUsIHBpZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xLjApICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xLjApICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUZsb2F0X0Zyb21Eb3VibGUoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMDk4LDggKzIxODcsOSBAQAogICAgIFB5T2JqZWN0ICptYXNrOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIk86c2NoZWRfc2V0YWZmaW5pdHkiLAotICAgICAgICAmcGlkLCAmbWFzaykpCisgICAgICAgICZwaWQsICZtYXNrKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3NldGFmZmluaXR5X2ltcGwobW9kdWxlLCBwaWQsIG1hc2spOwogCiBleGl0OgpAQCAtMjExNCw3ICsyMjA0LDcgQEAKICJzY2hlZF9nZXRhZmZpbml0eSgkbW9kdWxlLCBwaWQsIC8pXG4iCiAiLS1cbiIKICJcbiIKLSJSZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLlxuIgorIlJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykuXG4iCiAiXG4iCiAiVGhlIGFmZmluaXR5IGlzIHJldHVybmVkIGFzIGEgc2V0IG9mIENQVSBpZGVudGlmaWVycy4iKTsKIApAQCAtMjEzMCw4ICsyMjIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldGFmZmluaXR5IiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfaW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0yMjU4LDYgKzIzNDksOCBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEdJRCkgKi8KIAorI2lmIGRlZmluZWQoSEFWRV9HRVRQSUQpCisKIFB5RG9jX1NUUlZBUihvc19nZXRwaWRfX2RvY19fLAogImdldHBpZCgkbW9kdWxlLCAvKVxuIgogIi0tXG4iCkBAIC0yMjc2LDYgKzIzNjksOCBAQAogICAgIHJldHVybiBvc19nZXRwaWRfaW1wbChtb2R1bGUpOwogfQogCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFBJRCkgKi8KKwogI2lmIGRlZmluZWQoSEFWRV9HRVRHUk9VUFMpCiAKIFB5RG9jX1NUUlZBUihvc19nZXRncm91cHNfX2RvY19fLApAQCAtMjMwNywyMSArMjQwMiwyMyBAQAogIkNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHBnaWQoKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIpOwogCiAjZGVmaW5lIE9TX0dFVFBHSURfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldHBnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGdpZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHBnaWRfX2RvY19ffSwKKyAgICB7ImdldHBnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGdpZCwgTUVUSF9GQVNUQ0FMTCwgb3NfZ2V0cGdpZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZ2V0cGdpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19nZXRwZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZ2V0cGdpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGlkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGlkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBfUHlfUEFSU0VfUElEICI6Z2V0cGdpZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBfUHlfUEFSU0VfUElEICI6Z2V0cGdpZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBpZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cGdpZF9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTI0NjUsOCArMjU2Miw5IEBACiAgICAgUHlfc3NpemVfdCBzaWduYWw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAibjpraWxsIiwKLSAgICAgICAgJnBpZCwgJnNpZ25hbCkpCisgICAgICAgICZwaWQsICZzaWduYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfa2lsbF9pbXBsKG1vZHVsZSwgcGlkLCBzaWduYWwpOwogCiBleGl0OgpAQCAtMjQ5Nyw4ICsyNTk1LDkgQEAKICAgICBpbnQgc2lnbmFsOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6a2lsbHBnIiwKLSAgICAgICAgJnBnaWQsICZzaWduYWwpKQorICAgICAgICAmcGdpZCwgJnNpZ25hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19raWxscGdfaW1wbChtb2R1bGUsIHBnaWQsIHNpZ25hbCk7CiAKIGV4aXQ6CkBAIC0yNTI3LDggKzI2MjYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBvcDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpwbG9jayIsICZvcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBsb2NrIiwgJm9wKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3Bsb2NrX2ltcGwobW9kdWxlLCBvcCk7CiAKIGV4aXQ6CkBAIC0yNTU3LDggKzI2NTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHVpZF90IHVpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0dWlkX2ltcGwobW9kdWxlLCB1aWQpOwogCiBleGl0OgpAQCAtMjU4Nyw4ICsyNjg4LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICB1aWRfdCBldWlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRldWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGV1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0ZXVpZF9pbXBsKG1vZHVsZSwgZXVpZCk7CiAKIGV4aXQ6CkBAIC0yNjE3LDggKzI3MTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGdpZF90IGVnaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGVnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZWdpZCIsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRlZ2lkX2ltcGwobW9kdWxlLCBlZ2lkKTsKIAogZXhpdDoKQEAgLTI2NDksOCArMjc1Miw5IEBACiAgICAgdWlkX3QgZXVpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZXVpZCIsCi0gICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKKyAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmV1aWRfaW1wbChtb2R1bGUsIHJ1aWQsIGV1aWQpOwogCiBleGl0OgpAQCAtMjY4MSw4ICsyNzg1LDkgQEAKICAgICBnaWRfdCBlZ2lkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnNldHJlZ2lkIiwKLSAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKQorICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZWdpZF9pbXBsKG1vZHVsZSwgcmdpZCwgZWdpZCk7CiAKIGV4aXQ6CkBAIC0yNzExLDggKzI4MTYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGdpZF90IGdpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0Z2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0Z2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0Z2lkX2ltcGwobW9kdWxlLCBnaWQpOwogCiBleGl0OgpAQCAtMjc0NiwyMSArMjg1MiwyMyBAQAogIiAgKHBpZCwgc3RhdHVzLCBydXNhZ2UpIik7CiAKICNkZWZpbmUgT1NfV0FJVDNfTUVUSE9EREVGICAgIFwKLSAgICB7IndhaXQzIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXQzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfd2FpdDNfX2RvY19ffSwKKyAgICB7IndhaXQzIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXQzLCBNRVRIX0ZBU1RDQUxMLCBvc193YWl0M19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfd2FpdDNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgb3B0aW9ucyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc193YWl0MyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3dhaXQzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvcHRpb25zIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsib3B0aW9ucyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6d2FpdDMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBvcHRpb25zOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTp3YWl0MyIsIF9rZXl3b3JkcywKLSAgICAgICAgJm9wdGlvbnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0M19pbXBsKG1vZHVsZSwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yNzgxLDIyICsyODg5LDI0IEBACiAiICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkiKTsKIAogI2RlZmluZSBPU19XQUlUNF9NRVRIT0RERUYgICAgXAotICAgIHsid2FpdDQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc193YWl0NF9fZG9jX199LAorICAgIHsid2FpdDQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDQsIE1FVEhfRkFTVENBTEwsIG9zX3dhaXQ0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc193YWl0NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCwgaW50IG9wdGlvbnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdDQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc193YWl0NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGlkIiwgIm9wdGlvbnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwaWQiLCAib3B0aW9ucyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0NCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGlkX3QgcGlkOwogICAgIGludCBvcHRpb25zOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOndhaXQ0IiwgX2tleXdvcmRzLAotICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwaWQsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXQ0X2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjgzOSw4ICsyOTQ5LDkgQEAKICAgICBpbnQgb3B0aW9uczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0aWQiLAotICAgICAgICAmaWR0eXBlLCAmaWQsICZvcHRpb25zKSkKKyAgICAgICAgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0aWRfaW1wbChtb2R1bGUsIGlkdHlwZSwgaWQsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjg3Niw4ICsyOTg3LDkgQEAKICAgICBpbnQgb3B0aW9uczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOndhaXRwaWQiLAotICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgICAgICZwaWQsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRwaWRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yOTAzLDE4ICszMDE1LDE5IEBACiAgICAgeyJ3YWl0cGlkIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXRwaWQsIE1FVEhfVkFSQVJHUywgb3Nfd2FpdHBpZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpOworb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfd2FpdHBpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9pbnRwdHJfdCBwaWQ7CisgICAgaW50cHRyX3QgcGlkOwogICAgIGludCBvcHRpb25zOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9JTlRQVFIgImk6d2FpdHBpZCIsCi0gICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdHBpZF9pbXBsKG1vZHVsZSwgcGlkLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI5NjcsMjUgKzMwODAsMjcgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19TWU1MSU5LX01FVEhPRERFRiAgICBcCi0gICAgeyJzeW1saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5bWxpbmssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeW1saW5rX19kb2NfX30sCisgICAgeyJzeW1saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5bWxpbmssIE1FVEhfRkFTVENBTEwsIG9zX3N5bWxpbmtfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3N5bWxpbmtfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsCiAgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnksIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3ltbGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N5bWxpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInRhcmdldF9pc19kaXJlY3RvcnkiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnxwJE8mOnN5bWxpbmsiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgic3ltbGluayIsICJzcmMiLCAwLCAwKTsKICAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInN5bWxpbmsiLCAiZHN0IiwgMCwgMCk7CiAgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnkgPSAwOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8cCRPJjpzeW1saW5rIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsICZ0YXJnZXRfaXNfZGlyZWN0b3J5LCBTWU1MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgJnRhcmdldF9pc19kaXJlY3RvcnksIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N5bWxpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHRhcmdldF9pc19kaXJlY3RvcnksIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0zMDQ1LDggKzMxNjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6Z2V0c2lkIiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRzaWQiLCAmcGlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHNpZF9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTMwOTksOCArMzIxNSw5IEBACiAgICAgcGlkX3QgcGdycDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICIiIF9QeV9QQVJTRV9QSUQgIjpzZXRwZ2lkIiwKLSAgICAgICAgJnBpZCwgJnBncnApKQorICAgICAgICAmcGlkLCAmcGdycCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwZ2lkX2ltcGwobW9kdWxlLCBwaWQsIHBncnApOwogCiBleGl0OgpAQCAtMzEyOSw4ICszMjQ2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dGNnZXRwZ3JwIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dGNnZXRwZ3JwIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3RjZ2V0cGdycF9pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtMzE2MSw4ICszMjc5LDkgQEAKICAgICBwaWRfdCBwZ2lkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICI6dGNzZXRwZ3JwIiwKLSAgICAgICAgJmZkLCAmcGdpZCkpCisgICAgICAgICZmZCwgJnBnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdGNzZXRwZ3JwX2ltcGwobW9kdWxlLCBmZCwgcGdpZCk7CiAKIGV4aXQ6CkBAIC0zMTgzLDI4ICszMzAyLDMxIEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfT1BFTl9NRVRIT0RERUYgICAgXAotICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilvc19vcGVuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfb3Blbl9fZG9jX199LAorICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilvc19vcGVuLCBNRVRIX0ZBU1RDQUxMLCBvc19vcGVuX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX29wZW5faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBmbGFncywgaW50IG1vZGUsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX29wZW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZpfGkkTyY6b3BlbiIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgib3BlbiIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGZsYWdzOwogICAgIGludCBtb2RlID0gNTExOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXxpJE8mOm9wZW4iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmbW9kZSwgT1BFTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJm1vZGUsIE9QRU5BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19vcGVuX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MsIG1vZGUsIGRpcl9mZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMyMjEsMjEgKzMzNDMsMjMgQEAKICJDbG9zZSBhIGZpbGUgZGVzY3JpcHRvci4iKTsKIAogI2RlZmluZSBPU19DTE9TRV9NRVRIT0RERUYgICAgXAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pb3NfY2xvc2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jbG9zZV9fZG9jX199LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pb3NfY2xvc2UsIE1FVEhfRkFTVENBTEwsIG9zX2Nsb3NlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jbG9zZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jbG9zZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpjbG9zZSIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpjbG9zZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nsb3NlX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zMjYyLDggKzMzODYsOSBAQAogICAgIGludCBmZF9oaWdoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpjbG9zZXJhbmdlIiwKLSAgICAgICAgJmZkX2xvdywgJmZkX2hpZ2gpKQorICAgICAgICAmZmRfbG93LCAmZmRfaGlnaCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jbG9zZXJhbmdlX2ltcGwobW9kdWxlLCBmZF9sb3csIGZkX2hpZ2gpOwogCiBleGl0OgpAQCAtMzI4OSwxMSArMzQxNCwxMyBAQAogICAgIGludCBmZDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpkdXAiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpkdXAiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2R1cF9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMzA3LDIzICszNDM0LDI1IEBACiAiRHVwbGljYXRlIGZpbGUgZGVzY3JpcHRvci4iKTsKIAogI2RlZmluZSBPU19EVVAyX01FVEhPRERFRiAgICBcCi0gICAgeyJkdXAyIiwgKFB5Q0Z1bmN0aW9uKW9zX2R1cDIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19kdXAyX19kb2NfX30sCisgICAgeyJkdXAyIiwgKFB5Q0Z1bmN0aW9uKW9zX2R1cDIsIE1FVEhfRkFTVENBTEwsIG9zX2R1cDJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2R1cDJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQsIGludCBmZDIsIGludCBpbmhlcml0YWJsZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19kdXAyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZHVwMihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAiZmQyIiwgImluaGVyaXRhYmxlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCAiZmQyIiwgImluaGVyaXRhYmxlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaWl8cDpkdXAyIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAgICAgaW50IGZkMjsKICAgICBpbnQgaW5oZXJpdGFibGUgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWl8cDpkdXAyIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQsICZmZDIsICZpbmhlcml0YWJsZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCwgJmZkMiwgJmluaGVyaXRhYmxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2R1cDJfaW1wbChtb2R1bGUsIGZkLCBmZDIsIGluaGVyaXRhYmxlKTsKIAogZXhpdDoKQEAgLTMzNjAsOCArMzQ4OSw5IEBACiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOmxvY2tmIiwKLSAgICAgICAgJmZkLCAmY29tbWFuZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCAmY29tbWFuZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xvY2tmX2ltcGwobW9kdWxlLCBmZCwgY29tbWFuZCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTMzOTUsMTEgKzM1MjUsMTMgQEAKICAgICBQeV9vZmZfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZpOmxzZWVrIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZwb3NpdGlvbiwgJmhvdykpCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmcG9zaXRpb24sICZob3cpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2xzZWVrX2ltcGwobW9kdWxlLCBmZCwgcG9zaXRpb24sIGhvdyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tUHlfb2ZmX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNDI2LDggKzM1NTgsOSBAQAogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpbjpyZWFkIiwKLSAgICAgICAgJmZkLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlYWRfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtMzQ2NSwxMSArMzU5OCwxMyBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cmVhZHYiLAotICAgICAgICAmZmQsICZidWZmZXJzKSkKKyAgICAgICAgJmZkLCAmYnVmZmVycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcmVhZHZfaW1wbChtb2R1bGUsIGZkLCBidWZmZXJzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzUwNCw4ICszNjM5LDkgQEAKICAgICBQeV9vZmZfdCBvZmZzZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6cHJlYWQiLAotICAgICAgICAmZmQsICZsZW5ndGgsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCkpCisgICAgICAgICZmZCwgJmxlbmd0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3ByZWFkX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoLCBvZmZzZXQpOwogCiBleGl0OgpAQCAtMzUzNSwxNyArMzY3MSwyMCBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqOndyaXRlIiwKLSAgICAgICAgJmZkLCAmZGF0YSkpCisgICAgICAgICZmZCwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3dyaXRlX2ltcGwobW9kdWxlLCBmZCwgJmRhdGEpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzU2MCwyMSArMzY5OSwyMyBAQAogIkVxdWl2YWxlbnQgdG8gb3Muc3RhdChmZCkuIik7CiAKICNkZWZpbmUgT1NfRlNUQVRfTUVUSE9EREVGICAgIFwKLSAgICB7ImZzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzdGF0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZnN0YXRfX2RvY19ffSwKKyAgICB7ImZzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzdGF0LCBNRVRIX0ZBU1RDQUxMLCBvc19mc3RhdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZnN0YXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZnN0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6ZnN0YXQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6ZnN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mc3RhdF9pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtMzYwMywxMSArMzc0NCwxMyBAQAogICAgIGludCBmZDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc2F0dHkiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTppc2F0dHkiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2lzYXR0eV9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNjY1LDggKzM4MDgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmbGFnczsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpwaXBlMiIsICZmbGFncykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBpcGUyIiwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3BpcGUyX2ltcGwobW9kdWxlLCBmbGFncyk7CiAKIGV4aXQ6CkBAIC0zNzAxLDExICszODQ1LDEzIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzp3cml0ZXYiLAotICAgICAgICAmZmQsICZidWZmZXJzKSkKKyAgICAgICAgJmZkLCAmYnVmZmVycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfd3JpdGV2X2ltcGwobW9kdWxlLCBmZCwgYnVmZmVycyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM3NDIsMTcgKzM4ODgsMjAgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kk8mOnB3cml0ZSIsCi0gICAgICAgICZmZCwgJmJ1ZmZlciwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkKKyAgICAgICAgJmZkLCAmYnVmZmVyLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3B3cml0ZV9pbXBsKG1vZHVsZSwgZmQsICZidWZmZXIsIG9mZnNldCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM3NzMsMjMgKzM5MjIsMjUgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19NS0ZJRk9fTUVUSE9EREVGICAgIFwKLSAgICB7Im1rZmlmbyIsIChQeUNGdW5jdGlvbilvc19ta2ZpZm8sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta2ZpZm9fX2RvY19ffSwKKyAgICB7Im1rZmlmbyIsIChQeUNGdW5jdGlvbilvc19ta2ZpZm8sIE1FVEhfRkFTVENBTEwsIG9zX21rZmlmb19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbWtmaWZvX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19ta2ZpZm8oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta2ZpZm8oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8aSRPJjpta2ZpZm8iLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rZmlmbyIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGUgPSA0Mzg7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2ZpZm8iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRklGT0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBNS0ZJRk9BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX21rZmlmb19pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0zODIyLDI1ICszOTczLDI3IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfTUtOT0RfTUVUSE9EREVGICAgIFwKLSAgICB7Im1rbm9kIiwgKFB5Q0Z1bmN0aW9uKW9zX21rbm9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbWtub2RfX2RvY19ffSwKKyAgICB7Im1rbm9kIiwgKFB5Q0Z1bmN0aW9uKW9zX21rbm9kLCBNRVRIX0ZBU1RDQUxMLCBvc19ta25vZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbWtub2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBkZXZfdCBkZXZpY2UsCiAgICAgICAgICAgICAgIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbWtub2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta25vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRldmljZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfGlPJiRPJjpta25vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtub2QiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlID0gMzg0OwogICAgIGRldl90IGRldmljZSA9IDA7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aU8mJE8mOm1rbm9kIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSwgTUtOT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UsIE1LTk9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19ta25vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRldmljZSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTM4NzMsMTEgKzQwMjYsMTMgQEAKICAgICBkZXZfdCBkZXZpY2U7CiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOm1ham9yIiwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWFqb3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWFqb3JfaW1wbChtb2R1bGUsIGRldmljZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5MDcsMTEgKzQwNjIsMTMgQEAKICAgICBkZXZfdCBkZXZpY2U7CiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOm1pbm9yIiwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWlub3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWlub3JfaW1wbChtb2R1bGUsIGRldmljZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5NDMsMTEgKzQxMDAsMTMgQEAKICAgICBkZXZfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTptYWtlZGV2IiwKLSAgICAgICAgJm1ham9yLCAmbWlub3IpKQorICAgICAgICAmbWFqb3IsICZtaW5vcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWFrZWRldl9pbXBsKG1vZHVsZSwgbWFqb3IsIG1pbm9yKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKGRldl90KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAoZGV2X3QpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfUHlMb25nX0Zyb21EZXYoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTc4LDggKzQxMzcsOSBAQAogICAgIFB5X29mZl90IGxlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZ0cnVuY2F0ZSIsCi0gICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnRydW5jYXRlX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTQwMDAsMjIgKzQxNjAsMjQgQEAKICIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogI2RlZmluZSBPU19UUlVOQ0FURV9NRVRIT0RERUYgICAgXAotICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pb3NfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc190cnVuY2F0ZV9fZG9jX199LAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pb3NfdHJ1bmNhdGUsIE1FVEhfRkFTVENBTEwsIG9zX3RydW5jYXRlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc190cnVuY2F0ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlfb2ZmX3QgbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3RydW5jYXRlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfdHJ1bmNhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJsZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mOnRydW5jYXRlIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ0cnVuY2F0ZSIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZUUlVOQ0FURSk7CiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjp0cnVuY2F0ZSIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc190cnVuY2F0ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC00MDU0LDggKzQyMTYsOSBAQAogICAgIFB5X29mZl90IGxlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyY6cG9zaXhfZmFsbG9jYXRlIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcG9zaXhfZmFsbG9jYXRlX2ltcGwobW9kdWxlLCBmZCwgb2Zmc2V0LCBsZW5ndGgpOwogCiBleGl0OgpAQCAtNDA5Nyw4ICs0MjYwLDkgQEAKICAgICBpbnQgYWR2aWNlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJmk6cG9zaXhfZmFkdmlzZSIsCi0gICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgsICZhZHZpY2UpKQorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoLCAmYWR2aWNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3Bvc2l4X2ZhZHZpc2VfaW1wbChtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCwgYWR2aWNlKTsKIAogZXhpdDoKQEAgLTQxMjksOCArNDI5Myw5IEBACiAgICAgUHlPYmplY3QgKnZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVTpwdXRlbnYiLAotICAgICAgICAmbmFtZSwgJnZhbHVlKSkKKyAgICAgICAgJm5hbWUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19wdXRlbnZfaW1wbChtb2R1bGUsIG5hbWUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQxNjEsOCArNDMyNiw5IEBACiAgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpwdXRlbnYiLAotICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZ2YWx1ZSkpCisgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3B1dGVudl9pbXBsKG1vZHVsZSwgbmFtZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDE5Niw4ICs0MzYyLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuc2V0ZW52IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bnNldGVudiIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5zZXRlbnZfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtNDIyNyw4ICs0Mzk0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzdHJlcnJvciIsICZjb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c3RyZXJyb3IiLCAmY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zdHJlcnJvcl9pbXBsKG1vZHVsZSwgY29kZSk7CiAKIGV4aXQ6CkBAIC00MjU2LDExICs0NDI0LDEzIEBACiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpXQ09SRURVTVAiLCAmc3RhdHVzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6V0NPUkVEVU1QIiwgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0NPUkVEVU1QX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MjgxLDI1ICs0NDUxLDI4IEBACiAiam9iIGNvbnRyb2wgc3RvcC4iKTsKIAogI2RlZmluZSBPU19XSUZDT05USU5VRURfTUVUSE9EREVGICAgIFwKLSAgICB7IldJRkNPTlRJTlVFRCIsIChQeUNGdW5jdGlvbilvc19XSUZDT05USU5VRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZDT05USU5VRURfX2RvY19ffSwKKyAgICB7IldJRkNPTlRJTlVFRCIsIChQeUNGdW5jdGlvbilvc19XSUZDT05USU5VRUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRkNPTlRJTlVFRF9fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XSUZDT05USU5VRURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRkNPTlRJTlVFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRkNPTlRJTlVFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXSUZDT05USU5VRUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRkNPTlRJTlVFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRkNPTlRJTlVFRF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDMxNywyNSArNDQ5MCwyOCBAQAogIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIHN0b3BwZWQuIik7CiAKICNkZWZpbmUgT1NfV0lGU1RPUFBFRF9NRVRIT0RERUYgICAgXAotICAgIHsiV0lGU1RPUFBFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTVE9QUEVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGU1RPUFBFRF9fZG9jX199LAorICAgIHsiV0lGU1RPUFBFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTVE9QUEVELCBNRVRIX0ZBU1RDQUxMLCBvc19XSUZTVE9QUEVEX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dJRlNUT1BQRURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRlNUT1BQRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XSUZTVE9QUEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldJRlNUT1BQRUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRlNUT1BQRUQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZTVE9QUEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MzUzLDI1ICs0NTI5LDI4IEBACiAiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgdGVybWluYXRlZCBieSBhIHNpZ25hbC4iKTsKIAogI2RlZmluZSBPU19XSUZTSUdOQUxFRF9NRVRIT0RERUYgICAgXAotICAgIHsiV0lGU0lHTkFMRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU0lHTkFMRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZTSUdOQUxFRF9fZG9jX199LAorICAgIHsiV0lGU0lHTkFMRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU0lHTkFMRUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRlNJR05BTEVEX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dJRlNJR05BTEVEX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XSUZTSUdOQUxFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRlNJR05BTEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldJRlNJR05BTEVEIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZTSUdOQUxFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRlNJR05BTEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00Mzg5LDI1ICs0NTY4LDI4IEBACiAiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyBleGl0ZWQgdmlhIHRoZSBleGl0KCkgc3lzdGVtIGNhbGwuIik7CiAKICNkZWZpbmUgT1NfV0lGRVhJVEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJXSUZFWElURUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGRVhJVEVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGRVhJVEVEX19kb2NfX30sCisgICAgeyJXSUZFWElURUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGRVhJVEVELCBNRVRIX0ZBU1RDQUxMLCBvc19XSUZFWElURURfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0lGRVhJVEVEX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XSUZFWElURUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XSUZFWElURUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0lGRVhJVEVEIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZFWElURUQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZFWElURURfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ0MjUsMjUgKzQ2MDcsMjggQEAKICJSZXR1cm4gdGhlIHByb2Nlc3MgcmV0dXJuIGNvZGUgZnJvbSBzdGF0dXMuIik7CiAKICNkZWZpbmUgT1NfV0VYSVRTVEFUVVNfTUVUSE9EREVGICAgIFwKLSAgICB7IldFWElUU1RBVFVTIiwgKFB5Q0Z1bmN0aW9uKW9zX1dFWElUU1RBVFVTLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0VYSVRTVEFUVVNfX2RvY19ffSwKKyAgICB7IldFWElUU1RBVFVTIiwgKFB5Q0Z1bmN0aW9uKW9zX1dFWElUU1RBVFVTLCBNRVRIX0ZBU1RDQUxMLCBvc19XRVhJVFNUQVRVU19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XRVhJVFNUQVRVU19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0VYSVRTVEFUVVMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XRVhJVFNUQVRVUyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXRVhJVFNUQVRVUyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0VYSVRTVEFUVVMiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XRVhJVFNUQVRVU19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDQ2MSwyNSArNDY0NiwyOCBAQAogIlJldHVybiB0aGUgc2lnbmFsIHRoYXQgdGVybWluYXRlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuIik7CiAKICNkZWZpbmUgT1NfV1RFUk1TSUdfTUVUSE9EREVGICAgIFwKLSAgICB7IldURVJNU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dURVJNU0lHLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV1RFUk1TSUdfX2RvY19ffSwKKyAgICB7IldURVJNU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dURVJNU0lHLCBNRVRIX0ZBU1RDQUxMLCBvc19XVEVSTVNJR19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XVEVSTVNJR19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV1RFUk1TSUcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XVEVSTVNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXVEVSTVNJRyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V1RFUk1TSUciLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XVEVSTVNJR19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDQ5NywyNSArNDY4NSwyOCBAQAogIlJldHVybiB0aGUgc2lnbmFsIHRoYXQgc3RvcHBlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuIik7CiAKICNkZWZpbmUgT1NfV1NUT1BTSUdfTUVUSE9EREVGICAgIFwKLSAgICB7IldTVE9QU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dTVE9QU0lHLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV1NUT1BTSUdfX2RvY19ffSwKKyAgICB7IldTVE9QU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dTVE9QU0lHLCBNRVRIX0ZBU1RDQUxMLCBvc19XU1RPUFNJR19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XU1RPUFNJR19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV1NUT1BTSUcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XU1RPUFNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXU1RPUFNJRyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V1NUT1BTSUciLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XU1RPUFNJR19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDU0Niw4ICs0NzM3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6ZnN0YXR2ZnMiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpmc3RhdHZmcyIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mc3RhdHZmc19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNDU2OSwyMSArNDc2MSwyMyBAQAogIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiAjZGVmaW5lIE9TX1NUQVRWRlNfTUVUSE9EREVGICAgIFwKLSAgICB7InN0YXR2ZnMiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdHZmcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N0YXR2ZnNfX2RvY19ffSwKKyAgICB7InN0YXR2ZnMiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdHZmcywgTUVUSF9GQVNUQ0FMTCwgb3Nfc3RhdHZmc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc3RhdHZmc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zdGF0dmZzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3RhdHZmcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpzdGF0dmZzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGF0dmZzIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlNUQVRWRlMpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3RhdHZmcyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXR2ZnNfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTQ2MDQsMjEgKzQ3OTgsMjMgQEAKICJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoIGFzIGEgKHRvdGFsLCBmcmVlKSB0dXBsZS4iKTsKIAogI2RlZmluZSBPU19fR0VURElTS1VTQUdFX01FVEhPRERFRiAgICBcCi0gICAgeyJfZ2V0ZGlza3VzYWdlIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXRkaXNrdXNhZ2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0ZGlza3VzYWdlX19kb2NfX30sCisgICAgeyJfZ2V0ZGlza3VzYWdlIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXRkaXNrdXNhZ2UsIE1FVEhfRkFTVENBTEwsIG9zX19nZXRkaXNrdXNhZ2VfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX19nZXRkaXNrdXNhZ2VfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX19nZXRkaXNrdXNhZ2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19fZ2V0ZGlza3VzYWdlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InU6X2dldGRpc2t1c2FnZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfVU5JQ09ERSAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInU6X2dldGRpc2t1c2FnZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0ZGlza3VzYWdlX2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTQ2NTIsMTEgKzQ4NDgsMTMgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmcGF0aGNvbmYiLAotICAgICAgICAmZmQsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKQorICAgICAgICAmZmQsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2ZwYXRoY29uZl9pbXBsKG1vZHVsZSwgZmQsIG5hbWUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00Njc4LDI2ICs0ODc2LDI5IEBACiAiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKICNkZWZpbmUgT1NfUEFUSENPTkZfTUVUSE9EREVGICAgIFwKLSAgICB7InBhdGhjb25mIiwgKFB5Q0Z1bmN0aW9uKW9zX3BhdGhjb25mLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcGF0aGNvbmZfX2RvY19ffSwKKyAgICB7InBhdGhjb25mIiwgKFB5Q0Z1bmN0aW9uKW9zX3BhdGhjb25mLCBNRVRIX0ZBU1RDQUxMLCBvc19wYXRoY29uZl9fZG9jX199LAogCiBzdGF0aWMgbG9uZwogb3NfcGF0aGNvbmZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBuYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3BhdGhjb25mKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcGF0aGNvbmYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyY6cGF0aGNvbmYiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInBhdGhjb25mIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlBBVEhDT05GKTsKICAgICBpbnQgbmFtZTsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnBhdGhjb25mIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3BhdGhjb25mX2ltcGwobW9kdWxlLCAmcGF0aCwgbmFtZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ3MjksOCArNDkzMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmNvbmZzdHIiLCBjb252X2NvbmZzdHJfY29uZm5hbWUsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmNvbmZzdHIiLCBjb252X2NvbmZzdHJfY29uZm5hbWUsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2NvbmZzdHJfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtNDc2MCwxMSArNDk2MiwxMyBAQAogICAgIGludCBuYW1lOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c3lzY29uZiIsIGNvbnZfc3lzY29uZl9jb25mbmFtZSwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c3lzY29uZiIsIGNvbnZfc3lzY29uZl9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c2NvbmZfaW1wbChtb2R1bGUsIG5hbWUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00Nzk0LDYgKzQ5OTgsNjEgQEAKICAgICByZXR1cm4gb3NfYWJvcnRfaW1wbChtb2R1bGUpOwogfQogCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3Nfc3RhcnRmaWxlX19kb2NfXywKKyJzdGFydGZpbGUoJG1vZHVsZSwgLywgZmlsZXBhdGgsIG9wZXJhdGlvbj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisic3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pXG4iCisiXG4iCisiU3RhcnQgYSBmaWxlIHdpdGggaXRzIGFzc29jaWF0ZWQgYXBwbGljYXRpb24uXG4iCisiXG4iCisiV2hlbiBcIm9wZXJhdGlvblwiIGlzIG5vdCBzcGVjaWZpZWQgb3IgXCJvcGVuXCIsIHRoaXMgYWN0cyBsaWtlXG4iCisiZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhblxuIgorImFyZ3VtZW50IHRvIHRoZSBET1MgXCJzdGFydFwiIGNvbW1hbmQ6IHRoZSBmaWxlIGlzIG9wZW5lZCB3aXRoIHdoYXRldmVyXG4iCisiYXBwbGljYXRpb24gKGlmIGFueSkgaXRzIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkLlxuIgorIldoZW4gYW5vdGhlciBcIm9wZXJhdGlvblwiIGlzIGdpdmVuLCBpdCBzcGVjaWZpZXMgd2hhdCBzaG91bGQgYmUgZG9uZSB3aXRoXG4iCisidGhlIGZpbGUuICBBIHR5cGljYWwgb3BlcmF0aW9uIGlzIFwicHJpbnRcIi5cbiIKKyJcbiIKKyJzdGFydGZpbGUgcmV0dXJucyBhcyBzb29uIGFzIHRoZSBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIGlzIGxhdW5jaGVkLlxuIgorIlRoZXJlIGlzIG5vIG9wdGlvbiB0byB3YWl0IGZvciB0aGUgYXBwbGljYXRpb24gdG8gY2xvc2UsIGFuZCBubyB3YXlcbiIKKyJ0byByZXRyaWV2ZSB0aGUgYXBwbGljYXRpb25cJ3MgZXhpdCBzdGF0dXMuXG4iCisiXG4iCisiVGhlIGZpbGVwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIElmIHlvdSB3YW50IHRvIHVzZVxuIgorImFuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoIChcIi9cIik7XG4iCisidGhlIHVuZGVybHlpbmcgV2luMzIgU2hlbGxFeGVjdXRlIGZ1bmN0aW9uIGRvZXNuXCd0IHdvcmsgaWYgaXQgaXMuIik7CisKKyNkZWZpbmUgT1NfU1RBUlRGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJzdGFydGZpbGUiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhcnRmaWxlLCBNRVRIX0ZBU1RDQUxMLCBvc19zdGFydGZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqZmlsZXBhdGgsIFB5X1VOSUNPREUgKm9wZXJhdGlvbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdGFydGZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlcGF0aCIsICJvcGVyYXRpb24iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnx1OnN0YXJ0ZmlsZSIsIF9rZXl3b3JkcywgMH07CisgICAgcGF0aF90IGZpbGVwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXJ0ZmlsZSIsICJmaWxlcGF0aCIsIDAsIDApOworICAgIFB5X1VOSUNPREUgKm9wZXJhdGlvbiA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZmaWxlcGF0aCwgJm9wZXJhdGlvbikpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19zdGFydGZpbGVfaW1wbChtb2R1bGUsICZmaWxlcGF0aCwgb3BlcmF0aW9uKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBmaWxlcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmZmlsZXBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKwogI2lmIGRlZmluZWQoSEFWRV9HRVRMT0FEQVZHKQogCiBQeURvY19TVFJWQVIob3NfZ2V0bG9hZGF2Z19fZG9jX18sCkBAIC00ODMwLDIxICs1MDg5LDIzIEBACiAiSWYgdGhlIGRldmljZSBpcyBub3QgYSB0ZXJtaW5hbCwgcmV0dXJuIE5vbmUuIik7CiAKICNkZWZpbmUgT1NfREVWSUNFX0VOQ09ESU5HX01FVEhPRERFRiAgICBcCi0gICAgeyJkZXZpY2VfZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pb3NfZGV2aWNlX2VuY29kaW5nLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZGV2aWNlX2VuY29kaW5nX19kb2NfX30sCisgICAgeyJkZXZpY2VfZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pb3NfZGV2aWNlX2VuY29kaW5nLCBNRVRIX0ZBU1RDQUxMLCBvc19kZXZpY2VfZW5jb2RpbmdfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2RldmljZV9lbmNvZGluZ19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19kZXZpY2VfZW5jb2RpbmcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19kZXZpY2VfZW5jb2RpbmcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOmRldmljZV9lbmNvZGluZyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpkZXZpY2VfZW5jb2RpbmciLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19kZXZpY2VfZW5jb2RpbmdfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTQ4NzQsOCArNTEzNSw5IEBACiAgICAgdWlkX3Qgc3VpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOnNldHJlc3VpZCIsCi0gICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnN1aWQpKQorICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnJ1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZzdWlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlc3VpZF9pbXBsKG1vZHVsZSwgcnVpZCwgZXVpZCwgc3VpZCk7CiAKIGV4aXQ6CkBAIC00OTA3LDggKzUxNjksOSBAQAogICAgIGdpZF90IHNnaWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyZPJjpzZXRyZXNnaWQiLAotICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZzZ2lkKSkKKyAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmc2dpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXNnaWRfaW1wbChtb2R1bGUsIHJnaWQsIGVnaWQsIHNnaWQpOwogCiBleGl0OgpAQCAtNDk3NSwyNCArNTIzOCwyNiBAQAogIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOwogCiAjZGVmaW5lIE9TX0dFVFhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19nZXR4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHhhdHRyX19kb2NfX30sCisgICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19nZXR4YXR0ciwgTUVUSF9GQVNUQ0FMTCwgb3NfZ2V0eGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2dldHhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19nZXR4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2dldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRwOmdldHhhdHRyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJnZXR4YXR0ciIsICJwYXRoIiwgMCwgMSk7CiAgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJnZXR4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6Z2V0eGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTUwMjEsMjYgKzUyODYsMjggQEAKICIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKIAogI2RlZmluZSBPU19TRVRYQVRUUl9NRVRIT0RERUYgICAgXAotICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zZXR4YXR0cl9fZG9jX199LAorICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0eGF0dHIsIE1FVEhfRkFTVENBTEwsIG9zX3NldHhhdHRyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zZXR4YXR0cl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqdmFsdWUsIGludCBmbGFncywgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zZXR4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJ2YWx1ZSIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJ2YWx1ZSIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8meSp8aSRwOnNldHhhdHRyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzZXR4YXR0ciIsICJwYXRoIiwgMCwgMSk7CiAgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJzZXR4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKICAgICBQeV9idWZmZXIgdmFsdWUgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IGZsYWdzID0gMDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ5KnxpJHA6c2V0eGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZ2YWx1ZSwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJnZhbHVlLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCAmdmFsdWUsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNTA0OSw4ICs1MzE2LDkgQEAKICAgICAvKiBDbGVhbnVwIGZvciBhdHRyaWJ1dGUgKi8KICAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CiAgICAgLyogQ2xlYW51cCBmb3IgdmFsdWUgKi8KLSAgICBpZiAodmFsdWUub2JqKQorICAgIGlmICh2YWx1ZS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YWx1ZSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTUwNzEsMjQgKzUzMzksMjYgQEAKICIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKIAogI2RlZmluZSBPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYgICAgXAotICAgIHsicmVtb3ZleGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZleGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZW1vdmV4YXR0cl9fZG9jX199LAorICAgIHsicmVtb3ZleGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZleGF0dHIsIE1FVEhfRkFTVENBTEwsIG9zX3JlbW92ZXhhdHRyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZW1vdmV4YXR0cl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVtb3ZleGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZW1vdmV4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkcDpyZW1vdmV4YXR0ciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZleGF0dHIiLCAicGF0aCIsIDAsIDEpOwogICAgIHBhdGhfdCBhdHRyaWJ1dGUgPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZleGF0dHIiLCAiYXR0cmlidXRlIiwgMCwgMCk7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOnJlbW92ZXhhdHRyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19yZW1vdmV4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsICZhdHRyaWJ1dGUsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC01MTE3LDIyICs1Mzg3LDI0IEBACiAiICB0aGUgbGluayBwb2ludHMgdG8uIik7CiAKICNkZWZpbmUgT1NfTElTVFhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJsaXN0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdHhhdHRyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGlzdHhhdHRyX19kb2NfX30sCisgICAgeyJsaXN0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdHhhdHRyLCBNRVRIX0ZBU1RDQUxMLCBvc19saXN0eGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xpc3R4YXR0cl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19saXN0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saXN0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TyYkcDpsaXN0eGF0dHIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpc3R4YXR0ciIsICJwYXRoIiwgMSwgMSk7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyYkcDpsaXN0eGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19saXN0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNTE2Miw4ICs1NDM0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46dXJhbmRvbSIsICZzaXplKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46dXJhbmRvbSIsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3VyYW5kb21faW1wbChtb2R1bGUsIHNpemUpOwogCiBleGl0OgpAQCAtNTE3NCw3ICs1NDQ3LDExIEBACiAiY3B1X2NvdW50KCRtb2R1bGUsIC8pXG4iCiAiLS1cbiIKICJcbiIKLSJSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW07IHJldHVybiBOb25lIGlmIGluZGV0ZXJtaW5hYmxlLiIpOworIlJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuXG4iCisiXG4iCisiVGhpcyBudW1iZXIgaXMgbm90IGVxdWl2YWxlbnQgdG8gdGhlIG51bWJlciBvZiBDUFVzIHRoZSBjdXJyZW50IHByb2Nlc3MgY2FuXG4iCisidXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aFxuIgorImBgbGVuKG9zLnNjaGVkX2dldGFmZmluaXR5KDApKWBgIik7CiAKICNkZWZpbmUgT1NfQ1BVX0NPVU5UX01FVEhPRERFRiAgICBcCiAgICAgeyJjcHVfY291bnQiLCAoUHlDRnVuY3Rpb24pb3NfY3B1X2NvdW50LCBNRVRIX05PQVJHUywgb3NfY3B1X2NvdW50X19kb2NfX30sCkBAIC01MjA3LDExICs1NDg0LDEzIEBACiAgICAgaW50IGZkOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9pbmhlcml0YWJsZSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9pbmhlcml0YWJsZSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZ2V0X2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUyMzgsOCArNTUxNyw5IEBACiAgICAgaW50IGluaGVyaXRhYmxlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfaW5oZXJpdGFibGUiLAotICAgICAgICAmZmQsICZpbmhlcml0YWJsZSkpCisgICAgICAgICZmZCwgJmluaGVyaXRhYmxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldF9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgZmQsIGluaGVyaXRhYmxlKTsKIAogZXhpdDoKQEAgLTUyNTgsMjAgKzU1MzgsMjIgQEAKICAgICB7ImdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSwgTUVUSF9PLCBvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKLW9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUpOworb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IGhhbmRsZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIGludHB0cl90IGhhbmRsZTsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfSU5UUFRSICI6Z2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsICZoYW5kbGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfSU5UUFRSICI6Z2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsICZoYW5kbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGhhbmRsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUyOTIsMTkgKzU1NzQsMjAgQEAKICAgICB7InNldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZSwgTUVUSF9WQVJBUkdTLCBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5oZXJpdGFibGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50cHRyX3QgaGFuZGxlOwogICAgIGludCBpbmhlcml0YWJsZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfSU5UUFRSICJwOnNldF9oYW5kbGVfaW5oZXJpdGFibGUiLAotICAgICAgICAmaGFuZGxlLCAmaW5oZXJpdGFibGUpKQorICAgICAgICAmaGFuZGxlLCAmaW5oZXJpdGFibGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBpbmhlcml0YWJsZSk7CiAKIGV4aXQ6CkBAIC01MzEzLDYgKzU1OTYsNzUgQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAorUHlEb2NfU1RSVkFSKG9zX2ZzcGF0aF9fZG9jX18sCisiZnNwYXRoKCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC5cbiIKKyJcbiIKKyJJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggYXMtaXMuIElmIHRoZVxuIgorIm9iamVjdCBkZWZpbmVzIF9fZnNwYXRoX18oKSwgdGhlbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGF0IG1ldGhvZC4gQWxsIG90aGVyXG4iCisidHlwZXMgcmFpc2UgYSBUeXBlRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfRlNQQVRIX01FVEhPRERFRiAgICBcCisgICAgeyJmc3BhdGgiLCAoUHlDRnVuY3Rpb24pb3NfZnNwYXRoLCBNRVRIX0ZBU1RDQUxMLCBvc19mc3BhdGhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzcGF0aF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzcGF0aChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOmZzcGF0aCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKnBhdGg7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnNwYXRoX2ltcGwobW9kdWxlLCBwYXRoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0dFVFJBTkRPTV9TWVNDQUxMKQorCitQeURvY19TVFJWQVIob3NfZ2V0cmFuZG9tX19kb2NfXywKKyJnZXRyYW5kb20oJG1vZHVsZSwgLywgc2l6ZSwgZmxhZ3M9MClcbiIKKyItLVxuIgorIlxuIgorIk9idGFpbiBhIHNlcmllcyBvZiByYW5kb20gYnl0ZXMuIik7CisKKyNkZWZpbmUgT1NfR0VUUkFORE9NX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRyYW5kb20iLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cmFuZG9tLCBNRVRIX0ZBU1RDQUxMLCBvc19nZXRyYW5kb21fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJhbmRvbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJhbmRvbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNpemUiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJufGk6Z2V0cmFuZG9tIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2l6ZSwgJmZsYWdzKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHJhbmRvbV9pbXBsKG1vZHVsZSwgc2l6ZSwgZmxhZ3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NX1NZU0NBTEwpICovCisKICNpZm5kZWYgT1NfVFRZTkFNRV9NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfVFRZTkFNRV9NRVRIT0RERUYpICovCkBAIC01NDkzLDYgKzU4NDUsMTAgQEAKICAgICAjZGVmaW5lIE9TX0dFVEdJRF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRHSURfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIE9TX0dFVFBJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFBJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRQSURfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIE9TX0dFVEdST1VQU19NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX0dFVEdST1VQU19NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRHUk9VUFNfTUVUSE9EREVGKSAqLwpAQCAtNTc0MSw2ICs2MDk3LDEwIEBACiAgICAgI2RlZmluZSBPU19TWVNDT05GX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZU0NPTkZfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIE9TX1NUQVJURklMRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NUQVJURklMRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TVEFSVEZJTEVfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIE9TX0dFVExPQURBVkdfTUVUSE9EREVGCiAgICAgI2RlZmluZSBPU19HRVRMT0FEQVZHX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVExPQURBVkdfTUVUSE9EREVGKSAqLwpAQCAtNTc4NCw0ICs2MTQ0LDggQEAKICNpZm5kZWYgT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWQ1ZjgzMWIyMzE0NWQxZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisKKyNpZm5kZWYgT1NfR0VUUkFORE9NX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUkFORE9NX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFJBTkRPTV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjllZDU3MDNkMmZlYjBkOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaAppbmRleCBjYjE5MWEwLi5mOWUwNjQ0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKQEAgLTMzLDggKzMzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqYXJnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRwd25hbSIsICZhcmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0cHduYW0iLCAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB3ZF9nZXRwd25hbV9pbXBsKG1vZHVsZSwgYXJnKTsKIAogZXhpdDoKQEAgLTY4LDQgKzY5LDQgQEAKICNpZm5kZWYgUFdEX0dFVFBXQUxMX01FVEhPRERFRgogICAgICNkZWZpbmUgUFdEX0dFVFBXQUxMX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFBXRF9HRVRQV0FMTF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDBlYTFjNWM4MzJmMGMxYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmM0MWQ4ZDg4ZWMyMDZkOCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaCBiL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCmluZGV4IGM1YjVjNzEuLjc1YTA5NmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oCkBAIC0yNSw4ICsyNSw5IEBACiAgICAgaW50IGlzZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6UGFyc2UiLAotICAgICAgICAmZGF0YSwgJmlzZmluYWwpKQorICAgICAgICAmZGF0YSwgJmlzZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfUGFyc2VfaW1wbChzZWxmLCBkYXRhLCBpc2ZpbmFsKTsKIAogZXhpdDoKQEAgLTYwLDggKzYxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpiYXNlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOlNldEJhc2UiLCAmYmFzZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOlNldEJhc2UiLCAmYmFzZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlX2ltcGwoc2VsZiwgYmFzZSk7CiAKIGV4aXQ6CkBAIC0xMjksOCArMTMxLDkgQEAKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInp8czpFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsCi0gICAgICAgICZjb250ZXh0LCAmZW5jb2RpbmcpKQorICAgICAgICAmY29udGV4dCwgJmVuY29kaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX2ltcGwoc2VsZiwgY29udGV4dCwgZW5jb2RpbmcpOwogCiBleGl0OgpAQCAtMTYwLDggKzE2Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZsYWc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6U2V0UGFyYW1FbnRpdHlQYXJzaW5nIiwgJmZsYWcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAmZmxhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfaW1wbChzZWxmLCBmbGFnKTsKIAogZXhpdDoKQEAgLTE5Myw4ICsxOTcsOSBAQAogICAgIGludCBmbGFnID0gMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHA6VXNlRm9yZWlnbkRURCIsCi0gICAgICAgICZmbGFnKSkKKyAgICAgICAgJmZsYWcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHNlbGYsIGZsYWcpOwogCiBleGl0OgpAQCAtMjI4LDI0ICsyMzMsMjYgQEAKICJSZXR1cm4gYSBuZXcgWE1MIHBhcnNlciBvYmplY3QuIik7CiAKICNkZWZpbmUgUFlFWFBBVF9QQVJTRVJDUkVBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7IlBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X1BhcnNlckNyZWF0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfX30sCisgICAgeyJQYXJzZXJDcmVhdGUiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF9QYXJzZXJDcmVhdGUsIE1FVEhfRkFTVENBTEwsIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBweWV4cGF0X1BhcnNlckNyZWF0ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXB5ZXhwYXRfUGFyc2VyQ3JlYXRlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorcHlleHBhdF9QYXJzZXJDcmVhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgIm5hbWVzcGFjZV9zZXBhcmF0b3IiLCAiaW50ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAibmFtZXNwYWNlX3NlcGFyYXRvciIsICJpbnRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8enpPOlBhcnNlckNyZWF0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IgPSBOVUxMOwogICAgIFB5T2JqZWN0ICppbnRlcm4gPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHp6TzpQYXJzZXJDcmVhdGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZlbmNvZGluZywgJm5hbWVzcGFjZV9zZXBhcmF0b3IsICZpbnRlcm4pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZuYW1lc3BhY2Vfc2VwYXJhdG9yLCAmaW50ZXJuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX2ltcGwobW9kdWxlLCBlbmNvZGluZywgbmFtZXNwYWNlX3NlcGFyYXRvciwgaW50ZXJuKTsKIAogZXhpdDoKQEAgLTI3MCw4ICsyNzcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGxvbmcgY29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibDpFcnJvclN0cmluZyIsICZjb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImw6RXJyb3JTdHJpbmciLCAmY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X0Vycm9yU3RyaW5nX2ltcGwobW9kdWxlLCBjb2RlKTsKIAogZXhpdDoKQEAgLTI4MSw0ICsyODksNCBAQAogI2lmbmRlZiBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRgogICAgICNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNDc5Y2ZhYjYwN2U5ZGM4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lODg5ZjdjNmFmNmNjNDJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKaW5kZXggNWI4ZGI4MC4uYjA4ZTkyZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmgKQEAgLTcyLDI0ICs3MiwyNiBAQAogIlJldHVybiBhIG5ldyBTSEExIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTFfU0hBMV9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMSIsIChQeUNGdW5jdGlvbilfc2hhMV9zaGExLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTFfc2hhMV9fZG9jX199LAorICAgIHsic2hhMSIsIChQeUNGdW5jdGlvbilfc2hhMV9zaGExLCBNRVRIX0ZBU1RDQUxMLCBfc2hhMV9zaGExX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhMV9zaGExX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhMV9zaGExKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTFfc2hhMShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhMSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGExIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhMV9zaGExX2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGI2YTE5NGZiYjBiOTRmMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQzMDQ1MGYzZjgwNjg5NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaAppbmRleCA2NjE1NjljLi4xMTVkYjUwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKQEAgLTcyLDIxICs3MiwyMyBAQAogIlJldHVybiBhIG5ldyBTSEEtMjU2IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTI1Nl9TSEEyNTZfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTI1NiIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTI1NiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGEyNTZfc2hhMjU2X19kb2NfX30sCisgICAgeyJzaGEyNTYiLCAoUHlDRnVuY3Rpb24pX3NoYTI1Nl9zaGEyNTYsIE1FVEhfRkFTVENBTEwsIF9zaGEyNTZfc2hhMjU2X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhMjU2X3NoYTI1Nl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTI1Nl9zaGEyNTYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhMjU2X3NoYTI1NihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhMjU2IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTI1NiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTI1Nl9zaGEyNTZfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CkBAIC0xMDAsMjQgKzEwMiwyNiBAQAogIlJldHVybiBhIG5ldyBTSEEtMjI0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTI1Nl9TSEEyMjRfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTIyNCIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTIyNCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGEyNTZfc2hhMjI0X19kb2NfX30sCisgICAgeyJzaGEyMjQiLCAoUHlDRnVuY3Rpb24pX3NoYTI1Nl9zaGEyMjQsIE1FVEhfRkFTVENBTEwsIF9zaGEyNTZfc2hhMjI0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhMjU2X3NoYTIyNF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTI1Nl9zaGEyMjQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhMjU2X3NoYTIyNChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhMjI0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTIyNCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTI1Nl9zaGEyMjRfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YTFmYzU0ODBlMzk5Zjk1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTQzOWQ3MGRiN2VhZDVjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaGE1MTJtb2R1bGUuYy5oCmluZGV4IGQ2NGMyYTQuLmEyYjU3ZjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaApAQCAtMiw4ICsyLDYgQEAKIHByZXNlcnZlCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfY29weV9fZG9jX18sCiAiY29weSgkc2VsZiwgLylcbiIKICItLVxuIgpAQCAtMjIsMTAgKzIwLDYgQEAKICAgICByZXR1cm4gU0hBNTEyVHlwZV9jb3B5X2ltcGwoc2VsZik7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9kaWdlc3RfX2RvY19fLAogImRpZ2VzdCgkc2VsZiwgLylcbiIKICItLVxuIgpAQCAtNDQsMTAgKzM4LDYgQEAKICAgICByZXR1cm4gU0hBNTEyVHlwZV9kaWdlc3RfaW1wbChzZWxmKTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2hleGRpZ2VzdF9fZG9jX18sCiAiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgogIi0tXG4iCkBAIC02NiwxMCArNTYsNiBAQAogICAgIHJldHVybiBTSEE1MTJUeXBlX2hleGRpZ2VzdF9pbXBsKHNlbGYpOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfdXBkYXRlX19kb2NfXywKICJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKICItLVxuIgpAQCAtNzksMTAgKzY1LDYgQEAKICNkZWZpbmUgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGICAgIFwKICAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilTSEE1MTJUeXBlX3VwZGF0ZSwgTUVUSF9PLCBTSEE1MTJUeXBlX3VwZGF0ZV9fZG9jX199LAogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKF9zaGE1MTJfc2hhNTEyX19kb2NfXywKICJzaGE1MTIoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgogIi0tXG4iCkBAIC05MCwzMSArNzIsMjkgQEAKICJSZXR1cm4gYSBuZXcgU0hBLTUxMiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRiAgICBcCi0gICAgeyJzaGE1MTIiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGE1MTIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhNTEyX3NoYTUxMl9fZG9jX199LAorICAgIHsic2hhNTEyIiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhNTEyLCBNRVRIX0ZBU1RDQUxMLCBfc2hhNTEyX3NoYTUxMl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NoYTUxMl9zaGE1MTJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGE1MTJfc2hhNTEyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTUxMl9zaGE1MTIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTUxMiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGE1MTIiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGE1MTJfc2hhNTEyX2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoX3NoYTUxMl9zaGEzODRfX2RvY19fLAogInNoYTM4NCgkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCiAiLS1cbiIKQEAgLTEyMiw1MCArMTAyLDI2IEBACiAiUmV0dXJuIGEgbmV3IFNIQS0zODQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMzg0IiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhMzg0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTUxMl9zaGEzODRfX2RvY19ffSwKKyAgICB7InNoYTM4NCIsIChQeUNGdW5jdGlvbilfc2hhNTEyX3NoYTM4NCwgTUVUSF9GQVNUQ0FMTCwgX3NoYTUxMl9zaGEzODRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGE1MTJfc2hhMzg0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhNTEyX3NoYTM4NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGE1MTJfc2hhMzg0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGEzODQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMzg0IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhNTEyX3NoYTM4NF9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgotICAgICNkZWZpbmUgU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGCi0gICAgI2RlZmluZSBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYpICovCi0KLSNpZm5kZWYgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGCi0gICAgI2RlZmluZSBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmI4N2Y0OTRkZjUwZmZjMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MThmMTU1OThjMzQ4NzA0NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaAppbmRleCBjOGY0Y2Q1Li5mOGQ1YmQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKQEAgLTIzLDExICsyMywxMyBAQAogICAgIGludCBzZWNvbmRzOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTphbGFybSIsICZzZWNvbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6YWxhcm0iLCAmc2Vjb25kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2FsYXJtX2ltcGwobW9kdWxlLCBzZWNvbmRzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtODUsOCArODcsOSBAQAogICAgIFB5T2JqZWN0ICpoYW5kbGVyOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpzaWduYWwiLAotICAgICAgICAmc2lnbmFsbnVtLCAmaGFuZGxlcikpCisgICAgICAgICZzaWduYWxudW0sICZoYW5kbGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWduYWxfaW1wbChtb2R1bGUsIHNpZ25hbG51bSwgaGFuZGxlcik7CiAKIGV4aXQ6CkBAIC0xMTcsOCArMTIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgc2lnbmFsbnVtOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldHNpZ25hbCIsICZzaWduYWxudW0pKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRzaWduYWwiLCAmc2lnbmFsbnVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9nZXRzaWduYWxfaW1wbChtb2R1bGUsIHNpZ25hbG51bSk7CiAKIGV4aXQ6CkBAIC0xNTAsOCArMTU0LDkgQEAKICAgICBpbnQgZmxhZzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2lnaW50ZXJydXB0IiwKLSAgICAgICAgJnNpZ25hbG51bSwgJmZsYWcpKQorICAgICAgICAmc2lnbmFsbnVtLCAmZmxhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lnaW50ZXJydXB0X2ltcGwobW9kdWxlLCBzaWduYWxudW0sIGZsYWcpOwogCiBleGl0OgpAQCAtMTg5LDggKzE5NCw5IEBACiAgICAgZG91YmxlIGludGVydmFsID0gMC4wOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpZHxkOnNldGl0aW1lciIsCi0gICAgICAgICZ3aGljaCwgJnNlY29uZHMsICZpbnRlcnZhbCkpCisgICAgICAgICZ3aGljaCwgJnNlY29uZHMsICZpbnRlcnZhbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2V0aXRpbWVyX2ltcGwobW9kdWxlLCB3aGljaCwgc2Vjb25kcywgaW50ZXJ2YWwpOwogCiBleGl0OgpAQCAtMjE5LDggKzIyNSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHdoaWNoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldGl0aW1lciIsICZ3aGljaCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldGl0aW1lciIsICZ3aGljaCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfZ2V0aXRpbWVyX2ltcGwobW9kdWxlLCB3aGljaCk7CiAKIGV4aXQ6CkBAIC0yNTEsOCArMjU4LDkgQEAKICAgICBQeU9iamVjdCAqbWFzazsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cHRocmVhZF9zaWdtYXNrIiwKLSAgICAgICAgJmhvdywgJm1hc2spKQorICAgICAgICAmaG93LCAmbWFzaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfcHRocmVhZF9zaWdtYXNrX2ltcGwobW9kdWxlLCBob3csIG1hc2spOwogCiBleGl0OgpAQCAtMzQ0LDggKzM1Miw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzaWd0aW1lZHdhaXQiLAogICAgICAgICAyLCAyLAotICAgICAgICAmc2lnc2V0LCAmdGltZW91dF9vYmopKQorICAgICAgICAmc2lnc2V0LCAmdGltZW91dF9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ3RpbWVkd2FpdF9pbXBsKG1vZHVsZSwgc2lnc2V0LCB0aW1lb3V0X29iaik7CiAKIGV4aXQ6CkBAIC0zNzYsOCArMzg1LDkgQEAKICAgICBpbnQgc2lnbmFsbnVtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJsaTpwdGhyZWFkX2tpbGwiLAotICAgICAgICAmdGhyZWFkX2lkLCAmc2lnbmFsbnVtKSkKKyAgICAgICAgJnRocmVhZF9pZCwgJnNpZ25hbG51bSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfcHRocmVhZF9raWxsX2ltcGwobW9kdWxlLCB0aHJlYWRfaWQsIHNpZ25hbG51bSk7CiAKIGV4aXQ6CkBAIC00MjksNCArNDM5LDQgQEAKICNpZm5kZWYgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKICAgICAjZGVmaW5lIFNJR05BTF9QVEhSRUFEX0tJTExfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGFmYTU5ODQxMmJmYjhkMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzY5OTBlZjBkMGJhNzJiNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zcHdkbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCmluZGV4IGUyNmFjZjEuLmIyNDc5ZmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCkBAIC0yNCw4ICsyNCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFyZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0c3BuYW0iLCAmYXJnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ18sICJVOmdldHNwbmFtIiwgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzcHdkX2dldHNwbmFtX2ltcGwobW9kdWxlLCBhcmcpOwogCiBleGl0OgpAQCAtNjUsNCArNjYsNCBAQAogI2lmbmRlZiBTUFdEX0dFVFNQQUxMX01FVEhPRERFRgogICAgICNkZWZpbmUgU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChTUFdEX0dFVFNQQUxMX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MTBmNjgxYjM2ZjU0YzMwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wN2NkOGFmMGFmZDc3ZmU3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaCBiL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaAppbmRleCBkNTIwYzFlLi5kNDgxY2NiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oCkBAIC0yNyw4ICsyNyw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86ZGVjaW1hbCIsCi0gICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtNTksOCArNjAsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOmRpZ2l0IiwKLSAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGlnaXRfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtOTIsOCArOTQsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOm51bWVyaWMiLAotICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9udW1lcmljX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTExOCw4ICsxMjEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y2F0ZWdvcnkiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y2F0ZWdvcnkiLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9jYXRlZ29yeV9pbXBsKHNlbGYsIGNocik7CiAKIGV4aXQ6CkBAIC0xNDYsOCArMTUwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmJpZGlyZWN0aW9uYWwiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6YmlkaXJlY3Rpb25hbCIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWxfaW1wbChzZWxmLCBjaHIpOwogCiBleGl0OgpAQCAtMTc1LDExICsxODAsMTMgQEAKICAgICBpbnQgY2hyOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNvbWJpbmluZyIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjb21iaW5pbmciLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nX2ltcGwoc2VsZiwgY2hyKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjA4LDExICsyMTUsMTMgQEAKICAgICBpbnQgY2hyOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOm1pcnJvcmVkIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOm1pcnJvcmVkIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX2ltcGwoc2VsZiwgY2hyKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjM3LDggKzI0Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNocjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzplYXN0X2FzaWFuX3dpZHRoIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmVhc3RfYXNpYW5fd2lkdGgiLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX2ltcGwoc2VsZiwgY2hyKTsKIAogZXhpdDoKQEAgLTI2NSw4ICsyNzUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZGVjb21wb3NpdGlvbiIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpkZWNvbXBvc2l0aW9uIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9pbXBsKHNlbGYsIGNocik7CiAKIGV4aXQ6CkBAIC0yOTYsOCArMzA3LDkgQEAKICAgICBQeU9iamVjdCAqaW5wdXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPITpub3JtYWxpemUiLAotICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKQorICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9pbXBsKHNlbGYsIGZvcm0sIGlucHV0KTsKIAogZXhpdDoKQEAgLTMyNyw4ICszMzksOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOm5hbWUiLAotICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9uYW1lX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM1OCwxMSArMzcxLDEyIEBACiAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICBQeV9zc2l6ZV9jbGVhbl90IG5hbWVfbGVuZ3RoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzIzpsb29rdXAiLCAmbmFtZSwgJm5hbWVfbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOmxvb2t1cCIsICZuYW1lLCAmbmFtZV9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2xvb2t1cF9pbXBsKHNlbGYsIG5hbWUsIG5hbWVfbGVuZ3RoKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRmOGRhMzNjNmJjNmVmYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUzMTNjZTEyOWRhODdiMmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvemxpYm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaAppbmRleCBiMWFmN2NlLi5mZGEzOTJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaApAQCAtMyw0NCArMyw0OCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBQeURvY19TVFJWQVIoemxpYl9jb21wcmVzc19fZG9jX18sCi0iY29tcHJlc3MoJG1vZHVsZSwgYnl0ZXMsIGxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTiwgLylcbiIKKyJjb21wcmVzcygkbW9kdWxlLCBkYXRhLCAvLCBsZXZlbD1aX0RFRkFVTFRfQ09NUFJFU1NJT04pXG4iCiAiLS1cbiIKICJcbiIKICJSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLlxuIgogIlxuIgotIiAgYnl0ZXNcbiIKKyIgIGRhdGFcbiIKICIgICAgQmluYXJ5IGRhdGEgdG8gYmUgY29tcHJlc3NlZC5cbiIKICIgIGxldmVsXG4iCi0iICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkuIik7CisiICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkgb3IgLTEuIik7CiAKICNkZWZpbmUgWkxJQl9DT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX2NvbXByZXNzX19kb2NfX30sCisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2NvbXByZXNzLCBNRVRIX0ZBU1RDQUxMLCB6bGliX2NvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpieXRlcywgaW50IGxldmVsKTsKK3psaWJfY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBsZXZlbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoremxpYl9jb21wcmVzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBieXRlcyA9IHtOVUxMLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAibGV2ZWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpOmNvbXByZXNzIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgbGV2ZWwgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGk6Y29tcHJlc3MiLAotICAgICAgICAmYnl0ZXMsICZsZXZlbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmbGV2ZWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzX2ltcGwobW9kdWxlLCAmYnl0ZXMsIGxldmVsKTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jb21wcmVzc19pbXBsKG1vZHVsZSwgJmRhdGEsIGxldmVsKTsKIAogZXhpdDoKLSAgICAvKiBDbGVhbnVwIGZvciBieXRlcyAqLwotICAgIGlmIChieXRlcy5vYmopCi0gICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnl0ZXMpOworICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiBQeURvY19TVFJWQVIoemxpYl9kZWNvbXByZXNzX19kb2NfXywKLSJkZWNvbXByZXNzKCRtb2R1bGUsIGRhdGEsIHdiaXRzPU1BWF9XQklUUywgYnVmc2l6ZT1ERUZfQlVGX1NJWkUsIC8pXG4iCisiZGVjb21wcmVzcygkbW9kdWxlLCBkYXRhLCAvLCB3Yml0cz1NQVhfV0JJVFMsIGJ1ZnNpemU9REVGX0JVRl9TSVpFKVxuIgogIi0tXG4iCiAiXG4iCiAiUmV0dXJucyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YS5cbiIKQEAgLTUzLDI5ICs1NywzMyBAQAogIiAgICBUaGUgaW5pdGlhbCBvdXRwdXQgYnVmZmVyIHNpemUuIik7CiAKICNkZWZpbmUgWkxJQl9ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9kZWNvbXByZXNzLCBNRVRIX0ZBU1RDQUxMLCB6bGliX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfZGVjb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHdiaXRzLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZzaXplKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfZGVjb21wcmVzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3psaWJfZGVjb21wcmVzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJ3Yml0cyIsICJidWZzaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8aU8mOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3Yml0cyA9IE1BWF9XQklUUzsKICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUgPSBERUZfQlVGX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGlPJjpkZWNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEsICZ3Yml0cywgc3NpemVfdF9jb252ZXJ0ZXIsICZidWZzaXplKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZ3Yml0cywgc3NpemVfdF9jb252ZXJ0ZXIsICZidWZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfZGVjb21wcmVzc19pbXBsKG1vZHVsZSwgJmRhdGEsIHdiaXRzLCBidWZzaXplKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMTEsMTcgKzExOSwxOCBAQAogIiAgICBjb250YWluaW5nIHN1YnNlcXVlbmNlcyB0aGF0IGFyZSBsaWtlbHkgdG8gb2NjdXIgaW4gdGhlIGlucHV0IGRhdGEuIik7CiAKICNkZWZpbmUgWkxJQl9DT01QUkVTU09CSl9NRVRIT0RERUYgICAgXAotICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHpsaWJfY29tcHJlc3NvYmpfX2RvY19ffSwKKyAgICB7ImNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfY29tcHJlc3NvYmosIE1FVEhfRkFTVENBTEwsIHpsaWJfY29tcHJlc3NvYmpfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfY29tcHJlc3NvYmpfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywKICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVtTGV2ZWwsIGludCBzdHJhdGVneSwgUHlfYnVmZmVyICp6ZGljdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoremxpYl9jb21wcmVzc29iaihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibGV2ZWwiLCAibWV0aG9kIiwgIndiaXRzIiwgIm1lbUxldmVsIiwgInN0cmF0ZWd5IiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGV2ZWwiLCAibWV0aG9kIiwgIndiaXRzIiwgIm1lbUxldmVsIiwgInN0cmF0ZWd5IiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGlpaWlpeSo6Y29tcHJlc3NvYmoiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjsKICAgICBpbnQgbWV0aG9kID0gREVGTEFURUQ7CiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwpAQCAtMTI5LDE1ICsxMzgsMTcgQEAKICAgICBpbnQgc3RyYXRlZ3kgPSBaX0RFRkFVTFRfU1RSQVRFR1k7CiAgICAgUHlfYnVmZmVyIHpkaWN0ID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlpaWlpeSo6Y29tcHJlc3NvYmoiLCBfa2V5d29yZHMsCi0gICAgICAgICZsZXZlbCwgJm1ldGhvZCwgJndiaXRzLCAmbWVtTGV2ZWwsICZzdHJhdGVneSwgJnpkaWN0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsICZtZW1MZXZlbCwgJnN0cmF0ZWd5LCAmemRpY3QpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jb21wcmVzc29ial9pbXBsKG1vZHVsZSwgbGV2ZWwsIG1ldGhvZCwgd2JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSwgJnpkaWN0KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciB6ZGljdCAqLwotICAgIGlmICh6ZGljdC5vYmopCisgICAgaWYgKHpkaWN0Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnpkaWN0KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTU1LDIyICsxNjYsMjQgQEAKICIgICAgZGljdGlvbmFyeSBhcyB1c2VkIGJ5IHRoZSBjb21wcmVzc29yIHRoYXQgcHJvZHVjZWQgdGhlIGlucHV0IGRhdGEuIik7CiAKICNkZWZpbmUgWkxJQl9ERUNPTVBSRVNTT0JKX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHpsaWJfZGVjb21wcmVzc29ial9fZG9jX199LAorICAgIHsiZGVjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbil6bGliX2RlY29tcHJlc3NvYmosIE1FVEhfRkFTVENBTEwsIHpsaWJfZGVjb21wcmVzc29ial9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9kZWNvbXByZXNzb2JqX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHdiaXRzLCBQeU9iamVjdCAqemRpY3QpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9kZWNvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoremxpYl9kZWNvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3Yml0cyIsICJ6ZGljdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IndiaXRzIiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGlPOmRlY29tcHJlc3NvYmoiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCB3Yml0cyA9IE1BWF9XQklUUzsKICAgICBQeU9iamVjdCAqemRpY3QgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlPOmRlY29tcHJlc3NvYmoiLCBfa2V5d29yZHMsCi0gICAgICAgICZ3Yml0cywgJnpkaWN0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJndiaXRzLCAmemRpY3QpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9kZWNvbXByZXNzb2JqX2ltcGwobW9kdWxlLCB3Yml0cywgemRpY3QpOwogCiBleGl0OgpAQCAtMjAyLDIwICsyMTUsMjIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfQ29tcHJlc3NfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiBQeURvY19TVFJWQVIoemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoJHNlbGYsIGRhdGEsIG1heF9sZW5ndGg9MCwgLylcbiIKKyJkZWNvbXByZXNzKCRzZWxmLCBkYXRhLCAvLCBtYXhfbGVuZ3RoPTApXG4iCiAiLS1cbiIKICJcbiIKICJSZXR1cm4gYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIHZlcnNpb24gb2YgdGhlIGRhdGEuXG4iCkBAIC0yMzIsMjggKzI0NywzMiBAQAogIkNhbGwgdGhlIGZsdXNoKCkgbWV0aG9kIHRvIGNsZWFyIHRoZXNlIGJ1ZmZlcnMuIik7CiAKICNkZWZpbmUgWkxJQl9ERUNPTVBSRVNTX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzKGNvbXBvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoremxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfE8mOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfE8mOmRlY29tcHJlc3MiLAotICAgICAgICAmZGF0YSwgc3NpemVfdF9jb252ZXJ0ZXIsICZtYXhfbGVuZ3RoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsIHNzaXplX3RfY29udmVydGVyLCAmbWF4X2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhLCBtYXhfbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yODMsOCArMzAyLDkgQEAKICAgICBpbnQgbW9kZSA9IFpfRklOSVNIOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpmbHVzaCIsCi0gICAgICAgICZtb2RlKSkKKyAgICAgICAgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9Db21wcmVzc19mbHVzaF9pbXBsKHNlbGYsIG1vZGUpOwogCiBleGl0OgpAQCAtMzU3LDggKzM3Nyw5IEBACiAgICAgUHlfc3NpemVfdCBsZW5ndGggPSBERUZfQlVGX1NJWkU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpmbHVzaCIsCi0gICAgICAgIHNzaXplX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgc3NpemVfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9EZWNvbXByZXNzX2ZsdXNoX2ltcGwoc2VsZiwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTM5MCwxNCArNDExLDE2IEBACiAgICAgdW5zaWduZWQgaW50IHZhbHVlID0gMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STphZGxlcjMyIiwKLSAgICAgICAgJmRhdGEsICZ2YWx1ZSkpCisgICAgICAgICZkYXRhLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9hZGxlcjMyX2ltcGwobW9kdWxlLCAmZGF0YSwgdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQyNywxNCArNDUwLDE2IEBACiAgICAgdW5zaWduZWQgaW50IHZhbHVlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STpjcmMzMiIsCi0gICAgICAgICZkYXRhLCAmdmFsdWUpKQorICAgICAgICAmZGF0YSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCB2YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDQyLDQgKzQ2Nyw0IEBACiAjaWZuZGVmIFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYKICAgICAjZGVmaW5lIFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3MTFlZjAyZDFkNTc3NmMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNhNGUyYmZlNzUwNDIzYTMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbWF0aG1vZHVsZS5jIGIvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCmluZGV4IGNiYTQyYTcuLjgzMTk3NjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY21hdGhtb2R1bGUuYworKysgYi9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKQEAgLTgxLDYgKzgxLDU0IEBACiAjZW5kaWYKICNkZWZpbmUgQ01fU0NBTEVfRE9XTiAoLShDTV9TQ0FMRV9VUCsxKS8yKQogCisvKiBDb25zdGFudHMgY21hdGguaW5mLCBjbWF0aC5pbmZqLCBjbWF0aC5uYW4sIGNtYXRoLm5hbmouCisgICBjbWF0aC5uYW4gYW5kIGNtYXRoLm5hbmogYXJlIGRlZmluZWQgb25seSB3aGVuIGVpdGhlcgorICAgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUiBpcyAqbm90KiBkZWZpbmVkICh3aGljaCBzaG91bGQgYmUKKyAgIHRoZSBtb3N0IGNvbW1vbiBzaXR1YXRpb24gb24gbWFjaGluZXMgdXNpbmcgYW4gSUVFRSA3NTQKKyAgIHJlcHJlc2VudGF0aW9uKSwgb3IgUHlfTkFOIGlzIGRlZmluZWQuICovCisKK3N0YXRpYyBkb3VibGUKK21faW5mKHZvaWQpCit7CisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICByZXR1cm4gX1B5X2RnX2luZmluaXR5KDApOworI2Vsc2UKKyAgICByZXR1cm4gUHlfSFVHRV9WQUw7CisjZW5kaWYKK30KKworc3RhdGljIFB5X2NvbXBsZXgKK2NfaW5maih2b2lkKQoreworICAgIFB5X2NvbXBsZXggcjsKKyAgICByLnJlYWwgPSAwLjA7CisgICAgci5pbWFnID0gbV9pbmYoKTsKKyAgICByZXR1cm4gcjsKK30KKworI2lmICFkZWZpbmVkKFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIpIHx8IGRlZmluZWQoUHlfTkFOKQorCitzdGF0aWMgZG91YmxlCittX25hbih2b2lkKQoreworI2lmbmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisgICAgcmV0dXJuIF9QeV9kZ19zdGRuYW4oMCk7CisjZWxzZQorICAgIHJldHVybiBQeV9OQU47CisjZW5kaWYKK30KKworc3RhdGljIFB5X2NvbXBsZXgKK2NfbmFuaih2b2lkKQoreworICAgIFB5X2NvbXBsZXggcjsKKyAgICByLnJlYWwgPSAwLjA7CisgICAgci5pbWFnID0gbV9uYW4oKTsKKyAgICByZXR1cm4gcjsKK30KKworI2VuZGlmCisKIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCiBzdGF0aWMgUHlfY29tcGxleCBjbWF0aF9hc2luaF9pbXBsKFB5T2JqZWN0ICosIFB5X2NvbXBsZXgpOwogc3RhdGljIFB5X2NvbXBsZXggY21hdGhfYXRhbmhfaW1wbChQeU9iamVjdCAqLCBQeV9jb21wbGV4KTsKQEAgLTEyMzksNiArMTI4NywxMyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAicGkiLAogICAgICAgICAgICAgICAgICAgICAgICBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9QSSkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX0UpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInRhdSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1RBVSkpOyAvKiAycGkgKi8KKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX2luZigpKSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJpbmZqIiwgUHlDb21wbGV4X0Zyb21DQ29tcGxleChjX2luZmooKSkpOworI2lmICFkZWZpbmVkKFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIpIHx8IGRlZmluZWQoUHlfTkFOKQorICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmFuIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1fbmFuKCkpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIm5hbmoiLCBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KGNfbmFuaigpKSk7CisjZW5kaWYKIAogICAgIC8qIGluaXRpYWxpemUgc3BlY2lhbCB2YWx1ZSB0YWJsZXMgKi8KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYyBiL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKaW5kZXggZjFmZGE0OC4uMWMxZTRmYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYworKysgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCkBAIC0xMTksNyArMTE5LDcgQEAKICAgICAgICBoYW5kbGVyIGZhaWxzIGluIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcigpICovCiAgICAge1NJR1NFR1YsIDAsICJTZWdtZW50YXRpb24gZmF1bHQiLCB9CiB9Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZmF1bHRoYW5kbGVyX25zaWduYWxzID0gXAorc3RhdGljIGNvbnN0IHNpemVfdCBmYXVsdGhhbmRsZXJfbnNpZ25hbHMgPSBcCiAgICAgUHlfQVJSQVlfTEVOR1RIKGZhdWx0aGFuZGxlcl9oYW5kbGVycyk7CiAKICNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCkBAIC0xNTksNyArMTU5LDcgQEAKICAgICAgICAgZmQgPSBfUHlMb25nX0FzSW50KGZpbGUpOwogICAgICAgICBpZiAoZmQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKGZkIDwgMCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBpZiAoZmQgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE2OCw3ICsxNjgsNyBAQAogICAgICAgICByZXR1cm4gZmQ7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9maWxlbm8sICIiKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZpbGVubywgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgZWxzZSB7CkBAIC0yMDIsOCArMjAyLDkgQEAKIHN0YXRpYyBQeVRocmVhZFN0YXRlKgogZ2V0X3RocmVhZF9zdGF0ZSh2b2lkKQogewotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7CiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIGp1c3QgaW4gY2FzZSBidXQgdmVyeSB1bmxpa2VseS4uLiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjM0LDExICsyMzUsMTIgQEAKICAgICAgICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpLiAqLwogICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CiAjZWxzZQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7CiAjZW5kaWYKIAotICAgIGlmIChhbGxfdGhyZWFkcykKLSAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBpbnRlcnAsIHRzdGF0ZSk7CisgICAgaWYgKGFsbF90aHJlYWRzKSB7CisgICAgICAgICh2b2lkKV9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgTlVMTCwgdHN0YXRlKTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICh0c3RhdGUgIT0gTlVMTCkKICAgICAgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrKGZkLCB0c3RhdGUpOwpAQCAtMjcyLDcgKzI3NCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKGFsbF90aHJlYWRzKSB7Ci0gICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgdHN0YXRlLT5pbnRlcnAsIHRzdGF0ZSk7CisgICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgTlVMTCwgdHN0YXRlKTsKICAgICAgICAgaWYgKGVycm1zZyAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBlcnJtc2cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yODgsNiArMjkwLDE5IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfZGlzYWJsZV9mYXRhbF9oYW5kbGVyKGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcikKK3sKKyAgICBpZiAoIWhhbmRsZXItPmVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBoYW5kbGVyLT5lbmFibGVkID0gMDsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICh2b2lkKXNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZoYW5kbGVyLT5wcmV2aW91cywgTlVMTCk7CisjZWxzZQorICAgICh2b2lkKXNpZ25hbChoYW5kbGVyLT5zaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKKyNlbmRpZgorfQorCiAKIC8qIEhhbmRsZXIgZm9yIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgc2lnbmFscy4KIApAQCAtMzA2LDcgKzMyMSw3IEBACiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoaW50IHNpZ251bSkKIHsKICAgICBjb25zdCBpbnQgZmQgPSBmYXRhbF9lcnJvci5mZDsKLSAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzaXplX3QgaTsKICAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXIgPSBOVUxMOwogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CiAKQEAgLTMyNCwxMiArMzM5LDcgQEAKICAgICB9CiAKICAgICAvKiByZXN0b3JlIHRoZSBwcmV2aW91cyBoYW5kbGVyICovCi0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAodm9pZClzaWdhY3Rpb24oc2lnbnVtLCAmaGFuZGxlci0+cHJldmlvdXMsIE5VTEwpOwotI2Vsc2UKLSAgICAodm9pZClzaWduYWwoc2lnbnVtLCBoYW5kbGVyLT5wcmV2aW91cyk7Ci0jZW5kaWYKLSAgICBoYW5kbGVyLT5lbmFibGVkID0gMDsKKyAgICBmYXVsdGhhbmRsZXJfZGlzYWJsZV9mYXRhbF9oYW5kbGVyKGhhbmRsZXIpOwogCiAgICAgUFVUUyhmZCwgIkZhdGFsIFB5dGhvbiBlcnJvcjogIik7CiAgICAgUFVUUyhmZCwgaGFuZGxlci0+bmFtZSk7CkBAIC0zNTEsMjAgKzM2MSwxMTcgQEAKICAgICByYWlzZShzaWdudW0pOwogfQogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIExPTkcgV0lOQVBJCitmYXVsdGhhbmRsZXJfZXhjX2hhbmRsZXIoc3RydWN0IF9FWENFUFRJT05fUE9JTlRFUlMgKmV4Y19pbmZvKQoreworICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOworICAgIERXT1JEIGNvZGUgPSBleGNfaW5mby0+RXhjZXB0aW9uUmVjb3JkLT5FeGNlcHRpb25Db2RlOworICAgIERXT1JEIGZsYWdzID0gZXhjX2luZm8tPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uRmxhZ3M7CisKKyAgICAvKiBvbmx5IGxvZyBmYXRhbCBleGNlcHRpb25zICovCisgICAgaWYgKGZsYWdzICYgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFKSB7CisgICAgICAgIC8qIGNhbGwgdGhlIG5leHQgZXhjZXB0aW9uIGhhbmRsZXIgKi8KKyAgICAgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7CisgICAgfQorCisgICAgUFVUUyhmZCwgIldpbmRvd3MgZmF0YWwgZXhjZXB0aW9uOiAiKTsKKyAgICBzd2l0Y2ggKGNvZGUpCisgICAgeworICAgIC8qIG9ubHkgZm9ybWF0IG1vc3QgY29tbW9uIGVycm9ycyAqLworICAgIGNhc2UgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT046IFBVVFMoZmQsICJhY2Nlc3MgdmlvbGF0aW9uIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9ESVZJREVfQllfWkVSTzogUFVUUyhmZCwgImZsb2F0IGRpdmlkZSBieSB6ZXJvIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9PVkVSRkxPVzogUFVUUyhmZCwgImZsb2F0IG92ZXJmbG93Iik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTzogUFVUUyhmZCwgImludCBkaXZpZGUgYnkgemVybyIpOyBicmVhazsKKyAgICBjYXNlIEVYQ0VQVElPTl9JTlRfT1ZFUkZMT1c6IFBVVFMoZmQsICJpbnRlZ2VyIG92ZXJmbG93Iik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0lOX1BBR0VfRVJST1I6IFBVVFMoZmQsICJwYWdlIGVycm9yIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XOiBQVVRTKGZkLCAic3RhY2sgb3ZlcmZsb3ciKTsgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUFVUUyhmZCwgImNvZGUgIik7CisgICAgICAgIF9QeV9EdW1wRGVjaW1hbChmZCwgY29kZSk7CisgICAgfQorICAgIFBVVFMoZmQsICJcblxuIik7CisKKyAgICBpZiAoY29kZSA9PSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTikgeworICAgICAgICAvKiBkaXNhYmxlIHNpZ25hbCBoYW5kbGVyIGZvciBTSUdTRUdWICovCisgICAgICAgIHNpemVfdCBpOworICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CisgICAgICAgICAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOworICAgICAgICAgICAgaWYgKGhhbmRsZXItPnNpZ251bSA9PSBTSUdTRUdWKSB7CisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGVfZmF0YWxfaGFuZGxlcihoYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFjayhmZCwgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdGFsX2Vycm9yLmludGVycCk7CisKKyAgICAvKiBjYWxsIHRoZSBuZXh0IGV4Y2VwdGlvbiBoYW5kbGVyICovCisgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7Cit9CisjZW5kaWYKKwogLyogSW5zdGFsbCB0aGUgaGFuZGxlciBmb3IgZmF0YWwgc2lnbmFscywgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkuICovCiAKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl9lbmFibGUodm9pZCkKK3sKKyAgICBzaXplX3QgaTsKKworICAgIGlmIChmYXRhbF9lcnJvci5lbmFibGVkKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMTsKKworICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworI2VuZGlmCisgICAgICAgIGludCBlcnI7CisKKyAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisgICAgICAgIGFzc2VydCghaGFuZGxlci0+ZW5hYmxlZCk7CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3I7CisgICAgICAgIHNpZ2VtcHR5c2V0KCZhY3Rpb24uc2FfbWFzayk7CisgICAgICAgIC8qIERvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbgorICAgICAgICAgICBpdHMgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX05PREVGRVI7CisjaWZkZWYgSEFWRV9TSUdBTFRTVEFDSworICAgICAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjaworICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkgc2lnYWx0c3RhY2soKSAqLworICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBlcnIgPSBzaWdhY3Rpb24oaGFuZGxlci0+c2lnbnVtLCAmYWN0aW9uLCAmaGFuZGxlci0+cHJldmlvdXMpOworI2Vsc2UKKyAgICAgICAgaGFuZGxlci0+cHJldmlvdXMgPSBzaWduYWwoaGFuZGxlci0+c2lnbnVtLAorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcik7CisgICAgICAgIGVyciA9IChoYW5kbGVyLT5wcmV2aW91cyA9PSBTSUdfRVJSKTsKKyNlbmRpZgorICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfUnVudGltZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGhhbmRsZXItPmVuYWJsZWQgPSAxOworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBBZGRWZWN0b3JlZEV4Y2VwdGlvbkhhbmRsZXIoMSwgZmF1bHRoYW5kbGVyX2V4Y19oYW5kbGVyKTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgUHlPYmplY3QqCi1mYXVsdGhhbmRsZXJfZW5hYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2ZhdWx0aGFuZGxlcl9weV9lbmFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJhbGxfdGhyZWFkcyIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKICAgICBpbnQgYWxsX3RocmVhZHMgPSAxOwotICAgIHVuc2lnbmVkIGludCBpOwotICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcjsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwotI2VuZGlmCi0gICAgaW50IGVycjsKICAgICBpbnQgZmQ7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogCkBAIC0zODYsMzcgKzQ5MywxMCBAQAogICAgIGZhdGFsX2Vycm9yLmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CiAgICAgZmF0YWxfZXJyb3IuaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CiAKLSAgICBpZiAoIWZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKLSAgICAgICAgZmF0YWxfZXJyb3IuZW5hYmxlZCA9IDE7Ci0KLSAgICAgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgewotICAgICAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07Ci0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAgICAgICAgIGFjdGlvbi5zYV9oYW5kbGVyID0gZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yOwotICAgICAgICAgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKLSAgICAgICAgICAgIC8qIERvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbgotICAgICAgICAgICAgICAgaXRzIG93biBzaWduYWwgaGFuZGxlciAqLwotICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfTk9ERUZFUjsKLSNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCi0gICAgICAgICAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIC8qIENhbGwgdGhlIHNpZ25hbCBoYW5kbGVyIG9uIGFuIGFsdGVybmF0ZSBzaWduYWwgc3RhY2sKLSAgICAgICAgICAgICAgICAgICBwcm92aWRlZCBieSBzaWdhbHRzdGFjaygpICovCi0gICAgICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIGVyciA9IHNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZhY3Rpb24sICZoYW5kbGVyLT5wcmV2aW91cyk7Ci0jZWxzZQotICAgICAgICAgICAgaGFuZGxlci0+cHJldmlvdXMgPSBzaWduYWwoaGFuZGxlci0+c2lnbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKTsKLSAgICAgICAgICAgIGVyciA9IChoYW5kbGVyLT5wcmV2aW91cyA9PSBTSUdfRVJSKTsKLSNlbmRpZgotICAgICAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDE7Ci0gICAgICAgIH0KKyAgICBpZiAoZmF1bHRoYW5kbGVyX2VuYWJsZSgpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtNDMwLDE0ICs1MTAsNyBAQAogICAgICAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMDsKICAgICAgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgewogICAgICAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBpZiAoIWhhbmRsZXItPmVuYWJsZWQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAgICAgICAgICh2b2lkKXNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZoYW5kbGVyLT5wcmV2aW91cywgTlVMTCk7Ci0jZWxzZQotICAgICAgICAgICAgKHZvaWQpc2lnbmFsKGhhbmRsZXItPnNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOwotI2VuZGlmCi0gICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMDsKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlcl9kaXNhYmxlX2ZhdGFsX2hhbmRsZXIoaGFuZGxlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ2OSw3ICs1NDIsNiBAQAogewogICAgIFB5TG9ja1N0YXR1cyBzdDsKICAgICBjb25zdCBjaGFyKiBlcnJtc2c7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudDsKICAgICBpbnQgb2s7CiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQogICAgIHNpZ3NldF90IHNldDsKQEAgLTQ4OSwxMiArNTYxLDkgQEAKICAgICAgICAgLyogVGltZW91dCA9PiBkdW1wIHRyYWNlYmFjayAqLwogICAgICAgICBhc3NlcnQoc3QgPT0gUFlfTE9DS19GQUlMVVJFKTsKIAotICAgICAgICAvKiBnZXQgdGhlIHRocmVhZCBob2xkaW5nIHRoZSBHSUwsIE5VTEwgaWYgbm8gdGhyZWFkIGhvbGQgdGhlIEdJTCAqLwotICAgICAgICBjdXJyZW50ID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7Ci0KICAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UodGhyZWFkLmZkLCB0aHJlYWQuaGVhZGVyLCAoaW50KXRocmVhZC5oZWFkZXJfbGVuKTsKIAotICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBjdXJyZW50KTsKKyAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKHRocmVhZC5mZCwgdGhyZWFkLmludGVycCwgTlVMTCk7CiAgICAgICAgIG9rID0gKGVycm1zZyA9PSBOVUxMKTsKIAogICAgICAgICBpZiAodGhyZWFkLmV4aXQpCkBAIC04OTQsNyArOTYzLDcgQEAKIGZhdWx0aGFuZGxlcl9zaWdzZWd2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcmVsZWFzZV9naWwgPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X3JlYWRfbnVsbCIsICZyZWxlYXNlX2dpbCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfc2lnc2VndiIsICZyZWxlYXNlX2dpbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHJlbGVhc2VfZ2lsKSB7CkBAIC05MDcsNiArOTc2LDQ5IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl90aHJlYWQodm9pZCAqcGxvY2spCit7CisgICAgUHlUaHJlYWRfdHlwZV9sb2NrICpsb2NrID0gKFB5VGhyZWFkX3R5cGVfbG9jayAqKXBsb2NrOworCisgICAgUHlfRmF0YWxFcnJvcigiaW4gbmV3IHRocmVhZCIpOworCisgICAgLyogbm90aWZ5IHRoZSBjYWxsZXIgdGhhdCB3ZSBhcmUgZG9uZSAqLworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhsb2NrKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl9jX3RocmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgbG9uZyB0aHJlYWQ7CisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CisKKyAgICBsb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChsb2NrID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKGxvY2ssIFdBSVRfTE9DSyk7CisKKyAgICB0aHJlYWQgPSBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl90aHJlYWQsIGxvY2spOworICAgIGlmICh0aHJlYWQgPT0gLTEpIHsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKGxvY2spOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAidW5hYmxlIHRvIHN0YXJ0IHRoZSB0aHJlYWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogd2FpdCB1bnRpbCB0aGUgdGhyZWFkIGNvbXBsZXRlczogaXQgd2lsbCBuZXZlciBvY2N1ciwgc2luY2UgUHlfRmF0YWxFcnJvcigpCisgICAgICAgZXhpdHMgdGhlIHByb2Nlc3MgaW1tZWRpYWx0eS4gKi8KKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sobG9jaywgV0FJVF9MT0NLKTsKKyAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sobG9jayk7CisgICAgUHlUaHJlYWRfZnJlZV9sb2NrKGxvY2spOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogc3RhdGljIFB5T2JqZWN0ICoKIGZhdWx0aGFuZGxlcl9zaWdmcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtOTUxLDYgKzEwNjMsOCBAQAogfQogCiAjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQorI2RlZmluZSBGQVVMVEhBTkRMRVJfU1RBQ0tfT1ZFUkZMT1cKKwogI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKICAgIC8qIElzc3VlICMyMzY1NDogVHVybiBvZmYgSUNDJ3MgdGFpbCBjYWxsIG9wdGltaXphdGlvbiBmb3IgdGhlCiAgICAgKiBzdGFja19vdmVyZmxvdyBnZW5lcmF0b3IuIElDQyB0dXJucyB0aGUgcmVjdXJzaXZlIHRhaWwgY2FsbCBpbnRvCkBAIC05NTgsMTIgKzEwNzIsMTIgQEAKICMgIHByYWdtYSBpbnRlbCBvcHRpbWl6YXRpb25fbGV2ZWwgMAogI2VuZGlmCiBzdGF0aWMKLVB5X3VpbnRwdHJfdAotc3RhY2tfb3ZlcmZsb3coUHlfdWludHB0cl90IG1pbl9zcCwgUHlfdWludHB0cl90IG1heF9zcCwgc2l6ZV90ICpkZXB0aCkKK3VpbnRwdHJfdAorc3RhY2tfb3ZlcmZsb3codWludHB0cl90IG1pbl9zcCwgdWludHB0cl90IG1heF9zcCwgc2l6ZV90ICpkZXB0aCkKIHsKICAgICAvKiBhbGxvY2F0ZSA0MDk2IGJ5dGVzIG9uIHRoZSBzdGFjayBhdCBlYWNoIGNhbGwgKi8KICAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0MDk2XTsKLSAgICBQeV91aW50cHRyX3Qgc3AgPSAoUHlfdWludHB0cl90KSZidWZmZXI7CisgICAgdWludHB0cl90IHNwID0gKHVpbnRwdHJfdCkmYnVmZmVyOwogICAgICpkZXB0aCArPSAxOwogICAgIGlmIChzcCA8IG1pbl9zcCB8fCBtYXhfc3AgPCBzcCkKICAgICAgICAgcmV0dXJuIHNwOwpAQCAtOTc2LDggKzEwOTAsOCBAQAogZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQogewogICAgIHNpemVfdCBkZXB0aCwgc2l6ZTsKLSAgICBQeV91aW50cHRyX3Qgc3AgPSAoUHlfdWludHB0cl90KSZkZXB0aDsKLSAgICBQeV91aW50cHRyX3Qgc3RvcDsKKyAgICB1aW50cHRyX3Qgc3AgPSAodWludHB0cl90KSZkZXB0aDsKKyAgICB1aW50cHRyX3Qgc3RvcDsKIAogICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKICAgICBkZXB0aCA9IDA7CkBAIC05OTQsNyArMTEwOCw3IEBACiAgICAgICAgIHNpemUsIGRlcHRoKTsKICAgICByZXR1cm4gTlVMTDsKIH0KLSNlbmRpZgorI2VuZGlmICAgLyogZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKSAqLwogCiAKIHN0YXRpYyBpbnQKQEAgLTEwMTcsMTIgKzExMzEsMjUgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfcmFpc2VfZXhjZXB0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgY29kZSwgZmxhZ3MgPSAwOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSXxJOl9yYWlzZV9leGNlcHRpb24iLCAmY29kZSwgJmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOworICAgIFJhaXNlRXhjZXB0aW9uKGNvZGUsIGZsYWdzLCAwLCBOVUxMKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJmYXVsdGhhbmRsZXIgbW9kdWxlLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKICAgICB7ImVuYWJsZSIsCi0gICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZW5hYmxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9weV9lbmFibGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoImVuYWJsZShmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCiAgICAgICAgICAgICAgICAiZW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAogICAgIHsiZGlzYWJsZSIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZGlzYWJsZV9weSwgTUVUSF9OT0FSR1MsCkBAIC0xMDY1LDE2ICsxMTkyLDI1IEBACiAgICAgICAgICAgICAgICAiYSBTSUdTRUdWIG9yIFNJR0JVUyBzaWduYWwgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSIpfSwKICAgICB7Il9zaWdzZWd2IiwgZmF1bHRoYW5kbGVyX3NpZ3NlZ3YsIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc2lnc2VndihyZWxlYXNlX2dpbD1GYWxzZSk6IHJhaXNlIGEgU0lHU0VHViBzaWduYWwiKX0sCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICB7Il9mYXRhbF9lcnJvcl9jX3RocmVhZCIsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl9jX3RocmVhZCwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiZmF0YWxfZXJyb3JfY190aHJlYWQoKTogIgorICAgICAgICAgICAgICAgImNhbGwgUHlfRmF0YWxFcnJvcigpIGluIGEgbmV3IEMgdGhyZWFkLiIpfSwKKyNlbmRpZgogICAgIHsiX3NpZ2FicnQiLCBmYXVsdGhhbmRsZXJfc2lnYWJydCwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX3NpZ2FicnQoKTogcmFpc2UgYSBTSUdBQlJUIHNpZ25hbCIpfSwKICAgICB7Il9zaWdmcGUiLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3NpZ2ZwZSwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX3NpZ2ZwZSgpOiByYWlzZSBhIFNJR0ZQRSBzaWduYWwiKX0sCiAgICAgeyJfZmF0YWxfZXJyb3IiLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHksIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJfZmF0YWxfZXJyb3IobWVzc2FnZSk6IGNhbGwgUHlfRmF0YWxFcnJvcihtZXNzYWdlKSIpfSwKLSNpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pCisjaWZkZWYgRkFVTFRIQU5ETEVSX1NUQUNLX09WRVJGTE9XCiAgICAgeyJfc3RhY2tfb3ZlcmZsb3ciLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93LCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc3RhY2tfb3ZlcmZsb3coKTogcmVjdXJzaXZlIGNhbGwgdG8gcmFpc2UgYSBzdGFjayBvdmVyZmxvdyIpfSwKICNlbmRpZgorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB7Il9yYWlzZV9leGNlcHRpb24iLCBmYXVsdGhhbmRsZXJfcmFpc2VfZXhjZXB0aW9uLCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigicmFpc2VfZXhjZXB0aW9uKGNvZGUsIGZsYWdzPTApOiBDYWxsIFJhaXNlRXhjZXB0aW9uKGNvZGUsIGZsYWdzKS4iKX0sCisjZW5kaWYKICAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xMDkzLDcgKzEyMjksMzMgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfZmF1bHRoYW5kbGVyKHZvaWQpCiB7Ci0gICAgcmV0dXJuIFB5TW9kdWxlX0NyZWF0ZSgmbW9kdWxlX2RlZik7CisgICAgUHlPYmplY3QgKm0gPSBQeU1vZHVsZV9DcmVhdGUoJm1vZHVsZV9kZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogQWRkIGNvbnN0YW50cyBmb3IgdW5pdCB0ZXN0cyAqLworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBSYWlzZUV4Y2VwdGlvbigpIGNvZGVzIChwcmVmaXhlZCBieSBhbiB1bmRlcnNjb3JlKSAqLworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9TVEFDS19PVkVSRkxPVyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9TVEFDS19PVkVSRkxPVykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogUmFpc2VFeGNlcHRpb24oKSBmbGFncyAocHJlZml4ZWQgYnkgYW4gdW5kZXJzY29yZSkgKi8KKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fTk9OQ09OVElOVUFCTEUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fTk9OQ09OVElOVUFCTEUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fTk9OQ09OVElOVUFCTEVfRVhDRVBUSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFX0VYQ0VQVElPTikpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKKyAgICByZXR1cm4gbTsKIH0KIAogLyogQ2FsbCBmYXVsdGhhbmRsZXIuZW5hYmxlKCkgaWYgdGhlIFBZVEhPTkZBVUxUSEFORExFUiBlbnZpcm9ubWVudCB2YXJpYWJsZQpAQCAtMTEyOCw3ICsxMjkwLDcgQEAKICAgICBpZiAobW9kdWxlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfZW5hYmxlLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChtb2R1bGUsICZQeUlkX2VuYWJsZSwgTlVMTCk7CiAgICAgUHlfREVDUkVGKG1vZHVsZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2djbW9kdWxlLmMgYi9Nb2R1bGVzL2djbW9kdWxlLmMKaW5kZXggY2I3MjIyZC4uNzU0MzQ4ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nY21vZHVsZS5jCisrKyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIgICAgICAgIC8qIGZvciBQeUZyYW1lX0NsZWFyRnJlZUxpc3QgKi8KKyNpbmNsdWRlICJweWR0cmFjZS5oIgogI2luY2x1ZGUgInB5dGltZS5oIiAgICAgICAgICAgICAvKiBmb3IgX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICovCiAKIC8qIEdldCBhbiBvYmplY3QncyBHQyBoZWFkICovCkBAIC03MzgsNyArNzM5LDcgQEAKIH0KIAogc3RhdGljIHZvaWQKLWRlYnVnX2N5Y2xlKGNoYXIgKm1zZywgUHlPYmplY3QgKm9wKQorZGVidWdfY3ljbGUoY29uc3QgY2hhciAqbXNnLCBQeU9iamVjdCAqb3ApCiB7CiAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJnYzogJXMgPCVzICVwPlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgbXNnLCBQeV9UWVBFKG9wKS0+dHBfbmFtZSwgb3ApOwpAQCAtODkyLDYgKzg5Myw3IEBACiAgICAgKHZvaWQpUHlMaXN0X0NsZWFyRnJlZUxpc3QoKTsKICAgICAodm9pZClQeURpY3RfQ2xlYXJGcmVlTGlzdCgpOwogICAgICh2b2lkKVB5U2V0X0NsZWFyRnJlZUxpc3QoKTsKKyAgICAodm9pZClQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKCk7CiB9CiAKIC8qIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24uICBSZWFkIHRoaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlCkBAIC05MjQsNiArOTI2LDkgQEAKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIlxuIik7CiAgICAgfQogCisgICAgaWYgKFB5RFRyYWNlX0dDX1NUQVJUX0VOQUJMRUQoKSkKKyAgICAgICAgUHlEVHJhY2VfR0NfU1RBUlQoZ2VuZXJhdGlvbik7CisKICAgICAvKiB1cGRhdGUgY29sbGVjdGlvbiBhbmQgYWxsb2NhdGlvbiBjb3VudGVycyAqLwogICAgIGlmIChnZW5lcmF0aW9uKzEgPCBOVU1fR0VORVJBVElPTlMpCiAgICAgICAgIGdlbmVyYXRpb25zW2dlbmVyYXRpb24rMV0uY291bnQgKz0gMTsKQEAgLTEwNjgsNiArMTA3MywxMCBAQAogICAgIHN0YXRzLT5jb2xsZWN0aW9ucysrOwogICAgIHN0YXRzLT5jb2xsZWN0ZWQgKz0gbTsKICAgICBzdGF0cy0+dW5jb2xsZWN0YWJsZSArPSBuOworCisgICAgaWYgKFB5RFRyYWNlX0dDX0RPTkVfRU5BQkxFRCgpKQorICAgICAgICBQeURUcmFjZV9HQ19ET05FKG4rbSk7CisKICAgICByZXR1cm4gbittOwogfQogCkBAIC0xNTg4LDYgKzE1OTcsMTUgQEAKIH0KIAogUHlfc3NpemVfdAorX1B5R0NfQ29sbGVjdElmRW5hYmxlZCh2b2lkKQoreworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gUHlHQ19Db2xsZWN0KCk7Cit9CisKK1B5X3NzaXplX3QKIF9QeUdDX0NvbGxlY3ROb0ZhaWwodm9pZCkKIHsKICAgICBQeV9zc2l6ZV90IG47CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldGFkZHJpbmZvLmMgYi9Nb2R1bGVzL2dldGFkZHJpbmZvLmMKaW5kZXggZDgxNjdlYS4uYjZmYjUzYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRhZGRyaW5mby5jCisrKyBiL01vZHVsZXMvZ2V0YWRkcmluZm8uYwpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRkcmluZm8gKiwgaW50KTsKIHN0YXRpYyBpbnQgc3RyX2lzbnVtYmVyKGNvbnN0IGNoYXIgKik7CiAKLXN0YXRpYyBjaGFyICphaV9lcnJsaXN0W10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFpX2Vycmxpc3RbXSA9IHsKICAgICAic3VjY2Vzcy4iLAogICAgICJhZGRyZXNzIGZhbWlseSBmb3IgaG9zdG5hbWUgbm90IHN1cHBvcnRlZC4iLCAgICAgICAvKiBFQUlfQUREUkZBTUlMWSAqLwogICAgICJ0ZW1wb3JhcnkgZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24uIiwgICAgICAgICAgICAvKiBFQUlfQUdBSU4gICAgICAqLwpAQCAtMTk4LDcgKzE5OCw3IEBACiAKICNkZWZpbmUgRVJSKGVycikgeyBlcnJvciA9IChlcnIpOyBnb3RvIGJhZDsgfQogCi1jaGFyICoKK2NvbnN0IGNoYXIgKgogZ2FpX3N0cmVycm9yKGludCBlY29kZSkKIHsKICAgICBpZiAoZWNvZGUgPCAwIHx8IGVjb2RlID4gRUFJX01BWCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKaW5kZXggMThkZWI2MC4uNjViNDdhMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRwYXRoLmMKKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKQEAgLTQ2MCw4ICs0NjAsOCBAQAogewogICAgIGV4dGVybiB3Y2hhcl90ICpQeV9HZXRQcm9ncmFtTmFtZSh2b2lkKTsKIAotICAgIHN0YXRpYyB3Y2hhcl90IGRlbGltaXRlclsyXSA9IHtERUxJTSwgJ1wwJ307Ci0gICAgc3RhdGljIHdjaGFyX3Qgc2VwYXJhdG9yWzJdID0ge1NFUCwgJ1wwJ307CisgICAgc3RhdGljIGNvbnN0IHdjaGFyX3QgZGVsaW1pdGVyWzJdID0ge0RFTElNLCAnXDAnfTsKKyAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCBzZXBhcmF0b3JbMl0gPSB7U0VQLCAnXDAnfTsKICAgICBjaGFyICpfcnRweXBhdGggPSBQeV9HRVRFTlYoIlBZVEhPTlBBVEgiKTsgLyogWFhYIHVzZSB3aWRlIHZlcnNpb24gb24gV2luZG93cyAqLwogICAgIHdjaGFyX3QgKnJ0cHlwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90ICpob21lID0gUHlfR2V0UHl0aG9uSG9tZSgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9ncnBtb2R1bGUuYyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKaW5kZXggM2ExMzRhMC4uOTQzN2FlNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9ncnBtb2R1bGUuYworKysgYi9Nb2R1bGVzL2dycG1vZHVsZS5jCkBAIC0xMDAsMTQgKzEwMCwyNSBAQAogICAgIGdpZF90IGdpZDsKICAgICBzdHJ1Y3QgZ3JvdXAgKnA7CiAKLSAgICBweV9pbnRfaWQgPSBQeU51bWJlcl9Mb25nKGlkKTsKLSAgICBpZiAoIXB5X2ludF9pZCkKKyAgICBpZiAoIV9QeV9HaWRfQ29udmVydGVyKGlkLCAmZ2lkKSkgeworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlfR2lkX0NvbnZlcnRlcihweV9pbnRfaWQsICZnaWQpKSB7CisgICAgICAgIH0KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXAgaWQgbXVzdCBiZSBpbnQsIG5vdCAlLjIwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLT5vYl90eXBlLT50cF9uYW1lKSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHB5X2ludF9pZCA9IFB5TnVtYmVyX0xvbmcoaWQpOworICAgICAgICBpZiAoIXB5X2ludF9pZCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIV9QeV9HaWRfQ29udmVydGVyKHB5X2ludF9pZCwgJmdpZCkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihweV9pbnRfaWQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHB5X2ludF9pZCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9ERUNSRUYocHlfaW50X2lkKTsKIAogICAgIGlmICgocCA9IGdldGdyZ2lkKGdpZCkpID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmdpZF9vYmogPSBfUHlMb25nX0Zyb21HaWQoZ2lkKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvaGFzaGxpYi5oIGIvTW9kdWxlcy9oYXNobGliLmgKaW5kZXggMzU4MDQ1My4uNTMwYjZiMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9oYXNobGliLmgKKysrIGIvTW9kdWxlcy9oYXNobGliLmgKQEAgLTIsMzAgKzIsMzMgQEAKIAogLyoKICAqIEdpdmVuIGEgUHlPYmplY3QqIG9iaiwgZmlsbCBpbiB0aGUgUHlfYnVmZmVyKiB2aWV3cCB3aXRoIHRoZSByZXN1bHQKLSAqIG9mIFB5T2JqZWN0X0dldEJ1ZmZlci4gIFNldHMgYW4gZXhjZXB0aW9uIGFuZCBpc3N1ZXMgYSByZXR1cm4gTlVMTAotICogb24gYW55IGVycm9ycy4KKyAqIG9mIFB5T2JqZWN0X0dldEJ1ZmZlci4gIFNldHMgYW4gZXhjZXB0aW9uIGFuZCBpc3N1ZXMgdGhlIGVycmFjdGlvbgorICogb24gYW55IGVycm9ycywgZS5nLiAncmV0dXJuIE5VTEwnIG9yICdnb3RvIGVycm9yJy4KICAqLwotI2RlZmluZSBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgdmlld3ApIGRvIHsgXAorI2RlZmluZSBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1Iob2JqLCB2aWV3cCwgZXJyYWN0aW9uKSBkbyB7IFwKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjaygob2JqKSkpIHsgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmljb2RlLW9iamVjdHMgbXVzdCBiZSBlbmNvZGVkIGJlZm9yZSBoYXNoaW5nIik7XAotICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICAgICAgICAgIGVycmFjdGlvbjsgXAogICAgICAgICB9IFwKICAgICAgICAgaWYgKCFQeU9iamVjdF9DaGVja0J1ZmZlcigob2JqKSkpIHsgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIEFQSSByZXF1aXJlZCIpOyBcCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgICAgICAgICAgZXJyYWN0aW9uOyBcCiAgICAgICAgIH0gXAogICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKChvYmopLCAodmlld3ApLCBQeUJVRl9TSU1QTEUpID09IC0xKSB7IFwKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgICAgICAgICBlcnJhY3Rpb247IFwKICAgICAgICAgfSBcCiAgICAgICAgIGlmICgodmlld3ApLT5uZGltID4gMSkgeyBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVmZmVyIG11c3QgYmUgc2luZ2xlIGRpbWVuc2lvbiIpOyBcCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCh2aWV3cCkpOyBcCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgICAgICAgICAgZXJyYWN0aW9uOyBcCiAgICAgICAgIH0gXAotICAgIH0gd2hpbGUoMCk7CisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCB2aWV3cCkgXAorICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihvYmosIHZpZXdwLCByZXR1cm4gTlVMTCkKIAogLyoKICAqIEhlbHBlciBjb2RlIHRvIHN5bmNocm9uaXplIGFjY2VzcyB0byB0aGUgaGFzaCBvYmplY3Qgd2hlbiB0aGUgR0lMIGlzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2hhc2h0YWJsZS5jIGIvTW9kdWxlcy9oYXNodGFibGUuYwppbmRleCBmZGRkYzE5Li4wNTQ3YTZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2hhc2h0YWJsZS5jCisrKyBiL01vZHVsZXMvaGFzaHRhYmxlLmMKQEAgLTEsNSArMSw1IEBACi0vKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhhc2ggdGFibGUgKF9QeV9oYXNodGFibGVfdCkgaXMgYmFzZWQgb24gdGhlIGNmdWhhc2gKLSAgIHByb2plY3Q6CisvKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhhc2ggdGFibGUgKF9QeV9oYXNodGFibGVfdCkgaXMgYmFzZWQgb24gdGhlCisgICBjZnVoYXNoIHByb2plY3Q6CiAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmNmdS8KIAogICAgQ29weXJpZ2h0IG9mIGNmdWhhc2g6CkBAIC01OSw3ICs1OSwyMSBAQAogI2RlZmluZSBFTlRSWV9ORVhUKEVOVFJZKSBcCiAgICAgICAgICgoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICopX1B5X1NMSVNUX0lURU1fTkVYVChFTlRSWSkpCiAjZGVmaW5lIEhBU0hUQUJMRV9JVEVNX1NJWkUoSFQpIFwKLSAgICAgICAgKHNpemVvZihfUHlfaGFzaHRhYmxlX2VudHJ5X3QpICsgKEhUKS0+ZGF0YV9zaXplKQorICAgICAgICAoc2l6ZW9mKF9QeV9oYXNodGFibGVfZW50cnlfdCkgKyAoSFQpLT5rZXlfc2l6ZSArIChIVCktPmRhdGFfc2l6ZSkKKworI2RlZmluZSBFTlRSWV9SRUFEX1BEQVRBKFRBQkxFLCBFTlRSWSwgREFUQV9TSVpFLCBQREFUQSkgXAorICAgIGRvIHsgXAorICAgICAgICBhc3NlcnQoKERBVEFfU0laRSkgPT0gKFRBQkxFKS0+ZGF0YV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoKFBEQVRBKSwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShUQUJMRSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgIChEQVRBX1NJWkUpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgRU5UUllfV1JJVEVfUERBVEEoVEFCTEUsIEVOVFJZLCBEQVRBX1NJWkUsIFBEQVRBKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydCgoREFUQV9TSVpFKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCisgICAgICAgIG1lbWNweSgodm9pZCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoKFRBQkxFKSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgIChQREFUQSksIChEQVRBX1NJWkUpKTsgXAorICAgIH0gd2hpbGUgKDApCiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KIHN0YXRpYyB2b2lkIGhhc2h0YWJsZV9yZWhhc2goX1B5X2hhc2h0YWJsZV90ICpodCk7CkBAIC03MCw2ICs4NCw3IEBACiAgICAgbGlzdC0+aGVhZCA9IE5VTEw7CiB9CiAKKwogc3RhdGljIHZvaWQKIF9QeV9zbGlzdF9wcmVwZW5kKF9QeV9zbGlzdF90ICpsaXN0LCBfUHlfc2xpc3RfaXRlbV90ICppdGVtKQogewpAQCAtNzcsNiArOTIsNyBAQAogICAgIGxpc3QtPmhlYWQgPSBpdGVtOwogfQogCisKIHN0YXRpYyB2b2lkCiBfUHlfc2xpc3RfcmVtb3ZlKF9QeV9zbGlzdF90ICpsaXN0LCBfUHlfc2xpc3RfaXRlbV90ICpwcmV2aW91cywKICAgICAgICAgICAgICAgICAgX1B5X3NsaXN0X2l0ZW1fdCAqaXRlbSkKQEAgLTg3LDI0ICsxMDMsMjYgQEAKICAgICAgICAgbGlzdC0+aGVhZCA9IGl0ZW0tPm5leHQ7CiB9CiAKLVB5X3VoYXNoX3QKLV9QeV9oYXNodGFibGVfaGFzaF9pbnQoY29uc3Qgdm9pZCAqa2V5KQotewotICAgIHJldHVybiAoUHlfdWhhc2hfdClrZXk7Ci19CiAKIFB5X3VoYXNoX3QKLV9QeV9oYXNodGFibGVfaGFzaF9wdHIoY29uc3Qgdm9pZCAqa2V5KQorX1B5X2hhc2h0YWJsZV9oYXNoX3B0cihzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSkKIHsKLSAgICByZXR1cm4gKFB5X3VoYXNoX3QpX1B5X0hhc2hQb2ludGVyKCh2b2lkICopa2V5KTsKKyAgICB2b2lkICprZXk7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBrZXkpOworICAgIHJldHVybiAoUHlfdWhhc2hfdClfUHlfSGFzaFBvaW50ZXIoa2V5KTsKIH0KIAorCiBpbnQKLV9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQorX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KQogewotICAgIHJldHVybiBlbnRyeS0+a2V5ID09IGtleTsKKyAgICBjb25zdCB2b2lkICpwa2V5MiA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShlbnRyeSk7CisgICAgcmV0dXJuIChtZW1jbXAocGtleSwgcGtleTIsIGh0LT5rZXlfc2l6ZSkgPT0gMCk7CiB9CiAKKwogLyogbWFrZXMgc3VyZSB0aGUgcmVhbCBzaXplIG9mIHRoZSBidWNrZXRzIGFycmF5IGlzIGEgcG93ZXIgb2YgMiAqLwogc3RhdGljIHNpemVfdAogcm91bmRfc2l6ZShzaXplX3QgcykKQEAgLTExOCwxMyArMTM2LDEyIEBACiAgICAgcmV0dXJuIGk7CiB9CiAKKwogX1B5X2hhc2h0YWJsZV90ICoKLV9QeV9oYXNodGFibGVfbmV3X2Z1bGwoc2l6ZV90IGRhdGFfc2l6ZSwgc2l6ZV90IGluaXRfc2l6ZSwKK19QeV9oYXNodGFibGVfbmV3X2Z1bGwoc2l6ZV90IGtleV9zaXplLCBzaXplX3QgZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5pdF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb3B5X2RhdGFfZnVuYyBjb3B5X2RhdGFfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9mcmVlX2RhdGFfZnVuYyBmcmVlX2RhdGFfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9nZXRfZGF0YV9zaXplX2Z1bmMgZ2V0X2RhdGFfc2l6ZV9mdW5jLAogICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90ICphbGxvY2F0b3IpCiB7CiAgICAgX1B5X2hhc2h0YWJsZV90ICpodDsKQEAgLTE0NCw2ICsxNjEsNyBAQAogCiAgICAgaHQtPm51bV9idWNrZXRzID0gcm91bmRfc2l6ZShpbml0X3NpemUpOwogICAgIGh0LT5lbnRyaWVzID0gMDsKKyAgICBodC0+a2V5X3NpemUgPSBrZXlfc2l6ZTsKICAgICBodC0+ZGF0YV9zaXplID0gZGF0YV9zaXplOwogCiAgICAgYnVja2V0c19zaXplID0gaHQtPm51bV9idWNrZXRzICogc2l6ZW9mKGh0LT5idWNrZXRzWzBdKTsKQEAgLTE1NiwyOCArMTc0LDI3IEBACiAKICAgICBodC0+aGFzaF9mdW5jID0gaGFzaF9mdW5jOwogICAgIGh0LT5jb21wYXJlX2Z1bmMgPSBjb21wYXJlX2Z1bmM7Ci0gICAgaHQtPmNvcHlfZGF0YV9mdW5jID0gY29weV9kYXRhX2Z1bmM7Ci0gICAgaHQtPmZyZWVfZGF0YV9mdW5jID0gZnJlZV9kYXRhX2Z1bmM7Ci0gICAgaHQtPmdldF9kYXRhX3NpemVfZnVuYyA9IGdldF9kYXRhX3NpemVfZnVuYzsKICAgICBodC0+YWxsb2MgPSBhbGxvYzsKICAgICByZXR1cm4gaHQ7CiB9CiAKKwogX1B5X2hhc2h0YWJsZV90ICoKLV9QeV9oYXNodGFibGVfbmV3KHNpemVfdCBkYXRhX3NpemUsCitfUHlfaGFzaHRhYmxlX25ldyhzaXplX3Qga2V5X3NpemUsIHNpemVfdCBkYXRhX3NpemUsCiAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmMpCiB7Ci0gICAgcmV0dXJuIF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoZGF0YV9zaXplLCBIQVNIVEFCTEVfTUlOX1NJWkUsCisgICAgcmV0dXJuIF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoa2V5X3NpemUsIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNIVEFCTEVfTUlOX1NJWkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9mdW5jLCBjb21wYXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiB9CiAKKwogc2l6ZV90CiBfUHlfaGFzaHRhYmxlX3NpemUoX1B5X2hhc2h0YWJsZV90ICpodCkKIHsKICAgICBzaXplX3Qgc2l6ZTsKLSAgICBzaXplX3QgaHY7CiAKICAgICBzaXplID0gc2l6ZW9mKF9QeV9oYXNodGFibGVfdCk7CiAKQEAgLTE4NywyMiArMjA0LDEwIEBACiAgICAgLyogZW50cmllcyAqLwogICAgIHNpemUgKz0gaHQtPmVudHJpZXMgKiBIQVNIVEFCTEVfSVRFTV9TSVpFKGh0KTsKIAotICAgIC8qIGRhdGEgbGlua2VkIGZyb20gZW50cmllcyAqLwotICAgIGlmIChodC0+Z2V0X2RhdGFfc2l6ZV9mdW5jKSB7Ci0gICAgICAgIGZvciAoaHYgPSAwOyBodiA8IGh0LT5udW1fYnVja2V0czsgaHYrKykgewotICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKLQotICAgICAgICAgICAgZm9yIChlbnRyeSA9IFRBQkxFX0hFQUQoaHQsIGh2KTsgZW50cnk7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgICAgICAgICB2b2lkICpkYXRhOwotCi0gICAgICAgICAgICAgICAgZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpOwotICAgICAgICAgICAgICAgIHNpemUgKz0gaHQtPmdldF9kYXRhX3NpemVfZnVuYyhkYXRhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KICAgICByZXR1cm4gc2l6ZTsKIH0KIAorCiAjaWZkZWYgUHlfREVCVUcKIHZvaWQKIF9QeV9oYXNodGFibGVfcHJpbnRfc3RhdHMoX1B5X2hhc2h0YWJsZV90ICpodCkKQEAgLTI0MywzOCArMjQ4LDQ1IEBACiB9CiAjZW5kaWYKIAotLyogR2V0IGFuIGVudHJ5LiBSZXR1cm4gTlVMTCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LiAqLworCiBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKgotX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5KQorX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBrZXlfc2l6ZSwgY29uc3Qgdm9pZCAqcGtleSkKIHsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogICAgIHNpemVfdCBpbmRleDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogCi0gICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGtleSk7CisgICAgYXNzZXJ0KGtleV9zaXplID09IGh0LT5rZXlfc2l6ZSk7CisKKyAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoaHQsIHBrZXkpOwogICAgIGluZGV4ID0ga2V5X2hhc2ggJiAoaHQtPm51bV9idWNrZXRzIC0gMSk7CiAKICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaW5kZXgpOyBlbnRyeSAhPSBOVUxMOyBlbnRyeSA9IEVOVFJZX05FWFQoZW50cnkpKSB7Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5X2hhc2ggPT0ga2V5X2hhc2ggJiYgaHQtPmNvbXBhcmVfZnVuYyhrZXksIGVudHJ5KSkKKyAgICAgICAgaWYgKGVudHJ5LT5rZXlfaGFzaCA9PSBrZXlfaGFzaCAmJiBodC0+Y29tcGFyZV9mdW5jKGh0LCBwa2V5LCBlbnRyeSkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4gZW50cnk7CiB9CiAKKwogc3RhdGljIGludAotX2hhc2h0YWJsZV9wb3BfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9wb3BfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKIHsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogICAgIHNpemVfdCBpbmRleDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCAqcHJldmlvdXM7CiAKLSAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoa2V5KTsKKyAgICBhc3NlcnQoa2V5X3NpemUgPT0gaHQtPmtleV9zaXplKTsKKworICAgIGtleV9oYXNoID0gaHQtPmhhc2hfZnVuYyhodCwgcGtleSk7CiAgICAgaW5kZXggPSBrZXlfaGFzaCAmIChodC0+bnVtX2J1Y2tldHMgLSAxKTsKIAogICAgIHByZXZpb3VzID0gTlVMTDsKICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaW5kZXgpOyBlbnRyeSAhPSBOVUxMOyBlbnRyeSA9IEVOVFJZX05FWFQoZW50cnkpKSB7Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5X2hhc2ggPT0ga2V5X2hhc2ggJiYgaHQtPmNvbXBhcmVfZnVuYyhrZXksIGVudHJ5KSkKKyAgICAgICAgaWYgKGVudHJ5LT5rZXlfaGFzaCA9PSBrZXlfaGFzaCAmJiBodC0+Y29tcGFyZV9mdW5jKGh0LCBwa2V5LCBlbnRyeSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcHJldmlvdXMgPSBlbnRyeTsKICAgICB9CkBAIC0yODcsNyArMjk5LDcgQEAKICAgICBodC0+ZW50cmllcy0tOwogCiAgICAgaWYgKGRhdGEgIT0gTlVMTCkKLSAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEoaHQsIGRhdGEsIGRhdGFfc2l6ZSwgZW50cnkpOworICAgICAgICBFTlRSWV9SRUFEX1BEQVRBKGh0LCBlbnRyeSwgZGF0YV9zaXplLCBkYXRhKTsKICAgICBodC0+YWxsb2MuZnJlZShlbnRyeSk7CiAKICAgICBpZiAoKGZsb2F0KWh0LT5lbnRyaWVzIC8gKGZsb2F0KWh0LT5udW1fYnVja2V0cyA8IEhBU0hUQUJMRV9MT1cpCkBAIC0yOTUsMjYgKzMwNywyNyBAQAogICAgIHJldHVybiAxOwogfQogCi0vKiBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIGhhc2guIFRoZSBrZXkgbXVzdCBub3QgYmUgcHJlc2VudCBpbiB0aGUgaGFzaCB0YWJsZS4KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIG1lbW9yeSBlcnJvci4gKi8KKwogaW50Ci1fUHlfaGFzaHRhYmxlX3NldChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXksCi0gICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9zZXQoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSkKIHsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogICAgIHNpemVfdCBpbmRleDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogCisgICAgYXNzZXJ0KGtleV9zaXplID09IGh0LT5rZXlfc2l6ZSk7CisKICAgICBhc3NlcnQoZGF0YSAhPSBOVUxMIHx8IGRhdGFfc2l6ZSA9PSAwKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgLyogRG9uJ3Qgd3JpdGUgdGhlIGFzc2VydGlvbiBvbiBhIHNpbmdsZSBsaW5lIGJlY2F1c2UgaXQgaXMgaW50ZXJlc3RpbmcKICAgICAgICB0byBrbm93IHRoZSBkdXBsaWNhdGVkIGVudHJ5IGlmIHRoZSBhc3NlcnRpb24gZmFpbGVkLiBUaGUgZW50cnkgY2FuCiAgICAgICAgYmUgcmVhZCB1c2luZyBhIGRlYnVnZ2VyLiAqLwotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoaHQsIGtleSk7CisgICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShodCwga2V5X3NpemUsIHBrZXkpOwogICAgIGFzc2VydChlbnRyeSA9PSBOVUxMKTsKICNlbmRpZgogCi0gICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGtleSk7CisgICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGh0LCBwa2V5KTsKICAgICBpbmRleCA9IGtleV9oYXNoICYgKGh0LT5udW1fYnVja2V0cyAtIDEpOwogCiAgICAgZW50cnkgPSBodC0+YWxsb2MubWFsbG9jKEhBU0hUQUJMRV9JVEVNX1NJWkUoaHQpKTsKQEAgLTMyMywxMiArMzM2LDEwIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBlbnRyeS0+a2V5ID0gKHZvaWQgKilrZXk7CiAgICAgZW50cnktPmtleV9oYXNoID0ga2V5X2hhc2g7Ci0KLSAgICBhc3NlcnQoZGF0YV9zaXplID09IGh0LT5kYXRhX3NpemUpOworICAgIG1lbWNweSgodm9pZCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShlbnRyeSksIHBrZXksIGh0LT5rZXlfc2l6ZSk7CiAgICAgaWYgKGRhdGEpCi0gICAgICAgIG1lbWNweShfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoZW50cnkpLCBkYXRhLCBkYXRhX3NpemUpOworICAgICAgICBFTlRSWV9XUklURV9QREFUQShodCwgZW50cnksIGRhdGFfc2l6ZSwgZGF0YSk7CiAKICAgICBfUHlfc2xpc3RfcHJlcGVuZCgmaHQtPmJ1Y2tldHNbaW5kZXhdLCAoX1B5X3NsaXN0X2l0ZW1fdCopZW50cnkpOwogICAgIGh0LT5lbnRyaWVzKys7CkBAIC0zMzgsNDggKzM0OSw1MCBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBHZXQgZGF0YSBmcm9tIGFuIGVudHJ5LiBDb3B5IGVudHJ5IGRhdGEgaW50byBkYXRhIGFuZCByZXR1cm4gMSBpZiB0aGUgZW50cnkKLSAgIGV4aXN0cywgcmV0dXJuIDAgaWYgdGhlIGVudHJ5IGRvZXMgbm90IGV4aXN0LiAqLworCiBpbnQKLV9QeV9oYXNodGFibGVfZ2V0KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKK19QeV9oYXNodGFibGVfZ2V0KF9QeV9oYXNodGFibGVfdCAqaHQsIHNpemVfdCBrZXlfc2l6ZSxjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSwgdm9pZCAqZGF0YSkKIHsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogCiAgICAgYXNzZXJ0KGRhdGEgIT0gTlVMTCk7CiAKLSAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KGh0LCBrZXkpOworICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoaHQsIGtleV9zaXplLCBwa2V5KTsKICAgICBpZiAoZW50cnkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEoaHQsIGRhdGEsIGRhdGFfc2l6ZSwgZW50cnkpOworICAgIEVOVFJZX1JFQURfUERBVEEoaHQsIGVudHJ5LCBkYXRhX3NpemUsIGRhdGEpOwogICAgIHJldHVybiAxOwogfQogCisKIGludAotX1B5X2hhc2h0YWJsZV9wb3AoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9wb3AoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSwgdm9pZCAqZGF0YSkKIHsKICAgICBhc3NlcnQoZGF0YSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoaHQtPmZyZWVfZGF0YV9mdW5jID09IE5VTEwpOwotICAgIHJldHVybiBfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5LCBkYXRhLCBkYXRhX3NpemUpOworICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5X3NpemUsIHBrZXksIGRhdGEsIGRhdGFfc2l6ZSk7CiB9CiAKLS8qIERlbGV0ZSBhbiBlbnRyeS4gVGhlIGVudHJ5IG11c3QgZXhpc3QuICovCisKKy8qIENvZGUgY29tbWVudGVkIHNpbmNlIHRoZSBmdW5jdGlvbiBpcyBub3QgbmVlZGVkIGluIFB5dGhvbiAqLworI2lmIDAKIHZvaWQKLV9QeV9oYXNodGFibGVfZGVsZXRlKF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSkKK19QeV9oYXNodGFibGVfZGVsZXRlKF9QeV9oYXNodGFibGVfdCAqaHQsIHNpemVfdCBrZXlfc2l6ZSwgY29uc3Qgdm9pZCAqcGtleSkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgaW50IGZvdW5kID0gX2hhc2h0YWJsZV9wb3BfZW50cnkoaHQsIGtleSwgTlVMTCwgMCk7CisgICAgaW50IGZvdW5kID0gX1B5X2hhc2h0YWJsZV9wb3BfZW50cnkoaHQsIGtleV9zaXplLCBwa2V5LCBOVUxMLCAwKTsKICAgICBhc3NlcnQoZm91bmQpOwogI2Vsc2UKLSAgICAodm9pZClfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5LCBOVUxMLCAwKTsKKyAgICAodm9pZClfUHlfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5X3NpemUsIHBrZXksIE5VTEwsIDApOwogI2VuZGlmCiB9CisjZW5kaWYKIAotLyogUHJvdG90eXBlIGZvciBhIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZm9yZWFjaAotICAga2V5L3ZhbHVlIHBhaXIgaW4gdGhlIGhhc2ggYnkgaGFzaHRhYmxlX2ZvcmVhY2goKS4gIEl0ZXJhdGlvbgotICAgc3RvcHMgaWYgYSBub24temVybyB2YWx1ZSBpcyByZXR1cm5lZC4gKi8KKwogaW50CiBfUHlfaGFzaHRhYmxlX2ZvcmVhY2goX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpmdW5jKSAoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqYXJnKSwKKyAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2ZvcmVhY2hfZnVuYyBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZykKIHsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwpAQCAtMzg3LDcgKzQwMCw3IEBACiAKICAgICBmb3IgKGh2ID0gMDsgaHYgPCBodC0+bnVtX2J1Y2tldHM7IGh2KyspIHsKICAgICAgICAgZm9yIChlbnRyeSA9IFRBQkxFX0hFQUQoaHQsIGh2KTsgZW50cnk7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgICAgIGludCByZXMgPSBmdW5jKGVudHJ5LCBhcmcpOworICAgICAgICAgICAgaW50IHJlcyA9IGZ1bmMoaHQsIGVudHJ5LCBhcmcpOwogICAgICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICB9CkBAIC0zOTUsNiArNDA4LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCiBzdGF0aWMgdm9pZAogaGFzaHRhYmxlX3JlaGFzaChfUHlfaGFzaHRhYmxlX3QgKmh0KQogewpAQCAtNDI2LDcgKzQ0MCw4IEBACiAgICAgICAgIGZvciAoZW50cnkgPSBCVUNLRVRTX0hFQUQob2xkX2J1Y2tldHNbYnVja2V0XSk7IGVudHJ5ICE9IE5VTEw7IGVudHJ5ID0gbmV4dCkgewogICAgICAgICAgICAgc2l6ZV90IGVudHJ5X2luZGV4OwogCi0gICAgICAgICAgICBhc3NlcnQoaHQtPmhhc2hfZnVuYyhlbnRyeS0+a2V5KSA9PSBlbnRyeS0+a2V5X2hhc2gpOworCisgICAgICAgICAgICBhc3NlcnQoaHQtPmhhc2hfZnVuYyhodCwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKGVudHJ5KSkgPT0gZW50cnktPmtleV9oYXNoKTsKICAgICAgICAgICAgIG5leHQgPSBFTlRSWV9ORVhUKGVudHJ5KTsKICAgICAgICAgICAgIGVudHJ5X2luZGV4ID0gZW50cnktPmtleV9oYXNoICYgKG5ld19zaXplIC0gMSk7CiAKQEAgLTQzNyw2ICs0NTIsNyBAQAogICAgIGh0LT5hbGxvYy5mcmVlKG9sZF9idWNrZXRzKTsKIH0KIAorCiB2b2lkCiBfUHlfaGFzaHRhYmxlX2NsZWFyKF9QeV9oYXNodGFibGVfdCAqaHQpCiB7CkBAIC00NDYsOCArNDYyLDYgQEAKICAgICBmb3IgKGk9MDsgaSA8IGh0LT5udW1fYnVja2V0czsgaSsrKSB7CiAgICAgICAgIGZvciAoZW50cnkgPSBUQUJMRV9IRUFEKGh0LCBpKTsgZW50cnkgIT0gTlVMTDsgZW50cnkgPSBuZXh0KSB7CiAgICAgICAgICAgICBuZXh0ID0gRU5UUllfTkVYVChlbnRyeSk7Ci0gICAgICAgICAgICBpZiAoaHQtPmZyZWVfZGF0YV9mdW5jKQotICAgICAgICAgICAgICAgIGh0LT5mcmVlX2RhdGFfZnVuYyhfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKGVudHJ5KSk7CiAgICAgICAgICAgICBodC0+YWxsb2MuZnJlZShlbnRyeSk7CiAgICAgICAgIH0KICAgICAgICAgX1B5X3NsaXN0X2luaXQoJmh0LT5idWNrZXRzW2ldKTsKQEAgLTQ1Niw2ICs0NzAsNyBAQAogICAgIGhhc2h0YWJsZV9yZWhhc2goaHQpOwogfQogCisKIHZvaWQKIF9QeV9oYXNodGFibGVfZGVzdHJveShfUHlfaGFzaHRhYmxlX3QgKmh0KQogewpAQCAtNDY1LDggKzQ4MCw2IEBACiAgICAgICAgIF9QeV9zbGlzdF9pdGVtX3QgKmVudHJ5ID0gaHQtPmJ1Y2tldHNbaV0uaGVhZDsKICAgICAgICAgd2hpbGUgKGVudHJ5KSB7CiAgICAgICAgICAgICBfUHlfc2xpc3RfaXRlbV90ICplbnRyeV9uZXh0ID0gZW50cnktPm5leHQ7Ci0gICAgICAgICAgICBpZiAoaHQtPmZyZWVfZGF0YV9mdW5jKQotICAgICAgICAgICAgICAgIGh0LT5mcmVlX2RhdGFfZnVuYyhfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKGVudHJ5KSk7CiAgICAgICAgICAgICBodC0+YWxsb2MuZnJlZShlbnRyeSk7CiAgICAgICAgICAgICBlbnRyeSA9IGVudHJ5X25leHQ7CiAgICAgICAgIH0KQEAgLTQ3NiwzOSArNDg5LDMxIEBACiAgICAgaHQtPmFsbG9jLmZyZWUoaHQpOwogfQogCi0vKiBSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIHRhYmxlICovCisKIF9QeV9oYXNodGFibGVfdCAqCiBfUHlfaGFzaHRhYmxlX2NvcHkoX1B5X2hhc2h0YWJsZV90ICpzcmMpCiB7CisgICAgY29uc3Qgc2l6ZV90IGtleV9zaXplID0gc3JjLT5rZXlfc2l6ZTsKKyAgICBjb25zdCBzaXplX3QgZGF0YV9zaXplID0gc3JjLT5kYXRhX3NpemU7CiAgICAgX1B5X2hhc2h0YWJsZV90ICpkc3Q7CiAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKICAgICBzaXplX3QgYnVja2V0OwogICAgIGludCBlcnI7Ci0gICAgdm9pZCAqZGF0YSwgKm5ld19kYXRhOwogCi0gICAgZHN0ID0gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChzcmMtPmRhdGFfc2l6ZSwgc3JjLT5udW1fYnVja2V0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmhhc2hfZnVuYywgc3JjLT5jb21wYXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT5jb3B5X2RhdGFfZnVuYywgc3JjLT5mcmVlX2RhdGFfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmdldF9kYXRhX3NpemVfZnVuYywgJnNyYy0+YWxsb2MpOworICAgIGRzdCA9IF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoa2V5X3NpemUsIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+bnVtX2J1Y2tldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmhhc2hfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+Y29tcGFyZV9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNyYy0+YWxsb2MpOwogICAgIGlmIChkc3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKGJ1Y2tldD0wOyBidWNrZXQgPCBzcmMtPm51bV9idWNrZXRzOyBidWNrZXQrKykgewogICAgICAgICBlbnRyeSA9IFRBQkxFX0hFQUQoc3JjLCBidWNrZXQpOwogICAgICAgICBmb3IgKDsgZW50cnk7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgICAgIGlmIChzcmMtPmNvcHlfZGF0YV9mdW5jKSB7Ci0gICAgICAgICAgICAgICAgZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpOwotICAgICAgICAgICAgICAgIG5ld19kYXRhID0gc3JjLT5jb3B5X2RhdGFfZnVuYyhkYXRhKTsKLSAgICAgICAgICAgICAgICBpZiAobmV3X2RhdGEgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZXJyID0gX1B5X2hhc2h0YWJsZV9zZXQoZHN0LCBlbnRyeS0+a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfZGF0YSwgc3JjLT5kYXRhX3NpemUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZXJyID0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGRhdGEgPSBfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoZW50cnkpOwotICAgICAgICAgICAgICAgIGVyciA9IF9QeV9oYXNodGFibGVfc2V0KGRzdCwgZW50cnktPmtleSwgZGF0YSwgc3JjLT5kYXRhX3NpemUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGtleSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShlbnRyeSk7CisgICAgICAgICAgICBjb25zdCB2b2lkICpwZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoc3JjLCBlbnRyeSk7CisgICAgICAgICAgICBlcnIgPSBfUHlfaGFzaHRhYmxlX3NldChkc3QsIGtleV9zaXplLCBwa2V5LCBkYXRhX3NpemUsIHBkYXRhKTsKICAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koZHN0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUxNyw0ICs1MjIsMyBAQAogICAgIH0KICAgICByZXR1cm4gZHN0OwogfQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2hhc2h0YWJsZS5oIGIvTW9kdWxlcy9oYXNodGFibGUuaAppbmRleCBhOWY5OTkzLi5kYmVjMjNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2hhc2h0YWJsZS5oCisrKyBiL01vZHVsZXMvaGFzaHRhYmxlLmgKQEAgLTEsOSArMSwxMCBAQAogI2lmbmRlZiBQeV9IQVNIVEFCTEVfSAogI2RlZmluZSBQeV9IQVNIVEFCTEVfSAotCiAvKiBUaGUgd2hvbGUgQVBJIGlzIHByaXZhdGUgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIAorLyogU2luZ2xlIGxpbmtlZCBsaXN0ICovCisKIHR5cGVkZWYgc3RydWN0IF9QeV9zbGlzdF9pdGVtX3MgewogICAgIHN0cnVjdCBfUHlfc2xpc3RfaXRlbV9zICpuZXh0OwogfSBfUHlfc2xpc3RfaXRlbV90OwpAQCAtMTYsMzMgKzE3LDY2IEBACiAKICNkZWZpbmUgX1B5X1NMSVNUX0hFQUQoU0xJU1QpICgoKF9QeV9zbGlzdF90ICopU0xJU1QpLT5oZWFkKQogCisKKy8qIF9QeV9oYXNodGFibGU6IHRhYmxlIGVudHJ5ICovCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICAvKiB1c2VkIGJ5IF9QeV9oYXNodGFibGVfdC5idWNrZXRzIHRvIGxpbmsgZW50cmllcyAqLwogICAgIF9QeV9zbGlzdF9pdGVtX3QgX1B5X3NsaXN0X2l0ZW07CiAKLSAgICBjb25zdCB2b2lkICprZXk7CiAgICAgUHlfdWhhc2hfdCBrZXlfaGFzaDsKIAotICAgIC8qIGRhdGEgZm9sbG93cyAqLworICAgIC8qIGtleSAoa2V5X3NpemUgYnl0ZXMpIGFuZCB0aGVuIGRhdGEgKGRhdGFfc2l6ZSBieXRlcykgZm9sbG93cyAqLwogfSBfUHlfaGFzaHRhYmxlX2VudHJ5X3Q7CiAKLSNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKEVOVFJZKSBcCi0gICAgICAgICgoY2hhciAqKShFTlRSWSkgKyBzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSkKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKEVOVFJZKSBcCisgICAgICAgICgoY29uc3Qgdm9pZCAqKSgoY2hhciAqKShFTlRSWSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgKyBzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSkpCiAKLSNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBX0FTX1ZPSURfUChFTlRSWSkgXAotICAgICAgICAoKih2b2lkICoqKV9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShFTlRSWSkpCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoVEFCTEUsIEVOVFJZKSBcCisgICAgICAgICgoY29uc3Qgdm9pZCAqKSgoY2hhciAqKShFTlRSWSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgKyBzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSBcCisgICAgICAgICAgICAgICAgICAgICAgICArIChUQUJMRSktPmtleV9zaXplKSkKIAotI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShUQUJMRSwgREFUQSwgREFUQV9TSVpFLCBFTlRSWSkgXAorLyogR2V0IGEga2V5IHZhbHVlIGZyb20gcGtleTogdXNlIG1lbWNweSgpIHJhdGhlciB0aGFuIGEgcG9pbnRlciBkZXJlZmVyZW5jZQorICAgdG8gYXZvaWQgbWVtb3J5IGFsaWdubWVudCBpc3N1ZXMuICovCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoVEFCTEUsIFBLRVksIERTVF9LRVkpIFwKICAgICBkbyB7IFwKLSAgICAgICAgYXNzZXJ0KChEQVRBX1NJWkUpID09IChUQUJMRSktPmRhdGFfc2l6ZSk7IFwKLSAgICAgICAgbWVtY3B5KERBVEEsIF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShFTlRSWSksIERBVEFfU0laRSk7IFwKKyAgICAgICAgYXNzZXJ0KHNpemVvZihEU1RfS0VZKSA9PSAoVEFCTEUpLT5rZXlfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KCYoRFNUX0tFWSksIChQS0VZKSwgc2l6ZW9mKERTVF9LRVkpKTsgXAogICAgIH0gd2hpbGUgKDApCiAKLXR5cGVkZWYgUHlfdWhhc2hfdCAoKl9QeV9oYXNodGFibGVfaGFzaF9mdW5jKSAoY29uc3Qgdm9pZCAqa2V5KTsKLXR5cGVkZWYgaW50ICgqX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMpIChjb25zdCB2b2lkICprZXksIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqaGUpOwotdHlwZWRlZiB2b2lkKiAoKl9QeV9oYXNodGFibGVfY29weV9kYXRhX2Z1bmMpKHZvaWQgKmRhdGEpOwotdHlwZWRlZiB2b2lkICgqX1B5X2hhc2h0YWJsZV9mcmVlX2RhdGFfZnVuYykodm9pZCAqZGF0YSk7Ci10eXBlZGVmIHNpemVfdCAoKl9QeV9oYXNodGFibGVfZ2V0X2RhdGFfc2l6ZV9mdW5jKSh2b2lkICpkYXRhKTsKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShUQUJMRSwgRU5UUlksIEtFWSkgXAorICAgIGRvIHsgXAorICAgICAgICBhc3NlcnQoc2l6ZW9mKEtFWSkgPT0gKFRBQkxFKS0+a2V5X3NpemUpOyBcCisgICAgICAgIG1lbWNweSgmKEtFWSksIF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShFTlRSWSksIHNpemVvZihLRVkpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEoVEFCTEUsIEVOVFJZLCBEQVRBKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydChzaXplb2YoREFUQSkgPT0gKFRBQkxFKS0+ZGF0YV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoJihEQVRBKSwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShUQUJMRSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihEQVRBKSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfV1JJVEVfREFUQShUQUJMRSwgRU5UUlksIERBVEEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgYXNzZXJ0KHNpemVvZihEQVRBKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCisgICAgICAgIG1lbWNweSgodm9pZCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoKFRBQkxFKSwgKEVOVFJZKSksIFwKKyAgICAgICAgICAgICAgICAgICYoREFUQSksIHNpemVvZihEQVRBKSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisKKy8qIF9QeV9oYXNodGFibGU6IHByb3RvdHlwZXMgKi8KKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworc3RydWN0IF9QeV9oYXNodGFibGVfdDsKKwordHlwZWRlZiBQeV91aGFzaF90ICgqX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMpIChzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGtleSk7Cit0eXBlZGVmIGludCAoKl9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jKSAoc3RydWN0IF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmhlKTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIGFsbG9jYXRlIGEgbWVtb3J5IGJsb2NrICovCkBAIC01Miw3NyArODYsMTI2IEBACiAgICAgdm9pZCAoKmZyZWUpICh2b2lkICpwdHIpOwogfSBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90OwogCi10eXBlZGVmIHN0cnVjdCB7CisKKy8qIF9QeV9oYXNodGFibGU6IHRhYmxlICovCisKK3R5cGVkZWYgc3RydWN0IF9QeV9oYXNodGFibGVfdCB7CiAgICAgc2l6ZV90IG51bV9idWNrZXRzOwogICAgIHNpemVfdCBlbnRyaWVzOyAvKiBUb3RhbCBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgdGFibGUuICovCiAgICAgX1B5X3NsaXN0X3QgKmJ1Y2tldHM7CisgICAgc2l6ZV90IGtleV9zaXplOwogICAgIHNpemVfdCBkYXRhX3NpemU7CiAKICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmM7CiAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jOwotICAgIF9QeV9oYXNodGFibGVfY29weV9kYXRhX2Z1bmMgY29weV9kYXRhX2Z1bmM7Ci0gICAgX1B5X2hhc2h0YWJsZV9mcmVlX2RhdGFfZnVuYyBmcmVlX2RhdGFfZnVuYzsKLSAgICBfUHlfaGFzaHRhYmxlX2dldF9kYXRhX3NpemVfZnVuYyBnZXRfZGF0YV9zaXplX2Z1bmM7CiAgICAgX1B5X2hhc2h0YWJsZV9hbGxvY2F0b3JfdCBhbGxvYzsKIH0gX1B5X2hhc2h0YWJsZV90OwogCi0vKiBoYXNoIGFuZCBjb21wYXJlIGZ1bmN0aW9ucyBmb3IgaW50ZWdlcnMgYW5kIHBvaW50ZXJzICovCi1QeUFQSV9GVU5DKFB5X3VoYXNoX3QpIF9QeV9oYXNodGFibGVfaGFzaF9wdHIoY29uc3Qgdm9pZCAqa2V5KTsKLVB5QVBJX0ZVTkMoUHlfdWhhc2hfdCkgX1B5X2hhc2h0YWJsZV9oYXNoX2ludChjb25zdCB2b2lkICprZXkpOwotUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KTsKKy8qIGhhc2ggYSBwb2ludGVyICh2b2lkKikgKi8KK1B5QVBJX0ZVTkMoUHlfdWhhc2hfdCkgX1B5X2hhc2h0YWJsZV9oYXNoX3B0cigKKyAgICBzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBjb25zdCB2b2lkICpwa2V5KTsKKworLyogY29tcGFyaXNvbiB1c2luZyBtZW1jbXAoKSAqLworUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBjb25zdCB2b2lkICpwa2V5LAorICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpOwogCiBQeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfdCAqKSBfUHlfaGFzaHRhYmxlX25ldygKKyAgICBzaXplX3Qga2V5X3NpemUsCiAgICAgc2l6ZV90IGRhdGFfc2l6ZSwKICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jKTsKKwogUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX3QgKikgX1B5X2hhc2h0YWJsZV9uZXdfZnVsbCgKKyAgICBzaXplX3Qga2V5X3NpemUsCiAgICAgc2l6ZV90IGRhdGFfc2l6ZSwKICAgICBzaXplX3QgaW5pdF9zaXplLAogICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmMsCi0gICAgX1B5X2hhc2h0YWJsZV9jb3B5X2RhdGFfZnVuYyBjb3B5X2RhdGFfZnVuYywKLSAgICBfUHlfaGFzaHRhYmxlX2ZyZWVfZGF0YV9mdW5jIGZyZWVfZGF0YV9mdW5jLAotICAgIF9QeV9oYXNodGFibGVfZ2V0X2RhdGFfc2l6ZV9mdW5jIGdldF9kYXRhX3NpemVfZnVuYywKICAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90ICphbGxvY2F0b3IpOwotUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX3QgKikgX1B5X2hhc2h0YWJsZV9jb3B5KF9QeV9oYXNodGFibGVfdCAqc3JjKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5X2hhc2h0YWJsZV9jbGVhcihfUHlfaGFzaHRhYmxlX3QgKmh0KTsKKwogUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koX1B5X2hhc2h0YWJsZV90ICpodCk7CiAKLXR5cGVkZWYgaW50ICgqX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMpIChfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICphcmcpOworLyogUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCB0YWJsZSAqLworUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX3QgKikgX1B5X2hhc2h0YWJsZV9jb3B5KF9QeV9oYXNodGFibGVfdCAqc3JjKTsKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2NsZWFyKF9QeV9oYXNodGFibGVfdCAqaHQpOworCit0eXBlZGVmIGludCAoKl9QeV9oYXNodGFibGVfZm9yZWFjaF9mdW5jKSAoX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisKKy8qIENhbGwgZnVuYygpIG9uIGVhY2ggZW50cnkgb2YgdGhlIGhhc2h0YWJsZS4KKyAgIEl0ZXJhdGlvbiBzdG9wcyBpZiBmdW5jKCkgcmVzdWx0IGlzIG5vbi16ZXJvLCBpbiB0aGlzIGNhc2UgaXQncyB0aGUgcmVzdWx0CisgICBvZiB0aGUgY2FsbC4gT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyAwLiAqLwogUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfZm9yZWFjaCgKICAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIF9QeV9oYXNodGFibGVfZm9yZWFjaF9mdW5jIGZ1bmMsIHZvaWQgKmFyZyk7CisgICAgX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMgZnVuYywKKyAgICB2b2lkICphcmcpOworCiBQeUFQSV9GVU5DKHNpemVfdCkgX1B5X2hhc2h0YWJsZV9zaXplKF9QeV9oYXNodGFibGVfdCAqaHQpOwogCi1QeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfZW50cnlfdCopIF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KAotICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5KTsKKy8qIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgaGFzaC4gVGhlIGtleSBtdXN0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBoYXNoIHRhYmxlLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gbWVtb3J5IGVycm9yLgorCisgICBEb24ndCBjYWxsIGRpcmVjdGx5IHRoaXMgZnVuY3Rpb24sCisgICBidXQgdXNlIF9QeV9IQVNIVEFCTEVfU0VUKCkgYW5kIF9QeV9IQVNIVEFCTEVfU0VUX05PREFUQSgpIG1hY3JvcyAqLwogUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfc2V0KAogICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5LAotICAgIHZvaWQgKmRhdGEsCi0gICAgc2l6ZV90IGRhdGFfc2l6ZSk7Ci1QeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9nZXQoCi0gICAgX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICBjb25zdCB2b2lkICprZXksCi0gICAgdm9pZCAqZGF0YSwKLSAgICBzaXplX3QgZGF0YV9zaXplKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX3BvcCgKLSAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIGNvbnN0IHZvaWQgKmtleSwKLSAgICB2b2lkICpkYXRhLAotICAgIHNpemVfdCBkYXRhX3NpemUpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2RlbGV0ZSgKLSAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIGNvbnN0IHZvaWQgKmtleSk7CisgICAgc2l6ZV90IGtleV9zaXplLAorICAgIGNvbnN0IHZvaWQgKnBrZXksCisgICAgc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpkYXRhKTsKIAogI2RlZmluZSBfUHlfSEFTSFRBQkxFX1NFVChUQUJMRSwgS0VZLCBEQVRBKSBcCi0gICAgX1B5X2hhc2h0YWJsZV9zZXQoVEFCTEUsIEtFWSwgJihEQVRBKSwgc2l6ZW9mKERBVEEpKQorICAgIF9QeV9oYXNodGFibGVfc2V0KFRBQkxFLCBzaXplb2YoS0VZKSwgJihLRVkpLCBzaXplb2YoREFUQSksICYoREFUQSkpCisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9TRVRfTk9EQVRBKFRBQkxFLCBLRVkpIFwKKyAgICBfUHlfaGFzaHRhYmxlX3NldChUQUJMRSwgc2l6ZW9mKEtFWSksICYoS0VZKSwgMCwgTlVMTCkKKworCisvKiBHZXQgYW4gZW50cnkuCisgICBSZXR1cm4gTlVMTCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LgorCisgICBEb24ndCBjYWxsIGRpcmVjdGx5IHRoaXMgZnVuY3Rpb24sIGJ1dCB1c2UgX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkoKQorICAgbWFjcm8gKi8KK1B5QVBJX0ZVTkMoX1B5X2hhc2h0YWJsZV9lbnRyeV90KikgX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBzaXplX3Qga2V5X3NpemUsCisgICAgY29uc3Qgdm9pZCAqcGtleSk7CisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkoVEFCTEUsIEtFWSkgXAorICAgIF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KFRBQkxFLCBzaXplb2YoS0VZKSwgJihLRVkpKQorCisKKy8qIEdldCBkYXRhIGZyb20gYW4gZW50cnkuIENvcHkgZW50cnkgZGF0YSBpbnRvIGRhdGEgYW5kIHJldHVybiAxIGlmIHRoZSBlbnRyeQorICAgZXhpc3RzLCByZXR1cm4gMCBpZiB0aGUgZW50cnkgZG9lcyBub3QgZXhpc3QuCisKKyAgIERvbid0IGNhbGwgZGlyZWN0bHkgdGhpcyBmdW5jdGlvbiwgYnV0IHVzZSBfUHlfSEFTSFRBQkxFX0dFVCgpIG1hY3JvICovCitQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9nZXQoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBzaXplX3Qga2V5X3NpemUsCisgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICBzaXplX3QgZGF0YV9zaXplLAorICAgIHZvaWQgKmRhdGEpOwogCiAjZGVmaW5lIF9QeV9IQVNIVEFCTEVfR0VUKFRBQkxFLCBLRVksIERBVEEpIFwKLSAgICBfUHlfaGFzaHRhYmxlX2dldChUQUJMRSwgS0VZLCAmKERBVEEpLCBzaXplb2YoREFUQSkpCisgICAgX1B5X2hhc2h0YWJsZV9nZXQoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSksIHNpemVvZihEQVRBKSwgJihEQVRBKSkKKworCisvKiBEb24ndCBjYWxsIGRpcmVjdGx5IHRoaXMgZnVuY3Rpb24sIGJ1dCB1c2UgX1B5X0hBU0hUQUJMRV9QT1AoKSBtYWNybyAqLworUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfcG9wKAorICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgc2l6ZV90IGtleV9zaXplLAorICAgIGNvbnN0IHZvaWQgKnBrZXksCisgICAgc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICB2b2lkICpkYXRhKTsKKworI2RlZmluZSBfUHlfSEFTSFRBQkxFX1BPUChUQUJMRSwgS0VZLCBEQVRBKSBcCisgICAgX1B5X2hhc2h0YWJsZV9wb3AoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSksIHNpemVvZihEQVRBKSwgJihEQVRBKSkKKwogCiAjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLwotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCmluZGV4IGJlMGY0OTguLjZiZjA0Y2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYwpAQCAtMSw0ICsxLDUgQEAKIAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKQEAgLTcsNyArOCw3IEBACiAqLwogCiAKLS8qIGdyb3VwYnkgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogZ3JvdXBieSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNzQsNyArNzUsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGdyb3VwYnlfbmV4dChncm91cGJ5b2JqZWN0ICpnYm8pCiB7Ci0gICAgUHlPYmplY3QgKm5ld3ZhbHVlLCAqbmV3a2V5LCAqciwgKmdyb3VwZXIsICp0bXA7CisgICAgUHlPYmplY3QgKm5ld3ZhbHVlLCAqbmV3a2V5LCAqciwgKmdyb3VwZXI7CiAKICAgICAvKiBza2lwIHRvIG5leHQgaXRlcmF0aW9uIGdyb3VwICovCiAgICAgZm9yICg7OykgewpAQCAtODUsOCArODYsNyBAQAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCByY21wOwogCi0gICAgICAgICAgICByY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGdiby0+dGd0a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm8tPmN1cnJrZXksIFB5X0VRKTsKKyAgICAgICAgICAgIHJjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZ2JvLT50Z3RrZXksIGdiby0+Y3VycmtleSwgUHlfRVEpOwogICAgICAgICAgICAgaWYgKHJjbXAgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBlbHNlIGlmIChyY21wID09IDApCkBAIC0xMDEsMjcgKzEwMSwxOSBAQAogICAgICAgICAgICAgbmV3a2V5ID0gbmV3dmFsdWU7CiAgICAgICAgICAgICBQeV9JTkNSRUYobmV3dmFsdWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbmV3a2V5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhnYm8tPmtleWZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ZhbHVlLCBOVUxMKTsKKyAgICAgICAgICAgIG5ld2tleSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZ2JvLT5rZXlmdW5jLCBuZXd2YWx1ZSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAobmV3a2V5ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3dmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdG1wID0gZ2JvLT5jdXJya2V5OwotICAgICAgICBnYm8tPmN1cnJrZXkgPSBuZXdrZXk7Ci0gICAgICAgIFB5X1hERUNSRUYodG1wKTsKLQotICAgICAgICB0bXAgPSBnYm8tPmN1cnJ2YWx1ZTsKLSAgICAgICAgZ2JvLT5jdXJydmFsdWUgPSBuZXd2YWx1ZTsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICBQeV9YU0VUUkVGKGdiby0+Y3VycmtleSwgbmV3a2V5KTsKKyAgICAgICAgUHlfWFNFVFJFRihnYm8tPmN1cnJ2YWx1ZSwgbmV3dmFsdWUpOwogICAgIH0KIAogICAgIFB5X0lOQ1JFRihnYm8tPmN1cnJrZXkpOwotICAgIHRtcCA9IGdiby0+dGd0a2V5OwotICAgIGdiby0+dGd0a2V5ID0gZ2JvLT5jdXJya2V5OwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKGdiby0+dGd0a2V5LCBnYm8tPmN1cnJrZXkpOwogCiAgICAgZ3JvdXBlciA9IF9ncm91cGVyX2NyZWF0ZShnYm8sIGdiby0+dGd0a2V5KTsKICAgICBpZiAoZ3JvdXBlciA9PSBOVUxMKQpAQCAtMTc4LDcgKzE3MCw3IEBACiAgICAgIHJlZHVjZV9kb2N9LAogICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWdyb3VwYnlfc2V0c3RhdGUsICAgIE1FVEhfTywKICAgICAgc2V0c3RhdGVfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogUHlEb2NfU1RSVkFSKGdyb3VwYnlfZG9jLApAQCAtMzAxLDggKzI5Myw3IEBACiAgICAgICAgICAgICBuZXdrZXkgPSBuZXd2YWx1ZTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihuZXd2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuZXdrZXkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdiby0+a2V5ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFsdWUsIE5VTEwpOworICAgICAgICAgICAgbmV3a2V5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhnYm8tPmtleWZ1bmMsIG5ld3ZhbHVlLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChuZXdrZXkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXd2YWx1ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMzAsOCArMzIxLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZ3JvdXBlcl9yZWR1Y2UoX2dyb3VwZXJvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAotICAgICAgICAgICAgbHotPnBhcmVudCwgbHotPnRndGtleSk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksIGx6LT5wYXJlbnQsIGx6LT50Z3RrZXkpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgX2dyb3VwZXJfbWV0aG9kc1tdID0gewpAQCAtMzY0LDcgKzM1NCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylfZ3JvdXBlcl90cmF2ZXJzZSwvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpX2dyb3VwZXJfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCkBAIC0zODUsOCArMzc1LDcgQEAKIH07CiAKIAotCi0vKiB0ZWUgb2JqZWN0IGFuZCB3aXRoIHN1cHBvcnRpbmcgZnVuY3Rpb24gYW5kIG9iamVjdHMgKioqKioqKioqKioqKioqLworLyogdGVlIG9iamVjdCBhbmQgd2l0aCBzdXBwb3J0aW5nIGZ1bmN0aW9uIGFuZCBvYmplY3RzICoqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBUaGUgdGVlZGF0YW9iamVjdCBwcmUtYWxsb2NhdGVzIHNwYWNlIGZvciBMSU5LQ0VMTFMgbnVtYmVyIG9mIG9iamVjdHMuCiAgICBUbyBoZWxwIHRoZSBvYmplY3QgZml0IG5lYXRseSBpbnNpZGUgY2FjaGUgbGluZXMgKHNwYWNlIGZvciAxNiB0byAzMgpAQCAtNDAxLDcgKzM5MCw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICppdDsKLSAgICBpbnQgbnVtcmVhZDsgIC8qIDAgPD0gbnVtcmVhZCA8PSBMSU5LQ0VMTFMgKi8KKyAgICBpbnQgbnVtcmVhZDsgICAgICAgICAgICAgICAgLyogMCA8PSBudW1yZWFkIDw9IExJTktDRUxMUyAqLwogICAgIFB5T2JqZWN0ICpuZXh0bGluazsKICAgICBQeU9iamVjdCAqKHZhbHVlc1tMSU5LQ0VMTFNdKTsKIH0gdGVlZGF0YW9iamVjdDsKQEAgLTQwOSw3ICszOTgsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICB0ZWVkYXRhb2JqZWN0ICpkYXRhb2JqOwotICAgIGludCBpbmRleDsgICAgLyogMCA8PSBpbmRleCA8PSBMSU5LQ0VMTFMgKi8KKyAgICBpbnQgaW5kZXg7ICAgICAgICAgICAgICAgICAgLyogMCA8PSBpbmRleCA8PSBMSU5LQ0VMTFMgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IHRlZW9iamVjdDsKIApAQCAtNDY2LDYgKzQ1NSw3IEBACiB0ZWVkYXRhb2JqZWN0X3RyYXZlcnNlKHRlZWRhdGFvYmplY3QgKnRkbywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICogYXJnKQogewogICAgIGludCBpOworCiAgICAgUHlfVklTSVQodGRvLT5pdCk7CiAgICAgZm9yIChpID0gMDsgaSA8IHRkby0+bnVtcmVhZDsgaSsrKQogICAgICAgICBQeV9WSVNJVCh0ZG8tPnZhbHVlc1tpXSk7CkBAIC01MTUsNiArNTA1LDcgQEAKICAgICBpbnQgaTsKICAgICAvKiBjcmVhdGUgYSB0ZW1wb3JhcnkgbGlzdCBvZiBhbHJlYWR5IGl0ZXJhdGVkIHZhbHVlcyAqLwogICAgIFB5T2JqZWN0ICp2YWx1ZXMgPSBQeUxpc3RfTmV3KHRkby0+bnVtcmVhZCk7CisKICAgICBpZiAoIXZhbHVlcykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm9yIChpPTAgOyBpPHRkby0+bnVtcmVhZCA7IGkrKykgewpAQCAtNTgyLDcgKzU3Myw3IEBACiBQeURvY19TVFJWQVIodGVlZGF0YW9iamVjdF9kb2MsICJEYXRhIGNvbnRhaW5lciBjb21tb24gdG8gbXVsdGlwbGUgdGVlIG9iamVjdHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlZGF0YW9iamVjdF90eXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKSAgICAgICAgIC8qIE11c3QgZmlsbCBpbiB0eXBlIHZhbHVlIGxhdGVyICovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKDAsIDApICAgICAgICAgICAgICAgICAvKiBNdXN0IGZpbGwgaW4gdHlwZSB2YWx1ZSBsYXRlciAqLwogICAgICJpdGVydG9vbHMuX3RlZV9kYXRhb2JqZWN0IiwgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZih0ZWVkYXRhb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwpAQCAtNjAyLDcgKzU5Myw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICB0ZWVkYXRhb2JqZWN0X2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpdGVlZGF0YW9iamVjdF90cmF2ZXJzZSwgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSl0ZWVkYXRhb2JqZWN0X2NsZWFyLCAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC03NjIsOSArNzUzLDkgQEAKICJJdGVyYXRvciB3cmFwcGVkIHRvIG1ha2UgaXQgY29weWFibGUiKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIHRlZV9tZXRob2RzW10gPSB7Ci0gICAgeyJfX2NvcHlfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pdGVlX2NvcHksICBNRVRIX05PQVJHUywgdGVlY29weV9kb2N9LAotICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAotICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXRlZV9zZXRzdGF0ZSwgICAgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAorICAgIHsiX19jb3B5X18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9jb3B5LCAgICAgTUVUSF9OT0FSR1MsIHRlZWNvcHlfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil0ZWVfcmVkdWNlLCAgIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil0ZWVfc2V0c3RhdGUsIE1FVEhfTywgICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC03OTQsNyArNzg1LDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKXRlZV90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KXRlZV9jbGVhciwgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZih0ZWVvYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YodGVlb2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyl0ZWVfbmV4dCwgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICB0ZWVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCkBAIC04NjAsMTIgKzg1MSwxMyBAQAogInRlZShpdGVyYWJsZSwgbj0yKSAtLT4gdHVwbGUgb2YgbiBpbmRlcGVuZGVudCBpdGVyYXRvcnMuIik7CiAKIAotLyogY3ljbGUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjeWNsZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKml0OwogICAgIFB5T2JqZWN0ICpzYXZlZDsKKyAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIGludCBmaXJzdHBhc3M7CiB9IGN5Y2xlb2JqZWN0OwogCkBAIC05MDUsNiArODk3LDcgQEAKICAgICB9CiAgICAgbHotPml0ID0gaXQ7CiAgICAgbHotPnNhdmVkID0gc2F2ZWQ7CisgICAgbHotPmluZGV4ID0gMDsKICAgICBsei0+Zmlyc3RwYXNzID0gMDsKIAogICAgIHJldHVybiAoUHlPYmplY3QgKilsejsKQEAgLTkxNCwxNSArOTA3LDE2IEBACiBjeWNsZV9kZWFsbG9jKGN5Y2xlb2JqZWN0ICpseikKIHsKICAgICBQeU9iamVjdF9HQ19VblRyYWNrKGx6KTsKLSAgICBQeV9YREVDUkVGKGx6LT5zYXZlZCk7CiAgICAgUHlfWERFQ1JFRihsei0+aXQpOworICAgIFB5X1hERUNSRUYobHotPnNhdmVkKTsKICAgICBQeV9UWVBFKGx6KS0+dHBfZnJlZShseik7CiB9CiAKIHN0YXRpYyBpbnQKIGN5Y2xlX3RyYXZlcnNlKGN5Y2xlb2JqZWN0ICpseiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfVklTSVQobHotPml0KTsKKyAgICBpZiAobHotPml0KQorICAgICAgICBQeV9WSVNJVChsei0+aXQpOwogICAgIFB5X1ZJU0lUKGx6LT5zYXZlZCk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC05MzEsNDUgKzkyNSw1NiBAQAogY3ljbGVfbmV4dChjeWNsZW9iamVjdCAqbHopCiB7CiAgICAgUHlPYmplY3QgKml0ZW07Ci0gICAgUHlPYmplY3QgKml0OwotICAgIFB5T2JqZWN0ICp0bXA7CiAKLSAgICB3aGlsZSAoMSkgeworICAgIGlmIChsei0+aXQgIT0gTlVMTCkgewogICAgICAgICBpdGVtID0gUHlJdGVyX05leHQobHotPml0KTsKICAgICAgICAgaWYgKGl0ZW0gIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKCFsei0+Zmlyc3RwYXNzICYmIFB5TGlzdF9BcHBlbmQobHotPnNhdmVkLCBpdGVtKSkgeworICAgICAgICAgICAgaWYgKGx6LT5maXJzdHBhc3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsei0+c2F2ZWQsIGl0ZW0pKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKQotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5TGlzdF9TaXplKGx6LT5zYXZlZCkgPT0gMCkKKyAgICAgICAgLyogTm90ZTogIFN0b3BJdGVyYXRpb24gaXMgYWxyZWFkeSBjbGVhcmVkIGJ5IFB5SXRlcl9OZXh0KCkgKi8KKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGx6LT5zYXZlZCk7Ci0gICAgICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHRtcCA9IGx6LT5pdDsKLSAgICAgICAgbHotPml0ID0gaXQ7Ci0gICAgICAgIGx6LT5maXJzdHBhc3MgPSAxOwotICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgUHlfQ0xFQVIobHotPml0KTsKICAgICB9CisgICAgaWYgKFB5X1NJWkUobHotPnNhdmVkKSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpdGVtID0gUHlMaXN0X0dFVF9JVEVNKGx6LT5zYXZlZCwgbHotPmluZGV4KTsKKyAgICBsei0+aW5kZXgrKzsKKyAgICBpZiAobHotPmluZGV4ID49IFB5X1NJWkUobHotPnNhdmVkKSkKKyAgICAgICAgbHotPmluZGV4ID0gMDsKKyAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgcmV0dXJuIGl0ZW07CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjeWNsZV9yZWR1Y2UoY3ljbGVvYmplY3QgKmx6KQogewotICAgIC8qIENyZWF0ZSBhIG5ldyBjeWNsZSB3aXRoIHRoZSBpdGVyYXRvciB0dXBsZSwgdGhlbiBzZXQKLSAgICAgKiB0aGUgc2F2ZWQgc3RhdGUgb24gaXQuCi0gICAgICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTykoT2kpIiwgUHlfVFlQRShseiksCi0gICAgICAgIGx6LT5pdCwgbHotPnNhdmVkLCBsei0+Zmlyc3RwYXNzKTsKKyAgICAvKiBDcmVhdGUgYSBuZXcgY3ljbGUgd2l0aCB0aGUgaXRlcmF0b3IgdHVwbGUsIHRoZW4gc2V0IHRoZSBzYXZlZCBzdGF0ZSAqLworICAgIGlmIChsei0+aXQgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqaXQgPSBQeU9iamVjdF9HZXRJdGVyKGx6LT5zYXZlZCk7CisgICAgICAgIGlmIChpdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChsei0+aW5kZXggIT0gMCkgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19zZXRzdGF0ZV9fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGl0LCAmUHlJZF9fX3NldHN0YXRlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibiIsIGx6LT5pbmRleCk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTikoT2kpIiwgUHlfVFlQRShseiksIGl0LCBsei0+c2F2ZWQsIDEpOwogICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPKShPaSkiLCBQeV9UWVBFKGx6KSwgbHotPml0LCBsei0+c2F2ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgbHotPmZpcnN0cGFzcyk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjeWNsZV9zZXRzdGF0ZShjeWNsZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKQEAgLTk4Myw5ICs5ODgsMTAgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPIWkiLCAmUHlMaXN0X1R5cGUsICZzYXZlZCwgJmZpcnN0cGFzcykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X1hJTkNSRUYoc2F2ZWQpOworICAgIFB5X0lOQ1JFRihzYXZlZCk7CiAgICAgUHlfWFNFVFJFRihsei0+c2F2ZWQsIHNhdmVkKTsKICAgICBsei0+Zmlyc3RwYXNzID0gZmlyc3RwYXNzICE9IDA7CisgICAgbHotPmluZGV4ID0gMDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMTA1NCw3ICsxMDYwLDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKmZ1bmM7CiAgICAgUHlPYmplY3QgKml0OwotICAgIGxvbmcgICAgICAgICBzdGFydDsKKyAgICBsb25nIHN0YXJ0OwogfSBkcm9wd2hpbGVvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZHJvcHdoaWxlX3R5cGU7CkBAIC0xMTQ0LDggKzExNTAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRyb3B3aGlsZV9yZWR1Y2UoZHJvcHdoaWxlb2JqZWN0ICpseikKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0YXJ0KTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdGFydCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTk2LDEzICsxMjAxLDEzIEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIGRyb3B3aGlsZV9kb2MsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpZHJvcHdoaWxlX3RyYXZlcnNlLCAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpZHJvcHdoaWxlX3RyYXZlcnNlLCAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZHJvcHdoaWxlX25leHQsICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgZHJvcHdoaWxlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBkcm9wd2hpbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTEyMjMsNyArMTIyOCw3IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICpmdW5jOwogICAgIFB5T2JqZWN0ICppdDsKLSAgICBsb25nICAgICAgICAgc3RvcDsKKyAgICBsb25nIHN0b3A7CiB9IHRha2V3aGlsZW9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCB0YWtld2hpbGVfdHlwZTsKQEAgLTEyOTgsNyArMTMwMyw3IEBACiAgICAgfQogICAgIG9rID0gUHlPYmplY3RfSXNUcnVlKGdvb2QpOwogICAgIFB5X0RFQ1JFRihnb29kKTsKLSAgICBpZiAob2sgPT0gMSkKKyAgICBpZiAob2sgPiAwKQogICAgICAgICByZXR1cm4gaXRlbTsKICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgaWYgKG9rID09IDApCkBAIC0xMzA5LDE0ICsxMzE0LDE0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGFrZXdoaWxlX3JlZHVjZSh0YWtld2hpbGVvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsei0+ZnVuYywgbHotPml0LCBsei0+c3RvcCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pbCIsIFB5X1RZUEUobHopLCBsei0+ZnVuYywgbHotPml0LCBsei0+c3RvcCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0YWtld2hpbGVfcmVkdWNlX3NldHN0YXRlKHRha2V3aGlsZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKIHsKICAgICBpbnQgc3RvcCA9IFB5T2JqZWN0X0lzVHJ1ZShzdGF0ZSk7CisKICAgICBpZiAoc3RvcCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGx6LT5zdG9wID0gc3RvcDsKQEAgLTEzNjAsNyArMTM2NSw3IEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIHRha2V3aGlsZV9kb2MsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpdGFrZXdoaWxlX3RyYXZlcnNlLCAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpdGFrZXdoaWxlX3RyYXZlcnNlLCAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCkBAIC0xMzgxLDcgKzEzODYsNyBAQAogfTsKIAogCi0vKiBpc2xpY2Ugb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGlzbGljZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTE0MTcsNyArMTQyMiw4IEBACiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIlN0b3AgYXJndW1lbnQgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciBhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CisgICAgICAgICAgICAgICAgICAgIlN0b3AgYXJndW1lbnQgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciAiCisgICAgICAgICAgICAgICAgICAgImFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQzMiwxNCArMTQzOCwxNiBAQAogICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICJTdG9wIGFyZ3VtZW50IGZvciBpc2xpY2UoKSBtdXN0IGJlIE5vbmUgb3IgYW4gaW50ZWdlcjogMCA8PSB4IDw9IHN5cy5tYXhzaXplLiIpOworICAgICAgICAgICAgICAgICAgICJTdG9wIGFyZ3VtZW50IGZvciBpc2xpY2UoKSBtdXN0IGJlIE5vbmUgb3IgIgorICAgICAgICAgICAgICAgICAgICJhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHN0YXJ0PDAgfHwgc3RvcDwtMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgIkluZGljZXMgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciBhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CisgICAgICAgICAgICJJbmRpY2VzIGZvciBpc2xpY2UoKSBtdXN0IGJlIE5vbmUgb3IgIgorICAgICAgICAgICAiYW4gaW50ZWdlcjogMCA8PSB4IDw9IHN5cy5tYXhzaXplLiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE1MzYsNiArMTU0NCw3IEBACiAgICAgICogdGhlbiAnc2V0c3RhdGUnIHdpdGggdGhlIG5leHQgYW5kIGNvdW50CiAgICAgICovCiAgICAgUHlPYmplY3QgKnN0b3A7CisKICAgICBpZiAobHotPml0ID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmVtcHR5X2xpc3Q7CiAgICAgICAgIFB5T2JqZWN0ICplbXB0eV9pdDsKQEAgLTE1NjUsNiArMTU3NCw3IEBACiBpc2xpY2Vfc2V0c3RhdGUoaXNsaWNlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQogewogICAgIFB5X3NzaXplX3QgY250ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisKICAgICBpZiAoY250ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGx6LT5jbnQgPSBjbnQ7CkBAIC0xNzc5LDcgKzE3ODksNyBAQAogfTsKIAogCi0vKiBjaGFpbiBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogY2hhaW4gb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMTg1NSwzMiArMTg2NSwzMiBAQAogICAgIFB5T2JqZWN0ICppdGVtOwogCiAgICAgaWYgKGx6LT5zb3VyY2UgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxyZWFkeSBzdG9wcGVkICovCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgLyogYWxyZWFkeSBzdG9wcGVkICovCiAKICAgICBpZiAobHotPmFjdGl2ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IFB5SXRlcl9OZXh0KGx6LT5zb3VyY2UpOwogICAgICAgICBpZiAoaXRlcmFibGUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfQ0xFQVIobHotPnNvdXJjZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vIG1vcmUgaW5wdXQgc291cmNlcyAqLworICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIG5vIG1vcmUgaW5wdXQgc291cmNlcyAqLwogICAgICAgICB9CiAgICAgICAgIGx6LT5hY3RpdmUgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKICAgICAgICAgUHlfREVDUkVGKGl0ZXJhYmxlKTsKICAgICAgICAgaWYgKGx6LT5hY3RpdmUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfQ0xFQVIobHotPnNvdXJjZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IG5vdCBpdGVyYWJsZSAqLworICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIGlucHV0IG5vdCBpdGVyYWJsZSAqLwogICAgICAgICB9CiAgICAgfQotICAgIGl0ZW0gPSBQeUl0ZXJfTmV4dChsei0+YWN0aXZlKTsKKyAgICBpdGVtID0gKCpQeV9UWVBFKGx6LT5hY3RpdmUpLT50cF9pdGVybmV4dCkobHotPmFjdGl2ZSk7CiAgICAgaWYgKGl0ZW0gIT0gTlVMTCkKICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IHJhaXNlZCBhbiBleGNlcHRpb24gKi8KKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBpbnB1dCByYWlzZWQgYW4gZXhjZXB0aW9uICovCiAgICAgfQogICAgIFB5X0NMRUFSKGx6LT5hY3RpdmUpOwotICAgIHJldHVybiBjaGFpbl9uZXh0KGx6KTsgICAgICAgICAgICAgICAgICAgICAgLyogcmVjdXJzZSBhbmQgdXNlIG5leHQgYWN0aXZlICovCisgICAgcmV0dXJuIGNoYWluX25leHQobHopOyAgICAgICAgICAgICAgLyogcmVjdXJzZSBhbmQgdXNlIG5leHQgYWN0aXZlICovCiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xOTQwLDEzICsxOTUwLDEzIEBACiB0aGF0IGV2YWx1YXRlcyBsYXppbHkuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBjaGFpbl9tZXRob2RzW10gPSB7Ci0gICAgeyJmcm9tX2l0ZXJhYmxlIiwgKFB5Q0Z1bmN0aW9uKSBjaGFpbl9uZXdfZnJvbV9pdGVyYWJsZSwgICAgICAgICAgICBNRVRIX08gfCBNRVRIX0NMQVNTLAotICAgICAgICBjaGFpbl9mcm9tX2l0ZXJhYmxlX2RvY30sCisgICAgeyJmcm9tX2l0ZXJhYmxlIiwgKFB5Q0Z1bmN0aW9uKSBjaGFpbl9uZXdfZnJvbV9pdGVyYWJsZSwgTUVUSF9PIHwgTUVUSF9DTEFTUywKKyAgICAgY2hhaW5fZnJvbV9pdGVyYWJsZV9kb2N9LAogICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNoYWluX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKICAgICAgcmVkdWNlX2RvY30sCiAgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pY2hhaW5fc2V0c3RhdGUsICAgIE1FVEhfTywKICAgICAgc2V0c3RhdGVfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBjaGFpbl90eXBlID0gewpAQCAtMTk5OCwxMCArMjAwOCwxMCBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpwb29sczsgICAgICAgICAgICAgICAgICAgIC8qIHR1cGxlIG9mIHBvb2wgdHVwbGVzICovCi0gICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgICAgICAgICAvKiBvbmUgaW5kZXggcGVyIHBvb2wgKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBwcm9kdWN0IGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICpwb29sczsgICAgICAgIC8qIHR1cGxlIG9mIHBvb2wgdHVwbGVzICovCisgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciBwb29sICovCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gcHJvZHVjdG9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBwcm9kdWN0X3R5cGU7CkBAIC0yMDIwLDcgKzIwMzAsOCBAQAogICAgICAgICBQeU9iamVjdCAqdG1wYXJncyA9IFB5VHVwbGVfTmV3KDApOwogICAgICAgICBpZiAodG1wYXJncyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKHRtcGFyZ3MsIGt3ZHMsICJ8bjpwcm9kdWN0Iiwga3dsaXN0LCAmcmVwZWF0KSkgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcyh0bXBhcmdzLCBrd2RzLCAifG46cHJvZHVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnJlcGVhdCkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXBhcmdzKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0yMzA5LDcgKzIzMjAsNyBAQAogc3RhdGljIFB5VHlwZU9iamVjdCBwcm9kdWN0X3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIml0ZXJ0b29scy5wcm9kdWN0IiwgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihwcm9kdWN0b2JqZWN0KSwgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICBzaXplb2YocHJvZHVjdG9iamVjdCksICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3Rvcilwcm9kdWN0X2RlYWxsb2MsICAgICAgICAvKiB0cF9kZWFsbG9jICovCkBAIC0yMzUxLDE1ICsyMzYyLDE1IEBACiB9OwogCiAKLS8qIGNvbWJpbmF0aW9ucyBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogY29tYmluYXRpb25zIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCi0gICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgICAgICAgICAvKiBvbmUgaW5kZXggcGVyIHJlc3VsdCBlbGVtZW50ICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgY29tYmluYXRpb25zIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCisgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciByZXN1bHQgZWxlbWVudCAqLworICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCisgICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gY29tYmluYXRpb25zb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGNvbWJpbmF0aW9uc190eXBlOwpAQCAtMjU2OSwxNyArMjU4MCwxNiBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29sKTsKIAotICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbHotPnIpCi0gICAgeworICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbHotPnIpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQotICAgIHsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CiAgICAgICAgIFB5X3NzaXplX3QgbWF4OwogICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKTsKICAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworCiAgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCiAgICAgICAgIG1heCA9IGkgKyBuIC0gbHotPnI7CkBAIC0yNjY1LDcgKzI2NzUsNyBAQAogfTsKIAogCi0vKiBjb21iaW5hdGlvbnMgd2l0aCByZXBsYWNlbWVudCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGNvbWJpbmF0aW9ucyB3aXRoIHJlcGxhY2VtZW50IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogRXF1aXZhbGVudCB0bzoKIApAQCAtMjY5NSwxMSArMjcwNSwxMSBAQAogKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KKyAgICBQeU9iamVjdCAqcG9vbDsgICAgICAgICAvKiBpbnB1dCBjb252ZXJ0ZWQgdG8gYSB0dXBsZSAqLwogICAgIFB5X3NzaXplX3QgKmluZGljZXM7ICAgIC8qIG9uZSBpbmRleCBwZXIgcmVzdWx0IGVsZW1lbnQgKi8KICAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgY3dyIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCisgICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgY3dyIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBjd3JvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgY3dyX3R5cGU7CkBAIC0yNzE2LDggKzI3MjYsOSBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBzdGF0aWMgY2hhciAqa3dhcmdzW10gPSB7Iml0ZXJhYmxlIiwgInIiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPbjpjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCIsIGt3YXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlcmFibGUsICZyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbjpjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzLCAmaXRlcmFibGUsICZyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBwb29sID0gUHlTZXF1ZW5jZV9UdXBsZShpdGVyYWJsZSk7CkBAIC0yODgyLDggKzI4OTMsNyBAQAogICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobHotPnIpOwogICAgICAgICBpZiAoIWluZGljZXMpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKLSAgICAgICAgeworICAgICAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPmluZGljZXNbaV0pOwogICAgICAgICAgICAgaWYgKCFpbmRleCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbmRpY2VzKTsKQEAgLTI5MDksMTAgKzI5MTksMTAgQEAKICAgICB9CiAKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbCk7Ci0gICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKLSAgICB7CisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykgewogICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKTsKICAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworCiAgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLwogICAgICAgICAvKiBjbGFtcCB0aGUgaW5kZXggKi8KQEAgLTI5OTYsNyArMzAwNiw3IEBACiB9OwogCiAKLS8qIHBlcm11dGF0aW9ucyBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvKiBwZXJtdXRhdGlvbnMgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIGRlZiBwZXJtdXRhdGlvbnMoaXRlcmFibGUsIHI9Tm9uZSk6CiAgICAgJ3Blcm11dGF0aW9ucyhyYW5nZSgzKSwgMikgLS0+ICgwLDEpICgwLDIpICgxLDApICgxLDIpICgyLDApICgyLDEpJwpAQCAtMzAyMywxMiArMzAzMywxMiBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCi0gICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgICAgICAgICAvKiBvbmUgaW5kZXggcGVyIGVsZW1lbnQgaW4gdGhlIHBvb2wgKi8KLSAgICBQeV9zc2l6ZV90ICpjeWNsZXM7ICAgICAgICAgICAgICAgICAvKiBvbmUgcm9sbG92ZXIgY291bnRlciBwZXIgZWxlbWVudCBpbiB0aGUgcmVzdWx0ICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCi0gICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgcGVybXV0YXRpb25zIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCisgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciBlbGVtZW50IGluIHRoZSBwb29sICovCisgICAgUHlfc3NpemVfdCAqY3ljbGVzOyAgICAgLyogb25lIHJvbGxvdmVyIGNvdW50ZXIgcGVyIGVsZW1lbnQgaW4gdGhlIHJlc3VsdCAqLworICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCisgICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gcGVybXV0YXRpb25zb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHBlcm11dGF0aW9uc190eXBlOwpAQCAtMzI0Myw3ICszMjUzLDcgQEAKICAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KG4pOwogICAgICAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgIGZvciAoaT0wOyBpPG47IGkrKyl7CisgICAgICAgIGZvciAoaT0wOyBpPG47IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHBvLT5pbmRpY2VzW2ldKTsKICAgICAgICAgICAgIGlmICghaW5kZXgpCiAgICAgICAgICAgICAgICAgZ290byBlcnI7CkBAIC0zMjUzLDggKzMyNjMsNyBAQAogICAgICAgICBjeWNsZXMgPSBQeVR1cGxlX05ldyhwby0+cik7CiAgICAgICAgIGlmIChjeWNsZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICBmb3IgKGk9MDsgaTxwby0+cjsgaSsrKQotICAgICAgICB7CisgICAgICAgIGZvciAoaT0wIDsgaTxwby0+ciA7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHBvLT5jeWNsZXNbaV0pOwogICAgICAgICAgICAgaWYgKCFpbmRleCkKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKQEAgLTMyODcsMTUgKzMyOTYsMTIgQEAKICAgICB9CiAKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShwby0+cG9vbCk7Ci0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoaW5kaWNlcykgIT0gbiB8fAotICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGN5Y2xlcykgIT0gcG8tPnIpCi0gICAgeworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGluZGljZXMpICE9IG4gfHwgUHlUdXBsZV9HRVRfU0laRShjeWNsZXMpICE9IHBvLT5yKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZm9yIChpPTA7IGk8bjsgaSsrKQotICAgIHsKKyAgICBmb3IgKGk9MDsgaTxuOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShpbmRpY2VzLCBpKTsKICAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOwogICAgICAgICBpZiAoaW5kZXggPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC0zMzA4LDggKzMzMTQsNyBAQAogICAgICAgICBwby0+aW5kaWNlc1tpXSA9IGluZGV4OwogICAgIH0KIAotICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspCi0gICAgeworICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShjeWNsZXMsIGkpOwogICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CiAgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTMzNTAsMTEgKzMzNTUsMTEgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBwZXJtdXRhdGlvbnNfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiaXRlcnRvb2xzLnBlcm11dGF0aW9ucyIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiaXRlcnRvb2xzLnBlcm11dGF0aW9ucyIsICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKHBlcm11dGF0aW9uc29iamVjdCksICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpcGVybXV0YXRpb25zX2RlYWxsb2MsICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpcGVybXV0YXRpb25zX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTMzNzEsMTMgKzMzNzYsMTMgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgcGVybXV0YXRpb25zX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKXBlcm11dGF0aW9uc190cmF2ZXJzZSwgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgcGVybXV0YXRpb25zX2RvYywgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylwZXJtdXRhdGlvbnNfdHJhdmVyc2UsLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgKGl0ZXJuZXh0ZnVuYylwZXJtdXRhdGlvbnNfbmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIChpdGVybmV4dGZ1bmMpcGVybXV0YXRpb25zX25leHQsICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgcGVybXVhdGlvbnNfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KQEAgLTMzODgsMTEgKzMzOTMsMTEgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgcGVybXV0YXRpb25zX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBwZXJtdXRhdGlvbnNfbmV3LCAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCi0vKiBhY2N1bXVsYXRlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBhY2N1bXVsYXRlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTM0NTksOSArMzQ2NCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYWNjdW11bGF0ZV9uZXh0KGFjY3VtdWxhdGVvYmplY3QgKmx6KQogewotICAgIFB5T2JqZWN0ICp2YWwsICpvbGR0b3RhbCwgKm5ld3RvdGFsOworICAgIFB5T2JqZWN0ICp2YWwsICpuZXd0b3RhbDsKIAotICAgIHZhbCA9IFB5SXRlcl9OZXh0KGx6LT5pdCk7CisgICAgdmFsID0gKCpQeV9UWVBFKGx6LT5pdCktPnRwX2l0ZXJuZXh0KShsei0+aXQpOwogICAgIGlmICh2YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTM0NzksMTEgKzM0ODQsOCBAQAogICAgIGlmIChuZXd0b3RhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG9sZHRvdGFsID0gbHotPnRvdGFsOwotICAgIGx6LT50b3RhbCA9IG5ld3RvdGFsOwotICAgIFB5X0RFQ1JFRihvbGR0b3RhbCk7Ci0KICAgICBQeV9JTkNSRUYobmV3dG90YWwpOworICAgIFB5X1NFVFJFRihsei0+dG90YWwsIG5ld3RvdGFsKTsKICAgICByZXR1cm4gbmV3dG90YWw7CiB9CiAKQEAgLTM1MTAsNyArMzUxMiw3IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pTyIsIFB5X1RZUEUobHopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5pdCwgbHotPmJpbm9wP2x6LT5iaW5vcDpQeV9Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT50b3RhbD9sei0+dG90YWw6UHlfTm9uZSk7Ci0gfQorfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYWNjdW11bGF0ZV9zZXRzdGF0ZShhY2N1bXVsYXRlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQpAQCAtMzY3Miw3ICszNjc0LDcgQEAKIAogICAgICAgICBvayA9IFB5T2JqZWN0X0lzVHJ1ZShzZWxlY3Rvcik7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxlY3Rvcik7Ci0gICAgICAgIGlmIChvayA9PSAxKQorICAgICAgICBpZiAob2sgPiAwKQogICAgICAgICAgICAgcmV0dXJuIGRhdHVtOwogICAgICAgICBQeV9ERUNSRUYoZGF0dW0pOwogICAgICAgICBpZiAob2sgPCAwKQpAQCAtMzY4NSw3ICszNjg3LDcgQEAKIHsKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKICAgICAgICAgbHotPmRhdGEsIGx6LT5zZWxlY3RvcnMpOwotICAgIH0KK30KIAogc3RhdGljIFB5TWV0aG9kRGVmIGNvbXByZXNzX21ldGhvZHNbXSA9IHsKICAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljb21wcmVzc19yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCkBAIC0zNzA0LDQ0ICszNzA2LDQ0IEBACiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIml0ZXJ0b29scy5jb21wcmVzcyIsICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihjb21wcmVzc29iamVjdCksICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCiAgICAgKGRlc3RydWN0b3IpY29tcHJlc3NfZGVhbGxvYywgICAgICAgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8Ci0gICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIGNvbXByZXNzX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWNvbXByZXNzX3RyYXZlcnNlLCAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIGNvbXByZXNzX2RvYywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpY29tcHJlc3NfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpY29tcHJlc3NfbmV4dCwgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgY29tcHJlc3NfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIGNvbXByZXNzX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIGNvbXByZXNzX21ldGhvZHMsICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgY29tcHJlc3NfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC0zODIyLDggKzM4MjQsNyBAQAogICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZ29vZDsKLSAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSwgTlVMTCk7CisgICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywgaXRlbSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoZ29vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzg0Miw5ICszODQzLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaWx0ZXJmYWxzZV9yZWR1Y2UoZmlsdGVyZmFsc2VvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAotICAgICAgICBsei0+ZnVuYywgbHotPml0KTsKLSAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQpOworfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZmlsdGVyZmFsc2VfbWV0aG9kc1tdID0gewogICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWZpbHRlcmZhbHNlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKQEAgLTM4NjQsNyArMzg2NCw3IEBACiAgICAgc2l6ZW9mKGZpbHRlcmZhbHNlb2JqZWN0KSwgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpZmlsdGVyZmFsc2VfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpZmlsdGVyZmFsc2VfZGVhbGxvYywgICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTM4ODIsNyArMzg4Miw3IEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIGZpbHRlcmZhbHNlX2RvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpZmlsdGVyZmFsc2VfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWZpbHRlcmZhbHNlX3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwpAQCAtNDEzNCwxNSArNDEzNCwxNSBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKLSAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICBjb3VudF9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWNvdW50X3RyYXZlcnNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpY291bnRfdHJhdmVyc2UsICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpY291bnRfbmV4dCwgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgY291bnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgY291bnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC00MzA4LDkgKzQzMDgsNyBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKLS8qIHppcGxvbmdlc3Qgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgorLyogemlwbG9uZ2VzdCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNDM0OSw3ICs0MzQ3LDcgQEAKICAgICBpdHR1cGxlID0gUHlUdXBsZV9OZXcodHVwbGVzaXplKTsKICAgICBpZiAoaXR0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmb3IgKGk9MDsgaSA8IHR1cGxlc2l6ZTsgKytpKSB7CisgICAgZm9yIChpPTA7IGkgPCB0dXBsZXNpemU7IGkrKykgewogICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CiAgICAgICAgIFB5T2JqZWN0ICppdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlbSk7CiAgICAgICAgIGlmIChpdCA9PSBOVUxMKSB7CkBAIC00NDkwLDYgKzQ0ODgsNyBAQAogICAgICAqLwogICAgIGludCBpOwogICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcoUHlUdXBsZV9HRVRfU0laRShsei0+aXR0dXBsZSkpOworCiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm9yIChpPTA7IGk8UHlUdXBsZV9HRVRfU0laRShsei0+aXR0dXBsZSk7IGkrKykgewpAQCAtNDU0MCw3ICs0NTM5LDcgQEAKICAgICBzaXplb2YoemlwbG9uZ2VzdG9iamVjdCksICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcil6aXBfbG9uZ2VzdF9kZWFsbG9jLCAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3Rvcil6aXBfbG9uZ2VzdF9kZWFsbG9jLCAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtNDU1Nyw4ICs0NTU2LDggQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgemlwX2xvbmdlc3RfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKXppcF9sb25nZXN0X3RyYXZlcnNlLCAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIHppcF9sb25nZXN0X2RvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpemlwX2xvbmdlc3RfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCkBAIC00NTc0LDcgKzQ1NzMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICB6aXBfbG9uZ2VzdF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIHppcF9sb25nZXN0X25ldywgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWFpbi5jIGIvTW9kdWxlcy9tYWluLmMKaW5kZXggZTRjOTU1ZS4uNjk4NmQ5NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYWluLmMKKysrIGIvTW9kdWxlcy9tYWluLmMKQEAgLTQyLDExICs0MiwxMSBAQAogI2RlZmluZSBQUk9HUkFNX09QVFMgQkFTRV9PUFRTCiAKIC8qIFNob3J0IHVzYWdlIG1lc3NhZ2UgKHdpdGggJXMgZm9yIGFyZ3YwKSAqLwotc3RhdGljIGNoYXIgKnVzYWdlX2xpbmUgPQorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfbGluZVtdID0KICJ1c2FnZTogJWxzIFtvcHRpb25dIC4uLiBbLWMgY21kIHwgLW0gbW9kIHwgZmlsZSB8IC1dIFthcmddIC4uLlxuIjsKIAogLyogTG9uZyB1c2FnZSBtZXNzYWdlLCBzcGxpdCBpbnRvIHBhcnRzIDwgNTEyIGJ5dGVzICovCi1zdGF0aWMgY2hhciAqdXNhZ2VfMSA9ICJcCitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV8xW10gPSAiXAogT3B0aW9ucyBhbmQgYXJndW1lbnRzIChhbmQgY29ycmVzcG9uZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMpOlxuXAogLWIgICAgIDogaXNzdWUgd2FybmluZ3MgYWJvdXQgc3RyKGJ5dGVzX2luc3RhbmNlKSwgc3RyKGJ5dGVhcnJheV9pbnN0YW5jZSlcblwKICAgICAgICAgIGFuZCBjb21wYXJpbmcgYnl0ZXMvYnl0ZWFycmF5IHdpdGggc3RyLiAoLWJiOiBpc3N1ZSBlcnJvcnMpXG5cCkBAIC01Niw3ICs1Niw3IEBACiAtRSAgICAgOiBpZ25vcmUgUFlUSE9OKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKHN1Y2ggYXMgUFlUSE9OUEFUSClcblwKIC1oICAgICA6IHByaW50IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0IChhbHNvIC0taGVscClcblwKICI7Ci1zdGF0aWMgY2hhciAqdXNhZ2VfMiA9ICJcCitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV8yW10gPSAiXAogLWkgICAgIDogaW5zcGVjdCBpbnRlcmFjdGl2ZWx5IGFmdGVyIHJ1bm5pbmcgc2NyaXB0OyBmb3JjZXMgYSBwcm9tcHQgZXZlblxuXAogICAgICAgICAgaWYgc3RkaW4gZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgdGVybWluYWw7IGFsc28gUFlUSE9OSU5TUEVDVD14XG5cCiAtSSAgICAgOiBpc29sYXRlIFB5dGhvbiBmcm9tIHRoZSB1c2VyJ3MgZW52aXJvbm1lbnQgKGltcGxpZXMgLUUgYW5kIC1zKVxuXApAQCAtNjcsNyArNjcsNyBAQAogLXMgICAgIDogZG9uJ3QgYWRkIHVzZXIgc2l0ZSBkaXJlY3RvcnkgdG8gc3lzLnBhdGg7IGFsc28gUFlUSE9OTk9VU0VSU0lURVxuXAogLVMgICAgIDogZG9uJ3QgaW1wbHkgJ2ltcG9ydCBzaXRlJyBvbiBpbml0aWFsaXphdGlvblxuXAogIjsKLXN0YXRpYyBjaGFyICp1c2FnZV8zID0gIlwKK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzNbXSA9ICJcCiAtdSAgICAgOiB1bmJ1ZmZlcmVkIGJpbmFyeSBzdGRvdXQgYW5kIHN0ZGVyciwgc3RkaW4gYWx3YXlzIGJ1ZmZlcmVkO1xuXAogICAgICAgICAgYWxzbyBQWVRIT05VTkJVRkZFUkVEPXhcblwKICAgICAgICAgIHNlZSBtYW4gcGFnZSBmb3IgZGV0YWlscyBvbiBpbnRlcm5hbCBidWZmZXJpbmcgcmVsYXRpbmcgdG8gJy11J1xuXApAQCAtNzksNyArNzksNyBAQAogLXggICAgIDogc2tpcCBmaXJzdCBsaW5lIG9mIHNvdXJjZSwgYWxsb3dpbmcgdXNlIG9mIG5vbi1Vbml4IGZvcm1zIG9mICMhY21kXG5cCiAtWCBvcHQgOiBzZXQgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgb3B0aW9uXG5cCiAiOwotc3RhdGljIGNoYXIgKnVzYWdlXzQgPSAiXAorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfNFtdID0gIlwKIGZpbGUgICA6IHByb2dyYW0gcmVhZCBmcm9tIHNjcmlwdCBmaWxlXG5cCiAtICAgICAgOiBwcm9ncmFtIHJlYWQgZnJvbSBzdGRpbiAoZGVmYXVsdDsgaW50ZXJhY3RpdmUgbW9kZSBpZiBhIHR0eSlcblwKIGFyZyAuLi46IGFyZ3VtZW50cyBwYXNzZWQgdG8gcHJvZ3JhbSBpbiBzeXMuYXJndlsxOl1cblxuXApAQCAtODgsMjIgKzg4LDIzIEBACiBQWVRIT05QQVRIICAgOiAnJWxjJy1zZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyBwcmVmaXhlZCB0byB0aGVcblwKICAgICAgICAgICAgICAgIGRlZmF1bHQgbW9kdWxlIHNlYXJjaCBwYXRoLiAgVGhlIHJlc3VsdCBpcyBzeXMucGF0aC5cblwKICI7Ci1zdGF0aWMgY2hhciAqdXNhZ2VfNSA9CitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV81W10gPQogIlBZVEhPTkhPTUUgICA6IGFsdGVybmF0ZSA8cHJlZml4PiBkaXJlY3RvcnkgKG9yIDxwcmVmaXg+JWxjPGV4ZWNfcHJlZml4PikuXG4iCiAiICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgbW9kdWxlIHNlYXJjaCBwYXRoIHVzZXMgJXMuXG4iCiAiUFlUSE9OQ0FTRU9LIDogaWdub3JlIGNhc2UgaW4gJ2ltcG9ydCcgc3RhdGVtZW50cyAoV2luZG93cykuXG4iCiAiUFlUSE9OSU9FTkNPRElORzogRW5jb2RpbmdbOmVycm9yc10gdXNlZCBmb3Igc3RkaW4vc3Rkb3V0L3N0ZGVyci5cbiIKLSJQWVRIT05GQVVMVEhBTkRMRVI6IGR1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzLlxuXAotIjsKLXN0YXRpYyBjaGFyICp1c2FnZV82ID0gIlwKLVBZVEhPTkhBU0hTRUVEOiBpZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAncmFuZG9tJywgYSByYW5kb20gdmFsdWUgaXMgdXNlZFxuXAotICAgdG8gc2VlZCB0aGUgaGFzaGVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuICBJdCBjYW4gYWxzbyBiZVxuXAotICAgc2V0IHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdIHRvIGdldCBoYXNoIHZhbHVlcyB3aXRoIGFcblwKLSAgIHByZWRpY3RhYmxlIHNlZWQuXG5cCi0iOworIlBZVEhPTkZBVUxUSEFORExFUjogZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMuXG4iOworc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfNltdID0KKyJQWVRIT05IQVNIU0VFRDogaWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gJ3JhbmRvbScsIGEgcmFuZG9tIHZhbHVlIGlzIHVzZWRcbiIKKyIgICB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlXG4iCisiICAgc2V0IHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdIHRvIGdldCBoYXNoIHZhbHVlcyB3aXRoIGFcbiIKKyIgICBwcmVkaWN0YWJsZSBzZWVkLlxuIgorIlBZVEhPTk1BTExPQzogc2V0IHRoZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgYW5kL29yIGluc3RhbGwgZGVidWcgaG9va3NcbiIKKyIgICBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMuIFVzZSBQWVRIT05NQUxMT0M9ZGVidWcgdG8gaW5zdGFsbCBkZWJ1Z1xuIgorIiAgIGhvb2tzLlxuIjsKIAogc3RhdGljIGludAotdXNhZ2UoaW50IGV4aXRjb2RlLCB3Y2hhcl90KiBwcm9ncmFtKQordXNhZ2UoaW50IGV4aXRjb2RlLCBjb25zdCB3Y2hhcl90KiBwcm9ncmFtKQogewogICAgIEZJTEUgKmYgPSBleGl0Y29kZSA/IHN0ZGVyciA6IHN0ZG91dDsKIApAQCAtMzQxLDYgKzM0Miw3IEBACiAgICAgaW50IGhlbHAgPSAwOwogICAgIGludCB2ZXJzaW9uID0gMDsKICAgICBpbnQgc2F3X3VuYnVmZmVyZWRfZmxhZyA9IDA7CisgICAgY2hhciAqb3B0OwogICAgIFB5Q29tcGlsZXJGbGFncyBjZjsKICAgICBQeU9iamVjdCAqd2FybmluZ19vcHRpb24gPSBOVUxMOwogICAgIFB5T2JqZWN0ICp3YXJuaW5nX29wdGlvbnMgPSBOVUxMOwpAQCAtMzY1LDYgKzM2NywxMyBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgb3B0ID0gUHlfR0VURU5WKCJQWVRIT05NQUxMT0MiKTsKKyAgICBpZiAoX1B5TWVtX1NldHVwQWxsb2NhdG9ycyhvcHQpIDwgMCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAiRXJyb3IgaW4gUFlUSE9OTUFMTE9DOiB1bmtub3duIGFsbG9jYXRvciBcIiVzXCIhXG4iLCBvcHQpOworICAgICAgICBleGl0KDEpOworICAgIH0KKwogICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDE7CiAgICAgX1B5UmFuZG9tX0luaXQoKTsKIApAQCAtNDczLDcgKzQ4Miw4IEBACiAgICAgICAgICAgICB3YXJuaW5nX29wdGlvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoX1B5T1Nfb3B0YXJnLCAtMSk7CiAgICAgICAgICAgICBpZiAod2FybmluZ19vcHRpb24gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJmYWlsdXJlIGluIGhhbmRsaW5nIG9mIC1XIGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICBQeUxpc3RfQXBwZW5kKHdhcm5pbmdfb3B0aW9ucywgd2FybmluZ19vcHRpb24pOworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQod2FybmluZ19vcHRpb25zLCB3YXJuaW5nX29wdGlvbikgPT0gLTEpCisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZmFpbHVyZSBpbiBoYW5kbGluZyBvZiAtVyBhcmd1bWVudCIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHdhcm5pbmdfb3B0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC02NTQsNyArNjY0LDcgQEAKICAgICAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKHdidWYpOwogCiAgICAgICAgICAgICAvKiBEb24ndCBmcmVlIHdidWYsIHRoZSBhcmd1bWVudCB0byBQeV9TZXRQcm9ncmFtTmFtZQotICAgICAgICAgICAgICogbXVzdCByZW1haW4gdmFsaWQgdW50aWwgdGhlIFB5X0ZpbmFsaXplIGlzIGNhbGxlZC4KKyAgICAgICAgICAgICAqIG11c3QgcmVtYWluIHZhbGlkIHVudGlsIFB5X0ZpbmFsaXplRXggaXMgY2FsbGVkLgogICAgICAgICAgICAgICovCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShhcmd2WzBdKTsKQEAgLTY5Myw3ICs3MDMsOCBAQAogICAgIFB5U3lzX1NldEFyZ3YoYXJnYy1fUHlPU19vcHRpbmQsIGFyZ3YrX1B5T1Nfb3B0aW5kKTsKIAogICAgIGlmICgoUHlfSW5zcGVjdEZsYWcgfHwgKGNvbW1hbmQgPT0gTlVMTCAmJiBmaWxlbmFtZSA9PSBOVUxMICYmIG1vZHVsZSA9PSBOVUxMKSkgJiYKLSAgICAgICAgaXNhdHR5KGZpbGVubyhzdGRpbikpKSB7CisgICAgICAgIGlzYXR0eShmaWxlbm8oc3RkaW4pKSAmJgorICAgICAgICAhUHlfSXNvbGF0ZWRGbGFnKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2OwogICAgICAgICB2ID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJyZWFkbGluZSIpOwogICAgICAgICBpZiAodiA9PSBOVUxMKQpAQCAtNzg1LDcgKzc5NiwxMSBAQAogICAgICAgICBzdHMgPSBQeVJ1bl9BbnlGaWxlRmxhZ3Moc3RkaW4sICI8c3RkaW4+IiwgJmNmKSAhPSAwOwogICAgIH0KIAotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgLyogVmFsdWUgdW5saWtlbHkgdG8gYmUgY29uZnVzZWQgd2l0aCBhIG5vbi1lcnJvciBleGl0IHN0YXR1cyBvcgorICAgICAgICBvdGhlciBzcGVjaWFsIG1lYW5pbmcgKi8KKyAgICAgICAgc3RzID0gMTIwOworICAgIH0KIAogI2lmZGVmIF9fSU5TVVJFX18KICAgICAvKiBJbnN1cmUrKyBpcyBhIG1lbW9yeSBhbmFseXNpcyB0b29sIHRoYXQgYWlkcyBpbiBkaXNjb3ZlcmluZwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYXRobW9kdWxlLmMgYi9Nb2R1bGVzL21hdGhtb2R1bGUuYwppbmRleCBiOTQ1YmQ2Li45NWVhNGY3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21hdGhtb2R1bGUuYworKysgYi9Nb2R1bGVzL21hdGhtb2R1bGUuYwpAQCAtODc1LDcgKzg3NSw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tYXRoXzIoUHlPYmplY3QgKmFyZ3MsIGRvdWJsZSAoKmZ1bmMpIChkb3VibGUsIGRvdWJsZSksIGNoYXIgKmZ1bmNuYW1lKQorbWF0aF8yKFB5T2JqZWN0ICphcmdzLCBkb3VibGUgKCpmdW5jKSAoZG91YmxlLCBkb3VibGUpLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKIHsKICAgICBQeU9iamVjdCAqb3gsICpveTsKICAgICBkb3VibGUgeCwgeSwgcjsKQEAgLTE2NzIsNyArMTY3Miw3IEBACiAgICBpbiB0aGF0IGludCBpcyBsYXJnZXIgdGhhbiBQWV9TU0laRV9UX01BWC4gKi8KIAogc3RhdGljIFB5T2JqZWN0KgotbG9naGVscGVyKFB5T2JqZWN0KiBhcmcsIGRvdWJsZSAoKmZ1bmMpKGRvdWJsZSksIGNoYXIgKmZ1bmNuYW1lKQorbG9naGVscGVyKFB5T2JqZWN0KiBhcmcsIGRvdWJsZSAoKmZ1bmMpKGRvdWJsZSksIGNvbnN0IGNoYXIgKmZ1bmNuYW1lKQogewogICAgIC8qIElmIGl0IGlzIGludCwgZG8gaXQgb3Vyc2VsdmVzLiAqLwogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewpAQCAtMjE0NCw2ICsyMTQ0LDcgQEAKIAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAicGkiLCBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9QSSkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX0UpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInRhdSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1RBVSkpOyAgLyogMnBpICovCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJpbmYiLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9pbmYoKSkpOwogI2lmICFkZWZpbmVkKFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIpIHx8IGRlZmluZWQoUHlfTkFOKQogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmFuIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1fbmFuKCkpKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWQ1bW9kdWxlLmMgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCmluZGV4IGY5NGFjYzcuLjA0YmMwNmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWQ1bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwpAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgU0laRU9GX0lOVCA9PSA0CiB0eXBlZGVmIHVuc2lnbmVkIGludCBNRDVfSU5UMzI7IC8qIDMyLWJpdCBpbnRlZ2VyICovCi10eXBlZGVmIFBZX0xPTkdfTE9ORyBNRDVfSU5UNjQ7IC8qIDY0LWJpdCBpbnRlZ2VyICovCit0eXBlZGVmIGxvbmcgbG9uZyBNRDVfSU5UNjQ7IC8qIDY0LWJpdCBpbnRlZ2VyICovCiAjZWxzZQogLyogbm90IGRlZmluZWQuIGNvbXBpbGF0aW9uIHdpbGwgZGllLiAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21tYXBtb2R1bGUuYyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCmluZGV4IDZlMmRiNjEuLjMwMDg0NDQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbW1hcG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCkBAIC05Myw3ICs5Myw3IEBACiAgICAgUHlfc3NpemVfdCAgc2l6ZTsKICAgICBQeV9zc2l6ZV90ICBwb3M7ICAgIC8qIHJlbGF0aXZlIHRvIG9mZnNldCAqLwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQWV9MT05HX0xPTkcgb2Zmc2V0OworICAgIGxvbmcgbG9uZyBvZmZzZXQ7CiAjZWxzZQogICAgIG9mZl90ICAgICAgIG9mZnNldDsKICNlbmRpZgpAQCAtMzk1LDggKzM5NSw3IEBACiAgICAgbWVtY3B5KCZzZWxmLT5kYXRhW3NlbGYtPnBvc10sIGRhdGEuYnVmLCBkYXRhLmxlbik7CiAgICAgc2VsZi0+cG9zICs9IGRhdGEubGVuOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGRhdGEubGVuKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQzMiw3ICs0MzEsNyBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoc2VsZi0+ZmlsZV9oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgRFdPUkQgbG93LGhpZ2g7Ci0gICAgICAgIFBZX0xPTkdfTE9ORyBzaXplOworICAgICAgICBsb25nIGxvbmcgc2l6ZTsKICAgICAgICAgbG93ID0gR2V0RmlsZVNpemUoc2VsZi0+ZmlsZV9oYW5kbGUsICZoaWdoKTsKICAgICAgICAgaWYgKGxvdyA9PSBJTlZBTElEX0ZJTEVfU0laRSkgewogICAgICAgICAgICAgLyogSXQgbWlnaHQgYmUgdGhhdCB0aGUgZnVuY3Rpb24gYXBwZWFycyB0byBoYXZlIGZhaWxlZCwKQEAgLTQ0Myw3ICs0NDIsNyBAQAogICAgICAgICB9CiAgICAgICAgIGlmICghaGlnaCAmJiBsb3cgPCBMT05HX01BWCkKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpbG93KTsKLSAgICAgICAgc2l6ZSA9ICgoKFBZX0xPTkdfTE9ORyloaWdoKTw8MzIpICsgbG93OworICAgICAgICBzaXplID0gKCgobG9uZyBsb25nKWhpZ2gpPDwzMikgKyBsb3c7CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHNpemUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+c2l6ZSk7CkBAIC0xMjI1LDcgKzEyMjQsNyBAQAogCiAvKiBBIG5vdGUgb24gc2l6ZXMgYW5kIG9mZnNldHM6IHdoaWxlIHRoZSBhY3R1YWwgbWFwIHNpemUgbXVzdCBob2xkIGluIGEKICAgIFB5X3NzaXplX3QsIGJvdGggdGhlIHRvdGFsIGZpbGUgc2l6ZSBhbmQgdGhlIHN0YXJ0IG9mZnNldCBjYW4gYmUgbG9uZ2VyCi0gICB0aGFuIGEgUHlfc3NpemVfdCwgc28gd2UgdXNlIFBZX0xPTkdfTE9ORyB3aGljaCBpcyBhbHdheXMgNjQtYml0LgorICAgdGhhbiBhIFB5X3NzaXplX3QsIHNvIHdlIHVzZSBsb25nIGxvbmcgd2hpY2ggaXMgYWx3YXlzIDY0LWJpdC4KICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjMzLDcgKzEyMzIsNyBAQAogewogICAgIG1tYXBfb2JqZWN0ICptX29iajsKICAgICBQeV9zc2l6ZV90IG1hcF9zaXplOwotICAgIFBZX0xPTkdfTE9ORyBvZmZzZXQgPSAwLCBzaXplOworICAgIGxvbmcgbG9uZyBvZmZzZXQgPSAwLCBzaXplOwogICAgIERXT1JEIG9mZl9oaTsgICAgICAgLyogdXBwZXIgMzIgYml0cyBvZiBvZmZzZXQgKi8KICAgICBEV09SRCBvZmZfbG87ICAgICAgIC8qIGxvd2VyIDMyIGJpdHMgb2Ygb2Zmc2V0ICovCiAgICAgRFdPUkQgc2l6ZV9oaTsgICAgICAvKiB1cHBlciAzMiBiaXRzIG9mIHNpemUgKi8KQEAgLTEyOTQsMTAgKzEyOTMsNiBAQAogICAgICAqLwogICAgIGlmIChmaWxlbm8gIT0gLTEgJiYgZmlsZW5vICE9IDApIHsKICAgICAgICAgLyogRW5zdXJlIHRoYXQgZmlsZW5vIGlzIHdpdGhpbiB0aGUgQ1JUJ3MgdmFsaWQgcmFuZ2UgKi8KLSAgICAgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmlsZW5vKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgICAgICBmaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZW5vKTsKICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTEzNDcsNyArMTM0Miw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGR3RXJyKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc2l6ZSA9ICgoKFBZX0xPTkdfTE9ORykgaGlnaCkgPDwgMzIpICsgbG93OworICAgICAgICAgICAgc2l6ZSA9ICgoKGxvbmcgbG9uZykgaGlnaCkgPDwgMzIpICsgbG93OwogICAgICAgICAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IG1tYXAgYW4gZW1wdHkgZmlsZSIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9uaXNtb2R1bGUuYyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKaW5kZXggNjRlYjVkYi4uYjZhODU1YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9uaXNtb2R1bGUuYworKysgYi9Nb2R1bGVzL25pc21vZHVsZS5jCkBAIC03NiwxMSArNzYsNyBAQAogCiAgICAgKnBmaXggPSAwOwogICAgIGZvciAoaT0wOyBhbGlhc2VzW2ldLmFsaWFzICE9IDBMOyBpKyspIHsKLSAgICAgICAgaWYgKCFzdHJjbXAgKGFsaWFzZXNbaV0uYWxpYXMsIG1hcCkpIHsKLSAgICAgICAgICAgICpwZml4ID0gYWxpYXNlc1tpXS5maXg7Ci0gICAgICAgICAgICByZXR1cm4gYWxpYXNlc1tpXS5tYXA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFzdHJjbXAgKGFsaWFzZXNbaV0ubWFwLCBtYXApKSB7CisgICAgICAgIGlmICghc3RyY21wIChhbGlhc2VzW2ldLmFsaWFzLCBtYXApIHx8ICFzdHJjbXAgKGFsaWFzZXNbaV0ubWFwLCBtYXApKSB7CiAgICAgICAgICAgICAqcGZpeCA9IGFsaWFzZXNbaV0uZml4OwogICAgICAgICAgICAgcmV0dXJuIGFsaWFzZXNbaV0ubWFwOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMgYi9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKaW5kZXggZDJmZDVjOC4uNDc5NjIwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCisrKyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwpAQCAtMzEsOSArMzEsMTMgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaWZkZWYgX19BTkRST0lEX18KKyNpbmNsdWRlIDxsaW51eC9zb3VuZGNhcmQuaD4KKyNlbHNlCiAjaW5jbHVkZSA8c3lzL3NvdW5kY2FyZC5oPgorI2VuZGlmCiAKLSNpZiBkZWZpbmVkKGxpbnV4KQorI2lmZGVmIF9fbGludXhfXwogCiAjaWZuZGVmIEhBVkVfU1RESU5UX0gKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50MzJfdDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvb3ZlcmxhcHBlZC5jIGIvTW9kdWxlcy9vdmVybGFwcGVkLmMKaW5kZXggZjg1ZTViYy4uMGFhODY1NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9vdmVybGFwcGVkLmMKKysrIGIvTW9kdWxlcy9vdmVybGFwcGVkLmMKQEAgLTk3MywyOCArOTczLDI4IEBACiBzdGF0aWMgaW50CiBwYXJzZV9hZGRyZXNzKFB5T2JqZWN0ICpvYmosIFNPQ0tBRERSICpBZGRyZXNzLCBpbnQgTGVuZ3RoKQogewotICAgIGNoYXIgKkhvc3Q7CisgICAgUHlfVU5JQ09ERSAqSG9zdDsKICAgICB1bnNpZ25lZCBzaG9ydCBQb3J0OwogICAgIHVuc2lnbmVkIGxvbmcgRmxvd0luZm87CiAgICAgdW5zaWduZWQgbG9uZyBTY29wZUlkOwogCiAgICAgbWVtc2V0KEFkZHJlc3MsIDAsIExlbmd0aCk7CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShvYmosICJzSCIsICZIb3N0LCAmUG9ydCkpCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUob2JqLCAidUgiLCAmSG9zdCwgJlBvcnQpKQogICAgIHsKICAgICAgICAgQWRkcmVzcy0+c2FfZmFtaWx5ID0gQUZfSU5FVDsKLSAgICAgICAgaWYgKFdTQVN0cmluZ1RvQWRkcmVzc0EoSG9zdCwgQUZfSU5FVCwgTlVMTCwgQWRkcmVzcywgJkxlbmd0aCkgPCAwKSB7CisgICAgICAgIGlmIChXU0FTdHJpbmdUb0FkZHJlc3NXKEhvc3QsIEFGX0lORVQsIE5VTEwsIEFkZHJlc3MsICZMZW5ndGgpIDwgMCkgewogICAgICAgICAgICAgU2V0RnJvbVdpbmRvd3NFcnIoV1NBR2V0TGFzdEVycm9yKCkpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgICgoU09DS0FERFJfSU4qKUFkZHJlc3MpLT5zaW5fcG9ydCA9IGh0b25zKFBvcnQpOwogICAgICAgICByZXR1cm4gTGVuZ3RoOwogICAgIH0KLSAgICBlbHNlIGlmIChQeUFyZ19QYXJzZVR1cGxlKG9iaiwgInNIa2siLCAmSG9zdCwgJlBvcnQsICZGbG93SW5mbywgJlNjb3BlSWQpKQorICAgIGVsc2UgaWYgKFB5QXJnX1BhcnNlVHVwbGUob2JqLCAidUhrayIsICZIb3N0LCAmUG9ydCwgJkZsb3dJbmZvLCAmU2NvcGVJZCkpCiAgICAgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBBZGRyZXNzLT5zYV9mYW1pbHkgPSBBRl9JTkVUNjsKLSAgICAgICAgaWYgKFdTQVN0cmluZ1RvQWRkcmVzc0EoSG9zdCwgQUZfSU5FVDYsIE5VTEwsIEFkZHJlc3MsICZMZW5ndGgpIDwgMCkgeworICAgICAgICBpZiAoV1NBU3RyaW5nVG9BZGRyZXNzVyhIb3N0LCBBRl9JTkVUNiwgTlVMTCwgQWRkcmVzcywgJkxlbmd0aCkgPCAwKSB7CiAgICAgICAgICAgICBTZXRGcm9tV2luZG93c0VycihXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvcGFyc2VybW9kdWxlLmMgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCmluZGV4IDY0NzFiOGUuLjgyNzcwYTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYwpAQCAtNTMsNyArNTMsNyBAQAogLyogIFN0cmluZyBjb25zdGFudHMgdXNlZCB0byBpbml0aWFsaXplIG1vZHVsZSBhdHRyaWJ1dGVzLgogICoKICAqLwotc3RhdGljIGNoYXIgcGFyc2VyX2NvcHlyaWdodF9zdHJpbmdbXSA9CitzdGF0aWMgY29uc3QgY2hhciBwYXJzZXJfY29weXJpZ2h0X3N0cmluZ1tdID0KICJDb3B5cmlnaHQgMTk5NS0xOTk2IGJ5IFZpcmdpbmlhIFBvbHl0ZWNobmljIEluc3RpdHV0ZSAmIFN0YXRlXG5cCiBVbml2ZXJzaXR5LCBCbGFja3NidXJnLCBWaXJnaW5pYSwgVVNBLCBhbmQgRnJlZCBMLiBEcmFrZSwgSnIuLCBSZXN0b24sXG5cCiBWaXJnaW5pYSwgVVNBLiAgUG9ydGlvbnMgY29weXJpZ2h0IDE5OTEtMTk5NSBieSBTdGljaHRpbmcgTWF0aGVtYXRpc2NoXG5cCkBAIC02Myw3ICs2Myw3IEBACiBQeURvY19TVFJWQVIocGFyc2VyX2RvY19zdHJpbmcsCiAiVGhpcyBpcyBhbiBpbnRlcmZhY2UgdG8gUHl0aG9uJ3MgaW50ZXJuYWwgcGFyc2VyLiIpOwogCi1zdGF0aWMgY2hhciBwYXJzZXJfdmVyc2lvbl9zdHJpbmdbXSA9ICIwLjUiOworc3RhdGljIGNvbnN0IGNoYXIgcGFyc2VyX3ZlcnNpb25fc3RyaW5nW10gPSAiMC41IjsKIAogCiB0eXBlZGVmIFB5T2JqZWN0KiAoKlNlcU1ha2VyKSAoUHlfc3NpemVfdCBsZW5ndGgpOwpAQCAtNTc4LDEzICs1NzgsMTMgQEAKIH0KIAogCi0vKiAgZXJyX3N0cmluZyhjaGFyKiBtZXNzYWdlKQorLyogIGVycl9zdHJpbmcoY29uc3QgY2hhciogbWVzc2FnZSkKICAqCiAgKiAgU2V0cyB0aGUgZXJyb3Igc3RyaW5nIGZvciBhbiBleGNlcHRpb24gb2YgdHlwZSBQYXJzZXJFcnJvci4KICAqCiAgKi8KIHN0YXRpYyB2b2lkCi1lcnJfc3RyaW5nKGNoYXIgKm1lc3NhZ2UpCitlcnJfc3RyaW5nKGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgUHlFcnJfU2V0U3RyaW5nKHBhcnNlcl9lcnJvciwgbWVzc2FnZSk7CiB9CkBAIC01OTcsNyArNTk3LDcgQEAKICAqCiAgKi8KIHN0YXRpYyBQeU9iamVjdCoKLXBhcnNlcl9kb19wYXJzZShQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3LCBjaGFyICphcmdzcGVjLCBpbnQgdHlwZSkKK3BhcnNlcl9kb19wYXJzZShQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3LCBjb25zdCBjaGFyICphcmdzcGVjLCBpbnQgdHlwZSkKIHsKICAgICBjaGFyKiAgICAgc3RyaW5nID0gMDsKICAgICBQeU9iamVjdCogcmVzICAgID0gMDsKQEAgLTY3MCw5ICs2NzAsNzUgQEAKIAogCiBzdGF0aWMgbm9kZSogYnVpbGRfbm9kZV90cmVlKFB5T2JqZWN0ICp0dXBsZSk7Ci1zdGF0aWMgaW50ICAgdmFsaWRhdGVfZXhwcl90cmVlKG5vZGUgKnRyZWUpOwotc3RhdGljIGludCAgIHZhbGlkYXRlX2ZpbGVfaW5wdXQobm9kZSAqdHJlZSk7Ci1zdGF0aWMgaW50ICAgdmFsaWRhdGVfZW5jb2RpbmdfZGVjbChub2RlICp0cmVlKTsKKworc3RhdGljIGludAordmFsaWRhdGVfbm9kZShub2RlICp0cmVlKQoreworICAgIGludCB0eXBlID0gVFlQRSh0cmVlKTsKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGRmYSAqbnRfZGZhOworICAgIHN0YXRlICpkZmFfc3RhdGU7CisgICAgaW50IHBvcywgYXJjOworCisgICAgYXNzZXJ0KElTTk9OVEVSTUlOQUwodHlwZSkpOworICAgIHR5cGUgLT0gTlRfT0ZGU0VUOworICAgIGlmICh0eXBlID49IF9QeVBhcnNlcl9HcmFtbWFyLmdfbmRmYXMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwgIlVucmVjb2duaXplZCBub2RlIHR5cGUgJWQuIiwgVFlQRSh0cmVlKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBudF9kZmEgPSAmX1B5UGFyc2VyX0dyYW1tYXIuZ19kZmFbdHlwZV07CisgICAgUkVRKHRyZWUsIG50X2RmYS0+ZF90eXBlKTsKKworICAgIC8qIFJ1biB0aGUgREZBIGZvciB0aGlzIG5vbnRlcm1pbmFsLiAqLworICAgIGRmYV9zdGF0ZSA9ICZudF9kZmEtPmRfc3RhdGVbbnRfZGZhLT5kX2luaXRpYWxdOworICAgIGZvciAocG9zID0gMDsgcG9zIDwgbmNoOyArK3BvcykgeworICAgICAgICBub2RlICpjaCA9IENISUxEKHRyZWUsIHBvcyk7CisgICAgICAgIGludCBjaF90eXBlID0gVFlQRShjaCk7CisgICAgICAgIGZvciAoYXJjID0gMDsgYXJjIDwgZGZhX3N0YXRlLT5zX25hcmNzOyArK2FyYykgeworICAgICAgICAgICAgc2hvcnQgYV9sYWJlbCA9IGRmYV9zdGF0ZS0+c19hcmNbYXJjXS5hX2xibDsKKyAgICAgICAgICAgIGFzc2VydChhX2xhYmVsIDwgX1B5UGFyc2VyX0dyYW1tYXIuZ19sbC5sbF9ubGFiZWxzKTsKKyAgICAgICAgICAgIGlmIChfUHlQYXJzZXJfR3JhbW1hci5nX2xsLmxsX2xhYmVsW2FfbGFiZWxdLmxiX3R5cGUgPT0gY2hfdHlwZSkgeworICAgICAJICAgICAgICAvKiBUaGUgY2hpbGQgaXMgYWNjZXB0YWJsZTsgaWYgbm9uLXRlcm1pbmFsLCB2YWxpZGF0ZSBpdCByZWN1cnNpdmVseS4gKi8KKyAgICAgICAgICAgICAgICBpZiAoSVNOT05URVJNSU5BTChjaF90eXBlKSAmJiAhdmFsaWRhdGVfbm9kZShjaCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICAgICAgLyogVXBkYXRlIHRoZSBzdGF0ZSwgYW5kIG1vdmUgb24gdG8gdGhlIG5leHQgY2hpbGQuICovCisgICAgICAgICAgICAgICAgZGZhX3N0YXRlID0gJm50X2RmYS0+ZF9zdGF0ZVtkZmFfc3RhdGUtPnNfYXJjW2FyY10uYV9hcnJvd107CisgICAgICAgICAgICAgICAgZ290byBhcmNfZm91bmQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogV2hhdCB3b3VsZCB0aGlzIHN0YXRlIGhhdmUgYWNjZXB0ZWQ/ICovCisgICAgICAgIHsKKyAgICAgICAgICAgIHNob3J0IGFfbGFiZWwgPSBkZmFfc3RhdGUtPnNfYXJjLT5hX2xibDsKKyAgICAgICAgICAgIGludCBuZXh0X3R5cGU7CisgICAgICAgICAgICBpZiAoIWFfbGFiZWwpIC8qIFdvdWxkbid0IGFjY2VwdCBhbnkgbW9yZSBjaGlsZHJlbiAqLworICAgICAgICAgICAgICAgIGdvdG8gaWxsZWdhbF9udW1fY2hpbGRyZW47CisKKyAgICAgICAgICAgIG5leHRfdHlwZSA9IF9QeVBhcnNlcl9HcmFtbWFyLmdfbGwubGxfbGFiZWxbYV9sYWJlbF0ubGJfdHlwZTsKKyAgICAgICAgICAgIGlmIChJU05PTlRFUk1JTkFMKG5leHRfdHlwZSkpCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwgIkV4cGVjdGVkIG5vZGUgdHlwZSAlZCwgZ290ICVkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdHlwZSwgY2hfdHlwZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwgIklsbGVnYWwgdGVybWluYWw6IGV4cGVjdGVkICVzLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVBhcnNlcl9Ub2tlbk5hbWVzW25leHRfdHlwZV0pOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworYXJjX2ZvdW5kOgorICAgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgLyogQXJlIHdlIGluIGEgZmluYWwgc3RhdGU/IElmIHNvLCByZXR1cm4gMSBmb3Igc3VjY2Vzc2Z1bCB2YWxpZGF0aW9uLiAqLworICAgIGZvciAoYXJjID0gMDsgYXJjIDwgZGZhX3N0YXRlLT5zX25hcmNzOyArK2FyYykgeworICAgICAgICBpZiAoIWRmYV9zdGF0ZS0+c19hcmNbYXJjXS5hX2xibCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKK2lsbGVnYWxfbnVtX2NoaWxkcmVuOgorICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCisgICAgICAgICAgICAgICAgICJJbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgJXMgbm9kZS4iLCBudF9kZmEtPmRfbmFtZSk7CisgICAgcmV0dXJuIDA7Cit9CiAKIC8qICBQeU9iamVjdCogcGFyc2VyX3R1cGxlMnN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKICAqCkBAIC02ODEsNyArNzQ3LDcgQEAKICAqICB0dXBsZSBjYW4gYmUgdmFsaWRhdGVkLiAgSXQgZG9lcyB0aGlzIGJ5IGNoZWNraW5nIHRoZSBmaXJzdCBjb2RlIG9mIHRoZQogICogIHR1cGxlLCBhbmQsIGlmIGFjY2VwdGFibGUsIGJ1aWxkcyB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uICBJZiB0aGlzCiAgKiAgc3RlcCBzdWNjZWVkcywgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIGlzIHZhbGlkYXRlZCBhcyBmdWxseSBhcwotICogIHBvc3NpYmxlIHdpdGggdGhlIHZhcmlvdXMgdmFsaWRhdGVfKigpIHJvdXRpbmVzIGRlZmluZWQgYmVsb3cuCisgKiAgcG9zc2libGUgd2l0aCB0aGUgcmVjdXJzaXZlIHZhbGlkYXRlX25vZGUoKSByb3V0aW5lIGRlZmluZWQgYWJvdmUuCiAgKgogICogIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjaGFuZ2VkIGlmIHN1cHBvcnQgaXMgdG8gYmUgYWRkZWQgZm9yIFB5U1RfRlJBR01FTlQKICAqICBTVCBvYmplY3RzLgpAQCAtNzEwLDMzICs3NzYsMzUgQEAKICAgICAgKi8KICAgICB0cmVlID0gYnVpbGRfbm9kZV90cmVlKHR1cGxlKTsKICAgICBpZiAodHJlZSAhPSAwKSB7Ci0gICAgICAgIGludCBzdGFydF9zeW0gPSBUWVBFKHRyZWUpOwotICAgICAgICBpZiAoc3RhcnRfc3ltID09IGV2YWxfaW5wdXQpIHsKKyAgICAgICAgbm9kZSAqdmFsaWRhdGlvbl9yb290ID0gdHJlZTsKKyAgICAgICAgaW50IHRyZWVfdHlwZSA9IDA7CisgICAgICAgIHN3aXRjaCAoVFlQRSh0cmVlKSkgeworICAgICAgICBjYXNlIGV2YWxfaW5wdXQ6CiAgICAgICAgICAgICAvKiAgTWlnaHQgYmUgYW4gZXZhbCBmb3JtLiAgKi8KLSAgICAgICAgICAgIGlmICh2YWxpZGF0ZV9leHByX3RyZWUodHJlZSkpCi0gICAgICAgICAgICAgICAgc3QgPSBwYXJzZXJfbmV3c3RvYmplY3QodHJlZSwgUHlTVF9FWFBSKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzdGFydF9zeW0gPT0gZmlsZV9pbnB1dCkgewotICAgICAgICAgICAgLyogIFRoaXMgbG9va3MgbGlrZSBhbiBleGVjIGZvcm0gc28gZmFyLiAgKi8KLSAgICAgICAgICAgIGlmICh2YWxpZGF0ZV9maWxlX2lucHV0KHRyZWUpKQotICAgICAgICAgICAgICAgIHN0ID0gcGFyc2VyX25ld3N0b2JqZWN0KHRyZWUsIFB5U1RfU1VJVEUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5Tm9kZV9GcmVlKHRyZWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN0YXJ0X3N5bSA9PSBlbmNvZGluZ19kZWNsKSB7CisgICAgICAgICAgICB0cmVlX3R5cGUgPSBQeVNUX0VYUFI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBlbmNvZGluZ19kZWNsOgogICAgICAgICAgICAgLyogVGhpcyBsb29rcyBsaWtlIGFuIGVuY29kaW5nX2RlY2wgc28gZmFyLiAqLwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlX2VuY29kaW5nX2RlY2wodHJlZSkpCi0gICAgICAgICAgICAgICAgc3QgPSBwYXJzZXJfbmV3c3RvYmplY3QodHJlZSwgUHlTVF9TVUlURSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlOb2RlX0ZyZWUodHJlZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoTkNIKHRyZWUpICE9IDEpCisgICAgICAgICAgICAgICAgZXJyX3N0cmluZygiRXJyb3IgUGFyc2luZyBlbmNvZGluZ19kZWNsIik7CisgICAgICAgICAgICB2YWxpZGF0aW9uX3Jvb3QgPSBDSElMRCh0cmVlLCAwKTsKKyAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAqLworICAgICAgICBjYXNlIGZpbGVfaW5wdXQ6CisgICAgICAgICAgICAvKiAgVGhpcyBsb29rcyBsaWtlIGFuIGV4ZWMgZm9ybSBzbyBmYXIuICAqLworCisgICAgICAgICAgICB0cmVlX3R5cGUgPSBQeVNUX1NVSVRFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvKiAgVGhpcyBpcyBhIGZyYWdtZW50LCBhdCBiZXN0LiAqLwogICAgICAgICAgICAgUHlOb2RlX0ZyZWUodHJlZSk7CiAgICAgICAgICAgICBlcnJfc3RyaW5nKCJwYXJzZSB0cmVlIGRvZXMgbm90IHVzZSBhIHZhbGlkIHN0YXJ0IHN5bWJvbCIpOworICAgICAgICAgICAgcmV0dXJuICgwKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICh2YWxpZGF0ZV9ub2RlKHZhbGlkYXRpb25fcm9vdCkpCisgICAgICAgICAgICBzdCA9IHBhcnNlcl9uZXdzdG9iamVjdCh0cmVlLCB0cmVlX3R5cGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKICAgICB9CiAgICAgLyogIE1ha2Ugc3VyZSB3ZSByYWlzZSBhbiBleGNlcHRpb24gb24gYWxsIGVycm9ycy4gIFdlIHNob3VsZCBuZXZlcgogICAgICAqICBnZXQgdGhpcywgYnV0IHdlJ2QgZG8gd2VsbCB0byBiZSBzdXJlIHNvbWV0aGluZyBpcyBkb25lLgpAQCAtOTgxLDI0MzMgKzEwNDksNiBAQAogfQogCiAKLS8qCi0gKiAgVmFsaWRhdGlvbiByb3V0aW5lcyB1c2VkIHdpdGhpbiB0aGUgdmFsaWRhdGlvbiBzZWN0aW9uOgotICovCi1zdGF0aWMgaW50IHZhbGlkYXRlX3Rlcm1pbmFsKG5vZGUgKnRlcm1pbmFsLCBpbnQgdHlwZSwgY2hhciAqc3RyaW5nKTsKLQotI2RlZmluZSB2YWxpZGF0ZV9hbXBlcnNhbmQoY2gpICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICBBTVBFUiwgIiYiKQotI2RlZmluZSB2YWxpZGF0ZV9jaXJjdW1mbGV4KGNoKSB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgQ0lSQ1VNRkxFWCwgIl4iKQotI2RlZmluZSB2YWxpZGF0ZV9jb2xvbihjaCkgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICBDT0xPTiwgIjoiKQotI2RlZmluZSB2YWxpZGF0ZV9jb21tYShjaCkgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICBDT01NQSwgIiwiKQotI2RlZmluZSB2YWxpZGF0ZV9kZWRlbnQoY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgIERFREVOVCwgIiIpCi0jZGVmaW5lIHZhbGlkYXRlX2VxdWFsKGNoKSAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIEVRVUFMLCAiPSIpCi0jZGVmaW5lIHZhbGlkYXRlX2luZGVudChjaCkgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgSU5ERU5ULCAoY2hhciopTlVMTCkKLSNkZWZpbmUgdmFsaWRhdGVfbHBhcmVuKGNoKSAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgIExQQVIsICIoIikKLSNkZWZpbmUgdmFsaWRhdGVfbmV3bGluZShjaCkgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgIE5FV0xJTkUsIChjaGFyKilOVUxMKQotI2RlZmluZSB2YWxpZGF0ZV9ycGFyZW4oY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgUlBBUiwgIikiKQotI2RlZmluZSB2YWxpZGF0ZV9zZW1pKGNoKSAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgU0VNSSwgIjsiKQotI2RlZmluZSB2YWxpZGF0ZV9zdGFyKGNoKSAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgU1RBUiwgIioiKQotI2RlZmluZSB2YWxpZGF0ZV92YmFyKGNoKSAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgVkJBUiwgInwiKQotI2RlZmluZSB2YWxpZGF0ZV9kb3VibGVzdGFyKGNoKSB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgRE9VQkxFU1RBUiwgIioqIikKLSNkZWZpbmUgdmFsaWRhdGVfZG90KGNoKSAgICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgICBET1QsICIuIikKLSNkZWZpbmUgdmFsaWRhdGVfYXQoY2gpICAgICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgICAgQVQsICJAIikKLSNkZWZpbmUgdmFsaWRhdGVfcmFycm93KGNoKSAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICBSQVJST1csICItPiIpCi0jZGVmaW5lIHZhbGlkYXRlX25hbWUoY2gsIHN0cikgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBOQU1FLCBzdHIpCi0KLSNkZWZpbmUgVkFMSURBVEVSKG4pICAgIHN0YXRpYyBpbnQgdmFsaWRhdGVfIyNuKG5vZGUgKnRyZWUpCi0KLVZBTElEQVRFUihub2RlKTsgICAgICAgICAgICAgICAgVkFMSURBVEVSKHNtYWxsX3N0bXQpOwotVkFMSURBVEVSKGNsYXNzKTsgICAgICAgICAgICAgICBWQUxJREFURVIobm9kZSk7Ci1WQUxJREFURVIocGFyYW1ldGVycyk7ICAgICAgICAgIFZBTElEQVRFUihzdWl0ZSk7Ci1WQUxJREFURVIodGVzdGxpc3QpOyAgICAgICAgICAgIFZBTElEQVRFUih2YXJhcmdzbGlzdCk7Ci1WQUxJREFURVIodmZwZGVmKTsKLVZBTElEQVRFUihzdG10KTsgICAgICAgICAgICAgICAgVkFMSURBVEVSKHNpbXBsZV9zdG10KTsKLVZBTElEQVRFUihleHByX3N0bXQpOyAgICAgICAgICAgVkFMSURBVEVSKHBvd2VyKTsKLVZBTElEQVRFUihkZWxfc3RtdCk7Ci1WQUxJREFURVIocmV0dXJuX3N0bXQpOyAgICAgICAgIFZBTElEQVRFUihyYWlzZV9zdG10KTsKLVZBTElEQVRFUihpbXBvcnRfc3RtdCk7ICAgICAgICAgVkFMSURBVEVSKGltcG9ydF9zdG10KTsKLVZBTElEQVRFUihpbXBvcnRfbmFtZSk7ICAgICAgICAgVkFMSURBVEVSKHlpZWxkX3N0bXQpOwotVkFMSURBVEVSKGdsb2JhbF9zdG10KTsgICAgICAgICBWQUxJREFURVIobm9ubG9jYWxfc3RtdCk7Ci1WQUxJREFURVIoYXNzZXJ0X3N0bXQpOwotVkFMSURBVEVSKGNvbXBvdW5kX3N0bXQpOyAgICAgICBWQUxJREFURVIodGVzdF9vcl9zdGFyX2V4cHIpOwotVkFMSURBVEVSKHdoaWxlKTsgICAgICAgICAgICAgICBWQUxJREFURVIoZm9yKTsKLVZBTElEQVRFUih0cnkpOyAgICAgICAgICAgICAgICAgVkFMSURBVEVSKGV4Y2VwdF9jbGF1c2UpOwotVkFMSURBVEVSKHRlc3QpOyAgICAgICAgICAgICAgICBWQUxJREFURVIoYW5kX3Rlc3QpOwotVkFMSURBVEVSKG5vdF90ZXN0KTsgICAgICAgICAgICBWQUxJREFURVIoY29tcGFyaXNvbik7Ci1WQUxJREFURVIoY29tcF9vcCk7Ci1WQUxJREFURVIoc3Rhcl9leHByKTsgICAgICAgICAgIFZBTElEQVRFUihleHByKTsKLVZBTElEQVRFUih4b3JfZXhwcik7ICAgICAgICAgICAgVkFMSURBVEVSKGFuZF9leHByKTsKLVZBTElEQVRFUihzaGlmdF9leHByKTsgICAgICAgICAgVkFMSURBVEVSKGFyaXRoX2V4cHIpOwotVkFMSURBVEVSKHRlcm0pOyAgICAgICAgICAgICAgICBWQUxJREFURVIoZmFjdG9yKTsKLVZBTElEQVRFUihhdG9tKTsgICAgICAgICAgICAgICAgVkFMSURBVEVSKGxhbWJkZWYpOwotVkFMSURBVEVSKHRyYWlsZXIpOyAgICAgICAgICAgICBWQUxJREFURVIoc3Vic2NyaXB0KTsKLVZBTElEQVRFUihzdWJzY3JpcHRsaXN0KTsgICAgICAgVkFMSURBVEVSKHNsaWNlb3ApOwotVkFMSURBVEVSKGV4cHJsaXN0KTsgICAgICAgICAgICBWQUxJREFURVIoZGljdG9yc2V0bWFrZXIpOwotVkFMSURBVEVSKGFyZ2xpc3QpOyAgICAgICAgICAgICBWQUxJREFURVIoYXJndW1lbnQpOwotVkFMSURBVEVSKGNvbXBfZm9yKTsKLVZBTElEQVRFUihjb21wX2l0ZXIpOyAgICAgICAgICAgVkFMSURBVEVSKGNvbXBfaWYpOwotVkFMSURBVEVSKHRlc3RsaXN0X2NvbXApOyAgICAgICBWQUxJREFURVIoeWllbGRfZXhwcik7Ci1WQUxJREFURVIob3JfdGVzdCk7Ci1WQUxJREFURVIodGVzdF9ub2NvbmQpOyAgICAgICAgIFZBTElEQVRFUihsYW1iZGVmX25vY29uZCk7Ci1WQUxJREFURVIoeWllbGRfYXJnKTsKLVZBTElEQVRFUihhc3luY19mdW5jZGVmKTsgICAgICAgVkFMSURBVEVSKGFzeW5jX3N0bXQpOwotVkFMSURBVEVSKGF0b21fZXhwcik7Ci0KLSN1bmRlZiBWQUxJREFURVIKLQotI2RlZmluZSBpc19ldmVuKG4pICAgICAgKCgobikgJiAxKSA9PSAwKQotI2RlZmluZSBpc19vZGQobikgICAgICAgKCgobikgJiAxKSA9PSAxKQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX250eXBlKG5vZGUgKm4sIGludCB0KQotewotICAgIGlmIChUWVBFKG4pICE9IHQpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwgIkV4cGVjdGVkIG5vZGUgdHlwZSAlZCwgZ290ICVkLiIsCi0gICAgICAgICAgICAgICAgICAgICB0LCBUWVBFKG4pKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi0KLS8qICBWZXJpZmllcyB0aGF0IHRoZSBudW1iZXIgb2YgY2hpbGQgbm9kZXMgaXMgZXhhY3RseSAnbnVtJywgcmFpc2luZwotICogIGFuIGV4Y2VwdGlvbiBpZiBpdCBpc24ndC4gIFRoZSBleGNlcHRpb24gbWVzc2FnZSBkb2VzIG5vdCBpbmRpY2F0ZQotICogIHRoZSBleGFjdCBudW1iZXIgb2Ygbm9kZXMsIGFsbG93aW5nIHRoaXMgdG8gYmUgdXNlZCB0byByYWlzZSB0aGUKLSAqICAicmlnaHQiIGV4Y2VwdGlvbiB3aGVuIHRoZSB3cm9uZyBudW1iZXIgb2Ygbm9kZXMgaXMgcHJlc2VudCBpbiBhCi0gKiAgc3BlY2lmaWMgdmFyaWFudCBvZiBhIHN0YXRlbWVudCdzIHN5bnRheC4gIFRoaXMgaXMgY29tbW9ubHkgdXNlZAotICogIGluIHRoYXQgZmFzaGlvbi4KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfbnVtbm9kZXMobm9kZSAqbiwgaW50IG51bSwgY29uc3QgY2hhciAqY29uc3QgbmFtZSkKLXsKLSAgICBpZiAoTkNIKG4pICE9IG51bSkgewotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciAlcyBub2RlLiIsIG5hbWUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVybWluYWwobm9kZSAqdGVybWluYWwsIGludCB0eXBlLCBjaGFyICpzdHJpbmcpCi17Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0ZXJtaW5hbCwgdHlwZSkKLSAgICAgICAgICAgICAgICYmICgoc3RyaW5nID09IDApIHx8IChzdHJjbXAoc3RyaW5nLCBTVFIodGVybWluYWwpKSA9PSAwKSkpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIHRlcm1pbmFsOiBleHBlY3RlZCBcIiVzXCIiLCBzdHJpbmcpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLS8qICBYICgnLCcgWCkgWycsJ10gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3JlcGVhdGluZ19saXN0X3ZhcmlhYmxlKG5vZGUgKnRyZWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGlzdF9ub2RlX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCp2YWxpZGF0ZV9jaGlsZF9mdW5jX2luYykobm9kZSAqLCBpbnQgKiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IGxpc3Rfbm9kZV90eXBlX25hbWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKG5jaCAmJiB2YWxpZGF0ZV9udHlwZSh0cmVlLCBsaXN0X25vZGVfdHlwZSkpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgLyogVW5jb25kaXRpb25hbGx5IHJhaXNlLiAqLwotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgbGlzdF9ub2RlX3R5cGVfbmFtZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmb3IgKCA7IHJlcyAmJiAqcG9zIDwgbmNoOyApIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NoaWxkX2Z1bmNfaW5jKHRyZWUsIHBvcyk7Ci0gICAgICAgICAgICBpZiAoIXJlcyB8fCAqcG9zID49IG5jaCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsICgqcG9zKSsrKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLyogIFggKCcsJyBYKSBbJywnXSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3Qobm9kZSAqdHJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaXN0X25vZGVfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnZhbGlkYXRlX2NoaWxkX2Z1bmMpKG5vZGUgKiksCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBsaXN0X25vZGVfdHlwZV9uYW1lKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IChuY2ggJiYgdmFsaWRhdGVfbnR5cGUodHJlZSwgbGlzdF9ub2RlX3R5cGUpKTsKLSAgICBpbnQgcG9zID0gMDsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIC8qIFVuY29uZGl0aW9uYWxseSByYWlzZS4gKi8KLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsIGxpc3Rfbm9kZV90eXBlX25hbWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZm9yICggOyByZXMgJiYgcG9zIDwgbmNoOyApIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NoaWxkX2Z1bmMoQ0hJTEQodHJlZSwgcG9zKyspKTsKLSAgICAgICAgICAgIGlmICghcmVzIHx8IHBvcyA+PSBuY2gpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBwb3MrKykpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogIHZhbGlkYXRlX2NsYXNzKCkKLSAqCi0gKiAgY2xhc3NkZWY6Ci0gKiAgICAgICdjbGFzcycgTkFNRSBbJygnIHRlc3RsaXN0ICcpJ10gJzonIHN1aXRlCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NsYXNzKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGNsYXNzZGVmKSAmJgotICAgICAgICAgICAgICAgICgobmNoID09IDQpIHx8IChuY2ggPT0gNikgfHwgKG5jaCA9PSA3KSkpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImNsYXNzIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDQsICJjbGFzcyIpOwotICAgIH0KLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKG5jaCA9PSA3KSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gKCh2YWxpZGF0ZV9scGFyZW4oQ0hJTEQodHJlZSwgMikpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9hcmdsaXN0KENISUxEKHRyZWUsIDMpKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIDQpKSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSA2KSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLDIpKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsMykpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGlmX3N0bXQ6Ci0gKiAgICAgICdpZicgdGVzdCAnOicgc3VpdGUgKCdlbGlmJyB0ZXN0ICc6JyBzdWl0ZSkqIFsnZWxzZScgJzonIHN1aXRlXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pZihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBpZl9zdG10KQotICAgICAgICAgICAgICAgJiYgKG5jaCA+PSA0KQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImlmIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDMpKSk7Ci0KLSAgICBpZiAocmVzICYmICgobmNoICUgNCkgPT0gMykpIHsKLSAgICAgICAgLyogIC4uLiAnZWxzZScgJzonIHN1aXRlICAqLwotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBuY2ggLSAzKSwgImVsc2UiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotICAgICAgICBuY2ggLT0gMzsKLSAgICB9Ci0gICAgZWxzZSBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDQsICJpZiIpOwotICAgIGlmICgobmNoICUgNCkgIT0gMCkKLSAgICAgICAgLyogV2lsbCBjYXRjaCB0aGUgY2FzZSBmb3IgbmNoIDwgNCAqLwotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAwLCAiaWYiKTsKLSAgICBlbHNlIGlmIChyZXMgJiYgKG5jaCA+IDQpKSB7Ci0gICAgICAgIC8qICAuLi4gKCdlbGlmJyB0ZXN0ICc6JyBzdWl0ZSkrIC4uLiAgKi8KLSAgICAgICAgaW50IGogPSA0OwotICAgICAgICB3aGlsZSAoKGogPCBuY2gpICYmIHJlcykgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgaiksICJlbGlmIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBqICsgMikpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBqICsgMSkpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgaiArIDMpKSk7Ci0gICAgICAgICAgICBqICs9IDQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBwYXJhbWV0ZXJzOgotICogICAgICAnKCcgW3ZhcmFyZ3NsaXN0XSAnKScKLSAqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3BhcmFtZXRlcnMobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBwYXJhbWV0ZXJzKSAmJiAoKG5jaCA9PSAyKSB8fCAobmNoID09IDMpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3JwYXJlbihDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotICAgICAgICBpZiAocmVzICYmIChuY2ggPT0gMykpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV92YXJhcmdzbGlzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInBhcmFtZXRlcnMiKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICB2YWxpZGF0ZV9zdWl0ZSgpCi0gKgotICogIHN1aXRlOgotICogICAgICBzaW1wbGVfc3RtdAotICogICAgfCBORVdMSU5FIElOREVOVCBzdG10KyBERURFTlQKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc3VpdGUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgc3VpdGUpICYmICgobmNoID09IDEpIHx8IChuY2ggPj0gNCkpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSAxKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfc2ltcGxlX3N0bXQoQ0hJTEQodHJlZSwgMCkpOwotICAgIGVsc2UgaWYgKHJlcykgewotICAgICAgICAvKiAgTkVXTElORSBJTkRFTlQgc3RtdCsgREVERU5UICAqLwotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmV3bGluZShDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2luZGVudChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N0bXQoQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kZWRlbnQoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLQotICAgICAgICBpZiAocmVzICYmIChuY2ggPiA0KSkgewotICAgICAgICAgICAgaW50IGkgPSAzOwotICAgICAgICAgICAgLS1uY2g7ICAgICAgICAgICAgICAgICAgICAgIC8qIGZvcmdldCB0aGUgREVERU5UICAgICAqLwotICAgICAgICAgICAgZm9yICggOyByZXMgJiYgKGkgPCBuY2gpOyArK2kpCi0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc3RtdChDSElMRCh0cmVlLCBpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoIDwgNCkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDQsICJzdWl0ZSIpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdGxpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsIHRlc3RsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdCwgInRlc3RsaXN0IikpOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0bGlzdF9zdGFyX2V4cHIobm9kZSAqdGwpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0bCwgdGVzdGxpc3Rfc3Rhcl9leHByLCB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0bGlzdCIpKTsKLX0KLQotCi0vKiB2YWxpZGF0ZSBlaXRoZXIgdmZwZGVmIG9yIHRmcGRlZi4KLSAqIHZmcGRlZjogTkFNRQotICogdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdmZwZGVmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpZiAoVFlQRSh0cmVlKSA9PSB2ZnBkZWYpIHsKLSAgICAgICAgcmV0dXJuIG5jaCA9PSAxICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpOwotICAgIH0KLSAgICBlbHNlIGlmIChUWVBFKHRyZWUpID09IHRmcGRlZikgewotICAgICAgICBpZiAobmNoID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCBOVUxMKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuY2ggPT0gMykgewotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpICYmCi0gICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMSkpICYmCi0gICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAyKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHZmcGRlZl0gfCAnKionIHZmcGRlZgotICogLi5vciB0ZnBkZWYgaW4gcGxhY2Ugb2YgdmZwZGVmLiB2ZnBkZWY6IE5BTUU7IHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3ZhcmFyZ3NsaXN0X3RyYWlsZXIobm9kZSAqdHJlZSwgaW50IHN0YXJ0KQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IDA7Ci0KLSAgICBpZiAobmNoIDw9IHN0YXJ0KSB7Ci0gICAgICAgIGVycl9zdHJpbmcoImV4cGVjdGVkIHZhcmlhYmxlIGFyZ3VtZW50IHRyYWlsZXIgZm9yIHZhcmFyZ3NsaXN0Iik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBzdGFydCkpID09IFNUQVIpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogJyonIFt2ZnBkZWZdCi0gICAgICAgICAqLwotICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdGFyKENISUxEKHRyZWUsIHN0YXJ0KyspKTsKLSAgICAgICAgaWYgKHJlcyAmJiBzdGFydCA8IG5jaCAmJiAoVFlQRShDSElMRCh0cmVlLCBzdGFydCkpID09IHZmcGRlZiB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gdGZwZGVmKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZmcGRlZihDSElMRCh0cmVlLCBzdGFydCsrKSk7Ci0gICAgICAgIC8qCi0gICAgICAgICAqICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKgotICAgICAgICAgKi8KLSAgICAgICAgd2hpbGUgKHJlcyAmJiBzdGFydCArIDEgPCBuY2ggJiYgKAotICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQgKyAxKSkgPT0gdmZwZGVmIHx8Ci0gICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCBzdGFydCArIDEpKSA9PSB0ZnBkZWYpKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgc3RhcnQrKykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdmZwZGVmKENISUxEKHRyZWUsIHN0YXJ0KyspKSk7Ci0gICAgICAgICAgICBpZiAocmVzICYmIHN0YXJ0ICsgMSA8IG5jaCAmJiBUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gRVFVQUwpCi0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIHN0YXJ0KyspKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIHN0YXJ0KyspKSk7Ci0gICAgICAgIH0KLSAgICAgICAgLyoKLSAgICAgICAgICogWycsJyAnKionIHZmcGRlZl0KLSAgICAgICAgICovCi0gICAgICAgIGlmIChyZXMgJiYgc3RhcnQgKyAyIDwgbmNoICYmIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQrMSkpID09IERPVUJMRVNUQVIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgc3RhcnQrKykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV92ZnBkZWYoQ0hJTEQodHJlZSwgc3RhcnQrKykpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCBzdGFydCkpID09IERPVUJMRVNUQVIpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogJyoqJyB2ZnBkZWYKLSAgICAgICAgICovCi0gICAgICAgIGlmIChzdGFydCArIDEgPCBuY2gpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV92ZnBkZWYoQ0hJTEQodHJlZSwgc3RhcnQrKykpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiZXhwZWN0ZWQgdmZwZGVmIGFmdGVyICoqIGluIHZhcmFyZ3NsaXN0IHRyYWlsZXIiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgZXJyX3N0cmluZygiZXhwZWN0ZWQgKiBvciAqKiBpbiB2YXJhcmdzbGlzdCB0cmFpbGVyIik7Ci0gICAgfQotCi0gICAgaWYgKHJlcyAmJiBzdGFydCAhPSBuY2gpIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgZXJyX3N0cmluZygidW5leHBlY3RlZCBleHRyYSBjaGlsZHJlbiBpbiB2YXJhcmdzbGlzdCB0cmFpbGVyIik7Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogdmFsaWRhdGVfdmFyYXJnc2xpc3QoKQotICoKLSAqIFZhbGlkYXRlIHR5cGVkYXJnc2xpc3Qgb3IgdmFyYXJnc2xpc3QuCi0gKgotICogdHlwZWRhcmdzbGlzdDogKCh0ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICogICAgICAgICAgICAgICAgICgnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB0ZnBkZWZdIHwKLSAqICAgICAgICAgICAgICAgICAgJyoqJyB0ZnBkZWYpCi0gKiAgICAgICAgICAgICAgICAgfCB0ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJ10pCi0gKiB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICogdmFyYXJnc2xpc3Q6ICgodmZwZGVmIFsnPScgdGVzdF0gJywnKSoKLSAqICAgICAgICAgICAgICAgKCcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogIFsnLCcgJyoqJyB2ZnBkZWZdIHwKLSAqICAgICAgICAgICAgICAgICcqKicgdmZwZGVmKQotICogICAgICAgICAgICAgICB8IHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKLSAqIHZmcGRlZjogTkFNRQotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdmFyYXJnc2xpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAoVFlQRSh0cmVlKSA9PSB2YXJhcmdzbGlzdCB8fAotICAgICAgICAgICAgICAgVFlQRSh0cmVlKSA9PSB0eXBlZGFyZ3NsaXN0KSAmJgotICAgICAgICAgICAgICAobmNoICE9IDApOwotICAgIGludCBzeW07Ci0gICAgbm9kZSAqY2g7Ci0gICAgaW50IGkgPSAwOwotCi0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChuY2ggPCAxKSB7Ci0gICAgICAgIGVycl9zdHJpbmcoInZhcmFyZ3NsaXN0IG1pc3NpbmcgY2hpbGQgbm9kZXMiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHdoaWxlIChpIDwgbmNoKSB7Ci0gICAgICAgIGNoID0gQ0hJTEQodHJlZSwgaSk7Ci0gICAgICAgIHN5bSA9IFRZUEUoY2gpOwotICAgICAgICBpZiAoc3ltID09IHZmcGRlZiB8fCBzeW0gPT0gdGZwZGVmKSB7Ci0gICAgICAgICAgICAvKiB2YWxpZGF0ZSAodmZwZGVmIFsnPScgdGVzdF0gJywnKSsgKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZmcGRlZihjaCk7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgICAgICBpZiAocmVzICYmIChpKzIgPD0gbmNoKSAmJiBUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBFUVVBTCkgewotICAgICAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKzEpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcykKLSAgICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyZXMgJiYgaSA8IG5jaCkgewotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkpKTsKLSAgICAgICAgICAgICAgICArK2k7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoc3ltID09IERPVUJMRVNUQVIgfHwgc3ltID09IFNUQVIpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZhcmFyZ3NsaXN0X3RyYWlsZXIodHJlZSwgaSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGZvcm1hdGlvbiBmb3IgdmFyYXJnc2xpc3QiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qICBjb21wX2l0ZXI6ICBjb21wX2ZvciB8IGNvbXBfaWYKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY29tcF9pdGVyKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBjb21wX2l0ZXIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiY29tcF9pdGVyIikpOwotICAgIGlmIChyZXMgJiYgVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gY29tcF9mb3IpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDApKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfaWYoQ0hJTEQodHJlZSwgMCkpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLyogIGNvbXBfZm9yOiAgJ2ZvcicgZXhwcmxpc3QgJ2luJyB0ZXN0IFtjb21wX2l0ZXJdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBfZm9yKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzOwotCi0gICAgaWYgKG5jaCA9PSA1KQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2l0ZXIoQ0hJTEQodHJlZSwgNCkpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgImNvbXBfZm9yIik7Ci0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZvciIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHBybGlzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksICJpbiIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9vcl90ZXN0KENISUxEKHRyZWUsIDMpKSk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgY29tcF9pZjogICdpZicgdGVzdF9ub2NvbmQgW2NvbXBfaXRlcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY29tcF9pZihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlczsKLQotICAgIGlmIChuY2ggPT0gMykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9pdGVyKENISUxEKHRyZWUsIDIpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJjb21wX2lmIik7Ci0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImlmIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3Rfbm9jb25kKENISUxEKHRyZWUsIDEpKSk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qICBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKLSAqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHN0bXQpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAic3RtdCIpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgdHJlZSA9IENISUxEKHRyZWUsIDApOwotCi0gICAgICAgIGlmIChUWVBFKHRyZWUpID09IHNpbXBsZV9zdG10KQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc2ltcGxlX3N0bXQodHJlZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBvdW5kX3N0bXQodHJlZSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXSBORVdMSU5FCi0gKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zaW1wbGVfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBzaW1wbGVfc3RtdCkKLSAgICAgICAgICAgICAgICYmIChuY2ggPj0gMikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3NtYWxsX3N0bXQoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uZXdsaW5lKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0KLSAgICBpZiAobmNoIDwgMikKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInNpbXBsZV9zdG10Iik7Ci0gICAgLS1uY2g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yZ2V0IHRoZSBORVdMSU5FICAgICovCi0gICAgaWYgKHJlcyAmJiBpc19ldmVuKG5jaCkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3NlbWkoQ0hJTEQodHJlZSwgLS1uY2gpKTsKLSAgICBpZiAocmVzICYmIChuY2ggPiAyKSkgewotICAgICAgICBpbnQgaTsKLQotICAgICAgICBmb3IgKGkgPSAxOyByZXMgJiYgKGkgPCBuY2gpOyBpICs9IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfc2VtaShDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zbWFsbF9zdG10KENISUxEKHRyZWUsIGkgKyAxKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfc21hbGxfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJzbWFsbF9zdG10Iik7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGludCBudHlwZSA9IFRZUEUoQ0hJTEQodHJlZSwgMCkpOwotCi0gICAgICAgIGlmICggIChudHlwZSA9PSBleHByX3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBkZWxfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IHBhc3Nfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IGZsb3dfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IGltcG9ydF9zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gZ2xvYmFsX3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBub25sb2NhbF9zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gYXNzZXJ0X3N0bXQpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9kZShDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgc21hbGxfc3RtdCBjaGlsZCB0eXBlIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAobmNoID09IDEpIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgY2hpbGQgbm9kZSBvZiBzbWFsbF9zdG10OiAlZC4iLAotICAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCAwKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGNvbXBvdW5kX3N0bXQ6Ci0gKiAgICAgIGlmX3N0bXQgfCB3aGlsZV9zdG10IHwgZm9yX3N0bXQgfCB0cnlfc3RtdCB8IHdpdGhfc3RtdCB8IGZ1bmNkZWYgfCBjbGFzc2RlZiB8IGRlY29yYXRlZAotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wb3VuZF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBjb21wb3VuZF9zdG10KQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImNvbXBvdW5kX3N0bXQiKSk7Ci0gICAgaW50IG50eXBlOwotCi0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAoMCk7Ci0KLSAgICB0cmVlID0gQ0hJTEQodHJlZSwgMCk7Ci0gICAgbnR5cGUgPSBUWVBFKHRyZWUpOwotICAgIGlmICggIChudHlwZSA9PSBpZl9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSB3aGlsZV9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSBmb3Jfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gdHJ5X3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IHdpdGhfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gZnVuY2RlZikKLSAgICAgICAgICB8fCAobnR5cGUgPT0gYXN5bmNfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gY2xhc3NkZWYpCi0gICAgICAgICAgfHwgKG50eXBlID09IGRlY29yYXRlZCkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX25vZGUodHJlZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBjb21wb3VuZCBzdGF0ZW1lbnQgdHlwZTogJWQuIiwgVFlQRSh0cmVlKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfeWllbGRfb3JfdGVzdGxpc3Qobm9kZSAqdHJlZSwgaW50IHRzZSkKLXsKLSAgICBpZiAoVFlQRSh0cmVlKSA9PSB5aWVsZF9leHByKSB7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0ZV95aWVsZF9leHByKHRyZWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKHRzZSkKLSAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV90ZXN0bGlzdF9zdGFyX2V4cHIodHJlZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV90ZXN0bGlzdCh0cmVlKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHJfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBqOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBleHByX3N0bXQpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdGxpc3Rfc3Rhcl9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBpZiAocmVzICYmIG5jaCA9PSAzCi0gICAgICAgICYmIFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGF1Z2Fzc2lnbikgewotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2RlcyhDSElMRCh0cmVlLCAxKSwgMSwgImF1Z2Fzc2lnbiIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV95aWVsZF9vcl90ZXN0bGlzdChDSElMRCh0cmVlLCAyKSwgMCk7Ci0KLSAgICAgICAgaWYgKHJlcykgewotICAgICAgICAgICAgY2hhciAqcyA9IFNUUihDSElMRChDSElMRCh0cmVlLCAxKSwgMCkpOwotCi0gICAgICAgICAgICByZXMgPSAoc3RyY21wKHMsICIrPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIi09IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiKj0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICIvPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIi8vPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIiU9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiJj0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICJ8PSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIl49IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiPDw9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiPj49IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiKio9IikgPT0gMCk7Ci0gICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGF1Z21lbnRlZCBhc3NpZ25tZW50IG9wZXJhdG9yIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoaiA9IDE7IHJlcyAmJiAoaiA8IG5jaCk7IGogKz0gMikKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIGopKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3lpZWxkX29yX3Rlc3RsaXN0KENISUxEKHRyZWUsIGogKyAxKSwgMSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kZWxfc3RtdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgImRlbF9zdG10IikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJkZWwiKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXhwcmxpc3QoQ0hJTEQodHJlZSwgMSkpKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9yZXR1cm5fc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCByZXR1cm5fc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAicmV0dXJuIikpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDIpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCAxKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyoKLSAqICByYWlzZV9zdG10OgotICoKLSAqICAncmFpc2UnIFt0ZXN0IFsnZnJvbScgdGVzdF1dCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3JhaXNlX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgcmFpc2Vfc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSA0KSkpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAicmFpc2UiKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInJhaXNlIik7Ci0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA+PSAyKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICBpZiAocmVzICYmIChuY2ggPT0gNCkpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDIpLCAiZnJvbSIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAzKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiB5aWVsZF9leHByOiAneWllbGQnIFt5aWVsZF9hcmddCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3lpZWxkX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGlmIChuY2ggPCAxIHx8IG5jaCA+IDIpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfZXhwcikpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInlpZWxkIikpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChuY2ggPT0gMikgewotICAgICAgICBpZiAoIXZhbGlkYXRlX3lpZWxkX2FyZyhDSElMRCh0cmVlLCAxKSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qIHlpZWxkX2FyZzogJ2Zyb20nIHRlc3QgfCB0ZXN0bGlzdAotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV95aWVsZF9hcmcobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfYXJnKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgc3dpdGNoIChuY2gpIHsKLSAgICAgIGNhc2UgMToKLSAgICAgICAgaWYgKCF2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCBuY2ggLSAxKSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZyb20iKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIXZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi0vKiB5aWVsZF9zdG10OiB5aWVsZF9leHByCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3lpZWxkX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX250eXBlKHRyZWUsIHlpZWxkX3N0bXQpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAieWllbGRfc3RtdCIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV95aWVsZF9leHByKENISUxEKHRyZWUsIDApKSk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfaW1wb3J0X2FzX25hbWUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBvayA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGltcG9ydF9hc19uYW1lKTsKLQotICAgIGlmIChvaykgewotICAgICAgICBpZiAobmNoID09IDEpCi0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpOwotICAgICAgICBlbHNlIGlmIChuY2ggPT0gMykKLSAgICAgICAgICAgIG9rID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpCi0gICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDEpLCAiYXMiKQotICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgTlVMTCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDMsICJpbXBvcnRfYXNfbmFtZSIpOwotICAgIH0KLSAgICByZXR1cm4gb2s7Ci19Ci0KLQotLyogZG90dGVkX25hbWU6ICBOQU1FICgiLiIgTkFNRSkqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RvdHRlZF9uYW1lKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGRvdHRlZF9uYW1lKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpKTsKLSAgICBpbnQgaTsKLQotICAgIGZvciAoaSA9IDE7IHJlcyAmJiAoaSA8IG5jaCk7IGkgKz0gMikgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfZG90KENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBpKzEpLCBOVUxMKSk7Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogZG90dGVkX2FzX25hbWU6ICBkb3R0ZWRfbmFtZSBbTkFNRSBOQU1FXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGRvdHRlZF9hc19uYW1lKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKG5jaCA9PSAxKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZG90dGVkX25hbWUoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBlbHNlIGlmIChuY2ggPT0gMykKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3R0ZWRfbmFtZShDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDEpLCAiYXMiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksIE5VTEwpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGRvdHRlZF9hc19uYW1lIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiBkb3R0ZWRfYXNfbmFtZSAoJywnIGRvdHRlZF9hc19uYW1lKSogKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RvdHRlZF9hc19uYW1lcyhub2RlICp0cmVlKQotewotICAgICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgICAgICBpbnQgcmVzID0gaXNfb2RkKG5jaCkgJiYgdmFsaWRhdGVfZG90dGVkX2FzX25hbWUoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBpbnQgaTsKLQotICAgICAgICBmb3IgKGkgPSAxOyByZXMgJiYgKGkgPCBuY2gpOyBpICs9IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG90dGVkX2FzX25hbWUoQ0hJTEQodHJlZSwgaSArIDEpKSk7Ci0gICAgICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiBpbXBvcnRfYXNfbmFtZSAoJywnIGltcG9ydF9hc19uYW1lKSogWycsJ10gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9hc19uYW1lcyhub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9hc19uYW1lKENISUxEKHRyZWUsIDApKTsKLSAgICBpbnQgaTsKLQotICAgIGZvciAoaSA9IDE7IHJlcyAmJiAoaSArIDEgPCBuY2gpOyBpICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ltcG9ydF9hc19uYW1lKENISUxEKHRyZWUsIGkgKyAxKSkpOwotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAnaW1wb3J0JyBkb3R0ZWRfYXNfbmFtZXMgKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9uYW1lKG5vZGUgKnRyZWUpCi17Ci0gICAgICAgIHJldHVybiAodmFsaWRhdGVfbnR5cGUodHJlZSwgaW1wb3J0X25hbWUpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgImltcG9ydF9uYW1lIikKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiaW1wb3J0IikKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZXMoQ0hJTEQodHJlZSwgMSkpKTsKLX0KLQotLyogSGVscGVyIGZ1bmN0aW9uIHRvIGNvdW50IHRoZSBudW1iZXIgb2YgbGVhZGluZyBkb3RzIChvciBlbGxpcHNpcyB0b2tlbnMpIGluCi0gKiAnZnJvbSAuLi5tb2R1bGUgaW1wb3J0IG5hbWUnCi0gKi8KLXN0YXRpYyBpbnQKLWNvdW50X2Zyb21fZG90cyhub2RlICp0cmVlKQotewotICAgIGludCBpOwotICAgIGZvciAoaSA9IDE7IGkgPCBOQ0godHJlZSk7IGkrKykKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgaSkpICE9IERPVCAmJiBUWVBFKENISUxEKHRyZWUsIGkpKSAhPSBFTExJUFNJUykKLSAgICAgICAgICAgIGJyZWFrOwotICAgIHJldHVybiBpIC0gMTsKLX0KLQotLyogaW1wb3J0X2Zyb206ICgnZnJvbScgKCcuJyogZG90dGVkX25hbWUgfCAnLicrKQotICogICAgICAgICAgICAgICAnaW1wb3J0JyAoJyonIHwgJygnIGltcG9ydF9hc19uYW1lcyAnKScgfCBpbXBvcnRfYXNfbmFtZXMpKQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pbXBvcnRfZnJvbShub2RlICp0cmVlKQotewotICAgICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgICAgICBpbnQgbmRvdHMgPSBjb3VudF9mcm9tX2RvdHModHJlZSk7Ci0gICAgICAgIGludCBoYXZlbmFtZSA9IChUWVBFKENISUxEKHRyZWUsIG5kb3RzICsgMSkpID09IGRvdHRlZF9uYW1lKTsKLSAgICAgICAgaW50IG9mZnNldCA9IG5kb3RzICsgaGF2ZW5hbWU7Ci0gICAgICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBpbXBvcnRfZnJvbSkKLSAgICAgICAgICAgICAgICAmJiAob2Zmc2V0ID49IDEpCi0gICAgICAgICAgICAgICAgJiYgKG5jaCA+PSAzICsgb2Zmc2V0KQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJmcm9tIikKLSAgICAgICAgICAgICAgICAmJiAoIWhhdmVuYW1lIHx8IHZhbGlkYXRlX2RvdHRlZF9uYW1lKENISUxEKHRyZWUsIG5kb3RzICsgMSkpKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMSksICJpbXBvcnQiKTsKLQotICAgICAgICBpZiAocmVzICYmIFRZUEUoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMikpID09IExQQVIpCi0gICAgICAgICAgICByZXMgPSAoKG5jaCA9PSBvZmZzZXQgKyA1KQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLCBvZmZzZXQgKyAyKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZXMoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG9mZnNldCArIDQpKSk7Ci0gICAgICAgIGVsc2UgaWYgKHJlcyAmJiBUWVBFKENISUxEKHRyZWUsIG9mZnNldCArIDIpKSAhPSBTVEFSKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfaW1wb3J0X2FzX25hbWVzKENISUxEKHRyZWUsIG9mZnNldCArIDIpKTsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qIGltcG9ydF9zdG10OiBpbXBvcnRfbmFtZSB8IGltcG9ydF9mcm9tICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pbXBvcnRfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJpbXBvcnRfc3RtdCIpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpbnQgbnR5cGUgPSBUWVBFKENISUxEKHRyZWUsIDApKTsKLQotICAgICAgICBpZiAobnR5cGUgPT0gaW1wb3J0X25hbWUgfHwgbnR5cGUgPT0gaW1wb3J0X2Zyb20pCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9ub2RlKENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBpbXBvcnRfc3RtdCBjaGlsZCB0eXBlIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAobmNoID09IDEpIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgY2hpbGQgbm9kZSBvZiBpbXBvcnRfc3RtdDogJWQuIiwKLSAgICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQodHJlZSwgMCkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBnbG9iYWxfc3RtdDoKLSAqCi0gKiAgJ2dsb2JhbCcgTkFNRSAoJywnIE5BTUUpKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9nbG9iYWxfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBqOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBnbG9iYWxfc3RtdCkKLSAgICAgICAgICAgICAgICYmIGlzX2V2ZW4obmNoKSAmJiAobmNoID49IDIpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGdsb2JhbCBzdGF0ZW1lbnQiKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZ2xvYmFsIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKSk7Ci0gICAgZm9yIChqID0gMjsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBqICsgMSksIE5BTUUpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotLyogIG5vbmxvY2FsX3N0bXQ6Ci0gKgotICogICdub25sb2NhbCcgTkFNRSAoJywnIE5BTUUpKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9ub25sb2NhbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIG5vbmxvY2FsX3N0bXQpCi0gICAgICAgICAgICAgICAmJiBpc19ldmVuKG5jaCkgJiYgKG5jaCA+PSAyKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBub25sb2NhbCBzdGF0ZW1lbnQiKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAibm9ubG9jYWwiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpKTsKLSAgICBmb3IgKGogPSAyOyByZXMgJiYgKGogPCBuY2gpOyBqICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBqKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIGogKyAxKSwgTkFNRSkpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLyogIGFzc2VydF9zdG10OgotICoKLSAqICAnYXNzZXJ0JyB0ZXN0IFsnLCcgdGVzdF0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfYXNzZXJ0X3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXNzZXJ0X3N0bXQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAyKSB8fCAobmNoID09IDQpKQotICAgICAgICAgICAgICAgJiYgKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJhc3NlcnQiKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGFzc2VydCBzdGF0ZW1lbnQiKTsKLSAgICBpZiAocmVzICYmIChuY2ggPiAyKSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAzKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3doaWxlKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHdoaWxlX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSA0KSB8fCAobmNoID09IDcpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgIndoaWxlIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDMpKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gNykpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDQpLCAiZWxzZSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCA1KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDYpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZm9yKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGZvcl9zdG10KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gNikgfHwgKG5jaCA9PSA5KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJmb3IiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXhwcmxpc3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDIpLCAiaW4iKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdGxpc3QoQ0hJTEQodHJlZSwgMykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDUpKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gOSkpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDYpLCAiZWxzZSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCA3KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDgpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHRyeV9zdG10OgotICogICAgICAndHJ5JyAnOicgc3VpdGUgKGV4Y2VwdF9jbGF1c2UgJzonIHN1aXRlKSsgWydlbHNlJyAnOicgc3VpdGVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2ZpbmFsbHknICc6JyBzdWl0ZV0KLSAqICAgIHwgJ3RyeScgJzonIHN1aXRlICdmaW5hbGx5JyAnOicgc3VpdGUKLSAqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3RyeShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHBvcyA9IDM7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB0cnlfc3RtdCkKLSAgICAgICAgICAgICAgICYmIChuY2ggPj0gNikgJiYgKChuY2ggJSAzKSA9PSAwKSk7Ci0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInRyeSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotICAgIGVsc2UgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSAiZXhjZXB0IjsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgbmNoIC0gMykpICE9IGV4Y2VwdF9jbGF1c2UpCi0gICAgICAgICAgICBuYW1lID0gU1RSKENISUxEKHRyZWUsIG5jaCAtIDMpKTsKLQotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciB0cnkvJXMgbm9kZS4iLCBuYW1lKTsKLSAgICB9Ci0gICAgLyogSGFuZGxlIHRyeS9maW5hbGx5IHN0YXRlbWVudCAqLwotICAgIGlmIChyZXMgJiYgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gTkFNRSkgJiYKLSAgICAgICAgKHN0cmNtcChTVFIoQ0hJTEQodHJlZSwgcG9zKSksICJmaW5hbGx5IikgPT0gMCkpIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDYsICJ0cnkvZmluYWxseSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDUpKSk7Ci0gICAgICAgIHJldHVybiAocmVzKTsKLSAgICB9Ci0gICAgLyogdHJ5L2V4Y2VwdCBzdGF0ZW1lbnQ6IHNraXAgcGFzdCBleGNlcHRfY2xhdXNlIHNlY3Rpb25zICovCi0gICAgd2hpbGUgKHJlcyAmJiBwb3MgPCBuY2ggJiYgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gZXhjZXB0X2NsYXVzZSkpIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2V4Y2VwdF9jbGF1c2UoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIHBvcyArIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgcG9zICsgMikpKTsKLSAgICAgICAgcG9zICs9IDM7Ci0gICAgfQotICAgIC8qIHNraXAgZWxzZSBjbGF1c2UgKi8KLSAgICBpZiAocmVzICYmIHBvcyA8IG5jaCAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBOQU1FKSAmJgotICAgICAgICAoc3RyY21wKFNUUihDSElMRCh0cmVlLCBwb3MpKSwgImVsc2UiKSA9PSAwKSkgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgcG9zICsgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBwb3MgKyAyKSkpOwotICAgICAgICBwb3MgKz0gMzsKLSAgICB9Ci0gICAgaWYgKHJlcyAmJiBwb3MgPCBuY2gpIHsKLSAgICAgICAgLyogbGFzdCBjbGF1c2UgbXVzdCBiZSBhIGZpbmFsbHkgKi8KLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgcG9zKSwgImZpbmFsbHkiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgcG9zICsgMywgInRyeS9leGNlcHQvZmluYWxseSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBwb3MgKyAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIHBvcyArIDIpKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leGNlcHRfY2xhdXNlKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV4Y2VwdF9jbGF1c2UpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gNCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZXhjZXB0IikpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID4gMSkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA0KSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksICJhcyIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAzKSwgTkFNRSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCB0ZXN0KSAmJiBpc19vZGQobmNoKTsKLQotICAgIGlmIChyZXMgJiYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IGxhbWJkZWYpKQotICAgICAgICByZXMgPSAoKG5jaCA9PSAxKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbGFtYmRlZihDSElMRCh0cmVlLCAwKSkpOwotICAgIGVsc2UgaWYgKHJlcykgewotICAgICAgICByZXMgPSB2YWxpZGF0ZV9vcl90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgcmVzID0gKHJlcyAmJiAobmNoID09IDEgfHwgKG5jaCA9PSA1ICYmCi0gICAgICAgICAgICB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDEpLCAiaWYiKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfb3JfdGVzdChDSElMRCh0cmVlLCAyKSkgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMyksICJlbHNlIikgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgNCkpKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3Rfbm9jb25kKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgdGVzdF9ub2NvbmQpICYmIChuY2ggPT0gMSk7Ci0KLSAgICBpZiAocmVzICYmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBsYW1iZGVmX25vY29uZCkpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9sYW1iZGVmX25vY29uZChDSElMRCh0cmVlLCAwKSkpOwotICAgIGVsc2UgaWYgKHJlcykgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfb3JfdGVzdChDSElMRCh0cmVlLCAwKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX29yX3Rlc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBvcl90ZXN0KSAmJiBpc19vZGQobmNoKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaW50IHBvczsKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfYW5kX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBwb3MpLCAib3IiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2FuZF90ZXN0KENISUxEKHRyZWUsIHBvcyArIDEpKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hbmRfdGVzdChub2RlICp0cmVlKQotewotICAgIGludCBwb3M7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFuZF90ZXN0KQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25vdF90ZXN0KENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIHBvcyksICJhbmQiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbm90X3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9ub3RfdGVzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIG5vdF90ZXN0KSAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKG5jaCA9PSAyKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJub3QiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25vdF90ZXN0KENISUxEKHRyZWUsIDEpKSk7Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAxKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcGFyaXNvbihDSElMRCh0cmVlLCAwKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wYXJpc29uKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgY29tcGFyaXNvbikKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21wX29wKENISUxEKHRyZWUsIHBvcykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsIHBvcyArIDEpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfY29tcF9vcChub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSAwOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0KLSAgICBpZiAoIXZhbGlkYXRlX250eXBlKHRyZWUsIGNvbXBfb3ApKQotICAgICAgICByZXR1cm4gKDApOwotICAgIGlmIChuY2ggPT0gMSkgewotICAgICAgICAvKgotICAgICAgICAgKiAgT25seSBjaGlsZCB3aWxsIGJlIGEgdGVybWluYWwgd2l0aCBhIHdlbGwtZGVmaW5lZCBzeW1ib2xpYyBuYW1lCi0gICAgICAgICAqICBvciBhIE5BTUUgd2l0aCBhIHN0cmluZyBvZiBlaXRoZXIgJ2lzJyBvciAnaW4nCi0gICAgICAgICAqLwotICAgICAgICB0cmVlID0gQ0hJTEQodHJlZSwgMCk7Ci0gICAgICAgIHN3aXRjaCAoVFlQRSh0cmVlKSkgewotICAgICAgICAgIGNhc2UgTEVTUzoKLSAgICAgICAgICBjYXNlIEdSRUFURVI6Ci0gICAgICAgICAgY2FzZSBFUUVRVUFMOgotICAgICAgICAgIGNhc2UgRVFVQUw6Ci0gICAgICAgICAgY2FzZSBMRVNTRVFVQUw6Ci0gICAgICAgICAgY2FzZSBHUkVBVEVSRVFVQUw6Ci0gICAgICAgICAgY2FzZSBOT1RFUVVBTDoKLSAgICAgICAgICAgICAgcmVzID0gMTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBOQU1FOgotICAgICAgICAgICAgICByZXMgPSAoKHN0cmNtcChTVFIodHJlZSksICJpbiIpID09IDApCi0gICAgICAgICAgICAgICAgICAgICB8fCAoc3RyY21wKFNUUih0cmVlKSwgImlzIikgPT0gMCkpOwotICAgICAgICAgICAgICBpZiAoIXJlcykgewotICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCBvcGVyYXRvciAnJXMnIiwgU1RSKHRyZWUpKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGNvbXBhcmlzb24gb3BlcmF0b3IgdHlwZSIpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmICgocmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgImNvbXBfb3AiKSkgIT0gMCkgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMCksIE5BTUUpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkKLSAgICAgICAgICAgICAgICYmICgoKHN0cmNtcChTVFIoQ0hJTEQodHJlZSwgMCkpLCAiaXMiKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICAmJiAoc3RyY21wKFNUUihDSElMRCh0cmVlLCAxKSksICJub3QiKSA9PSAwKSkKLSAgICAgICAgICAgICAgICAgICB8fCAoKHN0cmNtcChTVFIoQ0hJTEQodHJlZSwgMCkpLCAibm90IikgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgKHN0cmNtcChTVFIoQ0hJTEQodHJlZSwgMSkpLCAiaW4iKSA9PSAwKSkpKTsKLSAgICAgICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBlcnJfc3RyaW5nKCJ1bmtub3duIGNvbXBhcmlzb24gb3BlcmF0b3IiKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3N0YXJfZXhwcihub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBzdGFyX2V4cHIpOwotICAgIGlmICghcmVzKSByZXR1cm4gcmVzOwotICAgIGlmICghdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInN0YXJfZXhwciIpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMCksIFNUQVIpICYmICAgICAgXAotICAgICAgICB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsIDEpKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV4cHIpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfeG9yX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAoaiA9IDI7IHJlcyAmJiAoaiA8IG5jaCk7IGogKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX3hvcl9leHByKENISUxEKHRyZWUsIGopKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdmJhcihDSElMRCh0cmVlLCBqIC0gMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV94b3JfZXhwcihub2RlICp0cmVlKQotewotICAgIGludCBqOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB4b3JfZXhwcikKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hbmRfZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yIChqID0gMjsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfY2lyY3VtZmxleChDSElMRCh0cmVlLCBqIC0gMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hbmRfZXhwcihDSElMRCh0cmVlLCBqKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FuZF9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYW5kX2V4cHIpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc2hpZnRfZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yIChwb3MgPSAxOyByZXMgJiYgKHBvcyA8IG5jaCk7IHBvcyArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfYW1wZXJzYW5kKENISUxEKHRyZWUsIHBvcykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zaGlmdF9leHByKENISUxEKHRyZWUsIHBvcyArIDEpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfY2hhaW5fdHdvX29wcyhub2RlICp0cmVlLCBpbnQgKCp0ZXJtdmFsaWQpKG5vZGUgKiksIGludCBvcDEsIGludCBvcDIpCi0gewotICAgIGludCBwb3MgPSAxOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IChpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgKCp0ZXJtdmFsaWQpKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKCA7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgIT0gb3AxKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgcG9zKSwgb3AyKTsKLSAgICAgICAgaWYgKHJlcykKLSAgICAgICAgICAgIHJlcyA9ICgqdGVybXZhbGlkKShDSElMRCh0cmVlLCBwb3MgKyAxKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zaGlmdF9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBzaGlmdF9leHByKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfY2hhaW5fdHdvX29wcyh0cmVlLCB2YWxpZGF0ZV9hcml0aF9leHByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUZUU0hJRlQsIFJJR0hUU0hJRlQpKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hcml0aF9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhcml0aF9leHByKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfY2hhaW5fdHdvX29wcyh0cmVlLCB2YWxpZGF0ZV90ZXJtLCBQTFVTLCBNSU5VUykpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlcm0obm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zID0gMTsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgdGVybSkKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAoIDsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgcmVzID0gKCgoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBTVEFSKQotICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gU0xBU0gpCi0gICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBET1VCTEVTTEFTSCkKLSAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IFBFUkNFTlQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZmFjdG9yKENISUxEKHRyZWUsIHBvcyArIDEpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGZhY3RvcjoKLSAqCi0gKiAgZmFjdG9yOiAoJysnfCctJ3wnficpIGZhY3RvciB8IHBvd2VyCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ZhY3Rvcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBmYWN0b3IpCi0gICAgICAgICAgICAgICAmJiAoKChuY2ggPT0gMikKLSAgICAgICAgICAgICAgICAgICAgJiYgKChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBQTFVTKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IE1JTlVTKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IFRJTERFKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZmFjdG9yKENISUxEKHRyZWUsIDEpKSkKLSAgICAgICAgICAgICAgICAgICB8fCAoKG5jaCA9PSAxKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9wb3dlcihDSElMRCh0cmVlLCAwKSkpKSk7Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBwb3dlcjoKLSAqCi0gKiAgcG93ZXI6IGF0b21fZXhwciB0cmFpbGVyKiBbJyoqJyBmYWN0b3JdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Bvd2VyKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHBvd2VyKSAmJiAobmNoID49IDEpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hdG9tX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGlmIChuY2ggPiAxKSB7Ci0gICAgICAgIGlmIChuY2ggIT0gMykgewotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2Ygbm9kZXMgZm9yICdwb3dlciciKTsKLSAgICAgICAgICAgIHJldHVybiAoMCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgMikpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGF0b21fZXhwcjoKLSAqCi0gKiAgYXRvbV9leHByOiBbQVdBSVRdIGF0b20gdHJhaWxlcioKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfYXRvbV9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHN0YXJ0ID0gMDsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXM7Ci0gICAgaW50IHBvczsKLQotICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGF0b21fZXhwcikgJiYgKG5jaCA+PSAxKTsKLSAgICBpZiAoIXJlcykgewotICAgICAgICByZXR1cm4gKHJlcyk7Ci0gICAgfQotCi0gICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IEFXQUlUKSB7Ci0gICAgICAgIHN0YXJ0ID0gMTsKLSAgICAgICAgaWYgKG5jaCA8IDIpIHsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIG5vZGVzIGZvciAnYXRvbV9leHByJyIpOwotICAgICAgICAgICAgcmV0dXJuICgwKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJlcyA9IHZhbGlkYXRlX2F0b20oQ0hJTEQodHJlZSwgc3RhcnQpKTsKLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIHBvcyA9IHN0YXJ0ICsgMTsKLSAgICAgICAgd2hpbGUgKHJlcyAmJiAocG9zIDwgbmNoKSAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSB0cmFpbGVyKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3RyYWlsZXIoQ0hJTEQodHJlZSwgcG9zKyspKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfYXRvbShub2RlICp0cmVlKQotewotICAgIGludCBwb3M7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXRvbSk7Ci0KLSAgICBpZiAocmVzICYmIG5jaCA8IDEpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIG5jaCsxLCAiYXRvbSIpOwotICAgIGlmIChyZXMpIHsKLSAgICAgICAgc3dpdGNoIChUWVBFKENISUxEKHRyZWUsIDApKSkgewotICAgICAgICAgIGNhc2UgTFBBUjoKLSAgICAgICAgICAgIHJlcyA9ICgobmNoIDw9IDMpCi0gICAgICAgICAgICAgICAgICAgJiYgKHZhbGlkYXRlX3JwYXJlbihDSElMRCh0cmVlLCBuY2ggLSAxKSkpKTsKLQotICAgICAgICAgICAgaWYgKHJlcyAmJiAobmNoID09IDMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMSkpPT15aWVsZF9leHByKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeWllbGRfZXhwcihDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdGxpc3RfY29tcChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIExTUUI6Ci0gICAgICAgICAgICBpZiAobmNoID09IDIpCi0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIFJTUUIpOwotICAgICAgICAgICAgZWxzZSBpZiAobmNoID09IDMpCi0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3RsaXN0X2NvbXAoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDIpLCBSU1FCKSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbGlzdCBkaXNwbGF5IGF0b20iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTEJSQUNFOgotICAgICAgICAgICAgcmVzID0gKChuY2ggPD0gMykKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBuY2ggLSAxKSwgUkJSQUNFKSk7Ci0KLSAgICAgICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9kaWN0b3JzZXRtYWtlcihDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIE5BTUU6Ci0gICAgICAgICAgY2FzZSBOVU1CRVI6Ci0gICAgICAgICAgY2FzZSBFTExJUFNJUzoKLSAgICAgICAgICAgIHJlcyA9IChuY2ggPT0gMSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFNUUklORzoKLSAgICAgICAgICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyArK3BvcykKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBwb3MpLCBTVFJJTkcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHRlc3RsaXN0X2NvbXA6Ci0gKiAgICAodGVzdHxzdGFyX2V4cHIpICggY29tcF9mb3IgfCAoJywnICh0ZXN0fHN0YXJfZXhwcikpKiBbJywnXSApCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3RsaXN0X2NvbXAobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBvazsKLQotICAgIGlmIChuY2ggPT0gMCkgewotICAgICAgICBlcnJfc3RyaW5nKCJtaXNzaW5nIGNoaWxkIG5vZGVzIG9mIHRlc3RsaXN0X2NvbXAiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKG5jaCA9PSAyICYmIFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgIG9rID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG9rID0gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwKLSAgICAgICAgICAgICAgICB0ZXN0bGlzdF9jb21wLAotICAgICAgICAgICAgICAgIHZhbGlkYXRlX3Rlc3Rfb3Jfc3Rhcl9leHByLAotICAgICAgICAgICAgICAgICJ0ZXN0bGlzdF9jb21wIik7Ci0gICAgfQotICAgIHJldHVybiBvazsKLX0KLQotLyogIGRlY29yYXRvcjoKLSAqICAgICdAJyBkb3R0ZWRfbmFtZSBbICcoJyBbYXJnbGlzdF0gJyknIF0gTkVXTElORQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kZWNvcmF0b3Iobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgb2s7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBvayA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBkZWNvcmF0b3IpICYmCi0gICAgICAgICAgKG5jaCA9PSAzIHx8IG5jaCA9PSA1IHx8IG5jaCA9PSA2KSAmJgotICAgICAgICAgIHZhbGlkYXRlX2F0KENISUxEKHRyZWUsIDApKSAmJgotICAgICAgICAgIHZhbGlkYXRlX2RvdHRlZF9uYW1lKENISUxEKHRyZWUsIDEpKSAmJgotICAgICAgICAgIHZhbGlkYXRlX25ld2xpbmUoUkNISUxEKHRyZWUsIC0xKSkpOwotCi0gICAgaWYgKG9rICYmIG5jaCAhPSAzKSB7Ci0gICAgICAgIG9rID0gKHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLCAyKSkgJiYKLSAgICAgICAgICAgICAgdmFsaWRhdGVfcnBhcmVuKFJDSElMRCh0cmVlLCAtMikpKTsKLQotICAgICAgICBpZiAob2sgJiYgbmNoID09IDYpCi0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX2FyZ2xpc3QoQ0hJTEQodHJlZSwgMykpOwotICAgIH0KLQotICAgIHJldHVybiBvazsKLX0KLQotLyogIGRlY29yYXRvcnM6Ci0gKiAgICBkZWNvcmF0b3IrCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RlY29yYXRvcnMobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgaSwgbmNoLCBvazsKLSAgICBuY2ggPSBOQ0godHJlZSk7Ci0gICAgb2sgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBkZWNvcmF0b3JzKSAmJiBuY2ggPj0gMTsKLQotICAgIGZvciAoaSA9IDA7IG9rICYmIGkgPCBuY2g7ICsraSkKLSAgICAgICAgb2sgPSB2YWxpZGF0ZV9kZWNvcmF0b3IoQ0hJTEQodHJlZSwgaSkpOwotCi0gICAgcmV0dXJuIG9rOwotfQotCi0vKiAgd2l0aF9pdGVtOgotICogICB0ZXN0IFsnYXMnIGV4cHJdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3dpdGhfaXRlbShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHdpdGhfaXRlbSkKLSAgICAgICAgICAgICAgJiYgKG5jaCA9PSAxIHx8IG5jaCA9PSAzKQotICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKSk7Ci0gICAgaWYgKG9rICYmIG5jaCA9PSAzKQotICAgICAgICBvayA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDEpLCAiYXMiKQotICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsIDIpKSk7Ci0gICAgcmV0dXJuIG9rOwotfQotCi0vKiAgd2l0aF9zdG10OgotICogICAgMCAgICAgIDEgICAgICAgICAgLi4uICAgICAgICAgICAgIC0yICAgLTEKLSAqICAgJ3dpdGgnIHdpdGhfaXRlbSAoJywnIHdpdGhfaXRlbSkqICc6JyBzdWl0ZQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV93aXRoX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgaTsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBvayA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB3aXRoX3N0bXQpCi0gICAgICAgICYmIChuY2ggJSAyID09IDApCi0gICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJ3aXRoIikKLSAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oUkNISUxEKHRyZWUsIC0yKSkKLSAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoUkNISUxEKHRyZWUsIC0xKSkpOwotICAgIGZvciAoaSA9IDE7IG9rICYmIGkgPCBuY2ggLSAyOyBpICs9IDIpCi0gICAgICAgIG9rID0gdmFsaWRhdGVfd2l0aF9pdGVtKENISUxEKHRyZWUsIGkpKTsKLSAgICByZXR1cm4gb2s7Ci19Ci0KLS8qIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUgKi8KLQotc3RhdGljIGludAotdmFsaWRhdGVfZnVuY2RlZihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGZ1bmNkZWYpOwotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKG5jaCA9PSA1KSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImRlZiIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcGFyYW1ldGVycyhDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAzKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCA0KSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSA3KSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImRlZiIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcGFyYW1ldGVycyhDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9yYXJyb3coQ0hJTEQodHJlZSwgMykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCA0KSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCA1KSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCA2KSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciBmdW5jZGVmIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLyogYXN5bmNfZnVuY2RlZjogQVNZTkMgZnVuY2RlZiAqLwotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hc3luY19mdW5jZGVmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXN5bmNfZnVuY2RlZik7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDIpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgQVNZTkMpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZnVuY2RlZihDSElMRCh0cmVlLCAxKSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciBhc3luY19mdW5jZGVmIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiBhc3luY19zdG10OiBBU1lOQyAoZnVuY2RlZiB8IHdpdGhfc3RtdCB8IGZvcl9zdG10KSAqLwotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hc3luY19zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFzeW5jX3N0bXQpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMCksIEFTWU5DKSk7Ci0KLSAgICBpZiAobmNoICE9IDIpIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGFzeW5jX3N0bXQiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gZnVuY2RlZikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZnVuY2RlZihDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gd2l0aF9zdG10KSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV93aXRoX3N0bXQoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGZvcl9zdG10KSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mb3IoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0KLS8qIGRlY29yYXRlZAotICogICBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYpCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RlY29yYXRlZChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGRlY29yYXRlZCkKLSAgICAgICAgICAgICAgJiYgKG5jaCA9PSAyKQotICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kZWNvcmF0b3JzKFJDSElMRCh0cmVlLCAtMikpKTsKLSAgICBpZiAoVFlQRShSQ0hJTEQodHJlZSwgLTEpKSA9PSBmdW5jZGVmKQotICAgICAgICBvayA9IG9rICYmIHZhbGlkYXRlX2Z1bmNkZWYoUkNISUxEKHRyZWUsIC0xKSk7Ci0gICAgZWxzZQotICAgICAgICBvayA9IG9rICYmIHZhbGlkYXRlX2NsYXNzKFJDSElMRCh0cmVlLCAtMSkpOwotICAgIHJldHVybiBvazsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbGFtYmRlZihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBsYW1iZGVmKQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMykgfHwgKG5jaCA9PSA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJsYW1iZGEiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gNCkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZhcmFyZ3NsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICBlbHNlIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgImxhbWJkZWYiKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9sYW1iZGVmX25vY29uZChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBsYW1iZGVmX25vY29uZCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDMpIHx8IChuY2ggPT0gNCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAibGFtYmRhIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIG5jaCAtIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDQpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV92YXJhcmdzbGlzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgZWxzZSBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDMsICJsYW1iZGVmX25vY29uZCIpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBhcmdsaXN0OgotICoKLSAqICAoYXJndW1lbnQgJywnKSogKGFyZ3VtZW50IFsnLCddIHwgJyonIHRlc3QgWycsJyAnKionIHRlc3RdIHwgJyoqJyB0ZXN0KQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hcmdsaXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgaSA9IDA7Ci0gICAgaW50IG9rID0gMTsKLQotICAgIGlmIChuY2ggPD0gMCkKLSAgICAgICAgLyogcmFpc2UgdGhlIHJpZ2h0IGVycm9yIGZyb20gaGF2aW5nIGFuIGludmFsaWQgbnVtYmVyIG9mIGNoaWxkcmVuICovCi0gICAgICAgIHJldHVybiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCBuY2ggKyAxLCAiYXJnbGlzdCIpOwotCi0gICAgaWYgKG5jaCA+IDEpIHsKLSAgICAgICAgZm9yIChpPTA7IGk8bmNoOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBhcmd1bWVudCkgewotICAgICAgICAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQodHJlZSwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKE5DSChjaCkgPT0gMiAmJiBUWVBFKENISUxEKGNoLCAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgZXJyX3N0cmluZygibmVlZCAnKCcsICcpJyBmb3IgZ2VuZXJhdG9yIGV4cHJlc3Npb24iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgd2hpbGUgKG9rICYmIG5jaC1pID49IDIpIHsKLSAgICAgICAgLyogc2tpcCBsZWFkaW5nIChhcmd1bWVudCAnLCcpICovCi0gICAgICAgIG9rID0gKHZhbGlkYXRlX2FyZ3VtZW50KENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKzEpKSk7Ci0gICAgICAgIGlmIChvaykKLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgb2sgPSAxOwotICAgIGlmIChuY2gtaSA+IDApIHsKLSAgICAgICAgaW50IHN5bSA9IFRZUEUoQ0hJTEQodHJlZSwgaSkpOwotCi0gICAgICAgIGlmIChzeW0gPT0gYXJndW1lbnQpIHsKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfYXJndW1lbnQoQ0hJTEQodHJlZSwgaSkpOwotICAgICAgICAgICAgaWYgKG9rICYmIGkrMSAhPSBuY2gpIHsKLSAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGFyZ2xpc3Qgc3BlY2lmaWNhdGlvbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKGV4dHJhIHN0dWZmIG9uIGVuZCkiKTsKLSAgICAgICAgICAgICAgICBvayA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXJnbGlzdCBzcGVjaWZpY2F0aW9uIik7Ci0gICAgICAgICAgICBvayA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChvayk7Ci19Ci0KLQotCi0vKiAgYXJndW1lbnQ6ICggdGVzdCBbY29tcF9mb3JdIHwKLSAqICAgICAgICAgICAgICB0ZXN0ICc9JyB0ZXN0IHwKLSAqICAgICAgICAgICAgICAnKionIHRlc3QgfAotICogICAgICAgICAgICAgICcqJyB0ZXN0ICkKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfYXJndW1lbnQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXJndW1lbnQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gMykpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IERPVUJMRVNUQVIpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IFNUQVIpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAxKSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuY2ggPT0gMikgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocmVzICYmIChuY2ggPT0gMykpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAyKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0KLS8qICB0cmFpbGVyOgotICoKLSAqICAnKCcgW2FyZ2xpc3RdICcpJyB8ICdbJyBzdWJzY3JpcHRsaXN0ICddJyB8ICcuJyBOQU1FCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3RyYWlsZXIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCB0cmFpbGVyKSAmJiAoKG5jaCA9PSAyKSB8fCAobmNoID09IDMpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgc3dpdGNoIChUWVBFKENISUxEKHRyZWUsIDApKSkgewotICAgICAgICAgIGNhc2UgTFBBUjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3JwYXJlbihDSElMRCh0cmVlLCBuY2ggLSAxKSk7Ci0gICAgICAgICAgICBpZiAocmVzICYmIChuY2ggPT0gMykpCi0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXJnbGlzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIExTUUI6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgInRyYWlsZXIiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1YnNjcmlwdGxpc3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMiksIFJTUUIpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRE9UOgotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJ0cmFpbGVyIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJ0cmFpbGVyIik7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgc3Vic2NyaXB0bGlzdDoKLSAqCi0gKiAgc3Vic2NyaXB0ICgnLCcgc3Vic2NyaXB0KSogWycsJ10KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc3Vic2NyaXB0bGlzdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwgc3Vic2NyaXB0bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnNjcmlwdCwgInN1YnNjcmlwdGxpc3QiKSk7Ci19Ci0KLQotLyogIHN1YnNjcmlwdDoKLSAqCi0gKiAgJy4nICcuJyAnLicgfCB0ZXN0IHwgW3Rlc3RdICc6JyBbdGVzdF0gW3NsaWNlb3BdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3N1YnNjcmlwdChub2RlICp0cmVlKQotewotICAgIGludCBvZmZzZXQgPSAwOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHN1YnNjcmlwdCkgJiYgKG5jaCA+PSAxKSAmJiAobmNoIDw9IDQpOwotCi0gICAgaWYgKCFyZXMpIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgZXJyX3N0cmluZygiaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzdWJzY3JpcHQgbm9kZSIpOwotICAgICAgICByZXR1cm4gKDApOwotICAgIH0KLSAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gRE9UKQotICAgICAgICAvKiB0YWtlIGNhcmUgb2YgKCcuJyAnLicgJy4nKSBwb3NzaWJpbGl0eSAqLwotICAgICAgICByZXR1cm4gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDMsICJzdWJzY3JpcHQiKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG90KENISUxEKHRyZWUsIDIpKSk7Ci0gICAgaWYgKG5jaCA9PSAxKSB7Ci0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSB0ZXN0KQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotICAgIH0KLSAgICAvKiAgTXVzdCBiZSBbdGVzdF0gJzonIFt0ZXN0XSBbc2xpY2VvcF0sCi0gICAgICogIGJ1dCBhdCBsZWFzdCBvbmUgb2YgdGhlIG9wdGlvbmFsIGNvbXBvbmVudHMgd2lsbAotICAgICAqICBiZSBwcmVzZW50LCBidXQgd2UgZG9uJ3Qga25vdyB3aGljaCB5ZXQuCi0gICAgICovCi0gICAgaWYgKChUWVBFKENISUxEKHRyZWUsIDApKSAhPSBDT0xPTikgfHwgKG5jaCA9PSA0KSkgewotICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgb2Zmc2V0ID0gMTsKLSAgICB9Ci0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgb2Zmc2V0KSk7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBpbnQgcmVtID0gbmNoIC0gKytvZmZzZXQ7Ci0gICAgICAgIGlmIChyZW0pIHsKLSAgICAgICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIG9mZnNldCkpID09IHRlc3QpIHsKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIG9mZnNldCkpOwotICAgICAgICAgICAgICAgICsrb2Zmc2V0OwotICAgICAgICAgICAgICAgIC0tcmVtOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHJlcyAmJiByZW0pCi0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc2xpY2VvcChDSElMRCh0cmVlLCBvZmZzZXQpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfc2xpY2VvcChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICgobmNoID09IDEpIHx8IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJzbGljZW9wIikpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIHNsaWNlb3ApOwotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJzbGljZW9wIik7Ci0gICAgfQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDApKTsKLSAgICBpZiAocmVzICYmIChuY2ggPT0gMikpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3Rfb3Jfc3Rhcl9leHByKG5vZGUgKm4pCi17Ci0gICAgaWYgKFRZUEUobikgPT0gdGVzdCkKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3Rlc3Qobik7Ci0gICAgcmV0dXJuIHZhbGlkYXRlX3N0YXJfZXhwcihuKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhwcl9vcl9zdGFyX2V4cHIobm9kZSAqbikKLXsKLSAgICBpZiAoVFlQRShuKSA9PSBleHByKQotICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihuKTsKLSAgICByZXR1cm4gdmFsaWRhdGVfc3Rhcl9leHByKG4pOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHJsaXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLCBleHBybGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJfb3Jfc3Rhcl9leHByLCAiZXhwcmxpc3QiKSk7Ci19Ci0KLS8qIEluY3JlbWVudGluZyB2YWxpZGF0ZSBmdW5jdGlvbnMgcmV0dXJucyBub256ZXJvIGlmZiBzdWNjZXNzIChsaWtlIG90aGVyCi0gKiB2YWxpZGF0ZSBmdW5jdGlvbnMsIGFuZCBhZHZhbmNlICppIGJ5IHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoZWQgcGF0dGVybi4gKi8KLQotLyogdGVzdCAnOicgdGVzdCAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdF9jb2xvbl90ZXN0X2luYyhub2RlICp0cmVlLCBpbnQgKmkpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsICgqaSkrKykpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAoKmkpKyspKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAoKmkpKyspKSk7Ci19Ci0KLS8qIHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIgKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RpY3RfZWxlbWVudF9pbmMobm9kZSAqdHJlZSwgaW50ICppKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IDA7Ci0gICAgaWYgKG5jaCAtICppID49IDIpIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgKmkrMSkpID09IENPTE9OKSB7Ci0gICAgICAgICAgICAvKiB0ZXN0ICc6JyB0ZXN0ICovCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKHRyZWUsIGkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogJyoqJyBleHByICovCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCAoKmkpKyspKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHByKENISUxEKHRyZWUsICgqaSkrKykpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKgotICogIGRpY3RvcnNldG1ha2VyOgotICoKLSAqICAgKCAoKHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIpCi0gKiAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIpKSogWycsJ10pKSB8Ci0gKiAgICAgKCh0ZXN0IHwgJyonIHRlc3QpCi0gKiAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgfCAnKicgdGVzdCkpKiBbJywnXSkpICkKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGljdG9yc2V0bWFrZXIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXM7Ci0gICAgaW50IGkgPSAwOwotCi0gICAgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgZGljdG9yc2V0bWFrZXIpOwotICAgIGlmICghcmVzKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChuY2ggLSBpIDwgMSkgewotICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiZGljdG9yc2V0bWFrZXIiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKG5jaCAtIGkgPj0gMgotICAgICAgICAmJiAoKFRZUEUoQ0hJTEQodHJlZSwgaSsxKSkgPT0gQ09MT04pIHx8Ci0gICAgICAgICAgICAoVFlQRShDSElMRCh0cmVlLCBpKSkgPT0gRE9VQkxFU1RBUikpKSB7Ci0gICAgICAgIC8qIERpY3Rpb25hcnkgZGlzcGxheSBvciBkaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgIGlmIChuY2ggLSBpID49IDQgJiYgVFlQRShDSElMRCh0cmVlLCBpKzMpKSA9PSBjb21wX2ZvcikgewotICAgICAgICAgICAgLyogRGljdGlvbmFyeSBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3RfY29sb25fdGVzdF9pbmModHJlZSwgJmkpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIGkrKykpKTsKLSAgICAgICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogRGljdGlvbmFyeSBkaXNwbGF5LiAqLwotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3JlcGVhdGluZ19saXN0X3ZhcmlhYmxlKAotICAgICAgICAgICAgICAgICAgICB0cmVlLAotICAgICAgICAgICAgICAgICAgICBkaWN0b3JzZXRtYWtlciwKLSAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZGljdF9lbGVtZW50X2luYywKLSAgICAgICAgICAgICAgICAgICAgJmksCi0gICAgICAgICAgICAgICAgICAgICJkaWN0b3JzZXRtYWtlciIpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogU2V0IGRpc3BsYXkgb3Igc2V0IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgIGlmIChuY2ggLSBpID49IDIgJiYgVFlQRShDSElMRCh0cmVlLCBpICsgMSkpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgICAgICAvKiBTZXQgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrKykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgaSsrKSkpOwotICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBTZXQgZGlzcGxheS4gKi8KLSAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0b3JzZXRtYWtlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3Rlc3Rfb3Jfc3Rhcl9leHByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpY3RvcnNldG1ha2VyIik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobmNoIC0gaSA+IDApIHsKLSAgICAgICAgZXJyX3N0cmluZygiSWxsZWdhbCB0cmFpbGluZyBub2RlcyBmb3IgZGljdG9yc2V0bWFrZXIuIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiAxOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V2YWxfaW5wdXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBldmFsX2lucHV0KQotICAgICAgICAgICAgICAgJiYgKG5jaCA+PSAyKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdGxpc3QoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBuY2ggLSAxKSwgRU5ETUFSS0VSKSk7Ci0KLSAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgKG5jaCAtIDEpKTsgKytwb3MpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIHBvcyksIE5FV0xJTkUpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX25vZGUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgICBuY2ggID0gMDsgICAgICAgICAgICAgICAgICAgICAvKiBudW0uIGNoaWxkcmVuIG9uIGN1cnJlbnQgbm9kZSAgKi8KLSAgICBpbnQgICByZXMgID0gMTsgICAgICAgICAgICAgICAgICAgICAvKiByZXN1bHQgdmFsdWUgICAgICAgICAgICAgICAgICAgKi8KLSAgICBub2RlKiBuZXh0ID0gMDsgICAgICAgICAgICAgICAgICAgICAvKiBub2RlIHRvIHByb2Nlc3MgYWZ0ZXIgdGhpcyBvbmUgKi8KLQotICAgIHdoaWxlIChyZXMgJiYgKHRyZWUgIT0gMCkpIHsKLSAgICAgICAgbmNoICA9IE5DSCh0cmVlKTsKLSAgICAgICAgbmV4dCA9IDA7Ci0gICAgICAgIHN3aXRjaCAoVFlQRSh0cmVlKSkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBEZWZpbml0aW9uIG5vZGVzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBhc3luY19mdW5jZGVmOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXN5bmNfZnVuY2RlZih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXN5bmNfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FzeW5jX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZ1bmNkZWY6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mdW5jZGVmKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB3aXRoX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV93aXRoX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNsYXNzZGVmOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY2xhc3ModHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGRlY29yYXRlZDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2RlY29yYXRlZCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICAiVHJpdmlhbCIgcGFyc2UgdHJlZSBub2Rlcy4KLSAgICAgICAgICAgICAqICAoV2h5IGRpZCBJIGNhbGwgdGhlc2UgdHJpdmlhbD8pCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICBjYXNlIHN0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBzbWFsbF9zdG10OgotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBleHByX3N0bXQgfCBkZWxfc3RtdCB8IHBhc3Nfc3RtdCB8IGZsb3dfc3RtdCB8Ci0gICAgICAgICAgICAgKiAgaW1wb3J0X3N0bXQgfCBnbG9iYWxfc3RtdCB8IG5vbmxvY2FsX3N0bXQgfCBhc3NlcnRfc3RtdAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zbWFsbF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBmbG93X3N0bXQ6Ci0gICAgICAgICAgICByZXMgID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJmbG93X3N0bXQiKQotICAgICAgICAgICAgICAgICAgICAmJiAoKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IGJyZWFrX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gY29udGludWVfc3RtdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIDApKSA9PSB5aWVsZF9zdG10KQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHJldHVybl9zdG10KQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHJhaXNlX3N0bXQpKSk7Ci0gICAgICAgICAgICBpZiAocmVzKQotICAgICAgICAgICAgICAgIG5leHQgPSBDSElMRCh0cmVlLCAwKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG5jaCA9PSAxKQotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgZmxvd19zdG10IHR5cGUiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgeWllbGRfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3lpZWxkX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgQ29tcG91bmQgc3RhdGVtZW50cy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2Ugc2ltcGxlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaW1wbGVfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgY29tcG91bmRfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBvdW5kX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgRnVuZGFtZW50YWwgc3RhdGVtZW50cy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2UgZXhwcl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZXhwcl9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBkZWxfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2RlbF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBwYXNzX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgInBhc3MiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJwYXNzIikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBicmVha19zdG10OgotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJicmVhayIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImJyZWFrIikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb250aW51ZV9zdG10OgotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJjb250aW51ZSIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImNvbnRpbnVlIikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSByZXR1cm5fc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3JldHVybl9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSByYWlzZV9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcmFpc2Vfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgaW1wb3J0X3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pbXBvcnRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgaW1wb3J0X25hbWU6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pbXBvcnRfbmFtZSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgaW1wb3J0X2Zyb206Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pbXBvcnRfZnJvbSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZ2xvYmFsX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9nbG9iYWxfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugbm9ubG9jYWxfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX25vbmxvY2FsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFzc2VydF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXNzZXJ0X3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGlmX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pZih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugd2hpbGVfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3doaWxlKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBmb3Jfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2Zvcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgdHJ5X3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90cnkodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHN1aXRlOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc3VpdGUodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgRXhwcmVzc2lvbiBub2Rlcy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2UgdGVzdGxpc3Q6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0bGlzdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgeWllbGRfZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3lpZWxkX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHRlc3Q6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhbmRfdGVzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FuZF90ZXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBub3RfdGVzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX25vdF90ZXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb21wYXJpc29uOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcGFyaXNvbih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZXhwcmxpc3Q6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9leHBybGlzdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgY29tcF9vcDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfb3AodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGV4cHI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB4b3JfZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3hvcl9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhbmRfZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FuZF9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBzaGlmdF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc2hpZnRfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXJpdGhfZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FyaXRoX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHRlcm06Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXJtKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBmYWN0b3I6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mYWN0b3IodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHBvd2VyOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcG93ZXIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGF0b206Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hdG9tKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgLyogSG9wZWZ1bGx5IG5ldmVyIHJlYWNoZWQhICovCi0gICAgICAgICAgICBlcnJfc3RyaW5nKCJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlIik7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgdHJlZSA9IG5leHQ7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leHByX3RyZWUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfZXZhbF9pbnB1dCh0cmVlKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJjb3VsZCBub3QgdmFsaWRhdGUgZXhwcmVzc2lvbiB0dXBsZSIpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBmaWxlX2lucHV0OgotICogICAgICAoTkVXTElORSB8IHN0bXQpKiBFTkRNQVJLRVIKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZmlsZV9pbnB1dChub2RlICp0cmVlKQotewotICAgIGludCBqOwotICAgIGludCBuY2ggPSBOQ0godHJlZSkgLSAxOwotICAgIGludCByZXMgPSAoKG5jaCA+PSAwKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgbmNoKSwgRU5ETUFSS0VSKSk7Ci0KLSAgICBmb3IgKGogPSAwOyByZXMgJiYgKGogPCBuY2gpOyArK2opIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgaikpID09IHN0bXQpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10KENISUxEKHRyZWUsIGopKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbmV3bGluZShDSElMRCh0cmVlLCBqKSk7Ci0gICAgfQotICAgIC8qICBUaGlzIHN0YXlzIGluIHRvIHByZXZlbnQgYW55IGludGVybmFsIGZhaWx1cmVzIGZyb20gZ2V0dGluZyB0byB0aGUKLSAgICAgKiAgdXNlci4gIEhvcGVmdWxseSwgdGhpcyB3b24ndCBiZSBuZWVkZWQuICBJZiBhIHVzZXIgcmVwb3J0cyBnZXR0aW5nCi0gICAgICogIHRoaXMsIHdlIGhhdmUgc29tZSBkZWJ1Z2dpbmcgdG8gZG8uCi0gICAgICovCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoIlZBTElEQVRJT04gRkFJTFVSRTogcmVwb3J0IHRoaXMgdG8gdGhlIG1haW50YWluZXIhIik7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2VuY29kaW5nX2RlY2wobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAoKG5jaCA9PSAxKQotICAgICAgICAmJiB2YWxpZGF0ZV9maWxlX2lucHV0KENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiRXJyb3IgUGFyc2luZyBlbmNvZGluZ19kZWNsIik7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCiBzdGF0aWMgUHlPYmplY3QqCiBwaWNrbGVfY29uc3RydWN0b3IgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMgYi9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKaW5kZXggZDczNzYyNC4uMDExOTRhYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCisrKyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwpAQCAtMzIsNiArMzIsMTIgQEAKICNpbmNsdWRlICJ3aW5yZXBhcnNlLmgiCiAjZW5kaWYKIAorLyogT24gYW5kcm9pZCBBUEkgbGV2ZWwgMjEsICdBVF9FQUNDRVNTJyBpcyBub3QgZGVjbGFyZWQgYWx0aG91Z2gKKyAqIEhBVkVfRkFDQ0VTU0FUIGlzIGRlZmluZWQuICovCisjaWZkZWYgX19BTkRST0lEX18KKyN1bmRlZiBIQVZFX0ZBQ0NFU1NBVAorI2VuZGlmCisKICNpbmNsdWRlIDxzdGRpby5oPiAgLyogbmVlZGVkIGZvciBjdGVybWlkKCkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0xMjcsNiArMTMzLDEzIEBACiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0xJTlVYX1JBTkRPTV9ICisjICBpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKyMgIGluY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjZW5kaWYKKwogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKICMgIGRlZmluZSBURVJNU0laRV9VU0VfQ09OSU8KICNlbGlmIGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkKQEAgLTE1MSw2ICsxNjQsOCBAQAogI2RlZmluZSBIQVZFX0dFVExPR0lOICAgMQogI2RlZmluZSBIQVZFX1NQQVdOViAgICAgMQogI2RlZmluZSBIQVZFX0VYRUNWICAgICAgMQorI2RlZmluZSBIQVZFX1dTUEFXTlYgICAgMQorI2RlZmluZSBIQVZFX1dFWEVDViAgICAgMQogI2RlZmluZSBIQVZFX1BJUEUgICAgICAgMQogI2RlZmluZSBIQVZFX1NZU1RFTSAgICAgMQogI2RlZmluZSBIQVZFX0NXQUlUICAgICAgMQpAQCAtNjM0LDIyICs2NDksMTQgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jICBkZWZpbmUgX1B5TG9uZ19Gcm9tRGV2IFB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSNlbHNlCi0jICBkZWZpbmUgX1B5TG9uZ19Gcm9tRGV2IFB5TG9uZ19Gcm9tTG9uZwotI2VuZGlmCisjZGVmaW5lIF9QeUxvbmdfRnJvbURldiBQeUxvbmdfRnJvbUxvbmdMb25nCiAKIAogI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCiBzdGF0aWMgaW50CiBfUHlfRGV2X0NvbnZlcnRlcihQeU9iamVjdCAqb2JqLCB2b2lkICpwKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgKigoZGV2X3QgKilwKSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcob2JqKTsKLSNlbHNlCi0gICAgKigoZGV2X3QgKilwKSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhvYmopOwotI2VuZGlmCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAxOwpAQCAtNjcxLDIxICs2NzgsMjAgQEAKICNlbmRpZgogCiBzdGF0aWMgaW50Ci1fZmRfY29udmVydGVyKFB5T2JqZWN0ICpvLCBpbnQgKnAsIGNvbnN0IGNoYXIgKmFsbG93ZWQpCitfZmRfY29udmVydGVyKFB5T2JqZWN0ICpvLCBpbnQgKnApCiB7CiAgICAgaW50IG92ZXJmbG93OwogICAgIGxvbmcgbG9uZ192YWx1ZTsKIAogICAgIFB5T2JqZWN0ICppbmRleCA9IFB5TnVtYmVyX0luZGV4KG8pOwogICAgIGlmIChpbmRleCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQsIFB5X1RZUEUobyktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKGluZGV4KSk7CiAgICAgbG9uZ192YWx1ZSA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhpbmRleCwgJm92ZXJmbG93KTsKICAgICBQeV9ERUNSRUYoaW5kZXgpOworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAgICAgaWYgKG92ZXJmbG93ID4gMCB8fCBsb25nX3ZhbHVlID4gSU5UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJmZCBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSIpOwpAQCAtNzA4LDcgKzcxNCwxNSBAQAogICAgICAgICAqKGludCAqKXAgPSBERUZBVUxUX0RJUl9GRDsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIHJldHVybiBfZmRfY29udmVydGVyKG8sIChpbnQgKilwLCAiaW50ZWdlciIpOworICAgIGVsc2UgaWYgKFB5SW5kZXhfQ2hlY2sobykpIHsKKyAgICAgICAgcmV0dXJuIF9mZF9jb252ZXJ0ZXIobywgKGludCAqKXApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgaW50ZWdlciBvciBOb25lLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobyktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiB9CiAKIApAQCAtNzIzLDcgKzczNyw3IEBACiAgKgogICogICAqIE9uIFdpbmRvd3MsIGlmIHdlIGdldCBhIChVbmljb2RlKSBzdHJpbmcgd2UKICAqICAgICBleHRyYWN0IHRoZSB3Y2hhcl90ICogYW5kIHJldHVybiBpdDsgaWYgd2UgZ2V0Ci0gKiAgICAgYnl0ZXMgd2UgZXh0cmFjdCB0aGUgY2hhciAqIGFuZCByZXR1cm4gdGhhdC4KKyAqICAgICBieXRlcyB3ZSBkZWNvZGUgdG8gd2NoYXJfdCAqIGFuZCByZXR1cm4gdGhhdC4KICAqCiAgKiAgICogT24gYWxsIG90aGVyIHBsYXRmb3Jtcywgc3RyaW5ncyBhcmUgZW5jb2RlZAogICogICAgIHRvIGJ5dGVzIHVzaW5nIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgdGhlbiB3ZQpAQCAtNzU1LDcgKzc2OSw5IEBACiAgKiAgICAgYW5kIHdhcyBub3QgZW5jb2RlZC4gIChPbmx5IHVzZWQgb24gV2luZG93cy4pCiAgKiAgIHBhdGgubmFycm93CiAgKiAgICAgUG9pbnRzIHRvIHRoZSBwYXRoIGlmIGl0IHdhcyBleHByZXNzZWQgYXMgYnl0ZXMsCi0gKiAgICAgb3IgaXQgd2FzIFVuaWNvZGUgYW5kIHdhcyBlbmNvZGVkIHRvIGJ5dGVzLgorICogICAgIG9yIGl0IHdhcyBVbmljb2RlIGFuZCB3YXMgZW5jb2RlZCB0byBieXRlcy4gKE9uIFdpbmRvd3MsCisgKiAgICAgaXMgYW4gbm9uLXplcm8gaW50ZWdlciBpZiB0aGUgcGF0aCB3YXMgZXhwcmVzc2VkIGFzIGJ5dGVzLgorICogICAgIFRoZSB0eXBlIGlzIGRlbGliZXJhdGVseSBpbmNvbXBhdGlibGUgdG8gcHJldmVudCBtaXN1c2UuKQogICogICBwYXRoLmZkCiAgKiAgICAgQ29udGFpbnMgYSBmaWxlIGRlc2NyaXB0b3IgaWYgcGF0aC5hY2NlcHRfZmQgd2FzIHRydWUKICAqICAgICBhbmQgdGhlIGNhbGxlciBwcm92aWRlZCBhIHNpZ25lZCBpbnRlZ2VyIGluc3RlYWQgb2YgYW55CkBAIC03OTksMTYgKzgxNSwyNSBAQAogICAgIGNvbnN0IGNoYXIgKmFyZ3VtZW50X25hbWU7CiAgICAgaW50IG51bGxhYmxlOwogICAgIGludCBhbGxvd19mZDsKLSAgICB3Y2hhcl90ICp3aWRlOwotICAgIGNoYXIgKm5hcnJvdzsKKyAgICBjb25zdCB3Y2hhcl90ICp3aWRlOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBCT09MIG5hcnJvdzsKKyNlbHNlCisgICAgY29uc3QgY2hhciAqbmFycm93OworI2VuZGlmCiAgICAgaW50IGZkOwogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwogICAgIFB5T2JqZWN0ICpvYmplY3Q7CiAgICAgUHlPYmplY3QgKmNsZWFudXA7CiB9IHBhdGhfdDsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNkZWZpbmUgUEFUSF9UX0lOSVRJQUxJWkUoZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRfbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkKSBcCisgICAge2Z1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCwgTlVMTCwgRkFMU0UsIC0xLCAwLCBOVUxMLCBOVUxMfQorI2Vsc2UKICNkZWZpbmUgUEFUSF9UX0lOSVRJQUxJWkUoZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRfbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkKSBcCiAgICAge2Z1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCwgTlVMTCwgTlVMTCwgLTEsIDAsIE5VTEwsIE5VTEx9CisjZW5kaWYKIAogc3RhdGljIHZvaWQKIHBhdGhfY2xlYW51cChwYXRoX3QgKnBhdGgpIHsKQEAgLTgxOCwxMSArODQzLDE5IEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhdGhfY29udmVydGVyKFB5T2JqZWN0ICpvLCB2b2lkICpwKSB7CitwYXRoX2NvbnZlcnRlcihQeU9iamVjdCAqbywgdm9pZCAqcCkKK3sKICAgICBwYXRoX3QgKnBhdGggPSAocGF0aF90ICopcDsKLSAgICBQeU9iamVjdCAqdW5pY29kZSwgKmJ5dGVzOworICAgIFB5T2JqZWN0ICpieXRlcywgKnRvX2NsZWFudXAgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwotICAgIGNoYXIgKm5hcnJvdzsKKyAgICBpbnQgaXNfaW5kZXgsIGlzX2J1ZmZlciwgaXNfYnl0ZXMsIGlzX3VuaWNvZGU7CisgICAgLyogRGVmYXVsdCB0byBmYWlsdXJlLCBmb3JjaW5nIGV4cGxpY2l0IHNpZ25hbGluZyBvZiBzdWNjY2Vzcy4gKi8KKyAgICBpbnQgcmV0ID0gMDsKKyAgICBjb25zdCBjaGFyICpuYXJyb3c7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICp3bzsKKyAgICBjb25zdCB3Y2hhcl90ICp3aWRlOworI2VuZGlmCiAKICNkZWZpbmUgRk9STUFUX0VYQ0VQVElPTihleGMsIGZtdCkgXAogICAgIFB5RXJyX0Zvcm1hdChleGMsICIlcyVzIiBmbXQsIFwKQEAgLTgzNiwxMjIgKzg2OSwxOTEgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgLyogZW5zdXJlIGl0J3MgYWx3YXlzIHNhZmUgdG8gY2FsbCBwYXRoX2NsZWFudXAoKSAqLworICAgIC8qIEVuc3VyZSBpdCdzIGFsd2F5cyBzYWZlIHRvIGNhbGwgcGF0aF9jbGVhbnVwKCkuICovCiAgICAgcGF0aC0+Y2xlYW51cCA9IE5VTEw7CiAKLSAgICBpZiAobyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIGlmICghcGF0aC0+bnVsbGFibGUpIHsKLSAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3BlY2lmeSBOb25lIGZvciAlcyBhcmd1bWVudCIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KKyAgICBpZiAoKG8gPT0gUHlfTm9uZSkgJiYgcGF0aC0+bnVsbGFibGUpIHsKICAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBwYXRoLT5uYXJyb3cgPSBGQUxTRTsKKyNlbHNlCiAgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7CisjZW5kaWYKICAgICAgICAgcGF0aC0+bGVuZ3RoID0gMDsKICAgICAgICAgcGF0aC0+b2JqZWN0ID0gbzsKICAgICAgICAgcGF0aC0+ZmQgPSAtMTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG8pOwotICAgIGlmICh1bmljb2RlKSB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICB3Y2hhcl90ICp3aWRlOworICAgIC8qIE9ubHkgY2FsbCB0aGlzIGhlcmUgc28gdGhhdCB3ZSBkb24ndCB0cmVhdCB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICAgICAgb3MuZnNwYXRoKCkgYXMgYW4gZmQgb3IgYnVmZmVyLiAqLworICAgIGlzX2luZGV4ID0gcGF0aC0+YWxsb3dfZmQgJiYgUHlJbmRleF9DaGVjayhvKTsKKyAgICBpc19idWZmZXIgPSBQeU9iamVjdF9DaGVja0J1ZmZlcihvKTsKKyAgICBpc19ieXRlcyA9IFB5Qnl0ZXNfQ2hlY2sobyk7CisgICAgaXNfdW5pY29kZSA9IFB5VW5pY29kZV9DaGVjayhvKTsKIAotICAgICAgICB3aWRlID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pY29kZSwgJmxlbmd0aCk7CisgICAgaWYgKCFpc19pbmRleCAmJiAhaXNfYnVmZmVyICYmICFpc191bmljb2RlICYmICFpc19ieXRlcykgeworICAgICAgICAvKiBJbmxpbmUgUHlPU19GU1BhdGgoKSBmb3IgYmV0dGVyIGVycm9yIG1lc3NhZ2VzLiAqLworICAgICAgICBfUHlfSURFTlRJRklFUihfX2ZzcGF0aF9fKTsKKyAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOworCisgICAgICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX2ZzcGF0aF9fKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZnVuYykgeworICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICAgICB9CisKKyAgICAgICAgbyA9IHRvX2NsZWFudXAgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIGlmIChOVUxMID09IG8pIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sobykpIHsKKyAgICAgICAgICAgIGlzX3VuaWNvZGUgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2sobykpIHsKKyAgICAgICAgICAgIGlzX2J5dGVzID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChpc191bmljb2RlKSB7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICB3aWRlID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUobywgJmxlbmd0aCk7CiAgICAgICAgIGlmICghd2lkZSkgewotICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlbmd0aCA+IDMyNzY3KSB7CiAgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICIlcyB0b28gbG9uZyBmb3IgV2luZG93cyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdjc2xlbih3aWRlKSAhPSBsZW5ndGgpIHsKLSAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIGluICVzIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KIAogICAgICAgICBwYXRoLT53aWRlID0gd2lkZTsKLSAgICAgICAgcGF0aC0+bmFycm93ID0gTlVMTDsKICAgICAgICAgcGF0aC0+bGVuZ3RoID0gbGVuZ3RoOwogICAgICAgICBwYXRoLT5vYmplY3QgPSBvOwogICAgICAgICBwYXRoLT5mZCA9IC0xOwotICAgICAgICBwYXRoLT5jbGVhbnVwID0gdW5pY29kZTsKLSAgICAgICAgcmV0dXJuIFB5X0NMRUFOVVBfU1VQUE9SVEVEOworICAgICAgICByZXQgPSAxOworICAgICAgICBnb3RvIGV4aXQ7CiAjZWxzZQotICAgICAgICBpbnQgY29udmVydGVkID0gUHlVbmljb2RlX0ZTQ29udmVydGVyKHVuaWNvZGUsICZieXRlcyk7Ci0gICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICAgICAgaWYgKCFjb252ZXJ0ZWQpCi0gICAgICAgICAgICBieXRlcyA9IE5VTEw7CisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICZieXRlcykpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIobykpCi0gICAgICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbU9iamVjdChvKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYnl0ZXMgPSBOVUxMOworICAgIGVsc2UgaWYgKGlzX2J5dGVzKSB7CisgICAgICAgIGJ5dGVzID0gbzsKKyAgICAgICAgUHlfSU5DUkVGKGJ5dGVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNfYnVmZmVyKSB7CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICIlcyVzJXMgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyBwYXRoLT5mdW5jdGlvbl9uYW1lIDogIiIsCisgICAgICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gIjogIiAgICAgICAgICAgICAgICA6ICIiLAorICAgICAgICAgICAgcGF0aC0+YXJndW1lbnRfbmFtZSA/IHBhdGgtPmFyZ3VtZW50X25hbWUgOiAicGF0aCIsCisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCAmJiBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBvciBOb25lIiA6CisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyIiA6CisgICAgICAgICAgICBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBOb25lIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIiwKKyAgICAgICAgICAgIFB5X1RZUEUobyktPnRwX25hbWUpKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21PYmplY3Qobyk7CiAgICAgICAgIGlmICghYnl0ZXMpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBpZiAocGF0aC0+YWxsb3dfZmQpIHsKLSAgICAgICAgICAgICAgICBpbnQgZmQ7Ci0gICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IF9mZF9jb252ZXJ0ZXIobywgJmZkLAotICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciIpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPm9iamVjdCA9IG87Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPmZkID0gZmQ7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKCFieXRlcykgewotICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwgImlsbGVnYWwgdHlwZSBmb3IgJXMgcGFyYW1ldGVyIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQorICAgIGVsc2UgaWYgKGlzX2luZGV4KSB7CisgICAgICAgIGlmICghX2ZkX2NvbnZlcnRlcihvLCAmcGF0aC0+ZmQpKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICAgICAgcGF0aC0+bmFycm93ID0gRkFMU0U7CisjZWxzZQorICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOwogI2VuZGlmCisgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7CisgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CisgICAgICAgIHJldCA9IDE7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgZXJyb3JfZXhpdDoKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiVzJXMlcyBzaG91bGQgYmUgJXMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgcGF0aC0+ZnVuY3Rpb25fbmFtZSA/IHBhdGgtPmZ1bmN0aW9uX25hbWUgOiAiIiwKKyAgICAgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyAiOiAiICAgICAgICAgICAgICAgIDogIiIsCisgICAgICAgICAgICBwYXRoLT5hcmd1bWVudF9uYW1lID8gcGF0aC0+YXJndW1lbnRfbmFtZSA6ICJwYXRoIiwKKyAgICAgICAgICAgIHBhdGgtPmFsbG93X2ZkICYmIHBhdGgtPm51bGxhYmxlID8gInN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIG9yIE5vbmUiIDoKKyAgICAgICAgICAgIHBhdGgtPmFsbG93X2ZkID8gInN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIiIDoKKyAgICAgICAgICAgIHBhdGgtPm51bGxhYmxlID8gInN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIE5vbmUiIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZywgYnl0ZXMgb3Igb3MuUGF0aExpa2UiLAorICAgICAgICAgICAgUHlfVFlQRShvKS0+dHBfbmFtZSk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAKICAgICBsZW5ndGggPSBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKTsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKGxlbmd0aCA+IE1BWF9QQVRILTEpIHsKLSAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKLSAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotI2VuZGlmCi0KICAgICBuYXJyb3cgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CiAgICAgaWYgKChzaXplX3QpbGVuZ3RoICE9IHN0cmxlbihuYXJyb3cpKSB7CiAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIGluICVzIik7CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCisjaWZkZWYgTVNfV0lORE9XUworICAgIHdvID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoCisgICAgICAgIG5hcnJvdywKKyAgICAgICAgbGVuZ3RoCisgICAgKTsKKyAgICBpZiAoIXdvKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICB3aWRlID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcod28sICZsZW5ndGgpOworICAgIFB5X0RFQ1JFRih3byk7CisKKyAgICBpZiAoIXdpZGUpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAobGVuZ3RoID4gMzI3NjcpIHsKKyAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAod2NzbGVuKHdpZGUpICE9IGxlbmd0aCkgeworICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcyIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHBhdGgtPndpZGUgPSB3aWRlOworICAgIHBhdGgtPm5hcnJvdyA9IFRSVUU7CisjZWxzZQogICAgIHBhdGgtPndpZGUgPSBOVUxMOwogICAgIHBhdGgtPm5hcnJvdyA9IG5hcnJvdzsKKyNlbmRpZgogICAgIHBhdGgtPmxlbmd0aCA9IGxlbmd0aDsKICAgICBwYXRoLT5vYmplY3QgPSBvOwogICAgIHBhdGgtPmZkID0gLTE7Ci0gICAgcGF0aC0+Y2xlYW51cCA9IGJ5dGVzOwotICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKKyAgICBpZiAoYnl0ZXMgPT0gbykgeworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICByZXQgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGF0aC0+Y2xlYW51cCA9IGJ5dGVzOworICAgICAgICByZXQgPSBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKKyAgICB9CisgZXhpdDoKKyAgICBQeV9YREVDUkVGKHRvX2NsZWFudXApOworICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkCi1hcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihjaGFyICpmdW5jdGlvbl9uYW1lLCBjaGFyICphcmd1bWVudF9uYW1lKSB7Cithcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBjb25zdCBjaGFyICphcmd1bWVudF9uYW1lKQorewogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAogICAgICAgICAiJXMlcyVzIHVuYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iLAogICAgICAgICAoZnVuY3Rpb25fbmFtZSAhPSBOVUxMKSA/IGZ1bmN0aW9uX25hbWUgOiAiIiwKQEAgLTk3NCw3ICsxMDc2LDggQEAKIH0KIAogc3RhdGljIGludAotZmRfc3BlY2lmaWVkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCkgeworZmRfc3BlY2lmaWVkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCkKK3sKICAgICBpZiAoZmQgPT0gLTEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC05ODMsNyArMTA4Niw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZvbGxvd19zeW1saW5rcykgeworZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorewogICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC05OTIsOCArMTA5NiwxMyBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXRoX2FuZF9kaXJfZmRfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpIHsKLSAgICBpZiAoIXBhdGgtPm5hcnJvdyAmJiAhcGF0aC0+d2lkZSAmJiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSkgeworcGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKQoreworICAgIGlmICghcGF0aC0+d2lkZSAmJiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorI2lmbmRlZiBNU19XSU5ET1dTCisgICAgICAgICYmICFwYXRoLT5uYXJyb3cKKyNlbmRpZgorICAgICkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICIlczogY2FuJ3Qgc3BlY2lmeSBkaXJfZmQgd2l0aG91dCBtYXRjaGluZyBwYXRoIiwKICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX25hbWUpOwpAQCAtMTAwMyw3ICsxMTEyLDggQEAKIH0KIAogc3RhdGljIGludAotZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsIGludCBmZCkgeworZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsIGludCBmZCkKK3sKICAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgJiYgKGZkICE9IC0xKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICIlczogY2FuJ3Qgc3BlY2lmeSBib3RoIGRpcl9mZCBhbmQgZmQiLApAQCAtMTAxNCw4ICsxMTI0LDkgQEAKIH0KIAogc3RhdGljIGludAotZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CitmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCit7CiAgICAgaWYgKChmZCA+IDApICYmICghZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICIlczogY2Fubm90IHVzZSBmZCBhbmQgZm9sbG93X3N5bWxpbmtzIHRvZ2V0aGVyIiwKQEAgLTEwMjYsOCArMTEzNyw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpcl9mZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGRpcl9mZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykgeworZGlyX2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKQorewogICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoIWZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbm5vdCB1c2UgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgdG9nZXRoZXIiLApAQCAtMTAzOCw3ICsxMTUwLDcgQEAKIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB0eXBlZGVmIFBZX0xPTkdfTE9ORyBQeV9vZmZfdDsKKyAgICB0eXBlZGVmIGxvbmcgbG9uZyBQeV9vZmZfdDsKICNlbHNlCiAgICAgdHlwZWRlZiBvZmZfdCBQeV9vZmZfdDsKICNlbmRpZgpAQCAtMTA2Niw0MSArMTE3OCwxMyBAQAogI2VuZGlmCiB9CiAKLQotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAKLS8qIExlZ2FjeSBpbXBsZW1lbnRhdGlvbiBvZiBfUHlWZXJpZnlfZmRfZHVwMiB3aGlsZSB0cmFuc2l0aW9uaW5nIHRvCi0gKiBNU1ZDIDE0LjAuIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZC4gKGlzc3VlMjM1MjQpCi0gKi8KLSNkZWZpbmUgSU9JTkZPX0wyRSA1Ci0jZGVmaW5lIElPSU5GT19BUlJBWVMgNjQKLSNkZWZpbmUgSU9JTkZPX0FSUkFZX0VMVFMgICAoMSA8PCBJT0lORk9fTDJFKQotI2RlZmluZSBfTkhBTkRMRV8gICAgICAgICAgIChJT0lORk9fQVJSQVlTICogSU9JTkZPX0FSUkFZX0VMVFMpCi0jZGVmaW5lIF9OT19DT05TT0xFX0ZJTEVOTyAoaW50cHRyX3QpLTIKLQotLyogdGhlIHNwZWNpYWwgY2FzZSBvZiBjaGVja2luZyBkdXAyLiAgVGhlIHRhcmdldCBmZCBtdXN0IGJlIGluIGEgc2Vuc2libGUgcmFuZ2UgKi8KLXN0YXRpYyBpbnQKLV9QeVZlcmlmeV9mZF9kdXAyKGludCBmZDEsIGludCBmZDIpCi17Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQxKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGZkMiA9PSBfTk9fQ09OU09MRV9GSUxFTk8pCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICgodW5zaWduZWQpZmQyIDwgX05IQU5ETEVfKQotICAgICAgICByZXR1cm4gMTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotfQotI2Vsc2UKLSNkZWZpbmUgX1B5VmVyaWZ5X2ZkX2R1cDIoZmQxLCBmZDIpIChfUHlWZXJpZnlfZmQoZmQxKSAmJiAoZmQyKSA+PSAwKQotI2VuZGlmCi0KICNpZmRlZiBNU19XSU5ET1dTCiAKIHN0YXRpYyBpbnQKIHdpbjMyX2dldF9yZXBhcnNlX3RhZyhIQU5ETEUgcmVwYXJzZV9wb2ludF9oYW5kbGUsIFVMT05HICpyZXBhcnNlX3RhZykKIHsKLSAgICBjaGFyIHRhcmdldF9idWZmZXJbTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkVdOwotICAgIFJFUEFSU0VfREFUQV9CVUZGRVIgKnJkYiA9IChSRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKKyAgICBjaGFyIHRhcmdldF9idWZmZXJbX1B5X01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKKyAgICBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKICAgICBEV09SRCBuX2J5dGVzX3JldHVybmVkOwogCiAgICAgaWYgKDAgPT0gRGV2aWNlSW9Db250cm9sKApAQCAtMTE1OSw3ICsxMjQzLDcgQEAKICAgICBmb3IgKGUgPSBfd2Vudmlyb247ICplICE9IE5VTEw7IGUrKykgewogICAgICAgICBQeU9iamVjdCAqazsKICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgIHdjaGFyX3QgKnAgPSB3Y3NjaHIoKmUsIEwnPScpOworICAgICAgICBjb25zdCB3Y2hhcl90ICpwID0gd2NzY2hyKCplLCBMJz0nKTsKICAgICAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBrID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcigqZSwgKFB5X3NzaXplX3QpKHAtKmUpKTsKQEAgLTExODcsNyArMTI3MSw3IEBACiAgICAgZm9yIChlID0gZW52aXJvbjsgKmUgIT0gTlVMTDsgZSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICprOwogICAgICAgICBQeU9iamVjdCAqdjsKLSAgICAgICAgY2hhciAqcCA9IHN0cmNocigqZSwgJz0nKTsKKyAgICAgICAgY29uc3QgY2hhciAqcCA9IHN0cmNocigqZSwgJz0nKTsKICAgICAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBrID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgqZSwgKGludCkocC0qZSkpOwpAQCAtMTIyMiw3ICsxMzA2LDcgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKIHN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9lcnJvcihjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZmlsZW5hbWUpCit3aW4zMl9lcnJvcihjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZmlsZW5hbWUpCiB7CiAgICAgLyogWFhYIFdlIHNob3VsZCBwYXNzIHRoZSBmdW5jdGlvbiBuYW1lIGFsb25nIGluIHRoZSBmdXR1cmUuCiAgICAgICAgKHdpbnJlZy5jIGFsc28gd2FudHMgdG8gcGFzcyB0aGUgZnVuY3Rpb24gbmFtZS4pCkBAIC0xMjM3LDcgKzEzMjEsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luMzJfZXJyb3Jfb2JqZWN0KGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogZmlsZW5hbWUpCit3aW4zMl9lcnJvcl9vYmplY3QoY29uc3QgY2hhciogZnVuY3Rpb24sIFB5T2JqZWN0KiBmaWxlbmFtZSkKIHsKICAgICAvKiBYWFggLSBzZWUgd2luMzJfZXJyb3IgZm9yIGNvbW1lbnRzIG9uICdmdW5jdGlvbicgKi8KICAgICBlcnJubyA9IEdldExhc3RFcnJvcigpOwpAQCAtMTI5Nyw5ICsxMzgxLDYgQEAKICAgICBpbnQgcmVzOwogICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC0xMzIwLDMxICsxNDAxLDYgQEAKICAgIGl0IGFsc28gbmVlZHMgdG8gc2V0ICJtYWdpYyIgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluZGljYXRpbmcKICAgIHRoZSBwZXItZHJpdmUgY3VycmVudCBkaXJlY3RvcnksIHdoaWNoIGFyZSBvZiB0aGUgZm9ybSA9PGRyaXZlPjogKi8KIHN0YXRpYyBCT09MIF9fc3RkY2FsbAotd2luMzJfY2hkaXIoTFBDU1RSIHBhdGgpCi17Ci0gICAgY2hhciBuZXdfcGF0aFtNQVhfUEFUSF07Ci0gICAgaW50IHJlc3VsdDsKLSAgICBjaGFyIGVudls0XSA9ICI9eDoiOwotCi0gICAgaWYoIVNldEN1cnJlbnREaXJlY3RvcnlBKHBhdGgpKQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgcmVzdWx0ID0gR2V0Q3VycmVudERpcmVjdG9yeUEoUHlfQVJSQVlfTEVOR1RIKG5ld19wYXRoKSwgbmV3X3BhdGgpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgLyogSW4gdGhlIEFOU0kgQVBJLCB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBwYXRocyBsb25nZXIKLSAgICAgICB0aGFuIE1BWF9QQVRILTEgKG5vdCBpbmNsdWRpbmcgdGhlIGZpbmFsIG51bGwgY2hhcmFjdGVyKS4gKi8KLSAgICBhc3NlcnQocmVzdWx0IDwgUHlfQVJSQVlfTEVOR1RIKG5ld19wYXRoKSk7Ci0gICAgaWYgKHN0cm5jbXAobmV3X3BhdGgsICJcXFxcIiwgMikgPT0gMCB8fAotICAgICAgICBzdHJuY21wKG5ld19wYXRoLCAiLy8iLCAyKSA9PSAwKQotICAgICAgICAvKiBVTkMgcGF0aCwgbm90aGluZyB0byBkby4gKi8KLSAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgZW52WzFdID0gbmV3X3BhdGhbMF07Ci0gICAgcmV0dXJuIFNldEVudmlyb25tZW50VmFyaWFibGVBKGVudiwgbmV3X3BhdGgpOwotfQotCi0vKiBUaGUgVW5pY29kZSB2ZXJzaW9uIGRpZmZlcnMgZnJvbSB0aGUgQU5TSSB2ZXJzaW9uCi0gICBzaW5jZSB0aGUgY3VycmVudCBkaXJlY3RvcnkgbWlnaHQgZXhjZWVkIE1BWF9QQVRIIGNoYXJhY3RlcnMgKi8KLXN0YXRpYyBCT09MIF9fc3RkY2FsbAogd2luMzJfd2NoZGlyKExQQ1dTVFIgcGF0aCkKIHsKICAgICB3Y2hhcl90IHBhdGhfYnVmW01BWF9QQVRIXSwgKm5ld19wYXRoID0gcGF0aF9idWY7CkBAIC0xMzkwLDMzICsxNDQ2LDEwIEBACiAjZGVmaW5lIEhBVkVfU1RBVF9OU0VDIDEKICNkZWZpbmUgSEFWRV9TVFJVQ1RfU1RBVF9TVF9GSUxFX0FUVFJJQlVURVMgMQogCi1zdGF0aWMgQk9PTAotYXR0cmlidXRlc19mcm9tX2RpcihMUENTVFIgcHN6RmlsZSwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HICpyZXBhcnNlX3RhZykKLXsKLSAgICBIQU5ETEUgaEZpbmRGaWxlOwotICAgIFdJTjMyX0ZJTkRfREFUQUEgRmlsZURhdGE7Ci0gICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZUEocHN6RmlsZSwgJkZpbGVEYXRhKTsKLSAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZigqaW5mbykpOwotICAgICpyZXBhcnNlX3RhZyA9IDA7Ci0gICAgaW5mby0+ZHdGaWxlQXR0cmlidXRlcyA9IEZpbGVEYXRhLmR3RmlsZUF0dHJpYnV0ZXM7Ci0gICAgaW5mby0+ZnRDcmVhdGlvblRpbWUgICA9IEZpbGVEYXRhLmZ0Q3JlYXRpb25UaW1lOwotICAgIGluZm8tPmZ0TGFzdEFjY2Vzc1RpbWUgPSBGaWxlRGF0YS5mdExhc3RBY2Nlc3NUaW1lOwotICAgIGluZm8tPmZ0TGFzdFdyaXRlVGltZSAgPSBGaWxlRGF0YS5mdExhc3RXcml0ZVRpbWU7Ci0gICAgaW5mby0+bkZpbGVTaXplSGlnaCAgICA9IEZpbGVEYXRhLm5GaWxlU2l6ZUhpZ2g7Ci0gICAgaW5mby0+bkZpbGVTaXplTG93ICAgICA9IEZpbGVEYXRhLm5GaWxlU2l6ZUxvdzsKLS8qICBpbmZvLT5uTnVtYmVyT2ZMaW5rcyAgID0gMTsgKi8KLSAgICBpZiAoRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpCi0gICAgICAgICpyZXBhcnNlX3RhZyA9IEZpbGVEYXRhLmR3UmVzZXJ2ZWQwOwotICAgIHJldHVybiBUUlVFOwotfQotCiBzdGF0aWMgdm9pZAotZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KFdJTjMyX0ZJTkRfREFUQVcgKnBGaWxlRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICBVTE9ORyAqcmVwYXJzZV90YWcpCitmaW5kX2RhdGFfdG9fZmlsZV9pbmZvKFdJTjMyX0ZJTkRfREFUQVcgKnBGaWxlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgIFVMT05HICpyZXBhcnNlX3RhZykKIHsKICAgICBtZW1zZXQoaW5mbywgMCwgc2l6ZW9mKCppbmZvKSk7CiAgICAgaW5mby0+ZHdGaWxlQXR0cmlidXRlcyA9IHBGaWxlRGF0YS0+ZHdGaWxlQXR0cmlidXRlczsKQEAgLTE0MzMsNyArMTQ2Niw3IEBACiB9CiAKIHN0YXRpYyBCT09MCi1hdHRyaWJ1dGVzX2Zyb21fZGlyX3coTFBDV1NUUiBwc3pGaWxlLCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywgVUxPTkcgKnJlcGFyc2VfdGFnKQorYXR0cmlidXRlc19mcm9tX2RpcihMUENXU1RSIHBzekZpbGUsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyAqcmVwYXJzZV90YWcpCiB7CiAgICAgSEFORExFIGhGaW5kRmlsZTsKICAgICBXSU4zMl9GSU5EX0RBVEFXIEZpbGVEYXRhOwpAQCAtMTQ0MSw3ICsxNDc0LDcgQEAKICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KCZGaWxlRGF0YSwgaW5mbywgcmVwYXJzZV90YWcpOworICAgIGZpbmRfZGF0YV90b19maWxlX2luZm8oJkZpbGVEYXRhLCBpbmZvLCByZXBhcnNlX3RhZyk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTE0NTgsNyArMTQ5MSw3IEBACiAgICAgaWYoIWJ1Zl9zaXplKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBidWYgPSBQeU1lbV9OZXcod2NoYXJfdCwgYnVmX3NpemUrMSk7CisgICAgYnVmID0gKHdjaGFyX3QgKilQeU1lbV9SYXdNYWxsb2MoKGJ1Zl9zaXplICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgIGlmICghYnVmKSB7CiAgICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9PVVRPRk1FTU9SWSk7CiAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTE0NjgsMTIgKzE1MDEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKIAogICAgIGlmKCFyZXN1bHRfbGVuZ3RoKSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShidWYpOwogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCiAgICAgaWYoIUNsb3NlSGFuZGxlKGhkbCkpIHsKLSAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKQEAgLTE0ODQsMTAgKzE1MTcsNyBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAotICAgICAgICAgICAgICAgICAgIEJPT0wgdHJhdmVyc2UpOwotc3RhdGljIGludAotd2luMzJfeHN0YXRfaW1wbChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCit3aW4zMl94c3RhdF9pbXBsKGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICBpbnQgY29kZTsKQEAgLTE0OTUsOSArMTUyNSw5IEBACiAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gaW5mbzsKICAgICBVTE9ORyByZXBhcnNlX3RhZyA9IDA7CiAgICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7Ci0gICAgY29uc3QgY2hhciAqZG90OworICAgIGNvbnN0IHdjaGFyX3QgKmRvdDsKIAotICAgIGhGaWxlID0gQ3JlYXRlRmlsZUEoCisgICAgaEZpbGUgPSBDcmVhdGVGaWxlVygKICAgICAgICAgcGF0aCwKICAgICAgICAgRklMRV9SRUFEX0FUVFJJQlVURVMsIC8qIGRlc2lyZWQgYWNjZXNzICovCiAgICAgICAgIDAsIC8qIHNoYXJlIG1vZGUgKi8KQEAgLTE1NDgsOTggKzE1NzgsNiBAQAogICAgICAgICAgICAgaWYgKHRyYXZlcnNlKSB7CiAgICAgICAgICAgICAgICAgLyogSW4gb3JkZXIgdG8gY2FsbCBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgd2UgbmVlZCB0byBvcGVuCiAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUgd2l0aG91dCB0aGUgcmVwYXJzZSBoYW5kbGluZyBmbGFnIHNldC4gKi8KLSAgICAgICAgICAgICAgICBoRmlsZTIgPSBDcmVhdGVGaWxlQSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIEZJTEVfUkVBRF9BVFRSSUJVVEVTLCBGSUxFX1NIQVJFX1JFQUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9STUFMfEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICAgICAgaWYgKGhGaWxlMiA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgICAgICAgICAgaWYgKCFnZXRfdGFyZ2V0X3BhdGgoaEZpbGUyLCAmdGFyZ2V0X3BhdGgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgICAgICAgICBjb2RlID0gd2luMzJfeHN0YXRfaW1wbF93KHRhcmdldF9wYXRoLCByZXN1bHQsIEZBTFNFKTsKLSAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHRhcmdldF9wYXRoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7Ci0gICAgfQotICAgIF9QeV9hdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCByZXBhcnNlX3RhZywgcmVzdWx0KTsKLQotICAgIC8qIFNldCBTX0lFWEVDIGlmIGl0IGlzIGFuIC5leGUsIC5iYXQsIC4uLiAqLwotICAgIGRvdCA9IHN0cnJjaHIocGF0aCwgJy4nKTsKLSAgICBpZiAoZG90KSB7Ci0gICAgICAgIGlmIChzdHJpY21wKGRvdCwgIi5iYXQiKSA9PSAwIHx8IHN0cmljbXAoZG90LCAiLmNtZCIpID09IDAgfHwKLSAgICAgICAgICAgIHN0cmljbXAoZG90LCAiLmV4ZSIpID09IDAgfHwgc3RyaWNtcChkb3QsICIuY29tIikgPT0gMCkKLSAgICAgICAgICAgIHJlc3VsdC0+c3RfbW9kZSB8PSAwMTExOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotd2luMzJfeHN0YXRfaW1wbF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICBCT09MIHRyYXZlcnNlKQotewotICAgIGludCBjb2RlOwotICAgIEhBTkRMRSBoRmlsZSwgaEZpbGUyOwotICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGluZm87Ci0gICAgVUxPTkcgcmVwYXJzZV90YWcgPSAwOwotICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwotICAgIGNvbnN0IHdjaGFyX3QgKmRvdDsKLQotICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcoCi0gICAgICAgIHBhdGgsCi0gICAgICAgIEZJTEVfUkVBRF9BVFRSSUJVVEVTLCAvKiBkZXNpcmVkIGFjY2VzcyAqLwotICAgICAgICAwLCAvKiBzaGFyZSBtb2RlICovCi0gICAgICAgIE5VTEwsIC8qIHNlY3VyaXR5IGF0dHJpYnV0ZXMgKi8KLSAgICAgICAgT1BFTl9FWElTVElORywKLSAgICAgICAgLyogRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MgaXMgcmVxdWlyZWQgdG8gb3BlbiBhIGRpcmVjdG9yeSAqLwotICAgICAgICAvKiBGSUxFX0ZMQUdfT1BFTl9SRVBBUlNFX1BPSU5UIGRvZXMgbm90IGZvbGxvdyB0aGUgc3ltbGluay4KLSAgICAgICAgICAgQmVjYXVzZSBvZiB0aGlzLCBjYWxscyBsaWtlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSB3aWxsIHJldHVybgotICAgICAgICAgICB0aGUgc3ltbGluayBwYXRoIGFnYWluIGFuZCBub3QgdGhlIGFjdHVhbCBmaW5hbCBwYXRoLiAqLwotICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUx8RklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1N8Ci0gICAgICAgICAgICBGSUxFX0ZMQUdfT1BFTl9SRVBBUlNFX1BPSU5ULAotICAgICAgICBOVUxMKTsKLQotICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICAvKiBFaXRoZXIgdGhlIHRhcmdldCBkb2Vzbid0IGV4aXN0LCBvciB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0bwotICAgICAgICAgICBnZXQgYSBoYW5kbGUgdG8gaXQuIElmIHRoZSBmb3JtZXIsIHdlIG5lZWQgdG8gcmV0dXJuIGFuIGVycm9yLgotICAgICAgICAgICBJZiB0aGUgbGF0dGVyLCB3ZSBjYW4gdXNlIGF0dHJpYnV0ZXNfZnJvbV9kaXIuICovCi0gICAgICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwotICAgICAgICBpZiAobGFzdEVycm9yICE9IEVSUk9SX0FDQ0VTU19ERU5JRUQgJiYKLSAgICAgICAgICAgIGxhc3RFcnJvciAhPSBFUlJPUl9TSEFSSU5HX1ZJT0xBVElPTikKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgLyogQ291bGQgbm90IGdldCBhdHRyaWJ1dGVzIG9uIG9wZW4gZmlsZS4gRmFsbCBiYWNrIHRvCi0gICAgICAgICAgIHJlYWRpbmcgdGhlIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVzX2Zyb21fZGlyX3cocGF0aCwgJmluZm8sICZyZXBhcnNlX3RhZykpCi0gICAgICAgICAgICAvKiBWZXJ5IHN0cmFuZ2UuIFRoaXMgc2hvdWxkIG5vdCBmYWlsIG5vdyAqLwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoaW5mby5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCkgewotICAgICAgICAgICAgaWYgKHRyYXZlcnNlKSB7Ci0gICAgICAgICAgICAgICAgLyogU2hvdWxkIHRyYXZlcnNlLCBidXQgY291bGQgbm90IG9wZW4gcmVwYXJzZSBwb2ludCBoYW5kbGUgKi8KLSAgICAgICAgICAgICAgICBTZXRMYXN0RXJyb3IobGFzdEVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIUdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhGaWxlLCAmaW5mbykpIHsKLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5mby5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCkgewotICAgICAgICAgICAgaWYgKCF3aW4zMl9nZXRfcmVwYXJzZV90YWcoaEZpbGUsICZyZXBhcnNlX3RhZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgICAgICAvKiBDbG9zZSB0aGUgb3V0ZXIgb3BlbiBmaWxlIGhhbmRsZSBub3cgdGhhdCB3ZSdyZSBhYm91dCB0bwotICAgICAgICAgICAgICAgcmVvcGVuIGl0IHdpdGggZGlmZmVyZW50IGZsYWdzLiAqLwotICAgICAgICAgICAgaWYgKCFDbG9zZUhhbmRsZShoRmlsZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgICAgICBpZiAodHJhdmVyc2UpIHsKLSAgICAgICAgICAgICAgICAvKiBJbiBvcmRlciB0byBjYWxsIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSB3ZSBuZWVkIHRvIG9wZW4KLSAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSB3aXRob3V0IHRoZSByZXBhcnNlIGhhbmRsaW5nIGZsYWcgc2V0LiAqLwogICAgICAgICAgICAgICAgIGhGaWxlMiA9IENyZWF0ZUZpbGVXKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgRklMRV9SRUFEX0FUVFJJQlVURVMsIEZJTEVfU0hBUkVfUkVBRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCkBAIC0xNjUxLDggKzE1ODksOCBAQAogICAgICAgICAgICAgICAgIGlmICghZ2V0X3RhcmdldF9wYXRoKGhGaWxlMiwgJnRhcmdldF9wYXRoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgICAgICAgICAgICAgY29kZSA9IHdpbjMyX3hzdGF0X2ltcGxfdyh0YXJnZXRfcGF0aCwgcmVzdWx0LCBGQUxTRSk7Ci0gICAgICAgICAgICAgICAgUHlNZW1fRnJlZSh0YXJnZXRfcGF0aCk7CisgICAgICAgICAgICAgICAgY29kZSA9IHdpbjMyX3hzdGF0X2ltcGwodGFyZ2V0X3BhdGgsIHJlc3VsdCwgRkFMU0UpOworICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUodGFyZ2V0X3BhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb2RlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKQEAgLTE2NzEsNyArMTYwOSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKK3dpbjMyX3hzdGF0KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKICAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCkBAIC0xNjc5LDE2ICsxNjE3LDYgQEAKICAgICBlcnJubyA9IDA7CiAgICAgcmV0dXJuIGNvZGU7CiB9Ci0KLXN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQotewotICAgIC8qIFByb3RvY29sIHZpb2xhdGlvbjogd2UgZXhwbGljaXRseSBjbGVhciBlcnJubywgaW5zdGVhZCBvZgotICAgICAgIHNldHRpbmcgaXQgdG8gYSBQT1NJWCBlcnJvci4gQ2FsbGVycyBzaG91bGQgdXNlIEdldExhc3RFcnJvci4gKi8KLSAgICBpbnQgY29kZSA9IHdpbjMyX3hzdGF0X2ltcGxfdyhwYXRoLCByZXN1bHQsIHRyYXZlcnNlKTsKLSAgICBlcnJubyA9IDA7Ci0gICAgcmV0dXJuIGNvZGU7Ci19CiAvKiBBYm91dCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczogd2luMzJfbHN0YXRfdywgd2luMzJfc3RhdCwgd2luMzJfc3RhdF93CiAKICAgIEluIFBvc2l4LCBzdGF0IGF1dG9tYXRpY2FsbHkgdHJhdmVyc2VzIHN5bWxpbmtzIGFuZCByZXR1cm5zIHRoZSBzdGF0CkBAIC0xNjk4LDM0ICsxNjI2LDIwIEBACiAKICAgIFRoZXJlZm9yZSwgd2luMzJfbHN0YXQgd2lsbCBnZXQgdGhlIGF0dHJpYnV0ZXMgdHJhZGl0aW9uYWxseSwgYW5kCiAgICB3aW4zMl9zdGF0IHdpbGwgZmlyc3QgZXhwbGljaXRseSByZXNvbHZlIHRoZSBzeW1saW5rIHRhcmdldCBhbmQgdGhlbiB3aWxsCi0gICBjYWxsIHdpbjMyX2xzdGF0IG9uIHRoYXQgcmVzdWx0LgotCi0gICBUaGUgX3cgcmVwcmVzZW50IFVuaWNvZGUgZXF1aXZhbGVudHMgb2YgdGhlIGFmb3JlbWVudGlvbmVkIEFOU0kgZnVuY3Rpb25zLiAqLworICAgY2FsbCB3aW4zMl9sc3RhdCBvbiB0aGF0IHJlc3VsdC4gKi8KIAogc3RhdGljIGludAotd2luMzJfbHN0YXQoY29uc3QgY2hhciogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQord2luMzJfbHN0YXQoY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQogewogICAgIHJldHVybiB3aW4zMl94c3RhdChwYXRoLCByZXN1bHQsIEZBTFNFKTsKIH0KIAogc3RhdGljIGludAotd2luMzJfbHN0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCi17Ci0gICAgcmV0dXJuIHdpbjMyX3hzdGF0X3cocGF0aCwgcmVzdWx0LCBGQUxTRSk7Ci19Ci0KLXN0YXRpYyBpbnQKLXdpbjMyX3N0YXQoY29uc3QgY2hhciogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQord2luMzJfc3RhdChjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0KHBhdGgsIHJlc3VsdCwgVFJVRSk7CiB9CiAKLXN0YXRpYyBpbnQKLXdpbjMyX3N0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCi17Ci0gICAgcmV0dXJuIHdpbjMyX3hzdGF0X3cocGF0aCwgcmVzdWx0LCBUUlVFKTsKLX0KLQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHN0YXRfcmVzdWx0X19kb2NfXywKQEAgLTIwMDcsNyArMTkyMSw3IEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAwLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc3QtPnN0X21vZGUpKTsKICNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXN0LT5zdF9pbm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzdC0+c3RfaW5vKSk7CiAjZWxzZQogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMSwgUHlMb25nX0Zyb21Mb25nKChsb25nKXN0LT5zdF9pbm8pKTsKICNlbmRpZgpAQCAtMjAyNiw3ICsxOTQwLDcgQEAKICNlbmRpZgogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc3QtPnN0X3NpemUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzdC0+c3Rfc2l6ZSkpOwogI2Vsc2UKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDYsIFB5TG9uZ19Gcm9tTG9uZyhzdC0+c3Rfc2l6ZSkpOwogI2VuZGlmCkBAIC0yMTA2LDcgKzIwMjAsNyBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kb19zdGF0KGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwKK3Bvc2l4X2RvX3N0YXQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLAogICAgICAgICAgICAgICBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKQogewogICAgIFNUUlVDVF9TVEFUIHN0OwpAQCAtMjEyNSwyOCArMjAzOSwyNiBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCiAgICAgICAgIHJlc3VsdCA9IEZTVEFUKHBhdGgtPmZkLCAmc3QpOwotICAgIGVsc2UKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgtPndpZGUpIHsKLSAgICAgICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgICAgIHJlc3VsdCA9IHdpbjMyX3N0YXRfdyhwYXRoLT53aWRlLCAmc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdF93KHBhdGgtPndpZGUsICZzdCk7Ci0gICAgfQorICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdChwYXRoLT53aWRlLCAmc3QpOwogICAgIGVsc2UKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9MU1RBVCkgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdChwYXRoLT53aWRlLCAmc3QpOworI2Vsc2UKKyAgICBlbHNlCisjaWYgZGVmaW5lZChIQVZFX0xTVEFUKQogICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGRpcl9mZCA9PSBERUZBVUxUX0RJUl9GRCkpCiAgICAgICAgIHJlc3VsdCA9IExTVEFUKHBhdGgtPm5hcnJvdywgJnN0KTsKICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0xTVEFUICovCiAjaWZkZWYgSEFWRV9GU1RBVEFUCiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpCiAgICAgICAgIHJlc3VsdCA9IGZzdGF0YXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csICZzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CiAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GU1RBVEFUICovCiAgICAgICAgIHJlc3VsdCA9IFNUQVQocGF0aC0+bmFycm93LCAmc3QpOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCAhPSAwKSB7CkBAIC0yNDI2LDggKzIzMzgsOCBAQAogICAgIHR5cGUgPSAnaWRfdCcKICAgICBmb3JtYXRfdW5pdCA9ICciIF9QeV9QQVJTRV9QSUQgIicKIAotY2xhc3MgUHlfaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCitjbGFzcyBpbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnRwdHJfdCcKICAgICBmb3JtYXRfdW5pdCA9ICciIF9QeV9QQVJTRV9JTlRQVFIgIicKIAogY2xhc3MgUHlfb2ZmX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgpAQCAtMjQ1NCw3ICsyMzY2LDcgQEAKICAgICBpbXBsX2J5X3JlZmVyZW5jZSA9IFRydWU7CiAKIFtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWFmZmU2ODMxNmYxNjA0MDFdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTQxOGZjZTBlMDExNDQ0NjFdKi8KIAogLypbY2xpbmljIGlucHV0XQogCkBAIC0yNTgyLDEwICsyNDk0LDcgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUgIT0gTlVMTCkKLSAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93KTsKKyAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICAvKgpAQCAtMjcwOSwxMSArMjYxOCw4IEBACiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICByZXN1bHQgPSB3aW4zMl93Y2hkaXIocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSB3aW4zMl9jaGRpcihwYXRoLT5uYXJyb3cpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIG9uIHVuaXgsIHN1Y2Nlc3MgPSAwLCBvbiB3aW5kb3dzLCBzdWNjZXNzID0gITAgKi8KKyAgICAvKiBvbiB1bml4LCBzdWNjZXNzID0gMCwgb24gd2luZG93cywgc3VjY2VzcyA9ICEwICovCisgICAgcmVzdWx0ID0gIXdpbjMyX3djaGRpcihwYXRoLT53aWRlKTsKICNlbHNlCiAjaWZkZWYgSEFWRV9GQ0hESVIKICAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCkBAIC0yODA4LDEwICsyNzE0LDcgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgtPm5hcnJvdyk7CisgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKICAgICBpZiAoYXR0ciA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKICAgICAgICAgcmVzdWx0ID0gMDsKICAgICBlbHNlIHsKQEAgLTI4MTksMTAgKzI3MjIsNyBAQAogICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUsIGF0dHIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93LCBhdHRyKTsKKyAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUsIGF0dHIpOwogICAgIH0KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC0zMzE4LDEyICszMjE4LDIyIEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGRvIHsKICAgICAgICAgYnVmbGVuICs9IGNodW5rOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgaWYgKGJ1ZmxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIHRtcGJ1ZiA9IFB5TWVtX1Jhd1JlYWxsb2MoYnVmLCBidWZsZW4pOwogICAgICAgICBpZiAodG1wYnVmID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBidWYgPSB0bXBidWY7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBjd2QgPSBnZXRjd2QoYnVmLCAoaW50KWJ1Zmxlbik7CisjZWxzZQogICAgICAgICBjd2QgPSBnZXRjd2QoYnVmLCBidWZsZW4pOworI2VuZGlmCiAgICAgfSB3aGlsZSAoY3dkID09IE5VTEwgJiYgZXJybm8gPT0gRVJBTkdFKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC0zNDA1LDcgKzMzMTUsNyBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmMDBmNjAwN2ZkNTI2OWEgaW5wdXQ9YjAwOTVlYmJjYmFhN2UwNF0qLwogewogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBCT09MIHJlc3VsdDsKKyAgICBCT09MIHJlc3VsdCA9IEZBTFNFOwogI2Vsc2UKICAgICBpbnQgcmVzdWx0OwogI2VuZGlmCkBAIC0zNDE3LDE4ICszMzI3LDE4IEBACiAgICAgfQogI2VuZGlmCiAKKyNpZm5kZWYgTVNfV0lORE9XUwogICAgIGlmICgoc3JjLT5uYXJyb3cgJiYgZHN0LT53aWRlKSB8fCAoc3JjLT53aWRlICYmIGRzdC0+bmFycm93KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGlmIChzcmMtPndpZGUpCiAgICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rVyhkc3QtPndpZGUsIHNyYy0+d2lkZSwgTlVMTCk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0LT5uYXJyb3csIHNyYy0+bmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFyZXN1bHQpCkBAIC0zNDQzLDEzICszMzUzLDEzIEBACiAgICAgICAgICAgICBkc3RfZGlyX2ZkLCBkc3QtPm5hcnJvdywKICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IEFUX1NZTUxJTktfRk9MTE9XIDogMCk7CiAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9MSU5LQVQgKi8KICAgICAgICAgcmVzdWx0ID0gbGluayhzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwotI2VuZGlmCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CkBAIC0zNDYzLDk5ICszMzczLDM5IEBACiAgICAgUHlPYmplY3QgKnY7CiAgICAgSEFORExFIGhGaW5kRmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogICAgIEJPT0wgcmVzdWx0OwotICAgIFdJTjMyX0ZJTkRfREFUQSBGaWxlRGF0YTsKLSAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNF07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgIlwqLioiICovCi0gICAgY2hhciAqYnVmcHRyID0gbmFtZWJ1ZjsKKyAgICB3Y2hhcl90IG5hbWVidWZbTUFYX1BBVEgrNF07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgIlwqLioiICovCiAgICAgLyogb25seSBjbGFpbSB0byBoYXZlIHNwYWNlIGZvciBNQVhfUEFUSCAqLwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlfQVJSQVlfTEVOR1RIKG5hbWVidWYpLTQ7Ci0gICAgUHlPYmplY3QgKnBvID0gTlVMTDsKICAgICB3Y2hhcl90ICp3bmFtZWJ1ZiA9IE5VTEw7CiAKLSAgICBpZiAoIXBhdGgtPm5hcnJvdykgewotICAgICAgICBXSU4zMl9GSU5EX0RBVEFXIHdGaWxlRGF0YTsKLSAgICAgICAgd2NoYXJfdCAqcG9fd2NoYXJzOworICAgIFdJTjMyX0ZJTkRfREFUQVcgd0ZpbGVEYXRhOworICAgIGNvbnN0IHdjaGFyX3QgKnBvX3djaGFyczsKIAotICAgICAgICBpZiAoIXBhdGgtPndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLwotICAgICAgICAgICAgcG9fd2NoYXJzID0gTCIuIjsKLSAgICAgICAgICAgIGxlbiA9IDE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb193Y2hhcnMgPSBwYXRoLT53aWRlOwotICAgICAgICAgICAgbGVuID0gd2NzbGVuKHBhdGgtPndpZGUpOwotICAgICAgICB9Ci0gICAgICAgIC8qIFRoZSArNSBpcyBzbyB3ZSBjYW4gYXBwZW5kICJcXCouKlwwIiAqLwotICAgICAgICB3bmFtZWJ1ZiA9IFB5TWVtX05ldyh3Y2hhcl90LCBsZW4gKyA1KTsKLSAgICAgICAgaWYgKCF3bmFtZWJ1ZikgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgfQotICAgICAgICB3Y3NjcHkod25hbWVidWYsIHBvX3djaGFycyk7Ci0gICAgICAgIGlmIChsZW4gPiAwKSB7Ci0gICAgICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKLSAgICAgICAgICAgIGlmICh3Y2ggIT0gU0VQICYmIHdjaCAhPSBBTFRTRVAgJiYgd2NoICE9IEwnOicpCi0gICAgICAgICAgICAgICAgd25hbWVidWZbbGVuKytdID0gU0VQOwotICAgICAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgfQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGhGaW5kRmlsZSA9IEZpbmRGaXJzdEZpbGVXKHduYW1lYnVmLCAmd0ZpbGVEYXRhKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgLyogU2tpcCBvdmVyIC4gYW5kIC4uICovCi0gICAgICAgICAgICBpZiAod2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLiIpICE9IDAgJiYKLSAgICAgICAgICAgICAgICB3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuLiIpICE9IDApIHsKLSAgICAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc2xlbih3RmlsZURhdGEuY0ZpbGVOYW1lKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICByZXN1bHQgPSBGaW5kTmV4dEZpbGVXKGhGaW5kRmlsZSwgJndGaWxlRGF0YSk7Ci0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgLyogRmluZE5leHRGaWxlIHNldHMgZXJyb3IgdG8gRVJST1JfTk9fTU9SRV9GSUxFUyBpZgotICAgICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7Ci0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgfQotICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7Ci0KKyAgICBpZiAoIXBhdGgtPndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLworICAgICAgICBwb193Y2hhcnMgPSBMIi4iOworICAgICAgICBsZW4gPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgIHBvX3djaGFycyA9IHBhdGgtPndpZGU7CisgICAgICAgIGxlbiA9IHdjc2xlbihwYXRoLT53aWRlKTsKKyAgICB9CisgICAgLyogVGhlICs1IGlzIHNvIHdlIGNhbiBhcHBlbmQgIlxcKi4qXDAiICovCisgICAgd25hbWVidWYgPSBQeU1lbV9OZXcod2NoYXJfdCwgbGVuICsgNSk7CisgICAgaWYgKCF3bmFtZWJ1ZikgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHN0cmNweShuYW1lYnVmLCBwYXRoLT5uYXJyb3cpOwotICAgIGxlbiA9IHBhdGgtPmxlbmd0aDsKKyAgICB3Y3NjcHkod25hbWVidWYsIHBvX3djaGFycyk7CiAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgY2hhciBjaCA9IG5hbWVidWZbbGVuLTFdOwotICAgICAgICBpZiAoY2ggIT0gJ1xcJyAmJiBjaCAhPSAnLycgJiYgY2ggIT0gJzonKQotICAgICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSAnXFwnOwotICAgICAgICBzdHJjcHkobmFtZWJ1ZiArIGxlbiwgIiouKiIpOworICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKKyAgICAgICAgaWYgKHdjaCAhPSBTRVAgJiYgd2NoICE9IEFMVFNFUCAmJiB3Y2ggIT0gTCc6JykKKyAgICAgICAgICAgIHduYW1lYnVmW2xlbisrXSA9IFNFUDsKKyAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwogICAgIH0KLQotICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBoRmluZEZpbGUgPSBGaW5kRmlyc3RGaWxlKG5hbWVidWYsICZGaWxlRGF0YSk7CisgICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZVcod25hbWVidWYsICZ3RmlsZURhdGEpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKQEAgLTM1NjcsOSArMzQxNywxMyBAQAogICAgIH0KICAgICBkbyB7CiAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwotICAgICAgICBpZiAoc3RyY21wKEZpbGVEYXRhLmNGaWxlTmFtZSwgIi4iKSAhPSAwICYmCi0gICAgICAgICAgICBzdHJjbXAoRmlsZURhdGEuY0ZpbGVOYW1lLCAiLi4iKSAhPSAwKSB7Ci0gICAgICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nKEZpbGVEYXRhLmNGaWxlTmFtZSk7CisgICAgICAgIGlmICh3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJgorICAgICAgICAgICAgd2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLi4iKSAhPSAwKSB7CisgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKKyAgICAgICAgICAgIGlmIChwYXRoLT5uYXJyb3cgJiYgdikgeworICAgICAgICAgICAgICAgIFB5X1NFVFJFRih2LCBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHYpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CiAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CkBAIC0zNTg0LDcgKzM0MzgsNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICB9CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzdWx0ID0gRmluZE5leHRGaWxlKGhGaW5kRmlsZSwgJkZpbGVEYXRhKTsKKyAgICAgICAgcmVzdWx0ID0gRmluZE5leHRGaWxlVyhoRmluZEZpbGUsICZ3RmlsZURhdGEpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCiAgICAgICAgICAgIGl0IGdvdCB0byB0aGUgZW5kIG9mIHRoZSBkaXJlY3RvcnkuICovCkBAIC0zNjM5LDcgKzM0OTMsNyBAQAogICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgY2hhciAqbmFtZTsKKyAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICAgaWYgKHBhdGgtPm5hcnJvdykgewogICAgICAgICAgICAgbmFtZSA9IHBhdGgtPm5hcnJvdzsKICAgICAgICAgICAgIC8qIG9ubHkgcmV0dXJuIGJ5dGVzIGlmIHRoZXkgc3BlY2lmaWVkIGEgYnl0ZXMgb2JqZWN0ICovCkBAIC0zNzY1LDQxICszNjE5LDI5IEBACiBvc19fZ2V0ZnVsbHBhdGhuYW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJiODY3OWQ1Njg0NWJjOWIgaW5wdXQ9MzMyZWQ1MzdjMjlkMGEzZV0qLwogewotICAgIGlmICghcGF0aC0+bmFycm93KQotICAgIHsKLSAgICAgICAgd2NoYXJfdCB3b3V0YnVmW01BWF9QQVRIXSwgKndvdXRidWZwID0gd291dGJ1ZjsKLSAgICAgICAgd2NoYXJfdCAqd3RlbXA7Ci0gICAgICAgIERXT1JEIHJlc3VsdDsKLSAgICAgICAgUHlPYmplY3QgKnY7CisgICAgd2NoYXJfdCB3b3V0YnVmW01BWF9QQVRIXSwgKndvdXRidWZwID0gd291dGJ1ZjsKKyAgICB3Y2hhcl90ICp3dGVtcDsKKyAgICBEV09SRCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnY7CiAKLSAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3V0YnVmLCAmd3RlbXApOwotICAgICAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpKSB7Ci0gICAgICAgICAgICB3b3V0YnVmcCA9IFB5TWVtX05ldyh3Y2hhcl90LCByZXN1bHQpOwotICAgICAgICAgICAgaWYgKCF3b3V0YnVmcCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcocGF0aC0+d2lkZSwgcmVzdWx0LCB3b3V0YnVmcCwgJnd0ZW1wKTsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod291dGJ1ZnAsIHdjc2xlbih3b3V0YnVmcCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcGF0aC0+b2JqZWN0KTsKLSAgICAgICAgaWYgKHdvdXRidWZwICE9IHdvdXRidWYpCi0gICAgICAgICAgICBQeU1lbV9GcmVlKHdvdXRidWZwKTsKLSAgICAgICAgcmV0dXJuIHY7CisgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd291dGJ1ZiwgJnd0ZW1wKTsKKyAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpKSB7CisgICAgICAgIHdvdXRidWZwID0gUHlNZW1fTmV3KHdjaGFyX3QsIHJlc3VsdCk7CisgICAgICAgIGlmICghd291dGJ1ZnApCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLCByZXN1bHQsIHdvdXRidWZwLCAmd3RlbXApOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY2hhciBvdXRidWZbTUFYX1BBVEhdOwotICAgICAgICBjaGFyICp0ZW1wOwotCi0gICAgICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgtPm5hcnJvdywgUHlfQVJSQVlfTEVOR1RIKG91dGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGJ1ZiwgJnRlbXApKSB7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZ1bGxQYXRoTmFtZSIsIHBhdGgtPm9iamVjdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKG91dGJ1Zik7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod291dGJ1ZnAsIHdjc2xlbih3b3V0YnVmcCkpOworICAgICAgICBpZiAocGF0aC0+bmFycm93KQorICAgICAgICAgICAgUHlfU0VUUkVGKHYsIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQodikpOworICAgIH0gZWxzZQorICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcGF0aC0+b2JqZWN0KTsKKyAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKKyAgICAgICAgUHlNZW1fRnJlZSh3b3V0YnVmcCk7CisgICAgcmV0dXJuIHY7CiB9CiAKIApAQCAtMzgyMSw3ICszNjYzLDcgQEAKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBpbnQgcmVzdWx0X2xlbmd0aDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGhfd2NoYXI7CisgICAgY29uc3Qgd2NoYXJfdCAqcGF0aF93Y2hhcjsKIAogICAgIHBhdGhfd2NoYXIgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOwogICAgIGlmIChwYXRoX3djaGFyID09IE5VTEwpCkBAIC0zODgzLDEwICszNzI1LDcgQEAKICAgICBEV09SRCBhdHRyaWJ1dGVzOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmICghcGF0aC0+bmFycm93KQotICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOworICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQpAQCAtMzkxMiw3ICszNzUxLDggQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYmRjYmQxMDU5Y2VlZjRjIGlucHV0PTdlYWNhZGM0MGFjYmRhNmJdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGhfd2NoYXIsICptb3VudHBhdGg9TlVMTDsKKyAgICBjb25zdCB3Y2hhcl90ICpwYXRoX3djaGFyOworICAgIHdjaGFyX3QgKm1vdW50cGF0aD1OVUxMOwogICAgIHNpemVfdCBidWZsZW47CiAgICAgQk9PTCByZXQ7CiAKQEAgLTM5ODMsMTAgKzM4MjMsNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLT53aWRlLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeUEocGF0aC0+bmFycm93LCBOVUxMKTsKKyAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgtPndpZGUsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKQEAgLTQwMDYsNyArMzg0Myw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTQxMTAsNyArMzk0Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW50ZXJuYWxfcmVuYW1lKHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsIGludCBkc3RfZGlyX2ZkLCBpbnQgaXNfcmVwbGFjZSkKIHsKLSAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0gaXNfcmVwbGFjZSA/ICJyZXBsYWNlIiA6ICJyZW5hbWUiOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUgPSBpc19yZXBsYWNlID8gInJlcGxhY2UiIDogInJlbmFtZSI7CiAgICAgaW50IGRpcl9mZF9zcGVjaWZpZWQ7CiAKICNpZmRlZiBNU19XSU5ET1dTCkBAIC00MTI5LDMxICszOTY2LDI4IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChzcmMtPndpZGUpCi0gICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy0+d2lkZSwgZHN0LT53aWRlLCBmbGFncyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4QShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3csIGZsYWdzKTsKKyAgICByZXN1bHQgPSBNb3ZlRmlsZUV4VyhzcmMtPndpZGUsIGRzdC0+d2lkZSwgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKIAogI2Vsc2UKKyAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9SRU5BTUVBVAogICAgIGlmIChkaXJfZmRfc3BlY2lmaWVkKQogICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMtPm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0LT5uYXJyb3cpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKKyAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkKQEAgLTQyMzQsMTEgKzQwNjgsOCBAQAogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeUEocGF0aC0+bmFycm93KTsKLSAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLworICAgIC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgcmVzdWx0ID0gIVJlbW92ZURpcmVjdG9yeVcocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQpAQCAtNDI5MCw3ICs0MTIxLDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yOTBmYzQzN2RkNGYzM2EwIGlucHV0PTg2YTU4NTU0YmE2MDk0YWZdKi8KIHsKICAgICBsb25nIHJlc3VsdDsKLSAgICBjaGFyICpieXRlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoY29tbWFuZCk7CisgICAgY29uc3QgY2hhciAqYnl0ZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKGNvbW1hbmQpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBzeXN0ZW0oYnl0ZXMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC00Mzg0LDExICs0MjE1LDggQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLT5uYXJyb3cpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyAgICByZXN1bHQgPSAhUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQpAQCAtNDU3MCw3ICs0Mzk4LDcgQEAKICNpZiBkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKSB8fCBkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKQogCiBzdGF0aWMgaW50Ci11dGltZV9kaXJfZmQodXRpbWVfdCAqdXQsIGludCBkaXJfZmQsIGNoYXIgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCit1dGltZV9kaXJfZmQodXRpbWVfdCAqdXQsIGludCBkaXJfZmQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7CiAjaWZkZWYgSEFWRV9VVElNRU5TQVQKICAgICBpbnQgZmxhZ3MgPSBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVzsKQEAgLTQ2MTIsMTQgKzQ0NDAsMTQgQEAKICAgICAjZGVmaW5lIFBBVEhfVVRJTUVfSEFWRV9GRCAwCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoSEFWRV9VVElNRU5TQVQpIHx8IGRlZmluZWQoSEFWRV9MVVRJTUVTKQorIyAgZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyNlbmRpZgogCi0jZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MgXAotICAgICAgICAoZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkgfHwgZGVmaW5lZChIQVZFX0xVVElNRVMpKQotCi0jaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmZGVmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKIAogc3RhdGljIGludAotdXRpbWVfbm9mb2xsb3dfc3ltbGlua3ModXRpbWVfdCAqdXQsIGNoYXIgKnBhdGgpCit1dGltZV9ub2ZvbGxvd19zeW1saW5rcyh1dGltZV90ICp1dCwgY29uc3QgY2hhciAqcGF0aCkKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIFVUSU1FX1RPX1RJTUVTUEVDOwpAQCAtNDYzNSw3ICs0NDYzLDcgQEAKICNpZm5kZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgaW50Ci11dGltZV9kZWZhdWx0KHV0aW1lX3QgKnV0LCBjaGFyICpwYXRoKQordXRpbWVfZGVmYXVsdCh1dGltZV90ICp1dCwgY29uc3QgY2hhciAqcGF0aCkKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIFVUSU1FX1RPX1RJTUVTUEVDOwpAQCAtNDc3OCw3ICs0NjA2LDcgQEAKICAgICAgICAgdXRpbWUubm93ID0gMTsKICAgICB9CiAKLSNpZiAhVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmICFkZWZpbmVkKFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MpCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoInV0aW1lIiwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgZ290byBleGl0OwogI2VuZGlmCkBAIC00Nzk5LDE0ICs0NjI3LDkgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC0+d2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwotICAgIGVsc2UKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLT5uYXJyb3csIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKKyAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHBhdGgtPndpZGUsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKQEAgLTQ4MzIsNyArNDY1NSw3IEBACiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogCi0jaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmZGVmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKICAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQogICAgICAgICByZXN1bHQgPSB1dGltZV9ub2ZvbGxvd19zeW1saW5rcygmdXRpbWUsIHBhdGgtPm5hcnJvdyk7CiAgICAgZWxzZQpAQCAtNDg5Miw5ICs0NzE1LDE1IEBACiAgICAgcmV0dXJuIE5VTEw7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCiB9CiAKKyNpZiBkZWZpbmVkKEhBVkVfV0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikKKyNkZWZpbmUgRVhFQ1ZfQ0hBUiB3Y2hhcl90CisjZWxzZQorI2RlZmluZSBFWEVDVl9DSEFSIGNoYXIKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChIQVZFX0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfU1BBV05WKQogc3RhdGljIHZvaWQKLWZyZWVfc3RyaW5nX2FycmF5KGNoYXIgKiphcnJheSwgUHlfc3NpemVfdCBjb3VudCkKK2ZyZWVfc3RyaW5nX2FycmF5KEVYRUNWX0NIQVIgKiphcnJheSwgUHlfc3NpemVfdCBjb3VudCkKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCkBAIC00OTAyLDQwICs0NzMxLDQ3IEBACiAgICAgUHlNZW1fREVMKGFycmF5KTsKIH0KIAotc3RhdGljCi1pbnQgZnNjb252ZXJ0X3N0cmR1cChQeU9iamVjdCAqbywgY2hhcioqb3V0KQorc3RhdGljIGludAorZnNjb252ZXJ0X3N0cmR1cChQeU9iamVjdCAqbywgRVhFQ1ZfQ0hBUiAqKm91dCkKIHsKLSAgICBQeU9iamVjdCAqYnl0ZXM7CiAgICAgUHlfc3NpemVfdCBzaXplOwotICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICZieXRlcykpCisgICAgUHlPYmplY3QgKnViOworICAgIGludCByZXN1bHQgPSAwOworI2lmIGRlZmluZWQoSEFWRV9XRVhFQ1YpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKQorICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihvLCAmdWIpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0gICAgKm91dCA9IFB5TWVtX01hbGxvYyhzaXplKzEpOwotICAgIGlmICghKm91dCkgeworICAgICpvdXQgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh1YiwgJnNpemUpOworICAgIGlmICgqb3V0KQorICAgICAgICByZXN1bHQgPSAxOworI2Vsc2UKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAmdWIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRSh1Yik7CisgICAgKm91dCA9IFB5TWVtX01hbGxvYyhzaXplICsgMSk7CisgICAgaWYgKCpvdXQpIHsKKyAgICAgICAgbWVtY3B5KCpvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHViKSwgc2l6ZSArIDEpOworICAgICAgICByZXN1bHQgPSAxOworICAgIH0gZWxzZQogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgbWVtY3B5KCpvdXQsIFB5Qnl0ZXNfQXNTdHJpbmcoYnl0ZXMpLCBzaXplKzEpOwotICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICBQeV9ERUNSRUYodWIpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9FWEVDVikgfHwgZGVmaW5lZCAoSEFWRV9GRVhFQ1ZFKQotc3RhdGljIGNoYXIqKgorc3RhdGljIEVYRUNWX0NIQVIqKgogcGFyc2VfZW52bGlzdChQeU9iamVjdCogZW52LCBQeV9zc2l6ZV90ICplbnZjX3B0cikKIHsKLSAgICBjaGFyICoqZW52bGlzdDsKICAgICBQeV9zc2l6ZV90IGksIHBvcywgZW52YzsKICAgICBQeU9iamVjdCAqa2V5cz1OVUxMLCAqdmFscz1OVUxMOwotICAgIFB5T2JqZWN0ICprZXksICp2YWwsICprZXkyLCAqdmFsMjsKLSAgICBjaGFyICpwLCAqaywgKnY7Ci0gICAgc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsLCAqa2V5MiwgKnZhbDIsICprZXl2YWw7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAKICAgICBpID0gUHlNYXBwaW5nX1NpemUoZW52KTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGVudmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBpICsgMSk7CisgICAgZW52bGlzdCA9IFB5TWVtX05FVyhFWEVDVl9DSEFSICosIGkgKyAxKTsKICAgICBpZiAoZW52bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDk1OSwyOCArNDc5NSwzNSBAQAogICAgICAgICBpZiAoIWtleSB8fCAhdmFsKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIAotICAgICAgICBpZiAoUHlVbmljb2RlX0ZTQ29udmVydGVyKGtleSwgJmtleTIpID09IDApCisjaWYgZGVmaW5lZChIQVZFX1dFWEVDVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihrZXksICZrZXkyKSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfRlNDb252ZXJ0ZXIodmFsLCAmdmFsMikgPT0gMCkgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0RlY29kZXIodmFsLCAmdmFsMikpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkyKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLQotICAgICAgICBrID0gUHlCeXRlc19Bc1N0cmluZyhrZXkyKTsKLSAgICAgICAgdiA9IFB5Qnl0ZXNfQXNTdHJpbmcodmFsMik7Ci0gICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoa2V5MikgKyBQeUJ5dGVzX0dFVF9TSVpFKHZhbDIpICsgMjsKLQotICAgICAgICBwID0gUHlNZW1fTkVXKGNoYXIsIGxlbik7Ci0gICAgICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGtleXZhbCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIGtleTIsIHZhbDIpOworI2Vsc2UKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoa2V5LCAma2V5MikpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcih2YWwsICZ2YWwyKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGtleTIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHZhbDIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBQeU9TX3NucHJpbnRmKHAsIGxlbiwgIiVzPSVzIiwgaywgdik7Ci0gICAgICAgIGVudmxpc3RbZW52YysrXSA9IHA7CisgICAgICAgIGtleXZhbCA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBQeUJ5dGVzX0FTX1NUUklORyhrZXkyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHZhbDIpKTsKKyNlbmRpZgogICAgICAgICBQeV9ERUNSRUYoa2V5Mik7CiAgICAgICAgIFB5X0RFQ1JFRih2YWwyKTsKKyAgICAgICAgaWYgKCFrZXl2YWwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cChrZXl2YWwsICZlbnZsaXN0W2VudmMrK10pKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5dmFsKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYoa2V5dmFsKTsKICAgICB9CiAgICAgUHlfREVDUkVGKHZhbHMpOwogICAgIFB5X0RFQ1JFRihrZXlzKTsKQEAgLTQ5OTIsMTcgKzQ4MzUsMTUgQEAKIGVycm9yOgogICAgIFB5X1hERUNSRUYoa2V5cyk7CiAgICAgUHlfWERFQ1JFRih2YWxzKTsKLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7CisgICAgZnJlZV9zdHJpbmdfYXJyYXkoZW52bGlzdCwgZW52Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjaGFyKioKK3N0YXRpYyBFWEVDVl9DSEFSKioKIHBhcnNlX2FyZ2xpc3QoUHlPYmplY3QqIGFyZ3YsIFB5X3NzaXplX3QgKmFyZ2MpCiB7CiAgICAgaW50IGk7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgKmFyZ2MrMSk7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgKmFyZ2MrMSk7CiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MDI0LDYgKzQ4NjUsNyBAQAogICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCAqYXJnYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisKICNlbmRpZgogCiAKQEAgLTUwMzEsNyArNDg3Myw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBvcy5leGVjdgogCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUwNDEsMTcgKzQ4ODMsMTUgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIyMWRjMzRkZWViNWIwMDQgaW5wdXQ9OTYwNDE1NTk5MjVlNTIyOV0qLworb3NfZXhlY3ZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNiNTJmZWMzNGNkMGRhZmQgaW5wdXQ9OWJhYzMxZWZhZTA3ZGFjN10qLwogewotICAgIGNoYXIgKnBhdGhfY2hhcjsKLSAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0OwogICAgIFB5X3NzaXplX3QgYXJnYzsKIAogICAgIC8qIGV4ZWN2IGhhcyB0d28gYXJndW1lbnRzOiAocGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CkBAIC01MDY4LDcgKzQ5MDgsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZXhlY3YocGF0aF9jaGFyLCBhcmd2bGlzdCk7CisjaWZkZWYgSEFWRV9XRVhFQ1YKKyAgICBfd2V4ZWN2KHBhdGgtPndpZGUsIGFyZ3ZsaXN0KTsKKyNlbHNlCisgICAgZXhlY3YocGF0aC0+bmFycm93LCBhcmd2bGlzdCk7CisjZW5kaWYKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCkBAIC01MDk0LDggKzQ5MzgsOCBAQAogb3NfZXhlY3ZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwgUHlPYmplY3QgKmVudikKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZjlmYThlNGRhOGJkZTU4IGlucHV0PTYyNjgwNGZhMDkyNjA2ZDldKi8KIHsKLSAgICBjaGFyICoqYXJndmxpc3QgPSBOVUxMOwotICAgIGNoYXIgKiplbnZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdCA9IE5VTEw7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAgICAgUHlfc3NpemVfdCBhcmdjLCBlbnZjOwogCiAgICAgLyogZXhlY3ZlIGhhcyB0aHJlZSBhcmd1bWVudHM6IChwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQpAQCAtNTEyOCwzMCArNDk3MiwzMyBAQAogICAgICAgICBmZXhlY3ZlKHBhdGgtPmZkLCBhcmd2bGlzdCwgZW52bGlzdCk7CiAgICAgZWxzZQogI2VuZGlmCisjaWZkZWYgSEFWRV9XRVhFQ1YKKyAgICAgICAgX3dleGVjdmUocGF0aC0+d2lkZSwgYXJndmxpc3QsIGVudmxpc3QpOworI2Vsc2UKICAgICAgICAgZXhlY3ZlKHBhdGgtPm5hcnJvdywgYXJndmxpc3QsIGVudmxpc3QpOworI2VuZGlmCiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAogICAgIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7CisgICAgZnJlZV9zdHJpbmdfYXJyYXkoZW52bGlzdCwgZW52Yyk7CiAgIGZhaWw6CiAgICAgaWYgKGFyZ3ZsaXN0KQogICAgICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisKICNlbmRpZiAvKiBIQVZFX0VYRUNWICovCiAKIAotI2lmZGVmIEhBVkVfU1BBV05WCisjaWYgZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCiAvKltjbGluaWMgaW5wdXRdCiBvcy5zcGF3bnYKIAogICAgIG1vZGU6IGludAogICAgICAgICBNb2RlIG9mIHByb2Nlc3MgY3JlYXRpb24uCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUxNjEsMjAgKzUwMDgsMTggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzQyN2MwY2U0MGYxMDYzOCBpbnB1dD0wNDJjOTFkZmMxZTZkZWJjXSovCitvc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MWNkMDM3YTlkOTZiODE2IGlucHV0PTQzMjI0MjQyMzAzMjkxYmVdKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKICAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CisgICAgaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CiAKICAgICAvKiBzcGF3bnYgaGFzIHRocmVlIGFyZ3VtZW50czogKG1vZGUsIHBhdGgsIGFyZ3YpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCiAKLSAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKICAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwogICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07CkBAIC01MTg5LDcgKzUwMzQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CisgICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoRVhFQ1ZfQ0hBUiAqLCBhcmdjKzEpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KQEAgLTUyMDksNyArNTA1NCwxMyBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aF9jaGFyLCBhcmd2bGlzdCk7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2lmZGVmIEhBVkVfV1NQQVdOVgorICAgIHNwYXdudmFsID0gX3dzcGF3bnYobW9kZSwgcGF0aC0+d2lkZSwgYXJndmxpc3QpOworI2Vsc2UKKyAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aC0+bmFycm93LCBhcmd2bGlzdCk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CkBAIC01MjI2LDcgKzUwNzcsNyBAQAogCiAgICAgbW9kZTogaW50CiAgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KLSAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgIHBhdGg6IHBhdGhfdAogICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KICAgICBhcmd2OiBvYmplY3QKICAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgpAQCAtNTIzOCwxNiArNTA4OSwxNSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCitvc19zcGF3bnZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVudikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYmNmYTVmN2JhMmY0MjE5IGlucHV0PTAyMzYyZmQ5Mzc5NjNmOGZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMGZlODViZTU2ZmUzN2FkIGlucHV0PTNlNDA4MDNlZTdjNGM1ODZdKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OwotICAgIGNoYXIgKiplbnZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKKyAgICBFWEVDVl9DSEFSICoqZW52bGlzdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGFyZ2MsIGksIGVudmM7Ci0gICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CisgICAgaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CiAgICAgUHlfc3NpemVfdCBsYXN0YXJnID0gMDsKIApAQCAtNTI1NSw3ICs1MTA1LDYgQEAKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgcGF0aF9jaGFyID0gUHlCeXRlc19Bc1N0cmluZyhwYXRoKTsKICAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKICAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwpAQCAtNTI3NSw3ICs1MTI0LDcgQEAKICAgICAgICAgZ290byBmYWlsXzA7CiAgICAgfQogCi0gICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOworICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgYXJnYysxKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGZhaWxfMDsKQEAgLTUyOTksNyArNTE0OCwxMyBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnZlKG1vZGUsIHBhdGhfY2hhciwgYXJndmxpc3QsIGVudmxpc3QpOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNpZmRlZiBIQVZFX1dTUEFXTlYKKyAgICBzcGF3bnZhbCA9IF93c3Bhd252ZShtb2RlLCBwYXRoLT53aWRlLCBhcmd2bGlzdCwgZW52bGlzdCk7CisjZWxzZQorICAgIHNwYXdudmFsID0gX3NwYXdudmUobW9kZSwgcGF0aC0+bmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoc3Bhd252YWwgPT0gLTEpCkBAIC01NzYyLDE0ICs1NjE3LDE0IEBACiAgICAgcGlkOiBwaWRfdAogICAgIC8KIAotUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KK1JldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykuCiAKIFRoZSBhZmZpbml0eSBpcyByZXR1cm5lZCBhcyBhIHNldCBvZiBDUFUgaWRlbnRpZmllcnMuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRhZmZpbml0eV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzI2ZjJjMTkzYzE3YTRmIGlucHV0PWVhZjE2MTkzNjg3NGI4YTFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzI2ZjJjMTkzYzE3YTRmIGlucHV0PTk4M2NlN2NiNGE1NjU5ODBdKi8KIHsKICAgICBpbnQgY3B1LCBuY3B1cywgY291bnQ7CiAgICAgc2l6ZV90IHNldHNpemU7CkBAIC01OTMwLDcgKzU3ODUsNyBAQAogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKG1hc3Rlcl9mZCwgMCwgTlVMTCkgPCAwKQogICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOwogCi0jaWYgIWRlZmluZWQoX19DWUdXSU5fXykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRDKQorI2lmICFkZWZpbmVkKF9fQ1lHV0lOX18pICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChIQVZFX0RFVl9QVEMpCiAgICAgaW9jdGwoc2xhdmVfZmQsIElfUFVTSCwgInB0ZW0iKTsgLyogcHVzaCBwdGVtICovCiAgICAgaW9jdGwoc2xhdmVfZmQsIElfUFVTSCwgImxkdGVybSIpOyAvKiBwdXNoIGxkdGVybSAqLwogI2lmbmRlZiBfX2hwdXgKQEAgLTYwNDIsNiArNTg5Nyw3IEBACiAjZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KIAogCisjaWZkZWYgSEFWRV9HRVRQSUQKIC8qW2NsaW5pYyBpbnB1dF0KIG9zLmdldHBpZAogCkBAIC02MDU0LDYgKzU5MTAsNyBAQAogewogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChnZXRwaWQoKSk7CiB9CisjZW5kaWYgLyogSEFWRV9HRVRQSUQgKi8KIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCiAKQEAgLTYyNTUsNyArNjExMiw3IEBACiBwb3NpeF9pbml0Z3JvdXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqb25hbWU7Ci0gICAgY2hhciAqdXNlcm5hbWU7CisgICAgY29uc3QgY2hhciAqdXNlcm5hbWU7CiAgICAgaW50IHJlczsKICNpZmRlZiBfX0FQUExFX18KICAgICBpbnQgZ2lkOwpAQCAtNzAwMiw3ICs2ODU5LDcgQEAKIC8qIE1TIEMgaGFzIGEgdmFyaWFudCBvZiB3YWl0cGlkKCkgdGhhdCdzIHVzYWJsZSBmb3IgbW9zdCBwdXJwb3Nlcy4gKi8KIC8qW2NsaW5pYyBpbnB1dF0KIG9zLndhaXRwaWQKLSAgICBwaWQ6IFB5X2ludHB0cl90CisgICAgcGlkOiBpbnRwdHJfdAogICAgIG9wdGlvbnM6IGludAogICAgIC8KIApAQCAtNzAxNSwxMSArNjg3MiwxMSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTVmMWNlMDA1YTM0NmIwOSBpbnB1dD00NDRjOGY1MWNjYTViODYyXSovCitvc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTgzNmIyMjEyNzFkNTM4IGlucHV0PTQwZjI0NDBjNTE1NDEwZjhdKi8KIHsKICAgICBpbnQgc3RhdHVzOwotICAgIFB5X2ludHB0cl90IHJlczsKKyAgICBpbnRwdHJfdCByZXM7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKICAgICBkbyB7CkBAIC03MTMwLDE2ICs2OTg3LDE2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2luX3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICB3Y2hhcl90ICpwYXRoOworICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7CiAgICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKICAgICBEV09SRCBpb19yZXN1bHQ7CiAgICAgUHlPYmplY3QgKnBvLCAqcmVzdWx0OwotICAgICAgICBpbnQgZGlyX2ZkOworICAgIGludCBkaXJfZmQ7CiAgICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOwogCi0gICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKLSAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7Ci0gICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKKyAgICBjaGFyIHRhcmdldF9idWZmZXJbX1B5X01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKKyAgICBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKKyAgICBjb25zdCB3Y2hhcl90ICpwcmludF9uYW1lOwogCiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CiAKQEAgLTcyMDcsMjIgKzcwNjQsMTkgQEAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIC8qIEdyYWIgQ3JlYXRlU3ltYm9saWNMaW5rVyBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCi1zdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKShMUFdTVFIsIExQV1NUUiwgRFdPUkQpID0gTlVMTDsKLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua0EpKExQU1RSLCBMUFNUUiwgRFdPUkQpID0gTlVMTDsKK3N0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQQ1dTVFIsIExQQ1dTVFIsIERXT1JEKSA9IE5VTEw7CiAKIHN0YXRpYyBpbnQKIGNoZWNrX0NyZWF0ZVN5bWJvbGljTGluayh2b2lkKQogewogICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CiAgICAgLyogb25seSByZWNoZWNrICovCi0gICAgaWYgKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkKKyAgICBpZiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykKICAgICAgICAgcmV0dXJuIDE7CiAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CiAgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1ciKTsKLSAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rQSIpOwotICAgIHJldHVybiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAmJiBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKTsKKyAgICByZXR1cm4gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAhPSBOVUxMOwogfQogCiAvKiBSZW1vdmUgdGhlIGxhc3QgcG9ydGlvbiBvZiB0aGUgcGF0aCAqLwpAQCAtNzIzOSwyMCArNzA5Myw2IEBACiAgICAgKnB0ciA9IDA7CiB9CiAKLS8qIFJlbW92ZSB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBwYXRoICovCi1zdGF0aWMgdm9pZAotX2Rpcm5hbWVBKGNoYXIgKnBhdGgpCi17Ci0gICAgY2hhciAqcHRyOwotCi0gICAgLyogd2FsayB0aGUgcGF0aCBmcm9tIHRoZSBlbmQgdW50aWwgYSBiYWNrc2xhc2ggaXMgZW5jb3VudGVyZWQgKi8KLSAgICBmb3IocHRyID0gcGF0aCArIHN0cmxlbihwYXRoKTsgcHRyICE9IHBhdGg7IHB0ci0tKSB7Ci0gICAgICAgIGlmICgqcHRyID09ICdcXCcgfHwgKnB0ciA9PSAnLycpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgKnB0ciA9IDA7Ci19Ci0KIC8qIElzIHRoaXMgcGF0aCBhYnNvbHV0ZT8gKi8KIHN0YXRpYyBpbnQKIF9pc19hYnNXKGNvbnN0IFdDSEFSICpwYXRoKQpAQCAtNzI2MSwxNCArNzEwMSw2IEBACiAKIH0KIAotLyogSXMgdGhpcyBwYXRoIGFic29sdXRlPyAqLwotc3RhdGljIGludAotX2lzX2Fic0EoY29uc3QgY2hhciAqcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aFswXSA9PSAnXFwnIHx8IHBhdGhbMF0gPT0gJy8nIHx8IHBhdGhbMV0gPT0gJzonOwotCi19Ci0KIC8qIGpvaW4gcm9vdCBhbmQgcmVzdCB3aXRoIGEgYmFja3NsYXNoICovCiBzdGF0aWMgdm9pZAogX2pvaW5XKFdDSEFSICpkZXN0X3BhdGgsIGNvbnN0IFdDSEFSICpyb290LCBjb25zdCBXQ0hBUiAqcmVzdCkKQEAgLTcyOTAsMzAgKzcxMjIsOSBAQAogICAgIHdjc2NweShkZXN0X3BhdGgrcm9vdF9sZW4sIHJlc3QpOwogfQogCi0vKiBqb2luIHJvb3QgYW5kIHJlc3Qgd2l0aCBhIGJhY2tzbGFzaCAqLwotc3RhdGljIHZvaWQKLV9qb2luQShjaGFyICpkZXN0X3BhdGgsIGNvbnN0IGNoYXIgKnJvb3QsIGNvbnN0IGNoYXIgKnJlc3QpCi17Ci0gICAgc2l6ZV90IHJvb3RfbGVuOwotCi0gICAgaWYgKF9pc19hYnNBKHJlc3QpKSB7Ci0gICAgICAgIHN0cmNweShkZXN0X3BhdGgsIHJlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcm9vdF9sZW4gPSBzdHJsZW4ocm9vdCk7Ci0KLSAgICBzdHJjcHkoZGVzdF9wYXRoLCByb290KTsKLSAgICBpZihyb290X2xlbikgewotICAgICAgICBkZXN0X3BhdGhbcm9vdF9sZW5dID0gJ1xcJzsKLSAgICAgICAgcm9vdF9sZW4rKzsKLSAgICB9Ci0gICAgc3RyY3B5KGRlc3RfcGF0aCtyb290X2xlbiwgcmVzdCk7Ci19Ci0KIC8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCiBzdGF0aWMgaW50Ci1fY2hlY2tfZGlyVyhXQ0hBUiAqc3JjLCBXQ0hBUiAqZGVzdCkKK19jaGVja19kaXJXKExQQ1dTVFIgc3JjLCBMUENXU1RSIGRlc3QpCiB7CiAgICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKICAgICBXQ0hBUiBkZXN0X3BhcmVudFtNQVhfUEFUSF07CkBAIC03MzI5LDI1ICs3MTQwLDYgQEAKICAgICAgICAgJiYgc3JjX2luZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQogICAgICk7CiB9Ci0KLS8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCi1zdGF0aWMgaW50Ci1fY2hlY2tfZGlyQShjaGFyICpzcmMsIGNoYXIgKmRlc3QpCi17Ci0gICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKLSAgICBjaGFyIGRlc3RfcGFyZW50W01BWF9QQVRIXTsKLSAgICBjaGFyIHNyY19yZXNvbHZlZFtNQVhfUEFUSF0gPSAiIjsKLQotICAgIC8qIGRlc3RfcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKGRlc3QpICovCi0gICAgc3RyY3B5KGRlc3RfcGFyZW50LCBkZXN0KTsKLSAgICBfZGlybmFtZUEoZGVzdF9wYXJlbnQpOwotICAgIC8qIHNyY19yZXNvbHZlZCA9IG9zLnBhdGguam9pbihkZXN0X3BhcmVudCwgc3JjKSAqLwotICAgIF9qb2luQShzcmNfcmVzb2x2ZWQsIGRlc3RfcGFyZW50LCBzcmMpOwotICAgIHJldHVybiAoCi0gICAgICAgIEdldEZpbGVBdHRyaWJ1dGVzRXhBKHNyY19yZXNvbHZlZCwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmc3JjX2luZm8pCi0gICAgICAgICYmIHNyY19pbmZvLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLSAgICApOwotfQogI2VuZGlmCiAKIApAQCAtNzQwNywxOCArNzE5OSwxMCBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZHN0LT53aWRlKSB7Ci0gICAgICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSB8PSBfY2hlY2tfZGlyVyhzcmMtPndpZGUsIGRzdC0+d2lkZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LT53aWRlLCBzcmMtPndpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBpZiBzcmMgaXMgYSBkaXJlY3RvcnksIGVuc3VyZSB0YXJnZXRfaXNfZGlyZWN0b3J5PT0xICovCi0gICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkgfD0gX2NoZWNrX2RpckEoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKLSAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QtPm5hcnJvdywgc3JjLT5uYXJyb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgfQorICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KKyAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy0+d2lkZSwgZHN0LT53aWRlKTsKKyAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KQpAQCAtNzcyMywxNiArNzUwNywxNSBAQAogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBmbGFncywgbW9kZSk7Ci0gICAgICAgIGVsc2UKLSNlbmRpZgorICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBmbGFncywgbW9kZSk7CisjZWxzZQogI2lmZGVmIEhBVkVfT1BFTkFUCiAgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCiAgICAgICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOwogICAgICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX09QRU5BVCAqLwogICAgICAgICAgICAgZmQgPSBvcGVuKHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOworI2VuZGlmIC8qICFNU19XSU5ET1dTICovCiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfSB3aGlsZSAoZmQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtNzc2Nyw4ICs3NTUwLDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZmU0ZTkzNjAyODIyYzE0IGlucHV0PTJiYzQyNDUxY2E1YzMyMjNdKi8KIHsKICAgICBpbnQgcmVzOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8KICAgICAgKiBhbmQgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKICAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgpAQCAtNzgwMSw5ICs3NTgyLDggQEAKICAgICBpbnQgaTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIGZvciAoaSA9IGZkX2xvdzsgaSA8IGZkX2hpZ2g7IGkrKykKLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChpKSkKLSAgICAgICAgICAgIGNsb3NlKGkpOworICAgIGZvciAoaSA9IFB5X01BWChmZF9sb3csIDApOyBpIDwgZmRfaGlnaDsgaSsrKQorICAgICAgICBjbG9zZShpKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC03ODQ3LDcgKzc2MjcsNyBAQAogICAgIGludCBkdXAzX3dvcmtzID0gLTE7CiAjZW5kaWYKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkX2R1cDIoZmQsIGZkMikpCisgICAgaWYgKGZkIDwgMCB8fCBmZDIgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAogICAgIC8qIGR1cDIoKSBjYW4gZmFpbCB3aXRoIEVJTlRSIGlmIHRoZSB0YXJnZXQgRkQgaXMgYWxyZWFkeSBvcGVuLCBiZWNhdXNlIGl0CkBAIC03OTcxLDEwICs3NzUxLDYgQEAKIHsKICAgICBQeV9vZmZfdCByZXN1bHQ7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICNpZmRlZiBTRUVLX1NFVAogICAgIC8qIFR1cm4gMCwgMSwgMiBpbnRvIFNFRUtfe1NFVCxDVVIsRU5EfSAqLwogICAgIHN3aXRjaCAoaG93KSB7CkBAIC03OTg3LDEwICs3NzYzLDYgQEAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCkBAIC04MTk4LDEwICs3OTcwLDYgQEAKICAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuZ3RoKTsKICAgICBpZiAoYnVmZmVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfQogCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC04MzY0LDcgKzgxMzIsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpT246c2VuZGZpbGUiLAogICAgICAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgJm9mZm9iaiwgJmNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICAgICBpZiAob2Zmb2JqID09IFB5X05vbmUpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtODQ0NCw4ICs4MjEyLDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YTQ4YzhiNGU2NDRjYTAwIGlucHV0PTA4Y2U5NGFhMWVhZjdiNWVdKi8KIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIDA7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJldHVybl92YWx1ZSA9IGlzYXR0eShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTg0ODQsOCArODI1MCw4IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIG9rID0gQ3JlYXRlUGlwZSgmcmVhZCwgJndyaXRlLCAmYXR0ciwgMCk7CiAgICAgaWYgKG9rKSB7Ci0gICAgICAgIGZkc1swXSA9IF9vcGVuX29zZmhhbmRsZSgoUHlfaW50cHRyX3QpcmVhZCwgX09fUkRPTkxZKTsKLSAgICAgICAgZmRzWzFdID0gX29wZW5fb3NmaGFuZGxlKChQeV9pbnRwdHJfdCl3cml0ZSwgX09fV1JPTkxZKTsKKyAgICAgICAgZmRzWzBdID0gX29wZW5fb3NmaGFuZGxlKChpbnRwdHJfdClyZWFkLCBfT19SRE9OTFkpOworICAgICAgICBmZHNbMV0gPSBfb3Blbl9vc2ZoYW5kbGUoKGludHB0cl90KXdyaXRlLCBfT19XUk9OTFkpOwogICAgICAgICBpZiAoZmRzWzBdID09IC0xIHx8IGZkc1sxXSA9PSAtMSkgewogICAgICAgICAgICAgQ2xvc2VIYW5kbGUocmVhZCk7CiAgICAgICAgICAgICBDbG9zZUhhbmRsZSh3cml0ZSk7CkBAIC04NjM3LDExICs4NDAzLDYgQEAKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC04ODI0LDkgKzg1ODUsNiBAQAogICAgIGludCByZXN1bHQ7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTg4NzMsMTAgKzg2MzEsNyBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19OT0lOSEVSSVQpOwotICAgIGVsc2UKLSAgICAgICAgZmQgPSBfb3BlbihwYXRoLT5uYXJyb3csIF9PX1dST05MWSB8IF9PX0JJTkFSWSB8IF9PX05PSU5IRVJJVCk7CisgICAgZmQgPSBfd29wZW4ocGF0aC0+d2lkZSwgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKICAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXN1bHQgPSAtMTsKICAgICBlbHNlIHsKQEAgLTkwMjAsNyArODc3NSw3IEBACiBvc19wdXRlbnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyOWE1NjdkNmIyMzI3ZDIgaW5wdXQ9YmE1ODY1ODFjMmU2MTA1Zl0qLwogewotICAgIHdjaGFyX3QgKmVudjsKKyAgICBjb25zdCB3Y2hhcl90ICplbnY7CiAKICAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG5hbWUsIHZhbHVlKTsKICAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7CkBAIC05MDY2LDggKzg4MjEsOCBAQAogewogICAgIFB5T2JqZWN0ICpieXRlcyA9IE5VTEw7CiAgICAgY2hhciAqZW52OwotICAgIGNoYXIgKm5hbWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyhuYW1lKTsKLSAgICBjaGFyICp2YWx1ZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKHZhbHVlKTsKKyAgICBjb25zdCBjaGFyICpuYW1lX3N0cmluZyA9IFB5Qnl0ZXNfQXNTdHJpbmcobmFtZSk7CisgICAgY29uc3QgY2hhciAqdmFsdWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyh2YWx1ZSk7CiAKICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBuYW1lX3N0cmluZywgdmFsdWVfc3RyaW5nKTsKICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgewpAQCAtOTM0NSwxNyArOTEwMCwxNyBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMCwgUHlMb25nX0Zyb21Mb25nKChsb25nKSBzdC5mX2JzaXplKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAxLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfZnJzaXplKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2Jsb2NrcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2Jsb2NrcykpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9iZnJlZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2JmcmVlKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2JhdmFpbCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2JhdmFpbCkpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9maWxlcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2ZpbGVzKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2ZmcmVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmZyZWUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfZmF2YWlsKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmF2YWlsKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA4LCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfZmxhZykpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwgUHlMb25nX0Zyb21Mb25nKChsb25nKSBzdC5mX25hbWVtYXgpKTsKICNlbmRpZgpAQCAtOTQ4Niw4ICs5MjQxLDggQEAKICAqIHN1ZmZpY2llbnRseSBwZXJ2YXNpdmUgdGhhdCBpdCdzIG5vdCB3b3J0aCB0aGUgbG9zcyBvZiByZWFkYWJpbGl0eS4KICAqLwogc3RydWN0IGNvbnN0ZGVmIHsKLSAgICBjaGFyICpuYW1lOwotICAgIGxvbmcgdmFsdWU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBpbnQgdmFsdWU7CiB9OwogCiBzdGF0aWMgaW50CkBAIC05NDk1LDcgKzkyNTAsMTAgQEAKICAgICAgICAgICAgICAgc2l6ZV90IHRhYmxlc2l6ZSkKIHsKICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKLSAgICAgICAgKnZhbHVlcCA9IFB5TG9uZ19BU19MT05HKGFyZyk7CisgICAgICAgIGludCB2YWx1ZSA9IF9QeUxvbmdfQXNJbnQoYXJnKTsKKyAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKnZhbHVlcCA9IHZhbHVlOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgZWxzZSB7CkBAIC0xMDQ1Niw3ICsxMDIxNCw3IEBACiAKIHN0YXRpYyBpbnQKIHNldHVwX2NvbmZuYW1lX3RhYmxlKHN0cnVjdCBjb25zdGRlZiAqdGFibGUsIHNpemVfdCB0YWJsZXNpemUsCi0gICAgICAgICAgICAgICAgICAgICBjaGFyICp0YWJsZW5hbWUsIFB5T2JqZWN0ICptb2R1bGUpCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0YWJsZW5hbWUsIFB5T2JqZWN0ICptb2R1bGUpCiB7CiAgICAgUHlPYmplY3QgKmQgPSBOVUxMOwogICAgIHNpemVfdCBpOwpAQCAtMTA1MjcsMzEgKzEwMjg1LDggQEAKIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKLS8qIEFDIDMuNTogY2hhbmdlIHRvIHBhdGhfdD8gYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGV4Y2VwdGlvbnMgKi8KLVB5RG9jX1NUUlZBUih3aW4zMl9zdGFydGZpbGVfX2RvY19fLAotInN0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKVxuXAotXG5cCi1TdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cblwKLVxuXAotV2hlbiBcIm9wZXJhdGlvblwiIGlzIG5vdCBzcGVjaWZpZWQgb3IgXCJvcGVuXCIsIHRoaXMgYWN0cyBsaWtlXG5cCi1kb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuXG5cCi1hcmd1bWVudCB0byB0aGUgRE9TIFwic3RhcnRcIiBjb21tYW5kOiB0aGUgZmlsZSBpcyBvcGVuZWQgd2l0aCB3aGF0ZXZlclxuXAotYXBwbGljYXRpb24gKGlmIGFueSkgaXRzIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkLlxuXAotV2hlbiBhbm90aGVyIFwib3BlcmF0aW9uXCIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGhcblwKLXRoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyBcInByaW50XCIuXG5cCi1cblwKLXN0YXJ0ZmlsZSByZXR1cm5zIGFzIHNvb24gYXMgdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gaXMgbGF1bmNoZWQuXG5cCi1UaGVyZSBpcyBubyBvcHRpb24gdG8gd2FpdCBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIGNsb3NlLCBhbmQgbm8gd2F5XG5cCi10byByZXRyaWV2ZSB0aGUgYXBwbGljYXRpb24ncyBleGl0IHN0YXR1cy5cblwKLVxuXAotVGhlIGZpbGVwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIElmIHlvdSB3YW50IHRvIHVzZVxuXAotYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKFwiL1wiKTtcblwKLXRoZSB1bmRlcmx5aW5nIFdpbjMyIFNoZWxsRXhlY3V0ZSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgaWYgaXQgaXMuIik7Ci0KIC8qIEdyYWIgU2hlbGxFeGVjdXRlIGR5bmFtaWNhbGx5IGZyb20gc2hlbGwzMiAqLwogc3RhdGljIGludCBoYXNfU2hlbGxFeGVjdXRlID0gLTE7Ci1zdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlQSkoSFdORCwgTFBDU1RSLCBMUENTVFIsIExQQ1NUUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENTVFIsIElOVCk7CiBzdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlVykoSFdORCwgTFBDV1NUUiwgTFBDV1NUUiwgTFBDV1NUUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSLCBJTlQpOwogc3RhdGljIGludApAQCAtMTA1NjUsMTIgKzEwMzAwLDkgQEAKICAgICAgICAgaFNoZWxsMzIgPSBMb2FkTGlicmFyeVcoTCJTSEVMTDMyIik7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmIChoU2hlbGwzMikgewotICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfU2hlbGxFeGVjdXRlQSA9IEdldFByb2NBZGRyZXNzKGhTaGVsbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hlbGxFeGVjdXRlQSIpOwogICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfU2hlbGxFeGVjdXRlVyA9IEdldFByb2NBZGRyZXNzKGhTaGVsbDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hlbGxFeGVjdXRlVyIpOwotICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IFB5X1NoZWxsRXhlY3V0ZUEgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TaGVsbEV4ZWN1dGVXOworICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IFB5X1NoZWxsRXhlY3V0ZVcgIT0gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSAwOwogICAgICAgICB9CkBAIC0xMDU3OSwxNiArMTAzMTEsMzYgQEAKIH0KIAogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfc3RhcnRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb2ZpbGVwYXRoOwotICAgIGNoYXIgKmZpbGVwYXRoOwotICAgIGNoYXIgKm9wZXJhdGlvbiA9IE5VTEw7Ci0gICAgd2NoYXJfdCAqd3BhdGgsICp3b3BlcmF0aW9uOwotICAgIEhJTlNUQU5DRSByYzsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN0YXJ0ZmlsZQorICAgIGZpbGVwYXRoOiBwYXRoX3QKKyAgICBvcGVyYXRpb246IFB5X1VOSUNPREUgPSBOVUxMCiAKLSAgICBQeU9iamVjdCAqdW5pcGF0aCwgKnVvcGVyYXRpb24gPSBOVUxMOworc3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pCisKK1N0YXJ0IGEgZmlsZSB3aXRoIGl0cyBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uLgorCitXaGVuICJvcGVyYXRpb24iIGlzIG5vdCBzcGVjaWZpZWQgb3IgIm9wZW4iLCB0aGlzIGFjdHMgbGlrZQorZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhbgorYXJndW1lbnQgdG8gdGhlIERPUyAic3RhcnQiIGNvbW1hbmQ6IHRoZSBmaWxlIGlzIG9wZW5lZCB3aXRoIHdoYXRldmVyCithcHBsaWNhdGlvbiAoaWYgYW55KSBpdHMgZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQuCitXaGVuIGFub3RoZXIgIm9wZXJhdGlvbiIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGgKK3RoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyAicHJpbnQiLgorCitzdGFydGZpbGUgcmV0dXJucyBhcyBzb29uIGFzIHRoZSBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIGlzIGxhdW5jaGVkLgorVGhlcmUgaXMgbm8gb3B0aW9uIHRvIHdhaXQgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBjbG9zZSwgYW5kIG5vIHdheQordG8gcmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uJ3MgZXhpdCBzdGF0dXMuCisKK1RoZSBmaWxlcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBJZiB5b3Ugd2FudCB0byB1c2UKK2FuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoICgiLyIpOwordGhlIHVuZGVybHlpbmcgV2luMzIgU2hlbGxFeGVjdXRlIGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayBpZiBpdCBpcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqZmlsZXBhdGgsIFB5X1VOSUNPREUgKm9wZXJhdGlvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MTJjZWJhNzlhY2ZhMWM5IGlucHV0PTYzOTUwYmYyOTg2MzgwZDBdKi8KK3sKKyAgICBISU5TVEFOQ0UgcmM7CiAKICAgICBpZighY2hlY2tfU2hlbGxFeGVjdXRlKCkpIHsKICAgICAgICAgLyogSWYgdGhlIE9TIGRvZXNuJ3QgaGF2ZSBTaGVsbEV4ZWN1dGUsIHJldHVybiBhCkBAIC0xMDU5Nyw2OCArMTAzNDksMTYgQEAKICAgICAgICAgICAgICJzdGFydGZpbGUgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIik7CiAgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHM6c3RhcnRmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnVuaXBhdGgsICZvcGVyYXRpb24pKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGdvdG8gbm9ybWFsOwotICAgIH0KLQotICAgIGlmIChvcGVyYXRpb24pIHsKLSAgICAgICAgdW9wZXJhdGlvbiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShvcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG9wZXJhdGlvbiksIE5VTEwpOwotICAgICAgICBpZiAoIXVvcGVyYXRpb24pIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBvcGVyYXRpb24gPSBOVUxMOwotICAgICAgICAgICAgZ290byBub3JtYWw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pcGF0aCk7Ci0gICAgaWYgKHdwYXRoID09IE5VTEwpCi0gICAgICAgIGdvdG8gbm9ybWFsOwotICAgIGlmICh1b3BlcmF0aW9uKSB7Ci0gICAgICAgIHdvcGVyYXRpb24gPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVvcGVyYXRpb24pOwotICAgICAgICBpZiAod29wZXJhdGlvbiA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBub3JtYWw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgd29wZXJhdGlvbiA9IE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBQeV9TaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24sIHdwYXRoLAorICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlVygoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLT53aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfWERFQ1JFRih1b3BlcmF0aW9uKTsKICAgICBpZiAocmMgPD0gKEhJTlNUQU5DRSkzMikgewotICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIHVuaXBhdGgpOworICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIGZpbGVwYXRoLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotCi1ub3JtYWw6Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxzOnN0YXJ0ZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9maWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wZXJhdGlvbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvZmlsZXBhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZmlsZXBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9maWxlcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlQSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyYyA8PSAoSElOU1RBTkNFKTMyKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplcnJ2YWwgPSB3aW4zMl9lcnJvcigic3RhcnRmaWxlIiwgZmlsZXBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob2ZpbGVwYXRoKTsKLSAgICAgICAgcmV0dXJuIGVycnZhbDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9maWxlcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIApAQCAtMTA4MjYsNyArMTA1MjYsNyBAQAogICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CiAgICAgICAgIHZvaWQgKnB0cjsKICAgICAgICAgc3NpemVfdCByZXN1bHQ7Ci0gICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0gezEyOCwgWEFUVFJfU0laRV9NQVgsIDB9OworICAgICAgICBzdGF0aWMgY29uc3QgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsxMjgsIFhBVFRSX1NJWkVfTUFYLCAwfTsKICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKICAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgewogICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKQEAgLTEwOTkwLDkgKzEwNjkwLDkgQEAKICAgICBuYW1lID0gcGF0aC0+bmFycm93ID8gcGF0aC0+bmFycm93IDogIi4iOwogCiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKLSAgICAgICAgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKKyAgICAgICAgY29uc3QgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKICAgICAgICAgc3NpemVfdCBsZW5ndGg7Ci0gICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CisgICAgICAgIHN0YXRpYyBjb25zdCBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIC8qIEVSQU5HRSAqLwpAQCAtMTEwODMsOCArMTA3ODMsNyBAQAogICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkgewogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMjA0LDExICsxMDkwMywxNSBAQAogb3MuY3B1X2NvdW50CiAKIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuCisKK1RoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhbgordXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aAorYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NwdV9jb3VudF9pbXBsKFB5T2JqZWN0ICptb2R1bGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMjk0NjNjMzkzNmE5YyBpbnB1dD1kNTVlMmY4ZjM4MjNhNjI4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMjk0NjNjMzkzNmE5YyBpbnB1dD1lN2M4ZjRiYTZkYmJhZGQzXSovCiB7CiAgICAgaW50IG5jcHUgPSAwOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTExMjUyLDExICsxMDk1NSw2IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDQ0NWUyMGUxNDlhYTViOCBpbnB1dD04OWFjMDA4ZGM5YWI2Yjk1XSovCiB7CiAgICAgaW50IHJldHVybl92YWx1ZTsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXR1cm5fdmFsdWUgPSBfUHlfZ2V0X2luaGVyaXRhYmxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTEyNzgsOCArMTA5NzYsNiBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYxYjE5MThhMmYzYzM4YzIgaW5wdXQ9OWNlYWVhZDg3YTFlMjQwMl0qLwogewogICAgIGludCByZXN1bHQ7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCBpbmhlcml0YWJsZSwgTlVMTCk7CkBAIC0xMTI5MywxNSArMTA5ODksMTUgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAvKltjbGluaWMgaW5wdXRdCiBvcy5nZXRfaGFuZGxlX2luaGVyaXRhYmxlIC0+IGJvb2wKLSAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgaGFuZGxlOiBpbnRwdHJfdAogICAgIC8KIAogR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIGludAotb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZTUzODliMGFhMDkxNmNlIGlucHV0PTVmNzc1OTQ0M2FhZTNkYzVdKi8KK29zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzZiZTVhZmNhNmVhODRkOCBpbnB1dD1jZmU5OWY5YzA1YzcwYWQxXSovCiB7CiAgICAgRFdPUkQgZmxhZ3M7CiAKQEAgLTExMzE2LDcgKzExMDEyLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogb3Muc2V0X2hhbmRsZV9pbmhlcml0YWJsZQotICAgIGhhbmRsZTogUHlfaW50cHRyX3QKKyAgICBoYW5kbGU6IGludHB0cl90CiAgICAgaW5oZXJpdGFibGU6IGJvb2wKICAgICAvCiAKQEAgLTExMzI0LDkgKzExMDIwLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMWU2N2JmYTMyMTNkNzQ1IGlucHV0PWU2NGIyYjI3MzA0NjlkZWZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMjFkNzRmZTZjOTZiYWEzIGlucHV0PTdhNzY0MTM5MGQ4MzY0ZmNdKi8KIHsKICAgICBEV09SRCBmbGFncyA9IGluaGVyaXRhYmxlID8gSEFORExFX0ZMQUdfSU5IRVJJVCA6IDA7CiAgICAgaWYgKCFTZXRIYW5kbGVJbmZvcm1hdGlvbigoSEFORExFKWhhbmRsZSwgSEFORExFX0ZMQUdfSU5IRVJJVCwgZmxhZ3MpKSB7CkBAIC0xMTM1Myw5ICsxMTA0OSw2IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldF9ibG9ja2luZyIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBibG9ja2luZyA9IF9QeV9nZXRfYmxvY2tpbmcoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC0xMTM3OSw5ICsxMTA3Miw2IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfYmxvY2tpbmciLCAmZmQsICZibG9ja2luZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfUHlfc2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZyk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTExNDY1LDE2ICsxMTE1NSwxNiBAQAogICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgd2NoYXJfdCAqcGF0aDsKKyAgICBjb25zdCB3Y2hhcl90ICpwYXRoOwogCiAgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc2VsZi0+cGF0aCk7CiAgICAgaWYgKCFwYXRoKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX3N0YXRfdyhwYXRoLCAmc3QpOworICAgICAgICByZXN1bHQgPSB3aW4zMl9zdGF0KHBhdGgsICZzdCk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdF93KHBhdGgsICZzdCk7CisgICAgICAgIHJlc3VsdCA9IHdpbjMyX2xzdGF0KHBhdGgsICZzdCk7CiAKICAgICBpZiAocmVzdWx0ICE9IDApIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCkBAIC0xMTQ4Miw3ICsxMTE3Miw3IEBACiAgICAgfQogI2Vsc2UgLyogUE9TSVggKi8KICAgICBQeU9iamVjdCAqYnl0ZXM7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBjb25zdCBjaGFyICpwYXRoOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoc2VsZi0+cGF0aCwgJmJ5dGVzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTY2NiwxNCArMTEzNTYsMTQgQEAKIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKCFzZWxmLT5nb3RfZmlsZV9pbmRleCkgewotICAgICAgICB3Y2hhcl90ICpwYXRoOworICAgICAgICBjb25zdCB3Y2hhcl90ICpwYXRoOwogICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXQ7CiAKICAgICAgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc2VsZi0+cGF0aCk7CiAgICAgICAgIGlmICghcGF0aCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIGlmICh3aW4zMl9sc3RhdF93KHBhdGgsICZzdGF0KSAhPSAwKSB7CisgICAgICAgIGlmICh3aW4zMl9sc3RhdChwYXRoLCAmc3RhdCkgIT0gMCkgewogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc2VsZi0+cGF0aCk7CiAgICAgICAgIH0KQEAgLTExNjgxLDEwICsxMTM3MSwxMCBAQAogICAgICAgICBzZWxmLT53aW4zMl9maWxlX2luZGV4ID0gc3RhdC5zdF9pbm87CiAgICAgICAgIHNlbGYtPmdvdF9maWxlX2luZGV4ID0gMTsKICAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORylzZWxmLT53aW4zMl9maWxlX2luZGV4KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXNlbGYtPndpbjMyX2ZpbGVfaW5kZXgpOwogI2Vsc2UgLyogUE9TSVggKi8KICNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORylzZWxmLT5kX2lubyk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzZWxmLT5kX2lubyk7CiAjZWxzZQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc2VsZi0+ZF9pbm8pOwogI2VuZGlmCkBAIC0xMTY5Nyw2ICsxMTM4NywxMyBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPERpckVudHJ5ICVSPiIsIHNlbGYtPm5hbWUpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfZnNwYXRoKERpckVudHJ5ICpzZWxmKQoreworICAgIFB5X0lOQ1JFRihzZWxmLT5wYXRoKTsKKyAgICByZXR1cm4gc2VsZi0+cGF0aDsKK30KKwogc3RhdGljIFB5TWVtYmVyRGVmIERpckVudHJ5X21lbWJlcnNbXSA9IHsKICAgICB7Im5hbWUiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoRGlyRW50cnksIG5hbWUpLCBSRUFET05MWSwKICAgICAgInRoZSBlbnRyeSdzIGJhc2UgZmlsZW5hbWUsIHJlbGF0aXZlIHRvIHNjYW5kaXIoKSBcInBhdGhcIiBhcmd1bWVudCJ9LApAQCAtMTE3MjEsNiArMTE0MTgsOSBAQAogICAgIHsiaW5vZGUiLCAoUHlDRnVuY3Rpb24pRGlyRW50cnlfaW5vZGUsIE1FVEhfTk9BUkdTLAogICAgICAicmV0dXJuIGlub2RlIG9mIHRoZSBlbnRyeTsgY2FjaGVkIHBlciBlbnRyeSIsCiAgICAgfSwKKyAgICB7Il9fZnNwYXRoX18iLCAoUHlDRnVuY3Rpb24pRGlyRW50cnlfZnNwYXRoLCBNRVRIX05PQVJHUywKKyAgICAgInJldHVybnMgdGhlIHBhdGggZm9yIHRoZSBlbnRyeSIsCisgICAgfSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTExNzYwLDcgKzExNDYwLDcgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAKIHN0YXRpYyB3Y2hhcl90ICoKLWpvaW5fcGF0aF9maWxlbmFtZVcod2NoYXJfdCAqcGF0aF93aWRlLCB3Y2hhcl90KiBmaWxlbmFtZSkKK2pvaW5fcGF0aF9maWxlbmFtZVcoY29uc3Qgd2NoYXJfdCAqcGF0aF93aWRlLCBjb25zdCB3Y2hhcl90ICpmaWxlbmFtZSkKIHsKICAgICBQeV9zc2l6ZV90IHBhdGhfbGVuOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKQEAgLTExODEyLDYgKzExNTEyLDExIEBACiAgICAgZW50cnktPm5hbWUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGRhdGFXLT5jRmlsZU5hbWUsIC0xKTsKICAgICBpZiAoIWVudHJ5LT5uYW1lKQogICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChwYXRoLT5uYXJyb3cpIHsKKyAgICAgICAgUHlfU0VUUkVGKGVudHJ5LT5uYW1lLCBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGVudHJ5LT5uYW1lKSk7CisgICAgICAgIGlmICghZW50cnktPm5hbWUpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KIAogICAgIGpvaW5lZF9wYXRoID0gam9pbl9wYXRoX2ZpbGVuYW1lVyhwYXRoLT53aWRlLCBkYXRhVy0+Y0ZpbGVOYW1lKTsKICAgICBpZiAoIWpvaW5lZF9wYXRoKQpAQCAtMTE4MjEsOCArMTE1MjYsMTMgQEAKICAgICBQeU1lbV9GcmVlKGpvaW5lZF9wYXRoKTsKICAgICBpZiAoIWVudHJ5LT5wYXRoKQogICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChwYXRoLT5uYXJyb3cpIHsKKyAgICAgICAgUHlfU0VUUkVGKGVudHJ5LT5wYXRoLCBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGVudHJ5LT5wYXRoKSk7CisgICAgICAgIGlmICghZW50cnktPnBhdGgpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KIAotICAgIGZpbmRfZGF0YV90b19maWxlX2luZm9fdyhkYXRhVywgJmZpbGVfaW5mbywgJnJlcGFyc2VfdGFnKTsKKyAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvKGRhdGFXLCAmZmlsZV9pbmZvLCAmcmVwYXJzZV90YWcpOwogICAgIF9QeV9hdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZmaWxlX2luZm8sIHJlcGFyc2VfdGFnLCAmZW50cnktPndpbjMyX2xzdGF0KTsKIAogICAgIHJldHVybiAoUHlPYmplY3QgKillbnRyeTsKQEAgLTExODM1LDcgKzExNTQ1LDcgQEAKICNlbHNlIC8qIFBPU0lYICovCiAKIHN0YXRpYyBjaGFyICoKLWpvaW5fcGF0aF9maWxlbmFtZShjaGFyICpwYXRoX25hcnJvdywgY2hhciogZmlsZW5hbWUsIFB5X3NzaXplX3QgZmlsZW5hbWVfbGVuKQoram9pbl9wYXRoX2ZpbGVuYW1lKGNvbnN0IGNoYXIgKnBhdGhfbmFycm93LCBjb25zdCBjaGFyKiBmaWxlbmFtZSwgUHlfc3NpemVfdCBmaWxlbmFtZV9sZW4pCiB7CiAgICAgUHlfc3NpemVfdCBwYXRoX2xlbjsKICAgICBQeV9zc2l6ZV90IHNpemU7CkBAIC0xMTg2Nyw3ICsxMTU3Nyw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1EaXJFbnRyeV9mcm9tX3Bvc2l4X2luZm8ocGF0aF90ICpwYXRoLCBjaGFyICpuYW1lLCBQeV9zc2l6ZV90IG5hbWVfbGVuLAorRGlyRW50cnlfZnJvbV9wb3NpeF9pbmZvKHBhdGhfdCAqcGF0aCwgY29uc3QgY2hhciAqbmFtZSwgUHlfc3NpemVfdCBuYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbm9fdCBkX2lubwogI2lmZGVmIEhBVkVfRElSRU5UX0RfVFlQRQogICAgICAgICAgICAgICAgICAgICAgICAgICwgdW5zaWduZWQgY2hhciBkX3R5cGUKQEAgLTExOTMwLDggKzExNjQwLDE0IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAKK3N0YXRpYyBpbnQKK1NjYW5kaXJJdGVyYXRvcl9pc19jbG9zZWQoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK3sKKyAgICByZXR1cm4gaXRlcmF0b3ItPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKK30KKwogc3RhdGljIHZvaWQKLVNjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCiB7CiAgICAgSEFORExFIGhhbmRsZSA9IGl0ZXJhdG9yLT5oYW5kbGU7CiAKQEAgLTExOTUxLDcgKzExNjY3LDcgQEAKICAgICBCT09MIHN1Y2Nlc3M7CiAgICAgUHlPYmplY3QgKmVudHJ5OwogCi0gICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UgKi8KKyAgICAvKiBIYXBwZW5zIGlmIHRoZSBpdGVyYXRvciBpcyBpdGVyYXRlZCB0d2ljZSwgb3IgY2xvc2VkIGV4cGxpY2l0bHkgKi8KICAgICBpZiAoaXRlcmF0b3ItPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTExOTgyLDE0ICsxMTY5OCwyMCBAQAogICAgIH0KIAogICAgIC8qIEVycm9yIG9yIG5vIG1vcmUgZmlsZXMgKi8KLSAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihpdGVyYXRvcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbHNlIC8qIFBPU0lYICovCiAKK3N0YXRpYyBpbnQKK1NjYW5kaXJJdGVyYXRvcl9pc19jbG9zZWQoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK3sKKyAgICByZXR1cm4gIWl0ZXJhdG9yLT5kaXJwOworfQorCiBzdGF0aWMgdm9pZAotU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCitTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKIHsKICAgICBESVIgKmRpcnAgPSBpdGVyYXRvci0+ZGlycDsKIApAQCAtMTIwMTEsNyArMTE3MzMsNyBAQAogICAgIGludCBpc19kb3Q7CiAgICAgUHlPYmplY3QgKmVudHJ5OwogCi0gICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UgKi8KKyAgICAvKiBIYXBwZW5zIGlmIHRoZSBpdGVyYXRvciBpcyBpdGVyYXRlZCB0d2ljZSwgb3IgY2xvc2VkIGV4cGxpY2l0bHkgKi8KICAgICBpZiAoIWl0ZXJhdG9yLT5kaXJwKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTIwNDgsMjEgKzExNzcwLDc2IEBACiAgICAgfQogCiAgICAgLyogRXJyb3Igb3Igbm8gbW9yZSBmaWxlcyAqLwotICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZShpdGVyYXRvcik7CisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKGl0ZXJhdG9yKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAogI2VuZGlmCiAKK3N0YXRpYyBQeU9iamVjdCAqCitTY2FuZGlySXRlcmF0b3JfY2xvc2UoU2NhbmRpckl0ZXJhdG9yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoc2VsZik7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitTY2FuZGlySXRlcmF0b3JfZW50ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1NjYW5kaXJJdGVyYXRvcl9leGl0KFNjYW5kaXJJdGVyYXRvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKHNlbGYpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgdm9pZAorU2NhbmRpckl0ZXJhdG9yX2ZpbmFsaXplKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKworICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CisKKyAgICBpZiAoIVNjYW5kaXJJdGVyYXRvcl9pc19jbG9zZWQoaXRlcmF0b3IpKSB7CisgICAgICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihpdGVyYXRvcik7CisKKyAgICAgICAgaWYgKFB5RXJyX1Jlc291cmNlV2FybmluZygoUHlPYmplY3QgKilpdGVyYXRvciwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5jbG9zZWQgc2NhbmRpciBpdGVyYXRvciAlUiIsIGl0ZXJhdG9yKSkgeworICAgICAgICAgICAgLyogU3B1cmlvdXMgZXJyb3JzIGNhbiBhcHBlYXIgYXQgc2h1dGRvd24gKi8KKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1dhcm5pbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKChQeU9iamVjdCAqKSBpdGVyYXRvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9DTEVBUihpdGVyYXRvci0+cGF0aC5vYmplY3QpOworICAgIHBhdGhfY2xlYW51cCgmaXRlcmF0b3ItPnBhdGgpOworCisgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7Cit9CisKIHN0YXRpYyB2b2lkCiBTY2FuZGlySXRlcmF0b3JfZGVhbGxvYyhTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQogewotICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZShpdGVyYXRvcik7Ci0gICAgUHlfWERFQ1JFRihpdGVyYXRvci0+cGF0aC5vYmplY3QpOwotICAgIHBhdGhfY2xlYW51cCgmaXRlcmF0b3ItPnBhdGgpOworICAgIGlmIChQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2MoKFB5T2JqZWN0ICopaXRlcmF0b3IpIDwgMCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUHlfVFlQRShpdGVyYXRvciktPnRwX2ZyZWUoKFB5T2JqZWN0ICopaXRlcmF0b3IpOwogfQogCitzdGF0aWMgUHlNZXRob2REZWYgU2NhbmRpckl0ZXJhdG9yX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fZW50ZXJfXyIsIChQeUNGdW5jdGlvbilTY2FuZGlySXRlcmF0b3JfZW50ZXIsIE1FVEhfTk9BUkdTfSwKKyAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKVNjYW5kaXJJdGVyYXRvcl9leGl0LCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pU2NhbmRpckl0ZXJhdG9yX2Nsb3NlLCBNRVRIX05PQVJHU30sCisgICAge05VTEx9Cit9OworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFNjYW5kaXJJdGVyYXRvclR5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgTU9ETkFNRSAiLlNjYW5kaXJJdGVyYXRvciIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KQEAgLTEyMDg0LDcgKzExODYxLDggQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtMTIwOTIsNiArMTE4NzAsMjcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpU2NhbmRpckl0ZXJhdG9yX2l0ZXJuZXh0LCAvKiB0cF9pdGVybmV4dCAqLworICAgIFNjYW5kaXJJdGVyYXRvcl9tZXRob2RzLCAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICAoZGVzdHJ1Y3RvcilTY2FuZGlySXRlcmF0b3JfZmluYWxpemUsICAgLyogdHBfZmluYWxpemUgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjEwMiw3ICsxMTkwMSw3IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHdjaGFyX3QgKnBhdGhfc3RyVzsKICNlbHNlCi0gICAgY2hhciAqcGF0aDsKKyAgICBjb25zdCBjaGFyICpwYXRoOwogI2VuZGlmCiAKICAgICBpdGVyYXRvciA9IFB5T2JqZWN0X05ldyhTY2FuZGlySXRlcmF0b3IsICZTY2FuZGlySXRlcmF0b3JUeXBlKTsKQEAgLTEyMTI5LDExICsxMTkyOCw2IEBACiAgICAgUHlfWElOQ1JFRihpdGVyYXRvci0+cGF0aC5vYmplY3QpOwogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChpdGVyYXRvci0+cGF0aC5uYXJyb3cpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJvcy5zY2FuZGlyKCkgZG9lc24ndCBzdXBwb3J0IGJ5dGVzIHBhdGggb24gV2luZG93cywgdXNlIFVuaWNvZGUgaW5zdGVhZCIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KICAgICBpdGVyYXRvci0+Zmlyc3RfdGltZSA9IDE7CiAKICAgICBwYXRoX3N0clcgPSBqb2luX3BhdGhfZmlsZW5hbWVXKGl0ZXJhdG9yLT5wYXRoLndpZGUsIEwiKi4qIik7CkBAIC0xMjE3NCw2ICsxMTk2OCwxMzIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAgICBSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4KKworICAgIElmIHRoZSBvYmplY3QgaXMgc3RyIG9yIGJ5dGVzLCB0aGVuIGFsbG93IGl0IHRvIHBhc3MgdGhyb3VnaCB3aXRoCisgICAgYW4gaW5jcmVtZW50ZWQgcmVmY291bnQuIElmIHRoZSBvYmplY3QgZGVmaW5lcyBfX2ZzcGF0aF9fKCksIHRoZW4KKyAgICByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGF0IG1ldGhvZC4gQWxsIG90aGVyIHR5cGVzIHJhaXNlIGEgVHlwZUVycm9yLgorKi8KK1B5T2JqZWN0ICoKK1B5T1NfRlNQYXRoKFB5T2JqZWN0ICpwYXRoKQoreworICAgIC8qIEZvciBlcnJvciBtZXNzYWdlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gaXMgbWFudWFsbHkgaW5saW5lZCBpbgorICAgICAgIHBhdGhfY29udmVydGVyKCkuICovCisgICAgX1B5X0lERU5USUZJRVIoX19mc3BhdGhfXyk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoX3JlcHIgPSBOVUxMOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwYXRoKSB8fCBQeUJ5dGVzX0NoZWNrKHBhdGgpKSB7CisgICAgICAgIFB5X0lOQ1JFRihwYXRoKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorCisgICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHBhdGgsICZQeUlkX19fZnNwYXRoX18pOworICAgIGlmIChOVUxMID09IGZ1bmMpIHsKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIHN0ciwgYnl0ZXMgb3Igb3MuUGF0aExpa2Ugb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocGF0aCktPnRwX25hbWUpOworICAgIH0KKworICAgIHBhdGhfcmVwciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZnVuYywgTlVMTCk7CisgICAgUHlfREVDUkVGKGZ1bmMpOworICAgIGlmIChOVUxMID09IHBhdGhfcmVwcikgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIShQeVVuaWNvZGVfQ2hlY2socGF0aF9yZXByKSB8fCBQeUJ5dGVzX0NoZWNrKHBhdGhfcmVwcikpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJS4yMDBzLl9fZnNwYXRoX18oKSB0byByZXR1cm4gc3RyIG9yIGJ5dGVzLCAiCisgICAgICAgICAgICAgICAgICAgICAibm90ICUuMjAwcyIsIFB5X1RZUEUocGF0aCktPnRwX25hbWUsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHBhdGhfcmVwciktPnRwX25hbWUpOworICAgICAgICBQeV9ERUNSRUYocGF0aF9yZXByKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHBhdGhfcmVwcjsKK30KKworLypbY2xpbmljIGlucHV0XQorb3MuZnNwYXRoCisKKyAgICBwYXRoOiBvYmplY3QKKworUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKK0lmIHRoZSBvYmplY3QgaXMgc3RyIG9yIGJ5dGVzLCB0aGVuIGFsbG93IGl0IHRvIHBhc3MgdGhyb3VnaCBhcy1pcy4gSWYgdGhlCitvYmplY3QgZGVmaW5lcyBfX2ZzcGF0aF9fKCksIHRoZW4gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhhdCBtZXRob2QuIEFsbCBvdGhlcgordHlwZXMgcmFpc2UgYSBUeXBlRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mc3BhdGhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jM2MzYjc4ZWNmZjI5MTRmIGlucHV0PWUzNTcxNjVmN2IyMjQ5MGZdKi8KK3sKKyAgICByZXR1cm4gUHlPU19GU1BhdGgocGF0aCk7Cit9CisKKyNpZmRlZiBIQVZFX0dFVFJBTkRPTV9TWVNDQUxMCisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRyYW5kb20KKworICAgIHNpemU6IFB5X3NzaXplX3QKKyAgICBmbGFnczogaW50PTAKKworT2J0YWluIGEgc2VyaWVzIG9mIHJhbmRvbSBieXRlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHJhbmRvbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIzYTYxODE5NmE2MTQwOWMgaW5wdXQ9NTliYWZhYzM5YzU5NDk0N10qLworeworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBQeV9zc2l6ZV90IG47CisKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKworICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLAorICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksCisgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICBmbGFncyk7CisgICAgICAgIGlmIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUikgeworICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIGdldHJhbmRvbSgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbDogcmV0cnkgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChuIDwgMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKG4gIT0gc2l6ZSkgeworICAgICAgICBfUHlCeXRlc19SZXNpemUoJmJ5dGVzLCBuKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnl0ZXM7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYgICAvKiBIQVZFX0dFVFJBTkRPTV9TWVNDQUxMICovCiAKICNpbmNsdWRlICJjbGluaWMvcG9zaXhtb2R1bGUuYy5oIgogCkBAIC0xMjI2NSw3ICsxMjE4NSw3IEBACiAgICAgT1NfS0lMTFBHX01FVEhPRERFRgogICAgIE9TX1BMT0NLX01FVEhPRERFRgogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB7InN0YXJ0ZmlsZSIsICAgICAgIHdpbjMyX3N0YXJ0ZmlsZSwgTUVUSF9WQVJBUkdTLCB3aW4zMl9zdGFydGZpbGVfX2RvY19ffSwKKyAgICBPU19TVEFSVEZJTEVfTUVUSE9EREVGCiAjZW5kaWYKICAgICBPU19TRVRVSURfTUVUSE9EREVGCiAgICAgT1NfU0VURVVJRF9NRVRIT0RERUYKQEAgLTEyMzc0LDYgKzEyMjk0LDggQEAKICAgICB7InNjYW5kaXIiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zY2FuZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3NjYW5kaXJfX2RvY19ffSwKKyAgICBPU19GU1BBVEhfTUVUSE9EREVGCisgICAgT1NfR0VUUkFORE9NX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtMTIzODUsNyArMTIzMDcsNiBAQAogICAgIEhBTkRMRSB0b2s7CiAgICAgVE9LRU5fUFJJVklMRUdFUyB0b2tfcHJpdjsKICAgICBMVUlEIGx1aWQ7Ci0gICAgaW50IG1ldGhfaWR4ID0gMDsKIAogICAgIGlmICghT3BlblByb2Nlc3NUb2tlbihHZXRDdXJyZW50UHJvY2VzcygpLCBUT0tFTl9BTExfQUNDRVNTLCAmdG9rKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjQ4OCwxMiArMTI0MDksMTQgQEAKICNpZmRlZiBPX0xBUkdFRklMRQogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0xBUkdFRklMRSkpIHJldHVybiAtMTsKICNlbmRpZgorI2lmbmRlZiBfX0dOVV9fCiAjaWZkZWYgT19TSExPQ0sKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19TSExPQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX0VYTE9DSwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0VYTE9DSykpIHJldHVybiAtMTsKICNlbmRpZgorI2VuZGlmCiAjaWZkZWYgT19FWEVDCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fRVhFQykpIHJldHVybiAtMTsKICNlbmRpZgpAQCAtMTI3OTYsMjggKzEyNzE5LDMzIEBACiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFhBVFRSX1NJWkVfTUFYKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKLSNpZmRlZiBSVExEX0xBWlkKKyNpZiBIQVZFX0RFQ0xfUlRMRF9MQVpZCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTEFaWSkpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfTk9XCisjaWYgSEFWRV9ERUNMX1JUTERfTk9XCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTk9XKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9HTE9CQUwKKyNpZiBIQVZFX0RFQ0xfUlRMRF9HTE9CQUwKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9HTE9CQUwpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX0xPQ0FMCisjaWYgSEFWRV9ERUNMX1JUTERfTE9DQUwKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9MT0NBTCkpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfTk9ERUxFVEUKKyNpZiBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURQogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX05PREVMRVRFKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9OT0xPQUQKKyNpZiBIQVZFX0RFQ0xfUlRMRF9OT0xPQUQKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9OT0xPQUQpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX0RFRVBCSU5ECisjaWYgSEFWRV9ERUNMX1JUTERfREVFUEJJTkQKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9ERUVQQklORCkpIHJldHVybiAtMTsKICNlbmRpZgogCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBHUk5EX1JBTkRPTSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgR1JORF9OT05CTE9DSykpIHJldHVybiAtMTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEyODM1LDcgKzEyNzYzLDcgQEAKIH07CiAKIAotc3RhdGljIGNoYXIgKmhhdmVfZnVuY3Rpb25zW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGhhdmVfZnVuY3Rpb25zW10gPSB7CiAKICNpZmRlZiBIQVZFX0ZBQ0NFU1NBVAogICAgICJIQVZFX0ZBQ0NFU1NBVCIsCkBAIC0xMjk3MCw3ICsxMjg5OCw3IEBACiB7CiAgICAgUHlPYmplY3QgKm0sICp2OwogICAgIFB5T2JqZWN0ICpsaXN0OwotICAgIGNoYXIgKip0cmFjZTsKKyAgICBjb25zdCBjaGFyICogY29uc3QgKnRyYWNlOwogCiAjaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKICAgICB3aW4zMl9jYW5fc3ltbGluayA9IGVuYWJsZV9zeW1saW5rKCk7CkBAIC0xMzE0Niw2ICsxMzA3NCw5IEBACiAgICAgfQogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2hhdmVfZnVuY3Rpb25zIiwgbGlzdCk7CiAKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopICZEaXJFbnRyeVR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRGlyRW50cnkiLCAoUHlPYmplY3QgKikmRGlyRW50cnlUeXBlKTsKKwogICAgIGluaXRpYWxpemVkID0gMTsKIAogICAgIHJldHVybiBtOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wd2Rtb2R1bGUuYyBiL01vZHVsZXMvcHdkbW9kdWxlLmMKaW5kZXggNzQxNmNmNy4uNzg0ZTlkMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wd2Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3B3ZG1vZHVsZS5jCkBAIC03NSwxMCArNzUsMTggQEAKICNkZWZpbmUgU0VUUyhpLHZhbCkgc2V0cyh2LCBpLCB2YWwpCiAKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X25hbWUpOworI2lmIGRlZmluZWQoSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX1BBU1NXRCkgJiYgIWRlZmluZWQoX19BTkRST0lEX18pCiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19wYXNzd2QpOworI2Vsc2UKKyAgICBTRVRTKHNldEluZGV4KyssICIiKTsKKyNlbmRpZgogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgc2V0SW5kZXgrKywgX1B5TG9uZ19Gcm9tVWlkKHAtPnB3X3VpZCkpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgc2V0SW5kZXgrKywgX1B5TG9uZ19Gcm9tR2lkKHAtPnB3X2dpZCkpOworI2lmIGRlZmluZWQoSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX0dFQ09TKQogICAgIFNFVFMoc2V0SW5kZXgrKywgcC0+cHdfZ2Vjb3MpOworI2Vsc2UKKyAgICBTRVRTKHNldEluZGV4KyssICIiKTsKKyNlbmRpZgogICAgIFNFVFMoc2V0SW5kZXgrKywgcC0+cHdfZGlyKTsKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X3NoZWxsKTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weWV4cGF0LmMgYi9Nb2R1bGVzL3B5ZXhwYXQuYwppbmRleCBlYjMyMmMyLi5iMTliN2JlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5ZXhwYXQuYworKysgYi9Nb2R1bGVzL3B5ZXhwYXQuYwpAQCAtOTEsNyArOTEsNyBAQAogICogZmFsc2Ugb24gYW4gZXhjZXB0aW9uLgogICovCiBzdGF0aWMgaW50Ci1zZXRfZXJyb3JfYXR0cihQeU9iamVjdCAqZXJyLCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCitzZXRfZXJyb3JfYXR0cihQeU9iamVjdCAqZXJyLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnYgPSBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOwogCkBAIC0yMTgsNyArMjE4LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotY2FsbF93aXRoX2ZyYW1lKGNoYXIgKmZ1bmNuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCogZnVuYywgUHlPYmplY3QqIGFyZ3MsCitjYWxsX3dpdGhfZnJhbWUoY29uc3QgY2hhciAqZnVuY25hbWUsIGludCBsaW5lbm8sIFB5T2JqZWN0KiBmdW5jLCBQeU9iamVjdCogYXJncywKICAgICAgICAgICAgICAgICB4bWxwYXJzZW9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqcmVzOwpAQCAtNzQ3LDcgKzc0Nyw4IEBACiAgICAgICAgIHMgKz0gTUFYX0NIVU5LX1NJWkU7CiAgICAgICAgIHNsZW4gLT0gTUFYX0NIVU5LX1NJWkU7CiAgICAgfQotICAgIGFzc2VydChNQVhfQ0hVTktfU0laRSA8IElOVF9NQVggJiYgc2xlbiA8IElOVF9NQVgpOworICAgIFB5X0JVSUxEX0FTU0VSVChNQVhfQ0hVTktfU0laRSA8PSBJTlRfTUFYKTsKKyAgICBhc3NlcnQoc2xlbiA8PSBJTlRfTUFYKTsKICAgICByYyA9IFhNTF9QYXJzZShzZWxmLT5pdHNlbGYsIHMsIChpbnQpc2xlbiwgaXNmaW5hbCk7CiAKIGRvbmU6CkBAIC03NjUsNyArNzY2LDcgQEAKIHsKICAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3QgbGVuOwotICAgIGNoYXIgKnB0cjsKKyAgICBjb25zdCBjaGFyICpwdHI7CiAKICAgICBzdHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24obWV0aCwgIm4iLCBidWZfc2l6ZSk7CiAgICAgaWYgKHN0ciA9PSBOVUxMKQpAQCAtMTIyNSwxMiArMTIyNiw4IEBACiAgICAgc2VsZi0+aXRzZWxmID0gTlVMTDsKIAogICAgIGlmIChzZWxmLT5oYW5kbGVycyAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wOwotICAgICAgICBmb3IgKGkgPSAwOyBoYW5kbGVyX2luZm9baV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKLSAgICAgICAgICAgIHRlbXAgPSBzZWxmLT5oYW5kbGVyc1tpXTsKLSAgICAgICAgICAgIHNlbGYtPmhhbmRsZXJzW2ldID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKQorICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlcnNbaV0pOwogICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmhhbmRsZXJzKTsKICAgICAgICAgc2VsZi0+aGFuZGxlcnMgPSBOVUxMOwogICAgIH0KQEAgLTEzNDQsNyArMTM0MSw2IEBACiAgICAgaW50IGhhbmRsZXJudW0gPSBoYW5kbGVybmFtZTJpbnQobmFtZSk7CiAgICAgaWYgKGhhbmRsZXJudW0gPj0gMCkgewogICAgICAgICB4bWxoYW5kbGVyIGNfaGFuZGxlciA9IE5VTEw7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZi0+aGFuZGxlcnNbaGFuZGxlcm51bV07CiAKICAgICAgICAgaWYgKHYgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgLyogSWYgdGhpcyBpcyB0aGUgY2hhcmFjdGVyIGRhdGEgaGFuZGxlciwgYW5kIGEgY2hhcmFjdGVyCkBAIC0xMzY2LDggKzEzNjIsNyBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKHYpOwogICAgICAgICAgICAgY19oYW5kbGVyID0gaGFuZGxlcl9pbmZvW2hhbmRsZXJudW1dLmhhbmRsZXI7CiAgICAgICAgIH0KLSAgICAgICAgc2VsZi0+aGFuZGxlcnNbaGFuZGxlcm51bV0gPSB2OwotICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICBQeV9YU0VUUkVGKHNlbGYtPmhhbmRsZXJzW2hhbmRsZXJudW1dLCB2KTsKICAgICAgICAgaGFuZGxlcl9pbmZvW2hhbmRsZXJudW1dLnNldHRlcihzZWxmLT5pdHNlbGYsIGNfaGFuZGxlcik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTE3MDYsNyArMTcwMSwxNSBAQAogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJuYXRpdmVfZW5jb2RpbmciLCAiVVRGLTgiKTsKIAogICAgIHN5c19tb2R1bGVzID0gUHlTeXNfR2V0T2JqZWN0KCJtb2R1bGVzIik7CisgICAgaWYgKHN5c19tb2R1bGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CisgICAgaWYgKGQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBlcnJvcnNfbW9kdWxlID0gUHlEaWN0X0dldEl0ZW0oZCwgZXJybW9kX25hbWUpOwogICAgIGlmIChlcnJvcnNfbW9kdWxlID09IE5VTEwpIHsKICAgICAgICAgZXJyb3JzX21vZHVsZSA9IFB5TW9kdWxlX05ldyhNT0RVTEVfTkFNRSAiLmVycm9ycyIpOwpAQCAtMTcyNyw5ICsxNzMwLDExIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgUHlfREVDUkVGKG1vZGVsbW9kX25hbWUpOwotICAgIGlmIChlcnJvcnNfbW9kdWxlID09IE5VTEwgfHwgbW9kZWxfbW9kdWxlID09IE5VTEwpCisgICAgaWYgKGVycm9yc19tb2R1bGUgPT0gTlVMTCB8fCBtb2RlbF9tb2R1bGUgPT0gTlVMTCkgewogICAgICAgICAvKiBEb24ndCBjb3JlIGR1bXAgbGF0ZXIhICovCisgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04gPiAxOTUwNQogICAgIHsKQEAgLTE4OTcsMTUgKzE5MDIsMTIgQEAKIGNsZWFyX2hhbmRsZXJzKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBpbnQgaW5pdGlhbCkKIHsKICAgICBpbnQgaSA9IDA7Ci0gICAgUHlPYmplY3QgKnRlbXA7CiAKICAgICBmb3IgKDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7CiAgICAgICAgIGlmIChpbml0aWFsKQogICAgICAgICAgICAgc2VsZi0+aGFuZGxlcnNbaV0gPSBOVUxMOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRlbXAgPSBzZWxmLT5oYW5kbGVyc1tpXTsKLSAgICAgICAgICAgIHNlbGYtPmhhbmRsZXJzW2ldID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVyc1tpXSk7CiAgICAgICAgICAgICBoYW5kbGVyX2luZm9baV0uc2V0dGVyKHNlbGYtPml0c2VsZiwgTlVMTCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3JlYWRsaW5lLmMgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKaW5kZXggNTRmMTViYy4uM2I5NGQ0YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9yZWFkbGluZS5jCisrKyBiL01vZHVsZXMvcmVhZGxpbmUuYwpAQCAtMzQzLDEwICszNDMsOCBAQAogICAgICAgICBQeV9DTEVBUigqaG9va192YXIpOwogICAgIH0KICAgICBlbHNlIGlmIChQeUNhbGxhYmxlX0NoZWNrKGZ1bmN0aW9uKSkgewotICAgICAgICBQeU9iamVjdCAqdG1wID0gKmhvb2tfdmFyOwogICAgICAgICBQeV9JTkNSRUYoZnVuY3Rpb24pOwotICAgICAgICAqaG9va192YXIgPSBmdW5jdGlvbjsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICBQeV9YU0VUUkVGKCpob29rX3ZhciwgZnVuY3Rpb24pOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTYwNCw2ICs2MDIsMjQgQEAKICJhZGRfaGlzdG9yeShzdHJpbmcpIC0+IE5vbmVcblwKIGFkZCBhbiBpdGVtIHRvIHRoZSBoaXN0b3J5IGJ1ZmZlciIpOwogCitzdGF0aWMgaW50IHNob3VsZF9hdXRvX2FkZF9oaXN0b3J5ID0gMTsKKworLyogRW5hYmxlIG9yIGRpc2FibGUgYXV0b21hdGljIGhpc3RvcnkgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NldF9hdXRvX2hpc3RvcnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicDpzZXRfYXV0b19oaXN0b3J5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnNob3VsZF9hdXRvX2FkZF9oaXN0b3J5KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihkb2Nfc2V0X2F1dG9faGlzdG9yeSwKKyJzZXRfYXV0b19oaXN0b3J5KGVuYWJsZWQpIC0+IE5vbmVcblwKK0VuYWJsZXMgb3IgZGlzYWJsZXMgYXV0b21hdGljIGhpc3RvcnkuIik7CisKIAogLyogR2V0IHRoZSB0YWItY29tcGxldGlvbiB3b3JkLWRlbGltaXRlcnMgdGhhdCByZWFkbGluZSB1c2VzICovCiAKQEAgLTgyMiw2ICs4MzgsNyBAQAogCiAgICAgeyJzZXRfY29tcGxldGVyX2RlbGltcyIsIHNldF9jb21wbGV0ZXJfZGVsaW1zLAogICAgICBNRVRIX08sIGRvY19zZXRfY29tcGxldGVyX2RlbGltc30sCisgICAgeyJzZXRfYXV0b19oaXN0b3J5IiwgcHlfc2V0X2F1dG9faGlzdG9yeSwgTUVUSF9WQVJBUkdTLCBkb2Nfc2V0X2F1dG9faGlzdG9yeX0sCiAgICAgeyJhZGRfaGlzdG9yeSIsIHB5X2FkZF9oaXN0b3J5LCBNRVRIX08sIGRvY19hZGRfaGlzdG9yeX0sCiAgICAgeyJyZW1vdmVfaGlzdG9yeV9pdGVtIiwgcHlfcmVtb3ZlX2hpc3RvcnksIE1FVEhfVkFSQVJHUywgZG9jX3JlbW92ZV9oaXN0b3J5fSwKICAgICB7InJlcGxhY2VfaGlzdG9yeV9pdGVtIiwgcHlfcmVwbGFjZV9oaXN0b3J5LCBNRVRIX1ZBUkFSR1MsIGRvY19yZXBsYWNlX2hpc3Rvcnl9LApAQCAtODU3LDcgKzg3NCw3IEBACiAgICAgICAgIGlmIChyID09IFB5X05vbmUpCiAgICAgICAgICAgICByZXN1bHQgPSAwOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Bc0xvbmcocik7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlMb25nX0FzSW50KHIpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KQEAgLTEzMjcsNyArMTM0NCw3IEBACiAKICAgICAvKiB3ZSBoYXZlIGEgdmFsaWQgbGluZSAqLwogICAgIG4gPSBzdHJsZW4ocCk7Ci0gICAgaWYgKG4gPiAwKSB7CisgICAgaWYgKHNob3VsZF9hdXRvX2FkZF9oaXN0b3J5ICYmIG4gPiAwKSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKmxpbmU7CiAgICAgICAgIGludCBsZW5ndGggPSBfcHlfZ2V0X2hpc3RvcnlfbGVuZ3RoKCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZXNvdXJjZS5jIGIvTW9kdWxlcy9yZXNvdXJjZS5jCmluZGV4IDNhMWNmMDkuLjY3MDJiN2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVzb3VyY2UuYworKysgYi9Nb2R1bGVzL3Jlc291cmNlLmMKQEAgLTEzNSwxMyArMTM1LDExIEBACiBzdGF0aWMgUHlPYmplY3QqCiBybGltaXQycHkoc3RydWN0IHJsaW1pdCBybCkKIHsKLSNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKQogICAgIGlmIChzaXplb2YocmwucmxpbV9jdXIpID4gc2l6ZW9mKGxvbmcpKSB7CiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJMTCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQWV9MT05HX0xPTkcpIHJsLnJsaW1fY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfTE9OR19MT05HKSBybC5ybGltX21heCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpIHJsLnJsaW1fY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSBybC5ybGltX21heCk7CiAgICAgfQotI2VuZGlmCiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImxsIiwgKGxvbmcpIHJsLnJsaW1fY3VyLCAobG9uZykgcmwucmxpbV9tYXgpOwogfQogCkBAIC00MzgsMTEgKzQzNiw5IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkxJTUlUX05QVFMpOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKQogICAgIGlmIChzaXplb2YoUkxJTV9JTkZJTklUWSkgPiBzaXplb2YobG9uZykpIHsKLSAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgUkxJTV9JTkZJTklUWSk7CisgICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIFJMSU1fSU5GSU5JVFkpOwogICAgIH0gZWxzZQotI2VuZGlmCiAgICAgewogICAgICAgICB2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKSBSTElNX0lORklOSVRZKTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jIGIvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYwppbmRleCAwMDMyNGE1Li40N2RhNDkzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKQEAgLTQsNiArNCwxMCBAQAogICAgaGF2ZSBhbnkgdmFsdWUgZXhjZXB0IElOVkFMSURfU09DS0VULgogKi8KIAorI2lmIGRlZmluZWQoSEFWRV9QT0xMX0gpICYmICFkZWZpbmVkKF9HTlVfU09VUkNFKQorI2RlZmluZSBfR05VX1NPVVJDRQorI2VuZGlmCisKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDxzdHJ1Y3RtZW1iZXIuaD4KIApAQCAtMTc5Myw3ICsxNzk3LDcgQEAKICAqLwogI2lmICFkZWZpbmVkKF9fT3BlbkJTRF9fKQogIyAgIGRlZmluZSBJREVOVF9UWVBFICBUX1VJTlRQVFJUCi0jICAgZGVmaW5lIElERU5UX0NBU1QgIFB5X2ludHB0cl90CisjICAgZGVmaW5lIElERU5UX0NBU1QgIGludHB0cl90CiAjICAgZGVmaW5lIERBVEFfVFlQRSAgIFRfSU5UUFRSVAogIyAgIGRlZmluZSBEQVRBX0ZNVF9VTklUIElOVFBUUlRfRk1UX1VOSVQKICMgICBkZWZpbmUgSURFTlRfQXNUeXBlIFB5TG9uZ19Bc1VpbnRwdHJfdApAQCAtMTg0Miw3ICsxODQ2LDcgQEAKICAgICBQeU9iamVjdCAqcGZkOwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaWRlbnQiLCAiZmlsdGVyIiwgImZsYWdzIiwgImZmbGFncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhIiwgInVkYXRhIiwgTlVMTH07Ci0gICAgc3RhdGljIGNoYXIgKmZtdCA9ICJPfGhISSIgREFUQV9GTVRfVU5JVCBVSU5UUFRSVF9GTVRfVU5JVCAiOmtldmVudCI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZm10W10gPSAiT3xoSEkiIERBVEFfRk1UX1VOSVQgVUlOVFBUUlRfRk1UX1VOSVQgIjprZXZlbnQiOwogCiAgICAgRVZfU0VUKCYoc2VsZi0+ZSksIDAsIEVWRklMVF9SRUFELCBFVl9BREQsIDAsIDAsIDApOyAvKiBkZWZhdWx0cyAqLwogCkBAIC0xODcyLDcgKzE4NzYsNyBAQAoga3F1ZXVlX2V2ZW50X3JpY2hjb21wYXJlKGtxdWV1ZV9ldmVudF9PYmplY3QgKnMsIGtxdWV1ZV9ldmVudF9PYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wKQogewotICAgIFB5X2ludHB0cl90IHJlc3VsdCA9IDA7CisgICAgaW50cHRyX3QgcmVzdWx0ID0gMDsKIAogICAgIGlmICgha3F1ZXVlX2V2ZW50X0NoZWNrKG8pKSB7CiAgICAgICAgIGlmIChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgewpAQCAtMjEyNyw3ICsyMTMxLDcgQEAKICAgICAgICAgaWYgKF9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoJnRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAidGltZW91dCBhcmd1bWVudCBtdXN0IGJlIGFuIG51bWJlciAiCisgICAgICAgICAgICAgICAgInRpbWVvdXQgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciAiCiAgICAgICAgICAgICAgICAgIm9yIE5vbmUsIGdvdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgIFB5X1RZUEUob3RpbWVvdXQpLT50cF9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQ1Miw2ICsyNDU2LDEwIEBACiAjaWZkZWYgUE9MTE1TRwogICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT0xMTVNHKTsKICNlbmRpZgorI2lmZGVmIFBPTExSREhVUAorICAgICAgICAvKiBLZXJuZWwgMi42LjE3KyAqLworICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT0xMUkRIVVApOworI2VuZGlmCiAgICAgfQogI2VuZGlmIC8qIEhBVkVfUE9MTCAqLwogCkBAIC0yNDczLDEyICsyNDgxLDE4IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExQUkkpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMRVJSKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEhVUCk7CisjaWZkZWYgRVBPTExSREhVUAorICAgIC8qIEtlcm5lbCAyLjYuMTcgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTFJESFVQKTsKKyNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMRVQpOwogI2lmZGVmIEVQT0xMT05FU0hPVAogICAgIC8qIEtlcm5lbCAyLjYuMisgKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTE9ORVNIT1QpOwogI2VuZGlmCi0gICAgLyogUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMX1JESFVQIiwgRVBPTExSREhVUCk7ICovCisjaWZkZWYgRVBPTExFWENMVVNJVkUKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVYQ0xVU0lWRSk7CisjZW5kaWYKIAogI2lmZGVmIEVQT0xMUkROT1JNCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExSRE5PUk0pOwpAQCAtMjUxOSwxMyArMjUzMywyMSBAQAogICAgIC8qIGV2ZW50IGZpbHRlcnMgKi8KICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1JFQUQiLCBFVkZJTFRfUkVBRCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9XUklURSIsIEVWRklMVF9XUklURSk7CisjaWZkZWYgRVZGSUxUX0FJTwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfQUlPIiwgRVZGSUxUX0FJTyk7CisjZW5kaWYKKyNpZmRlZiBFVkZJTFRfVk5PREUKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1ZOT0RFIiwgRVZGSUxUX1ZOT0RFKTsKKyNlbmRpZgorI2lmZGVmIEVWRklMVF9QUk9DCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9QUk9DIiwgRVZGSUxUX1BST0MpOworI2VuZGlmCiAjaWZkZWYgRVZGSUxUX05FVERFVgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfTkVUREVWIiwgRVZGSUxUX05FVERFVik7CiAjZW5kaWYKKyNpZmRlZiBFVkZJTFRfU0lHTkFMCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9TSUdOQUwiLCBFVkZJTFRfU0lHTkFMKTsKKyNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfVElNRVIiLCBFVkZJTFRfVElNRVIpOwogCiAgICAgLyogZXZlbnQgZmxhZ3MgKi8KQEAgLTI1MzYsMTYgKzI1NTgsMjMgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfT05FU0hPVCIsIEVWX09ORVNIT1QpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9DTEVBUiIsIEVWX0NMRUFSKTsKIAorI2lmZGVmIEVWX1NZU0ZMQUdTCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX1NZU0ZMQUdTIiwgRVZfU1lTRkxBR1MpOworI2VuZGlmCisjaWZkZWYgRVZfRkxBRzEKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfRkxBRzEiLCBFVl9GTEFHMSk7CisjZW5kaWYKIAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9FT0YiLCBFVl9FT0YpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9FUlJPUiIsIEVWX0VSUk9SKTsKIAogICAgIC8qIFJFQUQgV1JJVEUgZmlsdGVyIGZsYWcgKi8KKyNpZmRlZiBOT1RFX0xPV0FUCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfTE9XQVQiLCBOT1RFX0xPV0FUKTsKKyNlbmRpZgogCiAgICAgLyogVk5PREUgZmlsdGVyIGZsYWdzICAqLworI2lmZGVmIEVWRklMVF9WTk9ERQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0RFTEVURSIsIE5PVEVfREVMRVRFKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9XUklURSIsIE5PVEVfV1JJVEUpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0VYVEVORCIsIE5PVEVfRVhURU5EKTsKQEAgLTI1NTMsOCArMjU4MiwxMCBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0xJTksiLCBOT1RFX0xJTkspOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX1JFTkFNRSIsIE5PVEVfUkVOQU1FKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9SRVZPS0UiLCBOT1RFX1JFVk9LRSk7CisjZW5kaWYKIAogICAgIC8qIFBST0MgZmlsdGVyIGZsYWdzICAqLworI2lmZGVmIEVWRklMVF9QUk9DCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfRVhJVCIsIE5PVEVfRVhJVCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfRk9SSyIsIE5PVEVfRk9SSyk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfRVhFQyIsIE5PVEVfRVhFQyk7CkBAIC0yNTY0LDYgKzI1OTUsNyBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX1RSQUNLIiwgTk9URV9UUkFDSyk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfQ0hJTEQiLCBOT1RFX0NISUxEKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9UUkFDS0VSUiIsIE5PVEVfVFJBQ0tFUlIpOworI2VuZGlmCiAKICAgICAvKiBORVRERVYgZmlsdGVyIGZsYWdzICovCiAjaWZkZWYgRVZGSUxUX05FVERFVgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGExbW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwppbmRleCA2Y2IzMmVkLi5kNTA2NWNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTFtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwpAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgU0laRU9GX0lOVCA9PSA0CiB0eXBlZGVmIHVuc2lnbmVkIGludCBTSEExX0lOVDMyOyAgICAgICAgLyogMzItYml0IGludGVnZXIgKi8KLXR5cGVkZWYgUFlfTE9OR19MT05HIFNIQTFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwordHlwZWRlZiBsb25nIGxvbmcgU0hBMV9JTlQ2NDsgICAgICAgIC8qIDY0LWJpdCBpbnRlZ2VyICovCiAjZWxzZQogLyogbm90IGRlZmluZWQuIGNvbXBpbGF0aW9uIHdpbGwgZGllLiAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwppbmRleCBmOWZmMGVhLi4xNzc3NWFlNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCkBAIC0yNywxNSArMjcsMTMgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTgxYTNjY2RlOTJiY2ZlOGRdKi8KIAotI2lmZGVmIFBZX0xPTkdfTE9ORyAvKiBJZiBubyBQWV9MT05HX0xPTkcsIGRvbid0IGNvbXBpbGUgYW55dGhpbmchICovCi0KIC8qIFNvbWUgdXNlZnVsIHR5cGVzICovCiAKIHR5cGVkZWYgdW5zaWduZWQgY2hhciBTSEFfQllURTsKIAogI2lmIFNJWkVPRl9JTlQgPT0gNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgU0hBX0lOVDMyOyAvKiAzMi1iaXQgaW50ZWdlciAqLwotdHlwZWRlZiB1bnNpZ25lZCBQWV9MT05HX0xPTkcgU0hBX0lOVDY0OyAgICAgICAgLyogNjQtYml0IGludGVnZXIgKi8KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIFNIQV9JTlQ2NDsgICAgICAgIC8qIDY0LWJpdCBpbnRlZ2VyICovCiAjZWxzZQogLyogbm90IGRlZmluZWQuIGNvbXBpbGF0aW9uIHdpbGwgZGllLiAqLwogI2VuZGlmCkBAIC0xMjEsMTIgKzExOSwxMiBAQAogCiAvKiBWYXJpb3VzIGxvZ2ljYWwgZnVuY3Rpb25zICovCiAjZGVmaW5lIFJPUjY0KHgsIHkpIFwKLSAgICAoICgoKCh4KSAmIFB5X1VMTCgweEZGRkZGRkZGRkZGRkZGRkYpKT4+KCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpKHkpICYgNjMpKSB8IFwKLSAgICAgICgoeCk8PCgodW5zaWduZWQgUFlfTE9OR19MT05HKSg2NC0oKHkpICYgNjMpKSkpKSAmIFB5X1VMTCgweEZGRkZGRkZGRkZGRkZGRkYpKQorICAgICggKCgoKHgpICYgMHhGRkZGRkZGRkZGRkZGRkZGVUxMKT4+KCh1bnNpZ25lZCBsb25nIGxvbmcpKHkpICYgNjMpKSB8IFwKKyAgICAgICgoeCk8PCgodW5zaWduZWQgbG9uZyBsb25nKSg2NC0oKHkpICYgNjMpKSkpKSAmIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCkKICNkZWZpbmUgQ2goeCx5LHopICAgICAgICh6IF4gKHggJiAoeSBeIHopKSkKICNkZWZpbmUgTWFqKHgseSx6KSAgICAgICgoKHggfCB5KSAmIHopIHwgKHggJiB5KSkKICNkZWZpbmUgUyh4LCBuKSAgICAgICAgIFJPUjY0KCh4KSwobikpCi0jZGVmaW5lIFIoeCwgbikgICAgICAgICAoKCh4KSAmIFB5X1VMTCgweEZGRkZGRkZGRkZGRkZGRkYpKSA+PiAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyluKSkKKyNkZWZpbmUgUih4LCBuKSAgICAgICAgICgoKHgpICYgMHhGRkZGRkZGRkZGRkZGRkZGVUxMKSA+PiAoKHVuc2lnbmVkIGxvbmcgbG9uZyluKSkKICNkZWZpbmUgU2lnbWEwKHgpICAgICAgIChTKHgsIDI4KSBeIFMoeCwgMzQpIF4gUyh4LCAzOSkpCiAjZGVmaW5lIFNpZ21hMSh4KSAgICAgICAoUyh4LCAxNCkgXiBTKHgsIDE4KSBeIFMoeCwgNDEpKQogI2RlZmluZSBHYW1tYTAoeCkgICAgICAgKFMoeCwgMSkgXiBTKHgsIDgpIF4gUih4LCA3KSkKQEAgLTE1OCw4NiArMTU2LDg2IEBACiAgICAgIGQgKz0gdDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgaCAgPSB0MCArIHQxOwogCi0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwwLFB5X1VMTCgweDQyOGEyZjk4ZDcyOGFlMjIpKTsKLSAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDEsUHlfVUxMKDB4NzEzNzQ0OTEyM2VmNjVjZCkpOwotICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMixQeV9VTEwoMHhiNWMwZmJjZmVjNGQzYjJmKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzLFB5X1VMTCgweGU5YjVkYmE1ODE4OWRiYmMpKTsKLSAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDQsUHlfVUxMKDB4Mzk1NmMyNWJmMzQ4YjUzOCkpOwotICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNSxQeV9VTEwoMHg1OWYxMTFmMWI2MDVkMDE5KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2LFB5X1VMTCgweDkyM2Y4MmE0YWYxOTRmOWIpKTsKLSAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDcsUHlfVUxMKDB4YWIxYzVlZDVkYTZkODExOCkpOwotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sOCxQeV9VTEwoMHhkODA3YWE5OGEzMDMwMjQyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw5LFB5X1VMTCgweDEyODM1YjAxNDU3MDZmYmUpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDEwLFB5X1VMTCgweDI0MzE4NWJlNGVlNGIyOGMpKTsKLSAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDExLFB5X1VMTCgweDU1MGM3ZGMzZDVmZmI0ZTIpKTsKLSAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDEyLFB5X1VMTCgweDcyYmU1ZDc0ZjI3Yjg5NmYpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDEzLFB5X1VMTCgweDgwZGViMWZlM2IxNjk2YjEpKTsKLSAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDE0LFB5X1VMTCgweDliZGMwNmE3MjVjNzEyMzUpKTsKLSAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDE1LFB5X1VMTCgweGMxOWJmMTc0Y2Y2OTI2OTQpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDE2LFB5X1VMTCgweGU0OWI2OWMxOWVmMTRhZDIpKTsKLSAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDE3LFB5X1VMTCgweGVmYmU0Nzg2Mzg0ZjI1ZTMpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDE4LFB5X1VMTCgweDBmYzE5ZGM2OGI4Y2Q1YjUpKTsKLSAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDE5LFB5X1VMTCgweDI0MGNhMWNjNzdhYzljNjUpKTsKLSAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDIwLFB5X1VMTCgweDJkZTkyYzZmNTkyYjAyNzUpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDIxLFB5X1VMTCgweDRhNzQ4NGFhNmVhNmU0ODMpKTsKLSAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDIyLFB5X1VMTCgweDVjYjBhOWRjYmQ0MWZiZDQpKTsKLSAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDIzLFB5X1VMTCgweDc2Zjk4OGRhODMxMTUzYjUpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDI0LFB5X1VMTCgweDk4M2U1MTUyZWU2NmRmYWIpKTsKLSAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDI1LFB5X1VMTCgweGE4MzFjNjZkMmRiNDMyMTApKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDI2LFB5X1VMTCgweGIwMDMyN2M4OThmYjIxM2YpKTsKLSAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDI3LFB5X1VMTCgweGJmNTk3ZmM3YmVlZjBlZTQpKTsKLSAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDI4LFB5X1VMTCgweGM2ZTAwYmYzM2RhODhmYzIpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDI5LFB5X1VMTCgweGQ1YTc5MTQ3OTMwYWE3MjUpKTsKLSAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDMwLFB5X1VMTCgweDA2Y2E2MzUxZTAwMzgyNmYpKTsKLSAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDMxLFB5X1VMTCgweDE0MjkyOTY3MGEwZTZlNzApKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDMyLFB5X1VMTCgweDI3YjcwYTg1NDZkMjJmZmMpKTsKLSAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDMzLFB5X1VMTCgweDJlMWIyMTM4NWMyNmM5MjYpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDM0LFB5X1VMTCgweDRkMmM2ZGZjNWFjNDJhZWQpKTsKLSAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDM1LFB5X1VMTCgweDUzMzgwZDEzOWQ5NWIzZGYpKTsKLSAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDM2LFB5X1VMTCgweDY1MGE3MzU0OGJhZjYzZGUpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDM3LFB5X1VMTCgweDc2NmEwYWJiM2M3N2IyYTgpKTsKLSAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDM4LFB5X1VMTCgweDgxYzJjOTJlNDdlZGFlZTYpKTsKLSAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDM5LFB5X1VMTCgweDkyNzIyYzg1MTQ4MjM1M2IpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDQwLFB5X1VMTCgweGEyYmZlOGExNGNmMTAzNjQpKTsKLSAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDQxLFB5X1VMTCgweGE4MWE2NjRiYmM0MjMwMDEpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDQyLFB5X1VMTCgweGMyNGI4YjcwZDBmODk3OTEpKTsKLSAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDQzLFB5X1VMTCgweGM3NmM1MWEzMDY1NGJlMzApKTsKLSAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDQ0LFB5X1VMTCgweGQxOTJlODE5ZDZlZjUyMTgpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDQ1LFB5X1VMTCgweGQ2OTkwNjI0NTU2NWE5MTApKTsKLSAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDQ2LFB5X1VMTCgweGY0MGUzNTg1NTc3MTIwMmEpKTsKLSAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDQ3LFB5X1VMTCgweDEwNmFhMDcwMzJiYmQxYjgpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDQ4LFB5X1VMTCgweDE5YTRjMTE2YjhkMmQwYzgpKTsKLSAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDQ5LFB5X1VMTCgweDFlMzc2YzA4NTE0MWFiNTMpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDUwLFB5X1VMTCgweDI3NDg3NzRjZGY4ZWViOTkpKTsKLSAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDUxLFB5X1VMTCgweDM0YjBiY2I1ZTE5YjQ4YTgpKTsKLSAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDUyLFB5X1VMTCgweDM5MWMwY2IzYzVjOTVhNjMpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDUzLFB5X1VMTCgweDRlZDhhYTRhZTM0MThhY2IpKTsKLSAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDU0LFB5X1VMTCgweDViOWNjYTRmNzc2M2UzNzMpKTsKLSAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDU1LFB5X1VMTCgweDY4MmU2ZmYzZDZiMmI4YTMpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDU2LFB5X1VMTCgweDc0OGY4MmVlNWRlZmIyZmMpKTsKLSAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDU3LFB5X1VMTCgweDc4YTU2MzZmNDMxNzJmNjApKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDU4LFB5X1VMTCgweDg0Yzg3ODE0YTFmMGFiNzIpKTsKLSAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDU5LFB5X1VMTCgweDhjYzcwMjA4MWE2NDM5ZWMpKTsKLSAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDYwLFB5X1VMTCgweDkwYmVmZmZhMjM2MzFlMjgpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDYxLFB5X1VMTCgweGE0NTA2Y2ViZGU4MmJkZTkpKTsKLSAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDYyLFB5X1VMTCgweGJlZjlhM2Y3YjJjNjc5MTUpKTsKLSAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDYzLFB5X1VMTCgweGM2NzE3OGYyZTM3MjUzMmIpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDY0LFB5X1VMTCgweGNhMjczZWNlZWEyNjYxOWMpKTsKLSAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDY1LFB5X1VMTCgweGQxODZiOGM3MjFjMGMyMDcpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDY2LFB5X1VMTCgweGVhZGE3ZGQ2Y2RlMGViMWUpKTsKLSAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDY3LFB5X1VMTCgweGY1N2Q0ZjdmZWU2ZWQxNzgpKTsKLSAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDY4LFB5X1VMTCgweDA2ZjA2N2FhNzIxNzZmYmEpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDY5LFB5X1VMTCgweDBhNjM3ZGM1YTJjODk4YTYpKTsKLSAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDcwLFB5X1VMTCgweDExM2Y5ODA0YmVmOTBkYWUpKTsKLSAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDcxLFB5X1VMTCgweDFiNzEwYjM1MTMxYzQ3MWIpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDcyLFB5X1VMTCgweDI4ZGI3N2Y1MjMwNDdkODQpKTsKLSAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDczLFB5X1VMTCgweDMyY2FhYjdiNDBjNzI0OTMpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDc0LFB5X1VMTCgweDNjOWViZTBhMTVjOWJlYmMpKTsKLSAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDc1LFB5X1VMTCgweDQzMWQ2N2M0OWMxMDBkNGMpKTsKLSAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDc2LFB5X1VMTCgweDRjYzVkNGJlY2IzZTQyYjYpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDc3LFB5X1VMTCgweDU5N2YyOTljZmM2NTdlMmEpKTsKLSAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDc4LFB5X1VMTCgweDVmY2I2ZmFiM2FkNmZhZWMpKTsKLSAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDc5LFB5X1VMTCgweDZjNDQxOThjNGE0NzU4MTcpKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDAsMHg0MjhhMmY5OGQ3MjhhZTIyVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDEsMHg3MTM3NDQ5MTIzZWY2NWNkVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDIsMHhiNWMwZmJjZmVjNGQzYjJmVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDMsMHhlOWI1ZGJhNTgxODlkYmJjVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDQsMHgzOTU2YzI1YmYzNDhiNTM4VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDUsMHg1OWYxMTFmMWI2MDVkMDE5VUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDYsMHg5MjNmODJhNGFmMTk0ZjliVUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDcsMHhhYjFjNWVkNWRhNmQ4MTE4VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDgsMHhkODA3YWE5OGEzMDMwMjQyVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDksMHgxMjgzNWIwMTQ1NzA2ZmJlVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDEwLDB4MjQzMTg1YmU0ZWU0YjI4Y1VMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxMSwweDU1MGM3ZGMzZDVmZmI0ZTJVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMTIsMHg3MmJlNWQ3NGYyN2I4OTZmVUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDEzLDB4ODBkZWIxZmUzYjE2OTZiMVVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwxNCwweDliZGMwNmE3MjVjNzEyMzVVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMTUsMHhjMTliZjE3NGNmNjkyNjk0VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDE2LDB4ZTQ5YjY5YzE5ZWYxNGFkMlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxNywweGVmYmU0Nzg2Mzg0ZjI1ZTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMTgsMHgwZmMxOWRjNjhiOGNkNWI1VUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDE5LDB4MjQwY2ExY2M3N2FjOWM2NVVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyMCwweDJkZTkyYzZmNTkyYjAyNzVVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMjEsMHg0YTc0ODRhYTZlYTZlNDgzVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDIyLDB4NWNiMGE5ZGNiZDQxZmJkNFVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwyMywweDc2Zjk4OGRhODMxMTUzYjVVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMjQsMHg5ODNlNTE1MmVlNjZkZmFiVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDI1LDB4YTgzMWM2NmQyZGI0MzIxMFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyNiwweGIwMDMyN2M4OThmYjIxM2ZVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMjcsMHhiZjU5N2ZjN2JlZWYwZWU0VUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDI4LDB4YzZlMDBiZjMzZGE4OGZjMlVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyOSwweGQ1YTc5MTQ3OTMwYWE3MjVVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMzAsMHgwNmNhNjM1MWUwMDM4MjZmVUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDMxLDB4MTQyOTI5NjcwYTBlNmU3MFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwzMiwweDI3YjcwYTg1NDZkMjJmZmNVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMzMsMHgyZTFiMjEzODVjMjZjOTI2VUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDM0LDB4NGQyYzZkZmM1YWM0MmFlZFVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzNSwweDUzMzgwZDEzOWQ5NWIzZGZVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMzYsMHg2NTBhNzM1NDhiYWY2M2RlVUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDM3LDB4NzY2YTBhYmIzYzc3YjJhOFVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzOCwweDgxYzJjOTJlNDdlZGFlZTZVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMzksMHg5MjcyMmM4NTE0ODIzNTNiVUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDQwLDB4YTJiZmU4YTE0Y2YxMDM2NFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0MSwweGE4MWE2NjRiYmM0MjMwMDFVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNDIsMHhjMjRiOGI3MGQwZjg5NzkxVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDQzLDB4Yzc2YzUxYTMwNjU0YmUzMFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0NCwweGQxOTJlODE5ZDZlZjUyMThVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNDUsMHhkNjk5MDYyNDU1NjVhOTEwVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDQ2LDB4ZjQwZTM1ODU1NzcxMjAyYVVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw0NywweDEwNmFhMDcwMzJiYmQxYjhVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNDgsMHgxOWE0YzExNmI4ZDJkMGM4VUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDQ5LDB4MWUzNzZjMDg1MTQxYWI1M1VMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1MCwweDI3NDg3NzRjZGY4ZWViOTlVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNTEsMHgzNGIwYmNiNWUxOWI0OGE4VUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDUyLDB4MzkxYzBjYjNjNWM5NWE2M1VMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1MywweDRlZDhhYTRhZTM0MThhY2JVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNTQsMHg1YjljY2E0Zjc3NjNlMzczVUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDU1LDB4NjgyZTZmZjNkNmIyYjhhM1VMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw1NiwweDc0OGY4MmVlNWRlZmIyZmNVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNTcsMHg3OGE1NjM2ZjQzMTcyZjYwVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDU4LDB4ODRjODc4MTRhMWYwYWI3MlVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1OSwweDhjYzcwMjA4MWE2NDM5ZWNVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNjAsMHg5MGJlZmZmYTIzNjMxZTI4VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDYxLDB4YTQ1MDZjZWJkZTgyYmRlOVVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2MiwweGJlZjlhM2Y3YjJjNjc5MTVVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNjMsMHhjNjcxNzhmMmUzNzI1MzJiVUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDY0LDB4Y2EyNzNlY2VlYTI2NjE5Y1VMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw2NSwweGQxODZiOGM3MjFjMGMyMDdVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNjYsMHhlYWRhN2RkNmNkZTBlYjFlVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDY3LDB4ZjU3ZDRmN2ZlZTZlZDE3OFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2OCwweDA2ZjA2N2FhNzIxNzZmYmFVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNjksMHgwYTYzN2RjNWEyYzg5OGE2VUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDcwLDB4MTEzZjk4MDRiZWY5MGRhZVVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3MSwweDFiNzEwYjM1MTMxYzQ3MWJVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNzIsMHgyOGRiNzdmNTIzMDQ3ZDg0VUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDczLDB4MzJjYWFiN2I0MGM3MjQ5M1VMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw3NCwweDNjOWViZTBhMTVjOWJlYmNVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNzUsMHg0MzFkNjdjNDljMTAwZDRjVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDc2LDB4NGNjNWQ0YmVjYjNlNDJiNlVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw3NywweDU5N2YyOTljZmM2NTdlMmFVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNzgsMHg1ZmNiNmZhYjNhZDZmYWVjVUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDc5LDB4NmM0NDE5OGM0YTQ3NTgxN1VMTCk7CiAKICN1bmRlZiBSTkQKIApAQCAtODAzLDUgKzgwMSwzIEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJTSEE1MTJUeXBlIiwgKFB5T2JqZWN0ICopJlNIQTUxMnR5cGUpOwogICAgIHJldHVybiBtOwogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCmluZGV4IDc1M2Q5ODcuLmUyNzA3NWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwpAQCAtMTk4LDcgKzE5OCw3IEBACiByZXBvcnRfd2FrZXVwX3dyaXRlX2Vycm9yKHZvaWQgKmRhdGEpCiB7CiAgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKLSAgICBlcnJubyA9IChpbnQpIChQeV9pbnRwdHJfdCkgZGF0YTsKKyAgICBlcnJubyA9IChpbnQpIChpbnRwdHJfdCkgZGF0YTsKICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIkV4Y2VwdGlvbiBpZ25vcmVkIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIHRvIHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCB3YWtldXAgZmQ6XG4iKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQAogCiAgICAgICAgICAgICBpZiAocmMgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfQWRkUGVuZGluZ0NhbGwocmVwb3J0X3dha2V1cF93cml0ZV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKShQeV9pbnRwdHJfdCllcnJubyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoaW50cHRyX3QpZXJybm8pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNTc5LDcgKzU3OSw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZkID0gKGludClzb2NrZmQ7Ci0gICAgICAgICAgICBpZiAoKFNPQ0tFVF9UKWZkICE9IHNvY2tmZCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICAgICAgaWYgKChTT0NLRVRfVClmZCAhPSBzb2NrZmQpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgZmQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTYwOSwxMSArNjA5LDYgQEAKICAgICBpZiAoZmQgIT0gLTEpIHsKICAgICAgICAgaW50IGJsb2NraW5nOwogCi0gICAgICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCiAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdGF0dXMpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTI3MSwyMTAgKzEyNjYsMTY5IEBACiAgICAgfQogCiAjaWZkZWYgU0lHSFVQCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdIVVApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdIVVAiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdIVVApKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHSU5UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdJTlQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTlQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdJTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQlJFQUsKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0JSRUFLKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQlJFQUsiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdCUkVBSykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdRVUlUCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdRVUlUKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUVVJVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1FVSVQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHSUxMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdJTEwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdJTEwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVFJBUAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVFJBUCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1RSQVAiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdUUkFQKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lPVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU9UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSU9UIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU9UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0FCUlQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0FCUlQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdBQlJUIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQUJSVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdFTVQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0VNVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0VNVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0VNVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdGUEUKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0ZQRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0ZQRSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0ZQRSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdLSUxMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdLSUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHS0lMTCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0tJTEwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQlVTCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdCVVMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdCVVMiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdCVVMpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHU0VHVgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHU0VHVik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1NFR1YiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdTRUdWKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NZUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHU1lTKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHU1lTIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU1lTKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1BJUEUKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1BJUEUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdQSVBFIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHUElQRSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdBTFJNCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdBTFJNKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQUxSTSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0FMUk0pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVEVSTQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVEVSTSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1RFUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdURVJNKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1VTUjEKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1VTUjEpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdVU1IxIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVVNSMSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdVU1IyCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdVU1IyKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVNSMiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1VTUjIpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQ0xECi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdDTEQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdDTEQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdDTEQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQ0hMRAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ0hMRCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0NITEQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdDSExEKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1BXUgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUFdSKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUFdSIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHUFdSKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lPCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdJTyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lPIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU8pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVVJHCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdVUkcpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdVUkciLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdVUkcpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHV0lOQ0gKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1dJTkNIKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHV0lOQ0giLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdXSU5DSCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQT0xMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdQT0xMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUE9MTCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BPTEwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHU1RPUAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHU1RPUCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1NUT1AiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdTVE9QKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RTVFAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RTVFApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUU1RQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFNUUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdDT05UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdDT05UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQ09OVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0NPTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVFRJTgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVFRJTik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1RUSU4iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdUVElOKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RUT1UKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RUT1UpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUVE9VIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFRPVSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdWVEFMUk0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1ZUQUxSTSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1ZUQUxSTSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1ZUQUxSTSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQUk9GCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdQUk9GKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUFJPRiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BST0YpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHWENQVQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHWENQVSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1hDUFUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdYQ1BVKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1hGU1oKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1hGU1opOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdYRlNaIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHWEZTWikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdSVE1JTgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUlRNSU4pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdSVE1JTiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1JUTUlOKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1JUTUFYCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdSVE1BWCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1JUTUFYIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHUlRNQVgpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHSU5GTwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU5GTyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lORk8iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdJTkZPKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWZkZWYgSVRJTUVSX1JFQUwKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKElUSU1FUl9SRUFMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSVRJTUVSX1JFQUwiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElUSU1FUl9SRUFMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIElUSU1FUl9WSVJUVUFMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhJVElNRVJfVklSVFVBTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIklUSU1FUl9WSVJUVUFMIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJVElNRVJfVklSVFVBTCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBJVElNRVJfUFJPRgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoSVRJTUVSX1BST0YpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJVElNRVJfUFJPRiIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVRJTUVSX1BST0YpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAKICNpZiBkZWZpbmVkIChIQVZFX1NFVElUSU1FUikgfHwgZGVmaW5lZCAoSEFWRV9HRVRJVElNRVIpCkBAIC0xNDg1LDE1ICsxNDM5LDEzIEBACiAjZW5kaWYKIAogI2lmZGVmIENUUkxfQ19FVkVOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ1RSTF9DX0VWRU5UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ1RSTF9DX0VWRU5UIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDVFJMX0NfRVZFTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAKICNpZmRlZiBDVFJMX0JSRUFLX0VWRU5UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhDVFJMX0JSRUFLX0VWRU5UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ1RSTF9CUkVBS19FVkVOVCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ1RSTF9CUkVBS19FVkVOVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCmluZGV4IDNlMWE0NjAuLmQyNWJkN2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwpAQCAtMTM2LDcgKzEzNiw3IEBACiBzZW5kKGRhdGFbLCBmbGFnc10pIC0tIHNlbmQgZGF0YSwgbWF5IG5vdCBzZW5kIGFsbCBvZiBpdFxuXAogc2VuZHRvKGRhdGFbLCBmbGFnc10sIGFkZHIpIC0tIHNlbmQgZGF0YSB0byBhIGdpdmVuIGFkZHJlc3NcblwKIHNldGJsb2NraW5nKDAgfCAxKSAtLSBzZXQgb3IgY2xlYXIgdGhlIGJsb2NraW5nIEkvTyBmbGFnXG5cCi1zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZSkgLS0gc2V0IHNvY2tldCBvcHRpb25zXG5cCitzZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZVssIG9wdGxlbl0pIC0tIHNldCBzb2NrZXQgb3B0aW9uc1xuXAogc2V0dGltZW91dChOb25lIHwgZmxvYXQpIC0tIHNldCBvciBjbGVhciB0aGUgdGltZW91dFxuXAogc2h1dGRvd24oaG93KSAtLSBzaHV0IGRvd24gdHJhZmZpYyBpbiBvbmUgb3IgYm90aCBkaXJlY3Rpb25zXG5cCiBpZl9uYW1laW5kZXgoKSAtLSByZXR1cm4gYWxsIG5ldHdvcmsgaW50ZXJmYWNlIGluZGljZXMgYW5kIG5hbWVzXG5cCkBAIC0xNTMsNyArMTUzLDcgQEAKICAgIE9uIHRoZSBvdGhlciBoYW5kLCBub3QgYWxsIExpbnV4IHZlcnNpb25zIGFncmVlLCBzbyB0aGVyZSB0aGUgc2V0dGluZ3MKICAgIGNvbXB1dGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0IGFyZSBuZWVkZWQhICovCiAKLSNpZm5kZWYgbGludXgKKyNpZm5kZWYgX19saW51eF9fCiAjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzVfQVJHCiAjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHCkBAIC0xNjMsNyArMTYzLDExIEBACiAjIGluY2x1ZGUgPHN5cy91aW8uaD4KICNlbmRpZgogCi0jaWZuZGVmIFdJVEhfVEhSRUFECisjaWYgIWRlZmluZWQoV0lUSF9USFJFQUQpCisjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19BTkRST0lEX18pICYmIF9fQU5EUk9JRF9BUElfXyA8IDIzCiAjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCiAjZW5kaWYKIApAQCAtMTcyLDcgKzE3Niw3IEBACiAjICBkZWZpbmUgSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcKICMgZWxpZiBkZWZpbmVkKF9fc3VuKSB8fCBkZWZpbmVkKF9fc2dpKQogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzVfQVJHCi0jIGVsaWYgZGVmaW5lZChsaW51eCkKKyMgZWxpZiBkZWZpbmVkKF9fbGludXhfXykKIC8qIFJlbHkgb24gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgKi8KICMgZWxzZQogIyAgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKQEAgLTI4Miw2ICsyODYsMzYgQEAKICNpbmNsdWRlIDxuZXQvaWYuaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyNpbmNsdWRlIDxsaW51eC9pZl9hbGcuaD4KKyNpZm5kZWYgQUZfQUxHCisjZGVmaW5lIEFGX0FMRyAzOAorI2VuZGlmCisjaWZuZGVmIFNPTF9BTEcKKyNkZWZpbmUgU09MX0FMRyAyNzkKKyNlbmRpZgorCisvKiBMaW51eCAzLjE5ICovCisjaWZuZGVmIEFMR19TRVRfQUVBRF9BU1NPQ0xFTgorI2RlZmluZSBBTEdfU0VUX0FFQURfQVNTT0NMRU4gICAgICAgICAgIDQKKyNlbmRpZgorI2lmbmRlZiBBTEdfU0VUX0FFQURfQVVUSFNJWkUKKyNkZWZpbmUgQUxHX1NFVF9BRUFEX0FVVEhTSVpFICAgICAgICAgICA1CisjZW5kaWYKKy8qIExpbnV4IDQuOCAqLworI2lmbmRlZiBBTEdfU0VUX1BVQktFWQorI2RlZmluZSBBTEdfU0VUX1BVQktFWSAgICAgICAgICAgICAgICAgIDYKKyNlbmRpZgorCisjaWZuZGVmIEFMR19PUF9TSUdOCisjZGVmaW5lIEFMR19PUF9TSUdOICAgICAgICAgICAgICAgICAgICAgMgorI2VuZGlmCisjaWZuZGVmIEFMR19PUF9WRVJJRlkKKyNkZWZpbmUgQUxHX09QX1ZFUklGWSAgICAgICAgICAgICAgICAgICAzCisjZW5kaWYKKworI2VuZGlmIC8qIEhBVkVfU09DS0FERFJfQUxHICovCisKIC8qIEdlbmVyaWMgc29ja2V0IG9iamVjdCBkZWZpbml0aW9ucyBhbmQgaW5jbHVkZXMgKi8KICNkZWZpbmUgUHlTb2NrZXRfQlVJTERJTkdfU09DS0VUCiAjaW5jbHVkZSAic29ja2V0bW9kdWxlLmgiCkBAIC02MDYsMjQgKzY0MCwzNSBAQAogI2lmbmRlZiBNU19XSU5ET1dTCiAjaWYgKGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkgJiYgZGVmaW5lZChGSU9OQklPKSkKICAgICBibG9jayA9ICFibG9jazsKLSAgICBpb2N0bChzLT5zb2NrX2ZkLCBGSU9OQklPLCAodW5zaWduZWQgaW50ICopJmJsb2NrKTsKKyAgICBpZiAoaW9jdGwocy0+c29ja19mZCwgRklPTkJJTywgKHVuc2lnbmVkIGludCAqKSZibG9jaykgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CiAjZWxzZQogICAgIGRlbGF5X2ZsYWcgPSBmY250bChzLT5zb2NrX2ZkLCBGX0dFVEZMLCAwKTsKKyAgICBpZiAoZGVsYXlfZmxhZyA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoYmxvY2spCiAgICAgICAgIG5ld19kZWxheV9mbGFnID0gZGVsYXlfZmxhZyAmICh+T19OT05CTE9DSyk7CiAgICAgZWxzZQogICAgICAgICBuZXdfZGVsYXlfZmxhZyA9IGRlbGF5X2ZsYWcgfCBPX05PTkJMT0NLOwogICAgIGlmIChuZXdfZGVsYXlfZmxhZyAhPSBkZWxheV9mbGFnKQotICAgICAgICBmY250bChzLT5zb2NrX2ZkLCBGX1NFVEZMLCBuZXdfZGVsYXlfZmxhZyk7CisgICAgICAgIGlmIChmY250bChzLT5zb2NrX2ZkLCBGX1NFVEZMLCBuZXdfZGVsYXlfZmxhZykgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogI2VuZGlmCiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAgICAgYXJnID0gIWJsb2NrOwotICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICZhcmcpOworICAgIGlmIChpb2N0bHNvY2tldChzLT5zb2NrX2ZkLCBGSU9OQklPLCAmYXJnKSAhPSAwKQorICAgICAgICBnb3RvIGVycm9yOwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgLyogU2luY2UgdGhlc2UgZG9uJ3QgcmV0dXJuIGFueXRoaW5nICovCi0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIDA7CisgIGVycm9yOgorI2lmbmRlZiBNU19XSU5ET1dTCisgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworI2Vsc2UKKyAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gLTE7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTg3MSw3ICs5MTYsNyBAQAogLyogRGVmYXVsdCB0aW1lb3V0IGZvciBuZXcgc29ja2V0cyAqLwogc3RhdGljIF9QeVRpbWVfdCBkZWZhdWx0dGltZW91dCA9IF9QWVRJTUVfRlJPTVNFQ09ORFMoLTEpOwogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogaW5pdF9zb2Nrb2JqZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywKICAgICAgICAgICAgICAgICBTT0NLRVRfVCBmZCwgaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90bykKIHsKQEAgLTg4OCwxMCArOTMzLDEzIEBACiAjZW5kaWYKICAgICB7CiAgICAgICAgIHMtPnNvY2tfdGltZW91dCA9IGRlZmF1bHR0aW1lb3V0OwotICAgICAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPj0gMCkKLSAgICAgICAgICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIDApOworICAgICAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPj0gMCkgeworICAgICAgICAgICAgaWYgKGludGVybmFsX3NldGJsb2NraW5nKHMsIDApID09IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotCisgICAgcmV0dXJuIDA7CiB9CiAKIApAQCAtOTA2LDggKzk1NCwxMiBAQAogICAgIFB5U29ja2V0U29ja09iamVjdCAqczsKICAgICBzID0gKFB5U29ja2V0U29ja09iamVjdCAqKQogICAgICAgICBQeVR5cGVfR2VuZXJpY05ldygmc29ja190eXBlLCBOVUxMLCBOVUxMKTsKLSAgICBpZiAocyAhPSBOVUxMKQotICAgICAgICBpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pOworICAgIGlmIChzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiBzOwogfQogCkBAIC05MjYsNyArOTc4LDcgQEAKICAgIGFuIGVycm9yIG9jY3VycmVkOyB0aGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICovCiAKIHN0YXRpYyBpbnQKLXNldGlwYWRkcihjaGFyICpuYW1lLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJfcmV0LCBzaXplX3QgYWRkcl9yZXRfc2l6ZSwgaW50IGFmKQorc2V0aXBhZGRyKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzb2NrYWRkciAqYWRkcl9yZXQsIHNpemVfdCBhZGRyX3JldF9zaXplLCBpbnQgYWYpCiB7CiAgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzLCAqcmVzOwogICAgIGludCBlcnJvcjsKQEAgLTExMDcsNyArMTE1OSw3IEBACiAgICBhbiBlcnJvciBvY2N1cnJlZC4gKi8KIAogc3RhdGljIGludAotc2V0YmRhZGRyKGNoYXIgKm5hbWUsIGJkYWRkcl90ICpiZGFkZHIpCitzZXRiZGFkZHIoY29uc3QgY2hhciAqbmFtZSwgYmRhZGRyX3QgKmJkYWRkcikKIHsKICAgICB1bnNpZ25lZCBpbnQgYjAsIGIxLCBiMiwgYjMsIGI0LCBiNTsKICAgICBjaGFyIGNoOwpAQCAtMTE4MCw3ICsxMjMyLDcgQEAKICAgICBjYXNlIEFGX1VOSVg6CiAgICAgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4gKmEgPSAoc3RydWN0IHNvY2thZGRyX3VuICopIGFkZHI7Ci0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICAgICAgICAgaWYgKGEtPnN1bl9wYXRoWzBdID09IDApIHsgIC8qIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZSAqLwogICAgICAgICAgICAgYWRkcmxlbiAtPSBvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHJfdW4sIHN1bl9wYXRoKTsKICAgICAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGEtPnN1bl9wYXRoLCBhZGRybGVuKTsKQEAgLTEzNzEsNiArMTQyMywyMiBAQAogICAgICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgY2FzZSBBRl9BTEc6CisgICAgeworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfYWxnICphID0gKHN0cnVjdCBzb2NrYWRkcl9hbGcgKilhZGRyOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgicyNzI0hIIiwKKyAgICAgICAgICAgIGEtPnNhbGdfdHlwZSwKKyAgICAgICAgICAgIHN0cm5sZW4oKGNvbnN0IGNoYXIqKWEtPnNhbGdfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGEtPnNhbGdfdHlwZSkpLAorICAgICAgICAgICAgYS0+c2FsZ19uYW1lLAorICAgICAgICAgICAgc3RybmxlbigoY29uc3QgY2hhciopYS0+c2FsZ19uYW1lLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YoYS0+c2FsZ19uYW1lKSksCisgICAgICAgICAgICBhLT5zYWxnX2ZlYXQsCisgICAgICAgICAgICBhLT5zYWxnX21hc2spOworICAgIH0KKyNlbmRpZgorCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKICAgICBkZWZhdWx0OgpAQCAtMTQwMSw3ICsxNDY5LDcgQEAKIGlkbmFfY29udmVydGVyKFB5T2JqZWN0ICpvYmosIHN0cnVjdCBtYXliZV9pZG5hICpkYXRhKQogewogICAgIHNpemVfdCBsZW47Ci0gICAgUHlPYmplY3QgKm9iajIsICpvYmozOworICAgIFB5T2JqZWN0ICpvYmoyOwogICAgIGlmIChvYmogPT0gTlVMTCkgewogICAgICAgICBpZG5hX2NsZWFudXAoZGF0YSk7CiAgICAgICAgIHJldHVybiAxOwpAQCAtMTQxNiwzMSArMTQ4NCwyNyBAQAogICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVBcnJheV9Bc1N0cmluZyhvYmopOwogICAgICAgICBsZW4gPSBQeUJ5dGVBcnJheV9TaXplKG9iaik7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopICYmIFB5VW5pY29kZV9SRUFEWShvYmopID09IDAgJiYgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob2JqKSkgewotICAgICAgICBkYXRhLT5idWYgPSBQeVVuaWNvZGVfREFUQShvYmopOwotICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAwICYmIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9iaikpIHsKKyAgICAgICAgICAgIGRhdGEtPmJ1ZiA9IFB5VW5pY29kZV9EQVRBKG9iaik7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgb2JqMiA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcob2JqLCAiaWRuYSIsIE5VTEwpOworICAgICAgICAgICAgaWYgKCFvYmoyKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sob2JqMikpOworICAgICAgICAgICAgZGF0YS0+b2JqID0gb2JqMjsKKyAgICAgICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9iajIpOworICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShvYmoyKTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgb2JqMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7Ci0gICAgICAgIGlmICghb2JqMikgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0cmluZyBvciB1bmljb2RlIHRleHQgYnVmZmVyIGV4cGVjdGVkLCBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBvYmozID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhvYmoyLCAiaWRuYSIsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYob2JqMik7Ci0gICAgICAgIGlmICghb2JqMykgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG9iajMpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2JqMyk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkIHRvIHJldHVybiBieXRlcyIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgZGF0YS0+b2JqID0gb2JqMzsKLSAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlc19BU19TVFJJTkcob2JqMyk7Ci0gICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqMyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdHIsIGJ5dGVzIG9yIGJ5dGVhcnJheSBleHBlY3RlZCwgbm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoc3RybGVuKGRhdGEtPmJ1ZikgIT0gbGVuKSB7CiAgICAgICAgIFB5X0NMRUFSKGRhdGEtPm9iaik7CkBAIC0xNDgzLDcgKzE1NDcsNyBAQAogICAgICAgICBhc3NlcnQocGF0aC5sZW4gPj0gMCk7CiAKICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfdW4qKWFkZHJfcmV0OwotI2lmZGVmIGxpbnV4CisjaWZkZWYgX19saW51eF9fCiAgICAgICAgIGlmIChwYXRoLmxlbiA+IDAgJiYgKihjb25zdCBjaGFyICopcGF0aC5idWYgPT0gMCkgewogICAgICAgICAgICAgLyogTGludXggYWJzdHJhY3QgbmFtZXNwYWNlIGV4dGVuc2lvbiAqLwogICAgICAgICAgICAgaWYgKChzaXplX3QpcGF0aC5sZW4gPiBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKQEAgLTE5NDAsNiArMjAwNCwzNiBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgY2FzZSBBRl9BTEc6CisgICAgeworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfYWxnICpzYTsKKyAgICAgICAgY2hhciAqdHlwZTsKKyAgICAgICAgY2hhciAqbmFtZTsKKyAgICAgICAgc2EgPSAoc3RydWN0IHNvY2thZGRyX2FsZyAqKWFkZHJfcmV0OworCisgICAgICAgIG1lbXNldChzYSwgMCwgc2l6ZW9mKCpzYSkpOworICAgICAgICBzYS0+c2FsZ19mYW1pbHkgPSBBRl9BTEc7CisKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzc3xISDpnZXRzb2NrYWRkcmFyZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXBlLCAmbmFtZSwgJnNhLT5zYWxnX2ZlYXQsICZzYS0+c2FsZ19tYXNrKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAvKiBzb2NrYWRkcl9hbGcgaGFzIGZpeGVkLXNpemVkIGNoYXIgYXJyYXlzIGZvciB0eXBlIGFuZCBuYW1lICovCisgICAgICAgIGlmIChzdHJsZW4odHlwZSkgPiBzaXplb2Yoc2EtPnNhbGdfdHlwZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQUZfQUxHIHR5cGUgdG9vIGxvbmcuIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzdHJuY3B5KChjaGFyICopc2EtPnNhbGdfdHlwZSwgdHlwZSwgc2l6ZW9mKHNhLT5zYWxnX3R5cGUpKTsKKyAgICAgICAgaWYgKHN0cmxlbihuYW1lKSA+IHNpemVvZihzYS0+c2FsZ19uYW1lKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJBRl9BTEcgbmFtZSB0b28gbG9uZy4iKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHN0cm5jcHkoKGNoYXIgKilzYS0+c2FsZ19uYW1lLCBuYW1lLCBzaXplb2Yoc2EtPnNhbGdfbmFtZSkpOworCisgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mKCpzYSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyNlbmRpZgogCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKQEAgLTIwNjIsNiArMjE1NiwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgY2FzZSBBRl9BTEc6CisgICAgeworICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2FsZyk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyNlbmRpZgogCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKQEAgLTIyMjEsMTAgKzIzMjIsMjEgQEAKIHNvY2tfYWNjZXB0X2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQogewogICAgIHN0cnVjdCBzb2NrX2FjY2VwdCAqY3R4ID0gZGF0YTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIgPSBTQVMyU0EoY3R4LT5hZGRyYnVmKTsKKyAgICBzb2NrbGVuX3QgKnBhZGRybGVuID0gY3R4LT5hZGRybGVuOworI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgLyogQUZfQUxHIGRvZXMgbm90IHN1cHBvcnQgYWNjZXB0KCkgd2l0aCBhZGRyIGFuZCByYWlzZXMKKyAgICAgKiBFQ09OTkFCT1JURUQgaW5zdGVhZC4gKi8KKyAgICBpZiAocy0+c29ja19mYW1pbHkgPT0gQUZfQUxHKSB7CisgICAgICAgIGFkZHIgPSBOVUxMOworICAgICAgICBwYWRkcmxlbiA9IE5VTEw7CisgICAgICAgICpjdHgtPmFkZHJsZW4gPSAwOworICAgIH0KKyNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX0FDQ0VQVDQpICYmIGRlZmluZWQoU09DS19DTE9FWEVDKQogICAgIGlmIChhY2NlcHQ0X3dvcmtzICE9IDApIHsKLSAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQ0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4sCisgICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0NChzLT5zb2NrX2ZkLCBhZGRyLCBwYWRkcmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPQ0tfQ0xPRVhFQyk7CiAgICAgICAgIGlmIChjdHgtPnJlc3VsdCA9PSBJTlZBTElEX1NPQ0tFVCAmJiBhY2NlcHQ0X3dvcmtzID09IC0xKSB7CiAgICAgICAgICAgICAvKiBPbiBMaW51eCBvbGRlciB0aGFuIDIuNi4yOCwgYWNjZXB0NCgpIGZhaWxzIHdpdGggRU5PU1lTICovCkBAIC0yMjMyLDkgKzIzNDQsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGlmIChhY2NlcHQ0X3dvcmtzID09IDApCi0gICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBhZGRyLCBwYWRkcmxlbik7CiAjZWxzZQotICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIGFkZHIsIHBhZGRybGVuKTsKICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtMjMzMCwxMCArMjQ0MiwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHMtPnNvY2tfdGltZW91dCA9IF9QeVRpbWVfRnJvbVNlY29uZHMoYmxvY2sgPyAtMSA6IDApOwotICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIGJsb2NrKTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBpZiAoaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgYmxvY2spID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKHNldGJsb2NraW5nX2RvYywKQEAgLTIzOTksMTAgKzI1MTEsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzLT5zb2NrX3RpbWVvdXQgPSB0aW1lb3V0OwotICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIHRpbWVvdXQgPCAwKTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBpZiAoaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgdGltZW91dCA8IDApID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKHNldHRpbWVvdXRfZG9jLApAQCAtMjQzNiw5ICsyNTQ4LDEyIEBACiBvcGVyYXRpb25zIGFyZSBkaXNhYmxlZC4iKTsKIAogLyogcy5zZXRzb2Nrb3B0KCkgbWV0aG9kLgotICAgV2l0aCBhbiBpbnRlZ2VyIHRoaXJkIGFyZ3VtZW50LCBzZXRzIGFuIGludGVnZXIgb3B0aW9uLgorICAgV2l0aCBhbiBpbnRlZ2VyIHRoaXJkIGFyZ3VtZW50LCBzZXRzIGFuIGludGVnZXIgb3B0dmFsIHdpdGggb3B0bGVuPTQuCisgICBXaXRoIE5vbmUgYXMgdGhpcmQgYXJndW1lbnQgYW5kIGFuIGludGVnZXIgZm91cnRoIGFyZ3VtZW50LCBzZXQKKyAgIG9wdHZhbD1OVUxMIHdpdGggdW5zaWduZWQgaW50IGFzIG9wdGxlbi4KICAgIFdpdGggYSBzdHJpbmcgdGhpcmQgYXJndW1lbnQsIHNldHMgYW4gb3B0aW9uIGZyb20gYSBidWZmZXI7Ci0gICB1c2Ugb3B0aW9uYWwgYnVpbHQtaW4gbW9kdWxlICdzdHJ1Y3QnIHRvIGVuY29kZSB0aGUgc3RyaW5nLiAqLworICAgdXNlIG9wdGlvbmFsIGJ1aWx0LWluIG1vZHVsZSAnc3RydWN0JyB0byBlbmNvZGUgdGhlIHN0cmluZy4KKyovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX3NldHNvY2tvcHQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKQEAgLTI0NDgsMzEgKzI1NjMsNjQgQEAKICAgICBpbnQgcmVzOwogICAgIFB5X2J1ZmZlciBvcHR2YWw7CiAgICAgaW50IGZsYWc7CisgICAgdW5zaWduZWQgaW50IG9wdGxlbjsKKyAgICBQeU9iamVjdCAqbm9uZTsKIAorICAgIC8qIHNldHNvY2tvcHQobGV2ZWwsIG9wdCwgZmxhZykgKi8KICAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpOnNldHNvY2tvcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZmbGFnKSkgewogICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKikmZmxhZywgc2l6ZW9mIGZsYWcpOworICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpeSo6c2V0c29ja29wdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmb3B0dmFsKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwuYnVmLCBvcHR2YWwubGVuKTsKKworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgLyogc2V0c29ja29wdChsZXZlbCwgb3B0LCBOb25lLCBmbGFnKSAqLworICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8hSTpzZXRzb2Nrb3B0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCBQeV9UWVBFKFB5X05vbmUpLCAmbm9uZSwgJm9wdGxlbikpIHsKKyAgICAgICAgYXNzZXJ0KHNpemVvZihzb2NrbGVuX3QpID49IHNpemVvZih1bnNpZ25lZCBpbnQpKTsKKyAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAoc29ja2xlbl90KW9wdGxlbik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBQeUVycl9DbGVhcigpOworICAgIC8qIHNldHNvY2tvcHQobGV2ZWwsIG9wdCwgYnVmZmVyKSAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWl5KjpzZXRzb2Nrb3B0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmb3B0dmFsKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKG9wdHZhbC5sZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9wdHZhbCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNvY2tldCBvcHRpb24gaXMgbGFyZ2VyIHRoYW4gJWkgYnl0ZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgSU5UX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAocmVzIDwgMCkKKyAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgb3B0dmFsLmJ1ZiwgKGludClvcHR2YWwubGVuKTsKKyNlbHNlCisgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLmJ1Ziwgb3B0dmFsLmxlbik7CisjZW5kaWYKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvcHR2YWwpOworCitkb25lOgorICAgIGlmIChyZXMgPCAwKSB7CiAgICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihzZXRzb2Nrb3B0X2RvYywKLSJzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIHZhbHVlKVxuXAorInNldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgdmFsdWU6IGludClcblwKK3NldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgdmFsdWU6IGJ1ZmZlcilcblwKK3NldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgTm9uZSwgb3B0bGVuOiBpbnQpXG5cCiBcblwKIFNldCBhIHNvY2tldCBvcHRpb24uICBTZWUgdGhlIFVuaXggbWFudWFsIGZvciBsZXZlbCBhbmQgb3B0aW9uLlxuXAotVGhlIHZhbHVlIGFyZ3VtZW50IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciBvciBhIHN0cmluZy4iKTsKK1RoZSB2YWx1ZSBhcmd1bWVudCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIsIGEgc3RyaW5nIGJ1ZmZlciwgb3IgXG5cCitOb25lLCBvcHRsZW4uIik7CiAKIAogLyogcy5nZXRzb2Nrb3B0KCkgbWV0aG9kLgpAQCAtMjU2NCwxNyArMjcxMiwyMiBAQAogc29ja19jbG9zZShQeVNvY2tldFNvY2tPYmplY3QgKnMpCiB7CiAgICAgU09DS0VUX1QgZmQ7CisgICAgaW50IHJlczsKIAotICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy81NzY0NzgvCi0gICAgICogYW5kIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCi0gICAgICogZm9yIG1vcmUgZGV0YWlscy4KLSAgICAgKi8KICAgICBmZCA9IHMtPnNvY2tfZmQ7CiAgICAgaWYgKGZkICE9IElOVkFMSURfU09DS0VUKSB7CiAgICAgICAgIHMtPnNvY2tfZmQgPSBJTlZBTElEX1NPQ0tFVDsKKworICAgICAgICAvKiBXZSBkbyBub3Qgd2FudCB0byByZXRyeSB1cG9uIEVJTlRSOiBzZWUKKyAgICAgICAgICAgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvNTc2NDc4LyBhbmQKKyAgICAgICAgICAgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKKyAgICAgICAgICAgZm9yIG1vcmUgZGV0YWlscy4gKi8KICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAodm9pZCkgU09DS0VUQ0xPU0UoZmQpOworICAgICAgICByZXMgPSBTT0NLRVRDTE9TRShmZCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMzc1Nyw2ICszOTEwLDYzIEBACiB9OwogCiBzdGF0aWMgaW50Citzb2NrX3NlbmRtc2dfaW92ZWMoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqZGF0YV9hcmcsCisgICAgICAgICAgICAgICAgICAgc3RydWN0IG1zZ2hkciAqbXNnLAorICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqKmRhdGFidWZzb3V0LCBQeV9zc2l6ZV90ICpuZGF0YWJ1ZnNvdXQpIHsKKyAgICBQeV9zc2l6ZV90IG5kYXRhcGFydHMsIG5kYXRhYnVmcyA9IDA7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIHN0cnVjdCBpb3ZlYyAqaW92cyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRhdGFfZmFzdCA9IE5VTEw7CisgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7CisKKyAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGRhdGFfZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChkYXRhX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKTsKKyAgICBpZiAoZGF0YV9mYXN0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIG5kYXRhcGFydHMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZGF0YV9mYXN0KTsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzZW5kbXNnKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgbXNnLT5tc2dfaW92bGVuID0gbmRhdGFwYXJ0czsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IDApIHsKKyAgICAgICAgaW92cyA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIG5kYXRhcGFydHMpOworICAgICAgICBpZiAoaW92cyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIG1zZy0+bXNnX2lvdiA9IGlvdnM7CisKKyAgICAgICAgZGF0YWJ1ZnMgPSBQeU1lbV9OZXcoUHlfYnVmZmVyLCBuZGF0YXBhcnRzKTsKKyAgICAgICAgaWYgKGRhdGFidWZzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yICg7IG5kYXRhYnVmcyA8IG5kYXRhcGFydHM7IG5kYXRhYnVmcysrKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGRhdGFfZmFzdCwgbmRhdGFidWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAieSo7c2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzLWxpa2Ugb2JqZWN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFidWZzW25kYXRhYnVmc10pKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2Jhc2UgPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmJ1ZjsKKyAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9sZW4gPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmxlbjsKKyAgICB9CisgICAgcmVzdWx0ID0gMDsKKyAgZmluYWxseToKKyAgICAqZGF0YWJ1ZnNvdXQgPSBkYXRhYnVmczsKKyAgICAqbmRhdGFidWZzb3V0ID0gbmRhdGFidWZzOworICAgIFB5X1hERUNSRUYoZGF0YV9mYXN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CiBzb2NrX3NlbmRtc2dfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCiB7CiAgICAgc3RydWN0IHNvY2tfc2VuZG1zZyAqY3R4ID0gZGF0YTsKQEAgLTM3NzAsMTEgKzM5ODAsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX3NlbmRtc2coUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IGksIG5kYXRhcGFydHMsIG5kYXRhYnVmcyA9IDAsIG5jbXNncywgbmNtc2didWZzID0gMDsKKyAgICBQeV9zc2l6ZV90IGksIG5kYXRhYnVmcyA9IDAsIG5jbXNncywgbmNtc2didWZzID0gMDsKICAgICBQeV9idWZmZXIgKmRhdGFidWZzID0gTlVMTDsKLSAgICBzdHJ1Y3QgaW92ZWMgKmlvdnMgPSBOVUxMOwogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7Ci0gICAgc3RydWN0IG1zZ2hkciBtc2cgPSB7MH07CisgICAgc3RydWN0IG1zZ2hkciBtc2c7CiAgICAgc3RydWN0IGNtc2dpbmZvIHsKICAgICAgICAgaW50IGxldmVsOwogICAgICAgICBpbnQgdHlwZTsKQEAgLTM3ODMsMTMgKzM5OTIsMTYgQEAKICAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKICAgICBzaXplX3QgY29udHJvbGxlbiwgY29udHJvbGxlbl9sYXN0OwogICAgIGludCBhZGRybGVuLCBmbGFncyA9IDA7Ci0gICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLCAqZGF0YV9mYXN0ID0gTlVMTCwKKyAgICBQeU9iamVjdCAqZGF0YV9hcmcsICpjbXNnX2FyZyA9IE5VTEwsICphZGRyX2FyZyA9IE5VTEwsCiAgICAgICAgICpjbXNnX2Zhc3QgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKICAgICBzdHJ1Y3Qgc29ja19zZW5kbXNnIGN0eDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPaU86c2VuZG1zZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywgJmNtc2dfYXJnLCAmZmxhZ3MsICZhZGRyX2FyZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywgJmNtc2dfYXJnLCAmZmxhZ3MsICZhZGRyX2FyZykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKIAogICAgIC8qIFBhcnNlIGRlc3RpbmF0aW9uIGFkZHJlc3MuICovCiAgICAgaWYgKGFkZHJfYXJnICE9IE5VTEwgJiYgYWRkcl9hcmcgIT0gUHlfTm9uZSkgewpAQCAtMzgwMSwzMCArNDAxMyw4IEBACiAKICAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgogICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLwotICAgIGlmICgoZGF0YV9mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGRhdGFfYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICBpZiAoc29ja19zZW5kbXNnX2lvdmVjKHMsIGRhdGFfYXJnLCAmbXNnLCAmZGF0YWJ1ZnMsICZuZGF0YWJ1ZnMpID09IC0xKSB7CiAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICBuZGF0YXBhcnRzID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGRhdGFfZmFzdCk7Ci0gICAgaWYgKG5kYXRhcGFydHMgPiBJTlRfTUFYKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VuZG1zZygpIGFyZ3VtZW50IDEgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBtc2cubXNnX2lvdmxlbiA9IG5kYXRhcGFydHM7Ci0gICAgaWYgKG5kYXRhcGFydHMgPiAwICYmCi0gICAgICAgICgobXNnLm1zZ19pb3YgPSBpb3ZzID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgbmRhdGFwYXJ0cykpID09IE5VTEwgfHwKLSAgICAgICAgIChkYXRhYnVmcyA9IFB5TWVtX05ldyhQeV9idWZmZXIsIG5kYXRhcGFydHMpKSA9PSBOVUxMKSkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIGZvciAoOyBuZGF0YWJ1ZnMgPCBuZGF0YXBhcnRzOyBuZGF0YWJ1ZnMrKykgewotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShkYXRhX2Zhc3QsIG5kYXRhYnVmcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgInkqO3NlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcy1saWtlIG9iamVjdHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhYnVmc1tuZGF0YWJ1ZnNdKSkKLSAgICAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9iYXNlID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5idWY7Ci0gICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfbGVuID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5sZW47CiAgICAgfQogCiAgICAgaWYgKGNtc2dfYXJnID09IE5VTEwpCkBAIC0zODgzLDExICs0MDczLDEzIEBACiAgICAgaWYgKG5jbXNnYnVmcyA+IDApIHsKICAgICAgICAgc3RydWN0IGNtc2doZHIgKmNtc2doID0gTlVMTDsKIAotICAgICAgICBpZiAoKG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWYgPQotICAgICAgICAgICAgIFB5TWVtX01hbGxvYyhjb250cm9sbGVuKSkgPT0gTlVMTCkgeworICAgICAgICBjb250cm9sYnVmID0gUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pOworICAgICAgICBpZiAoY29udHJvbGJ1ZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICB9CisgICAgICAgIG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWY7CisKICAgICAgICAgbXNnLm1zZ19jb250cm9sbGVuID0gY29udHJvbGxlbjsKIAogICAgICAgICAvKiBOZWVkIHRvIHplcm8gb3V0IHRoZSBidWZmZXIgYXMgYSB3b3JrYXJvdW5kIGZvciBnbGliYydzCkBAIC0zOTUyLDExICs0MTQ0LDExIEBACiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmNtc2dzW2ldLmRhdGEpOwogICAgIFB5TWVtX0ZyZWUoY21zZ3MpOwogICAgIFB5X1hERUNSRUYoY21zZ19mYXN0KTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbmRhdGFidWZzOyBpKyspCisgICAgUHlNZW1fRnJlZShtc2cubXNnX2lvdik7CisgICAgZm9yIChpID0gMDsgaSA8IG5kYXRhYnVmczsgaSsrKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGFidWZzW2ldKTsKKyAgICB9CiAgICAgUHlNZW1fRnJlZShkYXRhYnVmcyk7Ci0gICAgUHlNZW1fRnJlZShpb3ZzKTsKLSAgICBQeV9YREVDUkVGKGRhdGFfZmFzdCk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMzk3OCw2ICs0MTcwLDE3MSBAQAogZGF0YSBzZW50LiIpOwogI2VuZGlmICAgIC8qIENNU0dfTEVOICovCiAKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworc3RhdGljIFB5T2JqZWN0Kgorc29ja19zZW5kbXNnX2FmYWxnKFB5U29ja2V0U29ja09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOworCisgICAgUHlfc3NpemVfdCBpLCBuZGF0YWJ1ZnMgPSAwOworICAgIFB5X2J1ZmZlciAqZGF0YWJ1ZnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkYXRhX2FyZyA9IE5VTEw7CisKKyAgICBQeV9idWZmZXIgaXYgPSB7TlVMTCwgTlVMTH07CisKKyAgICBQeU9iamVjdCAqb3BvYmogPSBOVUxMOworICAgIGludCBvcCA9IC0xOworCisgICAgUHlPYmplY3QgKmFzc29jbGVub2JqID0gTlVMTDsKKyAgICBpbnQgYXNzb2NsZW4gPSAtMTsKKworICAgIHVuc2lnbmVkIGludCAqdWlwdHI7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIHN0cnVjdCBtc2doZHIgbXNnOworICAgIHN0cnVjdCBjbXNnaGRyICpoZWFkZXIgPSBOVUxMOworICAgIHN0cnVjdCBhZl9hbGdfaXYgKmFsZ19pdiA9IE5VTEw7CisgICAgc3RydWN0IHNvY2tfc2VuZG1zZyBjdHg7CisgICAgUHlfc3NpemVfdCBjb250cm9sbGVuOworICAgIHZvaWQgKmNvbnRyb2xidWYgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJtc2ciLCAib3AiLCAiaXYiLCAiYXNzb2NsZW4iLCAiZmxhZ3MiLCAwfTsKKworICAgIGlmIChzZWxmLT5zb2NrX2ZhbWlseSAhPSBBRl9BTEcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiYWxnc2V0IGlzIG9ubHkgc3VwcG9ydGVkIGZvciBBRl9BTEciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifE8kTyF5Kk8haTpzZW5kbXNnX2FmYWxnIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUxvbmdfVHlwZSwgJm9wb2JqLCAmaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5TG9uZ19UeXBlLCAmYXNzb2NsZW5vYmosICZmbGFncykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKKworICAgIC8qIG9wIGlzIGEgcmVxdWlyZWQsIGtleXdvcmQtb25seSBhcmd1bWVudCA+PSAwICovCisgICAgaWYgKG9wb2JqICE9IE5VTEwpIHsKKyAgICAgICAgb3AgPSBfUHlMb25nX0FzSW50KG9wb2JqKTsKKyAgICB9CisgICAgaWYgKG9wIDwgMCkgeworICAgICAgICAvKiBvdmVycmlkZSBleGNlcHRpb24gZnJvbSBfUHlMb25nX0FzSW50KCkgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIG9yIG1pc3NpbmcgYXJndW1lbnQgJ29wJyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIC8qIGFzc29jbGVuIGlzIG9wdGlvbmFsIGJ1dCBtdXN0IGJlID49IDAgKi8KKyAgICBpZiAoYXNzb2NsZW5vYmogIT0gTlVMTCkgeworICAgICAgICBhc3NvY2xlbiA9IF9QeUxvbmdfQXNJbnQoYXNzb2NsZW5vYmopOworICAgICAgICBpZiAoYXNzb2NsZW4gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGlmIChhc3NvY2xlbiA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzc29jbGVuIG11c3QgYmUgcG9zaXRpdmUiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnRyb2xsZW4gPSBDTVNHX1NQQUNFKDQpOworICAgIGlmIChpdi5idWYgIT0gTlVMTCkgeworICAgICAgICBjb250cm9sbGVuICs9IENNU0dfU1BBQ0Uoc2l6ZW9mKCphbGdfaXYpICsgaXYubGVuKTsKKyAgICB9CisgICAgaWYgKGFzc29jbGVuID49IDApIHsKKyAgICAgICAgY29udHJvbGxlbiArPSBDTVNHX1NQQUNFKDQpOworICAgIH0KKworICAgIGNvbnRyb2xidWYgPSBQeU1lbV9NYWxsb2MoY29udHJvbGxlbik7CisgICAgaWYgKGNvbnRyb2xidWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIG1lbXNldChjb250cm9sYnVmLCAwLCBjb250cm9sbGVuKTsKKworICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CisgICAgbXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZjsKKworICAgIC8qIEZpbGwgaW4gYW4gaW92ZWMgZm9yIGVhY2ggbWVzc2FnZSBwYXJ0LCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCisgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCisgICAgaWYgKGRhdGFfYXJnICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHNvY2tfc2VuZG1zZ19pb3ZlYyhzZWxmLCBkYXRhX2FyZywgJm1zZywgJmRhdGFidWZzLCAmbmRhdGFidWZzKSA9PSAtMSkgeworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorCisgICAgLyogc2V0IG9wZXJhdGlvbiB0byBlbmNyeXB0IG9yIGRlY3J5cHQgKi8KKyAgICBoZWFkZXIgPSBDTVNHX0ZJUlNUSERSKCZtc2cpOworICAgIGlmIChoZWFkZXIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSBDTVNHX0ZJUlNUSERSIik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgaGVhZGVyLT5jbXNnX2xldmVsID0gU09MX0FMRzsKKyAgICBoZWFkZXItPmNtc2dfdHlwZSA9IEFMR19TRVRfT1A7CisgICAgaGVhZGVyLT5jbXNnX2xlbiA9IENNU0dfTEVOKDQpOworICAgIHVpcHRyID0gKHZvaWQqKUNNU0dfREFUQShoZWFkZXIpOworICAgICp1aXB0ciA9ICh1bnNpZ25lZCBpbnQpb3A7CisKKyAgICAvKiBzZXQgaW5pdGlhbGl6YXRpb24gdmVjdG9yICovCisgICAgaWYgKGl2LmJ1ZiAhPSBOVUxMKSB7CisgICAgICAgIGhlYWRlciA9IENNU0dfTlhUSERSKCZtc2csIGhlYWRlcik7CisgICAgICAgIGlmIChoZWFkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tIENNU0dfTlhUSERSKGl2KSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGhlYWRlci0+Y21zZ19sZXZlbCA9IFNPTF9BTEc7CisgICAgICAgIGhlYWRlci0+Y21zZ190eXBlID0gQUxHX1NFVF9JVjsKKyAgICAgICAgaGVhZGVyLT5jbXNnX2xlbiA9IENNU0dfU1BBQ0Uoc2l6ZW9mKCphbGdfaXYpICsgaXYubGVuKTsKKyAgICAgICAgYWxnX2l2ID0gKHZvaWQqKUNNU0dfREFUQShoZWFkZXIpOworICAgICAgICBhbGdfaXYtPml2bGVuID0gaXYubGVuOworICAgICAgICBtZW1jcHkoYWxnX2l2LT5pdiwgaXYuYnVmLCBpdi5sZW4pOworICAgIH0KKworICAgIC8qIHNldCBsZW5ndGggb2YgYXNzb2NpYXRlZCBkYXRhIGZvciBBRUFEICovCisgICAgaWYgKGFzc29jbGVuID49IDApIHsKKyAgICAgICAgaGVhZGVyID0gQ01TR19OWFRIRFIoJm1zZywgaGVhZGVyKTsKKyAgICAgICAgaWYgKGhlYWRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE5VTEwgcmVzdWx0IGZyb20gQ01TR19OWFRIRFIoYXNzb2MpIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgaGVhZGVyLT5jbXNnX2xldmVsID0gU09MX0FMRzsKKyAgICAgICAgaGVhZGVyLT5jbXNnX3R5cGUgPSBBTEdfU0VUX0FFQURfQVNTT0NMRU47CisgICAgICAgIGhlYWRlci0+Y21zZ19sZW4gPSBDTVNHX0xFTig0KTsKKyAgICAgICAgdWlwdHIgPSAodm9pZCopQ01TR19EQVRBKGhlYWRlcik7CisgICAgICAgICp1aXB0ciA9ICh1bnNpZ25lZCBpbnQpYXNzb2NsZW47CisgICAgfQorCisgICAgY3R4Lm1zZyA9ICZtc2c7CisgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgaWYgKHNvY2tfY2FsbChzZWxmLCAxLCBzb2NrX3NlbmRtc2dfaW1wbCwgJmN0eCkgPCAwKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICByZXR2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoY3R4LnJlc3VsdCk7CisKKyAgZmluYWxseToKKyAgICBQeU1lbV9GcmVlKGNvbnRyb2xidWYpOworICAgIGlmIChpdi5idWYgIT0gTlVMTCkgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpdik7CisgICAgfQorICAgIFB5TWVtX0ZyZWUobXNnLm1zZ19pb3YpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhYnVmc1tpXSk7CisgICAgfQorICAgIFB5TWVtX0ZyZWUoZGF0YWJ1ZnMpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihzZW5kbXNnX2FmYWxnX2RvYywKKyJzZW5kbXNnX2FmYWxnKFttc2ddLCAqLCBvcFssIGl2WywgYXNzb2NsZW5bLCBmbGFncz1NU0dfTU9SRV1dXSlcblwKK1xuXAorU2V0IG9wZXJhdGlvbiBtb2RlLCBJViBhbmQgbGVuZ3RoIG9mIGFzc29jaWF0ZWQgZGF0YSBmb3IgYW4gQUZfQUxHXG5cCitvcGVyYXRpb24gc29ja2V0LiIpOworI2VuZGlmCiAKIC8qIHMuc2h1dGRvd24oaG93KSBtZXRob2QgKi8KIApAQCAtNDAzNiw2ICs0MzkzLDE3IEBACiAgICAgICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlY3YpOyB9CisjaWYgZGVmaW5lZChTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIKQorICAgIGNhc2UgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSDogeworICAgICAgICB1bnNpZ25lZCBpbnQgb3B0aW9uOworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJnLCAia0k6aW9jdGwiLCAmY21kLCAmb3B0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoV1NBSW9jdGwocy0+c29ja19mZCwgY21kLCAmb3B0aW9uLCBzaXplb2Yob3B0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCAmcmVjdiwgTlVMTCwgTlVMTCkgPT0gU09DS0VUX0VSUk9SKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlY3YpOyB9CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgaW9jdGwgY29tbWFuZCAlZCIsIGNtZCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDA0Niw3ICs0NDE0LDggQEAKIFxuXAogQ29udHJvbCB0aGUgc29ja2V0IHdpdGggV1NBSW9jdGwgc3lzY2FsbC4gQ3VycmVudGx5IHN1cHBvcnRlZCAnY21kJyB2YWx1ZXMgYXJlXG5cCiBTSU9fUkNWQUxMOiAgJ29wdGlvbicgbXVzdCBiZSBvbmUgb2YgdGhlIHNvY2tldC5SQ1ZBTExfKiBjb25zdGFudHMuXG5cCi1TSU9fS0VFUEFMSVZFX1ZBTFM6ICAnb3B0aW9uJyBpcyBhIHR1cGxlIG9mIChvbm9mZiwgdGltZW91dCwgaW50ZXJ2YWwpLiIpOworU0lPX0tFRVBBTElWRV9WQUxTOiAgJ29wdGlvbicgaXMgYSB0dXBsZSBvZiAob25vZmYsIHRpbWVvdXQsIGludGVydmFsKS5cblwKK1NJT19MT09QQkFDS19GQVNUX1BBVEg6ICdvcHRpb24nIGlzIGEgYm9vbGVhbiB2YWx1ZSwgYW5kIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQiKTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQpAQCAtNDE0NSw2ICs0NTE0LDEwIEBACiAgICAgeyJzZW5kbXNnIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3NlbmRtc2csIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgICAgICBzZW5kbXNnX2RvY30sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIHsic2VuZG1zZ19hZmFsZyIsICAgICAoUHlDRnVuY3Rpb24pc29ja19zZW5kbXNnX2FmYWxnLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgIHNlbmRtc2dfYWZhbGdfZG9jfSwKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTQxNjUsMjIgKzQ1MzgsNDUgQEAKICAgIEZpcnN0IGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0aW9uLiAqLwogCiBzdGF0aWMgdm9pZAorc29ja19maW5hbGl6ZShQeVNvY2tldFNvY2tPYmplY3QgKnMpCit7CisgICAgU09DS0VUX1QgZmQ7CisgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKworICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CisKKyAgICBpZiAocy0+c29ja19mZCAhPSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgICBpZiAoUHlFcnJfUmVzb3VyY2VXYXJuaW5nKChQeU9iamVjdCAqKXMsIDEsICJ1bmNsb3NlZCAlUiIsIHMpKSB7CisgICAgICAgICAgICAvKiBTcHVyaW91cyBlcnJvcnMgY2FuIGFwcGVhciBhdCBzaHV0ZG93biAqLworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfV2FybmluZykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBPbmx5IGNsb3NlIHRoZSBzb2NrZXQgKmFmdGVyKiBsb2dnaW5nIHRoZSBSZXNvdXJjZVdhcm5pbmcgd2FybmluZworICAgICAgICAgICB0byBhbGxvdyB0aGUgbG9nZ2VyIHRvIGNhbGwgc29ja2V0IG1ldGhvZHMgbGlrZQorICAgICAgICAgICBzb2NrZXQuZ2V0c29ja25hbWUoKS4gSWYgdGhlIHNvY2tldCBpcyBjbG9zZWQgYmVmb3JlLCBzb2NrZXQKKyAgICAgICAgICAgbWV0aG9kcyBmYWlscyB3aXRoIHRoZSBFQkFERiBlcnJvci4gKi8KKyAgICAgICAgZmQgPSBzLT5zb2NrX2ZkOworICAgICAgICBzLT5zb2NrX2ZkID0gSU5WQUxJRF9TT0NLRVQ7CisKKyAgICAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIHNvY2tfY2xvc2UoKSAqLworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICh2b2lkKSBTT0NLRVRDTE9TRShmZCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCisgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7Cit9CisKK3N0YXRpYyB2b2lkCiBzb2NrX2RlYWxsb2MoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQogewotICAgIGlmIChzLT5zb2NrX2ZkICE9IElOVkFMSURfU09DS0VUKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKLSAgICAgICAgUHlfc3NpemVfdCBvbGRfcmVmY291bnQgPSBQeV9SRUZDTlQocyk7Ci0gICAgICAgICsrUHlfUkVGQ05UKHMpOwotICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19SZXNvdXJjZVdhcm5pbmcsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmNsb3NlZCAlUiIsIHMpKQotICAgICAgICAgICAgLyogU3B1cmlvdXMgZXJyb3JzIGNhbiBhcHBlYXIgYXQgc2h1dGRvd24gKi8KLSAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1dhcm5pbmcpKQotICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKikgcyk7Ci0gICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwsIHRiKTsKLSAgICAgICAgKHZvaWQpIFNPQ0tFVENMT1NFKHMtPnNvY2tfZmQpOwotICAgICAgICBQeV9SRUZDTlQocykgPSBvbGRfcmVmY291bnQ7Ci0gICAgfQorICAgIGlmIChQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2MoKFB5T2JqZWN0ICopcykgPCAwKQorICAgICAgICByZXR1cm47CisKICAgICBQeV9UWVBFKHMpLT50cF9mcmVlKChQeU9iamVjdCAqKXMpOwogfQogCkBAIC00MzY4LDcgKzQ3NjQsMTAgQEAKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIGluaXRfc29ja29iamVjdChzLCBmZCwgZmFtaWx5LCB0eXBlLCBwcm90byk7CisgICAgaWYgKGluaXRfc29ja29iamVjdChzLCBmZCwgZmFtaWx5LCB0eXBlLCBwcm90bykgPT0gLTEpIHsKKyAgICAgICAgU09DS0VUQ0xPU0UoZmQpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgcmV0dXJuIDA7CiAKQEAgLTQzOTcsNyArNDc5Niw4IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICBzb2NrX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC00NDE3LDYgKzQ4MTcsMTUgQEAKICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgc29ja19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICAoZGVzdHJ1Y3Rvcilzb2NrX2ZpbmFsaXplLCAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogCiAKQEAgLTU0NTIsMTAgKzU4NjEsNiBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhyZXR2YWwpOwogICAgIH0KLQotICAgIC8qIE5PVFJFQUNIRUQgKi8KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW52YWxpZCBoYW5kbGluZyBvZiBpbmV0X250b3AiKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQpAQCAtNjE4OSw5ICs2NTk0LDYgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9VTlNQRUMpOwogI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfSU5FVCk7Ci0jaWZkZWYgQUZfSU5FVDYKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9JTkVUNik7Ci0jZW5kaWYgLyogQUZfSU5FVDYgKi8KICNpZiBkZWZpbmVkKEFGX1VOSVgpCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfVU5JWCk7CiAjZW5kaWYgLyogQUZfVU5JWCAqLwpAQCAtNjIyMiw2ICs2NjI0LDkgQEAKICAgICAvKiBSZXNlcnZlZCBmb3IgV2VybmVyJ3MgQVRNICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfQUFMNSk7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0FMRyk7IC8qIExpbnV4IGNyeXB0byAqLworI2VuZGlmCiAjaWZkZWYgQUZfWDI1CiAgICAgLyogUmVzZXJ2ZWQgZm9yIFguMjUgcHJvamVjdCAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1gyNSk7CkBAIC02MjgzLDYgKzY2ODgsOSBAQAogI2lmZGVmIE5FVExJTktfVEFQQkFTRQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5FVExJTktfVEFQQkFTRSk7CiAjZW5kaWYKKyNpZmRlZiBORVRMSU5LX0NSWVBUTworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5FVExJTktfQ1JZUFRPKTsKKyNlbmRpZgogI2VuZGlmIC8qIEFGX05FVExJTksgKi8KICNpZmRlZiBBRl9ST1VURQogICAgIC8qIEFsaWFzIHRvIGVtdWxhdGUgNC40QlNEICovCkBAIC02NDM2LDExICs2ODQ0LDMwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19UT1BfU1JWKTsKICNlbmRpZgogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICAvKiBTb2NrZXQgb3B0aW9ucyAqLworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfS0VZKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0lWKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX09QKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0FFQURfQVNTT0NMRU4pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfQUVBRF9BVVRIU0laRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9QVUJLRVkpOworCisgICAgLyogT3BlcmF0aW9ucyAqLworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9ERUNSWVBUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfRU5DUllQVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX09QX1NJR04pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9WRVJJRlkpOworI2VuZGlmCisKICAgICAvKiBTb2NrZXQgdHlwZXMgKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1NUUkVBTSk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19ER1JBTSk7CiAvKiBXZSBoYXZlIGluY29tcGxldGUgc29ja2V0IHN1cHBvcnQuICovCisjaWZkZWYgU09DS19SQVcKKyAgICAvKiBTT0NLX1JBVyBpcyBtYXJrZWQgYXMgb3B0aW9uYWwgaW4gdGhlIFBPU0lYIHNwZWNpZmljYXRpb24gKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1JBVyk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1NFUVBBQ0tFVCk7CiAjaWYgZGVmaW5lZChTT0NLX1JETSkKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1JETSk7CkBAIC02NDgzLDkgKzY5MTAsMTEgQEAKICNpZmRlZiAgU09fT09CSU5MSU5FCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fT09CSU5MSU5FKTsKICNlbmRpZgorI2lmbmRlZiBfX0dOVV9fCiAjaWZkZWYgIFNPX1JFVVNFUE9SVAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1JFVVNFUE9SVCk7CiAjZW5kaWYKKyNlbmRpZgogI2lmZGVmICBTT19TTkRCVUYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19TTkRCVUYpOwogI2VuZGlmCkBAIC02NTIyLDYgKzY5NTEsMTIgQEAKICNpZmRlZiAgTE9DQUxfUEVFUkNSRUQKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0NBTF9QRUVSQ1JFRCk7CiAjZW5kaWYKKyNpZmRlZiAgU09fUEFTU1NFQworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1BBU1NTRUMpOworI2VuZGlmCisjaWZkZWYgIFNPX1BFRVJTRUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19QRUVSU0VDKTsKKyNlbmRpZgogI2lmZGVmICBTT19CSU5EVE9ERVZJQ0UKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19CSU5EVE9ERVZJQ0UpOwogI2VuZGlmCkBAIC02NTMxLDYgKzY5NjYsMTIgQEAKICNpZmRlZiAgU09fTUFSSwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX01BUkspOwogI2VuZGlmCisjaWZkZWYgU09fRE9NQUlOCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fRE9NQUlOKTsKKyNlbmRpZgorI2lmZGVmIFNPX1BST1RPQ09MCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUFJPVE9DT0wpOworI2VuZGlmCiAKICAgICAvKiBNYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyBmb3IgImxpc3RlbiIgKi8KICNpZmRlZiAgU09NQVhDT05OCkBAIC02Njg5LDYgKzcxMzAsOSBAQAogI2lmZGVmIFNPTF9SRFMKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0xfUkRTKTsKICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX0FMRyk7CisjZW5kaWYKICNpZmRlZiBSRFNfQ0FOQ0VMX1NFTlRfVE8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfQ0FOQ0VMX1NFTlRfVE8pOwogI2VuZGlmCkBAIC03MjI2LDggKzc2NzAsMTYgQEAKIAogI2lmZGVmIFNJT19SQ1ZBTEwKICAgICB7Ci0gICAgICAgIERXT1JEIGNvZGVzW10gPSB7U0lPX1JDVkFMTCwgU0lPX0tFRVBBTElWRV9WQUxTfTsKLSAgICAgICAgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsiU0lPX1JDVkFMTCIsICJTSU9fS0VFUEFMSVZFX1ZBTFMifTsKKyAgICAgICAgRFdPUkQgY29kZXNbXSA9IHtTSU9fUkNWQUxMLCBTSU9fS0VFUEFMSVZFX1ZBTFMsCisjaWYgZGVmaW5lZChTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIKQorICAgICAgICAgICAgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSAorI2VuZGlmCisgICAgICAgIH07CisgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzW10gPSB7IlNJT19SQ1ZBTEwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIiwKKyNpZiBkZWZpbmVkKFNJT19MT09QQkFDS19GQVNUX1BBVEgpCisgICAgICAgICAgICAiU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCIKKyNlbmRpZgorICAgICAgICB9OwogICAgICAgICBpbnQgaTsKICAgICAgICAgZm9yKGkgPSAwOyBpPFB5X0FSUkFZX0xFTkdUSChjb2Rlcyk7ICsraSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnRtcDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3B3ZG1vZHVsZS5jIGIvTW9kdWxlcy9zcHdkbW9kdWxlLmMKaW5kZXggNGI5ZjNjZC4uNTU2YTcxNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcHdkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zcHdkbW9kdWxlLmMKQEAgLTEzNyw3ICsxMzcsMTAgQEAKICAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lLCBOVUxMKSA9PSAtMSkKICAgICAgICAgZ290byBvdXQ7CiAgICAgaWYgKChwID0gZ2V0c3BuYW0obmFtZSkpID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiZ2V0c3BuYW0oKTogbmFtZSBub3QgZm91bmQiKTsKKyAgICAgICAgaWYgKGVycm5vICE9IDApCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgImdldHNwbmFtKCk6IG5hbWUgbm90IGZvdW5kIik7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KICAgICByZXR2YWwgPSBta3NwZW50KHApOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcmVfbGliLmggYi9Nb2R1bGVzL3NyZV9saWIuaAppbmRleCAxMjhjNzFlLi4wODY1ZmM2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NyZV9saWIuaAorKysgYi9Nb2R1bGVzL3NyZV9saWIuaApAQCAtMzY3LDE0ICszNjcsMTIgQEAKICNkZWZpbmUgUkVUVVJOX09OX0ZBSUxVUkUoaSkgXAogICAgIGRvIHsgUkVUVVJOX09OX0VSUk9SKGkpOyBpZiAoaSA9PSAwKSBSRVRVUk5fRkFJTFVSRTsgfSB3aGlsZSAoMCkKIAotI2RlZmluZSBTRlkoeCkgI3gKLQogI2RlZmluZSBEQVRBX1NUQUNLX0FMTE9DKHN0YXRlLCB0eXBlLCBwdHIpIFwKIGRvIHsgXAogICAgIGFsbG9jX3BvcyA9IHN0YXRlLT5kYXRhX3N0YWNrX2Jhc2U7IFwKICAgICBUUkFDRSgoImFsbG9jYXRpbmcgJXMgaW4gJSIgUFlfRk9STUFUX1NJWkVfVCAiZCAiIFwKICAgICAgICAgICAgIiglIiBQWV9GT1JNQVRfU0laRV9UICJkKVxuIiwgXAotICAgICAgICAgICBTRlkodHlwZSksIGFsbG9jX3Bvcywgc2l6ZW9mKHR5cGUpKSk7IFwKKyAgICAgICAgICAgUHlfU1RSSU5HSUZZKHR5cGUpLCBhbGxvY19wb3MsIHNpemVvZih0eXBlKSkpOyBcCiAgICAgaWYgKHNpemVvZih0eXBlKSA+IHN0YXRlLT5kYXRhX3N0YWNrX3NpemUgLSBhbGxvY19wb3MpIHsgXAogICAgICAgICBpbnQgaiA9IGRhdGFfc3RhY2tfZ3JvdyhzdGF0ZSwgc2l6ZW9mKHR5cGUpKTsgXAogICAgICAgICBpZiAoaiA8IDApIHJldHVybiBqOyBcCkBAIC0zODcsNyArMzg1LDcgQEAKIAogI2RlZmluZSBEQVRBX1NUQUNLX0xPT0tVUF9BVChzdGF0ZSwgdHlwZSwgcHRyLCBwb3MpIFwKIGRvIHsgXAotICAgIFRSQUNFKCgibG9va2luZyB1cCAlcyBhdCAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLCBTRlkodHlwZSksIHBvcykpOyBcCisgICAgVFJBQ0UoKCJsb29raW5nIHVwICVzIGF0ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsIFB5X1NUUklOR0lGWSh0eXBlKSwgcG9zKSk7IFwKICAgICBwdHIgPSAodHlwZSopKHN0YXRlLT5kYXRhX3N0YWNrK3Bvcyk7IFwKIH0gd2hpbGUgKDApCiAKQEAgLTUzMSw3ICs1MjksNyBAQAogICAgIGlmIChjdHgtPnBhdHRlcm5bMF0gPT0gU1JFX09QX0lORk8pIHsKICAgICAgICAgLyogb3B0aW1pemF0aW9uIGluZm8gYmxvY2sgKi8KICAgICAgICAgLyogPElORk8+IDwxPXNraXA+IDwyPWZsYWdzPiA8Mz1taW4+IC4uLiAqLwotICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmIChQeV91aW50cHRyX3QpKGVuZCAtIGN0eC0+cHRyKSA8IGN0eC0+cGF0dGVyblszXSkgeworICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmICh1aW50cHRyX3QpKGVuZCAtIGN0eC0+cHRyKSA8IGN0eC0+cGF0dGVyblszXSkgewogICAgICAgICAgICAgVFJBQ0UoKCJyZWplY3QgKGdvdCAlIiBQWV9GT1JNQVRfU0laRV9UICJkIGNoYXJzLCAiCiAgICAgICAgICAgICAgICAgICAgIm5lZWQgJSIgUFlfRk9STUFUX1NJWkVfVCAiZClcbiIsCiAgICAgICAgICAgICAgICAgICAgZW5kIC0gY3R4LT5wdHIsIChQeV9zc2l6ZV90KSBjdHgtPnBhdHRlcm5bM10pKTsKQEAgLTEyNTYsNyArMTI1NCwzMiBAQAogICAgICAgICAgICBwcmVmaXgsIHByZWZpeF9sZW4sIHByZWZpeF9za2lwKSk7CiAgICAgVFJBQ0UoKCJjaGFyc2V0ID0gJXBcbiIsIGNoYXJzZXQpKTsKIAotI2lmIGRlZmluZWQoVVNFX0ZBU1RfU0VBUkNIKQorICAgIGlmIChwcmVmaXhfbGVuID09IDEpIHsKKyAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGxpdGVyYWwgY2hhcmFjdGVyICovCisgICAgICAgIFNSRV9DSEFSIGMgPSAoU1JFX0NIQVIpIHByZWZpeFswXTsKKyNpZiBTSVpFT0ZfU1JFX0NIQVIgPCA0CisgICAgICAgIGlmICgoU1JFX0NPREUpIGMgIT0gcHJlZml4WzBdKQorICAgICAgICAgICAgcmV0dXJuIDA7IC8qIGxpdGVyYWwgY2FuJ3QgbWF0Y2g6IGRvZXNuJ3QgZml0IGluIGNoYXIgd2lkdGggKi8KKyNlbmRpZgorICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kKSB7CisgICAgICAgICAgICB3aGlsZSAoKnB0ciAhPSBjKSB7CisgICAgICAgICAgICAgICAgaWYgKCsrcHRyID49IGVuZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0ggTElURVJBTFxuIiwgcGF0dGVybiwgcHRyKSk7CisgICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBwdHI7CisgICAgICAgICAgICBzdGF0ZS0+cHRyID0gcHRyICsgcHJlZml4X3NraXA7CisgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19MSVRFUkFMKQorICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiB3ZSBnb3QgYWxsIG9mIGl0ICovCisgICAgICAgICAgICBzdGF0dXMgPSBTUkUobWF0Y2gpKHN0YXRlLCBwYXR0ZXJuICsgMipwcmVmaXhfc2tpcCwgMCk7CisgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgICAgICsrcHRyOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChwcmVmaXhfbGVuID4gMSkgewogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEga25vd24gcHJlZml4LiAgdXNlIHRoZSBvdmVybGFwCiAgICAgICAgICAgIHRhYmxlIHRvIHNraXAgZm9yd2FyZCBhcyBmYXN0IGFzIHdlIHBvc3NpYmx5IGNhbiAqLwpAQCAtMTMwNSwzMiArMTMyOCw4IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotI2VuZGlmCiAKLSAgICBpZiAocGF0dGVyblswXSA9PSBTUkVfT1BfTElURVJBTCkgewotICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgbGl0ZXJhbCBjaGFyYWN0ZXIuICB0aGlzIGlzIHVzZWQKLSAgICAgICAgICAgZm9yIHNob3J0IHByZWZpeGVzLCBhbmQgaWYgZmFzdCBzZWFyY2ggaXMgZGlzYWJsZWQgKi8KLSAgICAgICAgU1JFX0NIQVIgYyA9IChTUkVfQ0hBUikgcGF0dGVyblsxXTsKLSNpZiBTSVpFT0ZfU1JFX0NIQVIgPCA0Ci0gICAgICAgIGlmICgoU1JFX0NPREUpIGMgIT0gcGF0dGVyblsxXSkKLSAgICAgICAgICAgIHJldHVybiAwOyAvKiBsaXRlcmFsIGNhbid0IG1hdGNoOiBkb2Vzbid0IGZpdCBpbiBjaGFyIHdpZHRoICovCi0jZW5kaWYKLSAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCkgewotICAgICAgICAgICAgd2hpbGUgKCpwdHIgIT0gYykgewotICAgICAgICAgICAgICAgIGlmICgrK3B0ciA+PSBlbmQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIExJVEVSQUxcbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyOwotICAgICAgICAgICAgc3RhdGUtPnB0ciA9ICsrcHRyOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fTElURVJBTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogd2UgZ290IGFsbCBvZiBpdCAqLwotICAgICAgICAgICAgc3RhdHVzID0gU1JFKG1hdGNoKShzdGF0ZSwgcGF0dGVybiArIDIsIDApOwotICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChjaGFyc2V0KSB7CisgICAgaWYgKGNoYXJzZXQpIHsKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGNoYXJhY3RlciBmcm9tIGEga25vd24gc2V0ICovCiAgICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CiAgICAgICAgIGZvciAoOzspIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYyBiL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYwppbmRleCBmODRjYzc4Li4zNGE2ZmM1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCkBAIC03OSw2ICs3OSw3IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0ZSRUVfQ0xBU1MpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9JTVBPUlQpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9CT1VORCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0FOTk9UKTsKIAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUWVBFX0ZVTkNUSU9OIiwgRnVuY3Rpb25CbG9jayk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRZUEVfQ0xBU1MiLCBDbGFzc0Jsb2NrKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdGltZW1vZHVsZS5jIGIvTW9kdWxlcy90aW1lbW9kdWxlLmMKaW5kZXggZDJjYWFjZC4uZjA3MDgzMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy90aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy90aW1lbW9kdWxlLmMKQEAgLTE2MCw3ICsxNjAsOSBAQAogImNsb2NrX2dldHRpbWUoY2xrX2lkKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXAogUmV0dXJuIHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkLiIpOworI2VuZGlmICAgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCiAKKyNpZmRlZiBIQVZFX0NMT0NLX1NFVFRJTUUKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2Nsb2NrX3NldHRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTkxLDcgKzE5Myw5IEBACiAiY2xvY2tfc2V0dGltZShjbGtfaWQsIHRpbWUpXG5cCiBcblwKIFNldCB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKyNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfU0VUVElNRSAqLwogCisjaWZkZWYgSEFWRV9DTE9DS19HRVRSRVMKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2Nsb2NrX2dldHJlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0yMTUsNyArMjE5LDcgQEAKICJjbG9ja19nZXRyZXMoY2xrX2lkKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXAogUmV0dXJuIHRoZSByZXNvbHV0aW9uIChwcmVjaXNpb24pIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkLiIpOwotI2VuZGlmICAgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFJFUyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9zbGVlcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKQEAgLTI1MCwxMCArMjU0LDggQEAKICAgICB7InRtX3dkYXkiLCAiZGF5IG9mIHdlZWssIHJhbmdlIFswLCA2XSwgTW9uZGF5IGlzIDAifSwKICAgICB7InRtX3lkYXkiLCAiZGF5IG9mIHllYXIsIHJhbmdlIFsxLCAzNjZdIn0sCiAgICAgeyJ0bV9pc2RzdCIsICIxIGlmIHN1bW1lciB0aW1lIGlzIGluIGVmZmVjdCwgMCBpZiBub3QsIGFuZCAtMSBpZiB1bmtub3duIn0sCi0jaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHsidG1fem9uZSIsICJhYmJyZXZpYXRpb24gb2YgdGltZXpvbmUgbmFtZSJ9LAogICAgIHsidG1fZ210b2ZmIiwgIm9mZnNldCBmcm9tIFVUQyBpbiBzZWNvbmRzIn0sCi0jZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogICAgIHswfQogfTsKIApAQCAtMjc1LDcgKzI3NywxMSBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi10bXRvdHVwbGUoc3RydWN0IHRtICpwKQordG10b3R1cGxlKHN0cnVjdCB0bSAqcAorI2lmbmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgICAgICwgY29uc3QgY2hhciAqem9uZSwgaW50IGdtdG9mZgorI2VuZGlmCispCiB7CiAgICAgUHlPYmplY3QgKnYgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmU3RydWN0VGltZVR5cGUpOwogICAgIGlmICh2ID09IE5VTEwpCkBAIC0yOTYsNiArMzAyLDEwIEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA5LAogICAgICAgICBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHAtPnRtX3pvbmUsICJzdXJyb2dhdGVlc2NhcGUiKSk7CiAgICAgU0VUKDEwLCBwLT50bV9nbXRvZmYpOworI2Vsc2UKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDksCisgICAgICAgIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpKTsKKyAgICBTRVQoMTAsIGdtdG9mZik7CiAjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogI3VuZGVmIFNFVAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CkBAIC0zMTEsNyArMzIxLDcgQEAKICAgIFJldHVybnMgbm9uLXplcm8gb24gc3VjY2VzcyAocGFyYWxsZWxzIFB5QXJnX1BhcnNlVHVwbGUpLgogKi8KIHN0YXRpYyBpbnQKLXBhcnNlX3RpbWVfdF9hcmdzKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIHRpbWVfdCAqcHdoZW4pCitwYXJzZV90aW1lX3RfYXJncyhQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCB0aW1lX3QgKnB3aGVuKQogewogICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CiAgICAgdGltZV90IHdoZW50OwpAQCAtMzMzLDI0ICszNDMsMzQgQEAKIHRpbWVfZ210aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICB0aW1lX3Qgd2hlbjsKLSAgICBzdHJ1Y3QgdG0gYnVmLCAqbG9jYWw7CisgICAgc3RydWN0IHRtIGJ1ZjsKIAogICAgIGlmICghcGFyc2VfdGltZV90X2FyZ3MoYXJncywgInxPOmdtdGltZSIsICZ3aGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBlcnJubyA9IDA7Ci0gICAgbG9jYWwgPSBnbXRpbWUoJndoZW4pOwotICAgIGlmIChsb2NhbCA9PSBOVUxMKSB7Ci0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICB9Ci0gICAgYnVmID0gKmxvY2FsOworICAgIGlmIChfUHlUaW1lX2dtdGltZSh3aGVuLCAmYnVmKSAhPSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCiAgICAgcmV0dXJuIHRtdG90dXBsZSgmYnVmKTsKKyNlbHNlCisgICAgcmV0dXJuIHRtdG90dXBsZSgmYnVmLCAiVVRDIiwgMCk7CisjZW5kaWYKIH0KIAorI2lmbmRlZiBIQVZFX1RJTUVHTQorc3RhdGljIHRpbWVfdAordGltZWdtKHN0cnVjdCB0bSAqcCkKK3sKKyAgICAvKiBYWFg6IHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gd2lsbCBub3Qgd29yayBmb3IgdG1feWVhciA8IDE5NzAuCisgICAgICAgYnV0IGl0IGlzIGxpa2VseSB0aGF0IHBsYXRmb3JtcyB0aGF0IGRvbid0IGhhdmUgdGltZWdtIGRvIG5vdCBzdXBwb3J0CisgICAgICAgbmVnYXRpdmUgdGltZXN0YW1wcyBhbnl3YXlzLiAqLworICAgIHJldHVybiBwLT50bV9zZWMgKyBwLT50bV9taW4qNjAgKyBwLT50bV9ob3VyKjM2MDAgKyBwLT50bV95ZGF5Kjg2NDAwICsKKyAgICAgICAgKHAtPnRtX3llYXItNzApKjMxNTM2MDAwICsgKChwLT50bV95ZWFyLTY5KS80KSo4NjQwMCAtCisgICAgICAgICgocC0+dG1feWVhci0xKS8xMDApKjg2NDAwICsgKChwLT50bV95ZWFyKzI5OSkvNDAwKSo4NjQwMDsKK30KKyNlbmRpZgorCiBQeURvY19TVFJWQVIoZ210aW1lX2RvYywKICJnbXRpbWUoW3NlY29uZHNdKSAtPiAodG1feWVhciwgdG1fbW9uLCB0bV9tZGF5LCB0bV9ob3VyLCB0bV9taW4sXG5cCiAgICAgICAgICAgICAgICAgICAgICAgIHRtX3NlYywgdG1fd2RheSwgdG1feWRheSwgdG1faXNkc3QpXG5cCkBAIC0zNjEsMjYgKzM4MSw2IEBACiBJZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgdGhlIHRtX2dtdG9mZiBhbmQgdG1fem9uZSwgdGhleSBhcmUgYXZhaWxhYmxlIGFzXG5cCiBhdHRyaWJ1dGVzIG9ubHkuIik7CiAKLXN0YXRpYyBpbnQKLXB5bG9jYWx0aW1lKHRpbWVfdCAqdGltZXAsIHN0cnVjdCB0bSAqcmVzdWx0KQotewotICAgIHN0cnVjdCB0bSAqbG9jYWw7Ci0KLSAgICBhc3NlcnQgKHRpbWVwICE9IE5VTEwpOwotICAgIGxvY2FsID0gbG9jYWx0aW1lKHRpbWVwKTsKLSAgICBpZiAobG9jYWwgPT0gTlVMTCkgewotICAgICAgICAvKiB1bmNvbnZlcnRpYmxlIHRpbWUgKi8KLSNpZmRlZiBFSU5WQUwKLSAgICAgICAgaWYgKGVycm5vID09IDApCi0gICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKLSNlbmRpZgotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgKnJlc3VsdCA9ICpsb2NhbDsKLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfbG9jYWx0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTM4OSw5ICszODksMjAgQEAKIAogICAgIGlmICghcGFyc2VfdGltZV90X2FyZ3MoYXJncywgInxPOmxvY2FsdGltZSIsICZ3aGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHB5bG9jYWx0aW1lKCZ3aGVuLCAmYnVmKSA9PSAtMSkKKyAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUod2hlbiwgJmJ1ZikgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1Zik7CisjZWxzZQorICAgIHsKKyAgICAgICAgc3RydWN0IHRtIGxvY2FsID0gYnVmOworICAgICAgICBjaGFyIHpvbmVbMTAwXTsKKyAgICAgICAgaW50IGdtdG9mZjsKKyAgICAgICAgc3RyZnRpbWUoem9uZSwgc2l6ZW9mKGJ1ZiksICIlWiIsICZidWYpOworICAgICAgICBnbXRvZmYgPSB0aW1lZ20oJmJ1ZikgLSB3aGVuOworICAgICAgICByZXR1cm4gdG10b3R1cGxlKCZsb2NhbCwgem9uZSwgZ210b2ZmKTsKKyAgICB9CisjZW5kaWYKIH0KIAogUHlEb2NfU1RSVkFSKGxvY2FsdGltZV9kb2MsCkBAIC01NzMsNyArNTg0LDcgQEAKIAogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBpZiAocHlsb2NhbHRpbWUoJnR0LCAmYnVmKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHR0LCAmYnVmKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQpAQCAtNzMyLDEwICs3NDMsMTAgQEAKIHsKICAgICAvKiBJbnNwaXJlZCBieSBPcGVuIEdyb3VwIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgYXQKICAgICAgKiBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9hc2N0aW1lLmh0bWwgKi8KLSAgICBzdGF0aWMgY2hhciB3ZGF5X25hbWVbN11bNF0gPSB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgd2RheV9uYW1lWzddWzRdID0gewogICAgICAgICAiU3VuIiwgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IgogICAgIH07Ci0gICAgc3RhdGljIGNoYXIgbW9uX25hbWVbMTJdWzRdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyIG1vbl9uYW1lWzEyXVs0XSA9IHsKICAgICAgICAgIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwKICAgICAgICAgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIgogICAgIH07CkBAIC03NTgsNyArNzY5LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHR1cCA9PSBOVUxMKSB7CiAgICAgICAgIHRpbWVfdCB0dCA9IHRpbWUoTlVMTCk7Ci0gICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUodHQsICZidWYpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIH0gZWxzZSBpZiAoIWdldHRtYXJnKHR1cCwgJmJ1ZikgfHwgIWNoZWNrdG0oJmJ1ZikpCkBAIC03ODAsNyArNzkxLDcgQEAKICAgICBzdHJ1Y3QgdG0gYnVmOwogICAgIGlmICghcGFyc2VfdGltZV90X2FyZ3MoYXJncywgInxPOmN0aW1lIiwgJnR0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHR0LCAmYnVmKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gX2FzY3RpbWUoJmJ1Zik7CiB9CkBAIC0xMDM0LDYgKzEwNDUsNyBAQAogICAgIH0KICNlbmRpZgogCisgICAgLyogQ3VycmVudGx5LCBQeXRob24gMyByZXF1aXJlcyBjbG9jaygpIHRvIGJ1aWxkOiBzZWUgaXNzdWUgIzIyNjI0ICovCiAgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CiAjZW5kaWYKIH0KQEAgLTExNDUsNiArMTE1NywyNyBAQAogR2V0IGluZm9ybWF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2suIik7CiAKIHN0YXRpYyB2b2lkCitnZXRfem9uZShjaGFyICp6b25lLCBpbnQgbiwgc3RydWN0IHRtICpwKQoreworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICBzdHJuY3B5KHpvbmUsIHAtPnRtX3pvbmUgPyBwLT50bV96b25lIDogIiAgICIsIG4pOworI2Vsc2UKKyAgICB0enNldCgpOworICAgIHN0cmZ0aW1lKHpvbmUsIG4sICIlWiIsIHApOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK2dldF9nbXRvZmYodGltZV90IHQsIHN0cnVjdCB0bSAqcCkKK3sKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgcmV0dXJuIHAtPnRtX2dtdG9mZjsKKyNlbHNlCisgICAgcmV0dXJuIHRpbWVnbShwKSAtIHQ7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQKIFB5SW5pdF90aW1lem9uZShQeU9iamVjdCAqbSkgewogICAgIC8qIFRoaXMgY29kZSBtb3ZlZCBmcm9tIFB5SW5pdF90aW1lIHdob2xlc2FsZSB0byBhbGxvdyBjYWxsaW5nIGl0IGZyb20KICAgICB0aW1lX3R6c2V0LiBJbiB0aGUgZnV0dXJlLCBzb21lIHBhcnRzIG9mIGl0IGNhbiBiZSBtb3ZlZCBiYWNrCkBAIC0xMTc2LDIyICsxMjA5LDIxIEBACiAgICAgb3R6MSA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUodHpuYW1lWzFdLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0em5hbWUiLCBQeV9CdWlsZFZhbHVlKCIoTk4pIiwgb3R6MCwgb3R6MSkpOwogI2Vsc2UgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KLSNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCiAgICAgewogI2RlZmluZSBZRUFSICgodGltZV90KSgoMzY1ICogMjQgKyA2KSAqIDM2MDApKQogICAgICAgICB0aW1lX3QgdDsKLSAgICAgICAgc3RydWN0IHRtICpwOworICAgICAgICBzdHJ1Y3QgdG0gcDsKICAgICAgICAgbG9uZyBqYW56b25lLCBqdWx5em9uZTsKICAgICAgICAgY2hhciBqYW5uYW1lWzEwXSwganVseW5hbWVbMTBdOwogICAgICAgICB0ID0gKHRpbWUoKHRpbWVfdCAqKTApIC8gWUVBUikgKiBZRUFSOwotICAgICAgICBwID0gbG9jYWx0aW1lKCZ0KTsKLSAgICAgICAgamFuem9uZSA9IC1wLT50bV9nbXRvZmY7Ci0gICAgICAgIHN0cm5jcHkoamFubmFtZSwgcC0+dG1fem9uZSA/IHAtPnRtX3pvbmUgOiAiICAgIiwgOSk7CisgICAgICAgIF9QeVRpbWVfbG9jYWx0aW1lKHQsICZwKTsKKyAgICAgICAgZ2V0X3pvbmUoamFubmFtZSwgOSwgJnApOworICAgICAgICBqYW56b25lID0gLWdldF9nbXRvZmYodCwgJnApOwogICAgICAgICBqYW5uYW1lWzldID0gJ1wwJzsKICAgICAgICAgdCArPSBZRUFSLzI7Ci0gICAgICAgIHAgPSBsb2NhbHRpbWUoJnQpOwotICAgICAgICBqdWx5em9uZSA9IC1wLT50bV9nbXRvZmY7Ci0gICAgICAgIHN0cm5jcHkoanVseW5hbWUsIHAtPnRtX3pvbmUgPyBwLT50bV96b25lIDogIiAgICIsIDkpOworICAgICAgICBfUHlUaW1lX2xvY2FsdGltZSh0LCAmcCk7CisgICAgICAgIGdldF96b25lKGp1bHluYW1lLCA5LCAmcCk7CisgICAgICAgIGp1bHl6b25lID0gLWdldF9nbXRvZmYodCwgJnApOwogICAgICAgICBqdWx5bmFtZVs5XSA9ICdcMCc7CiAKICAgICAgICAgaWYoIGphbnpvbmUgPCBqdWx5em9uZSApIHsKQEAgLTEyMTMsOCArMTI0NSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYW5uYW1lLCBqdWx5bmFtZSkpOwogICAgICAgICB9CiAgICAgfQotI2Vsc2UKLSNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAjaWZkZWYgX19DWUdXSU5fXwogICAgIHR6c2V0KCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgInRpbWV6b25lIiwgX3RpbWV6b25lKTsKQEAgLTEyMjQsMjUgKzEyNTQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlKCIoenopIiwgX3R6bmFtZVswXSwgX3R6bmFtZVsxXSkpOwogI2VuZGlmIC8qIF9fQ1lHV0lOX18gKi8KICNlbmRpZiAvKiAhSEFWRV9UWk5BTUUgfHwgX19HTElCQ19fIHx8IF9fQ1lHV0lOX18qLwotCi0jaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUkVBTFRJTUUpOwotI2lmZGVmIENMT0NLX01PTk9UT05JQwotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQyk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19NT05PVE9OSUNfUkFXCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDX1JBVyk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19ISUdIUkVTCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfSElHSFJFUyk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19USFJFQURfQ1BVVElNRV9JRCk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KIH0KIAogCkBAIC0xMjUzLDcgKzEyNjQsMTEgQEAKICNlbmRpZgogI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQogICAgIHsiY2xvY2tfZ2V0dGltZSIsICAgdGltZV9jbG9ja19nZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHRpbWVfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfQ0xPQ0tfU0VUVElNRQogICAgIHsiY2xvY2tfc2V0dGltZSIsICAgdGltZV9jbG9ja19zZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX3NldHRpbWVfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUUkVTCiAgICAgeyJjbG9ja19nZXRyZXMiLCAgICB0aW1lX2Nsb2NrX2dldHJlcywgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXRyZXNfZG9jfSwKICNlbmRpZgogICAgIHsic2xlZXAiLCAgICAgICAgICAgdGltZV9zbGVlcCwgTUVUSF9PLCBzbGVlcF9kb2N9LApAQCAtMTM0OSwxNyArMTM2NCwzMiBAQAogICAgIC8qIFNldCwgb3IgcmVzZXQsIG1vZHVsZSB2YXJpYWJsZXMgbGlrZSB0aW1lLnRpbWV6b25lICovCiAgICAgUHlJbml0X3RpbWV6b25lKG0pOwogCisjaWZkZWYgQ0xPQ0tfUkVBTFRJTUUKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19SRUFMVElNRSk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19NT05PVE9OSUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDX1JBVworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQ19SQVcpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfSElHSFJFUworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX0hJR0hSRVMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpOworI2VuZGlmCisKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU3RydWN0VGltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3RpbWVfdHlwZV9kZXNjKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKCZTdHJ1Y3RUaW1lVHlwZSk7Ci0jaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfU1RSVUNUX1RNX0lURU1TIiwgMTEpOwotI2Vsc2UKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDkpOwotI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdHJ1Y3RfdGltZSIsIChQeU9iamVjdCopICZTdHJ1Y3RUaW1lVHlwZSk7CiAgICAgaW5pdGlhbGl6ZWQgPSAxOwogICAgIHJldHVybiBtOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YS5jIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCmluZGV4IDFmOWJhNzguLjllNzFlMDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGEuYworKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGNhdGVnb3J5X2NoYW5nZWQ7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBkZWNpbWFsX2NoYW5nZWQ7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBtaXJyb3JlZF9jaGFuZ2VkOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VkOwogICAgIGNvbnN0IGRvdWJsZSBudW1lcmljX2NoYW5nZWQ7CiB9IGNoYW5nZV9yZWNvcmQ7CiAKQEAgLTM3NSw2ICszNzYsOCBAQAogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKICAgICAgICAgaWYgKG9sZC0+Y2F0ZWdvcnlfY2hhbmdlZCA9PSAwKQogICAgICAgICAgICAgaW5kZXggPSAwOyAvKiB1bmFzc2lnbmVkICovCisgICAgICAgIGVsc2UgaWYgKG9sZC0+ZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VkICE9IDB4RkYpCisgICAgICAgICAgICBpbmRleCA9IG9sZC0+ZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VkOwogICAgIH0KICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoX1B5VW5pY29kZV9FYXN0QXNpYW5XaWR0aE5hbWVzW2luZGV4XSk7CiB9CkBAIC04ODQsNyArODg3LDcgQEAKICAgICByZXR1cm4gaDsKIH0KIAotc3RhdGljIGNoYXIgKmhhbmd1bF9zeWxsYWJsZXNbXVszXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaGFuZ3VsX3N5bGxhYmxlc1tdWzNdID0gewogICAgIHsgIkciLCAgIkEiLCAgICIiICAgfSwKICAgICB7ICJHRyIsICJBRSIsICAiRyIgIH0sCiAgICAgeyAiTiIsICAiWUEiLCAgIkdHIiB9LApAQCAtMTA1Nyw3ICsxMDYwLDcgQEAKICAgICBpbnQgaSwgbGVuMTsKICAgICAqbGVuID0gLTE7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgY2hhciAqcyA9IGhhbmd1bF9zeWxsYWJsZXNbaV1bY29sdW1uXTsKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IGhhbmd1bF9zeWxsYWJsZXNbaV1bY29sdW1uXTsKICAgICAgICAgbGVuMSA9IFB5X1NBRkVfRE9XTkNBU1Qoc3RybGVuKHMpLCBzaXplX3QsIGludCk7CiAgICAgICAgIGlmIChsZW4xIDw9ICpsZW4pCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaCBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAppbmRleCA4OWQ4NzY4Li5lYTQwYzJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKKysrIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCkBAIC0xLDYgKzEsNiBAQAogLyogdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgMy4yICovCiAKLSNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI4LjAuMCIKKyNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI5LjAuMCIKIC8qIGEgbGlzdCBvZiB1bmlxdWUgZGF0YWJhc2UgcmVjb3JkcyAqLwogY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCBfUHlVbmljb2RlX0RhdGFiYXNlX1JlY29yZHNbXSA9IHsKICAgICB7MCwgMCwgMCwgMCwgMCwgMH0sCkBAIC0yNDIsMTIgKzI0MiwxMyBAQAogICAgIHsyNywgMCwgMTEsIDAsIDUsIDB9LAogICAgIHsyNywgMCwgMTksIDEsIDQsIDEzNn0sCiAgICAgezI3LCAwLCAxOSwgMSwgNCwgMTB9LAorICAgIHszMCwgMCwgMTksIDAsIDIsIDB9LAogICAgIHsyMiwgMCwgMTksIDEsIDIsIDE3MH0sCiAgICAgezIzLCAwLCAxOSwgMSwgMiwgMTcwfSwKICAgICB7MzAsIDAsIDEsIDAsIDQsIDEzNn0sCiAgICAgezksIDAsIDE5LCAwLCA0LCAwfSwKKyAgICB7MjcsIDAsIDE5LCAwLCAyLCAwfSwKICAgICB7MjcsIDAsIDE5LCAxLCA1LCAxNzB9LAotICAgIHszMCwgMCwgMTksIDAsIDIsIDB9LAogICAgIHszMCwgMCwgMTksIDAsIDIsIDEzNn0sCiAgICAgezEwLCAwLCAxOCwgMCwgMCwgMTM2fSwKICAgICB7MjYsIDAsIDE5LCAwLCAyLCAwfSwKQEAgLTMyOSw2ICszMzAsNyBAQAogICAgIHsxLCAwLCA0LCAwLCA1LCAwfSwKICAgICB7MiwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezksIDAsIDEyLCAwLCA1LCAwfSwKKyAgICB7NCwgOSwgMSwgMCwgNSwgMH0sCiAgICAgezMwLCAwLCAxLCAwLCA1LCAxNzB9LAogICAgIHs1LCAyMTYsIDEsIDAsIDUsIDB9LAogICAgIHs1LCAyMjYsIDEsIDAsIDUsIDB9LApAQCAtMzM2LDYgKzMzOCw3IEBACiAgICAgezcsIDAsIDksIDAsIDUsIDEzNn0sCiAgICAgezMwLCAwLCAxLCAwLCA1LCAxMzZ9LAogICAgIHszMCwgMCwgMSwgMCwgNCwgMH0sCisgICAgezI5LCAwLCAxOSwgMCwgMiwgMH0sCiB9OwogCiAvKiBSZWluZGV4aW5nIG9mIE5GQyBmaXJzdCBjaGFyYWN0ZXJzLiAqLwpAQCAtNzMwLDM5ICs3MzMsMzkgQEAKICAgICAxMjUsIDEyNiwgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgCiAgICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxMzgsIDQxLCA0MSwgMTQ1LCAxMzgsIDE0NiwgMTQ3LCAxNDgsIAogICAgIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTM4LCAxMzgsIDE1NiwgMTM4LCAxMzgsIDEzOCwgMTU3LCAKLSAgICAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxMzgsIDEzOCwgMTY0LCAxMzgsIDE2NSwgMTY2LCAxNjcsIDE2OCwgCi0gICAgMTM4LCAxMzgsIDE2OSwgMTM4LCAxMzgsIDEzOCwgMTcwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzEsIDE3MiwgNDEsIDE3MywgMTM4LCAxMzgsIAorICAgIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDEzOCwgMTY0LCAxNjUsIDEzOCwgMTY2LCAxNjcsIDE2OCwgMTY5LCAKKyAgICAxMzgsIDEzOCwgMTcwLCAxMzgsIDEzOCwgMTM4LCAxNzEsIDEzOCwgMTM4LCAxNzIsIDE3MywgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3NCwgMTc1LCA0MSwgMTc2LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3NCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3NywgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc1LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTgwLCAxODEsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTgzLCAxODQsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxODUsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxODYsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxODgsIDE4OSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxODMsIDE4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxODUsIAotICAgIDE4NiwgMTg3LCAxODgsIDEzOCwgMTg5LCAxMzgsIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgMTk4LCAxOTksIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAyMDAsIDIwMSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAyMDIsIDIwMywgMTM4LCAxMzgsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAxMzgsIDIwOSwgMjEwLCAyMDksIDIwOSwgCi0gICAgMjExLCAyMTIsIDIwOSwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDE5MCwgCisgICAgMTkxLCAxOTIsIDE5MywgMTM4LCAxOTQsIDEzOCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAyMDMsIDIwNCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAyMDUsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDIwNiwgMjA3LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDIwOSwgMjEwLCAxMzgsIDEzOCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDEzOCwgMjE2LCAyMTcsIDIxOCwgMjE5LCAKKyAgICAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCkBAIC03ODcsMTkgKzc5MCwxOSBAQAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjMwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjIxLCAxMDEsIDIyMiwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIzMSwgMTAxLCAyMzIsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAyMjMsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEwMSwgMjMzLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEyMiwgMTIyLCAxMjIsIDEyMiwgMjI0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMjIsIDEyMiwgMTIyLCAxMjIsIDIzNCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCkBAIC0xMjAyLDcgKzEyMDUsNyBAQAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDIyNSwgMTM4LCAyMjYsIDIyNywgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAyMzUsIDEzOCwgMjM2LCAyMzcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCkBAIC0xMjc1LDcgKzEyNzgsNyBAQAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAotICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMjI4LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDIzOCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCkBAIC0xMzEyLDcgKzEzMTUsNyBAQAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAotICAgIDEyMSwgMjI4LCAKKyAgICAxMjEsIDIzOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0xNDQ0LDE3MCArMTQ0NywxNzEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIAotICAgIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIxLCAxMjIsIDEyMywgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDE0MCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDE0MSwgNDgsIDEzOSwgMTM5LCAxMzksIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgMTM5LCAKLSAgICAxMzksIDQ4LCA4MSwgODYsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgCi0gICAgMTQzLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCA4MywgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIAotICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAKLSAgICAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgCi0gICAgMCwgMTQzLCAxNDMsIDAsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDg1LCA4NSwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgODAsIDg1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDE0MywgMCwgNDgsIDE0MywgMCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAKLSAgICAwLCAwLCAxMzUsIDEzNSwgMCwgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDMsIDE0MywgMTQzLCA0OCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAwLCAxMzUsIDEzNSwgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIAotICAgIDE0NywgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5LCAxNDYsIDAsIDAsIDAsIDAsIAotICAgIDE0MywgMTQzLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MCwgNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEzNSwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgMTQwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzUsIDEzOSwgMTM5LCAwLCAwLCAwLCAxMzksIDEzOSwgMTM5LCAwLCAxNDcsIAotICAgIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODUsIDI2LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAKLSAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgMCwgMCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMTM1LCAxMzUsIDE1MCwgMCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MiwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCAwLCAKLSAgICAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxNTQsIDE0NywgMTM5LCAxNDYsIDEzOSwgMTM5LCAwLCAxNTQsIDE0NywgCi0gICAgMTQ3LCAwLCAxNDcsIDE0NywgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgCi0gICAgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDAsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEwOCwgCisgICAgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDEyMSwgMTIyLCAxMjMsIDgxLCAKKyAgICA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzksIDEzOSwgCi0gICAgMTM5LCAwLCAxNDcsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICAwLCAwLCAxNTUsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMCwgMTM5LCAxMzksIAotICAgIDE0NywgMTM5LCAxNDcsIDE0NywgMTQ3LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU3LCAxNTcsIDE0MiwgMCwgMCwgMCwgMCwgODUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDUzLCAxMzUsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTM1LCAxMzUsIDEzNSwgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAotICAgIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIAotICAgIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAKLSAgICAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIAotICAgIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCAKLSAgICA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgCi0gICAgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgCi0gICAgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgCi0gICAgMTY2LCAxNjYsIDEzNSwgMTM5LCAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIAotICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgCi0gICAgMTM5LCAxMzUsIDE0OSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIAotICAgIDE0MiwgMTM5LCAxMzksIDEzNSwgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxMzksIDEzOSwgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgNTEsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM5LCAxNDEsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDEzOSwgMTM5LCA0OCwgODEsIDg2LCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCA4MywgODMsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NSwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAxNDMsIDAsIDQ4LCAxNDMsIDAsIDQ4LCA0OCwgMCwgMCwgMTQ1LCAwLCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDAsIDAsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDE0MywgNDgsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgMTM5LCAxMzksIDE0MiwgMCwgMCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDg1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM1LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAxNDcsIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE0OSwgMTQ2LCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODAsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDE0MCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM1LCAxMzksIDEzOSwgMCwgCisgICAgMCwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAxNDcsIDE0NywgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDg1LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgNDgsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAKKyAgICAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAxNDcsIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgNDgsIDgwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCAxNDYsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgNDgsIDQ4LCA0OCwgMTM1LCAKKyAgICAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDEzOSwgCisgICAgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDE1NSwgMCwgMCwgMCwgCisgICAgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgMTQ3LCAxMzksIDE0NywgMTQ3LCAKKyAgICAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAwLCAwLCAxMzksIDEzOSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTU3LCAxNTcsIDE0MiwgMCwgMCwgMCwgMCwgODUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzUsIDE1OCwgMTU4LCAKKyAgICAxNTgsIDE1OCwgMTM1LCAxMzUsIDEzNSwgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCAKKyAgICA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIAorICAgIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDEzNSwgMTM5LCAKKyAgICAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDE0OSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIDE0MiwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIAorICAgIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgODEsIDgxLCAKKyAgICA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDAsIDg0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCisgICAgODQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCkBAIC0xNjI3LDQ1ICsxNjMxLDQ1IEBACiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNjMsIDE2NCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNjMsIDE2NCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzUsIDEzNSwgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgMTczLCAxNzMsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM1LCAxNDIsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgCi0gICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxNDIsIDEzNSwgODMsIDgzLCA4MywgNTMsIDgzLCA4MywgODMsIDg1LCA0OCwgODEsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAKLSAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCA4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIAorICAgIDEzNSwgODMsIDgzLCA4MywgNTMsIDgzLCA4MywgODMsIDg1LCA0OCwgODEsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICA4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgODgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDg4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKICAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKICAgICAxMzksIDEzOSwgODcsIDgxLCA4NiwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDEzOCwgMTM4LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIApAQCAtMTcxNCwyNyArMTcxOCwyNyBAQAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgODMsIDgzLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIAotICAgIDgzLCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgMTc2LCAxNzYsIAotICAgIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA0OCwgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCi0gICAgODEsIDQ4LCA0OCwgMCwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODEsIDgxLCA4MSwgODMsIDE3NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4MSwgMTM5LCAKKyAgICAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDQ4LCA0OCwgNDgsIDQ4LCA4NiwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzOSwgMTM5LCA4MSwgNDgsIDQ4LCAwLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgCisgICAgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCiAgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCAxNzcsIAotICAgIDE3OCwgODYsIDE3OSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgCisgICAgODEsIDgxLCAxNzcsIDE3OCwgODYsIDE3OSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKICAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgwLCA4NiwgODEsIDg2LCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgODEsIDE4MCwgODYsIDgxLCA4NiwgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIApAQCAtMTc0MywzMzIgKzE3NDcsMzMzIEBACiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgxLCA0NywgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxODEsIDQ3LCA0NywgNDQsIDQ3LCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKLSAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIAotICAgIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMzgsIDAsIDM4LCAwLCAzOCwgMCwgCi0gICAgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCi0gICAgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCAwLCAwLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAxODMsIDU4LCAxODIsIDU4LCA1OCwgNzYsIDQzLCA0MywgCi0gICAgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDAsIDAsIAotICAgIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAwLCA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDQzLCA0MywgNDMsIDQzLCAKLSAgICAzOCwgMzgsIDM4LCAxODQsIDM4LCA3NiwgMTg1LCAxODUsIDAsIDAsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgCi0gICAgMzgsIDE4NCwgMTgzLCAxODUsIDU4LCAwLCAxODYsIDE4NiwgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKLSAgICAxODcsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTg4LCAxODksIDE5MCwgMTkxLCA4NCwgMTkwLCAxOTAsIDE5MCwgMjIsIDE5MiwgCi0gICAgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTMsIDE5NCwgMTk1LCAxOTYsIDIyLCAyMiwgMjIsIDEzOCwgMTk3LCAxOTcsIDE5NywgCi0gICAgMjIsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjEsIDIwNSwgMTEwLCAyMDUsIDIwNiwgMjA3LCAyMiwgCi0gICAgMTkyLCAxOTIsIDEzOCwgMjgsIDM2LCAyMiwgMTkyLCAxMzgsIDE5NywgMjA4LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDIwOSwgCi0gICAgMTYzLCAxNjQsIDE5MiwgMTkyLCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTM4LCAKLSAgICAyMDgsIDEzOCwgMTM4LCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg3LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMCwgMjEwLCAyMTEsIDIxMiwgMjEzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAyMTQsIAotICAgIDUxLCAwLCAwLCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIxNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMCwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCAKLSAgICA4NSwgODUsIDg1LCA4NSwgMjIwLCAyMjEsIDg1LCA4NSwgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIAotICAgIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgMTc2LCAxNzYsIDgxLCA4MSwgODEsIDgxLCAxNzYsIDE3NiwgMTc2LCA4MSwgODEsIAotICAgIDgyLCA4MiwgODIsIDgyLCA4MSwgODIsIDgyLCA4MiwgMTc2LCAxNzYsIDgxLCA4NiwgODEsIDE3NiwgMTc2LCA4NiwgODYsIAotICAgIDg2LCA4NiwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMiwgMjIyLCA0OSwgCi0gICAgMjIzLCAyNiwgMjIzLCAyMjIsIDQ5LCAyNiwgMjIzLCAzNSwgNDksIDQ5LCA0OSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0NiwgCi0gICAgMjYsIDQ5LCAyMjMsIDI2LCA3OCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAyNiwgMjYsIDIyMiwgMjIzLCAyMjMsIDI2LCA0OSwgCi0gICAgMjYsIDIyNCwgMjYsIDQ5LCAyNiwgMTg0LCAyMjQsIDQ5LCA0OSwgMjI1LCAzNSwgNDksIDQ5LCA0NCwgNDksIDM1LCAxNTYsIAotICAgIDE1NiwgMTU2LCAxNTYsIDM1LCAyNiwgMjIyLCAzNSwgMzUsIDQ5LCA0OSwgMjI2LCA3OCwgNzgsIDc4LCA3OCwgNDksIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAyNiwgNzgsIDI2LCAyNiwgNDcsIDgwLCAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDIyNywgMjI3LCAyMjcsIAotICAgIDIyNywgMjI3LCAyMjcsIDM3LCAzNywgMzcsIDM3LCAyMjcsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCi0gICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAxNzMsIDE3MywgMTczLCA0NCwgCi0gICAgNDcsIDE3MywgMTczLCAxNzMsIDE3MywgMzcsIDI2LCAyNiwgMCwgMCwgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDIzMCwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDQwLCAKLSAgICAyMzIsIDIzMywgMjMzLCAyMzQsIDc4LCA3OCwgNDAsIDIzMywgMjM0LCAyMzIsIDIzMywgMjM0LCAyMzIsIDc4LCA0MCwgNzgsIAotICAgIDIzMywgMjM1LCAyMzYsIDc4LCAyMzMsIDIzMiwgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMzLCA0MCwgMjMzLCAKLSAgICAyMzMsIDIzMiwgMjMyLCA0MCwgMjM0LCA0MCwgMjM0LCA0MCwgNDAsIDQwLCA0MCwgMjMzLCAyMzcsIDIyNiwgMjMzLCAyMjYsIAotICAgIDIyNiwgMjMyLCAyMzIsIDIzMiwgNDAsIDQwLCA0MCwgNDAsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMywgMjMzLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMywgMjM0LCAyMzIsIDIzMiwgMjMzLCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKLSAgICAyMzgsIDQwLCAyMzQsIDc4LCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMiwgMjMyLCAyMzMsIDIzMywgNzgsIDIzMCwgMjM4LCAKLSAgICAyMzgsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzIsIAotICAgIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA0MCwgNzgsIDc4LCAyMzIsIDQwLCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNDAsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCAyMzIsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAotICAgIDI0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKKyAgICAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIAorICAgIDM4LCAwLCAzOCwgMCwgMzgsIDAsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgMzgsIDM4LCAzOCwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIAorICAgIDE4MiwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKKyAgICAxODMsIDE4MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKKyAgICAxODMsIDE4MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKKyAgICAxODMsIDE4MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMTgzLCA1OCwgMTgyLCAKKyAgICA1OCwgNTgsIDc2LCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgNzYsIDc2LCA3NiwgNDMsIAorICAgIDQzLCA0MywgMTgyLCAwLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMCwgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgCisgICAgMTgyLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAzOCwgNzYsIDE4NSwgMTg1LCAwLCAwLCA0MywgNDMsIDQzLCAKKyAgICAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgMTg1LCA1OCwgMCwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE4OCwgMTg5LCAxOTAsIDE5MSwgODQsIDE5MCwgCisgICAgMTkwLCAxOTAsIDIyLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAyMiwgMjIsIDIyLCAKKyAgICAxMzgsIDE5NywgMTk3LCAxOTcsIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIxLCAyMDUsIDExMCwgCisgICAgMjA1LCAyMDYsIDIwNywgMjIsIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgMTM4LCAxOTcsIDIwOCwgMjA4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAyMDksIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMjE0LCA1MSwgMCwgMCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAKKyAgICAyMTcsIDIxOCwgMjE5LCAyMTQsIDM0LCAzNCwgMzQsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIAorICAgIDIxNiwgMjE3LCAyMTgsIDAsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAwLCAKKyAgICAwLCAwLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDIyMCwgMjIxLCA4NSwgODUsIDIzLCA4NSwgODUsIDg1LCAKKyAgICA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NiwgMTc2LCA4MSwgODEsIDgxLCA4MSwgCisgICAgMTc2LCAxNzYsIDE3NiwgODEsIDgxLCA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NiwgMTc2LCA4MSwgODYsIAorICAgIDgxLCAxNzYsIDE3NiwgODYsIDg2LCA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyMjIsIDIyMiwgNDksIDIyMywgMjYsIDIyMywgMjIyLCA0OSwgMjYsIDIyMywgMzUsIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDYsIDI2LCA0OSwgMjIzLCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIDI2LCAyMjIsIAorICAgIDIyMywgMjIzLCAyNiwgNDksIDI2LCAyMjQsIDI2LCA0OSwgMjYsIDE4NCwgMjI0LCA0OSwgNDksIDIyNSwgMzUsIDQ5LCA0OSwgCisgICAgNDQsIDQ5LCAzNSwgMTU2LCAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIyMiwgMzUsIDM1LCA0OSwgNDksIDIyNiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjI3LCAyMjcsIDIyNywgMzcsIAorICAgIDM3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDM3LCAzNywgMjI3LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIAorICAgIDIyOSwgMTczLCAxNzMsIDE3MywgNDQsIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAorICAgIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzAsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDc4LCAyNiwgCisgICAgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzEsIDIzMCwgMjMwLCAyNiwgMjYsIDQwLCAyNiwgNDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA0MCwgMjMyLCAyMzMsIDIzMywgMjM0LCA3OCwgNzgsIDQwLCAyMzMsIDIzNCwgMjMyLCAKKyAgICAyMzMsIDIzNCwgMjMyLCA3OCwgNDAsIDc4LCAyMzMsIDIzNSwgMjM2LCA3OCwgMjMzLCAyMzIsIDc4LCA3OCwgNzgsIDIzMywgCisgICAgMjMyLCAyMzIsIDIzMywgNDAsIDIzMywgMjMzLCAyMzIsIDIzMiwgNDAsIDIzNCwgNDAsIDIzNCwgNDAsIDQwLCA0MCwgNDAsIAorICAgIDIzMywgMjM3LCAyMjYsIDIzMywgMjI2LCAyMjYsIDIzMiwgMjMyLCAyMzIsIDQwLCA0MCwgNDAsIDQwLCA3OCwgMjMyLCA3OCwgCisgICAgMjMyLCAyMzMsIDIzMywgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzMsIAorICAgIDIzNCwgMjMyLCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjM4LCA0MCwgMjM0LCA3OCwgMjMzLCAyMzMsIDIzMywgMjMzLCAyMzIsIAorICAgIDIzMiwgMjMzLCAyMzMsIDc4LCAyMzAsIDIzOCwgMjM4LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgCisgICAgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIAorICAgIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgCisgICAgNDAsIDc4LCA3OCwgMjMyLCA0MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDQwLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAKKyAgICAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCAyMzIsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNDAsIDI0MSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAogICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAotICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDIyNywgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKLSAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMzAsIAorICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyMjcsIAorICAgIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAKKyAgICAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIAotICAgIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAotICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNDQsIDI0NCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAKKyAgICAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAyNiwgMzAsIDMwLCAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDIzOSwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzksIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyMzksIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzksIDIzOSwgMzAsIDIzOSwgMzAsIDMwLCAzMCwgMzAsIDIzOSwgMzAsIAorICAgIDMwLCAyMzksIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyMzksIAorICAgIDIzOSwgMjM5LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgCi0gICAgMTYzLCAxNjQsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMTUzLCAxNTMsIAorICAgIDE2MywgMTY0LCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDE1MywgMTUzLCAKICAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCi0gICAgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgNzgsIDc4LCAyMzIsIAotICAgIDIzMiwgMTYzLCAxNjQsIDc4LCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgOSwgMTAsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzIsIDc4LCA3OCwgCisgICAgMjMyLCAyMzIsIDE2MywgMTY0LCA3OCwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDE2MywgCi0gICAgMTY0LCA5LCAxMCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgCi0gICAgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDE2MywgMTY0LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAotICAgIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIyNiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMjYsIDIxNiwgCi0gICAgMjE2LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDE2MywgMTY0LCA5LCAxMCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAorICAgIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDE2MywgMTY0LCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIyNiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAKKyAgICAyMjYsIDIxNiwgMjE2LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDI0MywgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjQ1LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyMzksIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDcsIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDgxLCA4MSwgODEsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxNTMsIDEzOCwgMTM4LCA0NywgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA4MSwgODEsIDgxLCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIAorICAgIDEzOCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDcsIDQ3LCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCA4MywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUxLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODEsIDgxLCA4MSwgODEsIAogICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgCi0gICAgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAotICAgIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTk1LCAwLCAwLCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIAorICAgIDEzOCwgMTM4LCAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCA4NCwgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAKKyAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTk1LCAxMzgsIAorICAgIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDI0NiwgMjQ3LCAyNDcsIDI0NywgMjQ0LCAyNDgsIDE3MCwgMjQ5LCAyNTAsIDI1MSwgCi0gICAgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI0NCwgMjQ0LCAyNTAsIDI1MSwgMjUwLCAyNTEsIAotICAgIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU0LCAyNDQsIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAKLSAgICAyNDksIDI0OSwgMjQ5LCAyNDksIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyNTksIDI1MiwgMjQ4LCAyNDgsIDI0OCwgCi0gICAgMjQ4LCAyNDgsIDI0NSwgMjQ0LCAyNjAsIDI2MCwgMjYwLCAyNDgsIDE3MCwgMjQ3LCAyNDQsIDI2LCAwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIAotICAgIDE3MCwgMjYxLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMCwgCi0gICAgMCwgMjYyLCAyNjIsIDI2MywgMjYzLCAyNDgsIDI2NCwgMjY1LCAyNTIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIAotICAgIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI0NywgMjQ4LCAyNDgsIDI2NCwgMjY1LCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNDYsIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMjQ3LCAyNDgsIDI0OCwgMjQ4LCAyMzksIDI0OSwgMTcwLCAKKyAgICAyNTAsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjM5LCAyMzksIDI1MSwgCisgICAgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1LCAyNTUsIDIzOSwgMjUwLCAyNTAsIAorICAgIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyNjAsIDI2MCwgMjUzLCAKKyAgICAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ2LCAyMzksIDI2MSwgMjYxLCAyNjEsIDI0OSwgMTcwLCAyNDgsIDIzOSwgMjYsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAKKyAgICAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgCisgICAgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIAorICAgIDE3MCwgMTcwLCAwLCAwLCAyNjMsIDI2MywgMjY0LCAyNjQsIDI0OSwgMjY1LCAyNjYsIDI1MywgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIAorICAgIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDE3MCwgMjYyLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIAorICAgIDI2MiwgMjYyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjQ4LCAyNDksIDI0OSwgMjY1LCAyNjYsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDAsIDI2NiwgMjY2LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAwLCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAwLCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAKLSAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDUsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCi0gICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjY2LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAotICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI0NSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNDYsIDI0NiwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjQ2LCAyNzEsIDI3MSwgMjcxLCAyNzEsIAorICAgIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAKKyAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNDYsIDI0NiwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKQEAgLTIwODEsMjAgKzIwODYsMjAgQEAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjQ5LCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKQEAgLTIxMDMsMTI0ICsyMTA4LDExNSBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAotICAgIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDUzLCAKKyAgICA1MywgNTMsIDUzLCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA1MywgMTM4LCAxMzgsIDEzOCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNTEsIDgxLCA4MSwgNDgsIDQ4LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNTEsIAorICAgIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCi0gICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTQsIDU0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCAKKyAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTQsIDU0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUyLCAyNzEsIDI3MSwgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ4LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDUyLCAyNzIsIDI3MiwgNDQsIDQ3LCA0NCwgNDcsIDQ4LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDgwLCA4NSwgMjI1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIAorICAgIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM5LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDgwLCAKKyAgICA4NSwgMjI1LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgNDgsIAorICAgIDgzLCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDg2LCA4NiwgODYsIDgzLCAKKyAgICA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNTMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODAsIDgwLCA4MCwgNDgsIDEzOSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDQ4LCA4MSwgODEsIDg2LCA0OCwgNDgsIDgxLCA4MSwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA4MSwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgODMsIDgzLCA0OCwgNTMsIDUzLCAKKyAgICAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMjcyLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzOSwgMTM5LCA4MywgMTM5LCAxNDIsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCiAgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCA0OCwgODMsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIDg2LCA4NiwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIAotICAgIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxNzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCAwLCA1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAKLSAgICAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKLSAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MCwgODAsIDgwLCAKLSAgICA0OCwgMTM5LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA4MSwgNDgsIDgxLCA4MSwgODYsIDQ4LCA0OCwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgNDgsIAotICAgIDgxLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCA4MywgODMsIDQ4LCA1MywgNTMsIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAyNzEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDgzLCAxMzksIAotICAgIDE0MiwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MywgMjczLCAyNzMsIDI3MywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIApAQCAtMjIyOSw3ICsyMjI1LDggQEAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzQsIDI3NCwgCisgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDI3MywgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKQEAgLTIyMzgsMzggKzIyMzUsNDcgQEAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDE3MCwgMTcwLCAyNzQsIDE3MCwgMjc0LCAxNzAsIDE3MCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAxNzAsIDI3NCwgMTcwLCAyNzQsIDE3MCwgMTcwLCAyNzQsIDI3NCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDAsIDAsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAxNzAsIDE3MCwgMjc1LCAxNzAsIDI3NSwgMTcwLCAxNzAsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMTcwLCAyNzUsIDE3MCwgMjc1LCAxNzAsIDE3MCwgCisgICAgMjc1LCAyNzUsIDE3MCwgMTcwLCAxNzAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAwLCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMjc2LCAyNzUsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAKLSAgICAyNzcsIDI3NywgMjc3LCAyNzcsIDIxNSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCi0gICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMjc1LCAwLCAyNzUsIDI3NSwgMCwgCi0gICAgMjc1LCAyNzUsIDAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NywgMTMxLCAxMzEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI3NiwgMjc3LCAyNzYsIAorICAgIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDIxNSwgMjc2LCAyNzYsIDI3NiwgMjc2LCAKKyAgICAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAwLCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgCisgICAgMCwgMjc2LCAwLCAyNzYsIDI3NiwgMCwgMjc2LCAyNzYsIDAsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgCisgICAgMjc2LCAyNzYsIDI3OCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI3OCwgMjc4LCAKLSAgICAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAKKyAgICAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIApAQCAtMjI4NSwyNyArMjI5MSwyNyBAQAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyNzksIDE5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyODAsIDE5NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDI4MCwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MiwgMjgzLCAyODEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIAotICAgIDgxLCAyODEsIDI4NCwgMjg0LCAyODUsIDI4NSwgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgCi0gICAgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyNDcsIDI0NywgMjgyLCAyODMsIDI4MSwgMjgxLCAyODEsIAotICAgIDI4MSwgMjg1LCAyODUsIDI4NSwgMjg2LCAyODEsIDI4NiwgMCwgMjgxLCAyODYsIDI4MSwgMjgxLCAyODQsIDI4NywgMjg4LCAKLSAgICAyODcsIDI4OCwgMjg3LCAyODgsIDI4OSwgMjgxLCAyODEsIDI5MCwgMjkxLCAyOTIsIDI5MiwgMjkzLCAwLCAyODEsIDI5NCwgCi0gICAgMjg5LCAyODEsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDExOCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI4MSwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAyODIsIDI4MiwgMjgyLCAyODIsIDI4MiwgMjgyLCAKKyAgICAyODIsIDI4MywgMjg0LCAyODIsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIAorICAgIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCAyODIsIDI4NSwgMjg1LCAyODYsIDI4NiwgMjgzLCAyODQsIDI4MywgMjg0LCAKKyAgICAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyNDgsIDI0OCwgCisgICAgMjgzLCAyODQsIDI4MiwgMjgyLCAyODIsIDI4MiwgMjg2LCAyODYsIDI4NiwgMjg3LCAyODIsIDI4NywgMCwgMjgyLCAyODcsIAorICAgIDI4MiwgMjgyLCAyODUsIDI4OCwgMjg5LCAyODgsIDI4OSwgMjg4LCAyODksIDI5MCwgMjgyLCAyODIsIDI5MSwgMjkyLCAKKyAgICAyOTMsIDI5MywgMjk0LCAwLCAyODIsIDI5NSwgMjkwLCAyODIsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDExOCwgCisgICAgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIApAQCAtMjMxNCwxNjUgKzIzMjAsMTY1IEBACiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxNzQsIDAsIDI5NSwgMjk1LCAyOTYsIDI5NywgMjk2LCAyOTUsIDI5NSwgCi0gICAgMjk4LCAyOTksIDI5NSwgMzAwLCAzMDEsIDMwMiwgMzAxLCAzMDEsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAotICAgIDMwMywgMzAzLCAzMDMsIDMwMywgMzAxLCAyOTUsIDMwNCwgMzA1LCAzMDQsIDI5NSwgMjk1LCAzMDYsIDMwNiwgMzA2LCAKLSAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgCi0gICAgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMjk4LCAyOTUsIDI5OSwgMzA3LCAzMDgsIAotICAgIDMwNywgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKLSAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDI5OCwgCi0gICAgMzA1LCAyOTksIDMwNSwgMjk4LCAyOTksIDMxMCwgMzExLCAzMTIsIDMxMCwgMzEwLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxNCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTQsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMCwgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMCwgMCwgCi0gICAgMCwgMjk3LCAyOTcsIDMwNSwgMzA3LCAzMTUsIDI5NywgMjk3LCAwLCAzMTYsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE2LCAKLSAgICAzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMzE4LCAzMTgsIDI2LCAzMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMTc0LCAwLCAyOTYsIDI5NiwgCisgICAgMjk3LCAyOTgsIDI5NywgMjk2LCAyOTYsIDI5OSwgMzAwLCAyOTYsIDMwMSwgMzAyLCAzMDMsIDMwMiwgMzAyLCAzMDQsIAorICAgIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwMiwgMjk2LCAzMDUsIDMwNiwgMzA1LCAKKyAgICAyOTYsIDI5NiwgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCisgICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAorICAgIDI5OSwgMjk2LCAzMDAsIDMwOCwgMzA5LCAzMDgsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAKKyAgICAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgCisgICAgMzEwLCAzMTAsIDMxMCwgMzEwLCAyOTksIDMwNiwgMzAwLCAzMDYsIDI5OSwgMzAwLCAzMTEsIDMxMiwgMzEzLCAzMTEsIAorICAgIDMxMSwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTUsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNSwgMzE1LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIAorICAgIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIAorICAgIDAsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDAsIDI5OCwgMjk4LCAzMDYsIDMwOCwgMzE2LCAyOTgsIDI5OCwgMCwgMzE3LCAKKyAgICAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxNywgMzE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTksIDMxOSwgCisgICAgMzE5LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgODMsIDEzOCwgODMsIDAsIDAsIAorICAgIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCiAgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAogICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCi0gICAgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDE1MywgMjYsIDAsIDAsIDAsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYsIDMyMCwgMzIwLCAzMjAsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzIwLCAKICAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgODMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCisgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE1MywgMTUzLCAKKyAgICAyNiwgODAsIDgwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDg2LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTczLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMTA3LCAwLCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAorICAgIDAsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMTA3LCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA0LCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDAsIDEwNCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjMsIDMyMywgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAxMzUsIAotICAgIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAxMDcsIDEwNywgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDEwNywgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgODYsIAorICAgIDEzNSwgODEsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzYsIDg2LCAwLCAwLCAwLCAKLSAgICAwLCAxNDIsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzYsIDg2LCAwLCAKKyAgICAwLCAwLCAwLCAxNDIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDMyMSwgMzIxLCAxMDQsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDMyMiwgMzIyLCAxMDQsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIzLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODYsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODYsIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKKyAgICAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCkBAIC0yNDgzLDIxICsyNDg5LDIxIEBACiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKLSAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCi0gICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAotICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDAsIDAsIDAsIDAsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAogICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKICAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCi0gICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKICAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCi0gICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDAsIDEzOSwgMTM1LCAxMzksIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAorICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKKyAgICAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMCwgMTM5LCAxMzUsIDEzOSwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIApAQCAtMjUzMCwxNSArMjUzNiwxNSBAQAogICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzksIAotICAgIDEzOSwgMTM1LCAxNzUsIDE0NSwgMTM1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzksIDEzNSwgMTc1LCAxNDUsIDEzNSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIApAQCAtMjU1MCw2ICsyNTU2LDEzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzksIDE0MiwgMTM1LCAxMzUsIDEzOSwgMTQ1LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDgzLCAwLCA4MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNDksIDE0NywgMTQ3LCAxNDYsIAogICAgIDE0NywgMTM1LCAxMzUsIDEzOSwgMTQyLCAxNDUsIDQ4LCA0OCwgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMjU2NiwyMzAgKzI1NzksMjY4IEBACiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDE0MiwgMTM1LCA4MywgODMsIAogICAgIDgzLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDE3NSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMCwgCi0gICAgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgODMsIAotICAgIDgzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTc1LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIDgzLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCA4MywgODMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIAotICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgNTMsIDUzLCA1MywgNTMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAzMjcsIDQ4LCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICAwLCA4MCwgMTM1LCAxNzYsIDgzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKLSAgICAzMjcsIDMyNywgMTc2LCAxNzYsIDE3NiwgODAsIDgwLCA4MCwgMzI4LCAzMjcsIDMyNywgMzI3LCAzMjcsIDMyNywgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIAotICAgIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgODEsIDgxLCA4MSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE3NiwgMTc2LCAxNzYsIAorICAgIDE3NiwgMTc2LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIAorICAgIDgwLCA4MCwgODAsIDUzLCA1MywgNTMsIDUzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIDUzLCAKKyAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDgwLCAxMzUsIDE3NiwgODMsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjksIDMyOSwgMTc2LCAxNzYsIDE3NiwgODAsIDgwLCA4MCwgCisgICAgMzMwLCAzMjksIDMyOSwgMzI5LCAzMjksIDMyOSwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDg2LCAKKyAgICA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODEsIDgxLCA4MSwgMjYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAwLCAKLSAgICAwLCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgMCwgMCwgMCwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDAsIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAKKyAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIAorICAgIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAwLCA0OSwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAotICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMzUsIDAsIDAsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgODAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDEzNSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCAxMzUsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDAsIDgxLCA4MSwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKQEAgLTI4MDMsMTEgKzI4NTQsMTggQEAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCi0gICAgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgCi0gICAgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEwNywgMTA3LCAxMDcsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDg2LCA4NiwgCisgICAgODYsIDg2LCA4NiwgODYsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKKyAgICAxMzYsIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgCiAgICAgMTMxLCAwLCAxMzEsIDAsIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDAsIDAsIApAQCAtMjgyMSw3ICsyODc5LDcgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCkBAIC0yODMyLDE3MyArMjg5MCwyMDggQEAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNTMsIDE1MywgMCwgMCwgMCwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzMxLCAwLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDIyMiwgMjIyLCAwLCAwLCAwLCAwLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMjQxLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNTMsIDE1MywgMCwgMCwgMCwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMzMzLCAwLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDIyMiwgMjIyLCAwLCAwLCAwLCAwLCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAyNjcsIDMzNCwgMjQyLCAyNjcsIDI2NywgMjY3LCAKKyAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIAotICAgIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA1NCwgNTQsIAotICAgIDU0LCA1NCwgNTQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2OSwgMjY5LCAyNjksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyMzksIAorICAgIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDMzNSwgMzM1LCAzMzUsIDMzNSwgMzM1LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyNiwgMjM5LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMCwgMCwgMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMCwgMCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMCwgMCwgCiB9OwogCiAvKiBkZWNvbXBvc2l0aW9uIGRhdGEgKi8KQEAgLTM5NzAsMTAyICs0MDYzLDEwMiBAQAogICAgIDI2NiwgMjg0MzYsIDI2NiwgMjUyMzcsIDI2NiwgMjU0MjksIDI2NiwgMTk5NjgsIDI2NiwgMTk5NzcsIDI2NiwgMzY5MzgsIAogICAgIDI2NiwgMjQwMzgsIDI2NiwgMjAwMTMsIDI2NiwgMjE0OTEsIDI2NiwgMjUzNTEsIDI2NiwgMzYyMDgsIDI2NiwgMjUxNzEsIAogICAgIDI2NiwgMzExMDUsIDI2NiwgMzEzNTQsIDI2NiwgMjE1MTIsIDI2NiwgMjgyODgsIDI2NiwgMjYzNzcsIDI2NiwgMjYzNzYsIAotICAgIDI2NiwgMzAwMDMsIDI2NiwgMjExMDYsIDI2NiwgMjE5NDIsIDc3MCwgMTIzMDgsIDI2NDEyLCAxMjMwOSwgNzcwLCAxMjMwOCwgCi0gICAgMTk5NzcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMDEwOCwgMTIzMDksIDc3MCwgMTIzMDgsIDIzNDMzLCAxMjMwOSwgNzcwLCAKLSAgICAxMjMwOCwgMjg4NTcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTE3MSwgMTIzMDksIDc3MCwgMTIzMDgsIDMwNDIzLCAxMjMwOSwgCi0gICAgNzcwLCAxMjMwOCwgMjEyMTMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTk0MywgMTIzMDksIDI2MywgMjQ0NzEsIDI2MywgCi0gICAgMjE0ODcsIDI1NiwgMjAwMjksIDI1NiwgMjAwMjQsIDI1NiwgMjAwMzMsIDI1NiwgMTMxMzYyLCAyNTYsIDIwMzIwLCAyNTYsIAotICAgIDIwMzk4LCAyNTYsIDIwNDExLCAyNTYsIDIwNDgyLCAyNTYsIDIwNjAyLCAyNTYsIDIwNjMzLCAyNTYsIDIwNzExLCAyNTYsIAotICAgIDIwNjg3LCAyNTYsIDEzNDcwLCAyNTYsIDEzMjY2NiwgMjU2LCAyMDgxMywgMjU2LCAyMDgyMCwgMjU2LCAyMDgzNiwgMjU2LCAKLSAgICAyMDg1NSwgMjU2LCAxMzIzODAsIDI1NiwgMTM0OTcsIDI1NiwgMjA4MzksIDI1NiwgMjA4NzcsIDI1NiwgMTMyNDI3LCAyNTYsIAotICAgIDIwODg3LCAyNTYsIDIwOTAwLCAyNTYsIDIwMTcyLCAyNTYsIDIwOTA4LCAyNTYsIDIwOTE3LCAyNTYsIDE2ODQxNSwgMjU2LCAKLSAgICAyMDk4MSwgMjU2LCAyMDk5NSwgMjU2LCAxMzUzNSwgMjU2LCAyMTA1MSwgMjU2LCAyMTA2MiwgMjU2LCAyMTEwNiwgMjU2LCAKLSAgICAyMTExMSwgMjU2LCAxMzU4OSwgMjU2LCAyMTE5MSwgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTI0MiwgMjU2LCAKLSAgICAyMTI1MywgMjU2LCAyMTI1NCwgMjU2LCAyMTI3MSwgMjU2LCAyMTMyMSwgMjU2LCAyMTMyOSwgMjU2LCAyMTMzOCwgMjU2LCAKLSAgICAyMTM2MywgMjU2LCAyMTM3MywgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAxMzM2NzYsIDI1NiwgCi0gICAgMjg3ODQsIDI1NiwgMjE0NTAsIDI1NiwgMjE0NzEsIDI1NiwgMTMzOTg3LCAyNTYsIDIxNDgzLCAyNTYsIDIxNDg5LCAyNTYsIAotICAgIDIxNTEwLCAyNTYsIDIxNjYyLCAyNTYsIDIxNTYwLCAyNTYsIDIxNTc2LCAyNTYsIDIxNjA4LCAyNTYsIDIxNjY2LCAyNTYsIAotICAgIDIxNzUwLCAyNTYsIDIxNzc2LCAyNTYsIDIxODQzLCAyNTYsIDIxODU5LCAyNTYsIDIxODkyLCAyNTYsIDIxODkyLCAyNTYsIAotICAgIDIxOTEzLCAyNTYsIDIxOTMxLCAyNTYsIDIxOTM5LCAyNTYsIDIxOTU0LCAyNTYsIDIyMjk0LCAyNTYsIDIyMDIyLCAyNTYsIAotICAgIDIyMjk1LCAyNTYsIDIyMDk3LCAyNTYsIDIyMTMyLCAyNTYsIDIwOTk5LCAyNTYsIDIyNzY2LCAyNTYsIDIyNDc4LCAyNTYsIAotICAgIDIyNTE2LCAyNTYsIDIyNTQxLCAyNTYsIDIyNDExLCAyNTYsIDIyNTc4LCAyNTYsIDIyNTc3LCAyNTYsIDIyNzAwLCAyNTYsIAotICAgIDEzNjQyMCwgMjU2LCAyMjc3MCwgMjU2LCAyMjc3NSwgMjU2LCAyMjc5MCwgMjU2LCAyMjgxMCwgMjU2LCAyMjgxOCwgMjU2LCAKLSAgICAyMjg4MiwgMjU2LCAxMzY4NzIsIDI1NiwgMTM2OTM4LCAyNTYsIDIzMDIwLCAyNTYsIDIzMDY3LCAyNTYsIDIzMDc5LCAyNTYsIAotICAgIDIzMDAwLCAyNTYsIDIzMTQyLCAyNTYsIDE0MDYyLCAyNTYsIDE0MDc2LCAyNTYsIDIzMzA0LCAyNTYsIDIzMzU4LCAyNTYsIAotICAgIDIzMzU4LCAyNTYsIDEzNzY3MiwgMjU2LCAyMzQ5MSwgMjU2LCAyMzUxMiwgMjU2LCAyMzUyNywgMjU2LCAyMzUzOSwgMjU2LCAKLSAgICAxMzgwMDgsIDI1NiwgMjM1NTEsIDI1NiwgMjM1NTgsIDI1NiwgMjQ0MDMsIDI1NiwgMjM1ODYsIDI1NiwgMTQyMDksIDI1NiwgCi0gICAgMjM2NDgsIDI1NiwgMjM2NjIsIDI1NiwgMjM3NDQsIDI1NiwgMjM2OTMsIDI1NiwgMTM4NzI0LCAyNTYsIDIzODc1LCAyNTYsIAotICAgIDEzODcyNiwgMjU2LCAyMzkxOCwgMjU2LCAyMzkxNSwgMjU2LCAyMzkzMiwgMjU2LCAyNDAzMywgMjU2LCAyNDAzNCwgMjU2LCAKLSAgICAxNDM4MywgMjU2LCAyNDA2MSwgMjU2LCAyNDEwNCwgMjU2LCAyNDEyNSwgMjU2LCAyNDE2OSwgMjU2LCAxNDQzNCwgMjU2LCAKLSAgICAxMzk2NTEsIDI1NiwgMTQ0NjAsIDI1NiwgMjQyNDAsIDI1NiwgMjQyNDMsIDI1NiwgMjQyNDYsIDI1NiwgMjQyNjYsIDI1NiwgCi0gICAgMTcyOTQ2LCAyNTYsIDI0MzE4LCAyNTYsIDE0MDA4MSwgMjU2LCAxNDAwODEsIDI1NiwgMzMyODEsIDI1NiwgMjQzNTQsIAotICAgIDI1NiwgMjQzNTQsIDI1NiwgMTQ1MzUsIDI1NiwgMTQ0MDU2LCAyNTYsIDE1NjEyMiwgMjU2LCAyNDQxOCwgMjU2LCAyNDQyNywgCi0gICAgMjU2LCAxNDU2MywgMjU2LCAyNDQ3NCwgMjU2LCAyNDUyNSwgMjU2LCAyNDUzNSwgMjU2LCAyNDU2OSwgMjU2LCAyNDcwNSwgCi0gICAgMjU2LCAxNDY1MCwgMjU2LCAxNDYyMCwgMjU2LCAyNDcyNCwgMjU2LCAxNDEwMTIsIDI1NiwgMjQ3NzUsIDI1NiwgMjQ5MDQsIAotICAgIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5NTQsIDI1NiwgMjQ5NzQsIDI1NiwgMjUwMTAsIAotICAgIDI1NiwgMjQ5OTYsIDI1NiwgMjUwMDcsIDI1NiwgMjUwNTQsIDI1NiwgMjUwNzQsIDI1NiwgMjUwNzgsIDI1NiwgMjUxMDQsIAotICAgIDI1NiwgMjUxMTUsIDI1NiwgMjUxODEsIDI1NiwgMjUyNjUsIDI1NiwgMjUzMDAsIDI1NiwgMjU0MjQsIDI1NiwgMTQyMDkyLCAKLSAgICAyNTYsIDI1NDA1LCAyNTYsIDI1MzQwLCAyNTYsIDI1NDQ4LCAyNTYsIDI1NDc1LCAyNTYsIDI1NTcyLCAyNTYsIDE0MjMyMSwgCi0gICAgMjU2LCAyNTYzNCwgMjU2LCAyNTU0MSwgMjU2LCAyNTUxMywgMjU2LCAxNDg5NCwgMjU2LCAyNTcwNSwgMjU2LCAyNTcyNiwgCi0gICAgMjU2LCAyNTc1NywgMjU2LCAyNTcxOSwgMjU2LCAxNDk1NiwgMjU2LCAyNTkzNSwgMjU2LCAyNTk2NCwgMjU2LCAxNDMzNzAsIAotICAgIDI1NiwgMjYwODMsIDI1NiwgMjYzNjAsIDI1NiwgMjYxODUsIDI1NiwgMTUxMjksIDI1NiwgMjYyNTcsIDI1NiwgMTUxMTIsIAotICAgIDI1NiwgMTUwNzYsIDI1NiwgMjA4ODIsIDI1NiwgMjA4ODUsIDI1NiwgMjYzNjgsIDI1NiwgMjYyNjgsIDI1NiwgMzI5NDEsIAotICAgIDI1NiwgMTczNjksIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0MDEsIDI1NiwgMjY0NjIsIDI1NiwgMjY0NTEsIAotICAgIDI1NiwgMTQ0MzIzLCAyNTYsIDE1MTc3LCAyNTYsIDI2NjE4LCAyNTYsIDI2NTAxLCAyNTYsIDI2NzA2LCAyNTYsIDI2NzU3LCAKLSAgICAyNTYsIDE0NDQ5MywgMjU2LCAyNjc2NiwgMjU2LCAyNjY1NSwgMjU2LCAyNjkwMCwgMjU2LCAxNTI2MSwgMjU2LCAyNjk0NiwgCi0gICAgMjU2LCAyNzA0MywgMjU2LCAyNzExNCwgMjU2LCAyNzMwNCwgMjU2LCAxNDUwNTksIDI1NiwgMjczNTUsIDI1NiwgMTUzODQsIAotICAgIDI1NiwgMjc0MjUsIDI1NiwgMTQ1NTc1LCAyNTYsIDI3NDc2LCAyNTYsIDE1NDM4LCAyNTYsIDI3NTA2LCAyNTYsIDI3NTUxLCAKLSAgICAyNTYsIDI3NTc4LCAyNTYsIDI3NTc5LCAyNTYsIDE0NjA2MSwgMjU2LCAxMzg1MDcsIDI1NiwgMTQ2MTcwLCAyNTYsIAotICAgIDI3NzI2LCAyNTYsIDE0NjYyMCwgMjU2LCAyNzgzOSwgMjU2LCAyNzg1MywgMjU2LCAyNzc1MSwgMjU2LCAyNzkyNiwgMjU2LCAKLSAgICAyNzk2NiwgMjU2LCAyODAyMywgMjU2LCAyNzk2OSwgMjU2LCAyODAwOSwgMjU2LCAyODAyNCwgMjU2LCAyODAzNywgMjU2LCAKLSAgICAxNDY3MTgsIDI1NiwgMjc5NTYsIDI1NiwgMjgyMDcsIDI1NiwgMjgyNzAsIDI1NiwgMTU2NjcsIDI1NiwgMjgzNjMsIDI1NiwgCi0gICAgMjgzNTksIDI1NiwgMTQ3MTUzLCAyNTYsIDI4MTUzLCAyNTYsIDI4NTI2LCAyNTYsIDE0NzI5NCwgMjU2LCAxNDczNDIsIAotICAgIDI1NiwgMjg2MTQsIDI1NiwgMjg3MjksIDI1NiwgMjg3MDIsIDI1NiwgMjg2OTksIDI1NiwgMTU3NjYsIDI1NiwgMjg3NDYsIAotICAgIDI1NiwgMjg3OTcsIDI1NiwgMjg3OTEsIDI1NiwgMjg4NDUsIDI1NiwgMTMyMzg5LCAyNTYsIDI4OTk3LCAyNTYsIDE0ODA2NywgCi0gICAgMjU2LCAyOTA4NCwgMjU2LCAxNDgzOTUsIDI1NiwgMjkyMjQsIDI1NiwgMjkyMzcsIDI1NiwgMjkyNjQsIDI1NiwgMTQ5MDAwLCAKLSAgICAyNTYsIDI5MzEyLCAyNTYsIDI5MzMzLCAyNTYsIDE0OTMwMSwgMjU2LCAxNDk1MjQsIDI1NiwgMjk1NjIsIDI1NiwgMjk1NzksIAotICAgIDI1NiwgMTYwNDQsIDI1NiwgMjk2MDUsIDI1NiwgMTYwNTYsIDI1NiwgMTYwNTYsIDI1NiwgMjk3NjcsIDI1NiwgMjk3ODgsIAotICAgIDI1NiwgMjk4MDksIDI1NiwgMjk4MjksIDI1NiwgMjk4OTgsIDI1NiwgMTYxNTUsIDI1NiwgMjk5ODgsIDI1NiwgMTUwNTgyLCAKLSAgICAyNTYsIDMwMDE0LCAyNTYsIDE1MDY3NCwgMjU2LCAzMDA2NCwgMjU2LCAxMzk2NzksIDI1NiwgMzAyMjQsIDI1NiwgCi0gICAgMTUxNDU3LCAyNTYsIDE1MTQ4MCwgMjU2LCAxNTE2MjAsIDI1NiwgMTYzODAsIDI1NiwgMTYzOTIsIDI1NiwgMzA0NTIsIAotICAgIDI1NiwgMTUxNzk1LCAyNTYsIDE1MTc5NCwgMjU2LCAxNTE4MzMsIDI1NiwgMTUxODU5LCAyNTYsIDMwNDk0LCAyNTYsIAotICAgIDMwNDk1LCAyNTYsIDMwNDk1LCAyNTYsIDMwNTM4LCAyNTYsIDE2NDQxLCAyNTYsIDMwNjAzLCAyNTYsIDE2NDU0LCAyNTYsIAotICAgIDE2NTM0LCAyNTYsIDE1MjYwNSwgMjU2LCAzMDc5OCwgMjU2LCAzMDg2MCwgMjU2LCAzMDkyNCwgMjU2LCAxNjYxMSwgMjU2LCAKLSAgICAxNTMxMjYsIDI1NiwgMzEwNjIsIDI1NiwgMTUzMjQyLCAyNTYsIDE1MzI4NSwgMjU2LCAzMTExOSwgMjU2LCAzMTIxMSwgCi0gICAgMjU2LCAxNjY4NywgMjU2LCAzMTI5NiwgMjU2LCAzMTMwNiwgMjU2LCAzMTMxMSwgMjU2LCAxNTM5ODAsIDI1NiwgMTU0Mjc5LCAKLSAgICAyNTYsIDE1NDI3OSwgMjU2LCAzMTQ3MCwgMjU2LCAxNjg5OCwgMjU2LCAxNTQ1MzksIDI1NiwgMzE2ODYsIDI1NiwgMzE2ODksIAotICAgIDI1NiwgMTY5MzUsIDI1NiwgMTU0NzUyLCAyNTYsIDMxOTU0LCAyNTYsIDE3MDU2LCAyNTYsIDMxOTc2LCAyNTYsIDMxOTcxLCAKLSAgICAyNTYsIDMyMDAwLCAyNTYsIDE1NTUyNiwgMjU2LCAzMjA5OSwgMjU2LCAxNzE1MywgMjU2LCAzMjE5OSwgMjU2LCAzMjI1OCwgCi0gICAgMjU2LCAzMjMyNSwgMjU2LCAxNzIwNCwgMjU2LCAxNTYyMDAsIDI1NiwgMTU2MjMxLCAyNTYsIDE3MjQxLCAyNTYsIAotICAgIDE1NjM3NywgMjU2LCAzMjYzNCwgMjU2LCAxNTY0NzgsIDI1NiwgMzI2NjEsIDI1NiwgMzI3NjIsIDI1NiwgMzI3NzMsIDI1NiwgCi0gICAgMTU2ODkwLCAyNTYsIDE1Njk2MywgMjU2LCAzMjg2NCwgMjU2LCAxNTcwOTYsIDI1NiwgMzI4ODAsIDI1NiwgMTQ0MjIzLCAKLSAgICAyNTYsIDE3MzY1LCAyNTYsIDMyOTQ2LCAyNTYsIDMzMDI3LCAyNTYsIDE3NDE5LCAyNTYsIDMzMDg2LCAyNTYsIDIzMjIxLCAKLSAgICAyNTYsIDE1NzYwNywgMjU2LCAxNTc2MjEsIDI1NiwgMTQ0Mjc1LCAyNTYsIDE0NDI4NCwgMjU2LCAzMzI4MSwgMjU2LCAKLSAgICAzMzI4NCwgMjU2LCAzNjc2NiwgMjU2LCAxNzUxNSwgMjU2LCAzMzQyNSwgMjU2LCAzMzQxOSwgMjU2LCAzMzQzNywgMjU2LCAKLSAgICAyMTE3MSwgMjU2LCAzMzQ1NywgMjU2LCAzMzQ1OSwgMjU2LCAzMzQ2OSwgMjU2LCAzMzUxMCwgMjU2LCAxNTg1MjQsIDI1NiwgCi0gICAgMzM1MDksIDI1NiwgMzM1NjUsIDI1NiwgMzM2MzUsIDI1NiwgMzM3MDksIDI1NiwgMzM1NzEsIDI1NiwgMzM3MjUsIDI1NiwgCi0gICAgMzM3NjcsIDI1NiwgMzM4NzksIDI1NiwgMzM2MTksIDI1NiwgMzM3MzgsIDI1NiwgMzM3NDAsIDI1NiwgMzM3NTYsIDI1NiwgCi0gICAgMTU4Nzc0LCAyNTYsIDE1OTA4MywgMjU2LCAxNTg5MzMsIDI1NiwgMTc3MDcsIDI1NiwgMzQwMzMsIDI1NiwgMzQwMzUsIAotICAgIDI1NiwgMzQwNzAsIDI1NiwgMTYwNzE0LCAyNTYsIDM0MTQ4LCAyNTYsIDE1OTUzMiwgMjU2LCAxNzc1NywgMjU2LCAxNzc2MSwgCi0gICAgMjU2LCAxNTk2NjUsIDI1NiwgMTU5OTU0LCAyNTYsIDE3NzcxLCAyNTYsIDM0Mzg0LCAyNTYsIDM0Mzk2LCAyNTYsIDM0NDA3LCAKLSAgICAyNTYsIDM0NDA5LCAyNTYsIDM0NDczLCAyNTYsIDM0NDQwLCAyNTYsIDM0NTc0LCAyNTYsIDM0NTMwLCAyNTYsIDM0NjgxLCAKLSAgICAyNTYsIDM0NjAwLCAyNTYsIDM0NjY3LCAyNTYsIDM0Njk0LCAyNTYsIDE3ODc5LCAyNTYsIDM0Nzg1LCAyNTYsIDM0ODE3LCAKLSAgICAyNTYsIDE3OTEzLCAyNTYsIDM0OTEyLCAyNTYsIDM0OTE1LCAyNTYsIDE2MTM4MywgMjU2LCAzNTAzMSwgMjU2LCAzNTAzOCwgCi0gICAgMjU2LCAxNzk3MywgMjU2LCAzNTA2NiwgMjU2LCAxMzQ5OSwgMjU2LCAxNjE5NjYsIDI1NiwgMTYyMTUwLCAyNTYsIDE4MTEwLCAKLSAgICAyNTYsIDE4MTE5LCAyNTYsIDM1NDg4LCAyNTYsIDM1NTY1LCAyNTYsIDM1NzIyLCAyNTYsIDM1OTI1LCAyNTYsIDE2Mjk4NCwgCi0gICAgMjU2LCAzNjAxMSwgMjU2LCAzNjAzMywgMjU2LCAzNjEyMywgMjU2LCAzNjIxNSwgMjU2LCAxNjM2MzEsIDI1NiwgMTMzMTI0LCAKLSAgICAyNTYsIDM2Mjk5LCAyNTYsIDM2Mjg0LCAyNTYsIDM2MzM2LCAyNTYsIDEzMzM0MiwgMjU2LCAzNjU2NCwgMjU2LCAzNjY2NCwgCi0gICAgMjU2LCAxNjUzMzAsIDI1NiwgMTY1MzU3LCAyNTYsIDM3MDEyLCAyNTYsIDM3MTA1LCAyNTYsIDM3MTM3LCAyNTYsIAotICAgIDE2NTY3OCwgMjU2LCAzNzE0NywgMjU2LCAzNzQzMiwgMjU2LCAzNzU5MSwgMjU2LCAzNzU5MiwgMjU2LCAzNzUwMCwgMjU2LCAKLSAgICAzNzg4MSwgMjU2LCAzNzkwOSwgMjU2LCAxNjY5MDYsIDI1NiwgMzgyODMsIDI1NiwgMTg4MzcsIDI1NiwgMzgzMjcsIDI1NiwgCi0gICAgMTY3Mjg3LCAyNTYsIDE4OTE4LCAyNTYsIDM4NTk1LCAyNTYsIDIzOTg2LCAyNTYsIDM4NjkxLCAyNTYsIDE2ODI2MSwgMjU2LCAKLSAgICAxNjg0NzQsIDI1NiwgMTkwNTQsIDI1NiwgMTkwNjIsIDI1NiwgMzg4ODAsIDI1NiwgMTY4OTcwLCAyNTYsIDE5MTIyLCAyNTYsIAotICAgIDE2OTExMCwgMjU2LCAzODkyMywgMjU2LCAzODkyMywgMjU2LCAzODk1MywgMjU2LCAxNjkzOTgsIDI1NiwgMzkxMzgsIDI1NiwgCi0gICAgMTkyNTEsIDI1NiwgMzkyMDksIDI1NiwgMzkzMzUsIDI1NiwgMzkzNjIsIDI1NiwgMzk0MjIsIDI1NiwgMTk0MDYsIDI1NiwgCi0gICAgMTcwODAwLCAyNTYsIDM5Njk4LCAyNTYsIDQwMDAwLCAyNTYsIDQwMTg5LCAyNTYsIDE5NjYyLCAyNTYsIDE5NjkzLCAyNTYsIAotICAgIDQwMjk1LCAyNTYsIDE3MjIzOCwgMjU2LCAxOTcwNCwgMjU2LCAxNzIyOTMsIDI1NiwgMTcyNTU4LCAyNTYsIDE3MjY4OSwgCi0gICAgMjU2LCA0MDYzNSwgMjU2LCAxOTc5OCwgMjU2LCA0MDY5NywgMjU2LCA0MDcwMiwgMjU2LCA0MDcwOSwgMjU2LCA0MDcxOSwgCi0gICAgMjU2LCA0MDcyNiwgMjU2LCA0MDc2MywgMjU2LCAxNzM1NjgsIAorICAgIDI2NiwgMzAwMDMsIDI2NiwgMjExMDYsIDI2NiwgMjE5NDIsIDI2NiwgMzcxOTcsIDc3MCwgMTIzMDgsIDI2NDEyLCAxMjMwOSwgCisgICAgNzcwLCAxMjMwOCwgMTk5NzcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMDEwOCwgMTIzMDksIDc3MCwgMTIzMDgsIDIzNDMzLCAKKyAgICAxMjMwOSwgNzcwLCAxMjMwOCwgMjg4NTcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTE3MSwgMTIzMDksIDc3MCwgMTIzMDgsIAorICAgIDMwNDIzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjEyMTMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTk0MywgMTIzMDksIDI2MywgCisgICAgMjQ0NzEsIDI2MywgMjE0ODcsIDI1NiwgMjAwMjksIDI1NiwgMjAwMjQsIDI1NiwgMjAwMzMsIDI1NiwgMTMxMzYyLCAyNTYsIAorICAgIDIwMzIwLCAyNTYsIDIwMzk4LCAyNTYsIDIwNDExLCAyNTYsIDIwNDgyLCAyNTYsIDIwNjAyLCAyNTYsIDIwNjMzLCAyNTYsIAorICAgIDIwNzExLCAyNTYsIDIwNjg3LCAyNTYsIDEzNDcwLCAyNTYsIDEzMjY2NiwgMjU2LCAyMDgxMywgMjU2LCAyMDgyMCwgMjU2LCAKKyAgICAyMDgzNiwgMjU2LCAyMDg1NSwgMjU2LCAxMzIzODAsIDI1NiwgMTM0OTcsIDI1NiwgMjA4MzksIDI1NiwgMjA4NzcsIDI1NiwgCisgICAgMTMyNDI3LCAyNTYsIDIwODg3LCAyNTYsIDIwOTAwLCAyNTYsIDIwMTcyLCAyNTYsIDIwOTA4LCAyNTYsIDIwOTE3LCAyNTYsIAorICAgIDE2ODQxNSwgMjU2LCAyMDk4MSwgMjU2LCAyMDk5NSwgMjU2LCAxMzUzNSwgMjU2LCAyMTA1MSwgMjU2LCAyMTA2MiwgMjU2LCAKKyAgICAyMTEwNiwgMjU2LCAyMTExMSwgMjU2LCAxMzU4OSwgMjU2LCAyMTE5MSwgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAKKyAgICAyMTI0MiwgMjU2LCAyMTI1MywgMjU2LCAyMTI1NCwgMjU2LCAyMTI3MSwgMjU2LCAyMTMyMSwgMjU2LCAyMTMyOSwgMjU2LCAKKyAgICAyMTMzOCwgMjU2LCAyMTM2MywgMjU2LCAyMTM3MywgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAKKyAgICAxMzM2NzYsIDI1NiwgMjg3ODQsIDI1NiwgMjE0NTAsIDI1NiwgMjE0NzEsIDI1NiwgMTMzOTg3LCAyNTYsIDIxNDgzLCAyNTYsIAorICAgIDIxNDg5LCAyNTYsIDIxNTEwLCAyNTYsIDIxNjYyLCAyNTYsIDIxNTYwLCAyNTYsIDIxNTc2LCAyNTYsIDIxNjA4LCAyNTYsIAorICAgIDIxNjY2LCAyNTYsIDIxNzUwLCAyNTYsIDIxNzc2LCAyNTYsIDIxODQzLCAyNTYsIDIxODU5LCAyNTYsIDIxODkyLCAyNTYsIAorICAgIDIxODkyLCAyNTYsIDIxOTEzLCAyNTYsIDIxOTMxLCAyNTYsIDIxOTM5LCAyNTYsIDIxOTU0LCAyNTYsIDIyMjk0LCAyNTYsIAorICAgIDIyMDIyLCAyNTYsIDIyMjk1LCAyNTYsIDIyMDk3LCAyNTYsIDIyMTMyLCAyNTYsIDIwOTk5LCAyNTYsIDIyNzY2LCAyNTYsIAorICAgIDIyNDc4LCAyNTYsIDIyNTE2LCAyNTYsIDIyNTQxLCAyNTYsIDIyNDExLCAyNTYsIDIyNTc4LCAyNTYsIDIyNTc3LCAyNTYsIAorICAgIDIyNzAwLCAyNTYsIDEzNjQyMCwgMjU2LCAyMjc3MCwgMjU2LCAyMjc3NSwgMjU2LCAyMjc5MCwgMjU2LCAyMjgxMCwgMjU2LCAKKyAgICAyMjgxOCwgMjU2LCAyMjg4MiwgMjU2LCAxMzY4NzIsIDI1NiwgMTM2OTM4LCAyNTYsIDIzMDIwLCAyNTYsIDIzMDY3LCAyNTYsIAorICAgIDIzMDc5LCAyNTYsIDIzMDAwLCAyNTYsIDIzMTQyLCAyNTYsIDE0MDYyLCAyNTYsIDE0MDc2LCAyNTYsIDIzMzA0LCAyNTYsIAorICAgIDIzMzU4LCAyNTYsIDIzMzU4LCAyNTYsIDEzNzY3MiwgMjU2LCAyMzQ5MSwgMjU2LCAyMzUxMiwgMjU2LCAyMzUyNywgMjU2LCAKKyAgICAyMzUzOSwgMjU2LCAxMzgwMDgsIDI1NiwgMjM1NTEsIDI1NiwgMjM1NTgsIDI1NiwgMjQ0MDMsIDI1NiwgMjM1ODYsIDI1NiwgCisgICAgMTQyMDksIDI1NiwgMjM2NDgsIDI1NiwgMjM2NjIsIDI1NiwgMjM3NDQsIDI1NiwgMjM2OTMsIDI1NiwgMTM4NzI0LCAyNTYsIAorICAgIDIzODc1LCAyNTYsIDEzODcyNiwgMjU2LCAyMzkxOCwgMjU2LCAyMzkxNSwgMjU2LCAyMzkzMiwgMjU2LCAyNDAzMywgMjU2LCAKKyAgICAyNDAzNCwgMjU2LCAxNDM4MywgMjU2LCAyNDA2MSwgMjU2LCAyNDEwNCwgMjU2LCAyNDEyNSwgMjU2LCAyNDE2OSwgMjU2LCAKKyAgICAxNDQzNCwgMjU2LCAxMzk2NTEsIDI1NiwgMTQ0NjAsIDI1NiwgMjQyNDAsIDI1NiwgMjQyNDMsIDI1NiwgMjQyNDYsIDI1NiwgCisgICAgMjQyNjYsIDI1NiwgMTcyOTQ2LCAyNTYsIDI0MzE4LCAyNTYsIDE0MDA4MSwgMjU2LCAxNDAwODEsIDI1NiwgMzMyODEsIAorICAgIDI1NiwgMjQzNTQsIDI1NiwgMjQzNTQsIDI1NiwgMTQ1MzUsIDI1NiwgMTQ0MDU2LCAyNTYsIDE1NjEyMiwgMjU2LCAyNDQxOCwgCisgICAgMjU2LCAyNDQyNywgMjU2LCAxNDU2MywgMjU2LCAyNDQ3NCwgMjU2LCAyNDUyNSwgMjU2LCAyNDUzNSwgMjU2LCAyNDU2OSwgCisgICAgMjU2LCAyNDcwNSwgMjU2LCAxNDY1MCwgMjU2LCAxNDYyMCwgMjU2LCAyNDcyNCwgMjU2LCAxNDEwMTIsIDI1NiwgMjQ3NzUsIAorICAgIDI1NiwgMjQ5MDQsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5NTQsIDI1NiwgMjQ5NzQsIAorICAgIDI1NiwgMjUwMTAsIDI1NiwgMjQ5OTYsIDI1NiwgMjUwMDcsIDI1NiwgMjUwNTQsIDI1NiwgMjUwNzQsIDI1NiwgMjUwNzgsIAorICAgIDI1NiwgMjUxMDQsIDI1NiwgMjUxMTUsIDI1NiwgMjUxODEsIDI1NiwgMjUyNjUsIDI1NiwgMjUzMDAsIDI1NiwgMjU0MjQsIAorICAgIDI1NiwgMTQyMDkyLCAyNTYsIDI1NDA1LCAyNTYsIDI1MzQwLCAyNTYsIDI1NDQ4LCAyNTYsIDI1NDc1LCAyNTYsIDI1NTcyLCAKKyAgICAyNTYsIDE0MjMyMSwgMjU2LCAyNTYzNCwgMjU2LCAyNTU0MSwgMjU2LCAyNTUxMywgMjU2LCAxNDg5NCwgMjU2LCAyNTcwNSwgCisgICAgMjU2LCAyNTcyNiwgMjU2LCAyNTc1NywgMjU2LCAyNTcxOSwgMjU2LCAxNDk1NiwgMjU2LCAyNTkzNSwgMjU2LCAyNTk2NCwgCisgICAgMjU2LCAxNDMzNzAsIDI1NiwgMjYwODMsIDI1NiwgMjYzNjAsIDI1NiwgMjYxODUsIDI1NiwgMTUxMjksIDI1NiwgMjYyNTcsIAorICAgIDI1NiwgMTUxMTIsIDI1NiwgMTUwNzYsIDI1NiwgMjA4ODIsIDI1NiwgMjA4ODUsIDI1NiwgMjYzNjgsIDI1NiwgMjYyNjgsIAorICAgIDI1NiwgMzI5NDEsIDI1NiwgMTczNjksIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0MDEsIDI1NiwgMjY0NjIsIAorICAgIDI1NiwgMjY0NTEsIDI1NiwgMTQ0MzIzLCAyNTYsIDE1MTc3LCAyNTYsIDI2NjE4LCAyNTYsIDI2NTAxLCAyNTYsIDI2NzA2LCAKKyAgICAyNTYsIDI2NzU3LCAyNTYsIDE0NDQ5MywgMjU2LCAyNjc2NiwgMjU2LCAyNjY1NSwgMjU2LCAyNjkwMCwgMjU2LCAxNTI2MSwgCisgICAgMjU2LCAyNjk0NiwgMjU2LCAyNzA0MywgMjU2LCAyNzExNCwgMjU2LCAyNzMwNCwgMjU2LCAxNDUwNTksIDI1NiwgMjczNTUsIAorICAgIDI1NiwgMTUzODQsIDI1NiwgMjc0MjUsIDI1NiwgMTQ1NTc1LCAyNTYsIDI3NDc2LCAyNTYsIDE1NDM4LCAyNTYsIDI3NTA2LCAKKyAgICAyNTYsIDI3NTUxLCAyNTYsIDI3NTc4LCAyNTYsIDI3NTc5LCAyNTYsIDE0NjA2MSwgMjU2LCAxMzg1MDcsIDI1NiwgCisgICAgMTQ2MTcwLCAyNTYsIDI3NzI2LCAyNTYsIDE0NjYyMCwgMjU2LCAyNzgzOSwgMjU2LCAyNzg1MywgMjU2LCAyNzc1MSwgMjU2LCAKKyAgICAyNzkyNiwgMjU2LCAyNzk2NiwgMjU2LCAyODAyMywgMjU2LCAyNzk2OSwgMjU2LCAyODAwOSwgMjU2LCAyODAyNCwgMjU2LCAKKyAgICAyODAzNywgMjU2LCAxNDY3MTgsIDI1NiwgMjc5NTYsIDI1NiwgMjgyMDcsIDI1NiwgMjgyNzAsIDI1NiwgMTU2NjcsIDI1NiwgCisgICAgMjgzNjMsIDI1NiwgMjgzNTksIDI1NiwgMTQ3MTUzLCAyNTYsIDI4MTUzLCAyNTYsIDI4NTI2LCAyNTYsIDE0NzI5NCwgMjU2LCAKKyAgICAxNDczNDIsIDI1NiwgMjg2MTQsIDI1NiwgMjg3MjksIDI1NiwgMjg3MDIsIDI1NiwgMjg2OTksIDI1NiwgMTU3NjYsIDI1NiwgCisgICAgMjg3NDYsIDI1NiwgMjg3OTcsIDI1NiwgMjg3OTEsIDI1NiwgMjg4NDUsIDI1NiwgMTMyMzg5LCAyNTYsIDI4OTk3LCAyNTYsIAorICAgIDE0ODA2NywgMjU2LCAyOTA4NCwgMjU2LCAxNDgzOTUsIDI1NiwgMjkyMjQsIDI1NiwgMjkyMzcsIDI1NiwgMjkyNjQsIDI1NiwgCisgICAgMTQ5MDAwLCAyNTYsIDI5MzEyLCAyNTYsIDI5MzMzLCAyNTYsIDE0OTMwMSwgMjU2LCAxNDk1MjQsIDI1NiwgMjk1NjIsIAorICAgIDI1NiwgMjk1NzksIDI1NiwgMTYwNDQsIDI1NiwgMjk2MDUsIDI1NiwgMTYwNTYsIDI1NiwgMTYwNTYsIDI1NiwgMjk3NjcsIAorICAgIDI1NiwgMjk3ODgsIDI1NiwgMjk4MDksIDI1NiwgMjk4MjksIDI1NiwgMjk4OTgsIDI1NiwgMTYxNTUsIDI1NiwgMjk5ODgsIAorICAgIDI1NiwgMTUwNTgyLCAyNTYsIDMwMDE0LCAyNTYsIDE1MDY3NCwgMjU2LCAzMDA2NCwgMjU2LCAxMzk2NzksIDI1NiwgCisgICAgMzAyMjQsIDI1NiwgMTUxNDU3LCAyNTYsIDE1MTQ4MCwgMjU2LCAxNTE2MjAsIDI1NiwgMTYzODAsIDI1NiwgMTYzOTIsIAorICAgIDI1NiwgMzA0NTIsIDI1NiwgMTUxNzk1LCAyNTYsIDE1MTc5NCwgMjU2LCAxNTE4MzMsIDI1NiwgMTUxODU5LCAyNTYsIAorICAgIDMwNDk0LCAyNTYsIDMwNDk1LCAyNTYsIDMwNDk1LCAyNTYsIDMwNTM4LCAyNTYsIDE2NDQxLCAyNTYsIDMwNjAzLCAyNTYsIAorICAgIDE2NDU0LCAyNTYsIDE2NTM0LCAyNTYsIDE1MjYwNSwgMjU2LCAzMDc5OCwgMjU2LCAzMDg2MCwgMjU2LCAzMDkyNCwgMjU2LCAKKyAgICAxNjYxMSwgMjU2LCAxNTMxMjYsIDI1NiwgMzEwNjIsIDI1NiwgMTUzMjQyLCAyNTYsIDE1MzI4NSwgMjU2LCAzMTExOSwgCisgICAgMjU2LCAzMTIxMSwgMjU2LCAxNjY4NywgMjU2LCAzMTI5NiwgMjU2LCAzMTMwNiwgMjU2LCAzMTMxMSwgMjU2LCAxNTM5ODAsIAorICAgIDI1NiwgMTU0Mjc5LCAyNTYsIDE1NDI3OSwgMjU2LCAzMTQ3MCwgMjU2LCAxNjg5OCwgMjU2LCAxNTQ1MzksIDI1NiwgCisgICAgMzE2ODYsIDI1NiwgMzE2ODksIDI1NiwgMTY5MzUsIDI1NiwgMTU0NzUyLCAyNTYsIDMxOTU0LCAyNTYsIDE3MDU2LCAyNTYsIAorICAgIDMxOTc2LCAyNTYsIDMxOTcxLCAyNTYsIDMyMDAwLCAyNTYsIDE1NTUyNiwgMjU2LCAzMjA5OSwgMjU2LCAxNzE1MywgMjU2LCAKKyAgICAzMjE5OSwgMjU2LCAzMjI1OCwgMjU2LCAzMjMyNSwgMjU2LCAxNzIwNCwgMjU2LCAxNTYyMDAsIDI1NiwgMTU2MjMxLCAyNTYsIAorICAgIDE3MjQxLCAyNTYsIDE1NjM3NywgMjU2LCAzMjYzNCwgMjU2LCAxNTY0NzgsIDI1NiwgMzI2NjEsIDI1NiwgMzI3NjIsIDI1NiwgCisgICAgMzI3NzMsIDI1NiwgMTU2ODkwLCAyNTYsIDE1Njk2MywgMjU2LCAzMjg2NCwgMjU2LCAxNTcwOTYsIDI1NiwgMzI4ODAsIAorICAgIDI1NiwgMTQ0MjIzLCAyNTYsIDE3MzY1LCAyNTYsIDMyOTQ2LCAyNTYsIDMzMDI3LCAyNTYsIDE3NDE5LCAyNTYsIDMzMDg2LCAKKyAgICAyNTYsIDIzMjIxLCAyNTYsIDE1NzYwNywgMjU2LCAxNTc2MjEsIDI1NiwgMTQ0Mjc1LCAyNTYsIDE0NDI4NCwgMjU2LCAKKyAgICAzMzI4MSwgMjU2LCAzMzI4NCwgMjU2LCAzNjc2NiwgMjU2LCAxNzUxNSwgMjU2LCAzMzQyNSwgMjU2LCAzMzQxOSwgMjU2LCAKKyAgICAzMzQzNywgMjU2LCAyMTE3MSwgMjU2LCAzMzQ1NywgMjU2LCAzMzQ1OSwgMjU2LCAzMzQ2OSwgMjU2LCAzMzUxMCwgMjU2LCAKKyAgICAxNTg1MjQsIDI1NiwgMzM1MDksIDI1NiwgMzM1NjUsIDI1NiwgMzM2MzUsIDI1NiwgMzM3MDksIDI1NiwgMzM1NzEsIDI1NiwgCisgICAgMzM3MjUsIDI1NiwgMzM3NjcsIDI1NiwgMzM4NzksIDI1NiwgMzM2MTksIDI1NiwgMzM3MzgsIDI1NiwgMzM3NDAsIDI1NiwgCisgICAgMzM3NTYsIDI1NiwgMTU4Nzc0LCAyNTYsIDE1OTA4MywgMjU2LCAxNTg5MzMsIDI1NiwgMTc3MDcsIDI1NiwgMzQwMzMsIAorICAgIDI1NiwgMzQwMzUsIDI1NiwgMzQwNzAsIDI1NiwgMTYwNzE0LCAyNTYsIDM0MTQ4LCAyNTYsIDE1OTUzMiwgMjU2LCAxNzc1NywgCisgICAgMjU2LCAxNzc2MSwgMjU2LCAxNTk2NjUsIDI1NiwgMTU5OTU0LCAyNTYsIDE3NzcxLCAyNTYsIDM0Mzg0LCAyNTYsIDM0Mzk2LCAKKyAgICAyNTYsIDM0NDA3LCAyNTYsIDM0NDA5LCAyNTYsIDM0NDczLCAyNTYsIDM0NDQwLCAyNTYsIDM0NTc0LCAyNTYsIDM0NTMwLCAKKyAgICAyNTYsIDM0NjgxLCAyNTYsIDM0NjAwLCAyNTYsIDM0NjY3LCAyNTYsIDM0Njk0LCAyNTYsIDE3ODc5LCAyNTYsIDM0Nzg1LCAKKyAgICAyNTYsIDM0ODE3LCAyNTYsIDE3OTEzLCAyNTYsIDM0OTEyLCAyNTYsIDM0OTE1LCAyNTYsIDE2MTM4MywgMjU2LCAzNTAzMSwgCisgICAgMjU2LCAzNTAzOCwgMjU2LCAxNzk3MywgMjU2LCAzNTA2NiwgMjU2LCAxMzQ5OSwgMjU2LCAxNjE5NjYsIDI1NiwgMTYyMTUwLCAKKyAgICAyNTYsIDE4MTEwLCAyNTYsIDE4MTE5LCAyNTYsIDM1NDg4LCAyNTYsIDM1NTY1LCAyNTYsIDM1NzIyLCAyNTYsIDM1OTI1LCAKKyAgICAyNTYsIDE2Mjk4NCwgMjU2LCAzNjAxMSwgMjU2LCAzNjAzMywgMjU2LCAzNjEyMywgMjU2LCAzNjIxNSwgMjU2LCAxNjM2MzEsIAorICAgIDI1NiwgMTMzMTI0LCAyNTYsIDM2Mjk5LCAyNTYsIDM2Mjg0LCAyNTYsIDM2MzM2LCAyNTYsIDEzMzM0MiwgMjU2LCAzNjU2NCwgCisgICAgMjU2LCAzNjY2NCwgMjU2LCAxNjUzMzAsIDI1NiwgMTY1MzU3LCAyNTYsIDM3MDEyLCAyNTYsIDM3MTA1LCAyNTYsIDM3MTM3LCAKKyAgICAyNTYsIDE2NTY3OCwgMjU2LCAzNzE0NywgMjU2LCAzNzQzMiwgMjU2LCAzNzU5MSwgMjU2LCAzNzU5MiwgMjU2LCAzNzUwMCwgCisgICAgMjU2LCAzNzg4MSwgMjU2LCAzNzkwOSwgMjU2LCAxNjY5MDYsIDI1NiwgMzgyODMsIDI1NiwgMTg4MzcsIDI1NiwgMzgzMjcsIAorICAgIDI1NiwgMTY3Mjg3LCAyNTYsIDE4OTE4LCAyNTYsIDM4NTk1LCAyNTYsIDIzOTg2LCAyNTYsIDM4NjkxLCAyNTYsIDE2ODI2MSwgCisgICAgMjU2LCAxNjg0NzQsIDI1NiwgMTkwNTQsIDI1NiwgMTkwNjIsIDI1NiwgMzg4ODAsIDI1NiwgMTY4OTcwLCAyNTYsIDE5MTIyLCAKKyAgICAyNTYsIDE2OTExMCwgMjU2LCAzODkyMywgMjU2LCAzODkyMywgMjU2LCAzODk1MywgMjU2LCAxNjkzOTgsIDI1NiwgMzkxMzgsIAorICAgIDI1NiwgMTkyNTEsIDI1NiwgMzkyMDksIDI1NiwgMzkzMzUsIDI1NiwgMzkzNjIsIDI1NiwgMzk0MjIsIDI1NiwgMTk0MDYsIAorICAgIDI1NiwgMTcwODAwLCAyNTYsIDM5Njk4LCAyNTYsIDQwMDAwLCAyNTYsIDQwMTg5LCAyNTYsIDE5NjYyLCAyNTYsIDE5NjkzLCAKKyAgICAyNTYsIDQwMjk1LCAyNTYsIDE3MjIzOCwgMjU2LCAxOTcwNCwgMjU2LCAxNzIyOTMsIDI1NiwgMTcyNTU4LCAyNTYsIAorICAgIDE3MjY4OSwgMjU2LCA0MDYzNSwgMjU2LCAxOTc5OCwgMjU2LCA0MDY5NywgMjU2LCA0MDcwMiwgMjU2LCA0MDcwOSwgMjU2LCAKKyAgICA0MDcxOSwgMjU2LCA0MDcyNiwgMjU2LCA0MDc2MywgMjU2LCAxNzM1NjgsIAogfTsKIAogLyogaW5kZXggdGFibGVzIGZvciB0aGUgZGVjb21wb3NpdGlvbiBkYXRhICovCkBAIC01MTg3LDExICs1MjgwLDExIEBACiAgICAgMTMwNDQsIDEzMDQ2LCAxMzA0OCwgMTMwNTAsIDEzMDUyLCAxMzA1NCwgMTMwNTYsIDEzMDU4LCAxMzA2MCwgMTMwNjIsIAogICAgIDEzMDY0LCAxMzA2NiwgMTMwNjgsIDEzMDcwLCAxMzA3MiwgMTMwNzQsIDEzMDc2LCAxMzA3OCwgMTMwODAsIDEzMDgyLCAKICAgICAxMzA4NCwgMTMwODYsIDEzMDg4LCAxMzA5MCwgMTMwOTIsIDEzMDk0LCAxMzA5NiwgMTMwOTgsIDEzMTAwLCAxMzEwMiwgCi0gICAgMTMxMDQsIDEzMTA2LCAxMzEwOCwgMTMxMTAsIDEzMTEyLCAxMzExNCwgMTMxMTYsIDEzMTE4LCAxMzEyMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTMxMjIsIDEzMTI2LCAxMzEzMCwgMTMxMzQsIDEzMTM4LCAxMzE0MiwgMTMxNDYsIDEzMTUwLCAxMzE1NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNTgsIDEzMTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzEwNCwgMTMxMDYsIDEzMTA4LCAxMzExMCwgMTMxMTIsIDEzMTE0LCAxMzExNiwgMTMxMTgsIDEzMTIwLCAxMzEyMiwgMCwgCisgICAgMCwgMCwgMCwgMTMxMjQsIDEzMTI4LCAxMzEzMiwgMTMxMzYsIDEzMTQwLCAxMzE0NCwgMTMxNDgsIDEzMTUyLCAxMzE1NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNjAsIDEzMTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE2MiwgMTMxNjQsIDEzMTY2LCAxMzE2OCwgMTMxNzAsIDEzMTcyLCAxMzE3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNjQsIDEzMTY2LCAxMzE2OCwgMTMxNzAsIDEzMTcyLCAxMzE3NCwgCiAgICAgMTMxNzYsIDEzMTc4LCAxMzE4MCwgMTMxODIsIDEzMTg0LCAxMzE4NiwgMTMxODgsIDEzMTkwLCAxMzE5MiwgMTMxOTQsIAogICAgIDEzMTk2LCAxMzE5OCwgMTMyMDAsIDEzMjAyLCAxMzIwNCwgMTMyMDYsIDEzMjA4LCAxMzIxMCwgMTMyMTIsIDEzMjE0LCAKICAgICAxMzIxNiwgMTMyMTgsIDEzMjIwLCAxMzIyMiwgMTMyMjQsIDEzMjI2LCAxMzIyOCwgMTMyMzAsIDEzMjMyLCAxMzIzNCwgCkBAIC01MjQ1LDExICs1MzM4LDExIEBACiAgICAgMTQxNzYsIDE0MTc4LCAxNDE4MCwgMTQxODIsIDE0MTg0LCAxNDE4NiwgMTQxODgsIDE0MTkwLCAxNDE5MiwgMTQxOTQsIAogICAgIDE0MTk2LCAxNDE5OCwgMTQyMDAsIDE0MjAyLCAxNDIwNCwgMTQyMDYsIDE0MjA4LCAxNDIxMCwgMTQyMTIsIDE0MjE0LCAKICAgICAxNDIxNiwgMTQyMTgsIDE0MjIwLCAxNDIyMiwgMTQyMjQsIDE0MjI2LCAxNDIyOCwgMTQyMzAsIDE0MjMyLCAxNDIzNCwgCi0gICAgMTQyMzYsIDE0MjM4LCAxNDI0MCwgMTQyNDIsIDE0MjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDIzNiwgMTQyMzgsIDE0MjQwLCAxNDI0MiwgMTQyNDQsIDE0MjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIE5GQyBwYWlycyAqLwpAQCAtNTY2NSwxMzIgKzU3NTgsMTM1IEBACiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCBjaGFuZ2VfcmVjb3Jkc18zXzJfMFtdID0gewotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxMSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMzAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIsIDI1NSwgMjU1LCAwIH0sCi0JeyAxOSwgMjEsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMiwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMywgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMSwgMjU1LCAwIH0sCi0JeyAyNTUsIDAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI5LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNiwgMjU1LCAyNTUsIDAgfSwKLQl7IDUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDE0LCA2LCAyNTUsIDI1NSwgMCB9LAotCXsgMTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMS4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDIuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAzLjAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgNC4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIC0xIH0sCi0JeyAxNCwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMCwgMCB9LAotCXsgMjU1LCA3LCAxLCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgMiwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDMsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA0LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNSwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDYsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA3LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgOCwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDksIDI1NSwgMCB9LAotCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDAgfSwKLQl7IDEsIDUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDEwLCAyNTUsIDI1NSwgMCB9LAotCXsgMTgsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDE5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMCwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNCwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNiwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNywgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgOCwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgOSwgMjU1LCAwIH0sCi0JeyAxOSwgMzAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDgsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI3LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyMiwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjMsIDI1NSwgMjU1LCAwIH0sCi0JeyA5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxNCwgNCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzE2IH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzIwIH0sCi0JeyAyNTUsIDE5LCAyNTUsIDI1NSwgLTEgfSwKLQl7IDEsIDI1NSwgMjU1LCAwLCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTEsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAzMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxOSwgMjEsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDMsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgNSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxNCwgNiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDEuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDIuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDMuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDQuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIC0xIH0sCisJeyAxNCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAwLCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgMSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgMiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgMywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgOCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgOSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMTksIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDEsIDUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDEsIDE5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDEwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxOCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxOSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA0LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA3LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDgsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgOSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE5LCAzMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA4LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI3LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDUsIDAgfSwKKwl7IDI1NSwgMjIsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjMsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDksIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTQsIDQsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzIwIH0sCisJeyAyNTUsIDE5LCAyNTUsIDI1NSwgMjU1LCAtMSB9LAorCXsgMSwgMjU1LCAyNTUsIDAsIDI1NSwgMCB9LAogfTsKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfaW5kZXhbXSA9IHsKICAgICAwLCAxLCAyLCAyLCAzLCA0LCA1LCA2LCAyLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAKICAgICAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMiwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIAogICAgIDM2LCAzNywgMiwgMiwgMiwgMzgsIDM5LCAyLCA0MCwgMiwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgCi0gICAgNTAsIDUxLCAyLCA1MiwgMiwgMiwgNTMsIDU0LCA1NSwgNTYsIDU3LCAyLCA1OCwgNTksIDYwLCA2MSwgMiwgMiwgNjIsIDYzLCAKLSAgICA2NCwgNjUsIDY2LCA2NiwgMiwgMiwgMiwgMiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDIsIDIsIDIsIDc0LCA3NSwgCi0gICAgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMiwgMiwgMiwgMiwgMiwgODUsIAorICAgIDUwLCA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgNTgsIDU5LCA2MCwgNjEsIDIsIDYyLCA2MywgCisgICAgNjQsIDY1LCA2NiwgNjcsIDY3LCAyLCAyLCAyLCAyLCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgMiwgMiwgMiwgNzUsIAorICAgIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDIsIDIsIDIsIDIsIDIsIDIsIDg1LCAyLCAyLCAyLCAyLCAyLCAKKyAgICA4NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODcsIDIsIDg4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA4OSwgOTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MiwgCisgICAgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NiwgMiwgODcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDg4LCA4OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkxLCAKLSAgICA5MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk0LCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTYsIDk3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5OCwgNTAsIDUwLCAKLSAgICA5OSwgMTAwLCA1MCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTUsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NywgOTgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk5LCA1MCwgNTAsIAorICAgIDEwMCwgMTAxLCA1MCwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTEwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMTEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDIsIDIsIDExNywgMTE4LCAxMTksIDIsIDEyMCwgCi0gICAgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDIsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDIsIDUwLCA1MCwgMTMyLCAKLSAgICAyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDIsIDIsIDE0MywgMiwgMiwgMiwgCi0gICAgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAyLCAyLCAxNTEsIDIsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMiwgCi0gICAgMiwgMTU2LCAyLCAyLCAyLCAxNTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNTgsIDE1OSwgNTAsIDE2MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNjEsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDIsIDIsIDExOCwgMTE5LCAxMjAsIDIsIDEyMSwgCisgICAgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDIsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDIsIDUwLCA1MCwgMTMzLCAKKyAgICAyLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDIsIDIsIDE0NCwgMiwgMiwgMiwgCisgICAgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAyLCAxNTIsIDE1MywgMiwgMTU0LCAxNTUsIDE1NiwgMTU3LCAyLCAKKyAgICAyLCAxNTgsIDIsIDIsIDIsIDE1OSwgMiwgMiwgMTYwLCAxNjEsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCAxNjIsIDE2MywgNTAsIDE2NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNjUsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDIsIDIsIDIsIDIsIDIsIDIsIDE2NywgMTY4LCAKKyAgICAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTY3LCAxNjgsIDE2OSwgMTcwLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzEsIAorICAgIDE3MiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzMsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgMTc0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAxNzUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDE3NiwgMTc3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzgsIAorICAgIDE3OSwgMTgwLCAyLCAxODEsIDIsIDIsIDE4MiwgMiwgMiwgMiwgMTgzLCAxODQsIDE4NSwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICAxODYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE4NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgNTAsIDE4OCwgMTg5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxOTAsIDE5MSwgMiwgMiwgMTkyLCAKKyAgICAxOTMsIDE5NCwgMTk1LCAxOTYsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxOTcsIDE5OCwgMTk5LCAyMDAsIAorICAgIDIwMSwgMjAyLCAyMDMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwNCwgMjA1LCA5NiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODUsIDIwNiwgMiwgMjA3LCAyMDgsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwOSwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMTEsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIxMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzAsIDE3MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMTcyLCAxNzMsIDE3NCwgMiwgMTc1LCAyLCAyLCAxNzYsIDIsIDIsIDIsIDE3NywgMTc4LCAxNzksIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMTgwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgMTgxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxODIsIAotICAgIDE4MywgMiwgMiwgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDIsIDUwLCA1MCwgNTAsIDUwLCAxODksIDE5MCwgNTAsIDE5MSwgCi0gICAgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTk4LCAKLSAgICAxOTksIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMjAwLCAyLCAyMDEsIAotICAgIDIwMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMjAzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIwNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIwNywgNTAsIDIwOCwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyMTMsIDUwLCAyMTQsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAogICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAogICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjA5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA1MCwgNTAsIDIxNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjAzLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNjAyNiw4ICs2MTIyLDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgMjEwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA1MCwgMjE2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTYwOTAsNyArNjE4NSw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2RhdGFbXSA9IHsKQEAgLTYxNzYsOSArNjI3MSw5IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCkBAIC02MjE2LDcgKzYzMTEsNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02MjI1LDkgKzYzMjAsOSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjMxNCw3ICs2NDA5LDcgQEAKICAgICAzMiwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCkBAIC02MzU2LDggKzY0NTEsOCBAQAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIApAQCAtNjM3MiwyOSArNjQ2NywyOSBAQAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAzNiwgNCwgMCwgMCwgCi0gICAgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgNCwgMzYsIDgsIDYsIDcsIDM3LCAzOCwgMzksIDQwLCAKLSAgICA0MSwgNDIsIDEsIDEsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMzcsIDQsIDAsIDAsIAorICAgIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDEsIDEsIDAsIDAsIDAsIDQsIDM3LCA4LCA2LCA3LCAzOCwgMzksIDQwLCA0MSwgCisgICAgNDIsIDQzLCAxLCAxLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02NDA1LDEzNyArNjUwMCw4MjEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NSwgNDUsIDQ1LCA0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ2LCA0NiwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ5LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgMCwgCisgICAgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MSwgNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTY1NDcsNjgzICs3MzI2LDMxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgCi0gICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgCi0gICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCAwLCA5LCAKLSAgICAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKLSAgICAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCogZ2V0X2NoYW5nZV8zXzJfMChQeV9VQ1M0IG4pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKaW5kZXggZDBmOWNiNC4uYTgxZDhlMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaApAQCAtNCwyNDYgKzQsMjQ3IEBACiAKIC8qIGxleGljb24gKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGxleGljb25bXSA9IHsKLSAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODMsIDczLCA3MSwgMjA2LCA4NywgNzMsIDg0LCAyMDAsIDgzLCA4OSwgNzYsIAotICAgIDc2LCA2NSwgNjYsIDc2LCAxOTcsIDgzLCA3NywgNjUsIDc2LCAyMDQsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCi0gICAgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA3NiwgNjUsIDg0LCA3MywgMjA2LCA2NywgODUsIDc4LCAKLSAgICA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCAKKyAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODMsIDczLCA3MSwgMjA2LCA4NywgNzMsIDg0LCAyMDAsIDgzLCA3NywgNjUsIAorICAgIDc2LCAyMDQsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDc2LCAxOTcsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCisgICAgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA3NiwgNjUsIDg0LCA3MywgMjA2LCA2NSwgODIsIDY1LCAKKyAgICA2NiwgNzMsIDE5NSwgNjcsIDg1LCA3OCwgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCAKICAgICA3NywgNjUsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA4OSwgODAsIDg0LCA3MywgCiAgICAgNjUsIDIwNiwgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDIwNCwgNjgsIDczLCA3MSwgNzMsIDIxMiwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIAotICAgIDY4LCA3MywgNjUsIDIwNiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDgzLCA3MywgNzEsIDc4LCA4NywgCi0gICAgODIsIDczLCA4NCwgNzMsIDc4LCAxOTksIDg2LCA3OSwgODcsIDY5LCAyMDQsIDg0LCA3MywgNzcsIDY5LCAyMTEsIDY2LCAKLSAgICA2NSwgNzcsIDg1LCAyMDUsIDY1LCA3OCwgMTk2LCA2NiwgNzksIDc2LCAxOTYsIDY1LCA3OCwgNjUsIDg0LCA3OSwgNzYsIAotICAgIDczLCA2NSwgMjA2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDcxLCA4MiwgCi0gICAgNjksIDY5LCAyMDMsIDc3LCA4NSwgODMsIDczLCA2NywgNjUsIDIwNCwgNzYsIDczLCA3MSwgNjUsIDg0LCA4NSwgODIsIAotICAgIDE5NywgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgMTkzLCA3MCwgNzksIDIxMCwgNjcsIDg5LCA4MiwgNzMsIAotICAgIDc2LCA3NiwgNzMsIDE5NSwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjUsIDY4LCA3MywgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIAotICAgIDE5OCwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDE5NiwgODQsIDY1LCA3NywgCi0gICAgNzMsIDIwNCwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDY1LCA4MiwgODIsIDc5LCA4NywgMTI4LCA4NiwgCi0gICAgNjUsIDIwMSwgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODEsIDg1LCA2NSwgODIsIDE5NywgCi0gICAgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY1LCAKLSAgICA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY2LCA4MiwgNjUsIDczLCA3NiwgNzYsIDE5NywgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgMjA2LCA2NiwgCi0gICAgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgODcsIDcyLCA3MywgODQsIDE5NywgNjYsIDc2LCA2NSwgNjcsIAotICAgIDIwMywgNjUsIDEyOCwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCi0gICAgNjksIDIxMCwgMTk0LCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgMTkzLCA4NSwgMTI4LCA3NywgODksIDY1LCA3OCwgCi0gICAgNzcsIDY1LCAyMTAsIDY4LCA3OSwgMjEyLCA3NSwgNjUsIDc4LCA3MSwgODgsIDIwMSwgNzUsIDczLCA3NSwgNjUsIDc1LCAKLSAgICA4NSwgMjAxLCA3NywgNjksIDc4LCA2OCwgMTk3LCA3MywgMTI4LCA3OSwgMTk4LCA4NCwgNzMsIDY2LCA2OSwgODQsIDY1LCAKLSAgICAyMDYsIDc5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCAKLSAgICA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNzcsIDY5LCA2OSwgMjA1LCA2NywgNzksIAotICAgIDgwLCA4NCwgNzMsIDE5NSwgNzUsIDcyLCA3NywgNjksIDIxMCwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgCi0gICAgMjExLCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg5LCA2OSwgMjAwLCA2NywgCi0gICAgNzIsIDY5LCA4MiwgNzksIDc1LCA2OSwgMTk3LCA4MCwgNzYsIDg1LCAyMTEsIDY4LCA2OSwgODYsIDY1LCA3OCwgNjUsIDcxLCAKLSAgICA2NSwgODIsIDIwMSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCA3MywgNjUsIAotICAgIDIwNiwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA2NiwgNzksIDIxNiwgODQsIDczLCA3NiwgMTk3LCA2OCwgODUsIDgwLCAKLSAgICA3NiwgNzksIDg5LCA2NSwgMjA2LCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxOTYsIDg0LCA3MiwgNjUsIDIwNSwgCi0gICAgNzksIDc4LCA2OSwgMTI4LCAyMTMsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4NCwgODcsIDc5LCAKLSAgICAxMjgsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3MiwgNjksIDY2LCA4MiwgNjksIDIxNSwgNzcsIAotICAgIDczLCA2NSwgMjA3LCA4NSwgMjA4LCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgCi0gICAgMjA2LCA3OSwgODYsIDY5LCAyMTAsIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIDcxLCAyMTEsIDcyLCA3NywgNzksIDc4LCAKLSAgICAxOTksIDc5LCA3OCwgMTk3LCA4MCwgNjUsIDcyLCA2NSwgODcsIDIwMCwgODQsIDg3LCAyMDcsIDY4LCA3OSwgODcsIDIwNiwgCi0gICAgNzMsIDc4LCA2OCwgNjksIDIxNiwgNjcsIDcyLCA3OSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzYsIDc5LCAyMTUsIDg2LCAKLSAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgODQsIDcyLCA4MiwgNjksIDE5NywgNzIsIDY1LCA3NiwgNzAsIDg3LCA3MywgNjgsIAotICAgIDg0LCAyMDAsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgMjEyLCA3NywgNjksIDgyLCA3OSwgNzMsIDg0LCA3MywgCi0gICAgMTk1LCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3NywgNjUsIDgyLCAyMDMsIDgzLCA2NywgODIsIDczLCAKLSAgICA4MCwgMjEyLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTYsIAotICAgIDg0LCA3OSwgMTI4LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA3NiwgNjksIDE5OCwgCi0gICAgNzIsIDczLCA3MSwgMjAwLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA4MywgNzMsIDc4LCAKLSAgICA3MiwgNjUsIDc2LCAxOTMsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNzMsIDE5NSwgNjYsIDY1LCA4MiwgMTI4LCA4NCwgNzksIAotICAgIDc4LCAxOTcsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA3MiwgODUsIDc4LCA3MSwgNjUsIDgyLCA3MywgNjUsIDIwNiwgCi0gICAgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg0LCA3MiwgODUsIDc3LCAxOTQsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDY2LCAKLSAgICA2NSwgODIsIDE5NCwgNzIsIDY1LCAyMDAsIDcyLCA2NSwgMTI4LCA3OCwgNzksIDgyLCA4NCwgMjAwLCA3MCwgODUsIDc2LCAKLSAgICA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgNjksIDgxLCA4NSwgNjUsIAotICAgIDIwNCwgNzYsIDczLCA3MSwgNzIsIDIxMiwgODQsIDY1LCAxOTksIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCA3MiwgNjUsIAotICAgIDc2LCAxOTgsIDc2LCA3OSwgNzgsIDE5OSwgNzcsIDY1LCA3NiwgNjUsIDg5LCA2NSwgNzYsIDY1LCAyMDUsIDY1LCA2NywgCi0gICAgODUsIDg0LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCAKLSAgICA2OSwgMjEwLCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA4MywgODQsIAotICAgIDgyLCA4NSwgNjcsIDIwMywgNzAsIDczLCA4NiwgNjksIDEyOCwgNzksIDgwLCA2OSwgMjA2LCA3MiwgNzMsIDgyLCA2NSwgCi0gICAgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCAKKyAgICA2NiwgNzksIDIwNCwgNjgsIDczLCA3MSwgNzMsIDIxMiwgODQsIDY1LCA3OCwgNzEsIDg1LCAyMTIsIDcwLCA3OSwgODIsIAorICAgIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCA2OCwgNzMsIDY1LCAyMDYsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgCisgICAgMjExLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNzMsIDcxLCA3OCwgODcsIDgyLCA3MywgODQsIDczLCA3OCwgMTk5LCAKKyAgICA4NCwgNzMsIDc3LCA2OSwgMjExLCA2NiwgNjUsIDc3LCA4NSwgMjA1LCA2NSwgNzgsIDE5NiwgNjYsIDc5LCA3NiwgMTk2LCAKKyAgICA2NSwgNzgsIDY1LCA4NCwgNzksIDc2LCA3MywgNjUsIDIwNiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDc2LCA3MywgNzgsIAorICAgIDY5LCA2NSwgMjEwLCA3MSwgODIsIDY5LCA2OSwgMjAzLCA3NywgODUsIDgzLCA3MywgNjcsIDY1LCAyMDQsIDc2LCA3MywgCisgICAgNzEsIDY1LCA4NCwgODUsIDgyLCAxOTcsIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDE5MywgNzAsIDc5LCAKKyAgICAyMTAsIDY3LCA4OSwgODIsIDczLCA3NiwgNzYsIDczLCAxOTUsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDczLCA3OCwgCisgICAgMTk5LCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDgyLCA2NSwgNjgsIDczLCAKKyAgICA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgMTk4LCA2NywgNzMsIDgyLCA2NywgNzYsIAorICAgIDY5LCAxOTYsIDg0LCA2NSwgNzcsIDczLCAyMDQsIDg0LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA2NSwgODIsIAorICAgIDgyLCA3OSwgODcsIDEyOCwgNzYsIDY5LCA3MCwgMjEyLCA4NiwgNjUsIDIwMSwgODIsIDczLCA3MSwgNzIsIDIxMiwgODMsIAorICAgIDgxLCA4NSwgNjUsIDgyLCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2NSwgCisgICAgODIsIDgyLCA3OSwgMjE1LCA2NSwgNjYsIDc5LCA4NiwgNjksIDEyOCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDg2LCAKKyAgICA2NSwgODIsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIDc2LCAxOTcsIDgwLCA2NSwgODQsIAorICAgIDg0LCA2OSwgODIsIDIwNiwgNjYsIDg5LCA5MCwgNjUsIDc4LCA4NCwgNzMsIDc4LCAxOTcsIDY1LCAxMjgsIDY2LCA3NiwgCisgICAgNjUsIDY3LCAyMDMsIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDg1LCAKKyAgICAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCAyMTAsIDE5NCwgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIAorICAgIDE5MywgNzMsIDEyOCwgNzcsIDg5LCA2NSwgNzgsIDc3LCA2NSwgMjEwLCA2OCwgNzksIDIxMiwgNzksIDEyOCwgNzUsIDY1LCAKKyAgICA3OCwgNzEsIDg4LCAyMDEsIDc5LCAxOTgsIDc1LCA3MywgNzUsIDY1LCA3NSwgODUsIDIwMSwgNzcsIDY5LCA3OCwgNjgsIAorICAgIDE5NywgODQsIDczLCA2NiwgNjksIDg0LCA2NSwgMjA2LCA3MiwgNjksIDY1LCA4NiwgMjE3LCA3NywgNjUsIDgyLCA3NSwgCisgICAgMTI4LCA3MywgNzgsIDczLCA4NCwgNzMsIDY1LCAyMDQsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc3LCAKKyAgICA2OSwgNjksIDIwNSwgNjcsIDc5LCA4MCwgODQsIDczLCAxOTUsIDc1LCA3MiwgNzcsIDY5LCAyMTAsIDgyLCA3MywgNzEsIAorICAgIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNjUsIDY2LCA3OSwgODYsIDE5NywgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgCisgICAgMjEwLCA4OSwgNjksIDIwMCwgNjcsIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIDE5NywgNzcsIDc5LCA3OCwgNzEsIDc5LCAKKyAgICA3NiwgNzMsIDY1LCAyMDYsIDgwLCA3NiwgODUsIDIxMSwgNjgsIDY5LCA4NiwgNjUsIDc4LCA2NSwgNzEsIDY1LCA4MiwgCisgICAgMjAxLCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxOTYsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NywgODMsIDg0LCAKKyAgICA4MiwgNzksIDc1LCA2OSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgMTI4LCA2NiwgNzksIDIxNiwgNzcsIDczLCA2OCwgNjgsIDc2LCAxOTcsIDc5LCA3OCwgNjksIDEyOCwgODQsIAorICAgIDczLCA3NiwgMTk3LCA2OCwgODUsIDgwLCA3NiwgNzksIDg5LCA2NSwgMjA2LCA4NCwgODcsIDc5LCAxMjgsIDgwLCA2NSwgCisgICAgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgODQsIDcyLCA2NSwgMjA1LCAyMTMsIDg2LCAKKyAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDY3LCA3OSwgNzgsIAorICAgIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NiwgODIsIDY5LCAyMTUsIDc3LCA3MywgCisgICAgNjUsIDIwNywgODUsIDIwOCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA3MiwgNzksIDc5LCAKKyAgICA3NSwgMTI4LCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgMjA2LCA3OSwgODYsIDY5LCAyMTAsIDg0LCA4NywgMjA3LCAKKyAgICA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgMjExLCA3MiwgNzMsIDcxLCAyMDAsIDcyLCA3NywgNzksIDc4LCAxOTksIAorICAgIDczLCA3OCwgNjgsIDY5LCAyMTYsIDgwLCA2NSwgNzIsIDY1LCA4NywgMjAwLCA4NCwgNzIsIDgyLCA2OSwgMTk3LCA2OCwgCisgICAgNzksIDg3LCAyMDYsIDc2LCA3OSwgMjE1LCA2NywgNzIsIDc5LCA4MywgNjksIDc5LCA3OCwgMTk5LCA3MiwgNjUsIDc2LCAKKyAgICA3MCwgODcsIDczLCA2OCwgODQsIDIwMCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCAyMTIsIDc3LCA2OSwgODIsIAorICAgIDc5LCA3MywgODQsIDczLCAxOTUsIDY2LCA2NSwgNzYsIDczLCA3OCwgNjksIDgzLCAxOTcsIDc3LCA2NSwgODIsIDIwMywgCisgICAgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA3MiwgNjUsIDgzLCAKKyAgICA2OSwgNDUsIDE5NiwgODQsIDc5LCAxMjgsIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIAorICAgIDc2LCA2OSwgMTk4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA3NywgNjUsIDc2LCA2NSwgCisgICAgODksIDY1LCA3NiwgNjUsIDIwNSwgODMsIDczLCA3OCwgNzIsIDY1LCA3NiwgMTkzLCA3MiwgNjUsIDEyOCwgNzgsIDg1LCAKKyAgICA3NywgNjksIDgyLCA3MywgMTk1LCA4MiwgMTI4LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgMTI4LCAKKyAgICA3MCwgNzksIDg1LCA4MiwgMTI4LCA4NCwgNzksIDc4LCAxOTcsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA3MiwgODUsIAorICAgIDc4LCA3MSwgNjUsIDgyLCA3MywgNjUsIDIwNiwgODQsIDcyLCA4NSwgNzcsIDE5NCwgNjYsIDY1LCA4MiwgMTk0LCA3MiwgCisgICAgNjUsIDIwMCwgNzgsIDc5LCA4MiwgODQsIDIwMCwgNzAsIDg1LCA3NiwgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDY2LCAKKyAgICA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDY5LCA4MSwgODUsIDY1LCAyMDQsIDc1LCA2NSwgMTI4LCA3NiwgNzMsIAorICAgIDcxLCA3MiwgMjEyLCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgNjUsIDE5OSwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIAorICAgIDcyLCA2NSwgNzYsIDE5OCwgNzYsIDc5LCA3OCwgMTk5LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDgyLCA2NSwgCisgICAgNzUsIDg0LCA4NSwgMjEwLCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDIxMCwgODAsIDY1LCAxMjgsIDgwLCAKKyAgICA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NSwgNjYsIDcyLCA2NSwgNzMsIDc1LCA4MywgODUsIDc1LCAyMDEsIDY4LCA3OSwgODUsIAorICAgIDY2LCA3NiwgNjksIDQ1LCA4MywgODQsIDgyLCA4NSwgNjcsIDIwMywgNzksIDgwLCA2OSwgMjA2LCA3MiwgNzMsIDgyLCA2NSwgCisgICAgNzEsIDY1LCA3OCwgMTkzLCA3NywgNjUsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCAKICAgICA3MSwgMjEzLCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCi0gICAgMjExLCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAyMDEsIDcxLCAKLSAgICA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA3OCwgNjksIAotICAgIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNzQsIDY5LCA2OSwgCi0gICAgMjA1LCA4MCwgNjUsIDEyOCwgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgMjA1LCA2OCwgNzksIDg0LCAyMTEsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA2NywgODUsIDgyLCAKLSAgICA4MywgNzMsIDg2LCAxOTcsIDc3LCA2NSwgMTI4LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4MywgMTI4LCA4MywgNzMsIDg4LCAKLSAgICAxMjgsIDg3LCA2OSwgODMsIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4OSwgNjUsIAotICAgIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA2NSwgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzgsIDY1LCAxMjgsIAotICAgIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgMTI4LCA5MCwgCi0gICAgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIDg5LCAKLSAgICAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgMTI4LCAKLSAgICA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIAotICAgIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAxMjgsIAotICAgIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCA5MCwgCi0gICAgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIDkwLCAKLSAgICA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgODAsIAotICAgIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgOTAsIAotICAgIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAxMjgsIAotICAgIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCA3NCwgMTI4LCA5MCwgCi0gICAgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCAyMDIsIDkwLCA4NywgNjUsIDgyLCAKLSAgICA2NSwgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgNjYsIAotICAgIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgMjEzLCA5MCwgODMsIDcyLCA2NSwgMTI4LCAKLSAgICA5MCwgODIsIDY1LCAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIAotICAgIDEyOCwgOTAsIDc5LCA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCAKLSAgICA5MCwgNzQsIDY5LCAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIAotICAgIDgwLCA4MCwgNjksIDgyLCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgOTAsIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCA3MywgCi0gICAgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIDY4LCAKLSAgICAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCA4OSwgCi0gICAgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIDgyLCAKLSAgICAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIDcyLCAKLSAgICA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgODIsIAotICAgIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCA5MCwgCi0gICAgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDc5LCAKLSAgICA3OSwgMTI4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgODQsIAotICAgIDY5LCAxMjgsIDkwLCA3MiwgNzMsIDc2LCAxMjgsIDkwLCA3MiwgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgOTAsIAotICAgIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCA2OSwgCi0gICAgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA4OCwgMTI4LCA5MCwgCi0gICAgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCA5MCwgNzIsIDY1LCAKLSAgICA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIDEyOCwgOTAsIDY5LCAKLSAgICA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIDc4LCAxMjgsIDkwLCAKLSAgICA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgNjksIDUwLCAxMjgsIAotICAgIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgCi0gICAgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIDEyOCwgOTAsIDY1LCAKLSAgICA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODIsIDc2LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIAotICAgIDg4LCAxMjgsIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIAotICAgIDEyOCwgOTAsIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCAKLSAgICA5MCwgNjUsIDU1LCAxMjgsIDkwLCAxOTMsIDkwLCA0OCwgNDksIDU0LCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzEsIAotICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgCi0gICAgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA1NCwgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDczLCAxMjgsIDkwLCA0OCwgNDksIAotICAgIDUzLCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcwLCAxMjgsIDkwLCA0OCwgCi0gICAgNDksIDUzLCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY3LCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDUzLCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDEyOCwgOTAsIAotICAgIDQ4LCA0OSwgNTIsIDEyOCwgOTAsIDQ4LCA0OSwgNTEsIDEyOCwgOTAsIDQ4LCA0OSwgNTAsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgOTAsIDQ4LCA0OSwgNDgsIDEyOCwgOTAsIDQ4LCA0OCwgNTcsIDEyOCwgOTAsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNTUsIDEyOCwgOTAsIDQ4LCA0OCwgNTQsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDkwLCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDkwLCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgMTI4LCA5MCwgNDgsIAotICAgIDQ4LCA1MSwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAxMjgsIDkwLCA0OCwgCi0gICAgNDgsIDUwLCA2OCwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDkwLCAKLSAgICA0OCwgNDgsIDUwLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgMTI4LCA5MCwgNDgsIDQ4LCA0OSwgMTI4LCA5MCwgMTI4LCAKLSAgICAyMTgsIDg5LCA4OSwgODgsIDEyOCwgODksIDg5LCA4NCwgMTI4LCA4OSwgODksIDgyLCA4OCwgMTI4LCA4OSwgODksIDgyLCAKLSAgICAxMjgsIDg5LCA4OSwgODAsIDEyOCwgODksIDg5LCA2OSwgMTI4LCA4OSwgODksIDY1LCA2NSwgMTI4LCA4OSwgODksIDY1LCAKLSAgICAxMjgsIDg5LCA4OSwgMTI4LCA4OSwgODcsIDc5LCA3OSwgMTI4LCA4OSwgODcsIDc5LCAxMjgsIDg5LCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDg5LCA4NywgNzMsIDEyOCwgODksIDg3LCA2OSwgMTI4LCA4OSwgODcsIDY1LCA2NSwgMTI4LCA4OSwgODcsIDY1LCAKLSAgICAxMjgsIDg5LCA4NiwgMTI4LCA4OSwgODUsIDg4LCAxMjgsIDg5LCA4NSwgODcsIDc5LCA4MSwgMTI4LCA4OSwgODUsIDg1LCAKLSAgICA3NSwgNjUsIDc2LCA2OSwgNjUsIDgwLCA3MywgNzgsIDg0LCA4NSwgMTI4LCA4OSwgODUsIDg1LCAxMjgsIDg5LCA4NSwgODQsIAotICAgIDEyOCwgODksIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgODksIDg1LCA4MiwgODgsIDEyOCwgODksIDg1LCA4MiwgMTI4LCAKLSAgICA4OSwgODUsIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgODUsIDgwLCAxMjgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDg5LCAKLSAgICA4NSwgNzksIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDg5LCA4NSwgNzksIDc3LCAxMjgsIDg5LCA4NSwgNzksIAotICAgIDEyOCwgODksIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAxMjgsIDg5LCA4NSwgNzQsIDEyOCwgODksIDg1LCA2OSwgODEsIAotICAgIDEyOCwgODksIDg1LCA2OSwgMTI4LCA4OSwgODUsIDY4LCA3MiwgMTI4LCA4OSwgODUsIDY4LCAyMDAsIDg5LCA4NSwgNjUsIAotICAgIDc4LCAxMjgsIDg5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgCi0gICAgNDUsIDg5LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA4NSwgMTI4LCA4OSwgODUsIDQ1LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCAKLSAgICA3MywgMTI4LCA4OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIAotICAgIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAxMjgsIDg5LCA4NSwgMTI4LCA4OSwgMjEzLCA4OSwgODIsIDg5LCAxMjgsIDg5LCAKLSAgICA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIDEyOCwgODksIDgwLCA3OSwgNzUsIAotICAgIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDIxMSwgODksIDgwLCA3OSwgCi0gICAgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCA4OSwgMTI4LCA4OSwgNzksIDg4LCAKLSAgICAxMjgsIDg5LCA3OSwgODcsIDY4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIAotICAgIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgMTI4LCA4OSwgNzksIDgyLCA3MywgCi0gICAgMTI4LCA4OSwgNzksIDgxLCAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIDg5LCA3OSwgNzksIDEyOCwgODksIAotICAgIDc5LCA3NywgNzksIDEyOCwgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgNzIsIDEyOCwgODksIDc5LCA2OCwgCi0gICAgMTI4LCA4OSwgNzksIDE5NiwgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgCi0gICAgNDUsIDg5LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCAKLSAgICA3OSwgNDUsIDczLCAxMjgsIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgNjksIDEyOCwgODksIAotICAgIDc5LCA0NSwgNjUsIDEyOCwgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIAotICAgIDg4LCAxMjgsIDg5LCA3MywgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIDczLCA4MCwgMTI4LCA4OSwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA4OSwgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA4OSwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIAotICAgIDg5LCA3MywgNjgsIDY4LCA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgODksIDczLCAxMjgsIDg5LCA3MCwgCi0gICAgNjksIDgzLCA3MywgODMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCAKLSAgICA4OSwgMTI4LCA4OSwgNjksIDg3LCAxMjgsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgODksIDY5LCA4NSwgODEsIDEyOCwgODksIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgCi0gICAgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODksIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCAKLSAgICA4NSwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCAKLSAgICA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDcxLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA4OSwgNjksIDgyLCA4NSwgMTI4LCA4OSwgNjksIDgyLCAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIAotICAgIDY1LCAyMDAsIDg5LCA2OSwgODIsIDEyOCwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAKLSAgICAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIAotICAgIDQ1LCA3OSwgMTI4LCA4OSwgNjksIDc4LCA3MywgODMsIDY5LCAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgCi0gICAgNjksIDc4LCAxMjgsIDg5LCA2OSwgMjA2LCA4OSwgNjksIDc2LCA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCAKLSAgICA3OSwgMjE1LCA4OSwgNjksIDczLCA3OCwgMTI4LCA4OSwgNjksIDcyLCAxMjgsIDg5LCA2OSwgNjksIDcxLCAxMjgsIDg5LCAKLSAgICA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAxMjgsIDg5LCAKLSAgICA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIDY1LCA4OSwgNjgsIDEyOCwgODksIDY1LCA4OSwgNjUsIAotICAgIDc4LCA3OCwgNjUsIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgNjUsIDg3LCA3OCwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIAotICAgIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgCi0gICAgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgCi0gICAgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgCi0gICAgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAKLSAgICAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgNzgsIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAKLSAgICA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCA3NSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIAotICAgIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgCi0gICAgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIDg5LCA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIAotICAgIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIAotICAgIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIAotICAgIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgCi0gICAgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCAKLSAgICA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCAKLSAgICA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIAotICAgIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIDEyOCwgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgCi0gICAgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIDQ4LCA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgNTIsIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCAKLSAgICA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIAotICAgIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCA4OSwgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIAotICAgIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCA4OSwgODAsIDEyOCwgODgsIDg5LCA3OSwgNzksIDc0LCAxMjgsIAotICAgIDg4LCA4OSwgNzksIDc5LCAxMjgsIDg4LCA4OSwgNzksIDEyOCwgODgsIDg5LCA3MywgMTI4LCA4OCwgODksIDY5LCA2OSwgCi0gICAgMjA1LCA4OCwgODksIDY5LCA2OSwgMTI4LCA4OCwgODksIDY5LCAxMjgsIDg4LCA4OSwgNjUsIDY1LCAxMjgsIDg4LCA4OSwgCi0gICAgNjUsIDEyOCwgODgsIDg5LCAxMjgsIDg4LCA4NywgNzMsIDEyOCwgODgsIDg3LCA2OSwgNjksIDEyOCwgODgsIDg3LCA2OSwgCi0gICAgMTI4LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA4OCwgODcsIDY1LCAxMjgsIDg4LCA4NywgMTI4LCA4OCwgODYsIDY5LCAxMjgsIAotICAgIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgODgsIDg1LCA3OSwgMTI4LCA4OCwgODUsIDEyOCwgODgsIAotICAgIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCA2NSwgMTI4LCA4OCwgNzksIDg4LCAxMjgsIDg4LCA3OSwgCi0gICAgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCA3MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIDg4LCA3OSwgCi0gICAgNjUsIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIDgyLCA3OSwgCi0gICAgMjA2LCA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIDg4LCA3MywgCi0gICAgNjksIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCA2NSwgNjYsIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgCi0gICAgMTI4LCA4OCwgNjksIDg5LCA3OCwgMTI4LCA4OCwgNjksIDgzLCA4NCwgNjksIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgCi0gICAgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIDg1LCA4MywgMTI4LCA4OCwgNjUsIDg1LCAxMjgsIDg4LCA2NSwgCi0gICAgODAsIDcyLCAxMjgsIDg4LCA2NSwgNzgsIDEyOCwgODgsIDY1LCA2NSwgMTI4LCA4OCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgCi0gICAgNTYsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCAxMjgsIDg4LCA0OCwgNDgsIDU1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAKLSAgICA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgMTI4LCA4OCwgNDgsIDQ4LCA1MywgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjYsIAotICAgIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCAxMjgsIDg4LCA0OCwgNDgsIDUxLCAxMjgsIAotICAgIDg4LCA0OCwgNDgsIDUwLCAxMjgsIDg4LCA0OCwgNDgsIDQ5LCAxMjgsIDg4LCA0NSwgMjE2LCA4NywgOTAsIDEyOCwgODcsIAotICAgIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCA4NywgODYsIDczLCAxMjgsIDg3LCA4NiwgNjksIDEyOCwgODcsIAotICAgIDg2LCA2NSwgMTI4LCA4NywgODYsIDEyOCwgODcsIDg1LCA4MCwgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIAotICAgIDc5LCA4MCwgMTI4LCA4NywgODUsIDc5LCAxMjgsIDg3LCA4NSwgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIAotICAgIDg1LCA3NiwgODUsIDEyOCwgODcsIDg1LCA3NiwgMjEzLCA4NywgODUsIDczLCAxMjgsIDg3LCA4NSwgNjksIDEyOCwgODcsIAotICAgIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4NywgODUsIDEyOCwgODcsIDgyLCAyMTcsIAotICAgIDg3LCA4MiwgNzksIDc4LCA3MSwgMTI4LCA4NywgODIsIDczLCA4MywgMjEyLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgCi0gICAgODMsIDEyOCwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDIxMSwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDY4LCAKLSAgICAxMjgsIDg3LCA4MiwgNjksIDc4LCA2NywgNzIsIDEyOCwgODcsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDg3LCA4MiwgNjUsIAotICAgIDgwLCA4MCwgNjksIDE5NiwgODcsIDgyLCA2NSwgODAsIDEyOCwgODcsIDc5LCA4OCwgMTI4LCA4NywgNzksIDg3LCAxMjgsIAotICAgIDg3LCA3OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIDc5LCA4MiwgCi0gICAgNzYsIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgMTI4LCA4NywgNzksIDgyLCAKLSAgICAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCA4MiwgMTk2LCA4NywgNzksIAotICAgIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCA3OSwgNzksIDY4LCA4MywgCi0gICAgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgMTI4LCA4NywgNzksIDIwNiwgCi0gICAgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMjExLCAKLSAgICA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCA3NiwgNzksIDgzLCA3OSwgCi0gICAgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCA4NywgNzMsIDg0LCA3MiwgCi0gICAgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA4NCwgNzIsIDczLCAyMDYsIDg3LCAKLSAgICA3MywgODIsIDY5LCAxOTYsIDg3LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIDczLCA3OCwgCi0gICAgMTk5LCA4NywgNzMsIDc4LCA3NSwgMTI4LCA4NywgNzMsIDc4LCA3NCwgNjUsIDEyOCwgODcsIDczLCA3OCwgNzEsIDgzLCAKLSAgICAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDg3LCAKLSAgICA3MywgNzgsIDY4LCA3OSwgODcsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCA4NywgNzMsIAotICAgIDc4LCAxMjgsIDg3LCA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgCi0gICAgNzMsIDcxLCA3MSwgNzYsIDY5LCA4MywgMTI4LCA4NywgNzMsIDY4LCA4NCwgNzIsIDEyOCwgODcsIDczLCA2OCwgNjksIDc4LCAKLSAgICA3MywgNzgsIDE5OSwgODcsIDczLCA2OCwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgCi0gICAgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIDg3LCA2NSwgNjUsIDc1LCAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCAKLSAgICA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgNzIsIDczLCA4NCwgNjksIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgCi0gICAgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIDY5LCAxMjgsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCAKLSAgICA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgMjEwLCA4NywgNzIsIDY5LCA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIAotICAgIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAxMjgsIDg3LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA4NywgNzIsIDEyOCwgODcsIAotICAgIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgODgsIDEyOCwgODcsIDY5LCA4MywgODQsIDY5LCA4MiwgCi0gICAgMjA2LCA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAyMTIsIDg3LCA2OSwgODAsIDEyOCwgODcsIDY5LCA3OSwgCi0gICAgMTI4LCA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAxMjgsIDg3LCA2OSwgNzMsIDcxLCA3MiwgMjEyLCA4NywgCi0gICAgNjksIDczLCA2OSwgODIsIDgzLCA4NCwgODIsIDY1LCA4MywgMjExLCA4NywgNjksIDczLCAxMjgsIDg3LCA2OSwgNjksIDc4LCAKKyAgICAyMTEsIDg5LCA2NSwgMTI4LCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA2NiwgNjksIDc4LCA3MSwgNjUsIAorICAgIDc2LCAyMDEsIDgzLCA3MiwgNjUsIDgyLCA2NSwgNjgsIDE5MywgODMsIDczLCA4OCwgMTI4LCA3OCwgNjUsIDEyOCwgNzgsIAorICAgIDY5LCA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjgsIDc5LCA4NCwgMjExLCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgCisgICAgNjgsIDIxMSwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc0LCA2OSwgNjksIDIwNSwgNzYsIDY1LCAxMjgsIDc4LCA2OSwgCisgICAgODcsIDE5MywgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDIwMCwgOTAsIDkwLCA4OSwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODQsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDkwLCA5MCwgODksIDgyLCAxMjgsIDkwLCA5MCwgODksIDgwLCAxMjgsIDkwLCA5MCwgODksIDY1LCAxMjgsIDkwLCA5MCwgCisgICAgODksIDEyOCwgOTAsIDkwLCA4NSwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCAKKyAgICAxMjgsIDkwLCA5MCwgODUsIDgwLCAxMjgsIDkwLCA5MCwgODUsIDEyOCwgOTAsIDkwLCA4MywgODksIDY1LCAxMjgsIDkwLCAKKyAgICA5MCwgODMsIDY1LCAxMjgsIDkwLCA5MCwgNzksIDg4LCAxMjgsIDkwLCA5MCwgNzksIDgwLCAxMjgsIDkwLCA5MCwgNzksIAorICAgIDEyOCwgOTAsIDkwLCA3MywgODgsIDEyOCwgOTAsIDkwLCA3MywgODQsIDEyOCwgOTAsIDkwLCA3MywgODAsIDEyOCwgOTAsIAorICAgIDkwLCA3MywgNjksIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4NCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODAsIDEyOCwgCisgICAgOTAsIDkwLCA3MywgNjksIDEyOCwgOTAsIDkwLCA3MywgMTI4LCA5MCwgOTAsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDY5LCAKKyAgICA4MCwgMTI4LCA5MCwgOTAsIDY5LCA2OSwgMTI4LCA5MCwgOTAsIDY5LCAxMjgsIDkwLCA5MCwgNjUsIDg4LCAxMjgsIDkwLCAKKyAgICA5MCwgNjUsIDg0LCAxMjgsIDkwLCA5MCwgNjUsIDgwLCAxMjgsIDkwLCA5MCwgNjUsIDY1LCAxMjgsIDkwLCA5MCwgNjUsIAorICAgIDEyOCwgOTAsIDg5LCA3MSwgNzksIDgzLCAxMjgsIDkwLCA4NywgODMsIDgwLCAxMjgsIDkwLCA4NywgNzgsIDc0LCAxMjgsIAorICAgIDkwLCA4NywgNzgsIDY2LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3NCwgMTI4LCA5MCwgODcsIDIwMiwgOTAsIDg3LCA2NSwgCisgICAgODIsIDY1LCA3NSwgNjUsIDg5LCAxMjgsIDkwLCA4NywgNjUsIDEyOCwgOTAsIDg1LCA4NCwgMTI4LCA5MCwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA5MCwgODUsIDc5LCA4MCwgMTI4LCA5MCwgODUsIDc5LCAxMjgsIDkwLCA4NSwgNzcsIDEyOCwgOTAsIDg1LCAKKyAgICA2NiwgODUsIDgyLCAxMjgsIDkwLCA4NSwgNTMsIDEyOCwgOTAsIDg1LCAxODEsIDkwLCAyMTMsIDkwLCA4MywgNzIsIDY1LCAKKyAgICAxMjgsIDkwLCA4MiwgNjUsIDEyOCwgOTAsIDgxLCA2NSwgODAsIDcyLCAxOTMsIDkwLCA3OSwgODQsIDEyOCwgOTAsIDc5LCAKKyAgICA3OSwgMTI4LCA5MCwgNzksIDY1LCAxMjgsIDkwLCA3NiwgNjUsIDc3LCAxOTMsIDkwLCA3NiwgNjUsIDEyOCwgOTAsIDc2LCAKKyAgICAxOTMsIDkwLCA3NCwgNjksIDEyOCwgOTAsIDczLCA5MCwgNTAsIDEyOCwgOTAsIDczLCA4MSwgNjUsIDY1LCAxMjgsIDkwLCAKKyAgICA3MywgODAsIDgwLCA2OSwgODIsIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA5MCwgNzMsIDc4LCA3OSwgODIsIDEyOCwgOTAsIAorICAgIDczLCA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAxMjgsIDkwLCA3MywgCisgICAgNjgsIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgMjAxLCA5MCwgNzIsIAorICAgIDg5LCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4OSwgCisgICAgODIsIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCA2OSwgMTI4LCA5MCwgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCA5MCwgNzIsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgNzIsIDg1LCAxMjgsIAorICAgIDkwLCA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAxMjgsIDkwLCA3MiwgCisgICAgNzksIDc5LCAxMjgsIDkwLCA3MiwgNzksIDczLCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCAKKyAgICA4NCwgNjksIDEyOCwgOTAsIDcyLCA3MywgNzYsIDEyOCwgOTAsIDcyLCA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCAKKyAgICA5MCwgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIDY5LCA4MCwgMTI4LCA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIAorICAgIDY5LCAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDg4LCAxMjgsIAorICAgIDkwLCA3MiwgNjUsIDg0LCAxMjgsIDkwLCA3MiwgNjUsIDgyLCAxMjgsIDkwLCA3MiwgNjUsIDgwLCAxMjgsIDkwLCA3MiwgCisgICAgNjUsIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA2NSwgMTI4LCA5MCwgNzIsIDY1LCAxMjgsIDkwLCA3MiwgMTI4LCA5MCwgCisgICAgNjksIDg0LCA2NSwgMTI4LCA5MCwgNjksIDgyLCA3OSwgMTI4LCA5MCwgNjksIDgyLCAyMDcsIDkwLCA2OSwgNzgsIDEyOCwgCisgICAgOTAsIDY5LCA3NywgNzYsIDg5LCA2NSwgMTI4LCA5MCwgNjksIDc3LCA3NiwgNzQsIDY1LCAxMjgsIDkwLCA2OSwgNTAsIAorICAgIDEyOCwgOTAsIDE5NywgOTAsIDY1LCA4OSwgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgODksIAorICAgIDczLCAyMDYsIDkwLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA5MCwgNjUsIDg0LCA2NSwgMTI4LCA5MCwgCisgICAgNjUsIDgyLCA4MSwgNjUsIDEyOCwgOTAsIDY1LCA4MiwgNzYsIDEyOCwgOTAsIDY1LCA4MSwgNjksIDE5OCwgOTAsIDY1LCAKKyAgICA3NywgODgsIDEyOCwgOTAsIDY1LCA3NiwgMTI4LCA5MCwgNjUsIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCAKKyAgICA3MywgMjA2LCA5MCwgNjUsIDczLCAxMjgsIDkwLCA2NSwgNzIsIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgCisgICAgOTAsIDY1LCA2OSwgNzAsIDEyOCwgOTAsIDY1LCA1NSwgMTI4LCA5MCwgMTkzLCA5MCwgNDgsIDQ5LCA1NCwgNzIsIDEyOCwgCisgICAgOTAsIDQ4LCA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjksIAorICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgCisgICAgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAKKyAgICA3MywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDUzLCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIDkwLCA0OCwgCisgICAgNDksIDUzLCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDkwLCAKKyAgICA0OCwgNDksIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDUwLCAxMjgsIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIDU3LCAxMjgsIAorICAgIDkwLCA0OCwgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTIsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUwLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIDg5LCA4MiwgCisgICAgODgsIDEyOCwgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIDg5LCA2NSwgCisgICAgNjUsIDEyOCwgODksIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgCisgICAgMTI4LCA4OSwgODcsIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgCisgICAgNjUsIDEyOCwgODksIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgCisgICAgODEsIDEyOCwgODksIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCAKKyAgICA4NSwgMTI4LCA4OSwgODUsIDg0LCAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIDg5LCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDg5LCA4NSwgODIsIDEyOCwgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIDg1LCA4MCwgMTI4LCA4OSwgCisgICAgODUsIDc5LCA4OCwgMTI4LCA4OSwgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA4OSwgODUsIDc5LCAKKyAgICA3NywgMTI4LCA4OSwgODUsIDc5LCAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgMTI4LCA4OSwgODUsIDc0LCAKKyAgICAxMjgsIDg5LCA4NSwgNjksIDgxLCAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCAKKyAgICA2OCwgMjAwLCA4OSwgODUsIDY1LCA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIAorICAgIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgCisgICAgNzksIDEyOCwgODksIDg1LCA0NSwgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAKKyAgICAxMjgsIDg5LCA4NSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgCisgICAgODksIDgyLCA4OSwgMTI4LCA4OSwgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAKKyAgICAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIAorICAgIDczLCAyMTEsIDg5LCA4MCwgNzksIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgCisgICAgODksIDEyOCwgODksIDc5LCA4OCwgMTI4LCA4OSwgNzksIDg3LCA2OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCAKKyAgICA4NSwgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIAorICAgIDEyOCwgODksIDc5LCA4MiwgNzMsIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCAKKyAgICA4OSwgNzksIDc5LCAxMjgsIDg5LCA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIAorICAgIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIAorICAgIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgCisgICAgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCAKKyAgICA0NSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCAKKyAgICA2OSwgODQsIDEyOCwgODksIDczLCA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCAKKyAgICA3MywgODAsIDEyOCwgODksIDczLCA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCAKKyAgICA2OSwgODgsIDEyOCwgODksIDczLCA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIAorICAgIDEyOCwgODksIDczLCA2OSwgMTI4LCA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIAorICAgIDg5LCA3MywgMTI4LCA4OSwgNzIsIDY5LCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgODMsIDEyOCwgODksIDcwLCA2OSwgCisgICAgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCA4OSwgMTI4LCA4OSwgNjksIDg3LCAxMjgsIDg5LCA2OSwgCisgICAgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIDEyOCwgODksIDY5LCA4NSwgODEsIDEyOCwgODksIDY5LCAKKyAgICA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODksIAorICAgIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCA4NSwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNjUsIAorICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIAorICAgIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4OSwgNjksIDgyLCA4NSwgMTI4LCA4OSwgNjksIDgyLCAKKyAgICAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIDY1LCAyMDAsIDg5LCA2OSwgODIsIDEyOCwgODksIDY5LCAKKyAgICA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIAorICAgIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNjksIDc4LCA3MywgODMsIDY5LCAKKyAgICAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgNjksIDc4LCAxMjgsIDg5LCA2OSwgMjA2LCA4OSwgNjksIDc2LCAKKyAgICA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCA3OSwgMjE1LCA4OSwgNjksIDczLCA3OCwgMTI4LCA4OSwgNjksIAorICAgIDcyLCAxMjgsIDg5LCA2OSwgNjksIDcxLCAxMjgsIDg5LCA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIAorICAgIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAxMjgsIDg5LCA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIAorICAgIDY1LCA4OSwgNjgsIDEyOCwgODksIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgCisgICAgNjUsIDg3LCA3OCwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCA4OSwgCisgICAgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIDg0LCAKKyAgICAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIDY1LCAKKyAgICA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIDgwLCAKKyAgICAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgNzgsIAorICAgIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCA3NSwgCisgICAgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIDEyOCwgCisgICAgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIDg5LCAKKyAgICA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAxMjgsIAorICAgIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCA3MSwgCisgICAgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCA4OSwgCisgICAgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIDg5LCAKKyAgICA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgNjcsIAorICAgIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAxMjgsIAorICAgIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIDEyOCwgCisgICAgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIDQ4LCAKKyAgICA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIAorICAgIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCA4OSwgCisgICAgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCA4OSwgCisgICAgODAsIDEyOCwgODgsIDg5LCA3OSwgNzksIDc0LCAxMjgsIDg4LCA4OSwgNzksIDc5LCAxMjgsIDg4LCA4OSwgNzksIDEyOCwgCisgICAgODgsIDg5LCA3MywgMTI4LCA4OCwgODksIDY5LCA2OSwgMjA1LCA4OCwgODksIDY5LCA2OSwgMTI4LCA4OCwgODksIDY5LCAKKyAgICAxMjgsIDg4LCA4OSwgNjUsIDY1LCAxMjgsIDg4LCA4OSwgNjUsIDEyOCwgODgsIDg5LCAxMjgsIDg4LCA4NywgNzMsIDEyOCwgCisgICAgODgsIDg3LCA2OSwgNjksIDEyOCwgODgsIDg3LCA2OSwgMTI4LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA4OCwgODcsIDY1LCAKKyAgICAxMjgsIDg4LCA4NywgMTI4LCA4OCwgODYsIDY5LCAxMjgsIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgODgsIDg1LCA3OSwgMTI4LCA4OCwgODUsIDEyOCwgODgsIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCAKKyAgICA2NSwgMTI4LCA4OCwgNzksIDg4LCAxMjgsIDg4LCA3OSwgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCAKKyAgICA3MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIDg4LCA3OSwgNjUsIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgCisgICAgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIDgyLCA3OSwgMjA2LCA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAKKyAgICAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIDg4LCA3MywgNjksIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCAKKyAgICA2NSwgNjYsIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgMTI4LCA4OCwgNjksIDg5LCA3OCwgMTI4LCA4OCwgNjksIDgzLCAKKyAgICA4NCwgNjksIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIDg1LCAKKyAgICA4MywgMTI4LCA4OCwgNjUsIDg1LCAxMjgsIDg4LCA2NSwgODAsIDcyLCAxMjgsIDg4LCA2NSwgNzgsIDEyOCwgODgsIDY1LCAKKyAgICA2NSwgMTI4LCA4OCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCAxMjgsIDg4LCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgMTI4LCA4OCwgNDgsIAorICAgIDQ4LCA1MywgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjYsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDg4LCA0OCwgCisgICAgNDgsIDUyLCAxMjgsIDg4LCA0OCwgNDgsIDUxLCAxMjgsIDg4LCA0OCwgNDgsIDUwLCAxMjgsIDg4LCA0OCwgNDgsIDQ5LCAKKyAgICAxMjgsIDg4LCA0NSwgMjE2LCA4NywgOTAsIDEyOCwgODcsIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCA4NywgCisgICAgODYsIDczLCAxMjgsIDg3LCA4NiwgNjksIDEyOCwgODcsIDg2LCA2NSwgMTI4LCA4NywgODYsIDEyOCwgODcsIDg1LCA4MCwgCisgICAgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIDc5LCA4MCwgMTI4LCA4NywgODUsIDc5LCAxMjgsIDg3LCA4NSwgCisgICAgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIDg1LCA3NiwgODUsIDEyOCwgODcsIDg1LCA3NiwgMjEzLCA4NywgCisgICAgODUsIDczLCAxMjgsIDg3LCA4NSwgNjksIDEyOCwgODcsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgODUsIDEyOCwgODcsIDgyLCAyMTcsIDg3LCA4MiwgNzksIDc4LCA3MSwgMTI4LCA4NywgODIsIDczLCAKKyAgICA4MywgMjEyLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgODMsIDEyOCwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIAorICAgIDIxMSwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDY4LCAxMjgsIDg3LCA4MiwgNjksIDgzLCA4NCwgNzYsIDY5LCA4MiwgCisgICAgODMsIDEyOCwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIDIwMCwgODcsIDgyLCAKKyAgICA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIDg3LCA3OSwgODcsIAorICAgIDEyOCwgODcsIDc5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgODcsIDc5LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NywgCisgICAgNzksIDgyLCA3NiwgMTk2LCA4NywgNzksIDgyLCA3NSwgNjksIDgyLCAxMjgsIDg3LCA3OSwgODIsIDc1LCAxMjgsIDg3LCAKKyAgICA3OSwgODIsIDIwMywgODcsIDc5LCA4MiwgNjgsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA4NywgNzksIDgyLCAxOTYsIAorICAgIDg3LCA3OSwgODAsIDEyOCwgODcsIDc5LCA3OSwgNzgsIDEyOCwgODcsIDc5LCA3OSwgNzYsIDEyOCwgODcsIDc5LCA3OSwgCisgICAgNjgsIDgzLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NywgNzksIDc5LCA2OCwgMTI4LCA4NywgNzksIDc4LCAxMjgsIDg3LCAKKyAgICA3OSwgMjA2LCA4NywgNzksIDc3LCA2OSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjksIDIwNiwgODcsIDc5LCA3NywgNjUsIAorICAgIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMTI4LCA4NywgNzksIDc3LCA2NSwgMjA2LCA4NywgNzksIDc2LCA3OSwgCisgICAgODMsIDc5LCAxMjgsIDg3LCA3OSwgNzYsIDE5OCwgODcsIDc5LCA2OSwgMTI4LCA4NywgNzksIDY1LCAxMjgsIDg3LCA3MywgCisgICAgODQsIDcyLCA3OSwgODUsIDIxMiwgODcsIDczLCA4NCwgNzIsIDczLCA3OCwgMTI4LCA4NywgNzMsIDg0LCA3MiwgNzMsIAorICAgIDIwNiwgODcsIDczLCA4MiwgNjksIDE5NiwgODcsIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgCisgICAgNzMsIDc4LCAxOTksIDg3LCA3MywgNzgsIDc1LCAxMjgsIDg3LCA3MywgNzgsIDc0LCA2NSwgMTI4LCA4NywgNzMsIDc4LCAKKyAgICA3MSwgODMsIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgNzMsIDc4LCA2OCwgODUsIAorICAgIDEyOCwgODcsIDczLCA3OCwgNjgsIDc5LCA4NywgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIAorICAgIDg3LCA3MywgNzgsIDEyOCwgODcsIDczLCA3NiwgODQsIDY5LCAxOTYsIDg3LCA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAKKyAgICAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgNzMsIDcxLCA3MSwgNzYsIDY5LCA4MywgMTI4LCA4NywgNzMsIAorICAgIDY4LCA4NCwgNzIsIDEyOCwgODcsIDczLCA2OCwgNjksIDc4LCA3MywgNzgsIDE5OSwgODcsIDczLCA2OCwgNjksIDQ1LCA3MiwgCisgICAgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIDg3LCA2NSwgNjUsIDc1LCAKKyAgICAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgNzIsIDczLCA4NCwgNjksIAorICAgIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIDY5LCAxMjgsIDg3LCA3MiwgCisgICAgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgMjEwLCA4NywgNzIsIDY5LCAKKyAgICA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAxMjgsIDg3LCA3MiwgNjUsIAorICAgIDc2LCA2OSwgMTI4LCA4NywgNzIsIDEyOCwgODcsIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgODgsIAorICAgIDEyOCwgODcsIDY5LCA4MywgODQsIDY5LCA4MiwgMjA2LCA4NywgNjksIDgzLCA4NCwgNDUsIDY3LCA4MiwgNjksIDE5NywgCisgICAgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIDgwLCAxMjgsIDg3LCA2OSwgNzksIDEyOCwgCisgICAgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIDczLCA3MSwgNzIsIDIxMiwgODcsIDY5LCAKKyAgICA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA3MywgMTI4LCA4NywgNjksIDY5LCA3OCwgCiAgICAgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNzEsIDY5LCAKICAgICAxMjgsIDg3LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjYsIDEyOCwgODcsIDY5LCA2NSwgODIsIAogICAgIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgODksIApAQCAtMjU3LDI1MSArMjU4LDI1MyBAQAogICAgIDEyOCwgODcsIDY1LCA4MywgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgNjUsIDEyOCwgCiAgICAgODcsIDY1LCA4MywgNzYsIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDY1LCAKICAgICA3NiwgNzYsIDY1LCAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MiwgNjUsIDc4LCAxOTksIAotICAgIDg3LCA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgCi0gICAgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIDEyOCwgODcsIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCAKLSAgICA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODcsIDY1LCA3NiwgNzYsIDEyOCwgODcsIDY1LCA3NiwgMjA0LCA4NywgNjUsIAotICAgIDc2LCA3NSwgMTI4LCA4NywgNjUsIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgCi0gICAgNzMsIDgzLCA4NCwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgCi0gICAgODcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCAKLSAgICA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIAotICAgIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgCi0gICAgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAKLSAgICA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgMTI4LCA4NywgNDgsIDQ5LCA1NCwgMTI4LCA4NywgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA4NywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDEyOCwgODcsIDQ4LCA0OSwgNTEsIDEyOCwgODcsIAotICAgIDQ4LCA0OSwgNTAsIDEyOCwgODcsIDQ4LCA0OSwgNDksIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDg3LCA0OCwgCi0gICAgNDksIDQ4LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1NywgMTI4LCA4NywgNDgsIDQ4LCAKLSAgICA1NiwgMTI4LCA4NywgNDgsIDQ4LCA1NSwgMTI4LCA4NywgNDgsIDQ4LCA1NCwgMTI4LCA4NywgNDgsIDQ4LCA1MywgMTI4LCAKLSAgICA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgCi0gICAgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgCi0gICAgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNzQsIDEyOCwgODYsIDg3LCA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIAotICAgIDg2LCA4NSwgODUsIDEyOCwgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIAotICAgIDg2LCA4NSwgODAsIDEyOCwgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgCi0gICAgODMsIDEyOCwgODYsIDg0LCAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgCi0gICAgNTcsIDU1LCAxMjgsIDg2LCA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAKLSAgICAxMjgsIDg2LCA4MywgNTcsIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCAKLSAgICA4MywgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIAotICAgIDEyOCwgODYsIDgzLCA1NiwgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIAotICAgIDgzLCA1NiwgNTIsIDEyOCwgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgCi0gICAgNDksIDEyOCwgODYsIDgzLCA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgCi0gICAgODMsIDU1LCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCAKLSAgICA1MywgMTI4LCA4NiwgODMsIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCAKLSAgICA4NiwgODMsIDU1LCA0OSwgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIAotICAgIDU3LCAxMjgsIDg2LCA4MywgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNTQsIDUzLCAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgCi0gICAgNTQsIDUwLCAxMjgsIDg2LCA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgCi0gICAgODYsIDgzLCA1MywgNTcsIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCAKLSAgICA1MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIAotICAgIDEyOCwgODYsIDgzLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIAotICAgIDgzLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgCi0gICAgMTI4LCA4NiwgODMsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgCi0gICAgODMsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCAKLSAgICA0OCwgMTI4LCA4NiwgODMsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCAKLSAgICA4MywgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIAotICAgIDUyLCAxMjgsIDg2LCA4MywgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIAotICAgIDg2LCA4MywgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIAotICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCAKLSAgICA4NiwgODMsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIAotICAgIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIAotICAgIDUwLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIAotICAgIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgCi0gICAgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA0OCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA0OCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA0OCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1NywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1NywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU2LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIAotICAgIDUxLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1NSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1NSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU0LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIAotICAgIDUwLCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1MywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1MywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUyLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDUyLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIAotICAgIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgCi0gICAgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1MSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1MSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUwLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDUwLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIAotICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgCi0gICAgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIAotICAgIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgCi0gICAgMTI4LCA4NiwgNzksIDg1LCAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCAyMTEsIDg2LCA3OSwgODAsIDEyOCwgODYsIAotICAgIDc5LCA3OSwgNzMsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIDg2LCA3OSwgNzYsIDg1LCA3NywgCi0gICAgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA2NSwgNzYsIDc2LCAKLSAgICAxMjgsIDg2LCA3OSwgNzYsIDY3LCA2NSwgNzgsIDc5LCAxMjgsIDg2LCA3OSwgNzYsIDY1LCA4MCwgODUsIDIwMywgODYsIAotICAgIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIDczLCA2NywgNjksIDc2LCA2OSwgCi0gICAgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OSwgNzksIDEyOCwgODYsIDczLCAKLSAgICA4OCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIAotICAgIDc2LCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgCi0gICAgNzMsIDg0LCAxMjgsIDg2LCA3MywgODMsIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCAKLSAgICA3MSwgNjUsIDg5LCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIAotICAgIDcxLCAxOTMsIDg2LCA3MywgODIsIDczLCA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgCi0gICAgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCAKLSAgICA3OSwgNzYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIAotICAgIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgCi0gICAgNjksIDcxLCA2NSwgMjEwLCA4NiwgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxOTcsIDg2LCA3MywgNzgsIDEyOCwgCi0gICAgODYsIDczLCA3NiwgNzYsIDY1LCA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA4NiwgNzMsIDY5LCA4NywgNzMsIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIAotICAgIDg0LCAxMjgsIDg2LCA3MywgNjksIDIxMiwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIAotICAgIDY4LCA3NCwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgCi0gICAgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCAKLSAgICA3MywgNjcsIDg0LCA3OSwgODIsIDIxNywgODYsIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MCwgNjUsIAotICAgIDEyOCwgODYsIDY5LCA4OSwgOTAsIDEyOCwgODYsIDY5LCA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCAKLSAgICA4NiwgNjksIDg1LCA4OCwgMTI4LCA4NiwgNjksIDg1LCA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIAotICAgIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgCi0gICAgNjksIDIwNCwgODYsIDY5LCA4MiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAotICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAotICAgIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAotICAgIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIAotICAgIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAotICAgIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAotICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODMsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIDgzLCAxMjgsIDg2LCA2OSwgODIsIDEyOCwgODYsIDY5LCAKLSAgICA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIAotICAgIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCAKLSAgICA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg1LCAxMjgsIDg2LCAKLSAgICA2NSwgODQsIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIDg0LCA3OCwgNjksIDgzLCAyMTEsIAotICAgIDg2LCA2NSwgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgNjUsIDgyLCA3MywgNzUsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDg0LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIAotICAgIDY1LCA4MiwgNzMsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgCi0gICAgODYsIDY1LCA4MiwgNjksIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIAotICAgIDEyOCwgODYsIDY1LCA3OCwgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIAotICAgIDEyOCwgODYsIDY1LCA3NCwgMTI4LCA4NiwgNjUsIDczLCAxMjgsIDg2LCA2NSwgNzIsIDEyOCwgODYsIDY1LCAyMDAsIDg2LCAKLSAgICA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDUyLCA0OCwgMTI4LCA4NiwgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgCi0gICAgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgCi0gICAgODYsIDQ4LCA1MSwgNTIsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDUxLCAxMjgsIDg2LCAKLSAgICA0OCwgNTEsIDUwLCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgMTI4LCA4NiwgNDgsIAotICAgIDUxLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNTAsIDU3LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NiwgMTI4LCA4NiwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA4NiwgNDgsIDUwLCA1NCwgMTI4LCA4NiwgNDgsIDUwLCA1MywgMTI4LCA4NiwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA4NiwgNDgsIDUwLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDEyOCwgODYsIDQ4LCA1MCwgNTAsIDEyOCwgODYsIAotICAgIDQ4LCA1MCwgNDksIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NSwgMTI4LCA4NiwgCi0gICAgNDgsIDUwLCA0OCwgNzQsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDczLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MiwgMTI4LCAKLSAgICA4NiwgNDgsIDUwLCA0OCwgNzEsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcwLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OSwgCi0gICAgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjgsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY3LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAKLSAgICA2NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDEyOCwgODYsIDQ4LCA0OSwgNTcsIAotICAgIDEyOCwgODYsIDQ4LCA0OSwgNTYsIDEyOCwgODYsIDQ4LCA0OSwgNTUsIDEyOCwgODYsIDQ4LCA0OSwgNTQsIDEyOCwgODYsIAotICAgIDQ4LCA0OSwgNTMsIDEyOCwgODYsIDQ4LCA0OSwgNTIsIDEyOCwgODYsIDQ4LCA0OSwgNTEsIDEyOCwgODYsIDQ4LCA0OSwgCi0gICAgNTAsIDY2LCAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgMTI4LCA4NiwgNDgsIDQ5LCAKLSAgICA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA4NiwgNDgsIDQ5LCA0OCwgMTI4LCA4NiwgNDgsIDQ4LCA1NywgMTI4LCA4NiwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAKLSAgICAxMjgsIDg2LCA0OCwgNDgsIDU0LCAxMjgsIDg2LCA0OCwgNDgsIDUzLCAxMjgsIDg2LCA0OCwgNDgsIDUyLCAxMjgsIDg2LCAKLSAgICA0OCwgNDgsIDUxLCAxMjgsIDg2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgMTI4LCA4NiwgNDgsIAotICAgIDQ4LCA0OSwgNzMsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcyLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MSwgMTI4LCA4NiwgCi0gICAgNDgsIDQ4LCA0OSwgNzAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY5LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OCwgMTI4LCAKLSAgICA4NiwgNDgsIDQ4LCA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NSwgCi0gICAgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgOTAsIDg1LCAxMjgsIDg1LCA5MCwgNTEsIDEyOCwgODUsIDkwLCAxNzksIAotICAgIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg5LCAxMjgsIDg1LCA4NywgODUsIDEyOCwgODUsIDg1LCA4OSwgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg1LCA4NSwgODUsIDEyOCwgODUsIDg1LCA4NSwgNTEsIDEyOCwgODUsIDg1LCAKLSAgICA4NSwgNTAsIDEyOCwgODUsIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCA4MywgODUsIAotICAgIDUxLCAxMjgsIDg1LCA4MywgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDg1LCA3NywgCi0gICAgODgsIDEyOCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgODUsIDgzLCAKLSAgICA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgODUsIDgzLCAKLSAgICA2OSwgNDUsIDQ5LCAxMjgsIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgODUsIDgyLCAKLSAgICA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCA4MiwgODUsIAotICAgIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCA4MiwgNzMsIAotICAgIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIDY1LCAxMjgsIAotICAgIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCi0gICAgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCAKLSAgICA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIAotICAgIDc5LCAyMDYsIDg1LCA4MCwgODMsIDczLCA2OCwgNjksIDQ1LCA2OCwgNzksIDg3LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgCi0gICAgNzIsIDIxMiwgODUsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCAKLSAgICA3MiwgNzcsIDY1LCA3OCwgNzMsIDg5LCA2NSwgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgCi0gICAgMTk5LCA4NSwgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAKLSAgICAxOTYsIDg1LCA3OCwgNzUsIDc4LCA3OSwgODcsIDc4LCAxMjgsIDg1LCA3OCwgNzUsIDEyOCwgODUsIDc4LCA3MywgODYsIAotICAgIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4NSwgCi0gICAgNzgsIDczLCAyMTIsIDg1LCA3OCwgNzMsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDczLCA3OSwgMjA2LCA4NSwgNzgsIDczLCAKLSAgICA3MCwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzMsIDY3LCA3OSwgODIsIDIwNiwgODUsIDc4LCA2OCwgMjA3LCA4NSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDg0LCA3MywgNjksIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA3NiwgNzMsIDc4LCAxOTcsIDg1LCA3OCwgCi0gICAgNjgsIDY5LCA4MiwgNjgsIDc5LCA4NCwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgODUsIDc4LCAKLSAgICA2OCwgNjksIDgyLCAxMjgsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDg1LCA3OCwgNjcsIAotICAgIDY5LCA4MiwgODQsIDY1LCA3MywgNzgsIDg0LCAyMTcsIDg1LCA3OCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAKLSAgICA2OCwgMTI4LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4NSwgNzgsIDY1LCA3NywgODUsIDgzLCA2OSwgMTk2LCA4NSwgNzgsIAotICAgIDY1LCAxMjgsIDg1LCAyMDYsIDg1LCA3NywgODUsIDc3LCAxMjgsIDg1LCA3NywgODUsIDIwNSwgODUsIDc3LCA2NiwgODIsIAotICAgIDY5LCA3NiwgNzYsIDY1LCAxMjgsIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCAxOTMsIDg1LCA3NywgNjYsIDczLCA3OCwgCi0gICAgMTI4LCA4NSwgNzUsIDg1LCAxMjgsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA4NSwgNzUsIDY1LCAKLSAgICA4MiwgNjUsIDEyOCwgODUsIDc1LCA2NSwgODIsIDE5MywgODUsIDc1LCAxMjgsIDg1LCA3MywgNzYsIDc2LCA2OSwgNjUsIAotICAgIDc4LCA3OCwgMTI4LCA4NSwgNzMsIDcxLCA3MiwgODUsIDIxMCwgODUsIDcxLCA2NSwgODIsIDczLCA4NCwgNzMsIDE5NSwgCisgICAgODcsIDY1LCA4MSwgNzAsIDY1LCAxMjgsIDg3LCA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAxOTksIDg3LCAKKyAgICA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIDEyOCwgODcsIAorICAgIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODcsIDY1LCA3NiwgNzYsIDEyOCwgCisgICAgODcsIDY1LCA3NiwgMjA0LCA4NywgNjUsIDc2LCA3NSwgMTI4LCA4NywgNjUsIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgNzMsIDgzLCA4NCwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIAorICAgIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgODcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgCisgICAgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgMTI4LCA4NywgNDgsIDQ5LCA1NCwgCisgICAgMTI4LCA4NywgNDgsIDQ5LCA1MywgMTI4LCA4NywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDEyOCwgCisgICAgODcsIDQ4LCA0OSwgNTEsIDEyOCwgODcsIDQ4LCA0OSwgNTAsIDEyOCwgODcsIDQ4LCA0OSwgNDksIDEyOCwgODcsIDQ4LCAKKyAgICA0OSwgNDgsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDQ4LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NywgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA4NywgNDgsIDQ4LCA1NiwgMTI4LCA4NywgNDgsIDQ4LCA1NSwgMTI4LCA4NywgNDgsIDQ4LCA1NCwgCisgICAgMTI4LCA4NywgNDgsIDQ4LCA1MywgMTI4LCA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgCisgICAgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCAKKyAgICA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCAKKyAgICA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNzQsIDEyOCwgODYsIDg3LCAKKyAgICA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIDg2LCA4NSwgODUsIDEyOCwgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIDg2LCA4NSwgODAsIDEyOCwgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCAKKyAgICA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgODMsIDEyOCwgODYsIDg0LCAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgNTcsIDU1LCAxMjgsIDg2LCA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIAorICAgIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAxMjgsIDg2LCA4MywgNTcsIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIAorICAgIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCA4MywgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIDEyOCwgODYsIDgzLCA1NiwgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgCisgICAgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIDgzLCA1NiwgNTIsIDEyOCwgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgNDksIDEyOCwgODYsIDgzLCA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCAKKyAgICA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgODMsIDU1LCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCA1MywgMTI4LCA4NiwgODMsIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgCisgICAgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCA4NiwgODMsIDU1LCA0OSwgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU3LCAxMjgsIDg2LCA4MywgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAKKyAgICAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIDg2LCA4MywgNTQsIDUzLCAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgNTQsIDUwLCAxMjgsIDg2LCA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTcsIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIAorICAgIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCA1MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgCisgICAgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIDEyOCwgODYsIDgzLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgCisgICAgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIDgzLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCAKKyAgICA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCAKKyAgICA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIAorICAgIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCA0OCwgMTI4LCA4NiwgODMsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgCisgICAgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCisgICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCisgICAgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCisgICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCisgICAgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCisgICAgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCisgICAgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCAKKyAgICA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCisgICAgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgCisgICAgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCAKKyAgICA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgMTI4LCA4NiwgNzksIDg1LCAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCAKKyAgICAyMTEsIDg2LCA3OSwgODAsIDEyOCwgODYsIDc5LCA3OSwgNzMsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAKKyAgICAxMjgsIDg2LCA3OSwgNzYsIDg1LCA3NywgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIAorICAgIDc2LCA2OSwgODksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDg2LCA3OSwgNzYsIDY3LCA2NSwgNzgsIDc5LCAxMjgsIDg2LCA3OSwgCisgICAgNzYsIDY1LCA4MCwgODUsIDIwMywgODYsIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA4NiwgNzksIDczLCA2NywgNjksIDc2LCA2OSwgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjgsIAorICAgIDEyOCwgODYsIDc5LCA2NywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3OSwgNjcsIDY1LCAKKyAgICAyMDQsIDg2LCA3OSwgMTI4LCA4NiwgNzMsIDg5LCA3OSwgMTI4LCA4NiwgNzMsIDg4LCAxMjgsIDg2LCA3MywgODQsIDgyLCAKKyAgICA3MywgNzksIDc2LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDEyOCwgODYsIDczLCA4NCwgNjUsIAorICAgIDY5LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCAxMjgsIDg2LCA3MywgODQsIDEyOCwgODYsIDczLCA4MywgCisgICAgNzMsIDcxLCA3OSwgODQsIDcyLCA3MywgMTk1LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgODksIDY1LCAxMjgsIDg2LCAKKyAgICA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDE5MywgODYsIDczLCA4MiwgNzMsIAorICAgIDY1LCA3NywgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNzksIDEyOCwgODYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgCisgICAgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIDc5LCA3NiwgNzMsIDc4LCAxMjgsIDg2LCAKKyAgICA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MCwgCisgICAgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCAyMTAsIDg2LCAKKyAgICA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDE5NywgODYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc2LCA3NiwgNjUsIAorICAgIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDczLCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIDg2LCA3MywgNjksIDg3LCA3MywgCisgICAgNzgsIDE5OSwgODYsIDczLCA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgODQsIDEyOCwgODYsIDczLCAKKyAgICA2OSwgMjEyLCA4NiwgNzMsIDY5LCA4MCwgMTI4LCA4NiwgNzMsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDc0LCA0NSwgNTAsIAorICAgIDEyOCwgODYsIDczLCA2OCwgNzQsIDEyOCwgODYsIDczLCA2OCwgNjksIDc5LCA2NywgNjUsIDgzLCA4MywgNjksIDg0LCA4NCwgCisgICAgNjksIDEyOCwgODYsIDczLCA2OCwgNjksIDIwNywgODYsIDczLCA2OCwgNjUsIDEyOCwgODYsIDczLCA2NywgODQsIDc5LCAKKyAgICA4MiwgMjE3LCA4NiwgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDcwLCA2NSwgMTI4LCA4NiwgNjksIAorICAgIDg5LCA5MCwgMTI4LCA4NiwgNjksIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDg2LCA2OSwgODUsIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgCisgICAgNjksIDg1LCA2NSwgNjksIDEyOCwgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCAKKyAgICA4NiwgNjksIDgyLCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIAorICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCAKKyAgICA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCAKKyAgICA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCAKKyAgICA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCAKKyAgICA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCAKKyAgICA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCAKKyAgICA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCAKKyAgICA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKKyAgICA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKKyAgICA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIAorICAgIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgODMsIDEyOCwgODYsIDY5LCA4MiwgMTI4LCA4NiwgNjksIDgwLCAxMjgsIDg2LCAKKyAgICA2OSwgNzgsIDY4LCAxMjgsIDg2LCA2OSwgNzMsIDc2LCAxMjgsIDg2LCA2OSwgNzIsIDczLCA2NywgNzYsIDY5LCAxMjgsIAorICAgIDg2LCA2OSwgNzIsIDEyOCwgODYsIDY5LCAyMDAsIDg2LCA2OSwgNjksIDEyOCwgODYsIDY5LCAxOTcsIDg2LCA2OSwgNjgsIAorICAgIDY5LCAxMjgsIDg2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NiwgCisgICAgNjUsIDg4LCAxMjgsIDg2LCA2NSwgODYsIDEyOCwgODYsIDY1LCAyMTQsIDg2LCA2NSwgODUsIDEyOCwgODYsIDY1LCA4NCwgCisgICAgNzIsIDg5LCAxMjgsIDg2LCA2NSwgODQsIDEyOCwgODYsIDY1LCA4MywgODQsIDc4LCA2OSwgODMsIDIxMSwgODYsIDY1LCAKKyAgICA4MywgNzMsIDgzLCAxMjgsIDg2LCA2NSwgODIsIDg5LCAyMTEsIDg2LCA2NSwgODIsIDczLCA3NSwgNjUsIDEyOCwgODYsIAorICAgIDY1LCA4MiwgNzMsIDY1LCA3OCwgODQsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgMjEyLCA4NiwgNjUsIDgyLCA3MywgCisgICAgNjUsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDE5MywgODYsIDY1LCA4MiwgNjksIDczLCA2NSwgMjAxLCA4NiwgNjUsIDgyLCAKKyAgICA2OSwgNzMsIDE5MywgODYsIDY1LCA4MCwgNzksIDg1LCA4MiwgODMsIDEyOCwgODYsIDY1LCA4MCwgMTI4LCA4NiwgNjUsIAorICAgIDc4LCA2OSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgODYsIDY1LCA3NywgCisgICAgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDE5MywgODYsIDY1LCA3NiwgNzYsIDY5LCA4OSwgMTI4LCA4NiwgNjUsIDc0LCAKKyAgICAxMjgsIDg2LCA2NSwgNzMsIDEyOCwgODYsIDY1LCA3MiwgMTI4LCA4NiwgNjUsIDIwMCwgODYsIDY1LCA2NSwgODYsIDg1LCAKKyAgICAxMjgsIDg2LCA2NSwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCAxMjgsIDg2LCAKKyAgICA0OCwgNTEsIDU3LCAxMjgsIDg2LCA0OCwgNTEsIDU2LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA4NiwgNDgsIAorICAgIDUxLCA1NSwgMTI4LCA4NiwgNDgsIDUxLCA1NCwgMTI4LCA4NiwgNDgsIDUxLCA1MywgMTI4LCA4NiwgNDgsIDUxLCA1MiwgCisgICAgMTI4LCA4NiwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDEyOCwgODYsIDQ4LCA1MSwgNTAsIDEyOCwgCisgICAgODYsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCAxMjgsIDg2LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCAKKyAgICA4NiwgNDgsIDUxLCA0OCwgMTI4LCA4NiwgNDgsIDUwLCA1NywgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDEyOCwgODYsIAorICAgIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCAxMjgsIDg2LCA0OCwgNTAsIDU1LCAxMjgsIDg2LCA0OCwgCisgICAgNTAsIDU0LCAxMjgsIDg2LCA0OCwgNTAsIDUzLCAxMjgsIDg2LCA0OCwgNTAsIDUyLCAxMjgsIDg2LCA0OCwgNTAsIDUxLCAKKyAgICA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgMTI4LCA4NiwgNDgsIDUwLCA1MCwgMTI4LCA4NiwgNDgsIDUwLCA0OSwgMTI4LCAKKyAgICA4NiwgNDgsIDUwLCA0OCwgNzYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc1LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NCwgCisgICAgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzMsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcyLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAKKyAgICA3MSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzAsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY5LCAxMjgsIDg2LCA0OCwgNTAsIAorICAgIDQ4LCA2OCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjcsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY2LCAxMjgsIDg2LCA0OCwgCisgICAgNTAsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgMTI4LCA4NiwgNDgsIDQ5LCA1NywgMTI4LCA4NiwgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA4NiwgNDgsIDQ5LCA1NSwgMTI4LCA4NiwgNDgsIDQ5LCA1NCwgMTI4LCA4NiwgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA4NiwgNDgsIDQ5LCA1MiwgMTI4LCA4NiwgNDgsIDQ5LCA1MSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgNjYsIDEyOCwgODYsIAorICAgIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDksIDUwLCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NywgMTI4LCA4NiwgCisgICAgNDgsIDQ5LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCAxMjgsIDg2LCAKKyAgICA0OCwgNDksIDQ4LCAxMjgsIDg2LCA0OCwgNDgsIDU3LCAxMjgsIDg2LCA0OCwgNDgsIDU2LCAxMjgsIDg2LCA0OCwgNDgsIAorICAgIDU1LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDEyOCwgODYsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgODYsIDQ4LCA0OCwgNTMsIDEyOCwgODYsIDQ4LCA0OCwgNTIsIDEyOCwgODYsIDQ4LCA0OCwgNTEsIDEyOCwgCisgICAgODYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDUwLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MywgMTI4LCAKKyAgICA4NiwgNDgsIDQ4LCA0OSwgNzIsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcxLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MCwgCisgICAgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjksIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY4LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCAKKyAgICA2NywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNDgsIAorICAgIDQ5LCAxMjgsIDg1LCA5MCwgODUsIDEyOCwgODUsIDkwLCA1MSwgMTI4LCA4NSwgOTAsIDE3OSwgODUsIDg5LCA2NSwgNzgsIAorICAgIDc4LCA2NSwgMTI4LCA4NSwgODksIDEyOCwgODUsIDg3LCA4NSwgMTI4LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4NSwgODUsIDg1LCA4NSwgMTI4LCA4NSwgODUsIDg1LCA1MSwgMTI4LCA4NSwgODUsIDg1LCA1MCwgMTI4LCA4NSwgCisgICAgODUsIDY5LCAxMjgsIDg1LCA4NCwgODUsIDc1LCA3MywgMTI4LCA4NSwgODMsIDgzLCA4NSwgNTEsIDEyOCwgODUsIDgzLCAKKyAgICA4MywgODUsIDEyOCwgODUsIDgzLCA3MiwgODgsIDEyOCwgODUsIDgzLCA3MiwgODUsIDc3LCA4OCwgMTI4LCA4NSwgODMsIAorICAgIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODMsIDcyLCA1MCwgMTI4LCA4NSwgODMsIDcyLCAxMjgsIDg1LCA4MywgCisgICAgMjAwLCA4NSwgODMsIDY5LCAxOTYsIDg1LCA4MywgNjksIDQ1LCA1MCwgMTI4LCA4NSwgODMsIDY5LCA0NSwgNDksIDEyOCwgCisgICAgODUsIDgzLCA2OSwgMTI4LCA4NSwgODMsIDE5NywgODUsIDgyLCA4NSwgMjE4LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NSwgCisgICAgODIsIDg1LCA2OCwgNjUsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDE5MywgODUsIDgyLCA4NSwgMTI4LCA4NSwgODIsIDIxMywgCisgICAgODUsIDgyLCA3OCwgMTI4LCA4NSwgODIsIDczLCA3OCwgNjksIDEyOCwgODUsIDgyLCA3MywgNTEsIDEyOCwgODUsIDgyLCAKKyAgICA3MywgMTI4LCA4NSwgODIsIDY1LCA3OCwgODUsIDgzLCAxMjgsIDg1LCA4MiwgNjUsIDEyOCwgODUsIDgyLCA1MiwgMTI4LCAKKyAgICA4NSwgODIsIDUwLCAxMjgsIDg1LCA4MiwgMTc4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4NSwgODAsIAorICAgIDg3LCA2NSwgODIsIDY4LCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIDg0LCA4NSwgODIsIDc4LCAKKyAgICAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgODUsIAorICAgIDgwLCA4MywgNzMsIDY4LCA2OSwgNDUsIDY4LCA3OSwgODcsIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4NSwgCisgICAgODAsIDgwLCA2OSwgODIsIDEyOCwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIDcyLCA3NywgNjUsIDc4LCAKKyAgICA3MywgODksIDY1LCAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDg1LCA3OSwgNzgsIAorICAgIDEyOCwgODUsIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIDE5NiwgODUsIDc4LCA3NSwgCisgICAgNzgsIDc5LCA4NywgNzgsIDEyOCwgODUsIDc4LCA3NSwgMTI4LCA4NSwgNzgsIDczLCA4NiwgNjksIDgyLCA4MywgNjUsIAorICAgIDIwNCwgODUsIDc4LCA3MywgODQsIDg5LCAxMjgsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDg1LCA3OCwgNzMsIDIxMiwgODUsIAorICAgIDc4LCA3MywgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzMsIDc5LCAyMDYsIDg1LCA3OCwgNzMsIDcwLCA3OSwgODIsIDc3LCAKKyAgICAxMjgsIDg1LCA3OCwgNzMsIDcwLCA3MywgNjksIDE5NiwgODUsIDc4LCA3MywgNjcsIDc5LCA4MiwgMjA2LCA4NSwgNzgsIAorICAgIDY4LCAyMDcsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODQsIDczLCA2OSwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDc2LCA3MywgCisgICAgNzgsIDE5NywgODUsIDc4LCA2OCwgNjksIDgyLCA2OCwgNzksIDg0LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjYsIDY1LCAKKyAgICA4MiwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgODUsIDc4LCA2OCwgNjksIDIxMCwgODUsIDc4LCA2NywgNzMsIAorICAgIDE5MywgODUsIDc4LCA2NywgNjksIDgyLCA4NCwgNjUsIDczLCA3OCwgODQsIDIxNywgODUsIDc4LCA2NiwgNzYsIDY5LCA3OCwgCisgICAgNjgsIDY5LCAxOTYsIDg1LCA3OCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCA2OCwgMTI4LCA4NSwgNzgsIDY1LCAKKyAgICA4MCwgMTI4LCA4NSwgNzgsIDY1LCA3NywgODUsIDgzLCA2OSwgMTk2LCA4NSwgNzgsIDY1LCAxMjgsIDg1LCAyMDYsIDg1LCAKKyAgICA3NywgODUsIDc3LCAxMjgsIDg1LCA3NywgODUsIDIwNSwgODUsIDc3LCA2NiwgODIsIDY5LCA3NiwgNzYsIDY1LCAxMjgsIAorICAgIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCAxOTMsIDg1LCA3NywgNjYsIDczLCA3OCwgMTI4LCA4NSwgNzUsIDg1LCAKKyAgICAxMjgsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA4NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgODUsIAorICAgIDc1LCA2NSwgODIsIDE5MywgODUsIDc1LCAxMjgsIDg1LCA3MywgNzYsIDc2LCA2OSwgNjUsIDc4LCA3OCwgMTI4LCA4NSwgCisgICAgNzMsIDcxLCA3MiwgODUsIDIxMCwgODUsIDcyLCA2OCwgMTI4LCA4NSwgNzEsIDY1LCA4MiwgNzMsIDg0LCA3MywgMTk1LCAKICAgICA4NSwgNjksIDg5LCAxMjgsIDg1LCA2OSwgNzMsIDEyOCwgODUsIDY5LCA2OSwgMTI4LCA4NSwgNjksIDY1LCAxMjgsIDg1LCAKICAgICA2OCwgODUsIDcxLCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCAxOTMsIAogICAgIDg1LCA2OCwgNjUsIDY1LCA4NCwgMTI4LCA4NSwgNjgsIDEyOCwgODUsIDE5NiwgODUsIDY3LCAxMjgsIDg1LCA2NiwgODUsIApAQCAtNTM4LDY4ICs1NDEsNzEgQEAKICAgICA4NywgNzksIDQ1LCA2OSwgMjA1LCA4NCwgODcsIDc5LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDg0LCA4NywgNzMsIAogICAgIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIDg0LCA4NywgNzMsIDczLCAKICAgICAxMjgsIDg0LCA4NywgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgNzksIDEyOCwgODQsIAotICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAKLSAgICA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIAotICAgIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCAKLSAgICA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIAotICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCAKLSAgICA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgCi0gICAgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCA4NCwgODcsIDY5LCAKLSAgICA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCAxMjgsIAotICAgIDg0LCA4NywgNjksIDc2LCA4NiwgMTk3LCA4NCwgODcsIDY5LCA3NiwgNzAsIDg0LCA3MiwgODMsIDEyOCwgODQsIDg3LCA2OSwgCi0gICAgNzYsIDcwLCA4NCwgNzIsIDEyOCwgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgMTI4LCA4NCwgODcsIDY1LCAKLSAgICAxMjgsIDg0LCA4NiwgODIsIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCA2OCwgODUsIDIxMCwgODQsIAotICAgIDg1LCA4OCwgMTI4LCA4NCwgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODUsIDg0LCA4NCwgCi0gICAgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIDg0LCAxMjgsIDg0LCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgNjksIDEyOCwgODQsIAotICAgIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIDEyOCwgODQsIDg1LCA4MiwgCi0gICAgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNzUsIDczLCA4MywgMjAwLCA4NCwgODUsIDgyLCAKLSAgICA3NSwgNzMsIDE5NSwgODQsIDg1LCA4MiwgNzUsIDY5LCA4OSwgMTI4LCA4NCwgODUsIDgyLCA2NiwgNjUsIDc4LCAxMjgsIAotICAgIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIDc5LCA4NCwgCi0gICAgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgMTI4LCA4NCwgCi0gICAgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgMTI4LCAKLSAgICA4NCwgODUsIDIwNSwgODQsIDg1LCA3NiwgNzMsIDgwLCAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIDg0LCA3MywgODMsIAotICAgIDEyOCwgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgNTAsIDEyOCwgODQsIAotICAgIDg1LCA3MSwgMTc4LCA4NCwgODUsIDY2LCAxMjgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgCi0gICAgODAsIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg0LCA4NSwgCi0gICAgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIAotICAgIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAxMjgsIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAxMjgsIAotICAgIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCA4NCwgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCA4NCwgCi0gICAgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDczLCAKLSAgICA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgMTI4LCAKLSAgICA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgODQsIAotICAgIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCA4NCwgCi0gICAgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIDg0LCAKLSAgICA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgODksIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCA4NCwgCi0gICAgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjYsIDEyOCwgCi0gICAgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCAKLSAgICA2NSwgMTI4LCA4NCwgODMsIDc5LCAyMTQsIDg0LCA4MywgNzMsIDg1LCAxMjgsIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIAotICAgIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDIwMywgODQsIDgzLCA3MiwgCi0gICAgNzksIDc5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCA2OSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNjksIDcxLCAxMjgsIDg0LCAKLSAgICA4MywgNzIsIDY5LCAxOTksIDg0LCA4MywgNzIsIDY5LCA2OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIAotICAgIDgzLCA3MiwgNjUsIDE5NCwgODQsIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIDg0LCA4MywgCi0gICAgNjksIDY5LCA2NiwgMTI4LCA4NCwgODMsIDY1LCA2OCwgNzMsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDIwMSwgODQsIDgzLCAKLSAgICA2NSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjUsIDY4LCA3MywgODksIDEyOCwgODQsIDgzLCA2NSwgNjUsIDEyOCwgODQsIAotICAgIDgzLCAxOTMsIDg0LCA4MiwgODksIDY2LCA3NiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgODUsIDg0LCA3MiwgMTI4LCA4NCwgCi0gICAgODIsIDg1LCA3OCwgNzUsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDY3LCA2NSwgODQsIDY5LCAxOTYsIDg0LCA4MiwgODUsIDc3LCAKLSAgICA4MCwgNjksIDg0LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIAotICAgIDU2LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU0LCAKLSAgICAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUzLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUyLCAxMjgsIAotICAgIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUxLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OSwgMTI4LCA4NCwgCi0gICAgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDgsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NiwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTUsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU0LCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTIsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDUxLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNDksIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDQ4LCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDY5LCAxMjgsIDg0LCA4MiwgODUsIDY3LCA3NSwgMTI4LCAKLSAgICA4NCwgODIsIDc5LCA4MCwgNzMsIDY3LCA2NSwgMjA0LCA4NCwgODIsIDc5LCA4MCwgNzIsIDg5LCAxMjgsIDg0LCA4MiwgNzksIAotICAgIDc3LCA3MywgNzUsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCAKLSAgICA3OSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCi0gICAgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIAotICAgIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgMjA2LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCi0gICAgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA4NSwgODMsIAorICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgMjA3LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDcyLCAKKyAgICA4MiwgNjksIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4MywgNzMsIDg4LCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc4LCA4NCwgODksIDQ1LCA4MywgNjksIDg2LCA2OSwgNzgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc5LCAKKyAgICA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc4LCA3MywgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDczLCAKKyAgICA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjAwLCA4NCwgODcsIAorICAgIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDEyOCwgCisgICAgODQsIDg3LCA2OSwgNzgsIDg0LCAyMTcsIDg0LCA4NywgNjksIDc4LCA4NCwgNzMsIDY5LCA4NCwgNzIsIDgzLCAxMjgsIDg0LCAKKyAgICA4NywgNjksIDc4LCA4NCwgNzMsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIAorICAgIDE5NywgODQsIDg3LCA2OSwgNzYsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDg0LCA4NywgNjksIDc2LCA3MCwgODQsIDcyLCAKKyAgICAxMjgsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIDEyOCwgODQsIDg3LCA2NSwgMTI4LCA4NCwgODYsIDgyLCAKKyAgICA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgNjgsIDg1LCAyMTAsIDg0LCA4NSwgODgsIDY5LCA2OCwgNzksIAorICAgIDEyOCwgODQsIDg1LCA4OCwgMTI4LCA4NCwgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODUsIAorICAgIDg0LCA4NCwgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIDg0LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgNjksIAorICAgIDEyOCwgODQsIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIDEyOCwgCisgICAgODQsIDg1LCA4MiwgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNzUsIDczLCA4MywgMjAwLCAKKyAgICA4NCwgODUsIDgyLCA3NSwgNzMsIDE5NSwgODQsIDg1LCA4MiwgNzUsIDY5LCA4OSwgMTI4LCA4NCwgODUsIDgyLCA2NiwgNjUsIAorICAgIDc4LCAxMjgsIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIAorICAgIDc5LCA4NCwgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgCisgICAgMTI4LCA4NCwgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NiwgNzYsIDY5LCAyMTAsIDg0LCAKKyAgICA4NSwgNzcsIDY1LCA2OSwgMTI4LCA4NCwgODUsIDc3LCAxMjgsIDg0LCA4NSwgMjA1LCA4NCwgODUsIDc2LCA3MywgODAsIAorICAgIDEyOCwgODQsIDg1LCA3NSwgODcsIDY5LCA3OCwgODQsIDczLCA4MywgMTI4LCA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgCisgICAgNzEsIDgyLCA3MywgMjAzLCA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgODUsIDcxLCAxNzgsIDg0LCA4NSwgNjYsIDEyOCwgCisgICAgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA4NCwgODUsIDY1LCA2OSwgMTI4LCAKKyAgICA4NCwgMjEzLCA4NCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA3MSwgMTI4LCA4NCwgODQsIAorICAgIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIDEyOCwgCisgICAgODQsIDg0LCA4NCwgNjUsIDEyOCwgODQsIDg0LCA4MywgODUsIDEyOCwgODQsIDg0LCA4MywgNzksIDEyOCwgODQsIDg0LCAKKyAgICA4MywgNzMsIDEyOCwgODQsIDg0LCA4MywgNjksIDY5LCAxMjgsIDg0LCA4NCwgODMsIDY5LCAxMjgsIDg0LCA4NCwgODMsIAorICAgIDY1LCAxMjgsIDg0LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzMsIDczLCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgODQsIAorICAgIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgCisgICAgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCA4NCwgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIDg0LCAKKyAgICA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIAorICAgIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgODQsIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgCisgICAgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDg0LCAKKyAgICA2NSwgODUsIDEyOCwgODQsIDg0LCA2NSwgNzMsIDEyOCwgODQsIDg0LCA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgMTI4LCAKKyAgICA4NCwgODMsIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NiwgMTI4LCA4NCwgODMsIDg3LCA2NSwgMTI4LCA4NCwgODMsIAorICAgIDg2LCAxMjgsIDg0LCA4MywgODMsIDY5LCAxMjgsIDg0LCA4MywgODMsIDY1LCAxMjgsIDg0LCA4MywgNzksIDIxNCwgODQsIAorICAgIDgzLCA3MywgODUsIDEyOCwgODQsIDgzLCA3MiwgODUsIDcxLCA4MywgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDc1LCAKKyAgICAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgMjAzLCA4NCwgODMsIDcyLCA3OSwgNzksIDc0LCAxMjgsIDg0LCA4MywgNzIsIAorICAgIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgNjksIDE5OSwgODQsIDgzLCA3MiwgCisgICAgNjksIDY5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgODMsIDcyLCA2NSwgMTk0LCA4NCwgODMsIDcyLCAKKyAgICA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIDEyOCwgODQsIDgzLCA2OSwgNjksIDY2LCAxMjgsIDg0LCA4MywgNjUsIAorICAgIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NiwgMTI4LCA4NCwgODMsIDY1LCA2NSwgCisgICAgNjgsIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCAKKyAgICA3MywgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgCisgICAgNzcsIDgwLCA0NSwgNTcsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTYsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCAKKyAgICA0NSwgNTUsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTQsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTMsIAorICAgIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTIsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTEsIDEyOCwgCisgICAgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OCwgMTI4LCAKKyAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTcsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU2LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NSwgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTQsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUzLCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTEsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUwLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OSwgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNDgsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNjksIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDg0LCA4MiwgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCAKKyAgICA3MSwgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgCisgICAgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIAorICAgIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgCisgICAgNzUsIDc5LCAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCAKKyAgICA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgCiAgICAgMTI4LCA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAyMDEsIDg0LCA4MiwgNzksIDY5LCA5MCwgNjksIDc4LCAKICAgICA3MywgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIDEyOCwgODQsIDgyLCA3MywgODQsIDc5LCAyMTEsIAogICAgIDg0LCA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA4MywgNzMsIDc3LCAKQEAgLTY4OCwyNDkgKzY5NCwyNTAgQEAKICAgICAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDcyLCA4MiwgNjksIAogICAgIDY5LCA0NSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgMjEwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4MCwgNjksIDgyLCAKICAgICA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIAotICAgIDQ1LCA2OSwgMjA1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDY3LCA3MywgCi0gICAgODIsIDY3LCA3NiwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCAKLSAgICA2OCwgODMsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIAotICAgIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAKLSAgICAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIDg0LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCAKLSAgICA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA3OSwgNzcsIDEyOCwgODQsIDcyLCA3OSwgNzQsIDEyOCwgODQsIAotICAgIDcyLCA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgCi0gICAgODQsIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIAotICAgIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCA4MiwgNjgsIDQ1LCA4MywgODQsIDY1LCAKLSAgICA3MSwgMTk3LCA4NCwgNzIsIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgODIsIDE5NiwgODQsIDcyLCA3MywgNzgsIAotICAgIDc1LCA3MywgNzgsIDE5OSwgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIDg0LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA3MywgNjcsIDIwMywgODQsIDcyLCA3MywgNjUsIDY2LCAxMjgsIDg0LCAKLSAgICA3MiwgNjksIDg5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCAxMjgsIAotICAgIDg0LCA3MiwgNjksIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgMTkzLCA4NCwgNzIsIDY5LCA4MywgODAsIDczLCA2NSwgCi0gICAgMjA2LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCA4MywgMTI4LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCAyMTEsIDg0LCAKLSAgICA3MiwgNjksIDIxMSwgODQsIDcyLCA2OSwgODIsIDc3LCA3OSwgNzcsIDY5LCA4NCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgNjksIAotICAgIDgyLCA3NywgNzksIDY4LCA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCAKLSAgICA4MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIAotICAgIDg0LCA3MywgODMsIDc3LCA3OSwgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgCi0gICAgODQsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDY5LCA2NSwgMTI4LCA4NCwgNzIsIDE5NywgCi0gICAgODQsIDcyLCA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCAKLSAgICA3MiwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIAotICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgCi0gICAgNjUsIDc0LCAxMjgsIDg0LCA3MiwgNjUsIDIwMSwgODQsIDcyLCA2NSwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCAKLSAgICA2NSwgNzgsIDE5MywgODQsIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCA4NCwgNzIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIAotICAgIDg0LCA2OSwgODgsIDg0LCAxMjgsIDg0LCA2OSwgODgsIDIxMiwgODQsIDY5LCA4OCwgMTI4LCA4NCwgNjksIDg2LCA3MywgCi0gICAgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODcsIDY5LCAKLSAgICA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIAotICAgIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgCi0gICAgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCAKLSAgICA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgODQsIAotICAgIDY5LCA4NCwgODIsIDY1LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgCi0gICAgODQsIDIwMCwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzksIDIxMSwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzMsIDc3LCAKLSAgICA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA4NCwgMTI4LCA4NCwgNjksIDIxMiwgODQsIDY5LCA4MywgODMsIAotICAgIDY5LCA4MiwgNjUsIDEyOCwgODQsIDY5LCA4MywgODMsIDY5LCA4MiwgMTkzLCA4NCwgNjksIDgzLCA4MywgNjUsIDgyLCA3OSwgCi0gICAgMjA2LCA4NCwgNjksIDgzLCAyMDAsIDg0LCA2OSwgODIsIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDg0LCAKLSAgICA2OSwgODAsIDEyOCwgODQsIDY5LCA3OCwgODUsIDg0LCA3OSwgMTI4LCA4NCwgNjksIDc4LCA4NSwgMTI4LCA4NCwgNjksIAotICAgIDc4LCAyMTMsIDg0LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4NCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjksIDc4LCA4MywgCi0gICAgNjksIDEyOCwgODQsIDY5LCA3OCwgODMsIDE5NywgODQsIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA3OCwgMjExLCA4NCwgCi0gICAgNjksIDc4LCA3OCwgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIDg1LCAyMTEsIDg0LCAKLSAgICA2OSwgNzYsIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODQsIAotICAgIDY5LCA3NiwgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgCi0gICAgNjksIDc2LCA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgNjksIAotICAgIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgNjUsIDEyOCwgCi0gICAgODQsIDY5LCA3NiwgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzUsIDEyOCwgODQsIDY5LCA3MywgODcsIDgzLCAKLSAgICAxMjgsIDg0LCA2OSwgNzEsIDY5LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIAotICAgIDIwMCwgODQsIDY5LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIAotICAgIDY5LCA2OCwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgCi0gICAgODAsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIAotICAgIDcyLCA2NSwgNzgsIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCAKLSAgICA2NiwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIAotICAgIDg0LCA2OSwgNDUsIDg1LCAxMjgsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAKLSAgICAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIAotICAgIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCAxMjgsIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIAotICAgIDEyOCwgODQsIDY1LCA4OCwgMTI4LCA4NCwgNjUsIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgCi0gICAgODcsIDY1LCAxMjgsIDg0LCA2NSwgODcsIDEyOCwgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCAKLSAgICA2NSwgODYsIDEyOCwgODQsIDY1LCAyMTQsIDg0LCA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCA4NSwgNzcsIAotICAgIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIDg0LCA2NSwgODQsIDg3LCA2OSwgCi0gICAgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgMTI4LCA4NCwgNjUsIDgzLCAKLSAgICAxMjgsIDg0LCA2NSwgODIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIAotICAgIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDEyOCwgODQsIDY1LCA4MiwgNzEsIDY5LCA4NCwgMTI4LCA4NCwgNjUsIDgxLCAKLSAgICAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgMTI4LCA4NCwgNjUsIDgwLCAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCAKLSAgICA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgNjksIDE5NiwgODQsIDY1LCA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCAyMTIsIDg0LCAKLSAgICA2NSwgNzgsIDE5OSwgODQsIDY1LCA3OCwgNjUsIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIAotICAgIDc3LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgCi0gICAgMjA0LCA4NCwgNjUsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCAKLSAgICA2OSwgNzgsIDg0LCA4MywgMTI4LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIAotICAgIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgCi0gICAgMTI4LCA4NCwgNjUsIDc1LCAxODAsIDg0LCA2NSwgNzUsIDEyOCwgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgCi0gICAgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCAKLSAgICA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIAotICAgIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3OSwgCi0gICAgMTI4LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCA2NiwgODMsIAotICAgIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDg0LCA2NSwgNjYsIDEyOCwgODQsIAotICAgIDY1LCAxOTQsIDg0LCA2NSwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgCi0gICAgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCAKLSAgICA2NSwgNzAsIDEyOCwgODQsIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIAotICAgIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIAotICAgIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgCi0gICAgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIAotICAgIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIAotICAgIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgCi0gICAgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAKLSAgICAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgCi0gICAgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAKLSAgICA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCAKLSAgICA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgCi0gICAgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAKLSAgICAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAKLSAgICAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgCi0gICAgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgzLCA4NCwgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCAKLSAgICA4MiwgNzcsIDY1LCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIAotICAgIDc4LCA3MSwgNjksIDEyOCwgODMsIDg5LCA4MiwgNzMsIDY1LCAxOTUsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgCi0gICAgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCAKLSAgICA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgODksIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgCi0gICAgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc5LCA3MSwgODUsIDY5LCAxMjgsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAotICAgIDE5MywgODMsIDg5LCA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgCi0gICAgODQsIDgyLCA4OSwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgODMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NywgMTI4LCAKLSAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgCi0gICAgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTIsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIAotICAgIDc5LCA3NiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU2LCAxMjgsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NCwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA1MSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgCi0gICAgNzksIDc2LCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDg5LCAKLSAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUxLCAxMjgsIAotICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAKLSAgICA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNDksIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAotICAgIDQ5LCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCAxMjgsIDgzLCA4NywgOTAsIDEyOCwgCi0gICAgODMsIDg3LCA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCA4MiwgNjgsIAotICAgIDEyOCwgODMsIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCA4MywgODcsIAotICAgIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg3LCA3MywgCi0gICAgNzMsIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgMTI4LCA4MywgCi0gICAgODcsIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgODMsIDg3LCAKLSAgICA2NSwgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAxMjgsIAotICAgIDgzLCA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIDEyOCwgCi0gICAgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIDg1LCAKLSAgICA4NCwgODIsIDE5MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIAotICAgIDgzLCA4NSwgODMsIDcyLCA3MywgMTI4LCA4MywgODUsIDgyLCA4OSwgNjUsIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCAKLSAgICA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgODMsIDg1LCA4MiwgNzAsIDY1LCA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgCi0gICAgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgODIsIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgCi0gICAgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCA2NSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCAKLSAgICA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIAotICAgIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgCi0gICAgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIDgzLCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIAotICAgIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAyMTAsIDgzLCA4NSwgODAsIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIAotICAgIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCA3OSwgMTI4LCA4MywgODUsIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgCi0gICAgODIsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCAKLSAgICA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgODUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIAotICAgIDgyLCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA4MywgODUsIDc4LCAxMjgsIDgzLCA4NSwgCi0gICAgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNzcsIDY1LCA4MywgNzIsIDEyOCwgCi0gICAgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNzUsIDg1LCA3OCwgMTI4LCAKLSAgICA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgODUsIDc1LCAyMTMsIDgzLCA4NSwgNzMsIAotICAgIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCA4MywgODUsIDczLCAyMTIsIDgzLCA4NSwgCi0gICAgNzIsIDg1LCA4MiwgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgNjgsIDUwLCAxMjgsIDgzLCA4NSwgNjgsIDEyOCwgCi0gICAgODMsIDg1LCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODUsIDY3LCA3NSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIAotICAgIDIwMywgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAKLSAgICAyMTEsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIAotICAgIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIAotICAgIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgNjksIDIxMiwgCi0gICAgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIAotICAgIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCAKLSAgICA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA3NCwgNzksIDczLCAKLSAgICA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCA2NiwgNzMsIDg0LCA3OSwgCi0gICAgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIAotICAgIDIwOCwgODMsIDg1LCA2NiwgMTI4LCA4MywgODUsIDY1LCA3NywgMTI4LCA4MywgODUsIDY1LCA2OSwgODQsIDEyOCwgODMsIAotICAgIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA4NSwgNjUsIDY2LCAxMjgsIDgzLCA4NSwgCi0gICAgNjUsIDEyOCwgODMsIDIxMywgODMsIDg0LCA4OCwgMTI4LCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgODQsIDg1LCA2OCwgCi0gICAgODksIDEyOCwgODMsIDg0LCA4NSwgNjgsIDczLCAyMDcsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCAKLSAgICA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIAotICAgIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCA3MywgNzUsIDY5LCA4NCwgCi0gICAgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDY4LCAKLSAgICA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3NiwgMjE3LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIAotICAgIDE5NiwgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgCi0gICAgODIsIDY5LCA3OCwgNzEsIDg0LCA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNjUsIDg3LCA2NiwgNjksIDgyLCA4MiwgODksIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCAKLSAgICA4NCwgODIsIDY1LCA4NCwgNzMsIDY1LCAyMDYsIDgzLCA4NCwgODIsIDY1LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIAotICAgIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAKLSAgICA4NCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIDY5LCAKLSAgICAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIAotICAgIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIDEyOCwgCi0gICAgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIDg0LCAKLSAgICA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzksIDY3LCAyMDMsIDgzLCA4NCwgNzMsIDgyLCA4MiwgODUsIDIwOCwgODMsIAotICAgIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA4MywgODQsIDczLCA3NiwgMjA0LCA4MywgODQsIDczLCA3NiwgMTk3LCA4MywgCi0gICAgODQsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA4NCwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NCwgNzMsIDY3LCAKLSAgICAyMDMsIDgzLCA4NCwgNjksIDgyLCA2OSwgNzksIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzgsIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDgzLCA4NCwgNjksIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCA3NywgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA4NCwgNjksIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgMjA1LCA4MywgODQsIDY1LCAKLSAgICA4NiwgODIsIDc5LCA4NSwgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIAotICAgIDc5LCAyMTEsIDgzLCA4NCwgNjUsIDg1LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA4NSwgMTk3LCA4MywgCi0gICAgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgODMsIDg0LCA2NSwgODIsIDIxMiwgODMsIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIAotICAgIDgyLCA4MiwgNjksIDE5NiwgODMsIDg0LCA2NSwgODIsIDc1LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgCi0gICAgNjUsIDIxMCwgODMsIDg0LCA2NSwgNzgsIDY4LCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCAKLSAgICA2NSwgODIsIDE5NiwgODMsIDg0LCA2NSwgNzgsIDY4LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIAotICAgIDc3LCA4MCwgNjksIDE5NiwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgCi0gICAgMTI4LCA4MywgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA4MywgODQsIDY1LCAKLSAgICA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgCi0gICAgNzksIDEyOCwgODMsIDg0LCA1MCwgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgCi0gICAgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCAKLSAgICA4OSwgMTI4LCA4MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODMsIDg1LCA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCAKLSAgICA4MywgODMsIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIAotICAgIDc5LCA4MCwgMTI4LCA4MywgODMsIDc5LCA3OSwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIAotICAgIDgzLCA4MywgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgCi0gICAgNzMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCAKLSAgICA3MywgMTI4LCA4MywgODMsIDcyLCA3MywgNzgsIDEyOCwgODMsIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIAotICAgIDEyOCwgODMsIDgzLCA2OSwgODAsIDEyOCwgODMsIDgzLCA2OSwgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgODUsIDEyOCwgODMsIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIAotICAgIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDczLCAKLSAgICA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIAotICAgIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgNjUsIDY5LCA2NSwgCi0gICAgMTI4LCA4MywgODMsIDY1LCA3MywgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDUxLCAxMjgsIDgzLCA4MywgCi0gICAgNTAsIDEyOCwgODMsIDgyLCAxMjgsIDgzLCA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIDgyLCAKLSAgICA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgNzEsIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCA2OSwgNjgsIAorICAgIDQ1LCA3NiwgNjksIDcxLCA3MSwgNjksIDE5NiwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgCisgICAgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgODQsIDcyLCAKKyAgICA4MiwgNjksIDY1LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzksIAorICAgIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgCisgICAgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCAKKyAgICA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIAorICAgIDg0LCA3MiwgNzksIDc3LCAxMjgsIDg0LCA3MiwgNzksIDc0LCAxMjgsIDg0LCA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgCisgICAgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCAKKyAgICA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgCisgICAgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCA4MywgMTI4LCA4NCwgCisgICAgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCA0NSwgODMsIDg0LCA2NSwgNzEsIDE5NywgODQsIDcyLCAKKyAgICA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDg0LCA3MiwgNzMsIDczLCAxMjgsIDg0LCA3MiwgNzMsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCAKKyAgICAyMDAsIDg0LCA3MiwgNzMsIDY3LCAyMDMsIDg0LCA3MiwgNzMsIDY1LCA2NiwgMTI4LCA4NCwgNzIsIDY5LCA4OSwgMTI4LCAKKyAgICA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNjUsIAorICAgIDEyOCwgODQsIDcyLCA2OSwgODQsIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIDIwNiwgODQsIDcyLCA2OSwgCisgICAgODMsIDY5LCA3OSwgODMsIDEyOCwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgNzIsIDY5LCAyMTEsIDg0LCAKKyAgICA3MiwgNjksIDgyLCA3NywgNzksIDc3LCA2OSwgODQsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgCisgICAgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCAKKyAgICA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIAorICAgIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCA2OSwgNjUsIDEyOCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgNjUsIDg3LCAxMjgsIAorICAgIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzcsIDY5LCA2OCwgNzIsIAorICAgIDEyOCwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCA3NCwgMTI4LCA4NCwgNzIsIAorICAgIDY1LCAyMDEsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgNjUsIDc4LCAxOTMsIDg0LCA3MiwgCisgICAgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NCwgNjksIDg4LCA4NCwgMTI4LCAKKyAgICA4NCwgNjksIDg4LCAyMTIsIDg0LCA2OSwgODgsIDEyOCwgODQsIDY5LCA4NiwgNzMsIDgyLCAxMjgsIDg0LCA2OSwgODUsIAorICAgIDg0LCA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg3LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4NCwgNjksIDg1LCAKKyAgICA2NSwgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNzMsIDc3LCA3OSwgODUsIAorICAgIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgwLCA3NiwgCisgICAgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCAKKyAgICA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDg0LCAyMDAsIDg0LCA2OSwgODQsIAorICAgIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDY1LCAxMjgsIDg0LCAKKyAgICA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIDIwNiwgODQsIDY5LCA4MywgCisgICAgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgNjksIDgwLCAxMjgsIDg0LCAKKyAgICA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCA3OCwgMjEzLCA4NCwgNjksIAorICAgIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgODMsIDY5LCAxMjgsIDg0LCA2OSwgCisgICAgNzgsIDgzLCAxOTcsIDg0LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIDczLCAKKyAgICAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIAorICAgIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCA4NSwgCisgICAgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIDczLCAKKyAgICA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgNjksIAorICAgIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA2OSwgCisgICAgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDc1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgMTI4LCA4NCwgNjksIAorICAgIDcxLCA2OSwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCAyMDAsIDg0LCA2OSwgCisgICAgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCA2OSwgNjgsIDg1LCAKKyAgICA3OCwgNzEsIDEyOCwgODQsIDY5LCA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIAorICAgIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDc4LCAKKyAgICA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgNjYsIDY5LCAxOTYsIAorICAgIDg0LCA2OSwgNjUsIDgyLCA0NSwgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCA4NCwgNjksIDQ1LCA4NSwgCisgICAgMTI4LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCAKKyAgICA2OSwgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgMjAwLCA4NCwgNjcsIAorICAgIDcyLCA2OSwgMTI4LCA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIDg0LCA2NSwgODgsIDczLCAxMjgsIDg0LCA2NSwgODgsIAorICAgIDEyOCwgODQsIDY1LCA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgMjEyLCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA4NCwgCisgICAgNjUsIDg3LCAxMjgsIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4NCwgNjUsIDg2LCAxMjgsIDg0LCAKKyAgICA2NSwgMjE0LCA4NCwgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgODUsIDc3LCAxMjgsIDg0LCA2NSwgMjEzLCAKKyAgICA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCAyMDQsIDg0LCA2NSwgODQsIAorICAgIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIDY1LCA4MywgMTI4LCA4NCwgNjUsIDgyLCA4NSwgCisgICAgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAKKyAgICAxMjgsIDg0LCA2NSwgODIsIDcxLCA2OSwgODQsIDEyOCwgODQsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIAorICAgIDEyOCwgODQsIDY1LCA4MCwgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIAorICAgIDY5LCAxOTYsIDg0LCA2NSwgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgCisgICAgODQsIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc4LCAxOTksIDg0LCA2NSwgNzgsIDY1LCAKKyAgICA2NiwgNjUsIDg0LCAxOTMsIDg0LCA2NSwgNzgsIDEyOCwgODQsIDY1LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIAorICAgIDc3LCAxMjgsIDg0LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA2NSwgNzYsIDIwNCwgODQsIDY1LCA3NiwgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA4NCwgNjUsIDc2LCA3MywgNzgsIDE5OSwgODQsIDY1LCA3NiwgNjksIDc4LCA4NCwgODMsIDEyOCwgODQsIDY1LCAKKyAgICA3NiwgNjksIDc4LCAyMTIsIDg0LCA2NSwgNzUsIDgyLCAyMDEsIDg0LCA2NSwgNzUsIDcyLCA2NSwgNzYsIDc2LCA4NSwgODMsIAorICAgIDEyOCwgODQsIDY1LCA3NSwgNjksIDEyOCwgODQsIDY1LCA3NSwgNTIsIDEyOCwgODQsIDY1LCA3NSwgMTgwLCA4NCwgNjUsIAorICAgIDc1LCAxMjgsIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAKKyAgICAyMTEsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgCisgICAgODQsIDY1LCA3MSwgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAKKyAgICAxMjgsIDg0LCA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzksIDEyOCwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCAKKyAgICA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIAorICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgNjYsIDgzLCAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgCisgICAgNjUsIDY2LCA3NiwgMTk3LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCA2NSwgMTk0LCA4NCwgNjUsIDY1LCA4MywgNzIsIDY1LCAKKyAgICA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDY1LCA3NywgMTI4LCA4NCwgNjUsIDY1LCA3NiwgODUsIAorICAgIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgNjUsIDcwLCAxMjgsIDg0LCA2NSwgNTAsIDEyOCwgODQsIAorICAgIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCA1MCwgMTI4LCA4NCwgNDgsIDUxLCA1NCwgMTI4LCA4NCwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODQsIDQ4LCAKKyAgICA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIDUwLCAxMjgsIDg0LCA0OCwgNTEsIAorICAgIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgNTAsIDU3LCAxMjgsIDg0LCA0OCwgNTAsIDU2LCAxMjgsIAorICAgIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAxMjgsIDg0LCA0OCwgNTAsIDUzLCAxMjgsIDg0LCA0OCwgCisgICAgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCA0OCwgNTAsIDUwLCAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAKKyAgICAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIDU3LCAxMjgsIDg0LCA0OCwgNDksIDU2LCAxMjgsIDg0LCAKKyAgICA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIAorICAgIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgNDgsIDQ5LCA1MSwgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgCisgICAgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDEyOCwgODQsIDQ4LCA0OSwgNDgsIDEyOCwgCisgICAgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCAKKyAgICA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDEyOCwgODQsIAorICAgIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgODQsIDQ4LCA0OCwgNTIsIDEyOCwgODQsIDQ4LCA0OCwgCisgICAgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCA0OCwgNDgsIDUwLCAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAKKyAgICAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIDgzLCA5MCwgOTAsIDEyOCwgODMsIDkwLCA4NywgNzEsIAorICAgIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgMTI4LCA4MywgOTAsIDc5LCAxMjgsIDgzLCA5MCwgNzMsIAorICAgIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgMTI4LCA4MywgOTAsIDY1LCA2NSwgMTI4LCA4MywgOTAsIAorICAgIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIDgzLCA4OSwgODQsIDEyOCwgODMsIDg5LCA4MywgODQsIAorICAgIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgODQsIDczLCA3NSwgNzMsIDEyOCwgCisgICAgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDgzLCA4OSwgODIsIDczLCAKKyAgICA2NSwgMTk1LCA4MywgODksIDgyLCAxMjgsIDgzLCA4OSwgODAsIDEyOCwgODMsIDg5LCA3OSwgODUsIDg3LCA2NSwgMTI4LCAKKyAgICA4MywgODksIDc4LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OCwgNjksIDgzLCA3NywgNzksIDIxMSwgODMsIAorICAgIDg5LCA3OCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDIxMSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3OSwgNzEsIDg1LCAKKyAgICA2OSwgMTI4LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAxOTMsIDgzLCA4OSwgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIAorICAgIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgODksIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgCisgICAgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDgzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTMsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCAxMjgsIDgzLCA4OSwgCisgICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NiwgMTI4LCAKKyAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgCisgICAgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTIsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgNDUsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU1LCAxMjgsIDgzLCAKKyAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1MCwgCisgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgCisgICAgNzksIDc2LCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDg5LCAKKyAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUwLCAxMjgsIAorICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAKKyAgICA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDQ5LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNDksIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIAorICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUwLCAKKyAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDQ5LCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAKKyAgICAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIDgzLCA4NywgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCAKKyAgICA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAxMjgsIDgzLCA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIAorICAgIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgCisgICAgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIDczLCAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCAKKyAgICA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIAorICAgIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgNjUsIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCA4MywgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAKKyAgICAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIAorICAgIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgODQsIDgyLCAxOTMsIDgzLCA4NSwgODQsIDEyOCwgODMsIAorICAgIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgODMsIDg1LCA4MiwgCisgICAgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCAKKyAgICA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIDgzLCA4NSwgODIsIAorICAgIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgNjUsIDc2LCAKKyAgICA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgODAsIAorICAgIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIDgwLCA2OSwgCisgICAgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCA4MywgNjksIAorICAgIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgMjEwLCA4MywgCisgICAgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgNzksIDEyOCwgCisgICAgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgNzgsIDgyLCAKKyAgICA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIDg1LCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgCisgICAgODMsIDE5NywgODMsIDg1LCA3OCwgMTI4LCA4MywgODUsIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgCisgICAgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKKyAgICA4MywgODUsIDc3LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgCisgICAgMTI4LCA4MywgODUsIDc1LCA4NSwgNzgsIDEyOCwgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgCisgICAgODMsIDg1LCA3NSwgMjEzLCA4MywgODUsIDczLCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIAorICAgIDEyOCwgODMsIDg1LCA3MywgMjEyLCA4MywgODUsIDcyLCA4NSwgODIsIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIAorICAgIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg1LCA2NywgCisgICAgNzUsIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCAyMDMsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCAKKyAgICA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMjExLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIAorICAgIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgCisgICAgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCAKKyAgICA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIAorICAgIDg1LCA2NiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgCisgICAgODUsIDc4LCA2NywgODQsIDczLCA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCAKKyAgICA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgCisgICAgNjksIDQ1LCA1MSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCAKKyAgICA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIAorICAgIDg1LCA2NiwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgCisgICAgNjYsIDczLCA4NCwgNzksIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCAKKyAgICA4MiwgNzksIDg1LCAyMDgsIDgzLCA4NSwgNjYsIDEyOCwgODMsIDg1LCA2NSwgNzcsIDEyOCwgODMsIDg1LCA2NSwgNjksIAorICAgIDg0LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCA2NiwgCisgICAgMTI4LCA4MywgODUsIDY1LCAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIAorICAgIDg0LCA4NSwgNzAsIDcwLCA2OSwgMTk2LCA4MywgODQsIDg1LCA2OCwgODksIDEyOCwgODMsIDg0LCA4NSwgNjgsIDczLCAKKyAgICAyMDcsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIAorICAgIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgCisgICAgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIAorICAgIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgCisgICAgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCAKKyAgICA4MywgODQsIDgyLCA3MywgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNjcsIAorICAgIDg0LCA3NiwgMjE3LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIDE5NiwgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgCisgICAgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgODIsIDY5LCA3OCwgNzEsIDg0LCA3MiwgMTI4LCAKKyAgICA4MywgODQsIDgyLCA2OSwgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg3LCA2NiwgNjksIDgyLCA4MiwgCisgICAgODksIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAKKyAgICA3NywgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCA4NCwgODIsIDY1LCA4NCwgNzMsIDY1LCAyMDYsIAorICAgIDgzLCA4NCwgODIsIDY1LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDc4LCAKKyAgICA2OSwgODMsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIAorICAgIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCAKKyAgICA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCAKKyAgICA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzksIAorICAgIDY3LCAyMDMsIDgzLCA4NCwgNzMsIDgyLCA4MiwgODUsIDIwOCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA4MywgCisgICAgODQsIDczLCA3NiwgMjA0LCA4MywgODQsIDczLCA3NiwgMTk3LCA4MywgODQsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCAKKyAgICA4NCwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NCwgNzMsIDY3LCAyMDMsIDgzLCA4NCwgNjksIDgyLCA2OSwgNzksIAorICAgIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAKKyAgICAxOTUsIDgzLCA4NCwgNjksIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCA4NCwgNjksIAorICAgIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgMjA1LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4NSwgMTI4LCA4MywgCisgICAgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCAyMTEsIDgzLCA4NCwgNjUsIDg1LCAKKyAgICA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA4NSwgMTk3LCA4MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODMsIDg0LCAKKyAgICA2NSwgODIsIDIxMiwgODMsIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDgyLCA4MiwgNjksIDE5NiwgODMsIAorICAgIDg0LCA2NSwgODIsIDc1LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgNjUsIDIxMCwgODMsIDg0LCA2NSwgCisgICAgNzgsIDY4LCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCA2NSwgODIsIDE5NiwgODMsIDg0LCAKKyAgICA2NSwgNzgsIDY4LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDc3LCA4MCwgNjksIDE5NiwgODMsIAorICAgIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgMTI4LCA4MywgODQsIDY1LCA3MCwgCisgICAgMTk4LCA4MywgODQsIDY1LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgNzksIDEyOCwgODMsIDg0LCA1MCwgCisgICAgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgODMsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCA4OSwgMTI4LCA4MywgODMsIDg1LCAKKyAgICA4OCwgMTI4LCA4MywgODMsIDg1LCA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODMsIDg1LCA4MCwgMTI4LCAKKyAgICA4MywgODMsIDc5LCA4OCwgMTI4LCA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIDc5LCA4MCwgMTI4LCA4MywgODMsIAorICAgIDc5LCA3OSwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIDgzLCA4MywgNzMsIDg0LCAxMjgsIAorICAgIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4OCwgMTI4LCA4MywgCisgICAgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCA3MywgMTI4LCA4MywgODMsIDcyLCAKKyAgICA3MywgNzgsIDEyOCwgODMsIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIDEyOCwgODMsIDgzLCA2OSwgODAsIAorICAgIDEyOCwgODMsIDgzLCA2OSwgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIDgzLCA2NSwgODUsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgCisgICAgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKKyAgICA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIAorICAgIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAKKyAgICAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIAorICAgIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIAorICAgIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCAKKyAgICA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA4MywgODMsIDY1LCA3MywgCisgICAgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDUxLCAxMjgsIDgzLCA4MywgNTAsIDEyOCwgODMsIDgyLCAxMjgsIAorICAgIDgzLCA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIDgyLCA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgCisgICAgNzEsIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA3MywgNjgsIDEyOCwgODMsIDgxLCA4NSwgNjksIDY5LCA5MCwgNjksIDY4LCAKICAgICAxMjgsIDgzLCA4MSwgODUsIDY5LCA2OSwgOTAsIDE5NywgODMsIDgxLCA4NSwgNjUsIDIxMiwgODMsIDgxLCA4NSwgNjUsIAogICAgIDgyLCA2OSwgODMsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgNjgsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgCiAgICAgMTI4LCA4MywgODAsIDg5LCAxMjgsIDgzLCA4MCwgODcsIDY1LCAxMjgsIDgzLCA4MCwgODUsIDc4LCA3MSwgMjExLCA4MywgCkBAIC05NjksNzcgKzk3Niw3OSBAQAogICAgIDY1LCA3OCwgMTI4LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCAyMDYsIDgzLCA3OCwgNzksIDg3LCA3MCwgNzYsIDY1LCA3NSwgCiAgICAgNjksIDEyOCwgODMsIDc4LCA3OSwgODcsIDY2LCA3OSwgNjUsIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3OCwgNzksIDg3LCAKICAgICAxMjgsIDgzLCA3OCwgNzksIDIxNSwgODMsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgzLCA3OCwgNzksIDg1LCAyMTIsIDgzLCAKLSAgICA3OCwgNjUsIDIwOCwgODMsIDc4LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNjUsIDc1LCAxOTcsIDgzLCA3OCwgNjUsIAotICAgIDczLCA3NiwgMTI4LCA4MywgNzgsIDE5MywgODMsIDc3LCA3OSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA4MiwgCi0gICAgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA2OSwgMTI4LCAKLSAgICA4MywgNzcsIDczLCA3NiwgMTk3LCA4MywgNzcsIDY5LCA2NSwgODIsIDEyOCwgODMsIDc3LCA2NSwgODMsIDIwMCwgODMsIAotICAgIDc3LCA2NSwgNzYsIDc2LCA2OSwgMjEwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDEyOCwgODMsIDc2LCA4NSwgODIsIDEyOCwgCi0gICAgODMsIDc2LCA3OSwgODcsIDc2LCA4OSwgMTI4LCA4MywgNzYsIDc5LCA4NywgMTI4LCA4MywgNzYsIDc5LCAyMTUsIDgzLCAKLSAgICA3NiwgNzksIDg2LCA3OSwgMTI4LCA4MywgNzYsIDc5LCAyMTIsIDgzLCA3NiwgNzksIDgwLCA3MywgNzgsIDE5OSwgODMsIAotICAgIDc2LCA3OSwgODAsIDY5LCAxMjgsIDgzLCA3NiwgNzksIDY1LCAyMDYsIDgzLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCi0gICAgNzYsIDczLCA3MSwgNzIsIDg0LCA3NiwgMjE3LCA4MywgNzYsIDczLCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCAKLSAgICA2OCwgNjksIDgyLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIAotICAgIDY5LCA4NSwgODQsIDIwMCwgODMsIDc2LCA2OSwgNjksIDgwLCAyMTcsIDgzLCA3NiwgNjksIDY5LCA4MCwgNzMsIDc4LCAKLSAgICAxOTksIDgzLCA3NiwgNjUsIDg2LCA3OSwgNzgsIDczLCAxOTUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMTI4LCA4MywgNzYsIAotICAgIDY1LCA4MywgNzIsIDEyOCwgODMsIDc2LCA2NSwgODMsIDIwMCwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA4MywgCi0gICAgNzUsIDg3LCA2NSwgMTI4LCA4MywgNzUsIDg3LCAxMjgsIDgzLCA3NSwgODUsIDc2LCA3NiwgMTI4LCA4MywgNzUsIDg1LCAKLSAgICA3NiwgMjA0LCA4MywgNzUsIDc2LCA3MywgODIsIDc5LCAyMDYsIDgzLCA3NSwgNzMsIDc4LCAxMjgsIDgzLCA3NSwgNzMsIAotICAgIDY5LCA4MiwgMTI4LCA4MywgNzUsIDIwMSwgODMsIDc1LCA2OSwgODcsIDY5LCAxOTYsIDgzLCA3NSwgNjUsIDg0LCA2OSwgCi0gICAgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCA2OSwgMTI4LCA4MywgNzMsIDkwLCAxOTcsIDgzLCA3MywgODgsIDg0LCA4OSwgCi0gICAgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIAotICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCAKLSAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgCi0gICAgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCAKLSAgICA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIAotICAgIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgCi0gICAgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCAKLSAgICA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgCi0gICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgODUsIDgzLCA3OSwgNzMsIDE5NiwgCi0gICAgODMsIDczLCA3OCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgODMsIDczLCA3OCwgNzUsIDczLCA3OCwgNzEsIAotICAgIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAxMjgsIDgzLCA3MywgCi0gICAgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIAotICAgIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgCi0gICAgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDY4LCAKLSAgICA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCA4MywgCi0gICAgMTI4LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDIxMSwgODMsIDczLCA3NywgODAsIDc2LCAKLSAgICA3MywgNzAsIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIAotICAgIDY1LCAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgCi0gICAgODUsIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCAKLSAgICA3NSwgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIAotICAgIDY5LCAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAKLSAgICAxMjgsIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCAKLSAgICA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgNzMsIAotICAgIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgODMsIAotICAgIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2OCwgNjksIDEyOCwgCi0gICAgODMsIDczLCA2OCwgMTk3LCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCA3NywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzgsIDY5LCAKLSAgICA4MywgODMsIDEyOCwgODMsIDczLCA2NywgNzUsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDY2LCAxOTcsIDgzLCA3MywgNjUsIAotICAgIDEyOCwgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIDcyLCA4OSwgODQsIDEyOCwgODMsIDcyLCA4OSwgODIsIAotICAgIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgODksIDgwLCAxMjgsIDgzLCA3MiwgODksIDY5LCAxMjgsIAotICAgIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDg5LCAxMjgsIDgzLCA3MiwgCi0gICAgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3MywgNzMsIDEyOCwgODMsIDcyLCAKLSAgICA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIDcyLCA4NywgMTk3LCA4MywgNzIsIDg3LCA2NSwgNjUsIAotICAgIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODUsIDEyOCwgODMsIAotICAgIDcyLCA4NSwgODQsIDg0LCA3NiwgNjksIDY3LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDgzLCA3MiwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA4MCwgMTI4LCA4MywgNzIsIDg1LCAKLSAgICA3OSwgODgsIDEyOCwgODMsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCAxMjgsIDgzLCA3MiwgODUsIAotICAgIDc3LCAxMjgsIDgzLCA3MiwgODUsIDc2LCAxMjgsIDgzLCA3MiwgODUsIDcwLCA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgCi0gICAgNjksIDgxLCAxMjgsIDgzLCA3MiwgODUsIDY5LCA3OCwgODMsIDcyLCA4NSwgNjksIDg0LCAxMjgsIDgzLCA3MiwgODUsIDY2LCAKLSAgICA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgNTAsIDEyOCwgODMsIDcyLCA4NSwgMTc4LCA4MywgNzIsIDg1LCAxMjgsIDgzLCAKLSAgICA3MiwgMjEzLCA4MywgNzIsIDg0LCA2NSwgODAsIDczLCA2NywgMTI4LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MywgNzIsIAotICAgIDgyLCA3MywgNzgsIDY5LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3NywgODAsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDczLCAKLSAgICAxMjgsIDgzLCA3MiwgODIsIDczLCAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIDgzLCAKLSAgICA3MiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgNzIsIAotICAgIDc5LCA4NSwgNzYsIDY4LCA2OSwgMjEwLCA4MywgNzIsIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDgzLCAKKyAgICA3OCwgNjksIDY5LCA5MCwgNzMsIDc4LCAxOTksIDgzLCA3OCwgNjUsIDIwOCwgODMsIDc4LCA2NSwgNzUsIDY5LCAxMjgsIAorICAgIDgzLCA3OCwgNjUsIDc1LCAxOTcsIDgzLCA3OCwgNjUsIDczLCA3NiwgMTI4LCA4MywgNzgsIDE5MywgODMsIDc3LCA3OSwgCisgICAgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA4MiwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNzMsIDc4LCAKKyAgICAxOTksIDgzLCA3NywgNzMsIDc2LCA2OSwgMTI4LCA4MywgNzcsIDczLCA3NiwgMTk3LCA4MywgNzcsIDY5LCA2NSwgODIsIAorICAgIDEyOCwgODMsIDc3LCA2NSwgODMsIDIwMCwgODMsIDc3LCA2NSwgNzYsIDc2LCA2OSwgMjEwLCA4MywgNzcsIDY1LCA3NiwgCisgICAgNzYsIDEyOCwgODMsIDc2LCA4NSwgODIsIDEyOCwgODMsIDc2LCA3OSwgODcsIDc2LCA4OSwgMTI4LCA4MywgNzYsIDc5LCAKKyAgICA4NywgMTI4LCA4MywgNzYsIDc5LCAyMTUsIDgzLCA3NiwgNzksIDg2LCA3OSwgMTI4LCA4MywgNzYsIDc5LCAyMTIsIDgzLCAKKyAgICA3NiwgNzksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA3OSwgODAsIDY5LCAxMjgsIDgzLCA3NiwgNzksIDY1LCAyMDYsIAorICAgIDgzLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCA3MSwgNzIsIDg0LCA3NiwgMjE3LCA4MywgNzYsIDczLCA2OCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCAKKyAgICA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIDY5LCA4NSwgODQsIDIwMCwgODMsIDc2LCA2OSwgNjksIDgwLCAyMTcsIAorICAgIDgzLCA3NiwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNjksIDY5LCAyMDgsIDgzLCA3NiwgNjUsIDg2LCA3OSwgCisgICAgNzgsIDczLCAxOTUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMTI4LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgODMsIDc2LCAKKyAgICA2NSwgODMsIDIwMCwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA4MywgNzUsIDg3LCA2NSwgMTI4LCA4MywgNzUsIAorICAgIDg3LCAxMjgsIDgzLCA3NSwgODUsIDc2LCA3NiwgMTI4LCA4MywgNzUsIDg1LCA3NiwgMjA0LCA4MywgNzUsIDc2LCA3MywgCisgICAgODIsIDc5LCAyMDYsIDgzLCA3NSwgNzMsIDc4LCAxMjgsIDgzLCA3NSwgNzMsIDY5LCA4MiwgMTI4LCA4MywgNzUsIDIwMSwgCisgICAgODMsIDc1LCA2OSwgODcsIDY5LCAxOTYsIDgzLCA3NSwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCAKKyAgICA2OSwgMTI4LCA4MywgNzMsIDkwLCAxOTcsIDgzLCA3MywgODgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgCisgICAgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCAKKyAgICA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIAorICAgIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgCisgICAgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCAKKyAgICA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIAorICAgIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAKKyAgICAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCAKKyAgICA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAorICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgCisgICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgCisgICAgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIAorICAgIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgCisgICAgNzksIDIxMSwgODMsIDczLCA3OCwgODUsIDgzLCA3OSwgNzMsIDE5NiwgODMsIDczLCA3OCwgNzksIDc2LCA3OSwgNzEsIDczLCAKKyAgICA2NywgNjUsIDIwNCwgODMsIDczLCA3OCwgNzgsIDg5LCA3MywgNzMsIDg5LCA3MiwgNjksIDEyOCwgODMsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAKKyAgICAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIAorICAgIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCAKKyAgICA3MywgNzgsIDY4LCA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIAorICAgIDg1LCA4MywgMTI4LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDIxMSwgODMsIDczLCA3NywgCisgICAgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCAKKyAgICA3MywgNzYsIDY1LCAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIAorICAgIDc4LCA3MSwgODUsIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgCisgICAgNzMsIDc2LCA3NSwgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCAKKyAgICA4NCwgODQsIDY5LCAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIAorICAgIDUxLCAxMjgsIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIAorICAgIDczLCA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgCisgICAgNzMsIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgCisgICAgODMsIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2OCwgNjksIAorICAgIDEyOCwgODMsIDczLCA2OCwgMTk3LCA4MywgNzMsIDY4LCA2OCwgNzIsIDczLCAxMjgsIDgzLCA3MywgNjgsIDY4LCA3MiwgCisgICAgNjUsIDc3LCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzYsIDY5LCAKKyAgICAxMjgsIDgzLCA3MywgNjYsIDE5NywgODMsIDczLCA2NSwgMTI4LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgCisgICAgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCAKKyAgICA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCAKKyAgICA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIAorICAgIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgCisgICAgNzIsIDg3LCAxOTcsIDgzLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNzIsIDg2LCAKKyAgICAxMjgsIDgzLCA3MiwgODUsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDg1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCA4NCwgNzYsIAorICAgIDY5LCA2NywgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgODMsIDcyLCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDgzLCAKKyAgICA3MiwgODUsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgMTI4LCA4MywgNzIsIDg1LCA3NywgMTI4LCA4MywgNzIsIAorICAgIDg1LCA3NiwgMTI4LCA4MywgNzIsIDg1LCA3MCwgNzAsIDc2LCAxOTcsIDgzLCA3MiwgODUsIDY5LCA4MSwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA2OSwgNzgsIDgzLCA3MiwgODUsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA2NiwgODUsIDgyLCAxMjgsIDgzLCAKKyAgICA3MiwgODUsIDUwLCAxMjgsIDgzLCA3MiwgODUsIDE3OCwgODMsIDcyLCA4NSwgMTI4LCA4MywgNzIsIDIxMywgODMsIDcyLCAKKyAgICA4NCwgNjUsIDgwLCA3MywgNjcsIDEyOCwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA4MiwgODUsIDcxLCAxMjgsIAorICAgIDgzLCA3MiwgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc3LCA4MCwgMTI4LCA4MywgNzIsIDgyLCA3MywgCisgICAgNzMsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgCisgICAgODMsIDcyLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCAKKyAgICA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCAyMTAsIDgzLCA3MiwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIAogICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MywgCiAgICAgNzIsIDc5LCA4MiwgODQsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjcsIDY1LCA3NSwgNjksIAogICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgCkBAIC0xMDc3LDU0MyArMTA4Niw1NDggQEAKICAgICAxMjgsIDgzLCA3MiwgNjUsIDg4LCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODMsIAogICAgIDcyLCA2NSwgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODUsIDEyOCwgCiAgICAgODMsIDcyLCA2NSwgODQsIDEyOCwgODMsIDcyLCA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCAKLSAgICA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIAotICAgIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDc1LCA4NCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzIsIDY1LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgCi0gICAgNzIsIDY1LCA3MCwgODQsIDEyOCwgODMsIDcyLCA2NSwgNzAsIDIxMiwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIAotICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgCi0gICAgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAKLSAgICAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCAKLSAgICA4MywgNzIsIDY1LCAxODIsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCAKLSAgICA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgNjcsIDEyOCwgODMsIDcxLCA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCAKLSAgICA3MSwgMTI4LCA4MywgNjksIDg5LCA3NSwgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIAotICAgIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIDgyLCA2NSwgCi0gICAgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCAKLSAgICAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDIwNiwgODMsIDY5LCA4NSwgODgsIDEyOCwgODMsIDY5LCAKLSAgICA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgODMsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNjksIDg0LCA3MCwgNzksIAotICAgIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCA2OSwgODIsIDg0LCA3MywgODUsIDIxMSwgODMsIDY5LCA4MywgODEsIDg1LCA3MywgCi0gICAgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgODQsIDY5LCAxMjgsIDgzLCA2OSwgODMsIDY1LCA3NywgMTk3LCA4MywgNjksIDgyLCAKLSAgICA4NiwgNzMsIDY3LCAxOTcsIDgzLCA2OSwgODIsIDczLCA3MCwgODMsIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAyMTEsIAotICAgIDgzLCA2OSwgODIsIDczLCA3MCwgMTI4LCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA4MywgCi0gICAgNjksIDgxLCA4NSwgNjksIDc4LCA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgODUsIDgwLCA3NiwgMTk3LCA4MywgNjksIDgwLCAKLSAgICA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIAotICAgIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgCi0gICAgNzMsIDEyOCwgODMsIDY5LCA3NywgODUsIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIAotICAgIDEyOCwgODMsIDY5LCA3NywgNzUsIDEyOCwgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgCi0gICAgNzcsIDczLCA4MywgNzksIDcwLCAyMTIsIDgzLCA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCAKLSAgICA4MywgNjksIDc3LCA3MywgNzcsIDczLCA3OCwgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgCi0gICAgNjcsIDIxMiwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCAKLSAgICA3NiwgNzksIDIwNiwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIAotICAgIDczLCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgCi0gICAgNjksIDc3LCA3MywgNDUsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCi0gICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCi0gICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCi0gICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAKLSAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA2OSwgMTk2LCA4MywgNjksIDczLCA4MywgNzcsIDY1LCAxMjgsIDgzLCA2OSwgNzMsIDgzLCA3NywgMTkzLCA4MywgNjksIAotICAgIDcyLCAxMjgsIDgzLCA2OSwgNzEsIDc5LCA3NiwgMTI4LCA4MywgNjksIDcxLCA3OCwgNzksIDEyOCwgODMsIDY5LCA3MSwgCi0gICAgNzcsIDY5LCA3OCwgODQsIDEyOCwgODMsIDY5LCA2OSwgODYsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDg1LCAxMjgsIDgzLCAKLSAgICA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgNjksIDIwNiwgODMsIDY5LCA2OSwgNjgsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDgzLCA2OSwgNjksIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgCi0gICAgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgNjksIDY3LCAKLSAgICA4MiwgNjksIDg0LCAxMjgsIDgzLCA2OSwgNjcsIDc5LCA3OCwgNjgsIDEyOCwgODMsIDY5LCA2NywgNjUsIDc4LCA4NCwgCi0gICAgMTI4LCA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCAKLSAgICA2NSwgNzYsIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIAotICAgIDEyOCwgODMsIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgCi0gICAgNzksIDc2LCA3NiwgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgCi0gICAgNjcsIDc5LCA4MiwgODAsIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgNzksIDc4LCAxMjgsIDgzLCAKLSAgICA2NywgNzksIDgyLCA2OSwgMTI4LCA4MywgNjcsIDczLCA4MywgODMsIDc5LCA4MiwgODMsIDEyOCwgODMsIDY3LCA3MywgCi0gICAgMTI4LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCAKLSAgICA2OSwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCi0gICAgMjA0LCA4MywgNjcsIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCAKLSAgICA2OSwgODAsIDg0LCA2OSwgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIAotICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgCi0gICAgODMsIDY2LCA4NSwgMTk0LCA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODMsIDY1LCA4OSwgMTI4LCA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIAotICAgIDY5LCAxMjgsIDgzLCA2NSwgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgCi0gICAgODMsIDY1LCA4NywgMTI4LCA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgODIsIDY1LCAKLSAgICA4MywgNzIsIDg0LCA4MiwgMTkzLCA4MywgNjUsIDg1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA4NCwgODUsIDgyLCA3OCwgCi0gICAgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCAKLSAgICA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDY5LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIAotICAgIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgNzIsIDY5LCA3NiwgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgCi0gICAgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCA4MywgNjUsIDgzLCA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgCi0gICAgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIDgyLCAxMjgsIDgzLCA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgCi0gICAgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgNzEsIDE5MywgODMsIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCAKLSAgICA4NCwgNzMsIDczLCA3NywgODUsIDEyOCwgODMsIDY1LCA3OCwgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIAotICAgIDUwLCAxMjgsIDgzLCA2NSwgNzgsIDY4LCA3MiwgMjAxLCA4MywgNjUsIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgCi0gICAgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCAKLSAgICA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgCi0gICAgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCAKLSAgICA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgCi0gICAgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgODIsIDY5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAKLSAgICA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAxMjgsIAotICAgIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIDY1LCA3MiwgNzksIDIxMywgODMsIDY1LCA3NiwgCi0gICAgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgNjUsIDEyOCwgODMsIDY1LCA3NiwgNDUsIDY1LCAKLSAgICA3NywgNzcsIDc5LCA3OCwgNzMsIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzUsIDc5LCA4NCwgCi0gICAgMTI4LCA4MywgNjUsIDc1LCA3MiwgMTkzLCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIDc1LCAKLSAgICAxOTcsIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIAotICAgIDgzLCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIDEyOCwgCi0gICAgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAxMjgsIDgzLCAKLSAgICA2NSwgNzEsIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDcwLCA2OSwgODQsIAotICAgIDIxNywgODMsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDEyOCwgODMsIAotICAgIDY1LCAxOTYsIDgzLCA2NSwgNjcsIDgyLCA3MywgNzAsIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgNjUsIDczLCAKLSAgICAxMjgsIDgzLCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDY1LCA0NSwgNTAsIAotICAgIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgODMsIDQ4LCA1MiwgNTMsIDEyOCwgODMsIDQ4LCA1MiwgNTIsIDEyOCwgODMsIAotICAgIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCA1MiwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNDksIDEyOCwgODMsIDQ4LCA1MiwgCi0gICAgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIDEyOCwgODMsIDQ4LCA1MSwgNTYsIDEyOCwgODMsIDQ4LCA1MSwgNTUsIDEyOCwgCi0gICAgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCAxMjgsIDgzLCAKLSAgICA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgNTEsIDUxLCAxMjgsIDgzLCA0OCwgNTEsIDUwLCAxMjgsIDgzLCA0OCwgNTEsIAotICAgIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAxMjgsIDgzLCA0OCwgNTAsIDU3LCAxMjgsIDgzLCA0OCwgNTAsIDU2LCAxMjgsIAotICAgIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NiwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjUsIDEyOCwgCi0gICAgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIDQ4LCA1MCwgNTMsIDEyOCwgODMsIDQ4LCA1MCwgNTIsIDEyOCwgODMsIDQ4LCAKLSAgICA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgNTAsIDEyOCwgODMsIDQ4LCA1MCwgNDksIDEyOCwgODMsIDQ4LCA1MCwgNDgsIAotICAgIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgODMsIDQ4LCA0OSwgNTYsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIAotICAgIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCA0OCwgNDksIDU0LCAxMjgsIDgzLCA0OCwgNDksIDUzLCAxMjgsIDgzLCA0OCwgCi0gICAgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDEyOCwgODMsIDQ4LCAKLSAgICA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgNTAsIDEyOCwgODMsIDQ4LCA0OSwgNDksIDEyOCwgODMsIDQ4LCA0OSwgNDgsIAotICAgIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgODMsIDQ4LCA0OCwgNTYsIDEyOCwgODMsIDQ4LCA0OCwgNTUsIDEyOCwgODMsIAotICAgIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCAxMjgsIDgzLCA0OCwgNDgsIDUzLCAxMjgsIDgzLCA0OCwgCi0gICAgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIDUxLCAxMjgsIDgzLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MywgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgMTI4LCA4MywgNDUsIDg3LCAxMjgsIDgzLCA0NSwgODMsIDcyLCA2NSwgODAsIAotICAgIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODksIDg0LCAxMjgsIDgyLCA4OSwgODIsIAotICAgIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCA4MiwgODcsIAotICAgIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAxMjgsIDgyLCA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIDEyOCwgODIsIAotICAgIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCA3MiwgNjUsIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIDg3LCA2NSwgCi0gICAgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4NSwgODUsIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgODUsIDEyOCwgCi0gICAgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIDgzLCA3MywgMTI4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODUsIDgyLCAKLSAgICAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgMTI4LCA4MiwgODUsIDgwLCA2OSwgMTk3LCA4MiwgODUsIDgwLCAxMjgsIDgyLCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgNzksIDgwLCAxMjgsIDgyLCA4NSwgNzksIDEyOCwgODIsIDg1LCA3OCwgNzksIAotICAgIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIDEyOCwgCi0gICAgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIDc3LCAyMDEsIDgyLCA4NSwgNzcsIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgCi0gICAgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCAKLSAgICA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgNzYsIDY5LCAxMjgsIDgyLCA4NSwgNzYsIDY1LCA3MywgMTI4LCA4MiwgODUsIAotICAgIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIDEyOCwgODIsIDg1LCA3MSwgNjYsIDIxNywgCi0gICAgODIsIDg1LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDg0LCAxOTMsIDgyLCA4NSwgNjYsIDc2LCAxOTcsIDgyLCA4NSwgMTk0LCAKLSAgICA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIAotICAgIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAKLSAgICAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIAotICAgIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDgyLCA2NSwgMTI4LCA4MiwgODIsIDc5LCA4OCwgCi0gICAgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCA3OSwgMTI4LCA4MiwgCi0gICAgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIDEyOCwgODIsIDgyLCA2OSwgODgsIDEyOCwgCi0gICAgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIDgyLCA2OSwgNzIsIDEyOCwgODIsIDgyLCAKLSAgICA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIDgyLCA4MiwgNjUsIDg4LCAxMjgsIDgyLCAKLSAgICA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA3OSwgODcsIAotICAgIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgCi0gICAgODQsIDczLCA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgODcsIDY1LCA3NiwgCi0gICAgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDcwLCA3NiwgNzksIAotICAgIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA3OSwgCi0gICAgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgODIsIDc5LCA4MywgNzIsIAotICAgIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCA4MywgNjksIDEyOCwgODIsIDc5LCA3OSwgCi0gICAgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIDc5LCA3OSwgNzUsIDEyOCwgODIsIDc5LCAKLSAgICA3OSwgNzAsIDEyOCwgODIsIDc5LCA3NywgNjUsIDc4LCA3MywgNjUsIDIwNiwgODIsIDc5LCA3NywgNjUsIDIwNiwgODIsIAotICAgIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNzMsIDc4LCAxOTksIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgCi0gICAgNzksIDc2LCA3NiwgNjksIDY4LCA0NSwgODUsIDIwOCwgODIsIDc5LCA3MiwgNzMsIDc4LCA3MSwgODksIDE5MywgODIsIDc5LCAKLSAgICA3MSwgMTI4LCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MiwgNzksIDY3LCAyMDMsIDgyLCAKLSAgICA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNzksIDIxMiwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIAotICAgIDgzLCA4NCwgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgCi0gICAgNzgsIDE5OSwgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgCi0gICAgODIsIDc3LCA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIDEyOCwgODIsIDc2LCA3MywgMTI4LCA4MiwgCi0gICAgNzYsIDY5LCAxMjgsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgCi0gICAgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIAotICAgIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgCi0gICAgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCA4MCwgNzYsIDE5NywgODIsIDczLCA4MCwgMTI4LCA4MiwgCi0gICAgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzgsIDcwLCA3OSwgODIsIDkwLCAKLSAgICA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgMTI4LCA4MiwgNzMsIAotICAgIDc3LCAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgCi0gICAgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCA3MSwgNzIsIDg0LCA3MiwgNjUsIAotICAgIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgCi0gICAgNzIsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIAotICAgIDg3LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgCi0gICAgNzIsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzYsIAotICAgIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgCi0gICAgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MCwgNjUsIAotICAgIDY3LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgCi0gICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIAotICAgIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgCi0gICAgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIAotICAgIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCAKLSAgICA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCAKLSAgICA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIAotICAgIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCAKLSAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgCi0gICAgNjksIDc2LCAxMjgsIDgyLCA3MywgNjksIDY5LCAxMjgsIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCAKLSAgICA2OSwgMTI4LCA4MiwgNzMsIDY3LCAxOTcsIDgyLCA3MywgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NiwgNjYsIAotICAgIDc5LCAyMDYsIDgyLCA3MywgNjUsIDIwNCwgODIsIDcyLCA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgNzksIDEyOCwgODIsIAotICAgIDcyLCAyMDcsIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcyLCAxMjgsIDgyLCA3MSwgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIAotICAgIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIAotICAgIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDgzLCA2NywgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCAKLSAgICA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4MiwgNjksIDg1LCA4OCwgMTI4LCA4MiwgNjksIAotICAgIDg1LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCAyMDYsIDgyLCA2OSwgCi0gICAgODQsIDgyLCA3OSwgNzAsIDc2LCA2OSwgMjE2LCA4MiwgNjksIDg0LCA4MiwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDg0LCAKLSAgICA3OSwgODIsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDg1LCA4MCwgNzMsIDc4LCA4NSwgODMsIDEyOCwgODIsIDY5LCA4MywgODQsIAotICAgIDgyLCA3OSwgNzksIDc3LCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MywgCi0gICAgODQsIDEyOCwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgODMsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA4NSwgODIsIDY3LCAKLSAgICA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDgzLCA3MywgODMsIAotICAgIDg0LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3MywgNjgsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgCi0gICAgODMsIDIwMCwgODIsIDY5LCA4MiwgNjksIDc4LCA3MSwgNzEsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgyLCA2OSwgNzUsIDY1LCAKLSAgICA3OCwgMTI4LCA4MiwgNjksIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDc2LCA2NSwgNjcsIAotICAgIDY5LCA3NywgNjksIDc4LCAyMTIsIDgyLCA2OSwgODAsIDcyLCAxMjgsIDgyLCA2OSwgODAsIDY5LCA4NCwgNzMsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgMTI4LCAKLSAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDIxMiwgODIsIDY5LCA4MCwgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjksIDgwLCA2NSwgCi0gICAgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIDg0LCA3OSwgNzEsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAKLSAgICAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgMTI4LCA4MiwgNjksIDc3LCA3MywgNzgsIDY4LCA2OSwgMjEwLCAKLSAgICA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIAotICAgIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIDc2LCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDc2LCA2NSwgCi0gICAgODgsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzYsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgNjUsIDEyOCwgODIsIDY5LCA3NCwgNjUsIDc4LCAxOTksIAotICAgIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCA3MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAKLSAgICAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIAotICAgIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAKLSAgICAyMTEsIDgyLCA2OSwgNzEsIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIAotICAgIDIwNCwgODIsIDY5LCA3MSwgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgCi0gICAgNzAsIDc5LCA4MiwgNzcsIDY5LCAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA4MiwgNjksIDY4LCAKLSAgICA4NSwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA3MywgCi0gICAgNzgsIDE5OSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgODQsIDczLCA3NiwgNzMsIDc4LCAKLSAgICA2OSwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIAotICAgIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDE5NywgODIsIDY5LCA2NywgCi0gICAgODIsIDY5LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDczLCA3OCwgMTk5LCAKLSAgICA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgMTI4LCA4MiwgNjksIAotICAgIDY3LCA3OSwgODIsIDE5NiwgODIsIDY5LCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA4NiwgMTk3LCA4MiwgNjksIDY3LCA2OSwgCi0gICAgODAsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIDczLCA4NiwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDY5LCAKLSAgICA3MywgODYsIDY5LCAyMTAsIDgyLCA2OSwgNjUsIDc2LCA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODIsIDY5LCA2NSwgNzYsIAotICAgIDcxLCA2NSwgODIsIDEyOCwgODIsIDY5LCA2NSwgNzIsIDc3LCA4NSwgNzUsIDEyOCwgODIsIDY5LCA2NSwgNjcsIDcyLCAKLSAgICAxMjgsIDgyLCA2OCwgMjA3LCA4MiwgNjgsIDY5LCAyMDQsIDgyLCA2NiwgNjUsIDgzLCAxOTMsIDgyLCA2NSwgODksIDgzLCAKLSAgICAxMjgsIDgyLCA2NSwgODksIDIxMSwgODIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAxMjgsIDgyLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgMTkzLCA4MiwgNjUsIDg0LCA2NSwgCi0gICAgMTI4LCA4MiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgODMsIDg3LCA2NSwgNjgsIDczLCAxMjgsIDgyLCA2NSwgODMsIDc5LCAKLSAgICA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4MSwgMTI4LCA4MiwgNjUsIDgwLCA3MywgODMsIAotICAgIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCAxMjgsIAotICAgIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgCi0gICAgMTI4LCA4MiwgNjUsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjUsIDczLCAKLSAgICA4MywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgNjUsIDczLCA3OCwgNjYsIDc5LCA4NywgCi0gICAgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCAyMTcsIDgyLCAKLSAgICA2NSwgNzMsIDc2LCAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIDY4LCA2NSwgMTI4LCA4MiwgNjUsIAotICAgIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcyLCAxMjgsIDgyLCA2NSwgNzAsIDY5LCAKLSAgICAxMjgsIDgyLCA2NSwgNjksIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIDY3LCA4NCwgNzMsIDg2LCAxOTcsIAotICAgIDgyLCA2NSwgNjgsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgNjUsIDY4LCAyMDEsIDgyLCA2NSwgCi0gICAgNjgsIDEyOCwgODIsIDY1LCAxOTYsIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgODIsIDY1LCA2NywgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA4MiwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDY1LCA2NiwgNjYsIDczLCA4NCwgMTI4LCA4MiwgNjUsIAotICAgIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgMTI4LCA4MiwgNjUsIDUxLCAxMjgsIAotICAgIDgyLCA2NSwgNTAsIDEyOCwgODIsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNTcsIDEyOCwgODIsIDQ4LCA1MCwgCi0gICAgNTYsIDEyOCwgODIsIDQ4LCA1MCwgNTUsIDEyOCwgODIsIDQ4LCA1MCwgNTQsIDEyOCwgODIsIDQ4LCA1MCwgNTMsIDEyOCwgCi0gICAgODIsIDQ4LCA1MCwgNTIsIDEyOCwgODIsIDQ4LCA1MCwgNTEsIDEyOCwgODIsIDQ4LCA1MCwgNTAsIDEyOCwgODIsIDQ4LCAKLSAgICA1MCwgNDksIDEyOCwgODIsIDQ4LCA1MCwgNDgsIDEyOCwgODIsIDQ4LCA0OSwgNTcsIDEyOCwgODIsIDQ4LCA0OSwgNTYsIAotICAgIDEyOCwgODIsIDQ4LCA0OSwgNTUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCAxMjgsIAotICAgIDgyLCA0OCwgNDksIDUzLCAxMjgsIDgyLCA0OCwgNDksIDUyLCAxMjgsIDgyLCA0OCwgNDksIDUxLCAxMjgsIDgyLCA0OCwgCi0gICAgNDksIDUwLCAxMjgsIDgyLCA0OCwgNDksIDQ5LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCAKLSAgICA0OCwgMTI4LCA4MiwgNDgsIDQ4LCA1NywgMTI4LCA4MiwgNDgsIDQ4LCA1NiwgMTI4LCA4MiwgNDgsIDQ4LCA1NSwgMTI4LCAKLSAgICA4MiwgNDgsIDQ4LCA1NCwgMTI4LCA4MiwgNDgsIDQ4LCA1MywgMTI4LCA4MiwgNDgsIDQ4LCA1MiwgMTI4LCA4MiwgNDgsIAotICAgIDQ4LCA1MSwgNjYsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCAxMjgsIDgyLCA0OCwgCi0gICAgNDgsIDUwLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgMTI4LCA4MiwgNDgsIDQ4LCA0OSwgMTI4LCA4MiwgNDUsIDY3LCAKLSAgICA4MiwgNjksIDE5NywgODEsIDg5LCA4OCwgMTI4LCA4MSwgODksIDg1LCAxMjgsIDgxLCA4OSwgODQsIDEyOCwgODEsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODEsIDg5LCA4MiwgMTI4LCA4MSwgODksIDgwLCAxMjgsIDgxLCA4OSwgNzksIDEyOCwgODEsIDg5LCAKLSAgICA3MywgMTI4LCA4MSwgODksIDY5LCA2OSwgMTI4LCA4MSwgODksIDY5LCAxMjgsIDgxLCA4OSwgNjUsIDY1LCAxMjgsIDgxLCAKLSAgICA4OSwgNjUsIDEyOCwgODEsIDg5LCAxMjgsIDgxLCA4NywgNzMsIDEyOCwgODEsIDg3LCA2OSwgNjksIDEyOCwgODEsIDg3LCAKLSAgICA2OSwgMTI4LCA4MSwgODcsIDY1LCA2NSwgMTI4LCA4MSwgODcsIDY1LCAxMjgsIDgxLCA4NSwgODgsIDEyOCwgODEsIDg1LCAKLSAgICA4NiwgMTI4LCA4MSwgODUsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCAxMjgsIDgxLCA4NSwgODQsIDEyOCwgODEsIDg1LCAKLSAgICA4MywgNzIsIDgzLCA3MiwgNjUsIDg5LCA2NSwgMTI4LCA4MSwgODUsIDgyLCA4OCwgMTI4LCA4MSwgODUsIDgyLCAxMjgsIAotICAgIDgxLCA4NSwgODAsIDEyOCwgODEsIDg1LCA3OSwgODgsIDEyOCwgODEsIDg1LCA3OSwgODQsIDE5NywgODEsIDg1LCA3OSwgCi0gICAgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNzksIDg0LCAxMjgsIDgxLCA4NSwgNzksIDgwLCAxMjgsIDgxLCAKLSAgICA4NSwgNzksIDEyOCwgODEsIDg1LCA3NSwgMTI4LCA4MSwgODUsIDczLCA3OCwgODQsIDY5LCA4MywgODMsIDY5LCA3OCwgNjcsIAotICAgIDY5LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2OSwgODMsIDczLCA3NywgMTkzLCA4MSwgODUsIDczLCA3OCwgCi0gICAgNjcsIDg1LCA3OCwgODgsIDEyOCwgODEsIDg1LCA3MywgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDgxLCA4NSwgNzMsIDc2LCAKLSAgICAyMTIsIDgxLCA4NSwgNzMsIDc2LCA3NiwgMTI4LCA4MSwgODUsIDczLCA2NywgMjAzLCA4MSwgODUsIDczLCAxMjgsIDgxLCAKLSAgICA4NSwgNzAsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCA2OSwgMTk2LCA4MSwgODUsIDY5LCA4MywgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgxLCA4NSwgNjksIDY5LCAyMDYsIDgxLCA4NSwgNjksIDEyOCwgODEsIDg1LCA2NiwgODUsIDg0LCA4MywgMTI4LCAKLSAgICA4MSwgODUsIDY1LCA4NCwgNjksIDgyLCA3OCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCA4MywgCi0gICAgMTI4LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMjExLCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMTI4LCAKLSAgICA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCA2OCwgODIsIDg1LCA4MCwgNzYsIDE5NywgODEsIAotICAgIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCAyMTIsIDgxLCA4NSwgCi0gICAgNjUsIDY4LCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDEyOCwgODEsIDg1LCA2NSwgMTk2LCAKLSAgICA4MSwgODUsIDY1LCAxMjgsIDgxLCA4NSwgMTI4LCA4MSwgMjA4LCA4MSwgNzksIDg4LCAxMjgsIDgxLCA3OSwgODQsIDEyOCwgCi0gICAgODEsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDc5LCA4MCwgNjUsIDEyOCwgODEsIDc5LCA4MCwgMTI4LCA4MSwgNzksIDc5LCAKLSAgICAxMjgsIDgxLCA3OSwgMjA3LCA4MSwgNzksIDcwLCAxMjgsIDgxLCA3OSwgMTk4LCA4MSwgNzksIDY1LCAxMjgsIDgxLCA3OSwgCi0gICAgMTI4LCA4MSwgNzgsIDEyOCwgODEsIDczLCA4OCwgMTI4LCA4MSwgNzMsIDg0LCA4MywgNjUsIDEyOCwgODEsIDczLCA4NCwgCi0gICAgMTI4LCA4MSwgNzMsIDgwLCAxMjgsIDgxLCA3MywgNzMsIDEyOCwgODEsIDczLCA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgCi0gICAgODQsIDEyOCwgODEsIDczLCA2OSwgODAsIDEyOCwgODEsIDczLCA2OSwgMTI4LCA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgCi0gICAgNzMsIDEyOCwgODEsIDcyLCA4NywgNjksIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgMTI4LCA4MSwgNzIsIDg1LCAxMjgsIDgxLCA3MiwgNzksIDgwLCA3MiwgMTI4LCAKLSAgICA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIDcyLCA2OSwgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCAKLSAgICA4MSwgNzIsIDY1LCA4NSwgMTI4LCA4MSwgNzIsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIAotICAgIDEyOCwgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIAotICAgIDg5LCAxMjgsIDgxLCA2NSwgODUsIDEyOCwgODEsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDgxLCA2NSwgODIsIDc4LCA2OSwgCi0gICAgMjE3LCA4MSwgNjUsIDgyLCAxMjgsIDgxLCA2NSwgODEsIDEyOCwgODEsIDY1LCA4MCwgNzIsIDEyOCwgODEsIDY1LCA3NywgCi0gICAgNjUsIDg0LCA4MywgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDIxMSwgODEsIDY1LCA3NiwgMTkzLCA4MSwgNjUsIDczLCAKLSAgICA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODEsIDY1LCA3MywgMTI4LCA4MSwgNjUsIDcwLCAxMjgsIDgxLCA2NSwgMTk4LCAKLSAgICA4MSwgNjUsIDY4LCA3NywgNjUsIDEyOCwgODEsIDY1LCA2NSwgNzMsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIAotICAgIDgxLCA2NSwgNjUsIDcwLCAxMjgsIDgxLCA0OCwgNDgsIDU1LCAxMjgsIDgxLCA0OCwgNDgsIDU0LCAxMjgsIDgxLCA0OCwgCi0gICAgNDgsIDUzLCAxMjgsIDgxLCA0OCwgNDgsIDUyLCAxMjgsIDgxLCA0OCwgNDgsIDUxLCAxMjgsIDgxLCA0OCwgNDgsIDUwLCAKLSAgICAxMjgsIDgxLCA0OCwgNDgsIDQ5LCAxMjgsIDgwLCA5MCwgMTI4LCA4MCwgODksIDg4LCAxMjgsIDgwLCA4OSwgODQsIDEyOCwgCi0gICAgODAsIDg5LCA4MiwgODgsIDEyOCwgODAsIDg5LCA4MiwgMTI4LCA4MCwgODksIDgwLCAxMjgsIDgwLCA4NywgNzksIDg5LCAKLSAgICAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgNzksIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgNjksIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIDgwLCA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgCi0gICAgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgNjksIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKLSAgICA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIAotICAgIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgODUsIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIAotICAgIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAKLSAgICAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIAotICAgIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4NSwgNzcsIDgwLCAxMjgsIAotICAgIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA3MCwgNzAsIDY5LCA2OCwgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgCi0gICAgNjcsIDc1LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgODUsIDE5NCwgODAsIDg1LCA2NSwgODEsIDEyOCwgCi0gICAgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgCi0gICAgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCAKLSAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgCi0gICAgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIAotICAgIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCA2NSwgNzYsIDg0LCA2OSwgMjEwLCA4MCwgODMsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDg0LCA3OSwgODYsIDY1LCA4MiwgODksIDIxMSwgCi0gICAgODAsIDgyLCA3OSwgODQsIDc5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA2OSwgNjcsIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCAKLSAgICA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgCi0gICAgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKLSAgICA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIDgwLCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4MCwgODIsIAotICAgIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgNzEsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDc2LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MCwgODIsIDc5LCAKLSAgICA3NCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA3MiwgNzMsIDY2LCA3MywgODQsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCAKLSAgICA4MywgMTI4LCA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIDcwLCA3OSwgODUsIDc4LCA2OCwgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCAyMTIsIDgwLCAKLSAgICA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDE5NywgODAsIDgyLCA3MywgODYsIAotICAgIDY1LCA2NywgMjE3LCA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODQsIDgyLCAxOTMsIDgwLCA4MiwgCi0gICAgNzMsIDc4LCA4NCwgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCAKLSAgICA2OSwgMjEwLCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIDgyLCA3MywgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIAotICAgIDY3LCA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc3LCA2OSwgMTI4LCA4MCwgODIsIDczLCA3NywgMTk3LCA4MCwgCi0gICAgODIsIDY5LCA4NiwgNzMsIDc5LCA4NSwgMjExLCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDgzLCAKLSAgICA2OSwgODQsIDEyOCwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIAotICAgIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIDgyLCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MCwgNjUsIAotICAgIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgODAsIDczLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgCi0gICAgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDgzLCAxMjgsIDgwLCA4MiwgNjksIDY3LCAKLSAgICA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIAotICAgIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDE5NywgODAsIDgyLCA2NSwgODksIDY5LCAyMTAsIDgwLCA4MiwgCi0gICAgNjUsIDc3LCA0NSwgODAsIDczLCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgMjAxLCA4MCwgODIsIDY1LCAKLSAgICA3NywgNDUsIDc3LCA4NSwgNzksIDg5LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgMjE3LCA4MCwgODIsIAotICAgIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDc4LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA4MCwgCi0gICAgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDIwMSwgODAsIDgyLCAKLSAgICA2NSwgNzcsIDEyOCwgODAsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDEyOCwgODAsIDgwLCA4NiwgMTI4LCA4MCwgODAsIDc3LCAKLSAgICAxMjgsIDgwLCA4MCwgNjUsIDEyOCwgODAsIDc5LCA4OSwgMTI4LCA4MCwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODcsIDY5LCAKLSAgICA4MiwgMjExLCA4MCwgNzksIDg3LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgNjksIDE5NiwgODAsIAotICAgIDc5LCA4NywgNjgsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg1LCA3OCwgMTk2LCA4MCwgNzksIDg1LCA3NiwgODQsIDgyLCAKLSAgICAyMTcsIDgwLCA3OSwgODUsIDY3LCA3MiwgMTI4LCA4MCwgNzksIDg0LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3OSwgODQsIAotICAgIDY1LCA2NiwgNzYsIDE5NywgODAsIDc5LCAyMTIsIDgwLCA3OSwgODMsIDg0LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MCwgNzksIDgzLCA4NCwgNjYsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDc5LCAKLSAgICA4MywgODQsIDEyOCwgODAsIDc5LCA4MywgMjEyLCA4MCwgNzksIDgzLCA4MywgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDg0LCA2NSwgNjYsIDc2LCAKLSAgICAxOTcsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIAotICAgIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCA3MywgNzgsIDE5OSwgODAsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgCi0gICAgNzksIDgwLCA2NywgNzksIDgyLCA3OCwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCAKLSAgICA2OCwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCAKLSAgICA4MCwgNzksIDc3LCA3NywgNjksIDY5LCAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgMTk3LCA4MCwgNzksIDc2LCA3MywgODMsIAorICAgIDcyLCA2NSwgODIsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA3NSwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCAKKyAgICA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIAorICAgIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIAorICAgIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgCisgICAgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA3NiwgNzksIDIxNSwgODMsIDcyLCA2NSwgNzUsIDg0LCAKKyAgICA3MywgMTI4LCA4MywgNzIsIDY1LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDgzLCA3MiwgNjUsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDcwLCA4NCwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA3MCwgMjEyLCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIAorICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCisgICAgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDE4MiwgODMsIDcyLCAKKyAgICA2NSwgNTEsIDEyOCwgODMsIDcyLCA2NSwgMTc5LCA4MywgNzEsIDgyLCAxOTMsIDgzLCA3MSwgNzksIDIxMCwgODMsIDcxLCAKKyAgICA2NywgMTI4LCA4MywgNzEsIDY1LCAyMTUsIDgzLCA3MSwgNjUsIDE5NCwgODMsIDcxLCAxMjgsIDgzLCA2OSwgODksIDc1LCAKKyAgICAxMjgsIDgzLCA2OSwgODgsIDg0LCA4NSwgNzYsIDE5MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIAorICAgIDY5LCA4OCwgODQsIDY1LCA3OCwgMjExLCA4MywgNjksIDg2LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgzLCA2OSwgCisgICAgODYsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDIxNywgODMsIDY5LCA4NiwgNjksIDc4LCAKKyAgICA4NCwgNzIsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIAorICAgIDg0LCA2OSwgNjksIDIwNiwgODMsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgCisgICAgNjksIDg2LCA2OSwgMjA2LCA4MywgNjksIDg1LCA4OCwgMTI4LCA4MywgNjksIDg1LCA3OCwgODksIDY1LCA3NywgMTI4LCAKKyAgICA4MywgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA2OSwgODQsIDcwLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA4MywgODQsIAorICAgIDY5LCA4MiwgODQsIDczLCA4NSwgMjExLCA4MywgNjksIDgzLCA4MSwgODUsIDczLCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCAKKyAgICA4NCwgNjksIDEyOCwgODMsIDY5LCA4MywgNjUsIDc3LCAxOTcsIDgzLCA2OSwgODIsIDg2LCA3MywgNjcsIDE5NywgODMsIAorICAgIDY5LCA4MiwgNzMsIDcwLCA4MywgMTI4LCA4MywgNjksIDgyLCA3MywgNzAsIDIxMSwgODMsIDY5LCA4MiwgNzMsIDcwLCAKKyAgICAxMjgsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIAorICAgIDY3LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA4NSwgODAsIDc2LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA2OSwgNzcsIDY2LCA2OSwgCisgICAgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCAKKyAgICA4NCwgNzksIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCA3MywgMTI4LCA4MywgNjksIAorICAgIDc3LCA4NSwgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgMTI4LCA4MywgNjksIDc3LCA3NSwgCisgICAgMTI4LCA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCA3NywgNzMsIDgzLCA3OSwgNzAsIAorICAgIDIxMiwgODMsIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA3NywgCisgICAgNzMsIDc4LCA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCA2NywgMjEyLCA4MywgNjksIDc3LCAKKyAgICA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgMjA2LCA4MywgNjksIAorICAgIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCAKKyAgICA3NiwgMTk3LCA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCA2OSwgNzcsIDczLCA0NSwgODYsIAorICAgIDc5LCA3MywgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCA3MywgNjksIDEyOCwgODMsIDY5LCA3NiwgNzAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIAorICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIAorICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCisgICAgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAorICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIAorICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAorICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCisgICAgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIAorICAgIDE5MywgODMsIDY5LCA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIAorICAgIDgzLCA2OSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDg2LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgCisgICAgMTI4LCA4MywgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgCisgICAgODMsIDY5LCA2NywgODIsIDY5LCA4NCwgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjcsIDY1LCAKKyAgICA3OCwgODQsIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIDgzLCA2OSwgNjUsIDg0LCAxMjgsIAorICAgIDgzLCA2OSwgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgODMsIDY4LCA3OSwgNzgsIDE5OSwgCisgICAgODMsIDY4LCAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCA4MCwgNzYsIDY5LCAxMjgsIDgzLCAKKyAgICA2NywgODIsIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIAorICAgIDc4LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgCisgICAgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA4MywgNjcsIDc5LCA4MiwgNjksIDEyOCwgODMsIDY3LCA3OSwgNzksIDg0LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MywgODMsIAorICAgIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIDEyOCwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgCisgICAgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgNjksIDY4LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAKKyAgICA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDIwNCwgODMsIDY3LCA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIAorICAgIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgNjksIDgwLCA4NCwgNjksIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgCisgICAgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCAKKyAgICA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIDgzLCA2NiwgODUsIDE5NCwgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIAorICAgIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgzLCA2NSwgODksIDEyOCwgCisgICAgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4MywgNjUsIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODcsIDEyOCwgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgCisgICAgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDgyLCA2NSwgODMsIDcyLCA4NCwgODIsIDE5MywgODMsIDY1LCA4NSwgNzMsIDc2LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCA2OSwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIDcyLCA2OSwgNzYsIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgODMsIDY1LCA4MywgCisgICAgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCA4MiwgMTI4LCA4MywgCisgICAgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIDcxLCAxOTMsIDgzLCAKKyAgICA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgODQsIDczLCA3MywgNzcsIDg1LCAxMjgsIDgzLCA2NSwgNzgsIAorICAgIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCA1MCwgMTI4LCA4MywgNjUsIDc4LCA2OCwgNzIsIDIwMSwgCisgICAgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCAKKyAgICA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgODMsIDY1LCA3NywgODYsIDY1LCA4NCwgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzMsIAorICAgIDEyOCwgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIDEyOCwgODMsIDY1LCA3NywgNzUsIDY1LCAxMjgsIDgzLCA2NSwgCisgICAgNzcsIDY5LCA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCAyMDAsIDgzLCA2NSwgNzcsIDY2LCA2NSwgMTI4LCAKKyAgICA4MywgNjUsIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIDIwNiwgODMsIDY1LCA3NywgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIAorICAgIDgyLCA2OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIDY1LCA3NiwgODQsIDQ1LCA1MCwgCisgICAgMTI4LCA4MywgNjUsIDc2LCA4NCwgMTI4LCA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzYsIDc2LCAKKyAgICA2NSwgNzIsIDc5LCAyMTMsIDgzLCA2NSwgNzYsIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA2NSwgNzYsIAorICAgIDY1LCA2OCwgMTI4LCA4MywgNjUsIDc2LCA2NSwgMTI4LCA4MywgNjUsIDc2LCA0NSwgNjUsIDc3LCA3NywgNzksIDc4LCA3MywgCisgICAgNjUsIDY3LCAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgNzUsIDc5LCAKKyAgICA4NCwgMTI4LCA4MywgNjUsIDc1LCA3MiwgMTkzLCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIAorICAgIDc1LCAxOTcsIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAKKyAgICAxMjgsIDgzLCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIAorICAgIDEyOCwgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAKKyAgICAxMjgsIDgzLCA2NSwgNzEsIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDcwLCAKKyAgICA2OSwgODQsIDIxNywgODMsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIAorICAgIDEyOCwgODMsIDY1LCAxOTYsIDgzLCA2NSwgNjcsIDgyLCA3MywgNzAsIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDgzLCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDY1LCAKKyAgICA0NSwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgODMsIDQ4LCA1MiwgNTMsIDEyOCwgODMsIDQ4LCA1MiwgNTIsIAorICAgIDEyOCwgODMsIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCA1MiwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNDksIDEyOCwgODMsIAorICAgIDQ4LCA1MiwgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIDEyOCwgODMsIDQ4LCA1MSwgNTYsIDEyOCwgODMsIDQ4LCA1MSwgCisgICAgNTUsIDEyOCwgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCAKKyAgICAxMjgsIDgzLCA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgNTEsIDUxLCAxMjgsIDgzLCA0OCwgNTEsIDUwLCAxMjgsIDgzLCAKKyAgICA0OCwgNTEsIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAxMjgsIDgzLCA0OCwgNTAsIDU3LCAxMjgsIDgzLCA0OCwgNTAsIAorICAgIDU2LCAxMjgsIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NiwgMTI4LCA4MywgNDgsIDUwLCA1NCwgCisgICAgNjUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIDQ4LCA1MCwgNTMsIDEyOCwgODMsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgODMsIDQ4LCA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgNTAsIDEyOCwgODMsIDQ4LCA1MCwgNDksIDEyOCwgODMsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgODMsIDQ4LCA0OSwgNTYsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIAorICAgIDY1LCAxMjgsIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCA0OCwgNDksIDU0LCAxMjgsIDgzLCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDgzLCA0OCwgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDEyOCwgCisgICAgODMsIDQ4LCA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgNTAsIDEyOCwgODMsIDQ4LCA0OSwgNDksIDEyOCwgODMsIDQ4LCAKKyAgICA0OSwgNDgsIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgODMsIDQ4LCA0OCwgNTYsIDEyOCwgODMsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCAxMjgsIDgzLCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDgzLCA0OCwgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIDUxLCAxMjgsIDgzLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MywgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgMTI4LCA4MywgNDUsIDg3LCAxMjgsIDgzLCA0NSwgODMsIDcyLCAKKyAgICA2NSwgODAsIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODksIDg0LCAxMjgsIDgyLCAKKyAgICA4OSwgODIsIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCAKKyAgICA4MiwgODcsIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAxMjgsIDgyLCA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIAorICAgIDEyOCwgODIsIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCA3MiwgNjUsIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIAorICAgIDg3LCA2NSwgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4NSwgODUsIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgCisgICAgODUsIDEyOCwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIDgzLCA3MywgMTI4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgCisgICAgODUsIDgyLCAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgMTI4LCA4MiwgODUsIDgwLCA2OSwgMTk3LCA4MiwgODUsIDgwLCAKKyAgICAxMjgsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgNzksIDgwLCAxMjgsIDgyLCA4NSwgNzksIDEyOCwgODIsIDg1LCAKKyAgICA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIAorICAgIDEyOCwgODIsIDg1LCA3OCwgNzMsIDE5NSwgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIDc3LCAyMDEsIDgyLCA4NSwgNzcsIAorICAgIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIDY5LCA4MiwgMTI4LCA4MiwgODUsIAorICAgIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgNzYsIDY5LCAxMjgsIDgyLCA4NSwgCisgICAgNzYsIDY1LCA3MywgMTI4LCA4MiwgODUsIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIAorICAgIDEyOCwgODIsIDg1LCA3MSwgNjYsIDIxNywgODIsIDg1LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDg0LCAxOTMsIDgyLCA4NSwgCisgICAgNjYsIDc2LCAxOTcsIDgyLCA4NSwgMTk0LCA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgCisgICAgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCAKKyAgICA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIAorICAgIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIAorICAgIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgCisgICAgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDgyLCAKKyAgICA2NSwgMTI4LCA4MiwgODIsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCAKKyAgICA4MiwgODIsIDc5LCA3OSwgMTI4LCA4MiwgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIAorICAgIDEyOCwgODIsIDgyLCA2OSwgODgsIDEyOCwgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIAorICAgIDgyLCA2OSwgNzIsIDEyOCwgODIsIDgyLCA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIAorICAgIDgyLCA4MiwgNjUsIDg4LCAxMjgsIDgyLCA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgCisgICAgNjUsIDY1LCAxMjgsIDgyLCA3OSwgODcsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIAorICAgIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODQsIDczLCA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgCisgICAgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA3OSwgODQsIDY1LCA4NCwgCisgICAgNjksIDE5NiwgODIsIDc5LCA4MywgNzIsIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCAKKyAgICA4MywgNjksIDEyOCwgODIsIDc5LCA3OSwgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIAorICAgIDc5LCA3OSwgNzUsIDEyOCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODIsIDc5LCA3NywgNjUsIDc4LCA3MywgNjUsIDIwNiwgCisgICAgODIsIDc5LCA3NywgNjUsIDIwNiwgODIsIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNzMsIDc4LCAxOTksIDgyLCAKKyAgICA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgNzksIDc2LCA3NiwgNjksIDY4LCA0NSwgODUsIDIwOCwgODIsIDc5LCA3MiwgNzMsIAorICAgIDc4LCA3MSwgODksIDE5MywgODIsIDc5LCA3MSwgMTI4LCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgCisgICAgMTI4LCA4MiwgNzksIDY3LCAyMDMsIDgyLCA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNzksIDIxMiwgODIsIDc5LCA2NiwgCisgICAgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIDgzLCA4NCwgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCAKKyAgICA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgNzgsIDE5OSwgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIAorICAgIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgODIsIDc3LCA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIAorICAgIDEyOCwgODIsIDc2LCA3MywgMTI4LCA4MiwgNzYsIDY5LCAxMjgsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCAKKyAgICA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIAorICAgIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgCisgICAgMTk5LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCA4MCwgNzYsIDE5NywgCisgICAgODIsIDczLCA4MCwgMTI4LCA4MiwgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDgyLCAKKyAgICA3MywgNzgsIDcwLCA3OSwgODIsIDkwLCA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIAorICAgIDY2LCA2NSwgMTI4LCA4MiwgNzMsIDc3LCAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MSwgCisgICAgODYsIDY5LCA2OCwgNzMsIDE5NSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgCisgICAgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCAKKyAgICA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgCisgICAgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgyLCA3MywgNzAsIAorICAgIDc2LCA2OSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAKKyAgICA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAorICAgIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAKKyAgICA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCisgICAgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIAorICAgIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzUsIAorICAgIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDY3LCA3MywgCisgICAgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIDY5LCA3NiwgMTI4LCA4MiwgNzMsIDY5LCAKKyAgICA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgNjksIDEyOCwgODIsIDczLCA2NywgMTk3LCAKKyAgICA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjYsIDY2LCA3OSwgMjA2LCA4MiwgNzMsIDY1LCAyMDQsIAorICAgIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCA4MiwgNzIsIDczLCA3OCwgCisgICAgNzksIDY3LCA2OSwgODIsIDc5LCA4MywgMTI4LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MiwgMTI4LCA4MiwgNzEsIDg5LCAKKyAgICA3MywgNzgsIDcxLCA4MywgMTI4LCA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIAorICAgIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODIsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAKKyAgICA2OSwgNjgsIDQ1LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCAxMjgsIAorICAgIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDE5NywgODIsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgODIsIDY5LCA4NSwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCAKKyAgICA4MiwgMjA2LCA4MiwgNjksIDg0LCA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIAorICAgIDEyOCwgODIsIDY5LCA4NCwgNzksIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAKKyAgICAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIAorICAgIDY5LCAxOTYsIDgyLCA2OSwgODMsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgCisgICAgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCA4NCwgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgCisgICAgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIAorICAgIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgCisgICAgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCAKKyAgICA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIAorICAgIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCA4OSwgCisgICAgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCA4NCwgNzksIDcxLCAKKyAgICA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIDEyOCwgODIsIDY5LCAKKyAgICA3NywgNzMsIDc4LCA2OCwgNjksIDIxMCwgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIDc2LCA3MywgNzEsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgNjksIDY1LCA4MywgCisgICAgNjksIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg4LCA2OSwgNjgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICA2NSwgMjA0LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDY1LCAxMjgsIAorICAgIDgyLCA2OSwgNzQsIDY1LCA3OCwgMTk5LCA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgNzMsIDEyOCwgODIsIDY5LCA3MSwgCisgICAgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCAKKyAgICA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIAorICAgIDY5LCA3MSwgODUsIDc2LCA4NSwgMjExLCA4MiwgNjksIDcxLCA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgCisgICAgNzEsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzEsIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCAKKyAgICA2NSwgMTI4LCA4MiwgNjksIDcwLCA3OSwgODIsIDc3LCA2OSwgMTk2LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIAorICAgIDE5NywgODIsIDY5LCA2OCwgODUsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA2NywgCisgICAgODksIDY3LCA3NiwgNzMsIDc4LCAxOTksIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgyLCA2OSwgNjcsIDg0LCAKKyAgICA3MywgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIAorICAgIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCAKKyAgICAxOTcsIDgyLCA2OSwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDY3LCA3OSwgODIsIAorICAgIDY4LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgCisgICAgNjgsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgODYsIAorICAgIDE5NywgODIsIDY5LCA2NywgNjksIDgwLCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCA4MiwgCisgICAgMTI4LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgMjEwLCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgNDUsIDUwLCAKKyAgICAxMjgsIDgyLCA2OSwgNjUsIDc2LCA3MSwgNjUsIDgyLCAxMjgsIDgyLCA2OSwgNjUsIDcyLCA3NywgODUsIDc1LCAxMjgsIAorICAgIDgyLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MiwgNjgsIDIwNywgODIsIDY4LCA2OSwgMjA0LCA4MiwgNjYsIDY1LCA4MywgCisgICAgMTkzLCA4MiwgNjUsIDg5LCA4MywgMTI4LCA4MiwgNjUsIDg5LCAyMTEsIDgyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDgyLCA2NSwgODQsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzIsIAorICAgIDE5MywgODIsIDY1LCA4NCwgNjUsIDEyOCwgODIsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDgzLCA4NywgNjUsIDY4LCA3MywgCisgICAgMTI4LCA4MiwgNjUsIDgzLCA3OSwgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODEsIDEyOCwgCisgICAgODIsIDY1LCA4MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIDE5NywgODIsIDY1LCA3OCwgNjUsIAorICAgIDEyOCwgODIsIDY1LCA3OCwgMTI4LCA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIDY2LCA2NSwgODQsIDEyOCwgODIsIAorICAgIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY1LCA3OCwgODMsIDY1LCAKKyAgICA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIAorICAgIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgCisgICAgNzYsIDg3LCA2NSwgMjE3LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCAKKyAgICA2OCwgNjUsIDEyOCwgODIsIDY1LCA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIDIwMCwgODIsIDY1LCA3MiwgCisgICAgMTI4LCA4MiwgNjUsIDcwLCA2OSwgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCAKKyAgICA2NywgODQsIDczLCA4NiwgMTk3LCA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIAorICAgIDY1LCA2OCwgMjAxLCA4MiwgNjUsIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIAorICAgIDgyLCA2NSwgNjcsIDczLCA3OCwgNzEsIDEyOCwgODIsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNjYsIDY2LCA3MywgCisgICAgODQsIDEyOCwgODIsIDY1LCA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgODIsIDY1LCA1MSwgMTI4LCA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDgyLCA0OCwgNTAsIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCAKKyAgICA0OCwgNTAsIDUzLCAxMjgsIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIAorICAgIDgyLCA0OCwgNDksIDU2LCAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCAKKyAgICA1MSwgMTI4LCA4MiwgNDgsIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIAorICAgIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCAKKyAgICA1MSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIAorICAgIDEyOCwgODIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIAorICAgIDg0LCAxMjgsIDgxLCA4OSwgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIAorICAgIDc5LCAxMjgsIDgxLCA4OSwgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIAorICAgIDY1LCA2NSwgMTI4LCA4MSwgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIAorICAgIDY5LCAxMjgsIDgxLCA4NywgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIAorICAgIDg4LCAxMjgsIDgxLCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIAorICAgIDg0LCAxMjgsIDgxLCA4NSwgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgODEsIDg1LCA4MiwgMTI4LCA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAKKyAgICAxOTcsIDgxLCA4NSwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA4MSwgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgCisgICAgODMsIDgzLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIAorICAgIDE5MywgODEsIDg1LCA3MywgNzgsIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgCisgICAgMjExLCA4MSwgODUsIDczLCA3NiwgMjEyLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgCisgICAgODEsIDg1LCA3MywgMTI4LCA4MSwgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIAorICAgIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCAKKyAgICA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIAorICAgIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgCisgICAgODIsIDg0LCA2OSwgODIsIDEyOCwgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCAKKyAgICA4NSwgODAsIDc2LCAxOTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIAorICAgIDY1LCA3OCwgMjEyLCA4MSwgODUsIDY1LCA2OCwgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCAKKyAgICAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgCisgICAgMTI4LCA4MSwgNzksIDg0LCAxMjgsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgCisgICAgODAsIDEyOCwgODEsIDc5LCA3OSwgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIAorICAgIDc5LCA2NSwgMTI4LCA4MSwgNzksIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIAorICAgIDY1LCAxMjgsIDgxLCA3MywgODQsIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNzAsIAorICAgIDEyOCwgODEsIDczLCA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgODQsIDEyOCwgODEsIDczLCA2OSwgODAsIDEyOCwgODEsIAorICAgIDczLCA2OSwgMTI4LCA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgNzMsIDEyOCwgODEsIDcyLCA4NywgNjksIDY5LCAxMjgsIAorICAgIDgxLCA3MiwgODcsIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgMTI4LCA4MSwgCisgICAgNzIsIDg1LCAxMjgsIDgxLCA3MiwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgCisgICAgODEsIDcyLCA2OSwgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCA4MSwgNzIsIDY1LCA4NSwgMTI4LCA4MSwgNzIsIDY1LCAKKyAgICA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIDEyOCwgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCAKKyAgICA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIDg5LCAxMjgsIDgxLCA2NSwgODUsIDEyOCwgODEsIDY1LCAKKyAgICA4NCwgNjUsIDc4LCAxMjgsIDgxLCA2NSwgODIsIDc4LCA2OSwgMjE3LCA4MSwgNjUsIDgyLCAxMjgsIDgxLCA2NSwgODEsIAorICAgIDEyOCwgODEsIDY1LCA4MCwgNzIsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCA4MywgMTI4LCA4MSwgNjUsIDc3LCA2NSwgCisgICAgODQsIDIxMSwgODEsIDY1LCA3NiwgMTkzLCA4MSwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODEsIDY1LCAKKyAgICA3MywgMTI4LCA4MSwgNjUsIDcwLCAxMjgsIDgxLCA2NSwgMTk4LCA4MSwgNjUsIDY4LCA3NywgNjUsIDEyOCwgODEsIDY1LCAKKyAgICA2NSwgNzMsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDgxLCA2NSwgNjUsIDcwLCAxMjgsIDgxLCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDgxLCA0OCwgNDgsIDU0LCAxMjgsIDgxLCA0OCwgNDgsIDUzLCAxMjgsIDgxLCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDgxLCA0OCwgNDgsIDUxLCAxMjgsIDgxLCA0OCwgNDgsIDUwLCAxMjgsIDgxLCA0OCwgNDgsIDQ5LCAxMjgsIDgwLCA5MCwgCisgICAgMTI4LCA4MCwgODksIDg4LCAxMjgsIDgwLCA4OSwgODQsIDEyOCwgODAsIDg5LCA4MiwgODgsIDEyOCwgODAsIDg5LCA4MiwgCisgICAgMTI4LCA4MCwgODksIDgwLCAxMjgsIDgwLCA4NywgNzksIDg5LCAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgCisgICAgNzksIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgCisgICAgNjksIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIAorICAgIDgwLCA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgCisgICAgNjksIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCAKKyAgICA4NSwgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIAorICAgIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgCisgICAgODUsIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCAKKyAgICA4OSwgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCAKKyAgICA4MCwgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIAorICAgIDEyOCwgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgCisgICAgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDgwLCA4NSwgNzcsIDgwLCAxMjgsIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA3MCwgNzAsIDY5LCA2OCwgCisgICAgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgNjcsIDc1LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgCisgICAgODUsIDE5NCwgODAsIDg1LCA2NSwgODEsIDEyOCwgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgCisgICAgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgCisgICAgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAorICAgIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCAKKyAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIAorICAgIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCA2NSwgCisgICAgNzYsIDg0LCA2OSwgMjEwLCA4MCwgODMsIDEyOCwgODAsIDgyLCA3OSwgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDg0LCAKKyAgICA3OSwgODYsIDY1LCA4MiwgODksIDIxMSwgODAsIDgyLCA3OSwgODQsIDc5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA2OSwgNjcsIAorICAgIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgCisgICAgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIDgwLCA2OSwgCisgICAgNzYsIDc2LCA2OSwgMjEwLCA4MCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgNzEsIDY5LCAKKyAgICAxOTYsIDgwLCA4MiwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgMTI4LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA3NCwgCisgICAgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA3MiwgNzMsIDY2LCA3MywgODQsIDY5LCAxOTYsIDgwLCAKKyAgICA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIAorICAgIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgCisgICAgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIAorICAgIDE5NywgODAsIDgyLCA3MywgODYsIDY1LCA2NywgMjE3LCA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgCisgICAgODQsIDgyLCAxOTMsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCA2OSwgMjEwLCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIDgyLCA3MywgCisgICAgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIDY3LCA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA2NywgNjksIAorICAgIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCA4MiwgNjksIDg2LCA3MywgCisgICAgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgODAsIDgyLCA2OSwgODMsIDY5LCA4NCwgMTI4LCAKKyAgICA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODMsIDY3LCA4MiwgCisgICAgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgODIsIDY1LCA3OCwgNjcsIAorICAgIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcxLCA3OCwgNjUsIDc4LCAKKyAgICAyMTIsIDgwLCA4MiwgNjksIDcwLCA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIAorICAgIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgCisgICAgODMsIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIAorICAgIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgCisgICAgODIsIDY1LCA4OSwgNjksIDIxMCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCAKKyAgICA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIDEyOCwgODAsIDgyLCA2NSwgNzcsIAorICAgIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgNzgsIDEyOCwgODAsIDgyLCA2NSwgCisgICAgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCA3MywgMTI4LCA4MCwgODIsIDY1LCAKKyAgICA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIDY1LCA3NywgMTI4LCA4MCwgODIsIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCAKKyAgICA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIDEyOCwgODAsIDgwLCA2NSwgMTI4LCA4MCwgNzksIDg5LCAxMjgsIDgwLCAKKyAgICA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIDgyLCAyMTEsIDgwLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MCwgNzksIAorICAgIDg3LCA2OSwgMjEwLCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIDIxNywgODAsIDc5LCA4NSwgNjcsIAorICAgIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4MCwgCisgICAgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA3OSwgODMsIDg0LCAKKyAgICA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIDgzLCA4NCwgMTI4LCA4MCwgNzksIAorICAgIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDgwLCA3OSwgODMsIDczLCA4NCwgCisgICAgNzMsIDc5LCA3OCwgODMsIDEyOCwgODAsIDc5LCA4MiwgODQsIDY1LCA2NiwgNzYsIDE5NywgODAsIDc5LCA4MiwgODIsIDY5LCAKKyAgICA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIAorICAgIDczLCA3OCwgMTk5LCA4MCwgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODAsIDY3LCA3OSwgODIsIDc4LCAKKyAgICAxMjgsIDgwLCA3OSwgODAsIDEyOCwgODAsIDc5LCAyMDgsIDgwLCA3OSwgNzksIDY4LCA3NiwgNjksIDEyOCwgODAsIDc5LCAKKyAgICA3OSwgMTI4LCA4MCwgNzksIDc4LCA2OCwgNzksIDEyOCwgODAsIDc5LCAyMDYsIDgwLCA3OSwgNzcsIDc3LCA2OSwgNjksIAorICAgIDEyOCwgODAsIDc5LCA3NywgNzcsIDY5LCAxOTcsIDgwLCA3OSwgNzYsIDc5LCAxMjgsIDgwLCA3OSwgNzYsIDczLCA4MywgCiAgICAgNzIsIDEyOCwgODAsIDc5LCA3NiwgNzMsIDY3LCAxOTcsIDgwLCA3OSwgNzYsIDIwMSwgODAsIDc5LCA3NiwgNjksIDEyOCwgCiAgICAgODAsIDc5LCA3NiwgMTk3LCA4MCwgNzksIDc1LCA4MiwgODksIDg0LCA3MywgNjksIDEyOCwgODAsIDc5LCA3NSwgNzksIDc0LCAKICAgICA3MywgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDIxMSwgODAsIDc5LCA3MywgNzgsIDg0LCA3OSwgMTI4LCA4MCwgNzksIApAQCAtMTY5MSw3NiArMTcwNSw3OCBAQAogICAgIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDgwLCA2OSwgODIsIDY3LCA4NSwgODMsIDgzLCA3MywgODYsIDY5LCAKICAgICAxMjgsIDgwLCA2OSwgODIsIDY3LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgNjksIAogICAgIDgwLCA2OSwgODQsIDEyOCwgODAsIDY5LCA4MCwgNjksIDIxMiwgODAsIDY5LCA3OSwgODIsIDg0LCAyMDAsIDgwLCA2OSwgCi0gICAgNzksIDgwLCA3NiwgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCAKLSAgICA4NCwgNjUsIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIAotICAgIDc4LCA4MywgODUsIDEyOCwgODAsIDY5LCA3OCwgODMsIDczLCA4NiwgMTk3LCA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgCi0gICAgNjksIDc4LCA3OCwgNjUsIDc4LCA4NCwgMTI4LCA4MCwgNjksIDc4LCA3MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCAKLSAgICA4NSwgNzMsIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIAotICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA2NywgNzMsIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgCi0gICAgODQsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIAotICAgIDEyOCwgODAsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIAotICAgIDY5LCAyMDAsIDgwLCA2OSwgNjksIDkwLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgCi0gICAgNjksIDgwLCAxMjgsIDgwLCA2OSwgNjksIDc3LCAxMjgsIDgwLCA2OSwgNjksIDczLCAxMjgsIDgwLCA2OSwgNjksIDEyOCwgCi0gICAgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIAotICAgIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCA2OSwgCi0gICAgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCA2NSwgMjA0LCA4MCwgNjksIDY1LCA3NSwgMjExLCA4MCwgNjksIDY1LCAKLSAgICA2NywgNzIsIDEyOCwgODAsIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIDY3LCAxOTcsIDgwLCA2OCwgNzMsIAotICAgIDEyOCwgODAsIDY4LCA3MCwgMTI4LCA4MCwgNjgsIDEyOCwgODAsIDY3LCAxMjgsIDgwLCA2NSwgOTAsIDY5LCA4MiwgMTI4LCAKLSAgICA4MCwgNjUsIDg5LCA2OSwgODIsIDc5LCA3NSwgMTI4LCA4MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MCwgNjUsIAotICAgIDg5LCAxMjgsIDgwLCA2NSwgODgsIDEyOCwgODAsIDY1LCA4NywgNzgsIDEyOCwgODAsIDY1LCAyMTUsIDgwLCA2NSwgODYsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MCwgNjUsIDg1LCAxMjgsIDgwLCA2NSwgMjEzLCA4MCwgNjUsIDg0LCA4NCwgCi0gICAgNjksIDgyLCA3OCwgMTI4LCA4MCwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDg0LCAKLSAgICAyMDAsIDgwLCA2NSwgODQsIDY1LCA3NSwgMTI4LCA4MCwgNjUsIDg0LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA4NCwgMTI4LCAKLSAgICA4MCwgNjUsIDgzLCA4NSwgODEsIDEyOCwgODAsIDY1LCA4MywgODMsIDgwLCA3OSwgODIsIDIxMiwgODAsIDY1LCA4MywgODMsIAotICAgIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDg1LCA4MCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCAKLSAgICA4MCwgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgNjgsIDc5LCA4NywgNzgsIDQ1LCAKLSAgICA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDY5LCA3OCwgNzEsIDY5LCAyMTAsIDgwLCA2NSwgODMsIAotICAgIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDgzLCA2OSwgODEsIDEyOCwgCi0gICAgODAsIDY1LCA4MywgNjUsIDc4LCA3MSwgNjUsIDIwNiwgODAsIDY1LCA4MiwgODUsIDc3LCAxMjgsIDgwLCA2NSwgODIsIDg0LCAKLSAgICAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIDczLCAyMDgsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIAotICAgIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDIxMiwgODAsIDY1LCA4MiwgNzUsIAotICAgIDEyOCwgODAsIDY1LCA4MiwgNzMsIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgODQsIDczLCA3MSwgCi0gICAgNzcsIDY5LCA3OCwgNzksIDIwNiwgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCAKLSAgICA4NCwgNzIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAyMTEsIAotICAgIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDY5LCAyMTEsIDgwLCA2NSwgODIsIDY1LCA4MCwgNzIsIDgyLCAKLSAgICA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgODAsIAotICAgIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCAyMDQsIDgwLCA2NSwgCi0gICAgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIAotICAgIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgMTkzLCA4MCwgNjUsIDgyLCA2NSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgMTI4LCAKLSAgICA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODAsIDY1LCA4MiwgNjUsIDEyOCwgODAsIDY1LCA4MiwgCi0gICAgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCA3NiwgNzMsIDgwLCAKLSAgICA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIDY5LCAyMTAsIAotICAgIDgwLCA2NSwgODAsIDEyOCwgODAsIDY1LCAyMDgsIDgwLCA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIDc1LCA4NSwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNzMsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgNzUsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3OCwgNzEsIDcxLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCA4MiwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3OCwgODQsIDczLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCAKLSAgICA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgCi0gICAgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgNzgsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCA2NSwgCi0gICAgNjgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDgyLCA2NSwgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKLSAgICA3OSwgNzYsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCi0gICAgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAorICAgIDc5LCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgODQsIDcyLCA3NiwgNzksIDc4LCAxMjgsIDgwLCA2OSwgCisgICAgNzgsIDg0LCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgODIsIDY1LCA3NywgMTI4LCAKKyAgICA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgODMsIDg1LCAxMjgsIDgwLCA2OSwgNzgsIAorICAgIDgzLCA3MywgODYsIDE5NywgODAsIDY5LCA3OCwgNzgsIDIxNywgODAsIDY5LCA3OCwgNzgsIDY1LCA3OCwgODQsIDEyOCwgCisgICAgODAsIDY5LCA3OCwgNzMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDc4LCA3MSwgODUsIDczLCA3OCwgMTI4LCA4MCwgNjksIDc4LCAKKyAgICA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDc4LCA2OSwgODQsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIAorICAgIDY5LCA3OCwgNjcsIDczLCA3NiwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3NiwgCisgICAgNjUsIDgzLCA4NCwgNzksIDIwNiwgODAsIDY5LCA3MywgODQsIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCAKKyAgICA4MCwgNjksIDcyLCA2OSwgMjAwLCA4MCwgNjksIDcyLCAxMjgsIDgwLCA2OSwgMjAwLCA4MCwgNjksIDY5LCA5MCwgNzMsIAorICAgIDEyOCwgODAsIDY5LCA2OSwgODMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MCwgMTI4LCA4MCwgNjksIDY5LCA3NywgCisgICAgMTI4LCA4MCwgNjksIDY5LCA3MywgMTI4LCA4MCwgNjksIDY5LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIAorICAgIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgCisgICAgNjUsIDIwNCwgODAsIDY5LCA2NSwgNzgsIDg1LCA4NCwgODMsIDEyOCwgODAsIDY5LCA2NSwgNzUsIDIxMSwgODAsIDY5LCAKKyAgICA2NSwgNjcsIDcyLCAxMjgsIDgwLCA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCA2NywgMTk3LCA4MCwgNjgsIAorICAgIDczLCAxMjgsIDgwLCA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIAorICAgIDEyOCwgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgODAsIDY1LCA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDIxMywgODAsIDY1LCAKKyAgICA4NCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIAorICAgIDY1LCA4NCwgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgCisgICAgODQsIDEyOCwgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCAKKyAgICA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCAKKyAgICA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgCisgICAgODcsIDc4LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA2OSwgNzgsIDcxLCA2OSwgMjEwLCAKKyAgICA4MCwgNjUsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA4MywgNjksIAorICAgIDgxLCAxMjgsIDgwLCA2NSwgODMsIDY1LCA3OCwgNzEsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgCisgICAgNjUsIDgyLCA4NCwgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCAKKyAgICA4NCwgNzMsIDY1LCA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgCisgICAgODQsIDczLCA2NSwgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCAKKyAgICA2NSwgODIsIDc1LCAxMjgsIDgwLCA2NSwgODIsIDczLCA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIAorICAgIDg0LCA3MywgNzEsIDc3LCA2OSwgNzgsIDc5LCAyMDYsIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgCisgICAgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIAorICAgIDgzLCA3MywgMjExLCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA2OSwgMjExLCA4MCwgNjUsIDgyLCA2NSwgCisgICAgODAsIDcyLCA4MiwgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIAorICAgIDc3LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgCisgICAgMjA0LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCAKKyAgICA3NiwgNzMsIDg0LCA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIAorICAgIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgODIsIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgCisgICAgNzYsIDczLCA4MCwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCAKKyAgICA2OSwgMjEwLCA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCAKKyAgICA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIAorICAgIDc1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgCisgICAgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgCisgICAgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIAorICAgIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgCisgICAgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCAKKyAgICA3MSwgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIAorICAgIDcxLCA3NiwgNjUsIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgCisgICAgNzEsIDc1LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKICAgICAxMjgsIDgwLCA2NSwgNzgsIDY5LCA4NSwgNzYsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDY4LCAxOTMsIAotICAgIDgwLCA2NSwgNzgsIDY1LCA2OSwgNzYsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3NywgCi0gICAgODUsIDc4LCA3MSwgNzUsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCAKLSAgICA3NywgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIAotICAgIDc3LCA3MywgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgCi0gICAgNzcsIDY5LCA3OCwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCAKLSAgICA2NSwgNjksIDcyLCAxMjgsIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIAotICAgIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc3LCA4OSwgODIsIDY5LCA3OCwgMTk3LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCA2NSwgCi0gICAgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIDg0LCAKLSAgICA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIAotICAgIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgODksIDY1LCAKLSAgICA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3MywgODIsIAotICAgIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDc4LCA4NCwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDgwLCA2NSwgNzMsIDEyOCwgCi0gICAgODAsIDY1LCA3MiwgNzYsIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MywgMTI4LCAKLSAgICA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCA4MCwgNjUsIAotICAgIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA2OCwgNjgsIDczLCA3OCwgMTk5LCA4MCwgNjUsIDY4LCAxOTMsIDgwLCA2NSwgCi0gICAgNjgsIDEyOCwgODAsIDY1LCA2NywgNzUsIDczLCA3OCwgNzEsIDEyOCwgODAsIDY1LCA2NywgNzUsIDY1LCA3MSwgNjksIAorICAgIDgwLCA2NSwgNzgsIDY3LCA2NSwgNzUsIDY5LCA4MywgMTI4LCA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCAKKyAgICA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgMjA2LCA4MCwgNjUsIDc3LCA4NSwgNzgsIDcxLCA3NSwgNjUsIAorICAgIDcyLCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIDc3LCA4MywgNzIsIDY1LCA2OSwgCisgICAgMTI4LCA4MCwgNjUsIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgNzcsIDczLCA3OCwgNzEsIDc1LCAKKyAgICA2NSwgNzYsIDEyOCwgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCA3NywgNjksIDc4LCA2OSwgNzgsIAorICAgIDcxLCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY1LCA2OSwgNzIsIDEyOCwgCisgICAgODAsIDY1LCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgNjUsIDEyOCwgODAsIDY1LCAKKyAgICA3NiwgNzcsIDg5LCA4MiwgNjksIDc4LCAxOTcsIDgwLCA2NSwgNzYsIDc3LCAxMjgsIDgwLCA2NSwgNzYsIDIwNSwgODAsIAorICAgIDY1LCA3NiwgNzYsIDY1LCA4NywgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzYsIDY1LCA4MywgMTI4LCA4MCwgNjUsIDc2LCA2OSwgCisgICAgODQsIDg0LCA2OSwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODUsIDc4LCAxOTksIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCAKKyAgICA3MywgOTAsIDY5LCAxOTYsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCAyMDQsIDgwLCA2NSwgNzUsIDgwLCA2NSwgMjAzLCA4MCwgNjUsIDczLCAKKyAgICA4OSwgNjUsIDc4LCA3OCwgNzksIDczLCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIAorICAgIDczLCA4MiwgNjksIDE5NiwgODAsIDY1LCA3MywgNzgsIDg0LCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgODAsIDY1LCA3MywgCisgICAgMTI4LCA4MCwgNjUsIDcyLCA3NiwgNjUsIDg2LCAyMDEsIDgwLCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3MSwgNjksIDgzLCAKKyAgICAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCAKKyAgICA2NSwgNjgsIDY4LCA3NiwgMTk3LCA4MCwgNjUsIDY4LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA2NSwgNjgsIDE5MywgODAsIAorICAgIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNjUsIDcxLCA2OSwgCiAgICAgMTI4LCA4MCwgNjUsIDY1LCA4NCwgODUsIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgwLCAKICAgICA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCA2NSwgNzMsIDEyOCwgODAsIAogICAgIDY1LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIDgwLCA1MCwgMTI4LCA4MCwgCkBAIC0xNzcwLDQ2NCArMTc4Niw0NzEgQEAKICAgICA0OCwgNDgsIDUwLCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgODksIAogICAgIDgyLCA2NSwgNzgsIDczLCA4MywgNzcsIDE5MywgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgODgsIDczLCA2NSwgCiAgICAgMTI4LCA3OSwgODgsIDczLCAxOTMsIDc5LCA4OCwgNjksIDczLCA2NSwgMjAxLCA3OSwgODgsIDY5LCA3MywgMTkzLCA3OSwgCi0gICAgODYsIDY5LCA4MiwgODIsIDczLCA2OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA3OSwgNzgsIDE5OSwgNzksIDg2LCAKLSAgICA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDg5LCAxMjgsIDc5LCA4NiwgNjksIAotICAgIDgyLCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDgwLCAxMjgsIDc5LCA4NiwgCi0gICAgNjksIDgyLCA3NiwgNjUsIDczLCA2OCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA3OSwgODYsIDY1LCAKLSAgICA3NiwgMTI4LCA3OSwgODYsIDY1LCAyMDQsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4NSwgODQsIAotICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgMjE2LCA3OSwgCi0gICAgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAxOTcsIDc5LCAKLSAgICA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCA3MiwgNjksIAotICAgIDgyLCAyMTEsIDc5LCA4NCwgNzIsIDY5LCAyMTAsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIDIwNiwgNzksIDg0LCA3MiwgCi0gICAgNjUsIDc2LCAxMjgsIDc5LCA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgzLCA2NywgMTI4LCA3OSwgODIsIDg0LCAKLSAgICA3MiwgNzksIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc5LCA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIAotICAgIDY1LCA4NCwgMTk3LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgCi0gICAgNjksIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIAotICAgIDIwNiwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgCi0gICAgODIsIDY5LCA0NSwgNTAsIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDY4LCA2OSwgMjEwLCAKLSAgICA3OSwgODIsIDY3LCA3MiwgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzksIDgwLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCAKLSAgICA3OCwgMTk5LCA3OSwgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCA4NSwgODMsIAotICAgIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCAKLSAgICAyMTAsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDc5LCA4MCwgNjksIDc4LCA0NSwgODAsIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCAKLSAgICA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgMjA3LCA3OSwgODAsIAotICAgIDY5LCA3OCwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCAKLSAgICA4NSwgNzMsIDg0LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDc5LCA4MCwgNjksIDc4LCAxMjgsIDc5LCA3OSwgOTAsIAotICAgIDY5LCAxMjgsIDc5LCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgCi0gICAgODUsIDEyOCwgNzksIDc5LCA3MiwgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCAKLSAgICA3NiwgNzMsIDEyOCwgNzksIDc4LCA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCAKLSAgICA3OCwgNzUsIDY1LCA4MiwgMTI4LCA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIAotICAgIDY1LCAyMTcsIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgCi0gICAgNzMsIDc4LCAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCAKLSAgICA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIAotICAgIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgCi0gICAgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCAKLSAgICA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIAotICAgIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgCi0gICAgNzYsIDEyOCwgNzksIDczLCAyMDQsIDc5LCA3MiwgNzcsIDEyOCwgNzksIDcyLCAyMDUsIDc5LCA3MSwgODIsIDY5LCAxMjgsIAotICAgIDc5LCA3MSwgNzksIDc4LCA2OSwgNzUsIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAKLSAgICAyMDUsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDgyLCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIAotICAgIDcwLCA3MCwgNzMsIDY3LCAxOTcsIDc5LCA3MCwgNzAsIDEyOCwgNzksIDY5LCA4OSwgMTI4LCA3OSwgNjksIDc1LCAxMjgsIAotICAgIDc5LCA2OSwgNjksIDEyOCwgNzksIDY4LCA2OSwgNzgsIDEyOCwgNzksIDY4LCA2OCwgMTI4LCA3OSwgNjgsIDE5NiwgNzksIAotICAgIDY3LCA4NCwgNzksIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCA4NCwgCi0gICAgNjksIDIxMiwgNzksIDY3LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzksIDY3LCAyMTAsIDc5LCA2NywgNzYsIDc5LCAKLSAgICA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIAotICAgIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgCi0gICAgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCAKLSAgICA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIAotICAgIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgCi0gICAgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgCi0gICAgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCAKLSAgICA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIAotICAgIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIAotICAgIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgCi0gICAgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAKLSAgICA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIAotICAgIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgCi0gICAgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgCi0gICAgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCAKLSAgICA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIAotICAgIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgCi0gICAgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgCi0gICAgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCAKLSAgICA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgCi0gICAgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgCi0gICAgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCAKLSAgICA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIAotICAgIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgCi0gICAgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCAKLSAgICA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAKLSAgICAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCAKLSAgICA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIAotICAgIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgCi0gICAgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAKLSAgICAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCAKLSAgICA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIAotICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgCi0gICAgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAKLSAgICAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCAKLSAgICA4NSwgMTI4LCA3OCwgODksIDg1LCA4NCwgMTI4LCA3OCwgODksIDg1LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIAotICAgIDEyOCwgNzgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCAxMjgsIDc4LCA4OSwgODUsIDc4LCAxMjgsIAotICAgIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIDEyOCwgNzgsIDg5LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA3OSwgCi0gICAgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA3OSwgNzksIDEyOCwgNzgsIDg5LCA3OSwgNzgsIDEyOCwgCi0gICAgNzgsIDg5LCA3OSwgNjUsIDEyOCwgNzgsIDg5LCA3OSwgMTI4LCA3OCwgODksIDc0LCA2NSwgMTI4LCA3OCwgODksIDczLCAKLSAgICA4OCwgMTI4LCA3OCwgODksIDczLCA4NCwgMTI4LCA3OCwgODksIDczLCAyMTIsIDc4LCA4OSwgNzMsIDIxMSwgNzgsIDg5LCAKLSAgICA3MywgMjEwLCA3OCwgODksIDczLCA4MCwgMTI4LCA3OCwgODksIDczLCA3OCwgNDUsIDY4LCA3OSwgMTI4LCA3OCwgODksIAotICAgIDczLCA3OCwgMTI4LCA3OCwgODksIDczLCA3MywgMTI4LCA3OCwgODksIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAKLSAgICAxMjgsIDc4LCA4OSwgMjAxLCA3OCwgODksIDcyLCA2NSwgMTI4LCA3OCwgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAKLSAgICAyMTIsIDc4LCA4OSwgNjksIDc4LCAxMjgsIDc4LCA4OSwgNjksIDcyLCAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgMTI4LCA3OCwgODksIDE5NiwgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCAKLSAgICA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgNzMsIDEyOCwgNzgsIDg5LCA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIAotICAgIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgCi0gICAgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCA3OCwgODcsIDczLCAxMjgsIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCA3OCwgODcsIDEyOCwgNzgsIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIAotICAgIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgODUsIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgCi0gICAgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCA3OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgCi0gICAgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgCi0gICAgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIDg1LCA3OCwgODUsIDIxOCwgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCAKLSAgICA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgODUsIDc4LCA2NSwgODYsIDczLCAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIAotICAgIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCA4MiwgMjA3LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgCi0gICAgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCAKLSAgICA2NiwgNjksIDgyLCAxMjgsIDc4LCA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCAKLSAgICA3OCwgODUsIDc2LCAxMjgsIDc4LCA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIAotICAgIDg1LCA2OSwgMTI4LCA3OCwgODUsIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgCi0gICAgNDksIDEyOCwgNzgsIDg1LCA0OSwgMTc3LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCAKLSAgICA1MCwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA4NSwgNDgsIAotICAgIDQ5LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgCi0gICAgODUsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA3OCwgODUsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MCwgCi0gICAgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ4LCAKLSAgICA0OSwgNDgsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIAotICAgIDg1LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgNzgsIDg1LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTEsIAotICAgIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgODQsIDg4LCA3MywgCi0gICAgODYsIDEyOCwgNzgsIDg0LCA4NSwgODUsIDEyOCwgNzgsIDg0LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCA4NSwgNzQsIDEyOCwgCi0gICAgNzgsIDg0LCAyMTMsIDc4LCA4NCwgODMsIDY1LCA4NSwgMTI4LCA3OCwgODQsIDc5LCA4MSwgODAsIDY5LCA3OCwgMTI4LCAKLSAgICA3OCwgODQsIDc5LCA3MSwgMTI4LCA3OCwgODQsIDc5LCAxOTksIDc4LCA4NCwgNzMsIDY5LCAxOTcsIDc4LCA4NCwgNzIsIAotICAgIDY1LCA4NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzgsIDcxLCA2NiwgNjUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc3LCAKLSAgICAxMjgsIDc4LCA4NCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNjksIDY5LCAxMjgsIDc4LCA4NCwgNjUsIDgwLCAxMjgsIDc4LCAKLSAgICA4NCwgNjUsIDIwOCwgNzgsIDg0LCA2NSwgNjUsIDEyOCwgNzgsIDgzLCA4NSwgNzksIDIxMiwgNzgsIDgzLCA4NSwgNzgsIAotICAgIDEyOCwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzgsIDgzLCA3OSwgNzcsIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4NCwgCi0gICAgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDgwLCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCAKLSAgICA4NSwgODQsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDIxMiwgNzgsIDgzLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODMsIAotICAgIDcyLCA4NSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA2OSwgNjksIDEyOCwgCi0gICAgNzgsIDgzLCA3MiwgNjUsIDgxLCAxMjgsIDc4LCA4MywgNzIsIDY1LCAxMjgsIDc4LCA4MywgNjksIDg1LCA2NSwgNjksIDc4LCAKLSAgICAxMjgsIDc4LCA4MywgNjksIDc4LCAxMjgsIDc4LCA4MywgNjUsIDEyOCwgNzgsIDgyLCA4OSwgODgsIDEyOCwgNzgsIDgyLCAKLSAgICA4OSwgODQsIDEyOCwgNzgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODksIDgyLCAxMjgsIDc4LCA4MiwgODksIAotICAgIDgwLCAxMjgsIDc4LCA4MiwgODksIDEyOCwgNzgsIDgyLCA4NSwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODQsIDEyOCwgNzgsIAotICAgIDgyLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDgyLCAxMjgsIDc4LCA4MiwgODUsIDgwLCAxMjgsIDc4LCA4MiwgCi0gICAgODUsIDY1LCAxMjgsIDc4LCA4MiwgODUsIDEyOCwgNzgsIDgyLCA3OSwgODgsIDEyOCwgNzgsIDgyLCA3OSwgODAsIDEyOCwgCi0gICAgNzgsIDgyLCA3OSwgMTI4LCA3OCwgODIsIDY5LCA4OCwgMTI4LCA3OCwgODIsIDY5LCA4NCwgMTI4LCA3OCwgODIsIDY5LCAKLSAgICAyMTEsIDc4LCA4MiwgNjksIDgwLCAxMjgsIDc4LCA4MiwgNjksIDEyOCwgNzgsIDgyLCA2NSwgODgsIDEyOCwgNzgsIDgyLCAKLSAgICA2NSwgODQsIDEyOCwgNzgsIDgyLCA2NSwgODAsIDEyOCwgNzgsIDgyLCA2NSwgMTI4LCA3OCwgODEsIDczLCA3MSwgMTI4LCAKLSAgICA3OCwgNzksIDg5LCAxMjgsIDc4LCA3OSwgODgsIDEyOCwgNzgsIDc5LCA4NywgNjcsIDEyOCwgNzgsIDc5LCA4NiwgNjksIAotICAgIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA3OSwgODQsIDg0LCA3OSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgODMsIDEyOCwgCi0gICAgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDc4LCAKLSAgICA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCA3NSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgMjAzLCA3OCwgNzksIAotICAgIDg0LCA2OSwgMTI4LCA3OCwgNzksIDg0LCAxOTcsIDc4LCA3OSwgODQsIDY3LCA3MiwgNjksIDE5NiwgNzgsIDc5LCA4NCwgCi0gICAgNjcsIDcyLCAxMjgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA3OSwgODQsIDEyOCwgNzgsIDc5LCAKLSAgICAyMTIsIDc4LCA3OSwgODMsIDY5LCAxMjgsIDc4LCA3OSwgODMsIDE5NywgNzgsIDc5LCA4MiwgODQsIDcyLCA4NywgNjksIAotICAgIDgzLCAyMTIsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDY1LCA4MywgCi0gICAgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3OCwgNzksIDgyLCA3NywgNjUsIDIwNCwgNzgsIDc5LCAKLSAgICA4MiwgNjgsIDczLCAxOTUsIDc4LCA3OSwgMjEwLCA3OCwgNzksIDgwLCAxMjgsIDc4LCA3OSwgNzksIDc4LCA4NSwgMTI4LCAKLSAgICA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OSwgNzgsIDcwLCA3OSwgODIsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDc4LCA3OSwgNzgsIAotICAgIDQ1LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc4LCA3OSwgNzgsIDQ1LCA3NCwgNzksIDczLCA3OCwgNjksIDgyLCAKLSAgICAxMjgsIDc4LCA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA2NSwgNzUsIDczLCA3OCwgMTk5LCA3OCwgNzksIDc4LCAxMjgsIAotICAgIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgNzgsIDc5LCA3NSwgNzIsIDg1LCA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgCi0gICAgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCA3OSwgNDUsIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAKLSAgICAxMjgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA4NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIAotICAgIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDczLCA3MywgMTI4LCA3OCwgNzgsIDc4LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgCi0gICAgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAKLSAgICA3MywgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCAKLSAgICA3OCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIAotICAgIDc4LCA3MSwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgCi0gICAgNzgsIDcxLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAxMjgsIDc4LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgCi0gICAgNzgsIDc2LCA2NSwgODUsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgMTI4LCAKLSAgICA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgCi0gICAgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTIsIAotICAgIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIDczLCA3OCwgCi0gICAgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIDg1LCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCAKLSAgICA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIAotICAgIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIAotICAgIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgCi0gICAgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCAKLSAgICA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIAotICAgIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgCi0gICAgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgCi0gICAgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIAotICAgIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgCi0gICAgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCAKLSAgICA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIAotICAgIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgCi0gICAgMTI4LCA3OCwgNzMsIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCAKLSAgICA3MSwgODUsIDEyOCwgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIAotICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIAotICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgCi0gICAgNjgsIDY1LCAxNzgsIDc4LCA3MywgNzgsIDU3LCAxMjgsIDc4LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3NywgMTI4LCA3OCwgCi0gICAgNzMsIDIwNSwgNzgsIDczLCA3NSwgNzksIDc2LCA4MywgNjYsIDg1LCA4MiwgMTk5LCA3OCwgNzMsIDc1LCA3MiwgNjUsIDcyLCAKLSAgICA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDEyOCwgNzgsIAotICAgIDczLCA3MiwgODMsIDcyLCA4NiwgNjUsIDgzLCA2NSwgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA3NywgNzMsIDc4LCAKLSAgICAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDY5LCA4MywgNzIsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAotICAgIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc4LCA3MywgNzEsIDcxLCA2NSwgNzIsIDczLCA4NCwgNjUsIDEyOCwgNzgsIDczLCA2OSwgCi0gICAgODgsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzgsIDczLCAKLSAgICA2OSwgODUsIDc4LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCA2NSwgCi0gICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIAotICAgIDY3LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgMjA2LCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCAxMjgsIAotICAgIDc4LCA3MywgNjYsIDEyOCwgNzgsIDczLCA2NSwgMTI4LCA3OCwgNzMsIDUwLCAxMjgsIDc4LCA3MiwgODUsIDY5LCAxMjgsIAotICAgIDc4LCA3MiwgNzQsIDY1LCAxMjgsIDc4LCA3MiwgMTI4LCA3OCwgNzEsIDg5LCA2OSwgMTI4LCA3OCwgNzEsIDg2LCA2OSwgCi0gICAgMTI4LCA3OCwgNzEsIDg1LCA4NSwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg0LCAKLSAgICAxMjgsIDc4LCA3MSwgODUsIDc5LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIAotICAgIDg0LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgCi0gICAgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIDc4LCA3MSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgCi0gICAgNzksIDgwLCAxMjgsIDc4LCA3MSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCAKLSAgICA3MiwgMTI4LCA3OCwgNzEsIDc5LCA2OSwgMjAwLCA3OCwgNzEsIDIwNywgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCAKLSAgICA3OCwgNzEsIDc1LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAotICAgIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDc1LCA4NSwgMTk3LCA3OCwgNzEsIDc1LCA3MywgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgCi0gICAgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIAotICAgIDY1LCA3NywgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDEyOCwgNzgsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgMTI4LCA3OCwgNzEsIDcyLCA2NSwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODAsIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCA3MSwgCi0gICAgODUsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAxOTcsIAotICAgIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDIwNiwgNzgsIDcxLCA3MSwgODUsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3MywgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIAotICAgIDcxLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgNzEsIDcxLCA2OSwgNzgsIDEyOCwgCi0gICAgNzgsIDcxLCA3MSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIAotICAgIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCAxMjgsIDc4LCA3MSwgNjksIDg4LCAxMjgsIDc4LCA3MSwgNjksIDg1LCA4MiwgNjksIDg1LCAKLSAgICA4NCwgMTI4LCA3OCwgNzEsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDY5LCA2OSwgMTI4LCAKLSAgICA3OCwgNzEsIDY5LCA2NSwgNjgsIDY1LCA3NiwgMTI4LCA3OCwgNzEsIDY1LCA4OCwgMTI4LCA3OCwgNzEsIDY1LCA4NSwgCi0gICAgMTI4LCA3OCwgNzEsIDY1LCA4NCwgMTI4LCA3OCwgNzEsIDY1LCAyMTEsIDc4LCA3MSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgCi0gICAgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNjUsIDc4LCA3MSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDEyOCwgNzgsIDcxLCAKLSAgICA2NSwgNzMsIDEyOCwgNzgsIDcxLCA2NSwgNzIsIDEyOCwgNzgsIDcxLCA2NSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgMTkzLCAKLSAgICA3OCwgNzAsIDEyOCwgNzgsIDY5LCA4OCwgMjEyLCA3OCwgNjksIDg4LCAxMjgsIDc4LCA2OSwgODcsIDgzLCA4MCwgNjUsIAotICAgIDgwLCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgCi0gICAgMTk3LCA3OCwgNjksIDg3LCAxMjgsIDc4LCA2OSwgMjE1LCA3OCwgNjksIDg1LCA4NCwgODIsIDY1LCA3NiwgMTI4LCA3OCwgCi0gICAgNjksIDg1LCA4NCwgODIsIDY1LCAyMDQsIDc4LCA2OSwgODUsIDg0LCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgODcsIDc5LCAKLSAgICA4MiwgNzUsIDY5LCAxOTYsIDc4LCA2OSwgODQsIDEyOCwgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCAKLSAgICA3OCwgNjksIDgyLCAxOTYsIDc4LCA2OSwgODEsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OSwgODAsIDg0LCA4NSwgNzgsIAotICAgIDY5LCAxMjgsIDc4LCA2OSwgODAsIDEyOCwgNzgsIDY5LCA3OSwgMTI4LCA3OCwgNjksIDIwNywgNzgsIDY5LCA3OCwgNzksIAotICAgIDY5LCAxMjgsIDc4LCA2OSwgNzgsIDY1LCA3OCwgNzksIDEyOCwgNzgsIDY5LCA3OCwgMTI4LCA3OCwgNjksIDc2LCAxMjgsIAotICAgIDc4LCA2OSwgNzMsIDg0LCA3MiwgNjksIDIxMCwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY5LCA3MSwgCi0gICAgNjUsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDY3LCA3NSwgODQsIDczLCA2OSwgMTI4LCA3OCwgNjksIDY3LCA3NSwgMTI4LCAKLSAgICA3OCwgNjksIDY2LCA2OSwgNzgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzgsIDY4LCA4NSwgODgsIDEyOCwgNzgsIAotICAgIDY4LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDgyLCAxMjgsIDc4LCA2OCwgCi0gICAgODUsIDgwLCAxMjgsIDc4LCA2OCwgODUsIDc4LCAxMjgsIDc4LCA2OCwgMjEzLCA3OCwgNjgsIDc5LCA4OCwgMTI4LCA3OCwgCi0gICAgNjgsIDc5LCA4NCwgMTI4LCA3OCwgNjgsIDc5LCA4MCwgMTI4LCA3OCwgNjgsIDc5LCA3OSwgMTI4LCA3OCwgNjgsIDc5LCAKLSAgICA3OCwgMTI4LCA3OCwgNjgsIDc5LCA3NywgNjYsIDg1LCAxMjgsIDc4LCA2OCwgNzksIDc2LCAxOTcsIDc4LCA2OCwgNzMsIAotICAgIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDg0LCAxMjgsIDc4LCA2OCwgNzMsIDgxLCAxMjgsIDc4LCA2OCwgNzMsIDgwLCAxMjgsIAotICAgIDc4LCA2OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgMTI4LCA3OCwgNjgsIDczLCA2OCwgNjUsIDEyOCwgCi0gICAgNzgsIDY4LCA3MywgNjUsIDgxLCAxMjgsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4OCwgMTI4LCAKLSAgICA3OCwgNjgsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDY1LCA2OSwgODIsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIAotICAgIDY5LCA4MCwgMTI4LCA3OCwgNjgsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCAxMjgsIDc4LCA2OCwgNjUsIDg4LCAxMjgsIAotICAgIDc4LCA2OCwgNjUsIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDc4LCA2OCwgNjUsIDc3LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDY1LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY4LCAKLSAgICA2NSwgMTkzLCA3OCwgNjcsIDcyLCA2NSwgODUsIDEyOCwgNzgsIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIAotICAgIDEyOCwgNzgsIDY2LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIAotICAgIDc4LCA2NiwgODksIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgCi0gICAgNzgsIDY2LCA3OSwgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCAKLSAgICA3OSwgMTI4LCA3OCwgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCAKLSAgICA3OCwgNjYsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIAotICAgIDc4LCA2NiwgNzMsIDEyOCwgNzgsIDY2LCA3MiwgMTI4LCA3OCwgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgCi0gICAgMTI4LCA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgNjYsIDY1LCAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCA4OCwgNzMsIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCAKLSAgICA4NSwgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIDg1LCA2OCwgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgCi0gICAgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCAKLSAgICA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjUsIDgzLCA2NSwgMjA0LCA3OCwgCi0gICAgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzksIDIxMSwgCi0gICAgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzgsIDcxLCA3NywgNzksIDc4LCA4NCwgNzIsIAotICAgIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgNzcsIDY5LCAxMjgsIAotICAgIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgNTAsIDEyOCwgNzgsIDY1LCA3NywgMTI4LCA3OCwgNjUsIDc1LCAxMjgsIAotICAgIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCA2NSwgNzMsIDIwNCwgNzgsIDY1LCA3MSwgODIsIDIwMSwgNzgsIDY1LCA3MSwgCi0gICAgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIDY1LCAxMjgsIDc4LCA2NSwgNzEsIDE5MywgNzgsIDY1LCA3MSwgMTI4LCA3OCwgCi0gICAgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCA3OCwgNjUsIDY2LCA3NiwgNjUsIDEyOCwgNzgsIDY1LCA2NiwgNjUsIDg0LCAKLSAgICA2NSwgNjksIDY1LCAyMDYsIDc4LCA2NSwgNjUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIAotICAgIDc1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNjUsIDE5MywgCi0gICAgNzgsIDY1LCA1MiwgMTI4LCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA2NSwgNDUsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAKLSAgICAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgNTIsIDQ4LCAxMjgsIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCAKLSAgICA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIAotICAgIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgCi0gICAgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIDc4LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCAKLSAgICA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgNDgsIDUxLCA0OSwgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCAKLSAgICA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCA1NiwgMTI4LCA3OCwgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIAotICAgIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCAKLSAgICA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIAotICAgIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgCi0gICAgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgCi0gICAgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCAKLSAgICA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCAKLSAgICA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIAotICAgIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCA3NywgODksIDg0LCAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgCi0gICAgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIDg5LCA2NSwgMTI4LCA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIAotICAgIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCA4NywgNzksIDEyOCwgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIAotICAgIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCA3NywgODcsIDY5LCAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIAotICAgIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAyMTUsIDc3LCA4NiwgODMsIDEyOCwgNzcsIDg2LCA3OSwgODAsIAotICAgIDEyOCwgNzcsIDg2LCA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNzEsIDY1LCA3NywgMTI4LCA3NywgCi0gICAgODYsIDEyOCwgNzcsIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIDg1LCA4MywgNzMsIDc1LCA2NSwgODQsIDc5LCAKLSAgICA2NSwgNzgsIDEyOCwgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAxOTMsIDc3LCA4NSwgODUsIDEyOCwgNzcsIAotICAgIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDE5NSwgNzcsIDg1LCA4MywgCi0gICAgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgMTI4LCA3NywgODUsIDgzLCA3MiwgMTc5LCAKLSAgICA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgODMsIDEyOCwgNzcsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNzcsIDg1LCA4MiwgNzEsIDg1LCA1MCwgMTI4LCA3NywgODUsIDgyLCA2OSwgMTI4LCA3NywgODUsIDgyLCA2OCwgCi0gICAgNjUsIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDE5MywgNzcsIDg1LCA4MiwgMTI4LCA3NywgODUsIDgxLCA2OCwgNjUsIDc3LCAKLSAgICAxMjgsIDc3LCA4NSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDg1LCA3OSwgODQsIDEyOCwgNzcsIDg1LCAKLSAgICA3OSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgNzcsIDY1LCA2OSwgMTI4LCA3NywgODUsIDc5LCAxMjgsIDc3LCA4NSwgNzgsIAotICAgIDgzLCA4NSwgNjYsIDEyOCwgNzcsIDg1LCA3OCwgNjUsIDcyLCAxMjgsIDc3LCA4NSwgNzgsIDEyOCwgNzcsIDg1LCA3NiwgCi0gICAgODQsIDczLCA4MywgNjksIDg0LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCAyMTIsIDc3LCA4NSwgNzYsIDg0LCAKLSAgICA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgCi0gICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgNjksIDEyOCwgNzcsIDg1LCAKLSAgICA3NiwgODQsIDczLCA4MCwgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIAotICAgIDg1LCA3NiwgODQsIDczLCA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAyMDEsIDc3LCA4NSwgNzYsIDg0LCA2NSwgCi0gICAgNzgsIDIwMSwgNzcsIDg1LCA3NSwgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgMTI4LCA3NywgODUsIDczLCA3OCwgMTI4LCAKLSAgICA3NywgODUsIDcxLCA4MywgMTI4LCA3NywgODUsIDcxLCAxMjgsIDc3LCA4NSwgMTk5LCA3NywgODUsIDY5LCA3OCwgMTI4LCAKLSAgICA3NywgODUsIDY5LCAxMjgsIDc3LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA4NSwgNjcsIDIwMCwgNzcsIDg1LCA2NywgNjUsIAotICAgIDY1LCA2OCwgMTI4LCA3NywgODUsIDY1LCA4MywgMTI4LCA3NywgODUsIDY1LCA3OCwgMTI4LCA3NywgODUsIDY1LCA2OSwgCi0gICAgMTI4LCA3NywgODUsIDQ1LCA3MSwgNjUsIDY1LCA3MiwgNzYsIDY1LCAxOTMsIDc3LCAyMTMsIDc3LCA4MywgMTI4LCA3NywgCi0gICAgODIsIDIwNywgNzcsIDgwLCA2NSwgMTI4LCA3NywgNzksIDg5LCA2NSwgNzMsIDEyOCwgNzcsIDc5LCA4OCwgMTI4LCA3NywgCi0gICAgNzksIDg2LCA3MywgMTk3LCA3NywgNzksIDg2LCA2OSwgMjExLCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCAKLSAgICA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgCi0gICAgNzIsIDczLCA3OCwgNzEsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgNzAsIDc2LCA3OSwgNzksIAotICAgIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA2OCwgNzMsIDY1LCAKLSAgICA3MSwgNzksIDc4LCA2NSwgMjA0LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzcsIDc5LCA4NiwgNjksIAotICAgIDc3LCA2OSwgNzgsIDIxMiwgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIDc5LCA4NiwgNjksIDEyOCwgNzcsIDc5LCA4NSwgCi0gICAgODQsIDcyLCAxMjgsIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgNzksIDg1LCA4MywgMTk3LCA3NywgNzksIDg1LCAKLSAgICA3OCwgODQsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3NywgNzksIAotICAgIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgMjEyLCA3NywgNzksIDg1LCA3OCwgNjgsIDEyOCwgCi0gICAgNzcsIDc5LCA4NSwgNzgsIDE5NiwgNzcsIDc5LCA4NCwgNzksIDgyLCA4NywgNjUsIDg5LCAxMjgsIDc3LCA3OSwgODQsIDc5LCAKLSAgICA4MiwgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDc3LCA3OSwgODQsIDc5LCAyMTAsIDc3LCA3OSwgODQsIDcyLCA2OSwgODIsIAotICAgIDEyOCwgNzcsIDc5LCA4NCwgMTI4LCA3NywgNzksIDgzLCA4MSwgODUsIDY5LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgCi0gICAgODUsIDc3LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCAKLSAgICA3MSwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIAotICAgIDc3LCA3OSwgNzksIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgCi0gICAgMjA2LCA3NywgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA3NywgNzksIDc5LCA2OCwgMTI4LCA3NywgNzksIDc5LCAxOTYsIDc3LCA3OSwgNzksIDEyOCwgNzcsIDc5LCA3OCwgODQsIAotICAgIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgMTI4LCA3NywgNzksIDc4LCA4NCwgMjAwLCA3NywgCi0gICAgNzksIDc4LCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCA3OSwgODMsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc3LCAKLSAgICA3OSwgNzgsIDc5LCA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIDc4LCA3OSwgODIsIDY1LCA3MywgNzYsIDEyOCwgNzcsIAotICAgIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKLSAgICAyMTEsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCA3OSwgNzgsIDc5LCA3MCwgNzksIDc4LCA3MywgNjUsIAotICAgIDgzLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgNzksIDc4LCA3NSwgNjksIDg5LCAKLSAgICAxMjgsIDc3LCA3OSwgNzgsIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCA3MywgMTI4LCA3NywgNzksIDc4LCA3MSwgNzUsIAotICAgIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3NywgNzksIDc4LCA2OSwgODksIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA3NywgCi0gICAgNzksIDc4LCA2OSwgMjE3LCA3NywgNzksIDc4LCAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAxMjgsIDc3LCA3OSwgCi0gICAgNzIsIDY1LCA3NywgNzcsIDY1LCAxOTYsIDc3LCA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKLSAgICA2OSwgODIsIDQ1LCA1NywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NiwgMTI4LCA3NywgNzksIAotICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCAKLSAgICA1NCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIAotICAgIDczLCA2OSwgODIsIDQ1LCA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MSwgMTI4LCA3NywgCi0gICAgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIAotICAgIDQ1LCA0OSwgNTQsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDc3LCA3OSwgCi0gICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIAotICAgIDQ1LCA0OSwgNTEsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDc3LCA3OSwgCi0gICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIAotICAgIDQ1LCA0OSwgNDgsIDEyOCwgNzcsIDc5LCA2OCwgMjAxLCA3NywgNzksIDY4LCA2OSwgODMsIDg0LCA4OSwgMTI4LCA3NywgCi0gICAgNzksIDY4LCA2OSwgNzcsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIAotICAgIDEyOCwgNzcsIDc5LCA2OCwgNjksIDEyOCwgNzcsIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIAotICAgIDIwNywgNzcsIDc4LCA4OSwgNjUsIDIwNSwgNzcsIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCA4MywgODAsIDEyOCwgNzcsIAotICAgIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIDEyOCwgNzcsIDc2LCAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIAotICAgIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIDg0LCAxMjgsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIAotICAgIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgCi0gICAgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCAKLSAgICA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIAotICAgIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA2NSwgCi0gICAgMTI4LCA3NywgNzMsIDc4LCA3MywgNjgsIDczLCA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgODMsIAotICAgIDEyOCwgNzcsIDczLCA3NywgNjksIDEyOCwgNzcsIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgCi0gICAgODMsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDIxMSwgNzcsIDczLCA3NiwgNzYsIDY5LCA4NCwgMTI4LCAKLSAgICA3NywgNzMsIDc2LCA3NiwgMTk3LCA3NywgNzMsIDc2LCAyMDQsIDc3LCA3MywgNzYsIDc1LCAyMTcsIDc3LCA3MywgNzYsIAotICAgIDczLCA4NCwgNjUsIDgyLCAyMTcsIDc3LCA3MywgNzYsIDEyOCwgNzcsIDczLCA3NSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgCi0gICAgNzcsIDczLCA3NSwgODIsIDc5LCAyMDYsIDc3LCA3MywgNzUsIDgyLCA3MywgMTI4LCA3NywgNzMsIDczLCA3OCwgMTI4LCAKLSAgICA3NywgNzMsIDczLCAxMjgsIDc3LCA3MywgMTk5LCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc3LCAKLSAgICA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgCi0gICAgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNjUsIAotICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgCi0gICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAotICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA3MywgNjksIDg1LCAyMDUsIDc3LCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDc3LCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MywgNjksIDEyOCwgNzcsIDczLCA2OCwgNzYsIDczLCA3OCwgMTk3LCAKLSAgICA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCA0NSwgODcsIDY5LCA3NiwgODMsIDIwMCwgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgCi0gICAgMTI4LCA3NywgNzMsIDY4LCA0NSwgNzYsIDY5LCA4NiwgNjksIDIwNCwgNzcsIDczLCAxOTYsIDc3LCA3MywgNjcsIDgyLCAKLSAgICA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIAotICAgIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MywgNjcsIDIxMCwgNzcsIDcyLCA5MCwgMTI4LCA3NywgNzIsIDY1LCAxMjgsIAotICAgIDc3LCA3MiwgMTI4LCA3NywgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgCi0gICAgODgsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDEyOCwgNzcsIDcxLCA4NSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDc3LCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgMTI4LCA3NywgNzEsIDg1LCAxMjgsIDc3LCAKLSAgICA3MSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgNzksIDg0LCAxMjgsIDc3LCA3MSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgNzksIAotICAgIDEyOCwgNzcsIDcxLCAyMDcsIDc3LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDczLCA2OSwgMTI4LCA3NywgNzEsIAotICAgIDY5LCA4OCwgMTI4LCA3NywgNzEsIDY5LCA4MCwgMTI4LCA3NywgNzEsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDg1LCAxMjgsIAotICAgIDc3LCA3MSwgNjYsIDc5LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzAsIDg1LCA3NywgMTI4LCA3NywgNzEsIDY2LCA3OSwgCi0gICAgMTI4LCA3NywgNzEsIDY2LCA3MywgMTI4LCA3NywgNzEsIDY2LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAKLSAgICA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjUsIAotICAgIDgzLCA2NSwgODEsIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgMTI4LCA3NywgNzEsIDY1LCA4OCwgMTI4LCA3NywgCi0gICAgNzEsIDY1LCA4NCwgMTI4LCA3NywgNzEsIDY1LCA4MCwgMTI4LCA3NywgNzEsIDY1LCAxMjgsIDc3LCA3MSwgMTI4LCA3NywgCi0gICAgNzAsIDc5LCA3OCwgMTI4LCA3NywgNzAsIDc5LCAyMDYsIDc3LCA3MCwgNzksIDEyOCwgNzcsIDcwLCA3MywgODksIDY1LCAKLSAgICA4MSwgMTI4LCA3NywgNzAsIDczLCA2OSwgNjksIDEyOCwgNzcsIDcwLCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MCwgNjksIAotICAgIDg1LCA4MSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA3MCwgNjUsIDY1LCAxMjgsIDc3LCA2OSwgCi0gICAgOTAsIDkwLCA3OSwgMTI4LCA3NywgNjksIDg4LCAxMjgsIDc3LCA2OSwgODUsIDIxMiwgNzcsIDY5LCA4NSwgODEsIDEyOCwgCi0gICAgNzcsIDY5LCA4NSwgNzgsIDc0LCA3OSwgNzcsIDc4LCA2OCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCA3OCwgMTI4LCAKLSAgICA3NywgNjksIDg0LCA4MiwgNzksIDEyOCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNzcsIDY5LCA4NCwgODIsIAotICAgIDczLCA2NSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNjksIDg0LCA2OSwgMjExLCA3NywgNjksIDg0LCA3OSwgNjYsIDY5LCA3NiwgCi0gICAgODUsIDgzLCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3NSwgMTI4LCA3NywgNjksIDg0LCA2OSwgNzEsIDEyOCwgNzcsIDY5LCAKLSAgICA4NCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgODQsIDE5MywgNzcsIDY5LCA4MywgODMsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIAotICAgIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDE5NywgNzcsIDY5LCA4MywgCi0gICAgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAKLSAgICA2NSwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgNjUsIDc4LCA4MywgCi0gICAgMTI4LCA3NywgNjksIDgyLCA3MywgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCAKLSAgICA4MiwgODksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA3OSwgODIsIDY1LCAyMDAsIAotICAgIDc3LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc3LCA2OSwgNzgsIDEyOCwgCi0gICAgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgNzcsIDY5LCAKLSAgICA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgNzcsIDY5LCA3NywgNDUsIDgxLCA3OSwgODAsIAotICAgIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCA2OSwgNzYsIDc5LCA2OCwgNzMsIDE5NSwgNzcsIAotICAgIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgMTI4LCA3NywgNjksIDcxLCA2NSwgODQsIDc5LCA3OCwgCi0gICAgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA3NiwgNzMsIAotICAgIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc3LCA2OSwgCi0gICAgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgNjksIDY5LCA3NywgMTI4LCA3NywgNjksIDY5LCAKLSAgICAyMDIsIDc3LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgODUsIDc3LCAxMjgsIDc3LCA2OSwgNjgsIAotICAgIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA3NywgNjksIDY4LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA2NSwgODQsIDEyOCwgNzcsIDY5LCA2NSwgMjEyLCA3NywgCi0gICAgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTk2LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTI4LCA3NywgNjksIDY1LCAKLSAgICA4MywgODUsIDgyLCAxOTcsIDc3LCA2OCwgODUsIDIwNiwgNzcsIDE5NiwgNzcsIDY3LCA3MiwgMjEzLCA3NywgNjcsIDcyLCAKLSAgICA2NSwgMjA2LCA3NywgMTk1LCA3NywgNjYsIDg1LCA4NSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgODEsIDEyOCwgNzcsIDY2LCAKLSAgICA4NSwgNzksIDEyOCwgNzcsIDY2LCA4NSwgNjksIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NywgNjYsIAotICAgIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDY2LCA3OSwgMTI4LCA3NywgNjYsIDczLCA4NCwgCi0gICAgMTI4LCA3NywgNjYsIDczLCAyMTIsIDc3LCA2NiwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNjYsIDczLCAKLSAgICAxMjgsIDc3LCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjYsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc3LCA2NiwgNjksIAotICAgIDg1LCA3NywgMTI4LCA3NywgNjYsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjksIDc4LCAxMjgsIDc3LCA2NiwgCi0gICAgNjksIDY5LCA3NSwgNjksIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgMTI4LCA3NywgNjYsIDY5LCAxMjgsIDc3LCAKLSAgICA2NiwgNjUsIDgxLCAxMjgsIDc3LCA2NiwgNjUsIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDc1LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDEyOCwgNzcsIDY2LCA2NSwgCi0gICAgMTkzLCA3NywgNjYsIDE5MywgNzcsIDY2LCA1MiwgMTI4LCA3NywgNjYsIDUxLCAxMjgsIDc3LCA2NiwgNTAsIDEyOCwgNzcsIAotICAgIDY1LCA4OSwgNjksIDIwMywgNzcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA4OSwgMTI4LCA3NywgCi0gICAgNjUsIDg4LCA3MywgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA2NSwgMTI4LCA3NywgNjUsIDg4LCAKLSAgICAxMjgsIDc3LCA2NSwgODUsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgNzcsIDY1LCA4NCwgODIsIAotICAgIDczLCA4OCwgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCA2NSwgODQsIDEyOCwgCi0gICAgNzcsIDY1LCA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIDgzLCA4MywgNjUsIDcxLCAKLSAgICA2OSwgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgNzcsIDY1LCA4MywgNzIsIAotICAgIDcwLCA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCA2NywgODUsIDc2LCA3MywgCi0gICAgNzgsIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODcsIDY1LCA4MiwgMjAxLCA3NywgNjUsIDgyLCAKLSAgICA4NSwgNzUsIDg1LCAxMjgsIDc3LCA2NSwgODIsIDg0LCA4OSwgODIsIDczLCAxOTMsIDc3LCA2NSwgODIsIDgyLCA4OSwgNzMsIAotICAgIDc4LCAxOTksIDc3LCA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDc3LCA2NSwgODIsIDc1LCAyMTEsIDc3LCA2NSwgCi0gICAgODIsIDc1LCA2OSwgODIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUxLCAKLSAgICAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTAsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA0OSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNzIsIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDQ1LCA4MywgCi0gICAgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjcsIDY1LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCA2NSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2NiwgODUsIDg0LCAxOTMsIDc3LCA2NSwgODIsIDEyOCwgNzcsIDY1LCA4MSwgNjUsIDcwLCAxMjgsIDc3LCA2NSwgCi0gICAgODEsIDEyOCwgNzcsIDY1LCA4MCwgNzYsIDE5NywgNzcsIDY1LCA4MCwgNzMsIDgxLCAxMjgsIDc3LCA2NSwgMjA4LCA3NywgCi0gICAgNjUsIDc5LCAxMjgsIDc3LCA2NSwgNzgsIDg0LCA2OSwgNzYsIDgwLCA3MywgNjksIDY3LCAxOTcsIDc3LCA2NSwgNzgsIDgzLCAKLSAgICA4OSwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgODcsIDc2LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDc5LCAKKyAgICA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODksIAorICAgIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgCisgICAgODAsIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAKKyAgICAxMjgsIDc5LCA4NiwgNjUsIDc2LCAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIAorICAgIDE5NiwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg1LCA4NCwgNjksIDIxMCwgNzksIDg1LCA4NCwgCisgICAgNjYsIDc5LCAyMTYsIDc5LCA4NSwgNzgsIDc1LCA3MywgMTkzLCA3OSwgODUsIDc4LCA2NywgNjksIDEyOCwgNzksIDg1LCAKKyAgICA3OCwgNjcsIDE5NywgNzksIDg0LCA4NSwgMTI4LCA3OSwgODQsIDg0LCA2NSwgODYsIDE5MywgNzksIDg0LCA4NCwgMTI4LCAKKyAgICA3OSwgODQsIDcyLCA2OSwgODIsIDIxMSwgNzksIDg0LCA3MiwgNjksIDIxMCwgNzksIDg0LCA3MiwgNjUsIDc2LCA2NSwgCisgICAgMjA2LCA3OSwgODQsIDcyLCA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgMTkzLCA3OSwgODMsIDY3LCAKKyAgICAxMjgsIDc5LCA4MywgNjUsIDcxLCAxOTcsIDc5LCA4MiwgODQsIDcyLCA3OSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIAorICAgIDgyLCA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgNjUsIDg0LCAxOTcsIDc5LCA4MiwgNzgsIDY1LCA3NywgCisgICAgNjksIDc4LCA4NCwgODMsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc5LCA4MiwgNzgsIDY1LCAKKyAgICA3NywgNjksIDc4LCAyMTIsIDc5LCA4MiwgNzUsIDcyLCA3OSwgMjA2LCA3OSwgODIsIDczLCA4OSwgMTkzLCA3OSwgODIsIAorICAgIDczLCA3MSwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCAxMjgsIDc5LCA4MiwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA3OSwgODIsIDY4LCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNjgsIDY5LCAyMTAsIDc5LCA4MiwgNjcsIDcyLCAKKyAgICA3MywgNjgsIDEyOCwgNzksIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDc5LCA4MCwgODQsIDczLCA3OSwgMjA2LCA3OSwgODAsIAorICAgIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc5LCA4MCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgCisgICAgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDc4LCAxOTksIDc5LCAKKyAgICA4MCwgODAsIDc5LCA4MywgNjksIDEyOCwgNzksIDgwLCA3MiwgNzMsIDg1LCA2NywgNzIsIDg1LCA4MywgMTI4LCA3OSwgODAsIAorICAgIDY5LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzksIDgwLCA2OSwgCisgICAgODIsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDQ1LCAKKyAgICA4MCwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIAorICAgIDc4LCA0NSwgNzksIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCAyMDcsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzIsIDY5LCA2NSwgCisgICAgNjgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3MywgODQsIDQ1LCA3OSwgODUsIAorICAgIDg0LCA4MCwgODUsIDIxMiwgNzksIDgwLCA2OSwgNzgsIDEyOCwgNzksIDc5LCA5MCwgNjksIDEyOCwgNzksIDc5LCA4OSwgCisgICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIDc3LCA4NSwgMTI4LCA3OSwgNzksIDcyLCAKKyAgICAxMjgsIDc5LCA3OSwgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNzgsIAorICAgIDg1LCAxMjgsIDc5LCA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIDc4LCA3NSwgNjUsIDgyLCAxMjgsIAorICAgIDc5LCA3OCwgNjksIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgNjUsIDIxNywgNzksIDc4LCA2OSwgCisgICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzksIDc4LCAKKyAgICA2OSwgNDUsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCA0NSwgNjUsIDc4LCA2OCwgNDUsIDgzLCA3MywgODgsIDg0LCAKKyAgICA3MywgNjksIDg0LCA3MiwgMTI4LCA3OSwgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgCisgICAgMTI4LCA3OSwgNzgsIDQ1LCA3OSwgNzAsIDE5OCwgNzksIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNzksIDc3LCAKKyAgICA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgMjA2LCA3OSwgNzcsIDY5LCA3MSwgNjUsIAorICAgIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCA2NSwgNzYsIDc5LCA3OCwgMTI4LCA3OSwgNzYsIDczLCA4NiwgCisgICAgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIDc5LCA3NiwgNjgsIDEyOCwgNzksIDc1LCA4NCwgMjA3LCA3OSwgCisgICAgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgODIsIDE5MywgNzksIDc0LCA3MywgNjYsIDg3LCA2NSwgMjE3LCAKKyAgICA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCA3OCwgMTI4LCA3OSwgNzMsIDc2LCAxMjgsIDc5LCA3MywgMjA0LCAKKyAgICA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIAorICAgIDc1LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgMjA1LCA3OSwgNzAsIDcwLCA3MywgCisgICAgNjcsIDY5LCA4MiwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgMTk3LCAKKyAgICA3OSwgNzAsIDcwLCAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCA3OSwgNjksIDY5LCAxMjgsIDc5LCAKKyAgICA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgNjgsIDEyOCwgNzksIDY4LCAxOTYsIDc5LCA2NywgODQsIDc5LCA4MCwgODUsIAorICAgIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAxMjgsIDc5LCA2NywgODQsIDY5LCAyMTIsIDc5LCA2NywgCisgICAgODQsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgNjcsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA3OSwgNjcsIAorICAgIDIxMCwgNzksIDY3LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA3OSwgNjcsIDY3LCA3NiwgODUsIDgzLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDc5LCA2NiwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDc5LCA3NiwgCisgICAgMjExLCA3OSwgNjYsIDc5LCAyMDQsIDc5LCA2NiwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA2NiwgNzYsIDczLCAKKyAgICA4MSwgODUsIDE5NywgNzksIDY2LCA3NCwgNjksIDY3LCAyMTIsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzksIAorICAgIDY2LCA2OSwgNzYsIDc5LCA4MywgMTI4LCA3OSwgNjYsIDEyOCwgNzksIDY1LCA4OSwgMTI4LCA3OSwgNjUsIDc1LCAxMjgsIAorICAgIDc5LCA2NSwgNjYsIDc5LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDE5MywgNzksIDQ4LCA1MywgNDksIDEyOCwgCisgICAgNzksIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgMTI4LCAKKyAgICA3OSwgNDgsIDUyLCA1NywgMTI4LCA3OSwgNDgsIDUyLCA1NiwgMTI4LCA3OSwgNDgsIDUyLCA1NSwgMTI4LCA3OSwgNDgsIAorICAgIDUyLCA1NCwgMTI4LCA3OSwgNDgsIDUyLCA1MywgMTI4LCA3OSwgNDgsIDUyLCA1MiwgMTI4LCA3OSwgNDgsIDUyLCA1MSwgCisgICAgMTI4LCA3OSwgNDgsIDUyLCA1MCwgMTI4LCA3OSwgNDgsIDUyLCA0OSwgMTI4LCA3OSwgNDgsIDUyLCA0OCwgMTI4LCA3OSwgCisgICAgNDgsIDUxLCA1NywgMTI4LCA3OSwgNDgsIDUxLCA1NiwgMTI4LCA3OSwgNDgsIDUxLCA1NSwgMTI4LCA3OSwgNDgsIDUxLCAKKyAgICA1NCwgNjgsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIAorICAgIDUxLCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDEyOCwgNzksIDQ4LCA1MSwgNTMsIDEyOCwgNzksIDQ4LCA1MSwgCisgICAgNTIsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDUxLCAxMjgsIDc5LCA0OCwgNTEsIDUwLCAKKyAgICAxMjgsIDc5LCA0OCwgNTEsIDQ5LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgMTI4LCAKKyAgICA3OSwgNDgsIDUwLCA1NywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDEyOCwgNzksIDQ4LCA1MCwgNTYsIDEyOCwgNzksIAorICAgIDQ4LCA1MCwgNTUsIDEyOCwgNzksIDQ4LCA1MCwgNTQsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgCisgICAgNTAsIDUzLCAxMjgsIDc5LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MiwgMTI4LCA3OSwgNDgsIDUwLCAKKyAgICA1MSwgMTI4LCA3OSwgNDgsIDUwLCA1MCwgMTI4LCA3OSwgNDgsIDUwLCA0OSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgNjUsIAorICAgIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDU3LCAxMjgsIAorICAgIDc5LCA0OCwgNDksIDU2LCAxMjgsIDc5LCA0OCwgNDksIDU1LCAxMjgsIDc5LCA0OCwgNDksIDU0LCAxMjgsIDc5LCA0OCwgCisgICAgNDksIDUzLCAxMjgsIDc5LCA0OCwgNDksIDUyLCAxMjgsIDc5LCA0OCwgNDksIDUxLCAxMjgsIDc5LCA0OCwgNDksIDUwLCAKKyAgICAxMjgsIDc5LCA0OCwgNDksIDQ5LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NywgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjYsIAorICAgIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAxMjgsIDc5LCA0OCwgNDgsIDU3LCAxMjgsIAorICAgIDc5LCA0OCwgNDgsIDU2LCAxMjgsIDc5LCA0OCwgNDgsIDU1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA3MCwgMTI4LCA3OSwgCisgICAgNDgsIDQ4LCA1NCwgNjksIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NywgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDc5LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgMTI4LCA3OSwgNDgsIDQ4LCA1MiwgMTI4LCA3OSwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3OSwgNDgsIDQ4LCA1MCwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzksIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNzksIDQ1LCA4OSwgNjksIDEyOCwgNzksIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDc5LCA0NSwgNjksIAorICAgIDEyOCwgNzgsIDkwLCA4OSwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODQsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDc4LCA5MCwgODksIDgyLCAxMjgsIDc4LCA5MCwgODksIDgwLCAxMjgsIDc4LCA5MCwgODksIDEyOCwgNzgsIDkwLCA4NSwgCisgICAgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCAxMjgsIDc4LCA5MCwgODUsIDgxLCAKKyAgICAxMjgsIDc4LCA5MCwgODUsIDgwLCAxMjgsIDc4LCA5MCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgMTI4LCAKKyAgICA3OCwgOTAsIDg1LCAyMDYsIDc4LCA5MCwgODUsIDEyOCwgNzgsIDkwLCA3OSwgODgsIDEyOCwgNzgsIDkwLCA3OSwgODAsIAorICAgIDEyOCwgNzgsIDkwLCA3MywgODgsIDEyOCwgNzgsIDkwLCA3MywgODQsIDEyOCwgNzgsIDkwLCA3MywgODAsIDEyOCwgNzgsIAorICAgIDkwLCA3MywgNjksIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgMTI4LCA3OCwgCisgICAgOTAsIDczLCAxMjgsIDc4LCA5MCwgNjksIDg4LCAxMjgsIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgOTAsIDY5LCAKKyAgICAxMjgsIDc4LCA5MCwgNjUsIDg4LCAxMjgsIDc4LCA5MCwgNjUsIDg0LCAxMjgsIDc4LCA5MCwgNjUsIDgxLCAxMjgsIDc4LCAKKyAgICA5MCwgNjUsIDgwLCAxMjgsIDc4LCA5MCwgNjUsIDEyOCwgNzgsIDkwLCAxOTMsIDc4LCA4OSwgODcsIDY1LCAxMjgsIDc4LCAKKyAgICA4OSwgODUsIDg4LCAxMjgsIDc4LCA4OSwgODUsIDg1LCAxMjgsIDc4LCA4OSwgODUsIDg0LCAxMjgsIDc4LCA4OSwgODUsIAorICAgIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgCisgICAgNzksIDEyOCwgNzgsIDg5LCA4NSwgNzgsIDEyOCwgNzgsIDg5LCA4NSwgNjksIDEyOCwgNzgsIDg5LCA4NSwgMTI4LCA3OCwgCisgICAgODksIDc5LCA4OCwgMTI4LCA3OCwgODksIDc5LCA4NCwgMTI4LCA3OCwgODksIDc5LCA4MCwgMTI4LCA3OCwgODksIDc5LCAKKyAgICA3OSwgMTI4LCA3OCwgODksIDc5LCA3OCwgMTI4LCA3OCwgODksIDc5LCA2NSwgMTI4LCA3OCwgODksIDc5LCAxMjgsIDc4LCAKKyAgICA4OSwgNzQsIDY1LCAxMjgsIDc4LCA4OSwgNzMsIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDg0LCAxMjgsIDc4LCA4OSwgNzMsIAorICAgIDIxMiwgNzgsIDg5LCA3MywgMjExLCA3OCwgODksIDczLCAyMTAsIDc4LCA4OSwgNzMsIDgwLCAxMjgsIDc4LCA4OSwgNzMsIAorICAgIDc4LCA0NSwgNjgsIDc5LCAxMjgsIDc4LCA4OSwgNzMsIDc4LCAxMjgsIDc4LCA4OSwgNzMsIDczLCAxMjgsIDc4LCA4OSwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA3OCwgODksIDczLCA2OSwgODQsIDEyOCwgNzgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDc4LCAKKyAgICA4OSwgNzMsIDY5LCAxMjgsIDc4LCA4OSwgNzMsIDEyOCwgNzgsIDg5LCAyMDEsIDc4LCA4OSwgNzIsIDY1LCAxMjgsIDc4LCAKKyAgICA4OSwgNjksIDg0LCAxMjgsIDc4LCA4OSwgNjksIDIxMiwgNzgsIDg5LCA2OSwgNzgsIDEyOCwgNzgsIDg5LCA2OSwgNzIsIAorICAgIDEyOCwgNzgsIDg5LCA2OSwgMjAwLCA3OCwgODksIDY5LCA2OSwgMTI4LCA3OCwgODksIDY5LCAxMjgsIDc4LCA4OSwgMTk2LCAKKyAgICA3OCwgODksIDY3LCA2NSwgMTI4LCA3OCwgODksIDY1LCA4NSwgMTI4LCA3OCwgODksIDY1LCA3MywgMTI4LCA3OCwgODksIAorICAgIDY1LCA3MiwgMTI4LCA3OCwgODksIDY1LCA2OSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgODksIDY1LCA2NSwgMTI4LCA3OCwgCisgICAgODcsIDc5LCA3OSwgMTI4LCA3OCwgODcsIDc5LCAxMjgsIDc4LCA4NywgNzMsIDczLCAxMjgsIDc4LCA4NywgNzMsIDEyOCwgCisgICAgNzgsIDg3LCA2OSwgMTI4LCA3OCwgODcsIDY1LCA2NSwgMTI4LCA3OCwgODcsIDY1LCAxMjgsIDc4LCA4NywgMTI4LCA3OCwgCisgICAgODYsIDEyOCwgNzgsIDg1LCA4OCwgMTI4LCA3OCwgODUsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA4NSwgCisgICAgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCA4NSwgODQsIDEyOCwgNzgsIDg1LCAyMTIsIDc4LCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCA4MCwgMTI4LCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODUsIDc5LCAKKyAgICA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCA4NSwgNzgsIDg1LCA5MCwgMTI4LCA3OCwgODUsIDc4LCA4NSwgMjE4LCAKKyAgICA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIDc4LCA2NSwgODYsIDg1LCAyMTIsIDc4LCA4NSwgNzgsIDY1LCA4NiwgNzMsIAorICAgIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDIwNiwgNzgsIDg1LCA3NywgNjksIDgyLCAyMDcsIDc4LCA4NSwgNzcsIAorICAgIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgCisgICAgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCAKKyAgICA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIDc4LCA4NSwgNzYsIDEyOCwgNzgsIDg1LCA3NSwgODQsIDY1LCAxMjgsIDc4LCAKKyAgICA4NSwgNjksIDc4LCA3MSwgMTI4LCA3OCwgODUsIDY5LCAxMjgsIDc4LCA4NSwgNjYsIDczLCA2NSwgMjA2LCA3OCwgODUsIAorICAgIDY1LCA2OSwgMTI4LCA3OCwgODUsIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ5LCAxNzcsIDc4LCA4NSwgNDgsIDUwLCA1MCwgCisgICAgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgODUsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIAorICAgIDg1LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTQsIDEyOCwgCisgICAgNzgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTEsIAorICAgIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgCisgICAgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCAKKyAgICA4NSwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU1LCAxMjgsIAorICAgIDc4LCA4NSwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIAorICAgIDQ5LCAxMjgsIDc4LCA4NCwgODgsIDczLCA4NiwgMTI4LCA3OCwgODQsIDg1LCA4NSwgMTI4LCA3OCwgODQsIDg1LCA3NywgCisgICAgMTI4LCA3OCwgODQsIDg1LCA3NCwgMTI4LCA3OCwgODQsIDIxMywgNzgsIDg0LCA4MywgNjUsIDg1LCAxMjgsIDc4LCA4NCwgCisgICAgNzksIDgxLCA4MCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNzksIDcxLCAxMjgsIDc4LCA4NCwgNzksIDE5OSwgNzgsIDg0LCAKKyAgICA3MywgNjksIDE5NywgNzgsIDg0LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3OCwgNzEsIDY2LCA2NSwgCisgICAgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA2OSwgNjksIDEyOCwgCisgICAgNzgsIDg0LCA2NSwgODAsIDEyOCwgNzgsIDg0LCA2NSwgMjA4LCA3OCwgODQsIDY1LCA2NSwgMTI4LCA3OCwgODMsIDg1LCAKKyAgICA3OSwgMjEyLCA3OCwgODMsIDg1LCA3OCwgMTI4LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3OCwgODMsIDc5LCA3NywgMTI4LCAKKyAgICA3OCwgODMsIDczLCA2OSwgNjksIDg0LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODAsIDEyOCwgNzgsIDgzLCA3MywgNjksIAorICAgIDY5LCAxMjgsIDc4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgMjEyLCA3OCwgODMsIDcyLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDc4LCA4MywgNzIsIDg1LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA3MywgNjksIDY5LCAxMjgsIDc4LCAKKyAgICA4MywgNzIsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgODEsIDEyOCwgNzgsIDgzLCA3MiwgNjUsIDEyOCwgNzgsIAorICAgIDgzLCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2NSwgMTI4LCA3OCwgCisgICAgODIsIDg5LCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4NCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDgyLCAKKyAgICA4OSwgODIsIDEyOCwgNzgsIDgyLCA4OSwgODAsIDEyOCwgNzgsIDgyLCA4OSwgMTI4LCA3OCwgODIsIDg1LCA4OCwgMTI4LCAKKyAgICA3OCwgODIsIDg1LCA4NCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODIsIDEyOCwgNzgsIAorICAgIDgyLCA4NSwgODAsIDEyOCwgNzgsIDgyLCA4NSwgNjUsIDEyOCwgNzgsIDgyLCA4NSwgMTI4LCA3OCwgODIsIDc5LCA4OCwgCisgICAgMTI4LCA3OCwgODIsIDc5LCA4MCwgMTI4LCA3OCwgODIsIDc5LCAxMjgsIDc4LCA4MiwgNjksIDg4LCAxMjgsIDc4LCA4MiwgCisgICAgNjksIDg0LCAxMjgsIDc4LCA4MiwgNjksIDIxMSwgNzgsIDgyLCA2OSwgODAsIDEyOCwgNzgsIDgyLCA2OSwgMTI4LCA3OCwgCisgICAgODIsIDY1LCA4OCwgMTI4LCA3OCwgODIsIDY1LCA4NCwgMTI4LCA3OCwgODIsIDY1LCA4MCwgMTI4LCA3OCwgODIsIDY1LCAKKyAgICAxMjgsIDc4LCA4MSwgNzMsIDcxLCAxMjgsIDc4LCA3OSwgODksIDEyOCwgNzgsIDc5LCA4OCwgMTI4LCA3OCwgNzksIDg3LCAKKyAgICA2NywgMTI4LCA3OCwgNzksIDg2LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA4NCwgODQsIDc5LCAxMjgsIAorICAgIDc4LCA3OSwgODQsIDY5LCA4MywgMTI4LCA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgNjgsIDEyOCwgNzgsIDc5LCA4NCwgCisgICAgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzgsIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDc1LCAxMjgsIDc4LCA3OSwgODQsIDY5LCAKKyAgICA2NiwgNzksIDc5LCAyMDMsIDc4LCA3OSwgODQsIDY5LCAxMjgsIDc4LCA3OSwgODQsIDE5NywgNzgsIDc5LCA4NCwgNjcsIAorICAgIDcyLCA2OSwgMTk2LCA3OCwgNzksIDg0LCA2NywgNzIsIDEyOCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgCisgICAgNzgsIDc5LCA4NCwgMTI4LCA3OCwgNzksIDIxMiwgNzgsIDc5LCA4MywgNjksIDEyOCwgNzgsIDc5LCA4MywgMTk3LCA3OCwgCisgICAgNzksIDgyLCA4NCwgNzIsIDg3LCA2OSwgODMsIDIxMiwgNzgsIDc5LCA4MiwgODQsIDcyLCA2OSwgODIsIDIwNiwgNzgsIDc5LCAKKyAgICA4MiwgODQsIDcyLCA2OSwgNjUsIDgzLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc4LCA3OSwgCisgICAgODIsIDc3LCA2NSwgMjA0LCA3OCwgNzksIDgyLCA2OCwgNzMsIDE5NSwgNzgsIDc5LCAyMTAsIDc4LCA3OSwgODAsIDEyOCwgCisgICAgNzgsIDc5LCA3OSwgNzgsIDg1LCAxMjgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc5LCA3OCwgNzAsIDc5LCA4MiwgNzUsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgNzgsIDc5LCA3OCwgNDUsIAorICAgIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDY2LCA4MiwgNjksIDY1LCA3NSwgNzMsIDc4LCAKKyAgICAxOTksIDc4LCA3OSwgNzgsIDEyOCwgNzgsIDc5LCA3NywgNzMsIDgzLCA3NywgMTkzLCA3OCwgNzksIDc3LCA3MywgNzgsIAorICAgIDY1LCAyMDQsIDc4LCA3OSwgNzUsIDcyLCA4NSwgNzUsIDEyOCwgNzgsIDc5LCA2OCwgNjksIDEyOCwgNzgsIDc5LCA2NSwgCisgICAgMTI4LCA3OCwgNzksIDQ1LCA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDg1LCAKKyAgICAxMjgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCAKKyAgICA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIAorICAgIDc4LCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjksIDY5LCAxMjgsIDc4LCA3OCwgCisgICAgNzgsIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNzMsIDEyOCwgNzgsIDc4LCAKKyAgICA3OCwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDEyOCwgNzgsIDc4LCA3MiwgNjUsIAorICAgIDEyOCwgNzgsIDc4LCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDczLCA3MywgCisgICAgMTI4LCA3OCwgNzgsIDcxLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDEyOCwgCisgICAgNzgsIDc4LCA3MSwgMTI4LCA3OCwgNzgsIDY2LCA4MywgODAsIDEyOCwgNzgsIDc3LCAxMjgsIDc4LCA3NiwgNjUsIDg1LCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUyLCAxMjgsIDc4LCAKKyAgICA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU2LCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIAorICAgIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCAKKyAgICA3NiwgMTI4LCA3OCwgNzUsIDc5LCA3NywgMTI4LCA3OCwgNzUsIDIwNywgNzgsIDc1LCA3MywgNzgsIDY4LCA3MywgMTI4LCAKKyAgICA3OCwgNzUsIDY1LCA4NSwgMTI4LCA3OCwgNzUsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg5LCA4OCwgCisgICAgMTI4LCA3OCwgNzQsIDg5LCA4NCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDEyOCwgCisgICAgNzgsIDc0LCA4OSwgODAsIDEyOCwgNzgsIDc0LCA4OSwgMTI4LCA3OCwgNzQsIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDEyOCwgNzgsIDc0LCA4NSwgODEsIDY1LCAxMjgsIDc4LCA3NCwgODUsIAorICAgIDgwLCAxMjgsIDc4LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgMTI4LCA3OCwgNzQsIDg1LCA2OSwgCisgICAgODEsIDEyOCwgNzgsIDc0LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODUsIDEyOCwgNzgsIDc0LCA3OSwgODgsIDEyOCwgCisgICAgNzgsIDc0LCA3OSwgODQsIDEyOCwgNzgsIDc0LCA3OSwgODAsIDEyOCwgNzgsIDc0LCA3OSwgNzksIDEyOCwgNzgsIDc0LCAKKyAgICA3OSwgMTI4LCA3OCwgNzQsIDczLCA4OCwgMTI4LCA3OCwgNzQsIDczLCA4NCwgMTI4LCA3OCwgNzQsIDczLCA4MCwgMTI4LCAKKyAgICA3OCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3OCwgNzQsIDczLCA2OSwgNjksIDEyOCwgNzgsIDc0LCA3MywgNjksIDEyOCwgNzgsIDc0LCA3MywgMTI4LCA3OCwgCisgICAgNzQsIDIwMSwgNzgsIDc0LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzQsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA3OCwgNjUsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2OSwgNjksIAorICAgIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCAxOTcsIDc4LCA3NCwgNjksIDEyOCwgNzgsIAorICAgIDc0LCA2NSwgODEsIDEyOCwgNzgsIDc0LCA2NSwgODAsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCA3NiwgNzMsIDEyOCwgCisgICAgNzgsIDc0LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjUsIDY1LCAxMjgsIDc4LCA3MywgODgsIDEyOCwgNzgsIDczLCAKKyAgICA4NCwgODIsIDY5LCAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgNzEsIDg1LCAxMjgsIAorICAgIDc4LCA3MywgODAsIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgODksIDEyOCwgCisgICAgNzgsIDczLCA3OCwgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3OCwgNzMsIDc4LCAKKyAgICA2OSwgODQsIDY5LCA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzgsIAorICAgIDczLCA3OCwgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIDY4LCA2NSwgMTc4LCA3OCwgCisgICAgNzMsIDc4LCA1NywgMTI4LCA3OCwgNzMsIDc4LCAxMjgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgCisgICAgNzUsIDc5LCA3NiwgODMsIDY2LCA4NSwgODIsIDE5OSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCAKKyAgICA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCA3MywgNzIsIDgzLCA3MiwgODYsIAorICAgIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgMTI4LCA3OCwgNzMsIDcxLCA3MywgCisgICAgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCAKKyAgICA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MywgNjksIAorICAgIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDcyLCAKKyAgICA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzgsIAorICAgIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgCisgICAgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc4LCA3MywgNjksIDg1LCAKKyAgICA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzMsIDY5LCA4NSwgCisgICAgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzgsIDczLCAKKyAgICA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCA3OCwgNzMsIDY2LCAxMjgsIDc4LCAKKyAgICA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCA3OCwgNzIsIDc0LCA2NSwgMTI4LCAKKyAgICA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIDEyOCwgNzgsIDcxLCA4NSwgODUsIAorICAgIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgCisgICAgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCAKKyAgICA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIAorICAgIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgCisgICAgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCAKKyAgICA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIAorICAgIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgCisgICAgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCAKKyAgICA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIAorICAgIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgCisgICAgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCAKKyAgICA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIAorICAgIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgCisgICAgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAKKyAgICA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIAorICAgIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAKKyAgICAyMDYsIDc4LCA3MSwgNzEsIDg1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgNzksIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA4OCwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCAxMjgsIDc4LCAKKyAgICA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCA2NSwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgCisgICAgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDcxLCAKKyAgICA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA2OSwgNjksIDEyOCwgNzgsIDcxLCA2OSwgNjUsIAorICAgIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgCisgICAgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgNjUsIDczLCAxMjgsIDc4LCAKKyAgICA3MSwgNjUsIDcyLCAxMjgsIDc4LCA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgNzgsIDcwLCAxMjgsIDc4LCAKKyAgICA2OSwgODgsIDIxMiwgNzgsIDY5LCA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCA4MCwgNjksIDgyLCAxMjgsIAorICAgIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDE5NywgNzgsIDY5LCA4NywgCisgICAgMTI4LCA3OCwgNjksIDIxNSwgNzgsIDY5LCA4NSwgODQsIDgyLCA2NSwgNzYsIDEyOCwgNzgsIDY5LCA4NSwgODQsIDgyLCAKKyAgICA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDg3LCA3OSwgODIsIDc1LCA2OSwgCisgICAgMTk2LCA3OCwgNjksIDg0LCAxMjgsIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgNzgsIDY5LCA4MiwgCisgICAgMTk2LCA3OCwgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCA2OSwgMTI4LCAKKyAgICA3OCwgNjksIDgwLCAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCAKKyAgICA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCA3OCwgNjksIAorICAgIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIDY1LCA4NCwgCisgICAgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NywgNzUsIDEyOCwgNzgsIDY5LCAKKyAgICA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAxMjgsIDc4LCA2OCwgODUsIAorICAgIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCA3OCwgNjgsIDg1LCA4MCwgCisgICAgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIDEyOCwgNzgsIDY4LCA3OSwgCisgICAgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgCisgICAgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgNjgsIDczLCA4OCwgMTI4LCAKKyAgICA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCA4MCwgMTI4LCA3OCwgNjgsIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIDY1LCAxMjgsIDc4LCA2OCwgCisgICAgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDY4LCAKKyAgICA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgODAsIAorICAgIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIDY1LCA4OCwgMTI4LCA3OCwgNjgsIAorICAgIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgMTI4LCA3OCwgNjgsIDY1LCA2NSwgCisgICAgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OCwgNjUsIAorICAgIDE5MywgNzgsIDY3LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAxMjgsIAorICAgIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCA3OCwgCisgICAgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIDc4LCAKKyAgICA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgNzksIAorICAgIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgNzgsIAorICAgIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCA3OCwgCisgICAgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIDEyOCwgCisgICAgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgODUsIAorICAgIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgODMsIDY5LCA2NSwgODQsIDY5LCAxOTYsIDc4LCA2NSwgODUsIDY4LCA3MywgCisgICAgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDc4LCAKKyAgICA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIAorICAgIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc4LCA2NSwgODMsIDY1LCAyMDQsIDc4LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA3OCwgNjUsIDgyLCAxMjgsIDc4LCAKKyAgICA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OSwgMjExLCA3OCwgNjUsIDc4LCA4MywgNjUsIDc4LCA2NSwgODEsIDEyOCwgNzgsIAorICAgIDY1LCA3OCwgNzEsIDc3LCA3OSwgNzgsIDg0LCA3MiwgNzksIDEyOCwgNzgsIDY1LCA3OCwgNjgsIDEyOCwgNzgsIDY1LCA3OCwgCisgICAgNjUsIDEyOCwgNzgsIDY1LCA3NywgNjksIDEyOCwgNzgsIDY1LCA3NywgMTk3LCA3OCwgNjUsIDc3LCA1MCwgMTI4LCA3OCwgCisgICAgNjUsIDc3LCAxMjgsIDc4LCA2NSwgNzUsIDEyOCwgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgCisgICAgNjUsIDcxLCA4MiwgMjAxLCA3OCwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCAKKyAgICA3MSwgMTkzLCA3OCwgNjUsIDcxLCAxMjgsIDc4LCA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCAKKyAgICA2NSwgMTI4LCA3OCwgNjUsIDY2LCA2NSwgODQsIDY1LCA2OSwgNjUsIDIwNiwgNzgsIDY1LCA2NSwgODMsIDczLCA3NSwgODksIAorICAgIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDc4LCA2NSwgMTkzLCA3OCwgNjUsIDUyLCAxMjgsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCA0NSwgCisgICAgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIDEyOCwgCisgICAgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDc4LCAKKyAgICA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIAorICAgIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCA1MSwgCisgICAgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIDQ5LCAKKyAgICAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIDc4LCAKKyAgICA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIAorICAgIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCA1MCwgCisgICAgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgCisgICAgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIDc4LCAKKyAgICA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgNDksIAorICAgIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA0OCwgCisgICAgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCAKKyAgICA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgODQsIAorICAgIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAxMjgsIAorICAgIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgMTI4LCAKKyAgICA3NywgODcsIDczLCA3MywgMTI4LCA3NywgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgNjksIAorICAgIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIDg2LCAKKyAgICA4MywgMTI4LCA3NywgODYsIDc5LCA4MCwgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIAorICAgIDc4LCA3MSwgNjUsIDc3LCAxMjgsIDc3LCA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIAorICAgIDgzLCA3MywgNzUsIDY1LCA4NCwgNzksIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgCisgICAgNzcsIDg1LCA4NSwgMTI4LCA3NywgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCAKKyAgICA3MywgMTk1LCA3NywgODUsIDgzLCA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIAorICAgIDc3LCA4NSwgODMsIDcyLCAxNzksIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MywgCisgICAgMTI4LCA3NywgODUsIDgyLCA4OCwgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIDc3LCA4NSwgODIsIDY5LCAKKyAgICAxMjgsIDc3LCA4NSwgODIsIDY4LCA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgODUsIDgyLCAxMjgsIDc3LCAKKyAgICA4NSwgODEsIDY4LCA2NSwgNzcsIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCA4OCwgMTI4LCA3NywgODUsIAorICAgIDc5LCA4NCwgMTI4LCA3NywgODUsIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIDY5LCAxMjgsIDc3LCA4NSwgCisgICAgNzksIDEyOCwgNzcsIDg1LCA3OCwgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgNzIsIDEyOCwgNzcsIDg1LCAKKyAgICA3OCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIAorICAgIDIxMiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgCisgICAgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIAorICAgIDc2LCA2OSwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCA2NywgCisgICAgODUsIDc2LCA2NSwgMjEwLCA3NywgODUsIDc2LCA4NCwgNzMsIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIAorICAgIDIwMSwgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAKKyAgICAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAKKyAgICAxOTksIDc3LCA4NSwgNjksIDc4LCAxMjgsIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCAKKyAgICA2NywgMjAwLCA3NywgODUsIDY3LCA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDgzLCAxMjgsIDc3LCA4NSwgNjUsIAorICAgIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgCisgICAgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCA4MiwgMjA3LCA3NywgODAsIDY1LCAxMjgsIDc3LCA3OSwgODksIDY1LCA3MywgCisgICAgMTI4LCA3NywgNzksIDg4LCAxMjgsIDc3LCA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIDY5LCAyMTEsIDc3LCA3OSwgCisgICAgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIAorICAgIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCAKKyAgICA3OCwgODQsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgCisgICAgNjksIDc4LCA4NCwgNDUsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIAorICAgIDc4LCA4NCwgMTI4LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgCisgICAgNzksIDg2LCA2OSwgMTI4LCA3NywgNzksIDg1LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCAKKyAgICA3OSwgODUsIDgzLCAxOTcsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIAorICAgIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAKKyAgICAyMTIsIDc3LCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgMTk2LCA3NywgNzksIDg0LCA3OSwgODIsIAorICAgIDg3LCA2NSwgODksIDEyOCwgNzcsIDc5LCA4NCwgNzksIDgyLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNzcsIDc5LCA4NCwgCisgICAgNzksIDIxMCwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NywgNzksIDg0LCA3MiwgNjksIDIxMCwgNzcsIDc5LCAKKyAgICA4NCwgMTI4LCA3NywgNzksIDgzLCA4MSwgODUsIDY5LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgODUsIDc3LCAxMjgsIAorICAgIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCAKKyAgICA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIDc3LCA3OSwgNzksIAorICAgIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgMjA2LCA3NywgCisgICAgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCA3NywgNzksIDc5LCAKKyAgICA2OCwgMTI4LCA3NywgNzksIDc5LCAxOTYsIDc3LCA3OSwgNzksIDEyOCwgNzcsIDc5LCA3OCwgODQsIDczLCA2OSwgNjksIAorICAgIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgMTI4LCA3NywgNzksIDc4LCA4NCwgMjAwLCA3NywgNzksIDc4LCA4MywgCisgICAgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCA3OSwgODMsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCAKKyAgICA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIDc4LCA3OSwgODIsIDY1LCA3MywgNzYsIDEyOCwgNzcsIDc5LCA3OCwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDc3LCA3OSwgCisgICAgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCA3OSwgNzgsIDc5LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDc3LCAKKyAgICA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgNzksIDc4LCA3NSwgNjksIDg5LCAxMjgsIDc3LCA3OSwgNzgsIAorICAgIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCA3MywgMTI4LCA3NywgNzksIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MSwgCisgICAgMTI4LCA3NywgNzksIDc4LCA2OSwgODksIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA3NywgNzksIDc4LCA2OSwgMjE3LCAKKyAgICA3NywgNzksIDc4LCAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAxMjgsIDc3LCA3OSwgNzIsIDY1LCA3NywgNzcsIAorICAgIDY1LCAxOTYsIDc3LCA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NywgCisgICAgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKKyAgICA2OSwgODIsIDQ1LCA1NSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NCwgMTI4LCA3NywgNzksIAorICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCAKKyAgICA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIAorICAgIDczLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgCisgICAgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAorICAgIDY5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTEsIDEyOCwgCisgICAgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAorICAgIDY5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNDgsIDEyOCwgCisgICAgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAxMjgsIDc3LCA3OSwgNjgsIDIwMSwgNzcsIDc5LCA2OCwgNjksIDgzLCAKKyAgICA4NCwgODksIDEyOCwgNzcsIDc5LCA2OCwgNjksIDgyLCAyMDYsIDc3LCA3OSwgNjgsIDY5LCA3NywgMTI4LCA3NywgNzksIAorICAgIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgMTI4LCA3NywgNzksIDY4LCA2OSwgMTI4LCA3NywgCisgICAgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgMjA3LCA3NywgNzgsIDg5LCA2NSwgMjA1LCA3NywgCisgICAgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDgzLCA4MCwgMTI4LCA3NywgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgCisgICAgMTI4LCA3NywgNzYsIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgCisgICAgODQsIDEyOCwgNzcsIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIAorICAgIDEyOCwgNzcsIDczLCA4MiwgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIAorICAgIDczLCA3OCwgODksIDEyOCwgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgCisgICAgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCAKKyAgICA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIAorICAgIDgzLCA2NywgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgCisgICAgNzMsIDc3LCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCAKKyAgICA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIAorICAgIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgNzUsIDEyOCwgNzcsIDczLCA3NiwgNzMsIDg0LCA2NSwgCisgICAgODIsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3NywgNzMsIDc1LCAKKyAgICA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAxMjgsIDc3LCA3MywgNzMsIAorICAgIDc3LCAxMjgsIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIAorICAgIDg1LCA3NywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCAKKyAgICA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgCisgICAgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCisgICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCAKKyAgICA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIAorICAgIDc3LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIAorICAgIDY5LCAxMjgsIDc3LCA3MywgNjgsIDQ1LCA3NiwgNjksIDg2LCA2OSwgMjA0LCA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgCisgICAgODIsIDc5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIAorICAgIDEyOCwgNzcsIDczLCA2NywgODIsIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAxMjgsIDc3LCA3MiwgNjUsIAorICAgIDEyOCwgNzcsIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgCisgICAgNzcsIDcxLCA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCAKKyAgICA3OSwgMTI4LCA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCAKKyAgICA3MSwgNjksIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIAorICAgIDEyOCwgNzcsIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCAKKyAgICA2NiwgNjksIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIAorICAgIDY2LCA2NSwgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAKKyAgICAxMjgsIDc3LCA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAKKyAgICAxMjgsIDc3LCA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCAKKyAgICA4OSwgNjUsIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIAorICAgIDcwLCA2OSwgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgCisgICAgNzcsIDY5LCA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCAKKyAgICA4MSwgMTI4LCA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIAorICAgIDc4LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgCisgICAgNjksIDg0LCA4MiwgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCAKKyAgICA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgCisgICAgMTI4LCA3NywgNjksIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCAKKyAgICA3MywgNjUsIDIwNiwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgCisgICAgMTk3LCA3NywgNjksIDgzLCA3OSwgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgCisgICAgNjksIDgyLCA3NSwgNzIsIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCAKKyAgICA2NSwgNzgsIDgzLCAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIAorICAgIDgyLCA2NywgODUsIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDc5LCA4MiwgCisgICAgNjUsIDIwMCwgNzcsIDY5LCA3OCwgNzksIDY5LCAxMjgsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCAKKyAgICA3OCwgMTI4LCA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgCisgICAgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCAKKyAgICA0NSwgODEsIDc5LCA4MCwgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIAorICAgIDY4LCA3MywgMTk1LCA3NywgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgCisgICAgNzEsIDY1LCA4NCwgNzksIDc4LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCAKKyAgICA3MSwgNjUsIDc2LCA3MywgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgNjksIAorICAgIDIwMSwgNzcsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDc3LCAxMjgsIAorICAgIDc3LCA2OSwgNjksIDIwMiwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgCisgICAgNzcsIDY5LCA2OCwgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjksIDY4LCAKKyAgICA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgNjgsIDY1LCA3NiwgMTI4LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIAorICAgIDY1LCAyMTIsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAKKyAgICAxMjgsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgMTk2LCA3NywgNjcsIDcyLCAKKyAgICAyMTMsIDc3LCA2NywgNzIsIDY1LCAyMDYsIDc3LCAxOTUsIDc3LCA2NiwgODUsIDg1LCAxMjgsIDc3LCA2NiwgODUsIDc5LCAKKyAgICA4MSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIAorICAgIDc3LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA3NywgNjYsIDc5LCAxMjgsIAorICAgIDc3LCA2NiwgNzMsIDg0LCAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDc3LCA2NiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4MiwgNzMsIAorICAgIDEyOCwgNzcsIDY2LCA2OSwgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgCisgICAgNzgsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjksIDY5LCAxMjgsIDc3LCAKKyAgICA2NiwgNjksIDEyOCwgNzcsIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjYsIAorICAgIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY1LCA2NSwgCisgICAgMTI4LCA3NywgNjYsIDY1LCAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIDc3LCA2NiwgNTEsIDEyOCwgNzcsIAorICAgIDY2LCA1MCwgMTI4LCA3NywgNjUsIDg5LCA2OSwgMjAzLCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgCisgICAgNjUsIDg5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDY1LCAKKyAgICAxMjgsIDc3LCA2NSwgODgsIDEyOCwgNzcsIDY1LCA4NSwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCAKKyAgICA3NywgNjUsIDg0LCA4MiwgNzMsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIAorICAgIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgCisgICAgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCAKKyAgICA3NywgNjUsIDgzLCA3MiwgNzAsIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIAorICAgIDY3LCA4NSwgNzYsIDczLCA3OCwgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NywgNjUsIDgyLCAKKyAgICAyMDEsIDc3LCA2NSwgODIsIDg1LCA3NSwgODUsIDEyOCwgNzcsIDY1LCA4MiwgODQsIDg5LCA4MiwgNzMsIDE5MywgNzcsIAorICAgIDY1LCA4MiwgODQsIDczLCA2NSwgMjA0LCA3NywgNjUsIDgyLCA4MiwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDgyLCA4MiwgCisgICAgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgMjExLCA3NywgNjUsIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDc1LCA0NSwgNTIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIAorICAgIDUwLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgCisgICAgNjcsIDcyLCA2OSwgMjA2LCA3NywgNjUsIDgyLCA2NywgNzIsIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDQ1LCAKKyAgICA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIAorICAgIDY1LCA4MiwgNjcsIDY1LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCA2NSwgMTI4LCA3NywgCisgICAgNjUsIDgyLCA2NiwgODUsIDg0LCAxOTMsIDc3LCA2NSwgODIsIDEyOCwgNzcsIDY1LCA4MSwgNjUsIDcwLCAxMjgsIDc3LCAKKyAgICA2NSwgODEsIDEyOCwgNzcsIDY1LCA4MCwgNzYsIDE5NywgNzcsIDY1LCA4MCwgNzMsIDgxLCAxMjgsIDc3LCA2NSwgMjA4LCAKKyAgICA3NywgNjUsIDc5LCAxMjgsIDc3LCA2NSwgNzgsIDg0LCA2OSwgNzYsIDgwLCA3MywgNjksIDY3LCAxOTcsIDc3LCA2NSwgNzgsIAorICAgIDgzLCA4OSwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgCiAgICAgMjE4LCA3NywgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA3OCwgNzMsIDY3LCA3MiwgNjUsIDY5LCA2NSwgMjA2LCAKICAgICA3NywgNjUsIDc4LCA3MSwgNjUsIDc2LCA2NSwgNzcsIDEyOCwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgNzYsIDczLCA3OCwgCiAgICAgMTk5LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCAxOTUsIDc3LCA2NSwgNzgsIDY3LCA3MiwgMjEzLCA3NywgNjUsIDc4LCAKQEAgLTIzMjIsMTQyMCArMjM0NSwxNDI2IEBACiAgICAgNDgsIDQ4LCAxNzgsIDc3LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzcsIDQ4LCAKICAgICA0OCwgNDksIDEyOCwgNzcsIDQ4LCA0OCwgMTc3LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCA4OSwgODgsIDEyOCwgCiAgICAgNzYsIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCA4OSwgODAsIDEyOCwgCi0gICAgNzYsIDg5LCA3MywgODQsIDEyOCwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCAKLSAgICA3NiwgODgsIDEyOCwgNzYsIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCAKLSAgICA3NiwgODcsIDczLCAxMjgsIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCAKLSAgICA3NiwgODUsIDg4LCAxMjgsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCA3NiwgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIDg0LCAxMjgsIDc2LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgMTI4LCA3NiwgODUsIDc4LCA2NSwgCi0gICAgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgODMsIDEyOCwgNzYsIDg1LCA3MiwgCi0gICAgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIDg1LCAyMDAsIDc2LCA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAKLSAgICAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCAKLSAgICA4NSwgMTk3LCA3NiwgODUsIDY2LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIDc2LCAKLSAgICA4NSwgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCA3NywgMTI4LCA3NiwgODIsIDczLCAKLSAgICAxMjgsIDc2LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIAotICAgIDc4LCA3MSwgMTk3LCA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgNjksIDE5NiwgNzYsIDc5LCA4NywgCi0gICAgNjksIDIxMCwgNzYsIDc5LCA4NywgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzYsIDc5LCAKLSAgICA4NywgNDUsIDc3LCA3MywgMTk2LCA3NiwgNzksIDg3LCA0NSwgNzAsIDY1LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA3NiwgNzksIAotICAgIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCA2OCwgCi0gICAgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIDg1LCAKLSAgICA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIAotICAgIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIAotICAgIDc2LCA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgCi0gICAgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAKLSAgICAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIAotICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCAKLSAgICA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgCi0gICAgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIAotICAgIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCAKLSAgICA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIAotICAgIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgCi0gICAgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCAKLSAgICA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIAotICAgIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCAKLSAgICA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIAotICAgIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAKLSAgICAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIAotICAgIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIAotICAgIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgCi0gICAgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCAKLSAgICA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIAotICAgIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIAotICAgIDczLCA4NCwgODQsIDc2LCA2OSwgMTI4LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgODQsIDY5LCAKLSAgICAyMTAsIDc2LCA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDIwMCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgzLCAKLSAgICAxMjgsIDc2LCA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCAKLSAgICA4MCwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgODAsIDIxMSwgNzYsIDczLCAyMDgsIDc2LCA3MywgNzgsIAotICAgIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3OCwgNzUsIDY5LCAxOTYsIDc2LCA3MywgNzgsIDIwMywgNzYsIDczLCA3OCwgCi0gICAgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgNzYsIDczLCAKLSAgICA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTEsIAotICAgIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDc2LCA3MywgCi0gICAgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDc2LCAKLSAgICA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzYsIAotICAgIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc2LCA3MywgCi0gICAgNzcsIDY2LCAyMTEsIDc2LCA3MywgNzcsIDE5NCwgNzYsIDczLCA3NiwgODksIDEyOCwgNzYsIDczLCA3NiwgNzMsIDg0LCAKLSAgICA3MiwgMTI4LCA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzYsIAotICAgIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAKLSAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcxLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3NiwgNzMsIAotICAgIDcwLCA4NCwgNjksIDgyLCAxMjgsIDc2LCA3MywgNzAsIDY5LCAxMjgsIDc2LCA3MywgNjksIDg4LCAxMjgsIDc2LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDc2LCA3MywgNjksIDgwLCAxMjgsIDc2LCA3MywgNjksIDY5LCAxMjgsIDc2LCA3MywgNjksIDEyOCwgCi0gICAgNzYsIDczLCA2OCwgMTI4LCA3NiwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCAKLSAgICA3NiwgNzMsIDY2LCA2OSwgODIsIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIAotICAgIDcyLCA3MywgNzMsIDEyOCwgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAKLSAgICAxOTksIDc2LCA3MiwgNjUsIDY1LCAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAKLSAgICAxMjgsIDc2LCA2OSwgODYsIDczLCA4NCwgNjUsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2OSwgODUsIDc3LCAxMjgsIAotICAgIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAKLSAgICAxMjgsIDc2LCA2OSwgMjEzLCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIAotICAgIDgyLCAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgCi0gICAgNzIsIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgNjcsIDcyLCAKLSAgICAxOTMsIDc2LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA3OSwgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCAKLSAgICA3NiwgNjksIDc4LCA4NCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIAotICAgIDc4LCA3MywgMjExLCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNTUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDU0LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDQ1LCA1MywgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDUxLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNDksIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCAKLSAgICA3NiwgNjksIDc4LCA3MSwgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIAotICAgIDc2LCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgCi0gICAgNzcsIDc3LCA2NSwgMTI4LCA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MywgMTI4LCA3NiwgNjksIDcxLCAKLSAgICA4MywgMTI4LCA3NiwgNjksIDcxLCA3MywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzEsIDY5LCA4NCwgNzksIDIxMSwgNzYsIAotICAgIDY5LCA3MSwgMTI4LCA3NiwgNjksIDE5OSwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgCi0gICAgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIAotICAgIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgCi0gICAgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCAKLSAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgCi0gICAgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCAKLSAgICA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIAotICAgIDg3LCA2NSwgMTI4LCA3NiwgNjksIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgCi0gICAgNzEsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCAKLSAgICA3NiwgNjksIDY1LCAxOTgsIDc2LCA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgCi0gICAgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIAotICAgIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgCi0gICAgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgCi0gICAgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg1LCA3NCwgMTI4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIAotICAgIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIDIwMSwgCi0gICAgNzYsIDY1LCA4MiwgNzEsIDY5LCA4MywgODQsIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgODIsIDcxLCAKLSAgICA2OSwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCA4MSwgMTI4LCAKLSAgICA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIDg1LCA2NSwgNzEsIAotICAgIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3NywgODAsIDEyOCwgNzYsIAotICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjksIDE5NiwgCi0gICAgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIDEyOCwgNzYsIDY1LCAKLSAgICA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgNzIsIDEyOCwgNzYsIAotICAgIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCA4OSwgNjUsIDc5LCAKLSAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTAsIDUyLCAxMjgsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTQsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1NCwgNTIsIDE4NCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MSwgNTQsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCAKLSAgICA0OSwgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OSwgMTgzLCA3NiwgNjUsIDc1LCA0NSwgNTQsIDQ4LCA1NiwgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTMsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MywgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MCwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTIsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU2LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCi0gICAgNTIsIDU1LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCAKLSAgICA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCAxODUsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTcsIDQ4LCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1MSwgNTYsIDUyLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTYsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKLSAgICA1MSwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIAotICAgIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDUzLCAKLSAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKLSAgICA0OSwgNTIsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTcsIAotICAgIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDE3NywgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NSwgMTg1LCA3NiwgNjUsIDc1LCAKLSAgICA0NSwgNDgsIDU0LCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUzLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIAotICAgIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUxLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA1MywgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OCwgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCA2NSwgNzYsIDY1LCA3OCwgCi0gICAgMTI4LCA3NiwgNjUsIDczLCA3OCwgMTk5LCA3NiwgNjUsIDIwMSwgNzYsIDY1LCA3MiwgODMsIDcyLCA4NSwgMTI4LCA3NiwgCi0gICAgNjUsIDcyLCAxMjgsIDc2LCA2NSwgNzEsIDg1LCA4MywgMTI4LCA3NiwgNjUsIDcxLCAyMTMsIDc2LCA2NSwgNzEsIDY1LCAKLSAgICA4MiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMjEwLCA3NiwgNjUsIDcxLCA2NSwgNjYsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIAotICAgIDE5NCwgNzYsIDY1LCA2OSwgODYsIDEyOCwgNzYsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY4LCAyMTcsIDc2LCA2NSwgNjcsIAotICAgIDc1LCAxMjgsIDc2LCA2NSwgNjcsIDY1LCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNzYsIDY1LCA2NiwgNzksIDgyLCAxMjgsIDc2LCA2NSwgNjYsIDczLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDc2LCA2NSwgNjYsIDY5LCA3NiwgMTI4LCA3NiwgNjUsIDY2LCA2NSwgCi0gICAgODQsIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDY1LCAKLSAgICA3NywgODUsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDU0LCAxMjgsIDc2LCAKLSAgICA1MiwgMTI4LCA3NiwgNTEsIDEyOCwgNzYsIDUwLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3NiwgNDgsIDQ4LCAKLSAgICA1MCwgNjUsIDEyOCwgNzYsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDc2LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIAotICAgIDc1LCA4OSwgODUsIDgyLCA3MywgNzMsIDEyOCwgNzUsIDg5LCA4NSwgMTI4LCA3NSwgODksIDc5LCAxMjgsIDc1LCA4OSwgCi0gICAgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4OSwgNzMsIDEyOCwgNzUsIDg5LCA2OSwgMTI4LCA3NSwgODksIDY1LCAKLSAgICA4NCwgNzIsIDc5LCAyMTEsIDc1LCA4OSwgNjUsIDY1LCAxMjgsIDc1LCA4OSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgNzMsIAotICAgIDEyOCwgNzUsIDg4LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA3NSwgODgsIDg3LCA2NSwgMTI4LCA3NSwgODgsIDg1LCAxMjgsIDc1LCA4OCwgNzksIDEyOCwgNzUsIDg4LCA3MywgCi0gICAgMTI4LCA3NSwgODgsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDY5LCAxMjgsIDc1LCA4OCwgNjUsIDY1LCAxMjgsIDc1LCA4OCwgCi0gICAgNjUsIDEyOCwgNzUsIDg3LCA4NiwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCA4NywgNzksIDc5LCAKLSAgICAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3NywgMTI4LCA3NSwgODcsIDczLCA3MywgMTI4LCA3NSwgODcsIDczLCAKLSAgICAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgNjksIDEyOCwgNzUsIDg3LCA2NiwgMTI4LCA3NSwgODcsIDY1LCAKLSAgICA4OSwgMTI4LCA3NSwgODcsIDY1LCA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg2LCA2NSwgMTI4LCAKLSAgICA3NSwgODYsIDEyOCwgNzUsIDg1LCA4OCwgMTI4LCA3NSwgODUsIDg2LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAxMjgsIDc1LCAKLSAgICA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIDEyOCwgNzUsIAotICAgIDg1LCA4MywgNzIsIDg1LCAxNzgsIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgCi0gICAgNzksIDEyOCwgNzUsIDg1LCA4MiwgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgNjksIDEyOCwgNzUsIDg1LCAKLSAgICA4MiwgMTI4LCA3NSwgODUsIDIxMCwgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgMTI4LCA3NSwgODUsIDc5LCAKLSAgICA4MCwgMTI4LCA3NSwgODUsIDc5LCAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgNzksIDEyOCwgNzUsIDg1LCAKLSAgICA3OCwgNzEsIDEyOCwgNzUsIDg1LCA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzUsIDg1LCA3NiwgCi0gICAgMTI4LCA3NSwgODUsIDIwNCwgNzUsIDg1LCA3MSwgMTI4LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDY2LCAxMjgsIAotICAgIDc1LCA4NSwgNjUsIDg2LCAxMjgsIDc1LCA4NSwgNjUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIDEyOCwgNzUsIDg1LCA1NSwgCi0gICAgMTI4LCA3NSwgODUsIDUyLCAxMjgsIDc1LCA4NSwgMTgwLCA3NSwgODUsIDUxLCAxMjgsIDc1LCA4NSwgMTc5LCA3NSwgODQsIAotICAgIDEyOCwgNzUsIDgzLCA4MywgODUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDg1LCAxMjgsIDc1LCA4MywgODMsIDc5LCA3OSwgCi0gICAgMTI4LCA3NSwgODMsIDgzLCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNzMsIDEyOCwgCi0gICAgNzUsIDgzLCA4MywgNjksIDY5LCAxMjgsIDc1LCA4MywgODMsIDY5LCAxMjgsIDc1LCA4MywgODMsIDY1LCA4NSwgMTI4LCAKLSAgICA3NSwgODMsIDgzLCA2NSwgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDc1LCA4MywgODMsIDY1LCAxMjgsIAotICAgIDc1LCA4MywgODMsIDEyOCwgNzUsIDgzLCA3MywgMTI4LCA3NSwgODIsIDY5LCA3NywgNjUsIDgzLCA4NCwgNzMsIDEyOCwgCi0gICAgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDc5LCA3OCwgMTI4LCA3NSwgODIsIAotICAgIDY1LCA4NCwgNzMsIDc3LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCAKLSAgICA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgMTkzLCA3NSwgODAsIDg1LCAxMjgsIAotICAgIDc1LCA4MCwgNzksIDgxLCAxMjgsIDc1LCA4MCwgNzksIDc5LCAxMjgsIDc1LCA4MCwgNzksIDEyOCwgNzUsIDgwLCA3MywgCi0gICAgMTI4LCA3NSwgODAsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDgwLCA2OSwgNjksIDEyOCwgNzUsIDgwLCA2OSwgMTI4LCA3NSwgCi0gICAgODAsIDY1LCA4MiwgNjUsIDgxLCAxMjgsIDc1LCA4MCwgNjUsIDc4LCAxMjgsIDc1LCA4MCwgNjUsIDcyLCAxMjgsIDc1LCAKLSAgICA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCA4NSwgODUsIDEyOCwgNzUsIDc5LCA4NiwgMTI4LCAKLSAgICA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgODIsIDc5LCA3OCwgNzMsIAotICAgIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAxOTUsIDc1LCA3OSwgCi0gICAgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDgwLCAxMjgsIDc1LCAKLSAgICA3OSwgNzksIDg2LCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgCi0gICAgMTI4LCA3NSwgNzksIDc5LCA2NiwgMTI4LCA3NSwgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAKLSAgICA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIAotICAgIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgCi0gICAgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgNjksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCA3NSwgNzksIDIwMywgCi0gICAgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCA3MiwgNzksIDc3LCAKLSAgICAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAxMjgsIDc1LCAKLSAgICA3OSwgNjUsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIAotICAgIDY5LCAxMjgsIDc1LCA3OCwgNzksIDY2LCA4MywgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA3OCwgCi0gICAgNzMsIDcxLCA3MiwgMjEyLCA3NSwgNzgsIDczLCA3MCwgNjksIDEyOCwgNzUsIDc4LCA3MywgNzAsIDE5NywgNzUsIDc3LCAKLSAgICAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgNzMsIDg0LCA3OSwgNzgsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCAKLSAgICA3NSwgNzYsIDY1LCA4MywgNzcsIDE5MywgNzUsIDc2LCA2NSwgMTI4LCA3NSwgNzYsIDEyOCwgNzUsIDc1LCA4NSwgMTI4LCAKLSAgICA3NSwgNzUsIDc5LCAxMjgsIDc1LCA3NSwgNzMsIDEyOCwgNzUsIDc1LCA2OSwgNjksIDEyOCwgNzUsIDc1LCA2OSwgMTI4LCAKLSAgICA3NSwgNzUsIDY1LCAxMjgsIDc1LCA3NSwgMTI4LCA3NSwgNzQsIDY5LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCAKLSAgICA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCAKLSAgICA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCi0gICAgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA2NywgNzIsIAotICAgIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDIwMywgNzUsIDczLCA4OCwgMTI4LCA3NSwgCi0gICAgNzMsIDg3LCAxMjgsIDc1LCA3MywgODYsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDc1LCA3MywgODMsIDgzLCAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCA1MywgMTI4LCAKLSAgICA3NSwgNzMsIDgzLCA3MywgNzcsIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIDc2LCAxMjgsIAotICAgIDc1LCA3MywgODIsIDc5LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgNjksIDg0LCAKLSAgICA3OSwgODIsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCA3MywgODIsIAotICAgIDc5LCAxMjgsIDc1LCA3MywgODIsIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIDgwLCAxMjgsIAotICAgIDc1LCA3MywgMjA4LCA3NSwgNzMsIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgNjksIDgyLCA3MSwgCi0gICAgNjUsIDgyLCA4NCwgNjksIDc4LCAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCA3NiwgNzYsIDY5LCAKLSAgICA4MiwgMTI4LCA3NSwgNzMsIDczLCAxMjgsIDc1LCA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCAKLSAgICA2OSwgODYsIDY1LCAyMDYsIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIAotICAgIDY5LCAxMjgsIDc1LCA3MywgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MywgNjYsIAotICAgIDEyOCwgNzUsIDczLCA2NSwgODYsIDEyOCwgNzUsIDczLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIAotICAgIDg3LCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA4NSwgNjksIDc4LCA0NSwgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAKLSAgICAyMDYsIDc1LCA3MiwgODUsIDY4LCA2NSwgODcsIDY1LCA2OCwgMjAxLCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAxMjgsIAotICAgIDc1LCA3MiwgODUsIDY1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCA3MiwgCi0gICAgNzksIDc4LCAxMjgsIDc1LCA3MiwgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgNzQsIDc1LCAyMDEsIDc1LCAKLSAgICA3MiwgNzksIDEyOCwgNzUsIDcyLCAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCAKLSAgICA3MywgNzgsIDg5LCA2NSwgMTI4LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIAotICAgIDcyLCAyMDEsIDc1LCA3MiwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgNzIsIDY1LCAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgCi0gICAgMTI4LCA3NSwgNzIsIDY5LCA3MywgMTI4LCA3NSwgNzIsIDY5LCA2OSwgMTI4LCA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgCi0gICAgNjUsIDg2LCAxMjgsIDc1LCA3MiwgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgNzUsIDcyLCA2NSwgODIsIAotICAgIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCA3MiwgNjUsIDc4LCA2OCwgCi0gICAgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIDcyLCA2NSwgNzUsIDY1LCAKLSAgICA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgMTI4LCA3NSwgNzIsIAotICAgIDY1LCAyMDAsIDc1LCA3MiwgNjUsIDY2LCAxMjgsIDc1LCA3MiwgNjUsIDY1LCAxMjgsIDc1LCA3MSwgMTI4LCA3NSwgNjksIAotICAgIDg5LCA2NywgNjUsIDgwLCAxMjgsIDc1LCA2OSwgODksIDY3LCA2NSwgMjA4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgCi0gICAgNjgsIDEyOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIDE5NiwgNzUsIDY5LCA4OCwgMTI4LCA3NSwgNjksIDg2LCAKLSAgICAxMjgsIDc1LCA2OSwgODUsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIAotICAgIDgwLCAxMjgsIDc1LCA2OSwgODUsIDgzLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgwLCA4NSwgODEsIDEyOCwgCi0gICAgNzUsIDY5LCA4NSwgNzksIDIxMiwgNzUsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIDY5LCA4NSwgODQsIDc4LCAKLSAgICA2OCwgNjUsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIDY1LCA4MSwgMTI4LCA3NSwgNjksIDg1LCA2NSwgNjksIDg0LCA3NywgNjksIAotICAgIDg1LCA3OCwgMTI4LCA3NSwgNjksIDg1LCA2NSwgNjksIDgyLCA3MywgMTI4LCA3NSwgNjksIDg0LCA4NCwgMjAxLCA3NSwgCi0gICAgNjksIDgzLCA3MiwgNTAsIDEyOCwgNzUsIDY5LCA4MiwgNjksIDg0LCAxMjgsIDc1LCA2OSwgNzksIDg3LCAxMjgsIDc1LCAKLSAgICA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCAxOTMsIAotICAgIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDE5MywgNzUsIDY5LCA3OCwgNjUsIDg0LCAxMjgsIDc1LCA2OSwgNzgsIDEyOCwgCi0gICAgNzUsIDY5LCAyMDYsIDc1LCA2OSwgNzcsIDgwLCA4NSwgNzYsIDEyOCwgNzUsIDY5LCA3NywgODAsIDg1LCAyMDQsIDc1LCAKLSAgICA2OSwgNzcsIDgwLCA3NiwgNzMsIDEyOCwgNzUsIDY5LCA3NywgODAsIDc2LCAyMDEsIDc1LCA2OSwgNzcsIDgwLCA3MiwgODIsIAotICAgIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NywgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NiwgODYsIDczLCAKLSAgICAyMDYsIDc1LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA3NSwgNjksIDcyLCA2OSwgMjAwLCA3NSwgNjksIDcyLCAxMjgsIDc1LCAKLSAgICA2OSwgNzAsIDg1LCA3NiwgNjUsIDEyOCwgNzUsIDY5LCA2OSwgODYsIDEyOCwgNzUsIDY5LCA2OSwgODMsIDg1LCAxMjgsIAotICAgIDc1LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNjksIDY2LCAKLSAgICAxMjgsIDc1LCA2OSwgNjYsIDEyOCwgNzUsIDY5LCA2NSwgNjUsIDY5LCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIDc1LCAKLSAgICA2NiwgMTI4LCA3NSwgNjUsIDkwLCA2NSwgNzUsIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzUsIAotICAgIDY1LCA4OSwgNjUsIDIwMCwgNzUsIDY1LCA4OCwgMTI4LCA3NSwgNjUsIDg3LCA4NiwgMTI4LCA3NSwgNjUsIDg3LCA3MywgCi0gICAgMTI4LCA3NSwgNjUsIDg3LCA2NiwgMTI4LCA3NSwgNjUsIDg2LCA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODYsIDEyOCwgCi0gICAgNzUsIDY1LCA4NSwgODYsIDEyOCwgNzUsIDY1LCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCAKLSAgICA4NSwgNjYsIDEyOCwgNzUsIDY1LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIAotICAgIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgCi0gICAgNjUsIDg0LCA2NSwgODYsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIAotICAgIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgCi0gICAgODQsIDY1LCAyMDYsIDc1LCA2NSwgODMsIDgyLCA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCAKLSAgICA3NSwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODMsIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgCi0gICAgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIAotICAgIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgNjUsIDgyLCA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgCi0gICAgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIAotICAgIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgCi0gICAgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDgwLCA4MCwgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCAKLSAgICA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCAyMDgsIDc1LCAKLSAgICA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIAotICAgIDc4LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzcsIDUyLCAxMjgsIDc1LCA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgCi0gICAgNzcsIDEyOCwgNzUsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NSwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCAKLSAgICA3NSwgMTI4LCA3NSwgNjUsIDIwMywgNzUsIDY1LCA3MywgODYsIDEyOCwgNzUsIDY1LCA3MywgODQsIDcyLCAyMDEsIDc1LCAKLSAgICA2NSwgNzMsIDgyLCA3MywgMTI4LCA3NSwgNjUsIDczLCA2NiwgMTI4LCA3NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgMjAxLCAKLSAgICA3NSwgNjUsIDcwLCA2NSwgMTI4LCA3NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgMTk4LCA3NSwgNjUsIDY4LCA1MywgMTI4LCAKLSAgICA3NSwgNjUsIDY4LCAxODEsIDc1LCA2NSwgNjgsIDUyLCAxMjgsIDc1LCA2NSwgNjgsIDUxLCAxMjgsIDc1LCA2NSwgNjgsIAotICAgIDE3OSwgNzUsIDY1LCA2OCwgNTAsIDEyOCwgNzUsIDY1LCA2OCwgMTI4LCA3NSwgNjUsIDY2LCAxOTMsIDc1LCA2NSwgNjYsIAotICAgIDEyOCwgNzUsIDY1LCA2NSwgODYsIDEyOCwgNzUsIDY1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIAotICAgIDc1LCA2NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgNjUsIDY2LCA2NSwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgMTI4LCA3NSwgCi0gICAgNjUsIDUwLCAxMjgsIDc1LCA2NSwgMTc4LCA3NSwgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgMTI4LCA3NSwgCi0gICAgNDgsIDQ4LCA1NCwgMTI4LCA3NSwgNDgsIDQ4LCA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgNDgsIDQ4LCAKLSAgICA1MSwgMTI4LCA3NSwgNDgsIDQ4LCA1MCwgMTI4LCA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAxMjgsIDc0LCAKLSAgICA4NSwgODUsIDEyOCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgODUsIDgzLCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgMTI4LCA3NCwgCi0gICAgODUsIDc5LCA4MCwgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgODUsIDc2LCAKLSAgICA4OSwgMTI4LCA3NCwgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCA4NSwgNjgsIAotICAgIDcxLCA2OSwgMTI4LCA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIDc0LCA3OSwgCi0gICAgODksIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NCwgNzksIDg5LCA3OSwgODUsIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCAKLSAgICA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCA3OCwgNzEsIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCAKLSAgICA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDg0LCA4MywgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIAotICAgIDY4LCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIAotICAgIDc0LCA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgCi0gICAgMTI4LCA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCAKLSAgICA3NCwgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIAotICAgIDg0LCAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIAotICAgIDc0LCA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCAKLSAgICA3MywgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCAKLSAgICA3NiwgMTI4LCA3NCwgNzMsIDczLCAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCA3NiwgNzMsIDg5LCA2NSwgCi0gICAgMTI4LCA3NCwgNzMsIDY1LCAxMjgsIDc0LCA3MiwgNzksIDg4LCAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgCi0gICAgNzIsIDEyOCwgNzQsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCAKLSAgICA3NywgMTI4LCA3NCwgNzIsIDY1LCA2NSwgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCAKLSAgICA4MiwgODUsIDgzLCA2NSwgNzYsIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgCi0gICAgMTI4LCA3NCwgNjksIDgyLCAxMjgsIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgCi0gICAgNjUsIDc4LCAxMjgsIDc0LCA2OSwgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCAKLSAgICA3OCwgMTI4LCA3NCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIAotICAgIDY1LCA4NywgMTI4LCA3NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4NSwgMTI4LCA3NCwgCi0gICAgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2NSwgODAsIDY1LCA3OCwgMTI4LCAKLSAgICA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3NCwgNjUsIDc2LCA3NiwgNjUsIDc0LCA2NSwgNzYsIDY1LCA3NiwgCi0gICAgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCA2NSwgNzMsIDIwNiwgNzQsIDY1LCA3MywgMTI4LCA3NCwgNjUsIDcyLCAKLSAgICAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA4MywgMTI4LCA3NCwgNjUsIDY3LCA3NSwgNDUsIAotICAgIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzQsIDY1LCA2NywgMjAzLCA3NCwgNDUsIDgzLCA3MywgCi0gICAgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIDEyOCwgNzMsIDkwLCAKLSAgICA3MiwgNzMsIDg0LCA4MywgMTkzLCA3MywgOTAsIDcyLCA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgNjUsIDg5LCAxOTMsIAotICAgIDczLCA4OSwgNjksIDc1LCAxMjgsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCA3NCwgNjUsIDEyOCwgCi0gICAgNzMsIDg0LCAyMTEsIDczLCA4NCwgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIDY5LCA3NywgMTI4LCAKLSAgICA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAxMjgsIDczLCA4MywgNzksIDgzLCA2NywgNjksIDc2LCA2OSwgMjExLCA3MywgODMsIAotICAgIDc5LCA3OCwgMTI4LCA3MywgODMsIDc5LCAyMDYsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxMjgsIDczLCA4MywgCi0gICAgNzYsIDY1LCA3OCwgNjgsIDEyOCwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIDY5LCA3OCwgMTI4LCA3MywgODMsIDY1LCAKLSAgICA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg5LCA2NSwgNzgsIAotICAgIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgNzksIDc4LCA0NSwgCi0gICAgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAxMjgsIDczLCA4MiwgNjYsIDEyOCwgNzMsIDc5LCAKLSAgICA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgCi0gICAgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgCi0gICAgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCA2OCwgMTI4LCAKLSAgICA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDczLCA3OCwgODQsIAotICAgIDgyLCA3OSwgNjgsIDg1LCA2NywgNjksIDgyLCAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgCi0gICAgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgCi0gICAgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIAotICAgIDc4LCA3MSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgCi0gICAgODIsIDgwLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDc5LCA2NywgNzUsIAotICAgIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDczLCA3OCwgODQsIDY5LCA4MiwgCi0gICAgNzYsIDY1LCA2NywgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3MywgNzksIDIxMCwgNzMsIDc4LCA4NCwgNjksIDgyLCAKLSAgICA2OSwgODMsIDIxMiwgNzMsIDc4LCA4NCwgNjksIDgyLCA2NywgNjUsIDc2LCA2NSwgODQsIDY5LCAxMjgsIDczLCA3OCwgODQsIAotICAgIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgNzYsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIAotICAgIDIwNCwgNzMsIDc4LCA4MywgODUsIDc2LCA2NSwgMjEwLCA3MywgNzgsIDgzLCA4NCwgODIsIDg1LCA3NywgNjksIDc4LCA4NCwgCi0gICAgNjUsIDIwNCwgNzMsIDc4LCA4MywgNzMsIDY4LCA2OSwgMTI4LCA3MywgNzgsIDgzLCA3MywgNjgsIDE5NywgNzMsIDc4LCAKLSAgICA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODMsIDY5LCA2NywgODQsIDEyOCwgNzMsIDc4LCA4MywgNjcsIAotICAgIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MywgNzgsIDgwLCA4NSwgMjEyLCA3MywgNzgsIDc4LCA3OSwgCi0gICAgNjcsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCAKLSAgICA3MywgNzgsIDc4LCA2OSwgMjEwLCA3MywgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzMsIDc4LCA3MSwgODUsIDEyOCwgNzMsIAotICAgIDc4LCA3MywgMTI4LCA3MywgNzgsIDcyLCA3MywgNjYsIDczLCAyMTIsIDczLCA3OCwgNzIsIDY5LCA4MiwgNjksIDc4LCAKLSAgICAyMTIsIDczLCA3OCwgNzIsIDY1LCA3NiwgNjksIDEyOCwgNzMsIDc4LCA3MSwgODcsIDY1LCA5MCwgMTI4LCA3MywgNzgsIAotICAgIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDcwLCA3NiwgODUsIDY5LCA3OCwgNjcsIDY5LCAKLSAgICAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgCi0gICAgMjE3LCA3MywgNzgsIDY4LCA4NSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3OCwgNjgsIDczLCA4MiwgNjksIDY3LCAKLSAgICAyMTIsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2NSwgODQsIAotICAgIDc5LCAyMTAsIDczLCA3OCwgNjgsIDczLCAxOTUsIDczLCA3OCwgNjgsIDczLCA2NSwgMjA2LCA3MywgNzgsIDY4LCA2OSwgCi0gICAgODgsIDEyOCwgNzMsIDc4LCA2OCwgNjksIDgwLCA2OSwgNzgsIDY4LCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA2NywgODIsIDY5LCAKLSAgICA3NywgNjksIDc4LCA4NCwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDIxMSwgNzMsIDc4LCA2NywgODIsIAotICAgIDY5LCA2NSwgODMsIDY5LCAxMjgsIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgCi0gICAgODAsIDc2LCA2OSwgODQsIDE5NywgNzMsIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzYsIDg1LCAKLSAgICA2OCwgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIAotICAgIDgwLCAxMjgsIDczLCA3OCwgNDUsIDY1LCA3NiwgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAKLSAgICAyMDQsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIAotICAgIDY5LCA2NywgODQsIDY1LCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgCi0gICAgMTI4LCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCAKLSAgICA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIAotICAgIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAKLSAgICAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIAotICAgIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAKLSAgICAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIAotICAgIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgCi0gICAgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAKLSAgICAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgCi0gICAgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIAotICAgIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIAotICAgIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCAKLSAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2OCwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NCwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA2OSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCAKLSAgICA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA3MywgNjcsIDc5LCA3OCwgMTI4LCA3MywgNjcsIDcyLCA3OSwgODUsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAKLSAgICAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIAotICAgIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgNDUsIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgCi0gICAgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCAKLSAgICA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIDQ4LCA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIAotICAgIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgCi0gICAgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIDczLCA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIAotICAgIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgODksIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIAotICAgIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgCi0gICAgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIAotICAgIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgMTI4LCA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIAotICAgIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCA0NSwgNjUsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAKLSAgICAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIDgwLCAxMjgsIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCAKLSAgICA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIDg0LCAxMjgsIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCAKLSAgICA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgODksIDgwLCA3OSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgCi0gICAgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCAKLSAgICA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIAotICAgIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg5LCA3MSwgNzMsIDY5LCA3MywgNjUsIDEyOCwgNzIsIDg4LCA4NywgNzEsIDEyOCwgCi0gICAgNzIsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgNzIsIAotICAgIDg4LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCA4NCwgCi0gICAgMTI4LCA3MiwgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg0LCAKLSAgICAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIDcyLCAKLSAgICA4OCwgNjksIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgODgsIAotICAgIDEyOCwgNzIsIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgODcsIAotICAgIDg1LCAxMjgsIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODcsIDY1LCA3MiwgMTI4LCA3MiwgODYsIDEyOCwgNzIsIAotICAgIDg1LCA4NiwgNjUsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgODMsIDcyLCAxMjgsIDcyLCA4NSwgCi0gICAgODIsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgODMsIAotICAgIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgMTk2LCA3MiwgCi0gICAgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDIwOCwgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCAKLSAgICAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgNzIsIDg1LCA3MSwgNzEsIAotICAgIDczLCA3OCwgMTk5LCA3MiwgODUsIDY2LCA1MCwgMTI4LCA3MiwgODUsIDY2LCAxNzgsIDcyLCA4NSwgNjYsIDEyOCwgNzIsIAotICAgIDg1LCA2NSwgODIsIDY1LCA2OCwgNjgsIDc5LCAxMjgsIDcyLCA4NSwgNjUsIDc4LCAxMjgsIDcyLCA4NCwgODMsIDEyOCwgCi0gICAgNzIsIDg0LCA3NCwgMTI4LCA3MiwgODIsIDg5LCA4NiwgNzgsIDczLCAxOTMsIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCAKLSAgICA4MCwgNjUsIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCA3OSwgODUsIDgzLCAxOTcsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIAotICAgIDY1LCA4MywgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCAyMTEsIDcyLCA3OSwgODUsIDgyLCAKLSAgICAxMjgsIDcyLCA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgNjksIDc2LCAxMjgsIDcyLCA3OSwgODQsIDY1LCAxMjgsIDcyLCAKLSAgICA3OSwgODMsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA4MywgNjksIDEyOCwgNzIsIDc5LCA4MiwgODMsIAotICAgIDE5NywgNzIsIDc5LCA4MiwgODIsIDEyOCwgNzIsIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCi0gICAgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIAotICAgIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCAKLSAgICA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCi0gICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIAotICAgIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCAKLSAgICA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCi0gICAgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIAotICAgIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAyMDQsIDcyLCA3OSwgODIsIAotICAgIDczLCAxMjgsIDcyLCA3OSwgODIsIDE5MywgNzIsIDc5LCA3OSwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODIsIDg1LCAxMjgsIAotICAgIDcyLCA3OSwgNzksIDgwLCAxMjgsIDcyLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgNjgsIDEyOCwgCi0gICAgNzIsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDcyLCA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIDc4LCAKLSAgICA2OSwgMjE3LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgODQsIAotICAgIDcyLCA2OSwgODQsIDczLCAxOTUsIDcyLCA3OSwgNzYsIDc5LCAxMjgsIDcyLCA3OSwgNzYsIDc2LCA3OSwgMjE1LCA3MiwgCi0gICAgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCAKLSAgICA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIDc1LCA2NSwgMTI4LCA3MiwgNzksIDY3LCA3NSwgNjksIDIxNywgNzIsIAotICAgIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgCi0gICAgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA2NiwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCAKLSAgICA4NCwgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCAKLSAgICA3MiwgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIAotICAgIDcyLCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgCi0gICAgNjksIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgCi0gICAgNzIsIDc4LCA2NSwgODUsIDEyOCwgNzIsIDc4LCA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCAKLSAgICA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIAotICAgIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIAotICAgIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCAKLSAgICA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCAKLSAgICA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIAotICAgIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgCi0gICAgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgCi0gICAgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCAKLSAgICA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCAKLSAgICA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgCi0gICAgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAKLSAgICAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCAKLSAgICA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIAotICAgIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIAotICAgIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgODgsIDEyOCwgNzIsIDc2LCA2NSwgODUsIDEyOCwgNzIsIDc2LCA2NSwgCi0gICAgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzYsIDEyOCwgNzIsIDc1LCAxMjgsIAotICAgIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODksIDc5LCAxMjgsIDcyLCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgCi0gICAgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAxMjgsIDcyLCA3MywgNzgsIDcxLCAKLSAgICA2OSwgNjgsIDEyOCwgNzIsIDczLCA3OCwgNzEsIDY5LCAxOTYsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNzMsIAotICAgIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIDcyLCA3MywgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCAKLSAgICA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDc2LCA3OSwgMjE1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIAotICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIAotICAgIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgCi0gICAgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNzIsIDcyLCA4NywgNjUsIDEyOCwgNzIsIDcyLCAKLSAgICA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDcyLCA3MiwgNjksIDEyOCwgNzIsIDcyLCAKLSAgICA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODksIDg0LCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgNzksIAotICAgIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKKyAgICA3NiwgODksIDczLCA4NCwgMTI4LCA3NiwgODksIDczLCA3OCwgMTk5LCA3NiwgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIAorICAgIDg5LCA2NywgNzMsIDY1LCAyMDYsIDc2LCA4OCwgMTI4LCA3NiwgODcsIDc5LCA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIAorICAgIDc2LCA4NywgNzMsIDczLCAxMjgsIDc2LCA4NywgNzMsIDEyOCwgNzYsIDg3LCA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgCisgICAgMTI4LCA3NiwgODcsIDY1LCAxMjgsIDc2LCA4NSwgODgsIDEyOCwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIAorICAgIDc2LCA4NSwgODIsIDg4LCAxMjgsIDc2LCA4NSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgCisgICAgODQsIDEyOCwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgMTI4LCA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAKKyAgICAxMjgsIDc2LCA4NSwgNzgsIDY1LCA4NCwgMTk3LCA3NiwgODUsIDIwNSwgNzYsIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCAKKyAgICA4MywgMTI4LCA3NiwgODUsIDcyLCA4NSwgODIsIDEyOCwgNzYsIDg1LCA3MiwgMTI4LCA3NiwgODUsIDIwMCwgNzYsIDg1LCAKKyAgICA3MSwgNzEsIDY1LCA3MSwgNjksIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDc2LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCAyMDQsIAorICAgIDc2LCA4NSwgNjksIDEyOCwgNzYsIDg1LCAxOTcsIDc2LCA4NSwgNjYsIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIAorICAgIDc2LCA4NSwgNTEsIDEyOCwgNzYsIDg1LCA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDgyLCA3OSwgMTI4LCA3NiwgODIsIAorICAgIDc3LCAxMjgsIDc2LCA4MiwgNzMsIDEyOCwgNzYsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgCisgICAgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCAxOTcsIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCAKKyAgICA2OSwgMTk2LCA3NiwgNzksIDg3LCA2OSwgMjEwLCA3NiwgNzksIDg3LCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIAorICAgIDY4LCA0NSwgMTg1LCA3NiwgNzksIDg3LCA0NSwgNzcsIDczLCAxOTYsIDc2LCA3OSwgODcsIDQ1LCA3MCwgNjUsIDc2LCA3NiwgCisgICAgNzMsIDc4LCAxOTksIDc2LCA3OSwgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAKKyAgICAxMjgsIDc2LCA3OSwgODUsIDY4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIAorICAgIDIxNywgNzYsIDc5LCA4NCwgODUsIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MywgODMsIDc2LCA2OSwgCisgICAgODMsIDgzLCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIDczLCA3OCwgNjksIAorICAgIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIDc2LCA3OSwgNzksIAorICAgIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgNzksIDc4LCAxMjgsIAorICAgIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAxMjgsIDc2LCA3OSwgCisgICAgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIDc2LCA2OSwgNzEsIDcxLCAKKyAgICA2OSwgMTk2LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIAorICAgIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCAKKyAgICA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgCisgICAgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIAorICAgIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCAKKyAgICA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIAorICAgIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgCisgICAgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAKKyAgICAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIAorICAgIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCAKKyAgICA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIAorICAgIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCAKKyAgICA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAKKyAgICAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCAKKyAgICA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIAorICAgIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgCisgICAgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCAKKyAgICA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIAorICAgIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgCisgICAgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIDc0LCAxMjgsIDc2LCA3MywgOTAsIDY1LCA4MiwgNjgsIDEyOCwgCisgICAgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgNzMsIDg0LCAKKyAgICA4NCwgNzYsIDY5LCAxMjgsIDc2LCA3MywgODQsIDg0LCA3NiwgMTk3LCA3NiwgNzMsIDg0LCA4NCwgNjksIDIxMCwgNzYsIAorICAgIDczLCA4NCwgODIsIDE5MywgNzYsIDczLCA4NCwgMjAwLCA3NiwgNzMsIDgzLCAyMTMsIDc2LCA3MywgODMsIDEyOCwgNzYsIAorICAgIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIDgwLCA4MywgCisgICAgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA4MCwgMjExLCA3NiwgNzMsIDIwOCwgNzYsIDczLCA3OCwgNzUsIDczLCAKKyAgICA3OCwgMTk5LCA3NiwgNzMsIDc4LCA3NSwgNjksIDE5NiwgNzYsIDczLCA3OCwgMjAzLCA3NiwgNzMsIDc4LCA3MSwgODMsIAorICAgIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA4MywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgMjExLCA3NiwgNzMsIDc4LCA2OSwgCisgICAgNDUsIDU3LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1MSwgMTI4LCAKKyAgICA3NiwgNzMsIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzYsIDczLCA3NywgNzcsIAorICAgIDg1LCA1MCwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzYsIDczLCA3NywgNzcsIDIxMywgNzYsIDczLCA3NywgCisgICAgNzMsIDg0LCA2OSwgMTk2LCA3NiwgNzMsIDc3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgNzMsIDc3LCAKKyAgICA3MywgODQsIDEyOCwgNzYsIDczLCA3NywgNjksIDEyOCwgNzYsIDczLCA3NywgNjYsIDIxMywgNzYsIDczLCA3NywgNjYsIAorICAgIDIxMSwgNzYsIDczLCA3NywgMTk0LCA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgODQsIDcyLCAxMjgsIAorICAgIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDc4LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3MSwgNzIsIDg0LCA3MiwgNzksIDg1LCA4MywgNjksIDEyOCwgNzYsIDczLCAKKyAgICA3MSwgNzIsIDg0LCAxMjgsIDc2LCA3MywgNzEsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzAsIDg0LCA2OSwgODIsIAorICAgIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIAorICAgIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIAorICAgIDc2LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA2NiwgODIsIDY1LCAxMjgsIDc2LCA3MywgNjYsIDY5LCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NiwgNzIsIDczLCA3MywgMTI4LCAKKyAgICA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDE5OSwgNzYsIDcyLCA2NSwgNjUsIAorICAgIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAxMjgsIDc2LCA2OSwgODgsIDEyOCwgNzYsIDY5LCA4NiwgNzMsIAorICAgIDg0LCA2NSwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgCisgICAgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc2LCA2OSwgODUsIDEyOCwgNzYsIDY5LCAyMTMsIDc2LCA2OSwgCisgICAgODQsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDEyOCwgNzYsIDY5LCAyMTIsIDc2LCAKKyAgICA2OSwgODMsIDgzLCA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDc2LCA2OSwgODMsIAorICAgIDgzLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCA2NywgNzIsIDE5MywgNzYsIDY5LCA4MCwgMTI4LCA3NiwgCisgICAgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCAKKyAgICA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgNzgsIDczLCAyMTEsIDc2LCA2OSwgNzgsIAorICAgIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1NSwgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTQsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUzLCAxMjgsIDc2LCAKKyAgICA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTEsIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUwLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA0OSwgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDIwMCwgNzYsIDY5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAxOTMsIDc2LCAKKyAgICA2OSwgNzcsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDc3LCA3OSwgNzMsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDg0LCAxMjgsIAorICAgIDc2LCA2OSwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgMjAzLCA3NiwgNjksIDczLCA3NywgNzcsIDY1LCAxMjgsIDc2LCA2OSwgCisgICAgNzMsIDc3LCA3NywgMTkzLCA3NiwgNjksIDczLCAxMjgsIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgMTk5LCAKKyAgICA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODQsIDc5LCA0NSwgCisgICAgODIsIDczLCA3MSwgNzIsIDIxMiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgODQsIDY5LCAyMDUsIDc2LCA2OSwgNzAsIDg0LCAKKyAgICA0NSwgODMsIDczLCA2OCwgMTk3LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA3NiwgNjksIAorICAgIDcwLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzYsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA3NiwgNjksIAorICAgIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgCisgICAgNzYsIDY5LCA3MCwgODQsIDEyOCwgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgODcsIDY1LCAxMjgsIDc2LCA2OSwgNjksIDc1LCAKKyAgICAxMjgsIDc2LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NiwgNjksIDY4LCA3MSwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIAorICAgIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDcwLCAxMjgsIDc2LCA2OSwgNjUsIDE5OCwgNzYsIDY5LCA2NSwgCisgICAgNjgsIDczLCA3OCwgMTk5LCA3NiwgNjksIDY1LCA2OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDE5NiwgNzYsIDY4LCAKKyAgICA2NSwgNzgsIDEyOCwgNzYsIDY4LCA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgNzYsIDY3LCAxOTcsIDc2LCA2NSwgOTAsIDIxNywgCisgICAgNzYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzYsIDY1LCA4OCwgMTI4LCA3NiwgNjUsIDg3LCAxMjgsIDc2LCAKKyAgICA2NSwgMjE1LCA3NiwgNjUsIDg1LCA3NiwgNjUsIDEyOCwgNzYsIDY1LCA4NSwgNzUsIDY1LCAyMTgsIDc2LCA2NSwgODUsIAorICAgIDc0LCAxMjgsIDc2LCA2NSwgODUsIDcxLCA3MiwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgCisgICAgMTk3LCA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAKKyAgICAxOTcsIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIAorICAgIDIwMSwgNzYsIDY1LCA4MiwgNzEsIDY5LCA4MywgODQsIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgCisgICAgODIsIDcxLCA2OSwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCAKKyAgICA4MSwgMTI4LCA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIAorICAgIDg1LCA2NSwgNzEsIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3NywgCisgICAgODAsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCAKKyAgICA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIAorICAgIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgCisgICAgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAKKyAgICA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTAsIAorICAgIDUyLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTQsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTIsIDU2LCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTIsIDE4NCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MSwgNTQsIDEyOCwgNzYsIAorICAgIDY1LCA3NSwgNDUsIDU0LCA0OSwgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OSwgMTgzLCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTQsIDQ4LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTMsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCAKKyAgICA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MCwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU2LCA1MSwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDU1LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTIsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTIsIDUyLCAxODUsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTcsIDQ4LCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTYsIDUyLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTYsIDUxLCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA1MSwgNTIsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA1MCwgNTQsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIAorICAgIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDQ4LCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA0OCwgNTcsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA0OCwgNTYsIDE3NywgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NSwgCisgICAgMTg1LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU0LCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUzLCA0OSwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNDgsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUxLCA0OCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNDgsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNDgsIDUwLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCAKKyAgICA2NSwgNzYsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDczLCA3OCwgMTk5LCA3NiwgNjUsIDIwMSwgNzYsIDY1LCA3MiwgODMsIAorICAgIDcyLCA4NSwgMTI4LCA3NiwgNjUsIDcyLCAxMjgsIDc2LCA2NSwgNzEsIDg1LCA4MywgMTI4LCA3NiwgNjUsIDcxLCAyMTMsIAorICAgIDc2LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMjEwLCA3NiwgNjUsIDcxLCA2NSwgNjYsIDEyOCwgCisgICAgNzYsIDY1LCA3MSwgNjUsIDE5NCwgNzYsIDY1LCA2OSwgODYsIDEyOCwgNzYsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY4LCAKKyAgICAyMTcsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDc2LCA2NSwgNjcsIDY1LCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4NSwgODIsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDgyLCAxMjgsIDc2LCA2NSwgNjYsIDczLCA2NSwgNzYsIDczLCA5MCwgCisgICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDc2LCA2NSwgNjYsIDY5LCA3NiwgMTI4LCAKKyAgICA3NiwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgCisgICAgMTI4LCA3NiwgNjUsIDY1LCA3NywgODUsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgNzYsIDU0LCAxMjgsIDc2LCA1MiwgMTI4LCA3NiwgNTEsIDEyOCwgNzYsIDUwLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgCisgICAgMTI4LCA3NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNzYsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDc2LCA0NSwgODMsIDcyLCAKKyAgICA2NSwgODAsIDY5LCAxOTYsIDc1LCA4OSwgODUsIDgyLCA3MywgNzMsIDEyOCwgNzUsIDg5LCA4NSwgMTI4LCA3NSwgODksIAorICAgIDc5LCAxMjgsIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4OSwgNzMsIDEyOCwgNzUsIDg5LCA2OSwgCisgICAgMTI4LCA3NSwgODksIDY1LCA4NCwgNzIsIDc5LCAyMTEsIDc1LCA4OSwgNjUsIDY1LCAxMjgsIDc1LCA4OSwgNjUsIDEyOCwgCisgICAgNzUsIDg4LCA4NywgNzMsIDEyOCwgNzUsIDg4LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY5LCAxMjgsIDc1LCAKKyAgICA4OCwgODcsIDY1LCA2NSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgMTI4LCA3NSwgODgsIDg1LCAxMjgsIDc1LCA4OCwgNzksIAorICAgIDEyOCwgNzUsIDg4LCA3MywgMTI4LCA3NSwgODgsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDY5LCAxMjgsIDc1LCA4OCwgNjUsIAorICAgIDY1LCAxMjgsIDc1LCA4OCwgNjUsIDEyOCwgNzUsIDg3LCA4NiwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIAorICAgIDc1LCA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3NywgMTI4LCA3NSwgODcsIDczLCA3MywgCisgICAgMTI4LCA3NSwgODcsIDczLCAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgNjksIDEyOCwgNzUsIDg3LCA2NiwgCisgICAgMTI4LCA3NSwgODcsIDY1LCA4OSwgMTI4LCA3NSwgODcsIDY1LCA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgNjUsIDEyOCwgCisgICAgNzUsIDg2LCA2NSwgMTI4LCA3NSwgODYsIDEyOCwgNzUsIDg1LCA4OCwgMTI4LCA3NSwgODUsIDg2LCAxMjgsIDc1LCA4NSwgCisgICAgODUsIDcyLCAxMjgsIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCAKKyAgICA4NSwgNTAsIDEyOCwgNzUsIDg1LCA4MywgNzIsIDg1LCAxNzgsIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIAorICAgIDg1LCA5MCwgNjksIDczLCA4MiwgNzksIDEyOCwgNzUsIDg1LCA4MiwgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgCisgICAgNjksIDEyOCwgNzUsIDg1LCA4MiwgMTI4LCA3NSwgODUsIDIxMCwgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3NSwgODUsIDc5LCA4MCwgMTI4LCA3NSwgODUsIDc5LCAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgCisgICAgNzksIDEyOCwgNzUsIDg1LCA3OCwgNzEsIDEyOCwgNzUsIDg1LCA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIAorICAgIDEyOCwgNzUsIDg1LCA3NiwgMTI4LCA3NSwgODUsIDIwNCwgNzUsIDg1LCA3MSwgMTI4LCA3NSwgODUsIDY5LCA4NCwgMTI4LCAKKyAgICA3NSwgODUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIDg2LCAxMjgsIDc1LCA4NSwgNjUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIAorICAgIDEyOCwgNzUsIDg1LCA1NSwgMTI4LCA3NSwgODUsIDUyLCAxMjgsIDc1LCA4NSwgMTgwLCA3NSwgODUsIDUxLCAxMjgsIDc1LCAKKyAgICA4NSwgMTc5LCA3NSwgODQsIDEyOCwgNzUsIDgzLCA4MywgODUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDg1LCAxMjgsIDc1LCAKKyAgICA4MywgODMsIDc5LCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3MywgNzMsIDEyOCwgNzUsIAorICAgIDgzLCA4MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjksIDY5LCAxMjgsIDc1LCA4MywgODMsIDY5LCAxMjgsIDc1LCA4MywgCisgICAgODMsIDY1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDc1LCAKKyAgICA4MywgODMsIDY1LCAxMjgsIDc1LCA4MywgODMsIDEyOCwgNzUsIDgzLCA3MywgMTI4LCA3NSwgODIsIDY5LCA3NywgNjUsIAorICAgIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDc5LCAKKyAgICA3OCwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIAorICAgIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgMTkzLCA3NSwgCisgICAgODAsIDg1LCAxMjgsIDc1LCA4MCwgNzksIDgxLCAxMjgsIDc1LCA4MCwgNzksIDc5LCAxMjgsIDc1LCA4MCwgNzksIDEyOCwgCisgICAgNzUsIDgwLCA3MywgMTI4LCA3NSwgODAsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDgwLCA2OSwgNjksIDEyOCwgNzUsIDgwLCAKKyAgICA2OSwgMTI4LCA3NSwgODAsIDY1LCA4MiwgNjUsIDgxLCAxMjgsIDc1LCA4MCwgNjUsIDc4LCAxMjgsIDc1LCA4MCwgNjUsIAorICAgIDcyLCAxMjgsIDc1LCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCA4NSwgODUsIDEyOCwgNzUsIAorICAgIDc5LCA4NiwgMTI4LCA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgCisgICAgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAKKyAgICAxOTUsIDc1LCA3OSwgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIAorICAgIDgwLCAxMjgsIDc1LCA3OSwgNzksIDg2LCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgCisgICAgODUsIDg1LCA4NCwgMTI4LCA3NSwgNzksIDc5LCA2NiwgMTI4LCA3NSwgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCAKKyAgICA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIAorICAgIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgCisgICAgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgNjksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCA3NSwgCisgICAgNzksIDIwMywgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCA3MiwgCisgICAgNzksIDc3LCAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAKKyAgICAxMjgsIDc1LCA3OSwgNjUsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDc1LCA3OCwgODUsIAorICAgIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDc1LCA3OCwgNzksIDY2LCA4MywgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAKKyAgICAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3NSwgNzgsIDczLCA3MCwgNjksIDEyOCwgNzUsIDc4LCA3MywgNzAsIAorICAgIDE5NywgNzUsIDc3LCAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgNzMsIDg0LCA3OSwgNzgsIDEyOCwgNzUsIDc2LCA2NSwgODMsIAorICAgIDc3LCA2NSwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDE5MywgNzUsIDc2LCA2NSwgMTI4LCA3NSwgNzYsIDEyOCwgNzUsIAorICAgIDc1LCA4NSwgMTI4LCA3NSwgNzUsIDc5LCAxMjgsIDc1LCA3NSwgNzMsIDEyOCwgNzUsIDc1LCA2OSwgNjksIDEyOCwgNzUsIAorICAgIDc1LCA2OSwgMTI4LCA3NSwgNzUsIDY1LCAxMjgsIDc1LCA3NSwgMTI4LCA3NSwgNzQsIDY5LCAxMjgsIDc1LCA3MywgODksIAorICAgIDY5LCA3OSwgNzUsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCisgICAgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODAsIDczLCA2OSwgODUsIAorICAgIDgwLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDczLCA4OSwgCisgICAgNjksIDc5LCA3NSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDIwMywgNzUsIDczLCA4OCwgCisgICAgMTI4LCA3NSwgNzMsIDg3LCA3MywgNzAsIDgyLCA4NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODcsIDEyOCwgNzUsIDczLCAKKyAgICA4NiwgMTI4LCA3NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODMsIDgzLCA3MywgNzgsIDE5OSwgNzUsIDczLCA4MywgODMsIAorICAgIDEyOCwgNzUsIDczLCA4MywgMjExLCA3NSwgNzMsIDgzLCA3MywgNzcsIDUzLCAxMjgsIDc1LCA3MywgODMsIDczLCA3NywgCisgICAgMTgxLCA3NSwgNzMsIDgzLCA3MiwgMTI4LCA3NSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzUsIDczLCA4MiwgNzksIDg3LCAKKyAgICA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzUsIAorICAgIDczLCA4MiwgNzksIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDEyOCwgNzUsIDczLCA4MiwgNzksIDEyOCwgNzUsIDczLCA4MiwgCisgICAgNzEsIDcyLCA3MywgMjE4LCA3NSwgNzMsIDgxLCAxMjgsIDc1LCA3MywgODAsIDEyOCwgNzUsIDczLCAyMDgsIDc1LCA3MywgCisgICAgNzgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc1LCA3MywgNzgsIDY4LCA2OSwgODIsIDcxLCA2NSwgODIsIDg0LCA2OSwgNzgsIAorICAgIDEyOCwgNzUsIDczLCA3NywgNzksIDc4LCA3OSwgMTI4LCA3NSwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDc1LCA3MywgCisgICAgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4NiwgNjUsIDIwNiwgCisgICAgNzUsIDczLCA2OSwgODAsIDEyOCwgNzUsIDczLCA2OSwgNjksIDc3LCAxMjgsIDc1LCA3MywgNjksIDEyOCwgNzUsIDczLCAKKyAgICA2OCwgMTI4LCA3NSwgNzMsIDE5NiwgNzUsIDczLCA2NywgNzUsIDEyOCwgNzUsIDczLCA2NiwgMTI4LCA3NSwgNzMsIDY1LCAKKyAgICA4NiwgMTI4LCA3NSwgNzMsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCAKKyAgICA3NSwgNzIsIDg1LCA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjgsIAorICAgIDY1LCA4NywgNjUsIDY4LCAyMDEsIDc1LCA3MiwgODUsIDY4LCA2NSwgNzcsIDEyOCwgNzUsIDcyLCA4NSwgNjUsIDg0LCAKKyAgICAxMjgsIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIDcyLCA3OSwgNzgsIDEyOCwgNzUsIDcyLCAKKyAgICA3OSwgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA3NCwgNzUsIDIwMSwgNzUsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIAorICAgIDIwNywgNzUsIDcyLCA3NywgMjEzLCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgNzIsIDczLCA3OCwgODksIDY1LCAxMjgsIAorICAgIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgNzIsIDIwMSwgNzUsIDcyLCA3MiwgCisgICAgNzksIDEyOCwgNzUsIDcyLCA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAKKyAgICAxMjgsIDc1LCA3MiwgNjksIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODYsIDEyOCwgNzUsIDcyLCAKKyAgICA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgNzIsIDY1LCA4MiwgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIAorICAgIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIDcyLCA2NSwgNzgsIDY4LCAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIAorICAgIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgNzIsIDY1LCA3NSwgNjUsIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgCisgICAgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjYsIDEyOCwgCisgICAgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgODksIDY3LCA2NSwgODAsIDEyOCwgNzUsIDY5LCAKKyAgICA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3NSwgNjksIDg5LCA2NiwgNzksIAorICAgIDY1LCA4MiwgMTk2LCA3NSwgNjksIDg4LCAxMjgsIDc1LCA2OSwgODYsIDEyOCwgNzUsIDY5LCA4NSwgODksIDY5LCA4NSwgCisgICAgODgsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDY5LCAKKyAgICA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODAsIDg1LCA4MSwgMTI4LCA3NSwgNjksIDg1LCA3OSwgMjEyLCA3NSwgNjksIAorICAgIDg1LCA3NywgMTI4LCA3NSwgNjksIDg1LCA3NSwgNjksIDg1LCA4NCwgNzgsIDY4LCA2NSwgMTI4LCA3NSwgNjksIDg1LCA3NSwgCisgICAgNjUsIDgxLCAxMjgsIDc1LCA2OSwgODUsIDY1LCA2OSwgODQsIDc3LCA2OSwgODUsIDc4LCAxMjgsIDc1LCA2OSwgODUsIDY1LCAKKyAgICA2OSwgODIsIDczLCAxMjgsIDc1LCA2OSwgODQsIDg0LCAyMDEsIDc1LCA2OSwgODMsIDcyLCA1MCwgMTI4LCA3NSwgNjksIAorICAgIDgyLCA2OSwgODQsIDEyOCwgNzUsIDY5LCA3OSwgODcsIDEyOCwgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDE5MywgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgMTkzLCAKKyAgICA3NSwgNjksIDc4LCA2NSwgODQsIDEyOCwgNzUsIDY5LCA3OCwgMTI4LCA3NSwgNjksIDIwNiwgNzUsIDY5LCA3NywgODAsIAorICAgIDg1LCA3NiwgMTI4LCA3NSwgNjksIDc3LCA4MCwgODUsIDIwNCwgNzUsIDY5LCA3NywgODAsIDc2LCA3MywgMTI4LCA3NSwgCisgICAgNjksIDc3LCA4MCwgNzYsIDIwMSwgNzUsIDY5LCA3NywgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc3LCAKKyAgICA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc2LCA4NiwgNzMsIDIwNiwgNzUsIDY5LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDc1LCA2OSwgNzIsIDY5LCAyMDAsIDc1LCA2OSwgNzIsIDEyOCwgNzUsIDY5LCA3MCwgODUsIDc2LCA2NSwgMTI4LCA3NSwgCisgICAgNjksIDY5LCA4NiwgMTI4LCA3NSwgNjksIDY5LCA4MywgODUsIDEyOCwgNzUsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCAKKyAgICA3NSwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA2OSwgNjYsIDEyOCwgNzUsIDY5LCA2NiwgMTI4LCA3NSwgNjksIAorICAgIDY1LCA2NSwgNjksIDEyOCwgNzUsIDY3LCA2NSwgNzYsIDEyOCwgNzUsIDY2LCAxMjgsIDc1LCA2NSwgOTAsIDY1LCA3NSwgCisgICAgMjAwLCA3NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg5LCA2NSwgMjAwLCA3NSwgNjUsIDg4LCAKKyAgICAxMjgsIDc1LCA2NSwgODcsIDg2LCAxMjgsIDc1LCA2NSwgODcsIDczLCAxMjgsIDc1LCA2NSwgODcsIDY2LCAxMjgsIDc1LCAKKyAgICA2NSwgODYsIDg5LCA3NSwgNjUsIDEyOCwgNzUsIDY1LCA4NiwgMTI4LCA3NSwgNjUsIDg1LCA4NiwgMTI4LCA3NSwgNjUsIAorICAgIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgMjA2LCA3NSwgNjUsIDg1LCA2NiwgMTI4LCA3NSwgNjUsIDg0LCA3OSwgCisgICAgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNzMsIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDY1LCA3NSwgMTkzLCAKKyAgICA3NSwgNjUsIDg0LCA2NSwgODYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA2NSwgODQsIDY1LCA4NiwgMTkzLCA3NSwgNjUsIAorICAgIDg0LCA2NSwgNzUsIDY1LCA3OCwgNjUsIDQ1LCA3MiwgNzMsIDgyLCA2NSwgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDgzLCAKKyAgICA4MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDIwNiwgNzUsIDY1LCA4MywgODIsIAorICAgIDY1LCAxMjgsIDc1LCA2NSwgODMsIDgyLCAxOTMsIDc1LCA2NSwgODMsIDc1LCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MywgCisgICAgNzUsIDY1LCAyMDQsIDc1LCA2NSwgODMsIDcyLCA3NywgNzMsIDgyLCAyMDEsIDc1LCA2NSwgODIsIDgzLCA3MiwgNjUsIDc4LCAKKyAgICA2NSwgMTI4LCA3NSwgNjUsIDgyLCA3OSwgODIsIDczLCA3MywgMTI4LCA3NSwgNjUsIDgyLCAyMDcsIDc1LCA2NSwgODIsIAorICAgIDY5LCAyMDYsIDc1LCA2NSwgODIsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODIsIDY1LCA3OCwgMTI4LCA3NSwgCisgICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAorICAgIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDg5LCAKKyAgICA2OSwgNzksIDg1LCA3OCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgCisgICAgODUsIDc4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA2NSwgODAsIDgwLCAKKyAgICAxOTMsIDc1LCA2NSwgODAsIDc5LCAxMjgsIDc1LCA2NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDY1LCA3NiwgMTI4LCAKKyAgICA3NSwgNjUsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDIwOCwgNzUsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA3NSwgNjUsIAorICAgIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCA3OCwgCisgICAgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIDc3LCAKKyAgICAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgNzUsIAorICAgIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDg2LCAxMjgsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NSwgNjUsIAorICAgIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgNjYsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgNzUsIAorICAgIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgNzUsIAorICAgIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAxNzksIAorICAgIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAxMjgsIAorICAgIDc1LCA2NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3NSwgCisgICAgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgNjUsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDEyOCwgNzUsIDY1LCAKKyAgICA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIDQ4LCAKKyAgICA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgNTEsIAorICAgIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgODUsIAorICAgIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgODksIAorICAgIDEyOCwgNzQsIDg1LCA3MSwgNzEsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDc0LCA4NSwgNjksIDg1LCA3MywgMTI4LCA3NCwgCisgICAgODUsIDY4LCA4NSwgNzYsIDEyOCwgNzQsIDg1LCA2OCwgNzEsIDY5LCAxMjgsIDc0LCA4NSwgNjgsIDY5LCA3OSwgNDUsIDgzLCAKKyAgICA4MCwgNjUsIDc4LCA3MywgODMsIDIwMCwgNzQsIDc5LCA4OSwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc0LCA3OSwgODksIAorICAgIDc5LCA4NSwgMjExLCA3NCwgNzksIDg5LCAxMjgsIDc0LCA3OSwgODYsIDY5LCAxMjgsIDc0LCA3OSwgMjEyLCA3NCwgNzksIAorICAgIDc4LCA3MSwgMTI4LCA3NCwgNzksIDc4LCAxOTMsIDc0LCA3OSwgNzUsIDY5LCA4MiwgMTI4LCA3NCwgNzksIDczLCA3OCwgCisgICAgODQsIDgzLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDEyOCwgNzQsIDc5LCAKKyAgICA2NSwgMTI4LCA3NCwgNzQsIDg5LCA4OCwgMTI4LCA3NCwgNzQsIDg5LCA4NCwgMTI4LCA3NCwgNzQsIDg5LCA4MCwgMTI4LCAKKyAgICA3NCwgNzQsIDg5LCAxMjgsIDc0LCA3NCwgODUsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA3NCwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgMTI4LCA3NCwgNzQsIDg1LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCAxMjgsIDc0LCA3NCwgODUsIDEyOCwgCisgICAgNzQsIDc0LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA3OSwgODQsIDEyOCwgNzQsIDc0LCA3OSwgODAsIDEyOCwgNzQsIDc0LCAKKyAgICA3OSwgMTI4LCA3NCwgNzQsIDczLCA4OCwgMTI4LCA3NCwgNzQsIDczLCA4NCwgMTI4LCA3NCwgNzQsIDczLCA4MCwgMTI4LCAKKyAgICA3NCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3NCwgNzQsIDczLCA2OSwgMTI4LCA3NCwgNzQsIDczLCAxMjgsIDc0LCA3NCwgNjksIDY5LCAxMjgsIDc0LCA3NCwgCisgICAgNjksIDEyOCwgNzQsIDc0LCA2NSwgMTI4LCA3NCwgNzMsIDc2LCAxMjgsIDc0LCA3MywgNzMsIDc3LCAxMjgsIDc0LCA3MywgCisgICAgNzMsIDEyOCwgNzQsIDczLCA3MiwgODYsIDY1LCA3NywgODUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc0LCA3MywgNjUsIAorICAgIDEyOCwgNzQsIDcyLCA3OSwgODgsIDEyOCwgNzQsIDcyLCA3OSwgMTI4LCA3NCwgNzIsIDY5LCA3MiwgMTI4LCA3NCwgNzIsIAorICAgIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc3LCAxMjgsIDc0LCA3MiwgCisgICAgNjUsIDY1LCAxMjgsIDc0LCA3MiwgNjUsIDEyOCwgNzQsIDY5LCA4NSwgMTI4LCA3NCwgNjksIDgyLCA4NSwgODMsIDY1LCAKKyAgICA3NiwgNjksIDc3LCAxMjgsIDc0LCA2OSwgODIsIDY1LCAyMDYsIDc0LCA2OSwgODIsIDY1LCAxMjgsIDc0LCA2OSwgODIsIAorICAgIDEyOCwgNzQsIDY5LCA3MiwgMTI4LCA3NCwgNjksIDIwMCwgNzQsIDY5LCA3MSwgNzksIDcxLCA2NSwgNzgsIDEyOCwgNzQsIAorICAgIDY5LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA2NSwgNzgsIDgzLCAxMjgsIDc0LCA2NSwgODksIDc4LCAxMjgsIDc0LCA2NSwgCisgICAgODksIDczLCA3OCwgMTI4LCA3NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NCwgNjUsIDg3LCAxMjgsIDc0LCAKKyAgICA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIAorICAgIDg1LCAxMjgsIDc0LCA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCA4MCwgCisgICAgNjUsIDc4LCAxMjgsIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDc0LCA2NSwgNzYsIDc2LCA2NSwgNzQsIDY1LCAKKyAgICA3NiwgNjUsIDc2LCA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIDY1LCA3MywgMjA2LCA3NCwgNjUsIDczLCAxMjgsIAorICAgIDc0LCA2NSwgNzIsIDEyOCwgNzQsIDY1LCA2OCwgNjksIDEyOCwgNzQsIDY1LCA2NywgNzUsIDgzLCAxMjgsIDc0LCA2NSwgCisgICAgNjcsIDc1LCA0NSwgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCAKKyAgICA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgCisgICAgMTI4LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCAxOTMsIDczLCA5MCwgNzIsIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCAKKyAgICA2NSwgODksIDE5MywgNzMsIDg5LCA2OSwgNzUsIDEyOCwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIAorICAgIDc0LCA2NSwgMTI4LCA3MywgODQsIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA4NCwgCisgICAgNjksIDc3LCAxMjgsIDczLCA4MywgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgODMsIDY3LCA2OSwgNzYsIDY5LCAKKyAgICAyMTEsIDczLCA4MywgNzksIDc4LCAxMjgsIDczLCA4MywgNzksIDIwNiwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIAorICAgIDEyOCwgNzMsIDgzLCA3NiwgNjUsIDc4LCA2OCwgMTI4LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAKKyAgICAxMjgsIDczLCA4MywgNjUsIDc1LCA3MywgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIAorICAgIDgyLCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgNzMsIDgyLCA3OSwgNzgsIDQ1LCA2NywgNzksIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDgyLCAKKyAgICA2NiwgMTI4LCA3MywgNzksIDg0LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIAorICAgIDczLCA3OSwgODQsIDY1LCAxMjgsIDczLCA3OSwgODQsIDE5MywgNzMsIDc5LCA4MiwgMTI4LCA3MywgNzksIDY4LCA3MiwgCisgICAgNjUsIDY4LCA3MiwgMTI4LCA3MywgNzgsIDg2LCA3MywgODMsIDczLCA2NiwgNzYsIDE5NywgNzMsIDc4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNjksIDY4LCAxMjgsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCAxOTYsIDczLCA3OCwgODYsIDY5LCA4MiwgODMsIAorICAgIDE5NywgNzMsIDc4LCA4NCwgODIsIDc5LCA2OCwgODUsIDY3LCA2OSwgODIsIDEyOCwgNzMsIDc4LCA4NCwgNzMsIDEyOCwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgMTk1LCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCAKKyAgICA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCAKKyAgICAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODAsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgyLCA3NiwgNzksIDY3LCA3NSwgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNjUsIDY3LCA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDczLCA3OSwgMjEwLCAKKyAgICA3MywgNzgsIDg0LCA2OSwgODIsIDY5LCA4MywgMjEyLCA3MywgNzgsIDg0LCA2OSwgODIsIDY3LCA2NSwgNzYsIDY1LCA4NCwgCisgICAgNjksIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCAKKyAgICA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA3NiwgMTI4LCA3MywgNzgsIAorICAgIDg0LCA2OSwgNzEsIDgyLCA2NSwgMjA0LCA3MywgNzgsIDgzLCA4NSwgNzYsIDY1LCAyMTAsIDczLCA3OCwgODMsIDg0LCA4MiwgCisgICAgODUsIDc3LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA3MywgNzgsIDgzLCA3MywgNjgsIDY5LCAxMjgsIDczLCA3OCwgODMsIDczLCAKKyAgICA2OCwgMTk3LCA3MywgNzgsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4MywgNjksIDY3LCA4NCwgCisgICAgMTI4LCA3MywgNzgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDczLCA3OCwgODAsIDg1LCAKKyAgICAyMTIsIDczLCA3OCwgNzgsIDc5LCA2NywgNjksIDc4LCA2NywgNjksIDEyOCwgNzMsIDc4LCA3OCwgNzgsIDEyOCwgNzMsIAorICAgIDc4LCA3OCwgNjksIDgyLCAxMjgsIDczLCA3OCwgNzgsIDY5LCAyMTAsIDczLCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3MywgCisgICAgNzgsIDcxLCA4NSwgMTI4LCA3MywgNzgsIDczLCAxMjgsIDczLCA3OCwgNzIsIDczLCA2NiwgNzMsIDIxMiwgNzMsIDc4LCAKKyAgICA3MiwgNjksIDgyLCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA3MywgNzgsIDcxLCA4NywgNjUsIAorICAgIDkwLCAxMjgsIDczLCA3OCwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgNzAsIDc2LCA4NSwgCisgICAgNjksIDc4LCA2NywgNjksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIDg5LCAxMjgsIDczLCA3OCwgNzAsIDczLCAKKyAgICA3OCwgNzMsIDg0LCAyMTcsIDczLCA3OCwgNjgsIDg1LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc4LCA2OCwgNzMsIAorICAgIDgyLCA2OSwgNjcsIDIxMiwgNzMsIDc4LCA2OCwgNzMsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgNjgsIDczLCA2NywgCisgICAgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2NSwgODQsIDc5LCAyMTAsIDczLCA3OCwgNjgsIDczLCAKKyAgICAxOTUsIDczLCA3OCwgNjgsIDczLCA2NSwgMjA2LCA3MywgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzMsIDc4LCA2OCwgNjksIAorICAgIDgwLCA2OSwgNzgsIDY4LCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA2NywgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MywgCisgICAgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDIxMSwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDczLCAKKyAgICA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDE5NywgNzMsIAorICAgIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzYsIDg1LCA2OCwgNzMsIDc4LCAxOTksIDczLCA3OCwgCisgICAgNjcsIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIDgwLCAxMjgsIDczLCA3OCwgNDUsIDY1LCAKKyAgICA3NiwgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIAorICAgIDY5LCA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDY1LCAxMjgsIDczLCA3NywgCisgICAgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgMTI4LCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAKKyAgICAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCAKKyAgICA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgCisgICAgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCAKKyAgICA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCAKKyAgICA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIAorICAgIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgCisgICAgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgCisgICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCAKKyAgICA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgCisgICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCAKKyAgICA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgCisgICAgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIAorICAgIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTcsIDQ5LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY3LCA3OSwgNzgsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDg1LCAKKyAgICAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIAorICAgIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCAKKyAgICA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIAorICAgIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgCisgICAgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCAKKyAgICA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIAorICAgIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCAKKyAgICA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIAorICAgIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgCisgICAgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgCisgICAgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAKKyAgICAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCAKKyAgICA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCAKKyAgICA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIAorICAgIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIAorICAgIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OSwgNzEsIDczLCA2OSwgNzMsIDY1LCAKKyAgICAxMjgsIDcyLCA4OCwgODcsIDcxLCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIAorICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIAorICAgIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgCisgICAgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAKKyAgICAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIAorICAgIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIAorICAgIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIAorICAgIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg3LCA2NSwgCisgICAgNzIsIDEyOCwgNzIsIDg1LCA4NiwgNjUsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgODMsIDcyLCAKKyAgICAxMjgsIDcyLCA4NSwgODIsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIAorICAgIDY5LCA2OCwgODMsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDIxMSwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgCisgICAgNjgsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgMTk2LCA3MiwgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDIwOCwgCisgICAgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCAKKyAgICA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgNzIsIDg1LCA3MSwgNzEsIDczLCA3OCwgMTk5LCA3MiwgODUsIDY2LCA1MCwgCisgICAgMTI4LCA3MiwgODUsIDY2LCAxNzgsIDcyLCA4NSwgNjYsIDEyOCwgNzIsIDg1LCA2NSwgODIsIDY1LCA2OCwgNjgsIDc5LCAKKyAgICAxMjgsIDcyLCA4NSwgNjUsIDc4LCAxMjgsIDcyLCA4NCwgODMsIDEyOCwgNzIsIDg0LCA3NCwgMTI4LCA3MiwgODIsIDg5LCAKKyAgICA4NiwgNzgsIDczLCAxOTMsIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCA4MCwgNjUsIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCAKKyAgICA3OSwgODUsIDgzLCAxOTcsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIAorICAgIDcxLCA3NiwgNjUsIDgzLCAyMTEsIDcyLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgCisgICAgNjksIDc2LCAxMjgsIDcyLCA3OSwgODQsIDY1LCAxMjgsIDcyLCA3OSwgODMsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA4MywgNjksIDEyOCwgNzIsIDc5LCA4MiwgODMsIDE5NywgNzIsIDc5LCA4MiwgODIsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCisgICAgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIAorICAgIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCAKKyAgICA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCisgICAgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIAorICAgIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCAKKyAgICA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAyMDQsIDcyLCA3OSwgODIsIDczLCAxMjgsIDcyLCA3OSwgODIsIDE5MywgNzIsIAorICAgIDc5LCA3OSwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODIsIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgwLCAxMjgsIDcyLCA3OSwgCisgICAgNzksIDc4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgNjgsIDEyOCwgNzIsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDcyLCAKKyAgICA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIDc4LCA2OSwgMjE3LCA3MiwgNzksIDc3LCA3OSwgODQsIAorICAgIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCAxOTUsIDcyLCA3OSwgCisgICAgNzYsIDc5LCAxMjgsIDcyLCA3OSwgNzYsIDc2LCA3OSwgMjE1LCA3MiwgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCAKKyAgICA2OCwgNzMsIDc4LCAxOTksIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIAorICAgIDc1LCA2NSwgMTI4LCA3MiwgNzksIDY3LCA3NSwgNjksIDIxNywgNzIsIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgCisgICAgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDg1LCAKKyAgICA2NiwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCA4NCwgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCAKKyAgICA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCA3MiwgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgCisgICAgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgNjksIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAKKyAgICAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgNzIsIDc4LCA2NSwgODUsIDEyOCwgNzIsIDc4LCAKKyAgICA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCAKKyAgICA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIAorICAgIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCAKKyAgICA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIAorICAgIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIAorICAgIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgCisgICAgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgCisgICAgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCAKKyAgICA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIAorICAgIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIAorICAgIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAKKyAgICAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCAKKyAgICA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIAorICAgIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIAorICAgIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgCisgICAgODgsIDEyOCwgNzIsIDc2LCA2NSwgODUsIDEyOCwgNzIsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgCisgICAgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzYsIDEyOCwgNzIsIDc1LCAxMjgsIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgCisgICAgODksIDc5LCAxMjgsIDcyLCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIAorICAgIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAxMjgsIDcyLCA3MywgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNzIsIDczLCA3OCwgCisgICAgNzEsIDY5LCAxOTYsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAKKyAgICAxOTYsIDcyLCA3MywgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIAorICAgIDcxLCA3MiwgNDUsIDc2LCA3OSwgMjE1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgCisgICAgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIAorICAgIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAKKyAgICAxOTksIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIAorICAgIDY3LCA4NSwgODMsIDEyOCwgNzIsIDczLCA0NSwgODIsIDY5LCA4MywgMTI4LCA3MiwgNzIsIDg3LCA2NSwgMTI4LCA3MiwgCisgICAgNzIsIDg1LCAxMjgsIDcyLCA3MiwgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNzIsIDcyLCA2OSwgMTI4LCA3MiwgCisgICAgNzIsIDY1LCA2NSwgMTI4LCA3MiwgNzEsIDEyOCwgNzIsIDY5LCA4OSwgODQsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCAKKyAgICA3OSwgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIAogICAgIDEyOCwgNzIsIDY5LCA4MiwgODUsIDg0LCA4NSwgMTI4LCA3MiwgNjksIDgyLCA4NSwgMTI4LCA3MiwgNjksIDgyLCA3NywgCiAgICAgNzMsIDg0LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDczLCA3OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCAKICAgICA3NywgNjksIDgzLCAxMjgsIDcyLCA2OSwgODIsIDY5LCAxMjgsIDcyLCA2OSwgODIsIDY2LCAxMjgsIDcyLCA2OSwgODIsIApAQCAtMzc1MCw0MjkgKzM3NzksNDM4IEBACiAgICAgNDUsIDY5LCA4NiwgNzMsIDIwNCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzIsIDY5LCAKICAgICA2NSwgNjgsIDgzLCA4NCwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjUsIDY4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzIsIAogICAgIDY5LCA2NSwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNzIsIDY5LCA2NSwgNjgsIDQ1LCA2NiwgNjUsIDc4LCA2OCwgNjUsIDcxLCAKLSAgICA2OSwgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIDY1LCA4MywgMTkzLCA3MiwgNjYsIDY1LCA4MywgCi0gICAgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgNjUsIDg3LCA3NCwgMTI4LCA3MiwgNjUsIDg2LCAKLSAgICA2OSwgMTI4LCA3MiwgNjUsIDg1LCA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzIsIDY1LCAyMTMsIAotICAgIDcyLCA2NSwgODQsIDgyLCA2NSwgMjA2LCA3MiwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgNzIsIDY1LCA4NCwgNjksIDEyOCwgCi0gICAgNzIsIDY1LCA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgNjUsIDE5OCwgNzIsIDY1LCA4MywgNjksIAotICAgIDIxMCwgNzIsIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgNzgsIDEyOCwgCi0gICAgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNjcsIDEyOCwgNzIsIDY1LCAKLSAgICA4MiwgNzUsIDc2LCA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcyLCA2NSwgODIsIAotICAgIDE5NiwgNzIsIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCA3OSwgMjA3LCA3MiwgNjUsIDc4LCA3MSwgCi0gICAgOTAsIDcyLCA3OSwgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDIxMSwgNzIsIDY1LCAKLSAgICA3OCwgNjgsIDc2LCA2OSwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNjYsIAotICAgIDY1LCA3MSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDc5LCA4NiwgNjUsIDc2LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgCi0gICAgNzksIDg2LCA2NSwgMjA0LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAKLSAgICA0NSwgNzIsIDc5LCA3OSwgMjAzLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNjUsIAotICAgIDc4LCA2OCwgNDUsIDcyLCA3MywgNzgsIDcxLCAxOTcsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDc2LCA2NSwgODQsIDEyOCwgCi0gICAgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzYsIDY1LCAyMTIsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgODQsIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIDY3LCA4NSwgNjksIDEyOCwgNzIsIDY1LCA3OCwgCi0gICAgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIDY3LCA4NSwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODAsIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDIwOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCA4NywgCi0gICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDIxNSwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIDgyLCAKLSAgICA2NywgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzgsIAotICAgIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDE5NywgCi0gICAgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgNDUsIDY1LCA3NSwgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAKLSAgICA2NSwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgMTkzLCA3MiwgNjUsIDc3LCA4MywgODQsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIAotICAgIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIDY2LCA4NSwgODIsIDcxLCA2OSwgCi0gICAgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgNzYsIDc5LCAxMjgsIDcyLCA2NSwgNzYsIDcwLCAKLSAgICA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIAotICAgIDY4LCAxMjgsIDcyLCA2NSwgNzYsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgCi0gICAgNjUsIDczLCAyMTEsIDcyLCA2NSwgNzMsIDgyLCA2NywgODUsIDg0LCAxMjgsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDcyLCAKLSAgICA2NSwgNzEsIDc2LCA2NSwgMjE4LCA3MiwgNjUsIDcxLCA3NiwgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCA2NSwgCi0gICAgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCAxMjgsIDcyLCA2NSwgNjksIDcxLCAyMDQsIDcyLCA2NSwgNjUsIDgyLCAKLSAgICA4NSwgMTI4LCA3MiwgNjUsIDY1LCA3NywgMTI4LCA3MiwgNjUsIDE5MywgNzIsIDY1LCA0NSwgNzIsIDY1LCAxMjgsIDcyLCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDcyLCA0OCwgNDgsIDU1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MiwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA3MiwgNDgsIDQ4LCA1MywgMTI4LCA3MiwgNDgsIDQ4LCA1MiwgMTI4LCA3MiwgNDgsIDQ4LCA1MSwgCi0gICAgMTI4LCA3MiwgNDgsIDQ4LCA1MCwgMTI4LCA3MiwgNDgsIDQ4LCA0OSwgMTI4LCA3MiwgNDUsIDg0LCA4OSwgODAsIDE5NywgCi0gICAgNzEsIDg5LCA4NSwgMTI4LCA3MSwgODksIDc5LCA3OCwgMTI4LCA3MSwgODksIDc5LCAxMjgsIDcxLCA4OSwgNzMsIDEyOCwgCi0gICAgNzEsIDg5LCA3MCwgMjEzLCA3MSwgODksIDY5LCA2OSwgMTI4LCA3MSwgODksIDY1LCA4MywgMTI4LCA3MSwgODksIDY1LCAKLSAgICA2NSwgMTI4LCA3MSwgODksIDY1LCAxMjgsIDcxLCA4OSwgMTI4LCA3MSwgODcsIDg1LCAxMjgsIDcxLCA4NywgNzMsIDEyOCwgCi0gICAgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgODcsIDY1LCAKLSAgICAxMjgsIDcxLCA4NiwgNjUsIDc4LCA3MSwgMTI4LCA3MSwgODYsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCAKLSAgICA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgNzIsIDIwMSwgNzEsIDg1LCA4MiwgNjUsIAotICAgIDc3LCA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA1NSwgMTI4LCA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgCi0gICAgODUsIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIDc2LCAxMjgsIDcxLCA4NSwgNzQsIDY1LCA4MiwgNjUsIDg0LCAKLSAgICAyMDEsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIDg1LCAxOTksIDcxLCA4NSwgNjksIDczLCAxMjgsIDcxLCAKLSAgICA4NSwgNjksIDcyLCAxMjgsIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgMTI4LCA3MSwgODUsIDE5NiwgNzEsIDg1LCAKLSAgICA2NSwgODIsIDY4LCA4MywgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCA2OCwgNzgsIDY5LCA4MywgCi0gICAgODMsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDEyOCwgNzEsIDg1LCAKLSAgICA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIDcxLCA4NCwgNjksIDIxMCwgNzEsIDgzLCAKLSAgICA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCAKLSAgICA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgNzIsIDczLCA4MywgNzcsIDY1LCA4NCwgCi0gICAgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA3MywgNzcsIDY1LCA2NywgNzMsIDc4LCAKLSAgICAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgMjA2LCA3MSwgODIsIDY5LCA2OSwgMjA2LCA3MSwgODIsIAotICAgIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCAKLSAgICA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDcxLCA4MiwgNjksIAotICAgIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIDIxMiwgNzEsIDgyLCA2NSwgODYsIDY5LCA4OSwgNjUsIDgyLCAKLSAgICAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDgyLCA2NSwgODYsIAotICAgIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCAKLSAgICAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjUsIAotICAgIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgzLCAyMDgsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNjksIDc3LCAxOTcsIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA2OSwgODMsIDEyOCwgNzEsIDgyLCA2NSwgNzgsIDg0LCA3MiwgMTkzLCA3MSwgODIsIDY1LCA3NywgNzcsIAotICAgIDE5MywgNzEsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgNzYsIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCAKLSAgICAxOTcsIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIDc1LCA3OSwgMjA2LCA3MSwgNzksIAotICAgIDgyLCA4NCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgCi0gICAgODMsIDg5LCA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCAKLSAgICA4MiwgNzEsIDczLCAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIAotICAgIDEyOCwgNzEsIDc5LCA3NiwgNzAsIDY5LCA4MiwgMTI4LCA3MSwgNzksIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIAotICAgIDcxLCA3OSwgNzMsIDc4LCAxOTksIDcxLCA3OSwgNjYsIDc2LCA3MywgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgCi0gICAgNzEsIDc5LCA2NSwgMjA0LCA3MSwgNzksIDY1LCAxMjgsIDcxLCA3OCwgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCAKLSAgICA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDcxLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODQsIAotICAgIDg0LCA2NSwgMjA0LCA3MSwgNzYsIDc5LCA2NiwgMTk3LCA3MSwgNzYsIDczLCA4MywgODMsIDY1LCA3OCwgNjgsIDIwNywgCi0gICAgNzEsIDc2LCA2OSwgNzMsIDY3LCAyMDAsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCAxMjgsIDcxLCA3NiwgNjUsIAotICAgIDEyOCwgNzEsIDc0LCA2OSwgMTI4LCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MywgODQsIDEyOCwgNzEsIDczLCA4MywgNzIsIAotICAgIDEyOCwgNzEsIDczLCA4MywgMjAwLCA3MSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzEsIDczLCA4MiwgODUsIDY4LCA2NSwgCi0gICAgNjUsIDEyOCwgNzEsIDczLCA4MiwgNzYsIDIxMSwgNzEsIDczLCA4MiwgNzYsIDEyOCwgNzEsIDczLCA4MiwgNTEsIDEyOCwgCi0gICAgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIDgyLCA1MCwgMTI4LCA3MSwgNzMsIDgyLCAxNzgsIDcxLCA3MywgODAsIDEyOCwgCi0gICAgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIDcxLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzMsIDc3LCA2OSwgMjA0LCAKLSAgICA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNzEsIDY1LCAxMjgsIDcxLCA3MywgNzEsIDEyOCwgNzEsIDczLCA2OSwgODQsIAotICAgIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCA3OSwgODUsIDIxMSwgNzEsIDczLCA2NiwgCi0gICAgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCA5MCwgMTI4LCA3MSwgNzIsIDg3LCA2NSwgCi0gICAgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgMTkzLCA3MSwgNzIsIDg1LCAKLSAgICAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgMTI4LCA3MSwgNzIsIDc5LCAxMjgsIDcxLCAKLSAgICA3MiwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDcyLCA3MywgMTI4LCA3MSwgNzIsIDcyLCA2NSwgMTI4LCA3MSwgNzIsIAotICAgIDY5LCA4OSwgODMsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3OCwgMTI4LCA3MSwgCi0gICAgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIAotICAgIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgCi0gICAgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCA2OSwgMTI4LCAKLSAgICA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgODIsIAotICAgIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3NywgCi0gICAgNzcsIDY1LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCA4NSwgMTI4LCAKLSAgICA3MSwgNzIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDIwNiwgNzEsIDcyLCA2NSwgNjgsIDEyOCwgNzEsIAotICAgIDcyLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIDEyOCwgCi0gICAgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgMTI4LCAKLSAgICA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgNzEsIDg1LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgNzEsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgCi0gICAgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIDcxLCAKLSAgICA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgODQsIDEyOCwgNzEsIDcxLCA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgODgsIAotICAgIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgNzEsIDcxLCA3MywgNjksIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCA3MSwgNzEsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCA3MSwgCi0gICAgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDY1LCA4OCwgMTI4LCA3MSwgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNjksIDg0LCAKLSAgICAxOTMsIDcxLCA2OSwgODMsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgNjksIAotICAgIDgzLCA3MiwgODQsIDczLCA3OCwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCA1MCwgCi0gICAgMTI4LCA3MSwgNjksIDgyLCA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgMjA2LCAKLSAgICA3MSwgNjksIDgyLCA2OSwgODMsIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCA3NywgNjksIAotICAgIDg0LCA4MiwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA3MSwgCi0gICAgNjksIDc4LCA4NCwgNzYsIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCA2OSwgNzgsIDczLCAKLSAgICA3NSwgMjAxLCA3MSwgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIDEyOCwgNzEsIAotICAgIDY5LCA3NywgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OSwgNzcsIDEyOCwgCi0gICAgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgMTI4LCA3MSwgNjksIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCAKLSAgICA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgODIsIDEyOCwgNzEsIDY5LCA2NSwgMjEwLCA3MSwgNjksIDUwLCA1MCwgMTI4LCAKLSAgICA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCA3MSwgMTI4LCA3MSwgNjcsIDY1LCAyMDYsIDcxLCA2NiwgNzksIAotICAgIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNjYsIDY5LCA4NCwgCi0gICAgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIDY2LCA2NSwgNzUsIDg1LCA4MiwgODUsIDc4LCA2OSwgNzgsIAotICAgIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgODUsIDc1LCA3MywgODQsIDg0LCA2NSwgMTI4LCA3MSwgCi0gICAgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAxMjgsIDcxLCA2NSwgODUsIDc4LCA4NCwgNzYsIDY5LCAKLSAgICA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIAotICAgIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgNjUsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA2NSwgCi0gICAgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNzcsIDY5LCAKLSAgICA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA1MSwgMTI4LCA3MSwgNjUsIAotICAgIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgNzgsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA3MSwgCi0gICAgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCA2NSwgNzgsIDUwLCAxMjgsIDcxLCA2NSwgNzgsIDE3OCwgCi0gICAgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgMTI4LCAKLSAgICA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIDcxLCA2NSwgNzcsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIAotICAgIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgNzEsIDY1LCA3MSwgMTI4LCA3MSwgNjUsIDcwLCAxMjgsIAotICAgIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCA2NSwgCi0gICAgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIDcxLCA2NSwgMTk2LCA3MSwgNjUsIDY2LCA2NSwgMTI4LCA3MSwgCi0gICAgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MSwgNjUsIDE3OCwgNzEsIDQ4LCA1MywgNTIsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgNTAsIDEyOCwgNzEsIDQ4LCA1MywgNDksIDEyOCwgNzEsIDQ4LCAKLSAgICA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgNzEsIDQ4LCA1MiwgNTYsIDEyOCwgNzEsIDQ4LCA1MiwgNTUsIAotICAgIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAxMjgsIAotICAgIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgMTI4LCA3MSwgCi0gICAgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgMTI4LCA3MSwgNDgsIDUyLCA0OCwgMTI4LCA3MSwgNDgsIDUxLCAKLSAgICA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIAotICAgIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCAxMjgsIDcxLCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIDUxLCAxMjgsIDcxLCA0OCwgNTEsIDUwLCAxMjgsIDcxLCA0OCwgCi0gICAgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIDcxLCA0OCwgNTAsIDU3LCAxMjgsIDcxLCA0OCwgNTAsIDU2LCAKLSAgICAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgMTI4LCAKLSAgICA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCA1MiwgMTI4LCA3MSwgNDgsIDUwLCA1MSwgMTI4LCA3MSwgNDgsIAotICAgIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgCi0gICAgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIDQ4LCA0OSwgNTYsIDEyOCwgNzEsIDQ4LCA0OSwgNTUsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgNTMsIDEyOCwgNzEsIDQ4LCA0OSwgNTIsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDcxLCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCA0OCwgNDgsIDU3LCAxMjgsIDcxLCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCAxMjgsIDcxLCA0OCwgNDgsIDUzLCAxMjgsIDcxLCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAxMjgsIDcxLCA0OCwgNDgsIDUwLCAxMjgsIDcxLCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCA4NCwgMTI4LCA3MCwgODksIDgwLCAxMjgsIDcwLCA4OSwgNjUsIAotICAgIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCA2OSwgMTI4LCA3MCwgODcsIDY5LCAxMjgsIDcwLCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg2LCA4MywgNTEsIDEyOCwgNzAsIDg2LCA4MywgNTAsIDEyOCwgNzAsIAotICAgIDg2LCA4MywgNDksIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCA3MCwgODUsIDg0LCAxMjgsIDcwLCA4NSwgODMsIDY5LCAxMjgsIAotICAgIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIDEyOCwgNzAsIDg1LCA4MCwgMTI4LCA3MCwgODUsIDc4LCA2OSwgCi0gICAgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDcwLCA4NSwgNzYsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIAotICAgIDcwLCA4NSwgNzQsIDczLCAxMjgsIDcwLCA4NSwgNjksIDg0LCAxMjgsIDcwLCA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgCi0gICAgMTI4LCA3MCwgODUsIDY1LCAxMjgsIDcwLCA4NCwgNzIsIDc5LCA4MiwgMTkzLCA3MCwgODMsIDczLCAxMjgsIDcwLCA4MiwgCi0gICAgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCAKLSAgICA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDIwNiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIAotICAgIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA3OCwgCi0gICAgMjEyLCA3MCwgODIsIDc5LCAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgCi0gICAgODQsIDg1LCAxMjgsIDcwLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCAKLSAgICA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIAotICAgIDgyLCA2OSwgNzgsIDY3LCAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgCi0gICAgNzgsIDc1LCAyMTEsIDcwLCA4MiwgNjUsIDc4LCAxOTUsIDcwLCA4MiwgNjUsIDc3LCA2OSwgODMsIDEyOCwgNzAsIDgyLCAKLSAgICA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDc3LCAxOTcsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgCi0gICAgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgCi0gICAgODIsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCAKLSAgICA3OSwgODUsIDgyLCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgCi0gICAgNDUsIDY5LCAyMDUsIDcwLCA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCAKLSAgICA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3MCwgNzksIAotICAgIDgzLCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA3OSwgCi0gICAgODIsIDg3LCA2NSwgODIsIDE5NiwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODIsIDg0LCAyMTcsIDcwLCAKLSAgICA3OSwgODIsIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA3NywgNjUsIDIxMiwgNzAsIDc5LCA4MiwgNzUsIDY5LCAxOTYsIDcwLCA3OSwgCi0gICAgODIsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDcwLCA3OSwgODIsIDY3LCA2OSwgODMsIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAKLSAgICAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgzLCA4NCwgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIAotICAgIDc5LCA4NCwgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA3MCwgNzksIDc5LCA4NCwgNzgsIDc5LCA4NCwgMTk3LCA3MCwgCi0gICAgNzksIDc5LCA4NCwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDEyOCwgNzAsIDc5LCA3OSwgNzYsIAotICAgIDEyOCwgNzAsIDc5LCA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIDc4LCAyMTIsIDcwLCA3OSwgNzgsIAotICAgIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgNzcsIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDg5LCAxMjgsIDcwLCA3OSwgCi0gICAgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCA4MiwgMTI4LCA3MCwgNzksIDc2LCAKLSAgICA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCA3OSwgNzEsIDEyOCwgNzAsIDIwNywgNzAsIDc3LCAKLSAgICAxMjgsIDcwLCA3NiwgODksIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg5LCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIAotICAgIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgCi0gICAgODQsIDY5LCAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCAKLSAgICA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCA4MywgMTI4LCA3MCwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzAsIDc2LCA3OSwgODUsIAotICAgIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgCi0gICAgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCA4MiwgMTI4LCA3MCwgNzYsIDc5LCAKLSAgICA3OSwgMjEwLCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3NiwgNzMsIAotICAgIDY3LCAyMDMsIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgCi0gICAgNjksIDg4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNzksIDc4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCAKLSAgICA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIAotICAgIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4MywgNzIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDgzLCAKLSAgICAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MiwgMTI4LCA3MCwgNzYsIAotICAgIDY1LCA3MSwgNDUsIDUxLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTAsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA0OSwgCi0gICAgMTI4LCA3MCwgNzYsIDY1LCA3MSwgMTI4LCA3MCwgNzYsIDY1LCAxOTksIDcwLCA3NiwgNjUsIDEyOCwgNzAsIDc2LCAxMjgsIAotICAgIDcwLCA3MywgODgsIDY5LCA2OCwgNDUsIDcwLCA3OSwgODIsIDIwNSwgNzAsIDczLCA4OCwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCAKLSAgICA3MywgODYsIDE5NywgNzAsIDczLCA4NCwgOTAsIDgwLCA2NSwgODQsIDgyLCA3MywgNjcsIDIwMywgNzAsIDczLCA4NCwgNjUsIAotICAgIDEyOCwgNzAsIDczLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA4NCwgNjksIDE5NiwgNzAsIDczLCA4MywgNzIsIDczLCA3OCwgCi0gICAgMTk5LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIAotICAgIDIwMywgNzAsIDczLCA4MywgNzIsIDY5LCA4OSwgNjksIDEyOCwgNzAsIDczLCA4MywgNzIsIDEyOCwgNzAsIDczLCA4MywgCi0gICAgMjAwLCA3MCwgNzMsIDgyLCA4MywgMjEyLCA3MCwgNzMsIDgyLCA3MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCAKLSAgICA4MiwgNzUsIDgzLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCAyMDMsIDcwLCA3MywgODIsIDY5LCAxMjgsIAotICAgIDcwLCA3MywgODIsIDE5NywgNzAsIDczLCA4MCwgMTI4LCA3MCwgNzMsIDc4LCA3MywgODQsIDE5NywgNzAsIDczLCA3OCwgCi0gICAgNzEsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMjExLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAKLSAgICA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNzEsIAotICAgIDY5LCA4MiwgNDUsIDgwLCA3OSwgODMsIDIxMiwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc4LCA3MSwgCi0gICAgNjksIDIxMCwgNzAsIDczLCA3OCwgNjUsIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIDc4LCA2NSwgNzYsIAotICAgIDEyOCwgNzAsIDczLCA3NiwgMjA1LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgCi0gICAgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgCi0gICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgCi0gICAgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAKLSAgICA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzMsIAotICAgIDY5LCA3NiwgMTk2LCA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIAotICAgIDcwLCA2OSwgODUsIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgCi0gICAgODQsIDczLCA4NiwgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIAotICAgIDIxMSwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgCi0gICAgNjksIDc5LCAyMDAsIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCAKLSAgICA3OCwgNzMsIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIAotICAgIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgCi0gICAgMjEzLCA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgCi0gICAgNzcsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCA2OSwgCi0gICAgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDY1LCAKLSAgICA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAyMDQsIAotICAgIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODksIDEyOCwgCi0gICAgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgNjksIDEyOCwgNzAsIDY1LCAKLSAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIAotICAgIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA3MCwgCi0gICAgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODMsIDg0LCAxMjgsIDcwLCA2NSwgODIsIDgzLCAKLSAgICAyMDEsIDcwLCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIDcwLCA2NSwgNzgsIDcxLCAKLSAgICAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgNzcsIAotICAgIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NywgMTI4LCA3MCwgNjUsIDc2LCA3NiwgNjksIDIwNiwgNzAsIDY1LCA3NCwgCi0gICAgMTI4LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgODUsIDEyOCwgNzAsIDY1LCAKLSAgICA3MywgNjYsIDEyOCwgNzAsIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIDEyOCwgNzAsIDY1LCA2NywgODQsIAotICAgIDc5LCA4MiwgODksIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgCi0gICAgMTk3LCA3MCwgNjUsIDY3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDU0LCAxMjgsIDcwLCAKLSAgICA2NSwgNjcsIDY5LCA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIAotICAgIDUxLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgCi0gICAgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKLSAgICA3MCwgNDgsIDUzLCA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIAotICAgIDQ4LCA1MywgNDksIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUzLCA0OCwgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCAKLSAgICA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIAotICAgIDU0LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgCi0gICAgMTI4LCA3MCwgNDgsIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUyLCA0OCwgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCAKLSAgICA1MSwgNTYsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIAotICAgIDU0LCAxMjgsIDcwLCA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIAotICAgIDcwLCA0OCwgNTEsIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUxLCA0OCwgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA3MCwgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA3MCwgNDgsIDUwLCA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIAotICAgIDQ4LCA1MCwgNDksIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgCi0gICAgNTYsIDEyOCwgNzAsIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgNzAsIDQ4LCA0OSwgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDcwLCA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDcwLCA0OCwgNDgsIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgCi0gICAgNDgsIDUwLCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDgzLCAKLSAgICAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgCi0gICAgODksIDg5LCA4OSwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCAyMTEsIDY5LCA4OSwgNjksIDc2LCAKLSAgICA2NSwgODMsIDcyLCA2OSwgMjExLCA2OSwgODksIDY5LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIAotICAgIDY5LCA3MSwgNjUsIDkwLCA2OSwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCAKLSAgICA3MSwgNjUsIDkwLCA2OSwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgCi0gICAgNjYsIDgyLCA3OSwgODcsIDIxMSwgNjksIDg5LCAxOTcsIDY5LCA4OSwgNjYsIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIAotICAgIDEyOCwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgODgsIDg0LCA4MiwgNjksIDc3LCA2OSwgNzYsIDIxNywgCi0gICAgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA2OSwgODgsIAotICAgIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzIsIDczLCA3MSwgMjAwLCA2OSwgCi0gICAgODgsIDg0LCA4MiwgMTkzLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCAKLSAgICA3OCwgNjgsIDY5LCA2OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OSwgODgsIDgwLCA4MiwgNjksIAotICAgIDgzLCA4MywgNzMsIDc5LCA3OCwgNzYsIDY5LCA4MywgMjExLCA2OSwgODgsIDgwLCA3OSwgNzgsIDY5LCA3OCwgMjEyLCA2OSwgCi0gICAgODgsIDc5LCAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIDgzLCAxMjgsIDY5LCA4OCwgNzMsIDgzLCAKLSAgICA4NCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgNzYsIAotICAgIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgCi0gICAgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MywgODQsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCAKLSAgICA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgNjksIDg4LCA2NywgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIAotICAgIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4NywgNjksIDEyOCwgNjksIDg2LCA2OSwgODIsIDIxNywgCi0gICAgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCAKLSAgICA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDQ1LCA2NSwgNzAsIDgyLCA3MywgCi0gICAgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgNjcsIDIxNywgNjksIDg1LCAKLSAgICA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA3OSwgMTI4LCAKLSAgICA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAxMjgsIAotICAgIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIDg0LCA3OCwgNjUsIDcyLCA4NCwgNjUsIDEyOCwgCi0gICAgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAyMDYsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCAKLSAgICA4OSwgMTI4LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgMjE3LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgOTAsIAotICAgIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgCi0gICAgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCAKLSAgICA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIAotICAgIDEyOCwgNjksIDgzLCA2NywgMTI4LCA2OSwgODMsIDY1LCAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODMsIAotICAgIDQ1LCA1MSwgMTI4LCA2OSwgODMsIDQ1LCA1MCwgMTI4LCA2OSwgODMsIDQ1LCA0OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgCi0gICAgODIsIDQ1LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIAotICAgIDEyOCwgNjksIDgyLCA3MywgNzgsIDE3OCwgNjksIDgyLCA3MSwgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgODEsIAotICAgIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDY5LCA4MSwgODUsIDczLCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAKLSAgICAyMDQsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgCi0gICAgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAxMjgsIDY5LCA4MSwgODUsIDY1LCA3NiwgMjExLCA2OSwgODEsIDg1LCAKLSAgICA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgCi0gICAgMjA2LCA2OSwgODAsIDc5LCA2NywgNzIsIDEyOCwgNjksIDgwLCA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCAKLSAgICA2OSwgODAsIDczLCA2OCwgNjUsIDg1LCA4MiwgNjksIDY1LCAyMDYsIDY5LCA4MCwgNjksIDc4LCA4NCwgNzIsIDY5LCA4NCwgCi0gICAgNzMsIDE5NSwgNjksIDgwLCA2OSwgNzEsIDY5LCA4MiwgNzcsIDY1LCAxMjgsIDY5LCA4MCwgNjUsIDY3LCAyMTIsIDY5LCAKLSAgICA3OSwgODQsIDEyOCwgNjksIDc5LCA3NywgMTI4LCA2OSwgNzksIDc2LCA3MiwgODgsIDEyOCwgNjksIDc5LCA3NiwgMTI4LCAKLSAgICA2OSwgNzksIDcyLCAxMjgsIDY5LCA3OCwgODksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDY5LCAxMjgsIAotICAgIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCAxOTcsIDY5LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDUwLCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDQ5LCAxMjgsIAotICAgIDY5LCA3OCwgODQsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2OSwgNzgsIDg0LCA3MiwgODUsIDgzLCA3MywgCi0gICAgNjUsIDgzLCA3NywgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDgwLCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA2OSwgNzgsIDg0LCAKLSAgICA2OSwgODIsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDg0LCA2OSwgODIsIDEyOCwgNjksIDc4LCA4NCwgNjksIDIxMCwgNjksIAotICAgIDc4LCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA2OSwgNzgsIDgxLCA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgCi0gICAgNzgsIDgxLCAxMjgsIDY5LCA3OCwgNzksIDIxMSwgNjksIDc4LCA3OCwgNzMsIDEyOCwgNjksIDc4LCA3OCwgMTI4LCA2OSwgCi0gICAgNzgsIDc2LCA2NSwgODIsIDcxLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc4LCA3MSwgNzMsIDc4LCA2OSwgMTI4LCAKLSAgICA2OSwgNzgsIDY4LCA3OSwgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OSwgNzgsIAotICAgIDY4LCA2OSwgODAsIDEyOCwgNjksIDc4LCA2OCwgNjksIDY1LCA4NiwgNzksIDg1LCA4MiwgMTI4LCA2OSwgNzgsIDY3LCA3OSwgCi0gICAgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCA4MywgMTI4LCAKLSAgICA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDczLCA3OCwgCi0gICAgMTk5LCA2OSwgNzgsIDY3LCAxMjgsIDY5LCA3OCwgNjUsIDgyLCA4OCwgNzMsIDIxMSwgNjksIDc4LCA2NSwgODIsIDc3LCAKLSAgICA3OSwgNzgsIDczLCA3OSwgMjExLCA2OSwgNzcsIDgwLCA4NCwgMjE3LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDg0LCA3MywgCi0gICAgMTk1LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDgzLCA3MywgMjExLCA2OSwgNzcsIDc5LCA3NCwgMjAxLCA2OSwgNzcsIDY2LCAKLSAgICA4MiwgNzksIDczLCA2OCwgNjksIDgyLCA4OSwgMTI4LCA2OSwgNzcsIDY2LCA3NiwgNjksIDc3LCAxMjgsIDY5LCA3NywgNjYsIAotICAgIDY5LCA3NiwgNzYsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3NywgNjYsIDY5LCA2OCwgNjgsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgNjksIDc2LCA4OSwgMTI4LCA2OSwgNzYsIDg0LCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODQsIAotICAgIDczLCAxOTUsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDczLCA4MywgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA2OSwgCi0gICAgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDIwNiwgNjksIAotICAgIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAxMjgsIDY5LCA3NiwgNjksIDc3LCA2OSwgNzgsIDIxMiwgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgMTk1LCA2OSwgNzYsIDY2LCAKLSAgICA2NSwgODMsIDY1LCAyMDYsIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIDY5LCAxMjgsIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIAotICAgIDE5NywgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgODQsIDgyLCA2OSwgODAsIDg0LCA3OSwgCi0gICAgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCA4NCwgNzMsIDc1LCA3OSwgNzgsIAotICAgIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NSwgNjUsIDc3LCAxMjgsIDY5LCA3NCwgNjksIDY3LCAyMTIsIAotICAgIDY5LCA3MywgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIxNywgCi0gICAgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMjExLCA2OSwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDcyLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIAotICAgIDY5LCA2OSwgMjA2LCA2OSwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgCi0gICAgNjksIDEyOCwgNjksIDcyLCA4NywgNjUsIDIxOCwgNjksIDcxLCA4OSwgODAsIDg0LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCAKLSAgICA2NSwgMjA0LCA2OSwgNzEsIDg5LCAxMjgsIDY5LCA3MSwgNzMsIDgyLCAxMjgsIDY5LCA3MSwgNzEsIDEyOCwgNjksIDY5LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDY5LCA3NSwgNjUsIDY1LCAxMjgsIDY5LCA2OSwgNzIsIDEyOCwgNjksIAotICAgIDY5LCA2NiwgNjksIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjgsIDczLCA4NCwgNzksIDgyLCA3MywgNjUsIDIwNCwgCi0gICAgNjksIDY4LCA3MywgNzgsIDEyOCwgNjksIDY4LCA2OCwgMTI4LCA2OSwgNjcsIDgzLCAxMjgsIDY5LCA2NiwgNjksIDcwLCAKLSAgICA3MywgNzYsIDczLCAxMjgsIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgNjksIDY1LCA4MywgODQsIDEyOCwgNjksIAotICAgIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgCi0gICAgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCAKLSAgICA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIAotICAgIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgCi0gICAgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAKLSAgICA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCAKLSAgICA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIAotICAgIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgCi0gICAgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgCi0gICAgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCAKLSAgICA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIAotICAgIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgCi0gICAgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgCi0gICAgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCAKLSAgICA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgCi0gICAgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgCi0gICAgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgNjgsIDkwLCA5MCwgNzIsIDY5LCAxMjgsIDY4LCAKLSAgICA5MCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgOTAsIDY1LCAxMjgsIDY4LCA5MCwgODksIDY1LCA4OSwgMTI4LCA2OCwgOTAsIAotICAgIDg3LCA2OSwgMTI4LCA2OCwgOTAsIDg1LCAxMjgsIDY4LCA5MCwgNzksIDEyOCwgNjgsIDkwLCA3NCwgNjksIDEyOCwgNjgsIAotICAgIDkwLCA3MywgODQsIDY1LCAxMjgsIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNzksIDczLCAxMjgsIDY4LCA5MCwgCi0gICAgNzIsIDY5LCAxMjgsIDY4LCA5MCwgNzIsIDY1LCAxMjgsIDY4LCA5MCwgNjksIDc2LCA3OSwgMTI4LCA2OCwgOTAsIDY5LCAKLSAgICA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgNjUsIDY1LCAxMjgsIDY4LCAKLSAgICA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAyMTgsIDY4LCA4OSwgNzksIDEyOCwgNjgsIDg5LCAyMDcsIDY4LCA4OSwgCi0gICAgNzgsIDY1LCA3NywgNzMsIDE5NSwgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODksIDY1LCAKLSAgICA3OCwgMTI4LCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCAKLSAgICA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIAotICAgIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgCi0gICAgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCAKLSAgICA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIAotICAgIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIAotICAgIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCAxOTksIDY4LCA4NSwgNjYsIAotICAgIDUwLCAxMjgsIDY4LCA4NSwgNjYsIDEyOCwgNjgsIDg1LCAxOTQsIDY4LCA4MiwgODksIDEyOCwgNjgsIDgyLCAyMTcsIDY4LCAKLSAgICA4MiwgODUsIDc3LCAxMjgsIDY4LCA4MiwgODUsIDIwNSwgNjgsIDgyLCA3OSwgODAsIDgzLCAxMjgsIDY4LCA4MiwgNzksIAotICAgIDgwLCA3NiwgNjksIDg0LCAxMjgsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgCi0gICAgNjgsIDgyLCA3OSwgNzcsIDY5LCA2OCwgNjUsIDgyLCAyMTcsIDY4LCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2OCwgODIsIDczLCAKLSAgICA4NiwgMTk3LCA2OCwgODIsIDczLCA3OCwgNzUsIDEyOCwgNjgsIDgyLCA3MywgMjA0LCA2OCwgODIsIDY5LCA4MywgODMsIAotICAgIDEyOCwgNjgsIDgyLCA2OSwgNjUsIDc3LCAyMTcsIDY4LCA4MiwgNjUsIDg1LCA3MSwgNzIsIDg0LCAyMTEsIDY4LCA4MiwgCi0gICAgNjUsIDc3LCAxMjgsIDY4LCA4MiwgNjUsIDIwNSwgNjgsIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIDY1LCAKLSAgICA3MSwgNzksIDIwNiwgNjgsIDgyLCA2NSwgNzAsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIAotICAgIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDE5MywgCi0gICAgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2OCwgNzksIDg3LCA3OCwgNDUsIDgwLCA3OSwgNzMsIAotICAgIDc4LCA4NCwgNzMsIDc4LCAxOTksIDY4LCA3OSwgODcsIDc4LCAxMjgsIDY4LCA3OSwgODYsIDY5LCAxMjgsIDY4LCA3OSwgCi0gICAgODYsIDE5NywgNjgsIDc5LCA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA4NCwgMTI4LCAKLSAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIAotICAgIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzgsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODQsIDY5LCAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIAotICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIAorICAgIDY5LCAxMjgsIDcyLCA2OCwgODIsIDEyOCwgNzIsIDY3LCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgCisgICAgNjUsIDgzLCAxOTMsIDcyLCA2NiwgNjUsIDgzLCAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCAKKyAgICA2NSwgODcsIDc0LCAxMjgsIDcyLCA2NSwgODYsIDY5LCAxMjgsIDcyLCA2NSwgODUsIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIAorICAgIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDIxMywgNzIsIDY1LCA4NCwgODIsIDY1LCAyMDYsIDcyLCA2NSwgODQsIDcyLCA3MywgCisgICAgMTI4LCA3MiwgNjUsIDg0LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCAKKyAgICA2NSwgMTk4LCA3MiwgNjUsIDgzLCA2OSwgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIAorICAgIDgyLCA4MCwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgCisgICAgNzgsIDczLCA2NywgMTI4LCA3MiwgNjUsIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCAKKyAgICA4MywgODMsIDEyOCwgNzIsIDY1LCA4MiwgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIAorICAgIDc5LCAyMDcsIDcyLCA2NSwgNzgsIDcxLCA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgNzIsIDY1LCA3NSwgCisgICAgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAyMTEsIDcyLCA2NSwgNzgsIDY4LCAKKyAgICA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCA2NSwgNzYsIAorICAgIDc2LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzksIDg2LCA2NSwgCisgICAgNzYsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3OSwgODYsIDY1LCAyMDQsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDc5LCAKKyAgICA3OSwgNzUsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzksIDc5LCAyMDMsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIAorICAgIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDE5NywgNzIsIDY1LCA3OCwgCisgICAgNjgsIDQ1LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDIxMiwgNzIsIDY1LCAKKyAgICA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCA4NCwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgCisgICAgNjcsIDg1LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCAxOTcsIDcyLCAKKyAgICA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MCwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgMjA4LCA3MiwgNjUsIAorICAgIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDg3LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgMjE1LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIAorICAgIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgCisgICAgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCAKKyAgICA2NSwgODQsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDcyLCA2NSwgNzcsIAorICAgIDgzLCA4NCwgNjksIDIxMCwgNzIsIDY1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgCisgICAgNzIsIDY1LCA3NywgNjYsIDg1LCA4MiwgNzEsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCAKKyAgICA3NiwgNzksIDEyOCwgNzIsIDY1LCA3NiwgNzAsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3NiwgNzAsIAorICAgIDEyOCwgNzIsIDY1LCA3NiwgNjYsIDY5LCA4MiwgNjgsIDEyOCwgNzIsIDY1LCA3NiwgNjUsIDc4LCA4NCwgNjUsIDEyOCwgCisgICAgNzIsIDY1LCA3MywgODQsIDg1LCAxMjgsIDcyLCA2NSwgNzMsIDIxMSwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIAorICAgIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIAorICAgIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgCisgICAgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgCisgICAgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCAKKyAgICA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIAorICAgIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIAorICAgIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgCisgICAgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgCisgICAgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgCisgICAgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgCisgICAgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDg2LCA2NSwgNzgsIDcxLCAxMjgsIDcxLCA4NiwgMTI4LCA3MSwgCisgICAgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCAKKyAgICA3MiwgMjAxLCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIAorICAgIDcxLCA4NSwgNzgsIDg1LCAxMjgsIDcxLCA4NSwgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgNzYsIDEyOCwgNzEsIAorICAgIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIDIwMSwgNzEsIDg1LCA3MywgODQsIDY1LCA4MiwgMTI4LCA3MSwgODUsIDE5OSwgCisgICAgNzEsIDg1LCA2OSwgNzMsIDEyOCwgNzEsIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAKKyAgICAxMjgsIDcxLCA4NSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIAorICAgIDgyLCA2OCwgNjksIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCAxOTYsIDcxLCA4NSwgCisgICAgNjUsIDgyLCA2OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgCisgICAgNzEsIDg0LCA2OSwgMjEwLCA3MSwgODMsIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgCisgICAgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCAKKyAgICA3MiwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIAorICAgIDczLCA3NywgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgCisgICAgNjksIDY5LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCAKKyAgICA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgCisgICAgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgMjEyLCA3MSwgODIsIDY1LCAKKyAgICA4NiwgNjksIDg5LCA2NSwgODIsIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgCisgICAgMTI4LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgODYsIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCA3MSwgODIsIDY1LCA4MywgCisgICAgODMsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDIxMSwgNzEsIDgyLCA2NSwgODMsIDIwOCwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA2OSwgNzcsIDE5NywgNzEsIDgyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3OCwgODQsIDcyLCAxOTMsIAorICAgIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA3MSwgODIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgCisgICAgODQsIDczLCA3OSwgMjA2LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA3NiwgMTI4LCA3MSwgODIsIDY1LCA2NywgNjksIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDE5NywgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgCisgICAgNzUsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDg0LCAxMjgsIDcxLCA3OSwgODIsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCAKKyAgICA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgCisgICAgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA3MSwgNzksIDgyLCA3MSwgNzMsIAorICAgIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCA3OSwgMTk2LCA3MSwgNzksIDc4LCA3MSwgMTI4LCA3MSwgNzksIAorICAgIDc2LCA3MCwgNjksIDgyLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgNzEsIDc5LCA3MywgCisgICAgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCA3MSwgNzksIDY1LCAKKyAgICAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIDg2LCA3MywgODksIAorICAgIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NiwgNjksIDEyOCwgCisgICAgNzEsIDc2LCA3OSwgODQsIDg0LCA2NSwgMjA0LCA3MSwgNzYsIDc5LCA2NiwgMTk3LCA3MSwgNzYsIDczLCA4MywgODMsIDY1LCAKKyAgICA3OCwgNjgsIDIwNywgNzEsIDc2LCA2OSwgNzMsIDY3LCAyMDAsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCAxMjgsIAorICAgIDcxLCA3NiwgNjUsIDEyOCwgNzEsIDc0LCA2OSwgMTI4LCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MywgODQsIDEyOCwgNzEsIAorICAgIDczLCA4MywgNzIsIDEyOCwgNzEsIDczLCA4MywgMjAwLCA3MSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzEsIDczLCA4MiwgCisgICAgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzEsIDczLCA4MiwgNzYsIDIxMSwgNzEsIDczLCA4MiwgNzYsIDEyOCwgNzEsIDczLCAKKyAgICA4MiwgNTEsIDEyOCwgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIDgyLCA1MCwgMTI4LCA3MSwgNzMsIDgyLCAxNzgsIDcxLCAKKyAgICA3MywgODAsIDEyOCwgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIDcxLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzMsIAorICAgIDc3LCA2OSwgMjA0LCA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNzEsIDY1LCAxMjgsIDcxLCA3MywgNzEsIDEyOCwgNzEsIAorICAgIDczLCA2OSwgODQsIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCA3OSwgODUsIDIxMSwgCisgICAgNzEsIDczLCA2NiwgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCA5MCwgMTI4LCA3MSwgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgMTkzLCAKKyAgICA3MSwgNzIsIDg1LCAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgMTI4LCA3MSwgNzIsIAorICAgIDc5LCAxMjgsIDcxLCA3MiwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDcyLCA3MywgMTI4LCA3MSwgNzIsIDcyLCA2NSwgCisgICAgMTI4LCA3MSwgNzIsIDY5LCA4OSwgODMsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCAKKyAgICA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIAorICAgIDcxLCA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgCisgICAgODUsIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCAKKyAgICA2OSwgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCAKKyAgICA2NSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIAorICAgIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCA4NSwgCisgICAgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDIwNiwgNzEsIDcyLCA2NSwgNjgsIDEyOCwgCisgICAgNzEsIDcyLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIAorICAgIDEyOCwgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgCisgICAgMTI4LCA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgNzEsIDg1LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgCisgICAgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCAKKyAgICA3MSwgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIAorICAgIDcxLCA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgODQsIDEyOCwgNzEsIDcxLCA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgCisgICAgODgsIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgNzEsIDcxLCA3MywgNjksIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCA3MSwgNzEsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCAKKyAgICA3MSwgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDY1LCA4OCwgMTI4LCA3MSwgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNjksIAorICAgIDg0LCAxOTMsIDcxLCA2OSwgODMsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgCisgICAgNjksIDgzLCA3MiwgODQsIDczLCA3OCwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCAKKyAgICA1MCwgMTI4LCA3MSwgNjksIDgyLCA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgCisgICAgMjA2LCA3MSwgNjksIDgyLCA2OSwgODMsIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCAKKyAgICA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgCisgICAgMTk1LCA3MSwgNjksIDc4LCA4NCwgNzYsIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCAKKyAgICA2OSwgNzgsIDczLCA3NSwgMjAxLCA3MSwgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIAorICAgIDEyOCwgNzEsIDY5LCA3NywgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgCisgICAgMTk3LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OSwgNzcsIDEyOCwgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgMTI4LCA3MSwgCisgICAgNjksIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgODIsIDEyOCwgCisgICAgNzEsIDY5LCA2NSwgMjEwLCA3MSwgNjksIDUwLCA1MCwgMTI4LCA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCAKKyAgICA3MSwgMTI4LCA3MSwgNjcsIDY1LCAyMDYsIDcxLCA2NiwgNzksIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCAKKyAgICA2NiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNjYsIDY5LCA4NCwgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIAorICAgIDY2LCA2NSwgNzUsIDg1LCA4MiwgODUsIDc4LCA2OSwgNzgsIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgCisgICAgODUsIDc1LCA3MywgODQsIDg0LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAKKyAgICAxMjgsIDcxLCA2NSwgODUsIDc4LCA4NCwgNzYsIDY5LCA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgCisgICAgNjUsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA2NSwgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCAKKyAgICA3OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgCisgICAgMTI4LCA3MSwgNjUsIDgyLCA1MSwgMTI4LCA3MSwgNjUsIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgCisgICAgNzgsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA3MSwgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCAKKyAgICA2NSwgNzgsIDUwLCAxMjgsIDcxLCA2NSwgNzgsIDE3OCwgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIAorICAgIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIAorICAgIDcxLCA2NSwgNzcsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgCisgICAgNzEsIDY1LCA3MSwgMTI4LCA3MSwgNjUsIDcwLCAxMjgsIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCAKKyAgICA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIAorICAgIDcxLCA2NSwgMTk2LCA3MSwgNjUsIDY2LCA2NSwgMTI4LCA3MSwgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgCisgICAgMTI4LCA3MSwgNjUsIDE3OCwgNzEsIDQ4LCA1MywgNTIsIDEyOCwgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgCisgICAgNTAsIDEyOCwgNzEsIDQ4LCA1MywgNDksIDEyOCwgNzEsIDQ4LCA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgCisgICAgNzEsIDQ4LCA1MiwgNTYsIDEyOCwgNzEsIDQ4LCA1MiwgNTUsIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MiwgNTMsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAxMjgsIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIAorICAgIDUxLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgMTI4LCA3MSwgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgCisgICAgMTI4LCA3MSwgNDgsIDUyLCA0OCwgMTI4LCA3MSwgNDgsIDUxLCA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgCisgICAgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCAKKyAgICA0OCwgNTEsIDU0LCAxMjgsIDcxLCA0OCwgNTEsIDUzLCAxMjgsIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIAorICAgIDUxLCAxMjgsIDcxLCA0OCwgNTEsIDUwLCAxMjgsIDcxLCA0OCwgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIAorICAgIDcxLCA0OCwgNTAsIDU3LCAxMjgsIDcxLCA0OCwgNTAsIDU2LCAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgCisgICAgNTAsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgMTI4LCA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCAKKyAgICA1MiwgMTI4LCA3MSwgNDgsIDUwLCA1MSwgMTI4LCA3MSwgNDgsIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCAKKyAgICA3MSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIAorICAgIDQ4LCA0OSwgNTYsIDEyOCwgNzEsIDQ4LCA0OSwgNTUsIDEyOCwgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgCisgICAgNTMsIDEyOCwgNzEsIDQ4LCA0OSwgNTIsIDEyOCwgNzEsIDQ4LCA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgCisgICAgNzEsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDcxLCA0OCwgNDksIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCAKKyAgICA0OCwgNDgsIDU3LCAxMjgsIDcxLCA0OCwgNDgsIDU2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIAorICAgIDQ4LCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgCisgICAgNDgsIDU0LCAxMjgsIDcxLCA0OCwgNDgsIDUzLCAxMjgsIDcxLCA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDcxLCA0OCwgNDgsIDUwLCAxMjgsIDcxLCA0OCwgNDgsIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCAKKyAgICA4NCwgMTI4LCA3MCwgODksIDgwLCAxMjgsIDcwLCA4OSwgNjUsIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MCwgODcsIDY5LCAxMjgsIDcwLCA4NywgNjUsIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg2LCAKKyAgICA4MywgNTEsIDEyOCwgNzAsIDg2LCA4MywgNTAsIDEyOCwgNzAsIDg2LCA4MywgNDksIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCAKKyAgICA3MCwgODUsIDg0LCAxMjgsIDcwLCA4NSwgODMsIDY5LCAxMjgsIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIAorICAgIDEyOCwgNzAsIDg1LCA4MCwgMTI4LCA3MCwgODUsIDc4LCA2OSwgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDcwLCA4NSwgNzYsIDc2LCAKKyAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIDcwLCA4NSwgNzQsIDczLCAxMjgsIDcwLCA4NSwgNjksIAorICAgIDg0LCAxMjgsIDcwLCA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgMTI4LCA3MCwgODUsIDY1LCAxMjgsIDcwLCA4NCwgNzIsIAorICAgIDc5LCA4MiwgMTkzLCA3MCwgODMsIDczLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgCisgICAgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgODcsIAorICAgIDIwNiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgCisgICAgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA3OCwgMjEyLCA3MCwgODIsIDc5LCAyMDUsIDcwLCAKKyAgICA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIDg1LCAxMjgsIDcwLCA4MiwgNzMsIAorICAgIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAKKyAgICAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCA2OSwgNzgsIDY3LCAyMDAsIAorICAgIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIDc1LCAyMTEsIDcwLCA4MiwgCisgICAgNjUsIDc4LCAxOTUsIDcwLCA4MiwgNjUsIDc3LCA2OSwgODMsIDEyOCwgNzAsIDgyLCA2NSwgNzcsIDY5LCAxMjgsIDcwLCAKKyAgICA4MiwgNjUsIDc3LCAxOTcsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgCisgICAgNzksIDIxNiwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCAKKyAgICAyMDYsIDcwLCA3OSwgODUsIDgyLCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDg1LCA4MiwgNDUsIAorICAgIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA3MCwgCisgICAgNzksIDg1LCA4MiwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDc5LCA4NSwgMjEwLCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCAKKyAgICA3MywgNzgsIDEyOCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzAsIDc5LCA4MywgODQsIDY5LCA4MiwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCAKKyAgICAxOTYsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgNzksIDgyLCA4NCwgNzMsIAorICAgIDY5LCA4NCwgNzIsIDEyOCwgNzAsIDc5LCA4MiwgODQsIDY5LCAxMjgsIDcwLCA3OSwgODIsIDc3LCAyMTEsIDcwLCA3OSwgCisgICAgODIsIDc3LCA2NSwgODQsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDc3LCA2NSwgMjEyLCA3MCwgNzksIDgyLCAKKyAgICA3NSwgNjksIDE5NiwgNzAsIDc5LCA4MiwgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzAsIDc5LCA4MiwgNjcsIDY5LCA4MywgCisgICAgMTI4LCA3MCwgNzksIDgyLCA2NywgNjksIDEyOCwgNzAsIDc5LCA4MCwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODMsIDg0LCAKKyAgICA3OSwgNzksIDc2LCAxMjgsIDcwLCA3OSwgNzksIDg0LCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDcwLCA3OSwgNzksIAorICAgIDg0LCA3OCwgNzksIDg0LCAxOTcsIDcwLCA3OSwgNzksIDg0LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgCisgICAgMTI4LCA3MCwgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA2OCwgMTI4LCA3MCwgNzksIDc5LCAxMjgsIDcwLCA3OSwgCisgICAgNzgsIDIxMiwgNzAsIDc5LCA3OCwgNzEsIDc3LCA2NSwgNzgsIDEyOCwgNzAsIDc5LCA3NywgMTI4LCA3MCwgNzksIDc2LCAKKyAgICA3NiwgODksIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDc5LCA4NywgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIAorICAgIDgyLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgMTk2LCA3MCwgNzksIDcxLCA3MSwgODksIDEyOCwgNzAsIDc5LCA3MSwgCisgICAgMTI4LCA3MCwgMjA3LCA3MCwgNzcsIDEyOCwgNzAsIDc2LCA4OSwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODksIDEyOCwgNzAsIAorICAgIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCAKKyAgICA3OCwgMTk5LCA3MCwgNzYsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MCwgNzYsIAorICAgIDc5LCA4NywgNzMsIDc4LCAxOTksIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDgzLCAxMjgsIDcwLCA3NiwgNzksIDg3LCA2OSwgCisgICAgMjEwLCA3MCwgNzYsIDc5LCA4NSwgODIsIDczLCA4MywgNzIsIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY5LCA4NCwgODQsIDY5LCAKKyAgICAxMjgsIDcwLCA3NiwgNzksIDgyLCA2NSwgMjA0LCA3MCwgNzYsIDc5LCA4MCwgODAsIDIxNywgNzAsIDc2LCA3OSwgNzksIAorICAgIDgyLCAxMjgsIDcwLCA3NiwgNzksIDc5LCAyMTAsIDcwLCA3NiwgNzMsIDgwLCAxMjgsIDcwLCA3NiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDEyOCwgNzAsIDc2LCA3MywgNjcsIDIwMywgNzAsIDc2LCA2OSwgODgsIDg1LCA4MywgMTI4LCA3MCwgNzYsIDY5LCAKKyAgICA4OCwgNjksIDE5NiwgNzAsIDc2LCA2OSwgODgsIDEyOCwgNzAsIDc2LCA2OSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzAsIAorICAgIDc2LCA2OSwgODUsIDgyLCA0NSwgNjgsIDY5LCA0NSwgNzYsIDczLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgODQsIDY5LCAKKyAgICA3OCwgNjksIDE5NiwgNzAsIDc2LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA2NiwgODIsIAorICAgIDY5LCA2NSwgNjgsIDEyOCwgNzAsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA4MywgMTI4LCA3MCwgCisgICAgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCAKKyAgICA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNDksIDEyOCwgNzAsIAorICAgIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCA3MCwgNzMsIAorICAgIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA4NCwgCisgICAgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzMsIDg2LCAKKyAgICAxOTcsIDcwLCA3MywgODQsIDkwLCA4MCwgNjUsIDg0LCA4MiwgNzMsIDY3LCAyMDMsIDcwLCA3MywgODQsIDY1LCAxMjgsIAorICAgIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIDE5OSwgCisgICAgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAyMDMsIDcwLCAKKyAgICA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIDIwMCwgNzAsIAorICAgIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDc1LCA4MywgCisgICAgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCA3MCwgNzMsIDgyLCAKKyAgICAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIAorICAgIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDIxMSwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNzgsIDY1LCA3MywgCisgICAgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDQ1LCAKKyAgICA4MCwgNzksIDgzLCAyMTIsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCAyMTAsIAorICAgIDcwLCA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3OCwgNjUsIDc2LCAxMjgsIDcwLCA3MywgCisgICAgNzYsIDIwNSwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDQ1LCAKKyAgICA0OSwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgMTk2LCA3MCwgNzMsIAorICAgIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgMTI4LCA3MCwgNzMsIAorICAgIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA3MywgCisgICAgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIDczLCA3MSwgNzIsIDg0LCAKKyAgICAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgNzMsIDcwLCA4NCwgNzIsIAorICAgIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgCisgICAgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzMsIDY5LCA3NiwgMTk2LCAKKyAgICA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIDcwLCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgODQsIDczLCA4NiwgCisgICAgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIDIxMSwgNzAsIDY5LCAKKyAgICA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgNjksIDc5LCAyMDAsIAorICAgIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDc4LCA2NywgNjksIDEyOCwgCisgICAgNzAsIDY5LCA3NywgNzMsIDc4LCA3MywgNzgsIDE5NywgNzAsIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3MCwgNjksIDc3LCAKKyAgICA2NSwgNzYsIDE5NywgNzAsIDY5LCA3NiwgNzYsIDc5LCA4NywgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIDY5LCA3MywgCisgICAgMTI4LCA3MCwgNjksIDcyLCAyMTMsIDcwLCA2OSwgNzIsIDEyOCwgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIDc4LCA3MSwgCisgICAgMTI4LCA3MCwgNjksIDY5LCA3NywgMTI4LCA3MCwgNjksIDY5LCA2OCwgMTI4LCA3MCwgNjksIDY5LCAxOTYsIDcwLCA2OSwgCisgICAgNjksIDEyOCwgNzAsIDY5LCA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAKKyAgICAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY5LCA2NSwgODIsIDc4LCAxMjgsIDcwLCA2OSwgNjUsIAorICAgIDgyLCA3MCwgODUsIDIwNCwgNzAsIDY5LCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgNzAsIDY1LCA4OSwgMTI4LCA3MCwgNjUsIDg4LCAxMjgsIDcwLCA2NSwgMjE2LCA3MCwgNjUsIDg0LCA3MywgNzEsIDg1LCAKKyAgICA2OSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjUsIAorICAgIDg0LCA3MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIDIwNiwgNzAsIDY1LCA4NCwgCisgICAgNzIsIDY1LCAxMjgsIDcwLCA2NSwgODQsIDcyLCAxOTMsIDcwLCA2NSwgODQsIDEyOCwgNzAsIDY1LCA4MywgODQsIDEyOCwgCisgICAgNzAsIDY1LCA4MiwgODMsIDIwMSwgNzAsIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIDEyOCwgCisgICAgNzAsIDY1LCA3OCwgNzEsIDEyOCwgNzAsIDY1LCA3OCwgNjksIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgNzgsIAorICAgIDEyOCwgNzAsIDY1LCA3NywgNzMsIDc2LCA4OSwgMTI4LCA3MCwgNjUsIDc3LCAxMjgsIDcwLCA2NSwgNzYsIDc2LCA2OSwgCisgICAgMjA2LCA3MCwgNjUsIDc0LCAxMjgsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIDY5LCAxMjgsIDcwLCA2NSwgNzMsIDcyLCAKKyAgICA4NSwgMTI4LCA3MCwgNjUsIDczLCA2NiwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgCisgICAgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCAKKyAgICA2NywgODMsIDczLCA3NywgNzMsIDc2LCAxOTcsIDcwLCA2NSwgNjcsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDcwLCA2NSwgNjcsIAorICAgIDY5LCA0NSwgNTQsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAKKyAgICAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIAorICAgIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcwLCA0OCwgNTMsIDUxLCAxMjgsIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCAKKyAgICA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjYsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCA0OCwgNTMsIDQ4LCAxMjgsIDcwLCA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIAorICAgIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAxMjgsIDcwLCA0OCwgNTIsIDUxLCAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIAorICAgIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCA0OCwgNTIsIDQ4LCAxMjgsIDcwLCA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NiwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgNTQsIDEyOCwgNzAsIDQ4LCA1MSwgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIAorICAgIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgNzAsIDQ4LCA1MSwgNTAsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCA0OCwgNTEsIDQ4LCAxMjgsIDcwLCA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIDU1LCAxMjgsIDcwLCA0OCwgNTAsIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAKKyAgICAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIDcwLCA0OCwgNTAsIDUxLCAxMjgsIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCAKKyAgICA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgMTI4LCA3MCwgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIAorICAgIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCA1NiwgMTI4LCA3MCwgNDgsIDQ5LCA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgCisgICAgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCA3MCwgNDgsIDQ5LCA1MiwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIDQ4LCA0OSwgNTAsIDEyOCwgNzAsIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCAKKyAgICA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgNTcsIDEyOCwgNzAsIDQ4LCA0OCwgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgNzAsIDQ4LCA0OCwgNTMsIDEyOCwgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCA0OCwgNTAsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgODMsIDEyOCwgNjksIDkwLCAyMDAsIDY5LCA5MCwgNjksIDc4LCAxMjgsIDY5LCA5MCwgCisgICAgNjksIDIwNiwgNjksIDkwLCAxMjgsIDY5LCA4OSwgODksIDg5LCAxMjgsIDY5LCA4OSwgNjksIDgzLCAxMjgsIDY5LCA4OSwgCisgICAgNjksIDIxMSwgNjksIDg5LCA2OSwgNzYsIDY1LCA4MywgNzIsIDY5LCAyMTEsIDY5LCA4OSwgNjksIDcxLCA3NiwgNjUsIDgzLCAKKyAgICA4MywgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjksIDcxLCA2NSwgOTAsIDY5LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgCisgICAgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIDcxLCA2NSwgOTAsIDY5LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIAorICAgIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCA2NiwgODIsIDc5LCA4NywgMjExLCA2OSwgODksIDE5NywgNjksIDg5LCA2NiwgCisgICAgNjksIDg5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA4OCwgODQsIDgyLCAKKyAgICA2OSwgNzcsIDY5LCA3NiwgMjE3LCA2OSwgODgsIDg0LCA4MiwgNjUsIDg0LCA2OSwgODIsIDgyLCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY1LCAyMDQsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDc2LCA3OSwgMjE1LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCAKKyAgICA3MiwgNzMsIDcxLCAyMDAsIDY5LCA4OCwgODQsIDgyLCAxOTMsIDY5LCA4OCwgODQsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDY4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCA3OCwgNjgsIDY5LCAKKyAgICAxOTYsIDY5LCA4OCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCA3NiwgNjksIDgzLCAyMTEsIDY5LCA4OCwgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCAyMTIsIDY5LCA4OCwgNzksIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgNzMsIDgzLCA4NCwgCisgICAgODMsIDEyOCwgNjksIDg4LCA3MywgODMsIDg0LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA4OCwgNzIsIDY1LCA3NiwgNjksIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA4OCwgNjcsIDczLCA4NCwgCisgICAgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4OCwgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCA2OSwgODgsIDY3LCAKKyAgICA2OSwgODMsIDgzLCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg3LCA2OSwgCisgICAgMTI4LCA2OSwgODYsIDY5LCA4MiwgMjE3LCA2OSwgODYsIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNjksIDg2LCAKKyAgICA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNjUsIDIwNiwgNjksIDg1LCA4MiwgNzksIAorICAgIDgwLCA2OSwgNDUsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIDEyOCwgNjksIDg1LCA4MiwgNzksIDQ1LCA2NywgODUsIDgyLCAKKyAgICA4MiwgNjksIDc4LCA2NywgMjE3LCA2OSwgODUsIDgyLCAyMDcsIDY5LCA4NSwgNzYsIDY5LCAyMTAsIDY5LCA4NSwgNDUsIAorICAgIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgCisgICAgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDEyOCwgNjksIDg1LCA0NSwgNjUsIDEyOCwgNjksIDg0LCA4OCwgMTI4LCA2OSwgCisgICAgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCA2OSwgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIAorICAgIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDg5LCAxMjgsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCAKKyAgICAyMTcsIDY5LCA4NCwgNjYsIDEyOCwgNjksIDgzLCA5MCwgMTI4LCA2OSwgODMsIDg1LCA3NSwgODUsIDg1LCA2OCwgNzksIAorICAgIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCA4MywgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgCisgICAgNjksIDE5NiwgNjksIDgzLCA3MiwgNjksIDUxLCAxMjgsIDY5LCA4MywgNzIsIDUwLCA0OSwgMTI4LCA2OSwgODMsIDcyLCAKKyAgICA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2OSwgODMsIDY3LCAxMjgsIDY5LCA4MywgNjUsIAorICAgIDEyOCwgNjksIDgzLCA0NSwgODQsIDY5LCAxMjgsIDY5LCA4MywgNDUsIDUxLCAxMjgsIDY5LCA4MywgNDUsIDUwLCAxMjgsIAorICAgIDY5LCA4MywgNDUsIDQ5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA2OSwgCisgICAgODIsIDgyLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgMTI4LCA2OSwgODIsIDczLCA3OCwgMTc4LCA2OSwgODIsIDcxLCAKKyAgICAxMjgsIDY5LCA4MiwgNjUsIDgzLCAxOTcsIDY5LCA4MSwgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIAorICAgIDgxLCA4NSwgNzMsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIDIwNCwgNjksIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDY5LCA4MSwgCisgICAgODUsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIDEyOCwgNjksIDgxLCAKKyAgICA4NSwgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCA2OSwgODAsIDczLCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgNjUsIDIwNiwgNjksIAorICAgIDgwLCA2OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCA3NywgNjUsIDEyOCwgCisgICAgNjksIDgwLCA2NSwgNjcsIDIxMiwgNjksIDc5LCA4NCwgMTI4LCA2OSwgNzksIDc3LCAxMjgsIDY5LCA3OSwgNzYsIDcyLCAKKyAgICA4OCwgMTI4LCA2OSwgNzksIDc2LCAxMjgsIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCAKKyAgICA2OSwgNzYsIDc5LCA4MCwgNjksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDE5NywgNjksIDc4LCA4NSwgNzcsIAorICAgIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNTAsIDEyOCwgNjksIDc4LCA4NCwgCisgICAgODIsIDg5LCA0NSwgNDksIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY5LCAKKyAgICA3OCwgODQsIDcyLCA4NSwgODMsIDczLCA2NSwgODMsIDc3LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgODAsIDgyLCA3MywgCisgICAgODMsIDY5LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY5LCA3OCwgODQsIDY5LCA4MiwgMTI4LCAKKyAgICA2OSwgNzgsIDg0LCA2OSwgMjEwLCA2OSwgNzgsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDY5LCA3OCwgODEsIAorICAgIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCA3OCwgODEsIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIDc4LCA3MywgCisgICAgMTI4LCA2OSwgNzgsIDc4LCAxMjgsIDY5LCA3OCwgNzYsIDY1LCA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCAKKyAgICA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY5LCA3OCwgNjgsIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNjksIAorICAgIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA2OSwgNzgsIDY4LCA2OSwgNjUsIDg2LCA3OSwgCisgICAgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCAKKyAgICA3OSwgODMsIDg1LCA4MiwgNjksIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIAorICAgIDc4LCA2NywgNzYsIDc5LCA4MywgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgCisgICAgMjExLCA2OSwgNzgsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCAKKyAgICA3NywgODAsIDcyLCA2NSwgODQsIDczLCAxOTUsIDY5LCA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNzksIAorICAgIDc0LCAyMDEsIDY5LCA3NywgNjYsIDgyLCA3OSwgNzMsIDY4LCA2OSwgODIsIDg5LCAxMjgsIDY5LCA3NywgNjYsIDc2LCA2OSwgCisgICAgNzcsIDEyOCwgNjksIDc3LCA2NiwgNjksIDc2LCA3NiwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc3LCAKKyAgICA2NiwgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgNzYsIDg5LCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgNjksIAorICAgIDc2LCA3NiwgNzMsIDgwLCA4NCwgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIDgzLCAxMjgsIDY5LCA3NiwgCisgICAgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAKKyAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDY5LCA3NiwgNjksIAorICAgIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgCisgICAgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAKKyAgICAxOTUsIDY5LCA3NiwgNjYsIDY1LCA4MywgNjUsIDIwNiwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgNjksIDEyOCwgNjksIAorICAgIDc2LCA2NSwgNzcsIDczLCA4NCwgMTk3LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCA4NCwgCisgICAgODIsIDY5LCA4MCwgODQsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIDc5LCA3OCwgNzMsIDg0LCAKKyAgICA3MywgNzUsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc1LCA2NSwgNzcsIDEyOCwgNjksIAorICAgIDc0LCA2OSwgNjcsIDIxMiwgNjksIDczLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgCisgICAgNzEsIDcyLCA4NCwgMjE3LCA2OSwgNzMsIDcxLCA3MiwgODQsIDczLCA2OSwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIAorICAgIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCAKKyAgICAyMDYsIDY5LCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDczLCA2OSwgCisgICAgMTI4LCA2OSwgNzIsIDg3LCA2NSwgMjE4LCA2OSwgNzIsIDg0LCA4MywgNjUsIDEyOCwgNjksIDcyLCA4NCwgNjUsIDEyOCwgCisgICAgNjksIDcyLCA4MCwgNjUsIDEyOCwgNjksIDcyLCA3NSwgNjUsIDEyOCwgNjksIDcyLCA2NywgNzIsIDY1LCAxMjgsIDY5LCAKKyAgICA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA4OSwgMTI4LCA2OSwgNzEsIAorICAgIDczLCA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA2OSwgCisgICAgNzUsIDY1LCA2NSwgMTI4LCA2OSwgNjksIDcyLCAxMjgsIDY5LCA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIAorICAgIDEyOCwgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgCisgICAgNjgsIDEyOCwgNjksIDY3LCA4MywgMTI4LCA2OSwgNjYsIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCAKKyAgICA4NCwgNjksIDgyLCAyMDYsIDY5LCA2NSwgODMsIDg0LCAxMjgsIDY5LCA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIAorICAgIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgNjksIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgCisgICAgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCA3NywgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAKKyAgICAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIAorICAgIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgNDgsIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgCisgICAgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgCisgICAgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIDEyOCwgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCAKKyAgICA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIAorICAgIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgNTAsIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAxMjgsIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgCisgICAgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCAKKyAgICA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIAorICAgIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAxMjgsIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgCisgICAgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgNTMsIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgNjksIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgCisgICAgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCAKKyAgICA2NSwgMTI4LCA2OCwgOTAsIDg5LCA2NSwgODksIDEyOCwgNjgsIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCAKKyAgICA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIDY4LCA5MCwgNzMsIDg0LCA2NSwgMTI4LCA2OCwgOTAsIAorICAgIDczLCAxMjgsIDY4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA2OCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDcyLCA2NSwgCisgICAgMTI4LCA2OCwgOTAsIDY5LCA3NiwgNzksIDEyOCwgNjgsIDkwLCA2OSwgNjksIDEyOCwgNjgsIDkwLCA2OSwgMTI4LCA2OCwgCisgICAgOTAsIDY1LCA4OSwgMTI4LCA2OCwgOTAsIDY1LCA2NSwgMTI4LCA2OCwgOTAsIDY1LCAxMjgsIDY4LCA5MCwgMTI4LCA2OCwgCisgICAgMjE4LCA2OCwgODksIDc5LCAxMjgsIDY4LCA4OSwgMjA3LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCAxOTUsIDY4LCA4OSwgCisgICAgNjksIDcyLCAxMjgsIDY4LCA4OSwgNjksIDIwMCwgNjgsIDg5LCA2NSwgNzgsIDEyOCwgNjgsIDg3LCA3OSwgMTI4LCA2OCwgCisgICAgODcsIDY5LCAxMjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDg2LCA3MywgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY4LCAKKyAgICA4NiwgNjgsIDEyOCwgNjgsIDg2LCAxMjgsIDY4LCA4NSwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDg1LCA4MywgNzUsIAorICAgIDEyOCwgNjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA4NSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OCwgODUsIDgyLCA1MCwgMTI4LCA2OCwgODUsIDgwLCA3OSwgNzgsIDY4LCA3MywgODUsIDIxMSwgNjgsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgODUsIDc4LCA1MiwgMTI4LCA2OCwgODUsIDc4LCA1MSwgMTI4LCAKKyAgICA2OCwgODUsIDc4LCAxNzksIDY4LCA4NSwgNzcsIDEyOCwgNjgsIDg1LCAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCAKKyAgICA3MSwgODUsIDY4LCAxMjgsIDY4LCA4NSwgMTk5LCA2OCwgODUsIDY3LCA3NSwgMTI4LCA2OCwgODUsIDY2LCA1MCwgMTI4LCAKKyAgICA2OCwgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgODIsIDg5LCAxMjgsIDY4LCA4MiwgMjE3LCA2OCwgODIsIDg1LCAKKyAgICA3NywgODMsIDg0LCA3MywgNjcsIDc1LCA4MywgMTI4LCA2OCwgODIsIDg1LCA3NywgMTI4LCA2OCwgODIsIDg1LCAyMDUsIAorICAgIDY4LCA4MiwgNzksIDgwLCA4MywgMTI4LCA2OCwgODIsIDc5LCA4MCwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgCisgICAgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDY4LCA4MiwgNzksIDc5LCA3NiwgNzMsIDc4LCAxOTksIDY4LCAKKyAgICA4MiwgNzksIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIDczLCA4NiwgNjksIDEyOCwgNjgsIDgyLCA3MywgODYsIAorICAgIDE5NywgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgNzMsIDIwNCwgNjgsIDgyLCA2OSwgODMsIDgzLCAxMjgsIAorICAgIDY4LCA4MiwgNjksIDY1LCA3NywgMjE3LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIDY1LCA3NywgCisgICAgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCAKKyAgICAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCA4MywgCisgICAgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIDY4LCAKKyAgICA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCA3OCwgCisgICAgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCA2OCwgNzksIDg2LCAKKyAgICAxOTcsIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgNjgsIAorICAgIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA2OCwgCisgICAgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDg0LCA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCisgICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAKICAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIAogICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NiwgCiAgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCAKQEAgLTQyODYsMjYzICs0MzI0LDg1NCBAQAogICAgIDcxLCAxMjgsIDY4LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzcsIDY1LCA3MywgMjA2LCA2OCwgNzksIDc2LCA4MCwgCiAgICAgNzIsIDczLCA3OCwgMTI4LCA2OCwgNzksIDc2LCA3NiwgODMsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDY1LCAyMTAsIDY4LCAKICAgICA3OSwgNzYsIDczLCA4NSwgNzcsIDEyOCwgNjgsIDc5LCA3NSwgNzcsIDY1LCA3MywgMTI4LCA2OCwgNzksIDczLCA4NCwgCi0gICAgMTI4LCA2OCwgNzksIDczLCAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIDY4LCA3OSwgNjksIDIxMSwgNjgsIAotICAgIDc5LCA2OCwgNjksIDc1LCA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjcsIDg1LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgCi0gICAgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCAKLSAgICA2NSwgODMsIDcyLCA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIAotICAgIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIAotICAgIDEyOCwgNjgsIDc2LCA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA2OCwgNzYsIAotICAgIDcyLCA2NSwgMTI4LCA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAxMjgsIDY4LCA3NiwgMTI4LCA2OCwgNzUsIAotICAgIDY1LCA4MiwgMTI4LCA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCA4NiwgNzMsIDEyOCwgNjgsIDc0LCA2OSwgCi0gICAgODIsIDg2LCAxMjgsIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgCi0gICAgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCAKLSAgICA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIAotICAgIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgODMsIDEyOCwgNjgsIDczLCA4NiwgCi0gICAgNzMsIDY4LCA2OSwgODIsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKLSAgICAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgMTk3LCA2OCwgNzMsIDg2LCA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgCi0gICAgMTI4LCA2OCwgNzMsIDg0LCA4NCwgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2OCwgNzMsIDgzLCA4NCwgNzMsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3NiwgCi0gICAgNzYsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCAKLSAgICA3NiwgODYsIDY5LCAxMjgsIDY4LCA3MywgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIAotICAgIDc1LCAxMjgsIDY4LCA3MywgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgCi0gICAgODMsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCAKLSAgICA2NSwgODAsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIAotICAgIDczLCA4MiwgNzEsIDE5MywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA3MywgODAsIDg0LCAKLSAgICA2OSwgMTI4LCA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIAotICAgIDY4LCA3MywgODAsIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgNzMsIDc4LCA3MSwgNjYsIDY1LCAKLSAgICAyMTIsIDY4LCA3MywgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIAotICAgIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgNTAsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIAotICAgIDc3LCA3MywgNzgsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgNzcsIDczLCA2OCwgNzMsIDE5MywgCi0gICAgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIAotICAgIDc5LCAyMDYsIDY4LCA3MywgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDE3OCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgNzMsIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCA2NSwgCi0gICAgNzcsIDc3LCA3OSwgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIAotICAgIDIwNSwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAKLSAgICAyMDYsIDY4LCA3MywgNzEsIDczLCA4NCwgODMsIDEyOCwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIAotICAgIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgCi0gICAgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCAKLSAgICA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgCi0gICAgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAKLSAgICAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIAotICAgIDgzLCA2OSwgMjA0LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgNzMsIAotICAgIDY1LCA4NCwgNzksIDc4LCA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCA2NSwgCi0gICAgODMsIDg0LCA3OSwgNzYsIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDc3LCAKLSAgICA3OSwgNzgsIDY4LCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgNjksIAotICAgIDIxMCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgCi0gICAgNzUsIDE5MywgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAKLSAgICA3NiwgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIAotICAgIDY5LCA4MywgNzMsIDgzLCA0NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAKLSAgICA4MywgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIAotICAgIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDczLCA3MywgMTI4LCA2OCwgNzIsIDczLCAxMjgsIAotICAgIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgCi0gICAgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCAKLSAgICA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIAotICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgCi0gICAgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCAKLSAgICA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIAotICAgIDkwLCAyMDAsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTMsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAKLSAgICAyMTEsIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2OCwgNjksIDg2LCA3MywgNjcsIDE5NywgNjgsIDY5LCA4NiwgNjksIAotICAgIDc2LCA3OSwgODAsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA2OCwgNjksIDgzLCA3NSwgCi0gICAgODQsIDc5LCAyMDgsIDY4LCA2OSwgODMsIDIwMywgNjgsIDY5LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2OCwgNjksIDgzLCAKLSAgICA3MywgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDg0LCAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgMjEyLCA2OCwgNjksIAotICAgIDgzLCA2OSwgODIsIDY5LCAyMTIsIDY4LCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA2OSwgCi0gICAgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCAKLSAgICA2OCwgNjksIDgyLCA2OSwgODQsIDQ1LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDg0LCAxMjgsIAotICAgIDY4LCA2OSwgODIsIDY5LCA3NiwgNzMsIDY3LCAyMTIsIDY4LCA2OSwgODAsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDgwLCA2NSwgCi0gICAgODIsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDY5LCAKLSAgICA4MCwgNjUsIDgyLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA2OSwgNzgsIDg0LCA3MywgODMsIDg0LCA4MiwgMjE3LCA2OCwgNjksIAotICAgIDc4LCA4NCwgNjUsIDIwNCwgNjgsIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY4LCA2OSwgCi0gICAgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCAyMTAsIDY4LCA2OSwgNzgsIDc4LCA2OSwgNzgsIDEyOCwgNjgsIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNjgsIDY5LCA3OCwgMTk3LCA2OCwgNjksIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA2OCwgNjksIAotICAgIDc2LCA4NCwgNjUsIDEyOCwgNjgsIDY5LCA3NiwgODQsIDE5MywgNjgsIDY5LCA3NiwgODQsIDEyOCwgNjgsIDY5LCA3NiwgCi0gICAgODAsIDcyLCA3MywgMTk1LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCA4MiwgMjE3LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCAKLSAgICA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCA4MiwgMTI4LCA2OCwgNjksIAotICAgIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDIxMCwgNjgsIDY5LCA3NiwgNzMsIDY3LCA3MywgNzksIDg1LCAyMTEsIDY4LCA2OSwgCi0gICAgNzYsIDY5LCA4NCwgNjksIDEyOCwgNjgsIDY5LCA3NiwgNjksIDg0LCAxOTcsIDY4LCA2OSwgNzUsIDY1LCAxMjgsIDY4LCAKLSAgICA2OSwgNzUsIDEyOCwgNjgsIDY5LCA3MywgMTI4LCA2OCwgNjksIDcyLCA3MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIAotICAgIDY5LCA4MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIDE5NywgNjgsIDY5LCA3MCwgNzMsIDc4LCA3MywgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjgsIDY5LCA3MCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgMjExLCA2OCwgNjksIDY5LCAKLSAgICA4MiwgMTI4LCA2OCwgNjksIDY5LCA4MCwgNzYsIDg5LCAxMjgsIDY4LCA2OSwgNjksIDc2LCAxMjgsIDY4LCA2OSwgNjcsIAotICAgIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3OSwgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDEyOCwgCi0gICAgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA4NiwgMTk3LCAKLSAgICA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNjksIDY3LCA3MywgODMsIDczLCA4NiwgCi0gICAgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY4LCA2OSwgNjcsIDczLCA3NywgNjUsIDIwNCwgNjgsIDY5LCA2NywgNzMsIDY4LCAKLSAgICA4NSwgNzksIDg1LCAyMTEsIDY4LCA2OSwgNjcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDY3LCA2NSwgODksIAotICAgIDY5LCA2OCwgMTI4LCA2OCwgNjksIDY2LCA3MywgMjEyLCA2OCwgNjksIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA2NSwgCi0gICAgNjgsIDEyOCwgNjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDY4LCA4NSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgODQsIDEyOCwgCi0gICAgNjgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDgyLCAxMjgsIDY4LCA2OCwgODUsIDgwLCAxMjgsIDY4LCAKLSAgICA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODAsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIAotICAgIDY4LCA4NSwgMTI4LCA2OCwgNjgsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDc5LCA4NCwgMTI4LCA2OCwgNjgsIDc5LCA4MCwgCi0gICAgMTI4LCA2OCwgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNjgsIDczLCA4OCwgMTI4LCA2OCwgNjgsIDczLCA4NCwgMTI4LCA2OCwgCi0gICAgNjgsIDczLCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNjgsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCAKLSAgICA2OCwgNzMsIDY5LCAxMjgsIDY4LCA2OCwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDY4LCA3MiwgNzksIAotICAgIDEyOCwgNjgsIDY4LCA3MiwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNzIsIDY5LCAxMjgsIAotICAgIDY4LCA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjgsIDY5LCA4OCwgMTI4LCA2OCwgCi0gICAgNjgsIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDY5LCAxMjgsIDY4LCA2OCwgNjgsIDcyLCAKLSAgICA2NSwgMTI4LCA2OCwgNjgsIDY4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIAotICAgIDY4LCA2NSwgODgsIDEyOCwgNjgsIDY4LCA2NSwgODQsIDEyOCwgNjgsIDY4LCA2NSwgODAsIDEyOCwgNjgsIDY4LCA2NSwgCi0gICAgNzYsIDEyOCwgNjgsIDY4LCA2NSwgMjA0LCA2OCwgNjgsIDY1LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDcyLCAKLSAgICA2NSwgMjA0LCA2OCwgNjgsIDY1LCA2NSwgMTI4LCA2OCwgNjcsIDgzLCAxMjgsIDY4LCA2NywgNzIsIDY5LCAxMjgsIDY4LCAKLSAgICA2NywgNTIsIDEyOCwgNjgsIDY3LCA1MSwgMTI4LCA2OCwgNjcsIDUwLCAxMjgsIDY4LCA2NywgNDksIDEyOCwgNjgsIDE5NCwgCi0gICAgNjgsIDY1LCA4OSwgNDUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2OCwgNjUsIDIxNywgNjgsIDY1LCA4NywgNjYsIAotICAgIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY4LCA2NSwgODYsIDczLCA2OCwgMTI4LCA2OCwgCi0gICAgNjUsIDg0LCAxOTcsIDY4LCA2NSwgODMsIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgzLCA3MywgMTkzLCA2OCwgNjUsIDgzLCAKLSAgICA3MiwgNjksIDE5NiwgNjgsIDY1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA4MywgMjAwLCA2OCwgNjUsIDgzLCA2OSwgNzMsIAotICAgIDY1LCAxMjgsIDY4LCA2NSwgODIsIDg0LCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDY4LCA2NSwgODIsIDIwMywgNjgsIDY1LCA4MiwgNzEsIDY1LCAKLSAgICAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MiwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTEsIDEyOCwgNjgsIDY1LCA4MiwgMTI4LCAKLSAgICA2OCwgNjUsIDgwLCA0NSwgODAsIDgyLCA2NSwgMjA1LCA2OCwgNjUsIDgwLCA0NSwgODAsIDczLCAyMDEsIDY4LCA2NSwgODAsIAotICAgIDQ1LCA3NywgODUsIDc5LCAyMTcsIDY4LCA2NSwgODAsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDY4LCA2NSwgODAsIDQ1LCA2NiwgCi0gICAgNjksIDIwMSwgNjgsIDY1LCAyMDgsIDY4LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNjgsIDY1LCA3OCwgNzEsIDc5LCAKLSAgICAxMjgsIDY4LCA2NSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDE5OSwgNjgsIDY1LCA3OCwgNjgsIDY1LCAxMjgsIDY4LCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3NywgODAsIDEyOCwgNjgsIDY1LCA3NywgMjA4LCA2OCwgNjUsIAotICAgIDc3LCA3NywgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDIwNiwgNjgsIDY1LCA3NywgCi0gICAgNzcsIDY1LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA2NSwgNzcsIDY1LCA4MiwgODUsIDEyOCwgNjgsIDY1LCAKLSAgICA3NiwgNjksIDg0LCA3MiwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIAotICAgIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgNzYsIDY4LCA2NSwgMTI4LCA2OCwgCi0gICAgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCA2OCwgNjUsIDc2LCA2NSwgODQsIAotICAgIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzMsIDEyOCwgNjgsIAotICAgIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgNDUsIDUwLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCAKLSAgICA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgODMsIDEyOCwgNjgsIDY1LCA3MSwgNzEsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIAotICAgIDcxLCA3MSwgNjksIDIxMCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA2OSwgODMsIDIwMCwgCi0gICAgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgNjUsIDIxOCwgNjgsIDY1LCAKLSAgICA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgNTEsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIAotICAgIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIAotICAgIDgzLCA4NSwgMTI4LCA2OCwgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MiwgMTI4LCA2OCwgCi0gICAgNDgsIDU0LCA1NSwgNzEsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcwLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OSwgMTI4LCAKLSAgICA2OCwgNDgsIDU0LCA1NSwgNjgsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY3LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NiwgCi0gICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDEyOCwgNjgsIDQ4LCA1NCwgNTQsIDEyOCwgCi0gICAgNjgsIDQ4LCA1NCwgNTMsIDEyOCwgNjgsIDQ4LCA1NCwgNTIsIDEyOCwgNjgsIDQ4LCA1NCwgNTEsIDEyOCwgNjgsIDQ4LCAKLSAgICA1NCwgNTAsIDEyOCwgNjgsIDQ4LCA1NCwgNDksIDEyOCwgNjgsIDQ4LCA1NCwgNDgsIDEyOCwgNjgsIDQ4LCA1MywgNTcsIAotICAgIDEyOCwgNjgsIDQ4LCA1MywgNTYsIDEyOCwgNjgsIDQ4LCA1MywgNTUsIDEyOCwgNjgsIDQ4LCA1MywgNTQsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNTMsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUyLCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDUxLCAxMjgsIDY4LCA0OCwgNTMsIDUwLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA0OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzMsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcyLCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDQ4LCA3MSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzAsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDQ4LCA2OCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjcsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgMTI4LCA2OCwgNDgsIDUyLCA1NywgMTI4LCA2OCwgNDgsIAotICAgIDUyLCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDEyOCwgNjgsIDQ4LCA1MiwgNTUsIDEyOCwgNjgsIDQ4LCA1MiwgCi0gICAgNTQsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCAxMjgsIDY4LCA0OCwgNTIsIDUzLCAxMjgsIDY4LCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDY4LCA0OCwgNTIsIDUxLCAxMjgsIDY4LCA0OCwgNTIsIDUwLCAxMjgsIDY4LCA0OCwgNTIsIDQ5LCAxMjgsIDY4LCAKLSAgICA0OCwgNTIsIDQ4LCAxMjgsIDY4LCA0OCwgNTEsIDU3LCAxMjgsIDY4LCA0OCwgNTEsIDU2LCAxMjgsIDY4LCA0OCwgNTEsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTEsIDU0LCAxMjgsIDY4LCA0OCwgNTEsIDUzLCAxMjgsIDY4LCA0OCwgNTEsIDUyLCA2NSwgCi0gICAgMTI4LCA2OCwgNDgsIDUxLCA1MiwgMTI4LCA2OCwgNDgsIDUxLCA1MSwgMTI4LCA2OCwgNDgsIDUxLCA1MCwgMTI4LCA2OCwgCi0gICAgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDEyOCwgNjgsIDQ4LCA1MSwgNDgsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgNjgsIDQ4LCA1MCwgNTYsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTAsIDU0LCAxMjgsIDY4LCA0OCwgNTAsIDUzLCAxMjgsIDY4LCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDY4LCA0OCwgNTAsIDUxLCAxMjgsIDY4LCA0OCwgNTAsIDUwLCAxMjgsIDY4LCA0OCwgNTAsIDQ5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDY4LCA0OCwgNDksIDU3LCAxMjgsIDY4LCA0OCwgNDksIDU2LCAxMjgsIDY4LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDY4LCA0OCwgNDksIDU0LCAxMjgsIDY4LCA0OCwgNDksIDUzLCAxMjgsIDY4LCA0OCwgNDksIDUyLCAxMjgsIDY4LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDY4LCA0OCwgNDksIDUwLCAxMjgsIDY4LCA0OCwgNDksIDQ5LCAxMjgsIDY4LCA0OCwgNDksIAotICAgIDQ4LCAxMjgsIDY4LCA0OCwgNDgsIDU3LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA2OCwgNDgsIDQ4LCA1NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NCwgMTI4LCA2OCwgNDgsIDQ4LCA1MywgMTI4LCA2OCwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA2OCwgNDgsIDQ4LCA1MSwgMTI4LCA2OCwgNDgsIDQ4LCA1MCwgMTI4LCA2OCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NywgODksIDg4LCAxMjgsIDY3LCA4OSwgODQsIDEyOCwgNjcsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDg5LCAKLSAgICA4MiwgNjksIDc4LCA2NSwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgMTI4LCA2NywgODksIDgwLCA4MiwgNzMsIDc5LCAyMTIsIAotICAgIDY3LCA4OSwgODAsIDY5LCA4MiwgODUsIDgzLCAxMjgsIDY3LCA4OSwgODAsIDEyOCwgNjcsIDg5LCA3NiwgNzMsIDc4LCA2OCwgCi0gICAgODIsIDczLCA2NywgNzMsIDg0LCA4OSwgMTI4LCA2NywgODksIDY3LCA3NiwgNzksIDc4LCA2OSwgMTI4LCA2NywgODksIDY1LCAKLSAgICA4OSwgMTI4LCA2NywgODksIDY1LCA4NywgMTI4LCA2NywgODksIDY1LCAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCAKLSAgICA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIAotICAgIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIAotICAgIDg1LCA4NSwgMTI4LCA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgCi0gICAgODQsIDc5LCA3NywgNjksIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDg1LCA4MywgODAsIAotICAgIDEyOCwgNjcsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCA4NiwgCi0gICAgNjksIDY4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCAKLSAgICA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgNjcsIAotICAgIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCA2NywgCi0gICAgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCAxOTYsIDY3LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDY3LCA4NSwgNzksIDgwLCAxMjgsIDY3LCA4NSwgNzksIDEyOCwgNjcsIDg1LCAyMDUsIDY3LCAKLSAgICA4NSwgNjYsIDY5LCA2OCwgMTI4LCA2NywgODUsIDY2LCAxOTcsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgNzksIAotICAgIDEyOCwgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCAyMDcsIDY3LCA4NSwgNjUsIDIwNSwgNjcsIDg1LCAxMjgsIAotICAgIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgCi0gICAgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCA2NywgODIsIDg1LCA5MCwgNjksIDczLCAKLSAgICA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIAotICAgIDY5LCA0NSwgNTMsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTIsIDEyOCwgNjcsIDgyLCA4NSwgCi0gICAgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTEsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTAsIAotICAgIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNzksIDg3LCA3OCwgMTI4LCA2NywgCi0gICAgODIsIDc5LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDE5OSwgNjcsIDgyLCAKLSAgICA3OSwgODMsIDgzLCA3MiwgNjUsIDg0LCA2NywgMjAwLCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgNDUsIDg0LCA2NSwgCi0gICAgNzMsIDc2LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIAotICAgIDE5NiwgNjcsIDgyLCA3OSwgODMsIDgzLCA2NiwgNzksIDc4LCA2OSwgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAKLSAgICAxMjgsIDY3LCA4MiwgNzksIDgzLCAyMTEsIDY3LCA4MiwgNzksIDgwLCAxMjgsIDY3LCA4MiwgNzksIDczLCA4OCwgMTI4LCAKLSAgICA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCA2OSwgMTI4LCA2NywgODIsIAotICAgIDczLCA2NywgNzUsIDY5LCAyMTIsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgODMsIDEyOCwgNjcsIDgyLCA2OSwgCi0gICAgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAyMTIsIDY3LCA4MiwgNjksIDY4LCAKLSAgICA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIDY5LCA2NSwgNzcsIDEyOCwgNjcsIAotICAgIDgyLCA2NSwgODksIDc5LCA3OCwgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCA4MiwgMTI4LCA2NywgODIsIDY1LCA2NiwgCi0gICAgMTI4LCA2NywgODIsIDEyOCwgNjcsIDc5LCA4OCwgMTI4LCA2NywgNzksIDg3LCAxMjgsIDY3LCA3OSwgMjE1LCA2NywgNzksIAotICAgIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4NSwgODAsIDc2LCAxOTcsIDY3LCA3OSwgODUsIDc4LCA4NCwgNzMsIDc4LCAKLSAgICAxOTksIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgNzMsIDc4LCA3NSwgMTI4LCA2NywgNzksIDg1LCA3OCwgODQsIAotICAgIDY5LCA4MiwgNjYsIDc5LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDY3LCA3MywgMjA0LCA2NywgNzksIDg1LCA2NywgCi0gICAgMjAwLCA2NywgNzksIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDY4LCAyMTEsIDY3LCAKLSAgICA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA4MywgNjksIDEyOCwgNjcsIDc5LCA4MiwgODAsIAotICAgIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDY3LCA3OSwgCi0gICAgODIsIDc4LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCAKLSAgICAyMTAsIDY3LCA3OSwgODIsIDc1LCAxMjgsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjcsIAotICAgIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY3LCA3OSwgODAsIDg5LCAxMjgsIDY3LCA3OSwgODAsIDgyLCA3OSwgCi0gICAgNjgsIDg1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDY3LCA3OSwgODAsIDgwLCAKLSAgICA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MCwgMTI4LCA2NywgNzksIDc5LCA3NiwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDY5LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA2OSwgMTk2LCA2NywgCi0gICAgNzksIDc5LCAxMjgsIDY3LCA3OSwgNzgsIDg2LCA2OSwgODIsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODYsIDY5LCAKLSAgICA3OCwgNzMsIDY5LCA3OCwgNjcsIDE5NywgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OCwgODQsIAotICAgIDgyLCA3OSwgMjA0LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA4MiwgNzMsIDY5LCA4NCwgODksIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODQsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDgyLCA2OSwgMTk2LCAKLSAgICA2NywgNzksIDc4LCA4NCwgNzksIDg1LCAyMTAsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA3MywgNzgsIDE5OSwgNjcsIAotICAgIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzgsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzcsIDgwLCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAyMTEsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgMjA2LCA2NywgNzksIDc4LCA4NCwgNjUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgCi0gICAgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCAKLSAgICA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4MywgNjksIAotICAgIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA3MywgNzgsIAotICAgIDE5OSwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgCi0gICAgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIAotICAgIDIxMiwgNjcsIDc5LCA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgCi0gICAgNzgsIDcwLCA4NSwgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCAKLSAgICA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIAotICAgIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCAKLSAgICA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIAotICAgIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIAotICAgIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgCi0gICAgNzksIDc3LCA4MCwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgCi0gICAgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAKLSAgICA3OSwgMjA2LCA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIAotICAgIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgCi0gICAgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIDc2LCA4NSwgNzcsIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzYsIDc5LCA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NiwgCi0gICAgNzYsIDEyOCwgNjcsIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAxMjgsIDY3LCA3OSwgNjksIDc4LCAKLSAgICA3MSwgMTI4LCA2NywgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCA2NywgNzksIDY3LCA3NSwgODQsIAotICAgIDY1LCA3MywgMjA0LCA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDY1LCAxMjgsIDY3LCA3NywgCi0gICAgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCA2NywgCi0gICAgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIDg1LCAKLSAgICAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgNzksIAotICAgIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCA2NywgCi0gICAgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIDc2LCAKLSAgICA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIAotICAgIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCA4MCwgCi0gICAgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc4LCAKLSAgICA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgNzAsIAotICAgIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCA2OSwgCi0gICAgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIDY1LCAKLSAgICA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCA3NiwgNjUsIDgzLCA4MywgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA2NywgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAyMTAsIDY3LCAKLSAgICA3NiwgNjUsIDc4LCAxMjgsIDY3LCA3NiwgNjUsIDIwNiwgNjcsIDc2LCA2NSwgNzcsIDgzLCA3MiwgNjksIDc2LCAyMDQsIAotICAgIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCA4OCwgMTI4LCA2NywgNzMsIDg2LCA3MywgCi0gICAgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2NywgNzMsIDg0LCAKLSAgICA4OSwgODMsIDY3LCA2NSwgODAsIDE5NywgNjcsIDczLCA4NCwgMjAxLCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCAKLSAgICA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgODIsIAotICAgIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgCi0gICAgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgMTk5LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgNzMsIDgyLCAKLSAgICA2NywgNzYsIDY5LCAyMTEsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDY4LCAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIAotICAgIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAxMjgsIDY3LCA3MywgNzgsIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCAKKyAgICAxMjgsIDY4LCA3OSwgNzMsIDc4LCAxOTksIDY4LCA3OSwgNzMsIDEyOCwgNjgsIDc5LCA3MSwgMTI4LCA2OCwgNzksIDE5OSwgCisgICAgNjgsIDc5LCA2OSwgMjExLCA2OCwgNzksIDY4LCA2OSwgNzUsIDY1LCA4NCwgNjUsIDEyOCwgNjgsIDc5LCA2NywgODUsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3OSwgNjcsIDg1LCA3NywgNjksIDc4LCAyMTIsIDY4LCA3OSwgNjYsIDgyLCA3OSwgCisgICAgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCAKKyAgICA2NSwgODMsIDcyLCA3NywgNjksIDE5NywgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIAorICAgIDEyOCwgNjgsIDIwNSwgNjgsIDc2LCA4NSwgMTI4LCA2OCwgNzYsIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCAKKyAgICA3MiwgODksIDY1LCAxMjgsIDY4LCA3NiwgNzIsIDY1LCAxMjgsIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIAorICAgIDEyOCwgNjgsIDc2LCAxMjgsIDY4LCA3NSwgNjUsIDgyLCAxMjgsIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIAorICAgIDg2LCA3MywgMTI4LCA2OCwgNzQsIDY5LCA4MiwgODYsIDEyOCwgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIAorICAgIDY4LCA3MywgOTAsIDkwLCAyMTcsIDY4LCA3MywgODYsIDc5LCA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAorICAgIDgyLCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKKyAgICAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIAorICAgIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA3MywgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgCisgICAgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCAKKyAgICA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDEyOCwgNjgsIDczLCA4MywgODAsIDg1LCA4NCwgNjksIAorICAgIDE5NiwgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgNzUsIDEyOCwgCisgICAgNjgsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgNjcsIDc5LCAKKyAgICA3OCwgODQsIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIDY1LCA4MCwgODAsIAorICAgIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzMsIDgyLCA3MSwgCisgICAgMTkzLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAKKyAgICA2NSwgMjA0LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNjgsIDczLCA4MCwgODQsIDY5LCAxMjgsIAorICAgIDY4LCA3MywgODAsIDgwLCA2OSwgODIsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjgsIDczLCA4MCwgCisgICAgNzYsIDczLCAxMjgsIDY4LCA3MywgODAsIDc2LCAyMDEsIDY4LCA3MywgNzgsIDcxLCA2NiwgNjUsIDIxMiwgNjgsIDczLCAKKyAgICAyMDYsIDY4LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIAorICAgIDc4LCA0NSwgNTEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MCwgMTI4LCA2OCwgCisgICAgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDQ5LCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgNzMsIAorICAgIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDczLCA3NywgNzMsIDY4LCA3MywgMTkzLCA2OCwgNzMsIDc3LCA2OSwgCisgICAgNzgsIDgzLCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCAKKyAgICA3NywgNTAsIDEyOCwgNjgsIDczLCA3NywgMTc4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKKyAgICAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNzMsIAorICAgIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNjgsIDczLCA3MSwgCisgICAgNzMsIDg0LCA4MywgMTI4LCA2OCwgNzMsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNzMsIDcxLCAxOTMsIDY4LCAKKyAgICA3MywgNzAsIDg0LCA3OSwgNzEsIDcxLCA3OSwgMjExLCA2OCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNjgsIAorICAgIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgMjE3LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCAKKyAgICA3MywgNjksIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgNjgsIAorICAgIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA2OCwgNzMsIDcwLCA2NSwgODQsIDEyOCwgNjgsIDczLCA2OSwgCisgICAgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDczLCA2OSwgODMsIDY5LCAyMDQsIDY4LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIDY2LCAxMjgsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIAorICAgIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgMjAxLCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgCisgICAgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIAorICAgIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgNzMsIDY1LCA3NywgNjksIDg0LCA2OSwgMjEwLCA2OCwgCisgICAgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgMTkzLCAKKyAgICA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDc2LCAxMjgsIAorICAgIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCAKKyAgICA3MywgODMsIDQ1LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIAorICAgIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA2OCwgNzIsIDc5LCA4NSwgMTI4LCA2OCwgNzIsIDc5LCA3OSwgCisgICAgMTI4LCA2OCwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzMsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgCisgICAgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIAorICAgIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA2OCwgCisgICAgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCAKKyAgICA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgNjgsIAorICAgIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIDkwLCAyMDAsIDY4LCA2OSwgODksIDg0LCA2OSwgCisgICAgODIsIDc5LCAyMTMsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTEsIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCAKKyAgICA2OCwgNjksIDg2LCA3MywgNjcsIDE5NywgNjgsIDY5LCA4NiwgNjksIDc2LCA3OSwgODAsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIAorICAgIDY4LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA2OCwgNjksIDgzLCA3NSwgODQsIDc5LCAyMDgsIDY4LCA2OSwgODMsIDIwMywgCisgICAgNjgsIDY5LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2OCwgNjksIDgzLCA3MywgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDg0LCAKKyAgICAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgMjEyLCA2OCwgNjksIDgzLCA2OSwgODIsIDY5LCAyMTIsIDY4LCA2OSwgODMsIAorICAgIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgCisgICAgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDgyLCA2OSwgODQsIDQ1LCA3MiwgNzMsIAorICAgIDY4LCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA3NiwgNzMsIDY3LCAKKyAgICAyMTIsIDY4LCA2OSwgODAsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA4NSwgODIsIDY5LCAxMjgsIAorICAgIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDc4LCAKKyAgICAxOTksIDY4LCA2OSwgNzgsIDg0LCA3MywgODMsIDg0LCA4MiwgMjE3LCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjgsIAorICAgIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY4LCA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCAKKyAgICA2NSwgODQsIDc5LCAyMTAsIDY4LCA2OSwgNzgsIDc4LCA2OSwgNzgsIDEyOCwgNjgsIDY5LCA3OCwgNzEsIDEyOCwgNjgsIAorICAgIDY5LCA3OCwgMTk3LCA2OCwgNjksIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA2OCwgNjksIDc2LCA4NCwgNjUsIDEyOCwgCisgICAgNjgsIDY5LCA3NiwgODQsIDE5MywgNjgsIDY5LCA3NiwgODQsIDEyOCwgNjgsIDY5LCA3NiwgODAsIDcyLCA3MywgMTk1LCAKKyAgICA2OCwgNjksIDc2LCA3MywgODYsIDY5LCA4MiwgMjE3LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCA4MiwgNjUsIDc4LCA2NywgCisgICAgNjksIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDc2LCA3MywgNzcsIDczLCAKKyAgICA4NCwgNjksIDIxMCwgNjgsIDY5LCA3NiwgNzMsIDY3LCA3MywgNzksIDg1LCAyMTEsIDY4LCA2OSwgNzYsIDY5LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY4LCA2OSwgNzYsIDY5LCA4NCwgNjksIDEyOCwgNjgsIDY5LCA3NiwgNjksIDg0LCAxOTcsIDY4LCA2OSwgCisgICAgNzUsIDY1LCAxMjgsIDY4LCA2OSwgNzUsIDEyOCwgNjgsIDY5LCA3MywgMTI4LCA2OCwgNjksIDcyLCA3MywgMTI4LCA2OCwgCisgICAgNjksIDcxLCA4MiwgNjksIDY5LCA4MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIDE5NywgNjgsIDY5LCA3MCwgNzMsIDc4LCAKKyAgICA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA3MCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgCisgICAgMjExLCA2OCwgNjksIDY5LCA4MiwgMTI4LCA2OCwgNjksIDY5LCA4MCwgNzYsIDg5LCAxMjgsIDY4LCA2OSwgNjksIDc2LCAKKyAgICAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3OSwgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIAorICAgIDY1LCA4MywgNjksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgCisgICAgODQsIDczLCA4NiwgMTk3LCA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNjksIDY3LCAKKyAgICA3MywgODMsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY4LCA2OSwgNjcsIDczLCA3NywgNjUsIDIwNCwgNjgsIAorICAgIDY5LCA2NywgNzMsIDY4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA2OSwgNjcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA2OCwgCisgICAgNjksIDY3LCA2NSwgODksIDY5LCA2OCwgMTI4LCA2OCwgNjksIDY2LCA3MywgMjEyLCA2OCwgNjksIDY1LCA4NCwgNzIsIAorICAgIDEyOCwgNjgsIDY5LCA2NSwgNjgsIDEyOCwgNjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDY4LCA4NSwgODgsIDEyOCwgNjgsIAorICAgIDY4LCA4NSwgODQsIDEyOCwgNjgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDgyLCAxMjgsIDY4LCA2OCwgCisgICAgODUsIDgwLCAxMjgsIDY4LCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODAsIDEyOCwgNjgsIDY4LCAKKyAgICA4NSwgNzksIDEyOCwgNjgsIDY4LCA4NSwgMTI4LCA2OCwgNjgsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDc5LCA4NCwgMTI4LCAKKyAgICA2OCwgNjgsIDc5LCA4MCwgMTI4LCA2OCwgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNjgsIDczLCA4OCwgMTI4LCA2OCwgNjgsIAorICAgIDczLCA4NCwgMTI4LCA2OCwgNjgsIDczLCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNjgsIDY4LCA3MywgCisgICAgNjksIDgwLCAxMjgsIDY4LCA2OCwgNzMsIDY5LCAxMjgsIDY4LCA2OCwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgODUsIDEyOCwgCisgICAgNjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCAKKyAgICA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjgsIDY5LCA4OCwgMTI4LCA2OCwgNjgsIAorICAgIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDY5LCAxMjgsIDY4LCA2OCwgNjgsIDcyLCA2NSwgCisgICAgMTI4LCA2OCwgNjgsIDY4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY4LCAKKyAgICA2NSwgODgsIDEyOCwgNjgsIDY4LCA2NSwgODQsIDEyOCwgNjgsIDY4LCA2NSwgODAsIDEyOCwgNjgsIDY4LCA2NSwgNzYsIAorICAgIDEyOCwgNjgsIDY4LCA2NSwgMjA0LCA2OCwgNjgsIDY1LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDcyLCA2NSwgCisgICAgMjA0LCA2OCwgNjgsIDY1LCA2NSwgMTI4LCA2OCwgNjcsIDgzLCAxMjgsIDY4LCA2NywgNzIsIDY5LCAxMjgsIDY4LCA2NywgCisgICAgNTIsIDEyOCwgNjgsIDY3LCA1MSwgMTI4LCA2OCwgNjcsIDUwLCAxMjgsIDY4LCA2NywgNDksIDEyOCwgNjgsIDE5NCwgNjgsIAorICAgIDY1LCA4OSwgNDUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2OCwgNjUsIDIxNywgNjgsIDY1LCA4NywgNjYsIDEyOCwgCisgICAgNjgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY4LCA2NSwgODYsIDczLCA2OCwgMTI4LCA2OCwgNjUsIDg0LCAKKyAgICAxOTcsIDY4LCA2NSwgODMsIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgzLCA3MywgMTkzLCA2OCwgNjUsIDgzLCA3MiwgNjksIAorICAgIDE5NiwgNjgsIDY1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA4MywgMjAwLCA2OCwgNjUsIDgzLCA2OSwgNzMsIDY1LCAxMjgsIAorICAgIDY4LCA2NSwgODIsIDg0LCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA4MiwgCisgICAgNzUsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDY4LCA2NSwgODIsIDIwMywgNjgsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY4LCAKKyAgICA2NSwgODIsIDY1LCA1MiwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTEsIDEyOCwgNjgsIDY1LCA4MiwgMTI4LCA2OCwgNjUsIAorICAgIDgwLCA0NSwgODAsIDgyLCA2NSwgMjA1LCA2OCwgNjUsIDgwLCA0NSwgODAsIDczLCAyMDEsIDY4LCA2NSwgODAsIDQ1LCA3NywgCisgICAgODUsIDc5LCAyMTcsIDY4LCA2NSwgODAsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDY4LCA2NSwgODAsIDQ1LCA2NiwgNjksIAorICAgIDIwMSwgNjgsIDY1LCAyMDgsIDY4LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNjgsIDY1LCA3OCwgNzEsIDc5LCAxMjgsIAorICAgIDY4LCA2NSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDE5OSwgNjgsIDY1LCA3OCwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgCisgICAgNzgsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3NywgODAsIAorICAgIDEyOCwgNjgsIDY1LCA3NywgMjA4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNjgsIDY1LCA3NywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDIwNiwgNjgsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCAxOTMsIDY4LCAKKyAgICA2NSwgNzcsIDY1LCA4MiwgODUsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCA3MiwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIAorICAgIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAKKyAgICAyMTIsIDY4LCA2NSwgNzYsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIAorICAgIDY1LCA4NCwgMjAwLCA2OCwgNjUsIDc2LCA2NSwgODQsIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzMsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgNDUsIDUwLCAKKyAgICAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgODMsIDEyOCwgNjgsIAorICAgIDY1LCA3MSwgNzEsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDIxMCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgCisgICAgMTI4LCA2OCwgNjUsIDcxLCA2OSwgODMsIDIwMCwgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNjgsIDY1LCA3MSwgNjUsIDIxOCwgNjgsIDY1LCA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgCisgICAgNTEsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgCisgICAgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIDgzLCA4NSwgMTI4LCA2OCwgNjUsIDY1LCA3NiwgNzMsIDEyOCwgCisgICAgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcxLCAKKyAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIAorICAgIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIDEyOCwgNjgsIDQ4LCA1NCwgCisgICAgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIDY4LCA0OCwgNTQsIDUzLCAKKyAgICAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgNTQsIDUwLCAxMjgsIDY4LCAKKyAgICA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAxMjgsIDY4LCA0OCwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCA0OCwgNTMsIDUzLCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIDUzLCA1MSwgMTI4LCA2OCwgCisgICAgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgNDksIDEyOCwgNjgsIDQ4LCAKKyAgICA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDY1LCAxMjgsIAorICAgIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2OCwgCisgICAgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgMTI4LCA2OCwgNDgsIDUyLCAKKyAgICA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgNDgsIDUyLCA0OCwgMTI4LCAKKyAgICA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgCisgICAgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgNTAsIDU3LCAxMjgsIDY4LCAKKyAgICA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCA2OCwgNDgsIDUwLCA1MSwgCisgICAgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIDUwLCA0OCwgMTI4LCA2OCwgCisgICAgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgMTI4LCA2OCwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCA0OCwgMTI4LCA2OCwgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDEyOCwgNjgsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIDQ4LCA0OCwgNTIsIDEyOCwgCisgICAgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDg5LCAKKyAgICA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgODIsIDY5LCA3OCwgNjUsIAorICAgIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCA2NywgODksIDgwLCA2OSwgCisgICAgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIDgyLCA3MywgNjcsIDczLCAKKyAgICA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgODksIDEyOCwgNjcsIAorICAgIDg5LCA2NSwgODcsIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgODcsIDc5LCAxMjgsIAorICAgIDY3LCA4NywgNzMsIDczLCAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCA4NCwgNzIsIDEyOCwgCisgICAgNjcsIDg3LCA2OSwgMTI4LCA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCA4NSwgODUsIDEyOCwgCisgICAgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDY5LCAKKyAgICAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA4NSwgODMsIDgwLCAxMjgsIDY3LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgODYsIDY5LCA2OCwgMTI4LCA2NywgCisgICAgODUsIDgyLCA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgODIsIDg2LCAxOTcsIDY3LCAKKyAgICA4NSwgODIsIDgzLCA3MywgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgCisgICAgMTI4LCA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCAKKyAgICAxOTYsIDY3LCA4NSwgNzksIDg4LCAxMjgsIDY3LCA4NSwgNzksIDgwLCAxMjgsIDY3LCA4NSwgNzksIDEyOCwgNjcsIDg1LCAKKyAgICAyMDUsIDY3LCA4NSwgNjcsIDg1LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA2NywgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIAorICAgIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgCisgICAgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDY1LCAyMDUsIDY3LCA4NSwgMTI4LCA2NywgODMsIDczLCAxMjgsIDY3LCA4MiwgCisgICAgODksIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCAKKyAgICA2NywgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIAorICAgIDczLCA3MCwgNzksIDgyLCAyMDUsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUzLCAxMjgsIDY3LCA4MiwgCisgICAgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIAorICAgIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgCisgICAgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgNzksIDgzLCA4MywgNzIsIDY1LCA4NCwgNjcsIAorICAgIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NywgODIsIDc5LCA4MywgCisgICAgODMsIDY5LCA2OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCAKKyAgICA3OCwgNjksIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIAorICAgIDc5LCA4MCwgMTI4LCA2NywgODIsIDc5LCA3MywgODgsIDEyOCwgNjcsIDgyLCA3OSwgNzMsIDgzLCA4MywgNjUsIDc4LCA4NCwgCisgICAgMTI4LCA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCA2OSwgMTI4LCAKKyAgICA2NywgODIsIDczLCA2NywgNzUsIDY5LCAyMTIsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgODMsIDEyOCwgNjcsIAorICAgIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAyMTIsIDY3LCA4MiwgCisgICAgNjksIDY4LCA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIDY5LCA2NSwgNzcsIAorICAgIDEyOCwgNjcsIDgyLCA2NSwgODksIDc5LCA3OCwgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCA4MiwgMTI4LCA2NywgCisgICAgODIsIDY1LCA2NiwgMTI4LCA2NywgODIsIDEyOCwgNjcsIDc5LCA4OCwgMTI4LCA2NywgNzksIDg3LCA2NiwgNzksIDIxNywgCisgICAgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODUsIDgwLCAKKyAgICA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIAorICAgIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgCisgICAgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NSwgNjcsIDIwMCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCAKKyAgICA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA2OCwgMjExLCA2NywgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIAorICAgIDgyLCA4MCwgODMsIDY5LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgCisgICAgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCAKKyAgICA3OCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgMjEwLCA2NywgNzksIDgyLCA3NSwgMTI4LCA2NywgNzksIAorICAgIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgCisgICAgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCAKKyAgICA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIAorICAgIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgCisgICAgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCAKKyAgICA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCA2OSwgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIAorICAgIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgCisgICAgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIDE5NiwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIAorICAgIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIAorICAgIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgCisgICAgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODMsIDg0LCAKKyAgICA2NSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIAorICAgIDc4LCA2NywgODksIDEyOCwgNjcsIDc5LCA3OCwgODMsIDY5LCA2NywgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgCisgICAgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCAKKyAgICA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgCisgICAgNjgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIAorICAgIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgCisgICAgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA3MCwgODUsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc4LCAKKyAgICA3MCwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIAorICAgIDc4LCA3MCwgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAKKyAgICAxOTYsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIAorICAgIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgMTI4LCA2NywgCisgICAgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIAorICAgIDgzLCA2OSwgMTk2LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgCisgICAgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA3MywgCisgICAgNjUsIDc4LCA2NywgNjksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc2LCA2OSwgODQsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA3NywgNjksIDc4LCA4NCwgCisgICAgMTI4LCA2NywgNzksIDc3LCA4MCwgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgNzksIDIwNiwgNjcsIDc5LCAKKyAgICA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDc4LCA2OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA3NywgNjUsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIDg0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDY2LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCA3NiwgODUsIDc3LCA3OCwgMTI4LCA2NywgNzksIDc2LCA3OSwgCisgICAgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzYsIDc2LCAxMjgsIDY3LCAKKyAgICA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgMTI4LCA2NywgNzksIDY5LCA3OCwgNzEsIDEyOCwgNjcsIAorICAgIDc5LCA2OSwgNzgsIDE5OSwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgNjcsIDc5LCA2NywgNzUsIDg0LCA2NSwgNzMsIDIwNCwgCisgICAgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA2NSwgMTI4LCA2NywgNzcsIDEyOCwgNjcsIDIwNSwgCisgICAgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCA2NywgNzYsIDg1LCA2NiwgODMsIDEyOCwgNjcsIDc2LCA4NSwgNjYsIDQ1LCAKKyAgICA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc2LCA4NSwgNjYsIDEyOCwgNjcsIDc2LCA4NSwgMTk0LCA2NywgNzYsIAorICAgIDc5LCA4NywgMjA2LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNzksIDg1LCA2OCwgMTI4LCA2NywgCisgICAgNzYsIDc5LCA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NywgNzYsIDc5LCA4NCwgNzIsIAorICAgIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDc4LCA2OSwgODMsIDgzLCAKKyAgICAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIAorICAgIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCA3MywgODMsIDEyOCwgCisgICAgNjcsIDc2LCA3MywgODAsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA2NywgNzYsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgODMsIDEyOCwgNjcsIAorICAgIDc2LCA3MywgNzAsIDcwLCAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDUwLCAKKyAgICAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIDc2LCA2OSwgMTk4LCAKKyAgICA2NywgNzYsIDY5LCA2NSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgNzYsIDY1LCA4MywgODMsIAorICAgIDczLCA2NywgNjUsIDIwNCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgCisgICAgMjEwLCA2NywgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCAyMDYsIDY3LCA3NiwgNjUsIDc3LCA4MywgNzIsIDY5LCAKKyAgICA3NiwgMjA0LCA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgODgsIDEyOCwgNjcsIDczLCAKKyAgICA4NiwgNzMsIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjcsIAorICAgIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCAxOTcsIDY3LCA3MywgODQsIDIwMSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjcsIDczLCA4NCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCAKKyAgICA3NywgNzAsIDc2LCA2OSwgODgsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIAorICAgIDgyLCA2NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgNjcsIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDc2LCA2OSwgMjExLCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA2OCwgMTI4LCA2NywgNzMsIDgwLCAxMjgsIAorICAgIDY3LCA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgMTI4LCA2NywgNzMsIDc4LCA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgCiAgICAgMjA2LCA2NywgNzMsIDIwNSwgNjcsIDczLCA3MywgMTI4LCA2NywgNzMsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgCiAgICAgNjcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIAogICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKQEAgLTQ1NzYsMzAwICs1MjA1LDMwNCBAQAogICAgIDg2LCA4MiwgNzksIDIwNiwgNjcsIDcyLCA2OSwgODQsIDEyOCwgNjcsIDcyLCA2OSwgODMsIDg0LCA3OCwgODUsIDg0LCAKICAgICAxMjgsIDY3LCA3MiwgNjksIDgzLCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgMjExLCA2NywgNzIsIDY5LCA4MiwgODksIAogICAgIDEyOCwgNjcsIDcyLCA2OSwgODIsIDgyLCAyMTcsIDY3LCA3MiwgNjksIDgyLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NywgCi0gICAgNzIsIDY5LCA4MSwgODUsIDY5LCA4MiwgNjksIDE5NiwgNjcsIDcyLCA2OSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgMjA2LCAKLSAgICA2NywgNzIsIDY5LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNjcsIAotICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MywgMTk3LCA2NywgNzIsIDY5LCA2OSwgCi0gICAgODIsIDczLCA3OCwgMTk5LCA2NywgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDc1LCAyMTEsIDY3LCAKLSAgICA3MiwgNjksIDY5LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIDY5LCAyMTAsIAotICAgIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgCi0gICAgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCAKLSAgICA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIAotICAgIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgCi0gICAgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIAotICAgIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA2NywgCi0gICAgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCAKLSAgICA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIAotICAgIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgMjA1LCA2NywgNzIsIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgCi0gICAgNzMsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA3OCwgODMsIDEyOCwgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCAKLSAgICA3MiwgNjUsIDE5NiwgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDcxLCA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCAKLSAgICA2OSwgODIsIDY5LCA4MywgMTI4LCA2NywgNjksIDgyLCA2OSwgNzcsIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIAotICAgIDc1LCAxMjgsIDY3LCA2OSwgODIsIDQ1LCA4NywgNjUsIDEyOCwgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgCi0gICAgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIAotICAgIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIAotICAgIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIAotICAgIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIAotICAgIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCA4MiwgNzMsIDY1LCAyMDQsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgCi0gICAgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNjgsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCAKLSAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIAotICAgIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjksIDc4LCAxMjgsIDY3LCA2OSwgNzYsIDg0LCA3MywgCi0gICAgMTk1LCA2NywgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDY5LCA2OSwgODYsIDEyOCwgNjcsIDY5LCA2OSwgNjYsIDEyOCwgCi0gICAgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAKLSAgICAxOTMsIDY3LCA2OSwgNjgsIDIwMSwgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCAKLSAgICA2NywgNjksIDY3LCA2NSwgMjAzLCA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIAotICAgIDc5LCAxMjgsIDY3LCA2NywgNzMsIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIAotICAgIDY3LCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgCi0gICAgNjcsIDcyLCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIAotICAgIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgCi0gICAgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCAKLSAgICA2NSwgMTI4LCA2NywgNjcsIDcyLCAxMjgsIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCAKLSAgICA2NSwgNjUsIDEyOCwgNjcsIDY3LCA2NSwgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIAotICAgIDc4LCA2NSwgMTI4LCA2NywgNjUsIDg4LCAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjcsIDY1LCA4NSwgNzYsIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCAKLSAgICA2NywgNjUsIDg1LCA2NywgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4NSwgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIAotICAgIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgNjcsIDY1LCAyMTIsIDY3LCA2NSwgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIAotICAgIDY1LCA4MywgNzUsIDY5LCAyMTIsIDY3LCA2NSwgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgCi0gICAgODIsIDczLCA2OCwgNzEsIDY5LCAxMjgsIDY3LCA2NSwgODIsIDg0LCAxMjgsIDY3LCA2NSwgODIsIDIxMSwgNjcsIDY1LCAKLSAgICA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIDY1LCA4MiwgODAsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgODIsIAotICAgIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgNjksIDIwNCwgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgCi0gICAgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAyMDMsIDY3LCA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCAKLSAgICA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIDIxMiwgNjcsIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgODMsIAotICAgIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDY1LCA4MiwgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgMjEwLCAKLSAgICA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIDgwLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCA4MiwgNzMsIAotICAgIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgNjUsIDgwLCA3OSwgMTI4LCA2NywgCi0gICAgNjUsIDgwLCA3MywgODQsIDg1LCA3NiwgODUsIDc3LCAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDY3LCAKLSAgICA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIAotICAgIDY4LCA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgCi0gICAgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCAKLSAgICA2OCwgODIsIDE5MywgNjcsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIAotICAgIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAKLSAgICAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDgwLCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgCi0gICAgNzcsIDY5LCA4MiwgMTkzLCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCAKLSAgICA2NSwgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIAotICAgIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgMjEwLCA2NywgNjUsIDc2LCA2NywgCi0gICAgODUsIDc2LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgMTI4LCA2NywgNjUsIDc1LCA4MiwgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgNzIsIDEyOCwgNjcsIDY1LCA2OSwgODMsIAotICAgIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjgsIDE5MywgCi0gICAgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIDg3LCA2NSwgODksIDEyOCwgNjcsIDY1LCAKLSAgICA2NiwgNzMsIDc4LCA2OSwgODQsIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIDY5LCA2OSwgCi0gICAgMTI4LCA2NywgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNjcsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNjcsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIAotICAgIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgNDgsIDUzLCAKLSAgICAxMjgsIDY3LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NywgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDY3LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA2NywgCi0gICAgNDUsIDUxLCA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgOTAsIDcyLCAKLSAgICAyMDEsIDY2LCA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCA3OCwgNDUsIAotICAgIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIDEyOCwgCi0gICAgNjYsIDg3LCA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIDc3LCAKLSAgICA3MywgODMsIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCAyMDYsIAotICAgIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCA4NCwgMjExLCA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgCi0gICAgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIDgzLCA3MywgNzgsIDY5LCA4MywgMjExLCA2NiwgODUsIDIxMSwgNjYsIDg1LCAKLSAgICA4MiwgMjEzLCA2NiwgODUsIDgyLCA4MiwgNzMsIDg0LCA3OSwgMTI4LCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIAotICAgIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIAotICAgIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3NywgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgCi0gICAgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIDc2LCA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCAKLSAgICA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDIwNiwgNjYsIAotICAgIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgCi0gICAgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCAKLSAgICA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIAotICAgIDE5OSwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCA3MSwgCi0gICAgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY4LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCAKLSAgICA3NiwgNjksIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgCi0gICAgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgNjUsIDE3MywgCi0gICAgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCAKLSAgICA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIAotICAgIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgCi0gICAgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCAKLSAgICA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIAotICAgIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgCi0gICAgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjksIDY1LCA2OCwgMTI4LCAKLSAgICA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIAotICAgIDcyLCA2OSwgODMsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDIwMCwgCi0gICAgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDY5LCAxOTYsIDY2LCAKLSAgICA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA4MSwgMTI4LCA2NiwgODAsIAotICAgIDcyLCAxMjgsIDY2LCA3OSwgODksIDIxMSwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIAotICAgIDY2LCA3OSwgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgCi0gICAgMTI4LCA2NiwgNzksIDg3LCAyMDQsIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIDc5LCA4NSwgCi0gICAgODEsIDg1LCA2OSwgODQsIDEyOCwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgMjEyLCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCAKLSAgICA4MiwgMjE3LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDY2LCA3OSwgODQsIAotICAgIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgCi0gICAgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAKLSAgICAxOTcsIDY2LCA3OSwgODQsIDIwMCwgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIAotICAgIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgCi0gICAgNjYsIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAKLSAgICAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIAotICAgIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgCi0gICAgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAKLSAgICAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIAotICAgIDEyOCwgNjYsIDc5LCA2OCwgMjE3LCA2NiwgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIAotICAgIDY5LCAxMjgsIDY2LCA3NiwgODUsIDE5NywgNjYsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzYsIDc5LCA4NywgCi0gICAgNzAsIDczLCA4MywgNzIsIDEyOCwgNjYsIDc2LCA3OSwgMjE1LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCAKLSAgICA2NiwgNzYsIDc5LCA3OSwgNjgsIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIAotICAgIDY2LCA3NiwgNzMsIDc4LCAyMDMsIDY2LCA3NiwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAKLSAgICAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzYsIAotICAgIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgCi0gICAgNzUsIDQ1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIAotICAgIDcyLCA2OSwgODIsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgCi0gICAgODQsIDg0LCA2OSwgODIsIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODQsIDE5NywgNjYsIDczLCAKLSAgICA4MywgNzcsIDg1LCA4NCwgMjAwLCA2NiwgNzMsIDgzLCA3NywgNzMsIDc2LCA3NiwgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIAotICAgIDc5LCA4MCwgMTI4LCA2NiwgNzMsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAKLSAgICAxMjgsIDY2LCA3MywgODIsIDg1LCAxMjgsIDY2LCA3MywgODIsIDg0LCA3MiwgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIAotICAgIDcxLCA2NSwgMTI4LCA2NiwgNzMsIDgyLCA2OCwgMTI4LCA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgCi0gICAgNjYsIDczLCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCAKLSAgICA3OCwgNjgsIDczLCAxMjgsIDY2LCA3MywgNzgsIDY1LCA4MiwgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgODMsIAotICAgIDEyOCwgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgCi0gICAgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAKLSAgICAyMDYsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIAotICAgIDgzLCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDY2LCA3MywgNjcsIDY5LCA4MCwgODMsIDEyOCwgCi0gICAgNjYsIDczLCA2NiwgNzYsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA2NiwgNzMsIDY2LCAxMjgsIDY2LCAyMDEsIDY2LCAKLSAgICA3MiwgODUsIDEyOCwgNjYsIDcyLCA3OSwgNzksIDEyOCwgNjYsIDcyLCA3OSwgMTI4LCA2NiwgNzIsIDczLCAxMjgsIDY2LCAKLSAgICA3MiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNzIsIDY5LCA2OSwgMTI4LCA2NiwgNzIsIDY5LCAxMjgsIDY2LCA3MiwgNjUsIAotICAgIDg0LCA4NCwgNzMsIDgwLCA4MiwgNzksIDc2LCAyMTMsIDY2LCA3MiwgNjUsIDc3LCAxMjgsIDY2LCA3MiwgNjUsIDY1LCAKLSAgICAxMjgsIDY2LCA3MiwgNjUsIDEyOCwgNjYsIDY5LCA4OSwgODksIDY1LCA3NiwgMTI4LCA2NiwgNjksIDg4LCAxMjgsIDY2LCAKLSAgICA2OSwgODYsIDY5LCA4MiwgNjUsIDcxLCA2OSwgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCA3OCwgMTI4LCA2NiwgNjksIAotICAgIDg0LCA4NywgNjksIDY5LCAyMDYsIDY2LCA2OSwgODQsIDcyLCAxMjgsIDY2LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgCi0gICAgODQsIDE5MywgNjYsIDY5LCAyMTIsIDY2LCA2OSwgODMsIDczLCA2OCwgMTk3LCA2NiwgNjksIDgyLCA3NSwgNjUsIDc4LCAKLSAgICA2NSwgMjA2LCA2NiwgNjksIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjksIDc5LCA4MiwgMTk1LCAKLSAgICA2NiwgNjksIDc4LCA5MCwgNjksIDc4LCAxOTcsIDY2LCA2OSwgNzgsIDg0LCAyMDcsIDY2LCA2OSwgNzgsIDg0LCAxMjgsIAotICAgIDY2LCA2OSwgNzgsIDIxMiwgNjYsIDY5LCA3OCwgNjgsIDY5LCAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgCi0gICAgNzgsIDE5NiwgNjYsIDY5LCAyMDYsIDY2LCA2OSwgNzYsIDg0LCAxMjgsIDY2LCA2OSwgNzYsIDIxMiwgNjYsIDY5LCA3NiwgCi0gICAgNzksIDIxNSwgNjYsIDY5LCA3NiwgNzYsIDcyLCA3OSwgMjA4LCA2NiwgNjksIDc2LCA3NiwgMTI4LCA2NiwgNjksIDc2LCAKLSAgICAyMDQsIDY2LCA2OSwgNzYsIDcxLCA4NCwgNzIsIDc5LCAyMTAsIDY2LCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA2NiwgNjksIAotICAgIDcyLCA3MywgNzgsIDE5NiwgNjYsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDY5LCAyMDAsIDY2LCA2OSwgCi0gICAgNzIsIDEyOCwgNjYsIDY5LCAyMDAsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDY5LCAKLSAgICA3MSwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDY2LCA2OSwgNzEsIDczLCAyMDYsIDY2LCA2OSwgNzAsIDc5LCA4MiwgCi0gICAgMTk3LCA2NiwgNjksIDY5LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA2OSwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDY5LCAKLSAgICAyMTAsIDY2LCA2OSwgNjksIDcyLCA3MywgODYsIDY5LCAxMjgsIDY2LCA2OSwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNjksIAotICAgIDIwMCwgNjYsIDY5LCA2NywgNjUsIDg1LCA4MywgNjksIDEyOCwgNjYsIDY5LCA2NSwgODYsIDY5LCAyMTAsIDY2LCA2OSwgCi0gICAgNjUsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDY5LCA2NSwgODQsIDEyOCwgNjYsIDY5LCA2NSwgMjEwLCA2NiwgNjksIDY1LCAKLSAgICA3OCwgMTI4LCA2NiwgNjksIDY1LCA3NywgNjksIDE5NiwgNjYsIDY5LCA2NSwgNjgsIDgzLCAxMjgsIDY2LCA2OSwgNjUsIAotICAgIDY3LCAyMDAsIDY2LCA2NywgNjUsIDY4LCAxMjgsIDY2LCA2NywgNjUsIDE5NiwgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIAotICAgIDY2LCA4OSwgODQsIDEyOCwgNjYsIDY2LCA4OSwgODAsIDEyOCwgNjYsIDY2LCA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgCi0gICAgMTI4LCA2NiwgNjYsIDg1LCA4NCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCAKLSAgICA2NiwgNjYsIDg1LCA3OSwgMTI4LCA2NiwgNjYsIDg1LCAxMjgsIDY2LCA2NiwgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIAotICAgIDg0LCAxMjgsIDY2LCA2NiwgNzksIDgwLCAxMjgsIDY2LCA2NiwgNzksIDEyOCwgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIAotICAgIDY2LCA3MywgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgCi0gICAgNjYsIDczLCA2OSwgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDEyOCwgNjYsIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCAKLSAgICA4OCwgMTI4LCA2NiwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDY5LCA2OSwgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCAKLSAgICA2NiwgNjUsIDg4LCAxMjgsIDY2LCA2NiwgNjUsIDg0LCAxMjgsIDY2LCA2NiwgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIAotICAgIDY1LCAxMjgsIDY2LCA2NiwgNjUsIDEyOCwgNjYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgCi0gICAgMTI4LCA2NiwgNjUsIDg0LCA4NCwgNjksIDgyLCA4OSwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCAKLSAgICA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIAotICAgIDg0LCAyMDAsIDY2LCA2NSwgODQsIDY1LCAyMDMsIDY2LCA2NSwgODMsIDgzLCA2NSwgMTI4LCA2NiwgNjUsIDgzLCA4MywgCi0gICAgMTkzLCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIDc2LCAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIAotICAgIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgNjksIDc2LCA3MywgNzgsIDE5NywgNjYsIDY1LCA4MywgCi0gICAgNjksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCAKLSAgICA4MiwgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIAotICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgCi0gICAgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCA4MiwgNzYsIDY5LCA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCAKLSAgICA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIAotICAgIDY2LCA2NSwgMjEwLCA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAKLSAgICAxOTcsIDY2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCAKLSAgICA3OCwgNjUsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIAotICAgIDY2LCA3OSwgNzksIDgzLCAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgCi0gICAgMTI4LCA2NiwgNjUsIDc2LCA3NiwgODAsIDc5LCA3MywgNzgsIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA4NCwgMTI4LCAKLSAgICA2NiwgNjUsIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCA3NSwgCi0gICAgNjksIDE5NiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIDY1LCA3NiwgNjUsIDcxLCAxMjgsIDY2LCAKLSAgICA2NSwgNzYsIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgNjUsIDc4LCAxMjgsIDY2LCA2NSwgNzMsIAotICAgIDc3LCA2NSwgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCA4NSwgCi0gICAgNzUsIDcyLCA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgMTc4LCAKLSAgICA2NiwgNjUsIDcyLCAxMjgsIDY2LCA2NSwgNzEsIDgzLCAxMjgsIDY2LCA2NSwgNzEsIDcxLCA2NSwgNzEsIDE5NywgNjYsIAotICAgIDY1LCA3MSwgNjUsIDEyOCwgNjYsIDY1LCA3MSwgNTEsIDEyOCwgNjYsIDY1LCAxOTksIDY2LCA2NSwgNjgsIDc3LCA3MywgCi0gICAgNzgsIDg0LCA3OSwgMjA2LCA2NiwgNjUsIDY4LCA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCAKLSAgICA2NiwgNjUsIDY4LCAxMjgsIDY2LCA2NSwgMTk2LCA2NiwgNjUsIDY3LCA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIAotICAgIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgCi0gICAgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgMjAwLCAKLSAgICA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNzIsIDY1LCA3OCwgCi0gICAgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgMTI4LCAKLSAgICA2NiwgNjUsIDY3LCAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCA2NSwgODIsIAotICAgIDY5LCA4MiwgODUsIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA1MywgCi0gICAgNTcsIDEyOCwgNjYsIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgNTQsIDEyOCwgCi0gICAgNjYsIDUwLCA1MywgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgNTAsIDUzLCAKLSAgICA1MCwgMTI4LCA2NiwgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCA1NywgMTI4LCAKLSAgICA2NiwgNTAsIDUyLCA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCA1MCwgNTIsIAotICAgIDUzLCAxMjgsIDY2LCA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCA1MCwgNTIsIAotICAgIDE3NiwgNjYsIDUwLCA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCA2NiwgNTAsIAotICAgIDUxLCA1MCwgMTI4LCA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIDEyOCwgNjYsIAotICAgIDUwLCA1MCwgNTYsIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIDUwLCA1MCwgCi0gICAgMTgxLCA2NiwgNTAsIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIDY2LCA1MCwgCi0gICAgNDksIDU3LCAxMjgsIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgNDksIDU0LCAKLSAgICAxMjgsIDY2LCA1MCwgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAxMjgsIDY2LCAKLSAgICA1MCwgNDksIDUwLCAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCA1MCwgNDgsIAotICAgIDU3LCAxMjgsIDY2LCA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIDU0LCAxMjgsIAotICAgIDY2LCA1MCwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIDY2LCA1MCwgCi0gICAgNDgsIDUwLCAxMjgsIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgNTcsIDE3NywgCi0gICAgNjYsIDQ5LCA1NywgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgNjYsIDQ5LCAKLSAgICA1NiwgNTIsIDEyOCwgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCA1NiwgNDksIAotICAgIDEyOCwgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIDEyOCwgNjYsIAotICAgIDQ5LCA1NSwgNTUsIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIDU1LCAxNzksIAotICAgIDY2LCA0OSwgNTUsIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIDY2LCA0OSwgCi0gICAgNTQsIDU3LCAxMjgsIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgNTQsIDU0LCAKLSAgICAxMjgsIDY2LCA0OSwgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgNjYsIDQ5LCAKLSAgICA1NCwgMTc4LCA2NiwgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAxODUsIDY2LCAKLSAgICA0OSwgNTMsIDU2LCAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCA1MywgNTMsIAotICAgIDEyOCwgNjYsIDQ5LCA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIDEyOCwgNjYsIAotICAgIDQ5LCA1MywgMTc3LCA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIDUyLCAxODEsIAotICAgIDY2LCA0OSwgNTIsIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIDUxLCAxODEsIAotICAgIDY2LCA0OSwgNTEsIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIDUxLCAxNzYsIAotICAgIDY2LCA0OSwgNTAsIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIDE3OSwgNjYsIAotICAgIDQ5LCA1MCwgMTc4LCA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIDIwNSwgNjYsIAotICAgIDQ5LCA0OCwgNTcsIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIDQ5LCA0OCwgCi0gICAgNTUsIDIwNSwgNjYsIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgNTQsIDE5OCwgCi0gICAgNjYsIDQ5LCA0OCwgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgNDksIDQ4LCAKLSAgICAxODAsIDY2LCA0OSwgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgNTcsIDE3NiwgCi0gICAgNjYsIDQ4LCA1NiwgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgNDgsIDU2LCAKLSAgICAxODEsIDY2LCA0OCwgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgNjYsIDQ4LCAKLSAgICA1NiwgMTc2LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgNjYsIDQ4LCAKLSAgICA1NSwgMTgyLCA2NiwgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgNDgsIDU1LCAKLSAgICAxNzgsIDY2LCA0OCwgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgNTQsIDE4NCwgCi0gICAgNjYsIDQ4LCA1NCwgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgNTIsIDEyOCwgCi0gICAgNjYsIDQ4LCA1NCwgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgNTQsIDE3NiwgCi0gICAgNjYsIDQ4LCA1MywgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgNTQsIDEyOCwgCi0gICAgNjYsIDQ4LCA1MywgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgMTc4LCA2NiwgCi0gICAgNDgsIDUzLCAxNzcsIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgMTg0LCA2NiwgCi0gICAgNDgsIDUyLCA1NSwgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgMTgwLCA2NiwgCi0gICAgNDgsIDUyLCAxNzksIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIDY2LCA0OCwgCi0gICAgNTEsIDE4NSwgNjYsIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIDQ4LCA1MSwgCi0gICAgNTIsIDEyOCwgNjYsIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIDQ4LCA1MSwgCi0gICAgMTc2LCA2NiwgNDgsIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIDUwLCAxODIsIAotICAgIDY2LCA0OCwgNTAsIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIDUwLCAxMjgsIAotICAgIDY2LCA0OCwgNTAsIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIDQ5LCA1NiwgCi0gICAgMTI4LCA2NiwgNDgsIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIDQ5LCAxODAsIAotICAgIDY2LCA0OCwgNDksIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIDE3NiwgNjYsIAotICAgIDQ4LCA0OCwgNTcsIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIDQ4LCAxODQsIAotICAgIDY2LCA0OCwgNDgsIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIDQ4LCA0OCwgCi0gICAgMTgyLCA2NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgMTgxLCA2NiwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgNDgsIDE3OSwgCi0gICAgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgNDgsIDQ4LCAKLSAgICAxNzcsIDY1LCA5MCwgODUsIDEyOCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgMTI4LCA2NSwgODgsIDY5LCAKLSAgICAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg3LCA2NSwgMjE3LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCAKLSAgICA4NiwgNjksIDgyLCA2NSwgNzEsIDE5NywgNjUsIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgCi0gICAgNjUsIDEyOCwgNjUsIDg2LCA2NSwgNzEsIDgyLCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDg1LCA3NywgNzgsIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIAotICAgIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgCi0gICAgNjUsIDg1LCA4MiwgNzMsIDgwLCA3MywgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIAotICAgIDkwLCA2OCwgNjUsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCAKLSAgICA1MCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgCi0gICAgMTI4LCA2NSwgODUsIDcxLCA4NSwgODMsIDg0LCAxMjgsIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NSwgODUsIDY5LCAxMjgsIDY1LCA4NSwgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIAotICAgIDg0LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA4NCwgNzIsIDY1LCA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjUsIDIwMywgNjUsIDg0LCA4NCwgNjUsIDY3LCA3MiwgNjksIAotICAgIDE5NiwgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgMjAwLCA2NSwgODQsIDc3LCA2NSwgNjUsIDg1LCAxMjgsIAotICAgIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCA3NiwgNjksIDg0LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgCi0gICAgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgwLCA2NSwgODMsIDY3LCA2NSwgMjA2LCAKLSAgICA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCA4MiwgMTkzLCA2NSwgODMsIDg5LCA3NywgODAsIDg0LCA3OSwgODQsIAotICAgIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIDg0LCA4MiwgNzksIDc4LCA3OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgCi0gICAgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDc5LCA3OCwgNzMsIAotICAgIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc3LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgCi0gICAgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCAKLSAgICA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNjUsIDgzLCA4MywgODksIAotICAgIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgCi0gICAgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgzLCAKLSAgICA4MCwgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgNzYsIDczLCA2NSwgCi0gICAgMTI4LCA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCA4MywgMTI4LCA2NSwgODMsIDcyLCAKLSAgICA1NywgMTI4LCA2NSwgODMsIDcyLCA1MSwgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgNjcsIDY5LCA3OCwgODQsIAotICAgIDEyOCwgNjUsIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY1LCA4MywgNjUsIDc2LCA1MCwgMTI4LCA2NSwgCi0gICAgODIsIDg1LCA3MiwgODUsIDY1LCAxMjgsIDY1LCA4MiwgODQsIDczLCA4MywgMjEyLCA2NSwgODIsIDg0LCA3MywgNjcsIDg1LCAKKyAgICA3MiwgNjksIDgxLCA4NSwgNjksIDgyLCA2OSwgMTk2LCA2NywgNzIsIDY5LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzgsIAorICAgIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgCisgICAgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MywgMTk3LCA2NywgNzIsIDY5LCA2OSwgODIsIDczLCA3OCwgMTk5LCAKKyAgICA2NywgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDc1LCAyMTEsIDY3LCA3MiwgNjksIDY5LCA3NSwgCisgICAgMTI4LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIDY5LCAyMTAsIDY3LCA3MiwgNjksIDY3LCAKKyAgICA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgCisgICAgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCAKKyAgICA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgCisgICAgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCAKKyAgICA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgMjA1LCA2NywgNzIsIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDczLCA3OCwgODMsIDEyOCwgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDE5NiwgNjcsIDcyLCAKKyAgICA2NSwgNjUsIDEyOCwgNjcsIDcxLCA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA4MywgMTI4LCAKKyAgICA2NywgNjksIDgyLCA2OSwgNzcsIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc1LCAxMjgsIDY3LCA2OSwgODIsIAorICAgIDQ1LCA4NywgNjUsIDEyOCwgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIAorICAgIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCAKKyAgICA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgCisgICAgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIAorICAgIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCAKKyAgICA4MiwgNzMsIDY1LCAyMDQsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIAorICAgIDgyLCA2OSwgNjgsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAKKyAgICAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIAorICAgIDczLCA3OSwgMjA2LCA2NywgNjksIDc4LCAxMjgsIDY3LCA2OSwgNzYsIDg0LCA3MywgMTk1LCA2NywgNjksIDc2LCA4MywgCisgICAgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDY5LCAKKyAgICA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIAorICAgIDE5OSwgNjcsIDY5LCA2OSwgODYsIDEyOCwgNjcsIDY5LCA2OSwgNjYsIDEyOCwgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjksIAorICAgIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAxOTMsIDY3LCA2OSwgNjgsIDIwMSwgCisgICAgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgMjAzLCAKKyAgICA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIDc5LCAxMjgsIDY3LCA2NywgNzMsIAorICAgIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIDY3LCA3MiwgNzMsIDEyOCwgNjcsIAorICAgIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzMsIDEyOCwgCisgICAgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAKKyAgICA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIAorICAgIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCAxMjgsIAorICAgIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA2NSwgCisgICAgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NywgNjUsIDg4LCAKKyAgICAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA4NSwgNzYsIAorICAgIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCA2NywgNjUsIDg1LCA2NywgNjUsIDgzLCA3MywgCisgICAgNjUsIDIwNiwgNjcsIDY1LCA4NSwgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgCisgICAgNjcsIDY1LCAyMTIsIDY3LCA2NSwgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA4MywgNzUsIDY5LCAyMTIsIDY3LCAKKyAgICA2NSwgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIAorICAgIDY3LCA2NSwgODIsIDg0LCA4MiwgNzMsIDY4LCA3MSwgNjksIDEyOCwgNjcsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDY1LCA4MiwgCisgICAgMjExLCA2NywgNjUsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDY3LCAKKyAgICA2NSwgODIsIDgwLCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2NywgNjUsIDgyLCAyMDgsIDY3LCA2NSwgODIsIDc5LCA4NSwgODMsIAorICAgIDY5LCAyMDQsIDY3LCA2NSwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDgyLCA3OSwgMjA2LCA2NywgNjUsIDgyLCA3MywgCisgICAgMjAzLCA2NywgNjUsIDgyLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgNjksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDY5LCAKKyAgICAyMTIsIDY3LCA2NSwgODIsIDE5NywgNjcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY3LCA2NSwgODIsIDY4LCAxMjgsIDY3LCAKKyAgICA2NSwgODIsIDE5NiwgNjcsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDIxMCwgNjcsIDY1LCA4MCwgODUsIDIxMiwgNjcsIDY1LCAKKyAgICA4MCwgODQsIDczLCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4MCwgODIsIDczLCA2NywgNzksIDgyLCA3OCwgMTI4LCA2NywgNjUsIAorICAgIDgwLCA4MCwgNjksIDE5NiwgNjcsIDY1LCA4MCwgNzksIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA4NSwgNzYsIDg1LCA3NywgCisgICAgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA2NywgNjUsIDc4LCA4NCwgNzMsIDc2LCA3NiwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgNzksIDY5LCAxMjgsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgNjgsIAorICAgIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgCisgICAgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4MiwgMTkzLCA2NywgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjcsIAorICAgIDY1LCA3OCwgNjcsIDY5LCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDEyOCwgCisgICAgNjcsIDY1LCA3OCwgNjcsIDY5LCAyMDQsIDY3LCA2NSwgNzgsIDEyOCwgNjcsIDY1LCA3NywgODAsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgNjcsIDY1LCA3NywgNzgsIDg1LCAxOTUsIDY3LCA2NSwgNzcsIDY5LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NywgCisgICAgNjksIDgyLCAxOTMsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIDY1LCAKKyAgICA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgMjA0LCAKKyAgICA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDIxMCwgNjcsIAorICAgIDY1LCA3NiwgNjcsIDg1LCA3NiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY1LCA3NSwgCisgICAgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzUsIDE5NywgNjcsIDY1LCA3MywgMTI4LCA2NywgNjUsIDcyLCAxMjgsIDY3LCA2NSwgCisgICAgNjksIDgzLCA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIDg1LCA4MywgMTI4LCA2NywgNjUsIDY4LCAKKyAgICAxOTMsIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgNzYsIDY5LCA4NywgNjUsIDg5LCAxMjgsIAorICAgIDY3LCA2NSwgNjYsIDczLCA3OCwgNjksIDg0LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCAKKyAgICA2OSwgNjksIDEyOCwgNjcsIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCAKKyAgICA0OCwgNTAsIDUyLCAxMjgsIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIAorICAgIDQ5LCAxMjgsIDY3LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIAorICAgIDY3LCA0OCwgNDksIDU1LCAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgCisgICAgNDksIDUyLCAxMjgsIDY3LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAKKyAgICAxMjgsIDY3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCAKKyAgICA2NywgNDgsIDQ4LCA1NiwgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIAorICAgIDQ4LCA1MywgMTI4LCA2NywgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgCisgICAgNjcsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NywgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIAorICAgIDE5NiwgNjcsIDQ1LCA1MSwgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIAorICAgIDkwLCA3MiwgMjAxLCA2NiwgODksIDg0LCAxOTcsIDY2LCA4OSwgNjksIDc2LCA3OSwgODIsIDg1LCA4MywgODMsIDczLCA2NSwgCisgICAgNzgsIDQ1LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgNjYsIDg4LCA3MSwgMTI4LCA2NiwgODcsIDczLCAKKyAgICAxMjgsIDY2LCA4NywgNjksIDY5LCAxMjgsIDY2LCA4NywgNjksIDEyOCwgNjYsIDg3LCA2NSwgMTI4LCA2NiwgODUsIDg1LCAKKyAgICA3NywgNzMsIDgzLCA3MiwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDc4LCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgCisgICAgMjA2LCA2NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MCwgNzYsIDg5LCAxMjgsIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCAKKyAgICA4NCwgMjExLCA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIAorICAgIDgzLCA3MywgNzgsIDY5LCA4MywgMjExLCA2NiwgODUsIDIxMSwgNjYsIDg1LCA4MiwgMjEzLCA2NiwgODUsIDgyLCA4MiwgCisgICAgNzMsIDg0LCA3OSwgMTI4LCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCAKKyAgICA3NywgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIAorICAgIDc2LCA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgCisgICAgNzgsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDIwNiwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCAKKyAgICA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIAorICAgIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgCisgICAgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDg1LCA3MiwgNzMsIAorICAgIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgCisgICAgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY4LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCA3NiwgNjksIDEyOCwgNjYsIDg1LCAKKyAgICA2NiwgNjYsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIAorICAgIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgNjUsIDE3MywgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIAorICAgIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgCisgICAgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCAKKyAgICA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIAorICAgIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgCisgICAgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCAKKyAgICA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIAorICAgIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNzMsIDc4LCAKKyAgICAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDY5LCA4MywgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIAorICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgMjAwLCA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgCisgICAgNzUsIDY5LCA4NCwgNjksIDE5NiwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIAorICAgIDEyOCwgNjYsIDgxLCAxMjgsIDY2LCA4MCwgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMjExLCA2NiwgNzksIDg5LCAxMjgsIDY2LCAKKyAgICA3OSwgODgsIDczLCA3OCwgMTk5LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgCisgICAgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgMTI4LCA2NiwgNzksIDg3LCAKKyAgICAyMDQsIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgODQsIAorICAgIDEyOCwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgMjEyLCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCA4MiwgMjE3LCA2NiwgCisgICAgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIAorICAgIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA4NCwgCisgICAgODQsIDc5LCAyMDUsIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAxOTcsIDY2LCAKKyAgICA3OSwgODQsIDIwMCwgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MSwgCisgICAgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgNjYsIDc5LCAKKyAgICA4MCwgNzksIDc3LCA3OSwgNzAsIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAxMjgsIAorICAgIDY2LCA3OSwgNzksIDc3LCA2OSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIDY2LCA3OSwgCisgICAgNzksIDc1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgNzksIDc4LCAKKyAgICA2OSwgMTI4LCA2NiwgNzksIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAxMjgsIDY2LCAKKyAgICA3OSwgNzYsIDIxMiwgNjYsIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIDEyOCwgNjYsIAorICAgIDc5LCA2OCwgMjE3LCA2NiwgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIDY5LCAxMjgsIAorICAgIDY2LCA3NiwgODUsIDE5NywgNjYsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzYsIDc5LCA4NywgNzAsIDczLCA4MywgCisgICAgNzIsIDEyOCwgNjYsIDc2LCA3OSwgMjE1LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCA2NiwgNzYsIDc5LCAKKyAgICA3OSwgNjgsIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDY2LCA3NiwgNzMsIAorICAgIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCA2NiwgNzYsIDY1LCA2OCwgCisgICAgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCAKKyAgICA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIAorICAgIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgCisgICAgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIDg0LCA4NCwgNjksIDgyLCAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCAKKyAgICA2NiwgNzMsIDg0LCAxOTcsIDY2LCA3MywgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgNzcsIDczLCA3NiwgNzYsIAorICAgIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAKKyAgICAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIDgyLCA4NCwgNzIsIAorICAgIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNzEsIDE5MywgNjYsIDczLCA4MiwgCisgICAgNjgsIDEyOCwgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCAKKyAgICA2NSwgMjEwLCA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIAorICAgIDc4LCA2NSwgODIsIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDc2LCA3MywgCisgICAgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNjYsIDczLCA3NSwgNzMsIDc4LCAKKyAgICA3MywgMTI4LCA2NiwgNzMsIDcxLCAxMjgsIDY2LCA3MywgMTk5LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNzMsIDY4LCAKKyAgICA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2NiwgNzMsIDY4LCA2NSwgNzUsIDg1LCA3OSwgMjA2LCA2NiwgNzMsIDY3LCA4OSwgNjcsIAorICAgIDc2LCA3MywgODMsIDg0LCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NiwgNzMsIDY3LCA4OSwgCisgICAgNjcsIDc2LCA2OSwgMTI4LCA2NiwgNzMsIDY3LCA2OSwgODAsIDgzLCAxMjgsIDY2LCA3MywgNjYsIDc2LCA2OSwgNDUsIDY3LCAKKyAgICA4MiwgNjksIDE5NywgNjYsIDczLCA2NiwgMTI4LCA2NiwgMjAxLCA2NiwgNzIsIDg1LCAxMjgsIDY2LCA3MiwgNzksIDc5LCAKKyAgICAxMjgsIDY2LCA3MiwgNzksIDEyOCwgNjYsIDcyLCA3MywgMTI4LCA2NiwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNjYsIDcyLCA2OSwgMTI4LCA2NiwgNzIsIDY1LCA4NCwgODQsIDczLCA4MCwgODIsIDc5LCA3NiwgCisgICAgMjEzLCA2NiwgNzIsIDY1LCA3NywgMTI4LCA2NiwgNzIsIDY1LCA2NSwgMTI4LCA2NiwgNzIsIDY1LCAxMjgsIDY2LCA2OSwgCisgICAgODksIDg5LCA2NSwgNzYsIDEyOCwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjksIDg2LCA2OSwgODIsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgNzgsIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgMjA2LCA2NiwgCisgICAgNjksIDg0LCA3MiwgMTI4LCA2NiwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDg0LCAxOTMsIDY2LCA2OSwgMjEyLCA2NiwgCisgICAgNjksIDgzLCA3MywgNjgsIDE5NywgNjYsIDY5LCA4MiwgNzUsIDY1LCA3OCwgNjUsIDIwNiwgNjYsIDY5LCA4MiwgNjYsIDY5LCAKKyAgICAyMTAsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY5LCA3OSwgODIsIDE5NSwgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCAKKyAgICA2NiwgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA4NCwgMTI4LCA2NiwgNjksIDc4LCAyMTIsIDY2LCA2OSwgNzgsIAorICAgIDY4LCA2OSwgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIDc4LCAxOTYsIDY2LCA2OSwgMjA2LCA2NiwgNjksIAorICAgIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCA3MiwgCisgICAgNzksIDIwOCwgNjYsIDY5LCA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgMjA0LCA2NiwgNjksIDc2LCA3MSwgODQsIDcyLCAKKyAgICA3OSwgMjEwLCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIAorICAgIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgNjksIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIAorICAgIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgCisgICAgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCAKKyAgICA2NiwgNjksIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAKKyAgICAxMjgsIDY2LCA2OSwgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIAorICAgIDg0LCAxMjgsIDY2LCA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIAorICAgIDY2LCA2OSwgNjUsIDY4LCA4MywgMTI4LCA2NiwgNjksIDY1LCA2NywgMjAwLCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgCisgICAgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAKKyAgICAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCAKKyAgICA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgCisgICAgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgCisgICAgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIAorICAgIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIAorICAgIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgCisgICAgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIAorICAgIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgCisgICAgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgCisgICAgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCA4MywgODMsIDE5MywgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCAKKyAgICA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIAorICAgIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY2LCA2NSwgODMsIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgCisgICAgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAKKyAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIAorICAgIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgCisgICAgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAKKyAgICAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCAKKyAgICA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIAorICAgIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgCisgICAgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAKKyAgICAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIAorICAgIDY2LCA2NSwgNzYsIDc2LCA3OSwgODQsIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgCisgICAgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCAKKyAgICA2NSwgNzYsIDY1LCA3MSwgMTI4LCA2NiwgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIAorICAgIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDczLCA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgCisgICAgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCAKKyAgICA2NiwgNjUsIDcyLCA2NSwgODIsIDE3OCwgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA4NSwgNjksIDg0LCA4NCwgCisgICAgMTk3LCA2NiwgNjUsIDcxLCA4MywgMTI4LCA2NiwgNjUsIDcxLCA3MSwgNjUsIDcxLCAxOTcsIDY2LCA2NSwgNzEsIDY1LCAKKyAgICAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgNjUsIDY4LCA3NywgNzMsIDc4LCA4NCwgNzksIAorICAgIDIwNiwgNjYsIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgNjYsIDY1LCA2OCwgCisgICAgMTI4LCA2NiwgNjUsIDE5NiwgNjYsIDY1LCA2NywgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCA2NywgNzksIDc4LCAKKyAgICAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIAorICAgIDY5LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgCisgICAgNjUsIDgzLCAyMDAsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAKKyAgICA3MiwgNjUsIDc4LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIAorICAgIDc1LCAxMjgsIDY2LCA2NSwgNjcsIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIAorICAgIDY1LCA4MiwgNjksIDgyLCA4NSwgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA1NywgMTI4LCA2NiwgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCAKKyAgICA1NCwgMTI4LCA2NiwgNTAsIDUzLCA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCAKKyAgICA1MCwgNTMsIDUwLCAxMjgsIDY2LCA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIAorICAgIDU3LCAxMjgsIDY2LCA1MCwgNTIsIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIAorICAgIDUwLCA1MiwgNTMsIDEyOCwgNjYsIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIAorICAgIDUwLCA1MiwgMTc2LCA2NiwgNTAsIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIAorICAgIDY2LCA1MCwgNTEsIDUwLCAxMjgsIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgCisgICAgMTI4LCA2NiwgNTAsIDUwLCA1NiwgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgCisgICAgNTAsIDUwLCAxODEsIDY2LCA1MCwgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgCisgICAgNjYsIDUwLCA0OSwgNTcsIDEyOCwgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCAKKyAgICA0OSwgNTQsIDEyOCwgNjYsIDUwLCA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIAorICAgIDEyOCwgNjYsIDUwLCA0OSwgNTAsIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIAorICAgIDUwLCA0OCwgNTcsIDEyOCwgNjYsIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgCisgICAgNTQsIDEyOCwgNjYsIDUwLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgCisgICAgNjYsIDUwLCA0OCwgNTAsIDEyOCwgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NywgMTc3LCA2NiwgNDksIDU3LCA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCAKKyAgICA2NiwgNDksIDU2LCA1MiwgMTI4LCA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIAorICAgIDU2LCA0OSwgMTI4LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgCisgICAgMTI4LCA2NiwgNDksIDU1LCA1NSwgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgCisgICAgNTUsIDE3OSwgNjYsIDQ5LCA1NSwgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgCisgICAgNjYsIDQ5LCA1NCwgNTcsIDEyOCwgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NCwgNTQsIDEyOCwgNjYsIDQ5LCA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCAKKyAgICA2NiwgNDksIDU0LCAxNzgsIDY2LCA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIAorICAgIDE4NSwgNjYsIDQ5LCA1MywgNTYsIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIAorICAgIDUzLCA1MywgMTI4LCA2NiwgNDksIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgCisgICAgMTI4LCA2NiwgNDksIDUzLCAxNzcsIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgCisgICAgNTIsIDE4MSwgNjYsIDQ5LCA1MiwgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgCisgICAgNTEsIDE4MSwgNjYsIDQ5LCA1MSwgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgCisgICAgNTEsIDE3NiwgNjYsIDQ5LCA1MCwgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgCisgICAgMTc5LCA2NiwgNDksIDUwLCAxNzgsIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgCisgICAgMjA1LCA2NiwgNDksIDQ4LCA1NywgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgCisgICAgNDksIDQ4LCA1NSwgMjA1LCA2NiwgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCAKKyAgICA1NCwgMTk4LCA2NiwgNDksIDQ4LCA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCAKKyAgICA0OSwgNDgsIDE4MCwgNjYsIDQ5LCA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCAKKyAgICA1NywgMTc2LCA2NiwgNDgsIDU2LCA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCAKKyAgICA0OCwgNTYsIDE4MSwgNjYsIDQ4LCA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCAKKyAgICA2NiwgNDgsIDU2LCAxNzYsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCAKKyAgICA2NiwgNDgsIDU1LCAxODIsIDY2LCA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCAKKyAgICA0OCwgNTUsIDE3OCwgNjYsIDQ4LCA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCAKKyAgICA1NCwgMTg0LCA2NiwgNDgsIDU0LCAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCAKKyAgICA1MiwgMTI4LCA2NiwgNDgsIDU0LCA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCAKKyAgICA1NCwgMTc2LCA2NiwgNDgsIDUzLCAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCAKKyAgICA1NCwgMTI4LCA2NiwgNDgsIDUzLCAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAKKyAgICAxNzgsIDY2LCA0OCwgNTMsIDE3NywgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAKKyAgICAxODQsIDY2LCA0OCwgNTIsIDU1LCAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAKKyAgICAxODAsIDY2LCA0OCwgNTIsIDE3OSwgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgCisgICAgNjYsIDQ4LCA1MSwgMTg1LCA2NiwgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgCisgICAgNDgsIDUxLCA1MiwgMTI4LCA2NiwgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgCisgICAgNDgsIDUxLCAxNzYsIDY2LCA0OCwgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgCisgICAgNTAsIDE4MiwgNjYsIDQ4LCA1MCwgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgNjYsIDQ4LCA1MCwgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgCisgICAgNDksIDU2LCAxMjgsIDY2LCA0OCwgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgCisgICAgNDksIDE4MCwgNjYsIDQ4LCA0OSwgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgCisgICAgMTc2LCA2NiwgNDgsIDQ4LCA1NywgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgCisgICAgNDgsIDE4NCwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgCisgICAgNDgsIDQ4LCAxODIsIDY2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAKKyAgICAxODEsIDY2LCA0OCwgNDgsIDUyLCAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCAKKyAgICA0OCwgMTc5LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCAKKyAgICA0OCwgNDgsIDE3NywgNjUsIDkwLCA4NSwgMTI4LCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCAKKyAgICA4OCwgNjksIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODcsIDY1LCAyMTcsIDY1LCA4NiwgNzksIDY3LCA2NSwgNjgsIAorICAgIDc5LCAxMjgsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIDg2LCA2OSwgODIsIDY1LCA3MSwgMTk3LCA2NSwgCisgICAgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCA2NSwgMTI4LCA2NSwgODYsIDY1LCA3MSwgODIsIAorICAgIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDg1LCA4NCwgODUsIDc3LCA3OCwgCisgICAgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDY1LCAKKyAgICA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCA2NSwgODUsIDgyLCA3MywgODAsIDczLCA3MSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgCisgICAgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIDUwLCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIAorICAgIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAxMjgsIDY1LCA4NSwgNzEsIDg1LCA4MywgODQsIDEyOCwgCisgICAgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4NSwgNjksIDEyOCwgNjUsIDg1LCAKKyAgICA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgODQsIDg0LCA3MywgMTk1LCA2NSwgODQsIDg0LCA3MiwgNjUsIAorICAgIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2NSwgCisgICAgMjAzLCA2NSwgODQsIDg0LCA2NSwgNjcsIDcyLCA2OSwgMTk2LCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAKKyAgICAyMDAsIDY1LCA4NCwgNzcsIDY1LCA2NSwgODUsIDEyOCwgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIAorICAgIDc2LCA2OSwgODQsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgCisgICAgODQsIDcyLCA2NSwgODAsIDY1LCA4MywgNjcsIDY1LCAyMDYsIDY1LCA4NCwgNzIsIDQ1LCA4NCwgNzIsIDY1LCA3NiwgNjUsIAorICAgIDg0LCA3MiwgNjUsIDEyOCwgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgODIsIDE5MywgNjUsIDgzLCA4OSwgCisgICAgNzcsIDgwLCA4NCwgNzksIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCA4NCwgODIsIDc5LCA3OCwgNzksIAorICAgIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2NSwgCisgICAgODMsIDg0LCA3OSwgNzgsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NywgMTI4LCAKKyAgICA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAxMjgsIAorICAgIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA2NywgODUsIDgzLCAKKyAgICAxMjgsIDY1LCA4MywgODMsIDg5LCA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgCisgICAgODQsIDY5LCAxOTYsIDY1LCA4MywgODAsIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCAKKyAgICA4MiwgNjUsIDc2LCA3MywgNjUsIDEyOCwgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIAorICAgIDEyOCwgNjUsIDgzLCA3MiwgNTcsIDEyOCwgNjUsIDgzLCA3MiwgNTEsIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIAorICAgIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgCisgICAgNTAsIDEyOCwgNjUsIDgzLCA0NSwgODMsIDY1LCA3NCwgNjgsIDY1LCAxMjgsIDY1LCA4MiwgODUsIDcyLCA4NSwgNjUsIAorICAgIDEyOCwgNjUsIDgyLCA4NCwgMjExLCA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgCiAgICAgNzYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgyLCA4NCwgNjUsIDY2LCAxOTcsIDY1LCA4MiwgODMsIDY5LCA3OSwgODMsIAogICAgIDEyOCwgNjUsIDgyLCA4MywgNjksIDc5LCAyMTEsIDY1LCA4MiwgODMsIDY5LCA3OCwgNzMsIDY3LCAxMjgsIDY1LCA4MiwgCiAgICAgODIsIDc5LCA4NywgODMsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCAyMTEsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCAKQEAgLTQ4OTIsNDIgKzU1MjUsNDMgQEAKICAgICA2NSwgNDUsIDg1LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDczLCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIAogICAgIDY5LCA3OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgCiAgICAgMTI4LCA2NSwgODIsIDY1LCA2OCwgMTI4LCA2NSwgODIsIDY1LCAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCAKLSAgICA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIAotICAgIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgCi0gICAgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAKLSAgICAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIAotICAgIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAKLSAgICAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIAotICAgIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgCi0gICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCAKLSAgICA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIAotICAgIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCAKLSAgICA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIAotICAgIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAKLSAgICAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCA4MCwgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAKLSAgICAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIDg0LCAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIAotICAgIDEyOCwgNjUsIDc5LCA4NSwgMTI4LCA2NSwgNzksIDgyLCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgCi0gICAgODksIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCAKLSAgICA4MiwgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIAotICAgIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgCi0gICAgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIAotICAgIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCAKLSAgICA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDcwLCA3OSwgCi0gICAgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgNDUsIAotICAgIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCAKLSAgICA4MywgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NSwgNzgsIAotICAgIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCAxOTMsIDY1LCA3OCwgODQsIDY1LCA4MiwgCi0gICAgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIDc4LCA4MywgODUsIDIxOCwgNjUsIDc4LCA4MywgNzIsIDY5LCAKLSAgICAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgNzgsIDIwNywgNjUsIDc4LCA3OCwgODUsIDczLCA4NCwgMjE3LCAKLSAgICA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3OCwgNzgsIDY1LCA2NSwgODUsIDEyOCwgNjUsIAotICAgIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3NCwgNzMsIDEyOCwgNjUsIDc4LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgCi0gICAgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIDgzLCAKLSAgICA4NCwgODIsIDc5LCAyMDUsIDY1LCA3OCwgNzEsIDgyLCAyMTcsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNjgsIDEyOCwgNjUsIAotICAgIDc4LCA3MSwgNzYsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgCi0gICAgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCAKLSAgICA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgCi0gICAgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAKKyAgICA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA4NSwgNjYsIAorICAgIDEyOCwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCA2OSwgCisgICAgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIDgyLCAKKyAgICA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgNzYsIAorICAgIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCA4MiwgCisgICAgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgMjExLCAKKyAgICA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIDg0LCAKKyAgICA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIAorICAgIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCA2NSwgCisgICAgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIAorICAgIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAKKyAgICAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCAKKyAgICA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNzksIDg1LCAxMjgsIDY1LCA3OSwgODIsIDEyOCwgNjUsIAorICAgIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCA4OSwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAKKyAgICAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgCisgICAgMTI4LCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIAorICAgIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgCisgICAgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgNzMsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIAorICAgIDc5LCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCAKKyAgICA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIAorICAgIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDY5LCA0NSwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzgsIDg0LCAKKyAgICA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgCisgICAgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDY5LCAKKyAgICA3OCwgNzgsIDE5MywgNjUsIDc4LCA4NCwgNjUsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgNzgsIAorICAgIDgzLCA4NSwgMjE4LCA2NSwgNzgsIDgzLCA3MiwgNjksIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCA3OCwgCisgICAgMjA3LCA2NSwgNzgsIDc4LCA4NSwgNzMsIDg0LCAyMTcsIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNjUsIDc4LCA3OCwgNjUsIDY1LCA4NSwgMTI4LCA2NSwgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDc0LCA3MywgCisgICAgMTI4LCA2NSwgNzgsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCAKKyAgICA4NSwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgODMsIDg0LCA4MiwgNzksIDIwNSwgNjUsIDc4LCA3MSwgODIsIAorICAgIDIxNywgNjUsIDc4LCA3MSwgNzYsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIDcxLCA3NiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgCisgICAgNzUsIDcyLCA2NSwgNzgsIDc1LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDIxMCwgNjUsIDc4LCA3MSwgNjksIDc2LCAKKyAgICAxMjgsIDY1LCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA2NywgNzksIAorICAgIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDY3LCA3MiwgNzksIDgyLCAxMjgsIDY1LCA3OCwgNjUsIDg0LCA4MiwgNzMsIDY3LCA3MiwgCisgICAgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA0NSwgNzgsIDczLCA4MywgNzAsIAogICAgIDEyOCwgNjUsIDc3LCA4MCwgODMsIDEyOCwgNjUsIDc3LCA4MCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc3LCA4MCwgCiAgICAgNjksIDgyLCA4MywgNjUsIDc4LCA2OCwgMTI4LCA2NSwgNzcsIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDE5NiwgNjUsIDc3LCAKICAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA3NywgNjksIDgyLCA3MywgNjcsIDY1LCA4MywgMTI4LCA2NSwgNzcsIDY5LCA4MiwgNzMsIApAQCAtNDk0MSwxMTU4MCArNTU3NSwxMjA2MiBAQAogICAgIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgCiAgICAgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCAKICAgICA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIAotICAgIDc3LCAxMjgsIDY1LCA3NiwgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgCi0gICAgNzYsIDc2LCAyMDEsIDY1LCA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCAKLSAgICA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIAotICAgIDg1LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgMjA2LCA2NSwgNzYsIDcxLCA3MywgCi0gICAgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgNzYsIDY5LCA4MiwgODQsIDEyOCwgCi0gICAgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCA2NiwgNzMsIDY3LCAxMjgsIDY1LCA3NiwgNjksIDcwLCAKLSAgICAxMjgsIDY1LCA3NiwgNjYsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIDEyOCwgNjUsIAotICAgIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgMTI4LCA2NSwgCi0gICAgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCA3NiwgODMsIAotICAgIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIDE5NSwgCi0gICAgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIDY1LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgNzksIAotICAgIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCAKLSAgICAxOTcsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCA3OCwgNzgsIDEyOCwgNjUsIDczLCA3NiwgNzcsIDEyOCwgNjUsIDczLCAKLSAgICA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAxMjgsIDY1LCA3MiwgODMsIDY4LCA2NSwgCi0gICAgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDc5LCAyMDUsIDY1LCA3MiwgNjUsIDc4LCAxOTksIDY1LCA3MiwgCi0gICAgNjUsIDcxLCA3MSwgNjUsIDIxMCwgNjUsIDcyLCA2NSwgNjgsIDEyOCwgNjUsIDcxLCA4NSwgNzgsIDcxLCAxMjgsIDY1LCAKLSAgICA3MSwgNzksIDcxLCAyMDEsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzEsIAotICAgIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3MSwgNjUsIDczLCA3OCwgODMsIDIxMiwgNjUsIDcxLCA2NSwgCi0gICAgNzMsIDc4LCAxMjgsIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCAKLSAgICA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgCi0gICAgNjgsIDEyOCwgNjUsIDcwLCA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NSwgNzAsIDcwLCA3MywgMjE2LCA2NSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIAotICAgIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgNzMsIDg1LCA4MywgMTI4LCA2NSwgNjksIDgzLCA2NywgCi0gICAgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCA2NSwgMjA0LCA2NSwgNjksIDgyLCAxMjgsIDY1LCA2OSwgCi0gICAgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNzYsIDEyOCwgNjUsIDY5LCA3NSwgMTI4LCAKLSAgICA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgMTI4LCA2NSwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgCi0gICAgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA4NCwgNjUsIDcxLCA2OSwgMTI4LCAKLSAgICA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjgsIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNjUsIAotICAgIDY4LCA2OSwgNzEsIDEyOCwgNjUsIDY4LCA2OSwgMTk5LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgCi0gICAgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgMjExLCA2NSwgNjgsIDY4LCA2NSwgNzUsIDEyOCwgNjUsIDY4LCA2NSwgMjAzLCAKLSAgICA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY1LCA2NywgODUsIDg0LCA2OSwgCi0gICAgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgMTk3LCAKLSAgICA2NSwgNjcsIDg0LCA4NSwgNjUsIDc2LCA3NiwgMjE3LCA2NSwgNjcsIDg0LCA3MywgODYsIDY1LCA4NCwgMTk3LCA2NSwgNjcsIAotICAgIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDczLCAxOTUsIDY1LCA2NywgNzUsIDc4LCA3OSwgODcsIDc2LCA2OSwgNjgsIDcxLCAKLSAgICA2OSwgMTI4LCA2NSwgNjcsIDY3LCA4NSwgNzcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIAotICAgIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDY3LCA2NywgNzksIDc3LCA3NywgNzksIDY4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjUsIDY3LCA2NywgNjksIDgwLCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCA0NSwgODMsIDg0LCA2NSwgNjcsIAotICAgIDY3LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCAKLSAgICAyMTIsIDY1LCA2NywgNjUsIDY4LCA2OSwgNzcsIDIxNywgNjUsIDY2LCA4OSwgODMsIDc3LCA2NSwgMjA0LCA2NSwgNjYsIAotICAgIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2NiwgNzUsIDcyLCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NSwgCi0gICAgNjYsIDY2LCA4MiwgNjksIDg2LCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDY2LCA2NSwgNzAsIDczLCA3NiwgNzMsIAotICAgIDEyOCwgNjUsIDY2LCAxNzgsIDY1LCA2NiwgNDksIDU3LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIAotICAgIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY1LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgCi0gICAgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NiwgMTI4LCA2NSwgNjYsIDQ5LCA1MSwgNDksIDY1LCAxMjgsIDY1LCA2NiwgNDksIDUwLCAKLSAgICA1MSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDksIAotICAgIDQ5LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA2NiwgCi0gICAgNDgsIDU2LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDU2LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU2LCAxMjgsIAotICAgIDY1LCA2NiwgNDgsIDU1LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDUyLCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIAotICAgIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgCi0gICAgNTQsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNTMsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTIsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDgsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgCi0gICAgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCAKLSAgICA1MiwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OCwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NSwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCAKLSAgICA1MSwgNzcsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgNzcsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTAsIDUwLCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3NywgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDcwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCAKLSAgICA1MCwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NSwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MiwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NSwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIAotICAgIDY1LCA4OSwgMTI4LCA2NSwgNjUsIDg3LCAxMjgsIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIAotICAgIDY2LCA2NSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgCi0gICAgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA1MCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA1MCwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgCi0gICAgNjUsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCAKLSAgICA2NSwgNjUsIDQ4LCA0OSwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCAKLSAgICA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDU1LCAxMjgsIDY1LCA1NiwgNDgsIAotICAgIDU0LCAxMjgsIDY1LCA1NiwgNDgsIDUzLCAxMjgsIDY1LCA1NiwgNDgsIDUyLCAxMjgsIDY1LCA1NiwgNDgsIDUxLCAxMjgsIAotICAgIDY1LCA1NiwgNDgsIDUwLCAxMjgsIDY1LCA1NiwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDQ4LCAxMjgsIDY1LCA1NSwgCi0gICAgNTEsIDE3OCwgNjUsIDU1LCA1MCwgMTgyLCA2NSwgNTUsIDQ5LCAxODMsIDY1LCA1NSwgNDksIDE4MSwgNjUsIDU1LCA0OSwgCi0gICAgMTgwLCA2NSwgNTUsIDQ5LCAxNzksIDY1LCA1NSwgNDksIDE3OCwgNjUsIDU1LCA0OSwgMTc3LCA2NSwgNTUsIDQ5LCAxNzYsIAotICAgIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTgyLCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MCwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAKLSAgICAxNzksIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTc4LCA2NSwgNTUsIDQ4LCAxODUsIDY1LCA1NSwgNDgsIDE4NCwgNjUsIDU1LCAKLSAgICA0OCwgMTgzLCA2NSwgNTUsIDQ4LCAxODIsIDY1LCA1NSwgNDgsIDE4MSwgNjUsIDU1LCA0OCwgMTgwLCA2NSwgNTUsIDQ4LCAKLSAgICAxNzksIDY1LCA1NSwgNDgsIDE3OCwgNjUsIDU1LCA0OCwgMTc3LCA2NSwgNTQsIDU0LCA1MiwgMTI4LCA2NSwgNTQsIDU0LCAKLSAgICA1MSwgMTI4LCA2NSwgNTQsIDU0LCA1MCwgMTI4LCA2NSwgNTQsIDU0LCA0OSwgMTI4LCA2NSwgNTQsIDU0LCA0OCwgMTI4LCAKLSAgICA2NSwgNTQsIDUzLCA1NywgMTI4LCA2NSwgNTQsIDUzLCA1NiwgMTI4LCA2NSwgNTQsIDUzLCA1NSwgMTI4LCA2NSwgNTQsIAotICAgIDUzLCA1NCwgMTI4LCA2NSwgNTQsIDUzLCA1MywgMTI4LCA2NSwgNTQsIDUzLCA1MiwgMTI4LCA2NSwgNTQsIDUzLCA1MSwgCi0gICAgMTI4LCA2NSwgNTQsIDUzLCA1MCwgMTI4LCA2NSwgNTQsIDUzLCA0OSwgMTI4LCA2NSwgNTQsIDUyLCA1NywgMTI4LCA2NSwgCi0gICAgNTQsIDUyLCA1NiwgMTI4LCA2NSwgNTQsIDUyLCA1NCwgMTI4LCA2NSwgNTQsIDUyLCA1MywgMTI4LCA2NSwgNTQsIDUyLCAKLSAgICA1MiwgMTI4LCA2NSwgNTQsIDUyLCA1MSwgMTI4LCA2NSwgNTQsIDUyLCA1MCwgMTI4LCA2NSwgNTQsIDUyLCA0OCwgMTI4LCAKLSAgICA2NSwgNTQsIDUxLCA1NiwgMTI4LCA2NSwgNTQsIDUxLCA1NSwgMTI4LCA2NSwgNTQsIDUxLCA1MiwgMTI4LCA2NSwgNTQsIAotICAgIDUwLCA1NywgMTI4LCA2NSwgNTQsIDUwLCA1NiwgMTI4LCA2NSwgNTQsIDUwLCA1NSwgMTI4LCA2NSwgNTQsIDUwLCA1NCwgCi0gICAgMTI4LCA2NSwgNTQsIDUwLCA1MiwgMTI4LCA2NSwgNTQsIDUwLCA1MSwgMTI4LCA2NSwgNTQsIDUwLCA1MCwgMTI4LCA2NSwgCi0gICAgNTQsIDUwLCA0OSwgMTI4LCA2NSwgNTQsIDUwLCA0OCwgMTI4LCA2NSwgNTQsIDQ5LCA1NywgMTI4LCA2NSwgNTQsIDQ5LCAKLSAgICA1NiwgMTI4LCA2NSwgNTQsIDQ5LCA1NSwgMTI4LCA2NSwgNTQsIDQ5LCA1NCwgMTI4LCA2NSwgNTQsIDQ5LCA1MywgMTI4LCAKLSAgICA2NSwgNTQsIDQ5LCA1MiwgMTI4LCA2NSwgNTQsIDQ5LCA1MSwgMTI4LCA2NSwgNTQsIDQ5LCA1MCwgMTI4LCA2NSwgNTQsIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNTQsIDQ5LCA0OCwgMTI4LCA2NSwgNTQsIDQ4LCA1NywgMTI4LCA2NSwgNTQsIDQ4LCA1NiwgCi0gICAgMTI4LCA2NSwgNTQsIDQ4LCA1NCwgMTI4LCA2NSwgNTQsIDQ4LCA1MiwgMTI4LCA2NSwgNTQsIDQ4LCA1MSwgMTI4LCA2NSwgCi0gICAgNTQsIDQ4LCA1MCwgMTI4LCA2NSwgNTQsIDQ4LCA0OSwgMTI4LCA2NSwgNTQsIDQ4LCA0OCwgMTI4LCA2NSwgNTMsIDU3LCAKLSAgICA1NiwgMTI4LCA2NSwgNTMsIDU3LCA1NCwgMTI4LCA2NSwgNTMsIDU3LCA1MywgMTI4LCA2NSwgNTMsIDU3LCA1MiwgMTI4LCAKLSAgICA2NSwgNTMsIDU3LCA1MCwgMTI4LCA2NSwgNTMsIDU3LCA0OSwgMTI4LCA2NSwgNTMsIDU2LCA1NywgMTI4LCA2NSwgNTMsIAotICAgIDU2LCA1NiwgMTI4LCA2NSwgNTMsIDU2LCA1NSwgMTI4LCA2NSwgNTMsIDU2LCA1NCwgMTI4LCA2NSwgNTMsIDU2LCA1MywgCi0gICAgMTI4LCA2NSwgNTMsIDU2LCA1MiwgMTI4LCA2NSwgNTMsIDU2LCA1MSwgMTI4LCA2NSwgNTMsIDU2LCA1MCwgMTI4LCA2NSwgCi0gICAgNTMsIDU2LCA0OSwgMTI4LCA2NSwgNTMsIDU2LCA0OCwgMTI4LCA2NSwgNTMsIDU1LCA1NywgMTI4LCA2NSwgNTMsIDU1LCAKLSAgICA1NiwgMTI4LCA2NSwgNTMsIDU1LCA1NSwgMTI4LCA2NSwgNTMsIDU1LCA1NCwgMTI4LCA2NSwgNTMsIDU1LCA1MywgMTI4LCAKLSAgICA2NSwgNTMsIDU1LCA1MiwgMTI4LCA2NSwgNTMsIDU1LCA1MSwgMTI4LCA2NSwgNTMsIDU1LCA1MCwgMTI4LCA2NSwgNTMsIAotICAgIDU1LCA0OSwgMTI4LCA2NSwgNTMsIDU1LCA0OCwgMTI4LCA2NSwgNTMsIDU0LCA1NywgMTI4LCA2NSwgNTMsIDU0LCA1NiwgCi0gICAgMTI4LCA2NSwgNTMsIDU0LCA1NCwgMTI4LCA2NSwgNTMsIDU0LCA1MywgMTI4LCA2NSwgNTMsIDU0LCA1MiwgMTI4LCA2NSwgCi0gICAgNTMsIDU0LCA1MSwgMTI4LCA2NSwgNTMsIDUzLCA1NywgMTI4LCA2NSwgNTMsIDUzLCA1NSwgMTI4LCA2NSwgNTMsIDUzLCAKLSAgICA1NCwgMTI4LCA2NSwgNTMsIDUzLCA1MywgMTI4LCA2NSwgNTMsIDUzLCA1MiwgMTI4LCA2NSwgNTMsIDUzLCA1MSwgMTI4LCAKLSAgICA2NSwgNTMsIDUzLCA1MCwgMTI4LCA2NSwgNTMsIDUzLCA0OSwgMTI4LCA2NSwgNTMsIDUzLCA0OCwgMTI4LCA2NSwgNTMsIAotICAgIDUyLCA1NywgMTI4LCA2NSwgNTMsIDUyLCA1NiwgMTI4LCA2NSwgNTMsIDUyLCA1NSwgMTI4LCA2NSwgNTMsIDUyLCA1MywgCi0gICAgMTI4LCA2NSwgNTMsIDUyLCA1MCwgMTI4LCA2NSwgNTMsIDUyLCA0OSwgMTI4LCA2NSwgNTMsIDUyLCA0OCwgMTI4LCA2NSwgCi0gICAgNTMsIDUxLCA1NywgMTI4LCA2NSwgNTMsIDUxLCA1NiwgMTI4LCA2NSwgNTMsIDUxLCA1NSwgMTI4LCA2NSwgNTMsIDUxLCAKLSAgICA1NCwgMTI4LCA2NSwgNTMsIDUxLCA1MywgMTI4LCA2NSwgNTMsIDUxLCA1MiwgMTI4LCA2NSwgNTMsIDUxLCA1MCwgMTI4LCAKLSAgICA2NSwgNTMsIDUxLCA0OSwgMTI4LCA2NSwgNTMsIDUxLCA0OCwgMTI4LCA2NSwgNTMsIDUwLCA1NywgMTI4LCA2NSwgNTMsIAotICAgIDUwLCA1NiwgMTI4LCA2NSwgNTMsIDUwLCA1NSwgMTI4LCA2NSwgNTMsIDUwLCA1NCwgMTI4LCA2NSwgNTMsIDUwLCA1MywgCi0gICAgMTI4LCA2NSwgNTMsIDUwLCA1MiwgMTI4LCA2NSwgNTMsIDUwLCA1MSwgMTI4LCA2NSwgNTMsIDUwLCA1MCwgMTI4LCA2NSwgCi0gICAgNTMsIDUwLCA0OSwgMTI4LCA2NSwgNTMsIDUwLCA0OCwgMTI4LCA2NSwgNTMsIDQ5LCA1NywgMTI4LCA2NSwgNTMsIDQ5LCAKLSAgICA1NiwgMTI4LCA2NSwgNTMsIDQ5LCA1NSwgMTI4LCA2NSwgNTMsIDQ5LCA1NCwgMTI4LCA2NSwgNTMsIDQ5LCA1MywgMTI4LCAKLSAgICA2NSwgNTMsIDQ5LCA1MiwgMTI4LCA2NSwgNTMsIDQ5LCA1MSwgMTI4LCA2NSwgNTMsIDQ5LCA1MCwgMTI4LCA2NSwgNTMsIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNTMsIDQ5LCA0OCwgMTI4LCA2NSwgNTMsIDQ4LCA1NywgMTI4LCA2NSwgNTMsIDQ4LCA1NiwgCi0gICAgMTI4LCA2NSwgNTMsIDQ4LCA1NSwgMTI4LCA2NSwgNTMsIDQ4LCA1NCwgMTI4LCA2NSwgNTMsIDQ4LCA1MywgMTI4LCA2NSwgCi0gICAgNTMsIDQ4LCA1MiwgMTI4LCA2NSwgNTMsIDQ4LCA1MSwgMTI4LCA2NSwgNTMsIDQ4LCA1MCwgMTI4LCA2NSwgNTMsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NSwgNTIsIDU3LCA1NSwgMTI4LCA2NSwgNTIsIDU3LCA1NCwgMTI4LCA2NSwgNTIsIDU3LCA1MywgMTI4LCAKLSAgICA2NSwgNTIsIDU3LCA1MiwgMTI4LCA2NSwgNTIsIDU3LCA1MSwgMTI4LCA2NSwgNTIsIDU3LCA1MCwgMTI4LCA2NSwgNTIsIAotICAgIDU3LCA0OSwgMTI4LCA2NSwgNTIsIDU3LCA0OCwgMTI4LCA2NSwgNTIsIDU2LCA1NywgMTI4LCA2NSwgNTIsIDU2LCA1NiwgCi0gICAgMTI4LCA2NSwgNTIsIDU2LCA1NSwgMTI4LCA2NSwgNTIsIDU2LCA1NCwgMTI4LCA2NSwgNTIsIDU2LCA1MywgMTI4LCA2NSwgCi0gICAgNTIsIDU2LCA1MiwgMTI4LCA2NSwgNTIsIDU2LCA1MSwgMTI4LCA2NSwgNTIsIDU2LCA1MCwgMTI4LCA2NSwgNTIsIDU2LCAKLSAgICA0OSwgMTI4LCA2NSwgNTIsIDU2LCA0OCwgMTI4LCA2NSwgNTIsIDU1LCA1NywgMTI4LCA2NSwgNTIsIDU1LCA1NiwgMTI4LCAKLSAgICA2NSwgNTIsIDU1LCA1NSwgMTI4LCA2NSwgNTIsIDU1LCA1NCwgMTI4LCA2NSwgNTIsIDU1LCA1MywgMTI4LCA2NSwgNTIsIAotICAgIDU1LCA1MiwgMTI4LCA2NSwgNTIsIDU1LCA1MSwgMTI4LCA2NSwgNTIsIDU1LCA1MCwgMTI4LCA2NSwgNTIsIDU1LCA0OSwgCi0gICAgMTI4LCA2NSwgNTIsIDU1LCA0OCwgMTI4LCA2NSwgNTIsIDU0LCA1NywgMTI4LCA2NSwgNTIsIDU0LCA1NiwgMTI4LCA2NSwgCi0gICAgNTIsIDU0LCA1NSwgMTI4LCA2NSwgNTIsIDU0LCA1NCwgMTI4LCA2NSwgNTIsIDU0LCA1MywgMTI4LCA2NSwgNTIsIDU0LCAKLSAgICA1MiwgMTI4LCA2NSwgNTIsIDU0LCA1MSwgMTI4LCA2NSwgNTIsIDU0LCA1MCwgMTI4LCA2NSwgNTIsIDU0LCA0OSwgMTI4LCAKLSAgICA2NSwgNTIsIDU0LCA0OCwgMTI4LCA2NSwgNTIsIDUzLCA1NywgMTI4LCA2NSwgNTIsIDUzLCA1NiwgMTI4LCA2NSwgNTIsIAotICAgIDUzLCA1NSwgNjUsIDEyOCwgNjUsIDUyLCA1MywgNTUsIDEyOCwgNjUsIDUyLCA1MywgNTQsIDEyOCwgNjUsIDUyLCA1MywgCi0gICAgNTMsIDEyOCwgNjUsIDUyLCA1MywgNTIsIDEyOCwgNjUsIDUyLCA1MywgNTEsIDEyOCwgNjUsIDUyLCA1MywgNTAsIDEyOCwgCi0gICAgNjUsIDUyLCA1MywgNDksIDEyOCwgNjUsIDUyLCA1MywgNDgsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MiwgNTIsIDU3LCAxMjgsIDY1LCA1MiwgNTIsIDU2LCAxMjgsIDY1LCA1MiwgNTIsIDU1LCAxMjgsIDY1LCA1MiwgNTIsIAotICAgIDU0LCAxMjgsIDY1LCA1MiwgNTIsIDUzLCAxMjgsIDY1LCA1MiwgNTIsIDUyLCAxMjgsIDY1LCA1MiwgNTIsIDUxLCAxMjgsIAotICAgIDY1LCA1MiwgNTIsIDUwLCAxMjgsIDY1LCA1MiwgNTIsIDQ5LCAxMjgsIDY1LCA1MiwgNTIsIDQ4LCAxMjgsIDY1LCA1MiwgCi0gICAgNTEsIDU3LCAxMjgsIDY1LCA1MiwgNTEsIDU2LCAxMjgsIDY1LCA1MiwgNTEsIDU1LCAxMjgsIDY1LCA1MiwgNTEsIDU0LCAKLSAgICAxMjgsIDY1LCA1MiwgNTEsIDUzLCAxMjgsIDY1LCA1MiwgNTEsIDUyLCAxMjgsIDY1LCA1MiwgNTEsIDUxLCAxMjgsIDY1LCAKLSAgICA1MiwgNTEsIDUwLCAxMjgsIDY1LCA1MiwgNTEsIDQ5LCAxMjgsIDY1LCA1MiwgNTEsIDQ4LCAxMjgsIDY1LCA1MiwgNTAsIAotICAgIDU3LCAxMjgsIDY1LCA1MiwgNTAsIDU2LCAxMjgsIDY1LCA1MiwgNTAsIDU1LCAxMjgsIDY1LCA1MiwgNTAsIDU0LCAxMjgsIAotICAgIDY1LCA1MiwgNTAsIDUzLCAxMjgsIDY1LCA1MiwgNTAsIDUyLCAxMjgsIDY1LCA1MiwgNTAsIDUxLCAxMjgsIDY1LCA1MiwgCi0gICAgNTAsIDUwLCAxMjgsIDY1LCA1MiwgNTAsIDQ5LCAxMjgsIDY1LCA1MiwgNTAsIDQ4LCAxMjgsIDY1LCA1MiwgNDksIDU3LCAKLSAgICAxMjgsIDY1LCA1MiwgNDksIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgMTI4LCA2NSwgNTIsIAotICAgIDQ5LCA1NSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTUsIDEyOCwgNjUsIDUyLCA0OSwgNTQsIDQ1LCA4NiwgCi0gICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU0LCAxMjgsIDY1LCA1MiwgNDksIDUzLCA0NSwgODYsIDY1LCA4MywgMTI4LCAKLSAgICA2NSwgNTIsIDQ5LCA1MywgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIAotICAgIDEyOCwgNjUsIDUyLCA0OSwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUxLCAxMjgsIDY1LCA1MiwgCi0gICAgNDksIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MCwgMTI4LCA2NSwgNTIsIDQ5LCA0OSwgNDUsIDg2LCAKLSAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDEyOCwgNjUsIDUyLCA0OSwgNDgsIDE5MywgNjUsIDUyLCA0OSwgNDgsIAotICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDE3NiwgNjUsIDUyLCA0OCwgNTcsIDQ1LCA4NiwgNjUsIDgzLCAKLSAgICAxMjgsIDY1LCA1MiwgNDgsIDU3LCAxMjgsIDY1LCA1MiwgNDgsIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAotICAgIDQ4LCA1NiwgMTI4LCA2NSwgNTIsIDQ4LCA1NSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDEyOCwgCi0gICAgNjUsIDUyLCA0OCwgNTQsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU0LCAxMjgsIDY1LCA1MiwgNDgsIDUzLCAKLSAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MywgMTI4LCA2NSwgNTIsIDQ4LCA1MiwgNDUsIDg2LCA2NSwgODMsIAotICAgIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDEyOCwgNjUsIDUyLCA0OCwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgCi0gICAgNDgsIDUxLCAxMjgsIDY1LCA1MiwgNDgsIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgMTI4LCAKLSAgICA2NSwgNTIsIDQ4LCA0OSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNDksIDEyOCwgNjUsIDUyLCA0OCwgNDgsIAotICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAxMjgsIDY1LCA1MSwgNTcsIDU3LCAxMjgsIDY1LCA1MSwgCi0gICAgNTcsIDU2LCAxMjgsIDY1LCA1MSwgNTcsIDU1LCAxMjgsIDY1LCA1MSwgNTcsIDU0LCAxMjgsIDY1LCA1MSwgNTcsIDUzLCAKLSAgICAxMjgsIDY1LCA1MSwgNTcsIDUyLCAxMjgsIDY1LCA1MSwgNTcsIDE3OSwgNjUsIDUxLCA1NywgNTAsIDEyOCwgNjUsIDUxLCAKLSAgICA1NywgNDksIDEyOCwgNjUsIDUxLCA1NywgNDgsIDEyOCwgNjUsIDUxLCA1NiwgNTcsIDEyOCwgNjUsIDUxLCA1NiwgNTYsIAotICAgIDEyOCwgNjUsIDUxLCA1NiwgNTUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCAxMjgsIAotICAgIDY1LCA1MSwgNTYsIDUzLCAxMjgsIDY1LCA1MSwgNTYsIDUyLCAxMjgsIDY1LCA1MSwgNTYsIDUxLCA2NSwgMTI4LCA2NSwgCi0gICAgNTEsIDU2LCAxNzksIDY1LCA1MSwgNTYsIDUwLCAxMjgsIDY1LCA1MSwgNTYsIDQ5LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCAKLSAgICA0OSwgMTI4LCA2NSwgNTEsIDU2LCA0OCwgMTI4LCA2NSwgNTEsIDU1LCA1NywgMTI4LCA2NSwgNTEsIDU1LCA1NiwgMTI4LCAKLSAgICA2NSwgNTEsIDU1LCA1NSwgMTI4LCA2NSwgNTEsIDU1LCA1NCwgMTI4LCA2NSwgNTEsIDU1LCA1MywgMTI4LCA2NSwgNTEsIAotICAgIDU1LCA1MiwgMTI4LCA2NSwgNTEsIDU1LCA1MSwgMTI4LCA2NSwgNTEsIDU1LCA1MCwgMTI4LCA2NSwgNTEsIDU1LCA0OSwgCi0gICAgNjUsIDEyOCwgNjUsIDUxLCA1NSwgNDksIDEyOCwgNjUsIDUxLCA1NSwgNDgsIDEyOCwgNjUsIDUxLCA1NCwgNTcsIDEyOCwgCi0gICAgNjUsIDUxLCA1NCwgNTYsIDY1LCAxMjgsIDY1LCA1MSwgNTQsIDU2LCAxMjgsIDY1LCA1MSwgNTQsIDU1LCAxMjgsIDY1LCAKLSAgICA1MSwgNTQsIDU0LCAxMjgsIDY1LCA1MSwgNTQsIDUzLCAxMjgsIDY1LCA1MSwgNTQsIDUyLCA2NSwgMTI4LCA2NSwgNTEsIAotICAgIDU0LCA1MiwgMTI4LCA2NSwgNTEsIDU0LCA1MSwgMTI4LCA2NSwgNTEsIDU0LCA1MCwgMTI4LCA2NSwgNTEsIDU0LCA0OSwgCi0gICAgMTI4LCA2NSwgNTEsIDU0LCA0OCwgMTI4LCA2NSwgNTEsIDUzLCA1NywgNjUsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDEyOCwgCi0gICAgNjUsIDUxLCA1MywgNTYsIDEyOCwgNjUsIDUxLCA1MywgNTUsIDEyOCwgNjUsIDUxLCA1MywgNTQsIDEyOCwgNjUsIDUxLCAKLSAgICA1MywgNTMsIDEyOCwgNjUsIDUxLCA1MywgNTIsIDEyOCwgNjUsIDUxLCA1MywgNTEsIDEyOCwgNjUsIDUxLCA1MywgNTAsIAotICAgIDEyOCwgNjUsIDUxLCA1MywgNDksIDEyOCwgNjUsIDUxLCA1MywgNDgsIDEyOCwgNjUsIDUxLCA1MiwgNTcsIDEyOCwgNjUsIAotICAgIDUxLCA1MiwgNTYsIDEyOCwgNjUsIDUxLCA1MiwgNTUsIDEyOCwgNjUsIDUxLCA1MiwgNTQsIDEyOCwgNjUsIDUxLCA1MiwgCi0gICAgNTMsIDEyOCwgNjUsIDUxLCA1MiwgNTIsIDEyOCwgNjUsIDUxLCA1MiwgNTEsIDEyOCwgNjUsIDUxLCA1MiwgNTAsIDEyOCwgCi0gICAgNjUsIDUxLCA1MiwgNDksIDEyOCwgNjUsIDUxLCA1MiwgNDgsIDEyOCwgNjUsIDUxLCA1MSwgNTcsIDEyOCwgNjUsIDUxLCAKLSAgICA1MSwgNTYsIDEyOCwgNjUsIDUxLCA1MSwgNTUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY3LCAxMjgsIDY1LCA1MSwgNTEsIAotICAgIDU0LCA2NiwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDEyOCwgNjUsIDUxLCA1MSwgCi0gICAgNTMsIDEyOCwgNjUsIDUxLCA1MSwgNTIsIDEyOCwgNjUsIDUxLCA1MSwgNTEsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY3LCAKLSAgICAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NiwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIAotICAgIDEyOCwgNjUsIDUxLCA1MSwgNDksIDEyOCwgNjUsIDUxLCA1MSwgNDgsIDEyOCwgNjUsIDUxLCA1MCwgNTcsIDY1LCAxMjgsIAotICAgIDY1LCA1MSwgNTAsIDU3LCAxMjgsIDY1LCA1MSwgNTAsIDU2LCAxMjgsIDY1LCA1MSwgNTAsIDU1LCAxMjgsIDY1LCA1MSwgCi0gICAgNTAsIDU0LCAxMjgsIDY1LCA1MSwgNTAsIDUzLCAxMjgsIDY1LCA1MSwgNTAsIDUyLCAxMjgsIDY1LCA1MSwgNTAsIDUxLCAKLSAgICAxMjgsIDY1LCA1MSwgNTAsIDUwLCAxMjgsIDY1LCA1MSwgNTAsIDQ5LCAxMjgsIDY1LCA1MSwgNTAsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MSwgNDksIDU3LCAxMjgsIDY1LCA1MSwgNDksIDU2LCAxMjgsIDY1LCA1MSwgNDksIDU1LCAxMjgsIDY1LCA1MSwgNDksIAotICAgIDU0LCAxMjgsIDY1LCA1MSwgNDksIDUzLCAxMjgsIDY1LCA1MSwgNDksIDUyLCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NywgCi0gICAgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjYsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY1LCAxMjgsIDY1LCA1MSwgNDksIDUxLCAKLSAgICAxMjgsIDY1LCA1MSwgNDksIDUwLCAxMjgsIDY1LCA1MSwgNDksIDQ5LCAxMjgsIDY1LCA1MSwgNDksIDQ4LCAxMjgsIDY1LCAKLSAgICA1MSwgNDgsIDU3LCA2NywgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjYsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY1LCAxMjgsIAotICAgIDY1LCA1MSwgNDgsIDU3LCAxMjgsIDY1LCA1MSwgNDgsIDU2LCAxMjgsIDY1LCA1MSwgNDgsIDU1LCAxMjgsIDY1LCA1MSwgCi0gICAgNDgsIDU0LCAxMjgsIDY1LCA1MSwgNDgsIDUzLCAxMjgsIDY1LCA1MSwgNDgsIDUyLCAxMjgsIDY1LCA1MSwgNDgsIDUxLCAKLSAgICAxMjgsIDY1LCA1MSwgNDgsIDUwLCAxMjgsIDY1LCA1MSwgNDgsIDQ5LCAxMjgsIDY1LCA1MSwgNDgsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MCwgNTcsIDU3LCA2NSwgMTI4LCA2NSwgNTAsIDU3LCA1NywgMTI4LCA2NSwgNTAsIDU3LCA1NiwgMTI4LCA2NSwgNTAsIAotICAgIDU3LCA1NSwgMTI4LCA2NSwgNTAsIDU3LCA1NCwgMTI4LCA2NSwgNTAsIDU3LCA1MywgMTI4LCA2NSwgNTAsIDU3LCA1MiwgCi0gICAgNjUsIDEyOCwgNjUsIDUwLCA1NywgNTIsIDEyOCwgNjUsIDUwLCA1NywgNTEsIDEyOCwgNjUsIDUwLCA1NywgNTAsIDEyOCwgCi0gICAgNjUsIDUwLCA1NywgNDksIDEyOCwgNjUsIDUwLCA1NywgNDgsIDEyOCwgNjUsIDUwLCA1NiwgNTcsIDY1LCAxMjgsIDY1LCAKLSAgICA1MCwgNTYsIDU3LCAxMjgsIDY1LCA1MCwgNTYsIDU2LCAxMjgsIDY1LCA1MCwgNTYsIDU1LCAxMjgsIDY1LCA1MCwgNTYsIAotICAgIDU0LCAxMjgsIDY1LCA1MCwgNTYsIDUzLCAxMjgsIDY1LCA1MCwgNTYsIDUyLCAxMjgsIDY1LCA1MCwgNTYsIDUxLCAxMjgsIAotICAgIDY1LCA1MCwgNTYsIDUwLCAxMjgsIDY1LCA1MCwgNTYsIDQ5LCAxMjgsIDY1LCA1MCwgNTYsIDQ4LCAxMjgsIDY1LCA1MCwgCi0gICAgNTUsIDU3LCAxMjgsIDY1LCA1MCwgNTUsIDU2LCAxMjgsIDY1LCA1MCwgNTUsIDU1LCAxMjgsIDY1LCA1MCwgNTUsIDU0LCAKLSAgICAxMjgsIDY1LCA1MCwgNTUsIDUzLCAxMjgsIDY1LCA1MCwgNTUsIDUyLCAxMjgsIDY1LCA1MCwgNTUsIDUxLCAxMjgsIDY1LCAKLSAgICA1MCwgNTUsIDUwLCAxMjgsIDY1LCA1MCwgNTUsIDQ5LCAxMjgsIDY1LCA1MCwgNTUsIDQ4LCAxMjgsIDY1LCA1MCwgNTQsIAotICAgIDU3LCAxMjgsIDY1LCA1MCwgNTQsIDU2LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgCi0gICAgMTI4LCA2NSwgNTAsIDU0LCA1NCwgMTI4LCA2NSwgNTAsIDU0LCA1MywgMTI4LCA2NSwgNTAsIDU0LCA1MiwgMTI4LCA2NSwgCi0gICAgNTAsIDU0LCA1MSwgMTI4LCA2NSwgNTAsIDU0LCA1MCwgMTI4LCA2NSwgNTAsIDU0LCA0OSwgMTI4LCA2NSwgNTAsIDU0LCAKLSAgICA0OCwgMTI4LCA2NSwgNTAsIDUzLCA1NywgMTI4LCA2NSwgNTAsIDUzLCA1NiwgMTI4LCA2NSwgNTAsIDUzLCA1NSwgMTI4LCAKLSAgICA2NSwgNTAsIDUzLCA1NCwgMTI4LCA2NSwgNTAsIDUzLCA1MywgMTI4LCA2NSwgNTAsIDUzLCA1MiwgMTI4LCA2NSwgNTAsIAotICAgIDUzLCA1MSwgMTI4LCA2NSwgNTAsIDUzLCA1MCwgMTI4LCA2NSwgNTAsIDUzLCA0OSwgMTI4LCA2NSwgNTAsIDUzLCA0OCwgCi0gICAgMTI4LCA2NSwgNTAsIDUyLCA1NywgMTI4LCA2NSwgNTAsIDUyLCA1NiwgMTI4LCA2NSwgNTAsIDUyLCA1NSwgMTI4LCA2NSwgCi0gICAgNTAsIDUyLCA1NCwgMTI4LCA2NSwgNTAsIDUyLCA1MywgMTI4LCA2NSwgNTAsIDUyLCA1MiwgMTI4LCA2NSwgNTAsIDUyLCAKLSAgICA1MSwgMTI4LCA2NSwgNTAsIDUyLCA1MCwgMTI4LCA2NSwgNTAsIDUyLCA0OSwgMTI4LCA2NSwgNTAsIDUyLCA0OCwgMTI4LCAKLSAgICA2NSwgNTAsIDUxLCA1NywgMTI4LCA2NSwgNTAsIDUxLCA1NiwgMTI4LCA2NSwgNTAsIDUxLCA1NSwgMTI4LCA2NSwgNTAsIAotICAgIDUxLCA1NCwgMTI4LCA2NSwgNTAsIDUxLCA1MywgMTI4LCA2NSwgNTAsIDUxLCA1MiwgMTI4LCA2NSwgNTAsIDUxLCA1MSwgCi0gICAgMTI4LCA2NSwgNTAsIDUxLCA1MCwgMTI4LCA2NSwgNTAsIDUxLCA0OSwgMTI4LCA2NSwgNTAsIDUxLCA0OCwgMTI4LCA2NSwgCi0gICAgNTAsIDUwLCA1NywgMTI4LCA2NSwgNTAsIDUwLCA1NiwgMTI4LCA2NSwgNTAsIDUwLCA1NSwgNjUsIDEyOCwgNjUsIDUwLCAKLSAgICA1MCwgNTUsIDEyOCwgNjUsIDUwLCA1MCwgNTQsIDEyOCwgNjUsIDUwLCA1MCwgNTMsIDEyOCwgNjUsIDUwLCA1MCwgNTIsIAotICAgIDEyOCwgNjUsIDUwLCA1MCwgNTEsIDEyOCwgNjUsIDUwLCA1MCwgNTAsIDEyOCwgNjUsIDUwLCA1MCwgNDksIDEyOCwgNjUsIAotICAgIDUwLCA1MCwgNDgsIDEyOCwgNjUsIDUwLCA0OSwgNTcsIDEyOCwgNjUsIDUwLCA0OSwgNTYsIDEyOCwgNjUsIDUwLCA0OSwgCi0gICAgNTUsIDEyOCwgNjUsIDUwLCA0OSwgNTQsIDY1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCAxMjgsIDY1LCA1MCwgNDksIDUzLCAKLSAgICA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgMTI4LCA2NSwgNTAsIDQ5LCA1MiwgMTI4LCA2NSwgNTAsIDQ5LCA1MSwgMTI4LCAKLSAgICA2NSwgNTAsIDQ5LCA1MCwgMTI4LCA2NSwgNTAsIDQ5LCA0OSwgMTI4LCA2NSwgNTAsIDQ5LCA0OCwgMTI4LCA2NSwgNTAsIAotICAgIDQ4LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTcsIDEyOCwgNjUsIDUwLCA0OCwgNTYsIDEyOCwgNjUsIDUwLCA0OCwgCi0gICAgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDU1LCAxMjgsIDY1LCA1MCwgNDgsIDU0LCAxMjgsIDY1LCA1MCwgNDgsIDUzLCAKLSAgICAxMjgsIDY1LCA1MCwgNDgsIDUyLCAxMjgsIDY1LCA1MCwgNDgsIDUxLCAxMjgsIDY1LCA1MCwgNDgsIDUwLCA2NiwgMTI4LCAKLSAgICA2NSwgNTAsIDQ4LCA1MCwgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDEyOCwgNjUsIDUwLCA0OCwgNDksIDEyOCwgNjUsIAotICAgIDUwLCA0OCwgNDgsIDEyOCwgNjUsIDQ5LCA1NywgNTcsIDEyOCwgNjUsIDQ5LCA1NywgNTYsIDEyOCwgNjUsIDQ5LCA1NywgCi0gICAgNTUsIDEyOCwgNjUsIDQ5LCA1NywgNTQsIDEyOCwgNjUsIDQ5LCA1NywgNTMsIDEyOCwgNjUsIDQ5LCA1NywgNTIsIDEyOCwgCi0gICAgNjUsIDQ5LCA1NywgNTEsIDEyOCwgNjUsIDQ5LCA1NywgNTAsIDEyOCwgNjUsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDQ5LCAKLSAgICA1NywgNDgsIDEyOCwgNjUsIDQ5LCA1NiwgNTcsIDEyOCwgNjUsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIDQ5LCA1NiwgNTUsIAotICAgIDEyOCwgNjUsIDQ5LCA1NiwgNTQsIDEyOCwgNjUsIDQ5LCA1NiwgNTMsIDEyOCwgNjUsIDQ5LCA1NiwgNTIsIDEyOCwgNjUsIAotICAgIDQ5LCA1NiwgNTEsIDEyOCwgNjUsIDQ5LCA1NiwgNTAsIDEyOCwgNjUsIDQ5LCA1NiwgNDksIDEyOCwgNjUsIDQ5LCA1NiwgCi0gICAgNDgsIDEyOCwgNjUsIDQ5LCA1NSwgNTcsIDEyOCwgNjUsIDQ5LCA1NSwgNTYsIDEyOCwgNjUsIDQ5LCA1NSwgNTUsIDEyOCwgCi0gICAgNjUsIDQ5LCA1NSwgNTQsIDEyOCwgNjUsIDQ5LCA1NSwgNTMsIDEyOCwgNjUsIDQ5LCA1NSwgNTIsIDEyOCwgNjUsIDQ5LCAKLSAgICA1NSwgNTEsIDEyOCwgNjUsIDQ5LCA1NSwgNTAsIDEyOCwgNjUsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDQ5LCA1NSwgNDgsIAotICAgIDEyOCwgNjUsIDQ5LCA1NCwgNTcsIDEyOCwgNjUsIDQ5LCA1NCwgNTYsIDEyOCwgNjUsIDQ5LCA1NCwgNTUsIDEyOCwgNjUsIAotICAgIDQ5LCA1NCwgNTQsIDEyOCwgNjUsIDQ5LCA1NCwgNTMsIDEyOCwgNjUsIDQ5LCA1NCwgNTIsIDEyOCwgNjUsIDQ5LCA1NCwgCi0gICAgNTEsIDEyOCwgNjUsIDQ5LCA1NCwgNTAsIDEyOCwgNjUsIDQ5LCA1NCwgNDksIDEyOCwgNjUsIDQ5LCA1NCwgNDgsIDEyOCwgCi0gICAgNjUsIDQ5LCA1MywgNTcsIDEyOCwgNjUsIDQ5LCA1MywgNTYsIDEyOCwgNjUsIDQ5LCA1MywgNTUsIDEyOCwgNjUsIDQ5LCAKLSAgICA1MywgNTQsIDEyOCwgNjUsIDQ5LCA1MywgNTMsIDEyOCwgNjUsIDQ5LCA1MywgNTIsIDEyOCwgNjUsIDQ5LCA1MywgNTEsIAotICAgIDEyOCwgNjUsIDQ5LCA1MywgNTAsIDEyOCwgNjUsIDQ5LCA1MywgNDksIDEyOCwgNjUsIDQ5LCA1MywgNDgsIDEyOCwgNjUsIAotICAgIDQ5LCA1MiwgNTcsIDEyOCwgNjUsIDQ5LCA1MiwgNTYsIDEyOCwgNjUsIDQ5LCA1MiwgNTUsIDEyOCwgNjUsIDQ5LCA1MiwgCi0gICAgNTQsIDEyOCwgNjUsIDQ5LCA1MiwgNTMsIDEyOCwgNjUsIDQ5LCA1MiwgNTIsIDEyOCwgNjUsIDQ5LCA1MiwgNTEsIDEyOCwgCi0gICAgNjUsIDQ5LCA1MiwgNTAsIDEyOCwgNjUsIDQ5LCA1MiwgNDksIDEyOCwgNjUsIDQ5LCA1MiwgNDgsIDEyOCwgNjUsIDQ5LCAKLSAgICA1MSwgNTcsIDEyOCwgNjUsIDQ5LCA1MSwgNTYsIDEyOCwgNjUsIDQ5LCA1MSwgNTUsIDEyOCwgNjUsIDQ5LCA1MSwgNTQsIAotICAgIDEyOCwgNjUsIDQ5LCA1MSwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNTEsIDUzLCAxMjgsIDY1LCA0OSwgNTEsIDUyLCAxMjgsIAotICAgIDY1LCA0OSwgNTEsIDUxLCAxMjgsIDY1LCA0OSwgNTEsIDUwLCAxMjgsIDY1LCA0OSwgNTEsIDQ5LCA2NywgMTI4LCA2NSwgCi0gICAgNDksIDUxLCA0OSwgMTI4LCA2NSwgNDksIDUxLCA0OCwgMTI4LCA2NSwgNDksIDUwLCA1NywgMTI4LCA2NSwgNDksIDUwLCAKLSAgICA1NiwgMTI4LCA2NSwgNDksIDUwLCA1NSwgMTI4LCA2NSwgNDksIDUwLCA1NCwgMTI4LCA2NSwgNDksIDUwLCA1MywgNjUsIAotICAgIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDEyOCwgNjUsIDQ5LCA1MCwgNTIsIDEyOCwgNjUsIDQ5LCA1MCwgNTEsIDEyOCwgNjUsIAotICAgIDQ5LCA1MCwgNTAsIDEyOCwgNjUsIDQ5LCA1MCwgNDksIDEyOCwgNjUsIDQ5LCA1MCwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgCi0gICAgNTAsIDQ4LCAxMjgsIDY1LCA0OSwgNDksIDU3LCAxMjgsIDY1LCA0OSwgNDksIDU2LCAxMjgsIDY1LCA0OSwgNDksIDU1LCAKLSAgICAxMjgsIDY1LCA0OSwgNDksIDU0LCAxMjgsIDY1LCA0OSwgNDksIDUzLCA2NSwgMTI4LCA2NSwgNDksIDQ5LCA1MywgMTI4LCAKLSAgICA2NSwgNDksIDQ5LCA1MiwgMTI4LCA2NSwgNDksIDQ5LCA1MSwgMTI4LCA2NSwgNDksIDQ5LCA1MCwgMTI4LCA2NSwgNDksIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgCi0gICAgNDksIDQ4LCAxMjgsIDY1LCA0OSwgNDgsIDU3LCAxMjgsIDY1LCA0OSwgNDgsIDU2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCAKLSAgICA2NywgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIAotICAgIDU1LCAxMjgsIDY1LCA0OSwgNDgsIDU0LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1MywgCi0gICAgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY3LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAKLSAgICA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDEyOCwgNjUsIDQ5LCA0OCwgNTEsIAotICAgIDEyOCwgNjUsIDQ5LCA0OCwgNTAsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OSwgNDgsIDQ5LCA2NSwgCi0gICAgMTI4LCA2NSwgNDksIDQ4LCA0OSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDQ1LCAKLSAgICA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCAxMjgsIDY1LCA0OCwgNTcsIDU3LCAxMjgsIDY1LCA0OCwgNTcsIAotICAgIDU2LCA2NSwgMTI4LCA2NSwgNDgsIDU3LCA1NiwgMTI4LCA2NSwgNDgsIDU3LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgCi0gICAgNTUsIDEyOCwgNjUsIDQ4LCA1NywgNTQsIDEyOCwgNjUsIDQ4LCA1NywgNTMsIDEyOCwgNjUsIDQ4LCA1NywgNTIsIDEyOCwgCi0gICAgNjUsIDQ4LCA1NywgNTEsIDEyOCwgNjUsIDQ4LCA1NywgNTAsIDEyOCwgNjUsIDQ4LCA1NywgNDksIDEyOCwgNjUsIDQ4LCAKLSAgICA1NywgNDgsIDEyOCwgNjUsIDQ4LCA1NiwgNTcsIDEyOCwgNjUsIDQ4LCA1NiwgNTYsIDEyOCwgNjUsIDQ4LCA1NiwgNTUsIAotICAgIDEyOCwgNjUsIDQ4LCA1NiwgNTQsIDEyOCwgNjUsIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDQ4LCA1NiwgNTIsIDEyOCwgNjUsIAotICAgIDQ4LCA1NiwgNTEsIDEyOCwgNjUsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIDQ4LCA1NiwgCi0gICAgNDgsIDEyOCwgNjUsIDQ4LCA1NSwgNTcsIDEyOCwgNjUsIDQ4LCA1NSwgNTYsIDEyOCwgNjUsIDQ4LCA1NSwgNTUsIDEyOCwgCi0gICAgNjUsIDQ4LCA1NSwgNTQsIDEyOCwgNjUsIDQ4LCA1NSwgNTMsIDEyOCwgNjUsIDQ4LCA1NSwgNTIsIDEyOCwgNjUsIDQ4LCAKLSAgICA1NSwgNTEsIDEyOCwgNjUsIDQ4LCA1NSwgNTAsIDEyOCwgNjUsIDQ4LCA1NSwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIAotICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIAotICAgIDQ4LCA1NCwgNTQsIDY3LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjUsIDEyOCwgCi0gICAgNjUsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCAKLSAgICA1NCwgNTEsIDEyOCwgNjUsIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIAotICAgIDEyOCwgNjUsIDQ4LCA1MywgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIAotICAgIDQ4LCA1MywgNTQsIDEyOCwgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgCi0gICAgNTEsIDEyOCwgNjUsIDQ4LCA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgCi0gICAgNjUsIDQ4LCA1MiwgNTcsIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNDgsIAotICAgIDUyLCA1MywgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDQ4LCA1MiwgCi0gICAgNTEsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUxLCAxMjgsIDY1LCA0OCwgNTIsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCAKLSAgICA1MCwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIAotICAgIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCA2NSwgMTI4LCA2NSwgNDgsIDUxLCA1NywgCi0gICAgMTI4LCA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIDUxLCA1NCwgMTI4LCA2NSwgCi0gICAgNDgsIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgMTI4LCA2NSwgNDgsIDUxLCAKLSAgICA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MCwgNTYsIDY2LCAxMjgsIDY1LCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIAotICAgIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgCi0gICAgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCAKLSAgICA2NSwgNDUsIDY5LCA4NSwgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIDQ1LCA3NSwgNzIsIAotICAgIDg5LCA4NSwgMTk2LCA0NSwgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAxOTYsIDQ1LCA2NywgCi0gICAgNzIsIDY1LCAyMTAsIDQ1LCA2NywgNzIsIDY1LCA3NiwgMTI4LCAKKyAgICA3NiwgNzksIDEyOCwgNjUsIDc2LCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NiwgNzYsIDIwMSwgNjUsIAorICAgIDc2LCA3NiwgNjUsIDIwMCwgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgNDUsIDUwLCAxMjgsIDY1LCA3NiwgNzUsIDY1LCA3NiwgCisgICAgNzMsIDEyOCwgNjUsIDc2LCA3MywgNzEsIDc4LCA2OSwgMTk2LCA2NSwgNzYsIDczLCA3MCwgODUsIDEyOCwgNjUsIDc2LCAKKyAgICA3MywgNzAsIDEyOCwgNjUsIDc2LCA3MywgMTk4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIAorICAgIDIwNiwgNjUsIDc2LCA3MSwgNzMsIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIAorICAgIDc2LCA2OSwgODIsIDg0LCAxMjgsIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgCisgICAgMTI4LCA2NSwgNzYsIDY5LCA3MCwgMTI4LCA2NSwgNzYsIDY2LCA2NSwgNzgsIDczLCA2NSwgMjA2LCA2NSwgNzYsIDY1LCAKKyAgICA4OSwgNzIsIDY5LCAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIAorICAgIDY1LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA0NSwgNzYsIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgCisgICAgNjksIDgzLCA2OSwgNzYsIDgzLCA3NSwgNjUsIDY2LCAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCAKKyAgICA3MywgNzcsIDczLCAxOTUsIDY1LCA3NSwgNjYsIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIAorICAgIDY1LCA4MiwgMTkzLCA2NSwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAKKyAgICAyMDMsIDY1LCA3MywgODQsIDc5LCAyMDYsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIAorICAgIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgCisgICAgNzYsIDc3LCAxMjgsIDY1LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCAKKyAgICA2NSwgNzIsIDgzLCA2OCwgNjUsIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA3OSwgMjA1LCA2NSwgNzIsIAorICAgIDY1LCA3OCwgMTk5LCA2NSwgNzIsIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgCisgICAgODUsIDc4LCA3MSwgMTI4LCA2NSwgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIAorICAgIDgzLCAyMTIsIDY1LCA3MSwgNjUsIDczLCA3OCwgMTI4LCA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIDgzLCA2NSwgCisgICAgNjUsIDgxLCAxMjgsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgNjksIDc4LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgNjksIDY4LCAxMjgsIDY1LCA3MCwgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCA3MCwgODIsIAorICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDcwLCA3MCwgNzMsIDIxNiwgNjUsIDY5LCA4OSwgNjUsIDc4LCA3OCwgCisgICAgNjUsIDEyOCwgNjUsIDY5LCA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgODUsIDc2LCA2NSwgODAsIDczLCA4NSwgODMsIAorICAgIDEyOCwgNjUsIDY5LCA4MywgNjcsIDEyOCwgNjUsIDY5LCA4MywgMTI4LCA2NSwgNjksIDgyLCA3MywgNjUsIDIwNCwgNjUsIAorICAgIDY5LCA4MiwgMTI4LCA2NSwgNjksIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDc2LCAKKyAgICAxMjgsIDY1LCA2OSwgNzUsIDEyOCwgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIDY1LCA2OSwgNzEsIDEyOCwgNjUsIDY5LCAKKyAgICA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgNjksIDEyOCwgNjUsIDY5LCA2OCwgNjUsIDQ1LCA4MCwgNzMsIAorICAgIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgCisgICAgODQsIDY1LCA3MSwgNjksIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY4LCA3NywgNzMsIDgzLCAKKyAgICA4MywgNzMsIDc5LCAyMDYsIDY1LCA2OCwgNzYsIDY1LCAyMDUsIDY1LCA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIAorICAgIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgCisgICAgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCAKKyAgICA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgCisgICAgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIAorICAgIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgCisgICAgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCAKKyAgICA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIAorICAgIDc5LCA3NywgNzcsIDc5LCA2OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgCisgICAgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIAorICAgIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAKKyAgICAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjYsIAorICAgIDQ5LCA1NywgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NSwgCisgICAgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA2NiwgNDksIDUxLCA0OSwgNjYsIAorICAgIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNTEsIDEyOCwgNjUsIDY2LCA0OSwgCisgICAgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCA0OSwgNTYsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTYsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNDgsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTUsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgCisgICAgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1NCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1MywgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NywgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NCwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MSwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCAKKyAgICA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDUyLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIAorICAgIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTEsIDc3LCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDc3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgNzAsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzcsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTAsIDQ5LCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU3LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNDgsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDY1LCAKKyAgICA4OSwgNzMsIDc4LCAxMjgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2NSwgODksIDEyOCwgNjUsIAorICAgIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCA2NiwgNjUsIDY1LCA3MCwgCisgICAgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU2LCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUzLCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIDEyOCwgNjUsIDY1LCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTIsIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA2NSwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUwLCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA1NSwgMTI4LCA2NSwgNTYsIDQ4LCA1NCwgMTI4LCA2NSwgCisgICAgNTYsIDQ4LCA1MywgMTI4LCA2NSwgNTYsIDQ4LCA1MiwgMTI4LCA2NSwgNTYsIDQ4LCA1MSwgMTI4LCA2NSwgNTYsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NSwgNTYsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA0OCwgMTI4LCA2NSwgNTUsIDUxLCAxNzgsIDY1LCAKKyAgICA1NSwgNTAsIDE4MiwgNjUsIDU1LCA0OSwgMTgzLCA2NSwgNTUsIDQ5LCAxODEsIDY1LCA1NSwgNDksIDE4MCwgNjUsIDU1LCAKKyAgICA0OSwgMTc5LCA2NSwgNTUsIDQ5LCAxNzgsIDY1LCA1NSwgNDksIDE3NywgNjUsIDU1LCA0OSwgMTc2LCA2NSwgNTUsIDQ4LCAKKyAgICA1NywgNDUsIDE4MiwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODAsIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTc5LCA2NSwgNTUsIAorICAgIDQ4LCA1NywgNDUsIDE3OCwgNjUsIDU1LCA0OCwgMTg1LCA2NSwgNTUsIDQ4LCAxODQsIDY1LCA1NSwgNDgsIDE4MywgNjUsIAorICAgIDU1LCA0OCwgMTgyLCA2NSwgNTUsIDQ4LCAxODEsIDY1LCA1NSwgNDgsIDE4MCwgNjUsIDU1LCA0OCwgMTc5LCA2NSwgNTUsIAorICAgIDQ4LCAxNzgsIDY1LCA1NSwgNDgsIDE3NywgNjUsIDU0LCA1NCwgNTIsIDEyOCwgNjUsIDU0LCA1NCwgNTEsIDEyOCwgNjUsIAorICAgIDU0LCA1NCwgNTAsIDEyOCwgNjUsIDU0LCA1NCwgNDksIDEyOCwgNjUsIDU0LCA1NCwgNDgsIDEyOCwgNjUsIDU0LCA1MywgCisgICAgNTcsIDEyOCwgNjUsIDU0LCA1MywgNTYsIDEyOCwgNjUsIDU0LCA1MywgNTUsIDEyOCwgNjUsIDU0LCA1MywgNTQsIDEyOCwgCisgICAgNjUsIDU0LCA1MywgNTMsIDEyOCwgNjUsIDU0LCA1MywgNTIsIDEyOCwgNjUsIDU0LCA1MywgNTEsIDEyOCwgNjUsIDU0LCAKKyAgICA1MywgNTAsIDEyOCwgNjUsIDU0LCA1MywgNDksIDEyOCwgNjUsIDU0LCA1MiwgNTcsIDEyOCwgNjUsIDU0LCA1MiwgNTYsIAorICAgIDEyOCwgNjUsIDU0LCA1MiwgNTQsIDEyOCwgNjUsIDU0LCA1MiwgNTMsIDEyOCwgNjUsIDU0LCA1MiwgNTIsIDEyOCwgNjUsIAorICAgIDU0LCA1MiwgNTEsIDEyOCwgNjUsIDU0LCA1MiwgNTAsIDEyOCwgNjUsIDU0LCA1MiwgNDgsIDEyOCwgNjUsIDU0LCA1MSwgCisgICAgNTYsIDEyOCwgNjUsIDU0LCA1MSwgNTUsIDEyOCwgNjUsIDU0LCA1MSwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTcsIDEyOCwgCisgICAgNjUsIDU0LCA1MCwgNTYsIDEyOCwgNjUsIDU0LCA1MCwgNTUsIDEyOCwgNjUsIDU0LCA1MCwgNTQsIDEyOCwgNjUsIDU0LCAKKyAgICA1MCwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTEsIDEyOCwgNjUsIDU0LCA1MCwgNTAsIDEyOCwgNjUsIDU0LCA1MCwgNDksIAorICAgIDEyOCwgNjUsIDU0LCA1MCwgNDgsIDEyOCwgNjUsIDU0LCA0OSwgNTcsIDEyOCwgNjUsIDU0LCA0OSwgNTYsIDEyOCwgNjUsIAorICAgIDU0LCA0OSwgNTUsIDEyOCwgNjUsIDU0LCA0OSwgNTQsIDEyOCwgNjUsIDU0LCA0OSwgNTMsIDEyOCwgNjUsIDU0LCA0OSwgCisgICAgNTIsIDEyOCwgNjUsIDU0LCA0OSwgNTEsIDEyOCwgNjUsIDU0LCA0OSwgNTAsIDEyOCwgNjUsIDU0LCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDU0LCA0OSwgNDgsIDEyOCwgNjUsIDU0LCA0OCwgNTcsIDEyOCwgNjUsIDU0LCA0OCwgNTYsIDEyOCwgNjUsIDU0LCAKKyAgICA0OCwgNTQsIDEyOCwgNjUsIDU0LCA0OCwgNTIsIDEyOCwgNjUsIDU0LCA0OCwgNTEsIDEyOCwgNjUsIDU0LCA0OCwgNTAsIAorICAgIDEyOCwgNjUsIDU0LCA0OCwgNDksIDEyOCwgNjUsIDU0LCA0OCwgNDgsIDEyOCwgNjUsIDUzLCA1NywgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA1NywgNTQsIDEyOCwgNjUsIDUzLCA1NywgNTMsIDEyOCwgNjUsIDUzLCA1NywgNTIsIDEyOCwgNjUsIDUzLCA1NywgCisgICAgNTAsIDEyOCwgNjUsIDUzLCA1NywgNDksIDEyOCwgNjUsIDUzLCA1NiwgNTcsIDEyOCwgNjUsIDUzLCA1NiwgNTYsIDEyOCwgCisgICAgNjUsIDUzLCA1NiwgNTUsIDEyOCwgNjUsIDUzLCA1NiwgNTQsIDEyOCwgNjUsIDUzLCA1NiwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1NiwgNTIsIDEyOCwgNjUsIDUzLCA1NiwgNTEsIDEyOCwgNjUsIDUzLCA1NiwgNTAsIDEyOCwgNjUsIDUzLCA1NiwgNDksIAorICAgIDEyOCwgNjUsIDUzLCA1NiwgNDgsIDEyOCwgNjUsIDUzLCA1NSwgNTcsIDEyOCwgNjUsIDUzLCA1NSwgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA1NSwgNTUsIDEyOCwgNjUsIDUzLCA1NSwgNTQsIDEyOCwgNjUsIDUzLCA1NSwgNTMsIDEyOCwgNjUsIDUzLCA1NSwgCisgICAgNTIsIDEyOCwgNjUsIDUzLCA1NSwgNTEsIDEyOCwgNjUsIDUzLCA1NSwgNTAsIDEyOCwgNjUsIDUzLCA1NSwgNDksIDEyOCwgCisgICAgNjUsIDUzLCA1NSwgNDgsIDEyOCwgNjUsIDUzLCA1NCwgNTcsIDEyOCwgNjUsIDUzLCA1NCwgNTYsIDEyOCwgNjUsIDUzLCAKKyAgICA1NCwgNTQsIDEyOCwgNjUsIDUzLCA1NCwgNTMsIDEyOCwgNjUsIDUzLCA1NCwgNTIsIDEyOCwgNjUsIDUzLCA1NCwgNTEsIAorICAgIDEyOCwgNjUsIDUzLCA1MywgNTcsIDEyOCwgNjUsIDUzLCA1MywgNTUsIDEyOCwgNjUsIDUzLCA1MywgNTQsIDEyOCwgNjUsIAorICAgIDUzLCA1MywgNTMsIDEyOCwgNjUsIDUzLCA1MywgNTIsIDEyOCwgNjUsIDUzLCA1MywgNTEsIDEyOCwgNjUsIDUzLCA1MywgCisgICAgNTAsIDEyOCwgNjUsIDUzLCA1MywgNDksIDEyOCwgNjUsIDUzLCA1MywgNDgsIDEyOCwgNjUsIDUzLCA1MiwgNTcsIDEyOCwgCisgICAgNjUsIDUzLCA1MiwgNTYsIDEyOCwgNjUsIDUzLCA1MiwgNTUsIDEyOCwgNjUsIDUzLCA1MiwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1MiwgNTAsIDEyOCwgNjUsIDUzLCA1MiwgNDksIDEyOCwgNjUsIDUzLCA1MiwgNDgsIDEyOCwgNjUsIDUzLCA1MSwgNTcsIAorICAgIDEyOCwgNjUsIDUzLCA1MSwgNTYsIDEyOCwgNjUsIDUzLCA1MSwgNTUsIDEyOCwgNjUsIDUzLCA1MSwgNTQsIDEyOCwgNjUsIAorICAgIDUzLCA1MSwgNTMsIDEyOCwgNjUsIDUzLCA1MSwgNTIsIDEyOCwgNjUsIDUzLCA1MSwgNTAsIDEyOCwgNjUsIDUzLCA1MSwgCisgICAgNDksIDEyOCwgNjUsIDUzLCA1MSwgNDgsIDEyOCwgNjUsIDUzLCA1MCwgNTcsIDEyOCwgNjUsIDUzLCA1MCwgNTYsIDEyOCwgCisgICAgNjUsIDUzLCA1MCwgNTUsIDEyOCwgNjUsIDUzLCA1MCwgNTQsIDEyOCwgNjUsIDUzLCA1MCwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1MCwgNTIsIDEyOCwgNjUsIDUzLCA1MCwgNTEsIDEyOCwgNjUsIDUzLCA1MCwgNTAsIDEyOCwgNjUsIDUzLCA1MCwgNDksIAorICAgIDEyOCwgNjUsIDUzLCA1MCwgNDgsIDEyOCwgNjUsIDUzLCA0OSwgNTcsIDEyOCwgNjUsIDUzLCA0OSwgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA0OSwgNTUsIDEyOCwgNjUsIDUzLCA0OSwgNTQsIDEyOCwgNjUsIDUzLCA0OSwgNTMsIDEyOCwgNjUsIDUzLCA0OSwgCisgICAgNTIsIDEyOCwgNjUsIDUzLCA0OSwgNTEsIDEyOCwgNjUsIDUzLCA0OSwgNTAsIDEyOCwgNjUsIDUzLCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDUzLCA0OSwgNDgsIDEyOCwgNjUsIDUzLCA0OCwgNTcsIDEyOCwgNjUsIDUzLCA0OCwgNTYsIDEyOCwgNjUsIDUzLCAKKyAgICA0OCwgNTUsIDEyOCwgNjUsIDUzLCA0OCwgNTQsIDEyOCwgNjUsIDUzLCA0OCwgNTMsIDEyOCwgNjUsIDUzLCA0OCwgNTIsIAorICAgIDEyOCwgNjUsIDUzLCA0OCwgNTEsIDEyOCwgNjUsIDUzLCA0OCwgNTAsIDEyOCwgNjUsIDUzLCA0OCwgNDksIDEyOCwgNjUsIAorICAgIDUyLCA1NywgNTUsIDEyOCwgNjUsIDUyLCA1NywgNTQsIDEyOCwgNjUsIDUyLCA1NywgNTMsIDEyOCwgNjUsIDUyLCA1NywgCisgICAgNTIsIDEyOCwgNjUsIDUyLCA1NywgNTEsIDEyOCwgNjUsIDUyLCA1NywgNTAsIDEyOCwgNjUsIDUyLCA1NywgNDksIDEyOCwgCisgICAgNjUsIDUyLCA1NywgNDgsIDEyOCwgNjUsIDUyLCA1NiwgNTcsIDEyOCwgNjUsIDUyLCA1NiwgNTYsIDEyOCwgNjUsIDUyLCAKKyAgICA1NiwgNTUsIDEyOCwgNjUsIDUyLCA1NiwgNTQsIDEyOCwgNjUsIDUyLCA1NiwgNTMsIDEyOCwgNjUsIDUyLCA1NiwgNTIsIAorICAgIDEyOCwgNjUsIDUyLCA1NiwgNTEsIDEyOCwgNjUsIDUyLCA1NiwgNTAsIDEyOCwgNjUsIDUyLCA1NiwgNDksIDEyOCwgNjUsIAorICAgIDUyLCA1NiwgNDgsIDEyOCwgNjUsIDUyLCA1NSwgNTcsIDEyOCwgNjUsIDUyLCA1NSwgNTYsIDEyOCwgNjUsIDUyLCA1NSwgCisgICAgNTUsIDEyOCwgNjUsIDUyLCA1NSwgNTQsIDEyOCwgNjUsIDUyLCA1NSwgNTMsIDEyOCwgNjUsIDUyLCA1NSwgNTIsIDEyOCwgCisgICAgNjUsIDUyLCA1NSwgNTEsIDEyOCwgNjUsIDUyLCA1NSwgNTAsIDEyOCwgNjUsIDUyLCA1NSwgNDksIDEyOCwgNjUsIDUyLCAKKyAgICA1NSwgNDgsIDEyOCwgNjUsIDUyLCA1NCwgNTcsIDEyOCwgNjUsIDUyLCA1NCwgNTYsIDEyOCwgNjUsIDUyLCA1NCwgNTUsIAorICAgIDEyOCwgNjUsIDUyLCA1NCwgNTQsIDEyOCwgNjUsIDUyLCA1NCwgNTMsIDEyOCwgNjUsIDUyLCA1NCwgNTIsIDEyOCwgNjUsIAorICAgIDUyLCA1NCwgNTEsIDEyOCwgNjUsIDUyLCA1NCwgNTAsIDEyOCwgNjUsIDUyLCA1NCwgNDksIDEyOCwgNjUsIDUyLCA1NCwgCisgICAgNDgsIDEyOCwgNjUsIDUyLCA1MywgNTcsIDEyOCwgNjUsIDUyLCA1MywgNTYsIDEyOCwgNjUsIDUyLCA1MywgNTUsIDY1LCAKKyAgICAxMjgsIDY1LCA1MiwgNTMsIDU1LCAxMjgsIDY1LCA1MiwgNTMsIDU0LCAxMjgsIDY1LCA1MiwgNTMsIDUzLCAxMjgsIDY1LCAKKyAgICA1MiwgNTMsIDUyLCAxMjgsIDY1LCA1MiwgNTMsIDUxLCAxMjgsIDY1LCA1MiwgNTMsIDUwLCAxMjgsIDY1LCA1MiwgNTMsIAorICAgIDQ5LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCA2NSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgMTI4LCA2NSwgNTIsIDUyLCA1NywgCisgICAgMTI4LCA2NSwgNTIsIDUyLCA1NiwgMTI4LCA2NSwgNTIsIDUyLCA1NSwgMTI4LCA2NSwgNTIsIDUyLCA1NCwgMTI4LCA2NSwgCisgICAgNTIsIDUyLCA1MywgMTI4LCA2NSwgNTIsIDUyLCA1MiwgMTI4LCA2NSwgNTIsIDUyLCA1MSwgMTI4LCA2NSwgNTIsIDUyLCAKKyAgICA1MCwgMTI4LCA2NSwgNTIsIDUyLCA0OSwgMTI4LCA2NSwgNTIsIDUyLCA0OCwgMTI4LCA2NSwgNTIsIDUxLCA1NywgMTI4LCAKKyAgICA2NSwgNTIsIDUxLCA1NiwgMTI4LCA2NSwgNTIsIDUxLCA1NSwgMTI4LCA2NSwgNTIsIDUxLCA1NCwgMTI4LCA2NSwgNTIsIAorICAgIDUxLCA1MywgMTI4LCA2NSwgNTIsIDUxLCA1MiwgMTI4LCA2NSwgNTIsIDUxLCA1MSwgMTI4LCA2NSwgNTIsIDUxLCA1MCwgCisgICAgMTI4LCA2NSwgNTIsIDUxLCA0OSwgMTI4LCA2NSwgNTIsIDUxLCA0OCwgMTI4LCA2NSwgNTIsIDUwLCA1NywgMTI4LCA2NSwgCisgICAgNTIsIDUwLCA1NiwgMTI4LCA2NSwgNTIsIDUwLCA1NSwgMTI4LCA2NSwgNTIsIDUwLCA1NCwgMTI4LCA2NSwgNTIsIDUwLCAKKyAgICA1MywgMTI4LCA2NSwgNTIsIDUwLCA1MiwgMTI4LCA2NSwgNTIsIDUwLCA1MSwgMTI4LCA2NSwgNTIsIDUwLCA1MCwgMTI4LCAKKyAgICA2NSwgNTIsIDUwLCA0OSwgMTI4LCA2NSwgNTIsIDUwLCA0OCwgMTI4LCA2NSwgNTIsIDQ5LCA1NywgMTI4LCA2NSwgNTIsIAorICAgIDQ5LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDEyOCwgNjUsIDUyLCA0OSwgNTUsIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU1LCAxMjgsIDY1LCA1MiwgNDksIDU0LCA0NSwgODYsIDY1LCA4MywgMTI4LCAKKyAgICA2NSwgNTIsIDQ5LCA1NCwgMTI4LCA2NSwgNTIsIDQ5LCA1MywgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTMsIAorICAgIDEyOCwgNjUsIDUyLCA0OSwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCAxMjgsIDY1LCA1MiwgCisgICAgNDksIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgMTI4LCA2NSwgNTIsIDQ5LCA1MCwgNDUsIDg2LCAKKyAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIAorICAgIDY1LCA1MiwgNDksIDQ5LCAxMjgsIDY1LCA1MiwgNDksIDQ4LCAxOTMsIDY1LCA1MiwgNDksIDQ4LCA0NSwgODYsIDY1LCA4MywgCisgICAgMTI4LCA2NSwgNTIsIDQ5LCAxNzYsIDY1LCA1MiwgNDgsIDU3LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCAKKyAgICA1NywgMTI4LCA2NSwgNTIsIDQ4LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTYsIDEyOCwgNjUsIAorICAgIDUyLCA0OCwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU1LCAxMjgsIDY1LCA1MiwgNDgsIDU0LCA0NSwgCisgICAgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgMTI4LCA2NSwgNTIsIDQ4LCA1MywgNDUsIDg2LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgCisgICAgNDgsIDUyLCAxMjgsIDY1LCA1MiwgNDgsIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MSwgMTI4LCAKKyAgICA2NSwgNTIsIDQ4LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTAsIDEyOCwgNjUsIDUyLCA0OCwgNDksIAorICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCA0NSwgODYsIDY1LCA4MywgCisgICAgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgMTI4LCA2NSwgNTEsIDU3LCA1NywgMTI4LCA2NSwgNTEsIDU3LCA1NiwgMTI4LCA2NSwgCisgICAgNTEsIDU3LCA1NSwgMTI4LCA2NSwgNTEsIDU3LCA1NCwgMTI4LCA2NSwgNTEsIDU3LCA1MywgMTI4LCA2NSwgNTEsIDU3LCAKKyAgICA1MiwgMTI4LCA2NSwgNTEsIDU3LCAxNzksIDY1LCA1MSwgNTcsIDUwLCAxMjgsIDY1LCA1MSwgNTcsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MSwgNTcsIDQ4LCAxMjgsIDY1LCA1MSwgNTYsIDU3LCAxMjgsIDY1LCA1MSwgNTYsIDU2LCAxMjgsIDY1LCA1MSwgNTYsIAorICAgIDU1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgMTI4LCA2NSwgNTEsIDU2LCA1MywgCisgICAgMTI4LCA2NSwgNTEsIDU2LCA1MiwgMTI4LCA2NSwgNTEsIDU2LCA1MSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgMTc5LCA2NSwgCisgICAgNTEsIDU2LCA1MCwgMTI4LCA2NSwgNTEsIDU2LCA0OSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgNDksIDEyOCwgNjUsIDUxLCAKKyAgICA1NiwgNDgsIDEyOCwgNjUsIDUxLCA1NSwgNTcsIDEyOCwgNjUsIDUxLCA1NSwgNTYsIDEyOCwgNjUsIDUxLCA1NSwgNTUsIAorICAgIDEyOCwgNjUsIDUxLCA1NSwgNTQsIDEyOCwgNjUsIDUxLCA1NSwgNTMsIDEyOCwgNjUsIDUxLCA1NSwgNTIsIDEyOCwgNjUsIAorICAgIDUxLCA1NSwgNTEsIDEyOCwgNjUsIDUxLCA1NSwgNTAsIDEyOCwgNjUsIDUxLCA1NSwgNDksIDY1LCAxMjgsIDY1LCA1MSwgCisgICAgNTUsIDQ5LCAxMjgsIDY1LCA1MSwgNTUsIDQ4LCAxMjgsIDY1LCA1MSwgNTQsIDU3LCAxMjgsIDY1LCA1MSwgNTQsIDU2LCAKKyAgICA2NSwgMTI4LCA2NSwgNTEsIDU0LCA1NiwgMTI4LCA2NSwgNTEsIDU0LCA1NSwgMTI4LCA2NSwgNTEsIDU0LCA1NCwgMTI4LCAKKyAgICA2NSwgNTEsIDU0LCA1MywgMTI4LCA2NSwgNTEsIDU0LCA1MiwgNjUsIDEyOCwgNjUsIDUxLCA1NCwgNTIsIDEyOCwgNjUsIAorICAgIDUxLCA1NCwgNTEsIDEyOCwgNjUsIDUxLCA1NCwgNTAsIDEyOCwgNjUsIDUxLCA1NCwgNDksIDEyOCwgNjUsIDUxLCA1NCwgCisgICAgNDgsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCAxMjgsIDY1LCA1MSwgNTMsIDU2LCAKKyAgICAxMjgsIDY1LCA1MSwgNTMsIDU1LCAxMjgsIDY1LCA1MSwgNTMsIDU0LCAxMjgsIDY1LCA1MSwgNTMsIDUzLCAxMjgsIDY1LCAKKyAgICA1MSwgNTMsIDUyLCAxMjgsIDY1LCA1MSwgNTMsIDUxLCAxMjgsIDY1LCA1MSwgNTMsIDUwLCAxMjgsIDY1LCA1MSwgNTMsIAorICAgIDQ5LCAxMjgsIDY1LCA1MSwgNTMsIDQ4LCAxMjgsIDY1LCA1MSwgNTIsIDU3LCAxMjgsIDY1LCA1MSwgNTIsIDU2LCAxMjgsIAorICAgIDY1LCA1MSwgNTIsIDU1LCAxMjgsIDY1LCA1MSwgNTIsIDU0LCAxMjgsIDY1LCA1MSwgNTIsIDUzLCAxMjgsIDY1LCA1MSwgCisgICAgNTIsIDUyLCAxMjgsIDY1LCA1MSwgNTIsIDUxLCAxMjgsIDY1LCA1MSwgNTIsIDUwLCAxMjgsIDY1LCA1MSwgNTIsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MSwgNTIsIDQ4LCAxMjgsIDY1LCA1MSwgNTEsIDU3LCAxMjgsIDY1LCA1MSwgNTEsIDU2LCAxMjgsIDY1LCAKKyAgICA1MSwgNTEsIDU1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NywgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjYsIDEyOCwgNjUsIAorICAgIDUxLCA1MSwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCAxMjgsIDY1LCA1MSwgNTEsIDUzLCAxMjgsIDY1LCA1MSwgCisgICAgNTEsIDUyLCAxMjgsIDY1LCA1MSwgNTEsIDUxLCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NywgMTI4LCA2NSwgNTEsIDUxLCAKKyAgICA1MCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCAxMjgsIDY1LCA1MSwgNTEsIAorICAgIDQ5LCAxMjgsIDY1LCA1MSwgNTEsIDQ4LCAxMjgsIDY1LCA1MSwgNTAsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDUwLCA1NywgCisgICAgMTI4LCA2NSwgNTEsIDUwLCA1NiwgMTI4LCA2NSwgNTEsIDUwLCA1NSwgMTI4LCA2NSwgNTEsIDUwLCA1NCwgMTI4LCA2NSwgCisgICAgNTEsIDUwLCA1MywgMTI4LCA2NSwgNTEsIDUwLCA1MiwgMTI4LCA2NSwgNTEsIDUwLCA1MSwgMTI4LCA2NSwgNTEsIDUwLCAKKyAgICA1MCwgMTI4LCA2NSwgNTEsIDUwLCA0OSwgMTI4LCA2NSwgNTEsIDUwLCA0OCwgMTI4LCA2NSwgNTEsIDQ5LCA1NywgMTI4LCAKKyAgICA2NSwgNTEsIDQ5LCA1NiwgMTI4LCA2NSwgNTEsIDQ5LCA1NSwgMTI4LCA2NSwgNTEsIDQ5LCA1NCwgMTI4LCA2NSwgNTEsIAorICAgIDQ5LCA1MywgMTI4LCA2NSwgNTEsIDQ5LCA1MiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjcsIDEyOCwgNjUsIDUxLCA0OSwgCisgICAgNTEsIDY2LCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NSwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgMTI4LCA2NSwgNTEsIDQ5LCAKKyAgICA1MCwgMTI4LCA2NSwgNTEsIDQ5LCA0OSwgMTI4LCA2NSwgNTEsIDQ5LCA0OCwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjcsIAorICAgIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY2LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgCisgICAgMTI4LCA2NSwgNTEsIDQ4LCA1NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NSwgMTI4LCA2NSwgNTEsIDQ4LCA1NCwgMTI4LCA2NSwgCisgICAgNTEsIDQ4LCA1MywgMTI4LCA2NSwgNTEsIDQ4LCA1MiwgMTI4LCA2NSwgNTEsIDQ4LCA1MSwgMTI4LCA2NSwgNTEsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NSwgNTEsIDQ4LCA0OSwgMTI4LCA2NSwgNTEsIDQ4LCA0OCwgMTI4LCA2NSwgNTAsIDU3LCA1NywgNjUsIAorICAgIDEyOCwgNjUsIDUwLCA1NywgNTcsIDEyOCwgNjUsIDUwLCA1NywgNTYsIDEyOCwgNjUsIDUwLCA1NywgNTUsIDEyOCwgNjUsIAorICAgIDUwLCA1NywgNTQsIDEyOCwgNjUsIDUwLCA1NywgNTMsIDEyOCwgNjUsIDUwLCA1NywgNTIsIDY1LCAxMjgsIDY1LCA1MCwgCisgICAgNTcsIDUyLCAxMjgsIDY1LCA1MCwgNTcsIDUxLCAxMjgsIDY1LCA1MCwgNTcsIDUwLCAxMjgsIDY1LCA1MCwgNTcsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MCwgNTcsIDQ4LCAxMjgsIDY1LCA1MCwgNTYsIDU3LCA2NSwgMTI4LCA2NSwgNTAsIDU2LCA1NywgMTI4LCAKKyAgICA2NSwgNTAsIDU2LCA1NiwgMTI4LCA2NSwgNTAsIDU2LCA1NSwgMTI4LCA2NSwgNTAsIDU2LCA1NCwgMTI4LCA2NSwgNTAsIAorICAgIDU2LCA1MywgMTI4LCA2NSwgNTAsIDU2LCA1MiwgMTI4LCA2NSwgNTAsIDU2LCA1MSwgMTI4LCA2NSwgNTAsIDU2LCA1MCwgCisgICAgMTI4LCA2NSwgNTAsIDU2LCA0OSwgMTI4LCA2NSwgNTAsIDU2LCA0OCwgMTI4LCA2NSwgNTAsIDU1LCA1NywgMTI4LCA2NSwgCisgICAgNTAsIDU1LCA1NiwgMTI4LCA2NSwgNTAsIDU1LCA1NSwgMTI4LCA2NSwgNTAsIDU1LCA1NCwgMTI4LCA2NSwgNTAsIDU1LCAKKyAgICA1MywgMTI4LCA2NSwgNTAsIDU1LCA1MiwgMTI4LCA2NSwgNTAsIDU1LCA1MSwgMTI4LCA2NSwgNTAsIDU1LCA1MCwgMTI4LCAKKyAgICA2NSwgNTAsIDU1LCA0OSwgMTI4LCA2NSwgNTAsIDU1LCA0OCwgMTI4LCA2NSwgNTAsIDU0LCA1NywgMTI4LCA2NSwgNTAsIAorICAgIDU0LCA1NiwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgNjUsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIDEyOCwgNjUsIDUwLCA1NCwgCisgICAgNTQsIDEyOCwgNjUsIDUwLCA1NCwgNTMsIDEyOCwgNjUsIDUwLCA1NCwgNTIsIDEyOCwgNjUsIDUwLCA1NCwgNTEsIDEyOCwgCisgICAgNjUsIDUwLCA1NCwgNTAsIDEyOCwgNjUsIDUwLCA1NCwgNDksIDEyOCwgNjUsIDUwLCA1NCwgNDgsIDEyOCwgNjUsIDUwLCAKKyAgICA1MywgNTcsIDEyOCwgNjUsIDUwLCA1MywgNTYsIDEyOCwgNjUsIDUwLCA1MywgNTUsIDEyOCwgNjUsIDUwLCA1MywgNTQsIAorICAgIDEyOCwgNjUsIDUwLCA1MywgNTMsIDEyOCwgNjUsIDUwLCA1MywgNTIsIDEyOCwgNjUsIDUwLCA1MywgNTEsIDEyOCwgNjUsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgNjUsIDUwLCA1MywgNDksIDEyOCwgNjUsIDUwLCA1MywgNDgsIDEyOCwgNjUsIDUwLCA1MiwgCisgICAgNTcsIDEyOCwgNjUsIDUwLCA1MiwgNTYsIDEyOCwgNjUsIDUwLCA1MiwgNTUsIDEyOCwgNjUsIDUwLCA1MiwgNTQsIDEyOCwgCisgICAgNjUsIDUwLCA1MiwgNTMsIDEyOCwgNjUsIDUwLCA1MiwgNTIsIDEyOCwgNjUsIDUwLCA1MiwgNTEsIDEyOCwgNjUsIDUwLCAKKyAgICA1MiwgNTAsIDEyOCwgNjUsIDUwLCA1MiwgNDksIDEyOCwgNjUsIDUwLCA1MiwgNDgsIDEyOCwgNjUsIDUwLCA1MSwgNTcsIAorICAgIDEyOCwgNjUsIDUwLCA1MSwgNTYsIDEyOCwgNjUsIDUwLCA1MSwgNTUsIDEyOCwgNjUsIDUwLCA1MSwgNTQsIDEyOCwgNjUsIAorICAgIDUwLCA1MSwgNTMsIDEyOCwgNjUsIDUwLCA1MSwgNTIsIDEyOCwgNjUsIDUwLCA1MSwgNTEsIDEyOCwgNjUsIDUwLCA1MSwgCisgICAgNTAsIDEyOCwgNjUsIDUwLCA1MSwgNDksIDEyOCwgNjUsIDUwLCA1MSwgNDgsIDEyOCwgNjUsIDUwLCA1MCwgNTcsIDEyOCwgCisgICAgNjUsIDUwLCA1MCwgNTYsIDEyOCwgNjUsIDUwLCA1MCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNTAsIDU1LCAxMjgsIDY1LCAKKyAgICA1MCwgNTAsIDU0LCAxMjgsIDY1LCA1MCwgNTAsIDUzLCAxMjgsIDY1LCA1MCwgNTAsIDUyLCAxMjgsIDY1LCA1MCwgNTAsIAorICAgIDUxLCAxMjgsIDY1LCA1MCwgNTAsIDUwLCAxMjgsIDY1LCA1MCwgNTAsIDQ5LCAxMjgsIDY1LCA1MCwgNTAsIDQ4LCAxMjgsIAorICAgIDY1LCA1MCwgNDksIDU3LCAxMjgsIDY1LCA1MCwgNDksIDU2LCAxMjgsIDY1LCA1MCwgNDksIDU1LCAxMjgsIDY1LCA1MCwgCisgICAgNDksIDU0LCA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1NCwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDUwLCAKKyAgICA0OSwgNTMsIDEyOCwgNjUsIDUwLCA0OSwgNTIsIDEyOCwgNjUsIDUwLCA0OSwgNTEsIDEyOCwgNjUsIDUwLCA0OSwgNTAsIAorICAgIDEyOCwgNjUsIDUwLCA0OSwgNDksIDEyOCwgNjUsIDUwLCA0OSwgNDgsIDEyOCwgNjUsIDUwLCA0OCwgNTcsIDY1LCAxMjgsIAorICAgIDY1LCA1MCwgNDgsIDU3LCAxMjgsIDY1LCA1MCwgNDgsIDU2LCAxMjgsIDY1LCA1MCwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgCisgICAgNTAsIDQ4LCA1NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NCwgMTI4LCA2NSwgNTAsIDQ4LCA1MywgMTI4LCA2NSwgNTAsIDQ4LCAKKyAgICA1MiwgMTI4LCA2NSwgNTAsIDQ4LCA1MSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgNjYsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIAorICAgIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAxMjgsIDY1LCA1MCwgNDgsIDQ5LCAxMjgsIDY1LCA1MCwgNDgsIDQ4LCAxMjgsIAorICAgIDY1LCA0OSwgNTcsIDU3LCAxMjgsIDY1LCA0OSwgNTcsIDU2LCAxMjgsIDY1LCA0OSwgNTcsIDU1LCAxMjgsIDY1LCA0OSwgCisgICAgNTcsIDU0LCAxMjgsIDY1LCA0OSwgNTcsIDUzLCAxMjgsIDY1LCA0OSwgNTcsIDUyLCAxMjgsIDY1LCA0OSwgNTcsIDUxLCAKKyAgICAxMjgsIDY1LCA0OSwgNTcsIDUwLCAxMjgsIDY1LCA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA0OSwgNTcsIDQ4LCAxMjgsIDY1LCAKKyAgICA0OSwgNTYsIDU3LCAxMjgsIDY1LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA0OSwgNTYsIDU1LCAxMjgsIDY1LCA0OSwgNTYsIAorICAgIDU0LCAxMjgsIDY1LCA0OSwgNTYsIDUzLCAxMjgsIDY1LCA0OSwgNTYsIDUyLCAxMjgsIDY1LCA0OSwgNTYsIDUxLCAxMjgsIAorICAgIDY1LCA0OSwgNTYsIDUwLCAxMjgsIDY1LCA0OSwgNTYsIDQ5LCAxMjgsIDY1LCA0OSwgNTYsIDQ4LCAxMjgsIDY1LCA0OSwgCisgICAgNTUsIDU3LCAxMjgsIDY1LCA0OSwgNTUsIDU2LCAxMjgsIDY1LCA0OSwgNTUsIDU1LCAxMjgsIDY1LCA0OSwgNTUsIDU0LCAKKyAgICAxMjgsIDY1LCA0OSwgNTUsIDUzLCAxMjgsIDY1LCA0OSwgNTUsIDUyLCAxMjgsIDY1LCA0OSwgNTUsIDUxLCAxMjgsIDY1LCAKKyAgICA0OSwgNTUsIDUwLCAxMjgsIDY1LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA0OSwgNTUsIDQ4LCAxMjgsIDY1LCA0OSwgNTQsIAorICAgIDU3LCAxMjgsIDY1LCA0OSwgNTQsIDU2LCAxMjgsIDY1LCA0OSwgNTQsIDU1LCAxMjgsIDY1LCA0OSwgNTQsIDU0LCAxMjgsIAorICAgIDY1LCA0OSwgNTQsIDUzLCAxMjgsIDY1LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA0OSwgNTQsIDUxLCAxMjgsIDY1LCA0OSwgCisgICAgNTQsIDUwLCAxMjgsIDY1LCA0OSwgNTQsIDQ5LCAxMjgsIDY1LCA0OSwgNTQsIDQ4LCAxMjgsIDY1LCA0OSwgNTMsIDU3LCAKKyAgICAxMjgsIDY1LCA0OSwgNTMsIDU2LCAxMjgsIDY1LCA0OSwgNTMsIDU1LCAxMjgsIDY1LCA0OSwgNTMsIDU0LCAxMjgsIDY1LCAKKyAgICA0OSwgNTMsIDUzLCAxMjgsIDY1LCA0OSwgNTMsIDUyLCAxMjgsIDY1LCA0OSwgNTMsIDUxLCAxMjgsIDY1LCA0OSwgNTMsIAorICAgIDUwLCAxMjgsIDY1LCA0OSwgNTMsIDQ5LCAxMjgsIDY1LCA0OSwgNTMsIDQ4LCAxMjgsIDY1LCA0OSwgNTIsIDU3LCAxMjgsIAorICAgIDY1LCA0OSwgNTIsIDU2LCAxMjgsIDY1LCA0OSwgNTIsIDU1LCAxMjgsIDY1LCA0OSwgNTIsIDU0LCAxMjgsIDY1LCA0OSwgCisgICAgNTIsIDUzLCAxMjgsIDY1LCA0OSwgNTIsIDUyLCAxMjgsIDY1LCA0OSwgNTIsIDUxLCAxMjgsIDY1LCA0OSwgNTIsIDUwLCAKKyAgICAxMjgsIDY1LCA0OSwgNTIsIDQ5LCAxMjgsIDY1LCA0OSwgNTIsIDQ4LCAxMjgsIDY1LCA0OSwgNTEsIDU3LCAxMjgsIDY1LCAKKyAgICA0OSwgNTEsIDU2LCAxMjgsIDY1LCA0OSwgNTEsIDU1LCAxMjgsIDY1LCA0OSwgNTEsIDU0LCAxMjgsIDY1LCA0OSwgNTEsIAorICAgIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUxLCA1MywgMTI4LCA2NSwgNDksIDUxLCA1MiwgMTI4LCA2NSwgNDksIDUxLCA1MSwgCisgICAgMTI4LCA2NSwgNDksIDUxLCA1MCwgMTI4LCA2NSwgNDksIDUxLCA0OSwgNjcsIDEyOCwgNjUsIDQ5LCA1MSwgNDksIDEyOCwgCisgICAgNjUsIDQ5LCA1MSwgNDgsIDEyOCwgNjUsIDQ5LCA1MCwgNTcsIDEyOCwgNjUsIDQ5LCA1MCwgNTYsIDEyOCwgNjUsIDQ5LCAKKyAgICA1MCwgNTUsIDEyOCwgNjUsIDQ5LCA1MCwgNTQsIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNTAsIAorICAgIDUzLCAxMjgsIDY1LCA0OSwgNTAsIDUyLCAxMjgsIDY1LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCA0OSwgNTAsIDUwLCAxMjgsIAorICAgIDY1LCA0OSwgNTAsIDQ5LCAxMjgsIDY1LCA0OSwgNTAsIDQ4LCA2NiwgMTI4LCA2NSwgNDksIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNDksIDQ5LCA1NywgMTI4LCA2NSwgNDksIDQ5LCA1NiwgMTI4LCA2NSwgNDksIDQ5LCA1NSwgMTI4LCA2NSwgNDksIDQ5LCAKKyAgICA1NCwgMTI4LCA2NSwgNDksIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDEyOCwgNjUsIDQ5LCA0OSwgNTIsIAorICAgIDEyOCwgNjUsIDQ5LCA0OSwgNTEsIDEyOCwgNjUsIDQ5LCA0OSwgNTAsIDEyOCwgNjUsIDQ5LCA0OSwgNDksIDEyOCwgNjUsIAorICAgIDQ5LCA0OSwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgMTI4LCA2NSwgCisgICAgNDksIDQ4LCA1NywgMTI4LCA2NSwgNDksIDQ4LCA1NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjcsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTUsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgMTI4LCA2NSwgNDksIAorICAgIDQ4LCA1NCwgMTI4LCA2NSwgNDksIDQ4LCA1MywgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDUzLCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjYsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTIsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAxMjgsIDY1LCA0OSwgNDgsIDUxLCAxMjgsIDY1LCA0OSwgNDgsIAorICAgIDUwLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OSwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgCisgICAgNDksIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA0NSwgNDksIDQ4LCA1MCwgMTI4LCAKKyAgICA2NSwgNDksIDQ4LCA0OCwgMTI4LCA2NSwgNDgsIDU3LCA1NywgMTI4LCA2NSwgNDgsIDU3LCA1NiwgNjUsIDEyOCwgNjUsIAorICAgIDQ4LCA1NywgNTYsIDEyOCwgNjUsIDQ4LCA1NywgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNTcsIDU1LCAxMjgsIDY1LCA0OCwgCisgICAgNTcsIDU0LCAxMjgsIDY1LCA0OCwgNTcsIDUzLCAxMjgsIDY1LCA0OCwgNTcsIDUyLCAxMjgsIDY1LCA0OCwgNTcsIDUxLCAKKyAgICAxMjgsIDY1LCA0OCwgNTcsIDUwLCAxMjgsIDY1LCA0OCwgNTcsIDQ5LCAxMjgsIDY1LCA0OCwgNTcsIDQ4LCAxMjgsIDY1LCAKKyAgICA0OCwgNTYsIDU3LCAxMjgsIDY1LCA0OCwgNTYsIDU2LCAxMjgsIDY1LCA0OCwgNTYsIDU1LCAxMjgsIDY1LCA0OCwgNTYsIAorICAgIDU0LCAxMjgsIDY1LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCA0OCwgNTYsIDUyLCAxMjgsIDY1LCA0OCwgNTYsIDUxLCAxMjgsIAorICAgIDY1LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCA0OCwgNTYsIDQ4LCAxMjgsIDY1LCA0OCwgCisgICAgNTUsIDU3LCAxMjgsIDY1LCA0OCwgNTUsIDU2LCAxMjgsIDY1LCA0OCwgNTUsIDU1LCAxMjgsIDY1LCA0OCwgNTUsIDU0LCAKKyAgICAxMjgsIDY1LCA0OCwgNTUsIDUzLCAxMjgsIDY1LCA0OCwgNTUsIDUyLCAxMjgsIDY1LCA0OCwgNTUsIDUxLCAxMjgsIDY1LCAKKyAgICA0OCwgNTUsIDUwLCAxMjgsIDY1LCA0OCwgNTUsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA0OCwgNTQsIAorICAgIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NywgCisgICAgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCAKKyAgICAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgNTQsIDUxLCAxMjgsIDY1LCAKKyAgICA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA0OCwgNTMsIAorICAgIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA0OCwgNTMsIDU0LCAxMjgsIAorICAgIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA0OCwgCisgICAgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA0OCwgNTIsIDU3LCAKKyAgICAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCA2NiwgMTI4LCAKKyAgICA2NSwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIAorICAgIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA2NSwgCisgICAgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MiwgNDksIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIAorICAgIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgNjUsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIDQ4LCA1MSwgCisgICAgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDQ4LCA1MSwgNTQsIDEyOCwgNjUsIDQ4LCA1MSwgNTMsIDEyOCwgCisgICAgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCA1MSwgNTEsIDEyOCwgNjUsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTAsIDU2LCA2NiwgMTI4LCA2NSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIAorICAgIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY2LCAKKyAgICAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjUsIDQ1LCA2OSwgODUsIAorICAgIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCA4NSwgMTI4LCA0NSwgNzUsIDcyLCA4OSwgODUsIDE5NiwgNDUsIAorICAgIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIDkwLCA4NSwgMTk2LCA0NSwgNjcsIDcyLCA2NSwgMjEwLCA0NSwgCisgICAgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGxleGljb25fb2Zmc2V0W10gPSB7Ci0gICAgMCwgMCwgNiwgMTAsIDE0LCAyMiwgMjcsIDM0LCA0NCwgNDksIDU4LCA2NCwgNjYsIDY5LCA4MSwgODksIDEwMiwgMTA4LCAKLSAgICAxMTMsIDExOCwgMTI2LCAxMzUsIDE0NiwgMTUxLCAxNTYsIDE2MSwgMTY0LCAxNjgsIDE3NywgMTgzLCAxODksIDE5NCwgCi0gICAgMjAxLCAyMDksIDIxNywgMjE4LCAyMjEsIDIyOSwgMTY1LCAyMzUsIDI0NCwgMjUxLCAyNjEsIDI2NywgMjc0LCAyNzksIAotICAgIDI4MiwgMjg3LCAyOTMsIDI5NiwgMzAwLCAzMDUsIDMxMSwgMzE3LCAzMjIsIDMyNywgMzMzLCAzMzksIDM0OCwgMzU1LCAKLSAgICAzNjIsIDM3MSwgMzc2LCAzODEsIDM4MywgMzkxLCAzOTksIDQwMCwgNDA4LCA0MTAsIDQxNywgNDIwLCA0MjYsIDQzMywgCi0gICAgMzMxLCA0MzgsIDQ0MCwgNDQyLCA0NDksIDQ1MSwgNDU2LCA0NjQsIDQ3MSwgNDc2LCA0ODAsIDQ4NiwgNDkxLCA1MDEsIAotICAgIDUwNiwgNTEzLCA1MTYsIDUyNCwgNTI4LCA1MzgsIDU0NSwgNTU0LCA1NjEsIDU3MCwgNTc3LCA1ODAsIDU4NCwgNTkyLCAKLSAgICA1OTgsIDYxMSwgNjE4LCA2MjIsIDYyNiwgNjI3LCA2MzYsIDY0MCwgNjQ5LCA2NTUsIDY1OSwgNjYxLCA2NjYsIDY3NCwgCi0gICAgNjc4LCA2ODYsIDY5MSwgNjk0LCA3MDAsIDcwMywgNzA3LCA3MTIsIDcyMCwgNzIzLCA3MzAsIDczNSwgNzQ0LCA3NTMsIAotICAgIDc2MSwgNzY5LCA3NzMsIDc3OSwgNzg3LCA3OTQsIDc5NywgODA3LCA4MTEsIDgxNSwgODI2LCA4MzMsIDg0MCwgODQ0LCAKLSAgICA4NDgsIDg1NCwgODQyLCA4NjMsIDg2OSwgODc0LCA4NzksIDg4MywgODg2LCA4ODksIDg5NCwgOTAzLCA5MTEsIDkxNiwgCi0gICAgNjU4LCA1NzUsIDkyMSwgOTI0LCA5MzAsIDkzNCwgOTM4LCA5NDcsIDk1MywgOTYwLCA5NjksIDk3NiwgOTg5LCA5OTQsIAotICAgIDk5OCwgMTAwNiwgMTAwOSwgMTAxNSwgMTAyMSwgMTAzMCwgMTAzNywgMTA0NSwgMTA1MiwgMTA2MiwgMTA2OSwgMTA3NywgCi0gICAgMTA4NiwgMTA5MCwgMTA5MywgMTEwMCwgMjEsIDExMDQsIDExMTMsIDExMjEsIDExMjgsIDExMzEsIDExMzYsIDExMzgsIAotICAgIDExNDIsIDExNTEsIDExNTYsIDExNTksIDExNjUsIDExNzIsIDExNzUsIDExODAsIDExODUsIDExOTEsIDExOTYsIDEyMDEsIAotICAgIDEyMDYsIDEyMTAsIDEyMTUsIDEyMjEsIDEyMjYsIDEyMzEsIDEyMzUsIDEyNDEsIDEyNDYsIDEyNTEsIDEyNTYsIDEyNjAsIAotICAgIDEyNjUsIDEyNzAsIDEyNzUsIDEyODEsIDEyODcsIDEyOTMsIDEyOTgsIDEzMDIsIDEzMDcsIDEzMTIsIDEzMTcsIDEzMjEsIAotICAgIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDEsIDExNzYsIDExODEsIDExODYsIDExOTIsIDExOTcsIDEzNDUsIDEyMDcsIDEzNTEsIAotICAgIDEzNTYsIDEzNjEsIDEzNjgsIDEzNzIsIDEzNzUsIDEzODQsIDEyMTEsIDEzODgsIDEyMTYsIDEyMjIsIDEyMjcsIDEzOTIsIAotICAgIDEzOTcsIDE0MDIsIDE0MDYsIDE0MTAsIDE0MTYsIDE0MjAsIDEyMzIsIDE0MjMsIDE0MjUsIDEyNDIsIDE0MzAsIDE0MzQsIAotICAgIDEyNDcsIDE0NDAsIDEyNTIsIDE0NDQsIDE0NDgsIDEyNTcsIDE0NTIsIDE0NTcsIDE0NjEsIDE0NjQsIDE0NjgsIDEyNjEsIAotICAgIDEyNjYsIDE0NzMsIDE0NzksIDEyNzEsIDE0OTEsIDE0OTcsIDE1MDMsIDE1MDksIDEyNzYsIDEyODgsIDEyOTQsIDE1MTMsIAotICAgIDE1MTcsIDE1MjEsIDE1MjQsIDEyOTksIDE1MjgsIDE1MzAsIDE1MzUsIDE1NDAsIDE1NDYsIDE1NTEsIDE1NTYsIDE1NjAsIAotICAgIDE1NjUsIDE1NzAsIDE1NzUsIDE1ODAsIDE1ODYsIDE1OTEsIDE1OTYsIDE2MDIsIDE2MDgsIDE2MTMsIDE2MTcsIDE2MjIsIAotICAgIDE2MjcsIDE2MzIsIDE2MzcsIDE2NDIsIDE2NDYsIDE2NTQsIDE2NTksIDE2NjMsIDE2NjgsIDE2NzMsIDE2NzgsIDE2ODMsIAotICAgIDE2ODcsIDE2OTAsIDE2OTcsIDE3MDIsIDE3MDcsIDE3MTIsIDE3MTcsIDE3MjMsIDE3MjgsIDE3MzIsIDEzMDMsIDE3MzUsIAotICAgIDE3NDAsIDE3NDUsIDEzMDgsIDE3NDksIDE3NTMsIDE3NjAsIDEzMTMsIDE3NjcsIDEzMTgsIDE3NzEsIDE3NzMsIDE3NzgsIAotICAgIDE3ODQsIDEzMjIsIDE3ODksIDE3OTgsIDEzMjcsIDE4MDMsIDE4MDksIDE4MTQsIDEzMzIsIDE4MTksIDE4MjQsIDE4MjcsIAotICAgIDE4MzIsIDE4MzYsIDE4NDAsIDE4NDQsIDE4NDcsIDE4NTEsIDEzMzcsIDE4NTYsIDEzNDIsIDE4NjAsIDE4NjIsIDE4NjgsIAotICAgIDE4NzQsIDE4ODAsIDE4ODYsIDE4OTIsIDE4OTgsIDE5MDQsIDE5MTAsIDE5MTUsIDE5MjEsIDE5MjcsIDE5MzMsIDE5MzksIAotICAgIDE5NDUsIDE5NTEsIDE5NTcsIDE5NjMsIDE5NjksIDE5NzQsIDE5NzksIDE5ODQsIDE5ODksIDE5OTQsIDE5OTksIDIwMDQsIAotICAgIDIwMDksIDIwMTQsIDIwMTksIDIwMjUsIDIwMzAsIDIwMzYsIDIwNDEsIDIwNDcsIDIwNTMsIDIwNTgsIDIwNjQsIDIwNzAsIAotICAgIDIwNzYsIDIwODIsIDIwODcsIDIwOTIsIDIwOTQsIDIwOTUsIDIwOTksIDIxMDMsIDIxMDgsIDIxMTIsIDIxMTYsIDIxMjAsIAotICAgIDIxMjUsIDIxMjksIDIxMzIsIDIxMzcsIDIxNDEsIDIxNDYsIDIxNTAsIDIxNTQsIDIxNTksIDIxNjMsIDIxNjYsIDIxNzAsIAotICAgIDIxNzYsIDIxOTAsIDIxOTQsIDIxOTgsIDIyMDIsIDIyMDUsIDIyMTAsIDIyMTQsIDIyMTgsIDIyMjEsIDIyMjUsIDIyMzAsIAotICAgIDIyMzUsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTMsIDIyNTcsIDIyNjEsIDIyNjYsIDIyNzAsIDIyNzUsIDIyNzksIDIyODQsIAotICAgIDIyOTAsIDIyOTcsIDIzMDMsIDIzMDgsIDIzMTMsIDIzMTgsIDIzMjQsIDIzMjksIDIzMzUsIDIzNDAsIDIzNDMsIDIzNDUsIAotICAgIDExOTMsIDIzNDksIDIzNTYsIDIzNjQsIDIzNzQsIDIzODMsIDIzOTcsIDI0MDEsIDI0MDUsIDI0MTAsIDI0MjMsIDI0MzEsIAotICAgIDI0MzUsIDI0NDAsIDI0NDQsIDI0NDcsIDI0NTEsIDI0NTUsIDI0NjAsIDI0NjUsIDI0NzAsIDI0NzQsIDI0NzcsIDI0ODEsIAotICAgIDI0ODgsIDI0OTUsIDI1MDEsIDI1MDYsIDI1MTEsIDI1MTcsIDI1MjMsIDI1MjgsIDI1MzEsIDE3NzUsIDI1MzMsIDI1MzksIAotICAgIDI1NDMsIDI1NDgsIDI1NTIsIDI1NTYsIDE2OTMsIDE3ODYsIDI1NjEsIDI1NjUsIDI1NjgsIDI1NzMsIDI1NzgsIDI1ODMsIAotICAgIDI1ODgsIDI1OTIsIDI1OTksIDI2MDQsIDI2MDcsIDI2MTQsIDI2MjAsIDI2MjQsIDI2MjgsIDI2MzIsIDI2MzcsIDI2NDQsIAotICAgIDI2NDksIDI2NTQsIDI2NjEsIDI2NjcsIDI2NzMsIDI2NzksIDI2OTMsIDI3MTAsIDI3MjUsIDI3NDAsIDI3NDksIDI3NTQsIAotICAgIDI3NTgsIDI3NjMsIDI3NjgsIDI3NzIsIDI3ODQsIDI3OTEsIDI3OTcsIDIyOTMsIDI4MDMsIDI4MTAsIDI4MTYsIDI4MjAsIAotICAgIDI4MjMsIDI4MzAsIDI4MzYsIDI4NDEsIDI4NDUsIDI4NTAsIDI4NTQsIDI4NTgsIDIxMTcsIDI4NjIsIDI4NjcsIDI4NzIsIAotICAgIDI4NzYsIDI4ODEsIDI4ODksIDI4OTMsIDI4OTgsIDI5MDIsIDI5MDYsIDI5MTAsIDI5MTUsIDI5MjAsIDI5MjUsIDI5MjksIAotICAgIDI5MzQsIDI5MzksIDI5NDMsIDI5NDgsIDI5NTIsIDI5NTUsIDI5NTksIDI5NjMsIDI5NzEsIDI5NzYsIDI5ODAsIDI5ODQsIAotICAgIDI5OTAsIDI5OTksIDMwMDMsIDMwMDcsIDMwMTMsIDMwMTgsIDMwMjUsIDMwMjksIDMwMzksIDMwNDMsIDMwNDcsIDMwNTIsIAotICAgIDMwNTYsIDMwNjEsIDMwNjcsIDMwNzIsIDMwNzYsIDMwODAsIDMwODQsIDI0OTEsIDMwOTIsIDMwOTcsIDMxMDMsIDMxMDgsIAotICAgIDMxMTIsIDMxMTcsIDMxMjIsIDMxMjYsIDMxMzIsIDMxMzcsIDIxMjEsIDMxNDMsIDMxNDksIDMxNTQsIDMxNTksIDMxNjQsIAotICAgIDMxNjksIDMxNzQsIDMxNzksIDMxODQsIDMxODksIDMxOTQsIDMyMDAsIDMyMDUsIDEyMDgsIDEwMSwgMzIxMSwgMzIxNSwgCi0gICAgMzIxOSwgMzIyMywgMzIyOCwgMzIzMiwgMzIzNiwgMzI0MiwgMzI0NywgMzI1MSwgMzI1NSwgMzI2MCwgMzI2NSwgMzI2OSwgCi0gICAgMzI3NCwgMzI3OCwgMzI4MSwgMzI4NSwgMzI5MCwgMzI5NCwgMzI5OSwgMzMwMywgMzMwNiwgMzMxMCwgMzMxNCwgMzMxOSwgCi0gICAgMzMyMywgMzMyNiwgMzMzOSwgMzM0MywgMzM0NywgMzM1MSwgMzM1NiwgMzM2MCwgMzM2NCwgMzM2NywgMzM3MSwgMzM3NSwgCi0gICAgMzM4MCwgMzM4NCwgMzM4OSwgMzM5NCwgMzM5OSwgMzQwMywgMzQwOCwgMzQxMSwgMzQxNCwgMzQxOSwgMzQyNSwgMzQyOSwgCi0gICAgMzQzMywgMzQzNiwgMzQ0MSwgMzQ0NSwgMzQ1MCwgMzQ1NCwgMzQ1OCwgMzQ2MSwgMzQ2NywgMzQ3MiwgMzQ3NywgMzQ4MywgCi0gICAgMzQ4OCwgMzQ5MywgMzQ5OSwgMzUwNSwgMzUxMCwgMzUxNSwgMzUyMCwgMzUyNSwgMTE0MCwgNTc5LCAzNTI4LCAzNTMxLCAKLSAgICAzNTM2LCAzNTQwLCAzNTQ0LCAzNTQ4LCAzNTUyLCAzNTU1LCAzNTU5LCAzNTY0LCAzNTY5LCAzNTczLCAzNTc4LCAzNTgyLCAKLSAgICAzNTg3LCAzNTkxLCAzNTk1LCAzNTk5LCAzNjA1LCAzNjExLCAzNjE0LCAzNjE3LCAxMzksIDM2MjMsIDM2MjgsIDM2MzcsIAotICAgIDM2NDUsIDM2NTQsIDM2NjEsIDM2NjcsIDM2NzQsIDM2NzksIDM2ODMsIDM2ODcsIDM2OTUsIDM3MDIsIDM3MDcsIDM3MTQsIAotICAgIDM3MTksIDM3MjMsIDM3MzMsIDM3MzcsIDM3NDEsIDM3NDYsIDM3NTEsIDM3NjEsIDIxMzMsIDM3NjYsIDM3NzAsIDM3NzMsIAotICAgIDM3NzksIDM3ODQsIDM3OTAsIDM3OTYsIDM4MDEsIDM4MDgsIDM4MTIsIDM4MTYsIDYzNywgNzAxLCAxMzY5LCAzODIwLCAKLSAgICAzODI3LCAzODM0LCAzODQwLCAzODQ1LCAzODUyLCAzODU5LCAzODY0LCAzODcwLCAzODc2LCAzODgxLCAzODg1LCAzODkxLCAKLSAgICAzODk4LCAzOTAzLCAzOTA3LCAyMTQyLCAzOTExLCAzOTE5LCAzOTI1LCAzOTMzLCA3MzksIDM5MzksIDM5NDcsIDM5NTgsIAotICAgIDM5NjIsIDM5NzIsIDIxNDcsIDM5NzgsIDM5ODMsIDM5OTgsIDQwMDQsIDQwMTEsIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIAotICAgIDQwNDQsIDQwNDcsIDQwNTAsIDQwNTQsIDQwNTksIDQwNjYsIDQwNzEsIDQwNzUsIDQwNzksIDQwODMsIDQwODcsIDQwOTIsIAotICAgIDQwOTgsIDQxMDksIDQxMTMsIDMyODYsIDQxMTgsIDQxMzAsIDQxMzYsIDQxNDQsIDQxNDgsIDQxNTMsIDE1NjIsIDQxNjAsIAotICAgIDQxNjMsIDQxNjYsIDQxNzAsIDQxNzMsIDQxNzksIDQxODMsIDQxOTcsIDQyMDEsIDQyMDQsIDQyMDgsIDQyMTQsIDQyMjAsIAotICAgIDQyMjUsIDQyMjksIDQyMzMsIDQyMzksIDQyNTAsIDQyNTYsIDQyNjEsIDQyNjcsIDQyNzEsIDQyNzksIDQyOTEsIDQzMDEsIAotICAgIDQzMDcsIDQzMTIsIDQzMjEsIDQzMjksIDQzMzYsIDQzNDIsIDQzNDYsIDQzNTIsIDQzNjEsIDQzNzAsIDQzNzQsIDQzODMsIAotICAgIDQzODgsIDQzOTIsIDQzOTcsIDQ0MDEsIDQ0MDksIDQ0MTUsIDQ0MTksIDQ0MjQsIDQ0MjgsIDQ0MzQsIDIxNTUsIDEzODUsIAotICAgIDQ0NDAsIDQ0NDUsIDQ0NTEsIDQ0NTYsIDQ0NjEsIDQ0NjYsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODcsIDQ0OTIsIDQ0OTgsIAotICAgIDQ1MDMsIDQ1MDgsIDQ1MTMsIDQ1MTksIDQ1MjQsIDQ1MjksIDQ1MzQsIDQ1MzksIDQ1NDUsIDQ1NTAsIDQ1NTYsIDQ1NjEsIAotICAgIDQ1NjYsIDQ1NzEsIDQ1NzYsIDQ1ODEsIDQ1ODYsIDQ1OTIsIDQ1OTcsIDQ2MDIsIDI5MSwgMzIxLCA0NjA3LCA0NjEzLCAKLSAgICA0NjE3LCA0NjIxLCA0NjI2LCA0NjMwLCA0NjM0LCA0NjM3LCA0NjQxLCA0NjQ1LCA0NjQ5LCA0NjUzLCA0NjU3LCA0NjYyLCAKLSAgICA0NjY2LCA0NjcwLCA0Njc2LCA0NDM3LCA0NjgxLCA0Njg1LCA0Njg4LCA0NjkzLCA0Njk4LCA0NzAzLCA0NzA4LCA0NzEzLCAKLSAgICA0NzE4LCA0NzIzLCA0NzI4LCA0NzMzLCA0NzM4LCA0NzQyLCA0NzQ3LCA0NzUyLCA0NzU3LCA0NzYyLCA0NzY3LCA0NzcyLCAKLSAgICA0Nzc3LCA0NzgyLCA0Nzg3LCA0NzkyLCA0Nzk2LCA0ODAxLCA0ODA2LCA0ODExLCA0ODE2LCA0ODIxLCA0ODI2LCA0ODMxLCAKLSAgICA0ODM2LCA0ODQxLCA0ODQ2LCA0ODUwLCA0ODU1LCA0ODYwLCA0ODY1LCA0ODcwLCA0ODc1LCA0ODgwLCA0ODg1LCA0ODkwLCAKLSAgICA0ODk1LCA0OTAwLCA0OTA0LCA0OTA5LCA0OTE0LCA0OTE5LCA0OTI0LCA0OTI5LCA0OTM0LCA0OTM5LCA0OTQ0LCA0OTQ5LCAKLSAgICA0OTU0LCA0OTU4LCA0OTYzLCA0OTY4LCA0OTczLCA0OTc4LCA0OTgzLCA0OTg4LCA0OTkzLCA0OTk4LCA1MDAzLCA1MDA4LCAKLSAgICA1MDEyLCA1MDE3LCA1MDIyLCA1MDI3LCA1MDMyLCA1MDM3LCA1MDQyLCA1MDQ3LCA1MDUyLCA1MDU3LCA1MDYyLCA1MDY2LCAKLSAgICA1MDcxLCA1MDc2LCA1MDgxLCA1MDg2LCA1MDkyLCA1MDk4LCA1MTA0LCA1MTEwLCA1MTE2LCA1MTIyLCA1MTI4LCA1MTMzLCAKLSAgICA1MTM5LCA1MTQ1LCA1MTUxLCA1MTU3LCA1MTYzLCA1MTY5LCA1MTc1LCA1MTgxLCA1MTg3LCA1MTkzLCA1MTk4LCA1MjA0LCAKLSAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUyLCA1MjU4LCA1MjYzLCA1MjY5LCA1Mjc1LCAKLSAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE3LCA1MzIzLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKLSAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgyLCA1Mzg4LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKLSAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ3LCA1NDUzLCA1NDU4LCA1NDYyLCA1NDY4LCA1NDc0LCA1NDgwLCA1NDg2LCAKLSAgICA1NDkyLCA1NDk4LCA1NTA0LCA1NTEwLCA1NTE2LCA1NTIyLCA1NTI3LCA1NTMzLCA1NTM5LCA1NTQ1LCA1NTUxLCA1NTU3LCAKLSAgICA1NTYzLCA1NTY5LCA1NTc1LCA1NTgxLCA1NTg3LCA1NTkyLCA1NTk4LCA1NjA0LCA1NjEwLCA1NjE2LCA1NjIyLCA1NjI4LCAKLSAgICA1NjM0LCA1NjQwLCA1NjQ2LCA1NjUyLCA1NjU3LCA1NjYzLCA1NjY5LCA1Njc1LCA1NjgxLCA1Njg3LCA1NjkzLCA1Njk5LCAKLSAgICA1NzA1LCA1NzExLCA1NzE3LCA1NzIyLCA1NzI4LCA1NzM0LCA1NzQwLCA1NzQ2LCA1NzUyLCA1NzU4LCA1NzY0LCA1NzcwLCAKLSAgICA1Nzc2LCA1NzgyLCA1Nzg3LCA1NzkzLCA1Nzk5LCA1ODA1LCA1ODExLCA1ODE3LCA1ODIzLCA1ODI5LCA1ODM1LCA1ODQxLCAKLSAgICA1ODQ3LCA1ODUyLCA1ODU4LCA1ODY0LCA1ODcwLCA1ODc2LCA1ODgyLCA1ODg4LCA1ODk0LCA1OTAwLCA1OTA2LCA1OTEyLCAKLSAgICA1OTE3LCA1OTIzLCA1OTI5LCA1OTM1LCA1OTQxLCA1OTQ3LCA1OTUzLCA1OTU5LCA1OTY1LCA1OTcxLCA1OTc3LCA1OTgyLCAKLSAgICA1OTg4LCA1OTk0LCA2MDAwLCA2MDA2LCA2MDEyLCA2MDE4LCA2MDI0LCA2MDMwLCA2MDM2LCA2MDQyLCA2MDQ3LCA2MDUzLCAKLSAgICA2MDU5LCA2MDY1LCA2MDcxLCA2MDc3LCA2MDgzLCA2MDg5LCA2MDk1LCA2MTAxLCA2MTA3LCA2MTEyLCA2MTE2LCA2MTE5LCAKLSAgICA2MTI2LCA2MTMwLCA2MTQzLCA2MTQ3LCA2MTUxLCA2MTU1LCA2MTU4LCA2MTYyLCA2MTY3LCA2MTcxLCA2MTc1LCA2MTgxLCAKLSAgICA2MTg4LCA2MTk5LCA2MjA3LCA2MjE0LCA2MjE4LCA2MjI2LCA2MjM1LCA2MjQxLCA2MjUzLCA2MjU4LCA2MjYxLCA2MjY2LCAKLSAgICA2MjcwLCA2MjgwLCA2Mjg4LCA2Mjk2LCA2MzAyLCA2MzA2LCA2MzE2LCA2MzI2LCA2MzM0LCA2MzQxLCA2MzQ4LCA2MzU0LCAKLSAgICA2MzYwLCA2MzY3LCA2MzcxLCA2Mzc4LCA2Mzg4LCA2Mzk4LCA2NDA2LCA2NDEzLCA2NDE4LCA2NDIyLCA2NDI2LCA2NDM0LCAKLSAgICA2NDM4LCA2NDQzLCA2NDUwLCA2NDU4LCA2NDYzLCA2NDY3LCA2NDcyLCA2NDc2LCA2NDgzLCA2NDg4LCA2NTAyLCA2NTA3LCAKLSAgICA2NTEyLCA2NTE5LCAzNTQxLCA2NTI4LCA2NTMyLCA2NTM3LCA2NTQxLCA2NTQ1LCA2NTQ4LCA2NTUzLCA2NTU4LCA2NTY3LCAKLSAgICA2NTczLCA2NTc5LCA2NTg1LCA2NTg5LCA2NjAwLCA2NjEwLCA2NjI1LCA2NjQwLCA2NjU1LCA2NjcwLCA2Njg1LCA2NzAwLCAKLSAgICA2NzE1LCA2NzMwLCA2NzQ1LCA2NzYwLCA2Nzc1LCA2NzkwLCA2ODA1LCA2ODIwLCA2ODM1LCA2ODUwLCA2ODY1LCA2ODgwLCAKLSAgICA2ODk1LCA2OTEwLCA2OTI1LCA2OTQwLCA2OTU1LCA2OTcwLCA2OTg1LCA3MDAwLCA3MDE1LCA3MDMwLCA3MDQ1LCA3MDYwLCAKLSAgICA3MDc1LCA3MDkwLCA3MTA1LCA3MTIwLCA3MTM1LCA3MTUwLCA3MTY1LCA3MTgwLCA3MTk1LCA3MjEwLCA3MjI1LCA3MjQwLCAKLSAgICA3MjU1LCA3MjcwLCA3Mjg1LCA3MzAwLCA3MzE1LCA3MzMwLCA3MzQ1LCA3MzU0LCA3MzYzLCA3MzY4LCA3Mzc0LCA3Mzg0LCAKLSAgICA3Mzg4LCA3MzkyLCA3Mzk3LCA3NDAyLCA3NDEwLCA3NDE0LCA3NDE3LCA3NDIxLCAzMDM0LCA3NDI0LCA3NDI5LCAzMzAsIAotICAgIDUwNCwgNzQzNSwgNzQ0MywgNzQ0NywgNzQ1MSwgNzQ1NCwgNzQ1OCwgNzQ2NCwgNzQ2OCwgNzQ3NiwgNzQ4MiwgNzQ4NywgCi0gICAgNzQ5NCwgNzUwMiwgNzUwOSwgNzUxNSwgNzUyMCwgNzUyNywgNzUzMywgNzU0MSwgNzU0NSwgNzU1MCwgNzU2MiwgNzU3MywgCi0gICAgNzU4MCwgNzU4NCwgNzU4OCwgNzU5MiwgNzU5NSwgNzYwMSwgMzMxMSwgNzYwNSwgNzYxMSwgNzYxNiwgNzYyMSwgNzYyNiwgCi0gICAgNzYzMiwgNzYzNywgNzY0MiwgNzY0NywgNzY1MiwgNzY1OCwgNzY2MywgNzY2OCwgNzY3NCwgNzY3OSwgNzY4NSwgNzY5MCwgCi0gICAgNzY5NiwgNzcwMSwgNzcwNywgNzcxMiwgNzcxNywgNzcyMiwgNzcyNywgNzczMiwgNzczOCwgNzc0MywgNzc0OCwgNzc1MywgCi0gICAgNzc1OSwgNzc2NSwgNzc3MSwgNzc3NywgNzc4MywgNzc4OSwgNzc5NSwgNzgwMSwgNzgwNywgNzgxMywgNzgxOSwgNzgyNSwgCi0gICAgNzgzMCwgNzgzNSwgNzg0MCwgNzg0NSwgNzg1MCwgNzg1NSwgNzg2MCwgNzg2NSwgNzg3MSwgNzg3NywgNzg4MiwgNzg4OCwgCi0gICAgNzg5NCwgNzkwMCwgNzkwNSwgNzkxMCwgNzkxNSwgNzkyMCwgNzkyNiwgNzkzMiwgNzkzNywgNzk0MiwgNzk0NywgNzk1MiwgCi0gICAgNzk1NywgNzk2MywgNzk2OCwgNzk3NCwgNzk4MCwgNzk4NiwgNzk5MiwgNzk5OCwgODAwNCwgODAxMCwgODAxNiwgODAyMiwgCi0gICAgMjE2NCwgNzQ1MywgODAyNywgODAzMSwgODAzNSwgODAzOCwgODA0NSwgODA0OCwgODA1MiwgODA2MCwgODA2NSwgODA3MCwgCi0gICAgODA2MSwgODA3NSwgMjE5MSwgODA3OSwgODA4NSwgODA5MSwgODA5NiwgODEwMSwgODEwOCwgODExNiwgODEyMSwgODEyNSwgCi0gICAgODEyOCwgODEzMiwgODEzOCwgODE0NCwgODE0OCwgMjE5OSwgNTI2LCA4MTUxLCA4MTU1LCA4MTYwLCA4MTY2LCA4MTcxLCAKLSAgICA4MTc1LCA4MTc4LCA4MTgyLCA4MTg4LCA4MTkzLCA4MTk3LCA4MjA0LCA4MjA4LCA4MjEyLCA4MjE2LCA4NzYsIDk1OCwgCi0gICAgODIxOSwgODIyNywgODIzNCwgODI0MCwgODI0NywgODI1NSwgODI2MiwgODI3MywgODI4MCwgODI4NiwgODI5MSwgODMwMywgCi0gICAgMTIyOCwgMTM5MywgMTM5OCwgODMxNCwgMTQwMywgODMxOCwgODMyMiwgODMzMSwgODMzOSwgODM0MywgODM1MiwgODM1OCwgCi0gICAgODM2MywgODM2NywgODM3MywgODM3OCwgODM4NSwgMjc0NSwgODM5MiwgODM5NiwgODQwNSwgODQxNCwgODQyMywgODQzMiwgCi0gICAgODQzOCwgODQ0MywgODQ0OCwgODQ1OSwgODQ3MSwgODQ3NiwgODQ4NCwgMjI1MCwgODQ4OCwgODQ5MCwgODQ5NSwgODQ5OSwgCi0gICAgODUwOCwgODUxNiwgMTQwNywgMTU5LCAzNTgzLCAzNTg4LCA4NTIyLCA4NTI2LCA4NTM1LCA4NTQxLCA4NTQ2LCA4NTQ5LCAKLSAgICA4NTU4LCAzNTkyLCAyNzM3LCA4NTY0LCA4NTcyLCA4NTc2LCA4NTgwLCA4NTg0LCAyMjY3LCA4NTg4LCA4NTkzLCA4NjAwLCAKLSAgICA4NjA2LCA4NjEyLCA4NjE1LCA4NjE3LCA4NjIwLCA4NjI4LCA4NjM2LCA4NjQ0LCA4NjQ3LCA4NjUyLCAyMjgwLCA4NjU3LCAKLSAgICA4MDcyLCA4NjYwLCA4NjYyLCA4NjY3LCA4NjcyLCA4Njc3LCA4NjgyLCA4Njg3LCA4NjkyLCA4Njk3LCA4NzAyLCA4NzA3LCAKLSAgICA4NzEyLCA4NzE4LCA4NzIzLCA4NzI4LCA4NzMzLCA4NzM5LCA4NzQ0LCA4NzQ5LCA4NzU0LCA4NzU5LCA4NzY0LCA4NzY5LCAKLSAgICA4Nzc1LCA4NzgwLCA4Nzg1LCA4NzkwLCA4Nzk1LCA4ODAwLCA4ODA1LCA4ODEwLCA4ODE1LCA4ODIwLCA4ODI1LCA4ODMwLCAKLSAgICA4ODM1LCA4ODQwLCA4ODQ1LCA4ODUwLCA4ODU1LCA4ODYwLCA4ODY2LCA4ODcyLCA4ODc3LCA4ODgyLCA4ODg3LCA4ODkyLCAKLSAgICA4ODk3LCAyMjkxLCAyMjk4LCAyMzA0LCA4OTAyLCA4OTEwLCA4OTE2LCA4OTI0LCAyMzMwLCAyMzM2LCA4OTMyLCA4OTM2LCAKLSAgICA4OTQxLCA4OTQ1LCA4OTQ5LCA4OTUzLCA4OTU4LCA4OTYyLCA4OTY3LCA4OTcxLCA4OTc0LCA4OTc3LCA4OTgzLCA4OTkwLCAKLSAgICA4OTk2LCA5MDAzLCA5MDA5LCA5MDE2LCA5MDIyLCA5MDI5LCA5MDM1LCA5MDQxLCA5MDUwLCA5MDU2LCA5MDYwLCA5MDY0LCAKLSAgICA5MDY4LCA5MDcyLCA5MDc3LCA5MDgxLCA5MDg2LCA5MDkwLCA5MDk2LCA5MTAxLCA5MTA4LCA5MTE5LCA5MTI3LCA5MTM3LCAKLSAgICA5MTQzLCA5MTUzLCA5MTYyLCA5MTY5LCA5MTc0LCA5MTc4LCA5MTg5LCA5MjAyLCA5MjEzLCA5MjI2LCA5MjM3LCA5MjQ5LCAKLSAgICA5MjYxLCA5MjczLCA5Mjg2LCA5Mjk5LCA5MzA2LCA5MzEyLCA5MzI2LCA5MzMzLCA5MzM5LCA5MzQ4LCA5MzU2LCA5MzYwLCAKLSAgICA5MzY1LCA5MzY5LCA5Mzc2LCA5Mzg0LCA5Mzg4LCA5Mzk0LCA5Mzk4LCA5NDA0LCA5NDE0LCA5NDE4LCA5NDIzLCA5NDI4LCAKLSAgICA5NDM1LCA5NDQxLCA5NDUxLCA4MjQyLCA5NDU3LCA5NDYxLCA5NDY4LCA5NDc0LCA5NDgxLCA5NDg4LCA5NTcsIDk0OTIsIAotICAgIDk0OTYsIDk1MDEsIDk1MDYsIDk1MTEsIDk1MTUsIDk1MjEsIDk1MjksIDk1MzUsIDk1MzksIDk1NDIsIDk1NDgsIDk1NTgsIAotICAgIDk1NjIsIDk1NjgsIDk1NzMsIDk1NzcsIDk1ODEsIDk1ODcsIDk1OTMsIDIxODcsIDk1OTgsIDk2MDAsIDk2MDUsIDk2MTMsIAotICAgIDk2MjIsIDk2MjYsIDk2MzIsIDk2MzcsIDk2NDIsIDk2NDcsIDk2NTIsIDk2NTgsIDk2NjMsIDk2NjgsIDQyMzUsIDk2NzMsIAotICAgIDk2NzgsIDk2ODIsIDk2ODgsIDk2OTMsIDk2OTksIDk3MDQsIDk3MDksIDk3MTUsIDk3MjAsIDk2MjcsIDk3MjYsIDk3MzAsIAotICAgIDk3MzcsIDk3NDMsIDk3NDgsIDk3NTIsIDY0OTgsIDk3NTcsIDk3NjYsIDk3NzEsIDk3NzYsIDg1OTYsIDg2MDMsIDk3ODEsIAotICAgIDI5MTIsIDk3ODUsIDk3OTAsIDk3OTUsIDk4MDAsIDk2MzgsIDk4MDQsIDk4MDksIDk4MTQsIDk2NDMsIDk4MTgsIDk2NDgsIAotICAgIDk4MjMsIDk4MzAsIDk4MzcsIDk4NDMsIDk4NTAsIDk4NTYsIDk4NjIsIDk4NjcsIDk4NzQsIDk4NzksIDk4ODQsIDk4ODksIAotICAgIDk4OTUsIDk2NTMsIDk2NTksIDk5MDEsIDk5MDcsIDk5MTIsIDk5MTcsIDk5MjUsIDk2NjQsIDk5MzAsIDExMDIsIDk5MzMsIAotICAgIDk5NDEsIDk5NDcsIDk5NTMsIDk5NjIsIDk5NzAsIDk5NzgsIDk5ODYsIDk5OTQsIDEwMDAyLCAxMDAxMCwgMTAwMTgsIAotICAgIDEwMDI2LCAxMDAzNSwgMTAwNDQsIDEwMDUyLCAxMDA2MSwgMTAwNzAsIDEwMDc5LCAxMDA4OCwgMTAwOTcsIDEwMTA2LCAKLSAgICAxMDExNSwgMTAxMjQsIDEwMTMzLCAxMDE0MiwgMTAxNTAsIDEwMTU1LCAxMDE2MSwgMTAxNjksIDEwMTc2LCAxMDE5MSwgCi0gICAgMTAyMDgsIDEwMjI3LCAxMDIzNiwgMTAyNDQsIDEwMjU5LCAxMDI3MCwgMTAyODAsIDEwMjkwLCAxMDI5OCwgMTAzMDQsIAotICAgIDEwMzE2LCAxMDMyNSwgMTAzMzMsIDEwMzQwLCAxMDM0NywgMTAzNTQsIDEwMzYwLCAxMDM2NSwgMTAzNzUsIDEwMzgzLCAKLSAgICAxMDM5MywgMTA0MDAsIDEwNDEwLCAxMDQyMCwgMTA0MzAsIDEwNDM4LCAxMDQ0NSwgMTA0NTQsIDEwNDY0LCAxMDQ3OCwgCi0gICAgMTA0OTMsIDEwNTAyLCAxMDUxMCwgMTA1MTUsIDEwNTE5LCAxMDUyOCwgMTA1MzQsIDEwNTM5LCAxMDU0OSwgMTA1NTksIAotICAgIDEwNTY5LCAxMDU3NCwgMTA1NzgsIDEwNTg3LCAxMDU5MiwgMTA2MDgsIDEwNjI1LCAxMDYzNSwgMTA2NDYsIDEwNjU5LCAKLSAgICAxMDY2NywgMTA2ODAsIDEwNjkyLCAxMDcwMCwgMTA3MDUsIDEwNzA5LCAxMDcxNSwgMTA3MjAsIDEwNzI4LCAxMDczNiwgCi0gICAgMTA3NDMsIDEwNzQ4LCAxMDc1NiwgMTA3NjYsIDEwNzcyLCAxMDc3NiwgMTA3NzksIDEwNzgzLCAxMDc4OSwgMTA3OTYsIAotICAgIDEwODAwLCAxMDgwOCwgMTA4MTcsIDEwODI1LCAxMDgzMiwgMTA4MzcsIDEwODQyLCAxMDg0NiwgMTA4NTAsIDEwODU4LCAKLSAgICAxMDg3MywgMTA4ODksIDEwODk1LCAxMDkwMywgMTA5MTIsIDEwOTIwLCAxMDkyNiwgMTA5MzAsIDEwOTM3LCAxMDk0OCwgCi0gICAgMTA5NTIsIDEwOTU1LCAxMDk2MSwgOTY2OSwgMTA5NjYsIDEwOTcyLCAxMDk3OSwgMTA5ODUsIDEwOTkwLCAxMDk5NywgCi0gICAgMTEwMDQsIDExMDExLCAxMTAxOCwgMTEwMjUsIDExMDMyLCAxMTAzOSwgMTEwNDYsIDExMDUxLCAxMDIwNCwgMTEwNTYsIAotICAgIDExMDYyLCAxMTA2OSwgMTEwNzYsIDExMDgxLCAxMTA4OCwgMTEwOTcsIDExMTAxLCAxMTExMywgODYzNCwgMTExMTcsIAotICAgIDExMTIwLCAxMTEyNCwgMTExMjgsIDExMTMyLCAxMTEzNiwgMTExNDIsIDExMTQ4LCAxMTE1MywgMTExNTksIDExMTY0LCAKLSAgICAxMTE2OSwgMTExNzUsIDExMTgwLCAxMTE4NSwgOTQzMSwgMTExOTAsIDExMTk0LCAxMTE5OCwgMTEyMDIsIDExMjA3LCAKLSAgICAxMTIxMiwgMTEyMTcsIDExMjI1LCAxMTIzMSwgMTEyMzYsIDExMjQwLCAxMTI0NCwgMTEyNTEsIDExMjU2LCAxMTI2NCwgCi0gICAgMTEyNzEsIDExMjc2LCAxMTI4MCwgMTEyODMsIDExMjg5LCAxMTI5NiwgMTEzMDAsIDExMzAzLCAxMTMwOCwgMTEzMTIsIAotICAgIDQyNzQsIDExMzE4LCAxMTMyNywgNDYsIDExMzM1LCAxMTM0MSwgMTEzNDYsIDExMzUxLCAxMTM1OSwgMTEzNjYsIDExMzcxLCAKLSAgICA5NDQ2LCAxMTM3NywgMTEzODMsIDExMzg4LCAxMTM5MiwgMTEzOTUsIDExNDEwLCAxMTQyOSwgMTE0NDEsIDExNDU0LCAKLSAgICAxMTQ2NywgMTE0ODAsIDExNDk0LCAxMTUwNywgMTE1MjIsIDExNTI5LCA5Njc0LCAxMTUzNSwgMTE1NDksIDExNTU0LCAKLSAgICAxMTU2MCwgMTE1NjUsIDExNTczLCAxMTU3OCwgODQwMSwgMTE1ODMsIDExNTg2LCAxMTU5NCwgMTE2MDEsIDExNjA2LCAKLSAgICAxMTYxMCwgMTE2MTYsIDI5MTcsIDEwMjc4LCAxMTYyMCwgMTE2MjQsIDExNjMwLCAxMTYzNiwgMTE2NDEsIDExNjQ3LCAKLSAgICAxMTY1MiwgOTY4MywgMTE2NTgsIDExNjY0LCAxMTY2OSwgMTE2NzQsIDExNjgyLCAxMTY4OCwgMTE3MDEsIDExNzA5LCAKLSAgICAxMTcxNiwgMTE3MjIsIDk2ODksIDExNzI4LCAxMTczNiwgMTE3NDQsIDExNzUxLCAxMTc2NCwgMTE3NzcsIDExNzg5LCAKLSAgICAxMTc5OSwgMTE4MDcsIDExODE0LCAxMTgyNiwgMTE4MzMsIDExODQzLCAxMTg1MiwgMTE4NjEsIDExODY5LCAxMTg3NiwgCi0gICAgMTE4ODEsIDExODg3LCA5Njk0LCAxMTg5MiwgMTE4OTgsIDExOTAzLCAxMTkwOCwgOTcwMCwgMTE5MTMsIDExOTE2LCAKLSAgICAxMTkyMywgMTE5MjksIDExOTQyLCA5MTEyLCAxMTk1MywgMTE5NTksIDExOTY4LCAxMTk3NiwgMTE5ODMsIDExOTg5LCAKLSAgICAxMjAwMCwgMTIwMDYsIDEyMDExLCAzODM2LCAxMjAxOSwgMTIwMjQsIDExNDAyLCAxMjAzMCwgMTIwMzcsIDEyMDQyLCAKLSAgICA5NzA1LCAxMjA0OCwgMTIwNTMsIDEyMDYwLCAxMjA2NiwgMTIwNzIsIDEyMDc3LCAxMjA4NSwgMTIwOTMsIDEyMTAwLCAKLSAgICAxMjEwNCwgMTIxMTYsIDEyMTMwLCAxMjE0MCwgMTIxNDUsIDEyMTQ5LCAxMjE2MCwgMTIxNjYsIDEyMTcxLCAxMjE3NiwgCi0gICAgOTcxMCwgMTIxODAsIDk3MTYsIDEyMTg1LCAxMjE4OCwgMTIxOTMsIDEyMjA1LCAxMjIxMiwgMTIyMTcsIDEyMjIxLCAKLSAgICAxMjIyOSwgMTIyMzQsIDEyMjM4LCAxMjI0MywgMTIyNDcsIDEyMjU0LCAxMjI2MCwgOTcyMSwgOTYyOCwgMTIyNjcsIDI5MjIsIAotICAgIDEyLCAxMjI3NCwgMTIyNzksIDEyMjgzLCAxMjI4NywgMTIyOTMsIDEyMzAxLCAxMjMxMSwgMTIzMTYsIDEyMzIxLCAxMjMyOCwgCi0gICAgMTIzMzUsIDEyMzM5LCAxMjM1MCwgMTIzNjAsIDEyMzY5LCAxMjM3OCwgMTIzOTAsIDEyMzk1LCAxMjM5OSwgMTI0MDcsIAotICAgIDEyNDIxLCAxMjQyNSwgMTI0MjgsIDEyNDM2LCAxMjQ0MywgMTI0NTEsIDEyNDU1LCAxMjQ2NiwgMTI0NzAsIDEyNDc3LCAKLSAgICAxMjQ4MiwgMTI0ODYsIDEyNDkyLCAxMjQ5NywgMTI1MDMsIDEyNTA4LCAxMjUxMywgMTI1MTcsIDEyNTIzLCAxMjUyOCwgCi0gICAgMTI1MzksIDEyNTQzLCAxMjU0NiwgMTI1NTIsIDEyNTU3LCAxMjU2MywgMTI1NjksIDEyNTc2LCAxMjU4NywgMTI1OTcsIAotICAgIDEyNjA3LCAxMjYxNiwgMTI2MjMsIDEyNjMyLCAxMjYzNiwgOTczMSwgOTczOCwgOTc0NCwgOTc0OSwgMTI2NDIsIDEyNjQ4LCAKLSAgICAxMjY1NCwgMTI2NTksIDEyNjY1LCA5NzUzLCAxMjY3MSwgMTI2NzQsIDEyNjgxLCAxMjY4NiwgMTI3MDEsIDEyNzE3LCAKLSAgICAxMjczMiwgMTI3NDAsIDEyNzQ2LCAxMjc1MSwgOTUwLCAzNzQsIDEyNzU2LCAxMjc2NCwgMTI3NzEsIDEyNzc3LCAxMjc4MiwgCi0gICAgMTI3ODcsIDk3NTgsIDEyNzg5LCAxMjc5MywgMTI3OTgsIDEyODAyLCAxMjgxMiwgMTI4MTcsIDEyODIxLCAxMjgzMCwgCi0gICAgMTI4MzQsIDEyODM3LCAxMjg0NCwgOTc2NywgMTI4NDksIDEyODUyLCAxMjg2MCwgMTI4NjcsIDEyODc1LCAxMjg3OSwgCi0gICAgMTI4ODMsIDEyODkwLCAxMjg5OSwgMTI5MDYsIDEyOTAyLCAxMjkxMywgMTI5MTcsIDEyOTIzLCAxMjkyNywgMTI5MzEsIAotICAgIDEyOTM1LCAxMjk0MSwgMTI5NTEsIDEyOTU5LCAxMjk2NiwgMTI5NzAsIDEyOTc4LCAxMjk4MiwgMTI5ODksIDEyOTkzLCAKLSAgICAxMjk5OCwgMTMwMDIsIDEzMDA5LCAxMzAxNSwgMTMwMjMsIDEzMDI5LCAxMzAzNCwgMTMwNDQsIDEzMDQ5LCAxMzA1NCwgCi0gICAgMTMwNTgsIDEzMDYyLCAxMzA3MCwgNDEyNCwgMTMwNzgsIDEzMDgzLCA5NzcyLCAxMzA4NywgMTMwOTEsIDEzMDk0LCAKLSAgICAxMzEwMiwgMTMxMDksIDEzMTEzLCA2Mjk4LCAxMzExNywgMTMxMjIsIDEzMTI3LCAxMzEzMSwgMTMxNDIsIDEzMTUyLCAKLSAgICAxMzE1NywgMTMxNjMsIDEzMTY4LCAxMzE3MiwgMTMxNzUsIDEzMTgzLCAxMzE4OCwgMTMxOTMsIDEzMjAwLCAxMzIwNSwgCi0gICAgOTc3NywgMTMyMTAsIDEzMjE0LCAxMzIyMSwgMTczNywgNjQ1NiwgMTMyMjYsIDEzMjMxLCAxMzIzNiwgMTMyNDEsIDEzMjQ3LCAKLSAgICAxMzI1MiwgMTMyNTgsIDEzMjYzLCAxMzI2OCwgMTMyNzMsIDEzMjc4LCAxMzI4MywgMTMyODgsIDEzMjkzLCAxMzI5OCwgCi0gICAgMTMzMDMsIDEzMzA4LCAxMzMxMywgMTMzMTgsIDEzMzIzLCAxMzMyOCwgMTMzMzMsIDEzMzM4LCAxMzM0NCwgMTMzNDksIAotICAgIDEzMzU0LCAxMzM1OSwgMTMzNjQsIDEzMzY5LCAxMzM3NSwgMTMzODAsIDEzMzg1LCAxMzM5MSwgMTMzOTYsIDEzNDAyLCAKLSAgICAxMzQwNywgMTM0MTMsIDEzNDE4LCAxMzQyMywgMTM0MjgsIDEzNDMzLCAxMzQzOSwgMTM0NDQsIDEzNDQ5LCAxMzQ1NCwgCi0gICAgOTA5LCAxMTIsIDEzNDYyLCAxMzQ2NiwgMTM0NzEsIDEzNDc2LCAxMzQ4MCwgMTM0ODQsIDEzNDg4LCAxMzQ5MywgMTM0OTcsIAotICAgIDEzNTAyLCAxMzUwNiwgMTM1MDksIDEzNTEzLCAxMzUxNywgMTM1MjMsIDEzNTI4LCAxMzUzOCwgMTM1NDQsIDEzNTUyLCAKLSAgICAxMzU1OCwgMTM1NjIsIDEzNTY2LCAxMzU3MywgMTM1ODEsIDEzNTkwLCAxMzYwMSwgMTM2MTEsIDEzNjE4LCAxMzYyNSwgCi0gICAgMTM2MjksIDEzNjM4LCAxMzY0NywgMTM2NTUsIDEzNjY0LCAxMzY3MywgMTM2ODIsIDEzNjkxLCAxMzcwMSwgMTM3MTEsIAotICAgIDEzNzIxLCAxMzczMSwgMTM3NDEsIDEzNzUwLCAxMzc2MCwgMTM3NzAsIDEzNzgwLCAxMzc5MCwgMTM4MDAsIDEzODEwLCAKLSAgICAxMzgyMCwgMTM4MjksIDEzODM5LCAxMzg0OSwgMTM4NTksIDEzODY5LCAxMzg3OSwgMTM4ODksIDEzODk4LCAxMzkwOCwgCi0gICAgMTM5MTgsIDEzOTI4LCAxMzkzOCwgMTM5NDgsIDEzOTU4LCAxMzk2OCwgMTM5NzgsIDEzOTg4LCAxMzk5NywgMTQwMDcsIAotICAgIDE0MDE3LCAxNDAyNywgMTQwMzcsIDE0MDQ3LCAxNDA1NywgMTQwNjcsIDE0MDc3LCAxNDA4NywgMTQwOTcsIDE0MTA2LCAKLSAgICAxMjM3LCAxNDExMiwgMTQxMTUsIDE0MTE5LCAxNDEyNCwgMTQxMzEsIDE0MTM3LCAxNDE0MiwgMTQxNDYsIDE0MTUxLCAKLSAgICAxNDE2MCwgMTQxNjgsIDE0MTczLCAxNDE3NywgMTQxODEsIDE0MTg3LCAxNDE5MiwgMTQxOTgsIDk3ODYsIDE0MjAzLCAKLSAgICAxNDIwOCwgMTQyMTcsIDk3OTYsIDE0MjIyLCAxNDIyNSwgMTQyMzEsIDE0MjM5LCA5ODAxLCAxNDI0NiwgMTQyNTAsIAotICAgIDE0MjU0LCAxNDI1OSwgMTQyNjMsIDE0MjczLCAxNDI3OSwgMTQyODUsIDE0MjkwLCAxNDI5OSwgMTQzMDcsIDE0MzE0LCAKLSAgICAxNDMyMSwgMTQzMjYsIDE0MzMzLCAxNDMzOCwgMTQzNDIsIDE0MzQ1LCAxNDM1NiwgMTQzNjYsIDE0Mzc1LCAxNDM4MywgCi0gICAgMTQzOTQsIDE0NDA2LCAxNDQxNiwgMTQ0MjEsIDE0NDI1LCAxNDQzMCwgMTQ0MzUsIDE0NDM5LCAxNDQ0NSwgMTQ0NTMsIAotICAgIDE0NDYwLCAxNDQ3MSwgMTQ0NzYsIDE0NDg2LCAxNDQ5NSwgMTQ0OTksIDE0NTAyLCAxNDUwOSwgMTQ1MTksIDE0NTI4LCAKLSAgICAxNDUzNSwgMTQ1MzksIDE0NTQ2LCAxNDU1MiwgMTQ1NTcsIDE0NTYyLCAxNDU2NiwgMTQ1NzUsIDE0NTgwLCAxNDU4NCwgCi0gICAgMTQ1OTAsIDE0NTk0LCAxNDU5OSwgMTQ2MDMsIDE0NjEwLCAxNDYxNywgMTQ2MjEsIDE0NjMwLCAxNDYzOCwgMTQ2NDYsIAotICAgIDE0NjUzLCAxNDY2MSwgMTQ2NzMsIDE0Njg0LCAxNDY5NCwgMTQ3MDEsIDE0NzA3LCAxNDcxNiwgMTQ3MjcsIDE0NzM2LCAKLSAgICAxNDc0OCwgMTQ3NjAsIDE0NzcyLCAxNDc4MiwgMTQ3OTEsIDE0ODAwLCAxNDgwOCwgMTQ4MTUsIDE0ODI0LCAxNDgzMiwgCi0gICAgMTQ4MzYsIDE0ODQxLCAxNDg0NywgMTQ4NTMsIDE0ODU4LCAxNDg2MywgODA5MywgMTQ4NjcsIDE0ODY5LCAxNDg3MywgCi0gICAgMTQ4NzgsIDE0ODg0LCAxNDg5MCwgMTQ4OTksIDE0OTAzLCAxNDkwOSwgMTQ5MTcsIDE0OTI0LCAxNDkzMywgMTQ5NDIsIAotICAgIDE0OTUxLCAxNDk2MCwgMTQ5NjksIDE0OTc4LCAxNDk4NywgMTQ5OTYsIDE1MDA2LCAxNTAxNiwgMTUwMjUsIDE1MDMxLCAKLSAgICAxNTAzOCwgMTUwNDUsIDE1MDUxLCAxNTA2NSwgMTUwNzEsIDE1MDc4LCAxNTA4NiwgMTUwOTUsIDE1MTAzLCAxNTEwOSwgCi0gICAgMTUxMTgsIDE1MTI3LCAxNTEzOCwgMTUxNDgsIDE1MTU2LCAxNTE2MywgMTUxNzEsIDE1MTgwLCAxNTE5MywgMTUyMDIsIAotICAgIDE1MjEwLCAxNTIxNywgMTUyMzAsIDE1MjM2LCAxNTI0MiwgMTUyNTIsIDE1MjYxLCAxNTI3MCwgMTUyNzUsIDE1Mjc5LCAKLSAgICAxNTI4NSwgMTUyOTEsIDE1Mjk2LCAxNTMwMywgMTUzMTAsIDk0NDUsIDE1MzE1LCAxNTMyMCwgMTUzMjcsIDE1MzM1LCAKLSAgICAxNTM0MCwgMTUzNDcsIDE1MzUyLCAxNTM2NCwgMTM1MTksIDE1MzY5LCAxNTM3NywgMTUzODMsIDE1Mzg4LCAxNTM5NiwgCi0gICAgMTU0MDQsIDE1NDExLCAxNTQxOSwgMTU0MjUsIDE1NDMzLCAxNTQ0MSwgMTU0NDcsIDE1NDUyLCAxNTQ1OCwgMTU0NjUsIAotICAgIDE1NDcxLCAxNTQ3NiwgMTU0ODAsIDE1NDkxLCAxNTQ5OSwgMTU1MDUsIDE1NTEwLCAxNTUxNywgMTU1MjYsIDE1NTMyLCAKLSAgICAxNTUzNywgMTU1NDUsIDE1NTU0LCAxNTU2OCwgNDA2OCwgMTU1NzIsIDE1NTc3LCAxNTU4MiwgMTU1ODgsIDE1NTkzLCAKLSAgICAxNTU5OCwgMTU2MDIsIDE1NjA3LCAxNTYxMiwgMTU2MTcsIDgwOTIsIDE1NjIyLCAxNTYyNywgMTU2MzIsIDE1NjM3LCAKLSAgICAxNTY0MiwgMTU2NDYsIDE1NjUxLCAxNTY1NiwgMTU2NjEsIDE1NjY2LCAxNTY3MiwgMTU2NzgsIDE1NjgzLCAxNTY4NywgCi0gICAgMTU2OTMsIDE1Njk4LCAxNTcwMywgMTU3MDgsIDk4MDUsIDE1NzEzLCAxNTcxOCwgMTU3MjMsIDE1NzI4LCAxNTczMywgCi0gICAgMTU3NTAsIDE1NzY4LCAxNTc4MCwgMTU3OTMsIDE1ODEwLCAxNTgyNiwgMTU4NDMsIDE1ODUzLCAxNTg3MiwgMTU4ODMsIAotICAgIDE1ODk0LCAxNTkwNSwgMTU5MTYsIDE1OTI4LCAxNTkzOSwgMTU5NTAsIDE1OTY3LCAxNTk3OCwgMTU5ODksIDE1OTk0LCAKLSAgICA5ODEwLCAxNTk5OSwgMTYwMDMsIDI0MjAsIDE2MDA3LCAxNjAxMCwgMTYwMTYsIDE2MDI0LCAxNjAzMiwgMTYwNDEsIAotICAgIDE2MDQ4LCAxNjA1MywgMTYwNjEsIDE2MDY5LCAxNjA3NiwgMTYwODAsIDE2MDg1LCAxNjA5MSwgMTYwOTgsIDE2MTA2LCAKLSAgICAxNjExMywgMTYxMjUsIDE2MTMyLCAxNjEzOCwgMTYxNDYsIDE2MTUxLCAxNjE1NywgMTI2OTUsIDE2MTYzLCAxNjE3MiwgCi0gICAgMTYxNzgsIDE2MTgzLCAxNjE5MSwgMTYyMDAsIDE2MjA4LCAxNjIxNSwgMTYyMjEsIDE2MjI5LCAxNjIzNiwgMTYyNDIsIAotICAgIDE2MjQ4LCAxNjI1NSwgMTYyNjIsIDE2MjY4LCAxNjI3NCwgMTYyODMsIDE2MjkxLCAxNjMwMSwgMTYzMDgsIDE2MzE0LCAKLSAgICAxNjMyMiwgMTYzMjgsIDE2MzM2LCAxNjM0NCwgMTYzNTEsIDE2MzY0LCAxNjM3MSwgMTYzODAsIDE2Mzg5LCAxNjM5OCwgCi0gICAgMTY0MDYsIDE2NDE2LCAxNjQyMywgMTY0MjgsIDM3MjcsIDE2NDM1LCAxNjQ0MCwgMTM1MywgMTY0NDQsIDE1NjIzLCAKLSAgICAxNjQ0OCwgMTY0NTQsIDE2NDU4LCAxNjQ2NiwgMTY0NzgsIDE2NDgzLCAxNjQ5MCwgMTY0OTYsIDE2NTAxLCAxNjUwOCwgCi0gICAgMTU2MjgsIDE2NTEyLCAxNjUxNiwgMTY1MjAsIDE1NjMzLCAxNjUyNCwgMTU2MzgsIDE2NTI4LCAxNjUzNSwgMTY1NDAsIAotICAgIDE2NTQ0LCAxNjU1MSwgMTY1NTUsIDE2NTYzLCAxNjU3MCwgMTY1NzUsIDE2NTc5LCAxNjU4NiwgMTY2MDMsIDE2NjEyLCAKLSAgICAxNjYxNiwgMTY2MTksIDE2NjI3LCAxNjYzMywgMTY2MzgsIDM4MDUsIDE2NjQyLCAxNjY0NCwgMTY2NTIsIDE2NjU5LCAKLSAgICAxNjY2OSwgMTY2ODEsIDE2Njg2LCAxNjY5MCwgMTY2OTYsIDE2NzAxLCAxNjcwNSwgMTY3MTEsIDE2NzE2LCAxNjcyMiwgCi0gICAgMTY3MjUsIDE2NzMyLCAxNjc0MCwgMTY3NDcsIDE2NzUzLCAxNjc1OCwgMTY3NjQsIDE2NzY5LCAxNjc3NiwgMTY3ODIsIAotICAgIDE2Nzg3LCAxNjc5NCwgMTY3OTksIDE2ODAzLCAxNjgwOSwgMTY4MTMsIDE2ODIwLCAxNjgyNiwgMTY4MzEsIDE2ODM3LCAKLSAgICAxNjg0NSwgMTY4NTMsIDE2ODYwLCAxNjg2NiwgMTY4NzEsIDE2ODc3LCAxNjg4MywgMTY4OTEsIDE2ODk5LCAxNjkwNSwgCi0gICAgMTY5MTEsIDE2OTE2LCAxNjkyMywgMTY5MjgsIDE2OTMyLCAxNjkzOCwgMTY5NDMsIDE2OTUwLCAxNjk1NSwgMTY5NjEsIAotICAgIDE2OTY0LCAxNjk3MCwgMTY5NzYsIDE2OTc5LCAxNjk4MywgMTY5ODcsIDE2OTk5LCAxNzAwNSwgMTcwMTAsIDE3MDE3LCAKLSAgICAxNzAyMywgMTcwMjksIDE3MDQwLCAxNzA1MCwgMTcwNTksIDE3MDY3LCAxNzA3NCwgMTcwODUsIDE3MDk1LCAxNzEwNSwgCi0gICAgMTcxMTMsIDE3MTE2LCAxNTY1MiwgMTcxMjEsIDE3MTI2LCAxNTY1NywgMTU3OTgsIDE3MTM0LCAxNzE0NywgMTcxNjIsIAotICAgIDE3MTczLCAxNTgxNSwgMTcxOTEsIDE3MjA0LCAxNzIxNywgMTcyMjgsIDExNDE3LCAxNzIzOSwgMTcyNTIsIDE3MjcxLCAKLSAgICAxNzI4MiwgMTcyOTMsIDE3MzA0LCAyNjg4LCAxNzMxNywgMTczMjEsIDE3MzI5LCAxNzM0MCwgMTczNDgsIDE3MzYzLCAKLSAgICAxNzM3OCwgMTczODksIDE3Mzk2LCAxNzQwMiwgMTc0MTAsIDE3NDE0LCAxNzQyMCwgMTc0MjMsIDE3NDM2LCAxNzQ0OCwgCi0gICAgMTc0NTgsIDE3NDY2LCAxNzQ3MywgMTc0ODEsIDE3NDkxLCAxNzQ5NiwgMTc1MDMsIDE3NTA4LCAxNzUxNSwgMTc1MjYsIAotICAgIDE3NTM2LCAxNzU0MiwgMTc1NDcsIDE3NTUyLCAxNTY2MiwgMTc1NTYsIDE3NTYyLCAxNzU2OCwgMTc1NzMsIDE3NTc4LCAKLSAgICAxNzU4MywgMTc1ODcsIDE1NjY3LCAxNTY3MywgMTc1OTEsIDE1Njc5LCAxNzU5NiwgMTc2MDQsIDE3NjA5LCAxNzYxMywgCi0gICAgMTc2MjEsIDE3NjMwLCAxNzYzNywgMTc2NDEsIDk2NDksIDE3NjQ1LCAxNzY0NywgMTc2NTIsIDE3NjU3LCAxNzY2MywgCi0gICAgMTc2NjgsIDE3NjczLCAxNzY3OCwgMTc2ODMsIDE3Njg3LCAxNzY5MywgMTc2OTksIDE3NzA0LCAxNzcxMCwgMTc3MTUsIAotICAgIDE3NzIwLCAxNzcyNCwgMTc3MzAsIDE3NzM1LCAxNzc0MCwgMTc3NDUsIDE3NzU3LCAxNzc2MiwgMTc3NjgsIDE3NzczLCAKLSAgICAxNzc3OCwgMTc3ODQsIDE3NzkwLCAxNzc5NSwgMTc4MDAsIDE3ODA1LCAxNzgxMiwgMTc4MTgsIDE3ODI5LCAxNzgzNiwgCi0gICAgMTc4NDEsIDE3ODQ1LCAxNzg0OSwgMTc4NTIsIDE3ODYwLCAxNzg2NSwgMTc4NzIsIDE3ODc5LCAxNzg4NSwgMTc4OTAsIAotICAgIDE3ODk1LCAxNzkwMCwgMTc5MDcsIDE3OTE3LCAxNzkyNSwgMTc5MzAsIDE3OTM3LCAxNzk0MywgMTc5NTIsIDE3OTYyLCAKLSAgICAxNzk3MiwgMTc5ODYsIDE4MDAwLCAxODAxNCwgMTgwMjgsIDE4MDQzLCAxODA1OCwgMTgwNzUsIDE4MDkzLCAxODEwNiwgCi0gICAgMTgxMTIsIDE4MTE3LCAxODEyMiwgMTgxMjYsIDE4MTM0LCAxODEzOSwgMTgxNDcsIDE4MTUzLCAxODE1OSwgMTgxNjQsIAotICAgIDE4MTY5LCAxODE3MywgMTgxNzgsIDE4MTgyLCAxODE4NywgMTgxOTEsIDE4MjAyLCAxODIwOCwgMTgyMTMsIDE4MjE4LCAKLSAgICAxODIyNSwgMTgyMzAsIDE4MjM0LCAzNjkwLCAxODIzOSwgMTgyNDUsIDE4MjUyLCAxNTY4OCwgMTgyNTgsIDE4MjYyLCAKLSAgICAxODI2OCwgMTgyNzMsIDE4Mjc4LCAxODI4MiwgMTgyODgsIDE4MjkzLCAxODI5OCwgMTgzMDUsIDE4MzEwLCAxNDI3NSwgCi0gICAgMTgzMTQsIDE4MzE5LCAxODMyMywgMTgzMjgsIDE4MzM0LCAxODM0MCwgMTgzNDcsIDE4MzU3LCAxODM2NSwgMTgzNzIsIAotICAgIDE4Mzc3LCAxODM4MSwgMTgzOTAsIDE4Mzk4LCAxODQwNSwgMTg0MTIsIDE4NDE4LCAxODQyMywgMTg0MjksIDE4NDM0LCAKLSAgICAxODQzOSwgMTg0NDUsIDE4NDUwLCAxODQ1NiwgMTg0NjEsIDE4NDY3LCAxODQ3MywgMTg0ODAsIDE4NDg2LCAxODQ5MSwgCi0gICAgMTg0OTYsIDk4NzUsIDE4NTA1LCAxODUwOCwgMTg1MTYsIDE4NTIyLCAxODUyNywgMTg1MzIsIDE4NTQyLCAxODU0OSwgCi0gICAgMTg1NTUsIDE4NTYwLCAxODU2NSwgMTg1NzEsIDE4NTc2LCAxODU4MiwgMTg1ODcsIDE4NTkzLCAxODU5OSwgMTg2MDQsIAotICAgIDE4NjEyLCAxODYxOSwgMTg2MjQsIDE4NjI5LCAxODYzNSwgMTg2NDAsIDE4NjQ0LCAxODY1MywgMTg2NjQsIDE4NjcxLCAKLSAgICAxODY3OSwgMTg2ODYsIDE4NjkxLCAxODY5NiwgMTg3MDIsIDE4NzA3LCAxODcxNSwgMTg3MjEsIDE4NzI3LCAxODczNCwgCi0gICAgMTg3NDAsIDE4NzQ1LCAxODc0OSwgMTg3NTUsIDE4NzYwLCAxODc2NSwgMTg3NjksIDE4Nzc0LCAxNDI2LCA4MTE3LCAyOTM2LCAKLSAgICAxODc3OCwgMTg3ODIsIDE4Nzg2LCAxODc5MCwgMTg3OTQsIDE4Nzk4LCAxODgwMSwgMTg4MDYsIDE4ODEzLCAxODgyMSwgCi0gICAgMTU2OTksIDE4ODI4LCAxODgzOCwgMTg4NDYsIDE4ODUzLCAxODg2MSwgMTg4NzEsIDE4ODgwLCA5MjIwLCAxODg5MywgCi0gICAgMTg4OTgsIDE4OTAzLCAxODkxMSwgMTg5MTgsIDE0MzcxLCAxNDM4MCwgMTg5MjUsIDE4OTM1LCAxODk1MCwgMTg5NTYsIAotICAgIDE4OTYzLCAxODk3MCwgMTg5NzYsIDE4OTgyLCAxODk5MywgMTkwMDEsIDE5MDA5LCAxOTAxOSwgMTkwMjksIDE1NzA0LCAKLSAgICAxOTAzOCwgMTkwNDQsIDE5MDUwLCAxOTA1OCwgMTkwNjYsIDE5MDcxLCAxOTA4MCwgMTkwODgsIDE5MTAwLCAxOTExMCwgCi0gICAgMTkxMjAsIDE5MTMwLCAxOTEzOSwgMTkxNTEsIDE5MTYxLCAxOTE3MSwgMTkxODIsIDE5MTg3LCAxOTE5OSwgMTkyMTEsIAotICAgIDE5MjIzLCAxOTIzNSwgMTkyNDcsIDE5MjU5LCAxOTI3MSwgMTkyODMsIDE5Mjk1LCAxOTMwNywgMTkzMTgsIDE5MzMwLCAKLSAgICAxOTM0MiwgMTkzNTQsIDE5MzY2LCAxOTM3OCwgMTkzOTAsIDE5NDAyLCAxOTQxNCwgMTk0MjYsIDE5NDM4LCAxOTQ0OSwgCi0gICAgMTk0NjEsIDE5NDczLCAxOTQ4NSwgMTk0OTcsIDE5NTA5LCAxOTUyMSwgMTk1MzMsIDE5NTQ1LCAxOTU1NywgMTk1NjksIAotICAgIDE5NTgwLCAxOTU5MiwgMTk2MDQsIDE5NjE2LCAxOTYyOCwgMTk2NDAsIDE5NjUyLCAxOTY2NCwgMTk2NzYsIDE5Njg4LCAKLSAgICAxOTcwMCwgMTk3MTEsIDE5NzIzLCAxOTczNSwgMTk3NDcsIDE5NzU5LCAxOTc3MSwgMTk3ODMsIDE5Nzk1LCAxOTgwNywgCi0gICAgMTk4MTksIDE5ODMxLCAxOTg0MiwgMTk4NTQsIDE5ODY2LCAxOTg3OCwgMTk4OTAsIDE5OTAyLCAxOTkxNCwgMTk5MjYsIAotICAgIDE5OTM4LCAxOTk1MCwgMTk5NjIsIDE5OTczLCAxOTk4NSwgMTk5OTcsIDIwMDA5LCAyMDAyMSwgMjAwMzMsIDIwMDQ1LCAKLSAgICAyMDA1NywgMjAwNjksIDIwMDgxLCAyMDA5MywgMjAxMDQsIDIwMTE2LCAyMDEyOCwgMjAxNDAsIDIwMTUyLCAyMDE2NSwgCi0gICAgMjAxNzgsIDIwMTkxLCAyMDIwNCwgMjAyMTcsIDIwMjMwLCAyMDI0MywgMjAyNTUsIDIwMjY4LCAyMDI4MSwgMjAyOTQsIAotICAgIDIwMzA3LCAyMDMyMCwgMjAzMzMsIDIwMzQ2LCAyMDM1OSwgMjAzNzIsIDIwMzg1LCAyMDM5NywgMjA0MTAsIDIwNDIzLCAKLSAgICAyMDQzNiwgMjA0NDksIDIwNDYyLCAyMDQ3NSwgMjA0ODgsIDIwNTAxLCAyMDUxNCwgMjA1MjcsIDIwNTM5LCAyMDU1MiwgCi0gICAgMjA1NjUsIDIwNTc4LCAyMDU5MSwgMjA2MDQsIDIwNjE3LCAyMDYzMCwgMjA2NDMsIDIwNjU2LCAyMDY2OSwgMjA2ODEsIAotICAgIDIwNjk0LCAyMDcwNywgMjA3MjAsIDIwNzMzLCAyMDc0NiwgMjA3NTksIDIwNzcyLCAyMDc4NSwgMjA3OTgsIDIwODExLCAKLSAgICAyMDgyMywgMjA4MzYsIDIwODQ5LCAyMDg2MiwgMjA4NzUsIDIwODg4LCAyMDkwMSwgMjA5MTQsIDIwOTI3LCAyMDk0MCwgCi0gICAgMjA5NTMsIDIwOTY1LCAyMDk3NiwgMjA5ODksIDIxMDAyLCAyMTAxNSwgMjEwMjgsIDIxMDQxLCAyMTA1NCwgMjEwNjcsIAotICAgIDIxMDgwLCAyMTA5MywgMjExMDYsIDIxMTE4LCAyMTEzMSwgMjExNDQsIDIxMTU3LCAyMTE3MCwgMjExODMsIDIxMTk2LCAKLSAgICAyMTIwOSwgMjEyMjIsIDIxMjM1LCAyMTI0OCwgMjEyNjAsIDIxMjczLCAyMTI4NiwgMjEyOTksIDIxMzEyLCAyMTMyNSwgCi0gICAgMjEzMzgsIDIxMzUxLCAyMTM2NCwgMjEzNzcsIDIxMzkwLCAyMTQwMiwgMjE0MTUsIDIxNDI4LCAyMTQ0MSwgMjE0NTQsIAotICAgIDIxNDY3LCAyMTQ4MCwgMjE0OTMsIDIxNTA2LCAyMTUxOSwgMjE1MzIsIDIxNTQ0LCAyMTU1NywgMjE1NzAsIDIxNTgzLCAKLSAgICAyMTU5NiwgMjE2MDksIDIxNjIyLCAyMTYzNSwgMjE2NDgsIDIxNjYxLCAyMTY3NCwgMjE2ODYsIDIxNjk5LCAyMTcxMiwgCi0gICAgMjE3MjUsIDIxNzM4LCAyMTc1MSwgMjE3NjQsIDIxNzc3LCAyMTc5MCwgMjE4MDMsIDIxODE2LCAyMTgyOCwgMjE4NDEsIAotICAgIDIxODU0LCAyMTg2NywgMjE4ODAsIDIxODkzLCAyMTkwNiwgMjE5MTksIDIxOTMyLCAyMTk0NSwgMjE5NTgsIDIxOTcwLCAKLSAgICAyMTk4MywgMjE5OTYsIDIyMDA5LCAyMjAyMiwgMjIwMzUsIDIyMDQ4LCAyMjA2MSwgMjIwNzQsIDIyMDg3LCAyMjEwMCwgCi0gICAgMjIxMTIsIDIyMTI1LCAyMjEzOCwgMjIxNTEsIDIyMTY0LCAyMjE3NywgMjIxOTAsIDIyMjAzLCAyMjIxNiwgMjIyMjksIAotICAgIDIyMjQyLCAyMjI1NCwgMjIyNjcsIDIyMjgwLCAyMjI5MywgMjIzMDYsIDIyMzE5LCAyMjMzMiwgMjIzNDUsIDIyMzU4LCAKLSAgICAyMjM3MSwgMjIzODQsIDIyMzk2LCAyMjQwNywgMjI0MTYsIDIyNDI0LCAyMjQzMiwgMjI0MzksIDIyNDQ1LCAyMjQ0OSwgCi0gICAgMjI0NTUsIDIyNDYxLCAyMjQ2OSwgMjI0NzQsIDIyNDgwLCAyMjQ4NSwgMjI0ODksIDIyNDk4LCA5NjU0LCAyMjUwOSwgCi0gICAgMjI1MTYsIDIyNTI0LCAyMjUzMSwgMjI1MzgsIDExOTM2LCAyMjU0NSwgMjI1NTIsIDIyNTYxLCAyMjU2NiwgMjI1NzEsIAotICAgIDgxNDUsIDIyNTc4LCAyMjU4MywgMjI1ODYsIDIyNTkxLCAyMjU5OSwgMjI2MDYsIDIyNjEzLCAyMjYyMCwgMjI2MjYsIAotICAgIDIyNjM1LCAyMjY0NCwgMjI2NTMsIDIyNjU5LCAyMjY2OCwgMjI2NzIsIDIyNjc4LCAyMjY4MywgMjI2OTMsIDIyNzAwLCAKLSAgICAyMjcwNiwgMjI3MTQsIDIyNzIwLCAyMjcyNywgMjI3MzcsIDIyNzQ2LCAyMjc1MCwgMjI3NTcsIDIyNzYxLCAyMjc2NiwgCi0gICAgMjI3NzIsIDIyNzgwLCAyMjc4NCwgMjI3OTQsIDE1NzE0LCAyMjgwMywgMjI4MDksIDIyODEzLCAyMjgyMiwgMjI4MzIsIAotICAgIDE1NzE5LCAyMjgzOCwgMjI4NDUsIDIyODU2LCAyMjg2NCwgMjI4NzQsIDIyODgzLCAyMjg5MSwgOTQxMCwgMjI4OTksIAotICAgIDIyOTA0LCAyMjkxMCwgMjI5MTUsIDIyOTE5LCAyMjkyMywgMjI5MjcsIDEwMzc5LCAyMjkzMiwgMjI5NDAsIDIyOTQ3LCAKLSAgICAyMjk1NiwgMjI5NjMsIDIyOTcwLCAyMjk3NiwgMTE4NTYsIDIyOTgzLCAyMjk4OSwgMjI5OTMsIDIyOTk5LCAyMzAwNiwgCi0gICAgMjMwMTIsIDIzMDIwLCAyMzAyNiwgMjMwMzMsIDIzMDM5LCAyMzA0NSwgMjMwNTQsIDIzMDU4LCAyMzA2NiwgMjMwNzUsIAotICAgIDIzMDgyLCAyMzA4NywgMjMwOTEsIDIzMTAyLCAyMzEwNywgMjMxMTIsIDIzMTE3LCAyMzEzMCwgODM0OSwgMjMxMzQsIAotICAgIDIzMTQwLCAyMzE0NSwgMjMxNTMsIDIzMTU3LCAyMzE2NCwgMjMxNzMsIDIzMTc4LCAxNTk5MCwgMjMxODYsIDIzMTkwLCAKLSAgICAyMzIwMiwgMjMyMDcsIDIzMjExLCAyMzIxNCwgMjMyMjAsIDIzMjI2LCAyMzIzMiwgMjMyMzcsIDIzMjQxLCAyMzI0NCwgCi0gICAgMjMyNTUsIDIzMjYwLCA5OTI2LCAyMzI2NywgMjMyNzIsIDEyNDMsIDk5MzEsIDIzMjc3LCAyMzI4MiwgMjMyODcsIDIzMjkyLCAKLSAgICAyMzI5NywgMjMzMDIsIDIzMzA3LCAyMzMxMiwgMjMzMTcsIDIzMzIyLCAyMzMyNywgMjMzMzIsIDIzMzM4LCAyMzM0MywgCi0gICAgMjMzNDgsIDIzMzUzLCAyMzM1OCwgMjMzNjMsIDIzMzY4LCAyMzM3MywgMjMzNzgsIDIzMzgzLCAyMzM4OSwgMjMzOTUsIAotICAgIDIzNDAwLCAyMzQwNSwgMjM0MTAsIDIzNDE1LCAyMzQyMCwgMjM0MjUsIDIzNDMwLCAyMzQzNSwgMjM0NDAsIDIzNDQ2LCAKLSAgICAyMzQ1MSwgMjM0NTYsIDIzNDYxLCAyMzQ2NywgMjM0NzMsIDIzNDc4LCAyMzQ4MywgMjM0ODgsIDIzNDkzLCAyMzQ5OCwgCi0gICAgMjM1MDMsIDIzNTA4LCAyMzUxMywgMjM1MTksIDIzNTI0LCAyMzUyOSwgMjM1MzQsIDIzNTM5LCAyMzU0NSwgMjM1NTAsIAotICAgIDIzNTU1LCAyMzU1OSwgMTM0LCAyMzU2NywgMjM1NzEsIDIzNTc1LCAyMzU3OSwgMjM1ODQsIDIzNTg4LCAxNDI4MSwgMjM0NiwgCi0gICAgMjM1OTIsIDIzNTk3LCAyMzYwMSwgMjM2MDYsIDIzNjEwLCAyMzYxNSwgMjM2MTksIDIzNjI1LCAyMzYzMCwgMjM2MzQsIAotICAgIDIzNjM4LCAyMzY0NiwgMjM2NTAsIDIzNjU0LCAyMzY1OSwgMjM2NjQsIDIzNjY4LCAyMzY3NCwgMjM2NzksIDIzNjgzLCAKLSAgICAyMzY4OCwgMjM2OTMsIDIzNjk3LCAyMzcwNCwgMjM3MTEsIDIzNzE4LCAyMzcyMiwgMjM3MjYsIDIzNzMxLCAyMzczNSwgCi0gICAgMjM3MzgsIDIzNzQ0LCAyMzc1NywgMjM3NjIsIDIzNzY4LCAyMzc3NywgMjM3ODIsIDEwMTUxLCAyMzc4NywgMjM3OTYsIAotICAgIDIzODAxLCAyMzgwNCwgMjc1MSwgMjc1NiwgMjM4MDgsIDIzODE0LCAyMzgyMCwgNzUzOCwgMjM4MjUsIDIzODMwLCAyMzgzNSwgCi0gICAgMjM4NDEsIDIzODQ2LCAxNTEzNCwgMjM4NTEsIDIzODU2LCAyMzg2MSwgMjM4NjYsIDIzODcyLCAyMzg3NywgMjM4ODIsIAotICAgIDIzODg4LCAyMzg5MywgMjM4OTcsIDIzOTAyLCAyMzkwNywgMjM5MTIsIDIzOTE3LCAyMzkyMiwgMjM5MjYsIDIzOTMxLCAKLSAgICAyMzkzNSwgMjM5NDAsIDIzOTQ1LCAyMzk1MCwgMjM5NTUsIDIzOTU5LCAyMzk2NCwgMjM5NjgsIDIzOTczLCAyMzk3OCwgCi0gICAgMjM5ODMsIDIzODk4LCAyOTQ1LCAyMzkwMywgMjM5ODgsIDIzOTk2LCAyNDAwMywgMTA0NzMsIDI0MDE1LCAyNDAyMywgCi0gICAgMjQwMzMsIDI0MDUxLCAyNDA3MCwgMjQwNzksIDI0MDg3LCAyMzkwOCwgMjQwOTQsIDI0MDk5LCAyNDEwNywgMjM5MTMsIAotICAgIDI0MTEyLCAyNDExNywgMjQxMjUsIDI0MTMwLCAyMzkxOCwgMjQxMzUsIDI0MTQzLCAyNDE0OCwgMjQxNTIsIDI0MTU5LCAKLSAgICAyNDE2NSwgMjQxNzQsIDI0MTgyLCAyNDE4NiwgMjQxODksIDI0MTk2LCAyNDIwMCwgMjQyMDQsIDI0MjA5LCAyNDIxNSwgCi0gICAgMjQyMjIsIDI0MjI3LCA5NDM3LCAxNzQyLCAxNzQ3LCAyNDIzMSwgMjQyMzcsIDI0MjQzLCAyNDI0OCwgMjQyNTIsIDI0MjU2LCAKLSAgICAyNDI2MCwgMjQyNjQsIDI0MjY4LCAyNDI3MiwgMjQyNzYsIDI0MjgwLCAyNDI4MywgMjQyODksIDI0Mjk2LCAyNDMwNCwgCi0gICAgMjQzMTAsIDI0MzE2LCAyNDMyMSwgMjQzMjYsIDI0MzMyLCAyNDMzNiwgMjQzNDEsIDE1MDQwLCAxNTA0NywgMjQzNDgsIAotICAgIDI0MzYwLCAyNDM2MywgMjQzNzAsIDI0Mzc0LCAxNzg4MSwgMjQzODEsIDI0Mzg5LCAyNDQwMCwgMjQ0MDksIDI0NDIyLCAKLSAgICAyNDQzMiwgMjQ0NDYsIDI0NDU4LCAyNDQ3MiwgMjQ0ODUsIDI0NDk3LCAyNDUwNywgMjQ1MTksIDI0NTI1LCAyNDU0MCwgCi0gICAgMjQ1NjQsIDI0NTgyLCAyNDYwMSwgMjQ2MTQsIDI0NjI4LCAyNDY0NiwgMjQ2NjIsIDI0Njc5LCAyNDY5NywgMjQ3MDgsIAotICAgIDI0NzI3LCAyNDc0NCwgMjQ3NjQsIDI0NzgyLCAyNDc5NCwgMjQ4MDgsIDI0ODIyLCAyNDgzNCwgMjQ4NTEsIDI0ODcwLCAKLSAgICAyNDg4OCwgMjQ5MDAsIDI0OTE4LCAyNDkzNywgMTU4NTgsIDI0OTUwLCAyNDk3MCwgMjQ5ODIsIDExNDQ4LCAyNDk5NCwgCi0gICAgMjQ5OTksIDI1MDA0LCAyNTAwOSwgMjUwMTUsIDI1MDIwLCAyNTAyNCwgMjUwMzEsIDI1MDM3LCAyNDM3LCAyNTA0MSwgCi0gICAgMjUwNDcsIDI1MDUxLCAyNTA1NCwgMjUwNTgsIDI1MDYxLCAyNTA2OSwgMjUwNzUsIDIzOTM2LCAyNTA3OSwgMjUwODgsIAotICAgIDI1MDk5LCAyNTEwNSwgMjUxMTEsIDI1MTI2LCAyNTEzNSwgMjUxNDMsIDI1MTUwLCAyNTE1NSwgMjUxNTksIDI1MTY2LCAKLSAgICAyNTE3MiwgMjUxODEsIDI1MTg5LCAyNTE5NiwgMjUyMDYsIDI1MjE1LCAyNTIyNSwgMjUyMzAsIDI1MjM5LCAyNTI0OCwgCi0gICAgMjUyNTksIDI1MjcwLCA0MTkyLCAyNTI4MCwgMjUyODQsIDI1Mjk0LCAyNTMwMiwgMjUzMTIsIDI1MzIzLCAyNTMyOCwgCi0gICAgMjUzMzgsIDI1MzQ2LCAyNTM1MywgMjUzNTksIDI1MzY2LCAyNTM3MSwgMjM5NDYsIDI1Mzc1LCAyNTM4NCwgMjUzODgsIAotICAgIDI1MzkxLCAyNTM5NiwgMjU0MDQsIDI1NDExLCAyNTQyMCwgMjU0MjgsIDI1NDM2LCAyNTQ0NCwgMjU0NTQsIDI1NDYzLCAKLSAgICAyNTQ2OSwgMjU0NzUsIDI1NDc5LCAyMzk1MSwgMjM5NTYsIDI1NDgzLCAyNTQ5MywgMjU1MDMsIDI1NTEzLCAyNTUyMSwgCi0gICAgMjU1MjgsIDI1NTM4LCAyNTU0NiwgMjU1NTQsIDI1NTYwLCAyNTU2OCwgODY1LCAyNTU3NywgMTYwNjUsIDYxNSwgMjU1OTEsIAotICAgIDI1NjAwLCAyNTYwOCwgMjU2MTksIDI1NjMwLCAyNTY0MCwgMjU2NDksIDI1NjYxLCAyNTY3MCwgMjU2NzksIDI1Njg2LCAKLSAgICAyNTY5MiwgMjU3MDIsIDI1NzExLCAyNTcyMCwgMjU3MjgsIDI1NzM4LCAyNTc0NiwgMjU3NTQsIDk4OTIsIDI1NzYwLCAKLSAgICAyNTc2MywgMjU3NjcsIDI1NzcyLCAyNTc3NywgMjU3ODEsIDEwNTg4LCAyMzk2OSwgMjM5NzQsIDI1Nzg5LCAyNTc5NSwgCi0gICAgMjU4MDEsIDI1ODA2LCAyNTgxMSwgMjU4MTUsIDI1ODIzLCAyNTgyOSwgMjU4MzUsIDI1ODM5LCAzNjc1LCAyNTg0NywgCi0gICAgMjU4NTIsIDI1ODU3LCAyNTg2MSwgMjU4NjUsIDEwNzAxLCAyNTg3MiwgMjU4ODAsIDI1ODk0LCAyNTkwMSwgMjU5MDcsIAotICAgIDEwNzEwLCAxMDcxNiwgMjU5MTUsIDI1OTIzLCAyNTkzMCwgMjU5MzUsIDI1OTQwLCAyMzk3OSwgMjU5NDYsIDI1OTU3LCAKLSAgICAyNTk2MSwgMjU5NjYsIDI2NDAsIDI1OTcxLCAyNTk4MiwgMjU5ODgsIDI1OTkzLCAyNTk5NywgMjYwMDEsIDI2MDA0LCAKLSAgICAyNjAxMSwgMjYwMTgsIDI2MDI0LCAyNjAzMSwgMjYwMzcsIDI2MDQxLCAyMzk4NCwgMjYwNDYsIDI2MDUwLCAyNjA1NCwgCi0gICAgMTQzMSwgODU0NCwgMjYwNTksIDI2MDY0LCAyNjA2OSwgMjYwNzQsIDI2MDc5LCAyNjA4NCwgMjYwODksIDI2MDk0LCAKLSAgICAyNjA5OSwgMjYxMDQsIDI2MTA5LCAyNjExNCwgMjYxMTksIDI2MTI0LCAyNjEzMCwgMjYxMzUsIDI2MTQwLCAyNjE0NSwgCi0gICAgMjYxNTAsIDI2MTU1LCAyNjE2MCwgMjYxNjYsIDI2MTcxLCAyNjE3NiwgMjYxODEsIDI2MTg2LCAyNjE5MSwgMjYxOTYsIAotICAgIDI2MjAxLCAyNjIwNywgMjYyMTMsIDI2MjE4LCAyNjIyNCwgMjYyMjksIDI2MjM0LCA1LCAyNjI0MCwgMjYyNDQsIDI2MjQ4LCAKLSAgICAyNjI1MiwgMjYyNTcsIDI2MjYxLCAyNjI2NSwgMjYyNjksIDI2MjczLCAyNjI3OCwgMjYyODIsIDI2Mjg3LCAyNjI5MSwgCi0gICAgMjYyOTQsIDI2Mjk4LCAyNjMwMywgMjYzMDcsIDI2MzEyLCAyNjMxNiwgMjYzMjAsIDI2MzI0LCAyNjMyOSwgMjYzMzMsIAotICAgIDI2MzM3LCAyNjM0NywgMjYzNTIsIDI2MzU2LCAyNjM2MCwgMjYzNjUsIDI2MzcwLCAyNjM3OSwgMjYzODQsIDI2Mzg5LCAKLSAgICAyNjM5MywgMjYzOTcsIDI2NDEwLCAyNjQyMiwgMjY0MzEsIDI2NDQwLCAyNjQ0NSwgMjY0NTEsIDI2NDU2LCAyNjQ2MCwgCi0gICAgMjY0NjQsIDI2NDc0LCAyNjQ4MywgMjY0OTEsIDI2NDk3LCAyNjUwMiwgMjY1MDYsIDI2NTEzLCAyNjUyMywgMjY1MzIsIAotICAgIDI2NTQwLCAxMTc3MCwgMjY1NDgsIDI2NTU2LCAyNjU2NSwgMjY1NzQsIDI2NTgyLCAyNjU5MiwgMjY1OTcsIDI2NjAxLCAKLSAgICAyNjYwNSwgMjY2MDgsIDI2NjEwLCAyNjYxNCwgMjY2MTgsIDI2NjIzLCAyNjYyOCwgMjY2MzIsIDI2NjM2LCAyNjYzOSwgCi0gICAgMjY2NDMsIDI2NjQ2LCAyNjY1MCwgMjY2NTMsIDI2NjU2LCAyNjY2MCwgMjY2NjYsIDI2NjcwLCAyNjY3NCwgMjY2NzgsIAotICAgIDI2NjgzLCAyNjY4OCwgMjY2OTMsIDI2Njk3LCAyNjcwMCwgMjY3MDUsIDI2NzExLCAyNjcxNiwgMjY3MjIsIDI2NzI3LCAKLSAgICAyNjczMSwgMjY3MzcsIDI2NzQxLCAyNjc0NSwgMjY3NTAsIDI2NzU0LCAyNjc1OSwgMjY3NjQsIDI2NzY4LCAyNjc3MiwgCi0gICAgMjY3NzksIDI2NzgzLCAyNjc4NiwgMjY3OTAsIDI2Nzk0LCAyNjgwMCwgMjY4MDYsIDI2ODEwLCAyNjgxNCwgMjY4MTksIAotICAgIDI2ODI2LCAyNjgzMiwgMjY4MzYsIDI2ODQ1LCAyNjg0OSwgMjY4NTMsIDI2ODU2LCAyNjg2MiwgMjY4NjcsIDI2ODczLCAKLSAgICAxNDc1LCAxODA2LCAyNjg3OCwgMjY4ODMsIDI2ODg4LCAyNjg5MywgMjY4OTgsIDI2OTAzLCAyNjkwOCwgMjE3NCwgMjIyMCwgCi0gICAgMjY5MTMsIDI2OTE2LCAyNjkyMCwgMjY5MjQsIDI2OTI5LCAyNjkzMywgMTYwNzcsIDI2OTM3LCAyNjk0MiwgMjY5NDcsIAotICAgIDI2OTUxLCAyNjk1NCwgMjY5NTksIDI2OTYzLCAyNjk2OCwgMjY5NzIsIDE2MDgxLCAyNjk3NywgMjY5ODAsIDI2OTgzLCAKLSAgICAyNjk4NywgMjY5OTIsIDI2OTk2LCAyNzAwOSwgMjcwMTMsIDI3MDE2LCAyNzAyNCwgMjcwMzMsIDI3MDQwLCAyNzA0NSwgCi0gICAgMjcwNTEsIDI3MDU3LCAyNzA2NSwgMjcwNzIsIDI3MDc5LCAyNzA4MywgMjcwODcsIDI3MDkxLCAyNzA5NiwgMjcxMDEsIAotICAgIDI3MTA1LCAyNzExMywgMjcxMTgsIDI3MTMwLCAyNzE0MSwgMjcxNDYsIDI3MTUwLCAyNzE1NywgMjcxNjEsIDI3MTY2LCAKLSAgICAyNzE3MiwgMjcxNzUsIDI3MTgwLCAyNzE4NSwgMjcxODksIDI3MTkzLCAyNzE5NiwgMjcyMDIsIDgyNDgsIDIzNTAsIAotICAgIDI3MjA2LCAyNzIxMSwgMjcyMjcsIDEwMTk4LCAyNzI0NywgMjcyNTYsIDI3MjcyLCAyNzI3NiwgMjcyODMsIDI3Mjg2LCAKLSAgICAyNzI5MiwgMjczMDIsIDI3MzA4LCAyNzMxNywgMjczMzIsIDI3MzQ0LCAyNzM1NSwgMjczNjMsIDI3MzcyLCAyNzM3OCwgCi0gICAgMjczODcsIDI3Mzk3LCAyNzQwNywgMjc0MTgsIDI3NDI5LCAyNzQzOSwgMjc0NDgsIDI3NDU1LCAyNzQ2NCwgMjc0NzIsIAotICAgIDI3NDc5LCAyNzQ4NywgMjc0OTQsIDI3NTAxLCAyNzUxNCwgMjc1MjEsIDI3NTI5LCAyNzUzNiwgMjc1NDIsIDI3NTQ3LCAKLSAgICAyNzU1NiwgMjc1NjIsIDI3NTY3LCAyNzU3NSwgMjc1ODIsIDI3NTg5LCAyNTMwNCwgMjc2MDEsIDI3NjEzLCAyNzYyNywgCi0gICAgMjc2MzUsIDI3NjQyLCAyNzY1NCwgMjc2NjMsIDI3NjcyLCAyNzY4MCwgMjc2ODgsIDI3Njk2LCAyNzcwMywgMjc3MDksIAotICAgIDI3NzE4LCAyNzcyNiwgMjc3MzYsIDI3NzQ1LCAyNzc1NSwgMjc3NjQsIDI3NzczLCAyNzc4MSwgMjc3ODYsIDI3NzkwLCAKLSAgICAyNzc5MywgMjc3OTcsIDI3ODAxLCAyNzgwNSwgMjc4MDksIDI3ODEzLCAyNzgxOSwgMjc4MjUsIDI3ODMzLCAxNjEzOSwgCi0gICAgMjc4NDAsIDI3ODQ1LCAyNzg1MiwgMjc4NTgsIDI3ODY1LCAxNjE0NywgMjc4NzIsIDI3ODc1LCAyNzg4NywgMjc4OTUsIAotICAgIDI3OTAxLCAyNzkwNiwgMjc5MTAsIDI3OTIxLCAxMDY1MSwgMjc5MzEsIDI3OTM5LCAyNzk0OSwgMjc5NTgsIDI3OTY1LCAKLSAgICAyNzk3MiwgMjc5ODAsIDI3OTg0LCAxNjE1OCwgMjc5ODcsIDI3OTk0LCAyNzk5OCwgMjgwMDQsIDI4MDA3LCAyODAxNCwgCi0gICAgMjgwMjAsIDI4MDI3LCAyODAzMywgMjgwMzcsIDI4MDQyLCAyODA0NiwgMjgwNTUsIDI4MDYyLCAyODA2OCwgODMwNiwgCi0gICAgMjgwNzUsIDI4MDgzLCAyODA5MCwgMjgwOTYsIDI4MTAxLCAyODEwNywgMjgxMTMsIDI4MTIxLCAyODEyNywgMjgxMzEsIAotICAgIDI4MTM0LCAyODEzNiwgMjc3OTgsIDI4MTQ1LCAyODE1MSwgMjgxNTcsIDI4MTY3LCAyODE3MiwgMjgxNzksIDI4MTg1LCAKLSAgICAyODE5MCwgMjgxOTUsIDI4MjAwLCAyODIwNCwgMjgyMDksIDI4MjE2LCAyODIyMiwgMjgyMzEsIDI4MjM1LCAyODI0MiwgCi0gICAgMjgyNDgsIDI4MjU3LCA0Mzc4LCAyODI2MywgMjgyNjksIDI4Mjc0LCAyODI4MSwgMjgyOTIsIDI4Mjk3LCAyODMwMSwgCi0gICAgMjgzMTEsIDI4MzE3LCAyODMyMSwgMjgzMjYsIDI4MzM2LCAyODM0NSwgMjgzNDksIDI4MzU2LCAyODM2NCwgMjgzNzEsIAotICAgIDI4Mzc3LCAyODM4MiwgMjgzOTAsIDI4Mzk3LCAyODQwMiwgMjg0MDksIDI4NDIxLCAyODQzMCwgMjg0MzQsIDE0MjEyLCAKLSAgICAyODQ0MiwgMjg0NTIsIDI4NDU2LCAyNzAyMCwgMjg0NjcsIDI4NDcyLCAyODQ3NiwgMjg0ODMsIDI4NDkwLCAyMzY3MCwgCi0gICAgMjc3MjMsIDI4NDk1LCAyODQ5OSwgMjg1MDIsIDI0NzE0LCAyODUwNywgMjg1MjEsIDI4NTM3LCAyODU1NSwgMjg1NzQsIAotICAgIDI4NTkxLCAyODYwOSwgMjQ3MzMsIDI4NjI2LCAyODY0NiwgMjQ3NTAsIDI4NjU4LCAyODY3MCwgMTcxNzgsIDI4NjgyLCAKLSAgICAyNDc3MCwgMjg2OTYsIDI4NzA4LCAxMTQ2MSwgMjg3MjIsIDI4NzI3LCAyODczMiwgMjg3MzcsIDI4NzQzLCAyODc0OSwgCi0gICAgMjg3NTUsIDI4NzU5LCAyODc2NywgMjg3NzQsIDI4Nzc5LCAyODc4OSwgMjg3OTUsIDExMDU5LCAyODgwMSwgMjg4MDMsIAotICAgIDI4ODA4LCAyODgxNiwgMjg4MjAsIDI4MjEyLCAyODgyNiwgMjg4MzMsIDEyNjAxLCAxMjYxMSwgMjg4NDAsIDI4ODUwLCAKLSAgICAyODg1NSwgMjg4NTksIDI4ODYyLCAyODg2OCwgMjg4NzYsIDI4ODg4LCAyODg5OCwgMjg5MTQsIDI4OTI3LCAyODk0MSwgCi0gICAgMTcxOTYsIDI4OTU1LCAyODk2MiwgMjg5NjYsIDI4OTY5LCAyODk3NCwgMjg5NzgsIDI4OTg1LCAyODk5MiwgMjg5OTksIAotICAgIDI5MDA5LCAyOTAxNCwgMjkwMTksIDI5MDI0LCAyOTAzMiwgMjkwNDAsIDI5MDQ1LCAyOTA1NCwgMjkwNTksIDMzNTMsIAotICAgIDI5MDYzLCAyOTA2NiwgMjkwNjksIDI5MDc0LCAyOTA4MSwgMjkwODYsIDI5MTAyLCAyOTExMCwgMjkxMTgsIDk5NjYsIAotICAgIDI5MTI2LCAyOTEzMSwgMjkxMzUsIDI5MTQxLCAyOTE0NiwgMjkxNTIsIDI5MTU1LCAyOTE2MSwgMjkxNzMsIDI5MTgxLCAKLSAgICAyOTE4OCwgMjkxOTQsIDI5MjAxLCAyOTIxMiwgMjkyMjYsIDI5MjM5LCAyOTI0NSwgMjkyNTQsIDI5MjYwLCAyOTI2OSwgCi0gICAgMjkyODEsIDI5MjkyLCAyOTMwMiwgMjkzMTEsIDI5MzIwLCAyOTMyOCwgMjkzMzksIDgyODgsIDI5MzQ2LCAyOTM1MywgCi0gICAgMjkzNTksIDI5MzY0LCAyOTM3MCwgMjkzNzcsIDI5Mzg3LCAyOTM5NywgMjk0MDYsIDI5NDEyLCAyOTQxOSwgMjk0MjQsIAotICAgIDI5NDMyLCAyOTQzOSwgMjk0NDcsIDI5NDU1LCAyOTQ2NywgNjU2MywgOTk1LCAyOTQ3NCwgMjk0ODMsIDI5NDkxLCAyOTQ5NywgCi0gICAgMjk1MDMsIDI5NTA4LCAyOTUxMiwgMjk1MTUsIDI5NTIxLCAyOTUyOCwgMjk1MzMsIDI5NTM4LCAyOTU0MywgMjk1NDcsIAotICAgIDI5NTU5LCAyOTU3MCwgMjk1NzksIDI5NTg3LCAxNjMyMywgMjk1OTIsIDI5NTk3LCAyOTYwMywgMjk2MDksIDEyNTk0LCAKLSAgICA5MDU4LCAyOTYxNCwgMjk2MTgsIDI5NjIyLCAyOTYyNSwgMjk2MjgsIDI5NjM0LCAyOTY0MiwgMjk2NTAsIDI5NjU0LCAKLSAgICAyOTY1OCwgMjk2NjMsIDI5NjY2LCAyOTY3NSwgMjk2NzksIDI5NjgyLCAyOTY5MCwgMjk3MDEsIDI5NzA1LCAyOTcxMSwgCi0gICAgMjk3MTcsIDI5NzIxLCAyOTcyNywgMjk3MzUsIDI5NzU3LCAyOTc4MSwgMjk3OTAsIDI5Nzk3LCAyOTgwNCwgMjk4MTAsIAotICAgIDI5ODE4LCAyOTgyNCwgMjk4MjksIDI5ODQwLCAyOTg1OCwgMjk4NjUsIDI5ODczLCAyOTg3NywgMjk4ODIsIDI5ODkxLCAKLSAgICAyOTkwNCwgMjk5MTIsIDI5OTI0LCAyOTkzNSwgMjk5NDYsIDI5OTU2LCAyOTk3MCwgMjk5NzksIDI5OTg3LCAyOTk5OSwgCi0gICAgMTAyMTUsIDMwMDEwLCAzMDAyMSwgMzAwMzMsIDMwMDQzLCAzMDA1MiwgMzAwNTcsIDMwMDYxLCAzMDA2OSwgMzAwODAsIAotICAgIDMwMDkwLCAzMDA5NSwgMzAwOTksIDMwMTAyLCAzMDEwNSwgMzAxMTMsIDMwMTIxLCAzMDEzMCwgMzAxNDAsIDMwMTQ5LCAKLSAgICAzMDE1NSwgMzAxNjksIDI3MDIsIDMwMTkxLCAzMDIwMiwgMzAyMTEsIDMwMjIxLCAzMDIzMywgMzAyNDIsIDMwMjUxLCAKLSAgICAzMDI2MSwgMzAyNjksIDMwMjc3LCAzMDI4NiwgMzAyOTEsIDMwMzAyLCAzMDMwNywgMzAzMTgsIDMwMzIyLCAzMDMzMiwgCi0gICAgMzAzNDEsIDMwMzQ5LCAzMDM1OSwgMzAzNjksIDMwMzc3LCAzMDM4NiwgMzAzOTMsIDMwNDAxLCAzMDQwOCwgMzA0MTcsIAotICAgIDMwNDI2LCAzMDQzMCwgMzA0MzgsIDMwNDQ1LCAzMDQ1MywgMzA0NjAsIDMwNDcxLCAzMDQ4NiwgMzA0OTMsIDMwNDk5LCAKLSAgICAzMDUwOSwgMzA1MTgsIDMwNTI0LCAzMDUzNSwgMzA1MzksIDMwNTQ2LCAzMDU1MCwgMzA1NTYsIDE1MjY1LCAzMDU2MiwgCi0gICAgMzA1NjYsIDMwNTcxLCAzMDU3NywgMzA1ODQsIDMwNTg4LCAzMDU5MiwgMzA2MDAsIDMwNjA4LCAzMDYxNCwgMzA2MjMsIAotICAgIDMwNjMwLCAzMDYzNSwgMzA2NDAsIDMwNjUwLCAyNTM3MywgMzA2NTQsIDMwNjU3LCAzMDY2MiwgMzA2NjcsIDMwNjcyLCAKLSAgICAzMDY3NywgMzA2ODIsIDMwNjg3LCAzMDY5MiwgMzA2OTcsIDMwNzAzLCAzMDcwOCwgMzA3MTMsIDMwNzE5LCAxMTk5LCA2NjAsIAotICAgIDMwNzI0LCAzMDczMywgMjM5OCwgMzA3NDAsIDMwNzQ1LCAzMDc0OSwgMzA3NTUsIDEyNDgsIDU3OCwgMjkwLCAzMDc2MCwgCi0gICAgMzA3NjksIDMwNzc3LCAzMDc4NiwgMzA3OTQsIDMwODA1LCAzMDgxMywgMzA4MjIsIDMwODMwLCAzMDgzNSwgMTA3OTcsIAotICAgIDMwODM5LCAzMDg0NywgMzA4NTUsIDMwODYwLCAxNjA5NCwgMzgyNCwgMzA4NjYsIDMwODcyLCAzMDg3OCwgNjE0OCwgCi0gICAgMzA4ODMsIDMwODg3LCAzMDg5MywgMzA4OTcsIDMwOTAzLCAzMDkwOCwgMzA5MTUsIDE0NDEsIDMwOTIxLCAzMDkyOCwgCi0gICAgMTM0OCwgNjE1NiwgMzA5MzIsIDMwOTQyLCAzMDk1MCwgMzA5NTYsIDMwOTY2LCAzMDk3NSwgMzA5ODMsIDMwOTg5LCAKLSAgICAzMDk5NywgMzEwMDQsIDEyMTM2LCAzMTAxMCwgMzEwMTcsIDMxMDIyLCAzMTAyOSwgMTQ5NCwgMjE5LCAyMTczLCAzMTAzNSwgCi0gICAgMzEwNDEsIDMxMDQ4LCAzMTA1OSwgMzEwNzAsIDMxMDc4LCAzMTA4NSwgMzEwOTUsIDMxMTA0LCAzMTExMiwgMzExMjEsIAotICAgIDMxMTI4LCAzMTEzNSwgMzExNDgsIDMxMTU1LCAzMTE2MSwgMzExNzIsIDMxMTkxLCAxMjUzLCAzMTE5NiwgMzEyMDEsIAotICAgIDMxMjA5LCAzNzQyLCAzMTIxMywgMzEyMTgsIDMxMjIyLCAzMTIyNiwgMTQ0NSwgMjY2MzcsIDMxMjM2LCAzMTI0MCwgCi0gICAgMzEyNDUsIDMxMjQ5LCAzNjE5LCAzMTI1NSwgMzEyNjMsIDMxMjcwLCAzMTI4MSwgMzEyODksIDMxMjk3LCAzNzQzLCAzNDYsIAotICAgIDMxMzAyLCAzMTMxMCwgMzEzMTgsIDMxMzI1LCAzMTMzMSwgMzEzMzYsIDIyNDIsIDExNjI4LCAzMTM0MywgMzEzNDksIAotICAgIDI4MDM4LCAyODI4NywgMzEzNTUsIDU3NCwgMTA2LCAzMTM1OSwgMzEzNjMsIDMxMzY5LCA2NjMsIDk4NDEsIDMxMzc0LCAKLSAgICAzMTM4MSwgMzEzODcsIDMxMzkxLCAxNjM5LCAzMTM5NCwgMzEzOTgsIDE2NTc2LCAzMTQwMSwgMzE0MDYsIDMxNDEzLCAKLSAgICAzMTQxOSwgMzE0MjQsIDMxNDMyLCAzMTQzOSwgMzE0NDUsIDI0MTMyLCAzMTQ0OSwgMzE0NTMsIDMxNDU3LCAzODEzLCAKLSAgICAxODE4MCwgMzE0NjEsIDMxNDY2LCAzMTQ3MCwgMzE0NzMsIDMxNDgxLCAzMTQ4OSwgMzE0OTQsIDMxNTAyLCAzMTUwNSwgCi0gICAgMzE1MTIsIDMxNTIyLCAzMTUzNCwgMzE1MzksIDMxNTQzLCAzMTU1MSwgMzE1NTgsIDMxNTY0LCAzMTU3MSwgMzE1NzgsIAotICAgIDMxNTgxLCAzMTU4NSwgMzE1ODksIDE0NDksIDMxNTk5LCAzMTYwMSwgMzE2MDYsIDMxNjEyLCAzMTYxOCwgMzE2MjMsIAotICAgIDMxNjI4LCAzMTYzMywgMzE2MzgsIDMxNjQzLCAzMTY0OCwgMzE2NTMsIDMxNjU4LCAzMTY2MywgMzE2NjgsIDMxNjczLCAKLSAgICAzMTY3OCwgMzE2ODMsIDMxNjg4LCAzMTY5NCwgMzE3MDAsIDMxNzA2LCAzMTcxMiwgMzE3MTcsIDMxNzIyLCAzMTcyNywgCi0gICAgMzE3MzMsIDMxNzM4LCAzMTc0MywgMzE3NDgsIDMxNzU0LCAzMTc1OSwgMzE3NjUsIDMxNzcwLCAzMTc3NSwgMzE3ODAsIAotICAgIDMxNzg1LCAzMTc5MSwgMzE3OTYsIDMxODAyLCAzMTgwNywgMzE4MTIsIDMxODE3LCAzMTgyMiwgMzE4MjgsIDMxODMzLCAKLSAgICAzMTgzOSwgMzE4NDQsIDMxODQ5LCAzMTg1NCwgMzE4NTksIDMxODY0LCAzMTg2OSwgMzE4NzQsIDMxODc5LCAzMTg4NCwgCi0gICAgMzE4OTAsIDMxODk2LCAzMTkwMiwgMzE5MDcsIDMxOTEyLCAzMTkxNywgMzE5MjIsIDMxOTI4LCAzMTkzNCwgMzE5NDAsIAotICAgIDMxOTQ2LCAzMTk1MiwgMzE5NTgsIDMxOTYzLCAzMTk2OSwgMzE5NzQsIDMxOTc5LCAzMTk4NCwgMzE5ODksIDMxOTk1LCAKLSAgICAyNDgyLCAzMjAwMCwgMjQ4OSwgMjQ5NiwgMjc5MywgMzIwMDUsIDI1MDIsIDI1MTIsIDMyMDExLCAzMjAxNSwgMzIwMjAsIAotICAgIDMyMDI1LCAzMjAzMSwgMzIwMzYsIDMyMDQxLCAzMjA0NSwgMzIwNTAsIDMyMDU2LCAzMjA2MSwgMzIwNjYsIDMyMDcxLCAKLSAgICAzMjA3NywgMzIwODIsIDMyMDg2LCAzMjA5MCwgMzIwOTUsIDMyMTAwLCAzMjEwNSwgMzIxMTAsIDMyMTE1LCAzMjEyMSwgCi0gICAgMzIxMjcsIDMyMTMyLCAzMjEzNiwgMzIxNDEsIDMyMTQ3LCAzMjE1MSwgMzIxNTYsIDMyMTYxLCAzMjE2NiwgMzIxNzEsIAotICAgIDMyMTc1LCAzMjE3OCwgMzIxODMsIDMyMTg4LCAzMjE5MywgMzIxOTgsIDMyMjAzLCAzMjIwOSwgMzIyMTUsIDMyMjIwLCAKLSAgICAzMjIyNSwgMzIyMzAsIDMyMjM0LCAzMjIzOSwgMzIyNDQsIDMyMjQ5LCAzMjI1NCwgMzIyNTksIDMyMjY0LCAzMjI2OCwgCi0gICAgMzIyNzMsIDMyMjc4LCAzMjI4MywgMzIyODcsIDMyMjkxLCAzMjI5NSwgMzIzMDAsIDMyMzA4LCAzMjMxMywgMzIzMTgsIAotICAgIDMyMzI0LCAzMjMzMCwgMzIzMzYsIDMyMzQxLCAzMjM0NSwgMzIzNDgsIDMyMzUzLCAzMjM1OCwgMzIzNjIsIDMyMzY3LCAKLSAgICAzMjM3MiwgMzIzNzYsIDMyMzgxLCAzMjM4NSwgMzIzODgsIDMyMzkzLCAzOTE0LCAxODkwNiwgMzIzOTgsIDMyNDAzLCAKLSAgICAzMjQwOCwgMzI0MTYsIDIyOTU5LCAzMDkyNSwgOTUxOCwgMzI0MjEsIDMyNDI2LCAzMjQzMCwgMzI0MzUsIDMyNDM5LCAKLSAgICAzMjQ0MywgMzI0NDgsIDMyNDUyLCAzMjQ1NSwgMzI0NTgsIDMyNDYyLCAzMjQ2NywgMzI0NzEsIDMyNDc5LCAzMjQ4MywgCi0gICAgMzI0ODYsIDMyNDkxLCAzMjQ5NSwgMzI0OTksIDMyNTA0LCAzMjUwOSwgMzI1MTMsIDMyNTE5LCAzMjUyNCwgMzI1MjksIAotICAgIDMyNTM2LCAzMjU0MywgMzI1NDcsIDMyNTUwLCAzMjU1NiwgMzI1NjUsIDMyNTcyLCAzMjU4MCwgMzI1ODcsIDMyNTkxLCAKLSAgICAzMjU5NiwgMzI2MDAsIDMyNjA0LCAzMjYxMCwgMzI2MTYsIDMyNjIwLCAzMjYyNiwgMzI2MzEsIDMyNjM2LCAzMjY0MCwgCi0gICAgMzI2NDcsIDMyNjUzLCAzMjY1OSwgMzI2NjUsIDMyNjcxLCAzMjY3OCwgMzI2ODQsIDMyNjkwLCAzMjY5NiwgMzI3MDIsIAotICAgIDMyNzA4LCAzMjcxNCwgMzI3MjAsIDMyNzI3LCAzMjczMywgMzI3NDAsIDMyNzQ2LCAzMjc1MiwgMzI3NTgsIDMyNzY0LCAKLSAgICAzMjc3MCwgMzI3NzYsIDMyNzgyLCAzMjc4OCwgMzI3OTQsIDEyNDc5LCAzMjgwMCwgMzI4MDYsIDMyODExLCAzMjgxNiwgCi0gICAgMzI4MjEsIDMyODI0LCAzMjgzMCwgMzI4MzgsIDMyODQzLCAzMjg0NywgMzI4NTIsIDMyODU4LCAzMjg2NywgMzI4NzMsIAotICAgIDMyODc4LCAzMjg4MywgMzI4ODgsIDMyODkyLCAzMjg5NywgMzI5MDIsIDMyOTA3LCAzMjkxMiwgMzI5MTcsIDMyOTI0LCAKLSAgICAzMjkzMSwgMzI5MzcsIDMyOTQzLCAzMjk0OCwgMTc4MjIsIDMyOTU1LCAzMjk2MSwgMzI5NjgsIDMyOTc0LCAzMjk4MCwgCi0gICAgMzI5ODUsIDMyOTkzLCAzMjk5OCwgMTAzNzIsIDMzMDAyLCAzMzAwNywgMzMwMTIsIDMzMDE4LCAzMzAyMywgMzMwMjgsIAotICAgIDMzMDMyLCAzMzAzNywgMzMwNDIsIDMzMDQ4LCAzMzA1MywgMzMwNTgsIDMzMDYzLCAzMzA2NywgMzMwNzIsIDMzMDc3LCAKLSAgICAzMzA4MSwgMzMwODYsIDMzMDkxLCAzMzA5NSwgMzMxMDAsIDMzMTA0LCAzMzEwOSwgMzMxMTQsIDMzMTE5LCAzMzEyMywgCi0gICAgMzMxMjgsIDMzMTMyLCAzMzEzNiwgMTY2ODIsIDMzMTQxLCAzMzE1MCwgMzMxNTYsIDMzMTYyLCAzMzE3MSwgMzMxNzksIAotICAgIDMzMTg4LCAzMzE5NiwgMzMyMDEsIDMzMjA1LCAzMzIxMiwgMzMyMTgsIDMzMjI2LCAzMzIzMCwgMzMyMzMsIDMzMjM4LCAKLSAgICAzMzI0MiwgMzMyNTEsIDMzMjU5LCAzMzI3NywgMzMyODMsIDE0OTMsIDMzMjg5LCAzMzI5MiwgMzMyOTYsIDI0MjM4LCAKLSAgICAyNDI0NCwgMzMzMDIsIDMzMzA2LCAzMzMxNywgMzMzMjgsIDMzMzM5LCAzMzM1MSwgMzMzNTUsIDMzMzYyLCAzMzM2OSwgCi0gICAgMzMzNzQsIDMzMzc4LCA2MjA0LCA5MjgsIDIyOTU4LCAzMzM4NiwgMzMzOTEsIDMzMzk1LCAzMzQwMCwgMzM0MDQsIDMzNDEwLCAKLSAgICAzMzQxNSwgMzM0MjEsIDMzNDI2LCAzMzQzMiwgMzM0MzcsIDMzNDQzLCAzMzQ0OCwgMzM0NTQsIDMzNDYwLCAzMzQ2NiwgCi0gICAgMzM0NzEsIDMzNDI3LCAzMzQzMywgMzM0NzUsIDMzNDgwLCAzMzQ4NiwgMzM0OTEsIDMzNDk3LCAzMzUwMiwgMzM1MDgsIAotICAgIDMzNTEzLCAzMzQzOCwgMTEzMTQsIDMzNTE3LCAzMzQ0OSwgMzM0NTUsIDMzNDYxLCAyODg1LCAzNTMzLCAzMzUyMywgCi0gICAgMzM1MjYsIDMzNTMxLCAzMzUzNywgMzM1NDMsIDMzNTQ5LCAzMzU1NiwgMzM1NjIsIDMzNTY4LCAzMzU3NCwgMzM1ODAsIAotICAgIDMzNTg2LCAzMzU5MiwgMzM1OTgsIDMzNjA0LCAzMzYxMCwgMzM2MTYsIDMzNjIyLCAzMzYyOCwgMzM2MzUsIDMzNjQxLCAKLSAgICAzMzY0NywgMzM2NTMsIDMzNjU5LCAzMzY2NSwgMzM2NjgsIDMzNjczLCAzMzY3NiwgMzM2ODMsIDMzNjg4LCAzMzY5NiwgCi0gICAgMzM3MDEsIDMzNzA2LCAzMzcxMiwgMzM3MTcsIDMzNzIyLCAzMzcyNiwgMzM3MzEsIDMzNzM3LCAzMzc0MiwgMzM3NDgsIAotICAgIDMzNzUzLCAzMzc1OSwgMzM3NjQsIDMzNzcwLCAzMzc3NiwgMzM3ODAsIDMzNzg1LCAzMzc5MCwgMzM3OTUsIDMzODAwLCAKLSAgICAzMzgwNCwgMzM4MDksIDMzODE0LCAzMzgxOSwgMzM4MjUsIDMzODMxLCAzMzgzNywgMzM4NDMsIDMzODQ4LCAzMzg1MiwgCi0gICAgMzM4NTUsIDMzODYxLCAzMzg2NywgMzM4NzYsIDMzODg0LCAzMzg5MSwgMzM4OTYsIDMzOTAwLCAzMzkwNCwgMzM5MDksIAotICAgIDE2NTMwLCAzMzkxNCwgMzM5MjIsIDMzOTI4LCAzODY2LCAxMzU4LCAzMzkzMywgMzM5MzcsIDgzNTksIDMzOTQzLCAzMzk0OSwgCi0gICAgMzM5NTYsIDgzNjgsIDMzOTYwLCAzMzk2NiwgMzM5NzMsIDMzOTc5LCAzMzk4OCwgMzM5OTYsIDkyNDQsIDM0MDA4LCAKLSAgICAzNDAxMiwgMzQwMTksIDM0MDI1LCAzNDAzMCwgMzQwMzQsIDM0MDM4LCAzNDA0MSwgMzQwNTEsIDM0MDYwLCAzNDA2OCwgCi0gICAgMzM0MjgsIDM0MDczLCAzNDA4MywgMzQwOTMsIDM0MTAzLCAzNDEwOSwgMzQxMTQsIDM0MTI0LCAzNDEyOSwgMzQxNDIsIAotICAgIDM0MTU2LCAzNDE2NywgMzQxNzksIDM0MTkxLCAzNDIwNSwgMzQyMTgsIDM0MjMwLCAzNDI0MiwgMTU4OTksIDM0MjU2LCAKLSAgICAzNDI2MSwgMzQyNjYsIDM0MjcwLCAzNDI3NCwgMzQyNzgsIDE3OTUsIDI5MjkwLCAzNDI4MiwgMzQyODcsIDMzNDc2LCAKLSAgICAzNDI5MiwgMzQyOTUsIDM0MzAwLCAzNDMwNSwgMzQzMTAsIDM0MzE2LCAzNDMyMiwgMTA5NzQsIDM0MzI3LCAzNDMzMywgCi0gICAgMzQzNDAsIDE3MTMwLCAzNDM0NiwgMzQzNTEsIDM0MzU2LCAzNDM2MCwgMzQzNjUsIDM0MzcwLCAzMzQ4MSwgMzQzNzUsIAotICAgIDM0MzgwLCAzNDM4NSwgMzQzOTEsIDMzNDg3LCAzNDM5NiwgMzQzOTksIDM0NDA2LCAzNDQxNCwgMzQ0MjAsIDM0NDI2LCAKLSAgICAzNDQzMiwgMzQ0NDMsIDM0NDQ4LCAzNDQ1NSwgMzQ0NjIsIDM0NDY5LCAzNDQ3NywgMzQ0ODYsIDM0NDk1LCAzNDUwMSwgCi0gICAgMzQ1MDcsIDM0NTE1LCAzMzQ5MiwgMzQ1MjAsIDM0NTI2LCAzNDUzMiwgMzM0OTgsIDM0NTM3LCAzNDU0MiwgMzQ1NTAsIAotICAgIDM0NTU4LCAzNDU2NCwgMzQ1NzEsIDM0NTc3LCAzNDU4NCwgMzQ1OTEsIDM0NTk3LCAzNDYwNSwgMzQ2MTUsIDM0NjIyLCAKLSAgICAzNDYyOCwgMzQ2MzMsIDM0NjM5LCAzNDY0NCwgMzQ2NDksIDM0NjU2LCAzNDY2NSwgMzQ2NzMsIDM0Njc4LCAzNDY4NCwgCi0gICAgMzQ2OTEsIDM0Njk5LCAzNDcwNSwgMzQ3MTAsIDM0NzE2LCAzNDcyNSwgMzQ3MzIsIDMwMTM1LCAzNDczOCwgMzQ3NDIsIAotICAgIDM0NzQ3LCAzNDc1NiwgMzQ3NjEsIDM0NzY2LCAzNDc3MSwgMTM1NDgsIDM0Nzc5LCAzNDc4NCwgMzQ3ODksIDM0Nzk0LCAKLSAgICAzNDc5OCwgMzQ4MDMsIDM0ODA4LCAzNDgxNSwgMzQ4MjAsIDM0ODI1LCAzNDgzMCwgMzM1MDMsIDIyODk1LCAzNDgzNiwgCi0gICAgMjU1OCwgMTQ0LCAzNDgzOSwgMzQ4NDIsIDM0ODQ2LCAzNDg1MCwgMzQ4NjAsIDM0ODY4LCAzNDg3NSwgMzQ4NzksIDM0ODgyLCAKLSAgICAzNDg5MCwgMzQ4OTcsIDM0OTA0LCAzNDkxMywgMzQ5MTcsIDM0OTIwLCAzNDkyNiwgMzQ5MzAsIDM0OTM4LCAzNDk0NiwgCi0gICAgMzQ5NTAsIDM0OTU0LCAzNDk1NywgMzQ5NjMsIDM0OTcwLCAzNDk3NCwgMzQ5NzgsIDM0OTg1LCAzNDk5MywgMzM0MzksIAotICAgIDM1MDAwLCAzNTAwOCwgMzUwMTMsIDExMDM0LCA2MjMsIDM2OSwgMzUwMjUsIDM1MDMwLCAzNTAzNSwgMzUwNDEsIDM1MDQ2LCAKLSAgICAzNTA1MSwgMzg4NywgMzUwNTYsIDM1MDU5LCAzNTA2NCwgMzUwNjksIDM1MDc0LCAzNTA3OSwgMzUwODQsIDM1MDkxLCAKLSAgICAyNDM1NiwgMzUwOTYsIDM1MTAxLCAzNTEwNiwgMzUxMTEsIDM1MTE2LCAzNTEyMiwgMzUxMjcsIDM1MTMzLCAzMzY3OSwgCi0gICAgMzUxMzksIDM1MTQ0LCAzNTE1MCwgMzUxNTYsIDM1MTY2LCAzNTE3MSwgMzUxNzYsIDM1MTgwLCAzNTE4NSwgMzUxOTAsIAotICAgIDM1MTk1LCAzNTIwMCwgMzUyMTMsIDM1MjE4LCAyNDAxOSwgMTgyNTUsIDM5MDAsIDM1MjIyLCAzNTIyOCwgMzUyMzMsIAotICAgIDM1MjM4LCAzNTI0NCwgMzUyNDksIDM1MjU0LCAzNTI1OCwgMzUyNjMsIDM1MjY4LCAzNTI3NCwgMzUyNzksIDM1Mjg0LCAKLSAgICAxMzYzLCAzNTI4OCwgMzUyOTMsIDM1Mjk4LCAzNTMwMywgMzUzMDcsIDM1MzEyLCAzNTMxNywgMzUzMjIsIDM1MzI4LCAKLSAgICAzNTMzNCwgMzUzMzksIDM1MzQzLCAzNTM0NywgMzUzNTIsIDM1MzU3LCAzNTM2MiwgMzUzNjYsIDM1Mzc0LCAzNTM3OCwgCi0gICAgMzUzODQsIDM1Mzg4LCAzNTM5NSwgMTgwMzksIDMzNDUwLCAzNTQwMSwgMzU0MDgsIDM1NDE2LCAzNTQyMywgMzU0MjksIAotICAgIDM1NDQyLCAzNTQ1NCwgMzU0NTksIDM1NDY1LCAzNTQ2OSwgMjgxMiwgMzU0NzMsIDM1NDc3LCAzNDk2NSwgMzU0ODYsIAotICAgIDM1NDk3LCAzNTUwMiwgMzAxOTgsIDM1NTA3LCAzNTUxMiwgMzU1MTYsIDM1NTIxLCAyNDI0OSwgMzU1MjUsIDM1NTI5LCAKLSAgICAzNTUzNCwgMzM0NTYsIDIyOTg1LCAzNTUzOCwgMzU1NDMsIDM1NTQ5LCAzNTU1NCwgMzU1NTgsIDM1NTYyLCAzNTU2NSwgCi0gICAgMzU1NjksIDM1NTc1LCAzNTU4NCwgMzU1OTUsIDM1NjA3LCAzMzQ2MiwgMzU2MTIsIDM1NjE1LCAzNTYxOSwgMzU2MjMsIAotICAgIDQwNiwgMzU2MjgsIDM1NjMzLCAzNTYzOCwgMzU2NDMsIDM1NjQ4LCAzNTY1MywgMzU2NTksIDM1NjY0LCAzNTY2OSwgCi0gICAgMzU2NzUsIDM1NjgwLCAzNTY4NiwgMzU2OTEsIDM1Njk3LCAzNTcwMiwgMzU3MDcsIDM1NzEyLCAzNTcxNywgMzU3MjIsIAotICAgIDM1NzI3LCAzNTczMiwgMzU3MzcsIDM1NzQzLCAzNTc0OCwgMzU3NTMsIDM1NzU4LCAzNTc2MywgMzU3NjgsIDM1NzczLCAKLSAgICAzNTc3OCwgMzU3ODQsIDM1NzkwLCAzNTc5NSwgMzU4MDAsIDM1ODA1LCAzNTgxMCwgMzU4MTUsIDM1ODIwLCAzNTgyNSwgCi0gICAgMzU4MzAsIDM1ODM1LCAzNTg0MCwgMzU4NDUsIDM1ODUwLCAzNTg1NSwgMzU4NjAsIDM1ODY1LCAzNTg3MCwgMzU4NzUsIAotICAgIDM1ODgwLCAzNTg4NiwgMzI1LCA5LCAzNTg5MSwgMzU4OTUsIDM1ODk5LCAzNTkwNywgMzU5MTEsIDM1OTE1LCAzNTkxOCwgCi0gICAgMzU5MjEsIDM1OTIzLCAzNTkyOCwgMzU5MzIsIDM1OTM3LCAzNTk0MSwgMzU5NDYsIDM1OTUwLCAzNTk1NSwgMzU5NTksIAotICAgIDM1OTYyLCAzNTk2NCwgMzU5NjgsIDM1OTczLCAzNTk3NywgMzU5ODgsIDM1OTkxLCAzNTk5MywgMzU5OTcsIDM2MDA5LCAKLSAgICAzNjAxOCwgMzYwMjIsIDM2MDI2LCAzNjAzMiwgMzYwMzcsIDM2MDQ2LCAzNjA1MiwgMzYwNTcsIDM2MDYyLCAzNjA2NiwgCi0gICAgMzYwNzAsIDM2MDc1LCAzNjA4MiwgMzYwODcsIDM2MDkzLCAzNjA5OCwgMzYxMDIsIDM2MTA5LCAyNzczMSwgMjc3NDEsIAotICAgIDM2MTEzLCAzNjExOCwgMzYxMjMsIDM2MTI4LCAzNjEzNSwgMzYxMzksIDM2MTQ2LCAzNjE1MiwgODQ5MSwgMzYxNTYsIAotICAgIDM2MTY1LCAzNjE3MywgMzYxODgsIDM2MjAyLCAzNjIxMSwgMzYyMTksIDM2MjMwLCAzNjIzOSwgMzYyNDQsIDM2MjUxLCAKLSAgICA3NTU2LCAzNjI2MSwgMzYyNjYsIDM2MjcxLCAzNjI3NSwgMzYyNzgsIDM2MjgzLCAzNjI4NywgMzYyOTIsIDM2Mjk2LCAKLSAgICAzNjMwMywgMzYzMDgsIDM2MzEzLCAzNjMxOCwgOTM5MSwgMzYzMjgsIDM2MzMwLCAzNjMzMywgMzYzMzYsIDM2MzQwLCAKLSAgICAzNjM0NiwgMzYzNTAsIDM2MzU1LCAzNjM2MCwgMzYzNzgsIDM2MzkyLCAzNjQxMSwgMzY0MjgsIDM2NDM3LCAzNjQ0NSwgCi0gICAgMzY0NTAsIDM2NDU1LCAxNDg2LCAzNjQ2MSwgMzY0NjcsIDM2NDcyLCAzNjQ4MiwgMzY0OTEsIDM2NDk5LCAzNjUwNCwgCi0gICAgMzY1MTAsIDM2NTE1LCAzNjUyNCwgMzY1MzUsIDM2NTQwLCAzNjU0NywgMzY1NTEsIDM2NTU4LCAzNjU2NiwgMzY1NzMsIAotICAgIDM2NTg2LCAzNjU5NCwgMzY1OTgsIDM2NjA4LCAzNjYxMywgMzY2MTcsIDM2NjI1LCAzNjYzMywgMzY2MzgsIDM2NjQyLCAKLSAgICAzNjY0NiwgMzY2NTUsIDM2NjYxLCAzNjY2NiwgMzY2NzQsIDM2Njg0LCAzNjY5MywgMzY3MDIsIDM2NzExLCAzNjcyMiwgCi0gICAgMzY3MzAsIDM2NzQxLCAzNjc1MCwgMzY3NTcsIDM2NzYzLCAzNjc2OCwgMzY3NzksIDM2NzkwLCAzNjc5NSwgMzY3OTksIAotICAgIDM2ODAyLCAzNjgwNiwgMzY4MTQsIDM2ODIwLCAzNjgzMSwgMzY4NDIsIDM2ODUzLCAzNjg2NCwgMzY4NzUsIDM2ODg2LCAKLSAgICAzNjg5NywgMzY5MDgsIDM2OTIwLCAzNjkzMiwgMzY5NDQsIDM2OTU2LCAzNjk2OCwgMzY5ODAsIDM2OTkyLCAzNjk5NiwgCi0gICAgMzcwMDQsIDM3MDEwLCAzNzAxNywgMzcwMjMsIDM3MDI4LCAzNzAzNCwgMjQ1NywgMzcwMzgsIDM3MDQwLCAzNzA0NSwgCi0gICAgMzcwNTAsIDM3MDU1LCAzNzA1OCwgMzcwNjAsIDM3MDY0LCAzNzA2NywgMzcwNzQsIDM3MDc4LCAxMDY2NCwgMzcwODIsIAotICAgIDM3MDg4LCAzNzA5OCwgMzcxMDMsIDM3MTA5LCAzNzExMywgMzcxMTgsIDM3MTMxLCAyODE2MiwgMzcxMzcsIDM3MTQ2LCAKLSAgICAzNzE1NSwgMTkxMDQsIDM3MTYyLCAzNzE3MSwgMzQwODksIDM3MTc5LCAzNzE4NCwgMzcxODgsIDM3MTk3LCAzNzIwNSwgCi0gICAgMzcyMTIsIDM3MjE3LCAzNzIyMSwgMzcyMjYsIDM3MjM0LCAzNzIzOCwgMzcyNDYsIDM3MjUyLCAzNzI1OCwgMzcyNjMsIAotICAgIDM3MjY3LCAzNzI3MCwgMzcyNzUsIDM3Mjg4LCAzNzMwNCwgMjQ4NDAsIDM3MzIxLCAzNzMzMywgMzczNTAsIDM3MzYyLCAKLSAgICAzNzM3NiwgMjQ4NTcsIDI0ODc2LCAzNzM4OCwgMzc0MDAsIDI3MTksIDM3NDE0LCAzNzQxOSwgMzc0MjQsIDM3NDI5LCAKLSAgICAzNzQzMywgMzc0NDAsIDM3NDUyLCAzNzQ1OSwgMzc0NjgsIDM3NDcxLCAzNzQ4MiwgMzc0OTMsIDM3NDk4LCAzNDUxMiwgCi0gICAgODUyLCAzNzUwMiwgMzc1MDYsIDM3NTEwLCAzNzUxMywgMzc1MTgsIDM3NTIzLCAzNzUyOSwgMzc1MzQsIDM3NTM5LCAKLSAgICAzNzU0NSwgMzc1NTEsIDM3NTU2LCAzNzU2MCwgMzc1NjUsIDM3NTcwLCAzNzU3NSwgMzc1NzksIDM3NTgyLCAzNzU4OCwgCi0gICAgMzc1OTMsIDM3NTk4LCAzNzYwMywgMzc2MDcsIDM3NjEyLCAzNzYxOCwgMzc2MjYsIDI4NDE0LCAzNzYzMSwgMzc2MzYsIAotICAgIDM3NjQzLCAzNzY0OSwgMzc2NTUsIDM3NjYwLCAzNzY2OCwgMjQzNjUsIDM3Njc1LCAzNzY4MCwgMzc2ODUsIDM3NjkwLCAKLSAgICAzNzY5NCwgMzc2OTcsIDM3NzAyLCAzNzcwNiwgMzc3MTAsIDM3NzE3LCAzNzcyMywgMzc3MjksIDM3NzM1LCAzNzc0MiwgCi0gICAgMzc3NDcsIDM3NzUzLCAzNjYyOCwgMzc3NTcsIDM3NzYxLCAzNzc2NiwgMzc3NzksIDM3Nzg0LCAzNzc5MCwgMzc3OTgsIAotICAgIDM3ODA1LCAzNzgxMywgMzc4MjMsIDM3ODI5LCAzNzgzNSwgMzc4NDEsIDM3ODQ1LCAzNzg1NCwgMzc4NjIsIDM3ODY5LCAKLSAgICAzNzg3NCwgMzc4NzksIDExMzM3LCAzNzg4NCwgMzc4OTEsIDM3ODk3LCAzNzkwNywgMzc5MTIsIDM3OTE4LCAzNzkyNiwgCi0gICAgMzc3NSwgMzc5MzMsIDM3OTQwLCAzNzk0NiwgMzc5NTMsIDM3ODEsIDM3OTU3LCAzNzk2MiwgMzc5NzMsIDM3OTgwLCAKLSAgICAzNzk4NiwgMzc5OTUsIDM3OTk5LCA0MjQ0LCAzODAwMiwgMzgwMDksIDM4MDE1LCAzODAyMSwgMzgwMjksIDM4MDM5LCAKLSAgICAzMTMyNiwgMzgwNDYsIDM4MDU0LCAzODA2MCwgMzgwNjUsIDM4MDcxLCAzODA3NiwgMzgwODAsIDI4MDEwLCAzODA4NiwgCi0gICAgMzgwOTMsIDM4MDk5LCAzODEwOCwgMzgxMTUsIDI1NTY1LCAzODEyMSwgMzgxMjYsIDM4MTMwLCAzODEzOCwgMzgxNDYsIAotICAgIDEwMzMwLCA2MTc5LCAzODE1MywgMzgxNTcsIDM4MTU5LCAzODE2MywgMzgxNjgsIDM4MTcwLCAzODE3NSwgMzgxODEsIAotICAgIDM4MTg2LCAzODE5MSwgMzgxOTgsIDM1MDg3LCAzODIwNCwgMzgyMDksIDM4MjEzLCAzODIxOCwgMzgyMjIsIDM4MjMxLCAKLSAgICAzODIzNSwgMzgyNDEsIDM4MjQ4LCAzODI1NCwgMzgyNjEsIDM4MjY2LCAzODI3NSwgMzgyODAsIDM4Mjg0LCAzODI4OSwgCi0gICAgMzgyOTYsIDM4MzA0LCAzODMxMiwgMzgzMTcsIDIzMDQxLCAzODMyMSwgMzgzMjQsIDM4MzI4LCAzODMzMiwgMTE3MjUsIAotICAgIDg3MiwgMzgzMzYsIDM4MzQxLCAzODM0OSwgMzgzNTMsIDM4MzYyLCAzODM2OSwgMzgzNzMsIDM4Mzc3LCAzODM4NSwgCi0gICAgMzgzOTIsIDM4NDAyLCAzODQwNiwgMzg0MTAsIDM4NDE4LCAzODQyNiwgMzg0MzIsIDM4NDM3LCAzODQ0NiwgMTQ1MzAsIAotICAgIDM4NDUyLCAzODQ2MSwgMzg0NjYsIDM4NDczLCAzODQ4MCwgMzg0ODgsIDM4NDk2LCAzODUwNCwgMzg1MDksIDM4NTE2LCAKLSAgICAzODUyMywgMzg1MzAsIDM4NTM3LCAzODU0NCwgMzg1NDksIDM4NTU1LCAzODU3MiwgMzg1ODAsIDM4NTkwLCAzODU5OCwgCi0gICAgMzg2MDUsIDQxNCwgMzg2MDksIDM4NjE1LCAzODYxOSwgMzg2MjQsIDM2MjM1LCAzODYzMCwgMzg2MzMsIDM4NjM3LCAKLSAgICAzODY0OCwgMzg2NTYsIDM3ODYsIDM4NjY0LCAzODY3MCwgMzg2NzYsIDM4Njg2LCAzODY5NSwgMzg3MDUsIDM4NzEyLCAKLSAgICAzODcxOCwgMzg3MjMsIDM3OTIsIDM3OTgsIDM4NzMyLCAzODczOSwgMzg3NDcsIDM4NzUyLCAzODc1NiwgMzg3NjMsIAotICAgIDM4NzcxLCAzODc3OCwgMzg3ODQsIDM4NzkzLCAzODgwMywgMzg4MDksIDM4ODE3LCAzODgyNiwgMzg4MzMsIDM4ODQxLCAKLSAgICAzODg0OCwgMjM3MjgsIDM4ODUyLCAzODg1OSwgMzg4NjUsIDM4ODc1LCAzODg4NCwgMzg4OTIsIDM4OTAzLCAzODkwNywgCi0gICAgMzg5MTcsIDM4OTIzLCAzODkzMCwgMzg5MzgsIDM4OTQ3LCAzODk1NiwgMzg5NjYsIDM4OTc3LCAzODk4NCwgMzg5ODksIAotICAgIDM4OTk2LCAzMDg4LCAzOTAwNCwgMzkwMTAsIDM5MDE1LCAzOTAyMSwgMzkwMjcsIDM5MDMyLCAzOTA0NSwgMzkwNTgsIAotICAgIDM5MDcxLCAzOTA3OCwgMzkwODQsIDM5MDkyLCAzOTEwMCwgMzkxMDUsIDM5MTA5LCAxNDU1LCAzOTExMywgMzkxMTcsIAotICAgIDM5MTIxLCAzOTEyNSwgMzkxMjksIDM5MTMzLCAzOTEzNywgMzkxNDEsIDM5MTQ1LCAzOTE0OSwgMzkxNTMsIDM5MTU3LCAKLSAgICAzOTE2MSwgMzkxNjUsIDM5MTY5LCAzOTE3MywgMzkxNzcsIDM5MTgxLCAzOTE4NSwgMzkxODksIDM5MTkzLCAzOTE5NywgCi0gICAgMzkyMDEsIDM5MjA1LCAzOTIwOSwgMzkyMTMsIDM5MjE3LCAzOTIyMSwgMzkyMjUsIDM5MjI5LCAzOTIzMywgMzkyMzcsIAotICAgIDM5MjQxLCAzOTI0NSwgMzkyNDksIDM5MjUzLCAzOTI1NywgMzkyNjEsIDM5MjY1LCAzOTI2OSwgMzkyNzMsIDM5Mjc3LCAKLSAgICAzOTI4MSwgMzkyODUsIDM5Mjg5LCAzOTI5MywgMzkyOTcsIDM5MzAxLCAzOTMwNSwgMzkzMDksIDM5MzEzLCAzOTMxNywgCi0gICAgMzkzMjEsIDM5MzI1LCAzOTMyOSwgMzkzMzMsIDM5MzM3LCAzOTM0MSwgMzkzNDUsIDM5MzQ5LCAzOTM1MywgMzkzNTcsIAotICAgIDM5MzYxLCAzOTM2NSwgMzkzNjksIDM5MzczLCAzOTM3NywgMzkzODEsIDM5Mzg1LCAzOTM4OSwgMzkzOTMsIDM5Mzk3LCAKLSAgICAzOTQwMSwgMzk0MDUsIDM5NDA5LCAzOTQxMywgMzk0MTcsIDM5NDIxLCAzOTQyNSwgMzk0MjksIDM5NDMzLCAzOTQzNywgCi0gICAgMzk0NDEsIDM5NDQ1LCAzOTQ0OSwgMzk0NTMsIDM5NDU3LCAzOTQ2MSwgMzk0NjUsIDM5NDY5LCAzOTQ3MywgMzk0NzcsIAotICAgIDM5NDgxLCAzOTQ4NSwgMzk0ODksIDM5NDkzLCAzOTQ5NywgMzk1MDEsIDM5NTA1LCAzOTUwOSwgMzk1MTMsIDM5NTE3LCAKLSAgICAzOTUyMSwgMzk1MjUsIDM5NTI5LCAzOTUzMywgMzk1MzcsIDM5NTQxLCAzOTU0NSwgMzk1NDksIDM5NTUzLCAzOTU1NywgCi0gICAgMzk1NjEsIDM5NTY1LCAzOTU2OSwgMzk1NzMsIDM5NTc3LCAzOTU4MSwgMzk1ODUsIDM5NTg5LCAzOTU5MywgMzk1OTcsIAotICAgIDM5NjAxLCAzOTYwNSwgMzk2MDksIDM5NjEzLCAzOTYxNywgMzk2MjEsIDM5NjI1LCAzOTYyOSwgMzk2MzMsIDM5NjM3LCAKLSAgICAzOTY0MSwgMzk2NDUsIDM5NjQ5LCAzOTY1MywgMzk2NTcsIDM5NjYxLCAzOTY2NSwgMzk2NjksIDM5NjczLCAzOTY3NywgCi0gICAgMzk2ODEsIDM5Njg1LCAzOTY4OSwgMzk2OTMsIDM5Njk3LCAzOTcwMSwgMzk3MDUsIDM5NzA5LCAzOTcxMywgMzk3MTcsIAotICAgIDM5NzIxLCAzOTcyNSwgMzk3MzAsIDM5NzM0LCAzOTczOSwgMzk3NDMsIDM5NzQ4LCAzOTc1MiwgMzk3NTcsIDM5NzYxLCAKLSAgICAzOTc2NywgMzk3NzIsIDM5Nzc2LCAzOTc4MSwgMzk3ODUsIDM5NzkwLCAzOTc5NCwgMzk3OTksIDM5ODAzLCAzOTgwOCwgCi0gICAgMzk4MTIsIDM5ODE3LCAzOTgyMSwgMzk4MjYsIDM5ODMwLCAzOTgzNiwgMzk4NDIsIDM5ODQ3LCAzOTg1MSwgMzk4NTYsIAotICAgIDM5ODYwLCAzOTg2NiwgMzk4NzEsIDM5ODc1LCAzOTg4MCwgMzk4ODQsIDM5ODg5LCAzOTg5MywgMzk4OTksIDM5OTA0LCAKLSAgICAzOTkwOCwgMzk5MTMsIDM5OTE3LCAzOTkyMiwgMzk5MjYsIDM5OTMxLCAzOTkzNSwgMzk5NDEsIDM5OTQ2LCAzOTk1MCwgCi0gICAgMzk5NTUsIDM5OTU5LCAzOTk2NSwgMzk5NzAsIDM5OTc0LCAzOTk3OSwgMzk5ODMsIDM5OTg4LCAzOTk5MiwgMzk5OTcsIAotICAgIDQwMDAxLCA0MDAwNiwgNDAwMTAsIDQwMDE2LCA0MDAyMSwgNDAwMjUsIDQwMDMxLCA0MDAzNiwgNDAwNDAsIDQwMDQ2LCAKLSAgICA0MDA1MSwgNDAwNTUsIDQwMDYwLCA0MDA2NCwgNDAwNjksIDQwMDczLCA0MDA3OSwgNDAwODUsIDQwMDkxLCA0MDA5NywgCi0gICAgNDAxMDMsIDQwMTA5LCA0MDExNSwgNDAxMjEsIDQwMTI2LCA0MDEzMCwgNDAxMzUsIDQwMTM5LCA0MDE0NSwgNDAxNTAsIAotICAgIDQwMTU0LCA0MDE1OSwgNDAxNjMsIDQwMTY4LCA0MDE3MiwgNDAxNzcsIDQwMTgxLCA0MDE4NiwgNDAxOTAsIDQwMTk1LCAKLSAgICA0MDE5OSwgNDAyMDQsIDQwMjA4LCA0MDIxNCwgNDAyMTksIDQwMjIzLCA0MDIyOCwgNDAyMzIsIDQwMjM4LCA0MDI0NCwgCi0gICAgNDAyNDksIDExNiwgNTcsIDQwMjUzLCA0MDI1NSwgNDAyNTksIDQwMjYzLCA0MDI2NywgNDAyNzIsIDQwMjc2LCA0MDI4MCwgCi0gICAgMTAyNTEsIDQwMjg1LCA0MDI5MSwgMTc1NiwgNjU5NywgNDAyOTcsIDQwMzAwLCA0MDMwNSwgNDAzMDksIDQwMzE0LCAKLSAgICA0MDMxOCwgNDAzMjIsIDQwMzI3LCAxMTEyMSwgNDAzMzEsIDQwMzM1LCA0MDMzOSwgNTI1LCA0MDM0MywgMTY3ODMsIAotICAgIDQwMzQ4LCA0MDM1MiwgNDAzNTcsIDQwMzYyLCA0MDM2NywgNDAzNzEsIDQwMzc4LCAyODE4NiwgNDAzODQsIDQwMzg3LCAKLSAgICA0MDM5MSwgNDAzOTYsIDQwNDAyLCA0MDQwNiwgNDA0MDksIDQwNDE3LCA0MDQyMywgNDA0MjgsIDQwNDMyLCA0MDQzNSwgCi0gICAgNDA0MzksIDQwNDQ1LCA0MDQ0OSwgNDA0NTMsIDM1ODQsIDM1ODksIDMxNTM3LCA0MDQ1NiwgNDA0NjAsIDQwNDY0LCAKLSAgICA0MDQ2OCwgNDA0NzIsIDQwNDgwLCA0MDQ4NywgNDA0OTEsIDE0NDgwLCA0MDQ5OCwgNDA1MDMsIDQwNTE3LCA0MDUyNCwgCi0gICAgNDA1MzUsIDMzNSwgNDA1NDAsIDQwNTQ0LCA0MDU1MCwgNDA1NjIsIDQwNTY4LCA0MDU3NCwgMzE1NzQsIDQwNTc4LCAKLSAgICA0MDU4NCwgNDA1OTMsIDQwNTk3LCA0MDYwMSwgNDA2MDYsIDQwNjEyLCA0MDYxNywgNDA2MjEsIDQwNjI2LCA0MDYzMCwgCi0gICAgNDA2MzQsIDQwNjQxLCA0MDY0NywgNDA2NTIsIDQwNjY3LCA0MDY4MiwgNDA2OTcsIDQwNzEzLCA0MDczMSwgMTEwNzEsIAotICAgIDQwNzQ1LCA0MDc1MiwgNDA3NTYsIDQwNzU5LCA0MDc2OCwgNDA3NzMsIDQwNzc3LCA0MDc4NSwgMTczMzMsIDQwNzkzLCAKLSAgICA0MDc5NywgNDA4MDcsIDQwODE4LCAzMTUwNywgNDA4MzEsIDQwODM1LCA0MDg0NCwgNDA4NjIsIDQwODgxLCA0MDg4OSwgCi0gICAgMTA1MjUsIDExMjM0LCA0MDg5MywgMjQyNjEsIDQwODk2LCAzMjQ3NSwgNDA5MDEsIDEwNTI0LCA0MDkwNiwgNDA5MTIsIAotICAgIDQwOTE3LCA0MDkyMywgNDA5MjgsIDQwOTM0LCA0MDkzOSwgNDA5NDUsIDQwOTUwLCA0MDk1NiwgNDA5NjIsIDQwOTY4LCAKLSAgICA0MDk3MywgNDA5MjksIDQwOTM1LCA0MDk0MCwgNDA5NDYsIDQwOTUxLCA0MDk1NywgNDA5NjMsIDg1MDQsIDQwODksIAotICAgIDQwOTc3LCA0MDk4NSwgNDA5ODksIDQwOTkyLCA0MDk5NiwgNDEwMDEsIDQxMDA2LCA0MTAxMywgNDEwMTksIDQxMDI1LCAKLSAgICA0MTAzMCwgMTYxNzQsIDQxMDM0LCAyODAyMiwgNDEwMzgsIDQxMDQyLCA0MTA0NiwgNDEwNTIsIDQxMDU2LCAzMDA3NSwgCi0gICAgNDEwNjUsIDk1NDQsIDQxMDY5LCA5OTM3LCA0MTA3MiwgNDEwNzksIDQxMDg1LCA0MTA4OSwgMTMwMDQsIDQxMDk2LCAKLSAgICA0MTEwMiwgNDExMDcsIDQxMTE0LCA0MTEyMSwgNDExMjgsIDMwNzgxLCA4NDEwLCA0MTEzNSwgNDExNDIsIDQxMTQ5LCAKLSAgICA0MTE1NSwgNDExNjAsIDQxMTY3LCA0MTE3OCwgNDExODQsIDQxMTg5LCA0MTE5NCwgNDExOTksIDQxMjAzLCA0MTIwOCwgCi0gICAgNDEyMTUsIDQwOTMwLCA0MTIxOSwgNDEyMjksIDQxMjM4LCA0MTI0OSwgNDEyNTUsIDQxMjYzLCA0MTI3MCwgNDEyNzUsIAotICAgIDQxMjgwLCA0MTI4NSwgNDEyOTAsIDQxMjk1LCA0MTI5OSwgNDEzMDMsIDQxMzEwLCA0MTMxNiwgNDEzMjQsIDIzNTMsIAotICAgIDEwNTAsIDExMTM3LCAxMTE0OSwgMTExNTQsIDExMTYwLCA0MTMzMywgMTExNjUsIDExMTcwLCAxMTE3NiwgNDEzMzgsIAotICAgIDQxMzQ4LCA0MTM1MiwgMTExODEsIDQxMzU3LCAxODQ1MywgNDEzNjAsIDQxMzY1LCA0MTM2OSwgMzc0NjMsIDQxMzgwLCAKLSAgICA0MTM4NSwgNDEzOTIsIDQxMzk5LCA0MTQwMywgNDE0MDYsIDQxNDE0LCAxMTA4NCwgNDE0MjEsIDQxNDI0LCA0MTQzMCwgCi0gICAgNDE0NDAsIDYyMzEsIDQxNDQ5LCA0MTQ1NSwgNDE0NTksIDQxNDY3LCA0MTQ3MSwgNDE0ODEsIDQxNDg3LCA0MTQ5MiwgCi0gICAgNDE1MDMsIDQxNTEyLCA0MTUyMSwgNDE1MzAsIDQxNTM5LCA0MTU0OCwgNDE1NTcsIDQxNTY2LCA0MTU3MiwgNDE1NzgsIAotICAgIDQxNTgzLCA0MTU4OSwgNDE1OTUsIDQxNjAxLCA0MTYwNiwgNDE2MDksIDQxNjE2LCA0MTYyMiwgNDE2MjYsIDQxNjMxLCAKLSAgICA0MTYzOCwgNDE2NDUsIDQxNjQ5LCA0MTY1MiwgNDE2NjIsIDQxNjc1LCA0MTY4NCwgNDE2OTMsIDQxNzA0LCA0MTcxNywgCi0gICAgNDE3MjksIDQxNzQwLCA0MTc0OSwgNDE3NjAsIDQxNzY1LCA0MTc3NCwgNDE3NzksIDExMTg2LCA0MTc4NSwgNDE3OTIsIAotICAgIDQxODAwLCA0MTgwNSwgNDE4MDksIDQxODE2LCA0MTgyMywgNDA0MSwgMjAsIDQxODI3LCA0MTgzMiwgMTgzMDIsIDQxODM2LCAKLSAgICA0MTgzOSwgNDE4NDIsIDMwMjU1LCA0MTg0NiwgMzA3OTAsIDQxODU0LCA0MTg1OCwgNDE4NjIsIDQxODY1LCA0MTg3MSwgCi0gICAgNDE4NzcsIDMzNTI3LCA0MTg4MiwgNDE4OTAsIDQxODk2LCA0MTkwMywgMzAyMzgsIDQxOTA3LCAzMDQ0MSwgNDE5MTEsIAotICAgIDQxOTIwLCA0MTkyNCwgNDE5MzIsIDQxOTM4LCA0MTk0NCwgNDE5NDksIDQxOTUzLCAzMDgwOSwgNDE5NTksIDQxOTYyLCAKLSAgICA0MTk3MCwgNDE5NzgsIDQzNzksIDQxOTg0LCA0MTk4OCwgNDE5OTMsIDQyMDAwLCA0MjAwNiwgNDIwMTEsIDQyMDE2LCAKLSAgICA0MjAyMCwgNDIwMjYsIDQyMDMxLCA0MjAzNywgNDI5NywgOTQ0LCA0MjA0NCwgNDIwNDgsIDQyMDUxLCAxNjY2NCwgNDIwNjMsIAotICAgIDQyMDcxLCA0MjA3OSwgNDIwODcsIDQyMDk1LCA0MjEwMiwgNDIxMTAsIDQyMTE4LCA0MjEyNSwgNDIxMzMsIDQyMTQxLCAKLSAgICA0MjE0OSwgNDIxNTcsIDQyMTY1LCA0MjE3MywgNDIxODEsIDQyMTg5LCA0MjE5NywgNDIyMDUsIDQyMjEzLCA0MjIyMCwgCi0gICAgNDIyMjgsIDQyMjM2LCA0MjI0NCwgNDIyNTIsIDQyMjYwLCA0MjI2OCwgNDIyNzYsIDQyMjg0LCA0MjI5MiwgNDIzMDAsIAotICAgIDQyMzA4LCA0MjMxNiwgNDIzMjQsIDQyMzMyLCA0MjM0MCwgNDIzNDgsIDQyMzU2LCA0MjM2NCwgNDIzNzIsIDQyMzc5LCAKLSAgICA0MjM4NywgNDIzOTQsIDQyNDAyLCA0MjQxMCwgNDI0MTgsIDQyNDI2LCA0MjQzNCwgNDI0NDIsIDQyNDUwLCA0MjQ1OCwgCi0gICAgNDI0NjksIDIzNzY0LCA0MjQ3NCwgNDI0NzcsIDQyNDg0LCA0MjQ4OCwgNDI0OTQsIDQyNDk4LCA0MjUwNCwgNDI1MDksIAotICAgIDQyNTE1LCA0MjUyMCwgNDI1MjUsIDQyNTI5LCA0MjUzMywgNDI1MzgsIDQyNTQzLCA0MjU1MywgNDI1NTksIDQyNTcyLCAKLSAgICA0MjU3OCwgNDI1ODQsIDQyNTkwLCA0MjU5NywgNDI2MDIsIDQyNjA4LCA0MjYxMywgMTgxOTgsIDE0NTgsIDgzMSwgNDI2MTgsIAotICAgIDQyNjIxLCA0MjYyNCwgNDI2MjcsIDMzNjExLCAzMzYxNywgNDI2MzAsIDMzNjIzLCAzMzYzNiwgMzM2NDIsIDMzNjQ4LCAKLSAgICA0MjYzNiwgMzM2NTQsIDMzNjYwLCA0MjY0MiwgNDI2NDgsIDI2LCA0MjY1NiwgNDI2NjMsIDQyNjY3LCA0MjY3MSwgNDI2NzksIAotICAgIDM0NDAxLCA0MjY4MywgNDI2ODcsIDQyNjk0LCA0MjY5OSwgNDI3MDMsIDQyNzA4LCA0MjcxNCwgNDI3MTksIDQyNzI1LCAKLSAgICA0MjczMCwgNDI3MzQsIDQyNzM4LCA0Mjc0MiwgNDI3NDcsIDQyNzUxLCA0Mjc1NiwgNDI3NjAsIDQyNzY0LCA0Mjc3MSwgCi0gICAgNDI3NzYsIDQyNzgwLCA0Mjc4NCwgNDI3ODksIDQyNzkzLCA0Mjc5OCwgNDI4MDIsIDQyODA2LCA0MjgxMSwgNDI4MTcsIAotICAgIDE2OTI0LCAxNjkyOSwgNDI4MjIsIDQyODI2LCA0MjgyOSwgNDI4MzMsIDQyODM3LCAyMjg1MiwgNDI4NDIsIDQyODQ2LCAKLSAgICA0Mjg1MiwgNDI4NTksIDQyODY1LCA0Mjg3MCwgNDI4ODAsIDQyODg1LCA0Mjg5MywgNDI4OTcsIDQyOTAwLCAzNDQxNiwgCi0gICAgNDI5MDQsIDQzNTYsIDQyOTA5LCA0MjkxNCwgNDI5MTgsIDQyOTIzLCA0MjkyNywgNDI5MzIsIDE0NTQ4LCA0Mjk0MywgCi0gICAgNDI5NDcsIDQyOTUwLCA0Mjk1NCwgNDI5NTksIDQyOTYzLCA0Mjk2OCwgNDI5NzMsIDQyOTc3LCA0Mjk4MSwgNDI5ODUsIAotICAgIDQyOTg4LCA0Mjk5MiwgODUyMywgMTQ1NjQsIDQyOTk1LCA0Mjk5OCwgNDMwMDQsIDQzMDA5LCA0MzAxNSwgNDMwMjAsIAotICAgIDQzMDI2LCA0MzAzMSwgNDMwMzcsIDQzMDQyLCA0MzA0OCwgNDMwNTQsIDQzMDYwLCA0MzA2NSwgNDMwNjksIDQzMDczLCAKLSAgICA0MzA4MiwgNDMwOTgsIDQzMTE0LCA0MzEyNCwgMzAxNDUsIDQzMTMxLCA0MzEzNSwgNDMxNDAsIDQzMTQ1LCA0MzE0OSwgCi0gICAgNDMxNTMsIDM4OTUxLCA0MzE1OSwgNDMxNjQsIDQzMTY4LCA0MzE3NSwgNDMxODAsIDQzMTg1LCA0MzE4OSwgNDMxOTMsIAotICAgIDQzMTk5LCAyOTA5MywgNDMyMDMsIDIzMTM2LCA0MzIwOCwgNDMyMTUsIDQzMjIzLCA0MzIyOSwgNDMyMzYsIDQzMjQ0LCAKLSAgICA0MzI1MCwgNDMyNTQsIDQzMjU5LCA0MzI2NSwgNDMyNzMsIDQzMjc4LCA0MzI4MiwgNDMyOTEsIDEwMjMyLCA0MzI5OSwgCi0gICAgNDMzMDMsIDQzMzExLCA0MzMxOCwgNDMzMjMsIDQzMzI4LCA0MzMzMywgNDMzMzcsIDQzMzQwLCA0MzM0NCwgNDMzNDcsIAotICAgIDQzMzUxLCA0MzM1OCwgNDMzNjMsIDQzMzY3LCA0MzM3MywgMjg0OTIsIDMzNjc0LCA0MzM3NywgNDMzODYsIDQzMzk0LCAKLSAgICA0MzQwMCwgNDM0MDcsIDQzNDEzLCA0MzQxOSwgNDM0MjQsIDQzNDI3LCA0MzQyOSwgNDM0MzYsIDQzNDQzLCA0MzQ0OSwgCi0gICAgNDM0NTMsIDQzNDU2LCA0MzQ2MCwgNDM0NjQsIDQzNDY4LCA0MzQ3MywgNDM0NzcsIDQzNDgxLCA0MzQ4NCwgNDM0ODgsIAotICAgIDQzNTAyLCAyNDkwNiwgNDM1MjEsIDQzNTM0LCA0MzU0NywgNDM1NjAsIDI0OTI0LCA0MzU3NSwgMTE0MjIsIDQzNTkwLCAKLSAgICA0MzU5NiwgNDM2MDAsIDQzNjA0LCA0MzYwOCwgNDM2MTIsIDQzNjE5LCA0MzYyNCwgNDM2MjgsIDQzNjM1LCA0MzY0MSwgCi0gICAgNDM2NDYsIDQzNjUyLCA0MzY2MiwgNDM2NzQsIDQzNjg1LCA0MzY5MCwgNDM2OTcsIDQzNzAxLCA0MzcwNSwgNDM3MDgsIAotICAgIDE3MzQzLCAzODU1LCA0MzcxNiwgMTY5NTEsIDQzNzI5LCA0MzczNiwgNDM3NDMsIDQzNzQ3LCA0Mzc1MSwgNDM3NTYsIAotICAgIDQzNzYyLCA0Mzc2NywgNDM3NzMsIDQzNzc3LCA0Mzc4MSwgNDM3ODQsIDQzNzg5LCA0Mzc5MywgNDM3OTgsIDgwODIsIAotICAgIDE2OTYyLCA0MzgwMywgNDM4MDcsIDQzODEzLCA0MzgyMiwgNDM4MjcsIDQzODM2LCA0Mzg0MywgMzg3OTksIDQzODQ5LCAKLSAgICA0Mzg1NCwgNDM4NTgsIDQzODYzLCA0Mzg3MCwgNDM4NzYsIDQzODgwLCA0Mzg4MywgNDM4ODcsIDQzODkyLCAxNTg2NCwgCi0gICAgNDM4OTksIDQzOTA2LCA0MzkxMCwgNDM5MTMsIDQzOTE4LCA0MzkyMywgNDM5MjksIDQzOTM0LCA0MzkzOSwgNDM5NDMsIAotICAgIDQzOTQ4LCA0Mzk1OCwgNDM5NjMsIDQzOTY5LCA0Mzk3NCwgNDM5ODAsIDQzOTg1LCA0Mzk5MSwgNDQwMDEsIDQ0MDA2LCAKLSAgICA0NDAxMSwgNDQwMTUsIDQ0MDIwLCA3NTU4LCA3NTcwLCA0NDAyNSwgNDQwMjgsIDQ0MDM1LCA0NDA0MSwgNDQwNTAsIDk0NzcsIAotICAgIDM2NzYwLCA0NDA1OCwgNDQwNjIsIDQ0MDY2LCAzNDQ2NCwgNDQwNzQsIDQ0MDg1LCA0NDA5MywgMzg5OTksIDQ0MTAwLCAKLSAgICA0NDEwNSwgNDQxMTAsIDQ0MTIxLCA0NDEyOCwgNDQxMzksIDM0NDg4LCAyMzE0NywgNDQxNDcsIDkwNywgNDQxNTIsIAotICAgIDE0OTEzLCA0NDE1OCwgMzAyMjksIDQ0MTY0LCA0NDE2OSwgNDQxNzksIDQ0MTg4LCA0NDE5NSwgNDQyMDEsIDQ0MjA1LCAKLSAgICA0NDIwOCwgNDQyMTUsIDQ0MjIxLCA0NDIyOCwgNDQyMzQsIDQ0MjQ0LCA0NDI1MiwgNDQyNTgsIDQ0MjY0LCA0NDI2OSwgCi0gICAgNDQyNzMsIDQ0MjgwLCA0NDI4NSwgNDQyOTEsIDQ0Mjk4LCA0NDMwNCwgNDM0NjksIDQ0MzA5LCA0NDMxMywgNTU4LCAKLSAgICAxNTAyOSwgNDQzMTksIDQ0MzI0LCA0NDMyNywgNDQzMzMsIDQ0MzQxLCAxMzgwLCA0NDM0NiwgNDQzNTAsIDQ0MzU1LCAKLSAgICA0NDM2MCwgNDQzNjUsIDQ0MzcyLCA0NDM3NiwgNDQzODEsIDQ0Mzg3LCA0NDM5MSwgMzM2ODQsIDQ0Mzk2LCA0NDQwMSwgCi0gICAgNDQ0MTAsIDQ0NDE3LCA0NDQyNywgNDQ0MzMsIDMwMjczLCA0NDQ1MCwgNDQ0NTksIDQ0NDY3LCA0NDQ3MywgNDQ0NzgsIAotICAgIDQ0NDg1LCA0NDQ5MSwgNDQ0OTksIDQ0NTA4LCA0NDUxNiwgNDQ1MjAsIDQ0NTI1LCA0NDUzMywgMzEyNTEsIDM0NDk3LCAKLSAgICA0NDUzOSwgNDQ1NTgsIDE3MjU3LCA0NDU3MiwgNDQ1ODgsIDQ0NjAyLCA0NDYwOCwgNDQ2MTMsIDQ0NjE4LCA0NDYyMywgCi0gICAgNDQ2MjksIDM0NTAzLCA0NDYzNCwgNDQ2MzcsIDQ0NjQ0LCA0NDY0OSwgNDQ2NTMsIDQwNCwgMjk5NSwgNDQ2NjAsIDQ0NjY1LCAKLSAgICA0NDY3MCwgMjk0NTEsIDQ0NDg4LCA0NDY3NCwgNDQ2NzksIDQ0Njg3LCA0NDY5MSwgNDQ2OTQsIDQ0Njk5LCA0NDcwNSwgCi0gICAgNDQ3MTEsIDQ0NzE2LCA0NDcyMCwgMzAzMjgsIDQ0NzIzLCA0NDcyOCwgNDQ3MzIsIDQ0NzM1LCA0NDc0MCwgNDQ3NDQsIAotICAgIDQ0NzQ5LCA0NDc1NCwgNDQ3NTgsIDQ0NzYzLCA0NDc2NywgNDQ3NzEsIDQ0Nzc1LCAyMjg0OCwgMjI4NTksIDQ0NzgwLCAKLSAgICA0NDc4NSwgNDQ3OTEsIDQ0Nzk2LCA0NDgwMiwgMjkwNTAsIDQ0ODA3LCA0NDgxMSwgMjI5NDUsIDE3NTQ5LCA0NDgxNCwgCi0gICAgNDQ4MTksIDQ0ODI0LCA0NDgyOSwgNDQ4MzQsIDQ0ODM5LCA0NDg0NCwgNDQ4NDksIDQ3NCwgNjgsIDMzNjk3LCAzMzcwMiwgCi0gICAgMzM3MDcsIDMzNzEzLCAzMzcxOCwgMzM3MjMsIDQ0ODU0LCAzMzcyNywgNDQ4NTgsIDQ0ODYyLCA0NDg2NiwgMzM3MzIsIAotICAgIDMzNzM4LCA0NDg4MCwgMzM3NDksIDMzNzU0LCA0NDg4OCwgNDQ4OTMsIDMzNzYwLCA0NDg5OCwgNDQ5MDMsIDQ0OTA4LCAKLSAgICA0NDkxMywgNDQ5MTksIDQ0OTI1LCA0NDkzMSwgMzM3NzcsIDQ0OTQ0LCA0NDk1MywgNDQ5NTksIDMzNzgxLCA0NDk2MywgCi0gICAgMzM3ODYsIDQ0OTY4LCAzMzc5MSwgMzM3OTYsIDQ0OTcxLCA0NDk3NiwgNDQ5ODAsIDQ0OTg2LCAzMzMzMiwgNDQ5OTMsIAotICAgIDE0Nzk0LCA0NTAwMCwgNDUwMDUsIDMzODAxLCA0NTAwOSwgNDUwMTQsIDQ1MDE5LCA0NTAyNCwgNDUwMjgsIDQ1MDMzLCAKLSAgICA0NTAzOCwgNDUwNDQsIDQ1MDQ5LCA0NTA1NCwgNDUwNjAsIDQ1MDY2LCA0NTA3MSwgNDUwNzUsIDQ1MDgwLCA0NTA4NSwgCi0gICAgNDUwOTAsIDQ1MDk0LCA0NTA5OSwgNDUxMDQsIDQ1MTA5LCA0NTExNSwgNDUxMjEsIDQ1MTI3LCA0NTEzMiwgNDUxMzYsIAotICAgIDQ1MTQxLCA0NTE0NSwgMzM4MDUsIDMzODEwLCAzMzgxNSwgNDUxNDksIDQ1MTUzLCA0NTE1NywgMzM4MjAsIDMzODI2LCAKLSAgICAzMzgzMiwgMzM4NDQsIDQ1MTY5LCAyODA1OSwgNDUxNzMsIDQ1MTc4LCA0NTE4MiwgNDUxODcsIDQ1MTk0LCA0NTE5OSwgCi0gICAgNDUyMDQsIDQ1MjA5LCA0NTIxMywgNDUyMTcsIDQ1MjI3LCA0NTIzMiwgNDUyMzcsIDQ1MjQxLCA0NTI0NSwgNDUyNDgsIAotICAgIDQ1MjU2LCAzMzg5MiwgNDUyNjEsIDE0NjUsIDQ1MjY3LCA0NTI3MiwgNDUyNzgsIDQ1Mjg2LCA0NTI5MCwgNDUyOTksIAotICAgIDQ1MzAzLCA0NTMwNywgNDUzMTUsIDQ1MzIxLCA0NTMyOSwgNDUzNDUsIDQ1MzQ5LCA0NTM1MywgNDUzNTcsIDQ1MzYyLCAKLSAgICA0NTM2OCwgNDUzODMsIDMzOTI5LCAxNzY0LCAxMzE5OCwgNDUzODcsIDEzNTksIDEzNzQsIDQ1Mzk5LCA0NTQwNywgNDU0MTQsIAotICAgIDQ1NDE5LCA0NTQyNiwgNDU0MzEsIDk5MjIsIDExMzksIDI1NDQsIDExMjEzLCA0NTQzOCwgOTgyMCwgNDU0NDMsIDQ1NDQ2LCAKLSAgICA0NTQ1NSwgMTI2NywgNDU0NjAsIDQzNjI1LCA0NTQ2NywgNDU0NzYsIDQ1NDgxLCA0NTQ4NSwgNDU0OTMsIDI0MzE3LCAKLSAgICAyNTk2LCA0NTUwMCwgMTE2NzgsIDQ1NTEwLCA0NTUxNiwgMjM3MSwgMjM4MSwgNDU1MjUsIDQ1NTM0LCA0NTU0NCwgNDU1NTUsIAotICAgIDMzNzYsIDM3MDk5LCA0NTU2MCwgMTEyNzcsIDQwMTksIDE4MjM2LCAxMjcyLCA0NTU2NCwgNDU1NzIsIDQ1NTc5LCA0NTU4NCwgCi0gICAgNDU1ODgsIDQ1NTkyLCAyNTc5MiwgNDM4OTQsIDExMzA0LCA0NTYwMCwgNDU2MDksIDQ1NjE4LCA0NTYyNiwgNDU2MzMsIAotICAgIDQ1NjQ0LCA0NTY0OSwgNDU2NjIsIDQ1Njc1LCA0NTY4NywgNDU2OTksIDQ1NzExLCA0NTcyMiwgNDU3MzUsIDQ1NzQ2LCAKLSAgICA0NTc1NywgNDU3NjcsIDQ1Nzc1LCA0NTc4MywgNDU3OTUsIDQ1ODA3LCA0NTgxOCwgNDU4MjcsIDQ1ODM1LCA0NTg0MiwgCi0gICAgNDU4NTQsIDQ1ODYxLCA0NTg2NywgNDU4NzYsIDQ1ODgzLCA0NTg5NiwgNDU5MDEsIDQ1OTExLCA0NTkxNiwgNDU5MjIsIAotICAgIDQ1OTI3LCA0MTA4NiwgNDU5MzEsIDQ1OTM4LCA0NTk0MiwgNDU5NDksIDQ1OTU3LCA0NTk2NCwgMjU1NywgNDU5NzEsIAotICAgIDQ1OTgyLCA0NTk5MiwgNDYwMDEsIDQ2MDA5LCA0NjAxOSwgNDYwMjcsIDQ2MDM3LCA0NjA0NiwgNDYwNTEsIDQ2MDU3LCAKLSAgICA0NjA2MywgMzg5OSwgNDYwNzQsIDQ2MDg0LCA0NjA5MywgNDYxMDIsIDQ2MTEwLCA0NjEyMCwgNDYxMjgsIDQ2MTM3LCAKLSAgICA0NjE0MiwgNDYxNDcsIDQ2MTUyLCAxNjk0LCA0NywgNDYxNjAsIDQ2MTY4LCA0NjE3OSwgNDYxOTAsIDE3ODc1LCA0NjIwMCwgCi0gICAgNDYyMDQsIDQ2MjExLCA0NjIxNywgNDYyMjIsIDQ2MjI2LCA0NjIzNywgNDYyNDcsIDQ2MjU2LCA0NjI2NywgMTgyNzUsIAotICAgIDE4MjgwLCA0NjI3MiwgNDYyODEsIDQ2Mjg2LCA0NjI5NiwgNDYzMDEsIDQ2MzA5LCA0NjMxNywgNDYzMjQsIDQ2MzMwLCAKLSAgICAxNjU2LCAyNzcsIDQ2MzM0LCA0NjM0MCwgNDYzNDUsIDQ2MzQ4LCAyMTQzLCA0Mzc0OCwgNDYzNTYsIDQ2MzYwLCA0NjM2MywgCi0gICAgMTUxMCwgNDYzNjksIDE1MjE0LCAxMjc3LCA0NjM3NCwgNDYzODcsIDQ2NDAxLCAyNjgyLCA0NjQxOSwgNDY0MzEsIDQ2NDQzLCAKLSAgICAyNjk2LCAyNzEzLCA0NjQ1NywgNDY0NzAsIDI3MjgsIDQ2NDg0LCA0NjQ5NiwgMjc0MywgNDY1MTAsIDEyODMsIDEyODksIAotICAgIDEyOTUsIDExNTg0LCA0NjUxNSwgNDY1MjAsIDQ2NTI1LCA0NjUyOSwgNDY1NDQsIDQ2NTU5LCA0NjU3NCwgNDY1ODksIAotICAgIDQ2NjA0LCA0NjYxOSwgNDY2MzQsIDQ2NjQ5LCA0NjY2NCwgNDY2NzksIDQ2Njk0LCA0NjcwOSwgNDY3MjQsIDQ2NzM5LCAKLSAgICA0Njc1NCwgNDY3NjksIDQ2Nzg0LCA0Njc5OSwgNDY4MTQsIDQ2ODI5LCA0Njg0NCwgNDY4NTksIDQ2ODc0LCA0Njg4OSwgCi0gICAgNDY5MDQsIDQ2OTE5LCA0NjkzNCwgNDY5NDksIDQ2OTY0LCA0Njk3OSwgNDY5OTQsIDQ3MDA5LCA0NzAyNCwgNDcwMzksIAotICAgIDQ3MDU0LCA0NzA2OSwgNDcwODQsIDQ3MDk5LCA0NzExNCwgNDcxMjksIDQ3MTQ0LCA0NzE1OSwgNDcxNzQsIDQ3MTg5LCAKLSAgICA0NzIwNCwgNDcyMTksIDQ3MjM0LCA0NzI0OSwgNDcyNjQsIDQ3Mjc5LCA0NzI5NCwgNDczMDksIDQ3MzI0LCA0NzMzOSwgCi0gICAgNDczNTQsIDQ3MzY5LCA0NzM4NCwgNDczOTksIDQ3NDE0LCA0NzQyOSwgNDc0NDQsIDQ3NDU5LCA0NzQ3NCwgNDc0ODksIAotICAgIDQ3NTA0LCA0NzUxOSwgNDc1MzQsIDQ3NTQ5LCA0NzU2NCwgNDc1NzksIDQ3NTk0LCA0NzYwOSwgNDc2MjQsIDQ3NjM5LCAKLSAgICA0NzY1NCwgNDc2NjksIDQ3Njg0LCA0NzY5OSwgNDc3MTQsIDQ3NzI5LCA0Nzc0NCwgNDc3NTksIDQ3Nzc0LCA0Nzc4OSwgCi0gICAgNDc4MDQsIDQ3ODE5LCA0NzgzNCwgNDc4NDksIDQ3ODY0LCA0Nzg3OSwgNDc4OTQsIDQ3OTA5LCA0NzkyNCwgNDc5MzksIAotICAgIDQ3OTU0LCA0Nzk2OSwgNDc5ODQsIDQ3OTk5LCA0ODAxNCwgNDgwMjksIDQ4MDQ0LCA0ODA1OSwgNDgwNzQsIDQ4MDg5LCAKLSAgICA0ODEwNCwgNDgxMTksIDQ4MTM0LCA0ODE0OSwgNDgxNjQsIDQ4MTc5LCA0ODE5NCwgNDgyMDksIDQ4MjI0LCA0ODIzOSwgCi0gICAgNDgyNTQsIDQ4MjY5LCA0ODI4NCwgNDgyOTksIDQ4MzE0LCA0ODMyOSwgNDgzNDQsIDQ4MzU5LCA0ODM3NCwgNDgzODksIAotICAgIDQ4NDA0LCA0ODQxOSwgNDg0MzQsIDQ4NDQ5LCA0ODQ2NCwgNDg0NzksIDQ4NDk0LCA0ODUwOSwgNDg1MjQsIDQ4NTM5LCAKLSAgICA0ODU1NCwgNDg1NjksIDQ4NTg0LCA0ODU5OSwgNDg2MTQsIDQ4NjI5LCA0ODY0NCwgNDg2NTksIDQ4Njc0LCA0ODY4OSwgCi0gICAgNDg3MDQsIDQ4NzE5LCA0ODczNCwgNDg3NDksIDQ4NzY0LCA0ODc3OSwgNDg3OTQsIDQ4ODA5LCA0ODgyNCwgNDg4MzksIAotICAgIDQ4ODU0LCA0ODg2OSwgNDg4ODQsIDQ4ODk5LCA0ODkxNCwgNDg5MjksIDQ4OTQ0LCA0ODk1OSwgNDg5NzQsIDQ4OTg5LCAKLSAgICA0OTAwNCwgNDkwMTksIDQ5MDM0LCA0OTA0OSwgNDkwNjQsIDQ5MDc5LCA0OTA5NCwgNDkxMDksIDQ5MTI0LCA0OTEzOSwgCi0gICAgNDkxNTQsIDQ5MTY5LCA0OTE4NCwgNDkxOTksIDQ5MjE0LCA0OTIyOSwgNDkyNDQsIDQ5MjU5LCA0OTI3NCwgNDkyODksIAotICAgIDQ5MzA0LCA0OTMxOSwgNDkzMzQsIDQ5MzQ5LCA0OTM2NCwgNDkzNzksIDQ5Mzk0LCA0OTQwOSwgNDk0MjQsIDQ5NDM5LCAKLSAgICA0OTQ1NCwgNDk0NjksIDQ5NDg0LCA0OTQ5OSwgNDk1MTQsIDQ5NTI5LCA0OTU0NCwgNDk1NTksIDQ5NTc0LCA0OTU4OSwgCi0gICAgNDk2MDQsIDQ5NjE5LCA0OTYzNCwgNDk2NDksIDQ5NjY0LCA0OTY3OSwgNDk2OTQsIDQ5NzA5LCA0OTcyNCwgNDk3MzksIAotICAgIDQ5NzU0LCA0OTc2OSwgNDk3ODQsIDQ5Nzk5LCA0OTgxNCwgNDk4MjksIDQ5ODQ0LCA0OTg1OSwgNDk4NzQsIDQ5ODg5LCAKLSAgICA0OTkwNCwgNDk5MTksIDQ5OTM0LCA0OTk0OSwgNDk5NjQsIDQ5OTc5LCA0OTk5NCwgNTAwMDksIDUwMDI0LCA1MDAzOSwgCi0gICAgNTAwNTQsIDUwMDY5LCA1MDA4NCwgNTAwOTksIDUwMTE0LCA1MDEyOSwgNTAxNDQsIDUwMTU5LCA1MDE3NCwgNTAxODksIAotICAgIDUwMjA0LCA1MDIxOSwgNTAyMzQsIDUwMjQ5LCA1MDI2NCwgNTAyNzksIDUwMjk0LCA1MDMwOSwgNTAzMjQsIDUwMzM5LCAKLSAgICA1MDM1NCwgNTAzNjksIDUwMzg0LCA1MDM5OSwgNTA0MTQsIDUwNDI5LCA1MDQ0NCwgNTA0NTksIDUwNDc0LCA1MDQ4OSwgCi0gICAgNTA1MDQsIDUwNTE5LCA1MDUzNCwgNTA1NDksIDUwNTY0LCA1MDU3OSwgNTA1OTQsIDUwNjA5LCA1MDYyNCwgNTA2MzksIAotICAgIDUwNjU0LCA1MDY2OSwgNTA2ODQsIDUwNjk5LCA1MDcxNCwgNTA3MjksIDUwNzQ0LCA1MDc1OSwgNTA3NzQsIDUwNzg5LCAKLSAgICA1MDgwNCwgNTA4MTksIDUwODM0LCA1MDg0OSwgNTA4NjQsIDUwODc5LCA1MDg5NCwgNTA5MDksIDUwOTI0LCA1MDkzOSwgCi0gICAgNTA5NTQsIDUwOTY5LCA1MDk4NCwgNTA5OTksIDUxMDE0LCA1MTAyOSwgNTEwNDQsIDUxMDU5LCA1MTA3NCwgNTEwODksIAotICAgIDUxMTA0LCA1MTExOSwgNTExMzQsIDUxMTQ5LCA1MTE2NCwgNTExNzksIDUxMTk0LCA1MTIwOSwgNTEyMjQsIDUxMjM5LCAKLSAgICA1MTI1NCwgNTEyNjksIDUxMjg0LCA1MTI5OSwgNTEzMTQsIDUxMzI5LCA1MTM0NCwgNTEzNTksIDUxMzc0LCA1MTM4OSwgCi0gICAgNTE0MDQsIDUxNDE5LCA1MTQzNCwgNTE0NDksIDUxNDY0LCA1MTQ3OSwgNTE0OTQsIDUxNTA5LCA1MTUyNCwgNTE1MzksIAotICAgIDUxNTU0LCA1MTU2OSwgNTE1ODQsIDUxNTk5LCA1MTYxNCwgNTE2MjksIDUxNjQ0LCA1MTY1OSwgNTE2NzQsIDUxNjg5LCAKLSAgICA1MTcwNCwgNTE3MTksIDUxNzM0LCA1MTc0OSwgNTE3NjQsIDUxNzc5LCA1MTc5NCwgNTE4MDksIDUxODI0LCA1MTgzOSwgCi0gICAgNTE4NTQsIDUxODY5LCA1MTg4NCwgNTE4OTksIDUxOTE0LCA1MTkyOSwgNTE5NDQsIDUxOTU5LCA1MTk3NCwgNTE5ODksIAotICAgIDUyMDA0LCA1MjAxOSwgNTIwMzQsIDUyMDQ5LCA1MjA2NCwgNTIwNzksIDUyMDk0LCA1MjEwOSwgNTIxMjQsIDUyMTM5LCAKLSAgICA1MjE1NCwgNTIxNjksIDUyMTg0LCA1MjE5OSwgNTIyMTQsIDUyMjI5LCA1MjI0NCwgNTIyNTksIDUyMjc0LCA1MjI4OSwgCi0gICAgNTIzMDQsIDUyMzE5LCA1MjMzNCwgNTIzNDksIDUyMzY0LCA1MjM3OSwgNTIzOTQsIDUyNDA5LCA1MjQyNCwgNTI0MzksIAotICAgIDUyNDU0LCA1MjQ2OSwgNTI0ODQsIDUyNDk5LCA1MjUxNCwgNTI1MjksIDUyNTQ0LCA1MjU1OSwgNTI1NzQsIDUyNTg5LCAKLSAgICA1MjYwNCwgNTI2MTksIDUyNjM0LCA1MjY0OSwgNTI2NjQsIDUyNjc5LCA1MjY5NCwgNTI3MDksIDUyNzI0LCA1MjczOSwgCi0gICAgNTI3NTQsIDUyNzY5LCA1Mjc4NCwgNTI3OTksIDUyODE0LCA1MjgyOSwgNTI4NDQsIDUyODU5LCA1Mjg3NCwgNTI4ODksIAotICAgIDUyOTA0LCA1MjkxOSwgNTI5MzQsIDUyOTQ5LCA1Mjk2NCwgNTI5NzksIDUyOTk0LCA1MzAwOSwgNTMwMjQsIDUzMDM5LCAKLSAgICA1MzA1NCwgNTMwNjksIDUzMDg0LCA1MzA5OSwgNTMxMTQsIDUzMTI5LCA1MzE0NCwgNTMxNTksIDUzMTc0LCA1MzE4OSwgCi0gICAgNTMyMDQsIDUzMjE5LCA1MzIzNCwgNTMyNDksIDUzMjY0LCA1MzI3OSwgNTMyOTQsIDUzMzA5LCA1MzMyNCwgNTMzMzksIAotICAgIDUzMzU0LCA1MzM2OSwgNTMzODQsIDUzMzk5LCA1MzQxNCwgNTM0MjksIDUzNDQ0LCA1MzQ1OSwgNTM0NzQsIDUzNDg5LCAKLSAgICA1MzUwNCwgNTM1MTksIDUzNTM0LCA1MzU0OSwgNTM1NjQsIDUzNTc5LCA1MzU5NCwgNTM2MDksIDUzNjI0LCA1MzYzOSwgCi0gICAgNTM2NTQsIDUzNjY5LCA1MzY4NCwgNTM2OTksIDUzNzE0LCA1MzcyOSwgNTM3NDQsIDUzNzU5LCA1Mzc3NCwgNTM3ODksIAotICAgIDUzODA0LCA1MzgxOSwgNTM4MzQsIDUzODQ5LCA1Mzg2NCwgNTM4NzksIDUzODk0LCA1MzkwOSwgNTM5MjQsIDUzOTM5LCAKLSAgICA1Mzk1NCwgNTM5NjksIDUzOTg0LCA1Mzk5OSwgNTQwMTQsIDU0MDI5LCA1NDA0NCwgNTQwNTksIDU0MDc0LCA1NDA4OSwgCi0gICAgNTQxMDQsIDU0MTE5LCA1NDEzNCwgNTQxNDksIDU0MTY0LCA1NDE3OSwgNTQxOTQsIDU0MjA5LCA1NDIyNCwgNTQyMzksIAotICAgIDU0MjU0LCA1NDI2OSwgNTQyODQsIDU0Mjk5LCA1NDMxNCwgNTQzMjksIDU0MzQ1LCA1NDM2MSwgNTQzNzcsIDU0MzkzLCAKLSAgICA1NDQwOSwgNTQ0MjUsIDU0NDQxLCA1NDQ1NywgNTQ0NzMsIDU0NDg5LCA1NDUwNSwgNTQ1MjEsIDU0NTM3LCA1NDU1MywgCi0gICAgNTQ1NjksIDU0NTg1LCA1NDYwMSwgNTQ2MTcsIDU0NjMzLCA1NDY0OSwgNTQ2NjUsIDU0NjgxLCA1NDY5NywgNTQ3MTMsIAotICAgIDU0NzI5LCA1NDc0NSwgNTQ3NjEsIDU0Nzc3LCA1NDc5MywgNTQ4MDksIDU0ODI1LCA1NDg0MSwgNTQ4NTcsIDU0ODczLCAKLSAgICA1NDg4OSwgNTQ5MDUsIDU0OTIxLCA1NDkzNywgNTQ5NTMsIDU0OTY5LCA1NDk4NSwgNTUwMDEsIDU1MDE3LCA1NTAzMywgCi0gICAgNTUwNDksIDU1MDY1LCA1NTA4MSwgNTUwOTcsIDU1MTEzLCA1NTEyOSwgNTUxNDUsIDU1MTYxLCA1NTE3NywgNTUxOTMsIAotICAgIDU1MjA5LCA1NTIyNSwgNTUyNDEsIDU1MjU3LCA1NTI3MywgNTUyODksIDU1MzA1LCA1NTMyMSwgNTUzMzcsIDU1MzUzLCAKLSAgICA1NTM2OSwgNTUzODUsIDU1NDAxLCA1NTQxNywgNTU0MzMsIDU1NDQ5LCA1NTQ2NSwgNTU0ODEsIDU1NDk3LCA1NTUxMywgCi0gICAgNTU1MjksIDU1NTQ1LCA1NTU2MSwgNTU1NzcsIDU1NTkzLCA1NTYwOSwgNTU2MjUsIDU1NjQxLCA1NTY1NywgNTU2NzMsIAotICAgIDU1Njg5LCA1NTcwNSwgNTU3MjEsIDU1NzM3LCA1NTc1MywgNTU3NjksIDU1Nzg1LCA1NTgwMSwgNTU4MTcsIDU1ODMzLCAKLSAgICA1NTg0OSwgNTU4NjUsIDU1ODgxLCA1NTg5NywgNTU5MTMsIDU1OTI5LCA1NTk0NSwgNTU5NjEsIDU1OTc3LCA1NTk5MywgCi0gICAgNTYwMDksIDU2MDI1LCA1NjA0MSwgNTYwNTcsIDU2MDczLCA1NjA4OSwgNTYxMDUsIDU2MTIxLCA1NjEzNywgNTYxNTMsIAotICAgIDU2MTY5LCA1NjE4NSwgNTYyMDEsIDU2MjE3LCA1NjIzMywgNTYyNDksIDU2MjY1LCA1NjI4MSwgNTYyOTcsIDU2MzEzLCAKLSAgICA1NjMyOSwgNTYzNDUsIDU2MzYxLCA1NjM3NywgNTYzOTMsIDU2NDA5LCA1NjQyNSwgNTY0NDEsIDU2NDU3LCA1NjQ3MywgCi0gICAgNTY0ODksIDU2NTA1LCA1NjUyMSwgNTY1MzcsIDU2NTUzLCA1NjU2OSwgNTY1ODUsIDU2NjAxLCA1NjYxNywgNTY2MzMsIAotICAgIDU2NjQ5LCA1NjY2NSwgNTY2ODEsIDU2Njk3LCA1NjcxMywgNTY3MjksIDU2NzQ1LCA1Njc2MSwgNTY3NzcsIDU2NzkzLCAKLSAgICA1NjgwOSwgNTY4MjUsIDU2ODQxLCA1Njg1NywgNTY4NzMsIDU2ODg5LCA1NjkwNSwgNTY5MjEsIDU2OTM3LCA1Njk1MywgCi0gICAgNTY5NjksIDU2OTg1LCA1NzAwMSwgNTcwMTcsIDU3MDMzLCA1NzA0OSwgNTcwNjUsIDU3MDgxLCA1NzA5NywgNTcxMTMsIAotICAgIDU3MTI5LCA1NzE0NSwgNTcxNjEsIDU3MTc3LCA1NzE5MywgNTcyMDksIDU3MjI1LCA1NzI0MSwgNTcyNTcsIDU3MjczLCAKLSAgICA1NzI4OSwgNTczMDUsIDU3MzIxLCA1NzMzNywgNTczNTMsIDU3MzY5LCA1NzM4NSwgNTc0MDEsIDU3NDE3LCA1NzQzMywgCi0gICAgNTc0NDksIDU3NDY1LCA1NzQ4MSwgNTc0OTcsIDU3NTEzLCA1NzUyOSwgNTc1NDUsIDU3NTYxLCA1NzU3NywgNTc1OTMsIAotICAgIDU3NjA5LCA1NzYyNSwgNTc2NDEsIDU3NjU3LCA1NzY3MywgNTc2ODksIDU3NzA1LCA1NzcyMSwgNTc3MzcsIDU3NzUzLCAKLSAgICA1Nzc2OSwgNTc3ODUsIDU3ODAxLCA1NzgxNywgNTc4MzMsIDU3ODQ5LCA1Nzg2NSwgNTc4ODEsIDU3ODk3LCA1NzkxMywgCi0gICAgNTc5MjksIDU3OTQ1LCA1Nzk2MSwgNTc5NzcsIDU3OTkzLCA1ODAwOSwgNTgwMjUsIDU4MDQxLCA1ODA1NywgNTgwNzMsIAotICAgIDU4MDg5LCA1ODEwNSwgNTgxMjEsIDU4MTM3LCA1ODE1MywgNTgxNjksIDU4MTg1LCA1ODIwMSwgNTgyMTcsIDU4MjMzLCAKLSAgICA1ODI0OSwgNTgyNjUsIDU4MjgxLCA1ODI5NywgNTgzMTMsIDU4MzI5LCA1ODM0NSwgNTgzNjEsIDU4Mzc3LCA1ODM5MywgCi0gICAgNTg0MDksIDU4NDI1LCA1ODQ0MSwgNTg0NTcsIDU4NDczLCA1ODQ4OSwgNTg1MDUsIDU4NTIxLCA1ODUzNywgNTg1NTMsIAotICAgIDU4NTY5LCA1ODU4NSwgNTg2MDEsIDU4NjE3LCA1ODYzMywgNTg2NDksIDU4NjY1LCA1ODY4MSwgNTg2OTcsIDU4NzEzLCAKLSAgICA1ODcyOSwgNTg3NDUsIDU4NzYxLCA1ODc3NywgNTg3OTMsIDU4ODA5LCA1ODgyNSwgNTg4NDEsIDU4ODU3LCA1ODg3MywgCi0gICAgNTg4ODksIDU4OTA1LCA1ODkyMSwgNTg5MzcsIDU4OTUzLCA1ODk2OSwgNTg5ODUsIDU5MDAxLCA1OTAxNywgNTkwMzMsIAotICAgIDU5MDQ5LCA1OTA2NSwgNTkwODEsIDU5MDk3LCA1OTExMywgNTkxMjksIDU5MTQ1LCA1OTE2MSwgNTkxNzcsIDU5MTkzLCAKLSAgICA1OTIwOSwgNTkyMjUsIDU5MjQxLCA1OTI1NywgNTkyNzMsIDU5Mjg5LCA1OTMwNSwgNTkzMjEsIDU5MzM3LCA1OTM1MywgCi0gICAgNTkzNjksIDU5Mzg1LCA1OTQwMSwgNTk0MTcsIDU5NDMzLCA1OTQ0OSwgNTk0NjUsIDU5NDgxLCA1OTQ5NywgNTk1MTMsIAotICAgIDU5NTI5LCA1OTU0NSwgNTk1NjEsIDU5NTc3LCA1OTU5MywgNTk2MDksIDU5NjI1LCA1OTY0MSwgNTk2NTcsIDU5NjczLCAKLSAgICA1OTY4OSwgNTk3MDUsIDU5NzIxLCA1OTczNywgNTk3NTMsIDU5NzY5LCA1OTc4NSwgNTk4MDEsIDU5ODE3LCA1OTgzMywgCi0gICAgNTk4NDksIDU5ODY1LCA1OTg4MSwgNTk4OTcsIDU5OTEzLCA1OTkyOSwgNTk5NDUsIDU5OTYxLCA1OTk3NywgNTk5OTMsIAotICAgIDYwMDA5LCA2MDAyNSwgNjAwNDEsIDYwMDU3LCA2MDA3MywgNjAwODksIDYwMTA1LCA2MDEyMSwgNjAxMzcsIDYwMTUzLCAKLSAgICA2MDE2OSwgNjAxODUsIDYwMjAxLCA2MDIxNywgNjAyMzMsIDYwMjQ5LCA2MDI2NSwgNjAyODEsIDYwMjk3LCA2MDMxMywgCi0gICAgNjAzMjksIDYwMzQ1LCA2MDM2MSwgNjAzNzcsIDYwMzkzLCA2MDQwOSwgNjA0MjUsIDYwNDQxLCA2MDQ1NywgNjA0NzMsIAotICAgIDYwNDg5LCA2MDUwNSwgNjA1MjEsIDYwNTM3LCA2MDU1MywgNjA1NjksIDYwNTg1LCA2MDYwMSwgNjA2MTcsIDYwNjMzLCAKLSAgICA2MDY0OSwgNjA2NjUsIDYwNjgxLCA2MDY5NywgNjA3MTMsIDYwNzI5LCA2MDc0NSwgNjA3NjEsIDYwNzc3LCA2MDc5MywgCi0gICAgNjA4MDksIDYwODI1LCA2MDg0MSwgNjA4NTcsIDYwODczLCA2MDg4OSwgNjA5MDUsIDYwOTIxLCA2MDkzNywgNjA5NTMsIAotICAgIDYwOTY5LCA2MDk4NSwgNjEwMDEsIDYxMDE3LCA2MTAzMywgNjEwNDksIDYxMDY1LCA2MTA4MSwgNjEwOTcsIDYxMTEzLCAKLSAgICA2MTEyOSwgNjExNDUsIDYxMTYxLCA2MTE3NywgNjExOTMsIDYxMjA5LCA2MTIyNSwgNjEyNDEsIDYxMjU3LCA2MTI3MywgCi0gICAgNjEyODksIDYxMzA1LCA2MTMyMSwgNjEzMzcsIDYxMzUzLCA2MTM2OSwgNjEzODUsIDYxNDAxLCA2MTQxNywgNjE0MzMsIAotICAgIDYxNDQ5LCA2MTQ2NSwgNjE0ODEsIDYxNDk3LCA2MTUxMywgNjE1MjksIDYxNTQ1LCA2MTU2MSwgNjE1NzcsIDYxNTkzLCAKLSAgICA2MTYwOSwgNjE2MjUsIDYxNjQxLCA2MTY1NywgNjE2NzMsIDYxNjg5LCA2MTcwNSwgNjE3MjEsIDYxNzM3LCA2MTc1MywgCi0gICAgNjE3NjksIDYxNzg1LCA2MTgwMSwgNjE4MTcsIDYxODMzLCA2MTg0OSwgNjE4NjUsIDYxODgxLCA2MTg5NywgNjE5MTMsIAotICAgIDYxOTI5LCA2MTk0NSwgNjE5NjEsIDYxOTc3LCA2MTk5MywgNjIwMDksIDYyMDI1LCA2MjA0MSwgNjIwNTcsIDYyMDczLCAKLSAgICA2MjA4OSwgNjIxMDUsIDYyMTIxLCA2MjEzNywgNjIxNTMsIDYyMTY5LCA2MjE4NSwgNjIyMDEsIDYyMjE3LCA2MjIzMywgCi0gICAgNjIyNDksIDYyMjY1LCA2MjI4MSwgNjIyOTcsIDYyMzEzLCA2MjMyOSwgNjIzNDUsIDYyMzYxLCA2MjM3NywgNjIzOTMsIAotICAgIDYyNDA5LCA2MjQyNSwgNjI0NDEsIDYyNDU3LCA2MjQ3MywgNjI0ODksIDYyNTA1LCA2MjUyMSwgNjI1MzcsIDYyNTUzLCAKLSAgICA2MjU2OSwgNjI1ODUsIDYyNjAxLCA2MjYxNywgNjI2MzMsIDYyNjQ5LCA2MjY2NSwgNjI2ODEsIDYyNjk3LCA2MjcxMywgCi0gICAgNjI3MjksIDYyNzQ1LCA2Mjc2MSwgNjI3NzcsIDYyNzkzLCA2MjgwOSwgNjI4MjUsIDYyODQxLCA2Mjg1NywgNjI4NzMsIAotICAgIDYyODg5LCA2MjkwNSwgNjI5MjEsIDYyOTM3LCA2Mjk1MywgNjI5NjksIDYyOTg1LCA2MzAwMSwgNjMwMTYsIDE4MzA3LCAKLSAgICA2MzAyNSwgNjMwMzAsIDYzMDM2LCA2MzA0MiwgNjMwNTIsIDYzMDYwLCAxNjI3MCwgMTY4NjgsIDEwNzMzLCA2MzA3MywgCi0gICAgMTUxOCwgMTUyMiwgNjMwODEsIDM5NzMsIDI5NTY2LCA3NTEyLCA2MzA4NywgNjMwOTIsIDYzMDk3LCA2MzEwMiwgNjMxMDcsIAotICAgIDYzMTEzLCA2MzExOCwgNjMxMjQsIDYzMTI5LCA2MzEzNSwgNjMxNDAsIDYzMTQ1LCA2MzE1MCwgNjMxNTUsIDYzMTYxLCAKLSAgICA2MzE2NiwgNjMxNzEsIDYzMTc2LCA2MzE4MSwgNjMxODYsIDYzMTkxLCA2MzE5NiwgNjMyMDIsIDYzMjA3LCA2MzIxMywgCi0gICAgNjMyMjAsIDI2MDAsIDYzMjI1LCA2MzIzMSwgODkxMiwgNjMyMzUsIDYzMjQwLCA2MzI0NywgNjMyNTUsIDY1LCA2MzI1OSwgCi0gICAgNjMyNjUsIDYzMjcwLCA2MzI3NSwgNjMyNzksIDYzMjg0LCA2MzI4OCwgNjMyOTIsIDExNjIxLCA2MzI5NiwgNjMzMDYsIAotICAgIDYzMzE5LCA2MzMzMCwgNjMzNDMsIDYzMzUwLCA2MzM1NiwgNjMzNjQsIDYzMzY5LCA2MzM3NSwgNjMzODEsIDYzMzg3LCAKLSAgICA2MzM5MiwgNjMzOTcsIDYzNDAyLCA2MzQwNywgNjM0MTEsIDYzNDE2LCA2MzQyMSwgNjM0MjYsIDYzNDMyLCA2MzQzOCwgCi0gICAgNjM0NDQsIDYzNDQ5LCA2MzQ1MywgNjM0NTgsIDYzNDYzLCA2MzQ2NywgNjM0NzIsIDYzNDc3LCA2MzQ4MiwgNjM0ODYsIAotICAgIDExNjM3LCAxMTY0OCwgMTE2NTMsIDE1NjEsIDYzNDkwLCA2MzQ5NiwgMTU2NiwgNjM1MDEsIDYzNTA0LCAxNzc0MSwgCi0gICAgNjM1MDksIDYzNTE1LCA2MzUyMCwgMTU5NywgNjM1MjYsIDE2MDMsIDE2MDksIDExNjgzLCA2MzUzMSwgNjM1NDAsIDYzNTQ4LCAKLSAgICA2MzU1NSwgNjM1NTksIDYzNTYzLCA2MzU2OSwgNjM1NzQsIDMzMzY1LCA2MzU3OSwgNjM1ODYsIDYzNTkzLCA2MzU5OCwgCi0gICAgNjM2MDIsIDYzNjA2LCA2MzYxNSwgMTYxNCwgMTc4NTAsIDYzNjIwLCA2MzYyNCwgMTc4NjEsIDExNjIsIDYzNjI4LCAKLSAgICA2MzYzNSwgNjM2NDAsIDYzNjQ0LCAxNzg5MSwgMTYxOCwgNDEyNDMsIDYzNjQ3LCA2MzY1MiwgNjM2NjIsIDYzNjcxLCAKLSAgICA2MzY3NiwgNjM2ODAsIDYzNjg2LCAxNjIzLCA0Mzg1NSwgNjM2OTEsIDYzNzAwLCA2MzcwNiwgNjM3MTEsIDYzNzE2LCAKLSAgICAxMTg4MiwgMTE4ODgsIDYzNzIyLCA2MzczNCwgNjM3NTEsIDYzNzY4LCA2Mzc4NSwgNjM4MDIsIDYzODE5LCA2MzgzNiwgCi0gICAgNjM4NTMsIDYzODcwLCA2Mzg4NywgNjM5MDQsIDYzOTIxLCA2MzkzOCwgNjM5NTUsIDYzOTcyLCA2Mzk4OSwgNjQwMDYsIAotICAgIDY0MDIzLCA2NDA0MCwgNjQwNTcsIDY0MDc0LCA2NDA5MSwgNjQxMDgsIDY0MTI1LCA2NDE0MiwgNjQxNTksIDY0MTc2LCAKLSAgICA2NDE5MywgNjQyMTAsIDY0MjI3LCA2NDI0NCwgNjQyNjEsIDY0Mjc4LCA2NDI5NSwgNjQzMTIsIDY0MzI5LCA2NDM0NiwgCi0gICAgNjQzNjMsIDY0MzgwLCA2NDM5NywgNjQ0MTQsIDY0NDMxLCA2NDQ0OCwgNjQ0NjUsIDY0NDgyLCA2NDQ5OSwgNjQ1MTYsIAotICAgIDY0NTMzLCA2NDU1MCwgNjQ1NjcsIDY0NTc4LCA2NDU4OCwgNjQ1OTMsIDE2MjgsIDY0NTk3LCA2NDYwMiwgNjQ2MDgsIAotICAgIDY0NjEzLCA2NDYxOCwgNjQ2MjUsIDk4MzksIDE2MzMsIDY0NjMxLCA2NDY0MCwgMjk4ODcsIDY0NjQ1LCA2NDY1NiwgCi0gICAgMTE4OTksIDY0NjY2LCA2NDY3MSwgNjQ2NzcsIDY0NjgyLCA2NDY4OSwgNjQ2OTUsIDY0NzAwLCAxNjM4LCAxODE3NCwgCi0gICAgNjQ3MDUsIDY0NzExLCAxMTkwOSwgMTY0MywgMTE5MTQsIDY0NzE3LCA2NDcyMiwgNjQ3MjgsIDY0NzMzLCA2NDczOCwgCi0gICAgNjQ3NDMsIDY0NzQ4LCA2NDc1MywgNjQ3NTgsIDY0NzYzLCA2NDc2OCwgNjQ3NzQsIDY0NzgwLCA2NDc4NiwgNjQ3OTEsIAotICAgIDY0Nzk1LCA2NDgwMCwgNjQ4MDUsIDY0ODA5LCA2NDgxNCwgNjQ4MTksIDY0ODI0LCA2NDgyOSwgNjQ4MzMsIDY0ODM4LCAKLSAgICA2NDg0NCwgNjQ4NDksIDY0ODU0LCA2NDg1OCwgNjQ4NjMsIDY0ODY4LCA2NDg3NCwgNjQ4NzksIDY0ODg0LCA2NDg5MCwgCi0gICAgNjQ4OTYsIDY0OTAxLCA2NDkwNSwgNjQ5MTAsIDY0OTE1LCA2NDkyMCwgNjQ5MjQsIDY0OTI5LCA2NDkzNCwgNjQ5MzksIAotICAgIDY0OTQ1LCA2NDk1MSwgNjQ5NTYsIDY0OTYwLCA2NDk2NCwgNjQ5NjksIDY0OTc0LCA2NDk3OSwgMzEzOTUsIDY0OTgzLCAKLSAgICA2NDk4OCwgNjQ5OTMsIDY0OTk5LCA2NTAwNCwgNjUwMDksIDY1MDEzLCA2NTAxOCwgNjUwMjMsIDY1MDI5LCA2NTAzNCwgCi0gICAgNjUwMzksIDY1MDQ1LCA2NTA1MSwgNjUwNTYsIDY1MDYwLCA2NTA2NSwgNjUwNzAsIDY1MDc0LCA2NTA3OSwgNjUwODQsIAotICAgIDY1MDg5LCA2NTA5NSwgNjUxMDEsIDY1MTA2LCA2NTExMCwgNjUxMTUsIDY1MTIwLCA2NTEyNCwgNjUxMjksIDY1MTM0LCAKLSAgICA2NTEzOSwgNjUxNDQsIDY1MTQ4LCA2NTE1MSwgNjUxNTQsIDY1MTU5LCA2NTE2NCwgMzQwNTYsIDY1MTcxLCA2NTE3OSwgCi0gICAgMzY5MSwgMjk4MzcsIDY1MTg1LCA2NTE5MiwgNjUxOTgsIDM4MzAsIDEyMDIwLCA2NTIwNCwgNjUyMTQsIDY1MjI5LCAKLSAgICA2NTIzNywgMTIwMjUsIDY1MjQ4LCA2NTI1MywgNjUyNjQsIDY1Mjc2LCA2NTI4OCwgNjUzMDAsIDI3MzQsIDY1MzEyLCAKLSAgICA2NTMxNywgNjUzMjksIDY1MzMzLCA2NTMzOSwgNjUzNDUsIDY1MzUwLCAxNjYwLCAxNzQxOCwgNjUzNTksIDY1MzY0LCAKLSAgICA0MzkxNCwgNjUzNjgsIDY1MzcyLCA2NTM3NywgNjUzODEsIDE4MzE1LCA2NTM4NiwgNjUzODksIDY1Mzk0LCA2NTQwMiwgCi0gICAgNjU0MTAsIDE2NjQsIDEyMDYxLCAxMjA2NywgMTY2OSwgNjU0MTgsIDY1NDI1LCA2NTQzMCwgNjU0MzksIDY1NDQ5LCAKLSAgICA2NTQ1NiwgNjU0NjEsIDY1NDY2LCAxNjc0LCA2NTQ3MywgNjU0NzgsIDE4NDM1LCA2NTQ4MiwgNjU0ODcsIDY1NDk0LCAKLSAgICA2NTUwMCwgNjU1MDQsIDY1NTE1LCA2NTUyNSwgNjU1MzIsIDE4NDU3LCA5NzMzLCA5NzQwLCA0MDIyLCA0MDI4LCA2NTUzOSwgCi0gICAgMTY3OSwgNjU1NDQsIDY1NTUwLCA2NTU1OCwgNjU1NjUsIDY1NTcxLCA2NTU3OCwgNjU1OTAsIDY1NTk2LCA2NTYwMSwgCi0gICAgNjU2MTMsIDY1NjI0LCA2NTYzMywgNjU2NDMsIDM5NTIsIDY1NjUxLCAzMzE2NiwgMzMxNzUsIDE4NDk3LCAxNjg0LCAxNjg4LCAKLSAgICA2NTY2NCwgNjU2NzUsIDY1NjgwLCAxNjk4LCA2NTY4OCwgNjU2OTMsIDY1Njk4LCAxODU1NiwgNjU3MTAsIDY1NzEzLCAKLSAgICA2NTcxOSwgNjU3MjUsIDY1NzMwLCA2NTczOCwgMTcwMywgNjU3NDMsIDY1NzQ4LCA2NTc1NiwgNjU3NjQsIDY1NzcxLCAKLSAgICA2NTc4MCwgNjU3ODgsIDY1Nzk3LCAxNzA4LCA2NTgwMSwgMTcxMywgMjMwMTYsIDY1ODA2LCA2NTgxMywgMTg2MzAsIAotICAgIDY1ODIxLCA2NTgyNywgNjU4MzIsIDY1ODQwLCA2NTg0NywgNjU4NTUsIDY1ODY1LCA2NTg3NCwgNjU4ODQsIDY1ODkzLCAKLSAgICA2NTkwNCwgNjU5MTQsIDY1OTI0LCA2NTkzMywgNjU5NDMsIDY1OTU3LCA2NTk3MCwgNjU5NzksIDY1OTg3LCA2NTk5NywgCi0gICAgNjYwMDYsIDY2MDE4LCA2NjAyOSwgNjYwNDAsIDY2MDUwLCAxNzk0OCwgNjYwNTUsIDEyMjEzLCA2NjA2NCwgNjYwNzAsIAotICAgIDY2MDc1LCA2NjA4MiwgNjYwODksIDY2MDk1LCAxNzYxNywgNjYxMDUsIDY2MTExLCA2NjExNiwgNjYxMjcsIDY2MTMyLCAKLSAgICA2NjE0MCwgMTIyMzAsIDEyMjM1LCA2NjE0OCwgNjYxNTQsIDY2MTU4LCA2NjE2NiwgNDAxNywgMTg2OTIsIDQ0MDA3LCAKLSAgICA2NjE3MSwgNjYxNzcsIDY2MTgyLCA2NjE5MCwgNjYxOTcsIDEzMTc5LCA2NjIwMiwgNjYyMDgsIDE3MjQsIDY2MjEzLCAKLSAgICA2NjIxNiwgMTQzOCwgNjYyMjIsIDY2MjI3LCA2NjIzMiwgNjYyMzgsIDY2MjQzLCA2NjI0OCwgNjYyNTMsIDY2MjU4LCAKLSAgICA2NjI2MywgNjYyNjgsIDE3MzMsIDEzLCA2NjI3NCwgNjYyNzgsIDY2MjgzLCA2NjI4NywgNjYyOTEsIDY2Mjk1LCAzNDI5NiwgCi0gICAgNjYzMDAsIDI1MDcwLCA2NjMwNSwgNjYzMTAsIDY2MzE0LCA2NjMxNywgNjYzMjEsIDY2MzI1LCA2NjMzMCwgNjYzMzQsIAotICAgIDY2MzM5LCA2NjM0MywgNjYzNDksIDM3NTE0LCAzNzUxOSwgMzc1MjQsIDY2MzUyLCA2NjM1OSwgNjYzNjUsIDY2MzczLCAKLSAgICA0MzY3OCwgNjYzODMsIDM3NTMwLCAzNDU2MCwgMzQzMTEsIDM0MzE3LCAzNzU0NiwgMzQzMjMsIDY2Mzg4LCA2NjM5MywgCi0gICAgMzQ1OTMsIDY2Mzk3LCA2NjQwMCwgNjY0MDQsIDY2NDEyLCA2NjQxOSwgNjY0MjIsIDY2NDI3LCA2NjQzMiwgNjY0MzYsIAotICAgIDY2NDQwLCA2NjQ0MywgNjY0NTMsIDY2NDY1LCA2NjQ3MiwgNjY0NzgsIDM0MzI4LCA2NjQ4NSwgMzYwNzgsIDY2NDg4LCAKLSAgICA4OTI5LCAxMDE5LCA2NjQ5MSwgNjY0OTUsIDY2NTAwLCAzODczLCA2NjUwNCwgNjY1MDcsIDE0ODI3LCA2NjUxNCwgNjY1MjEsIAotICAgIDY2NTM0LCA2NjU0MiwgNjY1NTEsIDY2NTYwLCA2NjU2NSwgNjY1NzUsIDY2NTg4LCA2NjYwMCwgNjY2MDcsIDY2NjEyLCAKLSAgICA2NjYyMSwgNjY2MzQsIDM5MDM5LCA2NjY1MiwgNjY2NTcsIDY2NjY0LCA2NjY3MCwgNjY2NzUsIDgxOSwgNjY2ODAsIAotICAgIDY2Njg4LCA2NjY5NSwgNjY3MDIsIDI5MzkyLCA3ODMsIDY2NzA4LCA2NjcxNCwgNjY3MjQsIDY2NzMyLCA2NjczOCwgCi0gICAgNjY3NDMsIDM0MzQ3LCA2MzEwLCAzNDM2MSwgNjY3NDcsIDY2NzU3LCA2Njc2MiwgNjY3NzIsIDY2Nzg3LCA2Njc5MywgCi0gICAgNjY3OTksIDM0MzcxLCA2NjgwNCwgMzM0ODIsIDY2ODA4LCA2NjgxMywgNjY4MjAsIDY2ODI1LCA2NjgyOSwgNjY4MzQsIAotICAgIDE4NTAwLCA2Njg0MSwgNjY4NDYsIDY2ODUwLCA2MzUxLCAzNDM5NywgNjY4NTQsIDY2ODYwLCAzMjQsIDY2ODcwLCA2Njg3NywgCi0gICAgNjY4ODQsIDY2ODg5LCA2Njg5OCwgNjM2NTYsIDY2OTA0LCA2NjkxMiwgNjY5MTYsIDY2OTIwLCA2NjkyNCwgNjY5MjgsIAotICAgIDY2OTMzLCA2NjkzNywgNjY5NDMsIDY2OTUxLCA2Njk1NiwgNjY5NjEsIDY2OTY2LCA2Njk3MCwgNjY5NzUsIDY2OTc5LCAKLSAgICA2Njk4MywgNjY5ODksIDY2OTk1LCA2NzAwMCwgNjcwMDQsIDY3MDA5LCAzNDUyMSwgNjcwMTMsIDM0NTI3LCAzNDUzMywgCi0gICAgNjcwMTgsIDY3MDI0LCA2NzAzMSwgNjcwMzYsIDY3MDQwLCAzMzQ5OSwgMTgxNjcsIDY3MDQzLCA2NzA0NywgNjcwNTIsIAotICAgIDY3MDU5LCA2NzA2NSwgNjcwNjksIDY3MDc0LCA0MzM1MywgNjcwODAsIDY3MDg0LCA2NzA5MSwgNjcwOTUsIDY3MTAwLCAKLSAgICA2NzEwNiwgNjcxMTIsIDY3MTE4LCA2NzEzMCwgNjcxMzksIDY3MTQ5LCA2NzE1NSwgNjcxNjIsIDY3MTY3LCA2NzE3MiwgCi0gICAgNjcxNzYsIDY3MTc5LCA2NzE4NSwgNjcxOTIsIDY3MTk3LCA2NzIwMiwgNjcyMDksIDY3MjE2LCA2NzIyMywgNjcyMjksIAotICAgIDY3MjM0LCA2NzIzOSwgNjcyNDcsIDM0NTM4LCAyNDYyLCA2NzI1MiwgNjcyNTcsIDY3MjYzLCA2NzI2OCwgNjcyNzQsIAotICAgIDY3Mjc5LCA2NzI4NCwgNjcyODksIDY3Mjk1LCAzNDU1OSwgNjczMDAsIDY3MzA2LCA2NzMxMiwgNjczMTgsIDM0NjI5LCAKLSAgICA2NzMyMywgNjczMjgsIDY3MzMzLCAzNDY0MCwgNjczMzgsIDY3MzQzLCA2NzM0OCwgNjczNTQsIDY3MzYwLCAzNDY0NSwgCi0gICAgNjczNjUsIDY3MzcwLCA2NzM3NSwgMzQ3MDAsIDM0NzA2LCA2NzM4MCwgNjczODUsIDM0NzExLCAzNDczMywgMzAxMzYsIAotICAgIDM0NzM5LCAzNDc0MywgNjczOTAsIDEyOTA5LCA2NzM5NCwgNjc0MDIsIDY3NDA4LCA2NzQxNiwgNjc0MjMsIDY3NDI5LCAKLSAgICA2NzQzOSwgNjc0NDUsIDY3NDUyLCAxMTU1NiwgMzQ3NTcsIDY3NDU4LCA2NzQ3MSwgNjc0ODAsIDY3NDg2LCA2NzQ5NSwgCi0gICAgNjc1MDEsIDI1MzgwLCA2NzUwOCwgNjc1MTUsIDY3NTI1LCA2NzUyOCwgMzQ3MDEsIDY3NTMzLCA2NzU0MCwgNjc1NDUsIAotICAgIDY3NTQ5LCA2NzU1MywgNjc1NTgsIDY3NTYyLCA0MTMzLCA2NzU2NywgNjc1NzIsIDY3NTc3LCAzNzYwOCwgMzc2MTMsIAotICAgIDY3NTgxLCAzNzYyNywgNjc1ODYsIDM3NjMyLCA2NzU5MSwgNjc1OTcsIDM3NjQ0LCAzNzY1MCwgMzc2NTYsIDY3NjAyLCAKLSAgICA2NzYwOCwgMjQzNjYsIDY3NjE5LCA2NzYyMiwgNjc2MzQsIDY3NjQyLCAzNDc4MCwgNjc2NDYsIDY3NjU1LCA2NzY2NSwgCi0gICAgNjc2NzQsIDM0NzkwLCA2NzY3OSwgNjc2ODYsIDY3Njk1LCA2NzcwMSwgNjc3MDksIDY3NzE2LCA2NDAyLCA0NjczLCAKLSAgICA2NzcyMSwgMzQ3MTIsIDY3NzI3LCA2NzczMCwgNjc3MzYsIDY3NzQzLCA2Nzc0OCwgNjc3NTMsIDI1MjkwLCA2Nzc1NywgCi0gICAgNjc3NjMsIDY3NzY5LCA2Nzc3NCwgNjc3NzksIDY3NzgzLCA2Nzc4OSwgNjc3OTUsIDM1OTg0LCAxMDQ4LCAzODY4OSwgCi0gICAgNDA0MTksIDQwNDI1LCAzNDgyMSwgMzQ4MjYsIDY3ODAwLCA2NzgwNCwgNjc4MDgsIDY3ODExLCA2NzgyNCwgNjc4MzAsIAotICAgIDY3ODM0LCA2NzgzNywgNjc4NDIsIDM2MzIxLCA2Nzg0NiwgMzM1MDQsIDIyOTY2LCA2Nzg1MiwgNjMzMSwgNjMzOSwgOTU3MCwgCi0gICAgNjc4NTUsIDY3ODYwLCA2Nzg2NSwgNjc4NzAsIDY3ODc1LCA2Nzg4MCwgNjc4ODUsIDY3ODkwLCA2Nzg5NSwgNjc5MDAsIAotICAgIDY3OTA2LCA2NzkxMSwgNjc5MTYsIDY3OTIyLCA2NzkyNywgNjc5MzIsIDY3OTM3LCA2Nzk0MiwgNjc5NDcsIDY3OTUyLCAKLSAgICA2Nzk1OCwgNjc5NjMsIDY3OTY5LCA2Nzk3NCwgNjc5NzksIDY3OTg0LCA2Nzk4OSwgNjc5OTQsIDY3OTk5LCA2ODAwNCwgCi0gICAgNjgwMDksIDY4MDE0LCA2ODAxOSwgNjgwMjUsIDY4MDMwLCA2ODAzNSwgNjgwNDAsIDY4MDQ1LCA2ODA1MCwgNjgwNTUsIAotICAgIDY4MDYxLCA2ODA2NiwgNjgwNzEsIDY4MDc2LCA2ODA4MSwgNjgwODYsIDY4MDkxLCA2ODA5NiwgNjgxMDEsIDY4MTA2LCAKLSAgICA2ODExMiwgNjgxMTcsIDY4MTIyLCA2ODEyNywgNjgxMzIsIDY4MTM4LCA2ODE0NCwgNjgxNDksIDY4MTU1LCA2ODE2MCwgCi0gICAgNjgxNjUsIDY4MTcwLCA2ODE3NSwgNjgxODAsIDE1MTEsIDE0NSwgNjgxODUsIDY4MTg5LCA2ODE5MywgNjgxOTcsIDI3MDc2LCAKLSAgICA2ODIwMSwgNjgyMDUsIDY4MjEwLCA2ODIxNCwgNjgyMTksIDY4MjIzLCA2ODIyOCwgNjgyMzMsIDY4MjM4LCA2ODI0MiwgCi0gICAgNjgyNDYsIDY4MjUxLCA2ODI1NSwgMTQ1NDIsIDY4MjYwLCA2ODI2NCwgNjgyNzEsIDY4MjgxLCAxNjU5NSwgNjgyOTAsIAotICAgIDY4Mjk5LCA2ODMwMywgNjgzMDgsIDY4MzEzLCA2ODMxNywgNjgzMjEsIDI2ODcwLCAzMDc4LCA2ODMyNSwgNjgzMzEsIAotICAgIDE4OTY3LCA2ODMzNSwgNjgzNDQsIDY4MzUyLCA2ODM1OCwgNjgzNjMsIDY4Mzc1LCA2ODM4NywgNjgzOTIsIDY4Mzk2LCAKLSAgICA2ODQwMSwgNjg0MDUsIDY4NDExLCA2ODQxNywgNjg0MjIsIDY4NDMyLCA2ODQ0MiwgNjg0NDgsIDY4NDUzLCA2ODQ1NywgCi0gICAgNjg0NjMsIDY4NDY4LCA2ODQ3NSwgNjg0ODEsIDY4NDg2LCA2ODQ5NSwgNjg1MDQsIDY4NTEyLCAxNjk5MywgNjg1MTYsIAotICAgIDY4NTI1LCA2ODUzMywgNjg1NDUsIDY4NTU2LCA2ODU2NywgNjg1NzYsIDY4NTgwLCA2ODU4OSwgNjg1OTcsIDY4NjA3LCAKLSAgICA2ODYxNSwgNjg2MjIsIDY4NjI4LCA2ODYzMywgNjg2MzksIDY4NjQ0LCA2ODY1NSwgNTQsIDMzMzA5LCA2ODY2MSwgMjgzMzEsIAotICAgIDI4MzQxLCA2ODY2NywgNjg2NzUsIDY4NjgyLCA2ODY4OCwgNjg2OTIsIDY4NzAyLCA2ODcxMywgNjg3MjEsIDY4NzMwLCAKLSAgICA2ODczNSwgNjg3NDAsIDY4NzQ1LCA2ODc0OSwgNjg3NTMsIDE4OTIxLCA2ODc2MSwgNjg3NjUsIDY4NzcxLCA2ODc4MSwgCi0gICAgNjg3ODgsIDY4Nzk0LCA2ODgwMCwgMzc3MDcsIDY4ODA0LCA2ODgwNiwgNjg4MDksIDY4ODE1LCA2ODgxOSwgNjg4MzAsIAotICAgIDY4ODQwLCA2ODg0NiwgNjg4NTMsIDY4ODYwLCAxNDQ3OSwgNjg4NjgsIDY4ODc0LCA2ODg4MywgNjg4OTIsIDY4ODk4LCAKLSAgICAxMDYxNSwgNjg5MDQsIDY4OTEwLCA2ODkxNSwgNjg5MjAsIDY4OTI3LCA2ODkzMiwgNjg5MzksIDY4OTQ1LCA2ODk1MCwgCi0gICAgNjg5NTgsIDY4OTcxLCA2ODk4MCwgNjU5MTksIDY1OTI5LCA2ODk4OSwgNjg5OTUsIDY5MDAxLCA2OTAwOCwgNjkwMTUsIAotICAgIDY5MDIyLCA2OTAyOSwgNjkwMzYsIDY5MDQxLCA2OTA0NSwgNjkwNDksIDY5MDUyLCA2OTA2MiwgNjkwNjYsIDY5MDc4LCAKLSAgICA2OTA4NywgNjkwOTEsIDY5MTAyLCA2OTEwNywgNjkxMTEsIDY1OTM4LCA2OTExNywgNjkxMjQsIDY5MTMzLCA2OTE0MSwgCi0gICAgNjkxNDksIDY5MTU0LCA2OTE1OCwgNjkxNjMsIDY5MTY4LCA2OTE3OCwgNjkxODYsIDY5MTkxLCA2OTE5NSwgNjkxOTksIAotICAgIDY5MjA1LCA2OTIxMywgNjkyMjAsIDY5MjMyLCA2OTI0MCwgNjkyNTEsIDY5MjU4LCA2OTI2NCwgNjkyNzQsIDY5MjgwLCAKLSAgICA2OTI4NCwgNjkyOTEsIDY5Mjk3LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNCwgNjkzMjMsIDY5MzMyLCA2OTM0MSwgCi0gICAgNjkzNDcsIDY5MzUzLCA2OTM1OSwgNjkzNjQsIDY5MzcxLCA2OTM3NywgNjkzODUsIDY5MzkyLCA2OTM5OCwgMTM2MjIsIAotICAgIDY5NDAzLCA2OTQwOSwgNjk0MTMsIDE1NTI5LCA2OTQxNywgNjk0MjIsIDY5NDMyLCA2OTQ0MSwgNjk0NDcsIDY5NDUzLCAKLSAgICA2OTQ2MSwgNjk0NjgsIDY5NDcyLCA2OTQ3NiwgNjk0ODIsIDY5NDkwLCA2OTQ5NywgNjk1MDMsIDY5NTE0LCA2OTUxOCwgCi0gICAgNjk1MjIsIDY5NTI2LCA2OTUyOSwgNjk1MzUsIDY5NTQwLCA2OTU0NSwgNjk1NDksIDY5NTUzLCA2OTU2MiwgNjk1NzAsIAotICAgIDY5NTc3LCA2OTU4MywgNjk1OTAsIDI1OTYzLCA0MzQyMiwgNjk1OTUsIDY5NjAzLCA2OTYwNywgNjk2MTEsIDY5NjE0LCAKLSAgICA2OTYyMiwgNjk2MjksIDY5NjM1LCA2OTY0NCwgNjk2NTIsIDY5NjU4LCA2OTY2MywgNjk2NjcsIDY5NjcyLCA2OTY3NywgCi0gICAgNjk2ODEsIDY5Njg1LCA2OTY4OSwgNjk2OTQsIDY5NzAzLCA2OTcwNywgNjk3MTQsIDQwNTI4LCA2OTcxOCwgNjk3MjQsIAotICAgIDY5NzI4LCA2OTczNiwgNjk3NDIsIDY5NzQ3LCA2OTc1OCwgNjk3NjYsIDY5NzcyLCA2OTc4MSwgMjQ1MTMsIDY5Nzg5LCAKLSAgICA2OTc5NiwgNjk4MDMsIDY5ODEwLCA2OTgxNywgNjk4MjQsIDQ2NzA0LCAxNDMxNywgNjk4MzEsIDY5ODM4LCA2OTg0MywgCi0gICAgMzc3NDMsIDY1MjksIDY5ODQ5LCA2OTg1NCwgNjk4NTksIDY5ODY1LCA2OTg3MSwgNjk4NzcsIDY5ODgyLCA2OTg4NywgCi0gICAgNjk4OTIsIDY5ODk3LCA2OTkwMywgNjk5MDgsIDY5OTE0LCA2OTkxOSwgNjk5MjUsIDY5OTMwLCA2OTkzNSwgNjk5NDAsIAotICAgIDY5OTQ1LCA2OTk1MCwgNjk5NTUsIDY5OTYwLCA2OTk2NiwgNjk5NzEsIDY5OTc3LCA2OTk4MiwgNjk5ODcsIDY5OTkyLCAKLSAgICA2OTk5NywgNzAwMDIsIDcwMDA3LCA3MDAxMywgNzAwMTgsIDcwMDIzLCA3MDAyOCwgNzAwMzMsIDcwMDM4LCA3MDA0MywgCi0gICAgNzAwNDgsIDcwMDUzLCA3MDA1OCwgNzAwNjMsIDcwMDY5LCA3MDA3NCwgNzAwNzksIDcwMDg0LCA3MDA4OSwgNzAwOTQsIAotICAgIDcwMDk5LCA3MDEwNCwgNzAxMDksIDcwMTE1LCA3MDEyMCwgNzAxMjUsIDcwMTMwLCA3MDEzNSwgNzAxNDAsIDcwMTQ1LCAKLSAgICA3MDE1MCwgNzAxNTUsIDcwMTYwLCA3MDE2NSwgNzAxNzAsIDcwMTc1LCA3MDE4MSwgMTg1NCwgMjYwLCA3MDE4NiwgNDEzNjEsIAotICAgIDcwMTkwLCA3MDE5MywgNzAxOTgsIDcwMjAyLCA3MDIwNSwgMzQxNSwgNzAyMTAsIDcwMjE1LCA3MDIxOSwgNzAyMjgsIAotICAgIDcwMjM5LCA3MDI1NiwgNzAyNzQsIDY5MTQ1LCA3MDI4MiwgNzAyODUsIDcwMjk1LCA3MDMwMiwgNzAzMTEsIDcwMzI3LCAKLSAgICA3MDMzNiwgNzAzNDYsIDcwMzUxLCA3MDM2MSwgNzAzNzAsIDcwMzc4LCA3MDM5MiwgNzA0MDAsIDcwNDA0LCA3MDQwNywgCi0gICAgNzA0MTQsIDcwNDIwLCA3MDQzMSwgNzA0MzgsIDcwNDUwLCA3MDQ2MSwgNzA0NzIsIDcwNDgxLCA3MDQ4OCwgMTI3OCwgNzEwLCAKLSAgICA3MDQ5OCwgMjYyOSwgNzA1MDIsIDcwNTA3LCA3MDUxNiwgOTIyMSwgMTg4OTQsIDIyNDcxLCA3MDUyNCwgNzA1MzIsIAotICAgIDcwNTQ2LCA3MDU1OSwgNzA1NjMsIDcwNTY4LCA3MDU3MywgNzA1NzgsIDcwNTg0LCA3MDU5MCwgNzA1OTUsIDg5MjEsIAotICAgIDE2NjIzLCA3MDYwMCwgNzA2MDQsIDcwNjEyLCAxMjA2MiwgNzA2MTcsIDcwNjIzLCA3MDYzMiwgNzA2NDAsIDE3MzYsIAotICAgIDEyMDc0LCA5MDgsIDY0NjUsIDcwNjQ0LCA3MDY0OCwgNzA2NTcsIDcwNjY3LCAyNDE5LCAyOTEyNywgNzA2NzYsIDcwNjgyLCAKLSAgICAxODQwNywgMjkxNDIsIDcwNjg4LCA0MTkzLCAxMjQ1MiwgNzA2OTQsIDcwNzAxLCA2NTY3MCwgNzA3MDUsIDcwNzA5LCAKLSAgICA3MDcxNSwgNzA3MjAsIDcwNzI1LCAzNjM0LCAxNTQsIDE1NDM3LCA3MDczMCwgNzA3NDIsIDcwNzQ2LCA3MDc1MiwgNzA3NTcsIAotICAgIDI5OTA3LCA3MDc2MSwgMTI0NDAsIDI3NjksIDQsIDcwNzY2LCA3MDc3NiwgNzA3ODcsIDcwNzkzLCA3MDgwNCwgNzA4MTEsIAotICAgIDcwODE3LCA3MDgyMywgNzA4MzEsIDcwODM4LCA3MDg0NCwgNzA4NTQsIDcwODY0LCA3MDg3NCwgNzA4ODMsIDI1MzY3LCAKLSAgICAxMjkwLCA3MDg4OCwgNzA4OTIsIDcwODk2LCA3MDkwMiwgNzA5MDYsIDI3OTIsIDI3OTgsIDg5MTgsIDIyOTQsIDcwOTEwLCAKLSAgICA3MDkxNCwgNzA5MjMsIDcwOTMxLCA3MDk0MiwgNzA5NTAsIDcwOTU4LCA3MDk2NCwgNzA5NjksIDcwOTgwLCA3MDk5MSwgCi0gICAgNzA5OTksIDcxMDA1LCA3MTAxMCwgMTA0MzQsIDcxMDIwLCA3MTAyOCwgNzEwMzIsIDcxMDM2LCA3MTA0MSwgNzEwNDUsIAotICAgIDcxMDU3LCAzMDMxNCwgMTY1NDgsIDcxMDY0LCA3MTA3NCwgNzEwODAsIDcxMDg2LCAxMDUzNiwgNzEwOTYsIDcxMTA3LCAKLSAgICA3MTExOCwgNzExMjgsIDcxMTM3LCA3MTE0MSwgNzExNDgsIDE3NTAsIDk5NiwgNzExNTgsIDcxMTYzLCA3MTE3MSwgNjU0ODMsIAotICAgIDcxMTc5LCA3MTE4NCwgNzExOTUsIDcxMjAyLCA3MTIxNiwgMTUzNjYsIDQ3OCwgNzEyMjYsIDcxMjMwLCA3MTIzNCwgCi0gICAgNzEyNDIsIDcxMjUxLCA3MTI1OSwgNzEyNjUsIDcxMjc5LCA3MTI4NiwgNzEyOTIsIDcxMzAxLCA3MTMwOCwgNzEzMTgsIAotICAgIDcxMzI2LCA3MTMzMywgNzEzNDEsIDcxMzQ4LCA0MDI0LCAxNDksIDcxMzU2LCA3MTM2NywgNzEzNzEsIDcxMzgzLCA3MTM4OSwgCi0gICAgMTI2MzMsIDE5MiwgNzEzOTQsIDk4NzEsIDcxMzk5LCA3MTQwMywgNzE0MTAsIDcxNDE2LCA3MTQyNCwgNzE0MzEsIDkyODAsIAotICAgIDcxNDM4LCA3MTQ0NywgNzE0NTUsIDQwOTMsIDcxNDY4LCA0MTEwLCA3MTQ3MiwgMjg0MiwgNTE0LCA3MTQ3NywgNzE0OTAsIAotICAgIDcxNDk0LCA3MTQ5OSwgMjg0NywgMTg1MywgODA5LCA3MTUwMywgNDExNCwgNzE1MTEsIDcxNTE3LCA3MTUyMSwgODY2LCAKLSAgICA3MTUzMSwgNzE1NDAsIDcxNTQ1LCAzNjUxLCA3MTU0OSwgMTYzMDQsIDE2MzExLCA1MDA2NiwgNzE1NTMsIDQxNDUsIDQwMzQsIAotICAgIDE0MjAwLCA3MTU2MSwgNzE1NjgsIDcxNTczLCAyNTQzMSwgNzE1NzcsIDcxNTg0LCA3MTU5MCwgNzE1OTUsIDcxNjAwLCAKLSAgICAxNjMyNCwgMTg2LCA3MTYwNSwgNzE2MTcsIDcxNjIzLCA3MTYzMSwgMjg1OSwgMTc2OCwgNzE2MzksIDcxNjQxLCA3MTY0NiwgCi0gICAgNzE2NTEsIDcxNjU2LCA3MTY2MiwgNzE2NjcsIDcxNjcyLCA3MTY3NywgNzE2ODIsIDcxNjg3LCA3MTY5MiwgNzE2OTgsIAotICAgIDcxNzAzLCA3MTcwOCwgNzE3MTMsIDcxNzE4LCA3MTcyMywgNzE3MjgsIDcxNzMzLCA3MTczOCwgNzE3NDQsIDcxNzQ5LCAKLSAgICA3MTc1NCwgNzE3NTksIDcxNzY1LCA3MTc3MCwgNzE3NzYsIDcxNzgxLCA3MTc4NiwgNzE3OTEsIDcxNzk2LCA3MTgwMSwgCi0gICAgNzE4MDYsIDcxODExLCA3MTgxNywgNzE4MjIsIDcxODI4LCA3MTgzMywgNzE4MzgsIDcxODQzLCA3MTg0OCwgNzE4NTMsIAotICAgIDcxODU4LCA3MTg2MywgNzE4NjgsIDcxODc0LCA3MTg4MCwgNzE4ODUsIDcxODkwLCA3MTg5NiwgNzE5MDEsIDcxOTA1LCAKLSAgICA3MTkwOSwgNzE5MTQsIDcxOTIwLCA3MTkyNCwgNzE5MzAsIDcxOTM1LCA3MTk0MCwgNzE5NDYsIDcxOTUxLCA3MTk1NSwgCi0gICAgNzE5NjAsIDcxOTY1LCA3MTk2OSwgNzE5NzIsIDcxOTc0LCA3MTk3OCwgNzE5ODEsIDcxOTg4LCA3MTk5MywgNzE5OTcsIAotICAgIDcyMDAyLCA3MjAwNiwgNzIwMTAsIDcyMDE0LCA3MjAyMywgNzIwMjcsIDM1MDI2LCA3MjAzMCwgMzUwMzEsIDcyMDM3LCAKLSAgICA3MjA0MiwgMzUwMzYsIDcyMDUxLCA3MjA2MCwgMzUwNDIsIDcyMDY1LCAzNTA0NywgNzIwNzQsIDcyMDc5LCAxMjY3NiwgCi0gICAgNzIwODMsIDcyMDg4LCA3MjA5MywgMzUwNTIsIDcyMDk3LCA0NDkyMSwgNzIxMDEsIDcyMTA0LCA3MjEwOCwgODU4OSwgCi0gICAgNzIxMTQsIDcyMTE3LCA3MjEyMiwgNzIxMjYsIDM4ODgsIDM1MDU3LCA3MjEyOSwgNzIxMzMsIDcyMTM2LCA3MjE0MSwgCi0gICAgNzIxNDUsIDcyMTUxLCA3MjE1OSwgNzIxNzIsIDcyMTgxLCA3MjE4NywgNzIxOTIsIDcyMTk4LCA3MjIwMiwgNzIyMDgsIAotICAgIDcyMjE0LCA3MjIyMiwgNzIyMjcsIDcyMjMxLCA3MjIzOCwgNzIyNDQsIDcyMjUyLCA3MjI2MSwgNzIyNjksIDM1MDYwLCAKLSAgICA3MjI3NiwgNzIyODYsIDcyMjk5LCA3MjMwNCwgNzIzMDksIDcyMzEzLCA3MjMyMiwgNzIzMjgsIDcyMzM1LCA3MjM0NiwgCi0gICAgNzIzNTgsIDcyMzY1LCA3MjM3NCwgNzIzODMsIDcyMzkyLCA3MjM5OSwgNzI0MDUsIDcyNDEyLCA3MjQyMCwgNzI0MjcsIAotICAgIDcyNDM1LCA3MjQ0NCwgNzI0NTIsIDcyNDU5LCA3MjQ2NywgNzI0NzYsIDcyNDg0LCA3MjQ5MywgNzI1MDMsIDcyNTEyLCAKLSAgICA3MjUyMCwgNzI1MjcsIDcyNTM1LCA3MjU0NCwgNzI1NTIsIDcyNTYxLCA3MjU3MSwgNzI1ODAsIDcyNTg4LCA3MjU5NywgCi0gICAgNzI2MDcsIDcyNjE2LCA3MjYyNiwgNzI2MzcsIDcyNjQ3LCA3MjY1NiwgNzI2NjQsIDcyNjcxLCA3MjY3OSwgNzI2ODgsIAotICAgIDcyNjk2LCA3MjcwNSwgNzI3MTUsIDcyNzI0LCA3MjczMiwgNzI3NDEsIDcyNzUxLCA3Mjc2MCwgNzI3NzAsIDcyNzgxLCAKLSAgICA3Mjc5MSwgNzI4MDAsIDcyODA4LCA3MjgxNywgNzI4MjcsIDcyODM2LCA3Mjg0NiwgNzI4NTcsIDcyODY3LCA3Mjg3NiwgCi0gICAgNzI4ODYsIDcyODk3LCA3MjkwNywgNzI5MTgsIDcyOTMwLCA3Mjk0MSwgNzI5NTEsIDcyOTYwLCA3Mjk2OCwgNzI5NzUsIAotICAgIDcyOTgzLCA3Mjk5MiwgNzMwMDAsIDczMDA5LCA3MzAxOSwgNzMwMjgsIDczMDM2LCA3MzA0NSwgNzMwNTUsIDczMDY0LCAKLSAgICA3MzA3NCwgNzMwODUsIDczMDk1LCA3MzEwNCwgNzMxMTIsIDczMTIxLCA3MzEzMSwgNzMxNDAsIDczMTUwLCA3MzE2MSwgCi0gICAgNzMxNzEsIDczMTgwLCA3MzE5MCwgNzMyMDEsIDczMjExLCA3MzIyMiwgNzMyMzQsIDczMjQ1LCA3MzI1NSwgNzMyNjQsIAotICAgIDczMjcyLCA3MzI4MSwgNzMyOTEsIDczMzAwLCA3MzMxMCwgNzMzMjEsIDczMzMxLCA3MzM0MCwgNzMzNTAsIDczMzYxLCAKLSAgICA3MzM3MSwgNzMzODIsIDczMzk0LCA3MzQwNSwgNzM0MTUsIDczNDI0LCA3MzQzNCwgNzM0NDUsIDczNDU1LCA3MzQ2NiwgCi0gICAgNzM0NzgsIDczNDg5LCA3MzQ5OSwgNzM1MTAsIDczNTIyLCA3MzUzMywgNzM1NDUsIDczNTU4LCA3MzU3MCwgNzM1ODEsIAotICAgIDczNTkxLCA3MzYwMCwgNzM2MDgsIDczNjE1LCA3MzYyMywgNzM2MzIsIDczNjQwLCA3MzY0OSwgNzM2NTksIDczNjY4LCAKLSAgICA3MzY3NiwgNzM2ODUsIDczNjk1LCA3MzcwNCwgNzM3MTQsIDczNzI1LCA3MzczNSwgNzM3NDQsIDczNzUyLCA3Mzc2MSwgCi0gICAgNzM3NzEsIDczNzgwLCA3Mzc5MCwgNzM4MDEsIDczODExLCA3MzgyMCwgNzM4MzAsIDczODQxLCA3Mzg1MSwgNzM4NjIsIAotICAgIDczODc0LCA3Mzg4NSwgNzM4OTUsIDczOTA0LCA3MzkxMiwgNzM5MjEsIDczOTMxLCA3Mzk0MCwgNzM5NTAsIDczOTYxLCAKLSAgICA3Mzk3MSwgNzM5ODAsIDczOTkwLCA3NDAwMSwgNzQwMTEsIDc0MDIyLCA3NDAzNCwgNzQwNDUsIDc0MDU1LCA3NDA2NCwgCi0gICAgNzQwNzQsIDc0MDg1LCA3NDA5NSwgNzQxMDYsIDc0MTE4LCA3NDEyOSwgNzQxMzksIDc0MTUwLCA3NDE2MiwgNzQxNzMsIAotICAgIDc0MTg1LCA3NDE5OCwgNzQyMTAsIDc0MjIxLCA3NDIzMSwgNzQyNDAsIDc0MjQ4LCA3NDI1NywgNzQyNjcsIDc0Mjc2LCAKLSAgICA3NDI4NiwgNzQyOTcsIDc0MzA3LCA3NDMxNiwgNzQzMjYsIDc0MzM3LCA3NDM0NywgNzQzNTgsIDc0MzcwLCA3NDM4MSwgCi0gICAgNzQzOTEsIDc0NDAwLCA3NDQxMCwgNzQ0MjEsIDc0NDMxLCA3NDQ0MiwgNzQ0NTQsIDc0NDY1LCA3NDQ3NSwgNzQ0ODYsIAotICAgIDc0NDk4LCA3NDUwOSwgNzQ1MjEsIDc0NTM0LCA3NDU0NiwgNzQ1NTcsIDc0NTY3LCA3NDU3NiwgNzQ1ODYsIDc0NTk3LCAKLSAgICA3NDYwNywgNzQ2MTgsIDc0NjMwLCA3NDY0MSwgNzQ2NTEsIDc0NjYyLCA3NDY3NCwgNzQ2ODUsIDc0Njk3LCA3NDcxMCwgCi0gICAgNzQ3MjIsIDc0NzMzLCA3NDc0MywgNzQ3NTQsIDc0NzY2LCA3NDc3NywgNzQ3ODksIDc0ODAyLCA3NDgxNCwgNzQ4MjUsIAotICAgIDc0ODM3LCA3NDg1MCwgNzQ4NjIsIDc0ODc1LCA3NDg4OSwgNzQ5MDIsIDc0OTE0LCA3NDkyNSwgNzQ5MzUsIDc0OTQ0LCAKLSAgICA3NDk1MiwgNzQ5NTksIDc0OTY0LCA4NDE5LCA3NDk3MSwgMzUwNzAsIDc0OTc2LCA3NDk4MSwgMzUwNzUsIDc0OTg3LCAKLSAgICAyMjU3OSwgMzUwODAsIDc0OTkyLCA3NDk5OCwgNzUwMDYsIDc1MDEyLCA3NTAxOCwgNzUwMjUsIDc1MDMyLCA3NTAzNywgCi0gICAgNzUwNDEsIDc1MDQ1LCA3NTA0OCwgNzUwNTIsIDc1MDYxLCA3NTA3MCwgNzUwNzgsIDc1MDg0LCA3NTA5NiwgNzUxMDcsIAotICAgIDc1MTExLCAzMTQwLCA4Mzk0LCA3NTExNiwgNzUxMTksIDc1MTIxLCA3NTEyNSwgNzUxMjksIDc1MTMzLCA3NTEzOSwgCi0gICAgNzUxNDQsIDI3OTkwLCA3NTE0OSwgNzUxNTMsIDc1MTU2LCA3NTE2MSwgNzUxNjUsIDc1MTcyLCA3NTE3OCwgNzUxODIsIAotICAgIDY0ODUsIDc1MTg2LCAzNTA5NywgNzUxOTEsIDc1MTk4LCA3NTIwNywgNzUyMTUsIDc1MjI2LCA3NTIzNCwgNzUyNDMsIAotICAgIDc1MjUxLCA3NTI1OCwgNzUyNjUsIDc1MjcxLCA3NTI4MiwgMzUxMDIsIDc1Mjg3LCA3NTI5OCwgNzUzMTAsIDc1MzE4LCAKLSAgICA3NTMyOSwgNzUzMzgsIDc1MzQ5LCA3NTM1NCwgNzUzNjIsIDI1OTUsIDc1MzY3LCAzNzE2NiwgNzUzODAsIDc1Mzg0LCAKLSAgICA3NTM5NiwgNzU0MDQsIDc1NDA5LCA3NTQxNywgNzU0MjgsIDE5MTE0LCA3NTQzNywgNzU0NDMsIDc1NDUwLCA3NTQ1OCwgCi0gICAgNzU0NjQsIDM1MTEyLCA3NTQ2OSwgNDEzOSwgNjMwNTYsIDc1NDc2LCA3NTQ3OSwgNzU0ODcsIDc1NTAwLCA3NTUxMywgCi0gICAgNzU1MjYsIDc1NTM5LCA3NTU0NiwgNzU1NTcsIDc1NTY2LCA3NTU3MSwgNDY1MjEsIDQ2NTI2LCA3NTU3NSwgNzU1NzksIAotICAgIDc1NTg3LCA3NTU5NCwgNzU2MDMsIDc1NjExLCA3NTYxNywgNzU2MjYsIDc1NjM0LCA3NTY0MSwgNzU2NDksIDc1NjUzLCAKLSAgICA3NTY2MiwgNzU2NzEsIDc1NjgxLCA3NTY5NCwgNzU3MDcsIDc1NzE3LCAzNTExNywgNzU3MjMsIDc1NzMwLCA3NTczNiwgCi0gICAgNzU3NDIsIDM1MTIzLCA3NTc0NywgNzU3NTAsIDc1NzU0LCA3NTc2MiwgNzU3NzEsIDQ2MjU5LCA3NTc3OSwgNzU3ODgsIAotICAgIDc1Nzk2LCA3NTgwMywgNzU4MTEsIDc1ODIxLCA3NTgzMCwgNzU4MzksIDM2NDIwLCA3NTg0OCwgNzU4NTksIDc1ODc0LCAKLSAgICA3NTg4NCwgOTkwNCwgMjMyNjMsIDc1ODkzLCA3NTg5OCwgNzU5MDMsIDc1OTA3LCA3NTkxMiwgNzU5MTYsIDc1OTIxLCAKLSAgICA3NTkyNywgNzU5MzIsIDc1OTM3LCA3NTk0MywgNzU5NDgsIDc1OTUzLCAyMzIyOCwgNzU5NTgsIDc1OTY1LCA3NTk3MywgCi0gICAgNzU5ODEsIDc1OTg5LCA3NTk5NCwgNzYwMDEsIDc2MDA4LCA3NjAxMywgMjI3MiwgNzYwMTcsIDc2MDIxLCA3NjAyOSwgCi0gICAgNzYwMzcsIDM1MTQwLCA3NjA0MywgNzYwNDksIDc2MDYxLCA3NjA2NywgNzYwNzQsIDc2MDc4LCA3NjA4NSwgNzYwOTAsIAotICAgIDc2MDk3LCA3NjEwMywgNzYxMTAsIDc2MTIxLCA3NjEzMSwgNzYxNDEsIDc2MTUzLCA3NjE1OSwgNzYxNjcsIDc2MTczLCAKLSAgICA3NjE4MywgNzYxOTMsIDM1MTY3LCA3NjIwMiwgNzYyMTEsIDc2MjE3LCA3NjIyOSwgNzYyNDAsIDc2MjQ3LCA3NjI1MiwgCi0gICAgNzYyNTYsIDc2MjY0LCA3NjI3MCwgNzYyNzUsIDc2MjgwLCA3NjI4NywgNzYyOTUsIDc2MzA3LCA3NjMxNywgNzYzMjYsIAotICAgIDc2MzM1LCA3NjM0MiwgMzcwMTksIDI1NzY0LCA3NjM0OCwgNzYzNTMsIDc2MzU3LCA3NjM2MSwgNzYzNjYsIDc2Mzc0LCAKLSAgICA3NjM4MCwgNzYzOTEsIDc2NDA0LCA3NjQwOSwgNzY0MTYsIDM1MTcyLCA3NjQyMSwgNzY0MzMsIDc2NDQyLCA3NjQ1MCwgCi0gICAgNzY0NjAsIDc2NDcxLCA3NjQ4NCwgNzY0OTEsIDc2NTAwLCA3NjUwOSwgNzY1MTcsIDc2NTIyLCA3NjUyOCwgMTUwMCwgCi0gICAgNzY1MzMsIDc2NTM4LCA3NjU0MywgNzY1NDgsIDc2NTU0LCA3NjU1OSwgNzY1NjQsIDc2NTcwLCA3NjU3NiwgNzY1ODEsIAotICAgIDc2NTg1LCA3NjU5MCwgNzY1OTUsIDc2NjAwLCA2MzYxMSwgNzY2MDUsIDc2NjEwLCA3NjYxNSwgNzY2MjAsIDc2NjI2LCAKLSAgICA3NjYzMiwgNzY2MzcsIDc2NjQxLCA3NjY0NiwgNzY2NTEsIDc2NjU2LCA3NjY2MiwgNzY2NjcsIDc2NjczLCA3NjY3OCwgCi0gICAgNzY2ODMsIDc2Njg4LCA3NjY5MywgNzY2OTcsIDc2NzAzLCA3NjcwOCwgNzY3MTcsIDc2NzIyLCA3NjcyNywgNzY3MzIsIAotICAgIDc2NzM3LCA3Njc0MSwgNzY3NDgsIDc2NzU0LCA0NDMwLCAxODczNywgMzEwNSwgNzY3NTksIDc2NzYzLCA3Njc2OCwgCi0gICAgNzY3NzIsIDc2Nzc2LCA3Njc4MCwgNTAzMjEsIDc2Nzg0LCA3NjcwOSwgNzY3ODYsIDc2Nzk2LCAzNTE4MSwgNzY3OTksIAotICAgIDc2ODA0LCA3NjgxMywgNzY4MTksIDY0NTQsIDM1MTg2LCA3NjgyMywgNzY4MjksIDc2ODM0LCA3Njg0MCwgNzY4NDUsIAotICAgIDc2ODQ5LCA3Njg1NiwgNzY4NjEsIDc2ODcxLCA3Njg4MCwgNzY4ODQsIDc2ODkwLCA3Njg5NiwgNzY5MDIsIDc2OTA2LCAKLSAgICA3NjkxNCwgNzY5MjEsIDc2OTI5LCA3NjkzNywgMzUxOTEsIDc2OTQ0LCA3Njk0NywgNzY5NTQsIDc2OTYwLCA3Njk2NSwgCi0gICAgNzY5NjksIDc2OTc1LCA3Njk4MiwgNzY5ODcsIDc2OTkxLCA3NzAwMCwgNzcwMDgsIDc3MDE0LCA3NzAxOSwgMzUxOTYsIAotICAgIDc3MDI2LCA3NzAzOCwgNzcwNDUsIDc3MDUxLCA3NzA1NiwgNzcwNjIsIDc3MDY5LCA3NzA3NSwgMjI5NzksIDI5NTg5LCAKLSAgICA3NzA4MSwgNzcwODYsIDc3MDkyLCA3NzA5NiwgNzcxMDgsIDc2NzQyLCA3Njc0OSwgMjMxNjAsIDc3MTE4LCA3NzEyMywgCi0gICAgNzcxMzAsIDc3MTM2LCA3NzE0MywgNzcxNDksIDc3MTYwLCA3NzE2NSwgNzcxNzMsIDk2MDksIDc3MTc4LCA3NzE4MSwgCi0gICAgNzcxODcsIDc3MTkxLCA3NzE5NSwgNzcxOTgsIDc3MjA0LCAzNDkzNCwgNDQzMSwgMTA2NywgMTQ1OTYsIDc3MjExLCAKLSAgICA3NzIxNywgNzcyMjMsIDc3MjI5LCA3NzIzNSwgNzcyNDEsIDc3MjQ3LCA3NzI1MywgNzcyNTksIDc3MjY0LCA3NzI2OSwgCi0gICAgNzcyNzQsIDc3Mjc5LCA3NzI4NCwgNzcyODksIDc3Mjk0LCA3NzI5OSwgNzczMDQsIDc3MzA5LCA3NzMxNCwgNzczMTksIAotICAgIDc3MzI0LCA3NzMzMCwgNzczMzUsIDc3MzQwLCA3NzM0NiwgNzczNTEsIDc3MzU2LCA3NzM2MiwgNzczNjgsIDc3Mzc0LCAKLSAgICA3NzM4MCwgNzczODYsIDc3MzkyLCA3NzM5OCwgNzc0MDQsIDc3NDEwLCA3NzQxNSwgNzc0MjAsIDc3NDI2LCA3NzQzMSwgCi0gICAgNzc0MzYsIDc3NDQyLCA3NzQ0NywgNzc0NTIsIDc3NDU3LCA3NzQ2MiwgNzc0NjcsIDc3NDcyLCA3NzQ3NywgNzc0ODIsIAotICAgIDc3NDg3LCA3NzQ5MiwgNzc0OTcsIDc3NTAyLCA3NzUwOCwgNzc1MTMsIDc3NTE4LCA3NzUyMywgNzc1MjksIDc3NTM0LCAKLSAgICA3NzUzOSwgNzc1NDQsIDc3NTQ5LCA3NzU1NSwgNzc1NjAsIDc3NTY1LCA3NzU3MCwgNzc1NzUsIDc3NTgwLCA3NzU4NSwgCi0gICAgNzc1OTAsIDc3NTk1LCA3NzYwMCwgNzc2MDUsIDc3NjEwLCA3NzYxNSwgNzc2MjAsIDc3NjI1LCA3NzYzMCwgNzc2MzUsIAotICAgIDc3NjQwLCA3NzY0NSwgNzc2NTAsIDc3NjU2LCA3NzY2MSwgNzc2NjYsIDc3NjcxLCA3NzY3NiwgNzc2ODEsIDc3Njg2LCAKLSAgICA3NzY5MSwgMTg5MCwgMTYzLCA3NzY5NiwgNzc3MDAsIDc3NzA0LCA3NzcwOSwgNzc3MTcsIDc3NzIxLCA3NzcyOCwgNzc3MzYsIAotICAgIDc3NzQwLCA3Nzc1MywgNzc3NjEsIDc3NzY2LCA3Nzc3MSwgMjgzOTQsIDc3Nzc1LCA3Nzc4MCwgNzc3ODQsIDc3Nzg5LCAKLSAgICA3Nzc5MywgNzc4MDEsIDc3ODA1LCAyMjU4NywgNzc4MTAsIDc3ODE0LCA2NjE2MiwgNzc4MTgsIDc3ODIxLCA3NzgyOSwgCi0gICAgNzc4MzcsIDc3ODQ1LCA3Nzg1MCwgNzc4NTUsIDc3ODYyLCA3Nzg2OSwgNzc4NzUsIDc3ODgxLCA3Nzg4NiwgNzc4OTEsIAotICAgIDc3ODk5LCA3MDU1MSwgNzc5MDYsIDY1OTQ4LCA3NzkxMSwgNzc5MTYsIDc3OTIwLCA3NzkyNywgNjU5NzUsIDEyNzQzLCAKLSAgICA3NzkzMywgNzc5MzgsIDc3OTQzLCA3Nzk0NywgNzc5NTAsIDc3OTU2LCA3Nzk2MCwgNzc5NzAsIDc3OTc5LCA3Nzk4MywgCi0gICAgNzc5ODYsIDc3OTkwLCA3Nzk5NywgNzgwMTAsIDc4MDE2LCA3ODAyNCwgNzgwMzMsIDc4MDQ0LCA3ODA1NSwgNzgwNjYsIAotICAgIDc4MDc3LCA3ODA4NiwgNzgwOTIsIDc4MTAxLCA3ODEwOSwgNzgxMTksIDc4MTMyLCA3ODE0MCwgNzgxNDcsIDc4MTU4LCAKLSAgICA3ODE2NCwgNzgxNjksIDc4MTc0LCA3ODE4MCwgNzgxODYsIDc4MTk2LCA3ODIwMywgNzgyMTMsIDc4MjIyLCA3NjQyMywgCi0gICAgNzgyMzAsIDc4MjM2LCA3ODI0NCwgNzgyNTAsIDc4MjU3LCA3ODI2NSwgNzgyNzAsIDc4MjczLCA3ODI3NywgNzgyODEsIAotICAgIDc4Mjg0LCA3ODI5MCwgNzgyOTYsIDc4MzA0LCA3ODMxNiwgNzgzMjgsIDc4MzM1LCA3ODM0MCwgNzgzNDQsIDc4MzU1LCAKLSAgICA3ODM2MywgNzgzNzAsIDc4MzgyLCA3ODM5MCwgNzgzOTgsIDc4NDA1LCA3ODQxMSwgNzg0MTYsIDc4NDI2LCA3ODQzNSwgCi0gICAgNzg0NDAsIDc4NDUwLCA3ODQ1OSwgNDU1NDksIDc4NDY2LCA3ODQ3MCwgNzg0NzUsIDc4NDgzLCA3ODQ5MCwgNzg0OTYsIAotICAgIDc4NTAwLCA3ODUxMCwgNzg1MjEsIDc4NTI5LCA3ODUzNiwgNzg1NDgsIDc4NTYwLCA3ODU2OSwgNzUzNzAsIDc4NTc2LCAKLSAgICA3ODU4NiwgNzg1OTgsIDc4NjA5LCA3ODYyMywgNzg2MzEsIDc4NjQxLCA3ODY0OCwgNzg2NTYsIDc4NjY5LCA3ODY4MSwgCi0gICAgNzg2OTAsIDc4Njk4LCA3ODcwOCwgNzg3MTksIDc4NzMxLCA3ODc0MCwgNzg3NTAsIDc4NzYwLCA3ODc2OSwgNzg3NzYsIAotICAgIDc4Nzg1LCA3ODgwMCwgNzg4MDgsIDc4ODE4LCA3ODgyNywgNzg4MzUsIDc4ODQ4LCA2MzAyNiwgNzg4NjMsIDc4ODczLCAKLSAgICA3ODg4MiwgNzg4OTQsIDc4OTA0LCA3ODkxNiwgNzg5MjcsIDc4OTM4LCA3ODk0OSwgNzg5NTksIDc4OTcwLCA3ODk3OCwgCi0gICAgNzg5ODQsIDc4OTk0LCA3OTAwMiwgNzkwMDgsIDMxMjkxLCA3OTAxMywgNzkwMTksIDc5MDI4LCA3OTA0MCwgNzkwNDUsIAotICAgIDc5MDUyLCAxMDQ0OCwgMTkxMzQsIDc5MDU4LCA3OTA2NywgNzkwNzIsIDc5MDc2LCA3OTA4MywgNzkwODksIDc5MDk0LCAKLSAgICA3OTA5OSwgNzkxMDcsIDc5MTE1LCAxMzExOSwgNzkxMTksIDc5MTIyLCA3OTEyNCwgNzkxMzEsIDc5MTM3LCA3OTE0OCwgCi0gICAgNzkxNTMsIDc5MTU3LCA3OTE2NCwgNzkxNzAsIDc5MTc1LCA3OTE4MywgNzExMjAsIDcxMTMwLCA3OTE4OSwgNzkxOTYsIAotICAgIDc5MjA2LCAxMTU0MywgNzkyMTMsIDc5MjE4LCAzMTUwNiwgNzkyMjcsIDc5MjMyLCA3OTIzOSwgNzkyNDksIDc5MjU3LCAKLSAgICA3OTI2NSwgNzkyNzQsIDc5MjgwLCA3OTI4NiwgNzkyOTMsIDc5MzAwLCA3OTMwNSwgNzkzMDksIDc5MzE3LCA2NTk5MiwgCi0gICAgNzkzMjIsIDc5MzMxLCA3OTMzOSwgNzkzNDYsIDc5MzUxLCA3OTM1NSwgNzkzNjQsIDc5MzcwLCA3OTM3MywgNzkzNzcsIAotICAgIDc5Mzg2LCA3OTM5NiwgNzc3NDgsIDc5NDA1LCA3OTQwOSwgNzk0MTcsIDc5NDIxLCA3OTQyNywgNzk0MzgsIDc5NDQ4LCAKLSAgICAxOTE0MywgNzk0NTksIDc5NDY4LCA3OTQ3NiwgNzk0ODQsIDc5NDkxLCA2NjAxMSwgOTE0NywgNzk0OTksIDc5NTAzLCAKLSAgICA3OTUxMiwgNzk1MTksIDc5NTIyLCAyOTQ3MCwgNzk1MjUsIDc5NTI5LCA3OTUzNCwgNzk1NTEsIDc5NTYzLCAxMTUwMSwgCi0gICAgNzk1NzUsIDc5NTgwLCA3OTU4NSwgNzk1OTAsIDIyNjY5LCA3OTU5NCwgNzk1OTksIDc5NjA0LCA3OTYxMCwgNzk2MTUsIAotICAgIDYxMjIsIDc5NjIwLCAyMjY3MywgNzk2MjUsIDc5NjMwLCA3OTYzNiwgNzk2NDMsIDc5NjQ4LCA3OTY1MywgNzk2NTksIAotICAgIDc5NjY1LCA3OTY3MSwgNzk2NzYsIDc5NjgyLCA3OTY4NiwgNzk3MDAsIDc5NzA4LCA3OTcxNiwgNzk3MjIsIDc5NzI3LCAKLSAgICA3OTczNCwgNzk3NDQsIDc5NzUzLCA3OTc1OCwgNzk3NjMsIDc5NzY4LCA3OTc3NiwgNzk3ODEsIDc5Nzg3LCA3OTc5MiwgCi0gICAgNzk4MDEsIDY0NzEzLCA3OTgwNiwgNzk4MDksIDc5ODI3LCA3OTg0NiwgNzk4NTksIDc5ODczLCA3OTg4OSwgNzk4OTYsIAotICAgIDc5OTAzLCA3OTkxMiwgNzk5MTksIDc5OTI1LCA3OTkzMiwgNzk5MzcsIDc5OTQzLCA3OTk0OSwgNzk5NTcsIDc5OTYzLCAKLSAgICA3OTk2OCwgNzk5NzMsIDc5OTg5LCAxMTUxNCwgODAwMDMsIDgwMDEwLCA4MDAxOCwgODAwMjQsIDgwMDI4LCA4MDAzMSwgCi0gICAgODAwMzYsIDgwMDQxLCA4MDA0OCwgODAwNTMsIDgwMDYyLCA4MDA2OCwgODAwNzMsIDgwMDc5LCA4MDA4NSwgODAwOTQsIAotICAgIDgwMTAzLCA4MDEwOCwgODAxMTIsIDgwMTIwLCA4MDEyOSwgMTI3NzIsIDgwMTM4LCA4MDE0NCwgODAxNTIsIDgwMTU4LCAKLSAgICA4MDE2NCwgODAxNzAsIDgwMTc1LCA4MDE4MiwgODAxODgsIDEyNzgzLCA4MDE5MywgODAxOTYsIDgwMjAxLCAzNTIyMywgCi0gICAgODAyMTEsIDgwMjIwLCA4MDIyNSwgODAyMzEsIDgwMjM2LCA4MDI0NCwgODAyNTEsIDgwMjYyLCA4MDI3MiwgODAyNzcsIAotICAgIDgwMjg1LCA3MDQ3NCwgODAyOTAsIDgwMjk2LCA4MDMwMSwgODAzMDgsIDgwMzE3LCA4MDMyNSwgODAzMjksIDgwMzM1LCAKLSAgICA4MDM0MSwgODAzNDgsIDgwMzU0LCA4MDM1OCwgMTg1MTgsIDMxMTQsIDgwMzYzLCA4MDM2NywgODAzNzEsIDgwMzc3LCAKLSAgICA4MDM4NiwgODAzOTIsIDgwMzk5LCA4MDQwMywgODA0MjQsIDgwNDQ2LCA4MDQ2MiwgODA0NzksIDgwNDk4LCA4MDUwNywgCi0gICAgODA1MTcsIDgwNTI1LCA4MDUzMiwgODA1MzksIDgwNTQ1LCAyOTM0MiwgODA1NTksIDgwNTYzLCA4MDU2OSwgODA1NzcsIAotICAgIDgwNTg5LCA4MDU5NSwgODA2MDMsIDgwNjEwLCA4MDYxNSwgODA2MjAsIDgwNjI0LCA4MDYzMiwgODA2MzksIDgwNjQzLCAKLSAgICA4MDY0OSwgODA2NTUsIDgwNjYwLCAzNzMwLCA0NjcyMSwgODA2NjYsIDgwNjcwLCA4MDY3NCwgODA2NzgsIDgwNjgzLCAKLSAgICA4MDY4OCwgODA2OTMsIDgwNjk5LCA4MDcwNSwgODA3MTEsIDgwNzE4LCA4MDcyNCwgODA3MzEsIDgwNzM3LCA4MDc0MywgCi0gICAgODA3NDgsIDgwNzU0LCA4MDc1OSwgODA3NjMsIDgwNzY4LCA4MDc3MiwgODA3NzcsIDQ2NzM2LCA4MDc4MSwgODA3ODYsIAotICAgIDgwNzk0LCA4MDc5OCwgODA4MDMsIDgwODEwLCA4MDgxOSwgODA4MjUsIDgwODM0LCA4MDgzOCwgODA4NDUsIDgwODQ5LCAKLSAgICA4MDg1MiwgODA4NTksIDgwODY1LCA4MDg3NCwgODA4ODQsIDgwODg5LCA4MDg5MywgODA5MDEsIDgwOTEwLCA4MDkxNCwgCi0gICAgODA5MjIsIDgwOTI4LCA4MDkzMywgODA5MzgsIDgwOTQ0LCA4MDk1MCwgODA5NTUsIDgwOTU5LCA4MDk2NSwgODA5NzAsIAotICAgIDgwOTc0LCA4MDk3OCwgODA5ODEsIDgwOTg2LCA4MDk5NCwgODEwMDQsIDgxMDEwLCA4MTAxNSwgODEwMjUsIDQ0MDMxLCAKLSAgICA4MTAzMywgODEwNDUsIDgxMDQ5LCA4MTA1NSwgODEwNjcsIDgxMDc4LCA4MTA4NSwgODEwOTEsIDgxMDk4LCA4MTEwNSwgCi0gICAgODExMTcsIDgxMTI0LCA4MTEzMCwgMjI3NDcsIDgxMTM0LCA4MTE0MiwgODExNDgsIDgxMTU1LCA4MTE2MSwgODExNjcsIAotICAgIDgxMTczLCA4MTE3OCwgODExODMsIDgxMTg4LCA4MTE5NywgODEyMDUsIDgxMjE2LCA3MzUwLCA4MTIyMSwgMTc5NjcsIAotICAgIDgxMjI3LCA4MTIzMSwgODEyMzUsIDgxMjM5LCA4MTI0NywgODEyNTYsIDgxMjYwLCA4MTI2NywgODEyNzYsIDgxMjg0LCAKLSAgICA4MTI5NywgODEzMDMsIDgwNzczLCAzMjM5MCwgODEzMDgsIDgxMzEwLCA4MTMxNSwgODEzMjAsIDgxMzI1LCA4MTMzMCwgCi0gICAgODEzMzUsIDgxMzQwLCA4MTM0NSwgODEzNTAsIDgxMzU1LCA4MTM2MCwgODEzNjUsIDgxMzcwLCA4MTM3NSwgODEzODAsIAotICAgIDgxMzg2LCA4MTM5MSwgODEzOTYsIDgxNDAxLCA4MTQwNiwgODE0MTEsIDgxNDE2LCA4MTQyMSwgODE0MjYsIDgxNDMyLCAKLSAgICA4MTQzOCwgODE0NDQsIDgxNDQ5LCA4MTQ1NCwgODE0NjYsIDgxNDcxLCAxODk2LCA2MywgODE0NzYsIDgxNDgxLCAzNTIyOSwgCi0gICAgODE0ODUsIDM1MjM0LCAzNTIzOSwgMzUyNDUsIDM1MjUwLCA4MTQ4OSwgMzUyNTUsIDIzNzg1LCA4MTUxMSwgODE1MTUsIAotICAgIDgxNTE5LCA4MTUyNCwgODE1MjgsIDM1MjU5LCA4MTUzMiwgODE1NDAsIDgxNTQ3LCAzNTI2NCwgODE1NTMsIDgxNTU2LCAKLSAgICA4MTU2MSwgODE1NjUsIDgxNTc0LCAxMDI2NiwgODE1ODIsIDM1MjY5LCAyMzY0MSwgODE1ODUsIDgxNTg5LCA4MTU5NywgCi0gICAgMTQxMiwgODE2MDIsIDM1MjgwLCA4MTYwNSwgODE2MTAsIDI3NzUwLCAyNzc2MCwgMzgxODIsIDgxNjE1LCA4MTYyMCwgCi0gICAgODE2MjUsIDgxNjMwLCA4MTYzNiwgODE2NDEsIDgxNjUwLCA4MTY1NSwgODE2NjQsIDgxNjcyLCA4MTY3OSwgODE2ODUsIAotICAgIDgxNjkwLCA4MTY5NSwgODE3MDAsIDgxNzEwLCA4MTcxOSwgODE3MjcsIDgxNzMyLCA4MTc0MCwgODE3NDQsIDgxNzUyLCAKLSAgICA4MTc1NiwgODE3NjMsIDgxNzcxLCAzNTA4OCwgNDExOTIsIDgxNzc4LCA4MTc4NCwgODE3ODksIDgxNzk0LCAxMzE1NCwgCi0gICAgMzA1MjksIDgxNzk5LCA4MTgwNCwgODE4MTEsIDgxODE3LCA4MTgyMiwgODE4MzAsIDgxODQwLCA4MTg1MCwgODE4NTYsIAotICAgIDgxODYxLCA4MTg2NywgMTkxNjUsIDgxODc0LCAzOTA1MiwgODE4ODcsIDgxODkyLCA4MTg5OCwgMzMzODEsIDgxOTExLCAKLSAgICA4MTkxNywgODE5MjEsIDgxOTMwLCA4MTkzOSwgODE5NDYsIDgxOTUyLCA4MTk2MCwgODE5NjksIDgxOTc2LCA4MTk4MiwgCi0gICAgODE5ODUsIDgxOTg5LCA4MTk5MywgMjc4OTEsIDgxOTk3LCA4MjAwNCwgODIwMTAsIDgyMDE4LCA4MjAyMywgODIwMjcsIAotICAgIDI1OTExLCA4MjAzMywgODIwMzYsIDgyMDQ0LCA4MjA1MSwgODIwNTksIDgyMDcyLCA4MjA4NiwgODIwOTMsIDgyMDk5LCAKLSAgICA4MjEwNiwgODIxMTIsIDM1Mjk0LCA4MjExNiwgODIxMjMsIDgyMTMxLCA4MjEzOSwgODIxNDUsIDM1Mjk5LCA4MjE1MywgCi0gICAgODIxNTksIDgyMTY0LCA4MjE3NCwgODIxODAsIDgyMTg5LCAzMzE4MywgMzc2MTQsIDgyMTk3LCA4MjIwMiwgODIyMDcsIAotICAgIDgyMjExLCA4MjIxNiwgODIyMjAsIDgyMjI4LCA4MjIzMywgMTYyOTYsIDQ0MDQ0LCA4MjIzNywgODIyNDIsIDM1MzA0LCAKLSAgICA2NzU0NywgODIyNDYsIDgyMjUxLCA4MjI1NSwgODIyNjIsIDgyMjcxLCA4MjI3NSwgODIyODMsIDgyMjg5LCA4MjI5NCwgCi0gICAgODIzMDAsIDgyMzA1LCA4MjMxMiwgODIzMTgsIDgyMzIzLCA4MjMyOCwgODIzMzksIDgyMzQ4LCA4MjM2MCwgODIzNzUsIAotICAgIDM1NTcxLCA4MjM4MSwgMTgwODYsIDM1MzA4LCA4MjM4NSwgODIzOTIsIDgyMzk4LCAyNjAyNywgODI0MDIsIDgyNDA5LCAKLSAgICA4MjQxOCwgODI0MjUsIDgyNDM0LCA4MjQ0MCwgODI0NDUsIDgyNDUzLCA4MjQ1OSwgMzUzMTgsIDgyNDY0LCA4MjQ3MywgCi0gICAgODEwNzMsIDgyNDgyLCA4MjQ4OSwgODI0OTUsIDgyNTAxLCA4MjUxMCwgODI1MjAsIDgyNTI4LCA4MjUzNSwgODI1MzksIAotICAgIDM1MzIzLCA4MjU0MiwgMzUzMjksIDM1MzM1LCA4MjU0NywgODI1NTUsIDgyNTYzLCA4MjU3MywgODI1ODIsIDgyNTkwLCAKLSAgICA4MjU5NywgODI2MDcsIDM1MzQwLCA4MjYxMSwgODI2MTMsIDgyNjE3LCA4MjYyMiwgODI2MjYsIDgyNjMwLCA4MjYzNiwgCi0gICAgODI2NDEsIDgyNjQ1LCA4MjY1NiwgODI2NjEsIDgyNjY2LCAzMTE5LCA4MjY3MCwgODI2NzcsIDgyNjgxLCA4MjY5MCwgCi0gICAgODI2OTgsIDgyNzA1LCA4MjcxMCwgODI3MTUsIDY3NTk4LCA4MjcxOSwgODI3MjIsIDgyNzI4LCA4MjczNiwgODI3NDIsIAotICAgIDgyNzQ2LCA4Mjc1MSwgODI3NTgsIDgyNzYzLCA4Mjc2OCwgODI3NzIsIDgyNzc4LCA4Mjc4MywgMzc2NDUsIDgyNzg3LCAKLSAgICA4Mjc5MCwgODI3OTUsIDgyNzk5LCA4MjgwNCwgODI4MTEsIDgyODE2LCA4MjgyMCwgNDI1ODAsIDgyODI4LCAyNzc2OSwgCi0gICAgMjc3NzgsIDgyODM0LCA4Mjg0MCwgODI4NDYsIDgyODUxLCA4Mjg1NSwgODI4NTgsIDgyODY4LCA4Mjg3NywgODI4ODIsIAotICAgIDgyODg4LCA4Mjg5NSwgODI5MDEsIDgyOTA1LCA4MjkxMywgODI5MTgsIDM3NjUxLCA3Nzk1MiwgODI5MjIsIDgyOTMwLCAKLSAgICA4MjkzNiwgODI5NDMsIDgyOTQ4LCA4Mjk1MiwgODI5NTcsIDYzMjQyLCA4Mjk2MywgODI5NjksIDM3NjU3LCA4Mjk3NCwgCi0gICAgODI5NzksIDgyOTgzLCA4Mjk4OCwgODI5OTMsIDgyOTk4LCA4MzAwMiwgODMwMDcsIDgzMDEyLCA4MzAxOCwgODMwMjMsIAotICAgIDgzMDI4LCA4MzAzNCwgODMwNDAsIDgzMDQ1LCA4MzA0OSwgODMwNTQsIDgzMDU5LCA4MzA2NCwgODMwNjgsIDI2MDI2LCAKLSAgICA4MzA3MywgODMwNzgsIDgzMDg0LCA4MzA5MCwgODMwOTYsIDgzMTAxLCA4MzEwNSwgODMxMTAsIDgzMTE1LCA4MzEyMCwgCi0gICAgODMxMjQsIDgzMTI5LCA4MzEzNCwgODMxMzksIDgzMTQ0LCA0Njk5MSwgODMxNDgsIDM1MzQ4LCA4MzE1NiwgODMxNjAsIAotICAgIDgzMTY4LCA4MzE3NiwgODMxODcsIDgzMTkyLCA4MzE5NiwgMjQyMTEsIDc1NDczLCA4MzIwMSwgODMyMDcsIDgzMjEyLCAKLSAgICA4MzIyMiwgODMyMjksIDgzMjM0LCA4MzI0MiwgODMyNTEsIDgzMjU2LCA4MzI2MCwgODMyNjUsIDgzMjczLCA4MzI4MSwgCi0gICAgODMyODgsIDcwNzM2LCA4MzI5NCwgODMzMDIsIDgzMzA5LCA4MzMyMCwgODMzMjYsIDgzMzMyLCAzNTM1OCwgODMzMzUsIAotICAgIDgzMzQyLCA4MzM1MCwgODMzNTUsIDQ0MjQ3LCA4MzM1OSwgODMzNjQsIDgzMzcxLCA4MzM3NiwgOTQ4NCwgODMzODAsIAotICAgIDgzMzg4LCA4MzM5NSwgODM0MDIsIDgzNDExLCA4MzQxOCwgODM0MjQsIDgzNDM4LCA2MTk0LCA4MzQ0NiwgODM0NTIsIAotICAgIDgzNDU2LCA4MzQ1OSwgODM0NjcsIDgzNDc0LCA4MzQ3OSwgODM0OTIsIDgzNDk5LCA4MzUwNSwgODM1MDksIDgzNTE0LCAKLSAgICA4MzUyMSwgODM1MjYsIDY1ODUxLCA4MzUzMSwgODM1MzQsIDgzNTQzLCA4MzU1MCwgODM1NTYsIDgzNTYwLCA4MzU2MywgCi0gICAgODM1NzEsIDgzNTgwLCA4MzU5MCwgODM2MDAsIDgzNjA5LCA4MzYyMCwgODM2MjgsIDgzNjM5LCA4MzY0NCwgODM2NDgsIAotICAgIDgzNjUzLCA4MzY1NywgMzgzMTMsIDgzNjY1LCAyMzA0MiwgMzgzMjIsIDgzNjcwLCA4MzY3NSwgODM2ODAsIDgzNjg1LCAKLSAgICA4MzY5MCwgODM2OTUsIDgzNzAwLCA4MzcwNCwgODM3MDksIDgzNzE0LCA4MzcxOSwgODM3MjQsIDgzNzI5LCA4MzczNCwgCi0gICAgODM3MzgsIDgzNzQzLCA4Mzc0OCwgODM3NTIsIDgzNzU2LCA4Mzc2MCwgODM3NjQsIDgzNzY5LCA4Mzc3NCwgODM3NzgsIAotICAgIDgzNzgzLCA4Mzc4NywgODM3OTEsIDgzNzk2LCA4MzgwMSwgODM4MDYsIDgzODExLCA4MzgxNSwgODM4MjAsIDgzODI1LCAKLSAgICA4MzgyOSwgODM4MzQsIDgzODM5LCA4Mzg0NCwgODM4NDksIDgzODU0LCA4Mzg1OSwgODM4NjQsIDgzODY5LCA4Mzg3NCwgCi0gICAgODM4NzksIDgzODg0LCA4Mzg4OSwgODM4OTQsIDgzODk5LCA4MzkwNCwgODM5MDksIDgzOTE0LCA4MzkxOSwgODM5MjQsIAotICAgIDgzOTI5LCA4MzkzMywgODM5MzgsIDgzOTQzLCA4Mzk0OCwgODM5NTMsIDgzOTU4LCA4Mzk2MywgODM5NjgsIDgzOTczLCAKLSAgICA4Mzk3OCwgODM5ODMsIDgzOTg4LCA4Mzk5MiwgODM5OTcsIDg0MDAxLCA4NDAwNiwgODQwMTEsIDg0MDE2LCA4NDAyMSwgCi0gICAgODQwMjYsIDg0MDMxLCA4NDAzNiwgODQwNDEsIDg0MDQ2LCA4NDA1MCwgODQwNTQsIDg0MDU5LCA4NDA2NCwgODQwNjgsIAotICAgIDg0MDczLCA4NDA3OCwgODQwODIsIDg0MDg3LCA4NDA5MiwgODQwOTcsIDg0MTAyLCA4NDEwNiwgODQxMTEsIDg0MTE2LCAKLSAgICA4NDEyMCwgODQxMjUsIDg0MTI5LCA4NDEzMywgODQxMzcsIDg0MTQxLCA4NDE0NiwgODQxNTAsIDg0MTU0LCA4NDE1OCwgCi0gICAgODQxNjIsIDg0MTY2LCA4NDE3MCwgODQxNzQsIDg0MTc4LCA4NDE4MiwgODQxODcsIDg0MTkyLCA4NDE5NywgODQyMDIsIAotICAgIDg0MjA3LCA4NDIxMiwgODQyMTcsIDg0MjIyLCA4NDIyNywgODQyMzIsIDg0MjM2LCA4NDI0MCwgODQyNDQsIDg0MjQ4LCAKLSAgICA4NDI1MiwgODQyNTYsIDg0MjYxLCA4NDI2NSwgODQyNzAsIDg0Mjc0LCA4NDI3OSwgODQyODQsIDg0Mjg4LCA4NDI5MiwgCi0gICAgODQyOTcsIDg0MzAxLCA4NDMwNSwgODQzMDksIDg0MzEzLCA4NDMxNywgODQzMjEsIDg0MzI1LCA4NDMyOSwgODQzMzMsIAotICAgIDg0MzM3LCA4NDM0MSwgODQzNDUsIDg0MzQ5LCA4NDM1MywgODQzNTgsIDg0MzYzLCA4NDM2NywgODQzNzEsIDg0Mzc1LCAKLSAgICA4NDM3OSwgODQzODMsIDg0Mzg3LCA4NDM5MiwgODQzOTYsIDg0NDAwLCA4NDQwNCwgODQ0MDgsIDg0NDEyLCA4NDQxNiwgCi0gICAgODQ0MjEsIDg0NDI1LCA4NDQzMCwgODQ0MzQsIDg0NDM4LCA4NDQ0MiwgODQ0NDYsIDg0NDUwLCA4NDQ1NCwgODQ0NTgsIAotICAgIDg0NDYyLCA4NDQ2NiwgODQ0NzAsIDg0NDc0LCA4NDQ3OSwgODQ0ODMsIDg0NDg3LCA4NDQ5MSwgODQ0OTUsIDg0NDk5LCAKLSAgICA4NDUwMywgODQ1MDcsIDg0NTExLCA4NDUxNSwgODQ1MTksIDg0NTIzLCA4NDUyOCwgODQ1MzIsIDg0NTM2LCA4NDU0MSwgCi0gICAgODQ1NDYsIDg0NTUwLCA4NDU1NCwgODQ1NTgsIDg0NTYyLCA4NDU2NiwgODQ1NzAsIDg0NTc0LCA4NDU3OCwgODQ1ODMsIAotICAgIDg0NTg3LCA4NDU5MiwgODQ1OTYsIDg0NjAxLCA4NDYwNSwgODQ2MTAsIDg0NjE0LCA4NDYyMCwgODQ2MjUsIDg0NjI5LCAKLSAgICA4NDYzNCwgODQ2MzgsIDg0NjQzLCA4NDY0NywgODQ2NTIsIDg0NjU2LCA4NDY2MSwgMTUxOSwgODQ2NjUsIDI4NzMsIDE3NzQsIAotICAgIDE2OTIsIDI3NzA1LCA4NDY2OSwgMjg4MiwgODQ2NzMsIDEzODEsIDg0Njc4LCAxMzIzLCA4NDY4MiwgODQ2ODYsIDI4OTksIAotICAgIDg0NjkwLCA4NDY5NywgODQ3MDQsIDg0NzE4LCAyOTAzLCA3NDUyLCA4NDcyNywgODQ3MzUsIDg0NzQyLCA4NDc1MywgCi0gICAgODQ3NjIsIDg0NzY5LCA4NDc4MSwgODQ3OTQsIDg0ODA3LCA4NDgxOCwgODQ4MjMsIDg0ODMwLCA4NDg0MiwgODQ4NDYsIAotICAgIDI5MDcsIDEyODUwLCA4NDg1NiwgODQ4NjEsIDg0ODcwLCA4NDg4MCwgODQ4ODUsIDI5MTEsIDg0ODkzLCA4NDg5NywgCi0gICAgODQ5MDIsIDg0OTA5LCA4NDkxNSwgODQ5MjMsIDg0OTM1LCAxMzI4LCAxNDIwMSwgODQ5NDUsIDg0OTQ5LCA4NDk1NSwgCi0gICAgODQ5NjksIDg0OTgxLCA4NDk5MywgODUwMDMsIDg1MDEyLCA4NTAyMSwgODUwMzAsIDg1MDM4LCA4NTA0OSwgODUwNTcsIAotICAgIDQyOTIsIDg1MDY3LCA4NTA3OCwgODUwODcsIDg1MDkzLCA4NTEwOCwgODUxMTUsIDg1MTIxLCA4NTEyNiwgMzg0NDcsIAotICAgIDg1MTMxLCAyOTM1LCAxNDIwNSwgODUxMzUsIDg1MTQyLCA5NDA5LCA4NTE1MSwgMjk0MCwgMzQ3OTYsIDg1MTU3LCA2NTU3MywgCi0gICAgODUxNjQsIDg1MTcwLCA4NTE4MSwgODUxODcsIDg1MTk0LCA4NTIwMCwgODUyMDgsIDg1MjE1LCA4NTIyMSwgODUyMzIsIAotICAgIDg1MjQyLCA4NTI1MSwgODUyNjIsIDg1MjcxLCA4NTI3OCwgODUyODQsIDg1Mjk0LCA4NTMwMiwgODUzMDgsIDg1MzIzLCAKLSAgICA4NTMyOSwgODUzMzQsIDg1MzQxLCA4NTM0NCwgODUzNTAsIDg1MzU3LCA4NTM2MywgODUzNzEsIDg1MzgwLCA4NTM4OCwgCi0gICAgODUzOTQsIDg1NDAzLCA0NjI2MSwgODU0MTcsIDg1NDIyLCA4NTQyOCwgMTYwNzIsIDg1NDMzLCA4NTQ0NiwgODU0NTgsIAotICAgIDg1NDY3LCA4NTQ3NSwgODU0ODIsIDg1NDg2LCA4NTQ5MCwgODU0OTMsIDg1NTAwLCA4NTUwNywgODU1MTUsIDg1NTIzLCAKLSAgICA4NTUzMiwgODU1NDAsIDE1OTgzLCA4NTU0OCwgODU1NTMsIDg1NTU3LCA4NTU2OSwgODU1NzYsIDg1NTg1LCA4NDEsIAotICAgIDg1NTk1LCA4NTYwNCwgODU2MTUsIDI5NTYsIDg1NjE5LCA4NTYyMywgODU2MjksIDg1NjQyLCA4NTY1NCwgODU2NjQsIAotICAgIDg1NjczLCA4NTY4NSwgMjg0NDYsIDg1Njk2LCA4NTcwNCwgODU3MTMsIDg1NzI0LCA4NTczNSwgODU3NDUsIDg1NzU1LCAKLSAgICA4NTc2NCwgODU3NzIsIDEyMzY0LCA4NTc3OSwgODU3ODMsIDg1Nzg2LCA4NTc5MSwgODU3OTYsIDg1ODAwLCA4NTgwNiwgCi0gICAgMTMzMywgODU4MTMsIDg1ODE3LCAxMjkzMiwgODU4MjEsIDg1ODMyLCA4NTg0MSwgODU4NDksIDg1ODU4LCA4NTg2NiwgCi0gICAgODU4ODIsIDg1ODkzLCA4NTkwMiwgODU5MTAsIDg1OTIyLCA4NTkzMywgODU5NDksIDg1OTU5LCA4NTk4MCwgODU5OTQsIAotICAgIDg2MDA3LCA4NjAxNSwgODYwMjIsIDc0OTgsIDg2MDM1LCA4NjA0MCwgODYwNDYsIDYyMDMsIDg2MDUyLCA4NjA1NSwgCi0gICAgODYwNjIsIDg2MDcyLCA4NTU0LCA4NjA3OSwgODYwODQsIDg2MDg5LCA4NjA5NCwgODYxMDIsIDg2MTExLCA4NjExOSwgCi0gICAgODYxMjQsIDg2MTMxLCAxMDQ5NiwgMTA1MDUsIDg2MTM3LCA4NjE0OCwgODYxNTMsIDg2MTU5LCAyOTcyLCAyOTc3LCAKLSAgICA4NjE2NSwgMTE4NTcsIDg2MTcxLCA4NjE3OCwgODYxODUsIDg2MTk4LCAyMjgxLCA4NywgODYyMDMsIDg2MjA4LCA4NjIxNiwgCi0gICAgODYyMjYsIDg2MjM1LCA4NjI0MSwgODYyNTAsIDg2MjU4LCA4NjI2OCwgODYyNzIsIDg2Mjc2LCA4NjI4MSwgODYyODUsIAotICAgIDg2Mjk3LCAzMDAwLCA4NjMwNSwgODYzMTMsIDg2MzE4LCA4NjMyOSwgODYzNDAsIDg2MzUyLCA4NjM2MywgODYzNzMsIAotICAgIDg2MzgyLCAyMzA4MywgODYzODcsIDg2MzkzLCA4NjM5OCwgODY0MDgsIDg2NDE4LCA4NjQyMywgODY0MjksIDg2NDMzLCAKLSAgICA4NjQzOCwgODY0NDcsIDIzMDk1LCA4NjQ1MSwgNDM4NCwgMjQsIDg2NDU2LCA4NjQ2NSwgODY0NzIsIDg2NDc5LCA4NjQ4NSwgCi0gICAgODY0OTEsIDEwNDksIDg2NDk2LCA4NjUwMSwgNjYxMjgsIDg2NTA2LCA4NjUxMSwgODY1MTcsIDg2NTIzLCA4NjUzMSwgCi0gICAgODY1MzYsIDg2NTQ0LCA4NjU1MSwgODY1NTcsIDg2NTYyLCA0MjQ2NCwgNDYxNTUsIDg2NTY4LCAzMDA0LCAzMiwgODY1NzgsIAotICAgIDg2NTkxLCA4NjU5NiwgODY2MDQsIDg2NjA5LCA4NjYxNSwgMzAyNiwgMzA0OTcsIDg2NjIwLCA4NjYyOCwgODY2MzUsIAotICAgIDg2NjQwLCA4NjY0OSwgNjM0OTIsIDQwMTgsIDY3MjE4LCA4NjY1NywgODY2NjEsIDE3MTksIDE4MzMsIDg2NjY2LCA4NjY3MSwgCi0gICAgODY2NzgsIDE4MzcsIDI4MCwgODY2ODUsIDg2NjkxLCA4NjY5NiwgMzA0OCwgODY3MDAsIDg2NzA1LCA4NjcxMiwgMTg0MSwgCi0gICAgODY3MTcsIDg2NzIzLCA4NjcyOCwgODY3NDAsIDY0MzAsIDg2NzUwLCA4Njc1NywgMTg0OCwgODY3NjMsIDg2NzY4LCAKLSAgICA4Njc3NSwgODY3ODIsIDg2Nzk3LCA4NjgwNCwgODY4MTUsIDg2ODIwLCA4NjgyOCwgMjY1NywgODY4MzIsIDg2ODQ0LCAKLSAgICA4Njg0OSwgODY4NTMsIDg2ODU5LCAzMDMxMywgMjI4NiwgODY4NjMsIDg2ODc0LCA4Njg3OCwgODY4ODIsIDg2ODg4LCAKLSAgICA4Njg5MiwgODY5MDEsIDg2OTA1LCA4NjkxNiwgODY5MjAsIDIzMzIsIDM0NjEzLCA4NjkyNCwgODY5MzQsIDMxMzksIAotICAgIDg2OTQyLCA5OTA5LCA4Njk1MSwgODY5NTYsIDg2OTYwLCA4Njk2OSwgODY5NzYsIDg2OTgyLCAzMTA5LCAxNjEzNiwgCi0gICAgODY5ODYsIDg2OTk5LCA4NzAxNywgODcwMjIsIDg3MDMwLCA4NzAzOCwgODcwNDgsIDEwNzY4LCAxNDMxOCwgODcwNjAsIAotICAgIDg3MDczLCA4NzA4MCwgODcwOTQsIDg3MTAxLCA4NzExNywgODcxMjQsIDg3MTMwLCAyMzEyNywgMTM1NTYsIDg3MTM3LCAKLSAgICA4NzE0NCwgODcxNTQsIDg3MTYzLCA0Njk5MCwgODcxNzUsIDQ3MTI1LCA4NzE4MywgODcxODYsIDg3MTkyLCA4NzE5OCwgCi0gICAgODcyMDQsIDg3MjEwLCA4NzIxNiwgODcyMjMsIDg3MjMwLCA4NzIzNiwgODcyNDIsIDg3MjQ4LCA4NzI1NCwgODcyNjAsIAotICAgIDg3MjY2LCA4NzI3MiwgODcyNzgsIDg3Mjg0LCA4NzI5MCwgODcyOTYsIDg3MzAyLCA4NzMwOCwgODczMTQsIDg3MzIwLCAKLSAgICA4NzMyNiwgODczMzIsIDg3MzM4LCA4NzM0NCwgODczNTAsIDg3MzU2LCA4NzM2MiwgODczNjgsIDg3Mzc0LCA4NzM4MCwgCi0gICAgODczODYsIDg3MzkyLCA4NzM5OCwgODc0MDQsIDg3NDEwLCA4NzQxNiwgODc0MjIsIDg3NDI4LCA4NzQzNCwgODc0NDAsIAotICAgIDg3NDQ2LCA4NzQ1MiwgODc0NTgsIDg3NDY0LCA4NzQ3MCwgODc0NzYsIDg3NDgyLCA4NzQ4OCwgODc0OTQsIDg3NTAwLCAKLSAgICA4NzUwNiwgODc1MTIsIDg3NTE4LCA4NzUyNCwgODc1MzAsIDg3NTM2LCA4NzU0MywgODc1NDksIDg3NTU2LCA4NzU2MywgCi0gICAgODc1NjksIDg3NTc2LCA4NzU4MywgODc1ODksIDg3NTk1LCA4NzYwMSwgODc2MDcsIDg3NjEzLCA4NzYxOSwgODc2MjUsIAotICAgIDg3NjMxLCA4NzYzNywgODc2NDMsIDg3NjQ5LCA4NzY1NSwgODc2NjEsIDg3NjY3LCA4NzY3MywgMzEyMywgOTg4MiwgCi0gICAgODc2NzksIDg3Njg1LCA4NzY5MywgODc2OTcsIDg0OTA1LCAzMTI3LCA4NzcwMSwgMjI4NjAsIDEzMTg5LCAzOTY4LCAKLSAgICA4NzcwNSwgMzEzMywgODc3MDksIDg3NzE5LCA4NzcyNSwgODc3MzEsIDg3NzM3LCA4Nzc0MywgODc3NDksIDg3NzU1LCAKLSAgICA4Nzc2MSwgODc3NjcsIDg3NzczLCA4Nzc3OSwgODc3ODUsIDg3NzkxLCA4Nzc5NywgODc4MDMsIDg3ODA5LCA4NzgxNSwgCi0gICAgODc4MjEsIDg3ODI3LCA4NzgzMywgODc4MzksIDg3ODQ1LCA4Nzg1MSwgODc4NTcsIDg3ODYzLCA4Nzg2OSwgODc4NzYsIAotICAgIDg3ODgzLCA4Nzg4OSwgODc4OTUsIDg3OTAxLCA4NzkwNywgODc5MTMsIDg3OTE5LCAxMzM4LCA4NzkyNSwgODc5MzAsIAotICAgIDg3OTM1LCA4Nzk0MCwgODc5NDUsIDg3OTUwLCA4Nzk1NSwgODc5NjAsIDg3OTY1LCA4Nzk2OSwgODc5NzMsIDg3OTc3LCAKLSAgICA4Nzk4MSwgODc5ODUsIDg3OTg5LCA4Nzk5MywgODc5OTcsIDg4MDAxLCA4ODAwNywgODgwMTMsIDg4MDE5LCA4ODAyNSwgCi0gICAgODgwMjksIDg4MDMzLCA4ODAzNywgODgwNDEsIDg4MDQ1LCA4ODA0OSwgODgwNTMsIDg4MDU3LCA4ODA2MSwgODgwNjYsIAotICAgIDg4MDcxLCA4ODA3NiwgODgwODEsIDg4MDg2LCA4ODA5MSwgODgwOTYsIDg4MTAxLCA4ODEwNiwgODgxMTEsIDg4MTE2LCAKLSAgICA4ODEyMSwgODgxMjYsIDg4MTMxLCA4ODEzNiwgODgxNDEsIDg4MTQ2LCA4ODE1MSwgODgxNTYsIDg4MTYxLCA4ODE2NiwgCi0gICAgODgxNzEsIDg4MTc2LCA4ODE4MSwgODgxODYsIDg4MTkxLCA4ODE5NiwgODgyMDEsIDg4MjA2LCA4ODIxMSwgODgyMTYsIAotICAgIDg4MjIxLCA4ODIyNiwgODgyMzEsIDg4MjM2LCA4ODI0MSwgODgyNDYsIDg4MjUxLCA4ODI1NiwgODgyNjEsIDg4MjY2LCAKLSAgICA4ODI3MSwgODgyNzYsIDg4MjgxLCA4ODI4NiwgODgyOTEsIDg4Mjk2LCA4ODMwMSwgODgzMDYsIDg4MzExLCA4ODMxNiwgCi0gICAgODgzMjEsIDg4MzI2LCA4ODMzMSwgODgzMzYsIDg4MzQxLCA4ODM0NiwgODgzNTEsIDg4MzU2LCA4ODM2MSwgODgzNjYsIAotICAgIDg4MzcxLCA4ODM3NiwgODgzODEsIDg4Mzg2LCA4ODM5MSwgODgzOTYsIDg4NDAxLCA4ODQwNiwgODg0MTEsIDg4NDE2LCAKLSAgICA4ODQyMSwgODg0MjYsIDg4NDMxLCA4ODQzNiwgODg0NDEsIDg4NDQ2LCA4ODQ1MSwgODg0NTYsIDg4NDYxLCA4ODQ2NiwgCi0gICAgODg0NzEsIDg4NDc2LCA4ODQ4MSwgODg0ODYsIDg4NDkxLCA4ODQ5NiwgODg1MDEsIDg4NTA2LCA4ODUxMSwgODg1MTYsIAotICAgIDg4NTIxLCA4ODUyNiwgODg1MzEsIDg4NTM2LCA4ODU0MSwgODg1NDYsIDg4NTUxLCA4ODU1NiwgODg1NjEsIDg4NTY2LCAKLSAgICA4ODU3MSwgODg1NzYsIDg4NTgxLCA4ODU4NiwgODg1OTEsIDg4NTk2LCA4ODYwMSwgODg2MDYsIDg4NjExLCA4ODYxNiwgCi0gICAgODg2MjEsIDg4NjI2LCA4ODYzMSwgODg2MzYsIDg4NjQxLCA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIAotICAgIDg4NjcxLCA4ODY3NiwgODg2ODEsIDg4Njg2LCA4ODY5MSwgODg2OTYsIDg4NzAxLCA4ODcwNiwgODg3MTEsIDg4NzE2LCAKLSAgICA4ODcyMSwgODg3MjYsIDg4NzMxLCA4ODczNiwgODg3NDEsIDg4NzQ2LCA4ODc1MSwgODg3NTYsIDg4NzYxLCA4ODc2NiwgCi0gICAgODg3NzEsIDg4Nzc2LCA4ODc4MSwgODg3ODYsIDg4NzkxLCA4ODc5NiwgODg4MDEsIDg4ODA2LCA4ODgxMSwgODg4MTYsIAotICAgIDg4ODIxLCA4ODgyNiwgODg4MzEsIDg4ODM2LCA4ODg0MSwgODg4NDYsIDg4ODUxLCA4ODg1NiwgODg4NjEsIDg4ODY2LCAKLSAgICA4ODg3MSwgODg4NzYsIDg4ODgxLCA4ODg4NiwgODg4OTEsIDg4ODk2LCA4ODkwMSwgODg5MDYsIDg4OTExLCA4ODkxNiwgCi0gICAgODg5MjEsIDg4OTI2LCA4ODkzMSwgODg5MzYsIDg4OTQxLCA4ODk0NiwgODg5NTEsIDg4OTU3LCA4ODk2MiwgODg5NjcsIAotICAgIDg4OTcyLCA4ODk3NywgODg5ODIsIDg4OTg3LCA4ODk5MiwgODg5OTgsIDg5MDAzLCA4OTAwOCwgODkwMTMsIDg5MDE4LCAKLSAgICA4OTAyMywgODkwMjgsIDg5MDMzLCA4OTAzOCwgODkwNDMsIDg5MDQ4LCA4OTA1MywgODkwNTgsIDg5MDYzLCA4OTA2OCwgCi0gICAgODkwNzMsIDg5MDc4LCA4OTA4MywgODkwODgsIDg5MDkzLCA4OTA5OCwgODkxMDMsIDg5MTA4LCA4OTExMywgODkxMTgsIAotICAgIDg5MTIzLCA4OTEyOCwgODkxMzMsIDg5MTM4LCA4OTE0MywgODkxNDgsIDg5MTUzLCA4OTE1OCwgODkxNjcsIDg5MTcyLCAKLSAgICA4OTE4MSwgODkxODYsIDg5MTk1LCA4OTIwMCwgODkyMDksIDg5MjE0LCA4OTIyMywgODkyMjgsIDg5MjM3LCA4OTI0MiwgCi0gICAgODkyNTEsIDg5MjU2LCA4OTI2NSwgODkyNzAsIDg5Mjc1LCA4OTI4NCwgODkyODgsIDg5Mjk3LCA4OTMwMiwgODkzMTEsIAotICAgIDg5MzE2LCA4OTMyNSwgODkzMzAsIDg5MzM5LCA4OTM0NCwgODkzNTMsIDg5MzU4LCA4OTM2NywgODkzNzIsIDg5MzgxLCAKLSAgICA4OTM4NiwgODkzOTUsIDg5NDAwLCA4OTQwOSwgODk0MTQsIDg5NDIzLCA4OTQyOCwgODk0MzMsIDg5NDM4LCA4OTQ0MywgCi0gICAgODk0NDgsIDg5NDUzLCA4OTQ1OCwgODk0NjIsIDg5NDY3LCA4OTQ3MiwgODk0NzcsIDg5NDgyLCA4OTQ4NywgODk0OTIsIAotICAgIDg5NDk4LCA4OTUwMywgODk1MDgsIDg5NTEzLCA4OTUxOSwgODk1MjMsIDg5NTI4LCA4OTUzNCwgODk1MzksIDg5NTQ0LCAKLSAgICA4OTU0OSwgODk1NTQsIDg5NTU5LCA4OTU2NCwgODk1NjksIDg5NTc0LCA4OTU3OSwgODk1ODQsIDg5NTkwLCA4OTU5NSwgCi0gICAgODk2MDAsIDg5NjA1LCA4OTYxMSwgODk2MTYsIDg5NjIxLCA4OTYyNiwgODk2MzEsIDg5NjM3LCA4OTY0MiwgODk2NDcsIAotICAgIDg5NjUyLCA4OTY1NywgODk2NjIsIDg5NjY4LCA4OTY3MywgODk2NzgsIDg5NjgzLCA4OTY4OCwgODk2OTMsIDg5Njk4LCAKLSAgICA4OTcwMywgODk3MDgsIDg5NzEzLCA4OTcxOCwgODk3MjMsIDg5NzI4LCA4OTczMywgODk3MzgsIDg5NzQzLCA4OTc0OCwgCi0gICAgODk3NTMsIDg5NzU4LCA4OTc2MywgODk3NjgsIDg5NzczLCA4OTc3OCwgODk3ODMsIDg5Nzg5LCA4OTc5NSwgODk4MDEsIAotICAgIDg5ODA2LCA4OTgxMSwgODk4MTYsIDg5ODIxLCA4OTgyNywgODk4MzMsIDg5ODM5LCA4OTg0NCwgODk4NDksIDg5ODU0LCAKLSAgICA4OTg2MCwgODk4NjUsIDg5ODcwLCA4OTg3NSwgODk4ODAsIDg5ODg1LCA4OTg5MCwgODk4OTUsIDg5OTAwLCA4OTkwNSwgCi0gICAgODk5MTAsIDg5OTE1LCA4OTkyMCwgODk5MjUsIDg5OTMwLCA4OTkzNSwgODk5NDAsIDg5OTQ2LCA4OTk1MiwgODk5NTgsIAotICAgIDg5OTYzLCA4OTk2OCwgODk5NzMsIDg5OTc4LCA4OTk4NCwgODk5OTAsIDg5OTk2LCA5MDAwMSwgOTAwMDYsIDkwMDExLCAKLSAgICA5MDAxNiwgOTAwMjEsIDkwMDI2LCA5MDAzMSwgOTAwMzYsIDkwMDQxLCAxNzUzOSwgOTAwNDYsIDkwMDUyLCA5MDA1NywgCi0gICAgOTAwNjIsIDkwMDY3LCA5MDA3MiwgOTAwNzcsIDkwMDgzLCA5MDA4OCwgOTAwOTMsIDkwMDk4LCA5MDEwMywgOTAxMDgsIAotICAgIDkwMTE0LCA5MDExOSwgOTAxMjQsIDkwMTI5LCA5MDEzNCwgOTAxMzksIDkwMTQ0LCA5MDE0OSwgOTAxNTQsIDkwMTU5LCAKLSAgICA5MDE2NCwgOTAxNjksIDkwMTc0LCA5MDE3OSwgOTAxODQsIDkwMTg5LCA5MDE5NCwgOTAxOTksIDkwMjA0LCA5MDIwOSwgCi0gICAgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMzAsIDkwMjM1LCA5MDI0MCwgOTAyNDUsIDkwMjUwLCA5MDI1NSwgOTAyNjAsIAotICAgIDkwMjY1LCA5MDI3MCwgOTAyNzUsIDkwMjgwLCA5MDI4NSwgOTAyOTAsIDkwMjk1LCA5MDMwMCwgOTAzMDUsIDkwMzEwLCAKLSAgICA5MDMxNSwgOTAzMjAsIDkwMzI1LCA5MDMzMCwgOTAzMzUsIDkwMzQwLCA5MDM0NSwgOTAzNTAsIDkwMzU1LCA5MDM2MCwgCi0gICAgOTAzNjUsIDkwMzcwLCA5MDM3NSwgOTAzODAsIDkwMzg1LCA5MDM5MCwgOTAzOTUsIDkwNDAwLCA5MDQwNSwgOTA0MTAsIAotICAgIDkwNDE1LCA5MDQyMCwgOTA0MjUsIDkwNDMwLCA5MDQzNiwgOTA0NDEsIDkwNDQ2LCA5MDQ1MSwgOTA0NTYsIDkwNDYxLCAKLSAgICA5MDQ2NiwgOTA0NzEsIDkwNDc2LCA5MDQ4MSwgOTA0ODYsIDkwNDkxLCA5MDQ5NywgOTA1MDIsIDkwNTA4LCA5MDUxMywgCi0gICAgOTA1MTgsIDkwNTIzLCA5MDUyOCwgOTA1MzMsIDkwNTM4LCA5MDU0NCwgOTA1NDksIDkwNTU0LCA5MDU2MCwgOTA1NjUsIAotICAgIDkwNTcwLCA5MDU3NSwgOTA1ODAsIDkwNTg1LCA5MDU5MSwgOTA1OTcsIDkwNjAyLCA5MDYwNywgMTMyMTEsIDkwNjEyLCAKLSAgICA5MDYxNywgOTA2MjIsIDkwNjI3LCA5MDYzMiwgOTA2MzcsIDkwNjQyLCA5MDY0NywgOTA2NTIsIDkwNjU3LCA5MDY2MiwgCi0gICAgOTA2NjcsIDkwNjcyLCA5MDY3NywgOTA2ODIsIDkwNjg3LCA5MDY5MiwgOTA2OTcsIDkwNzAyLCA5MDcwNywgOTA3MTIsIAotICAgIDkwNzE3LCA5MDcyMiwgOTA3MjcsIDkwNzMyLCA5MDczNywgOTA3NDIsIDkwNzQ3LCA5MDc1MiwgOTA3NTcsIDkwNzYyLCAKLSAgICA5MDc2NywgOTA3NzIsIDkwNzc3LCA5MDc4MiwgOTA3ODcsIDkwNzkyLCA5MDc5NywgOTA4MDIsIDkwODA3LCA5MDgxMiwgCi0gICAgOTA4MTcsIDkwODIyLCA5MDgyNywgOTA4MzIsIDkwODM3LCA5MDg0MiwgOTA4NDcsIDkwODUyLCA5MDg1NywgOTA4NjIsIAotICAgIDkwODY3LCA5MDg3MiwgOTA4NzcsIDkwODgyLCA5MDg4NywgOTA4OTIsIDkwODk3LCA5MDkwMiwgOTA5MDcsIDkwOTEyLCAKLSAgICA5MDkxNywgOTA5MjIsIDkwOTI3LCA5MDkzMiwgOTA5MzgsIDkwOTQzLCA5MDk0OCwgOTA5NTMsIDkwOTU4LCA5MDk2NCwgCi0gICAgOTA5NjksIDkwOTc0LCA5MDk3OSwgOTA5ODQsIDkwOTg5LCA5MDk5NCwgOTEwMDAsIDkxMDA1LCA5MTAxMCwgOTEwMTUsIAotICAgIDkxMDIwLCA5MTAyNSwgOTEwMzEsIDkxMDM2LCA5MTA0MSwgOTEwNDYsIDkxMDUxLCA5MTA1NiwgOTEwNjIsIDkxMDY3LCAKLSAgICA5MTA3MiwgOTEwNzcsIDkxMDgyLCA5MTA4NywgOTEwOTMsIDkxMDk5LCA5MTEwNCwgOTExMDksIDkxMTE0LCA5MTEyMCwgCi0gICAgOTExMjYsIDkxMTMyLCA5MTEzNywgOTExNDIsIDkxMTQ4LCA5MTE1NCwgOTExNTksIDkxMTY1LCA5MTE3MSwgOTExNzcsIAotICAgIDkxMTgyLCA5MTE4NywgOTExOTMsIDkxMTk4LCA5MTIwNCwgOTEyMDksIDkxMjE1LCA5MTIyNCwgOTEyMjksIDkxMjM0LCAKLSAgICA5MTI0MCwgOTEyNDUsIDkxMjUxLCA5MTI1NiwgOTEyNjEsIDkxMjY2LCA5MTI3MSwgOTEyNzYsIDkxMjgxLCA5MTI4NiwgCi0gICAgOTEyOTEsIDkxMjk2LCA5MTMwMSwgOTEzMDYsIDkxMzExLCA5MTMxNiwgOTEzMjEsIDkxMzI2LCA5MTMzMSwgOTEzMzYsIAotICAgIDkxMzQxLCA5MTM0NiwgOTEzNTEsIDkxMzU2LCA5MTM2MSwgOTEzNjYsIDkxMzcxLCA5MTM3NiwgOTEzODEsIDkxMzg2LCAKLSAgICA5MTM5MSwgOTEzOTYsIDkxNDAxLCA5MTQwNiwgOTE0MTIsIDkxNDE4LCA5MTQyNCwgOTE0MjksIDkxNDM0LCA5MTQzOSwgCi0gICAgOTE0NDQsIDkxNDQ5LCA5MTQ1NCwgOTE0NTksIDkxNDY0LCA5MTQ2OSwgOTE0NzQsIDkxNDc5LCA5MTQ4NCwgOTE0ODksIAotICAgIDkxNDk0LCA5MTQ5OSwgOTE1MDQsIDkxNTA5LCA5MTUxNCwgOTE1MTksIDkxNTI0LCA5MTUzMCwgOTE1MzYsIDkxNTQxLCAKLSAgICA5MTU0NywgOTE1NTIsIDkxNTU3LCA5MTU2MywgOTE1NjgsIDkxNTc0LCA5MTU3OSwgOTE1ODUsIDkxNTkwLCA5MTU5NiwgCi0gICAgOTE2MDEsIDkxNjA3LCA5MTYxMiwgOTE2MTcsIDkxNjIyLCA5MTYyNywgOTE2MzIsIDkxNjM3LCA5MTY0MiwgODc3MjAsIAotICAgIDg3NzI2LCA4NzczMiwgODc3MzgsIDkxNjQ4LCA4Nzc0NCwgODc3NTAsIDkxNjU0LCA4Nzc1NiwgODc3NjIsIDg3NzY4LCAKLSAgICA4Nzc3NCwgODc3ODAsIDg3Nzg2LCA4Nzc5MiwgODc3OTgsIDg3ODA0LCA5MTY2MCwgODc4MTAsIDg3ODE2LCA4NzgyMiwgCi0gICAgOTE2NjYsIDg3ODI4LCA4NzgzNCwgODc4NDAsIDg3ODQ2LCA5MTY3MiwgODc4NTIsIDg3ODU4LCA4Nzg2NCwgODc4ODQsIAotICAgIDkxNjc4LCA5MTY4NCwgODc4OTAsIDkxNjkwLCA4Nzg5NiwgODc5MDIsIDg3OTA4LCA4NzkxNCwgODc5MjAsIDMxNTAsIAotICAgIDMxNTUsIDkxNjk2LCA5MTcwMSwgOTE3MDQsIDkxNzEwLCA5MTcxNiwgOTE3MjMsIDkxNzI4LCA5MTczMywgMjMzNywgCisgICAgMCwgMCwgNiwgMTAsIDE0LCAxOSwgMjcsIDM0LCA0NCwgNDksIDU1LCA2NCwgNjYsIDY5LCA4MSwgODksIDEwMiwgMTA4LCAKKyAgICAxMTMsIDExOSwgMTI0LCAxMzIsIDE0MSwgMTQ2LCAxNTcsIDE2MiwgMTY3LCAxNzAsIDE3NCwgMTgzLCAxODksIDE5NSwgCisgICAgMjAwLCAyMDcsIDIxNSwgMjIzLCAyMjQsIDIyNywgMjM1LCAyNDQsIDE3MSwgMjUwLCAyNTYsIDI2MywgMjczLCAyODAsIAorICAgIDI4NSwgMjg4LCAyOTMsIDI5OSwgMzAzLCAzMDYsIDMxMSwgMzE3LCAzMjMsIDMyOCwgMzMzLCAzMzksIDM0NSwgMzU0LCAKKyAgICAzNjEsIDM2OCwgMzc3LCAzNzksIDM4NCwgMzg5LCAzOTcsIDM5OSwgNDA3LCA0MDgsIDQxNiwgNDE4LCAzMzcsIDQyNSwgCisgICAgNDI4LCA0MzAsIDQzNiwgNDM4LCA0NDUsIDQ1MCwgNDU3LCA0NjIsIDQ2NywgNDc0LCA0ODIsIDQ4NiwgNDkyLCA0OTcsIAorICAgIDUwNywgNTEyLCA1MTksIDUyMiwgNTMwLCA1MzksIDU0MywgNTUzLCA1NjAsIDU2NywgNTc0LCA1ODMsIDU5MCwgNTkzLCAKKyAgICA1OTksIDYwMywgNjA3LCA2MTUsIDYxOSwgNjMyLCA2MzYsIDYzNywgNjQ0LCA2NTMsIDY2MiwgNjY1LCA2NzEsIDY3NSwgCisgICAgNjc3LCA2ODcsIDY5MiwgNzAwLCA3MDQsIDcwNywgNzE1LCA3MTksIDcyNCwgNzI5LCA3MzUsIDc0MCwgNzQ0LCA3NDcsIAorICAgIDc1NSwgNzY0LCA3NzMsIDc4MSwgNzg5LCA3OTMsIDc5OSwgODA3LCA4MTQsIDgxNywgODI3LCA4MzEsIDg0MiwgODUxLCAKKyAgICA4NTgsIDg2MSwgODY4LCA4NzAsIDg3NiwgODgwLCA4ODUsIDg4OSwgODk1LCA5MDQsIDkwOSwgOTEzLCA1ODgsIDkxNiwgCisgICAgOTIxLCA5MzAsIDkzOCwgOTQzLCA5NDYsIDY3NCwgOTUxLCA5NTYsIDk1OSwgOTY1LCA5NjksIDk3MywgOTc5LCA5ODYsIAorICAgIDk5NSwgOTk4LCAxMDA1LCAxMDE0LCAxMDI3LCAxMDMxLCAxMDM5LCAxMDQyLCAxMDQ4LCAxMDU0LCAxMDYzLCAxMDcwLCAKKyAgICAxMDczLCAxMDgxLCAxMDg4LCAxMDk1LCAxMDk5LCAxMTAyLCAxMTEwLCAxMTE0LCAxMTIzLCAxMTI5LCAxMTMzLCAxMTM2LCAKKyAgICAxMTQwLCAyNiwgMTE0NywgMTE1NiwgMTE2MSwgMTE2NiwgMTE3MiwgMTE3NywgMTE4MiwgMTE4NywgMTE5MSwgMTE5NiwgCisgICAgMTIwMiwgMTIwNywgMTIxMiwgMTIxNiwgMTIyMiwgMTIyNywgMTIzMiwgMTIzNywgMTI0MSwgMTI0NiwgMTI1MSwgMTI1NiwgCisgICAgMTI2MiwgMTI2OCwgMTI3NCwgMTI3OSwgMTI4MywgMTI4OCwgMTI5MywgMTI5OCwgMTMwMiwgMTMwNywgMTMxMiwgMTMxNywgCisgICAgMTMyMiwgMTE1NywgMTE2MiwgMTE2NywgMTE3MywgMTE3OCwgMTMyNiwgMTE4OCwgMTMzMiwgMTMzNywgMTM0MiwgMTM0OSwgCisgICAgMTM1MywgMTM1NiwgMTM2NSwgMTE5MiwgMTM2OSwgMTE5NywgMTIwMywgMTIwOCwgMTM3MywgMTM3OCwgMTM4MywgMTM4NywgCisgICAgMTM5MSwgMTM5NywgMTQwMSwgMTIxMywgMTQwNCwgMTQwNiwgMTIyMywgMTQxMSwgMTQxNSwgMTIyOCwgMTQyMSwgMTIzMywgCisgICAgMTQyNSwgMTQyOSwgMTIzOCwgMTQzMywgMTQzOCwgMTQ0MiwgMTQ0NSwgMTQ0OSwgMTI0MiwgMTI0NywgMTQ1NCwgMTQ2MCwgCisgICAgMTI1MiwgMTQ3MiwgMTQ3OCwgMTQ4NCwgMTQ5MCwgMTI1NywgMTI2OSwgMTI3NSwgMTQ5NCwgMTQ5OCwgMTUwMiwgMTUwNSwgCisgICAgMTI4MCwgMTUwOSwgMTUxMSwgMTUxNiwgMTUyMSwgMTUyNywgMTUzMiwgMTUzNywgMTU0MSwgMTU0NiwgMTU1MSwgMTU1NiwgCisgICAgMTU2MSwgMTU2NywgMTU3MiwgMTU3NywgMTU4MywgMTU4OSwgMTU5NCwgMTU5OCwgMTYwMywgMTYwOCwgMTYxMywgMTYxOCwgCisgICAgMTYyMywgMTYyNywgMTYzNSwgMTY0MCwgMTY0NCwgMTY0OSwgMTY1NCwgMTY1OSwgMTY2NCwgMTY2OCwgMTY3MSwgMTY3OCwgCisgICAgMTY4MywgMTY4OCwgMTY5MywgMTY5OCwgMTcwNCwgMTcwOSwgMTcxMywgMTI4NCwgMTcxNiwgMTcyMSwgMTcyNiwgMTI4OSwgCisgICAgMTczMCwgMTczNCwgMTc0MSwgMTI5NCwgMTc0OCwgMTI5OSwgMTc1MiwgMTc1NCwgMTc1OSwgMTc2NSwgMTMwMywgMTc3MCwgCisgICAgMTc3OSwgMTMwOCwgMTc4NCwgMTc5MCwgMTc5NSwgMTMxMywgMTgwMCwgMTgwNSwgMTgwOSwgMTgxMiwgMTgxNywgMTgyMSwgCisgICAgMTgyNSwgMTgyOSwgMTgzMiwgMTgzNiwgMTMxOCwgMTg0MSwgMTMyMywgMTg0NSwgMTg0NywgMTg1MywgMTg1OSwgMTg2NSwgCisgICAgMTg3MSwgMTg3NywgMTg4MywgMTg4OSwgMTg5NSwgMTkwMCwgMTkwNiwgMTkxMiwgMTkxOCwgMTkyNCwgMTkzMCwgMTkzNiwgCisgICAgMTk0MiwgMTk0OCwgMTk1NCwgMTk1OSwgMTk2NCwgMTk2OSwgMTk3NCwgMTk3OSwgMTk4NCwgMTk4OSwgMTk5NCwgMTk5OSwgCisgICAgMjAwNCwgMjAxMCwgMjAxNSwgMjAyMSwgMjAyNiwgMjAzMiwgMjAzOCwgMjA0MywgMjA0OSwgMjA1NSwgMjA2MSwgMjA2NywgCisgICAgMjA3MiwgMjA3NywgMjA3OSwgMjA4MCwgMjA4NCwgMjA4OCwgMjA5MywgMjA5NywgMjEwMSwgMjEwNSwgMjExMCwgMjExNCwgCisgICAgMjExNywgMjEyMiwgMjEyNiwgMjEzMSwgMjEzNSwgMjEzOSwgMjE0NCwgMjE0OCwgMjE1MSwgMjE1NSwgMjE2MSwgMjE3NSwgCisgICAgMjE3OSwgMjE4MywgMjE4NywgMjE5MCwgMjE5NSwgMjE5OSwgMjIwMywgMjIwNiwgMjIxMCwgMjIxNSwgMjIyMCwgMjIyNSwgCisgICAgMjIzMCwgMjIzNCwgMjIzOCwgMjI0MiwgMjI0NiwgMjI1MSwgMjI1NSwgMjI2MCwgMjI2NCwgMjI2OSwgMjI3NSwgMjI4MiwgCisgICAgMjI4OCwgMjI5MywgMjI5OCwgMjMwMywgMjMwOSwgMjMxNCwgMjMyMCwgMjMyNSwgMjMyOCwgMjMzMCwgMTE3NCwgMjMzNCwgCisgICAgMjM0MSwgMjM0OSwgMjM1OSwgMjM2OCwgMjM4MiwgMjM4NiwgMjM5MCwgMjM5NSwgMjQwOCwgMjQxNiwgMjQyMCwgMjQyNSwgCisgICAgMjQyOSwgMjQzMiwgMjQzNiwgMjQ0MCwgMjQ0NSwgMjQ1MCwgMjQ1NSwgMjQ1OSwgMjQ2MiwgMjQ2NiwgMjQ3MywgMjQ4MCwgCisgICAgMjQ4NiwgMjQ5MSwgMjQ5NiwgMjUwMiwgMjUwOCwgMjUxMywgMjUxNiwgMTc1NiwgMjUxOCwgMjUyNCwgMjUyOCwgMjUzMywgCisgICAgMjUzNywgMjU0MSwgMTY3NCwgMTc2NywgMjU0NiwgMjU1MCwgMjU1MywgMjU1OCwgMjU2MywgMjU2OCwgMjU3MywgMjU3NywgCisgICAgMjU4NCwgMjU4OSwgMjU5MiwgMjU5NiwgMjYwMywgMjYwOSwgMjYxMywgMjYxNywgMjYyMSwgMjYyNiwgMjYzMywgMjYzOCwgCisgICAgMjY0MywgMjY1MCwgMjY1NiwgMjY2MiwgMjY2OCwgMjY4MiwgMjY5OSwgMjcxNCwgMjcyOSwgMjczOCwgMjc0MywgMjc0NywgCisgICAgMjc1MiwgMjc1NywgMjc2MSwgMjc3MywgMjc4MCwgMjc4NiwgMjI3OCwgMjc5MiwgMjc5OSwgMjgwNSwgMjgwOSwgMjgxMiwgCisgICAgMjgxOSwgMjgyNSwgMjgzMCwgMjgzNCwgMjgzOSwgMjg0MywgMjg0NywgMjEwMiwgMjg1MSwgMjg1NiwgMjg2MSwgMjg2NSwgCisgICAgMjg3MCwgMjg3OCwgMjg4MiwgMjg4NywgMjg5MSwgMjg5NSwgMjg5OSwgMjkwNCwgMjkwOSwgMjkxNCwgMjkxOCwgMjkyMywgCisgICAgMjkyOCwgMjkzMiwgMjkzNywgMjk0MSwgMjk0NCwgMjk0OCwgMjk1MiwgMjk2MCwgMjk2NSwgMjk2OSwgMjk3MywgMjk3OSwgCisgICAgMjk4OCwgMjk5MiwgMjk5NiwgMzAwMiwgMzAwNywgMzAxNCwgMzAxOCwgMzAyOCwgMzAzMiwgMzAzNiwgMzA0MSwgMzA0NSwgCisgICAgMzA1MCwgMzA1NiwgMzA2MSwgMzA2NSwgMzA2OSwgMzA3MywgMjQ3NiwgMzA4MSwgMzA4NiwgMzA5MiwgMzA5NywgMzEwMSwgCisgICAgMzEwNiwgMzExMSwgMzExNSwgMzEyMSwgMzEyNiwgMjEwNiwgMzEzMiwgMzEzOCwgMzE0MywgMzE0OCwgMzE1MywgMzE1OCwgCisgICAgMzE2MywgMzE2OCwgMzE3MywgMzE3OCwgMzE4MywgMzE4OSwgMzE5NCwgMTE4OSwgMTAxLCAzMjAwLCAzMjA0LCAzMjA4LCAKKyAgICAzMjEyLCAzMjE3LCAzMjIxLCAzMjI1LCAzMjMxLCAzMjM2LCAzMjQwLCAzMjQ0LCAzMjQ5LCAzMjU0LCAzMjU4LCAzMjYzLCAKKyAgICAzMjY3LCAzMjcwLCAzMjc0LCAzMjc5LCAzMjgzLCAzMjg4LCAzMjkyLCAzMjk1LCAzMjk5LCAzMzAzLCAzMzA4LCAzMzEyLCAKKyAgICAzMzE1LCAzMzI4LCAzMzMyLCAzMzM2LCAzMzQwLCAzMzQ1LCAzMzQ5LCAzMzUzLCAzMzU2LCAzMzYwLCAzMzY0LCAzMzY5LCAKKyAgICAzMzczLCAzMzc4LCAzMzgzLCAzMzg4LCAzMzkyLCAzMzk3LCAzNDAwLCAzNDAzLCAzNDA4LCAzNDE0LCAzNDE4LCAzNDIyLCAKKyAgICAzNDI1LCAzNDMwLCAzNDM0LCAzNDM5LCAzNDQzLCAzNDQ3LCAzNDUwLCAzNDU2LCAzNDYxLCAzNDY2LCAzNDcyLCAzNDc3LCAKKyAgICAzNDgyLCAzNDg4LCAzNDk0LCAzNDk5LCAzNTA0LCAzNTA5LCAzNTE0LCAxMDk3LCA1OTIsIDM1MTcsIDM1MjAsIDM1MjUsIAorICAgIDM1MjksIDM1MzMsIDM1MzcsIDM1NDEsIDM1NDQsIDM1NDgsIDM1NTMsIDM1NTgsIDM1NjIsIDM1NjcsIDM1NzEsIDM1NzYsIAorICAgIDM1ODAsIDM1ODQsIDM1ODgsIDM1OTQsIDM2MDAsIDM2MDMsIDM2MDYsIDE1MCwgMzYxMiwgMzYxNywgMzYyNiwgMzYzNCwgCisgICAgMzY0MywgMzY1MywgMzY2MCwgMzY2NiwgMzY3MywgMzY3OCwgMzY4MiwgMzY4NiwgMzY5NCwgMzcwMSwgMzcwNiwgMzcxMywgCisgICAgMzcxOCwgMzcyMiwgMzczMiwgMzczNiwgMzc0MCwgMzc0NSwgMzc1MCwgMzc2MCwgMjExOCwgMzc2NSwgMzc2OSwgMzc3MiwgCisgICAgMzc3OCwgMzc4MywgMzc4OSwgMzc5NSwgMzgwMCwgMzgwNywgMzgxMSwgMzgxNSwgNjE2LCA3MDUsIDEzNTAsIDM4MTksIAorICAgIDM4MjYsIDM4MzMsIDM4MzksIDM4NDQsIDM4NTEsIDM4NTgsIDM4NjMsIDM4NjksIDM4NzUsIDM4ODAsIDM4ODQsIDM4OTAsIAorICAgIDM4OTcsIDM5MDIsIDM5MDYsIDM5MTAsIDIxMjcsIDM5MTYsIDM5MjQsIDM5MzAsIDM5MzgsIDc1OSwgMzk0NCwgMzk1MiwgCisgICAgMzk2MywgMzk2NywgMzk3NywgMjEzMiwgMzk4MywgMzk4OCwgNDAwMywgNDAwOSwgNDAxNiwgNDAyNiwgNDAzMiwgNDAzNywgCisgICAgNDA0MywgNDA0OSwgNDA1MiwgNDA1NSwgNDA1OSwgNDA2NCwgNDA3MSwgNDA4MCwgNDA4NSwgNDA4OSwgNDA5MywgNDA5NywgCisgICAgNDEwMSwgNDEwNiwgNDExMiwgNDEyMywgNDEyNywgMzI3NSwgNDEzMiwgNDE0NCwgNDE1MCwgNDE1OCwgNDE2MiwgNDE2NywgCisgICAgMTU0MywgNDE3NCwgNDE3NywgNDE4MCwgNDE4NCwgNDE4NywgNDE5MywgNDE5NywgNDIxMSwgNDIxNSwgNDIxOCwgNDIyMiwgCisgICAgNDIyOCwgNDIzNCwgNDIzOSwgNDI0MywgNDI0NywgNDI1MywgNDI2NCwgNDI3MCwgNDI3NSwgNDI4MSwgNDI4NSwgNDI5MywgCisgICAgNDMwNSwgNDMxNSwgNDMyMSwgNDMyNiwgNDMzNSwgNDM0MywgNDM1MCwgNDM1NiwgNDM2MiwgNDM2NiwgNDM3MiwgNDM4MSwgCisgICAgNDM5MCwgNDM5NCwgNDQwMywgNDQwOCwgNDQxMiwgNDQxNywgNDQyMSwgNDQyOSwgNDQzNSwgNDQzOSwgNDQ0NCwgNDQ0OCwgCisgICAgNDQ1NCwgMjE0MCwgMTM2NiwgNDQ2MCwgNDQ2NSwgNDQ3MSwgNDQ3NiwgNDQ4MSwgNDQ4NiwgNDQ5MSwgNDQ5NiwgNDUwMSwgCisgICAgNDUwNywgNDUxMiwgNDUxOCwgNDUyMywgNDUyOCwgNDUzMywgNDUzOSwgNDU0NCwgNDU0OSwgNDU1NCwgNDU1OSwgNDU2NSwgCisgICAgNDU3MCwgNDU3NiwgNDU4MSwgNDU4NiwgNDU5MSwgNDU5NiwgNDYwMSwgNDYwNiwgNDYxMiwgNDYxNywgNDYyMiwgMjk3LCAKKyAgICAzMzIsIDQ2MjcsIDQ2MzMsIDQ2MzcsIDQ2NDEsIDQ2NDYsIDQ2NTAsIDQ2NTQsIDQ2NTcsIDQ2NjEsIDQ2NjUsIDQ2NjksIAorICAgIDQ2NzMsIDQ2NzcsIDQ2ODIsIDQ2ODYsIDQ2OTAsIDQ2OTYsIDQ0NTcsIDQ3MDEsIDQ3MDUsIDQ3MDgsIDQ3MTMsIDQ3MTgsIAorICAgIDQ3MjMsIDQ3MjgsIDQ3MzMsIDQ3MzgsIDQ3NDMsIDQ3NDgsIDQ3NTMsIDQ3NTgsIDQ3NjIsIDQ3NjcsIDQ3NzIsIDQ3NzcsIAorICAgIDQ3ODIsIDQ3ODcsIDQ3OTIsIDQ3OTcsIDQ4MDIsIDQ4MDcsIDQ4MTIsIDQ4MTYsIDQ4MjEsIDQ4MjYsIDQ4MzEsIDQ4MzYsIAorICAgIDQ4NDEsIDQ4NDYsIDQ4NTEsIDQ4NTYsIDQ4NjEsIDQ4NjYsIDQ4NzAsIDQ4NzUsIDQ4ODAsIDQ4ODUsIDQ4OTAsIDQ4OTUsIAorICAgIDQ5MDAsIDQ5MDUsIDQ5MTAsIDQ5MTUsIDQ5MjAsIDQ5MjQsIDQ5MjksIDQ5MzQsIDQ5MzksIDQ5NDQsIDQ5NDksIDQ5NTQsIAorICAgIDQ5NTksIDQ5NjQsIDQ5NjksIDQ5NzQsIDQ5NzgsIDQ5ODMsIDQ5ODgsIDQ5OTMsIDQ5OTgsIDUwMDMsIDUwMDgsIDUwMTMsIAorICAgIDUwMTgsIDUwMjMsIDUwMjgsIDUwMzIsIDUwMzcsIDUwNDIsIDUwNDcsIDUwNTIsIDUwNTcsIDUwNjIsIDUwNjcsIDUwNzIsIAorICAgIDUwNzcsIDUwODIsIDUwODYsIDUwOTEsIDUwOTYsIDUxMDEsIDUxMDYsIDUxMTIsIDUxMTgsIDUxMjQsIDUxMzAsIDUxMzYsIAorICAgIDUxNDIsIDUxNDgsIDUxNTMsIDUxNTksIDUxNjUsIDUxNzEsIDUxNzcsIDUxODMsIDUxODksIDUxOTUsIDUyMDEsIDUyMDcsIAorICAgIDUyMTMsIDUyMTgsIDUyMjQsIDUyMzAsIDUyMzYsIDUyNDIsIDUyNDgsIDUyNTQsIDUyNjAsIDUyNjYsIDUyNzIsIDUyNzgsIAorICAgIDUyODMsIDUyODksIDUyOTUsIDUzMDEsIDUzMDcsIDUzMTMsIDUzMTksIDUzMjUsIDUzMzEsIDUzMzcsIDUzNDMsIDUzNDgsIAorICAgIDUzNTQsIDUzNjAsIDUzNjYsIDUzNzIsIDUzNzgsIDUzODQsIDUzOTAsIDUzOTYsIDU0MDIsIDU0MDgsIDU0MTMsIDU0MTksIAorICAgIDU0MjUsIDU0MzEsIDU0MzcsIDU0NDMsIDU0NDksIDU0NTUsIDU0NjEsIDU0NjcsIDU0NzMsIDU0NzgsIDU0ODIsIDU0ODgsIAorICAgIDU0OTQsIDU1MDAsIDU1MDYsIDU1MTIsIDU1MTgsIDU1MjQsIDU1MzAsIDU1MzYsIDU1NDIsIDU1NDcsIDU1NTMsIDU1NTksIAorICAgIDU1NjUsIDU1NzEsIDU1NzcsIDU1ODMsIDU1ODksIDU1OTUsIDU2MDEsIDU2MDcsIDU2MTIsIDU2MTgsIDU2MjQsIDU2MzAsIAorICAgIDU2MzYsIDU2NDIsIDU2NDgsIDU2NTQsIDU2NjAsIDU2NjYsIDU2NzIsIDU2NzcsIDU2ODMsIDU2ODksIDU2OTUsIDU3MDEsIAorICAgIDU3MDcsIDU3MTMsIDU3MTksIDU3MjUsIDU3MzEsIDU3MzcsIDU3NDIsIDU3NDgsIDU3NTQsIDU3NjAsIDU3NjYsIDU3NzIsIAorICAgIDU3NzgsIDU3ODQsIDU3OTAsIDU3OTYsIDU4MDIsIDU4MDcsIDU4MTMsIDU4MTksIDU4MjUsIDU4MzEsIDU4MzcsIDU4NDMsIAorICAgIDU4NDksIDU4NTUsIDU4NjEsIDU4NjcsIDU4NzIsIDU4NzgsIDU4ODQsIDU4OTAsIDU4OTYsIDU5MDIsIDU5MDgsIDU5MTQsIAorICAgIDU5MjAsIDU5MjYsIDU5MzIsIDU5MzcsIDU5NDMsIDU5NDksIDU5NTUsIDU5NjEsIDU5NjcsIDU5NzMsIDU5NzksIDU5ODUsIAorICAgIDU5OTEsIDU5OTcsIDYwMDIsIDYwMDgsIDYwMTQsIDYwMjAsIDYwMjYsIDYwMzIsIDYwMzgsIDYwNDQsIDYwNTAsIDYwNTYsIAorICAgIDYwNjIsIDYwNjcsIDYwNzMsIDYwNzksIDYwODUsIDYwOTEsIDYwOTcsIDYxMDMsIDYxMDksIDYxMTUsIDYxMjEsIDYxMjcsIAorICAgIDYxMzIsIDYxMzYsIDYxMzksIDYxNDYsIDYxNTAsIDYxNjMsIDYxNjcsIDYxNzEsIDYxNzUsIDYxNzgsIDYxODIsIDYxODcsIAorICAgIDYxOTEsIDYxOTUsIDYyMDEsIDYyMDgsIDYyMTksIDYyMjcsIDYyMzQsIDYyMzgsIDYyNDYsIDYyNTUsIDYyNjEsIDYyNjUsIAorICAgIDYyNzcsIDYyODIsIDYyODUsIDYyOTAsIDYyOTQsIDYzMDQsIDYzMTIsIDYzMjAsIDYzMjYsIDYzMzAsIDYzNDAsIDYzNTAsIAorICAgIDYzNTgsIDYzNjUsIDYzNzIsIDYzNzgsIDYzODQsIDYzOTEsIDYzOTUsIDY0MDIsIDY0MTIsIDY0MjIsIDY0MzAsIDY0MzcsIAorICAgIDY0NDIsIDY0NDYsIDY0NTAsIDY0NTgsIDY0NjIsIDY0NjcsIDY0NzQsIDY0ODIsIDY0ODcsIDY0OTEsIDY0OTYsIDY1MDAsIAorICAgIDY1MDcsIDY1MTIsIDY1MjYsIDY1MzEsIDY1MzYsIDY1NDMsIDM1MzAsIDY1NTIsIDY1NTYsIDY1NjEsIDY1NjUsIDY1NjksIAorICAgIDY1NzIsIDY1NzcsIDY1ODIsIDY1OTEsIDY1OTcsIDY2MDMsIDY2MDksIDY2MTMsIDY2MjQsIDY2MzQsIDY2NDksIDY2NjQsIAorICAgIDY2NzksIDY2OTQsIDY3MDksIDY3MjQsIDY3MzksIDY3NTQsIDY3NjksIDY3ODQsIDY3OTksIDY4MTQsIDY4MjksIDY4NDQsIAorICAgIDY4NTksIDY4NzQsIDY4ODksIDY5MDQsIDY5MTksIDY5MzQsIDY5NDksIDY5NjQsIDY5NzksIDY5OTQsIDcwMDksIDcwMjQsIAorICAgIDcwMzksIDcwNTQsIDcwNjksIDcwODQsIDcwOTksIDcxMTQsIDcxMjksIDcxNDQsIDcxNTksIDcxNzQsIDcxODksIDcyMDQsIAorICAgIDcyMTksIDcyMzQsIDcyNDksIDcyNjQsIDcyNzksIDcyOTQsIDczMDksIDczMjQsIDczMzksIDczNTQsIDczNjksIDczNzgsIAorICAgIDczODcsIDczOTIsIDczOTgsIDc0MDgsIDc0MTIsIDc0MTYsIDc0MjEsIDc0MjYsIDc0MzQsIDc0MzgsIDc0NDEsIDc0NDUsIAorICAgIDMwMjMsIDc0NDgsIDc0NTMsIDMzNiwgNTEwLCA3NDU5LCA3NDY3LCA3NDcxLCA3NDc1LCA3NDc4LCA3NDgyLCA3NDg4LCAKKyAgICA3NDkyLCA3NTAwLCA3NTA2LCA3NTExLCA3NTE4LCA3NTI2LCA3NTMzLCA3NTM5LCA3NTQ0LCA3NTUxLCA3NTU3LCA3NTY1LCAKKyAgICA3NTY5LCA3NTc0LCA3NTg2LCA3NTk3LCA3NjA0LCA3NjA4LCA3NjEyLCA3NjE2LCA3NjE5LCA3NjI1LCAzMzAwLCA3NjI5LCAKKyAgICA3NjM1LCA3NjQwLCA3NjQ1LCA3NjUwLCA3NjU2LCA3NjYxLCA3NjY2LCA3NjcxLCA3Njc2LCA3NjgyLCA3Njg3LCA3NjkyLCAKKyAgICA3Njk4LCA3NzAzLCA3NzA5LCA3NzE0LCA3NzIwLCA3NzI1LCA3NzMxLCA3NzM2LCA3NzQxLCA3NzQ2LCA3NzUxLCA3NzU2LCAKKyAgICA3NzYyLCA3NzY3LCA3NzcyLCA3Nzc3LCA3NzgzLCA3Nzg5LCA3Nzk1LCA3ODAxLCA3ODA3LCA3ODEzLCA3ODE5LCA3ODI1LCAKKyAgICA3ODMxLCA3ODM3LCA3ODQzLCA3ODQ5LCA3ODU0LCA3ODU5LCA3ODY0LCA3ODY5LCA3ODc0LCA3ODc5LCA3ODg0LCA3ODg5LCAKKyAgICA3ODk1LCA3OTAxLCA3OTA2LCA3OTEyLCA3OTE4LCA3OTI0LCA3OTI5LCA3OTM0LCA3OTM5LCA3OTQ0LCA3OTUwLCA3OTU2LCAKKyAgICA3OTYxLCA3OTY2LCA3OTcxLCA3OTc2LCA3OTgxLCA3OTg3LCA3OTkyLCA3OTk4LCA4MDA0LCA4MDEwLCA4MDE2LCA4MDIyLCAKKyAgICA4MDI4LCA4MDM0LCA4MDQwLCA4MDQ2LCAyMTQ5LCA3NDc3LCA4MDUxLCA4MDU1LCA4MDU5LCA4MDYyLCA4MDY5LCA4MDcyLCAKKyAgICA4MDc2LCA4MDg0LCA4MDg5LCA4MDk0LCA4MDg1LCA4MDk5LCAyMTc2LCA4MTAzLCA4MTA5LCA4MTE1LCA4MTIwLCA4MTI1LCAKKyAgICA4MTMyLCA4MTQwLCA4MTQ1LCA4MTQ5LCA4MTUyLCA4MTU2LCA4MTYyLCA4MTY4LCA4MTcyLCAyMTg0LCA1NDEsIDgxNzUsIAorICAgIDgxNzksIDgxODQsIDgxOTAsIDgxOTUsIDgxOTksIDgyMDIsIDgyMDYsIDgyMTIsIDgyMTcsIDgyMjEsIDgyMjgsIDgyMzIsIAorICAgIDgyMzYsIDgyNDAsIDg4MiwgOTg0LCA4MjQzLCA4MjUxLCA4MjU4LCA4MjY0LCA4MjcxLCA4Mjc5LCA4Mjg2LCA4Mjk3LCAKKyAgICA4MzA0LCA4MzEwLCA4MzE1LCA4MzI3LCAxMjA5LCAxMzc0LCAxMzc5LCA4MzM4LCAxMzg0LCA4MzQyLCA4MzQ2LCA4MzU1LCAKKyAgICA4MzYzLCA4MzY3LCA4Mzc2LCA4MzgyLCA4Mzg3LCA4MzkxLCA4Mzk3LCA4NDAyLCA4NDEwLCA4NDE3LCAyNzM0LCA4NDI0LCAKKyAgICA4NDI4LCA4NDM3LCA4NDQ2LCA4NDU1LCA4NDY0LCA4NDcwLCA4NDc1LCA4NDgwLCA4NDkxLCA4NTAwLCA4NTEyLCA4NTE3LCAKKyAgICA4NTI1LCAyMjM1LCA4NTI5LCA4NTMxLCA4NTM2LCA4NTQwLCA4NTQ5LCA4NTU3LCAxMzg4LCAxNjUsIDM1NzIsIDM1NzcsIAorICAgIDg1NjMsIDg1NjcsIDg1NzYsIDg1ODIsIDg1ODcsIDg1OTAsIDg1OTksIDM1ODEsIDg2MDUsIDI3MjYsIDg2MDksIDg2MTcsIAorICAgIDg2MjEsIDg2MjUsIDg2MjksIDIyNTIsIDg2MzMsIDg2MzgsIDg2NDUsIDg2NTEsIDg2NTcsIDg2NjAsIDg2NjIsIDg2NjUsIAorICAgIDg2NzMsIDg2ODEsIDg2ODksIDg2OTIsIDg2OTcsIDIyNjUsIDg3MDIsIDgwOTYsIDg3MDUsIDg3MDcsIDg3MTIsIDg3MTcsIAorICAgIDg3MjIsIDg3MjcsIDg3MzIsIDg3MzcsIDg3NDIsIDg3NDcsIDg3NTIsIDg3NTcsIDg3NjMsIDg3NjgsIDg3NzMsIDg3NzgsIAorICAgIDg3ODQsIDg3ODksIDg3OTQsIDg3OTksIDg4MDQsIDg4MDksIDg4MTQsIDg4MjAsIDg4MjUsIDg4MzAsIDg4MzUsIDg4NDAsIAorICAgIDg4NDUsIDg4NTAsIDg4NTUsIDg4NjAsIDg4NjUsIDg4NzAsIDg4NzUsIDg4ODAsIDg4ODUsIDg4OTAsIDg4OTUsIDg5MDAsIAorICAgIDg5MDUsIDg5MTEsIDg5MTcsIDg5MjIsIDg5MjcsIDg5MzIsIDg5MzcsIDg5NDIsIDIyNzYsIDIyODMsIDIyODksIDg5NDcsIAorICAgIDg5NTUsIDg5NjEsIDg5NjksIDIzMTUsIDIzMjEsIDg5NzcsIDg5ODEsIDg5ODYsIDg5OTAsIDg5OTQsIDg5OTgsIDkwMDMsIAorICAgIDkwMDcsIDkwMTIsIDkwMTYsIDkwMTksIDkwMjIsIDkwMjgsIDkwMzUsIDkwNDEsIDkwNDgsIDkwNTQsIDkwNjEsIDkwNjcsIAorICAgIDkwNzQsIDkwODAsIDkwODYsIDkwOTUsIDkxMDEsIDkxMDUsIDkxMDksIDkxMTMsIDkxMTcsIDkxMjIsIDkxMjYsIDkxMzEsIAorICAgIDkxMzUsIDkxNDEsIDkxNDYsIDkxNTMsIDkxNjQsIDkxNzIsIDkxODIsIDkxODgsIDkxOTgsIDkyMDcsIDkyMTQsIDkyMTksIAorICAgIDkyMjMsIDkyMzQsIDkyNDQsIDkyNTcsIDkyNjgsIDkyODEsIDkyOTIsIDkzMDQsIDkzMTYsIDkzMjgsIDkzNDEsIDkzNTQsIAorICAgIDkzNjEsIDkzNjcsIDkzNzgsIDkzODgsIDk0MDIsIDk0MDksIDk0MTUsIDk0MjQsIDk0MzIsIDk0MzYsIDk0NDEsIDk0NDUsIAorICAgIDk0NTIsIDk0NjAsIDk0NjcsIDk0NzEsIDk0NzcsIDk0ODEsIDk0ODcsIDk0OTcsIDk1MDEsIDk1MDYsIDk1MTEsIDk1MTgsIAorICAgIDk1MjQsIDk1MzQsIDgyNjYsIDk1NDAsIDk1NDQsIDk1NTEsIDk1NTcsIDk1NjQsIDk1NzEsIDk4MywgOTU3NSwgOTU3OSwgCisgICAgOTU4NCwgOTU4OSwgOTU5NCwgOTU5OCwgOTYwNCwgOTYxMiwgOTYxOSwgOTYyNSwgOTYyOSwgOTYzMiwgOTYzOCwgOTY0OCwgCisgICAgOTY1MiwgOTY1OCwgOTY2MywgOTY2NywgOTY3MSwgOTY3NywgOTY4MywgMjE3MiwgOTY4OCwgOTY5MCwgOTY5NSwgOTcwMywgCisgICAgOTcxMiwgOTcxNiwgOTcyMiwgOTcyNywgOTczMiwgOTczNywgOTc0MiwgOTc0OCwgOTc1MywgOTc1OCwgNDI0OSwgOTc2MywgCisgICAgOTc2OCwgOTc3MiwgOTc3OCwgOTc4MywgOTc4OSwgOTc5NCwgOTc5OSwgOTgwNSwgOTgxMCwgOTcxNywgOTgxNiwgOTgyMCwgCisgICAgOTgyNywgOTgzMywgOTgzOCwgOTg0MiwgNjUyMiwgOTg0NywgOTg1NiwgOTg2MSwgOTg2NiwgODY0MSwgODY0OCwgOTg3MSwgCisgICAgMjkwMSwgOTg3NSwgOTg4MCwgOTg4NSwgOTg5MCwgOTcyOCwgOTg5NCwgOTg5OSwgOTkwNCwgOTczMywgOTkwOCwgOTczOCwgCisgICAgOTkxMywgOTkyMCwgOTkyNywgOTkzMywgOTk0MCwgOTk0NiwgOTk1MiwgOTk1NywgOTk2NCwgOTk2OSwgOTk3NCwgOTk3OSwgCisgICAgOTk4NSwgOTc0MywgOTc0OSwgOTk5MSwgOTk5NywgMTAwMDIsIDEwMDA3LCAxMDAxNSwgOTc1NCwgMTAwMjAsIDExMTIsIAorICAgIDEwMDIzLCAxMDAzMSwgMTAwMzcsIDEwMDQzLCAxMDA1MiwgMTAwNjAsIDEwMDY4LCAxMDA3NiwgMTAwODQsIDEwMDkyLCAKKyAgICAxMDEwMCwgMTAxMDgsIDEwMTE2LCAxMDEyNSwgMTAxMzQsIDEwMTQyLCAxMDE1MSwgMTAxNjAsIDEwMTY5LCAxMDE3OCwgCisgICAgMTAxODcsIDEwMTk2LCAxMDIwNSwgMTAyMTQsIDEwMjIzLCAxMDIzMiwgMTAyNDAsIDEwMjQ1LCAxMDI1MSwgMTAyNTksIAorICAgIDEwMjY2LCAxMDI4MSwgMTAyOTgsIDEwMzE3LCAxMDMyNiwgMTAzMzQsIDEwMzQ5LCAxMDM2MCwgMTAzNjgsIDEwMzc4LCAKKyAgICAxMDM4OCwgMTAzOTYsIDEwNDAyLCAxMDQxNCwgMTA0MjMsIDEwNDMxLCAxMDQzOCwgMTA0NDUsIDEwNDUyLCAxMDQ1OCwgCisgICAgMTA0NjMsIDEwNDczLCAxMDQ4MSwgMTA0OTEsIDEwNDk4LCAxMDUwOCwgMTA1MTgsIDEwNTI4LCAxMDUzNiwgMTA1NDMsIAorICAgIDEwNTUyLCAxMDU2MiwgMTA1NzYsIDEwNTkxLCAxMDYwMCwgMTA2MDgsIDEwNjEzLCAxMDYxNywgMTA2MjYsIDEwNjMyLCAKKyAgICAxMDYzNywgMTA2NDcsIDEwNjU3LCAxMDY2NywgMTA2NzIsIDEwNjc2LCAxMDY4NSwgMTA2OTAsIDEwNzA2LCAxMDcyMywgCisgICAgMTA3MzMsIDEwNzQ0LCAxMDc1NywgMTA3NjUsIDEwNzc4LCAxMDc5MCwgMTA3OTgsIDEwODAzLCAxMDgwNywgMTA4MTMsIAorICAgIDEwODE4LCAxMDgyNiwgMTA4MzQsIDEwODQxLCAxMDg0NiwgMTA4NTQsIDEwODY0LCAxMDg3MCwgMTA4NzQsIDEwODc3LCAKKyAgICAxMDg4MSwgMTA4ODcsIDEwODk0LCAxMDg5OCwgMTA5MDYsIDEwOTE1LCAxMDkyMywgMTA5MzAsIDEwOTM1LCAxMDk0MCwgCisgICAgMTA5NDQsIDEwOTQ4LCAxMDk1NiwgMTA5NzEsIDEwOTg3LCAxMDk5MywgMTEwMDEsIDExMDEwLCAxMTAxOCwgMTEwMjQsIAorICAgIDExMDI4LCAxMTAzNSwgMTEwNDYsIDExMDUwLCAxMTA1MywgMTEwNTksIDk3NTksIDExMDY0LCAxMTA3MCwgMTEwNzcsIAorICAgIDExMDgzLCAxMTA4OCwgMTEwOTUsIDExMTAyLCAxMTEwOSwgMTExMTYsIDExMTIzLCAxMTEzMCwgMTExMzcsIDExMTQ0LCAKKyAgICAxMTE0OSwgMTAyOTQsIDExMTU0LCAxMTE2MCwgMTExNjcsIDExMTc0LCAxMTE3OSwgMTExODYsIDExMTk1LCAxMTE5OSwgCisgICAgMTEyMTEsIDg2NzksIDExMjE1LCAxMTIxOCwgMTEyMjIsIDExMjI2LCAxMTIzMCwgMTEyMzQsIDExMjQwLCAxMTI0NiwgCisgICAgMTEyNTEsIDExMjU3LCAxMTI2MiwgMTEyNjcsIDExMjczLCAxMTI3OCwgMTEyODMsIDk1MTQsIDExMjg4LCAxMTI5MiwgCisgICAgMTEyOTYsIDExMzAwLCAxMTMwNSwgMTEzMTAsIDExMzE1LCAxMTMyMywgMTEzMjksIDExMzM0LCAxMTMzOCwgMTEzNDIsIAorICAgIDExMzQ5LCAxMTM1NCwgMTEzNjIsIDExMzY5LCAxMTM3NCwgMTEzNzgsIDExMzgxLCAxMTM4NywgMTEzOTQsIDExMzk4LCAKKyAgICAxMTQwMSwgMTE0MDYsIDExNDEwLCA0Mjg4LCAxMTQxNiwgMTE0MjUsIDQ2LCAxMTQzMywgMTE0MzksIDExNDQ0LCAxMTQ0OSwgCisgICAgMTE0NTcsIDExNDY0LCAxMTQ2OSwgOTUyOSwgMTE0NzUsIDExNDgxLCAxMTQ4NiwgMTE0OTAsIDExNDkzLCAxMTUwOCwgCisgICAgMTE1MjcsIDExNTM5LCAxMTU1MiwgMTE1NjUsIDExNTc4LCAxMTU5MiwgMTE2MDUsIDExNjIwLCAxMTYyNywgOTc2NCwgCisgICAgMTE2MzMsIDExNjQ3LCAxMTY1MiwgMTE2NTgsIDExNjYzLCAxMTY3MSwgMTE2NzYsIDg0MzMsIDExNjgxLCAxMTY4NCwgCisgICAgMTE2OTIsIDExNjk5LCAxMTcwNCwgMTE3MDgsIDExNzE0LCAyOTA2LCAxMDM3NiwgMTE3MTgsIDExNzIyLCAxMTcyOCwgCisgICAgMTE3MzQsIDExNzM5LCAxMTc0NSwgMTE3NTAsIDk3NzMsIDExNzU2LCAxMTc2MiwgMTE3NjcsIDExNzcyLCAxMTc4MCwgCisgICAgMTE3ODYsIDExNzk5LCAxMTgwNywgMTE4MTQsIDExODIwLCA5Nzc5LCAxMTgyNiwgMTE4MzQsIDExODQyLCAxMTg0OSwgCisgICAgMTE4NjIsIDExODc1LCAxMTg4NywgMTE4OTcsIDExOTA5LCAxMTkxNywgMTE5MjQsIDExOTM2LCAxMTk0MywgMTE5NTMsIAorICAgIDExOTYyLCAxMTk3MSwgMTE5NzksIDExOTg2LCAxMTk5MSwgMTE5OTcsIDk3ODQsIDEyMDAyLCAxMjAwOCwgMTIwMTMsIAorICAgIDEyMDE4LCA5NzkwLCAxMjAyMywgMTIwMjYsIDEyMDMzLCAxMjAzOSwgMTIwNTIsIDkxNTcsIDEyMDYzLCAxMjA2OSwgCisgICAgMTIwNzgsIDEyMDg2LCAxMjA5MywgMTIwOTksIDEyMTEwLCAxMjExNiwgMTIxMjEsIDM4MzUsIDEyMTI5LCAxMjEzNCwgCisgICAgMTE1MDAsIDEyMTQwLCAxMjE0NywgMTIxNTIsIDk3OTUsIDEyMTU4LCAxMjE2MywgMTIxNzAsIDEyMTc2LCAxMjE4MiwgCisgICAgMTIxODcsIDEyMTk1LCAxMjIwMywgMTIyMTAsIDEyMjE0LCAxMjIyNiwgMTIyNDAsIDEyMjUwLCAxMjI1NSwgMTIyNTksIAorICAgIDEyMjcwLCAxMjI3NiwgMTIyODEsIDEyMjg2LCA5ODAwLCAxMjI5MCwgOTgwNiwgMTIyOTUsIDEyMjk4LCAxMjMwMywgCisgICAgMTIzMTUsIDEyMzIyLCAxMjMyNywgMTIzMzEsIDEyMzM5LCAxMjM0NCwgMTIzNDgsIDEyMzUzLCAxMjM1NywgMTIzNjQsIAorICAgIDEyMzcwLCA5ODExLCA5NzE4LCAxMjM3NywgMjkxMSwgMTIsIDEyMzg0LCAxMjM4OSwgMTIzOTMsIDEyMzk3LCAxMjQwMywgCisgICAgMTI0MTEsIDEyNDIxLCAxMjQyNiwgMTI0MzEsIDEyNDM4LCAxMjQ0NSwgMTI0NDksIDEyNDYwLCAxMjQ3MCwgMTI0NzksIAorICAgIDEyNDg4LCAxMjUwMCwgMTI1MDUsIDEyNTA5LCAxMjUxNywgMTI1MzEsIDEyNTM1LCAxMjUzOCwgMTI1NDYsIDEyNTUzLCAKKyAgICAxMjU2MSwgMTI1NjUsIDEyNTc2LCAxMjU4MCwgMTI1ODcsIDEyNTkyLCAxMjU5NiwgMTI2MDIsIDEyNjA3LCAxMjYxMywgCisgICAgMTI2MTgsIDEyNjIzLCAxMjYyNywgMTI2MzMsIDEyNjM4LCAxMjY0OSwgMTI2NTMsIDEyNjU2LCAxMjY2MiwgMTI2NjcsIAorICAgIDEyNjczLCAxMjY3OSwgMTI2ODYsIDEyNjk3LCAxMjcwNywgMTI3MTcsIDEyNzI2LCAxMjczMywgMTI3NDIsIDEyNzQ2LCAKKyAgICA5ODIxLCA5ODI4LCA5ODM0LCA5ODM5LCAxMjc1MiwgMTI3NTgsIDEyNzY0LCAxMjc2OSwgMTI3NzUsIDk4NDMsIDEyNzgxLCAKKyAgICAxMjc4NCwgMTI3OTEsIDEyNzk2LCAxMjgxMSwgMTI4MjcsIDEyODQyLCAxMjg1MCwgMTI4NTYsIDEyODYxLCA5NzYsIDM4NywgCisgICAgMTI4NjYsIDEyODc0LCAxMjg4MSwgMTI4ODcsIDEyODkyLCAxMjg5NywgOTg0OCwgMTI4OTksIDEyOTAzLCAxMjkwOCwgCisgICAgMTI5MTIsIDEyOTIyLCAxMjkyNywgMTI5MzEsIDEyOTQwLCAxMjk0NCwgMTI5NDcsIDEyOTU0LCA5ODU3LCAxMjk1OSwgCisgICAgMTI5NjIsIDEyOTcwLCAxMjk3NywgMTI5ODUsIDEyOTg5LCAxMjk5MywgMTMwMDAsIDEzMDA5LCAxMzAxNiwgMTMwMTIsIAorICAgIDEzMDIzLCAxMzAyNywgMTMwMzMsIDEzMDM3LCAxMzA0MSwgMTMwNDUsIDEzMDUxLCAxMzA2MSwgMTMwNjksIDEzMDc2LCAKKyAgICAxMzA4MCwgMTMwODgsIDEzMDkyLCAxMzA5OSwgMTMxMDMsIDEzMTA4LCAxMzExMiwgMTMxMTksIDEzMTI1LCAxMzEzMywgCisgICAgMTMxMzksIDEzMTQ0LCAxMzE1NCwgMTMxNTksIDEzMTY0LCAxMzE2OCwgMTMxNzIsIDEzMTgwLCA0MTM4LCAxMzE4OCwgCisgICAgMTMxOTMsIDk4NjIsIDEzMTk3LCAxMzIwMSwgMTMyMDQsIDEzMjEyLCAxMzIxOSwgMTMyMjMsIDYzMjIsIDEzMjI3LCAKKyAgICAxMzIzMiwgMTMyMzcsIDEzMjQxLCAxMzI1MiwgMTMyNjIsIDEzMjY3LCAxMzI3MywgMTMyNzgsIDEzMjgyLCAxMzI4NSwgCisgICAgMTMyOTMsIDEzMjk4LCAxMzMwMywgMTMzMTAsIDEzMzE1LCA5ODY3LCAxMzMyMCwgMTMzMjQsIDEzMzMxLCAxNzE4LCA2NDgwLCAKKyAgICAxMzMzNiwgMTMzNDEsIDEzMzQ2LCAxMzM1MSwgMTMzNTcsIDEzMzYyLCAxMzM2OCwgMTMzNzMsIDEzMzc4LCAxMzM4MywgCisgICAgMTMzODgsIDEzMzkzLCAxMzM5OCwgMTM0MDMsIDEzNDA4LCAxMzQxMywgMTM0MTgsIDEzNDIzLCAxMzQyOCwgMTM0MzMsIAorICAgIDEzNDM4LCAxMzQ0MywgMTM0NDgsIDEzNDU0LCAxMzQ1OSwgMTM0NjQsIDEzNDY5LCAxMzQ3NCwgMTM0NzksIDEzNDg1LCAKKyAgICAxMzQ5MCwgMTM0OTUsIDEzNTAxLCAxMzUwNiwgMTM1MTIsIDEzNTE3LCAxMzUyMywgMTM1MjgsIDEzNTMzLCAxMzUzOCwgCisgICAgMTM1NDMsIDEzNTQ5LCAxMzU1NCwgMTM1NTksIDEzNTY0LCA5MzYsIDExMiwgMTM1NzIsIDEzNTc2LCAxMzU4MSwgMTM1ODYsIAorICAgIDEzNTkwLCAxMzU5NCwgMTM1OTgsIDEzNjAzLCAxMzYwNywgMTM2MTIsIDEzNjE2LCAxMzYxOSwgMTM2MjMsIDEzNjI3LCAKKyAgICAxMzYzMywgMTM2MzgsIDEzNjQ4LCAxMzY1NCwgMTM2NjIsIDEzNjY4LCAxMzY3MiwgMTM2NzYsIDEzNjgzLCAxMzY5MSwgCisgICAgMTM3MDAsIDEzNzExLCAxMzcyMSwgMTM3MjgsIDEzNzM1LCAxMzczOSwgMTM3NDgsIDEzNzU3LCAxMzc2NSwgMTM3NzQsIAorICAgIDEzNzgzLCAxMzc5MiwgMTM4MDEsIDEzODExLCAxMzgyMSwgMTM4MzEsIDEzODQxLCAxMzg1MSwgMTM4NjAsIDEzODcwLCAKKyAgICAxMzg4MCwgMTM4OTAsIDEzOTAwLCAxMzkxMCwgMTM5MjAsIDEzOTMwLCAxMzkzOSwgMTM5NDksIDEzOTU5LCAxMzk2OSwgCisgICAgMTM5NzksIDEzOTg5LCAxMzk5OSwgMTQwMDgsIDE0MDE4LCAxNDAyOCwgMTQwMzgsIDE0MDQ4LCAxNDA1OCwgMTQwNjgsIAorICAgIDE0MDc4LCAxNDA4OCwgMTQwOTgsIDE0MTA3LCAxNDExNywgMTQxMjcsIDE0MTM3LCAxNDE0NywgMTQxNTcsIDE0MTY3LCAKKyAgICAxNDE3NywgMTQxODcsIDE0MTk3LCAxNDIwNywgMTQyMTYsIDEyMTgsIDE0MjIyLCAxNDIyNSwgMTQyMjksIDE0MjM0LCAKKyAgICAxNDI0MSwgMTQyNDcsIDE0MjUyLCAxNDI1NiwgMTQyNjEsIDE0MjcwLCAxNDI3OCwgMTQyODMsIDE0Mjg3LCAxNDI5MSwgCisgICAgMTQyOTcsIDE0MzAyLCAxNDMwOCwgOTg3NiwgMTQzMTMsIDE0MzE4LCAxNDMyNywgOTg4NiwgMTQzMzIsIDE0MzM1LCAKKyAgICAxNDM0MSwgMTQzNDksIDk4OTEsIDE0MzU2LCAxNDM2MCwgMTQzNjQsIDE0MzY5LCAxNDM3MywgMTQzODMsIDE0Mzg5LCAKKyAgICAxNDM5NSwgMTQ0MDAsIDE0NDA5LCAxNDQxNywgMTQ0MjQsIDE0NDMxLCAxNDQzNiwgMTQ0NDMsIDE0NDQ4LCAxNDQ1MiwgCisgICAgMTQ0NTUsIDE0NDY2LCAxNDQ3NiwgMTQ0ODUsIDE0NDkzLCAxNDUwNCwgMTQ1MTYsIDE0NTI2LCAxNDUzMSwgMTQ1MzUsIAorICAgIDE0NTQwLCAxNDU0NSwgMTQ1NDksIDE0NTU1LCAxNDU2MywgMTQ1NzAsIDE0NTgxLCAxNDU4NiwgMTQ1OTYsIDE0NjA1LCAKKyAgICAxNDYwOSwgMTQ2MTIsIDE0NjE5LCAxNDYyOSwgMTQ2MzgsIDE0NjQ1LCAxNDY0OSwgMTQ2NTYsIDE0NjYyLCAxNDY2NywgCisgICAgMTQ2NzIsIDE0Njc2LCAxNDY4NSwgMTQ2OTAsIDE0Njk0LCAxNDcwMCwgMTQ3MDQsIDE0NzA5LCAxNDcxMywgMTQ3MjAsIAorICAgIDE0NzI3LCAxNDczMSwgMTQ3NDAsIDE0NzQ4LCAxNDc1NiwgMTQ3NjMsIDE0NzcxLCAxNDc4MywgMTQ3OTQsIDE0ODA0LCAKKyAgICAxNDgxMSwgMTQ4MTcsIDE0ODI2LCAxNDgzNywgMTQ4NDYsIDE0ODU4LCAxNDg3MCwgMTQ4ODIsIDE0ODkyLCAxNDkwMSwgCisgICAgMTQ5MTAsIDE0OTE4LCAxNDkyNSwgMTQ5MzQsIDE0OTQyLCAxNDk0NiwgMTQ5NTEsIDE0OTU3LCAxNDk2MywgMTQ5NjgsIAorICAgIDE0OTczLCA4MTE3LCAxNDk3NywgMTQ5NzksIDE0OTgzLCAxNDk4OCwgMTQ5OTUsIDE1MDAxLCAxNTAwNywgMTUwMTYsIAorICAgIDE1MDIwLCAxNTAyNiwgMTUwMzQsIDE1MDQxLCAxNTA1MCwgMTUwNTksIDE1MDY4LCAxNTA3NywgMTUwODYsIDE1MDk1LCAKKyAgICAxNTEwNCwgMTUxMTMsIDE1MTIzLCAxNTEzMywgMTUxNDIsIDE1MTQ4LCAxNTE1NSwgMTUxNjIsIDE1MTY4LCAxNTE4MiwgCisgICAgMTUxODgsIDE1MTk1LCAxNTIwMywgMTUyMTIsIDE1MjIwLCAxNTIyNiwgMTUyMzUsIDE1MjQ0LCAxNTI1NSwgMTUyNjUsIAorICAgIDE1MjczLCAxNTI4MCwgMTUyODgsIDE1Mjk3LCAxNTMxMCwgMTUzMTksIDE1MzI3LCAxNTMzNCwgMTUzNDcsIDE1MzUzLCAKKyAgICAxNTM1OSwgMTUzNjksIDE1Mzc4LCAxNTM4NywgMTUzOTIsIDE1Mzk2LCAxNTQwMiwgMTU0MDgsIDE1NDEzLCAxNTQyMCwgCisgICAgMTU0MjcsIDk1MjgsIDE1NDMyLCAxNTQzNywgMTU0NDQsIDE1NDUyLCAxNTQ1NywgMTU0NjQsIDE1NDY5LCAxNTQ4MSwgCisgICAgMTM2MjksIDE1NDg2LCAxNTQ5NCwgMTU1MDAsIDE1NTA1LCAxNTUxMywgMTU1MjEsIDE1NTI4LCAxNTUzNiwgMTU1NDIsIAorICAgIDE1NTUwLCAxNTU1OCwgMTU1NjQsIDE1NTY5LCAxNTU3NSwgMTU1ODIsIDE1NTg4LCAxNTU5MywgMTU1OTcsIDE1NjA4LCAKKyAgICAxNTYxNiwgMTU2MjIsIDE1NjI3LCAxNTYzNCwgMTU2NDMsIDE1NjQ5LCAxNTY1NCwgMTU2NjIsIDE1NjcxLCAxNTY4NSwgCisgICAgNDA4MiwgMTU2ODksIDE1Njk0LCAxNTY5OSwgMTU3MDUsIDE1NzEwLCAxNTcxNSwgMTU3MTksIDE1NzI0LCAxNTcyOSwgCisgICAgMTU3MzQsIDgxMTYsIDE1NzM5LCAxNTc0NCwgMTU3NDksIDE1NzU0LCAxNTc1OSwgMTU3NjMsIDE1NzY4LCAxNTc3MywgCisgICAgMTU3NzgsIDE1NzgzLCAxNTc4OSwgMTU3OTUsIDE1ODAwLCAxNTgwNCwgMTU4MTAsIDE1ODE1LCAxNTgyMCwgMTU4MjUsIAorICAgIDk4OTUsIDE1ODMwLCAxNTgzNSwgMTU4NDAsIDE1ODQ1LCAxNTg1MCwgMTU4NjcsIDE1ODg1LCAxNTg5NywgMTU5MTAsIAorICAgIDE1OTI3LCAxNTk0MywgMTU5NjAsIDE1OTcwLCAxNTk4OSwgMTYwMDAsIDE2MDExLCAxNjAyMiwgMTYwMzMsIDE2MDQ1LCAKKyAgICAxNjA1NiwgMTYwNjcsIDE2MDg0LCAxNjA5NSwgMTYxMDYsIDE2MTExLCA5OTAwLCAxNjExNiwgMTYxMjAsIDI0MDUsIAorICAgIDE2MTI0LCAxNjEyNywgMTYxMzMsIDE2MTQxLCAxNjE0OSwgMTYxNTUsIDE2MTY0LCAxNjE3MSwgMTYxNzYsIDE2MTg0LCAKKyAgICAxNjE5MiwgMTYxOTksIDE2MjAzLCAxNjIwOCwgMTYyMTQsIDE2MjIxLCAxNjIyOSwgMTYyMzYsIDE2MjQ4LCAxNjI1NSwgCisgICAgMTYyNjEsIDE2MjY5LCAxNjI3NCwgMTYyODAsIDEyODA1LCAxNjI4NiwgMTYyOTUsIDE2MzAxLCAxNjMwNiwgMTYzMTQsIAorICAgIDE2MzIzLCAxNjMzMSwgMTYzMzgsIDE2MzQ0LCAxNjM1MiwgMTYzNTksIDE2MzY1LCAxNjM3MSwgMTYzNzgsIDE2Mzg1LCAKKyAgICAxNjM5MSwgMTYzOTcsIDE2NDA2LCAxNjQxNCwgMTY0MjQsIDE2NDMxLCAxNjQzNywgMTY0NDUsIDE2NDUxLCAxNjQ1OSwgCisgICAgMTY0NjcsIDE2NDc0LCAxNjQ4NywgMTY0OTQsIDE2NTAzLCAxNjUxMiwgMTY1MjEsIDE2NTI5LCAxNjUzOSwgMTY1NDYsIAorICAgIDE2NTUxLCAzNzI2LCAxNjU1OCwgMTY1NjMsIDEzMzQsIDE2NTY3LCAxNTc0MCwgMTY1NzEsIDE2NTc3LCAxNjU4MSwgCisgICAgMTY1ODksIDE2NjAxLCAxNjYwNiwgMTY2MTMsIDE2NjE5LCAxNjYyNCwgMTY2MzEsIDE1NzQ1LCAxNjYzNSwgMTY2MzksIAorICAgIDE2NjQzLCAxNTc1MCwgMTY2NDcsIDE1NzU1LCAxNjY1MSwgMTY2NTgsIDE2NjYzLCAxNjY2NywgMTY2NzQsIDE2Njc4LCAKKyAgICAxNjY4NiwgMTY2OTMsIDE2Njk4LCAxNjcwMiwgMTY3MDksIDE2NzI2LCAxNjczNSwgMTY3MzksIDE2NzQyLCAxNjc1MCwgCisgICAgMTY3NTYsIDE2NzYxLCAzODA0LCAxNjc2NSwgMTY3NjcsIDE2Nzc1LCAxNjc4MiwgMTY3OTIsIDE2ODA0LCAxNjgwOSwgCisgICAgMTY4MTMsIDE2ODE5LCAxNjgyNCwgMTY4MzIsIDE2ODM2LCAxNjg0MiwgMTY4NDcsIDE2ODUzLCAxNjg1NiwgMTY4NjMsIAorICAgIDE2ODcxLCAxNjg3OCwgMTY4ODQsIDE2ODg5LCAxNjg5NSwgMTY5MDAsIDE2OTA3LCAxNjkxMywgMTY5MTgsIDE2OTI1LCAKKyAgICAxNjkzMCwgMTY5MzQsIDE2OTQwLCAxNjk0NCwgMTY5NTEsIDE2OTU3LCAxNjk2MiwgMTY5NjgsIDE2OTc2LCAxNjk4NCwgCisgICAgMTY5OTEsIDE2OTk3LCAxNzAwMiwgMTcwMDgsIDE3MDE0LCAxNzAyMiwgMTcwMjcsIDE3MDM1LCAxNzA0MSwgMTcwNDcsIAorICAgIDE3MDUyLCAxNzA1OSwgMTcwNjQsIDE3MDY4LCAxNzA3NCwgMTcwNzksIDE3MDg2LCAxNzA5MSwgMTcwOTcsIDE3MTAwLCAKKyAgICAxNzEwNiwgMTcxMTIsIDE3MTE1LCAxNzExOSwgMTcxMjMsIDE3MTM1LCAxNzE0MSwgMTcxNDYsIDE3MTUzLCAxNzE1OSwgCisgICAgMTcxNjUsIDE3MTc2LCAxNzE4NiwgMTcxOTUsIDE3MjAzLCAxNzIxMCwgMTcyMjEsIDE3MjMxLCAxNzI0MSwgMTcyNDksIAorICAgIDE3MjUyLCAxNTc2OSwgMTcyNTcsIDE3MjYyLCAxNTc3NCwgMTU5MTUsIDE3MjcwLCAxNzI4MywgMTcyOTgsIDE3MzA5LCAKKyAgICAxNTkzMiwgMTczMjcsIDE3MzQwLCAxNzM1MywgMTczNjQsIDExNTE1LCAxNzM3NSwgMTczODgsIDE3NDA3LCAxNzQxOCwgCisgICAgMTc0MjksIDE3NDQwLCAyNjc3LCAxNzQ1MywgMTc0NTcsIDE3NDY1LCAxNzQ3NiwgMTc0ODcsIDE3NDk1LCAxNzUxMCwgCisgICAgMTc1MjUsIDE3NTM2LCAxNzU0MywgMTc1NDksIDE3NTU3LCAxNzU2MSwgMTc1NjcsIDE3NTcwLCAxNzU4MywgMTc1OTUsIAorICAgIDE3NjA1LCAxNzYxMywgMTc2MjAsIDE3NjI4LCAxNzYzOCwgMTc2NDMsIDE3NjUwLCAxNzY1NSwgMTc2NjIsIDE3NjczLCAKKyAgICAxNzY4MywgMTc2ODksIDE3Njk0LCAxNzY5OSwgMTU3NzksIDE3NzAzLCAxNzcwOSwgMTc3MTUsIDE3NzIwLCAxNzcyNSwgCisgICAgMTc3MzAsIDE3NzM0LCAxNTc4NCwgMTU3OTAsIDE3NzM4LCAxNTc5NiwgMTc3NDMsIDE3NzUxLCAxNzc1NiwgMTc3NjAsIAorICAgIDE3NzY3LCAxNzc3NSwgMTc3ODQsIDE3NzkxLCAxNzc5NSwgOTczOSwgMTc3OTksIDE3ODAxLCAxNzgwNiwgMTc4MTEsIAorICAgIDE3ODE3LCAxNzgyMiwgMTc4MjcsIDE3ODMyLCAxNzgzNywgMTc4NDEsIDE3ODQ3LCAxNzg1MywgMTc4NTgsIDE3ODY0LCAKKyAgICAxNzg2OSwgMTc4NzQsIDE3ODc4LCAxNzg4NCwgMTc4ODksIDE3ODkzLCAxNzg5OCwgMTc5MDMsIDE3OTE1LCAxNzkyMCwgCisgICAgMTc5MjYsIDE3OTMxLCAxNzkzNiwgMTc5NDIsIDE3OTQ4LCAxNzk1MywgMTc5NTgsIDE3OTYzLCAxNzk3MCwgMTc5NzYsIAorICAgIDE3OTg3LCAxNzk5NCwgMTc5OTksIDE4MDAzLCAxODAwNywgMTgwMTAsIDE4MDE4LCAxODAyMywgMTgwMjksIDE4MDM2LCAKKyAgICAxODA0MywgMTgwNDksIDE4MDU0LCAxODA1OSwgMTgwNjQsIDE4MDcxLCAxODA4MSwgMTgwODksIDE4MDk0LCAxODEwMSwgCisgICAgMTgxMDcsIDE4MTE2LCAxODEyNiwgMTgxMzYsIDE4MTUwLCAxODE2NCwgMTgxNzgsIDE4MTkyLCAxODIwNywgMTgyMjIsIAorICAgIDE4MjM5LCAxODI1NywgMTgyNzAsIDE4Mjc2LCAxODI4MSwgMTgyODYsIDE4MjkwLCAxODI5OCwgMTgzMDMsIDE4MzExLCAKKyAgICAxODMxNywgMTgzMjMsIDE4MzI4LCAxODMzMywgMTgzMzcsIDE4MzQyLCAxODM0NiwgMTgzNTEsIDE4MzU1LCAxODM2NiwgCisgICAgMTgzNzIsIDE4Mzc3LCAxODM4MiwgMTgzODksIDE4Mzk0LCAxODM5OCwgMzY4OSwgMTg0MDMsIDE4NDA5LCAxODQxNiwgCisgICAgMTU4MDUsIDE4NDIyLCAxODQyNiwgMTg0MzIsIDE4NDM3LCAxODQ0MiwgMTg0NDYsIDE4NDUyLCAxODQ1NywgMTg0NjIsIAorICAgIDE4NDY5LCAxODQ3NCwgMTQzODUsIDE4NDc4LCAxODQ4MywgMTg0ODcsIDE4NDkyLCAxODQ5OCwgMTg1MDQsIDE4NTExLCAKKyAgICAxODUyMSwgMTg1MjksIDE4NTM2LCAxODU0MSwgMTg1NDUsIDE4NTU0LCAxODU2MiwgMTg1NjksIDE4NTc2LCAxODU4MiwgCisgICAgMTg1ODcsIDE4NTkzLCAxODU5OCwgMTg2MDMsIDE4NjA5LCAxODYxNCwgMTg2MjAsIDE4NjI1LCAxODYzMSwgMTg2MzcsIAorICAgIDE4NjQ0LCAxODY1MCwgMTg2NTUsIDE4NjYwLCA5OTY1LCAxODY2OSwgMTg2NzIsIDE4NjgwLCAxODY4NiwgMTg2OTEsIAorICAgIDE4Njk2LCAxODcwNiwgMTg3MTMsIDE4NzE5LCAxODcyNCwgMTg3MjksIDE4NzM1LCAxODc0MCwgMTg3NDYsIDE4NzUxLCAKKyAgICAxODc1NywgMTg3NjMsIDE4NzY5LCAxODc3NCwgMTg3ODIsIDE4Nzg5LCAxODc5NCwgMTg3OTksIDE4ODA1LCAxODgxMCwgCisgICAgMTg4MTQsIDE4ODIzLCAxODgzNCwgMTg4NDEsIDE4ODQ4LCAxODg1NiwgMTg4NjMsIDE4ODY4LCAxODg3MywgMTg4NzksIAorICAgIDE4ODg0LCAxODg5MiwgMTg4OTgsIDE4OTA0LCAxODkxMSwgMTg5MTcsIDE4OTIyLCAxODkyNiwgMTg5MzIsIDE4OTM3LCAKKyAgICAxODk0MiwgMTg5NDYsIDE4OTUxLCAxNDA3LCA4MTQxLCAyOTI1LCAxODk1NSwgMTg5NTksIDE4OTYzLCAxODk2NywgMTg5NzEsIAorICAgIDE4OTc1LCAxODk3OCwgMTg5ODMsIDE4OTkwLCAxODk5OCwgMTU4MTYsIDE5MDA1LCAxOTAxNSwgMTkwMjMsIDE5MDMwLCAKKyAgICAxOTAzOCwgMTkwNDgsIDE5MDU3LCA5Mjc1LCAxOTA3MCwgMTkwNzUsIDE5MDgwLCAxOTA4OCwgMTkwOTUsIDE0NDgxLCAKKyAgICAxNDQ5MCwgMTkxMDIsIDE5MTEyLCAxOTEyNywgMTkxMzMsIDE5MTQwLCAxOTE0NywgMTkxNTMsIDE5MTU5LCAxOTE3MCwgCisgICAgMTkxNzgsIDE5MTg2LCAxOTE5NiwgMTkyMDYsIDE1ODIxLCAxOTIxNSwgMTkyMjEsIDE5MjI3LCAxOTIzNSwgMTkyNDMsIAorICAgIDE5MjQ4LCAxOTI1NywgMTkyNjUsIDE5Mjc3LCAxOTI4NywgMTkyOTcsIDE5MzA3LCAxOTMxNiwgMTkzMjgsIDE5MzM4LCAKKyAgICAxOTM0OCwgMTkzNTksIDE5MzY2LCAxOTM3MSwgMTkzODMsIDE5Mzk1LCAxOTQwNywgMTk0MTksIDE5NDMxLCAxOTQ0MywgCisgICAgMTk0NTUsIDE5NDY3LCAxOTQ3OSwgMTk0OTEsIDE5NTAyLCAxOTUxNCwgMTk1MjYsIDE5NTM4LCAxOTU1MCwgMTk1NjIsIAorICAgIDE5NTc0LCAxOTU4NiwgMTk1OTgsIDE5NjEwLCAxOTYyMiwgMTk2MzMsIDE5NjQ1LCAxOTY1NywgMTk2NjksIDE5NjgxLCAKKyAgICAxOTY5MywgMTk3MDUsIDE5NzE3LCAxOTcyOSwgMTk3NDEsIDE5NzUzLCAxOTc2NCwgMTk3NzYsIDE5Nzg4LCAxOTgwMCwgCisgICAgMTk4MTIsIDE5ODI0LCAxOTgzNiwgMTk4NDgsIDE5ODYwLCAxOTg3MiwgMTk4ODQsIDE5ODk1LCAxOTkwNywgMTk5MTksIAorICAgIDE5OTMxLCAxOTk0MywgMTk5NTUsIDE5OTY3LCAxOTk3OSwgMTk5OTEsIDIwMDAzLCAyMDAxNSwgMjAwMjYsIDIwMDM4LCAKKyAgICAyMDA1MCwgMjAwNjIsIDIwMDc0LCAyMDA4NiwgMjAwOTgsIDIwMTEwLCAyMDEyMiwgMjAxMzQsIDIwMTQ2LCAyMDE1NywgCisgICAgMjAxNjksIDIwMTgxLCAyMDE5MywgMjAyMDUsIDIwMjE3LCAyMDIyOSwgMjAyNDEsIDIwMjUzLCAyMDI2NSwgMjAyNzcsIAorICAgIDIwMjg4LCAyMDMwMCwgMjAzMTIsIDIwMzI0LCAyMDMzNiwgMjAzNDksIDIwMzYyLCAyMDM3NSwgMjAzODgsIDIwNDAxLCAKKyAgICAyMDQxNCwgMjA0MjcsIDIwNDM5LCAyMDQ1MiwgMjA0NjUsIDIwNDc4LCAyMDQ5MSwgMjA1MDQsIDIwNTE3LCAyMDUzMCwgCisgICAgMjA1NDMsIDIwNTU2LCAyMDU2OSwgMjA1ODEsIDIwNTk0LCAyMDYwNywgMjA2MjAsIDIwNjMzLCAyMDY0NiwgMjA2NTksIAorICAgIDIwNjcyLCAyMDY4NSwgMjA2OTgsIDIwNzExLCAyMDcyMywgMjA3MzYsIDIwNzQ5LCAyMDc2MiwgMjA3NzUsIDIwNzg4LCAKKyAgICAyMDgwMSwgMjA4MTQsIDIwODI3LCAyMDg0MCwgMjA4NTMsIDIwODY1LCAyMDg3OCwgMjA4OTEsIDIwOTA0LCAyMDkxNywgCisgICAgMjA5MzAsIDIwOTQzLCAyMDk1NiwgMjA5NjksIDIwOTgyLCAyMDk5NSwgMjEwMDcsIDIxMDIwLCAyMTAzMywgMjEwNDYsIAorICAgIDIxMDU5LCAyMTA3MiwgMjEwODUsIDIxMDk4LCAyMTExMSwgMjExMjQsIDIxMTM3LCAyMTE0OSwgMjExNjAsIDIxMTczLCAKKyAgICAyMTE4NiwgMjExOTksIDIxMjEyLCAyMTIyNSwgMjEyMzgsIDIxMjUxLCAyMTI2NCwgMjEyNzcsIDIxMjkwLCAyMTMwMiwgCisgICAgMjEzMTUsIDIxMzI4LCAyMTM0MSwgMjEzNTQsIDIxMzY3LCAyMTM4MCwgMjEzOTMsIDIxNDA2LCAyMTQxOSwgMjE0MzIsIAorICAgIDIxNDQ0LCAyMTQ1NywgMjE0NzAsIDIxNDgzLCAyMTQ5NiwgMjE1MDksIDIxNTIyLCAyMTUzNSwgMjE1NDgsIDIxNTYxLCAKKyAgICAyMTU3NCwgMjE1ODYsIDIxNTk5LCAyMTYxMiwgMjE2MjUsIDIxNjM4LCAyMTY1MSwgMjE2NjQsIDIxNjc3LCAyMTY5MCwgCisgICAgMjE3MDMsIDIxNzE2LCAyMTcyOCwgMjE3NDEsIDIxNzU0LCAyMTc2NywgMjE3ODAsIDIxNzkzLCAyMTgwNiwgMjE4MTksIAorICAgIDIxODMyLCAyMTg0NSwgMjE4NTgsIDIxODcwLCAyMTg4MywgMjE4OTYsIDIxOTA5LCAyMTkyMiwgMjE5MzUsIDIxOTQ4LCAKKyAgICAyMTk2MSwgMjE5NzQsIDIxOTg3LCAyMjAwMCwgMjIwMTIsIDIyMDI1LCAyMjAzOCwgMjIwNTEsIDIyMDY0LCAyMjA3NywgCisgICAgMjIwOTAsIDIyMTAzLCAyMjExNiwgMjIxMjksIDIyMTQyLCAyMjE1NCwgMjIxNjcsIDIyMTgwLCAyMjE5MywgMjIyMDYsIAorICAgIDIyMjE5LCAyMjIzMiwgMjIyNDUsIDIyMjU4LCAyMjI3MSwgMjIyODQsIDIyMjk2LCAyMjMwOSwgMjIzMjIsIDIyMzM1LCAKKyAgICAyMjM0OCwgMjIzNjEsIDIyMzc0LCAyMjM4NywgMjI0MDAsIDIyNDEzLCAyMjQyNiwgMjI0MzgsIDIyNDUxLCAyMjQ2NCwgCisgICAgMjI0NzcsIDIyNDkwLCAyMjUwMywgMjI1MTYsIDIyNTI5LCAyMjU0MiwgMjI1NTUsIDIyNTY4LCAyMjU4MCwgMjI1OTEsIAorICAgIDIyNjAwLCAyMjYwOCwgMjI2MTYsIDIyNjIzLCAyMjYyOSwgMjI2MzMsIDIyNjM5LCAyMjY0NSwgMjI2NTMsIDIyNjU4LCAKKyAgICAyMjY2NCwgMjI2NjksIDIyNjczLCAyMjY4MiwgOTc0NCwgMjI2OTMsIDIyNzAwLCAyMjcwOCwgMjI3MTUsIDIyNzIyLCAKKyAgICAxMjA0NiwgMjI3MjksIDIyNzM2LCAyMjc0NSwgMjI3NTAsIDIyNzU1LCA4MTY5LCAyMjc2MiwgMjI3NjcsIDIyNzcwLCAKKyAgICAyMjc3NSwgMjI3ODMsIDIyNzkwLCAyMjc5NywgMjI4MDQsIDIyODEwLCAyMjgxOSwgMjI4MjgsIDIyODM3LCAyMjg0MywgCisgICAgMjI4NTEsIDIyODYwLCAyMjg2NCwgMjI4NzAsIDIyODc1LCAyMjg4NSwgMjI4OTIsIDIyODk4LCAyMjkwNiwgMjI5MTIsIAorICAgIDIyOTE5LCAyMjkyOSwgMjI5MzgsIDIyOTQyLCAyMjk0OSwgMjI5NTMsIDIyOTU4LCAyMjk2NCwgMjI5NzIsIDIyOTc2LCAKKyAgICAyMjk4NiwgMTU4MzEsIDIyOTk1LCAyMzAwMSwgMjMwMDUsIDIzMDE0LCAyMzAyNCwgMTU4MzYsIDIzMDMwLCAyMzAzNywgCisgICAgMjMwNDgsIDIzMDU2LCAyMzA2NiwgMjMwNzUsIDIzMDgzLCA5NDkzLCAyMzA5MSwgMjMwOTYsIDIzMTAyLCAyMzEwNywgCisgICAgMjMxMTEsIDIzMTE1LCAyMzExOSwgMTA0NzcsIDIzMTI0LCAyMzEzMiwgMjMxMzksIDIzMTQ4LCAyMzE1NSwgMjMxNjIsIAorICAgIDIzMTY4LCAxMTk2NiwgMjMxNzUsIDIzMTgxLCAyMzE4NSwgMjMxOTEsIDIzMTk4LCAyMzIwNCwgMjMyMTIsIDIzMjE4LCAKKyAgICAyMzIyNSwgMjMyMzEsIDIzMjM3LCAyMzI0NiwgMjMyNTAsIDIzMjU4LCAyMzI2NywgMjMyNzQsIDIzMjc5LCAyMzI4MywgCisgICAgMjMyOTQsIDIzMjk5LCAyMzMwNCwgMjMzMTAsIDIzMzE1LCAyMzMyOCwgODM3MywgMjMzMzIsIDIzMzM4LCAyMzM0NCwgCisgICAgMjMzNDksIDIzMzU3LCAyMzM2MSwgMjMzNjgsIDIzMzc3LCAyMzM4MiwgMTYxMDcsIDIzMzkwLCAyMzM5NCwgMjM0MDYsIAorICAgIDIzNDExLCAyMzQxNSwgMjM0MTgsIDIzNDI0LCAyMzQzMCwgMjM0MzYsIDIzNDQxLCAyMzQ0NSwgMjM0NDgsIDIzNDU5LCAKKyAgICAyMzQ2NCwgMTAwMTYsIDIzNDcxLCAyMzQ3NiwgMTIyNCwgMTAwMjEsIDIzNDgxLCAyMzQ4NiwgMjM0OTEsIDIzNDk2LCAKKyAgICAyMzUwMSwgMjM1MDYsIDIzNTExLCAyMzUxNiwgMjM1MjEsIDIzNTI2LCAyMzUzMSwgMjM1MzYsIDIzNTQyLCAyMzU0NywgCisgICAgMjM1NTIsIDIzNTU3LCAyMzU2MiwgMjM1NjcsIDIzNTcyLCAyMzU3NywgMjM1ODIsIDIzNTg3LCAyMzU5MywgMjM1OTksIAorICAgIDIzNjA0LCAyMzYwOSwgMjM2MTQsIDIzNjE5LCAyMzYyNCwgMjM2MjksIDIzNjM0LCAyMzYzOSwgMjM2NDQsIDIzNjUwLCAKKyAgICAyMzY1NSwgMjM2NjAsIDIzNjY1LCAyMzY3MSwgMjM2NzcsIDIzNjgyLCAyMzY4NywgMjM2OTIsIDIzNjk3LCAyMzcwMiwgCisgICAgMjM3MDcsIDIzNzEyLCAyMzcxNywgMjM3MjMsIDIzNzI4LCAyMzczMywgMjM3MzgsIDIzNzQzLCAyMzc0OSwgMjM3NTQsIAorICAgIDIzNzU5LCAyMzc2MywgMTMzMCwgMTQwLCAyMzc3MSwgMjM3NzUsIDIzNzc5LCAyMzc4MywgMjM3ODgsIDIzNzkyLCAxNDM5MSwgCisgICAgMjMzMSwgMjM3OTYsIDIzODAxLCAyMzgwNSwgMjM4MTAsIDIzODE0LCAyMzgxOSwgMjM4MjMsIDIzODI5LCAyMzgzNCwgCisgICAgMjM4MzgsIDIzODQyLCAyMzg1MCwgMjM4NTQsIDIzODU4LCAyMzg2MywgMjM4NjgsIDIzODcyLCAyMzg3OCwgMjM4ODMsIAorICAgIDIzODg3LCAyMzg5MiwgMjM4OTcsIDIzOTAxLCAyMzkwOCwgMjM5MTUsIDIzOTIyLCAyMzkyNywgMjM5MzEsIDIzOTM1LCAKKyAgICAyMzk0MCwgMjM5NDQsIDIzOTQ3LCAyMzk1MywgMjM5NjYsIDIzOTcxLCAyMzk3NywgMjM5ODYsIDIzOTkxLCAxMDI0MSwgCisgICAgMjM5OTYsIDI0MDA1LCAyNDAxMCwgMjQwMTMsIDI3NDAsIDI3NDUsIDI0MDE3LCAyNDAyMywgMjQwMjksIDM2NTAsIDI0MDM0LCAKKyAgICAyNDAzOSwgMjQwNDQsIDI0MDUwLCAyNDA1NSwgMTUyNTEsIDI0MDYwLCAyNDA2NSwgMjQwNzAsIDI0MDc1LCAyNDA4MSwgCisgICAgMjQwODYsIDI0MDkxLCAyNDA5NywgMjQxMDIsIDI0MTA2LCAyNDExMSwgMjQxMTYsIDI0MTIxLCAyNDEyNiwgMjQxMzEsIAorICAgIDI0MTM1LCAyNDE0MCwgMjQxNDQsIDI0MTQ5LCAyNDE1NCwgMjQxNTksIDI0MTY0LCAyNDE2OCwgMjQxNzMsIDI0MTc3LCAKKyAgICAyNDE4MiwgMjQxODcsIDI0MTkyLCAyNDEwNywgMjkzNCwgMjQxMTIsIDI0MTk3LCAyNDIwNSwgMjQyMTIsIDEwNTcxLCAKKyAgICAyNDIyNCwgMjQyMzIsIDI0MjQyLCAyNDI2MCwgMjQyNzksIDI0Mjg4LCAyNDI5NiwgMjQxMTcsIDI0MzAzLCAyNDMwOCwgCisgICAgMjQzMTYsIDI0MTIyLCAyNDMyMSwgMjQzMjYsIDI0MzM0LCAyNDMzOSwgMjQxMjcsIDI0MzQ0LCAyNDM1MiwgMjQzNTcsIAorICAgIDI0MzYxLCAyNDM2OCwgMjQzNzQsIDI0MzgzLCAyNDM5MSwgMjQzOTUsIDI0Mzk4LCAyNDQwNSwgMjQ0MDksIDI0NDEzLCAKKyAgICAyNDQxOCwgMjQ0MjQsIDI0NDMxLCAyNDQzNiwgOTUyMCwgMTcyMywgMTcyOCwgMjQ0NDAsIDI0NDQ2LCAyNDQ1MiwgMjQ0NTcsIAorICAgIDI0NDYxLCAyNDQ2NSwgMjQ0NjksIDI0NDczLCAyNDQ3NywgMjQ0ODEsIDI0NDg1LCAyNDQ4OSwgMjQ0OTIsIDI0NDk4LCAKKyAgICAyNDUwNSwgMjQ1MTMsIDI0NTE5LCAyNDUyNSwgMjQ1MzAsIDI0NTM1LCAyNDU0MSwgMjQ1NDUsIDI0NTUwLCAxNTE1NywgCisgICAgMTUxNjQsIDI0NTU3LCAyNDU2OSwgMjQ1NzIsIDI0NTc5LCAyNDU4MywgMTgwNDUsIDI0NTkwLCAyNDU5OCwgMjQ2MDksIAorICAgIDI0NjE4LCAyNDYzMSwgMjQ2NDEsIDI0NjU1LCAyNDY2NywgMjQ2ODEsIDI0Njk0LCAyNDcwNiwgMjQ3MTYsIDI0NzI4LCAKKyAgICAyNDczNCwgMjQ3NDAsIDI0NzU1LCAyNDc3OSwgMjQ3OTcsIDI0ODE2LCAyNDgyOSwgMjQ4NDMsIDI0ODYxLCAyNDg3NywgCisgICAgMjQ4OTQsIDI0OTEyLCAyNDkyMywgMjQ5NDIsIDI0OTU5LCAyNDk3OSwgMjQ5OTcsIDI1MDA5LCAyNTAyMywgMjUwMzcsIAorICAgIDI1MDQ5LCAyNTA2NiwgMjUwODUsIDI1MTAzLCAyNTExNSwgMjUxMzMsIDI1MTUyLCAxNTk3NSwgMjUxNjUsIDI1MTg1LCAKKyAgICAyNTE5NywgMTE1NDYsIDI1MjA5LCAyNTIxNCwgMjUyMTksIDI1MjI0LCAyNTIzMCwgMjUyMzUsIDI1MjM5LCAyNTI0NiwgCisgICAgMjUyNTIsIDI0MjIsIDI1MjU2LCAyNTI2MiwgMjUyNjYsIDI1MjY5LCAyNTI4MCwgMjUyODQsIDI1Mjg3LCAyNTI5NSwgCisgICAgMjUzMDEsIDI0MTQ1LCAyNTMwNSwgMjUzMTQsIDI1MzI1LCAyNTMzMSwgMjUzMzcsIDI1MzUyLCAyNTM2MSwgMjUzNjksIAorICAgIDI1Mzc2LCAyNTM4MSwgMjUzODUsIDI1MzkyLCAyNTM5OCwgMjU0MDcsIDI1NDE1LCAyNTQyMiwgMjU0MzIsIDI1NDQxLCAKKyAgICAyNTQ1MSwgMjU0NTYsIDI1NDY1LCAyNTQ3NCwgMjU0ODUsIDI1NDk2LCA0MjA2LCAyNTUwNiwgMjU1MTAsIDI1NTIwLCAKKyAgICAyNTUyOCwgMjU1MzgsIDI1NTQ5LCAyNTU1NCwgMjU1NjQsIDI1NTcyLCAyNTU3OSwgMjU1ODUsIDI1NTkyLCAyNTU5NywgCisgICAgMjQxNTUsIDI1NjAxLCAyNTYxMCwgMjU2MTQsIDI1NjE3LCAyNTYyMiwgMjU2MzAsIDI1NjM3LCAyNTY0NiwgMjU2NTQsIAorICAgIDI1NjYyLCAyNTY3MCwgMjU2ODAsIDI1Njg5LCAyNTY5NSwgMjU3MDEsIDI1NzA1LCAyNDE2MCwgMjQxNjUsIDI1NzA5LCAKKyAgICAyNTcxOSwgMjU3MjksIDI1NzM5LCAyNTc0NywgMjU3NTQsIDI1NzY0LCAyNTc3MiwgMjU3ODAsIDI1Nzg2LCAyNTc5NCwgCisgICAgODcyLCAyNTgwMywgMTYxODgsIDU1NywgMjU4MTcsIDI1ODI2LCAyNTgzNCwgMjU4NDUsIDI1ODU2LCAyNTg2NiwgMjU4NzUsIAorICAgIDI1ODg3LCAyNTg5NiwgMjU5MDUsIDI1OTEyLCAyNTkxOCwgMjU5MjgsIDI1OTM3LCAyNTk0NiwgMjU5NTQsIDI1OTY0LCAKKyAgICAyNTk3MiwgMjU5ODAsIDk5ODIsIDI1OTg2LCAyNTk4OSwgMjU5OTMsIDI1OTk4LCAyNjAwMywgMjYwMDcsIDEwNjg2LCAKKyAgICAyNDE3OCwgMjQxODMsIDI2MDE1LCAyNjAyMSwgMjYwMjcsIDI2MDMyLCAyNjAzNywgMjYwNDEsIDI2MDQ5LCAyNjA1NSwgCisgICAgMjYwNjEsIDI2MDY1LCAzNjc0LCAyNjA3MywgMjYwNzgsIDI2MDgzLCAyNjA4NywgMjYwOTEsIDEwNzk5LCAyNjA5OCwgCisgICAgMjYxMDYsIDI2MTIwLCAyNjEyNywgMjYxMzMsIDEwODA4LCAxMDgxNCwgMjYxNDEsIDI2MTQ5LCAyNjE1NiwgMjYxNjEsIAorICAgIDI2MTY2LCAyNDE4OCwgMjYxNzIsIDI2MTgzLCAyNjE4NywgMjYxOTIsIDI2MjksIDI2MTk3LCAyNjIwOCwgMjYyMTQsIAorICAgIDI2MjE5LCAyNjIyMywgMjYyMjcsIDI2MjMwLCAyNjIzNywgMjYyNDQsIDI2MjUwLCAyNjI1NywgMjYyNjMsIDI2MjY3LCAKKyAgICAyNDE5MywgMjYyNzIsIDI2Mjc2LCAyNjI4MCwgMTQxMiwgODU4NSwgMjYyODUsIDI2MjkwLCAyNjI5NSwgMjYzMDAsIAorICAgIDI2MzA1LCAyNjMxMCwgMjYzMTUsIDI2MzIwLCAyNjMyNSwgMjYzMzAsIDI2MzM1LCAyNjM0MCwgMjYzNDUsIDI2MzUwLCAKKyAgICAyNjM1NiwgMjYzNjEsIDI2MzY2LCAyNjM3MSwgMjYzNzYsIDI2MzgxLCAyNjM4NiwgMjYzOTIsIDI2Mzk3LCAyNjQwMiwgCisgICAgMjY0MDcsIDI2NDEyLCAyNjQxNywgMjY0MjIsIDI2NDI3LCAyNjQzMywgMjY0MzksIDI2NDQ0LCAyNjQ1MCwgMjY0NTUsIAorICAgIDI2NDYwLCA1LCAyNjQ2NiwgMjY0NzAsIDI2NDc0LCAyNjQ3OCwgMjY0ODMsIDI2NDg3LCAyNjQ5MSwgMjY0OTUsIDI2NDk5LCAKKyAgICAyNjUwNCwgMjY1MDgsIDI2NTEzLCAyNjUxNywgMjY1MjAsIDI2NTI0LCAyNjUyOSwgMjY1MzMsIDI2NTM4LCAyNjU0MiwgCisgICAgMjY1NDYsIDI2NTUwLCAyNjU1NSwgMjY1NTksIDI2NTYzLCAyNjU3MywgMjY1NzgsIDI2NTgyLCAyNjU4NiwgMjY1OTEsIAorICAgIDI2NTk2LCAyNjYwNSwgMjY2MTAsIDI2NjE1LCAyNjYxOSwgMjY2MjMsIDI2NjM2LCAyNjY0OCwgMjY2NTcsIDI2NjY2LCAKKyAgICAyNjY3MSwgMjY2NzcsIDI2NjgyLCAyNjY4NiwgMjY2OTAsIDI2NzAwLCAyNjcwOSwgMjY3MTcsIDI2NzIzLCAyNjcyOCwgCisgICAgMjY3MzIsIDI2NzM5LCAyNjc0OSwgMjY3NTgsIDI2NzY2LCAxMTg2OCwgMjY3NzQsIDI2NzgyLCAyNjc5MSwgMjY4MDAsIAorICAgIDI2ODA4LCAyNjgxOCwgMjY4MjMsIDI2ODI3LCAyNjgzMSwgMjY4MzQsIDI2ODM2LCAyNjg0MCwgMjY4NDQsIDI2ODQ5LCAKKyAgICAyNjg1NCwgMjY4NTgsIDI2ODYyLCAyNjg2NSwgMjY4NjksIDI2ODcyLCAyNjg3NiwgMjY4NzksIDI2ODgyLCAyNjg4NiwgCisgICAgMjY4OTIsIDI2ODk2LCAyNjkwMCwgMjY5MDQsIDI2OTA4LCAyNjkxMywgMjY5MTgsIDI2OTIzLCAyNjkyNywgMjY5MzAsIAorICAgIDI2OTM1LCAyNjk0MSwgMjY5NDYsIDI2OTUyLCAyNjk1NywgMjY5NjEsIDI2OTY3LCAyNjk3MSwgMjY5NzUsIDI2OTgwLCAKKyAgICAyNjk4NCwgMjY5ODksIDI2OTk0LCAyNjk5OCwgMjcwMDIsIDI3MDA5LCAyNzAxMywgMjcwMTYsIDI3MDIwLCAyNzAyNCwgCisgICAgMjcwMzAsIDI3MDM2LCAyNzA0MCwgMjcwNDQsIDI3MDQ5LCAyNzA1NiwgMjcwNjIsIDI3MDY2LCAyNzA3NSwgMjcwNzksIAorICAgIDI3MDgzLCAyNzA4NiwgMjcwOTIsIDI3MDk3LCAyNzEwMywgMTQ1NiwgMTc4NywgMjcxMDgsIDI3MTEzLCAyNzExOCwgCisgICAgMjcxMjMsIDI3MTI4LCAyNzEzMywgMjcxMzgsIDIxNTksIDIyMDUsIDI3MTQzLCAyNzE0NiwgMjcxNTAsIDI3MTU0LCAKKyAgICAyNzE1OSwgMjcxNjMsIDE2MjAwLCAyNzE2NywgMjcxNzIsIDI3MTc3LCAyNzE4MSwgMjcxODQsIDI3MTg5LCAyNzE5MywgCisgICAgMjcxOTgsIDI3MjAyLCAxNjIwNCwgMjcyMDcsIDI3MjEwLCAyNzIxMywgMjcyMTcsIDI3MjIyLCAyNzIyNiwgMjcyMzksIAorICAgIDI3MjQzLCAyNzI0NiwgMjcyNTQsIDI3MjYzLCAyNzI3MCwgMjcyNzUsIDI3MjgxLCAyNzI4NywgMjcyOTUsIDI3MzAyLCAKKyAgICAyNzMwOSwgMjczMTMsIDI3MzE3LCAyNzMyMSwgMjczMjYsIDI3MzMxLCAyNzMzNSwgMjczNDMsIDI3MzQ4LCAyNzM2MCwgCisgICAgMjczNzEsIDI3Mzc2LCAyNzM4MCwgMjczODcsIDI3MzkxLCAyNzM5NiwgMjc0MDIsIDI3NDA1LCAyNzQxMCwgMjc0MTUsIAorICAgIDI3NDE5LCAyNzQyMywgMjc0MjYsIDI3NDMyLCA4MjcyLCAyMzM1LCAyNzQzNiwgMjc0NDEsIDI3NDU3LCAxMDI4OCwgCisgICAgMjc0NzcsIDI3NDg2LCAyNzUwMiwgMjc1MDYsIDI3NTEzLCAyNzUxNiwgMjc1MjIsIDI3NTMyLCAyNzUzOCwgMjc1NDcsIAorICAgIDI3NTYyLCAyNzU3NCwgMjc1ODUsIDI3NTkzLCAyNzYwMiwgMjc2MDgsIDI3NjE3LCAyNzYyNywgMjc2MzcsIDI3NjQ4LCAKKyAgICAyNzY1OSwgMjc2NjksIDI3Njc4LCAyNzY4NSwgMjc2OTQsIDI3NzAyLCAyNzcwOSwgMjc3MTcsIDI3NzI0LCAyNzczMSwgCisgICAgMjc3NDQsIDI3NzUxLCAyNzc1OSwgMjc3NjYsIDI3NzcyLCAyNzc3NywgMjc3ODYsIDI3NzkzLCAyNzc5OSwgMjc4MDQsIAorICAgIDI3ODEyLCAyNzgxOSwgMjc4MjYsIDI1NTMwLCAyNzgzOCwgMjc4NTAsIDI3ODY0LCAyNzg3MiwgMjc4ODAsIDI3ODg3LCAKKyAgICAyNzg5OSwgMjc5MDgsIDI3OTE3LCAyNzkyNSwgMjc5MzMsIDI3OTQxLCAyNzk0OCwgMjc5NTQsIDI3OTYzLCAyNzk3MSwgCisgICAgMjc5ODEsIDI3OTkwLCAyODAwMCwgMjgwMDksIDI4MDE4LCAyODAyNiwgMjgwMzEsIDI4MDM1LCAyODAzOCwgMjgwNDIsIAorICAgIDI4MDQ2LCAyODA1MCwgMjgwNTQsIDI4MDU4LCAyODA2NCwgMjgwNzAsIDI4MDc1LCAyODA4MywgMTYyNjIsIDI4MDkwLCAKKyAgICAyODA5NSwgMjgxMDIsIDI4MTA4LCAyODExNSwgMTYyNzAsIDI4MTIyLCAyODEyNSwgMjgxMzcsIDI4MTQ1LCAyODE1MSwgCisgICAgMjgxNTYsIDI4MTYwLCAyODE3MSwgMTA3NDksIDI4MTgxLCAyODE4OSwgMjgxOTksIDI4MjA4LCAyODIxNSwgMjgyMjIsIAorICAgIDI4MjMwLCAyODIzNCwgMTYyODEsIDI4MjM3LCAyODI0NCwgMjgyNDgsIDI4MjU0LCAyODI1NywgMjgyNjQsIDI4MjcwLCAKKyAgICAyODI3NSwgMjgyODIsIDI4Mjg4LCAyODI5MiwgMjgyOTcsIDI4MzAxLCAyODMxMCwgMjgzMTcsIDI4MzIzLCA4MzMwLCAKKyAgICAyODMzMCwgMjgzMzgsIDI4MzQ1LCAyODM1MSwgMjgzNTYsIDI4MzYyLCAyODM2OCwgMjgzNzYsIDI4MzgyLCAyODM4NiwgCisgICAgMjgzODksIDI4MzkxLCAyODA0MywgMjg0MDAsIDI4NDA2LCAyODQxMiwgMjg0MjIsIDI4NDI3LCAyODQzNCwgMjg0NDAsIAorICAgIDI4NDQ1LCAyODQ1MCwgMjg0NTUsIDI4NDU5LCAyODQ2NCwgMjg0NzEsIDI4NDc3LCAyODQ4NiwgMjg0OTAsIDI4NDk3LCAKKyAgICAyODUwMywgMjg1MTIsIDQzOTgsIDI4NTE4LCAyODUyNCwgMjg1MjksIDI4NTM2LCAyODU0NywgMjg1NTIsIDI4NTU2LCAKKyAgICAyODU2NiwgMjg1NzIsIDI4NTc2LCAyODU4MSwgMjg1OTEsIDI4NjAwLCAyODYwNCwgMjg2MTEsIDI4NjE5LCAyODYyNiwgCisgICAgMjg2MzIsIDI4NjM3LCAyODY0NSwgMjg2NTIsIDI4NjU3LCAyODY2NCwgMjg2NzYsIDI4Njg1LCAyODY4OSwgMTQzMjIsIAorICAgIDI4Njk3LCAyODcwNywgMjg3MTEsIDI3MjUwLCAyODcyMiwgMjg3MjcsIDI4NzMxLCAyODczOCwgMjg3NDUsIDIzODc0LCAKKyAgICAyNzk2OCwgMjg3NTAsIDI4NzU0LCAyODc1NywgMjQ5MjksIDI4NzYyLCAyODc3NiwgMjg3OTIsIDI4ODEwLCAyODgyOSwgCisgICAgMjg4NDYsIDI4ODY0LCAyNDk0OCwgMjg4ODEsIDI4OTAxLCAyNDk2NSwgMjg5MTMsIDI4OTI1LCAxNzMxNCwgMjg5MzcsIAorICAgIDI0OTg1LCAyODk1MSwgMjg5NjMsIDExNTU5LCAyODk3NywgMjg5ODIsIDI4OTg3LCAyODk5MiwgMjg5OTgsIDI5MDA0LCAKKyAgICAyOTAxMCwgMjkwMTQsIDI5MDIyLCAyOTAyOSwgMjkwMzQsIDI5MDQ0LCAyOTA1MCwgMTExNTcsIDI5MDU2LCAyOTA1OCwgCisgICAgMjkwNjMsIDI5MDcxLCAyOTA3NSwgMjg0NjcsIDI5MDgxLCAyOTA4OCwgMTI3MTEsIDEyNzIxLCAyOTA5NSwgMjkxMDUsIAorICAgIDI5MTEwLCAyOTExNCwgMjkxMTcsIDI5MTIzLCAyOTEzMSwgMjkxNDMsIDI5MTUzLCAyOTE2OSwgMjkxODIsIDI5MTk2LCAKKyAgICAxNzMzMiwgMjkyMTAsIDI5MjE3LCAyOTIyMSwgMjkyMjQsIDI5MjI5LCAyOTIzMywgMjkyNDAsIDI5MjQ3LCAyOTI1NCwgCisgICAgMjkyNjQsIDI5MjY5LCAyOTI3NCwgMjkyNzksIDI5Mjg3LCAyOTI5NSwgMjkzMDAsIDI5MzA5LCAyOTMxNCwgMzM0MiwgCisgICAgMjkzMTgsIDI5MzIxLCAyOTMyNCwgMjkzMjksIDI5MzM2LCAyOTM0MSwgMjkzNTcsIDI5MzY1LCAyOTM3MywgMTAwNTYsIAorICAgIDI5MzgxLCAyOTM4NiwgMjkzOTAsIDI5Mzk2LCAyOTQwMSwgMjk0MDcsIDI5NDEwLCAyOTQxNiwgMjk0MjgsIDI5NDM2LCAKKyAgICAyOTQ0MywgMjk0NDksIDI5NDU2LCAyOTQ2NywgMjk0ODEsIDI5NDk0LCAyOTUwMCwgMjk1MDksIDI5NTE1LCAyOTUyNCwgCisgICAgMjk1MzYsIDI5NTQ3LCAyOTU1NywgMjk1NjYsIDI5NTc1LCAyOTU4MywgMjk1OTQsIDgzMTIsIDI5NjAxLCAyOTYwOCwgCisgICAgMjk2MTQsIDI5NjE5LCAyOTYyNSwgMjk2MzIsIDI5NjQzLCAyOTY1MywgMjk2NjMsIDI5NjcyLCAyOTY3OCwgMjk2ODUsIAorICAgIDI5NjkwLCAyOTY5OCwgMjk3MDUsIDI5NzEzLCAyOTcyMSwgMjk3MzMsIDY1ODcsIDEwMjgsIDI5NzQwLCAyOTc0OSwgCisgICAgMjk3NTcsIDI5NzYzLCAyOTc2OSwgMjk3NzQsIDI5Nzc4LCAyOTc4MSwgMjk3ODcsIDI5Nzk0LCAyOTc5OSwgMjk4MDQsIAorICAgIDI5ODA5LCAyOTgxMywgMjk4MjUsIDI5ODM2LCAyOTg0NSwgMjk4NTMsIDE2NDQ2LCAyOTg1OCwgMjk4NjYsIDI5ODcxLCAKKyAgICAyOTg3NywgMjk4ODMsIDEyNzA0LCA5MTAzLCAyOTg4OCwgMjk4OTIsIDI5ODk2LCAyOTg5OSwgMjk5MDIsIDI5OTA4LCAKKyAgICAyOTkxNiwgMjk5MjQsIDI5OTI4LCAyOTkzMiwgMjk5MzcsIDI5OTQwLCAyOTk0OSwgMjk5NTMsIDI5OTU2LCAyOTk2NCwgCisgICAgMjk5NzUsIDI5OTc5LCAyOTk4NSwgMjk5OTEsIDI5OTk1LCAzMDAwMSwgMzAwMDksIDMwMDMxLCAzMDA1NSwgMzAwNjQsIAorICAgIDMwMDcxLCAzMDA3OCwgMzAwODQsIDMwMDkyLCAzMDA5OCwgMzAxMDMsIDMwMTE0LCAzMDEzMiwgMzAxMzksIDMwMTQ3LCAKKyAgICAzMDE1MSwgMzAxNTYsIDMwMTY1LCAzMDE3OCwgMzAxODYsIDMwMTk4LCAzMDIwOSwgMzAyMjAsIDMwMjMwLCAzMDI0NCwgCisgICAgMzAyNTMsIDMwMjYxLCAzMDI3MywgMTAzMDUsIDMwMjg0LCAzMDI5NSwgMzAzMDcsIDMwMzE3LCAzMDMyNiwgMzAzMzEsIAorICAgIDMwMzM1LCAzMDM0MywgMzAzNTQsIDMwMzY0LCAzMDM2OSwgMzAzNzMsIDMwMzc2LCAzMDM3OSwgMzAzODcsIDMwMzk1LCAKKyAgICAzMDQwNCwgMzA0MTQsIDMwNDIzLCAzMDQyOSwgMzA0NDMsIDI2OTEsIDMwNDY1LCAzMDQ3NiwgMzA0ODUsIDMwNDk1LCAKKyAgICAzMDUwNywgMzA1MTYsIDMwNTI1LCAzMDUzNSwgMzA1NDMsIDMwNTUxLCAzMDU2MCwgMzA1NjUsIDMwNTc2LCAzMDU4MSwgCisgICAgMzA1OTAsIDMwNjAxLCAzMDYwNSwgMzA2MDgsIDMwNjE4LCAzMDYyNywgMzA2MzUsIDMwNjQ1LCAzMDY1NSwgMzA2NjMsIAorICAgIDMwNjcyLCAzMDY3OSwgMzA2ODcsIDMwNjk0LCAzMDcwMywgMzA3MTIsIDMwNzE3LCAzMDcyMSwgMzA3MjksIDMwNzM2LCAKKyAgICAzMDc0NCwgMzA3NTEsIDMwNzYyLCAzMDc3NywgMzA3ODQsIDMwNzkwLCAzMDgwMCwgMzA4MDksIDMwODE1LCAzMDgyNiwgCisgICAgMzA4MzAsIDMwODM3LCAzMDg0MSwgMzA4NDcsIDE1MzgyLCAzMDg1MywgMzA4NTcsIDMwODYyLCAzMDg2OCwgMzA4NzUsIAorICAgIDMwODc5LCAzMDg4MywgMzA4OTEsIDMwODk5LCAzMDkwNSwgMzA5MTQsIDMwOTIxLCAzMDkyNiwgMzA5MzEsIDMwOTQxLCAKKyAgICAyNTU5OSwgMzA5NDUsIDMwOTQ4LCAzMDk1MywgMzA5NTgsIDMwOTYzLCAzMDk2OCwgMzA5NzMsIDMwOTc4LCAzMDk4MywgCisgICAgMzA5ODgsIDMwOTk0LCAzMDk5OSwgMzEwMDQsIDMxMDEwLCAxMTgwLCA2NzYsIDMxMDE1LCAzMTAyNCwgMjM4MywgMzEwMzEsIAorICAgIDMxMDM2LCAzMTA0MCwgMzEwNDYsIDEyMjksIDU5MSwgMzEwNTEsIDI5NiwgMzEwNTUsIDMxMDY0LCAzMTA3MiwgMzEwODEsIAorICAgIDMxMDg5LCAzMTEwMCwgMzExMDgsIDMxMTE3LCAzMTEyNSwgMzExMzAsIDEwODk1LCAzMTEzNCwgMzExNDIsIDMxMTUwLCAKKyAgICAzMTE1NSwgMTYyMTcsIDM4MjMsIDMxMTYxLCAzMTE2NywgMzExNzMsIDYxNjgsIDMxMTc4LCAzMTE4MiwgMzExODgsIAorICAgIDMxMTkyLCAzMTE5OCwgMzEyMDMsIDMxMjEwLCAxNDIyLCAzMTIxNiwgMzEyMjMsIDMxMjI3LCAxMzI5LCA2MTc2LCAzMTIzMiwgCisgICAgMzEyNDIsIDMxMjUwLCAzMTI1NiwgMzEyNjYsIDMxMjc1LCAzMTI4MywgMzEyODksIDMxMjk0LCAzMTMwMiwgMzEzMDksIAorICAgIDEyMjQ2LCAzMTMxNSwgMzEzMjIsIDMxMzI3LCAzMTMzNCwgMTQ3NSwgMjI1LCAyMTU4LCAzMTM0MCwgMzEzNDYsIDMxMzUzLCAKKyAgICAzMTM2NCwgMzEzNzUsIDMxMzgzLCAzMTM5MCwgMzE0MDAsIDMxNDA5LCAzMTQxNywgMzE0MjYsIDMxNDMzLCAzMTQ0MCwgCisgICAgMzE0NTMsIDMxNDYwLCAzMTQ2NiwgMzE0NzcsIDMxNDk2LCAxMjM0LCAzMTUwMSwgMzE1MDYsIDMxNTE0LCAzNzQxLCAKKyAgICAzMTUxOCwgMzE1MjMsIDMxNTI3LCAzMTUzMSwgMTQyNiwgMjY4NjMsIDMxNTQxLCAzMTU0NSwgMzE1NTAsIDMxNTU0LCAKKyAgICAzNjA4LCAzMTU2MCwgMzE1NjgsIDMxNTc1LCAzMTU4NiwgMzE1OTQsIDMxNjE5LCAzMTYyNywgMzE2MzIsIDM3NDIsIDM1MiwgCisgICAgMzE2MzgsIDMxNjQ2LCAzMTY1NCwgMzE2NjEsIDMxNjY3LCAzMTY3MiwgMjIyNywgMTE3MjYsIDMxNjc5LCAzMTY4NSwgCisgICAgMjgyOTMsIDI4NTQyLCAzMTY5MSwgNTg3LCAxMDYsIDMxNjk1LCAzMTY5OSwgMzE3MDUsIDY4OSwgOTkzMSwgMzE3MTAsIAorICAgIDMxNzE3LCAzMTcyMywgMzE3MjcsIDMxNzMxLCAxNjIwLCAzMTczNCwgMzE3MzgsIDE2Njk5LCAzMTc0MSwgMzE3NDYsIAorICAgIDMxNzUzLCAzMTc1OSwgMzE3NjQsIDMxNzcyLCAzMTc3OSwgMzE3ODUsIDI0MzQxLCAzMTc4OSwgMzE3OTMsIDMxNzk3LCAKKyAgICAzODEyLCAxODM0NCwgMzE4MDEsIDMxODA2LCAzMTgxMCwgMzE4MTMsIDMxODIxLCAzMTgyOSwgMzE4MzQsIDMxODQzLCAKKyAgICAzMTg1MSwgMzE4NTQsIDMxODYxLCAzMTg3MSwgMzE4ODMsIDMxODg4LCAzMTg5MiwgMzE5MDAsIDMxOTA3LCAzMTkxMywgCisgICAgMzE5MjAsIDMxOTI3LCAzMTkzMCwgMzE5MzQsIDMxOTM4LCAxNDMwLCAzMTk0OCwgMzE5NTAsIDMxOTU1LCAzMTk2MSwgCisgICAgMzE5NjcsIDMxOTcyLCAzMTk3NywgMzE5ODIsIDMxOTg3LCAzMTk5MiwgMzE5OTcsIDMyMDAyLCAzMjAwNywgMzIwMTIsIAorICAgIDMyMDE3LCAzMjAyMiwgMzIwMjcsIDMyMDMyLCAzMjAzNywgMzIwNDMsIDMyMDQ5LCAzMjA1NSwgMzIwNjEsIDMyMDY2LCAKKyAgICAzMjA3MSwgMzIwNzYsIDMyMDgyLCAzMjA4NywgMzIwOTIsIDMyMDk3LCAzMjEwMywgMzIxMDgsIDMyMTE0LCAzMjExOSwgCisgICAgMzIxMjQsIDMyMTI5LCAzMjEzNCwgMzIxNDAsIDMyMTQ1LCAzMjE1MSwgMzIxNTYsIDMyMTYxLCAzMjE2NiwgMzIxNzEsIAorICAgIDMyMTc3LCAzMjE4MiwgMzIxODgsIDMyMTkzLCAzMjE5OCwgMzIyMDMsIDMyMjA4LCAzMjIxMywgMzIyMTgsIDMyMjIzLCAKKyAgICAzMjIyOCwgMzIyMzMsIDMyMjM5LCAzMjI0NSwgMzIyNTEsIDMyMjU2LCAzMjI2MSwgMzIyNjYsIDMyMjcxLCAzMjI3NywgCisgICAgMzIyODMsIDMyMjg5LCAzMjI5NSwgMzIzMDEsIDMyMzA3LCAzMjMxMiwgMzIzMTgsIDMyMzIzLCAzMjMyOCwgMzIzMzMsIAorICAgIDMyMzM4LCAzMjM0NCwgMjQ2NywgMzIzNDksIDI0NzQsIDI0ODEsIDI3ODIsIDMyMzU0LCAyNDg3LCAyNDk3LCAzMjM2MCwgCisgICAgMzIzNjQsIDMyMzY5LCAzMjM3NCwgMzIzODAsIDMyMzg1LCAzMjM5MCwgMzIzOTQsIDMyMzk5LCAzMjQwNSwgMzI0MTAsIAorICAgIDMyNDE1LCAzMjQyMCwgMzI0MjYsIDMyNDMxLCAzMjQzNSwgMzI0MzksIDMyNDQ0LCAzMjQ0OSwgMzI0NTQsIDMyNDU5LCAKKyAgICAzMjQ2NCwgMzI0NzAsIDMyNDc2LCAzMjQ4MSwgMzI0ODUsIDMyNDkwLCAzMjQ5NiwgMzI1MDAsIDMyNTA1LCAzMjUxMCwgCisgICAgMzI1MTUsIDMyNTIwLCAzMjUyNCwgMzI1MjcsIDMyNTMyLCAzMjUzNywgMzI1NDIsIDMyNTQ3LCAzMjU1MiwgMzI1NTgsIAorICAgIDMyNTY0LCAzMjU2OSwgMzI1NzQsIDMyNTc5LCAzMjU4MywgMzI1ODgsIDMyNTkzLCAzMjU5OCwgMzI2MDMsIDMyNjA4LCAKKyAgICAzMjYxMywgMzI2MTcsIDMyNjIyLCAzMjYyNywgMzI2MzIsIDMyNjM2LCAzMjY0MCwgMzI2NDQsIDMyNjQ5LCAzMjY1NywgCisgICAgMzI2NjIsIDMyNjY3LCAzMjY3MywgMzI2NzksIDMyNjg1LCAzMjY5MCwgMzI2OTQsIDMyNjk3LCAzMjcwMiwgMzI3MDcsIAorICAgIDMyNzExLCAzMjcxNiwgMzI3MjEsIDMyNzI1LCAzMjczMCwgMzI3MzQsIDMyNzM3LCAzMjc0MiwgMzkxOSwgMTkwODMsIAorICAgIDMyNzQ3LCAzMjc1MiwgMzI3NTcsIDMyNzY1LCAyMzE1MSwgMzEyMjAsIDk2MDEsIDMyNzcwLCAzMjc3NSwgMzI3NzksIAorICAgIDMyNzg0LCAzMjc4OCwgMzI3OTIsIDMyNzk3LCAzMjgwMSwgMzI4MDQsIDMyODA3LCAzMjgxMSwgMzI4MTYsIDMyODIwLCAKKyAgICAzMjgyOCwgMzI4MzIsIDMyODM1LCAzMjg0MCwgMzI4NDQsIDMyODQ4LCAzMjg1MywgMzI4NTgsIDMyODYyLCAzMjg2OCwgCisgICAgMzI4NzMsIDMyODc4LCAzMjg4NSwgMzI4OTIsIDMyODk2LCAzMjg5OSwgMzI5MDUsIDMyOTE0LCAzMjkyMSwgMzI5MjksIAorICAgIDMyOTM2LCAzMjk0MCwgMzI5NDUsIDMyOTQ5LCAzMjk1MywgMzI5NTksIDMyOTY1LCAzMjk2OSwgMzI5NzUsIDMyOTgwLCAKKyAgICAzMjk4NSwgMzI5ODksIDMyOTk2LCAzMzAwMiwgMzMwMDgsIDMzMDE0LCAzMzAyMCwgMzMwMjcsIDMzMDMzLCAzMzAzOSwgCisgICAgMzMwNDUsIDMzMDUxLCAzMzA1NywgMzMwNjMsIDMzMDY5LCAzMzA3NiwgMzMwODIsIDMzMDg5LCAzMzA5NSwgMzMxMDEsIAorICAgIDMzMTA3LCAzMzExMywgMzMxMTksIDMzMTI1LCAzMzEzMSwgMzMxMzcsIDMzMTQzLCAxMjU4OSwgMzMxNDksIDMzMTU1LCAKKyAgICAzMzE2MCwgMzMxNjUsIDMzMTcwLCAzMzE3MywgMzMxNzksIDMzMTg3LCAzMzE5MiwgMzMxOTYsIDMzMjAxLCAzMzIwNywgCisgICAgMzMyMTYsIDMzMjIyLCAzMzIyNywgMzMyMzIsIDMzMjM3LCAzMzI0MSwgMzMyNDYsIDMzMjUxLCAzMzI1NiwgMzMyNjEsIAorICAgIDMzMjY2LCAzMzI3MywgMzMyODAsIDMzMjg2LCAzMzI5MiwgMzMyOTcsIDE3OTgwLCAzMzMwNCwgMzMzMTAsIDMzMzE3LCAKKyAgICAzMzMyMywgMzMzMjksIDMzMzM0LCAzMzM0MiwgMzMzNDcsIDEwNDcwLCAzMzM1MSwgMzMzNTYsIDMzMzYxLCAzMzM2NywgCisgICAgMzMzNzIsIDMzMzc3LCAzMzM4MSwgMzMzODYsIDMzMzkxLCAzMzM5NywgMzM0MDIsIDMzNDA3LCAzMzQxMiwgMzM0MTYsIAorICAgIDMzNDIxLCAzMzQyNiwgMzM0MzAsIDMzNDM1LCAzMzQ0MCwgMzM0NDQsIDMzNDQ5LCAzMzQ1MywgMzM0NTgsIDMzNDYzLCAKKyAgICAzMzQ2OCwgMzM0NzIsIDMzNDc3LCAzMzQ4MSwgMzM0ODUsIDE2ODA1LCAzMzQ5MCwgMzM0OTksIDMzNTA1LCAzMzUxMSwgCisgICAgMzM1MjAsIDMzNTI4LCAzMzUzNywgMzM1NDUsIDMzNTUwLCAzMzU1NCwgMzM1NjEsIDMzNTY3LCAzMzU3NSwgMzM1NzksIAorICAgIDMzNTgyLCAzMzU4NywgMzM1OTEsIDMzNjAwLCAzMzYwOCwgMzM2MjYsIDMzNjMyLCAxNDc0LCAzMzYzOCwgMzM2NDEsIAorICAgIDMzNjQ1LCAyNDQ0NywgMjQ0NTMsIDMzNjUxLCAzMzY1NSwgMzM2NjYsIDMzNjc3LCAzMzY4OCwgMzM3MDAsIDMzNzA0LCAKKyAgICAzMzcxMSwgMzM3MTgsIDMzNzI1LCAzMzczMCwgMzM3MzQsIDYyMjQsIDk2MywgMjMxNTAsIDMzNzQyLCAzMzc0NywgMzM3NTEsIAorICAgIDMzNzU2LCAzMzc2MCwgMzM3NjYsIDMzNzcxLCAzMzc3NywgMzM3ODIsIDMzNzg4LCAzMzc5MywgMzM3OTksIDMzODA0LCAKKyAgICAzMzgxMCwgMzM4MTYsIDMzODIyLCAzMzgyNywgMzM3ODMsIDMzNzg5LCAzMzgzMSwgMzM4MzYsIDMzODQyLCAzMzg0NywgCisgICAgMzM4NTMsIDMzODU4LCAzMzg2NCwgMzM4NjksIDMzNzk0LCAxMTQxMiwgMzM4NzMsIDMzODA1LCAzMzgxMSwgMzM4MTcsIAorICAgIDI4NzQsIDM1MjIsIDMzODc5LCAzMzg4MiwgMzM4ODcsIDMzODkzLCAzMzg5OSwgMzM5MDUsIDMzOTEyLCAzMzkxOCwgCisgICAgMzM5MjQsIDMzOTMwLCAzMzkzNiwgMzM5NDIsIDMzOTQ4LCAzMzk1NCwgMzM5NjAsIDMzOTY2LCAzMzk3MiwgMzM5NzgsIAorICAgIDMzOTg0LCAzMzk5MSwgMzM5OTcsIDM0MDAzLCAzNDAwOSwgMzQwMTUsIDM0MDIxLCAzNDAyNCwgMzQwMjksIDM0MDMyLCAKKyAgICAzNDAzOSwgMzQwNDQsIDM0MDUyLCAzNDA1NywgMzQwNjIsIDM0MDY4LCAzNDA3MywgMzQwNzgsIDM0MDgyLCAzNDA4NywgCisgICAgMzQwOTMsIDM0MDk4LCAzNDEwNCwgMzQxMDksIDM0MTE1LCAzNDEyMCwgMzQxMjYsIDM0MTMyLCAzNDEzNiwgMzQxNDEsIAorICAgIDM0MTQ2LCAzNDE1MSwgMzQxNTYsIDM0MTYwLCAzNDE2NSwgMzQxNzAsIDM0MTc1LCAzNDE4MSwgMzQxODcsIDM0MTkzLCAKKyAgICAzNDE5OSwgMzQyMDQsIDM0MjA4LCAzNDIxMSwgMzQyMTcsIDM0MjIzLCAzNDIzMiwgMzQyNDAsIDM0MjQ3LCAzNDI1MiwgCisgICAgMzQyNTYsIDM0MjYwLCAzNDI2NSwgMTY2NTMsIDM0MjcwLCAzNDI3OCwgMzQyODQsIDM4NjUsIDEzMzksIDM0Mjg5LCAKKyAgICAzNDI5MywgODM4MywgMzQyOTksIDM0MzA1LCAzNDMxMiwgODM5MiwgMzQzMTYsIDM0MzIyLCAzNDMyOSwgMzQzMzUsIAorICAgIDM0MzQ0LCAzNDM1MiwgOTI5OSwgMzQzNjQsIDM0MzY4LCAzNDM3NSwgMzQzODEsIDM0Mzg2LCAzNDM5MCwgMzQzOTQsIAorICAgIDM0Mzk3LCAzNDQwNywgMzQ0MTYsIDM0NDI0LCAzMzc4NCwgMzQ0MjksIDM0NDM5LCAzNDQ0OSwgMzQ0NTksIDM0NDY1LCAKKyAgICAzNDQ3MCwgMzQ0ODAsIDM0NDg1LCAzNDQ5OCwgMzQ1MTIsIDM0NTIzLCAzNDUzNSwgMzQ1NDcsIDM0NTYxLCAzNDU3NCwgCisgICAgMzQ1ODYsIDM0NTk4LCAxNjAxNiwgMzQ2MTIsIDM0NjE3LCAzNDYyMiwgMzQ2MjYsIDM0NjMwLCAzNDYzNCwgMTc3NiwgCisgICAgMjk1NDUsIDM0NjM4LCAzNDY0MywgMzM4MzIsIDM0NjQ4LCAzNDY1MSwgMzQ2NTYsIDM0NjYxLCAzNDY2NiwgMzQ2NzIsIAorICAgIDM0Njc4LCAxMTA3MiwgMzQ2ODMsIDM0Njg5LCAzNDY5NiwgMTcyNjYsIDM0NzAyLCAzNDcwNywgMzQ3MTIsIDM0NzE2LCAKKyAgICAzNDcyMSwgMzQ3MjYsIDMzODM3LCAzNDczMSwgMzQ3MzYsIDM0NzQxLCAzNDc0NywgMzM4NDMsIDM0NzUyLCAzNDc1NSwgCisgICAgMzQ3NjIsIDM0NzcwLCAzNDc3NiwgMzQ3ODIsIDM0Nzg4LCAzNDc5OSwgMzQ4MDQsIDM0ODExLCAzNDgxOCwgMzQ4MjUsIAorICAgIDM0ODMzLCAzNDg0MiwgMzQ4NTEsIDM0ODU3LCAzNDg2MywgMzQ4NzEsIDMzODQ4LCAzNDg3NiwgMzQ4ODIsIDM0ODg4LCAKKyAgICAzMzg1NCwgMzQ4OTMsIDM0ODk4LCAzNDkwNiwgMzQ5MTQsIDM0OTIwLCAzNDkyNywgMzQ5MzMsIDM0OTQwLCAzNDk0NywgCisgICAgMzQ5NTMsIDM0OTYxLCAzNDk3MSwgMzQ5NzgsIDM0OTg0LCAzNDk4OSwgMzQ5OTUsIDM1MDAwLCAzNTAwNSwgMzUwMTIsIAorICAgIDM1MDIxLCAzNTAyOSwgMzUwMzQsIDM1MDQwLCAzNTA0NywgMzUwNTUsIDM1MDYxLCAzNTA2NiwgMzUwNzIsIDM1MDgxLCAKKyAgICAzNTA4OCwgMzA0MDksIDM1MDk0LCAzNTA5OCwgMzUxMDMsIDM1MTEyLCAzNTExNywgMzUxMjIsIDM1MTI3LCAxMzY1OCwgCisgICAgMzUxMzUsIDM1MTQwLCAzNTE0NSwgMzUxNTAsIDM1MTU0LCAzNTE1OSwgMzUxNjQsIDM1MTcxLCAzNTE3NiwgMzUxODEsIAorICAgIDM1MTg2LCAzMzg1OSwgMjMwODcsIDM1MTkyLCAyNTQzLCAxNTUsIDM1MTk1LCAzNTE5OCwgMzUyMDIsIDM1MjA2LCAzNTIxNiwgCisgICAgMzUyMjQsIDM1MjMxLCAzNTIzNSwgMzUyMzgsIDM1MjQ2LCAzNTI1MywgMzUyNjAsIDM1MjY5LCAzNTI3MywgMzUyNzYsIAorICAgIDM1MjgyLCAzNTI4NiwgMzUyOTQsIDM1MzAyLCAzNTMwNiwgMzUzMTAsIDM1MzEzLCAzNTMxOSwgMzUzMjYsIDM1MzMwLCAKKyAgICAzNTMzNCwgMzUzNDEsIDM1MzQ5LCAzMzc5NSwgMzUzNTYsIDM1MzY0LCAzNTM2OSwgMTExMzIsIDYwMCwgMzc1LCAzNTM4MSwgCisgICAgMzUzODYsIDM1MzkxLCAzNTM5NywgMzU0MDIsIDM1NDA3LCAzODg2LCAzNTQxMiwgMzU0MTUsIDM1NDIwLCAzNTQyNSwgCisgICAgMzU0MzAsIDM1NDM1LCAzNTQ0MCwgMzU0NDcsIDI0NTY1LCAzNTQ1MiwgMzU0NTcsIDM1NDYyLCAzNTQ2NywgMzU0NzIsIAorICAgIDM1NDc4LCAzNTQ4MywgMzU0ODksIDM0MDM1LCAzNTQ5NSwgMzU1MDAsIDM1NTA2LCAzNTUxMiwgMzU1MjIsIDM1NTI3LCAKKyAgICAzNTUzMiwgMzU1MzYsIDM1NTQxLCAzNTU0NiwgMzU1NTEsIDM1NTU2LCAzNTU2OSwgMzU1NzQsIDI0MjI4LCAxODQxOSwgCisgICAgMzg5OSwgMzU1NzgsIDM1NTg0LCAzNTU4OSwgMzU1OTQsIDM1NjAwLCAzNTYwNSwgMzU2MTAsIDM1NjE0LCAzNTYxOSwgCisgICAgMzU2MjQsIDM1NjMwLCAzNTYzNSwgMzU2NDAsIDEzNDQsIDM1NjQ0LCAzNTY0OSwgMzU2NTQsIDM1NjU5LCAzNTY2MywgCisgICAgMzU2NjgsIDM1NjczLCAzNTY3OCwgMzU2ODQsIDM1NjkwLCAzNTY5NSwgMzU2OTksIDM1NzAzLCAzNTcwOCwgMzU3MTMsIAorICAgIDM1NzE4LCAzNTcyMiwgMzU3MzAsIDM1NzM0LCAzNTc0MCwgMzU3NDQsIDM1NzUxLCAzNTc2MCwgMTgyMDMsIDMzODA2LCAKKyAgICAzNTc2NiwgMzU3NzMsIDM1NzgxLCAzNTc4OCwgMzU3OTQsIDM1ODA3LCAzNTgxOSwgMzU4MjQsIDM1ODMwLCAzNTgzNCwgCisgICAgMjgwMSwgMzU4MzgsIDM1ODQyLCAzNTMyMSwgMzU4NTEsIDM1ODYyLCAzNTg2NywgMzA0NzIsIDM1ODcyLCAzNTg3NywgCisgICAgMzU4ODEsIDM1ODg2LCAyNDQ1OCwgMzU4OTAsIDM1ODk0LCAzNTg5OSwgMzM4MTIsIDIzMTc3LCAzNTkwMywgMzU5MDgsIAorICAgIDM1OTE0LCAzNTkxOSwgMzU5MjMsIDM1OTI3LCAzNTkzMCwgMzU5MzQsIDM1OTQwLCAzNTk0OSwgMzU5NjAsIDM1OTcyLCAKKyAgICAzMzgxOCwgMzU5NzcsIDM1OTgwLCAzNTk4NCwgMzU5ODgsIDQxNCwgMzU5OTMsIDM1OTk4LCAzNjAwMywgMzYwMDgsIAorICAgIDM2MDEzLCAzNjAxOCwgMzYwMjQsIDM2MDI5LCAzNjAzNCwgMzYwNDAsIDM2MDQ1LCAzNjA1MSwgMzYwNTYsIDM2MDYyLCAKKyAgICAzNjA2NywgMzYwNzIsIDM2MDc3LCAzNjA4MiwgMzYwODcsIDM2MDkyLCAzNjA5NywgMzYxMDIsIDM2MTA4LCAzNjExMywgCisgICAgMzYxMTgsIDM2MTIzLCAzNjEyOCwgMzYxMzMsIDM2MTM4LCAzNjE0MywgMzYxNDksIDM2MTU1LCAzNjE2MCwgMzYxNjUsIAorICAgIDM2MTcwLCAzNjE3NSwgMzYxODAsIDM2MTg1LCAzNjE5MCwgMzYxOTUsIDM2MjAwLCAzNjIwNSwgMzYyMTAsIDM2MjE1LCAKKyAgICAzNjIyMCwgMzYyMjUsIDM2MjMwLCAzNjIzNSwgMzYyNDAsIDM2MjQ1LCAzNjI1MSwgMzI2LCA5LCAzNjI1NiwgMzYyNjAsIAorICAgIDM2MjY0LCAzNjI3MiwgMzYyNzYsIDM2MjgwLCAzNjI4MywgMzYyODYsIDM2Mjg4LCAzNjI5MywgMzYyOTcsIDM2MzAyLCAKKyAgICAzNjMwNiwgMzYzMTEsIDM2MzE1LCAzNjMyMCwgMzYzMjQsIDM2MzI3LCAzNjMyOSwgMzYzMzMsIDM2MzM4LCAzNjM0MiwgCisgICAgMzYzNTMsIDM2MzU2LCAzNjM1OCwgMzYzNjIsIDM2Mzc0LCAzNjM4MywgMzYzODcsIDM2MzkxLCAzNjM5NywgMzY0MDIsIAorICAgIDM2NDExLCAzNjQxNywgMzY0MjIsIDM2NDI3LCAzNjQzMSwgMzY0MzUsIDM2NDQwLCAzNjQ0NywgMzY0NTIsIDM2NDU4LCAKKyAgICAzNjQ2MywgMzY0NjcsIDM2NDc0LCAyNzk3NiwgMjc5ODYsIDM2NDc4LCAzNjQ4MywgMzY0ODgsIDM2NDkzLCAzNjUwMCwgCisgICAgMzY1MDQsIDM2NTExLCAzNjUxNywgODUzMiwgMzY1MjEsIDM2NTMwLCAzNjUzOCwgMzY1NTMsIDM2NTY3LCAzNjU3NiwgCisgICAgMzY1ODQsIDM2NTk1LCAzNjYwNCwgMzY2MDksIDM2NjE2LCA3NTgwLCAzNjYyNiwgMzY2MzEsIDM2NjM2LCAzNjY0MCwgCisgICAgMzY2NDMsIDM2NjQ4LCAzNjY1MiwgMzY2NTcsIDM2NjYxLCAzNjY2OCwgMzY2NzMsIDM2Njc4LCAzNjY4MywgOTQ3NCwgCisgICAgMzY2OTMsIDM2Njk1LCAzNjY5OCwgMzY3MDEsIDM2NzA1LCAzNjcxMSwgMzY3MTUsIDM2NzIwLCAzNjcyNSwgMzY3NDMsIAorICAgIDM2NzU3LCAzNjc3NiwgMzY3OTMsIDM2ODAyLCAzNjgxMCwgMzY4MTUsIDM2ODIwLCAxNDY3LCAzNjgyNiwgMzY4MzIsIAorICAgIDM2ODM3LCAzNjg0NywgMzY4NTYsIDM2ODY0LCAzNjg2OSwgMzY4NzUsIDM2ODgwLCAzNjg4OSwgMzY5MDAsIDM2OTA1LCAKKyAgICAzNjkxMiwgMzY5MTgsIDM2OTIyLCAzNjkyOSwgMzY5MzcsIDM2OTQ0LCAzNjk1NywgMzY5NjUsIDM2OTY5LCAzNjk3OSwgCisgICAgMzY5ODQsIDM2OTg4LCAzNjk5NiwgMzcwMDQsIDM3MDA5LCAzNzAxMywgMzcwMTcsIDM3MDI2LCAzNzAzMiwgMzcwMzcsIAorICAgIDM3MDQ1LCAzNzA1NSwgMzcwNjQsIDM3MDczLCAzNzA4MiwgMzcwOTMsIDM3MTAxLCAzNzExMiwgMzcxMjEsIDM3MTI4LCAKKyAgICAzNzEzNCwgMzcxMzksIDM3MTUwLCAzNzE2MSwgMzcxNjYsIDM3MTcwLCAzNzE3MywgMzcxNzcsIDM3MTg1LCAzNzE5MSwgCisgICAgMzcyMDIsIDM3MjEzLCAzNzIyNCwgMzcyMzUsIDM3MjQ2LCAzNzI1NywgMzcyNjgsIDM3Mjc5LCAzNzI5MSwgMzczMDMsIAorICAgIDM3MzE1LCAzNzMyNywgMzczMzksIDM3MzUxLCAzNzM2MywgMzczNzIsIDM3Mzc2LCAzNzM4NCwgMzczOTAsIDM3Mzk2LCAKKyAgICAzNzQwMywgMzc0MDksIDM3NDE0LCAzNzQyMCwgMjQ0MiwgMzc0MjQsIDM3NDI2LCAzNzQzMSwgMzc0MzYsIDM3NDQxLCAKKyAgICAzNzQ0NCwgMzc0NDYsIDM3NDUwLCAzNzQ1MywgMzc0NjAsIDM3NDY0LCAxMDc2MiwgMzc0NjgsIDM3NDc0LCAzNzQ4NCwgCisgICAgMzc0ODksIDM3NDk1LCAzNzQ5OSwgMzc1MDQsIDM3NTE3LCAyODQxNywgMzc1MjMsIDM3NTMyLCAzNzU0MSwgMTkyODEsIAorICAgIDM3NTQ4LCAzNzU1NywgMzQ0NDUsIDM3NTY1LCAzNzU3MCwgMzc1NzQsIDM3NTgzLCAzNzU5MSwgMzc1OTgsIDM3NjAzLCAKKyAgICAzNzYwNywgMzc2MTIsIDM3NjE3LCAzNzYyNSwgMzc2MjksIDM3NjM3LCAzNzY0MywgMzc2NDksIDM3NjU0LCAzNzY1OSwgCisgICAgMzc2NjMsIDM3NjY2LCAzNzY3MSwgMzc2ODQsIDM3NzAwLCAyNTA1NSwgMzc3MTcsIDM3NzI5LCAzNzc0NiwgMzc3NTgsIAorICAgIDM3NzcyLCAyNTA3MiwgMjUwOTEsIDM3Nzg0LCAzNzc5NiwgMjcwOCwgMzc4MTAsIDM3ODE1LCAzNzgyMCwgMzc4MjUsIAorICAgIDM3ODI5LCAzNzgzNiwgMzc4NDgsIDM3ODU1LCAzNzg2NCwgMzc4NjcsIDM3ODc4LCAzNzg4OSwgMzc4OTQsIDM0ODY4LCAKKyAgICA4OTMsIDM3ODk4LCAzNzkwMiwgMzc5MDYsIDM3OTA5LCAzNzkxNCwgMzc5MTksIDM3OTI1LCAzNzkzMCwgMzc5MzUsIAorICAgIDM3OTQxLCAzNzk0NywgMzc5NTIsIDM3OTU2LCAzNzk2MSwgMzc5NjYsIDM3OTcxLCAzNzk3NSwgMzc5NzgsIDM3OTg0LCAKKyAgICAzNzk4OSwgMzc5OTQsIDM3OTk5LCAzODAwMywgMzgwMDgsIDM4MDE0LCAzODAyMiwgMjg2NjksIDM4MDI3LCAzODAzMiwgCisgICAgMzgwMzksIDM4MDQ1LCAzODA1MSwgMzgwNTYsIDM4MDY0LCAyNDU3NCwgMzgwNzEsIDM4MDc2LCAzODA4MSwgMzgwODYsIAorICAgIDM4MDkwLCAzODA5MywgMzgwOTgsIDM4MTAyLCAzODEwNiwgMzgxMTMsIDM4MTE5LCAzODEyNSwgMzgxMzEsIDM4MTM4LCAKKyAgICAzODE0MywgMzgxNDksIDM2OTk5LCAzODE1MywgMzgxNTcsIDM4MTYyLCAzODE3NSwgMzgxODAsIDM4MTg2LCAzODE5NCwgCisgICAgMzgyMDEsIDM4MjA5LCAzODIxOSwgMzgyMjUsIDM4MjMxLCAzODIzNywgMzgyNDEsIDM4MjUwLCAzODI1OCwgMzgyNjUsIAorICAgIDM4MjcwLCAzODI3NSwgMTE0MzUsIDM4MjgwLCAzODI4NywgMzgyOTMsIDM4MzAzLCAzODMwOCwgMzgzMTQsIDM4MzIyLCAKKyAgICAzNzc0LCAzODMyOSwgMzgzMzYsIDM4MzQyLCAzODM0OSwgMzc4MCwgMzgzNTMsIDM4MzU4LCAzODM2OSwgMzgzNzYsIAorICAgIDM4MzgyLCAzODM5MSwgMzgzOTUsIDQyNTgsIDM4Mzk4LCAzODQwNSwgMzg0MTEsIDM4NDE3LCAzODQyNSwgMzg0MzUsIAorICAgIDMxNjYyLCAzODQ0MiwgMzg0NTAsIDM4NDU2LCAzODQ2MSwgMzg0NjcsIDM4NDcyLCAzODQ3NiwgMjgyNjAsIDM4NDgyLCAKKyAgICAzODQ4OSwgMzg0OTUsIDM4NTA0LCAzODUxMSwgMjU3OTEsIDM4NTE3LCAzODUyMiwgMzg1MjYsIDM4NTM0LCAzODU0MiwgCisgICAgMTA0MjgsIDYxOTksIDM4NTQ5LCAzODU1MywgMzg1NTUsIDM4NTU5LCAzODU2NCwgMzg1NjYsIDM4NTcxLCAzODU3NywgCisgICAgMzg1ODIsIDM4NTg3LCAzODU5NCwgMzU0NDMsIDM4NjAwLCAzODYwNSwgMzg2MDksIDM4NjE0LCAzODYxOCwgMzg2MjcsIAorICAgIDM4NjMxLCAzODYzNywgMzg2NDQsIDM4NjUwLCAzODY1NywgMzg2NjIsIDM4NjcxLCAzODY3NiwgMzg2ODAsIDM4Njg1LCAKKyAgICAzODY5MiwgMzg3MDAsIDM4NzA4LCAzODcxMywgMjMyMzMsIDM4NzE3LCAzODcyMCwgMzg3MjQsIDM4NzI4LCAxMTgyMywgCisgICAgOTA3LCAzODczMiwgMzg3MzcsIDM4NzQ1LCAzODc0OSwgMzg3NTgsIDM4NzY1LCAzODc2OSwgMzg3NzMsIDM4NzgxLCAKKyAgICAzODc4OCwgMzg3OTgsIDM4ODAyLCAzODgwNiwgMzg4MTQsIDM4ODIyLCAzODgyOCwgMzg4MzMsIDM4ODQyLCAxNDY0MCwgCisgICAgMzg4NDgsIDM4ODU3LCAzODg2MiwgMzg4NjksIDM4ODc2LCAzODg4NCwgMzg4OTEsIDM4ODk5LCAzODkwNywgMzg5MTIsIAorICAgIDM4OTE5LCAzODkyNiwgMzg5MzMsIDM4OTQwLCAzODk0NywgMzg5NTIsIDM4OTU5LCAzODk2NSwgMzg5ODIsIDM4OTkwLCAKKyAgICAzOTAwMCwgMzkwMDgsIDM5MDE1LCA0MjIsIDM5MDE5LCAzOTAyNSwgMzkwMjksIDM5MDM0LCAzNjYwMCwgMzkwNDAsIAorICAgIDM5MDQzLCAzOTA0NywgMzkwNTgsIDM5MDY2LCAzNzg1LCAzOTA3NCwgMzkwODAsIDM5MDg2LCAzOTA5NiwgMzkxMDUsIAorICAgIDM5MTE1LCAzOTEyMiwgMzkxMjgsIDM5MTMzLCAzNzkxLCAzNzk3LCAzOTE0MiwgMzkxNDksIDM5MTU3LCAzOTE2MiwgCisgICAgMzkxNjYsIDM5MTczLCAzOTE4MSwgMzkxODgsIDM5MTk0LCAzOTIwMywgMzkyMTMsIDM5MjE5LCAzOTIyNywgMzkyMzYsIAorICAgIDM5MjQzLCAzOTI1MSwgMzkyNTgsIDIzOTM3LCAzOTI2MiwgMzkyNjksIDM5Mjc1LCAzOTI4NSwgMzkyOTQsIDM5MzAyLCAKKyAgICAzOTMxMywgMzkzMTcsIDM5MzI3LCAzOTMzMywgMzkzNDAsIDM5MzQ4LCAzOTM1NywgMzkzNjYsIDM5Mzc2LCAzOTM4NywgCisgICAgMzkzOTQsIDM5Mzk5LCAzOTQwNiwgMzA3NywgMzk0MTQsIDM5NDIwLCAzOTQyNSwgMzk0MzEsIDM5NDM3LCAzOTQ0MiwgCisgICAgMzk0NTUsIDM5NDY4LCAzOTQ4MSwgMzk0ODgsIDM5NDk0LCAzOTUwMiwgMzk1MTAsIDM5NTE1LCAzOTUxOSwgMTQzNiwgCisgICAgMzk1MjMsIDM5NTI3LCAzOTUzMSwgMzk1MzUsIDM5NTM5LCAzOTU0MywgMzk1NDcsIDM5NTUxLCAzOTU1NSwgMzk1NTksIAorICAgIDM5NTYzLCAzOTU2NywgMzk1NzEsIDM5NTc1LCAzOTU3OSwgMzk1ODMsIDM5NTg3LCAzOTU5MSwgMzk1OTUsIDM5NTk5LCAKKyAgICAzOTYwMywgMzk2MDcsIDM5NjExLCAzOTYxNSwgMzk2MTksIDM5NjIzLCAzOTYyNywgMzk2MzEsIDM5NjM1LCAzOTYzOSwgCisgICAgMzk2NDMsIDM5NjQ3LCAzOTY1MSwgMzk2NTUsIDM5NjU5LCAzOTY2MywgMzk2NjcsIDM5NjcxLCAzOTY3NSwgMzk2NzksIAorICAgIDM5NjgzLCAzOTY4NywgMzk2OTEsIDM5Njk1LCAzOTY5OSwgMzk3MDMsIDM5NzA3LCAzOTcxMSwgMzk3MTUsIDM5NzE5LCAKKyAgICAzOTcyMywgMzk3MjcsIDM5NzMxLCAzOTczNSwgMzk3MzksIDM5NzQzLCAzOTc0NywgMzk3NTEsIDM5NzU1LCAzOTc1OSwgCisgICAgMzk3NjMsIDM5NzY3LCAzOTc3MSwgMzk3NzUsIDM5Nzc5LCAzOTc4MywgMzk3ODcsIDM5NzkxLCAzOTc5NSwgMzk3OTksIAorICAgIDM5ODAzLCAzOTgwNywgMzk4MTEsIDM5ODE1LCAzOTgxOSwgMzk4MjMsIDM5ODI3LCAzOTgzMSwgMzk4MzUsIDM5ODM5LCAKKyAgICAzOTg0MywgMzk4NDcsIDM5ODUxLCAzOTg1NSwgMzk4NTksIDM5ODYzLCAzOTg2NywgMzk4NzEsIDM5ODc1LCAzOTg3OSwgCisgICAgMzk4ODMsIDM5ODg3LCAzOTg5MSwgMzk4OTUsIDM5ODk5LCAzOTkwMywgMzk5MDcsIDM5OTExLCAzOTkxNSwgMzk5MTksIAorICAgIDM5OTIzLCAzOTkyNywgMzk5MzEsIDM5OTM1LCAzOTkzOSwgMzk5NDMsIDM5OTQ3LCAzOTk1MSwgMzk5NTUsIDM5OTU5LCAKKyAgICAzOTk2MywgMzk5NjcsIDM5OTcxLCAzOTk3NSwgMzk5NzksIDM5OTgzLCAzOTk4NywgMzk5OTEsIDM5OTk1LCAzOTk5OSwgCisgICAgNDAwMDMsIDQwMDA3LCA0MDAxMSwgNDAwMTUsIDQwMDE5LCA0MDAyMywgNDAwMjcsIDQwMDMxLCA0MDAzNSwgNDAwMzksIAorICAgIDQwMDQzLCA0MDA0NywgNDAwNTEsIDQwMDU1LCA0MDA1OSwgNDAwNjMsIDQwMDY3LCA0MDA3MSwgNDAwNzUsIDQwMDc5LCAKKyAgICA0MDA4MywgNDAwODcsIDQwMDkxLCA0MDA5NSwgNDAwOTksIDQwMTAzLCA0MDEwNywgNDAxMTEsIDQwMTE1LCA0MDExOSwgCisgICAgNDAxMjMsIDQwMTI3LCA0MDEzMSwgNDAxMzUsIDQwMTQwLCA0MDE0NCwgNDAxNDksIDQwMTUzLCA0MDE1OCwgNDAxNjIsIAorICAgIDQwMTY3LCA0MDE3MSwgNDAxNzcsIDQwMTgyLCA0MDE4NiwgNDAxOTEsIDQwMTk1LCA0MDIwMCwgNDAyMDQsIDQwMjA5LCAKKyAgICA0MDIxMywgNDAyMTgsIDQwMjIyLCA0MDIyNywgNDAyMzEsIDQwMjM2LCA0MDI0MCwgNDAyNDYsIDQwMjUyLCA0MDI1NywgCisgICAgNDAyNjEsIDQwMjY2LCA0MDI3MCwgNDAyNzYsIDQwMjgxLCA0MDI4NSwgNDAyOTAsIDQwMjk0LCA0MDI5OSwgNDAzMDMsIAorICAgIDQwMzA5LCA0MDMxNCwgNDAzMTgsIDQwMzIzLCA0MDMyNywgNDAzMzIsIDQwMzM2LCA0MDM0MSwgNDAzNDUsIDQwMzUxLCAKKyAgICA0MDM1NiwgNDAzNjAsIDQwMzY1LCA0MDM2OSwgNDAzNzUsIDQwMzgwLCA0MDM4NCwgNDAzODksIDQwMzkzLCA0MDM5OCwgCisgICAgNDA0MDIsIDQwNDA3LCA0MDQxMSwgNDA0MTYsIDQwNDIwLCA0MDQyNiwgNDA0MzEsIDQwNDM1LCA0MDQ0MSwgNDA0NDYsIAorICAgIDQwNDUwLCA0MDQ1NiwgNDA0NjEsIDQwNDY1LCA0MDQ3MCwgNDA0NzQsIDQwNDc5LCA0MDQ4MywgNDA0ODksIDQwNDk1LCAKKyAgICA0MDUwMSwgNDA1MDcsIDQwNTEzLCA0MDUxOSwgNDA1MjUsIDQwNTMxLCA0MDUzNiwgNDA1NDAsIDQwNTQ1LCA0MDU0OSwgCisgICAgNDA1NTUsIDQwNTYwLCA0MDU2NCwgNDA1NjksIDQwNTczLCA0MDU3OCwgNDA1ODIsIDQwNTg3LCA0MDU5MSwgNDA1OTYsIAorICAgIDQwNjAwLCA0MDYwNSwgNDA2MDksIDQwNjE0LCA0MDYxOCwgNDA2MjQsIDQwNjI5LCA0MDYzMywgNDA2MzgsIDQwNjQyLCAKKyAgICA0MDY0OCwgNDA2NTQsIDQwNjU5LCAxMjIsIDYzLCA0MDY2MywgNDA2NjUsIDQwNjY5LCA0MDY3MywgNDA2NzcsIDQwNjgyLCAKKyAgICA0MDY4NiwgNDA2OTAsIDQwNjk1LCAxMDM0MSwgNDA3MDAsIDQwNzA2LCAxNzM3LCA2NjIxLCA0MDcxMiwgNDA3MTUsIAorICAgIDQwNzIwLCA0MDcyNCwgNDA3MjksIDQwNzMzLCA0MDczNywgNDA3NDIsIDExMjE5LCA0MDc0NiwgNDA3NTAsIDQwNzU0LCAKKyAgICA1NDAsIDQwNzU4LCAxNjkxNCwgNDA3NjMsIDQwNzY3LCA0MDc3MiwgNDA3NzcsIDQwNzgyLCA0MDc4NiwgNDA3OTMsIAorICAgIDI4NDQxLCA0MDc5OSwgNDA4MDIsIDQwODA2LCA0MDgxMSwgNDA4MTcsIDQwODIxLCA0MDgyNCwgNDA4MzIsIDQwODM4LCAKKyAgICA0MDg0MywgNDA4NDcsIDQwODUwLCA0MDg1NCwgNDA4NjAsIDQwODY0LCA0MDg2OCwgMzU3MywgMzU3OCwgMzE4ODYsIAorICAgIDQwODcxLCA0MDg3NSwgNDA4NzksIDQwODgzLCA0MDg4NywgNDA4OTUsIDQwOTAyLCA0MDkwNiwgMTQ1OTAsIDQwOTEzLCAKKyAgICA0MDkxOCwgNDA5MzIsIDQwOTM5LCA0MDk1MCwgMzQxLCA0MDk1NSwgNDA5NTksIDQwOTY1LCA0MDk3NywgNDA5ODMsIAorICAgIDQwOTg5LCA0MDk5MywgMzE5MjMsIDQxMDAyLCA0MTAwOCwgNDEwMTcsIDQxMDIxLCA0MTAyNSwgNDEwMzAsIDQxMDM2LCAKKyAgICA0MTA0MSwgNDEwNDUsIDQxMDUwLCA0MTA1NCwgNDEwNTgsIDQxMDY1LCA0MTA3MSwgNDEwNzYsIDQxMDg3LCA0MTEwMiwgCisgICAgNDExMTcsIDQxMTMyLCA0MTE0OCwgNDExNjYsIDExMTY5LCA0MTE4MCwgNDExODcsIDQxMTkxLCA0MTE5NCwgNDEyMDMsIAorICAgIDQxMjA4LCA0MTIxMiwgNDEyMjAsIDE3NDY5LCA0MTIyOCwgNDEyMzIsIDQxMjQyLCA0MTI1MywgMzE4NTYsIDQxMjY2LCAKKyAgICA0MTI3MCwgNDEyNzksIDQxMjk3LCA0MTMxNiwgNDEzMjQsIDEwNjIzLCAxMTMzMiwgNDEzMjgsIDI0NDcwLCA0MTMzMSwgCisgICAgMzI4MjQsIDQxMzM2LCAxMDYyMiwgNDEzNDEsIDQxMzQ3LCA0MTM1MiwgNDEzNTgsIDQxMzYzLCA0MTM2OSwgNDEzNzQsIAorICAgIDQxMzgwLCA0MTM4NSwgNDEzOTEsIDQxMzk3LCA0MTQwMywgNDE0MDgsIDQxMzY0LCA0MTM3MCwgNDEzNzUsIDQxMzgxLCAKKyAgICA0MTM4NiwgNDEzOTIsIDQxMzk4LCA4NTQ1LCA0MTAzLCA0MTQxMiwgNDE0MjAsIDQxNDI0LCA0MTQyNywgNDE0MzQsIAorICAgIDQxNDM4LCA0MTQ0MywgNDE0NDgsIDQxNDU1LCA0MTQ2MSwgNDE0NjcsIDQxNDcyLCAxNjI5NywgNDE0NzYsIDI4Mjc3LCAKKyAgICA0MTQ4MCwgNDE0ODQsIDQxNDg4LCA0MTQ5NCwgNDE0OTgsIDMwMzQ5LCA0MTUwNywgOTYzNCwgNDE1MTEsIDEwMDI3LCAKKyAgICA0MTUxNCwgNDE1MjEsIDQxNTI3LCA0MTUzMSwgMTMxMTQsIDQxNTM4LCA0MTU0NCwgNDE1NDksIDQxNTU2LCA0MTU2MywgCisgICAgNDE1NzAsIDMxMDc2LCA4NDQyLCA0MTU3NywgNDE1ODQsIDQxNTkxLCA0MTU5NywgNDE2MDIsIDQxNjA5LCA0MTYyMCwgCisgICAgNDE2MjYsIDQxNjMxLCA0MTYzNiwgNDE2NDEsIDQxNjQ1LCA0MTY1MCwgNDE2NTcsIDQxMzY1LCA0MTY2MSwgNDE2NzEsIAorICAgIDQxNjgwLCA0MTY5MSwgNDE2OTcsIDQxNzA1LCA0MTcxMiwgNDE3MTcsIDQxNzIyLCA0MTcyNywgNDE3MzIsIDQxNzM3LCAKKyAgICA0MTc0MSwgNDE3NDUsIDQxNzUyLCA0MTc1OCwgNDE3NjYsIDIzMzgsIDEwODYsIDExMjM1LCAxMTI0NywgMTEyNTIsIAorICAgIDExMjU4LCA0MTc3NSwgMTEyNjMsIDExMjY4LCAxMTI3NCwgNDE3ODAsIDQxNzkwLCA0MTc5NCwgMTEyNzksIDQxNzk5LCAKKyAgICAxODYxNywgNDE4MDIsIDQxODA3LCA0MTgxMSwgMzc4NTksIDQxODIyLCA0MTgyNywgNDE4MzQsIDQxODQxLCA0MTg0NSwgCisgICAgNDE4NDgsIDQxODU2LCAxMTE4MiwgNDE4NjMsIDQxODY2LCA0MTg3MiwgNDE4ODIsIDYyNTEsIDQxODkxLCA0MTg5NywgCisgICAgNDE5MDEsIDQxOTA5LCA0MTkxMywgNDE5MjMsIDQxOTI5LCA0MTkzNCwgNDE5NDUsIDQxOTU0LCA0MTk2MywgNDE5NzIsIAorICAgIDQxOTgxLCA0MTk5MCwgNDE5OTksIDQyMDA4LCA0MjAxNCwgNDIwMjAsIDQyMDI1LCA0MjAzMSwgNDIwMzcsIDQyMDQzLCAKKyAgICA0MjA0OCwgNDIwNTEsIDQyMDU4LCA0MjA2NCwgNDIwNjgsIDQyMDczLCA0MjA4MCwgNDIwODcsIDQyMDkxLCA0MjA5NCwgCisgICAgNDIxMDQsIDQyMTE3LCA0MjEyNiwgNDIxMzUsIDQyMTQ2LCA0MjE1OSwgNDIxNzEsIDQyMTgyLCA0MjE5MSwgNDIyMDIsIAorICAgIDQyMjA3LCA0MjIxNiwgNDIyMjEsIDExMjg0LCA0MjIyNywgNDIyMzQsIDQyMjQyLCA0MjI0NywgNDIyNTEsIDQyMjU4LCAKKyAgICA0MjI2NSwgNDA0NiwgMjUsIDQyMjY5LCA0MjI3NCwgMTg0NjYsIDQyMjc4LCA0MjI4MSwgNDIyODQsIDMwNTI5LCA0MjI4OCwgCisgICAgMzEwODUsIDQyMjk2LCA0MjMwMCwgNDIzMDQsIDQyMzA3LCA0MjMxMywgNDIzMTksIDQyMzI0LCAzMzg4MywgNDIzMzMsIAorICAgIDQyMzQxLCA0MjM0NywgNDIzNTQsIDMwNTEyLCA0MjM1OCwgMzA3MzIsIDQyMzYyLCA0MjM3MSwgNDIzNzUsIDQyMzgzLCAKKyAgICA0MjM4OSwgNDIzOTUsIDQyNDAwLCA0MjQwNCwgMzExMDQsIDQyNDEwLCA0MjQxMywgNDI0MjEsIDQyNDI5LCA0Mzk5LCAKKyAgICA0MjQzNSwgNDI0MzksIDQyNDQ0LCA0MjQ1MSwgNDI0NTcsIDQyNDYyLCA0MjQ2NywgNDI0NzEsIDQyNDc3LCA0MjQ4MiwgCisgICAgNDI0ODgsIDQzMTEsIDg0OCwgNDI0OTUsIDQyNDk5LCA0MjUwMiwgMTY3ODcsIDQyNTE0LCA0MjUyMiwgNDI1MzAsIDQyNTM4LCAKKyAgICA0MjU0NiwgNDI1NTMsIDQyNTYxLCA0MjU2OSwgNDI1NzYsIDQyNTg0LCA0MjU5MiwgNDI2MDAsIDQyNjA4LCA0MjYxNiwgCisgICAgNDI2MjQsIDQyNjMyLCA0MjY0MCwgNDI2NDgsIDQyNjU2LCA0MjY2NCwgNDI2NzEsIDQyNjc5LCA0MjY4NywgNDI2OTUsIAorICAgIDQyNzAzLCA0MjcxMSwgNDI3MTksIDQyNzI3LCA0MjczNSwgNDI3NDMsIDQyNzUxLCA0Mjc1OSwgNDI3NjcsIDQyNzc1LCAKKyAgICA0Mjc4MywgNDI3OTEsIDQyNzk5LCA0MjgwNywgNDI4MTUsIDQyODIzLCA0MjgzMCwgNDI4MzgsIDQyODQ1LCA0Mjg1MywgCisgICAgNDI4NjEsIDQyODY5LCA0Mjg3NywgNDI4ODUsIDQyODkzLCA0MjkwMSwgNDI5MDksIDQyOTIwLCAyMzk3MywgNDI5MjUsIAorICAgIDQyOTI4LCA0MjkzNSwgNDI5MzksIDQyOTQ1LCA0Mjk0OSwgNDI5NTUsIDQyOTYwLCA0Mjk2NiwgNDI5NzEsIDQyOTc2LCAKKyAgICA0Mjk4MCwgNDI5ODQsIDQyOTg5LCA0Mjk5NCwgNDMwMDQsIDQzMDEwLCA0MzAyMywgNDMwMjksIDQzMDM1LCA0MzA0MSwgCisgICAgNDMwNDgsIDQzMDUzLCA0MzA1OSwgNDMwNjQsIDE4MzYyLCA4NTYsIDQzMDY5LCA0MzA3MiwgNDMwNzUsIDQzMDc4LCAKKyAgICAzMzk2NywgMzM5NzMsIDQzMDgxLCAzMzk3OSwgMzM5OTIsIDMzOTk4LCAzNDAwNCwgNDMwODcsIDM0MDEwLCAzNDAxNiwgCisgICAgNDMwOTMsIDQzMDk5LCAxOCwgNDMxMDcsIDQzMTE0LCA0MzExOCwgNDMxMjIsIDQzMTMwLCAzNDc1NywgNDMxMzQsIDQzMTM4LCAKKyAgICA0MzE0NSwgNDMxNTAsIDQzMTU0LCA0MzE1OSwgNDMxNjUsIDQzMTcwLCA0MzE3NiwgNDMxODEsIDQzMTg1LCA0MzE4OSwgCisgICAgNDMxOTMsIDQzMTk4LCA0MzIwMiwgNDMyMDcsIDQzMjExLCA0MzIxNSwgNDMyMjIsIDQzMjI3LCA0MzIzMSwgNDMyMzUsIAorICAgIDQzMjQwLCA0MzI0NCwgNDMyNDksIDQzMjUzLCA0MzI1NywgNDMyNjIsIDQzMjY4LCAxNzA2MCwgMTcwNjUsIDQzMjczLCAKKyAgICA0MzI3NywgNDMyODAsIDQzMjg0LCA0MzI4OCwgMjMwNDQsIDQzMjkzLCA0MzI5NywgNDMzMDMsIDQzMzEwLCA0MzMxNiwgCisgICAgNDMzMjEsIDQzMzMxLCA0MzMzNiwgNDMzNDQsIDQzMzQ4LCA0MzM1MSwgMzQ3NzIsIDQzMzU1LCA0Mzc2LCA0MzM2MCwgCisgICAgNDMzNjUsIDQzMzY5LCA0MzM3NCwgNDMzNzgsIDQzMzgzLCAxNDY1OCwgNDMzOTQsIDQzMzk4LCA0MzQwMSwgNDM0MDUsIAorICAgIDQzNDEwLCA0MzQxNCwgNDM0MTksIDQzNDI0LCA0MzQyOCwgNDM0MzIsIDQzNDM2LCA0MzQzOSwgNDM0NDMsIDg1NjQsIAorICAgIDE0Njc0LCA0MzQ0NiwgNDM0NDksIDQzNDU1LCA0MzQ2MCwgNDM0NjYsIDQzNDcxLCA0MzQ3NywgNDM0ODIsIDQzNDg4LCAKKyAgICA0MzQ5MywgNDM0OTksIDQzNTA1LCA0MzUxMSwgNDM1MTYsIDQzNTIwLCA0MzUyNCwgNDM1MzMsIDQzNTQ5LCA0MzU2NSwgCisgICAgNDM1NzUsIDMwNDE5LCA0MzU4MiwgNDM1ODYsIDQzNTkxLCA0MzU5NiwgNDM2MDAsIDQzNjA0LCAzOTM2MSwgNDM2MTAsIAorICAgIDQzNjE1LCA0MzYxOSwgNDM2MjYsIDQzNjMxLCA0MzYzNiwgNDM2NDAsIDQzNjQ0LCA0MzY1MCwgMjkzNDgsIDQzNjU0LCAKKyAgICAyMzM0MCwgNDM2NTksIDQzNjY2LCA0MzY3NCwgNDM2ODAsIDQzNjg3LCA0MzY5NSwgNDM3MDEsIDQzNzA1LCA0MzcxMCwgCisgICAgNDM3MTYsIDQzNzI0LCA0MzcyOSwgNDM3MzMsIDQzNzQyLCAxMDMyMiwgNDM3NTAsIDQzNzU0LCA0Mzc2MiwgNDM3NjksIAorICAgIDQzNzc0LCA0Mzc3OSwgNDM3ODQsIDQzNzg4LCA0Mzc5MSwgNDM3OTUsIDQzNzk4LCA0MzgwMiwgNDM4MDksIDQzODE0LCAKKyAgICA0MzgxOCwgNDM4MjQsIDI4NzQ3LCAzNDAzMCwgNDM4MjgsIDQzODM3LCA0Mzg0NSwgNDM4NTEsIDQzODU4LCA0Mzg2NCwgCisgICAgNDM4NzAsIDQzODc1LCA0Mzg3OCwgNDM4ODAsIDQzODg3LCA0Mzg5NCwgNDM5MDAsIDQzOTA0LCA0MzkwNywgNDM5MTEsIAorICAgIDQzOTE1LCA0MzkxOSwgNDM5MjQsIDQzOTI4LCA0MzkzMiwgNDM5MzUsIDQzOTM5LCA0Mzk1MywgMjUxMjEsIDQzOTcyLCAKKyAgICA0Mzk4NSwgNDM5OTgsIDQ0MDExLCAyNTEzOSwgNDQwMjYsIDExNTIwLCA0NDA0MSwgNDQwNDcsIDQ0MDUxLCA0NDA2MSwgCisgICAgNDQwNjUsIDQ0MDY5LCA0NDA3MywgNDQwODAsIDQ0MDg1LCA0NDA4OSwgNDQwOTYsIDQ0MTAyLCA0NDEwNywgNDQxMTMsIAorICAgIDQ0MTIzLCA0NDEzNSwgNDQxNDYsIDQ0MTUxLCA0NDE1OCwgNDQxNjIsIDQ0MTY2LCA0NDE2OSwgMTc0OTAsIDM4NTQsIAorICAgIDQ0MTc3LCAxNzA4NywgNDQxOTAsIDQ0MTk3LCA0NDIwNCwgNDQyMDgsIDQ0MjEyLCA0NDIxNywgNDQyMjMsIDQ0MjI4LCAKKyAgICA0NDIzNCwgNDQyMzgsIDQ0MjQyLCA0NDI0NSwgNDQyNTAsIDQ0MjU0LCA0NDI1OSwgODEwNiwgMTAxMiwgNDQyNjQsIAorICAgIDQ0MjY4LCA0NDI3NCwgNDQyODMsIDQ0Mjg4LCA0NDI5NywgNDQzMDQsIDM5MjA5LCA0NDMxMCwgNDQzMTUsIDQ0MzE5LCAKKyAgICA0NDMyNCwgNDQzMzEsIDQ0MzM3LCA0NDM0MSwgNDQzNDQsIDQ0MzQ4LCA0NDM1MywgMTU5ODEsIDQ0MzYwLCA0NDM2NywgCisgICAgNDQzNzEsIDQ0Mzc0LCA0NDM3OSwgNDQzODQsIDQ0MzkwLCA0NDM5NSwgNDQ0MDAsIDQ0NDA0LCA0NDQwOSwgNDQ0MTksIAorICAgIDQ0NDI0LCA0NDQzMCwgNDQ0MzUsIDQ0NDQxLCA0NDQ0NiwgNDQ0NTIsIDQ0NDYyLCA0NDQ2NywgNDQ0NzIsIDQ0NDc2LCAKKyAgICA0NDQ4MSwgNzU4MiwgNzU5NCwgNDQ0ODYsIDQ0NDg5LCA0NDQ5NiwgNDQ1MDIsIDQ0NTExLCA5NTYwLCAzNzEzMSwgNDQ1MTksIAorICAgIDQ0NTIzLCA0NDUyNywgMzQ4MjAsIDQ0NTM1LCA0NDU0NiwgNDQ1NTQsIDM5NDA5LCA0NDU2MSwgNDQ1NjYsIDQ0NTcxLCAKKyAgICA0NDU4MiwgNDQ1ODksIDQ0NjAwLCAzNDg0NCwgMjMzNTEsIDQ0NjA4LCA5MzQsIDQ0NjEzLCAxNTAzMCwgNDQ2MTksIAorICAgIDMwNTAzLCA0NDYyNSwgNDQ2MzAsIDQ0NjQwLCA0NDY0OSwgNDQ2NTYsIDQ0NjYyLCA0NDY2NiwgNDQ2NjksIDQ0Njc2LCAKKyAgICA0NDY4MiwgNDQ2ODksIDQ0Njk1LCA0NDcwNSwgNDQ3MTMsIDQ0NzE5LCA0NDcyNSwgNDQ3MzAsIDQ0NzM0LCA0NDc0MSwgCisgICAgNDQ3NDYsIDQ0NzUyLCA0NDc1OSwgNDQ3NjUsIDQzOTIwLCA0NDc3MCwgNDQ3NzQsIDU3MSwgMTUxNDYsIDQ0NzgwLCAKKyAgICA0NDc4NSwgNDQ3ODgsIDQ0Nzk0LCA0NDgwMiwgMTM2MSwgNDQ4MDcsIDQ0ODExLCA0NDgxNiwgNDQ4MjEsIDQ0ODI2LCAKKyAgICA0NDgzMywgNDQ4MzcsIDQ0ODQyLCA0NDg0OCwgNDQ4NTIsIDM0MDQwLCA0NDg1NywgNDQ4NjIsIDQ0ODcxLCA0NDg3OCwgCisgICAgNDQ4ODgsIDQ0ODk0LCAzMDU0NywgNDQ5MTEsIDQ0OTIwLCA0NDkyOCwgNDQ5MzQsIDQ0OTM5LCA0NDk0NiwgNDQ5NTIsIAorICAgIDQ0OTYwLCA0NDk2OSwgNDQ5NzcsIDQ0OTgxLCA0NDk4NiwgNDQ5OTQsIDMxNTU2LCAzNDg1MywgNDUwMDAsIDQ1MDE5LCAKKyAgICAxNzM5MywgNDUwMzMsIDQ1MDQ5LCA0NTA2MywgNDUwNjksIDQ1MDc0LCA0NTA3OSwgNDUwODQsIDQ1MDkwLCAzNDg1OSwgCisgICAgNDUwOTUsIDQ1MDk4LCA0NTEwNSwgNDUxMTIsIDQ1MTE3LCA0NTEyMSwgNDEyLCAyOTg0LCA0NTEyOCwgNDUxMzMsIDQ1MTM4LCAKKyAgICAyOTcxNywgNDQ5NDksIDQ1MTQyLCA0NTE0NywgNDUxNTUsIDQ1MTU5LCA0NTE2MiwgNDUxNjcsIDQ1MTczLCA0NTE3OSwgCisgICAgNDUxODQsIDQ1MTg4LCAzMDYxNCwgNDUxOTEsIDQ1MTk2LCA0NTIwMCwgNDUyMDMsIDQ1MjA4LCA0NTIxMiwgNDUyMTcsIAorICAgIDQ1MjIyLCA0NTIyNiwgNDUyMzEsIDQ1MjM1LCA0NTIzOSwgNDUyNDMsIDIzMDQwLCAyMzA1MSwgNDUyNDgsIDQ1MjUzLCAKKyAgICA0NTI1OSwgNDUyNjQsIDQ1MjcwLCAyOTMwNSwgNDUyNzUsIDQ1Mjc5LCAyMzEzNywgMTc2OTYsIDQ1MjgyLCA0NTI4NywgCisgICAgNDUyOTIsIDQ1Mjk3LCA0NTMwMiwgNDUzMDcsIDQ1MzEyLCA0NTMxNywgNDY1LCA2OCwgMzQwNTMsIDM0MDU4LCAzNDA2MywgCisgICAgMzQwNjksIDM0MDc0LCAzNDA3OSwgNDUzMjIsIDM0MDgzLCA0NTMyNiwgNDUzMzAsIDQ1MzM0LCAzNDA4OCwgMzQwOTQsIAorICAgIDQ1MzQ4LCAzNDEwNSwgMzQxMTAsIDQ1MzU2LCA0NTM2MSwgMzQxMTYsIDQ1MzY2LCA0NTM3MSwgNDUzNzYsIDQ1MzgxLCAKKyAgICA0NTM5MCwgNDUzOTYsIDQ1NDAyLCA0NTQwOCwgMzQxMzMsIDQ1NDIxLCA0NTQzMCwgNDU0MzYsIDM0MTM3LCA0NTQ0MCwgCisgICAgMzQxNDIsIDQ1NDQ1LCAzNDE0NywgMzQxNTIsIDQ1NDQ4LCA0NTQ1MywgNDU0NTcsIDQ1NDYzLCAzMzY4MSwgNDU0NzAsIAorICAgIDE0OTA0LCA0NTQ3NywgNDU0ODIsIDM0MTU3LCA0NTQ4NiwgNDU0OTEsIDQ1NDk2LCA0NTUwMSwgNDU1MDUsIDQ1NTEwLCAKKyAgICA0NTUxNSwgNDU1MjEsIDQ1NTI2LCA0NTUzMSwgNDU1MzcsIDQ1NTQzLCA0NTU0OCwgNDU1NTIsIDQ1NTU3LCA0NTU2MiwgCisgICAgNDU1NjcsIDQ1NTcxLCA0NTU3NiwgNDU1ODEsIDQ1NTg2LCA0NTU5MiwgNDU1OTgsIDQ1NjA0LCA0NTYwOSwgNDU2MTMsIAorICAgIDQ1NjE4LCA0NTYyMiwgMzQxNjEsIDM0MTY2LCAzNDE3MSwgNDU2MjYsIDQ1NjMwLCA0NTYzNSwgNDU2MzksIDM0MTc2LCAKKyAgICAzNDE4MiwgMzQxODgsIDM0MjAwLCA0NTY1MSwgMjgzMTQsIDQ1NjU1LCA0NTY2MCwgNDU2NjQsIDQ1NjY5LCA0NTY3NiwgCisgICAgNDU2ODEsIDQ1Njg2LCA0NTY5MSwgNDU2OTUsIDQ1Njk5LCA0NTcwOSwgNDU3MTQsIDQ1NzE5LCA0NTcyMywgNDU3MjcsIAorICAgIDQ1NzMwLCA0NTczOCwgMzQyNDgsIDQ1NzQzLCAxNDQ2LCA0NTc0OSwgNDU3NTQsIDQ1NzYwLCA0NTc2OCwgNDU3NzIsIAorICAgIDQ1NzgxLCA0NTc4OSwgNDU3OTMsIDQ1Nzk3LCA0NTgwNSwgNDU4MTEsIDQ1ODE5LCA0NTgzNSwgNDU4MzksIDQ1ODQzLCAKKyAgICA0NTg0NywgNDU4NTIsIDQ1ODU4LCA0NTg3MywgMzQyODUsIDE3NDUsIDEzMzA4LCA0NTg3NywgMTM0MCwgMTM1NSwgNDU4ODksIAorICAgIDQ1ODk3LCA0NTkwNCwgNDU5MDksIDQ1OTE2LCA0NTkyMSwgMTAwMTIsIDEwOTYsIDI1MjksIDExMzExLCA0NTkyOCwgOTkxMCwgCisgICAgNDU5MzMsIDQ1OTM2LCA0NTk0NSwgMTI0OCwgNDU5NTAsIDQ0MDg2LCA0NTk1NywgNDU5NjYsIDQ1OTcxLCA0NTk3NSwgCisgICAgNDU5ODMsIDI0NTI2LCAyNTgxLCA0NTk5MCwgMTE3NzYsIDQ2MDAwLCA0NjAwNiwgMjM1NiwgMjM2NiwgNDYwMTUsIDQ2MDI0LCAKKyAgICA0NjAzNCwgNDYwNDUsIDMzNjUsIDM3NDg1LCA0NjA1MCwgMTEzNzUsIDQwMjQsIDE4NDAwLCAxMjUzLCA0NjA1NCwgNDYwNjIsIAorICAgIDQ2MDY5LCA0NjA3NCwgNDYwNzgsIDQ2MDgyLCAyNjAxOCwgNDQzNTUsIDExNDAyLCA0NjA5MCwgNDYwOTksIDQ2MTA4LCAKKyAgICA0NjExNiwgNDYxMjMsIDQ2MTM0LCA0NjEzOSwgNDYxNTIsIDQ2MTY1LCA0NjE3NywgNDYxODksIDQ2MjAxLCA0NjIxMiwgCisgICAgNDYyMjUsIDQ2MjM2LCA0NjI0NywgNDYyNTcsIDQ2MjY1LCA0NjI3MywgNDYyODUsIDQ2Mjk3LCA0NjMwOCwgNDYzMTcsIAorICAgIDQ2MzI1LCA0NjMzMiwgNDYzNDQsIDQ2MzUxLCA0NjM1NywgNDYzNjYsIDQ2MzczLCA0NjM4NiwgNDYzOTEsIDQ2NDAxLCAKKyAgICA0NjQwNiwgNDY0MTIsIDQ2NDE3LCA0MTUyOCwgNDY0MjEsIDQ2NDI4LCA0NjQzMiwgNDY0MzksIDQ2NDQ3LCA0NjQ1NCwgCisgICAgMjU0MiwgNDY0NjEsIDQ2NDcyLCA0NjQ4MiwgNDY0OTEsIDQ2NDk5LCA0NjUwOSwgNDY1MTcsIDQ2NTI2LCA0NjUzNiwgCisgICAgNDY1NDUsIDQ2NTUwLCA0NjU1NiwgNDY1NjIsIDM4OTgsIDQ2NTczLCA0NjU4MywgNDY1OTIsIDQ2NjAxLCA0NjYwOSwgCisgICAgNDY2MTksIDQ2NjI3LCA0NjYzNiwgNDY2NDEsIDQ2NjQ2LCA0NjY1MSwgMTY3NSwgNDcsIDQ2NjU5LCA0NjY2NywgNDY2NzgsIAorICAgIDQ2Njg5LCAxODAzOSwgNDY2OTksIDQ2NzAzLCA0NjcxMCwgNDY3MTYsIDQ2NzIxLCA0NjcyNSwgNDY3MzYsIDQ2NzQ2LCAKKyAgICA0Njc1NSwgNDY3NjYsIDE4NDM5LCAxODQ0NCwgNDY3NzEsIDQ2NzgwLCA0Njc4NSwgNDY3OTUsIDQ2ODAwLCA0NjgwOCwgCisgICAgNDY4MTYsIDQ2ODIzLCA0NjgyOSwgMTYzNywgMjgzLCA0NjgzMywgNDY4MzksIDQ2ODQ0LCA0Njg0NywgMjEyOCwgNDQyMDksIAorICAgIDQ2ODU1LCA0Njg1OSwgNDY4NjIsIDE0OTEsIDQ2ODY4LCAxNTMzMSwgMTI1OCwgNDY4NzMsIDQ2ODg2LCA0NjkwMCwgMjY3MSwgCisgICAgNDY5MTgsIDQ2OTMwLCA0Njk0MiwgMjY4NSwgMjcwMiwgNDY5NTYsIDQ2OTY5LCAyNzE3LCA0Njk4MywgNDY5OTUsIDI3MzIsIAorICAgIDQ3MDA5LCAxMjY0LCAxMjcwLCAxMjc2LCAxMTY4MiwgNDcwMTQsIDQ3MDE5LCA0NzAyNCwgNDcwMjgsIDQ3MDQzLCA0NzA1OCwgCisgICAgNDcwNzMsIDQ3MDg4LCA0NzEwMywgNDcxMTgsIDQ3MTMzLCA0NzE0OCwgNDcxNjMsIDQ3MTc4LCA0NzE5MywgNDcyMDgsIAorICAgIDQ3MjIzLCA0NzIzOCwgNDcyNTMsIDQ3MjY4LCA0NzI4MywgNDcyOTgsIDQ3MzEzLCA0NzMyOCwgNDczNDMsIDQ3MzU4LCAKKyAgICA0NzM3MywgNDczODgsIDQ3NDAzLCA0NzQxOCwgNDc0MzMsIDQ3NDQ4LCA0NzQ2MywgNDc0NzgsIDQ3NDkzLCA0NzUwOCwgCisgICAgNDc1MjMsIDQ3NTM4LCA0NzU1MywgNDc1NjgsIDQ3NTgzLCA0NzU5OCwgNDc2MTMsIDQ3NjI4LCA0NzY0MywgNDc2NTgsIAorICAgIDQ3NjczLCA0NzY4OCwgNDc3MDMsIDQ3NzE4LCA0NzczMywgNDc3NDgsIDQ3NzYzLCA0Nzc3OCwgNDc3OTMsIDQ3ODA4LCAKKyAgICA0NzgyMywgNDc4MzgsIDQ3ODUzLCA0Nzg2OCwgNDc4ODMsIDQ3ODk4LCA0NzkxMywgNDc5MjgsIDQ3OTQzLCA0Nzk1OCwgCisgICAgNDc5NzMsIDQ3OTg4LCA0ODAwMywgNDgwMTgsIDQ4MDMzLCA0ODA0OCwgNDgwNjMsIDQ4MDc4LCA0ODA5MywgNDgxMDgsIAorICAgIDQ4MTIzLCA0ODEzOCwgNDgxNTMsIDQ4MTY4LCA0ODE4MywgNDgxOTgsIDQ4MjEzLCA0ODIyOCwgNDgyNDMsIDQ4MjU4LCAKKyAgICA0ODI3MywgNDgyODgsIDQ4MzAzLCA0ODMxOCwgNDgzMzMsIDQ4MzQ4LCA0ODM2MywgNDgzNzgsIDQ4MzkzLCA0ODQwOCwgCisgICAgNDg0MjMsIDQ4NDM4LCA0ODQ1MywgNDg0NjgsIDQ4NDgzLCA0ODQ5OCwgNDg1MTMsIDQ4NTI4LCA0ODU0MywgNDg1NTgsIAorICAgIDQ4NTczLCA0ODU4OCwgNDg2MDMsIDQ4NjE4LCA0ODYzMywgNDg2NDgsIDQ4NjYzLCA0ODY3OCwgNDg2OTMsIDQ4NzA4LCAKKyAgICA0ODcyMywgNDg3MzgsIDQ4NzUzLCA0ODc2OCwgNDg3ODMsIDQ4Nzk4LCA0ODgxMywgNDg4MjgsIDQ4ODQzLCA0ODg1OCwgCisgICAgNDg4NzMsIDQ4ODg4LCA0ODkwMywgNDg5MTgsIDQ4OTMzLCA0ODk0OCwgNDg5NjMsIDQ4OTc4LCA0ODk5MywgNDkwMDgsIAorICAgIDQ5MDIzLCA0OTAzOCwgNDkwNTMsIDQ5MDY4LCA0OTA4MywgNDkwOTgsIDQ5MTEzLCA0OTEyOCwgNDkxNDMsIDQ5MTU4LCAKKyAgICA0OTE3MywgNDkxODgsIDQ5MjAzLCA0OTIxOCwgNDkyMzMsIDQ5MjQ4LCA0OTI2MywgNDkyNzgsIDQ5MjkzLCA0OTMwOCwgCisgICAgNDkzMjMsIDQ5MzM4LCA0OTM1MywgNDkzNjgsIDQ5MzgzLCA0OTM5OCwgNDk0MTMsIDQ5NDI4LCA0OTQ0MywgNDk0NTgsIAorICAgIDQ5NDczLCA0OTQ4OCwgNDk1MDMsIDQ5NTE4LCA0OTUzMywgNDk1NDgsIDQ5NTYzLCA0OTU3OCwgNDk1OTMsIDQ5NjA4LCAKKyAgICA0OTYyMywgNDk2MzgsIDQ5NjUzLCA0OTY2OCwgNDk2ODMsIDQ5Njk4LCA0OTcxMywgNDk3MjgsIDQ5NzQzLCA0OTc1OCwgCisgICAgNDk3NzMsIDQ5Nzg4LCA0OTgwMywgNDk4MTgsIDQ5ODMzLCA0OTg0OCwgNDk4NjMsIDQ5ODc4LCA0OTg5MywgNDk5MDgsIAorICAgIDQ5OTIzLCA0OTkzOCwgNDk5NTMsIDQ5OTY4LCA0OTk4MywgNDk5OTgsIDUwMDEzLCA1MDAyOCwgNTAwNDMsIDUwMDU4LCAKKyAgICA1MDA3MywgNTAwODgsIDUwMTAzLCA1MDExOCwgNTAxMzMsIDUwMTQ4LCA1MDE2MywgNTAxNzgsIDUwMTkzLCA1MDIwOCwgCisgICAgNTAyMjMsIDUwMjM4LCA1MDI1MywgNTAyNjgsIDUwMjgzLCA1MDI5OCwgNTAzMTMsIDUwMzI4LCA1MDM0MywgNTAzNTgsIAorICAgIDUwMzczLCA1MDM4OCwgNTA0MDMsIDUwNDE4LCA1MDQzMywgNTA0NDgsIDUwNDYzLCA1MDQ3OCwgNTA0OTMsIDUwNTA4LCAKKyAgICA1MDUyMywgNTA1MzgsIDUwNTUzLCA1MDU2OCwgNTA1ODMsIDUwNTk4LCA1MDYxMywgNTA2MjgsIDUwNjQzLCA1MDY1OCwgCisgICAgNTA2NzMsIDUwNjg4LCA1MDcwMywgNTA3MTgsIDUwNzMzLCA1MDc0OCwgNTA3NjMsIDUwNzc4LCA1MDc5MywgNTA4MDgsIAorICAgIDUwODIzLCA1MDgzOCwgNTA4NTMsIDUwODY4LCA1MDg4MywgNTA4OTgsIDUwOTEzLCA1MDkyOCwgNTA5NDMsIDUwOTU4LCAKKyAgICA1MDk3MywgNTA5ODgsIDUxMDAzLCA1MTAxOCwgNTEwMzMsIDUxMDQ4LCA1MTA2MywgNTEwNzgsIDUxMDkzLCA1MTEwOCwgCisgICAgNTExMjMsIDUxMTM4LCA1MTE1MywgNTExNjgsIDUxMTgzLCA1MTE5OCwgNTEyMTMsIDUxMjI4LCA1MTI0MywgNTEyNTgsIAorICAgIDUxMjczLCA1MTI4OCwgNTEzMDMsIDUxMzE4LCA1MTMzMywgNTEzNDgsIDUxMzYzLCA1MTM3OCwgNTEzOTMsIDUxNDA4LCAKKyAgICA1MTQyMywgNTE0MzgsIDUxNDUzLCA1MTQ2OCwgNTE0ODMsIDUxNDk4LCA1MTUxMywgNTE1MjgsIDUxNTQzLCA1MTU1OCwgCisgICAgNTE1NzMsIDUxNTg4LCA1MTYwMywgNTE2MTgsIDUxNjMzLCA1MTY0OCwgNTE2NjMsIDUxNjc4LCA1MTY5MywgNTE3MDgsIAorICAgIDUxNzIzLCA1MTczOCwgNTE3NTMsIDUxNzY4LCA1MTc4MywgNTE3OTgsIDUxODEzLCA1MTgyOCwgNTE4NDMsIDUxODU4LCAKKyAgICA1MTg3MywgNTE4ODgsIDUxOTAzLCA1MTkxOCwgNTE5MzMsIDUxOTQ4LCA1MTk2MywgNTE5NzgsIDUxOTkzLCA1MjAwOCwgCisgICAgNTIwMjMsIDUyMDM4LCA1MjA1MywgNTIwNjgsIDUyMDgzLCA1MjA5OCwgNTIxMTMsIDUyMTI4LCA1MjE0MywgNTIxNTgsIAorICAgIDUyMTczLCA1MjE4OCwgNTIyMDMsIDUyMjE4LCA1MjIzMywgNTIyNDgsIDUyMjYzLCA1MjI3OCwgNTIyOTMsIDUyMzA4LCAKKyAgICA1MjMyMywgNTIzMzgsIDUyMzUzLCA1MjM2OCwgNTIzODMsIDUyMzk4LCA1MjQxMywgNTI0MjgsIDUyNDQzLCA1MjQ1OCwgCisgICAgNTI0NzMsIDUyNDg4LCA1MjUwMywgNTI1MTgsIDUyNTMzLCA1MjU0OCwgNTI1NjMsIDUyNTc4LCA1MjU5MywgNTI2MDgsIAorICAgIDUyNjIzLCA1MjYzOCwgNTI2NTMsIDUyNjY4LCA1MjY4MywgNTI2OTgsIDUyNzEzLCA1MjcyOCwgNTI3NDMsIDUyNzU4LCAKKyAgICA1Mjc3MywgNTI3ODgsIDUyODAzLCA1MjgxOCwgNTI4MzMsIDUyODQ4LCA1Mjg2MywgNTI4NzgsIDUyODkzLCA1MjkwOCwgCisgICAgNTI5MjMsIDUyOTM4LCA1Mjk1MywgNTI5NjgsIDUyOTgzLCA1Mjk5OCwgNTMwMTMsIDUzMDI4LCA1MzA0MywgNTMwNTgsIAorICAgIDUzMDczLCA1MzA4OCwgNTMxMDMsIDUzMTE4LCA1MzEzMywgNTMxNDgsIDUzMTYzLCA1MzE3OCwgNTMxOTMsIDUzMjA4LCAKKyAgICA1MzIyMywgNTMyMzgsIDUzMjUzLCA1MzI2OCwgNTMyODMsIDUzMjk4LCA1MzMxMywgNTMzMjgsIDUzMzQzLCA1MzM1OCwgCisgICAgNTMzNzMsIDUzMzg4LCA1MzQwMywgNTM0MTgsIDUzNDMzLCA1MzQ0OCwgNTM0NjMsIDUzNDc4LCA1MzQ5MywgNTM1MDgsIAorICAgIDUzNTIzLCA1MzUzOCwgNTM1NTMsIDUzNTY4LCA1MzU4MywgNTM1OTgsIDUzNjEzLCA1MzYyOCwgNTM2NDMsIDUzNjU4LCAKKyAgICA1MzY3MywgNTM2ODgsIDUzNzAzLCA1MzcxOCwgNTM3MzMsIDUzNzQ4LCA1Mzc2MywgNTM3NzgsIDUzNzkzLCA1MzgwOCwgCisgICAgNTM4MjMsIDUzODM4LCA1Mzg1MywgNTM4NjgsIDUzODgzLCA1Mzg5OCwgNTM5MTMsIDUzOTI4LCA1Mzk0MywgNTM5NTgsIAorICAgIDUzOTczLCA1Mzk4OCwgNTQwMDMsIDU0MDE4LCA1NDAzMywgNTQwNDgsIDU0MDYzLCA1NDA3OCwgNTQwOTMsIDU0MTA4LCAKKyAgICA1NDEyMywgNTQxMzgsIDU0MTUzLCA1NDE2OCwgNTQxODMsIDU0MTk4LCA1NDIxMywgNTQyMjgsIDU0MjQzLCA1NDI1OCwgCisgICAgNTQyNzMsIDU0Mjg4LCA1NDMwMywgNTQzMTgsIDU0MzMzLCA1NDM0OCwgNTQzNjMsIDU0Mzc4LCA1NDM5MywgNTQ0MDgsIAorICAgIDU0NDIzLCA1NDQzOCwgNTQ0NTMsIDU0NDY4LCA1NDQ4MywgNTQ0OTgsIDU0NTEzLCA1NDUyOCwgNTQ1NDMsIDU0NTU4LCAKKyAgICA1NDU3MywgNTQ1ODgsIDU0NjAzLCA1NDYxOCwgNTQ2MzMsIDU0NjQ4LCA1NDY2MywgNTQ2NzgsIDU0NjkzLCA1NDcwOCwgCisgICAgNTQ3MjMsIDU0NzM4LCA1NDc1MywgNTQ3NjgsIDU0NzgzLCA1NDc5OCwgNTQ4MTMsIDU0ODI4LCA1NDg0MywgNTQ4NTksIAorICAgIDU0ODc1LCA1NDg5MSwgNTQ5MDcsIDU0OTIzLCA1NDkzOSwgNTQ5NTUsIDU0OTcxLCA1NDk4NywgNTUwMDMsIDU1MDE5LCAKKyAgICA1NTAzNSwgNTUwNTEsIDU1MDY3LCA1NTA4MywgNTUwOTksIDU1MTE1LCA1NTEzMSwgNTUxNDcsIDU1MTYzLCA1NTE3OSwgCisgICAgNTUxOTUsIDU1MjExLCA1NTIyNywgNTUyNDMsIDU1MjU5LCA1NTI3NSwgNTUyOTEsIDU1MzA3LCA1NTMyMywgNTUzMzksIAorICAgIDU1MzU1LCA1NTM3MSwgNTUzODcsIDU1NDAzLCA1NTQxOSwgNTU0MzUsIDU1NDUxLCA1NTQ2NywgNTU0ODMsIDU1NDk5LCAKKyAgICA1NTUxNSwgNTU1MzEsIDU1NTQ3LCA1NTU2MywgNTU1NzksIDU1NTk1LCA1NTYxMSwgNTU2MjcsIDU1NjQzLCA1NTY1OSwgCisgICAgNTU2NzUsIDU1NjkxLCA1NTcwNywgNTU3MjMsIDU1NzM5LCA1NTc1NSwgNTU3NzEsIDU1Nzg3LCA1NTgwMywgNTU4MTksIAorICAgIDU1ODM1LCA1NTg1MSwgNTU4NjcsIDU1ODgzLCA1NTg5OSwgNTU5MTUsIDU1OTMxLCA1NTk0NywgNTU5NjMsIDU1OTc5LCAKKyAgICA1NTk5NSwgNTYwMTEsIDU2MDI3LCA1NjA0MywgNTYwNTksIDU2MDc1LCA1NjA5MSwgNTYxMDcsIDU2MTIzLCA1NjEzOSwgCisgICAgNTYxNTUsIDU2MTcxLCA1NjE4NywgNTYyMDMsIDU2MjE5LCA1NjIzNSwgNTYyNTEsIDU2MjY3LCA1NjI4MywgNTYyOTksIAorICAgIDU2MzE1LCA1NjMzMSwgNTYzNDcsIDU2MzYzLCA1NjM3OSwgNTYzOTUsIDU2NDExLCA1NjQyNywgNTY0NDMsIDU2NDU5LCAKKyAgICA1NjQ3NSwgNTY0OTEsIDU2NTA3LCA1NjUyMywgNTY1MzksIDU2NTU1LCA1NjU3MSwgNTY1ODcsIDU2NjAzLCA1NjYxOSwgCisgICAgNTY2MzUsIDU2NjUxLCA1NjY2NywgNTY2ODMsIDU2Njk5LCA1NjcxNSwgNTY3MzEsIDU2NzQ3LCA1Njc2MywgNTY3NzksIAorICAgIDU2Nzk1LCA1NjgxMSwgNTY4MjcsIDU2ODQzLCA1Njg1OSwgNTY4NzUsIDU2ODkxLCA1NjkwNywgNTY5MjMsIDU2OTM5LCAKKyAgICA1Njk1NSwgNTY5NzEsIDU2OTg3LCA1NzAwMywgNTcwMTksIDU3MDM1LCA1NzA1MSwgNTcwNjcsIDU3MDgzLCA1NzA5OSwgCisgICAgNTcxMTUsIDU3MTMxLCA1NzE0NywgNTcxNjMsIDU3MTc5LCA1NzE5NSwgNTcyMTEsIDU3MjI3LCA1NzI0MywgNTcyNTksIAorICAgIDU3Mjc1LCA1NzI5MSwgNTczMDcsIDU3MzIzLCA1NzMzOSwgNTczNTUsIDU3MzcxLCA1NzM4NywgNTc0MDMsIDU3NDE5LCAKKyAgICA1NzQzNSwgNTc0NTEsIDU3NDY3LCA1NzQ4MywgNTc0OTksIDU3NTE1LCA1NzUzMSwgNTc1NDcsIDU3NTYzLCA1NzU3OSwgCisgICAgNTc1OTUsIDU3NjExLCA1NzYyNywgNTc2NDMsIDU3NjU5LCA1NzY3NSwgNTc2OTEsIDU3NzA3LCA1NzcyMywgNTc3MzksIAorICAgIDU3NzU1LCA1Nzc3MSwgNTc3ODcsIDU3ODAzLCA1NzgxOSwgNTc4MzUsIDU3ODUxLCA1Nzg2NywgNTc4ODMsIDU3ODk5LCAKKyAgICA1NzkxNSwgNTc5MzEsIDU3OTQ3LCA1Nzk2MywgNTc5NzksIDU3OTk1LCA1ODAxMSwgNTgwMjcsIDU4MDQzLCA1ODA1OSwgCisgICAgNTgwNzUsIDU4MDkxLCA1ODEwNywgNTgxMjMsIDU4MTM5LCA1ODE1NSwgNTgxNzEsIDU4MTg3LCA1ODIwMywgNTgyMTksIAorICAgIDU4MjM1LCA1ODI1MSwgNTgyNjcsIDU4MjgzLCA1ODI5OSwgNTgzMTUsIDU4MzMxLCA1ODM0NywgNTgzNjMsIDU4Mzc5LCAKKyAgICA1ODM5NSwgNTg0MTEsIDU4NDI3LCA1ODQ0MywgNTg0NTksIDU4NDc1LCA1ODQ5MSwgNTg1MDcsIDU4NTIzLCA1ODUzOSwgCisgICAgNTg1NTUsIDU4NTcxLCA1ODU4NywgNTg2MDMsIDU4NjE5LCA1ODYzNSwgNTg2NTEsIDU4NjY3LCA1ODY4MywgNTg2OTksIAorICAgIDU4NzE1LCA1ODczMSwgNTg3NDcsIDU4NzYzLCA1ODc3OSwgNTg3OTUsIDU4ODExLCA1ODgyNywgNTg4NDMsIDU4ODU5LCAKKyAgICA1ODg3NSwgNTg4OTEsIDU4OTA3LCA1ODkyMywgNTg5MzksIDU4OTU1LCA1ODk3MSwgNTg5ODcsIDU5MDAzLCA1OTAxOSwgCisgICAgNTkwMzUsIDU5MDUxLCA1OTA2NywgNTkwODMsIDU5MDk5LCA1OTExNSwgNTkxMzEsIDU5MTQ3LCA1OTE2MywgNTkxNzksIAorICAgIDU5MTk1LCA1OTIxMSwgNTkyMjcsIDU5MjQzLCA1OTI1OSwgNTkyNzUsIDU5MjkxLCA1OTMwNywgNTkzMjMsIDU5MzM5LCAKKyAgICA1OTM1NSwgNTkzNzEsIDU5Mzg3LCA1OTQwMywgNTk0MTksIDU5NDM1LCA1OTQ1MSwgNTk0NjcsIDU5NDgzLCA1OTQ5OSwgCisgICAgNTk1MTUsIDU5NTMxLCA1OTU0NywgNTk1NjMsIDU5NTc5LCA1OTU5NSwgNTk2MTEsIDU5NjI3LCA1OTY0MywgNTk2NTksIAorICAgIDU5Njc1LCA1OTY5MSwgNTk3MDcsIDU5NzIzLCA1OTczOSwgNTk3NTUsIDU5NzcxLCA1OTc4NywgNTk4MDMsIDU5ODE5LCAKKyAgICA1OTgzNSwgNTk4NTEsIDU5ODY3LCA1OTg4MywgNTk4OTksIDU5OTE1LCA1OTkzMSwgNTk5NDcsIDU5OTYzLCA1OTk3OSwgCisgICAgNTk5OTUsIDYwMDExLCA2MDAyNywgNjAwNDMsIDYwMDU5LCA2MDA3NSwgNjAwOTEsIDYwMTA3LCA2MDEyMywgNjAxMzksIAorICAgIDYwMTU1LCA2MDE3MSwgNjAxODcsIDYwMjAzLCA2MDIxOSwgNjAyMzUsIDYwMjUxLCA2MDI2NywgNjAyODMsIDYwMjk5LCAKKyAgICA2MDMxNSwgNjAzMzEsIDYwMzQ3LCA2MDM2MywgNjAzNzksIDYwMzk1LCA2MDQxMSwgNjA0MjcsIDYwNDQzLCA2MDQ1OSwgCisgICAgNjA0NzUsIDYwNDkxLCA2MDUwNywgNjA1MjMsIDYwNTM5LCA2MDU1NSwgNjA1NzEsIDYwNTg3LCA2MDYwMywgNjA2MTksIAorICAgIDYwNjM1LCA2MDY1MSwgNjA2NjcsIDYwNjgzLCA2MDY5OSwgNjA3MTUsIDYwNzMxLCA2MDc0NywgNjA3NjMsIDYwNzc5LCAKKyAgICA2MDc5NSwgNjA4MTEsIDYwODI3LCA2MDg0MywgNjA4NTksIDYwODc1LCA2MDg5MSwgNjA5MDcsIDYwOTIzLCA2MDkzOSwgCisgICAgNjA5NTUsIDYwOTcxLCA2MDk4NywgNjEwMDMsIDYxMDE5LCA2MTAzNSwgNjEwNTEsIDYxMDY3LCA2MTA4MywgNjEwOTksIAorICAgIDYxMTE1LCA2MTEzMSwgNjExNDcsIDYxMTYzLCA2MTE3OSwgNjExOTUsIDYxMjExLCA2MTIyNywgNjEyNDMsIDYxMjU5LCAKKyAgICA2MTI3NSwgNjEyOTEsIDYxMzA3LCA2MTMyMywgNjEzMzksIDYxMzU1LCA2MTM3MSwgNjEzODcsIDYxNDAzLCA2MTQxOSwgCisgICAgNjE0MzUsIDYxNDUxLCA2MTQ2NywgNjE0ODMsIDYxNDk5LCA2MTUxNSwgNjE1MzEsIDYxNTQ3LCA2MTU2MywgNjE1NzksIAorICAgIDYxNTk1LCA2MTYxMSwgNjE2MjcsIDYxNjQzLCA2MTY1OSwgNjE2NzUsIDYxNjkxLCA2MTcwNywgNjE3MjMsIDYxNzM5LCAKKyAgICA2MTc1NSwgNjE3NzEsIDYxNzg3LCA2MTgwMywgNjE4MTksIDYxODM1LCA2MTg1MSwgNjE4NjcsIDYxODgzLCA2MTg5OSwgCisgICAgNjE5MTUsIDYxOTMxLCA2MTk0NywgNjE5NjMsIDYxOTc5LCA2MTk5NSwgNjIwMTEsIDYyMDI3LCA2MjA0MywgNjIwNTksIAorICAgIDYyMDc1LCA2MjA5MSwgNjIxMDcsIDYyMTIzLCA2MjEzOSwgNjIxNTUsIDYyMTcxLCA2MjE4NywgNjIyMDMsIDYyMjE5LCAKKyAgICA2MjIzNSwgNjIyNTEsIDYyMjY3LCA2MjI4MywgNjIyOTksIDYyMzE1LCA2MjMzMSwgNjIzNDcsIDYyMzYzLCA2MjM3OSwgCisgICAgNjIzOTUsIDYyNDExLCA2MjQyNywgNjI0NDMsIDYyNDU5LCA2MjQ3NSwgNjI0OTEsIDYyNTA3LCA2MjUyMywgNjI1MzksIAorICAgIDYyNTU1LCA2MjU3MSwgNjI1ODcsIDYyNjAzLCA2MjYxOSwgNjI2MzUsIDYyNjUxLCA2MjY2NywgNjI2ODMsIDYyNjk5LCAKKyAgICA2MjcxNSwgNjI3MzEsIDYyNzQ3LCA2Mjc2MywgNjI3NzksIDYyNzk1LCA2MjgxMSwgNjI4MjcsIDYyODQzLCA2Mjg1OSwgCisgICAgNjI4NzUsIDYyODkxLCA2MjkwNywgNjI5MjMsIDYyOTM5LCA2Mjk1NSwgNjI5NzEsIDYyOTg3LCA2MzAwMywgNjMwMTksIAorICAgIDYzMDM1LCA2MzA1MSwgNjMwNjcsIDYzMDgzLCA2MzA5OSwgNjMxMTUsIDYzMTMxLCA2MzE0NywgNjMxNjMsIDYzMTc5LCAKKyAgICA2MzE5NSwgNjMyMTEsIDYzMjI3LCA2MzI0MywgNjMyNTksIDYzMjc1LCA2MzI5MSwgNjMzMDcsIDYzMzIzLCA2MzMzOSwgCisgICAgNjMzNTUsIDYzMzcxLCA2MzM4NywgNjM0MDMsIDYzNDE5LCA2MzQzNSwgNjM0NTEsIDYzNDY3LCA2MzQ4MywgNjM0OTksIAorICAgIDYzNTE1LCA2MzUzMCwgMTYxNTIsIDYzNTM5LCA2MzU0NCwgNjM1NTAsIDYzNTU2LCA2MzU2NiwgNjM1NzQsIDE2MzkzLCAKKyAgICAxNjk5OSwgMTA4MzEsIDYzNTg3LCAxNDk5LCAxNTAzLCA2MzU5NSwgMzk3OCwgMjk4MzIsIDc1MzYsIDYzNjAxLCA2MzYwNiwgCisgICAgNjM2MTEsIDYzNjE2LCA2MzYyMSwgNjM2MjcsIDYzNjMyLCA2MzYzOCwgNjM2NDMsIDYzNjQ5LCA2MzY1NCwgNjM2NTksIAorICAgIDYzNjY0LCA2MzY2OSwgNjM2NzUsIDYzNjgwLCA2MzY4NSwgNjM2OTAsIDYzNjk1LCA2MzcwMCwgNjM3MDUsIDYzNzEwLCAKKyAgICA2MzcxNiwgNjM3MjEsIDYzNzI3LCA2MzczNCwgMjU4NSwgNjM3MzksIDYzNzQ1LCA4OTU3LCA2Mzc0OSwgNjM3NTQsIAorICAgIDYzNzYxLCA2Mzc2OSwgNjUsIDYzNzczLCA2Mzc3OSwgNjM3ODQsIDYzNzg5LCA2Mzc5MywgNjM3OTgsIDYzODAyLCA2MzgwNiwgCisgICAgMTE3MTksIDYzODEwLCA2MzgyMCwgNjM4MzMsIDYzODQ0LCA2Mzg1NywgNjM4NjQsIDYzODcwLCAxMTIzNiwgNjM4NzgsIAorICAgIDYzODgzLCA2Mzg4OSwgNjM4OTUsIDYzOTAxLCA2MzkwNiwgNjM5MTEsIDYzOTE2LCA2MzkyMSwgNjM5MjUsIDYzOTMwLCAKKyAgICA2MzkzNSwgNjM5NDAsIDYzOTQ2LCA2Mzk1MiwgNjM5NTgsIDYzOTYzLCA2Mzk2NywgNjM5NzIsIDYzOTc3LCA2Mzk4MSwgCisgICAgNjM5ODYsIDYzOTkxLCA2Mzk5NiwgNjQwMDAsIDExNzM1LCAxMTc0NiwgMTE3NTEsIDE1NDIsIDY0MDA0LCA2NDAxMCwgCisgICAgMTU0NywgMTc4OTAsIDY0MDE1LCAxNzg5OSwgNjQwMjAsIDY0MDI2LCA2NDAzMSwgMTU3OCwgNjQwMzcsIDE1ODQsIDE1OTAsIAorICAgIDExNzgxLCA2NDA0MiwgNjQwNTEsIDY0MDU5LCA2NDA2NywgNjQwNzQsIDY0MDc4LCA2NDA4MiwgNjQwODgsIDY0MDkzLCAKKyAgICAzMzcyMSwgNjQwOTgsIDY0MTA1LCA2NDExMiwgNjQxMTcsIDY0MTIxLCA2NDEyNSwgNjQxMzQsIDE1OTUsIDE4MDA4LCAKKyAgICA2NDEzOSwgNjQxNDMsIDE4MDE5LCAxMTI2LCA2NDE0NywgNjQxNTQsIDY0MTU5LCA2NDE2MywgMTgwNTUsIDE1OTksIAorICAgIDQxNjg1LCA2NDE2NiwgNjQxNzEsIDY0MTgxLCA2NDE5MCwgNjQxOTUsIDY0MTk5LCA2NDIwNSwgMTYwNCwgNDQzMTYsIAorICAgIDY0MjEwLCA2NDIxOSwgNjQyMjUsIDY0MjMwLCA2NDIzNSwgMTE5OTIsIDExOTk4LCA2NDI0MSwgNjQyNTMsIDY0MjcwLCAKKyAgICA2NDI4NywgNjQzMDQsIDY0MzIxLCA2NDMzOCwgNjQzNTUsIDY0MzcyLCA2NDM4OSwgNjQ0MDYsIDY0NDIzLCA2NDQ0MCwgCisgICAgNjQ0NTcsIDY0NDc0LCA2NDQ5MSwgNjQ1MDgsIDY0NTI1LCA2NDU0MiwgNjQ1NTksIDY0NTc2LCA2NDU5MywgNjQ2MTAsIAorICAgIDY0NjI3LCA2NDY0NCwgNjQ2NjEsIDY0Njc4LCA2NDY5NSwgNjQ3MTIsIDY0NzI5LCA2NDc0NiwgNjQ3NjMsIDY0NzgwLCAKKyAgICA2NDc5NywgNjQ4MTQsIDY0ODMxLCA2NDg0OCwgNjQ4NjUsIDY0ODgyLCA2NDg5OSwgNjQ5MTYsIDY0OTMzLCA2NDk1MCwgCisgICAgNjQ5NjcsIDY0OTg0LCA2NTAwMSwgNjUwMTgsIDY1MDM1LCA2NTA1MiwgNjUwNjksIDY1MDg2LCA2NTA5NywgNjUxMDcsIAorICAgIDY1MTEyLCAxNjA5LCA2NTExNiwgNjUxMjEsIDY1MTI3LCA2NTEzMiwgNjUxMzcsIDY1MTQ0LCA5OTI5LCAxNjE0LCA2NTE1MCwgCisgICAgNjUxNTksIDMwMTYxLCA2NTE2NCwgNjUxNzUsIDEyMDA5LCA2NTE4NSwgNjUxOTAsIDY1MTk2LCA2NTIwMSwgNjUyMDgsIAorICAgIDY1MjE0LCA2NTIxOSwgMTYxOSwgMTgzMzgsIDY1MjI0LCA2NTIzMCwgMTIwMTksIDE2MjQsIDEyMDI0LCA2NTIzNiwgCisgICAgNjUyNDEsIDY1MjQ3LCA2NTI1MiwgNjUyNTcsIDY1MjYyLCA2NTI2NywgNjUyNzIsIDY1Mjc3LCA2NTI4MiwgNjUyODcsIAorICAgIDY1MjkzLCA2NTI5OSwgNjUzMDUsIDY1MzEwLCA2NTMxNCwgNjUzMTksIDY1MzI0LCA2NTMyOCwgNjUzMzMsIDY1MzM4LCAKKyAgICA2NTM0MywgNjUzNDgsIDY1MzUyLCA2NTM1NywgNjUzNjMsIDY1MzY4LCA2NTM3MywgNjUzNzcsIDY1MzgyLCA2NTM4NywgCisgICAgNjUzOTMsIDY1Mzk4LCA2NTQwMywgNjU0MDksIDY1NDE1LCA2NTQyMCwgNjU0MjQsIDY1NDI5LCA2NTQzNCwgNjU0MzksIAorICAgIDY1NDQzLCA2NTQ0OCwgNjU0NTMsIDY1NDU4LCA2NTQ2NCwgNjU0NzAsIDY1NDc1LCA2NTQ3OSwgNjU0ODMsIDY1NDg4LCAKKyAgICA2NTQ5MywgNjU0OTgsIDMxNzM1LCA2NTUwMiwgNjU1MDcsIDY1NTEyLCA2NTUxOCwgNjU1MjMsIDY1NTI4LCA2NTUzMiwgCisgICAgNjU1MzcsIDY1NTQyLCA2NTU0OCwgNjU1NTMsIDY1NTU4LCA2NTU2NCwgNjU1NzAsIDY1NTc1LCA2NTU3OSwgNjU1ODQsIAorICAgIDY1NTg5LCA2NTU5MywgNjU1OTgsIDY1NjAzLCA2NTYwOCwgNjU2MTQsIDY1NjIwLCA2NTYyNSwgNjU2MjksIDY1NjM0LCAKKyAgICA2NTYzOSwgNjU2NDMsIDY1NjQ4LCA2NTY1MywgNjU2NTgsIDY1NjYzLCA2NTY2NywgNjU2NzAsIDY1NjczLCA2NTY3OCwgCisgICAgNjU2ODMsIDM0NDEyLCA2NTY5MCwgNjU2OTgsIDM2OTAsIDMwMTExLCA2NTcwNCwgNjU3MTEsIDY1NzE3LCAzODI5LCAKKyAgICAxMjEzMCwgNjU3MjMsIDY1NzMzLCA2NTc0OCwgNjU3NTYsIDEyMTM1LCA2NTc2NywgNjU3NzIsIDY1NzgzLCA2NTc5NSwgCisgICAgNjU4MDcsIDY1ODE5LCAyNzIzLCA2NTgzMSwgNjU4MzYsIDY1ODQ4LCA2NTg1MiwgNjU4NTgsIDY1ODY0LCA2NTg2OSwgCisgICAgNjU4NzgsIDE2NDEsIDE3NTY1LCA2NTg4NSwgNjU4OTAsIDQ0Mzc1LCA2NTg5NCwgNjU4OTgsIDY1OTAzLCA2NTkwNywgCisgICAgMTg0NzksIDY1OTEyLCA2NTkxNSwgNjU5MjAsIDY1OTI4LCA2NTkzNiwgMTY0NSwgMTIxNzEsIDEyMTc3LCAxNjUwLCAKKyAgICA2NTk0NCwgNjU5NTEsIDY1OTU2LCA2NTk2NSwgNjU5NzUsIDY1OTgyLCA2NTk4NywgNjU5OTIsIDE2NTUsIDY1OTk5LCAKKyAgICA2NjAwNCwgMTg1OTksIDY2MDA4LCA2NjAxMywgNjYwMjAsIDY2MDI2LCA2NjAzMCwgNjYwNDEsIDY2MDUxLCA2NjA1OCwgCisgICAgMTg2MjEsIDk4MjMsIDk4MzAsIDQwMjcsIDQwMzMsIDY2MDY1LCAxNjYwLCA2NjA3MCwgNjYwNzYsIDY2MDg0LCA2NjA5MSwgCisgICAgNjYwOTcsIDY2MTA0LCA2NjExNiwgNjYxMjIsIDY2MTI3LCA2NjEzOSwgNjYxNTAsIDY2MTU5LCA2NjE2OSwgMzk1NywgCisgICAgNjYxNzcsIDMzNTE1LCAzMzUyNCwgMTg2NjEsIDE2NjUsIDE2NjksIDY2MTkwLCA2NjE5NCwgNjYxOTcsIDY2MjA4LCAKKyAgICA2NjIxMywgMTY3OSwgNjYyMjEsIDY2MjI2LCA2NjIzMSwgMTg3MjAsIDY2MjQzLCA2NjI0NiwgNjYyNTIsIDY2MjU4LCAKKyAgICA2NjI2MywgNjYyNzEsIDE2ODQsIDY2Mjc2LCA2NjI4MSwgNjYyODksIDY2Mjk3LCA2NjMwNCwgNjYzMTMsIDY2MzIxLCAKKyAgICA2NjMzMCwgMTY4OSwgNjYzMzQsIDE2OTQsIDIzMjA4LCA2NjMzOSwgNjYzNDYsIDE4ODAwLCA2NjM1NCwgNjYzNjQsIAorICAgIDY2MzcwLCA2NjM3NSwgNjYzODMsIDY2MzkwLCA2NjM5OSwgNjY0MDcsIDY2NDE3LCA2NjQyNiwgNjY0MzYsIDY2NDQ1LCAKKyAgICA2NjQ1NiwgNjY0NjYsIDY2NDc2LCA2NjQ4NSwgNjY0OTUsIDY2NTA5LCA2NjUyMiwgNjY1MzEsIDY2NTM5LCA2NjU0OSwgCisgICAgNjY1NTgsIDY2NTcwLCA2NjU4MSwgNjY1OTIsIDY2NjAyLCAxODExMiwgNjY2MDcsIDEyMzIzLCA2NjYxNiwgNjY2MjIsIAorICAgIDY2NjI3LCA2NjYzNCwgNjY2NDEsIDY2NjQ3LCAxNzc3MSwgNjY2NTcsIDY2NjYzLCA2NjY2OCwgNjY2NzksIDY2Njg0LCAKKyAgICA2NjY5MiwgMTIzNDAsIDEyMzQ1LCA2NjcwMCwgNjY3MDYsIDY2NzEwLCA2NjcxOCwgNDAyMiwgMTg4NjksIDQ0NDY4LCAKKyAgICA2NjcyMywgNjY3MjksIDY2NzM0LCA2Njc0MiwgNjY3NDksIDEzMjg5LCA2Njc1NCwgNjY3NjAsIDE3MDUsIDY2NzY1LCAKKyAgICA2Njc2OCwgMTQxOSwgNjY3NzQsIDY2Nzc5LCA2Njc4NCwgNjY3OTAsIDY2Nzk1LCA2NjgwMCwgNjY4MDUsIDY2ODEwLCAKKyAgICA2NjgxNSwgNjY4MjAsIDE3MTQsIDEzLCA2NjgyNiwgNjY4MzAsIDY2ODM1LCA2NjgzOSwgNjY4NDMsIDY2ODQ3LCAzNDY1MiwgCisgICAgNjY4NTIsIDI1Mjk2LCA2Njg1NywgNjY4NjIsIDY2ODY2LCA2Njg2OSwgNjY4NzMsIDY2ODc3LCA2Njg4MiwgNjY4ODYsIAorICAgIDY2ODkxLCA2Njg5NSwgNjY5MDEsIDM3OTEwLCAzNzkxNSwgMzc5MjAsIDY2OTA0LCA2NjkxMSwgNjY5MTcsIDY2OTI1LCAKKyAgICA0NDEzOSwgNjY5MzUsIDM3OTI2LCAzNDkxNiwgMzQ2NjcsIDM0NjczLCAzNzk0MiwgMzQ2NzksIDY2OTQwLCA2Njk0NSwgCisgICAgMzQ5NDksIDY2OTQ5LCA2Njk1MiwgNjY5NTYsIDY2OTY0LCA2Njk3MSwgNjY5NzQsIDY2OTc5LCA2Njk4NCwgNjY5ODgsIAorICAgIDY2OTkyLCA2Njk5NSwgNjcwMDUsIDY3MDE3LCA2NzAyNCwgNjcwMzAsIDM0Njg0LCA2NzAzNywgMzY0NDMsIDY3MDQwLCAKKyAgICA4OTc0LCAxMDUyLCA2NzA0MywgNjcwNDcsIDY3MDUyLCAzODcyLCA2NzA1NiwgNjcwNTksIDE0OTM3LCA2NzA2NiwgNjcwNzMsIAorICAgIDY3MDg2LCA2NzA5NCwgNjcxMDMsIDY3MTEyLCA2NzExNywgNjcxMjcsIDY3MTQwLCA2NzE1MiwgNjcxNTksIDY3MTY0LCAKKyAgICA2NzE3MywgNjcxODYsIDM5NDQ5LCA2NzIwNCwgNjcyMDksIDY3MjE2LCA2NzIyMiwgNjcyMjcsIDgzNSwgNjcyMzIsIAorICAgIDY3MjQwLCA2NzI0NywgNjcyNTQsIDI5NjU4LCA4MDMsIDY3MjYwLCA2NzI2NiwgNjcyNzYsIDY3Mjg0LCA2NzI5MCwgCisgICAgNjcyOTUsIDM0NzAzLCA2MzM0LCAzNDcxNywgNjcyOTksIDY3MzA5LCA2NzMxNCwgNjczMjIsIDY3MzMyLCA2NzM0NywgCisgICAgNjczNTMsIDY3MzU5LCAzNDcyNywgNjczNjQsIDMzODM4LCA2NzM2OCwgNjczNzMsIDY3MzgwLCA2NzM4NSwgNjczODksIAorICAgIDY3Mzk0LCAxODY2NCwgNjc0MDEsIDY3NDA2LCA2NzQxMCwgNjM3NSwgMzQ3NTMsIDY3NDE0LCA2NzQyMCwgMzI1LCA2NzQzMCwgCisgICAgNjc0MzcsIDY3NDQzLCA2NzQ1MCwgNjc0NTUsIDY3NDY0LCAxNDU3MywgNjQxNzUsIDY0MTg1LCA2NzQ3MCwgNjc0NzgsIAorICAgIDY3NDgyLCA2NzQ4NiwgNjc0OTAsIDY3NDk0LCA2NzQ5OSwgNjc1MDMsIDY3NTA5LCA2NzUxNywgNjc1MjIsIDY3NTI3LCAKKyAgICA2NzUzMiwgNjc1MzYsIDY3NTQxLCA2NzU0NSwgNjc1NDksIDY3NTU1LCA2NzU2MSwgNjc1NjYsIDY3NTcwLCA2NzU3NSwgCisgICAgMzQ4NzcsIDY3NTc5LCAzNDg4MywgMzQ4ODksIDY3NTg0LCA2NzU5MCwgNjc1OTcsIDY3NjAyLCA2NzYwNiwgMzM4NTUsIAorICAgIDE4MzMxLCA2NzYwOSwgNjc2MTMsIDY3NjE4LCA2NzYyNSwgNjc2MzEsIDY3NjM1LCA2NzY0MCwgNDM4MDQsIDY3NjQ2LCAKKyAgICA2NzY1MCwgNjc2NTcsIDY3NjYxLCA2NzY2NiwgNjc2NzIsIDY3Njc4LCA2NzY4NCwgNjc2OTYsIDY3NzA1LCA2NzcxNSwgCisgICAgNjc3MjEsIDY3NzI4LCA2NzczMywgNjc3MzgsIDY3NzQyLCA2Nzc0NSwgNjc3NTEsIDY3NzU4LCA2Nzc2MywgNjc3NjgsIAorICAgIDY3Nzc1LCA2Nzc4MiwgNjc3ODksIDY3Nzk1LCA2NzgwMCwgNjc4MDUsIDY3ODEzLCAzNDg5NCwgMjQ0NywgNjc4MTgsIAorICAgIDY3ODIzLCA2NzgyOSwgNjc4MzQsIDY3ODQwLCA2Nzg0NSwgNjc4NTAsIDY3ODU1LCA2Nzg2MSwgMzQ5MTUsIDY3ODY2LCAKKyAgICA2Nzg3MiwgNjc4NzgsIDY3ODg0LCAzNDk4NSwgNjc4ODksIDY3ODk0LCA2Nzg5OSwgMzQ5OTYsIDY3OTA0LCA2NzkwOSwgCisgICAgNjc5MTQsIDY3OTIwLCA2NzkyNiwgMzUwMDEsIDY3OTMxLCA2NzkzNiwgNjc5NDEsIDM1MDU2LCAzNTA2MiwgNjc5NDYsIAorICAgIDY3OTUxLCAzNTA2NywgMzUwODksIDMwNDEwLCAzNTA5NSwgMzUwOTksIDY3OTU2LCAxMzAxOSwgNjc5NjAsIDY3OTY4LCAKKyAgICA2Nzk3NCwgNjc5ODIsIDY3OTg5LCA2Nzk5NSwgNjgwMDUsIDY4MDExLCA2ODAxOCwgMTE2NTQsIDM1MTEzLCA2ODAyNCwgCisgICAgNjgwMzcsIDY4MDQ2LCA2ODA1MiwgNjgwNjEsIDY4MDY3LCAyNTYwNiwgNjgwNzQsIDY4MDgxLCA2ODA5MSwgNjgwOTksIAorICAgIDY4MTAyLCAzNTA1NywgNjgxMDcsIDY4MTE0LCA2ODExOSwgNjgxMjMsIDY4MTI3LCA2ODEzMiwgNjgxMzYsIDQxNDcsIAorICAgIDY4MTQxLCA2ODE0NiwgNjgxNTEsIDM4MDA0LCAzODAwOSwgNjgxNTUsIDM4MDIzLCA2ODE2MCwgMzgwMjgsIDY4MTY1LCAKKyAgICA2ODE3MSwgMzgwNDAsIDM4MDQ2LCAzODA1MiwgNjgxNzYsIDY4MTgyLCAyNDU3NSwgNjgxOTMsIDY4MTk2LCA2ODIwOCwgCisgICAgNjgyMTYsIDM1MTM2LCA2ODIyMCwgNjgyMjksIDY4MjM5LCA2ODI0OCwgMzUxNDYsIDY4MjUzLCA2ODI2MCwgNjgyNjksIAorICAgIDY4Mjc1LCA2ODI4MywgNjgyOTAsIDY0MjYsIDQ2OTMsIDY4Mjk1LCAzNTA2OCwgNjgzMDEsIDY4MzA0LCA2ODMxMCwgCisgICAgNjgzMTcsIDY4MzIyLCA2ODMyNywgMjU1MTYsIDY4MzMxLCA2ODMzNywgNjgzNDMsIDY4MzQ4LCA2ODM1MywgNjgzNTcsIAorICAgIDY4MzYzLCA2ODM2OSwgMzYzNDksIDEwODQsIDM5MDk5LCA0MDgzNCwgNDA4NDAsIDM1MTc3LCAzNTE4MiwgNjgzNzQsIAorICAgIDY4Mzc4LCA2ODM4MiwgNjgzODUsIDY4Mzk4LCA2ODQwNCwgNjg0MDgsIDY4NDExLCA2ODQxNiwgMzY2ODYsIDY4NDIwLCAKKyAgICAzMzg2MCwgMjMxNTgsIDY4NDI2LCA2MzU1LCA2MzYzLCA5NjYwLCA2ODQyOSwgNjg0MzQsIDY4NDM5LCA2ODQ0NCwgNjg0NDksIAorICAgIDY4NDU0LCA2ODQ1OSwgNjg0NjQsIDY4NDY5LCA2ODQ3NCwgNjg0ODAsIDY4NDg1LCA2ODQ5MCwgNjg0OTYsIDY4NTAxLCAKKyAgICA2ODUwNiwgNjg1MTEsIDY4NTE2LCA2ODUyMSwgNjg1MjYsIDY4NTMyLCA2ODUzNywgNjg1NDMsIDY4NTQ4LCA2ODU1MywgCisgICAgNjg1NTgsIDY4NTYzLCA2ODU2OCwgNjg1NzMsIDY4NTc4LCA2ODU4MywgNjg1ODgsIDY4NTkzLCA2ODU5OSwgNjg2MDQsIAorICAgIDY4NjA5LCA2ODYxNCwgNjg2MTksIDY4NjI0LCA2ODYyOSwgNjg2MzUsIDY4NjQwLCA2ODY0NSwgNjg2NTAsIDY4NjU1LCAKKyAgICA2ODY2MCwgNjg2NjUsIDY4NjcwLCA2ODY3NSwgNjg2ODAsIDY4Njg2LCA2ODY5MSwgNjg2OTYsIDY4NzAxLCA2ODcwNiwgCisgICAgNjg3MTIsIDY4NzE4LCA2ODcyMywgNjg3MjksIDY4NzM0LCA2ODczOSwgNjg3NDQsIDY4NzQ5LCA2ODc1NCwgMTQ5MiwgMTU2LCAKKyAgICA2ODc1OSwgNjg3NjMsIDY4NzY3LCA2ODc3MSwgMjczMDYsIDY4Nzc1LCA2ODc3OSwgNjg3ODQsIDY4Nzg4LCA2ODc5MywgCisgICAgNjg3OTcsIDY4ODAyLCA2ODgwNywgNjg4MTIsIDY4ODE2LCA2ODgyMCwgNjg4MjUsIDY4ODI5LCAxNDY1MiwgNjg4MzQsIAorICAgIDY4ODM4LCA2ODg0NSwgNjg4NTUsIDE2NzE4LCA2ODg2NCwgNjg4NzMsIDY4ODc3LCA2ODg4MiwgNjg4ODcsIDY4ODkxLCAKKyAgICA2ODg5NSwgMjcxMDAsIDMwNjcsIDY4ODk5LCA2ODkwNSwgMTkxNDQsIDY4OTA5LCA2ODkxOCwgNjg5MjYsIDY4OTMyLCAKKyAgICA2ODkzNywgNjg5NDksIDY4OTYxLCA2ODk2NiwgNjg5NzAsIDY4OTc1LCA2ODk3OSwgNjg5ODUsIDY4OTkxLCA2ODk5NiwgCisgICAgNjkwMDYsIDY5MDE2LCA2OTAyMiwgNjkwMjcsIDY5MDMxLCA2OTAzNywgNjkwNDIsIDY5MDQ5LCA2OTA1NSwgNjkwNjAsIAorICAgIDY5MDY5LCA2OTA3OCwgNjkwODYsIDY5MDkwLCAxNzEyOSwgNjkwOTMsIDY5MTAyLCA2OTExMCwgNjkxMjIsIDY5MTMzLCAKKyAgICA2OTE0NCwgNjkxNTMsIDY5MTU3LCA2OTE2NiwgNjkxNzQsIDY5MTg0LCA2OTE5MiwgNjkxOTksIDY5MjA1LCA2OTIxMCwgCisgICAgNjkyMTksIDY5MjI1LCA2OTIzMCwgNjkyNDEsIDYwLCAzMzY1OCwgNjkyNDcsIDI4NTg2LCAyODU5NiwgNjkyNTMsIDY5MjYxLCAKKyAgICA2OTI2OCwgNjkyNzQsIDY5Mjc4LCA2OTI4OCwgNjkyOTksIDY5MzA3LCA2OTMxNiwgNjkzMjEsIDY5MzI2LCA2OTMzMSwgCisgICAgNjkzMzUsIDY5MzM5LCAxOTA5OCwgNjkzNDcsIDY5MzUxLCA2OTM1NywgNjkzNjcsIDY5Mzc0LCA2OTM4MCwgNjkzODYsIAorICAgIDM4MTAzLCA2OTM5MCwgNjkzOTIsIDY5Mzk1LCA2OTQwMSwgNjk0MDUsIDY5NDE2LCA2OTQyNiwgNjk0MzIsIDY5NDM5LCAKKyAgICA2OTQ0NiwgMTQ1ODksIDY5NDU0LCA2OTQ2MCwgNjk0NjksIDY5NDc4LCA2OTQ4NCwgMTA3MTMsIDY5NDkwLCA2OTQ5NiwgCisgICAgNjk1MDEsIDY5NTA2LCA2OTUxMywgNjk1MTgsIDY5NTI1LCA2OTUzMSwgNjk1MzYsIDY5NTQ0LCA2OTU1NywgNjk1NjYsIAorICAgIDY5NTc1LCA2NjQ3MSwgNjY0ODEsIDY5NTg1LCA2OTU5MSwgNjk1OTcsIDY5NjA0LCA2OTYxMSwgNjk2MTgsIDY5NjI1LCAKKyAgICA2OTYzMiwgNjk2MzcsIDY5NjQxLCA2OTY0NSwgNjk2NDgsIDY5NjU4LCA2OTY2MiwgNjk2NzQsIDY5NjgzLCA2OTY4NywgCisgICAgNjk2OTgsIDY5NzAzLCA2OTcwNywgNjY0OTAsIDY5NzEzLCA2OTcyMCwgNjk3MjksIDY5NzM3LCA2OTc0NSwgNjk3NTAsIAorICAgIDY5NzU0LCA2OTc1OSwgNjk3NjQsIDY5Nzc0LCA2OTc4MiwgNjk3ODcsIDY5NzkxLCA2OTc5NSwgNjk4MDEsIDY5ODA5LCAKKyAgICA2OTgxNiwgNjk4MjgsIDY5ODM2LCA2OTg0NywgNjk4NTQsIDY5ODYwLCA2OTg3MCwgNjk4NzYsIDY5ODgwLCA2OTg4OSwgCisgICAgNjk4OTgsIDY5OTA1LCA2OTkxMSwgNjk5MTYsIDY5OTIwLCA2OTkyNCwgNjk5MjgsIDY5OTM3LCA2OTk0NiwgNjk5NTUsIAorICAgIDY5OTYxLCA2OTk2NywgNjk5NzMsIDY5OTc4LCA2OTk4NSwgNjk5OTEsIDY5OTk5LCA3MDAwNiwgNzAwMTIsIDEzNzMyLCAKKyAgICA3MDAxNywgNzAwMjMsIDcwMDI3LCAxNTY0NiwgNzAwMzEsIDcwMDM2LCA3MDA0NiwgNzAwNTUsIDcwMDYxLCA3MDA2NywgCisgICAgNzAwNzUsIDcwMDgyLCA3MDA4NiwgNzAwOTAsIDcwMDk3LCA3MDEwMywgNzAxMTEsIDcwMTE4LCA3MDEyNCwgNzAxMzUsIAorICAgIDcwMTM5LCA3MDE0MywgNzAxNDcsIDcwMTUwLCA3MDE1NiwgNzAxNjEsIDcwMTY2LCA3MDE3MCwgNzAxNzQsIDcwMTgzLCAKKyAgICA3MDE5MSwgNzAxOTgsIDcwMjA0LCA3MDIxMSwgMjYxODksIDQzODczLCA3MDIxNiwgNzAyMjQsIDcwMjI4LCA3MDIzMiwgCisgICAgNzAyMzUsIDcwMjQzLCA3MDI1MCwgNzAyNTYsIDcwMjY1LCA3MDI3MywgNzAyNzksIDcwMjg0LCA3MDI4OCwgNzAyOTMsIAorICAgIDcwMjk4LCA3MDMwMiwgNzAzMDYsIDcwMzEwLCA3MDMxNSwgNzAzMjQsIDcwMzI4LCA3MDMzNSwgNDA5NDMsIDcwMzM5LCAKKyAgICA3MDM0NSwgNzAzNDksIDcwMzU3LCA3MDM2MywgNzAzNjgsIDcwMzc5LCA3MDM4NywgNzAzOTMsIDcwNDAyLCAyNDcyMiwgCisgICAgNzA0MTAsIDcwNDE3LCA3MDQyNCwgNzA0MzEsIDcwNDM4LCA3MDQ0NSwgNDcyMDMsIDE0NDI3LCA3MDQ1MiwgNzA0NTksIAorICAgIDcwNDY0LCAzODEzOSwgNDM1OSwgNzA0NzAsIDcwNDc1LCA3MDQ4MCwgNzA0ODYsIDcwNDkyLCA3MDQ5OCwgNzA1MDMsIAorICAgIDcwNTA4LCA3MDUxMywgNzA1MTgsIDcwNTI0LCA3MDUyOSwgNzA1MzUsIDcwNTQwLCA3MDU0NiwgNzA1NTEsIDcwNTU2LCAKKyAgICA3MDU2MSwgNzA1NjYsIDcwNTcxLCA3MDU3NiwgNzA1ODEsIDcwNTg3LCA3MDU5MiwgNzA1OTgsIDcwNjAzLCA3MDYwOCwgCisgICAgNzA2MTMsIDcwNjE4LCA3MDYyMywgNzA2MjgsIDcwNjM0LCA3MDYzOSwgNzA2NDQsIDcwNjQ5LCA3MDY1NCwgNzA2NTksIAorICAgIDcwNjY0LCA3MDY2OSwgNzA2NzQsIDcwNjc5LCA3MDY4NCwgNzA2OTAsIDcwNjk1LCA3MDcwMCwgNzA3MDUsIDcwNzEwLCAKKyAgICA3MDcxNSwgNzA3MjAsIDcwNzI1LCA3MDczMCwgNzA3MzYsIDcwNzQxLCA3MDc0NiwgNzA3NTEsIDcwNzU2LCA3MDc2MSwgCisgICAgNzA3NjYsIDcwNzcxLCA3MDc3NiwgNzA3ODEsIDcwNzg2LCA3MDc5MSwgNzA3OTYsIDcwODAyLCAxODM5LCAyNzIsIDcwODA3LCAKKyAgICA0MTgwMywgNzA4MTEsIDcwODE0LCA3MDgxOSwgNzA4MjMsIDcwODI2LCAzNDA0LCA3MDgzMSwgNzA4MzYsIDcwODQwLCAKKyAgICA3MDg0OSwgNzA4NjAsIDcwODc3LCA3MDg5NSwgNjk3NDEsIDcwOTAzLCA3MDkwNiwgNzA5MTYsIDcwOTIzLCA3MDkzMiwgCisgICAgNzA5NDgsIDcwOTU3LCA3MDk2NywgNzA5NzIsIDcwOTgyLCA3MDk5MSwgNzA5OTksIDcxMDEzLCA3MTAyMSwgNzEwMjUsIAorICAgIDcxMDI4LCA3MTAzNSwgNzEwNDEsIDcxMDUyLCA3MTA1OSwgNzEwNzEsIDcxMDgyLCA3MTA5MywgNzExMDIsIDcxMTA5LCAKKyAgICAxMjU5LCA3MjcsIDcxMTE5LCAyNjE4LCA3MTEyMywgNzExMjgsIDcxMTM3LCA5Mjc2LCAxOTA3MSwgMjI2NTUsIDcxMTQ1LCAKKyAgICA3MTE1MywgNzExNjcsIDcxMTgwLCA3MTE4NCwgNzExODksIDcxMTk0LCA3MTE5OSwgNzEyMDUsIDcxMjExLCA3MTIxNiwgCisgICAgODk2NiwgMTY3NDYsIDcxMjIxLCA3MTIyNSwgNzEyMzMsIDkzODQsIDcxMjM4LCA3MTI0NCwgNzEyNTMsIDcxMjYxLCAxNzE3LCAKKyAgICAxMjE4NCwgOTM1LCA2NDg5LCA3MTI2NSwgNzEyNjksIDcxMjc4LCA3MTI4OCwgMjQwNCwgMjkzODIsIDcxMjk3LCA3MTMwMywgCisgICAgMTg1NzEsIDI5Mzk3LCA3MTMwOSwgNDIwNywgMTI1NjIsIDcxMzE1LCA3MTMyMiwgNjYyMDMsIDcxMzI2LCA3MTMzMCwgCisgICAgNzEzMzYsIDcxMzQxLCA3MTM0NiwgMzYyMywgMTYwLCAzNjQ5LCA3MTM1MSwgNzEzNjMsIDcxMzY3LCA3MTM3MywgNzEzNzgsIAorICAgIDMwMTgxLCA3MTM4MiwgMTI1NTAsIDI3NTgsIDQsIDcxMzg3LCA3MTM5NywgNzE0MDgsIDcxNDE0LCA3MTQyNSwgNzE0MzIsIAorICAgIDcxNDM4LCA3MTQ0NCwgNzE0NTIsIDcxNDU5LCA3MTQ2NSwgNzE0NzUsIDcxNDg1LCA3MTQ5NSwgNzE1MDQsIDI1NTkzLCAKKyAgICAxMjcxLCA3MTUwOSwgNzE1MTMsIDcxNTE3LCA3MTUyMywgNzE1MjcsIDI3ODEsIDI3ODcsIDg5NjMsIDIyNzksIDcxNTMxLCAKKyAgICA3MTUzNSwgNzE1NDQsIDcxNTUyLCA3MTU2MywgNzE1NzEsIDcxNTc5LCA3MTU4NSwgNzE1OTAsIDcxNjAxLCA3MTYxMiwgCisgICAgNzE2MjAsIDcxNjI2LCA3MTYzMSwgMTA1MzIsIDcxNjQxLCA3MTY0OSwgNzE2NTMsIDcxNjU3LCA3MTY2MiwgNzE2NjYsIAorICAgIDcxNjc4LCAzMDU5NywgMTY2NzEsIDcxNjg1LCA3MTY5NSwgNzE3MDEsIDcxNzA3LCAxMDYzNCwgNzE3MTcsIDcxNzI4LCAKKyAgICA3MTczOSwgNzE3NDksIDcxNzU4LCA3MTc2MiwgNzE3NjksIDE3MzEsIDEwMjksIDcxNzc5LCA3MTc4NCwgNzE3OTIsIAorICAgIDY2MDA5LCA3MTgwMCwgNzE4MDUsIDcxODE2LCA3MTgyMywgNzE4MzcsIDE1NDgzLCA0ODQsIDcxODQ3LCA3MTg1MSwgCisgICAgNzE4NTUsIDcxODYzLCA3MTg3MiwgNzE4ODAsIDcxODg2LCA3MTkwMCwgNzE5MDcsIDcxOTEzLCA3MTkyMiwgNzE5MjksIAorICAgIDcxOTM5LCA3MTk0NywgNzE5NTQsIDcxOTYyLCA3MTk2OSwgNDAyOSwgMTQ0LCA3MTk3NywgNzE5ODgsIDcxOTkyLCA3MjAwNCwgCisgICAgNzIwMTAsIDEyNzQzLCAxOTgsIDcyMDE1LCA5OTYxLCA3MjAyMCwgMjgyNiwgNzIwMjQsIDcyMDMxLCA3MjAzNywgNzIwNDgsIAorICAgIDcyMDU2LCA3MjA2MywgOTMzNSwgNzIwNzAsIDcyMDc5LCA3MjA4NywgNDEwNywgNzIxMDAsIDQxMjQsIDcyMTA0LCA3MjEwOSwgCisgICAgNzIxMTUsIDcyMTIwLCA3MjEyNSwgNzIxMzAsIDI4MzEsIDUyMCwgNzIxMzYsIDcyMTQ5LCA3MjE1MywgNzIxNTgsIDI4MzYsIAorICAgIDE4MzgsIDgyOSwgNzIxNjIsIDQxMjgsIDcyMTcwLCA3MjE3NiwgNzIxODAsIDg3MywgNzIxOTAsIDcyMTk5LCA3MjIwNCwgCisgICAgMzY0MCwgNzIyMDgsIDE2NDI3LCAxNjQzNCwgNTA1NjUsIDcyMjEyLCA0MTU5LCA0MDM5LCAxNDMxMCwgNzIyMjAsIDcyMjI3LCAKKyAgICA3MjIzMiwgMjU2NTcsIDcyMjM2LCA3MjI0MywgNzIyNDksIDcyMjU0LCA3MjI1OSwgMTY0NDcsIDE5MiwgNzIyNjQsIAorICAgIDcyMjc2LCA3MjI4MiwgNzIyOTAsIDI4NDgsIDE3NDksIDcyMjk4LCA3MjMwMCwgNzIzMDUsIDcyMzEwLCA3MjMxNSwgCisgICAgNzIzMjEsIDcyMzI2LCA3MjMzMSwgNzIzMzYsIDcyMzQxLCA3MjM0NiwgNzIzNTEsIDcyMzU3LCA3MjM2MiwgNzIzNjcsIAorICAgIDcyMzcyLCA3MjM3NywgNzIzODIsIDcyMzg3LCA3MjM5MiwgNzIzOTcsIDcyNDAzLCA3MjQwOCwgNzI0MTMsIDcyNDE4LCAKKyAgICA3MjQyNCwgNzI0MjksIDcyNDM1LCA3MjQ0MCwgNzI0NDUsIDcyNDUwLCA3MjQ1NSwgNzI0NjAsIDcyNDY1LCA3MjQ3MCwgCisgICAgNzI0NzYsIDcyNDgxLCA3MjQ4NywgNzI0OTIsIDcyNDk3LCA3MjUwMiwgNzI1MDcsIDcyNTEyLCA3MjUxNywgNzI1MjIsIAorICAgIDcyNTI3LCA3MjUzMywgNzI1MzksIDcyNTQ0LCA3MjU0OSwgNzI1NTUsIDcyNTYwLCA3MjU2NCwgNzI1NjgsIDcyNTczLCAKKyAgICA3MjU3OSwgNzI1ODMsIDcyNTg5LCA3MjU5NCwgNzI1OTksIDcyNjA1LCA3MjYxMCwgNzI2MTQsIDcyNjE5LCA3MjYyNCwgCisgICAgNzI2MjgsIDcyNjMxLCA3MjYzMywgNzI2MzcsIDcyNjQwLCA3MjY0NywgNzI2NTIsIDcyNjU2LCA3MjY2MSwgNzI2NjUsIAorICAgIDcyNjY5LCA3MjY3MywgNzI2ODIsIDcyNjg2LCAzNTM4MiwgNzI2ODksIDM1Mzg3LCA3MjY5NiwgNzI3MDEsIDM1MzkyLCAKKyAgICA3MjcxMCwgNzI3MTksIDM1Mzk4LCA3MjcyNCwgMzU0MDMsIDcyNzMzLCA3MjczOCwgMTI3ODYsIDcyNzQyLCA3Mjc0NywgCisgICAgNzI3NTIsIDM1NDA4LCA3Mjc1NiwgNDUzOTgsIDcyNzYwLCA3Mjc2MywgNzI3NjcsIDg2MzQsIDcyNzczLCA3Mjc3NiwgCisgICAgNzI3ODEsIDcyNzg2LCA3Mjc5MCwgMzg4NywgMzU0MTMsIDcyNzkzLCA3Mjc5NywgNzI4MDAsIDcyODExLCA3MjgxNiwgCisgICAgNzI4MjAsIDcyODI2LCA3MjgzNCwgNzI4NDcsIDcyODU1LCA3Mjg2NCwgNzI4NzAsIDcyODc1LCA3Mjg4MSwgNzI4ODUsIAorICAgIDcyODkxLCA3Mjg5NywgNzI5MDUsIDcyOTEwLCA3MjkxNCwgNzI5MjEsIDcyOTI3LCA3MjkzNSwgNzI5NDQsIDcyOTUyLCAKKyAgICAzNTQxNiwgNzI5NTksIDcyOTY5LCA3Mjk4MiwgNzI5ODcsIDcyOTkyLCA3Mjk5NiwgNzMwMDUsIDczMDExLCA3MzAxOCwgCisgICAgNzMwMjksIDczMDQxLCA3MzA0OCwgNzMwNTcsIDczMDY2LCA3MzA3NSwgNzMwODIsIDczMDg4LCA3MzA5NSwgNzMxMDMsIAorICAgIDczMTEwLCA3MzExOCwgNzMxMjcsIDczMTM1LCA3MzE0MiwgNzMxNTAsIDczMTU5LCA3MzE2NywgNzMxNzYsIDczMTg2LCAKKyAgICA3MzE5NSwgNzMyMDMsIDczMjEwLCA3MzIxOCwgNzMyMjcsIDczMjM1LCA3MzI0NCwgNzMyNTQsIDczMjYzLCA3MzI3MSwgCisgICAgNzMyODAsIDczMjkwLCA3MzI5OSwgNzMzMDksIDczMzIwLCA3MzMzMCwgNzMzMzksIDczMzQ3LCA3MzM1NCwgNzMzNjIsIAorICAgIDczMzcxLCA3MzM3OSwgNzMzODgsIDczMzk4LCA3MzQwNywgNzM0MTUsIDczNDI0LCA3MzQzNCwgNzM0NDMsIDczNDUzLCAKKyAgICA3MzQ2NCwgNzM0NzQsIDczNDgzLCA3MzQ5MSwgNzM1MDAsIDczNTEwLCA3MzUxOSwgNzM1MjksIDczNTQwLCA3MzU1MCwgCisgICAgNzM1NTksIDczNTY5LCA3MzU4MCwgNzM1OTAsIDczNjAxLCA3MzYxMywgNzM2MjQsIDczNjM0LCA3MzY0MywgNzM2NTEsIAorICAgIDczNjU4LCA3MzY2NiwgNzM2NzUsIDczNjgzLCA3MzY5MiwgNzM3MDIsIDczNzExLCA3MzcxOSwgNzM3MjgsIDczNzM4LCAKKyAgICA3Mzc0NywgNzM3NTcsIDczNzY4LCA3Mzc3OCwgNzM3ODcsIDczNzk1LCA3MzgwNCwgNzM4MTQsIDczODIzLCA3MzgzMywgCisgICAgNzM4NDQsIDczODU0LCA3Mzg2MywgNzM4NzMsIDczODg0LCA3Mzg5NCwgNzM5MDUsIDczOTE3LCA3MzkyOCwgNzM5MzgsIAorICAgIDczOTQ3LCA3Mzk1NSwgNzM5NjQsIDczOTc0LCA3Mzk4MywgNzM5OTMsIDc0MDA0LCA3NDAxNCwgNzQwMjMsIDc0MDMzLCAKKyAgICA3NDA0NCwgNzQwNTQsIDc0MDY1LCA3NDA3NywgNzQwODgsIDc0MDk4LCA3NDEwNywgNzQxMTcsIDc0MTI4LCA3NDEzOCwgCisgICAgNzQxNDksIDc0MTYxLCA3NDE3MiwgNzQxODIsIDc0MTkzLCA3NDIwNSwgNzQyMTYsIDc0MjI4LCA3NDI0MSwgNzQyNTMsIAorICAgIDc0MjY0LCA3NDI3NCwgNzQyODMsIDc0MjkxLCA3NDI5OCwgNzQzMDYsIDc0MzE1LCA3NDMyMywgNzQzMzIsIDc0MzQyLCAKKyAgICA3NDM1MSwgNzQzNTksIDc0MzY4LCA3NDM3OCwgNzQzODcsIDc0Mzk3LCA3NDQwOCwgNzQ0MTgsIDc0NDI3LCA3NDQzNSwgCisgICAgNzQ0NDQsIDc0NDU0LCA3NDQ2MywgNzQ0NzMsIDc0NDg0LCA3NDQ5NCwgNzQ1MDMsIDc0NTEzLCA3NDUyNCwgNzQ1MzQsIAorICAgIDc0NTQ1LCA3NDU1NywgNzQ1NjgsIDc0NTc4LCA3NDU4NywgNzQ1OTUsIDc0NjA0LCA3NDYxNCwgNzQ2MjMsIDc0NjMzLCAKKyAgICA3NDY0NCwgNzQ2NTQsIDc0NjYzLCA3NDY3MywgNzQ2ODQsIDc0Njk0LCA3NDcwNSwgNzQ3MTcsIDc0NzI4LCA3NDczOCwgCisgICAgNzQ3NDcsIDc0NzU3LCA3NDc2OCwgNzQ3NzgsIDc0Nzg5LCA3NDgwMSwgNzQ4MTIsIDc0ODIyLCA3NDgzMywgNzQ4NDUsIAorICAgIDc0ODU2LCA3NDg2OCwgNzQ4ODEsIDc0ODkzLCA3NDkwNCwgNzQ5MTQsIDc0OTIzLCA3NDkzMSwgNzQ5NDAsIDc0OTUwLCAKKyAgICA3NDk1OSwgNzQ5NjksIDc0OTgwLCA3NDk5MCwgNzQ5OTksIDc1MDA5LCA3NTAyMCwgNzUwMzAsIDc1MDQxLCA3NTA1MywgCisgICAgNzUwNjQsIDc1MDc0LCA3NTA4MywgNzUwOTMsIDc1MTA0LCA3NTExNCwgNzUxMjUsIDc1MTM3LCA3NTE0OCwgNzUxNTgsIAorICAgIDc1MTY5LCA3NTE4MSwgNzUxOTIsIDc1MjA0LCA3NTIxNywgNzUyMjksIDc1MjQwLCA3NTI1MCwgNzUyNTksIDc1MjY5LCAKKyAgICA3NTI4MCwgNzUyOTAsIDc1MzAxLCA3NTMxMywgNzUzMjQsIDc1MzM0LCA3NTM0NSwgNzUzNTcsIDc1MzY4LCA3NTM4MCwgCisgICAgNzUzOTMsIDc1NDA1LCA3NTQxNiwgNzU0MjYsIDc1NDM3LCA3NTQ0OSwgNzU0NjAsIDc1NDcyLCA3NTQ4NSwgNzU0OTcsIAorICAgIDc1NTA4LCA3NTUyMCwgNzU1MzMsIDc1NTQ1LCA3NTU1OCwgNzU1NzIsIDc1NTg1LCA3NTU5NywgNzU2MDgsIDc1NjE4LCAKKyAgICA3NTYyNywgNzU2MzUsIDc1NjQyLCA3NTY0NywgODQ1MSwgNzU2NTQsIDM1NDI2LCA3NTY1OSwgNzU2NjQsIDM1NDMxLCAKKyAgICA3NTY3MCwgMjI3NjMsIDM1NDM2LCA3NTY3NSwgNzU2ODEsIDc1Njg5LCA3NTY5NSwgNzU3MDEsIDc1NzA4LCA3NTcxNSwgCisgICAgNzU3MjAsIDc1NzI1LCA3NTcyOSwgNzU3MzMsIDc1NzM2LCA3NTc0MCwgNzU3NDksIDc1NzU4LCA3NTc2NiwgNzU3NzIsIAorICAgIDc1Nzg0LCA3NTc5NSwgNzU3OTksIDMxMjksIDg0MjYsIDc1ODA0LCA3NTgwNywgNzU4MDksIDc1ODEzLCA3NTgxNywgCisgICAgNzU4MjEsIDc1ODI3LCA3NTgzMiwgMjgyNDAsIDc1ODM3LCA3NTg0MSwgNzU4NDQsIDc1ODQ5LCA3NTg1MywgNzU4NjAsIAorICAgIDc1ODY2LCA3NTg3MCwgNjUwOSwgNzU4NzQsIDM1NDUzLCA3NTg3OSwgNzU4ODYsIDc1ODk1LCA3NTkwMywgNzU5MTQsIAorICAgIDc1OTIyLCA3NTkzMSwgNzU5MzksIDc1OTQ2LCA3NTk1MywgNzU5NTksIDc1OTcwLCAzNTQ1OCwgNzU5NzUsIDc1OTg2LCAKKyAgICA3NTk5OCwgNzYwMDYsIDc2MDE3LCA3NjAyNiwgNzYwMzQsIDc2MDQ1LCA3NjA1MCwgNzYwNTgsIDI1ODAsIDc2MDYzLCAKKyAgICAzNzU1MiwgNzYwNzYsIDc2MDgwLCA3NjA5MiwgNzYxMDAsIDc2MTA1LCA3NjExMywgNzYxMjQsIDE5MjkxLCA3NjEzMywgCisgICAgNzYxMzksIDc2MTQ2LCA3NjE1NCwgNzYxNjAsIDM1NDY4LCA3NjE2NSwgNDE1MywgNjM1NzAsIDc2MTcyLCA3NjE3NSwgCisgICAgNzYxODMsIDc2MTk2LCA3NjIwOSwgNzYyMjIsIDc2MjM1LCA3NjI0MiwgNzYyNTMsIDc2MjYyLCA3NjI2NywgNDcwMjAsIAorICAgIDQ3MDI1LCA3NjI3MSwgNzYyNzUsIDc2MjgzLCA3NjI5MCwgNzYyOTksIDc2MzA3LCA3NjMxMywgNzYzMjIsIDc2MzMwLCAKKyAgICA3NjMzNywgNzYzNDUsIDc2MzQ5LCA3NjM1OCwgNzYzNjcsIDc2Mzc3LCA3NjM5MCwgNzY0MDMsIDc2NDEzLCAzNTQ3MywgCisgICAgNzY0MTksIDc2NDI2LCA3NjQzMiwgNzY0MzgsIDM1NDc5LCA3NjQ0MywgNzY0NDYsIDc2NDUwLCA3NjQ1OCwgNzY0NjcsIAorICAgIDQ2NzU4LCA3NjQ3NSwgNzY0ODQsIDc2NDkyLCA3NjQ5OSwgNzY1MDcsIDc2NTE3LCA3NjUyNiwgNzY1MzUsIDM2Nzg1LCAKKyAgICA3NjU0NCwgNzY1NTUsIDc2NTcwLCA3NjU4MCwgOTk5NCwgMjM0NjcsIDc2NTg5LCA3NjU5NCwgNzY1OTksIDc2NjAzLCAKKyAgICAxNzc2MywgNzY2MDgsIDc2NjEzLCA3NjYxOSwgNzY2MjQsIDc2NjI5LCA3NjYzNSwgNzY2NDAsIDc2NjQ1LCAyMzQzMiwgCisgICAgNzY2NTAsIDc2NjU3LCA3NjY2NSwgNzY2NzMsIDc2NjgxLCA3NjY4NiwgNzY2OTMsIDc2NzAwLCA3NjcwNSwgMjI1NywgCisgICAgNzY3MDksIDc2NzEzLCA3NjcyMSwgNzY3MjksIDM1NDk2LCA3NjczNSwgNzY3NDEsIDc2NzUzLCA3Njc1OSwgNzY3NjYsIAorICAgIDc2NzcwLCA3Njc3NywgNzY3ODIsIDc2Nzg5LCA3Njc5NSwgNzY4MDIsIDc2ODEzLCA3NjgyMywgNzY4MzMsIDc2ODQ1LCAKKyAgICA3Njg1MSwgNzY4NTksIDc2ODY1LCA3Njg3NSwgNzY4ODUsIDM1NTIzLCA3Njg5NCwgNzY5MDMsIDc2OTA5LCA3NjkyMSwgCisgICAgNzY5MzIsIDc2OTM5LCA3Njk0NCwgNzY5NDgsIDc2OTU2LCA3Njk2MiwgNzY5NjcsIDc2OTcyLCA3Njk3OSwgNzY5ODcsIAorICAgIDc2OTk5LCA3NzAwOSwgNzcwMTgsIDc3MDI3LCA3NzAzNSwgNzcwNDIsIDM3NDA1LCAyNTk5MCwgNzcwNDgsIDc3MDUzLCAKKyAgICA3NzA1NywgNzcwNjEsIDc3MDY2LCA3NzA3NCwgNzcwODAsIDc3MDkxLCA3NzEwNCwgNzcxMDksIDc3MTE2LCAzNTUyOCwgCisgICAgNzcxMjEsIDc3MTMzLCA3NzE0MiwgNzcxNTAsIDc3MTYwLCA3NzE3MSwgNzcxODQsIDc3MTkxLCA3NzIwMCwgNzcyMDksIAorICAgIDc3MjE3LCA3NzIyMiwgNzcyMjgsIDE0ODEsIDc3MjMzLCA3NzIzOCwgNzcyNDMsIDc3MjQ4LCA3NzI1NCwgNzcyNTksIAorICAgIDc3MjY0LCA3NzI3MCwgNzcyNzYsIDc3MjgxLCA3NzI4NSwgNzcyOTAsIDc3Mjk1LCA3NzMwMCwgNjQxMzAsIDc3MzA1LCAKKyAgICA3NzMxMCwgNzczMTUsIDc3MzIwLCA3NzMyNiwgNzczMzIsIDc3MzM3LCA3NzM0MSwgNzczNDYsIDE3NzYyLCA3NzM1MSwgCisgICAgNzczNTcsIDc3MzYyLCA3NzM2OCwgNzczNzMsIDc3Mzc4LCA3NzM4MywgNzczODgsIDc3MzkyLCA3NzM5OCwgNzc0MDMsIAorICAgIDc3NDEyLCA3NzQxNywgNzc0MjIsIDc3NDI3LCA3NzQzMiwgNzc0MzYsIDc3NDQzLCA3NzQ0OSwgNDQ1MCwgMTg5MTQsIAorICAgIDMwOTQsIDc3NDU0LCA3NzQ1OCwgNzc0NjMsIDc3NDY3LCA3NzQ3MSwgNzc0NzUsIDUwODIwLCA3NzQ3OSwgNzc0MDQsIAorICAgIDc3NDgxLCA3NzQ5MSwgMzU1MzcsIDc3NDk0LCA3NzQ5OSwgNzc1MDgsIDc3NTE0LCA2NDc4LCAzNTU0MiwgNzc1MTgsIAorICAgIDc3NTI0LCA3NzUyOSwgNzc1MzUsIDc3NTQwLCA3NzU0NCwgNzc1NTEsIDc3NTU2LCA3NzU2NiwgNzc1NzUsIDc3NTc5LCAKKyAgICA3NzU4NSwgNzc1OTEsIDc3NTk3LCA3NzYwMSwgNzc2MDksIDc3NjE2LCA3NzYyNCwgNzc2MzIsIDM1NTQ3LCA3NzYzOSwgCisgICAgNzc2NDIsIDc3NjQ5LCA3NzY1NSwgNzc2NjAsIDc3NjY0LCA3NzY3MCwgNzc2NzgsIDc3Njg1LCA3NzY5MCwgNzc2OTQsIAorICAgIDc3NzAzLCA3NzcxMSwgNzc3MTcsIDc3NzIyLCAzNTU1MiwgNzc3MjksIDc3NzQxLCA3Nzc0OCwgNzc3NTQsIDc3NzU5LCAKKyAgICA3Nzc2NSwgNzc3NzIsIDc3Nzc4LCAyMzE3MSwgMjk4NTUsIDc3Nzg0LCA3Nzc4OSwgNzc3OTUsIDc3Nzk5LCA3NzgxMSwgCisgICAgNzc0MzcsIDc3NDQ0LCAyMzM2NCwgNzc4MjEsIDc3ODI2LCA3NzgzMywgNzc4MzksIDc3ODQ2LCA3Nzg1MiwgNzc4NjMsIAorICAgIDc3ODY4LCA3Nzg3NiwgOTY5OSwgNzc4ODEsIDc3ODg0LCA3Nzg5MCwgNzc4OTQsIDc3ODk4LCA3NzkwMSwgNzc5MDcsIAorICAgIDc3OTEzLCAzNTI5MCwgNDQ1MSwgMTA5MywgMTQ3MDYsIDc3OTIwLCA3NzkyNiwgNzc5MzIsIDc3OTM4LCA3Nzk0NCwgCisgICAgNzc5NTAsIDc3OTU2LCA3Nzk2MiwgNzc5NjgsIDc3OTczLCA3Nzk3OCwgNzc5ODMsIDc3OTg4LCA3Nzk5MywgNzc5OTgsIAorICAgIDc4MDAzLCA3ODAwOCwgNzgwMTMsIDc4MDE4LCA3ODAyMywgNzgwMjgsIDc4MDMzLCA3ODAzOSwgNzgwNDQsIDc4MDQ5LCAKKyAgICA3ODA1NSwgNzgwNjAsIDc4MDY1LCA3ODA3MSwgNzgwNzcsIDc4MDgzLCA3ODA4OSwgNzgwOTUsIDc4MTAxLCA3ODEwNywgCisgICAgNzgxMTMsIDc4MTE5LCA3ODEyNCwgNzgxMjksIDc4MTM1LCA3ODE0MCwgNzgxNDUsIDc4MTUxLCA3ODE1NiwgNzgxNjEsIAorICAgIDc4MTY2LCA3ODE3MSwgNzgxNzYsIDc4MTgxLCA3ODE4NiwgNzgxOTEsIDc4MTk2LCA3ODIwMSwgNzgyMDYsIDc4MjExLCAKKyAgICA3ODIxNywgNzgyMjIsIDc4MjI3LCA3ODIzMiwgNzgyMzgsIDc4MjQzLCA3ODI0OCwgNzgyNTMsIDc4MjU4LCA3ODI2NCwgCisgICAgNzgyNjksIDc4Mjc0LCA3ODI3OSwgNzgyODQsIDc4Mjg5LCA3ODI5NCwgNzgyOTksIDc4MzA0LCA3ODMwOSwgNzgzMTQsIAorICAgIDc4MzE5LCA3ODMyNCwgNzgzMjksIDc4MzM0LCA3ODMzOSwgNzgzNDQsIDc4MzQ5LCA3ODM1NCwgNzgzNTksIDc4MzY1LCAKKyAgICA3ODM3MCwgNzgzNzUsIDc4MzgwLCA3ODM4NSwgNzgzOTAsIDc4Mzk1LCA3ODQwMCwgMTg3NSwgMTY5LCA3ODQwNSwgNzg0MDksIAorICAgIDc4NDEzLCA3ODQxOCwgNzg0MjYsIDc4NDMwLCA3ODQzNywgNzg0NDUsIDc4NDQ5LCA3ODQ2MiwgNzg0NzAsIDc4NDc1LCAKKyAgICA3ODQ4MCwgMjg2NDksIDc4NDg0LCA3ODQ4OSwgNzg0OTMsIDc4NDk4LCA3ODUwMiwgNzg1MTAsIDc4NTE0LCAyMjc3MSwgCisgICAgNzg1MTksIDc4NTIzLCA2NjcxNCwgNzg1MjcsIDc4NTMwLCA3ODUzOCwgNzg1NDYsIDc4NTU0LCA3ODU1OSwgNzg1NjQsIAorICAgIDc4NTcxLCA3ODU3OCwgNzg1ODQsIDc4NTkwLCA3ODU5NSwgNzg2MDIsIDc4NjA3LCA3ODYxNSwgNzExNzIsIDc4NjIyLCAKKyAgICA2NjUwMCwgNzg2MjcsIDc4NjMyLCA3ODYzNiwgNzg2NDMsIDY2NTI3LCAxMjg1MywgNzg2NDksIDc4NjU0LCA3ODY1OSwgCisgICAgNzg2NjMsIDc4NjY2LCA3ODY3NSwgNzg2ODEsIDc4Njg1LCA3ODY5NSwgNzg3MDQsIDc4NzA4LCA3ODcxMSwgNzg3MTUsIAorICAgIDc4NzIyLCA3ODczNSwgNzg3NDEsIDc4NzQ5LCA3ODc1OCwgNzg3NjksIDc4NzgwLCA3ODc5MSwgNzg4MDIsIDc4ODExLCAKKyAgICA3ODgxNywgNzg4MjYsIDc4ODM0LCA3ODg0NCwgNzg4NTcsIDc4ODY1LCA3ODg3MiwgNzg4ODMsIDc4ODg5LCA3ODg5NCwgCisgICAgNzg4OTksIDc4OTA1LCA3ODkxNSwgNzg5MjEsIDc4OTMxLCA3ODkzOCwgNzg5NDgsIDc4OTU3LCA3NzEyMywgNzg5NjUsIAorICAgIDc4OTcxLCA3ODk3OSwgNzg5ODUsIDc4OTkyLCA3OTAwMCwgNzkwMDUsIDc5MDA4LCA3OTAxMiwgNzkwMTgsIDc5MDIyLCAKKyAgICA3OTAyNSwgNzkwMzEsIDc5MDM3LCA3OTA0NSwgNzkwNTcsIDc5MDY5LCA3OTA3NiwgNzkwODEsIDc5MDg1LCA3OTA5NiwgCisgICAgNzkxMDQsIDc5MTExLCA3OTEyMywgNzkxMzEsIDc5MTM5LCA3OTE0NiwgNzkxNTIsIDc5MTU3LCA3OTE2NywgNzkxNzYsIAorICAgIDc5MTgxLCA3OTE5MSwgNzkyMDAsIDQ2MDM5LCA3OTIwNywgNzkyMTEsIDc5MjE2LCA3OTIyNCwgNzkyMzEsIDc5MjM3LCAKKyAgICA3OTI0MSwgNzkyNTEsIDc5MjYyLCA3OTI3MCwgNzkyNzcsIDc5Mjg5LCA3OTMwMSwgNzkzMTAsIDc2MDY2LCA3OTMxNywgCisgICAgNzkzMjcsIDc5MzM5LCA3OTM1MCwgNzkzNjQsIDc5MzcyLCA3OTM4MiwgNzkzODksIDc5Mzk3LCA3OTQxMCwgNzk0MjIsIAorICAgIDc5NDMxLCA3OTQzOSwgNzk0NDksIDc5NDYwLCA3OTQ3MiwgNzk0ODEsIDc5NDkxLCA3OTUwMSwgNzk1MTAsIDc5NTE3LCAKKyAgICA3OTUyNiwgNzk1NDEsIDc5NTQ5LCA3OTU1OSwgNzk1NjgsIDc5NTc2LCA3OTU4OSwgNjM1NDAsIDc5NjA0LCA3OTYxNCwgCisgICAgNzk2MjMsIDc5NjM1LCA3OTY0NSwgNzk2NTcsIDc5NjY4LCA3OTY4MiwgNzk2OTYsIDc5NzEwLCA3OTcyNCwgNzk3MzgsIAorICAgIDc5NzUyLCA3OTc2NiwgNzk3ODAsIDc5Nzk0LCA3OTgwOCwgNzk4MjIsIDc5ODM2LCA3OTg1MCwgNzk4NjQsIDc5ODc4LCAKKyAgICA3OTg5MiwgNzk5MDYsIDc5OTIwLCA3OTkzNCwgNzk5NDgsIDc5OTYyLCA3OTk3NiwgNzk5OTAsIDgwMDA0LCA4MDAxOCwgCisgICAgODAwMzIsIDgwMDQ2LCA4MDA2MCwgODAwNzQsIDgwMDg4LCA4MDEwMiwgODAxMTYsIDgwMTMwLCA4MDE0NCwgODAxNTgsIAorICAgIDgwMTcyLCA4MDE4NiwgODAyMDAsIDgwMjE0LCA4MDIyOCwgODAyNDIsIDgwMjU2LCA4MDI3MCwgODAyODQsIDgwMjk4LCAKKyAgICA4MDMxMiwgODAzMjYsIDgwMzQwLCA4MDM1NCwgODAzNjgsIDgwMzgyLCA4MDM5NiwgODA0MTAsIDgwNDI0LCA4MDQzOCwgCisgICAgODA0NTIsIDgwNDY2LCA4MDQ4MCwgODA0OTQsIDgwNTA4LCA4MDUyMiwgODA1MzYsIDgwNTUwLCA4MDU2NCwgODA1NzgsIAorICAgIDgwNTkyLCA4MDYwNiwgODA2MjAsIDgwNjM0LCA4MDY0OCwgODA2NjIsIDgwNjc2LCA4MDY5MCwgODA3MDQsIDgwNzE4LCAKKyAgICA4MDczMiwgODA3NDYsIDgwNzYwLCA4MDc3NCwgODA3ODgsIDgwODAyLCA4MDgxNiwgODA4MzAsIDgwODQ0LCA4MDg1OCwgCisgICAgODA4NzIsIDgwODg2LCA4MDkwMCwgODA5MTQsIDgwOTI4LCA4MDk0MiwgODA5NTYsIDgwOTcwLCA4MDk4NCwgODA5OTgsIAorICAgIDgxMDEyLCA4MTAyNiwgODEwNDAsIDgxMDU0LCA4MTA2OCwgODEwODIsIDgxMDk2LCA4MTExMCwgODExMjQsIDgxMTM4LCAKKyAgICA4MTE1MiwgODExNjYsIDgxMTgwLCA4MTE5NCwgODEyMDgsIDgxMjIyLCA4MTIzNiwgODEyNTAsIDgxMjY0LCA4MTI3OCwgCisgICAgODEyOTIsIDgxMzA2LCA4MTMyMCwgODEzMzQsIDgxMzQ4LCA4MTM2MiwgODEzNzYsIDgxMzkwLCA4MTQwNCwgODE0MTgsIAorICAgIDgxNDMyLCA4MTQ0NiwgODE0NjAsIDgxNDc0LCA4MTQ4OCwgODE1MDIsIDgxNTE2LCA4MTUzMCwgODE1NDQsIDgxNTU4LCAKKyAgICA4MTU3MiwgODE1ODYsIDgxNjAwLCA4MTYxNCwgODE2MjgsIDgxNjQyLCA4MTY1NiwgODE2NzAsIDgxNjg0LCA4MTY5OCwgCisgICAgODE3MTIsIDgxNzI2LCA4MTc0MCwgODE3NTQsIDgxNzY4LCA4MTc4MiwgODE3OTYsIDgxODEwLCA4MTgyNCwgODE4MzgsIAorICAgIDgxODUyLCA4MTg2NiwgODE4ODAsIDgxODk0LCA4MTkwOCwgODE5MjIsIDgxOTM2LCA4MTk1MCwgODE5NjQsIDgxOTc4LCAKKyAgICA4MTk5MiwgODIwMDYsIDgyMDIwLCA4MjAzNCwgODIwNDgsIDgyMDYyLCA4MjA3NiwgODIwOTAsIDgyMTA0LCA4MjExOCwgCisgICAgODIxMzIsIDgyMTQ2LCA4MjE2MCwgODIxNzQsIDgyMTg4LCA4MjIwMiwgODIyMTYsIDgyMjMwLCA4MjI0NCwgODIyNTgsIAorICAgIDgyMjcyLCA4MjI4NiwgODIzMDAsIDgyMzE0LCA4MjMyOCwgODIzNDIsIDgyMzU2LCA4MjM3MCwgODIzODQsIDgyMzk4LCAKKyAgICA4MjQxMiwgODI0MjYsIDgyNDQwLCA4MjQ1NCwgODI0NjgsIDgyNDgyLCA4MjQ5NiwgODI1MTAsIDgyNTI0LCA4MjUzOCwgCisgICAgODI1NTIsIDgyNTY2LCA4MjU4MCwgODI1OTQsIDgyNjA4LCA4MjYyMiwgODI2MzYsIDgyNjUwLCA4MjY2NCwgODI2NzgsIAorICAgIDgyNjkyLCA4MjcwNiwgODI3MjAsIDgyNzM0LCA4Mjc0OCwgODI3NjIsIDgyNzc2LCA4Mjc5MCwgODI4MDQsIDgyODE4LCAKKyAgICA4MjgzMiwgODI4NDYsIDgyODYwLCA4Mjg3NCwgODI4ODgsIDgyOTAyLCA4MjkxNiwgODI5MzAsIDgyOTQ0LCA4Mjk1OCwgCisgICAgODI5NzIsIDgyOTg2LCA4MzAwMCwgODMwMTQsIDgzMDI4LCA4MzA0MiwgODMwNTYsIDgzMDcwLCA4MzA4NCwgODMwOTgsIAorICAgIDgzMTEyLCA4MzEyNiwgODMxNDAsIDgzMTU0LCA4MzE2OCwgODMxODIsIDgzMTk2LCA4MzIxMCwgODMyMjQsIDgzMjM4LCAKKyAgICA4MzI1MiwgODMyNjYsIDgzMjgwLCA4MzI5NCwgODMzMDgsIDgzMzIyLCA4MzMzNiwgODMzNTAsIDgzMzY0LCA4MzM3OCwgCisgICAgODMzOTIsIDgzNDA2LCA4MzQyMCwgODM0MzQsIDgzNDQ4LCA4MzQ2MiwgODM0NzYsIDgzNDkwLCA4MzUwNCwgODM1MTgsIAorICAgIDgzNTMyLCA4MzU0NiwgODM1NjAsIDgzNTc0LCA4MzU4OCwgODM2MDIsIDgzNjE2LCA4MzYzMCwgODM2NDQsIDgzNjU4LCAKKyAgICA4MzY3MiwgODM2ODYsIDgzNzAwLCA4MzcxNCwgODM3MjgsIDgzNzQyLCA4Mzc1NiwgODM3NzAsIDgzNzg0LCA4Mzc5OCwgCisgICAgODM4MTIsIDgzODI2LCA4Mzg0MCwgODM4NTQsIDgzODY4LCA4Mzg4MiwgODM4OTYsIDgzOTEwLCA4MzkyNCwgODM5MzgsIAorICAgIDgzOTUyLCA4Mzk2NiwgODM5ODAsIDgzOTk0LCA4NDAwOCwgODQwMjIsIDg0MDM2LCA4NDA1MCwgODQwNjQsIDg0MDc4LCAKKyAgICA4NDA5MiwgODQxMDYsIDg0MTIwLCA4NDEzNCwgODQxNDgsIDg0MTYyLCA4NDE3NiwgODQxOTAsIDg0MjA0LCA4NDIxOCwgCisgICAgODQyMzIsIDg0MjQ2LCA4NDI2MCwgODQyNzQsIDg0Mjg4LCA4NDMwMiwgODQzMTYsIDg0MzMwLCA4NDM0NCwgODQzNTgsIAorICAgIDg0MzcyLCA4NDM4NiwgODQ0MDAsIDg0NDE0LCA4NDQyOCwgODQ0NDIsIDg0NDU2LCA4NDQ3MCwgODQ0ODQsIDg0NDk4LCAKKyAgICA4NDUxMiwgODQ1MjYsIDg0NTQwLCA4NDU1NCwgODQ1NjgsIDg0NTgyLCA4NDU5NiwgODQ2MTAsIDg0NjI0LCA4NDYzOCwgCisgICAgODQ2NTIsIDg0NjY2LCA4NDY4MCwgODQ2OTQsIDg0NzA4LCA4NDcyMiwgODQ3MzYsIDg0NzUwLCA4NDc2NCwgODQ3NzgsIAorICAgIDg0NzkyLCA4NDgwNiwgODQ4MjAsIDg0ODM0LCA4NDg0OCwgODQ4NjIsIDg0ODc2LCA4NDg5MCwgODQ5MDQsIDg0OTE4LCAKKyAgICA4NDkzMiwgODQ5NDYsIDg0OTYwLCA4NDk3NCwgODQ5ODgsIDg1MDAyLCA4NTAxNiwgODUwMzAsIDg1MDQ0LCA4NTA1OCwgCisgICAgODUwNzIsIDg1MDg2LCA4NTEwMCwgODUxMTQsIDg1MTI4LCA4NTE0MiwgODUxNTYsIDg1MTcwLCA4NTE4NCwgODUxOTgsIAorICAgIDg1MjEyLCA4NTIyNiwgODUyNDAsIDg1MjU0LCA4NTI2OCwgODUyODIsIDg1Mjk2LCA4NTMxMCwgODUzMjQsIDg1MzM4LCAKKyAgICA4NTM1MiwgODUzNjYsIDg1MzgwLCA4NTM5NCwgODU0MDgsIDg1NDIyLCA4NTQzNiwgODU0NTAsIDg1NDY0LCA4NTQ3OCwgCisgICAgODU0OTIsIDg1NTA2LCA4NTUyMCwgODU1MzQsIDg1NTQ4LCA4NTU2MiwgODU1NzYsIDg1NTkwLCA4NTYwNCwgODU2MTgsIAorICAgIDg1NjMyLCA4NTY0NiwgODU2NjAsIDg1Njc0LCA4NTY4OCwgODU3MDIsIDg1NzE2LCA4NTczMCwgODU3NDQsIDg1NzU4LCAKKyAgICA4NTc3MiwgODU3ODYsIDg1ODAwLCA4NTgxNCwgODU4MjgsIDg1ODQyLCA4NTg1NiwgODU4NzAsIDg1ODg0LCA4NTg5OCwgCisgICAgODU5MTIsIDg1OTI2LCA4NTk0MCwgODU5NTQsIDg1OTY4LCA4NTk4MiwgODU5OTYsIDg2MDEwLCA4NjAyNCwgODYwMzgsIAorICAgIDg2MDUyLCA4NjA2NiwgODYwODAsIDg2MDk0LCA4NjEwOCwgODYxMjIsIDg2MTM2LCA4NjE1MCwgODYxNjQsIDg2MTc4LCAKKyAgICA4NjE5MiwgODYyMDYsIDg2MjIwLCA4NjIzNCwgODYyNDgsIDg2MjYyLCA4NjI3NiwgODYyOTAsIDg2MzA0LCA4NjMxOCwgCisgICAgODYzMzIsIDg2MzQ2LCA4NjM2MCwgODYzNzQsIDg2Mzg4LCA4NjQwMiwgODY0MTYsIDg2NDMwLCA4NjQ0NCwgODY0NTgsIAorICAgIDg2NDcyLCA4NjQ4NiwgODY1MDAsIDg2NTE0LCA4NjUyOCwgODY1NDIsIDg2NTU2LCA4NjU3MCwgODY1ODQsIDg2NTk4LCAKKyAgICA4NjYxMiwgODY2MjYsIDg2NjQwLCA4NjY1NCwgODY2NjgsIDg2NjgyLCA4NjY5NiwgODY3MTAsIDg2NzI0LCA4NjczOCwgCisgICAgODY3NTIsIDg2NzY2LCA4Njc4MCwgODY3OTQsIDg2ODA4LCA4NjgyMiwgODY4MzYsIDg2ODUwLCA4Njg2NCwgODY4NzgsIAorICAgIDg2ODkyLCA4NjkwNiwgODY5MjAsIDg2OTM0LCA4Njk0OCwgODY5NjIsIDg2OTc2LCA4Njk5MCwgODcwMDQsIDg3MDE4LCAKKyAgICA4NzAzMiwgODcwNDYsIDg3MDYwLCA4NzA3NCwgODcwODgsIDg3MTAyLCA4NzExNiwgODcxMzAsIDg3MTQ0LCA4NzE1OCwgCisgICAgODcxNzIsIDg3MTg2LCA4NzIwMCwgODcyMTQsIDg3MjI4LCA4NzI0MiwgODcyNTYsIDg3MjcwLCA4NzI4NCwgODcyOTgsIAorICAgIDg3MzEyLCA4NzMyNiwgODczNDAsIDg3MzU0LCA4NzM2OCwgODczODIsIDg3Mzk2LCA4NzQxMCwgODc0MjQsIDg3NDM4LCAKKyAgICA4NzQ1MiwgODc0NjYsIDg3NDgwLCA4NzQ5NCwgODc1MDgsIDg3NTIyLCA4NzUzNiwgODc1NTAsIDg3NTY0LCA4NzU3OCwgCisgICAgODc1OTIsIDg3NjA2LCA4NzYyMCwgODc2MzQsIDg3NjQ4LCA4NzY2MiwgODc2NzYsIDg3NjkwLCA4NzcwNCwgODc3MTgsIAorICAgIDg3NzMyLCA4Nzc0NiwgODc3NjAsIDg3Nzc0LCA4Nzc4OCwgODc4MDIsIDg3ODE2LCA4NzgzMCwgODc4NDQsIDg3ODU4LCAKKyAgICA4Nzg3MiwgODc4ODYsIDg3OTAwLCA4NzkxNCwgODc5MjgsIDg3OTQyLCA4Nzk1NiwgODc5NzAsIDg3OTg0LCA4Nzk5OCwgCisgICAgODgwMTIsIDg4MDI2LCA4ODA0MCwgODgwNTQsIDg4MDY4LCA4ODA4MiwgODgwOTYsIDg4MTEwLCA4ODEyNCwgODgxMzgsIAorICAgIDg4MTUyLCA4ODE2NiwgODgxODAsIDg4MTk0LCA4ODIwOCwgODgyMjIsIDg4MjM2LCA4ODI1MCwgODgyNjQsIDg4Mjc4LCAKKyAgICA4ODI5MiwgODgzMDYsIDg4MzIwLCA4ODMzNCwgODgzNDgsIDg4MzYyLCA4ODM3NiwgODgzOTAsIDg4NDA0LCA4ODQxOCwgCisgICAgODg0MzIsIDg4NDQ2LCA4ODQ2MCwgODg0NzQsIDg4NDg4LCA4ODUwMiwgODg1MTYsIDg4NTMwLCA4ODU0NCwgODg1NTgsIAorICAgIDg4NTcyLCA4ODU4NiwgODg2MDAsIDg4NjE0LCA4ODYyOCwgODg2NDIsIDg4NjU2LCA4ODY3MCwgODg2ODQsIDg4Njk4LCAKKyAgICA4ODcxMiwgODg3MjYsIDg4NzQwLCA4ODc1NCwgODg3NjgsIDg4NzgyLCA4ODc5NiwgODg4MTAsIDg4ODI0LCA4ODgzOCwgCisgICAgODg4NTIsIDg4ODY2LCA4ODg4MCwgODg4OTQsIDg4OTA4LCA4ODkyMiwgODg5MzYsIDg4OTUwLCA4ODk2NCwgODg5NzgsIAorICAgIDg4OTkyLCA4OTAwNiwgODkwMjAsIDg5MDM0LCA4OTA0OCwgODkwNjIsIDg5MDc2LCA4OTA5MCwgODkxMDQsIDg5MTE4LCAKKyAgICA4OTEzMiwgODkxNDYsIDg5MTYwLCA4OTE3NCwgODkxODgsIDg5MjAyLCA4OTIxNiwgODkyMzAsIDg5MjQ0LCA4OTI1OCwgCisgICAgODkyNzIsIDg5Mjg2LCA4OTMwMCwgODkzMTQsIDg5MzI4LCA4OTM0MiwgODkzNTYsIDg5MzcwLCA4OTM4NCwgODkzOTgsIAorICAgIDg5NDEyLCA4OTQyNiwgODk0NDAsIDg5NDU0LCA4OTQ2OCwgODk0ODIsIDg5NDk2LCA4OTUxMCwgODk1MjQsIDg5NTM4LCAKKyAgICA4OTU1MiwgODk1NjYsIDg5NTgwLCA4OTU5NCwgODk2MDgsIDg5NjIyLCA4OTYzNiwgODk2NTAsIDg5NjY0LCA4OTY3OCwgCisgICAgODk2OTIsIDg5NzA2LCA4OTcyMCwgODk3MzQsIDg5NzQ4LCA4OTc2MiwgODk3NzYsIDg5NzkwLCA4OTgwNCwgODk4MTgsIAorICAgIDg5ODMyLCA4OTg0NiwgODk4NjAsIDg5ODc0LCA4OTg4OCwgODk5MDIsIDg5OTE2LCA4OTkzMCwgODk5NDQsIDg5OTU4LCAKKyAgICA4OTk3MiwgODk5ODYsIDkwMDAwLCA5MDAxNCwgOTAwMjgsIDkwMDQyLCA5MDA1NiwgOTAwNzAsIDkwMDg0LCA5MDA5OCwgCisgICAgOTAxMTIsIDkwMTI2LCA5MDE0MCwgOTAxNTQsIDkwMTY4LCA5MDE4MiwgOTAxOTYsIDkwMjEwLCA5MDIyNCwgOTAyMzgsIAorICAgIDkwMjQ5LCA5MDI2MCwgOTAyNzAsIDkwMjgxLCA5MDI4OSwgOTAyOTUsIDkwMzA1LCA5MDMxMywgOTAzMTksIDMxNjIxLCAKKyAgICA5MDMyNCwgOTAzMzAsIDkwMzM5LCA5MDM1MSwgOTAzNTYsIDkwMzYzLCAxMDU0NiwgMTkzMTEsIDkwMzY5LCA5MDM3OCwgCisgICAgOTAzODMsIDkwMzg3LCA5MDM5NCwgOTA0MDAsIDkwNDA1LCA5MDQxMCwgOTA0MTgsIDkwNDI2LCAxMzIyOSwgOTA0MzAsIAorICAgIDkwNDMzLCA5MDQzNSwgOTA0NDIsIDkwNDQ4LCA5MDQ1OSwgOTA0NjQsIDkwNDY4LCA5MDQ3MywgOTA0ODAsIDkwNDg2LCAKKyAgICA5MDQ5MSwgOTA0OTksIDcxNzQxLCA3MTc1MSwgOTA1MDUsIDkwNTEyLCA5MDUyMiwgMTE2NDEsIDkwNTI5LCA5MDUzNCwgCisgICAgMzE4NTUsIDkwNTQzLCA5MDU0OCwgOTA1NTUsIDkwNTY1LCA5MDU3MywgOTA1ODEsIDkwNTkwLCA5MDU5NiwgOTA2MDIsIAorICAgIDkwNjA5LCA5MDYxNiwgOTA2MjEsIDkwNjI1LCA5MDYzMywgNjY1NDQsIDkwNjM4LCA5MDY0NywgOTA2NTUsIDkwNjYyLCAKKyAgICA5MDY2NywgOTA2NzEsIDkwNjgwLCA5MDY4NiwgOTA2ODksIDkwNjkzLCA5MDcwMiwgOTA3MTIsIDc4NDU3LCA5MDcyMSwgCisgICAgOTA3MjUsIDkwNzMzLCA5MDczNywgOTA3NDMsIDkwNzU0LCA5MDc2NCwgMTkzMjAsIDkwNzc1LCA5MDc4NCwgOTA3OTIsIAorICAgIDkwODAwLCA5MDgwNywgNjY1NjMsIDkxOTIsIDkwODE1LCA5MDgxOSwgOTA4MjgsIDkwODM1LCA5MDgzOCwgMjk3MzYsIAorICAgIDkwODQxLCA5MDg0NSwgOTA4NTAsIDkwODY3LCA5MDg3OSwgMTE1OTksIDkwODkxLCA5MDg5NiwgOTA5MDEsIDkwOTA2LCAKKyAgICAyMjg2MSwgOTA5MTAsIDkwOTE1LCA5MDkyMCwgOTA5MjYsIDkwOTMxLCA2MTQyLCA5MDkzNiwgMjI4NjUsIDkwOTQxLCAKKyAgICA5MDk0NiwgOTA5NTIsIDkwOTU5LCA5MDk2NCwgOTA5NjksIDkwOTc1LCA5MDk4MSwgOTA5ODcsIDkwOTkyLCA5MDk5OCwgCisgICAgOTEwMDIsIDkxMDE2LCA5MTAyNCwgOTEwMzIsIDkxMDM4LCA5MTA0MywgOTEwNTAsIDkxMDYwLCA5MTA2OSwgOTEwNzQsIAorICAgIDkxMDc5LCA5MTA4NCwgOTEwOTIsIDkxMDk3LCA5MTEwMywgOTExMDgsIDkxMTE3LCA2NTIzMiwgOTExMjIsIDkxMTI1LCAKKyAgICA5MTE0MywgOTExNjIsIDkxMTc1LCA5MTE4OSwgOTEyMDUsIDkxMjEyLCA5MTIxOSwgOTEyMjgsIDkxMjM1LCA5MTI0MSwgCisgICAgOTEyNDgsIDkxMjUzLCA5MTI1OSwgOTEyNjUsIDkxMjczLCA5MTI3OSwgOTEyODQsIDkxMjg5LCA5MTMwNSwgMTE2MTIsIAorICAgIDkxMzE5LCA5MTMyNiwgOTEzMzQsIDkxMzQwLCA5MTM0NCwgOTEzNDcsIDkxMzUyLCA5MTM1NywgOTEzNjQsIDkxMzY5LCAKKyAgICA5MTM3OCwgOTEzODQsIDkxMzg5LCA5MTM5NSwgOTE0MDEsIDkxNDEwLCA5MTQxOSwgMzg5NTUsIDkxNDI0LCA5MTQzMiwgCisgICAgOTE0NDEsIDEyODgyLCA5MTQ1MCwgOTE0NTYsIDkxNDY0LCA5MTQ3MCwgOTE0NzYsIDkxNDgyLCA5MTQ4NywgOTE0OTQsIAorICAgIDkxNTAwLCAxMjg5MywgOTE1MDUsIDkxNTA4LCA5MTUxMywgMzU1NzksIDkxNTIzLCA5MTUzMiwgOTE1MzcsIDkxNTQzLCAKKyAgICA5MTU0OCwgOTE1NTYsIDkxNTYzLCA5MTU3NCwgOTE1ODQsIDkxNTg5LCA5MTU5NywgNzEwOTUsIDkxNjAyLCA5MTYwOCwgCisgICAgOTE2MTMsIDkxNjIwLCA5MTYyOSwgOTE2MzcsIDkxNjQxLCA5MTY0NywgOTE2NTMsIDkxNjYwLCA5MTY2NiwgOTE2NzAsIAorICAgIDE4NjgyLCAzMTAzLCA5MTY3NSwgOTE2NzksIDkxNjgzLCA5MTY4OSwgOTE2OTgsIDkxNzA0LCA5MTcxMSwgOTE3MTUsIAorICAgIDkxNzM2LCA5MTc1OCwgOTE3NzQsIDkxNzkxLCA5MTgxMCwgOTE4MTksIDkxODI5LCA5MTgzNywgOTE4NDQsIDkxODUxLCAKKyAgICA5MTg1NywgMjk1OTcsIDkxODcxLCA5MTg3NSwgOTE4ODEsIDkxODg5LCA5MTkwMSwgOTE5MDcsIDkxOTE1LCA5MTkyMiwgCisgICAgOTE5MjcsIDkxOTMyLCA5MTkzNiwgOTE5NDQsIDkxOTUxLCA5MTk1NSwgOTE5NjEsIDkxOTY3LCA5MTk3MiwgMzcyOSwgCisgICAgNDcyMjAsIDkxOTc4LCA5MTk4MiwgOTE5ODYsIDkxOTkwLCA5MTk5NSwgOTIwMDAsIDkyMDA1LCA5MjAxMSwgOTIwMTcsIAorICAgIDkyMDIzLCA5MjAzMCwgOTIwMzYsIDkyMDQzLCA5MjA0OSwgOTIwNTUsIDkyMDYwLCA5MjA2NiwgOTIwNzEsIDkyMDc1LCAKKyAgICA5MjA4MCwgOTIwODQsIDkyMDg5LCA0NzIzNSwgOTIwOTMsIDkyMDk4LCA5MjEwNiwgOTIxMTAsIDkyMTE1LCA5MjEyMiwgCisgICAgOTIxMzEsIDkyMTM3LCA5MjE0NiwgOTIxNTAsIDkyMTU3LCA5MjE2MSwgOTIxNjQsIDkyMTcxLCA5MjE3NywgOTIxODYsIAorICAgIDkyMTk2LCA5MjIwNiwgOTIyMTEsIDkyMjE1LCA5MjIyMiwgOTIyMzAsIDkyMjM5LCA5MjI0MywgOTIyNTEsIDkyMjU3LCAKKyAgICA5MjI2MiwgOTIyNjcsIDkyMjczLCA5MjI3OSwgOTIyODQsIDkyMjg4LCA5MjI5NCwgOTIyOTksIDkyMzAzLCA5MjMwNywgCisgICAgOTIzMTAsIDkyMzE1LCA5MjMyMywgOTIzMzMsIDkyMzM5LCA5MjM0NCwgOTIzNTQsIDQ0NDkyLCA5MjM2MiwgOTIzNzQsIAorICAgIDkyMzgwLCA5MjM4NCwgOTIzOTAsIDkyNDAyLCA5MjQxMywgOTI0MjAsIDkyNDI2LCA5MjQzMywgOTI0NDAsIDkyNDUyLCAKKyAgICA5MjQ1OSwgOTI0NjUsIDIyOTM5LCA5MjQ2OSwgOTI0NzcsIDkyNDgzLCA5MjQ5MCwgOTI0OTYsIDkyNTAyLCA5MjUwOCwgCisgICAgOTI1MTMsIDkyNTE4LCA5MjUyMywgOTI1MjcsIDkyNTM2LCA5MjU0NCwgOTI1NTUsIDczNzQsIDkyNTYwLCAxODEzMSwgCisgICAgOTI1NjYsIDkyNTcwLCA5MjU3NCwgOTI1NzgsIDkyNTg2LCA5MjU5NSwgOTI1OTksIDkyNjA2LCA5MjYxNSwgOTI2MjMsIAorICAgIDkyNjM2LCA5MjY0MiwgOTIwODUsIDMyNzM5LCA5MjY0NywgOTI2NDksIDkyNjU0LCA5MjY1OSwgOTI2NjQsIDkyNjY5LCAKKyAgICA5MjY3NCwgOTI2NzksIDkyNjg0LCA5MjY4OSwgOTI2OTQsIDkyNjk5LCA5MjcwNCwgOTI3MDksIDkyNzE0LCA5MjcxOSwgCisgICAgOTI3MjUsIDkyNzMwLCA5MjczNSwgOTI3NDAsIDkyNzQ1LCA5Mjc1MCwgOTI3NTUsIDkyNzYwLCA5Mjc2NSwgOTI3NzEsIAorICAgIDkyNzc3LCA5Mjc4MywgOTI3ODgsIDkyNzkzLCA5MjgwNSwgOTI4MTAsIDE4ODEsIDU0LCA5MjgxNSwgOTI4MjAsIDM1NTg1LCAKKyAgICA5MjgyNCwgMzU1OTAsIDM1NTk1LCAzNTYwMSwgMzU2MDYsIDkyODI4LCAzNTYxMSwgMjM5OTQsIDkyODUwLCA5Mjg1NCwgCisgICAgOTI4NTgsIDkyODYzLCA5Mjg2NywgMzU2MTUsIDkyODcxLCA5Mjg3OSwgOTI4ODYsIDkyODkyLCAzNTYyMCwgOTI5MDIsIAorICAgIDkyOTA1LCA5MjkxMCwgOTI5MTQsIDkyOTIzLCAxMDM1NiwgOTI5MzEsIDM1NjI1LCAyMzg0NSwgOTI5MzQsIDkyOTM4LCAKKyAgICA5Mjk0NiwgMTM5MywgOTI5NTEsIDM1NjM2LCA5Mjk1NCwgOTI5NTksIDI3OTk1LCAyODAwNSwgMzg1NzgsIDkyOTY0LCAKKyAgICA5Mjk2OSwgOTI5NzQsIDkyOTc5LCA5Mjk4NSwgOTI5OTAsIDkyOTk5LCA5MzAwNCwgOTMwMTMsIDkzMDIxLCA5MzAyOCwgCisgICAgOTMwMzQsIDkzMDM5LCA5MzA0NCwgOTMwNDksIDkzMDU5LCA5MzA2OCwgOTMwNzYsIDkzMDgxLCA5MzA4OSwgOTMwOTMsIAorICAgIDkzMTAxLCA5MzEwNSwgOTMxMTIsIDkzMTIwLCAzNTQ0NCwgNDE2MzQsIDkzMTI3LCA5MzEzMywgOTMxMzgsIDkzMTQzLCAKKyAgICAxMzI2NCwgMzA4MjAsIDkzMTQ4LCA5MzE1MywgOTMxNjAsIDkzMTY2LCA5MzE3MSwgOTMxNzksIDkzMTg5LCA5MzE5OSwgCisgICAgOTMyMDUsIDkzMjEwLCA5MzIxNiwgMTkzNDIsIDkzMjIzLCAzOTQ2MiwgOTMyMzYsIDkzMjQxLCA5MzI0NywgMzM3MzcsIAorICAgIDY5NTc5LCA5MzI2MCwgOTMyNjQsIDkzMjczLCA5MzI4MiwgOTMyODksIDkzMjk1LCA5MzMwMywgOTMzMTIsIDkzMzE5LCAKKyAgICA0MTc1NCwgOTMzMjUsIDkzMzI4LCA5MzMzMiwgOTMzMzYsIDkzMzQwLCAyODE0MSwgOTMzNDYsIDkzMzUzLCA5MzM1OSwgCisgICAgOTMzNjcsIDkzMzcyLCA5MzM3NiwgMjYxMzcsIDkzMzgyLCA5MzM4NSwgOTMzOTMsIDkzNDAwLCA5MzQwOCwgOTM0MjEsIAorICAgIDkzNDM1LCA5MzQ0MiwgOTM0NDgsIDkzNDU1LCA5MzQ2MSwgMzU2NTAsIDkzNDY1LCA5MzQ3MiwgOTM0ODAsIDkzNDg4LCAKKyAgICA5MzQ5NCwgMzU2NTUsIDkzNTAyLCA5MzUwOCwgOTM1MTMsIDkzNTIzLCA5MzUyOSwgOTM1MzgsIDMzNTMyLCAzODAxMCwgCisgICAgOTM1NDYsIDkzNTUxLCA5MzU1NiwgOTM1NjAsIDkzNTY1LCA5MzU2OSwgOTM1NzcsIDkzNTgyLCAxNjQxOSwgNDQ1MDUsIAorICAgIDkzNTg2LCA5MzU5MSwgMzU2NjAsIDY4MTIxLCA5MzU5NSwgOTM2MDAsIDkzNjA0LCA5MzYxMSwgOTM2MjAsIDkzNjI0LCAKKyAgICA5MzYzMiwgOTM2MzgsIDkzNjQzLCA5MzY0OSwgODQ5MywgOTM2NTQsIDkzNjYwLCA5MzY2NSwgOTM2NzAsIDkzNjgxLCAKKyAgICA5MzY5MCwgOTM3MDIsIDkzNzE3LCAzNTkzNiwgOTM3MjMsIDE4MjUwLCAzNTY2NCwgOTM3MjcsIDkzNzM0LCA5Mzc0MCwgCisgICAgMjYyNTMsIDkzNzQ0LCA5Mzc1MSwgOTM3NjAsIDkzNzY3LCA5Mzc3NiwgOTM3ODIsIDkzNzg3LCA5Mzc5NSwgOTM4MDEsIAorICAgIDkzODA2LCAzNTY3NCwgOTM4MTEsIDkzODIwLCA5MjQwOCwgOTM4MjksIDkzODM2LCA5Mzg0MiwgOTM4NDgsIDkzODU3LCAKKyAgICA5Mzg2NywgOTM4NzUsIDkzODgyLCA5Mzg4NiwgMzU2NzksIDkzODg5LCAzNTY4NSwgMzU2OTEsIDkzODk0LCA5MzkwMiwgCisgICAgOTM5MTAsIDkzOTIwLCA5MzkyOSwgOTM5MzcsIDkzOTQ0LCA5Mzk1NCwgMzU2OTYsIDkzOTU4LCA5Mzk2MCwgOTM5NjQsIAorICAgIDkzOTY5LCA5Mzk3MywgOTM5NzcsIDkzOTgzLCA5Mzk4OCwgOTM5OTIsIDk0MDAzLCA5NDAwOCwgOTQwMTMsIDMxMDgsIAorICAgIDk0MDE3LCA5NDAyNCwgOTQwMjgsIDk0MDM3LCA5NDA0NSwgOTQwNTIsIDk0MDU3LCA5NDA2MiwgNjgxNzIsIDk0MDY2LCAKKyAgICA5NDA2OSwgOTQwNzUsIDk0MDgzLCA5NDA4OSwgOTQwOTMsIDk0MDk4LCA5NDEwNSwgOTQxMTAsIDk0MTE1LCA5NDExOSwgCisgICAgOTQxMjUsIDk0MTMwLCAzODA0MSwgOTQxMzQsIDk0MTM3LCA5NDE0MiwgOTQxNDYsIDk0MTUxLCA5NDE1OCwgOTQxNjMsIAorICAgIDk0MTY3LCA0MzAzMSwgOTQxNzUsIDI4MDE0LCAyODAyMywgOTQxODEsIDk0MTg3LCA5NDE5MywgOTQxOTgsIDk0MjAyLCAKKyAgICA5NDIwNSwgOTQyMTUsIDk0MjI0LCA5NDIyOSwgOTQyMzUsIDk0MjQyLCA5NDI0OCwgOTQyNTIsIDk0MjYwLCA5NDI2NSwgCisgICAgMzgwNDcsIDc4Njc3LCA5NDI2OSwgOTQyNzcsIDk0MjgzLCA5NDI5MCwgOTQyOTUsIDk0Mjk5LCA5NDMwNCwgNjM3NTYsIAorICAgIDk0MzEwLCA5NDMxNiwgMzgwNTMsIDk0MzIxLCA5NDMyNiwgOTQzMzAsIDk0MzM1LCA5NDM0MCwgOTQzNDUsIDk0MzQ5LCAKKyAgICA5NDM1NCwgOTQzNTksIDk0MzY1LCA5NDM3MCwgOTQzNzUsIDk0MzgxLCA5NDM4NywgOTQzOTIsIDk0Mzk2LCA5NDQwMSwgCisgICAgOTQ0MDYsIDk0NDExLCA5NDQxNSwgMjYyNTIsIDk0NDIwLCA5NDQyNSwgOTQ0MzEsIDk0NDM3LCA5NDQ0MywgOTQ0NDgsIAorICAgIDk0NDUyLCA5NDQ1NywgOTQ0NjIsIDk0NDY3LCA5NDQ3MSwgOTQ0NzYsIDk0NDgxLCA5NDQ4NiwgOTQ0OTEsIDQ3NDkwLCAKKyAgICA5NDQ5NSwgMzU3MDQsIDk0NTAzLCA5NDUwNywgOTQ1MTUsIDk0NTIzLCA5NDUzNCwgOTQ1MzksIDk0NTQzLCAyNDQyMCwgCisgICAgNzYxNjksIDk0NTQ4LCA5NDU1NCwgOTQ1NTksIDk0NTY5LCA5NDU3NiwgOTQ1ODEsIDk0NTg5LCA5NDU5OCwgOTQ2MDMsIAorICAgIDk0NjA3LCA5NDYxMiwgOTQ2MjAsIDk0NjI4LCA5NDYzNSwgNzEzNTcsIDk0NjQxLCA5NDY0OSwgOTQ2NTYsIDk0NjY3LCAKKyAgICA5NDY3MywgOTQ2NzksIDM1NzE0LCA5NDY4MiwgOTQ2ODksIDk0Njk3LCA5NDcwMiwgNDQ3MDgsIDk0NzA2LCA5NDcxMSwgCisgICAgOTQ3MTgsIDk0NzIzLCA5NTY3LCA5NDcyNywgOTQ3MzUsIDk0NzQyLCA5NDc0OSwgOTQ3NTgsIDk0NzY1LCA5NDc3MSwgCisgICAgOTQ3ODUsIDYyMTQsIDk0NzkzLCA5NDc5OSwgOTQ4MDMsIDk0ODA2LCA5NDgxNCwgOTQ4MjEsIDk0ODI2LCA5NDgzOSwgCisgICAgOTQ4NDYsIDk0ODUyLCA5NDg1NiwgOTQ4NjQsIDk0ODY5LCA5NDg3NiwgOTQ4ODEsIDY2NDAzLCA5NDg4NiwgOTQ4ODksIAorICAgIDk0ODk4LCA5NDkwNSwgOTQ5MTEsIDk0OTE1LCA5NDkxOCwgOTQ5MjYsIDk0OTMyLCA5NDk0MSwgOTQ5NTEsIDk0OTYxLCAKKyAgICA5NDk3MCwgOTQ5ODEsIDk0OTg5LCA5NTAwMCwgOTUwMDUsIDk1MDA5LCA5NTAxNCwgOTUwMTgsIDM4NzA5LCA5NTAyNiwgCisgICAgMjMyMzQsIDM4NzE4LCA5NTAzMSwgOTUwMzYsIDk1MDQxLCA5NTA0NiwgOTUwNTEsIDk1MDU2LCA5NTA2MSwgOTUwNjUsIAorICAgIDk1MDcwLCA5NTA3NSwgOTUwODAsIDk1MDg1LCA5NTA5MCwgOTUwOTUsIDk1MDk5LCA5NTEwNCwgOTUxMDksIDk1MTEzLCAKKyAgICA5NTExNywgOTUxMjEsIDk1MTI1LCA5NTEzMCwgOTUxMzUsIDk1MTM5LCA5NTE0NCwgOTUxNDgsIDk1MTUyLCA5NTE1NywgCisgICAgOTUxNjIsIDk1MTY3LCA5NTE3MiwgOTUxNzYsIDk1MTgxLCA5NTE4NiwgOTUxOTAsIDk1MTk1LCA5NTIwMCwgOTUyMDUsIAorICAgIDk1MjEwLCA5NTIxNSwgOTUyMjAsIDk1MjI1LCA5NTIzMCwgOTUyMzUsIDk1MjQwLCA5NTI0NSwgOTUyNTAsIDk1MjU1LCAKKyAgICA5NTI2MCwgOTUyNjUsIDk1MjcwLCA5NTI3NSwgOTUyODAsIDk1Mjg1LCA5NTI5MCwgOTUyOTQsIDk1Mjk5LCA5NTMwNCwgCisgICAgOTUzMDksIDk1MzE0LCA5NTMxOSwgOTUzMjQsIDk1MzI5LCA5NTMzNCwgOTUzMzksIDk1MzQ0LCA5NTM0OSwgOTUzNTMsIAorICAgIDk1MzU4LCA5NTM2MiwgOTUzNjcsIDk1MzcyLCA5NTM3NywgOTUzODIsIDk1Mzg3LCA5NTM5MiwgOTUzOTcsIDk1NDAyLCAKKyAgICA5NTQwNywgOTU0MTEsIDk1NDE1LCA5NTQyMCwgOTU0MjUsIDk1NDI5LCA5NTQzNCwgOTU0MzksIDk1NDQzLCA5NTQ0OCwgCisgICAgOTU0NTMsIDk1NDU4LCA5NTQ2MywgOTU0NjcsIDk1NDcyLCA5NTQ3NywgOTU0ODEsIDk1NDg2LCA5NTQ5MCwgOTU0OTQsIAorICAgIDk1NDk4LCA5NTUwMiwgOTU1MDcsIDk1NTExLCA5NTUxNSwgOTU1MTksIDk1NTIzLCA5NTUyNywgOTU1MzEsIDk1NTM1LCAKKyAgICA5NTUzOSwgOTU1NDMsIDk1NTQ4LCA5NTU1MywgOTU1NTgsIDk1NTYzLCA5NTU2OCwgOTU1NzMsIDk1NTc4LCA5NTU4MywgCisgICAgOTU1ODgsIDk1NTkzLCA5NTU5NywgOTU2MDEsIDk1NjA1LCA5NTYwOSwgOTU2MTMsIDk1NjE3LCA5NTYyMiwgOTU2MjYsIAorICAgIDk1NjMxLCA5NTYzNSwgOTU2NDAsIDk1NjQ1LCA5NTY0OSwgOTU2NTMsIDk1NjU4LCA5NTY2MiwgOTU2NjYsIDk1NjcwLCAKKyAgICA5NTY3NCwgOTU2NzgsIDk1NjgyLCA5NTY4NiwgOTU2OTAsIDk1Njk0LCA5NTY5OCwgOTU3MDIsIDk1NzA2LCA5NTcxMCwgCisgICAgOTU3MTQsIDk1NzE5LCA5NTcyNCwgOTU3MjgsIDk1NzMyLCA5NTczNiwgOTU3NDAsIDk1NzQ0LCA5NTc0OCwgOTU3NTMsIAorICAgIDk1NzU3LCA5NTc2MSwgOTU3NjUsIDk1NzY5LCA5NTc3MywgOTU3NzcsIDk1NzgyLCA5NTc4NiwgOTU3OTEsIDk1Nzk1LCAKKyAgICA5NTc5OSwgOTU4MDMsIDk1ODA3LCA5NTgxMSwgOTU4MTUsIDk1ODE5LCA5NTgyMywgOTU4MjcsIDk1ODMxLCA5NTgzNSwgCisgICAgOTU4NDAsIDk1ODQ0LCA5NTg0OCwgOTU4NTIsIDk1ODU2LCA5NTg2MCwgOTU4NjQsIDk1ODY4LCA5NTg3MiwgOTU4NzYsIAorICAgIDk1ODgwLCA5NTg4NCwgOTU4ODksIDk1ODkzLCA5NTg5NywgOTU5MDIsIDk1OTA3LCA5NTkxMSwgOTU5MTUsIDk1OTE5LCAKKyAgICA5NTkyMywgOTU5MjcsIDk1OTMxLCA5NTkzNSwgOTU5MzksIDk1OTQ0LCA5NTk0OCwgOTU5NTMsIDk1OTU3LCA5NTk2MiwgCisgICAgOTU5NjYsIDk1OTcxLCA5NTk3NSwgOTU5ODEsIDk1OTg2LCA5NTk5MCwgOTU5OTUsIDk1OTk5LCA5NjAwNCwgOTYwMDgsIAorICAgIDk2MDEzLCA5NjAxNywgOTYwMjIsIDE1MDAsIDk2MDI2LCAyODYyLCAxNzU1LCAxNjczLCAyNzk1MCwgOTYwMzAsIDI4NzEsIAorICAgIDk2MDM0LCAxMzYyLCA5NjAzOSwgMTMwNCwgOTYwNDMsIDk2MDQ3LCAyODg4LCA5NjA1MSwgOTYwNTksIDk2MDY2LCA5NjA3MywgCisgICAgOTYwODcsIDI4OTIsIDc0NzYsIDk2MDk2LCA5NjEwNCwgOTYxMTEsIDk2MTIyLCA5NjEzMSwgOTYxMzgsIDk2MTUwLCAKKyAgICA5NjE2MywgOTYxNzYsIDk2MTg3LCA5NjE5MiwgOTYxOTksIDk2MjExLCA5NjIxNSwgMjg5NiwgMTI5NjAsIDk2MjI1LCAKKyAgICA5NjIzMCwgOTYyMzksIDk2MjQ5LCA5NjI1NCwgMjkwMCwgOTYyNjIsIDk2MjY2LCA5NjI3MSwgOTYyNzgsIDk2Mjg0LCAKKyAgICA5NjI5MiwgOTYzMDQsIDk2MzE0LCAxMzA5LCAxNDMxMSwgOTYzMjcsIDk2MzMxLCA5NjMzNywgOTYzNTEsIDk2MzYzLCAKKyAgICA5NjM3NSwgOTYzODUsIDk2Mzk0LCA5NjQwMywgOTY0MTIsIDk2NDIwLCA5NjQzMSwgOTY0MzksIDQzMDYsIDk2NDQ5LCAKKyAgICA5NjQ2MCwgOTY0NjksIDk2NDc1LCA5NjQ5MCwgOTY0OTcsIDk2NTAzLCA5NjUwOCwgMzg4NDMsIDk2NTEzLCAyOTI0LCAKKyAgICAxNDMxNSwgOTY1MTcsIDk2NTI0LCA5NDkyLCA5NjUzMywgOTY1MzksIDI5MjksIDM1MTUyLCA5NjU0OCwgNjYwOTksIAorICAgIDk2NTU1LCA5NjU1OSwgOTY1NjUsIDk2NTc2LCA5NjU4MiwgOTY1ODksIDk2NTk1LCA5NjYwMywgOTY2MTAsIDk2NjE2LCAKKyAgICA5NjYyNywgOTY2MzcsIDk2NjQ2LCA5NjY1NywgOTY2NjYsIDk2NjczLCA5NjY3OSwgOTY2ODksIDk2Njk3LCA5NjcwMywgCisgICAgOTY3MTgsIDk2NzI0LCA5NjcyOSwgOTY3MzYsIDk2NzM5LCA5Njc0NSwgOTY3NTIsIDk2NzU4LCA5Njc2NiwgOTY3NzUsIAorICAgIDk2NzgzLCA5Njc4OSwgOTY3OTgsIDQ2NzYwLCA5NjgxMiwgOTY4MTcsIDk2ODIzLCAxNjE5NSwgOTY4MjgsIDk2ODQxLCAKKyAgICA5Njg1MywgOTY4NjIsIDk2ODcwLCA5Njg3NywgOTY4ODEsIDk2ODg1LCA5Njg4OCwgOTY4OTUsIDk2OTAyLCA5NjkxMCwgCisgICAgOTY5MTgsIDk2OTI3LCA5NjkzNSwgMTYxMDAsIDk2OTQzLCA5Njk0OCwgOTY5NTIsIDk2OTY0LCA5Njk3MSwgOTY5NzgsIAorICAgIDk2OTg3LCA4NzcsIDk2OTk3LCA5NzAwNiwgOTcwMTcsIDI5NDUsIDk3MDIxLCA5NzAyNSwgOTcwMzEsIDk3MDQ0LCA5NzA1NiwgCisgICAgOTcwNjYsIDk3MDc1LCA5NzA4NywgMjg3MDEsIDk3MDk4LCA5NzEwNiwgOTcxMTUsIDk3MTI2LCA5NzEzNywgOTcxNDcsIAorICAgIDk3MTU3LCA5NzE2NiwgOTcxNzQsIDEyNDc0LCA5NzE4MSwgOTcxODUsIDk3MTg4LCA5NzE5MywgOTcxOTgsIDk3MjAyLCAKKyAgICA5NzIwOCwgMTMxNCwgOTcyMTUsIDk3MjE5LCAxMzA0MiwgOTcyMjMsIDk3MjM0LCA5NzI0MywgOTcyNTEsIDk3MjYwLCAKKyAgICA5NzI2OCwgOTcyODQsIDk3Mjk1LCA5NzMwNCwgOTczMTIsIDk3MzI0LCA5NzMzNSwgOTczNTEsIDk3MzYxLCA5NzM4MiwgCisgICAgOTczOTYsIDk3NDA5LCA5NzQxNywgOTc0MjQsIDc1MjIsIDk3NDM3LCA5NzQ0MiwgOTc0NDgsIDYyMjMsIDk3NDU0LCAKKyAgICA5NzQ1NywgOTc0NjQsIDk3NDc0LCA4NTk1LCA5NzQ4MSwgOTc0ODYsIDk3NDkxLCA5NzQ5NiwgOTc1MDQsIDk3NTEzLCAKKyAgICA5NzUyMSwgOTc1MjYsIDk3NTMzLCAxMDU5NCwgMTA2MDMsIDk3NTM5LCA5NzU1MCwgOTc1NTUsIDk3NTYxLCAyOTYxLCAKKyAgICAyOTY2LCA5NzU2NywgMTE5NjcsIDk3NTczLCA5NzU4MCwgOTc1ODcsIDk3NjAwLCA5NzYwNSwgMjI2NiwgODcsIDk3NjEzLCAKKyAgICA5NzYxOCwgOTc2MjYsIDk3NjM2LCA5NzY0NSwgOTc2NTEsIDk3NjYwLCA5NzY2OCwgOTc2NzgsIDk3NjgyLCA5NzY4NiwgCisgICAgOTc2OTEsIDk3Njk1LCA5NzcwNywgMjk4OSwgOTc3MTUsIDk3NzIzLCA5NzcyOCwgOTc3MzksIDk3NzUwLCA5Nzc2MiwgCisgICAgOTc3NzMsIDk3NzgzLCA5Nzc5MiwgMjMyNzUsIDk3Nzk3LCA5NzgwMywgOTc4MDgsIDk3ODE4LCA5NzgyOCwgOTc4MzMsIAorICAgIDMwNzEzLCA5NzgzOSwgOTc4NDQsIDk3ODUzLCAyMzI4NywgOTc4NTcsIDQ0MDQsIDE2LCA5Nzg2MiwgOTc4NzEsIDk3ODc4LCAKKyAgICA5Nzg4NSwgOTc4OTEsIDk3ODk2LCA5NzkwMCwgOTc5MDYsIDEwODUsIDk3OTExLCA5NzkxNiwgNjY2ODAsIDk3OTIxLCAKKyAgICA5NzkyNiwgOTc5MzIsIDk3OTM4LCA5Nzk0NiwgOTc5NTEsIDk3OTU5LCA5Nzk2NiwgOTc5NzIsIDk3OTc3LCA0MjkxNSwgCisgICAgNDY2NTQsIDk3OTgzLCAxODA2LCAzMiwgOTc5OTMsIDk4MDA2LCA5ODAxMSwgOTgwMTksIDk4MDI0LCA5ODAzMCwgMzAxNSwgCisgICAgMzA3ODgsIDk4MDM1LCA5ODA0MywgOTgwNTAsIDk4MDU1LCA5ODA2NCwgNjQwMDYsIDQwMjMsIDY3Nzg0LCA5ODA3MiwgCisgICAgOTgwNzYsIDE3MDAsIDE4MTgsIDk4MDgxLCA5ODA4NiwgOTgwOTMsIDE4MjIsIDI4NiwgOTgxMDAsIDk4MTA2LCA5ODExMSwgCisgICAgMzAzNywgOTgxMTUsIDk4MTIwLCA5ODEyNywgMTgyNiwgOTgxMzIsIDk4MTM4LCA5ODE0MywgOTgxNTUsIDY0NTQsIDk4MTY1LCAKKyAgICA5ODE3MiwgMTgzMywgOTgxNzgsIDk4MTgzLCA5ODE5MCwgOTgxOTcsIDk4MjEyLCA5ODIxOSwgOTgyMzAsIDk4MjM1LCAKKyAgICA5ODI0MywgMjY0NiwgOTgyNDcsIDk4MjU5LCA5ODI2NCwgOTgyNjgsIDk4Mjc0LCAzMDU5NiwgMjI3MSwgOTgyNzgsIAorICAgIDk4Mjg5LCA5ODI5MywgOTgyOTcsIDk4MzAzLCA5ODMwNywgOTgzMTYsIDk4MzIwLCA5ODMzMSwgOTgzMzUsIDIzMTcsIAorICAgIDM0OTY5LCA5ODMzOSwgOTgzNDksIDMxMjgsIDk4MzU3LCA5ODM2NiwgOTk5OSwgOTgzNzEsIDk4Mzc2LCA5ODM4MCwgCisgICAgOTgzODksIDk4Mzk2LCA5ODQwMiwgMzA5OCwgMTYyNTksIDk4NDA2LCA5ODQxOSwgOTg0MzcsIDk4NDQyLCA5ODQ1MCwgCisgICAgOTg0NTgsIDk4NDY4LCAxMDg2NiwgMTQ0MjgsIDk4NDgwLCA5ODQ5MywgOTg1MDAsIDk4NTE0LCA5ODUyMSwgOTg1MzcsIAorICAgIDk4NTQ0LCA5ODU1MCwgMjMzMjUsIDEzNjY2LCA5ODU1NywgOTg1NjQsIDk4NTc0LCA5ODU4MywgNDc0ODksIDk4NTk1LCAKKyAgICA0NzYyNCwgOTg2MDMsIDk4NjA2LCA5ODYxMiwgOTg2MTgsIDk4NjI0LCA5ODYzMCwgOTg2MzYsIDk4NjQzLCA5ODY1MCwgCisgICAgOTg2NTYsIDk4NjYyLCA5ODY2OCwgOTg2NzQsIDk4NjgwLCA5ODY4NiwgOTg2OTIsIDk4Njk4LCA5ODcwNCwgOTg3MTAsIAorICAgIDk4NzE2LCA5ODcyMiwgOTg3MjgsIDk4NzM0LCA5ODc0MCwgOTg3NDYsIDk4NzUyLCA5ODc1OCwgOTg3NjQsIDk4NzcwLCAKKyAgICA5ODc3NiwgOTg3ODIsIDk4Nzg4LCA5ODc5NCwgOTg4MDAsIDk4ODA2LCA5ODgxMiwgOTg4MTgsIDk4ODI0LCA5ODgzMCwgCisgICAgOTg4MzYsIDk4ODQyLCA5ODg0OCwgOTg4NTQsIDk4ODYwLCA5ODg2NiwgOTg4NzIsIDk4ODc4LCA5ODg4NCwgOTg4OTAsIAorICAgIDk4ODk2LCA5ODkwMiwgOTg5MDgsIDk4OTE0LCA5ODkyMCwgOTg5MjYsIDk4OTMyLCA5ODkzOCwgOTg5NDQsIDk4OTUwLCAKKyAgICA5ODk1NiwgOTg5NjMsIDk4OTY5LCA5ODk3NiwgOTg5ODMsIDk4OTg5LCA5ODk5NiwgOTkwMDMsIDk5MDA5LCA5OTAxNSwgCisgICAgOTkwMjEsIDk5MDI3LCA5OTAzMywgOTkwMzksIDk5MDQ1LCA5OTA1MSwgOTkwNTcsIDk5MDYzLCA5OTA2OSwgOTkwNzUsIAorICAgIDk5MDgxLCA5OTA4NywgOTkwOTMsIDMxMTIsIDk5NzIsIDk5MDk5LCA5OTEwNSwgOTkxMTMsIDk5MTE3LCA5NjI3NCwgMzExNiwgCisgICAgOTkxMjEsIDIzMDUyLCAxMzI5OSwgMzk3MywgOTkxMjUsIDMxMjIsIDk5MTI5LCA5OTEzOSwgOTkxNDUsIDk5MTUxLCAKKyAgICA5OTE1NywgOTkxNjMsIDk5MTY5LCA5OTE3NSwgOTkxODEsIDk5MTg3LCA5OTE5MywgOTkxOTksIDk5MjA1LCA5OTIxMSwgCisgICAgOTkyMTcsIDk5MjIzLCA5OTIyOSwgOTkyMzUsIDk5MjQxLCA5OTI0NywgOTkyNTMsIDk5MjU5LCA5OTI2NSwgOTkyNzEsIAorICAgIDk5Mjc3LCA5OTI4MywgOTkyODksIDk5Mjk2LCA5OTMwMywgOTkzMDksIDk5MzE1LCA5OTMyMSwgOTkzMjcsIDk5MzMzLCAKKyAgICA5OTMzOSwgMTMxOSwgOTkzNDUsIDk5MzUwLCA5OTM1NSwgOTkzNjAsIDk5MzY1LCA5OTM3MCwgOTkzNzUsIDk5MzgwLCAKKyAgICA5OTM4NSwgOTkzODksIDk5MzkzLCA5OTM5NywgOTk0MDEsIDk5NDA1LCA5OTQwOSwgOTk0MTMsIDk5NDE3LCA5OTQyMSwgCisgICAgOTk0MjcsIDk5NDMzLCA5OTQzOSwgOTk0NDUsIDk5NDQ5LCA5OTQ1MywgOTk0NTcsIDk5NDYxLCA5OTQ2NSwgOTk0NjksIAorICAgIDk5NDczLCA5OTQ3NywgOTk0ODEsIDk5NDg2LCA5OTQ5MSwgOTk0OTYsIDk5NTAxLCA5OTUwNiwgOTk1MTEsIDk5NTE2LCAKKyAgICA5OTUyMSwgOTk1MjYsIDk5NTMxLCA5OTUzNiwgOTk1NDEsIDk5NTQ2LCA5OTU1MSwgOTk1NTYsIDk5NTYxLCA5OTU2NiwgCisgICAgOTk1NzEsIDk5NTc2LCA5OTU4MSwgOTk1ODYsIDk5NTkxLCA5OTU5NiwgOTk2MDEsIDk5NjA2LCA5OTYxMSwgOTk2MTYsIAorICAgIDk5NjIxLCA5OTYyNiwgOTk2MzEsIDk5NjM2LCA5OTY0MSwgOTk2NDYsIDk5NjUxLCA5OTY1NiwgOTk2NjEsIDk5NjY2LCAKKyAgICA5OTY3MSwgOTk2NzYsIDk5NjgxLCA5OTY4NiwgOTk2OTEsIDk5Njk2LCA5OTcwMSwgOTk3MDYsIDk5NzExLCA5OTcxNiwgCisgICAgOTk3MjEsIDk5NzI2LCA5OTczMSwgOTk3MzYsIDk5NzQxLCA5OTc0NiwgOTk3NTEsIDk5NzU2LCA5OTc2MSwgOTk3NjYsIAorICAgIDk5NzcxLCA5OTc3NiwgOTk3ODEsIDk5Nzg2LCA5OTc5MSwgOTk3OTYsIDk5ODAxLCA5OTgwNiwgOTk4MTEsIDk5ODE2LCAKKyAgICA5OTgyMSwgOTk4MjYsIDk5ODMxLCA5OTgzNiwgOTk4NDEsIDk5ODQ2LCA5OTg1MSwgOTk4NTYsIDk5ODYxLCA5OTg2NiwgCisgICAgOTk4NzEsIDk5ODc2LCA5OTg4MSwgOTk4ODYsIDk5ODkxLCA5OTg5NiwgOTk5MDEsIDk5OTA2LCA5OTkxMSwgOTk5MTYsIAorICAgIDk5OTIxLCA5OTkyNiwgOTk5MzEsIDk5OTM2LCA5OTk0MSwgOTk5NDYsIDk5OTUxLCA5OTk1NiwgOTk5NjEsIDk5OTY2LCAKKyAgICA5OTk3MSwgOTk5NzYsIDk5OTgxLCA5OTk4NiwgOTk5OTEsIDk5OTk2LCAxMDAwMDEsIDEwMDAwNiwgMTAwMDExLCAxMDAwMTYsIAorICAgIDEwMDAyMSwgMTAwMDI2LCAxMDAwMzEsIDEwMDAzNiwgMTAwMDQxLCAxMDAwNDYsIDEwMDA1MSwgMTAwMDU2LCAxMDAwNjEsIAorICAgIDEwMDA2NiwgMTAwMDcxLCAxMDAwNzYsIDEwMDA4MSwgMTAwMDg2LCAxMDAwOTEsIDEwMDA5NiwgMTAwMTAxLCAxMDAxMDYsIAorICAgIDEwMDExMSwgMTAwMTE2LCAxMDAxMjEsIDEwMDEyNiwgMTAwMTMxLCAxMDAxMzYsIDEwMDE0MSwgMTAwMTQ2LCAxMDAxNTEsIAorICAgIDEwMDE1NiwgMTAwMTYxLCAxMDAxNjYsIDEwMDE3MSwgMTAwMTc2LCAxMDAxODEsIDEwMDE4NiwgMTAwMTkxLCAxMDAxOTYsIAorICAgIDEwMDIwMSwgMTAwMjA2LCAxMDAyMTEsIDEwMDIxNiwgMTAwMjIxLCAxMDAyMjYsIDEwMDIzMSwgMTAwMjM2LCAxMDAyNDEsIAorICAgIDEwMDI0NiwgMTAwMjUxLCAxMDAyNTYsIDEwMDI2MSwgMTAwMjY2LCAxMDAyNzEsIDEwMDI3NiwgMTAwMjgxLCAxMDAyODYsIAorICAgIDEwMDI5MSwgMTAwMjk2LCAxMDAzMDEsIDEwMDMwNiwgMTAwMzExLCAxMDAzMTYsIDEwMDMyMSwgMTAwMzI2LCAxMDAzMzEsIAorICAgIDEwMDMzNiwgMTAwMzQxLCAxMDAzNDYsIDEwMDM1MSwgMTAwMzU2LCAxMDAzNjEsIDEwMDM2NiwgMTAwMzcxLCAxMDAzNzcsIAorICAgIDEwMDM4MiwgMTAwMzg3LCAxMDAzOTIsIDEwMDM5NywgMTAwNDAyLCAxMDA0MDcsIDEwMDQxMiwgMTAwNDE4LCAxMDA0MjMsIAorICAgIDEwMDQyOCwgMTAwNDMzLCAxMDA0MzgsIDEwMDQ0MywgMTAwNDQ4LCAxMDA0NTMsIDEwMDQ1OCwgMTAwNDYzLCAxMDA0NjgsIAorICAgIDEwMDQ3MywgMTAwNDc4LCAxMDA0ODMsIDEwMDQ4OCwgMTAwNDkzLCAxMDA0OTgsIDEwMDUwMywgMTAwNTA4LCAxMDA1MTMsIAorICAgIDEwMDUxOCwgMTAwNTIzLCAxMDA1MjgsIDEwMDUzMywgMTAwNTM4LCAxMDA1NDMsIDEwMDU0OCwgMTAwNTUzLCAxMDA1NTgsIAorICAgIDEwMDU2MywgMTAwNTY4LCAxMDA1NzMsIDEwMDU3OCwgMTAwNTg3LCAxMDA1OTIsIDEwMDYwMSwgMTAwNjA2LCAxMDA2MTUsIAorICAgIDEwMDYyMCwgMTAwNjI5LCAxMDA2MzQsIDEwMDY0MywgMTAwNjQ4LCAxMDA2NTcsIDEwMDY2MiwgMTAwNjcxLCAxMDA2NzYsIAorICAgIDEwMDY4NSwgMTAwNjkwLCAxMDA2OTUsIDEwMDcwNCwgMTAwNzA4LCAxMDA3MTcsIDEwMDcyMiwgMTAwNzMxLCAxMDA3MzYsIAorICAgIDEwMDc0NSwgMTAwNzUwLCAxMDA3NTksIDEwMDc2NCwgMTAwNzczLCAxMDA3NzgsIDEwMDc4NywgMTAwNzkyLCAxMDA4MDEsIAorICAgIDEwMDgwNiwgMTAwODE1LCAxMDA4MjAsIDEwMDgyOSwgMTAwODM0LCAxMDA4NDMsIDEwMDg0OCwgMTAwODUzLCAxMDA4NTgsIAorICAgIDEwMDg2MywgMTAwODY4LCAxMDA4NzMsIDEwMDg3OCwgMTAwODgyLCAxMDA4ODcsIDEwMDg5MiwgMTAwODk3LCAxMDA5MDIsIAorICAgIDEwMDkwNywgMTAwOTEyLCAxMDA5MTgsIDEwMDkyMywgMTAwOTI4LCAxMDA5MzMsIDEwMDkzOSwgMTAwOTQzLCAxMDA5NDgsIAorICAgIDEwMDk1NCwgMTAwOTU5LCAxMDA5NjQsIDEwMDk2OSwgMTAwOTc0LCAxMDA5NzksIDEwMDk4NCwgMTAwOTg5LCAxMDA5OTQsIAorICAgIDEwMDk5OSwgMTAxMDA0LCAxMDEwMTAsIDEwMTAxNSwgMTAxMDIwLCAxMDEwMjUsIDEwMTAzMSwgMTAxMDM2LCAxMDEwNDEsIAorICAgIDEwMTA0NiwgMTAxMDUxLCAxMDEwNTcsIDEwMTA2MiwgMTAxMDY3LCAxMDEwNzIsIDEwMTA3NywgMTAxMDgyLCAxMDEwODgsIAorICAgIDEwMTA5MywgMTAxMDk4LCAxMDExMDMsIDEwMTEwOCwgMTAxMTEzLCAxMDExMTgsIDEwMTEyMywgMTAxMTI4LCAxMDExMzMsIAorICAgIDEwMTEzOCwgMTAxMTQzLCAxMDExNDgsIDEwMTE1MywgMTAxMTU4LCAxMDExNjMsIDEwMTE2OCwgMTAxMTczLCAxMDExNzgsIAorICAgIDEwMTE4MywgMTAxMTg4LCAxMDExOTMsIDEwMTE5OCwgMTAxMjAzLCAxMDEyMDksIDEwMTIxNSwgMTAxMjIxLCAxMDEyMjYsIAorICAgIDEwMTIzMSwgMTAxMjM2LCAxMDEyNDEsIDEwMTI0NywgMTAxMjUzLCAxMDEyNTksIDEwMTI2NCwgMTAxMjY5LCAxMDEyNzQsIAorICAgIDEwMTI4MCwgMTAxMjg1LCAxMDEyOTAsIDEwMTI5NSwgMTAxMzAwLCAxMDEzMDUsIDEwMTMxMCwgMTAxMzE1LCAxMDEzMjAsIAorICAgIDEwMTMyNSwgMTAxMzMwLCAxMDEzMzUsIDEwMTM0MCwgMTAxMzQ1LCAxMDEzNTAsIDEwMTM1NSwgMTAxMzYwLCAxMDEzNjYsIAorICAgIDEwMTM3MiwgMTAxMzc4LCAxMDEzODMsIDEwMTM4OCwgMTAxMzkzLCAxMDEzOTgsIDEwMTQwNCwgMTAxNDEwLCAxMDE0MTYsIAorICAgIDEwMTQyMSwgMTAxNDI2LCAxMDE0MzEsIDEwMTQzNiwgMTAxNDQxLCAxMDE0NDYsIDEwMTQ1MSwgMTAxNDU2LCAxMDE0NjEsIAorICAgIDE3Njg2LCAxMDE0NjYsIDEwMTQ3MiwgMTAxNDc3LCAxMDE0ODIsIDEwMTQ4NywgMTAxNDkyLCAxMDE0OTcsIDEwMTUwMywgCisgICAgMTAxNTA4LCAxMDE1MTMsIDEwMTUxOCwgMTAxNTIzLCAxMDE1MjgsIDEwMTUzNCwgMTAxNTM5LCAxMDE1NDQsIDEwMTU0OSwgCisgICAgMTAxNTU0LCAxMDE1NTksIDEwMTU2NCwgMTAxNTY5LCAxMDE1NzQsIDEwMTU3OSwgMTAxNTg0LCAxMDE1ODksIDEwMTU5NCwgCisgICAgMTAxNTk5LCAxMDE2MDQsIDEwMTYwOSwgMTAxNjE0LCAxMDE2MTksIDEwMTYyNCwgMTAxNjI5LCAxMDE2MzQsIDEwMTYzOSwgCisgICAgMTAxNjQ0LCAxMDE2NTAsIDEwMTY1NSwgMTAxNjYwLCAxMDE2NjUsIDEwMTY3MCwgMTAxNjc1LCAxMDE2ODAsIDEwMTY4NSwgCisgICAgMTAxNjkwLCAxMDE2OTUsIDEwMTcwMCwgMTAxNzA1LCAxMDE3MTAsIDEwMTcxNSwgMTAxNzIwLCAxMDE3MjUsIDEwMTczMCwgCisgICAgMTAxNzM1LCAxMDE3NDAsIDEwMTc0NSwgMTAxNzUwLCAxMDE3NTUsIDEwMTc2MCwgMTAxNzY1LCAxMDE3NzAsIDEwMTc3NSwgCisgICAgMTAxNzgwLCAxMDE3ODUsIDEwMTc5MCwgMTAxNzk1LCAxMDE4MDAsIDEwMTgwNSwgMTAxODEwLCAxMDE4MTUsIDEwMTgyMCwgCisgICAgMTAxODI1LCAxMDE4MzAsIDEwMTgzNSwgMTAxODQwLCAxMDE4NDUsIDEwMTg1MCwgMTAxODU2LCAxMDE4NjEsIDEwMTg2NiwgCisgICAgMTAxODcxLCAxMDE4NzYsIDEwMTg4MSwgMTAxODg2LCAxMDE4OTEsIDEwMTg5NiwgMTAxOTAxLCAxMDE5MDYsIDEwMTkxMSwgCisgICAgMTAxOTE3LCAxMDE5MjIsIDEwMTkyOCwgMTAxOTMzLCAxMDE5MzgsIDEwMTk0MywgMTAxOTQ4LCAxMDE5NTMsIDEwMTk1OCwgCisgICAgMTAxOTY0LCAxMDE5NjksIDEwMTk3NCwgMTAxOTgwLCAxMDE5ODUsIDEwMTk5MCwgMTAxOTk1LCAxMDIwMDAsIDEwMjAwNSwgCisgICAgMTAyMDExLCAxMDIwMTcsIDEwMjAyMiwgMTAyMDI3LCAxMzMyMSwgMTAyMDMyLCAxMDIwMzcsIDEwMjA0MiwgMTAyMDQ3LCAKKyAgICAxMDIwNTIsIDEwMjA1NywgMTAyMDYyLCAxMDIwNjcsIDEwMjA3MiwgMTAyMDc3LCAxMDIwODIsIDEwMjA4NywgMTAyMDkyLCAKKyAgICAxMDIwOTcsIDEwMjEwMiwgMTAyMTA3LCAxMDIxMTIsIDEwMjExNywgMTAyMTIyLCAxMDIxMjcsIDEwMjEzMiwgMTAyMTM3LCAKKyAgICAxMDIxNDIsIDEwMjE0NywgMTAyMTUyLCAxMDIxNTcsIDEwMjE2MiwgMTAyMTY3LCAxMDIxNzIsIDEwMjE3NywgMTAyMTgyLCAKKyAgICAxMDIxODcsIDEwMjE5MiwgMTAyMTk3LCAxMDIyMDIsIDEwMjIwNywgMTAyMjEyLCAxMDIyMTcsIDEwMjIyMiwgMTAyMjI3LCAKKyAgICAxMDIyMzIsIDEwMjIzNywgMTAyMjQyLCAxMDIyNDcsIDEwMjI1MiwgMTAyMjU3LCAxMDIyNjIsIDEwMjI2NywgMTAyMjcyLCAKKyAgICAxMDIyNzcsIDEwMjI4MiwgMTAyMjg3LCAxMDIyOTIsIDEwMjI5NywgMTAyMzAyLCAxMDIzMDcsIDEwMjMxMiwgMTAyMzE3LCAKKyAgICAxMDIzMjIsIDEwMjMyNywgMTAyMzMyLCAxMDIzMzcsIDEwMjM0MiwgMTAyMzQ3LCAxMDIzNTIsIDEwMjM1OCwgMTAyMzYzLCAKKyAgICAxMDIzNjgsIDEwMjM3MywgMTAyMzc4LCAxMDIzODQsIDEwMjM4OSwgMTAyMzk0LCAxMDIzOTksIDEwMjQwNCwgMTAyNDA5LCAKKyAgICAxMDI0MTQsIDEwMjQyMCwgMTAyNDI1LCAxMDI0MzAsIDEwMjQzNSwgMTAyNDQwLCAxMDI0NDUsIDEwMjQ1MSwgMTAyNDU2LCAKKyAgICAxMDI0NjEsIDEwMjQ2NiwgMTAyNDcxLCAxMDI0NzYsIDEwMjQ4MiwgMTAyNDg3LCAxMDI0OTIsIDEwMjQ5NywgMTAyNTAyLCAKKyAgICAxMDI1MDcsIDEwMjUxMywgMTAyNTE5LCAxMDI1MjQsIDEwMjUyOSwgMTAyNTM0LCAxMDI1NDAsIDEwMjU0NiwgMTAyNTUyLCAKKyAgICAxMDI1NTcsIDEwMjU2MiwgMTAyNTY4LCAxMDI1NzQsIDEwMjU3OSwgMTAyNTg1LCAxMDI1OTEsIDEwMjU5NywgMTAyNjAyLCAKKyAgICAxMDI2MDcsIDEwMjYxMywgMTAyNjE4LCAxMDI2MjQsIDEwMjYyOSwgMTAyNjM1LCAxMDI2NDQsIDEwMjY0OSwgMTAyNjU0LCAKKyAgICAxMDI2NjAsIDEwMjY2NSwgMTAyNjcxLCAxMDI2NzYsIDEwMjY4MSwgMTAyNjg2LCAxMDI2OTEsIDEwMjY5NiwgMTAyNzAxLCAKKyAgICAxMDI3MDYsIDEwMjcxMSwgMTAyNzE2LCAxMDI3MjEsIDEwMjcyNiwgMTAyNzMxLCAxMDI3MzYsIDEwMjc0MSwgMTAyNzQ2LCAKKyAgICAxMDI3NTEsIDEwMjc1NiwgMTAyNzYxLCAxMDI3NjYsIDEwMjc3MSwgMTAyNzc2LCAxMDI3ODEsIDEwMjc4NiwgMTAyNzkxLCAKKyAgICAxMDI3OTYsIDEwMjgwMSwgMTAyODA2LCAxMDI4MTEsIDEwMjgxNiwgMTAyODIxLCAxMDI4MjYsIDEwMjgzMiwgMTAyODM4LCAKKyAgICAxMDI4NDQsIDEwMjg0OSwgMTAyODU0LCAxMDI4NTksIDEwMjg2NCwgMTAyODY5LCAxMDI4NzQsIDEwMjg3OSwgMTAyODg0LCAKKyAgICAxMDI4ODksIDEwMjg5NCwgMTAyODk5LCAxMDI5MDQsIDEwMjkwOSwgMTAyOTE0LCAxMDI5MTksIDEwMjkyNCwgMTAyOTI5LCAKKyAgICAxMDI5MzQsIDEwMjkzOSwgMTAyOTQ0LCAxMDI5NTAsIDEwMjk1NiwgMTAyOTYxLCAxMDI5NjcsIDEwMjk3MiwgMTAyOTc3LCAKKyAgICAxMDI5ODMsIDEwMjk4OCwgMTAyOTk0LCAxMDI5OTksIDEwMzAwNSwgMTAzMDEwLCAxMDMwMTYsIDEwMzAyMSwgMTAzMDI3LCAKKyAgICAxMDMwMzIsIDEwMzAzNywgMTAzMDQyLCAxMDMwNDcsIDEwMzA1MiwgMTAzMDU3LCAxMDMwNjIsIDk5MTQwLCA5OTE0NiwgCisgICAgOTkxNTIsIDk5MTU4LCAxMDMwNjgsIDk5MTY0LCA5OTE3MCwgMTAzMDc0LCA5OTE3NiwgOTkxODIsIDk5MTg4LCA5OTE5NCwgCisgICAgOTkyMDAsIDk5MjA2LCA5OTIxMiwgOTkyMTgsIDk5MjI0LCAxMDMwODAsIDk5MjMwLCA5OTIzNiwgOTkyNDIsIDEwMzA4NiwgCisgICAgOTkyNDgsIDk5MjU0LCA5OTI2MCwgOTkyNjYsIDEwMzA5MiwgOTkyNzIsIDk5Mjc4LCA5OTI4NCwgOTkzMDQsIDEwMzA5OCwgCisgICAgMTAzMTA0LCA5OTMxMCwgMTAzMTEwLCA5OTMxNiwgOTkzMjIsIDk5MzI4LCA5OTMzNCwgOTkzNDAsIDMxMzksIDMxNDQsIAorICAgIDEwMzExNiwgMTAzMTIxLCAxMDMxMjQsIDEwMzEzMCwgMTAzMTM2LCAxMDMxNDMsIDEwMzE0OCwgMTAzMTUzLCAyMzIyLCAKIH07CiAKIC8qIGNvZGUtPm5hbWUgcGhyYXNlYm9vayAqLwogI2RlZmluZSBwaHJhc2Vib29rX3NoaWZ0IDgKLSNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAyMDEKKyNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAxOTgKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tbXSA9IHsKLSAgICAwLCAyMTEsIDIyOCwgMjQwLCAyMTIsIDgyLCAyMTcsIDMxLCA4MiwgNDIsIDU0LCAyNDMsIDk3LCA1NCwgMjE4LCAyNDYsIAotICAgIDU0LCAyNTAsIDIzNSwgMjUwLCAxNjAsIDQ5LCAyMTksIDc2LCA1MCwgMjE5LCA3NiwgMjUwLCA1OSwgOTEsIDU0LCAyNDUsIAotICAgIDIzMywgMjM1LCAyMTksIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTIsIDAsIDE3LCAyMDIsIDg0LCAxNywgMTA1LCAxNywgMTA4LCAKLSAgICAxNywgMTQ3LCAxNywgMTQ5LCAxNywgMTcwLCAxNywgMTk1LCAxNywgMjEzLCAxMTEsIDE3LCAxOTksIDE3LCAyMjIsIDYzLCAKLSAgICAyNDUsIDI0MiwgMjEzLCAxNDMsIDIyNywgMTc5LCA1NCwgMjQxLCAzNSwgNTQsIDIzNywgMjQ3LCA1NCwgMjE3LCA0NywgODIsIAotICAgIDI0NSwgMjMxLCAyNTAsIDQ5LCA4LCA2LCAxLCA2MywgOCwgNiwgMSwgMjQ5LCAyNTUsIDgsIDYsIDEsIDI0NywgMTI1LCA4LCAKLSAgICA2LCAxLCAyNDUsIDUxLCA4LCA2LCAxLCA3NCwgOCwgNiwgMSwgMjQwLCAxNzQsIDgsIDYsIDEsIDIzOSwgNzUsIDgsIDYsIDEsIAotICAgIDIzNywgMTcxLCA4LCA2LCAxLCA3NSwgOCwgNiwgMSwgMjMwLCAxODQsIDgsIDYsIDEsIDIzMCwgNTQsIDgsIDYsIDEsIDE1OSwgCi0gICAgOCwgNiwgMSwgMjI2LCAxODUsIDgsIDYsIDEsIDIyMywgMTYzLCA4LCA2LCAxLCA3OCwgOCwgNiwgMSwgMjE5LCAxODQsIDgsIAotICAgIDYsIDEsIDIxNywgMTM0LCA4LCA2LCAxLCAxNDYsIDgsIDYsIDEsIDE5NCwgOCwgNiwgMSwgMjEwLCA2OSwgOCwgNiwgMSwgCi0gICAgNjgsIDgsIDYsIDEsIDIwNiwgMTY0LCA4LCA2LCAxLCAyMDQsIDE0NCwgOCwgNiwgMSwgMjAzLCAxOTYsIDgsIDYsIDEsIAotICAgIDIwMywgMTI0LCA4LCA2LCAxLCAyMDIsIDE1OSwgNDksIDUxLCAxNTUsIDIxNiwgNzQsIDIxMiwgMCwgNTAsIDUxLCAxNTUsIAotICAgIDI0NiwgNTMsIDI1MSwgMTM4LCAxMjQsIDIyNywgMTE0LCAyMzcsIDI1NCwgMjUxLCAxMzgsIDgsIDUsIDEsIDYzLCA4LCA1LCAKLSAgICAxLCAyNDksIDI1NSwgOCwgNSwgMSwgMjQ3LCAxMjUsIDgsIDUsIDEsIDI0NSwgNTEsIDgsIDUsIDEsIDc0LCA4LCA1LCAxLCAKLSAgICAyNDAsIDE3NCwgOCwgNSwgMSwgMjM5LCA3NSwgOCwgNSwgMSwgMjM3LCAxNzEsIDgsIDUsIDEsIDc1LCA4LCA1LCAxLCAyMzAsIAotICAgIDE4NCwgOCwgNSwgMSwgMjMwLCA1NCwgOCwgNSwgMSwgMTU5LCA4LCA1LCAxLCAyMjYsIDE4NSwgOCwgNSwgMSwgMjIzLCAKLSAgICAxNjMsIDgsIDUsIDEsIDc4LCA4LCA1LCAxLCAyMTksIDE4NCwgOCwgNSwgMSwgMjE3LCAxMzQsIDgsIDUsIDEsIDE0NiwgOCwgCi0gICAgNSwgMSwgMTk0LCA4LCA1LCAxLCAyMTAsIDY5LCA4LCA1LCAxLCA2OCwgOCwgNSwgMSwgMjA2LCAxNjQsIDgsIDUsIDEsIAotICAgIDIwNCwgMTQ0LCA4LCA1LCAxLCAyMDMsIDE5NiwgOCwgNSwgMSwgMjAzLCAxMjQsIDgsIDUsIDEsIDIwMiwgMTU5LCA0OSwgCi0gICAgMjQ1LCA5MywgMTU1LCA4MCwgMjI3LCAxMTQsIDUwLCAyNDUsIDkzLCAxNTUsIDIwOCwgMjI3LCAyMjEsIDE5MCwgMjExLCAKLSAgICAyMjgsIDIzMCwgMjM5LCAyNDAsIDIxMiwgODIsIDI0NiwgMjIwLCA1NCwgMjE4LCAyMCwgNTQsIDI0NSwgOTIsIDU0LCAyMDMsIAotICAgIDQzLCA1NCwgMjQ3LCAyMDMsIDE0MiwgMjE0LCAxNjgsIDU0LCAyNDMsIDIzMSwgMjQ1LCAxNjksIDU0LCAyNDAsIDQxLCAKLSAgICAyMTksIDI0MCwgMjMxLCAzMSwgMjI3LCAyMTcsIDUyLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIyMSwgMTY2LCA1NCwgCi0gICAgMjEyLCA3LCAyMzUsIDIyMCwgMjE2LCAxMjksIDU0LCAyMjUsIDE3MCwgMjQ0LCA1NSwgNTQsIDIxOCwgNzUsIDU0LCAyMTAsIAotICAgIDE5OSwgMTA4LCAyMTAsIDE5OSwgMTQ3LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDIyNCwgMTUzLCA1NCwgMjE4LCAxMjYsIDU0LCAKLSAgICAxMDEsIDI0MywgODUsIDI0NiwgMjMxLCAyMTAsIDE5OSwgMTA1LCAyMjUsIDgwLCAyMTksIDI0MCwgMjMxLCAzMSwgMjE2LCAKLSAgICAxMSwgNTIsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIxNywgNTUsIDIwNCwgCi0gICAgMTYxLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIDIzMCwgMjM5LCAKLSAgICAyMTcsIDQ3LCA4MiwgOCwgNiwgMSwgMzQsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMTY1LCA4LCA2LCAxLCAzNCwgCi0gICAgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMzQsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAzNCwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIAotICAgIDM0LCAzLCAyMTUsIDI1MywgNTUsIDgsIDYsIDEsIDI1MSwgMTA5LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzEsIAotICAgIDgsIDYsIDEsIDE4OCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgCi0gICAgNTIsIDgsIDYsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgCi0gICAgMjM1LCAyMDYsIDMsIDE2NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAKLSAgICAyNDMsIDIzMSwgOCwgNiwgMSwgMjQwLCAyNDMsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAxNjUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MiwgOCwgNiwgCi0gICAgMSwgMTU4LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMjIzLCAyMjQsIDU0LCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxMDYsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMTA2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMTY1LCA4LCAKLSAgICA2LCAxLCAyMDksIDQwLCA4LCA1LCAxLCAyMTMsIDU3LCAxOTQsIDgsIDUsIDEsIDM0LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCi0gICAgMzQsIDMsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDM0LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMzQsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAyNTEsIDEwOSwgOCwgNSwgCi0gICAgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAxODgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxODgsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAxNjUsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDYsIAotICAgIDUyLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDI0MCwgMjQzLCA4LCA1LCAxLCAyMjMsIDE2NCwgCi0gICAgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE1OCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMTY1LCA4LCA1LCAxLCAKLSAgICAxNTgsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzEsIAotICAgIDI0MywgMTM3LCA1NCwgOCwgNSwgMSwgMTU4LCAzLCA5NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCi0gICAgMTA2LCAzLCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgOCwgNSwgCi0gICAgMSwgMjAzLCAxMjUsIDMsIDE2NSwgOCwgNSwgMSwgMjA5LCA0MCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDI0MywgMjMxLCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMzQsIDMsIDI0NywgCi0gICAgMjE0LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDM0LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAzNCwgMywgCi0gICAgMjIwLCA2MiwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDE2NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMjQ3LCAxMjYsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyNDcsIDEyNiwgCi0gICAgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ3LCAyOSwgCi0gICAgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDI0NywgMjksIDgsIDUsIDEsIAotICAgIDI0NSwgNTIsIDMsIDI0NywgMjksIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDk1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCA5NSwgOCwgCi0gICAgNiwgMSwgMTg4LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMTg4LCAzLCAyNDcsIAotICAgIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMTg4LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgNzAsIDU1LCA4LCA2LCAxLCAxODgsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MiwgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxODgsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDI0NiwgNTIsIDgsIDUsIAotICAgIDEsIDIzOSwgNzYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAyMzksIDc2LCAKLSAgICAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCA3MCwgNTUsIDgsIAotICAgIDYsIDEsIDIzOSwgNzYsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMzksIDc2LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjM3LCAKLSAgICAxNzIsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgOTUsIAotICAgIDgsIDUsIDEsIDIzNywgMTcyLCAzLCA5NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDIyNSwgMTcwLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyMTQsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIDIxNCwgCi0gICAgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYyLCA4LCA2LCAxLCAKLSAgICAyMzUsIDIwNiwgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDMsIDg0LCA3NSwgOCwgNiwgMzIsIDIzMSwgODEsIDgsIDUsIDMyLCAKLSAgICAyMzEsIDgxLCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjMwLCAxODUsIDMsIDI0NiwgNTIsIDgsIAotICAgIDYsIDEsIDIzMCwgNTUsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjI4LCAKLSAgICAyMzEsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxNjUsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxNjUsIDgsIDYsIDEsIDIyOCwgCi0gICAgMTMxLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgCi0gICAgMjQ3LCAyOSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDI0MywgCi0gICAgODUsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDI0MywgODUsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA5NSwgOCwgNSwgCi0gICAgMSwgMjI4LCAxMzEsIDMsIDk1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMTY1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTY1LCAKLSAgICA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgCi0gICAgMjIzLCAxNjQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMjMsIDE2NCwgCi0gICAgMjE3LCAyNTEsIDI0NywgMTM3LCAyNTAsIDE2MCwgOCwgNiwgMSwgMjQxLCA3OCwgOCwgNSwgMSwgMjQxLCA3OCwgOCwgNiwgCi0gICAgMSwgMTU4LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMTU4LCAzLCAyNDcsIAotICAgIDIxNCwgOCwgNSwgMSwgMTU4LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMTU4LCAzLCA1MiwgMTY1LCA4LCA1LCAxLCAxNTgsIAotICAgIDMsIDUyLCAxNjUsIDgsIDYsIDMyLCAyMjAsIDczLCA4LCA1LCAzMiwgMjIwLCA3MywgOCwgNiwgMSwgMjE3LCAxLCAzLCAKLSAgICAxNjUsIDgsIDUsIDEsIDIxNywgMSwgMywgMTY1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMTcsIAotICAgIDEsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMTcsIDEsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxNywgMSwgMywgMjQ3LCAyOSwgCi0gICAgOCwgNiwgMSwgMjE1LCA5NCwgMywgMTY1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAxNjUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIAotICAgIDI0NiwgNTIsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NiwgMjMxLCA4LCAKLSAgICA1LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjE1LCAKLSAgICA5NCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NiwgCi0gICAgMjMxLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAKLSAgICAyMTAsIDcwLCAzLCA5NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgOTUsIDgsIDYsIDEsIDEwNiwgMywgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDEwNiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAKLSAgICAxNzAsIDgsIDYsIDEsIDEwNiwgMywgMjQ3LCAyMTQsIDgsIDUsIDEsIDEwNiwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDEwNiwgCi0gICAgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNiwgMSwgMTA2LCAzLCA1MiwgMTY1LCAKLSAgICA4LCA1LCAxLCAxMDYsIDMsIDUyLCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMTA2LCAzLCAyMjAsIAotICAgIDYyLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDI0NiwgNTIsIDgsIDYsIAotICAgIDEsIDIwMywgMTI1LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMTY1LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMTY1LCAKLSAgICA4LCA2LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMDIsIAotICAgIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDE2MywgMTk0LCA4LCA1LCAKLSAgICAxLCA2NiwgMywgOTUsIDgsIDYsIDEsIDY2LCAzLCAxMTMsIDgsIDYsIDEsIDY2LCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgNjYsIAotICAgIDMsIDIwOCwgMTQyLCA4LCA2LCAxLCAxNDMsIDE5NSwgOCwgNSwgMSwgMTQzLCAxOTUsIDgsIDYsIDEsIDE3MSwgNzgsIDgsIAotICAgIDYsIDEsIDI0NywgMTI2LCAzLCAxMTMsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxMTMsIDgsIDYsIDEsIDI1MSwgODQsIDI0NSwgCi0gICAgNTEsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDExMywgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIAotICAgIDI0NSwgNTIsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjQ0LCAzNywgOCwgNiwgMSwgMjE2LCA3MywgNzQsIAotICAgIDgsIDYsIDEsIDIxNCwgMTkyLCA4LCA2LCAxLCAxNzEsIDc0LCA4LCA2LCAxLCAyNDAsIDE3NSwgMywgMTEzLCA4LCA1LCAxLCAKLSAgICAyNDAsIDE3NSwgMywgMTEzLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAxMTMsIDgsIDYsIDEsIDIzOCwgMjM1LCA4LCA1LCAxLCAKLSAgICAyMzUsIDI1NSwgOCwgNiwgMSwgMjMwLCAyMzAsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgCi0gICAgMywgMTEzLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAxMTMsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxNDIsIDgsIDUsIDEsIAotICAgIDIyOCwgMjYsIDMsIDk1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjI2LCAxODUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA0OSwgCi0gICAgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTYzLCA1MCwgMjI3LCAyMTAsIDgsIDYsIDEsIDE1OCwgMywgMTAxLCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDUzLCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgNTMsIDgsIDYsIDEsIDIyMCwgCi0gICAgNTcsIDgsIDUsIDEsIDIyMCwgNTcsIDgsIDYsIDEsIDIxOSwgMTg1LCAzLCAxMTMsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAKLSAgICAxMTMsIDgsIDEsIDIwMiwgMjE2LCA4LCA2LCAxLCAxNDMsIDEwOCwgOCwgNSwgMSwgMTQzLCAxMDgsIDgsIDYsIDEsIDI0MSwgCi0gICAgNywgOCwgMSwgMjE2LCA3MywgMjQxLCA4LCAyMjcsIDE0LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyMTksIDE0MiwgMTEzLCA4LCAKLSAgICA2LCAxLCAyMTAsIDcwLCAzLCAxMTMsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDExMywgOCwgNiwgMSwgMjEwLCA3MCwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTMsIDgsIDUsIDEsIDEwNiwgMywgMjM2LCA1MywgOCwgNiwgCi0gICAgMSwgMjA2LCAyMTYsIDgsIDYsIDEsIDIwNiwgMTY1LCAzLCAxMTMsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAxMTMsIDgsIDUsIAotICAgIDEsIDIwMywgMTI1LCAzLCAxMTMsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCA5NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDk1LCAKLSAgICA4LCA2LCAxLCAyNDAsIDE3NywgOCwgNiwgMSwgMjQwLCAxNzgsIDIxNiwgNzIsIDgsIDUsIDEsIDI0MCwgMTc4LCAyMTYsIAotICAgIDcyLCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjA5LCAyNDgsIDgsIDEsIDEyMCwgMywgOTUsIDgsIDYsIDEsIDE0MywgMTcwLCAKLSAgICA4LCA1LCAxLCAxNDMsIDE3MCwgOCwgMSwgMjMwLCAyMzksIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCAxLCAyMDMsIAotICAgIDE5OSwgOCwgMSwgMjQ0LCAzMCwgMjQ2LCAyNywgOCwgMSwgMjI3LCAyNTQsIDI0NiwgMjcsIDgsIDEsIDI1MCwgMjQ4LCAKLSAgICAyNDYsIDI3LCA4LCAxLCAyMTYsIDc5LCAyNDYsIDI3LCA4LCA2LCAxLCAyNDIsIDEsIDMsIDI0NywgMjksIDgsIDYsIDEsIAotICAgIDI0NSwgNTIsIDMsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyNDIsIDEsIDMsIDI0NywgMjksIDgsIAotICAgIDYsIDEsIDIyNywgODEsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA1LCAxLCAyMzAsIDE4NCwgOCwgNSwgMSwgMjI3LCA4MSwgOCwgCi0gICAgNiwgMSwgMjIyLCA0OSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDUsIDEsIDIzMCwgMTg0LCA4LCA1LCAxLCAyMjIsIDQ5LCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIAotICAgIDI5LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMTU4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAKLSAgICAxNTgsIDMsIDI0NywgMjksIDgsIDYsIDEsIDEwNiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTA2LCAzLCAyNDcsIDI5LCA4LCAKLSAgICA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIAotICAgIDE3MCwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIAotICAgIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDI0NywgMjksIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIAotICAgIDI1LCAyNDcsIDI5LCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgCi0gICAgMjQzLCAyMzIsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjA3LCAxNzQsIDc0LCA4LCA2LCAxLCAzNCwgMywgMjQzLCAyMzIsIAotICAgIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMzQsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDM0LCAzLCA3MCwgCi0gICAgODcsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMzQsIDMsIDcwLCA4NywgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAyNTEsIAotICAgIDExMCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDI1MSwgMTEwLCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgCi0gICAgOTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDk1LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzksIAotICAgIDc2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyNDcsIAotICAgIDI5LCA4LCA2LCAxLCAxNTgsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDE1OCwgMywgMjIwLCA2MiwgOCwgNiwgMSwgMTU4LCAzLCAKLSAgICAyMjAsIDYzLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjIwLCA2MywgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKLSAgICAyNDAsIDE3OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzMCwgMTg1LCAKLSAgICAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDIsIDAsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDUsIDEsIDIwMiwgMTU5LCA4LCA1LCAKLSAgICAxLCAyNDIsIDAsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDE2NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMTY1LCA4LCA2LCAxLCAKLSAgICAyMzUsIDI1MiwgOCwgNiwgMSwgMjAzLCAxOTksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCi0gICAgMjIzLCAxNjQsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjE1LCAyNTMsIDg3LCAyNSwgMTY1LCA4LCA1LCAxLCAKLSAgICAzNCwgMywgMjE1LCAyNTMsIDg3LCAyNSwgMTY1LCA4LCA2LCAxLCAyNTEsIDExMCwgMywgMTY1LCA4LCA1LCAxLCAyNTEsIAotICAgIDExMCwgMywgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDIxMSwgMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjExLCAzMiwgCi0gICAgMjUsIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDUyLCAyMzcsIDI1MywgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMzQsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgCi0gICAgNiwgMSwgMTg4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIAotICAgIDYsIDEsIDE1OCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAKLSAgICAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE1OCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMTcsIAotICAgIDEsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMjE3LCAxLCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDIxNywgMSwgMywgCi0gICAgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMTA2LCAKLSAgICAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAxMDYsIDMsIDIzMCwgCi0gICAgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIAotICAgIDI0NSwgMjM0LCA1NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjQ1LCAyMzQsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAKLSAgICAyNDUsIDIzNCwgNTYsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NSwgMjM0LCA1NiwgOCwgNiwgMSwgMjAyLCAyMzQsIDgsIDUsIAotICAgIDEsIDIwMiwgMjM0LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NywgCi0gICAgMjksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAxNjMsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjQ1LCAKLSAgICA5NSwgOCwgNiwgMSwgMjE5LCAyMTYsIDgsIDUsIDEsIDIxOSwgMjE2LCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMTEzLCA4LCAKLSAgICA1LCAxLCAyMDIsIDE2MCwgMywgMTEzLCA4LCA2LCAxLCAzNCwgMywgNzAsIDU1LCA4LCA1LCAxLCAzNCwgMywgNzAsIDU1LCAKLSAgICA4LCA2LCAxLCAxODgsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAxNTgsIDMsIAotICAgIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjI1LCAxNzAsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMTU4LCAzLCA3MCwgCi0gICAgODcsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgODcsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAKLSAgICAyNDUsIDk1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ1LCA5NSwgOCwgCi0gICAgNSwgMSwgMjQzLCA4NCwgMjMwLCAxODQsIDgsIDUsIDEsIDI0NCwgMTMwLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjE3LCA2NiwgCi0gICAgMjQzLCAxOTEsIDgsIDYsIDEsIDM0LCAzLCA5NSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDk1LCA4LCA1LCAxLCAyNDcsIAotICAgIDEyNiwgMywgOTUsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxNDIsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0MywgMjI4LCA5NSwgCi0gICAgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjEwLCAxNjksIAotICAgIDIwOSwgMjQ4LCA4LCA2LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCA1LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCA2LCAxLCAKLSAgICA2NiwgMywgOTUsIDgsIDYsIDEsIDEwNiwgMTQyLCA4LCA2LCAxLCAyMDcsIDE3NCwgMjA2LCAxNjQsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgOTUsIDgsIDUsIDEsIDE4OCwgMywgOTUsIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCA5NSwgOCwgNSwgMSwgMjMwLCAxODUsIAotICAgIDMsIDk1LCA4LCA2LCAxLCA1LCAyMTcsIDEzNSwgMywgMjM2LCAxMTYsIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMTcsIDEzNSwgMywgCi0gICAgMjM2LCAxMTYsIDIwOSwgMjQ4LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDk1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDk1LCA4LCA2LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgOTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDYzLCA4LCAKLSAgICA1LCAxLCAyNTEsIDIsIDgsIDUsIDEsIDIwNywgMTc0LCAyNTEsIDIsIDgsIDUsIDEsIDY2LCAzLCAxMTMsIDgsIDUsIDEsIAotICAgIDE3MSwgNzgsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyMDksIDI0OCwgOCwgCi0gICAgNSwgMSwgMjQ1LCA1MiwgMywgMTEzLCA4LCA1LCAxLCAyMTYsIDczLCA3NCwgOCwgNSwgMSwgMjE0LCAxOTIsIDgsIDUsIDEsIAotICAgIDIxNCwgMTkzLCAzLCAxMTMsIDgsIDUsIDEsIDE3MSwgNzQsIDgsIDUsIDEsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDUsIDEsIAotICAgIDIxNiwgNzMsIDE3MSwgMTg4LCAzLCAxMTMsIDgsIDUsIDEsIDI0NiwgMTYsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDUsIDEsIAotICAgIDI0MywgODQsIDIzMCwgMTg1LCAzLCA5NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMTEzLCA4LCA1LCAxLCAxMzIsIDIzOSwgCi0gICAgNzUsIDgsIDEsIDUsIDYsIDIzOSwgNzUsIDgsIDUsIDEsIDIzOCwgMjM1LCA4LCA1LCAxLCAyMTYsIDE4MiwgMjM2LCA1MywgCi0gICAgOCwgNSwgMSwgMjA3LCAxNzQsIDIzNywgMTcxLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMTEzLCA4LCA1LCAxLCAyMzcsIDMyLCAKLSAgICAzLCAxMTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgNSwgMSwgMjMwLCAyMzAsIDgsIDEsIDUsIDYsIDc1LCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0OCwgMTI0LCA4LCA1LCAKLSAgICAxLCAyMjgsIDEzMSwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMjcsIDE2NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyNiwgCi0gICAgMTg1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjI2LCAxODYsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAKLSAgICAxMTMsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjE2LCA3OSwgMTEzLCAKLSAgICA4LCAxLCA1LCA2LCAyMjMsIDE2MywgOCwgNSwgMSwgMjQ4LCAyMjUsIDc4LCA4LCAxLCA1LCA2LCAyMjAsIDczLCA4LCA1LCAKLSAgICAxLCAyNDYsIDE2LCAyMjAsIDM2LCA4LCA1LCAxLCAyMTgsIDE5MiwgOCwgNSwgMSwgMjA3LCAxNzQsIDE0NiwgOCwgNSwgMSwgCi0gICAgMjA3LCAxNzQsIDIxNywgMSwgMywgMTYzLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIxNywgMSwgMywgMTEzLCA4LCAKLSAgICA1LCAxLCAyMTcsIDEsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIAotICAgIDIxNywgMSwgMywgMjM5LCAyNDAsIDgsIDUsIDEsIDIxNiwgNzMsIDIxNywgMSwgMywgMjM5LCAyNDAsIDgsIDEsIDUsIDYsIAotICAgIDE0NiwgOCwgMSwgNSwgNiwgMjMwLCAyMzksIDE0NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTEzLCA4LCA1LCAxLCAyNDEsIAotICAgIDcsIDgsIDUsIDEsIDI0MywgODQsIDIzMCwgMTg1LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCA4LCA1LCAxLCAyMTEsIDE3NCwgCi0gICAgMjE2LCA3MywgMjQxLCA3LCA4LCA1LCAxLCAyNDEsIDgsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTAsIDY5LCAKLSAgICA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDEwNiwgMTQyLCA4LCA1LCAxLCAyMDYsIDIxNiwgCi0gICAgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDExMywgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA4LCA1LCAxLCAyMDcsIAotICAgIDE3NCwgMjA0LCAxNDQsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDMsIDEyNCwgOCwgMSwgNSwgNiwgMjAzLCAxMjQsIDgsIDUsIAotICAgIDEsIDIwMiwgMTYwLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAKLSAgICAyNDAsIDE3NywgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDI0NSwgOTUsIDgsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDgsIDEsIAotICAgIDIxOCwgMTk5LCAyMDUsIDE4NiwgMjM5LCAxMjYsIDgsIDEsIDIzMCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCAxLCAKLSAgICAyMTEsIDQwLCAyNDcsIDEyNSwgOCwgMSwgMjQ4LCA3MCwgMjQ2LCAyNywgOCwgMSwgNSwgNiwgMjQ5LCAyNTUsIDgsIDUsIDEsIAotICAgIDI0NiwgMTYsIDE3MSwgNzQsIDgsIDEsIDUsIDYsIDIzOSwgNzYsIDMsIDExMywgOCwgMSwgNSwgNiwgMjM3LCAxNzEsIDgsIAotICAgIDUsIDEsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjA3LCAxNzQsIDIzMCwgNTQsIDgsIDEsIDUsIDYsIDE1OSwgCi0gICAgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIDExMywgOCwgMSwgMjM4LCA0NSwgMjExLCA2MiwgMywgOTUsIDgsIDEsIDIxNiwgNzMsIAotICAgIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCA1LCAxLCAyNDIsIDEsIDI0MywgMTkxLCA4LCA1LCAxLCAyNDQsIDMsIDI0MywgCi0gICAgMTkxLCA4LCA1LCAxLCAyNDIsIDEsIDI0MywgMTkyLCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMDgsIDIyLCAyNDMsIDE5MSwgCi0gICAgOCwgNSwgMSwgMjA5LCAxMzcsIDI0MywgMTkxLCA4LCA1LCAxLCAyMDksIDE5NCwgMjQzLCAxOTIsIDMsIDI0NSwgOTUsIDgsIAotICAgIDUsIDEsIDI0MCwgMzksIDI0MywgMTkxLCA4LCA1LCAxLCAyMjYsIDI0MSwgMjQzLCAxOTEsIDgsIDUsIDEsIDIyNiwgMTg3LCAKLSAgICAyNDMsIDE5MSwgOCwgMSwgMjQ4LCA3MCwgMjE4LCAyNDUsIDgsIDEsIDI0OCwgNzgsIDIxOCwgMjQ1LCA4LCA1LCAxLCAyMDcsIAotICAgIDE3NCwgMjM3LCAxNzIsIDMsIDIzOSwgMjQwLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjM3LCAxNzIsIDMsIDIzOSwgMjQxLCAyNSwgCi0gICAgMjA5LCAyNDgsIDY1LCAxLCA1LCAyMzcsIDE3MSwgNjUsIDEsIDUsIDIzNywgMTcyLCAzLCAxMTMsIDY1LCAxLCA1LCAyMzAsIAotICAgIDE4NCwgNjUsIDEsIDUsIDE0NiwgNjUsIDEsIDUsIDIwNywgMTc0LCAxNDYsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjE3LCAxLCAKLSAgICAzLCAxMTMsIDY1LCAxLCA1LCA2LCAyMzAsIDIzOSwgMTQ2LCA2NSwgMSwgNSwgMjA0LCAxNDQsIDY1LCAxLCA1LCAyMDMsIAotICAgIDEyNCwgNjUsIDEsIDIxNywgMjM2LCA2NSwgMSwgNTIsIDIxNywgMjM2LCA2NSwgMSwgMjA3LCAxNzQsIDI0NSwgMjMzLCA2NSwgCi0gICAgMSwgMjUwLCAxNjAsIDY1LCAxLCAyMTYsIDczLCAyNDUsIDIzMywgNjUsIDEsIDUwLCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgCi0gICAgNDksIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA2NSwgMSwgMjE2LCA3MywgMjM4LCA0NSwgMjExLCAKLSAgICA2MSwgNjUsIDEsIDQ5LCAyNTAsIDk0LCA2NSwgMSwgNTAsIDI1MCwgOTQsIDY1LCAxLCAxMTIsIDI1MCwgOTQsIDY1LCAxLCAKLSAgICAxMjEsIDI1MCwgOTQsIDY1LCAxLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjQ3LCAyOSwgNjUsIDEsIDgwLCAyMjcsIDExNCwgNjUsIAotICAgIDEsIDIyNSwgMTcwLCA2NSwgMSwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjM3LCAyNTQsIDI1MSwgMTM4LCA2NSwgMSwgCi0gICAgMTI0LCA4MCwgMjI3LCAxMTQsIDY1LCAxLCAxMjQsIDIyNSwgMTcwLCA2NSwgMSwgMTI0LCAyMzcsIDI1NCwgMjUxLCAxMzgsIAotICAgIDY1LCAxLCAxMjQsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIwOCwgODIsIDI0NSwgMjQyLCA2NSwgMSwgMTYyLCAKLSAgICAyMDgsIDgyLCAyNDUsIDI0MiwgNjUsIDEsIDI0NiwgMjE2LCA1MCwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIDI0NiwgMjE2LCAKLSAgICA0OSwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIDExMiwgMjEwLCAzLCA2NSwgMSwgMTIxLCAyMTAsIDMsIDY1LCAxLCA5MSwgNTQsIAotICAgIDY1LCAxLCAyMjQsIDEwMywgNTQsIDI0NywgMjE0LCA3MCwgNTUsIDIxNSwgMjUzLCA1NSwgMjIwLCA2MiwgNSwgMjA4LCAKLSAgICAyMjcsIDUyLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMTYsIDU4LCAxMTMsIDY1LCAxLCAyNDUsIDEzMSwgMjUxLCAKLSAgICAxMzgsIDY1LCAxLCA1LCAyMzgsIDIzNSwgNjUsIDEsIDUsIDE1OSwgNjUsIDEsIDUsIDE5NCwgNjUsIDEsIDUsIDIwMywgCi0gICAgMTk2LCA2NSwgMSwgNSwgMjE2LCA3MywgMjM4LCA0NSwgMjExLCA2MSwgNjUsIDEsIDI0MCwgMTk4LCAxNDMsIDE0MiwgNjUsIAotICAgIDEsIDEzOCwgMTQzLCAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDE0MywgMTQyLCA2NSwgMSwgCi0gICAgMjQwLCAxOTcsIDE0MywgMTQyLCA2NSwgMSwgMjAzLCAxLCAyNDQsIDI3LCAxNDMsIDgyLCA2NSwgMSwgMjAzLCA3NywgMjQ0LCAKLSAgICAyNywgMTQzLCA4MiwgNjUsIDEsIDIwNSwgMTg0LCA2NSwgMSwgMjA2LCAyNTEsIDY1LCAxLCA1MiwgMjUwLCAxNjAsIDY1LCAKLSAgICAxLCAxMjQsIDEyMSwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgMTEyLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCA0OSwgMjUwLCA5NCwgCi0gICAgNjUsIDEsIDEyNCwgNTAsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDIxNSwgMjUyLCA2NSwgMSwgMTAxLCAyMzcsIDI1NCwgMjUxLCAKLSAgICAxMzgsIDY1LCAxLCAxMDEsIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDY1LCAxLCAxMDEsIDUyLCAyNTEsIDEyNiwgMjUxLCAKLSAgICAxMzgsIDY1LCAxLCAxMjQsIDIwOCwgMjI3LCA2NSwgMSwgMjE2LCAxODgsIDI0NSwgMjQyLCA2NSwgMSwgMjQ4LCAxNDIsIAotICAgIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyNDEsIDg0LCAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjQ4LCAxNDIsIDEyNCwgMjA4LCAKLSAgICAxNjEsIDY1LCAxLCAyNDEsIDg0LCAxMjQsIDIwOCwgMTYxLCA2NSwgMSwgMjEzLCAzNCwgNjUsIDEsIDE3MSwgMjEzLCAzNCwgCi0gICAgNjUsIDEsIDEyNCwgNDksIDQ3LCAzOSwgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgCi0gICAgMjQ2LCA1MywgMjUxLCAxMzgsIDM5LCAyMDgsIDIyNywgMzksIDIyNSwgMTcwLCAzOSwgMjE5LCAxOTgsIDM5LCAyNDcsIAotICAgIDIxNCwgMzksIDcwLCA1NSwgMzksIDI0MywgMjMxLCAzOSwgMjM2LCAxMTYsIDU1LCAzOSwgMjE1LCAyNTMsIDU1LCAzOSwgCi0gICAgNTIsIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIDI0NywgMjksIDM5LCA4MCwgMjI3LCAxMTUsIDU1LCAzOSwgNTIsIDgwLCAKLSAgICAyMjcsIDExNSwgNTUsIDM5LCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgMjQ3LCA1MiwgMzksIDIzMCwgMjM5LCAyNDcsIAotICAgIDIxNCwgMzksIDIwNywgMTc0LCAyNDUsIDIzNCwgNTUsIDM5LCAyNDUsIDIzNCwgNTUsIDM5LCAyMTYsIDczLCAyNDUsIDIzNCwgCi0gICAgNTUsIDM5LCAyNDUsIDIzNCwgODcsIDIxNiwgMTYsIDM5LCAyMzcsIDI1NCwgMjUxLCAxMzksIDU2LCAzOSwgMjUxLCAxMjYsIAotICAgIDI1MSwgMTM5LCA1NiwgMzksIDQ5LCAyMTAsIDQsIDU2LCAzOSwgNTAsIDIxMCwgNCwgNTYsIDM5LCA0OSwgMjUwLCAyMTgsIAotICAgIDU1LCAzOSwgMjM2LCA1MywgMzksIDQ5LCAxNjIsIDIxNSwgMjUzLCA1NiwgMzksIDExMiwgMjEwLCA0LCA1NiwgMzksIDEyMSwgCi0gICAgMjEwLCA0LCA1NiwgMzksIDkxLCAyLCA1NiwgMzksIDIyNCwgMTAzLCAyLCA1NiwgMzksIDIxOSwgMTQwLCAyMzYsIDExNiwgCi0gICAgNTYsIDM5LCAyMTYsIDc5LCAyMzYsIDExNiwgNTYsIDM5LCA3MCwgNTYsIDM5LCAyNDMsIDIzMiwgNTYsIDM5LCAyMTUsIAotICAgIDI1MywgNTYsIDM5LCAyNDUsIDIzNCwgNTYsIDM5LCAyNDYsIDIzMSwgMzksIDIyMCwgNjIsIDM5LCA4MCwgMjI3LCAxMTUsIAotICAgIDU2LCAzOSwgMjQ3LCAyMDgsIDU2LCAzOSwgMjMwLCAyMzksIDUyLCAyNTAsIDEyNywgNTYsIDM5LCAyNDcsIDMwLCA1NiwgCi0gICAgMzksIDI0NiwgNTMsIDI1MSwgMTM5LCA1NiwgMzksIDI0NywgMjE1LCA1NiwgMzksIDIzMCwgMjM5LCAyNDcsIDIxNSwgNTYsIAotICAgIDM5LCAyMDgsIDIyOCwgNTYsIDM5LCAyMjUsIDE3MSwgNTYsIDM5LCAxMjQsIDIyNywgMTE0LCAzOSwgNTIsIDEyNCwgMjI3LCAKLSAgICAxMTQsIDM5LCAyMDgsIDIyOCwgMjE5LCAxOTksIDM5LCAyMTIsIDIyOCwgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAxNjMsIAotICAgIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgMjEyLCAyMjgsIDIxMiwgMSwgMjE5LCAxOTksIDM5LCAxNjMsIDIxMiwgMSwgMjE5LCAKLSAgICAxOTksIDM5LCA1MCwgMTYyLCAyMTUsIDI1MywgNTYsIDM5LCAyMzAsIDIzOSwgMjQ3LCAyMDgsIDU2LCAzOSwgNTEsIDU2LCAKLSAgICAzOSwgMjE0LCAxNzYsIDU2LCAzOSwgMjAzLCAxOTcsIDU1LCAzOSwgODAsIDIwOCwgMjI3LCAzOSwgNTIsIDIxOSwgMTk4LCAKLSAgICAzOSwgMjM3LCAyNTQsIDE0MywgODIsIDM5LCAyNTEsIDEyNiwgMTQzLCA4MiwgMzksIDMwLCAyMTgsIDIzOSwgMzksIDMwLCAKLSAgICAyMjgsIDI1MiwgMzksIDMwLCAyNDMsIDIyNSwgMjA4LCAxNDksIDM5LCAzMCwgMjAyLCAyMjEsIDM5LCAyNDcsIDIwOCwgNTUsIAotICAgIDM5LCAyNDEsIDM1LCAyLCA1NiwgMzksIDUyLCA4MCwgMjI3LCAxMTUsIDU2LCAzOSwgNDksIDI1MCwgMjE4LCA1NiwgMzksIAotICAgIDIyMSwgMTY2LCAyMDgsIDIyOCwgNTUsIDM5LCAyMzYsIDEyMiwgNTUsIDM5LCAyNTEsIDcsIDE1NiwgMjA4LCAxNzMsIDU1LCAKLSAgICAzOSwgNDksIDUwLCA1MywgNTYsIDM5LCAxNzcsIDUzLCA1NiwgMzksIDIzOCwgNCwgMjMwLCA5NiwgMzksIDUwLCAyNTAsIAotICAgIDk1LCA1NSwgMzksIDQ5LCAxNjIsIDIxNSwgMjUzLCA1NSwgMzksIDI0MCwgMzYsIDM5LCAyMDMsIDE5NywgNTYsIDM5LCA0OSwgCi0gICAgMjUwLCA5NSwgNTYsIDM5LCA1MCwgMjUwLCA5NSwgNTYsIDM5LCA1MCwgMjUwLCA5NSwgMjUsIDExMiwgMjUwLCA5NSwgNTYsIAotICAgIDM5LCA1MCwgMTYyLCAyMTUsIDI1MywgNTUsIDM5LCA3MCwgODcsIDIxNiwgMTYsIDM5LCAyNTAsIDYwLCA1NiwgMzksIDUyLCAKLSAgICAyMTUsIDI1MywgNTYsIDM5LCAyMDIsIDMwLCA1NSwgMzksIDUyLCAyNDcsIDIxNSwgNTYsIDM5LCA1MiwgMjQ3LCAyMTQsIAotICAgIDM5LCA1MiwgMjI1LCAxNzAsIDM5LCA1MiwgMjI1LCAxNzEsIDU2LCAzOSwgNTIsIDIwOCwgMjI3LCAzOSwgNTIsIDIzMCwgCi0gICAgMjM5LCAyNDcsIDIxNCwgMzksIDUyLCA4NiwgNTMsIDU2LCAzOSwgOCwgNSwgMSwgNjMsIDM5LCA4LCA1LCAxLCA3NCwgMzksIAotICAgIDgsIDUsIDEsIDc1LCAzOSwgOCwgNSwgMSwgNzgsIDM5LCA4LCA1LCAxLCA2OCwgMzksIDgsIDUsIDEsIDI0NywgMTI1LCAzOSwgCi0gICAgOCwgNSwgMSwgMjQ1LCA1MSwgMzksIDgsIDUsIDEsIDIzNywgMTcxLCAzOSwgOCwgNSwgMSwgMjI2LCAxODUsIDM5LCA4LCA1LCAKLSAgICAxLCAxNDYsIDM5LCA4LCA1LCAxLCAyMTAsIDY5LCAzOSwgOCwgNSwgMSwgMjA2LCAxNjQsIDM5LCA4LCA1LCAxLCAyMDMsIAotICAgIDE5NiwgMzAsIDYsIDEsIDIzNywgMjAsIDMwLCA1LCAxLCAyMzcsIDIwLCAzMCwgNiwgMSwgMjUwLCAxMjYsIDIxNCwgMjQ2LCAKLSAgICAzMCwgNSwgMSwgMjUwLCAxMjYsIDIxNCwgMjQ2LCAzMCwgMjIxLCA0NCwgNTQsIDMwLCAyMjYsIDI1MSwgMjIxLCA0NCwgNTQsIAotICAgIDMwLCA2LCAxLCAyMTksIDEyNiwgMjQzLCAxOTksIDMwLCA1LCAxLCAyMTksIDEyNiwgMjQzLCAxOTksIDMwLCAyMDIsIDIyMSwgCi0gICAgMzAsIDUsIDIxNiwgNzMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA1LCAyNDIsIDgzLCAyMjYsIDIyMSwgMjEyLCAKLSAgICAxNDUsIDk3LCAzMCwgNSwgMjE2LCA3MywgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDIxNywgNDcsIAotICAgIDgyLCAzMCwgNiwgMSwgMjAyLCAyMjcsIDMwLCAyMDgsIDE0OSwgMzAsIDI0MywgMjI1LCAyMDgsIDE0OSwgMzAsIDYsIDEsIAotICAgIDI1MSwgMywgMywgMjA4LCAxNDksIDMwLCAyNTAsIDIwMywgMjA5LCAxNjMsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMDgsIAotICAgIDE0OSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMDgsIDE0OSwgCi0gICAgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgCi0gICAgMSwgMjIwLCAzNywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMDgsIDE0OSwgCi0gICAgMzAsIDYsIDEsIDI1MSwgMiwgMzAsIDYsIDEsIDI0OCwgMTA2LCAzMCwgNiwgMSwgMjM4LCAyMzUsIDMwLCA2LCAxLCAyNDQsIAotICAgIDM3LCAzMCwgNiwgMSwgMjQxLCAzNywgMzAsIDYsIDEsIDIwMiwgODMsIDMwLCA2LCAxLCAyNDAsIDI0OCwgMzAsIDYsIDEsIAotICAgIDIwOSwgNzQsIDMwLCA2LCAxLCAyMzAsIDIzMCwgMzAsIDYsIDEsIDIyOSwgMjQ3LCAzMCwgNiwgMSwgMjI4LCAyNCwgMzAsIAotICAgIDYsIDEsIDIyMywgMjQ2LCAzMCwgNiwgMSwgMjIxLCA4NCwgMzAsIDYsIDEsIDIwMywgMTcwLCAzMCwgNiwgMSwgMjIwLCAzNCwgCi0gICAgMzAsIDYsIDEsIDIxOCwgMTY3LCAzMCwgNiwgMSwgMjE2LCA1OSwgMzAsIDYsIDEsIDIxMiwgMTQ0LCAzMCwgNiwgMSwgMjA5LCAKLSAgICAyMDcsIDMwLCA2LCAxLCAyMDYsIDIxNiwgMzAsIDYsIDEsIDIxOCwgMTkyLCAzMCwgNiwgMSwgMjQ2LCAxNDIsIDMwLCA2LCAKLSAgICAxLCAyMTcsIDIwMiwgMzAsIDYsIDEsIDIyMCwgMzYsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjQsIDMwLCA2LCAKLSAgICAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjQsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjQxLCAKLSAgICAzOCwgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgCi0gICAgMjA4LCAxNDksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI1MSwgCi0gICAgMiwgMzAsIDUsIDEsIDI0OCwgMTA2LCAzMCwgNSwgMSwgMjM4LCAyMzUsIDMwLCA1LCAxLCAyNDQsIDM3LCAzMCwgNSwgMSwgCi0gICAgMjQxLCAzNywgMzAsIDUsIDEsIDIwMiwgODMsIDMwLCA1LCAxLCAyNDAsIDI0OCwgMzAsIDUsIDEsIDIwOSwgNzQsIDMwLCA1LCAKLSAgICAxLCAyMzAsIDIzMCwgMzAsIDUsIDEsIDIyOSwgMjQ3LCAzMCwgNSwgMSwgMjI4LCAyNCwgMzAsIDUsIDEsIDIyMywgMjQ2LCAKLSAgICAzMCwgNSwgMSwgMjIxLCA4NCwgMzAsIDUsIDEsIDIwMywgMTcwLCAzMCwgNSwgMSwgMjIwLCAzNCwgMzAsIDUsIDEsIDIxOCwgCi0gICAgMTY3LCAzMCwgNSwgMSwgMjE2LCA1OSwgMzAsIDUsIDEsIDQ2LCAyMTIsIDE0NCwgMzAsIDUsIDEsIDIxMiwgMTQ0LCAzMCwgCi0gICAgNSwgMSwgMjA5LCAyMDcsIDMwLCA1LCAxLCAyMDYsIDIxNiwgMzAsIDUsIDEsIDIxOCwgMTkyLCAzMCwgNSwgMSwgMjQ2LCAKLSAgICAxNDIsIDMwLCA1LCAxLCAyMTcsIDIwMiwgMzAsIDUsIDEsIDIyMCwgMzYsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAKLSAgICAyMjQsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjQsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMDgsIDE0OSwgMzAsIAotICAgIDUsIDEsIDIwNiwgMjE3LCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgMjMwLCAKLSAgICAxOSwgOTcsIDMwLCAyNDgsIDEwNywgOTcsIDMwLCAyMDksIDc1LCA5NywgMzAsIDIwNiwgMjE3LCAzLCAyMzYsIDExNiwgOTcsIAotICAgIDMwLCAyMDYsIDIxNywgMywgMjUxLCAxMjYsIDI1LCAyMzYsIDExNiwgOTcsIDMwLCAyMDYsIDIxNywgMywgMjQzLCAyMzIsIAotICAgIDI1LCAyMzYsIDExNiwgOTcsIDMwLCAyMTgsIDE5MywgOTcsIDMwLCAyMTgsIDE2OCwgOTcsIDMwLCAyMzAsIDE5LCA5NywgCi0gICAgMzAsIDEsIDI1MCwgMTI2LCAyMjksIDAsIDMwLCA1LCAxLCAyNTAsIDEyNiwgMjI5LCAwLCAzMCwgMSwgMjExLCA3MSwgMzAsIAotICAgIDUsIDEsIDIxMSwgNzEsIDMwLCAxLCAyNDMsIDE5OSwgMzAsIDUsIDEsIDI0MywgMTk5LCAzMCwgMSwgMjI5LCAwLCAzMCwgNSwgCi0gICAgMSwgMjI5LCAwLCAzMCwgMSwgMjE0LCAyNDYsIDMwLCA1LCAxLCAyMTQsIDI0NiwgODQsIDYsIDEsIDIxMywgMzUsIDg0LCA1LCAKLSAgICAxLCAyMTMsIDM1LCA4NCwgNiwgMSwgMjQwLCA0NSwgODQsIDUsIDEsIDI0MCwgNDUsIDg0LCA2LCAxLCAyMjksIDEyNywgODQsIAotICAgIDUsIDEsIDIyOSwgMTI3LCA4NCwgNiwgMSwgMjM2LCAxMDcsIDg0LCA1LCAxLCAyMzYsIDEwNywgODQsIDYsIDEsIDIzOCwgCi0gICAgMjMwLCA4NCwgNSwgMSwgMjM4LCAyMzAsIDg0LCA2LCAxLCAyMTMsIDEsIDg0LCA1LCAxLCAyMTMsIDEsIDg0LCA2LCAxLCAKLSAgICAyNDQsIDUyLCA4NCwgNSwgMSwgMjQ0LCA1MiwgMzAsIDIyOSwgMjQ4LCA5NywgMzAsIDIxNiwgNjAsIDk3LCAzMCwgMjI2LCAKLSAgICAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDEsIDIwMiwgMjI3LCAzMCwgNiwgMjA5LCA3NSwgOTcsIDMwLCAyMjYsIDIyMSwgCi0gICAgMjQxLCAzOCwgOTcsIDMwLCAyMTYsIDczLCAyMjYsIDIyMSwgMjQxLCAzOCwgOTcsIDMwLCA2LCAxLCAyMTIsIDI0MiwgMzAsIAotICAgIDUsIDEsIDIxMiwgMjQyLCAzMCwgNiwgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDYsIDEsIDIxNCwgMjQzLCAzMCwgNSwgCi0gICAgMSwgMjE0LCAyNDMsIDMwLCAyMTYsIDYwLCAzLCAyMTEsIDMyLCA5NywgMzAsIDYsIDIxNiwgNzMsIDIyNiwgMjIxLCAyMTIsIAotICAgIDE0NSwgOTcsIDMwLCA2LCAyNDIsIDgzLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNiwgMjE2LCA3MywgMjQyLCA4MywgCi0gICAgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzYsIDYsIDEsIDIzMSwgMTExLCAzLCAyMzcsIDI1MywgMzYsIDYsIDEsIDIzMCwgCi0gICAgMjM0LCAzNiwgNiwgMSwgMjQzLCAxMzAsIDM2LCA2LCAxLCAyMzgsIDUyLCAzNiwgNiwgMSwgMjA3LCAxMSwgMjMxLCAxMTAsIAotICAgIDM2LCA2LCAxLCAyNDEsIDI1MiwgMzYsIDYsIDEsIDI0NywgMTM1LCA3NSwgMzYsIDYsIDEsIDIwMywgMTEsIDM2LCA2LCAxLCAKLSAgICAyMzAsIDE2MSwgMzYsIDYsIDEsIDIyNywgODAsIDM2LCA2LCAxLCAyMjIsIDQxLCAzNiwgNiwgMSwgMjA4LCA4LCAzNiwgNiwgCi0gICAgMSwgMjI5LCA0OSwgMzYsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMzcsIDI1MywgMzYsIDYsIDEsIDIxMiwgMjI4LCA2OCwgMzYsIAotICAgIDYsIDEsIDI0MSwgMjQ4LCAzNiwgNiwgMSwgNjMsIDM2LCA2LCAxLCAyNDgsIDE2MiwgMzYsIDYsIDEsIDIwNiwgNTUsIDM2LCAKLSAgICA2LCAxLCAyMzgsIDEwNSwgMzYsIDYsIDEsIDI0NCwgNzUsIDM2LCA2LCAxLCAyMzEsIDExMCwgMzYsIDYsIDEsIDIwMiwgNzEsIAotICAgIDM2LCA2LCAxLCAyMDIsIDkyLCAzNiwgNiwgMSwgNzUsIDM2LCA2LCAxLCAyMTIsIDIyOCwgNzUsIDM2LCA2LCAxLCAxNzMsIAotICAgIDM2LCA2LCAxLCAyNDEsIDEyMiwgMzYsIDYsIDEsIDI0MSwgMTAzLCAzNiwgNiwgMSwgMjQxLCA5MiwgMzYsIDYsIDEsIDc4LCAKLSAgICAzNiwgNiwgMSwgMjE5LCAzNCwgMzYsIDYsIDEsIDI0MSwgMjgsIDM2LCA2LCAxLCAyNDEsIDE3LCAzNiwgNiwgMSwgMjA5LCAKLSAgICAxODcsIDM2LCA2LCAxLCA2OCwgMzYsIDYsIDEsIDI0MSwgMTU0LCAzNiwgNiwgMSwgMTUyLCAzNiwgNiwgMSwgMjA4LCAxNCwgCi0gICAgMzYsIDYsIDEsIDI0NiwgMTcwLCAzNiwgNiwgMSwgMjEzLCA5MCwgMzYsIDYsIDEsIDIxMywgNDYsIDM2LCA2LCAxLCAyMzcsIAotICAgIDkxLCA1NCwgMzYsIDYsIDEsIDIwMywgMzAsIDM2LCA2LCAxLCAyMTIsIDcsIDU0LCAzNiwgNiwgMSwgNzQsIDM2LCA2LCAxLCAKLSAgICAyMDIsIDIxMywgMzYsIDYsIDEsIDE5OCwgMzYsIDUsIDEsIDYzLCAzNiwgNSwgMSwgMjQ4LCAxNjIsIDM2LCA1LCAxLCAyMDYsIAotICAgIDU1LCAzNiwgNSwgMSwgMjM4LCAxMDUsIDM2LCA1LCAxLCAyNDQsIDc1LCAzNiwgNSwgMSwgMjMxLCAxMTAsIDM2LCA1LCAxLCAKLSAgICAyMDIsIDcxLCAzNiwgNSwgMSwgMjAyLCA5MiwgMzYsIDUsIDEsIDc1LCAzNiwgNSwgMSwgMjEyLCAyMjgsIDc1LCAzNiwgNSwgCi0gICAgMSwgMTczLCAzNiwgNSwgMSwgMjQxLCAxMjIsIDM2LCA1LCAxLCAyNDEsIDEwMywgMzYsIDUsIDEsIDI0MSwgOTIsIDM2LCA1LCAKLSAgICAxLCA3OCwgMzYsIDUsIDEsIDIxOSwgMzQsIDM2LCA1LCAxLCAyNDEsIDI4LCAzNiwgNSwgMSwgMjQxLCAxNywgMzYsIDUsIDEsIAotICAgIDIwOSwgMTg3LCAzNiwgNSwgMSwgNjgsIDM2LCA1LCAxLCAyNDEsIDE1NCwgMzYsIDUsIDEsIDE1MiwgMzYsIDUsIDEsIDIwOCwgCi0gICAgMTQsIDM2LCA1LCAxLCAyNDYsIDE3MCwgMzYsIDUsIDEsIDIxMywgOTAsIDM2LCA1LCAxLCAyMTMsIDQ2LCAzNiwgNSwgMSwgCi0gICAgMjM3LCA5MSwgNTQsIDM2LCA1LCAxLCAyMDMsIDMwLCAzNiwgNSwgMSwgMjEyLCA3LCA1NCwgMzYsIDUsIDEsIDc0LCAzNiwgCi0gICAgNSwgMSwgMjAyLCAyMTMsIDM2LCA1LCAxLCAxOTgsIDM2LCA1LCAxLCAyMzEsIDExMSwgMywgMjM3LCAyNTMsIDM2LCA1LCAxLCAKLSAgICAyMzAsIDIzNCwgMzYsIDUsIDEsIDI0MywgMTMwLCAzNiwgNSwgMSwgMjM4LCA1MiwgMzYsIDUsIDEsIDIwNywgMTEsIDIzMSwgCi0gICAgMTEwLCAzNiwgNSwgMSwgMjQxLCAyNTIsIDM2LCA1LCAxLCAyNDcsIDEzNSwgNzUsIDM2LCA1LCAxLCAyMDMsIDExLCAzNiwgCi0gICAgNSwgMSwgMjMwLCAxNjEsIDM2LCA1LCAxLCAyMjcsIDgwLCAzNiwgNSwgMSwgMjIyLCA0MSwgMzYsIDUsIDEsIDIwOCwgOCwgCi0gICAgMzYsIDUsIDEsIDIyOSwgNDksIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDM2LCA1LCAxLCAyMTIsIDIyOCwgCi0gICAgNjgsIDM2LCA1LCAxLCAyNDEsIDI0OCwgMzYsIDYsIDEsIDIyMCwgMzYsIDM2LCA1LCAxLCAyMjAsIDM2LCAzNiwgNiwgMSwgCi0gICAgMjAzLCA2NiwgMzYsIDUsIDEsIDIwMywgNjYsIDM2LCA2LCAxLCAyMzAsIDIyOCwgNzQsIDM2LCA1LCAxLCAyMzAsIDIyOCwgCi0gICAgNzQsIDM2LCA2LCAxLCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNiwgMSwgCi0gICAgMjMwLCAyMjgsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgCi0gICAgNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA1LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDYsIDEsIDIzMCwgMjI4LCAKLSAgICAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDYsIDEsIDIyOCwgCi0gICAgMjI1LCAzNiwgNSwgMSwgMjI4LCAyMjUsIDM2LCA2LCAxLCAyMTcsIDIwMiwgMzYsIDUsIDEsIDIxNywgMjAyLCAzNiwgNiwgCi0gICAgMSwgMjM5LCAyMzUsIDM2LCA1LCAxLCAyMzksIDIzNSwgMzYsIDYsIDEsIDIzMCwgMTg2LCAzNiwgNSwgMSwgMjMwLCAxODYsIAotICAgIDM2LCA2LCAxLCAyMzAsIDE4NywgMywgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzYsIDUsIDEsIDIzMCwgMTg3LCAzLCA1MiwgCi0gICAgMjM3LCAyNTQsIDI1MSwgMTM4LCAzNiwgNiwgMSwgMjA3LCAxNCwgMzYsIDUsIDEsIDIwNywgMTQsIDM2LCA2LCAxLCAyMTUsIAotICAgIDE5MSwgMjIwLCAzNiwgMzYsIDUsIDEsIDIxNSwgMTkxLCAyMjAsIDM2LCAzNiwgNiwgMSwgMjIwLCAzNywgMywgMjA4LCAKLSAgICAxOTcsIDM2LCA1LCAxLCAyMjAsIDM3LCAzLCAyMDgsIDE5NywgMzYsIDYsIDEsIDIxOSwgMjI0LCAzNiwgNSwgMSwgMjE5LCAKLSAgICAyMjQsIDM2LCA2LCAxLCAyMjksIDAsIDM2LCA1LCAxLCAyMjksIDAsIDM2LCAyMDksIDM1LCA1NCwgMzksIDM2LCAyMDgsIAotICAgIDE5NywgMzksIDM2LCAyMTksIDE0MSwgMzksIDM2LCAyNDQsIDE0MiwgMjE4LCA3MSwgMzksIDM2LCAyMTcsIDE5NiwgMjE4LCAKLSAgICA3MSwgMzksIDM2LCAyMTgsIDU1LCAzOSwgMzYsIDIzNiwgMTIsIDIwOSwgMzUsIDU0LCAzOSwgMzYsIDIyNCwgMTE0LCA1NCwgCi0gICAgMzYsIDYsIDEsIDIxMiwgMjI4LCAyMzUsIDIwNiwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyMTIsIDIyOCwgMjM1LCAyMDYsIAotICAgIDMsIDIwOSwgMjQ4LCAzNiwgNiwgMSwgMjEzLCAxMzksIDU0LCAzNiwgNSwgMSwgMjEzLCAxMzksIDU0LCAzNiwgNiwgMSwgCi0gICAgMjQxLCAyOSwgMywgMjA4LCAyNTQsIDM2LCA1LCAxLCAyNDEsIDI5LCAzLCAyMDgsIDI1NCwgMzYsIDYsIDEsIDIzOCwgMTA2LCAKLSAgICAzLCAyMDYsIDIxNSwgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCAyMDYsIDIxNSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCA5NSwgCi0gICAgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCA5NSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIAotICAgIDIzOCwgMTA2LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDIwMiwgNzIsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDIsIDcyLCAKLSAgICAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjAyLCA5MywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIwMiwgOTMsIDMsIDI0NCwgMjAsIAotICAgIDM2LCA2LCAxLCAyMzAsIDQ0LCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIAotICAgIDIzMCwgNDQsIDMsIDgwLCA5NSwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDgwLCA5NSwgMzYsIDYsIDEsIDIzMCwgNDQsIDMsIAotICAgIDk1LCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgOTUsIDM2LCA2LCAxLCAyNDgsIDIxNCwgMTczLCAzNiwgNSwgMSwgMjQ4LCAKLSAgICAyMTQsIDE3MywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAyNDQsIDIwLCAKLSAgICAzNiwgNiwgMzIsIDI0MSwgOTMsIDIzOCwgMTA1LCAzNiwgNSwgMzIsIDI0MSwgOTMsIDIzOCwgMTA1LCAzNiwgNiwgMSwgCi0gICAgMjE5LCAzNSwgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyMTksIDM1LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDI1MSwgMTQ1LCAKLSAgICAxNTIsIDM2LCA1LCAxLCAyNTEsIDE0NSwgMTUyLCAzNiwgNiwgMSwgMjQxLCAxOCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIAotICAgIDI0MSwgMTgsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyMDksIDE4OCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIwOSwgMTg4LCAKLSAgICAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjExLCA1MywgNjgsIDM2LCA1LCAxLCAyMTEsIDUzLCA2OCwgMzYsIDYsIDEsIDIxMSwgCi0gICAgNTMsIDEwNiwgMywgOTUsIDM2LCA1LCAxLCAyMTEsIDUzLCAxMDYsIDMsIDk1LCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIAotICAgIDI0NCwgMjAsIDM2LCA1LCAxLCAyMzcsIDE2MCwgMywgMjQ0LCAyMCwgMzYsIDYsIDMyLCAyMDksIDE4OCwgMjA4LCAxNCwgCi0gICAgMzYsIDUsIDMyLCAyMDksIDE4OCwgMjA4LCAxNCwgMzYsIDYsIDEsIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgCi0gICAgMjQ2LCAxNzEsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgODAsIDk1LCAzNiwgNSwgMSwgMjQ2LCAxNzEsIAotICAgIDMsIDgwLCA5NSwgMzYsIDYsIDEsIDIxMywgMTIsIDM2LCA1LCAxLCAyMTMsIDEyLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0NiwgCi0gICAgMTcwLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDI0NiwgMTcwLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0NiwgMTcxLCAzLCAyNDQsIAotICAgIDIwLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgMSwgMjE5LCAxMzMsIDM2LCA2LCAxLCAKLSAgICAyMDIsIDcyLCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDIwMiwgNzIsIDMsIDI0NywgMjE0LCAzNiwgNiwgMSwgMjMwLCA0NCwgCi0gICAgMywgMTEzLCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgMTEzLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDIwOSwgMjQ4LCAzNiwgCi0gICAgNSwgMSwgMjQxLCAxMjMsIDMsIDIwOSwgMjQ4LCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMTEzLCAzNiwgNSwgMSwgMjQxLCAKLSAgICA5MywgMywgMTEzLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAyMDksIAotICAgIDI0OCwgMzYsIDYsIDEsIDIyOSwgMTM4LCAyNDYsIDE3MCwgMzYsIDUsIDEsIDIyOSwgMTM4LCAyNDYsIDE3MCwgMzYsIDYsIAotICAgIDEsIDI0MSwgMTA0LCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDI0MSwgMTA0LCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDIxOSwgCi0gICAgMTMzLCAzNiwgNiwgMSwgMzQsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMzQsIDMsIDI0NywgMjE0LCAzNiwgNiwgMSwgMzQsIAotICAgIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMzQsIDMsIDI0MywgMjMxLCAzNiwgNiwgMzIsIDM0LCAyMzEsIDExMCwgMzYsIDUsIAotICAgIDMyLCAzNCwgMjMxLCAxMTAsIDM2LCA2LCAxLCAyMzEsIDExMSwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAyMzEsIDExMSwgMywgCi0gICAgMjQ3LCAyMTQsIDM2LCA2LCAxLCAyMTQsIDE5MiwgMzYsIDUsIDEsIDIxNCwgMTkyLCAzNiwgNiwgMSwgMjE0LCAxOTMsIDMsIAotICAgIDI0MywgMjMxLCAzNiwgNSwgMSwgMjE0LCAxOTMsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjAyLCA3MiwgMywgMjQzLCAKLSAgICAyMzEsIDM2LCA1LCAxLCAyMDIsIDcyLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIwMiwgOTMsIDMsIDI0MywgMjMxLCAzNiwgCi0gICAgNSwgMSwgMjAyLCA5MywgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyNTEsIDE0NSwgMjQxLCAyNTIsIDM2LCA1LCAxLCAyNTEsIAotICAgIDE0NSwgMjQxLCAyNTIsIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzAsIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgMjI1LCAxNzAsIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAKLSAgICAyMzEsIDM2LCA2LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIAotICAgIDI0OCwgMjI1LCA3OCwgMzYsIDUsIDEsIDI0OCwgMjI1LCA3OCwgMzYsIDYsIDEsIDI0OCwgMjI1LCAxNTgsIDMsIDI0MywgCi0gICAgMjMxLCAzNiwgNSwgMSwgMjQ4LCAyMjUsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAxODgsIDMsIDI0MywgMjMxLCAKLSAgICAzNiwgNSwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzAsIDM2LCA1LCAxLCAxMDYsIDMsIAotICAgIDIyNSwgMTcwLCAzNiwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM2LCA2LCAKLSAgICAxLCAxMDYsIDMsIDUyLCAxNjUsIDM2LCA1LCAxLCAxMDYsIDMsIDUyLCAxNjUsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgCi0gICAgMjQzLCAyMzEsIDM2LCA1LCAxLCAyNDYsIDE3MSwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMjQ0LCAKLSAgICAyMCwgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjAzLCAzMSwgMywgMjQzLCAyMzEsIDM2LCAKLSAgICA1LCAxLCAyMDMsIDMxLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCAzNiwgCi0gICAgNSwgMSwgMjM4LCAxMDYsIDMsIDIxMSwgMzIsIDI1LCAxMTMsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgMTEzLCAzNiwgNSwgCi0gICAgMSwgMjM3LCAxNjAsIDMsIDExMywgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCA5NSwgMzYsIDUsIDEsIDIzNywgMTYwLCAzLCAKLSAgICA5NSwgMzYsIDYsIDEsIDIyOSwgMTAsIDI0NCwgNzUsIDM2LCA1LCAxLCAyMjksIDEwLCAyNDQsIDc1LCAzNiwgNiwgMSwgCi0gICAgMjI5LCAxMCwgMjQzLCAxMzAsIDM2LCA1LCAxLCAyMjksIDEwLCAyNDMsIDEzMCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIwMiwgCi0gICAgMjEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMDIsIDIxLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjQxLCAyNDQsIDM2LCA1LCAxLCAKLSAgICAyMjksIDEwLCAyNDEsIDI0NCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIyNywgODAsIDM2LCA1LCAxLCAyMjksIDEwLCAyMjcsIAotICAgIDgwLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjIyLCA0MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIyMiwgNDEsIDM2LCA2LCAxLCAKLSAgICAyMjksIDEwLCAyMTIsIDcxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjEyLCA3MSwgMzYsIDYsIDEsIDIyOSwgMTAsIDIwOCwgCi0gICAgMTkxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjA4LCAxOTEsIDM2LCA2LCAxLCAyMTYsIDczLCAyMDIsIDkyLCAzNiwgNSwgMSwgCi0gICAgMjE2LCA3MywgMjAyLCA5MiwgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAxMTMsIDM2LCA1LCAxLCAyNDEsIDEyMywgMywgMTEzLCAKLSAgICAzNiwgNiwgMSwgMjI3LCAxNjEsIDM2LCA1LCAxLCAyMjcsIDE2MSwgMzYsIDYsIDEsIDIxNiwgNjEsIDM2LCA1LCAxLCAyMTYsIAotICAgIDYxLCAzNiwgNiwgMSwgMjAzLCA5OSwgMzYsIDUsIDEsIDIwMywgOTksIDM2LCA2LCAxLCAyMTcsIDEyNiwgMzYsIDUsIDEsIAotICAgIDIxNywgMTI2LCAzNiwgNiwgMSwgMjA0LCA2MiwgMzYsIDUsIDEsIDIwNCwgNjIsIDM2LCA2LCAxLCAyNTEsIDI2LCAxNzMsIAotICAgIDM2LCA1LCAxLCAyNTEsIDI2LCAxNzMsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyNDEsIAotICAgIDEyMywgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIDI0MSwgOTMsIDMsIAotICAgIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjE5LCAzNSwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMjAsIAotICAgIDM2LCA2LCAxLCAyMTMsIDEzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjEzLCAxMywgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIAotICAgIDI0MSwgOTMsIDMsIDQ5LCAxMTMsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCA0OSwgMTEzLCAzNiwgNiwgMSwgMjQxLCAyMzcsIAotICAgIDM2LCA1LCAxLCAyNDEsIDIzNywgMzYsIDYsIDEsIDI0NCwgMTI0LCAzNiwgNSwgMSwgMjQ0LCAxMjQsIDM2LCA2LCAxLCAKLSAgICAyNDEsIDEyMywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDI0MSwgMTIzLCAzLCAyNDQsIDIwLCAxNzgsIDYsIDEsIDI1MCwgNSwgCi0gICAgMTc4LCA2LCAxLCAyNDgsIDEyMiwgMTc4LCA2LCAxLCAyMzgsIDY5LCAxNzgsIDYsIDEsIDI0NCwgMjEyLCAxNzgsIDYsIDEsIAotICAgIDI0MSwgMTY3LCAxNzgsIDYsIDEsIDIwMiwgMTE2LCAxNzgsIDYsIDEsIDI0MSwgMTQ3LCAxNzgsIDYsIDEsIDI0MCwgMjUwLCAKLSAgICAxNzgsIDYsIDEsIDEzNSwgMTc4LCA2LCAxLCAyMDIsIDcxLCAxNzgsIDYsIDEsIDIzMSwgMTksIDE3OCwgNiwgMSwgMjI3LCAKLSAgICA4MywgMTc4LCA2LCAxLCAyMDMsIDE3NCwgMTc4LCA2LCAxLCAyNDcsIDkyLCAxNzgsIDYsIDEsIDIyOSwgMTgwLCAxNzgsIDYsIAotICAgIDEsIDIzNiwgMTM2LCAxNzgsIDYsIDEsIDIzMCwgMTgxLCAxNzgsIDYsIDEsIDIzOCwgMTE2LCAxNzgsIDYsIDEsIDI0NiwgCi0gICAgMTYwLCAxNzgsIDYsIDEsIDIyNCwgMjQwLCAxNzgsIDYsIDEsIDIwMywgMTEsIDE3OCwgNiwgMSwgMjIxLCAxNTIsIDE3OCwgCi0gICAgNiwgMSwgMjEzLCA5MCwgMTc4LCA2LCAxLCAyMDUsIDE4OSwgMTc4LCA2LCAxLCAyNDYsIDE5OSwgMTc4LCA2LCAxLCAyMTksIAotICAgIDE2LCAxNzgsIDYsIDEsIDIzMCwgMTQ0LCAxNzgsIDYsIDEsIDIxNiwgMjIwLCAxNzgsIDYsIDEsIDIxNCwgMTU1LCAxNzgsIAotICAgIDYsIDEsIDIwNSwgMjM0LCAxNzgsIDYsIDEsIDIwOCwgMTk0LCAxNzgsIDYsIDEsIDIxNiwgMTIyLCAxNzgsIDYsIDEsIDI0NSwgCi0gICAgMjU0LCAxNzgsIDYsIDEsIDIwMiwgMjUyLCAxNzgsIDYsIDEsIDIxOCwgMTAyLCAxNzgsIDYsIDEsIDIyOSwgMTkxLCAxNzgsIAotICAgIDYsIDEsIDIyMCwgNjAsIDE3OCwgNiwgMSwgMjQwLCA0NywgMTc4LCA2NSwgMSwgNDksIDE2MiwgMjE1LCAyNTIsIDE3OCwgCi0gICAgMjUwLCAxNjAsIDE3OCwgMjQxLCA5NiwgODIsIDE3OCwgMjQwLCAyMTIsIDgyLCAxNzgsIDI0NSwgMjMzLCAxNzgsIDIxNywgCi0gICAgNDcsIDgyLCAxNzgsIDI1MSwgMTQ2LCA4MiwgMTc4LCA1LCAxLCAyNTAsIDUsIDE3OCwgNSwgMSwgMjQ4LCAxMjIsIDE3OCwgCi0gICAgNSwgMSwgMjM4LCA2OSwgMTc4LCA1LCAxLCAyNDQsIDIxMiwgMTc4LCA1LCAxLCAyNDEsIDE2NywgMTc4LCA1LCAxLCAyMDIsIAotICAgIDExNiwgMTc4LCA1LCAxLCAyNDEsIDE0NywgMTc4LCA1LCAxLCAyNDAsIDI1MCwgMTc4LCA1LCAxLCAxMzUsIDE3OCwgNSwgMSwgCi0gICAgMjAyLCA3MSwgMTc4LCA1LCAxLCAyMzEsIDE5LCAxNzgsIDUsIDEsIDIyNywgODMsIDE3OCwgNSwgMSwgMjAzLCAxNzQsIAotICAgIDE3OCwgNSwgMSwgMjQ3LCA5MiwgMTc4LCA1LCAxLCAyMjksIDE4MCwgMTc4LCA1LCAxLCAyMzYsIDEzNiwgMTc4LCA1LCAxLCAKLSAgICAyMzAsIDE4MSwgMTc4LCA1LCAxLCAyMzgsIDExNiwgMTc4LCA1LCAxLCAyNDYsIDE2MCwgMTc4LCA1LCAxLCAyMjQsIDI0MCwgCi0gICAgMTc4LCA1LCAxLCAyMDMsIDExLCAxNzgsIDUsIDEsIDIyMSwgMTUyLCAxNzgsIDUsIDEsIDIxMywgOTAsIDE3OCwgNSwgMSwgCi0gICAgMjA1LCAxODksIDE3OCwgNSwgMSwgMjQ2LCAxOTksIDE3OCwgNSwgMSwgMjE5LCAxNiwgMTc4LCA1LCAxLCAyMzAsIDE0NCwgCi0gICAgMTc4LCA1LCAxLCAyMTYsIDIyMCwgMTc4LCA1LCAxLCAyMTQsIDE1NSwgMTc4LCA1LCAxLCAyMDUsIDIzNCwgMTc4LCA1LCAxLCAKLSAgICAyMDgsIDE5NCwgMTc4LCA1LCAxLCAyMTYsIDEyMiwgMTc4LCA1LCAxLCAyNDUsIDI1NCwgMTc4LCA1LCAxLCAyMDIsIDI1MiwgCi0gICAgMTc4LCA1LCAxLCAyMTgsIDEwMiwgMTc4LCA1LCAxLCAyMjksIDE5MSwgMTc4LCA1LCAxLCAyMjAsIDYwLCAxNzgsIDUsIDEsIAotICAgIDI0MCwgNDcsIDE3OCwgNSwgMzIsIDI0MSwgMTY4LCAyMDIsIDI1MiwgMTc4LCAyMzksIDEwMiwgMjExLCA2MSwgMTc4LCAKLSAgICAyMzUsIDIyMCwgMjE2LCAxNSwgMTc4LCAyNDAsIDI0NiwgNTQsIDIyNywgMjIxLCAxNzgsIDI0MCwgMjQ2LCA1NCwgMTc4LCAKLSAgICAyNDIsIDYwLCA1NCwgMTEwLCAyNTEsIDEzOSwgMjQwLCAyNDEsIDExMCwgMjUxLCAxMzksIDIxNCwgMTU2LCAxMTAsIDI1MSwgCi0gICAgMTM5LCAyMTMsIDY5LCAxMTAsIDI1MSwgMTM5LCAyMDIsIDEwMywgMjE3LCAxMDksIDExMCwgMjUxLCAxMzksIDIwMiwgMTAzLCAKLSAgICAyMzgsIDI1NCwgMTEwLCAyNTEsIDEzOSwgMjA4LCAyMDksIDExMCwgMjUxLCAxMzksIDIxNiwgNzAsIDExMCwgMjUxLCAxMzksIAotICAgIDIwMiwgMTAxLCAxMTAsIDI1MSwgMTM5LCAyMTksIDYxLCAxMTAsIDI1MSwgMTM5LCAyMDMsIDIzLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMDksIDExNSwgMTEwLCAyNTEsIDEzOSwgMjM4LCAxNjcsIDExMCwgMjUxLCAxMzksIDIzOCwgMTY4LCAyMjMsIDIwOCwgCi0gICAgMTEwLCAyNTEsIDEzOSwgMjM4LCAxNjUsIDExMCwgMjUxLCAxMzksIDIxNywgMTEwLCAyMTksIDkwLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMDksIDE1OCwgMjM4LCAxODMsIDExMCwgMjUxLCAxMzksIDIxOSwgNDAsIDExMCwgMjUxLCAxMzksIDI1MCwgNDMsIDIzNywgCi0gICAgMTUyLCAxMTAsIDI1MSwgMTM5LCAyMjMsIDIxOCwgMTEwLCAyNTEsIDEzOSwgMjI1LCAxNDUsIDExMCwgMjUxLCAxMzksIAotICAgIDIyNCwgMjI5LCAxMTAsIDI1MSwgMTM5LCAyMjQsIDIzMCwgMjI5LCAxOTIsIDExMCwgMjUxLCAxMzksIDI0NCwgMTUxLCAKLSAgICAxMTAsIDI1MSwgMTM5LCAyMTcsIDEyMSwgMTEwLCAyNTEsIDEzOSwgMjA5LCAxNTgsIDIxNywgMTA0LCAxMTAsIDI1MSwgCi0gICAgMTM5LCAyMDMsIDMzLCAyNDgsIDEyMywgMjAyLCAyMzMsIDExMCwgMjUxLCAxMzksIDIyMCwgNDMsIDExMCwgMjUxLCAxMzksIAotICAgIDIzMSwgNjksIDExMCwgMjUxLCAxMzksIDI0NCwgNTMsIDExMCwgMjUxLCAxMzksIDIwMiwgMjgsIDExMCwgMTMxLCAyMjUsIAotICAgIDc1LCAyNDYsIDYxLCAxMTAsIDIxOCwgNjMsIDIxMywgMTUsIDExMCwgMjE4LCA2MywgMjM3LCA4MiwgMjE0LCAxNTYsIDExMCwgCi0gICAgMjE4LCA2MywgMjM3LCA4MiwgMjE5LCA1NCwgMTEwLCAyMTgsIDYzLCAyMzcsIDgyLCAyMTcsIDExNCwgMTEwLCAyMTgsIDYzLCAKLSAgICAyMzYsIDIzMiwgMTEwLCAyMTgsIDYzLCAyMDgsIDExLCAxMTAsIDIxOCwgNjMsIDIxNCwgMTU2LCAxMTAsIDIxOCwgNjMsIAotICAgIDIxOSwgNTQsIDExMCwgMjE4LCA2MywgMjE3LCAxMTQsIDExMCwgMjE4LCA2MywgMjM2LCAxMjgsIDExMCwgMjE4LCA2MywgCi0gICAgMjM2LCAxMjksIDIzNywgODQsIDM1LCAyMDYsIDU5LCAxMTAsIDIxOCwgNjMsIDIxNywgNTEsIDExMCwgMjE4LCA2MywgMjQ0LCAKLSAgICAxOTgsIDIxOSwgMjQ1LCAyMjUsIDEwNSwgMTEwLCAyMTgsIDYzLCAyMjQsIDIxOSwgMTEwLCAyMTcsIDE3OSwgMjI1LCAxMDIsIAotICAgIDExMCwgMjE4LCA2MywgMjE2LCAyMDAsIDExMCwgMjE3LCAxNzksIDIxOSwgNjMsIDExMCwgMjE4LCA2MywgMjEzLCAwLCAKLSAgICAyNDMsIDg1LCAxMTAsIDIxOCwgNjMsIDIxMiwgMTI0LCAyNDMsIDg1LCAxMTAsIDIxNywgMTc5LCAyMTIsIDgsIDIxOSwgNTYsIAotICAgIDExMCwgMTMxLCAyMDYsIDIyMSwgMjQzLCA4NSwgMTEwLCAxMzEsIDIyNiwgMjUxLCAyNDMsIDg1LCAxMTAsIDIxNywgMTc5LCAKLSAgICAyMjEsIDQxLCAyMzcsIDE1MSwgMTEwLCAyMTgsIDYzLCAyMTcsIDExNSwgMjE3LCAxMDksIDExMCwgMSwgMjUxLCAzMCwgCi0gICAgMTEwLCAxLCAyNDgsIDEwOCwgMTEwLCAxLCAyMzgsIDY3LCAxMTAsIDEsIDI0NCwgMTc4LCAxMTAsIDEsIDIzNywgNjcsIAotICAgIDExMCwgMSwgMjA2LCA1OSwgMTEwLCAxLCAyMDIsIDk1LCAxMTAsIDEsIDIzNywgMjEsIDExMCwgMSwgMjA5LCAxMzIsIDExMCwgCi0gICAgMSwgMjAyLCAyMzYsIDExMCwgMSwgNDYsIDIzMCwgMjIsIDExMCwgMSwgMjMwLCAyMiwgMTEwLCAxLCAyMjgsIDIwLCAxMTAsIAotICAgIDEsIDQ2LCAyMjQsIDI0NywgMTEwLCAxLCAyMjQsIDI0NywgMTEwLCAxLCA0NiwgMjIxLCA0MCwgMTEwLCAxLCAyMjEsIDQwLCAKLSAgICAxMTAsIDEsIDIxNCwgMjQ5LCAxMTAsIDEsIDI1MCwgMywgMTEwLCAxLCA0NiwgMjE5LCAzNCwgMTEwLCAxLCAyMTksIDM0LCAKLSAgICAxMTAsIDEsIDQ2LCAyMDgsIDE1LCAxMTAsIDEsIDIwOCwgMTUsIDExMCwgMSwgMjE3LCA3NCwgMTEwLCAxLCAyMTYsIDkxLCAKLSAgICAxMTAsIDEsIDIxMiwgMjU1LCAxMTAsIDEsIDIwOSwgMjAzLCAxMTAsIDMyLCAyMDMsIDksIDUyLCAyMDYsIDU5LCAxMTAsIAotICAgIDMyLCAyMDMsIDksIDIwNiwgNjAsIDIwMiwgMjM2LCAxMTAsIDMyLCAyMDMsIDksIDUyLCAyMDIsIDIzNiwgMTEwLCAyMTcsIAotICAgIDE3OSwgMjM4LCAxNjcsIDExMCwgMjE3LCAxNzksIDIzOCwgMTY1LCAxMCwgNDIsIDU0LCAxMCwgMiwgMjE0LCAyNDIsIDEwLCAKLSAgICAyMzksIDE3MCwgMjI1LCA4OCwgMTAsIDIsIDIxNSwgMjQsIDEwLCAyLCAyMTQsIDI0NSwgMTAsIDQyLCAxMzEsIDU1LCAyNTAsIAotICAgIDE0MCwgMjQ1LCAxMDYsIDIxNSwgMjA0LCAyNTAsIDE0MCwgMjM5LCAxNDAsIDIxNSwgMjA0LCAxMCwgMjE2LCAxNjUsIDI1MCwgCi0gICAgMTQwLCAyMTgsIDI0NywgMjI0LCAxMTYsIDU0LCAyNTAsIDE0MCwgMjE4LCAyNDcsIDIwOSwgMTUzLCAyMDksIDM3LCA1NCwgCi0gICAgMjUxLCA4NiwgNTQsIDEwLCAyNDUsIDIzMywgMTAsIDI0NCwgMTM4LCAyMTMsIDEzMCwgMTAsIDIxOCwgNjUsIDIwNiwgNDAsIAotICAgIDU0LCAxMCwgMiwgMjI0LCA5NSwgMTAsIDIsIDIxNSwgMywgMjUxLCAzMywgMjA0LCA4NiwgMTAsIDIsIDI1MSwgMzMsIDI1MCwgCi0gICAgNjQsIDEwLCAyLCAyMTYsIDE5OCwgMjUxLCAzMiwgMTAsIDIsIDIxNiwgMjA2LCAyNTEsIDEyLCAyNTAsIDIxMCwgMTAsIDIsIAotICAgIDIwOSwgMjQwLCAxMCwgNSwgMTM4LCAyMDksIDI1MSwgMTAsIDUsIDEzOCwgMzIsIDEzNywgMywgMjI4LCAyOSwgMywgMjAzLCAKLSAgICA0NywgMTAsIDUsIDEzOCwgMjAyLCAxMDcsIDEwLCA1LCAyNDAsIDcxLCAxMCwgNSwgMjQ0LCAxNzIsIDEwLCA1LCAyMjksIAotICAgIDIyOSwgMTAsIDIxMywgMTQzLCAxMCwgMSwgODIsIDEwLCAyMDgsIDcwLCA3MCwgMjE3LCAxNzksIDgyLCAxMCwgMjE3LCA0NywgCi0gICAgODIsIDEwLCAxLCAyMjksIDIzMywgMjAzLCA0NywgMTAsIDEsIDIzNywgMTI3LCAxMCwgMSwgMTM3LCAzLCAyMjUsIDE2NiwgCi0gICAgNTUsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIAotICAgIDEzNywgMywgMjM3LCAxMjgsIDU2LCAxMCwgMSwgODksIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDI1MSwgMzAsIDEwLCAxLCAKLSAgICAyNDgsIDEzOCwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk4LCAxMCwgMSwgMjA5LCAxNjksIDEwLCAxLCAyMDksIDg4LCAxMCwgCi0gICAgMSwgMjMwLCAxNTgsIDEwLCAxLCAyMzcsIDE0OCwgMTAsIDEsIDIyOSwgMTQwLCAxMCwgMSwgMjQ0LCAxODQsIDEwLCAxLCAKLSAgICAyMDksIDEwMCwgMTAsIDEsIDIxNiwgMTIyLCAxMCwgMSwgMjAyLCAxMDcsIDEwLCAxLCAyMTQsIDE2MSwgMTAsIDEsIDIxMywgCi0gICAgMzksIDEwLCAxLCAyMTUsIDI4LCAxMCwgMSwgMjQ0LCAyMDcsIDEwLCAxLCAyMDksIDI1MSwgMTAsIDEsIDIwMiwgMTEwLCAKLSAgICAxMCwgMSwgMjUxLCA1OSwgMTAsIDEsIDIzOCwgMTE0LCAxMCwgMSwgMjI5LCAxOTAsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIAotICAgIDIyOSwgMTkwLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgCi0gICAgMSwgMjQwLCA3NSwgODksIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDg5LCAzLCAxMjYsIDE4NywgNTUsIDEwLCAKLSAgICAyMDksIDIwOSwgMTAsIDEsIDI0MCwgNDcsIDEwLCAxLCAyMTcsIDExOSwgMTAsIDEsIDIzMCwgMjIsIDEwLCAxLCAyMjgsIAotICAgIDI4LCAxMCwgMSwgMjI1LCA1LCAxMCwgMSwgMjIxLCAxNzgsIDEwLCAxLCAyMzcsIDQzLCAxMCwgMSwgMjA0LCA3MCwgMTAsIAotICAgIDEsIDEzNywgMjI1LCAxMjksIDEwLCAxLCAyMDMsIDQ3LCAxMCwgMjQwLCA2OSwgMTAsIDI0NCwgMTcwLCAxMCwgMjI5LCAKLSAgICAyMjcsIDEwLCAyNDAsIDcxLCAxMCwgMjQ0LCAxNzIsIDEwLCAyMjksIDIyOSwgMTAsIDIxMywgODAsIDEwLCAyMTAsIDIyMiwgCi0gICAgMTAsIDIyNSwgMTY0LCA1NSwgMTAsIDIzNywgMTI4LCA1NSwgMTAsIDIzNywgMTI4LCA1NiwgMTAsIDIxMCwgMjQ2LCAyNTEsIAotICAgIDMwLCAxMCwgMjMwLCAyMzksIDI0NCwgMTcyLCAxMCwgMTMxLCAyMjEsIDE3OSwgMjM4LCA4NSwgMTAsIDIwMSwgMjQ4LCAxMCwgCi0gICAgMjIsIDIsIDUsIDIwNiwgMTY1LCA1NSwgMTAsIDIyLCAyLCAyMzAsIDIzOSwgNSwgMjA2LCAxNjUsIDU1LCAxMCwgMjIsIDIsIAotICAgIDcwLCA1NiwgMTAsIDIxNiwgNzMsIDI0NCwgMTcyLCAxMCwgMjQwLCA3MiwgMywgMTIwLCAyNDMsIDgzLCAxMCwgMjA0LCA3MiwgCi0gICAgMjM3LCAxMjgsIDU2LCAyNTAsIDE0MCwgMTcsIDIwMiwgODQsIDI1MCwgMTQwLCAxNywgMTA1LCAyNTAsIDE0MCwgMTcsIAotICAgIDEwOCwgMjUwLCAxNDAsIDE3LCAxNDcsIDI1MCwgMTQwLCAxNywgMTQ5LCAyNTAsIDE0MCwgMTcsIDE3MCwgMjUwLCAxNDAsIAotICAgIDE3LCAxOTUsIDI1MCwgMTQwLCAxNywgMjEzLCAxMTEsIDI1MCwgMTQwLCAxNywgMTk5LCAyNTAsIDE0MCwgMTcsIDIyMiwgCi0gICAgNjMsIDEwLCAyMTgsIDI0NiwgNTQsIDEwLCAyNDQsIDY4LCAyMTMsIDEzMCwgMTAsIDIwOSwgMzUsIDIxMywgMTMwLCAxMCwgCi0gICAgMjM5LCAyMzMsIDIxOCwgNjEsIDIxMSwgOTQsIDEwLCAxLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEsIDI0MywgODQsIAotICAgIDIxNywgMTE5LCAxMCwgMSwgMjEwLCAxOTksIDI1MSwgMzAsIDEwLCAxLCAxMzcsIDIwNCwgODcsIDEwLCAxLCAxMzcsIDMsIAotICAgIDIwNCwgNzIsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDEzNywgMywgMjA0LCA3MiwgMjM3LCAxMjgsIDU2LCAxMCwgMSwgMTM4LCAKLSAgICAyMzcsIDEyNywgMTAsIDEsIDEzOCwgMjM3LCAxMjgsIDI1MSwgMzAsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyMDQsIDcwLCAKLSAgICAxMCwgMSwgMTA2LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyMDMsIDQ3LCAxMCwgMSwgMjA3LCAKLSAgICAyMzMsIDEwLCAxLCAyMDcsIDIzMSwgMTAsIDEsIDI0OCwgMTQ4LCAxMCwgMSwgMjA5LCAxNzAsIDMsIDIxNSwgMjUyLCAxMCwgCi0gICAgMSwgMjA5LCAxNzAsIDMsIDEyNiwgMTg3LCA4NywgMjQyLCA2OCwgMTAsIDEsIDIxOSwgMTYsIDEwLCAxLCAyMDksIDE2NywgCi0gICAgMTAsIDEsIDI0OCwgMTM2LCAxMCwgMSwgMTUxLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxNTEsIDMsIDEyMCwgMTg3LCAKLSAgICA4MCwgNTUsIDEwLCAxLCAyMjAsIDI1NCwgMTAsIDEsIDI0MiwgNSwgMTAsIDEsIDE1MSwgMywgMTI2LCAxODcsIDU1LCAxMCwgCi0gICAgMSwgMjA5LCAxOTEsIDEwLCAxLCAyMDksIDE4OSwgMTAsIDEsIDI0NCwgMTE1LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDIxNSwgCi0gICAgMjUyLCAxMCwgMSwgMjQ0LCAxODUsIDMsIDcwLCA1NiwgMTAsIDEsIDI0NCwgMTg1LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA1LCAKLSAgICAyMDksIDI1MSwgMTAsIDEsIDI0NCwgMTkxLCAxMCwgMSwgMjQ0LCAxMTcsIDEwLCAxLCAyNDIsIDMzLCAxMCwgMSwgMjQ0LCAKLSAgICAxODUsIDMsIDEyNiwgMTg3LCA4NywgMjQyLCA2OCwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIAotICAgIDEsIDIxNSwgMTc3LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIxNSwgCi0gICAgMjUyLCAxMCwgMSwgMjE2LCAxMjMsIDMsIDcwLCA1NiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAyMDYsIDE2NSwgNTYsIDEwLCAKLSAgICAxLCAyMTYsIDEyMywgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDEyMCwgMTg3LCAKLSAgICA1NSwgMTAsIDEsIDIzMCwgMTU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzOSwgMTQ3LCAxODcsIDU1LCAxMCwgMSwgMjE0LCAKLSAgICAxNjIsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAKLSAgICAxLCAyMTQsIDE2MiwgMywgMTI2LCAxODcsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjE1LCAyOSwgMywgCi0gICAgMTIwLCAxODcsIDU2LCAxMCwgMSwgMjE1LCAyOSwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjA5LCAyNTIsIDMsIDEyNiwgCi0gICAgMTg3LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxLCAKLSAgICAyNDAsIDQ4LCAzLCA3MCwgMjI0LCA1LCA1NiwgMTAsIDEsIDI0MCwgNDgsIDMsIDcwLCA1NiwgMTAsIDEsIDIwNiwgNDgsIAotICAgIDEwLCAxLCAyNDAsIDQ4LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMTksIDE0LCAxMCwgMSwgMjE3LCAxMjAsIDMsIDcwLCAKLSAgICA1NSwgMTAsIDEsIDIxNywgMTIwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjksIDE4OSwgMTAsIDEsIDIxMCwgMTY5LCAKLSAgICAyMzAsIDIyLCAxMCwgMSwgMjMwLCAyMywgMywgMjE1LCAyNTIsIDEwLCAxLCAyMzAsIDIzLCAzLCA3MCwgNTUsIDEwLCAxLCAKLSAgICAyMjIsIDIwNSwgMTAsIDEsIDIzMCwgMjMsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIzOCwgMjUxLCAxMCwgMSwgMjM4LCAKLSAgICAyNTIsIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjIyLCAxMjYsIDEwLCAxLCAyMzgsIDI1MiwgMywgMTIwLCAxODcsIDU2LCAxMCwgCi0gICAgMSwgMjM3LCAyMTcsIDEwLCAxLCAyMzgsIDI1MiwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI4LCAyOSwgMywgNSwgMjA2LCAKLSAgICAxNjQsIDEwLCAxLCAyMjgsIDI5LCAzLCA3MCwgNTUsIDEwLCAxLCAyMjgsIDI5LCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAKLSAgICAyMjgsIDI5LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgNzAsIDU2LCAxMCwgMSwgMjIxLCAxNzksIAotICAgIDIzOCwgODUsIDEwLCAxLCAyMTUsIDIzMCwgMTAsIDEsIDIyMSwgMTc5LCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyMSwgMTc5LCAKLSAgICAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDEwOSwgMTAsIDEsIDIwOSwgMTkyLCAzLCA3MCwgNTUsIAotICAgIDEwLCAxLCAyMzcsIDQ0LCAzLCA4OSwgNTUsIDEwLCAxLCAyMzcsIDQ0LCAyMzgsIDM2LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAKLSAgICAzNywgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTksIDIzOCwgMzYsIDEwLCAxLCAyMDQsIDcxLCAKLSAgICAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyOSwgNzYsIDIyMCwgNzMsIDEwLCAxLCAyMjAsIDczLCAxMCwgMSwgNjgsIDEwLCAxLCAKLSAgICAyMDIsIDIxMywgMTAsIDEsIDIyOSwgNzYsIDIwMiwgMjEzLCAxMCwgMSwgMjA0LCA3MSwgMywgMTIwLCAxODcsIDU1LCAxMCwgCi0gICAgMSwgMjA2LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDIwMywgNDcsIDEwLCAxLCA4OSwgMywgMjA5LCAyNDgsIDEwLCAxLCA4OSwgCi0gICAgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMDQsIDcxLCAzLCA3MCwgNTUsIDEwLCAxLCA3NCwgMTAsIDEsIDg5LCAzLCAxMjYsIAotICAgIDE4NywgNTYsIDEwLCAxLCA4OSwgMjQ4LCAyMjMsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDIzNywgMTI4LCA1NSwgMTAsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAxMCwgMSwgMjUxLCAxMDksIDEwLCA1LCAxMzgsIDMyLCAyMTUsIDI5LCAzLCAyMjgsIDI5LCAKLSAgICAzLCAxMzcsIDIyNSwgMTI5LCAxMCwgNSwgMTM4LCAzMiwgMjE3LCAxMjAsIDMsIDIyOCwgMjksIDMsIDEzNywgMjI1LCAxMjksIAotICAgIDEwLCA1LCAxMzgsIDgzLCA4MSwgMTgsIDEwLCA1LCAxMzgsIDIyOCwgMjksIDI1MSwgMzAsIDEwLCA1LCAxMzgsIDIzMCwgCi0gICAgMTU4LCAxMCwgNSwgMTM4LCAxMjYsIDI0MywgODMsIDEwLCA1LCAxMzgsIDIxNCwgMTYxLCAxMCwgMjQxLCA4NCwgNzYsIAotICAgIDI1MCwgNywgMTAsIDIxMSwgOTAsIDc2LCAyMTUsIDE0MywgMjQxLCAxMjMsIDIzNiwgMjI3LCAxMCwgNSwgMTM4LCAyMTUsIAotICAgIDE4OSwgMjAyLCA4NCwgMTAsIDUsIDEzOCwgMjA2LCAyMTksIDIxNiwgMTQyLCAyMDIsIDg0LCAxMCwgNSwgMTM4LCAyNDMsIAotICAgIDg0LCAyMzcsIDY1LCA3NiwgMjI5LCAxNDAsIDEwLCA1LCAxMzgsIDgzLCA2NCwgMTgsIDEwLCA1LCAxMjQsIDIxNCwgMTYxLCAKLSAgICAxMCwgNSwgMTM4LCAyMjUsIDE2NSwgMTAsIDUsIDIwNCwgNzAsIDEwLCA1LCAyMDMsIDQ3LCAxMCwgNSwgMTM4LCAyMDMsIAotICAgIDQ3LCAxMCwgNSwgMTM4LCAyMjEsIDE3OCwgMTAsIDIxOCwgOTcsIDc2LCAyMTUsIDE0LCAxMCwgMjQxLCA5NCwgMjQ2LCAKLSAgICAyMTgsIDEyNCwgMjExLCA2MSwgMTAsIDI0MSwgOTQsIDI0NiwgMjE4LCAxMzgsIDIxMSwgNjEsIDEwLCAyMTUsIDE4OSwgCi0gICAgMTM4LCAyMTEsIDYyLCAzLCAyNDAsIDgsIDI0NiwgMjE3LCAxMCwgNSwgMTI0LCAyMjUsIDUsIDEwLCAxLCAyNDQsIDE4NSwgCi0gICAgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMjQwLCAyMDIsIAotICAgIDI1MCwgMTQwLCAxNywgMjAyLCA4NCwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTA1LCAyNDAsIDIwMiwgMjUwLCAxNDAsIAotICAgIDE3LCAxMDgsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE0NywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTQ5LCAyNDAsIAotICAgIDIwMiwgMjUwLCAxNDAsIDE3LCAxNzAsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE5NSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAKLSAgICAxNywgMjEzLCAxMTEsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE5OSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMjIyLCAKLSAgICA2MywgMTAsIDEsIDIxMywgNDAsIDMsIDcwLCA1NiwgMTAsIDEsIDI0NCwgMjA4LCAzLCA3MCwgNTYsIDEwLCAxLCAyMzgsIAotICAgIDExNSwgMywgNzAsIDU2LCAxMCwgMiwgMjEyLCAxMjMsIDI1MCwgMjM1LCAxMCwgMiwgMjEyLCAxMjMsIDIxOCwgMjcsIDIyNCwgCi0gICAgMjQwLCAxMCwgMSwgMjM3LCA0NCwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAyMTAsIDg5LCAyNDEsIDg0LCA3NiwgMjE5LCAKLSAgICA4OCwgMjEwLCA4OSwgMjEwLCAxOTUsIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjM5LCAxMDIsIAotICAgIDIxMSwgNjEsIDIxMCwgODksIDIxMCwgMTk1LCAyNDUsIDI0MiwgMjEwLCA4OSwgMjEwLCAyNDgsIDI0NSwgMjQyLCAyMTAsIAotICAgIDg5LCAyMzYsIDEwNiwgMjQ1LCAyNDIsIDIxMCwgODksIDI0NSwgMjQzLCAyMTIsIDY4LCAyMjcsIDIyMiwgMjEwLCA4OSwgCi0gICAgMjQ1LCAyNDMsIDIxMiwgNjgsIDIxNiwgMTYsIDIxMCwgODksIDIxMCwgMTk1LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAKLSAgICAyMjIsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MywgMjEyLCA2OCwgMjE2LCAxNiwgMjEwLCA4OSwgMjQ1LCAxODYsIAotICAgIDIxMCwgODksIDIzNywgODksIDIyMCwgOTEsIDIxMCwgODksIDIzNywgODksIDIyNCwgMjE3LCAyMTAsIDg5LCAyMzcsIDg5LCAKLSAgICAyNTAsIDYxLCAyMTAsIDg5LCAyNTEsIDE0NiwgODIsIDIxMCwgODksIDEsIDI1MSwgMzUsIDIxMCwgODksIDEsIDIxMCwgCi0gICAgMTk5LCAyNTEsIDM1LCAyMTAsIDg5LCAxLCAyNDgsIDEwNSwgMjEwLCA4OSwgMSwgMjM4LCAyNDEsIDIxMCwgODksIDEsIAotICAgIDIzOCwgMjQyLCAyMzgsIDIxOSwgMjEwLCA4OSwgMSwgMjQ0LCAxODEsIDIxMCwgODksIDEsIDI0MywgODQsIDI0NCwgMTgyLCAKLSAgICAyMTUsIDI0NiwgMjEwLCA4OSwgMSwgMjM3LCA2NywgMjEwLCA4OSwgMSwgMjA0LCA3MCwgMjEwLCA4OSwgMSwgMjAyLCAxMDcsIAotICAgIDIxMCwgODksIDEsIDIzNywgMTksIDIxMCwgODksIDEsIDIwOSwgMTI4LCAyMTAsIDg5LCAxLCAyMDksIDEyOSwgMjM4LCAKLSAgICAyMTksIDIxMCwgODksIDEsIDIwMiwgMjAwLCAyMTAsIDg5LCAxLCAyMDIsIDIwMSwgMjM3LCA2NywgMjEwLCA4OSwgMSwgCi0gICAgMjI5LCAyNTAsIDIxMCwgODksIDEsIDIyOCwgMjcsIDIxMCwgODksIDEsIDIyNCwgMTEyLCAyMTAsIDg5LCAxLCAyMjEsIDQwLCAKLSAgICAyMTAsIDg5LCAxLCAyMTMsIDEzNiwgMjEwLCA4OSwgMSwgNDYsIDIxMywgMTM2LCAyMTAsIDg5LCAxLCA3NCwgMjEwLCA4OSwgCi0gICAgMSwgMjE5LCAzNCwgMjEwLCA4OSwgMSwgMjE2LCA3MywgMjE5LCAzNCwgMjEwLCA4OSwgMSwgMjE1LCAyNiwgMjEwLCA4OSwgCi0gICAgMSwgMjE3LCAxMTMsIDIxMCwgODksIDEsIDIxNSwgMjQ2LCAyMTAsIDg5LCAxLCAyMTIsIDI1NSwgMjEwLCA4OSwgMSwgMjA5LCAKLSAgICAyMDEsIDIxMCwgODksIDEsIDIxOCwgMjMxLCAyNDgsIDkyLCAyMTAsIDg5LCAxLCAyMTgsIDIzMSwgMjM4LCAxMTIsIDIxMCwgCi0gICAgODksIDEsIDIxOCwgMjMxLCAyNDMsIDI1MiwgMjEwLCA4OSwgMjE3LCAxOTIsIDU1LCAyMTAsIDg5LCAyMTcsIDE5MiwgNTYsIAotICAgIDIxMCwgODksIDIxNywgMTkyLCAyNDIsIDgyLCAyMTAsIDg5LCAyMDIsIDExLCA1NSwgMjEwLCA4OSwgMjAyLCAxMSwgNTYsIAotICAgIDIxMCwgODksIDIwMiwgMTEsIDI0MiwgODIsIDIxMCwgODksIDIxNiwgMTYxLCA1NSwgMjEwLCA4OSwgMjE2LCAxNjEsIDU2LCAKLSAgICAyMTAsIDg5LCAyNDIsIDgzLCAyMDIsIDE4LCAyMzYsIDEwNSwgMjEwLCA4OSwgMjQyLCA4MywgMjAyLCAxOCwgMjUwLCAyMTEsIAotICAgIDIxMCwgODksIDIzNywgNzAsIDU1LCAyMTAsIDg5LCAyMzcsIDcwLCA1NiwgMjEwLCA4OSwgMjM3LCA2OSwgMjQyLCA4MiwgCi0gICAgMjEwLCA4OSwgMjQxLCAxMSwgNTUsIDIxMCwgODksIDI0MSwgMTEsIDU2LCAyMTAsIDg5LCAyMTUsIDEwOSwgMjEwLCA4OSwgCi0gICAgMjQwLCA0MSwgMjQzLCA4NSwgMjEwLCA4OSwgMjE3LCAyNSwgMjEwLCA4OSwgMjE1LCAxMzcsIDIxMCwgODksIDEyMCwgODAsIAotICAgIDE4NywgNTUsIDIxMCwgODksIDEyMCwgODAsIDE4NywgNTYsIDIxMCwgODksIDEyNiwgMTg3LCA1NSwgMjEwLCA4OSwgMTI2LCAKLSAgICAxODcsIDU2LCAyMTAsIDg5LCAyMjAsIDg5LCAyMjcsIDExNSwgNTUsIDIxMCwgODksIDIyMCwgODksIDIyNywgMTE1LCA1NiwgCi0gICAgMjEwLCA4OSwgMjIzLCAxOTQsIDIxMCwgODksIDI0OCwgMjIyLCAyMTAsIDg5LCAxLCAyMTIsIDQsIDIwMiwgNzgsIDIxMCwgCi0gICAgODksIDEsIDIxMiwgNCwgMjI5LCAxMzMsIDIxMCwgODksIDEsIDIxMiwgNCwgMjQwLCA2MCwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKLSAgICAxMjYsIDE4NywgMjM2LCA1NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIAotICAgIDU1LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIAotICAgIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDI0OCwgMTI2LCAyNSwgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjQ4LCAxMzksIDMsIAotICAgIDEyMCwgMTg3LCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAyMzAsIDIzOSwgNSwgMjA2LCAKLSAgICAxNjUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMTUxLCAzLCAxMjAsIDE4NywgNTUsIAotICAgIDEwLCAxLCAxNTEsIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDEyMCwgMTg3LCAKLSAgICAyMDUsIDI0NCwgMjQ4LCAxMjYsIDI1LCA1LCAyMDksIDI1MSwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMzAsIDIzOSwgNSwgCi0gICAgMjA2LCAxNjUsIDU2LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDk1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDIzOSwgMTQ3LCAxODcsIAotICAgIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDIxOCwgCi0gICAgNTksIDE4MywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMjQwLCA0OCwgCi0gICAgMywgMTIwLCAxODcsIDU2LCAxMCwgMSwgMjQwLCA0OCwgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCAKLSAgICAyMjksIDE5MCwgMywgNzAsIDU1LCAxMCwgMSwgMjI5LCAxOTAsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOSwgMTkwLCAKLSAgICAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDgzLCAzLCA3MCwgNTUsIDEwLCAxLCA4MywgMywgNzAsIAotICAgIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCA1LCAyMDksIDI1MSwgCi0gICAgMTAsIDEsIDIyMSwgMTc5LCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIyOCwgMjksIDMsIDE0MiwgMTAsIDEsIDIxNiwgMTIzLCAKLSAgICAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIxNCwgCi0gICAgMTYyLCAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMTUxLCAzLCA1LCAxMCwgMSwgMjA5LCAyNTIsIDU2LCAKLSAgICAxMCwgMSwgMTUxLCAzLCA1LCAxMCwgMSwgMjA5LCAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAyMTQsIDE2MiwgMywgCi0gICAgNSwgMTAsIDEsIDIwOSwgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMjE2LCAxMjMsIDMsIDUsIDEwLCAxLCAyMDksIAotICAgIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCA1NSwgMTAsIDEsIDEzNywgCi0gICAgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIDEsIDEzNywgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAKLSAgICAxNywgMTI2LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDg5LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgCi0gICAgMSwgMjQwLCA3NSwgODksIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgCi0gICAgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMjM5LCAxNDcsIDU2LCAxMCwgMSwgMjA0LCA3MSwgMywgMjQwLCAyMDIsIAotICAgIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIDEsIDIwNCwgNzEsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgCi0gICAgNTUsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCA4OSwgCi0gICAgMjQ4LCAyMjQsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgNTUsIDEwLCAxLCAxNTEsIDMsIDI0MCwgMjAyLCAKLSAgICAyNTAsIDE0MCwgMTcsIDIzOSwgMTQ3LCA1NiwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAKLSAgICAyMzksIDE0NywgNTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgMSwgMjMwLCAyMywgMywgCi0gICAgMTIwLCAxODcsIDU1LCAyMDksIDEwNSwgMSwgMjM3LCAxNTcsIDIwOSwgMTA1LCAxLCAyMTMsIDQ5LCAyMDksIDEwNSwgMSwgCi0gICAgMjIxLCAxNzcsIDIwOSwgMTA1LCAxLCAyMTYsIDIxNiwgMjA5LCAxMDUsIDEsIDI0OSwgMzAsIDIwOSwgMTA1LCAxLCAyMjcsIAotICAgIDE1OCwgMjA5LCAxMDUsIDEsIDIzMCwgMzcsIDIwOSwgMTA1LCAxLCAyNTEsIDE5LCAyMDksIDEwNSwgMSwgMjA2LCA4NCwgCi0gICAgMjA5LCAxMDUsIDEsIDIyNSwgNCwgMjA5LCAxMDUsIDEsIDI0MCwgMTA2LCAyMDksIDEwNSwgMSwgMjQzLCAyNTUsIDIwOSwgCi0gICAgMTA1LCAxLCAyMDksIDEwNywgMjA5LCAxMDUsIDEsIDIyOCwgMTA5LCAyMDksIDEwNSwgMSwgMjM5LCA0LCAyMDksIDEwNSwgCi0gICAgMSwgMjM4LCA0MiwgMjA5LCAxMDUsIDEsIDIxNCwgMTYwLCAyMDksIDEwNSwgMSwgMjQ0LCAxMzYsIDIwOSwgMTA1LCAxLCAKLSAgICAyMDIsIDk4LCAyMDksIDEwNSwgMSwgMjA5LCAyMDIsIDIwOSwgMTA1LCAxLCAyMDMsIDExMCwgMjA5LCAxMDUsIDEsIDIxOSwgCi0gICAgNDcsIDIwOSwgMTA1LCAxLCAyMzAsIDE2NiwgMjA5LCAxMDUsIDEsIDI0NiwgMTczLCAyMDksIDEwNSwgMSwgMjA3LCAyNDAsIAotICAgIDIwOSwgMTA1LCAxLCAyMzcsIDExLCAyMDksIDEwNSwgMSwgMjI5LCAxNDMsIDIwOSwgMTA1LCAxLCAyMDksIDEwNiwgMjA5LCAKLSAgICAxMDUsIDEsIDIwMiwgMTE0LCAyMDksIDEwNSwgMSwgMjEzLCAzOCwgMjA5LCAxMDUsIDEsIDIxNSwgMzIsIDIwOSwgMTA1LCAKLSAgICAxLCAyNDQsIDIxMCwgMjA5LCAxMDUsIDEsIDEzNSwgMjA5LCAxMDUsIDEsIDIwMiwgMTcsIDIwOSwgMTA1LCAxLCAyNTEsIAotICAgIDU2LCAyMDksIDEwNSwgMSwgMjM4LCAxMTMsIDIwOSwgMTA1LCAxLCAyMTcsIDEyMywgMjA5LCAxMDUsIDEsIDIwNCwgMTA5LCAKLSAgICAyMDksIDEwNSwgMjUxLCAxNDgsIDIwOSwgMTA1LCAyNTEsIDI0NiwgMjA5LCAxMDUsIDIzNSwgMTY1LCAyMDksIDEwNSwgCi0gICAgMjQxLCAxNjAsIDIwOSwgMTA1LCAyMDcsIDMyLCAyMDksIDEwNSwgMjIwLCAxNywgMjA5LCAxMDUsIDI0MSwgMTcwLCAyMDksIAotICAgIDEwNSwgMjQwLCAxOTMsIDIwOSwgMTA1LCAyMjAsIDg4LCAyMDksIDEwNSwgMjIwLCA5NiwgMjA5LCAxMDUsIDIxMCwgMjIyLCAKLSAgICAyMDksIDEwNSwgMSwgMjIzLCAxMDYsIDIyMSwgMjU1LCAxNywgMjAyLCA4NCwgMjIxLCAyNTUsIDE3LCAxMDUsIDIyMSwgCi0gICAgMjU1LCAxNywgMTA4LCAyMjEsIDI1NSwgMTcsIDE0NywgMjIxLCAyNTUsIDE3LCAxNDksIDIyMSwgMjU1LCAxNywgMTcwLCAKLSAgICAyMjEsIDI1NSwgMTcsIDE5NSwgMjIxLCAyNTUsIDE3LCAyMTMsIDExMSwgMjIxLCAyNTUsIDE3LCAxOTksIDIyMSwgMjU1LCAKLSAgICAxNywgMjIyLCA2MywgMjIxLCAyNTUsIDEsIDYzLCAyMjEsIDI1NSwgMSwgMjQxLCAxNjEsIDIyMSwgMjU1LCAxLCA3NSwgCi0gICAgMjIxLCAyNTUsIDEsIDc0LCAyMjEsIDI1NSwgMSwgNjgsIDIyMSwgMjU1LCAxLCAyMjAsIDE4LCAyMjEsIDI1NSwgMSwgNzgsIAotICAgIDIyMSwgMjU1LCAxLCAyNDQsIDE5OSwgMjIxLCAyNTUsIDEsIDIyMywgMTYzLCAyMjEsIDI1NSwgMSwgMjQ5LCAzMiwgMjIxLCAKLSAgICAyNTUsIDEsIDE4NSwgMjIxLCAyNTUsIDEsIDIxMCwgMjIsIDIyMSwgMjU1LCAxLCAyMzAsIDE4MSwgMjIxLCAyNTUsIDEsIAotICAgIDI0NiwgMTk5LCAyMjEsIDI1NSwgMSwgMjQ0LCAyMTIsIDIyMSwgMjU1LCAxLCAyMTYsIDIyMCwgMjIxLCAyNTUsIDEsIDIxNSwgCi0gICAgMTg1LCAyMjEsIDI1NSwgMSwgMjE1LCAzNiwgMjIxLCAyNTUsIDEsIDIzOCwgMjA3LCAyMjEsIDI1NSwgMSwgMjQwLCAxMDgsIAotICAgIDIyMSwgMjU1LCAxLCAxNzMsIDIyMSwgMjU1LCAxLCAyMjgsIDExMywgMjIxLCAyNTUsIDEsIDIyMywgMTExLCAyMDMsIDI1MiwgCi0gICAgMjIxLCAyNTUsIDEsIDE5MiwgMjIxLCAyNTUsIDEsIDIyMSwgMTEsIDIyMSwgMjU1LCAxLCAyMDEsIDIwMSwgMjIxLCAyNTUsIAotICAgIDEsIDE1MiwgMjIxLCAyNTUsIDEsIDIwNCwgMTExLCAyMjEsIDI1NSwgMSwgMTk4LCAyMjEsIDI1NSwgMSwgMjIxLCAxMiwgCi0gICAgMjAzLCAyNTIsIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyMzAsIDE4MSwgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDI0NiwgMTk5LCAKLSAgICAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjE2LCAyMjAsIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDEzOCwgMjA4LCAxNjEsIAotICAgIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDEyNCwgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDIxNSwgMjQ1LCAKLSAgICAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDI0NCwgMTksIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMTM4LCAKLSAgICAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDEyNCwgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAyMTUsIDI0NSwgCi0gICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMjIzLCA3MSwgODIsIDIyMSwgMjU1LCAzOSwgNTIsIDcwLCA1NSwgMjIxLCAyNTUsIAotICAgIDEzOCwgMTQzLCAyNTAsIDE2MCwgMjIxLCAyNTUsIDEyNCwgMTQzLCAyNTAsIDE2MCwgMjIxLCAyNTUsIDE2LCAyMjAsIDE5LCAKLSAgICAyNDQsIDMzLCAyMjEsIDI1NSwgMTYsIDIzOCwgMjA2LCAyMjEsIDI1NSwgMjQ1LCAyMzMsIDIyMSwgMjU1LCAyNDAsIDIxMiwgCi0gICAgODIsIDIyMSwgMjU1LCAyMjgsIDg0LCAyMTQsIDI1MiwgMSwgMjUxLCAzNywgMjE0LCAyNTIsIDEsIDI0OCwgNTEsIDIxNCwgCi0gICAgMjUyLCAxLCAyMzgsIDI0MCwgMjE0LCAyNTIsIDEsIDI0NCwgMTgzLCAyMTQsIDI1MiwgMSwgMjMwLCAxOTIsIDIxNCwgMjUyLCAKLSAgICAxLCAyNDksIDMwLCAyMTQsIDI1MiwgMSwgMjAyLCA4NywgMjE0LCAyNTIsIDEsIDIzMCwgMjAxLCAyMTQsIDI1MiwgMSwgCi0gICAgMjA4LCAyMDAsIDIxNCwgMjUyLCAxLCAyMDIsIDE4MiwgMjE0LCAyNTIsIDEsIDIzMCwgMzgsIDIxNCwgMjUyLCAxLCAyMjgsIAotICAgIDEwNiwgMjE0LCAyNTIsIDEsIDIyNCwgMTEyLCAyMTQsIDI1MiwgMSwgMjIxLCA0MCwgMjE0LCAyNTIsIDEsIDIxMiwgMTIxLCAKLSAgICAyMTQsIDI1MiwgMSwgMjMxLCA0OSwgMjE0LCAyNTIsIDEsIDI0MCwgMjYsIDIxNCwgMjUyLCAxLCAyMDgsIDE4LCAyMTQsIAotICAgIDI1MiwgMSwgMjE3LCA0NCwgMjE0LCAyNTIsIDEsIDIxNSwgMjQ2LCAyMTQsIDI1MiwgMSwgMjEzLCA2NiwgMjE0LCAyNTIsIAotICAgIDEsIDIxMCwgMTcsIDIxNCwgMjUyLCAxMzEsIDIzMSwgNDksIDIxNCwgMjUyLCAxMzEsIDIzMSwgNDgsIDIxNCwgMjUyLCAKLSAgICAxMzEsIDIyMCwgODQsIDIxNCwgMjUyLCAxMzEsIDI0NCwgMTk3LCAyMTQsIDI1MiwgNjUsIDEsIDI0MSwgNDIsIDIwMiwgCi0gICAgMTgyLCAyMTQsIDI1MiwgMTMxLCAyNDEsIDQyLCAyMDIsIDE4MiwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIDc0LCAyMTQsIAotICAgIDI1MiwgMjIsIDIsIDc0LCAyMTQsIDI1MiwgMjIsIDIsIDIxOSwgMTk3LCAyNTIsIDI1LCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgCi0gICAgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAyNTIsIDI1LCAyMTQsIDI1MiwgMjIsIDIsIDIxOSwgMTk3LCA2MywgMjE0LCAKLSAgICAyNTIsIDIyLCAyLCAxNjMsIDYzLCAyMTQsIDI1MiwgMjIsIDIsIDYzLCAyMTQsIDI1MiwgNjUsIDEsIDIxMiwgMjI4LCA2MywgCi0gICAgMjE0LCAyNTIsIDIyLCAyLCAyMTIsIDIyOCwgNjMsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA2OCwgMjE0LCAyNTIsIDIyLCAyLCAKLSAgICA2OCwgMjE0LCAyNTIsIDY1LCAxLCA3NSwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIDc1LCAyMTQsIDI1MiwgMjIsIDIsIDc1LCAKLSAgICAyMTQsIDI1MiwgMjIsIDIsIDc4LCAyMTQsIDI1MiwgMjIsIDIsIDIxMCwgMjIyLCAyMTQsIDI1MiwgMTMxLCAyMjIsIDIyMywgCi0gICAgMjE0LCAyNTIsIDIxNywgMTc5LCAyMjIsIDIyMywgMjE0LCAyNTIsIDIxNywgMTc5LCAyNTEsIDgzLCAyMTQsIDI1MiwgMjE3LCAKLSAgICAxNzksIDI1MCwgMjIyLCAyMTQsIDI1MiwgMjE3LCAxNzksIDI0OCwgMjAyLCAyMTQsIDI1MiwgMjE3LCAxNzksIDI1MCwgNDQsIAotICAgIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjEyLCAyNDMsIDIxNCwgMjUyLCAyNTEsIDE0NiwgODIsIDIxNCwgMjUyLCAyMTcsIDE3OSwgCi0gICAgMjI0LCAyNTAsIDIxNywgODAsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjAyLCAyNSwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTcsIAotICAgIDgwLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwMiwgMTEzLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwNywgMTcwLCAyMTQsIDI1MiwgCi0gICAgMjE3LCAxNzksIDI1MCwgMTExLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIxMiwgOCwgMjI1LCA3NywgMjE0LCAyNTIsIDIxNywgCi0gICAgMTc5LCAyNTAsIDIwNiwgMjI1LCAxMTgsIDEsIDIzNywgMTM0LCAyMjUsIDExOCwgMSwgMjUxLCAyMzIsIDIyNSwgMTE4LCAxLCAKLSAgICAyNTEsIDgxLCAyMjUsIDExOCwgMSwgMjUxLCAxMjIsIDIyNSwgMTE4LCAxLCAyNTEsIDczLCAyMjUsIDExOCwgMSwgMjA2LCAKLSAgICAxODQsIDIyNSwgMTE4LCAxLCAyNTAsIDEsIDIyNSwgMTE4LCAxLCAyMzAsIDIwMSwgMjI1LCAxMTgsIDEsIDI1MCwgNDEsIAotICAgIDIyNSwgMTE4LCAxLCAyNTEsIDQyLCAyMjUsIDExOCwgMSwgMjUxLCA0NywgMjI1LCAxMTgsIDEsIDI1MSwgMzksIDIyNSwgCi0gICAgMTE4LCAxLCAyNTAsIDI0NywgMjI1LCAxMTgsIDEsIDI1MCwgMjMxLCAyMjUsIDExOCwgMSwgMjUwLCA4MSwgMjI1LCAxMTgsIAotICAgIDEsIDIzMSwgNDksIDIyNSwgMTE4LCAxLCAyNTAsIDE3NSwgMjI1LCAxMTgsIDEsIDI1MCwgNTEsIDIyNSwgMTE4LCAxLCAKLSAgICAyNTAsIDE0OCwgMjI1LCAxMTgsIDEsIDI1MCwgMTQ0LCAyMjUsIDExOCwgMSwgMjUwLCA3NSwgMjI1LCAxMTgsIDEsIDI1MCwgCi0gICAgNDksIDIyNSwgMTE4LCAxLCAyNDIsIDE4LCAyMjUsIDExOCwgMSwgMjMwLCAzMCwgMjI1LCAxMTgsIDEsIDI1MSwgNTksIAotICAgIDIyNSwgMTE4LCAyNTEsIDg3LCA4MiwgMjI1LCAxMTgsIDIwNSwgMTg3LCA4MiwgMjI1LCAxMTgsIDIzOCwgMTc5LCA4MiwgCi0gICAgMjI1LCAxMTgsIDIxNywgMTc4LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDUsIDIwNiwgMTY1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAKLSAgICAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxODQsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDIwOSwgMjUyLCAzLCAxMjAsIAotICAgIDE4NywgNTUsIDEwLCAxLCAyNDAsIDQ4LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMTcsIAotICAgIDEyMCwgMywgNzAsIDU2LCAxMCwgMSwgMjI4LCAyOSwgMywgNTIsIDE0MiwgMTAsIDEsIDgzLCAzLCAxMjYsIDE4NywgNTUsIAotICAgIDEwLCAxLCA4OSwgMywgMTIwLCAxODcsIDI0OCwgMTI2LCAyNSwgMjM3LCAxMjgsIDU1LCAxMCwgMSwgODksIDMsIDEyMCwgCi0gICAgMTg3LCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMjcsIDE0LCAxMCwgMSwgMjA0LCA3MSwgCi0gICAgMywgNzAsIDIwNCwgNCwgMTAsIDEsIDIxNSwgMjE1LCAyMDMsIDQ3LCAxMCwgMSwgMTI0LCAyNTEsIDMwLCAxMCwgMSwgMjQ0LCAKLSAgICAxODUsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIxNSwgMjksIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIzOCwgMjUyLCAKLSAgICAzLCAyMzAsIDIzOSwgOTUsIDEwLCAxLCAyMTEsIDUzLCAyMDQsIDcwLCAxMCwgMSwgMjAyLCAxMDgsIDMsIDIzMCwgMjM5LCAKLSAgICAyMDYsIDE2NSwgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzAsIDIzLCAzLCA3MCwgNTYsIAotICAgIDEwLCAyMDcsIDE3NCwgMjQ0LCAxNzMsIDU2LCAxMCwgMjQ1LCA5MywgMjQwLCA3MSwgMTAsIDI0NSwgOTMsIDI0NCwgMTcyLCAKLSAgICAxMCwgMjQ1LCA5MywgMjI5LCAyMjksIDEwLCAyNDUsIDkzLCAyNDAsIDY5LCAxMCwgMjQ1LCA5MywgMjQ0LCAxNzAsIDEwLCAKLSAgICAyNDUsIDkzLCAyMjksIDIyNywgMTAsIDE0MywgMTE4LCA3MCwgNTUsIDEwLCAxNDMsIDEyMCwgMTg3LCA1NSwgMTAsIDE0MywgCi0gICAgMjI3LCAxNSwgNTUsIDEwLCAxNDMsIDExOCwgNzAsIDU2LCAxMCwgMTQzLCAxMjAsIDE4NywgNTYsIDEwLCAxNDMsIDIyNywgCi0gICAgMTUsIDU2LCAxMCwgMTcxLCAyNDAsIDY5LCAxMCwgMTcxLCAyNDQsIDE3MCwgMTAsIDE3MSwgMjI5LCAyMjcsIDEwLCA1LCAKLSAgICAxMzgsIDIwNCwgNzAsIDEwLCAyNDAsIDcyLCAzLCAyMTUsIDI1MiwgMTAsIDI0MCwgNzIsIDMsIDcwLCA1NSwgMTAsIDIyOSwgCi0gICAgMjMwLCAzLCA3MCwgNTYsIDEwLCA0OSwgMjUwLCA5NSwgNTUsIDEwLCA1MCwgMjUwLCA5NSwgNTUsIDEwLCA0OSwgMjUwLCAKLSAgICA5NSwgNTYsIDEwLCA1MCwgMjUwLCA5NSwgNTYsIDEwLCA1MiwgNTAsIDI1MCwgOTUsIDU1LCAxMCwgNTIsIDUwLCAyNTAsIAotICAgIDk1LCA4NywgMywgMjQzLCA4NSwgMTAsIDUwLCAyNTAsIDk1LCA4NywgMywgMjQzLCA4NSwgMTAsIDI0NCwgMTczLCAzLCAKLSAgICAyNDMsIDg1LCAxMCwgMTMxLCAyMTIsIDE1NCwgMjIxLCAxNzksIDIzOCwgODUsIDkyLCAyLCAyMzAsIDIzOSwgMjQ3LCA1MiwgCi0gICAgOTIsIDIsIDI0NywgNTIsIDkyLCAyLCAyNTAsIDE4MCwgOTIsIDIsIDIwNSwgMTk5LCA5MiwgMSwgMjEyLCAyMjgsIDYzLCAKLSAgICA5MiwgMSwgNjMsIDkyLCAxLCAyNTIsIDI1LCA5MiwgMSwgNzUsIDkyLCAxLCAyMzEsIDgzLCA5MiwgMSwgNjgsIDkyLCAxLCAKLSAgICAyMDYsIDE3OCwgOTIsIDEsIDEyNSwgMTQ2LCA5MiwgMSwgMTI1LCAxNTksIDkyLCAxLCAyNDcsIDU1LCA3NCwgOTIsIDEsIAotICAgIDIxMiwgMjI4LCA3NCwgOTIsIDEsIDc0LCA5MiwgMSwgMjUxLCA2NCwgOTIsIDEsIDI0NywgNTUsIDc4LCA5MiwgMSwgMjEyLCAKLSAgICAyMjgsIDc4LCA5MiwgMSwgNzgsIDkyLCAxLCAyNTAsIDM0LCA5MiwgMSwgMTczLCA5MiwgMSwgMjI5LCAxNDQsIDkyLCAxLCAKLSAgICAyMzksIDgsIDkyLCAxLCAyMzgsIDExOSwgOTIsIDEsIDIyMiwgMjAzLCA5MiwgMSwgMjQ3LCA5MiwgOTIsIDEsIDI0NiwgCi0gICAgMTk5LCA5MiwgMSwgMjMwLCAxODEsIDkyLCAxLCAyMzAsIDE0OSwgOTIsIDEsIDIyMSwgMTEsIDkyLCAxLCAyMDcsIDI0MSwgCi0gICAgOTIsIDEsIDIwNywgMjI5LCA5MiwgMSwgMjQ0LCAxMjAsIDkyLCAxLCAyNDQsIDEwNCwgOTIsIDEsIDIyMSwgMjI3LCA5MiwgCi0gICAgMSwgMjEwLCAyMiwgOTIsIDEsIDIwOSwgMTA4LCA5MiwgMSwgMjQ0LCAyMTIsIDkyLCAxLCAyNDQsIDEsIDkyLCAxLCAyMDEsIAotICAgIDIwMSwgOTIsIDEsIDIyMSwgMjA5LCA5MiwgMSwgMTg1LCA5MiwgMSwgMjE4LCAyMDgsIDkyLCAxLCAyNDksIDMyLCA5MiwgMSwgCi0gICAgMjQ4LCA5OCwgOTIsIDEsIDE5MiwgOTIsIDEsIDE5OCwgOTIsIDEsIDIxNiwgMjIwLCA5MiwgMSwgMjE1LCAxODUsIDkyLCAxLCAKLSAgICAyMjgsIDExMywgOTIsIDEsIDIyNywgNzcsIDkyLCAxLCAyMjcsIDY4LCA5MiwgMSwgMjA2LCA4NiwgOTIsIDEsIDIxMywgOTAsIAotICAgIDkyLCAxLCAyMTEsIDE2NCwgOTIsIDEsIDIxNSwgMzYsIDkyLCAxLCAxNTIsIDkyLCAyMiwgMiwgMjIwLCA3MywgOTIsIDIyLCAKLSAgICAyLCAyMjAsIDE2LCA5MiwgMiwgMjIxLCA1MSwgOTIsIDIsIDI1MCwgMTcsIDkyLCAyMiwgMiwgMjUyLCAyNSwgOTIsIDIyLCAKLSAgICAyLCA3NSwgOTIsIDIyLCAyLCAyMzEsIDgzLCA5MiwgMjIsIDIsIDY4LCA5MiwgMjIsIDIsIDIwNiwgMTc4LCA5MiwgMjIsIDIsIAotICAgIDEyNSwgMTQ2LCA5MiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgNzQsIDkyLCAyMiwgMiwgCi0gICAgMjEyLCAyMjgsIDc0LCA5MiwgMjIsIDIsIDc0LCA5MiwgMjIsIDIsIDI1MSwgNjQsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgNzgsIAotICAgIDkyLCAyMiwgMiwgMjEyLCAyMjgsIDc4LCA5MiwgMjIsIDIsIDc4LCA5MiwgMjIsIDIsIDI1MCwgMzQsIDkyLCAyLCAyMDUsIAotICAgIDIwNCwgOTIsIDIyLCAyLCAyMTcsIDIyOSwgNzQsIDkyLCAyMiwgMiwgMjUwLCAxMywgOTIsIDIyMCwgMzksIDkyLCAyMTEsIAotICAgIDQyLCAyLCAyMDcsIDI2LCA5MiwgMjExLCA0MiwgMiwgMjUwLCAxODIsIDkyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDkyLCAKLSAgICAyNTEsIDEyNiwgMjUxLCAxMzgsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgMTYzLCA3NCwgOTIsIDIyLCAyLCAyMDcsIDI0LCA5MiwgCi0gICAgMjIsIDIsIDIwNiwgMTc3LCA5MiwgMSwgMjE3LCAxMjYsIDkyLCAxLCAyMjksIDEyNSwgOTIsIDEsIDIzOCwgOTQsIDkyLCAxLCAKLSAgICAyMDIsIDExNiwgOTIsIDEsIDI0NCwgMTA5LCA5MiwgMSwgMjE2LCA2MSwgOTIsIDEsIDI0MCwgMTA4LCA5MiwgMSwgMjAyLCAKLSAgICAxNjgsIDkyLCAxLCAxMjUsIDIxNSwgMTg2LCA5MiwgMSwgMTI1LCAyMjcsIDc4LCA5MiwgMjIsIDIsIDEyNSwgMTU5LCA5MiwgCi0gICAgMjIsIDIsIDEyNSwgMjI3LCA3OCwgOTIsIDI0NCwgMTY2LCA5MiwgNTIsIDI0NCwgMTY2LCA5MiwgMTcsIDIwMiwgODQsIDkyLCAKLSAgICAxNywgMTA1LCA5MiwgMTcsIDEwOCwgOTIsIDE3LCAxNDcsIDkyLCAxNywgMTQ5LCA5MiwgMTcsIDE3MCwgOTIsIDE3LCAxOTUsIAotICAgIDkyLCAxNywgMjEzLCAxMTEsIDkyLCAxNywgMTk5LCA5MiwgMTcsIDIyMiwgNjMsIDkyLCAyNTEsIDE0NiwgNTQsIDkyLCAyLCAKLSAgICAxMzgsIDIxMSwgMjI3LCAyNDMsIDg1LCA5MiwgMSwgMjQ3LCA1NSwgNjMsIDkyLCAxLCAyMjAsIDczLCA5MiwgMSwgMjIwLCAKLSAgICAxNiwgOTIsIDEsIDI1MCwgMTMsIDkyLCAxLCAyMDcsIDI0LCA5MiwgMSwgMjA2LCAxNzcsIDkyLCAxLCAyMjUsIDgyLCAyNDQsIAotICAgIDEyMCwgOTIsIDEsIDIwMiwgODAsIDkyLCAxLCA3OSwgMTk4LCA5MiwgMSwgMjM4LCAxNTUsIDkyLCAxLCAyMzAsIDEyOSwgCi0gICAgOTIsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDkyLCAxLCAyNDQsIDExMCwgOTIsIDEsIDI0OCwgMTk4LCAxNzksIDI1MCwgMjA5LCAKLSAgICAxNzksIDIsIDI0NywgNTIsIDE3OSwgMiwgMjUwLCAxODAsIDE3OSwgMiwgMjA1LCAxOTksIDE3OSwgMSwgNjMsIDE3OSwgMSwgCi0gICAgMjUyLCAyNSwgMTc5LCAxLCA3NSwgMTc5LCAxLCAyMzEsIDgzLCAxNzksIDEsIDY4LCAxNzksIDEsIDIwNiwgMTc4LCAxNzksIAotICAgIDEsIDEyNSwgMTQ2LCAxNzksIDEsIDEyNSwgMTU5LCAxNzksIDEsIDc0LCAxNzksIDEsIDI1MSwgNjQsIDE3OSwgMSwgNzgsIAotICAgIDE3OSwgMSwgMjUwLCAzNCwgMTc5LCAxLCAxNzMsIDE3OSwgMSwgMjI5LCAxNDQsIDE3OSwgMSwgMjM5LCA4LCAxNzksIDEsIAotICAgIDIzOCwgMTE5LCAxNzksIDEsIDIyMiwgMjAzLCAxNzksIDEsIDI0NywgOTIsIDE3OSwgMSwgMjQ2LCAxOTksIDE3OSwgMSwgCi0gICAgMjMwLCAxODEsIDE3OSwgMSwgMjMwLCAxNDksIDE3OSwgMSwgMjIxLCAxMSwgMTc5LCAxLCAyMDcsIDI0MSwgMTc5LCAxLCAKLSAgICAyMDcsIDIyOSwgMTc5LCAxLCAyNDQsIDEyMCwgMTc5LCAxLCAyNDQsIDEwNCwgMTc5LCAxLCAyMjEsIDIyNywgMTc5LCAxLCAKLSAgICAyMTAsIDIyLCAxNzksIDEsIDIwOSwgMTA4LCAxNzksIDEsIDI0NCwgMjEyLCAxNzksIDEsIDI0NCwgMSwgMTc5LCAxLCAyMDEsIAotICAgIDIwMSwgMTc5LCAxLCAxODUsIDE3OSwgMSwgMjE4LCAyMDgsIDE3OSwgMSwgMjQ5LCAzMiwgMTc5LCAxLCAyNDgsIDk4LCAKLSAgICAxNzksIDEsIDE5MiwgMTc5LCAxLCAxOTgsIDE3OSwgMSwgMjE2LCAyMjAsIDE3OSwgMSwgMjI4LCAxMTMsIDE3OSwgMSwgCi0gICAgMjEzLCA5MCwgMTc5LCAxLCAyMTEsIDE2NCwgMTc5LCAxLCAyMTUsIDM2LCAxNzksIDEsIDE1MiwgMTc5LCAyLCAyMjEsIDUxLCAKLSAgICAxNzksIDIsIDI1MCwgMTcsIDE3OSwgMjIsIDIsIDI1MiwgMjUsIDE3OSwgMjIsIDIsIDc1LCAxNzksIDIyLCAyLCAyMzEsIAotICAgIDgzLCAxNzksIDIyLCAyLCA2OCwgMTc5LCAyMiwgMiwgMjA2LCAxNzgsIDE3OSwgMjIsIDIsIDEyNSwgMTQ2LCAxNzksIDIyLCAKLSAgICAyLCAxMjUsIDIxNSwgMTg2LCAxNzksIDIyLCAyLCA3NCwgMTc5LCAyMiwgMiwgMjUxLCA2NCwgMTc5LCAyMiwgMiwgNzgsIAotICAgIDE3OSwgMjIsIDIsIDI1MCwgMzQsIDE3OSwgMiwgMjA1LCAyMDQsIDE3OSwgMSwgMjI5LCAxMzUsIDIxMCwgMjIsIDE3OSwgCi0gICAgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAxNzksIDEsIDIxNSwgMTg1LCAxNzksIDEsIDIxNiwgNjEsIDE3OSwgMSwgMjAyLCAKLSAgICAxNjgsIDE3OSwgMSwgMTI1LCAyMTUsIDE4NiwgMTc5LCAxLCAxMjUsIDIyNywgNzgsIDE3OSwgMjIsIDIsIDEyNSwgMTU5LCAKLSAgICAxNzksIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE3OSwgMTcsIDIwMiwgODQsIDE3OSwgMTcsIDEwNSwgMTc5LCAxNywgMTA4LCAKLSAgICAxNzksIDE3LCAxNDcsIDE3OSwgMTcsIDE0OSwgMTc5LCAxNywgMTcwLCAxNzksIDE3LCAxOTUsIDE3OSwgMTcsIDIxMywgCi0gICAgMTExLCAxNzksIDE3LCAxOTksIDE3OSwgMTcsIDIyMiwgNjMsIDE3OSwgMSwgMjE2LCAyMjEsIDMsIDEwMSwgMjQzLCAyMjcsIAotICAgIDE3OSwgMSwgMjE2LCAyMjEsIDMsIDIyNiwgMjUxLCAyNDMsIDIyNywgMTc5LCAyMTUsIDEyMCwgODIsIDE3OSwgMjE1LCAKLSAgICAxMjAsIDU0LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIDEwNSwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxMDgsIDE3OSwgCi0gICAgMjQ1LCA5MiwgMjIxLCA0MywgMTQ3LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIDE0OSwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAKLSAgICAxMTgsIDIyNywgMTgwLCAyMDksIDk4LCAyMDksIDkzLCAyNDQsIDMxLCAxNzksIDI0NSwgOTIsIDI0NCwgMzIsIDIxMiwgODIsIAotICAgIDE3OSwgMjMwLCAyMDIsIDE3OSwgMjM4LCAyMzEsIDgyLCAyMzcsIDE5OCwgMiwgMjUxLCAxMjEsIDI0OCwgNjYsIDIzNywgCi0gICAgMTk4LCAyLCAyNDgsIDY2LCAyMzcsIDE5OCwgMiwgMjA1LCAxOTksIDIzNywgMTk4LCAxLCA2MywgMjM3LCAxOTgsIDEsIAotICAgIDI1MiwgMjUsIDIzNywgMTk4LCAxLCA3NSwgMjM3LCAxOTgsIDEsIDIzMSwgODMsIDIzNywgMTk4LCAxLCA2OCwgMjM3LCAKLSAgICAxOTgsIDEsIDIwNiwgMTc4LCAyMzcsIDE5OCwgMSwgMjQxLCAxNjEsIDIzNywgMTk4LCAxLCAyNTEsIDY0LCAyMzcsIDE5OCwgCi0gICAgMSwgMjIwLCAxOCwgMjM3LCAxOTgsIDEsIDI1MCwgMzQsIDIzNywgMTk4LCAxLCAxNzMsIDIzNywgMTk4LCAxLCAyMjksIAotICAgIDE0NCwgMjM3LCAxOTgsIDEsIDIzOSwgOCwgMjM3LCAxOTgsIDEsIDIzOCwgMTE5LCAyMzcsIDE5OCwgMSwgMjIyLCAyMDMsIAotICAgIDIzNywgMTk4LCAxLCAyNDcsIDkyLCAyMzcsIDE5OCwgMSwgMjQ2LCAxOTksIDIzNywgMTk4LCAxLCAyMzAsIDE4MSwgMjM3LCAKLSAgICAxOTgsIDEsIDIzMCwgMTQ5LCAyMzcsIDE5OCwgMSwgMjIxLCAxMSwgMjM3LCAxOTgsIDEsIDIwNywgMjQxLCAyMzcsIDE5OCwgCi0gICAgMSwgMjA3LCAyMjksIDIzNywgMTk4LCAxLCAyNDQsIDEyMCwgMjM3LCAxOTgsIDEsIDI0NCwgMTA0LCAyMzcsIDE5OCwgMSwgCi0gICAgMjIxLCAyMjcsIDIzNywgMTk4LCAxLCAyMTAsIDIyLCAyMzcsIDE5OCwgMSwgMjA5LCAxMDgsIDIzNywgMTk4LCAxLCAyNDQsIAotICAgIDIxMiwgMjM3LCAxOTgsIDEsIDI0NCwgMSwgMjM3LCAxOTgsIDEsIDIwMSwgMjAxLCAyMzcsIDE5OCwgMSwgMTg1LCAyMzcsIAotICAgIDE5OCwgMSwgMjE4LCAyMDgsIDIzNywgMTk4LCAxLCAyNDksIDMyLCAyMzcsIDE5OCwgMSwgMjQ4LCA5OCwgMjM3LCAxOTgsIAotICAgIDEsIDE5MiwgMjM3LCAxOTgsIDEsIDE5OCwgMjM3LCAxOTgsIDEsIDIxNiwgMjIwLCAyMzcsIDE5OCwgMSwgMjI4LCAxMTMsIAotICAgIDIzNywgMTk4LCAxLCAyMjcsIDc3LCAyMzcsIDE5OCwgMSwgMjA2LCA4NiwgMjM3LCAxOTgsIDEsIDIxMywgOTAsIDIzNywgCi0gICAgMTk4LCAxLCAyMTUsIDM2LCAyMzcsIDE5OCwgMSwgMTUyLCAyMzcsIDE5OCwgMiwgMjIxLCA1MSwgMjM3LCAxOTgsIDIyLCAyLCAKLSAgICAyNTIsIDI1LCAyMzcsIDE5OCwgMjIsIDIsIDc1LCAyMzcsIDE5OCwgMjIsIDIsIDIzMSwgODMsIDIzNywgMTk4LCAyMiwgMiwgCi0gICAgNjgsIDIzNywgMTk4LCAyMiwgMiwgMjA2LCAxNzgsIDIzNywgMTk4LCAyMiwgMiwgMjQxLCAxNjEsIDIzNywgMTk4LCAyMiwgCi0gICAgMiwgMjUxLCA2NCwgMjM3LCAxOTgsIDIyLCAyLCAyMjAsIDE4LCAyMzcsIDE5OCwgMjIsIDIsIDI1MCwgMzQsIDIzNywgMTk4LCAKLSAgICAyLCAyMDUsIDIwNCwgMjM3LCAxOTgsIDIsIDIwNywgMjgsIDIzNywgMTk4LCAxLCAyMjksIDEyNSwgMjM3LCAxOTgsIDEsIAotICAgIDIzOCwgOTQsIDIzNywgMTk4LCAxLCAyMDIsIDExNiwgMjM3LCAxOTgsIDEsIDIxNSwgMTg1LCAyMzcsIDE5OCwgMSwgMjQwLCAKLSAgICAxMDgsIDIzNywgMTk4LCAxNywgMjAyLCA4NCwgMjM3LCAxOTgsIDE3LCAxMDUsIDIzNywgMTk4LCAxNywgMTA4LCAyMzcsIAotICAgIDE5OCwgMTcsIDE0NywgMjM3LCAxOTgsIDE3LCAxNDksIDIzNywgMTk4LCAxNywgMTcwLCAyMzcsIDE5OCwgMTcsIDE5NSwgCi0gICAgMjM3LCAxOTgsIDE3LCAyMTMsIDExMSwgMjM3LCAxOTgsIDE3LCAxOTksIDIzNywgMTk4LCAxNywgMjIyLCA2MywgMjM3LCAKLSAgICAxOTgsIDIwOCwgMjA4LCAyMzcsIDE5OCwgMjUxLCAxMjAsIDIzNywgMTk4LCAyMzAsIDIyMiwgMjM3LCAxOTgsIDIwNiwgCi0gICAgMjA2LCAyMzcsIDE5OCwgMjQxLCAxMzAsIDIyMCwgMjMsIDIzNywgMTk4LCAyLCAyMDMsIDg1LCAyMzcsIDIxMywgMiwgMjQ3LCAKLSAgICA1MiwgMjM3LCAyMTMsIDIsIDI1MCwgMTgwLCAyMzcsIDIxMywgMiwgMjA1LCAxOTksIDIzNywgMjEzLCAxLCA2MywgMjM3LCAKLSAgICAyMTMsIDEsIDI1MiwgMjUsIDIzNywgMjEzLCAxLCA3NSwgMjM3LCAyMTMsIDEsIDIzMSwgODMsIDIzNywgMjEzLCAxLCA2OCwgCi0gICAgMjM3LCAyMTMsIDEsIDIwNiwgMTc4LCAyMzcsIDIxMywgMSwgMTI1LCAxNDYsIDIzNywgMjEzLCAxLCAxMjUsIDE1OSwgMjM3LCAKLSAgICAyMTMsIDIyLCAyNDcsIDU1LCA3NCwgMjM3LCAyMTMsIDEsIDc0LCAyMzcsIDIxMywgMSwgMjUxLCA2NCwgMjM3LCAyMTMsIAotICAgIDIyLCAyNDcsIDU1LCA3OCwgMjM3LCAyMTMsIDEsIDc4LCAyMzcsIDIxMywgMSwgMjUwLCAzNCwgMjM3LCAyMTMsIDEsIDE3MywgCi0gICAgMjM3LCAyMTMsIDEsIDIyOSwgMTQ0LCAyMzcsIDIxMywgMSwgMjM5LCA4LCAyMzcsIDIxMywgMSwgMjM4LCAxMTksIDIzNywgCi0gICAgMjEzLCAxLCAyMjIsIDIwMywgMjM3LCAyMTMsIDEsIDI0NywgOTIsIDIzNywgMjEzLCAxLCAyNDYsIDE5OSwgMjM3LCAyMTMsIAotICAgIDEsIDIzMCwgMTgxLCAyMzcsIDIxMywgMSwgMjMwLCAxNDksIDIzNywgMjEzLCAxLCAyMjEsIDExLCAyMzcsIDIxMywgMSwgCi0gICAgMjA3LCAyNDEsIDIzNywgMjEzLCAxLCAyMDcsIDIyOSwgMjM3LCAyMTMsIDEsIDI0NCwgMTIwLCAyMzcsIDIxMywgMSwgMjQ0LCAKLSAgICAxMDQsIDIzNywgMjEzLCAxLCAyMjEsIDIyNywgMjM3LCAyMTMsIDEsIDIxMCwgMjIsIDIzNywgMjEzLCAxLCAyMDksIDEwOCwgCi0gICAgMjM3LCAyMTMsIDEsIDI0NCwgMjEyLCAyMzcsIDIxMywgMSwgMjQ0LCAxLCAyMzcsIDIxMywgMSwgMjAxLCAyMDEsIDIzNywgCi0gICAgMjEzLCAxLCAxODUsIDIzNywgMjEzLCAxLCAyMTgsIDIwOCwgMjM3LCAyMTMsIDEsIDI0OSwgMzIsIDIzNywgMjEzLCAxLCAKLSAgICAyNDgsIDk4LCAyMzcsIDIxMywgMSwgMTkyLCAyMzcsIDIxMywgMSwgMTk4LCAyMzcsIDIxMywgMSwgMjE2LCAyMjAsIDIzNywgCi0gICAgMjEzLCAxLCAyMjgsIDExMywgMjM3LCAyMTMsIDEsIDIyNywgNzcsIDIzNywgMjEzLCAxLCAyMDYsIDg2LCAyMzcsIDIxMywgCi0gICAgMSwgMjEzLCA5MCwgMjM3LCAyMTMsIDEsIDIxMSwgMTY0LCAyMzcsIDIxMywgMSwgMjE1LCAzNiwgMjM3LCAyMTMsIDEsIAotICAgIDE1MiwgMjM3LCAyMTMsIDIsIDIyMSwgNTEsIDIzNywgMjEzLCAyLCAyNTAsIDE3LCAyMzcsIDIxMywgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDIzNywgMjEzLCAyMiwgMiwgNzUsIDIzNywgMjEzLCAyMiwgMiwgMjMxLCA4MywgMjM3LCAyMTMsIDIyLCAyLCA2OCwgCi0gICAgMjM3LCAyMTMsIDIyLCAyLCAyMDYsIDE3OCwgMjM3LCAyMTMsIDIyLCAyLCAxMjUsIDE0NiwgMjM3LCAyMTMsIDIyLCAyLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAyMzcsIDIxMywgMjIsIDIsIDI0NywgNTUsIDc0LCAyMzcsIDIxMywgMjIsIDIsIDc0LCAyMzcsIAotICAgIDIxMywgMjIsIDIsIDI1MSwgNjQsIDIzNywgMjEzLCAyMiwgMiwgMjQ3LCA1NSwgNzgsIDIzNywgMjEzLCAyMiwgMiwgNzgsIAotICAgIDIzNywgMjEzLCAyMiwgMiwgMjUwLCAzNCwgMjM3LCAyMTMsIDIsIDIwNSwgMjA0LCAyMzcsIDIxMywgMjIwLCAzOSwgMjM3LCAKLSAgICAyMTMsIDEsIDEyNSwgMjE1LCAxODYsIDIzNywgMjEzLCAxLCAxMjUsIDIyNywgNzgsIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAKLSAgICAxNTksIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMzcsIDIxMywgMTcsIDIwMiwgODQsIDIzNywgMjEzLCAxNywgCi0gICAgMTA1LCAyMzcsIDIxMywgMTcsIDEwOCwgMjM3LCAyMTMsIDE3LCAxNDcsIDIzNywgMjEzLCAxNywgMTQ5LCAyMzcsIDIxMywgCi0gICAgMTcsIDE3MCwgMjM3LCAyMTMsIDE3LCAxOTUsIDIzNywgMjEzLCAxNywgMjEzLCAxMTEsIDIzNywgMjEzLCAxNywgMTk5LCAKLSAgICAyMzcsIDIxMywgMTcsIDIyMiwgNjMsIDIzNywgMjEzLCAyNTEsIDE0NiwgNTQsIDIzNywgMjEzLCAyMTUsIDEyMCwgNTQsIAotICAgIDIzNywgMjEzLCAxLCAyMDIsIDgwLCAxOTMsIDIsIDI0NywgNTIsIDE5MywgMiwgMjUwLCAxODAsIDE5MywgMiwgMjA1LCAKLSAgICAxOTksIDE5MywgMSwgNjMsIDE5MywgMSwgMjUyLCAyNSwgMTkzLCAxLCA3NSwgMTkzLCAxLCAyMzEsIDgzLCAxOTMsIDEsIAotICAgIDY4LCAxOTMsIDEsIDIwNiwgMTc4LCAxOTMsIDEsIDEyNSwgMTQ2LCAxOTMsIDEsIDEyNSwgMTU5LCAxOTMsIDEsIDc0LCAKLSAgICAxOTMsIDEsIDI1MSwgNjQsIDE5MywgMSwgNzgsIDE5MywgMSwgMjUwLCAzNCwgMTkzLCAxLCAxNzMsIDE5MywgMSwgMjI5LCAKLSAgICAxNDQsIDE5MywgMSwgMjM5LCA4LCAxOTMsIDEsIDIzOCwgMTE5LCAxOTMsIDEsIDIyMiwgMjAzLCAxOTMsIDEsIDI0NywgOTIsIAotICAgIDE5MywgMSwgMjQ2LCAxOTksIDE5MywgMSwgMjMwLCAxODEsIDE5MywgMSwgMjMwLCAxNDksIDE5MywgMSwgMjIxLCAxMSwgCi0gICAgMTkzLCAxLCAyMDcsIDI0MSwgMTkzLCAxLCAyMDcsIDIyOSwgMTkzLCAxLCAyNDQsIDEyMCwgMTkzLCAxLCAyNDQsIDEwNCwgCi0gICAgMTkzLCAxLCAyMjEsIDIyNywgMTkzLCAxLCAyMTAsIDIyLCAxOTMsIDEsIDIwOSwgMTA4LCAxOTMsIDEsIDI0NCwgMjEyLCAKLSAgICAxOTMsIDEsIDI0NCwgMSwgMTkzLCAxLCAyMDEsIDIwMSwgMTkzLCAxLCAxODUsIDE5MywgMSwgMjE4LCAyMDgsIDE5MywgMSwgCi0gICAgMjQ5LCAzMiwgMTkzLCAxLCAyNDgsIDk4LCAxOTMsIDEsIDE5MiwgMTkzLCAxLCAxOTgsIDE5MywgMSwgMjE2LCAyMjAsIAotICAgIDE5MywgMSwgMjI4LCAxMTMsIDE5MywgMSwgMjI3LCA3NywgMTkzLCAxLCAyMDYsIDg2LCAxOTMsIDEsIDIxMywgOTAsIDE5MywgCi0gICAgMSwgMjExLCAxNjQsIDE5MywgMSwgMjE1LCAzNiwgMTkzLCAxLCAxNTIsIDE5MywgMiwgMjIxLCA1MSwgMTkzLCAyLCAyNTAsIAotICAgIDE3LCAxOTMsIDIyLCAyLCAyNTIsIDI1LCAxOTMsIDIyLCAyLCA3NSwgMTkzLCAyMiwgMiwgMjMxLCA4MywgMTkzLCAyMiwgMiwgCi0gICAgNjgsIDE5MywgMjIsIDIsIDIwNiwgMTc4LCAxOTMsIDIyLCAyLCAxMjUsIDE0NiwgMTkzLCAyMiwgMiwgMTI1LCAyMTUsIAotICAgIDE4NiwgMTkzLCAyMiwgMiwgNzQsIDE5MywgMjIsIDIsIDI1MSwgNjQsIDE5MywgMjIsIDIsIDc4LCAxOTMsIDIyLCAyLCAKLSAgICAyNTAsIDM0LCAxOTMsIDIsIDIwNSwgMjA0LCAxOTMsIDI1MSwgNjUsIDIyNywgMTk2LCA4MiwgMTkzLCAyNTAsIDM1LCAyMjcsIAotICAgIDE5NiwgODIsIDE5MywgMSwgMjE1LCAxODUsIDE5MywgMSwgMjE2LCA2MSwgMTkzLCAxLCAyMDIsIDE2OCwgMTkzLCAxLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAxOTMsIDEsIDEyNSwgMjI3LCA3OCwgMTkzLCAyMiwgMiwgMTI1LCAxNTksIDE5MywgMjIsIDIsIAotICAgIDEyNSwgMjI3LCA3OCwgMTkzLCAxNywgMjAyLCA4NCwgMTkzLCAxNywgMTA1LCAxOTMsIDE3LCAxMDgsIDE5MywgMTcsIDE0NywgCi0gICAgMTkzLCAxNywgMTQ5LCAxOTMsIDE3LCAxNzAsIDE5MywgMTcsIDE5NSwgMTkzLCAxNywgMjEzLCAxMTEsIDE5MywgMTcsIAotICAgIDE5OSwgMTkzLCAxNywgMjIyLCA2MywgMTkzLCAyMzAsIDIwMiwgMTkzLCAxLCAyMDQsIDExMSwgMTkzLCAyMzksIDEzOCwgCi0gICAgMTE4LCAyMTcsIDU1LCAxOTMsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxOTMsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIAotICAgIDE5MywgMjM5LCAxMzgsIDExOCwgMjEyLCA4MCwgMTkzLCAyMzksIDEzOCwgMTE4LCAyNDEsIDEzOCwgMTkzLCAyMzksIDEzOCwgCi0gICAgMTI2LCAyMTIsIDc5LCA0NCwgMiwgMjUwLCAxODAsIDQ0LCAyLCAyMDUsIDE5OSwgNDQsIDEsIDYzLCA0NCwgMSwgMjUyLCAKLSAgICAyNSwgNDQsIDEsIDc1LCA0NCwgMSwgMjMxLCA4MywgNDQsIDEsIDY4LCA0NCwgMSwgMjA2LCAxNzgsIDQ0LCAxLCA3NCwgNDQsIAotICAgIDEsIDI0MSwgMTYxLCA0NCwgMSwgMjUxLCA2NCwgNDQsIDEsIDc4LCA0NCwgMSwgMjIwLCAxOCwgNDQsIDEsIDI1MCwgMzQsIAotICAgIDQ0LCAxLCAxNzMsIDQ0LCAxLCAyMjIsIDIwMywgNDQsIDEsIDI0NywgOTIsIDQ0LCAxLCAyMzAsIDE4MSwgNDQsIDEsIDIyMSwgCi0gICAgMTEsIDQ0LCAxLCAyMDcsIDI0MSwgNDQsIDEsIDIyMSwgMjI3LCA0NCwgMSwgMjEwLCAyMiwgNDQsIDEsIDIwMSwgMjAxLCAKLSAgICA0NCwgMSwgMjIxLCAyMDksIDQ0LCAxLCAxODUsIDQ0LCAxLCAxOTIsIDQ0LCAxLCAxOTgsIDQ0LCAxLCAyMTYsIDIyMCwgNDQsIAotICAgIDEsIDIxNSwgMTg1LCA0NCwgMSwgMjI4LCAxMTMsIDQ0LCAxLCAyMjcsIDc3LCA0NCwgMSwgMjI3LCA2OCwgNDQsIDEsIDIwNiwgCi0gICAgODYsIDQ0LCAxLCAyMTMsIDkwLCA0NCwgMSwgMjExLCAxNjQsIDQ0LCAxLCAyMTUsIDM2LCA0NCwgMSwgMTUyLCA0NCwgMjIsIAotICAgIDIsIDI1MiwgMjUsIDQ0LCAyMiwgMiwgNzUsIDQ0LCAyMiwgMiwgMjMxLCA4MywgNDQsIDIyLCAyLCA2OCwgNDQsIDIyLCAyLCAKLSAgICAyMDYsIDE3OCwgNDQsIDIyLCAyLCA3NCwgNDQsIDIyLCAyLCAyNDEsIDE2MSwgNDQsIDIyLCAyLCAyNTEsIDY0LCA0NCwgMjIsIAotICAgIDIsIDc4LCA0NCwgMjIsIDIsIDIyMCwgMTgsIDQ0LCAyMiwgMiwgMjUwLCAzNCwgNDQsIDIsIDIwNSwgMjA0LCA0NCwgMjIwLCAKLSAgICAzOSwgNDQsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgNDQsIDE3LCAyMDIsIDg0LCA0NCwgMTcsIDEwNSwgNDQsIDE3LCAxMDgsIAotICAgIDQ0LCAxNywgMTQ3LCA0NCwgMTcsIDE0OSwgNDQsIDE3LCAxNzAsIDQ0LCAxNywgMTk1LCA0NCwgMTcsIDIxMywgMTExLCA0NCwgCi0gICAgMTcsIDE5OSwgNDQsIDE3LCAyMjIsIDYzLCA0NCwgNDIsIDIwOSwgMTUyLCA0NCwgNDIsIDExOCwgMjM2LCAxMSwgNDQsIDQyLCAKLSAgICAxMTgsIDIwOSwgMzYsIDQ0LCAyNDQsIDEzMywgNTQsIDQ0LCAyMjQsIDM4LCA1NCwgNDQsIDIwMywgNTAsIDU0LCA0NCwgCi0gICAgMjQ0LCA3MiwgNTQsIDQ0LCAyNDUsIDE0MSwgNTQsIDQ0LCAyNTAsIDgyLCA4NywgNTQsIDQ0LCAyMTUsIDEyMCwgNTQsIDQ0LCAKLSAgICA0MiwgNTQsIDE3NSwgMiwgMzksIDI0NywgNTMsIDU1LCAxNzUsIDIsIDI0NywgNTIsIDE3NSwgMiwgMjUwLCAxODAsIDE3NSwgCi0gICAgMiwgMjA1LCAxOTksIDE3NSwgMSwgNjMsIDE3NSwgMSwgMjUyLCAyNSwgMTc1LCAxLCA3NSwgMTc1LCAxLCAyMzEsIDgzLCAKLSAgICAxNzUsIDEsIDY4LCAxNzUsIDEsIDIwNiwgMTc4LCAxNzUsIDEsIDEyNSwgMTQ2LCAxNzUsIDEsIDEyNSwgMTU5LCAxNzUsIDEsIAotICAgIDc0LCAxNzUsIDEsIDI0MSwgMTYxLCAxNzUsIDEsIDI1MSwgNjQsIDE3NSwgMSwgNzgsIDE3NSwgMSwgMjIwLCAxOCwgMTc1LCAKLSAgICAxLCAyNTAsIDM0LCAxNzUsIDEsIDE3MywgMTc1LCAxLCAyMjksIDE0NCwgMTc1LCAxLCAyMzksIDgsIDE3NSwgMSwgMjM4LCAKLSAgICAxMTksIDE3NSwgMSwgMjIyLCAyMDMsIDE3NSwgMSwgMjQ3LCA5MiwgMTc1LCAxLCAyNDYsIDE5OSwgMTc1LCAxLCAyMzAsIAotICAgIDE4MSwgMTc1LCAxLCAyMzAsIDE0OSwgMTc1LCAxLCAyMjEsIDExLCAxNzUsIDEsIDIwNywgMjQxLCAxNzUsIDEsIDIwNywgCi0gICAgMjI5LCAxNzUsIDEsIDI0NCwgMTIwLCAxNzUsIDEsIDI0NCwgMTA0LCAxNzUsIDEsIDIyMSwgMjI3LCAxNzUsIDEsIDIxMCwgCi0gICAgMjIsIDE3NSwgMSwgMjA5LCAxMDgsIDE3NSwgMSwgMjQ0LCAyMTIsIDE3NSwgMSwgMjQ0LCAxLCAxNzUsIDEsIDIwMSwgMjAxLCAKLSAgICAxNzUsIDEsIDE4NSwgMTc1LCAxLCAyMTgsIDIwOCwgMTc1LCAxLCAyNDksIDMyLCAxNzUsIDEsIDI0OCwgOTgsIDE3NSwgMSwgCi0gICAgMTkyLCAxNzUsIDEsIDE5OCwgMTc1LCAxLCAyMTYsIDIyMCwgMTc1LCAxLCAyMTUsIDE4NSwgMTc1LCAxLCAyMjgsIDExMywgCi0gICAgMTc1LCAxLCAyMjcsIDc3LCAxNzUsIDEsIDIyNywgNjgsIDE3NSwgMSwgMjA2LCA4NiwgMTc1LCAxLCAyMTMsIDkwLCAxNzUsIAotICAgIDEsIDIxMSwgMTY0LCAxNzUsIDEsIDIxNSwgMzYsIDE3NSwgMSwgMTUyLCAxNzUsIDIsIDI1MCwgMTcsIDE3NSwgMjIsIDIsIAotICAgIDI1MiwgMjUsIDE3NSwgMjIsIDIsIDc1LCAxNzUsIDIyLCAyLCAyMzEsIDgzLCAxNzUsIDIyLCAyLCA2OCwgMTc1LCAyMiwgMiwgCi0gICAgMjA2LCAxNzgsIDE3NSwgMjIsIDIsIDEyNSwgMTQ2LCAxNzUsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNzUsIDIyLCAyLCAKLSAgICA3NCwgMTc1LCAyMiwgMiwgMjQxLCAxNjEsIDE3NSwgMjIsIDIsIDI1MSwgNjQsIDE3NSwgMjIsIDIsIDc4LCAxNzUsIDIyLCAKLSAgICAyLCAyMjAsIDE4LCAxNzUsIDIyLCAyLCAyNTAsIDM0LCAxNzUsIDIsIDIwNSwgMjA0LCAxNzUsIDIyNywgMTk2LCA4MiwgCi0gICAgMTc1LCAyNTEsIDY1LCAyMjcsIDE5NiwgODIsIDE3NSwgMSwgMjA4LCAyMCwgMTc1LCAxLCAyNDEsIDI1NSwgMTc1LCAxLCAKLSAgICAyMTUsIDE2NiwgMTc1LCAxLCAxMjUsIDIxNSwgMTg2LCAxNzUsIDEsIDEyNSwgMjI3LCA3OCwgMTc1LCAyMiwgMiwgMTI1LCAKLSAgICAxNTksIDE3NSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTc1LCAxNywgMjAyLCA4NCwgMTc1LCAxNywgMTA1LCAxNzUsIDE3LCAKLSAgICAxMDgsIDE3NSwgMTcsIDE0NywgMTc1LCAxNywgMTQ5LCAxNzUsIDE3LCAxNzAsIDE3NSwgMTcsIDE5NSwgMTc1LCAxNywgCi0gICAgMjEzLCAxMTEsIDE3NSwgMTcsIDE5OSwgMTc1LCAxNywgMjIyLCA2MywgMTc1LCAyMzksIDEzOCwgMTcsIDIwMiwgODUsIDM1LCAKLSAgICAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTE4LCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgCi0gICAgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDEyMCwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAKLSAgICAxMzgsIDE3LCAxMjYsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTE4LCAzNSwgCi0gICAgMjQwLCAyMjUsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjAsIDM1LCAyNDAsIDIyNSwgMjE4LCAKLSAgICAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDEyNiwgMzUsIDI0MCwgMjI1LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIAotICAgIDIsIDIwNywgMTY0LCAyMDAsIDIsIDI0NywgNTIsIDIwMCwgMiwgMjUwLCAxODAsIDIwMCwgMiwgMjA1LCAxOTksIDIwMCwgMSwgCi0gICAgNjMsIDIwMCwgMSwgMjUyLCAyNSwgMjAwLCAxLCA3NSwgMjAwLCAxLCAyMzEsIDgzLCAyMDAsIDEsIDY4LCAyMDAsIDEsIAotICAgIDIwNiwgMTc4LCAyMDAsIDEsIDEyNSwgMTQ2LCAyMDAsIDEsIDEyNSwgMTU5LCAyMDAsIDEsIDc0LCAyMDAsIDEsIDI0MSwgCi0gICAgMTYxLCAyMDAsIDEsIDI1MSwgNjQsIDIwMCwgMSwgNzgsIDIwMCwgMSwgMjIwLCAxOCwgMjAwLCAxLCAyNTAsIDM0LCAyMDAsIAotICAgIDEsIDE3MywgMjAwLCAxLCAyMjksIDE0NCwgMjAwLCAxLCAyMzksIDgsIDIwMCwgMSwgMjM4LCAxMTksIDIwMCwgMSwgMjIyLCAKLSAgICAyMDMsIDIwMCwgMSwgMjQ3LCA5MiwgMjAwLCAxLCAyNDYsIDE5OSwgMjAwLCAxLCAyMzAsIDE4MSwgMjAwLCAxLCAyMzAsIAotICAgIDE0OSwgMjAwLCAxLCAyMjEsIDExLCAyMDAsIDEsIDIwNywgMjQxLCAyMDAsIDEsIDIwNywgMjI5LCAyMDAsIDEsIDI0NCwgCi0gICAgMTIwLCAyMDAsIDEsIDI0NCwgMTA0LCAyMDAsIDEsIDIyMSwgMjI3LCAyMDAsIDEsIDIxMCwgMjIsIDIwMCwgMSwgMjA5LCAKLSAgICAxMDgsIDIwMCwgMSwgMjQ0LCAyMTIsIDIwMCwgMSwgMjQ0LCAxLCAyMDAsIDEsIDIwMSwgMjAxLCAyMDAsIDEsIDE4NSwgCi0gICAgMjAwLCAxLCAyMTgsIDIwOCwgMjAwLCAxLCAyNDksIDMyLCAyMDAsIDEsIDI0OCwgOTgsIDIwMCwgMSwgMTkyLCAyMDAsIDEsIAotICAgIDE5OCwgMjAwLCAxLCAyMTYsIDIyMCwgMjAwLCAxLCAyMTUsIDE4NSwgMjAwLCAxLCAyMjgsIDExMywgMjAwLCAxLCAyMjcsIAotICAgIDc3LCAyMDAsIDEsIDIwNiwgODYsIDIwMCwgMSwgMjEzLCA5MCwgMjAwLCAxLCAyMTEsIDE2NCwgMjAwLCAxLCAyMTUsIDM2LCAKLSAgICAyMDAsIDEsIDE1MiwgMjAwLCAyLCAyMjEsIDUxLCAyMDAsIDIsIDI1MCwgMTcsIDIwMCwgMjIsIDIsIDI1MiwgMjUsIDIwMCwgCi0gICAgMjIsIDIsIDc1LCAyMDAsIDIyLCAyLCAyMzEsIDgzLCAyMDAsIDIyLCAyLCA2OCwgMjAwLCAyMiwgMiwgMjA2LCAxNzgsIAotICAgIDIwMCwgMjIsIDIsIDEyNSwgMTQ2LCAyMDAsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMDAsIDIyLCAyLCA3NCwgMjAwLCAyMiwgCi0gICAgMiwgMjQxLCAxNjEsIDIwMCwgMjIsIDIsIDI1MSwgNjQsIDIwMCwgMjIsIDIsIDc4LCAyMDAsIDIyLCAyLCAyMjAsIDE4LCAKLSAgICAyMDAsIDIyLCAyLCAyNTAsIDM0LCAyMDAsIDIsIDIwNSwgMjA0LCAyMDAsIDIyNywgMTk2LCA4MiwgMjAwLCAyNTEsIDY1LCAKLSAgICAyMjcsIDE5NiwgODIsIDIwMCwgMSwgMjQwLCAxMDgsIDIwMCwgMSwgMTI1LCAyMTUsIDE4NiwgMjAwLCAxLCAxMjUsIDIyNywgCi0gICAgNzgsIDIwMCwgMjIsIDIsIDEyNSwgMTU5LCAyMDAsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIwMCwgMTcsIDIwMiwgODQsIAotICAgIDIwMCwgMTcsIDEwNSwgMjAwLCAxNywgMTA4LCAyMDAsIDE3LCAxNDcsIDIwMCwgMTcsIDE0OSwgMjAwLCAxNywgMTcwLCAKLSAgICAyMDAsIDE3LCAxOTUsIDIwMCwgMTcsIDIxMywgMTExLCAyMDAsIDE3LCAxOTksIDIwMCwgMTcsIDIyMiwgNjMsIDIwMCwgMiwgCi0gICAgMjMwLCAxMzUsIDIwMCwgMiwgMjA2LCAyMjIsIDE2NCwgMiwgMjQ3LCA1MiwgMTY0LCAyLCAyNTAsIDE4MCwgMTY0LCAyLCAKLSAgICAyMDUsIDE5OSwgMTY0LCAxLCA2MywgMTY0LCAxLCAyNTIsIDI1LCAxNjQsIDEsIDc1LCAxNjQsIDEsIDIzMSwgODMsIDE2NCwgCi0gICAgMSwgNjgsIDE2NCwgMSwgMjA2LCAxNzgsIDE2NCwgMSwgMTI1LCAxNDYsIDE2NCwgMSwgMTI1LCAxNTksIDE2NCwgMSwgNzQsIAotICAgIDE2NCwgMSwgMjQxLCAxNjEsIDE2NCwgMSwgMjUxLCA2NCwgMTY0LCAxLCA3OCwgMTY0LCAxLCAyMjAsIDE4LCAxNjQsIDEsIAotICAgIDI1MCwgMzQsIDE2NCwgMSwgMTczLCAxNjQsIDEsIDIyOSwgMTQ0LCAxNjQsIDEsIDIzOSwgOCwgMTY0LCAxLCAyMzgsIDExOSwgCi0gICAgMTY0LCAxLCAyMjIsIDIwMywgMTY0LCAxLCAyNDcsIDkyLCAxNjQsIDEsIDI0NiwgMTk5LCAxNjQsIDEsIDIzMCwgMTgxLCAKLSAgICAxNjQsIDEsIDIzMCwgMTQ5LCAxNjQsIDEsIDIyMSwgMTEsIDE2NCwgMSwgMjA3LCAyNDEsIDE2NCwgMSwgMjA3LCAyMjksIAotICAgIDE2NCwgMSwgMjQ0LCAxMjAsIDE2NCwgMSwgMjQ0LCAxMDQsIDE2NCwgMSwgMjIxLCAyMjcsIDE2NCwgMSwgMjEwLCAyMiwgCi0gICAgMTY0LCAxLCAyMDksIDEwOCwgMTY0LCAxLCAyNDQsIDIxMiwgMTY0LCAxLCAyNDQsIDEsIDE2NCwgMSwgMjAxLCAyMDEsIAotICAgIDE2NCwgMSwgMjIxLCAyMDksIDE2NCwgMSwgMTg1LCAxNjQsIDEsIDIxOCwgMjA4LCAxNjQsIDEsIDI0OSwgMzIsIDE2NCwgMSwgCi0gICAgMjQ4LCA5OCwgMTY0LCAxLCAxOTIsIDE2NCwgMSwgMTk4LCAxNjQsIDEsIDIxNiwgMjIwLCAxNjQsIDEsIDIxNSwgMTg1LCAKLSAgICAxNjQsIDEsIDIyOCwgMTEzLCAxNjQsIDEsIDIyNywgNzcsIDE2NCwgMSwgMjI3LCA2OCwgMTY0LCAxLCAyMDYsIDg2LCAxNjQsIAotICAgIDEsIDIxMywgOTAsIDE2NCwgMSwgMjExLCAxNjQsIDE2NCwgMSwgMjE1LCAzNiwgMTY0LCAxLCAxNTIsIDE2NCwgMSwgMjA3LCAKLSAgICAyMTAsIDE2NCwgMiwgMjUwLCAxNywgMTY0LCAyMiwgMiwgMjUyLCAyNSwgMTY0LCAyMiwgMiwgNzUsIDE2NCwgMjIsIDIsIAotICAgIDIzMSwgODMsIDE2NCwgMjIsIDIsIDY4LCAxNjQsIDIyLCAyLCAyMDYsIDE3OCwgMTY0LCAyMiwgMiwgMTI1LCAxNDYsIDE2NCwgCi0gICAgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE2NCwgMjIsIDIsIDc0LCAxNjQsIDIyLCAyLCAyNDEsIDE2MSwgMTY0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMTY0LCAyMiwgMiwgNzgsIDE2NCwgMjIsIDIsIDIyMCwgMTgsIDE2NCwgMjIsIDIsIDI1MCwgMzQsIDE2NCwgCi0gICAgMiwgMjA1LCAyMDQsIDE2NCwgMSwgNzAsIDIxNiwgOTcsIDE2NCwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAxNjQsIDEsIAotICAgIDI1MCwgMTI2LCAyMzEsIDgzLCAxNjQsIDEsIDEyNSwgMjE1LCAxODYsIDE2NCwgMSwgMTI1LCAyMjcsIDc4LCAxNjQsIDIyLCAKLSAgICAyLCAxMjUsIDE1OSwgMTY0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNjQsIDE3LCAyMDIsIDg0LCAxNjQsIDE3LCAxMDUsIAotICAgIDE2NCwgMTcsIDEwOCwgMTY0LCAxNywgMTQ3LCAxNjQsIDE3LCAxNDksIDE2NCwgMTcsIDE3MCwgMTY0LCAxNywgMTk1LCAKLSAgICAxNjQsIDE3LCAyMTMsIDExMSwgMTY0LCAxNywgMTk5LCAxNjQsIDE3LCAyMjIsIDYzLCAxNjQsIDQyLCAyMDksIDE1MiwgCi0gICAgMTY0LCA0MiwgMTE4LCAyMzYsIDExLCAxNjQsIDQyLCAxMTgsIDIwOSwgMzYsIDE2NCwgMjM5LCAxMzgsIDExOCwgMjE3LCAKLSAgICA1NSwgMTY0LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTY0LCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAxNjQsIDI0NCwgCi0gICAgMTM4LCA4MiwgMTY0LCAxLCAyNDYsIDEzMSwgMjIxLCAyMjgsIDE2NCwgMSwgMjQ2LCAxMzEsIDIyMywgMTYzLCAxNjQsIDEsIAotICAgIDI0NiwgMTMxLCAyMTUsIDE4NiwgMTY0LCAxLCAyNDYsIDEzMSwgMTU5LCAxNjQsIDEsIDI0NiwgMTMxLCAyMjcsIDc4LCAKLSAgICAxNjQsIDEsIDI0NiwgMTMxLCAyMzAsIDU0LCAxNDAsIDIsIDI1MCwgMTc5LCAxNDAsIDIsIDIwNSwgMTk4LCAxNDAsIDEsIAotICAgIDI1MCwgNiwgMTQwLCAxLCAyNTEsIDIzNSwgMTQwLCAxLCAyNTEsIDg5LCAxNDAsIDEsIDI1MSwgMTA0LCAxNDAsIDEsIDIzMCwgCi0gICAgMTkxLCAxNDAsIDEsIDIzMSwgODIsIDE0MCwgMSwgMjA2LCAxNjksIDE0MCwgMSwgMjA2LCAxNzIsIDE0MCwgMSwgMjMwLCAKLSAgICAyMTcsIDE0MCwgMSwgMjMwLCAyMTgsIDE0MCwgMSwgMjMxLCA2OCwgMTQwLCAxLCAyMzEsIDcwLCAxNDAsIDEsIDI0MCwgCi0gICAgMTk0LCAxNDAsIDEsIDI0MSwgMTU2LCAxNDAsIDEsIDI1MSwgNDksIDE0MCwgMSwgMjE5LCAxODcsIDE0MCwgMSwgMjIwLCAKLSAgICAxMSwgMTQwLCAxLCAyNTAsIDIwLCAxNDAsIDEsIDI1MSwgNSwgMjI5LCAyMDYsIDE0MCwgMSwgMjI1LCAxNDcsIDIyOSwgCi0gICAgMjA2LCAxNDAsIDEsIDI1MSwgNSwgMjM4LCAyMTAsIDE0MCwgMSwgMjI1LCAxNDcsIDIzOCwgMjEwLCAxNDAsIDEsIDIyOSwgCi0gICAgMjU1LCAyMjMsIDEwMywgMTQwLCAxLCAyMTQsIDIzNSwgMjM4LCAyMTAsIDE0MCwgMSwgMjUxLCA1LCAyNDcsIDgsIDE0MCwgCi0gICAgMSwgMjI1LCAxNDcsIDI0NywgOCwgMTQwLCAxLCAyNTEsIDUsIDIzMCwgMTY0LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMzAsIAotICAgIDE2NCwgMTQwLCAxLCAyMTAsIDE1LCAyMjMsIDEwMywgMTQwLCAxLCAyMTAsIDE1LCAyMTQsIDIzNCwgMjIzLCAxMDQsIDE0MCwgCi0gICAgMSwgMjE0LCAyMzUsIDIzMCwgMTY0LCAxNDAsIDEsIDI1MSwgNSwgMjA3LCAyMzcsIDE0MCwgMSwgMjI1LCAxNDcsIDIwNywgCi0gICAgMjM3LCAxNDAsIDEsIDI1MSwgNSwgMjQ0LCAxMTEsIDE0MCwgMSwgMjI1LCAxNDcsIDI0NCwgMTExLCAxNDAsIDEsIDIyMywgCi0gICAgMTkxLCAyMjMsIDU4LCAxNDAsIDEsIDIxNCwgMjM1LCAyNDQsIDExMSwgMTQwLCAxLCAyNTEsIDUsIDIwOSwgMTk1LCAxNDAsIAotICAgIDEsIDIyNSwgMTQ3LCAyMDksIDE5NSwgMTQwLCAxLCAyNTEsIDUsIDI0NCwgMTMxLCAxNDAsIDEsIDIyNSwgMTQ3LCAyNDQsIAotICAgIDEzMSwgMTQwLCAxLCAyNDQsIDE2MiwgMjIzLCA1OCwgMTQwLCAxLCAyMTQsIDIzNSwgMjQ0LCAxMzEsIDE0MCwgMSwgMjUxLCAKLSAgICA1LCAyMTksIDQyLCAxNDAsIDEsIDIyNSwgMTQ3LCAyMTksIDQyLCAxNDAsIDEsIDI1MSwgNSwgMjQ4LCAyMDAsIDE0MCwgMSwgCi0gICAgMjI1LCAxNDcsIDI0OCwgMjAwLCAxNDAsIDEsIDIyNSwgNjIsIDE0MCwgMSwgMjUwLCAyNDEsIDI0OCwgMjAwLCAxNDAsIDEsIAotICAgIDIwMywgNTcsIDE0MCwgMSwgMjE2LCAxNjQsIDE0MCwgMSwgMjQ0LCAxNjIsIDIyNywgMjQzLCAxNDAsIDEsIDIwNiwgNTcsIAotICAgIDE0MCwgMSwgMjEwLCAxNSwgMjE0LCAyMDcsIDE0MCwgMSwgMjIzLCAxOTEsIDIxNCwgMjA3LCAxNDAsIDEsIDI0NCwgMTYyLCAKLSAgICAyMTQsIDIwNywgMTQwLCAxLCAyMzcsIDcxLCAxNDAsIDEsIDIyMywgMTkxLCAyMjcsIDI0MywgMTQwLCAxLCAyNDAsIDYyLCAKLSAgICAxNDAsIDIsIDI1MSwgMzgsIDE0MCwgMjIsIDIsIDI1MSwgOTksIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyNTEsIDEwNiwgCi0gICAgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDI1MSwgMTA2LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjMwLCAyMTQsIDE0MCwgMjIsIAotICAgIDIsIDI0MywgMjAwLCAyMzAsIDIxNCwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDIxOSwgMTY3LCAxNDAsIDIyLCAyLCAyNDMsIAotICAgIDIwMCwgMjE5LCAxNjcsIDE0MCwgMjIsIDIsIDIzOCwgMjUzLCAxNDAsIDIyLCAyLCAyMjksIDExLCAxNDAsIDIyLCAyLCAKLSAgICAyNDMsIDIwMCwgMjI5LCAxMSwgMTQwLCAyMiwgMiwgMjI5LCAxMywgMjQ0LCA1MCwgMTQwLCAyMiwgMiwgMjI5LCAxMiwgCi0gICAgMjM3LCAxNTgsIDI1MSwgOTksIDE0MCwgMjIsIDIsIDIyOSwgMTIsIDIzNywgMTU4LCAyNDMsIDIwMCwgMjUxLCA5OSwgMTQwLCAKLSAgICAyMiwgMiwgMjI5LCAxMiwgMjM3LCAxNTgsIDIzOCwgMjA5LCAxNDAsIDIyLCAyLCAyMzgsIDIwOSwgMTQwLCAyMjcsIDg5LCAKLSAgICAxNywgMjAyLCA4NCwgMTQwLCAyMjcsIDg5LCAxNywgMTA1LCAxNDAsIDIyNywgODksIDE3LCAxMDgsIDE0MCwgMjI3LCA4OSwgCi0gICAgMTcsIDE0NywgMTQwLCAyMjcsIDg5LCAxNywgMTQ5LCAxNDAsIDIyNywgODksIDE3LCAxNzAsIDE0MCwgMjI3LCA4OSwgMTcsIAotICAgIDE5NSwgMTQwLCAyMjcsIDg5LCAxNywgMjEzLCAxMTEsIDE0MCwgMjI3LCA4OSwgMTcsIDE5OSwgMTQwLCAyMjcsIDg5LCAxNywgCi0gICAgMjIyLCA2MywgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDIzOCwgMjUzLCAxNDAsIDIyLCAyLCAyNDMsIDIwMCwgMjM4LCAyMDksIAotICAgIDE0MCwgMjE3LCAxNzksIDIyOCwgMTk0LCAyMDksIDEwMywgMTY3LCAyMjksIDI3LCAyMzAsIDE4LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjksIDExNiwgMjI5LCAxMzksIDIwOSwgMTAzLCAxNjcsIDIyOSwgMTE2LCAyMjksIDEwOCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI5LCAxMTYsIDIyOSwgMTAzLCAyMDksIDEwMywgMTY3LCAyMjksIDExNiwgMjI5LCAxMTIsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyOSwgMTE2LCAyMTYsIDE4NSwgMjA5LCAxMDMsIDE2NywgMjIyLCAxMjksIDIyMiwgMTE2LCAyMDksIDEwMywgMTY3LCAKLSAgICAyNDYsIDExNywgMjQ2LCAxODgsIDIwOSwgMTAzLCAxNjcsIDI0NiwgMTE3LCAyNDYsIDEyNywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjQ2LCAxMTcsIDI0NiwgMTg3LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTIsIDEzLCAyMDksIDEwMywgMTY3LCAyNDYsIAotICAgIDExNywgMjQ2LCAxMTMsIDIwOSwgMTAzLCAxNjcsIDIwMiwgMjQ4LCAyMDIsIDI1NSwgMjA5LCAxMDMsIDE2NywgMjQzLCAKLSAgICAxMTQsIDI0NiwgMTk2LCAyMDksIDEwMywgMTY3LCAyMDgsIDE3MywgMjE5LCA1MywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgCi0gICAgMjA5LCA5NywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjIzLCA4MCwgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjE4LCAKLSAgICAxNzAsIDIwOSwgMTAzLCAxNjcsIDIyMSwgMTkyLCAyMjIsIDIzMCwgMjA5LCAxMDMsIDE2NywgMjQzLCAxMTQsIDI0NCwgNTEsIAotICAgIDIwOSwgMTAzLCAxNjcsIDIwOCwgMTczLCAyMDksIDIyMywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjA5LCAxNiwgMjA5LCAKLSAgICAxMDMsIDE2NywgMjA5LCA0OCwgMjA5LCAxMDQsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgNDMsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDIyMSwgMTkyLCAyMjEsIDg0LCAyMDksIDEwMywgMTY3LCAyNDgsIDI0LCAyNDksIDAsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxOCwgNzAsIDIxOCwgOTgsIDIwOSwgMTAzLCAxNjcsIDIxOCwgMTgxLCAyMTgsIDE3MiwgMjA5LCAxMDMsIDE2NywgMjM5LCAKLSAgICAxODcsIDI0MCwgMTA4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE4LCAyMDEsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCi0gICAgMTg3LCAyNDAsIDgxLCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE0LCAyNDcsIDIwOSwgMTAzLCAxNjcsIDIyNCwgODMsIAotICAgIDE5MiwgMjA5LCAxMDMsIDE2NywgMjAyLCAyNDgsIDIwMywgODYsIDIwOSwgMTAzLCAxNjcsIDIxNSwgMjI4LCAyMTUsIDE0NCwgCi0gICAgMjA5LCAxMDMsIDE2NywgMjE1LCAxNDUsIDIwOSwgMTAzLCAxNjcsIDIyNywgNTAsIDIyNywgMTA3LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjYsIDIzOSwgMjA5LCAxMDMsIDE2NywgMjA0LCAxLCAyMDQsIDEwNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjE1LCAKLSAgICA2LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTUsIDExNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjExLCA5LCAyMDksIAotICAgIDEwMywgMTY3LCAyMzYsIDEzNywgMjM2LCAyMzMsIDIwOSwgMTAzLCAxNjcsIDIyNywgNTAsIDI0NiwgOTcsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDE1OCwgMjUwLCAyMjMsIDIwOSwgMTAzLCAxNjcsIDIzNiwgMTM3LCAyMjEsIDE4NywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE5LCAxNDQsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCA2MywgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDIzNywgMTI1LCAKLSAgICAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjUyLCAyNSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MCwgMjQ3LCAyMDksIAotICAgIDEwMywgMTY3LCAyMTQsIDIyOSwgNzUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMzEsIDgzLCAyMDksIDEwMywgMTY3LCAKLSAgICAyMTQsIDIyOSwgMjA3LCAyNCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDIwNywgMjIsIDIwOSwgMTAzLCAxNjcsIDIxNCwgCi0gICAgMjI5LCA2OCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDIwNiwgMTc4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MywgMjA5LCAKLSAgICAxMDMsIDI0NSwgOTIsIDE2LCAyNDksIDEsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCA3NCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE0LCAyMjksIDI1MSwgMTA5LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNzgsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAKLSAgICAyNTEsIDY1LCAyMjUsIDEzNSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MSwgNjUsIDIyNSwgMTM2LCAyMDksIDEwMywgCi0gICAgMTY3LCAyMjgsIDMyLCAyMDksIDEwMywgMTY3LCAyMjUsIDEzMiwgMjA5LCAxMDMsIDE2NywgMjI1LCAxMzMsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDIyNSwgMTQxLCAyNDEsIDEyOSwgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDIwOSwgNDcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyNSwgMTQxLCAyMDgsIDg4LCAyMDksIDEwMywgMTY3LCAyMjUsIDE0MSwgMjQ2LCAxNzUsIDIwOSwgMTAzLCAxNjcsIDIwOSwgCi0gICAgOTUsIDIwOSwgMTAzLCAxNjcsIDIyMiwgNzIsIDIwOSwgMTAzLCAxNjcsIDIwMywgODAsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCi0gICAgMTc3LCAyMDksIDEwMywgMTcsIDIwMiwgODQsIDIwOSwgMTAzLCAxNywgMTA1LCAyMDksIDEwMywgMTcsIDEwOCwgMjA5LCAKLSAgICAxMDMsIDE3LCAxNDcsIDIwOSwgMTAzLCAxNywgMTQ5LCAyMDksIDEwMywgMTcsIDE3MCwgMjA5LCAxMDMsIDE3LCAxOTUsIAotICAgIDIwOSwgMTAzLCAxNywgMjEzLCAxMTEsIDIwOSwgMTAzLCAxNywgMTk5LCAyMDksIDEwMywgMTcsIDIyMiwgNjMsIDIwOSwgCi0gICAgMTAzLCAxNjcsIDI1MCwgMjE5LCAyMDksIDEwMywgMTY3LCAyMjksIDExMywgMjI4LCAxMiwgMSwgMjI5LCAyNiwgMjI4LCAKLSAgICAxMiwgMSwgMjI5LCAxMTYsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMjksIDExNiwgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIAotICAgIDIyMiwgMTI4LCAyMjgsIDEyLCAxLCAyNDUsIDI1NCwgMjI4LCAxMiwgMSwgMjEyLCAxNCwgMjA5LCAyMzIsIDIyOCwgMTIsIAotICAgIDEsIDIyMCwgMjMzLCAyMjgsIDEyLCAxLCAyNDMsIDExMywgMjI4LCAxMiwgMSwgMTM1LCAyMjgsIDEyLCAxLCAyMDksIDQ4LCAKLSAgICAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjA5LCA0OCwgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIyMSwgMTkxLCAyMjgsIDEyLCAKLSAgICAxLCAyNDgsIDIzLCAyMjgsIDEyLCAxLCAyMTgsIDY5LCAyMjgsIDEyLCAxLCAyMTgsIDE4MSwgMjEwLCAyMTEsIDIyOCwgMTIsIAotICAgIDEsIDIzOSwgMTg3LCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjE4LCAxODEsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMzksIAotICAgIDE4NywgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIyNCwgODIsIDIyOCwgMTIsIDEsIDIwMiwgMjQ3LCAyMjgsIDEyLCAxLCAKLSAgICAyMjcsIDUwLCAyMjcsIDEwNywgMjI4LCAxMiwgMSwgMjI3LCA1MCwgMjI3LCAxMiwgMjI4LCAxMiwgMSwgMjA0LCAwLCAyMjgsIAotICAgIDEyLCAxLCAyMTIsIDE0LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjM2LCAxMzcsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCA3OCwgCi0gICAgMjI4LCAxMiwgMSwgMjM2LCAxMzcsIDIwOSwgMjMyLCAyMjgsIDEyLCAyNDEsIDEwOCwgMjI4LCAxMiwgMjIsIDIsIDYzLCAKLSAgICAyMjgsIDEyLCAyMiwgMiwgMjI1LCAxNDEsIDIzMCwgNCwgMjI4LCAxMiwgMjIsIDIsIDI1MiwgMjUsIDIyOCwgMTIsIDIyLCAKLSAgICAyLCAyNTAsIDI0NywgMjI4LCAxMiwgMjIsIDIsIDc1LCAyMjgsIDEyLCAyMiwgMiwgMjMxLCA4MywgMjI4LCAxMiwgMjIsIDIsIAotICAgIDIwMywgMTI0LCAyMjgsIDEyLCAyMiwgMiwgMjAyLCAxNjksIDIyOCwgMTIsIDIyLCAyLCA2OCwgMjI4LCAxMiwgMjIsIDIsIAotICAgIDIwNiwgMTc4LCAyMjgsIDEyLCAyMiwgMiwgMjI1LCAxNDEsIDIyOSwgOSwgMjI4LCAxMiwgMjEzLCAxMzgsIDIsIDIyNywgCi0gICAgNDksIDIyOCwgMTIsIDIxMywgMTM4LCAyLCAyMjAsIDIzMywgMjI4LCAxMiwgMjIsIDIsIDc0LCAyMjgsIDEyLCAyMiwgMiwgCi0gICAgMjQxLCAxNDUsIDIyOCwgMTIsIDIyLCAyLCA3OCwgMjI4LCAxMiwgMjIsIDIsIDI1MCwgOCwgMjI4LCAxMiwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDIyOCwgMTIsIDIyOSwgMjcsIDIyOCwgMTEzLCAyMjgsIDEyLCAxNDMsIDIyNSwgMTQxLCAyNDEsIDEyOSwgCi0gICAgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjA5LCA0NywgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjA5LCAyLCAyMjgsIDEyLCAKLSAgICAxNDMsIDIyNSwgMTQxLCAyNDcsIDE2LCAyMjgsIDEyLCAyNDcsIDU4LCA4MiwgMjI4LCAxMiwgMjIyLCA4MSwgMjI4LCAxMiwgCi0gICAgMTcsIDIwMiwgODQsIDIyOCwgMTIsIDE3LCAxMDUsIDIyOCwgMTIsIDE3LCAxMDgsIDIyOCwgMTIsIDE3LCAxNDcsIDIyOCwgCi0gICAgMTIsIDE3LCAxNDksIDIyOCwgMTIsIDE3LCAxNzAsIDIyOCwgMTIsIDE3LCAxOTUsIDIyOCwgMTIsIDE3LCAyMTMsIDExMSwgCi0gICAgMjI4LCAxMiwgMTcsIDE5OSwgMjI4LCAxMiwgMTcsIDIyMiwgNjMsIDIyOCwgMTIsIDIzNiwgMTM3LCAyMjEsIDE5MSwgMjI4LCAKLSAgICAxMiwgMjM2LCAxMzcsIDIyNCwgODIsIDIyOCwgMTIsIDEsIDIyOSwgMTE3LCAyMzgsIDM5LCAyMjgsIDEyLCAxLCAyMjksIAotICAgIDExNywgMjIwLCAyMzMsIDc3LCA0LCAyMjAsIDM5LCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjA4LCAKLSAgICAyNiwgNjMsIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyNTUsIDIyLCAyMTUsIDIzMiwgMjQ4LCAxNjQsIAotICAgIDE5MiwgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDI1NSwgMjIsIDIzNywgMjMyLCAyMDgsIDYsIDE5MiwgCi0gICAgNzcsIDEzMSwgODEsIDIwMywgMywgMjI0LCAxNzMsIDIyNSwgMjIsIDE5MiwgNzcsIDEzMSwgMjQ2LCAxMiwgMjAzLCAzLCAKLSAgICAyMjQsIDE3MywgMjEzLCA5NywgMTkyLCA3NywgMTMxLCAyNDcsIDM0LCAyMDMsIDMsIDIyNCwgMTczLCAyMTgsIDE3MSwgCi0gICAgMjEzLCA4MywgMTkyLCA3NywgMTMxLCAyMDMsIDMsIDIyNCwgMTczLCAyMDgsIDYsIDIxMywgODMsIDE5MiwgNzcsIDEzMSwgCi0gICAgMjE0LCAyMDUsIDIxMywgODIsIDc3LCAxMzEsIDI0NywgMTk2LCAyMDMsIDMsIDIyNCwgMTcyLCA3NywgMTMxLCAyNDgsIDQ1LCAKLSAgICAyMTIsIDIzOCwgMjAzLCAzLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjMwLCAyNDMsIDIwOCwgNSwgNzcsIDEzMSwgMjQ0LCA0NCwgCi0gICAgMjA4LCA2LCAyNDcsIDE5NSwgNzcsIDEzMSwgMjEzLCA4MiwgNzcsIDEzMSwgMjIwLCAyMzgsIDIxMywgODIsIDc3LCAxMzEsIAotICAgIDIwOCwgNiwgMjEzLCA4MiwgNzcsIDEzMSwgMjIwLCAyMzgsIDIwOCwgNiwgMjEzLCA4MiwgNzcsIDEzMSwgMjE1LCAyNTUsIAotICAgIDI0NiwgMTU2LCAyMTEsIDE4MCwgMjEzLCA4MiwgNzcsIDEzMSwgMjE2LCA2NSwgMjM4LCA5LCAyMTMsIDgyLCA3NywgMTMxLCAKLSAgICAyNDcsIDM0LCAyNTUsIDI2LCAyMTUsIDE0OSwgMjI1LCAyMSwgMTYzLCAyNDcsIDYxLCA3NywgMTMxLCAyMzcsIDIzMiwgCi0gICAgMjA4LCA1LCA3NywgMjI3LCAzNSwgMiwgMjQ2LCAxOTcsIDIxNSwgMTQ4LCA3NywgMjI3LCAzNSwgMiwgMjI3LCAxNTksIAotICAgIDIxNSwgMTQ4LCA3NywgMjUwLCA1NSwgMiwgMjEzLCA5MywgMjM4LCAxOTMsIDI1NSwgMjcsIDIxNSwgMTQ4LCA3NywgMjUwLCAKLSAgICA1NSwgMiwgMjU1LCAyNCwgMTg1LCA3NywgMjUwLCA1NSwgMiwgMjE0LCAxNzgsIDIwOCwgMCwgNzcsIDIsIDIxNiwgMTYwLCAKLSAgICAyNDMsIDEyNywgMjM4LCAxOTIsIDc3LCAyLCAyMTYsIDE2MCwgMjQzLCAxMjcsIDIzOCwgNDEsIDc3LCAyLCAyMTYsIDE2MCwgCi0gICAgMjQzLCAxMjcsIDIzNywgMjMzLCA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIDIzOCwgMTkyLCA3NywgMiwgMjE2LCAxNjAsIAotICAgIDIyMywgOTksIDIzOCwgNDEsIDc3LCAyLCAyMTYsIDE2MCwgMjQzLCAxMjcsIDIxNiwgMTYwLCAyMjMsIDk4LCA3NywgMTcsIAotICAgIDIwMiwgODQsIDc3LCAxNywgMTA1LCA3NywgMTcsIDEwOCwgNzcsIDE3LCAxNDcsIDc3LCAxNywgMTQ5LCA3NywgMTcsIDE3MCwgCi0gICAgNzcsIDE3LCAxOTUsIDc3LCAxNywgMjEzLCAxMTEsIDc3LCAxNywgMTk5LCA3NywgMTcsIDIyMiwgNjMsIDc3LCAxNywgMTYyLCAKLSAgICAxMDUsIDc3LCAxNywgMTYyLCAxMDgsIDc3LCAxNywgMTYyLCAxNDcsIDc3LCAxNywgMTYyLCAxNDksIDc3LCAxNywgMTYyLCAKLSAgICAxNzAsIDc3LCAxNywgMTYyLCAxOTUsIDc3LCAxNywgMTYyLCAyMTMsIDExMSwgNzcsIDE3LCAxNjIsIDE5OSwgNzcsIDE3LCAKLSAgICAxNjIsIDIyMiwgNjMsIDc3LCAxNywgMTYyLCAyMDIsIDg0LCA3NywgMTMxLCAyNDcsIDE5OCwgMjE1LCAxNDgsIDc3LCAxMzEsIAotICAgIDIyMiwgMTk0LCAyNDcsIDEyNywgMjIwLCAyNDksIDIwMiwgMTksIDc3LCAxMzEsIDI0NywgMzQsIDI1NSwgMjYsIDIxNSwgCi0gICAgMTQ5LCAyNDcsIDEyOCwgMjI0LCAxMjYsIDI0NywgNjEsIDc3LCAxMzEsIDIyMiwgMTk0LCAyNDcsIDEyNywgMjEzLCA5NCwgCi0gICAgMjE1LCAxNDgsIDc3LCAxMzEsIDI0NiwgMTcxLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjA4LCAyMSwgMjU1LCAyMywgNzcsIAotICAgIDEzMSwgMjM3LCAyMTUsIDIxNSwgMTQ5LCAyMzcsIDE3NCwgNzcsIDEzMSwgMjM3LCAyMTUsIDIxNSwgMTQ5LCAyMzcsIDE4MCwgCi0gICAgNzcsIDEzMSwgMjUwLCAyMjQsIDIyOSwgMTM0LCAyMzcsIDE3NCwgNzcsIDEzMSwgMjUwLCAyMjQsIDIyOSwgMTM0LCAyMzcsIAotICAgIDE4MCwgNzcsIDIsIDIwMywgNzIsIDIwOCwgNCwgNzcsIDIsIDIyNSwgMTAxLCAyMDgsIDQsIDc3LCAxLCAxNzMsIDc3LCAxLCAKLSAgICAyMjksIDE0NCwgNzcsIDEsIDIzOSwgOCwgNzcsIDEsIDIzOCwgMTE5LCA3NywgMSwgMjIyLCAyMDMsIDc3LCAxLCAyNDcsIAotICAgIDkyLCA3NywgMSwgMjQ2LCAxOTksIDc3LCAxLCAyMzAsIDE4MSwgNzcsIDEsIDIyMSwgMTEsIDc3LCAxLCAyMDcsIDI0MSwgCi0gICAgNzcsIDEsIDIwNywgMjI5LCA3NywgMSwgMjQ0LCAxMjAsIDc3LCAxLCAyNDQsIDEwNCwgNzcsIDEsIDIyMSwgMjI3LCA3NywgCi0gICAgMSwgMjEwLCAyMiwgNzcsIDEsIDIwOSwgMTA4LCA3NywgMSwgMjQ0LCAyMTIsIDc3LCAxLCAyNDQsIDEsIDc3LCAxLCAyMDEsIAotICAgIDIwMSwgNzcsIDEsIDE4NSwgNzcsIDEsIDIxOCwgMjA4LCA3NywgMSwgMjQ5LCAzMiwgNzcsIDEsIDI0OCwgOTgsIDc3LCAxLCAKLSAgICAxOTIsIDc3LCAxLCAyMDgsIDIwLCA3NywgMSwgMjA4LCAxMCwgNzcsIDEsIDI0MSwgMjU1LCA3NywgMSwgMjQxLCAyNDksIAotICAgIDc3LCAxLCAyMDQsIDExMSwgNzcsIDEsIDIwMiwgODAsIDc3LCAxLCAyMDIsIDExNiwgNzcsIDEsIDI1NSwgMjksIDc3LCAxLCAKLSAgICAxOTgsIDc3LCAxLCAyMTYsIDIyMCwgNzcsIDEsIDIyOCwgMTEzLCA3NywgMSwgMjEzLCA5MCwgNzcsIDEsIDIxMSwgMTY0LCAKLSAgICA3NywgMSwgMjE1LCAzNiwgNzcsIDEsIDE1MiwgNzcsIDEsIDYzLCA3NywgMSwgMjI4LCAyMjMsIDc3LCAxLCAyMzksIDIyOSwgCi0gICAgMjE2LCAyMjAsIDc3LCAxLCAyMjksIDQ3LCA3NywgMSwgMjE1LCAxODUsIDc3LCAyMiwgMiwgMjUyLCAyNSwgNzcsIDIyLCAyLCAKLSAgICA3NSwgNzcsIDIyLCAyLCAyMzEsIDgzLCA3NywgMjIsIDIsIDY4LCA3NywgMjIsIDIsIDIwNiwgMTc4LCA3NywgMjIsIDIsIAotICAgIDEyNSwgMTQ2LCA3NywgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDc3LCAyMiwgMiwgMTI1LCAxNTksIDc3LCAyMiwgMiwgMTI1LCAKLSAgICAyMjcsIDc4LCA3NywgMjIsIDIsIDc0LCA3NywgMjIsIDIsIDI0MSwgMTYxLCA3NywgMjIsIDIsIDc4LCA3NywgMjIsIDIsIAotICAgIDIyMCwgMTgsIDc3LCAyLCAyMTUsIDIzOCwgMjExLCAxMSwgMjIyLCAyMDQsIDIxNSwgMjI3LCA3NywgMiwgMjE1LCAyMzIsIAotICAgIDI0OCwgMTYzLCA3NywgMjIsIDIsIDIxNiwgNzMsIDc1LCA3NywgMjIsIDIsIDIxNiwgNzMsIDIzMSwgODMsIDc3LCAyLCAKLSAgICAyMjAsIDI0OSwgMjAyLCAyMCwgMjIzLCAxMDcsIDI0NCwgMjEyLCA3NywgMiwgMjEyLCAyNywgMjI3LCAyMzYsIDc3LCAxMzEsIAotICAgIDIzNywgMTM5LCA3NywgMTMxLCAyMTksIDEzMiwgNzcsIDIsIDIyNywgMjM5LCAyMTUsIDE0OCwgNzcsIDIsIDIwMywgNzcsIAotICAgIDIxNSwgMTQ4LCA3NywgMiwgMjI3LCAyNDAsIDIwOCwgMjEsIDI0NywgNjEsIDc3LCAyLCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgCi0gICAgMiwgMjM3LCAyMzYsIDI0NywgNjIsIDIxNiwgNjMsIDc3LCAyLCAyMzcsIDIzNiwgMjI1LCAxNCwgMjE2LCA2MywgNzcsIDIsIAotICAgIDIzMCwgMjM5LCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDIsIDIyNywgMjQwLCAyMDgsIDIxLCAyNDcsIDYxLCAKLSAgICA3NywgMjEwLCAyNTQsIDIsIDIyNSwgMjQsIDI0NywgNjEsIDc3LCAyMTAsIDI1NCwgMiwgMjMwLCAyMzksIDIyNSwgMjQsIAotICAgIDI0NywgNjEsIDc3LCAyMTAsIDI1NCwgMSwgMTczLCA3NywgMjEwLCAyNTQsIDEsIDIyOSwgMTQ0LCA3NywgMjEwLCAyNTQsIAotICAgIDEsIDIzOSwgOCwgNzcsIDIxMCwgMjU0LCAxLCAyMzgsIDExOSwgNzcsIDIxMCwgMjU0LCAxLCAyMjIsIDIwMywgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyNDcsIDkyLCA3NywgMjEwLCAyNTQsIDEsIDI0NiwgMTk5LCA3NywgMjEwLCAyNTQsIDEsIDIzMCwgMTgxLCAKLSAgICA3NywgMjEwLCAyNTQsIDEsIDIyMSwgMTEsIDc3LCAyMTAsIDI1NCwgMSwgMjA3LCAyNDEsIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMjA3LCAyMjksIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxMDQsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjIxLCAyMjcsIDc3LCAyMTAsIDI1NCwgMSwgMjEwLCAyMiwgNzcsIDIxMCwgMjU0LCAxLCAyMDksIDEwOCwgCi0gICAgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDIxMiwgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDEsIDc3LCAyMTAsIDI1NCwgMSwgMjAxLCAKLSAgICAyMDEsIDc3LCAyMTAsIDI1NCwgMSwgMTg1LCA3NywgMjEwLCAyNTQsIDEsIDIxOCwgMjA4LCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDI0OSwgMzIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ4LCA5OCwgNzcsIDIxMCwgMjU0LCAxLCAxOTIsIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMjA4LCAyMCwgNzcsIDIxMCwgMjU0LCAxLCAyMDgsIDEwLCA3NywgMjEwLCAyNTQsIDEsIDI0MSwgMjU1LCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDI0MSwgMjQ5LCA3NywgMjEwLCAyNTQsIDEsIDIwNCwgMTExLCA3NywgMjEwLCAyNTQsIDEsIDIwMiwgODAsIAotICAgIDc3LCAyMTAsIDI1NCwgMSwgMjAyLCAxMTYsIDc3LCAyMTAsIDI1NCwgMSwgMjU1LCAyOSwgNzcsIDIxMCwgMjU0LCAxLCAKLSAgICAxOTgsIDc3LCAyMTAsIDI1NCwgMSwgMjE2LCAyMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjI4LCAxMTMsIDc3LCAyMTAsIDI1NCwgCi0gICAgMSwgMjEzLCA5MCwgNzcsIDIxMCwgMjU0LCAxLCAyMTEsIDE2NCwgNzcsIDIxMCwgMjU0LCAxLCAyMTUsIDM2LCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDE1MiwgNzcsIDIxMCwgMjU0LCAxLCA2MywgNzcsIDIxMCwgMjU0LCAxLCAyMjgsIDIyMywgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyMzksIDIyOSwgMjA0LCAxMTEsIDc3LCAyMTAsIDI1NCwgMSwgMjM5LCAyMjksIDE5OCwgNzcsIDIxMCwgMjU0LCAKLSAgICAxLCAyMzksIDIyOSwgMjE2LCAyMjAsIDc3LCAyMjgsIDIxMCwgMjE1LCAxNDYsIDIyOSwgMTQ0LCA3NywgMjI4LCAyMTAsIAotICAgIDIxNSwgMTQ2LCAyMjksIDE0NSwgMjQ3LCAxMjgsIDIyNCwgMTI2LCAyNDcsIDYxLCA3NywgMjQ3LCA0OSwgMiwgNzksIDI0OCwgCi0gICAgMTU1LCA3NywgMjQ3LCA0OSwgMiwgMTU3LCAyNDgsIDE1NSwgNzcsIDI0NywgNDksIDIsIDI0NywgNTAsIDIwOSwgMTg1LCAKLSAgICA3NywgMjQ3LCA0OSwgMiwgMjE0LCAyMDQsIDI1NSwgMjgsIDc3LCAxNiwgMjQyLCA1NSwgMjQ3LCAxOTMsIDc3LCAxNiwgCi0gICAgMjE2LCAxNTksIDIxNSwgMjM5LCA3NywgMTYsIDIxOSwgMTU1LCAyMzgsIDE5MSwgNzcsIDE2LCAyMTYsIDE1OSwgMjE1LCAKLSAgICAyNDAsIDIxNiwgNjUsIDIzOCwgOCwgNzcsIDE2LCAyMTgsIDE3MSwgMTg1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5MywgCi0gICAgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTQsIDIyMCwgMjM4LCAyNTUsIDI1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIAotICAgIDE5NCwgMjM3LCAyMzQsIDI1NSwgMjUsIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTk0LCAyNDcsIDEyOCwgMjU1LCAyNSwgCi0gICAgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAyMTYsIDE2MCwgMjQzLCAxMjYsIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgCi0gICAgMjM3LCAyMzMsIDc3LCAxMzEsIDI0NywgMTk3LCAyMTIsIDIzOCwgMjM4LCA4MiwgMjI0LCAxNzMsIDIxNiwgNjQsIDc3LCAKLSAgICAxMzEsIDIyNCwgODQsIDIwMywgMywgMjM4LCA4MiwgMjI0LCAxNzMsIDIxNiwgNjQsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMDgsIAotICAgIDUsIDc3LCAxMzEsIDgxLCAyNDcsIDIyMCwgMjE1LCAyMjksIDIwMywgMywgMjI0LCAxNzMsIDIyNSwgMjIsIDE5MiwgNzcsIAotICAgIDEzMSwgMjQ2LCAxMiwgMjQ3LCAyMjAsIDIxNSwgMjI5LCAyMDMsIDMsIDIyNCwgMTczLCAyMTMsIDk3LCAxOTIsIDIxNiwgCi0gICAgMTUsIDIxMCwgMTc0LCA1NCwgMjI3LCAyMjEsIDIxMCwgMTc0LCA1NCwgMjE2LCAxNSwgMjEwLCAxNzQsIDIsIDMsIDI0MywgCi0gICAgODMsIDIyNywgMjIxLCAyMTAsIDE3NCwgMiwgMywgMjQzLCA4MywgNzcsIDEzMSwgMjI3LCAyMzEsIDIyNSwgMjUsIDIxNSwgCi0gICAgMTQ4LCA3NywgMTMxLCAyMDgsIDExMiwgMjI1LCAyNSwgMjE1LCAxNDgsIDY5LCAxLCAxNzMsIDY5LCAxLCAyMjksIDE0NCwgCi0gICAgNjksIDEsIDIzOSwgOCwgNjksIDEsIDIzOCwgMTE5LCA2OSwgMSwgMjIyLCAyMDMsIDY5LCAxLCAyNDcsIDkyLCA2OSwgMSwgCi0gICAgMjQ2LCAxOTksIDY5LCAxLCAyMzAsIDE4MSwgNjksIDEsIDIzMCwgMTQ5LCA2OSwgMSwgMjIxLCAxMSwgNjksIDEsIDIyMSwgCi0gICAgMTkzLCA2OSwgMSwgMjA3LCAyNDEsIDY5LCAxLCAyMDcsIDIyOSwgNjksIDEsIDI0NCwgMTIwLCA2OSwgMSwgMjQ0LCAxMDQsIAotICAgIDY5LCAxLCAyMjEsIDIyNywgNjksIDEsIDIxMCwgMjIsIDY5LCAxLCAyMDksIDEwOCwgNjksIDEsIDI0NCwgMjEyLCA2OSwgMSwgCi0gICAgMjQ0LCAxLCA2OSwgMSwgMjAxLCAyMDEsIDY5LCAxLCAxODUsIDY5LCAxLCAyMTgsIDIwOCwgNjksIDEsIDI0OSwgMzIsIDY5LCAKLSAgICAxLCAyNDgsIDk4LCA2OSwgMSwgMTkyLCA2OSwgMSwgMTk4LCA2OSwgMSwgMjE2LCAyMjAsIDY5LCAxLCAyMjgsIDExMywgNjksIAotICAgIDEsIDIwNCwgMTExLCA2OSwgMSwgMjE1LCAzNiwgNjksIDEsIDE1MiwgNjksIDEsIDIyNywgNzcsIDY5LCAxLCA2MywgNjksIAotICAgIDEsIDIxMywgNjcsIDYzLCA2OSwgMSwgNzUsIDY5LCAxLCAyMzEsIDgzLCA2OSwgMSwgNjgsIDY5LCAxLCAyMDYsIDE3OCwgCi0gICAgNjksIDEsIDc0LCA2OSwgMSwgMjI0LCA1NSwgNzQsIDY5LCAxLCA3OCwgNjksIDEsIDI1MCwgMzQsIDY5LCAyMiwgMiwgMjA5LCAKLSAgICAyMzQsIDI1MiwgMjUsIDY5LCAyMiwgMiwgMjUyLCAyNSwgNjksIDIyLCAyLCA3NSwgNjksIDIyLCAyLCAyMzEsIDgzLCA2OSwgCi0gICAgMjIsIDIsIDY4LCA2OSwgMjIsIDIsIDIwNiwgMTc4LCA2OSwgMjIsIDIsIDc0LCA2OSwgMjIsIDIsIDI1MSwgNjQsIDY5LCAKLSAgICAyMiwgMiwgMjI0LCA1NSwgMjMxLCA4MywgNjksIDIyLCAyLCAyMjQsIDU1LCA3OCwgNjksIDIyLCAyLCAxODgsIDU1LCA2OSwgCi0gICAgMiwgMjUwLCAxODAsIDY5LCAyLCA3MCwgNTYsIDY5LCAyLCAyMDUsIDE5OSwgNjksIDIsIDIwNSwgMjA0LCA2OSwgMiwgMjUwLCAKLSAgICA3OSwgNjksIDEwOSwgMiwgMTc0LCAxOTgsIDY5LCAxMDksIDIsIDE3NCwgMjE2LCAyMjAsIDY5LCAxMDksIDIsIDE3NCwgCi0gICAgMjA0LCAxMTEsIDY5LCAxMDksIDIsIDE3NCwgMTUyLCA2OSwgMSwgMjM3LCAyNDksIDIxNSwgMzYsIDY5LCAxNywgMjAyLCAKLSAgICA4NCwgNjksIDE3LCAxMDUsIDY5LCAxNywgMTA4LCA2OSwgMTcsIDE0NywgNjksIDE3LCAxNDksIDY5LCAxNywgMTcwLCA2OSwgCi0gICAgMTcsIDE5NSwgNjksIDE3LCAyMTMsIDExMSwgNjksIDE3LCAxOTksIDY5LCAxNywgMjIyLCA2MywgNjksIDIsIDIyNywgODYsIAotICAgIDIxNCwgMTY3LCA2OSwgMiwgMjE0LCAxNjcsIDY5LCAxNiwgMjI3LCA0NCwgNjksIDE2LCAyNDUsIDIyNywgNjksIDE2LCAKLSAgICAyNTEsIDg1LCA2OSwgMTYsIDIzOCwgMTc0LCA2OSwgMSwgMjEzLCA5MCwgNjksIDEsIDIxMSwgMTY0LCA2OSwgMSwgMTI1LCAKLSAgICAxNDYsIDY5LCAxLCAxMjUsIDIxNSwgMTg2LCA2OSwgMSwgMTI1LCAxNTksIDY5LCAxLCAxMjUsIDIyNywgNzgsIDY5LCAyMiwgCi0gICAgMiwgMTI1LCAxNDYsIDY5LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgNjksIDIyLCAyLCAxMjUsIDE1OSwgNjksIDIyLCAyLCAKLSAgICAxMjUsIDIyNywgNzgsIDY5LCAxLCAyMjQsIDU1LCAyMjIsIDIwMywgNjksIDEsIDIyNCwgNTUsIDIzMCwgMTQ5LCA2OSwgMSwgCi0gICAgMjI0LCA1NSwgMjQ4LCAxOTgsIDY5LCAxLCAyMjQsIDU1LCAyNDgsIDE5MywgNjksIDEwOSwgMiwgMjI0LCA1NSwgMTc0LCAKLSAgICAyMDEsIDIwMSwgNjksIDEwOSwgMiwgMjI0LCA1NSwgMTc0LCAxOTIsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgMjI4LCAKLSAgICAxMTMsIDY5LCAxLCAyMTMsIDk2LCAyMjksIDIzNywgMjEzLCA5MCwgNjksIDIyLCAyLCAyMTMsIDk2LCAyMjksIDIzNywgCi0gICAgMjQwLCAyMzgsIDY5LCAxNDMsIDEzMSwgMjEzLCA5NiwgMjI5LCAyMzcsIDIzNywgNzksIDY5LCAxNDMsIDEzMSwgMjEzLCAKLSAgICA5NiwgMjI5LCAyMzcsIDIyOSwgMjAyLCAyMTgsIDE4MCwgNjksIDEsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgCi0gICAgMjA5LCAxMDgsIDY5LCAxLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIxNywgMTUyLCA2OSwgMjIsIDIsIDIwNCwgCi0gICAgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjQwLCAyMzgsIDY5LCAyMiwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAKLSAgICAyMDcsIDI0LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIDE2MCwgNjksIDIsIDIwNCwgNDQsIAotICAgIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTksIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgCi0gICAgMTU4LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIDE1NywgNjksIDIsIDIwNCwgNDQsIDIxNywgCi0gICAgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTYsIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMjEsIDIyNywgCi0gICAgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwMiwgMTc2LCA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAKLSAgICAyMjksIDIzNywgMjM4LCA4NCwgNjksIDIyLCAyLCAyMzgsIDE4NiwgMjI5LCAyMzcsIDc1LCA2OSwgMjIsIDIsIDIyOSwgCi0gICAgMjA3LCAyMjAsIDczLCA2OSwgMjIsIDIsIDIyOSwgMjA3LCA2OCwgNjksIDIyLCAyLCAyMjksIDIwNywgMjQxLCAxNjEsIDY5LCAKLSAgICAxLCAyMTMsIDY3LCAxNzMsIDY5LCAxLCAyMTMsIDY3LCAyMjksIDE0NCwgNjksIDEsIDIxMywgNjcsIDIzOSwgOCwgNjksIDEsIAotICAgIDIxMywgNjcsIDI0NywgOTIsIDY5LCAxLCAyMTMsIDY3LCAyMDIsIDExNiwgNjksIDEsIDIxMywgNjcsIDIyMSwgMTEsIDY5LCAKLSAgICAxLCAyMTMsIDY3LCAyNDQsIDIxMiwgNjksIDEsIDIxMywgNjcsIDIwMSwgMjAxLCA2OSwgMSwgMjEzLCA2NywgMjE4LCAyMDgsIAotICAgIDY5LCAxLCAyMTMsIDY3LCAyNDAsIDEwOCwgNjksIDEsIDIxMywgNjcsIDI0OSwgMzIsIDY5LCAxLCAyMTMsIDY3LCAyMDksIAotICAgIDEwOCwgNjksIDEsIDIxMywgNjcsIDE1MiwgNjksIDEwOSwgMiwgMjEzLCA2NywgMTc0LCAyMDQsIDExMSwgNjksIDIyLCAyLCAKLSAgICAyMTMsIDY3LCAyNTIsIDI1LCA2OSwgMjIsIDIsIDIxMywgNjcsIDc0LCA2OSwgMjIsIDIsIDIxMywgNjcsIDE4OCwgNTUsIAotICAgIDY5LCAyMiwgMiwgMjEzLCA2NywgNDYsIDIwMywgMTI0LCA2OSwgMiwgMjEzLCA2NywgMjA4LCAxNTksIDY5LCAyLCAyMTMsIAotICAgIDY3LCAyMDgsIDE1OCwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU2LCA2OSwgMiwgMjEzLCA2NywgMjA4LCAxNTUsIDY5LCAyLCAKLSAgICAyMTMsIDY3LCAyNDUsIDE1NiwgMjA4LCAxNTksIDY5LCAyLCAyMTMsIDY3LCAyNDUsIDE1NiwgMjA4LCAxNTgsIDY5LCAyLCAKLSAgICAyMTMsIDY3LCAyNDUsIDE1NiwgMjQxLCA5NSwgMjA4LCAxNjEsIDY5LCAxLCAyMTUsIDEzMCwgMjE5LCAxMzksIDI0MCwgCi0gICAgMTA4LCA2OSwgMiwgMjE1LCAxMzAsIDIxOSwgMTM5LCAyMDgsIDE1NiwgNjksIDIxMywgNjcsIDE3LCAyMDIsIDg0LCA2OSwgCi0gICAgMjEzLCA2NywgMTcsIDEwNSwgNjksIDIxMywgNjcsIDE3LCAxMDgsIDY5LCAyMTMsIDY3LCAxNywgMTQ3LCA2OSwgMjEzLCAKLSAgICA2NywgMTcsIDE0OSwgNjksIDIxMywgNjcsIDE3LCAxNzAsIDY5LCAyMTMsIDY3LCAxNywgMTk1LCA2OSwgMjEzLCA2NywgMTcsIAotICAgIDIxMywgMTExLCA2OSwgMjEzLCA2NywgMTcsIDE5OSwgNjksIDIxMywgNjcsIDE3LCAyMjIsIDYzLCA2OSwgMiwgMjI5LCAKLSAgICAxMzcsIDIwOCwgMTYwLCA2OSwgMiwgMjI5LCAxMzcsIDIwOCwgMTU4LCA2OSwgMjIsIDIsIDI1MSwgNTEsIDYzLCA2OSwgMjIsIAotICAgIDIsIDI1MSwgNTEsIDI1MSwgNjQsIDY5LCAxNiwgMjEzLCA2NywgMTA1LCA2OSwgMTYsIDIxMywgNjcsIDI0MCwgMjExLCAKLSAgICAxMTQsIDYsIDEsIDI1MCwgMjMxLCAxMTQsIDYsIDEsIDI0OCwgMjQyLCAxMTQsIDYsIDEsIDIzOCwgMjM0LCAxMTQsIDYsIDEsIAotICAgIDI0MywgOTMsIDExNCwgNiwgMSwgMjQxLCA5MiwgMTE0LCA2LCAxLCAyMDUsIDIxMywgMTE0LCA2LCAxLCAyMDIsIDg3LCAKLSAgICAxMTQsIDYsIDEsIDIwOSwgMjMwLCAxMTQsIDYsIDEsIDIzMSwgNDksIDExNCwgNiwgMSwgMjMwLCA0LCAxMTQsIDYsIDEsIAotICAgIDIyOCwgMiwgMTE0LCA2LCAxLCAyMjUsIDEyMiwgMTE0LCA2LCAxLCAyMjMsIDc0LCAxMTQsIDYsIDEsIDIyMCwgMzEsIDExNCwgCi0gICAgNiwgMSwgMjE5LCA5MSwgMTE0LCA2LCAxLCAyMDIsIDc2LCAxMTQsIDYsIDEsIDIxNiwgMjAyLCAxMTQsIDYsIDEsIDIxNCwgCi0gICAgMjQzLCAxMTQsIDYsIDEsIDIwOSwgMjE4LCAxMTQsIDYsIDEsIDIwNiwgMjU1LCAxMTQsIDYsIDEsIDIxOCwgMjAwLCAxMTQsIAotICAgIDYsIDEsIDIyOSwgMTMyLCAxMTQsIDYsIDEsIDIzOCwgMTEwLCAxMTQsIDYsIDEsIDIxNywgMTExLCAxMTQsIDYsIDEsIDIxMiwgCi0gICAgMjU1LCAxMTQsIDYsIDEsIDI0NiwgMTI5LCAxMTQsIDYsIDEsIDI0NywgNjEsIDExNCwgNiwgMSwgMjMwLCAxMzMsIDExNCwgCi0gICAgNiwgMSwgMjQ2LCA2OCwgMTE0LCA2LCAxLCAyNDYsIDE4MywgMTE0LCA2LCAxLCAyMDMsIDE4MCwgMTE0LCA2LCAxLCAyMzAsIAotICAgIDE0NiwgMTE0LCA2LCAxLCAyMzcsIDE1NCwgMTE0LCA2LCAxLCAyMzcsIDY3LCAxMTQsIDYsIDEsIDIzNiwgMjU0LCAxMTQsIAotICAgIDYsIDEsIDIwNCwgNjIsIDExNCwgNiwgMSwgMjM3LCA5MiwgMTE0LCA2LCAxLCAyMzYsIDEzMiwgMTE0LCA2LCAxLCAyMDIsIAotICAgIDI0OSwgMTE0LCA2LCAxLCAyNTEsIDk4LCAxMTQsIDEsIDI1MCwgMjMxLCAxMTQsIDEsIDI0OCwgMjQyLCAxMTQsIDEsIDIzOCwgCi0gICAgMjM0LCAxMTQsIDEsIDI0MywgOTMsIDExNCwgMSwgMjQxLCA5MiwgMTE0LCAxLCAyMDUsIDIxMywgMTE0LCAxLCAyMDIsIDg3LCAKLSAgICAxMTQsIDEsIDIwOSwgMjMwLCAxMTQsIDEsIDIzMSwgNDksIDExNCwgMSwgMjMwLCA0LCAxMTQsIDEsIDIyOCwgMiwgMTE0LCAKLSAgICAxLCAyMjUsIDEyMiwgMTE0LCAxLCAyMjMsIDc0LCAxMTQsIDEsIDIyMCwgMzEsIDExNCwgMSwgMjE5LCA5MSwgMTE0LCAxLCAKLSAgICAyMDIsIDc2LCAxMTQsIDEsIDIxNiwgMjAyLCAxMTQsIDEsIDIxNCwgMjQzLCAxMTQsIDEsIDIwOSwgMjE4LCAxMTQsIDEsIAotICAgIDIwNiwgMjU1LCAxMTQsIDEsIDIxOCwgMjAwLCAxMTQsIDEsIDIyOSwgMTMyLCAxMTQsIDEsIDIzOCwgMTEwLCAxMTQsIDEsIAotICAgIDIxNywgMTExLCAxMTQsIDEsIDIxMiwgMjU1LCAxMTQsIDEsIDI0NiwgMTI5LCAxMTQsIDEsIDI0NywgNjEsIDExNCwgMSwgCi0gICAgMjMwLCAxMzMsIDExNCwgMSwgMjQ2LCA2OCwgMTE0LCAxLCAyNDYsIDE4MywgMTE0LCAxLCAyMDMsIDE4MCwgMTE0LCAxLCAKLSAgICAyMzAsIDE0NiwgMTE0LCAxLCAyMzcsIDE1NCwgMTE0LCAxLCAyMzcsIDY3LCAxMTQsIDEsIDIzNiwgMjU0LCAxMTQsIDEsIAotICAgIDIwNCwgNjIsIDExNCwgMSwgMjM3LCA5MiwgMTE0LCAxLCAyMzYsIDEzMiwgMTE0LCAxLCAyNDAsIDI2LCAxMTQsIDEsIDIwMiwgCi0gICAgMjQ5LCAxMTQsIDEsIDI0MSwgMTEwLCAxMTQsIDEsIDIwNywgMTc0LCAyMzgsIDIzNCwgMTE0LCAxLCAyNTEsIDU5LCAxMTQsIAotICAgIDIxOSwgODksIDIxMywgMTMwLCA2NSwgMSwgMTE0LCAyMjMsIDc0LCAxMTQsIDEsIDI1MSwgOTgsIDExNCwgMSwgMjM3LCA5MSwgCi0gICAgNTQsIDExNCwgMSwgMjI4LCAxMDQsIDU0LCAyOCwgMTIzLCAyMjksIDU5LCAyOCwgMTIzLCAyMTEsIDE1NiwgMjgsIDEyMywgCi0gICAgMjIyLCA5MywgMjgsIDEyMywgMjA4LCAyNDAsIDI4LCAxMjMsIDIxMSwgMTQ1LCAyOCwgMTIzLCAyMTYsIDQ3LCAyOCwgMTIzLCAKLSAgICAyMjQsIDE0MSwgMjgsIDEyMywgMjE4LCAxNTMsIDI4LCAxMjMsIDIxMSwgMTUzLCAyOCwgMTIzLCAyMTIsIDExMSwgMjgsIAotICAgIDEyMywgMjExLCAxNTAsIDI4LCAxMjMsIDIzMSwgMTA2LCAyOCwgMTIzLCAyNDYsIDc0LCAyOCwgMTIzLCAyMTEsIDE2MCwgCi0gICAgMjgsIDEyMywgMjQ2LCAxMzgsIDI4LCAxMjMsIDIyOSwgMTIwLCAyOCwgMTIzLCAyMDksIDY2LCAyOCwgMTIzLCAyMTgsIAotICAgIDE5MCwgMjgsIDEyMywgMjM2LCAyNTEsIDI4LCAxMjMsIDIyMiwgODksIDI4LCAxMjMsIDIxMSwgMTU0LCAyOCwgMTIzLCAKLSAgICAyMjIsIDgzLCAyOCwgMTIzLCAyMjIsIDg3LCAyOCwgMTIzLCAyMDgsIDIzNywgMjgsIDEyMywgMjE2LCAzNSwgMjgsIDEyMywgCi0gICAgMjExLCAxNTIsIDI4LCAxMjMsIDIxNiwgNDUsIDI4LCAxMjMsIDIyOSwgMjQzLCAyOCwgMTIzLCAyMjQsIDEzNCwgMjgsIAotICAgIDEyMywgMjI5LCAyNDYsIDI4LCAxMjMsIDIxOCwgMTQ4LCAyOCwgMTIzLCAyMTgsIDE0NiwgMjgsIDEyMywgMjE4LCAxMzQsIAotICAgIDI4LCAxMjMsIDIxOCwgMTQyLCAyOCwgMTIzLCAyMTgsIDE0MCwgMjgsIDEyMywgMjE4LCAxMzcsIDI4LCAxMjMsIDIxOCwgCi0gICAgMTM5LCAyOCwgMTIzLCAyMTgsIDEzNiwgMjgsIDEyMywgMjE4LCAxNDEsIDI4LCAxMjMsIDIxOCwgMTUxLCAyOCwgMTIzLCAKLSAgICAyMTgsIDE1MiwgMjgsIDEyMywgMjE4LCAxMzUsIDI4LCAxMjMsIDIxOCwgMTQ1LCAyOCwgMTIzLCAyMjksIDI0NCwgMjgsIAotICAgIDEyMywgMjI5LCAyNDIsIDI4LCAxMjMsIDIxMiwgMTA0LCAyOCwgMTIzLCAyMTIsIDEwMiwgMjgsIDEyMywgMjEyLCA5NCwgCi0gICAgMjgsIDEyMywgMjEyLCA5NywgMjgsIDEyMywgMjEyLCAxMDMsIDI4LCAxMjMsIDIxMiwgOTksIDI4LCAxMjMsIDIxMiwgOTgsIAotICAgIDI4LCAxMjMsIDIxMiwgOTYsIDI4LCAxMjMsIDIxMiwgMTA3LCAyOCwgMTIzLCAyMTIsIDEwOSwgMjgsIDEyMywgMjEyLCAKLSAgICAxMTAsIDI4LCAxMjMsIDIxMiwgMTA1LCAyOCwgMTIzLCAyMTIsIDk1LCAyOCwgMTIzLCAyMTIsIDEwMCwgMjgsIDEyMywgCi0gICAgMjEyLCAxMDgsIDI4LCAxMjMsIDI0NiwgMTIwLCAyOCwgMTIzLCAyNDYsIDExOCwgMjgsIDEyMywgMjQ2LCAyMTAsIDI4LCAKLSAgICAxMjMsIDI0NiwgMjA4LCAyOCwgMTIzLCAyMTksIDEwNywgMjgsIDEyMywgMjMxLCAxMDEsIDI4LCAxMjMsIDIzMSwgOTIsIAotICAgIDI4LCAxMjMsIDIzMSwgMTAwLCAyOCwgMTIzLCAyMzEsIDk3LCAyOCwgMTIzLCAyMzEsIDk1LCAyOCwgMTIzLCAyMzEsIDk5LCAKLSAgICAyOCwgMTIzLCAyMTEsIDE1NywgMjgsIDEyMywgMjMxLCAxMDQsIDI4LCAxMjMsIDIzMSwgMTA1LCAyOCwgMTIzLCAyMzEsIAotICAgIDkzLCAyOCwgMTIzLCAyMzEsIDk4LCAyOCwgMTIzLCAyMDMsIDI5LCAyOCwgMTIzLCAyNDYsIDczLCAyOCwgMTIzLCAyNDYsIAotICAgIDEyMSwgMjgsIDEyMywgMjQ2LCAxMTksIDI4LCAxMjMsIDI0NiwgMjExLCAyOCwgMTIzLCAyNDYsIDIwOSwgMjgsIDEyMywgCi0gICAgMjQ2LCAxMzYsIDI4LCAxMjMsIDI0NiwgMTM3LCAyOCwgMTIzLCAyNDYsIDEyMiwgMjgsIDEyMywgMjQ2LCAyMTIsIDI4LCAKLSAgICAxMjMsIDIxOCwgMTg4LCAyOCwgMTIzLCAyMjksIDI0NSwgMjgsIDEyMywgMjExLCAxNTgsIDI4LCAxMjMsIDIwMywgMzUsIAotICAgIDI4LCAxMjMsIDIyOSwgNTAsIDI4LCAxMjMsIDIyMiwgODUsIDI4LCAxMjMsIDIyMiwgOTEsIDI4LCAxMjMsIDIyMiwgOTAsIAotICAgIDI4LCAxMjMsIDIwOCwgMjM0LCAyOCwgMTIzLCAyNDAsIDcsIDI4LCAxNzYsIDI0MCwgNywgMjgsIDE3NiwgNjMsIDI4LCAKLSAgICAxNzYsIDI1MSwgMTA5LCAyOCwgMTc2LCAxOTgsIDI4LCAxNzYsIDIwMywgOTksIDI4LCAxNzYsIDI0MSwgNTUsIDI4LCAxNzYsIAotICAgIDc0LCAyOCwgMTc2LCAyMDMsIDM5LCAyOCwgMTc2LCAyMDMsIDUyLCAyOCwgMTc2LCA3OCwgMjgsIDE3NiwgMjA0LCAxMTEsIAotICAgIDI4LCAxNzYsIDIwNCwgMTA3LCAyOCwgMTc2LCAyMjAsIDczLCAyOCwgMTc2LCAyMDIsIDI0NywgMjgsIDE3NiwgNjgsIDI4LCAKLSAgICAxNzYsIDIwNCwgNDgsIDI4LCAxNzYsIDIwNCwgNjIsIDI4LCAxNzYsIDIwNCwgMzAsIDI4LCAxNzYsIDIwMiwgMjEzLCAyOCwgCi0gICAgMTc2LCAyNDAsIDIzOCwgMjgsIDE3NiwgMjAzLCAxMSwgMjgsIDE3NiwgNzUsIDI4LCAxNzYsIDI1NSwgMjAsIDI4LCAxNzYsIAotICAgIDI1NSwgMTksIDI4LCAxNzYsIDIwMywgMTEzLCAyOCwgMTc2LCAyMDMsIDExMSwgMjgsIDE3NiwgMjQxLCA1MywgMjgsIDE3NiwgCi0gICAgMjQxLCA1MiwgMjgsIDE3NiwgMjQxLCA1NCwgMjgsIDE3NiwgMjAzLCAzOCwgMjgsIDE3NiwgMjAzLCAzNywgMjgsIDE3NiwgCi0gICAgMjIwLCAxODEsIDI4LCAxNzYsIDIyMCwgMTgyLCAyOCwgMTc2LCAyMjAsIDE3NSwgMjgsIDE3NiwgMjIwLCAxODAsIDI4LCAKLSAgICAxNzYsIDIyMCwgMTc4LCAyOCwgMTc2LCAyMDIsIDI0MSwgMjgsIDE3NiwgMjAyLCAyNDAsIDI4LCAxNzYsIDIwMiwgMjM5LCAKLSAgICAyOCwgMTc2LCAyMDIsIDI0MiwgMjgsIDE3NiwgMjAyLCAyNDMsIDI4LCAxNzYsIDIwNywgOTcsIDI4LCAxNzYsIDIwNywgOTYsIAotICAgIDI4LCAxNzYsIDIwNywgOTQsIDI4LCAxNzYsIDIwNywgOTAsIDI4LCAxNzYsIDIwNywgOTEsIDI4LCAxNzYsIDIwMiwgMjEyLCAKLSAgICAyOCwgMTc2LCAyMDIsIDIwOSwgMjgsIDE3NiwgMjAyLCAyMTAsIDI4LCAxNzYsIDIwMiwgMjA0LCAyOCwgMTc2LCAyMDIsIAotICAgIDIwNSwgMjgsIDE3NiwgMjAyLCAyMDYsIDI4LCAxNzYsIDIwMiwgMjA4LCAyOCwgMTc2LCAyNDAsIDIzMiwgMjgsIDE3NiwgCi0gICAgMjQwLCAyMzQsIDI4LCAxNzYsIDIwMywgMTAsIDI4LCAxNzYsIDIzNSwgMjA1LCAyOCwgMTc2LCAyMzUsIDE5NywgMjgsIAotICAgIDE3NiwgMjM1LCAyMDAsIDI4LCAxNzYsIDIzNSwgMTk4LCAyOCwgMTc2LCAyMzUsIDIwMiwgMjgsIDE3NiwgMjM1LCAyMDQsIAotICAgIDI4LCAxNzYsIDI1MCwgMTM3LCAyOCwgMTc2LCAyNTAsIDEzNCwgMjgsIDE3NiwgMjUwLCAxMzIsIDI4LCAxNzYsIDI1MCwgCi0gICAgMTMzLCAyOCwgMTc2LCAyMTEsIDE2MSwgMjgsIDE3NiwgMjU1LCAyMSwgMjgsIDE3NiwgMjAzLCAxMTIsIDI4LCAxNzYsIAotICAgIDIwMywgMzYsIDI4LCAxNzYsIDIyMCwgMTc3LCAyOCwgMTc2LCAyMjAsIDE3NiwgMjgsIDEwNywgMjI5LCA1OSwgMjgsIDEwNywgCi0gICAgMjExLCAxNTYsIDI4LCAxMDcsIDIyOSwgNTIsIDI4LCAxMDcsIDIyMiwgOTMsIDI4LCAxMDcsIDIyMiwgOTEsIDI4LCAxMDcsIAotICAgIDIyMiwgOTAsIDI4LCAxMDcsIDIwOCwgMjQwLCAyOCwgMTA3LCAyMTYsIDQ3LCAyOCwgMTA3LCAyMTYsIDQyLCAyOCwgMTA3LCAKLSAgICAyMTYsIDM5LCAyOCwgMTA3LCAyMTYsIDMyLCAyOCwgMTA3LCAyMTYsIDI3LCAyOCwgMTA3LCAyMTYsIDIyLCAyOCwgMTA3LCAKLSAgICAyMTYsIDMzLCAyOCwgMTA3LCAyMTYsIDQ1LCAyOCwgMTA3LCAyMjQsIDE0MSwgMjgsIDEwNywgMjE4LCAxNTMsIDI4LCAxMDcsIAotICAgIDIxOCwgMTQyLCAyOCwgMTA3LCAyMTIsIDExMSwgMjgsIDEwNywgMjExLCAxNTAsIDI4LCAxMDcsIDIzMSwgMTA2LCAyOCwgCi0gICAgMTA3LCAyNDYsIDc0LCAyOCwgMTA3LCAyNDYsIDEzOCwgMjgsIDEwNywgMjI5LCAxMjAsIDI4LCAxMDcsIDIwOSwgNjYsIDI4LCAKLSAgICAxMDcsIDIxOCwgMTkwLCAyOCwgMTA3LCAyMzYsIDI1MSwgMjgsIDEwNywgMjI5LCA1MywgMjgsIDEwNywgMjI5LCA1MSwgMjgsIAotICAgIDEwNywgMjIyLCA4OSwgMjgsIDEwNywgMjIyLCA4MywgMjgsIDEwNywgMjIyLCA4NSwgMjgsIDEwNywgMjIyLCA4OCwgMjgsIAotICAgIDEwNywgMjIyLCA4NCwgMjgsIDEwNywgMjA4LCAyMzcsIDI4LCAxMDcsIDIwOCwgMjM0LCAyOCwgMTA3LCAyMTYsIDQwLCAyOCwgCi0gICAgMTA3LCAyMTYsIDM1LCAyOCwgMTA3LCAyMTYsIDIxLCAyOCwgMTA3LCAyMTYsIDIwLCAyOCwgMTA3LCAyMTEsIDE1MiwgMjgsIAotICAgIDEwNywgMjE2LCAzNywgMjgsIDEwNywgMjE2LCAzNiwgMjgsIDEwNywgMjE2LCAyOSwgMjgsIDEwNywgMjE2LCAzMSwgMjgsIAotICAgIDEwNywgMjE2LCA0NCwgMjgsIDEwNywgMjE2LCAyNCwgMjgsIDEwNywgMjE2LCAzNCwgMjgsIDEwNywgMjE2LCA0MywgMjgsIAotICAgIDEwNywgMjE2LCAxOSwgMjgsIDEwNywgMjI0LCAxMzcsIDI4LCAxMDcsIDIyNCwgMTMyLCAyOCwgMTA3LCAyMjQsIDEzNCwgCi0gICAgMjgsIDEwNywgMjI0LCAxMzEsIDI4LCAxMDcsIDIyNCwgMTI5LCAyOCwgMTA3LCAyMjQsIDEzNSwgMjgsIDEwNywgMjI0LCAKLSAgICAxNDAsIDI4LCAxMDcsIDIyNCwgMTM4LCAyOCwgMTA3LCAyMjksIDI0NiwgMjgsIDEwNywgMjE4LCAxNDQsIDI4LCAxMDcsIAotICAgIDIxOCwgMTQ1LCAyOCwgMTA3LCAyMTgsIDE1MCwgMjgsIDEwNywgMjI5LCAyNDQsIDI4LCAxMDcsIDIxMiwgMTA0LCAyOCwgCi0gICAgMTA3LCAyMTIsIDk0LCAyOCwgMTA3LCAyMTIsIDk3LCAyOCwgMTA3LCAyMTIsIDk5LCAyOCwgMTA3LCAyMTksIDEwNywgMjgsIAotICAgIDEwNywgMjMxLCAxMDEsIDI4LCAxMDcsIDIzMSwgOTQsIDI4LCAxMDcsIDIxMSwgMTU3LCAyOCwgMTA3LCAyMzEsIDEwMiwgCi0gICAgMjgsIDEwNywgMjAzLCAyOSwgMjgsIDEwNywgMjAzLCAyNSwgMjgsIDEwNywgMjAzLCAyNiwgMjgsIDEwNywgMjE4LCAxODgsIAotICAgIDI4LCAxMDcsIDIyOSwgMjQ1LCAyOCwgMTA3LCAyMzYsIDI0OSwgMjgsIDEwNywgMjM2LCAyNDcsIDI4LCAxMDcsIDIzNiwgCi0gICAgMjUwLCAyOCwgMTA3LCAyMzYsIDI0OCwgMjgsIDEwNywgMjAzLCAzNSwgMjgsIDEwNywgMjI5LCA1NSwgMjgsIDEwNywgMjI5LCAKLSAgICA1NCwgMjgsIDEwNywgMjI5LCA1OCwgMjgsIDEwNywgMjI5LCA1NiwgMjgsIDEwNywgMjI5LCA1NywgMjgsIDEwNywgMjExLCAKLSAgICAxNTQsIDMzLCA0LCAxNTIsIDMzLCA0LCAyMzYsIDI2LCAzMywgNCwgMjM3LCAzLCAzMywgNCwgMjM3LCAxNTcsIDMzLCA0LCAKLSAgICAyMzcsIDQ4LCAzMywgNCwgMjM3LCA2NywgMzMsIDQsIDIzNiwgMTM2LCAzMywgNCwgMjM2LCAxMzUsIDMzLCA0LCAyMjgsIAotICAgIDExMywgMzMsIDQsIDIyNiwgMjM5LCAzMywgNCwgMjI3LCAxNDgsIDMzLCA0LCAyMjgsIDExMiwgMzMsIDQsIDIyNywgMjI2LCAKLSAgICAzMywgNCwgMjI3LCAyMzQsIDMzLCA0LCAyMjcsIDQ5LCAzMywgNCwgMjI2LCAyMDcsIDMzLCA0LCAyMzcsIDEyLCAzMywgNCwgCi0gICAgMjM3LCA2LCAzMywgNCwgMjM3LCA4LCAzMywgNCwgMjM3LCAxMSwgMzMsIDQsIDIzNywgOSwgMzMsIDQsIDIzNywgMTAsIDMzLCAKLSAgICA0LCAyMzcsIDcsIDMzLCA0LCAyMzcsIDUsIDMzLCA0LCAxOTIsIDMzLCA0LCAyMjMsIDI0NiwgMzMsIDQsIDIyNCwgMTU1LCAKLSAgICAzMywgNCwgMjI1LCAxNzUsIDMzLCA0LCAyMjUsIDgsIDMzLCA0LCAyMjUsIDIwLCAzMywgNCwgMjI0LCA4MiwgMzMsIDQsIAotICAgIDIyMywgMTgwLCAzMywgNCwgMjEwLCA4MCwgMzMsIDQsIDIxMCwgNzQsIDMzLCA0LCAyMTAsIDc2LCAzMywgNCwgMjEwLCA3OSwgCi0gICAgMzMsIDQsIDIxMCwgNzcsIDMzLCA0LCAyMTAsIDc4LCAzMywgNCwgMjEwLCA3NSwgMzMsIDQsIDIxMCwgNzMsIDMzLCA0LCAKLSAgICAyMTYsIDIyMCwgMzMsIDQsIDIxNSwgMTQ1LCAzMywgNCwgMjE2LCA1NywgMzMsIDQsIDIxNiwgMjE2LCAzMywgNCwgMjE2LCAKLSAgICAxMzUsIDMzLCA0LCAyMTYsIDE1OCwgMzMsIDQsIDIxNSwgMjI3LCAzMywgNCwgMjE1LCAxMTEsIDMzLCA0LCAyMTUsIDM2LCAKLSAgICAzMywgNCwgMjExLCAxMCwgMzMsIDQsIDIxMiwgMTYyLCAzMywgNCwgMjE1LCAzMywgMzMsIDQsIDIxNCwgMTY1LCAzMywgNCwgCi0gICAgMjE0LCAxNzcsIDMzLCA0LCAyMTIsIDEzLCAzMywgNCwgMjEwLCAxNzIsIDMzLCA0LCAyMTMsIDkwLCAzMywgNCwgMjEyLCAKLSAgICAxOTksIDMzLCA0LCAyMTMsIDExLCAzMywgNCwgMjEzLCA4NSwgMzMsIDQsIDIxMywgNDEsIDMzLCA0LCAyMTMsIDQzLCAzMywgCi0gICAgNCwgMjEyLCAyNDIsIDMzLCA0LCAyMTIsIDE4MCwgMzMsIDQsIDIxNywgMTI2LCAzMywgNCwgMjE3LCA2NSwgMzMsIDQsIAotICAgIDIxNywgODgsIDMzLCA0LCAyMTcsIDEyNSwgMzMsIDQsIDIxNywgMTA1LCAzMywgNCwgMjE3LCAxMDYsIDMzLCA0LCAyMTcsIAotICAgIDc3LCAzMywgNCwgMjE3LCA3NiwgMzMsIDQsIDIxNywgMTksIDMzLCA0LCAyMTcsIDE1LCAzMywgNCwgMjE3LCAxOCwgMzMsIAotICAgIDQsIDIxNywgMTYsIDMzLCA0LCAyMTcsIDE3LCAzMywgNCwgMjE3LCAxMDIsIDMzLCA0LCAyMTcsIDk0LCAzMywgNCwgMjE3LCAKLSAgICA5NywgMzMsIDQsIDIxNywgMTAxLCAzMywgNCwgMjE3LCA5OCwgMzMsIDQsIDIxNywgOTksIDMzLCA0LCAyMTcsIDk2LCAzMywgCi0gICAgNCwgMjE3LCA5MywgMzMsIDQsIDIxNywgODksIDMzLCA0LCAyMTcsIDkyLCAzMywgNCwgMjE3LCA5MCwgMzMsIDQsIDIxNywgCi0gICAgOTEsIDMzLCA0LCAyNDksIDMyLCAzMywgNCwgMjQ3LCAxOTMsIDMzLCA0LCAyNDgsIDg2LCAzMywgNCwgMjQ5LCAzMCwgMzMsIAotICAgIDQsIDI0OCwgMTUwLCAzMywgNCwgMjQ4LCAxNjIsIDMzLCA0LCAyNDgsIDIzLCAzMywgNCwgMjQ3LCAxNDIsIDMzLCA0LCAKLSAgICAyMDYsIDg2LCAzMywgNCwgMjA0LCAxNjMsIDMzLCA0LCAyMDUsIDIzMCwgMzMsIDQsIDIwNiwgODUsIDMzLCA0LCAyMDYsIAotICAgIDUwLCAzMywgNCwgMjA2LCA1NSwgMzMsIDQsIDIwNSwgMTg5LCAzMywgNCwgMjA0LCAxNTQsIDMzLCA0LCAyMTAsIDIyLCAzMywgCi0gICAgNCwgMjA3LCAyMDMsIDMzLCA0LCAyMDksIDIsIDMzLCA0LCAyMTAsIDE4LCAzMywgNCwgMjA5LCAxNzYsIDMzLCA0LCAyMDksIAotICAgIDE4NywgMzMsIDQsIDEzNSwgMzMsIDQsIDIwNywgMTYwLCAzMywgNCwgMjQ3LCA5MiwgMzMsIDQsIDI0NSwgMTEwLCAzMywgNCwgCi0gICAgMjQ2LCA3OSwgMzMsIDQsIDI0NywgOTEsIDMzLCA0LCAyNDYsIDIzMCwgMzMsIDQsIDI0NiwgMjM4LCAzMywgNCwgMjQ1LCAKLSAgICAyNTQsIDMzLCA0LCAyNDUsIDc0LCAzMywgNCwgMjAzLCAxODIsIDMzLCA0LCAyMDMsIDE1MiwgMzMsIDQsIDIwMywgMTcwLCAKLSAgICAzMywgNCwgMjAzLCAxODEsIDMzLCA0LCAyMDMsIDE3NSwgMzMsIDQsIDIwMywgMTc2LCAzMywgNCwgMjAzLCAxNjAsIDMzLCAKLSAgICA0LCAyMDMsIDE1OSwgMzMsIDQsIDIwMywgMTQ2LCAzMywgNCwgMjAzLCAxNDIsIDMzLCA0LCAyMDMsIDE0NSwgMzMsIDQsIAotICAgIDIwMywgMTQzLCAzMywgNCwgMjAzLCAxNDQsIDMzLCA0LCAyMDEsIDIwMSwgMzMsIDQsIDIyMSwgODQsIDMzLCA0LCAyMjIsIAotICAgIDEwMCwgMzMsIDQsIDIyMywgMTA2LCAzMywgNCwgMjIyLCAyMzUsIDMzLCA0LCAyMjIsIDI0MCwgMzMsIDQsIDIyMSwgMTkxLCAKLSAgICAzMywgNCwgMjIxLCAyMCwgMzMsIDQsIDIyMSwgMTEsIDMzLCA0LCAyMjAsIDIyNiwgMzMsIDQsIDIyMCwgMjQ4LCAzMywgNCwgCi0gICAgMjIxLCAxMCwgMzMsIDQsIDIyMSwgMCwgMzMsIDQsIDIyMSwgMSwgMzMsIDQsIDIyMCwgMjMzLCAzMywgNCwgMjIwLCAyMTYsIAotICAgIDMzLCA0LCAyMzgsIDQ1LCA2MywgMzMsIDQsIDIzOCwgNDUsIDY4LCAzMywgNCwgMjM4LCA0NSwgNzUsIDMzLCA0LCAyMzgsIAotICAgIDQ1LCAyNTIsIDI1LCAzMywgNCwgMjM4LCA0NSwgMjQxLCAxNjEsIDMzLCA0LCAyMzgsIDQ1LCA3NCwgMzMsIDQsIDIzOCwgCi0gICAgNDUsIDc4LCAzMywgNCwgMjM4LCA0NSwgMjA0LCAxMTEsIDMzLCA0LCAxNzMsIDMzLCA0LCAyMjgsIDIwOSwgMzMsIDQsIAotICAgIDIyOSwgMTAwLCAzMywgNCwgMjMwLCA0MSwgMzMsIDQsIDIyOSwgMTk4LCAzMywgNCwgMjI5LCAyMDEsIDMzLCA0LCAyMjksIAotICAgIDI2LCAzMywgNCwgMjI5LCAyNSwgMzMsIDQsIDIyOCwgMTY3LCAzMywgNCwgMjI4LCAxNjAsIDMzLCA0LCAyMjgsIDE2NiwgCi0gICAgMzMsIDQsIDIyOCwgMTYxLCAzMywgNCwgMjI4LCAxNjIsIDMzLCA0LCAyMjgsIDE1MywgMzMsIDQsIDIyOCwgMTQ3LCAzMywgCi0gICAgNCwgMjI4LCAxNDksIDMzLCA0LCAyMjgsIDE1MiwgMzMsIDQsIDIyOCwgMTUwLCAzMywgNCwgMjI4LCAxNTEsIDMzLCA0LCAKLSAgICAyMjgsIDE0OCwgMzMsIDQsIDIyOCwgMTQ2LCAzMywgNCwgMjI4LCAxNDIsIDMzLCA0LCAyMjgsIDE0NSwgMzMsIDQsIDIyOCwgCi0gICAgMTQzLCAzMywgNCwgMjI4LCAxNDQsIDMzLCA0LCAyMDQsIDExMSwgMzMsIDQsIDIwMywgMjE3LCAzMywgNCwgMjA0LCAzMCwgCi0gICAgMzMsIDQsIDIwNCwgMTEwLCAzMywgNCwgMjA0LCA1NSwgMzMsIDQsIDIwNCwgNjIsIDMzLCA0LCAyMDQsIDAsIDMzLCA0LCAKLSAgICAyMDMsIDI1NSwgMzMsIDQsIDIxOCwgMTk5LCA2MywgMzMsIDQsIDIxOCwgMTk5LCA2OCwgMzMsIDQsIDIxOCwgMTk5LCA3NSwgCi0gICAgMzMsIDQsIDIxOCwgMTk5LCAyNTIsIDI1LCAzMywgNCwgMjE4LCAxOTksIDI0MSwgMTYxLCAzMywgNCwgMjE4LCAxOTksIDc0LCAKLSAgICAzMywgNCwgMjE4LCAxOTksIDc4LCAzMywgNCwgMjAyLCAxMTYsIDMzLCA0LCAyMDIsIDYsIDMzLCA0LCAyMDIsIDM5LCAzMywgCi0gICAgNCwgMjAyLCAxMTQsIDMzLCA0LCAyMDIsIDkwLCAzMywgNCwgMjAyLCA5MiwgMzMsIDQsIDIwMiwgMTcsIDMzLCA0LCAyMDEsIAotICAgIDI0OSwgMzMsIDQsIDIwMiwgODAsIDMzLCA0LCAyMDIsIDU3LCAzMywgNCwgMjAyLCA2NiwgMzMsIDQsIDIwMiwgNzksIDMzLCAKLSAgICA0LCAyMDIsIDcwLCAzMywgNCwgMjAyLCA3MSwgMzMsIDQsIDIwMiwgNjMsIDMzLCA0LCAyMDIsIDQ4LCAzMywgNCwgMTk4LCAKLSAgICAzMywgNCwgMjAyLCAyMTMsIDMzLCA0LCAyMDMsIDExLCAzMywgNCwgMjAzLCAxMTAsIDMzLCA0LCAyMDMsIDQ5LCAzMywgNCwgCi0gICAgMjAzLCA1MiwgMzMsIDQsIDIwMiwgMjQ3LCAzMywgNCwgMjAyLCAyMzgsIDMzLCA0LCAyNDQsIDIxMiwgMzMsIDQsIDI0MiwgCi0gICAgNDIsIDMzLCA0LCAyNDMsIDIzMywgMzMsIDQsIDI0NCwgMjExLCAzMywgNCwgMjQ0LCA2MSwgMzMsIDQsIDI0NCwgNzUsIDMzLCAKLSAgICA0LCAyNDMsIDExMywgMzMsIDQsIDI0MiwgMTAsIDMzLCA0LCAyNDQsIDEyMCwgMzMsIDQsIDI0NCwgODUsIDMzLCA0LCAyNDQsIAotICAgIDk3LCAzMywgNCwgMjQ0LCAxMTksIDMzLCA0LCAyNDQsIDEwNywgMzMsIDQsIDI0NCwgMTA4LCAzMywgNCwgMjQ0LCA5MCwgCi0gICAgMzMsIDQsIDI0NCwgNzYsIDMzLCA0LCAyMzAsIDE4MSwgMzMsIDQsIDIzMCwgODIsIDMzLCA0LCAyMzAsIDE0MSwgMzMsIDQsIAotICAgIDIzMCwgMTgwLCAzMywgNCwgMjMwLCAxNTksIDMzLCA0LCAyMzAsIDE2MSwgMzMsIDQsIDIzMCwgMTAxLCAzMywgNCwgMjMwLCAKLSAgICA2MiwgMzMsIDQsIDIzOSwgOCwgMzMsIDQsIDIzNywgMjMwLCAzMywgNCwgMjM4LCA4MSwgMzMsIDQsIDIzOSwgNSwgMzMsIDQsIAotICAgIDIzOCwgMTgyLCAzMywgNCwgMjM4LCAxOTAsIDMzLCA0LCAyMzgsIDM5LCAzMywgNCwgMjM4LCAzOCwgMzMsIDQsIDIzNywgCi0gICAgMTkwLCAzMywgNCwgMjM3LCAxODYsIDMzLCA0LCAyMzcsIDE4OSwgMzMsIDQsIDIzNywgMTg3LCAzMywgNCwgMjM3LCAxODgsIAotICAgIDMzLCA0LCAyMzgsIDE1NSwgMzMsIDQsIDIzOCwgMTM1LCAzMywgNCwgMjM4LCAxNDUsIDMzLCA0LCAyMzgsIDE1NCwgMzMsIAotICAgIDQsIDIzOCwgMTQ5LCAzMywgNCwgMjM4LCAxNTAsIDMzLCA0LCAyMzgsIDEzOSwgMzMsIDQsIDIzOCwgMTI0LCAzMywgNCwgCi0gICAgMjA5LCAxMDgsIDMzLCA0LCAyMDksIDIyLCAzMywgNCwgMjA5LCA3MCwgMzMsIDQsIDIwOSwgMTA3LCAzMywgNCwgMjA5LCAKLSAgICA5MCwgMzMsIDQsIDIwOSwgOTIsIDMzLCA0LCAyMDksIDQ3LCAzMywgNCwgMjA5LCAxMywgMzMsIDQsIDI0NiwgMTk5LCAzMywgCi0gICAgNCwgMjQ2LCA5OCwgMzMsIDQsIDI0NiwgMTQyLCAzMywgNCwgMjQ2LCAxOTgsIDMzLCA0LCAyNDYsIDE2NiwgMzMsIDQsIAotICAgIDI0NiwgMTcwLCAzMywgNCwgMjQ2LCAxMTYsIDMzLCA0LCAyNDYsIDg3LCAzMywgNCwgMjE4LCAyMDgsIDMzLCA0LCAyMTgsIAotICAgIDE3MywgMzMsIDQsIDIxOCwgMTkyLCAzMywgNCwgMjE4LCAyMDcsIDMzLCA0LCAyMTgsIDE5NCwgMzMsIDQsIDIxOCwgMTk1LCAKLSAgICAzMywgNCwgMjE4LCAxODAsIDMzLCA0LCAyMTgsIDE2OSwgMzMsIDQsIDIwOCwgMjAsIDMzLCA0LCAyMDcsIDI0OSwgMzMsIDQsIAotICAgIDIwNywgMjU1LCAzMywgNCwgMjA4LCAxOSwgMzMsIDQsIDIwOCwgMTMsIDMzLCA0LCAyMDgsIDE0LCAzMywgNCwgMjA3LCAKLSAgICAyNTMsIDMzLCA0LCAyMDcsIDI0NywgMzMsIDQsIDIwNywgMTA2LCAzMywgNCwgMjA3LCA5OCwgMzMsIDQsIDIwNywgMTAyLCAKLSAgICAzMywgNCwgMjA3LCAxMDUsIDMzLCA0LCAyMDcsIDEwMywgMzMsIDQsIDIwNywgMTA0LCAzMywgNCwgMjA3LCAxMDAsIDMzLCAKLSAgICA0LCAyMDcsIDk5LCAzMywgNCwgMjQwLCAxMDgsIDMzLCA0LCAyMzksIDEwOCwgMzMsIDQsIDI0MCwgMjYsIDMzLCA0LCAyNDAsIAotICAgIDEwNywgMzMsIDQsIDI0MCwgNTMsIDMzLCA0LCAyNDAsIDYwLCAzMywgNCwgMjM5LCAxODYsIDMzLCA0LCAyMzksIDg2LCAzMywgCi0gICAgNCwgMTg1LCAzMywgNCwgMjE3LCAxOTEsIDMzLCA0LCAyMTgsIDE2NywgMzMsIDQsIDIxOSwgMTY4LCAzMywgNCwgMjE5LCAKLSAgICAyMywgMzMsIDQsIDIxOSwgMzQsIDMzLCA0LCAyMTgsIDY5LCAzMywgNCwgMjE3LCAxNTIsIDMzLCA0LCAyMTUsIDEwMSwgMzMsIAotICAgIDQsIDIyMywgMTY5LCAzMywgNCwgMjM5LCA4MCwgMzMsIDM5LCAyMzgsIDE3OSwgMjUsIDIyLCAyMjcsIDE5NiwgODIsIDMzLCAKLSAgICAzOSwgMjIsIDIyNywgMTk2LCA4MiwgMzMsIDM5LCAyMzgsIDE3OSwgODIsIDMzLCAyMTQsIDE2OCwgODIsIDMzLCAyMDMsIAotICAgIDIzNywgMzMsIDIzOSwgMTAyLCAyMTEsIDYxLCAzMywgMjQ1LCAyMzMsIDMzLCAyMTMsIDE0MywgMzMsIDI0NSwgMjQyLCAzMywgCi0gICAgMjE3LCAyNDYsIDI0NSwgMjQyLCAzMywgMjE3LCA0NywgODIsIDMzLCAyMTksIDg5LCAyMTMsIDEzMCwgMzMsIDE3LCAxMDUsIAotICAgIDMzLCAxNywgMTA4LCAzMywgMTcsIDE0NywgMzMsIDE3LCAxNDksIDMzLCAxNywgMTcwLCAzMywgMTcsIDE5NSwgMzMsIDE3LCAKLSAgICAyMTMsIDExMSwgMzMsIDE3LCAxOTksIDMzLCAxNywgMjIyLCA2MywgMzMsIDQyLCAyMDksIDE1MiwgMzMsIDQyLCAyMDcsIAotICAgIDE1MSwgMzMsIDQyLCAyMDksIDUzLCAzMywgNDIsIDIzOSwgMTUzLCAzMywgNDIsIDI0MCwgMTgsIDMzLCA0MiwgMjEyLCA3NCwgCi0gICAgMzMsIDQyLCAyMTMsIDEwNSwgMzMsIDQyLCAyNDEsIDEzNCwgMzMsIDQyLCAyMjIsIDU4LCAzMywgNDIsIDIzNiwgMTEsIDMzLCAKLSAgICA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDMzLCA0LCAyMTQsIDE3MywgMjIzLCAxODAsIDMzLCA0LCAyMjMsIDE3NiwgMzMsIDQsIAotICAgIDIyMywgMTc3LCAzMywgNCwgMjIzLCAxNzgsIDMzLCA0LCAyMTQsIDE3MywgMjQ3LCAxNDIsIDMzLCA0LCAyNDcsIDEzOSwgCi0gICAgMzMsIDQsIDI0NywgMTQwLCAzMywgNCwgMjQ3LCAxNDEsIDMzLCA0LCAyMTQsIDE3MywgMjM5LCA4NiwgMzMsIDQsIDIzOSwgCi0gICAgODIsIDMzLCA0LCAyMzksIDgzLCAzMywgNCwgMjM5LCA4NCwgMzMsIDQsIDIxNCwgMTczLCAyMTcsIDE1MiwgMzMsIDQsIAotICAgIDIxNywgMTQ4LCAzMywgNCwgMjE3LCAxNDksIDMzLCA0LCAyMTcsIDE1MCwgMzMsIDIwOCwgMTYyLCAxMzEsIDIwMiwgMjUwLCAKLSAgICAzMywgMjA4LCAxNjIsIDEzMSwgMjQ0LCAyMiwgMzMsIDIwOCwgMTYyLCAxMzEsIDIxNiwgMiwgMzMsIDIwOCwgMTYyLCAxMzEsIAotICAgIDIxMiwgMjI4LCAyMTYsIDIsIDMzLCAyMDgsIDE2MiwgMTMxLCAyNDMsIDIwNywgMzMsIDIwOCwgMTYyLCAxMzEsIDIyOSwgCi0gICAgMTc5LCAzMywgMjA4LCAxNjIsIDEzMSwgMjQ2LCAxMjQsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMzcsIDAsIDMzLCAyMDgsIAotICAgIDE2MiwgMTMxLCAyNDQsIDIxLCAzMywgMjA4LCAxNjIsIDEzMSwgMjI4LCAxODEsIDkwLCAxLCA2MywgOTAsIDEsIDc0LCA5MCwgCi0gICAgMSwgNzUsIDkwLCAxLCA3OCwgOTAsIDEsIDY4LCA5MCwgMSwgMjA2LCAxNjQsIDkwLCAxLCAyMzksIDgsIDkwLCAxLCAxNzMsIAotICAgIDkwLCAxLCAyMzgsIDE5MCwgOTAsIDEsIDIzOCwgODEsIDkwLCAxLCAyMzgsIDM5LCA5MCwgMSwgMjM3LCAyMzAsIDkwLCAxLCAKLSAgICAyMzcsIDE5MiwgOTAsIDEsIDE1MiwgOTAsIDEsIDIzNywgNjcsIDkwLCAxLCAyMzcsIDMsIDkwLCAxLCAyMzYsIDEzNiwgOTAsIAotICAgIDEsIDIzNiwgMjYsIDkwLCAxLCAyMzUsIDI1NSwgOTAsIDEsIDIyOCwgMTEzLCA5MCwgMSwgMjI3LCAyMzQsIDkwLCAxLCAKLSAgICAyMjcsIDE0OCwgOTAsIDEsIDIyNywgNDksIDkwLCAxLCAyMjYsIDIzOSwgOTAsIDEsIDIyNiwgMjA4LCA5MCwgMSwgMTkyLCAKLSAgICA5MCwgMSwgMjI1LCAyMCwgOTAsIDEsIDIyNCwgMTU1LCA5MCwgMSwgMjI0LCA4MiwgOTAsIDEsIDIyMywgMjQ2LCA5MCwgMSwgCi0gICAgMjAxLCAyMDEsIDkwLCAxLCAyMzYsIDE2MCwgOTAsIDEsIDIyMywgOTMsIDkwLCAxLCAyMjIsIDI0MCwgOTAsIDEsIDIyMiwgCi0gICAgMTAwLCA5MCwgMSwgMjIxLCAxOTEsIDkwLCAxLCAyMjEsIDg0LCA5MCwgMSwgMjIxLCAyMiwgOTAsIDEsIDIxNywgNjQsIDkwLCAKLSAgICAxLCAyMTcsIDUwLCA5MCwgMSwgMjE3LCA0MywgOTAsIDEsIDIxNywgMzQsIDkwLCAxLCAyMTcsIDIzLCA5MCwgMSwgMjE3LCAKLSAgICAyMSwgOTAsIDEsIDIxNSwgMzYsIDkwLCAxLCAxOTQsIDkwLCAxLCAyMTQsIDE3NywgOTAsIDEsIDIxMiwgMTYyLCA5MCwgMSwgCi0gICAgMjEyLCAxMywgOTAsIDEsIDIxMSwgMTAsIDkwLCAxLCAyMTAsIDE3NywgOTAsIDEsIDI0NCwgMjEyLCA5MCwgMSwgMjEwLCAKLSAgICAyMiwgOTAsIDEsIDI0NCwgNzUsIDkwLCAxLCAyMDksIDE4NywgOTAsIDEsIDI0MywgMjMzLCA5MCwgMSwgMjA5LCAyLCA5MCwgCi0gICAgMSwgMjQzLCAxMTMsIDkwLCAxLCAyNDIsIDQyLCA5MCwgMSwgMjQyLCAxMywgOTAsIDEsIDI0MywgMTI0LCA5MCwgMSwgMjA4LCAKLSAgICAxOTAsIDkwLCAxLCAyMDgsIDE4OSwgOTAsIDEsIDIwOCwgMTc4LCA5MCwgMSwgMjA4LCAxNzcsIDkwLCAxLCAyMDgsIDE3NiwgCi0gICAgOTAsIDEsIDIwOCwgMTc1LCA5MCwgMSwgMjA4LCAyMCwgOTAsIDEsIDIwOCwgMTQsIDkwLCAxLCAyMDcsIDI1NSwgOTAsIDEsIAotICAgIDIwNywgMjUzLCA5MCwgMSwgMjA3LCAyNDksIDkwLCAxLCAyMDcsIDI0OCwgOTAsIDEsIDIwNCwgMTExLCA5MCwgMSwgMjA0LCAKLSAgICA2MiwgOTAsIDEsIDIwNCwgMzAsIDkwLCAxLCAyMDQsIDAsIDkwLCAxLCAyMDMsIDIxNywgOTAsIDEsIDIwMywgMjA0LCA5MCwgCi0gICAgMSwgMTk4LCA5MCwgMSwgMjAzLCA1MiwgOTAsIDEsIDIwMywgMTEsIDkwLCAxLCAyMDIsIDI0NywgOTAsIDEsIDIwMiwgMjEzLCAKLSAgICA5MCwgMSwgMjAyLCAxNzcsIDkwLCAxLCAyMjMsIDE4NywgOTAsIDUsIDEsIDIwMywgNTIsIDkwLCA1LCAxLCAyMDMsIDExLCAKLSAgICA5MCwgNSwgMSwgMjAyLCAyNDcsIDkwLCA1LCAxLCAyMDIsIDIxMywgOTAsIDUsIDEsIDIwMiwgMTc3LCA5MCwgNSwgMSwgCi0gICAgMjIzLCAxODcsIDE5LCAyMCwgMjM1LCAyMjAsIDE5LCAyMCwgNzQsIDE5LCAyMCwgMjUxLCAyNDUsIDE5LCAyMCwgNzUsIDE5LCAKLSAgICAyMCwgMjMxLCA4MywgMTksIDIwLCA3OCwgMTksIDIwLCAyMjAsIDE4LCAxOSwgMjAsIDIwMywgMTIzLCAyMjAsIDE4LCAxOSwgCi0gICAgMjAsIDg4LCAyNDEsIDE2MSwgMTksIDIwLCA4OCwgNzUsIDE5LCAyMCwgNjMsIDE5LCAyMCwgMjUyLCAyNSwgMTksIDIwLCAKLSAgICAyMDQsIDYyLCAxOSwgMjAsIDE5NiwgMjA0LCA2MiwgMTksIDIwLCAyMDQsIDMwLCAxOSwgMjAsIDE5NiwgMjA0LCAzMCwgMTksIAotICAgIDIwLCAyMDQsIDE5LCAxOSwgMjAsIDE5NiwgMjA0LCAxOSwgMTksIDIwLCAyMDQsIDAsIDE5LCAyMCwgMTk2LCAyMDQsIDAsIAotICAgIDE5LCAyMCwgMjAzLCAyNDQsIDE5LCAyMCwgMTk2LCAyMDMsIDI0NCwgMTksIDIwLCAyMjMsIDY4LCAyMDMsIDI0NCwgMTksIAotICAgIDIwLCAyMDQsIDExMSwgMTksIDIwLCAxOTYsIDIwNCwgMTExLCAxOSwgMjAsIDIwNCwgMTEwLCAxOSwgMjAsIDE5NiwgMjA0LCAKLSAgICAxMTAsIDE5LCAyMCwgMjIzLCA2OCwgMjA0LCAxMTAsIDE5LCAyMCwgMjUxLCA2NCwgMTksIDIwLCAyMDMsIDEyMywgMjA0LCAKLSAgICAxNDQsIDE5LCAyMCwgMjM4LCA0NSwgMjExLCA2MSwgMTksIDIwLCA0NiwgMTY1LCAxOSwgMjAsIDQ2LCAyMzcsIDI1MywgMTksIAotICAgIDIwLCA0NiwgMjQ3LCAyNDgsIDE2MiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIwOCwgMTQ1LCAxNjIsIDIxNSwgMjUyLCAxOSwgCi0gICAgMjAsIDQ2LCA1MCwgMTYyLCAyMTUsIDI1MiwgMTksIDIwLCA0NiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDUyLCAxNjUsIDE5LCAKLSAgICAyMCwgNDYsIDUyLCAyMTIsIDIyOCwgODAsIDIxMSwgMTksIDE5LCAyMCwgNDYsIDEwMSwgMjQzLCA4NSwgMTksIDIwLCA0NiwgCi0gICAgMjEyLCAyMjgsIDIzNiwgMTA2LCA5NSwgMTksIDIwLCA0NiwgMjE4LCA3NiwgMTksIDIwLCA0NiwgMTIxLCAyMTAsIDMsIDE5LCAKLSAgICAyMCwgMjQxLCA5MiwgMTksIDIwLCAyMzEsIDQ5LCAxOSwgMjAsIDIyMCwgMzEsIDE5LCAyMCwgMjUwLCAyMzEsIDE5LCAyMCwgCi0gICAgMjE5LCAzNCwgMTksIDIwLCAyMTksIDE2NiwgMTksIDIwLCAyMTgsIDE2NywgMTksIDIwLCAyMTgsIDEyOSwgMTksIDIwLCAKLSAgICAyMTgsIDY5LCAxOSwgMjAsIDIxOCwgNDUsIDE5LCAyMCwgMjAzLCAxMjMsIDIxOCwgNDUsIDE5LCAyMCwgODgsIDIzNywgNDgsIAotICAgIDE5LCAyMCwgODgsIDIzNywgMywgMTksIDIwLCAxODUsIDE5LCAyMCwgMjE5LCAxNjgsIDE5LCAyMCwgMjE3LCAxNTAsIDE5LCAKLSAgICAyMCwgMTk2LCAyMTcsIDE1MCwgMTksIDIwLCAyMTcsIDE0OCwgMTksIDIwLCAxOTYsIDIxNywgMTQ4LCAxOSwgMjAsIDIxNywgCi0gICAgMTQ3LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDcsIDE5LCAyMCwgMjE3LCAxNDUsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NSwgMTksIAotICAgIDIwLCAyMTcsIDE0NCwgMTksIDIwLCAxOTYsIDIxNywgMTQ0LCAxOSwgMjAsIDIxNywgMTUyLCAxOSwgMjAsIDE5NiwgMjE3LCAKLSAgICAxNTIsIDE5LCAyMCwgMjE3LCAxNTEsIDE5LCAyMCwgMTk2LCAyMTcsIDE1MSwgMTksIDIwLCAyMDMsIDEyMywgMjE3LCAxNTEsIAotICAgIDE5LCAyMCwgMjE5LCAxODQsIDE5LCAyMCwgMTk2LCAyMTksIDE4NCwgMTksIDIwLCA4OCwgMjM3LCAxNzEsIDE5LCAyMCwgCi0gICAgMjA5LCAxODcsIDE5LCAyMCwgMjEwLCAxNiwgMTksIDIwLCAyMDksIDIsIDE5LCAyMCwgMjA4LCAyNDIsIDE5LCAyMCwgMTM1LCAKLSAgICAxOSwgMjAsIDIwOCwgMTQ4LCAxOSwgMjAsIDIwMywgMTIzLCAyMDgsIDE0OCwgMTksIDIwLCA4OCwgMjQ0LCA2MSwgMTksIAotICAgIDIwLCA4OCwgMjQzLCAyMzMsIDE5LCAyMCwgMjEwLCAyMiwgMTksIDIwLCAyMTAsIDE4LCAxOSwgMjAsIDIwNywgMTU4LCAxOSwgCi0gICAgMjAsIDE5NiwgMjA3LCAxNTgsIDE5LCAyMCwgMjA3LCAxNDAsIDE5LCAyMCwgMTk2LCAyMDcsIDE0MCwgMTksIDIwLCAyMDcsIAotICAgIDEzOSwgMTksIDIwLCAxOTYsIDIwNywgMTM5LCAxOSwgMjAsIDEwOCwgMTksIDIwLCAxOTYsIDEwOCwgMTksIDIwLCAyMDcsIAotICAgIDEzMCwgMTksIDIwLCAxOTYsIDIwNywgMTMwLCAxOSwgMjAsIDIwNywgMTYwLCAxOSwgMjAsIDE5NiwgMjA3LCAxNjAsIDE5LCAKLSAgICAyMCwgMjA3LCAxNTksIDE5LCAyMCwgMTk2LCAyMDcsIDE1OSwgMTksIDIwLCAyMjMsIDY4LCAyMDcsIDE1OSwgMTksIDIwLCAKLSAgICAyMTAsIDY5LCAxOSwgMjAsIDIwNywgMjM2LCAxOSwgMjAsIDIwNywgMjIwLCAxOSwgMjAsIDIwNywgMjE4LCAxOSwgMjAsIAotICAgIDIwNywgMjQxLCAxOSwgMjAsIDIyOSwgMjAxLCAxOSwgMjAsIDIzMCwgMzYsIDE5LCAyMCwgMjI5LCAxMDAsIDE5LCAyMCwgCi0gICAgMjI5LCA4NywgMTksIDIwLCAyMjksIDI2LCAxOSwgMjAsIDIyOSwgNiwgMTksIDIwLCAyMDMsIDEyMywgMjI5LCA2LCAxOSwgCi0gICAgMjAsIDE3MywgMTksIDIwLCAyMzAsIDQxLCAxOSwgMjAsIDIyOCwgMTYyLCAxOSwgMjAsIDE5NiwgMjI4LCAxNjIsIDE5LCAKLSAgICAyMCwgMjI4LCAxNjAsIDE5LCAyMCwgMTk2LCAyMjgsIDE2MCwgMTksIDIwLCAyMjgsIDE1OSwgMTksIDIwLCAxOTYsIDIyOCwgCi0gICAgMTU5LCAxOSwgMjAsIDIyOCwgMTU3LCAxOSwgMjAsIDE5NiwgMjI4LCAxNTcsIDE5LCAyMCwgMjI4LCAxNTYsIDE5LCAyMCwgCi0gICAgMTk2LCAyMjgsIDE1NiwgMTksIDIwLCAyMjgsIDE2NywgMTksIDIwLCAxOTYsIDIyOCwgMTY3LCAxOSwgMjAsIDIyOCwgMTY2LCAKLSAgICAxOSwgMjAsIDE5NiwgMjI4LCAxNjYsIDE5LCAyMCwgMjIzLCA2OCwgMjI4LCAxNjYsIDE5LCAyMCwgMjMwLCA1NCwgMTksIAotICAgIDIwLCAyMjgsIDE2OCwgMTksIDIwLCAyMTEsIDIzNywgMjI5LCAxOTEsIDE5LCAyMCwgMjExLCAyMzcsIDIyOSwgODgsIDE5LCAKLSAgICAyMCwgMjExLCAyMzcsIDIyOSwgMjAsIDE5LCAyMCwgMjExLCAyMzcsIDIzMCwgMjAsIDE5LCAyMCwgMjQ2LCAyMzgsIDE5LCAKLSAgICAyMCwgMjQ3LCA5MCwgMTksIDIwLCAyNDYsIDc5LCAxOSwgMjAsIDI0NiwgNjksIDE5LCAyMCwgMjQ1LCAyNTQsIDE5LCAyMCwgCi0gICAgMjQ1LCAxODAsIDE5LCAyMCwgMjAzLCAxMjMsIDI0NSwgMTgwLCAxOSwgMjAsIDI0NywgOTIsIDE5LCAyMCwgMjQ3LCA5MSwgCi0gICAgMTksIDIwLCAyNDUsIDcyLCAxOSwgMjAsIDE5NiwgMjQ1LCA3MiwgMTksIDIwLCAyNDUsIDcwLCAxOSwgMjAsIDE5NiwgMjQ1LCAKLSAgICA3MCwgMTksIDIwLCAyNDUsIDY5LCAxOSwgMjAsIDE5NiwgMjQ1LCA2OSwgMTksIDIwLCAyNDUsIDY4LCAxOSwgMjAsIDE5NiwgCi0gICAgMjQ1LCA2OCwgMTksIDIwLCAyNDUsIDY3LCAxOSwgMjAsIDE5NiwgMjQ1LCA2NywgMTksIDIwLCAyNDUsIDc0LCAxOSwgMjAsIAotICAgIDE5NiwgMjQ1LCA3NCwgMTksIDIwLCAyNDUsIDczLCAxOSwgMjAsIDE5NiwgMjQ1LCA3MywgMTksIDIwLCAyMjMsIDY4LCAKLSAgICAyNDUsIDczLCAxOSwgMjAsIDI0NywgMTI1LCAxOSwgMjAsIDIxNCwgMjA2LCAyMDksIDExMCwgMTksIDIwLCAyMjUsIDIwLCAKLSAgICAxOSwgMjAsIDIyNSwgMTc0LCAxOSwgMjAsIDIyNCwgMTU1LCAxOSwgMjAsIDIyNCwgMTI1LCAxOSwgMjAsIDIyNCwgODIsIAotICAgIDE5LCAyMCwgMjI0LCAzNSwgMTksIDIwLCAyMDMsIDEyMywgMjI0LCAzNSwgMTksIDIwLCAxOTIsIDE5LCAyMCwgMjI1LCAKLSAgICAxNzUsIDE5LCAyMCwgMjIzLCAxNzgsIDE5LCAyMCwgMTk2LCAyMjMsIDE3OCwgMTksIDIwLCAyMjMsIDE3NiwgMTksIDIwLCAKLSAgICAxOTYsIDIyMywgMTc2LCAxOSwgMjAsIDIyMywgMTc1LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzUsIDE5LCAyMCwgMjIzLCAxNzQsIAotICAgIDE5LCAyMCwgMTk2LCAyMjMsIDE3NCwgMTksIDIwLCAyMjMsIDE3MywgMTksIDIwLCAxOTYsIDIyMywgMTczLCAxOSwgMjAsIAotICAgIDIyMywgMTgwLCAxOSwgMjAsIDE5NiwgMjIzLCAxODAsIDE5LCAyMCwgMjIzLCAxNzksIDE5LCAyMCwgMTk2LCAyMjMsIDE3OSwgCi0gICAgMTksIDIwLCAyMjMsIDY4LCAyMjMsIDE3OSwgMTksIDIwLCAyMjYsIDE4NSwgMTksIDIwLCAxOTYsIDIyNiwgMTg1LCAxOSwgCi0gICAgMjAsIDIyNCwgMTU5LCAxOSwgMjAsIDI1MCwgNDgsIDIyNiwgMTg1LCAxOSwgMjAsIDIxNCwgMjA2LCAyMjYsIDE4NSwgMTksIAotICAgIDIwLCAyMjIsIDI0MCwgMTksIDIwLCAyMjMsIDEwNSwgMTksIDIwLCAyMjIsIDEwMCwgMTksIDIwLCAyMjIsIDc1LCAxOSwgCi0gICAgMjAsIDIyMSwgMTkxLCAxOSwgMjAsIDIyMSwgMTgwLCAxOSwgMjAsIDIwMywgMTIzLCAyMjEsIDE4MCwgMTksIDIwLCAyMDEsIAotICAgIDIwMSwgMTksIDIwLCAyMjMsIDEwNiwgMTksIDIwLCAyMjEsIDE4LCAxOSwgMjAsIDE5NiwgMjIxLCAxOCwgMTksIDIwLCAKLSAgICAyMjEsIDIwLCAxOSwgMjAsIDE5NiwgMjIxLCAyMCwgMTksIDIwLCAyMjEsIDE5LCAxOSwgMjAsIDE5NiwgMjIxLCAxOSwgMTksIAotICAgIDIwLCAyMjMsIDY4LCAyMjEsIDE5LCAxOSwgMjAsIDIyMywgMTYzLCAxOSwgMjAsIDg4LCAyMjIsIDIwNSwgMTksIDIwLCAKLSAgICAyMjIsIDEwNSwgMTksIDIwLCAyMjcsIDIzNCwgMTksIDIwLCAyMjgsIDExMSwgMTksIDIwLCAyMjcsIDE0OCwgMTksIDIwLCAKLSAgICAyMjcsIDEzMCwgMTksIDIwLCAyMjcsIDQ5LCAxOSwgMjAsIDIyNywgMTgsIDE5LCAyMCwgMjAzLCAxMjMsIDIyNywgMTgsIAotICAgIDE5LCAyMCwgMjI4LCAxMTMsIDE5LCAyMCwgMjI4LCAxMTIsIDE5LCAyMCwgMjI2LCAyMDUsIDE5LCAyMCwgMTk2LCAyMjYsIAotICAgIDIwNSwgMTksIDIwLCAyMjYsIDIwNCwgMTksIDIwLCAxOTYsIDIyNiwgMjA0LCAxOSwgMjAsIDIyNiwgMjAzLCAxOSwgMjAsIAotICAgIDE5NiwgMjI2LCAyMDMsIDE5LCAyMCwgMjI2LCAyMDIsIDE5LCAyMCwgMTk2LCAyMjYsIDIwMiwgMTksIDIwLCAyMjYsIDIwMSwgCi0gICAgMTksIDIwLCAxOTYsIDIyNiwgMjAxLCAxOSwgMjAsIDIyNiwgMjA3LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDcsIDE5LCAyMCwgCi0gICAgMjI2LCAyMDYsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNiwgMTksIDIwLCAxNTksIDE5LCAyMCwgMTk2LCAxNTksIDE5LCAyMCwgCi0gICAgMTc0LCAxNTksIDE5LCAyMCwgMjE0LCAxNzcsIDE5LCAyMCwgMjE1LCAzMSwgMTksIDIwLCAyMTIsIDE2MiwgMTksIDIwLCAKLSAgICAyMTIsIDE0MiwgMTksIDIwLCAyMTIsIDEzLCAxOSwgMjAsIDIxMSwgMjUwLCAxOSwgMjAsIDIwMywgMTIzLCAyMTEsIDI1MCwgCi0gICAgMTksIDIwLCAyMTUsIDM2LCAxOSwgMjAsIDIxNSwgMzMsIDE5LCAyMCwgMjEwLCAxNjgsIDE5LCAyMCwgMTk2LCAyMTAsIAotICAgIDE2OCwgMTksIDIwLCAyMTAsIDE2MiwgMTksIDIwLCAxOTYsIDIxMCwgMTYyLCAxOSwgMjAsIDIxMCwgMTYxLCAxOSwgMjAsIAotICAgIDE5NiwgMjEwLCAxNjEsIDE5LCAyMCwgMjEwLCAxNTcsIDE5LCAyMCwgMTk2LCAyMTAsIDE1NywgMTksIDIwLCAyMTAsIDE1NiwgCi0gICAgMTksIDIwLCAxOTYsIDIxMCwgMTU2LCAxOSwgMjAsIDIxMCwgMTcyLCAxOSwgMjAsIDE5NiwgMjEwLCAxNzIsIDE5LCAyMCwgCi0gICAgMjEwLCAxNzEsIDE5LCAyMCwgMTk2LCAyMTAsIDE3MSwgMTksIDIwLCAyMjMsIDY4LCAyMTAsIDE3MSwgMTksIDIwLCAxOTQsIAotICAgIDE5LCAyMCwgMjUwLCA0OCwgMTk0LCAxOSwgMjAsIDIxMCwgMTczLCAxOSwgMjAsIDI0OCwgNDAsIDE5NCwgMTksIDIwLCAKLSAgICAyMjQsIDI4LCAyMTIsIDcwLCAxOSwgMjAsIDIyMywgNjgsIDIxMiwgNjEsIDE5LCAyMCwgMjIzLCA2OCwgMjE1LCA5MiwgMTksIAotICAgIDIwLCAyMjMsIDY4LCAyMTEsIDE3OSwgMTksIDIwLCAyMjMsIDY4LCAyMTEsIDEzLCAxOSwgMjAsIDIyMywgNjgsIDIxMiwgCi0gICAgNjAsIDE5LCAyMCwgMjIzLCA2OCwgMjE0LCAxODAsIDE5LCAyMCwgMjEzLCA0MywgMTksIDIwLCAyMTMsIDExLCAxOSwgMjAsIAotICAgIDIxMywgNiwgMTksIDIwLCAyMTIsIDI0MiwgMTksIDIwLCAyMTIsIDIzNiwgMTksIDIwLCAyMTMsIDkwLCAxOSwgMjAsIDIxMywgCi0gICAgODUsIDE5LCAyMCwgMjEyLCAxNzcsIDE5LCAyMCwgMTk2LCAyMTIsIDE3NywgMTksIDIwLCAyMTIsIDE3NiwgMTksIDIwLCAKLSAgICAxOTYsIDIxMiwgMTc2LCAxOSwgMjAsIDIxMiwgMTc1LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzUsIDE5LCAyMCwgMjEyLCAxNzQsIAotICAgIDE5LCAyMCwgMTk2LCAyMTIsIDE3NCwgMTksIDIwLCAyMTIsIDE3MywgMTksIDIwLCAxOTYsIDIxMiwgMTczLCAxOSwgMjAsIAotICAgIDIxMiwgMTgwLCAxOSwgMjAsIDE5NiwgMjEyLCAxODAsIDE5LCAyMCwgMjEyLCAxNzksIDE5LCAyMCwgMTk2LCAyMTIsIDE3OSwgCi0gICAgMTksIDIwLCAyMTMsIDkyLCAxOSwgMjAsIDIwMywgNTIsIDE5LCAyMCwgMjAzLCAxMDgsIDE5LCAyMCwgMjAzLCAxMSwgMTksIAotICAgIDIwLCAyMDMsIDIsIDE5LCAyMCwgMjAyLCAyNDcsIDE5LCAyMCwgMjAyLCAyMzIsIDE5LCAyMCwgMjAzLCAxMjMsIDIwMiwgCi0gICAgMjMyLCAxOSwgMjAsIDE5OCwgMTksIDIwLCAyMDMsIDExMCwgMTksIDIwLCAyMDIsIDE3NCwgMTksIDIwLCAxOTYsIDIwMiwgCi0gICAgMTc0LCAxOSwgMjAsIDIwMiwgMTczLCAxOSwgMjAsIDE5NiwgMjAyLCAxNzMsIDE5LCAyMCwgMjAyLCAxNzIsIDE5LCAyMCwgCi0gICAgMTk2LCAyMDIsIDE3MiwgMTksIDIwLCAyMDIsIDE3MSwgMTksIDIwLCAxOTYsIDIwMiwgMTcxLCAxOSwgMjAsIDIwMiwgMTcwLCAKLSAgICAxOSwgMjAsIDE5NiwgMjAyLCAxNzAsIDE5LCAyMCwgMjAyLCAxNzYsIDE5LCAyMCwgMTk2LCAyMDIsIDE3NiwgMTksIDIwLCAKLSAgICAyMDIsIDE3NSwgMTksIDIwLCAxOTYsIDIwMiwgMTc1LCAxOSwgMjAsIDIyMywgNjgsIDIwMiwgMTc1LCAxOSwgMjAsIDIwMywgCi0gICAgMTI0LCAxOSwgMjAsIDI0OCwgODQsIDIwMywgMTI0LCAxOSwgMjAsIDE5NiwgMjAzLCAxMjQsIDE5LCAyMCwgMjE0LCAyMDYsIAotICAgIDIwMywgMTEsIDE5LCAyMCwgMjE2LCAxNTgsIDE5LCAyMCwgMjE3LCAwLCAyMTYsIDE1OCwgMTksIDIwLCAxOTYsIDIyNywgCi0gICAgMjM0LCAxOSwgMjAsIDIxNiwgMjE1LCAxOSwgMjAsIDIxNiwgNTcsIDE5LCAyMCwgMjE2LCAzLCAxOSwgMjAsIDIxNSwgMjI3LCAKLSAgICAxOSwgMjAsIDIxNSwgMjA4LCAxOSwgMjAsIDE5NiwgMjI3LCA0OSwgMTksIDIwLCAyMTYsIDIyMCwgMTksIDIwLCAyMTYsIAotICAgIDIxNiwgMTksIDIwLCAxOTYsIDIyOCwgMTEzLCAxOSwgMjAsIDIxNSwgMTEwLCAxOSwgMjAsIDE5NiwgMjE1LCAxMTAsIDE5LCAKLSAgICAyMCwgMTQ2LCAxOSwgMjAsIDE5NiwgMTQ2LCAxOSwgMjAsIDE3NCwgMTQ2LCAxOSwgMjAsIDI0MCwgNjAsIDE5LCAyMCwgCi0gICAgMjQwLCAxMDUsIDE5LCAyMCwgMjQwLCAyNiwgMTksIDIwLCAyNDAsIDEyLCAxOSwgMjAsIDIzOSwgMTg2LCAxOSwgMjAsIAotICAgIDIzOSwgMTc1LCAxOSwgMjAsIDI0MCwgMTA4LCAxOSwgMjAsIDI0MCwgMTA3LCAxOSwgMjAsIDIzOSwgODUsIDE5LCAyMCwgCi0gICAgMTk2LCAyMzksIDg1LCAxOSwgMjAsIDI0MCwgMTc0LCAxOSwgMjAsIDIwOSwgOTIsIDE5LCAyMCwgMjIzLCAxNjEsIDIwOSwgCi0gICAgOTIsIDE5LCAyMCwgMjA5LCA3MCwgMTksIDIwLCAyMjMsIDE2MSwgMjA5LCA3MCwgMTksIDIwLCAyMDksIDY0LCAxOSwgMjAsIAotICAgIDIyMywgMTYxLCAyMDksIDY0LCAxOSwgMjAsIDIwOSwgNDcsIDE5LCAyMCwgMjA5LCA0MiwgMTksIDIwLCAyMDksIDEwOCwgCi0gICAgMTksIDIwLCAyMDksIDEwNywgMTksIDIwLCAyMDksIDEyLCAxOSwgMjAsIDE5NiwgMjA5LCAxMiwgMTksIDIwLCAyMDksIAotICAgIDExMCwgMTksIDIwLCAyMDcsIDIyNywgMTksIDIwLCAyMDcsIDIyNSwgMTksIDIwLCAyMDcsIDIyNCwgMTksIDIwLCAyMDcsIAotICAgIDIyOSwgMTksIDIwLCAyMDcsIDIzMCwgMTksIDIwLCAyMDcsIDEyNCwgMTksIDIwLCAyMDcsIDEyMywgMTksIDIwLCAyMDcsIAotICAgIDEyMiwgMTksIDIwLCAyMDcsIDEyNiwgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDY3LCAxOSwgMjAsIDIyMSwgMzksIDIzNywgMywgCi0gICAgMTksIDIwLCAyMjEsIDM5LCAyMzYsIDIzOSwgMTksIDIwLCAyMjEsIDM5LCAyMzYsIDEzNiwgMTksIDIwLCAyMjEsIDM5LCAKLSAgICAyMzYsIDExNywgMTksIDIwLCAyMjEsIDM5LCAxNTIsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCAxNTcsIDE5LCAyMCwgMjIxLCAKLSAgICAzOSwgMjM3LCAxNzEsIDE5LCAyMCwgMjIxLCAzOCwgMjM3LCAxNzEsIDE5LCAyMCwgMjM2LCAyMjYsIDE5LCAyMCwgMjE3LCAKLSAgICAxMjIsIDE5LCAyMCwgMjE3LCA4OCwgMTksIDIwLCAyMTcsIDgzLCAxOSwgMjAsIDIxNywgNzcsIDE5LCAyMCwgMjE3LCA3MiwgCi0gICAgMTksIDIwLCAyMTcsIDEyNiwgMTksIDIwLCAyMTcsIDEyNSwgMTksIDIwLCAyMTcsIDEzNCwgMTksIDIwLCAyMDgsIDE4NiwgCi0gICAgMTksIDIwLCAyMDgsIDE4NCwgMTksIDIwLCAyMDgsIDE4MywgMTksIDIwLCAyMDgsIDE4NywgMTksIDIwLCAxOTYsIDIxNiwgCi0gICAgMTU4LCAxOSwgMjAsIDE5NiwgMjE2LCA1NywgMTksIDIwLCAxOTYsIDIxNSwgMjI3LCAxOSwgMjAsIDE5NiwgMjE2LCAyMjAsIAotICAgIDE5LCAyMCwgMjIyLCAyMDEsIDE5LCAyMCwgMjIyLCAxNTEsIDE5LCAyMCwgMjIyLCAxNDcsIDE5LCAyMCwgMjIyLCAxMjgsIAotICAgIDE5LCAyMCwgMjIyLCAxMjMsIDE5LCAyMCwgMjIyLCAyMDMsIDE5LCAyMCwgMjIyLCAyMDIsIDE5LCAyMCwgMjIyLCAyMDUsIAotICAgIDE5LCAyMCwgMjIxLCAyMjAsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMywgNDMsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMywgMTEsIAotICAgIDE5LCAyMCwgMjE0LCAyMDYsIDIxMiwgMjQyLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDkwLCAxOSwgMjAsIDIwMywgMjQyLCAKLSAgICAyMDksIDkyLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDcwLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDQ3LCAxOSwgMjAsIAotICAgIDIwMywgMjQyLCAyMDksIDEwOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMTAsIDE5LCAyMCwgMjI3LCAxNTUsIDE5LCAyMCwgCi0gICAgMjI3LCAxNTQsIDE5LCAyMCwgMjI3LCAxNTMsIDE5LCAyMCwgMjI3LCAxNTIsIDE5LCAyMCwgMjI3LCAxNjEsIDE5LCAyMCwgCi0gICAgMjI3LCAxNjAsIDE5LCAyMCwgMjI3LCAxNjIsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgOTIsIDE5LCAyMCwgMjA5LCAxMDksIAotICAgIDIwOSwgNzAsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgNjQsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgNDcsIDE5LCAyMCwgCi0gICAgMjA5LCAxMDksIDIwOSwgNDIsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgMTA4LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIAotICAgIDEwNywgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAxMTAsIDE5LCAyMCwgMjUxLCA1MCwgMjQ5LCAyNTUsIDE5LCAyMCwgMjQ4LCAKLSAgICA0MCwgNzQsIDE5LCAyMCwgMjQ4LCA0MCwgNzUsIDE5LCAyMCwgMjQ4LCA0MCwgNzgsIDE5LCAyMCwgMjQ4LCA0MCwgNjMsIAotICAgIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCA2MiwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDMwLCAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgCi0gICAgMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDExMSwgMTksIDIwLCAyNDgsIDQwLCAyMjIsIDI0MCwgMTksIDIwLCAyNDgsIDQwLCAKLSAgICAyMjIsIDEwMCwgMTksIDIwLCAyNDgsIDQwLCAyMjEsIDE5MSwgMTksIDIwLCAyNDgsIDQwLCAyMDEsIDIwMSwgMTksIDIwLCAKLSAgICAyNDgsIDQwLCAyMjksIDIwMSwgMTksIDIwLCAyNDgsIDQwLCAyMjksIDEwMCwgMTksIDIwLCAyNDgsIDQwLCAyMjksIDI2LCAKLSAgICAxOSwgMjAsIDI0OCwgNDAsIDE3MywgMTksIDIwLCAyMTQsIDIwNiwgMjM3LCA2NywgMTksIDIwLCAyMTQsIDIwNiwgMjM3LCAKLSAgICAzLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzYsIDEzNiwgMTksIDIwLCAyMTQsIDIwNiwgMTUyLCAxOSwgMjAsIDg4LCAyMzgsIAotICAgIDg3LCAxOSwgMjAsIDg4LCAyMzgsIDkxLCAxOSwgMjAsIDg4LCAyMzgsIDEwNSwgMTksIDIwLCA4OCwgMjM4LCAxMDQsIDE5LCAKLSAgICAyMCwgODgsIDIzOCwgOTMsIDE5LCAyMCwgODgsIDIzOCwgMTE5LCAxOSwgMjAsIDg4LCAyMTUsIDE0NSwgMTksIDIwLCA4OCwgCi0gICAgMjE1LCAyMjcsIDE5LCAyMCwgODgsIDIxNiwgMTU4LCAxOSwgMjAsIDg4LCAyMTYsIDEzNSwgMTksIDIwLCA4OCwgMjE2LCAKLSAgICA1NywgMTksIDIwLCA4OCwgMjE2LCAyMjAsIDE5LCAyMCwgODgsIDIwMywgMjE3LCAxOSwgMjAsIDg4LCAyMDQsIDAsIDE5LCAKLSAgICAyMCwgODgsIDIwNCwgNjIsIDE5LCAyMCwgODgsIDIwNCwgNTUsIDE5LCAyMCwgODgsIDIwNCwgMzAsIDE5LCAyMCwgODgsIAotICAgIDIwNCwgMTExLCAxOSwgMjAsIDg4LCAyMzUsIDI0NywgMTksIDIwLCA4OCwgMjM1LCAyNDgsIDE5LCAyMCwgODgsIDIzNSwgCi0gICAgMjUxLCAxOSwgMjAsIDg4LCAyMzUsIDI1MCwgMTksIDIwLCA4OCwgMjM1LCAyNDksIDE5LCAyMCwgODgsIDIzNSwgMjU0LCAKLSAgICAxOSwgMjAsIDg4LCAyMDksIDIyLCAxOSwgMjAsIDg4LCAyMDksIDQ3LCAxOSwgMjAsIDg4LCAyMDksIDkyLCAxOSwgMjAsIAotICAgIDg4LCAyMDksIDkwLCAxOSwgMjAsIDg4LCAyMDksIDcwLCAxOSwgMjAsIDg4LCAyMDksIDEwOCwgMTksIDIwLCA4OCwgMjA3LCAKLSAgICAyMDgsIDE5LCAyMCwgODgsIDIwNywgMjE4LCAxOSwgMjAsIDg4LCAyMDcsIDIzNiwgMTksIDIwLCA4OCwgMjA3LCAyMzUsIAotICAgIDE5LCAyMCwgODgsIDIwNywgMjIwLCAxOSwgMjAsIDg4LCAyMDcsIDI0MSwgMTksIDIwLCA4OCwgMjE3LCAxOTEsIDE5LCAyMCwgCi0gICAgODgsIDIxOCwgNjksIDE5LCAyMCwgODgsIDIxOSwgMzQsIDE5LCAyMCwgODgsIDIxOSwgMjMsIDE5LCAyMCwgODgsIDIxOCwgCi0gICAgMTY3LCAxOSwgMjAsIDg4LCAxODUsIDE5LCAyMCwgODgsIDIxOSwgMTg0LCAxOSwgMjAsIDg4LCAyMzcsIDIzMCwgMTksIDIwLCAKLSAgICA4OCwgMjM4LCAzOSwgMTksIDIwLCA4OCwgMjM4LCAxOTAsIDE5LCAyMCwgODgsIDIzOCwgMTgyLCAxOSwgMjAsIDg4LCAyMzgsIAotICAgIDgxLCAxOSwgMjAsIDg4LCAyMzksIDgsIDE5LCAyMCwgODgsIDIyOSwgMTA5LCAxOSwgMjAsIDg4LCAyMjksIDExNSwgMTksIAotICAgIDIwLCA4OCwgMjI5LCAxMjksIDE5LCAyMCwgODgsIDIyOSwgMTI4LCAxOSwgMjAsIDg4LCAyMjksIDEyMiwgMTksIDIwLCA4OCwgCi0gICAgMjI5LCAxNDQsIDE5LCAyMCwgODgsIDIyOSwgNDIsIDE5LCAyMCwgODgsIDIyOSwgNDMsIDE5LCAyMCwgODgsIDIyOSwgNDYsIAotICAgIDE5LCAyMCwgODgsIDIyOSwgNDUsIDE5LCAyMCwgODgsIDIyOSwgNDQsIDE5LCAyMCwgODgsIDIyOSwgNDcsIDE5LCAyMCwgCi0gICAgODgsIDIyOSwgNDgsIDE5LCAyMCwgODgsIDIyMSwgODQsIDE5LCAyMCwgODgsIDIyMSwgMTkxLCAxOSwgMjAsIDg4LCAyMjIsIAotICAgIDI0MCwgMTksIDIwLCA4OCwgMjIyLCAyMzUsIDE5LCAyMCwgODgsIDIyMiwgMTAwLCAxOSwgMjAsIDg4LCAyMDEsIDIwMSwgCi0gICAgMTksIDIwLCA4OCwgMjIzLCAyNDYsIDE5LCAyMCwgODgsIDIyNCwgODIsIDE5LCAyMCwgODgsIDIyNSwgMjAsIDE5LCAyMCwgCi0gICAgODgsIDIyNSwgOCwgMTksIDIwLCA4OCwgMjI0LCAxNTUsIDE5LCAyMCwgODgsIDE5MiwgMTksIDIwLCA4OCwgMjAyLCAyMTMsIAotICAgIDE5LCAyMCwgODgsIDIwMiwgMjQ3LCAxOSwgMjAsIDg4LCAyMDMsIDUyLCAxOSwgMjAsIDg4LCAyMDMsIDQ5LCAxOSwgMjAsIAotICAgIDg4LCAyMDMsIDExLCAxOSwgMjAsIDg4LCAxOTgsIDE5LCAyMCwgODgsIDIzMCwgODIsIDE5LCAyMCwgMjE0LCAyMDYsIDIzMCwgCi0gICAgODIsIDE5LCAyMCwgODgsIDIzMCwgMTAxLCAxOSwgMjAsIDg4LCAyMzAsIDE2MSwgMTksIDIwLCA4OCwgMjMwLCAxNTksIDE5LCAKLSAgICAyMCwgODgsIDIzMCwgMTQxLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIDE0MSwgMTksIDIwLCA4OCwgMjMwLCAxODEsIDE5LCAKLSAgICAyMCwgODgsIDIzMCwgMTE0LCAxOSwgMjAsIDg4LCAyMzAsIDExOCwgMTksIDIwLCA4OCwgMjMwLCAxMjgsIDE5LCAyMCwgODgsIAotICAgIDIzMCwgMTI3LCAxOSwgMjAsIDg4LCAyMzAsIDEyNiwgMTksIDIwLCA4OCwgMjMwLCAxMjksIDE5LCAyMCwgODgsIDIyNiwgCi0gICAgMjM5LCAxOSwgMjAsIDg4LCAyMjcsIDQ5LCAxOSwgMjAsIDg4LCAyMjcsIDIzNCwgMTksIDIwLCA4OCwgMjI3LCAyMjYsIDE5LCAKLSAgICAyMCwgODgsIDIyNywgMTQ4LCAxOSwgMjAsIDg4LCAyMjgsIDExMywgMTksIDIwLCA4OCwgMjQzLCAxMTcsIDE5LCAyMCwgODgsIAotICAgIDI0MywgMTE4LCAxOSwgMjAsIDg4LCAyNDMsIDEyMywgMTksIDIwLCA4OCwgMjQzLCAxMjIsIDE5LCAyMCwgODgsIDI0MywgCi0gICAgMTE5LCAxOSwgMjAsIDg4LCAyNDMsIDEyNCwgMTksIDIwLCA4OCwgMjI3LCAxNTEsIDE5LCAyMCwgODgsIDIyNywgMTUzLCAKLSAgICAxOSwgMjAsIDg4LCAyMjcsIDE1NywgMTksIDIwLCA4OCwgMjI3LCAxNTYsIDE5LCAyMCwgODgsIDIyNywgMTU1LCAxOSwgMjAsIAotICAgIDg4LCAyMjcsIDE2MSwgMTksIDIwLCA4OCwgMjA4LCAxODEsIDE5LCAyMCwgODgsIDIwOCwgMTgzLCAxOSwgMjAsIDg4LCAKLSAgICAyMDgsIDE4NiwgMTksIDIwLCA4OCwgMjA4LCAxODUsIDE5LCAyMCwgODgsIDIwOCwgMTg0LCAxOSwgMjAsIDg4LCAyMDgsIAotICAgIDE4NywgMTksIDIwLCA4OCwgMjA4LCAxNzYsIDE5LCAyMCwgODgsIDIwOCwgMTc3LCAxOSwgMjAsIDg4LCAyMDgsIDE4OSwgCi0gICAgMTksIDIwLCA4OCwgMjA4LCAxODgsIDE5LCAyMCwgODgsIDIwOCwgMTc4LCAxOSwgMjAsIDg4LCAyMDgsIDE5MCwgMTksIDIwLCAKLSAgICA4OCwgMjAyLCA2LCAxOSwgMjAsIDg4LCAyMDIsIDE3LCAxOSwgMjAsIDg4LCAyMDIsIDkyLCAxOSwgMjAsIDg4LCAyMDIsIAotICAgIDkwLCAxOSwgMjAsIDg4LCAyMDIsIDM5LCAxOSwgMjAsIDg4LCAyMDIsIDExNiwgMTksIDIwLCA4OCwgMjAyLCAxNTksIDE5LCAKLSAgICAyMCwgODgsIDgxLCAyMDIsIDE1OSwgMTksIDIwLCA4OCwgMjQxLCAyNDIsIDE5LCAyMCwgODgsIDI0MSwgMjQzLCAxOSwgMjAsIAotICAgIDg4LCAyNDEsIDI1MiwgMTksIDIwLCA4OCwgMjQxLCAyNTEsIDE5LCAyMCwgODgsIDI0MSwgMjQ2LCAxOSwgMjAsIDg4LCAKLSAgICAyNDEsIDI1NSwgMTksIDIwLCA4OCwgMjExLCAxMCwgMTksIDIwLCA4OCwgMjEyLCAxMywgMTksIDIwLCA4OCwgMjE0LCAxNzcsIAotICAgIDE5LCAyMCwgODgsIDIxNCwgMTY1LCAxOSwgMjAsIDg4LCAyMTIsIDE2MiwgMTksIDIwLCA4OCwgMjE1LCAzNiwgMTksIDIwLCAKLSAgICA4OCwgMjEyLCAxOTksIDE5LCAyMCwgODgsIDIxMiwgMjQyLCAxOSwgMjAsIDg4LCAyMTMsIDQzLCAxOSwgMjAsIDg4LCAyMTMsIAotICAgIDQxLCAxOSwgMjAsIDg4LCAyMTMsIDExLCAxOSwgMjAsIDg4LCAyMTMsIDkwLCAxOSwgMjAsIDg4LCAyMTMsIDkyLCAxOSwgCi0gICAgMjAsIDg4LCAyMDcsIDI0OSwgMTksIDIwLCA4OCwgMjA3LCAyNTMsIDE5LCAyMCwgODgsIDIwOCwgMTQsIDE5LCAyMCwgODgsIAotICAgIDIwOCwgMTMsIDE5LCAyMCwgODgsIDIwNywgMjU1LCAxOSwgMjAsIDg4LCAyMDgsIDIwLCAxOSwgMjAsIDg4LCAyNDYsIDk4LCAKLSAgICAxOSwgMjAsIDg4LCAyNDYsIDExNiwgMTksIDIwLCA4OCwgMjQ2LCAxNzAsIDE5LCAyMCwgODgsIDI0NiwgMTY2LCAxOSwgMjAsIAotICAgIDg4LCAyNDYsIDE0MiwgMTksIDIwLCA4OCwgMjQ2LCAxOTksIDE5LCAyMCwgODgsIDIwNywgMjExLCAxOSwgMjAsIDg4LCAKLSAgICAyMDcsIDIxMiwgMTksIDIwLCA4OCwgMjA3LCAyMTUsIDE5LCAyMCwgODgsIDIwNywgMjE0LCAxOSwgMjAsIDg4LCAyMDcsIAotICAgIDIxMywgMTksIDIwLCA4OCwgMjA3LCAyMTYsIDE5LCAyMCwgMjQ2LCAxNDMsIDU0LCAxOSwgMjAsIDIzOSwgMTAyLCAyMTEsIAotICAgIDYxLCAxOSwgMjAsIDIxNywgMTE4LCAxOSwgMjAsIDIyMiwgMTk5LCAxOSwgMjAsIDIyMSwgMjE3LCAxOSwgMjAsIDIyMSwgCi0gICAgMjE2LCAxOSwgMjAsIDIyMSwgMjE1LCAxOSwgMjAsIDIyMSwgMjE0LCAxOSwgMjAsIDIyMSwgMjE5LCAxOSwgMjAsIDIyMSwgCi0gICAgMjE4LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDEwLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDksIDE5LCAyMCwgMjAzLCAKLSAgICAyNDIsIDIwOSwgOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA3LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDYsIDE5LCAyMCwgCi0gICAgMjAzLCAyNDIsIDIwOSwgMTMsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTIsIDE5LCAyMCwgMjAzLCAyNDIsIDQ2LCAyMDksIAotICAgIDExMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDE0NCwgMjIwLCA2NCwgMjExLCAyMjksIDgyLCAyMjAsIDY0LCAxLCAyNDgsIAotICAgIDEzMiwgMjIwLCA2NCwgMSwgMjI2LCAyMjUsIDIyMCwgNjQsIDEsIDI0MCwgNTcsIDIyMCwgNjQsIDEsIDIxNSwgMTYsIDIyMCwgCi0gICAgNjQsIDEsIDIyMiwgNTYsIDIyMCwgNjQsIDEsIDIwNywgMzYsIDIyMCwgNjQsIDEsIDI0NCwgMTg2LCAyMjAsIDY0LCAxLCAKLSAgICAyMDgsIDIxNCwgMjIwLCA2NCwgMSwgMjQ1LCAyNDUsIDIyMCwgNjQsIDEsIDI0NiwgMjI1LCAyMjAsIDY0LCAxLCAyMjMsIAotICAgIDIzMywgMjIwLCA2NCwgMSwgMjM4LCAyMCwgMjIwLCA2NCwgMSwgMjIyLCAxODksIDIyMCwgNjQsIDEsIDIxMSwgNTQsIDIyMCwgCi0gICAgNjQsIDEsIDIxNSwgMTM4LCAyMjAsIDY0LCAxLCAyNTEsIDYxLCAyMjAsIDY0LCAxLCAyMjAsIDIyLCAyMjAsIDY0LCAxLCAKLSAgICAyMDYsIDIxMCwgMjIwLCA2NCwgMSwgMjQxLCAxODcsIDIyMCwgNjQsIDEsIDIzMCwgMjMzLCAyMjAsIDY0LCAxLCAyNDEsIAotICAgIDE4OCwgMjIwLCA2NCwgMSwgMjE5LCAyNDQsIDIyMCwgNjQsIDEsIDIwNywgMTUsIDIyMCwgNjQsIDEsIDIzMSwgODksIDIyMCwgCi0gICAgNjQsIDEsIDI0MSwgMTg1LCAyMjAsIDY0LCAxLCAyMTksIDEzLCAyMjAsIDY0LCAyNDAsIDU2LCA4MiwgMjIwLCA2NCwgMjE2LCAKLSAgICA3MywgMjQwLCA1NiwgODIsIDE5NywgMSwgMjQwLCA0NiwgMjQwLCAzOCwgMjQwLCA2MSwgMjQwLCAxNzQsIDE5NywgMSwgCi0gICAgMjA2LCAxNjQsIDE5NywgMSwgMjA2LCAxOTUsIDIwNiwgMjExLCA2OCwgMTk3LCAxLCAyMDIsIDIxNiwgMTk3LCAxLCAyMDMsIAotICAgIDEyNCwgMTk3LCAxLCAyMDQsIDE0NCwgMTk3LCAxLCAyMDksIDE1LCAyMDksIDE0LCAyMDksIDQwLCAxOTcsIDEsIDI0MCwgCi0gICAgMjQzLCAxOTcsIDEsIDI1MCwgMTk5LCA2MywgMTk3LCAxLCAyMTksIDIyOCwgNzgsIDE5NywgMSwgMjUxLCAxNDIsIDYzLCAKLSAgICAxOTcsIDEsIDI1MSwgOTMsIDE5NywgMSwgMjI3LCAyNCwgNzgsIDE5NywgMSwgMjEyLCAyMjEsIDc4LCAxOTcsIDEsIDc4LCAKLSAgICAxOTcsIDEsIDIyMCwgNzMsIDE5NywgMSwgMjIwLCAzMSwgMTk3LCAxLCAyMTYsIDE5NSwgMjE2LCAyMDgsIDIxNiwgMTIwLCAKLSAgICAxNDYsIDE5NywgMSwgMjI5LCAyMTYsIDE5NywgMSwgMjQ2LCAyMjEsIDE5NywgMSwgMjI5LCAyMTcsIDIzMCwgNTQsIDE5NywgCi0gICAgMSwgMjM5LCA3NSwgMTk3LCAxLCAyNDEsIDc4LCAxOTcsIDEsIDIzOCwgMTg1LCAyMzcsIDE3NywgMjM5LCA3NSwgMTk3LCAxLCAKLSAgICAyMzgsIDIyNCwgMTk3LCAxLCAyMDMsIDIwOSwgMjAzLCAyMDAsIDIwNCwgMTQ0LCAxOTcsIDEsIDIzNywgMTQ5LCAyMzcsIAotICAgIDE3MSwgMTk3LCAxLCAyMzcsIDE1MywgMjM3LCAxNzEsIDE5NywgMSwgMjI3LCAyNiwgMjM3LCAxNzEsIDE5NywgMSwgMjEyLCAKLSAgICAyMjQsIDIzNywgMTcxLCAxOTcsIDEsIDIyMywgNjMsIDIyMSwgMiwgMjIzLCA2NCwgMjIzLCAxNjMsIDE5NywgMSwgMjEyLCAKLSAgICAyMjIsIDIyMywgMTYzLCAxOTcsIDEsIDI0MiwgODAsIDE5NywgMSwgMjMwLCAyMTIsIDIzMCwgMjE2LCAyMzAsIDIwMywgNzUsIAotICAgIDE5NywgMSwgNzQsIDE5NywgMSwgMjMwLCAxNTIsIDIzMCwgMTg0LCAxOTcsIDEsIDIzOCwgMTY5LCAxOTcsIDEsIDIyNywgCi0gICAgMjcsIDI1MSwgMTA5LCAxOTcsIDEsIDIxMiwgMjI2LCA2MywgMTk3LCAxLCAyMzAsIDE5NSwgMjQxLCA1MSwgMTk3LCAxLCAKLSAgICAyMTgsIDIyNiwgMjE4LCAyNTEsIDIxOSwgMTg0LCAxOTcsIDEsIDI1MSwgMjMsIDI0MSwgNDksIDE5NywgMSwgMjExLCAyMzQsIAotICAgIDE5NCwgMTk3LCAxLCAyMTIsIDE0NiwgMjI3LCAyMywgMTk0LCAxOTcsIDEsIDIxMiwgMjIwLCAxOTQsIDE5NywgMSwgMjQ3LCAKLSAgICAxMjUsIDE5NywgMSwgMjAyLCAxNTksIDE5NywgMSwgMjA4LCAxOTUsIDIwOCwgMjA3LCAyMDcsIDEwOCwgMjEwLCA2OSwgCi0gICAgMTk3LCAxLCAyMTIsIDIxOSwgMjEwLCA2OSwgMTk3LCAxLCAyNDUsIDUxLCAxOTcsIDEsIDI0OCwgMTExLCAyNDgsIDExNCwgCi0gICAgMjQ4LCA0NiwgMjQ5LCAyNTUsIDE5NywgMSwgMjEyLCAyMjUsIDI0OSwgMjU1LCAxOTcsIDEsIDI0MiwgNzksIDE5NywgMSwgCi0gICAgMjIwLCAyLCAxOTcsIDEsIDI0MSwgMTQ2LCAyNDEsIDE0OCwgNzQsIDE5NywgMSwgMjI1LCAxMTMsIDIyNSwgMTIzLCAyMjYsIAotICAgIDE4NSwgMTk3LCAxLCAyMjcsIDI1LCAyMjYsIDE4NSwgMTk3LCAxLCAyMTIsIDIyMywgMjI2LCAxODUsIDE5NywgMSwgMjI3LCAKLSAgICAyNDksIDIyOCwgOTEsIDIyNywgMzQsIDE1OSwgMTk3LCAxLCAyNDIsIDgxLCAxOTcsIDEsIDIzMSwgMjMsIDE5NywgMSwgCi0gICAgMjMxLCAyNCwgMTk3LCAxLCAyNDQsIDIwMCwgMjQ0LCAyMDYsIDI0NSwgNTEsIDE5NywgMSwgMjE5LCAyMjIsIDI0MCwgMjQyLCAKLSAgICA3OCwgMTk3LCAxLCAyNDEsIDE4MywgMTk3LCAxLCAyMzAsIDIzMiwgMTk3LCAxLCAyNDUsIDcxLCAxOTcsIDEsIDI0NywgNzUsIAotICAgIDE5NywgMSwgMjQ2LCAyMzcsIDE5NywgMSwgMjExLCA5OSwgMTk3LCAxLCAyMjcsIDIyLCAxOTcsIDEsIDIxMiwgMjE4LCAKLSAgICAxOTcsIDEsIDIzNSwgMTYxLCAxOTcsIDEsIDIxNywgMTM0LCAxOTcsIDEsIDIwMywgMTk2LCAxOTcsIDIxMiwgMTIwLCAyMTcsIAotICAgIDE3OCwgMTk3LCAyMjMsIDIyNiwgMjE3LCAxNzgsIDE5NywgMjQ1LCAxMzEsIDIxNywgMTc4LCAxOTcsIDI1MCwgMTA4LCA5NywgCi0gICAgMTk3LCAyMDcsIDE2MiwgOTcsIDE5NywgMjQ4LCAxMzAsIDk3LCAxOTcsIDEsIDIzMCwgNTQsIDE5NywgMSwgMjEzLCA5MiwgCi0gICAgMTk3LCAxLCAyMjAsIDE4LCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyMTksIDIyNywgMTk3LCAxLCAyMzksIDEzMSwgCi0gICAgMjQ3LCAyMCwgMjMwLCAyMTUsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDI0MSwgMTQ3LCAxOTcsIDEsIDIzOSwgMTMxLCAKLSAgICAyNDcsIDIwLCAyNTEsIDE0MSwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjUxLCA5MywgMjA5LCAyNTQsIDEsIDYzLCAKLSAgICAyMDksIDI1NCwgMSwgNzUsIDIwOSwgMjU0LCAxLCA2OCwgMjA5LCAyNTQsIDEsIDE3MywgMjA5LCAyNTQsIDEsIDIzOSwgOCwgCi0gICAgMjA5LCAyNTQsIDEsIDIyMiwgMjAzLCAyMDksIDI1NCwgMSwgMjEwLCAyMiwgMjA5LCAyNTQsIDEsIDI0NCwgMjEyLCAyMDksIAotICAgIDI1NCwgMSwgMjAxLCAyMDEsIDIwOSwgMjU0LCAxLCAxODUsIDIwOSwgMjU0LCAxLCAyNDksIDMyLCAyMDksIDI1NCwgMSwgCi0gICAgMTkyLCAyMDksIDI1NCwgMSwgMTk4LCAyMDksIDI1NCwgMSwgMjI4LCAxMTMsIDIwOSwgMjU0LCAxLCAyMDQsIDExMSwgMjA5LCAKLSAgICAyNTQsIDEsIDIxNSwgMzYsIDIwOSwgMjU0LCAxLCAxNTIsIDIwOSwgMjU0LCAyMiwgMiwgNzUsIDIwOSwgMjU0LCAyMiwgMiwgCi0gICAgNjgsIDIwOSwgMjU0LCAyLCAyMDUsIDIwNCwgMjM3LCA5NiwgMSwgNjMsIDIzNywgOTYsIDEsIDc1LCAyMzcsIDk2LCAxLCAKLSAgICA2OCwgMjM3LCA5NiwgMSwgMTczLCAyMzcsIDk2LCAxLCAyMzksIDgsIDIzNywgOTYsIDEsIDIyMiwgMjAzLCAyMzcsIDk2LCAKLSAgICAxLCAyMTAsIDIyLCAyMzcsIDk2LCAxLCAyNDQsIDIxMiwgMjM3LCA5NiwgMSwgMjAxLCAyMDEsIDIzNywgOTYsIDEsIDE4NSwgCi0gICAgMjM3LCA5NiwgMSwgMjQ5LCAzMiwgMjM3LCA5NiwgMSwgMTkyLCAyMzcsIDk2LCAxLCAxOTgsIDIzNywgOTYsIDEsIDIxNiwgCi0gICAgMjIwLCAyMzcsIDk2LCAxLCAyMjgsIDExMywgMjM3LCA5NiwgMSwgMjA0LCAxMTEsIDIzNywgOTYsIDEsIDIxNSwgMzYsIAotICAgIDIzNywgOTYsIDEsIDE1MiwgMjM3LCA5NiwgMjIsIDIsIDc1LCAyMzcsIDk2LCAyMiwgMiwgNjgsIDIzNywgOTYsIDIsIDIxOSwgCi0gICAgMTI0LCAyMTgsIDE4NSwgMjEyLCAxMjAsIDIxNywgMTc4LCAyMTgsIDE4NSwgNTIsIDIxNywgMTc4LCAyNDcsIDE4NSwgMSwgCi0gICAgNjMsIDI0NywgMTg1LCAxLCA3NSwgMjQ3LCAxODUsIDEsIDY4LCAyNDcsIDE4NSwgMSwgMTczLCAyNDcsIDE4NSwgMSwgMjM5LCAKLSAgICA4LCAyNDcsIDE4NSwgMSwgMjIyLCAyMDMsIDI0NywgMTg1LCAxLCAyMTAsIDIyLCAyNDcsIDE4NSwgMSwgMjQ0LCAyMTIsIAotICAgIDI0NywgMTg1LCAxLCAyMDEsIDIwMSwgMjQ3LCAxODUsIDEsIDE4NSwgMjQ3LCAxODUsIDEsIDI0OSwgMzIsIDI0NywgMTg1LCAKLSAgICAxLCAxOTIsIDI0NywgMTg1LCAxLCAxOTgsIDI0NywgMTg1LCAxLCAyMTYsIDIyMCwgMjQ3LCAxODUsIDEsIDIyOCwgMTEzLCAKLSAgICAyNDcsIDE4NSwgMSwgMjA0LCAxMTEsIDI0NywgMTg1LCAxLCAyMTUsIDM2LCAyNDcsIDE4NSwgMSwgMTUyLCAyNDcsIDE4NSwgCi0gICAgMjIsIDIsIDc1LCAyNDcsIDE4NSwgMjIsIDIsIDY4LCAyMDksIDI1MywgMSwgNjMsIDIwOSwgMjUzLCAxLCA3NSwgMjA5LCAKLSAgICAyNTMsIDEsIDY4LCAyMDksIDI1MywgMSwgMTczLCAyMDksIDI1MywgMSwgMjM5LCA4LCAyMDksIDI1MywgMSwgMjIyLCAyMDMsIAotICAgIDIwOSwgMjUzLCAxLCAyMTAsIDIyLCAyMDksIDI1MywgMSwgMjQ0LCAyMTIsIDIwOSwgMjUzLCAxLCAyMDEsIDIwMSwgMjA5LCAKLSAgICAyNTMsIDEsIDE4NSwgMjA5LCAyNTMsIDEsIDI0OSwgMzIsIDIwOSwgMjUzLCAxLCAxOTIsIDIwOSwgMjUzLCAxLCAxOTgsIAotICAgIDIwOSwgMjUzLCAxLCAyMjgsIDExMywgMjA5LCAyNTMsIDEsIDIwNCwgMTExLCAyMDksIDI1MywgMSwgMjE1LCAzNiwgMjA5LCAKLSAgICAyNTMsIDIyLCAyLCA3NSwgMjA5LCAyNTMsIDIyLCAyLCA2OCwgODUsIDEsIDE3MywgODUsIDEsIDIyOSwgMTQ0LCA4NSwgMSwgCi0gICAgMjI5LCAyNiwgODUsIDEsIDIyOSwgMTE1LCA4NSwgMSwgMjIyLCAxMjgsIDg1LCAxLCAyNDcsIDkyLCA4NSwgMSwgMjQ2LCAKLSAgICAxOTksIDg1LCAxLCAyNDUsIDI1NCwgODUsIDEsIDI0NiwgMTE2LCA4NSwgMSwgMjIwLCAyMzMsIDg1LCAxLCAyNDQsIDIxMiwgCi0gICAgODUsIDEsIDIwNywgMjI5LCA4NSwgMSwgMjQzLCAxMTMsIDg1LCAxLCAyMDcsIDIyNCwgODUsIDEsIDIyMSwgMTk3LCA4NSwgCi0gICAgMSwgMjEwLCAyMiwgODUsIDEsIDIwOSwgMTA4LCA4NSwgMSwgMTM1LCA4NSwgMSwgMjA5LCA0NywgODUsIDEsIDIyMSwgMTkxLCAKLSAgICA4NSwgMSwgMjQ5LCAzMiwgODUsIDEsIDIxOCwgMjA4LCA4NSwgMSwgMjE4LCA2OSwgODUsIDEsIDIxOCwgMTgwLCA4NSwgMSwgCi0gICAgMjI0LCA4MiwgODUsIDEsIDIwMiwgMjQ3LCA4NSwgMSwgMjE1LCAyMjcsIDg1LCAxLCAyMjcsIDQ5LCA4NSwgMSwgMjA1LCAKLSAgICAxODksIDg1LCAxLCAyMTMsIDkwLCA4NSwgMSwgMjExLCAxMjQsIDg1LCAxLCAyMTUsIDM2LCA4NSwgMSwgMTUyLCA4NSwgMSwgCi0gICAgMjI4LCAxMTMsIDg1LCAxLCAyMTcsIDEyNiwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDExMiwgODUsIDIzMSwgMzYsIDIyLCAKLSAgICAyMTcsIDEyNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDg4LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgODMsIDg1LCAyMzEsIAotICAgIDM2LCAyMiwgMjE3LCA2NSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDM1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMjMsIDg1LCAKLSAgICAyMzEsIDM2LCAyMiwgMjE3LCAyMiwgODUsIDIzMSwgMzYsIDIyLCAyMTUsIDEwMiwgODUsIDIzMSwgMzYsIDIyLCAyMTUsIAotICAgIDk1LCA4NSwgMjMxLCAzNiwgMjIsIDIyNiwgMTk5LCA4NSwgMjMxLCAzNiwgMjIsIDIyNiwgMTg4LCA4NSwgMjMxLCAzNiwgCi0gICAgMjIsIDIxNywgMTA2LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMTE4LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgNzMsIDIwNywgCi0gICAgMTIxLCAxMDUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA3MywgMjA3LCAxMjEsIDEwOCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIAotICAgIDEwOCwgODUsIDIyLCAyMzEsIDIxLCAyNTAsIDE0OCwgODUsIDIyLCAyMzEsIDIxLCAyNTIsIDI1LCA4NSwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDg1LCAyMiwgMiwgNzUsIDg1LCAyMiwgMiwgMjMxLCA4MywgODUsIDIyLCAyLCAyMDMsIDEyNCwgODUsIDIyLCAyLCAKLSAgICAyMDIsIDE2OSwgODUsIDIyLCAyLCA2OCwgODUsIDIyLCAyLCAyMDYsIDE3OCwgODUsIDIyLCAyLCAyMDcsIDM5LCA4NSwgMjIsIAotICAgIDIsIDIyMCwgNzMsIDg1LCAyMiwgMiwgMTk4LCA4NSwgMjIsIDIsIDIzMSwgMTEwLCA4NSwgMjIsIDIsIDc0LCA4NSwgMjIsIAotICAgIDIsIDI1MSwgMTA5LCA4NSwgMjIsIDIsIDI1MSwgNjQsIDg1LCAyMiwgMiwgMjIwLCAxOCwgODUsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICA4NSwgMiwgMjIyLCA3MywgODUsIDIsIDIxNiwgMTU2LCA4NSwgMiwgMjAyLCAxODAsIDg1LCAyLCAyMjMsIDE5MCwgODUsIDIsIAotICAgIDIwOCwgNzMsIDg1LCAyLCAyNDgsIDIzMywgODUsIDIsIDIxNSwgMjIyLCA4NSwgMiwgMjA4LCAxNzEsIDg1LCAyLCAyMzAsIAotICAgIDExLCA4NSwgMiwgMjUxLCA2NiwgODUsIDIsIDIxNCwgMjQ0LCAyMTQsIDIzNywgODUsIDIsIDIwNSwgMjAxLCA4NSwgMiwgCi0gICAgMjQ1LCAyNDgsIDg1LCAyLCAyNDgsIDIwNSwgODUsIDIsIDIyOSwgMTM2LCA4NSwgMiwgMjQ4LCAyMjgsIDg1LCAyLCAyNDcsIAotICAgIDY0LCAyMTgsIDEzMCwgMjI4LCAxNzMsIDg1LCAyLCAyMjcsIDIwMywgMjA4LCAxNDgsIDg1LCAyLCAyNDgsIDEwMCwgODUsIAotICAgIDIsIDIxOCwgMTgyLCAyMjMsIDI0MywgODUsIDIsIDIyOSwgNCwgODUsIDI0NSwgOTIsIDE2LCAyMTYsIDQ5LCA4NSwgMiwgCi0gICAgMjUwLCAxNiwgODUsIDIsIDI1MCwgMzcsIDg1LCAxNywgMjAyLCA4NCwgODUsIDE3LCAxMDUsIDg1LCAxNywgMTA4LCA4NSwgCi0gICAgMTcsIDE0NywgODUsIDE3LCAxNDksIDg1LCAxNywgMTcwLCA4NSwgMTcsIDE5NSwgODUsIDE3LCAyMTMsIDExMSwgODUsIDE3LCAKLSAgICAxOTksIDg1LCAxNywgMjIyLCA2MywgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjExLCAyNTMsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIyMywgMjEwLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDEyOSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjQ4LCAxMzMsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDI0NywgMTY1LCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyMTgsIDcsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxOCwgMSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjE3LCAyNTUsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxOCwgNSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjE4LCAzLCA5NCwgMjQ4LCA1OSwgOTQsIDI0MSwgMTA4LCA5NCwgMjQ1LCAyMzMsIDk0LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgOTQsIDI0NSwgMjQyLCA5NCwgMjM5LCAxNDcsIDI0MywgODMsIDk0LCAyMDgsIDE3MCwgMjEyLCA3LCAKLSAgICAyMzUsIDIyMCwgOTQsIDIxMiwgMTYwLCA0LCAyNDcsIDI0NCwgMjI1LCA4OCwgOTQsIDIyNSwgMTE5LCAyNDUsIDIzMywgOTQsIAotICAgIDIyNSwgMTE5LCAyMzksIDEwMiwgMjExLCA2MSwgOTQsIDIyMiwgNTQsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAKLSAgICAxMDUsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAxMDgsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAxNDcsIAotICAgIDk0LCAyMiwgMjEzLCAxMzAsIDk0LCAxNywgMjAyLCA4NCwgOTQsIDE3LCAxMDUsIDk0LCAxNywgMTA4LCA5NCwgMTcsIDE0NywgCi0gICAgOTQsIDE3LCAxNDksIDk0LCAxNywgMTcwLCA5NCwgMTcsIDE5NSwgOTQsIDE3LCAyMTMsIDExMSwgOTQsIDE3LCAxOTksIDk0LCAKLSAgICAxNywgMjIyLCA2MywgOTQsIDEsIDYzLCA5NCwgMSwgNzQsIDk0LCAxLCA3NSwgOTQsIDEsIDc4LCA5NCwgMSwgNjgsIDk0LCAKLSAgICAxLCAyMjAsIDczLCA5NCwgMSwgMjA3LCAyNCwgOTQsIDEsIDI0MSwgMTYxLCA5NCwgMSwgMjAxLCAyMDEsIDk0LCAxLCAyNTAsIAotICAgIDIyMywgOTQsIDEsIDI0OSwgMzIsIDk0LCAxLCAxODUsIDk0LCAxLCAyMTcsIDEyNiwgOTQsIDEsIDIzOSwgOCwgOTQsIDEsIAotICAgIDE5MiwgOTQsIDEsIDIyOCwgMTEzLCA5NCwgMSwgMjE1LCAzNiwgOTQsIDEsIDIxMywgOTAsIDk0LCAxLCAyMTAsIDIyLCA5NCwgCi0gICAgMSwgMjQ0LCAyMTIsIDk0LCAxLCAyNDYsIDE5OSwgOTQsIDEsIDIzMCwgMTgxLCA5NCwgMSwgMTk4LCA5NCwgMSwgMjE2LCAKLSAgICAyMjAsIDk0LCAxLCAyMDQsIDExMSwgOTQsIDEsIDI0MCwgMTA4LCA5NCwgMSwgMTczLCA5NCwgMSwgMjI5LCAxNDQsIDk0LCAKLSAgICAxLCAyMDgsIDIwLCA5NCwgMSwgMjAyLCAxMTYsIDk0LCAxLCAyMzcsIDE1NywgOTQsIDEsIDIwMiwgMTAsIDk0LCAxLCAyMjcsIAotICAgIDE2MSwgOTQsIDEsIDIwMiwgNjYsIDk0LCAxLCAyNDYsIDE0MiwgOTQsIDEsIDIwOCwgMTcwLCAxNjMsIDIyLCA1NCwgOTQsIAotICAgIDEsIDIwOCwgMTcwLCA3NCwgOTQsIDEsIDIwOCwgMTcwLCA3NSwgOTQsIDEsIDIwOCwgMTcwLCA3OCwgOTQsIDEsIDIwOCwgCi0gICAgMTcwLCA2OCwgOTQsIDEsIDIwOCwgMTcwLCAyMjAsIDczLCA5NCwgMSwgMjA4LCAxNzAsIDIwNywgMjQsIDk0LCAxLCAyMDgsIAotICAgIDE3MCwgMjUwLCAyMjMsIDk0LCAxLCAyMDgsIDE3MCwgMjQ5LCAzMiwgOTQsIDEsIDIwOCwgMTcwLCAxODUsIDk0LCAxLCAKLSAgICAyMDgsIDE3MCwgMjE3LCAxMjYsIDk0LCAxLCAyMDgsIDE3MCwgMjM5LCA4LCA5NCwgMSwgMjA4LCAxNzAsIDE5MiwgOTQsIDEsIAotICAgIDIwOCwgMTcwLCAyMTAsIDIyLCA5NCwgMSwgMjA4LCAxNzAsIDI0NCwgMjEyLCA5NCwgMSwgMjA4LCAxNzAsIDI0NiwgMTk5LCAKLSAgICA5NCwgMSwgMjA4LCAxNzAsIDIzMCwgMTgxLCA5NCwgMSwgMjA4LCAxNzAsIDIwOCwgMjAsIDk0LCAxLCAyMDgsIDE3MCwgCi0gICAgMTk4LCA5NCwgMSwgMjA4LCAxNzAsIDIwNCwgMTExLCA5NCwgMSwgMjA4LCAxNzAsIDE3MywgOTQsIDEsIDIwOCwgMTcwLCAKLSAgICAyMzksIDUsIDk0LCAxLCAyMDgsIDE3MCwgMjM3LCAxNTcsIDk0LCAxLCAyMDgsIDE3MCwgMjMwLCAxNDAsIDk0LCAxLCAyMDgsIAotICAgIDE3MCwgMjIyLCA5OCwgOTQsIDEsIDIwOCwgMTcwLCAyNDEsIDI1NSwgOTQsIDEsIDIxMiwgMTYwLCA3NCwgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCA3NSwgOTQsIDEsIDIxMiwgMTYwLCAyMzAsIDE5MiwgOTQsIDEsIDIxMiwgMTYwLCAyMDcsIDI0LCA5NCwgMSwgMjEyLCAKLSAgICAxNjAsIDY4LCA5NCwgMSwgMjEyLCAxNjAsIDI1MCwgMjIzLCA5NCwgMSwgMjEyLCAxNjAsIDE3MywgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCAyMzksIDgsIDk0LCAxLCAyMTIsIDE2MCwgMTUyLCA5NCwgMSwgMjEyLCAxNjAsIDE4NSwgOTQsIDEsIDIxMiwgMTYwLCAKLSAgICAyMTMsIDkwLCA5NCwgMSwgMjEyLCAxNjAsIDIxMCwgMjIsIDk0LCAxLCAyMTIsIDE2MCwgMjQ0LCAyMTIsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgMjMwLCAxODEsIDk0LCAxLCAyMTIsIDE2MCwgMjQwLCAxMDgsIDk0LCAxLCAyMTIsIDE2MCwgMjM5LCA1LCA5NCwgMSwgCi0gICAgMjEyLCAxNjAsIDIzNywgMTU3LCA5NCwgMSwgMjEyLCAxNjAsIDIwOCwgMjAsIDk0LCAxLCAyMTIsIDE2MCwgMjAyLCAxMTYsIAotICAgIDk0LCAxLCAyMTIsIDE2MCwgMjE2LCAyMTYsIDk0LCAxLCAyMTIsIDE2MCwgMjQ2LCAxOTksIDk0LCAxLCAyMTIsIDE2MCwgCi0gICAgMjAyLCA4MCwgOTQsIDEsIDIyNSwgMTE5LCA3NSwgOTQsIDEsIDIyNSwgMTE5LCAxNzMsIDk0LCAxLCAyMjUsIDExOSwgMjE2LCAKLSAgICAyMjAsIDk0LCAxLCAyMjUsIDExOSwgMjQwLCAxMDgsIDk0LCAxLCAyMjUsIDExOSwgMjAyLCA4MCwgOTQsIDEsIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyNTAsIDE4MSwgMTA1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNSwgMjAwLCAxMDUsIDk0LCAxLCAKLSAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAxNzQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjA3LCAzNCwgOTQsIDEsIAotICAgIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMzAsIDIzOSwgMjA3LCAzNCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDgsIDI0NSwgCi0gICAgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxMjYsIDI0OCwgMjQ1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDYzLCAKLSAgICA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDc1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDE3MywgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMjIsIDIwMywgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDcsIDkyLCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDIwNywgMjQxLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNywgMjI5LCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDI0NCwgMTIwLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIyMSwgMjI3LCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAyMTIsIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMTg1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIxOCwgMjA4LCA5NCwgMSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDIxMSwgMTY0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIDk0LCAxLCAyNTEsIDIyLCAKLSAgICAyMzgsIDI0NCwgMjAyLCAxMTYsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjUxLCA3MywgOTQsIDEsIDIwOCwgMTcwLCAKLSAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDIwOCwgMTcwLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgCi0gICAgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjM4LCAxMTksIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDIyMiwgMjAzLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDcsIDkyLCA5NCwgMSwgCi0gICAgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMzAsIDE0OSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIAotICAgIDI0NCwgMjA3LCAyNDEsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMTA0LCA5NCwgMSwgMjI1LCAKLSAgICAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIAotICAgIDEsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMSwgMTY0LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyNDUsIDY1LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCA5NCwgCi0gICAgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDExNiwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNjIsIAotICAgIDY4LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDE2MiwgMTk4LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgCi0gICAgMjQ0LCAyNDgsIDk4LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMjAxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMjcsIDE2MSwgMTksIDIwLCAyMTksIDE4OCwgMTksIDIwLCAyNTAsIDgsIDE5LCAyMCwgMjUxLCAKLSAgICAyMzYsIDE5LCAyMCwgMjA0LCA2NSwgMTksIDIwLCAyMTgsIDEzLCAxOSwgMjAsIDIxOSwgNDMsIDE5LCAyMCwgMjE3LCAxNDMsIAotICAgIDE5LCAyMCwgMjA5LCAxOTYsIDE5LCAyMCwgMjI5LCAyMDgsIDE5LCAyMCwgMjI4LCAxNjQsIDE5LCAyMCwgMjI1LCA2MywgCi0gICAgMTksIDIwLCAyMjEsIDE0OSwgMTksIDIwLCAyMjMsIDU5LCAxOSwgMjAsIDIyNywgMjQ0LCAxOSwgMjAsIDIxMSwgMjMyLCAKLSAgICAxOSwgMjAsIDIxNCwgMjA4LCAxOSwgMjAsIDIxMiwgMjA3LCAxOSwgMjAsIDIxMywgNDcsIDE5LCAyMCwgMjEyLCAxNzIsIAotICAgIDE5LCAyMCwgMjAyLCAyMjIsIDE5LCAyMCwgMjAzLCA1OCwgMTksIDIwLCAyMTYsIDE2NSwgMTksIDIwLCAyMjEsIDE3LCAxOSwgCi0gICAgMjAsIDIyMCwgNTMsIDIyMSwgMTcsIDE5LCAyMCwgMjIxLCAxNiwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIDE2LCAxOSwgMjAsIAotICAgIDIyMSwgMTUsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAxNSwgMTksIDIwLCAyMjEsIDE0LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgCi0gICAgMTQsIDE5LCAyMCwgMjE1LCAxMDcsIDE5LCAyMCwgMjE1LCAxMDYsIDE5LCAyMCwgMjE1LCAxMDUsIDE5LCAyMCwgMjE1LCAKLSAgICAxMDQsIDE5LCAyMCwgMjE1LCAxMDMsIDE5LCAyMCwgMjE1LCAxMTEsIDE5LCAyMCwgMjIwLCA1MywgMjE5LCAxODQsIDE5LCAKLSAgICAyMCwgMjIwLCA1MywgMjEwLCA2OSwgMTksIDIwLCAyMjAsIDUzLCAyMzAsIDU0LCAxOSwgMjAsIDIyMCwgNTMsIDI0NywgCi0gICAgMTI1LCAxOSwgMjAsIDIyMCwgNTMsIDIyNiwgMTg1LCAxOSwgMjAsIDIyMCwgNTMsIDIyMywgMTYzLCAxOSwgMjAsIDIyMCwgCi0gICAgNTMsIDE5NCwgMTksIDIwLCAyMjAsIDUzLCAyMTMsIDkyLCAxOSwgMjAsIDI0MSwgMTc0LCAyMDQsIDE0NCwgMTksIDIwLCAKLSAgICAyMDQsIDQ0LCAyMDQsIDE0NCwgMTksIDIwLCA0NiwgNSwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIxNiwgMTg4LCAyNDMsIAotICAgIDg1LCAxOSwgMjAsIDIxNywgMCwgMjE1LCAxMDgsIDE5LCAyMCwgMTk2LCAyMjcsIDE4LCAxOSwgMjAsIDE5NiwgMjI4LCAKLSAgICAxMTIsIDE5LCAyMCwgMjA5LCAxMSwgMTksIDIwLCAyMDksIDEzLCAxOSwgMjAsIDIwNywgMjIxLCAxOSwgMjAsIDIwNywgCi0gICAgMjIzLCAxOSwgMjAsIDIwNywgMjI4LCAxOSwgMjAsIDIwOCwgMTgwLCAxOSwgMjAsIDIwOCwgMTgyLCAxOSwgMjAsIDIxNCwgCi0gICAgMjA2LCAyMTIsIDE3NywgMTksIDIwLCAyMTQsIDIwNiwgMjEyLCAyMzYsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNiwgMTE3LCAKLSAgICAxOSwgMjAsIDg4LCAyMzcsIDE4NSwgMTksIDIwLCA4OCwgMjQ0LCAzNSwgMjM4LCAxODIsIDE5LCAyMCwgODgsIDIzOSwgNSwgCi0gICAgMTksIDIwLCA4OCwgMjM3LCAxOTAsIDE5LCAyMCwgMjE0LCAyMDYsIDIzMCwgNjQsIDE5LCAyMCwgODgsIDIzMCwgNjIsIDE5LCAKLSAgICAyMCwgMjQ4LCAxNTMsIDI0NCwgMzUsIDE1OSwgMTksIDIwLCAyNDgsIDE1MywgMjQ0LCAzNSwgMTQ2LCAxOSwgMjAsIDg4LCAKLSAgICAyNDQsIDMwLCAxOTQsIDIyNywgMTI0LCAyMDUsIDE2OSwgMjI3LCAxNzQsIDIyNywgMTI0LCAxLCAxNzMsIDIyNywgMTI0LCAKLSAgICAxLCAyMjksIDE0NCwgMjI3LCAxMjQsIDEsIDIzOSwgOCwgMjI3LCAxMjQsIDEsIDIzOCwgMTE5LCAyMjcsIDEyNCwgMSwgCi0gICAgMjIyLCAyMDMsIDIyNywgMTI0LCAxLCAyNDcsIDkyLCAyMjcsIDEyNCwgMSwgMjQ2LCAxOTksIDIyNywgMTI0LCAxLCAyMzAsIAotICAgIDE4MSwgMjI3LCAxMjQsIDEsIDIzMCwgMTQ5LCAyMjcsIDEyNCwgMSwgMjAzLCA3OCwgMjI3LCAxMjQsIDEsIDIxMCwgMjIsIAotICAgIDIyNywgMTI0LCAxLCAyMDksIDEwOCwgMjI3LCAxMjQsIDEsIDI0NCwgMjEyLCAyMjcsIDEyNCwgMSwgMjQ0LCAxLCAyMjcsIAotICAgIDEyNCwgMSwgMjAxLCAyMDEsIDIyNywgMTI0LCAxLCAxODUsIDIyNywgMTI0LCAxLCAyMTgsIDIwOCwgMjI3LCAxMjQsIDEsIAotICAgIDI0OSwgMzIsIDIyNywgMTI0LCAxLCAyNDgsIDk4LCAyMjcsIDEyNCwgMSwgMTkyLCAyMjcsIDEyNCwgMSwgMTk4LCAyMjcsIAotICAgIDEyNCwgMSwgMjE2LCAyMjAsIDIyNywgMTI0LCAxLCAyMjgsIDExMywgMjI3LCAxMjQsIDEsIDIwNCwgMTExLCAyMjcsIDEyNCwgCi0gICAgMSwgMjEzLCA5MCwgMjI3LCAxMjQsIDEsIDIxMSwgMTY0LCAyMjcsIDEyNCwgMSwgMjE1LCAzNiwgMjI3LCAxMjQsIDEsIAotICAgIDE1MiwgMjI3LCAxMjQsIDEsIDIzNywgMTgxLCAyMjcsIDEyNCwgMSwgMjA4LCAxMTksIDIyNywgMTI0LCAyMiwgMiwgNjMsIAotICAgIDIyNywgMTI0LCAyMiwgMiwgNzUsIDIyNywgMTI0LCAyMiwgMiwgNjgsIDIyNywgMTI0LCAyMiwgMiwgMjQxLCAxNjEsIDIyNywgCi0gICAgMTI0LCAyMiwgMiwgMjUxLCA2NCwgMjI3LCAxMjQsIDIyLCAyLCAyMjAsIDE4LCAyMjcsIDEyNCwgMjIsIDIsIDI1MCwgMzQsIAotICAgIDIyNywgMTI0LCAyMiwgMiwgNzQsIDIyNywgMTI0LCAyMiwgMiwgNzgsIDIyNywgMTI0LCAyMTAsIDI1NCwgMSwgMTk4LCAKLSAgICAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDIwNCwgMTExLCAyMjcsIAotICAgIDEyNCwgNSwgMSwgMTczLCAyMjcsIDEyNCwgNSwgMSwgMjIyLCAyMDMsIDIyNywgMTI0LCA1LCAxLCAyNTAsIDE4MCwgMjI3LCAKLSAgICAxMjQsIDUsIDEsIDIxMCwgMjIsIDIyNywgMTI0LCA1LCAxLCAyMDEsIDIwMSwgMjI3LCAxMjQsIDUsIDEsIDE4NSwgMjI3LCAKLSAgICAxMjQsIDUsIDEsIDE5MiwgMjI3LCAxMjQsIDUsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgNSwgMSwgMjI4LCAxMTMsIDIyNywgCi0gICAgMTI0LCAyLCAyMjMsIDIzMSwgMjI3LCAxMjQsIDIsIDIyOSwgMTg2LCAyMjcsIDEyNCwgMiwgMjE1LCAzNCwgMjI3LCAxMjQsIAotICAgIDIsIDIyNywgMTgsIDIyNywgMTI0LCAyNDAsIDIxMiwgODIsIDIyNywgMTI0LCAyMTcsIDQ3LCA4MiwgMjI3LCAxMjQsIDE3LCAKLSAgICAyMDIsIDg0LCAyMjcsIDEyNCwgMTcsIDEwNSwgMjI3LCAxMjQsIDE3LCAxMDgsIDIyNywgMTI0LCAxNywgMTQ3LCAyMjcsIAotICAgIDEyNCwgMTcsIDE0OSwgMjI3LCAxMjQsIDE3LCAxNzAsIDIyNywgMTI0LCAxNywgMTk1LCAyMjcsIDEyNCwgMTcsIDIxMywgCi0gICAgMTExLCAyMjcsIDEyNCwgMTcsIDE5OSwgMjI3LCAxMjQsIDE3LCAyMjIsIDYzLCA0NSwgMjI3LCAyMzUsIDEsIDE3MywgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMDMsIDE4MiwgNDUsIDIyNywgMjM1LCAxLCAyMjIsIDIwMywgNDUsIDIyNywgMjM1LCAxLCAyMDgsIAotICAgIDIwLCA0NSwgMjI3LCAyMzUsIDEsIDIxNSwgMzYsIDQ1LCAyMjcsIDIzNSwgMSwgMTk4LCA0NSwgMjI3LCAyMzUsIDEsIDIxMCwgCi0gICAgMjIsIDQ1LCAyMjcsIDIzNSwgMSwgMjA5LCAxMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMjI4LCAxMTMsIDQ1LCAyMjcsIDIzNSwgCi0gICAgMSwgMTg1LCA0NSwgMjI3LCAyMzUsIDEsIDIxOCwgMjA4LCA0NSwgMjI3LCAyMzUsIDEsIDE5MiwgNDUsIDIyNywgMjM1LCAxLCAKLSAgICAyNDAsIDEwOCwgNDUsIDIyNywgMjM1LCAxLCAyMDYsIDg2LCA0NSwgMjI3LCAyMzUsIDEsIDE1MiwgNDUsIDIyNywgMjM1LCAKLSAgICAxLCAyMTcsIDEyNiwgNDUsIDIyNywgMjM1LCAxLCAyMjksIDE0NCwgNDUsIDIyNywgMjM1LCAxLCAyMDgsIDEwLCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIwMSwgMjAxLCA0NSwgMjI3LCAyMzUsIDEsIDYzLCA0NSwgMjI3LCAyMzUsIDEsIDc1LCA0NSwgMjI3LCAKLSAgICAyMzUsIDEsIDI0MSwgMTYxLCA0NSwgMjI3LCAyMzUsIDEsIDI0MSwgMTQ3LCA0NSwgMjI3LCAyMzUsIDEsIDY4LCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIyMCwgMTgsIDQ1LCAyMjcsIDIzNSwgMSwgNzgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA3LCAyNCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCA3NCwgNDUsIDIyNywgMjM1LCAxLCAyNTAsIDMyLCA0NSwgMjI3LCAyMzUsIDEsIDI1MSwgNjQsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgMjA4LCAxNTksIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAKLSAgICAxNTcsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTYsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTUsIDIyMiwgMjE0LCA0NSwgCi0gICAgMjI2LCAyMzMsIDEsIDEzOCwgMjE3LCAxMjYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjE3LCAxMjYsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTczLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwMywgCi0gICAgMTgyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyMiwgMjAzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKLSAgICAxMjQsIDE3MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDMsIDE4MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTI0LCAyMjIsIDIwMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDgsIDIwLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxNSwgMzYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTk4LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwOCwgMjAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjE1LCAKLSAgICAzNiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAxOTgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgCi0gICAgMjEwLCAyMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDksIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTM4LCAyMDEsIDIwMSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTAsIDIyLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwOSwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwMSwgMjAxLCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE4NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTgsIAotICAgIDIwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgCi0gICAgMTg1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxOCwgMjA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKLSAgICAxMjQsIDE5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyNDAsIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTM4LCAyMDYsIDg2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyOCwgMTEzLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDI0MCwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwNiwgODYsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjI4LCAxMTMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgCi0gICAgMTUyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDI0NCwgMjEyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKLSAgICAxMzgsIDI0OSwgMzIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMTUyLCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAxLCAxMjQsIDI0NCwgMjEyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDI0OSwgMzIsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjI4LCAxNjksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjAzLCAxNDksIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjI4LCAxNjksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgCi0gICAgMjAzLCAxNDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjExLCA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKLSAgICAxLCAxMjQsIDIxMSwgOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIyLCAyMTIsIDIxNiwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDI1MiwgMjUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMzEsIDgzLCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNjgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDYsIAotICAgIDE3OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDc0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgCi0gICAgMjUxLCAxMDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA3OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIAotICAgIDIsIDIyMCwgOTcsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDcsIDI0LCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAyMiwgMiwgMjUwLCA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjUxLCAyMzYsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDYsIDE3MCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIxOSwgMTg4LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjIwLCA5NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIAotICAgIDIwNywgMjAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMzAsIDE5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCi0gICAgMSwgNDYsIDIwNiwgMTY0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjIyLCAyMDUsIDIyMiwgMjE0LCA0NSwgCi0gICAgMjI2LCAyMzMsIDEsIDQ2LCAyMjMsIDE2MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIyNiwgMTg1LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjMwLCA1NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDI0NSwgCi0gICAgNTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyNDksIDI1NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTQzLCAKLSAgICAyMjUsIDkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNDMsIDIyNSwgOTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAotICAgIDE3LCAyMDIsIDg0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTA1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgCi0gICAgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTQ3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTQ5LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTcwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTk1LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMjEzLCAxMTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxOTksIDIyMiwgCi0gICAgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAyMjIsIDYzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxMDQsIDE3LCAxMDUsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIsIDIyOCwgOTcsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIsIDIyOCwgOTYsIAotICAgIDg1LCAxNiwgMjE5LCA1MSwgODUsIDE2LCAyMjMsIDIxMSwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDEzMCwgMjI5LCAyMiwgCi0gICAgODUsIDE2LCAyNDgsIDEzNCwgMjI5LCAyMiwgODUsIDE2LCAyNDcsIDE2NiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDgsIAotICAgIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAyLCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMCwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIAotICAgIDYsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCA0LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTYxLCAyMjksIDIyLCA4NSwgMTYsIAotICAgIDI0NCwgMTU3LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU2LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU5LCAyMjksIDIyLCAKLSAgICA4NSwgMTYsIDI0NCwgMTU4LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU1LCAyMjksIDIyLCA4NSwgMTYsIDIwNywgMTY3LCAKLSAgICA4NSwgMTYsIDIyMywgMjExLCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDEzMCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ4LCAxMzQsIAotICAgIDIxNSwgMjIwLCA4NSwgMTYsIDI0NywgMTY2LCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDgsIDIxNSwgMjIwLCA4NSwgMTYsIAotICAgIDIxOCwgMiwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCAwLCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDYsIDIxNSwgMjIwLCA4NSwgCi0gICAgMTYsIDIxOCwgNCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNjEsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU3LCAyMTUsIAotICAgIDIyMCwgODUsIDE2LCAyNDQsIDE1NiwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTksIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgCi0gICAgMTU4LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1NSwgMjE1LCAyMjAsIDI0NywgMTg2LCAxLCAxNzMsIDI0NywgMTg2LCAxLCAKLSAgICAyMzksIDgsIDI0NywgMTg2LCAxLCAyMjIsIDIwMywgMjQ3LCAxODYsIDEsIDIyMiwgMTQ2LCAyNDcsIDE4NiwgMSwgMTg1LCAKLSAgICAyNDcsIDE4NiwgMSwgMjQ5LCAzMiwgMjQ3LCAxODYsIDEsIDE5MiwgMjQ3LCAxODYsIDEsIDIyMywgMjUwLCAyNDcsIDE4NiwgCi0gICAgMSwgMjEwLCAyMiwgMjQ3LCAxODYsIDEsIDI0NCwgMjEyLCAyNDcsIDE4NiwgMSwgMjAxLCAyMDEsIDI0NywgMTg2LCAxLCAKLSAgICAyMjEsIDE0NywgMjQ3LCAxODYsIDEsIDI0NywgOTIsIDI0NywgMTg2LCAxLCAyMzAsIDE4MSwgMjQ3LCAxODYsIDEsIDIyMSwgCi0gICAgMTEsIDI0NywgMTg2LCAxLCAyMjEsIDMsIDI0NywgMTg2LCAxLCAxOTgsIDI0NywgMTg2LCAxLCAyMTYsIDIyMCwgMjQ3LCAKLSAgICAxODYsIDEsIDIyOCwgMTEzLCAyNDcsIDE4NiwgMSwgMjA2LCA4NiwgMjQ3LCAxODYsIDEsIDIxNSwgMzYsIDI0NywgMTg2LCAKLSAgICAxLCA2MywgMjQ3LCAxODYsIDEsIDE1MiwgMjQ3LCAxODYsIDIyLCAyLCA3NSwgMjQ3LCAxODYsIDIyLCAyLCA2OCwgMjQ3LCAKLSAgICAxODYsIDIyLCAyLCA3NCwgMjQ3LCAxODYsIDIyLCAyLCA3OCwgMjQ3LCAxODYsIDIyLCAyLCAyNTEsIDEwOSwgMjQ3LCAxODYsIAotICAgIDIxOSwgMTM2LCAyNDcsIDE4NiwgMjQxLCA4NCwgNzYsIDIxNCwgMTY3LCA0NSwgMTA0LCAxLCAxMzgsIDE3MywgNDUsIDEwNCwgCi0gICAgMSwgMTM4LCAyMjksIDE0NCwgNDUsIDEwNCwgMSwgMTM4LCAyMjgsIDE1MywgNDUsIDEwNCwgMSwgMTI0LCAxNzMsIDQ1LCAKLSAgICAxMDQsIDEsIDEyNCwgMjI4LCAxNTMsIDQ1LCAxMDQsIDEsIDEyNCwgMjI5LCAxNDQsIDQ1LCAxMDQsIDEsIDIyMiwgMjAzLCAKLSAgICA0NSwgMTA0LCAxLCAxMzgsIDI0NywgOTIsIDQ1LCAxMDQsIDEsIDEzOCwgMjQ2LCAxOTksIDQ1LCAxMDQsIDEsIDEyNCwgCi0gICAgMjQ3LCA5MiwgNDUsIDEwNCwgMSwgMTI0LCAyMTUsIDM2LCA0NSwgMTA0LCAxLCAxMjQsIDI0NiwgMTk5LCA0NSwgMTA0LCAxLCAKLSAgICAyMjEsIDExLCA0NSwgMTA0LCAxLCAyMTYsIDE3MSwgNDUsIDEwNCwgMSwgMTM4LCAyMTYsIDE2OSwgNDUsIDEwNCwgMSwgCi0gICAgMjQ0LCAyMTIsIDQ1LCAxMDQsIDEsIDEyNCwgMjE2LCAxNjksIDQ1LCAxMDQsIDEsIDIxNiwgMTgwLCA0NSwgMTA0LCAxLCAKLSAgICAxMzgsIDIxMCwgMjIsIDQ1LCAxMDQsIDEsIDEzOCwgMjA5LCAxMDgsIDQ1LCAxMDQsIDEsIDEyNCwgMjEwLCAyMiwgNDUsIAotICAgIDEwNCwgMSwgMTI0LCAyMDksIDEwOCwgNDUsIDEwNCwgMSwgMjAxLCAyMDEsIDQ1LCAxMDQsIDEsIDI0OSwgMzIsIDQ1LCAKLSAgICAxMDQsIDEsIDEzOCwgMTg1LCA0NSwgMTA0LCAxLCAxMzgsIDIxOCwgMjA4LCA0NSwgMTA0LCAxLCAxMzgsIDI0MCwgMTA4LCAKLSAgICA0NSwgMTA0LCAxLCAxMjQsIDE4NSwgNDUsIDEwNCwgMSwgMTI0LCAyNDAsIDEwOCwgNDUsIDEwNCwgMSwgMTI0LCAyMTgsIAotICAgIDIwOCwgNDUsIDEwNCwgMSwgMTkyLCA0NSwgMTA0LCAxLCAxMjQsIDE5OCwgNDUsIDEwNCwgMSwgMTM4LCAxOTgsIDQ1LCAKLSAgICAxMDQsIDEsIDIxNiwgMjIwLCA0NSwgMTA0LCAxLCAyMTUsIDE0MCwgNDUsIDEwNCwgMSwgMjI4LCAxMTMsIDQ1LCAxMDQsIDEsIAotICAgIDIyNiwgMjMyLCA0NSwgMTA0LCAxLCAyMDQsIDExMSwgNDUsIDEwNCwgMSwgMTM4LCAyMTMsIDkwLCA0NSwgMTA0LCAxLCAKLSAgICAxMzgsIDIxMSwgMTY0LCA0NSwgMTA0LCAxLCAxMzgsIDIxNSwgMzYsIDQ1LCAxMDQsIDEsIDEzOCwgMTUyLCA0NSwgMTA0LCAKLSAgICAxLCAyMjcsIDc3LCA0NSwgMTA0LCAxLCA2MywgNDUsIDEwNCwgMSwgMTI0LCAxNTIsIDQ1LCAxMDQsIDEsIDc1LCA0NSwgCi0gICAgMTA0LCAxLCAyMzEsIDgzLCA0NSwgMTA0LCAxLCA2OCwgNDUsIDEwNCwgMSwgMjA2LCAxNzgsIDQ1LCAxMDQsIDEsIDI0MSwgCi0gICAgMTYxLCA0NSwgMTA0LCAxLCAyMjAsIDE4LCA0NSwgMTA0LCAxLCAyMjgsIDk3LCA0NSwgMTA0LCAxLCAyMzcsIDI0OSwgMjE1LCAKLSAgICAzNiwgNDUsIDEwNCwgMTA5LCAyLCAxNzQsIDIxNiwgMjIwLCA0NSwgMTA0LCAxMDksIDIsIDE3NCwgMjI4LCAxMTMsIDQ1LCAKLSAgICAxMDQsIDEwOSwgMiwgMjI4LCAxMTQsIDIwOSwgMjI4LCAyMjgsIDg2LCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgMjMwLCAxLCAKLSAgICAyMjgsIDg2LCA0NSwgMTA0LCAxMDksIDIsIDQ2LCAyMjIsIDIwMywgNDUsIDEwNCwgMTA5LCAyLCAxMjQsIDE4NSwgNDUsIAotICAgIDEwNCwgMTA5LCAyLCAxMzgsIDIxNiwgMTcwLCAyMTksIDI0NSwgMTI0LCAxODUsIDQ1LCAxMDQsIDEwOSwgMiwgMTkyLCA0NSwgCi0gICAgMTA0LCAxMDksIDIsIDI0OSwgMzIsIDQ1LCAxMDQsIDEwOSwgMiwgMjE1LCAzNiwgNDUsIDEwNCwgMiwgMjE1LCAxMCwgNDUsIAotICAgIDEwNCwgMjIsIDIsIDYzLCA0NSwgMTA0LCAyMiwgMiwgMjI1LCAxNDEsIDIxNCwgMjI1LCA0NSwgMTA0LCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgNDUsIDEwNCwgMjIsIDIsIDIwOSwgMjM0LCAyNTIsIDI1LCA0NSwgMTA0LCAyMiwgMiwgNzUsIDQ1LCAxMDQsIDIyLCAKLSAgICAyLCAyMzEsIDgzLCA0NSwgMTA0LCAyMiwgMiwgMjA3LCAyNCwgNDUsIDEwNCwgMjIsIDIsIDIwNiwgMTc3LCA0NSwgMTA0LCAKLSAgICAyMiwgMiwgNjgsIDQ1LCAxMDQsIDIyLCAyLCAyMDYsIDE3OCwgNDUsIDEwNCwgMjIsIDIsIDc4LCA0NSwgMTA0LCAyMiwgMiwgCi0gICAgMjIwLCA5OCwgNTYsIDQ1LCAxMDQsIDIyLCAyLCAyMTksIDE4OCwgNDUsIDEwNCwgMjIsIDIsIDc0LCA0NSwgMTA0LCAyMiwgCi0gICAgMiwgMjUxLCAxMDksIDQ1LCAxMDQsIDIyLCAyLCAyMjAsIDE4LCA0NSwgMTA0LCAyMiwgMiwgMjUxLCA2NCwgNDUsIDEwNCwgCi0gICAgMjIsIDIsIDEwNCwgMjUxLCA2NCwgNDUsIDEwNCwgMjIsIDIsIDIyMCwgOTgsIDU1LCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgCi0gICAgMjMwLCAwLCA0NSwgMTA0LCAyLCAyMDgsIDE2MCwgNDUsIDEwNCwgMiwgMjA4LCAxNTksIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAKLSAgICAyMDgsIDE1OCwgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIDIwOCwgMTU3LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgMjA4LCAxNTYsIAotICAgIDQ1LCAxMDQsIDIsIDIxNiwgMjIxLCAyMzcsIDE1NiwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIxNCwgMjUzLCA0NSwgMTA0LCAKLSAgICAyLCAyMjksIDEwNCwgMjI5LCAyMzksIDQ1LCAxMDQsIDM5LCAyNDUsIDExMywgMjQzLCA4NSwgNDUsIDEwNCwgMjM2LCAxMDgsIAotICAgIDE3LCAyMDIsIDg0LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDEwNSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxMDgsIDQ1LCAKLSAgICAxMDQsIDIzNiwgMTA4LCAxNywgMTQ3LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDE0OSwgNDUsIDEwNCwgMjM2LCAxMDgsIAotICAgIDE3LCAxNzAsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTk1LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDIxMywgMTExLCA0NSwgCi0gICAgMTA0LCAyMzYsIDEwOCwgMTcsIDE5OSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAyMjIsIDYzLCA0NSwgMTA0LCAxMDQsIDE3LCAKLSAgICAyMDIsIDg0LCA0NSwgMTA0LCAxMDQsIDE3LCAxMDUsIDQ1LCAxMDQsIDEwNCwgMTcsIDEwOCwgNDUsIDEwNCwgMTA0LCAxNywgCi0gICAgMTQ3LCA0NSwgMTA0LCAxMDQsIDE3LCAxNDksIDQ1LCAxMDQsIDEwNCwgMTcsIDE3MCwgNDUsIDEwNCwgMTA0LCAxNywgMTk1LCAKLSAgICA0NSwgMTA0LCAxMDQsIDE3LCAyMTMsIDExMSwgNDUsIDEwNCwgMTA0LCAxNywgMTk5LCA0NSwgMTA0LCAxMDQsIDE3LCAyMjIsIAotICAgIDYzLCA0NSwgMTA0LCAyLCAyMDQsIDI5LCA0NSwgMTA0LCAyLCAyMDQsIDI4LCA0NSwgMTA0LCAyLCAyMTQsIDIxMiwgNDUsIAotICAgIDEwNCwgMiwgMjI5LCAxNzUsIDQ1LCAxMDQsIDIsIDIzNiwgMzYsIDQ1LCAxMDQsIDIsIDI0MywgOTksIDQ1LCAxMDQsIDIsIAotICAgIDIxNiwgNzMsIDIxNSwgMTk4LCAyMTYsIDE4MCwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIwMywgNzksIDQ1LCAxMDQsIDIsIAotICAgIDIzMCwgMzUsIDQ1LCAxMDQsIDIsIDIzMCwgMzQsIDQ1LCAxMDQsIDIsIDIxNCwgMjIwLCA0NSwgMTA0LCAyLCAyMTQsIDIxOSwgCi0gICAgNDUsIDEwNCwgMiwgMjM3LCA5OCwgNDUsIDEwNCwgMiwgMjQ3LCA4OSwgMzksIDI0MiwgNzUsIDI0NiwgNTMsIDI1MSwgMTM4LCAKLSAgICAzOSwgMjQzLCAyMzAsIDM5LCAyMzEsIDI3LCAzOSwgMTgzLCA0NywgMzksIDIwOCwgNzAsIDI0MywgODUsIDM5LCAyMDMsIAotICAgIDE5NSwgNTYsIDM5LCAyMDQsIDIxLCAyMjcsIDExNSwgNTYsIDM5LCAxNzEsIDEzMSwgNTYsIDM5LCA1MiwgMTcxLCAxMzEsIAotICAgIDU2LCAzOSwgMTU3LCAyNDYsIDIxOSwgMjExLCAzMiwgNTYsIDM5LCAyMTEsIDE4LCAyNDYsIDIxOSwgMjExLCAzMiwgNTYsIAotICAgIDM5LCAyMTksIDc4LCA1NSwgMzksIDUyLCAyMTksIDc4LCA1NSwgMzksIDIxOSwgNzgsIDU2LCAzOSwgMjE5LCA3OCwgMjE5LCAKLSAgICAxOTksIDEzMCwgMiwgMjA3LCA5LCAyMTYsIDUxLCAxMzAsIDIsIDIwNywgOSwgMjQ3LCA1NCwgMTMwLCAyLCAyNDYsIDIzNCwgCi0gICAgMTMwLCAyLCAyMTAsIDE5MSwgMTMwLCAyLCAyNDgsIDU2LCAxMzAsIDEsIDI1MSwgNDUsIDEzMCwgMSwgMjUxLCA0NiwgMjA5LCAKLSAgICAxNzgsIDEzMCwgMSwgMjMxLCA3OSwgMTMwLCAxLCAyMzEsIDgwLCAyMDksIDE3OCwgMTMwLCAxLCAyMDcsIDEyLCAxMzAsIDEsIAotICAgIDIwNywgMTMsIDIwOSwgMTc4LCAxMzAsIDEsIDIxNiwgMjIxLCAyMTYsIDEwMywgMTMwLCAxLCAyMTYsIDIyMSwgMjE2LCAKLSAgICAxMDQsIDIwOSwgMTc4LCAxMzAsIDEsIDIyOCwgMTE0LCAyMjcsIDE5NywgMTMwLCAxLCAyMjgsIDExNCwgMjI3LCAxOTgsIAotICAgIDIwOSwgMTc4LCAxMzAsIDEsIDI0MSwgMTI3LCAxMzAsIDEsIDI1MSwgNjIsIDEzMCwgMSwgMjIwLCA0OSwgMTMwLCAxLCAKLSAgICAyMjAsIDUwLCAyMDksIDE3OCwgMTMwLCAxLCAxNzMsIDEzMCwgMSwgMjMwLCA0NCwgMjI1LCAxNDQsIDEzMCwgMSwgMjM5LCAKLSAgICA4LCAxMzAsIDEsIDIzOSwgOSwgMjM4LCAyNSwgMTMwLCAxLCAyMjIsIDIwMywgMTMwLCAxLCAyNDcsIDkyLCAxMzAsIDEsIAotICAgIDI0NywgOTMsIDIyOCwgMTAwLCAxMzAsIDEsIDIzMCwgMTgxLCAxMzAsIDEsIDIzMCwgMTgyLCAyMzAsIDE1MywgMTMwLCAxLCAKLSAgICAyMjEsIDExLCAxMzAsIDEsIDIxMCwgMjMsIDIyNywgMjUzLCAxMzAsIDEsIDIxMCwgMjMsIDIyMywgMjA2LCAyMjUsIDE0NCwgCi0gICAgMTMwLCAxLCAyNDQsIDIxMywgMjIzLCAyMDYsIDI1MSwgNCwgMTMwLCAxLCAyNDQsIDIxMywgMjIzLCAyMDYsIDIyNSwgMTQ0LCAKLSAgICAxMzAsIDEsIDIyMywgMTExLCAyMTYsIDE4MywgMTMwLCAxLCAyMTAsIDIyLCAxMzAsIDEsIDIxMCwgMjMsIDIwOSwgMjAwLCAKLSAgICAxMzAsIDEsIDI0NCwgMjEyLCAxMzAsIDEsIDI0NCwgMjEzLCAyMjUsIDE2MywgMTMwLCAxLCAyMDEsIDIwMSwgMTMwLCAxLCAKLSAgICAxODUsIDEzMCwgMSwgMjE5LCAxNjksIDIyOSwgMjUxLCAxMzAsIDEsIDI0OSwgMzIsIDEzMCwgMSwgMjQ5LCAzMywgMjI5LCAKLSAgICAxODcsIDEzMCwgMSwgMTkyLCAxMzAsIDEsIDE5OCwgMTMwLCAxLCAyMTYsIDIyMCwgMTMwLCAxLCAyMjgsIDExMywgMTMwLCAKLSAgICAxLCAyMDQsIDExMSwgMTMwLCAxLCAyMTUsIDM3LCAyMTUsIDIxLCAxMzAsIDEsIDIxNSwgMzcsIDIxNCwgMjMyLCAxMzAsIDEsIAotICAgIDIxNSwgMzYsIDEzMCwgMSwgMTUyLCAxMzAsIDIsIDIxNiwgOTQsIDEzMCwgMjIsIDIsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAKLSAgICAyMDcsIDgsIDEzMCwgMjIsIDIsIDIwNywgOSwgMjE0LCAyMjgsIDEzMCwgMjIsIDIsIDIxMCwgMjI0LCAxMzAsIDIyLCAyLCAKLSAgICAyMTAsIDIyNSwgMjMxLCA3MSwgMTMwLCAyMiwgMiwgMjE2LCAyMjEsIDIxNiwgMTAzLCAxMzAsIDIyLCAyLCAyMTYsIDIyMSwgCi0gICAgMjE2LCAxMDQsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMjgsIDExNCwgMjI3LCAxOTcsIDEzMCwgMjIsIDIsIDIyOCwgMTE0LCAKLSAgICAyMjcsIDE5OCwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIwOSwgMjM1LCAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjE2LCAxMDMsIAotICAgIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIxNiwgMTA0LCAyMDksIDE3OCwgCi0gICAgMTMwLCAyMiwgMiwgMjE4LCAyNDksIDEzMCwgMjIsIDIsIDIxOCwgMjUwLCAyMDksIDE3OCwgMTMwLCAyNTEsIDExNywgMjUxLCAKLSAgICAxMTYsIDEzMCwgMSwgMjMwLCAyMywgMjE0LCAyMjcsIDEzMCwgMSwgMjI5LCAxMTEsIDIxNCwgMjI3LCAxMzAsIDEsIDIwNywgCi0gICAgMTAxLCAyMTQsIDIyNywgMTMwLCAxLCAyNDEsIDE1NSwgMjE0LCAyMjcsIDEzMCwgMSwgMjA2LCA1NiwgMjE0LCAyMjcsIAotICAgIDEzMCwgMSwgMjAyLCAxMDYsIDIxNCwgMjI3LCAxMzAsIDEsIDI1MCwgNTIsIDIxNCwgMjI3LCAxMzAsIDE3LCAyMDIsIDg0LCAKLSAgICAxMzAsIDE3LCAxMDUsIDEzMCwgMTcsIDEwOCwgMTMwLCAxNywgMTQ3LCAxMzAsIDE3LCAxNDksIDEzMCwgMTcsIDE3MCwgCi0gICAgMTMwLCAxNywgMTk1LCAxMzAsIDE3LCAyMTMsIDExMSwgMTMwLCAxNywgMTk5LCAxMzAsIDE3LCAyMjIsIDYzLCAxMzAsIAotICAgIDIxOSwgMTA0LCAxMzAsIDIxOSwgMTMwLCAxMzAsIDIwNCwgMTQsIDEzMCwgMjQ3LCAzMSwgMjE5LCAxMjMsIDEzMCwgMjQ3LCAKLSAgICAzMSwgMjEyLCAxMzksIDEzMCwgMjQ3LCAzMSwgMjE5LCA3NSwgMTMwLCAyMTksIDEyOSwgMTMwLCAzMSwgMTYsIDI0MywgOTEsIAotICAgIDEzMCwgMzEsIDE2LCAyNDQsIDM0LCAxMzAsIDMxLCAxNiwgMjQyLCAyNywgMTMwLCAzMSwgMTYsIDI0NCwgMTY0LCAxMzAsIAotICAgIDMxLCAxNiwgMjQ0LCAxNjUsIDIxMCwgMTkxLCAxMzAsIDMxLCAxNiwgMjQzLCAxNzUsIDEzMCwgMzEsIDE2LCAyNDQsIDIwNSwgCi0gICAgMTMwLCAzMSwgMTYsIDI0NCwgMTAsIDEzMCwgMzEsIDE2LCAyNDQsIDE4NywgMTMwLCAzMSwgMTYsIDI0NCwgMTY1LCAyMzgsIAotICAgIDE4NCwgMTMwLCAzMSwgMTYsIDM5LCAyMDksIDE3MSwgMTMwLCAzMSwgMTYsIDM5LCAyNDEsIDgyLCAxMzAsIDMxLCAxNiwgCi0gICAgMzksIDIyOSwgMTgyLCAxMzAsIDMxLCAxNiwgMzksIDIyOSwgMTg0LCAxMzAsIDMxLCAxNiwgMzksIDIzMCwgMTU3LCAxMzAsIAotICAgIDMxLCAxNiwgMzksIDIyOSwgMTgzLCAzLCAyMzAsIDE1NywgMTMwLCAzMSwgMTYsIDM5LCAyMjksIDE4NSwgMywgMjMwLCAKLSAgICAxNTcsIDEzMCwgMzEsIDE2LCAzOSwgMjQ4LCAxMTksIDEzMCwgMzEsIDE2LCAzOSwgMjM4LCAyOSwgMTMwLCAzMSwgMTYsIAotICAgIDIxNiwgMTQsIDE3MSwgMjQyLCAzNywgMTMwLCAzMSwgMTYsIDIxNiwgMTQsIDE3MSwgMjQ0LCAyMDMsIDEzMCwgMzEsIDE2LCAKLSAgICAyMTYsIDE0LCAyNDYsIDE2LCAyMDcsIDE5NSwgMTMwLCAzMSwgMTYsIDIxNiwgMTQsIDI0NiwgMTYsIDIwOSwgMjQ0LCAxMzAsIAotICAgIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE5LCAxMTgsIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMTcxLCAyMTcsIDE3NywgCi0gICAgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAyNDYsIDE2LCAyMTgsIDk0LCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDI0NiwgMTYsIAotICAgIDIxOCwgODAsIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMTcxLCAyMTgsIDExOSwgMjEwLCAyMTMsIDIsIDIxOSwgMTAxLCAKLSAgICAyMTAsIDIxMywgMiwgMjE5LCAxMTQsIDIxMCwgMjEzLCAyLCAyMTksIDExMCwgMjEwLCAyMTMsIDEsIDYzLCAyMTAsIDIxMywgCi0gICAgMSwgNzUsIDIxMCwgMjEzLCAxLCA2OCwgMjEwLCAyMTMsIDEsIDI1MSwgMTA5LCAyMTAsIDIxMywgMSwgNzgsIDIxMCwgMjEzLCAKLSAgICAxLCA3NCwgMjEwLCAyMTMsIDEsIDI0MCwgMjM4LCAyMTAsIDIxMywgMSwgMTczLCAyMTAsIDIxMywgMSwgMjE3LCAxMjYsIAotICAgIDIxMCwgMjEzLCAxLCAyMzksIDgsIDIxMCwgMjEzLCAxLCAyMjIsIDIwMywgMjEwLCAyMTMsIDEsIDI0NywgOTIsIDIxMCwgCi0gICAgMjEzLCAxLCAyMzAsIDE4MSwgMjEwLCAyMTMsIDEsIDIwMiwgMTE2LCAyMTAsIDIxMywgMSwgMjIxLCAxMSwgMjEwLCAyMTMsIAotICAgIDEsIDIxMCwgMjIsIDIxMCwgMjEzLCAxLCAyNDQsIDIxMiwgMjEwLCAyMTMsIDEsIDIwMSwgMjAxLCAyMTAsIDIxMywgMSwgCi0gICAgMTg1LCAyMTAsIDIxMywgMSwgMjQwLCAxMDgsIDIxMCwgMjEzLCAxLCAyMDYsIDg2LCAyMTAsIDIxMywgMSwgMjQ5LCAzMiwgCi0gICAgMjEwLCAyMTMsIDEsIDE5MiwgMjEwLCAyMTMsIDEsIDE5OCwgMjEwLCAyMTMsIDEsIDIxNiwgMjIwLCAyMTAsIDIxMywgMSwgCi0gICAgMjI4LCAxMTMsIDIxMCwgMjEzLCAxLCAyMDQsIDExMSwgMjEwLCAyMTMsIDEsIDIxNSwgMzYsIDIxMCwgMjEzLCAxLCAyMDMsIAotICAgIDE4MiwgMjEwLCAyMTMsIDEsIDE1MiwgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAxMjcsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgCi0gICAgMTAzLCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIDEwMCwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDExNywgMjEwLCAyMTMsIDIyLCAKLSAgICAyLCAyMTksIDk5LCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTIxLCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTA5LCAyMTAsIAotICAgIDIxMywgMjIsIDIsIDIxOSwgMTI4LCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTE5LCAyMTAsIDIxMywgMiwgMjE5LCAxMzEsIAotICAgIDIxMCwgMjEzLCAyLCAyMDUsIDIwNCwgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCA2NCwgMTkyLCAyMTAsIDIxMywgMTA5LCAyLCAKLSAgICAyMTksIDY0LCAyMDQsIDExMSwgMjEwLCAyMTMsIDEsIDIyOSwgMTQ0LCAyMTAsIDIxMywgMSwgMjEwLCAxNTAsIDIxMCwgCi0gICAgMjEzLCAxNywgMjAyLCA4NCwgMjEwLCAyMTMsIDE3LCAxMDUsIDIxMCwgMjEzLCAxNywgMTA4LCAyMTAsIDIxMywgMTcsIAotICAgIDE0NywgMjEwLCAyMTMsIDE3LCAxNDksIDIxMCwgMjEzLCAxNywgMTcwLCAyMTAsIDIxMywgMTcsIDE5NSwgMjEwLCAyMTMsIAotICAgIDE3LCAyMTMsIDExMSwgMjEwLCAyMTMsIDE3LCAxOTksIDIxMCwgMjEzLCAxNywgMjIyLCA2MywgMjEwLCAyMTMsIDI1MCwgCi0gICAgMTcsIDIxMCwgMjEzLCAxLCAyMTYsIDc2LCAyMTAsIDIxMywgMSwgMjI3LCAxNzEsIDIxMCwgMjEzLCAxLCAyNDgsIDk4LCAKLSAgICAyMTAsIDIxMywgMSwgNDYsIDIzMCwgNTQsIDIxMCwgMjEzLCAxLCA0NiwgMjI2LCAxODUsIDI0OCwgMjA4LCAxLCA2MywgCi0gICAgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCA2MywgMjQ4LCAyMDgsIDEsIDE1MiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxNTIsIAotICAgIDI0OCwgMjA4LCAxLCAyMjUsIDExNywgMTUyLCAyNDgsIDIwOCwgMSwgMjQ5LCAzMiwgMjQ4LCAyMDgsIDEsIDIyOSwgMjM2LCAKLSAgICAyNDksIDMyLCAyNDgsIDIwOCwgMSwgMTg1LCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDE4NSwgMjQ4LCAyMDgsIDEsIDIwMSwgCi0gICAgMjAxLCAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDIwMSwgMjAxLCAyNDgsIDIwOCwgMSwgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAKLSAgICAyMTIsIDEzMSwgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAyMTksIDE0MywgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAyMzksIDgsIAotICAgIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMjM5LCA4LCAyNDgsIDIwOCwgMSwgMjMwLCAxODEsIDI0OCwgMjA4LCAxLCAyNDQsIAotICAgIDIxMiwgMjQ4LCAyMDgsIDEsIDIxNiwgMjIwLCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDIxNiwgMjIwLCAyNDgsIDIwOCwgMSwgCi0gICAgMTkyLCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDE5MiwgMjQ4LCAyMDgsIDEsIDIxMSwgMjM2LCAyMTAsIDIyLCAyNDgsIAotICAgIDIwOCwgMSwgMjIxLCAxNzAsIDIxMCwgMjIsIDI0OCwgMjA4LCAxLCAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIAotICAgIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAyMjUsIDExNywgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDE5OCwgMjQ4LCAyMDgsIDEsIAotICAgIDIxMiwgMTMxLCAxOTgsIDI0OCwgMjA4LCAxLCAyMjIsIDIwMywgMjQ4LCAyMDgsIDEsIDIyOCwgMTEzLCAyNDgsIDIwOCwgMSwgCi0gICAgMjEyLCAxMzEsIDIyOCwgMTEzLCAyNDgsIDIwOCwgMSwgMjIxLCAxMSwgMjQ4LCAyMDgsIDEsIDI0NywgOTIsIDI0OCwgMjA4LCAKLSAgICAxLCAyMjMsIDI1LCAyNDgsIDIwOCwgMSwgMjI1LCA1NCwgMjQ4LCAyMDgsIDEsIDc1LCAyNDgsIDIwOCwgMSwgNjgsIDI0OCwgCi0gICAgMjA4LCAyLCAyMDgsIDE2NCwgMjQ4LCAyMDgsIDIyLCAyLCA3NCwgMjQ4LCAyMDgsIDIyLCAyLCAyMTksIDE0MywgNzQsIAotICAgIDI0OCwgMjA4LCAyMiwgMiwgMjQxLCAxNjEsIDI0OCwgMjA4LCAyMiwgMiwgNzUsIDI0OCwgMjA4LCAyMiwgMiwgMjI5LCAKLSAgICAyMzYsIDc1LCAyNDgsIDIwOCwgMjIsIDIsIDc4LCAyNDgsIDIwOCwgMjIsIDIsIDIyOSwgMjM2LCA3OCwgMjQ4LCAyMDgsIAotICAgIDIyLCAyLCA2OCwgMjQ4LCAyMDgsIDIyLCAyLCAxMDYsIDM1LCAyMTIsIDEzMSwgMjE1LCAzNiwgMjQ4LCAyMDgsIDEwOSwgMiwgCi0gICAgMjIyLCAyMDUsIDI0OCwgMjA4LCAxMDksIDIsIDIzNywgMTcxLCAyNDgsIDIwOCwgMjE5LCAxMTIsIDI0OCwgMjA4LCAyMTksIAotICAgIDEwOCwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAyMjMsIDExMSwgMjI0LCAyMTgsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgCi0gICAgMjE4LCAxMjIsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjMwLCA3OSwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAyMTksIAotICAgIDExMiwgMjI3LCAxODEsIDEsIDE3MywgMjI3LCAxODEsIDEsIDIyOSwgNDAsIDIyNywgMTgxLCAxLCAyMjksIDE0NCwgMjI3LCAKLSAgICAxODEsIDEsIDIzOSwgOCwgMjI3LCAxODEsIDEsIDIzOCwgNTEsIDIyNywgMTgxLCAxLCAyMjIsIDIwMywgMjI3LCAxODEsIDEsIAotICAgIDI0NywgOTIsIDIyNywgMTgxLCAxLCAyNDYsIDE5OSwgMjI3LCAxODEsIDEsIDIzMCwgMTgxLCAyMjcsIDE4MSwgMSwgMjIxLCAKLSAgICAxMSwgMjI3LCAxODEsIDEsIDIxMCwgMjIsIDIyNywgMTgxLCAxLCAyMDksIDEwOCwgMjI3LCAxODEsIDEsIDI0NCwgMjEyLCAKLSAgICAyMjcsIDE4MSwgMSwgMjAxLCAyMDEsIDIyNywgMTgxLCAxLCAxODUsIDIyNywgMTgxLCAxLCAyMTgsIDk4LCAyMjcsIDE4MSwgCi0gICAgMSwgMjE4LCAyMDgsIDIyNywgMTgxLCAxLCAyNDAsIDEwOCwgMjI3LCAxODEsIDEsIDIzOSwgMjI3LCAyMjcsIDE4MSwgMSwgCi0gICAgMjQ5LCAzMiwgMjI3LCAxODEsIDEsIDI0OCwgNDQsIDIyNywgMTgxLCAxLCAxOTIsIDIyNywgMTgxLCAxLCAyMjQsIDg5LCAKLSAgICAyMjcsIDE4MSwgMSwgMjA4LCAyMCwgMjI3LCAxODEsIDEsIDIwOCwgMTAsIDIyNywgMTgxLCAxLCAyNDEsIDI1NSwgMjI3LCAKLSAgICAxODEsIDEsIDE5OCwgMjI3LCAxODEsIDEsIDIxNiwgMjIwLCAyMjcsIDE4MSwgMSwgMjI4LCAxMTMsIDIyNywgMTgxLCAxLCAKLSAgICAxNTIsIDIyNywgMTgxLCAxLCAyMzYsIDIyNCwgMjI3LCAxODEsIDEsIDIwNiwgODYsIDIyNywgMTgxLCAxLCAyMTUsIDM2LCAKLSAgICAyMjcsIDE4MSwgMSwgMjEzLCA5MCwgMjI3LCAxODEsIDEsIDIwNCwgMTExLCAyMjcsIDE4MSwgMSwgNjMsIDIyNywgMTgxLCAKLSAgICAyMTAsIDI1NCwgMSwgMTk4LCAyMjcsIDE4MSwgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCAyMjcsIDE4MSwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDIyNywgMTgxLCAyMiwgMiwgNzUsIDIyNywgMTgxLCAyMiwgMiwgNzgsIDIyNywgMTgxLCAyMiwgMiwgMjIwLCAxOCwgCi0gICAgMjI3LCAxODEsIDIyLCAyLCA2OCwgMjI3LCAxODEsIDIyLCAyLCAyMDYsIDE3OCwgMjI3LCAxODEsIDIyLCAyLCA3NCwgMjI3LCAKLSAgICAxODEsIDEwOSwgMiwgMjMwLCA1NCwgMjI3LCAxODEsIDEwOSwgMiwgMjI2LCAxODUsIDIyNywgMTgxLCAxMDksIDIsIDE1OSwgCi0gICAgMjI3LCAxODEsIDEwOSwgMiwgMjIzLCAxNjMsIDIyNywgMTgxLCAxMDksIDIsIDIxOSwgMTg0LCAyMjcsIDE4MSwgMTA5LCAyLCAKLSAgICAxNDYsIDIyNywgMTgxLCAxMDksIDIsIDIxMCwgNjksIDIyNywgMTgxLCAxMDksIDIsIDIyMCwgMjQxLCAyMjcsIDE4MSwgCi0gICAgMTA5LCAyLCAyMzAsIDAsIDIyNywgMTgxLCAyLCAyMTYsIDE4MSwgMjI3LCAxODEsIDIsIDIyMSwgNTEsIDIyNywgMTgxLCAKLSAgICAyMTcsIDE3OSwgMjEwLCAyMCwgMjI3LCAxODEsIDIxNywgMTc5LCAyMjAsIDI1MiwgMjA5LCA1LCAyMTAsIDIwLCAyMjcsIAotICAgIDE4MSwgMjE3LCAxNzksIDI0NiwgMjA2LCAyMjcsIDE4MSwgMjE3LCAxNzksIDIwOCwgMiwgMjQ2LCAyMDYsIDIyNywgMTgxLCAKLSAgICAyMTcsIDE3OSwgMjA4LCAxLCAyMjcsIDE4MSwgMTcsIDIwMiwgODQsIDIyNywgMTgxLCAxNywgMTA1LCAyMjcsIDE4MSwgMTcsIAotICAgIDEwOCwgMjI3LCAxODEsIDE3LCAxNDcsIDIyNywgMTgxLCAxNywgMTQ5LCAyMjcsIDE4MSwgMTcsIDE3MCwgMjI3LCAxODEsIAotICAgIDE3LCAxOTUsIDIyNywgMTgxLCAxNywgMjEzLCAxMTEsIDIyNywgMTgxLCAxNywgMTk5LCAyMjcsIDE4MSwgMTcsIDIyMiwgCi0gICAgNjMsIDIyNywgMTgxLCAxLCAyMDcsIDI0MSwgMjI3LCAxODEsIDEsIDIwNywgMjI5LCAyMjcsIDE4MSwgMSwgMjQ0LCAxMjAsIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMjAyLCA4NCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxMDUsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxNywgMTA4LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE0NywgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNDksIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTcwLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE5NSwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDE3LCAyMTMsIDExMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxOTksIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgCi0gICAgMjIyLCA2MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyOCwgMTEzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUwLCA0OSwgCi0gICAgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgODEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTAsIDIyMywgMjIwLCA0NywgCi0gICAgMjQ2LCAxMzUsIDEsIDI1MSwgMzksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjgsIDExMiwgMjIwLCA0NywgMjQ2LCAxMzUsIAotICAgIDEsIDI1MSwgMjQzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAyNDQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIAotICAgIDI0MiwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgMjM3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI3LCAxNDgsIDIyMCwgCi0gICAgNDcsIDI0NiwgMTM1LCAxLCAyMzAsIDIxNSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIzMSwgODQsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxLCAyMzAsIDIzNiwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIzMCwgMjI0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgCi0gICAgMjI2LCAyMzksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDcsIDMxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA3LCAyOSwgCi0gICAgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNiwgMjI5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA2LCAxNzAsIDIyMCwgNDcsIAotICAgIDI0NiwgMTM1LCAxLCAyMjcsIDIzNCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI0MSwgNDYsIDIyMCwgNDcsIDI0NiwgMTM1LCAKLSAgICAxLCAyNDEsIDE2NCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI0MSwgOTIsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIAotICAgIDIxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI3LCA0OSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIxOSwgMjE5LCAyMjAsIAotICAgIDQ3LCAyNDYsIDEzNSwgMSwgMjIwLCA5MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIxOSwgMjA2LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMSwgMjIwLCA2MCwgMjIwLCA0NywgMjQ2LCAxMzUsIDIyMywgMjQ3LCAyMDcsIDIwNiwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDIzOSwgMywgMjA3LCAyMDcsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMjMsIDI0NSwgMjA3LCAyMDcsIDIyMCwgNDcsIAotICAgIDI0NiwgMTM1LCAyMTYsIDExOCwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxOCwgMjA2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjUxLCAKLSAgICA3MiwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxNywgMTc5LCAyMjMsIDI0MSwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxNywgMTc5LCAKLSAgICA1MiwgMjIzLCAyNDEsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjEwLCAxODQsIDIxMCwgMjEzLCAyMTcsIDE3OSwgCi0gICAgMjQ4LCA2NCwgMjE5LCAxMTMsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjE3LCAxNjcsIDIxMCwgMjEzLCAyMTcsIAotICAgIDE3OSwgMjQ4LCA2NCwgMjQ3LCA3NywgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyMjcsIDE3MiwgMjE0LCAyMjQsIAotICAgIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjMwLCA0NCwgMjE0LCAyMjQsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCAKLSAgICA2NCwgMjQ0LCAyMTMsIDIxNCwgMjI0LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDI0OSwgMzMsIDIxNCwgMjI0LCAKLSAgICAyMDYsIDUyLCAxNDMsIDIyOSwgMjM0LCAyMDYsIDUyLCAxNDMsIDIxMywgNTgsIDIwNiwgNTIsIDE0MywgMjE3LCAyNDUsIAotICAgIDIwNiwgNTIsIDIsIDIyMiwgNzYsIDIwNiwgNTIsIDIsIDIwMywgODcsIDIyNCwgMTQ2LCAyMTAsIDE3NSwgMjA2LCA1MiwgCi0gICAgMTQzLCAyMDMsIDg3LCAyNTEsIDc3LCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyMDMsIDg3LCAyMzEsIDM2LCAKLSAgICAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyMDMsIDg3LCAyMjksIDIyMiwgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIAotICAgIDE0MywgMjQ3LCA1NSwgNTYsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjI5LCAyMjIsIDIzMSwgMzYsIDIxMCwgMTc2LCAKLSAgICAyMTQsIDE5NCwgMjA2LCA1MiwgMTQzLCA1MiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjA4LCA3MCwgMjEwLCAxNzUsIAotICAgIDIwNiwgNTIsIDE0MywgMjI5LCAyMjIsIDI1MCwgMTgyLCAyMDYsIDUyLCAxNDMsIDcwLCA1NiwgMjA2LCA1MiwgMTQzLCAKLSAgICAxMjAsIDE4NywgNTYsIDIwNiwgNTIsIDE0MywgMTI2LCAxODcsIDU2LCAyMDYsIDUyLCAxNDMsIDIxNiwgNCwgMjI5LCAyMzMsIAotICAgIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDI1MCwgNDcsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAyLCAKLSAgICAyMDUsIDIwMCwgMjEwLCAxNzUsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyMDcsIDI2LCAyMDYsIDUyLCAyLCAyMTYsIDczLCAKLSAgICAyMDUsIDIwMCwgMjA3LCAyNiwgMjA2LCA1MiwgMiwgMjA1LCAyMDAsIDI1MCwgMTgyLCAyMDYsIDUyLCAyLCAyMTYsIDczLCAKLSAgICAyMDUsIDIwMCwgMjUwLCAxODIsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyMDcsIDI3LCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgCi0gICAgMiwgMjA1LCAyMDAsIDI1MCwgMTgzLCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDI1MCwgMTk3LCAyMDYsIAotICAgIDUyLCAyLCAyNTAsIDE4MSwgMjQ5LCAyLCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjA2LCA3NywgMjA2LCA1MiwgMiwgMjUwLCAKLSAgICAxODEsIDIwNiwgNzgsIDMsIDIwOSwgMjQ4LCAyMDYsIDUyLCAyLCAyMDgsIDIwMSwgMjA2LCA1MiwgMiwgMjM3LCAxNSwgCi0gICAgMTYzLCAyNTAsIDE4MCwgMjA2LCA1MiwgMiwgMTYzLCAyNTAsIDE4MCwgMjA2LCA1MiwgMiwgMjE1LCAxNDcsIDE2MywgMjUwLCAKLSAgICAxODAsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyMDcsIDMzLCAyMjMsIDIzMiwgMjA2LCA1MiwgMiwgMjUwLCAxMjIsIDIwNiwgCi0gICAgNTIsIDIsIDIxNSwgMTk4LCAyNTAsIDEyMiwgMjA2LCA1MiwgMTQzLCAyNDcsIDU1LCA1NSwgMjA2LCA1MiwgMiwgMjMwLCAKLSAgICAxMzUsIDIwNiwgNTIsIDIsIDIwNiwgMjIyLCAyMDYsIDUyLCAxNDMsIDIxNSwgMjUzLCA1NSwgMjA2LCA1MiwgMTQzLCA1MiwgCi0gICAgMjE1LCAyNTMsIDU1LCA4LCAxLCA1LCA2LCA2MywgOCwgMSwgNSwgNiwgMjUxLCAxMDksIDgsIDUsIDEsIDIwNywgMTc0LCAKLSAgICAyNTEsIDEwOSwgOCwgMSwgNSwgNiwgMjQ4LCAyMjUsIDI0OSwgMjU1LCA4LCAxLCA1LCA2LCAyNDcsIDEyNSwgOCwgMSwgNSwgCi0gICAgNiwgMjQ1LCA1MSwgOCwgMSwgNSwgNiwgMjQwLCAyNDMsIDgsIDEsIDUsIDYsIDc0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMTcxLCAKLSAgICA3NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDc1LCA4LCAxLCA1LCA2LCAyMzAsIDE4NCwgOCwgMSwgNSwgNiwgMjMwLCA1NCwgOCwgCi0gICAgMSwgNSwgNiwgMjI4LCAxMzEsIDMsIDk1LCA4LCAxLCA1LCA2LCAyMjYsIDE4NSwgOCwgMSwgNSwgNiwgMjE2LCA3MywgMjIzLCAKLSAgICAxNjMsIDgsIDEsIDUsIDYsIDc4LCA4LCAxLCA1LCA2LCAxNzEsIDc4LCA4LCA1LCAxLCAyMTIsIDE1NCwgNzgsIDgsIDUsIDEsIAotICAgIDIxMiwgMTU0LCAxNzEsIDc4LCA4LCA1LCAxLCAyMTIsIDE1NCwgMTU4LCAzLCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyMCwgCi0gICAgNzMsIDgsIDEsIDUsIDYsIDIxOSwgMjE2LCA4LCA1LCAxLCAyMDgsIDE0NSwgMTYyLCA3OCwgOCwgNSwgMSwgMjQ3LCAyNDgsIAotICAgIDE2MiwgNzgsIDgsIDEsIDUsIDYsIDIxOSwgMTg0LCA4LCAxLCA1LCA2LCAyMTYsIDczLCAxNDYsIDgsIDEsIDUsIDYsIDIwNywgCi0gICAgMTc0LCAxNDYsIDgsIDEsIDUsIDYsIDIxMCwgNjksIDgsIDEsIDUsIDYsIDY4LCA4LCA1LCAxLCAyMTIsIDE1NCwgNjgsIDgsIAotICAgIDUsIDEsIDIxMiwgMTU0LCAyNDMsIDIyOSwgNjgsIDgsIDUsIDEsIDIxMiwgMTU0LCAyMDcsIDE3NCwgMjI2LCAxODUsIDgsIAotICAgIDEsIDUsIDYsIDIwNiwgMTY0LCA4LCAxLCA1LCA2LCAyMDQsIDE0NCwgOCwgMSwgNSwgNiwgMjAyLCAxNTksIDgsIDEsIDUsIAotICAgIDYsIDI0MCwgMTc3LCA4LCAxLCAyMDUsIDE4NiwgMjI4LCAzLCAyMTEsIDIwMCwgOCwgMSwgMjUxLCA1OSwgMzAsIDEsIDUsIAotICAgIDYsIDIzOCwgMjM1LCAzMCwgMSwgNSwgNiwgMjI4LCAyNCwgMzAsIDEsIDUsIDYsIDIxOCwgMTY3LCAzMCwgMSwgNSwgNiwgCi0gICAgMjE2LCA1OSwgMzAsIDEsIDUsIDYsIDIxNywgMjAyLCAzNiwgMSwgNSwgNiwgMjQxLCAxMjIsIDY1LCAxLCA2LCA2MywgNjUsIAotICAgIDEsIDYsIDI1MSwgMTA5LCA2NSwgMSwgNiwgMjQ5LCAyNTUsIDY1LCAxLCA2LCAyNDgsIDIyNSwgMjQ5LCAyNTUsIDY1LCAxLCAKLSAgICA2LCAyNDUsIDUxLCA2NSwgMSwgNiwgNzQsIDY1LCAxLCA2LCAyMTYsIDczLCA3NCwgNjUsIDEsIDYsIDIzOSwgNzUsIDY1LCAKLSAgICAxLCA2LCAyMzcsIDE3MSwgNjUsIDEsIDYsIDc1LCA2NSwgMSwgNiwgMjMwLCAxODQsIDY1LCAxLCA2LCAyMzAsIDU0LCA2NSwgCi0gICAgMSwgNiwgMTU5LCA2NSwgMSwgNiwgMjI2LCAxODUsIDY1LCAxLCA2LCAyMjMsIDE2MywgNjUsIDEsIDYsIDIxNiwgNzMsIAotICAgIDIyMywgMTYzLCA2NSwgMSwgNiwgNzgsIDY1LCAxLCA2LCAyMTksIDIxNiwgNjUsIDEsIDYsIDIxOSwgMTg0LCA2NSwgMSwgNiwgCi0gICAgMTQ2LCA2NSwgMSwgNiwgMjEwLCA2OSwgNjUsIDEsIDYsIDY4LCA2NSwgMSwgNiwgMjA0LCAxNDQsIDY1LCAxLCA1LCA2MywgCi0gICAgNjUsIDEsIDUsIDIwNywgMTc0LCA2MywgNjUsIDEsIDUsIDI1MSwgMiwgNjUsIDEsIDUsIDIwNywgMTc0LCAyNTEsIDEwOSwgCi0gICAgNjUsIDEsIDUsIDI0OSwgMjU1LCA2NSwgMSwgNSwgMjQ1LCA1MSwgNjUsIDEsIDUsIDc0LCA2NSwgMSwgNSwgMjE0LCAxOTIsIAotICAgIDY1LCAxLCA1LCAxNzEsIDc0LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDE3MSwgNzQsIDY1LCAxLCA1LCAyMzksIDc1LCA2NSwgMSwgCi0gICAgNSwgMjA3LCAxNzQsIDc1LCA2NSwgMSwgNSwgMjMwLCA1NCwgNjUsIDEsIDUsIDIyNiwgMTg1LCA2NSwgMSwgNSwgMjQxLCAKLSAgICA3OCwgNjUsIDEsIDUsIDc4LCA2NSwgMSwgNSwgMTcxLCA3OCwgNjUsIDEsIDUsIDIwOCwgMTQ1LCAxNjIsIDc4LCA2NSwgMSwgCi0gICAgNSwgMjQ3LCAyNDgsIDE2MiwgNzgsIDY1LCAxLCA1LCAyMTksIDE4NCwgNjUsIDEsIDUsIDIxMCwgNjksIDY1LCAxLCA1LCAKLSAgICA2OCwgNjUsIDEsIDUsIDIxMiwgMTU0LCA2OCwgNjUsIDEsIDUsIDIwNywgMTc0LCAyMjYsIDE4NSwgNjUsIDEsIDUsIDIwNiwgCi0gICAgMTY0LCA2NSwgMSwgNSwgMjUxLCA1OSwgNjUsIDEsIDUsIDI0OCwgMTA2LCA2NSwgMSwgNSwgMzAsIDIzOCwgMjM1LCA2NSwgCi0gICAgMSwgNSwgMjQ0LCAzNywgNjUsIDEsIDUsIDMwLCAyMTgsIDE5MiwgNjUsIDEsIDUsIDI0NiwgMTQyLCA4LCAyMTAsIDI0NiwgCi0gICAgNSwgMSwgNzUsIDgsIDIxMCwgMjQ2LCA1LCAxLCAxNDYsIDgsIDIxMCwgMjQ2LCA1LCAxLCA2OCwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIwNiwgMTY0LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDI0OCwgMTA2LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDIzOCwgMjM1LCAKLSAgICAzMCwgMjEwLCAyNDYsIDUsIDEsIDIxNiwgNTksIDMwLCAyMTAsIDI0NiwgNSwgMSwgMjE4LCAxOTIsIDMwLCAyMTAsIDI0NiwgCi0gICAgNSwgMSwgMjQ2LCAxNDIsIDgsIDUsIDEsIDIwNywgMjQsIDgsIDUsIDEsIDY2LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyNDUsIDUyLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjI2LCAxODYsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyMTksIDE4NSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjE3LCAxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDMsIDIzOSwgMjQxLCAyNSwgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTAxLCAyMDgsIAotICAgIDIyNywgOCwgNSwgMSwgMjEwLCA3MCwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDEwMSwgMjA4LCAKLSAgICAyMjcsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzksIDc1LCA2NSwgMSwgMzYsIDI0MSwgOTIsIDgsIDUsIDEsIDIzMSwgNCwgCi0gICAgMjM5LCA3NSwgOCwgNSwgMSwgMjA5LCAxMTEsIDMsIDIxMSwgMzYsIDgsIDUsIDYsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgCi0gICAgNSwgMSwgMjMwLCAyMzEsIDMsIDk1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgOTUsIDgsIDUsIDYsIDEsIDEwNiwgMywgOTUsIAotICAgIDgsIDUsIDEsIDIwNiwgMjE3LCAzLCA5NSwgOCwgNSwgMSwgNjYsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDI0NSwgCi0gICAgNTIsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDI0MCwgMTc1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMzksIAotICAgIDc2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjgsIAotICAgIDEzMSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyMywgCi0gICAgMTY0LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE3LCAKLSAgICAxLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDEsIDgsIAotICAgIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDMsIDE5NywgCi0gICAgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI1MSwgMywgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyMzYsIAotICAgIDExNiwgMjUsIDIwOSwgMjQ4LCA4LCA1LCAxLCAxODgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTcxLCAxODgsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjE2LCA3MywgMTcxLCAxODgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjE0LCAKLSAgICAxOTMsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTcxLCAKLSAgICAxNTgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQxLCA4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDEwNiwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIAotICAgIDI1MSwgMiwgNjUsIDEsIDUsIDI0NywgMTI1LCA2NSwgMSwgNSwgMjQ3LCAxMjYsIDMsIDI0NSwgOTUsIDY1LCAxLCA1LCAKLSAgICAyNDAsIDI0MywgNjUsIDEsIDUsIDIxNiwgNzMsIDE3MSwgNzQsIDY1LCAxLCA1LCAyNDAsIDE3NCwgNjUsIDEsIDUsIDI0MywgCi0gICAgODQsIDIzMCwgMTg1LCAzLCA5NSwgNjUsIDEsIDUsIDEzMiwgMjM5LCA3NSwgNjUsIDEsIDUsIDIwNywgMTc0LCAyMzcsIAotICAgIDE3MSwgNjUsIDEsIDUsIDIzNSwgMjA2LCAzLCA5NSwgNjUsIDEsIDUsIDIzMCwgMjMwLCA2NSwgMSwgNSwgNiwgNzUsIDY1LCAKLSAgICAxLCA1LCA2LCAyMzUsIDIwNiwgMywgOTUsIDY1LCAxLCA1LCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDY1LCAxLCA1LCAyMjgsIAotICAgIDEzMSwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjI4LCAxMzEsIDMsIDIxOSwgMTQyLCAxMTMsIDY1LCAxLCA1LCA2LCAKLSAgICAxNTksIDY1LCAxLCA1LCAyMjYsIDE4NiwgMywgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIyNiwgMTg2LCAzLCAxNjMsIAotICAgIDIyNywgMjEwLCA2NSwgMSwgNSwgMjIzLCAxNjQsIDMsIDQ5LCAxMTMsIDY1LCAxLCA1LCAyMjMsIDE2NCwgMywgMjE2LCA3OSwgCi0gICAgMTEzLCA2NSwgMSwgNSwgNiwgMjIzLCAxNjMsIDY1LCAxLCA1LCAyNDgsIDIyNSwgNzgsIDY1LCAxLCA1LCAyMTgsIDE5MiwgCi0gICAgNjUsIDEsIDUsIDIxNSwgOTQsIDMsIDExMywgNjUsIDEsIDUsIDI0MSwgNywgNjUsIDEsIDUsIDIxMCwgNzAsIDMsIDIxOSwgCi0gICAgMTQyLCAxMTMsIDY1LCAxLCA1LCAxMDYsIDE0MiwgNjUsIDEsIDUsIDIwNiwgMjE2LCA2NSwgMSwgNSwgNiwgNjgsIDY1LCAxLCAKLSAgICA1LCAyMDYsIDE2NSwgMywgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA2NSwgMSwgNSwgMjAyLCAxNTksIAotICAgIDY1LCAxLCA1LCAyMDIsIDE2MCwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjAyLCAxNjAsIDMsIDI0NSwgOTUsIDY1LCAKLSAgICAxLCA1LCAyNDAsIDE3NywgNjUsIDEsIDUsIDIwOSwgNzQsIDM5LCAyNDIsIDgzLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM5LCAKLSAgICAyNDIsIDgzLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAyMTIsIDI1LCA1NiwgMzksIDIxMCwgMTgyLCA4MiwgMzksIDIyNSwgCi0gICAgMTY5LCAzOSwgMjM3LCAyNTEsIDM5LCAyMjUsIDE2NywgMzksIDI1MSwgMTI0LCAzOSwgMjM3LCAyNTIsIDM5LCAyNTEsIAotICAgIDEyNSwgMzksIDgsIDUsIDEsIDIxNywgMSwgNTYsIDM5LCAyNDcsIDIxMywgMzksIDIyNSwgMTY4LCAzOSwgNTIsIDI0NiwgCi0gICAgNTMsIDU1LCAzOSwgMjIwLCA2MywgNTUsIDM5LCAyMDIsIDMwLCA1NiwgMzksIDIzMCwgMjE2LCA1NiwgMzksIDIwNiwgMjExLCAKLSAgICA1NSwgMzksIDIwNiwgMTk0LCA1NSwgMzksIDgsIDUsIDEsIDIzOSwgMjE0LCAxNzEsIDM0LCA1NSwgMzksIDgsIDUsIDEsIAotICAgIDI1MSwgMTA5LCAzOSwgOCwgNSwgMSwgMjUwLCAxNzgsIDM5LCA4LCA1LCAxLCAyNTAsIDE4LCAzOSwgOCwgNSwgMSwgMjQ3LCAKLSAgICAxMjYsIDI0NiwgMjMxLCAzOSwgOCwgNSwgMSwgMjMxLCA0LCAyNDUsIDUxLCAzOSwgOCwgNSwgMSwgMjQwLCAyNDMsIDM5LCAKLSAgICA4LCA1LCAxLCAyMzksIDc1LCAzOSwgOCwgMSwgNSwgNiwgMjM5LCA3NSwgMzksIDgsIDUsIDEsIDIzMCwgNTQsIDM5LCA4LCAKLSAgICA1LCAxLCAxNTksIDM5LCA4LCAxLCA1LCA2LCAxNTksIDM5LCA4LCAxLCA1LCA2LCAyMjYsIDE4NSwgMzksIDgsIDUsIDEsIAotICAgIDIyMywgMTYzLCAzOSwgOCwgMSwgNSwgNiwgMjIzLCAxNjMsIDM5LCA4LCAxLCA1LCA2LCAxNDYsIDM5LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDIxNSwgMTkyLCAzOSwgOCwgNSwgMSwgMTk0LCAzOSwgOCwgNSwgMSwgMTYzLCAxOTQsIDM5LCA4LCA1LCAxLCAKLSAgICAyMDIsIDE1OSwgMzksIDgsIDUsIDEsIDI1MSwgMiwgMzksIDgsIDUsIDEsIDI0OSwgMjU1LCAzOSwgOCwgNSwgMSwgMjQ4LCAKLSAgICAxMDYsIDM5LCA4LCA1LCAxLCAyMTQsIDE5MiwgMzksIDgsIDUsIDEsIDI0MCwgMTc0LCAzOSwgOCwgNSwgMSwgMjI4LCAxMzEsIAotICAgIDMsIDUyLCAxMDEsIDIwOCwgMjI3LCAzOSwgOCwgNSwgMSwgMTU4LCAzLCAxNTcsIDI0NiwgMjE5LCA5NSwgMzksIDgsIDUsIAotICAgIDEsIDIxOSwgMTg0LCAzOSwgOCwgNSwgMSwgMjQxLCA3LCAzOSwgOCwgNSwgMSwgMTA2LCAzLCAxNTcsIDI0NiwgMjE5LCA5NSwgCi0gICAgMzksIDgsIDUsIDEsIDIwNCwgMTQ0LCAzOSwgOCwgNSwgMSwgMzQsIDMsIDI0MywgMjMxLCAzOSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICAyNDMsIDIzMSwgMzksIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM5LCAxMTIsIDIxMCwgNCwgNTUsIDM5LCA1MiwgCi0gICAgMjMwLCAyMzksIDI0NywgMjE1LCA1NiwgMzksIDI1MSwgNywgMTU2LCAyMDgsIDE3MywgNTYsIDM5LCA0OSwgMjUwLCA5NSwgCi0gICAgNTUsIDM5LCA1MCwgMjUwLCA5NSwgMjUsIDEyMSwgMjUwLCA5NSwgNTYsIDgsIDYsIDEsIDM0LCAzLCAyMTUsIDI1MywgNTYsIAotICAgIDgsIDUsIDEsIDM0LCAzLCAyMTUsIDI1MywgNTYsIDgsIDYsIDEsIDY2LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDY2LCAzLCA3MCwgCi0gICAgNTUsIDgsIDYsIDEsIDY2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDY2LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDY2LCAzLCAyMjcsIAotICAgIDExNSwgNTYsIDgsIDUsIDEsIDY2LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMiwgCi0gICAgMjUsIDE2NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMyLCAyNSwgMTY1LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAKLSAgICA3MCwgNTUsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgNzAsIDU2LCA4LCA1LCAKLSAgICAxLCAyNDUsIDUyLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjQ1LCAKLSAgICA1MiwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgCi0gICAgMjQ2LCAyMzEsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDUzLCAKLSAgICA1NiwgOCwgNiwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAKLSAgICAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAKLSAgICAxNzEsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgNTYsIAotICAgIDgsIDYsIDEsIDE4OCwgMywgMjA4LCAyMjgsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNiwgMSwgCi0gICAgMTg4LCAzLCAyNDYsIDIzMiwgMjUsIDI0NywgMjE0LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgMjMyLCAyNSwgMjQ3LCAyMTQsIAotICAgIDgsIDYsIDEsIDI0MCwgMTc1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDI0MCwgMTc1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIzOSwgCi0gICAgNzYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMzksIDc2LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDcwLCAKLSAgICA1NSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMjM3LCAxNzIsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMzcsIDE3MiwgCi0gICAgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NiwgCi0gICAgMjMxLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyMTUsIDU2LCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyMTUsIAotICAgIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjA4LCAyMjgsIAotICAgIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIAotICAgIDIzMiwgMjUsIDE2NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMTY1LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAxNjUsIDgsIDYsIAotICAgIDEsIDIzMCwgNTUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjMwLCA1NSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAKLSAgICAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIAotICAgIDcwLCA1NiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDcwLCAyNDgsIDEyNiwgCi0gICAgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAotICAgIDIyOCwgMTMxLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIAotICAgIDIyOCwgMTMxLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAKLSAgICAyMjYsIDE4NiwgMywgMTY1LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMTY1LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgNzAsIAotICAgIDU1LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAyMjYsIDE4NiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgCi0gICAgNzAsIDU1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU2LCA4LCA2LCAKLSAgICAxLCAyMjMsIDE2NCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAKLSAgICAxLCAyMjMsIDE2NCwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDI0MywgMjMxLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjQzLCAyMzEsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIAotICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAKLSAgICAyNSwgMTY1LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMTY1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMTY1LCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNywgMSwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjE3LCAxLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAyMjUsIDE3MCwgOCwgNSwgCi0gICAgMSwgMjE3LCAxLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMjcsIDExNSwgCi0gICAgNTYsIDgsIDUsIDEsIDIxNywgMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDUsIAotICAgIDEsIDIxNSwgOTQsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAKLSAgICA3MCwgNTYsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI1MSwgMTI2LCAyNSwgNzAsIDU1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAKLSAgICAyNTEsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjQ3LCAzMCwgMjUsIDcwLCA1NSwgOCwgNSwgMSwgCi0gICAgMjE1LCA5NCwgMywgMjQ3LCAzMCwgMjUsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxMCwgNzAsIAotICAgIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTYsIDgsIAotICAgIDUsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAKLSAgICAyMTAsIDcwLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMTAsIAotICAgIDcwLCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAKLSAgICAyMzIsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIAotICAgIDYsIDEsIDEwNiwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIDEwNiwgMywgCi0gICAgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgCi0gICAgMjI1LCAxNzEsIDI1LCAyNDMsIDIzMSwgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDI0MywgMjMxLCA4LCA2LCAxLCAKLSAgICAyMDYsIDE2NSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjA2LCAxNjUsIAotICAgIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDIzNywgMjUzLCAKLSAgICA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAxNjUsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ1LCAzLCAxNjUsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDI0MywgCi0gICAgMjMxLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAKLSAgICAyMDQsIDE0NSwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDE5NywgMywgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyMDMsIDE5NywgMywgNzAsIDU1LCA4LCA2LCAxLCAyMDMsIDE5NywgMywgMjQzLCAyMzEsIDgsIAotICAgIDUsIDEsIDIwMywgMTk3LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDYsIAotICAgIDUyLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU2LCA4LCA2LCAxLCAKLSAgICAyMDIsIDE2MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAKLSAgICAyMzcsIDE3MiwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjA0LCAKLSAgICAxNDUsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMzQsIDMsIAotICAgIDUwLCAxNjIsIDIxNSwgMjUyLCA4LCA1LCAxLCAxNjMsIDIxNSwgOTQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTYzLCAyMTUsIAotICAgIDk0LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIDE2MywgMjE1LCA5NCwgMywgMTM4LCA5NSwgOCwgNiwgMSwgMjEzLCA1NywgCi0gICAgMTk0LCA4LCA1LCAxLCAyNDQsIDM3LCA4LCA2LCAxLCAzNCwgMywgNzAsIDU2LCA4LCA1LCAxLCAzNCwgMywgNzAsIDU2LCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAzNCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyNDYsIAotICAgIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgCi0gICAgNzAsIDU2LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIAotICAgIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgCi0gICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICAyNDcsIDIxNSwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCA3MCwgNTYsIAotICAgIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMTg4LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDE4OCwgMywgNzAsIDU2LCA4LCA2LCAxLCAxODgsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTg4LCAzLCAyMzYsIDExNiwgCi0gICAgNTUsIDgsIDYsIDEsIDE4OCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIAotICAgIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAKLSAgICAxMTYsIDU1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIAotICAgIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgNzAsIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDE1OCwgCi0gICAgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUzLCAKLSAgICAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIAotICAgIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIAotICAgIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIAotICAgIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgCi0gICAgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgCi0gICAgNTYsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgCi0gICAgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMTA2LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgMTE2LCAKLSAgICA1NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIAotICAgIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIAotICAgIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCAKLSAgICA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAyMzcsIDI1MywgOCwgCi0gICAgNSwgMSwgMjAzLCAxMjUsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDMsIAotICAgIDEyNSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgCi0gICAgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMjI0LCAxNDcsIDIyNywgNzgsIDgsIDUsIDEsIDIyNCwgMTQ3LCAyMjcsIDc4LCA4LCA2LCAxLCAKLSAgICAyMjQsIDE0NywgMjA2LCAxNjQsIDgsIDUsIDEsIDIyNCwgMTQ3LCAyMDYsIDE2NCwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIAotICAgIDIyNywgMTQsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMjcsIDE0LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NSwgCi0gICAgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgCi0gICAgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIAotICAgIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDEsIAotICAgIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCi0gICAgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQxLCAzOCwgCi0gICAgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIAotICAgIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIAotICAgIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MSwgCi0gICAgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAKLSAgICAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk1LCAzMCwgCi0gICAgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgCi0gICAgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDI0MCwgCi0gICAgMjQ5LCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAKLSAgICAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MCwgCi0gICAgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKLSAgICAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDEsIAotICAgIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgCi0gICAgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgCi0gICAgMjMwLCAyMzEsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjMwLCAKLSAgICAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgCi0gICAgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIAotICAgIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIxNywgCi0gICAgMTk1LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM1LCAKLSAgICAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAKLSAgICAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MiwgMjUsIAotICAgIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNSwgCi0gICAgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIAotICAgIDIwNiwgMjE3LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCAKLSAgICA1LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAotICAgIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAKLSAgICAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCAKLSAgICA2LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMTk1LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAKLSAgICAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAKLSAgICAyNDQsIDE0MSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzcsIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAKLSAgICAxLCAyNTEsIDMsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQxLCAzOCwgCi0gICAgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjA2LCA3MCwgMzAsIAotICAgIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAKLSAgICAyMjAsIDM1LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIAotICAgIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOSwgCi0gICAgMTg5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAKLSAgICAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCAKLSAgICA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgCi0gICAgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIAotICAgIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgCi0gICAgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAKLSAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAKLSAgICAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIAotICAgIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCi0gICAgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIAotICAgIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAKLSAgICAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgCi0gICAgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIAotICAgIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKLSAgICAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAKLSAgICAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIAotICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjQwLCAyNSwgMjE3LCAKLSAgICAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgCi0gICAgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAKLSAgICAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgCi0gICAgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAKLSAgICAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIAotICAgIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgCi0gICAgMjIxLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAKLSAgICAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgCi0gICAgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAKLSAgICAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAotICAgIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDUsIDE2NywgMzAsIDUsIDEsIDI1MSwgMywgMywgCi0gICAgMjI1LCAxNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgCi0gICAgMywgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIAotICAgIDMsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNiwgMSwgCi0gICAgMjUxLCAzLCAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDI1MSwgMywgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIAotICAgIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDIwOSwgCi0gICAgMzAsIDIyOCwgMjUyLCAzMCwgMjE3LCAyMDksIDMwLCAyMTcsIDE5NSwgMzAsIDIxOCwgMjM5LCAzMCwgMjQzLCAyMjUsIDI1LCAKLSAgICAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIAotICAgIDEsIDI0MCwgMjQ5LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAKLSAgICAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCi0gICAgMjQwLCAyNDksIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjE3LCAyMDksIDMwLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMDUsIDE2NywgMzAsIDUsIDEsIAotICAgIDIzMCwgMjMxLCAzLCAyMjUsIDE3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCAKLSAgICA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTgsIAotICAgIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIAotICAgIDMsIDIwNSwgMTY3LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIwNiwgCi0gICAgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjE5LCAxODksIDMwLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCAyNDQsIAotICAgIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAKLSAgICAyMDUsIDE2NywgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMjUsIDE3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIAotICAgIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAotICAgIDEsIDIxNiwgNjAsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjE2LCA2MCwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMDYsIAotICAgIDIxNywgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIAotICAgIDEsIDIwNiwgMjE3LCAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDIwNiwgCi0gICAgMjE3LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjE2LCA2MCwgMywgCi0gICAgMjQ0LCAxNDEsIDMwLCAyNDMsIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCAyNDMsIDIyNSwgMjUsIDIxOSwgMTg5LCAzMCwgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIAotICAgIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgCi0gICAgMzcsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIAotICAgIDIyMCwgMzUsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIAotICAgIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMjA5LCAzMCwgMjE5LCAxODksIDMwLCAyNDQsIDE0MSwgMjQxLCA5MywgMjE3LCA2MiwgMjQxLCAxMDQsIDIxNywgNjIsIAotICAgIDI0MSwgOTMsIDIxMSwgMjI4LCAyNDEsIDEwNCwgMjExLCAyMjgsIDIwOSwgMjgsIDIxMSwgMjI4LCAyMzksIDE0NSwgMjExLCAKLSAgICAyMjgsIDIxMiwgODYsIDIxMSwgMjI4LCAyNDAsIDE2LCAyMTEsIDIyOCwgMjE3LCAxNzksIDIxMSwgMjI4LCAyMDksIDYzLCAKLSAgICAyMTEsIDIyOCwgMjM3LCAxNDYsIDIxMSwgMjI4LCAyMDIsIDg1LCAyMDQsIDI0LCAyMTEsIDIyOCwgMjAyLCA4NSwgMjA0LCAKLSAgICAyNCwgMjIxLCAxODMsIDIwMiwgODUsIDIwNCwgMjQsIDIzMCwgOTYsIDIyNywgMjEzLCA4MiwgMjE2LCA3LCA4MiwgMjM1LCAKLSAgICAyMjAsIDIyMSwgMTg0LCAyMzUsIDIyMCwgMjQwLCAxNiwgMjQ0LCAxNDQsIDI0MSwgOTMsIDI0NCwgMTQ0LCAyNDEsIDEwNCwgCi0gICAgMjQ0LCAxNDQsIDIzNiwgMTA2LCAxNDIsIDUyLCA4MCwgMjI3LCAxMTQsIDUyLCAxMjQsIDIyNywgMTE0LCA0OSwgMjEyLCAKLSAgICAxMjAsIDIxNywgMzEsIDgyLCA1MCwgMjEyLCAxMjAsIDIxNywgMzEsIDgyLCAyMTIsIDEyMCwgMjI2LCAyNTUsIDIxNywgMzEsIAotICAgIDgyLCAyMTIsIDEyMCwgMjM2LCAyNDEsIDIxNywgMzEsIDgyLCA0OSwgNTIsIDIxNywgMzEsIDgyLCA1MCwgNTIsIDIxNywgCi0gICAgMzEsIDgyLCA1MiwgMjI2LCAyNTUsIDIxNywgMzEsIDgyLCA1MiwgMjM2LCAyNDEsIDIxNywgMzEsIDgyLCAyNDQsIDE5NSwgCi0gICAgNTIsIDI0NCwgMTk1LCAyNDcsIDE3NywgMjA4LCA4MiwgMjQ3LCAxNzcsIDExOCwgNzAsIDIyNywgMjMyLCAxMjAsIDcwLCAKLSAgICAyMjcsIDIzMiwgMjM2LCAxMDYsIDI0MSwgMTA4LCAyMzUsIDIxOCwgMjE4LCA2MiwgMjI3LCAxMTUsIDIxMywgMTMwLCAyMTksIAotICAgIDg5LCAyMTMsIDEzMCwgMjI3LCAyMTMsIDI0MSwgMTAyLCAyMTYsIDcsIDI0MSwgMTAyLCAyMTgsIDQyLCAyNDMsIDE2NSwgCi0gICAgMjM5LCAxNTcsIDIyNywgMjEzLCAyMTksIDE5NiwgMjE2LCA3LCAyMTksIDE5NiwgMjIzLCA3MywgMjIxLCAxOTAsIDIxMSwgCi0gICAgMjI4LCAyMTgsIDI0NywgMjI0LCAxMTYsIDU0LCAyMTgsIDI0NywgMjA5LCAxNTMsIDIwOSwgMzcsIDU0LCAyMTcsIDIzNiwgCi0gICAgNTIsIDIxNywgMjM2LCAyMDgsIDcwLCAyMTcsIDIzNiwgMjE2LCA3MywgMjE3LCAyMzYsIDIxNiwgNzMsIDUyLCAyMTcsIAotICAgIDIzNiwgMjE2LCA3MywgMjA4LCA3MCwgMjE3LCAyMzYsIDI0NywgMzMsIDIxMiwgMTIwLCAyMjcsIDIxNywgMjUwLCAyMTgsIAotICAgIDIxNywgMzEsIDgyLCAyMTIsIDEyMCwgMjE2LCAxMSwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMTYsIDEzNCwgODIsIDUyLCAKLSAgICAyNDAsIDIxMiwgODIsIDIzMCwgMjQ3LCAyMTksIDE5OCwgMjA2LCAyNDMsIDE2NywgMjA4LCAyNTAsIDI0NywgMzQsIDIzMSwgCi0gICAgOCwgMjE4LCA2MiwgMjUwLCA1NywgMjM1LCAyMjEsIDI0NywgMTc3LCAyMzksIDEzOCwgMjEyLCA1NywgNDksIDUxLCAyNDcsIAotICAgIDIyNywgMywgMjE3LCA0MSwgNTAsIDUxLCAyNDcsIDIyNywgMywgMjE3LCA0MSwgNTIsIDIxNywgNDcsIDgyLCAyMTcsIDQ3LCAKLSAgICAyNDAsIDIxMiwgODIsIDI0MCwgMjEyLCAyMTcsIDQ3LCA4MiwgMjA4LCAyMDMsIDIsIDI0MCwgMjUwLCAyMTYsIDczLCAyMTgsIAotICAgIDEyNiwgNTQsIDYyLCA5NiwgMjQ3LCAxNzcsIDYyLCA4NiwgMjQ3LCAxNzcsIDEyNCwgMjUwLCA1OSwgMjE2LCA3MywgMjEzLCAKLSAgICAxNDMsIDI0NiwgMTcsIDIwNiwgMjI0LCAxMjAsIDI1MCwgNTgsIDI1MSwgMTgsIDIwNSwgMjQzLCAyNDUsIDIzMSwgMjI0LCAKLSAgICAxMDMsIDU0LCAyMTAsIDE1MywgMjQ0LCAxNDQsIDIzMCwgMjM5LCAyMDYsIDI0MywgMjM5LCAxOTgsIDIxNywgMTc5LCA4MiwgCi0gICAgMTI2LCA3MCwgMjE3LCAxNzgsIDIxNywgNTgsIDIxNywgMjM2LCAyMzksIDE0NywgNzAsIDIxNywgMTc4LCAyMzksIDIzMywgCi0gICAgNzAsIDIxNywgMTc4LCAxMjAsIDcwLCAyMTcsIDE3OCwgMjM5LCAxNDcsIDcwLCA4MiwgMjQyLCA4MywgMjQ1LCAxMzAsIAotICAgIDIwOCwgODEsIDgwLCAyMzksIDE0NywgMjQzLCA4MywgMjI1LCAxMCwgMTMsIDIxMSwgMjI4LCAyMDMsIDIzOCwgMjMwLCA5NiwgCi0gICAgMjM5LCAxMDAsIDI1MCwgMTU1LCAyMzAsIDIzNywgMjA4LCAyMTksIDIzMCwgMjM3LCAyMTMsIDEzMCwgMjMwLCAyMzcsIAotICAgIDIxOCwgNzYsIDIyNywgMjEzLCAyMzAsIDIwNywgMjE2LCA3LCAyMzAsIDIwNywgMjM5LCAyNDUsIDIxMSwgMTgsIDIzMCwgCi0gICAgMjA3LCAyMTgsIDQyLCAyNDMsIDE2NSwgMjMwLCAyMDcsIDIzMSwgMjAsIDIxMCwgMTAxLCAyMTAsIDE3MCwgMjUxLCAxMjgsIAotICAgIDIxMCwgMTAxLCAyMTAsIDE3MCwgMjMxLCAyMCwgMTAsIDIzOSwgMTU5LCAyMTMsIDYxLCAyNTEsIDEyOCwgMTAsIDIzOSwgCi0gICAgMTU5LCAyMTMsIDYxLCAyMjMsIDY3LCAxNywgMjEzLCA2MiwgMjIxLCAxODYsIDE3LCAyMTMsIDYyLCAyMTAsIDE5OSwgMjAyLCAKLSAgICA4NCwgMjEwLCAxOTksIDgsIDUsIDEsIDc1LCAyMTAsIDE5OSwgMTQ5LCAyMTAsIDE5OSwgMTcwLCAyMTAsIDE5OSwgMTk1LCAKLSAgICAyMTAsIDE5OSwgMjEzLCAxMTEsIDIxMCwgMTk5LCAxOTksIDIxMCwgMTk5LCAyMjIsIDYzLCAyMTAsIDE5OSwgOTEsIDU0LCAKLSAgICAyMTAsIDE5OSwgMjI0LCAxMDIsIDIxMCwgMTk5LCAyNDEsIDM1LCA1NCwgMjEwLCAxOTksIDQ5LCAyMTksIDc2LCAyMTAsIAotICAgIDE5OSwgNTAsIDIxOSwgNzYsIDIxMCwgMTk5LCA4LCA1LCAxLCAyMjMsIDE2MywgMjEwLCAyNDYsIDIwMiwgODQsIDIxMCwgCi0gICAgMjQ2LCAxMDUsIDIxMCwgMjQ2LCAxMDgsIDIxMCwgMjQ2LCAxNDcsIDIxMCwgMjQ2LCAxNDksIDIxMCwgMjQ2LCAxNzAsIAotICAgIDIxMCwgMjQ2LCAxOTUsIDIxMCwgMjQ2LCAyMTMsIDExMSwgMjEwLCAyNDYsIDE5OSwgMjEwLCAyNDYsIDIyMiwgNjMsIDIxMCwgCi0gICAgMjQ2LCA5MSwgNTQsIDIxMCwgMjQ2LCAyMjQsIDEwMiwgMjEwLCAyNDYsIDI0MSwgMzUsIDU0LCAyMTAsIDI0NiwgNDksIAotICAgIDIxOSwgNzYsIDIxMCwgMjQ2LCA1MCwgMjE5LCA3NiwgOCwgMjEwLCAyNDYsIDUsIDEsIDYzLCA4LCAyMTAsIDI0NiwgNSwgMSwgCi0gICAgNzQsIDgsIDIxMCwgMjQ2LCA1LCAxLCA3OCwgOCwgMjEwLCAyNDYsIDUsIDEsIDIwMywgMTk2LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjE0LCAxOTIsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMzcsIDE3MSwgOCwgMjEwLCAyNDYsIDUsIDEsIDIzMCwgNTQsIDgsIAotICAgIDIxMCwgMjQ2LCA1LCAxLCAxNTksIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMjYsIDE4NSwgOCwgMjEwLCAyNDYsIDUsIDEsIDIyMywgCi0gICAgMTYzLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjE5LCAxODQsIDgsIDIxMCwgMjQ2LCA1LCAxLCAxOTQsIDgsIDIxMCwgMjQ2LCA1LCAKLSAgICAxLCAyMTAsIDY5LCAyNDAsIDIyOSwgNTQsIDI0NSwgMjQzLCA1NCwgMjQ1LCAxMTUsIDU0LCAyMzksIDEyOCwgMjM5LCAxMzIsIAotICAgIDU0LCAyMjcsIDk0LCA1NCwgMjI0LCAxMTcsIDU0LCAyMjMsIDkwLCA1NCwgMjE4LCAyMjQsIDU0LCAyMTUsIDEyMCwgNTQsIAotICAgIDIwMywgMjQ2LCA1NCwgMjIyLCAyMTQsIDIxMywgMjksIDU0LCAyNDMsIDkyLCA1NCwgMjQwLCAyMzAsIDU0LCAyMjksIDc5LCAKLSAgICA1NCwgMjA3LCAxOTYsIDU0LCAyNDIsIDY2LCA1NCwgMjM4LCAxNjYsIDIxOSwgMiwgNTQsIDIxOCwgMjIxLCA1NCwgMjM3LCAKLSAgICAyMjUsIDU0LCAyNTAsIDI0LCA1NCwgMjM2LCAzMiwgNTQsIDI0NiwgMjMzLCA1NCwgMjI3LCA4NCwgMjA4LCAxMjUsIDU0LCAKLSAgICAyMTEsIDIwOSwgNTQsIDIwOSwgMTUwLCA1NCwgMjMxLCAzNCwgMjE1LCAxMjAsIDU0LCAyMDcsIDE3NywgMjI3LCA5NCwgNTQsIAotICAgIDIyMSwgMTczLCAxMzEsIDU0LCAyMjUsIDEyMCwgNTQsIDIxNSwgMTQyLCA1NCwgMjI4LCA0LCA1NCwgMzksIDQ5LCAyMzcsIAotICAgIDg3LCA1NSwgMzksIDUwLCAyMzcsIDg3LCA1NSwgMzksIDE2MywgODAsIDIyNywgMTE1LCAyMTksIDE5OSwgMzksIDIxMiwgCi0gICAgMjI4LCA4MCwgMjI3LCAxMTUsIDIxOSwgMTk5LCAzOSwgMjUwLCAxOTQsIDUzLCA1NSwgMzksIDI0NiwgMTgsIDUzLCA1NSwgCi0gICAgMzksIDQ5LCA1MywgNTUsIDM5LCA1MCwgNTMsIDU1LCAzOSwgMjE1LCAyNTMsIDIxOSwgMTk5LCAzOSwgMjQ2LCAxOCwgMjE1LCAKLSAgICAyNTMsIDIxOSwgMTk5LCAzOSwgMjUwLCAxOTQsIDIxNSwgMjUzLCAyMTksIDE5OSwgMzksIDEyNiwgMTg3LCA1NSwgMzksIAotICAgIDIzOSwgMTQ3LCAxODcsIDU1LCAzOSwgMjQxLCA4OCwgMjQ2LCA2MSwgMzksIDI0MSwgODgsIDIxMSwgMTc3LCAzOSwgMjQxLCAKLSAgICA4OCwgMjQzLCAyMjEsIDM5LCAyNDEsIDg4LCAyNDYsIDYyLCAyNDksIDIwLCAzOSwgNDksIDUwLCA1MywgNTUsIDM5LCAyNDEsIAotICAgIDg4LCAyMTQsIDE4NCwgMzksIDI0MSwgODgsIDIyOSwgMTQ3LCAzOSwgMjQxLCA4OCwgMjA2LCAyMTQsIDIxOCwgNTksIDIwOCwgCi0gICAgODUsIDM5LCAyMTYsIDc0LCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgNTIsIDgwLCAyMTEsIDMyLCAyMTksIDE5OSwgMzksIAotICAgIDI1MCwgMjA0LCA5NywgMzksIDIwOCwgNzAsIDIwNiwgMjQ1LCAzOSwgMjA0LCAyNywgMjQ3LCAyMDgsIDU1LCAzOSwgOTYsIAotICAgIDUzLCAyMTksIDE5OSwgMzksIDE2MywgNTIsIDIxMiwgMSwgMjE5LCAxOTksIDM5LCA4NiwgMjM3LCA4NywgMywgMTUwLCAKLSAgICAyNDIsIDY4LCAzOSwgOTYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgMzksIDQ5LCA1MywgNTYsIDM5LCA1MCwgNTMsIAotICAgIDU2LCAzOSwgMjUwLCA2MCwgNTUsIDI1MSwgMTM0LCAyMjAsIDY5LCAyNTEsIDExOCwgMjA4LCAxNzMsIDIwOSwgOTMsIDIxMCwgCi0gICAgMjU1LCAxNjksIDYsIDI0NywgMTI1LCAyNDQsIDU1LCAyNDYsIDIyMywgMjQ2LCAyMTgsIDIyNywgMTE1LCA5NywgMjQ3LCAKLSAgICAzNSwgMjIwLCA2OSwgMjQ3LCA4NCwgMjA2LCAyNTQsIDI0MCwgMjMxLCAyNDUsIDIwMCwgMjE0LCAxODEsIDI0NCwgNTUsIAotICAgIDI0MCwgOTAsIDEzMiwgNSwgMjM5LCA3NSwgMTMyLCA2LCAyMzcsIDE3MSwgMjQ4LCA0MSwgNiwgMjM3LCAxNzEsIDE2OSwgNiwgCi0gICAgMjM3LCAxNzEsIDIxOCwgOTMsIDI0NSwgMjAwLCAyMTgsIDkzLCAyNDUsIDIwMSwgMTE1LCAxMjAsIDIxOCwgMTY3LCAxMzIsIAotICAgIDYsIDc1LCAyNDgsIDQxLCA2LCA3NSwgMTMyLCA2LCAxNTksIDEzMiwgNSwgMTU5LCAyMjgsIDEzMSwgNjYsIDI0OCwgMjMxLCAKLSAgICA5NywgMTY5LCA2LCAyMjMsIDE2MywgMjIxLCA0MiwgNTQsIDIxMSwgMjQxLCAyMTYsIDE0NiwgMjQ1LCAxNjgsIDEzMiwgNiwgCi0gICAgMjE5LCAxODQsIDE2OSwgNiwgMjE5LCAxODQsIDE2OSwgNiwgMjE3LCAxMzQsIDEzMiwgNiwgMTQ2LCAyNDgsIDQxLCA2LCAKLSAgICAxNDYsIDE2OSwgNiwgMTQ2LCAyMTcsIDI0MywgMjA5LCAyNDEsIDIxNiwgODYsIDIxMywgMTIyLCA4MiwgMjA5LCAxNjIsIAotICAgIDU0LCAyMDgsIDExNSwgMTMxLCA1NCwgMjA2LCAzOSwgMTY5LCA2LCAyMDIsIDE1OSwgMjE5LCAyMTUsIDU0LCAyMjAsIDU5LCAKLSAgICA1NCwgMjMwLCAyMzksIDIyMCwgNTksIDU0LCAyNDgsIDQxLCA2LCAyMDIsIDE1OSwgMjA3LCAxNzQsIDMwLCA1LCAxLCAyMzAsIAotICAgIDIzMCwgMjI5LCAxODgsIDU0LCAyNTAsIDIxMywgNTQsIDEzMiwgNiwgMjQ5LCAyNTUsIDI0OCwgNDEsIDYsIDI0NywgMTI1LCAKLSAgICAyNDAsIDI1NSwgOTcsIDEzMiwgNSwgNzQsIDEzMiwgNiwgNzQsIDEzMiwgNiwgMjQwLCAxNzQsIDIwNywgMTc0LCA2LCAyNDAsIAotICAgIDE3NCwgMTMyLCA2LCAyMjYsIDE4NSwgMTMyLCA1LCA3OCwgMTM3LCA5NywgMjQ4LCAxMDksIDk3LCAyMzgsIDY4LCA5NywgCi0gICAgMjQ0LCAxNzksIDk3LCAyMzEsIDI1LCAyMTEsIDIzOSwgMjE1LCAxOTgsIDYsIDIxNywgMTM0LCAyNDAsIDkzLCA1NCwgMTY5LCAKLSAgICA1LCAyMTgsIDE2NywgMTY5LCA1LCAyMzgsIDIzNSwgMTY5LCA2LCAyMzgsIDIzNSwgMTY5LCA2LCAyMTgsIDE2NywgMTY5LCAKLSAgICAyMjMsIDE2MiwgMjEwLCAyMTcsIDIwNywgMTc0LCA0MSwgNiwgMjM5LCA3NSwgMjA3LCAxNzQsIDQxLCA2LCAxNTksIDIxNiwgCi0gICAgNzMsIDQxLCA2LCAxNTksIDIwNywgMTc0LCA0MSwgNiwgMjAzLCAxMjQsIDE2OSwgMzcsIDYsIDI0NSwgNTEsIDE2OSwgMzcsIAotICAgIDUsIDI0NSwgNTEsIDE2OSwgMzcsIDUsIDc0LCAxNjksIDM3LCA1LCA3NSwgMTY5LCAzNywgNSwgMjMwLCAxODQsIDIxNywgCi0gICAgMjEyLCAyMjcsIDExNCwgMjA3LCAxNzQsIDI1MCwgMjM1LCAyMTgsIDI0NywgNTQsIDI1MSwgNDEsIDIwNywgMTc0LCA1LCAKLSAgICAyNDAsIDE3NCwgMTYsIDM1LCAyMTQsIDI1MiwgMjExLCAyMzksIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMTMsIDEwNywgCi0gICAgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIyMiwgNTcsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMDksIDE0MywgMjA0LCAKLSAgICAxNjEsIDIzOSwgMTM4LCAxMTgsIDIwOSwgNjAsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTIwLCAyMDksIDU3LCAyMDQsIDE2MSwgCi0gICAgMjM5LCAxMzgsIDExOCwgMjQwLCAyMSwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjAsIDI0MCwgMjAsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMTI2LCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIzOSwgMTQ3LCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDExOCwgMjEyLCA3OCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMzksIDIzMywgMjEyLCA3NiwgMjA0LCAxNjEsIDIzOSwgCi0gICAgMTM4LCAxMTgsIDI0MSwgMTM4LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyNiwgMjQxLCAxMzYsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMjM5LCAyMzMsIDI0MSwgMTM2LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIxMywgMTEyLCAyNDEsIDEzNiwgMjM5LCAKLSAgICAxMzgsIDIyMSwgNDMsIDEwNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwOCwgMjE1LCAKLSAgICAyMTAsIDIyMSwgNDQsIDE0NywgMjE1LCAyMTAsIDIyMSwgNDQsIDE0OSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE3MCwgMjE1LCAKLSAgICAyMTAsIDIyMSwgNDQsIDE5NSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIxMywgMTExLCAyMTUsIDIxMCwgMjIxLCA0NCwgMTk5LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjIyLCA2MywgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUyLCAyMTUsIDIxMCwgMjIxLCAKLSAgICA0NCwgMjQxLCAxMTIsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDcsIDE1NCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTgsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIzNiwgMTEsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjM2LCAxMSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDExOCwgMjA5LCAzNiwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwNSwgNSwgMjE1LCAyMTAsIAotICAgIDIyMSwgNDQsIDEwOCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE0NywgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE0OSwgNSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDE3MCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5NSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIAotICAgIDIxMywgMTExLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTk5LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjIyLCA2MywgNSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUyLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQxLCAxMTIsIDUsIDIxNSwgMjEwLCAKLSAgICAyMjEsIDQ0LCAyMDcsIDE1NCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTgsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKLSAgICAxMTgsIDIzNiwgMTEsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjM2LCAxMSwgNSwgMjE1LCAyMTAsIDIyMSwgCi0gICAgNDQsIDExOCwgMjA5LCAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDExOCwgMjA5LCAzNywgMjQ3LCAxMjYsIDI0NSwgNTEsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjA5LCAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUzLCAyMDksIAotICAgIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjE2LCA3MywgMTE4LCAyMzYsIDExLCA4LCA1LCAxLCAyMTYsIDczLCAyNDcsIDEyNSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIxMiwgODgsIDIyNywgMjU1LCAxOCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTksIAotICAgIDI0MSwgMTgyLCAxOCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTksIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKLSAgICAxMTgsIDIzNiwgMTIsIDIwOSwgMzYsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjAyLCA4NSwgMjA5LCA1NywgMjA3LCAxNzQsIAotICAgIDE3LCAxMDgsIDIwNywgMTc0LCAxNywgMTQ3LCA5NiwgNDcsIDE3NywgNDcsIDg2LCA0NywgMTgzLCA0NywgNDksIDUwLCA0NywgCi0gICAgMTEyLCAxMjEsIDQ3LCAxNTMsIDIwNCwgNDYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCAKLSAgICA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDQ3LCA5NiwgNTMsIDMsIDk1LCA4NiwgNTMsIDMsIDk1LCA5NiwgMjA0LCA3NiwgNDcsIAotICAgIDg2LCAyMDQsIDc2LCA0NywgOTYsIDEyMCwgMjM3LCA2MiwgNDcsIDE3NywgMTIwLCAyMzcsIDYyLCA0NywgODYsIDEyMCwgCi0gICAgMjM3LCA2MiwgNDcsIDE4MywgMTIwLCAyMzcsIDYyLCA0NywgOTYsIDUzLCAzLCAyMDksIDI0OCwgODYsIDUzLCAzLCAyMDksIAotICAgIDI0OCwgOTYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNzcsIDUzLCAyMzksIDEyMCwgMTQyLCA4NiwgNTMsIDIzOSwgMTIwLCAKLSAgICAxNDIsIDE4MywgNTMsIDIzOSwgMTIwLCAxNDIsIDExMiwgMTIxLCA1MywgMywgMjQ4LCAyMTgsIDk2LCA1MywgMywgMTEzLCAKLSAgICA4NiwgNTMsIDMsIDExMywgOTYsIDUzLCAzLCAyMjcsIDE0LCA4NiwgNTMsIDMsIDIyNywgMTQsIDQ5LCA1MCwgMjA0LCA3NiwgCi0gICAgNDcsIDQ5LCA1MCwgNTMsIDMsIDk1LCAxODMsIDIwMiwgMzAsIDQ3LCAxNzcsIDUzLCAzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIAotICAgIDE3NywgNTMsIDMsIDIwOCwgMjExLCAyMTYsIDUsIDE4MywgNTMsIDMsIDIwOCwgMjExLCAyMjcsIDIxMiwgMTgzLCA1MywgMywgCi0gICAgMjA4LCAyMTEsIDIxNiwgNSwgODYsIDUzLCAzLCAyNDUsIDE2NiwgMjQyLCA2OCwgMTgzLCA1MywgMywgMjQ1LCAxNjYsIAotICAgIDIyNywgMjEyLCAyNTAsIDE5NCwgMjA4LCAxNDUsIDIxMywgMTQ2LCA0NywgMjQ2LCAxOCwgMjA4LCAxNDUsIDIxMywgMTQ2LCAKLSAgICA0NywgMTUzLCAyMDQsIDQ2LCA1MywgMjA4LCAxNzMsIDE2MywgMTQyLCA5NiwgNTMsIDIwOCwgMTczLCAyNDgsIDIzMSwgCi0gICAgMTE1LCA4NiwgNTMsIDIwOCwgMTczLCAxNDIsIDI1MCwgMTk0LCAxNzEsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAxNzEsIAotICAgIDI0NiwgNjIsIDQ3LCA5NiwgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIxMiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgCi0gICAgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgNSwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDIyNywgMjEyLCA4NiwgMjM3LCAKLSAgICA4NywgMywgMTUwLCAyMDYsIDIxMiwgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIAotICAgIDIxNiwgNSwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIyNywgMjEyLCA4NiwgNTMsIDExNSwgOTYsIDQ3LCAxNzcsIDUzLCA5NiwgCi0gICAgNzYsIDE4MywgNDcsIDk2LCA1MywgMTE1LCA4NiwgNDcsIDk2LCAyMTksIDE0NiwgMjUwLCA5MSwgMTc3LCAyMTksIDE0NiwgCi0gICAgMjUwLCA5MSwgODYsIDIxOSwgMTQ2LCAyNTAsIDkxLCAxODMsIDIxOSwgMTQ2LCAyNTAsIDkxLCA5NiwgMjM3LCA4NywgMTE1LCAKLSAgICA4NiwgMjM3LCA4NiwgODYsIDIzNywgODcsIDExNSwgOTYsIDIzNywgODYsIDk2LCA1MiwgNTMsIDMsIDk1LCA0OSwgNTAsIAotICAgIDUyLCA1MywgMywgOTUsIDg2LCA1MiwgNTMsIDMsIDk1LCA5NiwgNTIsIDQ3LCAxNzcsIDUyLCA0NywgODYsIDUyLCA0NywgCi0gICAgMTgzLCA1MiwgNDcsIDQ5LCA1MCwgNTIsIDQ3LCAxMTIsIDEyMSwgNTIsIDQ3LCAxNTMsIDIwNCwgNDYsIDUyLCA0NywgMTUzLCAKLSAgICAyNDEsIDE3NiwgNTIsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUyLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDUyLCA0NywgCi0gICAgOTYsIDIwOCwgNzAsIDQ3LCA4NiwgMjA4LCA3MCwgNDcsIDk2LCAyMTEsIDE3MSwgNDcsIDg2LCAyMTEsIDE3MSwgNDcsIAotICAgIDE3NywgNTMsIDMsIDUyLCA5NSwgMTgzLCA1MywgMywgNTIsIDk1LCA5NiwgMjQ0LCAxNDMsIDQ3LCAxNzcsIDI0NCwgMTQzLCAKLSAgICA0NywgODYsIDI0NCwgMTQzLCA0NywgMTgzLCAyNDQsIDE0MywgNDcsIDk2LCA1MywgMjA4LCAxNzMsIDE0MiwgODYsIDUzLCAKLSAgICAyMDgsIDE3MywgMTQyLCA5NiwgNjEsIDQ3LCAxNzcsIDYxLCA0NywgODYsIDYxLCA0NywgMTgzLCA2MSwgNDcsIDE3NywgNjEsIAotICAgIDUzLCAyMzksIDEyMCwgMTQyLCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgMjE5LCAyNiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIAotICAgIDIxOSwgMjcsIDMsIDIzNiwgMTA2LCAxNDIsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAyMTksIDI3LCAzLCA4MCwgMTQyLCAKLSAgICAxNzcsIDYxLCA1MiwgNDcsIDE3NywgNjEsIDUyLCA1MywgMjIwLCAzMiwgMjE5LCAyNiwgODYsIDYxLCA1MywgMjM5LCAxMjAsIAotICAgIDIwNCwgOTksIDE1MywgMjA0LCA0NiwgNTMsIDIwOCwgMTczLCAyNDUsIDE2NSwgMjExLCAyMzgsIDI0MSwgMTc2LCA1MywgCi0gICAgMjA4LCAxNzMsIDI0NSwgMTY1LCAxMTIsIDEyMSwgNjEsIDQ3LCA1MCwgNTMsIDMsIDUsIDI0NiwgNjEsIDE4MywgNTMsIDk2LCAKLSAgICA3NiwgMTc3LCA0NywgMTI2LCA4NiwgMjUwLCA5MSwgOTYsIDUzLCAzLCA4MCwgOTUsIDg2LCA1MywgMywgODAsIDk1LCA0OSwgCi0gICAgNTAsIDUzLCAzLCA4MCwgOTUsIDk2LCA1MywgMywgNTIsIDgwLCA5NSwgODYsIDUzLCAzLCA1MiwgODAsIDk1LCA0OSwgNTAsIAotICAgIDUzLCAzLCA1MiwgODAsIDk1LCA5NiwgMjIwLCA2LCA0NywgODYsIDIyMCwgNiwgNDcsIDQ5LCA1MCwgMjIwLCA2LCA0NywgCi0gICAgMzUsIDI1MSwgMTQsIDI0NSwgMjI4LCAyMTksIDY5LCAyNDMsIDIwNSwgMjA5LCA4MywgMjQwLCAyMDcsIDIwOSwgODMsIAotICAgIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQwLCAyMDgsIDI0MSwgOTQsIDIxMywgMTE3LCAyMzEsIDM4LCAyMjMsIDEwMSwgMjQxLCAKLSAgICAxMTUsIDIyMCwgNjksIDIyMSwgMTY2LCAyNTAsIDIzMiwgMjQxLCAxMTUsIDIyMCwgNjksIDUsIDI0MSwgMTE1LCAyMjAsIAotICAgIDY5LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjI0LCAyNDQsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQ1LCAxOTYsIDI1MCwgODIsIAotICAgIDIyNCwgMjQ0LCA1LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjI0LCAyNDQsIDI0MSwgODQsIDc2LCAyMTcsIDIxNCwgMjIzLCAKLSAgICAxNjIsIDIxNywgMjI0LCAyMjMsIDE2MiwgMjQ1LCAxNzEsIDIyMywgMTYyLCAyMTAsIDIxNywgMjI0LCAxMDMsIDU0LCAyMjQsIAotICAgIDEwMSwgNTQsIDcwLCAyMTgsIDc2LCAyNDMsIDEzNywgMjEyLCA1NywgMjEzLCAxMTgsIDIyNCwgMTAyLCAyNTAsIDYwLCAKLSAgICAyMTksIDI1NCwgMjE1LCAyNTMsIDIxOSwgMjU0LCAyNDcsIDE3OCwgMjE5LCAyNTQsIDUxLCAyMTUsIDIwNCwgMjQ1LCAxMDYsIAotICAgIDIxNSwgMjA0LCAyMzksIDE0MCwgMjE1LCAyMDQsIDIxNywgMjEwLCAxMzUsIDIzMSwgMjcsIDUwLCAyNTAsIDIxNywgMjUwLCAKLSAgICAyMTcsIDIyNSwgMTcsIDI1MCwgMjE3LCAyMTEsIDIwOCwgMjUwLCAyMTcsIDI0MywgMTM5LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAotICAgIDI0MywgMTQzLCAyMTksIDgyLCAxMzUsIDIyMSwgMTY2LCAyMTksIDgyLCAxMzUsIDIyNywgMzcsIDI1MCwgMjI2LCAyMjcsIAotICAgIDM3LCAyMTksIDI0NCwgMjMwLCAyNDQsIDIwNiwgMjM3LCAyMzEsIDIsIDUyLCAyMzEsIDIsIDIwOCwgNzAsIDIzMSwgMiwgCi0gICAgMjQ1LCAxODgsIDIzMSwgMiwgMjEwLCAxODksIDIzMSwgMiwgMjA1LCAxNzgsIDIzMSwgMiwgMjQ2LCAxOCwgMjMxLCAyLCAKLSAgICAyNDYsIDE4LCAyNDUsIDE4OCwgMjMxLCAyLCAyNTAsIDE5NCwgMjQ1LCAxODgsIDIzMSwgMiwgMjA5LCA4MiwgMjQ4LCAxNTIsIAotICAgIDIxNiwgMTY4LCAyMTcsIDIxMSwgNzAsIDIyNCwgMTAyLCAyNDAsIDIxNSwgMjM4LCAxNzIsIDIxNywgMjExLCAyMzYsIDEyMSwgCi0gICAgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTYsIDczLCAyMDgsIDIyNywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDIxMiwgMTIyLCAKLSAgICAyMDQsIDc1LCAyMDMsIDIyNiwgMjE3LCAyMjQsIDIyMSwgMTY2LCAyMDgsIDIyNywgMjI0LCAxMDMsIDIwOCwgMjI3LCAyNTAsIAotICAgIDUzLCAxNTYsIDEzNSwgMjIxLCAxNjYsIDI1MCwgNTMsIDE1NiwgMTM1LCAyNTAsIDE1MSwgMTU2LCAxMzUsIDI1MCwgMTUxLCAKLSAgICAyNDcsIDE0OCwgMjIxLCAxNjYsIDI1MSwgMTI3LCAxNTYsIDEzNSwgMjIyLCAyMzIsIDI1MCwgMTUxLCAyMjEsIDE3NSwgCi0gICAgMjUxLCAxMjcsIDE1NiwgMTM1LCAyNTEsIDcsIDE1NiwgMTM1LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgMjUxLCA3LCAKLSAgICAxNTYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjA4LCA3MCwgMjA4LCAyMjcsIDI1MSwgMTUsIDE1NiwgMTM1LCAyNDEsIDMwLCAKLSAgICAxMzUsIDIzOCwgMTcxLCAyNDEsIDMwLCAxMzUsIDI0MywgMjA2LCAyNDgsIDEwMywgMjUwLCAxNTMsIDIwOSwgOTMsIDIyNywgCi0gICAgMTIyLCAyMzgsIDE3MSwgMTU2LCAxMzUsIDI1MCwgMTUxLCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjA5LCA5MywgMjMxLCAKLSAgICA2NSwgMjIwLCA2OSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAyNTAsIDE1MSwgMTU2LCAxMzUsIDI0NSwgMjQzLCAyNDEsIAotICAgIDM0LCAyNDEsIDM1LCAyNDUsIDI0MiwgMjE1LCAyNTMsIDIzMSwgNTAsIDE1NiwgMTM1LCAyMTUsIDI1MywgMTU2LCAxMzUsIAotICAgIDI0NSwgMTU5LCAxMzUsIDI0MCwgMjU0LCAyNDEsIDMzLCAxMzUsIDIxMSwgOTUsIDI0MSwgMzQsIDI0NCwgMzgsIDE1NiwgCi0gICAgMTM1LCAxNTYsIDIwOCwgMTczLCAyNDcsIDEzNywgMjQ0LCA1NiwgMjI1LCAxNywgMjQ3LCAxMzYsIDIxNywgNDUsIDE1NiwgCi0gICAgMTM1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNSwgMTU0LCAxMzUsIDIyMSwgMTY2LCAyMzUsIDE1NCwgMTM1LCAyMTEsIDM5LCAKLSAgICAyNDEsIDMwLCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyMTksIDI0NSwgMTU2LCAxMzUsIAotICAgIDIyNywgMTc5LCAxMTUsIDE1NiwgMTM1LCAyMzcsIDI0NywgMTE1LCAxNTYsIDEzNSwgMjI3LCAxNzksIDI0NywgMTQ4LCAKLSAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjMsIDI0MCwgCi0gICAgMjI3LCAxNzgsIDIyMywgMjQwLCAyMzcsIDI0NiwgMjQ4LCAxMDMsIDIyMSwgMTY2LCAyNDEsIDMwLCAxMzUsIDIyMSwgMTY2LCAKLSAgICAyMjcsIDE3OCwgMjIxLCAxNjYsIDIzNywgMjQ2LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAxNTYsIDEzNSwgCi0gICAgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAKLSAgICAyMzcsIDI0NywgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMjQxLCAzMCwgCi0gICAgMTM1LCAyMjIsIDIzMiwgMjM3LCAyNDcsIDIyMSwgMTc1LCAyNDEsIDMwLCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjM3LCAKLSAgICAyNDYsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjI3LCAxNzgsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDIzNywgCi0gICAgMjQ2LCAyMjIsIDIzMiwgMjM3LCAyNDcsIDIyMSwgMTc1LCAyMjcsIDE3OCwgMjE3LCAyNDksIDIxMCwgMjM2LCAyMTcsIAotICAgIDI1MCwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDIzNywgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTcsIDI1MCwgMjE5LCAKLSAgICAyNDUsIDI0MSwgMzAsIDEzNSwgMjEwLCAyMzcsIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIDI0MywgMTA0LCAyMjEsIDE2NiwgCi0gICAgMjE3LCAyNTIsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjEwLCAyMzgsIDIxMCwgMjQ1LCAyMjAsIDY5LCAyMTAsIDE5OCwgMjIwLCAKLSAgICA2OSwgMjIxLCAxNjYsIDM0LCAyMTAsIDI0NSwgMjIwLCA2OSwgMjIxLCAxNjYsIDM0LCAyMTAsIDE5OCwgMjIwLCA2OSwgCi0gICAgMjEwLCAyNDUsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMTk4LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjIsIAotICAgIDIzMiwgMzQsIDIxMCwgMjQ1LCA3NiwgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMjIsIDIzMiwgMzQsIDIxMCwgMTk4LCA3NiwgCi0gICAgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMTAsIDI0NSwgNzYsIDMsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAxOTgsIDc2LCAzLCAKLSAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIyMywgMjIxLCAyMjMsIDIyMiwgMjIzLCAyMjMsIDIyMywgMjIyLCAyMDYsIDIzNywgNTEsIAotICAgIDIzMSwgNjUsIDIyMCwgNjksIDUxLCAyMTksIDIzNiwgMjIwLCA2OSwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMTU2LCAKLSAgICAxMzUsIDUxLCAyMTksIDIzNiwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgNTEsIDI0NywgNDgsIDUxLCAyNDUsIDk5LCA0MywgCi0gICAgMjE4LCA3NiwgNDMsIDIyNCwgMTAyLCA0MywgMjA4LCAyMTksIDQzLCAyNDMsIDEzNywgMjEyLCA1NywgNDMsIDcwLCAyMTksIAotICAgIDI1NCwgNDMsIDIxNSwgMjUzLCAyMTksIDI1NCwgNDMsIDI1MCwgNjAsIDIxOSwgMjU0LCA0MywgMjQxLCAzNCwgNDMsIDI0NCwgCi0gICAgMTQ0LCAxMDMsIDIxOCwgNzYsIDEwMywgMjI0LCAxMDIsIDEwMywgMjA4LCAyMTksIDEwMywgNzAsIDIxOSwgMjU0LCA1MCwgCi0gICAgMjEwLCAzLCA0OSwgMjEwLCAzLCAxMjEsIDIxMCwgMywgMTEyLCAyMTAsIDMsIDI1MCwgNjMsIDIyNCwgNzcsIDIwOCwgNDksIAotICAgIDIzOSwgMTY1LCAyMDgsIDcwLCA4MCwgMjQ4LCAyMzEsIDUwLCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDUwLCAKLSAgICAyMDcsIDE3MywgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTcsIDIwNSwgMjIxLCAxNjYsIDIwOCwgNDksIDI0MywgMTA0LCAyMjEsIAotICAgIDE2NiwgMjM5LCAxNjYsIDIyMiwgMjM0LCA1MiwgODAsIDI0OCwgMjMxLCA1MiwgNTAsIDIwNywgMTczLCAyMTcsIDI1MCwgCi0gICAgMjA2LCAyNDgsIDIxNiwgMTE3LCAyMTAsIDIzNywgMjA2LCAyNDgsIDIxNiwgMTE3LCAyMjEsIDE3MiwgMjExLCAyLCAyMjAsIAotICAgIDY5LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMSwgMjIxLCAxNzIsIDIxMSwgMiwgNzYsIDIxOSwgMjQ1LCAKLSAgICAxNTYsIDEzNSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDIsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjE5LCAKLSAgICAyMzYsIDIyMCwgNjksIDIzMSwgNjUsIDIyMCwgNjksIDIyMywgMjI4LCAyMzcsIDI0LCAyNDUsIDIwNSwgMjI1LCA2OSwgCi0gICAgMjMwLCAyNTUsIDIwMywgMTU2LCAyMjMsIDgxLCAyMjEsIDE3NCwgNTAsIDI1MCwgMjE4LCAzLCAyNTAsIDEyOCwgNTAsIAotICAgIDIwOCwgODUsIDIyMywgMTYyLCAyMjcsIDM3LCAyNTAsIDIyNiwgMjIzLCAxNjIsIDIyNywgMzcsIDIxOSwgMjQ0LCAyMjMsIAotICAgIDE2MiwgMjMwLCAyNDQsIDIyMywgMTYyLCAyMDYsIDIzNywgMjQzLCAyMjIsIDIxOSwgMjU0LCA3MCwgMjE5LCAyNTQsIDIxMSwgCi0gICAgOTUsIDIxOSwgMjU0LCAyNDMsIDEzNywgMjA4LCAyMTksIDI0NywgMjM0LCA0OSwgMjIxLCAxNzIsIDI0MCwgOTIsIDIxMywgCi0gICAgMTQyLCAyMTcsIDIyNCwgNTAsIDIyMSwgMTcyLCAyNDAsIDkyLCAyMTMsIDE0MiwgMjE3LCAyMjQsIDQ5LCAyMTMsIDE0MiwgCi0gICAgMjE3LCAyMjQsIDUwLCAyMTMsIDE0MiwgMjE3LCAyMjQsIDIxNiwgNzMsIDIwOCwgMjI4LCAyNDEsIDM0LCAyNDUsIDkzLCAKLSAgICAyMjcsIDM3LCAyMTksIDI0NCwgMjQ1LCA5MywgMjI3LCAzNywgMjUwLCAyMjYsIDUyLCAyMTAsIDI0NCwgNTIsIDIxMCwgCi0gICAgMTk3LCA1MiwgMjMwLCAyNDQsIDUyLCAyMDYsIDIzNywgMjE4LCAxMDMsIDE1NiwgMjUsIDIxOSwgODIsIDEzNSwgMjI3LCAKLSAgICAxNzksIDMsIDI0MywgODUsIDIzNywgMjQ3LCAzLCAyNDMsIDg1LCAyMDUsIDI0MiwgMjIzLCAyNDAsIDIyNywgMTc4LCAyMDUsIAotICAgIDI0MiwgMjIzLCAyNDAsIDIzNywgMjQ2LCAyMjcsIDE3OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAKLSAgICAyMzcsIDI0NywgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgCi0gICAgMjI3LCAxNzgsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIAotICAgIDIxNywgMjQ5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjEwLCAyMzYsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjE3LCAKLSAgICAyNTMsIDIxOSwgMjQ1LCAyNDEsIDM2LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxMCwgMjM5LCAyMTksIDI0NSwgMjQxLCAzNiwgCi0gICAgMjIxLCAxNjYsIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjEsIDE2NiwgNTEsIDIxOSwgMjM2LCAKLSAgICA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIAotICAgIDUxLCAyMTksIDIzNiwgNzYsIDIxOSwgMjQ1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIyNywgMTc5LCAyNDcsIDE0OCwgMjIxLCAKLSAgICAxNjYsIDI0MSwgMzAsIDEzNSwgMjM3LCAyNDcsIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMTcsIDI1MCwgCi0gICAgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAxMzUsIDIxMCwgMjM3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIAotICAgIDEzNSwgMjIxLCAxNjYsIDIyMSwgMTcyLCAyMTEsIDIsIDIyMCwgNjksIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQ1LCAxOTYsIAotICAgIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDEsIDIyMSwgMTY2LCAyMjEsIDE3MiwgMjExLCAyLCA3NiwgMjE5LCAyNDUsIDE1NiwgCi0gICAgMTM1LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAyLCAyMTksIDI0NSwgCi0gICAgMjQxLCAzNiwgODAsIDI0MSwgMTA4LCAyMjQsIDE0NiwgMjM2LCAxMDYsIDI0MSwgMTA4LCAxMTIsIDUwLCAyNDMsIDIyOCwgCi0gICAgMjQxLCAxMDgsIDEyMSwgNTAsIDI0MywgMjI4LCAyNDEsIDEwOCwgMjQxLCAxMTUsIDc2LCAzLCAxNjMsIDIzNiwgMTA2LCAKLSAgICA5NSwgMjQxLCAxMTUsIDc2LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgODQsIDc2LCAyMzYsIDEwNiwgOTUsIDUsIAotICAgIDI0MSwgMTE1LCA3NiwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCAyNDEsIAotICAgIDExNSwgNzYsIDMsIDcwLCA1NSwgMjQxLCAxMTUsIDc2LCAzLCAyMTksIDIwMywgNSwgMjQxLCAxMTUsIDc2LCAzLCAyMTksIAotICAgIDIwMywgMjQxLCAxMTUsIDc2LCAzLCAyMDYsIDI0NiwgMjQxLCAxMTUsIDc2LCAzLCAxMjAsIDIzNiwgMTA2LCAyMTEsIDE5LCAKLSAgICAyNDUsIDE5NCwgMywgMTYzLCAyMzYsIDEwNiwgOTUsIDI0NSwgMTk0LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgCi0gICAgODQsIDc2LCAyMzYsIDEwNiwgOTUsIDUsIDI0NSwgMTk0LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgODQsIDc2LCAKLSAgICAyMzYsIDEwNiwgOTUsIDI0NSwgMTk0LCAzLCAyMTksIDIwMywgNSwgMjQ1LCAxOTQsIDMsIDIxOSwgMjAzLCAyMDIsIDE2MCwgCi0gICAgMjIxLCAxNjQsIDI0OSwgMTEsIDIyNCwgMjQzLCAyNDMsIDIyMywgNTQsIDI0MSwgMTE3LCA0NywgMjM2LCAzOCwgMTEyLCAKLSAgICAyNTAsIDk0LCAxMjEsIDI1MCwgOTQsIDIxNywgMjE4LCAyMTgsIDIyNywgMjA0LCA3MiwgMjI3LCAxMTQsIDQ5LCAyNDYsIAotICAgIDIyNiwgNTAsIDI0NiwgMjI2LCA0OSwgMjM5LCAyMDQsIDUwLCAyMzksIDIwNCwgMjQ3LCAyNDgsIDUwLCAyNDUsIDEzMiwgCi0gICAgMjQ3LCAyNDgsIDQ5LCAyNDUsIDEzMiwgMjA4LCAxNDUsIDUwLCAyNDUsIDEzMiwgMjA4LCAxNDUsIDQ5LCAyNDUsIDEzMiwgCi0gICAgMjE2LCA3MywgMjIxLCAxNjYsIDU0LCA1MSwgMjI2LCAyNDYsIDI1MCwgMTI4LCAyMTQsIDE1OCwgMjE0LCAxNjYsIDIwOSwgCi0gICAgMTYyLCAyMTYsIDE0NywgMjE4LCAzNCwgMjMxLCAzMSwgMjA1LCAyMTgsIDIxMSwgMTc3LCAyMTgsIDk3LCA3NiwgMjMwLCAKLSAgICAyNTQsIDU0LCAyMDcsIDE3NCwgMjIxLCAxNjYsIDU0LCAyMDQsIDgyLCAyMzYsIDQwLCAyMDgsIDE0NSwgNDksIDI0NSwgCi0gICAgMTY1LCAyMDgsIDE0NSwgNTAsIDI0NSwgMTY1LCAyNDcsIDI0OCwgNDksIDI0NSwgMTY1LCAyNDcsIDI0OCwgNTAsIDI0NSwgCi0gICAgMTY1LCAyMDgsIDE0NSwgMTYyLCAyMzEsIDIsIDI0NywgMjQ4LCAxNjIsIDIzMSwgMiwgMjM5LCAxMTUsIDIxMiwgMzEsIAotICAgIDExMiwgMjUwLCA5NSwgMjQ4LCAxMDQsIDEyMCwgMjM2LCAxMDYsIDI0OCwgMjIwLCAyMTksIDI0NywgMjI5LCAxNTEsIDI0MSwgCi0gICAgMjYsIDIwOCwgMTczLCAyMDksIDkzLCAyMTYsIDE2LCAyMDMsIDE5NywgMjMxLCA1MCwgMzQsIDIxNiwgMTQ0LCAyNDcsIAotICAgIDIzMywgMjI5LCAxNDksIDIyNywgMjE3LCAyNTAsIDIxOCwgMTU1LCAyMTYsIDExLCAyNTAsIDIxOCwgMTU1LCAyNDEsIDI2LCAKLSAgICAyMDgsIDE3MywgMjA5LCA5MywgMjI3LCAyMjIsIDI0OCwgMTE1LCAyMTUsIDI1MiwgMjQ1LCA2MSwgMjUxLCAxNSwgMjUwLCAKLSAgICAxMDMsIDIxMCwgMTAwLCAyMDgsIDEzMCwgMjE1LCAxMjUsIDI0MywgMTg1LCAyMTksIDIzNywgMjQ1LCAyMDksIDIwOSwgCi0gICAgMjIwLCAyMTIsIDQ0LCAyNDUsIDE1NSwgMjQ1LCAxNTQsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjM1LCAyMDMsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjExLCAxNjksIDIxNywgNjIsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQxLCAKLSAgICAzNiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDMsIDE0MywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIAotICAgIDYzLCAyNDMsIDIyMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIxNywgNjMsIDI0NiwgNjEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjExLCA2OSwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMiwgNTgsIDE0MiwgMjUwLCAKLSAgICAxNjksIDIzOSwgOTgsIDE2LCAyNDksIDIxLCAxNDIsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjEyLCA1NywgCi0gICAgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDksIDIwLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIAotICAgIDIyNywgMTc4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIzNywgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDk2LCAyMDYsIDc2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDg2LCAyMDYsIDc2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIxNywgNjMsIDk2LCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCA4NiwgNDcsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjQ5LCAyMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMjEsIDIxMCwgNCwgMjA2LCAKLSAgICAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCAzOCwgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIAotICAgIDYzLCAxMjEsIDI0NywgMzMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ0LCAzNywgMjUwLCAxNjksIDIzOSwgCi0gICAgOTgsIDE2LCAxMjEsIDIxMCwgNCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxNzcsIDIwNiwgNzYsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMTc3LCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMTIsIDIxMCwgNCwgCi0gICAgMjE5LCAyMDMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKLSAgICAyMTcsIDYzLCAxMTIsIDI0NywgMzMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ0LCA0OCwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAxMTIsIDIxMCwgNCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxODMsIDIwNiwgNzYsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMTgzLCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDMwLCAKLSAgICAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDM4LCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyNDMsIDIyMiwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjMwLCA4OSwgMjA2LCAyNDYsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyMTIsIAotICAgIDI0MCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDMwLCAyMTcsIDYyLCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDI0NiwgNjIsIDIxMSwgOTQsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ1LCAyNDIsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDI0MywgCi0gICAgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMSwgOTUsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIAotICAgIDIzMCwgODksIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDI0MywgMjMxLCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDEyMSwgMjEyLCAyNDAsIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgNDksIDIxMiwgMjQwLCAKLSAgICAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIwOCwgMjI4LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMzcsIDI0NywgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ1LCAyMzQsIDE0MiwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMDIsIDI5LCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDIxMSwgNzAsIDIwOCwgMjI3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMywgMTQ0LCAyMDYsIAotICAgIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMjEsIDE2NiwgMjQxLCAzNiwgMjUwLCAxNjksIDIzOSwgCi0gICAgOTgsIDE2LCAyMTcsIDYzLCAyMTcsIDQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDEyMSwgMjQ3LCAzNCwgMjA4LCAyMjcsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyNDcsIDM0LCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKLSAgICAyMzAsIDIzMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTYsIDU5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIyMCwgMzYsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjUxLCAzLCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDEsIDM4LCAKLSAgICAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMzAsIDIzMSwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjIwLCAzNywgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjUxLCAyLCAyMjEsIDE2NiwgMjQ2LCAxNjksIAotICAgIDgyLCA1MCwgMjUwLCAyMTgsIDMsIDE4MywgMjAyLCAzMCwgNDcsIDIxMiwgMjEwLCAxNzEsIDI0NywgMjMzLCAyNDgsIDEyOSwgCi0gICAgOTcsIDgwLCAyMjcsIDExNSwgMywgMTAxLCAyNDMsIDg1LCAyMzEsIDgsIDk3LCAyNDUsIDE4OSwgMjA2LCAyNDQsIDk3LCAKLSAgICAyNDMsIDE1OCwgMjA2LCAyNDQsIDk3LCAyNDEsIDk2LCA5NywgMjQ1LCAyMjQsIDk3LCA2MSwgNTEsIDMsIDI0NiwgMjE4LCAKLSAgICA4MCwgMjI3LCAxMTQsIDI0MSwgNjgsIDk3LCAyNTAsIDI1MCwgMjI5LCAxNTIsIDk3LCAyMzcsIDM3LCA5NywgNDMsIDIzNiwgCi0gICAgMTA2LCAyNDgsIDIzMSwgMywgMjIxLCAxNjMsIDQzLCAyMDgsIDg2LCAyNDIsIDcwLCAyNDcsIDIwMywgMjQ2LCA2MiwgMywgCi0gICAgMjIxLCAxNjksIDQ3LCAyMDYsIDI0MiwgOTcsIDIyNCwgNDAsIDk3LCAyMzUsIDIxNiwgOTcsIDIyMCwgNywgMjM3LCAxNzAsIAotICAgIDk3LCAyMjAsIDcsIDIyOCwgMTI5LCA5NywgMjE5LCA1OSwgOTcsIDIxOSwgNTgsIDk3LCAyNDMsIDE2NywgMjQ1LCA5MSwgCi0gICAgMTYsIDIzOSwgMTU5LCAxMDgsIDIxMiwgNSwgOTcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MiwgMjQ0LCA2OCwgCi0gICAgMjEzLCAxMzEsIDIyOSwgMTUyLCA5NywgMjE3LCAyMzgsIDIxOSwgMTUzLCAyMjIsIDIwOCwgMjE5LCAxNTMsIDIxNywgMjM0LCAKLSAgICAyMTQsIDE4NSwgOTcsIDI0NiwgMzMsIDIxNCwgMTg1LCA5NywgNDksIDIxOSwgNzcsIDIwNiwgMjIxLCAxMTMsIDQ5LCAyMTksIAotICAgIDc3LCAyNDAsIDIwMCwgNDksIDIxOSwgNzcsIDIyNiwgMjUxLCAxMTMsIDUwLCAyMTksIDc3LCAyMDYsIDIyMSwgMTEzLCA1MCwgCi0gICAgMjE5LCA3NywgMjQwLCAyMDAsIDUwLCAyMTksIDc3LCAyMjYsIDI1MSwgMTEzLCA0OSwgNTEsIDI0NywgMjI3LCAyMDYsIAotICAgIDIyMSwgMjQ1LCAxNjUsIDQ5LCA1MSwgMjQ3LCAyMjcsIDI0MCwgMjAwLCA0OSwgNTEsIDI0NywgMjI3LCAyMjYsIDI1MSwgCi0gICAgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDIwNiwgMjIxLCAyNDUsIDE2NSwgNTAsIDUxLCAyNDcsIDIyNywgMjQwLCAKLSAgICAyMDAsIDUwLCA1MSwgMjQ3LCAyMjcsIDIyNiwgMjUxLCAyNDUsIDE2NSwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMDYsIAotICAgIDIyMSwgMTEzLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDEwMSwgMjE4LCAxNTksIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgCi0gICAgMjI2LCAyNTEsIDExMywgMjQ1LCA5MywgMjQ3LCAyMjcsIDI0MCwgMjAwLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIwNiwgCi0gICAgMjIxLCAxMTMsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMTAxLCAyMTgsIDE1OSwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAKLSAgICAyMjYsIDI1MSwgMTEzLCAyMzEsIDMsIDI0MCwgMjAwLCAyMzYsIDEwNiwgMjI3LCAxMTUsIDI0MCwgMjAwLCAyMDYsIDIyMSwgCi0gICAgNDksIDIxOSwgMjQ1LCAyMjYsIDI1MSwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMTQsIDE2NywgMjA2LCAyMjEsIDUwLCAKLSAgICAyMTksIDI0NSwgMjI2LCAyNTEsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjE0LCAxNjcsIDIxMCwgMjE4LCAyMDgsIDE0NCwgCi0gICAgMjEwLCAyMTgsIDI0NywgMjQ3LCAyMDgsIDE0NSwgNTEsIDE1NSwgMjQ3LCAyNDgsIDUxLCAxNTUsIDI0NywgMjQ4LCA1MSwgCi0gICAgMjQ3LCAyMjcsIDExNSwgMjA4LCAxNDUsIDUxLCAxNTUsIDQwLCAxNiwgMjQ3LCAyNDcsIDQ5LCA4MCwgOTgsIDIyNywgMTE0LCAKLSAgICA1MCwgODAsIDk4LCAyMjcsIDExNCwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMywgMjM2LCAxMDYsIDIxNCwgMjAyLCAKLSAgICAyMjcsIDExMiwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMSwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMCwgCi0gICAgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAyMDgsIDE0NSwgMjE2LCAxNiwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAKLSAgICAyNDcsIDI0OCwgMjE2LCAxNiwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDMsIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIAotICAgIDEyMSwgMjUsIDIzNiwgMTA2LCAzLCAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNiwgMywgCi0gICAgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDMsIDIwOCwgODUsIDI0NCwgMjksIDE2LCAxNTcsIDEyMSwgMjUsIAotICAgIDIzNiwgMTA2LCAzLCAyMDgsIDg1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNiwgMywgMjA4LCA4NSwgCi0gICAgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNiwgCi0gICAgMywgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAKLSAgICAxNTcsIDEyMSwgMjUsIDIzNiwgMTA1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNSwgMjQ0LCAyOSwgMTYsIAotICAgIDE1NywgODAsIDI1LCAyMDgsIDE0NSwgMjI3LCAyMjIsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjQ3LCAyNDgsIDIyNywgCi0gICAgMjIyLCA1MSwgMjM5LCAxNzIsIDIxNiwgNzgsIDk3LCAyNDEsIDEzMSwgOTcsIDgwLCAyMjcsIDExNSwgMjQwLCAyMDAsIAotICAgIDIyNCwgMjE0LCAyNDcsIDIxNCwgMjI0LCAyMTQsIDE2MywgMTE1LCAyMTIsIDIyNywgMjI0LCAyMTQsIDIxMiwgMjI4LCAKLSAgICAxMTUsIDIyNywgMjgsIDIyNCwgMjE0LCAxNjMsIDExNSwgMTIwLCAyMTIsIDIxMywgMjI0LCAyMTQsIDEyMCwgMjEyLCAyMTQsIAotICAgIDExNSwgMjI3LCAyOCwgMjI0LCAyMTQsIDEyMCwgMjEyLCAyMTQsIDIzMCwgOTcsIDIyNCwgMjE0LCAyMDgsIDY2LCAyMjQsIAotICAgIDIxNCwgMjA5LCAxMjQsIDIyNCwgMjE0LCAyMTgsIDI1MywgMjQxLCAxODAsIDIzNywgMjM5LCAyMzksIDkyLCAyMDgsIDE0NSwgCi0gICAgMjE5LCA3NiwgMjQ3LCAyNDgsIDIxOSwgNzYsIDIwOCwgMTQ1LCAyNDUsIDkzLCAxNTUsIDI0NywgMjQ4LCAyNDUsIDkzLCAKLSAgICAxNTUsIDIwOCwgMTQ1LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAyNDcsIDI0OCwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgCi0gICAgNjEsIDIwOCwgMTAxLCAyNDgsIDExNSwgMjE1LCAyNTMsIDMsIDI0NiwgNjEsIDIxMSwgNTEsIDIzOSwgMjE1LCAyNTEsIAotICAgIDE0MiwgMjQ1LCA5MCwgMjQxLCAxMTYsIDIzMCwgMjQ0LCAyNDQsIDY4LCAyNDAsIDIwNCwgOTcsIDYyLCAyMTYsIDExLCA1MiwgCi0gICAgMjA4LCA4NSwgNjIsIDIyNywgMjE3LCA1MiwgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCA1MiwgMjA4LCA4NSwgNjIsIDI0MiwgCi0gICAgNjksIDUyLCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgNTIsIDIwOCwgODYsIDMsIDgwLCAxNDIsIDYyLCAyMjcsIDIxNywgNTIsIAotICAgIDIwOCwgODYsIDMsIDgwLCAxNDIsIDYyLCAyMTYsIDExLCAyMDgsIDg2LCAzLCA1MiwgODAsIDE0MiwgMjUxLCAzNCwgMjQ2LCAKLSAgICAxOSwgMjExLCA1OCwgMjA4LCAyMjAsIDI0NiwgMTksIDIzNiwgNDEsIDMsIDIzOSwgMTk1LCAyMTQsIDI0MSwgNjIsIDIyNSwgCi0gICAgMTAsIDIyNywgMjE3LCAyMDgsIDg1LCA2MiwgMjI1LCAxMCwgMjE2LCAxMSwgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDIwNiwgCi0gICAgMjIzLCAyMDgsIDg1LCA2MiwgMjI1LCAxMCwgMjQyLCA2OSwgMjA4LCA4NSwgNTIsIDgwLCAxNDIsIDYyLCA1MSwgMzUsIAotICAgIDIxMSwgNjEsIDYyLCAyNDYsIDYyLCAzNSwgMjE2LCAxNDgsIDE2LCAzNSwgMjIxLCA0OCwgMTYsIDM1LCAyMTEsIDkwLCA3NiwgCi0gICAgMjM3LCA2MSwgMTYsIDM1LCAyMTEsIDkwLCA3NiwgMjA5LCAxMTIsIDE2LCAzNSwgMjQxLCA4NCwgNzYsIDIwOSwgMTEyLCAKLSAgICAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMDgsIDEwNSwgMTYsIDM1LCAyNDEsIDcxLCAxNiwgMzUsIDI1MSwgMTMwLCAxNiwgMzUsIAotICAgIDI0OCwgMTI4LCAxNiwgMzUsIDI0OSwgMTksIDE2LCAzNSwgMjM2LCAxMDYsIDIxMCwgNSwgMTYsIDM1LCAyMjcsIDExNSwgCi0gICAgMjQwLCA1MSwgMTYsIDM1LCA4MCwgMjEwLCA1LCAxNiwgMzUsIDIzOSwgMTU5LCAyNDAsIDUxLCAxNiwgMzUsIDI0NywgMjUsIAotICAgIDIxNiwgNzcsIDE2LCAzNSwgMjEzLCA3LCAyMTksIDIxMSwgMTYsIDM1LCAyMTMsIDcsIDIzMSwgNDksIDE2LCAzNSwgMjQ0LCAKLSAgICAxMzksIDIyNywgMTA1LCAyNDEsIDksIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgMTA1LCAxNiwgMzUsIDI0NCwgOCwgCi0gICAgMjQ1LCAxODQsIDEwOCwgMTYsIDM1LCAyNDQsIDgsIDI0NSwgMTg0LCAxNDcsIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgCi0gICAgMTQ5LCAxNiwgMzUsIDE4MiwgMjUxLCAxMzAsIDE2LCAzNSwgMjEwLCA5NSwgMjMxLCAxMTIsIDE2LCAzNSwgMjQxLCA4NCwgCi0gICAgNzYsIDIwOCwgMTA2LCAyNDgsIDMzLCAxNiwgMzUsIDI0NywgNTksIDE2LCAzNSwgMjQxLCA4NCwgNzYsIDIyNSwgOSwgMTYsIAotICAgIDM1LCAyMTAsIDI0MiwgMTYsIDM1LCAyNDEsIDksIDE2LCAzNSwgMjQwLCAxMSwgMjEzLCAxMzAsIDE2LCAzNSwgMjM3LCAKLSAgICAyMzgsIDIxMywgMTMwLCAxNiwgMzUsIDIxNiwgMTQ5LCAyMTMsIDEzMCwgMTYsIDM1LCAyMDYsIDIzNiwgMjEzLCAxMzAsIAotICAgIDE2LCAzNSwgMjExLCAyMjgsIDE2LCAzNSwgMjQ0LCA0NiwgMjQ4LCAzNywgOTcsIDE3MSwgMjQ3LCAyMzMsIDE2LCAzNSwgCi0gICAgMjIyLCAyMTEsIDE2LCAzNSwgMjQ0LCA0NywgMjM5LCAxNTksIDEwOCwgMTYsIDM1LCAyMTAsIDI0MywgMjM5LCAxNTksIAotICAgIDEwOCwgMjIwLCA4MiwgMTEzLCAyMjAsIDgyLCAyNDYsIDE5NCwgMjIwLCA4MiwgMjM5LCAxNjIsIDIyMCwgODIsIDIzMCwgCi0gICAgMjM5LCAyMzksIDE2MiwgMjIwLCA4MiwgMjQ4LCAxMjUsIDI0NywgMTkwLCAyMjAsIDgyLCAyNDcsIDI0MSwgMjA4LCAyNTAsIAotICAgIDIyMCwgODIsIDI0NywgMjI0LCAyNDgsIDIzNiwgMjM1LCAxNTMsIDIyMCwgODIsIDI1MCwgMjM3LCA3NiwgMjQ2LCAxNjgsIAotICAgIDIyMCwgODIsIDI0NCwgMTQ0LCAyMjAsIDgyLCAyNDUsIDgwLCAyNTEsIDEzNCwgMjIxLCA0NiwgMjIwLCA4MiwgNTIsIDI0OSwgCi0gICAgMjAsIDQzLCAxNywgMTA1LCA0MywgMTcsIDEwOCwgNDMsIDE3LCAxNDcsIDQzLCAxNywgMTQ5LCA0MywgMTcsIDE3MCwgNDMsIAotICAgIDE3LCAxOTUsIDQzLCAxNywgMjEzLCAxMTEsIDQzLCAxNywgMTk5LCA0MywgMTcsIDIyMiwgNjMsIDQzLCA0MiwgMjA5LCAKLSAgICAxNTIsIDQzLCA0MiwgMjQxLCAxMTIsIDQzLCA0MiwgMjA3LCAxNTQsIDQzLCA0MiwgMjA5LCA1NSwgNDMsIDQyLCAyMzksIAotICAgIDE0MSwgNDMsIDQyLCAyNDAsIDIyLCA0MywgNDIsIDIxMiwgODIsIDQzLCA0MiwgMjEzLCAxMDgsIDQzLCA0MiwgMjQxLCAKLSAgICAxNDAsIDQzLCA0MiwgMjIyLCA2MCwgNDMsIDQyLCAyMDcsIDE1MSwgMTAyLCAxNywgMTA1LCAxMDIsIDE3LCAxMDgsIDEwMiwgCi0gICAgMTcsIDE0NywgMTAyLCAxNywgMTQ5LCAxMDIsIDE3LCAxNzAsIDEwMiwgMTcsIDE5NSwgMTAyLCAxNywgMjEzLCAxMTEsIAotICAgIDEwMiwgMTcsIDE5OSwgMTAyLCAxNywgMjIyLCA2MywgMTAyLCA0MiwgMjA5LCAxNTIsIDEwMiwgNDIsIDI0MSwgMTEyLCAKLSAgICAxMDIsIDQyLCAyMDcsIDE1NCwgMTAyLCA0MiwgMjA5LCA1NSwgMTAyLCA0MiwgMjM5LCAxNDEsIDEwMiwgNDIsIDI0MCwgMjIsIAotICAgIDEwMiwgNDIsIDIxMiwgODIsIDEwMiwgNDIsIDIxMywgMTA4LCAxMDIsIDQyLCAyNDEsIDE0MCwgMTAyLCA0MiwgMjIyLCA2MCwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTEsIDE3LCAxMTgsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMTIwLCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgMTcsIDEyNiwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMzksIDE0NywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMzksIAotICAgIDIzMywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMTIsIDg4LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIxMywgMTEyLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDI0MSwgMTQzLCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIyMiwgNjQsIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCA0MiwgMjA5LCAxNTMsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQxLCAxMTMsIDIzOSwgMTAyLCAKLSAgICAyMTEsIDYxLCA0MiwgMjA3LCAxNTUsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjA5LCA1NiwgMjM5LCAxMDIsIDIxMSwgNjEsIAotICAgIDQyLCAyMzksIDE0MiwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyNDAsIDIzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIxMiwgCi0gICAgODMsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjEzLCAxMDksIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQxLCAxNDEsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjIyLCA2MSwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMDcsIDE1MiwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDEwMiwgOCwgNSwgMSwgNjMsIDEwMiwgOCwgNSwgMSwgMjQ5LCAyNTUsIDEwMiwgOCwgNSwgMSwgCi0gICAgMjQ3LCAxMjUsIDEwMiwgOCwgNSwgMSwgMjQ1LCA1MSwgMTAyLCA4LCA1LCAxLCA3NCwgMTAyLCA4LCA1LCAxLCAyNDAsIAotICAgIDE3NCwgMTAyLCA4LCA1LCAxLCAyMzksIDc1LCAxMDIsIDgsIDUsIDEsIDIzNywgMTcxLCAxMDIsIDgsIDUsIDEsIDc1LCAKLSAgICAxMDIsIDgsIDUsIDEsIDIzMCwgMTg0LCAxMDIsIDgsIDUsIDEsIDIzMCwgNTQsIDEwMiwgOCwgNSwgMSwgMTU5LCAxMDIsIDgsIAotICAgIDUsIDEsIDIyNiwgMTg1LCAxMDIsIDgsIDUsIDEsIDIyMywgMTYzLCAxMDIsIDgsIDUsIDEsIDc4LCAxMDIsIDgsIDUsIDEsIAotICAgIDIxOSwgMTg0LCAxMDIsIDgsIDUsIDEsIDIxNywgMTM0LCAxMDIsIDgsIDUsIDEsIDE0NiwgMTAyLCA4LCA1LCAxLCAxOTQsIAotICAgIDEwMiwgOCwgNSwgMSwgMjEwLCA2OSwgMTAyLCA4LCA1LCAxLCA2OCwgMTAyLCA4LCA1LCAxLCAyMDYsIDE2NCwgMTAyLCA4LCAKLSAgICA1LCAxLCAyMDQsIDE0NCwgMTAyLCA4LCA1LCAxLCAyMDMsIDE5NiwgMTAyLCA4LCA1LCAxLCAyMDMsIDEyNCwgMTAyLCA4LCAKLSAgICA1LCAxLCAyMDIsIDE1OSwgNDMsIDgsIDYsIDEsIDYzLCA0MywgOCwgNiwgMSwgMjQ5LCAyNTUsIDQzLCA4LCA2LCAxLCAyNDcsIAotICAgIDEyNSwgNDMsIDgsIDYsIDEsIDI0NSwgNTEsIDQzLCA4LCA2LCAxLCA3NCwgNDMsIDgsIDYsIDEsIDI0MCwgMTc0LCA0MywgOCwgCi0gICAgNiwgMSwgMjM5LCA3NSwgNDMsIDgsIDYsIDEsIDIzNywgMTcxLCA0MywgOCwgNiwgMSwgNzUsIDQzLCA4LCA2LCAxLCAyMzAsIAotICAgIDE4NCwgNDMsIDgsIDYsIDEsIDIzMCwgNTQsIDQzLCA4LCA2LCAxLCAxNTksIDQzLCA4LCA2LCAxLCAyMjYsIDE4NSwgNDMsIAotICAgIDgsIDYsIDEsIDIyMywgMTYzLCA0MywgOCwgNiwgMSwgNzgsIDQzLCA4LCA2LCAxLCAyMTksIDE4NCwgNDMsIDgsIDYsIDEsIAotICAgIDIxNywgMTM0LCA0MywgOCwgNiwgMSwgMTQ2LCA0MywgOCwgNiwgMSwgMTk0LCA0MywgOCwgNiwgMSwgMjEwLCA2OSwgNDMsIAotICAgIDgsIDYsIDEsIDY4LCA0MywgOCwgNiwgMSwgMjA2LCAxNjQsIDQzLCA4LCA2LCAxLCAyMDQsIDE0NCwgNDMsIDgsIDYsIDEsIAotICAgIDIwMywgMTk2LCA0MywgOCwgNiwgMSwgMjAzLCAxMjQsIDQzLCA4LCA2LCAxLCAyMDIsIDE1OSwgNDMsIDgsIDUsIDEsIDYzLCAKLSAgICA0MywgOCwgNSwgMSwgMjQ5LCAyNTUsIDQzLCA4LCA1LCAxLCAyNDcsIDEyNSwgNDMsIDgsIDUsIDEsIDI0NSwgNTEsIDQzLCAKLSAgICA4LCA1LCAxLCA3NCwgNDMsIDgsIDUsIDEsIDI0MCwgMTc0LCA0MywgOCwgNSwgMSwgMjM5LCA3NSwgNDMsIDgsIDUsIDEsIAotICAgIDIzNywgMTcxLCA0MywgOCwgNSwgMSwgNzUsIDQzLCA4LCA1LCAxLCAyMzAsIDE4NCwgNDMsIDgsIDUsIDEsIDIzMCwgNTQsIAotICAgIDQzLCA4LCA1LCAxLCAxNTksIDQzLCA4LCA1LCAxLCAyMjYsIDE4NSwgNDMsIDgsIDUsIDEsIDIyMywgMTYzLCA0MywgOCwgNSwgCi0gICAgMSwgNzgsIDQzLCA4LCA1LCAxLCAyMTksIDE4NCwgNDMsIDgsIDUsIDEsIDIxNywgMTM0LCA0MywgOCwgNSwgMSwgMTQ2LCAKLSAgICA0MywgOCwgNSwgMSwgMTk0LCA0MywgOCwgNSwgMSwgMjEwLCA2OSwgNDMsIDgsIDUsIDEsIDY4LCA0MywgOCwgNSwgMSwgCi0gICAgMjA2LCAxNjQsIDQzLCA4LCA1LCAxLCAyMDQsIDE0NCwgNDMsIDgsIDUsIDEsIDIwMywgMTk2LCA0MywgOCwgNSwgMSwgMjAzLCAKLSAgICAxMjQsIDQzLCA4LCA1LCAxLCAyMDIsIDE1OSwgNDMsIDE3LCAyMDIsIDg0LCAxODIsIDQzLCA0MiwgMjQxLCAxMTIsIDE4MiwgCi0gICAgNDMsIDQyLCAyMDcsIDE1NCwgMTgyLCA0MywgNDIsIDIwOSwgNTUsIDE4MiwgNDMsIDQyLCAyMzksIDE0MSwgMTgyLCA0MywgCi0gICAgNDIsIDI0MCwgMjIsIDE4MiwgNDMsIDQyLCAyMTIsIDgyLCAxODIsIDQzLCA0MiwgMjEzLCAxMDgsIDE4MiwgNDMsIDQyLCAKLSAgICAyNDEsIDE0MCwgMTgyLCA0MywgNDIsIDIyMiwgNjAsIDE4MiwgNDMsIDQyLCAyMDcsIDE1MSwgNTIsIDQzLCAxNywgMTA1LCAKLSAgICA1MiwgNDMsIDE3LCAxMDgsIDUyLCA0MywgMTcsIDE0NywgNTIsIDQzLCAxNywgMTQ5LCA1MiwgNDMsIDE3LCAxNzAsIDUyLCAKLSAgICA0MywgMTcsIDE5NSwgNTIsIDQzLCAxNywgMjEzLCAxMTEsIDUyLCA0MywgMTcsIDE5OSwgNTIsIDQzLCAxNywgMjIyLCA2MywgCi0gICAgNTIsIDQzLCA0MiwgMjA5LCAxNTIsIDE4MiwgNDMsIDE3LCAyMDIsIDg0LCA5OCwgMTE2LCAxNTcsIDIzNiwgMTA1LCA5OCwgCi0gICAgMTE2LCA3OSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMjA2LCAzOCwgOTgsIDExNiwgNzksIDIwNiwgMzgsIDk4LCAxMTYsIAotICAgIDE1NywgMjA4LCA3MCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgMjA4LCA3MCwgMjQ0LCAxNDUsIDIzNiwgCi0gICAgMTA1LCA5OCwgMTE2LCAxNTcsIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgMjA4LCA3MCwgMjQ0LCAKLSAgICAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDE1NywgMjE3LCA1OCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgCi0gICAgMjE3LCA1OCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDIxNywgNTgsIDI0NCwgMTQ1LCAyMDYsIDM4LCAKLSAgICA5OCwgMTE2LCA3OSwgMjE3LCA1OCwgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjE2LCAxNiwgCi0gICAgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCA1MCwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgCi0gICAgOTgsIDExNiwgNzksIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDEyMSwgMTU3LCAyNSwgNDksIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIAotICAgIDc5LCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMTIsIDE1NywgCi0gICAgMjUsIDUwLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNTAsIDIyNywgMTM0LCA5OCwgMTE2LCA3OSwgMTEyLCAKLSAgICAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCA0OSwgCi0gICAgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDQ5LCAyMjcsIDEzNCwgOTgsIDExNiwgNzksIDExMiwgMjUsIDIyNywgCi0gICAgMjIyLCA5OCwgMTE2LCAxNTcsIDgwLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgODAsIDE1NywgMjUsIDUwLCAyMzcsIDQ5LCAKLSAgICA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA1MCwgMTEyLCAKLSAgICAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgNTAsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDUwLCAKLSAgICAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNTAsIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgNzksIDgwLCAKLSAgICAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCA4MCwgMTU3LCAyNSwgNDksIAotICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA0OSwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIAotICAgIDQ5LCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgMTU3LCAKLSAgICAyNSwgNDksIDExMiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCA0OSwgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCAKLSAgICA3OSwgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgNDksIDc5LCAKLSAgICAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCA3OSwgMjUsIDQ5LCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAKLSAgICAxMjEsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgCi0gICAgMTM0LCA5OCwgMTE2LCA1MCwgMTU3LCAyNSwgNDksIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgNDksIDE1NywgMjUsIDUwLCAKLSAgICAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDc5LCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMzYsIAotICAgIDEwNSwgOTgsIDExNiwgNDksIDc5LCAyNSwgNTAsIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCA3OSwgMjUsIDQ5LCAKLSAgICAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIAotICAgIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgMTU3LCAyNSwgNDksIDExMiwgMjM3LCA0OSwgOTgsIAotICAgIDExNiwgNDksIDE1NywgMjUsIDUwLCAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAyMzYsIDEwNSwgOTgsIAotICAgIDExNiwgMTU3LCA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCA0OSwgNzksIDI1LCA1MCwgODAsIDIyNywgMTM0LCA5OCwgCi0gICAgMTE2LCA1MCwgNzksIDI1LCA0OSwgODAsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgMTU3LCAyNSwgMjM2LCAxMDYsIDIzNywgCi0gICAgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCAxMjEsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIAotICAgIDExMiwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgNzksIDI1LCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAKLSAgICAxMTYsIDQ5LCAxMTIsIDc5LCAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCAxMTIsIDc5LCAyNSwgNDksIAotICAgIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDQ5LCAxMjEsIDc5LCAyNSwgNTAsIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCAKLSAgICAxMjEsIDc5LCAyNSwgNDksIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgMTEyLCAyMzYsIDEwNiwgCi0gICAgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCAxMjEsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCA1MCwgMTU3LCAKLSAgICAyNSwgNDksIDgwLCAyMzcsIDQ5LCA5OCwgMTE2LCA0OSwgMTU3LCAyNSwgNTAsIDgwLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgCi0gICAgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCA1MiwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgNTIsIAotICAgIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCA1MiwgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCA1MiwgCi0gICAgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDUyLCAyMzYsIDEwNSwgOTgsIDExNiwgNTIsIDIwNiwgMzgsIDk4LCAxMTYsIAotICAgIDEyMSwgMjEyLCAxMjAsIDI1LCA1MCwgMjQyLCA3OCwgOTgsIDExNiwgMTIxLCA1MiwgMjUsIDUwLCAyMTIsIDExOSwgOTgsIAotICAgIDExNiwgNTIsIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDEyMSwgMjEyLCAxMjAsIDI1LCA0OSwgMjQyLCA3OCwgOTgsIAotICAgIDExNiwgMTIxLCA1MiwgMjUsIDQ5LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICAxMTIsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDExMiwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKLSAgICAxMTYsIDUyLCAxMTIsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMTIsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKLSAgICAxMTYsIDExMiwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCi0gICAgODAsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDgwLCA1MiwgMjUsIDUwLCAyMTIsIDExOSwgOTgsIAotICAgIDExNiwgNTIsIDgwLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgODAsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKLSAgICAxMTYsIDgwLCA1MiwgMjUsIDQ5LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDEyMSwgMjEyLCAxMjAsIDI1LCAyMzYsIDEwNiwgMjQyLCA3OCwgOTgsIDExNiwgMTIxLCA1MiwgMjUsIDIzNiwgMTA2LCAKLSAgICAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDEyMSwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxMTIsIDIxMiwgMTIwLCAyNSwgCi0gICAgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIDExMiwgNTIsIDI1LCAyMzYsIDEwNiwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAKLSAgICAxMTIsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgODAsIDIxMiwgMTIwLCAyNSwgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIAotICAgIDgwLCA1MiwgMjUsIDIzNiwgMTA2LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIAotICAgIDE1NywgMjUwLCAxMjksIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIDEyMSwgMjUsIDIyNywgCi0gICAgMjIyLCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgCi0gICAgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjA2LCAyMjEsIDUwLCAyMDgsIDE3MywgMjI2LCAKLSAgICAyNTEsIDIyNywgMjIyLCA5OCwgMTE2LCAxNTcsIDI0MywgMjI4LCAyMDYsIDIyMSwgNDksIDIwOCwgMTczLCAyMjYsIDI1MSwgCi0gICAgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjQ1LCAxMzAsIDk4LCAxMTYsIDE1NywgMjI3LCAyMjIsIDk4LCAKLSAgICAxMTYsIDE1NywgMjA2LCAyMjQsIDk4LCAxMTYsIDE1NywgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDIsIDcwLCA5OCwgCi0gICAgMTE2LCA3OSwgMjI3LCAyMjIsIDk4LCAxMTYsIDc5LCAyMDYsIDIyNCwgOTgsIDExNiwgNzksIDIxNiwgMTYsIDk4LCAxMTYsIAotICAgIDc5LCAyNDIsIDcwLCA5OCwgMTE2LCAxNTcsIDQ5LCAyNSwgNzksIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgCi0gICAgNzksIDI0MiwgNzAsIDk4LCAxMTYsIDc5LCA0OSwgMjUsIDE1NywgMjE2LCAxNiwgOTgsIDExNiwgNzksIDExMiwgMjUsIAotICAgIDE1NywgMjQyLCA3MCwgMjA2LCAyMjEsIDE2MiwgMjQ4LCAzMywgMjI2LCAyNTEsIDExOCwgMjQxLCAxMzksIDI0OCwgMzMsIAotICAgIDIyNiwgMjUxLCAxMTgsIDIxNywgNTYsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMjYsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMjYsIAotICAgIDI1MSwgMTYyLCAyNDgsIDMzLCAyMjYsIDI1MSwgMjM5LCAyMzMsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMjYsIDI1MSwgMTI2LCAKLSAgICAyMTcsIDU0LCAyNDgsIDMzLCAyMjYsIDI1MSwgMjEzLCAxMTIsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMzksIDEwMiwgMjQ4LCAKLSAgICAzMywgNDksIDIxMywgMTEyLCAyNDEsIDEzNywgMjQ4LCAzMywgNDksIDEyNiwgMjE3LCA1NCwgMjQ4LCAzMywgNDksIDIzOSwgCi0gICAgMjMzLCAyNDEsIDEzNywgMjQ4LCAzMywgNDksIDE2MiwgMjQ4LCAzMywgNDksIDEyNiwgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAKLSAgICAxMTgsIDIxNywgNTYsIDI0OCwgMzMsIDQ5LCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCA1MCwgMTYyLCAyNDgsIDMzLCAxNTcsIAotICAgIDIxMywgNzksIDIyNSwgMTAsIDIxMywgNzksIDI0NCwgMTUwLCAyMTMsIDc5LCAyMDYsIDIyMSwgMTE4LCAyNDEsIDEzOSwgCi0gICAgMjQ4LCAzMywgNTAsIDExOCwgMjQxLCAxMzksIDI0OCwgMzMsIDIxNywgNjAsIDIyNiwgMjUxLCAyMjcsIDIyMiwgMjE3LCAKLSAgICA2MCwgMjI2LCAyNTEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCAyMjcsIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIAotICAgIDQ5LCAyNSwgMjI2LCAyNTEsIDQ5LCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA0OSwgMjUsIAotICAgIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgCi0gICAgMjI3LCAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCA0OSwgMjUsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCAKLSAgICAyMTcsIDYwLCAyMDYsIDIyMSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDIyNywgCi0gICAgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgNDksIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgNjIsIAotICAgIDIxMSwgMTc3LCA2MSwgMjExLCAxNzcsIDYxLCA1MSwgMywgMjE1LCAxODksIDI0NSwgMTY0LCA2MSwgNTEsIDI0NSwgMTk1LCAKLSAgICA2MiwgNSwgMjExLCAxNzcsIDUxLCAzLCAyMzYsIDEwNiwgMjQwLCA5LCA1MSwgMywgODAsIDI0MCwgOSwgNTEsIDMsIDIxOSwgCi0gICAgMjI5LCAyNDUsIDEyNSwgMjQwLCA5LCA1MSwgMywgMjA2LCAyMjEsIDQ5LCAyMDgsIDE3MywgMjI2LCAyNTEsIDUwLCAyNDAsIAotICAgIDksIDUxLCAzLCAyMDYsIDIyMSwgNTAsIDIwOCwgMTczLCAyMjYsIDI1MSwgNDksIDI0MCwgOSwgNTEsIDMsIDI0MywgMjI4LCAKLSAgICAyNDUsIDEyNSwgMjQwLCA5LCA2MiwgNSwgMjExLCAxNzcsIDYxLCA1LCAyMTEsIDE3NywgNjIsIDIxNiwgMTQzLCA2MSwgCi0gICAgMjE2LCAxNDMsIDYyLCA4MCwgMjE2LCAxNDMsIDYxLCA4MCwgMjE2LCAxNDMsIDYyLCAyMTksIDgwLCA2MSwgMjE5LCA4MCwgCi0gICAgNjIsIDIwNiwgMjIzLCAyMDgsIDg1LCA2MSwgMjA2LCAyMjMsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgNSwgMjA4LCA4NSwgCi0gICAgNjEsIDIwNiwgMjIzLCA1LCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgMjA4LCA4NSwgNjEsIDIxNiwgMTEsIDIwOCwgODUsIDYyLCAKLSAgICAyMTYsIDExLCA1LCAyMDgsIDg1LCA2MSwgMjE2LCAxMSwgNSwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIxOCwgNjAsIDYxLCAKLSAgICAyMTYsIDExLCAyMTgsIDYwLCA2MiwgMjQyLCA2OSwgMjA4LCA4NSwgNjEsIDI0MiwgNjksIDIwOCwgODUsIDYyLCAyNDIsIAotICAgIDY5LCA1LCAyMDgsIDg1LCA2MSwgMjQyLCA2OSwgNSwgMjA4LCA4NSwgNjIsIDIyNywgMjE3LCAyMDgsIDg1LCA2MSwgMjI3LCAKLSAgICAyMTcsIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgNSwgMjA4LCA4NSwgNjEsIDIyNywgMjE3LCA1LCAyMDgsIDg1LCA2MiwgCi0gICAgMjI3LCAyMTcsIDIxOCwgNjAsIDYxLCAyMjcsIDIxNywgMjE4LCA2MCwgNjIsIDI0MywgMjIxLCA2MSwgMjQzLCAyMjEsIDYxLCAKLSAgICAyNDMsIDIyMiwgMjQ1LCAxOTUsIDYyLCA1LCAyNDMsIDIyMSwgMjM5LCAyNDIsIDIyNiwgMjQ2LCA2MSwgMjQ2LCA2MSwgCi0gICAgMjQyLCA4MywgMjQ2LCA2MSwgMjQ2LCA2MiwgMywgODAsIDI0MCwgOSwgMjQ3LCAxNzMsIDYyLCAyNDYsIDYxLCAyNDYsIDYyLCAKLSAgICAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMjYsIDI1MSwgCi0gICAgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgCi0gICAgNTAsIDIxNywgNjAsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDI1MSwgMTUsIDI0NywgMTQ4LCAyMDYsIDIyMSwgNDksIDIxNywgCi0gICAgNjAsIDI0OCwgNDMsIDQ5LCAxNjIsIDYyLCAyNDYsIDYxLCA1MCwgMTYyLCA2MiwgMjQ2LCA2MSwgMjMwLCAyNDAsIDI0NywgCi0gICAgMTc3LCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIwNiwgMjIxLCAxNjIsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjI2LCAKLSAgICAyNTEsIDE2MiwgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgNDksIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgCi0gICAgMTI4LCAyMDYsIDIyMSwgNTAsIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgMTI4LCAyMjYsIDI1MSwgNTAsIDIxNywgNjAsIAotICAgIDI0NiwgNTUsIDI1MCwgMTI4LCAyMjYsIDI1MSwgNDksIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgMTI4LCAyMDYsIDIyMSwgCi0gICAgMTYyLCAyNDYsIDYxLCAyMjYsIDI1MSwgMTYyLCAyNDYsIDYxLCA2MiwgMjI2LCAyNTEsIDUwLCAyMDgsIDg1LCA2MiwgMjI2LCAKLSAgICAyNTEsIDQ5LCAyMDgsIDg1LCA2MiwgMjA2LCAyMjEsIDQ5LCAyMDgsIDg1LCA2MiwgMjA2LCAyMjEsIDUwLCAyMDgsIDg1LCAKLSAgICA2MSwgMjQ3LCAxNzcsIDUxLCAzLCA0OSwgMTYyLCAyNDgsIDQzLCA1MSwgMywgNTAsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIAotICAgIDIwNiwgMjIxLCA0OSwgMjQzLCAyMjgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIyNiwgMjUxLCA1MCwgMjQzLCAyMjgsIDE2MiwgCi0gICAgMjQ4LCA0MywgNjEsIDUxLCAzLCA4MCwgMjQ4LCA1NSwgMjI3LCAxMTQsIDYxLCAyMDYsIDIyMywgMjA4LCA4NiwgMywgMjQzLCAKLSAgICA4NSwgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCA1MCwgCi0gICAgMTYyLCAyNDgsIDQzLCAyMjgsIDgsIDI0NiwgNjEsIDYxLCA1MSwgMywgMjA2LCAyMjEsIDQ5LCAyMTcsIDU5LCA2MSwgNTEsIAotICAgIDMsIDIyNiwgMjUxLCA0OSwgMjE3LCA1OSwgNjEsIDUxLCAzLCAyMjYsIDI1MSwgNTAsIDIxNywgNTksIDYxLCA1MSwgMywgCi0gICAgMjA2LCAyMjEsIDUwLCAyMTcsIDU5LCA2MSwgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDQ5LCAyMTcsIDU5LCA2MSwgMjQ2LCAKLSAgICA2MiwgMywgMjI2LCAyNTEsIDQ5LCAyMTcsIDU5LCA2MSwgMjQ2LCA2MiwgMywgMjI2LCAyNTEsIDUwLCAyMTcsIDU5LCA2MSwgCi0gICAgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDUwLCAyMTcsIDU5LCAyMDYsIDIyMSwgNDksIDIwOCwgODUsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjA4LCA4NSwgMjI2LCAyNTEsIDQ5LCAyMDgsIDg1LCA2MSwgMjI1LCAxMCwgMjExLCAxNzcsIDYyLCAyMjUsIDEwLCAyMTEsIAotICAgIDE3NywgNjEsIDIyNSwgMTAsIDUsIDIxMSwgMTc3LCA2MiwgMjI1LCAxMCwgNSwgMjExLCAxNzcsIDIyNiwgMjUxLCA1MCwgCi0gICAgMjA4LCA4NSwgNjIsIDIxMCwgMjE1LCAzLCAyMTYsIDE2MiwgMjQ2LCA3LCAyMDcsIDMsIDIxMiwgMTUsIDI0NSwgMjM2LCAKLSAgICA2MiwgMjExLCA5NCwgNjEsIDIxMSwgOTQsIDIyNywgMTMxLCAyMDksIDE3LCAyMTAsIDIxNCwgMjUwLCA3OCwgMjIxLCAxODgsIAotICAgIDI0NCwgMTksIDIyMSwgMTg4LCAyNDUsIDIwNCwgMjE5LCAyNTAsIDYyLCAyMDksIDE2MSwgNjEsIDIwOSwgMTYxLCAyNDgsIAotICAgIDI0OCwgMjQ3LCAyMzMsIDI0OCwgMjQ4LCA5OCwgMywgMjQ2LCAxNjgsIDI0OCwgMjQ4LCA5OCwgMywgMjAzLCAxOTYsIDIxNCwgCi0gICAgMjU0LCAyMDcsIDQsIDMsIDIxNiwgMTkxLCAyNDIsIDQ4LCAyMzYsIDQ3LCAyNDgsIDEwMiwgNjEsIDIxMiwgMjM3LCAyMTgsIAotICAgIDE1OSwgNjIsIDIxMiwgMjM3LCAyMTgsIDE1OSwgMjEzLCA2OCwgMjE2LCA3MywgMjE1LCAxOTgsIDIzOSwgMjAxLCAyMzcsIAotICAgIDU2LCAyNDcsIDE3NywgNjIsIDQ5LCAyMTgsIDU5LCAyMzEsIDM1LCA2MiwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDYxLCA0OSwgCi0gICAgMjE4LCA1OSwgMjMxLCAzNSwgNjEsIDExMiwgMjE4LCA1OSwgMjMxLCAzNSwgNjEsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCAKLSAgICA2MSwgMTIxLCAyMTgsIDU5LCAyMzEsIDM1LCAyMTIsIDYzLCAyNSwgMjQ1LCAxMjksIDI0NywgMTEsIDU0LCAyMTYsIDIwMywgCi0gICAgNTQsIDI0OCwgNjIsIDU0LCAyNDcsIDgzLCAyNTAsIDIwOCwgMjE5LCAyMzAsIDI0NSwgMTMwLCAyNDYsIDE0MywgMjE2LCAKLSAgICA1OSwgMjQ1LCAxMzEsIDc2LCAyMjcsIDksIDI0NSwgMTMxLCA3NiwgMjMwLCAxNTEsIDIxMSwgOTUsIDI1LCAyNDUsIDEzOCwgCi0gICAgMjQwLCA3NSwgOTcsIDI1MSwgMTE1LCAyMTMsIDcwLCAyMzcsIDEzMSwgMjUsIDIxMiwgMTU5LCAyMTksIDMzLCA5NywgMjAzLCAKLSAgICAxLCAyMDMsIDc2LCAyMDgsIDc1LCAzNSwgMjM3LCA1MSwgMjA4LCA3NSwgMzUsIDIyOCwgMzMsIDIwOCwgNzUsIDM1LCAyMzksIAotICAgIDI0OSwgMjA4LCA3NSwgMzUsIDIwOSwgMTgsIDIwOCwgNzUsIDM1LCAyMDQsIDE2LCAyMDgsIDc1LCAzNSwgMjA0LCA4MCwgCi0gICAgMjA4LCA3NSwgMzUsIDIyNCwgMTIsIDIwOCwgNzUsIDM1LCAyNDEsIDE3OSwgMjA0LCAzNywgNzYsIDI0MywgMjQ5LCA2MSwgCi0gICAgMjM5LCAxMTQsIDI0MCwgMTAyLCA2MSwgMjEyLCAzMCwgMjQwLCAxMDIsIDYyLCAyMTIsIDMwLCAyNDAsIDEwMiwgNjEsIAotICAgIDIxMCwgMjE1LCAzLCAyMTYsIDE2MiwgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMjksIDIyOCwgMSwgMjE3LCA1NiwgMjI0LCAKLSAgICAyOSwgMjI0LCAyMzQsIDI0MCwgNDMsIDU0LCAyNDEsIDE3OSwgMjI1LCAxMjcsIDU0LCAyMzAsIDY5LCAyMTQsIDIxOCwgCi0gICAgMjA2LCAyMDUsIDIyMiwgMjI0LCAyMTgsIDczLCAyNTAsIDExNCwgMjA5LCAyMDUsIDIzOCwgMTc4LCAyNDcsIDU3LCAyMjcsIAotICAgIDE4NCwgMjA1LCAyMDIsIDIyNywgMTQ1LCAyMTQsIDE4NywgMjE1LCAyMCwgMjQ3LCA0MywgMjUwLCAxNDUsIDIxOCwgMTA4LCAKLSAgICA2MSwgMjQ2LCAxNTAsIDIyOSwgODEsIDYxLCAyNDYsIDE1MCwgMjE3LCA0OCwgNjEsIDI0NiwgMTUwLCAyMTUsIDIwNiwgNjEsIAotICAgIDI0NiwgMTUwLCAyNDgsIDU0LCA2MSwgMjQ2LCAxNTAsIDIyOSwgMzEsIDYxLCAyNDYsIDE1MCwgMjE5LCA0NSwgNjIsIDI0NiwgCi0gICAgMTUwLCAyMjksIDgxLCA2MiwgMjQ2LCAxNTAsIDIxNywgNDgsIDYyLCAyNDYsIDE1MCwgMjE1LCAyMDYsIDYyLCAyNDYsIAotICAgIDE1MCwgMjQ4LCA1NCwgNjIsIDI0NiwgMTUwLCAyMjksIDMxLCA2MiwgMjQ2LCAxNTAsIDIxOSwgNDUsIDYyLCAyMTEsIDIyNiwgCi0gICAgMjEwLCAyMjcsIDYxLCAyMzcsIDU2LCAyMTAsIDIyNywgNjEsIDI0MywgMjIyLCAyMTAsIDIyNywgNjIsIDI0NiwgNSwgMjEwLCAKLSAgICAyMjcsIDYxLCAyMTEsIDIyNiwgMjEwLCAyMjcsIDYyLCAyMzcsIDU2LCAyMTAsIDIyNywgNjIsIDI0MywgMjIyLCAyMTAsIAotICAgIDIyNywgNjEsIDI0NiwgNSwgMjEwLCAyMjcsIDIzNiwgNDcsIDIxMSwgMTgyLCAyMTcsIDU2LCAyMjEsIDE2MCwgMjQxLCAKLSAgICAxMzksIDIyMSwgMTYwLCAyNDgsIDE1OCwgMjQxLCAxMzksIDIyMSwgMTU1LCAyNDgsIDE1OCwgMjEyLCA4MSwgMjIxLCAxNTUsIAotICAgIDIyMywgMTk1LCAyMzksIDIxNywgNTQsIDIyMywgMTk1LCAyMjMsIDY2LCA1NCwgMjIzLCAxOTUsIDIxMywgNTcsIDU0LCAKLSAgICAyMDQsIDQ2LCAyMTAsIDg5LCAyNDUsIDEzMCwgMjQxLCAxNzYsIDIxMCwgODksIDI0NSwgMTMwLCAyMDYsIDIzMywgMjE2LCAKLSAgICAxMzksIDk3LCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDEyMCwgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTgsIAotICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE3LCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExNSwgCi0gICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTMsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTExLCAKLSAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDEwOSwgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjM4LCAxNzYsIAotICAgIDIyNSwgNzAsIDYyLCAyMDYsIDIzMywgMjE2LCAxMzksIDk3LCAyMTYsIDE0MCwgMjE5LCA5NSwgOTcsIDIxOSwgNjgsIDIxOSwgCi0gICAgOTUsIDk3LCAyMTgsIDIzOCwgMjE5LCA5NSwgNTQsIDIwNCwgMzUsIDk3LCAyNDMsIDIxNCwgMjQwLCAxMDEsIDI0MywgMjE0LCAKLSAgICAyNDAsIDEwMCwgMjQzLCAyMTQsIDI0MCwgOTksIDI0MywgMjE0LCAyNDAsIDk4LCAyNDMsIDIxNCwgMjQwLCA5NywgMjQzLCAKLSAgICAyMTQsIDI0MCwgOTYsIDYxLCAyNDYsIDYyLCAzLCA3MCwgMjE2LCAxNiwgNjEsIDI0NiwgNjIsIDMsIDEyMCwgMjQzLCA4MywgCi0gICAgNjIsIDI0NiwgNjIsIDMsIDYxLCA3MCwgMjE2LCAxNiwgNjIsIDI0NiwgNjIsIDMsIDEyMCwgNjEsIDI0MywgODMsIDIyNCwgCi0gICAgNDUsIDM1LCAyMDMsIDc2LCAyMjQsIDQ1LCAzNSwgMjAzLCAwLCAyNDMsIDE5NSwgMzUsIDIzNywgMjQ4LCAyMDMsIDc2LCAKLSAgICAyNDMsIDE5NSwgMzUsIDIyNywgMTc3LCAyMDMsIDAsIDI0MywgMTk1LCAzNSwgMjI3LCAxNzcsIDIwMywgNzYsIDI0MywgCi0gICAgMTk1LCAzNSwgMjM3LCAyNDgsIDIwMywgMCwgNjEsIDIzOSwgMjI1LCA2MiwgMjM5LCAyMjUsIDIzNywgMTMxLCAyNSwgMjE4LCAKLSAgICAxNjMsIDI1MCwgMjI4LCAyNDUsIDEyOCwgMjEwLCAxNTQsIDIxMSwgMTAzLCA3NiwgMjUxLCA5MiwgMjE0LCAyMDMsIDI1MSwgCi0gICAgMjksIDIzOSwgMTk3LCAyMzgsIDE4NywgMjExLCAxMDMsIDc2LCAyMzcsIDI2LCAyNTAsIDQyLCA5NywgMjM5LCAyMTMsIAotICAgIDIxOSwgMjA3LCA2MSwgMjExLCA5NCwgMTI2LCAyMjcsIDEwOSwgMjQ1LCAxODEsIDIxNiwgMTYsIDEyNiwgMjI3LCAxMDksIAotICAgIDI0NSwgMTgxLCAyMjcsIDIyMiwgMjA0LCA5MSwgNTQsIDEzOCwgMjA1LCAxNzksIDU0LCAyNDIsIDc1LCAyNDAsIDQzLCA1NCwgCi0gICAgMjQyLCA3NSwgMjI1LCAxMjcsIDU0LCAyMzAsIDI1MCwgMjQwLCA0MywgMjUsIDIyNSwgMTI3LCA1NCwgMjI1LCAxMjcsIDI1LCAKLSAgICAyNDAsIDQzLCA1NCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDU0LCAyMjUsIDEyNywgMywgMjExLCAzMiwgMjUsIDIyNSwgCi0gICAgMTI3LCAyNSwgMjQwLCA0MywgNTQsIDgwLCAyMjUsIDEyNywgMywgMjExLCAzMiwgNTQsIDIzNiwgMTA2LCAyMjUsIDEyNywgCi0gICAgMywgMjExLCAzMiwgNTQsIDIyNSwgMTAsIDYxLCAyNDYsIDYxLCAyMjUsIDEwLCA2MiwgMjQ2LCA2MSwgMjI1LCAxMCwgNSwgCi0gICAgNjEsIDI0NiwgNjEsIDIyNSwgODYsIDk3LCAyNDMsIDEzNSwgOTcsIDIwNiwgMjMwLCAyMTksIDY3LCA5NywgMjQ1LCAyNDcsIAotICAgIDIzOSwgOTcsIDIwNiwgMjAxLCAyMjIsIDIxNywgMjQ2LCAyMDMsIDIxOSwgMTM3LCAyMzAsIDc1LCAyMDUsIDI0MCwgMjQ2LCAKLSAgICAxMjMsIDYyLCAyMjQsIDMwLCAyMjcsIDEyOCwgMjEzLCAxMDEsIDIxMywgMTQwLCAyMTcsIDM4LCAyMTMsIDEyMCwgMjEyLCAKLSAgICAxMCwgMjQ4LCAyNTEsIDI0OCwgMjE3LCAxMDMsIDIyOSwgMTUxLCA2MSwgMjQyLCA1OCwgMjI1LCAxMjIsIDYxLCAyNDIsIAotICAgIDU4LCAyMjksIDgxLCA2MiwgMjQyLCA1OCwgMjI1LCAxMjIsIDYyLCAyNDIsIDU4LCAyMjksIDgxLCAyMTIsIDE2LCAyMDQsIAotICAgIDMsIDIxMiwgMTksIDIxMCwgMjE1LCAyNDgsIDEzNSwgMjQ2LCA3LCAyMTYsIDE5MCwgNjIsIDIxMiwgMTUsIDIwOSwgMTksIAotICAgIDI0NiwgOCwgMjUsIDIxNiwgMTkwLCAyMDcsIDE3NCwgNjEsIDIxMiwgMjM3LCAyMTgsIDE1OSwgMjA3LCAxNzQsIDYyLCAKLSAgICAyMTIsIDIzNywgMjE4LCAxNTksIDYxLCAyNDMsIDIyMiwgMjMxLCA1MCwgMjExLCAxNzcsIDI0NSwgMTI0LCAyMjgsIDE1LCAKLSAgICAyNDMsIDE2MiwgMjQ3LCAzOSwgMjE5LCAyNTMsIDIxOCwgMTYzLCAyNDcsIDQwLCAyMTIsIDQ4LCAyMzcsIDM2LCAzLCA2MSwgCi0gICAgMjQ1LCAxMzAsIDQzLCAyNDUsIDEyNCwgMjI4LCAxNSwgMjQ2LCAxOTUsIDIyMSwgMTkyLCAyNDEsIDYyLCAyNTAsIDI1NSwgCi0gICAgMjIwLCAyNiwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MiwgMjA3LCAxMzEsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjEsIAotICAgIDIwNywgMTMxLCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYyLCA0OSwgMjI4LCAxNiwgMjI0LCAyMzMsIDYxLCA0OSwgMjI4LCAKLSAgICAxNiwgMjI0LCAyMzMsIDI0MiwgNTMsIDIxMiwgNDAsIDU0LCA3OSwgNjEsIDI0MiwgNjksIDIwOCwgODUsIDQ5LCAyNDYsIAotICAgIDE2LCAyNDEsIDYyLCAxMDMsIDIxNCwgMjU0LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjMxLCA1MCwgNjEsIDI0NiwgNjIsIDIzMSwgCi0gICAgNTAsIDYyLCAyMTEsIDE3NywgNjIsIDIwOCwgNTAsIDIxNiwgODQsIDQ5LCAyNDEsIDYxLCAyMTYsIDg0LCA0OSwgMjQxLCAKLSAgICA2MCwgMjUwLCA1NCwgMTYsIDM1LCAyMDYsIDIwNSwgNzksIDI0NiwgNjIsIDMsIDIxMSwgMzIsIDI1LCAxMjAsIDE4NywgNTUsIAotICAgIDIxOCwgMjU0LCAyMTYsIDEzLCAyMzAsIDI1MiwgMjE4LCAyNTQsIDIyNywgMjE5LCAyMzAsIDI1MiwgMjE4LCAyNTQsIDIzMCwgCi0gICAgMjM5LCAyMTgsIDI1NCwgNjIsIDI0NSwgMTMxLCAyMjAsIDMyLCAyMTMsIDgsIDIxMiwgMjUyLCAyMTIsIDIwMywgMjQ2LCAKLSAgICA5MCwgMjQ3LCAxOSwgMjM2LCAyMzEsIDIxMiwgODksIDIzOCwgMTg4LCAyMDQsIDMsIDIzNiwgMjMsIDIzOCwgMTg4LCAzLCAKLSAgICAyMzcsIDEwMSwgMjI1LCAxMDcsIDE2LCAzNSwgMjI3LCAxMzMsIDIyNCwgMTIsIDIwNywgNCwgMjIwLCAzMiwgMjM3LCAyMzksIAotICAgIDIzOSwgMTQ4LCAyMzksIDIyNiwgMjMxLCA1MCwgMjM2LCAxMjYsIDI0MCwgMzQsIDIxNSwgMTUsIDUxLCAyMzksIDE0NywgCi0gICAgMjQ1LCAxNjQsIDIxMiwgNjYsIDIzNSwgMTYzLCAyMTIsIDY5LCAyMTgsIDIzMCwgMywgMjQ4LCAyNTEsIDIwOSwgMTQ0LCAKLSAgICAyMzAsIDE2OSwgMjQ4LCAyMzYsIDk3LCAyMzcsIDU5LCAyMzcsIDI1MCwgOTcsIDIzOSwgMTA1LCAyMTcsIDE4MCwgMjQ1LCAKLSAgICAxMDAsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNjEsIDIzOSwgMjI2LCAzLCAyMzYsIDEwNiwgMTAxLCA2MiwgMjExLCAzMywgCi0gICAgNjIsIDIxNSwgMjUsIDIxNCwgMTkwLCAyMDYsIDIyMSwgMjQ4LCAzOCwgMjE0LCAxOTAsIDYyLCAyMTQsIDE5MCwgMjI2LCAKLSAgICAyNTEsIDI0OCwgMzgsIDIxNCwgMTkwLCA2MSwgMjE0LCAxOTAsIDYxLCA3OSwgMjQ2LCAxNjksIDgyLCAyMDksIDE2MiwgCi0gICAgMjI3LCA0NywgNTQsIDIwOSwgMjIxLCAyNDIsIDUyLCAyNTEsIDUyLCAyNDEsIDU3LCAyMTYsIDE4OCwgMjM5LCAyMzgsIAotICAgIDIxNiwgMTg4LCAyMzcsIDEyMywgMjA1LCAyMjgsIDIzNywgMTIzLCAyMDMsIDIyMCwgMjM3LCAxMjMsIDIyNiwgMjUxLCA1MCwgCi0gICAgMjE5LCA4LCAyMTksIDgsIDIwNiwgMjIxLCA1MCwgMjE5LCA4LCA2MSwgMjIyLCA5NywgNjIsIDIyMiwgOTcsIDI0NiwgMTY5LCAKLSAgICA4MiwgNzksIDI0NiwgMTY5LCA4MiwgMjIzLCAyMjQsIDIwMywgMTk2LCA3OSwgMjIzLCAyMjQsIDIwMywgMTk2LCAyNDgsIAotICAgIDI0OCwgMjAzLCAxOTYsIDc5LCAyNDgsIDI0OCwgMjAzLCAxOTYsIDIxOSwgMjA3LCAzMCwgMjQ1LCAxMzAsIDc5LCAzMCwgCi0gICAgMjQ1LCAxMzAsIDE3MSwgMjQ2LCAyMTgsIDI0NSwgMTMwLCA3OSwgMTcxLCAyNDYsIDIxOCwgMjQ1LCAxMzAsIDgsIDI0NSwgCi0gICAgMTMwLCAyMTMsIDc3LCA2MSwgOCwgMjQ1LCAxMzAsIDIxOSwgMjA3LCA4LCAyNDUsIDEzMCwgMjI1LCAxMjQsIDI0NSwgMTMwLCAKLSAgICAyMTEsIDk1LCA3NiwgMjQ0LCAxMzcsIDIzOSwgMTQ3LCAyMDksIDE4MCwgMjUwLCA1OSwgMjM5LCAxNDcsIDI0OCwgMjQ5LCAKLSAgICAyNTAsIDU5LCA3OSwgMjM5LCAxNDcsIDI0OCwgMjQ5LCAyNTAsIDU5LCAyMzksIDE0NywgMjQ2LCAzLCAyNTAsIDU5LCA2MiwgCi0gICAgMjM5LCAxNDcsIDIxOCwgNjEsIDIxMSwgOTQsIDYxLCAyMzksIDE0NywgMjE4LCA2MSwgMjExLCA5NCwgMjExLCAyMjEsIAotICAgIDIxMSwgNDIsIDIxOSwgMjA3LCA2MSwgMjExLCA5NCwgNDMsIDYxLCAyMTEsIDk0LCAxNzEsIDI0NiwgMjE4LCA2MiwgMjExLCAKLSAgICA5NCwgNjIsIDI0NiwgMjE4LCA2MSwgMjExLCA5NCwgMjE5LCAyMDcsIDYyLCAyMTEsIDk0LCA3OSwgMjE5LCAyMDcsIDYyLCAKLSAgICAyMTEsIDk0LCAyMTgsIDExOCwgMjExLCA5NCwgMjEzLCA3NywgNjEsIDIxMSwgOTQsIDc5LCAyNTAsIDU5LCAxNzEsIDI0NiwgCi0gICAgMjE4LCAyNTAsIDU5LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDI0MSwgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCAKLSAgICA5NCwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMTIsIDg4LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgCi0gICAgMjQxLCAxNDMsIDIxOCwgNjEsIDIxNiwgMTQxLCA2MiwgMjExLCA5NCwgNzksIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTYsIAotICAgIDE0MSwgNjIsIDIxMSwgOTQsIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjEyLCA4MywgMjE4LCA2MSwgMjUwLCAKLSAgICA1OSwgMjA5LCAxODAsIDI1MCwgNTksIDE3MSwgMjQ2LCAyMTgsIDIwOSwgMTgwLCAyNTAsIDU5LCA3OSwgMjA5LCAxODAsIAotICAgIDI1MCwgNTksIDIxMiwgODgsIDIxOCwgMjE4LCA2MiwgMjUsIDYxLCAyMzksIDIwMCwgNjIsIDIzOSwgMjAwLCA2MSwgMjM5LCAKLSAgICAyMDAsIDI0MSwgMTQzLCAyMTgsIDIxOCwgMjE5LCAyMDcsIDYyLCAyMzksIDIwMCwgNDMsIDE3MSwgMjQ2LCAyMTgsIDI0MSwgCi0gICAgMTQzLCAyMTgsIDYxLCAyMTEsIDk0LCA3OSwgMjA5LCAxODAsIDIxOCwgMTE4LCAyNTAsIDU5LCAyMTIsIDE3LCAyMDgsIAotICAgIDI0NCwgMjA4LCA3OCwgMjEyLCAxNywgNzksIDI0NiwgMTQ2LCAyMTIsIDE3LCAyMTEsIDIyMywgNzksIDIxMSwgMjIzLCAKLSAgICAyNDgsIDI0OSwgMjUwLCA1OSwgMjQxLCAxNDMsIDIwOSwgMTgwLCAyMTcsIDIxMywgMjUwLCA1OSwgNzksIDI0MSwgMTQzLCAKLSAgICAyMDksIDE4MCwgMjE3LCAyMTMsIDI1MCwgNTksIDI0NSwgMTMxLCA4MiwgMjEzLCA3NywgNjEsIDI0NiwgNjEsIDE4MiwgCi0gICAgMTAzLCAyNDUsIDEzMSwgODIsIDIyNiwgMjUxLCA1MCwgMjQyLCA1MCwgNjEsIDIxMSwgMTc3LCAyMDYsIDIyMSwgNTAsIAotICAgIDI0MiwgNTAsIDYxLCAyMTEsIDE3NywgMjI2LCAyNTEsIDUwLCAyMTMsIDc3LCA2MSwgMjExLCAxNzcsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjEzLCA3NywgNjEsIDIxMSwgMTc3LCA2MiwgMjE3LCA0NywgMTMxLCAyMTksIDIzMywgNjEsIDIxNywgNDcsIDEzMSwgMjE5LCAKLSAgICAyMzMsIDYxLCAyNDAsIDIxMiwgMTMxLCAyMTksIDIzMywgNjIsIDI0MywgMjIyLCAyMjQsIDEwMywgNjEsIDIwMywgMTk2LCAKLSAgICA3OSwgMjQwLCAyMTIsIDEzMSwgOTcsIDE1NywgODAsIDE0MiwgMjI1LCAxMCwgODAsIDE0MiwgNzksIDgwLCAxNDIsIDc5LCAKLSAgICAyMTIsIDEyMCwgMjA3LCAxNzQsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjEyLCAxMjAsIDI0NSwgCi0gICAgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgNTIsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAKLSAgICAyMTksIDIzMywgNzksIDUyLCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDEyNCwgMjEyLCAxMjAsIAotICAgIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMTI0LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgCi0gICAgMjE5LCAyMzMsIDI0NSwgODYsIDIxMSwgNzgsIDIxOSwgODksIDIsIDIxOSwgMjMzLCA3OSwgMjQwLCAyMTIsIDEzMSwgMjE5LCAKLSAgICAyMzMsIDc5LCAyMzcsIDU2LCAyNDAsIDIxMiwgMTMxLCAyMTksIDIzMywgNzksIDYyLCAyMzcsIDU1LCAyMTUsIDE5OCwgNzksIAotICAgIDYyLCAyMzcsIDU2LCAyNDcsIDE3NywgMjM5LCAyMDEsIDIzNywgNTUsIDIxNSwgMTk4LCAyMzksIDIwMSwgMjM3LCA1NiwgCi0gICAgMjQ3LCAxNzcsIDIyNSwgMTAsIDQ5LCAyMTksIDc3LCAyMTksIDIzMywgMjI1LCAxMCwgNTAsIDIxOSwgNzcsIDIxOSwgMjMzLCAKLSAgICAyMjUsIDEwLCAyMzksIDIxNCwgNDksIDIxOSwgNzcsIDIxOSwgMjMzLCAyMjUsIDEwLCAyMzksIDIxNCwgNTAsIDIxOSwgNzcsIAotICAgIDIxOSwgMjMzLCAyMjUsIDEwLCAyMjcsIDIxNywgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAxMCwgMjE2LCAKLSAgICAxMSwgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgNzksIDIyNywgMjE3LCAyNTAsIDIxOCwgMjE3LCAzMSwgMTMxLCAKLSAgICAyMTksIDIzMywgNzksIDIxNiwgMTEsIDI1MCwgMjE4LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjI3LCAyMTcsIAotICAgIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDc5LCAyMTYsIDExLCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCAKLSAgICAxNTcsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAxNTcsIDUwLCAyMDgsIDEzMywgMjEzLCAKLSAgICAzMywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyMjUsIDEwLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyMjUsIAotICAgIDEwLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDEwNSwgMjQzLCAKLSAgICAxNzQsIDE4MiwgNDMsIDE3LCAxMDgsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTQ3LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIAotICAgIDE0OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxNzAsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTk1LCAyNDMsIDE3NCwgCi0gICAgMTgyLCA0MywgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE5OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAKLSAgICAyMjIsIDYzLCAyNDMsIDE3NCwgMTgyLCA0MywgNDIsIDIwOSwgMTUyLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTA1LCAyNDMsIAotICAgIDE3NCwgNDMsIDQxLCAxNywgMTA4LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTQ3LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgCi0gICAgMTQ5LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTcwLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTk1LCAyNDMsIDE3NCwgNDMsIAotICAgIDQxLCAxNywgMjEzLCAxMTEsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxOTksIDI0MywgMTc0LCA0MywgNDEsIDE3LCAyMjIsIAotICAgIDYzLCAyNDMsIDE3NCwgNDMsIDQxLCA0MiwgMjA5LCAxNTIsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDEwNSwgMjQzLCAKLSAgICAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTA4LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxNDcsIDI0MywgMTc0LCAxODIsIAotICAgIDQzLCA0MSwgMTcsIDE0OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTcwLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIAotICAgIDE3LCAxOTUsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAKLSAgICAxOTksIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIyMiwgNjMsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgNDIsIDIwOSwgCi0gICAgMTUyLCA3OSwgMjA0LCAyNiwgODYsIDQ3LCA3OSwgOTEsIDU0LCA3OSwgMjI0LCAxMDMsIDU0LCA3OSwgMjQzLCAxMzcsIDU0LCAKLSAgICA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgNzksIDg2LCA0NywgNzksIDE1MywgMjQxLCAxNzYsIDQ3LCAyNDIsIDYzLCAKLSAgICAyMTgsIDYzLCA4NiwgNDcsIDc5LCAyMTUsIDE5MCwgODYsIDQ3LCAyMDgsIDg0LCA4NiwgNDcsIDc5LCAyMDgsIDg0LCA4NiwgCi0gICAgNDcsIDI0NCwgMTQzLCAyMDgsIDg0LCA4NiwgNDcsIDc5LCAyNDQsIDE0MywgMjA4LCA4NCwgODYsIDQ3LCA2MiwgODYsIDQ3LCAKLSAgICAyMDksIDMxLCAyMDgsIDE0MywgODYsIDI1MCwgOTQsIDIwOSwgMzEsIDI0NywgMjQ2LCA4NiwgMjUwLCA5NCwgNjIsIDg2LCAKLSAgICAyNTAsIDk0LCA3OSwgNjIsIDI0NSwgODYsIDE4MywgMjUsIDg2LCA0NywgNzksIDYyLCAyNDUsIDg2LCAxNzcsIDI1LCA4NiwgCi0gICAgNDcsIDIxMSwgMTc0LCA2MiwgODYsIDQ3LCA3OSwgMjQ1LCAyMTcsIDYyLCA4NiwgNDcsIDIxNiwgMTAsIDYxLCA4NiwgNDcsIAotICAgIDIyNywgMjE2LCA2MSwgODYsIDQ3LCAyNDksIDI0LCAyMTMsIDc3LCA2MSwgODYsIDQ3LCAyMzksIDExNywgMjEzLCA3NywgCi0gICAgNjEsIDg2LCA0NywgNzksIDIyNiwgMjUxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDc5LCAyMDYsIDIyMSwgMjE2LCA5LCA2MSwgCi0gICAgODYsIDQ3LCAyMjEsIDE2MiwgMjI2LCAyNTEsIDIxNiwgOSwgNjEsIDg2LCA0NywgMjQ1LCA5MywgMjI3LCAxNCwgMjIxLCAKLSAgICAxNjIsIDIwNiwgMjIxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDQzLCA3OSwgNjEsIDg2LCA0NywgMjA0LCAzMiwgODYsIDQ3LCAKLSAgICAyNDgsIDQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAyNDgsIDQyLCA4NiwgNDcsIDI0OCwgNDIsIDE1MywgMjQxLCAxNzYsIAotICAgIDQ3LCA3OSwgMjQ4LCA0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgNzksIDI0OCwgNDIsIDg2LCA0NywgNzksIDI0OCwgCi0gICAgNDIsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMDksIDE4MiwgODYsIDQ3LCA3OSwgMjA5LCAxODEsIDg2LCA0NywgMjA0LCA1NiwgCi0gICAgODYsIDQ3LCA3OSwgMjA0LCA1NiwgODYsIDQ3LCAyMjAsIDMsIDg2LCA0NywgNTIsIDI0NSwgOTMsIDIyNywgMTQsIDEyNiwgCi0gICAgMjQzLCAxODQsIDI1MCwgMjE3LCA2MSwgMjA4LCA4NiwgMjQ1LCAxOTUsIDUsIDYxLCAyMDgsIDg1LCAyMTgsIDIzMywgMTcxLCAKLSAgICAyMTAsIDI0NCwgMTcxLCAyMTAsIDE5NywgNDksIDIxNSwgOTMsIDI0OSwgMTEsIDI0NCwgNDMsIDUwLCAyMTUsIDkzLCAyNDksIAotICAgIDExLCAyNDQsIDQzLCAyMTksIDI0NSwgMywgNzAsIDIzMSwgNiwgMjE2LCA3NCwgMjEyLCAxLCAyMTcsIDI0OCwgMjEwLCAKLSAgICAyNDQsIDIxMCwgMTk4LCAyMTcsIDI0OCwgMjEyLCAwLCA4MCwgMjQ4LCAyMzEsIDMsIDIzNiwgMTA2LCA5NSwgMTMsIDIxNSwgCi0gICAgMjQ1LCAyNDMsIDIyNywgMTYzLCAyNDMsIDEzNiwgMTMsIDI0MCwgODQsIDI0MywgMjI3LCAxMDMsIDIyNywgMzcsIDI1MCwgCi0gICAgMjI2LCAxMDMsIDIyNywgMzcsIDIxOSwgMjQ0LCA2MSwgMjQzLCAyMjIsIDMsIDI0NiwgMjE2LCAyNDMsIDg1LCAyNSwgMywgCi0gICAgMjQzLCA4NSwgMjQxLCAxMTUsIDc2LCAyMjAsIDEsIDIwNiwgMjEyLCAyMjYsIDI1MSwgNTAsIDI0NSwgMTY2LCAzLCAyNDMsIAotICAgIDg1LCAyMDYsIDIyMSwgNDksIDI0NSwgMTY2LCAzLCAyNDMsIDg1LCA0OSwgMjE5LCAyMDksIDIzMCwgOTksIDUwLCAyMTksIAotICAgIDIwOSwgMjMwLCA5OSwgMjM5LCAxMDIsIDIxOSwgMjA5LCAyMzAsIDk5LCAyMjgsIDgsIDExMiwgMjEwLCAzLCAyMjgsIDgsIAotICAgIDEyMSwgMjEwLCAzLCA0OSwgMjUsIDUwLCA1MiwgMjA3LCAxNzMsIDQ5LCAyNSwgNTAsIDIxMCwgMywgNDksIDIyMywgMjI4LCAKLSAgICAxNjMsIDUwLCAyMTAsIDMsIDE2MywgNDksIDIxMCwgMywgMTEyLCAyMTAsIDQsIDMsIDI0NiwgNjIsIDU1LCAyMjYsIDI0NywgCi0gICAgMjQzLCAxNDIsIDI0NywgMTM3LCAyMzYsIDEwNiwgMjE1LCAxMzUsIDYxLCAyNDUsIDIxNiwgMjQzLCAyMjEsIDYxLCAyNDUsIAotICAgIDIxNiwgMjQzLCAyMjIsIDMsIDk2LCAyMDgsIDI1NCwgNjEsIDI0NSwgMjE2LCAyNDMsIDIyMiwgMywgODYsIDIwOCwgMjU0LCAKLSAgICA2MSwgNTEsIDMsIDk2LCAyMDgsIDI1NCwgNjEsIDUxLCAzLCA4NiwgMjA4LCAyNTQsIDEzLCA0OSwgNjEsIDUxLCAxNTUsIAotICAgIDEzLCA1MCwgNjEsIDUxLCAxNTUsIDEzLCA0OSwgMjUwLCAyMTgsIDE1NSwgMTMsIDUwLCAyNTAsIDIxOCwgMTU1LCAxMywgCi0gICAgNDksIDUyLCAyNTAsIDIxOCwgMTU1LCAxMywgNTAsIDUyLCAyNTAsIDIxOCwgMTU1LCAxMywgNDksIDYxLCAyMDgsIDEzMywgCi0gICAgMjEzLCAzMywgMTU1LCAxMywgNTAsIDYxLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAxMywgNDksIDIzOSwgMjE0LCAyMTksIAotICAgIDc2LCAxMywgNTAsIDIzOSwgMjE0LCAyMTksIDc2LCAxNzcsIDIxNywgNTgsIDQ3LCAxODMsIDIxNywgNTgsIDQ3LCAyNTAsIAotICAgIDE5NCwgMjM4LCAyMjYsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAyMzgsIDIyNiwgMjQ2LCA2MiwgNDcsIDUwLCA1MywgMywgCi0gICAgNDMsIDIxOCwgNzYsIDE2MywgOTYsIDQ3LCAxNjMsIDg2LCA0NywgMTYzLCA0OSwgNTAsIDQ3LCAxNjMsIDk2LCA1MiwgNDcsIAotICAgIDE2MywgODYsIDUyLCA0NywgMTYzLCA0OSwgNTAsIDUyLCA0NywgMTYzLCA5NiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE2MywgCi0gICAgODYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIDk2LCA1MiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE2MywgODYsIDUyLCA1MywgCi0gICAgMjM5LCAxMjAsIDE0MiwgMTYzLCA4NiwgMjExLCAxNzEsIDQ3LCA1OCwgNTksIDI0OCwgMzYsIDU4LCA1OSwgMjQzLCA4MiwgCi0gICAgNTgsIDU5LCAyNDIsIDIxMCwgNTgsIDU5LCAyNDMsIDgxLCA1OCwgNTksIDI0MiwgMTQ2LCA1OCwgNTksIDI0MywgMTcsIDU4LCAKLSAgICA1OSwgMjQyLCAyMDksIDU4LCA1OSwgMjQzLCA4MCwgNTgsIDU5LCAyNDIsIDExNCwgNTgsIDU5LCAyNDIsIDI0MSwgNTgsIAotICAgIDU5LCAyNDIsIDE3NywgNTgsIDU5LCAyNDMsIDQ4LCA1OCwgNTksIDI0MiwgMTQ1LCA1OCwgNTksIDI0MywgMTYsIDU4LCA1OSwgCi0gICAgMjQyLCAyMDgsIDU4LCA1OSwgMjQzLCA3OSwgNTgsIDU5LCAyNDIsIDk4LCA1OCwgNTksIDI0MiwgMjI1LCA1OCwgNTksIAotICAgIDI0MiwgMTYxLCA1OCwgNTksIDI0MywgMzIsIDU4LCA1OSwgMjQyLCAxMjksIDU4LCA1OSwgMjQzLCAwLCA1OCwgNTksIDI0MiwgCi0gICAgMTkyLCA1OCwgNTksIDI0MywgNjMsIDU4LCA1OSwgMjQyLCAxMTMsIDU4LCA1OSwgMjQyLCAyNDAsIDU4LCA1OSwgMjQyLCAKLSAgICAxNzYsIDU4LCA1OSwgMjQzLCA0NywgNTgsIDU5LCAyNDIsIDE0NCwgNTgsIDU5LCAyNDMsIDE1LCA1OCwgNTksIDI0MiwgCi0gICAgMjA3LCA1OCwgNTksIDI0MywgNzgsIDU4LCA1OSwgMjQyLCA5MCwgNTgsIDU5LCAyNDIsIDIxNywgNTgsIDU5LCAyNDIsIAotICAgIDE1MywgNTgsIDU5LCAyNDMsIDI0LCA1OCwgNTksIDI0MiwgMTIxLCA1OCwgNTksIDI0MiwgMjQ4LCA1OCwgNTksIDI0MiwgCi0gICAgMTg0LCA1OCwgNTksIDI0MywgNTUsIDU4LCA1OSwgMjQyLCAxMDUsIDU4LCA1OSwgMjQyLCAyMzIsIDU4LCA1OSwgMjQyLCAKLSAgICAxNjgsIDU4LCA1OSwgMjQzLCAzOSwgNTgsIDU5LCAyNDIsIDEzNiwgNTgsIDU5LCAyNDMsIDcsIDU4LCA1OSwgMjQyLCAxOTksIAotICAgIDU4LCA1OSwgMjQzLCA3MCwgNTgsIDU5LCAyNDIsIDk3LCA1OCwgNTksIDI0MiwgMjI0LCA1OCwgNTksIDI0MiwgMTYwLCA1OCwgCi0gICAgNTksIDI0MywgMzEsIDU4LCA1OSwgMjQyLCAxMjgsIDU4LCA1OSwgMjQyLCAyNTUsIDU4LCA1OSwgMjQyLCAxOTEsIDU4LCAKLSAgICA1OSwgMjQzLCA2MiwgNTgsIDU5LCAyNDIsIDExMiwgNTgsIDU5LCAyNDIsIDIzOSwgNTgsIDU5LCAyNDIsIDE3NSwgNTgsIAotICAgIDU5LCAyNDMsIDQ2LCA1OCwgNTksIDI0MiwgMTQzLCA1OCwgNTksIDI0MywgMTQsIDU4LCA1OSwgMjQyLCAyMDYsIDU4LCA1OSwgCi0gICAgMjQzLCA3NywgNTgsIDU5LCAyNDIsIDg2LCA1OCwgNTksIDI0MiwgMjEzLCA1OCwgNTksIDI0MiwgMTQ5LCA1OCwgNTksIAotICAgIDI0MywgMjAsIDU4LCA1OSwgMjQyLCAxMTcsIDU4LCA1OSwgMjQyLCAyNDQsIDU4LCA1OSwgMjQyLCAxODAsIDU4LCA1OSwgCi0gICAgMjQzLCA1MSwgNTgsIDU5LCAyNDIsIDEwMSwgNTgsIDU5LCAyNDIsIDIyOCwgNTgsIDU5LCAyNDIsIDE2NCwgNTgsIDU5LCAKLSAgICAyNDMsIDM1LCA1OCwgNTksIDI0MiwgMTMyLCA1OCwgNTksIDI0MywgMywgNTgsIDU5LCAyNDIsIDE5NSwgNTgsIDU5LCAyNDMsIAotICAgIDY2LCA1OCwgNTksIDI0MiwgOTMsIDU4LCA1OSwgMjQyLCAyMjAsIDU4LCA1OSwgMjQyLCAxNTYsIDU4LCA1OSwgMjQzLCAyNywgCi0gICAgNTgsIDU5LCAyNDIsIDEyNCwgNTgsIDU5LCAyNDIsIDI1MSwgNTgsIDU5LCAyNDIsIDE4NywgNTgsIDU5LCAyNDMsIDU4LCAKLSAgICA1OCwgNTksIDI0MiwgMTA4LCA1OCwgNTksIDI0MiwgMjM1LCA1OCwgNTksIDI0MiwgMTcxLCA1OCwgNTksIDI0MywgNDIsIAotICAgIDU4LCA1OSwgMjQyLCAxMzksIDU4LCA1OSwgMjQzLCAxMCwgNTgsIDU5LCAyNDIsIDIwMiwgNTgsIDU5LCAyNDMsIDczLCA1OCwgCi0gICAgNTksIDI0MiwgODksIDU4LCA1OSwgMjQyLCAyMTYsIDU4LCA1OSwgMjQyLCAxNTIsIDU4LCA1OSwgMjQzLCAyMywgNTgsIDU5LCAKLSAgICAyNDIsIDEyMCwgNTgsIDU5LCAyNDIsIDI0NywgNTgsIDU5LCAyNDIsIDE4MywgNTgsIDU5LCAyNDMsIDU0LCA1OCwgNTksIAotICAgIDI0MiwgMTA0LCA1OCwgNTksIDI0MiwgMjMxLCA1OCwgNTksIDI0MiwgMTY3LCA1OCwgNTksIDI0MywgMzgsIDU4LCA1OSwgCi0gICAgMjQyLCAxMzUsIDU4LCA1OSwgMjQzLCA2LCA1OCwgNTksIDI0MiwgMTk4LCA1OCwgNTksIDI0MywgNjksIDU4LCA1OSwgMjQyLCAKLSAgICA5NiwgNTgsIDU5LCAyNDIsIDIyMywgNTgsIDU5LCAyNDIsIDE1OSwgNTgsIDU5LCAyNDMsIDMwLCA1OCwgNTksIDI0MiwgCi0gICAgMTI3LCA1OCwgNTksIDI0MiwgMjU0LCA1OCwgNTksIDI0MiwgMTkwLCA1OCwgNTksIDI0MywgNjEsIDU4LCA1OSwgMjQyLCAKLSAgICAxMTEsIDU4LCA1OSwgMjQyLCAyMzgsIDU4LCA1OSwgMjQyLCAxNzQsIDU4LCA1OSwgMjQzLCA0NSwgNTgsIDU5LCAyNDIsIAotICAgIDE0MiwgNTgsIDU5LCAyNDMsIDEzLCA1OCwgNTksIDI0MiwgMjA1LCA1OCwgNTksIDI0MywgNzYsIDU4LCA1OSwgMjQyLCA4NCwgCi0gICAgNTgsIDU5LCAyNDIsIDIxMSwgNTgsIDU5LCAyNDIsIDE0NywgNTgsIDU5LCAyNDMsIDE4LCA1OCwgNTksIDI0MiwgMTE1LCAKLSAgICA1OCwgNTksIDI0MiwgMjQyLCA1OCwgNTksIDI0MiwgMTc4LCA1OCwgNTksIDI0MywgNDksIDU4LCA1OSwgMjQyLCA5OSwgNTgsIAotICAgIDU5LCAyNDIsIDIyNiwgNTgsIDU5LCAyNDIsIDE2MiwgNTgsIDU5LCAyNDMsIDMzLCA1OCwgNTksIDI0MiwgMTMwLCA1OCwgCi0gICAgNTksIDI0MywgMSwgNTgsIDU5LCAyNDIsIDE5MywgNTgsIDU5LCAyNDMsIDY0LCA1OCwgNTksIDI0MiwgOTEsIDU4LCA1OSwgCi0gICAgMjQyLCAyMTgsIDU4LCA1OSwgMjQyLCAxNTQsIDU4LCA1OSwgMjQzLCAyNSwgNTgsIDU5LCAyNDIsIDEyMiwgNTgsIDU5LCAKLSAgICAyNDIsIDI0OSwgNTgsIDU5LCAyNDIsIDE4NSwgNTgsIDU5LCAyNDMsIDU2LCA1OCwgNTksIDI0MiwgMTA2LCA1OCwgNTksIAotICAgIDI0MiwgMjMzLCA1OCwgNTksIDI0MiwgMTY5LCA1OCwgNTksIDI0MywgNDAsIDU4LCA1OSwgMjQyLCAxMzcsIDU4LCA1OSwgCi0gICAgMjQzLCA4LCA1OCwgNTksIDI0MiwgMjAwLCA1OCwgNTksIDI0MywgNzEsIDU4LCA1OSwgMjQyLCA4NywgNTgsIDU5LCAyNDIsIAotICAgIDIxNCwgNTgsIDU5LCAyNDIsIDE1MCwgNTgsIDU5LCAyNDMsIDIxLCA1OCwgNTksIDI0MiwgMTE4LCA1OCwgNTksIDI0MiwgCi0gICAgMjQ1LCA1OCwgNTksIDI0MiwgMTgxLCA1OCwgNTksIDI0MywgNTIsIDU4LCA1OSwgMjQyLCAxMDIsIDU4LCA1OSwgMjQyLCAKLSAgICAyMjksIDU4LCA1OSwgMjQyLCAxNjUsIDU4LCA1OSwgMjQzLCAzNiwgNTgsIDU5LCAyNDIsIDEzMywgNTgsIDU5LCAyNDMsIDQsIAotICAgIDU4LCA1OSwgMjQyLCAxOTYsIDU4LCA1OSwgMjQzLCA2NywgNTgsIDU5LCAyNDIsIDk0LCA1OCwgNTksIDI0MiwgMjIxLCA1OCwgCi0gICAgNTksIDI0MiwgMTU3LCA1OCwgNTksIDI0MywgMjgsIDU4LCA1OSwgMjQyLCAxMjUsIDU4LCA1OSwgMjQyLCAyNTIsIDU4LCAKLSAgICA1OSwgMjQyLCAxODgsIDU4LCA1OSwgMjQzLCA1OSwgNTgsIDU5LCAyNDIsIDEwOSwgNTgsIDU5LCAyNDIsIDIzNiwgNTgsIAotICAgIDU5LCAyNDIsIDE3MiwgNTgsIDU5LCAyNDMsIDQzLCA1OCwgNTksIDI0MiwgMTQwLCA1OCwgNTksIDI0MywgMTEsIDU4LCA1OSwgCi0gICAgMjQyLCAyMDMsIDU4LCA1OSwgMjQzLCA3NCwgNTgsIDU5LCAyNDIsIDg1LCA1OCwgNTksIDI0MiwgMjEyLCA1OCwgNTksIAotICAgIDI0MiwgMTQ4LCA1OCwgNTksIDI0MywgMTksIDU4LCA1OSwgMjQyLCAxMTYsIDU4LCA1OSwgMjQyLCAyNDMsIDU4LCA1OSwgCi0gICAgMjQyLCAxNzksIDU4LCA1OSwgMjQzLCA1MCwgNTgsIDU5LCAyNDIsIDEwMCwgNTgsIDU5LCAyNDIsIDIyNywgNTgsIDU5LCAKLSAgICAyNDIsIDE2MywgNTgsIDU5LCAyNDMsIDM0LCA1OCwgNTksIDI0MiwgMTMxLCA1OCwgNTksIDI0MywgMiwgNTgsIDU5LCAyNDIsIAotICAgIDE5NCwgNTgsIDU5LCAyNDMsIDY1LCA1OCwgNTksIDI0MiwgOTIsIDU4LCA1OSwgMjQyLCAyMTksIDU4LCA1OSwgMjQyLCAKLSAgICAxNTUsIDU4LCA1OSwgMjQzLCAyNiwgNTgsIDU5LCAyNDIsIDEyMywgNTgsIDU5LCAyNDIsIDI1MCwgNTgsIDU5LCAyNDIsIAotICAgIDE4NiwgNTgsIDU5LCAyNDMsIDU3LCA1OCwgNTksIDI0MiwgMTA3LCA1OCwgNTksIDI0MiwgMjM0LCA1OCwgNTksIDI0MiwgCi0gICAgMTcwLCA1OCwgNTksIDI0MywgNDEsIDU4LCA1OSwgMjQyLCAxMzgsIDU4LCA1OSwgMjQzLCA5LCA1OCwgNTksIDI0MiwgMjAxLCAKLSAgICA1OCwgNTksIDI0MywgNzIsIDU4LCA1OSwgMjQyLCA4OCwgNTgsIDU5LCAyNDIsIDIxNSwgNTgsIDU5LCAyNDIsIDE1MSwgNTgsIAotICAgIDU5LCAyNDMsIDIyLCA1OCwgNTksIDI0MiwgMTE5LCA1OCwgNTksIDI0MiwgMjQ2LCA1OCwgNTksIDI0MiwgMTgyLCA1OCwgCi0gICAgNTksIDI0MywgNTMsIDU4LCA1OSwgMjQyLCAxMDMsIDU4LCA1OSwgMjQyLCAyMzAsIDU4LCA1OSwgMjQyLCAxNjYsIDU4LCAKLSAgICA1OSwgMjQzLCAzNywgNTgsIDU5LCAyNDIsIDEzNCwgNTgsIDU5LCAyNDMsIDUsIDU4LCA1OSwgMjQyLCAxOTcsIDU4LCA1OSwgCi0gICAgMjQzLCA2OCwgNTgsIDU5LCAyNDIsIDk1LCA1OCwgNTksIDI0MiwgMjIyLCA1OCwgNTksIDI0MiwgMTU4LCA1OCwgNTksIAotICAgIDI0MywgMjksIDU4LCA1OSwgMjQyLCAxMjYsIDU4LCA1OSwgMjQyLCAyNTMsIDU4LCA1OSwgMjQyLCAxODksIDU4LCA1OSwgCi0gICAgMjQzLCA2MCwgNTgsIDU5LCAyNDIsIDExMCwgNTgsIDU5LCAyNDIsIDIzNywgNTgsIDU5LCAyNDIsIDE3MywgNTgsIDU5LCAKLSAgICAyNDMsIDQ0LCA1OCwgNTksIDI0MiwgMTQxLCA1OCwgNTksIDI0MywgMTIsIDU4LCA1OSwgMjQyLCAyMDQsIDU4LCA1OSwgCi0gICAgMjQzLCA3NSwgODYsIDIwNywgMTM0LCA1MywgMywgODAsIDk1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCA1MiwgODAsIDk1LCAKLSAgICA5NiwgNTIsIDUzLCAzLCA4MCwgOTUsIDg2LCA1MiwgNTMsIDMsIDgwLCA5NSwgNDksIDUwLCA1MiwgNTMsIDMsIDgwLCA5NSwgCi0gICAgODYsIDIwNywgMTM0LCA1MywgMjM5LCAxMjAsIDE0MiwgOTYsIDUyLCA1MywgMjM5LCAxMjAsIDE0MiwgODYsIDUyLCA1MywgCi0gICAgMjM5LCAxMjAsIDE0MiwgMTgzLCA1MywgMywgMjM2LCAxMDYsIDk1LCAxNzcsIDUzLCAzLCAyMzYsIDEwNiwgOTUsIDE3NywgCi0gICAgMjA4LCA3MCwgNDcsIDE4MywgMjA4LCA3MCwgNDcsIDk2LCA1MiwgMjQ0LCAxNDUsIDQ3LCA4NiwgNTIsIDI0NCwgMTQ1LCAKLSAgICA0NywgOTYsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgODYsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgODYsIDIwNywgMTM0LCAKLSAgICAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCA1MywgMywgMjQyLCA4MywgMjExLCA3NywgMTc3LCA1MywgMjA4LCAxNzMsIAotICAgIDE0MiwgMTgzLCA1MywgMjA4LCAxNzMsIDE0MiwgODYsIDUzLCAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA4NiwgNTMsIDMsIAotICAgIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OCwgODYsIDIwNywgMTM0LCA1MywgCi0gICAgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAKLSAgICAyNTAsIDk2LCA4NiwgMjUwLCA5NiwgOTYsIDUyLCAyNTAsIDk2LCA4NiwgNTIsIDI1MCwgOTYsIDk2LCA1MywgMjA4LCAxNzMsIAotICAgIDYyLCAyNDMsIDIyMSwgODYsIDUzLCAyMDgsIDE3MywgNjIsIDI0MywgMjIxLCA5NiwgNTMsIDIzOSwgMTIwLCAyNDgsIDIzMSwgCi0gICAgMjA4LCAxNzMsIDYyLCAyNDMsIDIyMSwgODYsIDUzLCAyMzksIDEyMCwgMjQ4LCAyMzEsIDIwOCwgMTczLCA2MiwgMjQzLCAKLSAgICAyMjEsIDE1MywgMjA0LCA0NiwgMjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDI1LCAyMTEsIAotICAgIDIzOCwgMjA0LCA0NiwgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDMsIDExMywgMTUzLCAyNDEsIDE3NiwgNTMsIDMsIDExMywgCi0gICAgMjExLCAyMzgsIDI0MSwgMTc2LCA1MywgMywgMTEzLCAyMTEsIDIzOCwgMjA0LCA0NiwgNTMsIDMsIDExMywgMTUzLCAyMDQsIAotICAgIDQ2LCA1MywgMjUsIDE1MywgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIDI1LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCAKLSAgICA1MywgMjUsIDE1MywgMjA0LCA0NiwgNDcsIDIxNSwgMjQ1LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDI0MCwgODQsIDI0MywgCi0gICAgMjI3LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDIxNSwgMjQ1LCAyNDMsIDIyNywgMjExLCAyMzgsIDI0MSwgMTc2LCAKLSAgICA1MywgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjQ1LCAxMjQsIDIxMSwgMjM4LCAKLSAgICAyNDEsIDE3NiwgNDcsIDI0MCwgODQsIDI0MywgMjI4LCAyNDUsIDEyNCwgMTUzLCAyNDEsIDE3NiwgNDcsIDIxNSwgMjQ1LCAKLSAgICAyNDMsIDIyOCwgMjQ1LCAxMjQsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDUzLCAyNDUsIDEyNCwgCi0gICAgMTUzLCAyMDQsIDQ2LCA0NywgMTUzLCAyMDQsIDQ2LCA1MywgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMDQsIDc2LCAKLSAgICA1MywgMjE4LCA1OSwgMjQzLCAxNjQsIDIxNiwgMTYsIDUzLCAyMTgsIDU5LCA4NiwgMjA5LCA4NCwgMjQ1LCA4NCwgMjA2LCAKLSAgICAyMTIsIDUzLCAyMTgsIDU5LCA4NiwgMjA5LCA4NCwgMjQ1LCA4NCwgMjQyLCA2OCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCAKLSAgICA4NCwgMjQ1LCA4NCwgMjI3LCAyMTIsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDI0NSwgODQsIDIxNiwgNSwgMjE2LCAKLSAgICA4LCAyNTAsIDEyOSwgMjQ2LCAxOCwgNDcsIDIyNywgMjE1LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyMDgsIDE0NSwgCi0gICAgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjQ3LCAyNDgsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDIwOCwgMTQ1LCAyNTAsIAotICAgIDEyOSwgMjQ2LCAxOCwgNTMsIDMsIDIyNCwgMTAyLCAyMDgsIDE0NSwgMjUwLCAxMjksIDI1MCwgMTk0LCA1MywgMywgMjE4LCAKLSAgICA3NiwgMjI2LCAyNTEsIDUwLCAyMTMsIDE0NSwgMjQ2LCAxOCwgNDcsIDIyNiwgMjUxLCA0OSwgMjEzLCAxNDUsIDI1MCwgCi0gICAgMTk0LCA0NywgMjUwLCAxOTQsIDI0NiwgMTYsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAyNDYsIDE2LCAyNDYsIDYyLCA0NywgCi0gICAgODYsIDUzLCA4NywgMjEyLCAyMjgsIDk2LCA0NywgOTYsIDUzLCA4NywgMjEyLCAyMjgsIDg2LCA0NywgMjEyLCAyMjgsIDg2LCAKLSAgICA1MywgODcsIDk2LCA0NywgODYsIDUzLCAzLCA5MSwgNTYsIDk2LCA1MywgMywgOTEsIDU2LCA4NiwgNTMsIDIwOSwgMjUsIAotICAgIDIwMywgMTk2LCA0OSwgNTAsIDUzLCAyMDksIDI1LCA1LCAyNDYsIDYxLCAxNzcsIDIwNywgMTM0LCA1MywgMjM5LCAxMjAsIAotICAgIDUsIDI0NiwgNjEsIDQ5LCAxNTAsIDExMiwgNTAsIDE1MCwgMTIxLCAyMzcsIDg2LCA0OSwgMTUwLCAxMjEsIDUwLCAxNTAsIAotICAgIDExMiwgMjM3LCA4NiwgMTEyLCAxNTAsIDUwLCAxMjEsIDE1MCwgNDksIDIzNywgODYsIDExMiwgMTUwLCA0OSwgMTIxLCAKLSAgICAxNTAsIDUwLCAyMzcsIDg2LCA0OSwgMTUwLCAxMTIsIDUwLCAxNTAsIDExMiwgMjM3LCA4NiwgMTEyLCAxNTAsIDUwLCAxMjEsIAotICAgIDE1MCwgNTAsIDIzNywgODYsIDQ5LCAxNTAsIDEyMSwgNTAsIDE1MCwgMTIxLCAyMzcsIDg2LCAxMTIsIDE1MCwgNDksIDEyMSwgCi0gICAgMTUwLCA0OSwgMjM3LCA4NiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCAyMDgsIDE3MywgMTQyLCA4NiwgMjM3LCA4NywgCi0gICAgMywgMTUwLCAxMTIsIDIwOCwgMTczLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA1MCwgMjA4LCAxNzMsIDE0MiwgMTgzLCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMDgsIDE3MywgMTQyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIwOCwgMTczLCAKLSAgICAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjA4LCAxNzMsIDE0MiwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAKLSAgICAyMDgsIDE3MywgMTQyLCAxODMsIDIzNywgODcsIDMsIDE1MCwgNDksIDIwOCwgMTczLCAxNDIsIDk2LCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDExMiwgMjM5LCAxMjAsIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCAyMzksIDEyMCwgMTQyLCAxNzcsIAotICAgIDIzNywgODcsIDMsIDE1MCwgNTAsIDIzOSwgMTIwLCAxNDIsIDE4MywgMjM3LCA4NywgMywgMTUwLCA1MCwgMjM5LCAxMjAsIAotICAgIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMzksIDEyMCwgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIAotICAgIDIzOSwgMTIwLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgMjM5LCAxMjAsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDQ5LCAyMzksIDEyMCwgMTQyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCA5NiwgMjM3LCA4NywgMywgCi0gICAgMTUwLCAyNDIsIDcwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIDI0OCwgMTEwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMjE2LCAxNiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA3MCwgMTgzLCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgMTYsIDk2LCAyMzcsIAotICAgIDg3LCAzLCAxNTAsIDExMiwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDIwNiwgMjI0LCA5NiwgMjM3LCA4NywgMywgMTUwLCAKLSAgICAxMjEsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDcwLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCA5NiwgCi0gICAgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIyNCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCA4NywgOTYsIDIzNywgODcsIDMsIAotICAgIDE1MCwgMjQyLCA3MCwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgMTYzLCAyNDQsIDE0NCwgOTYsIDIzNywgODcsIAotICAgIDMsIDE1MCwgMTIxLCAyNDgsIDEyNiwgMTYzLCAyNDQsIDE0NCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgMTYzLCAKLSAgICAyNDQsIDE0NCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyNDgsIDEyNiwgMTYzLCAyNDQsIDE0NCwgMTc3LCAyMzcsIAotICAgIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgMTYsIDE4MywgMjM3LCA4NywgMywgCi0gICAgMTUwLCA0OSwgMjQ4LCAxMTAsIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCA1MCwgNTIsIDUzLCAzLCAyMTUsIAotICAgIDE4OSwgMjM3LCA2NCwgMjQxLCAzNSwgMiwgODcsIDg2LCA0NywgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgODYsIDQ3LCA5NiwgCi0gICAgNTMsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDg2LCA1MywgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgODYsIDUzLCA4NywgCi0gICAgMjUxLCA3LCAxNTYsIDEzNSwgMjI3LCAxNzksIDg3LCA5NiwgNDcsIDk2LCA1MywgMjA5LCAyNSwgMjI3LCAxNzgsIDIzNywgCi0gICAgMjQ3LCA4NywgODYsIDQ3LCAyMTAsIDI0NSwgODcsIDg2LCA0NywgOTYsIDUzLCAyMDksIDI1LCAyMTAsIDI0NCwgMjEwLCAKLSAgICAxOTgsIDg3LCA5NiwgNDcsIDQ5LCAyMzksIDI0NCwgMjA5LCAyNDgsIDUwLCAyMzksIDI0NCwgMjA5LCAyNDgsIDExMiwgCi0gICAgMjM5LCAyNDQsIDIwOSwgMjQ4LCAxMjEsIDIzOSwgMjQ0LCAyMDksIDI0OCwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAyNDQsIAotICAgIDQzLCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxMSwgMTg4LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIwNywgMTIxLCAyNDUsIDI0MiwgCi0gICAgNDksIDYxLCAyNDUsIDkzLCAxNTUsIDUwLCA2MSwgMjQ1LCA5MywgMTU1LCA0OSwgNjEsIDIxOSwgNzYsIDUwLCA2MSwgMjE5LCAKLSAgICA3NiwgMjAyLCAxNjAsIDIyMSwgMTY0LCA0OSwgMjMxLCA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDUwLCAyMzEsIAotICAgIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNDksIDI0OCwgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA1MCwgCi0gICAgMjQ4LCA2NSwgMTU1LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAyMDYsIDI0NiwgNTAsIDUxLCAyNDcsIDIyNywgMywgMjA2LCAKLSAgICAyNDYsIDQ5LCA1MSwgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAyMzEsIDUwLCAyMDgsIDE0NSwgMjQ1LCAxNjUsIDUwLCA1MSwgCi0gICAgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAyMzEsIDUwLCAyNDcsIDI0OCwgMjQ1LCAxNjUsIDQ5LCA1MSwgMjQ3LCAyMjcsIDMsIAotICAgIDIwOCwgMjU1LCAyMzEsIDUwLCAyNDcsIDI0OCwgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAKLSAgICAyMzEsIDUwLCAyMDgsIDE0NSwgMjQ1LCAxNjUsIDQ5LCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDMsIDI0MywgODUsIDUwLCAyNTAsIAotICAgIDIxOCwgMjQ3LCAyMjcsIDMsIDI0MywgODUsIDQ5LCAyNTAsIDEyOSwgMjI3LCAxNzksIDE1NSwgNTAsIDI1MCwgMTI5LCAKLSAgICAyMzcsIDI0NywgMTU1LCA1MiwgNDksIDI1MCwgMTI5LCAyMzcsIDI0NywgMTU1LCA1MiwgNTAsIDI1MCwgMTI5LCAyMjcsIAotICAgIDE3OSwgMTU1LCA0OSwgNjIsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUwLCA2MiwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgCi0gICAgMjQyLCA4MywgMjQwLCA0MCwgODAsIDIwMiwgMzAsIDIyNywgMTE0LCAyMjUsIDE3LCAyNTAsIDIxOCwgMjIwLCAxLCAyMjcsIAotICAgIDIyMiwgNTAsIDI1MCwgMjE4LCAyMDYsIDY5LCAzLCAyMTEsIDE3NywgMjI1LCAxNywgNTAsIDI1MCwgMjE4LCAzLCAyNDMsIAotICAgIDg1LCAyNTAsIDIxOCwgMywgMjE1LCA5NCwgMjMxLCA2LCAyNTEsIDEyNiwgMjUwLCAyMTcsIDIxMSwgMjA4LCAyNTAsIDIxOCwgCi0gICAgMjIwLCAxLCAyMjcsIDIyMiwgMjExLCAyMDgsIDI1MCwgMjE4LCAyMjAsIDEsIDIwNiwgMjI0LCAyMDcsIDE3NCwgMjUwLCAKLSAgICAyMTcsIDIxNiwgNzMsIDI1MCwgMjE3LCAyNTAsIDIxOCwgMywgMjA2LCAyNDYsIDIxNiwgNzMsIDI1MCwgMjE4LCAzLCAyMDYsIAotICAgIDI0NiwgMjIwLCA4OSwgMjUwLCAyMTgsIDIyMCwgMSwgMjA2LCAyMjQsIDIyMCwgODksIDI1MCwgMjE4LCAyMjAsIDEsIDI0MiwgCi0gICAgNzAsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgCi0gICAgMTEyLCAyNSwgMjE2LCAxNiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIAotICAgIDUzLCAyMTgsIDU5LCAxMTIsIDI1LCAyMjcsIDIyMiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgCi0gICAgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAxMjEsIDI1LCAyMTYsIDE2LCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAKLSAgICAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDEyMSwgMjUsIDIyNywgMjIyLCAyMjUsIDE3LCAyNTAsIAotICAgIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDUwLCAyNSwgMjA2LCAyMjQsIAotICAgIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgNDksIAotICAgIDI1LCAyMDYsIDIyNCwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAKLSAgICAyMTgsIDU5LCA1MCwgMjUsIDI0MiwgNzAsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAKLSAgICAyMzEsIDUwLCA1MywgMjE4LCA1OSwgNDksIDI1LCAyNDIsIDcwLCAyMTYsIDczLCAyNDEsIDk0LCAyMTMsIDExNywgMjQxLCAKLSAgICA5NCwgMjEzLCAxMTgsIDMsIDIxOSwgMjAzLCAyNDEsIDk0LCAyMTMsIDExOCwgMywgNSwgMjQ2LCA2MiwgNTUsIDI0MSwgOTQsIAotICAgIDIxMywgMTE4LCAzLCA1MCwgNTMsIDU1LCAyNDEsIDk0LCAyMTMsIDExOCwgMywgNDksIDUzLCA1NSwgMjQ2LCA2MiwgMywgCi0gICAgMjM2LCAxMDYsIDE0MiwgNDMsIDgwLCAxNDIsIDQzLCAyMTksIDgxLCA0MywgMjE2LCA3NCwgMjEyLCAwLCA0MywgMjE4LCAKLSAgICAyMzMsIDI0NiwgNjIsIDI0MywgMTQyLCAyNDcsIDEzNywgMjM2LCAxMDYsIDI0OCwgMjMxLCAyNSwgMjA4LCAxNDUsIDE2MiwgCi0gICAgMjQzLCAxNDIsIDI0NywgMTM3LCA4MCwgMTQyLCAyNDYsIDYyLCAzLCAyMTAsIDIwMCwgMjAzLCAxOTYsIDQzLCAyNTAsIAotICAgIDE5MiwgMjQzLCAxMzcsIDU0LCAxMTIsIDUzLCAyMDksIDI1LCAyNDYsIDYxLCA0MywgNjEsIDI0NywgMTc3LCA0MywgMjQ3LCAKLSAgICAxNzcsIDQzLCAyMjcsIDE3OCwgNDMsIDIzNywgMjQ2LCAyNDYsIDYyLCAzLCA1LCAyNDYsIDYyLCAyMDgsIDE3MywgMjA5LCAKLSAgICA5MywgMjE2LCAxNiwgMjQ2LCA2MiwgMywgMTIwLCAyMzYsIDEwNiwgMjExLCAyMCwgMjA4LCAxNzMsIDIwOSwgOTMsIDIxNiwgCi0gICAgMTYsIDEwMywgMjE1LCAyNDUsIDI0MywgMjI4LCAyMTIsIDU3LCAxMDMsIDI0MCwgODQsIDI0MywgMjI4LCAyMTIsIDU3LCAKLSAgICAxMDMsIDI1MCwgNTksIDEwMywgNSwgMjQ2LCA2MSwgMTAzLCAyMTEsIDE3NywgMTIwLCAyMzAsIDk4LCAyMTEsIDE3NSwgCi0gICAgMjA4LCA4NiwgMywgNzAsIDU1LCAyMDgsIDg2LCAzLCAyMDYsIDI0NiwgMjE1LCA5NCwgMjMxLCA1MCwgMjA4LCA4NSwgMjA4LCAKLSAgICA4NiwgMywgMjEzLCAxMjQsIDI1MCwgNTAsIDI0NywgMjQ3LCA1MCwgMjA4LCA4NiwgODcsIDQ5LCAyMDgsIDg1LCA0OSwgCi0gICAgMjA4LCA4NiwgMjQ4LCAxMTAsIDgwLCAxNDIsIDgwLCAyNDgsIDIzMSwgMjQ4LCAxMTAsIDUwLCAyMDgsIDg1LCAyNDcsIAotICAgIDIzNSwgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQ3LCAyMzUsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYyLCAyNDcsIDIzNCwgCi0gICAgMjMsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDIzLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MSwgMjM2LCA0MCwgNjIsIDIzNiwgCi0gICAgNDAsIDQ5LCAyMDQsIDIxLCAyNDAsIDQwLCA1MCwgMjA0LCAyMSwgMjQwLCA0MCwgNDksIDUyLCAyMDQsIDIxLCAyNDAsIDQwLCAKLSAgICA1MCwgNTIsIDIwNCwgMjEsIDI0MCwgNDAsIDIzMSwgNDIsIDIzMSwgMjcsIDIwOCwgMjUxLCAxMTUsIDIzMSwgMjcsIDIzMSwgCi0gICAgMjgsIDIyMiwgMjM0LCAzLCA4MCwgMTQyLCAyNDIsIDc3LCAyMjMsIDIyOCwgNTEsIDMsIDI0NSwgMTg3LCAyMTksIDIwOCwgCi0gICAgMjMxLCAzOSwgMjUwLCA4MSwgMjEyLCAxOTMsIDIxNywgMjI0LCAyNDEsIDM1LCAyLCAyNSwgMjEyLCA1OSwgMjE5LCA4MSwgCi0gICAgMjQxLCAzNSwgMiwgMjUsIDIxMiwgNTksIDIxOSwgODIsIDMsIDIwOCwgMjI4LCA1NSwgMjM1LCAxNTQsIDIwOCwgMTczLCAKLSAgICAyNSwgMjEyLCA1OSwgMjE5LCA4MSwgMjM4LCA0OCwgMjExLCA5MywgMjA5LCA4MSwgMjQyLCA2OSwgMjA4LCA4NiwgMywgNDksIAotICAgIDE2MiwgMjQ4LCA0MywgMjQyLCA2OSwgMjA4LCA4NiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjIsIDI0MywgMjIyLCAzLCAKLSAgICAxMjEsIDQ3LCA2MiwgMjI2LCAyNDYsIDYxLCAyNDYsIDYyLCAzLCAxMjEsIDQ3LCA2MiwgMjQ2LCA2MiwgMywgMTIxLCA0NywgCi0gICAgMjQxLCAyMCwgNjEsIDIxMSwgMTc3LCAyNDEsIDIwLCA2MiwgMjExLCAxNzcsIDI0MSwgMjAsIDYxLCAyNDMsIDIyMSwgMjQxLCAKLSAgICAyMCwgNjIsIDI0MywgMjIxLCAyNDEsIDIwLCA2MSwgMjQ2LCA2MSwgMjQxLCAyMCwgNjIsIDI0NiwgNjEsIDIxNSwgMTM0LCAKLSAgICAyMTYsIDc0LCAyMTIsIDEsIDIxOSwgMjU0LCAyMTIsIDEsIDMsIDIxOSwgMjAzLCAyMTYsIDc0LCAyMTIsIDEsIDMsIDIzNiwgCi0gICAgMTA2LCA5NSwgMjQ4LCA3MywgMjEyLCAwLCAyNDgsIDczLCAyMTYsIDc0LCAyMTIsIDAsIDUyLCAyMTgsIDc2LCAyMDgsIDcwLCAKLSAgICAyMTgsIDc2LCAyMjcsIDIxNywgMjQ1LCA4NiwgMjUwLCAyMTgsIDE1NSwgMjE2LCAxMSwgMjQ1LCA4NiwgMjUwLCAyMTgsIAotICAgIDE1NSwgMjA4LCAyMTIsIDIyNCwgMTAwLCAyMjMsIDE2MiwgNDMsIDcwLCAyMTksIDI1NCwgMjIzLCAxNjIsIDQzLCA5MSwgCi0gICAgMjE5LCAyNTQsIDIyMywgMTYyLCA0MywgMjMsIDIxOSwgMjU0LCAyMjMsIDE2MiwgMjA2LCAyMzgsIDIxOSwgMjU1LCAzLCAKLSAgICAyNDMsIDg1LCAyMjMsIDE2MiwgMjA2LCAyMzgsIDIxOSwgMjU1LCAzLCAyMTgsIDc2LCAyMjMsIDE2MiwgNTEsIDIzMCwgCi0gICAgMjQ1LCAyMTksIDI1NCwgMjIzLCAxNjIsIDUxLCAyMDYsIDIzOCwgMjE5LCAyNTQsIDEyMCwgMjI3LCAzNywgMjUsIDIxOSwgCi0gICAgMjU0LCAxMjAsIDIyNywgMzcsIDIxOSwgMjQ1LCAyMTksIDI1NCwgMjIzLCAxNjIsIDIzLCAyMTksIDI1NCwgMjI0LCA1OCwgCi0gICAgMTIwLCAyMTAsIDIyMCwgMjEwLCAyMTgsIDMsIDIzMSwgMiwgMjE3LCA1OCwgMjMxLCAzLCAyMTksIDI1NCwgMjM5LCAyNTIsIAotICAgIDIxOSwgNzEsIDIzMSwgMiwgMjMxLCAzLCAzLCA1MiwgOTUsIDIzMSwgMywgMjUwLCAxNSwgMywgMjEyLCA1NywgMjQ2LCA1NCwgCi0gICAgMjM5LCA5OSwgMjUwLCAxOTQsIDIzMSwgMCwgMjI3LCAxMTUsIDIzMSwgMSwgMywgMjE2LCAxNDIsIDIxOSwgNTIsIDI1MCwgCi0gICAgMTA0LCAyMTgsIDUzLCAyMjcsIDExNSwgMjMxLCAxLCAzLCAyMTMsIDE0NSwgMjE5LCA1MiwgMjUwLCAxMDQsIDIxOCwgNTMsIAotICAgIDIyNywgMTE1LCAyMzEsIDEsIDIyMSwgMTY2LCAyMzEsIDQ0LCAyMDksIDkzLCAyMTgsIDUzLCAyMzEsIDMsIDI1MCwgMTA0LCAKLSAgICAzNCwgMjE4LCA2MywgMjE5LCAyNTQsIDIxNywgNTIsIDIzMSwgMywgMjE5LCAyNTQsIDIzMSwgMywgMywgOTYsIDUzLCAzLCAKLSAgICAxMTMsIDIzMSwgMywgMywgMjMsIDU0LCAyMzEsIDMsIDMsIDIzMCwgMjQ0LCAyMzEsIDMsIDMsIDIwNiwgMjM3LCAyMzEsIDMsIAotICAgIDMsIDIxOSwgMjAzLCAyMzEsIDMsIDMsIDIwNiwgMjQ2LCAyMzAsIDk5LCAyMjgsIDgsIDQ5LCAyMDgsIDg2LCAyMTksIDI1NCwgCi0gICAgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgMjQ1LCAyMjMsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIAotICAgIDIxOCwgMTE0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAyMTcsIDIxOSwgOTEsIDIsIDMsIDUsIDI0NiwgNjIsIAotICAgIDU1LCA5MSwgMiwgMywgMjQ2LCA1MywgMjUxLCAxMzksIDU1LCA5MSwgMiwgMywgMjA4LCAyMjgsIDU1LCA5MSwgMiwgMywgCi0gICAgNzAsIDU2LCA5MSwgMiwgMywgMjA4LCAyMjgsIDU2LCA5MSwgMiwgMywgMjEwLCAyNDYsIDEwOCwgOTEsIDIsIDMsIDYyLCAKLSAgICAyMDgsIDg1LCAyMjQsIDEwMywgMiwgMywgMjQ1LCAyMzQsIDU1LCAyMjQsIDEwMywgMiwgMywgNzAsIDU2LCAyMjQsIDEwMywgCi0gICAgMiwgMywgMjQwLCA4NCwgMjQzLCA4MywgMjI0LCAxMDMsIDIsIDMsIDIxNSwgMjQ1LCAyNDMsIDgzLCA5MSwgMiwgMjMxLCAKLSAgICA1MCwgNDksIDE2MiwgMjQ2LCA2MSwgOTEsIDIsIDIzMSwgNTAsIDUwLCAxNjIsIDI0NiwgNjEsIDIwNiwgNTQsIDIxOSwgCi0gICAgMjQ1LCAyNDUsIDEzMSwgMjE3LCAyMjQsIDIyMywgMjI0LCAyLCAzLCA3MCwgNTUsIDIyMywgMjI0LCAyLCAzLCAyMDYsIAotICAgIDI0NiwgMjEzLCAxNDIsIDIxNywgMjI1LCAzLCAyNDcsIDI0OCwgMjQ2LCAxNSwgMjEyLCAzNCwgMjE3LCAyMjQsIDIyMywgCi0gICAgMjI0LCAyLCAyMzEsIDUwLCA0OSwgMTYyLCAyNDYsIDYxLCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgNTAsIDE2MiwgMjQ2LCAKLSAgICA2MSwgNDMsIDIyMywgMjI0LCAyLCAzLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDUyLCAyNDYsIAotICAgIDYxLCA0MywgMjQzLCAxMzcsIDU0LCA5MSwgMiwgMjMxLCA1MCwgMjA4LCA4NSwgMjI0LCAxMDMsIDIsIDIzMSwgNTAsIDIwOCwgCi0gICAgODUsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCAyMDgsIDg1LCAyMzAsIDI1MywgMjE3LCAyMjQsIDIxNiwgNiwgMjMwLCAyNTMsIAotICAgIDIxNywgMjI0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNiwgMTE2LCAyNDUsIDIyMywgMjUwLCAyNDUsIDIxOSwgMjQ1LCAKLSAgICAyNDUsIDE3MSwgMjMwLCAyNDUsIDMsIDI0MywgODUsIDIwNiwgMjM4LCAzLCAyMjQsIDEwMywgNTQsIDIwNiwgMjM4LCAzLCAKLSAgICAyMTksIDIwMywgMjMwLCAyNDUsIDMsIDIxOSwgMjAzLCAyMzAsIDI0NSwgMywgMjI3LCAzNywgMjUwLCAyMjYsIDIwNiwgCi0gICAgMjM4LCAzLCAyMjcsIDM3LCAyMTksIDI0NCwgMjA2LCAyMzgsIDg3LCAyMzAsIDI0NCwgMjMwLCAyNDUsIDg3LCAyMDYsIAotICAgIDIzNywgMjA2LCAyMzgsIDg3LCAyNDgsIDIzMSwgODcsIDIzMCwgMjQ0LCAyMzAsIDI0NSwgODcsIDI0OCwgMjMxLCA4NywgCi0gICAgMjA2LCAyMzcsIDIwNiwgMjM4LCAyNDgsIDExMCwgMjUsIDIzMCwgOTgsIDMsIDIwNiwgMjM3LCAyMzAsIDI0NSwgMjQ4LCAKLSAgICAxMTAsIDI1LCAyMzAsIDk4LCAzLCAyMzAsIDI0NCwgMjQ2LCAxNiwgMjA2LCAyMzgsIDMsIDIxMywgMTIzLCAyNDYsIDE2LCAKLSAgICAyMzAsIDI0NSwgMywgMjEzLCAxMjMsIDUyLCA1MSwgMjMwLCAyNDQsIDUyLCA1MSwgMjA2LCAyMzcsIDI0NiwgMTYsIDIwNiwgCi0gICAgMjM4LCAzLCAyMTMsIDEyNCwgMjUsIDIxMiwgMzQsIDIxNywgMjI0LCAyMjcsIDM3LCAyNSwgMywgNzAsIDU1LCAyMjcsIDM3LCAKLSAgICAyMTksIDI0NSwgMywgNzAsIDU1LCA1MiwgMjI3LCAzNywgMjUwLCAyMjYsIDUyLCAyMjcsIDM3LCAyMTksIDI0NCwgMTIwLCAKLSAgICAyMzAsIDI0NiwgMjI3LCAzNywgMjUwLCAyMjYsIDEyMCwgMjMwLCAyNDYsIDIyNywgMzcsIDIxOSwgMjQ0LCAyMTIsIDQzLCAKLSAgICAyMjgsIDgsIDIxOSwgMjQ0LCAyMTIsIDQzLCAyMjgsIDgsIDI1MCwgMjI2LCAyMjcsIDM3LCAyMTksIDI0NSwgMjE5LCAyMDAsIAotICAgIDIyNywgMzcsIDI1MCwgMjI2LCAyMjcsIDM3LCAyNSwgMywgMTAxLCAyMTEsIDc3LCAyMjcsIDM3LCAyMTksIDI0NSwgMywgCi0gICAgMTAxLCAyMTEsIDc3LCAyMjcsIDM3LCAyNSwgMywgMjM2LCAxMDYsIDI0NCwgMTQ0LCAyMjcsIDM3LCAyMTksIDI0NSwgMywgCi0gICAgMjM2LCAxMDYsIDI0NCwgMTQ0LCAyMjcsIDM3LCAyNSwgMywgNTIsIDIxOSwgMjAzLCAyMjcsIDM3LCAyNSwgMywgMjA2LCAKLSAgICAyNDYsIDIyNywgMzcsIDI1LCAzLCA1MiwgMjA2LCAyNDYsIDUsIDIwNiwgNTEsIDMsIDIwNiwgMjQ2LCAyMjcsIDM3LCAyMTksIAotICAgIDI0NSwgMywgNTIsIDIxOSwgMjAzLCAyMjcsIDM3LCAyMTksIDI0NSwgMywgNTIsIDIwNiwgMjQ2LCAyMDIsIDE2MCwgMjIxLCAKLSAgICAxNjQsIDI0MywgOTQsIDI1MCwgMTg0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNiwgMTc5LCAyNTAsIDE4NCwgMjQxLCAzNSwgCi0gICAgMiwgMywgNzAsIDU2LCAyMzUsIDE1NCwgMywgNzAsIDU1LCAyMDgsIDcwLCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDMsIDUyLCAKLSAgICA4MCwgOTUsIDIwOCwgNzAsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMywgMjA4LCA3MCwgODAsIDk1LCAyMDgsIDIyOCwgMjE5LCAKLSAgICAyNTUsIDMsIDcwLCA1NSwgMjA4LCAyMjgsIDIxOSwgMjU1LCAzLCAyMTUsIDI0NSwgMjQzLCA4MywgMjEyLCAxMjksIDIyNCwgCi0gICAgMTAzLCAyMTIsIDEyOCwgMjQ1LCAyMTAsIDMsIDcwLCA1NSwgMjQxLCAzNSwgMywgMjUwLCA1OSwgMjUxLCA3LCAxNTYsIAotICAgIDIwOCwgMTczLCAzLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjUwLCAxNTEsIDE1NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDEsIAotICAgIDM1LCAyLCA4NywgOTEsIDU0LCA5MSwgMiwgODcsIDI0MSwgMzUsIDU0LCAyNDEsIDM1LCAyLCA4NywgMjA4LCAyMjgsIDIxOSwgCi0gICAgMjU0LCA1MiwgMjQ1LCAyNDMsIDI0MSwgMzYsIDEyMCwgMjQ1LCAyMDMsIDI0MSwgMzUsIDIxMiwgMTQzLCAxMjYsIDI0NSwgCi0gICAgMjAzLCAyNDEsIDM1LCAyMTIsIDE0MywgMjQxLCAzNSwgMiwgMywgMTIwLCAxODcsIDg3LCAyNSwgMTIwLCAxODcsIDU2LCAKLSAgICAyNDEsIDMwLCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMjI3LCAxNzksIDMsIDI0NiwgNjIsIDIzMSwgNiwgMjM3LCAyNDcsIDMsIAotICAgIDI0NiwgNjIsIDIzMSwgNiwgMjI3LCAxNzksIDMsIDIxNywgNDcsIDEzMSwgNTUsIDIzNywgMjQ3LCAzLCAyMTcsIDQ3LCAKLSAgICAxMzEsIDU1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMTM1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgCi0gICAgNTksIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAyMzEsIDYsIAotICAgIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDIzMSwgNiwgMjI3LCAxNzksIDIxOSwgCi0gICAgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAKLSAgICAyMDgsIDE3MywgMywgNzAsIDU1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAKLSAgICA4NywgMjE2LCAxNiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgODcsIDIyNywgCi0gICAgMjIyLCAyMjcsIDE3OSwgMjE5LCAyNDUsIDI1MCwgMTUyLCAyMzcsIDI0NywgMjE5LCAyNDUsIDI1MCwgMTUyLCAyMjcsIAotICAgIDE3OSwgMjUsIDIxMiwgMTE4LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyNSwgMjEyLCAxMTgsIDIyMSwgMTY2LCAKLSAgICAxNTYsIDEzNSwgMjI3LCAxNzksIDI1LCAyMjEsIDE2NiwgMjUwLCAxNTIsIDIzNywgMjQ3LCAyNSwgMjIxLCAxNjYsIDI1MCwgCi0gICAgMTUyLCAyMjcsIDE3OSwgODcsIDI0MiwgNzYsIDE1NiwgODcsIDIzNywgMjQ2LCAyMzcsIDI0NywgODcsIDI0MiwgNzYsIAotICAgIDE1NiwgODcsIDIyNywgMTc4LCAyMjcsIDE3OSwgODcsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjQxLCAzNiwgMjM3LCAyNDcsIAotICAgIDg3LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDI0MSwgMzYsIDIyNywgMTc5LCA4NywgMjEyLCAxMjksIDg3LCAyMzcsIDI0NiwgCi0gICAgMjM3LCAyNDcsIDg3LCAyMTIsIDEyOSwgODcsIDIyNywgMTc4LCAyMjcsIDE3OSwgODcsIDIzNywgMjQ3LCA4NywgMjQyLCAKLSAgICA3NiwgMjQxLCAzNiwgMjM3LCAyNDcsIDg3LCAyMjcsIDE3OSwgODcsIDI0MiwgNzYsIDI0MSwgMzYsIDIyNywgMTc5LCA4NywgCi0gICAgMjEyLCA1OSwgMTU2LCA4NywgMjM3LCAyNDcsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMzcsIDI0NywgODcsIDIxMiwgNTksIAotICAgIDE1NiwgODcsIDIyNywgMTc5LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAKLSAgICAyNDUsIDIyNywgMTc4LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDIxMiwgNTksIDE1NiwgCi0gICAgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OSwgMywgNzAsIDIzMSwgNiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAKLSAgICAyNDUsIDIzNywgMjQ3LCAzLCA3MCwgMjMxLCA2LCAyNDIsIDc2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzgsIAotICAgIDI0MiwgNzYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMjQyLCA3NiwgMjEyLCA1OSwgMTU2LCAyMDgsIAotICAgIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAyNDIsIDc2LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAKLSAgICAyNDYsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjI3LCAxNzgsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjM3LCAyNDYsIDIxMiwgCi0gICAgMTI5LCA4NywgMjI3LCAxNzksIDg3LCAyNDEsIDM1LCA1NCwgMjEyLCAxMjksIDg3LCAyMzcsIDI0NywgODcsIDI0MSwgMzUsIAotICAgIDU0LCA1MiwgMjIyLCAyMjEsIDIyNywgMTc4LCA1MiwgMjIyLCAyMjEsIDIzNywgMjQ2LCA1MiwgMjIyLCAyMjEsIDIyNywgCi0gICAgMTc5LCAzLCAyMDYsIDI0NiwgMjM3LCAyNDcsIDIxOSwgMjAwLCAyMjcsIDE3OCwgMjM3LCAyNDcsIDI0OCwgMTEwLCAyMjcsIAotICAgIDE3OCwgMjI3LCAxNzksIDI0NiwgMTYsIDI0NywgMTM3LCAyNDUsIDg3LCAyMzcsIDI0NywgMjQ2LCAxNiwgMjQ3LCAxMzcsIAotICAgIDI0NSwgODcsIDIyNywgMTc5LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4OCwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIzNywgCi0gICAgMjQ3LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4OCwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIxMiwgMzUsIDIwOSwgOTcsIAotICAgIDIyOCwgNiwgMjA5LCA5NywgMjEyLCAzNSwgMjA5LCA5OCwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjgsIDYsIDIwOSwgOTgsIAotICAgIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQxLCAzNSwgMiwgMywgMjQ3LCAxNzAsIDU1LCAyMTcsIDI1MCwgODcsIDIxMiwgMTE4LCAKLSAgICAyNDEsIDM1LCA1NCwgMjEwLCAyMzcsIDg3LCAyMTIsIDExOCwgMjQxLCAzNSwgNTQsIDIxNywgMjUwLCA4NywgMjEyLCAxMTgsIAotICAgIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAyMzcsIDg3LCAyMTIsIDExOCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTcsIDI1MCwgCi0gICAgODcsIDI0MSwgMzUsIDU0LCAyMTAsIDIzNywgODcsIDI0MSwgMzUsIDU0LCAyMTcsIDI1MCwgODcsIDIyMSwgMTY2LCAxNTYsIAotICAgIDEzNSwgMjEwLCAyMzcsIDg3LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxNywgMjUwLCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgCi0gICAgMjEwLCAyMzcsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCAyMTcsIDI1MCwgODcsIDIyMSwgMTY2LCAyNTEsIDcsIDE1NiwgMTM1LCAKLSAgICAyMTAsIDIzNywgODcsIDIyMSwgMTY2LCAyNTEsIDcsIDE1NiwgMTM1LCA1MiwgMjE3LCAyNDksIDUyLCAyMTAsIDIzNiwgCi0gICAgMjEwLCAyNDUsIDMsIDI0MywgODUsIDIxMCwgMTk4LCAzLCAyNDMsIDg1LCAyMTAsIDI0NSwgMywgOTEsIDIsIDU2LCAyMTAsIAotICAgIDE5OCwgMywgOTEsIDIsIDU2LCAyMTAsIDI0NSwgMywgMjIzLCAyMjQsIDIsIDU2LCAyMTAsIDE5OCwgMywgMjIzLCAyMjQsIAotICAgIDIsIDU2LCAyMTAsIDI0NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIxMCwgMTk4LCA3NiwgCi0gICAgMjE5LCAyNDUsIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjEwLCAyNDUsIDc2LCA4NywgMjQxLCAzNSwgNTQsIDIxMCwgCi0gICAgMTk4LCA3NiwgODcsIDI0MSwgMzUsIDU0LCAyMTAsIDI0NSwgNzYsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxMCwgMTk4LCAKLSAgICA3NiwgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgMjEwLCAyNDUsIDc2LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjEwLCAxOTgsIAotICAgIDc2LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDc2LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTAsIDE5OCwgCi0gICAgNzYsIDg3LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDUxLCA0OSwgMTcxLCA5OCwgMjE5LCAyNTQsIDUxLCA1MCwgMTcxLCA5OCwgCi0gICAgMjE5LCAyNTQsIDI0NiwgMTYsIDIxMCwgMjQ0LCAyNDYsIDE2LCAyMTAsIDE5NywgMjQ2LCAxNiwgMjEwLCAyNDUsIDIxOSwgCi0gICAgMjQ1LCAxNTYsIDEzNSwgMjQ2LCAxNiwgMjEwLCAxOTgsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDg3LCAyMTAsIAotICAgIDE5NywgMjEwLCAxOTgsIDg3LCAyMTAsIDI0NCwgMjEwLCAyNDUsIDg3LCAyMTAsIDI0NCwgMjEwLCAxOTgsIDg3LCAyMTAsIAotICAgIDE5NywgMjEwLCAxOTgsIDI0OCwgMTEwLCAyMTAsIDI0NCwgMjEwLCAxOTgsIDI0OCwgMTEwLCAyNSwgMjMwLCA5OCwgMjQ3LCAKLSAgICAxMzcsIDI0NCwgMTQ1LCAzLCAyMTAsIDI0NCwgMjQxLCAxMTUsIDc2LCAyMjAsIDEsIDI0MiwgNjgsIDIxOCwgMTA0LCAzLCAKLSAgICAyMDksIDE3NywgMjA4LCAxNDQsIDIwOCwgMTAyLCAyMzAsIDI0NCwgMjM5LCAxNjAsIDIyMSwgMTgxLCAyMTIsIDIyOCwgNDksIAotICAgIDIxMCwgMywgMjEyLCAyMjgsIDEyMSwgMjEwLCAzLCAyMTIsIDIyOCwgMTEyLCAyMTAsIDMsIDIxOCwgMjM0LCAzLCAxOTQsIAotICAgIDgwLCAyNDgsIDIzMSwgMjA4LCA3MCwgNTAsIDIwNywgMTczLCA1MiwgODAsIDI0OCwgMjMxLCA0OSwgMjA3LCAxNzMsIDgwLCAKLSAgICAyNDgsIDIzMSwgNTIsIDQ5LCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDQ5LCAyMDcsIDE3MywgMTYzLCAyNDQsIAotICAgIDE0NSwgMjM5LCAxMjAsIDQ5LCAyMjQsIDI0NSwgNzYsIDUyLCAyMDYsIDM4LCAyMTIsIDIyOCwgMTIxLCAyMTAsIDQsIDMsIAotICAgIDIxOSwgMjAzLCAyMTIsIDIyOCwgMTEyLCAyMTAsIDQsIDMsIDIwNiwgMjQ2LCAyMTIsIDIyOCwgMTEyLCAyMTAsIDQsIDg3LCAKLSAgICAyMTIsIDIyOCwgMTIxLCAyMTAsIDMsIDUyLCAxMjEsIDIxMCwgMywgNTIsIDExMiwgMjEwLCAzLCA1MiwgMjExLCAzMiwgCi0gICAgMjIxLCAxNjYsIDU0LCAyMTYsIDczLCA1MiwgMjExLCAzMiwgMjIxLCAxNjYsIDU0LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAotICAgIDI0MywgMTQ0LCAzLCAyMTYsIDczLCAyMjIsIDIzMywgMjEyLCA1NywgODAsIDIyNywgMTE1LCAzLCAyNDYsIDYyLCA1NSwgCi0gICAgODAsIDIyNywgMTE1LCAzLCAyNDYsIDYyLCA1NiwgMTIxLCAyMTAsIDQsIDMsIDI0NiwgNjIsIDU2LCAyMTksIDgyLCAzLCAKLSAgICAyMzYsIDEwNiwgOTUsIDIxOSwgODIsIDMsIDIwOCwgMjI4LCAyMTksIDI1NCwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAyNDgsIAotICAgIDY3LCAyMTYsIDExNywgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgOTUsIDIwOCwgNzAsIDI0NSwgMjQzLCAKLSAgICAyMTksIDI1NCwgMjA4LCA3MCwgMjIyLCAyMjEsIDIyNywgMTc4LCAyMDgsIDcwLCAyMjIsIDIyMSwgMjM3LCAyNDYsIDI0MiwgCi0gICAgNzYsIDIxMiwgNTksIDIyNywgMTc5LCAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MiwgNzYsIDIxMiwgNTksIDIzNywgMjQ3LCAKLSAgICAyMTksIDI0NSwgMTU2LCAxMzUsIDIwOCwgNzAsIDIxMiwgMSwgMjQ4LCA2NywgMjE2LCAxMTcsIDIyOCwgOCwgMjA4LCA3MCwgCi0gICAgODAsIDI0OCwgMjMxLCAyMTksIDI1NCwgNTIsIDIxMiwgMSwgMjE5LCAyNTQsIDYxLCA4MCwgMTQyLCAyMjMsIDE2MiwgNjEsIAotICAgIDgwLCAxNDIsIDE1MywgMjQxLCAxNzYsIDYxLCA0NywgMTUzLCAyMDQsIDQ2LCA2MSwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNjEsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNjEsIDQ3LCA0OSwgNTAsIDYxLCA0NywgOTYsIDYyLCA0NywgMTc3LCA2MiwgCi0gICAgNDcsIDE4MywgNjIsIDQ3LCAxNTMsIDI0MSwgMTc2LCA2MiwgNDcsIDE1MywgMjA0LCA0NiwgNjIsIDQ3LCAyMTEsIDIzOCwgCi0gICAgMjQxLCAxNzYsIDYyLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDYyLCA0NywgNDksIDUwLCA2MiwgNDcsIDExMiwgMTIxLCAKLSAgICA2MiwgNDcsIDg2LCA1MywgMywgMjA4LCAyMTEsIDI0MiwgNjgsIDg2LCA1MywgMywgMjA4LCAyMTEsIDIwNiwgMjEyLCA5NiwgCi0gICAgNTMsIDMsIDIwOCwgMjExLCAyNDIsIDY4LCA5NiwgNTMsIDMsIDIwOCwgMjExLCAyMDYsIDIxMiwgNTEsIDMsIDIwOCwgMTQ1LCAKLSAgICAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyNDcsIDI0OCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjA2LCAyMjEsIDUwLCAyNDMsIAotICAgIDIyOCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjI2LCAyNTEsIDQ5LCAyNDMsIDIyOCwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgCi0gICAgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCAyMDgsIAotICAgIDE0NSwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgMjQ3LCAyNDgsIDE2MiwgMjQ4LCA0MywgMjQyLCA4MywgMjExLCAKLSAgICAxNzcsIDYyLCAyMjgsIDgsIDIxMSwgMTc3LCA2MSwgMjI4LCA4LCAyMTEsIDE3NywgNjIsIDIwNSwgMjQyLCA1LCAyMTEsIAotICAgIDE3NywgNjEsIDIwNSwgMjQyLCA1LCAyMTEsIDE3NywgNjIsIDIxOCwgMjU1LCA2MSwgMjE4LCAyNTUsIDYxLCAyMzcsIDE3LCAKLSAgICA2MiwgMjM3LCAxNywgMjM2LCAxMDYsIDYyLCAyMzcsIDE3LCA2MiwgMjI4LCA4LCAyNDYsIDYxLCA2MiwgMjI1LCAxMCwgCi0gICAgMjQzLCAyMjEsIDYxLCAyMjUsIDEwLCAyNDMsIDIyMSwgNjIsIDIyNSwgMTAsIDIyNiwgMjQ2LCA2MSwgMjI1LCAxMCwgMjI2LCAKLSAgICAyNDYsIDYyLCA1LCAyNDMsIDIyMSwgNjIsIDUsIDIyNiwgMjQ2LCA2MSwgNSwgMjI2LCAyNDYsIDYyLCAyMzYsIDEwNiwgCi0gICAgMjQxLCAxMDksIDYxLCAyMzYsIDEwNiwgMjQxLCAxMDksIDYyLCA4MCwgMjQxLCAxMDksIDYxLCA4MCwgMjQxLCAxMDksIDQ5LCAKLSAgICA1MywgMywgNSwgMjQ2LCA2MSwgMTI2LCA5NiwgMjUwLCA5MSwgNDksIDUzLCAzLCA0MywgMjE4LCA3NiwgMTYzLCA5NiwgCi0gICAgMjExLCAxNzEsIDQ3LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDUyLCA4MCwgCi0gICAgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAxNDIsIDk2LCAyMDcsIDEzNCwgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCAKLSAgICA5NiwgNTMsIDMsIDI0MiwgODMsIDIxMSwgNzcsIDk2LCA1MywgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgOTYsIDUzLCAzLCAKLSAgICAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDgsIDk2LCAyMDcsIDEzNCwgNTMsIAotICAgIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgCi0gICAgNTMsIDIwOSwgMjUsIDIwMywgMTk2LCAyMDQsIDc2LCA1MywgMjE4LCA1OSwgMjQzLCAxNjQsIDIyNywgMjIyLCAyNDEsIDM1LCAKLSAgICAyLCA4NywgOTYsIDQ3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCA5NiwgNDcsIDk2LCA1MywgODcsIDIxNiwgCi0gICAgNzQsIDI1MSwgNywgMTU2LCAxMzUsIDg2LCA1MywgMjA5LCAyNSwgMjM3LCAyNDYsIDg2LCA1MywgMjA5LCAyNSwgMjEwLCAKLSAgICAxOTcsIDk2LCAyMTcsIDU4LCA0NywgODYsIDIxNywgNTgsIDQ3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCAKLSAgICA4NiwgNDcsIDg2LCA1MywgODcsIDIxNiwgNzQsIDI1MSwgNywgMTU2LCAxMzUsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIAotICAgIDk2LCA0NywgOTYsIDUzLCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgOTYsIDUzLCA4NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgCi0gICAgMjU0LCA4NiwgNTMsIDg3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDE4MywgMjA4LCA4NCwgMjAyLCAzMCwgNDcsIAotICAgIDIxMiwgMjI4LCAyMTIsIDU5LCAxNTMsIDQ3LCAyMTIsIDIyOCwgMjQ5LCAyMiwgMjExLCAyMzgsIDQ3LCA2MSwgMjI1LCAxMCwgCi0gICAgMjExLCA5NCwgNjIsIDUsIDIxMSwgOTQsIDYxLCA1LCAyMTEsIDk0LCA2MiwgMjE2LCAxMSwgMjE4LCAyNTUsIDYxLCAyMTYsIAotICAgIDExLCAyMTgsIDI1NSwgNzksIDIyOCwgOCwgMjQ2LCA2MSwgNzksIDIxOSwgMjA1LCAzLCAyMTksIDIwNSwgMjMxLCA2LCA3OSwgCi0gICAgMjQ2LCA2MiwgMywgMjQ2LCA2MiwgMjMxLCA2LCA3OSwgMjQ2LCA2MSwgNzksIDQzLCAyMTQsIDI1NCwgMjEyLCA1OSwgMTUzLCAKLSAgICA1MywgMywgMjM2LCAxMTUsIDIzNywgNjQsIDI0OSwgMjIsIDIxMSwgMjM4LCA1MywgMywgMjM2LCAxMTUsIDIwOSwgMjQ4LCAKLSAgICAyMTIsIDU5LCAxNTMsIDUzLCAzLCAyMzYsIDEwNiwgMjA5LCAyNDgsIDI0OSwgMjIsIDIxMSwgMjM4LCA1MywgMywgMjM2LCAKLSAgICAxMDYsIDIwOSwgMjQ4LCAyNDgsIDExOCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMTUzLCAyNDEsIDE3NSwgMjEyLCAKLSAgICAyMjgsIDI0OCwgMTE4LCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAxNTMsIDI0MSwgMTc1LCA5NiwgMjA4LCA4NCwgNDcsIAotICAgIDE3NywgMjA4LCA4NCwgNDcsIDg2LCAyMDgsIDg0LCA0NywgMTgzLCAyMDgsIDg0LCA0NywgNDksIDUwLCAyMDgsIDg0LCA0NywgCi0gICAgMTEyLCAxMjEsIDIwOCwgODQsIDQ3LCAxNTMsIDIwNCwgNDYsIDIwOCwgODQsIDQ3LCAxNTMsIDI0MSwgMTc2LCAyMDgsIDg0LCAKLSAgICA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCAyMDgsIDg0LCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDIwOCwgODQsIDQ3LCA5NiwgCi0gICAgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCAxNzcsIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgODYsIDIwOCwgODQsIDI0NCwgMTQzLCAKLSAgICA0NywgMTgzLCAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDI0NiwgMTgsIDIwOCwgODQsIDE3MSwgMjQ2LCA2MiwgNDcsIDI1MCwgCi0gICAgMTk0LCAyMDgsIDg0LCAxNzEsIDI0NiwgNjIsIDQ3LCA5NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE3NywgMjA4LCAKLSAgICA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMTgzLCAyMDgsIDg0LCA1MywgCi0gICAgMjA4LCAxNzMsIDE0MiwgMTUzLCAyMDQsIDQ2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMTUzLCAyNDEsIDE3NiwgCi0gICAgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAKLSAgICAxNDIsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgOTYsIDIwOCwgODQsIDUzLCAzLCAKLSAgICA1MiwgMjM2LCAxMDYsIDk1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCA1MiwgMjM2LCAxMDYsIDk1LCA4NiwgMjA4LCA4NCwgNTMsIAotICAgIDMsIDUyLCAyMzYsIDEwNiwgOTUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDUyLCAyMzYsIDEwNiwgOTUsIDIzNiwgMTA2LCAKLSAgICAyMTAsIDExLCAyMjksIDE1MSwgODAsIDIxMCwgMTEsIDIyOSwgMTUxLCA5NiwgMjA4LCA4NCwgNTMsIDExNSwgODYsIDIwOCwgCi0gICAgODQsIDQ3LCAxNzcsIDIwOCwgODQsIDUzLCA5NiwgNzYsIDE4MywgMjA4LCA4NCwgNDcsIDg2LCAyMDgsIDg0LCA1MywgMTE1LCAKLSAgICA5NiwgMjA4LCA4NCwgNDcsIDE4MywgMjA4LCA4NCwgNTMsIDk2LCA3NiwgMTc3LCAyMDgsIDg0LCA0NywgOTYsIDIwOCwgODQsIAotICAgIDIxOSwgMTQ2LCAyNTAsIDkxLCAxNzcsIDIwOCwgODQsIDIxOSwgMTQ2LCAyNTAsIDkxLCA4NiwgMjA4LCA4NCwgMjE5LCAKLSAgICAxNDYsIDI1MCwgOTEsIDE4MywgMjA4LCA4NCwgMjE5LCAxNDYsIDI1MCwgOTEsIDk2LCA2MiwgNDMsIDYxLCA0NywgMTc3LCAKLSAgICA2MiwgNDMsIDYxLCA0NywgODYsIDYyLCA0MywgNjEsIDQ3LCAxODMsIDYyLCA0MywgNjEsIDQ3LCAyNTAsIDE5NCwgMjA4LCAKLSAgICA4NCwgNTAsIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgMjA4LCA4NCwgMjQ3LCAyNDgsIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgCi0gICAgMjA4LCA4NCwgNDksIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgMjA4LCA4NCwgMjA4LCAxNDUsIDIwNywgOTIsIDQ3LCAyMTYsIAotICAgIDc4LCAyMjcsIDIyMiwgMjE2LCA3OCwgMjE2LCAxNiwgMjIyLCAyMTIsIDIyNywgMjIyLCAyMjIsIDIxMiwgMjE2LCAxNiwgCi0gICAgMjM5LCAxNDcsIDI0NSwgMTY2LCAyNTAsIDkyLCAyNDYsIDU3LCAyNTAsIDE5MywgODYsIDYyLCA0NywgMjA5LCAzMSwgMjA4LCAKLSAgICAxNDMsIDk2LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIDMxLCAyMTYsIDEyLCAxNzcsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgCi0gICAgMzEsIDIwOCwgMTQzLCA4NiwgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAzMSwgMjI3LCAyMTgsIDE4MywgMjQxLCAzMSwgMjUwLCAKLSAgICA5NCwgNjIsIDk2LCAyNDEsIDMxLCAyNTAsIDk0LCA2MiwgMTc3LCAyNDEsIDMxLCAyNTAsIDk0LCA2MiwgODYsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDYyLCAxODMsIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIAotICAgIDIyNywgMjEyLCAxODMsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyMTYsIDUsIDE3NywgMjA4LCA4NCwgNTMsIAotICAgIDMsIDE2MywgMjA4LCAyMTEsIDIyNywgMjEyLCAxNzcsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyMTYsIDUsIAotICAgIDk2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDg2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAKLSAgICAyMDgsIDIxMSwgMjA2LCAyMTIsIDk2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjQyLCA2OCwgODYsIDIwOCwgCi0gICAgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyNDIsIDY4LCA2MiwgMjQ1LCA4NiwgMTgzLCAyNSwgOTYsIDQ3LCA2MiwgMjQ1LCAKLSAgICA4NiwgMTgzLCAyNSwgODYsIDQ3LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgOTYsIDQ3LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgCi0gICAgODYsIDQ3LCA2MiwgMjQ1LCA4NiwgOTYsIDI1LCAxNzcsIDQ3LCA2MiwgMjQ1LCA4NiwgODYsIDI1LCAxNzcsIDQ3LCA2MiwgCi0gICAgMjQ1LCA4NiwgOTYsIDI1LCAxODMsIDQ3LCA2MiwgMjQ1LCA4NiwgODYsIDI1LCAxODMsIDQ3LCAyMTYsIDU1LCA1MywgMTIxLCAKLSAgICAyMjcsIDIyMiwgMjE2LCA1NSwgNTMsIDEyMSwgMjE2LCAxNiwgMjE2LCA1NSwgNTMsIDExMiwgMjI3LCAyMjIsIDIxNiwgNTUsIAotICAgIDUzLCAxMTIsIDIxNiwgMTYsIDIxNiwgNTUsIDUzLCA0OSwgMjA2LCAyMjQsIDIxNiwgNTUsIDUzLCA1MCwgMjA2LCAyMjQsIAotICAgIDIxNiwgNTUsIDUzLCA0OSwgMjQyLCA3MCwgMjE2LCA1NSwgNTMsIDUwLCAyNDIsIDcwLCAxNzcsIDYxLCA1MywgMjM5LCAKLSAgICAxMjAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgMTQyLCAxMTIsIDI1MCwgOTUsIDIzMSwgNTAsIDM0LCAyMTYsIDE0NCwgCi0gICAgMjQ3LCAyMzMsIDI0OCwgMjQ4LCA5OCwgMywgMTU3LCAyMDMsIDE5NiwgNDMsIDIwMywgMTk2LCA0MywgMjYsIDIwMywgMTk2LCAKLSAgICA2MiwgNTEsIDI0NiwgMjE1LCA2MiwgMjQzLCAyMjIsIDI0NiwgMjE1LCAyMDcsIDE3NCwgNjIsIDIxOCwgMjU1LCAyMzYsIAotICAgIDEwNiwgNjIsIDIyMCwgODEsIDYyLCAyMjAsIDgxLCA2MiwgMjI1LCAxMCwgMjA2LCAyMjMsIDIwOCwgODYsIDI0NiwgMjE1LCAKLSAgICA2MiwgMjI1LCAxMCwgMjQyLCA2OSwgMjA4LCA4NiwgMjQ2LCAyMTUsIDYyLCAyMjUsIDEwLCAyMjcsIDIxNywgMjA4LCA4NiwgCi0gICAgMjQ2LCAyMTUsIDYyLCAyMjUsIDEwLCAyMTYsIDExLCAyMDgsIDg2LCAyNDYsIDIxNSwgMjA4LCAxNDUsIDE2MiwgNjIsIAotICAgIDI0NiwgNjEsIDI0NywgMjQ4LCAxNjIsIDYyLCAyNDYsIDYxLCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjQ1LCA4MiwgCi0gICAgMjE1LCAxOTgsIDE1NywgMjM5LCAxNDcsIDIxOCwgNjEsIDYyLCAyNDUsIDgyLCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIAotICAgIDI0NSwgODIsIDIxNSwgMTk4LCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIDI0NSwgODIsIDUxLCAyMTgsIDM0LCAyMzEsIDMxLCAKLSAgICAyMDYsIDI1MCwgNTQsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE3NywgMjA3LCAxMzQsIDUzLCAKLSAgICAzLCAyMDgsIDg2LCAyNTAsIDkzLCA4NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxODMsIDIwNywgCi0gICAgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTgwLCA2LCAxLCAyNTAsIDAsIDE4MCwgNiwgMSwgMjQ3LCAxODEsIAotICAgIDE4MCwgNiwgMSwgMjA2LCA1MywgMTgwLCA2LCAxLCAyMzgsIDUwLCAxODAsIDYsIDEsIDI0MywgMTA4LCAxODAsIDYsIDEsIAotICAgIDIwMywgMjQsIDE4MCwgNiwgMSwgMjAyLCA2NCwgMTgwLCA2LCAxLCAyNDEsIDI1MCwgMTgwLCA2LCAxLCAyMDIsIDg5LCAKLSAgICAxODAsIDYsIDEsIDIzMCwgMTg4LCAxODAsIDYsIDEsIDgxLCAyMzAsIDE4OCwgMTgwLCA2LCAxLCA3NSwgMTgwLCA2LCAxLCAKLSAgICAyNDMsIDEyOCwgMTgwLCA2LCAxLCAyMzAsIDEwLCAxODAsIDYsIDEsIDIyNywgNzksIDE4MCwgNiwgMSwgMjIzLCAxNjcsIAotICAgIDE4MCwgNiwgMSwgMjIzLCA2OSwgMTgwLCA2LCAxLCAyMjAsIDIwLCAxODAsIDYsIDEsIDIxOCwgNTYsIDE4MCwgNiwgMSwgCi0gICAgMjE1LCAyNDQsIDE4MCwgNiwgMSwgMjEyLCA0MSwgMTgwLCA2LCAxLCAyMDcsIDE2MSwgMTgwLCA2LCAxLCAyMDcsIDEwLCAKLSAgICAxODAsIDYsIDEsIDIzOSwgMTIzLCAxODAsIDYsIDEsIDIzNywgMjMsIDE4MCwgNiwgMSwgMjE5LCAyMTcsIDE4MCwgNiwgMSwgCi0gICAgMjE5LCAzNCwgMTgwLCA2LCAxLCAyMTIsIDIwMiwgMTgwLCA2LCAxLCAyMDcsIDI1NSwgMTgwLCA2LCAxLCAyNDYsIDEwNCwgCi0gICAgMTgwLCA2LCAxLCAyMTMsIDkwLCAxODAsIDYsIDEsIDIwMywgMzAsIDE4MCwgNiwgMSwgMjAzLCAzMiwgMTgwLCA2LCAxLCAKLSAgICAyMDMsIDY0LCAxODAsIDYsIDEsIDIxMSwgMjA0LCAxNTIsIDE4MCwgNiwgMSwgMjAyLCAyMTMsIDE4MCwgNiwgMSwgNSwgCi0gICAgMjAyLCAxODMsIDE4MCwgNiwgMSwgNSwgMjAyLCAxODQsIDMsIDIwOSwgMjQ4LCAxODAsIDYsIDEsIDIwMiwgMjQ3LCAxODAsIAotICAgIDYsIDEsIDIzMCwgMjI5LCA1LCAyMDIsIDE4MywgMTgwLCA2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA2LCAxLCAKLSAgICAyMzAsIDIyOSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNiwgMSwgMjM5LCAyMzUsIDE4MCwgNiwgMSwgMjMwLCAxODYsIAotICAgIDE4MCwgNiwgMSwgMjEyLCAyMDEsIDE4MCwgNiwgMSwgMjA4LCA2MCwgNjMsIDE4MCwgNiwgMSwgMjI3LCAyNTIsIDIyMywgCi0gICAgMTY3LCAxODAsIDUsIDEsIDI1MCwgMCwgMTgwLCA1LCAxLCAyNDcsIDE4MSwgMTgwLCA1LCAxLCAyMDYsIDUzLCAxODAsIDUsIAotICAgIDEsIDIzOCwgNTAsIDE4MCwgNSwgMSwgMjQzLCAxMDgsIDE4MCwgNSwgMSwgMjAzLCAyNCwgMTgwLCA1LCAxLCAyMDIsIDY0LCAKLSAgICAxODAsIDUsIDEsIDI0MSwgMjUwLCAxODAsIDUsIDEsIDIwMiwgODksIDE4MCwgNSwgMSwgMjMwLCAxODgsIDE4MCwgNSwgMSwgCi0gICAgODEsIDIzMCwgMTg4LCAxODAsIDUsIDEsIDc1LCAxODAsIDUsIDEsIDI0MywgMTI4LCAxODAsIDUsIDEsIDIzMCwgMTAsIAotICAgIDE4MCwgNSwgMSwgMjI3LCA3OSwgMTgwLCA1LCAxLCAyMjMsIDE2NywgMTgwLCA1LCAxLCAyMjMsIDY5LCAxODAsIDUsIDEsIAotICAgIDIyMCwgMjAsIDE4MCwgNSwgMSwgMjE4LCA1NiwgMTgwLCA1LCAxLCAyMTUsIDI0NCwgMTgwLCA1LCAxLCAyMTIsIDQxLCAKLSAgICAxODAsIDUsIDEsIDIwNywgMTYxLCAxODAsIDUsIDEsIDIwNywgMTAsIDE4MCwgNSwgMSwgMjM5LCAxMjMsIDE4MCwgNSwgMSwgCi0gICAgMjM3LCAyMywgMTgwLCA1LCAxLCAyMTksIDIxNywgMTgwLCA1LCAxLCAyMTksIDM0LCAxODAsIDUsIDEsIDIxMiwgMjAyLCAKLSAgICAxODAsIDUsIDEsIDIwNywgMjU1LCAxODAsIDUsIDEsIDI0NiwgMTA0LCAxODAsIDUsIDEsIDIxMywgOTAsIDE4MCwgNSwgMSwgCi0gICAgMjAzLCAzMCwgMTgwLCA1LCAxLCAyMDMsIDMyLCAxODAsIDUsIDEsIDIwMywgNjQsIDE4MCwgNSwgMSwgMjExLCAyMDQsIAotICAgIDE1MiwgMTgwLCA1LCAxLCAyMDIsIDIxMywgMTgwLCA1LCAxLCA1LCAyMDIsIDE4MywgMTgwLCA1LCAxLCA1LCAyMDIsIDE4NCwgCi0gICAgMywgMjA5LCAyNDgsIDE4MCwgNSwgMSwgMjAyLCAyNDcsIDE4MCwgNSwgMSwgMjMwLCAyMjksIDUsIDIwMiwgMTgzLCAxODAsIAotICAgIDUsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDUsIDEsIDIzMCwgMjI5LCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA1LCAKLSAgICAxLCAyMzksIDIzNSwgMTgwLCA1LCAxLCAyMzAsIDE4NiwgMTgwLCA1LCAxLCAyMTIsIDIwMSwgMTgwLCA1LCAxLCAyMDgsIAotICAgIDYwLCA2MywgMTgwLCA1LCAxLCAyMjcsIDI1MiwgMjIzLCAxNjcsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA1MiwgMTQyLCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgNTIsIDE0MiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg1LCAzLCA5NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgMzQsIDMsIDk1LCA4LCA1LCAKLSAgICAxLCAyMTAsIDcwLCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMzcsIAotICAgIDE3MiwgMywgMjQ0LCAyMCwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ0LCAKLSAgICAyMCwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDQsIDIwLCA4LCA2LCAKLSAgICAxLCAyNTEsIDIsIDgsIDYsIDEsIDIyNiwgMTg2LCAzLCAxMTMsIDgsIDYsIDEsIDIwNywgMTc0LCA2MywgOCwgNiwgMSwgCi0gICAgMjA3LCAxNzQsIDI1MSwgMiwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDUwLCAxMTMsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAKLSAgICAxMTMsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAxMTMsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyNDUsIDk1LCA4LCA2LCAxLCAKLSAgICAxNjIsIDIzNywgMTcxLCA4LCA1LCAxLCAxNjIsIDIzNywgMTcxLCA4LCA1LCAxLCAyMDksIDI0NiwgMjE4LCAxOTIsIDgsIDUsIAotICAgIDEsIDE4OCwgMywgMjIxLCAxNjMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAKLSAgICAxNTgsIDMsIDEyNCwgMjE1LCAyNTMsIDIzMSwgNiwgOCwgMSwgNSwgNiwgMjA3LCAxNzQsIDc0LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjMwLCAxODQsIDY1LCAxLCA2LCAyMDYsIDE2NCwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCAKLSAgICA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCA4NCwgNiwgMSwgMjUxLCAyNCwgODQsIDUsIDEsIAotICAgIDI1MSwgMjQsIDg0LCA2LCAxLCAyMDUsIDIyNywgODQsIDUsIDEsIDIwNSwgMjI3LCA4NCwgNiwgMSwgMjM4LCAyMzUsIDg0LCAKLSAgICA1LCAxLCAyMzgsIDIzNSwgODQsIDYsIDEsIDI0NCwgMTgwLCA4NCwgNSwgMSwgMjQ0LCAxODAsIDg0LCA2LCAxLCAyNDEsIAotICAgIDE0NCwgODQsIDUsIDEsIDI0MSwgMTQ0LCA4NCwgNiwgMSwgMjExLCAyNDMsIDg0LCA1LCAxLCAyMTEsIDI0MywgODQsIDYsIAotICAgIDEsIDIwMiwgOTksIDg0LCA1LCAxLCAyMDIsIDk5LCA4NCwgNiwgMSwgMjM3LCA4MCwgODQsIDUsIDEsIDIzNywgODAsIDg0LCAKLSAgICA2LCAxLCAyMDksIDcyLCA4NCwgNSwgMSwgMjA5LCA3MiwgODQsIDYsIDEsIDIzNSwgMTY4LCA4NCwgNSwgMSwgMjM1LCAxNjgsIAotICAgIDg0LCA2LCAxLCAyMjksIDI1MiwgODQsIDUsIDEsIDIyOSwgMjUyLCA4NCwgNiwgMSwgMjI3LCAyNDgsIDg0LCA1LCAxLCAKLSAgICAyMjcsIDI0OCwgODQsIDYsIDEsIDIyNCwgMTU1LCA4NCwgNSwgMSwgMjI0LCAxNTUsIDg0LCA2LCAxLCAyMjIsIDEwMCwgODQsIAotICAgIDUsIDEsIDIyMiwgMTAwLCA4NCwgNiwgMSwgMjI4LCAyMjUsIDg0LCA1LCAxLCAyMjgsIDIyNSwgODQsIDYsIDEsIDc4LCA4NCwgCi0gICAgNSwgMSwgNzgsIDg0LCA2LCAxLCAyMTgsIDE2NywgODQsIDUsIDEsIDIxOCwgMTY3LCA4NCwgNiwgMSwgMjE1LCAyMjcsIDg0LCAKLSAgICA1LCAxLCAyMTUsIDIyNywgODQsIDYsIDEsIDIxMiwgMTMyLCA4NCwgNSwgMSwgMjEyLCAxMzIsIDg0LCA2LCAxLCAyMDksIAotICAgIDIwNywgODQsIDUsIDEsIDIwOSwgMjA3LCA4NCwgNiwgMSwgMjA3LCAzOSwgODQsIDUsIDEsIDIwNywgMzksIDg0LCA2LCAxLCAKLSAgICAyNDAsIDI2LCA4NCwgNSwgMSwgMjQwLCAyNiwgODQsIDYsIDEsIDIyOSwgMTIyLCA4NCwgNSwgMSwgMjI5LCAxMjIsIDg0LCAKLSAgICA2LCAxLCAyMTcsIDIwMiwgODQsIDUsIDEsIDIxNywgMjAyLCA4NCwgNiwgMSwgMjIwLCAxMiwgODQsIDUsIDEsIDIyMCwgMTIsIAotICAgIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjUxLCAzMCwgODQsIDUsIDEsIDI0MywgMjI2LCAyNTEsIDMwLCA4NCwgNiwgMSwgMzgsIAotICAgIDg0LCAyNTEsIDU5LCA4NCwgNSwgMSwgMzgsIDg0LCAyNTEsIDU5LCA4NCwgNiwgMSwgMjQ1LCAxMTMsIDI0MSwgMTQ0LCA4NCwgCi0gICAgNSwgMSwgMjQ1LCAxMTMsIDI0MSwgMTQ0LCA4NCwgNiwgMSwgMjQzLCAyMjYsIDIyOSwgMjUyLCA4NCwgNSwgMSwgMjQzLCAKLSAgICAyMjYsIDIyOSwgMjUyLCA4NCwgNiwgMSwgMjQzLCAyMjYsIDIyMiwgMTAwLCA4NCwgNSwgMSwgMjQzLCAyMjYsIDIyMiwgCi0gICAgMTAwLCA4NCwgNiwgMSwgMjQ1LCAxMTMsIDIyMiwgMTAwLCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIyMiwgMTAwLCA4NCwgNiwgCi0gICAgMSwgMzgsIDg0LCAyMjAsIDEyLCA4NCwgNSwgMSwgMzgsIDg0LCAyMjAsIDEyLCA4NCwgNiwgMSwgMjE0LCAyNDYsIDg0LCA1LCAKLSAgICAxLCAyMTQsIDI0NiwgODQsIDYsIDEsIDI0NSwgMTI4LCAyMTMsIDM1LCA4NCwgNSwgMSwgMjQ1LCAxMjgsIDIxMywgMzUsIAotICAgIDg0LCA2LCAxLCAzOCwgODQsIDIxMywgMzUsIDg0LCA1LCAxLCAzOCwgODQsIDIxMywgMzUsIDg0LCA2LCAxLCAzOCwgODQsIAotICAgIDI0MSwgNywgODQsIDUsIDEsIDM4LCA4NCwgMjQxLCA3LCA4NCwgNiwgMSwgMjUxLCA0MywgMjI5LCAxMjcsIDg0LCA1LCAxLCAKLSAgICAyNTEsIDQzLCAyMjksIDEyNywgODQsIDYsIDEsIDI0MywgMjI2LCAyMzYsIDEwNywgODQsIDUsIDEsIDI0MywgMjI2LCAyMzYsIAotICAgIDEwNywgODQsIDYsIDEsIDM4LCA4NCwgMjM2LCAxMDcsIDg0LCA1LCAxLCAzOCwgODQsIDIzNiwgMTA3LCA4NCwgNiwgMSwgCi0gICAgMzgsIDg0LCAxNTIsIDg0LCA1LCAxLCAzOCwgODQsIDE1MiwgODQsIDYsIDEsIDIyOCwgMTMwLCAxNTIsIDg0LCA1LCAxLCAKLSAgICAyMjgsIDEzMCwgMTUyLCA4NCwgNiwgMSwgMzgsIDg0LCAyMzcsIDQyLCA4NCwgNSwgMSwgMzgsIDg0LCAyMzcsIDQyLCA4NCwgCi0gICAgNiwgMSwgMzgsIDg0LCAyMzcsIDgzLCA4NCwgNSwgMSwgMzgsIDg0LCAyMzcsIDgzLCA4NCwgNiwgMSwgMzgsIDg0LCAyMzgsIAotICAgIDIzMCwgODQsIDUsIDEsIDM4LCA4NCwgMjM4LCAyMzAsIDg0LCA2LCAxLCAzOCwgODQsIDI0MywgMTMxLCA4NCwgNSwgMSwgCi0gICAgMzgsIDg0LCAyNDMsIDEzMSwgODQsIDYsIDEsIDM4LCA4NCwgMjEzLCAxLCA4NCwgNSwgMSwgMzgsIDg0LCAyMTMsIDEsIDg0LCAKLSAgICA2LCAxLCAzOCwgMjIxLCA1NCwgMjEzLCAxLCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIxMywgMSwgODQsIDYsIDEsIDM4LCAKLSAgICAyMjEsIDU0LCAyMjIsIDE1MSwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMjIsIDE1MSwgODQsIDYsIDEsIDM4LCAyMjEsIAotICAgIDU0LCAyMjAsIDI0OCwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMjAsIDI0OCwgODQsIDYsIDEsIDM4LCAyMjEsIDU0LCAKLSAgICAyMDQsIDc3LCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIwNCwgNzcsIDg0LCAxNiwgMjMwLCAxOCwgODQsIDE2LCAyMjQsIAotICAgIDE1NiwgMjE1LCAyMjcsIDg0LCAxNiwgMjE4LCAxNjgsIDIxNSwgMjI3LCA4NCwgMTYsIDIxMSwgODUsIDg0LCAxNiwgMjA5LCAKLSAgICAyMDgsIDIxNSwgMjI3LCA4NCwgMTYsIDIyOSwgMTIzLCAyMTUsIDIyNywgODQsIDE2LCAyMTMsIDIsIDIxMiwgMTMyLCA4NCwgCi0gICAgNiwgMSwgMjQ1LCAxMTMsIDIxMywgMzUsIDg0LCA1LCAxLCAyNDUsIDExMywgMjEzLCAzNSwgODQsIDYsIDEsIDI0NSwgMTEzLCAKLSAgICAyMzgsIDIzMCwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMzgsIDIzMCwgODQsIDM5LCAyMjIsIDEwMSwgNTUsIDg0LCAzOSwgCi0gICAgMjExLCAxOTcsIDI1MCwgNjcsIDg0LCAzOSwgMjExLCAxOTcsIDIyNywgMTg2LCA4NCwgNiwgMSwgMjQ4LCAxNiwgMjI5LCAKLSAgICAxMjcsIDg0LCA1LCAxLCAyNDgsIDE2LCAyMjksIDEyNywgODQsIDM4LCAyMjEsIDU0LCAyMzksIDEwMiwgMjExLCA2MSwgODQsIAotICAgIDM4LCAyMjEsIDU0LCAyNDMsIDE2NywgMjE3LCA0NywgODIsIDg0LCAzOCwgMjIxLCA1NCwgMjMxLCAzMCwgMjE3LCA0NywgCi0gICAgODIsIDg0LCAzOCwgMjIxLCA1NCwgMjA2LCA0MCwgMjQzLCAxNDEsIDg0LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgODQsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCA4NCwgMjI0LCAyNSwgMjQzLCAxNDEsIDExNCwgNSwgMSwgMjUwLCAyMzEsIDExNCwgNSwgMSwgCi0gICAgMjQ4LCAyNDIsIDExNCwgNSwgMSwgMjM4LCAyMzQsIDExNCwgNSwgMSwgMjQzLCA5MywgMTE0LCA1LCAxLCAyNDEsIDkyLCAKLSAgICAxMTQsIDUsIDEsIDIwNSwgMjEzLCAxMTQsIDUsIDEsIDIwMiwgODcsIDExNCwgNSwgMSwgMjA5LCAyMzAsIDExNCwgNSwgMSwgCi0gICAgMjMxLCA0OSwgMTE0LCA1LCAxLCAyMzAsIDQsIDExNCwgNSwgMSwgMjI4LCAyLCAxMTQsIDUsIDEsIDIyNSwgMTIyLCAxMTQsIAotICAgIDUsIDEsIDIyMywgNzQsIDExNCwgNSwgMSwgMjIwLCAzMSwgMTE0LCA1LCAxLCAyMTksIDkxLCAxMTQsIDUsIDEsIDIwMiwgCi0gICAgNzYsIDExNCwgNSwgMSwgMjE2LCAyMDIsIDExNCwgNSwgMSwgMjE0LCAyNDMsIDExNCwgNSwgMSwgMjA5LCAyMTgsIDExNCwgCi0gICAgNSwgMSwgMjA2LCAyNTUsIDExNCwgNSwgMSwgMjE4LCAyMDAsIDExNCwgNSwgMSwgMjI5LCAxMzIsIDExNCwgNSwgMSwgMjM4LCAKLSAgICAxMTAsIDExNCwgNSwgMSwgMjE3LCAxMTEsIDExNCwgNSwgMSwgMjEyLCAyNTUsIDExNCwgNSwgMSwgMjQ2LCAxMjksIDExNCwgCi0gICAgNSwgMSwgMjQ3LCA2MSwgMTE0LCA1LCAxLCAyMzAsIDEzMywgMTE0LCA1LCAxLCAyNDYsIDY4LCAxMTQsIDUsIDEsIDI0NiwgCi0gICAgMTgzLCAxMTQsIDUsIDEsIDIwMywgMTgwLCAxMTQsIDUsIDEsIDIzMCwgMTQ2LCAxMTQsIDUsIDEsIDIzNywgMTU0LCAxMTQsIAotICAgIDUsIDEsIDIzNywgNjcsIDExNCwgNSwgMSwgMjM2LCAyNTQsIDExNCwgNSwgMSwgMjA0LCA2MiwgMTE0LCA1LCAxLCAyMzcsIAotICAgIDkyLCAxMTQsIDUsIDEsIDIzNiwgMTMyLCAxMTQsIDUsIDEsIDIwMiwgMjQ5LCAxMTQsIDUsIDEsIDI1MSwgOTgsIDIwOCwgCi0gICAgMjQ3LCAxLCAxOTgsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwNiwgMjA4LCAyNDcsIDEsIDIwMywgMTA1LCAyMDgsIDI0NywgMSwgCi0gICAgMjAzLCA5NSwgMjA4LCAyNDcsIDEsIDIwMywgOTMsIDIwOCwgMjQ3LCAxLCAyNDgsIDExMiwgMjUxLCAxNDAsIDIwMywgODgsIAotICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDg4LCAyMDgsIDI0NywgMSwgMjAzLCAxMDMsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwMCwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgMTAyLCAyMDgsIDI0NywgMSwgMjAzLCAxMDEsIDIwOCwgMjQ3LCAxLCAyMDMsIDE1LCAyMDgsIDI0NywgCi0gICAgMSwgMjAzLCA5NywgMjA4LCAyNDcsIDEsIDIwMywgODYsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA4NiwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgODMsIDIwOCwgMjQ3LCAxLCAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjQ4LCAxMTIsIDI1MSwgMTQwLCAKLSAgICAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTEsIDIwOCwgMjQ3LCAxLCAyMDMsIDkwLCAyMDgsIDI0NywgCi0gICAgMSwgMjAzLCAxMTAsIDIwOCwgMjQ3LCAxLCAyMDMsIDg0LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgODQsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDczLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgNzMsIDIwOCwgMjQ3LCAxLCAyMDMsIDExLCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA1NCwgMjA4LCAyNDcsIDEsIDI1MSwgNzEsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyMDcsIAotICAgIDIwMCwgMjAzLCA1NCwgMjA4LCAyNDcsIDEsIDIwMywgODIsIDIwOCwgMjQ3LCAxLCAyMDMsIDgxLCAyMDgsIDI0NywgMSwgCi0gICAgMjAzLCA3OCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDkyLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgNzYsIAotICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDc0LCAyMDgsIDI0NywgMSwgMjAyLCAyMTMsIDIwOCwgMjQ3LCAxLCAyMDMsIDcxLCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCA3MCwgMjA4LCAyNDcsIDEsIDIwMywgOTQsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5NCwgCi0gICAgMjA4LCAyNDcsIDEsIDI1MCwgNCwgMjAzLCA5NCwgMjA4LCAyNDcsIDEsIDIwMywgNjksIDIwOCwgMjQ3LCAxLCAyMDMsIDY3LCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA2OCwgMjA4LCAyNDcsIDEsIDIwMywgNjYsIDIwOCwgMjQ3LCAxLCAyMDMsIDY1LCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCAxMDQsIDIwOCwgMjQ3LCAxLCAyMDMsIDYzLCAyMDgsIDI0NywgMSwgMjAzLCA2MSwgMjA4LCAyNDcsIAotICAgIDEsIDIwMywgNjAsIDIwOCwgMjQ3LCAxLCAyMDMsIDU4LCAyMDgsIDI0NywgMSwgMjAzLCA1NSwgMjA4LCAyNDcsIDEsIDIwOSwgCi0gICAgMTk5LCAyMDMsIDU1LCAyMDgsIDI0NywgMSwgMjAzLCA1MywgMjA4LCAyNDcsIDEsIDIwMywgNTIsIDIwOCwgMjQ3LCAxLCAKLSAgICAyMDIsIDI0NywgMjA4LCAyNDcsIDY1LCAxLCAyMjgsIDEwMywgODIsIDIwOCwgMjQ3LCAyMTMsIDEzMSwgODIsIDIwOCwgCi0gICAgMjQ3LCAxMDksIDIzMCwgOTYsIDMzLCA0LCAyMjcsIDQ4LCAzMywgNCwgMjI0LCA4MSwgMzMsIDQsIDIxNSwgMjI1LCAzMywgCi0gICAgNCwgMjEyLCAxMiwgMzMsIDQsIDIxMiwgMjQxLCAzMywgNCwgMjQ4LCAyMiwgMzMsIDQsIDIwOCwgMTcyLCAzMywgNCwgMjQ1LCAKLSAgICAyNTMsIDMzLCA0LCAyMjEsIDE4OSwgMzMsIDQsIDIyMCwgMjMyLCAzMywgNCwgMjM4LCA0NSwgMjIwLCA5NywgMzMsIDQsIAotICAgIDIwMiwgMTYsIDMzLCA0LCAyNDMsIDExMSwgMzMsIDQsIDI0NCwgODksIDMzLCA0LCAyMzAsIDEwMCwgMzMsIDQsIDIwOSwgCi0gICAgNDYsIDMzLCA0LCAyNDYsIDExNSwgMzMsIDQsIDIxOCwgMTc5LCAzMywgNCwgMjE4LCA2OCwgMzMsIDQsIDIzOCwgMTI1LCAKLSAgICAzMywgNCwgMjM4LCAxMjEsIDMzLCA0LCAyMzgsIDEyMiwgMzMsIDQsIDIzOCwgMTIzLCAzMywgNCwgMjExLCAxNjQsIDMzLCAKLSAgICA0LCAyMTEsIDExOSwgMzMsIDQsIDIxMSwgMTMyLCAzMywgNCwgMjExLCAxNjMsIDMzLCA0LCAyMTEsIDEzNywgMzMsIDQsIAotICAgIDIxMSwgMTM4LCAzMywgNCwgMjExLCAxMjQsIDMzLCA0LCAyNDcsIDUsIDMzLCA0LCAyNDYsIDI0MCwgMzMsIDQsIDI0NiwgCi0gICAgMjQyLCAzMywgNCwgMjQ3LCA0LCAzMywgNCwgMjQ3LCAyLCAzMywgNCwgMjQ3LCAzLCAzMywgNCwgMjQ2LCAyNDEsIDMzLCA0LCAKLSAgICAyMDEsIDIzNSwgMzMsIDQsIDIwMSwgMjEzLCAzMywgNCwgMjAxLCAyMjYsIDMzLCA0LCAyMDEsIDIzNCwgMzMsIDQsIDIwMSwgCi0gICAgMjI5LCAzMywgNCwgMjAxLCAyMzAsIDMzLCA0LCAyMDEsIDIxOCwgMzMsIDQsIDI0NywgMCwgMzMsIDQsIDI0NiwgMjQzLCAKLSAgICAzMywgNCwgMjQ2LCAyNDUsIDMzLCA0LCAyNDYsIDI1NSwgMzMsIDQsIDI0NiwgMjUzLCAzMywgNCwgMjQ2LCAyNTQsIDMzLCAKLSAgICA0LCAyNDYsIDI0NCwgMzMsIDQsIDIxNywgMTMsIDMzLCA0LCAyMTcsIDMsIDMzLCA0LCAyMTcsIDksIDMzLCA0LCAyMTcsIAotICAgIDEyLCAzMywgNCwgMjE3LCAxMCwgMzMsIDQsIDIxNywgMTEsIDMzLCA0LCAyMTcsIDgsIDMzLCA0LCAyMjgsIDE0MSwgMzMsIAotICAgIDQsIDIyOCwgMTMzLCAzMywgNCwgMjI4LCAxMzYsIDMzLCA0LCAyMjgsIDE0MCwgMzMsIDQsIDIyOCwgMTM3LCAzMywgNCwgCi0gICAgMjI4LCAxMzgsIDMzLCA0LCAyMjgsIDEzNCwgMzMsIDQsIDIwMywgMTQwLCAzMywgNCwgMjAzLCAxMjcsIDMzLCA0LCAyMDMsIAotICAgIDEzNSwgMzMsIDQsIDIwMywgMTM5LCAzMywgNCwgMjAzLCAxMzcsIDMzLCA0LCAyMDMsIDEzOCwgMzMsIDQsIDIwMywgMTM0LCAKLSAgICAzMywgNCwgMjM3LCAxODMsIDMzLCA0LCAyMzcsIDE3MywgMzMsIDQsIDIzNywgMTc2LCAzMywgNCwgMjM3LCAxODIsIDMzLCAKLSAgICA0LCAyMzcsIDE3OCwgMzMsIDQsIDIzNywgMTc5LCAzMywgNCwgMjM3LCAxNzUsIDM5LCAzNiwgMSwgMjQ4LCAxNjIsIDM5LCAKLSAgICAzNiwgMSwgMjA2LCA1NSwgMzksIDM2LCAxLCAyMzgsIDEwNSwgMzksIDM2LCAxLCAyNDQsIDc1LCAzOSwgMzYsIDEsIDIwMiwgCi0gICAgNzEsIDM5LCAzNiwgMSwgMjAyLCA5MiwgMzksIDM2LCAxLCAxNzMsIDM5LCAzNiwgMSwgMjQxLCAxMjIsIDM5LCAzNiwgMSwgCi0gICAgMjQxLCAxMDMsIDM5LCAzNiwgMSwgMjQxLCA5MiwgMzksIDM2LCAxLCA3OCwgMzksIDM2LCAxLCAyMTksIDM0LCAzOSwgMzYsIAotICAgIDEsIDI0MSwgMjgsIDM5LCAzNiwgMSwgMjQxLCAxNywgMzksIDM2LCAxLCAyMDksIDE4NywgMzksIDM2LCAxLCAxNTIsIDM5LCAKLSAgICAzNiwgMSwgMjA4LCAxNCwgMzksIDM2LCAxLCAyNDYsIDE3MCwgMzksIDM2LCAxLCAyMTMsIDkwLCAzOSwgMzYsIDEsIDIxMywgCi0gICAgNDYsIDM5LCAzNiwgMSwgMjM5LCAyMzUsIDM5LCAzNiwgMSwgMjQxLCAxMywgMzksIDM2LCAxLCA2MywgMzksIDM2LCAxLCAKLSAgICAyMzEsIDExMCwgMzksIDM2LCAxLCAyNDMsIDEyOSwgMzksIDM2LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzOSwgMzYsIDEsIAotICAgIDIwMywgNjYsIDM5LCAzNiwgMSwgMjAyLCAyMTMsIDM5LCAzNiwgMSwgMjMwLCAyMjgsIDYzLCAzOSwgMzYsIDEsIDIyNywgCi0gICAgODYsIDIwMiwgMTgzLCAzOSwgMzYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzOSwgMzYsIDEsIDIzMCwgMjI4LCAyNDgsIDczLCAKLSAgICAyMDIsIDE4MywgNTAsIDI1MCwgMjE4LCAyMTAsIDI0MSwgMjI1LCA4OCwgNTAsIDI1MCwgMjE4LCAyNDIsIDgzLCAyMTAsIAotICAgIDI0MSwgMjI1LCA4OCwgNDksIDIxMCwgMjQxLCAxNTUsIDUwLCAyMTAsIDI0MSwgMTU1LCA0OSwgMjQyLCA4MywgMjEwLCAKLSAgICAyNDEsIDE1NSwgNTAsIDI0MiwgODMsIDIxMCwgMjQxLCAxNTUsIDIxNiwgMTg4LCAyMzAsIDI0OSwgMjI1LCA4OCwgMjE2LCAKLSAgICAxODgsIDI0MiwgODMsIDIzMCwgMjQ5LCAyMjUsIDg4LCAyNDIsIDgzLCAyMDgsIDEwMywgMjI1LCA4OCwgNDksIDIwOCwgCi0gICAgMTAzLCAxNTUsIDUwLCAyMDgsIDEwMywgMTU1LCAyMTYsIDE4OCwgMjExLCAxNzcsIDQ5LCAyMTYsIDE4OCwgMjIwLCAzMywgCi0gICAgMTU1LCA1MCwgMjE2LCAxODgsIDIyMCwgMzMsIDE1NSwgMjQxLCAxNjIsIDI0NSwgMTYzLCAyMTksIDg3LCAyMzksIDE2MSwgCi0gICAgMjE5LCA4NywgMjE2LCA3MywgMjM5LCAxNjEsIDIxOSwgODcsIDIzNSwgMjE3LCAyNDIsIDgzLCAyMjAsIDkyLCAxODMsIAotICAgIDI1MCwgMjI3LCAxNzcsIDI1MCwgMjI3LCAyNDIsIDgzLCAyMTYsIDExLCAyNTAsIDIxNywgNTIsIDIyMCwgODksIDIzNSwgCi0gICAgMjIwLCAyMzAsIDIzOSwgMjMwLCAyNDcsIDIxOSwgMTM1LCAyNDcsIDIyMywgMjM1LCAyMjEsIDMsIDI0MywgMjMxLCAyMDgsIAotICAgIDIyOCwgMywgMjE1LCAyNTMsIDU1LCA0OSwgMTI0LCAyMTksIDc5LCAxNTUsIDUwLCAxMjQsIDIxOSwgNzksIDE1NSwgMjA4LCAKLSAgICAyMjgsIDMsIDcwLCA1NSwgMjA4LCAyMjgsIDMsIDcwLCA1NiwgNDksIDgwLCAyNDgsIDIzMSwgMywgMjE3LCA0MSwgNTAsIAotICAgIDgwLCAyNDgsIDIzMSwgMywgMjE3LCA0MSwgMjA4LCAxNDUsIDQ5LCAxNjIsIDE1NSwgMjA4LCAxNDUsIDUwLCAxNjIsIDE1NSwgCi0gICAgMjQ3LCAyNDgsIDQ5LCAxNjIsIDE1NSwgMjQ3LCAyNDgsIDUwLCAxNjIsIDE1NSwgNDksIDIxMiwgMTU0LCAxMDYsIDE1NSwgCi0gICAgNTAsIDIxMiwgMTU0LCAxMDYsIDE1NSwgNDksIDUyLCAyMTksIDc2LCA1MCwgNTIsIDIxOSwgNzYsIDEyMCwgMTg3LCAxMTUsIAotICAgIDExOCwgNzAsIDIxNywgMTc4LCAxMTgsIDcwLCAxMTUsIDEyMCwgMTg3LCAyMTcsIDE3OCwgMTAzLCAyMzksIDE0NywgNzAsIAotICAgIDIxNywgMTc4LCAyMzksIDIzMywgNzAsIDgyLCAyMTYsIDczLCAyMTcsIDQ3LCA4MiwgODAsIDIwOCwgMjI3LCAyMTUsIDI1MywgCi0gICAgMjE4LCA2MiwgMjAzLCAyMzgsIDIxMywgMTMxLCAxMDEsIDI0MywgODUsIDIwNywgMTc0LCAyNDUsIDIzMywgMjE2LCAxODgsIAotICAgIDI0MywgODUsIDIxNiwgMTg4LCAyNDUsIDIzMywgMjA3LCAxNzQsIDIxMywgMTQzLCAyNDQsIDE5NiwgMywgNDksIDIzNywgCi0gICAgMjI0LCAyNDQsIDE5NiwgMywgNTAsIDIzNywgMjI0LCAyMDcsIDE3NCwgMjQ0LCAxOTUsIDIwOCwgMTQ1LCAxNjIsIDIxNCwgCi0gICAgMTY4LCA1NCwgMjA3LCAxMzUsIDI0NCwgMTQ0LCAyMDksIDMwLCAyNDQsIDE0NCwgMjExLCA3NiwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDgwLCAyMTIsIDg4LCAyNDMsIDgzLCAyMDQsIDIxLCA4MCwgMjI3LCAxMTQsIDI0NywgNDYsIDUyLCAyMzUsIDIyMCwgCi0gICAgMjE2LCA3MywgMjQ1LCAyMzMsIDUyLCAyMjYsIDI1MiwgMjE3LCAzMSwgODIsIDEyLCA0MCwgMjE2LCAxMDAsIDEyLCA0MCwgCi0gICAgMjQ2LCAyNiwgMTIsIDQwLCAyMTQsIDE3MSwgMTA1LCAxMiwgNDAsIDIxNCwgMTcxLCAxMDgsIDEyLCA0MCwgMjE0LCAxNzEsIAotICAgIDE0NywgMTIsIDQwLCAyMTgsIDIyOSwgMTIsIDQwLCAyNDcsIDIzMywgMTIsIDQwLCAyMTAsIDgsIDEyLCA0MCwgMjI5LCAzNCwgCi0gICAgMTA1LCAxMiwgNDAsIDIyOSwgMzQsIDEwOCwgMTIsIDQwLCAyNDMsIDEzOCwgMTIsIDQwLCAyMTQsIDE3NSwgMTIsIDQwLCA1LCAKLSAgICAxMDUsIDEyLCA0MCwgNSwgMTA4LCAxMiwgNDAsIDIyOCwgMjMsIDEwNSwgMTIsIDQwLCAyMjgsIDIzLCAxMDgsIDEyLCA0MCwgCi0gICAgMjI4LCAyMywgMTQ3LCAxMiwgNDAsIDIyOCwgMjMsIDE0OSwgMTIsIDQwLCAyMTIsIDI0LCAxMiwgNDAsIDIwOSwgMzMsIDEyLCAKLSAgICA0MCwgMjEyLCAyMiwgMTA1LCAxMiwgNDAsIDIxMiwgMjIsIDEwOCwgMTIsIDQwLCAyMzcsIDU2LCAxMDUsIDEyLCA0MCwgCi0gICAgMjM3LCA1NiwgMTA4LCAxMiwgNDAsIDIzNywgMTIzLCAxMiwgNDAsIDIxNiwgMTc4LCAxMiwgNDAsIDI0NiwgMTEyLCAxMiwgCi0gICAgNDAsIDIxMCwgMjE0LCAxMiwgNDAsIDIyNCwgMjksIDEyLCA0MCwgMjQ0LCA3MywgMTIsIDQwLCAyMjQsIDIwLCAxMiwgNDAsIAotICAgIDI0NiwgNDQsIDEyLCA0MCwgMjA0LCA4MSwgMTA1LCAxMiwgNDAsIDIwNCwgODEsIDEwOCwgMTIsIDQwLCAyMzksIDI0OSwgCi0gICAgMTIsIDQwLCAyMTksIDQ2LCAxMDUsIDEyLCA0MCwgMjE5LCA0NiwgMTA4LCAxMiwgNDAsIDIxMiwgMTI3LCAxNjIsIDIwOCwgCi0gICAgOTYsIDIwOCwgMjUsIDEyLCA0MCwgMjQ1LCAxNDksIDEyLCA0MCwgMjQzLCAxMDIsIDEyLCA0MCwgMjMwLCAxNzYsIDEyLCAKLSAgICA0MCwgMjQ4LCAxNSwgNzYsIDI0NiwgMTAsIDEyLCA0MCwgMjQwLCAxOTEsIDEyLCA0MCwgMjExLCAxOTksIDEwNSwgMTIsIAotICAgIDQwLCAyMTEsIDE5OSwgMTA4LCAxMiwgNDAsIDI0OCwgMjQ0LCAxMiwgNDAsIDIxMiwgMTM0LCAxMiwgNDAsIDI0NywgMTIyLCAKLSAgICAyMTIsIDEzNCwgMTIsIDQwLCAyMjIsIDIyMCwgMTA1LCAxMiwgNDAsIDIyMiwgMjIwLCAxMDgsIDEyLCA0MCwgMjIyLCAyMjAsIAotICAgIDE0NywgMTIsIDQwLCAyMjIsIDIyMCwgMTQ5LCAxMiwgNDAsIDIyNCwgMjI3LCAxMiwgNDAsIDIxMywgMzcsIDEyLCA0MCwgCi0gICAgMjE2LCAxODQsIDEyLCA0MCwgMjQwLCAyMTksIDEyLCA0MCwgMjIwLCA0NSwgMTIsIDQwLCAyNDcsIDIwMSwgMTA1LCAxMiwgCi0gICAgNDAsIDI0NywgMjAxLCAxMDgsIDEyLCA0MCwgMjI1LCAxNSwgMTIsIDQwLCAyMjQsIDI0LCAxMiwgNDAsIDIzOCwgMSwgMTA1LCAKLSAgICAxMiwgNDAsIDIzOCwgMSwgMTA4LCAxMiwgNDAsIDIzOCwgMSwgMTQ3LCAxMiwgNDAsIDIwOCwgMjQ1LCAxMiwgNDAsIDI0NiwgCi0gICAgOSwgMTIsIDQwLCAyMDQsIDQ2LCAxMDUsIDEyLCA0MCwgMjA0LCA0NiwgMTA4LCAxMiwgNDAsIDI0NywgMTIyLCAyMTQsIAotICAgIDE2NSwgMTIsIDQwLCAyMTIsIDEyNywgMjM2LCA1MywgMTIsIDQwLCAyMzYsIDUzLCAxMiwgNDAsIDI0NywgMTIyLCAyMTEsIAotICAgIDIxMSwgMTIsIDQwLCAyNDcsIDEyMiwgMjEzLCAzMiwgMTIsIDQwLCAyMzksIDE3MiwgMTIsIDQwLCAyNDcsIDEyMiwgMjQ3LCAKLSAgICAyMywgMTIsIDQwLCAyMTIsIDEyNywgMjA0LCAxMDEsIDEyLCA0MCwgMjA0LCAxMDIsIDEwNSwgMTIsIDQwLCAyMDQsIDEwMiwgCi0gICAgMTA4LCAxMiwgNDAsIDI0NiwgNDcsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOCwgMzEsIDEyLCA0MCwgMTYzLCAxMDUsIDEyLCAKLSAgICA0MCwgMTYzLCAxMDgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIyNywgMjgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOCwgMjE2LCAxMiwgCi0gICAgNDAsIDIyNCwgMTYsIDEwNSwgMTIsIDQwLCAyMjQsIDE2LCAxMDgsIDEyLCA0MCwgMjE2LCAxOTAsIDEyLCA0MCwgMjQ4LCAKLSAgICAyNSwgMTIsIDQwLCAyNDcsIDEyMiwgMjA5LCAyMjQsIDIyNywgMjI4LCAxMiwgNDAsIDI0NywgMTIyLCAyMjcsIDIyOSwgMTIsIAotICAgIDQwLCAyNDcsIDEyMiwgMjA0LCAxNiwgMTIsIDQwLCAyNDcsIDEyMiwgMjM5LCAxOTAsIDEyLCA0MCwgMjQxLCAxNzMsIDEwNSwgCi0gICAgMTIsIDQwLCAyNDEsIDE3MywgMTA4LCAxMiwgNDAsIDI0MSwgMTczLCAxNDcsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0MSwgMTcyLCAKLSAgICAxMiwgNDAsIDIzNywgNjQsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzNiwgNDksIDEyLCA0MCwgMjQ4LCAxMSwgMTIsIDQwLCAyMzgsIAotICAgIDg5LCAxMiwgNDAsIDI0NywgMTIyLCAyMzksIDI0MywgMTIsIDQwLCAyNDcsIDEyMiwgMjQ4LCA2MCwgMTIsIDQwLCAyNDcsIAotICAgIDEyMiwgMjE1LCAxLCAxMiwgNDAsIDIxMiwgMTI3LCAyMDQsIDM4LCAxMiwgNDAsIDIxMiwgMTI3LCAyMDMsIDQ0LCAxMiwgCi0gICAgNDAsIDI0NywgMTIyLCAyMzksIDEyMSwgMTIsIDQwLCAyMzAsIDE4MywgMjQwLCAyMjQsIDEyLCA0MCwgMjQ3LCAxMjIsIAotICAgIDI0MCwgMjI0LCAxMiwgNDAsIDIzMCwgMTgzLCAyMDgsIDE0NiwgMTIsIDQwLCAyNDcsIDEyMiwgMjA4LCAxNDYsIDEyLCA0MCwgCi0gICAgMjMwLCAxODMsIDI0MiwgNjEsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0MiwgNjEsIDEyLCA0MCwgMjA3LCAxNzEsIDEyLCA0MCwgCi0gICAgMjMwLCAxODMsIDIwNywgMTcxLCAxMiwgNDAsIDI0NywgMTIyLCAyMDcsIDE3MSwgNzEsIDQwLCAxMDUsIDcxLCA0MCwgMjI3LCAKLSAgICAxMTQsIDcxLCA0MCwgMjQzLCA4NSwgNzEsIDQwLCAyMTIsIDU3LCA3MSwgNDAsIDIxNCwgMTcwLCA3MSwgNDAsIDExMywgNzEsIAotICAgIDQwLCAxMDgsIDcxLCA0MCwgMjI3LCAxNDMsIDcxLCA0MCwgMjI1LCAxMjIsIDcxLCA0MCwgMjI3LCAyMDcsIDcxLCA0MCwgCi0gICAgMjQxLCA2NywgNzEsIDQwLCAxOTksIDcxLCA0MCwgMTIxLCAyNDcsIDIzMywgNzEsIDQwLCAyNDUsIDE1MSwgNzEsIDQwLCAKLSAgICAyMzUsIDE2MiwgNzEsIDQwLCAyMTAsIDgsIDcxLCA0MCwgMTcxLCAyNDcsIDIzMywgNzEsIDQwLCAyMjksIDMzLCA3MSwgNDAsIAotICAgIDIxOCwgMTYsIDcxLCA0MCwgMjAzLCAyMjgsIDcxLCA0MCwgMjExLCAxOTAsIDcxLCA0MCwgNTAsIDE3MSwgMjQ3LCAyMzMsIAotICAgIDcxLCA0MCwgMjM2LCAyNTUsIDI0MSwgODcsIDcxLCA0MCwgMjA5LCAxNTIsIDcxLCA0MCwgMjQzLCAxMzgsIDcxLCA0MCwgCi0gICAgMjE0LCAxNzUsIDcxLCA0MCwgMjQ2LCAyNiwgNzEsIDQwLCAyMTcsIDIyNiwgNzEsIDQwLCAyNTEsIDgwLCA3MSwgNDAsIAotICAgIDIyNCwgNywgNzEsIDQwLCAyNDEsIDg3LCA3MSwgNDAsIDI0MSwgMTc5LCA3MSwgNDAsIDIxNCwgMTk3LCA3MSwgNDAsIDIzOCwgCi0gICAgMzksIDcxLCA0MCwgMjM4LCA0MCwgMjEyLCAzOCwgNzEsIDQwLCAyNDAsIDIyMywgNzEsIDQwLCAyNDgsIDcyLCA3MSwgNDAsIAotICAgIDIwMywgMjUwLCA3MSwgNDAsIDI0NiwgMTMzLCA3MSwgNDAsIDIxNSwgMjA3LCA3MSwgNDAsIDIzMSwgNDUsIDcxLCA0MCwgCi0gICAgMjEyLCAzNiwgNzEsIDQwLCAyMjgsIDIyLCA3MSwgNDAsIDI0NSwgMTYxLCA3MSwgNDAsIDIxMSwgMTgxLCA3MSwgNDAsIAotICAgIDIyNCwgMTIsIDcxLCA0MCwgMjE1LCAyNDEsIDcxLCA0MCwgMjAzLCAyMzUsIDcxLCA0MCwgMjIwLCAyNSwgNzEsIDQwLCAKLSAgICAyMDcsIDE4MCwgNzEsIDQwLCAyNDIsIDQ0LCA3MSwgNDAsIDIxMiwgMjI4LCAyMDksIDMzLCA3MSwgNDAsIDI0MiwgODMsIAotICAgIDI0NiwgMjYsIDcxLCA0MCwgMTYzLCAyMTEsIDM4LCA3MSwgNDAsIDEyMCwgMjM3LCA5OSwgNzEsIDQwLCAyMTIsIDIzNCwgCi0gICAgNzEsIDQwLCAyNDcsIDI0MCwgNzEsIDQwLCAyMTIsIDIxLCA3MSwgNDAsIDI0NywgMjA1LCA3MSwgNDAsIDIxMSwgNzUsIDcxLCAKLSAgICA0MCwgMjM3LCA1NSwgNzEsIDQwLCAyMzcsIDEzOCwgNzEsIDQwLCAyNDMsIDg4LCA3MSwgNDAsIDIzNywgMTIzLCA3MSwgNDAsIAotICAgIDI0NywgMjIzLCA3MSwgNDAsIDIxNiwgMTc4LCA3MSwgNDAsIDIxNCwgMTgzLCA3MSwgNDAsIDI0MywgMTY5LCA3MSwgNDAsIAotICAgIDI1MCwgOSwgNzEsIDQwLCAyMTEsIDE3NywgNzEsIDQwLCAyMjEsIDE2NSwgNzEsIDQwLCAyMTAsIDIxNCwgNzEsIDQwLCAKLSAgICAyMTQsIDIwOCwgNzEsIDQwLCAyMjQsIDI5LCA3MSwgNDAsIDIwOCwgOTUsIDcxLCA0MCwgMjI4LCA5OSwgNzEsIDQwLCAyMTEsIAotICAgIDYxLCA3MSwgNDAsIDI0NCwgNzMsIDcxLCA0MCwgMjA0LCA2MSwgNzEsIDQwLCAyNDMsIDExNCwgMjIxLCAxNjUsIDcxLCA0MCwgCi0gICAgMjQ1LCAyMjksIDcxLCA0MCwgMjM5LCA5NSwgNzEsIDQwLCAyNDYsIDM4LCA3MSwgNDAsIDIxMSwgODAsIDcxLCA0MCwgMjA0LCAKLSAgICA4MCwgNzEsIDQwLCAyMzksIDI0OSwgNzEsIDQwLCAyNDYsIDM0LCA3MSwgNDAsIDI0MCwgNjcsIDcxLCA0MCwgNTIsIDIwMywgCi0gICAgMTk2LCA3MSwgNDAsIDE2MiwgMjA4LCA5NiwgMjA4LCAyNSwgNzEsIDQwLCAyMTIsIDUwLCA3MSwgNDAsIDI0MCwgNzksIDcxLCAKLSAgICA0MCwgMjQ1LCAxNDksIDcxLCA0MCwgMjQzLCAxMDIsIDcxLCA0MCwgMjE3LCAyMjMsIDcxLCA0MCwgMjMwLCAxNzYsIDcxLCAKLSAgICA0MCwgMjI0LCAyNDksIDcxLCA0MCwgMjA4LCAyMjYsIDcxLCA0MCwgMjEwLCAxNjQsIDcxLCA0MCwgMjI3LCAxMzcsIDcxLCAKLSAgICA0MCwgMjA2LCAxOTEsIDcxLCA0MCwgMjQwLCAyNCwgNzEsIDQwLCAyNDgsIDE1LCA3NiwgMjQ2LCAxMCwgNzEsIDQwLCAyMTIsIAotICAgIDE1OCwgNzEsIDQwLCAyNDIsIDgzLCAyMDksIDE0NCwgNzEsIDQwLCAyMDQsIDMzLCA3MSwgNDAsIDIxMiwgNjUsIDcxLCA0MCwgCi0gICAgMjQzLCAxNTYsIDcxLCA0MCwgMjQwLCAxOTEsIDcxLCA0MCwgMjExLCAyMTQsIDcxLCA0MCwgNDcsIDcxLCA0MCwgMjExLCAKLSAgICA2MywgNzEsIDQwLCAyMTEsIDE5OCwgNzEsIDQwLCAyMDgsIDExOCwgNzEsIDQwLCAyMzgsIDEwLCA3MSwgNDAsIDI0NywgMTAsIAotICAgIDcxLCA0MCwgMjExLCA5OCwgNzEsIDQwLCAyNDgsIDI0NCwgNzEsIDQwLCAyMTYsIDUyLCA3MSwgNDAsIDIxMiwgMTM0LCA3MSwgCi0gICAgNDAsIDIzMCwgMTY4LCA3MSwgNDAsIDIyMiwgMjE5LCA3MSwgNDAsIDIxMywgMzcsIDcxLCA0MCwgMjQwLCA1NSwgNzEsIDQwLCAKLSAgICAyMjAsIDQ1LCA3MSwgNDAsIDI1MCwgMjI2LCA3MSwgNDAsIDIxOCwgODMsIDcxLCA0MCwgMjQxLCAxODMsIDcxLCA0MCwgCi0gICAgMjQ3LCAyMDAsIDcxLCA0MCwgMjI1LCAxNSwgNzEsIDQwLCAyMjQsIDEwNCwgNzEsIDQwLCAyMTMsIDE0OSwgNzEsIDQwLCAKLSAgICAyNTAsIDk4LCA3MSwgNDAsIDIyNCwgMjQsIDcxLCA0MCwgMjA4LCAxNTAsIDcxLCA0MCwgMjE5LCAyNTIsIDcxLCA0MCwgCi0gICAgMjQ4LCAxOSwgNzEsIDQwLCAyMTEsIDU5LCA3MSwgNDAsIDI0NSwgMjQxLCA3MSwgNDAsIDIzOCwgMCwgNzEsIDQwLCAyMDgsIAotICAgIDI0NSwgNzEsIDQwLCAyMzEsIDksIDcxLCA0MCwgMjQ4LCAzMSwgNzEsIDQwLCAyMDQsIDEwMiwgMjQxLCA4NywgNzEsIDQwLCAKLSAgICAyNDYsIDksIDcxLCA0MCwgMjA0LCA0NSwgNzEsIDQwLCAyMTQsIDE2NSwgNzEsIDQwLCAyMzYsIDUzLCA3MSwgNDAsIDIxMSwgCi0gICAgMjExLCA3MSwgNDAsIDIwNiwgNzksIDcxLCA0MCwgMjQ4LCAxNTcsIDcxLCA0MCwgMjE4LCAxMzEsIDcxLCA0MCwgMjQ5LCAKLSAgICAxMywgNzEsIDQwLCAyMTMsIDMyLCA3MSwgNDAsIDIxNiwgMTM3LCA3MSwgNDAsIDIxNSwgMTI4LCA3MSwgNDAsIDIzOSwgCi0gICAgMTcyLCA3MSwgNDAsIDI0OCwgMTcsIDcxLCA0MCwgMjQ3LCAyMywgNzEsIDQwLCAyNDgsIDQ4LCA3MSwgNDAsIDIyNCwgMjYsIAotICAgIDcxLCA0MCwgMjA0LCAxMDEsIDcxLCA0MCwgMjQ2LCA0NywgNzEsIDQwLCAyMDQsIDEyLCA3MSwgNDAsIDI0MywgMTQ5LCA3MSwgCi0gICAgNDAsIDIwNSwgMjE0LCA3MSwgNDAsIDIzOCwgMzEsIDcxLCA0MCwgMjI3LCAyOCwgNzEsIDQwLCAyMzgsIDIxNiwgNzEsIDQwLCAKLSAgICAyMjQsIDE1LCA3MSwgNDAsIDIxMiwgNTYsIDcxLCA0MCwgMjEyLCAyMjgsIDIwOSwgMjQ3LCAyNDgsIDYwLCA3MSwgNDAsIAotICAgIDIxNiwgMTkwLCA3MSwgNDAsIDI0OCwgMjUsIDcxLCA0MCwgMjAzLCAyMTksIDcxLCA0MCwgMjQwLCAxMDIsIDcxLCA0MCwgCi0gICAgMjI3LCAyMjgsIDcxLCA0MCwgMjA5LCAyMjQsIDIyNywgMjI4LCA3MSwgNDAsIDIyNywgMjI0LCA3MSwgNDAsIDIxMSwgMjQwLCAKLSAgICA3MSwgNDAsIDIyNywgMjI5LCA3MSwgNDAsIDIwNCwgMTYsIDcxLCA0MCwgMjM5LCAxOTAsIDcxLCA0MCwgMjQxLCAxNzIsIAotICAgIDcxLCA0MCwgMjM3LCA2NCwgNzEsIDQwLCAyMzksIDEzNiwgNzEsIDQwLCAyMzYsIDQ5LCA3MSwgNDAsIDI0OCwgMTEsIDcxLCAKLSAgICA0MCwgMjA5LCAyMzMsIDcxLCA0MCwgMjM3LCAxNDUsIDcxLCA0MCwgMjQwLCAxNywgNzEsIDQwLCAyMTUsIDMwLCAyMDQsIAotICAgIDEyLCA3MSwgNDAsIDI0NywgMTIsIDcxLCA0MCwgMjM4LCA4OSwgNzEsIDQwLCAyMzksIDI0MywgNzEsIDQwLCAyNDgsIDYwLCAKLSAgICA3MSwgNDAsIDIxNSwgMSwgNzEsIDQwLCAyNDQsIDU4LCA3MSwgNDAsIDIwNCwgMzgsIDcxLCA0MCwgMjM3LCAzNCwgNzEsIAotICAgIDQwLCAyMDMsIDQ0LCA3MSwgNDAsIDIyNCwgMTE1LCA3MSwgNDAsIDI0OCwgNDMsIDcxLCA0MCwgMjQxLCA5OSwgNzEsIDQwLCAKLSAgICAyMzksIDEyMSwgNzEsIDQwLCAyMDgsIDY3LCA3MSwgNDAsIDI0MiwgNDYsIDcxLCA0MCwgMjE2LCAxNzIsIDcxLCA0MCwgCi0gICAgMjIxLCAxNjcsIDcxLCA0MCwgMjQwLCAyMjQsIDcxLCA0MCwgMjA4LCAxNDYsIDcxLCA0MCwgMjQyLCA2MSwgNzEsIDQwLCAKLSAgICAyMDcsIDE3MSwgNzEsIDQwLCAyMzksIDE5MywgMTM5LCAyNDQsIDE4LCAxNjcsIDQ5LCAyMDgsIDE3MywgMjE2LCAxNiwgCi0gICAgMTM5LCAyNDQsIDE4LCAxNjcsIDg3LCAyMDgsIDE3MywgNTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCA0OSwgMjA4LCAxNzMsIAotICAgIDEwMSwgMjUsIDIxNiwgMTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCA4NywgMjA4LCAxNzMsIDEwMSwgMjUsIDU2LCAxMzksIDI0NCwgCi0gICAgMTgsIDE2NywgMjM5LCAxMDIsIDIxMCwgMTg2LCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCA1NSwgCi0gICAgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgNTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgCi0gICAgMjM5LCAxMjAsIDIyNywgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMDYsIDIyMSwgMjI3LCAKLSAgICAyMjIsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDIwNiwgMjIxLCAyMTYsIDE2LCAxMzksIDI0NCwgCi0gICAgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMjYsIDI1MSwgMjI3LCAyMjIsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTksIAotICAgIDIwMiwgMTM5LCAyMTEsIDIyOCwgMTM5LCAyNDUsIDIzMywgMTM5LCAyMzksIDEwMiwgMjExLCA2MSwgMjQzLCAxNDYsIDgyLCAKLSAgICAyMzAsIDE2OSwgMjMxLCAyOSwgMjExLCA5NywgOTcsIDEzOSwgMjMwLCAxOTksIDgyLCAxMzksIDI0NiwgMTIsIDgyLCAxMzksIAotICAgIDQyLCAyMDIsIDg0LCA0OSwgMjUwLCAyMTgsIDE1NSwgNTAsIDI1MCwgMjE4LCAxNTUsIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgCi0gICAgNTAsIDUyLCAyNTAsIDIxOCwgMTU1LCA0OSwgMjQ1LCAxNjYsIDE1NSwgNTAsIDI0NSwgMTY2LCAxNTUsIDQ5LCA2MSwgMjQ1LCAKLSAgICAxNjYsIDE1NSwgNTAsIDYxLCAyNDUsIDE2NiwgMTU1LCA0OSwgNjIsIDIyNywgMTg1LCAxNTUsIDUwLCA2MiwgMjI3LCAxODUsIAotICAgIDE1NSwgMjE4LCAyOSwgODIsIDIzOCwgMTU4LCA4MiwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUwLCAyMDgsIDEzMywgCi0gICAgMjEzLCAzMywgMTU1LCA0OSwgNjEsIDIyNywgMTg1LCAxNTUsIDUwLCA2MSwgMjI3LCAxODUsIDE1NSwgNDksIDYxLCAyMDgsIAotICAgIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgNjEsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDQ5LCA2MSwgNTEsIDE1NSwgNTAsIAotICAgIDYxLCA1MSwgMTU1LCAyMDQsIDc2LCAyNDQsIDE0NCwgMjE2LCA3MywgNTIsIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgNTIsIAotICAgIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgMTI0LCA1MiwgMjE3LCAyMzcsIDIxNywgMzEsIDgyLCAyMTgsIDI5LCAxMzEsIDI0MCwgCi0gICAgMTAyLCAyMzcsIDk3LCAyMjEsIDQ0LCAxMDUsIDIzNywgOTcsIDIyMSwgNDQsIDEwOCwgMjM3LCA5NywgMjIxLCA0NCwgMTQ3LCAKLSAgICAyMzcsIDk3LCAyMjEsIDQ0LCAxNDksIDIzNywgOTcsIDIyMSwgNDQsIDE3MCwgMjM3LCA5NywgMjIxLCA0NCwgMTk1LCAyMzcsIAotICAgIDk3LCAyMjEsIDQ0LCAyMTMsIDExMSwgMjM3LCA5NywgMjIxLCA0NCwgMTk5LCAyMzcsIDk3LCAyMjEsIDQ0LCAyMjIsIDYzLCAKLSAgICAxMzksIDIyNywgMTY3LCAxNDMsIDgyLCAxMzksIDIxNSwgMjQ1LCAxNDMsIDgyLCAxMzksIDI0NCwgMjcsIDE0MywgODIsIAotICAgIDEzOSwgMjQxLCA2NiwgMTQzLCA4MiwgMjgsIDIxMiwgMTIwLCA3MCwgMTQzLCA4MiwgMjgsIDUyLCA3MCwgMTQzLCA4MiwgCi0gICAgMjA0LCA3MiwgMjQ0LCAxNDQsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCA4MiwgODAsIDIzMCwgMywgMjE2LCAxMDEsIDMsIAotICAgIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAxMzEsIDIwNiwgMjIxLCAyMzcsIDEzNywgCi0gICAgODAsIDIzMCwgMywgMjE2LCAxMDEsIDMsIDIwNSwgMTg2LCAyMTEsIDI0MSwgMTMxLCAyMDYsIDIyMSwgMjM3LCAxMzcsIDgwLCAKLSAgICAyMzAsIDMsIDIxNiwgMTAxLCAxMzEsIDIyNiwgMjUxLCAyMzcsIDEzNywgNDMsIDIxOCwgMjksIDgyLCAxMzksIDIwOSwgCi0gICAgMTY0LCAyMjcsIDExNSwgMjQwLCA1MiwgMjEzLCAxMzEsIDk3LCAyMzcsIDk3LCAyMjEsIDQ0LCAyMDksIDE1MiwgMjM3LCAKLSAgICA5NywgMjIxLCA0NCwgMjA3LCAxNTEsIDIzNywgOTcsIDIyMSwgNDQsIDIwOSwgNTMsIDgwLCAxMzksIDIzMCwgMTk5LCA4MiwgCi0gICAgMjI1LCA3MiwgODIsIDIxOSwgNzEsIDI1MCwgMjUxLCA4MiwgMTM5LCA1NywgMjMxLCAzMSwgMTM5LCAxNjIsIDI0MCwgMTAsIAotICAgIDIxMSwgMjI4LCAxNzIsIDEsIDUsIDYzLCAxNzIsIDEsIDYzLCAxNzIsIDEsIDUsIDc1LCAxNzIsIDEsIDc1LCAxNzIsIDEsIAotICAgIDUsIDY4LCAxNzIsIDEsIDY4LCAxNzIsIDEsIDUsIDc0LCAxNzIsIDEsIDc0LCAxNzIsIDEsIDUsIDc4LCAxNzIsIDEsIDc4LCAKLSAgICAxNzIsIDEsIDE3MywgMTcyLCAxLCAyMzksIDgsIDE3MiwgMSwgMjI5LCAxMDAsIDE3MiwgMSwgMjM4LCA4MSwgMTcyLCAxLCAKLSAgICAyMjgsIDIwOSwgMTcyLCAxLCAyMzcsIDIzMCwgMTcyLCAxLCAyMjksIDIwMSwgMTcyLCAxLCAyMzgsIDE5MCwgMTcyLCAxLCAKLSAgICAyMjksIDI2LCAxNzIsIDEsIDIzOCwgMzksIDE3MiwgMSwgMjE1LCAzNiwgMTcyLCAxLCAyMDIsIDExNiwgMTcyLCAxLCAyMTIsIAotICAgIDE2MiwgMTcyLCAxLCAyMDIsIDM5LCAxNzIsIDEsIDIxMSwgMTAsIDE3MiwgMSwgMjAyLCA2LCAxNzIsIDEsIDIxNCwgMTc3LCAKLSAgICAxNzIsIDEsIDIwMiwgOTIsIDE3MiwgMSwgMjEyLCAxMywgMTcyLCAxLCAyMDIsIDE3LCAxNzIsIDEsIDIxMCwgMjIsIDE3MiwgCi0gICAgMSwgMjQ0LCAyMTIsIDE3MiwgMSwgMjA5LCAyLCAxNzIsIDEsIDI0MywgMjMzLCAxNzIsIDEsIDUsIDIwNywgMjAzLCAxNzIsIAotICAgIDEsIDIwNywgMjAzLCAxNzIsIDEsIDI0MiwgNDIsIDE3MiwgMSwgMjA5LCAxODcsIDE3MiwgMSwgMjQ0LCA3NSwgMTcyLCAxLCAKLSAgICAxMzUsIDE3MiwgMSwgMjQzLCAxMTMsIDE3MiwgMSwgMjAxLCAyMDEsIDE3MiwgMSwgMjIyLCAxMDAsIDE3MiwgMSwgMjIxLCAKLSAgICA4NCwgMTcyLCAxLCAyMjIsIDI0MCwgMTcyLCAxLCAyMjEsIDE5MSwgMTcyLCAxLCAxNTIsIDE3MiwgMSwgMjQ5LCAzMiwgCi0gICAgMTcyLCAxLCAxODUsIDE3MiwgMSwgMjM3LCAzLCAxNzIsIDEsIDI0OCwgODYsIDE3MiwgMSwgMjE4LCAxNjcsIDE3MiwgMSwgCi0gICAgMjM2LCAyNiwgMTcyLCAxLCAyNDcsIDE5MywgMTcyLCAxLCAyMTcsIDE5MSwgMTcyLCAxLCAyMzcsIDY3LCAxNzIsIDEsIAotICAgIDI0OCwgMTYyLCAxNzIsIDEsIDIxOSwgMzQsIDE3MiwgMSwgMjM2LCAxMzYsIDE3MiwgMSwgMjQ4LCAyMywgMTcyLCAxLCAKLSAgICAyMTgsIDY5LCAxNzIsIDEsIDE5MiwgMTcyLCAxLCAyMjQsIDE1NSwgMTcyLCAxLCAyMjMsIDI0NiwgMTcyLCAxLCAyMjUsIAotICAgIDIwLCAxNzIsIDEsIDIyNCwgODIsIDE3MiwgMSwgNSwgMTk4LCAxNzIsIDEsIDE5OCwgMTcyLCAxLCA1LCAyMDIsIDIxMywgCi0gICAgMTcyLCAxLCAyMDIsIDIxMywgMTcyLCAxLCA1LCAyMDIsIDI0NywgMTcyLCAxLCAyMDIsIDI0NywgMTcyLCAxLCAyMTYsIAotICAgIDIyMCwgMTcyLCAxLCAyMTYsIDU3LCAxNzIsIDEsIDIxNSwgMTQ1LCAxNzIsIDEsIDIxNiwgMTU4LCAxNzIsIDEsIDIxNSwgCi0gICAgMjI3LCAxNzIsIDEsIDUsIDIwNCwgMTExLCAxNzIsIDEsIDIwNCwgMTExLCAxNzIsIDEsIDIwNCwgMzAsIDE3MiwgMSwgMjA0LCAKLSAgICA2MiwgMTcyLCAxLCAyMDQsIDAsIDE3MiwgMSwgMjIzLCAxNjMsIDE3MiwgMSwgMjA0LCAxNjMsIDE3MiwgMSwgNSwgMTczLCAKLSAgICAxNzIsIDEsIDUsIDIyOSwgMjAxLCAzOSwgMjI5LCAyMjUsIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDM5LCAyMjksIDIyNSwgCi0gICAgMjEzLCAxNDgsIDIxMSwgMjQxLCA4MiwgMjI5LCAyMjUsIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDIyOSwgMjI1LCAyMTMsIAotICAgIDE0OCwgMjExLCAyNDEsIDgyLCAxNzIsIDIzMCwgMTk5LCA4MiwgMTcyLCAyMDUsIDE4NiwgMjMwLCAxOTksIDgyLCAxNzIsIAotICAgIDI0MywgMTkyLCAyMDIsIDIyOCwgMjI5LCAyMjUsIDUyLCAyMzUsIDIyMCwgNjcsIDEsIDUsIDYzLCA2NywgMSwgNjMsIDY3LCAKLSAgICAxLCA1LCA3NSwgNjcsIDEsIDc1LCA2NywgMSwgNSwgNjgsIDY3LCAxLCA2OCwgNjcsIDEsIDUsIDc0LCA2NywgMSwgNzQsIAotICAgIDY3LCAxLCA1LCA3OCwgNjcsIDEsIDc4LCA2NywgMSwgMTczLCA2NywgMSwgMjM5LCA4LCA2NywgMSwgMjI5LCAxMDAsIDY3LCAKLSAgICAxLCAyMzgsIDgxLCA2NywgMSwgMjI4LCAyMDksIDY3LCAxLCAyMzcsIDIzMCwgNjcsIDEsIDIyOSwgMjAxLCA2NywgMSwgCi0gICAgMjM4LCAxOTAsIDY3LCAxLCAyMjksIDI2LCA2NywgMSwgMjM4LCAzOSwgNjcsIDEsIDIxNSwgMzYsIDY3LCAxLCAyMDIsIAotICAgIDExNiwgNjcsIDEsIDIxMiwgMTYyLCA2NywgMSwgMjAyLCAzOSwgNjcsIDEsIDIxMSwgMTAsIDY3LCAxLCAyMDIsIDYsIDY3LCAKLSAgICAxLCAyMTQsIDE3NywgNjcsIDEsIDIwMiwgOTIsIDY3LCAxLCAyMTIsIDEzLCA2NywgMSwgMjAyLCAxNywgNjcsIDEsIDIxMCwgCi0gICAgMjIsIDY3LCAxLCAyNDQsIDIxMiwgNjcsIDEsIDIwOSwgMiwgNjcsIDEsIDI0MywgMjMzLCA2NywgMSwgNSwgMjA3LCAyMDMsIAotICAgIDY3LCAxLCAyMDcsIDIwMywgNjcsIDEsIDI0MiwgNDIsIDY3LCAxLCAyMDksIDE4NywgNjcsIDEsIDI0NCwgNzUsIDY3LCAxLCAKLSAgICAxMzUsIDY3LCAxLCAyNDMsIDExMywgNjcsIDEsIDIwMSwgMjAxLCA2NywgMSwgMjIyLCAxMDAsIDY3LCAxLCAyMjEsIDg0LCAKLSAgICA2NywgMSwgMjIyLCAyNDAsIDY3LCAxLCAyMjEsIDE5MSwgNjcsIDEsIDE1MiwgNjcsIDEsIDI0OSwgMzIsIDY3LCAxLCAxODUsIAotICAgIDY3LCAxLCAyMzcsIDMsIDY3LCAxLCAyNDgsIDg2LCA2NywgMSwgMjE4LCAxNjcsIDY3LCAxLCAyMzYsIDI2LCA2NywgMSwgCi0gICAgMjQ3LCAxOTMsIDY3LCAxLCAyMTcsIDE5MSwgNjcsIDEsIDIzNywgNjcsIDY3LCAxLCAyNDgsIDE2MiwgNjcsIDEsIDIxOSwgCi0gICAgMzQsIDY3LCAxLCAyMzYsIDEzNiwgNjcsIDEsIDI0OCwgMjMsIDY3LCAxLCAyMTgsIDY5LCA2NywgMSwgMTkyLCA2NywgMSwgCi0gICAgMjI0LCAxNTUsIDY3LCAxLCAyMjMsIDI0NiwgNjcsIDEsIDIyNSwgMjAsIDY3LCAxLCAyMjQsIDgyLCA2NywgMSwgNSwgMTk4LCAKLSAgICA2NywgMSwgMTk4LCA2NywgMSwgNSwgMjAyLCAyMTMsIDY3LCAxLCAyMDIsIDIxMywgNjcsIDEsIDUsIDIwMiwgMjQ3LCA2NywgCi0gICAgMSwgMjAyLCAyNDcsIDY3LCAxLCAyMTYsIDIyMCwgNjcsIDEsIDIxNiwgNTcsIDY3LCAxLCAyMTUsIDE0NSwgNjcsIDEsIAotICAgIDIxNiwgMTU4LCA2NywgMSwgMjE1LCAyMjcsIDY3LCAxLCA1LCAyMDQsIDExMSwgNjcsIDEsIDIwNCwgMTExLCA2NywgMSwgCi0gICAgMjA0LCAzMCwgNjcsIDEsIDIwNCwgNjIsIDY3LCAxLCAyMDQsIDAsIDY3LCAxLCAyMjMsIDE2MywgNjcsIDEsIDIwNCwgMTYzLCAKLSAgICA2NywgMSwgNSwgMTczLCA2NywgMSwgNSwgMjI5LCAyMDEsIDY3LCAxLCAyMDYsIDg2LCA2NywgMSwgMjA1LCAyMzAsIDY3LCAKLSAgICAxLCAyMDYsIDU1LCA2NywgMSwgMjA1LCAxODksIDY3LCAxMDEsIDI0MywgODUsIDIyOSwgMjI1LCAyMTcsIDIxNSwgMjExLCAKLSAgICAyNDEsIDgyLCA2NywgMjMwLCAxOTksIDgyLCA2NywgMjA1LCAxODYsIDIzMCwgMTk5LCA4MiwgNjcsIDI0MywgMTkyLCAyMjgsIAotICAgIDI0OSwgMjQ4LCAxLCAxLCAyNDksIDI1NSwgMjQ4LCAxLCAxLCAyMTksIDE4NCwgMjQ4LCAxLCAxLCAyMjYsIDE4NSwgMjQ4LCAKLSAgICAxLCAxLCAyNDAsIDE3NCwgMjQ4LCAxLCAxLCAyNDUsIDUxLCAyNDgsIDEsIDEsIDIxMCwgNjksIDI0OCwgMSwgMSwgMjIzLCAKLSAgICAxNjMsIDI0OCwgMSwgMSwgMTU5LCAyNDgsIDEsIDEsIDIzOSwgNzUsIDI0OCwgMSwgMSwgMjMwLCA1NCwgMjQ4LCAxLCAxLCAKLSAgICAyMzcsIDE3MSwgMjQ4LCAxLCAxLCAyMzAsIDE4NCwgMjQ4LCAxLCAxLCAyMTcsIDEzNCwgMjQ4LCAxLCAxLCAyMDMsIDE5NiwgCi0gICAgMjQ4LCAxLCAxLCAyMDIsIDgxLCAyNDgsIDEsIDEsIDI0NiwgMjAwLCAyNDgsIDEsIDEsIDIxMywgOTIsIDI0OCwgMSwgMSwgCi0gICAgMTQ2LCAyNDgsIDEsIDEsIDIwMiwgMTU5LCAyNDgsIDEsIDEsIDI0NywgMTI1LCAyNDgsIDEsIDEsIDE5NCwgMjQ4LCAxLCAxLCAKLSAgICA2MywgMjQ4LCAxLCAxLCA3OCwgMjQ4LCAxLCAxLCA3NCwgMjQ4LCAxLCAxLCAyNDEsIDE0NywgMjQ4LCAxLCAxLCAyNTEsIAotICAgIDY0LCAyNDgsIDEsIDEsIDI0MSwgMTQ1LCAyNDgsIDEsIDEsIDI1MCwgMzQsIDI0OCwgMSwgMSwgMjE5LCAyMTYsIDI0OCwgMSwgCi0gICAgMSwgMjUwLCAyMzEsIDI0OCwgMSwgMSwgMjQxLCA5MiwgMjQ4LCAxLCAxLCAyNTAsIDIyMywgMjQ4LCAxLCAxLCAyNDEsIDc4LCAKLSAgICAyNDgsIDEsIDEsIDI0MSwgMjgsIDI0OCwgMSwgMSwgNzUsIDI0OCwgMSwgMSwgNjgsIDI0OCwgMSwgMSwgMjMwLCAxOTcsIAotICAgIDI0OCwgMSwgMSwgMjA2LCAxNjQsIDI0OCwgMSwgMSwgMjIyLCAyMDUsIDI0OCwgMSwgMSwgMjM4LCA0MywgMjQ4LCAxLCAxLCAKLSAgICAyMzEsIDg0LCAyOCwgMSwgMjI5LCA1OSwgMjgsIDEsIDIxMSwgMTU2LCAyOCwgMSwgMjI5LCA1MiwgMjgsIDEsIDIyMiwgOTMsIAotICAgIDI4LCAxLCAyMjIsIDkxLCAyOCwgMSwgMjIyLCA5MCwgMjgsIDEsIDIwOCwgMjQwLCAyOCwgMSwgMjExLCAxNDUsIDI4LCAxLCAKLSAgICAyMTYsIDQ3LCAyOCwgMSwgMjE2LCA0MiwgMjgsIDEsIDIxNiwgMzksIDI4LCAxLCAyMTYsIDMyLCAyOCwgMSwgMjE2LCAyNywgCi0gICAgMjgsIDEsIDIxNiwgMjIsIDI4LCAxLCAyMTYsIDMzLCAyOCwgMSwgMjE2LCA0NSwgMjgsIDEsIDIyNCwgMTQxLCAyOCwgMSwgCi0gICAgMjE4LCAxNTMsIDI4LCAxLCAyMTEsIDE1MywgMjgsIDEsIDIxOCwgMTQyLCAyOCwgMSwgMjEyLCAxMTEsIDI4LCAxLCAyMTEsIAotICAgIDE1MCwgMjgsIDEsIDIzMSwgMTA2LCAyOCwgMSwgMjQ2LCA3NCwgMjgsIDEsIDIxMSwgMTYwLCAyOCwgMSwgMjQ2LCAxMzgsIAotICAgIDI4LCAxLCAyMjksIDEyMCwgMjgsIDEsIDIwOSwgNjYsIDI4LCAxLCAyMTgsIDE5MCwgMjgsIDEsIDIzNiwgMjUxLCAyOCwgMSwgCi0gICAgNjMsIDI4LCAxLCAyNTEsIDEwOSwgMjgsIDEsIDE5OCwgMjgsIDEsIDIwMywgOTksIDI4LCAxLCAyNDEsIDU1LCAyOCwgMSwgCi0gICAgNzQsIDI4LCAxLCAyMDMsIDM5LCAyOCwgMSwgMjAzLCA1MiwgMjgsIDEsIDc4LCAyOCwgMSwgMjA0LCAxMTEsIDI4LCAxLCAKLSAgICAyMDQsIDEwNywgMjgsIDEsIDIyMCwgNzMsIDI4LCAxLCAyMDIsIDI0NywgMjgsIDEsIDY4LCAyOCwgMSwgMjA0LCA0OCwgMjgsIAotICAgIDEsIDIwNCwgNjIsIDI4LCAxLCAyMDQsIDMwLCAyOCwgMSwgMjAyLCAyMTMsIDI4LCAxLCAyNDAsIDIzOCwgMjgsIDEsIDIwMywgCi0gICAgMTEsIDI4LCAxLCA3NSwgMjgsIDI0MCwgNywgMjgsIDEsIDIxMSwgMTU0LCAyOCwgMSwgMjIyLCA4MywgMjgsIDEsIDIyMiwgCi0gICAgODUsIDI4LCAxLCAyMjIsIDg4LCAyOCwgMSwgMjE2LCA0MCwgMjgsIDEsIDIxNiwgMjEsIDI4LCAxLCAyMTYsIDI5LCAyOCwgCi0gICAgMSwgMjE2LCAzNCwgMjgsIDEsIDIxNiwgMTksIDI4LCAxLCAyMjQsIDEzNCwgMjgsIDEsIDIyNCwgMTMxLCAyOCwgMSwgMjI0LCAKLSAgICAxMzUsIDI4LCAxLCAyMjksIDI0NiwgMjgsIDEsIDIxOCwgMTQ4LCAyOCwgMSwgMjE4LCAxMzQsIDI4LCAxLCAyMTgsIDE0MCwgCi0gICAgMjgsIDEsIDIxOCwgMTM3LCAyOCwgMSwgMjE4LCAxNTEsIDI4LCAxLCAyMTgsIDEzNSwgMjgsIDEsIDIyOSwgMjQ0LCAyOCwgCi0gICAgMSwgMjI5LCAyNDIsIDI4LCAxLCAyMTIsIDEwNCwgMjgsIDEsIDIxMiwgMTAyLCAyOCwgMSwgMjEyLCA5NCwgMjgsIDEsIAotICAgIDIxMiwgOTksIDI4LCAxLCAyMTIsIDEwOSwgMjgsIDEsIDIxOSwgMTA3LCAyOCwgMSwgMjExLCAxNTcsIDI4LCAxLCAyMDMsIAotICAgIDI5LCAyOCwgMSwgMjAzLCAyNSwgMjgsIDEsIDIwMywgMjYsIDI4LCAxLCAyMjksIDI0NSwgMjgsIDEsIDIxMSwgMTU4LCAyOCwgCi0gICAgMSwgMjAzLCAzNSwgMjgsIDEsIDIwMiwgMjQxLCAyOCwgMSwgMjAyLCAyNDAsIDI4LCAxLCAyMDIsIDI0MywgMjgsIDEsIAotICAgIDIwMiwgMjA0LCAyOCwgMSwgMjAyLCAyMDUsIDI4LCAxLCAyMDIsIDIwOCwgMjgsIDEsIDI1MCwgMTM3LCAyOCwgMSwgMjUwLCAKLSAgICAxMzEsIDEzOSwgMjUwLCAyMDUsIDIyNywgMTAzLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjE2LCA3NCwgODIsIDEzOSwgMjUwLCAKLSAgICAyMDUsIDExOCwgODIsIDEzOSwgMjUwLCAyMDUsIDEyMCwgODIsIDEzOSwgMjUwLCAyMDUsIDEyNiwgODIsIDEzOSwgMjUwLCAKLSAgICAyMDUsIDIzOSwgMTQ3LCA4MiwgMTM5LCAyNTAsIDIwNSwgMjA4LCAxNDUsIDgyLCAxMzksIDI1MCwgMjA1LCAxMDEsIDgyLCAKLSAgICAxMzksIDI1MCwgMjA1LCAyNDcsIDI0OCwgODIsIDEzOSwgMjUwLCAyMDUsIDIzOSwgMjQ1LCA4MiwgMTM5LCAyNTAsIDIwNSwgCi0gICAgMjE0LCAxNzEsIDgyLCAxMzksIDI1MCwgMjA1LCAyMDksIDYxLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjM5LCAxNDAsIDgyLCAKLSAgICAxMzksIDI1MCwgMjA1LCAyMzcsIDUyLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjQxLCAxODAsIDgyLCAxMzksIDI1MCwgMjA1LCAKLSAgICAyMjUsIDEyMywgODIsIDI0OCwgMSwgMSwgMjQ3LCAxOTMsIDI0OCwgMSwgMSwgMjAyLCAzOSwgMjQ4LCAxLCAxLCAyMzAsIAotICAgIDE0MSwgMjQ4LCAxLCAxLCAyMzcsIDIzMCwgMjQ4LCAxLCAxLCAyNDEsIDE2MSwgMjQ4LCAxLCAxLCAyNDEsIDc1LCAyNDgsIAotICAgIDEsIDEsIDIyMCwgMTgsIDI0OCwgMSwgMSwgMjIwLCAyMiwgMjQ4LCAxLCAxLCAyMzAsIDIyNCwgMjQ4LCAxLCAxLCAyNTAsIAotICAgIDIwNywgMjQ4LCAxLCAxLCAyMzEsIDE2LCAyNDgsIDEsIDEsIDIwNiwgMjI5LCAyNDgsIDEsIDEsIDIzMSwgNjYsIDI0OCwgMSwgCi0gICAgMSwgMjIyLCAxODMsIDI0OCwgMSwgMSwgMjUxLCA1OCwgMjQ4LCAxLCAxLCAyNTAsIDI5LCAyNDgsIDEsIDEsIDI1MCwgMjQ3LCAKLSAgICAyNDgsIDEsIDEsIDIyMCwgMzksIDI0OCwgMSwgMSwgMjIwLCAyNCwgMjQ4LCAxLCAxLCAyMzEsIDEzLCAyNDgsIDEsIDQ2LCAKLSAgICAxLCAyMTksIDE4NCwgMjQ4LCAxLCA0NiwgMSwgMjEwLCA2OSwgMjQ4LCAxLCA0NiwgMSwgMjMwLCA1NCwgMjQ4LCAxLCA0NiwgCi0gICAgMSwgMjM3LCAxNzEsIDI0OCwgMSwgMSwgMjM4LCAxMjAsIDI0OCwgMSwgMSwgMjI3LCAxNjIsIDI0OCwgMSwgMSwgMjAxLCAKLSAgICAyNDIsIDEyLCAyMTEsIDMyLCAyMTAsIDY5LCAxMiwgMjExLCAzMiwgMjA0LCA0MSwgMTIsIDIxMSwgMzIsIDIwMywgMTcxLCAKLSAgICAxMiwgMjExLCAzMiwgMjQ3LCAxMzgsIDEyLCAyMTEsIDMyLCAyMTAsIDE3MywgMTIsIDIxMSwgMzIsIDIzNSwgMjEwLCAxMiwgCi0gICAgMjExLCAzMiwgMjM1LCAyMTQsIDEyLCAyMTEsIDMyLCAyMzYsIDM1LCAxMiwgMjExLCAzMiwgMjM1LCAyMTEsIDEyLCAyMTEsIAotICAgIDMyLCAyMTAsIDcyLCAxMiwgMjExLCAzMiwgMjM1LCAyMTMsIDEyLCAyMTEsIDMyLCAyMzUsIDIwOSwgMTIsIDIxMSwgMzIsIAotICAgIDIzNiwgMzMsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMiwgMTIsIDIxMSwgMzIsIDIzNSwgMjA4LCAxMiwgMjExLCAzMiwgMjIzLCAKLSAgICAxNjMsIDEyLCAyMTEsIDMyLCAyMzcsIDE3MSwgMTIsIDIxMSwgMzIsIDE5NCwgMTIsIDIxMSwgMzIsIDIxOSwgMTg0LCAxMiwgCi0gICAgMjExLCAzMiwgMjExLCAyMzEsIDEyLCAyMTEsIDMyLCAyNDUsIDUxLCAxMiwgMjExLCAzMiwgMjM1LCAyMTUsIDEyLCAyMTEsIAotICAgIDMyLCAyMzcsIDEzLCAxMiwgMjExLCAzMiwgMjEwLCA4MSwgMTIsIDIxMSwgMzIsIDIxMCwgMTUyLCAxMiwgMjExLCAzMiwgCi0gICAgMjExLCAxMDgsIDEyLCAyMTEsIDMyLCAyMTMsIDk4LCAxMiwgMjExLCAzMiwgMjE5LCAzOCwgMTIsIDIxMSwgMzIsIDIxNywgCi0gICAgMTM2LCAxMiwgMjExLCAzMiwgMjA4LCAxNzQsIDEyLCAyMTEsIDMyLCAyMTAsIDcxLCAxMiwgMjExLCAzMiwgMjEwLCAxNjMsIAotICAgIDEyLCAyMTEsIDMyLCAyMzUsIDIyMywgMTIsIDIxMSwgMzIsIDIzNSwgMjA3LCAxMiwgMjExLCAzMiwgMjE4LCAyMTAsIDEyLCAKLSAgICAyMTEsIDMyLCAyMTcsIDEzNCwgNjcsIDEsIDUsIDIyOCwgMjA5LCA2NywgMSwgNSwgMjEyLCAxNjIsIDY3LCAxLCA1LCAyMTEsIAotICAgIDEwLCA2NywgMSwgNSwgMTM1LCA2NywgMSwgNSwgMjIxLCA4NCwgNjcsIDEsIDUsIDE1MiwgNjcsIDEsIDUsIDIzNywgMywgCi0gICAgNjcsIDEsIDUsIDIzNiwgMjYsIDY3LCAxLCA1LCAyMzcsIDY3LCA2NywgMSwgNSwgMjM2LCAxMzYsIDY3LCAxLCA1LCAyMjMsIAotICAgIDI0NiwgNjcsIDEsIDUsIDIxNiwgMjIwLCA2NywgMSwgNSwgMjE2LCA1NywgNjcsIDEsIDUsIDIxNSwgMTQ1LCA2NywgMSwgNSwgCi0gICAgMjE2LCAxNTgsIDY3LCAxLCA1LCAyMTUsIDIyNywgMTAyLCAyOCwgMjI5LCA1OSwgMTAyLCAyOCwgMjIyLCA5MywgMTAyLCAKLSAgICAyOCwgMjA4LCAyNDAsIDEwMiwgMjgsIDIxNiwgNDcsIDEwMiwgMjgsIDIyNCwgMTQxLCAxMDIsIDI4LCAyMTgsIDE1MywgCi0gICAgMTAyLCAyOCwgMjEyLCAxMTEsIDEwMiwgMjgsIDIzMSwgMTA2LCAxMDIsIDI4LCAyNDYsIDc0LCAxMDIsIDI4LCAyNDYsIAotICAgIDEzOCwgMTAyLCAyOCwgMjI5LCAxMjAsIDEwMiwgMjgsIDIwOSwgNjYsIDEwMiwgMjgsIDIxOCwgMTkwLCAxMDIsIDI4LCAKLSAgICAyMzYsIDI1MSwgMTAyLCAyOCwgMjI5LCA2MCwgNjMsIDEwMiwgMjgsIDIyMiwgOTQsIDYzLCAxMDIsIDI4LCAyMDgsIDI0MSwgCi0gICAgNjMsIDEwMiwgMjgsIDIxNiwgNDgsIDYzLCAxMDIsIDI4LCAyMjQsIDE0MiwgNjMsIDEwMiwgMjgsIDIxOCwgMTU0LCA2MywgCi0gICAgMTAyLCAyOCwgMjEyLCAxMTIsIDYzLCAxMDIsIDI4LCAyMzEsIDEwNywgNjMsIDEwMiwgMjgsIDI0NiwgNzUsIDYzLCAxMDIsIAotICAgIDI4LCAyNDYsIDEzOSwgNjMsIDEwMiwgMjgsIDIyOSwgMTIxLCA2MywgMTAyLCAyOCwgMjA5LCA2NywgNjMsIDEwMiwgMjgsIAotICAgIDIxOCwgMTkxLCA2MywgMTAyLCAyOCwgMjM2LCAyNTIsIDYzLCAxMDIsIDI4LCAyNDYsIDc1LCA2OCwgMTAyLCAyMjgsIDI1MywgCi0gICAgMTY3LCAyMjAsIDU0LCAxMDIsIDIyOCwgMjUzLCAxNjcsIDE1OCwgMjM2LCAyNiwgMTAyLCAxODksIDEwNSwgMTAyLCAxODksIAotICAgIDEwOCwgMTAyLCAxODksIDE0NywgMTAyLCAxODksIDE0OSwgMTAyLCAxODksIDE3MCwgMTAyLCAxODksIDE5NSwgMTAyLCAKLSAgICAxODksIDIxMywgMTExLCAxMDIsIDE4OSwgMTk5LCAxMDIsIDE4OSwgMjIyLCA2MywgMTAyLCAxODksIDIwOSwgMTUyLCAxMDIsIAotICAgIDE4OSwgMjI0LCAyOSwgMTAyLCAxODksIDIzOSwgMjQ5LCAxMDIsIDE4OSwgMjA0LCA4MCwgMTAyLCAxODksIDIwMywgMjQzLCAKLSAgICAxMDIsIDE4OSwgMjI0LCAyMjAsIDEwMiwgMTg5LCAyNDEsIDE3OSwgMTAyLCAxODksIDIxMCwgMjE0LCAxMDIsIDE4OSwgCi0gICAgMjExLCA2NCwgMTAyLCAxODksIDIzNywgNzQsIDEwMiwgMTg5LCAyMTIsIDksIDEwMiwgMTg5LCAyMjMsIDg0LCAxMDIsIAotICAgIDE4OSwgMjExLCAyMTMsIDEwMiwgMTg5LCAyNDAsIDQsIDEwMiwgMTg5LCAyNDUsIDIxMSwgMTAyLCAxODksIDIyOCwgMTAyLCAKLSAgICAxMDIsIDE4OSwgMjE2LCA5NSwgMTAyLCAxODksIDI0NywgNzEsIDEwMiwgMTg5LCAyMTEsIDE0LCAxMDIsIDE4OSwgMjEwLCAKLSAgICAxOTYsIDEwMiwgMTg5LCAyNDEsIDY1LCAxMDIsIDE4OSwgMjE2LCA4NywgMTAyLCAxODksIDI1MSwgMTAsIDEwMiwgMTg5LCAKLSAgICAyNDAsIDMzLCAxMDIsIDE4OSwgMjE2LCA4NSwgMTAyLCAxODksIDIxMywgMTQ5LCAxMDIsIDE4OSwgMjE2LCAxNTcsIDQzLCAKLSAgICAxODksIDIxNywgNDYsIDQzLCAxODksIDIyOSwgODMsIDQzLCAxODksIDIxNCwgMTk1LCA0MywgMTg5LCAyMjgsIDI0OSwgNDMsIAotICAgIDQyLCAyMDksIDE1MywgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIwNywgMTUyLCAyMjAsIDMyLCA2MiwgMjExLCAKLSAgICAxNzcsIDQzLCA0MiwgMjA5LCA1NCwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIzOSwgMTU0LCAyMjAsIDMyLCAKLSAgICA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjQwLCAxOSwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIxMiwgNzUsIAotICAgIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMTMsIDEwNiwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIAotICAgIDI0MSwgMTM1LCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDIxOSwgNjcsIDU0LCA0MywgNDIsIDIwNywgMTUyLCAxMDUsIDQzLCAKLSAgICA0MiwgMjA3LCAxNTIsIDEwOCwgNDMsIDQyLCAyMDcsIDE1MiwgMTQ3LCA0MywgNDIsIDIwNywgMTUyLCAxNDksIDQzLCA0MiwgCi0gICAgMjA3LCAxNTIsIDE3MCwgNDMsIDQyLCAyMDcsIDE1MiwgMTk1LCA0MywgNDIsIDIwNywgMTUyLCAyMTMsIDExMSwgNDMsIDQyLCAKLSAgICAyMDcsIDE1MiwgMTk5LCA0MywgNDIsIDIwNywgMTUyLCAyMjIsIDYzLCA0MywgNDIsIDIwOSwgNTMsIDQzLCA0MiwgMjA5LCAKLSAgICA1NCwgMTA1LCA0MywgNDIsIDIwOSwgNTQsIDEwOCwgNDMsIDQyLCAyMDksIDU0LCAxNDcsIDQzLCA0MiwgMjA5LCA1NCwgCi0gICAgMTQ5LCA0MywgNDIsIDIwOSwgNTQsIDE3MCwgNDMsIDI4LCAyMjksIDU5LCA0MywgMjgsIDIyMiwgOTMsIDQzLCAyOCwgMjA4LCAKLSAgICAyNDAsIDQzLCAyOCwgMjE2LCA0NywgNDMsIDI4LCAyMjQsIDE0MSwgNDMsIDI4LCAyMTgsIDE1MywgNDMsIDI4LCAyMTIsIAotICAgIDExMSwgNDMsIDI4LCAyMzEsIDEwNiwgNDMsIDI4LCAyNDYsIDc0LCA0MywgMjgsIDI0NiwgMTM4LCA0MywgMjgsIDIyOSwgCi0gICAgMTIwLCA0MywgMjgsIDIwOSwgNjYsIDQzLCAyOCwgMjE4LCAxOTAsIDQzLCAyOCwgMjM2LCAyNTEsIDQzLCAyOCwgMjI5LCAKLSAgICA2MCwgNjMsIDQzLCAyOCwgMjIyLCA5NCwgNjMsIDQzLCAyOCwgMjA4LCAyNDEsIDYzLCA0MywgMjgsIDIxNiwgNDgsIDYzLCAKLSAgICA0MywgMjgsIDIyNCwgMTQyLCA2MywgNDMsIDI4LCAyMTgsIDE1NCwgNjMsIDQzLCAyOCwgMjEyLCAxMTIsIDYzLCA0MywgMjgsIAotICAgIDIzMSwgMTA3LCA2MywgNDMsIDI4LCAyNDYsIDc1LCA2MywgNDMsIDI4LCAyNDYsIDEzOSwgNjMsIDQzLCAyOCwgMjI5LCAKLSAgICAxMjEsIDYzLCA0MywgMjgsIDIwOSwgNjcsIDYzLCA0MywgMjgsIDIxOCwgMTkxLCA2MywgNDMsIDI4LCAyMzYsIDI1MiwgNjMsIAotICAgIDQzLCAyMjgsIDI1MywgMTY3LCAyNDYsIDE4OSwgNDMsIDIyOCwgMjUzLCAxNjcsIDIzMCwgNzgsIDQzLCAyOCwgMjMxLCAKLSAgICAxMDcsIDY4LCAyMjgsIDI1MywgMjExLCA5NywgOTcsIDQzLCAxODksIDEwNSwgNDMsIDE4OSwgMTA4LCA0MywgMTg5LCAxNDcsIAotICAgIDQzLCAxODksIDE0OSwgNDMsIDE4OSwgMTcwLCA0MywgMTg5LCAxOTUsIDQzLCAxODksIDIxMywgMTExLCA0MywgMTg5LCAKLSAgICAxOTksIDQzLCAxODksIDIyMiwgNjMsIDQzLCAxODksIDIwOSwgMTUyLCA0MywgMTg5LCAyMjQsIDI5LCA0MywgMTg5LCAyMzksIAotICAgIDI0OSwgNDMsIDE4OSwgMjA0LCA4MCwgNDMsIDE4OSwgMjAzLCAyNDMsIDQzLCAxODksIDIyNCwgMjIwLCA0MywgMTg5LCAKLSAgICAyNDEsIDE3OSwgNDMsIDE4OSwgMjEwLCAyMTQsIDQzLCAxODksIDIxMSwgNjQsIDQzLCAxODksIDIzNywgNzQsIDQzLCAxODksIAotICAgIDIxMiwgOSwgNDMsIDE4OSwgMjIzLCA4NCwgNDMsIDE4OSwgMjExLCAyMTMsIDQzLCAxODksIDI0MCwgNCwgNDMsIDE4OSwgCi0gICAgMjQ1LCAyMTEsIDQzLCAxODksIDIyOCwgMTAyLCA0MywgMTg5LCAyMTQsIDE2OSwgNDMsIDE4OSwgMjI1LCAxMjYsIDQzLCAKLSAgICAxODksIDI0MCwgNDIsIDQzLCAxODksIDIxMCwgMjI2LCA0MywgMTg5LCAyNDAsIDIxNiwgNDMsIDE4OSwgMjE3LCAyMzMsIAotICAgIDQzLCAxODksIDI1MCwgMzgsIDQzLCAxODksIDIzMCwgMjAwLCA0MywgMTg5LCAyMTYsIDg1LCA0MywgMTg5LCAyNDUsIDE3MCwgCi0gICAgNDMsIDE4OSwgMjQ1LCAxNjAsIDQzLCAxODksIDIzNiwgMjQ0LCA0MywgMTg5LCAyNDYsIDIxNywgNDMsIDE4OSwgMjI3LCAwLCAKLSAgICA0MywgMTg5LCAyMjcsIDIyMiwgNDMsIDE4OSwgMjE2LCAxNiwgNDMsIDE4OSwgMjI1LCAxMSwgNDMsIDE4OSwgMjE2LCAxMTIsIAotICAgIDQzLCAxODksIDIxMSwgMTQsIDQzLCAxODksIDIxMCwgMTk2LCA0MywgMTg5LCAyNDEsIDY1LCA0MywgMTg5LCAyMTYsIDg3LCAKLSAgICA0MywgMTg5LCAyNTEsIDEwLCA0MywgMTg5LCAyMjIsIDc5LCA0MywgNDIsIDIwOSwgNTQsIDE5NSwgNDMsIDQyLCAyMDksIAotICAgIDU0LCAyMTMsIDExMSwgNDMsIDQyLCAyMDksIDU0LCAxOTksIDQzLCA0MiwgMjA5LCA1NCwgMjIyLCA2MywgNDMsIDQyLCAKLSAgICAyMzksIDE1MywgNDMsIDQyLCAyMzksIDE1NCwgMTA1LCA0MywgNDIsIDIzOSwgMTU0LCAxMDgsIDQzLCA0MiwgMjM5LCAxNTQsIAotICAgIDE0NywgNDMsIDQyLCAyMzksIDE1NCwgMTQ5LCA0MywgNDIsIDIzOSwgMTU0LCAxNzAsIDQzLCA0MiwgMjM5LCAxNTQsIDE5NSwgCi0gICAgNDMsIDQyLCAyMzksIDE1NCwgMjEzLCAxMTEsIDQzLCA0MiwgMjM5LCAxNTQsIDE5OSwgNDMsIDQyLCAyMzksIDE1NCwgMjIyLCAKLSAgICA2MywgNDMsIDQyLCAyNDAsIDE4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgMTcxLCAxMzksIDIwOSwgMTY0LCAxNiwgCi0gICAgMzUsIDI0MCwgNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjI1LCA5NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNTAsIAotICAgIDE1MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjUsIDYzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgNzYsIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjMwLCA3NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNTAsIDMwLCAxMzksIDIwOSwgMTY0LCAKLSAgICAxNiwgMzUsIDIxMywgMTI5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyMCwgNzksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjIxLCAxNTMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCA3MCwgNTEsIDIzNywgMTMsIDUxLCAyNDEsIDI0LCA1MSwgCi0gICAgMjQwLCAyMjYsIDIyNywgMTIwLCAyMjcsIDE0NywgNTQsIDQzLCA2NywgNjMsIDQzLCA2NywgNzUsIDQzLCA2NywgNjgsIDQzLCAKLSAgICA2NywgNzQsIDQzLCA2NywgNzgsIDQzLCA2NywgMTczLCA0MywgNjcsIDIyOSwgMTAwLCA0MywgNjcsIDIyOCwgMjA5LCA0MywgCi0gICAgNjcsIDIyOSwgMjAxLCA0MywgNjcsIDIyOSwgMjYsIDQzLCA2NywgMjE1LCAzNiwgNDMsIDY3LCAyMTIsIDE2MiwgNDMsIDY3LCAKLSAgICAyMTEsIDEwLCA0MywgNjcsIDIxNCwgMTc3LCA0MywgNjcsIDIxMiwgMTMsIDQzLCA2NywgMjEwLCAyMiwgNDMsIDY3LCAyMDksIAotICAgIDIsIDQzLCA2NywgMjA3LCAyMDMsIDQzLCA2NywgMjA5LCAxODcsIDQzLCA2NywgMTM1LCA0MywgNjcsIDIwMSwgMjAxLCA0MywgCi0gICAgNjcsIDIyMiwgMTAwLCA0MywgNjcsIDIyMSwgODQsIDQzLCA2NywgMjIyLCAyNDAsIDQzLCA2NywgMjIxLCAxOTEsIDQzLCAKLSAgICA2NywgMTUyLCA0MywgNjcsIDIzNywgMywgNDMsIDY3LCAyMzYsIDI2LCA0MywgNjcsIDIzNywgNjcsIDQzLCA2NywgMjM2LCAKLSAgICAxMzYsIDQzLCA2NywgMTkyLCA0MywgNjcsIDIyNCwgMTU1LCA0MywgNjcsIDIyMywgMjQ2LCA0MywgNjcsIDIyNSwgMjAsIAotICAgIDQzLCA2NywgMjI0LCA4MiwgNDMsIDY3LCAxOTgsIDQzLCA2NywgMjAyLCAyMTMsIDQzLCA2NywgMjAyLCAyNDcsIDQzLCA2NywgCi0gICAgMjE2LCAyMjAsIDQzLCA2NywgMjE2LCA1NywgNDMsIDY3LCAyMTUsIDE0NSwgNDMsIDY3LCAyMTYsIDE1OCwgNDMsIDY3LCAKLSAgICAyMTUsIDIyNywgNDMsIDY3LCAyMDQsIDExMSwgNDMsIDY3LCAyMDQsIDMwLCA0MywgNjcsIDIwNCwgNjIsIDQzLCA2NywgCi0gICAgMjA0LCAwLCA1MSwgMjUwLCAxNzQsIDUxLCAyNTAsIDgzLCA1MSwgMjUwLCAyMDEsIDUxLCAyNTEsIDIzOSwgNTEsIDIzMSwgCi0gICAgMTgsIDUxLCAyMzAsIDI0MiwgNTEsIDIwNiwgMjI3LCA1MSwgMjQwLCAyNTMsIDUxLCAyNDEsIDE1OCwgNTEsIDIyMCwgMjEsIAotICAgIDUxLCAyMjAsIDE0LCA1MSwgMjMwLCAxNiwgNTEsIDIyOSwgMjM4LCA1MSwgMjI5LCAyMzUsIDUxLCAyMzgsIDIyMCwgNTEsIAotICAgIDIzOCwgMjI5LCA1MSwgMjM4LCA3MCwgNTEsIDIzOCwgNjYsIDUxLCAyMjgsIDEzMiwgNTEsIDIzOCwgNTgsIDUxLCAyMjksIAotICAgIDc1LCA1MSwgMjI5LCA3NCwgNTEsIDIyOSwgNzMsIDUxLCAyMjksIDcyLCA1MSwgMjM3LCAyMDAsIDUxLCAyMzcsIDE5OSwgCi0gICAgNTEsIDIyOCwgMTgwLCA1MSwgMjI4LCAxODIsIDUxLCAyMjksIDE5NCwgNTEsIDIyOCwgMjUxLCA1MSwgMjI5LCAzLCA1MSwgCi0gICAgMjE1LCAxNywgNTEsIDIxNCwgMjM2LCA1MSwgMjEyLCA5MiwgNTEsIDIxMywgMTM0LCA1MSwgMjEzLCAxMzMsIDUxLCAyNDQsIAotICAgIDIwOSwgNTEsIDI0NCwgMTQsIDUxLCAyNDMsIDg2LCA1MSwgMjA4LCAxNjMsIDUxLCAyMjMsIDc5LCA1MSwgMjIxLCAxNTQsIAotICAgIDUxLCAyMzcsIDE0MiwgNTEsIDIxOSwgMTYzLCA1MSwgMjE5LCAxNjIsIDUxLCAyNDksIDI5LCA1MSwgMjE4LCAxNjQsIDUxLCAKLSAgICAyMTgsIDEyNywgNTEsIDIxOCwgMTI4LCA1MSwgMjQ4LCA1NywgNTEsIDIzNiwgMjQsIDUxLCAyMzYsIDE5LCA1MSwgMjQ3LCAKLSAgICAxNTEsIDUxLCAyMzYsIDQsIDUxLCAyMzcsIDM5LCA1MSwgMjE4LCAyMjAsIDUxLCAyMTksIDQsIDUxLCAyMzcsIDIyLCA1MSwgCi0gICAgMjE5LCAwLCA1MSwgMjE5LCAxOCwgNTEsIDI0OCwgMTQ1LCA1MSwgMjE4LCA1OCwgNTEsIDI0NywgMjUzLCA1MSwgMjM2LCAKLSAgICAxMjAsIDUxLCAyMTgsIDQ2LCA1MSwgMjM2LCAxMTEsIDUxLCAyMzYsIDExMywgNTEsIDIyNSwgMTM4LCA1MSwgMjI1LCAxMzQsIAotICAgIDUxLCAyMjUsIDE0MywgNTEsIDIyNSwgODMsIDUxLCAyMjUsIDExMCwgNTEsIDIyNCwgMTIxLCA1MSwgMjI0LCA5NywgNTEsIAotICAgIDIyNCwgOTYsIDUxLCAyMjUsIDAsIDUxLCAyMjQsIDI1MywgNTEsIDIyNSwgMSwgNTEsIDIwMywgMTA5LCA1MSwgMjAzLCAKLSAgICAxMDcsIDUxLCAyMDIsIDIwMiwgNTEsIDIxNSwgMjQzLCA1MSwgMjE1LCAyNDcsIDUxLCAyMTUsIDExOSwgNTEsIDIxNSwgCi0gICAgMTEzLCA1MSwgMjE2LCAxMDksIDUxLCAyMTYsIDEwNiwgNTEsIDIwNCwgNzgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCAKLSAgICA0MywgMjAyLCA4NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxMDUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAxNDksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTcwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDE5NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMTMsIDExMSwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyMzYsIDQzLCAxOTksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjIyLCA2MywgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDksIDE1MiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyNDEsIDExMiwgCi0gICAgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE1NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAKLSAgICAyMDksIDU1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIzOSwgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDI0MCwgMjIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjEyLCA4MiwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyMzYsIDQzLCAyMTMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyNDEsIDE0MCwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMjIsIDYwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgCi0gICAgMTUxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQ1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDIwNywgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQyLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQ3LCA1MSwgMjM2LCAzNCwgNTEsIDI0NCwgMjEyLCA1MSwgMjUwLCAzNCwgCi0gICAgNTEsIDE0MiwgNTEsIDIxOSwgMjA2LCA1MSwgMjE5LCAzOSwgNTEsIDI0MywgMTE1LCA1MSwgMjQzLCAxMTYsIDIxMSwgMTc2LCAKLSAgICA1MSwgMjQzLCAxMTYsIDI0NSwgMTA1LCA1MSwgMjMwLCAxOTcsIDUxLCAyNDEsIDI3LCAyMjMsIDg1LCAyMzcsIDQwLCA1MSwgCi0gICAgMjQxLCAyNywgMjIzLCA4NSwgMjEwLCA5MiwgNTEsIDI0MSwgMjcsIDIyMywgODUsIDIwOSwgMjQ1LCA1MSwgMjQxLCAyNywgCi0gICAgMjIzLCA4NSwgMjI0LCAyNTIsIDUxLCAyNDUsIDE2MiwgNTEsIDIxOSwgMTY5LCAyNTAsIDIzMywgNTEsIDIwMSwgMjAxLCAKLSAgICA1MSwgMjIzLCAyNDcsIDYzLCA1MSwgMTkyLCA1MSwgMTczLCA1MSwgMjI5LCAyMDQsIDUxLCAyMjUsIDU5LCA1MSwgMjM4LCAKLSAgICAyMDgsIDUxLCAyNDcsIDc2LCA1MSwgMjI5LCAyMDMsIDUxLCAyMTgsIDIxMSwgNTEsIDIyMiwgMjA3LCA1MSwgMjIzLCAyNDcsIAotICAgIDI0MCwgMTc0LCA1MSwgMjIzLCAyNDcsIDIzOSwgNzUsIDUxLCAyMjQsIDE5NiwgNTEsIDIyOSwgMTQ2LCA1MSwgMjM1LCAKLSAgICAyMTUsIDUxLCAyMjksIDEwMiwgNTEsIDIyNCwgMTU3LCA1MSwgMjM4LCA4MywgNTEsIDIwOSwgNCwgNTEsIDIyMywgMjQ3LCAKLSAgICAxNTksIDUxLCAyMjQsIDkwLCA1MSwgMjQzLCAxMjUsIDUxLCAyMjksIDQxLCA1MSwgMjM5LCAxODgsIDUxLCAyMjEsIDIyOSwgCi0gICAgNTEsIDIyMywgMjQ3LCAyMjYsIDE4NSwgNTEsIDIyNCwgODcsIDUxLCAyNDUsIDI1NSwgNTEsIDIyOSwgMzUsIDUxLCAyMjQsIAotICAgIDg4LCAyMTEsIDE3NiwgNTEsIDI0NiwgMCwgMjExLCAxNzYsIDUxLCAyMjYsIDE4NiwgMjExLCAxNzYsIDUxLCAyMjksIDM2LCAKLSAgICAyMTEsIDE3NiwgNTEsIDIyNCwgODgsIDI0NSwgMTA1LCA1MSwgMjQ2LCAwLCAyNDUsIDEwNSwgNTEsIDIyNiwgMTg2LCAyNDUsIAotICAgIDEwNSwgNTEsIDIyOSwgMzYsIDI0NSwgMTA1LCA1MSwgMjI2LCAxODYsIDExNSwgMTk0LCA1MSwgMjI2LCAxODYsIDExNSwgCi0gICAgMjE1LCA5NCwgMjExLCAxNzYsIDUxLCAxODUsIDUxLCAyMjgsIDI0NCwgNTEsIDIyMywgMjUwLCA1MSwgMjM4LCAxNSwgNTEsIAotICAgIDIxNiwgMjA3LCA1MSwgMjE2LCAyMDgsIDExNSwgMTk0LCA1MSwgMjE2LCAyMDgsIDExNSwgMjE1LCA5NCwgMjExLCAxNzYsIAotICAgIDUxLCAyMTcsIDIwNCwgNTEsIDIyMSwgMTIyLCA1MSwgMjIzLCAyNDcsIDE5NCwgNTEsIDIyMywgMjQ4LCA1MSwgMjE3LCAKLSAgICAxNTQsIDUxLCAyMjEsIDIyLCA1MSwgMjIzLCAyNDcsIDIwNiwgMTY0LCA1MSwgMjIzLCAxODcsIDUxLCAyMjgsIDE3MCwgNTEsIAotICAgIDIyMywgMTg4LCAyMjUsIDAsIDUxLCAyMTcsIDE1MywgNTEsIDIyMSwgMjEsIDUxLCAyMjMsIDI0NywgMjA0LCAxNDQsIDUxLCAKLSAgICAyMjMsIDE4MSwgNTEsIDIyOCwgMTY4LCA1MSwgMjIzLCAxODIsIDIyNSwgMCwgNTEsIDIzMCwgNTUsIDIyMCwgNTgsIDUxLCAKLSAgICAyMjYsIDE4NiwgMjIwLCA1OCwgNTEsIDI1MCwgMjQ3LCA1MSwgMjQ3LCAyMjksIDUxLCAyNDcsIDYsIDUxLCAyNDYsIDIzOSwgCi0gICAgNTEsIDI0NywgMTI2LCAxMTUsIDIyOSwgMTQ2LCA1MSwgMjQ1LCAyNTQsIDUxLCAyNDQsIDEyOSwgNTEsIDIzNywgMTg0LCAKLSAgICA1MSwgMTUyLCA1MSwgMjM2LCAzNSwgNTEsIDIzMSwgNDksIDUxLCAyMjksIDQ4LCA1MSwgMjI5LCAzNiwgMjQ3LCA0NywgNTEsIAotICAgIDIyOCwgMjExLCA1MSwgMjI3LCA1MiwgNTEsIDIyNywgNTEsIDUxLCAyMjcsIDM4LCA1MSwgMjI2LCAyMDAsIDUxLCAyMjUsIAotICAgIDYwLCAyMTIsIDM2LCA1MSwgMjI0LCAxMjAsIDUxLCAyMjQsIDU2LCA1MSwgMjE4LCAyMDksIDUxLCAyMTgsIDcyLCA1MSwgCi0gICAgMjE4LCAxMSwgNTEsIDIxOCwgOSwgNTEsIDIxMSwgMTY4LCA1MSwgMjEwLCAxNzcsIDUxLCAyMDQsIDY0LCA1MSwgMjA2LCAKLSAgICAxNjUsIDExNSwgMjI2LCAxODUsIDUxLCAzNCwgMTE1LCAyMjYsIDE4NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIAotICAgIDEzMywgMTA1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTQ5LCAxMzksIDIwOSwgMTY0LCAxNiwgCi0gICAgMzUsIDI0NCwgMTMzLCAxNzAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE5NSwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyNDQsIDEzMywgMjEzLCAxMTEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE5OSwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjIyLCA2MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgCi0gICAgMjA5LCAxNTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDI0MSwgMTEyLCAxMzksIDIwOSwgMTY0LCAxNiwgCi0gICAgMzUsIDI0NCwgMTMzLCAyMDcsIDE1NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA5LCA1NSwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjM5LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIAotICAgIDI0MCwgMjIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIxMiwgODIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDIxMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyNDEsIDE0MCwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjIyLCA2MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAKLSAgICAxNTEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAyMDcsIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDIsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ3LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIAotICAgIDE0OCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDIwNywgMTQ0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE1MCwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDYsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgCi0gICAgNTMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgNTIsIDUxLCAyMzgsIDI0NiwgMjM3LCAxNiwgMzUsIAotICAgIDIwOSwgOTMsIDI0NSwgMTQyLCAyMzcsIDUxLCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjE2LCAxNTEsIDI0MSwgMTc5LCAKLSAgICAyMzcsIDE2LCAzNSwgMjQzLCAyMDMsIDI1MCwgNTAsIDIwOSwgOTMsIDI0OCwgMTQwLCAyMzcsIDE2LCAzNSwgMjAyLCAyMjYsIAotICAgIDIzOSwgMTgwLCAyMzcsIDE2LCAzNSwgMjA0LCAxMDMsIDIzNywgMTYsIDM1LCAyNDUsIDIxNCwgMjM3LCAxNiwgMzUsIDIwOSwgCi0gICAgOTMsIDI1MCwgMTA1LCAyMzcsIDE2LCAzNSwgMjM2LCAxMjcsIDIwOCwgMTY5LCAyMzcsIDE2LCAzNSwgNSwgMjA5LCAyMzEsIAotICAgIDIzNywgMTYsIDM1LCAyMDgsIDk3LCAyMzcsIDE2LCAzNSwgMjE5LCAzMiwgMjM3LCAxNiwgMzUsIDIxMSwgOTYsIDIzNywgCi0gICAgMTYsIDM1LCAyNDAsIDQ0LCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxOCwgMzIsIDIzNywgMTYsIDM1LCAyMjQsIDc1LCAKLSAgICAyMzcsIDE2LCAzNSwgMjQxLCA2NCwgMjM3LCAxNiwgMzUsIDIzOSwgMTgxLCAyMzcsIDE2LCAzNSwgMjAzLCAyMzYsIDIyMCwgCi0gICAgMzIsIDIwOSwgOTMsIDI0NCwgNzEsIDIzNywgMTYsIDM1LCAyNTAsIDE1NCwgMjM3LCAxNiwgMzUsIDI0NSwgMTkzLCAyMzcsIAotICAgIDE2LCAzNSwgMjQ4LCA0OSwgMjA5LCAyNCwgMjM3LCAxNiwgMzUsIDIzOCwgMTMsIDIzNywgMTYsIDM1LCAyMTEsIDE5MiwgCi0gICAgMjUwLCAxNzMsIDIzNywgMTYsIDM1LCAyMTYsIDc3LCAyMzcsIDE2LCAzNSwgMjMxLCAxMiwgMjM3LCAxNiwgMzUsIDIzNywgCi0gICAgMjQ5LCAyMDksIDIzMSwgMjM3LCAxNiwgMzUsIDIyNCwgOCwgMjQ1LCAxNjQsIDIzNywgMTYsIDM1LCAyMzcsIDI0OSwgMjE3LCAKLSAgICAyNDQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNTEsIDE0MywgMjA0LCA4MCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDI0NiwgCi0gICAgMjQsIDIzOSwgMjQ5LCAyMzcsIDE2LCAzNSwgMjMxLCAyNiwgMjM3LCAxNiwgMzUsIDI0MiwgMjAsIDIzNywgMTYsIDM1LCAKLSAgICAyMTYsIDgwLCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxOCwgMTYsIDIzNywgMTYsIDM1LCAyMTcsIDIyMSwgMjM3LCAxNiwgCi0gICAgMzUsIDI0NCwgMTQ5LCA3NiwgMjA5LCA5MywgMjI3LCAxMzQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDAsIDgyLCAyMzcsIAotICAgIDE2LCAzNSwgMjE5LCAyNTAsIDIzNywgMTYsIDM1LCAyMjAsIDg1LCAyMzcsIDE2LCAzNSwgMjQ0LCA0MiwgMjM3LCAxNiwgCi0gICAgMzUsIDI0NCwgNjMsIDIzNywgMTYsIDM1LCAyMzEsIDQwLCAyMzcsIDE2LCAzNSwgMjQ3LCAyMTcsIDIzNywgMTYsIDM1LCAKLSAgICAyNDUsIDIzNSwgMjA4LCAxNzMsIDIyNSwgMywgMjM3LCAxNiwgMzUsIDIzOCwgMjE1LCAyMDgsIDE2OSwgMjM3LCAxNiwgMzUsIAotICAgIDIxNywgMTYzLCAyMDYsIDIxMywgMjM3LCAxNiwgMzUsIDIxOSwgMjQ5LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjA0LCA1MCwgCi0gICAgMjM3LCAxNiwgMzUsIDIxNiwgNjgsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDcsIDEyLCAyMzcsIDE2LCAzNSwgMjA5LCAKLSAgICA5MywgMjUwLCAxMDEsIDIwOSwgMTgsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMjksIDE5NSwgMjExLCA2OCwgMjI0LCAxMiwgCi0gICAgMjM3LCAxNiwgMzUsIDI0NCwgOSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIyNSwgODUsIDIyNSwgMTM5LCAyMzcsIDE2LCAKLSAgICAzNSwgMjUxLCAxNDQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMDQsIDk2LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjM4LCAKLSAgICAxNzMsIDIwNCwgMTYsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMzAsIDg0LCAyMjgsIDMzLCAyMzcsIDE2LCAzNSwgMjQzLCAKLSAgICAxNTMsIDIzNywgMTYsIDM1LCAyMjcsIDEyMSwgMjM3LCAxNiwgMzUsIDIzMSwgMTUsIDIwOCwgMjQsIDIzNywgMTYsIDM1LCAKLSAgICA1LCAyMTcsIDI0NCwgMjM3LCAxNiwgMzUsIDI1MSwgODIsIDI0NSwgMjI2LCAyMzcsIDE2LCAzNSwgMjQ4LCAxNDMsIDI0NSwgCi0gICAgMjI2LCAxMSwgNCwgMjMwLCAyMDEsIDExLCA0LCAyMzAsIDE5MywgMTEsIDQsIDc1LCAxMSwgNCwgMjMwLCAyMjcsIDExLCA0LCAKLSAgICAyMzEsIDEwOCwgMTEsIDQsIDIzMSwgOTEsIDExLCA0LCAyMzEsIDExMCwgMTEsIDQsIDIzMSwgMTA5LCAxMSwgNCwgMjUwLCAKLSAgICA0OSwgMTEsIDQsIDI1MCwgMTAsIDExLCA0LCA2MywgMTEsIDQsIDI1MCwgMTc1LCAxMSwgNCwgMjA2LCAyMjUsIDExLCA0LCAKLSAgICAyMDYsIDIyOCwgMTEsIDQsIDIwNiwgMjI2LCAxMSwgNCwgMjE5LCAyMjQsIDExLCA0LCAyMTksIDE5MywgMTEsIDQsIDc4LCAKLSAgICAxMSwgNCwgMjIwLCA5LCAxMSwgNCwgMjQwLCAyMTcsIDExLCA0LCA3NCwgMTEsIDQsIDIwMywgMjE3LCAxMSwgNCwgMjQ4LCAKLSAgICA1MSwgMTEsIDQsIDI0OCwgNDcsIDExLCA0LCAyNDgsIDg2LCAxMSwgNCwgMjQ4LCA2MSwgMTEsIDQsIDI0OCwgNzUsIDExLCAKLSAgICA0LCAyNDgsIDc0LCAxMSwgNCwgMjQ4LCA3NywgMTEsIDQsIDI0OCwgNzYsIDExLCA0LCAyNDgsIDIwOSwgMTEsIDQsIDI0OCwgCi0gICAgMjAxLCAxMSwgNCwgMjQ5LCAzMiwgMTEsIDQsIDI0OCwgMjMyLCAxMSwgNCwgMjQ3LCAxNjMsIDExLCA0LCAyNDcsIDE2NywgCi0gICAgMTEsIDQsIDI0NywgMTY0LCAxMSwgNCwgMjQ3LCAyNTIsIDExLCA0LCAyNDcsIDIzMywgMTEsIDQsIDI0OCwgMjMsIDExLCA0LCAKLSAgICAyNDgsIDIsIDExLCA0LCAyNDgsIDEwMSwgMTEsIDQsIDI0OCwgMTYyLCAxMSwgNCwgMjQ4LCAxMTMsIDExLCA0LCAyNDcsIAotICAgIDE0NywgMTEsIDQsIDI0NywgMTQzLCAxMSwgNCwgMjQ3LCAxOTMsIDExLCA0LCAyNDcsIDE2MiwgMTEsIDQsIDI0NywgMTU1LCAKLSAgICAxMSwgNCwgMjQ3LCAxNjAsIDExLCA0LCAyNDcsIDEzMSwgMTEsIDQsIDI0NywgMTI5LCAxMSwgNCwgMjQ3LCAxMzYsIDExLCAKLSAgICA0LCAyNDcsIDEzNCwgMTEsIDQsIDI0NywgMTMyLCAxMSwgNCwgMjQ3LCAxMzMsIDExLCA0LCAyMTgsIDEwNSwgMTEsIDQsIAotICAgIDIxOCwgMTAxLCAxMSwgNCwgMjE4LCAxNjcsIDExLCA0LCAyMTgsIDExNywgMTEsIDQsIDIxOCwgMTMzLCAxMSwgNCwgMjE4LCAKLSAgICAxNjAsIDExLCA0LCAyMTgsIDE1NiwgMTEsIDQsIDIxOSwgNTUsIDExLCA0LCAyMTksIDQ0LCAxMSwgNCwgMTg1LCAxMSwgNCwgCi0gICAgMjE5LCA5NiwgMTEsIDQsIDIxNywgMTczLCAxMSwgNCwgMjE3LCAxNzUsIDExLCA0LCAyMTcsIDE3NCwgMTEsIDQsIDIxOCwgCi0gICAgMjUsIDExLCA0LCAyMTgsIDE0LCAxMSwgNCwgMjE4LCA2OSwgMTEsIDQsIDIxOCwgNDEsIDExLCA0LCAyMTcsIDE1OSwgMTEsIAotICAgIDQsIDIxNywgMTU1LCAxMSwgNCwgMjE3LCAxOTEsIDExLCA0LCAyMTcsIDE3MiwgMTEsIDQsIDIxNywgMTY0LCAxMSwgNCwgCi0gICAgMjE3LCAxNzAsIDExLCA0LCAyMTcsIDEzOCwgMTEsIDQsIDIxNywgMTM3LCAxMSwgNCwgMjE3LCAxNDIsIDExLCA0LCAyMTcsIAotICAgIDE0MSwgMTEsIDQsIDIxNywgMTM5LCAxMSwgNCwgMjE3LCAxNDAsIDExLCA0LCAyNDgsIDE4MywgMTEsIDQsIDI0OCwgMTgyLCAKLSAgICAxMSwgNCwgMjQ4LCAxODksIDExLCA0LCAyNDgsIDE4NCwgMTEsIDQsIDI0OCwgMTg2LCAxMSwgNCwgMjQ4LCAxODUsIDExLCAKLSAgICA0LCAyNDgsIDE4OCwgMTEsIDQsIDI0OCwgMTg3LCAxMSwgNCwgMjQ4LCAxOTUsIDExLCA0LCAyNDgsIDE5NCwgMTEsIDQsIAotICAgIDI0OCwgMTk4LCAxMSwgNCwgMjQ4LCAxOTYsIDExLCA0LCAyNDgsIDE3NCwgMTEsIDQsIDI0OCwgMTc2LCAxMSwgNCwgMjQ4LCAKLSAgICAxNzUsIDExLCA0LCAyNDgsIDE3OSwgMTEsIDQsIDI0OCwgMTc4LCAxMSwgNCwgMjQ4LCAxODEsIDExLCA0LCAyNDgsIDE4MCwgCi0gICAgMTEsIDQsIDI0OCwgMTkwLCAxMSwgNCwgMjQ4LCAxOTMsIDExLCA0LCAyNDgsIDE5MSwgMTEsIDQsIDI0OCwgMTcwLCAxMSwgCi0gICAgNCwgMjQ4LCAxNjksIDExLCA0LCAyNDgsIDE3NywgMTEsIDQsIDI0OCwgMTczLCAxMSwgNCwgMjQ4LCAxNzEsIDExLCA0LCAKLSAgICAyNDgsIDE3MiwgMTEsIDQsIDI0OCwgMTY2LCAxMSwgNCwgMjQ4LCAxNjUsIDExLCA0LCAyNDgsIDE2OCwgMTEsIDQsIDI0OCwgCi0gICAgMTY3LCAxMSwgNCwgMjIzLCA0NywgMTEsIDQsIDIyMywgNDYsIDExLCA0LCAyMjMsIDUyLCAxMSwgNCwgMjIzLCA0OCwgMTEsIAotICAgIDQsIDIyMywgNDksIDExLCA0LCAyMjMsIDUxLCAxMSwgNCwgMjIzLCA1MCwgMTEsIDQsIDIyMywgNTUsIDExLCA0LCAyMjMsIAotICAgIDU0LCAxMSwgNCwgMjIzLCA1NywgMTEsIDQsIDIyMywgNTYsIDExLCA0LCAyMjMsIDQzLCAxMSwgNCwgMjIzLCA0MiwgMTEsIAotICAgIDQsIDIyMywgNDUsIDExLCA0LCAyMjMsIDQ0LCAxMSwgNCwgMjIzLCAzNiwgMTEsIDQsIDIyMywgMzUsIDExLCA0LCAyMjMsIAotICAgIDQwLCAxMSwgNCwgMjIzLCAzOSwgMTEsIDQsIDIyMywgMzcsIDExLCA0LCAyMjMsIDM4LCAxMSwgNCwgMjIzLCAzMCwgMTEsIAotICAgIDQsIDIyMywgMjksIDExLCA0LCAyMjMsIDM0LCAxMSwgNCwgMjIzLCAzMywgMTEsIDQsIDIyMywgMzEsIDExLCA0LCAyMjMsIAotICAgIDMyLCAxMSwgNCwgMjM2LCAxODAsIDExLCA0LCAyMzYsIDE3OSwgMTEsIDQsIDIzNiwgMTg1LCAxMSwgNCwgMjM2LCAxODEsIAotICAgIDExLCA0LCAyMzYsIDE4MiwgMTEsIDQsIDIzNiwgMTg0LCAxMSwgNCwgMjM2LCAxODMsIDExLCA0LCAyMzYsIDE4OCwgMTEsIAotICAgIDQsIDIzNiwgMTg3LCAxMSwgNCwgMjM2LCAxOTAsIDExLCA0LCAyMzYsIDE4OSwgMTEsIDQsIDIzNiwgMTcxLCAxMSwgNCwgCi0gICAgMjM2LCAxNzMsIDExLCA0LCAyMzYsIDE3MiwgMTEsIDQsIDIzNiwgMTc2LCAxMSwgNCwgMjM2LCAxNzUsIDExLCA0LCAyMzYsIAotICAgIDE3OCwgMTEsIDQsIDIzNiwgMTc3LCAxMSwgNCwgMjM2LCAxNjcsIDExLCA0LCAyMzYsIDE2NiwgMTEsIDQsIDIzNiwgMTc0LCAKLSAgICAxMSwgNCwgMjM2LCAxNzAsIDExLCA0LCAyMzYsIDE2OCwgMTEsIDQsIDIzNiwgMTY5LCAxMSwgNCwgMjM2LCAxNjEsIDExLCAKLSAgICA0LCAyMzYsIDE2NSwgMTEsIDQsIDIzNiwgMTY0LCAxMSwgNCwgMjM2LCAxNjIsIDExLCA0LCAyMzYsIDE2MywgMTEsIDQsIAotICAgIDIyNCwgOTMsIDExLCA0LCAyMjQsIDkyLCAxMSwgNCwgMjI0LCAxNTUsIDExLCA0LCAyMjQsIDk5LCAxMSwgNCwgMjI0LCAKLSAgICAxMjcsIDExLCA0LCAyMjQsIDE0NSwgMTEsIDQsIDIyNCwgMTQzLCAxMSwgNCwgMjI1LCA3MSwgMTEsIDQsIDIyNSwgNjYsIAotICAgIDExLCA0LCAxOTIsIDExLCA0LCAyMjUsIDEwNiwgMTEsIDQsIDIyMywgMjEzLCAxMSwgNCwgMjIzLCAyMTIsIDExLCA0LCAKLSAgICAyMjMsIDIxNiwgMTEsIDQsIDIyMywgMjE0LCAxMSwgNCwgMjI0LCAyMSwgMTEsIDQsIDIyMywgMjUyLCAxMSwgNCwgMjI0LCAKLSAgICA4MiwgMTEsIDQsIDIyNCwgMjcsIDExLCA0LCAyMjQsIDIwNywgMTEsIDQsIDIyNSwgMjAsIDExLCA0LCAyMjMsIDE5MywgMTEsIAotICAgIDQsIDIyMywgMTg5LCAxMSwgNCwgMjIzLCAyNDYsIDExLCA0LCAyMjMsIDIwOSwgMTEsIDQsIDIyMywgMjAyLCAxMSwgNCwgCi0gICAgMjIzLCAyMDcsIDExLCA0LCAyMjMsIDE2NiwgMTEsIDQsIDIyMywgMTY1LCAxMSwgNCwgMjIzLCAxNzEsIDExLCA0LCAyMjMsIAotICAgIDE2OCwgMTEsIDQsIDIzOSwgMjM2LCAxMSwgNCwgMjM5LCAyMzAsIDExLCA0LCAyNDAsIDI2LCAxMSwgNCwgMjM5LCAyNTEsIAotICAgIDExLCA0LCAyNDAsIDczLCAxMSwgNCwgMjQwLCA2NCwgMTEsIDQsIDI0MCwgMTA4LCAxMSwgNCwgMjQwLCA3OCwgMTEsIDQsIAotICAgIDIzOSwgMTM5LCAxMSwgNCwgMjM5LCAxODYsIDExLCA0LCAyMzksIDE2NywgMTEsIDQsIDIzOSwgOTEsIDExLCA0LCAyMzksIAotICAgIDkwLCAxMSwgNCwgMjM5LCAxMDgsIDExLCA0LCAyMzksIDk2LCAxMSwgNCwgMjM5LCA5NCwgMTEsIDQsIDIzOSwgOTUsIDExLCAKLSAgICA0LCAyMzksIDc4LCAxMSwgNCwgMjM5LCA3NywgMTEsIDQsIDIzOSwgODEsIDExLCA0LCAyMzksIDc5LCAxMSwgNCwgMjA1LCAKLSAgICAxOTYsIDExLCA0LCAyMDUsIDE5MSwgMTEsIDQsIDIwNSwgMjMwLCAxMSwgNCwgMjA1LCAyMDUsIDExLCA0LCAyMDUsIDIxOSwgCi0gICAgMTEsIDQsIDIwNSwgMjE2LCAxMSwgNCwgMjA1LCAyMjIsIDExLCA0LCAyMDUsIDIyMSwgMTEsIDQsIDIwNiwgNjMsIDExLCA0LCAKLSAgICAyMDYsIDU4LCAxMSwgNCwgMjA2LCA4NiwgMTEsIDQsIDIwNiwgNzUsIDExLCA0LCAyMDUsIDE3MiwgMTEsIDQsIDIwNSwgCi0gICAgMTY4LCAxMSwgNCwgMjA1LCAxODksIDExLCA0LCAyMDUsIDE3NCwgMTEsIDQsIDIwNSwgMjMzLCAxMSwgNCwgMjA2LCA0NCwgCi0gICAgMTEsIDQsIDIwNCwgMTU3LCAxMSwgNCwgMjA0LCAxNTUsIDExLCA0LCAyMDQsIDE2MywgMTEsIDQsIDIwNCwgMTYwLCAxMSwgCi0gICAgNCwgMjA0LCAxNTgsIDExLCA0LCAyMDQsIDE1OSwgMTEsIDQsIDIwNCwgMTQ4LCAxMSwgNCwgMjA0LCAxNDcsIDExLCA0LCAKLSAgICAyMDQsIDE1MiwgMTEsIDQsIDIwNCwgMTUxLCAxMSwgNCwgMjA0LCAxNDksIDExLCA0LCAyMDQsIDE1MCwgMTEsIDQsIDI0MywgCi0gICAgMTQ3LCAxMSwgNCwgMjQzLCAxMzQsIDExLCA0LCAyNDMsIDIzMywgMTEsIDQsIDI0MywgMTczLCAxMSwgNCwgMjQzLCAyMDgsIAotICAgIDExLCA0LCAyNDMsIDIxMywgMTEsIDQsIDI0MywgMjEyLCAxMSwgNCwgMjQ0LCAxNDAsIDExLCA0LCAyNDQsIDEzNCwgMTEsIAotICAgIDQsIDI0NCwgMjEyLCAxMSwgNCwgMjQ0LCAxNjAsIDExLCA0LCAyNDIsIDI1LCAxMSwgNCwgMjQyLCAyNiwgMTEsIDQsIDI0MywgCi0gICAgODUsIDExLCA0LCAyNDIsIDY3LCAxMSwgNCwgMjQzLCAxMTMsIDExLCA0LCAyNDMsIDg3LCAxMSwgNCwgMjQ0LCA3LCAxMSwgCi0gICAgNCwgMjQ0LCA3NSwgMTEsIDQsIDI0NCwgMjgsIDExLCA0LCAyNDIsIDE2LCAxMSwgNCwgMjQyLCAxNCwgMTEsIDQsIDI0MiwgCi0gICAgNDIsIDExLCA0LCAyNDIsIDI0LCAxMSwgNCwgMjQyLCAxOSwgMTEsIDQsIDI0MiwgMjIsIDExLCA0LCAyMDgsIDIwMCwgMTEsIAotICAgIDQsIDIwOCwgMTkyLCAxMSwgNCwgMjA5LCAyLCAxMSwgNCwgMjA4LCAyMTAsIDExLCA0LCAyMDgsIDI0OCwgMTEsIDQsIDIwOCwgCi0gICAgMjUwLCAxMSwgNCwgMjA4LCAyNDksIDExLCA0LCAyMDksIDIxMiwgMTEsIDQsIDIwOSwgMTk4LCAxMSwgNCwgMjEwLCAyMiwgCi0gICAgMTEsIDQsIDIwOSwgMjIyLCAxMSwgNCwgMjA3LCAxODUsIDExLCA0LCAyMDcsIDE4NCwgMTEsIDQsIDIwNywgMTg3LCAxMSwgCi0gICAgNCwgMjA3LCAxODYsIDExLCA0LCAyMDgsIDEzMSwgMTEsIDQsIDIwOCwgMTIxLCAxMSwgNCwgMTM1LCAxMSwgNCwgMjA4LCAKLSAgICAxNDQsIDExLCA0LCAyMDksIDExNCwgMTEsIDQsIDIwOSwgMTg3LCAxMSwgNCwgMjA5LCAxMzksIDExLCA0LCAyMDcsIDE2OCwgCi0gICAgMTEsIDQsIDIwNywgMTYzLCAxMSwgNCwgMjA3LCAyMDMsIDExLCA0LCAyMDcsIDE4MywgMTEsIDQsIDIwNywgMTY5LCAxMSwgCi0gICAgNCwgMjA3LCAxODEsIDExLCA0LCAyNDQsIDkyLCAxMSwgNCwgMjQ0LCA5MSwgMTEsIDQsIDI0NCwgOTcsIDExLCA0LCAyNDQsIAotICAgIDkzLCAxMSwgNCwgMjQ0LCA5NCwgMTEsIDQsIDI0NCwgOTYsIDExLCA0LCAyNDQsIDk1LCAxMSwgNCwgMjQ0LCAxMTMsIDExLCAKLSAgICA0LCAyNDQsIDExMiwgMTEsIDQsIDI0NCwgMTIwLCAxMSwgNCwgMjQ0LCAxMTQsIDExLCA0LCAyNDQsIDgyLCAxMSwgNCwgCi0gICAgMjQ0LCA4NCwgMTEsIDQsIDI0NCwgODMsIDExLCA0LCAyNDQsIDg3LCAxMSwgNCwgMjQ0LCA4NiwgMTEsIDQsIDI0NCwgOTAsIAotICAgIDExLCA0LCAyNDQsIDg4LCAxMSwgNCwgMjQ0LCAxMDUsIDExLCA0LCAyNDQsIDEwOCwgMTEsIDQsIDI0NCwgMTA2LCAxMSwgNCwgCi0gICAgMjQ0LCA3OCwgMTEsIDQsIDI0NCwgNzcsIDExLCA0LCAyNDQsIDg1LCAxMSwgNCwgMjQ0LCA4MSwgMTEsIDQsIDI0NCwgNzksIAotICAgIDExLCA0LCAyNDQsIDgwLCAxMSwgNCwgMjIzLCAzLCAxMSwgNCwgMjIzLCAyLCAxMSwgNCwgMjIzLCAxMCwgMTEsIDQsIDIyMywgCi0gICAgNSwgMTEsIDQsIDIyMywgNiwgMTEsIDQsIDIyMywgNywgMTEsIDQsIDIyMywgMTksIDExLCA0LCAyMjMsIDE4LCAxMSwgNCwgCi0gICAgMjIzLCAyNSwgMTEsIDQsIDIyMywgMjAsIDExLCA0LCAyMjIsIDI1MSwgMTEsIDQsIDIyMiwgMjUwLCAxMSwgNCwgMjIzLCAxLCAKLSAgICAxMSwgNCwgMjIyLCAyNTIsIDExLCA0LCAyMjMsIDExLCAxMSwgNCwgMjIzLCAxNywgMTEsIDQsIDIyMywgMTUsIDExLCA0LCAKLSAgICAyMjIsIDI0MywgMTEsIDQsIDIyMiwgMjQyLCAxMSwgNCwgMjIyLCAyNDgsIDExLCA0LCAyMjIsIDI0NiwgMTEsIDQsIDIyMiwgCi0gICAgMjQ0LCAxMSwgNCwgMjIyLCAyNDUsIDExLCA0LCAyMzYsIDE0NiwgMTEsIDQsIDIzNiwgMTQ1LCAxMSwgNCwgMjM2LCAxNTIsIAotICAgIDExLCA0LCAyMzYsIDE0NywgMTEsIDQsIDIzNiwgMTQ5LCAxMSwgNCwgMjM2LCAxNDgsIDExLCA0LCAyMzYsIDE1MSwgMTEsIAotICAgIDQsIDIzNiwgMTUwLCAxMSwgNCwgMjM2LCAxNTgsIDExLCA0LCAyMzYsIDE1NiwgMTEsIDQsIDIzNiwgMTYwLCAxMSwgNCwgCi0gICAgMjM2LCAxNTksIDExLCA0LCAyMzYsIDEzOSwgMTEsIDQsIDIzNiwgMTQwLCAxMSwgNCwgMjM2LCAxNDMsIDExLCA0LCAyMzYsIAotICAgIDE0MiwgMTEsIDQsIDIzNiwgMTQ0LCAxMSwgNCwgMjM2LCAxNTMsIDExLCA0LCAyMzYsIDE1NSwgMTEsIDQsIDIzNiwgMTU0LCAKLSAgICAxMSwgNCwgMjM2LCAxMzgsIDExLCA0LCAyMjIsIDUyLCAxMSwgNCwgMjIyLCA1MCwgMTEsIDQsIDIyMiwgMTAwLCAxMSwgNCwgCi0gICAgMjIyLCA1NSwgMTEsIDQsIDIyMiwgODIsIDExLCA0LCAyMjIsIDk2LCAxMSwgNCwgMjIyLCA5NSwgMTEsIDQsIDIyMywgNjEsIAotICAgIDExLCA0LCAyMDEsIDIwMSwgMTEsIDQsIDIyMywgNzYsIDExLCA0LCAyMjEsIDMyLCAxMSwgNCwgMjIxLCAzNCwgMTEsIDQsIAotICAgIDIyMSwgMzMsIDExLCA0LCAyMjEsIDE2NSwgMTEsIDQsIDIyMSwgMTUwLCAxMSwgNCwgMjIxLCAxOTEsIDExLCA0LCAyMjEsIAotICAgIDE3NiwgMTEsIDQsIDIyMiwgMjA5LCAxMSwgNCwgMjIyLCAyNDAsIDExLCA0LCAyMjIsIDIyNSwgMTEsIDQsIDIyMSwgMjcsIAotICAgIDExLCA0LCAyMjEsIDIzLCAxMSwgNCwgMjIxLCA4NCwgMTEsIDQsIDIyMSwgMzEsIDExLCA0LCAyMjEsIDI5LCAxMSwgNCwgCi0gICAgMjIxLCAzMCwgMTEsIDQsIDIzNiwgMjExLCAxMSwgNCwgMjM2LCAyMTAsIDExLCA0LCAyMzYsIDIxNiwgMTEsIDQsIDIzNiwgCi0gICAgMjEyLCAxMSwgNCwgMjM2LCAyMTMsIDExLCA0LCAyMzYsIDIxNSwgMTEsIDQsIDIzNiwgMjE0LCAxMSwgNCwgMjM2LCAyMjIsIAotICAgIDExLCA0LCAyMzYsIDIyMCwgMTEsIDQsIDIzNiwgMjI0LCAxMSwgNCwgMjM2LCAyMjMsIDExLCA0LCAyMzYsIDIwMywgMTEsIAotICAgIDQsIDIzNiwgMjA1LCAxMSwgNCwgMjM2LCAyMDQsIDExLCA0LCAyMzYsIDIwNywgMTEsIDQsIDIzNiwgMjA5LCAxMSwgNCwgCi0gICAgMjM2LCAyMDgsIDExLCA0LCAyMzYsIDIxNywgMTEsIDQsIDIzNiwgMjE5LCAxMSwgNCwgMjM2LCAyMTgsIDExLCA0LCAyMzYsIAotICAgIDE5OSwgMTEsIDQsIDIzNiwgMTk4LCAxMSwgNCwgMjM2LCAyMDYsIDExLCA0LCAyMzYsIDIwMiwgMTEsIDQsIDIzNiwgMjAwLCAKLSAgICAxMSwgNCwgMjM2LCAyMDEsIDExLCA0LCAyMzYsIDE5MywgMTEsIDQsIDIzNiwgMTkyLCAxMSwgNCwgMjM2LCAxOTcsIDExLCAKLSAgICA0LCAyMzYsIDE5NiwgMTEsIDQsIDIzNiwgMTk0LCAxMSwgNCwgMjM2LCAxOTUsIDExLCA0LCAyMjcsIDkwLCAxMSwgNCwgCi0gICAgMjI3LCA4MiwgMTEsIDQsIDIyNywgMTQ4LCAxMSwgNCwgMjI3LCAxMDAsIDExLCA0LCAyMjcsIDEzOSwgMTEsIDQsIDIyNywgCi0gICAgMTM4LCAxMSwgNCwgMjI3LCAxNDIsIDExLCA0LCAyMjcsIDE0MCwgMTEsIDQsIDIyOCwgMCwgMTEsIDQsIDIyNywgMjQ1LCAKLSAgICAxMSwgNCwgMjI4LCAxMTMsIDExLCA0LCAyMjgsIDExLCAxMSwgNCwgMjI2LCAyMTcsIDExLCA0LCAyMjYsIDIxNiwgMTEsIDQsIAotICAgIDIyNiwgMjE5LCAxMSwgNCwgMjI2LCAyMTgsIDExLCA0LCAyMjcsIDYsIDExLCA0LCAyMjYsIDI0OCwgMTEsIDQsIDIyNywgCi0gICAgNDksIDExLCA0LCAyMjcsIDExLCAxMSwgNCwgMjI3LCAxNjUsIDExLCA0LCAyMjcsIDIzNCwgMTEsIDQsIDIyNywgMTgyLCAKLSAgICAxMSwgNCwgMjI2LCAyMTEsIDExLCA0LCAyMjYsIDIwOSwgMTEsIDQsIDIyNiwgMjM5LCAxMSwgNCwgMjI2LCAyMTUsIDExLCAKLSAgICA0LCAyMjYsIDIxMywgMTEsIDQsIDIyNiwgMjE0LCAxMSwgNCwgMjI2LCAxOTAsIDExLCA0LCAyMjYsIDE4OSwgMTEsIDQsIAotICAgIDIyNiwgMTk5LCAxMSwgNCwgMjI2LCAxOTMsIDExLCA0LCAyMjYsIDE5MSwgMTEsIDQsIDIyNiwgMTkyLCAxMSwgNCwgMjM4LCAKLSAgICA1NCwgMTEsIDQsIDIzOCwgNTMsIDExLCA0LCAyMzgsIDgxLCAxMSwgNCwgMjM4LCA2NSwgMTEsIDQsIDIzOCwgNzMsIDExLCAKLSAgICA0LCAyMzgsIDcyLCAxMSwgNCwgMjM4LCA3NSwgMTEsIDQsIDIzOCwgNzQsIDExLCA0LCAyMzgsIDIxNywgMTEsIDQsIDIzOCwgCi0gICAgMjEyLCAxMSwgNCwgMjM5LCA4LCAxMSwgNCwgMjM4LCAyMjcsIDExLCA0LCAyMzcsIDIwNSwgMTEsIDQsIDIzNywgMjA0LCAKLSAgICAxMSwgNCwgMjM3LCAyMDcsIDExLCA0LCAyMzcsIDIwNiwgMTEsIDQsIDIzOCwgMTgsIDExLCA0LCAyMzgsIDE2LCAxMSwgNCwgCi0gICAgMjM4LCAzOSwgMTEsIDQsIDIzOCwgMjYsIDExLCA0LCAyMzgsIDE1OSwgMTEsIDQsIDIzOCwgMTU3LCAxMSwgNCwgMjM4LCAKLSAgICAxOTAsIDExLCA0LCAyMzgsIDE3MCwgMTEsIDQsIDIzNywgMTk0LCAxMSwgNCwgMjM3LCAxOTMsIDExLCA0LCAyMzcsIDIzMCwgCi0gICAgMTEsIDQsIDIzNywgMjAzLCAxMSwgNCwgMjM3LCAxOTUsIDExLCA0LCAyMzcsIDIwMiwgMTEsIDQsIDIyOSwgNjQsIDExLCA0LCAKLSAgICAyMjksIDYxLCAxMSwgNCwgMjI5LCAxMDAsIDExLCA0LCAyMjksIDc4LCAxMSwgNCwgMjI5LCA4OSwgMTEsIDQsIDIyOSwgOTMsIAotICAgIDExLCA0LCAyMjksIDkxLCAxMSwgNCwgMjI5LCAyMjYsIDExLCA0LCAyMjksIDIwOSwgMTEsIDQsIDE3MywgMTEsIDQsIDIyOSwgCi0gICAgMjUzLCAxMSwgNCwgMjI4LCAxODcsIDExLCA0LCAyMjgsIDE5MiwgMTEsIDQsIDIyOCwgMTg5LCAxMSwgNCwgMjI4LCAyNTAsIAotICAgIDExLCA0LCAyMjgsIDI0NSwgMTEsIDQsIDIyOSwgMjYsIDExLCA0LCAyMjksIDEsIDExLCA0LCAyMjksIDE3MCwgMTEsIDQsIAotICAgIDIyOSwgMTUzLCAxMSwgNCwgMjI5LCAyMDEsIDExLCA0LCAyMjksIDE3NCwgMTEsIDQsIDIyOCwgMTc1LCAxMSwgNCwgMjI4LCAKLSAgICAxNzEsIDExLCA0LCAyMjgsIDIwOSwgMTEsIDQsIDIyOCwgMTg2LCAxMSwgNCwgMjI4LCAxNzksIDExLCA0LCAyMjgsIDE4MywgCi0gICAgMTEsIDQsIDIzOCwgMTQxLCAxMSwgNCwgMjM4LCAxNDAsIDExLCA0LCAyMzgsIDE0NSwgMTEsIDQsIDIzOCwgMTQyLCAxMSwgCi0gICAgNCwgMjM4LCAxNDQsIDExLCA0LCAyMzgsIDE0MywgMTEsIDQsIDIzOCwgMTUyLCAxMSwgNCwgMjM4LCAxNTEsIDExLCA0LCAKLSAgICAyMzgsIDE1NSwgMTEsIDQsIDIzOCwgMTUzLCAxMSwgNCwgMjM4LCAxMzIsIDExLCA0LCAyMzgsIDEzMSwgMTEsIDQsIDIzOCwgCi0gICAgMTM0LCAxMSwgNCwgMjM4LCAxMzMsIDExLCA0LCAyMzgsIDEzNywgMTEsIDQsIDIzOCwgMTM2LCAxMSwgNCwgMjM4LCAxMzksIAotICAgIDExLCA0LCAyMzgsIDEzOCwgMTEsIDQsIDIzOCwgMTQ3LCAxMSwgNCwgMjM4LCAxNDYsIDExLCA0LCAyMzgsIDE1MCwgMTEsIAotICAgIDQsIDIzOCwgMTQ4LCAxMSwgNCwgMjM4LCAxMjcsIDExLCA0LCAyMzgsIDEyNiwgMTEsIDQsIDIzOCwgMTM1LCAxMSwgNCwgCi0gICAgMjM4LCAxMzAsIDExLCA0LCAyMzgsIDEyOCwgMTEsIDQsIDIzOCwgMTI5LCAxMSwgNCwgMjI0LCAxNzQsIDExLCA0LCAyMjQsIAotICAgIDE3NSwgMTEsIDQsIDIyNCwgMTkzLCAxMSwgNCwgMjI0LCAxOTIsIDExLCA0LCAyMjQsIDE5NSwgMTEsIDQsIDIyNCwgMTk0LCAKLSAgICAxMSwgNCwgMjI0LCAxNjUsIDExLCA0LCAyMjQsIDE2NywgMTEsIDQsIDIyNCwgMTY2LCAxMSwgNCwgMjI0LCAxNzAsIDExLCAKLSAgICA0LCAyMjQsIDE2OSwgMTEsIDQsIDIyNCwgMTcyLCAxMSwgNCwgMjI0LCAxNzEsIDExLCA0LCAyMjQsIDE3NiwgMTEsIDQsIAotICAgIDIyNCwgMTc4LCAxMSwgNCwgMjI0LCAxNzcsIDExLCA0LCAyMjQsIDE2MSwgMTEsIDQsIDIyNCwgMTYwLCAxMSwgNCwgMjI0LCAKLSAgICAxNjgsIDExLCA0LCAyMjQsIDE2NCwgMTEsIDQsIDIyNCwgMTYyLCAxMSwgNCwgMjI0LCAxNjMsIDExLCA0LCAyMzUsIDIzMywgCi0gICAgMTEsIDQsIDIzNSwgMjMyLCAxMSwgNCwgMjM1LCAyMzksIDExLCA0LCAyMzUsIDIzNCwgMTEsIDQsIDIzNSwgMjM2LCAxMSwgCi0gICAgNCwgMjM1LCAyMzUsIDExLCA0LCAyMzUsIDIzOCwgMTEsIDQsIDIzNSwgMjM3LCAxMSwgNCwgMjM1LCAyNDQsIDExLCA0LCAKLSAgICAyMzUsIDI0MywgMTEsIDQsIDIzNSwgMjQ2LCAxMSwgNCwgMjM1LCAyNDUsIDExLCA0LCAyMzUsIDIyNSwgMTEsIDQsIDIzNSwgCi0gICAgMjI0LCAxMSwgNCwgMjM1LCAyMjcsIDExLCA0LCAyMzUsIDIyNiwgMTEsIDQsIDIzNSwgMjI5LCAxMSwgNCwgMjM1LCAyMjgsIAotICAgIDExLCA0LCAyMzUsIDIzMSwgMTEsIDQsIDIzNSwgMjMwLCAxMSwgNCwgMjM1LCAyNDAsIDExLCA0LCAyMzUsIDI0MiwgMTEsIAotICAgIDQsIDIzNSwgMjQxLCAxMSwgNCwgMjIyLCAxNDgsIDExLCA0LCAyMjIsIDE1MCwgMTEsIDQsIDIyMiwgMTQ5LCAxMSwgNCwgCi0gICAgMjIyLCAxOTMsIDExLCA0LCAyMjIsIDE5MSwgMTEsIDQsIDIyMiwgMjAzLCAxMSwgNCwgMjIyLCAxOTYsIDExLCA0LCAyMjIsIAotICAgIDExMCwgMTEsIDQsIDIyMiwgMTA5LCAxMSwgNCwgMjIyLCAxMTEsIDExLCA0LCAyMjIsIDEyMCwgMTEsIDQsIDIyMiwgMTE3LCAKLSAgICAxMSwgNCwgMjIyLCAxMjgsIDExLCA0LCAyMjIsIDEyMiwgMTEsIDQsIDIyMiwgMTg0LCAxMSwgNCwgMjIyLCAxOTAsIDExLCAKLSAgICA0LCAyMjIsIDE4NiwgMTEsIDQsIDIzNiwgMjMwLCAxMSwgNCwgMjM2LCAyNDUsIDExLCA0LCAyMzYsIDI1NCwgMTEsIDQsIAotICAgIDIzNywgODMsIDExLCA0LCAyMzcsIDcyLCAxMSwgNCwgMTUyLCAxMSwgNCwgMjM3LCA5NCwgMTEsIDQsIDIzNiwgNiwgMTEsIAotICAgIDQsIDIzNiwgNSwgMTEsIDQsIDIzNiwgOCwgMTEsIDQsIDIzNiwgNywgMTEsIDQsIDIzNiwgNDYsIDExLCA0LCAyMzYsIDM3LCAKLSAgICAxMSwgNCwgMjM2LCAxMzYsIDExLCA0LCAyMzYsIDEwOSwgMTEsIDQsIDIzNywgMTgsIDExLCA0LCAyMzcsIDY3LCAxMSwgNCwgCi0gICAgMjM3LCAzMCwgMTEsIDQsIDIwNCwgODMsIDExLCA0LCAyMDQsIDY4LCAxMSwgNCwgMjA0LCAxMTEsIDExLCA0LCAyMDQsIDkzLCAKLSAgICAxMSwgNCwgMjAzLCAyMDYsIDExLCA0LCAyMDMsIDIwOCwgMTEsIDQsIDIwMywgMjA3LCAxMSwgNCwgMjAzLCAyMjksIDExLCAKLSAgICA0LCAyMDQsIDAsIDExLCA0LCAyMDMsIDIzOSwgMTEsIDQsIDIwNCwgNDIsIDExLCA0LCAyMDQsIDYyLCAxMSwgNCwgMjA0LCAKLSAgICA0NywgMTEsIDQsIDIwMiwgMjQsIDExLCA0LCAyMDIsIDIzLCAxMSwgNCwgMjAyLCAzOSwgMTEsIDQsIDIwMiwgMjcsIDExLCAKLSAgICA0LCAyMDIsIDMyLCAxMSwgNCwgMjAyLCAzNCwgMTEsIDQsIDIwMiwgMzMsIDExLCA0LCAyMDIsIDEwMCwgMTEsIDQsIDIwMiwgCi0gICAgOTcsIDExLCA0LCAyMDIsIDExNiwgMTEsIDQsIDIwMiwgMTA0LCAxMSwgNCwgMjAxLCAyNTUsIDExLCA0LCAyMDIsIDEsIDExLCAKLSAgICA0LCAyMDIsIDAsIDExLCA0LCAyMDIsIDEzLCAxMSwgNCwgMjAyLCAxMiwgMTEsIDQsIDIwMiwgMTcsIDExLCA0LCAyMDIsIAotICAgIDE0LCAxMSwgNCwgMjAyLCA4MiwgMTEsIDQsIDIwMiwgOTIsIDExLCA0LCAyMDIsIDg2LCAxMSwgNCwgMjAxLCAyNTEsIDExLCAKLSAgICA0LCAyMDEsIDI1MCwgMTEsIDQsIDIwMiwgNiwgMTEsIDQsIDIwMSwgMjU0LCAxMSwgNCwgMjAxLCAyNTIsIDExLCA0LCAyMDEsIAotICAgIDI1MywgMTEsIDQsIDIwMSwgMjM3LCAxMSwgNCwgMjAxLCAyMzYsIDExLCA0LCAyMDEsIDI0MiwgMTEsIDQsIDIwMSwgMjQwLCAKLSAgICAxMSwgNCwgMjAxLCAyMzgsIDExLCA0LCAyMDEsIDIzOSwgMTEsIDQsIDI0NiwgNTAsIDExLCA0LCAyNDYsIDQzLCAxMSwgNCwgCi0gICAgMjQ2LCA3OSwgMTEsIDQsIDI0NiwgNjMsIDExLCA0LCAyNDYsIDc2LCAxMSwgNCwgMjQ2LCA3MCwgMTEsIDQsIDI0NiwgNzgsIAotICAgIDExLCA0LCAyNDYsIDc3LCAxMSwgNCwgMjQ3LCAxNywgMTEsIDQsIDI0NywgOSwgMTEsIDQsIDI0NywgOTIsIDExLCA0LCAKLSAgICAyNDcsIDQ4LCAxMSwgNCwgMjQ1LCAxMDEsIDExLCA0LCAyNDUsIDEwMywgMTEsIDQsIDI0NSwgMTAyLCAxMSwgNCwgMjQ1LCAKLSAgICAxNTgsIDExLCA0LCAyNDUsIDE0OCwgMTEsIDQsIDI0NSwgMjU0LCAxMSwgNCwgMjQ1LCAxNzUsIDExLCA0LCAyNDYsIDIwMiwgCi0gICAgMTEsIDQsIDI0NiwgMjM4LCAxMSwgNCwgMjQ2LCAyMDcsIDExLCA0LCAyNDUsIDc3LCAxMSwgNCwgMjQ1LCA3NSwgMTEsIDQsIAotICAgIDI0NSwgMTEwLCAxMSwgNCwgMjQ1LCA5OSwgMTEsIDQsIDI0NSwgODMsIDExLCA0LCAyNDUsIDk2LCAxMSwgNCwgMjQ1LCA1NCwgCi0gICAgMTEsIDQsIDI0NSwgNTMsIDExLCA0LCAyNDUsIDY2LCAxMSwgNCwgMjQ1LCA2MCwgMTEsIDQsIDI0NSwgNTUsIDExLCA0LCAKLSAgICAyNDUsIDU3LCAxMSwgNCwgMjAxLCAyMjAsIDExLCA0LCAyMDEsIDIxOSwgMTEsIDQsIDIwMSwgMjI2LCAxMSwgNCwgMjAxLCAKLSAgICAyMjEsIDExLCA0LCAyMDEsIDIyMywgMTEsIDQsIDIwMSwgMjIyLCAxMSwgNCwgMjAxLCAyMjUsIDExLCA0LCAyMDEsIDIyNCwgCi0gICAgMTEsIDQsIDIwMSwgMjMyLCAxMSwgNCwgMjAxLCAyMzEsIDExLCA0LCAyMDEsIDIzNSwgMTEsIDQsIDIwMSwgMjMzLCAxMSwgCi0gICAgNCwgMjAxLCAyMTYsIDExLCA0LCAyMDEsIDIxOCwgMTEsIDQsIDIwMSwgMjE3LCAxMSwgNCwgMjAxLCAyMjcsIDExLCA0LCAKLSAgICAyMDEsIDIzMCwgMTEsIDQsIDIwMSwgMjI4LCAxMSwgNCwgMjAxLCAyMDksIDExLCA0LCAyMDEsIDIxMywgMTEsIDQsIDIwMSwgCi0gICAgMjEyLCAxMSwgNCwgMjAxLCAyMTAsIDExLCA0LCAyMDEsIDIxMSwgMTEsIDQsIDIwMSwgMjAzLCAxMSwgNCwgMjAxLCAyMDIsIAotICAgIDExLCA0LCAyMDEsIDIwOCwgMTEsIDQsIDIwMSwgMjA2LCAxMSwgNCwgMjAxLCAyMDQsIDExLCA0LCAyMDEsIDIwNSwgMTEsIAotICAgIDQsIDIyMCwgMjAxLCAxMSwgNCwgMjIwLCAyMDAsIDExLCA0LCAyMjAsIDIwNiwgMTEsIDQsIDIyMCwgMjAyLCAxMSwgNCwgCi0gICAgMjIwLCAyMDMsIDExLCA0LCAyMjAsIDIwNSwgMTEsIDQsIDIyMCwgMjA0LCAxMSwgNCwgMjIwLCAyMTEsIDExLCA0LCAyMjAsIAotICAgIDIxMCwgMTEsIDQsIDIyMCwgMjE0LCAxMSwgNCwgMjIwLCAyMTMsIDExLCA0LCAyMjAsIDE5NCwgMTEsIDQsIDIyMCwgMTk1LCAKLSAgICAxMSwgNCwgMjIwLCAxOTgsIDExLCA0LCAyMjAsIDE5OSwgMTEsIDQsIDIyMCwgMjA3LCAxMSwgNCwgMjIwLCAyMDksIDExLCAKLSAgICA0LCAyMjAsIDE4OSwgMTEsIDQsIDIyMCwgMTk3LCAxMSwgNCwgMjIwLCAxOTMsIDExLCA0LCAyMjAsIDE5MCwgMTEsIDQsIAotICAgIDIyMCwgMTkxLCAxMSwgNCwgMjIwLCAxODQsIDExLCA0LCAyMjAsIDE4MywgMTEsIDQsIDIyMCwgMTg4LCAxMSwgNCwgMjIwLCAKLSAgICAxODcsIDExLCA0LCAyMjAsIDE4NSwgMTEsIDQsIDIyMCwgMTg2LCAxMSwgNCwgMjEyLCA5MCwgMTEsIDQsIDE5NSwgMTEsIDQsIAotICAgIDIxMiwgMTYyLCAxMSwgNCwgMjEyLCA5MywgMTEsIDQsIDIxMiwgMTUwLCAxMSwgNCwgMjEyLCAxNTMsIDExLCA0LCAyMTIsIAotICAgIDE1MSwgMTEsIDQsIDIxNCwgMjI1LCAxMSwgNCwgMjE0LCAyMTEsIDExLCA0LCAyMTUsIDM2LCAxMSwgNCwgMjE0LCAyMzMsIAotICAgIDExLCA0LCAyMTAsIDIwNCwgMTEsIDQsIDIxMCwgMjA2LCAxMSwgNCwgMjEwLCAyMDUsIDExLCA0LCAyMTEsIDI0NCwgMTEsIAotICAgIDQsIDIxMSwgMjMzLCAxMSwgNCwgMjEyLCAxMywgMTEsIDQsIDIxMSwgMjQ4LCAxMSwgNCwgMjEzLCAxMDMsIDExLCA0LCAKLSAgICAyMTQsIDE3NywgMTEsIDQsIDIxMywgMTMyLCAxMSwgNCwgMjEwLCAxODEsIDExLCA0LCAyMTAsIDE3OCwgMTEsIDQsIDIxMSwgCi0gICAgMTAsIDExLCA0LCAyMTAsIDIwMywgMTEsIDQsIDIxMCwgMTg1LCAxMSwgNCwgMjEwLCAxOTMsIDExLCA0LCAyMTAsIDgzLCAKLSAgICAxMSwgNCwgMjEwLCA4MiwgMTEsIDQsIDIxMCwgMTUxLCAxMSwgNCwgMjEwLCA5MSwgMTEsIDQsIDIxMCwgODUsIDExLCA0LCAKLSAgICAyMTAsIDkwLCAxMSwgNCwgMjExLCAxMjYsIDExLCA0LCAyMTEsIDEyNSwgMTEsIDQsIDIxMSwgMTMyLCAxMSwgNCwgMjExLCAKLSAgICAxMjcsIDExLCA0LCAyMTEsIDEyOSwgMTEsIDQsIDIxMSwgMTMxLCAxMSwgNCwgMjExLCAxMzAsIDExLCA0LCAyMTEsIDE0MSwgCi0gICAgMTEsIDQsIDIxMSwgMTM5LCAxMSwgNCwgMjExLCAxNjQsIDExLCA0LCAyMTEsIDE0MiwgMTEsIDQsIDIxMSwgMTIxLCAxMSwgCi0gICAgNCwgMjExLCAxMjAsIDExLCA0LCAyMTEsIDEyNCwgMTEsIDQsIDIxMSwgMTIyLCAxMSwgNCwgMjExLCAxMzUsIDExLCA0LCAKLSAgICAyMTEsIDEzOCwgMTEsIDQsIDIxMSwgMTM2LCAxMSwgNCwgMjExLCAxMTcsIDExLCA0LCAyMTEsIDExNSwgMTEsIDQsIDIxMSwgCi0gICAgMTE5LCAxMSwgNCwgMjExLCAxMTgsIDExLCA0LCAyMTEsIDExMCwgMTEsIDQsIDIxMSwgMTA5LCAxMSwgNCwgMjExLCAxMTQsIAotICAgIDExLCA0LCAyMTEsIDExMywgMTEsIDQsIDIxMSwgMTExLCAxMSwgNCwgMjExLCAxMTIsIDExLCA0LCAyMDIsIDc1LCAxMSwgNCwgCi0gICAgMjAyLCA3NCwgMTEsIDQsIDIwMiwgODAsIDExLCA0LCAyMDIsIDc3LCAxMSwgNCwgMjAyLCA1NCwgMTEsIDQsIDIwMiwgNTYsIAotICAgIDExLCA0LCAyMDIsIDU1LCAxMSwgNCwgMjAyLCA1OSwgMTEsIDQsIDIwMiwgNTgsIDExLCA0LCAyMDIsIDYzLCAxMSwgNCwgCi0gICAgMjAyLCA2MCwgMTEsIDQsIDIwMiwgNjgsIDExLCA0LCAyMDIsIDY3LCAxMSwgNCwgMjAyLCA3MSwgMTEsIDQsIDIwMiwgNjksIAotICAgIDExLCA0LCAyMDIsIDUwLCAxMSwgNCwgMjAyLCA0OSwgMTEsIDQsIDIwMiwgNTcsIDExLCA0LCAyMDIsIDUzLCAxMSwgNCwgCi0gICAgMjAyLCA1MSwgMTEsIDQsIDIwMiwgNTIsIDExLCA0LCAyMDIsIDQyLCAxMSwgNCwgMjAyLCA0MSwgMTEsIDQsIDIwMiwgNDYsIAotICAgIDExLCA0LCAyMDIsIDQ1LCAxMSwgNCwgMjAyLCA0MywgMTEsIDQsIDIwMiwgNDQsIDExLCA0LCAyNDYsIDE3NiwgMTEsIDQsIAotICAgIDI0NiwgMTcyLCAxMSwgNCwgMjQ2LCAxOTksIDExLCA0LCAyNDYsIDE4NSwgMTEsIDQsIDI0NiwgOTQsIDExLCA0LCAyNDYsIAotICAgIDkzLCAxMSwgNCwgMjQ2LCA5NiwgMTEsIDQsIDI0NiwgOTUsIDExLCA0LCAyNDYsIDEwOSwgMTEsIDQsIDI0NiwgMTA4LCAxMSwgCi0gICAgNCwgMjQ2LCAxMTYsIDExLCA0LCAyNDYsIDExMSwgMTEsIDQsIDI0NiwgMTQ3LCAxMSwgNCwgMjQ2LCAxNDUsIDExLCA0LCAKLSAgICAyNDYsIDE3MCwgMTEsIDQsIDI0NiwgMTU1LCAxMSwgNCwgMjQ2LCA4OCwgMTEsIDQsIDI0NiwgOTgsIDExLCA0LCAyNDYsIAotICAgIDkyLCAxMSwgNCwgMjQ2LCA4OSwgMTEsIDQsIDI0NiwgOTEsIDExLCA0LCAyNDYsIDgxLCAxMSwgNCwgMjQ2LCA4MCwgMTEsIAotICAgIDQsIDI0NiwgODUsIDExLCA0LCAyNDYsIDg0LCAxMSwgNCwgMjQ2LCA4MiwgMTEsIDQsIDI0NiwgODMsIDExLCA0LCAyMTUsIAotICAgIDE4MSwgMTEsIDQsIDIxNSwgMTg1LCAxMSwgNCwgMjE1LCAxNjMsIDExLCA0LCAyMTUsIDE2NCwgMTEsIDQsIDIxNSwgMTY4LCAKLSAgICAxMSwgNCwgMjE1LCAxNjcsIDExLCA0LCAyMTUsIDE3MSwgMTEsIDQsIDIxNSwgMTY5LCAxMSwgNCwgMjE1LCAxNzUsIDExLCAKLSAgICA0LCAyMTUsIDE3NCwgMTEsIDQsIDIxNSwgMTgwLCAxMSwgNCwgMjE1LCAxNzYsIDExLCA0LCAyMTUsIDE1OSwgMTEsIDQsIAotICAgIDIxNSwgMTU3LCAxMSwgNCwgMjE1LCAxNjUsIDExLCA0LCAyMTUsIDE2MiwgMTEsIDQsIDIxNSwgMTYwLCAxMSwgNCwgMjE1LCAKLSAgICAxNjEsIDExLCA0LCAyMTUsIDE1MiwgMTEsIDQsIDIxNSwgMTUxLCAxMSwgNCwgMjE1LCAxNTYsIDExLCA0LCAyMTUsIDE1NSwgCi0gICAgMTEsIDQsIDIxNSwgMTUzLCAxMSwgNCwgMjE1LCAxNTQsIDExLCA0LCAyMjEsIDE0NSwgMTEsIDQsIDIyMSwgMTQ0LCAxMSwgCi0gICAgNCwgMjIxLCAxNDcsIDExLCA0LCAyMjEsIDE0NiwgMTEsIDQsIDIyMSwgMTM2LCAxMSwgNCwgMjIxLCAxMzgsIDExLCA0LCAKLSAgICAyMjEsIDEzNywgMTEsIDQsIDIyMSwgMTQwLCAxMSwgNCwgMjIxLCAxMzksIDExLCA0LCAyMjEsIDE0MywgMTEsIDQsIDIyMSwgCi0gICAgMTQyLCAxMSwgNCwgMjIxLCAxMzAsIDExLCA0LCAyMjEsIDEyOSwgMTEsIDQsIDIyMSwgMTM1LCAxMSwgNCwgMjIxLCAxMzMsIAotICAgIDExLCA0LCAyMjEsIDEzMSwgMTEsIDQsIDIyMSwgMTMyLCAxMSwgNCwgMjIxLCAxMjQsIDExLCA0LCAyMjEsIDEyMywgMTEsIAotICAgIDQsIDIyMSwgMTI4LCAxMSwgNCwgMjIxLCAxMjcsIDExLCA0LCAyMjEsIDEyNSwgMTEsIDQsIDIyMSwgMTI2LCAxMSwgNCwgCi0gICAgMjEzLCA1MywgMTEsIDQsIDIxMywgNDgsIDExLCA0LCAyMTMsIDkwLCAxMSwgNCwgMjEzLCA2NCwgMTEsIDQsIDIxMiwgMTg4LCAKLSAgICAxMSwgNCwgMjEyLCAxOTAsIDExLCA0LCAyMTIsIDE4OSwgMTEsIDQsIDIxMiwgMjEyLCAxMSwgNCwgMjEyLCAyMDgsIDExLCAKLSAgICA0LCAyMTIsIDI0MiwgMTEsIDQsIDIxMiwgMjMyLCAxMSwgNCwgMjEzLCAyMSwgMTEsIDQsIDIxMywgMTQsIDExLCA0LCAyMTMsIAotICAgIDQzLCAxMSwgNCwgMjEzLCAzMCwgMTEsIDQsIDIxMiwgMTg0LCAxMSwgNCwgMjEyLCAxODEsIDExLCA0LCAyMTIsIDE5OSwgCi0gICAgMTEsIDQsIDIxMiwgMTg3LCAxMSwgNCwgMjEyLCAxODUsIDExLCA0LCAyMTIsIDE4NiwgMTEsIDQsIDIxMiwgMTY1LCAxMSwgCi0gICAgNCwgMjEyLCAxNjQsIDExLCA0LCAyMTIsIDE3MSwgMTEsIDQsIDIxMiwgMTY4LCAxMSwgNCwgMjEyLCAxNjYsIDExLCA0LCAKLSAgICAyMTIsIDE2NywgMTEsIDQsIDIxNiwgMTcyLCAxMSwgNCwgMjE2LCAxNjYsIDExLCA0LCAyMTYsIDIyMCwgMTEsIDQsIDIxNiwgCi0gICAgMTc4LCAxMSwgNCwgMjE1LCAxMjIsIDExLCA0LCAyMTUsIDEyNCwgMTEsIDQsIDIxNSwgMTIzLCAxMSwgNCwgMjE1LCAxOTksIAotICAgIDExLCA0LCAyMTUsIDE4NywgMTEsIDQsIDIxNSwgMjI3LCAxMSwgNCwgMjE1LCAyMDMsIDExLCA0LCAyMTYsIDY2LCAxMSwgNCwgCi0gICAgMjE2LCAxNTgsIDExLCA0LCAyMTYsIDEwNSwgMTEsIDQsIDIxNSwgMTE1LCAxMSwgNCwgMjE1LCAxMTIsIDExLCA0LCAyMTUsIAotICAgIDE0NSwgMTEsIDQsIDIxNSwgMTIxLCAxMSwgNCwgMjE1LCAxMTcsIDExLCA0LCAyMTUsIDExOCwgMTEsIDQsIDIxNSwgOTcsIAotICAgIDExLCA0LCAyMTUsIDk2LCAxMSwgNCwgMjE1LCAxMDIsIDExLCA0LCAyMTUsIDEwMCwgMTEsIDQsIDIxNSwgOTgsIDExLCA0LCAKLSAgICAyMTUsIDk5LCAxMSwgNCwgMjMwLCAxMzEsIDExLCA0LCAyMzAsIDEzMCwgMTEsIDQsIDIzMCwgMTQxLCAxMSwgNCwgMjMwLCAKLSAgICAxMzIsIDExLCA0LCAyMzAsIDEzNywgMTEsIDQsIDIzMCwgMTM2LCAxMSwgNCwgMjMwLCAxMzksIDExLCA0LCAyMzAsIDEzOCwgCi0gICAgMTEsIDQsIDIzMCwgNzIsIDExLCA0LCAyMzAsIDcxLCAxMSwgNCwgMjMwLCA3NCwgMTEsIDQsIDIzMCwgNzMsIDExLCA0LCAKLSAgICAyMzAsIDg4LCAxMSwgNCwgMjMwLCA4NiwgMTEsIDQsIDIzMCwgMTAxLCAxMSwgNCwgMjMwLCA5MCwgMTEsIDQsIDIzMCwgNjUsIAotICAgIDExLCA0LCAyMzAsIDYzLCAxMSwgNCwgMjMwLCA4MiwgMTEsIDQsIDIzMCwgNzAsIDExLCA0LCAyMzAsIDY3LCAxMSwgNCwgCi0gICAgMjMwLCA2OCwgMTEsIDQsIDIzMCwgNTcsIDExLCA0LCAyMzAsIDU2LCAxMSwgNCwgMjMwLCA2MSwgMTEsIDQsIDIzMCwgNjAsIAotICAgIDExLCA0LCAyMzAsIDU4LCAxMSwgNCwgMjMwLCA1OSwgMTEsIDQsIDIxNywgODEsIDExLCA0LCAyMTcsIDc5LCAxMSwgNCwgCi0gICAgMjE3LCA4OCwgMTEsIDQsIDIxNywgODIsIDExLCA0LCAyMTcsIDg1LCAxMSwgNCwgMjE3LCA4NCwgMTEsIDQsIDIxNywgODcsIAotICAgIDExLCA0LCAyMTcsIDg2LCAxMSwgNCwgMjE3LCAzMiwgMTEsIDQsIDIxNywgMjksIDExLCA0LCAyMTcsIDM0LCAxMSwgNCwgCi0gICAgMjE3LCAzMywgMTEsIDQsIDIxNywgNjgsIDExLCA0LCAyMTcsIDY3LCAxMSwgNCwgMjE3LCA3NywgMTEsIDQsIDIxNywgNzEsIAotICAgIDExLCA0LCAyMTcsIDI0LCAxMSwgNCwgMjE3LCAyMCwgMTEsIDQsIDIxNywgNjUsIDExLCA0LCAyMTcsIDI4LCAxMSwgNCwgCi0gICAgMjE3LCAyNiwgMTEsIDQsIDIxNywgMjcsIDExLCA0LCAyMTcsIDQsIDExLCA0LCAyMTcsIDIsIDExLCA0LCAyMTcsIDE0LCAKLSAgICAxMSwgNCwgMjE3LCA3LCAxMSwgNCwgMjE3LCA1LCAxMSwgNCwgMjE3LCA2LCAxMSwgNCwgMjMwLCAxMjAsIDExLCA0LCAyMzAsIAotICAgIDExOSwgMTEsIDQsIDIzMCwgMTI2LCAxMSwgNCwgMjMwLCAxMjEsIDExLCA0LCAyMzAsIDEyMywgMTEsIDQsIDIzMCwgMTIyLCAKLSAgICAxMSwgNCwgMjMwLCAxMjUsIDExLCA0LCAyMzAsIDEyNCwgMTEsIDQsIDIzMCwgMTExLCAxMSwgNCwgMjMwLCAxMTMsIDExLCAKLSAgICA0LCAyMzAsIDExMiwgMTEsIDQsIDIzMCwgMTE2LCAxMSwgNCwgMjMwLCAxMTUsIDExLCA0LCAyMzAsIDExOCwgMTEsIDQsIAotICAgIDIzMCwgMTE3LCAxMSwgNCwgMjMwLCAxMDcsIDExLCA0LCAyMzAsIDEwNiwgMTEsIDQsIDIzMCwgMTE0LCAxMSwgNCwgMjMwLCAKLSAgICAxMTAsIDExLCA0LCAyMzAsIDEwOCwgMTEsIDQsIDIzMCwgMTA5LCAxMSwgNCwgMjMwLCAxMDMsIDExLCA0LCAyMzAsIDEwMiwgCi0gICAgMTEsIDQsIDIzMCwgMTA1LCAxMSwgNCwgMjMwLCAxMDQsIDExLCA0LCAyMjIsIDI1LCAxMSwgNCwgMjIyLCAyNCwgMTEsIDQsIAotICAgIDIyMiwgMzIsIDExLCA0LCAyMjIsIDI2LCAxMSwgNCwgMjIyLCAyOCwgMTEsIDQsIDIyMiwgMjcsIDExLCA0LCAyMjIsIDMxLCAKLSAgICAxMSwgNCwgMjIyLCAyOSwgMTEsIDQsIDIyMiwgMTQsIDExLCA0LCAyMjIsIDE1LCAxMSwgNCwgMjIyLCAyMCwgMTEsIDQsIAotICAgIDIyMiwgMTksIDExLCA0LCAyMjIsIDIzLCAxMSwgNCwgMjIyLCAyMSwgMTEsIDQsIDIyMiwgOSwgMTEsIDQsIDIyMiwgMTgsIAotICAgIDExLCA0LCAyMjIsIDEzLCAxMSwgNCwgMjIyLCAxMCwgMTEsIDQsIDIyMiwgMTEsIDExLCA0LCAyMjIsIDQsIDExLCA0LCAKLSAgICAyMjIsIDMsIDExLCA0LCAyMjIsIDgsIDExLCA0LCAyMjIsIDcsIDExLCA0LCAyMjIsIDUsIDExLCA0LCAyMjIsIDYsIDExLCAKLSAgICA0LCAyMjAsIDIzNiwgMTEsIDQsIDIyMCwgMjM1LCAxMSwgNCwgMjIwLCAyNDgsIDExLCA0LCAyMjAsIDI0MCwgMTEsIDQsIAotICAgIDIyMCwgMjQ1LCAxMSwgNCwgMjIwLCAyNDQsIDExLCA0LCAyMjAsIDI0NywgMTEsIDQsIDIyMCwgMjQ2LCAxMSwgNCwgMjIwLCAKLSAgICAyMjEsIDExLCA0LCAyMjAsIDIyMywgMTEsIDQsIDIyMCwgMjIyLCAxMSwgNCwgMjIwLCAyMjgsIDExLCA0LCAyMjAsIDIyNywgCi0gICAgMTEsIDQsIDIyMCwgMjMzLCAxMSwgNCwgMjIwLCAyMjksIDExLCA0LCAyMjAsIDIxOSwgMTEsIDQsIDIyMCwgMjE3LCAxMSwgCi0gICAgNCwgMjIwLCAyMjYsIDExLCA0LCAyMjAsIDIyMCwgMTEsIDQsIDIwMywgMTYyLCAxMSwgNCwgMjAzLCAxNjEsIDExLCA0LCAKLSAgICAyMDMsIDE3MCwgMTEsIDQsIDIwMywgMTY0LCAxMSwgNCwgMjAzLCAxNjYsIDExLCA0LCAyMDMsIDE2NSwgMTEsIDQsIDIwMywgCi0gICAgMTY4LCAxMSwgNCwgMjAzLCAxNjcsIDExLCA0LCAyMDMsIDE1MCwgMTEsIDQsIDIwMywgMTUxLCAxMSwgNCwgMjAzLCAxNTUsIAotICAgIDExLCA0LCAyMDMsIDE1NCwgMTEsIDQsIDIwMywgMTYwLCAxMSwgNCwgMjAzLCAxNTgsIDExLCA0LCAyMDMsIDEyOCwgMTEsIAotICAgIDQsIDIwMywgMTI2LCAxMSwgNCwgMjAzLCAxNDEsIDExLCA0LCAyMDMsIDEzMSwgMTEsIDQsIDIwMywgMTI5LCAxMSwgNCwgCi0gICAgMjAzLCAxMzAsIDExLCA0LCAyMDIsIDI1MywgMTEsIDQsIDIwMiwgMjUxLCAxMSwgNCwgMjAzLCAxMSwgMTEsIDQsIDIwMiwgCi0gICAgMjU0LCAxMSwgNCwgMjAzLCA1LCAxMSwgNCwgMjAzLCA0LCAxMSwgNCwgMjAzLCA4LCAxMSwgNCwgMjAzLCA2LCAxMSwgNCwgCi0gICAgMjAyLCAxOTEsIDExLCA0LCAyMDIsIDE5MCwgMTEsIDQsIDIwMiwgMTk0LCAxMSwgNCwgMjAyLCAxOTIsIDExLCA0LCAyMDIsIAotICAgIDIyNywgMTEsIDQsIDIwMiwgMjIzLCAxMSwgNCwgMjAyLCAyNDcsIDExLCA0LCAyMDIsIDIzMSwgMTEsIDQsIDIwMiwgMTgyLCAKLSAgICAxMSwgNCwgMjAyLCAxNzgsIDExLCA0LCAyMDIsIDIxMywgMTEsIDQsIDIwMiwgMTg5LCAxMSwgNCwgMjAyLCAxODUsIDExLCAKLSAgICA0LCAyMDIsIDE4NiwgMTEsIDQsIDIwMiwgMTYyLCAxMSwgNCwgMjAyLCAxNjEsIDExLCA0LCAyMDIsIDE2OSwgMTEsIDQsIAotICAgIDIwMiwgMTY1LCAxMSwgNCwgMjAyLCAxNjMsIDExLCA0LCAyMDIsIDE2NCwgMTEsIDQwLCAyMTcsIDY4LCAxMSwgNDAsIDIyNywgCi0gICAgMTQ4LCAxMSwgNDAsIDIyOSwgNjQsIDExLCA0MCwgMjIwLCAyNDAsIDExLCA0MCwgMjQ1LCA2MCwgMTEsIDQwLCAyMTEsIAotICAgIDEzMiwgMTEsIDQwLCAyMzgsIDEzOCwgMTEsIDQwLCAyMzgsIDE3MCwgMTEsIDQwLCAyMjQsIDE1NSwgMTEsIDQwLCAyMzUsIAotICAgIDIzMywgMTEsIDQwLCAyMjYsIDE5MiwgMTEsIDQwLCAyNDgsIDE3MCwgMTEsIDQwLCAyMjQsIDI3LCAxMSwgNDAsIDIwMiwgCi0gICAgMjQ3LCAxMSwgNDAsIDIxNywgMTU5LCAxMSwgNDAsIDIzNSwgMjI3LCAxMSwgNDAsIDIwOSwgMjEyLCAxMSwgNDAsIDIzOSwgCi0gICAgOCwgMTEsIDQwLCAyMDEsIDI1NCwgMTEsIDQwLCAyNDUsIDU0LCAxMSwgNDAsIDI0NCwgODAsIDExLCA0MCwgMjQ3LCAxNjAsIAotICAgIDExLCA0MCwgMjM4LCAxMzQsIDExLCA0MCwgMjIwLCAyMjksIDExLCA0MCwgMjA3LCAyMDMsIDExLCA0MCwgMjIwLCA5LCAxMSwgCi0gICAgNDAsIDIzMCwgMTA3LCAxMSwgNDAsIDIwMiwgMTMsIDExLCA0MCwgMjE3LCAxMzgsIDExLCA0MCwgMjM2LCAxNzgsIDExLCAKLSAgICA0MCwgMjAyLCAyNTMsIDExLCA0MCwgMjA0LCAxNTksIDExLCA0MCwgMjEyLCAxNzEsIDExLCA0MCwgMjA2LCA0NCwgMTEsIAotICAgIDQwLCAyMDIsIDExNiwgMTEsIDQwLCAyMzAsIDEwMSwgMTEsIDQwLCAyMjAsIDE5MywgMTEsIDQwLCAyMzAsIDEwNSwgMTEsIAotICAgIDQwLCAyMzgsIDE4LCAxMSwgNDAsIDIzMCwgMTI1LCAxMSwgNDAsIDIwNCwgMCwgMTEsIDQwLCAyNDIsIDQyLCAxMSwgNDAsIAotICAgIDIxMiwgMTg2LCAxMSwgNDAsIDIyNywgMTQyLCAxMSwgNDAsIDI0NSwgNjYsIDExLCA0MCwgMjQ1LCAxMDIsIDExLCA0MCwgCi0gICAgMjQ2LCA2MywgMTEsIDQwLCAyMzUsIDIzMCwgMTEsIDQwLCAyMTMsIDUzLCAxMSwgNDAsIDIwMSwgMjUzLCAxMSwgNDAsIAotICAgIDIxMiwgMjMyLCAxMSwgNDAsIDI0NiwgMTcwLCAxMSwgNDAsIDIwMSwgMjIzLCAxMSwgNDAsIDIyMywgNTEsIDExLCA0MCwgCi0gICAgMjI5LCAyMDEsIDIyNywgOTEsIDEsIDI0OSwgMzIsIDIyNywgOTEsIDEsIDE4NSwgMjI3LCA5MSwgMSwgMjE4LCAyMDgsIAotICAgIDIyNywgOTEsIDEsIDI0NCwgMjEyLCAyMjcsIDkxLCAxLCAyMTAsIDIyLCAyMjcsIDkxLCAxLCAyMDksIDEwOCwgMjI3LCA5MSwgCi0gICAgMSwgMjM5LCA4LCAyMjcsIDkxLCAxLCAxNzMsIDIyNywgOTEsIDEsIDIyOSwgMTQ0LCAyMjcsIDkxLCAxLCAyMzAsIDE4MSwgCi0gICAgMjI3LCA5MSwgMSwgMjQ3LCA5MiwgMjI3LCA5MSwgMSwgMjQ2LCAxOTksIDIyNywgOTEsIDEsIDI0MSwgMjU1LCAyMjcsIDkxLCAKLSAgICAxLCAyMDgsIDIwLCAyMjcsIDkxLCAxLCAyMDgsIDEwLCAyMjcsIDkxLCAxLCAxOTIsIDIyNywgOTEsIDEsIDIwMSwgMjAxLCAKLSAgICAyMjcsIDkxLCAxLCAyMjgsIDExMywgMjI3LCA5MSwgMSwgMjE1LCAzNiwgMjI3LCA5MSwgMSwgMjAyLCA4MCwgMjI3LCA5MSwgCi0gICAgMSwgMjAyLCAxMTYsIDIyNywgOTEsIDEsIDIyMiwgMjAzLCAyMjcsIDkxLCAxLCAxNTIsIDIyNywgOTEsIDEsIDIwMywgMTgyLCAKLSAgICAyMjcsIDkxLCAxLCAyMzcsIDEyLCAyMjcsIDkxLCAxLCAyNDAsIDEwOCwgMjI3LCA5MSwgMSwgMjA0LCAxMTEsIDIyNywgOTEsIAotICAgIDEsIDIxMywgOTAsIDIyNywgOTEsIDEsIDE5OCwgMjI3LCA5MSwgMSwgMjM4LCAxMTksIDIyNywgOTEsIDEsIDYzLCAyMjcsIAotICAgIDkxLCAxLCAyNTEsIDEwOSwgMjI3LCA5MSwgMSwgNzQsIDIyNywgOTEsIDEsIDI0MCwgMjM4LCAyMjcsIDkxLCAxLCA3NSwgCi0gICAgMjI3LCA5MSwgMSwgNzgsIDIyNywgOTEsIDEsIDY4LCAyMjcsIDkxLCAxLCAyMDcsIDI0LCAyMjcsIDkxLCAxLCAyMDcsIDE4LCAKLSAgICAyMjcsIDkxLCAxLCAyMjAsIDczLCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyMDksIDIsIDIyNywgOTEsIDEsIDE0MywgCi0gICAgMjIzLCAxMTEsIDIxOCwgNjksIDIyNywgOTEsIDEsIDE0MywgMjIzLCAxNzAsIDI0NSwgNjUsIDIyNywgOTEsIDEsIDE0MywgCi0gICAgMjIzLCAxNzAsIDI0OCwgMjMsIDIyNywgOTEsIDEsIDE0MywgMjIzLCAxNzAsIDIwMSwgMjAxLCAyMjcsIDkxLCAxLCAxNDMsIAotICAgIDIyMywgMTcwLCAyMzAsIDE1MCwgMjI3LCA5MSwgMjE3LCAxNzksIDI0NSwgMjMzLCAyMjcsIDkxLCAyMTcsIDE3OSwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDQ4LCA0LCAyNDEsIDE2MSwgNDgsIDQsIDI0MSwgMTU3LCA0OCwgNCwgMjM3LCA0OCwgNDgsIDQsIAotICAgIDIwNCwgNTUsIDQ4LCA0LCAyMDQsIDU0LCA0OCwgNCwgMjE5LCAyMywgNDgsIDQsIDI0OCwgOTMsIDQ4LCA0LCAyNDgsIDE1MCwgCi0gICAgNDgsIDQsIDIyNSwgNDYsIDQ4LCA0LCAyMjgsIDIzOSwgNDgsIDQsIDIyNCwgMTg3LCA0OCwgNCwgMjM4LCAyMDMsIDQ4LCA0LCAKLSAgICAyNDAsIDUzLCA0OCwgNCwgMjA2LCA1MCwgNDgsIDQsIDIwOSwgMTc2LCA0OCwgNCwgMjA5LCA5MCwgNDgsIDQsIDI0MywgCi0gICAgMjQ3LCA0OCwgNCwgMjQzLCAyNDQsIDQ4LCA0LCAyMjcsIDIyNiwgNDgsIDQsIDIxNiwgMTM1LCA0OCwgNCwgMjQ0LCA2MSwgCi0gICAgNDgsIDQsIDIyMywgMTYsIDQ4LCA0LCAyMTQsIDE2NSwgNDgsIDQsIDIxMywgNDEsIDQ4LCA0LCAyMDIsIDkwLCA0OCwgNCwgCi0gICAgMjAyLCA3MCwgNDgsIDQsIDI0NiwgMjMwLCA0OCwgNCwgMjMwLCAxNTksIDQ4LCA0LCAyMjIsIDM5LCA0OCwgNCwgMjAzLCAKLSAgICA0OSwgNDgsIDQsIDIyOSwgMTk4LCA0OCwgNCwgMjIyLCAxNzYsIDQ4LCA0LCAyMzgsIDE4MiwgNDgsIDQsIDIyNSwgOCwgNDgsIAotICAgIDQsIDIyMiwgMjM1LCA0OCwgNCwgMjIxLCAwLCA0OCwgNCwgNzUsIDQ4LCA0LCAyMzEsIDQ5LCA0OCwgNCwgMjM3LCAzLCA0OCwgCi0gICAgNCwgMjM2LCAyMzgsIDQ4LCA0LCAyMDQsIDMwLCA0OCwgNCwgMjA0LCAxOCwgNDgsIDQsIDIxOCwgMTY3LCA0OCwgNCwgMjQ4LCAKLSAgICA5MSwgNDgsIDQsIDI0OCwgODYsIDQ4LCA0LCAyMjUsIDM5LCA0OCwgNCwgMjI4LCAyMzYsIDQ4LCA0LCAyMjQsIDE4NCwgNDgsIAotICAgIDQsIDIzOCwgMTk5LCA0OCwgNCwgMjQwLCAyNiwgNDgsIDQsIDIwNSwgMjMwLCA0OCwgNCwgMjA5LCAyLCA0OCwgNCwgMjA5LCAKLSAgICA3MCwgNDgsIDQsIDI0MywgMjM5LCA0OCwgNCwgMjQzLCAyNDMsIDQ4LCA0LCAyMjcsIDE0OCwgNDgsIDQsIDIxNiwgNTcsIAotICAgIDQ4LCA0LCAyNDMsIDIzMywgNDgsIDQsIDIyMywgMTAsIDQ4LCA0LCAyMTIsIDE2MiwgNDgsIDQsIDIxMywgMTEsIDQ4LCA0LCAKLSAgICAyMDIsIDM5LCA0OCwgNCwgMjAyLCA2NiwgNDgsIDQsIDI0NiwgNzksIDQ4LCA0LCAyMzAsIDE0MSwgNDgsIDQsIDIyMiwgMzIsIAotICAgIDQ4LCA0LCAyMDMsIDExLCA0OCwgNCwgMjI5LCAxMDAsIDQ4LCA0LCAyMjIsIDE2OCwgNDgsIDQsIDIzOCwgODEsIDQ4LCA0LCAKLSAgICAyMjQsIDE1NSwgNDgsIDQsIDIyMiwgMTAwLCA0OCwgNCwgMjIwLCAyNDgsIDQ4LCA0LCA2MywgNDgsIDQsIDI1MCwgMjMxLCAKLSAgICA0OCwgNCwgMjIyLCAxOTgsIDQ4LCA0LCAxNTIsIDQ4LCA0LCAyMzcsIDEyNiwgNDgsIDQsIDIwNCwgMTExLCA0OCwgNCwgCi0gICAgMjA0LCA5NywgNDgsIDQsIDE4NSwgNDgsIDQsIDI0OCwgOTgsIDQ4LCA0LCAyNDksIDMyLCA0OCwgNCwgMjI1LCA1NCwgNDgsIAotICAgIDQsIDIyOCwgMjQ0LCA0OCwgNCwgMjI4LCAyNDIsIDQ4LCA0LCAyMjQsIDE5MSwgNDgsIDQsIDIzOCwgMjA3LCA0OCwgNCwgCi0gICAgMjQwLCAxMDgsIDQ4LCA0LCAyMDYsIDg2LCA0OCwgNCwgMjEwLCAyMiwgNDgsIDQsIDIwOSwgMTA4LCA0OCwgNCwgMjQ0LCAxLCAKLSAgICA0OCwgNCwgMjQzLCAyNDYsIDQ4LCA0LCAyMjgsIDExMywgNDgsIDQsIDIxNiwgMjIwLCA0OCwgNCwgMjQ0LCAyMTIsIDQ4LCAKLSAgICA0LCAyMjMsIDI1LCA0OCwgNCwgMjE1LCAzNiwgNDgsIDQsIDIxMywgOTAsIDQ4LCA0LCAyMDIsIDExNiwgNDgsIDQsIDIwMiwgCi0gICAgODAsIDQ4LCA0LCAyNDcsIDkyLCA0OCwgNCwgMjMwLCAxODEsIDQ4LCA0LCAyMjIsIDQ4LCA0OCwgNCwgMTk4LCA0OCwgNCwgCi0gICAgMTczLCA0OCwgNCwgMjMwLCA0LCA0OCwgNCwgMjIyLCAxODIsIDQ4LCA0LCAyMzksIDgsIDQ4LCA0LCAxOTIsIDQ4LCA0LCAKLSAgICAyMDEsIDIwMSwgNDgsIDQsIDIyMSwgMTEsIDQ4LCA0LCAyMjAsIDE4LCA0OCwgNCwgMjIwLCAxMywgNDgsIDQsIDIzNiwgCi0gICAgMTE3LCA0OCwgNCwgMjAzLCAyNDQsIDQ4LCA0LCAyMDMsIDI0MCwgNDgsIDQsIDIxOCwgNDUsIDQ4LCA0LCAyNDgsIDg5LCAKLSAgICA0OCwgNCwgMjQ4LCAxMCwgNDgsIDQsIDIyNSwgMzQsIDQ4LCA0LCAyMjgsIDIzNCwgNDgsIDQsIDIyNCwgMTgwLCA0OCwgNCwgCi0gICAgMjM4LCAxOTUsIDQ4LCA0LCAyMzksIDE3NSwgNDgsIDQsIDIwNSwgMTc2LCA0OCwgNCwgMjA4LCAxNDgsIDQ4LCA0LCAyMDksIAotICAgIDQyLCA0OCwgNCwgMjQzLCAyMzYsIDQ4LCA0LCAyNDMsIDI0MSwgNDgsIDQsIDIyNywgMTgsIDQ4LCA0LCAyMTUsIDIwOCwgCi0gICAgNDgsIDQsIDI0MywgOTAsIDQ4LCA0LCAyMjIsIDI1MywgNDgsIDQsIDIxMSwgMjUwLCA0OCwgNCwgMjEyLCAyMzYsIDQ4LCA0LCAKLSAgICAyMDIsIDE1LCA0OCwgNCwgMjAyLCA2MSwgNDgsIDQsIDI0NSwgMTgwLCA0OCwgNCwgMjMwLCA5MSwgNDgsIDQsIDIyMiwgMjIsIAotICAgIDQ4LCA0LCAyMDIsIDIzMiwgNDgsIDQsIDIyOSwgNiwgNDgsIDQsIDIyMiwgMTY2LCA0OCwgNCwgMjM4LCAyOCwgNDgsIDQsIAotICAgIDIyNCwgMzUsIDQ4LCA0LCAyMjEsIDE4MCwgNDgsIDQsIDIyMCwgMjMwLCA0OCwgNCwgNjgsIDQ4LCA0LCAyMDYsIDI1NSwgCi0gICAgNDgsIDQsIDIzNiwgMjYsIDQ4LCA0LCAyMzYsIDEzLCA0OCwgNCwgMjAzLCAyMTcsIDQ4LCA0LCAyMDMsIDIxMCwgNDgsIDQsIAotICAgIDIxNywgMTkxLCA0OCwgNCwgMjQ4LCA4OCwgNDgsIDQsIDI0NywgMTkzLCA0OCwgNCwgMjI1LCAzMywgNDgsIDQsIDIyOCwgCi0gICAgMjMyLCA0OCwgNCwgMjI0LCAxNzksIDQ4LCA0LCAyMzgsIDE5NCwgNDgsIDQsIDIzOSwgMTA4LCA0OCwgNCwgMjA0LCAxNjMsIAotICAgIDQ4LCA0LCAyMDcsIDIwMywgNDgsIDQsIDIwOSwgMjIsIDQ4LCA0LCAyNDMsIDIzNCwgNDgsIDQsIDI0MywgMjQwLCA0OCwgNCwgCi0gICAgMjI2LCAyMzksIDQ4LCA0LCAyMTUsIDE0NSwgNDgsIDQsIDI0MiwgNDIsIDQ4LCA0LCAyMjIsIDI0OCwgNDgsIDQsIDIxMSwgCi0gICAgMTAsIDQ4LCA0LCAyMTIsIDE5OSwgNDgsIDQsIDIwMiwgNiwgNDgsIDQsIDIwMiwgNTcsIDQ4LCA0LCAyNDUsIDExMCwgNDgsIAotICAgIDQsIDIzMCwgODIsIDQ4LCA0LCAyMjIsIDE4LCA0OCwgNCwgMjAyLCAyMTMsIDQ4LCA0LCAyMjgsIDIwOSwgNDgsIDQsIDIyMiwgCi0gICAgMTY1LCA0OCwgNCwgMjM3LCAyMzAsIDQ4LCA0LCAyMjMsIDI0NiwgNDgsIDQsIDIyMSwgODQsIDQ4LCA0LCAyMjAsIDIyNiwgCi0gICAgNDgsIDQsIDc4LCA0OCwgNCwgMjIwLCAzMSwgNDgsIDQsIDIyMiwgMTI0LCA0OCwgNCwgMjM2LCAxMzYsIDQ4LCA0LCAyMzYsIAotICAgIDEyMCwgNDgsIDQsIDIwNCwgMCwgNDgsIDQsIDIwMywgMjQ1LCA0OCwgNCwgMjE4LCA2OSwgNDgsIDQsIDI0OCwgOTAsIDQ4LCAKLSAgICA0LCAyNDgsIDIzLCA0OCwgNCwgMjI1LCAzNSwgNDgsIDQsIDIyOCwgMjM1LCA0OCwgNCwgMjI0LCAxODIsIDQ4LCA0LCAyMzgsIAotICAgIDE5NywgNDgsIDQsIDIzOCwgMTk2LCA0OCwgNCwgMjM5LCAxODYsIDQ4LCA0LCAyMDUsIDE4OSwgNDgsIDQsIDEzNSwgNDgsIAotICAgIDQsIDIwOSwgNDcsIDQ4LCA0LCAyNDMsIDIzNywgNDgsIDQsIDI0MywgMjQyLCA0OCwgNCwgMjI3LCA0OSwgNDgsIDQsIDIxNSwgCi0gICAgMjI3LCA0OCwgNCwgMjQzLCAxMTMsIDQ4LCA0LCAyMjMsIDEsIDQ4LCA0LCAyMTIsIDEzLCA0OCwgNCwgMjEyLCAyNDIsIDQ4LCAKLSAgICA0LCAyMDIsIDE3LCA0OCwgNCwgMjAyLCA2MywgNDgsIDQsIDI0NSwgMjU0LCA0OCwgNCwgMjMwLCAxMDEsIDQ4LCA0LCAyMjIsIAotICAgIDIzLCA0OCwgNCwgMjAyLCAyNDcsIDQ4LCA0LCAyMjksIDI2LCA0OCwgNCwgMjIyLCAxNjcsIDQ4LCA0LCAyMzgsIDM5LCA0OCwgCi0gICAgNCwgMjI0LCA4MiwgNDgsIDQsIDIyMSwgMTkxLCA0OCwgNCwgMjIwLCAyMzMsIDQ4LCA0LCA3NCwgNDgsIDQsIDI0MSwgOTIsIAotICAgIDQ4LCA0LCAyMjIsIDE4NywgNDgsIDQsIDIzNywgNjcsIDQ4LCA0LCAyMzcsIDMzLCA0OCwgNCwgMjA0LCA2MiwgNDgsIDQsIAotICAgIDIwNCwgNDksIDQ4LCA0LCAyMTksIDM0LCA0OCwgNCwgMjQ4LCA5NCwgNDgsIDQsIDI0OCwgMTYyLCA0OCwgNCwgMjI1LCA0NywgCi0gICAgNDgsIDQsIDIyOCwgMjQwLCA0OCwgNCwgMjI4LCAyMzgsIDQ4LCA0LCAyMjQsIDE4OCwgNDgsIDQsIDIzOCwgMjA0LCA0OCwgCi0gICAgNCwgMjM4LCAyMDIsIDQ4LCA0LCAyNDAsIDYwLCA0OCwgNCwgMjA2LCA1NSwgNDgsIDQsIDIwOSwgMTg3LCA0OCwgNCwgMjA5LCAKLSAgICA5MiwgNDgsIDQsIDI0MywgMjQ4LCA0OCwgNCwgMjQzLCAyNDUsIDQ4LCA0LCAyMjcsIDIzNCwgNDgsIDQsIDIxNiwgMTU4LCAKLSAgICA0OCwgNCwgMjQ0LCA3NSwgNDgsIDQsIDIyMywgMTcsIDQ4LCA0LCAyMTQsIDE3NywgNDgsIDQsIDIxMywgNDMsIDQ4LCA0LCAKLSAgICAyMDIsIDkyLCA0OCwgNCwgMjAyLCA3MSwgNDgsIDQsIDI0NiwgMjM4LCA0OCwgNCwgMjMwLCAxNjEsIDQ4LCA0LCAyMjIsIAotICAgIDQxLCA0OCwgNCwgMjAzLCA1MiwgNDgsIDQsIDIyOSwgMjAxLCA0OCwgNCwgMjIyLCAxNzcsIDQ4LCA0LCAyMjIsIDE3MywgCi0gICAgNDgsIDQsIDIzOCwgMTkwLCA0OCwgNCwgMjM4LCAxNzcsIDQ4LCA0LCAyMjUsIDIwLCA0OCwgNCwgMjIyLCAyNDAsIDQ4LCA0LCAKLSAgICAyMjEsIDEsIDQ4LCA0LCAyMjIsIDIwNSwgNDgsIDQsIDIyNywgMTg4LCA0OCwgMjQ1LCAyMzMsIDQ4LCAyMzksIDEwMiwgCi0gICAgMjExLCA2MSwgNDgsIDIxNywgNDcsIDgyLCA0OCwgNCwgMjIzLCAwLCAyNDAsIDEwOCwgNDgsIDQsIDIyMywgMCwgMTczLCAKLSAgICA0OCwgNCwgMjIzLCAwLCAyMTEsIDI1MCwgNDgsIDE2LCAyNDAsIDQ5LCA0OCwgMTYsIDIyOSwgMTk2LCA0OCwgMTYsIDIwOCwgCi0gICAgMjE1LCA0OCwgMTYsIDIyMiwgNzUsIDQ4LCAxNiwgMjQ4LCAyMzcsIDQ4LCAxNiwgMjQwLCAxMDcsIDQ4LCAxNiwgMjEwLCAKLSAgICAxOCwgNDgsIDE2LCAyNDQsIDE2NCwgNDgsIDE2LCAyNDMsIDg5LCA0OCwgMTYsIDIyOCwgMTkzLCA0OCwgMTYsIDIwOCwgCi0gICAgMTUyLCA0OCwgMTYsIDI0MywgMTEyLCA0OCwgMTYsIDIzMCwgOTIsIDQ4LCAxNywgMjAyLCA4NCwgNDgsIDE3LCAxMDUsIDQ4LCAKLSAgICAxNywgMTA4LCA0OCwgMTcsIDE0NywgNDgsIDE3LCAxNDksIDQ4LCAxNywgMTcwLCA0OCwgMTcsIDE5NSwgNDgsIDE3LCAyMTMsIAotICAgIDExMSwgNDgsIDE3LCAxOTksIDQ4LCAxNywgMjIyLCA2MywgNDgsIDQsIDIyMywgMCwgMTkyLCA0OCwgNCwgMjIzLCAwLCAKLSAgICAyNDMsIDExMywgMzYsIDYsIDEsIDIwMiwgODgsIDM2LCA1LCAxLCAyMDIsIDg4LCAzNiwgNiwgMSwgMjQxLCAyNTAsIDM2LCAKLSAgICA1LCAxLCAyNDEsIDI1MCwgMzYsIDYsIDEsIDIxNiwgNzMsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjE2LCA3MywgMjQxLCAyNTIsIAotICAgIDM2LCA2LCAxLCAyMzAsIDIzMCwgMzYsIDUsIDEsIDIzMCwgMjMwLCAzNiwgNiwgMSwgMjQzLCAxMjksIDM2LCA1LCAxLCAKLSAgICAyNDMsIDEyOSwgMzYsIDYsIDEsIDIyNCwgNDMsIDIwNywgMTQsIDM2LCA1LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzNiwgNiwgCi0gICAgMSwgMjQ3LCAyMDQsIDIyMCwgMzYsIDM2LCA1LCAxLCAyNDcsIDIwNCwgMjIwLCAzNiwgMzYsIDYsIDEsIDIyMiwgMjE2LCAKLSAgICAyMDMsIDM0LCAzNiwgNSwgMSwgMjIyLCAyMTYsIDIwMywgMzQsIDM2LCA2LCAxLCAyMDMsIDMxLCAzLCAyNDksIDI2LCAyMDMsIAotICAgIDM0LCAzNiwgNSwgMSwgMjAzLCAzMSwgMywgMjQ5LCAyNiwgMjAzLCAzNCwgMzYsIDYsIDEsIDIzMCwgMjI4LCAyMDMsIDY2LCAKLSAgICAzNiwgNSwgMSwgMjMwLCAyMjgsIDIwMywgNjYsIDM2LCA2LCAxLCAyMTYsIDczLCAyMDIsIDIxMywgMzYsIDUsIDEsIDIxNiwgCi0gICAgNzMsIDIwMiwgMjEzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIDYzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDYzLCAzNiwgNiwgMSwgCi0gICAgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyNDYsIDE2LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDYsIAotICAgIDEsIDI0OCwgMzUsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ4LCAzNSwgMjAyLCAxODMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgCi0gICAgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAKLSAgICAxODMsIDM2LCA2LCAxLCAyMDIsIDI0OSwgMzYsIDUsIDEsIDIwMiwgMjQ5LCAzNiwgNiwgMSwgMjE2LCA3MywgMjA4LCAxNCwgCi0gICAgMzYsIDUsIDEsIDIxNiwgNzMsIDIwOCwgMTQsIDM2LCA2LCAxLCAyMTIsIDcsIDI0NCwgNzUsIDM2LCA1LCAxLCAyMTIsIDcsIAotICAgIDI0NCwgNzUsIDM2LCA2LCAxLCAyMTIsIDcsIDI0MSwgMTIyLCAzNiwgNSwgMSwgMjEyLCA3LCAyNDEsIDEyMiwgMzYsIDYsIAotICAgIDEsIDIxMiwgNywgMjQxLCAxMDMsIDM2LCA1LCAxLCAyMTIsIDcsIDI0MSwgMTAzLCAzNiwgNiwgMSwgMjI0LCA0NywgNzgsIAotICAgIDM2LCA1LCAxLCAyMjQsIDQ3LCA3OCwgMzYsIDYsIDEsIDI0OCwgNjMsIDc4LCAzNiwgNSwgMSwgMjQ4LCA2MywgNzgsIDM2LCAKLSAgICA2LCAxLCA1MiwgMjI0LCA0NywgNzgsIDM2LCA1LCAxLCA1MiwgMjI0LCA0NywgNzgsIDM2LCAxLCAyMjMsIDIyNywgNzgsIAotICAgIDM5LCAzNiwgMjA0LCAxNDYsIDM5LCAzNiwgMjA5LCAxNTMsIDIyNCwgMTE0LCA1NCwgMzksIDM2LCAyMzYsIDEyLCAyMjQsIAotICAgIDExNCwgNTQsIDM5LCAzNiwgMjA5LCAzNywgMjI0LCAxMTQsIDU0LCAyMTIsIDU1LCAyNTAsIDU5LCAzOSwgMzYsIDEsIDIwNywgCi0gICAgMTEsIDIzMSwgMTEwLCAzOSwgMzYsIDEsIDc1LCAzOSwgMzYsIDEsIDIwMywgMTEsIDM5LCAzNiwgMSwgNjgsIDM5LCAzNiwgCi0gICAgMSwgMjM3LCA5MSwgNTQsIDM5LCAzNiwgMSwgMjAzLCAzMCwgMzksIDM2LCAxLCAyMTIsIDcsIDU0LCAzOSwgMzYsIDEsIAotICAgIDIyMCwgMzYsIDM5LCAzNiwgMjI5LCAyMTMsIDM5LCAzNiwgMjE5LCA0MSwgMzYsIDIyOSwgMjEzLCAzNiwgMjE5LCA0MSwgCi0gICAgMzYsIDYsIDEsIDI0MiwgOSwgMzYsIDUsIDEsIDI0MiwgOSwgMzYsIDYsIDEsIDI0MSwgMjQxLCAzNiwgNSwgMSwgMjQxLCAKLSAgICAyNDEsIDM2LCA2LCAxLCAyMDIsIDQ3LCAzNiwgNSwgMSwgMjAyLCA0NywgMzYsIDYsIDEsIDI0NiwgMjU0LCAzNiwgNSwgMSwgCi0gICAgMjQ2LCAyNTQsIDM2LCA2LCAxLCAyNDEsIDIzOCwgMzYsIDUsIDEsIDI0MSwgMjM4LCAzNiwgNiwgMSwgMjA5LCAxODgsIDMsIAotICAgIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjA5LCAxODgsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjA3LCAxNTgsIDM2LCA1LCAxLCAKLSAgICAyMDcsIDE1OCwgMzYsIDYsIDEsIDIwNywgMjQ1LCAzNiwgNSwgMSwgMjA3LCAyNDUsIDM2LCA2LCAxLCAyMDcsIDI1MCwgMzYsIAotICAgIDUsIDEsIDIwNywgMjUwLCAzNiwgNiwgMSwgMjA5LCAxOTMsIDM2LCA1LCAxLCAyMDksIDE5MywgMzYsIDYsIDEsIDIzNSwgCi0gICAgMjUxLCAzNiwgNSwgMSwgMjM1LCAyNTEsIDM2LCA2LCAxLCAyMTIsIDE3NywgMzYsIDUsIDEsIDIxMiwgMTc3LCAzNiwgNiwgCi0gICAgMSwgNTIsIDc4LCAzNiwgNSwgMSwgNTIsIDc4LCAzNiwgNiwgMSwgMjQ1LCAxMjgsIDc4LCAzNiwgNSwgMSwgMjQ1LCAxMjgsIAotICAgIDc4LCA2NSwgMSwgMzYsIDIzNywgOTEsIDU0LCA2NSwgMSwgMzYsIDIxMiwgNywgNTQsIDM5LCAzNiwgMSwgMjQxLCAxNTQsIAotICAgIDM5LCAzNiwgMSwgMjMwLCAyMjgsIDc0LCAyNCwgMSwgNjMsIDI0LCAxLCAxNzMsIDI0LCAxLCA2OCwgMjQsIDEsIDIyOCwgCi0gICAgMjA5LCAyNCwgMSwgMjQxLCAxNjEsIDI0LCAxLCAyMTYsIDEzNSwgMjQsIDEsIDIxMCwgMSwgMjQsIDEsIDc4LCAyNCwgMSwgCi0gICAgMjIwLCAyNDgsIDI0LCAxLCA3NSwgMjQsIDEsIDIyOCwgMTEzLCAyNCwgMSwgMTg1LCAyNCwgMSwgMjE2LCAzLCAyNCwgMSwgCi0gICAgMjE2LCA1MCwgMjQsIDEsIDIyNywgMjI1LCAyNCwgMSwgMjI1LCA3LCAyNCwgMSwgMjEwLCAxOCwgMjQsIDEsIDIyMywgMjMsIAotICAgIDI0LCAxLCAyMjIsIDQ2LCAyNCwgMSwgMjI2LCAxODUsIDI0LCAxLCAyMTAsIDE3OSwgMjQsIDEsIDIyMywgMjQ2LCAyNCwgMSwgCi0gICAgMjEzLCA2LCAyNCwgMSwgMjEyLCAxNjIsIDI0LCAxLCAyMTMsIDE2LCAyNCwgMSwgMjEzLCAxMTMsIDI0LCAxLCAyMjgsIAotICAgIDEzNywgMjQsIDEsIDIyOSwgMTcwLCAyNCwgMSwgMjIxLCA1NSwgMjQsIDEsIDIyMSwgODQsIDI0LCAxLCAyMjIsIDE3LCAyNCwgCi0gICAgMSwgMjAyLCAyMjksIDI0LCAxLCAyMTIsIDE5OSwgMjQsIDEsIDIwMiwgMTg3LCAyNCwgMSwgMTk4LCAyNCwgMSwgMjIxLCAKLSAgICAxMTgsIDI0LCAxLCAyMjksIDE1NiwgMjQsIDEsIDIxOCwgMjEyLCAyNCwgMSwgMjIyLCAzOSwgMjQsIDEsIDIyMSwgOTksIAotICAgIDI0LCAxLCAyMTcsIDE4MywgMjQsIDEsIDIwMywgMjE0LCAyNCwgMSwgMjE5LCAyMywgMjQsIDEsIDI0MCwgNTMsIDI0LCAxLCAKLSAgICAyMTUsIDE0NSwgMjQsIDEsIDIyNiwgMjM5LCAyNCwgMSwgMjI0LCAxNTUsIDI0LCAxLCAyMjIsIDEwMCwgMjQsIDEsIDIxNiwgCi0gICAgNzUsIDI0LCAxLCAyMTYsIDIwMiwgMjQsIDEsIDIyOSwgMTgwLCAyNCwgMSwgMjIyLCAxMzEsIDI0LCAxLCAyMjIsIDE4MiwgCi0gICAgMjQsIDEsIDIyMiwgMjAzLCAyNCwgMSwgMjEyLCAyNDIsIDI0LCAxLCAyMTcsIDE4OCwgMjQsIDEsIDIzOSwgMTA4LCAyNCwgCi0gICAgMSwgMjM5LCAxNzksIDI0LCAxLCAyMDQsIDExMSwgMjQsIDEsIDIwMSwgMjAxLCAyNCwgMSwgMjI3LCAxNDgsIDI0LCAxLCAKLSAgICAyMTgsIDE2NywgMjQsIDEsIDIyNywgMTAsIDI0LCAxLCAyMjksIDI2LCAyNCwgMSwgMjI1LCA0NCwgMjQsIDEsIDIxNiwgCi0gICAgMTA3LCAyNCwgMSwgMjI0LCAyNDAsIDI0LCAxLCAxOTIsIDI0LCAxLCAyMDksIDIsIDI0LCAxLCAyMjksIDEwMCwgMjQsIDEsIAotICAgIDIyNCwgODIsIDI0LCAxLCAyMjUsIDUyLCAyNCwgMSwgMjA5LCAxMzIsIDI0LCAxLCAyMjgsIDI0NCwgMjQsIDEsIDIwOSwgCi0gICAgMTUyLCAyNCwgMSwgMjIxLCA4NiwgMjQsIDEsIDIxNCwgMjUxLCAyNCwgMSwgMjQwLCAxMDQsIDI0LCAxLCAyMjgsIDI0NiwgCi0gICAgMjQsIDEsIDIyOSwgMjEsIDI0LCAzOSwgMTMxLCAyMjgsIDI1NSwgMjQsIDM5LCAxMzEsIDIwNywgMTk0LCAyNCwgMjIyLCAKLSAgICA0NSwgMjQsIDIzOSwgMTAyLCAyMTEsIDYxLCAyNCwgMjQ1LCAyNDIsIDI0LCAyNDUsIDIzMywgMjQsIDIxMywgMTQzLCAyNCwgCi0gICAgMjE3LCA0NywgODIsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIDIxOCwgMTE5LCA2NSwgMSwgMjQ2LCAxMjgsIAotICAgIDE0MywgMjAzLCA3NywgMjE4LCAxMTksIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIDIxMywgNjUsIDY1LCAxLCAKLSAgICAyNDYsIDEyOCwgMTQzLCAyMDMsIDc3LCAyMTMsIDY1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTcsIDY1LCAKLSAgICA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjE3LCA2NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgCi0gICAgMjE1LCAxNDUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDc3LCAyMTUsIDE0NSwgNjUsIDEsIDI0MCwgMTk4LCAyNDIsIAotICAgIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDEzOCwgMjQyLCA4MywgMTQzLCAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjQyLCA4MywgCi0gICAgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDI0MiwgODMsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MiwgODMsIDE0MywgCi0gICAgMTQyLCA2NSwgMSwgMjQwLCAxOTgsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDEzOCwgMjQyLCA4MywgCi0gICAgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIAotICAgIDEyNCwgMjQyLCA4MywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MiwgODMsIDIyNywgMjE0LCAKLSAgICAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk4LCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDIyNywgMjE0LCAxNDMsIAotICAgIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDIyNywgMjE0LCAxNDMsIDE0MiwgCi0gICAgNjUsIDEsIDI0MCwgMTk3LCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCA3MCwgODAsIDE0MiwgNjUsIDEsIDcwLCAyMTIsIAotICAgIDU3LCA2NSwgMSwgNzAsIDIzNiwgMTA2LCAxNDIsIDY1LCAxLCAyMjYsIDI1MSwgNTAsIDI0NSwgMTY2LCAyNTAsIDIxNywgCi0gICAgNjUsIDEsIDIxNiwgMTg4LCAxMTIsIDQ3LCA2NSwgMSwgMjE2LCAxODgsIDEyMSwgNDcsIDY1LCAxLCAyMTYsIDE4OCwgMjQwLCAKLSAgICAyMTIsIDgyLCA2NSwgMSwgMjE2LCAxODgsIDIzMCwgMjM5LCAyNDAsIDIxMiwgODIsIDY1LCAxLCAxMjQsIDIzMCwgMjM5LCAKLSAgICAyNDAsIDIxMiwgODIsIDY1LCAxLCAyMTEsIDQyLCAyNSwgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDIxMSwgNDIsIDI1LCAxMjQsIAotICAgIDIwOCwgMTYxLCA4LCA2LCAxLCAyNDEsIDE0OSwgMjUxLCAzMCwgOCwgNSwgMSwgMjQxLCAxNDksIDI1MSwgMzAsIDgsIDYsIAotICAgIDEsIDI0MSwgMTQ5LCAyNTEsIDU5LCA4LCA1LCAxLCAyNDEsIDE0OSwgMjUxLCA1OSwgOCwgNiwgMSwgMjM3LCAzMSwgOCwgNSwgCi0gICAgMSwgMjM3LCAzMSwgOCwgNiwgMSwgMjA3LCAxMDcsIDgsIDUsIDEsIDIwNywgMTA3LCA4LCA2LCAxLCAyMDgsIDg5LCA4LCA1LCAKLSAgICAxLCAyMDgsIDg5LCA4LCA2LCAxLCAyNDUsIDEwNywgOCwgNSwgMSwgMjQ1LCAxMDcsIDgsIDYsIDEsIDI0NSwgMTA4LCAzLCAKLSAgICAyNDUsIDIzMywgOCwgNSwgMSwgMjQ1LCAxMDgsIDMsIDI0NSwgMjMzLCA4LCAxLCA1LCA2LCAyNDAsIDE3NCwgOCwgMSwgNSwgCi0gICAgNiwgMTk0LCA4LCA2LCAxLCAyNTIsIDI1LCA4LCA1LCAxLCAyNTIsIDI1LCA4LCA2LCAxLCAyNTAsIDE3OCwgOCwgNSwgMSwgCi0gICAgMjUwLCAxNzgsIDgsIDYsIDEsIDI1MCwgMzQsIDgsIDUsIDEsIDI1MCwgMzQsIDgsIDYsIDEsIDI1MCwgMTgsIDgsIDUsIDEsIAotICAgIDI1MCwgMTgsIDgsIDYsIDEsIDI1MCwgMTksIDMsIDIzNiwgMTA2LCAxNDIsIDgsIDUsIDEsIDI1MCwgMTksIDMsIDIzNiwgCi0gICAgMTA2LCAxNDIsIDgsIDYsIDEsIDI1MCwgOCwgOCwgNSwgMSwgMjUwLCA4LCA4LCA2LCAxLCAyMTYsIDczLCAyNDcsIDEyNiwgCi0gICAgMywgMjQzLCA4NSwgOCwgNSwgMSwgMjE2LCA3MywgMjQ3LCAxMjYsIDMsIDI0MywgODUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIAotICAgIDk1LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAKLSAgICAyMzAsIDU1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDIxMSwgMzIsIDI1LCAyNDMsIDIyOCwgOTUsIAotICAgIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDIxMSwgMzIsIDI1LCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDI0NywgMjAzLCAxNTksIAotICAgIDgsIDUsIDEsIDI0NywgMjAzLCAxNTksIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMzgsIDk1LCA4LCA1LCAxLCAyMjgsIDEzMSwgCi0gICAgMywgMTM4LCA5NSwgOCwgNiwgMSwgMTU4LCAzLCAxNjMsIDIxMSwgMzIsIDIxOSwgMTk5LCA4LCA1LCAxLCAxNTgsIDMsIAotICAgIDE2MywgMjExLCAzMiwgMjE5LCAxOTksIDgsIDYsIDEsIDE1OCwgMywgMjI3LCAxNCwgOCwgNSwgMSwgMTU4LCAzLCAyMjcsIAotICAgIDE0LCA4LCA2LCAxLCAyMjAsIDE4LCA4LCA1LCAxLCAyMjAsIDE4LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMjExLCAzMiwgCi0gICAgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDYsIAotICAgIDEsIDIxOSwgMTg1LCAzLCAyMzksIDE5OSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIzOSwgMTk5LCA4LCA2LCAxLCAyMTksIAotICAgIDE4NSwgMywgMjExLCAxNzAsIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjExLCAxNzAsIDIwOSwgMjQ4LCA4LCAKLSAgICA2LCAxLCAyMTcsIDEzNSwgMywgMjExLCAzMiwgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIDIxMSwgCi0gICAgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDYsIDEsIDIxNywgMTM1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIDIxNywgCi0gICAgMTM1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIxNywgMSwgMjE1LCAxOTIsIDgsIDUsIDEsIDIxNywgMSwgMjE1LCAKLSAgICAxOTIsIDgsIDYsIDEsIDIxNSwgMTMyLCAyMTUsIDE5MiwgOCwgNSwgMSwgMjE1LCAxMzIsIDIxNSwgMTkyLCA4LCA2LCAxLCAKLSAgICAyMDYsIDE2NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAKLSAgICAyMDQsIDE1MiwgOCwgNSwgMSwgMjA0LCAxNTIsIDgsIDYsIDEsIDIwNSwgMTk3LCAyMDIsIDE1OSwgOCwgNSwgMSwgMjA1LCAKLSAgICAxOTcsIDIwMiwgMTU5LCA4LCA2LCAxLCAyMDksIDQxLCAzLCA5NSwgOCwgNSwgMSwgMjA5LCA0MSwgMywgOTUsIDgsIDYsIDEsIAotICAgIDIwOSwgNDEsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIwOSwgNDEsIDMsIDIxMSwgMzIsIDIwOSwgCi0gICAgMjUsIDI0NCwgMjAsIDgsIDYsIDEsIDIwNiwgNDUsIDgsIDUsIDEsIDIwNiwgNDUsIDgsIDYsIDEsIDI0MCwgMjUwLCA4LCA1LCAKLSAgICAxLCAyNDAsIDI1MCwgOCwgNiwgMSwgMjMwLCAyMTUsIDgsIDUsIDEsIDIzMCwgMjE1LCA4LCA2LCAxLCAyNDUsIDIxOCwgOCwgCi0gICAgNSwgMSwgMjQ1LCAyMTgsIDY1LCAxLCAyMDYsIDE5MywgOCwgNSwgMSwgMjQyLCAzMiwgOCwgNSwgMSwgMjI2LCAyMjIsIDgsIAotICAgIDUsIDEsIDIyMywgMjIwLCA4LCA1LCAxLCAyMjEsIDQ3LCA4LCA1LCAxLCAyMTUsIDEzMSwgOCwgMSwgNSwgNiwgMjE1LCAKLSAgICAxMzEsIDgsIDUsIDEsIDIwNywgMTkxLCA4LCA1LCAxLCAyMDcsIDYsIDgsIDYsIDEsIDIzMSwgNCwgMjQ1LCA1MSwgOCwgNSwgCi0gICAgMSwgMjMxLCA0LCAyNDUsIDUxLCA4LCA2LCAxLCAyMzEsIDQsIDI0MCwgMTc0LCA4LCA1LCAxLCAyMzEsIDQsIDI0MCwgMTc0LCAKLSAgICA4LCA2LCAxLCAyMzEsIDQsIDIzOSwgNzUsIDgsIDYsIDEsIDIwNywgMTc0LCAyMzEsIDQsIDIzOSwgNzUsIDgsIDUsIDEsIAotICAgIDIwNywgMTc0LCAyMzEsIDQsIDIzOSwgNzUsIDgsIDYsIDEsIDIwNywgMTc0LCAxNTksIDgsIDUsIDEsIDIwNywgMTc0LCAKLSAgICAxNTksIDgsIDYsIDEsIDIzMSwgNCwgMTQ2LCA4LCA1LCAxLCAyMzEsIDQsIDE0NiwgOCwgNiwgMSwgMjMxLCA0LCAxOTQsIDgsIAotICAgIDUsIDEsIDIzMSwgNCwgMTk0LCA4LCA2LCAxLCAyMzEsIDQsIDIxMCwgNjksIDgsIDUsIDEsIDIzMSwgNCwgMjEwLCA2OSwgCi0gICAgNjUsIDEsIDEyNCwgMjQ2LCA1MywgMjUxLCAxMzgsIDY1LCAxLCAyNDUsIDI0MiwgNjUsIDEsIDIxMiwgMjI4LCAyNDEsIDM1LCAKLSAgICA1NCwgOCwgNiwgMSwgMjE0LCAyNTUsIDgsIDUsIDEsIDIxNCwgMjU1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjM3LCAxNzEsIDgsIAotICAgIDUsIDEsIDIyOCwgMTMxLCAzLCAyMTYsIDc5LCAyMzYsIDExNiwgMjUsIDI0OCwgMTI0LCA4LCAxLCAyMTIsIDExNCwgMjQzLCAKLSAgICA4NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDQsIDIwLCA4LCA2LCAKLSAgICAxLCAyNDcsIDEyNiwgMywgMTQyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTQyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgCi0gICAgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDYsIDEsIDY2LCAzLCAyMzksIAotICAgIDE5OSwgOCwgNSwgMSwgNjYsIDMsIDIzOSwgMTk5LCA4LCA2LCAxLCAyNDAsIDE3NSwgMywgOTUsIDgsIDUsIDEsIDI0MCwgCi0gICAgMTc1LCAzLCA5NSwgOCwgNiwgMSwgMjA1LCAxODIsIDI1MSwgMTA5LCA4LCA1LCAxLCAyMDUsIDE4MiwgMjUxLCAxMDksIDgsIAotICAgIDYsIDEsIDIwNSwgMTgyLCAyMjAsIDczLCA4LCA1LCAxLCAyMDUsIDE4MiwgMjIwLCA3MywgOCwgNiwgMSwgMjA1LCAxODIsIAotICAgIDIwNywgMjQsIDgsIDUsIDEsIDIwNSwgMTgyLCAyMDcsIDI0LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyMjAsIDg5LCA5NSwgOCwgCi0gICAgNSwgMSwgMjM5LCA3NiwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAKLSAgICAyMzAsIDU1LCAzLCAyMjAsIDg5LCA5NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMjMsIAotICAgIDE2NCwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjIwLCA4OSwgOTUsIDgsIDUsIDEsIDIxNywgMSwgMywgCi0gICAgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyMjAsIAotICAgIDg5LCA5NSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDExMywgOCwgNiwgMSwgMjE2LCA3MywgMTcxLCA3NCwgOCwgNiwgMSwgCi0gICAgMTMyLCAyMzksIDc1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMjQ4LCAxMjQsIDgsIDYsIDEsIDIwNywgMTc0LCAyMzAsIDU0LCAKLSAgICA4LCA2LCAxLCAyMDcsIDE3NCwgMjEwLCA2OSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA4LCA2LCAxLCAyNDYsIAotICAgIDE0MiwgOCwgNiwgMSwgMjQ4LCAxMDYsIDgsIDUsIDEsIDI0OCwgMTA2LCA4LCA2LCAxLCAyMjAsIDM2LCA4LCA1LCAxLCAKLSAgICAyMjAsIDM2LCA4LCAyNDEsIDQwLCAxLCAyMTIsIDE1NCwgNzUsIDY1LCAxLCA2LCAyMzcsIDE3MiwgMywgOTUsIDY1LCAxLCAKLSAgICA1LCAzMiwgMjIwLCA3MywgOCwgMSwgNSwgNiwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCAyNDEsIDQwLCAxLCAyMTYsIDczLCAKLSAgICAyNDAsIDE3NCwgOCwgMjQxLCA0MCwgMSwgMjE2LCA3MywgMjE5LCAxODQsIDgsIDI0MSwgNDAsIDEsIDIzMCwgMjM5LCAyMjYsIAotICAgIDE4NSwgOCwgMjQxLCA0MCwgMSwgMjM1LCAyMDYsIDIyNywgMjAsIDgsIDI0MSwgNDAsIDEsIDI1MCwgMTI2LCAyMjYsIDE4NSwgCi0gICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDYzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyLCAKLSAgICAyNDIsIDExLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNjgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA3NCwgMjEwLCAxNDksIAotICAgIDIyMywgOTQsIDEsIDc4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgMjM3LCA4NSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyOSwgCi0gICAgMjYsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjksIDExNSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIzOCwgMzksIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAxLCAyMzgsIDkxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgMjUwLCAxODAsIDIxMCwgMTQ5LCAyMjMsIAotICAgIDk0LCAxLCAyNDUsIDI1NCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0NiwgMTE2LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgCi0gICAgMjMwLCAxMDEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzAsIDE0MywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIwNywgMjE4LCAKLSAgICAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjA3LCAyMjQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDQsIDkwLCAyMTAsIDE0OSwgCi0gICAgMjIzLCA5NCwgMSwgMjQ0LCA5OSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDEzNSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIAotICAgIDIwOSwgNDcsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDMsIDExMywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0MywgMjM3LCAKLSAgICAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjIxLCAxOTEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTgsIDY5LCAyMTAsIDE0OSwgCi0gICAgMjIzLCA5NCwgMSwgMjE4LCAxODAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDgsIDIzLCAyMTAsIDE0OSwgMjIzLCA5NCwgCi0gICAgMSwgMjQ4LCA5MCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyNCwgODIsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTUsIAotICAgIDIyNywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyNywgNDksIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTUsIDE3MSwgMjEwLCAKLSAgICAxNDksIDIyMywgOTQsIDEsIDIxMiwgMTMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzYsIDEzNiwgMjEwLCAxNDksIDIyMywgCi0gICAgOTQsIDIyLCAyLCA2MywgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCA3NSwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCAKLSAgICA2OCwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCA3NCwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCAyMjAsIDE4LCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MiwgMjEwLCAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTEsIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA4OSwgMTUzLCAKLSAgICAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMTcsIDU1LCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAKLSAgICAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjEyLCAKLSAgICA4MCwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyNDEsIDEzOCwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTI2LCAKLSAgICAyMTIsIDc5LCAxNTMsIDIzMSwgMzMsIDIxNywgNTYsIDgyLCAxNTMsIDIzMSwgMzMsIDIxOCwgOTYsIDgyLCAxNTMsIDIzMSwgCi0gICAgMzMsIDIxNSwgMTIwLCA4MiwgMTUzLCAyMzEsIDMzLCAyMTcsIDU3LCA4MiwgMjE4LCAyMDQsIDEsIDE3MywgMjE4LCAyMDQsIAotICAgIDEsIDIyOSwgMTQ0LCAyMTgsIDIwNCwgMSwgMjM5LCA4LCAyMTgsIDIwNCwgMSwgMjIyLCAyMDMsIDIxOCwgMjA0LCAxLCAKLSAgICAyNDcsIDkyLCAyMTgsIDIwNCwgMSwgMjQ2LCAxOTksIDIxOCwgMjA0LCAxLCAyMzAsIDE4MSwgMjE4LCAyMDQsIDEsIDIyMSwgCi0gICAgMTEsIDIxOCwgMjA0LCAxLCAyMTAsIDIyLCAyMTgsIDIwNCwgMSwgMjA5LCAxMDgsIDIxOCwgMjA0LCAxLCAyNDQsIDIxMiwgCi0gICAgMjE4LCAyMDQsIDEsIDIwMSwgMjAxLCAyMTgsIDIwNCwgMSwgMTg1LCAyMTgsIDIwNCwgMSwgMjE4LCAyMDgsIDIxOCwgMjA0LCAKLSAgICAxLCAyNDksIDMyLCAyMTgsIDIwNCwgMSwgMTkyLCAyMTgsIDIwNCwgMSwgMjA4LCAyMCwgMjE4LCAyMDQsIDEsIDIwOCwgMTAsIAotICAgIDIxOCwgMjA0LCAxLCAyNDEsIDI1NSwgMjE4LCAyMDQsIDEsIDIwNCwgMTExLCAyMTgsIDIwNCwgMSwgMjAyLCA4MCwgMjE4LCAKLSAgICAyMDQsIDEsIDIwMiwgMTE2LCAyMTgsIDIwNCwgMSwgNSwgNjMsIDIxOCwgMjA0LCAxLCAxOTgsIDIxOCwgMjA0LCAxLCAyMTYsIAotICAgIDIyMCwgMjE4LCAyMDQsIDEsIDIyOCwgMTEzLCAyMTgsIDIwNCwgMSwgMjEzLCA5MCwgMjE4LCAyMDQsIDEsIDIxNSwgMzYsIAotICAgIDIxOCwgMjA0LCAxLCAxNTIsIDIxOCwgMjA0LCAxLCA2MywgMjE4LCAyMDQsIDEsIDc1LCAyMTgsIDIwNCwgMSwgNjgsIDIxOCwgCi0gICAgMjA0LCAxLCA3NCwgMjE4LCAyMDQsIDEsIDc4LCAyMTgsIDIwNCwgMSwgMjE3LCAxMjYsIDIxOCwgMjA0LCAxLCAyMDMsIAotICAgIDE4MiwgMjE4LCAyMDQsIDEsIDI0MCwgMTA4LCAyMTgsIDIwNCwgMSwgMjM4LCAxNTUsIDIxOCwgMjA0LCAxLCAyNDEsIDE2MSwgCi0gICAgMjE4LCAyMDQsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgMjE4LCAyMDQsIDIxMCwgMjU0LCAxLCAxOTgsIDIxOCwgMjA0LCAxLCAKLSAgICAyMDcsIDI0MSwgMjE4LCAyMDQsIDEsIDIwNywgMjI5LCAyMTgsIDIwNCwgMSwgMjQ0LCAxMjAsIDIxOCwgMjA0LCAxLCAyMjEsIAotICAgIDIyNywgMjE4LCAyMDQsIDEsIDI1MCwgMjU1LCAxOTgsIDIxOCwgMjA0LCAxLCAyMDUsIDE4NSwgMjEzLCA5MCwgMjE4LCAKLSAgICAyMDQsIDEsIDIwNSwgMTg2LCAxNTIsIDIxOCwgMjA0LCAxLCAyNTAsIDY2LCAyNDAsIDEwOCwgMjE4LCAyMDQsIDIxMCwgCi0gICAgMjU0LCAxLCAyMTYsIDIyMCwgMjE4LCAyMDQsIDIxMCwgMjAxLCAxLCAyMTYsIDIyMCwgMjE4LCAyMDQsIDEsIDI0NywgNTIsIAotICAgIDIxOCwgMjA0LCAyMTIsIDEyMCwgMjM3LCA2NSwgODIsIDIxOCwgMjA0LCA1MiwgMjM3LCA2NSwgODIsIDIxOCwgMjA0LCAKLSAgICAxMzEsIDIxMywgODIsIDIxOCwgMjA0LCAxMzEsIDUyLCAyMTMsIDgyLCAyMTQsIDIxNSwgMiwgMjUwLCAxODAsIDIxNCwgCi0gICAgMjE1LCAyLCAyMDUsIDE5OSwgMjE0LCAyMTUsIDEsIDYzLCAyMTQsIDIxNSwgMSwgMjUyLCAyNSwgMjE0LCAyMTUsIDEsIDc1LCAKLSAgICAyMTQsIDIxNSwgMSwgMjMxLCA4MywgMjE0LCAyMTUsIDEsIDY4LCAyMTQsIDIxNSwgMSwgMjA2LCAxNzgsIDIxNCwgMjE1LCAKLSAgICAxLCAxMjUsIDE0NiwgMjE0LCAyMTUsIDEsIDEyNSwgMjE1LCAxODYsIDIxNCwgMjE1LCAxLCAxMjUsIDE1OSwgMjE0LCAyMTUsIAotICAgIDEsIDEyNSwgMjI3LCA3OCwgMjE0LCAyMTUsIDEsIDc0LCAyMTQsIDIxNSwgMSwgMjQxLCAxNjEsIDIxNCwgMjE1LCAxLCAKLSAgICAyNTEsIDY0LCAyMTQsIDIxNSwgMSwgNzgsIDIxNCwgMjE1LCAxLCAyMjAsIDE4LCAyMTQsIDIxNSwgMSwgMjUwLCAzNCwgCi0gICAgMjE0LCAyMTUsIDEsIDE3MywgMjE0LCAyMTUsIDEsIDIyOSwgMTQ0LCAyMTQsIDIxNSwgMSwgMjM5LCA4LCAyMTQsIDIxNSwgCi0gICAgMSwgMjM4LCAxMTksIDIxNCwgMjE1LCAxLCAyMjIsIDIwMywgMjE0LCAyMTUsIDEsIDI0NywgOTIsIDIxNCwgMjE1LCAxLCAKLSAgICAyNDYsIDE5OSwgMjE0LCAyMTUsIDEsIDIzMCwgMTgxLCAyMTQsIDIxNSwgMSwgMjMwLCAxNDksIDIxNCwgMjE1LCAxLCAyMjEsIAotICAgIDExLCAyMTQsIDIxNSwgMSwgMjA3LCAyNDEsIDIxNCwgMjE1LCAxLCAyMDcsIDIyOSwgMjE0LCAyMTUsIDEsIDI0NCwgMTIwLCAKLSAgICAyMTQsIDIxNSwgMSwgMjQ0LCAxMDQsIDIxNCwgMjE1LCAxLCAyMjEsIDIyNywgMjE0LCAyMTUsIDEsIDIxMCwgMjIsIDIxNCwgCi0gICAgMjE1LCAxLCAyMDksIDEwOCwgMjE0LCAyMTUsIDEsIDI0NCwgMjEyLCAyMTQsIDIxNSwgMSwgMjQ0LCAxLCAyMTQsIDIxNSwgCi0gICAgMSwgMjAxLCAyMDEsIDIxNCwgMjE1LCAxLCAxODUsIDIxNCwgMjE1LCAxLCAyMTgsIDIwOCwgMjE0LCAyMTUsIDEsIDI0OSwgCi0gICAgMzIsIDIxNCwgMjE1LCAxLCAyNDgsIDk4LCAyMTQsIDIxNSwgMSwgMTkyLCAyMTQsIDIxNSwgMSwgMTk4LCAyMTQsIDIxNSwgCi0gICAgMSwgMjE2LCAyMjAsIDIxNCwgMjE1LCAxLCAyMjgsIDExMywgMjE0LCAyMTUsIDEsIDIwNiwgODYsIDIxNCwgMjE1LCAxLCAKLSAgICAyMTMsIDkwLCAyMTQsIDIxNSwgMSwgMjExLCAxNjQsIDIxNCwgMjE1LCAxLCAyMTUsIDM2LCAyMTQsIDIxNSwgMSwgMTUyLCAKLSAgICAyMTQsIDIxNSwgMSwgMjI3LCA3NywgMjE0LCAyMTUsIDEwOSwgMiwgMjM3LCAxNTUsIDIxNCwgMjE1LCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgMjE0LCAyMTUsIDIyLCAyLCA3NSwgMjE0LCAyMTUsIDIyLCAyLCAyMzEsIDgzLCAyMTQsIDIxNSwgMjIsIDIsIDY4LCAKLSAgICAyMTQsIDIxNSwgMjIsIDIsIDIwNiwgMTc4LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMTQ2LCAyMTQsIDIxNSwgMjIsIDIsIAotICAgIDEyNSwgMjE1LCAxODYsIDIxNCwgMjE1LCAyMiwgMiwgMTI1LCAxNTksIDIxNCwgMjE1LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAKLSAgICAyMTQsIDIxNSwgMjIsIDIsIDc0LCAyMTQsIDIxNSwgMjIsIDIsIDI0MSwgMTYxLCAyMTQsIDIxNSwgMjIsIDIsIDI1MSwgNjQsIAotICAgIDIxNCwgMjE1LCAyMiwgMiwgNzgsIDIxNCwgMjE1LCAyMiwgMiwgMjIwLCAxOCwgMjE0LCAyMTUsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICAyMTQsIDIxNSwgMiwgMjA1LCAyMDQsIDIxNCwgMjE1LCAyNDQsIDE2NiwgMjE0LCAyMTUsIDUyLCAyNDQsIDE2NiwgMjE0LCAKLSAgICAyMTUsIDE3LCAyMDIsIDg0LCAyMTQsIDIxNSwgMTcsIDEwNSwgMjE0LCAyMTUsIDE3LCAxMDgsIDIxNCwgMjE1LCAxNywgCi0gICAgMTQ3LCAyMTQsIDIxNSwgMTcsIDE0OSwgMjE0LCAyMTUsIDE3LCAxNzAsIDIxNCwgMjE1LCAxNywgMTk1LCAyMTQsIDIxNSwgCi0gICAgMTcsIDIxMywgMTExLCAyMTQsIDIxNSwgMTcsIDE5OSwgMjE0LCAyMTUsIDE3LCAyMjIsIDYzLCAzOSwgOTIsIDE3LCAyMDIsIAotICAgIDg0LCAzOSwgOTIsIDE3LCAxMDUsIDM5LCA5MiwgMTcsIDEwOCwgMzksIDkyLCAxNywgMTQ3LCAzOSwgOTIsIDE3LCAxNDksIAotICAgIDM5LCA5MiwgMTcsIDE3MCwgMzksIDkyLCAxNywgMTk1LCAzOSwgOTIsIDE3LCAyMTMsIDExMSwgMzksIDkyLCAxNywgMTk5LCAKLSAgICAzOSwgOTIsIDE3LCAyMjIsIDYzLCAzOSwgOTIsIDEsIDYzLCAzOSwgOTIsIDEsIDY4LCAzOSwgOTIsIDEsIDE3MywgMzksIAotICAgIDkyLCAxLCAyMDEsIDIwMSwgMzksIDkyLCAxLCAxODUsIDM5LCA5MiwgMSwgMjE2LCAyMjAsIDM5LCA5MiwgMSwgMjA1LCAKLSAgICAyMzAsIDM5LCA5MiwgMiwgMjUwLCAxNywgOTIsIDIsIDIxMSwgMjI3LCAyNDcsIDUyLCA5MiwgMiwgMjQ3LCA1MywgMjA1LCAKLSAgICAyMDQsIDkyLCAyLCA1MiwgMjQ3LCA1MywgMjA1LCAyMDQsIDkyLCAyLCAyNDcsIDUzLCAxMDgsIDkyLCAyLCAyNDcsIDUzLCAKLSAgICAxNDcsIDkyLCAyLCAyNDcsIDUzLCAyNTAsIDE3LCA5MiwgMiwgMjE3LCAxNjIsIDkyLCAyMzgsIDIyOCwgMjQwLCA3LCA5MiwgCi0gICAgMjQ3LCAzMywgOTIsIDIzNywgNTgsIDkyLCAyLCAyMTIsIDE1NywgOTIsIDIzMCwgMTczLCAyMjAsIDM5LCAyMjksIDIwNywgCi0gICAgMjI3LCAxNDksIDE3LCAyMDIsIDg0LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxMDUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCi0gICAgMTcsIDEwOCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTQ3LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxNDksIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMTcsIDE3MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTk1LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDE3LCAyMTMsIDExMSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTk5LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAyMjIsIAotICAgIDYzLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE3MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjksIDE0NCwgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAyMzksIDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjIyLCAyMDMsIDIyOSwgMjA3LCAyMjcsIAotICAgIDE0OSwgMSwgMjE1LCAzNiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTMsIDkwLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIAotICAgIDIwMiwgMTE2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyMSwgMTEsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjEwLCAyMiwgCi0gICAgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMzYsIDMwLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIwMSwgMjAxLCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDEsIDE4NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTgsIDIwOCwgMjI5LCAyMDcsIDIyNywgCi0gICAgMTQ5LCAxLCAxOTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ0LCAyMTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ5LCAKLSAgICAzMiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTYsIDIyMCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxOTgsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMjI4LCAxMTMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjA0LCAxMTEsIDIyOSwgMjA3LCAKLSAgICAyMjcsIDE0OSwgMSwgMjA5LCAxMDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTUyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIAotICAgIDIwNiwgODYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ3LCA5MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCA2MywgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAyMjAsIDczLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDc1LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDEsIDIyMCwgMTgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDIwNywgMjQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDc0LCAKLSAgICAyMjksIDIwNywgMjI3LCAxNDksIDIyLCA2OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgMjQxLCAxNjEsIDIyOSwgMjA3LCAKLSAgICAyMjcsIDE0OSwgMjIsIDc4LCAyMjksIDIwNywgMjI3LCAxNDksIDE0MywgMjE4LCA4NCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxNDMsIDI0NywgNjgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTQzLCAyNDcsIDY5LCAyMTgsIDg0LCAyMjksIDIwNywgMjI3LCAKLSAgICAxNDksIDIsIDI0NSwgNzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMiwgMjEyLCAxNzAsIDIxNiwgMTE5LCAxLCAxNzMsIDIxNiwgCi0gICAgMTE5LCAxLCAyMzksIDgsIDIxNiwgMTE5LCAxLCAyMjIsIDIwMywgMjE2LCAxMTksIDEsIDIxMCwgMjIsIDIxNiwgMTE5LCAxLCAKLSAgICAyNDQsIDIxMiwgMjE2LCAxMTksIDEsIDIwMSwgMjAxLCAyMTYsIDExOSwgMSwgMTg1LCAyMTYsIDExOSwgMSwgMjQ5LCAzMiwgCi0gICAgMjE2LCAxMTksIDEsIDE5MiwgMjE2LCAxMTksIDEsIDI0NywgOTIsIDIxNiwgMTE5LCAxLCAyMzAsIDE4MSwgMjE2LCAxMTksIAotICAgIDEsIDIyMSwgMTEsIDIxNiwgMTE5LCAxLCAyMTUsIDM2LCAyMTYsIDExOSwgMSwgMjE2LCAyMjAsIDIxNiwgMTE5LCAxLCAKLSAgICAyMjgsIDExMywgMjE2LCAxMTksIDEsIDE5OCwgMjE2LCAxMTksIDEsIDIwNCwgMTExLCAyMTYsIDExOSwgMSwgMTUyLCAyMTYsIAotICAgIDExOSwgMSwgMjI1LCA1NCwgMjE2LCAxMTksIDEsIDIyMiwgMTgyLCAyMTYsIDExOSwgMSwgMjIzLCAyNSwgMjE2LCAxMTksIAotICAgIDEsIDIyMCwgMjM0LCAyMTYsIDExOSwgMSwgNjMsIDIxNiwgMTE5LCAyMiwgMiwgNzUsIDIxNiwgMTE5LCAyMiwgMiwgNjgsIAotICAgIDIxNiwgMTE5LCAyMiwgMiwgNzQsIDIxNiwgMTE5LCAyMiwgMiwgMjUxLCA2NCwgMjE2LCAxMTksIDIyLCAyLCA3OCwgMjE2LCAKLSAgICAxMTksIDIyLCAyLCAyNTAsIDM0LCAyMTYsIDExOSwgMjIsIDIsIDI0MCwgMjM4LCAyMTYsIDExOSwgMjIsIDIsIDI0MSwgCi0gICAgMTg5LCAyMTYsIDExOSwgMTA5LCAyLCAyMjIsIDIwNSwgMjE2LCAxMTksIDEwOSwgMiwgMjIzLCAxNjMsIDIxNiwgMTE5LCAKLSAgICAxMDksIDIsIDE0NiwgMjE2LCAxMTksIDEwOSwgMiwgMjM3LCAxNzEsIDIxNiwgMTE5LCAyMDUsIDIwNCwgMjE2LCAxMTksIAotICAgIDIxNCwgMTY4LCA4MiwgMjgsIDEyMywgMjA4LCAyMzYsIDI4LCAxMjMsIDIwOCwgMjM1LCAyOCwgMTIzLCAyMDgsIDIzMywgCi0gICAgMjgsIDEyMywgMjA4LCAyMzgsIDI4LCAxMjMsIDIxNiwgNDIsIDI4LCAxMjMsIDIxNiwgMjYsIDI4LCAxMjMsIDIxNiwgMjEsIAotICAgIDI4LCAxMjMsIDIxNiwgMjMsIDI4LCAxMjMsIDIxNiwgMzksIDI4LCAxMjMsIDIxNiwgMzIsIDI4LCAxMjMsIDIxNiwgMjUsIAotICAgIDI4LCAxMjMsIDIxNiwgNDQsIDI4LCAxMjMsIDIxNiwgMjcsIDI4LCAxMjMsIDIxNiwgNDYsIDI4LCAxMjMsIDIxNiwgNDMsIAotICAgIDI4LCAxMjMsIDIyNCwgMTM3LCAyOCwgMTIzLCAyMjQsIDEyOCwgMjgsIDEyMywgMjI0LCAxMzEsIDI4LCAxMjMsIDIxOCwgCi0gICAgMTM4LCAyOCwgMTIzLCAyMTgsIDE0OSwgMjgsIDEyMywgMjE4LCAxNTAsIDI4LCAxMjMsIDIxMSwgMTQ4LCAyOCwgMTIzLCAKLSAgICAyMzEsIDk2LCAyOCwgMTIzLCAyMzEsIDEwMywgMjgsIDEyMywgMjExLCAxNTksIDI4LCAxMjMsIDIxMSwgMTQ2LCAyOCwgCi0gICAgMTIzLCAyMTgsIDE4OSwgMjgsIDEyMywgMjM2LCAyNDYsIDI4LCAxMjMsIDIxMSwgMTQzLCAxOTAsIDIsIDIxOSwgMTAyLCAKLSAgICAxOTAsIDIsIDI0NiwgMjM1LCAxOTAsIDIsIDIyNywgMjQyLCAxOTAsIDIsIDIwNCwgMjAsIDE5MCwgMSwgNjMsIDE5MCwgMSwgCi0gICAgMjM1LCAyMDYsIDIyOSwgMjExLCAxOTAsIDEsIDc1LCAxOTAsIDEsIDIzMSwgODMsIDE5MCwgMSwgNjgsIDE5MCwgMSwgMjE5LCAKLSAgICAxNjksIDI0NiwgMjA1LCAxOTAsIDEsIDIyMiwgMjA0LCAyMjcsIDIwMSwgMTkwLCAxLCAyMjIsIDIwNCwgMjI3LCAyMDIsIAotICAgIDIxNiwgMTczLCAxOTAsIDEsIDc0LCAxOTAsIDEsIDI1MSwgNjQsIDE5MCwgMSwgNzgsIDE5MCwgMSwgMTczLCAxOTAsIDEsIAotICAgIDIzMCwgNDQsIDIxNCwgMjI3LCAxOTAsIDEsIDIzMCwgNDQsIDIyMywgMjA1LCAxOTAsIDEsIDIzOSwgOCwgMTkwLCAxLCAKLSAgICAyMzksIDksIDIyMywgMjA1LCAxOTAsIDEsIDIyMiwgMjAzLCAxOTAsIDEsIDI0NywgOTIsIDE5MCwgMSwgMjQ3LCA5MywgCi0gICAgMjIzLCAyMDUsIDE5MCwgMSwgMjMwLCAxODEsIDE5MCwgMSwgMjIxLCAxMiwgMjIzLCAyMDUsIDE5MCwgMSwgMjMwLCAxODIsIAotICAgIDIyNSwgMTQ0LCAxOTAsIDEsIDIyMSwgMTEsIDE5MCwgMSwgMjA3LCAyNDEsIDE5MCwgMSwgMjA3LCAyNDIsIDIyNSwgMTQ0LCAKLSAgICAxOTAsIDEsIDI0NCwgMTIwLCAxOTAsIDEsIDI0NCwgMTIxLCAyMjUsIDE0NCwgMTkwLCAxLCAyMjMsIDExMSwgMjIzLCAyMDUsIAotICAgIDE5MCwgMSwgMjEwLCAyMiwgMTkwLCAxLCAyMTAsIDIzLCAyMjMsIDIwNSwgMTkwLCAxLCAyNDQsIDIxMiwgMTkwLCAxLCAKLSAgICAyNDQsIDIxMywgMjI1LCAxNDQsIDE5MCwgMSwgMjAxLCAyMDEsIDE5MCwgMSwgMTg1LCAxOTAsIDEsIDIxOSwgMTY5LCAyMjMsIAotICAgIDIwNSwgMTkwLCAxLCAyNDksIDMyLCAxOTAsIDEsIDI0OSwgMzMsIDIyMywgMjA1LCAxOTAsIDEsIDE5MiwgMTkwLCAxLCAKLSAgICAxOTgsIDE5MCwgMSwgMjE2LCAyMjAsIDE5MCwgMSwgMjE2LCAyMjEsIDI1MSwgNzQsIDE5MCwgMSwgMjI4LCAxMTMsIDE5MCwgCi0gICAgMSwgMjA0LCAxMTEsIDE5MCwgMSwgMjE1LCAzNywgMjIzLCAyMDUsIDE5MCwgMSwgMjE1LCAzNywgMjI1LCAxNDQsIDE5MCwgCi0gICAgMSwgMjE1LCAzNiwgMTkwLCAxLCAxNTIsIDE5MCwgMiwgMjQ2LCAyMzYsIDIwOSwgMTU1LCAxOTAsIDIyLCAyLCAyMDksIAotICAgIDIxNCwgMTkwLCAyMiwgMiwgMjA4LCAxNjYsIDE5MCwgMjIsIDIsIDIwMywgMjExLCAxOTAsIDIyLCAyLCAyMDMsIDIxMiwgCi0gICAgMjI0LCAyNTEsIDE5MCwgMjIsIDIsIDIxMCwgMjI0LCAxOTAsIDIyLCAyLCAyMTAsIDIyNSwgMjI0LCAyMzksIDE5MCwgMjIsIAotICAgIDIsIDIwOSwgMjM1LCAxOTAsIDIyLCAyLCAyNDMsIDE2MywgMjIzLCAyMDQsIDE5MCwgMjIsIDIsIDIxOCwgMjQ5LCAxOTAsIAotICAgIDEwOSwgMiwgMjI5LCAxNzMsIDE5MCwgMTA5LCAyLCAyMTksIDYsIDE5MCwgMTA5LCAyLCAyNDcsIDc3LCAxOTAsIDIxOSwgCi0gICAgMTE1LCAxOTAsIDQ5LCAyMTYsIDkzLCAxOTAsIDUwLCAyMTYsIDkzLCAxOTAsIDIxOSwgMTU4LCAyNTAsIDIyNSwgMTkwLCAKLSAgICAyMTksIDE1OCwgMjI1LCAxNjIsIDE5MCwgMjE5LCAxNTgsIDIyNiwgMjI2LCAxOTAsIDIxOSwgMTU4LCAyMDQsIDE0LCAxOTAsIAotICAgIDIxOSwgMTU4LCAyMTksIDExNiwgMTkwLCAyMTksIDE1OCwgMjI3LCAxMDYsIDE5MCwgMjE5LCAxNTgsIDIyNiwgMjIwLCAKLSAgICAxOTAsIDIxOSwgMTU4LCAyNTEsIDExNiwgMTkwLCAyMTksIDE1OCwgMjUxLCAxMTcsIDI1MSwgMTE2LCAxOTAsIDIxOSwgCi0gICAgMTU4LCAyMTgsIDEwNywgMTkwLCAyMDcsIDE3NCwgMjE5LCAxNTgsIDIxOCwgMTA3LCAxOTAsIDIxOSwgMTExLCAxOTAsIDE3LCAKLSAgICAyMDIsIDg0LCAxOTAsIDE3LCAxMDUsIDE5MCwgMTcsIDEwOCwgMTkwLCAxNywgMTQ3LCAxOTAsIDE3LCAxNDksIDE5MCwgMTcsIAotICAgIDE3MCwgMTkwLCAxNywgMTk1LCAxOTAsIDE3LCAyMTMsIDExMSwgMTkwLCAxNywgMTk5LCAxOTAsIDE3LCAyMjIsIDYzLCAKLSAgICAxOTAsIDIxOSwgMTU4LCAyMDgsIDIwMiwgMjA3LCAxODksIDE5MCwgMjE5LCAxNTgsIDIzMCwgMjExLCA2OSwgMSwgMjEzLCAKLSAgICA2NywgMjM4LCAxMTksIDY5LCAxLCAyMTMsIDY3LCAyNDYsIDE5OSwgNjksIDEsIDIxMywgNjcsIDIzMCwgMTQ5LCA2OSwgMSwgCi0gICAgMjEzLCA2NywgMjIxLCAyMjcsIDY5LCAxLCAyMTMsIDY3LCAyNDgsIDk4LCA2OSwgMiwgMjEzLCA2NywgMjE0LCAyMTMsIDY5LCAKLSAgICA2NSwgMSwgMjEzLCA2NywgMjE2LCAxMzYsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjIxLCAxMSwgNjksIDEsIDQ1LCAyMjgsIAotICAgIDg1LCAyNDAsIDEwOCwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMzksIDgsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjM4LCAxMTksIAotICAgIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjMwLCAxODEsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjMwLCAxNDksIDY5LCAxLCA0NSwgCi0gICAgMjI4LCA4NSwgMjQ0LCAxMjAsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAxMDQsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjIxLCAKLSAgICAyMjcsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIwMiwgODQsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDEwNSwgNjksIDQ1LCAyMjgsIAotICAgIDg1LCAxNywgMTA4LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxNDcsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDE0OSwgNjksIDQ1LCAKLSAgICAyMjgsIDg1LCAxNywgMTcwLCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxOTUsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIxMywgCi0gICAgMTExLCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxOTksIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIyMiwgNjMsIDY5LCAxLCA0NSwgCi0gICAgMjI4LCA4NSwgMjI3LCA3NywgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDQsIDIxMiwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDQsIAotICAgIDEsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ5LCAzMiwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDgsIDk4LCAyNDYsIDE5MiwgMSwgCi0gICAgNjMsIDI0NiwgMTkyLCAxLCA3NSwgMjQ2LCAxOTIsIDEsIDY4LCAyNDYsIDE5MiwgMSwgNzQsIDI0NiwgMTkyLCAxLCAyNTEsIAotICAgIDY0LCAyNDYsIDE5MiwgMSwgNzgsIDI0NiwgMTkyLCAxLCAxNzMsIDI0NiwgMTkyLCAxLCAyMjksIDE0NCwgMjQ2LCAxOTIsIAotICAgIDEsIDIzOSwgOCwgMjQ2LCAxOTIsIDEsIDIzOCwgMTE5LCAyNDYsIDE5MiwgMSwgMjIyLCAxMTIsIDI0NiwgMTkyLCAxLCAKLSAgICAyMjIsIDIwMywgMjQ2LCAxOTIsIDEsIDI0NiwgMTk5LCAyNDYsIDE5MiwgMSwgMjQ2LCAxNDQsIDI0NiwgMTkyLCAxLCAyMzAsIAotICAgIDE4MSwgMjQ2LCAxOTIsIDEsIDIzMCwgMTQ5LCAyNDYsIDE5MiwgMSwgMjIyLCAxMDIsIDI0NiwgMTkyLCAxLCAyMjIsIDEwNCwgCi0gICAgMjQ2LCAxOTIsIDEsIDIyMiwgMTAzLCAyNDYsIDE5MiwgMSwgMjEwLCAyMiwgMjQ2LCAxOTIsIDEsIDIwOSwgMTA4LCAyNDYsIAotICAgIDE5MiwgMSwgMjQ0LCAyMTIsIDI0NiwgMTkyLCAxLCAyNDQsIDEsIDI0NiwgMTkyLCAxLCAyMjEsIDUzLCAyNDYsIDE5MiwgMSwgCi0gICAgMjAxLCAyMDEsIDI0NiwgMTkyLCAxLCAyNDQsIDEyMCwgMjQ2LCAxOTIsIDEsIDE4NSwgMjQ2LCAxOTIsIDEsIDIxOCwgMTIsIAotICAgIDI0NiwgMTkyLCAxLCAyMTgsIDIwOCwgMjQ2LCAxOTIsIDEsIDI0OSwgMzIsIDI0NiwgMTkyLCAxLCAyNDgsIDk4LCAyNDYsIAotICAgIDE5MiwgMSwgMjIzLCAyMzgsIDI0NiwgMTkyLCAxLCAxOTIsIDI0NiwgMTkyLCAxLCAyNDgsIDE5OCwgMjQ2LCAxOTIsIDEsIAotICAgIDE5OCwgMjQ2LCAxOTIsIDEsIDIxNiwgMjIwLCAyNDYsIDE5MiwgMSwgMjI4LCAxMTMsIDI0NiwgMTkyLCAxLCAyMDYsIDg2LCAKLSAgICAyNDYsIDE5MiwgMSwgMjExLCAxNjQsIDI0NiwgMTkyLCAxLCAyMTUsIDM2LCAyNDYsIDE5MiwgMSwgMTUyLCAyNDYsIDE5MiwgCi0gICAgMjIsIDIsIDI1MiwgMjUsIDI0NiwgMTkyLCAyMiwgMiwgNzUsIDI0NiwgMTkyLCAyMiwgMiwgMjMxLCA4MywgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCAyNDEsIDE0NSwgMjQ2LCAxOTIsIDIyLCAyLCA2OCwgMjQ2LCAxOTIsIDIyLCAyLCAyMjAsIDczLCAyNDYsIDE5MiwgCi0gICAgMjIsIDIsIDc4LCAyNDYsIDE5MiwgMjIsIDIsIDI1MSwgNjQsIDI0NiwgMTkyLCAyMiwgMiwgMjUwLCAzNCwgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCAyMDcsIDI0LCAyNDYsIDE5MiwgMTA5LCAyLCAxOTgsIDI0NiwgMTkyLCAxMDksIDIsIDIxNiwgMjIwLCAyNDYsIAotICAgIDE5MiwgMTA5LCAyLCAyMjgsIDExMywgMjQ2LCAxOTIsIDEwOSwgMiwgMjA0LCAxMTEsIDI0NiwgMTkyLCAxLCA0NiwgMjMwLCAKLSAgICA1NCwgMjQ2LCAxOTIsIDEsIDQ2LCAyMzksIDc1LCAyNDYsIDE5MiwgMSwgNDYsIDIyMiwgMjA1LCAyNDYsIDE5MiwgMTA5LCAKLSAgICAyLCA0NiwgMjIyLCAyMDUsIDI0NiwgMTkyLCAxLCA0NiwgMjQ2LCAyMDAsIDI0NiwgMTkyLCAxLCA0NiwgMjEwLCA2OSwgCi0gICAgMjQ2LCAxOTIsIDEsIDQ2LCAyMjMsIDE2MywgMjQ2LCAxOTIsIDEsIDQ2LCAyMTksIDE4NCwgMjQ2LCAxOTIsIDEsIDQ2LCAKLSAgICAyMDMsIDEyNCwgMjQ2LCAxOTIsIDEsIDQ2LCAxNDYsIDI0NiwgMTkyLCAxLCA0NiwgMTU5LCAyNDYsIDE5MiwgMSwgNDYsIAotICAgIDIxMSwgMTY3LCAyNDYsIDE5MiwgMTA5LCAyLCA0NiwgMjI2LCAxODUsIDI0NiwgMTkyLCAxMDksIDIsIDQ2LCAyMzcsIDE3MSwgCi0gICAgMjQ2LCAxOTIsIDE3LCAyMDIsIDg0LCAyNDYsIDE5MiwgMTcsIDEwNSwgMjQ2LCAxOTIsIDE3LCAxMDgsIDI0NiwgMTkyLCAKLSAgICAxNywgMTQ3LCAyNDYsIDE5MiwgMTcsIDE0OSwgMjQ2LCAxOTIsIDE3LCAxNzAsIDI0NiwgMTkyLCAxNywgMTk1LCAyNDYsIAotICAgIDE5MiwgMTcsIDIxMywgMTExLCAyNDYsIDE5MiwgMTcsIDE5OSwgMjQ2LCAxOTIsIDE3LCAyMjIsIDYzLCAyNDYsIDE5MiwgCi0gICAgMjE3LCAxNzksIDIxMSwgMjAxLCAyNDYsIDE5MiwgMjE3LCAxNzksIDI0NCwgMTY2LCAyNDYsIDE5MiwgMjE3LCAxNzksIDUyLCAKLSAgICAyNDQsIDE2NiwgMjQ2LCAxOTIsIDIxNywgMTc5LCAyMDgsIDcwLCAyNDQsIDE2NiwgNjksIDEsIDIyOSwgMTM3LCAyMzksIDgsIAotICAgIDY5LCAxLCAyMjksIDEzNywgMjQ3LCA5MiwgNjksIDEsIDIyOSwgMTM3LCAyNDYsIDE5OSwgNjksIDEsIDIyOSwgMTM3LCAKLSAgICAyMzAsIDE4MSwgNjksIDEsIDIyOSwgMTM3LCAyMzAsIDE0OSwgNjksIDEsIDIyOSwgMTM3LCAyMjEsIDExLCA2OSwgMSwgCi0gICAgMjI5LCAxMzcsIDIwNywgMjQxLCA2OSwgMSwgMjI5LCAxMzcsIDIwNywgMjI5LCA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMTIwLCAKLSAgICA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMTA0LCA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMSwgNjksIDEsIDIyOSwgMTM3LCAyMDEsIAotICAgIDIwMSwgNjksIDEsIDIyOSwgMTM3LCAyMTUsIDM2LCA2OSwgMSwgMjI5LCAxMzcsIDE1MiwgNjksIDEsIDIyOSwgMTM3LCAKLSAgICAyMzcsIDEyLCA2OSwgMSwgMjI5LCAxMzcsIDI0MCwgMTA4LCA2OSwgNjUsIDEsIDIyOSwgMTM3LCAyMTYsIDEzNiwgNjksIDEsIAotICAgIDIyOSwgMTM3LCAyMDMsIDE4MiwgNjksIDEsIDIyOSwgMTM3LCAyMDIsIDExNiwgNjksIDEsIDIyOSwgMTM3LCAyMTYsIDIyMCwgCi0gICAgNjksIDIyNywgMzYsIDIyOSwgMTM3LCAyMjAsIDk0LCA2OSwgMjI3LCAzNiwgMjI5LCAxMzcsIDIxNywgNzgsIDY5LCAyMjcsIAotICAgIDM2LCAyMjksIDEzNywgMjM2LCAxOTEsIDY5LCAxNiwgMjUxLCA1MSwgMjQwLCAyMTEsIDY5LCAxNiwgMjUxLCA1MSwgMTA1LCAKLSAgICA2OSwgMTYsIDI1MSwgNTEsIDEwOCwgNjksIDEsIDI1MSwgNTEsIDIxNiwgMjIwLCA2OSwgMiwgMjE5LCA5OCwgMjI5LCAyMzcsIAotICAgIDIwOCwgMTYxLCA2OSwgMiwgNDUsIDIyOCwgODUsIDIwOCwgMTU5LCA2OSwgMiwgNDUsIDIyOCwgODUsIDIwOCwgMTU2LCA2OSwgCi0gICAgMSwgMjEyLCAxNzgsIDIxOSwgMTM5LCAyNDYsIDE5OSwgNjksIDEsIDIxMiwgMTc4LCAyMTksIDEzOSwgMjEzLCA5MCwgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIyOSwgMjYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjksIDI2LCA0NSwgMjA1LCAyMjAsIAotICAgIDEsIDEyNCwgMjI5LCAxMTUsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjksIDExNSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIAotICAgIDIyOSwgMTI0LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAxMjQsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMzgsIDM5LCAKLSAgICA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM4LCAzOSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyMiwgMTI4LCA0NSwgMjA1LCAKLSAgICAyMjAsIDEsIDEzOCwgMjIyLCAxMjgsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyNDUsIDI1NCwgNDUsIDIwNSwgMjIwLCAxLCAKLSAgICAxMzgsIDI0NSwgMjU0LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ2LCAxMTYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyNDYsIAotICAgIDExNiwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIxMiwgMTMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTIsIDEzLCA0NSwgCi0gICAgMjA1LCAyMjAsIDEsIDEyNCwgMjIwLCAyMzMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjAsIDIzMywgNDUsIDIwNSwgMjIwLCAKLSAgICAxLCAxMjQsIDI0MywgMTEzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQzLCAxMTMsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKLSAgICAxMzUsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAxMzUsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDksIDQ3LCA0NSwgMjA1LCAKLSAgICAyMjAsIDEsIDEzOCwgMjA5LCA0NywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyMSwgMTkxLCA0NSwgMjA1LCAyMjAsIDEsIAotICAgIDEzOCwgMjIxLCAxOTEsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyNDgsIDIzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQ4LCAKLSAgICAyMywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIxOCwgNjksIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTgsIDY5LCA0NSwgCi0gICAgMjA1LCAyMjAsIDEsIDEyNCwgMjE4LCAxODAsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTgsIDE4MCwgNDUsIDIwNSwgMjIwLCAKLSAgICAxLCAxMjQsIDIzOSwgMTg2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM5LCAxODYsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKLSAgICAyMjQsIDgyLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI0LCA4MiwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIwMiwgMjQ3LCAKLSAgICA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjAyLCAyNDcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTUsIDIyNywgNDUsIDIwNSwgCi0gICAgMjIwLCAxLCAxMzgsIDIxNSwgMjI3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjI3LCA0OSwgNDUsIDIwNSwgMjIwLCAxLCAKLSAgICAxMzgsIDIyNywgNDksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDUsIDE4OSwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIwNSwgCi0gICAgMTg5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjM2LCAxMzYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMzYsIDEzNiwgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDc4LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgNzgsIDQ1LCAyMDUsIDIyMCwgMjI1LCAxNDEsIAotICAgIDIzMCwgMCwgNDUsIDIwNSwgMjIwLCAyMiwgMjUyLCAyNSwgNDUsIDIwNSwgMjIwLCAyMiwgNzUsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMjIsIDIwNywgMjQsIDQ1LCAyMDUsIDIyMCwgMjIsIDY4LCA0NSwgMjA1LCAyMjAsIDIyLCA3NCwgNDUsIDIwNSwgMjIwLCAKLSAgICAyMiwgNzgsIDQ1LCAyMDUsIDIyMCwgMjI1LCAxNDEsIDIyOSwgMTE4LCA0NSwgMjA1LCAyMjAsIDIyLCAyMzUsIDE3MSwgNDUsIAotICAgIDIwNSwgMjIwLCAyMiwgMjA3LCAyMywgNDUsIDIwNSwgMjIwLCAyMiwgMjA3LCAzOSwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCAKLSAgICAzMiwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCA4LCA0NSwgMjA1LCAyMjAsIDIyLCAyNTAsIDIzMSwgNDUsIDIwNSwgMjIwLCAKLSAgICAyMiwgMjUwLCAyNDcsIDQ1LCAyMDUsIDIyMCwgMTQzLCAyMjUsIDE0MSwgMjQxLCAxMjksIDQ1LCAyMDUsIDIyMCwgMTQzLCAKLSAgICAyMjUsIDE0MSwgMjIxLCA1MiwgNDUsIDIwNSwgMjIwLCAxNDMsIDIyNSwgMTQxLCAyMDksIDQ3LCA0NSwgMjA1LCAyMjAsIAotICAgIDE0MywgMjI1LCAxNDEsIDIxMSwgMjUyLCA0NSwgMjA1LCAyMjAsIDE2LCAyMjksIDksIDQ1LCAyMDUsIDIyMCwgMTYsIDIyMSwgCi0gICAgNTIsIDQ1LCAyMDUsIDIyMCwgMTYsIDIxNCwgMjUzLCA0NSwgMjA1LCAyMjAsIDE2LCAyMzYsIDEzNywgMjM2LCAxMzEsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMTYsIDIyOSwgMTksIDIyOSwgMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgNzQsIDIyNSwgMiwgMjI1LCA2MSwgCi0gICAgMSwgNzgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQ2LCAxOTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIxLCAxMSwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyMDcsIDI0MSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDcsIDIyOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyNDQsIDEyMCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNDQsIDEwNCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjEsIDIyNywgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTMsIDkwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIxMSwgMTY0LCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDIyLCAyLCAyMzEsIDgzLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDYsIDE3OCwgMjI1LCAyLCAyMjUsIDYxLCAKLSAgICAyMiwgMiwgMjUxLCAyNDUsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDI1MCwgMzQsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIAotICAgIDI1MSwgMjM4LCAyMjUsIDIsIDIyNSwgNjEsIDI0NiwgMTU5LCAyMjUsIDIsIDIyNSwgNjEsIDI1MSwgNzAsIDIyOSwgMTA3LCAKLSAgICAyMjUsIDIsIDIyNSwgNjEsIDI1MCwgMjA5LCAyMjUsIDIsIDIyNSwgNjEsIDQsIDIxNiwgOTgsIDgyLCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDIwMywgMjM4LCAyMTYsIDk4LCA4MiwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjA1LCAxOTksIDIyNSwgMiwgMjI1LCAKLSAgICA2MSwgMjA1LCAyMDQsIDMzLCA0LCAyMDcsIDIyMiwgMzMsIDQsIDIwNywgMjI1LCAzMywgNCwgMjA3LCAyMjgsIDMzLCA0LCAKLSAgICAyMDcsIDIyNiwgMzMsIDQsIDIwNywgMjI3LCAzMywgNCwgMjA3LCAyMjQsIDMzLCA0LCAyNDQsIDk4LCAzMywgNCwgMjQ0LCAKLSAgICAxMDAsIDMzLCA0LCAyNDQsIDEwMywgMzMsIDQsIDI0NCwgMTAxLCAzMywgNCwgMjQ0LCAxMDIsIDMzLCA0LCAyNDQsIDk5LCAKLSAgICAzMywgNCwgMjQxLCAyNDIsIDMzLCA0LCAyNDEsIDI0NiwgMzMsIDQsIDI0MSwgMjU0LCAzMywgNCwgMjQxLCAyNTEsIDMzLCAKLSAgICA0LCAyNDEsIDI1MiwgMzMsIDQsIDI0MSwgMjQzLCAzMywgNCwgMjQ2LCAyNTIsIDMzLCA0LCAyNDYsIDI0NiwgMzMsIDQsIAotICAgIDI0NiwgMjQ4LCAzMywgNCwgMjQ2LCAyNTEsIDMzLCA0LCAyNDYsIDI0OSwgMzMsIDQsIDI0NiwgMjUwLCAzMywgNCwgMjQ2LCAKLSAgICAyNDcsIDMzLCA0LCAyNDgsIDE5OCwgMzMsIDQsIDI0OCwgMTc3LCAzMywgNCwgMjQ4LCAxODksIDMzLCA0LCAyNDgsIDE5NywgCi0gICAgMzMsIDQsIDI0OCwgMTkyLCAzMywgNCwgMjQ4LCAxOTMsIDMzLCA0LCAyNDgsIDE4MSwgOCwgNSwgMSwgMjQ4LCAyMjUsIAotICAgIDI1MSwgMiwgOCwgNSwgMSwgMzQsIDIxNiwgNzEsIDgsIDUsIDEsIDI0OCwgMzksIDc0LCA4LCA1LCAxLCAyNDgsIDIyNSwgCi0gICAgNzQsIDgsIDUsIDEsIDE4OCwgMywgMjM5LCAxOTksIDgsIDUsIDEsIDIyNywgMTg3LCAyNDAsIDE3NCwgOCwgNSwgMSwgMTMyLCAKLSAgICAyMzksIDc2LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgNTIsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIxNSwgCi0gICAgMjUyLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDUsIDEyNiwgOCwgCi0gICAgNSwgMSwgMjQxLCA3OSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDI0OCwgMzksIDc4LCA4LCA1LCAxLCAyNDgsIDM5LCAxNTgsIAotICAgIDMsIDk1LCA4LCA1LCAxLCAxNzEsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMjM5LCAyMjAsIDczLCA4LCA1LCAxLCAKLSAgICAyMDcsIDE3NCwgMjIwLCA3NCwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjAsIDc0LCAzLCAyMzYsIDEwNiwgOTUsIDgsIAotICAgIDUsIDEsIDIwNywgMTc0LCAxNTgsIDIyMCwgNCwgOCwgNSwgMSwgMjA3LCAxNzQsIDE1OCwgMjIwLCA1LCAzLCA5NSwgOCwgNSwgCi0gICAgMSwgMjExLCA2NiwgMTQ2LCA4LCAxLCA1LCA2LCAyMTcsIDEsIDMsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjE3LCAxLCAKLSAgICAyMDQsIDMsIDIzNywgMTAyLCA4LCA1LCAxLCA1MiwgMTQ2LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDI0NSwgMTI2LCA4LCA1LCAKLSAgICAxLCA1MiwgMjE3LCAxLCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMTMyLCAxNDYsIDgsIDUsIDEsIDEzMiwgMjE3LCAxLCAzLCAKLSAgICAyMTUsIDI1MiwgOCwgNSwgMSwgMjQ4LCAyMTYsIDI0MSwgNywgOCwgNSwgMSwgMTA2LCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgCi0gICAgMjEwLCA4LCA1LCAxLCAxMDYsIDI0OCwgMjMxLCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgMjEwLCA4LCA1LCAxLCAyMDcsIDE3LCAKLSAgICA4LCA1LCAxLCAyMDcsIDE3NCwgMjA3LCAxNywgOCwgNSwgMSwgMTA2LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyNDYsIDE0MiwgCi0gICAgOCwgNSwgMSwgMjQ2LCAxNDMsIDMsIDEyNCwgNTAsIDIxNSwgMjUyLCA4LCA1LCAxLCAyNDYsIDE0MywgMywgMTI0LCA0OSwgCi0gICAgMjEzLCAxMjUsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxMjQsIDUwLCAyMTUsIDI1MiwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIAotICAgIDE2MywgNDksIDIyNywgMjEwLCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTYzLCA0OSwgMjI3LCAyMTEsIDI1LCAxMjQsIDUwLCAKLSAgICAyMTUsIDI1MiwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDE2MywgNDksIDIyNywgMjExLCAzLCAyMTMsIDEyNSwgOCwgNSwgMSwgCi0gICAgMjAzLCAxMjUsIDMsIDIxMiwgMjI4LCA1MCwgMjI3LCAyMTAsIDY1LCAyNDcsIDIxNSwgMywgMjMwLCAyMzksIDI0NywgMjE0LCAKLSAgICA2NSwgMSwgNSwgMjM3LCAzMSwgNjUsIDEsIDUsIDIyOCwgMTMxLCAzLCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgNjUsIDEsIAotICAgIDUsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA2NSwgMSwgNSwgMTA2LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyMTUsIAotICAgIDExLCAyMDMsIDY2LCA4LCA1LCAxLCAyMzAsIDIyOCwgNzQsIDgsIDUsIDEsIDE3MSwgMjIwLCA3MywgOCwgNSwgMSwgMjA2LCAKLSAgICAyMjgsIDgsIDUsIDEsIDIzMCwgMjM5LCAyNTEsIDIsIDMwLCAxLCA1LCA2LCAyMjAsIDM2LCA5MCwgNSwgMSwgNjMsIDkwLCAKLSAgICA1LCAxLCA3NCwgOTAsIDUsIDEsIDc1LCA5MCwgNSwgMSwgNzgsIDkwLCA1LCAxLCA2OCwgOTAsIDUsIDEsIDIwNiwgMTY0LCAKLSAgICA5MCwgNSwgMSwgMjM5LCA4LCA5MCwgNSwgMSwgMTczLCA5MCwgNSwgMSwgMjM4LCAxOTAsIDkwLCA1LCAxLCAyMzgsIDgxLCAKLSAgICA5MCwgNSwgMSwgMjM4LCAzOSwgOTAsIDUsIDEsIDIzNywgMjMwLCA5MCwgNSwgMSwgMjM3LCAxOTIsIDkwLCA1LCAxLCAxNTIsIAotICAgIDkwLCA1LCAxLCAyMzcsIDY3LCA5MCwgNSwgMSwgMjM3LCAzLCA5MCwgNSwgMSwgMjM2LCAxMzYsIDkwLCA1LCAxLCAyMzYsIAotICAgIDI2LCA5MCwgNSwgMSwgMjM1LCAyNTUsIDkwLCA1LCAxLCAyMjgsIDExMywgOTAsIDUsIDEsIDIyNywgMjM0LCA5MCwgNSwgMSwgCi0gICAgMjI3LCAxNDgsIDkwLCA1LCAxLCAyMjcsIDQ5LCA5MCwgNSwgMSwgMjI2LCAyMzksIDkwLCA1LCAxLCAyMjYsIDIwOCwgOTAsIAotICAgIDUsIDEsIDE5MiwgOTAsIDUsIDEsIDIyNSwgMjAsIDkwLCA1LCAxLCAyMjQsIDE1NSwgOTAsIDUsIDEsIDIyNCwgODIsIDkwLCAKLSAgICA1LCAxLCAyMjMsIDI0NiwgOTAsIDUsIDEsIDIwMSwgMjAxLCA5MCwgNSwgMSwgMjM2LCAxNjAsIDkwLCA1LCAxLCAyMjMsIAotICAgIDkzLCA5MCwgNSwgMSwgMjIyLCAyNDAsIDkwLCA1LCAxLCAyMjIsIDEwMCwgOTAsIDUsIDEsIDIyMSwgMTkxLCA5MCwgNSwgMSwgCi0gICAgMjIxLCA4NCwgOTAsIDUsIDEsIDIyMSwgMjIsIDkwLCA1LCAxLCAyMTcsIDY0LCA5MCwgNSwgMSwgMjE3LCA1MCwgOTAsIDUsIAotICAgIDEsIDIxNywgNDMsIDkwLCA1LCAxLCAyMTcsIDM0LCA5MCwgNSwgMSwgMjE3LCAyMywgOTAsIDUsIDEsIDIxNywgMjEsIDkwLCAKLSAgICA1LCAxLCAyMTUsIDM2LCA5MCwgNSwgMSwgMTk0LCA5MCwgNSwgMSwgMjE0LCAxNzcsIDkwLCA1LCAxLCAyMTIsIDE2MiwgOTAsIAotICAgIDUsIDEsIDIxMiwgMTMsIDkwLCA1LCAxLCAyMTEsIDEwLCA5MCwgNSwgMSwgMjEwLCAxNzcsIDkwLCA1LCAxLCAyNDQsIDIxMiwgCi0gICAgOTAsIDUsIDEsIDIxMCwgMjIsIDkwLCA1LCAxLCAyNDQsIDc1LCA5MCwgNSwgMSwgMjA5LCAxODcsIDkwLCA1LCAxLCAyNDMsIAotICAgIDIzMywgOTAsIDUsIDEsIDIwOSwgMiwgOTAsIDUsIDEsIDI0MywgMTEzLCA5MCwgNSwgMSwgMjQyLCA0MiwgOTAsIDUsIDEsIAotICAgIDI0MiwgMTMsIDkwLCA1LCAxLCAyNDMsIDEyNCwgOTAsIDUsIDEsIDIwOCwgMTkwLCA5MCwgNSwgMSwgMjA4LCAxODksIDkwLCAKLSAgICA1LCAxLCAyMDgsIDE3OCwgOTAsIDUsIDEsIDIwOCwgMTc3LCA5MCwgNSwgMSwgMjA4LCAxNzYsIDkwLCA1LCAxLCAyMDgsIAotICAgIDE3NSwgOTAsIDUsIDEsIDIwOCwgMjAsIDkwLCA1LCAxLCAyMDgsIDE0LCA5MCwgNSwgMSwgMjA3LCAyNTUsIDkwLCA1LCAxLCAKLSAgICAyMDcsIDI1MywgOTAsIDUsIDEsIDIwNywgMjQ5LCA5MCwgNSwgMSwgMjA3LCAyNDgsIDkwLCA1LCAxLCAyMDQsIDExMSwgOTAsIAotICAgIDUsIDEsIDIwNCwgNjIsIDkwLCA1LCAxLCAyMDQsIDMwLCA5MCwgNSwgMSwgMjA0LCAwLCA5MCwgNSwgMSwgMjAzLCAyMTcsIAotICAgIDkwLCA1LCAxLCAyMDMsIDIwNCwgOTAsIDUsIDEsIDE5OCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjksIDE2LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIxNCwgMjUzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyOCwgODYsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjI0LCA5MywgMjI1LCAyLCAyMjUsIDYxLCAxLCAxODUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjAxLCAyMDEsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjQ2LCAxMzQsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA4LCAyMjksIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjI5LCAxMTAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIyLCAxMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA5LCAzOSwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyMDQsIDEwNSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDMsIDc2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIzNiwgMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA2LCAyNTUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgNzUsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjE4LCAyMDIsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjUwLCA0NSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyMzgsIDMyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzMCwgMTQ3LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIxNiwgMTk3LCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDEsIDI0OSwgMzIsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjMwLCAxMzMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjQzLCAxOTAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjM4LCA4OCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNDMsIDIzNSwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyNDgsIDk2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyOSwgMTcsIDIyNywgMTksIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjI4LCA4NywgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjQsIDk0LCAyMjcsIDE5LCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDEsIDIxOSwgMTY5LCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMywgMTExLCAyMjcsIDE5LCAKLSAgICAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOCwgMjMwLCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMiwgMTE5LCAyMjcsIAotICAgIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzNSwgMjA2LCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMjAsIAotICAgIDMwLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMzEsIDQ3LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNTAsIDIzMCwgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjAzLCA0MSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjExLCAyNDIsIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNiwgMjUyLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNDYsIDE1NywgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAyMiwgMiwgMjIxLCAzNywgMjI1LCAyLCAyMjUsIDYxLCAyNDYsIDE1OCwgMjI1LCAyLCAyMjUsIDYxLCAyMjYsIAotICAgIDIyMywgMjMwLCAxOTAsIDIyNSwgMiwgMjI1LCA2MSwgMjUwLCAxNDksIDIzMCwgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAKLSAgICAyMDIsIDg0LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxMDUsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDEwOCwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAxNywgMTQ3LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxNDksIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDE3MCwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxNywgMTk1LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAyMTMsIDExMSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgCi0gICAgMTk5LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAyMjIsIDYzLCAyOCwgMTc2LCAyMjAsIDE3NCwgMjgsIDE3NiwgMjIwLCAxNzksIAotICAgIDI4LCAxNzYsIDIwMiwgMjQ2LCAyOCwgMTc2LCAyMDIsIDI0NSwgMjgsIDE3NiwgMjAyLCAyNDQsIDI4LCAxNzYsIDIwNywgCi0gICAgODksIDI4LCAxNzYsIDIwNywgOTMsIDI4LCAxNzYsIDIwMiwgMjExLCAyOCwgMTc2LCAyMDIsIDIwNywgMjgsIDE3NiwgMjQwLCAKLSAgICAyMzcsIDI4LCAxNzYsIDI0MCwgMjM1LCAyOCwgMTc2LCAyNDAsIDIzNiwgMjgsIDE3NiwgMjQwLCAyMzMsIDI4LCAxNzYsIAotICAgIDIzNSwgMTk2LCAyOCwgMTc2LCAyMzUsIDE5NSwgMjgsIDE3NiwgMjM1LCAxOTMsIDI4LCAxNzYsIDIzNSwgMTk0LCAyOCwgCi0gICAgMTc2LCAyMzUsIDE5OSwgMjgsIDE3NiwgMjM1LCAxOTIsIDI4LCAxNzYsIDIzNSwgMTkxLCAyOCwgMTc2LCAyMzUsIDIwMSwgCi0gICAgMjgsIDE3NiwgMjUwLCAxMzYsIDI4LCAxNzYsIDI1MCwgMTM1LCAyOCwgMTA3LCAyMjIsIDg2LCAyOCwgMTA3LCAyMjIsIDkyLCAKLSAgICAyOCwgMTA3LCAyMTEsIDE0NSwgMjgsIDEwNywgMjExLCAxNDQsIDI4LCAxMDcsIDIwOCwgMjM1LCAyOCwgMTA3LCAyMDgsIAotICAgIDIzMywgMjgsIDEwNywgMjA4LCAyMzIsIDI4LCAxMDcsIDIwOCwgMjM4LCAyOCwgMTA3LCAyMDgsIDIzOSwgMjgsIDEwNywgCi0gICAgMjA4LCAyMzEsIDI4LCAxMDcsIDIxNiwgMjYsIDI4LCAxMDcsIDIxNiwgNDEsIDI4LCAxMDcsIDIxMSwgMTUxLCAyOCwgMTA3LCAKLSAgICAyMTYsIDM4LCAyOCwgMTA3LCAyMTYsIDI4LCAyOCwgMTA3LCAyMTYsIDMwLCAyOCwgMTA3LCAyMTYsIDE3LCAyOCwgMTA3LCAKLSAgICAyMTYsIDE4LCAyOCwgMTA3LCAyMjksIDI0MywgMjgsIDEwNywgMjI0LCAxMzYsIDI4LCAxMDcsIDIyNCwgMTMwLCAyOCwgCi0gICAgMTA3LCAyMTEsIDE1NSwgMjgsIDEwNywgMjI0LCAxMzMsIDI4LCAxMDcsIDIyNCwgMTM5LCAyOCwgMTA3LCAyMTgsIDEzNCwgCi0gICAgMjgsIDEwNywgMjE4LCAxNDMsIDI4LCAxMDcsIDIxOCwgMTQ3LCAyOCwgMTA3LCAyMTEsIDE1MywgMjgsIDEwNywgMjE4LCAKLSAgICAxMzcsIDI4LCAxMDcsIDIxOCwgMTUxLCAyOCwgMTA3LCAyMTgsIDE1MiwgMjgsIDEwNywgMjEyLCAxMDMsIDI4LCAxMDcsIAotICAgIDIxMiwgMTA2LCAyOCwgMTA3LCAyMTEsIDE0OSwgMjgsIDEwNywgMjExLCAxNDcsIDI4LCAxMDcsIDIxMiwgMTAxLCAyOCwgCi0gICAgMTA3LCAyMTIsIDEwOSwgMjgsIDEwNywgMjEyLCAxMTAsIDI4LCAxMDcsIDIxMiwgOTUsIDI4LCAxMDcsIDIxMiwgMTA4LCAKLSAgICAyOCwgMTA3LCAyMTksIDEwNSwgMjgsIDEwNywgMjE5LCAxMDYsIDI4LCAxMDcsIDIwMywgMjcsIDI4LCAxMDcsIDIwMywgMjgsIAotICAgIDI4LCAxMDcsIDI0NiwgNzIsIDI4LCAxMDcsIDI0NiwgNzEsIDI4LCAxMDcsIDIxMSwgMTYwLCAyOCwgMTA3LCAyMTgsIDE4NywgCi0gICAgMjgsIDEwNywgMjE4LCAxODYsIDEyLCAxNSwgMjMzLCA3NCwgMTIsIDE1LCAyMzMsIDczLCAxMiwgMTUsIDIzMywgNzIsIDEyLCAKLSAgICAxNSwgMjMzLCA3MSwgMTIsIDE1LCAyMzMsIDcwLCAxMiwgMTUsIDIzMywgNjksIDEyLCAxNSwgMjMzLCA2OCwgMTIsIDE1LCAKLSAgICAyMzMsIDY3LCAxMiwgMTUsIDIzMywgNjYsIDEyLCAxNSwgMjMzLCA2NSwgMTIsIDE1LCAyMzMsIDY0LCAxMiwgMTUsIDIzMywgCi0gICAgNjMsIDEyLCAxNSwgMjMzLCA2MiwgMTIsIDE1LCAyMzMsIDYxLCAxMiwgMTUsIDIzMywgNjAsIDEyLCAxNSwgMjMzLCA1OSwgCi0gICAgMTIsIDE1LCAyMzMsIDU4LCAxMiwgMTUsIDIzMywgNTcsIDEyLCAxNSwgMjMzLCA1NiwgMTIsIDE1LCAyMzMsIDU1LCAxMiwgCi0gICAgMTUsIDIzMywgNTQsIDEyLCAxNSwgMjMzLCA1MywgMTIsIDE1LCAyMzMsIDUyLCAxMiwgMTUsIDIzMywgNTEsIDEyLCAxNSwgCi0gICAgMjMzLCA1MCwgMTIsIDE1LCAyMzMsIDQ5LCAxMiwgMTUsIDIzMywgNDgsIDEyLCAxNSwgMjMzLCA0NywgMTIsIDE1LCAyMzMsIAotICAgIDQ2LCAxMiwgMTUsIDIzMywgNDUsIDEyLCAxNSwgMjMzLCA0NCwgMTIsIDE1LCAyMzMsIDQzLCAxMiwgMTUsIDIzMywgNDIsIAotICAgIDEyLCAxNSwgMjMzLCA0MSwgMTIsIDE1LCAyMzMsIDQwLCAxMiwgMTUsIDIzMywgMzksIDEyLCAxNSwgMjMzLCAzOCwgMTIsIAotICAgIDE1LCAyMzMsIDM3LCAxMiwgMTUsIDIzMywgMzYsIDEyLCAxNSwgMjMzLCAzNSwgMTIsIDE1LCAyMzMsIDM0LCAxMiwgMTUsIAotICAgIDIzMywgMzMsIDEyLCAxNSwgMjMzLCAzMiwgMTIsIDE1LCAyMzMsIDMxLCAxMiwgMTUsIDIzMywgMzAsIDEyLCAxNSwgMjMzLCAKLSAgICAyOSwgMTIsIDE1LCAyMzMsIDI4LCAxMiwgMTUsIDIzMywgMjcsIDEyLCAxNSwgMjMzLCAyNiwgMTIsIDE1LCAyMzMsIDI1LCAKLSAgICAxMiwgMTUsIDIzMywgMjQsIDEyLCAxNSwgMjMzLCAyMywgMTIsIDE1LCAyMzMsIDIyLCAxMiwgMTUsIDIzMywgMjEsIDEyLCAKLSAgICAxNSwgMjMzLCAyMCwgMTIsIDE1LCAyMzMsIDE5LCAxMiwgMTUsIDIzMywgMTgsIDEyLCAxNSwgMjMzLCAxNywgMTIsIDE1LCAKLSAgICAyMzMsIDE2LCAxMiwgMTUsIDIzMywgMTUsIDEyLCAxNSwgMjMzLCAxNCwgMTIsIDE1LCAyMzMsIDEzLCAxMiwgMTUsIDIzMywgCi0gICAgMTIsIDEyLCAxNSwgMjMzLCAxMSwgMTIsIDE1LCAyMzMsIDEwLCAxMiwgMTUsIDIzMywgOSwgMTIsIDE1LCAyMzMsIDgsIDEyLCAKLSAgICAxNSwgMjMzLCA3LCAxMiwgMTUsIDIzMywgNiwgMTIsIDE1LCAyMzMsIDUsIDEyLCAxNSwgMjMzLCA0LCAxMiwgMTUsIDIzMywgCi0gICAgMywgMTIsIDE1LCAyMzMsIDIsIDEyLCAxNSwgMjMzLCAxLCAxMiwgMTUsIDIzMywgMCwgMTIsIDE1LCAyMzIsIDI1NSwgMTIsIAotICAgIDE1LCAyMzIsIDI1NCwgMTIsIDE1LCAyMzIsIDI1MywgMTIsIDE1LCAyMzIsIDI1MiwgMTIsIDE1LCAyMzIsIDI1MSwgMTIsIAotICAgIDE1LCAyMzIsIDI1MCwgMTIsIDE1LCAyMzIsIDI0OSwgMTIsIDE1LCAyMzIsIDI0OCwgMTIsIDE1LCAyMzIsIDI0NywgMTIsIAotICAgIDE1LCAyMzIsIDI0NiwgMTIsIDE1LCAyMzIsIDI0NSwgMTIsIDE1LCAyMzIsIDI0NCwgMTIsIDE1LCAyMzIsIDI0MywgMTIsIAotICAgIDE1LCAyMzIsIDI0MiwgMTIsIDE1LCAyMzIsIDI0MSwgMTIsIDE1LCAyMzIsIDI0MCwgMTIsIDE1LCAyMzIsIDIzOSwgMTIsIAotICAgIDE1LCAyMzIsIDIzOCwgMTIsIDE1LCAyMzIsIDIzNywgMTIsIDE1LCAyMzIsIDIzNiwgMTIsIDE1LCAyMzIsIDIzNSwgMTIsIAotICAgIDE1LCAyMzIsIDIzNCwgMTIsIDE1LCAyMzIsIDIzMywgMTIsIDE1LCAyMzIsIDIzMiwgMTIsIDE1LCAyMzIsIDIzMSwgMTIsIAotICAgIDE1LCAyMzIsIDIzMCwgMTIsIDE1LCAyMzIsIDIyOSwgMTIsIDE1LCAyMzIsIDIyOCwgMTIsIDE1LCAyMzIsIDIyNywgMTIsIAotICAgIDE1LCAyMzIsIDIyNiwgMTIsIDE1LCAyMzIsIDIyNSwgMTIsIDE1LCAyMzIsIDIyNCwgMTIsIDE1LCAyMzIsIDIyMywgMTIsIAotICAgIDE1LCAyMzIsIDIyMiwgMTIsIDE1LCAyMzIsIDIyMSwgMTIsIDE1LCAyMzIsIDIyMCwgMTIsIDE1LCAyMzIsIDIxOSwgMTIsIAotICAgIDE1LCAyMzIsIDIxOCwgMTIsIDE1LCAyMzIsIDIxNywgMTIsIDE1LCAyMzIsIDIxNiwgMTIsIDE1LCAyMzIsIDIxNSwgMTIsIAotICAgIDE1LCAyMzIsIDIxNCwgMTIsIDE1LCAyMzIsIDIxMywgMTIsIDE1LCAyMzIsIDIxMiwgMTIsIDE1LCAyMzIsIDIxMSwgMTIsIAotICAgIDE1LCAyMzIsIDIxMCwgMTIsIDE1LCAyMzIsIDIwOSwgMTIsIDE1LCAyMzIsIDIwOCwgMTIsIDE1LCAyMzIsIDIwNywgMTIsIAotICAgIDE1LCAyMzIsIDIwNiwgMTIsIDE1LCAyMzIsIDIwNSwgMTIsIDE1LCAyMzIsIDIwNCwgMTIsIDE1LCAyMzIsIDIwMywgMTIsIAotICAgIDE1LCAyMzIsIDIwMiwgMTIsIDE1LCAyMzIsIDIwMSwgMTIsIDE1LCAyMzIsIDIwMCwgMTIsIDE1LCAyMzIsIDE5OSwgMTIsIAotICAgIDE1LCAyMzIsIDE5OCwgMTIsIDE1LCAyMzIsIDE5NywgMTIsIDE1LCAyMzIsIDE5NiwgMTIsIDE1LCAyMzIsIDE5NSwgMTIsIAotICAgIDE1LCAyMzIsIDE5NCwgMTIsIDE1LCAyMzIsIDE5MywgMTIsIDE1LCAyMzIsIDE5MiwgMTIsIDE1LCAyMzIsIDE5MSwgMTIsIAotICAgIDE1LCAyMzIsIDE5MCwgMTIsIDE1LCAyMzIsIDE4OSwgMTIsIDE1LCAyMzIsIDE4OCwgMTIsIDE1LCAyMzIsIDE4NywgMTIsIAotICAgIDE1LCAyMzIsIDE4NiwgMTIsIDE1LCAyMzIsIDE4NSwgMTIsIDE1LCAyMzIsIDE4NCwgMTIsIDE1LCAyMzIsIDE4MywgMTIsIAotICAgIDE1LCAyMzIsIDE4MiwgMTIsIDE1LCAyMzIsIDE4MSwgMTIsIDE1LCAyMzIsIDE4MCwgMTIsIDE1LCAyMzIsIDE3OSwgMTIsIAotICAgIDE1LCAyMzIsIDE3OCwgMTIsIDE1LCAyMzIsIDE3NywgMTIsIDE1LCAyMzIsIDE3NiwgMTIsIDE1LCAyMzIsIDE3NSwgMTIsIAotICAgIDE1LCAyMzIsIDE3NCwgMTIsIDE1LCAyMzIsIDE3MywgMTIsIDE1LCAyMzIsIDE3MiwgMTIsIDE1LCAyMzIsIDE3MSwgMTIsIAotICAgIDE1LCAyMzIsIDE3MCwgMTIsIDE1LCAyMzIsIDE2OSwgMTIsIDE1LCAyMzIsIDE2OCwgMTIsIDE1LCAyMzIsIDE2NywgMTIsIAotICAgIDE1LCAyMzIsIDE2NiwgMTIsIDE1LCAyMzIsIDE2NSwgMTIsIDE1LCAyMzIsIDE2NCwgMTIsIDE1LCAyMzIsIDE2MywgMTIsIAotICAgIDE1LCAyMzIsIDE2MiwgMTIsIDE1LCAyMzIsIDE2MSwgMTIsIDE1LCAyMzIsIDE2MCwgMTIsIDE1LCAyMzIsIDE1OSwgMTIsIAotICAgIDE1LCAyMzIsIDE1OCwgMTIsIDE1LCAyMzIsIDE1NywgMTIsIDE1LCAyMzIsIDE1NiwgMTIsIDE1LCAyMzIsIDE1NSwgMTIsIAotICAgIDE1LCAyMzIsIDE1NCwgMTIsIDE1LCAyMzIsIDE1MywgMTIsIDE1LCAyMzIsIDE1MiwgMTIsIDE1LCAyMzIsIDE1MSwgMTIsIAotICAgIDE1LCAyMzIsIDE1MCwgMTIsIDE1LCAyMzIsIDE0OSwgMTIsIDE1LCAyMzIsIDE0OCwgMTIsIDE1LCAyMzIsIDE0NywgMTIsIAotICAgIDE1LCAyMzIsIDE0NiwgMTIsIDE1LCAyMzIsIDE0NSwgMTIsIDE1LCAyMzIsIDE0NCwgMTIsIDE1LCAyMzIsIDE0MywgMTIsIAotICAgIDE1LCAyMzIsIDE0MiwgMTIsIDE1LCAyMzIsIDE0MSwgMTIsIDE1LCAyMzIsIDE0MCwgMTIsIDE1LCAyMzIsIDEzOSwgMTIsIAotICAgIDE1LCAyMzIsIDEzOCwgMTIsIDE1LCAyMzIsIDEzNywgMTIsIDE1LCAyMzIsIDEzNiwgMTIsIDE1LCAyMzIsIDEzNSwgMTIsIAotICAgIDE1LCAyMzIsIDEzNCwgMTIsIDE1LCAyMzIsIDEzMywgMTIsIDE1LCAyMzIsIDEzMiwgMTIsIDE1LCAyMzIsIDEzMSwgMTIsIAotICAgIDE1LCAyMzIsIDEzMCwgMTIsIDE1LCAyMzIsIDEyOSwgMTIsIDE1LCAyMzIsIDEyOCwgMTIsIDE1LCAyMzIsIDEyNywgMTIsIAotICAgIDE1LCAyMzIsIDEyNiwgMTIsIDE1LCAyMzIsIDEyNSwgMTIsIDE1LCAyMzIsIDEyNCwgMTIsIDE1LCAyMzIsIDEyMywgMTIsIAotICAgIDE1LCAyMzIsIDEyMiwgMTIsIDE1LCAyMzIsIDEyMSwgMTIsIDE1LCAyMzIsIDEyMCwgMTIsIDE1LCAyMzIsIDExOSwgMTIsIAotICAgIDE1LCAyMzIsIDExOCwgMTIsIDE1LCAyMzIsIDExNywgMTIsIDE1LCAyMzIsIDExNiwgMTIsIDE1LCAyMzIsIDExNSwgMTIsIAotICAgIDE1LCAyMzIsIDExNCwgMTIsIDE1LCAyMzIsIDExMywgMTIsIDE1LCAyMzIsIDExMiwgMTIsIDE1LCAyMzIsIDExMSwgMTIsIAotICAgIDE1LCAyMzIsIDExMCwgMTIsIDE1LCAyMzIsIDEwOSwgMTIsIDE1LCAyMzIsIDEwOCwgMTIsIDE1LCAyMzIsIDEwNywgMTIsIAotICAgIDE1LCAyMzIsIDEwNiwgMTIsIDE1LCAyMzIsIDEwNSwgMTIsIDE1LCAyMzIsIDEwNCwgMTIsIDE1LCAyMzIsIDEwMywgMTIsIAotICAgIDE1LCAyMzIsIDEwMiwgMTIsIDE1LCAyMzIsIDEwMSwgMTIsIDE1LCAyMzIsIDEwMCwgMTIsIDE1LCAyMzIsIDk5LCAxMiwgCi0gICAgMTUsIDIzMiwgOTgsIDEyLCAxNSwgMjMyLCA5NywgMTIsIDE1LCAyMzIsIDk2LCAxMiwgMTUsIDIzMiwgOTUsIDEyLCAxNSwgCi0gICAgMjMyLCA5NCwgMTIsIDE1LCAyMzIsIDkzLCAxMiwgMTUsIDIzMiwgOTIsIDEyLCAxNSwgMjMyLCA5MSwgMTIsIDE1LCAyMzIsIAotICAgIDkwLCAxMiwgMTUsIDIzMiwgODksIDEyLCAxNSwgMjMyLCA4OCwgMTIsIDE1LCAyMzIsIDg3LCAxMiwgMTUsIDIzMiwgODYsIAotICAgIDEyLCAxNSwgMjMyLCA4NSwgMTIsIDE1LCAyMzIsIDg0LCAxMiwgMTUsIDIzMiwgODMsIDEyLCAxNSwgMjMyLCA4MiwgMTIsIAotICAgIDE1LCAyMzIsIDgxLCAxMiwgMTUsIDIzMiwgODAsIDEyLCAxNSwgMjMyLCA3OSwgMTIsIDE1LCAyMzIsIDc4LCAxMiwgMTUsIAotICAgIDIzMiwgNzcsIDEyLCAxNSwgMjMyLCA3NiwgMTIsIDE1LCAyMzIsIDc1LCAxMiwgMTUsIDIzMiwgNzQsIDEyLCAxNSwgMjMyLCAKLSAgICA3MywgMTIsIDE1LCAyMzIsIDcyLCAxMiwgMTUsIDIzMiwgNzEsIDEyLCAxNSwgMjMyLCA3MCwgMTIsIDE1LCAyMzIsIDY5LCAKLSAgICAxMiwgMTUsIDIzMiwgNjgsIDEyLCAxNSwgMjMyLCA2NywgMTIsIDE1LCAyMzIsIDY2LCAxMiwgMTUsIDIzMiwgNjUsIDEyLCAKLSAgICAxNSwgMjMyLCA2NCwgMTIsIDE1LCAyMzIsIDYzLCAxMiwgMTUsIDIzMiwgNjIsIDEyLCAxNSwgMjMyLCA2MSwgMTIsIDE1LCAKLSAgICAyMzIsIDYwLCAxMiwgMTUsIDIzMiwgNTksIDEyLCAxNSwgMjMyLCA1OCwgMTIsIDE1LCAyMzIsIDU3LCAxMiwgMTUsIDIzMiwgCi0gICAgNTYsIDEyLCAxNSwgMjMyLCA1NSwgMTIsIDE1LCAyMzIsIDU0LCAxMiwgMTUsIDIzMiwgNTMsIDEyLCAxNSwgMjMyLCA1MiwgCi0gICAgMTIsIDE1LCAyMzIsIDUxLCAxMiwgMTUsIDIzMiwgNTAsIDEyLCAxNSwgMjMyLCA0OSwgMTIsIDE1LCAyMzIsIDQ4LCAxMiwgCi0gICAgMTUsIDIzMiwgNDcsIDEyLCAxNSwgMjMyLCA0NiwgMTIsIDE1LCAyMzIsIDQ1LCAxMiwgMTUsIDIzMiwgNDQsIDEyLCAxNSwgCi0gICAgMjMyLCA0MywgMTIsIDE1LCAyMzIsIDQyLCAxMiwgMTUsIDIzMiwgNDEsIDEyLCAxNSwgMjMyLCA0MCwgMTIsIDE1LCAyMzIsIAotICAgIDM5LCAxMiwgMTUsIDIzMiwgMzgsIDEyLCAxNSwgMjMyLCAzNywgMTIsIDE1LCAyMzIsIDM2LCAxMiwgMTUsIDIzMiwgMzUsIAotICAgIDEyLCAxNSwgMjMyLCAzNCwgMTIsIDE1LCAyMzIsIDMzLCAxMiwgMTUsIDIzMiwgMzIsIDEyLCAxNSwgMjMyLCAzMSwgMTIsIAotICAgIDE1LCAyMzIsIDMwLCAxMiwgMTUsIDIzMiwgMjksIDEyLCAxNSwgMjMyLCAyOCwgMTIsIDE1LCAyMzIsIDI3LCAxMiwgMTUsIAotICAgIDIzMiwgMjYsIDEyLCAxNSwgMjMyLCAyNSwgMTIsIDE1LCAyMzIsIDI0LCAxMiwgMTUsIDIzMiwgMjMsIDEyLCAxNSwgMjMyLCAKLSAgICAyMiwgMTIsIDE1LCAyMzIsIDIxLCAxMiwgMTUsIDIzMiwgMjAsIDEyLCAxNSwgMjMyLCAxOSwgMTIsIDE1LCAyMzIsIDE4LCAKLSAgICAxMiwgMTUsIDIzMiwgMTcsIDEyLCAxNSwgMjMyLCAxNiwgMTIsIDE1LCAyMzIsIDE1LCAxMiwgMTUsIDIzMiwgMTQsIDEyLCAKLSAgICAxNSwgMjMyLCAxMywgMTIsIDE1LCAyMzIsIDEyLCAxMiwgMTUsIDIzMiwgMTEsIDEyLCAxNSwgMjMyLCAxMCwgMTIsIDE1LCAKLSAgICAyMzIsIDksIDEyLCAxNSwgMjMyLCA4LCAxMiwgMTUsIDIzMiwgNywgMTIsIDE1LCAyMzIsIDYsIDEyLCAxNSwgMjMyLCA1LCAKLSAgICAxMiwgMTUsIDIzMiwgNCwgMTIsIDE1LCAyMzIsIDMsIDEyLCAxNSwgMjMyLCAyLCAxMiwgMTUsIDIzMiwgMSwgMTIsIDE1LCAKLSAgICAyMzIsIDAsIDEyLCAxNSwgMjMxLCAyNTUsIDEyLCAxNSwgMjMxLCAyNTQsIDEyLCAxNSwgMjMxLCAyNTMsIDEyLCAxNSwgCi0gICAgMjMxLCAyNTIsIDEyLCAxNSwgMjMxLCAyNTEsIDEyLCAxNSwgMjMxLCAyNTAsIDEyLCAxNSwgMjMxLCAyNDksIDEyLCAxNSwgCi0gICAgMjMxLCAyNDgsIDEyLCAxNSwgMjMxLCAyNDcsIDEyLCAxNSwgMjMxLCAyNDYsIDEyLCAxNSwgMjMxLCAyNDUsIDEyLCAxNSwgCi0gICAgMjMxLCAyNDQsIDEyLCAxNSwgMjMxLCAyNDMsIDEyLCAxNSwgMjMxLCAyNDIsIDEyLCAxNSwgMjMxLCAyNDEsIDEyLCAxNSwgCi0gICAgMjMxLCAyNDAsIDEyLCAxNSwgMjMxLCAyMzksIDEyLCAxNSwgMjMxLCAyMzgsIDEyLCAxNSwgMjMxLCAyMzcsIDEyLCAxNSwgCi0gICAgMjMxLCAyMzYsIDEyLCAxNSwgMjMxLCAyMzUsIDEyLCAxNSwgMjMxLCAyMzQsIDEyLCAxNSwgMjMxLCAyMzMsIDEyLCAxNSwgCi0gICAgMjMxLCAyMzIsIDEyLCAxNSwgMjMxLCAyMzEsIDEyLCAxNSwgMjMxLCAyMzAsIDEyLCAxNSwgMjMxLCAyMjksIDEyLCAxNSwgCi0gICAgMjMxLCAyMjgsIDEyLCAxNSwgMjMxLCAyMjcsIDEyLCAxNSwgMjMxLCAyMjYsIDEyLCAxNSwgMjMxLCAyMjUsIDEyLCAxNSwgCi0gICAgMjMxLCAyMjQsIDEyLCAxNSwgMjMxLCAyMjMsIDEyLCAxNSwgMjMxLCAyMjIsIDEyLCAxNSwgMjMxLCAyMjEsIDEyLCAxNSwgCi0gICAgMjMxLCAyMjAsIDEyLCAxNSwgMjMxLCAyMTksIDEyLCAxNSwgMjMxLCAyMTgsIDEyLCAxNSwgMjMxLCAyMTcsIDEyLCAxNSwgCi0gICAgMjMxLCAyMTYsIDEyLCAxNSwgMjMxLCAyMTUsIDEyLCAxNSwgMjMxLCAyMTQsIDEyLCAxNSwgMjMxLCAyMTMsIDEyLCAxNSwgCi0gICAgMjMxLCAyMTIsIDEyLCAxNSwgMjMxLCAyMTEsIDEyLCAxNSwgMjMxLCAyMTAsIDEyLCAxNSwgMjMxLCAyMDksIDEyLCAxNSwgCi0gICAgMjMxLCAyMDgsIDEyLCAxNSwgMjMxLCAyMDcsIDEyLCAxNSwgMjMxLCAyMDYsIDEyLCAxNSwgMjMxLCAyMDUsIDEyLCAxNSwgCi0gICAgMjMxLCAyMDQsIDEyLCAxNSwgMjMxLCAyMDMsIDEyLCAxNSwgMjMxLCAyMDIsIDEyLCAxNSwgMjMxLCAyMDEsIDEyLCAxNSwgCi0gICAgMjMxLCAyMDAsIDEyLCAxNSwgMjMxLCAxOTksIDEyLCAxNSwgMjMxLCAxOTgsIDEyLCAxNSwgMjMxLCAxOTcsIDEyLCAxNSwgCi0gICAgMjMxLCAxOTYsIDEyLCAxNSwgMjMxLCAxOTUsIDEyLCAxNSwgMjMxLCAxOTQsIDEyLCAxNSwgMjMxLCAxOTMsIDEyLCAxNSwgCi0gICAgMjMxLCAxOTIsIDEyLCAxNSwgMjMxLCAxOTEsIDEyLCAxNSwgMjMxLCAxOTAsIDEyLCAxNSwgMjMxLCAxODksIDEyLCAxNSwgCi0gICAgMjMxLCAxODgsIDEyLCAxNSwgMjMxLCAxODcsIDEyLCAxNSwgMjMxLCAxODYsIDEyLCAxNSwgMjMxLCAxODUsIDEyLCAxNSwgCi0gICAgMjMxLCAxODQsIDEyLCAxNSwgMjMxLCAxODMsIDEyLCAxNSwgMjMxLCAxODIsIDEyLCAxNSwgMjMxLCAxODEsIDEyLCAxNSwgCi0gICAgMjMxLCAxODAsIDEyLCAxNSwgMjMxLCAxNzksIDEyLCAxNSwgMjMxLCAxNzgsIDEyLCAxNSwgMjMxLCAxNzcsIDEyLCAxNSwgCi0gICAgMjMxLCAxNzYsIDEyLCAxNSwgMjMxLCAxNzUsIDEyLCAxNSwgMjMxLCAxNzQsIDEyLCAxNSwgMjMxLCAxNzMsIDEyLCAxNSwgCi0gICAgMjMxLCAxNzIsIDEyLCAxNSwgMjMxLCAxNzEsIDEyLCAxNSwgMjMxLCAxNzAsIDEyLCAxNSwgMjMxLCAxNjksIDEyLCAxNSwgCi0gICAgMjMxLCAxNjgsIDEyLCAxNSwgMjMxLCAxNjcsIDEyLCAxNSwgMjMxLCAxNjYsIDEyLCAxNSwgMjMxLCAxNjUsIDEyLCAxNSwgCi0gICAgMjMxLCAxNjQsIDEyLCAxNSwgMjMxLCAxNjMsIDEyLCAxNSwgMjMxLCAxNjIsIDEyLCAxNSwgMjMxLCAxNjEsIDEyLCAxNSwgCi0gICAgMjMxLCAxNjAsIDEyLCAxNSwgMjMxLCAxNTksIDEyLCAxNSwgMjMxLCAxNTgsIDEyLCAxNSwgMjMxLCAxNTcsIDEyLCAxNSwgCi0gICAgMjMxLCAxNTYsIDEyLCAxNSwgMjMxLCAxNTUsIDEyLCAxNSwgMjMxLCAxNTQsIDEyLCAxNSwgMjMxLCAxNTMsIDEyLCAxNSwgCi0gICAgMjMxLCAxNTIsIDEyLCAxNSwgMjMxLCAxNTEsIDEyLCAxNSwgMjMxLCAxNTAsIDEyLCAxNSwgMjMxLCAxNDksIDEyLCAxNSwgCi0gICAgMjMxLCAxNDgsIDEyLCAxNSwgMjMxLCAxNDcsIDEyLCAxNSwgMjMxLCAxNDYsIDEyLCAxNSwgMjMxLCAxNDUsIDEyLCAxNSwgCi0gICAgMjMxLCAxNDQsIDEyLCAxNSwgMjMxLCAxNDMsIDEyLCAxNSwgMjMxLCAxNDIsIDEyLCAxNSwgMjMxLCAxNDEsIDEyLCAxNSwgCi0gICAgMjMxLCAxNDAsIDEyLCAxNSwgMjMxLCAxMzksIDEyLCAxNSwgMjMxLCAxMzgsIDEyLCAxNSwgMjMxLCAxMzcsIDEyLCAxNSwgCi0gICAgMjMxLCAxMzYsIDEyLCAxNSwgMjMxLCAxMzUsIDEyLCAxNSwgMjMxLCAxMzQsIDEyLCAxNSwgMjMxLCAxMzMsIDEyLCAxNSwgCi0gICAgMjMxLCAxMzIsIDEyLCAxNSwgMjMxLCAxMzEsIDEyLCAxNSwgMjMxLCAxMzAsIDEyLCAxNSwgMjMxLCAxMjksIDEyLCAxNSwgCi0gICAgMjMxLCAxMjgsIDEyLCAxNSwgMjMxLCAxMjcsIDEyLCAxNSwgMjMxLCAxMjYsIDEyLCAxNSwgMjMxLCAxMjUsIDEyLCAxNSwgCi0gICAgMjMxLCAxMjQsIDEyLCAxNSwgMjMxLCAxMjMsIDEyLCAxNSwgMjMxLCAxMjIsIDEyLCAxNSwgMjMxLCAxMjEsIDEyLCAxNSwgCi0gICAgMjMxLCAxMjAsIDEyLCAxNSwgMjMxLCAxMTksIDEyLCAxNSwgMjMxLCAxMTgsIDEyLCAxNSwgMjMxLCAxMTcsIDEyLCAxNSwgCi0gICAgMjMxLCAxMTYsIDEyLCAxNSwgMjMxLCAxMTUsIDgsIDUsIDMyLCAyNDAsIDMwLCA4LCA1LCAzMiwgMjQwLCAyNiwgOCwgNSwgCi0gICAgMzIsIDIzOSwgMjI4LCA4LCA1LCAzMiwgMjQwLCAyOSwgOCwgNSwgMzIsIDI0MCwgMjgsIDgsIDUsIDMyLCAxNjMsIDIxNSwgCi0gICAgOTQsIDIxMCwgNjksIDgsIDUsIDMyLCAyMTEsIDEwOCwgMTc4LCA1LCAzMiwgMjI0LCAyNDEsIDIyMSwgMTUyLCAxNzgsIDUsIAotICAgIDMyLCAyMjQsIDI0MSwgMjQxLCAxNjcsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMzEsIDE5LCAxNzgsIDUsIDMyLCAyMDUsIAotICAgIDIzNSwgMjIxLCAxNTIsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMDMsIDE3NCwgMTEwLCAxLCAyMDIsIDIzNywgMywgMjM2LCAKLSAgICAyMzIsIDExMCwgMjE4LCA2MywgMjMwLCA4MSwgMjA2LCA2NywgMTEwLCAzMiwgMjAzLCA5LCAyMDIsIDIzNywgMjAyLCAyMzcsIAotICAgIDIxOSwgNTQsIDExMCwgMSwgMjUwLCAyNTAsIDI1MCwgMywgMTEwLCAxLCAyMDQsIDI3LCAyNTEsIDMwLCAxMTAsIDEsIDIwNCwgCi0gICAgMjcsIDI0NCwgMTc4LCAxMTAsIDEsIDIwNCwgMjcsIDIzNywgNjcsIDExMCwgMSwgMjA0LCAyNywgMjMwLCAyMiwgMTEwLCAxLCAKLSAgICAyMDQsIDI3LCAyMjgsIDIwLCAxMTAsIDEsIDIwNCwgMjcsIDQ2LCAyMjQsIDI0NywgMTEwLCAxLCAyMDQsIDI3LCAyMTYsIAotICAgIDkxLCAxMTAsIDEsIDIwNCwgMjcsIDIwOSwgMjAzLCAxMTAsIDEsIDI1MCwgMjUwLCA5MSwgNTQsIDExMCwgMSwgMjEzLCAwLCAKLSAgICAzLCAyMTMsIDAsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAzLCAyMTIsIDEyNCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIAotICAgIDMsIDI0NCwgMTk4LCAyNSwgMjEzLCAwLCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgMywgMjQ0LCAxOTgsIDI1LCAyMTIsIAotICAgIDEyNCwgMjQzLCA4NSwgMTEwLCAxLCAxMzcsIDMsIDIxOSwgNTQsIDExMCwgMSwgMTM3LCAzLCAyMTcsIDExNCwgMTEwLCAxLCAKLSAgICAxMzcsIDMsIDIyNSwgMTA1LCAxMTAsIDEsIDI0OCwgMTA5LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMzgsIDY4LCAzLCAyNDQsIAotICAgIDE5NywgMTEwLCAxLCAyNDQsIDE3OSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjM3LCA2OCwgMywgMjI1LCAxMDUsIDExMCwgMSwgCi0gICAgMjA2LCA2MCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjAyLCA5NiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjA5LCAxMzMsIDMsIAotICAgIDI0NCwgMTk3LCAxMTAsIDEsIDIwMiwgMjM3LCAzLCAyNDQsIDE5NywgMTEwLCAxLCA0NiwgMjMwLCAyMywgMywgMjQ0LCAKLSAgICAxOTcsIDExMCwgMSwgMjMwLCAyMywgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjI4LCAyMSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgCi0gICAgMjI0LCAyNDgsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIyMSwgNDEsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNCwgMjUwLCAzLCAKLSAgICAyNDQsIDE5NywgMTEwLCAxLCA0NiwgMjE5LCAzNSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE5LCAzNSwgMywgMjQ0LCAxOTcsIAotICAgIDExMCwgMSwgMjA4LCAxNiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE3LCA3NSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE2LCAKLSAgICA5MiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjEzLCAwLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMDksIDIwNCwgMywgMjQ0LCAKLSAgICAxOTcsIDExMCwgMSwgMjA2LCA2MCwgMywgMjM2LCAxMjgsIDExMCwgMSwgMjQ4LCAxMDksIDMsIDIxNiwgMjAwLCAxMTAsIDEsIAotICAgIDIzMCwgMjMsIDMsIDIxNiwgMjAwLCAxMTAsIDEsIDIxOSwgMzUsIDMsIDIxNiwgMjAwLCAxMTAsIDMyLCAxMzcsIDIyOCwgCi0gICAgMjAsIDEwLCAxLCAxMzcsIDIwNCwgODgsIDY0LCAxOCwgMTAsIDEsIDEzNywgMjA0LCA4OCwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAKLSAgICAxNDksIDY0LCAxOCwgMTAsIDEsIDI0OCwgMTQ5LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDE0OSwgODEsIDE4LCAxMCwgMSwgCi0gICAgMjQ4LCAxNDksIDE3NCwgMTgsIDEwLCAxLCAyMTksIDE3LCA2NCwgMTgsIDEwLCAxLCAyMTksIDE3LCA0NiwgMTgsIDEwLCAxLCAKLSAgICAyMTksIDE3LCA4MSwgMTgsIDEwLCAxLCAyMTksIDE3LCAxNzQsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDY0LCAxOCwgMTAsIDEsIAotICAgIDI0OCwgMTM3LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDEzNywgODEsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMDcsIDIzMiwgNjQsIDE4LCAxMCwgMSwgMjA3LCAyMzIsIDQ2LCAxOCwgMTAsIDEsIDIwNywgMjMyLCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMDcsIDIzMiwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTY4LCA2NCwgMTgsIDEwLCAxLCAyMDksIDE2OCwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTY4LCAxNzQsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIwNywgMjM0LCA0NiwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgODEsIDE4LCAxMCwgMSwgMjA3LCAKLSAgICAyMzQsIDE3NCwgMTgsIDEwLCAxLCAyMDYsIDQ5LCA2NCwgMTgsIDEwLCAxLCAyMDYsIDQ5LCA0NiwgMTgsIDEwLCAxLCAyMDYsIAotICAgIDQ5LCA4MSwgMTgsIDEwLCAxLCAyMDYsIDQ5LCAxNzQsIDE4LCAxMCwgMSwgMjE5LCAxNSwgNjQsIDE4LCAxMCwgMSwgMjE5LCAKLSAgICAxNSwgNDYsIDE4LCAxMCwgMSwgMjE5LCAxNSwgODEsIDE4LCAxMCwgMSwgMjE5LCAxNSwgMTc0LCAxOCwgMTAsIDEsIDI0MiwgCi0gICAgNiwgNjQsIDE4LCAxMCwgMSwgMjQyLCA2LCA0NiwgMTgsIDEwLCAxLCAyNDIsIDYsIDgxLCAxOCwgMTAsIDEsIDI0MiwgNiwgCi0gICAgMTc0LCAxOCwgMTAsIDEsIDIyMCwgMjU1LCA2NCwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgNDYsIDE4LCAxMCwgMSwgMjIwLCAKLSAgICAyNTUsIDgxLCAxOCwgMTAsIDEsIDIyMCwgMjU1LCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIwOSwgMTkyLCA0NiwgMTgsIDEwLCAxLCAyMDksIDE5MiwgODEsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMDksIDE5MCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxOTAsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTkwLCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMDksIDE5MCwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMTE4LCA2NCwgMTgsIDEwLCAxLCAyNDQsIDExOCwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjQ0LCAxOTIsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTkyLCA0NiwgMTgsIDEwLCAxLCAyNDIsIDM0LCA2NCwgCi0gICAgMTgsIDEwLCAxLCAyNDIsIDM0LCA0NiwgMTgsIDEwLCAxLCAyNDQsIDExNiwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxMTYsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDIzMCwgMTU2LCA2NCwgMTgsIDEwLCAxLCAyMzAsIDE1NiwgNDYsIDE4LCAxMCwgMSwgMjE1LCAxNzgsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIxNSwgMTc4LCA0NiwgMTgsIDEwLCAxLCAyMjksIDE5MCwgNjQsIDE4LCAxMCwgMSwgMjI5LCAKLSAgICAxOTAsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgMTkwLCA4MSwgMTgsIDEwLCAxLCAyMjksIDE5MCwgMTc0LCAxOCwgMTAsIDEsIAotICAgIDIzOCwgMjUyLCA2NCwgMTgsIDEwLCAxLCAyMzgsIDI1MiwgNDYsIDE4LCAxMCwgMSwgMjM4LCAyNTIsIDgxLCAxOCwgMTAsIAotICAgIDEsIDIzOCwgMjUyLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCAyMTgsIDY0LCAxOCwgMTAsIDEsIDIzNywgMjE4LCA0NiwgMTgsIAotICAgIDEwLCAxLCAyMzcsIDIxOCwgODEsIDE4LCAxMCwgMSwgMjM3LCAyMTgsIDE3NCwgMTgsIDEwLCAxLCAyMjIsIDEyNywgNjQsIAotICAgIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDQ2LCAxOCwgMTAsIDEsIDIyMiwgMTI3LCA4MSwgMTgsIDEwLCAxLCAyMjIsIDEyNywgCi0gICAgMTc0LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAyMzgsIDg2LCA2NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMjM4LCA4NiwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjE1LCAyMzEsIDY0LCAxOCwgMTAsIDEsIDIxNSwgMjMxLCA0NiwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgCi0gICAgODEsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAzLCA4OSwgODcsIDY0LCAxOCwgMTAsIAotICAgIDEsIDIzNywgNDQsIDMsIDg5LCA4NywgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNywgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjM3LCA0NCwgMjM4LCAzNywgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNywgODEsIDE4LCAxMCwgMSwgMjM3LCAKLSAgICA0NCwgMjM4LCAzNywgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTEwLCA2NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAKLSAgICAyNDMsIDExMCwgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMTAsIDgxLCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgCi0gICAgMTEwLCAxNzQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCA2NCwgMTgsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDg5LCAyNDgsIDIyNCwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIAotICAgIDIzNywgMTI4LCA4NywgNDYsIDE4LCAxMCwgMTYsIDcwLCA1NSwgMTAsIDE2LCA3MCwgNTYsIDEwLCAxNiwgMTIwLCAxODcsIAotICAgIDU1LCAxMCwgMTYsIDEyMCwgMTg3LCA1NiwgMTAsIDE2LCAxMjYsIDE4NywgNTUsIDEwLCAxNiwgMTI2LCAxODcsIDU2LCAxMCwgCi0gICAgMTYsIDEyNiwgMTg3LCAyMTgsIDU5LCAxODMsIDU1LCAxMCwgMTYsIDEyNiwgMTg3LCAyMTgsIDU5LCAxODMsIDU2LCAxMCwgCi0gICAgMTYsIDIzOSwgMTQ3LCAxODcsIDU1LCAxMCwgMTYsIDIzOSwgMTQ3LCAxODcsIDU2LCAxMCwgMTYsIDUyLCA4MCwgMjQ4LCAKLSAgICAyMzEsIDU2LCAxMCwgMTYsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTUsIDEwLCAxNiwgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NiwgCi0gICAgMTAsIDE2LCAyMTUsIDI1MiwgMTAsIDE2LCA1LCAyMDksIDI1MiwgNTUsIDEwLCAxNiwgNSwgMjA5LCAyNTIsIDU2LCAxMCwgCi0gICAgMSwgMjIyLCAyMDYsIDY0LCAxOCwgMTAsIDEsIDIyMiwgMjA2LCA0NiwgMTgsIDEwLCAxLCAyMjIsIDIwNiwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjIyLCAyMDYsIDE3NCwgMTgsIDEwLCAxLCAxMDYsIDY0LCAxOCwgMTAsIDEsIDEwNiwgNDYsIDE4LCAxMCwgMSwgCi0gICAgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMSwgMjIwLCA3NCwgNDYsIDE4LCAxMCwgMSwgMjAyLCAyMTQsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAxLCAxMDYsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMjA2LCA1NiwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMjA2LCA1NiwgNDYsIDE4LCAxMCwgMSwgMjI5LCA3NiwgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjI5LCA3NiwgMjIwLCA3NCwgNDYsIDE4LCAxMCwgMSwgMjI5LCA3NiwgMjAyLCAyMTQsIDY0LCAxOCwgMTAsIDEsIDIyOSwgCi0gICAgNzYsIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAxLCAxODgsIDY0LCAxOCwgMTAsIDEsIDE4OCwgNDYsIDE4LCAxMCwgMSwgMTg4LCAKLSAgICA4MSwgMTgsIDEwLCAxLCAxODgsIDE3NCwgMTgsIDEwLCAxLCAyMDcsIDE2LCAyMjksIDIwNSwgMjI5LCA3NiwgMTM3LCAyMjUsIAotICAgIDEzMCwgODEsIDE4LCAxMCwgMSwgMjA3LCAxNiwgMjI5LCAyMDUsIDIyOSwgNzYsIDEzNywgMjI1LCAxMzAsIDE3NCwgMTgsIAotICAgIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgCi0gICAgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMTAsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDExMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAotICAgIDIwNCwgNzEsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDQsIDcxLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTA2LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTA2LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIAotICAgIDIxNCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCA4MSwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCi0gICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAotICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKLSAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA4MSwgMTgsIDEwLCAxLCAyNDAsIDc1LCAKLSAgICA4OSwgNjQsIDE4LCAxMCwgMSwgMjQwLCA3NSwgODksIDQ2LCAxOCwgMTAsIDEsIDI0MCwgNzUsIDg5LCA4MSwgMTgsIDEwLCAKLSAgICAxLCAyNDAsIDc1LCA4OSwgMTc0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxODQsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgMTQxLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMTg0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgMjA5LCA4OSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCA4OSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDE4NCwgCi0gICAgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMjksIDE0MSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE1MSwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDIyOSwgMTQxLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMTQsIDE2MiwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjE0LCAxNjIsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAKLSAgICAyOSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIAotICAgIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKLSAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMDIsIDExMSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMzgsIDExNSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIAotICAgIDQ4LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDI0MCwgCi0gICAgNDgsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDI0MCwgNDgsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNywgCi0gICAgMTIwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjE3LCAxMjAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAKLSAgICAyMywgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgCi0gICAgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgCi0gICAgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAKLSAgICAyMywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAotICAgIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgODMsIDY0LCAxOCwgMTAsIDMyLCA4MywgCi0gICAgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKLSAgICAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIyOSwgCi0gICAgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAKLSAgICAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAxODQsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgODksIDY0LCAxOCwgMTAsIDMyLCAyMDksIDEwMSwgMywgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDIxNiwgMTIzLCAKLSAgICAzLCAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgMTM3LCAyMjUsIDEzMCwgMywgMjEwLCAxOTksIDEzNywgNjQsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgMTcxLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMjgsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDAsIDcyLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQ0LCAKLSAgICAxNzMsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIzMCwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIAotICAgIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgCi0gICAgMTI4LCA4NywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDI0OCwgMTM5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDI0OCwgMTM5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxMzcsIDIyNSwgMTMwLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIxNiwgMTIzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAKLSAgICAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgCi0gICAgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgCi0gICAgMTIwLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIzMCwgMjMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIzMCwgMjMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIAotICAgIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4MywgCi0gICAgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIxNiwgMTIzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxMzcsIDIyNSwgMTMwLCAKLSAgICAzLCAyMTAsIDE5OSwgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIyMSwgMTc5LCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgODksIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjM3LCAKLSAgICA0NCwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTUxLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMzcsIDQ0LCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgODEsIDE4LCAxMCwgCi0gICAgMzIsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDgzLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIAotICAgIDI0NCwgMjA4LCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyNDQsIDIwOCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjAyLCAKLSAgICAxMTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgCi0gICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIxNywgMTIwLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIAotICAgIDIzLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAotICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIAotICAgIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKLSAgICA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgCi0gICAgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAyMTAsIAotICAgIDE5OSwgMTM3LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4OSwgCi0gICAgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIAotICAgIDE3NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMzcsIDQ0LCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAKLSAgICAyMTMsIDgxLCAzLCAyNDAsIDcyLCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgMTczLCAxNzQsIDE4LCAxMCwgCi0gICAgMzIsIDIxMywgODEsIDMsIDIyOSwgMjMwLCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCAxMzcsIDIyNSwgMTMwLCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTM3LCAyMjUsIAotICAgIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgCi0gICAgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgCi0gICAgNDAsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIAotICAgIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKLSAgICAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIAotICAgIDMsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAKLSAgICAyNTIsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyNTEsIDYwLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMzgsIDExNSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDg5LCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDg5LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMjksIDE0MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCA4OSwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIAotICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIxMywgNDAsIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIxNiwgMTIzLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjE2LCAxMjMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMzcsIDQ0LCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgMTUxLCAxNzQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMTc0LCAxOCwgCi0gICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAxNzQsIDE4LCAxMCwgCi0gICAgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMDIsIDExMSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgMTM3LCAzLCAyNDAsIDcwLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMTM3LCAzLCAyNDAsIDcwLCA2NCwgMTgsIDIxOSwgMjMxLCA0OSwgMjE5LCA3NiwgMjE5LCAyMzEsIDUwLCAyMTksIDc2LCAKLSAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgMywgCi0gICAgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIAotICAgIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDE1MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAKLSAgICAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAzLCAKLSAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIAotICAgIDE2MiwgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIAotICAgIDgzLCAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNCwgCi0gICAgMTYyLCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDMsIDE1MSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODMsIDMsIAotICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIAotICAgIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCAKLSAgICA0MCwgMywgODMsIDMsIDIyOSwgMTQxLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDIyOSwgMTQxLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgCi0gICAgMjA4LCAzLCAyMjksIDE0MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIAotICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgCi0gICAgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIAotICAgIDI1MSwgNjAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDgzLCAzLCAKLSAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgCi0gICAgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgMywgODMsIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIAotICAgIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCAxNTEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIyOCwgMjksIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgCi0gICAgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCAzLCAxODQsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICAyMjksIDE0MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDE1MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDgzLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCAxNTEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgMTg0LCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIAotICAgIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgCi0gICAgNDQsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjIxLCAxNzksIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIAotICAgIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgCi0gICAgMywgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMywgCi0gICAgODMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgCi0gICAgMTQxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAKLSAgICAxNzAsIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgMywgCi0gICAgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxMzcsIDIyNSwgCi0gICAgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAKLSAgICAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgCi0gICAgMjA4LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgODMsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMjEsIDE3OSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjI4LCAyOSwgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCA4OSwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIAotICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjI4LCAyOSwgMywgMTg0LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDMsIDE1MSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDE4NCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODMsIAotICAgIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgCi0gICAgMTc5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjE1LCA0LCAyMDYsIDE4OCwgMjUwLCA4MiwgMjI4LCAyNTQsIAotICAgIDIxMSwgNjIsIDIsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDExNiwgMjA2LCAxODgsIDI1MCwgODIsIDIyOCwgMjU0LCAyMTEsIAotICAgIDYyLCAyLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCAxMywgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNDQsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMjQsIDU3LCA2NCwgMTgsIDEwLCAzMiwgMjE1LCA1LCA2NCwgMTgsIDEwLCAzMiwgMjE2LCAxNzQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyNTEsIDMzLCA2NCwgMTgsIDEwLCAzMiwgMjA0LCA5MCwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgNCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDIxNSwgMywgMjUxLCAzMywgMjA0LCA4OSwgMTAsIDMyLCAyMzAsIDE3MiwgMjE2LCA1NiwgNTQsIDEwLCAzMiwgMjQ4LCAKLSAgICA1MywgMjUwLCAxNDIsIDI1MCwgMTQzLCA1NywgMjE0LCAxNDksIDU3LCAyMTQsIDM4LCA1NywgMjEzLCAyMjYsIDU3LCAyMTMsIAotICAgIDIxNSwgNTcsIDIxMywgMjA0LCA1NywgMjEzLCAxOTMsIDU3LCAyMTMsIDE4MiwgNTcsIDIxMywgMTcxLCA1NywgMjEzLCAKLSAgICAxNjAsIDU3LCAyMTQsIDE0OCwgNTcsIDIxNCwgMTM3LCA1NywgMjE0LCAxMjYsIDU3LCAyMTQsIDExNSwgNTcsIDIxNCwgCi0gICAgMTA0LCA1NywgMjE0LCA5MywgNTcsIDIxNCwgODIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDUsIDIzMywgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDEzOSwgMjQ1LCAyMzMsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAxMzksIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQ1LCAyNDIsIDIxNywgMjQxLCAyMzksIAotICAgIDE1OSwgMzUsIDgwLCAyMTMsIDE0MywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0MCwgMjEyLCA4MiwgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDIxNywgNDcsIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDYxLCAKLSAgICAyMjcsIDE4NSwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAyMjcsIDE4NSwgMjQ3LCAyMjUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMzYsIDEwNiwgMjQxLCAxMDgsIDM5LCAzMiwgNDksIDIzNywgMTM3LCAzOSwgCi0gICAgMzIsIDUwLCAyMzcsIDEzNywgMzksIDUyLCAyMDgsIDIyOCwgNDksIDIzNywgMTM3LCAzOSwgNTIsIDIwOCwgMjI4LCA1MCwgCi0gICAgMjM3LCAxMzcsIDM5LCAyMjUsIDE3MSwgNDksIDIzNywgMTM3LCAzOSwgMjI1LCAxNzEsIDUwLCAyMzcsIDEzNywgMzksIAotICAgIDI0NSwgMjA2LCAyMjUsIDE3MCwgMzksIDMyLCA0OSwgMTYyLCA1NiwgMzksIDMyLCA1MCwgMTYyLCA1NiwgMzksIDIwOCwgCi0gICAgMjI4LCA0OSwgMTYyLCA1NiwgMzksIDIwOCwgMjI4LCA1MCwgMTYyLCA1NiwgMzksIDIyNSwgMTcxLCA0OSwgMTYyLCA1NiwgCi0gICAgMzksIDIyNSwgMTcxLCA1MCwgMTYyLCA1NiwgMzksIDI0NSwgMjA2LCAyMjUsIDE3MSwgNTYsIDM5LCAzNiwgMjA4LCAxOTgsIAotICAgIDQ5LCAyMzcsIDEzNywgMzksIDM2LCAyMDgsIDE5OCwgNTAsIDIzNywgMTM3LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgCi0gICAgMTIwLCA3MCwgMjI3LCAyMzIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDEsIDEwNCwgMjQ0LCAxNDQsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDEsIDkzLCAyNDQsIDE0NCwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIAotICAgIDEyNCwgMjI3LCAxMTQsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMDQsIDcyLCAxMjQsIDIyNywgMTE0LCAyMTcsIAotICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDIxOSwgNzYsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgMjE5LCAKLSAgICA3NiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyNDUsIDkzLCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIAotICAgIDgwLCA1MCwgMjQ1LCA5MywgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAKLSAgICAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMjE3LCAyNDEsIAotICAgIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MiwgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAKLSAgICA2MiwgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgCi0gICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAKLSAgICAzNSwgODAsIDQ5LCAyNTAsIDIxOCwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDI1MCwgMjE4LCAxNTUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjQ1LCAxNjYsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgCi0gICAgODAsIDUwLCAyNDUsIDE2NiwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDYxLCAyNDUsIDE2NiwgMTU1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAyNDUsIDE2NiwgMTU1LCAyMTMsIDEyMSwgMjQzLCA4NSwgNjEsIAotICAgIDIxMywgMTIxLCAyNDMsIDg1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDUxLCAxNTUsIDIxNywgMjQxLCAKLSAgICAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNTEsIDE1NSwgMjQ0LCAxNDMsIDIxOSwgMTk4LCAyNDYsIDIxNCwgMjE5LCAxOTgsIAotICAgIDIwNCwgNzIsIDIxOSwgMTk4LCA1MiwgMjA0LCA3MiwgMjE5LCAxOTgsIDI0NCwgMTQzLCAxMjQsIDIyNywgMTE0LCAyNDYsIAotICAgIDIxNCwgMTI0LCAyMjcsIDExNCwgMjA0LCA3MiwgMTI0LCAyMjcsIDExNCwgNSwgMjQ1LCAyMzMsIDUsIDEzOSwgMjQ1LCAKLSAgICAyMzMsIDUsIDIzOSwgMTAyLCAyMTEsIDYxLCA1LCAyMTMsIDE0MywgNSwgMjQ1LCAyNDIsIDUsIDIxNywgNDcsIDgyLCA1LCAKLSAgICAyNDAsIDIxMiwgODIsIDUsIDI0MSwgMTA0LCAyNDQsIDE0NCwgNSwgNDksIDIxOSwgNzYsIDUsIDUwLCAyMTksIDc2LCA1LCAKLSAgICA0OSwgMjQ1LCA5MywgMTU1LCA1LCA1MCwgMjQ1LCA5MywgMTU1LCA1LCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNSwgCi0gICAgNTAsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUsIDQyLCA1NCwgNSwgMjUwLCAyMzUsIDUsIDI1MCwgNTksIDUsIDkxLCAKLSAgICA1NCwgNSwgMjM1LCAyMTksIDUsIDIyNywgMTc5LCA1NCwgNSwgMjM3LCAyNDcsIDU0LCA1LCAyNDEsIDM1LCA1NCwgNSwgCi0gICAgMjE2LCA3NCwgMjEyLCAwLCA1LCAyNDMsIDk3LCA1NCwgNSwgMjE4LCAyNDYsIDU0LCA1LCAyNDUsIDIzMSwgMjUwLCA0OSwgCi0gICAgMTAsIDI0MCwgNzAsIDY0LCAxOCwgMTAsIDIwOSwgMjEwLCAzLCAyNDAsIDcwLCA1NSwgMTAsIDI0NCwgMTcxLCA2NCwgMTgsIAotICAgIDEwLCAyMDksIDI0OSwgMjM5LCAxMzcsIDEwLCAyMjksIDIyOCwgNjQsIDE4LCAxMCwgMjQwLCA3MiwgNjQsIDE4LCAxMCwgCi0gICAgMjQwLCA3MiwgMTc0LCAxOCwgMTAsIDI0NCwgMTczLCA2NCwgMTgsIDEwLCAyNDQsIDE3MywgMTc0LCAxOCwgMTAsIDIyOSwgCi0gICAgMjMwLCA2NCwgMTgsIDEwLCAyMjksIDIzMCwgMTc0LCAxOCwgMTAsIDIxMywgODEsIDY0LCAxOCwgMTAsIDIxMywgODEsIAotICAgIDE3NCwgMTgsIDEwLCAyMTAsIDIyMywgNjQsIDE4LCAxMCwgMjEwLCAyMjMsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDEyOCwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMjUsIDE2NiwgODcsIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIDg3LCAKLSAgICA0NiwgMTgsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgODcsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMjA0LCA3MSwgMywgMjM3LCAKLSAgICAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNjQsIDE4LCAxMCwgMSwgMTM3LCAKLSAgICAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDQ2LCAxOCwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDgxLCAxOCwgMTAsIDEsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDE3NCwgMTgsIDEwLCAxLCAxMzcsIDY0LCAxOCwgMTAsIDEsIDEzNywgNDYsIDE4LCAxMCwgCi0gICAgMSwgMjQ4LCAxMzksIDY0LCAxOCwgMTAsIDEsIDI0OCwgMTM5LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDEzOSwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjQ4LCAxMzksIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OSwgNjQsIDE4LCAxMCwgMSwgMjA5LCAKLSAgICAxNzAsIDIyNSwgOTksIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTcwLCA2NCwgMTgsIDEwLCAxLCAyMDksIDE3MCwgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjA5LCAxNzAsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTcwLCAxNzQsIDE4LCAxMCwgMSwgMjA5LCA4OSwgNjQsIAotICAgIDE4LCAxMCwgMSwgMjA5LCA4OSwgNDYsIDE4LCAxMCwgMSwgMjA5LCA4OSwgODEsIDE4LCAxMCwgMSwgMjA5LCA4OSwgMTc0LCAKLSAgICAxOCwgMTAsIDEsIDE4NCwgNjQsIDE4LCAxMCwgMSwgMTg0LCA0NiwgMTgsIDEwLCAxLCAxODQsIDgxLCAxOCwgMTAsIDEsIAotICAgIDE4NCwgMTc0LCAxOCwgMTAsIDEsIDE1MSwgNjQsIDE4LCAxMCwgMSwgMTUxLCA0NiwgMTgsIDEwLCAxLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDE1MSwgMTc0LCAxOCwgMTAsIDEsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAxLCAyMjksIDE0MSwgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDEsIDIyOSwgMTQxLCAxNzQsIDE4LCAxMCwgMSwgMjQ0LCAxODUsIDY0LCAKLSAgICAxOCwgMTAsIDEsIDI0NCwgMTg1LCA0NiwgMTgsIDEwLCAxLCAyMDksIDEwMSwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxMDEsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAxLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMSwgMjAyLCAKLSAgICAxMDgsIDY0LCAxOCwgMTAsIDEsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjE0LCAxNjIsIDQ2LCAxOCwgMTAsIDEsIDIxNCwgMTYyLCA4MSwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgMTc0LCAxOCwgMTAsIAotICAgIDEsIDIxMywgNDAsIDY0LCAxOCwgMTAsIDEsIDIxMywgNDAsIDQ2LCAxOCwgMTAsIDEsIDIxMywgNDAsIDgxLCAxOCwgMTAsIAotICAgIDEsIDIxMywgNDAsIDE3NCwgMTgsIDEwLCAxLCAyMTUsIDI5LCA2NCwgMTgsIDEwLCAxLCAyMTUsIDI5LCA0NiwgMTgsIDEwLCAKLSAgICAxLCAyMTUsIDI5LCA4MSwgMTgsIDEwLCAxLCAyMTUsIDI5LCAxNzQsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDY0LCAxOCwgMTAsIAotICAgIDEsIDI0NCwgMjA4LCA0NiwgMTgsIDEwLCAxLCAyNDQsIDIwOCwgODEsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDE3NCwgMTgsIAotICAgIDEwLCAxLCAyMDksIDI1MiwgNjQsIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMjUyLCA4MSwgCi0gICAgMTgsIDEwLCAxLCAyMDksIDI1MiwgMTc0LCAxOCwgMTAsIDEsIDIwMiwgMTExLCA2NCwgMTgsIDEwLCAxLCAyMDIsIDExMSwgCi0gICAgNDYsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIDgxLCAxOCwgMTAsIDEsIDIwMiwgMTExLCAxNzQsIDE4LCAxMCwgMSwgMjUxLCAKLSAgICA2MCwgNjQsIDE4LCAxMCwgMSwgMjUxLCA2MCwgNDYsIDE4LCAxMCwgMSwgMjUxLCA2MCwgODEsIDE4LCAxMCwgMSwgMjUxLCAKLSAgICA2MCwgMTc0LCAxOCwgMTAsIDEsIDIzOCwgMTE1LCA2NCwgMTgsIDEwLCAxLCAyMzgsIDExNSwgNDYsIDE4LCAxMCwgMSwgCi0gICAgMjM4LCAxMTUsIDgxLCAxOCwgMTAsIDEsIDIzOCwgMTE1LCAxNzQsIDE4LCAxMCwgMSwgMjQwLCA0OCwgNjQsIDE4LCAxMCwgCi0gICAgMSwgMjQwLCA0OCwgNDYsIDE4LCAxMCwgMSwgMjQwLCA0OCwgODEsIDE4LCAxMCwgMSwgMjQwLCA0OCwgMTc0LCAxOCwgMTAsIAotICAgIDEsIDIxNywgMTIwLCA2NCwgMTgsIDEwLCAxLCAyMTcsIDEyMCwgNDYsIDE4LCAxMCwgMSwgMjE3LCAxMjAsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDIxNywgMTIwLCAxNzQsIDE4LCAxMCwgMSwgMjMwLCAyMywgNjQsIDE4LCAxMCwgMSwgMjMwLCAyMywgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjMwLCAyMywgODEsIDE4LCAxMCwgMSwgMjMwLCAyMywgMTc0LCAxOCwgMTAsIDEsIDIyOCwgMjksIDY0LCAxOCwgCi0gICAgMTAsIDEsIDIyOCwgMjksIDQ2LCAxOCwgMTAsIDEsIDIyOCwgMjksIDgxLCAxOCwgMTAsIDEsIDIyOCwgMjksIDE3NCwgMTgsIAotICAgIDEwLCAxLCA4MywgNjQsIDE4LCAxMCwgMSwgODMsIDQ2LCAxOCwgMTAsIDEsIDgzLCA4MSwgMTgsIDEwLCAxLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDEsIDIyMSwgMTc5LCA2NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMSwgMjIxLCAxNzksIAotICAgIDgxLCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgNjQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgCi0gICAgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgODEsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDQ2LCAxOCwgMTAsIDEsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDEsIDEzNywgCi0gICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDEsIDg5LCA2NCwgMTgsIDEwLCAxLCA4OSwgNDYsIDE4LCAxMCwgMSwgODksIDgxLCAKLSAgICAxOCwgMTAsIDEsIDg5LCAxNzQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMjUsIDE2NiwgODcsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICAxMzcsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDg3LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgCi0gICAgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgNDYsIDE4LCAyMDIsIDg1LCAyMDQsIDI0LCAyMjEsIDE5MCwgMjExLCAKLSAgICAyMjgsIDE1NCwgMjQwLCAyMTIsIDgyLCAxNTQsIDIxNywgMzEsIDgyLCAxNTQsIDQyLCA1NCwgMTU0LCAyNDMsIDk3LCA1NCwgCi0gICAgMTU0LCAyMTgsIDI0NiwgNTQsIDE1NCwgMjUwLCAyMzUsIDE1NCwgMjUwLCAxNjAsIDE1NCwgNDksIDIxOSwgNzYsIDE1NCwgCi0gICAgNTAsIDIxOSwgNzYsIDE1NCwgMjUwLCA1OSwgMTU0LCA5MSwgNTQsIDE1NCwgMjQ1LCAyMzMsIDE1NCwgMjM1LCAyMTksIAotICAgIDE1NCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE1NCwgMjEyLCAwLCAxNTQsIDE3LCAyMDIsIDg0LCAxNTQsIDE3LCAxMDUsIDE1NCwgCi0gICAgMTcsIDEwOCwgMTU0LCAxNywgMTQ3LCAxNTQsIDE3LCAxNDksIDE1NCwgMTcsIDE3MCwgMTU0LCAxNywgMTk1LCAxNTQsIDE3LCAKLSAgICAyMTMsIDExMSwgMTU0LCAxNywgMTk5LCAxNTQsIDE3LCAyMjIsIDYzLCAxNTQsIDI0NSwgMjQyLCAxNTQsIDIxMywgMTQzLCAKLSAgICAxNTQsIDIyNywgMTc5LCA1NCwgMTU0LCAyNDEsIDM1LCA1NCwgMTU0LCAyMzcsIDI0NywgNTQsIDE1NCwgMjE3LCA0NywgODIsIAotICAgIDE1NCwgMjQ1LCAyMzEsIDI1MCwgNDksIDE1NCwgOCwgNiwgMSwgNjMsIDE1NCwgOCwgNiwgMSwgMjQ5LCAyNTUsIDE1NCwgOCwgCi0gICAgNiwgMSwgMjQ3LCAxMjUsIDE1NCwgOCwgNiwgMSwgMjQ1LCA1MSwgMTU0LCA4LCA2LCAxLCA3NCwgMTU0LCA4LCA2LCAxLCAKLSAgICAyNDAsIDE3NCwgMTU0LCA4LCA2LCAxLCAyMzksIDc1LCAxNTQsIDgsIDYsIDEsIDIzNywgMTcxLCAxNTQsIDgsIDYsIDEsIAotICAgIDc1LCAxNTQsIDgsIDYsIDEsIDIzMCwgMTg0LCAxNTQsIDgsIDYsIDEsIDIzMCwgNTQsIDE1NCwgOCwgNiwgMSwgMTU5LCAKLSAgICAxNTQsIDgsIDYsIDEsIDIyNiwgMTg1LCAxNTQsIDgsIDYsIDEsIDIyMywgMTYzLCAxNTQsIDgsIDYsIDEsIDc4LCAxNTQsIDgsIAotICAgIDYsIDEsIDIxOSwgMTg0LCAxNTQsIDgsIDYsIDEsIDIxNywgMTM0LCAxNTQsIDgsIDYsIDEsIDE0NiwgMTU0LCA4LCA2LCAxLCAKLSAgICAxOTQsIDE1NCwgOCwgNiwgMSwgMjEwLCA2OSwgMTU0LCA4LCA2LCAxLCA2OCwgMTU0LCA4LCA2LCAxLCAyMDYsIDE2NCwgCi0gICAgMTU0LCA4LCA2LCAxLCAyMDQsIDE0NCwgMTU0LCA4LCA2LCAxLCAyMDMsIDE5NiwgMTU0LCA4LCA2LCAxLCAyMDMsIDEyNCwgCi0gICAgMTU0LCA4LCA2LCAxLCAyMDIsIDE1OSwgMTU0LCA0OSwgNTEsIDE1NSwgMTU0LCAyMTYsIDc0LCAyMTIsIDAsIDE1NCwgNTAsIAotICAgIDUxLCAxNTUsIDE1NCwgMjQ2LCA1MywgMjUxLCAxMzgsIDE1NCwgMTI0LCAyMjcsIDExNCwgMTU0LCAyMzcsIDI1NCwgMjUxLCAKLSAgICAxMzgsIDE1NCwgOCwgNSwgMSwgNjMsIDE1NCwgOCwgNSwgMSwgMjQ5LCAyNTUsIDE1NCwgOCwgNSwgMSwgMjQ3LCAxMjUsIAotICAgIDE1NCwgOCwgNSwgMSwgMjQ1LCA1MSwgMTU0LCA4LCA1LCAxLCA3NCwgMTU0LCA4LCA1LCAxLCAyNDAsIDE3NCwgMTU0LCA4LCAKLSAgICA1LCAxLCAyMzksIDc1LCAxNTQsIDgsIDUsIDEsIDIzNywgMTcxLCAxNTQsIDgsIDUsIDEsIDc1LCAxNTQsIDgsIDUsIDEsIAotICAgIDIzMCwgMTg0LCAxNTQsIDgsIDUsIDEsIDIzMCwgNTQsIDE1NCwgOCwgNSwgMSwgMTU5LCAxNTQsIDgsIDUsIDEsIDIyNiwgCi0gICAgMTg1LCAxNTQsIDgsIDUsIDEsIDIyMywgMTYzLCAxNTQsIDgsIDUsIDEsIDc4LCAxNTQsIDgsIDUsIDEsIDIxOSwgMTg0LCAKLSAgICAxNTQsIDgsIDUsIDEsIDIxNywgMTM0LCAxNTQsIDgsIDUsIDEsIDE0NiwgMTU0LCA4LCA1LCAxLCAxOTQsIDE1NCwgOCwgNSwgCi0gICAgMSwgMjEwLCA2OSwgMTU0LCA4LCA1LCAxLCA2OCwgMTU0LCA4LCA1LCAxLCAyMDYsIDE2NCwgMTU0LCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NCwgMTU0LCA4LCA1LCAxLCAyMDMsIDE5NiwgMTU0LCA4LCA1LCAxLCAyMDMsIDEyNCwgMTU0LCA4LCA1LCAxLCAyMDIsIAotICAgIDE1OSwgMTU0LCA0OSwgMjQ1LCA5MywgMTU1LCAxNTQsIDgwLCAyMjcsIDExNCwgMTU0LCA1MCwgMjQ1LCA5MywgMTU1LCAKLSAgICAxNTQsIDIwOCwgMjI3LCAxNTQsIDQ5LCA2MSwgMjE5LCA3NiwgMTU0LCA1MCwgNjEsIDIxOSwgNzYsIDEyNywgMTM5LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgMTI3LCA0OSwgMjQ1LCAxNjYsIDE1NSwgMTI3LCA1MCwgMjQ1LCAxNjYsIDE1NSwgMTI3LCAxMzksIAotICAgIDI0NSwgMjMzLCAxMjcsIDY3LCAxMDEsIDI0MywgODUsIDEyNywgNjcsIDEsIDIwNCwgMCwgMTI3LCA2NywgMSwgNSwgNjMsIAotICAgIDEyNywgNjcsIDEsIDUsIDc1LCAxMjcsIDY3LCAxLCA1LCA2OCwgMTI3LCA2NywgMSwgNSwgNzQsIDEyNywgNjcsIDEsIDUsIAotICAgIDc4LCAxMjcsIDY3LCAxLCA1LCAxOTgsIDEyNywgNjcsIDEsIDUsIDIwMiwgMjEzLCAxMjcsIDY3LCAxLCA1LCAyMDIsIDI0NywgCi0gICAgMTI3LCA2NywgMSwgNSwgMjA3LCAyMDMsIDEyNywgMjI5LCAyMjUsIDIxNywgMjE1LCAyMTEsIDI0MSwgODIsIDEyNywgNjcsIAotICAgIDEsIDYzLCAxMjcsIDY3LCAxLCA3NSwgMTI3LCA2NywgMSwgNjgsIDEyNywgNjcsIDEsIDc0LCAxMjcsIDY3LCAxLCA3OCwgCi0gICAgMTI3LCA2NywgMSwgMTczLCAxMjcsIDY3LCAxLCAyMjksIDEwMCwgMTI3LCA2NywgMSwgMjI4LCAyMDksIDEyNywgNjcsIDEsIAotICAgIDIyOSwgMjAxLCAxMjcsIDY3LCAxLCAyMjksIDI2LCAxMjcsIDY3LCAxLCAyMTUsIDM2LCAxMjcsIDY3LCAxLCAyMTIsIDE2MiwgCi0gICAgMTI3LCA2NywgMSwgMjExLCAxMCwgMTI3LCA2NywgMSwgMjE0LCAxNzcsIDEyNywgNjcsIDEsIDIxMiwgMTMsIDEyNywgNjcsIAotICAgIDEsIDIxMCwgMjIsIDEyNywgNjcsIDEsIDIwOSwgMiwgMTI3LCA2NywgMSwgMjA3LCAyMDMsIDEyNywgNjcsIDEsIDIwOSwgCi0gICAgMTg3LCAxMjcsIDY3LCAxLCAxMzUsIDEyNywgNjcsIDEsIDIwMSwgMjAxLCAxMjcsIDY3LCAxLCAyMjIsIDEwMCwgMTI3LCAKLSAgICA2NywgMSwgMjIxLCA4NCwgMTI3LCA2NywgMSwgMjIyLCAyNDAsIDEyNywgNjcsIDEsIDIyMSwgMTkxLCAxMjcsIDY3LCAxLCAKLSAgICAxNTIsIDEyNywgNjcsIDEsIDIzNywgMywgMTI3LCA2NywgMSwgMjM2LCAyNiwgMTI3LCA2NywgMSwgMjM3LCA2NywgMTI3LCAKLSAgICA2NywgMSwgMjM2LCAxMzYsIDEyNywgNjcsIDEsIDE5MiwgMTI3LCA2NywgMSwgMjI0LCAxNTUsIDEyNywgNjcsIDEsIDIyMywgCi0gICAgMjQ2LCAxMjcsIDY3LCAxLCAyMjUsIDIwLCAxMjcsIDY3LCAxLCAyMjQsIDgyLCAxMjcsIDY3LCAxLCAxOTgsIDEyNywgNjcsIAotICAgIDEsIDIwMiwgMjEzLCAxMjcsIDY3LCAxLCAyMDIsIDI0NywgMTI3LCA2NywgMSwgMjE2LCAyMjAsIDEyNywgNjcsIDEsIDIxNiwgCi0gICAgNTcsIDEyNywgNjcsIDEsIDIxNSwgMTQ1LCAxMjcsIDY3LCAxLCAyMTYsIDE1OCwgMTI3LCA2NywgMSwgMjE1LCAyMjcsIAotICAgIDEyNywgNjcsIDEsIDIwNCwgMTExLCAxMjcsIDY3LCAxLCAyMjMsIDE2MywgMTI3LCA2NywgMjA1LCAxODYsIDIxMSwgMjQxLCAKLSAgICA4MiwgMTI3LCA2NywgMjEzLCAxNDgsIDIxMSwgMjQxLCA4MiwgMTI3LCAyOCwgMjQwLCA3LCAxMjcsIDI4LCAxLCAyMjksIAotICAgIDU5LCAxMjcsIDI4LCAxLCAyMTEsIDE1NiwgMTI3LCAyOCwgMSwgMjI5LCA1MiwgMTI3LCAyOCwgMSwgMjIyLCA5MywgMTI3LCAKLSAgICAyOCwgMSwgMjIyLCA5MSwgMTI3LCAyOCwgMSwgMjIyLCA5MCwgMTI3LCAyOCwgMSwgMjA4LCAyNDAsIDEyNywgMjgsIDEsIAotICAgIDIxMSwgMTQ1LCAxMjcsIDI4LCAxLCAyMTYsIDQ3LCAxMjcsIDI4LCAxLCAyMTYsIDQyLCAxMjcsIDI4LCAxLCAyMTYsIDM5LCAKLSAgICAxMjcsIDI4LCAxLCAyMTYsIDMyLCAxMjcsIDI4LCAxLCAyMTYsIDI3LCAxMjcsIDI4LCAxLCAyMTYsIDIyLCAxMjcsIDI4LCAKLSAgICAxLCAyMTYsIDMzLCAxMjcsIDI4LCAxLCAyMTYsIDQ1LCAxMjcsIDI4LCAxLCAyMjQsIDE0MSwgMTI3LCAyOCwgMSwgMjE4LCAKLSAgICAxNTMsIDEyNywgMjgsIDEsIDIxMSwgMTUzLCAxMjcsIDI4LCAxLCAyMTgsIDE0MiwgMTI3LCAyOCwgMSwgMjEyLCAxMTEsIAotICAgIDEyNywgMjgsIDEsIDIxMSwgMTUwLCAxMjcsIDI4LCAxLCAyMzEsIDEwNiwgMTI3LCAyOCwgMSwgMjQ2LCA3NCwgMTI3LCAyOCwgCi0gICAgMSwgMjExLCAxNjAsIDEyNywgMjgsIDEsIDI0NiwgMTM4LCAxMjcsIDI4LCAxLCAyMjksIDEyMCwgMTI3LCAyOCwgMSwgMjA5LCAKLSAgICA2NiwgMTI3LCAyOCwgMSwgMjE4LCAxOTAsIDEyNywgMjgsIDEsIDIzNiwgMjUxLCAxMjcsIDI4LCAxLCA2MywgMTI3LCAyOCwgCi0gICAgMSwgMjUxLCAxMDksIDEyNywgMjgsIDEsIDE5OCwgMTI3LCAyOCwgMSwgMjAzLCA5OSwgMTI3LCAyOCwgMSwgMjQxLCA1NSwgCi0gICAgMTI3LCAyOCwgMSwgNzQsIDEyNywgMjgsIDEsIDIwMywgMzksIDEyNywgMjgsIDEsIDIwMywgNTIsIDEyNywgMjgsIDEsIDc4LCAKLSAgICAxMjcsIDI4LCAxLCAyMDQsIDExMSwgMTI3LCAyOCwgMSwgMjA0LCAxMDcsIDEyNywgMjgsIDEsIDIyMCwgNzMsIDEyNywgMjgsIAotICAgIDEsIDIwMiwgMjQ3LCAxMjcsIDI4LCAxLCA2OCwgMTI3LCAyOCwgMSwgMjA0LCA0OCwgMTI3LCAyOCwgMSwgMjA0LCA2MiwgCi0gICAgMTI3LCAyOCwgMSwgMjA0LCAzMCwgMTI3LCAyOCwgMSwgMjAyLCAyMTMsIDEyNywgMjgsIDEsIDI0MCwgMjM4LCAxMjcsIDI4LCAKLSAgICAxLCAyMDMsIDExLCAxMjcsIDI4LCAxLCA3NSwgMTU0LCAyNDYsIDIyMCwgNTQsIDE1NCwgMjE4LCAyMCwgNTQsIDE1NCwgCi0gICAgMjIxLCAxNjYsIDU0LCAxNTQsIDIyNSwgMTcwLCAxNTQsIDI0NywgMjAzLCAxNDIsIDE1NCwgMjAzLCA0MywgNTQsIDE1NCwgCi0gICAgMjAzLCAyNDYsIDU0LCAxMjcsIDIzOSwgMTU2LCAxNTcsIDIwNiwgMzgsIDEyNywgOTYsIDQ3LCAxMjcsIDE3NywgNDcsIAotICAgIDEyNywgODYsIDQ3LCAxMjcsIDE4MywgNDcsIDEyNywgNjIsIDIxMSwgMTc3LCAxMjcsIDYxLCAyNDYsIDYxLCAyMzAsIDI1MSwgCi0gICAgMjUwLCAyMDUsIDI1MCwgMjI4LCAyMzAsIDI1MSwgMjUwLCAyMDUsIDIxMywgMTMwLCAyMzAsIDI1MSwgMjUwLCAyMDUsIAotICAgIDIwOSwgMTM4LCAyMjAsIDkwLCAyMTYsIDk2LCAyNDYsIDE4MiwgMjE2LCA5NiwgMjQ2LCAxODIsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAyMzksIDYzLCAyOSwgNjYsIDQsIDI0OSwgMjA4LCA3NCwgMjksIDY2LCA0LCAyNDksIDIxNywgNzUsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAxODUsIDc4LCAyOSwgNjYsIDQsIDI0OSwgMjM1LCA2OCwgMjksIDY2LCA0LCAyNDksIDI1NCwgMjQ0LCAyMTIsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAyMDEsIDI0NCwgNzUsIDI5LCA2NiwgNCwgMjQ5LCAyNDEsIDI0MywgMjMzLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMjMxLCAyNDMsIDExMywgMjksIDY2LCA0LCAyNDksIDE5NSwgMjQyLCA0MiwgMjksIDY2LCA0LCAyNDksIDE4OSwgMjMwLCAKLSAgICAxODEsIDI5LCA2NiwgNCwgMjQ5LCAyMDAsIDIzMCwgMTYxLCAyOSwgNjYsIDQsIDI0OSwgMjEwLCAyMzAsIDEwMSwgMjksIAotICAgIDY2LCA0LCAyNDksIDE4MSwgMjMwLCA4MiwgMjksIDY2LCA0LCAyNDksIDE2OSwgMTczLCAyOSwgNjYsIDQsIDI0OSwgMjAyLCAKLSAgICAyMjksIDIwMSwgMjksIDY2LCA0LCAyNDksIDE3OSwgMjI5LCAxMDAsIDI5LCA2NiwgNCwgMjQ5LCAxNzYsIDIyOSwgMjYsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAxNjUsIDIyOCwgMjA5LCAyOSwgNjYsIDQsIDI0OSwgMTY2LCAxOTIsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAyMzIsIDIyNSwgMjAsIDI5LCA2NiwgNCwgMjQ5LCAxNzMsIDIyNCwgMTU1LCAyOSwgNjYsIDQsIDI0OSwgMjMwLCAyMjQsIAotICAgIDgyLCAyOSwgNjYsIDQsIDI0OSwgMjIyLCAyMjMsIDI0NiwgMjksIDY2LCA0LCAyNDksIDI0MywgMjAxLCAyMDEsIDI5LCA2NiwgCi0gICAgNCwgMjQ5LCAyMjEsIDIyMiwgMjQwLCAyOSwgNjYsIDQsIDI0OSwgMjE1LCAyMjIsIDEwMCwgMjksIDY2LCA0LCAyNDksIAotICAgIDE5NCwgMjIxLCAxOTEsIDI5LCA2NiwgNCwgMjQ5LCAxOTEsIDIyMSwgODQsIDI5LCA2NiwgNCwgMjQ5LCAyNTAsIDE4NSwgCi0gICAgMjksIDY2LCA0LCAyNDksIDE3NCwgMjE5LCAzNCwgMjksIDY2LCA0LCAyNDksIDIwNywgMjE4LCAxNjcsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAyMzQsIDIxOCwgNjksIDI5LCA2NiwgNCwgMjQ5LCAxOTYsIDIxNywgMTkxLCAyOSwgNjYsIDQsIDI0OSwgMjI5LCAKLSAgICAyMTcsIDEyNiwgMjksIDY2LCA0LCAyNDksIDE2OCwgMjE3LCAxMDYsIDI5LCA2NiwgNCwgMjQ5LCAyMjQsIDIxNywgODgsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAyMTMsIDIxNywgNzcsIDI5LCA2NiwgNCwgMjQ5LCAxODYsIDIxNiwgMjIwLCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMjE4LCAyMTYsIDE1OCwgMjksIDY2LCA0LCAyNDksIDE5MywgMjE2LCA1NywgMjksIDY2LCA0LCAyNDksIDI1MiwgCi0gICAgMjE1LCAyMjcsIDI5LCA2NiwgNCwgMjQ5LCAyMTksIDIxNSwgMTQ1LCAyOSwgNjYsIDQsIDI0OSwgMjE0LCAyMTUsIDM2LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMjM3LCAyMTQsIDE3NywgMjksIDY2LCA0LCAyNDksIDIwNSwgMjEyLCAxNjIsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAyMzMsIDIxMiwgMTMsIDI5LCA2NiwgNCwgMjQ5LCAxODgsIDIxMSwgMTAsIDI5LCA2NiwgNCwgMjQ5LCAxODcsIAotICAgIDIxMCwgMjIsIDI5LCA2NiwgNCwgMjQ5LCAyNDgsIDIwOSwgMTg3LCAyOSwgNjYsIDQsIDI0OSwgMjA5LCAyMDksIDIsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAyNDYsIDEzNSwgMjksIDY2LCA0LCAyNDksIDE3NywgMjA3LCAyMDMsIDI5LCA2NiwgNCwgMjQ5LCAxOTIsIAotICAgIDIwNCwgMTExLCAyOSwgNjYsIDQsIDI0OSwgMTcxLCAyMDQsIDYyLCAyOSwgNjYsIDQsIDI0OSwgMjA2LCAyMDQsIDMwLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMjA0LCAyMDQsIDAsIDI5LCA2NiwgNCwgMjQ5LCAyMjgsIDIwMiwgMTE2LCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMTcyLCAyMDIsIDkyLCAyOSwgNjYsIDQsIDI0OSwgMjI1LCAyMDIsIDE3LCAyOSwgNjYsIDQsIDI0OSwgMjIwLCAyNTQsIDM0LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMjAzLCAyNTMsIDE3OCwgMjksIDY2LCA0LCAyNDksIDE2MiwgMjUwLCAzNCwgMjksIDY2LCA0LCAKLSAgICAyNDksIDE3NSwgMjQyLCA5LCAyOSwgNjYsIDQsIDI0OSwgMTU4LCAyNDIsIDgsIDI5LCA2NiwgNCwgMjQ5LCAxOTgsIDIyMSwgCi0gICAgMjAsIDI5LCA2NiwgNCwgMjQ5LCAyMTYsIDIxNywgMTg5LCAyOSwgNjYsIDQsIDI0OSwgMTg0LCAyMTcsIDE5MywgMjksIDY2LCAKLSAgICA0LCAyNDksIDE3MCwgMjE2LCAyMTgsIDI5LCA2NiwgNCwgMjQ5LCAyMTIsIDIxNiwgMjE3LCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMTc4LCAyMTUsIDIyNiwgMjksIDY2LCA0LCAyNDksIDE4MCwgMjEwLCAxOSwgMjksIDY2LCA0LCAyNDksIDE2MCwgMjA3LCAKLSAgICAxNTgsIDI5LCA2NiwgNCwgMjQ5LCAxNTcsIDEwOCwgMjksIDY2LCAxNiwgMjQ5LCAyMjcsIDI5LCA2NiwgMTYsIDI0OSwgCi0gICAgMjI2LCAyOSwgNjYsIDE2LCAyNDksIDIyMywgMjksIDY2LCAxNiwgMjQ5LCAyMTEsIDI5LCA2NiwgMTYsIDI0OSwgMTk5LCAKLSAgICAyOSwgNjYsIDE2LCAyNDksIDE5NywgMjksIDY2LCAxNiwgMjQ5LCAxOTAsIDI5LCA2NiwgMTYsIDI0OSwgMTgzLCAyOSwgNjYsIAotICAgIDE2LCAyNDksIDE4MiwgMjksIDY2LCAxNiwgMjQ5LCAxNjcsIDI5LCA2NiwgMTYsIDI0OSwgMTY0LCAyOSwgNjYsIDE2LCAKLSAgICAyNDksIDE2MywgMjksIDY2LCAxNiwgMjQ5LCAxNjEsIDI5LCA2NiwgMTYsIDI0OSwgMTU5LCAyOSwgNjYsIDEzMywgMjQ5LCAKLSAgICAxNTYsIDIyNSwgMTIyLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTUsIDIwMywgMjUwLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTQsIAotICAgIDI0NCwgNTgsIDI5LCA2NiwgMTMzLCAyNDksIDE1MywgMjQxLCAzMiwgMjksIDY2LCAxMzMsIDI0OSwgMTUyLCAyMjUsIDkzLCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCAxNTEsIDIxMSwgMTAxLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTAsIDI0MCwgMjE5LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxNDksIDIxNiwgMTg0LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDgsIDIxMywgNDIsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDE0NywgMjM3LCA2NiwgMjksIDY2LCAxMzMsIDI0OSwgMTQ2LCAyMTEsIDIzNSwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgMTQ1LCAyNDgsIDIxLCAyOSwgNjYsIDEzMywgMjQ5LCAxNDQsIDI0NSwgMTQ5LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDMsIAotICAgIDI0NywgMTc5LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDIsIDIwNCwgMzgsIDI5LCA2NiwgMTMzLCAyNDksIDE0MSwgMjQ4LCAKLSAgICAyMjcsIDI5LCA2NiwgMTMzLCAyNDksIDE0MCwgMjIwLCA0MSwgMjksIDY2LCAxMzMsIDI0OSwgMTM5LCAyMTEsIDIwNywgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTM4LCAyNDUsIDU5LCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTM3LCAyMjksIDI0OSwgMjksIDY2LCAKLSAgICAyMjQsIDQ1LCAyNDksIDEzNiwgMjMwLCAyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzUsIDIyMCwgNTUsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDEzNCwgMjA0LCAxMiwgMjksIDY2LCAxMzMsIDI0OSwgMTMzLCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTMyLCAyNTAsIAotICAgIDExOSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzMSwgMjI0LCAyMzIsIDI5LCA2NiwgMTMzLCAyNDksIDEzMCwgMjQ3LCAKLSAgICAyMDIsIDI5LCA2NiwgMTMzLCAyNDksIDEyOSwgMjM4LCAzMSwgMjksIDY2LCAxMzMsIDI0OSwgMTI4LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxMjcsIDIwMywgMjQxLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjYsIDI5LCA2NiwgMTMzLCAyNDksIDEyNSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTI0LCAyMzYsIDUzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjMsIDI5LCA2NiwgMTMzLCAyNDksIDEyMiwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTIxLCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTE5LCAyMDcsIDE3MiwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgMTE4LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTcsIDI5LCA2NiwgMTMzLCAyNDksIDExNiwgMjQ2LCAxMCwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgMTE1LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTQsIDI5LCA2NiwgMTMzLCAyNDksIDExMywgMjM4LCAyMjEsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDExMiwgMjUwLCAxMDYsIDI5LCA2NiwgMTMzLCAyNDksIDExMSwgMjksIDY2LCAxMzMsIDI0OSwgMTEwLCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCAxMDksIDI5LCA2NiwgMTMzLCAyNDksIDEwOCwgMjksIDY2LCAxMzMsIDI0OSwgMTA3LCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAxMDYsIDI5LCA2NiwgMTMzLCAyNDksIDEwNSwgMjksIDY2LCAxMzMsIDI0OSwgMTA0LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxMDMsIDI5LCA2NiwgMTMzLCAyNDksIDEwMiwgMjI0LCAzNywgMjksIDY2LCAxMzMsIDI0OSwgMTAxLCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAxMDAsIDIwOCwgOTUsIDI5LCA2NiwgMTMzLCAyNDksIDk5LCAyOSwgNjYsIDEzMywgMjQ5LCA5OCwgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgOTcsIDI5LCA2NiwgMTMzLCAyNDksIDk2LCAyOSwgNjYsIDEzMywgMjQ5LCA5NSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgOTQsIDI5LCA2NiwgMTMzLCAyNDksIDkzLCAyOSwgNjYsIDEzMywgMjQ5LCA5MiwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgOTEsIDI5LCA2NiwgMTMzLCAyNDksIDkwLCAyOSwgNjYsIDEzMywgMjQ5LCA4OSwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgODgsIDIzNywgMzUsIDI5LCA2NiwgMTMzLCAyNDksIDY3LCAyMzksIDE2OCwgMjksIDY2LCAxMzMsIDI0OSwgNjQsIDI0OCwgCi0gICAgMjA0LCAyOSwgNjYsIDEzMywgMjQ5LCA1OSwgMjExLCAyMTQsIDI5LCA2NiwgMTMzLCAyNDksIDU4LCA0NywgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgNTcsIDI5LCA2NiwgMTMzLCAyNDksIDU2LCAyMTAsIDE1NSwgMjksIDY2LCAxMzMsIDI0OSwgNTUsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDU0LCAyOSwgNjYsIDEzMywgMjQ5LCA1MywgMjA0LCAzNCwgMjQ2LCAxNzksIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDUyLCAyNDYsIDE3OSwgMjksIDY2LCAxMzMsIDI0OSwgNTEsIDI0NiwgMTgwLCAyMzksIDEzNCwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgNTAsIDIwNCwgMzYsIDI5LCA2NiwgMTMzLCAyNDksIDQ5LCAyOSwgNjYsIDEzMywgMjQ5LCA0OCwgMjksIDY2LCAKLSAgICAyMjQsIDQ1LCAyNDksIDQ3LCAyNDMsIDE2OCwgMjksIDY2LCAxMzMsIDI0OSwgNDYsIDI5LCA2NiwgMTMzLCAyNDksIDQ1LCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCA0MywgMjksIDY2LCAxMzMsIDI0OSwgNDIsIDI5LCA2NiwgMTMzLCAyNDksIDQxLCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCA0MCwgMjQ0LCAxNDcsIDI5LCA2NiwgMTMzLCAyNDksIDM5LCAyOSwgNjYsIDEzMywgMjQ5LCAzOCwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMzcsIDI5LCA2NiwgMTMzLCAyNDksIDM2LCAyOSwgNjYsIDEzMywgMjQ5LCAzNSwgMjksIDY2LCAKLSAgICAxMzMsIDIwNSwgMjQxLCAyNDksIDEyMCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDg3LCAyOSwgNjYsIDEzMywgCi0gICAgMjA1LCAyNDEsIDI0OSwgODYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4NSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAKLSAgICAyNDksIDg0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODMsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MiwgCi0gICAgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgxLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODAsIDI5LCA2NiwgCi0gICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3OSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc4LCAyOSwgNjYsIDEzMywgMjA1LCAKLSAgICAyNDEsIDI0OSwgNzcsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3NiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIAotICAgIDc1LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MywgMjksIAotICAgIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDcyLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzEsIDI5LCA2NiwgMTMzLCAKLSAgICAyMDUsIDI0MSwgMjQ5LCA3MCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDY5LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIAotICAgIDI0OSwgNjgsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2NiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDY1LCAKLSAgICAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjMsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MiwgMjksIDY2LCAKLSAgICAxMzMsIDIwNSwgMjQxLCAyNDksIDYxLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjAsIDI5LCA2NiwgMTMzLCAyMDUsIAotICAgIDI0MSwgMjQ5LCA0NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDM0LCAyNTEsIDEwMiwgMjAzLCAyMzgsIDIxMywgCi0gICAgMTMxLCAyMjcsIDExNCwgMjUxLCAxMDIsIDIwMywgMjM4LCAyMTMsIDEzMSwgMjQzLCA4NSwgMjUxLCAxMDIsIDI0NiwgMTY5LCAKLSAgICA4MiwgMjUxLCAxMDIsIDQyLCAxMDUsIDI1MSwgMTAyLCA0MiwgMTA4LCAyNTEsIDEwMiwgNDIsIDE0NywgMjUxLCAxMDIsIAotICAgIDQyLCAxNDksIDI1MSwgMTAyLCA0MiwgMTcwLCAyNTEsIDEwMiwgNDIsIDE5NSwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMSwgCi0gICAgMjUxLCAxMDIsIDQyLCAxOTksIDI1MSwgMTAyLCA0MiwgMjIyLCA2MywgMjUxLCAxMDIsIDQyLCAyMDksIDE1MiwgMjUxLCAKLSAgICAxMDIsIDQyLCAyMDcsIDE1MSwgMjUxLCAxMDIsIDQyLCAyMDksIDUzLCAyNTEsIDEwMiwgNDIsIDIzOSwgMTUzLCAyNTEsIAotICAgIDEwMiwgNDIsIDI0MCwgMTgsIDI1MSwgMTAyLCA0MiwgMjEyLCA3NCwgMjUxLCAxMDIsIDQyLCAyMTMsIDEwNSwgMjUxLCAKLSAgICAxMDIsIDQyLCAyNDEsIDEzNCwgMjUxLCAxMDIsIDQyLCAyMjIsIDU4LCAyNTEsIDEwMiwgNDIsIDExOCwgMjM2LCAxMSwgCi0gICAgMjUxLCAxMDIsIDQyLCAxMjAsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMTI2LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIAotICAgIDIzOSwgMTQ3LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIxMiwgCi0gICAgODgsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjQxLCAxNDMsIAotICAgIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAxMTgsIDIwOSwgMzYsIDI1MSwgCi0gICAgMTAyLCA0MiwgMTIwLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDEyNiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMzksIAotICAgIDE0NywgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMzksIDIzMywgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTIsIDg4LCAKLSAgICAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMywgMTEyLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MSwgMTQzLCAyMDksIAotICAgIDM2LCAyNTEsIDEwMiwgNDIsIDIyMiwgNjQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTIsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjA5LCA1NCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAKLSAgICAyMzksIDE1NCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDAsIDE5LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMiwgNzUsIAotICAgIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMDYsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQxLCAxMzUsIDIwOSwgCi0gICAgMzYsIDI1MSwgMTAyLCA0MiwgMjIyLCA1OSwgMjA5LCAzNiwgMjUxLCAxMDIsIDIwNCwgNTEsIDI0OCwgMjE5LCAyMDYsIAotICAgIDIzNSwgMjUxLCAxMDIsIDIwNCwgNTEsIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIxNCwgMTcxLCAKLSAgICAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIwOSwgNjEsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjA0LCA1MSwgMjM5LCAKLSAgICAxNDAsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjQyLCA0NSwgMjI1LCAxOSwgMjM5LCAyNDUsIDIxMCwgMjQwLCAyNTEsIDEwMiwgCi0gICAgMjI3LCA5NSwgMjI1LCAxOSwgMjM5LCAyNDUsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjI1LCAxOSwgMjE0LCAxNzEsIDIxMCwgCi0gICAgMjQwLCAyNTEsIDEwMiwgMjI1LCAxOSwgMjA5LCA2MSwgMjEwLCAyNDAsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAKLSAgICAyMTcsIDU1LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjM3LCAxMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgCi0gICAgMTE4LCAyNDIsIDY1LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDE3MCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE4LCAKLSAgICAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgCi0gICAgMjMzLCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDI0MCwgMTksIDIwOSwgMzYsIDMwLCAyNTEsIDEyOSwgMjUwLCAKLSAgICAzNiwgMjM5LCAyMzMsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMDksIDIzNywgMzAsIAotICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNiwgCi0gICAgMTIsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgMjMzLCAyMzYsIDEyLCAyMDksIDIzNywgMzAsIAotICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIwOSwgMzcsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgCi0gICAgMjMzLCAyMDksIDM3LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjExLCA4OCwgMzAsIAotICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAKLSAgICAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjM2LCAxMiwgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIAotICAgIDM2LCAyMzksIDIzMywgMjM2LCAxMiwgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIwOSwgMzcsIDIxMSwgCi0gICAgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIwOSwgMzcsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAKLSAgICAzNiwgMjQwLCAxOSwgMjA5LCAzNywgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjI0LCA4NSwgCi0gICAgMzAsIDI1MSwgMTI5LCAyMzcsIDI5LCAxMTgsIDIxOCwgODYsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMTA1LCAzMCwgMjUxLCAKLSAgICAxMjksIDIzNywgMjUsIDEwNSwgMzAsIDI1MSwgMTI5LCAyNDEsIDQxLCAxMDgsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgCi0gICAgMTA4LCAzMCwgMjUxLCAxMjksIDI0NSwgNTYsIDEyMCwgMjQyLCA2NCwgMzAsIDI1MSwgMTI5LCAyNDEsIDQxLCAxMjAsIAotICAgIDI0MiwgNjQsIDMwLCAyNTEsIDEyOSwgMjA4LCA2MSwgMTcwLCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDIwOSwgMTUyLCAzMCwgCi0gICAgMjUxLCAxMjksIDIwOCwgNjEsIDIwOSwgMTUzLCAyNTAsIDI1NSwgMTgsIDMwLCAyNTEsIDEyOSwgMjM3LCAyNSwgMjA5LCAKLSAgICAxNTIsIDMwLCAyNTEsIDEyOSwgMjI0LCAyMjIsIDIwOSwgMTUyLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIwOSwgMTUyLCAKLSAgICAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIwOSwgNTMsIDMwLCAyNTEsIDEyOSwgMjA4LCA2MSwgMjQwLCAxOCwgMzAsIDI1MSwgCi0gICAgMTI5LCAyMDgsIDYxLCAyNDAsIDE5LCAyNTAsIDI1NSwgMTgsIDMwLCAyNTEsIDEyOSwgMjM3LCAyNSwgMjQwLCAxOCwgMzAsIAotICAgIDI1MSwgMTI5LCAyMDksIDc2LCAyNDAsIDE4LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDExOCwgMjM2LCAxMSwgMzAsIDI1MSwgCi0gICAgMTI5LCAyMDksIDc2LCAxMjYsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjA4LCA2MSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMjM5LCAyMzMsIAotICAgIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjQ3LCAyMSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjIzLCA2MCwgCi0gICAgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMTE4LCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIAotICAgIDIwOSwgNzYsIDIzOSwgMjMzLCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI0NCwgNDAsIDIzOSwgMjMzLCAyMjQsIDg1LCAzMCwgCi0gICAgMjUxLCAxMjksIDIxMSwgNDksIDI0MCwgMTksIDIyNCwgODUsIDMwLCAxMTgsIDE2MiwgNTQsIDMwLCAxMTgsIDE2MiwgMiwgCi0gICAgMjUwLCAyNTUsIDE4LCAzMCwgMTIwLCAyMDksIDU4LCA1NCwgMzAsIDEyNiwgMjE3LCA1NCwgNTQsIDMwLCAyMDMsIDUwLCAKLSAgICA1NCwgMzAsIDIwOSwgMjM4LCA1NCwgMzAsIDI0MiwgNjYsIDU0LCAzMCwgMjIwLCA4NywgNTQsIDMwLCAxMjAsIDIyMCwgODYsIAotICAgIDU0LCAzMCwgMTI2LCAyMjAsIDg2LCA1NCwgMzAsIDIzOSwgMTQ3LCAyMjAsIDg2LCA1NCwgMzAsIDIzOSwgMjMzLCAyMjAsIAotICAgIDg2LCA1NCwgMzAsIDIyNCwgMjE2LCA1NCwgMzAsIDIyOCwgMTM5LCAyNDgsIDIxOSwgNTQsIDMwLCAyMjcsIDg4LCA1NCwgCi0gICAgMzAsIDIxOSwgMjEzLCA1NCwgMzAsIDIwMywgMTczLCA1NCwgMzAsIDI1MCwgODcsIDU0LCAzMCwgMjUwLCAxMDIsIDU0LCAKLSAgICAzMCwgMjM4LCA3LCA1NCwgMzAsIDIwOCwgMjMsIDI0OCwgMjE5LCA1NCwgMzAsIDIwMiwgODUsIDU0LCAzMCwgMTE4LCAyMTcsIAotICAgIDU2LCA1NCwgMzAsIDIxMiwgMTEzLCA1NCwgMjE1LCAyMTAsIDIxMywgMTAyLCA1NCwgMjE1LCAyMTAsIDIwNiwgMjQ5LCA1NCwgCi0gICAgMjE1LCAyMTAsIDIxMywgMTM1LCA1NCwgMjE1LCAyMTAsIDIxMywgMTAwLCA1NCwgMjE1LCAyMTAsIDI0MywgMTgzLCAyMTMsIAotICAgIDEwMCwgNTQsIDIxNSwgMjEwLCAyMTIsIDEzNSwgNTQsIDIxNSwgMjEwLCAyNDQsIDM2LCA1NCwgMjE1LCAyMTAsIDIxNywgCi0gICAgMzksIDU0LCAyMTUsIDIxMCwgMjEzLCAxMTksIDU0LCAyMTUsIDIxMCwgMjQyLCAyMywgNTQsIDIxNSwgMjEwLCAyNTAsIDgyLCAKLSAgICA1NCwgMjE1LCAyMTAsIDI0NiwgMjEzLCA1NCwgMzAsIDE2LCAyMDksIDIwOCwgMjE2LCA1OSwgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyMTksIDI1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOCwgNzgsIDIzNywgNjQsIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjA5LCAyMTEsIDIzNywgNjQsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCA0MiwgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyNDYsIDEzMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDMsIDI1MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAKLSAgICAyMzcsIDM1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzOCwgMjEzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwOSwgMCwgCi0gICAgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCA0NywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDI0MCwgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCAyMTMsIDgsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ2LCA0LCAyMTgsIDIwMywgMjQzLCAxNjAsIAotICAgIDIsIDIyNSwgMTIxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNSwgNjgsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE0LCAKLSAgICAyMTMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjI3LCAxNDMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ4LCA1LCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgMjYsIDIxOCwgOTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQzLCA5OCwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyNDUsIDIzOSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTIsIDQ2LCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDI0NSwgMjQwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgMTQ3LCAyMTgsIDIwMywgMjQzLCAKLSAgICAxNjAsIDIsIDIxMiwgMjUxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzNiwgNTMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCi0gICAgMjM3LCAxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgMTc0LCAyMjcsIDIxMCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAKLSAgICAyNDcsIDE3LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxNiwgMTg0LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MSwgCi0gICAgMTg2LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MiwgNzEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA3LCAxODgsIAotICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ4LCAxNTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE4LCA5MiwgMjA4LCA5NSwgCi0gICAgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDUsIDIxMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTksIDkyLCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDIxNSwgMjAxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNywgMTI3LCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDIxOSwgMTk0LCAyNDksIDI1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzOSwgMTkzLCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDIzNywgMjU1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxMSwgNTAsIDIxOCwgMjAzLCAKLSAgICAyNDMsIDE2MCwgMiwgNSwgMjUwLCA5LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNCwgNzIsIDI0OCwgMjM4LCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDM5LCAyMjAsIDg5LCA5NSwgMjI2LCAxOTcsIDEsIDYzLCAyMjYsIDE5NywgMSwgNzQsIDIyNiwgCi0gICAgMTk3LCAxLCAyNDksIDI1NSwgMjI2LCAxOTcsIDEsIDI0OCwgOTksIDIyNiwgMTk3LCAxLCAyMzksIDc1LCAyMjYsIDE5NywgCi0gICAgMSwgMjQ1LCA1MSwgMjI2LCAxOTcsIDEsIDc1LCAyMjYsIDE5NywgMSwgMjA0LCAxNDQsIDIyNiwgMTk3LCAxLCAyMDIsIAotICAgIDE1OSwgMjI2LCAxOTcsIDEsIDIwOSwgMTEwLCAyMjYsIDE5NywgMSwgMjMwLCAxODQsIDIyNiwgMTk3LCAxLCAyMzAsIDU0LCAKLSAgICAyMjYsIDE5NywgMSwgMjE3LCAxMzQsIDIyNiwgMTk3LCAxLCAxNTksIDIyNiwgMTk3LCAxLCAyMjYsIDE4NSwgMjI2LCAxOTcsIAotICAgIDEsIDIyMywgMTYzLCAyMjYsIDE5NywgMSwgMjI0LCA4NywgMjI2LCAxOTcsIDEsIDIyMSwgMjI4LCAyMjYsIDE5NywgMSwgCi0gICAgNjgsIDIyNiwgMTk3LCAxLCAyMTksIDE4NCwgMjI2LCAxOTcsIDEsIDIyOSwgNDgsIDIyNiwgMTk3LCAxLCAxNDYsIDIyNiwgCi0gICAgMTk3LCAxLCAxOTQsIDIyNiwgMTk3LCAxLCAyMTAsIDY5LCAyMjYsIDE5NywgMSwgMjA3LCAyNDQsIDIyNiwgMTk3LCAxLCAKLSAgICAyNTAsIDIzMSwgMjI2LCAxOTcsIDEsIDI0MSwgOTIsIDIyNiwgMTk3LCAxLCAyMzcsIDE3MSwgMjI2LCAxOTcsIDEsIDIwMywgCi0gICAgMTk2LCAyNDcsIDMyLCAxLCA2MywgMjQ3LCAzMiwgMSwgMjE5LCAxNzAsIDI0NywgMzIsIDEsIDI0NSwgNTEsIDI0NywgMzIsIAotICAgIDEsIDE1OSwgMjQ3LCAzMiwgMSwgMjA2LCAxNzYsIDI0NywgMzIsIDEsIDE0NiwgMjQ3LCAzMiwgMSwgMjI3LCAyMzgsIDI0NywgCi0gICAgMzIsIDEsIDI1NCwgMzQsIDI0NywgMzIsIDEsIDIxNywgMTM0LCAyNDcsIDMyLCAxLCAyNDksIDI1NSwgMjQ3LCAzMiwgMSwgCi0gICAgMjI2LCAxODUsIDI0NywgMzIsIDEsIDc4LCAyNDcsIDMyLCAxLCAyNDQsIDIxNCwgMjQ3LCAzMiwgMSwgMjEwLCA2OSwgMjQ3LCAKLSAgICAzMiwgMSwgMjEzLCA5MiwgMjQ3LCAzMiwgMSwgMjEzLCA5MSwgMjQ3LCAzMiwgMSwgMTk0LCAyNDcsIDMyLCAxLCAyNDcsIAotICAgIDEyNCwgMjQ3LCAzMiwgMSwgNjgsIDI0NywgMzIsIDEsIDIyMSwgMjI4LCAyNDcsIDMyLCAxLCAyMDMsIDE5NiwgMjQ3LCAzMiwgCi0gICAgMSwgMjIzLCAxNjMsIDI0NywgMzIsIDEsIDIwNywgMjQzLCAyNDcsIDMyLCAxLCAyMTksIDE4NCwgMjQ3LCAzMiwgMSwgMjExLCAKLSAgICAxNjcsIDI0NywgMzIsIDEsIDc1LCAyNDcsIDMyLCAxLCA3NCwgMjQ3LCAzMiwgMSwgMjA2LCAxNzMsIDI0NywgMzIsIDEsIAotICAgIDIzMCwgNTQsIDI0NywgMzIsIDEsIDIzMCwgNDUsIDI0NywgMzIsIDEsIDIyMywgMjcsIDI0NywgMzIsIDEsIDIwNiwgMTc4LCAKLSAgICAyNDcsIDMyLCAxLCAyMzksIDc1LCAyNDcsIDMyLCAxLCAyMzksIDEwLCAyNDcsIDMyLCAxLCAyMTEsIDEwOCwgMjQ3LCAzMiwgCi0gICAgMSwgMjExLCAxMDcsIDI0NywgMzIsIDEsIDIyMiwgMjA1LCAyNDcsIDMyLCAxLCAyMzEsIDgzLCAyNDcsIDMyLCAxLCAyNDcsIAotICAgIDEyMywgMjQ3LCAzMiwgMSwgMjA3LCAyNDQsIDI0NywgMzIsIDEsIDIwNiwgMTc1LCAyNDcsIDMyLCAxLCAyMTUsIDE4NiwgCi0gICAgMjQ3LCAzMiwgMSwgMjI1LCA1OSwgMjQ3LCAzMiwgMSwgMjI1LCA1OCwgMjQ3LCAzMiwgMSwgMjI1LCA1NywgMjQ3LCAzMiwgCi0gICAgMSwgMjI1LCA1NiwgMjQ3LCAzMiwgMSwgMjI3LCAyMzcsIDI0NywgMzIsIDEsIDI0MSwgMTkwLCAyNDcsIDMyLCAxLCAyMDYsIAotICAgIDE3NCwgODQsIDI0MSwgNDQsIDIwOSwgMzUsIDgyLCA4NCwgMjQxLCA0NCwgMTcsIDEwNSwgODQsIDI0MSwgNDQsIDE3LCAKLSAgICAxMDgsIDg0LCAyNDEsIDQ0LCAxNywgMTQ3LCA4NCwgMjQxLCA0NCwgMTcsIDE0OSwgODQsIDI0MSwgNDQsIDE3LCAxNzAsIAotICAgIDg0LCAyNDEsIDQ0LCAxNywgMTk1LCA4NCwgMjQxLCA0NCwgMTcsIDIxMywgMTExLCA4NCwgMjQxLCA0NCwgMTcsIDE5OSwgCi0gICAgODQsIDI0MSwgNDQsIDE3LCAyMjIsIDYzLCA4NCwgMjQxLCA0NCwgNDIsIDIwOSwgMTUyLCA4NCwgMjQxLCA0NCwgNDIsIAotICAgIDIwNywgMTUxLCA4NCwgMjQxLCA0NCwgNDIsIDIwOSwgNTMsIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAxNTMsIDg0LCAyNDEsIAotICAgIDQ0LCA0MiwgMjQwLCAxOCwgODQsIDI0MSwgNDQsIDQyLCAyMTIsIDc0LCA4NCwgMjQxLCA0NCwgNDIsIDIxMywgMTA1LCA4NCwgCi0gICAgMjQxLCA0NCwgNDIsIDI0MSwgMTM0LCA4NCwgMjQxLCA0NCwgNDIsIDIyMiwgNTgsIDg0LCAyNDEsIDQ0LCA0MiwgMTE4LCAKLSAgICAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDEyMCwgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAxMjYsIDIzNiwgMTEsIAotICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIAotICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgCi0gICAgODQsIDI0MSwgNDQsIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAKLSAgICAzOCwgMzcsIDEsIDYzLCAzOCwgMzcsIDEsIDI0OCwgMTYyLCAzOCwgMzcsIDEsIDIyOSwgMjAxLCAzOCwgMzcsIDEsIDI0NCwgCi0gICAgNzUsIDM4LCAzNywgMSwgNzQsIDM4LCAzNywgMSwgMjA2LCA1NSwgMzgsIDM3LCAxLCAyMDIsIDkyLCAzOCwgMzcsIDEsIAotICAgIDIzNywgNjcsIDM4LCAzNywgMSwgMjA5LCA5MiwgMzgsIDM3LCAxLCA3NSwgMzgsIDM3LCAxLCAxNzMsIDM4LCAzNywgMSwgCi0gICAgMjQxLCAxMjIsIDM4LCAzNywgMSwgMjQxLCAxMDMsIDM4LCAzNywgMSwgMjQxLCA5MiwgMzgsIDM3LCAxLCAyNDEsIDcsIDM4LCAKLSAgICAzNywgMSwgNzgsIDM4LCAzNywgMSwgMjE5LCAzNCwgMzgsIDM3LCAxLCAyMTMsIDQzLCAzOCwgMzcsIDEsIDIyOCwgMjA5LCAKLSAgICAzOCwgMzcsIDEsIDI0MSwgMjgsIDM4LCAzNywgMSwgMjQxLCAxNywgMzgsIDM3LCAxLCAyMDksIDE4NywgMzgsIDM3LCAxLCAKLSAgICA2OCwgMzgsIDM3LCAxLCAyNDEsIDEyNSwgMzgsIDM3LCAxLCAyMTgsIDE5NSwgMzgsIDM3LCAxLCAyMjksIDEyOSwgMzgsIAotICAgIDM3LCAxLCAyNDEsIDE1NCwgMzgsIDM3LCAxLCAyNDEsIDE5LCAzOCwgMzcsIDEsIDI0NiwgMTcwLCAzOCwgMzcsIDEsIDIzMSwgCi0gICAgODMsIDM4LCAzNywgMSwgMjA2LCAxNzgsIDM4LCAzNywgMSwgMjQxLCAwLCAzOCwgMzcsIDIyMSwgNDQsIDEwNSwgMzgsIDM3LCAKLSAgICAyMjEsIDQ0LCAxNzAsIDM4LCAzNywgMjIxLCA0NCwgMjA5LCAxNTIsIDM4LCAzNywgMjIxLCA0NCwgMjQwLCAxOCwgMjM4LCAKLSAgICAxNywgMSwgMjUxLCA2NywgMjM4LCAxNywgMSwgMjQ4LCAyNTUsIDIzOCwgMTcsIDEsIDIzOCwgNzgsIDIzOCwgMTcsIDEsIAotICAgIDI0NCwgMTk0LCAyMzgsIDE3LCAxLCAyNTEsIDYzLCAyMzgsIDE3LCAxLCAyMTcsIDExNywgMjM4LCAxNywgMSwgMjMwLCAKLSAgICAxOTYsIDIzOCwgMTcsIDEsIDIzNywgMTUwLCAyMzgsIDE3LCAxLCAyMDksIDQ5LCAyMzgsIDE3LCAxLCAyNDEsIDEzMywgCi0gICAgMjM4LCAxNywgMSwgMjI4LCAxNzYsIDIzOCwgMTcsIDEsIDIyOCwgOTAsIDIzOCwgMTcsIDEsIDIyNSwgMTE0LCAyMzgsIDE3LCAKLSAgICAxLCAyMjMsIDYyLCAyMzgsIDE3LCAxLCAyMzAsIDE1NCwgMjM4LCAxNywgMSwgMjA2LCAxOTYsIDIzOCwgMTcsIDEsIDIxOSwgCi0gICAgMTQ1LCAyMzgsIDE3LCAxLCAyMjIsIDU4LCAyMzgsIDE3LCAxLCAyMTYsIDE5NiwgMjM4LCAxNywgMSwgMjE0LCAyMTYsIAotICAgIDIzOCwgMTcsIDEsIDIwOSwgMTY2LCAyMzgsIDE3LCAxLCAyMDQsIDEwLCAyMzgsIDE3LCAxLCAyNDAsIDg4LCAyMzgsIDE3LCAKLSAgICAxLCAyMzEsIDg3LCAyMzgsIDE3LCAxLCAyMzUsIDI1MiwgMjM4LCAxNywgMSwgMjE5LCAyMjMsIDIzOCwgMTcsIDEsIDIyMiwgCi0gICAgNjQsIDIzNiwgMTEsIDM4LCAyMTgsIDIzNywgMSwgMjUwLCAyMzEsIDM4LCAyMTgsIDIzNywgMSwgMjQ3LCAxNjAsIDM4LCAKLSAgICAyMTgsIDIzNywgMSwgMjM4LCAyNDgsIDM4LCAyMTgsIDIzNywgMSwgMjQzLCAxMDEsIDM4LCAyMTgsIDIzNywgMSwgNzQsIAotICAgIDM4LCAyMTgsIDIzNywgMSwgMjAyLCA2MiwgMzgsIDIxOCwgMjM3LCAxLCAyNDEsIDI0NywgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDIsIDk5LCAzOCwgMjE4LCAyMzcsIDEsIDI0MSwgMjQ1LCAzOCwgMjE4LCAyMzcsIDEsIDc1LCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIyOSwgMTUsIDM4LCAyMTgsIDIzNywgMSwgMjI3LCAyMDYsIDM4LCAyMTgsIDIzNywgMSwgMjI0LCAyMzgsIDM4LCAyMTgsIAotICAgIDIzNywgMSwgMjIyLCAyMjgsIDM4LCAyMTgsIDIzNywgMSwgMjA1LCAxNzUsIDM4LCAyMTgsIDIzNywgMSwgMjE5LCAyMiwgCi0gICAgMzgsIDIxOCwgMjM3LCAxLCAyMTYsIDEyMSwgMzgsIDIxOCwgMjM3LCAxLCAyMTIsIDE0MiwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDksIDI1MCwgMzgsIDIxOCwgMjM3LCAxLCA2OCwgMzgsIDIxOCwgMjM3LCAxLCAyNDYsIDE1MSwgMzgsIDIxOCwgMjM3LCAKLSAgICAxLCAyMTIsIDIzNSwgMzgsIDIxOCwgMjM3LCAxLCAyMTMsIDQ1LCAzOCwgMjE4LCAyMzcsIDEsIDIwMiwgMjE1LCAzOCwgCi0gICAgMjE4LCAyMzcsIDEsIDIwMywgMzAsIDM4LCAyMTgsIDIzNywgMSwgNzgsIDM4LCAyMTgsIDIzNywgMSwgMjIwLCAxOCwgMzgsIAotICAgIDIxOCwgMjM3LCAxLCAyNDEsIDE1NCwgMzgsIDIxOCwgMjM3LCAxLCAxNTIsIDM4LCAyMTgsIDIzNywgMSwgMjA3LCAyNTQsIAotICAgIDM4LCAyMTgsIDIzNywgMSwgMjA2LCA0MywgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIDM0LCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgCi0gICAgMzIsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCA2NiwgMzgsIDIxOCwgMjM3LCAxLCAyMzEsIDExMCwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDIsIDIxMywgMzgsIDIxOCwgMjM3LCAxLCAxOTgsIDM4LCAyMTgsIDIzNywgMSwgMjM1LCAxNzEsIDM5LCAzOCwgMjE4LCAKLSAgICAyMzcsIDEsIDI1MCwgMjMxLCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyNDMsIDEwMSwgMzksIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjAyLCA5OSwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjIyLCAyMjgsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDIxMiwgMTQyLCAKLSAgICAyMDcsIDE5LCAxLCAyNTEsIDYsIDIwNywgMTksIDEsIDI0OCwgMTA2LCAyMDcsIDE5LCAxLCAyMzgsIDIzNiwgMjA3LCAxOSwgCi0gICAgMSwgMjI5LCAxNDQsIDIwNywgMTksIDEsIDI0NCwgMzcsIDIwNywgMTksIDEsIDIzNiwgMTM2LCAyMDcsIDE5LCAxLCAyMDQsIAotICAgIDAsIDIwNywgMTksIDEsIDIwMiwgODMsIDIwNywgMTksIDEsIDIzNiwgNDUsIDIwNywgMTksIDEsIDIwOSwgMTMyLCAyMDcsIAotICAgIDE5LCAxLCAyMDIsIDIzNiwgMjA3LCAxOSwgMSwgMjMwLCAyMiwgMjA3LCAxOSwgMSwgMjEyLCAyNTUsIDIwNywgMTksIDEsIAotICAgIDIyOCwgMjQsIDIwNywgMTksIDEsIDIyNCwgMjQ3LCAyMDcsIDE5LCAxLCAyNDMsIDI1MywgMjA3LCAxOSwgMSwgMjIxLCA0MCwgCi0gICAgMjA3LCAxOSwgMSwgMjAyLCA2LCAyMDcsIDE5LCAxLCAyMTQsIDI0OCwgMjA3LCAxOSwgMSwgMjUxLCA1OSwgMjA3LCAxOSwgCi0gICAgMSwgMjE3LCAxOTEsIDIwNywgMTksIDEsIDIxNSwgMjcsIDIwNywgMTksIDEsIDIxNywgNzAsIDIwNywgMTksIDEsIDIxNiwgCi0gICAgMTc1LCAyMDcsIDE5LCAxLCAyMDksIDk2LCAyMDcsIDE5LCAxLCAyMzgsIDExNCwgMjA3LCAxOSwgMSwgMTM1LCAyMDcsIDE5LCAKLSAgICAxLCA3NSwgMjA3LCAxOSwgMSwgNjgsIDIwNywgMTksIDEsIDIxMSwgMTE5LCAyMDcsIDE5LCAyMDMsIDIzOCwgMjQzLCAxNDEsIAotICAgIDM4LCAyMTgsIDIzMSwgMiwgNjMsIDM4LCAyMTgsIDIzMSwgMiwgNzUsIDM4LCAyMTgsIDIzMSwgMiwgNjgsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMTczLCAzOCwgMjE4LCAyMzEsIDIsIDIyOCwgMjA5LCAzOCwgMjE4LCAyMzEsIDIsIDIzOSwgOCwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAyMzcsIDIzMCwgMzgsIDIxOCwgMjMxLCAyLCAyMDMsIDE4MiwgMzgsIDIxOCwgMjMxLCAyLCAyNDcsIDkyLCAKLSAgICAzOCwgMjE4LCAyMzEsIDIsIDIzMCwgMTgxLCAzOCwgMjE4LCAyMzEsIDIsIDIzMCwgMTQxLCAzOCwgMjE4LCAyMzEsIDIsIAotICAgIDIxMCwgMjIsIDM4LCAyMTgsIDIzMSwgMiwgMjA3LCAyMDMsIDM4LCAyMTgsIDIzMSwgMiwgMjQ0LCAyMTIsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMjQzLCAyMzMsIDM4LCAyMTgsIDIzMSwgMiwgMjQyLCA0MiwgMzgsIDIxOCwgMjMxLCAyLCAyMDksIDEwOCwgCi0gICAgMzgsIDIxOCwgMjMxLCAyLCAxODUsIDM4LCAyMTgsIDIzMSwgMiwgMjQ5LCAzMiwgMzgsIDIxOCwgMjMxLCAyLCAyNDAsIAotICAgIDEwOCwgMzgsIDIxOCwgMjMxLCAyLCAyMDEsIDIwMSwgMzgsIDIxOCwgMjMxLCAyLCAyMjEsIDg0LCAzOCwgMjE4LCAyMzEsIAotICAgIDIsIDE5MiwgMzgsIDIxOCwgMjMxLCAyLCAyMjQsIDE1NSwgMzgsIDIxOCwgMjMxLCAyLCAyMjMsIDI0NiwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAxOTgsIDM4LCAyMTgsIDIzMSwgMiwgMjA2LCA4NiwgMzgsIDIxOCwgMjMxLCAyLCAyMDUsIDIzMCwgMzgsIAotICAgIDIxOCwgMjMxLCAyLCAyMTYsIDIyMCwgMzgsIDIxOCwgMjMxLCAyLCAyMTUsIDE0NSwgMzgsIDIxOCwgMjMxLCAyLCAyMjgsIAotICAgIDExMywgMzgsIDIxOCwgMjMxLCAyLCAyMTUsIDM2LCAzOCwgMjE4LCAyMzEsIDIsIDIwMiwgMTE2LCAzOCwgMjE4LCAyMzEsIAotICAgIDIsIDIxMywgOTAsIDM4LCAyMTgsIDIzMSwgMiwgMjExLCAxNjQsIDM4LCAyMTgsIDIzMSwgMiwgMTUyLCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDI1MCwgMjgsIDM4LCAyMTgsIDIzMSwgMiwgMjUwLCAyNywgMzgsIDIxOCwgMjMxLCAyLCAyNTAsIDI2LCAzOCwgCi0gICAgMjE4LCAyMzEsIDIsIDIwMywgMTUzLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgMTkwLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgCi0gICAgMTg5LCAzOCwgMjE4LCAyMzEsIDIsIDI0OSwgOCwgMzgsIDIxOCwgMjMxLCAyLCAyNDcsIDE0NCwgMzgsIDIxOCwgMjMxLCAKLSAgICAyMDMsIDIzOCwgMjQzLCAxNDEsIDM4LCAyMTgsIDIzMSwgNDIsIDEwNSwgMzgsIDIxOCwgMjMxLCA0MiwgMTA4LCAzOCwgCi0gICAgMjE4LCAyMzEsIDQyLCAyMDksIDE1MiwgMzgsIDIxOCwgMjMxLCA0MiwgMjA3LCAxNTEsIDM4LCAyMTgsIDIzMSwgNDIsIAotICAgIDIzNiwgMTEsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzUsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzQsIDI0NCwgMTcsIDYsIDEsIAotICAgIDE2MywgNjMsIDI0NCwgMTcsIDYsIDEsIDE2MywgMjUxLCA3MywgMjQ0LCAxNywgNiwgMSwgMTYzLCA3OCwgMjQ0LCAxNywgNiwgCi0gICAgMSwgMTYzLCAyMjAsIDE4LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgNzUsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCAKLSAgICA3NCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDYzLCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgMjUxLCA3MywgMjQ0LCAKLSAgICAxNywgNiwgMSwgMjEyLCAyMjgsIDc4LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgMjIwLCAxOCwgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjUwLCA4LCAyNDQsIDE3LCA2LCAxLCAyMTksIDE5NSwgMjQ0LCAxNywgNiwgMSwgMjAzLCAyMTcsIDI0NCwgMTcsIDYsIDEsIAotICAgIDIwMywgNDksIDI0NCwgMTcsIDYsIDEsIDIzNywgMTcxLCAyNDQsIDE3LCA2LCAxLCAyMTksIDIzLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDgsIDE1MCwgMjQ0LCAxNywgNiwgMSwgMjA5LCAxNzYsIDI0NCwgMTcsIDYsIDEsIDI0NCwgNjEsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0NiwgMTY2LCAyNDQsIDE3LCA2LCAxLCAyMzAsIDE1OSwgMjQ0LCAxNywgNiwgMSwgMjI5LCAyMDgsIDI0NCwgMTcsIDYsIAotICAgIDEsIDIzOCwgMjExLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDE1NCwgMjQ0LCAxNywgNiwgMSwgMjA2LCA1MCwgMjQ0LCAxNywgNiwgCi0gICAgMSwgMjQwLCAyNDMsIDI0NCwgMTcsIDYsIDEsIDIwOSwgOTAsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTcsIDI0NCwgMTcsIDYsIAotICAgIDEsIDIwMiwgOTAsIDI0NCwgMTcsIDYsIDEsIDI0MSwgNywgMjQ0LCAxNywgNiwgMSwgMjAyLCA3MCwgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQxLCAyOCwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxMjIsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTAzLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDEsIDkyLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDc4LCAyNDQsIDE3LCA2LCAxLCAyMjAsIDU3LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDAsIDIyMCwgMjQ0LCAxNywgNSwgMSwgMTYzLCA3NSwgMjQ0LCAxNywgNSwgMSwgMTYzLCA3NCwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMTYzLCA2MywgMjQ0LCAxNywgNSwgMSwgMTYzLCAyNTEsIDczLCAyNDQsIDE3LCA1LCAxLCAxNjMsIDc4LCAyNDQsIDE3LCA1LCAKLSAgICAxLCAxNjMsIDIyMCwgMTgsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCA3NSwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIAotICAgIDc0LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgNjMsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAyNTEsIDczLCAyNDQsIAotICAgIDE3LCA1LCAxLCAyMTIsIDIyOCwgNzgsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAyMjAsIDE4LCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNTAsIDgsIDI0NCwgMTcsIDUsIDEsIDIxOSwgMTk1LCAyNDQsIDE3LCA1LCAxLCAyMDMsIDIxNywgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjAzLCA0OSwgMjQ0LCAxNywgNSwgMSwgMjM3LCAxNzEsIDI0NCwgMTcsIDUsIDEsIDIxOSwgMjMsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0OCwgMTUwLCAyNDQsIDE3LCA1LCAxLCAyMDksIDE3NiwgMjQ0LCAxNywgNSwgMSwgMjQ0LCA2MSwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQ2LCAxNjYsIDI0NCwgMTcsIDUsIDEsIDIzMCwgMTU5LCAyNDQsIDE3LCA1LCAxLCAyMjksIDIwOCwgMjQ0LCAxNywgNSwgCi0gICAgMSwgMjM4LCAyMTEsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTU0LCAyNDQsIDE3LCA1LCAxLCAyMDYsIDUwLCAyNDQsIDE3LCA1LCAKLSAgICAxLCAyNDAsIDI0MywgMjQ0LCAxNywgNSwgMSwgMjA5LCA5MCwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxNywgMjQ0LCAxNywgNSwgCi0gICAgMSwgMjAyLCA5MCwgMjQ0LCAxNywgNSwgMSwgMjQxLCA3LCAyNDQsIDE3LCA1LCAxLCAyMDIsIDcwLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDEsIDI4LCAyNDQsIDE3LCA1LCAxLCAyNDEsIDEyMiwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxMDMsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0MSwgOTIsIDI0NCwgMTcsIDUsIDEsIDI0MSwgNzgsIDI0NCwgMTcsIDUsIDEsIDIyMCwgNTcsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0MCwgMjIwLCAyMTMsIDUwLCAxLCAyMTksIDIwLCAyMTMsIDUwLCAxLCAyMDgsIDEzMSwgMjEzLCA1MCwgMSwgMjI5LCA5NiwgCi0gICAgMjEzLCA1MCwgMSwgMjQwLCA1MywgMjEzLCA1MCwgMSwgMjA5LCA2NSwgMjEzLCA1MCwgMSwgMjEyLCAxMywgMjEzLCA1MCwgCi0gICAgMSwgMjEwLCAxOTAsIDIxMywgNTAsIDEsIDI0NiwgOTAsIDIxMywgNTAsIDEsIDIwMywgNTEsIDIxMywgNTAsIDEsIDIzNiwgCi0gICAgOSwgMjEzLCA1MCwgMSwgMjQ4LCA4NSwgMjEzLCA1MCwgMSwgMjQ0LCA3NCwgMjEzLCA1MCwgMSwgMjM4LCAyNTAsIDIxMywgCi0gICAgNTAsIDEsIDIwNSwgMTcwLCAyMTMsIDUwLCAxLCAyMDksIDcxLCAyMTMsIDUwLCAxLCAyMDIsIDE1LCAyMTMsIDUwLCAxLCAKLSAgICAyMjUsIDE4LCAyMTMsIDUwLCAxLCAyMzAsIDgwLCAyMTMsIDUwLCAxLCAyMDMsIDI1NCwgMjEzLCA1MCwgMSwgMjM3LCAxNTksIAotICAgIDIxMywgNTAsIDEsIDIyNywgMzMsIDIxMywgNTAsIDEsIDIyNCwgMTExLCAyMTMsIDUwLCAxLCAyMzEsIDkwLCAyMTMsIDUwLCAKLSAgICAxLCAyNDEsIDE1MiwgMjEzLCA1MCwgMSwgMjUwLCA3NSwgMjEzLCA1MCwgMSwgMjUxLCAxMTMsIDIxMywgNTAsIDEsIDIyMCwgCi0gICAgMzEsIDIxMywgNTAsIDEsIDIwMywgMjQxLCAyMTMsIDUwLCAxLCAyMTksIDIxMSwgMjEzLCA1MCwgMSwgMjUxLCA3MywgMjEzLCAKLSAgICA1MCwgMSwgMjE1LCAyMjQsIDIxMywgNTAsIDEsIDIyMSwgNDAsIDIxMywgNTAsIDEsIDI0MSwgMTcyLCAyMTMsIDUwLCAxLCAKLSAgICAyNTEsIDc4LCAyMTMsIDUwLCAxLCAyMzUsIDE2MiwgMjEzLCA1MCwgMSwgMjA2LCAyMjQsIDIxMywgNTAsIDEsIDIyMCwgOTUsIAotICAgIDIxMywgNTAsIDEsIDIyMCwgMTAsIDIxMywgNTAsIDEsIDIyMCwgNTUsIDIxMywgNTAsIDEsIDI1MCwgMTEsIDIxMywgNTAsIAotICAgIDEsIDI1MCwgMTIxLCAyMTMsIDUwLCAxLCAyMTksIDI0NCwgMjEzLCA1MCwgMSwgMjUxLCA1NCwgMjEzLCA1MCwgMSwgMjQxLCAKLSAgICAyMSwgMjEzLCA1MCwgMSwgMjUwLCA5OSwgMjEzLCA1MCwgMSwgMjQxLCAxODMsIDIxMywgNTAsIDEsIDIzNSwgMTcwLCAyMTMsIAotICAgIDUwLCAxLCAyMDMsIDE2LCAyMTksIDIyNSwgMSwgMjUxLCAzMCwgMjE5LCAyMjUsIDEsIDI0OSwgMzIsIDIxOSwgMjI1LCAxLCAKLSAgICAyMTAsIDIyLCAyMTksIDIyNSwgMSwgMjMwLCAxODEsIDIxOSwgMjI1LCAxLCAyMDMsIDE4MiwgMjE5LCAyMjUsIDEsIDIyOSwgCi0gICAgMTQ0LCAyMTksIDIyNSwgMSwgMjQ0LCA2MCwgMjE5LCAyMjUsIDEsIDIxNiwgMjIwLCAyMTksIDIyNSwgMSwgMjE1LCAzNiwgCi0gICAgMjE5LCAyMjUsIDEsIDIxMywgNSwgMjE5LCAyMjUsIDEsIDI0NCwgMSwgMjE5LCAyMjUsIDEsIDI0NywgNywgMjE5LCAyMjUsIAotICAgIDEsIDIzOSwgOCwgMjE5LCAyMjUsIDEsIDI0MCwgMTA4LCAyMTksIDIyNSwgMSwgMjE3LCAxMjQsIDIxOSwgMjI1LCAxLCAKLSAgICAyMzAsIDM4LCAyMTksIDIyNSwgMSwgMjI4LCAxMDgsIDIxOSwgMjI1LCAxLCAyMjQsIDEyNCwgMjE5LCAyMjUsIDEsIDIyMSwgCi0gICAgMjQsIDIxOSwgMjI1LCAxLCAyMDQsIDcwLCAyMTksIDIyNSwgMSwgMTUyLCAyMTksIDIyNSwgMSwgMTk4LCAyMTksIDIyNSwgCi0gICAgMSwgNjMsIDIxOSwgMjI1LCAxLCA3NCwgMjE5LCAyMjUsIDEsIDc1LCAyMTksIDIyNSwgMSwgNzgsIDIxOSwgMjI1LCAxLCAKLSAgICA2OCwgMjE5LCAyMjUsIDEsIDI1MiwgMjUsIDIxOSwgMjI1LCAxLCAyNDEsIDE2MSwgMjE5LCAyMjUsIDEsIDIyMCwgMTgsIAotICAgIDIxOSwgMjI1LCAxNywgMjAyLCA4NCwgMjE5LCAyMjUsIDE3LCAxMDUsIDIxOSwgMjI1LCAxNywgMTA4LCAyMTksIDIyNSwgCi0gICAgMTcsIDE0NywgMjE5LCAyMjUsIDE3LCAxNDksIDIxOSwgMjI1LCAxNywgMTcwLCAyMTksIDIyNSwgMTcsIDE5NSwgMjE5LCAKLSAgICAyMjUsIDE3LCAyMTMsIDExMSwgMjE5LCAyMjUsIDE3LCAxOTksIDIxOSwgMjI1LCAxNywgMjIyLCA2MywgMjQxLCAxMTgsIDEsIAotICAgIDYzLCAyNDEsIDExOCwgMSwgMjQ4LCAxNjIsIDI0MSwgMTE4LCAxLCAyNDYsIDIzOCwgMjQxLCAxMTgsIDEsIDI0NiwgMTcwLCAKLSAgICAyNDEsIDExOCwgMSwgMjQ0LCA3NSwgMjQxLCAxMTgsIDEsIDIyMywgMTcsIDI0MSwgMTE4LCAxLCAyNDMsIDI0OCwgMjQxLCAKLSAgICAxMTgsIDEsIDI0MSwgMTQ1LCAyNDEsIDExOCwgMSwgNzQsIDI0MSwgMTE4LCAxLCAyNDAsIDYwLCAyNDEsIDExOCwgMSwgCi0gICAgMjM4LCAxOTAsIDI0MSwgMTE4LCAxLCAyMzgsIDUyLCAyNDEsIDExOCwgMSwgMjM3LCA2NywgMjQxLCAxMTgsIDEsIDc1LCAKLSAgICAyNDEsIDExOCwgMSwgMjMwLCAxNjEsIDI0MSwgMTE4LCAxLCAyMjksIDIwMSwgMjQxLCAxMTgsIDEsIDIyNywgMjM0LCAyNDEsIAotICAgIDExOCwgMSwgMjI3LCA3MywgMjQxLCAxMTgsIDEsIDIyNSwgMjAsIDI0MSwgMTE4LCAxLCAyMjIsIDI0MCwgMjQxLCAxMTgsIAotICAgIDEsIDIwMSwgMjAxLCAyNDEsIDExOCwgMSwgMjIyLCA0MSwgMjQxLCAxMTgsIDEsIDc4LCAyNDEsIDExOCwgMSwgMjE5LCAzNCwgCi0gICAgMjQxLCAxMTgsIDEsIDIxNywgMTA2LCAyNDEsIDExOCwgMSwgMjE2LCAxNTgsIDI0MSwgMTE4LCAxLCAyMTUsIDE4MCwgMjQxLCAKLSAgICAxMTgsIDEsIDIxNCwgMTc3LCAyNDEsIDExOCwgMSwgMjEzLCA0MywgMjQxLCAxMTgsIDEsIDIwOSwgMTg3LCAyNDEsIDExOCwgCi0gICAgMSwgMjA5LCA5MiwgMjQxLCAxMTgsIDEsIDY4LCAyNDEsIDExOCwgMSwgMjA2LCA1NSwgMjQxLCAxMTgsIDEsIDIwMywgMTc2LCAKLSAgICAyNDEsIDExOCwgMSwgMjAzLCAxMjQsIDI0MSwgMTE4LCAxLCAyMDIsIDkyLCAyNDEsIDExOCwgMSwgMjAyLCA3MSwgMjQxLCAKLSAgICAxMTgsIDEsIDIzOCwgMTA1LCAyNDEsIDExOCwgMSwgMjM4LCAxMTEsIDI0MSwgMTE4LCAxLCAyMjksIDEyOSwgMjQ3LCAxNCwgCi0gICAgMjUxLCAzMSwgMSwgMjUxLCAxLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDgsIDEwOCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCi0gICAgMjM4LCA2OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ0LCAxNDAsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMTcxLCAKLSAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDEwMiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQwLCAxODMsIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDEsIDIwMiwgNjUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwOSwgMjEzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAKLSAgICAyNDYsIDE5OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCAyMjQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgODAsIAotICAgIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMjIzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTMsIDkwLCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAxLCAyMjgsIDE3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDIzNSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCi0gICAgMjAzLCAxNzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MiwgNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ3LCAzOSwgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxNDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyOSwgMjQwLCAyNDcsIDE0LCAyNTEsIAotICAgIDMxLCAxLCAyMjYsIDE5NCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjM3LCAxNCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE3LCAKLSAgICAxMDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI1MCwgMTc3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDYsIDEwNywgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxNDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NSwgNjMsIDI0NywgMTQsIDI1MSwgMzEsIAotICAgIDEsIDIyNSwgMTAzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTcsIDExMSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjIxLCAKLSAgICAxNTEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMjQwLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTMsIDczLCAyNDcsIAotICAgIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDE2MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjIwLCAzMSwgMjQ3LCAxNCwgMjUxLCAzMSwgCi0gICAgMSwgMjA3LCAxMjUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MCwgODMsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMjUzLCAKLSAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDYsIDE3NiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE5LCA5LCAyNDcsIDE0LCAyNTEsIAotICAgIDMxLCAxLCAyMzgsIDk1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTYsIDE3MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCAKLSAgICA5OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjA1LCAyMzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwOCwgMTkzLCAyNDcsIAotICAgIDE0LCAyNTEsIDMxLCAxLCAyMTIsIDIwNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxOTQsIDI0NywgMTQsIDI1MSwgCi0gICAgMzEsIDEsIDI0NSwgNjQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NywgNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAzLCAKLSAgICA1NiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE4LCAxMDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyOSwgNjIsIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDI0NiwgNDksIDgyLCAyOSwgMzQsIDIsIDI1MSwgMjMxLCAyOSwgMzQsIDIsIDI1MSwgMjMwLCAyOSwgMzQsIAotICAgIDIsIDI1MSwgMjI5LCAyOSwgMzQsIDIsIDI1MSwgMjI4LCAyOSwgMzQsIDIsIDI1MSwgMjI3LCAyOSwgMzQsIDIsIDI1MSwgCi0gICAgMjI2LCAyOSwgMzQsIDIsIDI1MSwgMjI1LCAyOSwgMzQsIDIsIDI1MSwgMjI0LCAyOSwgMzQsIDIsIDI1MSwgMjIzLCAyOSwgCi0gICAgMzQsIDIsIDI1MSwgMjIyLCAyOSwgMzQsIDIsIDI1MSwgMjIxLCAyOSwgMzQsIDIsIDI1MSwgMjIwLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMjE5LCAyOSwgMzQsIDIsIDI1MSwgMjE4LCAyOSwgMzQsIDIsIDI1MSwgMjE3LCAyOSwgMzQsIDIsIDI1MSwgMjE2LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMjE1LCAyOSwgMzQsIDIsIDI1MSwgMjE0LCAyOSwgMzQsIDIsIDI1MSwgMjEzLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMjEyLCAyOSwgMzQsIDIsIDI1MSwgMjExLCAyOSwgMzQsIDIsIDI1MSwgMjEwLCAyOSwgMzQsIDIsIDI1MSwgMjA5LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMjA4LCAyOSwgMzQsIDIsIDI1MSwgMjA3LCAyOSwgMzQsIDIsIDI1MSwgMjA2LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMjA1LCAyOSwgMzQsIDIsIDI1NCwgMjM5LCAyOSwgMzQsIDIsIDI1MSwgMjA0LCAyOSwgMzQsIDIsIDI1MSwgMjAzLCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMjAyLCAyOSwgMzQsIDIsIDI1MSwgMjAxLCAyOSwgMzQsIDIsIDI1MSwgMjAwLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTk5LCAyOSwgMzQsIDIsIDI1MSwgMTk4LCAyOSwgMzQsIDIsIDI1MSwgMTk3LCAyOSwgMzQsIDIsIDI1MSwgMTk2LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTk1LCAyOSwgMzQsIDIsIDI1MSwgMTk0LCAyOSwgMzQsIDIsIDI1MSwgMTkzLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTkyLCAyOSwgMzQsIDIsIDI1MSwgMTkxLCAyOSwgMzQsIDIsIDI1MSwgMTkwLCAyOSwgMzQsIDIsIDI1MSwgMTg5LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTg4LCAyOSwgMzQsIDIsIDI1MSwgMTg3LCAyOSwgMzQsIDIsIDI1MSwgMTg2LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTg1LCAyOSwgMzQsIDIsIDI1MSwgMTg0LCAyOSwgMzQsIDIsIDI1MSwgMTgzLCAyOSwgMzQsIDIsIDI1MSwgMTgyLCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTgxLCAyOSwgMzQsIDIsIDI1MSwgMTgwLCAyOSwgMzQsIDIsIDI1MSwgMTc5LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTc4LCAyOSwgMzQsIDIsIDI1MSwgMTc3LCAyOSwgMzQsIDIsIDI1MSwgMTc2LCAyOSwgMzQsIDIsIDI1MSwgMTc1LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTc0LCAyOSwgMzQsIDIsIDI1MSwgMTczLCAyOSwgMzQsIDIsIDI1MSwgMTcyLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTcxLCAyOSwgMzQsIDIsIDI1MSwgMTcwLCAyOSwgMzQsIDIsIDI1MSwgMTY5LCAyOSwgMzQsIDIsIDI1MSwgMTY4LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTY3LCAyOSwgMzQsIDIsIDI1MSwgMTY2LCAyOSwgMzQsIDIsIDI1MSwgMTY1LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTY0LCAyOSwgMzQsIDIsIDI1MSwgMTYzLCAyOSwgMzQsIDIsIDI1MSwgMTYyLCAyOSwgMzQsIDIsIDI1NCwgMTUyLCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTYxLCAyOSwgMzQsIDIsIDI1MSwgMTYwLCAyOSwgMzQsIDIsIDI1NCwgMTE3LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTU5LCAyOSwgMzQsIDIsIDI1MSwgMTU4LCAyOSwgMzQsIDIsIDI1MSwgMTU3LCAyOSwgMzQsIDIsIDI1MSwgMTU2LCAKLSAgICAyOSwgMzQsIDIsIDI1NCwgMTA0LCAyOSwgMzQsIDIsIDI1MSwgMTU1LCAyOSwgMzQsIDIsIDI1MSwgMTU0LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTUzLCAyOSwgMzQsIDIsIDI1MSwgMTUyLCAyOSwgMzQsIDIsIDI1MSwgMTUxLCAyOSwgMzQsIDIsIDI1MywgMTc2LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTc1LCAyOSwgMzQsIDIsIDI1MywgMTc0LCAyOSwgMzQsIDIsIDI1MywgMTczLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTcyLCAyOSwgMzQsIDIsIDI1MywgMTcxLCAyOSwgMzQsIDIsIDI1MywgMTcwLCAyOSwgMzQsIDIsIDI1MywgMTY5LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTY3LCAyOSwgMzQsIDIsIDI1MywgMTY2LCAyOSwgMzQsIDIsIDI1MywgMTY1LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTY0LCAyOSwgMzQsIDIsIDI1MywgMTYzLCAyOSwgMzQsIDIsIDI1MywgMTYyLCAyOSwgMzQsIDIsIDI1MywgMTYwLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTU5LCAyOSwgMzQsIDIsIDI1MywgMTU4LCAyOSwgMzQsIDIsIDI1MywgMTU3LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTU2LCAyOSwgMzQsIDIsIDI1MywgMTU1LCAyOSwgMzQsIDIsIDI1MywgMTU0LCAyOSwgMzQsIDIsIDI1MywgMTUzLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTUyLCAyOSwgMzQsIDIsIDI1MywgMTUxLCAyOSwgMzQsIDIsIDI1MywgMTUwLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTQ5LCAyOSwgMzQsIDIsIDI1MywgMTQ4LCAyOSwgMzQsIDIsIDI1MywgMTQ3LCAyOSwgMzQsIDIsIDI1MywgMTQ2LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTQ1LCAyOSwgMzQsIDIsIDI1MywgMTQ0LCAyOSwgMzQsIDIsIDI1MywgMTQzLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTQyLCAyOSwgMzQsIDIsIDI1MywgMTQwLCAyOSwgMzQsIDIsIDI1MywgMTM5LCAyOSwgMzQsIDIsIDI1MywgMTM4LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTM0LCAyOSwgMzQsIDIsIDI1MywgMTMzLCAyOSwgMzQsIDIsIDI1MywgMTMyLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTMxLCAyOSwgMzQsIDIsIDI1MywgMTI3LCAyOSwgMzQsIDIsIDI1MywgMTI2LCAyOSwgMzQsIDIsIDI1MywgMTI1LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTI0LCAyOSwgMzQsIDIsIDI1MywgMTIzLCAyOSwgMzQsIDIsIDI1MywgMTIyLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTIxLCAyOSwgMzQsIDIsIDI1MywgMTIwLCAyOSwgMzQsIDIsIDI1MywgMTE5LCAyOSwgMzQsIDIsIDI1MywgMTE4LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTE3LCAyOSwgMzQsIDIsIDI1MywgMTE2LCAyOSwgMzQsIDIsIDI1MywgMTE1LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTE0LCAyOSwgMzQsIDIsIDI1MywgMTEzLCAyOSwgMzQsIDIsIDI1MywgMTEyLCAyOSwgMzQsIDIsIDI1MywgMTExLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTEwLCAyOSwgMzQsIDIsIDI1MywgMTA5LCAyOSwgMzQsIDIsIDI1MywgMTA4LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTA3LCAyOSwgMzQsIDIsIDI1MywgMTA2LCAyOSwgMzQsIDIsIDI1MywgMTA1LCAyOSwgMzQsIDIsIDI1MywgMTAzLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTAyLCAyOSwgMzQsIDIsIDI1MywgMTAxLCAyOSwgMzQsIDIsIDI1MywgMTAwLCAyOSwgMzQsIDIsIAotICAgIDI1MywgOTksIDI5LCAzNCwgMiwgMjUzLCA5NywgMjksIDM0LCAyLCAyNTMsIDk2LCAyOSwgMzQsIDIsIDI1MywgOTUsIDI5LCAKLSAgICAzNCwgMiwgMjUzLCA5NCwgMjksIDM0LCAyLCAyNTMsIDkyLCAyOSwgMzQsIDIsIDI1MywgOTEsIDI5LCAzNCwgMiwgMjUzLCAKLSAgICA5MCwgMjksIDM0LCAyLCAyNTMsIDU2LCAyOSwgMzQsIDIsIDI1MywgNTQsIDI5LCAzNCwgMiwgMjUzLCA1MiwgMjksIDM0LCAKLSAgICAyLCAyNTMsIDUwLCAyOSwgMzQsIDIsIDI1MywgNDgsIDI5LCAzNCwgMiwgMjUzLCA0NiwgMjksIDM0LCAyLCAyNTMsIDQ0LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgNDIsIDI5LCAzNCwgMiwgMjUzLCA0MCwgMjksIDM0LCAyLCAyNTMsIDM4LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMzYsIDI5LCAzNCwgMiwgMjUzLCAzMywgMjksIDM0LCAyLCAyNTMsIDMxLCAyOSwgMzQsIDIsIDI1MywgMjksIDI5LCAKLSAgICAzNCwgMiwgMjUzLCAyNywgMjksIDM0LCAyLCAyNTMsIDI1LCAyOSwgMzQsIDIsIDI1MywgMjMsIDI5LCAzNCwgMiwgMjUzLCAKLSAgICAyMSwgMjksIDM0LCAyLCAyNTMsIDE5LCAyOSwgMzQsIDIsIDI1MiwgMTkzLCAyOSwgMzQsIDIsIDI1MiwgMTkyLCAyOSwgMzQsIAotICAgIDIsIDI1MiwgMTkxLCAyOSwgMzQsIDIsIDI1MiwgMTkwLCAyOSwgMzQsIDIsIDI1MiwgMTg5LCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgMTg4LCAyOSwgMzQsIDIsIDI1MiwgMTg2LCAyOSwgMzQsIDIsIDI1MiwgMTg1LCAyOSwgMzQsIDIsIDI1MiwgMTg0LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgMTgzLCAyOSwgMzQsIDIsIDI1MiwgMTgyLCAyOSwgMzQsIDIsIDI1MiwgMTgxLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTc5LCAyOSwgMzQsIDIsIDI1MiwgMTc4LCAyOSwgMzQsIDIsIDI1MiwgMTc0LCAyOSwgMzQsIDIsIDI1MiwgMTczLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTcxLCAyOSwgMzQsIDIsIDI1MiwgMTcwLCAyOSwgMzQsIDIsIDI1MiwgMTY5LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTY4LCAyOSwgMzQsIDIsIDI1MiwgMTY3LCAyOSwgMzQsIDIsIDI1MiwgMTY2LCAyOSwgMzQsIDIsIDI1MiwgMTY1LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTY0LCAyOSwgMzQsIDIsIDI1MiwgMTYzLCAyOSwgMzQsIDIsIDI1MiwgMTYyLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTYxLCAyOSwgMzQsIDIsIDI1MiwgMTYwLCAyOSwgMzQsIDIsIDI1MiwgMTU5LCAyOSwgMzQsIDIsIDI1MiwgMTU4LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTU3LCAyOSwgMzQsIDIsIDI1MiwgMTU2LCAyOSwgMzQsIDIsIDI1MiwgMTU1LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTU0LCAyOSwgMzQsIDIsIDI1MiwgMTUzLCAyOSwgMzQsIDIsIDI1MiwgMTUyLCAyOSwgMzQsIDIsIDI1MiwgMTUxLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTUwLCAyOSwgMzQsIDIsIDI1MiwgMTQ5LCAyOSwgMzQsIDIsIDI1MiwgMTQ4LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTQ3LCAyOSwgMzQsIDIsIDI1MiwgMTQ2LCAyOSwgMzQsIDIsIDI1MiwgMTQ1LCAyOSwgMzQsIDIsIDI1MiwgMTQ0LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTQzLCAyOSwgMzQsIDIsIDI1MiwgMTQyLCAyOSwgMzQsIDIsIDI1MiwgMTQxLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTQwLCAyOSwgMzQsIDIsIDI1MiwgMTM5LCAyOSwgMzQsIDIsIDI1MiwgMTM4LCAyOSwgMzQsIDIsIDI1MiwgMTM3LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTM2LCAyOSwgMzQsIDIsIDI1MiwgMTM1LCAyOSwgMzQsIDIsIDI1MiwgMTM0LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTMzLCAyOSwgMzQsIDIsIDI1MiwgMTMyLCAyOSwgMzQsIDIsIDI1MiwgMTMxLCAyOSwgMzQsIDIsIDI1MiwgMTMwLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTI5LCAyOSwgMzQsIDIsIDI1MiwgMTI4LCAyOSwgMzQsIDIsIDI1MiwgMTI3LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTI2LCAyOSwgMzQsIDIsIDI1MiwgMTI1LCAyOSwgMzQsIDIsIDI1MiwgMTI0LCAyOSwgMzQsIDIsIDI1MiwgMTIzLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTIyLCAyOSwgMzQsIDIsIDI1MiwgMTIxLCAyOSwgMzQsIDIsIDI1MiwgMTIwLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTE5LCAyOSwgMzQsIDIsIDI1MiwgMTE4LCAyOSwgMzQsIDIsIDI1MiwgMTE3LCAyOSwgMzQsIDIsIDI1MiwgMTE2LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTE1LCAyOSwgMzQsIDIsIDI1MiwgMTE0LCAyOSwgMzQsIDIsIDI1MiwgMTEzLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTEyLCAyOSwgMzQsIDIsIDI1MiwgMTExLCAyOSwgMzQsIDIsIDI1MiwgMTEwLCAyOSwgMzQsIDIsIDI1MiwgMTA5LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTA4LCAyOSwgMzQsIDIsIDI1MiwgMTA3LCAyOSwgMzQsIDIsIDI1MiwgMTA2LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTA1LCAyOSwgMzQsIDIsIDI1MiwgMTA0LCAyOSwgMzQsIDIsIDI1MiwgMTAzLCAyOSwgMzQsIDIsIDI1MiwgMTAyLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTAxLCAyOSwgMzQsIDIsIDI1MiwgMTAwLCAyOSwgMzQsIDIsIDI1MiwgOTksIDI5LCAzNCwgMiwgCi0gICAgMjUyLCA5OCwgMjksIDM0LCAyLCAyNTIsIDk3LCAyOSwgMzQsIDIsIDI1MiwgOTYsIDI5LCAzNCwgMiwgMjUyLCA5NSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDk0LCAyOSwgMzQsIDIsIDI1MiwgOTMsIDI5LCAzNCwgMiwgMjUyLCA5MiwgMjksIDM0LCAyLCAyNTIsIAotICAgIDkxLCAyOSwgMzQsIDIsIDI1MiwgOTAsIDI5LCAzNCwgMiwgMjUyLCA4OSwgMjksIDM0LCAyLCAyNTIsIDg4LCAyOSwgMzQsIAotICAgIDIsIDI1MiwgODcsIDI5LCAzNCwgMiwgMjUyLCA4NiwgMjksIDM0LCAyLCAyNTIsIDg1LCAyOSwgMzQsIDIsIDI1MiwgODQsIAotICAgIDI5LCAzNCwgMiwgMjUyLCA4MywgMjksIDM0LCAyLCAyNTIsIDgyLCAyOSwgMzQsIDIsIDI1MiwgODEsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCA4MCwgMjksIDM0LCAyLCAyNTIsIDc5LCAyOSwgMzQsIDIsIDI1MiwgNzgsIDI5LCAzNCwgMiwgMjUyLCA3NywgMjksIAotICAgIDM0LCAyLCAyNTIsIDc2LCAyOSwgMzQsIDIsIDI1MiwgNzUsIDI5LCAzNCwgMiwgMjUyLCA3NCwgMjksIDM0LCAyLCAyNTIsIAotICAgIDczLCAyOSwgMzQsIDIsIDI1MiwgNzIsIDI5LCAzNCwgMiwgMjUyLCA3MSwgMjksIDM0LCAyLCAyNTIsIDcwLCAyOSwgMzQsIAotICAgIDIsIDI1MiwgNjksIDI5LCAzNCwgMiwgMjUyLCA2OCwgMjksIDM0LCAyLCAyNTIsIDY3LCAyOSwgMzQsIDIsIDI1MiwgNjYsIAotICAgIDI5LCAzNCwgMiwgMjUyLCA2NSwgMjksIDM0LCAyLCAyNTIsIDY0LCAyOSwgMzQsIDIsIDI1MiwgNjMsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCA2MiwgMjksIDM0LCAyLCAyNTIsIDYxLCAyOSwgMzQsIDIsIDI1MiwgNjAsIDI5LCAzNCwgMiwgMjUyLCA1OSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDU4LCAyOSwgMzQsIDIsIDI1MiwgNTcsIDI5LCAzNCwgMiwgMjUyLCA1NiwgMjksIDM0LCAyLCAyNTIsIAotICAgIDU1LCA2MywgMjksIDM0LCAyLCAyNTIsIDU0LCAyNDksIDI1NSwgMjksIDM0LCAyLCAyNTIsIDUzLCAyNDUsIDUxLCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNTIsIDc0LCAyOSwgMzQsIDIsIDI1MiwgNTEsIDI0MCwgMTc0LCAyOSwgMzQsIDIsIDI1MiwgNTAsIAotICAgIDIzNywgMTcxLCAyOSwgMzQsIDIsIDI1MiwgNDksIDIzMCwgMTg0LCAyOSwgMzQsIDIsIDI1MiwgNDgsIDIzMCwgNTQsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA0NywgMTU5LCAyOSwgMzQsIDIsIDI1MiwgNDYsIDIyOCwgMTE4LCAyOSwgMzQsIDIsIDI1MiwgNDUsIAotICAgIDIyOCwgMTE3LCAyOSwgMzQsIDIsIDI1MiwgNDQsIDIyOCwgMTE2LCAyOSwgMzQsIDIsIDI1MiwgNDMsIDIyOCwgMTE1LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNDIsIDIwNCwgMTQ0LCAyOSwgMzQsIDIsIDI1MiwgNDEsIDIwMywgMTk2LCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgNDAsIDIwMywgMTI0LCAyOSwgMzQsIDIsIDI1MiwgMzksIDIyMCwgMzYsIDI5LCAzNCwgMiwgMjUyLCAzOCwgMjUxLCAxNDcsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAzNywgMjQ4LCAxOTksIDI5LCAzNCwgMiwgMjUyLCAzNiwgMjQ0LCAxMjIsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAzNSwgMjQwLCAxODIsIDI5LCAzNCwgMiwgMjUyLCAzNCwgMjMwLCAxNjEsIDI5LCAzNCwgMiwgMjUyLCAzMywgMjksIAotICAgIDM0LCAyLCAyNTIsIDMyLCAyOSwgMzQsIDIsIDI1MiwgMzEsIDI5LCAzNCwgMiwgMjUyLCAzMCwgMjksIDM0LCAyLCAyNTIsIAotICAgIDI5LCAyOSwgMzQsIDIsIDI1MiwgMjgsIDI5LCAzNCwgMiwgMjUyLCAyNywgMjksIDM0LCAyLCAyNTIsIDI2LCAyNDUsIDU4LCAKLSAgICA0LCA2MywgMjQ1LCA1OCwgNCwgNzQsIDI0NSwgNTgsIDQsIDc1LCAyNDUsIDU4LCA0LCA3OCwgMjQ1LCA1OCwgNCwgNjgsIAotICAgIDI0NSwgNTgsIDQsIDIzMCwgMTgxLCAyNDUsIDU4LCA0LCAyMzAsIDEwMSwgMjQ1LCA1OCwgNCwgMTczLCAyNDUsIDU4LCA0LCAKLSAgICAyMjksIDIwMSwgMjQ1LCA1OCwgNCwgMjI5LCAxMDAsIDI0NSwgNTgsIDQsIDIyOSwgMjYsIDI0NSwgNTgsIDQsIDIyOCwgCi0gICAgMjA5LCAyNDUsIDU4LCA0LCAyMjgsIDExMywgMjQ1LCA1OCwgNCwgMjI3LCAyMzQsIDI0NSwgNTgsIDQsIDIyNywgMTQ4LCAKLSAgICAyNDUsIDU4LCA0LCAyMjcsIDQ5LCAyNDUsIDU4LCA0LCAyMjYsIDIzOSwgMjQ1LCA1OCwgNCwgMTkyLCAyNDUsIDU4LCA0LCAKLSAgICAyMjUsIDIwLCAyNDUsIDU4LCA0LCAyMjQsIDE1NSwgMjQ1LCA1OCwgNCwgMjI0LCA4MiwgMjQ1LCA1OCwgNCwgMjIzLCAyNDYsIAotICAgIDI0NSwgNTgsIDQsIDIwMSwgMjAxLCAyNDUsIDU4LCA0LCAyMjIsIDI0MCwgMjQ1LCA1OCwgNCwgMjIyLCAxMDAsIDI0NSwgCi0gICAgNTgsIDQsIDIyMSwgMTkxLCAyNDUsIDU4LCA0LCAyMjEsIDg0LCAyNDUsIDU4LCA0LCAxODUsIDI0NSwgNTgsIDQsIDIxOSwgCi0gICAgMzQsIDI0NSwgNTgsIDQsIDIxOCwgMTY3LCAyNDUsIDU4LCA0LCAyMTgsIDY5LCAyNDUsIDU4LCA0LCAyMTcsIDE5MSwgMjQ1LCAKLSAgICA1OCwgNCwgMjE2LCAyMjAsIDI0NSwgNTgsIDQsIDIxNiwgMTU4LCAyNDUsIDU4LCA0LCAyMTYsIDU3LCAyNDUsIDU4LCA0LCAKLSAgICAyMTUsIDIyNywgMjQ1LCA1OCwgNCwgMjE1LCAxNDUsIDI0NSwgNTgsIDQsIDIxNSwgMzYsIDI0NSwgNTgsIDQsIDIxNCwgCi0gICAgMTc3LCAyNDUsIDU4LCA0LCAyMTIsIDE2MiwgMjQ1LCA1OCwgNCwgMjEyLCAxMywgMjQ1LCA1OCwgNCwgMjExLCAxMCwgMjQ1LCAKLSAgICA1OCwgNCwgMjEwLCAyMiwgMjQ1LCA1OCwgNCwgMjA5LCAxODcsIDI0NSwgNTgsIDQsIDIwOSwgMiwgMjQ1LCA1OCwgNCwgCi0gICAgMTM1LCAyNDUsIDU4LCA0LCAyMDcsIDIwMywgMjQ1LCA1OCwgNCwgMjA0LCAxMTEsIDI0NSwgNTgsIDQsIDIwNCwgNjIsIAotICAgIDI0NSwgNTgsIDQsIDIwNCwgMzAsIDI0NSwgNTgsIDQsIDIwNCwgMCwgMjQ1LCA1OCwgNCwgMjAzLCAxODIsIDI0NSwgNTgsIAotICAgIDQsIDIwMywgMTc2LCAyNDUsIDU4LCA0LCAyMDIsIDExNiwgMjQ1LCA1OCwgNCwgMjAyLCAxNywgMjMxLCA1MSwgMjUwLCAKLSAgICAxMzAsIDEsIDI1MSwgMjgsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNDgsIDEwNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIAotICAgIDIzOCwgNjcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNDQsIDE3NywgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIzNywgNjcsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDQsIDcwLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjAyLCA5NSwgMjMxLCA1MSwgCi0gICAgMjUwLCAxMzAsIDEsIDIzNywgMTksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDksIDEyOCwgMjMxLCA1MSwgMjUwLCAxMzAsIAotICAgIDEsIDIwMiwgMjM1LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI5LCAyNTAsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjgsIAotICAgIDE5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI0LCAyNDcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjEsIDQwLCAyMzEsIAotICAgIDUxLCAyNTAsIDEzMCwgMSwgMjE0LCAyNDksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNTAsIDMsIDIzMSwgNTEsIDI1MCwgCi0gICAgMTMwLCAxLCAyMTksIDM0LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjE1LCAyNiwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIAotICAgIDIxNywgNjksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMTYsIDkxLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjEyLCAyNTUsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDksIDIwMSwgMjMxLCA1MSwgMjUwLCAxMzAsIDIxNCwgMTY4LCA1NCwgMjMxLCA1MSwgCi0gICAgMjUwLCAxMzAsIDQyLCAxMDUsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTA4LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIAotICAgIDE0NywgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDksIDE1MiwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDcsIDE1MSwgCi0gICAgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTE4LCAyMDksIDM2LCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAyMTksIDEzNCwgMSwgMjUxLCAyOCwgMjE5LCAxMzQsIAotICAgIDEsIDI0OCwgMTA1LCAyMTksIDEzNCwgMSwgMjM4LCA2NywgMjE5LCAxMzQsIDEsIDI0NCwgMTc3LCAyMTksIDEzNCwgMSwgCi0gICAgMjM3LCA2NywgMjE5LCAxMzQsIDEsIDIwNCwgNzAsIDIxOSwgMTM0LCAxLCAyMDIsIDk1LCAyMTksIDEzNCwgMSwgMjM3LCAKLSAgICAxOSwgMjE5LCAxMzQsIDEsIDIwOSwgMTI4LCAyMTksIDEzNCwgMSwgMjAyLCAyMzUsIDIxOSwgMTM0LCAxLCAyMjksIDI1MCwgCi0gICAgMjE5LCAxMzQsIDEsIDIyOCwgMTksIDIxOSwgMTM0LCAxLCAyMjQsIDI0NywgMjE5LCAxMzQsIDEsIDQ2LCAyMjEsIDQwLCAKLSAgICAyMTksIDEzNCwgMSwgMjIxLCA0MCwgMjE5LCAxMzQsIDEsIDIxNCwgMjQ5LCAyMTksIDEzNCwgMSwgMjUwLCAzLCAyMTksIAotICAgIDEzNCwgMSwgMjE5LCAzNCwgMjE5LCAxMzQsIDEsIDIxNSwgMjYsIDIxOSwgMTM0LCAxLCAyMTcsIDY5LCAyMTksIDEzNCwgMSwgCi0gICAgMjE2LCA5MSwgMjE5LCAxMzQsIDEsIDIxMiwgMjU1LCAyMTksIDEzNCwgMSwgMjA5LCAyMDEsIDIxOSwgMTM0LCAyMjcsIAotICAgIDIxNywgMjM5LCAyMTIsIDIxOSwgMTM0LCAyMTYsIDExLCAyMzksIDIxMiwgMjE5LCAxMzQsIDQyLCAxMDUsIDIxOSwgMTM0LCAKLSAgICA0MiwgMTA4LCAyMTksIDEzNCwgNDIsIDE0NywgMjE5LCAxMzQsIDQyLCAxNDksIDIxOSwgMTM0LCA0MiwgMTcwLCAyMTksIAotICAgIDEzNCwgNDIsIDIwOSwgMTUyLCAyMTksIDEzNCwgNDIsIDIwNywgMTUxLCAyMjMsIDEwMiwgMSwgNDYsIDI1MSwgMjgsIDIyMywgCi0gICAgMTAyLCAxLCAyNTEsIDI4LCAyMjMsIDEwMiwgMSwgNDYsIDI0OCwgMTA1LCAyMjMsIDEwMiwgMSwgMjQ4LCAxMDUsIDIyMywgCi0gICAgMTAyLCAxLCAyMzgsIDY3LCAyMjMsIDEwMiwgMSwgMjQ0LCAxNzcsIDIyMywgMTAyLCAxLCA0NiwgMjM3LCA2NywgMjIzLCAKLSAgICAxMDIsIDEsIDIzNywgNjcsIDIyMywgMTAyLCAxLCAyMDQsIDcwLCAyMjMsIDEwMiwgMSwgMjAyLCA5NSwgMjIzLCAxMDIsIDEsIAotICAgIDIzNywgMTksIDIyMywgMTAyLCAxLCAyMDksIDEyOCwgMjIzLCAxMDIsIDEsIDQ2LCAyMDIsIDIzNSwgMjIzLCAxMDIsIDEsIAotICAgIDIwMiwgMjM1LCAyMjMsIDEwMiwgMSwgNDYsIDIyOSwgMjUwLCAyMjMsIDEwMiwgMSwgMjI5LCAyNTAsIDIyMywgMTAyLCAxLCAKLSAgICA0NiwgMjI4LCAxOSwgMjIzLCAxMDIsIDEsIDIyOCwgMTksIDIyMywgMTAyLCAxLCA0NiwgMjI0LCAyNDcsIDIyMywgMTAyLCAKLSAgICAxLCAyMjQsIDI0NywgMjIzLCAxMDIsIDEsIDQ2LCAyMjEsIDQwLCAyMjMsIDEwMiwgMSwgMjIxLCA0MCwgMjIzLCAxMDIsIDEsIAotICAgIDIxNCwgMjQ5LCAyMjMsIDEwMiwgMSwgMjUwLCAzLCAyMjMsIDEwMiwgMSwgMjE5LCAzNCwgMjIzLCAxMDIsIDEsIDIxNSwgCi0gICAgMjYsIDIyMywgMTAyLCAxLCAyMTcsIDY5LCAyMjMsIDEwMiwgMSwgMjE2LCA5MSwgMjIzLCAxMDIsIDEsIDQ2LCAyMTIsIAotICAgIDI1NSwgMjIzLCAxMDIsIDEsIDIxMiwgMjU1LCAyMjMsIDEwMiwgMSwgMjA5LCAyMDEsIDIyMywgMTAyLCA0MiwgMTA1LCAKLSAgICAyMjMsIDEwMiwgNDIsIDEwOCwgMjIzLCAxMDIsIDQyLCAxNDcsIDIyMywgMTAyLCA0MiwgMTQ5LCAyMjMsIDEwMiwgMjQ1LCAKLSAgICAxMTYsIDQyLCAxNDksIDIyMywgMTAyLCA0MiwgMTcwLCAyMjMsIDEwMiwgNDIsIDIwOSwgMTUyLCAyMjMsIDEwMiwgNDIsIAotICAgIDIwNywgMTUxLCAyMjMsIDEwMiwgNDIsIDExOCwgMjM2LCAxMSwgMjM3LCA3OCwgMSwgMjUxLCAyOCwgMjM3LCA3OCwgMSwgCi0gICAgMjQ4LCAxMDUsIDIzNywgNzgsIDEsIDIzOCwgNjcsIDIzNywgNzgsIDEsIDI0NCwgMTc2LCAyMzcsIDc4LCAxLCAyMzcsIDY3LCAKLSAgICAyMzcsIDc4LCAxLCAyMDQsIDcwLCAyMzcsIDc4LCAxLCAyMDIsIDk0LCAyMzcsIDc4LCAxLCAyMzcsIDE5LCAyMzcsIDc4LCAKLSAgICAxLCAyMDksIDEyOCwgMjM3LCA3OCwgMSwgMjAyLCAyMzUsIDIzNywgNzgsIDEsIDIyOSwgMjUwLCAyMzcsIDc4LCAxLCAyMjgsIAotICAgIDE5LCAyMzcsIDc4LCAxLCAyMjQsIDI0NywgMjM3LCA3OCwgMSwgMjIxLCA0MCwgMjM3LCA3OCwgMSwgMjE0LCAyNDksIDIzNywgCi0gICAgNzgsIDEsIDI1MCwgMiwgMjM3LCA3OCwgMSwgMjE5LCAzNCwgMjM3LCA3OCwgMSwgMjE1LCAyNiwgMjM3LCA3OCwgMSwgMjE3LCAKLSAgICA2OSwgMjM3LCA3OCwgMSwgMjEyLCAyNTUsIDIzNywgNzgsIDEsIDIwOSwgMjAxLCAyMzcsIDc4LCA0MiwgMTA1LCAyMzcsIAotICAgIDc4LCA0MiwgMTcwLCAyMzcsIDc4LCA0MiwgMjA5LCAxNTIsIDIzNywgNzgsIDQyLCAyMDcsIDE1MSwgMjM3LCA3OCwgNDIsIAotICAgIDExOCwgMjM2LCAxMSwgMjE4LCAxNzgsIDEsIDI1MSwgMjUsIDIxOCwgMTc4LCAxLCAyNDgsIDEwOCwgMjE4LCAxNzgsIDEsIAotICAgIDIzOCwgMjM3LCAyMTgsIDE3OCwgMSwgMjQ0LCAzOSwgMjE4LCAxNzgsIDEsIDIzNywgNjcsIDIxOCwgMTc4LCAxLCAyMDQsIAotICAgIDc3LCAyMTgsIDE3OCwgMSwgMjAyLCAxMDksIDIxOCwgMTc4LCAxLCAyMzcsIDIxLCAyMTgsIDE3OCwgMSwgMjA5LCAxMzIsIAotICAgIDIxOCwgMTc4LCAxLCAyMDIsIDIzNiwgMjE4LCAxNzgsIDEsIDIzMCwgMjIsIDIxOCwgMTc4LCAxLCAyMjgsIDI1LCAyMTgsIAotICAgIDE3OCwgMSwgMjI0LCAyNDcsIDIxOCwgMTc4LCAxLCAyMjEsIDQwLCAyMTgsIDE3OCwgMSwgMjEzLCAxMzcsIDIxOCwgMTc4LCAKLSAgICAxLCAyNTEsIDU5LCAyMTgsIDE3OCwgMSwgMjE5LCAzNCwgMjE4LCAxNzgsIDEsIDIxNSwgMjcsIDIxOCwgMTc4LCAxLCAyMTcsIAotICAgIDc0LCAyMTgsIDE3OCwgMSwgMjE1LCAyMDAsIDIxOCwgMTc4LCAxLCAyMTIsIDI1NSwgMjE4LCAxNzgsIDEsIDIwOSwgMjA3LCAKLSAgICAyMTgsIDE3OCwgNDIsIDEwNSwgMjE4LCAxNzgsIDQyLCAyMDksIDE1MiwgMjE4LCAxNzgsIDQyLCAyMDcsIDE1MSwgMjE4LCAKLSAgICAxNzgsIDQyLCAxMTgsIDIzNiwgMTEsIDIxOCwgMTc4LCA0MiwgMTA4LCAyMTgsIDE3OCwgNDIsIDE0NywgMjE4LCAxNzgsIAotICAgIDIwMywgMjM4LCAyMTMsIDEzMCwgMjI2LCAxOTYsIDEsIDYzLCAyMjYsIDE5NiwgMSwgMjQ5LCAyNTUsIDIyNiwgMTk2LCAxLCAKLSAgICAyMzksIDc1LCAyMjYsIDE5NiwgMSwgMjQ1LCA1MSwgMjI2LCAxOTYsIDEsIDc0LCAyMjYsIDE5NiwgMSwgMjA2LCAxNjQsIAotICAgIDIyNiwgMTk2LCAxLCA3NSwgMjI2LCAxOTYsIDEsIDIwMywgMTI0LCAyMjYsIDE5NiwgMSwgMjMwLCA1NCwgMjI2LCAxOTYsIAotICAgIDEsIDE1OSwgMjI2LCAxOTYsIDEsIDIyNiwgMTg1LCAyMjYsIDE5NiwgMSwgMjIzLCAxNjMsIDIyNiwgMTk2LCAxLCA3OCwgCi0gICAgMjI2LCAxOTYsIDEsIDE0NiwgMjI2LCAxOTYsIDEsIDIxMSwgMTY3LCAyMjYsIDE5NiwgMSwgMjEwLCA2OSwgMjI2LCAxOTYsIAotICAgIDEsIDY4LCAyMjYsIDE5NiwgMSwgMjQwLCAxNzQsIDIyNiwgMTk2LCAxLCAyMTcsIDEzNCwgMjI2LCAxOTYsIDEsIDE5NCwgCi0gICAgMjI2LCAxOTYsIDEsIDIwNywgMjQ0LCAyMjYsIDE5NiwgMSwgMjUwLCAyMzEsIDIyNiwgMTk2LCAxLCAyNDEsIDkyLCAyMjYsIAotICAgIDE5NiwgMSwgMjI2LCAxOTksIDIyNiwgMTk2LCAxLCAyMjEsIDIyOCwgMjI2LCAxOTYsIDEsIDI0NywgMTI1LCAyMjYsIDE5NiwgCi0gICAgMjA4LCA4MiwgODIsIDEyOSwgMjM2LCAyNTMsIDEsIDYzLCAxMjksIDIzNiwgMjUzLCAxLCA3NCwgMTI5LCAyMzYsIDI1MywgCi0gICAgMSwgNzUsIDEyOSwgMjM2LCAyNTMsIDEsIDc4LCAxMjksIDIzNiwgMjUzLCAxLCAxOTgsIDEyOSwgMjM2LCAyNTMsIDEsIAotICAgIDIwNCwgMTExLCAxMjksIDIzNiwgMjUzLCAxLCAyNDksIDMyLCAxMjksIDIzNiwgMjUzLCAxLCAyNDksIDMxLCAxMjksIDIzNiwgCi0gICAgMjUzLCAxLCAxODUsIDEyOSwgMjM2LCAyNTMsIDEsIDE5MiwgMTI5LCAyMzYsIDI1MywgMSwgMjAxLCAyMDEsIDEyOSwgMjM2LCAKLSAgICAyNTMsIDEsIDIyMywgMTEwLCAxMjksIDIzNiwgMjUzLCAxLCAyMjIsIDI0MCwgMTI5LCAyMzYsIDI1MywgMSwgMjIyLCAyMzksIAotICAgIDEyOSwgMjM2LCAyNTMsIDEsIDIxNiwgMjIwLCAxMjksIDIzNiwgMjUzLCAxLCAyMTYsIDIxOSwgMTI5LCAyMzYsIDI1MywgMSwgCi0gICAgMjI4LCAxMTMsIDEyOSwgMjM2LCAyNTMsIDEsIDIyOSwgMTQ0LCAxMjksIDIzNiwgMjUzLCAxLCAyMzcsIDEyLCAxMjksIAotICAgIDIzNiwgMjUzLCAxLCAyMTUsIDM2LCAxMjksIDIzNiwgMjUzLCAxLCAyMTUsIDM1LCAxMjksIDIzNiwgMjUzLCAxLCAyMTQsIAotICAgIDE3NywgMTI5LCAyMzYsIDI1MywgMSwgMTczLCAxMjksIDIzNiwgMjUzLCAxLCAyMTcsIDEyNiwgMTI5LCAyMzYsIDI1MywgMSwgCi0gICAgMjEwLCAyMiwgMTI5LCAyMzYsIDI1MywgMSwgMjEwLCAyMSwgMTI5LCAyMzYsIDI1MywgMSwgMjA5LCAxODcsIDEyOSwgMjM2LCAKLSAgICAyNTMsIDEsIDIwOSwgMTg2LCAxMjksIDIzNiwgMjUzLCAxLCAxMzUsIDEyOSwgMjM2LCAyNTMsIDEsIDI0NCwgMjEyLCAxMjksIAotICAgIDIzNiwgMjUzLCAxNiwgMjA1LCAyMjQsIDEyOSwgMjM2LCAyNTMsIDE2LCAyMDUsIDIyMywgMTI5LCAxOTEsIDEsIDYzLCAKLSAgICAxMjksIDE5MSwgMSwgNzQsIDEyOSwgMTkxLCAxLCA3NSwgMTI5LCAxOTEsIDEsIDc4LCAxMjksIDE5MSwgMSwgMTk4LCAxMjksIAotICAgIDE5MSwgMSwgMjA0LCAxMTEsIDEyOSwgMTkxLCAxLCAyNDksIDMyLCAxMjksIDE5MSwgMSwgMTg1LCAxMjksIDE5MSwgMSwgCi0gICAgMTkyLCAxMjksIDE5MSwgMSwgMjAxLCAyMDEsIDEyOSwgMTkxLCAxLCAyMjIsIDI0MCwgMTI5LCAxOTEsIDEsIDIxNiwgMjIwLCAKLSAgICAxMjksIDE5MSwgMSwgMjI4LCAxMTMsIDEyOSwgMTkxLCAxLCAyMjksIDE0NCwgMTI5LCAxOTEsIDEsIDIzNywgMTIsIDEyOSwgCi0gICAgMTkxLCAxLCAyMTUsIDM2LCAxMjksIDE5MSwgMSwgMjUwLCAxMjYsIDIxNSwgMzYsIDEyOSwgMTkxLCAxLCAyMTQsIDE3NywgCi0gICAgMTI5LCAxOTEsIDEsIDE3MywgMTI5LCAxOTEsIDEsIDIxNywgMTI2LCAxMjksIDE5MSwgMSwgMjEwLCAyMiwgMTI5LCAxOTEsIAotICAgIDEsIDIwOSwgMTg3LCAxMjksIDE5MSwgMSwgMTM1LCAxMjksIDE5MSwgMSwgMjQ0LCAyMTIsIDEyOSwgMTkxLCAyMzksIDEzOCwgCi0gICAgMjQxLCAxMTMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDEyOSwgMTkxLCAyMjcsIDM2LCAKLSAgICAyMTUsIDIzMywgMTI5LCAxOTEsIDIyNywgMzYsIDIzMSwgNTYsIDEyOSwgMTkxLCA0MiwgMTA1LCAxMjksIDE5MSwgNDIsIAotICAgIDEwOCwgMTI5LCAxOTEsIDQyLCAxNDcsIDEyOSwgMTkxLCA0MiwgMTQ5LCAxMjksIDE5MSwgNDIsIDE3MCwgMTI5LCAxOTEsIAotICAgIDQyLCAxOTUsIDEyOSwgMTkxLCA0MiwgMjEzLCAxMTEsIDEyOSwgMTkxLCA0MiwgMTk5LCAxMjksIDE5MSwgNDIsIDIyMiwgCi0gICAgNjMsIDEyOSwgMTkxLCA0MiwgMjA5LCAxNTIsIDEyOSwgMTkxLCA0MiwgMjA3LCAxNTEsIDEyOSwgMTkxLCA0MiwgMjA5LCAKLSAgICA1MywgMTI5LCAxOTEsIDQyLCAyMzksIDE1MywgMTI5LCAxOTEsIDQyLCAyNDAsIDE4LCAxMjksIDE5MSwgNDIsIDIxMiwgNzQsIAotICAgIDEyOSwgMTkxLCA0MiwgMjEzLCAxMDUsIDEyOSwgMTkxLCA0MiwgMTE4LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDEyMCwgCi0gICAgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMjYsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIAotICAgIDEyOSwgMTkxLCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgMTI5LCAKLSAgICAxOTEsIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgMTI5LCAxOTEsIAotICAgIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDExOCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMjAsIDIwOSwgCi0gICAgMzYsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMTQ3LCAyMDksIDM2LCAxMjksIAotICAgIDE5MSwgNDIsIDIzOSwgMjMzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMiwgODgsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgCi0gICAgMjEzLCAxMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjIyLCAKLSAgICA2NCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDcsIDE1MiwgCi0gICAgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDksIDU0LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMTU0LCAyMDksIDM2LCAKLSAgICAxMjksIDE5MSwgNDIsIDI0MCwgMTksIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjEyLCA3NSwgMjA5LCAzNiwgMTI5LCAxOTEsIAotICAgIDQyLCAyMTMsIDEwNiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyNDEsIDEzNSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAKLSAgICAyMjIsIDU5LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDExOCwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMjAsIAotICAgIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgCi0gICAgMTQ3LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMjMzLCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIAotICAgIDE5MSwgNDIsIDIxMiwgODgsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTIsIDIwOSwgCi0gICAgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjIyLCA2NCwgMjM2LCAKLSAgICAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMTgsIDIwNywgMTU3LCAxMjksIDE5MSwgMjM5LCAxMzgsIDEyMCwgCi0gICAgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTI2LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMzksIAotICAgIDE0NywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjM5LCAyMzMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAKLSAgICAxMzgsIDIxMiwgODgsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIxMywgMTEyLCAyMDcsIDE1NiwgMTI5LCAxOTEsIAotICAgIDIzOSwgMTM4LCAyNDEsIDE0MywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjIyLCA2NCwgMjA3LCAxNTYsIDEyOSwgCi0gICAgMTkxLCAyMzksIDEzOCwgMjA5LCAxNTMsIDIwNywgMTU2LCAyMjksIDEzMSwgMSwgNjMsIDIyOSwgMTMxLCAyMiwgMiwgNzUsIAotICAgIDIyOSwgMTMxLCAyMiwgMiwgNjgsIDIyOSwgMTMxLCAyMiwgMiwgMTI1LCAxNDYsIDIyOSwgMTMxLCAyMiwgMiwgNzQsIDIyOSwgCi0gICAgMTMxLCAyMiwgMiwgNzgsIDIyOSwgMTMxLCAyMiwgMjI3LCAxOTYsIDgyLCAyMjksIDEzMSwgMiwgNTIsIDIxNSwgMjUzLCAKLSAgICA1NiwgMjI5LCAxMzEsIDIsIDI1MCwgMTgwLCAyMjksIDEzMSwgMiwgMjA1LCAxOTksIDIyOSwgMTMxLCAxLCAxNzMsIDIyOSwgCi0gICAgMTMxLCAxLCAyMjksIDE0NCwgMjI5LCAxMzEsIDEsIDIzOSwgOCwgMjI5LCAxMzEsIDEsIDIzOCwgMTE5LCAyMjksIDEzMSwgCi0gICAgMSwgMjQ3LCA5MiwgMjI5LCAxMzEsIDEsIDI0NiwgMTk5LCAyMjksIDEzMSwgMSwgMjMwLCAxODEsIDIyOSwgMTMxLCAxLCAKLSAgICAyMjEsIDExLCAyMjksIDEzMSwgMSwgMjA3LCAyNDEsIDIyOSwgMTMxLCAxLCAyMDcsIDIyOSwgMjI5LCAxMzEsIDEsIDI0NCwgCi0gICAgMTIwLCAyMjksIDEzMSwgMSwgMjQ0LCAxMDQsIDIyOSwgMTMxLCAxLCAyMjEsIDIyNywgMjI5LCAxMzEsIDEsIDIxMCwgMjIsIAotICAgIDIyOSwgMTMxLCAxLCAyMDksIDEwOCwgMjI5LCAxMzEsIDEsIDI0NCwgMjEyLCAyMjksIDEzMSwgMSwgMjQ0LCAxLCAyMjksIAotICAgIDEzMSwgMSwgMjAxLCAyMDEsIDIyOSwgMTMxLCAxLCAxODUsIDIyOSwgMTMxLCAxLCAyMTgsIDIwOCwgMjI5LCAxMzEsIDEsIAotICAgIDI0OSwgMzIsIDIyOSwgMTMxLCAxLCAyNDgsIDk4LCAyMjksIDEzMSwgMSwgMTkyLCAyMjksIDEzMSwgMSwgMTk4LCAyMjksIAotICAgIDEzMSwgMSwgMjE2LCAyMjAsIDIyOSwgMTMxLCAxLCAyMjgsIDExMywgMjI5LCAxMzEsIDEsIDIwNiwgODYsIDIyOSwgMTMxLCAKLSAgICAxLCAyMTMsIDkwLCAyMjksIDEzMSwgMSwgMjExLCAxNjQsIDIyOSwgMTMxLCAxLCAyMTUsIDM2LCAyMjksIDEzMSwgMSwgCi0gICAgMjAyLCAxMTYsIDIyOSwgMTMxLCAxLCAxNTIsIDIyOSwgMTMxLCAxLCAyMjksIDQ3LCAyMjksIDEzMSwgMSwgMjA3LCAyMDksIAotICAgIDIyOSwgMTMxLCAyLCAyNDgsIDIzMSwgNTUsIDIyOSwgMTMxLCAyLCAyNDcsIDEzLCAyMjksIDEzMSwgMiwgNzAsIDU2LCAKLSAgICAyMjksIDEzMSwgMjA1LCAyMDQsIDIyOSwgMTMxLCAxNywgMTA1LCAyMjksIDEzMSwgMTcsIDEwOCwgMjI5LCAxMzEsIDE3LCAKLSAgICAxNDcsIDIyOSwgMTMxLCAxNywgMTQ5LCAyMjksIDEzMSwgNDIsIDIwOSwgMTUyLCAyMjksIDEzMSwgNDIsIDIwNywgMTUxLCAKLSAgICAyMjksIDEzMSwgNDIsIDExOCwgMjM2LCAxMSwgMjI5LCAxMzEsIDQyLCAxMTgsIDIwOSwgMzYsIDIyOSwgMTMxLCAyMTcsIAotICAgIDE3OSwgMjQzLCA4NSwgMjI5LCAxMzEsIDIxNywgMTc5LCA1LCAyNDYsIDYxLCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NiwgCi0gICAgNjEsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjQ1LCAxMzksIDE0MiwgMjI5LCAxMzEsIDIxNywgMTc5LCAyMjUsIDExNiwgMjI5LCAKLSAgICAxMzEsIDIxNywgMTc5LCAyMjcsIDUsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjQ0LCAxNjYsIDIyOSwgMTMxLCAyMTcsIDE3OSwgCi0gICAgNTIsIDI0NCwgMTY2LCAyMjksIDEzMSwgMjE3LCAxNzksIDIyNywgMTA4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzcsIDY3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjgsIDE5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzcsIDE5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjQsIDI0NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjE3LCA2OSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA0LCA3MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjEyLCAyNTUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIxNiwgOTEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDI0OCwgMTA1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMDksIDIwMSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjE0LCAyMjUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIyOSwgMjUwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMjEsIDQwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjksIDEyNiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjE1LCAyNiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjE0LCAyNDksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDI0MCwgNjAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI1MSwgMzAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDI1MCwgMiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjQzLCAyNTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIzOCwgNjcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0NCwgMTc3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzgsIDEwNywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCAxMjgsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIwMiwgOTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0MywgMjUxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMDIsIDIzNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCA5NCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjA5LCA3MywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgNDIsIDEwNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgNDIsIAotICAgIDI0MCwgMTgsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDE0MSwgMjMxLCAzMSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzNywgCi0gICAgNDMsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMjgsIDI4LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM3LCAxNDgsIDM4LCAKLSAgICAxNTMsIDI1MCwgMTQxLCAxLCAyMjUsIDUsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMTcsIDExOSwgMzgsIDE1MywgMjUwLCAKLSAgICAxNDEsIDEsIDIwNCwgNzAsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE1LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgCi0gICAgMjE2LCAxMjIsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDgsIDEzOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgMTY5LCAKLSAgICAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNiwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzMCwgMjIsIDM4LCAxNTMsIAotICAgIDI1MCwgMTQxLCAxLCAyMjEsIDE3OCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIyOSwgMTQwLCAzOCwgMTUzLCAyNTAsIDE0MSwgCi0gICAgMSwgMjE1LCAyOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDAsIDQ3LCAKLSAgICAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjUxLCAzMCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI1MSwgNTksIDM4LCAxNTMsIAotICAgIDI1MCwgMTQxLCAxLCAyNDQsIDIwNywgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzOCwgMTgxLCAzOCwgMTUzLCAyNTAsIDE0MSwgCi0gICAgMSwgMjQ0LCAxODQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzgsIDExNCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgCi0gICAgMjUxLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjAyLCAxMDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDEwMCwgMzgsIAotICAgIDE1MywgMjUwLCAxNDEsIDEsIDIwMywgNDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDg4LCAzOCwgMTUzLCAyNTAsIAotICAgIDE0MSwgMSwgMjAyLCAxMTAsIDM4LCAxNTMsIDI1MCwgMTQxLCA0MiwgMTA1LCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDIwOSwgCi0gICAgMTUyLCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDIwNywgMTUxLCAyMjUsIDExNSwgMSwgMjUxLCAyOCwgMjI1LCAxMTUsIDEsIAotICAgIDI0OCwgMTA1LCAyMjUsIDExNSwgMSwgMjQ4LCA5MiwgMjI1LCAxMTUsIDEsIDIzOCwgNjcsIDIyNSwgMTE1LCAxLCAyMzgsIAotICAgIDkyLCAyMjUsIDExNSwgMSwgMjQ0LCAxNzcsIDIyNSwgMTE1LCAxLCAyMzcsIDY3LCAyMjUsIDExNSwgMSwgMjA0LCA3MCwgCi0gICAgMjI1LCAxMTUsIDIsIDIwNywgMjksIDIyNSwgMTE1LCAxLCAyMDIsIDk1LCAyMjUsIDExNSwgMSwgMjAyLCA3MywgMjI1LCAKLSAgICAxMTUsIDEsIDIzMCwgMTYzLCAyMjUsIDExNSwgMSwgMjMwLCAxNDUsIDIyNSwgMTE1LCAxLCAyMzcsIDE5LCAyMjUsIDExNSwgCi0gICAgMSwgMjA5LCAxMjgsIDIyNSwgMTE1LCAxLCAyMDIsIDIzNSwgMjI1LCAxMTUsIDEsIDIyOSwgMjUwLCAyMjUsIDExNSwgMSwgCi0gICAgMjAzLCAxNzksIDIyNSwgMTE1LCAxLCAyMjksIDEzMywgMjI1LCAxMTUsIDEsIDIyOCwgMTksIDIyNSwgMTE1LCAxLCAyNDMsIAotICAgIDI1MCwgMjI1LCAxMTUsIDEsIDIwOSwgOTksIDIyNSwgMTE1LCAxLCAyMjQsIDI0NywgMjI1LCAxMTUsIDEsIDIyMSwgNDAsIAotICAgIDIyNSwgMTE1LCAxLCAyMTQsIDI0OSwgMjI1LCAxMTUsIDEsIDI1MCwgMywgMjI1LCAxMTUsIDEsIDI1MSwgMjM0LCAyMjUsIAotICAgIDExNSwgMSwgMjE5LCAzNCwgMjI1LCAxMTUsIDEsIDI0MCwgNjAsIDIyNSwgMTE1LCAxLCAyMTUsIDI2LCAyMjUsIDExNSwgMSwgCi0gICAgMjE3LCA2OSwgMjI1LCAxMTUsIDEsIDIwMywgMTU3LCAyMjUsIDExNSwgMSwgMjE3LCA5NSwgMjI1LCAxMTUsIDEsIDIxNiwgCi0gICAgOTEsIDIyNSwgMTE1LCAxLCAyMTIsIDI1NSwgMjI1LCAxMTUsIDEsIDIxMSwgMTMzLCAyMjUsIDExNSwgMSwgMjA5LCAyMDEsIAotICAgIDIyNSwgMTE1LCAyNTEsIDE0NiwgMTMxLCA1NSwgMjI1LCAxMTUsIDI1MSwgMTQ2LCAxMzEsIDU2LCAyMjUsIDExNSwgNDIsIAotICAgIDEwNSwgMjI1LCAxMTUsIDQyLCAxNzAsIDIyNSwgMTE1LCA0MiwgMjA5LCAxNTIsIDIyNSwgMTE1LCA0MiwgMjA3LCAxNTEsIAotICAgIDIyNSwgMTE1LCA0MiwgMTE4LCAyMzYsIDExLCAyMjUsIDExNSwgMjE3LCAxNzksIDIxMSwgOTQsIDIyNSwgMTE1LCAyMTcsIAotICAgIDE3OSwgMjM5LCAyMTIsIDIyNSwgMTE1LCAyMTcsIDE3OSwgNTIsIDcwLCAyMDQsIDUsIDI0MywgODUsIDIyNSwgMTE1LCAKLSAgICAyMTcsIDE3OSwgNzAsIDIwNCwgNSwgMjQzLCA4NSwgMjI1LCAxMTUsIDIxNywgMTc5LCAyNDMsIDg1LCAyMjUsIDExNSwgCi0gICAgMjE3LCAxNzksIDEyMCwgMjQzLCA4MywgMjI1LCAxMTUsIDIxNywgMTc5LCAyMjcsIDExNSwgMjQwLCA3LCAyNTAsIDE0LCAxLCAKLSAgICA2MywgMjUwLCAxNCwgMSwgMjUyLCAyNSwgMjUwLCAxNCwgMSwgMjUwLCAxNzgsIDI1MCwgMTQsIDEsIDI1MSwgMjQwLCAyNTAsIAotICAgIDE0LCAxLCAyNTAsIDIzMSwgMjUwLCAxNCwgMSwgMjUxLCAyNDEsIDI1MCwgMTQsIDEsIDI1MSwgMTA5LCAyNTAsIDE0LCAxLCAKLSAgICAyNTEsIDEwNSwgMjUwLCAxNCwgMSwgNzQsIDI1MCwgMTQsIDEsIDI0MSwgMTYxLCAyNTAsIDE0LCAxLCA3OCwgMjUwLCAxNCwgCi0gICAgMSwgMjIwLCAxOCwgMjUwLCAxNCwgMSwgNzUsIDI1MCwgMTQsIDEsIDIzMSwgODMsIDI1MCwgMTQsIDEsIDY4LCAyNTAsIDE0LCAKLSAgICAxLCAyMDYsIDE3OCwgMjUwLCAxNCwgMSwgMjI5LCAyMDEsIDI1MCwgMTQsIDEsIDIwMywgMTc2LCAyNTAsIDE0LCAxLCAyMDMsIAotICAgIDEzOCwgMjUwLCAxNCwgMSwgMjAzLCAxNDgsIDI1MCwgMTQsIDEsIDIzOCwgMTkwLCAyNTAsIDE0LCAxLCAyMzgsIDE1MCwgCi0gICAgMjUwLCAxNCwgMSwgMjM4LCAxMDUsIDI1MCwgMTQsIDEsIDI0NiwgMjM4LCAyNTAsIDE0LCAxLCAyMzAsIDE2MSwgMjUwLCAKLSAgICAxNCwgMSwgMjA5LCAxODcsIDI1MCwgMTQsIDEsIDIwOSwgOTIsIDI1MCwgMTQsIDEsIDI0NCwgNzUsIDI1MCwgMTQsIDEsIAotICAgIDI0MywgMjQ4LCAyNTAsIDE0LCAxLCAyMDcsIDIzNiwgMjUwLCAxNCwgMSwgMjE5LCAzNCwgMjUwLCAxNCwgMSwgMjQwLCA2MCwgCi0gICAgMjUwLCAxNCwgMSwgMjQ4LCAxNjIsIDI1MCwgMTQsIDEsIDI0OCwgOTQsIDI1MCwgMTQsIDEsIDIyMiwgMTkwLCAyNTAsIDE0LCAKLSAgICAxLCAyMjIsIDEwNiwgMjUwLCAxNCwgMSwgMjIyLCAxMDcsIDI1MCwgMTQsIDEsIDIyMiwgMjQwLCAyNTAsIDE0LCAxLCAyMjEsIAotICAgIDEsIDI1MCwgMTQsIDEsIDIyMSwgMjIyLCAyNTAsIDE0LCAxLCAyMjUsIDIwLCAyNTAsIDE0LCAxLCAyMzYsIDE4NiwgMjUwLCAKLSAgICAxNCwgMSwgMjAyLCAxNjYsIDI1MCwgMTQsIDEsIDIwMywgNTIsIDI1MCwgMTQsIDEsIDIwNiwgNTUsIDI1MCwgMTQsIDEsIAotICAgIDIxNiwgMTU4LCAyNTAsIDE0LCAxLCAyMjcsIDIzNCwgMjUwLCAxNCwgMSwgMjE0LCAxNzcsIDI1MCwgMTQsIDEsIDIwMiwgCi0gICAgOTIsIDI1MCwgMTQsIDEsIDIxMywgNDMsIDI1MCwgMTQsIDEsIDIwMiwgNzEsIDI1MCwgMTQsIDEsIDIxMiwgMTY5LCAyNTAsIAotICAgIDE0LCAxLCAyMTEsIDEzNCwgMjUwLCAxNCwgMSwgMjM3LCA2NywgMjUwLCAxNCwgMjUxLCAxNDYsIDgyLCAyMDgsIDIxMywgCi0gICAgMTIwLCAxODcsIDExNSwgMTE4LCA3MCwgMjE3LCAxNzgsIDUsIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCAKLSAgICAyMjgsIDgsIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCAyMjgsIDgsIDExOCwgNzAsIDExNSwgMTIwLCAxODcsIAotICAgIDIxNywgMTc4LCAyMjgsIDgsIDEyMCwgMjE1LCAyNTAsIDExNSwgMTE4LCAyMTUsIDI1MywgMjE3LCAxNzgsIDIyOCwgOCwgCi0gICAgMTE4LCAyMTUsIDI1MywgMTE1LCAxMjAsIDIxNSwgMjUwLCAyMTcsIDE3OCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjUxLCAKLSAgICAyOCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjQ4LCAxMDUsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIzOCwgNjcsIDIzMSwgMTAsIAotICAgIDIxOSwgNzAsIDEsIDI0NCwgMTc3LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzcsIDY3LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAKLSAgICAyMDQsIDcwLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDIsIDk1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzcsIDE5LCAyMzEsIAotICAgIDEwLCAyMTksIDcwLCAxLCAyMDksIDEyOCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjAyLCAyMzUsIDIzMSwgMTAsIDIxOSwgCi0gICAgNzAsIDEsIDIyOSwgMjUwLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMjgsIDE5LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMjQsIAotICAgIDI0NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjIxLCA0MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE0LCAyNDksIDIzMSwgCi0gICAgMTAsIDIxOSwgNzAsIDEsIDI1MCwgMywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE5LCAzNCwgMjMxLCAxMCwgMjE5LCA3MCwgCi0gICAgMSwgMjE1LCAyNiwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE3LCA2OSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE2LCA5MSwgCi0gICAgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjEyLCAyNTUsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwOSwgMjAxLCAyMzEsIDEwLCAKLSAgICAyMTksIDcwLCA0MiwgMTA1LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTA4LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTQ3LCAKLSAgICAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTQ5LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMjA5LCAxNTIsIDIzMSwgMTAsIDIxOSwgCi0gICAgNzAsIDQyLCAyMDcsIDE1MSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDExOCwgMjM2LCAxMSwgMjMxLCAxMCwgMjE5LCA3MCwgCi0gICAgNDIsIDExOCwgMjA5LCAzNiwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDI1MSwgMjgsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAKLSAgICAyNDgsIDEwNSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzOCwgNjcsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyNDQsIDE3NywgCi0gICAgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzNywgNjcsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDQsIDY5LCAyMzEsIDEwLCAKLSAgICAyMTksIDE0OSwgMSwgMjAyLCA5NSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzNywgMTksIDIzMSwgMTAsIDIxOSwgMTQ5LCAKLSAgICAxLCAyMDksIDEyOCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwMiwgMjM1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI5LCAKLSAgICAyNTAsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMjgsIDE5LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI0LCAyNDYsIDIzMSwgCi0gICAgMTAsIDIxOSwgMTQ5LCAxLCAyMjEsIDQwLCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjE0LCAyNDksIDIzMSwgMTAsIDIxOSwgCi0gICAgMTQ5LCAxLCAyMTksIDM0LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjE1LCAyNiwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIAotICAgIDIxMiwgMjU1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjA5LCAyMDEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTA1LCAKLSAgICAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDEwOCwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxNDcsIDIzMSwgMTAsIDIxOSwgCi0gICAgMTQ5LCA0MiwgMTQ5LCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDIwOSwgMTUyLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIAotICAgIDIwNywgMTUxLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDExOCwgMjM2LCAxMSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAKLSAgICAxMTgsIDIwOSwgMzYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjUxLCAyOCwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNDgsIAotICAgIDEwNSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzgsIDY3LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI0NCwgMTc3LCAKLSAgICAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIzNywgNjcsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjA0LCA2OSwgMjE3LCAyMDMsIAotICAgIDIxOSwgMTQ5LCAxLCAyMDIsIDk1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIzNywgMTksIDIxNywgMjAzLCAyMTksIDE0OSwgCi0gICAgMSwgMjAyLCAyMzUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI5LCAyNTAsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI4LCAKLSAgICAxOSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjQsIDI0NiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjEsIDQwLCAyMTcsIAotICAgIDIwMywgMjE5LCAxNDksIDEsIDIxNCwgMjQ5LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIxOSwgMzQsIDIxNywgMjAzLCAKLSAgICAyMTksIDE0OSwgMSwgMjE1LCAyNiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMTIsIDI1NSwgMjE3LCAyMDMsIDIxOSwgCi0gICAgMTQ5LCAxLCAyMDksIDIwMSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMTQsIDE2OCwgODIsIDIxNywgMjAzLCAyMTksIDE0OSwgCi0gICAgMjA3LCAxNzQsIDIxNCwgMTY4LCA4MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMzksIDE0NywgMTg3LCAzLCAyNDUsIDEzMCwgCi0gICAgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMzksIDE0NywgMTg3LCAzLCAyNDMsIDg1LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAKLSAgICAxMDUsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDEwOCwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMTQ3LCAyMTcsIDIwMywgCi0gICAgMjE5LCAxNDksIDQyLCAxNDksIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDIwOSwgMTUyLCAyMTcsIDIwMywgMjE5LCAxNDksIAotICAgIDQyLCAyMDcsIDE1MSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMTE4LCAyMzYsIDExLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCA2MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCA2MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIAotICAgIDEwOSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgNzUsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNzUsIDM4LCAKLSAgICAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNzQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDc4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyMjAsIDczLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDIyMCwgNzMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMjMyLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMjMyLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEwOCwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDEwOCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDgxLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEwMywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDEwMywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMjIsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMjIsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMTA3LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDAsIDE4MSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDAsIDE4MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUwLCA4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MCwgOCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5MCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDkwLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDEwMSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDEwMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjIwLCA3MSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyMjAsIDcxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDM5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MSwgMzksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgMTAwLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDEwNiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MCwgMjMxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MSwgOTgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgNzAsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCA3MCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA4OSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDEsIDg5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDU2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgNTYsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUwLCAyMjMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgNzgsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA5NywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjQxLCA0NiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjIwLCA5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyMzUsIDE2NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCAxNjksIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCAxNjksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgMTQ4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MCwgMTQ4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyMzAsIDIyNiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyMzAsIDIyNiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjE5LCAyNDYsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjE5LCAyNDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgMTQ0LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MCwgMTQ0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTAsIDgxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk0LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTAsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgNzUsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgNywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNDEsIDcsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKLSAgICAyMzUsIDI1MCwgNDksIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUwLCA0OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgMjUxLCA5MSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDkxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCAyMTksIDIyNCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQ4LCAyMTUsIDM4LCAxNDUsIDYsIDEsIDYzLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNTIsIDI1LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE3MSwgMzgsIDE0NSwgNiwgMSwgMjUwLCAyNDIsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDg5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2NiwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjUsIDM4LCAxNDUsIDYsIDEsIDI1MCwgMjI2LCAzOCwgMTQ1LCA2LCAxLCA3NCwgMzgsIAotICAgIDE0NSwgNiwgMSwgMjQ2LCAxNywgNzQsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTYxLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1NCwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTUwLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAotICAgIDE0NywgMzgsIDE0NSwgNiwgMSwgNzUsIDM4LCAxNDUsIDYsIDEsIDIzMSwgODMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTMyLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEyOSwgMzgsIDE0NSwgNiwgMSwgMjUxLCA0NywgMzgsIDE0NSwgNiwgMSwgMjA2LCAyMzIsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTIyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEwNSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKLSAgICAxMDMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgOTIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNTYsIDM4LCAxNDUsIDYsIDEsIDc4LCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyMjAsIDE4LCAzOCwgMTQ1LCA2LCAxLCAyMjIsIDcxLCAyMjAsIDczLCAzOCwgMTQ1LCA2LCAxLCAKLSAgICAyMTUsIDE0MSwgMjIwLCA3MywgMzgsIDE0NSwgNiwgMSwgMjIwLCA3MiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA0NiwgMzgsIAotICAgIDE0NSwgNiwgMSwgMjQxLCA5NywgMzgsIDE0NSwgNiwgMSwgMjQxLCAyOCwgMzgsIDE0NSwgNiwgMSwgMjEyLCAyMjgsIDI0MSwgCi0gICAgMjgsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTcsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjUyLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIAotICAgIDI1MCwgMzgsIDE0NSwgNiwgMSwgMjQxLCA3MCwgMzgsIDE0NSwgNiwgMSwgMjQwLCAyMzksIDM4LCAxNDUsIDYsIDEsIDI0MSwgCi0gICAgMTY3LCAzOCwgMTQ1LCA2LCAxLCA2OCwgMzgsIDE0NSwgNiwgMSwgMjA2LCAxNzgsIDM4LCAxNDUsIDYsIDEsIDIyMiwgNzEsIAotICAgIDIwNywgMjQsIDM4LCAxNDUsIDYsIDEsIDIxNSwgMTQxLCAyMDcsIDI0LCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDIyNiwgMzgsIAotICAgIDE0NSwgNiwgMSwgMjQwLCAxODEsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMTc2LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDY5LCA1NCwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjA2LCAxOTMsIDM4LCAxNDUsIDUsIDEsIDYzLCAzOCwgMTQ1LCA1LCAxLCAyNTIsIDI1LCAzOCwgCi0gICAgMTQ1LCA1LCAxLCAyNDEsIDE3MSwgMzgsIDE0NSwgNSwgMSwgMjUwLCAyNDIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY5LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDg5LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjUsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI1MCwgMjI2LCAzOCwgMTQ1LCA1LCAxLCA3NCwgMzgsIDE0NSwgNSwgMSwgMjQ2LCAxNywgNzQsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTYxLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE1NCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAKLSAgICAxNTMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTUwLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE0NywgMzgsIDE0NSwgNSwgMSwgNzUsIAotICAgIDM4LCAxNDUsIDUsIDEsIDIzMSwgODMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTMyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEyOSwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjUxLCA0NywgMzgsIDE0NSwgNSwgMSwgMjA2LCAyMzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTIyLCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEwNSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMDMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgOTIsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgNTYsIDM4LCAxNDUsIDUsIDEsIDc4LCAzOCwgMTQ1LCA1LCAxLCAyMjAsIDE4LCAzOCwgCi0gICAgMTQ1LCA1LCAxLCAyMjIsIDcxLCAyMjAsIDczLCAzOCwgMTQ1LCA1LCAxLCAyMTUsIDE0MSwgMjIwLCA3MywgMzgsIDE0NSwgCi0gICAgNSwgMSwgMjIwLCA3MiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA0NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA5NywgMzgsIDE0NSwgCi0gICAgNSwgMSwgMjQxLCAyOCwgMzgsIDE0NSwgNSwgMSwgMjEyLCAyMjgsIDI0MSwgMjgsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTcsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjUyLCAzOCwgMTQ1LCA1LCAxLCAyNDAsIDI1MCwgMzgsIDE0NSwgNSwgMSwgMjQxLCA3MCwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQwLCAyMzksIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY3LCAzOCwgMTQ1LCA1LCAxLCA2OCwgMzgsIAotICAgIDE0NSwgNSwgMSwgMjA2LCAxNzgsIDM4LCAxNDUsIDUsIDEsIDIyMiwgNzEsIDIwNywgMjQsIDM4LCAxNDUsIDUsIDEsIDIxNSwgCi0gICAgMTQxLCAyMDcsIDI0LCAzOCwgMTQ1LCA1LCAxLCAyNDAsIDIyNiwgMzgsIDE0NSwgNSwgMSwgMjQwLCAxODEsIDM4LCAxNDUsIAotICAgIDUsIDEsIDI0MCwgMTc2LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDY5LCA1NCwgMzgsIDE0NSwgNSwgMSwgMjA2LCAxOTMsIDM4LCAKLSAgICAxNDUsIDQyLCAxMDUsIDM4LCAxNDUsIDQyLCAxNzAsIDM4LCAxNDUsIDQyLCAyMDksIDE1MiwgMzgsIDE0NSwgNDIsIDI0MCwgCi0gICAgMTgsIDM4LCAxNDUsIDQyLCAxMTgsIDIzNiwgMTEsIDM4LCAxNDUsIDQyLCAxMTgsIDIwOSwgMzYsIDIxNSwgMTI5LCAxNywgCi0gICAgMTA1LCAyMTUsIDEyOSwgMTcsIDEwOCwgMjE1LCAxMjksIDE3LCAxNDcsIDIxNSwgMTI5LCAxNywgMTQ5LCAyMTUsIDEyOSwgCi0gICAgMTcsIDE3MCwgMjE1LCAxMjksIDE3LCAxOTUsIDIxNSwgMTI5LCAxNywgMjEzLCAxMTEsIDIxNSwgMTI5LCAxNywgMTk5LCAKLSAgICAyMTUsIDEyOSwgMTcsIDIyMiwgNjMsIDIxNSwgMTI5LCA0MiwgMjA5LCAxNTIsIDIxNSwgMTI5LCA0MiwgMjA3LCAxNTEsIAotICAgIDIxNSwgMTI5LCA0MiwgMjA5LCA1MywgMjE1LCAxMjksIDQyLCAyMzksIDE1MywgMjE1LCAxMjksIDQyLCAyNDAsIDE4LCAKLSAgICAyMTUsIDEyOSwgNDIsIDIxMiwgNzQsIDIxNSwgMTI5LCA0MiwgMjEzLCAxMDUsIDIxNSwgMTI5LCA0MiwgMjQxLCAxMzQsIAotICAgIDIxNSwgMTI5LCA0MiwgMjIyLCA1OCwgMjE1LCAxMjksIDQyLCAxMTgsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMTIwLCAKLSAgICAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDEyNiwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyMzksIDE0NywgMjM2LCAxMSwgCi0gICAgMjE1LCAxMjksIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyMTIsIDg4LCAyMzYsIDExLCAyMTUsIAotICAgIDEyOSwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDI0MSwgMTQzLCAyMzYsIDExLCAyMTUsIDEyOSwgCi0gICAgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDIxNSwgMTI5LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMjE1LCAxMjksIDIzOSwgCi0gICAgMTM4LCAxMTgsIDIxNywgNTUsIDIxNSwgMTI5LCAyMzksIDEzOCwgMTE4LCAyMDksIDYwLCAyMTUsIDEyOSwgMjM5LCAxMzgsIAotICAgIDEyMCwgMjA5LCA1NywgMTQ0LCAyLCAyNDcsIDUyLCAxNDQsIDIsIDI1MCwgMTgwLCAxNDQsIDIsIDIwNSwgMTk5LCAxNDQsIAotICAgIDIsIDIzMCwgMTM1LCAxNDQsIDIsIDIwNiwgMjIyLCAxNDQsIDEsIDYzLCAxNDQsIDEsIDI1MiwgMjUsIDE0NCwgMSwgNzUsIAotICAgIDE0NCwgMSwgMjMxLCA4MywgMTQ0LCAxLCA2OCwgMTQ0LCAxLCAyMDYsIDE3OCwgMTQ0LCAxLCAxMjUsIDE0NiwgMTQ0LCAxLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAxNDQsIDEsIDEyNSwgMTU5LCAxNDQsIDEsIDEyNSwgMjI3LCA3OCwgMTQ0LCAxLCA3NCwgMTQ0LCAKLSAgICAxLCAyNTEsIDY0LCAxNDQsIDEsIDc4LCAxNDQsIDEsIDI1MCwgMzQsIDE0NCwgMSwgMTczLCAxNDQsIDEsIDIyOSwgMTQ0LCAKLSAgICAxNDQsIDEsIDIzOSwgOCwgMTQ0LCAxLCAyMzgsIDExOSwgMTQ0LCAxLCAyMjIsIDIwMywgMTQ0LCAxLCAyNDcsIDkyLCAxNDQsIAotICAgIDEsIDI0NiwgMTk5LCAxNDQsIDEsIDIzMCwgMTgxLCAxNDQsIDEsIDIzMCwgMTQ5LCAxNDQsIDEsIDIyMSwgMTEsIDE0NCwgMSwgCi0gICAgMjA3LCAyNDEsIDE0NCwgMSwgMjA3LCAyMjksIDE0NCwgMSwgMjQ0LCAxMjAsIDE0NCwgMSwgMjQ0LCAxMDQsIDE0NCwgMSwgCi0gICAgMjIxLCAyMjcsIDE0NCwgMSwgMjEwLCAyMiwgMTQ0LCAxLCAyMDksIDEwOCwgMTQ0LCAxLCAyNDQsIDIxMiwgMTQ0LCAxLCAKLSAgICAyNDQsIDEsIDE0NCwgMSwgMjAxLCAyMDEsIDE0NCwgMSwgMTg1LCAxNDQsIDEsIDIxOCwgMjA4LCAxNDQsIDEsIDI0OSwgMzIsIAotICAgIDE0NCwgMSwgMjQ4LCA5OCwgMTQ0LCAxLCAxOTIsIDE0NCwgMSwgMTk4LCAxNDQsIDEsIDIxNiwgMjIwLCAxNDQsIDEsIDIyOCwgCi0gICAgMTEzLCAxNDQsIDEsIDIwNiwgODYsIDE0NCwgMSwgMjEzLCA5MCwgMTQ0LCAxLCAyMTEsIDE2NCwgMTQ0LCAxLCAyMTUsIDM2LCAKLSAgICAxNDQsIDEsIDE1MiwgMTQ0LCAxLCAyMjcsIDc3LCAxNDQsIDEsIDM4LCA0NCwgMjI3LCA2OCwgMTQ0LCAxLCAzOCwgNDQsIAotICAgIDIxNSwgMTg1LCAxNDQsIDEsIDM4LCA0NCwgMjIxLCAyMDksIDE0NCwgMjIsIDIsIDI1MiwgMjUsIDE0NCwgMjIsIDIsIDI0OCwgCi0gICAgOTUsIDI1MiwgMjUsIDE0NCwgMjIsIDIsIDc1LCAxNDQsIDIyLCAyLCAyMzEsIDgzLCAxNDQsIDIyLCAyLCA2OCwgMTQ0LCAKLSAgICAyMiwgMiwgMjA2LCAxNzgsIDE0NCwgMjIsIDIsIDEyNSwgMTQ2LCAxNDQsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNDQsIAotICAgIDIyLCAyLCAxMjUsIDE1OSwgMTQ0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNDQsIDIyLCAyLCA3NCwgMTQ0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMTQ0LCAyMiwgMiwgNzgsIDE0NCwgMjIsIDIsIDI1MCwgMzQsIDE0NCwgMjA1LCAyMDQsIDE0NCwgMjQ0LCAKLSAgICAxNjYsIDE0NCwgNTIsIDI0NCwgMTY2LCAxNDQsIDIxNywgMTc5LCAyNDMsIDg1LCAxNDQsIDIxNywgMTc5LCA1MiwgMjQzLCAKLSAgICA4NSwgMTQ0LCAyMTcsIDE3OSwgMjI3LCAxMTQsIDE0NCwgMjE3LCAxNzksIDI0NSwgMTM5LCAxNDIsIDE0NCwgMjE3LCAxNzksIAotICAgIDIyNywgNSwgMTQ0LCA0MiwgMTA1LCAxNDQsIDQyLCAxMDgsIDE0NCwgNDIsIDE0NywgMTQ0LCA0MiwgMTQ5LCAxNDQsIDQyLCAKLSAgICAxNzAsIDE0NCwgNDIsIDE5NSwgMTQ0LCA0MiwgMjEzLCAxMTEsIDE0NCwgNDIsIDE5OSwgMTQ0LCA0MiwgMjIyLCA2MywgCi0gICAgMTQ0LCA0MiwgMjA5LCAxNTIsIDE0NCwgNDIsIDIwNywgMTUxLCAxNDQsIDQyLCAyMDksIDUzLCAxNDQsIDQyLCAyMzksIAotICAgIDE1MywgMTQ0LCA0MiwgMjQwLCAxOCwgMTQ0LCA0MiwgMjEyLCA3NCwgMTQ0LCA0MiwgMjEzLCAxMDUsIDE0NCwgNDIsIDI0MSwgCi0gICAgMTM0LCAxNDQsIDQyLCAyMjIsIDU4LCAxNDQsIDQyLCAxMTgsIDIzNiwgMTEsIDE0NCwgNDIsIDExOCwgMjA5LCAzNiwgMTQ0LCAKLSAgICAxNywgMjAyLCA4NCwgMTQ0LCAxNywgMTA1LCAxNDQsIDE3LCAxMDgsIDE0NCwgMTcsIDE0NywgMTQ0LCAxNywgMTQ5LCAxNDQsIAotICAgIDE3LCAxNzAsIDE0NCwgMTcsIDE5NSwgMTQ0LCAxNywgMjEzLCAxMTEsIDE0NCwgMTcsIDE5OSwgMTQ0LCAxNywgMjIyLCA2MywgCi0gICAgMTQ0LCA0MiwgMjMwLCA5NiwgMjMwLCAxNSwgMiwgMjQ3LCA1MiwgMjMwLCAxNSwgMiwgMjUwLCAxODAsIDIzMCwgMTUsIDIsIAotICAgIDIwNSwgMTk5LCAyMzAsIDE1LCAxLCA2MywgMjMwLCAxNSwgMSwgMjUyLCAyNSwgMjMwLCAxNSwgMSwgNzUsIDIzMCwgMTUsIAotICAgIDEsIDIzMSwgODMsIDIzMCwgMTUsIDEsIDY4LCAyMzAsIDE1LCAxLCAyMDYsIDE3OCwgMjMwLCAxNSwgMSwgNzQsIDIzMCwgCi0gICAgMTUsIDEsIDI1MSwgNjQsIDIzMCwgMTUsIDEsIDc4LCAyMzAsIDE1LCAxLCAyNTAsIDM0LCAyMzAsIDE1LCAxLCAxNzMsIAotICAgIDIzMCwgMTUsIDEsIDIyOSwgMTQ0LCAyMzAsIDE1LCAxLCAyMzksIDgsIDIzMCwgMTUsIDEsIDIzOCwgMTE5LCAyMzAsIDE1LCAKLSAgICAxLCAyMjIsIDIwMywgMjMwLCAxNSwgMSwgMjQ3LCA5MiwgMjMwLCAxNSwgMSwgMjQ2LCAxOTksIDIzMCwgMTUsIDEsIDIzMCwgCi0gICAgMTgxLCAyMzAsIDE1LCAxLCAyMzAsIDE0OSwgMjMwLCAxNSwgMSwgMjIxLCAxMSwgMjMwLCAxNSwgMSwgMjA3LCAyNDEsIAotICAgIDIzMCwgMTUsIDEsIDIwNywgMjI5LCAyMzAsIDE1LCAxLCAyNDQsIDEyMCwgMjMwLCAxNSwgMSwgMjQ0LCAxMDksIDIzMCwgCi0gICAgMTUsIDEsIDI0NCwgMTA0LCAyMzAsIDE1LCAxLCAyMTYsIDYxLCAyMzAsIDE1LCAxLCAyMjEsIDIyNywgMjMwLCAxNSwgMSwgCi0gICAgMjEwLCAyMiwgMjMwLCAxNSwgMSwgMjA5LCAxMDgsIDIzMCwgMTUsIDEsIDI0NCwgMjEyLCAyMzAsIDE1LCAxLCAyNDQsIDEsIAotICAgIDIzMCwgMTUsIDEsIDIwMSwgMjAxLCAyMzAsIDE1LCAxLCAxODUsIDIzMCwgMTUsIDEsIDIxOCwgMjA4LCAyMzAsIDE1LCAxLCAKLSAgICAyNDksIDMyLCAyMzAsIDE1LCAxLCAyNDgsIDk4LCAyMzAsIDE1LCAxLCAxOTIsIDIzMCwgMTUsIDEsIDE5OCwgMjMwLCAxNSwgCi0gICAgMSwgMjE2LCAyMjAsIDIzMCwgMTUsIDEsIDIyOCwgMTEzLCAyMzAsIDE1LCAxLCAyMDYsIDg2LCAyMzAsIDE1LCAxLCAyMTMsIAotICAgIDkwLCAyMzAsIDE1LCAxLCAyMTEsIDE2NCwgMjMwLCAxNSwgMSwgMjE1LCAzNiwgMjMwLCAxNSwgMSwgMTUyLCAyMzAsIDE1LCAKLSAgICAyMiwgMiwgMjUyLCAyNSwgMjMwLCAxNSwgMjIsIDIsIDc1LCAyMzAsIDE1LCAyMiwgMiwgMjMxLCA4MywgMjMwLCAxNSwgMjIsIAotICAgIDIsIDY4LCAyMzAsIDE1LCAyMiwgMiwgMjA2LCAxNzgsIDIzMCwgMTUsIDIyLCAyLCA3NCwgMjMwLCAxNSwgMjIsIDIsIDI1MSwgCi0gICAgNjQsIDIzMCwgMTUsIDIyLCAyLCA3OCwgMjMwLCAxNSwgMjIsIDIsIDI1MCwgMzQsIDIzMCwgMTUsIDIsIDIwNSwgMjA0LCAKLSAgICAyMzAsIDE1LCAyLCAyMjEsIDUxLCAyMzAsIDE1LCAyNTEsIDE0NiwgNTQsIDIzMCwgMTUsIDI0MSwgNTksIDU0LCAyMzAsIAotICAgIDE1LCA0MiwgNTQsIDIzMCwgMTUsIDIxNCwgMTY4LCA4MiwgMjMwLCAxNSwgNTIsIDIxNCwgMTY4LCA4MiwgMjMwLCAxNSwgCi0gICAgMjQ0LCAxNjYsIDIzMCwgMTUsIDUyLCAyNDQsIDE2NiwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTUsIDE5LCAyMTEsIAotICAgIDI0NiwgMjExLCAyNTQsIDEsIDIwOSwgMjUxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI0OSwgNSwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxLCAyNDcsIDgxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI0NCwgMTkzLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIAotICAgIDIzOCwgMjQ5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyNSwgMTQ4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMiwgCi0gICAgMjAwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyOCwgODksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIzLCA5MywgMjExLCAKLSAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDYsIDgyLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxOSwgMTUwLCAyMTEsIDI0NiwgCi0gICAgMjExLCAyNTQsIDEsIDIwMywgOTEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE2LCAxOTksIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMSwgMjM3LCAxNDgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjMwLCAyMCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAKLSAgICAyMzAsIDE3NSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjEsIDgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjUxLCA3MywgCi0gICAgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDEsIDE1OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMzEsIDg0LCAyMTEsIAotICAgIDI0NiwgMjExLCAyNTQsIDEsIDIwNywgMTgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIwLCA2MCwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxLCAyNDEsIDE0NywgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjUsIDE2MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAKLSAgICAxNywgMjAyLCA4NCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTA1LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxMDgsIAotICAgIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE0NywgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTQ5LCAyMTEsIDI0NiwgMjExLCAKLSAgICAyNTQsIDE3LCAxNzAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE5NSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMjEzLCAKLSAgICAxMTEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE5OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMjIyLCA2MywgMjQ2LCAKLSAgICAxOTMsIDIsIDI0NywgNTIsIDI0NiwgMTkzLCAyLCAyNTAsIDE4MCwgMjQ2LCAxOTMsIDIsIDIwNSwgMTk5LCAyNDYsIDE5MywgCi0gICAgMSwgMjUyLCAyNSwgMjQ2LCAxOTMsIDEsIDc1LCAyNDYsIDE5MywgMSwgNjgsIDI0NiwgMTkzLCAxLCA3NCwgMjQ2LCAxOTMsIAotICAgIDEsIDIzMCwgNDEsIDI0NiwgMTkzLCAxLCAyMjksIDE0MywgMjQ2LCAxOTMsIDEsIDIzOSwgNSwgMjQ2LCAxOTMsIDEsIDIzOCwgCi0gICAgMTE4LCAyNDYsIDE5MywgMSwgMjIyLCAyMDIsIDI0NiwgMTkzLCAxLCAyNDcsIDkxLCAyNDYsIDE5MywgMSwgMjQ2LCAxOTgsIAotICAgIDI0NiwgMTkzLCAxLCAyMzAsIDE4MCwgMjQ2LCAxOTMsIDEsIDIzMCwgMTQ4LCAyNDYsIDE5MywgMSwgMjIxLCAxMCwgMjQ2LCAKLSAgICAxOTMsIDEsIDIwNywgMjQwLCAyNDYsIDE5MywgMSwgMjA3LCAyMjgsIDI0NiwgMTkzLCAxLCAyNDQsIDExOSwgMjQ2LCAxOTMsIAotICAgIDEsIDI0NCwgMTAzLCAyNDYsIDE5MywgMSwgMjIxLCAyMjYsIDI0NiwgMTkzLCAxLCAyMTAsIDE4LCAyNDYsIDE5MywgMSwgCi0gICAgMjA5LCAxMDcsIDI0NiwgMTkzLCAxLCAyNDQsIDIxMSwgMjQ2LCAxOTMsIDEsIDI0NCwgMCwgMjQ2LCAxOTMsIDEsIDIyMywgCi0gICAgMTA2LCAyNDYsIDE5MywgMSwgMjE5LCAxNjgsIDI0NiwgMTkzLCAxLCAyMTgsIDIwNywgMjQ2LCAxOTMsIDEsIDI0OSwgMzAsIAotICAgIDI0NiwgMTkzLCAxLCAyNDgsIDk3LCAyNDYsIDE5MywgMSwgMjI1LCAxNzUsIDI0NiwgMTkzLCAxLCAyMDIsIDE2NywgMjQ2LCAKLSAgICAxOTMsIDEsIDIwMywgMTEwLCAyNDYsIDE5MywgMSwgMjE2LCAyMTYsIDI0NiwgMTkzLCAxLCAyMjgsIDExMiwgMjQ2LCAxOTMsIAotICAgIDEsIDIwNCwgMTEwLCAyNDYsIDE5MywgMSwgMjE1LCAzMywgMjQ2LCAxOTMsIDEsIDIzNywgMTU3LCAyNDYsIDE5MywgMjIsIAotICAgIDIsIDYzLCAyNDYsIDE5MywgMjIsIDIsIDc1LCAyNDYsIDE5MywgMjIsIDIsIDIzMSwgODMsIDI0NiwgMTkzLCAyMiwgMiwgCi0gICAgNjgsIDI0NiwgMTkzLCAyMiwgMiwgMjA2LCAxNzgsIDI0NiwgMTkzLCAyMiwgMiwgNzQsIDI0NiwgMTkzLCAyMiwgMiwgMjUxLCAKLSAgICA2NCwgMjQ2LCAxOTMsIDIyLCAyLCA3OCwgMjQ2LCAxOTMsIDIyLCAyLCAyNTAsIDM0LCAyNDYsIDE5MywgMjIsIDIsIDIyMCwgCi0gICAgNTcsIDI0NiwgMTkzLCAxNTgsIDgyLCAyNDYsIDE5MywgMjUwLCAzNSwgODIsIDI0NiwgMTkzLCAyMDUsIDIwNCwgMjQ2LCAKLSAgICAxOTMsIDIyNSwgMTczLCAyNDYsIDE5MywgMTcsIDIwMiwgODQsIDI0NiwgMTkzLCAxNywgMTA1LCAyNDYsIDE5MywgMTcsIAotICAgIDEwOCwgMjQ2LCAxOTMsIDE3LCAxNDcsIDI0NiwgMTkzLCAxNywgMTQ5LCAyNDYsIDE5MywgMTcsIDE3MCwgMjQ2LCAxOTMsIAotICAgIDE3LCAxOTUsIDI0NiwgMTkzLCAxNywgMjEzLCAxMTEsIDI0NiwgMTkzLCAxNywgMTk5LCAyNDYsIDE5MywgMTcsIDIyMiwgCi0gICAgNjMsIDI0NiwgMTkzLCAyMTQsIDE2OCwgODIsIDI0NiwgMTkzLCAyNDQsIDE2NiwgMjQ2LCAxOTMsIDUyLCAyNDQsIDE2NiwgCi0gICAgMjQ2LCAxOTMsIDIxNywgNDcsIDgyLCAyMjUsIDE0NiwgMSwgNjMsIDIyNSwgMTQ2LCAxLCA3NSwgMjI1LCAxNDYsIDEsIDY4LCAKLSAgICAyMjUsIDE0NiwgMSwgNzQsIDIyNSwgMTQ2LCAxLCA3OCwgMjI1LCAxNDYsIDEsIDE3MywgMjI1LCAxNDYsIDEsIDIyOSwgCi0gICAgMTQ0LCAyMjUsIDE0NiwgMSwgMjM5LCA4LCAyMjUsIDE0NiwgMSwgMjM4LCAxMTksIDIyNSwgMTQ2LCAxLCAyNDcsIDkyLCAKLSAgICAyMjUsIDE0NiwgMSwgMjQ2LCAxOTksIDIyNSwgMTQ2LCAxLCAyMzAsIDE4MSwgMjI1LCAxNDYsIDEsIDIzMCwgMTQ5LCAyMjUsIAotICAgIDE0NiwgMSwgMjIxLCAxMSwgMjI1LCAxNDYsIDEsIDIwNywgMjQxLCAyMjUsIDE0NiwgMSwgMjA3LCAyMjksIDIyNSwgMTQ2LCAKLSAgICAxLCAyNDQsIDEyMCwgMjI1LCAxNDYsIDEsIDI0NCwgMTA0LCAyMjUsIDE0NiwgMSwgMjIxLCAyMjcsIDIyNSwgMTQ2LCAxLCAKLSAgICAyMTAsIDIyLCAyMjUsIDE0NiwgMSwgMjA5LCAxMDgsIDIyNSwgMTQ2LCAxLCAyNDQsIDIxMiwgMjI1LCAxNDYsIDEsIDI0NCwgCi0gICAgMSwgMjI1LCAxNDYsIDEsIDIwMSwgMjAxLCAyMjUsIDE0NiwgMSwgMTg1LCAyMjUsIDE0NiwgMSwgMjE4LCAyMDgsIDIyNSwgCi0gICAgMTQ2LCAxLCAyNDksIDMyLCAyMjUsIDE0NiwgMSwgMjQ4LCA5OCwgMjI1LCAxNDYsIDEsIDE5MiwgMjI1LCAxNDYsIDEsIAotICAgIDIxNiwgMjIwLCAyMjUsIDE0NiwgMSwgMjI4LCAxMTMsIDIyNSwgMTQ2LCAxLCAyMDYsIDg2LCAyMjUsIDE0NiwgMSwgMjE1LCAKLSAgICAzNiwgMjI1LCAxNDYsIDEsIDE1MiwgMjI1LCAxNDYsIDEsIDIxNSwgMTg1LCAyMjUsIDE0NiwgMiwgMjIxLCA1MSwgMjI1LCAKLSAgICAxNDYsIDI1MSwgMTQ2LCA1NCwgMjI1LCAxNDYsIDIxNCwgMTY4LCA4MiwgMjI1LCAxNDYsIDMyLCAyMTIsIDIwNiwgMTgxLCAKLSAgICAyLCAyNDcsIDUyLCAxODEsIDIsIDI1MCwgMTgwLCAxODEsIDIsIDIwNSwgMTk5LCAxODEsIDEsIDYzLCAxODEsIDEsIDI1MiwgCi0gICAgMjUsIDE4MSwgMSwgNzUsIDE4MSwgMSwgMjMxLCA4MywgMTgxLCAxLCA2OCwgMTgxLCAxLCAyMDYsIDE3OCwgMTgxLCAxLCAKLSAgICAxMjUsIDE0NiwgMTgxLCAxLCAxMjUsIDIxNSwgMTg2LCAxODEsIDEsIDEyNSwgMTU5LCAxODEsIDEsIDEyNSwgMjI3LCA3OCwgCi0gICAgMTgxLCAxLCA3NCwgMTgxLCAxLCAyNTEsIDY0LCAxODEsIDEsIDc4LCAxODEsIDEsIDI1MCwgMzQsIDE4MSwgMSwgMTczLCAKLSAgICAxODEsIDEsIDIyOSwgMTQ0LCAxODEsIDEsIDIzOSwgOCwgMTgxLCAxLCAyMzgsIDExOSwgMTgxLCAxLCAyMjIsIDIwMywgCi0gICAgMTgxLCAxLCAyNDcsIDkyLCAxODEsIDEsIDI0NiwgMTk5LCAxODEsIDEsIDIzMCwgMTgxLCAxODEsIDEsIDIzMCwgMTQ5LCAKLSAgICAxODEsIDEsIDIyMSwgMTEsIDE4MSwgMSwgMjA3LCAyNDEsIDE4MSwgMSwgMjA3LCAyMjksIDE4MSwgMSwgMjQ0LCAxMjAsIAotICAgIDE4MSwgMSwgMjQ0LCAxMDQsIDE4MSwgMSwgMjIxLCAyMjcsIDE4MSwgMSwgMjEwLCAyMiwgMTgxLCAxLCAyMDksIDEwOCwgCi0gICAgMTgxLCAxLCAyNDQsIDIxMiwgMTgxLCAxLCAyNDQsIDEsIDE4MSwgMSwgMjAxLCAyMDEsIDE4MSwgMSwgMTg1LCAxODEsIDEsIAotICAgIDIxOCwgMjA4LCAxODEsIDEsIDI0OSwgMzIsIDE4MSwgMSwgMjQ4LCA5OCwgMTgxLCAxLCAxOTIsIDE4MSwgMSwgMTk4LCAKLSAgICAxODEsIDEsIDIxNiwgMjIwLCAxODEsIDEsIDIyOCwgMTEzLCAxODEsIDEsIDIyNywgNzcsIDE4MSwgMSwgMjA2LCA4NiwgCi0gICAgMTgxLCAxLCAyMTMsIDkwLCAxODEsIDEsIDIxMSwgMTY0LCAxODEsIDEsIDIxNSwgMzYsIDE4MSwgMSwgMTUyLCAxODEsIDIyLCAKLSAgICAyLCAyNTIsIDI1LCAxODEsIDIyLCAyLCA3NSwgMTgxLCAyMiwgMiwgMjMxLCA4MywgMTgxLCAyMiwgMiwgNjgsIDE4MSwgMjIsIAotICAgIDIsIDIwNiwgMTc4LCAxODEsIDIyLCAyLCAxMjUsIDE0NiwgMTgxLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTgxLCAyMiwgMiwgCi0gICAgMTI1LCAxNTksIDE4MSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTgxLCAyMiwgMiwgNzQsIDE4MSwgMjIsIDIsIDI1MSwgNjQsIAotICAgIDE4MSwgMjIsIDIsIDc4LCAxODEsIDIyLCAyLCAyNTAsIDM0LCAxODEsIDIsIDIwNSwgMjA0LCAxODEsIDIsIDI1MCwgMTcsIAotICAgIDE4MSwgMiwgMjMwLCAxMzUsIDE4MSwgMiwgMjA2LCAyMjIsIDE4MSwgMjIwLCAzOSwgMTgxLCAyNDQsIDE2NiwgMTgxLCA1MiwgCi0gICAgMjQ0LCAxNjYsIDE4MSwgMjUxLCAxNDYsIDU0LCAxODEsIDIxMywgMTMwLCAxODEsIDIxNCwgMjM5LCA4MiwgMTgxLCAyLCAKLSAgICAyMjEsIDUxLCAxODEsIDIyLCA2NSwgODIsIDE4MSwgMjQwLCAxOTksIDIxMiwgMjI4LCAyMiwgODIsIDE4MSwgMjEwLCAxODAsIAotICAgIDgyLCAxODEsIDE3LCAyMDIsIDg0LCAxODEsIDE3LCAxMDUsIDE4MSwgMTcsIDEwOCwgMTgxLCAxNywgMTQ3LCAxODEsIDE3LCAKLSAgICAxNDksIDE4MSwgMTcsIDE3MCwgMTgxLCAxNywgMTk1LCAxODEsIDE3LCAyMTMsIDExMSwgMTgxLCAxNywgMTk5LCAxODEsIAotICAgIDE3LCAyMjIsIDYzLCAxODEsIDI0MSwgMTI4LCAxODEsIDIsIDIxMiwgMTU3LCAxODEsIDIzNywgNTgsIDE4MSwgMjQ1LCAKLSAgICAxOTEsIDU0LCAxODEsIDIxNCwgMTY4LCAyMjUsIDkyLCAxODEsIDIxNCwgMTY4LCAyMjUsIDkxLCAxNDAsIDI1MCwgMTI2LCAKLSAgICAxNywgMTA1LCAxNDAsIDI1MCwgMTI2LCAxNywgMTA4LCAxNDAsIDI1MCwgMTI2LCAxNywgMTQ3LCAxNDAsIDI1MCwgMTI2LCAKLSAgICAxNywgMTQ5LCAxNDAsIDI1MCwgMTI2LCAxNywgMTcwLCAxNDAsIDI1MCwgMTI2LCAxNywgMTk1LCAxNDAsIDI1MCwgMTI2LCAKLSAgICAxNywgMjEzLCAxMTEsIDE0MCwgMjUwLCAxMjYsIDE3LCAxOTksIDE0MCwgMjUwLCAxMjYsIDE3LCAyMjIsIDYzLCAxNDAsIAotICAgIDI1MCwgMTI2LCA0MiwgMjA5LCAxNTIsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMDcsIDE1MSwgMTQwLCAyNTAsIDEyNiwgNDIsIAotICAgIDIwOSwgNTMsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMzksIDE1MywgMTQwLCAyNTAsIDEyNiwgNDIsIDI0MCwgMTgsIDE0MCwgCi0gICAgMjUwLCAxMjYsIDQyLCAyMTIsIDc0LCAxNDAsIDI1MCwgMTI2LCA0MiwgMjEzLCAxMDUsIDE0MCwgMjUwLCAxMjYsIDQyLCAKLSAgICAyNDEsIDEzNCwgMTQwLCAyNTAsIDEyNiwgNDIsIDIyMiwgNTgsIDE0MCwgMjUwLCAxMjYsIDQyLCAxMTgsIDIzNiwgMTEsIAotICAgIDE0MCwgMjUwLCAxMjYsIDQyLCAxMTgsIDIwOSwgMzYsIDIyOSwgMTE0LCAxLCA2MywgMjI5LCAxMTQsIDEsIDI1MiwgMjUsIAotICAgIDIyOSwgMTE0LCAxLCA3NSwgMjI5LCAxMTQsIDEsIDY4LCAyMjksIDExNCwgMSwgNzQsIDIyOSwgMTE0LCAxLCAyNTEsIDY0LCAKLSAgICAyMjksIDExNCwgMSwgNzgsIDIyOSwgMTE0LCAxLCAyNTAsIDM0LCAyMjksIDExNCwgMSwgMTczLCAyMjksIDExNCwgMSwgCi0gICAgMjI5LCAxNDQsIDIyOSwgMTE0LCAxLCAyMzksIDgsIDIyOSwgMTE0LCAxLCAyMzgsIDE1NSwgMjI5LCAxMTQsIDEsIDIzOCwgCi0gICAgMTE5LCAyMjksIDExNCwgMSwgMjIyLCAyMDMsIDIyOSwgMTE0LCAxLCAyNDcsIDkyLCAyMjksIDExNCwgMSwgMjQ2LCAxOTksIAotICAgIDIyOSwgMTE0LCAxLCAyMzAsIDE4MSwgMjI5LCAxMTQsIDEsIDIzMCwgMTI5LCAyMjksIDExNCwgMSwgMjIxLCAxMSwgMjI5LCAKLSAgICAxMTQsIDEsIDIwNywgMjQxLCAyMjksIDExNCwgMSwgMjA3LCAyMjksIDIyOSwgMTE0LCAxLCAyNDQsIDEyMCwgMjI5LCAxMTQsIAotICAgIDEsIDI0NCwgMTA0LCAyMjksIDExNCwgMSwgMjIxLCAyMjcsIDIyOSwgMTE0LCAxLCAyMTAsIDIyLCAyMjksIDExNCwgMSwgCi0gICAgMjA5LCAxMDgsIDIyOSwgMTE0LCAxLCAyNDQsIDIxMiwgMjI5LCAxMTQsIDEsIDI0NCwgMTEwLCAyMjksIDExNCwgMSwgMjQ0LCAKLSAgICAxLCAyMjksIDExNCwgMSwgMjAxLCAyMDEsIDIyOSwgMTE0LCAxLCAxODUsIDIyOSwgMTE0LCAxLCAyMTgsIDIwOCwgMjI5LCAKLSAgICAxMTQsIDEsIDI0OSwgMzIsIDIyOSwgMTE0LCAxLCAyNDgsIDE5OCwgMjI5LCAxMTQsIDEsIDI0OCwgOTgsIDIyOSwgMTE0LCAKLSAgICAxLCAxOTIsIDIyOSwgMTE0LCAxLCAxOTgsIDIyOSwgMTE0LCAxLCAyMTYsIDIyMCwgMjI5LCAxMTQsIDEsIDIyOCwgMTEzLCAKLSAgICAyMjksIDExNCwgMSwgMjA2LCA4NiwgMjI5LCAxMTQsIDEsIDIxNSwgMzYsIDIyOSwgMTE0LCAxLCAxNTIsIDIyOSwgMTE0LCAKLSAgICAxLCAyMjcsIDc3LCAyMjksIDExNCwgMjIsIDIsIDI1MiwgMjUsIDIyOSwgMTE0LCAyMiwgMiwgNzUsIDIyOSwgMTE0LCAyMiwgCi0gICAgMiwgMjMxLCA4MywgMjI5LCAxMTQsIDIyLCAyLCA2OCwgMjI5LCAxMTQsIDIyLCAyLCA3NCwgMjI5LCAxMTQsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAyMjksIDExNCwgMjIsIDIsIDc4LCAyMjksIDExNCwgMjIsIDIsIDI1MCwgMzQsIDIyOSwgMTE0LCAyLCAyNTAsIAotICAgIDE4MCwgMjI5LCAxMTQsIDIsIDIwNSwgMjA0LCAyMjksIDExNCwgMiwgMjIxLCA1MSwgMjI5LCAxMTQsIDIsIDIxMywgODAsIAotICAgIDIyOSwgMTE0LCAyNDQsIDE2NiwgMjI5LCAxMTQsIDUyLCAyNDQsIDE2NiwgMjI5LCAxMTQsIDIwMywgMjM4LCAyMTMsIDEzMCwgCi0gICAgMjI5LCAxMTQsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMTQsIDUyLCAyMTQsIDE2OCwgODIsIDIyOSwgMTE0LCAyNTEsIDE0NiwgCi0gICAgNTQsIDIyMywgMjMwLCAxLCA2MywgMjIzLCAyMzAsIDEsIDc1LCAyMjMsIDIzMCwgMSwgNjgsIDIyMywgMjMwLCAxLCA3NCwgCi0gICAgMjIzLCAyMzAsIDEsIDE3MywgMjIzLCAyMzAsIDEsIDIyOSwgMTQ0LCAyMjMsIDIzMCwgMSwgMjM5LCA4LCAyMjMsIDIzMCwgCi0gICAgMSwgMjM4LCAxMTksIDIyMywgMjMwLCAxLCAyNDcsIDkyLCAyMjMsIDIzMCwgMSwgMjQ2LCAxOTksIDIyMywgMjMwLCAxLCAKLSAgICAyMzAsIDE4MSwgMjIzLCAyMzAsIDEsIDIzMCwgMTI5LCAyMjMsIDIzMCwgMSwgMjIxLCAxMSwgMjIzLCAyMzAsIDEsIDIwNywgCi0gICAgMjQxLCAyMjMsIDIzMCwgMSwgMjA3LCAyMjksIDIyMywgMjMwLCAxLCAyNDQsIDEyMCwgMjIzLCAyMzAsIDEsIDI0NCwgMTEwLCAKLSAgICAyMjMsIDIzMCwgMSwgMjQ0LCAxMDQsIDIyMywgMjMwLCAxLCAyMjEsIDIyNywgMjIzLCAyMzAsIDEsIDIxMCwgMjIsIDIyMywgCi0gICAgMjMwLCAxLCAyMDksIDEwOCwgMjIzLCAyMzAsIDEsIDI0NCwgMjEyLCAyMjMsIDIzMCwgMSwgMjQ0LCAxLCAyMjMsIDIzMCwgCi0gICAgMSwgMjAxLCAyMDEsIDIyMywgMjMwLCAxLCAxODUsIDIyMywgMjMwLCAxLCAyMTgsIDIwOCwgMjIzLCAyMzAsIDEsIDI0OSwgCi0gICAgMzIsIDIyMywgMjMwLCAxLCAyNDgsIDk4LCAyMjMsIDIzMCwgMSwgMTkyLCAyMjMsIDIzMCwgMSwgMTk4LCAyMjMsIDIzMCwgCi0gICAgMSwgMjE2LCAyMjAsIDIyMywgMjMwLCAxLCAyMjgsIDExMywgMjIzLCAyMzAsIDEsIDIwNiwgODYsIDIyMywgMjMwLCAxLCAKLSAgICAyMTUsIDM2LCAyMjMsIDIzMCwgMSwgMTUyLCAyMjMsIDIzMCwgMSwgMjE1LCAxODUsIDIyMywgMjMwLCAxLCAyMTYsIDYxLCAKLSAgICAyMjMsIDIzMCwgMjE0LCAxNjgsIDgyLCAyMjksIDEwNiwgMSwgNjMsIDIyOSwgMTA2LCAxLCAyNTIsIDI1LCAyMjksIDEwNiwgCi0gICAgMSwgNzUsIDIyOSwgMTA2LCAxLCAyMzEsIDgzLCAyMjksIDEwNiwgMSwgNjgsIDIyOSwgMTA2LCAxLCAyMDYsIDE3OCwgMjI5LCAKLSAgICAxMDYsIDEsIDc0LCAyMjksIDEwNiwgMSwgMjUxLCA2NCwgMjI5LCAxMDYsIDEsIDc4LCAyMjksIDEwNiwgMSwgMjUwLCAzNCwgCi0gICAgMjI5LCAxMDYsIDEsIDE3MywgMjI5LCAxMDYsIDEsIDIyOSwgMTQ0LCAyMjksIDEwNiwgMSwgMjM5LCA4LCAyMjksIDEwNiwgCi0gICAgMSwgMjM4LCAxNTUsIDIyOSwgMTA2LCAxLCAyMzgsIDExOSwgMjI5LCAxMDYsIDEsIDIyMiwgMjAzLCAyMjksIDEwNiwgMSwgCi0gICAgMjQ3LCA5MiwgMjI5LCAxMDYsIDEsIDI0NiwgMTk5LCAyMjksIDEwNiwgMSwgMjMwLCAxODEsIDIyOSwgMTA2LCAxLCAyMzAsIAotICAgIDEyOSwgMjI5LCAxMDYsIDEsIDIzMCwgMTQ5LCAyMjksIDEwNiwgMSwgMjIxLCAxMSwgMjI5LCAxMDYsIDEsIDIwNywgMjQxLCAKLSAgICAyMjksIDEwNiwgMSwgMjA3LCAyMjksIDIyOSwgMTA2LCAxLCAyNDQsIDEyMCwgMjI5LCAxMDYsIDEsIDI0NCwgMTEwLCAyMjksIAotICAgIDEwNiwgMSwgMjE1LCAxODUsIDIyOSwgMTA2LCAxLCAyNDQsIDEwNCwgMjI5LCAxMDYsIDEsIDIyMSwgMjI3LCAyMjksIDEwNiwgCi0gICAgMSwgMjEwLCAyMiwgMjI5LCAxMDYsIDEsIDIwOSwgMTA4LCAyMjksIDEwNiwgMSwgMjQ0LCAyMTIsIDIyOSwgMTA2LCAxLCAKLSAgICAyNDQsIDEsIDIyOSwgMTA2LCAxLCAyMDEsIDIwMSwgMjI5LCAxMDYsIDEsIDE4NSwgMjI5LCAxMDYsIDEsIDIxOCwgMjA4LCAKLSAgICAyMjksIDEwNiwgMSwgMjQ5LCAzMiwgMjI5LCAxMDYsIDEsIDI0OCwgMTk4LCAyMjksIDEwNiwgMSwgMjQ4LCA5OCwgMjI5LCAKLSAgICAxMDYsIDEsIDE5MiwgMjI5LCAxMDYsIDEsIDE5OCwgMjI5LCAxMDYsIDEsIDIxNiwgMjIwLCAyMjksIDEwNiwgMSwgMjI4LCAKLSAgICAxMTMsIDIyOSwgMTA2LCAxLCAyMDYsIDg2LCAyMjksIDEwNiwgMSwgMjEzLCA5MCwgMjI5LCAxMDYsIDEsIDIxNSwgMzYsIAotICAgIDIyOSwgMTA2LCAxLCAxNTIsIDIyOSwgMTA2LCAyLCAyNTAsIDE4MCwgMjI5LCAxMDYsIDIyLCAyLCAyNTIsIDI1LCAyMjksIAotICAgIDEwNiwgMjIsIDIsIDc1LCAyMjksIDEwNiwgMjIsIDIsIDIzMSwgODMsIDIyOSwgMTA2LCAyMiwgMiwgNjgsIDIyOSwgMTA2LCAKLSAgICAyMiwgMiwgMjA2LCAxNzgsIDIyOSwgMTA2LCAyMiwgMiwgNzQsIDIyOSwgMTA2LCAyMiwgMiwgMjUxLCA2NCwgMjI5LCAxMDYsIAotICAgIDIyLCAyLCA3OCwgMjI5LCAxMDYsIDIyLCAyLCAyNTAsIDM0LCAyMjksIDEwNiwgMiwgMjIxLCA1MSwgMjI5LCAxMDYsIDIsIAotICAgIDIwNSwgMjA0LCAyMjksIDEwNiwgMTcsIDIwMiwgODQsIDIyOSwgMTA2LCAxNywgMTA1LCAyMjksIDEwNiwgMTcsIDEwOCwgCi0gICAgMjI5LCAxMDYsIDE3LCAxNDcsIDIyOSwgMTA2LCAxNywgMTQ5LCAyMjksIDEwNiwgMTcsIDE3MCwgMjI5LCAxMDYsIDE3LCAKLSAgICAxOTUsIDIyOSwgMTA2LCAxNywgMjEzLCAxMTEsIDIyOSwgMTA2LCAxNywgMTk5LCAyMjksIDEwNiwgMTcsIDIyMiwgNjMsIAotICAgIDIzOCwgNiwgMiwgMzksIDI1MCwgMTgxLCA1NSwgMjM4LCA2LCAyLCAyNDcsIDUyLCAyMzgsIDYsIDIsIDI1MCwgMTgwLCAKLSAgICAyMzgsIDYsIDIsIDIwNSwgMTk5LCAyMzgsIDYsIDEsIDYzLCAyMzgsIDYsIDEsIDI1MiwgMjUsIDIzOCwgNiwgMSwgNzUsIAotICAgIDIzOCwgNiwgMSwgMjMxLCA4MywgMjM4LCA2LCAxLCA2OCwgMjM4LCA2LCAxLCAyMDYsIDE3OCwgMjM4LCA2LCAxLCAxMjUsIAotICAgIDE0NiwgMjM4LCA2LCAxLCAxMjUsIDE1OSwgMjM4LCA2LCAxLCAyNDEsIDE2MSwgMjM4LCA2LCAxLCAyNTEsIDY0LCAyMzgsIAotICAgIDYsIDEsIDIyMCwgMTgsIDIzOCwgNiwgMSwgMjUwLCAzNCwgMjM4LCA2LCAxLCAxNzMsIDIzOCwgNiwgMSwgMjI5LCAxNDQsIAotICAgIDIzOCwgNiwgMSwgMjM5LCA4LCAyMzgsIDYsIDEsIDIzOCwgMTE5LCAyMzgsIDYsIDEsIDIyMiwgMjAzLCAyMzgsIDYsIDEsIAotICAgIDI0NywgOTIsIDIzOCwgNiwgMSwgMjQ2LCAxOTksIDIzOCwgNiwgMSwgMjMwLCAxODEsIDIzOCwgNiwgMSwgMjMwLCAxNDksIAotICAgIDIzOCwgNiwgMSwgMjIxLCAxMSwgMjM4LCA2LCAxLCAyMDcsIDI0MSwgMjM4LCA2LCAxLCAyMDcsIDIyOSwgMjM4LCA2LCAxLCAKLSAgICAyNDQsIDEyMCwgMjM4LCA2LCAxLCAyNDQsIDEwNCwgMjM4LCA2LCAxLCAyMjEsIDIyNywgMjM4LCA2LCAxLCAyMTAsIDIyLCAKLSAgICAyMzgsIDYsIDEsIDIwOSwgMTA4LCAyMzgsIDYsIDEsIDI0NCwgMjEyLCAyMzgsIDYsIDEsIDI0NCwgMSwgMjM4LCA2LCAxLCAKLSAgICAyMDEsIDIwMSwgMjM4LCA2LCAxLCAxODUsIDIzOCwgNiwgMSwgMjE4LCAyMDgsIDIzOCwgNiwgMSwgMjQ5LCAzMiwgMjM4LCAKLSAgICA2LCAxLCAyNDgsIDk4LCAyMzgsIDYsIDEsIDE5MiwgMjM4LCA2LCAxLCAxOTgsIDIzOCwgNiwgMSwgMjE2LCAyMjAsIDIzOCwgCi0gICAgNiwgMSwgMjI4LCAxMTMsIDIzOCwgNiwgMSwgMjI3LCA3NywgMjM4LCA2LCAxLCAyMDYsIDg2LCAyMzgsIDYsIDEsIDIxMywgCi0gICAgOTAsIDIzOCwgNiwgMSwgMjExLCAxNjQsIDIzOCwgNiwgMSwgMjE1LCAzNiwgMjM4LCA2LCAxLCAxNTIsIDIzOCwgNiwgMiwgCi0gICAgMjIxLCA1MSwgMjM4LCA2LCAyLCAyNTAsIDE3LCAyMzgsIDYsIDIyLCAyLCAyNTIsIDI1LCAyMzgsIDYsIDIyLCAyLCA3NSwgCi0gICAgMjM4LCA2LCAyMiwgMiwgMjMxLCA4MywgMjM4LCA2LCAyMiwgMiwgNjgsIDIzOCwgNiwgMjIsIDIsIDIwNiwgMTc4LCAyMzgsIAotICAgIDYsIDIyLCAyLCAxMjUsIDE0NiwgMjM4LCA2LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjM4LCA2LCAyMiwgMiwgMjQxLCAKLSAgICAxNjEsIDIzOCwgNiwgMjIsIDIsIDI1MSwgNjQsIDIzOCwgNiwgMjIsIDIsIDIyMCwgMTgsIDIzOCwgNiwgMjIsIDIsIDI1MCwgCi0gICAgMzQsIDIzOCwgNiwgMiwgMjA1LCAyMDQsIDIzOCwgNiwgMjIwLCAzOSwgMjM4LCA2LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIAotICAgIDIzOCwgNiwgMiwgMjE4LCA3NCwgMjM4LCA2LCAxLCAyMDYsIDUyLCAyNTAsIDE4MCwgMjM4LCA2LCAxLCAyMDYsIDUyLCA1MiwgCi0gICAgMjUwLCAxODAsIDIzOCwgNiwgMSwgMTI1LCAyMTUsIDE4NiwgMjM4LCA2LCAxLCAxMjUsIDIyNywgNzgsIDIzOCwgNiwgMjIsIAotICAgIDIsIDEyNSwgMTU5LCAyMzgsIDYsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDM5LCAyMzgsIDYsIDE3LCAyMDIsIDg0LCAzOSwgCi0gICAgMjM4LCA2LCAxNywgMTA1LCAzOSwgMjM4LCA2LCAxNywgMTA4LCAzOSwgMjM4LCA2LCAxNywgMTQ3LCAzOSwgMjM4LCA2LCAKLSAgICAxNywgMTQ5LCAzOSwgMjM4LCA2LCAxNywgMTcwLCAzOSwgMjM4LCA2LCAxNywgMTk1LCAzOSwgMjM4LCA2LCAxLCA2MywgMzksIAotICAgIDIzOCwgNiwgMSwgMTczLCAzOSwgMjM4LCA2LCAxLCAyMDEsIDIwMSwgMzksIDIzOCwgNiwgMSwgMjA1LCAyMzAsIDM5LCAKLSAgICAyMzgsIDYsIDEsIDE4NSwgMjA4LCAyMDQsIDI1MCwgMjA5LCAyMDgsIDIwNCwgMSwgNjMsIDIwOCwgMjA0LCAxLCAyNTIsIAotICAgIDI1LCAyMDgsIDIwNCwgMSwgNzUsIDIwOCwgMjA0LCAxLCAyMzEsIDgzLCAyMDgsIDIwNCwgMSwgNjgsIDIwOCwgMjA0LCAxLCAKLSAgICAyMDYsIDE3OCwgMjA4LCAyMDQsIDEsIDEyNSwgMTQ2LCAyMDgsIDIwNCwgMSwgMTI1LCAyMTUsIDE4NiwgMjA4LCAyMDQsIDEsIAotICAgIDEyNSwgMTU5LCAyMDgsIDIwNCwgMSwgMTI1LCAyMjcsIDc4LCAyMDgsIDIwNCwgMSwgNzQsIDIwOCwgMjA0LCAxLCAyNTEsIAotICAgIDY0LCAyMDgsIDIwNCwgMSwgNzgsIDIwOCwgMjA0LCAxLCAyNTAsIDM0LCAyMDgsIDIwNCwgMSwgMTczLCAyMDgsIDIwNCwgMSwgCi0gICAgMjI5LCAxNDQsIDIwOCwgMjA0LCAxLCAyMzksIDgsIDIwOCwgMjA0LCAxLCAyMzgsIDExOSwgMjA4LCAyMDQsIDEsIDIyMiwgCi0gICAgMjAzLCAyMDgsIDIwNCwgMSwgMjQ3LCA5MiwgMjA4LCAyMDQsIDEsIDI0NiwgMTk5LCAyMDgsIDIwNCwgMSwgMjMwLCAxODEsIAotICAgIDIwOCwgMjA0LCAxLCAyMzAsIDE0OSwgMjA4LCAyMDQsIDEsIDIyMSwgMTEsIDIwOCwgMjA0LCAxLCAyMDcsIDI0MSwgMjA4LCAKLSAgICAyMDQsIDEsIDIwNywgMjI5LCAyMDgsIDIwNCwgMSwgMjQ0LCAxMjAsIDIwOCwgMjA0LCAxLCAyNDQsIDEwNCwgMjA4LCAyMDQsIAotICAgIDEsIDIyMSwgMjI3LCAyMDgsIDIwNCwgMSwgMjEwLCAyMiwgMjA4LCAyMDQsIDEsIDIwOSwgMTA4LCAyMDgsIDIwNCwgMSwgCi0gICAgMjQ0LCAyMTIsIDIwOCwgMjA0LCAxLCAyNDQsIDEsIDIwOCwgMjA0LCAxLCAyMDEsIDIwMSwgMjA4LCAyMDQsIDEsIDE4NSwgCi0gICAgMjA4LCAyMDQsIDEsIDIxOCwgMjA4LCAyMDgsIDIwNCwgMSwgMjQ5LCAzMiwgMjA4LCAyMDQsIDEsIDI0OCwgOTgsIDIwOCwgCi0gICAgMjA0LCAxLCAxOTIsIDIwOCwgMjA0LCAxLCAxOTgsIDIwOCwgMjA0LCAxLCAyMTYsIDIyMCwgMjA4LCAyMDQsIDEsIDIyOCwgCi0gICAgMTEzLCAyMDgsIDIwNCwgMSwgMjA2LCA4NiwgMjA4LCAyMDQsIDEsIDIxMywgOTAsIDIwOCwgMjA0LCAxLCAyMTEsIDE2NCwgCi0gICAgMjA4LCAyMDQsIDEsIDIxNSwgMzYsIDIwOCwgMjA0LCAxLCAxNTIsIDIwOCwgMjA0LCAyMiwgMiwgMjUyLCAyNSwgMjA4LCAKLSAgICAyMDQsIDIyLCAyLCA3NSwgMjA4LCAyMDQsIDIyLCAyLCAyMzEsIDgzLCAyMDgsIDIwNCwgMjIsIDIsIDY4LCAyMDgsIDIwNCwgCi0gICAgMjIsIDIsIDIwNiwgMTc4LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMTQ2LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMjE1LCAKLSAgICAxODYsIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAxNTksIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMDgsIDIwNCwgCi0gICAgMjIsIDIsIDc0LCAyMDgsIDIwNCwgMjIsIDIsIDIxMiwgMjI4LCA3NCwgMjA4LCAyMDQsIDIyLCAyLCAyNTEsIDY0LCAyMDgsIAotICAgIDIwNCwgMjIsIDIsIDc4LCAyMDgsIDIwNCwgMjIsIDIsIDIxMiwgMjI4LCA3OCwgMjA4LCAyMDQsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICAyMDgsIDIwNCwgMiwgMjQ3LCA1MiwgMjA4LCAyMDQsIDIsIDI1MCwgMTgwLCAyMDgsIDIwNCwgMiwgMjA1LCAxOTksIDIwOCwgCi0gICAgMjA0LCAyLCAyMDUsIDIwNCwgMjA4LCAyMDQsIDIsIDIyMSwgNTEsIDIwOCwgMjA0LCAyLCAyNTAsIDE3LCAyMDgsIDIwNCwgCi0gICAgMjM3LCAxOTEsIDIwOCwgMjA0LCAyNTEsIDE0NiwgNTQsIDIwOCwgMjA0LCAyMjAsIDM5LCAyMDgsIDIwNCwgMTcsIDIwMiwgCi0gICAgODQsIDIwOCwgMjA0LCAxNywgMTA1LCAyMDgsIDIwNCwgMTcsIDEwOCwgMjA4LCAyMDQsIDE3LCAxNDcsIDIwOCwgMjA0LCAKLSAgICAxNywgMTQ5LCAyMDgsIDIwNCwgMTcsIDE3MCwgMjA4LCAyMDQsIDE3LCAxOTUsIDIwOCwgMjA0LCAxNywgMjEzLCAxMTEsIAotICAgIDIwOCwgMjA0LCAxNywgMTk5LCAyMDgsIDIwNCwgMTcsIDIyMiwgNjMsIDE4NiwgMSwgNjMsIDE4NiwgMSwgMjUyLCAyNSwgCi0gICAgMTg2LCAxLCA3NSwgMTg2LCAxLCAyMzEsIDgzLCAxODYsIDEsIDY4LCAxODYsIDEsIDIwNiwgMTc4LCAxODYsIDEsIDEyNSwgCi0gICAgMTQ2LCAxODYsIDEsIDEyNSwgMjE1LCAxODYsIDE4NiwgMSwgMTI1LCAxNTksIDE4NiwgMSwgMTI1LCAyMjcsIDc4LCAxODYsIAotICAgIDEsIDc0LCAxODYsIDEsIDI1MSwgNjQsIDE4NiwgMSwgNzgsIDE4NiwgMSwgMjUwLCAzNCwgMTg2LCAxLCAxNzMsIDE4NiwgMSwgCi0gICAgMjI5LCAxNDQsIDE4NiwgMSwgMjM5LCA4LCAxODYsIDEsIDIzOCwgMTE5LCAxODYsIDEsIDIyMiwgMjAzLCAxODYsIDEsIAotICAgIDI0NywgOTIsIDE4NiwgMSwgMjQ2LCAxOTksIDE4NiwgMSwgMjMwLCAxODEsIDE4NiwgMSwgMjMwLCAxNDksIDE4NiwgMSwgCi0gICAgMjIxLCAxMSwgMTg2LCAxLCAyMDcsIDI0MSwgMTg2LCAxLCAyMDcsIDIyOSwgMTg2LCAxLCAyNDQsIDEyMCwgMTg2LCAxLCAKLSAgICAyNDQsIDEwNCwgMTg2LCAxLCAyMjEsIDIyNywgMTg2LCAxLCAyMTAsIDIyLCAxODYsIDEsIDIwOSwgMTA4LCAxODYsIDEsIAotICAgIDI0NCwgMjEyLCAxODYsIDEsIDI0NCwgMSwgMTg2LCAxLCAyMDEsIDIwMSwgMTg2LCAxLCAxODUsIDE4NiwgMSwgMjE4LCAKLSAgICAyMDgsIDE4NiwgMSwgMjQ5LCAzMiwgMTg2LCAxLCAyNDgsIDk4LCAxODYsIDEsIDE5MiwgMTg2LCAxLCAxOTgsIDE4NiwgMSwgCi0gICAgMjE2LCAyMjAsIDE4NiwgMSwgMjI4LCAxMTMsIDE4NiwgMSwgMjA2LCA4NiwgMTg2LCAxLCAyMTMsIDkwLCAxODYsIDEsIAotICAgIDIxMSwgMTY0LCAxODYsIDEsIDIxNSwgMzYsIDE4NiwgMSwgMTUyLCAxODYsIDIyLCAyLCAyNTIsIDI1LCAxODYsIDIyLCAyLCAKLSAgICA3NSwgMTg2LCAyMiwgMiwgMjMxLCA4MywgMTg2LCAyMiwgMiwgNjgsIDE4NiwgMjIsIDIsIDIwNiwgMTc4LCAxODYsIDIyLCAKLSAgICAyLCAxMjUsIDE0NiwgMTg2LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTg2LCAyMiwgMiwgNzQsIDE4NiwgMjIsIDIsIDI1MSwgCi0gICAgNjQsIDE4NiwgMjIsIDIsIDc4LCAxODYsIDIyLCAyLCAyNTAsIDM0LCAxODYsIDIsIDI0NywgNTIsIDE4NiwgMiwgMjUwLCAKLSAgICAxODAsIDE4NiwgMiwgMjA1LCAxOTksIDE4NiwgMiwgMjA1LCAyMDQsIDE4NiwgMiwgMjIxLCA1MSwgMTg2LCAyLCAyMTIsIAotICAgIDE1NywgMTg2LCAyNDQsIDE2NiwgMTg2LCA1MiwgMjQ0LCAxNjYsIDE4NiwgMjEzLCAxMzEsIDI0MywgODUsIDE4NiwgMjEzLCAKLSAgICAxMzEsIDE0MiwgMTg2LCAyMTYsIDk4LCAyMjUsIDkyLCAxODYsIDIxNiwgOTgsIDIyNSwgOTEsIDE4NiwgMjE2LCA5OCwgCi0gICAgMjI1LCA5MCwgMTg2LCAyNDEsIDg0LCA3NiwgMjA5LCAxMTMsIDgyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIwOCwgODAsIAotICAgIDI1LCAyMDcsIDkyLCAyMTksIDIzMiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDgwLCAyNSwgMjQyLCA4MywgMjQ1LCAKLSAgICAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCAyNDUsIDEzNywgMTg2LCAyMTQsIAotICAgIDE2OCwgMTMxLCAzLCAyMTYsIDE2MywgMjUsIDI0MiwgODMsIDUyLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAKLSAgICAyMTYsIDE2MywgMjUsIDI0MiwgODMsIDIwOCwgNzAsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDUyLCAyMTUsIAotICAgIDI1MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCA1MiwgMjE1LCAyNTMsIDMsIDIxNiwgMTYyLCAxODYsIDIxNCwgMTY4LCAxMzEsIAotICAgIDMsIDUyLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDcwLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgCi0gICAgMTMxLCAzLCAyMTcsIDU4LCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMTMsIDEyOCwgMjQ1LCAxMzcsIAotICAgIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjQ2LCA1OSwgMjUsIDIxNiwgMTYyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgCi0gICAgNTksIDI1LCAxMjAsIDI0MSwgODYsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjQ2LCA1OSwgMjUsIDIzOSwgMTQ3LCAyNDEsIAotICAgIDg2LCAxODYsIDEsIDIwOSwgMzIsIDI1MCwgMjU1LCA3NSwgMTg2LCAxLCAyMDcsIDEzNiwgMjUwLCAyNTUsIDc1LCAxODYsIAotICAgIDEsIDIwNywgMTM2LCAyNTAsIDI1NSwgMjMxLCA4MywgMTg2LCAxLCAyNTAsIDI1NSwgNjgsIDE4NiwgMjIsIDIsIDI1MCwgCi0gICAgMjU1LCA2OCwgMTg2LCAyMiwgMiwgMjUwLCAyNTUsIDIwNiwgMTc4LCAyMjQsIDc0LCAxLCA2MywgMjI0LCA3NCwgMSwgMjUyLCAKLSAgICAyNSwgMjI0LCA3NCwgMSwgNzUsIDIyNCwgNzQsIDEsIDIzMSwgODMsIDIyNCwgNzQsIDEsIDY4LCAyMjQsIDc0LCAxLCAyMDYsIAotICAgIDE3OCwgMjI0LCA3NCwgMSwgMTI1LCAxNDYsIDIyNCwgNzQsIDEsIDEyNSwgMjE1LCAxODYsIDIyNCwgNzQsIDEsIDEyNSwgCi0gICAgMTU5LCAyMjQsIDc0LCAxLCAxMjUsIDIyNywgNzgsIDIyNCwgNzQsIDEsIDc0LCAyMjQsIDc0LCAxLCAyNTEsIDY0LCAyMjQsIAotICAgIDc0LCAxLCA3OCwgMjI0LCA3NCwgMSwgMjUwLCAzNCwgMjI0LCA3NCwgMSwgMTczLCAyMjQsIDc0LCAxLCAyMjksIDE0NCwgCi0gICAgMjI0LCA3NCwgMSwgMjM5LCA4LCAyMjQsIDc0LCAxLCAyMzgsIDExOSwgMjI0LCA3NCwgMSwgMjIyLCAyMDMsIDIyNCwgNzQsIAotICAgIDEsIDI0NywgOTIsIDIyNCwgNzQsIDEsIDI0NiwgMTk5LCAyMjQsIDc0LCAxLCAyMzAsIDE4MSwgMjI0LCA3NCwgMSwgMjMwLCAKLSAgICAxNDksIDIyNCwgNzQsIDEsIDIyMSwgMTEsIDIyNCwgNzQsIDEsIDIwNywgMjQxLCAyMjQsIDc0LCAxLCAyMDcsIDIyOSwgCi0gICAgMjI0LCA3NCwgMSwgMjQ0LCAxMjAsIDIyNCwgNzQsIDEsIDI0NCwgMTA0LCAyMjQsIDc0LCAxLCAyMjEsIDIyNywgMjI0LCAKLSAgICA3NCwgMSwgMjEwLCAyMiwgMjI0LCA3NCwgMSwgMjA5LCAxMDgsIDIyNCwgNzQsIDEsIDI0NCwgMjEyLCAyMjQsIDc0LCAxLCAKLSAgICAyNDQsIDEsIDIyNCwgNzQsIDEsIDIwMSwgMjAxLCAyMjQsIDc0LCAxLCAxODUsIDIyNCwgNzQsIDEsIDIxOCwgMjA4LCAyMjQsIAotICAgIDc0LCAxLCAyNDksIDMyLCAyMjQsIDc0LCAxLCAyNDgsIDk4LCAyMjQsIDc0LCAxLCAxOTIsIDIyNCwgNzQsIDEsIDE5OCwgCi0gICAgMjI0LCA3NCwgMSwgMjE2LCAyMjAsIDIyNCwgNzQsIDEsIDIyOCwgMTEzLCAyMjQsIDc0LCAxLCAyMDYsIDg2LCAyMjQsIDc0LCAKLSAgICAxLCAyMTMsIDkwLCAyMjQsIDc0LCAxLCAyMTEsIDE2NCwgMjI0LCA3NCwgMSwgMjE1LCAzNiwgMjI0LCA3NCwgMSwgMTUyLCAKLSAgICAyMjQsIDc0LCAxLCAyMjcsIDc3LCAyMjQsIDc0LCAyMiwgMiwgMjUyLCAyNSwgMjI0LCA3NCwgMjIsIDIsIDc1LCAyMjQsIAotICAgIDc0LCAyMiwgMiwgMjMxLCA4MywgMjI0LCA3NCwgMjIsIDIsIDY4LCAyMjQsIDc0LCAyMiwgMiwgMjA2LCAxNzgsIDIyNCwgCi0gICAgNzQsIDIyLCAyLCAxMjUsIDE0NiwgMjI0LCA3NCwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIyNCwgNzQsIDIyLCAyLCAxMjUsIAotICAgIDE1OSwgMjI0LCA3NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjI0LCA3NCwgMjIsIDIsIDc0LCAyMjQsIDc0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMjI0LCA3NCwgMjIsIDIsIDc4LCAyMjQsIDc0LCAyMiwgMiwgMjUwLCAzNCwgMjI0LCA3NCwgMiwgMjUwLCAKLSAgICAxODAsIDIyNCwgNzQsIDIsIDIwNSwgMTk5LCAyMjQsIDc0LCAyLCAyMDUsIDIwNCwgMjI0LCA3NCwgMiwgMjUwLCAxMjMsIAotICAgIDIyNCwgNzQsIDI0NCwgMTY2LCAyMjQsIDc0LCA1MiwgMjQ0LCAxNjYsIDIyNCwgNzQsIDI1MSwgMTQ2LCA1NCwgMjI0LCA3NCwgCi0gICAgMiwgMjM2LCAwLCAyMjQsIDc0LCAxNywgMjAyLCA4NCwgMjI0LCA3NCwgMTcsIDEwNSwgMjI0LCA3NCwgMTcsIDEwOCwgMjI0LCAKLSAgICA3NCwgMTcsIDE0NywgMjI0LCA3NCwgMTcsIDE0OSwgMjI0LCA3NCwgMTcsIDE3MCwgMjI0LCA3NCwgMTcsIDE5NSwgMjI0LCAKLSAgICA3NCwgMTcsIDIxMywgMTExLCAyMjQsIDc0LCAxNywgMTk5LCAyMjQsIDc0LCAxNywgMjIyLCA2MywgMjA5LCAyMzksIDEsIAotICAgIDYzLCAyMDksIDIzOSwgMSwgMjUyLCAyNSwgMjA5LCAyMzksIDEsIDc1LCAyMDksIDIzOSwgMSwgMjMxLCA4MywgMjA5LCAKLSAgICAyMzksIDEsIDY4LCAyMDksIDIzOSwgMSwgMjA2LCAxNzgsIDIwOSwgMjM5LCAxLCA3NCwgMjA5LCAyMzksIDEsIDI1MSwgNjQsIAotICAgIDIwOSwgMjM5LCAxLCA3OCwgMjA5LCAyMzksIDEsIDI1MCwgMzQsIDIwOSwgMjM5LCAxLCAxNzMsIDIwOSwgMjM5LCAxLCAKLSAgICAyMjksIDE0NCwgMjA5LCAyMzksIDEsIDIzOSwgOCwgMjA5LCAyMzksIDEsIDIzOCwgMTE5LCAyMDksIDIzOSwgMSwgMjIyLCAKLSAgICAyMDMsIDIwOSwgMjM5LCAxLCAyNDcsIDkyLCAyMDksIDIzOSwgMSwgMjQ2LCAxOTksIDIwOSwgMjM5LCAxLCAyMzAsIDE4MSwgCi0gICAgMjA5LCAyMzksIDEsIDIzMCwgMTQ5LCAyMDksIDIzOSwgMSwgMjIxLCAxMSwgMjA5LCAyMzksIDEsIDIwNywgMjQxLCAyMDksIAotICAgIDIzOSwgMSwgMjA3LCAyMjksIDIwOSwgMjM5LCAxLCAyNDQsIDEyMCwgMjA5LCAyMzksIDEsIDI0NCwgMTA0LCAyMDksIDIzOSwgCi0gICAgMSwgMjIxLCAyMjcsIDIwOSwgMjM5LCAxLCAyMTAsIDIyLCAyMDksIDIzOSwgMSwgMjA5LCAxMDgsIDIwOSwgMjM5LCAxLCAKLSAgICAyNDQsIDIxMiwgMjA5LCAyMzksIDEsIDI0NCwgMSwgMjA5LCAyMzksIDEsIDIwMSwgMjAxLCAyMDksIDIzOSwgMSwgMTg1LCAKLSAgICAyMDksIDIzOSwgMSwgMjE4LCAyMDgsIDIwOSwgMjM5LCAxLCAyNDksIDMyLCAyMDksIDIzOSwgMSwgMjQ4LCA5OCwgMjA5LCAKLSAgICAyMzksIDEsIDE5MiwgMjA5LCAyMzksIDEsIDE5OCwgMjA5LCAyMzksIDEsIDIxNiwgMjIwLCAyMDksIDIzOSwgMSwgMjI4LCAKLSAgICAxMTMsIDIwOSwgMjM5LCAxLCAyMDYsIDg2LCAyMDksIDIzOSwgMSwgMjEzLCA5MCwgMjA5LCAyMzksIDEsIDIxNSwgMzYsIAotICAgIDIwOSwgMjM5LCAxLCAxNTIsIDIwOSwgMjM5LCAxLCAyMTUsIDE4NSwgMjA5LCAyMzksIDIsIDI1MCwgMTgwLCAyMDksIDIzOSwgCi0gICAgMiwgMjA1LCAxOTksIDIwOSwgMjM5LCAyMiwgMiwgMjUyLCAyNSwgMjA5LCAyMzksIDIyLCAyLCA3NSwgMjA5LCAyMzksIDIyLCAKLSAgICAyLCAyMzEsIDgzLCAyMDksIDIzOSwgMjIsIDIsIDY4LCAyMDksIDIzOSwgMjIsIDIsIDIwNiwgMTc4LCAyMDksIDIzOSwgMjIsIAotICAgIDIsIDc0LCAyMDksIDIzOSwgMjIsIDIsIDI1MSwgNjQsIDIwOSwgMjM5LCAyMiwgMiwgNzgsIDIwOSwgMjM5LCAyMiwgMiwgCi0gICAgMjUwLCAzNCwgMjA5LCAyMzksIDIsIDIwNSwgMjA0LCAyMDksIDIzOSwgMiwgMjIxLCA1MSwgMjA5LCAyMzksIDE3LCAyMDIsIAotICAgIDg0LCAyMDksIDIzOSwgMTcsIDEwNSwgMjA5LCAyMzksIDE3LCAxMDgsIDIwOSwgMjM5LCAxNywgMTQ3LCAyMDksIDIzOSwgCi0gICAgMTcsIDE0OSwgMjA5LCAyMzksIDE3LCAxNzAsIDIwOSwgMjM5LCAxNywgMTk1LCAyMDksIDIzOSwgMTcsIDIxMywgMTExLCAKLSAgICAyMDksIDIzOSwgMTcsIDE5OSwgMjA5LCAyMzksIDE3LCAyMjIsIDYzLCAyNTEsIDY4LCAxLCAxNzMsIDI1MSwgNjgsIDEsIAotICAgIDIyOSwgMTQ0LCAyNTEsIDY4LCAxLCAyMjIsIDIwMywgMjUxLCA2OCwgMSwgMjAxLCAyMDEsIDI1MSwgNjgsIDEsIDIxMCwgCi0gICAgMjIsIDI1MSwgNjgsIDEsIDI1MCwgMjU1LCAyMTAsIDIyLCAyNTEsIDY4LCAxLCAxODUsIDI1MSwgNjgsIDEsIDIxOCwgMjA4LCAKLSAgICAyNTEsIDY4LCAxLCAyNDksIDMyLCAyNTEsIDY4LCAxLCAxOTIsIDI1MSwgNjgsIDEsIDIzMCwgMTgxLCAyNTEsIDY4LCAxLCAKLSAgICAyNDYsIDE5OSwgMjUxLCA2OCwgMSwgMjA5LCAxMDgsIDI1MSwgNjgsIDEsIDIxNiwgMjIwLCAyNTEsIDY4LCAxLCAyMjgsIAotICAgIDExMywgMjUxLCA2OCwgMSwgMjE1LCAzNiwgMjUxLCA2OCwgMSwgMjIxLCAxMSwgMjUxLCA2OCwgMSwgMTUyLCAyNTEsIDY4LCAKLSAgICAxLCA2MywgMjUxLCA2OCwgMSwgMjQ0LCAyMTIsIDI1MSwgNjgsIDEsIDI0NCwgMSwgMjUxLCA2OCwgMSwgMjM5LCA4LCAyNTEsIAotICAgIDY4LCAxLCAyNTAsIDI1NSwgMjM5LCA4LCAyNTEsIDY4LCAxLCAyMzgsIDExOSwgMjUxLCA2OCwgMSwgMjQ4LCA5OCwgMjUxLCAKLSAgICA2OCwgMSwgMjMwLCAxNDksIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAyMjgsIDExMywgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIAotICAgIDIxNiwgMjIwLCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgMjI3LCAxMzUsIDIxNiwgMjIwLCAyNTEsIDY4LCAyMiwgMiwgNjMsIAotICAgIDI1MSwgNjgsIDIyLCAyLCAyNTIsIDI1LCAyNTEsIDY4LCAyMiwgMiwgNzUsIDI1MSwgNjgsIDIyLCAyLCAyMzEsIDgzLCAKLSAgICAyNTEsIDY4LCAyMiwgMiwgNjgsIDI1MSwgNjgsIDIyLCAyLCAyMDYsIDE3OCwgMjUxLCA2OCwgMjIsIDIsIDc0LCAyNTEsIAotICAgIDY4LCAyMiwgMiwgMjUwLCAxMywgMjUxLCA2OCwgMjIsIDIsIDc4LCAyNTEsIDY4LCAyMiwgMiwgMjUxLCA2NCwgMjUxLCA2OCwgCi0gICAgMjIsIDIsIDI1MCwgMjQ3LCAyNTEsIDY4LCAyLCAyMjksIDg2LCAyNTEsIDY4LCAxNywgMjAyLCA4NCwgMjUxLCA2OCwgMTcsIAotICAgIDEwNSwgMjUxLCA2OCwgMTcsIDEwOCwgMjUxLCA2OCwgMTcsIDE0NywgMjUxLCA2OCwgMTcsIDE0OSwgMjUxLCA2OCwgMTcsIAotICAgIDE3MCwgMjUxLCA2OCwgMTcsIDE5NSwgMjUxLCA2OCwgMTcsIDIxMywgMTExLCAyNTEsIDY4LCAxNywgMTk5LCAyNTEsIDY4LCAKLSAgICAxNywgMjIyLCA2MywgMjUxLCA2OCwgNDIsIDIwOSwgMTUyLCAyNTEsIDY4LCA0MiwgMjA3LCAxNTEsIDI1MSwgNjgsIDIsIDUsIAotICAgIDIxNCwgMTY3LCAyNTEsIDY4LCAyLCAyMTQsIDE2NywgMjUxLCA2OCwgMiwgMjE1LCAxMzYsIDI1MSwgNjgsIDE2LCAyMDUsIAotICAgIDIzMCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIyLCAyMDIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDYzLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDQsIDMwLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDIsIDIxMywgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNiwgMSwgMTk4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDIsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgCi0gICAgNiwgMSwgMjMxLCA4MywgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA2LCAxNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIAotICAgIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCA3OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCAyMjMsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDYsIDEsIDIzOSwgOCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjI5LCAyNiwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNiwgMSwgMjQxLCA1NiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAxOTcsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIAotICAgIDEsIDIwNywgMzEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI0MSwgNzUsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMCwgCi0gICAgNzYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNywgMjM2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjEsIDM3LCAKLSAgICAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDQsIDIxMiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCA0OSwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI0NywgMTkzLCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA2LCAxLCAyMTcsIDE5MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM2LCAyMjgsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDYsIDEsIDIzNiwgMTI0LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzYsIDUxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAKLSAgICAxLCAyMzcsIDkyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMTEsIDExNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgCi0gICAgMjEyLCAxNDIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNSwgMTkwLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjIsIAotICAgIDIwMiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgNjMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNCwgMzAsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDUsIDEsIDIwMiwgMjEzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAxOTgsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDUsIDEsIDIwMiwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzEsIDgzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKLSAgICAxLCAyMDYsIDE3OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgNzQsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDc4LCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDIyMywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjM5LCA4LCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA1LCAxLCAyMjksIDI2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDEsIDU2LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA1LCAxLCAyMDIsIDE5NywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjA3LCAzMSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCi0gICAgMSwgMjQxLCA3NSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIwLCA3NiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjA3LCAKLSAgICAyMzYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMSwgMzcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDI0NCwgMjEyLCAKLSAgICAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDQ5LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDI0NywgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQ3LCAxOTMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIxNywgMTkxLCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA1LCAxLCAyMzYsIDIyOCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjM2LCAxMjQsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDUsIDEsIDIzNiwgNTEsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzNywgOTIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAotICAgIDEsIDIxMSwgMTE2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMTIsIDE0MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgCi0gICAgMjA1LCAxOTAsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAyMDIsIDg0LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTA1LCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCAxNywgMTA4LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgCi0gICAgMTQ5LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTcwLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTk1LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCAxNywgMjEzLCAxMTEsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxOTksIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAyMjIsIAotICAgIDYzLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjA5LCAxNTIsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMDcsIDE1MSwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNDIsIDIwOSwgNTMsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMzksIDE1MywgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNDIsIDI0MCwgMTgsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMTIsIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgCi0gICAgMjEzLCAxMDUsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyNDEsIDEzNCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIyMiwgNTgsIAotICAgIDIwNCwgOTIsIDI0NiwgNDgsIDIyMCwgMzksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE4NSwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMTczLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMjgsIDExMywgMjE5LCAKLSAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMTkyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDQsIDIxMiwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjAyLCAxMTYsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAotICAgIDIwNiwgODYsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIyMiwgMjAzLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAxLCAxNTIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIzOSwgOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgMjI5LCAxNDQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxNSwgMzYsIDIxOSwgNDksIDI0NiwgNjYsIAotICAgIDIzNywgNzcsIDEsIDI0OSwgMzIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NywgOTIsIDIxOSwgNDksIDI0NiwgCi0gICAgNjYsIDIzNywgNzcsIDEsIDIxMCwgMjIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwOSwgMTA4LCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDEsIDIwMSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjE4LCAyMDgsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxNiwgMjIwLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICAyNDAsIDEwOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ2LCAxOTksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDYzLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA3NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMSwgNzUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDc4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICA2OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjA3LCAzOSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgMjM1LCAxNzEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMTksIDE4NCwgMjE5LCA0OSwgMjQ2LCA2NiwgCi0gICAgMjM3LCA3NywgMSwgNDYsIDIzMCwgNTQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMTAsIDY5LCAyMTksIAotICAgIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjI2LCAxODUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAKLSAgICAyMjMsIDE2MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDE1OSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgNDYsIDIwNCwgMTQ0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjIyLCAyMDUsIDIxOSwgNDksIAotICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMDMsIDEyNCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE1LCAyNDUsIAotICAgIDE0MywgMjI3LCAyOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE1LCAyNDUsIDIwOCwgMTYxLCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMjM4LCA0NSwgMjExLCA2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMjE1LCAyNDUsIDE0MywgMTYzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAxNDMsIAotICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDIzOCwgNDUsIDIxMSwgNjIsIDI0MCwgNSwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMjI3LCAyOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMjE0LCAyMzksIDIwOCwgMTYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMTQzLCAxNjMsIAotICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIAotICAgIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMjA4LCAxNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgCi0gICAgNjIsIDIwNiwgNjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNCwgMTQ5LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIAotICAgIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMTQzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDIyNiwgMjU0LCAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNiwgMjU0LCAyMDgsIDE2MSwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjM4LCA0NSwgMjExLCA2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMjI2LCAyNTQsIDE0MywgMTYzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNiwgMjU0LCAxNDMsIAotICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjM4LCA0NSwgMjExLCA2MiwgMjQwLCA1LCA5LCAyLCA2MywgOSwgCi0gICAgMiwgMzQsIDIzLCA2MywgOSwgMiwgMzQsIDIzLCAyNDksIDE1LCA5LCAyLCAzNCwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgCi0gICAgOSwgMiwgMzQsIDIzLCAxNTIsIDksIDIsIDM0LCAyMywgMjMxLCA4NSwgOSwgMiwgMzQsIDIzLCAyMjgsIDkzLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMzQsIDIzLCAyMjMsIDE5OSwgOSwgMiwgMzQsIDIzLCAyMTUsIDIyLCA5LCAyLCAyNTQsIDM0LCA5LCAyLCAKLSAgICAyNTEsIDIzMiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyNTAsIDczLCA5LCAyLCAyNTEsIDIzMywgMjMsIDI0MiwgMzAsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzOCwgMjQ2LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzOCwgMjMzLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAxNTIsIDksIDIsIDI1MSwgMjMzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAotICAgIDIsIDI1MSwgMjMzLCAyMywgMjMxLCA1OSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMjgsIDk0LCA5LCAyLCAyNTEsIDIzMywgCi0gICAgMjMsIDIxMywgMjcsIDksIDIsIDI1MSwgMjMzLCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDI1MSwgMjMzLCAKLSAgICAyMzcsIDIwOCwgOSwgMiwgMjUxLCAxNDksIDksIDIsIDI1MSwgMTUwLCAyMywgMjQ4LCAyNTIsIDksIDIsIDI1MSwgMTUwLCAKLSAgICAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyNTEsIDE1MCwgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAKLSAgICAyNTEsIDE1MCwgMjMsIDIxMywgODgsIDksIDIsIDI1MSwgMTUwLCAyMywgMjA5LCAyNDIsIDksIDIsIDI1MSwgMTIyLCA5LCAKLSAgICAyLCAyNTEsIDQ3LCA5LCAyLCAyNTEsIDQ4LCAyMywgMjQxLCAyMiwgOSwgMiwgMjUxLCA0OCwgMjMsIDIxMiwgMjQ1LCA5MSwgCi0gICAgMjM4LCA1NSwgOSwgMiwgMjUxLCAzOSwgOSwgMiwgMjUxLCA0MCwgMjMsIDI1MSwgMzksIDksIDIsIDI1MSwgNDAsIDIzLCAKLSAgICAyNDMsIDE4NiwgOSwgMiwgMjUxLCA0MCwgMjMsIDIzOCwgNTUsIDksIDIsIDI1MSwgNDAsIDIzLCAxNTIsIDksIDIsIDI1MSwgCi0gICAgNDAsIDIzLCAyMzAsIDI3LCA5LCAyLCAyNTEsIDQwLCAyMywgMjI5LCAxMDAsIDksIDIsIDI1MSwgNDAsIDIzLCAyMTMsIDQzLCAKLSAgICA5LCAyLCAyNTEsIDQwLCAyMywgMjA2LCAxODYsIDksIDIsIDI1MSwgMzYsIDksIDIsIDI1MSwgMjgsIDksIDIsIDI1MCwgCi0gICAgMjQzLCA5LCAyLCAyNTAsIDI0NCwgMjMsIDIxMywgNDMsIDksIDIsIDI1MCwgMjMxLCA5LCAyLCAyNTAsIDIzMiwgMTE1LCAKLSAgICAyNTAsIDIzMSwgOSwgMiwgMjUwLCAyMzIsIDEyNiwgMjA4LCAyMTksIDksIDIsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NywgCi0gICAgMjE5LCAyNTEsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NiwgOSwgMiwgMjUwLCAyMzIsIDkxLCAyMjMsIDk3LCAyMTEsIDE3NiwgCi0gICAgOSwgMiwgMjUwLCAyMDAsIDksIDIsIDI1MCwgMTcwLCA5LCAyLCAyNTAsIDEzOCwgOSwgMiwgMjUwLCAxMzksIDIzLCAyMjgsIAotICAgIDE4MywgOSwgMiwgMjUwLCAxMTAsIDksIDIsIDI1MCwgODAsIDksIDIsIDI1MCwgNzUsIDksIDIsIDI1MCwgNzYsIDIwMiwgCi0gICAgMzUsIDIwOSwgMTQxLCA5LCAyLCAyNTAsIDc2LCAyMzAsIDMxLCAyMDksIDE0MSwgOSwgMiwgMjUwLCA3NiwgMTE1LCAyNTAsIAotICAgIDc2LCAyMDcsIDE5OCwgMTE1LCAyMDcsIDE5OCwgMjA3LCAxOTgsIDExNSwgMjA3LCAxOTgsIDIxOSwgOTYsIDksIDIsIDI1MCwgCi0gICAgNzYsIDExNSwgMjUwLCA3NiwgMTE1LCAyNTAsIDc1LCA5LCAyLCAyNTAsIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCAKLSAgICA3NiwgMjQ1LCAxMjQsIDI1MCwgNzYsIDExNSwgMjUwLCA3NiwgMTE1LCAyNTAsIDc1LCA5LCAyLCAyNTAsIDczLCA5LCAyLCAKLSAgICAyNTAsIDY5LCA5LCAyLCAyNDksIDMyLCA5LCAyLCAyNDksIDE1LCA5LCAyLCAyNDksIDksIDksIDIsIDI0OSwgMywgOSwgMiwgCi0gICAgMjQ4LCAyNTMsIDksIDIsIDI0OCwgMjU0LCAxMTUsIDI0OCwgMjUzLCA5LCAyLCAyNDgsIDI1MiwgOSwgMiwgMTQyLCA5LCAyLCAKLSAgICAyNDgsIDIzMCwgOSwgMiwgMjQ4LCA4NiwgOSwgMiwgMjQ4LCA4NywgMjMsIDYzLCA5LCAyLCAyNDgsIDg3LCAyMywgMjM4LCAKLSAgICAyMjQsIDksIDIsIDI0OCwgODcsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQ3LCAxOTMsIDksIDIsIDI0NywgCi0gICAgMTk0LCAxMTUsIDI0NywgMTk0LCAyNTEsIDIzMiwgOSwgMiwgMjQ3LCAxOTQsIDExNSwgMjQ3LCAxOTQsIDIwNiwgMjU1LCA5LCAKLSAgICAyLCAyNDcsIDE5NCwgMjQ1LCAxMjQsIDI0NywgMTkzLCA5LCAyLCAyNDcsIDE3MSwgOSwgMiwgMjQ3LCAxNzIsIDExNSwgCi0gICAgMjQ3LCAxNzEsIDksIDIsIDI0NywgMTYwLCA5LCAyLCAyNDcsIDE1OSwgOSwgMiwgMjQ0LCAyMTIsIDksIDIsIDI0NCwgMjAzLCAKLSAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDM0LCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIAotICAgIDIzLCAyNTAsIDI0MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyNDgsIDI1MiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgCi0gICAgNjksIDIzLCAyNDgsIDg2LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOSwgOCwgOSwgMiwgMjQ0LCAyMDQsIAotICAgIDIyOSwgNjksIDIzLCAyMzksIDksIDkxLCAyMjUsIDc5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOCwgODEsIAotICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM4LCA2MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzcsIAotICAgIDIxOSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAxNTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjMwLCAKLSAgICAyMjQsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjMwLCAyMjUsIDkxLCAyMjYsIDIzOSwgOSwgMiwgMjQ0LCAyMDQsIAotICAgIDIyOSwgNjksIDIzLCAyMzAsIDEyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIyOCwgMTEzLCA5LCAyLCAyNDQsIAotICAgIDIwNCwgMjI5LCA2OSwgMjMsIDIyNiwgMjM5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIyNiwgMjQwLCA5MSwgCi0gICAgMjI1LCA3OCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIAotICAgIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NiwgOSwgMiwgCi0gICAgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMTIsIDE2MiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMDksIDI0MiwgCi0gICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMDcsIDQxLCA5MSwgMjM4LCA2MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgCi0gICAgNjksIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjQ0LCAxNzUsIDksIDIsIDI0NCwgMTU0LCA5LCAyLCAyNDQsIDE1MywgOSwgMiwgCi0gICAgMjQ0LCAxNTIsIDksIDIsIDI0MywgMjMzLCA5LCAyLCAyNDMsIDIxNSwgOSwgMiwgMjQzLCAxODgsIDksIDIsIDI0MywgMTg5LCAKLSAgICAyMywgMjEzLCA0MywgOSwgMiwgMjQzLCAxODYsIDksIDIsIDI0MywgMTc2LCA5LCAyLCAyNDMsIDE3NywgMjI5LCAyMzIsIAotICAgIDEwNiwgMjM3LCAyMDksIDI0MywgMTU2LCA5LCAyLCAyNDMsIDE1NiwgOSwgMiwgMjQyLCA0MiwgOSwgMiwgMjQyLCA0MywgCi0gICAgMTE1LCAyNDIsIDQyLCA5LCAyLCAyNDIsIDQzLCAyMzcsIDIwOCwgOSwgMiwgMjQyLCA0MywgMjEzLCAyNCwgOSwgMiwgMjQyLCAKLSAgICA0MCwgOSwgMiwgMjQyLCA0MSwgMjMsIDI0MSwgNCwgOSwgMiwgMjQyLCAzOSwgOSwgMiwgMjQyLCAzNywgOSwgMiwgMjQyLCAKLSAgICAzNiwgOSwgMiwgMjQyLCAzNSwgOSwgMiwgMjQyLCAzMSwgOSwgMiwgMjQyLCAyOSwgOSwgMiwgMjQyLCAzMCwgMjM3LCAyMDgsIAotICAgIDksIDIsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjQyLCAyOCwgOSwgMiwgMjQyLCAyMSwgOSwgMiwgCi0gICAgNzQsIDksIDIsIDE4OCwgMjMsIDIxOSwgOTYsIDksIDIsIDE4OCwgMTE1LCAxODgsIDIyMSwgNDEsIDExNSwgMjIxLCA0MCwgCi0gICAgOSwgMiwgMjQxLCAxOTAsIDksIDIsIDI0MSwgMTkxLCAyMywgMzQsIDkxLCAyMzcsIDE2MCwgOTEsIDI0NCwgMjEyLCA5LCAyLCAKLSAgICAyNDEsIDE5MSwgMjMsIDIzOCwgMjI0LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyNDEsIDE5MSwgMjMsIAotICAgIDIxNSwgOCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDEsIDE5MSwgMjMsIDY4LCA5LCAyLCAyNDEsIAotICAgIDE2MywgOSwgMiwgMjQxLCAxNTEsIDksIDIsIDI0MSwgMTIyLCA5LCAyLCAyNDEsIDkyLCA5LCAyLCAyNDEsIDkzLCAyMywgCi0gICAgMjM4LCAyMzIsIDksIDIsIDI0MSwgOTMsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDI0MSwgOTMsIDIzLCAyMjUsIAotICAgIDIwLCA5LCAyLCAyNDEsIDkzLCAyNDUsIDEyNCwgMjQxLCA5MiwgOSwgMiwgMjQxLCA5MywgMjE5LCAyNTEsIDI0MSwgOTIsIAotICAgIDksIDIsIDI0MSwgOTMsIDIxMSwgMTc2LCA5LCAyLCAyNDEsIDI1LCA5LCAyLCAyNDEsIDIyLCA5LCAyLCAyNDEsIDQsIDksIAotICAgIDIsIDI0MCwgMTc5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDYzLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDM0LCA5MSwgMjI4LCAzMCwgCi0gICAgOSwgMiwgMjQwLCAxODAsIDIzLCAzNCwgOTEsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjMsIAotICAgIDI1MCwgMjMxLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0OSwgMTUsIDksIDIsIDI0MCwgMTgwLCAyMywgMjQyLCAzMCwgMjM3LCAKLSAgICAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjQyLCAzMCwgMjM3LCAyMDksIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIAotICAgIDE1MiwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzcsIDE2MCwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjMxLCA4NiwgCi0gICAgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI5LCAyMzEsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI5LCAyMzIsIAotICAgIDIxMSwgMTc2LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMjA3LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMTEzLCA5LCAKLSAgICAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyNywgMTQ4LCA5LCAKLSAgICAyLCAyNDAsIDE4MCwgMjMsIDIyNiwgMjM5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIwNywgNDAsIDksIDIsIDI0MCwgMTgwLCAKLSAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjM5LCA4LCA5LCAyLCAyMzksIDksIDIzNywgMjA4LCA5LCAyLCAyMzksIDYsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDM0LCA5MSwgMjQ0LCAyMTMsIDkxLCAxNTIsIDksIDIsIDIzOSwgNywgMjMsIDM0LCA5MSwgMTUyLCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAzNCwgOTEsIDIzMSwgODUsIDksIDIsIDIzOSwgNywgMjMsIDI1MSwgMTUwLCAyMDksIDE0MiwgOTEsIAotICAgIDIxMCwgMTAsIDksIDIsIDIzOSwgNywgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDc1LCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAyNTAsIDc0LCA5MSwgMjM4LCAyNDYsIDksIDIsIDIzOSwgNywgMjMsIDI0OSwgMTUsIDksIDIsIDIzOSwgCi0gICAgNywgMjMsIDI0OCwgMjMxLCA5MSwgMjE2LCAyMjAsIDksIDIsIDIzOSwgNywgMjMsIDI0NywgMTYwLCA5LCAyLCAyMzksIDcsIAotICAgIDIzLCAyNDcsIDE2MSwgOTEsIDIxNiwgMjIwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDQsIDIxMiwgOSwgMiwgMjM5LCA3LCAyMywgCi0gICAgMjQzLCAyMzMsIDksIDIsIDIzOSwgNywgMjMsIDI0MywgMTg5LCAyMywgMjEzLCA0MywgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAKLSAgICA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjQxLCAxMjIsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgMTIzLCA5MSwgMjI4LCAxMTMsIAotICAgIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgOTIsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgOTMsIDIzLCAyMzgsIDIzMywgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjQsIDksIAotICAgIDIsIDIzOSwgNywgMjMsIDIzOCwgODEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgNzksIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgCi0gICAgODAsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCA2NCwgOTEsIDIxMSwgMTAsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDIzNywgMTYwLCA5MSwgMjI2LCAyNDAsIDkxLCAyNDEsIDQsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgMTQwLCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAyMzcsIDE0MSwgOTEsIDIyOCwgMTEzLCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIDQsIDkxLCAyMjcsIAotICAgIDE0OCwgOSwgMiwgMjM5LCA3LCAyMywgMjM2LCAyMSwgOSwgMiwgMjM5LCA3LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAotICAgIDIsIDIzOSwgNywgMjMsIDIzMCwgMjEwLCA5MSwgMjM2LCAyNywgOTEsIDI1MCwgNzUsIDksIDIsIDIzOSwgNywgMjMsIDIzMCwgCi0gICAgMTIsIDksIDIsIDIzOSwgNywgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAyMjksIDk0LCA5LCAyLCAyMzksIDcsIAotICAgIDIzLCAyMjksIDk1LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAyMDgsIDkxLCAyNTAsIDIzMSwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjI4LCAxMTMsIDksIDIsIDIzOSwgNywgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjM5LCA3LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjIxLCA0MSwgCi0gICAgMTE1LCAyMjEsIDQwLCA5LCAyLCAyMzksIDcsIDIzLCAxODUsIDksIDIsIDIzOSwgNywgMjMsIDIxNSwgOCwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjE0LCAyMzAsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgNDQsIAotICAgIDkxLCAyMDcsIDE4MSwgOSwgMiwgMjM5LCA3LCAyMywgMjEzLCA5LCA5LCAyLCAyMzksIDcsIDIzLCAyMTAsIDIyMCwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzOSwgNywgMjMsIDY4LCA5LCAyLCAyMzksIDcsIDIzLCAyMDcsIDI5LCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAyMDcsIDMwLCA5MSwgMjQyLCA0MiwgOSwgMiwgMjM5LCA3LCAxMTUsIDIzOSwgNiwgOSwgMiwgCi0gICAgMjM5LCAxLCA5LCAyLCAyMzksIDIsIDI0NSwgMTI0LCAyMzksIDEsIDksIDIsIDIzOCwgMjU1LCA5LCAyLCAyMzksIDAsIAotICAgIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMjM4LCAyNDYsIDksIDIsIDIzOCwgMjQ3LCAKLSAgICAyMzksIDAsIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMjM4LCAyNDUsIDksIDIsIDIzOCwgCi0gICAgMjQzLCA5LCAyLCAyMzgsIDIzNCwgOSwgMiwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM4LCAKLSAgICAyMzMsIDExNSwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjMzLCAyNDUsIDEyNCwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjI0LCAKLSAgICA5LCAyLCAyMzgsIDIyMywgOSwgMiwgMjM4LCAyMTgsIDksIDIsIDIzOCwgMTYyLCA5LCAyLCAyMzgsIDE2MywgMjMsIDIyOCwgCi0gICAgMTgzLCA5LCAyLCAyMzgsIDgxLCA5LCAyLCAyMzgsIDgyLCAyMywgNzQsIDksIDIsIDIzOCwgODIsIDIzLCA2OCwgOSwgMiwgCi0gICAgMjM4LCA4MiwgMjQ1LCAxMjQsIDIzOCwgODEsIDksIDIsIDIzOCwgNzksIDksIDIsIDIzOCwgODAsIDExNSwgMjM4LCA3OSwgCi0gICAgOSwgMiwgMjM4LCA4MCwgMjQ1LCAxMjQsIDIzOCwgNzksIDksIDIsIDIzOCwgNzYsIDksIDIsIDIzOCwgNjMsIDksIDIsIAotICAgIDIzOCwgNjQsIDIzNywgMjA4LCA5LCAyLCAyMzgsIDYxLCA5LCAyLCAyMzgsIDYyLCAyMywgMzQsIDkxLCAyMzEsIDg1LCA5LCAKLSAgICAyLCAyMzgsIDYyLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzgsIDYyLCAyMywgMjMxLCA4NSwgOSwgMiwgCi0gICAgMjM4LCA2MiwgMjMsIDIyNiwgMjQwLCA5MSwgMjMxLCA4NSwgOSwgMiwgMjM4LCA2MiwgMjMsIDE4NSwgOSwgMiwgMjM4LCAKLSAgICA1NywgOSwgMiwgMjM4LCA1NSwgOSwgMiwgMjM4LCA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzOCwgNTYsIDIzLCAKLSAgICAyNDksIDE1LCA5LCAyLCAyMzgsIDU2LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzOCwgNTYsIDIwOSwgMTQxLCA5LCAyLCAyMzcsIAotICAgIDIzMCwgOSwgMiwgMjM3LCAyMzEsIDI0NSwgMTI0LCAyMzcsIDIzMCwgOSwgMiwgMjM3LCAyMjgsIDksIDIsIDIzNywgMjI5LCAKLSAgICAyMywgMjMwLCAxMiwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMzAsIDEzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIAotICAgIDIzNywgMjI5LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMTUsIDksIDkxLCAyMDcsIDE5NywgOSwgMiwgCi0gICAgMjM3LCAyMjksIDIzNywgMjA4LCA5LCAyLCAyMzcsIDIxOSwgOSwgMiwgMjM3LCAyMjAsIDIzLCAzNCwgOTEsIDIyOCwgMTgzLCAKLSAgICA5LCAyLCAyMzcsIDIyMCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMzcsIDIyMCwgMTE1LCAyMzcsIDIyMCwgMjI2LCAyMzAsIDksIAotICAgIDIsIDIzNywgMjEyLCA5LCAyLCAyMzcsIDIxMCwgOSwgMiwgMjM3LCAyMTEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzcsIDIwMiwgCi0gICAgOSwgMiwgMjM3LCAyMDEsIDksIDIsIDIzNywgMTk3LCA5LCAyLCAyMzcsIDE5NiwgOSwgMiwgMTUyLCA5LCAyLCAyMzcsIAotICAgIDE2MCwgMjA5LCAxNDEsIDksIDIsIDIzNywgMTYwLCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAxNDAsIDksIDIsIDIzNywgMywgOSwgCi0gICAgMiwgMjM3LCA0LCAyMywgMjUwLCA3NSwgOSwgMiwgMjM3LCA0LCAyMywgMjUwLCA3MywgOSwgMiwgMjM3LCA0LCAyMywgMjQ5LCAKLSAgICAxNSwgOSwgMiwgMjM3LCA0LCAyMywgMjQzLCAxNTYsIDksIDIsIDIzNywgNCwgMjMsIDIzOCwgMjU1LCA5LCAyLCAyMzcsIDQsIAotICAgIDIzLCAyMjksIDg0LCA5LCAyLCAyMzcsIDQsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMzcsIDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAKLSAgICAyMzcsIDQsIDIzLCA2OCwgOSwgMiwgMjM2LCAyNiwgOSwgMiwgMjM2LCAyMSwgOSwgMiwgMjM2LCAyMiwgMjMsIDI1MCwgCi0gICAgMjMxLCA5LCAyLCAyMzYsIDIyLCAyMywgMjM3LCAxNDAsIDksIDIsIDIzNiwgMjIsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM2LCAKLSAgICAyMiwgMjMsIDIyNywgOTIsIDksIDIsIDIzNiwgMjIsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMzYsIDE3LCA5LCAyLCA3NSwgOSwgCi0gICAgMiwgMjM1LCAyMDYsIDYzLCA5LCAyLCAyMzUsIDE2NiwgOSwgMiwgMjMxLCAxMTMsIDksIDIsIDIzMSwgMTE0LCAxMTUsIAotICAgIDIzMSwgMTE0LCAyNDcsIDE2MCwgOSwgMiwgMjMxLCAxMTQsIDExNSwgMjMxLCAxMTQsIDIxMSwgMTc2LCA5LCAyLCAyMzEsIAotICAgIDg4LCA5LCAyLCAyMzEsIDg1LCA5LCAyLCAyMzEsIDg2LCAyNDMsIDIxNSwgOSwgMiwgMjMxLCA4NiwgMjE2LCA1NywgOSwgMiwgCi0gICAgMjMxLCA4NiwgMTE1LCAyMzEsIDg2LCAyMTIsIDI0OSwgMTE1LCAyMTIsIDI0OSwgMjA3LCAzMCwgMTE1LCAyMDcsIDI5LCA5LCAKLSAgICAyLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjMxLCA3NywgOSwgMiwgMjMxLCA3OCwgMjMsIDIzOCwgMjMzLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjMxLCA3NiwgOSwgMiwgMjMxLCA2NiwgOSwgMiwgMjMxLCA2NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAKLSAgICAyMzEsIDY3LCAyNDUsIDEyNCwgMjMxLCA2NiwgOSwgMiwgMjMxLCA2NywgMjE5LCAyNTEsIDIzMSwgNjYsIDksIDIsIDIzMSwgCi0gICAgNjcsIDIxMSwgMTc2LCA5LCAyLCAyMzEsIDU5LCA5LCAyLCAyMzEsIDQ5LCA5LCAyLCAyMzAsIDIyNCwgOSwgMiwgMjMwLCAKLSAgICAyMDksIDksIDIsIDE3MywgOSwgMiwgMjMwLCA0NCwgMjMsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUxLCAxMjIsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyNTEsIDEyMywgOTEsIDIyOCwgMjA3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUwLCA3MywgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDI0OSwgMTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDgsIDI1MiwgOSwgMiwgMjMwLCA0NCwgMjMsIAotICAgIDE0MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0OCwgODYsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDEsIDIyLCA5LCAyLCAyMzAsIAotICAgIDQ0LCAyMywgMjQxLCA0LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM5LCA4LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyNDYsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDIyNCwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIzOCwgMjI1LCA5MSwgMjEzLCA4OSwgOTEsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA4MSwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNjMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDU2LCA5MSwgMjE0LCAyMzAsIDksIAotICAgIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjMwLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM3LCAyMDEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMzAsIDQ0LCAKLSAgICAyMywgMjMxLCA2NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzMCwgMTIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjksIDEwMCwgOSwgCi0gICAgMiwgMjMwLCA0NCwgMjMsIDIyOSwgOTQsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjcsIDE0OCwgOSwgMiwgMjMwLCA0NCwgMjMsIAotICAgIDIyNiwgMjM5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAyMCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjEsIDkxLCAKLSAgICAyNDIsIDQyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAyMSwgOTEsIDIzOCwgODEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIAotICAgIDIxLCA5MSwgMjA5LCAxODcsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNCwgCi0gICAgMTU2LCA5MSwgMjIxLCAzNSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjIxLCAKLSAgICA0MCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxOCwgMTY3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjE1LCAxNDUsIDksIDIsIDIzMCwgCi0gICAgNDQsIDIzLCAyMTUsIDM2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjE0LCAyMzAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDkwLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA0MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgOSwgOSwgMiwgMjMwLCA0NCwgMjMsIAotICAgIDIxMiwgMTk5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEyLCAxNDksIDksIDIsIDIzMCwgNDQsIDIzLCAyMTAsIDIyOSwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIwOSwgMjE4LCA5LCAyLCAyMzAsIDQ0LCAyMywgNjgsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDQwLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMiwgMjMsIDE4NSwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjAyLCAzOSwgOSwgMiwgMjMwLCA0MiwgOSwgMiwgCi0gICAgMjMwLCA0MywgMjQ1LCAxMjQsIDIzMCwgNDIsIDksIDIsIDIzMCwgMzIsIDksIDIsIDIzMCwgMjksIDksIDIsIDIzMCwgMjcsIAotICAgIDksIDIsIDIzMCwgMjYsIDksIDIsIDIzMCwgMjQsIDksIDIsIDIzMCwgMjUsIDExNSwgMjMwLCAyNCwgOSwgMiwgMjMwLCAxMiwgCi0gICAgOSwgMiwgMjMwLCAxMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMzAsIDgsIDksIDIsIDIzMCwgOSwgMjMsIAotICAgIDI0OSwgMTUsIDksIDIsIDIzMCwgOSwgMjQ1LCAxMjQsIDIzMCwgOCwgOSwgMiwgMjMwLCA2LCA5LCAyLCAyMzAsIDUsIDksIAotICAgIDIsIDIyOSwgMjMxLCA5LCAyLCAyMjksIDIzMiwgMjI4LCA5NSwgMjMsIDEwNiwgMTE1LCAyMjgsIDk1LCAyMywgNjgsIDksIAotICAgIDIsIDIyOSwgMjMyLCAxMTUsIDIyOSwgMjMyLCAyMjgsIDk1LCAyMywgMTA2LCAxMTUsIDIyOCwgOTUsIDIzLCA2OCwgOSwgMiwgCi0gICAgMjI5LCAxNzEsIDksIDIsIDIyOSwgMTAwLCA5LCAyLCAyMjksIDEwMSwgMjMsIDI0OSwgMTUsIDksIDIsIDIyOSwgMTAxLCAKLSAgICAyMywgNjgsIDksIDIsIDIyOSwgMTAxLCAyMywgMjA3LCAyOSwgOSwgMiwgMjI5LCA5NCwgOSwgMiwgMjI5LCA4NCwgOSwgMiwgCi0gICAgMjI5LCA3MSwgOSwgMiwgMjI5LCA3MCwgOSwgMiwgMjI5LCA2OCwgOSwgMiwgMjI5LCA2OSwgMTE1LCAyMjksIDY4LCA5LCAyLCAKLSAgICAyMjgsIDIwOSwgOSwgMiwgMjI4LCAyMTAsIDExNSwgMjM3LCA0LCAyMywgMjUwLCA3NCwgMjI4LCAyMTAsIDExNSwgMjM3LCAKLSAgICA0LCAyMywgMjUwLCA3MywgOSwgMiwgMjI4LCAyMDcsIDksIDIsIDIyOCwgMjA1LCA5LCAyLCAyMjgsIDIwNiwgMjA2LCA2OSwgCi0gICAgMTgsIDksIDIsIDIyOCwgMjA0LCA5LCAyLCAyMjgsIDE5NiwgOSwgMiwgMjI4LCAxOTcsIDIzNywgMjA4LCA5LCAyLCAyMjgsIAotICAgIDE5NSwgOSwgMiwgMjI4LCAxODMsIDksIDIsIDIyOCwgMTg0LCAyMTksIDI1MSwgMjI4LCAxODMsIDksIDIsIDIyOCwgMTc3LCAKLSAgICA5LCAyLCAyMjgsIDE1NSwgOSwgMiwgMjI4LCAxMTMsIDksIDIsIDIyOCwgOTQsIDksIDIsIDIyOCwgOTUsIDIzLCA2MywgOSwgCi0gICAgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgMjQ0LCAyMTMsIDkxLCAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIAotICAgIDIzOCwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjUxLCAzOSwgCi0gICAgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjUwLCA3NiwgMjAyLCAzNSwgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIyOCwgOTUsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjgsIDk1LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDI0NCwgMTU0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjQxLCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzOSwgOCwgCi0gICAgOSwgMiwgMjI4LCA5NSwgMjMsIDIzOCwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjM3LCAyMTksIDksIDIsIDIyOCwgOTUsIAotICAgIDIzLCAyMzcsIDIyMCwgOTEsIDIzNywgMjE5LCA5LCAyLCAyMjgsIDk1LCAyMywgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgCi0gICAgMjM3LCAxNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzcsIDQsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCAKLSAgICA4NiwgMjM3LCAyMDgsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY2LCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NywgOTEsIAotICAgIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjcsIDkxLCAyMjYsIDIzOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOSwgCi0gICAgMTAwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjI5LCA4NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIAotICAgIDk1LCAyMywgMjI4LCAxOTYsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjgsIDE5NywgOTEsIDIzNywgNCwgOTEsIDYzLCA5LCAyLCAKLSAgICAyMjgsIDk1LCAyMywgMjI4LCA5NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNywgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjYsIAotICAgIDIzOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNiwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI1LCAyMCwgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjIzLCAxOTksIDksIDIsIDIyOCwgOTUsIAotICAgIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMywgNDQsIDkxLCAyMTAsIDIyMCwgOSwgMiwgMjI4LCA5NSwgCi0gICAgMjMsIDIxMiwgMjQ1LCA5MSwgMjM4LCA1NiwgOTEsIDI0MSwgMjIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTIsIDI0NSwgOTEsIAotICAgIDIzOCwgNTYsIDIwOSwgMTQxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAxOTcsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTIsIAotICAgIDE5OCwgOTEsIDIxMiwgMTk3LCA5LCAyLCAyMjgsIDk1LCAyMywgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIAotICAgIDI1NSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAxODgsIDkxLCAzNCwgCi0gICAgOTEsIDIxMSwgMTEsIDkxLCAyMDEsIDIwMSwgOSwgMiwgMjI4LCA5NSwgMjMsIDY4LCA5LCAyLCAyMjgsIDk1LCAyMywgMTA2LCAKLSAgICA5MSwgNjMsIDksIDIsIDIyOCwgOTUsIDIzLCAxMDYsIDkxLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNywgCi0gICAgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjgsIDk1LCAyMywgMjA3LCAyOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNiwgMTg2LCAKLSAgICA5LCAyLCAyMjgsIDk1LCAyMTEsIDE3NiwgOSwgMiwgMjI4LCA5MiwgOSwgMiwgMjI4LCA5MywgMjMsIDIxMywgNDMsIDksIDIsIAotICAgIDIyOCwgOTMsIDIzLCAyMTMsIDQ0LCA5MSwgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTMsIDIzNywgMjA4LCA5LCAyLCAyMjgsIAotICAgIDkzLCAyMzcsIDIwOSwgMTE1LCAyMjgsIDkzLCAyMzcsIDIwOSwgMjEzLCA0MywgOSwgMiwgMjI4LCA4OCwgOSwgMiwgMjI4LCAKLSAgICAzMCwgOSwgMiwgMjI4LCAzMSwgMjMsIDIyOCwgMzAsIDksIDIsIDIyOCwgMjgsIDksIDIsIDIyOCwgMjksIDIzLCAyMjgsIAotICAgIDE4MywgOSwgMiwgMjI4LCAyOSwgMjMsIDIyOCwgMTg0LCA5MSwgMjE1LCAxNDUsIDksIDIsIDIyNywgMTQ4LCA5LCAyLCAKLSAgICAyMjcsIDEyOSwgOSwgMiwgMjI3LCAxMTcsIDksIDIsIDIyNywgOTIsIDksIDIsIDIyNiwgMjM5LCA5LCAyLCAyMjYsIDI0MCwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI1MSwgMzksIDksIDIsIDIyNiwgMjM4LCAKLSAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNDEsIDQsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQxLCA1LCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM3LCA0LCAKLSAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzEsIDY2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjksIDksIAotICAgIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyNywgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI4LCA5MSwgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMjksIDEwMCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjgsIDExNCwgOTEsIDI1MCwgNzUsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjI4LCA5NCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjEsIDg0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIAotICAgIDIxMiwgMTYzLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTIsIDE0MSwgOTEsIDI0NywgMTkzLCA5LCAyLCAKLSAgICAyMjYsIDIzOCwgMjMsIDIwNywgMTk3LCA5LCAyLCAyMjYsIDIzOCwgMjA5LCAxNDEsIDksIDIsIDIyNiwgMjM4LCAyNDUsIAotICAgIDEyNCwgMjI2LCAyMzcsIDksIDIsIDIyNiwgMjM4LCAyMTksIDI1MSwgMjI2LCAyMzcsIDksIDIsIDIyNiwgMjM4LCAyMTEsIAotICAgIDE3NiwgOSwgMiwgMjI2LCAyMzgsIDIxMywgMjQsIDksIDIsIDIyNiwgMjM2LCA5LCAyLCAyMjYsIDIzMCwgOSwgMiwgMjI2LCAKLSAgICAyMzEsIDExNSwgMjI2LCAyMzAsIDksIDIsIDIyNiwgMjMxLCAyMTksIDI1MSwgMjI2LCAyMzAsIDksIDIsIDIyNiwgMjMxLCAKLSAgICAyMTMsIDI0LCA5LCAyLCAyMjYsIDIyNywgOSwgMiwgMjI2LCAyMjQsIDksIDIsIDIyNiwgMjIyLCA5LCAyLCAyMjYsIDIyMywgCi0gICAgMTE1LCAyMjYsIDIyMiwgOSwgMiwgMjI2LCAyMjMsIDExNSwgMjI2LCAyMjMsIDIzOCwgMjI1LCAxMTUsIDIzOCwgMjI0LCA5LCAKLSAgICAyLCAxOTIsIDksIDIsIDIyNSwgMTc3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIyNSwgMTc3LCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjI1LCAxNzYsIDksIDIsIDIyNSwgMTQ4LCA5LCAyLCAyMjUsIDEwMCwgOSwgMiwgMjI1LCA3OSwgOSwgMiwgMjI1LCA3OCwgCi0gICAgOSwgMiwgMjI1LCAyMCwgOSwgMiwgMjI0LCAyMjgsIDksIDIsIDIyNCwgMTU1LCA5LCAyLCAyMjQsIDExMCwgOSwgMiwgMjIzLCAKLSAgICAyNDYsIDksIDIsIDIyMywgMjQ3LCAxMTUsIDIyMywgMjQ2LCA5LCAyLCAyMjMsIDIzNSwgOSwgMiwgMjIzLCAyMzYsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyMjMsIDIxNywgOSwgMiwgMjIzLCAyMDMsIDksIDIsIDIyMywgMTk5LCA5LCAyLCAyMjMsIDIwMCwgMjMsIAotICAgIDYzLCA5LCAyLCAyMjMsIDIwMCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMjMsIDIwMCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAKLSAgICAyMjMsIDIwMCwgMTE1LCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIDIzLCAzNCwgOTEsIDIwMSwgCi0gICAgMjAxLCA5LCAyLCAyMjMsIDIwMCwgMjQ1LCAxMjQsIDIyMywgMTk5LCA5LCAyLCAyMjMsIDE5NywgOSwgMiwgMjIzLCAxOTgsIAotICAgIDIzLCA2MywgOSwgMiwgMjIzLCAxOTgsIDIzLCAzNCwgOTEsIDI0MywgMjMzLCA5LCAyLCAyMjMsIDE5OCwgMjMsIDI0MywgCi0gICAgMjMzLCA5LCAyLCAyMjMsIDE5OCwgMjM3LCAyMDgsIDksIDIsIDIwMSwgMjAxLCA5LCAyLCAyMjMsIDEwOSwgOSwgMiwgMjIzLCAKLSAgICA5NiwgOSwgMiwgMjIzLCA5NywgMjMwLCAyMzgsIDksIDIsIDIyMywgOTcsIDIzLCAyMTIsIDIwMCwgMjA5LCAxNDEsIDksIDIsIAotICAgIDIyMywgOTcsIDIxOSwgMjUxLCAyMjMsIDk2LCA5LCAyLCAyMjMsIDk1LCA5LCAyLCAyMjMsIDg4LCAyMjEsIDI2LCA5LCAyLCAKLSAgICAyMjMsIDg3LCA5LCAyLCAyMjMsIDg2LCA5LCAyLCAyMjIsIDI0MCwgOSwgMiwgMjIyLCAyNDEsIDIzLCA2MywgOSwgMiwgCi0gICAgMjIyLCAyNDEsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjIsIDI0MSwgMjEzLCAyNCwgOSwgMiwgMjIyLCAxMDAsIDksIDIsIAotICAgIDIyMiwgMTAxLCAyMywgNzQsIDksIDIsIDIyMiwgOTksIDksIDIsIDIyMiwgNjksIDksIDIsIDIyMiwgNzAsIDIzLCAyMzgsIAotICAgIDIzMywgMjA5LCAxNDEsIDksIDIsIDIyMiwgNzAsIDIzLCAyMzgsIDIyNSwgOTEsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgCi0gICAgMjIyLCA2NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjIyLCA2NiwgMjMsIDI1MCwgNzYsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAyMTksIDksIDIsIAotICAgIDIyMiwgNjYsIDIzLCAyMjUsIDIxLCA5MSwgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjIyLCAKLSAgICAyNDAsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0MywgOSwgMiwgMjIyLCAKLSAgICA2NiwgMjMsIDIxMywgNDQsIDkxLCAzNCwgMjUwLCAyMzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMjUwLCAKLSAgICA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDQsIDkxLCAyNTAsIDc2LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgCi0gICAgMjMsIDIwNywgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjA2LCAxODYsIDksIDIsIDIyMiwgNTMsIDksIAotICAgIDIsIDIyMSwgODQsIDksIDIsIDIyMSwgNTYsIDksIDIsIDIyMSwgNDAsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAKLSAgICAyMzgsIDIyNCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIDIyNSwgNzksIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIAotICAgIDIzLCAyMTUsIDgsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMTUsIDksIDExNSwgMjIxLCA0MSwgMjI4LCA5MywgCi0gICAgMjMsIDIxNSwgOCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMjEsIDQxLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjIxLCA0MSwgMTE1LCAyMjEsIDQwLCA5LCAyLCAyMjEsIDQxLCAyNDUsIDEyNCwgMjIxLCA0MCwgOSwgMiwgCi0gICAgMjIxLCA0MSwgMjQ1LCAxMjQsIDIyMSwgNDEsIDIyOCwgOTMsIDExNSwgMjI4LCA5MiwgOSwgMiwgMjIxLCAzNSwgOSwgMiwgCi0gICAgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNTAsIDY5LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI0OCwgODYsIDksIAotICAgIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjQyLCAzNywgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMzcsIDIxOSwgCi0gICAgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIAotICAgIDIzLCAyMzAsIDI3LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMjEsIDM2LCAyNTEsIAotICAgIDE1MCwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIxMiwgMTM4LCA5LCAyLCAyMjEsIDM2LCAKLSAgICAyNTEsIDE1MCwgMjMsIDIwNywgNDAsIDksIDIsIDIyMSwgMzYsIDIyOSwgNjksIDIzLCAyNDgsIDg2LCA5LCAyLCAyMjEsIAotICAgIDM2LCAyMjksIDY5LCAyMywgMjQ4LCA4NywgNjgsIDksIDIsIDE4NSwgOSwgMiwgMjE5LCAxNTksIDksIDIsIDIxOSwgMTIyLCAKLSAgICA5LCAyLCAyMTksIDk2LCA5LCAyLCAyMTgsIDIyMiwgOSwgMiwgMjE4LCAxNjcsIDksIDIsIDIxOCwgMTY4LCAyMywgNjMsIDksIAotICAgIDIsIDIxOCwgMTY4LCAyMywgMjUxLCAyMzIsIDksIDIsIDIxOCwgMTY4LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjE4LCAxNjgsIAotICAgIDIzLCAyNDcsIDE5MywgOSwgMiwgMjE4LCAxNjgsIDIzLCA3NCwgOSwgMiwgMjE4LCAxNjgsIDIzLCA3NSwgOSwgMiwgMjE4LCAKLSAgICAxNjgsIDIzLCAyMzUsIDE2NiwgOSwgMiwgMjE4LCAxNjgsIDIzLCA2OCwgOSwgMiwgMjE4LCAxNjgsIDIzLCAyMDcsIDQwLCAKLSAgICA5LCAyLCAyMTgsIDE2OCwgMjQ1LCAxMjQsIDIxOCwgMTY3LCA5LCAyLCAyMTgsIDEwOSwgOSwgMiwgMjE4LCAxMTAsIDIzLCAKLSAgICAyMzAsIDgsIDksIDIsIDIxOCwgMTEwLCAyMywgMjA3LCAyOSwgOSwgMiwgMjE4LCAxMTAsIDIzLCAyMDIsIDExNiwgOSwgMiwgCi0gICAgMjE4LCAxMTAsIDIxOSwgMjUxLCAyMTgsIDEwOSwgOSwgMiwgMjE2LCAyMjAsIDksIDIsIDIxNiwgMjE0LCA5LCAyLCAyMTYsIAotICAgIDU3LCA5LCAyLCAyMTUsIDE0NSwgOSwgMiwgMjE1LCAzNiwgOSwgMiwgMjE1LCAyMywgMjIxLCAyNiwgOSwgMiwgMjE1LCAyMiwgCi0gICAgOSwgMiwgMjE1LCAyMywgMjMsIDYzLCA5LCAyLCAyMTUsIDIzLCAyMywgMjQyLCA0MiwgOSwgMiwgMjE1LCAyMywgMjMsIAotICAgIDI0MiwgNDAsIDksIDIsIDIxNSwgMjMsIDIzLCAxNTIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMzAsIDEyLCA5LCAyLCAyMTUsIAotICAgIDIzLCAyMywgMjI4LCAxODMsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjE1LCAyMywgMjMsIDIyNCwgCi0gICAgMTU1LCA5LCAyLCAyMTUsIDIzLCAyMywgMjIxLCA0MCwgOSwgMiwgMjE1LCAyMywgMjMsIDIxNSwgOCwgOSwgMiwgMjE1LCAKLSAgICAyMywgMjMsIDIxMywgOSwgOSwgMiwgMjE1LCAyMywgMjMsIDIxMCwgMTAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDQwLCAKLSAgICA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCAzNSwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgNiwgOSwgMiwgMjE1LCAyMywgMjMsIAotICAgIDIwNiwgMjEwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA2LCAxODYsIDksIDIsIDIxNSwgMjMsIDExNSwgMjE1LCAyMiwgOSwgMiwgCi0gICAgMjE1LCAyMywgMjM3LCAyMDgsIDksIDIsIDIxNSwgOCwgOSwgMiwgMjE1LCA5LCAyMjgsIDk1LCAyMywgMjUwLCA3MywgOSwgCi0gICAgMiwgMjE0LCAyMzgsIDksIDIsIDIxNCwgMjMwLCA5LCAyLCAyMTMsIDkwLCA5LCAyLCAyMTMsIDg4LCA5LCAyLCAyMTMsIDg5LCAKLSAgICAyMywgNjMsIDksIDIsIDIxMywgODksIDIzLCAyNDksIDE1LCA5LCAyLCAyMTMsIDg5LCAyMywgMjM4LCA1NSwgOSwgMiwgCi0gICAgMjEzLCA4OSwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMTMsIDg5LCAyMywgMjEyLCAxOTcsIDksIDIsIDIxMywgODksIDIzLCAKLSAgICAyMDcsIDE4MSwgOSwgMiwgMjEzLCA4OSwgMjMsIDY4LCA5LCAyLCAyMTMsIDg5LCAyMywgMTA2LCA5MSwgNjMsIDksIDIsIAotICAgIDIxMywgODYsIDksIDIsIDIxMywgODQsIDksIDIsIDIxMywgNTksIDksIDIsIDIxMywgNDMsIDksIDIsIDIxMywgNDQsIDIzNiwgCi0gICAgMjYsIDksIDIsIDIxMywgNDQsIDExNSwgMjEzLCA0NCwgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIxMywgNDQsIDExNSwgMjEzLCA0NCwgMjEwLCAxMSwgMTE1LCAyMTAsIDExLCAyMzgsIDIyNSwgMTE1LCAKLSAgICAyMzgsIDIyNCwgOSwgMiwgMjEzLCAzNiwgOSwgMiwgMjEzLCAzMSwgOSwgMiwgMjEzLCAyNywgOSwgMiwgMjEzLCAyNiwgOSwgCi0gICAgMiwgMjEzLCAyMywgOSwgMiwgMjEzLCA5LCA5LCAyLCAyMTMsIDEwLCAyMywgNjMsIDksIDIsIDIxMywgMTAsIDIzLCAyMzEsIAotICAgIDY2LCA5LCAyLCAyMTMsIDMsIDksIDIsIDIxMywgNCwgMjMsIDYzLCA5LCAyLCAyMTMsIDQsIDIzLCAyNDgsIDI1MywgOSwgMiwgCi0gICAgMjEzLCA0LCAyMywgMjQ3LCAxNzEsIDksIDIsIDIxMywgNCwgMjMsIDI0MywgMTc2LCA5LCAyLCAyMTMsIDQsIDIzLCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjEzLCA0LCAyMywgMjMxLCA4NSwgOSwgMiwgMjEzLCA0LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAotICAgIDIsIDIxMywgNCwgMjMsIDIyOCwgMTc3LCA5LCAyLCAyMTMsIDQsIDIzLCAyMjYsIDIyNCwgOSwgMiwgMjEzLCA0LCAyMywgCi0gICAgMjIzLCAyMzUsIDksIDIsIDIxMywgNCwgMjMsIDIxNSwgOCwgOSwgMiwgMjEyLCAyNTMsIDksIDIsIDIxMiwgMjQ4LCA5LCAyLCAKLSAgICAyMTIsIDI0OSwgMjA5LCAxNDEsIDksIDIsIDIxMiwgMjQ5LCAxMTUsIDIxMiwgMjQ5LCAyNDcsIDE2MSwgMTE1LCAyNDcsIAotICAgIDE2MCwgOSwgMiwgMjEyLCAyNDQsIDksIDIsIDIxMiwgMTk5LCA5LCAyLCAyMTIsIDIwMCwgMTE1LCAyMzAsIDIzOSwgMjEyLCAKLSAgICAxOTksIDksIDIsIDIxMiwgMTk3LCA5LCAyLCAyMTIsIDE5NiwgOSwgMiwgMjEyLCAxNjIsIDksIDIsIDIxMiwgMTYzLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjEyLCAxNDksIDksIDIsIDIxMiwgMTQ3LCA5LCAyLCAyMTIsIDE0OCwgMTE1LCAyMTIsIDE0OCwgMjEyLCAKLSAgICAxOTcsIDksIDIsIDIxMiwgMTQwLCA5LCAyLCAyMTIsIDEzOCwgOSwgMiwgMjExLCAxMCwgOSwgMiwgMjExLCAxMSwgMTE1LCAKLSAgICAyMTEsIDEwLCA5LCAyLCAyMTAsIDIzMiwgOSwgMiwgMjEwLCAyMzEsIDksIDIsIDIxMCwgMjI5LCA5LCAyLCAyMTAsIDIyMCwgCi0gICAgOSwgMiwgMjEwLCAyMTksIDksIDIsIDIxMCwgMTkzLCA5LCAyLCAyMTAsIDE5MiwgOSwgMiwgMjEwLCAyMiwgOSwgMiwgMjEwLCAKLSAgICAyMywgMjUwLCA1OSwgOSwgMiwgMjEwLCAyMywgMjMsIDIzNywgMywgOSwgMiwgMjEwLCAyMywgMjMsIDIyNCwgMTU1LCA5LCAKLSAgICAyLCAyMTAsIDIzLCAyMzcsIDIwOCwgOSwgMiwgMjEwLCAxMCwgOSwgMiwgMjEwLCAxMSwgMTE1LCAyMTAsIDExLCAyMjIsIAotICAgIDEwMSwgMTE1LCAyMjIsIDEwMSwgMjQzLCAxNTcsIDExNSwgMjQzLCAxNTYsIDksIDIsIDIxMCwgMTEsIDIxMSwgMTc2LCA5LCAKLSAgICAyLCAyMDksIDI1NSwgOSwgMiwgMTYwLCAyMywgMjQ4LCA4NiwgOSwgMiwgMTYwLCAyMywgMjM3LCAyMTksIDksIDIsIDE2MCwgCi0gICAgMjMsIDIxMywgNDMsIDksIDIsIDE2MCwgMjMsIDIxMiwgMTk5LCA5LCAyLCAxNjAsIDIzLCAyMDcsIDE5NywgOSwgMiwgMTYwLCAKLSAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjA5LCAyNDIsIDksIDIsIDIwOSwgMjE4LCA5LCAyLCAyMDksIDE4NywgOSwgMiwgMjA5LCAKLSAgICAxODgsIDIzNywgMjA4LCA5LCAyLCAyMDksIDIsIDksIDIsIDIwOSwgMywgMjA5LCAxNDEsIDksIDIsIDIwOCwgMjI5LCA5LCAKLSAgICAyLCAyMDgsIDIwNiwgOSwgMiwgMjA4LCAyMDcsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA4LCAyMDcsIDExNSwgMjA4LCAyMDYsIAotICAgIDksIDIsIDIwOCwgMjA3LCAxMTUsIDIwOCwgMjA3LCAyMzksIDAsIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjA3LCAyMDMsIDksIDIsIDIwNywgMTk3LCA5LCAyLCAyMDcsIDE5NSwgOSwgMiwgMjA3LCAxOTEsIDksIAotICAgIDIsIDIwNywgMTgxLCA5LCAyLCAyMDcsIDE4MiwgMTE1LCAyMDcsIDE4MiwgMjAyLCAxMTcsIDExNSwgMjAyLCAxMTYsIDksIAotICAgIDIsIDY4LCA5LCAyLCAxMDYsIDIzNywgMjE5LCA5LCAyLCAxMDYsIDEwNiwgNjgsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDIxOSwgCi0gICAgMTY5LCAxMTUsIDIxOSwgMTY5LCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMTA2LCAxMTUsIDEwNiwgMjEwLCAKLSAgICAxOTQsIDExNSwgMjEwLCAxOTMsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDEwNiwgMjE2LCA3MywgMTE1LCAxMDYsIDIxNiwgNzIsIAotICAgIDksIDIsIDIwNywgNDAsIDksIDIsIDIwNywgMzUsIDksIDIsIDIwNywgMjksIDksIDIsIDIwNywgMzAsIDIyOCwgMTc3LCA5LCAKLSAgICAyLCAyMDcsIDMwLCAyMywgMjQ5LCAxNSwgOSwgMiwgMjA3LCAzMCwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyMDcsIDMwLCAyMywgCi0gICAgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDIwNywgMzAsIDIzLCAxMDYsIDkxLCAxMDYsIDkxLCAxMDYsIDIzNywgMjA4LCAKLSAgICA5LCAyLCAyMDcsIDMwLCAyMzcsIDIwOCwgOSwgMiwgMjA3LCAzMCwgMjEzLCAyNCwgOSwgMiwgMjA3LCAzMCwgMjEzLCAyNSwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIwNywgMjUsIDksIDIsIDIwNywgNiwgOSwgMiwgMjA3LCA3LCAyMywgMjI4LCA5NCwgOSwgCi0gICAgMiwgMjA3LCA3LCAyMywgMjI1LCAyMSwgOTEsIDI0NCwgMjEyLCA5LCAyLCAyMDcsIDcsIDIzLCAyMTMsIDg4LCA5LCAyLCAKLSAgICAyMDcsIDcsIDIzLCA2OCwgOSwgMiwgMjA3LCA1LCA5LCAyLCAyMDcsIDEsIDksIDIsIDIwNywgMiwgMjMsIDIyOSwgMjMxLCAKLSAgICA5LCAyLCAyMDcsIDIsIDIzLCAxODUsIDksIDIsIDIwNiwgMjU1LCA5LCAyLCAyMDcsIDAsIDIzNywgMjA4LCA5LCAyLCAyMDYsIAotICAgIDIxMCwgOSwgMiwgMjA2LCAyMTEsIDI0NSwgMTI0LCAyMDYsIDIxMCwgOSwgMiwgMjA2LCAyMTEsIDIxMywgMjQsIDksIDIsIAotICAgIDIwNiwgMjA4LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDM0LCA5MSwgMTUyLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDM0LCA5MSwgCi0gICAgMjAxLCAyMDEsIDksIDIsIDIwNiwgMjA5LCAyMywgMjUxLCAzOSwgOSwgMiwgMjA2LCAyMDksIDIzLCAxNTIsIDksIDIsIAotICAgIDIwNiwgMjA5LCAyMywgMjIxLCA0MCwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDQwLCA5LCAyLCAyMDYsIDIwOSwgMjMsIAotICAgIDIwNywgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDIwNywgNDEsIDkxLCAyNDgsIDg2LCA5LCAyLCAKLSAgICAyMDYsIDIwNywgOSwgMiwgMjA2LCAyMDQsIDksIDIsIDIwNiwgMjAzLCA5LCAyLCAyMDYsIDE5OSwgOSwgMiwgMjA2LCAyMDAsIAotICAgIDIzLCA2MywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyNTAsIDY5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE0MiwgOSwgMiwgMjA2LCAKLSAgICAyMDAsIDIzLCAyNDIsIDMxLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOSwgOCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzgsIAotICAgIDI0NiwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM3LCAyMzAsIDksIDIsIDIwNiwgMjAwLCAyMywgMTUyLCA5LCAyLCAyMDYsIAotICAgIDIwMCwgMjMsIDIzMSwgODUsIDksIDIsIDIwNiwgMjAwLCAyMywgMjMxLCA2NiwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzAsIAotICAgIDIwOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMjksIDEwMCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMjYsIDIyMiwgOSwgMiwgCi0gICAgMjA2LCAyMDAsIDIzLCAyMjQsIDExMCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxODUsIDksIDIsIDIwNiwgMjAwLCAyMywgMjEzLCAKLSAgICA0MywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMTIsIDE0NywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMDcsIDIwMywgOSwgMiwgCi0gICAgMjA2LCAyMDAsIDIzLCAxMDYsIDkxLCAyMzcsIDIxOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMDYsIAotICAgIDIwMCwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMDYsIDE5NywgOSwgMiwgMjA2LCAxOTgsIDIzLCA2OCwgOSwgMiwgMjA2LCAKLSAgICAxODYsIDksIDIsIDIwNiwgMTg3LCAyMywgNjMsIDksIDIsIDIwNiwgMTg3LCAyMywgMjI4LCAyMDksIDksIDIsIDIwNiwgCi0gICAgMTg3LCAyMywgMjI4LCAxODMsIDksIDIsIDIwNiwgMTg3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIwNiwgMTgyLCA5LCAyLCAKLSAgICAyMDYsIDE4NSwgOSwgMiwgMjA2LCAxODMsIDksIDIsIDIwNiwgMTc5LCA5LCAyLCAyMDYsIDE2NywgOSwgMiwgMjA2LCAxNjgsIAotICAgIDIzLCAyMjksIDIzMSwgOSwgMiwgMjA2LCAxNjYsIDksIDIsIDIwMiwgMTE2LCA5LCAyLCAyMDIsIDExNywgMjA5LCAxNDEsIAotICAgIDksIDIsIDIwMiwgMTE3LCAxMDMsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjAyLCAxMTIsIDksIDIsIDIwMiwgMTA1LCA5LCAyLCAKLSAgICAyMDIsIDkxLCA5LCAyLCAyMDIsIDM5LCA5LCAyLCAyMDIsIDQwLCAxMTUsIDIwMiwgMzksIDksIDIsIDIwMiwgMzgsIDksIDIsIAotICAgIDIwMiwgMzYsIDksIDIsIDIwMiwgMzcsIDIzMCwgMzEsIDIwOSwgMTQxLCA5LCAyLCAyMDIsIDMxLCA5LCAyLCAyMDIsIDIyLCAKLSAgICA5LCAyLCAyMDIsIDYsIDksIDIsIDIwMiwgNCwgOSwgMiwgMjAyLCA1LCAyMywgNjMsIDksIDIsIDIwMiwgMywgOSwgMiwgCi0gICAgMjAyLCAyLCA5LCAyLCAyMjksIDI1NCwgMjQxLCAxMTksIDksIDIsIDI1MSwgMjMzLCAyMywgMjIxLCA0MCwgOSwgMiwgMjUxLCAKLSAgICAxNTAsIDIzLCA2MywgOSwgMiwgMjUwLCAyNDQsIDIzLCAyMjgsIDE5OCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAKLSAgICAyMDcsIDQxLCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDIsIDksIDIsIDI0MywgMTU3LCA5MSwgMjEyLCAxOTksIDksIDIsIAotICAgIDI0MiwgNDEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzNywgMjE5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIAotICAgIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDI1MCwgMjMyLCA5MSwgMjMwLCAxMywgOTEsIDYzLCA5LCAyLCAyMzksIDcsIAotICAgIDIzLCAyNTAsIDczLCA5LCAyLCAyMzgsIDE4OSwgOSwgMiwgMjM4LCA3MSwgOSwgMiwgMjM2LCAzLCA5LCAyLCAyMzAsIDQ0LCAKLSAgICAyMywgMjUwLCAyMDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyNTAsIDcyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NSwgOSwgCi0gICAgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjE5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM3LCA0LCAyMywgMjUwLCA3MywgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIyNiwgMjIyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTg1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEyLCAKLSAgICAxOTIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDIwMywgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNiwgMjA4LCA5LCAyLCAyMjgsIAotICAgIDk1LCAyMywgMjM4LCA4MSwgOSwgMiwgMjI2LCAyMzgsIDIxMywgMjUsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzOCwgCi0gICAgMjMsIDI0MSwgNSwgOTEsIDIyOCwgMzAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjEyLCAxOTksIDksIDIsIDIyNCwgMjI3LCA5LCAKLSAgICAyLCAyMjMsIDE5OCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAyMjMsIDEwOCwgOSwgMiwgMjIyLCA2OCwgOSwgMiwgMjIyLCA2NywgCi0gICAgOSwgMiwgMjIyLCA2NiwgMjMsIDI0OCwgMjUzLCA5LCAyLCAyMjIsIDY2LCAyMywgMjM4LCA4MSwgOSwgMiwgMjIxLCA1NywgCi0gICAgMjE1LCAxOTgsIDIyMiwgNTksIDI0NCwgNTQsIDksIDIsIDIxOCwgMjIzLCAyNTAsIDU5LCA5LCAyLCAyMTgsIDExMywgOSwgCi0gICAgMiwgMjE1LCAyMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMDksIDEsIDksIDIsIDIwNywgNywgMjMsIDIyNSwgCi0gICAgMjAsIDksIDIsIDEwNiwgNjgsIDksIDE0MSwgMiwgMTIwLCAyNTAsIDc1LCA5LCAxNDEsIDIsIDEyNiwgMjUwLCA3NSwgOSwgCi0gICAgMTQxLCAyLCAyMzksIDE0NywgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMTIsIAotICAgIDg4LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyNTAsIDc1LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyNTAsIDc1LCAKLSAgICA5LCAxNDEsIDIsIDIyMiwgNjQsIDI1MCwgNzUsIDksIDE0MSwgMiwgMTI2LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMzksIAotICAgIDE0NywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIxMiwgODgsIDI0MywgCi0gICAgMTU2LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjQzLCAxNTYsIDksIAotICAgIDE0MSwgMiwgMjIyLCA2NCwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDY4LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAKLSAgICA2OCwgOSwgMTQxLCAyLCAyMTIsIDg4LCA2OCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgNjgsIDksIDE0MSwgMiwgMjQxLCAxNDMsIAotICAgIDY4LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDY4LCA5LCAxNDEsIDIsIDExOCwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMTIwLCAKLSAgICAyMzgsIDE2NCwgOSwgMTQxLCAyLCAxMjYsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMzgsIDE2NCwgOSwgCi0gICAgMTQxLCAyLCAyMzksIDIzMywgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjEyLCA4OCwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjEzLCAKLSAgICAxMTIsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMzgsIAotICAgIDE2NCwgOSwgMTQxLCAyLCAxMTgsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDEyMCwgMjM4LCAxNjEsIDksIDE0MSwgMiwgMTI2LCAKLSAgICAyMzgsIDE2MSwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjM4LCAxNjEsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIzOCwgMTYxLCAKLSAgICA5LCAxNDEsIDIsIDEyMCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAxMjYsIDIxMywgNTksIDksIDE0MSwgMiwgMTI2LCAyMTMsIAotICAgIDYwLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjEzLCAKLSAgICA1OSwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMTMsIDU5LCA5LCAxNDEsIDIsIAotICAgIDI0MSwgMTQzLCAyMTMsIDU5LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIxMywgNTksIDksIDE0MSwgMiwgMTE4LCAyMTMsIDU0LCAKLSAgICA5LCAxNDEsIDIsIDEyMCwgMjEzLCA1NCwgOSwgMTQxLCAyLCAxMjYsIDIxMywgNTQsIDksIDE0MSwgMiwgMTI2LCAyMTMsIAotICAgIDU1LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjEzLCA1NCwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjEzLCAKLSAgICA1NCwgOSwgMTQxLCAyLCAyMTMsIDYwLCAyMywgMjM4LCAyNDcsIDkxLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMTMsIDYwLCAKLSAgICAyMywgMjM4LCAyNDcsIDkxLCAyMjQsIDExMCwgOSwgMTQxLCAyLCAxMTgsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyMCwgCi0gICAgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTI2LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjYsIDI0NywgMTU3LCAyMDYsIDY5LCAKLSAgICAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0NywgMTU2LCA5LCAxNDEsIAotICAgIDIsIDEyNiwgMjA2LCA2OSwgMjM5LCAxNTksIDI0MSwgNiwgOSwgMTQxLCAyLCAxMjYsIDIwNiwgNjksIDIzOSwgMTU5LCAKLSAgICAyNDEsIDMsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExOCwgOSwgMTQxLCAyLCAyMzksIAotICAgIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE2LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgCi0gICAgMjI3LCAxMTksIDYzLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTksIDI0OSwgMjU1LCAKLSAgICA5LCAxNDEsIDIsIDIxMiwgODgsIDIwNiwgNjksIDIzOSwgMTU5LCAyNTAsIDcxLCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMDYsIAotICAgIDY5LCAyMzksIDE1OSwgMjMxLCA1OCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNjAsIAotICAgIDYzLCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA2MCwgMjQ5LCAyNTUsIDksIDE0MSwgMiwgCi0gICAgMjQxLCAxNDMsIDIwNiwgNjksIDIzOSwgMTU5LCAyMDYsIDE4MSwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjA2LCA2OSwgMjM5LCAKLSAgICAxNTksIDIwNiwgMTgwLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDc0LCA5LCAxNDEsIDIsIAotICAgIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDczLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgCi0gICAgMTU5LCAyMzEsIDcyLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDc1LCA2MywgOSwgMTQxLCAKLSAgICAyLCAxMjAsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIDEyNiwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgCi0gICAgMjM5LCAxNDcsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgCi0gICAgMTQxLCAyLCAyMTIsIDg4LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAxMTgsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIAotICAgIDEyMCwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgMTI2LCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjQ4LCAyNDAsIAotICAgIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0OCwgMjQxLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjQ4LCAKLSAgICAyNDAsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0OCwgMjQxLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMjIsIDc3LCA5LCAKLSAgICAxNDEsIDIsIDIyMiwgNzgsIDksIDE0MSwgMiwgMTE4LCAyNDEsIDIsIDksIDE0MSwgMiwgMTIwLCAyNDEsIDIsIDksIDE0MSwgCi0gICAgMiwgMTE4LCAyMDksIDYxLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAxMjAsIDIwOSwgNTgsIDI0MywgMTU2LCA5LCAxNDEsIDIsIAotICAgIDIzOSwgMjMzLCAyMTIsIDc3LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAxMTgsIDIwOSwgNjEsIDIwNiwgNjksIDIzOSwgMTU5LCAKLSAgICA2MywgOSwgMTQxLCAyLCAxMjAsIDIwOSwgNTgsIDIwNiwgNjksIDIzOSwgMTU5LCA2MywgOSwgMTQxLCAyLCAxMTgsIDI0MSwgCi0gICAgMTM5LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDExOCwgMjE3LCA1NiwgMjUwLCA3NSwgOSwgMTQxLCAyLCAzOCwgMjUwLCA2MiwgCi0gICAgMTE4LCAyMTIsIDc4LCA5LCAxNDEsIDIsIDM4LCAyNTAsIDYyLCAxMTgsIDIxNywgNTUsIDksIDE0MSwgMiwgMTE4LCAyMTcsIAotICAgIDU2LCAyMzcsIDIwMiwgOSwgMTQxLCAyLCAxMTgsIDE2MiwgMjM3LCAyMDIsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDExOCwgCi0gICAgMjA5LCA2MCwgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMTIwLCAyMDksIDU3LCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAyMzksIAotICAgIDE1MywgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMjQwLCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMTA2LCAyMDYsIDY5LCAxOCwgCi0gICAgOSwgMTQxLCAyLCAyMzksIDIzMywgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMTIsIDg4LCAxMDYsIDIwNiwgNjksIAotICAgIDE4LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAxMDYsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAxMDYsIDIwNiwgCi0gICAgNjksIDE4LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDIxNywgMTc5LCAyLCAzOCwgMjUwLCAKLSAgICA2MiwgMjAzLCAyMzgsIDI0MywgMTQxLCA5LCAyMTcsIDE3OSwgMiwgODAsIDI0NSwgMjQyLCA5LCAyMTcsIDE3OSwgMiwgCi0gICAgMjQzLCAyMjgsIDI0NSwgMjQyLCA5LCAyMTcsIDE3OSwgMiwgMjQzLCAyMjgsIDIwOCwgODEsIDksIDIxNywgMTc5LCAyLCAKLSAgICAyNDMsIDIyOCwgMjE3LCA2MSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMjEsIDQxLCAyMDksIDE0MSwgOSwgMiwgMjUxLCAyMzMsIAotICAgIDIzLCAyMTIsIDE5NywgOSwgMiwgMjUxLCAxMjMsIDIzLCAyNDEsIDQsIDksIDIsIDI0OSwgMTYsIDIzLCAyNDMsIDE1NywgCi0gICAgMjA5LCAxNDEsIDksIDIsIDI0OSwgNCwgMjMsIDI1MSwgMTQ5LCA5LCAyLCAyNDksIDQsIDIzLCAyMjIsIDEwMCwgOSwgMiwgCi0gICAgMjQ5LCA0LCAyMywgMjAyLCAxMTYsIDksIDIsIDI0NywgMTk0LCAxMTUsIDI0NywgMTk0LCAyMywgMjIzLCAxMDksIDksIDIsIAotICAgIDI0NCwgMjEzLCAyMywgMjA5LCAyNDIsIDksIDIsIDI0NCwgMjA0LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MywgMTg5LCAyMywgCi0gICAgMjMxLCA4NSwgOSwgMiwgMjQzLCAxODksIDIzLCAxMDYsIDEwNiwgNjgsIDksIDIsIDI0MywgMTg3LCAyMywgMjA3LCAyOSwgCi0gICAgOSwgMiwgMjQyLCAzOCwgMjMsIDI1MCwgMjAwLCA5LCAyLCAyNDIsIDM4LCAyMywgMjUwLCA3NSwgOSwgMiwgMjQyLCAzOCwgCi0gICAgMjMsIDI1MCwgNzYsIDI1MCwgNTAsIDIyNywgMjIyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjQzLCAxNzYsIDksIDIsIDI0MiwgCi0gICAgMzgsIDIzLCAyNDIsIDMxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjQxLCAyMiwgOSwgMiwgMjQyLCAzOCwgMjMsIDIzOSwgOCwgCi0gICAgOSwgMiwgMjQyLCAzOCwgMjMsIDIzOCwgODEsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzgsIDY0LCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjQyLCAzOCwgMjMsIDIzOCwgNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAxNTIsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzcsIDMsIAotICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAKLSAgICAyNDIsIDM4LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDE3NywgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyOCwgMTc4LCA5MSwgMjI5LCAyMzEsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDgyLCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjI4LCAyOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOCwgMjksIDIzLCAyMjgsIDE4MywgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyNiwgMjI4LCA5MSwgMjM4LCA1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyNSwgNzksIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjQsIDIyOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMjIyLCAxMDAsIDksIDIsIAotICAgIDI0MiwgMzgsIDIzLCAyMTgsIDE2NywgOSwgMiwgMjQyLCAzOCwgMjMsIDIxMywgNDMsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMTIsIDE2MywgMjM3LCAyMDgsIDksIDIsIDI0MSwgMTkxLCAyMywgMjI4LCAxODMsIDksIDIsIDI0MSwgMTkxLCAyMywgCi0gICAgMjE5LCA5NiwgOSwgMiwgMjQxLCAyMywgMjAzLCAxOTYsIDksIDIsIDI0MSwgNSwgMjQ1LCAxMjQsIDI0MSwgNCwgOSwgMiwgCi0gICAgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyNTAsIDc1LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIzNywgMywgOSwgCi0gICAgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAKLSAgICAyMjgsIDExMywgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgCi0gICAgMjMsIDIyNSwgMjAsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjI0LCAyMjgsIDksIDIsIDI0MCwgMTgwLCAyMTMsIAotICAgIDI1LCAyMywgMjExLCAxMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMTEsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDksIDMsIAotICAgIDksIDIsIDIzOSwgNywgMjMsIDI0MywgMTg5LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAzOCwgMjMsIDIzMSwgCi0gICAgODYsIDIzNywgMjA4LCA5LCAyLCAyMzksIDcsIDIzLCAyNDIsIDM4LCAyMywgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDI0MSwgMjUsIDksIDIsIDIzOSwgNywgMjMsIDIzOSwgOCwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjUsIDkxLCAyNDMsIAotICAgIDIzMywgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjUsIDkxLCAyMjIsIDI0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCAKLSAgICAxNjAsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAxNzgsIDkxLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgCi0gICAgMjI4LCAyOCwgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAyOSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjYsIAotICAgIDIyNywgOSwgMiwgMjM5LCA3LCAyMywgMjIzLCAxOTksIDksIDIsIDIzOSwgNywgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyMjIsIDI0MSwgOTEsIDI0MSwgMTkwLCA5LCAyLCAyMzksIDcsIDIzLCAyMjIsIDI0MSwgOTEsIDIzOCwgODEsIAotICAgIDksIDIsIDIzOSwgNywgMjMsIDIxMywgMywgOSwgMiwgMjM5LCA3LCAyMywgMjAyLCAyMiwgOSwgMiwgMjM5LCAyLCAyMTUsIAotICAgIDE5OCwgMjIyLCA1OSwgMjQ0LCA1NCwgOSwgMiwgMjM4LCAxNjMsIDIzLCA2OCwgOSwgMiwgMjM4LCA1NiwgMjMsIDIzOCwgCi0gICAgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzcsIDIyOSwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMzcsIAotICAgIDIyMCwgOTEsIDIzOCwgNTYsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjM3LCAxNjAsIDIwOSwgMTQyLCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjM3LCA0LCAyMywgMjUwLCA3NiwgMTE1LCAyMzcsIDQsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ3LCAKLSAgICAxOTMsIDksIDIsIDIzMCwgNDQsIDIzLCAxNzMsIDksIDIsIDIzMCwgNDQsIDIzLCAxMDYsIDEwNiwgNjgsIDksIDIsIDIzMCwgCi0gICAgNDQsIDIzLCAyMDYsIDIxMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwMiwgNywgMTE1LCAyMDIsIDYsIDksIDIsIDIyOCwgODMsIAotICAgIDksIDIsIDIyOCwgODEsIDksIDIsIDIyOCwgODAsIDksIDIsIDIyOCwgNzksIDksIDIsIDIyOCwgNzgsIDksIDIsIDIyOCwgCi0gICAgNzcsIDksIDIsIDIyOCwgNzYsIDksIDIsIDIyOCwgNzUsIDExNSwgMjI4LCA3NSwgMjM3LCAyMDgsIDksIDIsIDIyOCwgNzQsIAotICAgIDksIDIsIDIyOCwgNzMsIDExNSwgMjI4LCA3MiwgOSwgMiwgMjI4LCA3MSwgOSwgMiwgMjI4LCA3MCwgOSwgMiwgMjI4LCA2OSwgCi0gICAgOSwgMiwgMjI4LCA2OCwgOSwgMiwgMjI4LCA2NywgOSwgMiwgMjI4LCA2NiwgOSwgMiwgMjI4LCA2NSwgOSwgMiwgMjI4LCAKLSAgICA2NCwgOSwgMiwgMjI4LCA2MywgOSwgMiwgMjI4LCA2MiwgOSwgMiwgMjI4LCA2MSwgOSwgMiwgMjI4LCA2MCwgOSwgMiwgCi0gICAgMjI4LCA1OSwgOSwgMiwgMjI4LCA1OCwgOSwgMiwgMjI4LCA1NywgOSwgMiwgMjI4LCA1NiwgOSwgMiwgMjI4LCA1NSwgOSwgCi0gICAgMiwgMjI4LCA1NCwgOSwgMiwgMjI4LCA1MiwgOSwgMiwgMjI4LCA1MywgMjMsIDIzNywgMjMwLCA5LCAyLCAyMjgsIDUzLCAKLSAgICAyMywgMjMxLCA4NSwgOSwgMiwgMjI4LCA1MywgMjMsIDIxOSwgOTcsIDkxLCAyMjYsIDIzNiwgOSwgMiwgMjI4LCA1MywgMjMsIAotICAgIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgNTMsIDIzLCAyMDcsIDQxLCA5MSwgMjQ5LCAKLSAgICAzMiwgOSwgMiwgMjI4LCA1MSwgOSwgMiwgMjI4LCA1MCwgOSwgMiwgMjI4LCA0OSwgOSwgMiwgMjI4LCA0OCwgOSwgMiwgCi0gICAgMjI4LCA0NywgOSwgMiwgMjI4LCA0NiwgOSwgMiwgMjI4LCA0NSwgOSwgMiwgMjI4LCA0NCwgOSwgMiwgMjI4LCA0MywgOSwgCi0gICAgMiwgMjI4LCA0MiwgOSwgMiwgMjI4LCA0MCwgOSwgMiwgMjI4LCA0MSwgMjMsIDI1MCwgNzUsIDksIDIsIDIyOCwgNDEsIDIzLCAKLSAgICAyNDksIDE1LCA5LCAyLCAyMjgsIDQxLCAyMywgMjQyLCAzMCwgMjM3LCAyMDksIDIzNywgMjA4LCA5LCAyLCAyMjgsIDQxLCAKLSAgICAyMywgMjI4LCAyMDcsIDksIDIsIDIyOCwgNDEsIDIzLCAyMjgsIDExMywgOSwgMiwgMjI4LCA0MSwgMjMsIDIwOSwgMjE4LCAKLSAgICA5LCAyLCAyMjgsIDQxLCAyMywgMjA5LCAxODcsIDksIDIsIDIyOCwgNDEsIDIzLCAyMDcsIDQwLCA5LCAyLCAyMjgsIDQxLCAKLSAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjI4LCA0MSwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMjgsIDM5LCA5LCAyLCAyMjgsIDM3LCAKLSAgICA5LCAyLCAyMjgsIDM4LCAyMywgMjQyLCA0MCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIzOSwgOCwgOSwgMiwgMjI4LCAzOCwgMjMsIAotICAgIDIzMSwgODUsIDksIDIsIDIyOCwgMzgsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIyMiwgCi0gICAgMTAwLCA5LCAyLCAyMjgsIDM4LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTcsIDkxLCAyMjYsIDIzNiwgOSwgMiwgMjI4LCAKLSAgICAzOCwgMjMsIDIxMywgMjgsIDkxLCAyMjksIDEwMCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgMzgsIAotICAgIDIzLCAyMDYsIDE5NywgOSwgMiwgMjI4LCAzNSwgOSwgMiwgMjI4LCAzNCwgOSwgMiwgMjI2LCAyMzgsIDIzNywgMjA5LCAyMywgCi0gICAgMjUwLCA3NSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNDMsIDE1NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzcsIDE0MCwgOSwgCi0gICAgMiwgMjI2LCAyMzgsIDIzLCAyMTksIDk2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgCi0gICAgMjI2LCAyMzYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjA5LCAyNDIsIDksIDIsIDIyNCwgMTU2LCA5MSwgMjAyLCAxMTUsIDksIAotICAgIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAyMywgMjM5LCA4LCA5LCAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgCi0gICAgMjMsIDIzMCwgMTIsIDksIDIsIDIyMiwgNjYsIDIzLCAyNDMsIDE4OSwgMjM3LCAyMDgsIDksIDIsIDIyMiwgNjYsIDIzLCAKLSAgICAyMzgsIDU1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAyMTIsIDksIDIsIDIyMiwgNjYsIDIzLCAyMzcsIDMsIDksIDIsIAotICAgIDIyMiwgNjYsIDIzLCAyMjksIDE3MSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyOCwgNzgsIDksIDIsIDIyMiwgNjYsIDIzLCAKLSAgICAyMjUsIDc5LCA5LCAyLCAyMjIsIDY2LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTYsIDksIDIsIDIyMiwgNjYsIDIzLCA2OCwgCi0gICAgOSwgMiwgMjIyLCA2NiwgMjMsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMjIsIDY2LCAyMywgMjA2LCAxOTcsIDksIDIsIDIxNSwgCi0gICAgMjMsIDIzNywgMjA5LCAyMywgMTUyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjQxLCA5MiwgOSwgMiwgMjE1LCAyMywgMjMsIAotICAgIDIxMywgNDQsIDI1MCwgNTAsIDIyNywgMjIyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA5LCAyNDIsIDksIDIsIDIxMywgODcsIAotICAgIDIwOSwgMTQxLCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDMsIDksIDIsIDIxMywgNDQsIDkxLCAyMzYsIDIxLCA5LCAyLCAKLSAgICAyMTMsIDQ0LCA5MSwgMjIzLCA4NiwgOSwgMiwgMjEzLCA0NCwgOTEsIDIxNCwgMjMwLCA5LCAyLCAyMTIsIDE5OCwgOTEsIAotICAgIDI0MiwgMzgsIDIzLCAyMjIsIDEwMCwgOSwgMiwgMjEyLCAxOTgsIDkxLCAyNDEsIDE5MSwgMjMsIDI1MCwgMjMxLCA5LCAyLCAKLSAgICAyMTIsIDE2MywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDksIDI0MywgOTEsIDIxNSwgMjIsIDksIDIsIDIwNywgMTkyLCAyMywgCi0gICAgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMDcsIDE5MiwgMjMsIDEyNiwgMjQzLCAxNTYsIDksIDIsIDIwNiwgMjA5LCAKLSAgICAyMzAsIDIzOCwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDI5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDI0NCwgMTUzLCA5LCAKLSAgICAyLCAyMDYsIDIwMCwgMjMsIDIyOCwgMzYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjI2LCAyMzYsIDksIDIsIDIwMiwgMTE1LCAKLSAgICA5LCAyLCAyMDIsIDcsIDExNSwgMjAyLCA3LCA5MSwgMjE0LCAyMzAsIDksIDIsIDIwMiwgNSwgMjMsIDEyNiwgMjQzLCAxNTcsIAotICAgIDIwOSwgMTQxLCAxNCwgNywgMjU1LCAxOCwgMTQsIDcsIDI1NSwgMTcsIDE0LCA3LCAyNTUsIDE2LCAxNCwgNywgMjU1LCAxNSwgCi0gICAgMTQsIDcsIDI1NSwgMTQsIDE0LCA3LCAyNTUsIDEzLCAxNCwgNywgMjU1LCAxMiwgMTQsIDcsIDI1NSwgMTEsIDE0LCA3LCAKLSAgICAyNTUsIDEwLCAxNCwgNywgMjU1LCA5LCAxNCwgNywgMjU1LCA4LCAxNCwgNywgMjU1LCA3LCAxNCwgNywgMjU1LCA2LCAxNCwgCi0gICAgNywgMjU1LCA0LCAxNCwgNywgMjU1LCAzLCAxNCwgNywgMjU1LCAyLCAxNCwgNywgMjU1LCAxLCAxNCwgNywgMjU1LCAwLCAKLSAgICAxNCwgNywgMjU0LCAyNTUsIDE0LCA3LCAyNTQsIDI1NCwgMTQsIDcsIDI1NCwgMjUzLCAxNCwgNywgMjU0LCAyNTIsIDE0LCAKLSAgICA3LCAyNTQsIDI1MSwgMTQsIDcsIDI1NCwgMjUwLCAxNCwgNywgMjU0LCAyNDksIDE0LCA3LCAyNTQsIDI0OCwgMTQsIDcsIAotICAgIDI1NCwgMjQ3LCAxNCwgNywgMjU0LCAyNDYsIDE0LCA3LCAyNTQsIDI0NSwgMTQsIDcsIDI1NCwgMjQ0LCAxNCwgNywgMjU0LCAKLSAgICAyNDMsIDE0LCA3LCAyNTQsIDI0MSwgMTQsIDcsIDI1NCwgMjQwLCAxNCwgNywgMjU0LCAyMzgsIDE0LCA3LCAyNTQsIDIzNywgCi0gICAgMTQsIDcsIDI1NCwgMjM2LCAxNCwgNywgMjU0LCAyMzUsIDE0LCA3LCAyNTQsIDIzNCwgMTQsIDcsIDI1NCwgMjMzLCAxNCwgCi0gICAgNywgMjU0LCAyMzIsIDE0LCA3LCAyNTQsIDIzMSwgMTQsIDcsIDI1NCwgMjMwLCAxNCwgNywgMjU0LCAyMjksIDE0LCA3LCAKLSAgICAyNTQsIDIyOCwgMTQsIDcsIDI1NCwgMjI3LCAxNCwgNywgMjU0LCAyMjUsIDE0LCA3LCAyNTQsIDIyNCwgMTQsIDcsIDI1NCwgCi0gICAgMjIzLCAxNCwgNywgMjU0LCAyMjEsIDE0LCA3LCAyNTQsIDIyMCwgMTQsIDcsIDI1NCwgMjE5LCAxNCwgNywgMjU0LCAyMTgsIAotICAgIDE0LCA3LCAyNTQsIDIxNywgMTQsIDcsIDI1NCwgMjE2LCAxNCwgNywgMjU0LCAyMTUsIDE0LCA3LCAyNTQsIDIxNCwgMTQsIAotICAgIDcsIDI1NCwgMjExLCAxNCwgNywgMjU0LCAyMTAsIDE0LCA3LCAyNTQsIDIwOSwgMTQsIDcsIDI1NCwgMjA4LCAxNCwgNywgCi0gICAgMjU0LCAyMDcsIDE0LCA3LCAyNTQsIDIwNiwgMTQsIDcsIDI1NCwgMjA1LCAxNCwgNywgMjU0LCAyMDQsIDE0LCA3LCAyNTQsIAotICAgIDIwMywgMTQsIDcsIDI1NCwgMjAyLCAxNCwgNywgMjU0LCAyMDEsIDE0LCA3LCAyNTQsIDIwMCwgMTQsIDcsIDI1NCwgMTk5LCAKLSAgICAxNCwgNywgMjU0LCAxOTgsIDE0LCA3LCAyNTQsIDE5NywgMTQsIDcsIDI1NCwgMTk2LCAxNCwgNywgMjU0LCAxOTUsIDE0LCAKLSAgICA3LCAyNTQsIDE5NCwgMTQsIDcsIDI1NCwgMTkzLCAxNCwgNywgMjU0LCAxOTIsIDE0LCA3LCAyNTQsIDE4OCwgMTQsIDcsIAotICAgIDI1NCwgMTg3LCAxNCwgNywgMjU0LCAxODYsIDE0LCA3LCAyNTQsIDE4NSwgMTQsIDcsIDI0OSwgMjUzLCAxNCwgNywgMjQ5LCAKLSAgICAyNTEsIDE0LCA3LCAyNDksIDI0OSwgMTQsIDcsIDI0OSwgMjQ3LCAxNCwgNywgMjQ5LCAyNDUsIDE0LCA3LCAyNDksIDI0NCwgCi0gICAgMTQsIDcsIDI0OSwgMjQyLCAxNCwgNywgMjQ5LCAyNDAsIDE0LCA3LCAyNDksIDIzOCwgMTQsIDcsIDI0OSwgMjM2LCAxNCwgCi0gICAgNywgMjQ3LCAxMjEsIDE0LCA3LCAyNDcsIDEyMCwgMTQsIDcsIDI0NywgMTE5LCAxNCwgNywgMjQ3LCAxMTgsIDE0LCA3LCAKLSAgICAyNDcsIDExNywgMTQsIDcsIDI0NywgMTE2LCAxNCwgNywgMjQ3LCAxMTUsIDE0LCA3LCAyNDcsIDExNCwgMTQsIDcsIDI0NywgCi0gICAgMTEzLCAxNCwgNywgMjQ3LCAxMTIsIDE0LCA3LCAyNDcsIDExMSwgMTQsIDcsIDI0NywgMTEwLCAxNCwgNywgMjQ3LCAxMDksIAotICAgIDE0LCA3LCAyNDcsIDEwOCwgMTQsIDcsIDI0NywgMTA3LCAxNCwgNywgMjQ3LCAxMDYsIDE0LCA3LCAyNDcsIDEwNSwgMTQsIAotICAgIDcsIDI0NywgMTA0LCAxNCwgNywgMjQ3LCAxMDMsIDE0LCA3LCAyNDcsIDEwMiwgMTQsIDcsIDI0NywgMTAxLCAxNCwgNywgCi0gICAgMjQ3LCAxMDAsIDE0LCA3LCAyNDcsIDk5LCAxNCwgNywgMjQ3LCA5OCwgMTQsIDcsIDI0NywgOTcsIDE0LCA3LCAyNDcsIDk2LCAKLSAgICAxNCwgNywgMjQ3LCA5NSwgMTQsIDcsIDI0NywgOTQsIDE0LCA3LCAyNDUsIDUwLCAxNCwgNywgMjQ1LCA0OSwgMTQsIDcsIAotICAgIDI0NSwgNDgsIDE0LCA3LCAyNDUsIDQ3LCAxNCwgNywgMjQ1LCA0NiwgMTQsIDcsIDI0NSwgNDUsIDE0LCA3LCAyNDUsIDQ0LCAKLSAgICAxNCwgNywgMjQ1LCA0MywgMTQsIDcsIDI0NSwgNDIsIDE0LCA3LCAyNDUsIDQxLCAxNCwgNywgMjQ1LCA0MCwgMTQsIDcsIAotICAgIDI0NSwgMzksIDE0LCA3LCAyNDUsIDM4LCAxNCwgNywgMjQ1LCAzNywgMTQsIDcsIDI0NSwgMzYsIDE0LCA3LCAyNDUsIDM1LCAKLSAgICAxNCwgNywgMjQ1LCAzNCwgMTQsIDcsIDI0NSwgMzMsIDE0LCA3LCAyNDUsIDMyLCAxNCwgNywgMjQ1LCAzMSwgMTQsIDcsIAotICAgIDI0NSwgMzAsIDE0LCA3LCAyNDUsIDI5LCAxNCwgNywgMjQ1LCAyOCwgMTQsIDcsIDI0NSwgMjcsIDE0LCA3LCAyNDUsIDI2LCAKLSAgICAxNCwgNywgMjQ1LCAyNSwgMTQsIDcsIDI0NSwgMjQsIDE0LCA3LCAyNDUsIDIzLCAxNCwgNywgMjQ1LCAyMiwgMTQsIDcsIAotICAgIDI0NSwgMjEsIDE0LCA3LCAyNDUsIDIwLCAxNCwgNywgMjQ1LCAxOSwgMTQsIDcsIDI0NSwgMTgsIDE0LCA3LCAyNDUsIDE3LCAKLSAgICAxNCwgNywgMjQ1LCAxNiwgMTQsIDcsIDI0NSwgMTUsIDE0LCA3LCAyNDUsIDE0LCAxNCwgNywgMjQ1LCAxMywgMTQsIDcsIAotICAgIDI0NSwgMTIsIDE0LCA3LCAyNDUsIDExLCAxNCwgNywgMjQ1LCAxMCwgMTQsIDcsIDI0NSwgOSwgMTQsIDcsIDI0NSwgOCwgCi0gICAgMTQsIDcsIDI0NSwgNywgMTQsIDcsIDI0NSwgNiwgMTQsIDcsIDI0NSwgNSwgMTQsIDcsIDI0NSwgNCwgMTQsIDcsIDI0NSwgCi0gICAgMywgMTQsIDcsIDI0NSwgMiwgMTQsIDcsIDI0NSwgMSwgMTQsIDcsIDI0NSwgMCwgMTQsIDcsIDI0NCwgMjU1LCAxNCwgNywgCi0gICAgMjQ0LCAyNTQsIDE0LCA3LCAyNDQsIDI1MywgMTQsIDcsIDI0NCwgMjUyLCAxNCwgNywgMjQ0LCAyNTEsIDE0LCA3LCAyNDQsIAotICAgIDI1MCwgMTQsIDcsIDI0NCwgMjQ5LCAxNCwgNywgMjQ0LCAyNDgsIDE0LCA3LCAyNDQsIDI0NywgMTQsIDcsIDI0NCwgMjQ2LCAKLSAgICAxNCwgNywgMjQ0LCAyNDUsIDE0LCA3LCAyNDQsIDI0NCwgMTQsIDcsIDI0NCwgMjQzLCAxNCwgNywgMjQ0LCAyNDIsIDE0LCAKLSAgICA3LCAyNDQsIDI0MSwgMTQsIDcsIDI0NCwgMjQwLCAxNCwgNywgMjQ0LCAyMzksIDE0LCA3LCAyNDQsIDIzOCwgMTQsIDcsIAotICAgIDI0NCwgMjM3LCAxNCwgNywgMjQ0LCAyMzYsIDE0LCA3LCAyNDQsIDIzNSwgMTQsIDcsIDI0NCwgMjM0LCAxNCwgNywgMjQ0LCAKLSAgICAyMzMsIDE0LCA3LCAyNDQsIDIzMiwgMTQsIDcsIDI0NCwgMjMxLCAxNCwgNywgMjQ0LCAyMzAsIDE0LCA3LCAyNDQsIDIyOSwgCi0gICAgMTQsIDcsIDI0NCwgMjI4LCAxNCwgNywgMjQ0LCAyMjcsIDE0LCA3LCAyNDQsIDIyNiwgMTQsIDcsIDI0NCwgMjI1LCAxNCwgCi0gICAgNywgMjQ0LCAyMjQsIDE0LCA3LCAyNDQsIDIyMywgMTQsIDcsIDI0NCwgMjIyLCAxNCwgNywgMjQ0LCAyMjEsIDE0LCA3LCAKLSAgICAyNDQsIDIyMCwgMTQsIDcsIDI0NCwgMjE5LCAxNCwgNywgMjQ0LCAyMTgsIDE0LCA3LCAyNDQsIDIxNywgMTQsIDcsIDI0NCwgCi0gICAgMjE2LCAxNCwgNywgMjQ0LCAyMTUsIDE0LCA3LCAyNDEsIDIzNSwgMTQsIDcsIDI0MSwgMjM0LCAxNCwgNywgMjQxLCAyMzMsIAotICAgIDE0LCA3LCAyNDEsIDIzMiwgMTQsIDcsIDI0MSwgMjMxLCAxNCwgNywgMjQxLCAyMzAsIDE0LCA3LCAyNDEsIDIyOSwgMTQsIAotICAgIDcsIDI0MSwgMjI4LCAxNCwgNywgMjQxLCAyMjcsIDE0LCA3LCAyNDEsIDIyNiwgMTQsIDcsIDI0MSwgMjI1LCAxNCwgNywgCi0gICAgMjQxLCAyMjQsIDE0LCA3LCAyNDEsIDIyMywgMTQsIDcsIDI0MSwgMjIyLCAxNCwgNywgMjQxLCAyMjEsIDE0LCA3LCAyNDEsIAotICAgIDIyMCwgMTQsIDcsIDI0MSwgMjE5LCAxNCwgNywgMjQxLCAyMTgsIDE0LCA3LCAyNDEsIDIxNywgMTQsIDcsIDI0MSwgMjE2LCAKLSAgICAxNCwgNywgMjQxLCAyMTUsIDE0LCA3LCAyNDEsIDIxNCwgMTQsIDcsIDI0MSwgMjEzLCAxNCwgNywgMjQxLCAyMTIsIDE0LCAKLSAgICA3LCAyNDEsIDIxMSwgMTQsIDcsIDI0MSwgMjEwLCAxNCwgNywgMjQxLCAyMDksIDE0LCA3LCAyNDEsIDIwOCwgMTQsIDcsIAotICAgIDI0MSwgMjA3LCAxNCwgNywgMjQxLCAyMDYsIDE0LCA3LCAyNDEsIDIwNSwgMTQsIDcsIDI0MSwgMjA0LCAxNCwgNywgMjQxLCAKLSAgICAyMDMsIDE0LCA3LCAyNDEsIDIwMiwgMTQsIDcsIDI0MSwgMjAxLCAxNCwgNywgMjQxLCAyMDAsIDE0LCA3LCAyNDEsIDE5OSwgCi0gICAgMTQsIDcsIDI0MSwgMTk4LCAxNCwgNywgMjQxLCAxOTcsIDE0LCA3LCAyNDEsIDE5NiwgMTQsIDcsIDI0MSwgMTk1LCAxNCwgCi0gICAgNywgMjQxLCAxOTQsIDE0LCA3LCAyNDEsIDE5MywgMTQsIDcsIDI0MSwgMTkyLCAxNCwgNywgMjQwLCAxNzMsIDE0LCA3LCAKLSAgICAyNDAsIDE3MiwgMTQsIDcsIDI0MCwgMTcxLCAxNCwgNywgMjQwLCAxNzAsIDE0LCA3LCAyNDAsIDE2OSwgMTQsIDcsIDI0MCwgCi0gICAgMTY4LCAxNCwgNywgMjQwLCAxNjcsIDE0LCA3LCAyNDAsIDE2NiwgMTQsIDcsIDI0MCwgMTY1LCAxNCwgNywgMjQwLCAxNjQsIAotICAgIDE0LCA3LCAyNDAsIDE2MywgMTQsIDcsIDI0MCwgMTYyLCAxNCwgNywgMjQwLCAxNjEsIDE0LCA3LCAyNDAsIDE2MCwgMTQsIAotICAgIDcsIDI0MCwgMTU5LCAxNCwgNywgMjQwLCAxNTgsIDE0LCA3LCAyNDAsIDE1NywgMTQsIDcsIDI0MCwgMTU2LCAxNCwgNywgCi0gICAgMjQwLCAxNTUsIDE0LCA3LCAyNDAsIDE1NCwgMTQsIDcsIDI0MCwgMTUzLCAxNCwgNywgMjQwLCAxNTIsIDE0LCA3LCAyNDAsIAotICAgIDE1MSwgMTQsIDcsIDI0MCwgMTUwLCAxNCwgNywgMjQwLCAxNDksIDE0LCA3LCAyNDAsIDE0OCwgMTQsIDcsIDI0MCwgMTQ3LCAKLSAgICAxNCwgNywgMjQwLCAxNDYsIDE0LCA3LCAyNDAsIDE0NSwgMTQsIDcsIDI0MCwgMTQ0LCAxNCwgNywgMjQwLCAxNDMsIDE0LCAKLSAgICA3LCAyNDAsIDE0MiwgMTQsIDcsIDI0MCwgMTQxLCAxNCwgNywgMjQwLCAxNDAsIDE0LCA3LCAyNDAsIDEzOSwgMTQsIDcsIAotICAgIDI0MCwgMTM4LCAxNCwgNywgMjQwLCAxMzcsIDE0LCA3LCAyNDAsIDEzNiwgMTQsIDcsIDI0MCwgMTM1LCAxNCwgNywgMjQwLCAKLSAgICAxMzQsIDE0LCA3LCAyNDAsIDEzMywgMTQsIDcsIDI0MCwgMTMyLCAxNCwgNywgMjQwLCAxMzEsIDE0LCA3LCAyNDAsIDEzMCwgCi0gICAgMTQsIDcsIDI0MCwgMTI5LCAxNCwgNywgMjQwLCAxMjgsIDE0LCA3LCAyNDAsIDEyNywgMTQsIDcsIDI0MCwgMTI2LCAxNCwgCi0gICAgNywgMjQwLCAxMjUsIDE0LCA3LCAyNDAsIDEyNCwgMTQsIDcsIDI0MCwgMTIzLCAxNCwgNywgMjQwLCAxMjIsIDE0LCA3LCAKLSAgICAyNDAsIDEyMSwgMTQsIDcsIDI0MCwgMTIwLCAxNCwgNywgMjQwLCAxMTksIDE0LCA3LCAyNDAsIDExOCwgMTQsIDcsIDI0MCwgCi0gICAgMTE3LCAxNCwgNywgMjQwLCAxMTYsIDE0LCA3LCAyNDAsIDExNSwgMTQsIDcsIDI0MCwgMTE0LCAxNCwgNywgMjQwLCAxMTMsIAotICAgIDE0LCA3LCAyNDAsIDExMiwgMTQsIDcsIDI0MCwgMTExLCAxNCwgNywgMjQwLCAxMTAsIDE0LCA3LCAyNDAsIDEwOSwgMTQsIAotICAgIDcsIDIzOSwgNzQsIDE0LCA3LCAyMzksIDczLCAxNCwgNywgMjM5LCA3MiwgMTQsIDcsIDIzOSwgNzEsIDE0LCA3LCAyMzksIAotICAgIDcwLCAxNCwgNywgMjM5LCA2OSwgMTQsIDcsIDIzOSwgNjgsIDE0LCA3LCAyMzksIDY3LCAxNCwgNywgMjM5LCA2NiwgMTQsIAotICAgIDcsIDIzOSwgNjUsIDE0LCA3LCAyMzksIDY0LCAxNCwgNywgMjM5LCA2MywgMTQsIDcsIDIzOSwgNjIsIDE0LCA3LCAyMzksIAotICAgIDYxLCAxNCwgNywgMjM5LCA2MCwgMTQsIDcsIDIzOSwgNTksIDE0LCA3LCAyMzksIDU4LCAxNCwgNywgMjM5LCA1NywgMTQsIAotICAgIDcsIDIzOSwgNTYsIDE0LCA3LCAyMzksIDU1LCAxNCwgNywgMjM5LCA1NCwgMTQsIDcsIDIzOSwgNTMsIDE0LCA3LCAyMzksIAotICAgIDUyLCAxNCwgNywgMjM5LCA1MSwgMTQsIDcsIDIzOSwgNTAsIDE0LCA3LCAyMzksIDQ5LCAxNCwgNywgMjM5LCA0OCwgMTQsIAotICAgIDcsIDIzOSwgNDcsIDE0LCA3LCAyMzksIDQ2LCAxNCwgNywgMjM5LCA0NSwgMTQsIDcsIDIzOSwgNDQsIDE0LCA3LCAyMzksIAotICAgIDQzLCAxNCwgNywgMjM5LCA0MiwgMTQsIDcsIDIzOSwgNDEsIDE0LCA3LCAyMzksIDQwLCAxNCwgNywgMjM5LCAzOSwgMTQsIAotICAgIDcsIDIzOSwgMzgsIDE0LCA3LCAyMzksIDM3LCAxNCwgNywgMjM5LCAzNiwgMTQsIDcsIDIzOSwgMzUsIDE0LCA3LCAyMzksIAotICAgIDM0LCAxNCwgNywgMjM5LCAzMywgMTQsIDcsIDIzOSwgMzIsIDE0LCA3LCAyMzksIDMxLCAxNCwgNywgMjM5LCAzMCwgMTQsIAotICAgIDcsIDIzOSwgMjksIDE0LCA3LCAyMzksIDI4LCAxNCwgNywgMjM5LCAyNywgMTQsIDcsIDIzOSwgMjYsIDE0LCA3LCAyMzksIAotICAgIDI1LCAxNCwgNywgMjM5LCAyNCwgMTQsIDcsIDIzOSwgMjMsIDE0LCA3LCAyMzksIDIyLCAxNCwgNywgMjM5LCAyMSwgMTQsIAotICAgIDcsIDIzOSwgMjAsIDE0LCA3LCAyMzksIDE5LCAxNCwgNywgMjM5LCAxOCwgMTQsIDcsIDIzOSwgMTcsIDE0LCA3LCAyMzksIAotICAgIDE2LCAxNCwgNywgMjM5LCAxNSwgMTQsIDcsIDIzOSwgMTQsIDE0LCA3LCAyMzksIDEzLCAxNCwgNywgMjM5LCAxMiwgMTQsIAotICAgIDcsIDIzOSwgMTEsIDE0LCA3LCAyMzcsIDE2OSwgMTQsIDcsIDIzNywgMTY4LCAxNCwgNywgMjM3LCAxNjcsIDE0LCA3LCAKLSAgICAyMzcsIDE2NiwgMTQsIDcsIDIzNywgMTY1LCAxNCwgNywgMjM3LCAxNjQsIDE0LCA3LCAyMzcsIDE2MywgMTQsIDcsIDIzNywgCi0gICAgMTYyLCAxNCwgNywgMjM3LCAxNjEsIDE0LCA3LCAyMzUsIDE5MCwgMTQsIDcsIDIzNSwgMTg5LCAxNCwgNywgMjM1LCAxODgsIAotICAgIDE0LCA3LCAyMzUsIDE4NywgMTQsIDcsIDIzNSwgMTg2LCAxNCwgNywgMjM1LCAxODUsIDE0LCA3LCAyMzUsIDE4NCwgMTQsIAotICAgIDcsIDIzNSwgMTgzLCAxNCwgNywgMjM1LCAxODIsIDE0LCA3LCAyMzUsIDE4MSwgMTQsIDcsIDIzNSwgMTgwLCAxNCwgNywgCi0gICAgMjM1LCAxNzksIDE0LCA3LCAyMzUsIDE3OCwgMTQsIDcsIDIzNSwgMTc3LCAxNCwgNywgMjM1LCAxNzYsIDE0LCA3LCAyMzUsIAotICAgIDE3NSwgMTQsIDcsIDIzNSwgMTc0LCAxNCwgNywgMjM1LCAxNzMsIDE0LCA3LCAyMzUsIDE3MiwgMTQsIDcsIDIzMCwgNTMsIAotICAgIDE0LCA3LCAyMzAsIDUyLCAxNCwgNywgMjMwLCA1MSwgMTQsIDcsIDIzMCwgNTAsIDE0LCA3LCAyMzAsIDQ5LCAxNCwgNywgCi0gICAgMjMwLCA0OCwgMTQsIDcsIDIzMCwgNDcsIDE0LCA3LCAyMzAsIDQ2LCAxNCwgNywgMjI4LCAxMjgsIDE0LCA3LCAyMjgsIAotICAgIDEyNywgMTQsIDcsIDIyOCwgMTI2LCAxNCwgNywgMjI4LCAxMjUsIDE0LCA3LCAyMjgsIDEyNCwgMTQsIDcsIDIyOCwgMTIzLCAKLSAgICAxNCwgNywgMjI4LCAxMjIsIDE0LCA3LCAyMjgsIDEyMSwgMTQsIDcsIDIyOCwgMTIwLCAxNCwgNywgMjI4LCAxMTksIDE0LCAKLSAgICA3LCAyMjYsIDE4MywgMTQsIDcsIDIyNiwgMTgyLCAxNCwgNywgMjI2LCAxODEsIDE0LCA3LCAyMjYsIDE3OSwgMTQsIDcsIAotICAgIDIyNiwgMTc3LCAxNCwgNywgMjI2LCAxNzYsIDE0LCA3LCAyMjYsIDE3NCwgMTQsIDcsIDIyNiwgMTcyLCAxNCwgNywgMjI2LCAKLSAgICAxNzAsIDE0LCA3LCAyMjYsIDE2OCwgMTQsIDcsIDIyNiwgMTY2LCAxNCwgNywgMjI2LCAxNjQsIDE0LCA3LCAyMjYsIDE2MiwgCi0gICAgMTQsIDcsIDIyNiwgMTYxLCAxNCwgNywgMjI2LCAxNTksIDE0LCA3LCAyMjYsIDE1NywgMTQsIDcsIDIyNiwgMTU2LCAxNCwgCi0gICAgNywgMjI2LCAxNTUsIDE0LCA3LCAyMjYsIDE1NCwgMTQsIDcsIDIyNiwgMTUzLCAxNCwgNywgMjI2LCAxNTIsIDE0LCA3LCAKLSAgICAyMjYsIDE1MSwgMTQsIDcsIDIyNiwgMTUwLCAxNCwgNywgMjI2LCAxNDksIDE0LCA3LCAyMjYsIDE0NywgMTQsIDcsIDIyNiwgCi0gICAgMTQ1LCAxNCwgNywgMjI2LCAxNDMsIDE0LCA3LCAyMjYsIDE0MiwgMTQsIDcsIDIyNiwgMTQwLCAxNCwgNywgMjI2LCAxMzksIAotICAgIDE0LCA3LCAyMjYsIDEzNywgMTQsIDcsIDIyNiwgMTM2LCAxNCwgNywgMjI2LCAxMzQsIDE0LCA3LCAyMjYsIDEzMiwgMTQsIAotICAgIDcsIDIyNiwgMTMwLCAxNCwgNywgMjI2LCAxMjgsIDE0LCA3LCAyMjYsIDEyNiwgMTQsIDcsIDIyNiwgMTI1LCAxNCwgNywgCi0gICAgMjI2LCAxMjMsIDE0LCA3LCAyMjYsIDEyMSwgMTQsIDcsIDIyNiwgMTIwLCAxNCwgNywgMjI2LCAxMTgsIDE0LCA3LCAyMjYsIAotICAgIDExNiwgMTQsIDcsIDIyNiwgMTE0LCAxNCwgNywgMjI2LCAxMTIsIDE0LCA3LCAyMjYsIDExMSwgMTQsIDcsIDIyNiwgMTA5LCAKLSAgICAxNCwgNywgMjI2LCAxMDcsIDE0LCA3LCAyMjYsIDEwNSwgMTQsIDcsIDIyNiwgMTA0LCAxNCwgNywgMjI2LCAxMDIsIDE0LCAKLSAgICA3LCAyMjYsIDEwMCwgMTQsIDcsIDIyNiwgOTksIDE0LCA3LCAyMjYsIDk4LCAxNCwgNywgMjI2LCA5NiwgMTQsIDcsIDIyNiwgCi0gICAgOTQsIDE0LCA3LCAyMjYsIDkyLCAxNCwgNywgMjI2LCA5MCwgMTQsIDcsIDIyNiwgODgsIDE0LCA3LCAyMjYsIDg2LCAxNCwgCi0gICAgNywgMjI2LCA4NCwgMTQsIDcsIDIyNiwgODMsIDE0LCA3LCAyMjYsIDgxLCAxNCwgNywgMjI2LCA3OSwgMTQsIDcsIDIyNiwgCi0gICAgNzcsIDE0LCA3LCAyMjYsIDc1LCAxNCwgNywgMjIzLCAxNjAsIDE0LCA3LCAyMjMsIDE1OSwgMTQsIDcsIDIyMywgMTU4LCAKLSAgICAxNCwgNywgMjIzLCAxNTcsIDE0LCA3LCAyMjMsIDE1NiwgMTQsIDcsIDIyMywgMTU1LCAxNCwgNywgMjIzLCAxNTQsIDE0LCAKLSAgICA3LCAyMjMsIDE1MywgMTQsIDcsIDIyMywgMTUyLCAxNCwgNywgMjIzLCAxNTEsIDE0LCA3LCAyMjMsIDE1MCwgMTQsIDcsIAotICAgIDIyMywgMTQ5LCAxNCwgNywgMjIzLCAxNDgsIDE0LCA3LCAyMjMsIDE0NywgMTQsIDcsIDIyMywgMTQ2LCAxNCwgNywgMjIzLCAKLSAgICAxNDUsIDE0LCA3LCAyMjMsIDE0NCwgMTQsIDcsIDIyMywgMTQzLCAxNCwgNywgMjIzLCAxNDIsIDE0LCA3LCAyMjMsIDE0MSwgCi0gICAgMTQsIDcsIDIyMywgMTQwLCAxNCwgNywgMjIzLCAxMzksIDE0LCA3LCAyMjMsIDEzOCwgMTQsIDcsIDIyMywgMTM3LCAxNCwgCi0gICAgNywgMjIzLCAxMzYsIDE0LCA3LCAyMjMsIDEzNSwgMTQsIDcsIDIyMywgMTM0LCAxNCwgNywgMjIzLCAxMzMsIDE0LCA3LCAKLSAgICAyMjMsIDEzMiwgMTQsIDcsIDIyMywgMTMxLCAxNCwgNywgMjIzLCAxMzAsIDE0LCA3LCAyMjMsIDEyOSwgMTQsIDcsIDIyMywgCi0gICAgMTI4LCAxNCwgNywgMjIzLCAxMjcsIDE0LCA3LCAyMjMsIDEyNiwgMTQsIDcsIDIyMywgMTI1LCAxNCwgNywgMjIzLCAxMjQsIAotICAgIDE0LCA3LCAyMjMsIDEyMywgMTQsIDcsIDIyMywgMTIyLCAxNCwgNywgMjIzLCAxMjEsIDE0LCA3LCAyMjMsIDEyMCwgMTQsIAotICAgIDcsIDIyMywgMTE5LCAxNCwgNywgMjIzLCAxMTgsIDE0LCA3LCAyMjMsIDExNywgMTQsIDcsIDIyMywgMTE2LCAxNCwgNywgCi0gICAgMjIzLCAxMTUsIDE0LCA3LCAyMjMsIDExNCwgMTQsIDcsIDIyMywgMTEzLCAxNCwgNywgMjIzLCAxMTIsIDE0LCA3LCAyMjEsIAotICAgIDI1MiwgMTQsIDcsIDIyMSwgMjUxLCAxNCwgNywgMjIxLCAyNTAsIDE0LCA3LCAyMjEsIDI0OSwgMTQsIDcsIDIyMSwgMjQ4LCAKLSAgICAxNCwgNywgMjIxLCAyNDcsIDE0LCA3LCAyMjEsIDI0NiwgMTQsIDcsIDIyMSwgMjQ1LCAxNCwgNywgMjIxLCAyNDQsIDE0LCAKLSAgICA3LCAyMjEsIDI0MywgMTQsIDcsIDIyMSwgMjQyLCAxNCwgNywgMjIxLCAyNDEsIDE0LCA3LCAyMjEsIDI0MCwgMTQsIDcsIAotICAgIDIyMSwgMjM5LCAxNCwgNywgMjIxLCAyMzgsIDE0LCA3LCAyMjEsIDIzNywgMTQsIDcsIDIyMSwgMjM2LCAxNCwgNywgMjIxLCAKLSAgICAyMzUsIDE0LCA3LCAyMjEsIDIzNCwgMTQsIDcsIDIyMSwgMjMzLCAxNCwgNywgMjIxLCAyMzIsIDE0LCA3LCAyMjEsIDIzMSwgCi0gICAgMTQsIDcsIDIyMSwgODMsIDE0LCA3LCAyMjEsIDgyLCAxNCwgNywgMjIxLCA4MSwgMTQsIDcsIDIyMSwgODAsIDE0LCA3LCAKLSAgICAyMjEsIDc5LCAxNCwgNywgMjIxLCA3OCwgMTQsIDcsIDIyMSwgNzcsIDE0LCA3LCAyMjEsIDc2LCAxNCwgNywgMjIxLCA3NSwgCi0gICAgMTQsIDcsIDIyMSwgNzQsIDE0LCA3LCAyMjEsIDczLCAxNCwgNywgMjIxLCA3MiwgMTQsIDcsIDIyMSwgNzEsIDE0LCA3LCAKLSAgICAyMjEsIDcwLCAxNCwgNywgMjIxLCA2OSwgMTQsIDcsIDIyMSwgNjgsIDE0LCA3LCAyMjEsIDY3LCAxNCwgNywgMjIxLCA2NiwgCi0gICAgMTQsIDcsIDIyMSwgNjUsIDE0LCA3LCAyMjEsIDY0LCAxNCwgNywgMjIxLCA2MywgMTQsIDcsIDIyMSwgNjIsIDE0LCA3LCAKLSAgICAyMjEsIDYxLCAxNCwgNywgMjIxLCA2MCwgMTQsIDcsIDIyMSwgNTksIDE0LCA3LCAyMjEsIDU4LCAxNCwgNywgMjIwLCAxNzMsIAotICAgIDE0LCA3LCAyMjAsIDE3MiwgMTQsIDcsIDIyMCwgMTcxLCAxNCwgNywgMjIwLCAxNzAsIDE0LCA3LCAyMjAsIDE2OSwgMTQsIAotICAgIDcsIDIyMCwgMTY4LCAxNCwgNywgMjIwLCAxNjcsIDE0LCA3LCAyMjAsIDE2NiwgMTQsIDcsIDIyMCwgMTY1LCAxNCwgNywgCi0gICAgMjIwLCAxNjQsIDE0LCA3LCAyMjAsIDE2MywgMTQsIDcsIDIyMCwgMTYyLCAxNCwgNywgMjIwLCAxNjEsIDE0LCA3LCAyMjAsIAotICAgIDE2MCwgMTQsIDcsIDIyMCwgMTU5LCAxNCwgNywgMjIwLCAxNTgsIDE0LCA3LCAyMjAsIDE1NywgMTQsIDcsIDIyMCwgMTU2LCAKLSAgICAxNCwgNywgMjIwLCAxNTUsIDE0LCA3LCAyMjAsIDE1NCwgMTQsIDcsIDIyMCwgMTUzLCAxNCwgNywgMjIwLCAxNTIsIDE0LCAKLSAgICA3LCAyMjAsIDE1MSwgMTQsIDcsIDIyMCwgMTUwLCAxNCwgNywgMjIwLCAxNDksIDE0LCA3LCAyMjAsIDE0OCwgMTQsIDcsIAotICAgIDIyMCwgMTQ3LCAxNCwgNywgMjIwLCAxNDYsIDE0LCA3LCAyMjAsIDE0NSwgMTQsIDcsIDIyMCwgMTQ0LCAxNCwgNywgMjIwLCAKLSAgICAxNDMsIDE0LCA3LCAyMjAsIDE0MiwgMTQsIDcsIDIyMCwgMTQxLCAxNCwgNywgMjIwLCAxNDAsIDE0LCA3LCAyMjAsIDEzOSwgCi0gICAgMTQsIDcsIDIyMCwgMTM4LCAxNCwgNywgMjIwLCAxMzcsIDE0LCA3LCAyMjAsIDEzNiwgMTQsIDcsIDIyMCwgMTM1LCAxNCwgCi0gICAgNywgMjIwLCAxMzQsIDE0LCA3LCAyMjAsIDEzMywgMTQsIDcsIDIyMCwgMTMyLCAxNCwgNywgMjIwLCAxMzEsIDE0LCA3LCAKLSAgICAyMjAsIDEzMCwgMTQsIDcsIDIyMCwgMTI5LCAxNCwgNywgMjIwLCAxMjgsIDE0LCA3LCAyMjAsIDEyNywgMTQsIDcsIDIyMCwgCi0gICAgMTI2LCAxNCwgNywgMjIwLCAxMjUsIDE0LCA3LCAyMjAsIDEyNCwgMTQsIDcsIDIyMCwgMTIzLCAxNCwgNywgMjIwLCAxMjIsIAotICAgIDE0LCA3LCAyMjAsIDEyMSwgMTQsIDcsIDIyMCwgMTIwLCAxNCwgNywgMjIwLCAxMTksIDE0LCA3LCAyMjAsIDExOCwgMTQsIAotICAgIDcsIDIyMCwgMTE3LCAxNCwgNywgMjIwLCAxMTYsIDE0LCA3LCAyMjAsIDExNSwgMTQsIDcsIDIyMCwgMTE0LCAxNCwgNywgCi0gICAgMjIwLCAxMTMsIDE0LCA3LCAyMjAsIDExMiwgMTQsIDcsIDIyMCwgMTExLCAxNCwgNywgMjIwLCAxMTAsIDE0LCA3LCAyMjAsIAotICAgIDEwOSwgMTQsIDcsIDIyMCwgMTA4LCAxNCwgNywgMjIwLCAxMDcsIDE0LCA3LCAyMjAsIDEwNiwgMTQsIDcsIDIyMCwgMTA1LCAKLSAgICAxNCwgNywgMjIwLCAxMDQsIDE0LCA3LCAyMjAsIDEwMywgMTQsIDcsIDIyMCwgMTAyLCAxNCwgNywgMjIwLCAxMDEsIDE0LCAKLSAgICA3LCAyMjAsIDEwMCwgMTQsIDcsIDIyMCwgOTksIDE0LCA3LCAyMTksIDE4MywgMTQsIDcsIDIxOSwgMTgyLCAxNCwgNywgCi0gICAgMjE5LCAxODEsIDE0LCA3LCAyMTksIDE4MCwgMTQsIDcsIDIxOSwgMTc5LCAxNCwgNywgMjE5LCAxNzgsIDE0LCA3LCAyMTksIAotICAgIDE3NywgMTQsIDcsIDIxOSwgMTc2LCAxNCwgNywgMjE5LCAxNzUsIDE0LCA3LCAyMTksIDE3NCwgMTQsIDcsIDIxOSwgMTczLCAKLSAgICAxNCwgNywgMjE5LCAxNzIsIDE0LCA3LCAyMTksIDE3MSwgMTQsIDcsIDIxNywgMTMzLCAxNCwgNywgMjE3LCAxMzIsIDE0LCAKLSAgICA3LCAyMTcsIDEzMSwgMTQsIDcsIDIxNywgMTMwLCAxNCwgNywgMjE3LCAxMjksIDE0LCA3LCAyMTcsIDEyOCwgMTQsIDcsIAotICAgIDIxNywgMTI3LCAxNCwgNywgMjE2LCAyNTUsIDE0LCA3LCAyMTYsIDI1NCwgMTQsIDcsIDIxNiwgMjUzLCAxNCwgNywgMjE2LCAKLSAgICAyNTIsIDE0LCA3LCAyMTYsIDI1MSwgMTQsIDcsIDIxNiwgMjUwLCAxNCwgNywgMjE2LCAyNDksIDE0LCA3LCAyMTYsIDI0OCwgCi0gICAgMTQsIDcsIDIxNiwgMjQ3LCAxNCwgNywgMjE2LCAyNDYsIDE0LCA3LCAyMTYsIDI0NSwgMTQsIDcsIDIxNiwgMjQ0LCAxNCwgCi0gICAgNywgMjE2LCAyNDMsIDE0LCA3LCAyMTYsIDI0MiwgMTQsIDcsIDIxNiwgMjQxLCAxNCwgNywgMjE2LCAyNDAsIDE0LCA3LCAKLSAgICAyMTYsIDIzOSwgMTQsIDcsIDIxNiwgMjM4LCAxNCwgNywgMjE2LCAyMzcsIDE0LCA3LCAyMTYsIDIzNiwgMTQsIDcsIDIxNiwgCi0gICAgMjM1LCAxNCwgNywgMjE2LCAyMzQsIDE0LCA3LCAyMTYsIDIzMywgMTQsIDcsIDIxNiwgMjMyLCAxNCwgNywgMjE2LCAyMzEsIAotICAgIDE0LCA3LCAyMTYsIDIzMCwgMTQsIDcsIDIxNiwgMjI5LCAxNCwgNywgMjE2LCAyMjgsIDE0LCA3LCAyMTYsIDIyNywgMTQsIAotICAgIDcsIDIxNiwgMjI2LCAxNCwgNywgMjE2LCAyMjUsIDE0LCA3LCAyMTYsIDIyNCwgMTQsIDcsIDIxNiwgMjIzLCAxNCwgNywgCi0gICAgMjE2LCAyMjIsIDE0LCA3LCAyMTUsIDkxLCAxNCwgNywgMjE1LCA5MCwgMTQsIDcsIDIxNSwgODksIDE0LCA3LCAyMTUsIDg4LCAKLSAgICAxNCwgNywgMjE1LCA4NywgMTQsIDcsIDIxNSwgODYsIDE0LCA3LCAyMTUsIDg1LCAxNCwgNywgMjE1LCA4NCwgMTQsIDcsIAotICAgIDIxNSwgODMsIDE0LCA3LCAyMTUsIDgyLCAxNCwgNywgMjE1LCA4MSwgMTQsIDcsIDIxNSwgODAsIDE0LCA3LCAyMTUsIDc5LCAKLSAgICAxNCwgNywgMjE1LCA3OCwgMTQsIDcsIDIxNSwgNzcsIDE0LCA3LCAyMTUsIDc2LCAxNCwgNywgMjE1LCA3NSwgMTQsIDcsIAotICAgIDIxNSwgNzQsIDE0LCA3LCAyMTUsIDczLCAxNCwgNywgMjE1LCA3MiwgMTQsIDcsIDIxNSwgNzEsIDE0LCA3LCAyMTUsIDcwLCAKLSAgICAxNCwgNywgMjE1LCA2OSwgMTQsIDcsIDIxNSwgNjgsIDE0LCA3LCAyMTUsIDY3LCAxNCwgNywgMjE1LCA2NiwgMTQsIDcsIAotICAgIDIxNSwgNjUsIDE0LCA3LCAyMTUsIDY0LCAxNCwgNywgMjE1LCA2MywgMTQsIDcsIDIxNSwgNjIsIDE0LCA3LCAyMTUsIDYxLCAKLSAgICAxNCwgNywgMjE1LCA2MCwgMTQsIDcsIDIxNSwgNTksIDE0LCA3LCAyMTUsIDU4LCAxNCwgNywgMjE1LCA1NywgMTQsIDcsIAotICAgIDIxNSwgNTYsIDE0LCA3LCAyMTUsIDU1LCAxNCwgNywgMjE1LCA1NCwgMTQsIDcsIDIxNSwgNTMsIDE0LCA3LCAyMTUsIDUyLCAKLSAgICAxNCwgNywgMjE1LCA1MSwgMTQsIDcsIDIxNSwgNTAsIDE0LCA3LCAyMTUsIDQ5LCAxNCwgNywgMjE1LCA0OCwgMTQsIDcsIAotICAgIDIxNSwgNDcsIDE0LCA3LCAyMTUsIDQ2LCAxNCwgNywgMjE1LCA0NSwgMTQsIDcsIDIxNSwgNDQsIDE0LCA3LCAyMTUsIDQzLCAKLSAgICAxNCwgNywgMjE1LCA0MiwgMTQsIDcsIDIxNSwgNDEsIDE0LCA3LCAyMTUsIDQwLCAxNCwgNywgMjE1LCAzOSwgMTQsIDcsIAotICAgIDIxNSwgMzgsIDE0LCA3LCAyMTAsIDY3LCAxNCwgNywgMjEwLCA2NiwgMTQsIDcsIDIxMCwgNjUsIDE0LCA3LCAyMTAsIDY0LCAKLSAgICAxNCwgNywgMjEwLCA2MywgMTQsIDcsIDIxMCwgNjIsIDE0LCA3LCAyMTAsIDYxLCAxNCwgNywgMjEwLCA2MCwgMTQsIDcsIAotICAgIDIxMCwgNTksIDE0LCA3LCAyMTAsIDU4LCAxNCwgNywgMjEwLCA1NywgMTQsIDcsIDIxMCwgNTYsIDE0LCA3LCAyMTAsIDU1LCAKLSAgICAxNCwgNywgMjEwLCA1NCwgMTQsIDcsIDIxMCwgNTMsIDE0LCA3LCAyMTAsIDUyLCAxNCwgNywgMjEwLCA1MSwgMTQsIDcsIAotICAgIDIxMCwgNTAsIDE0LCA3LCAyMTAsIDQ5LCAxNCwgNywgMjEwLCA0OCwgMTQsIDcsIDIxMCwgNDcsIDE0LCA3LCAyMTAsIDQ2LCAKLSAgICAxNCwgNywgMjEwLCA0NSwgMTQsIDcsIDIxMCwgNDQsIDE0LCA3LCAyMTAsIDQzLCAxNCwgNywgMjEwLCA0MiwgMTQsIDcsIAotICAgIDIxMCwgNDEsIDE0LCA3LCAyMTAsIDQwLCAxNCwgNywgMjEwLCAzOSwgMTQsIDcsIDIxMCwgMzgsIDE0LCA3LCAyMTAsIDM3LCAKLSAgICAxNCwgNywgMjEwLCAzNiwgMTQsIDcsIDIxMCwgMzUsIDE0LCA3LCAyMTAsIDM0LCAxNCwgNywgMjEwLCAzMywgMTQsIDcsIAotICAgIDIxMCwgMzIsIDE0LCA3LCAyMTAsIDMxLCAxNCwgNywgMjEwLCAzMCwgMTQsIDcsIDIxMCwgMjksIDE0LCA3LCAyMTAsIDI4LCAKLSAgICAxNCwgNywgMjEwLCAyNywgMTQsIDcsIDIxMCwgMjYsIDE0LCA3LCAyMTAsIDI1LCAxNCwgNywgMjEwLCAyNCwgMTQsIDcsIAotICAgIDIwNywgODgsIDE0LCA3LCAyMDcsIDg3LCAxNCwgNywgMjA3LCA4NiwgMTQsIDcsIDIwNywgODUsIDE0LCA3LCAyMDcsIDg0LCAKLSAgICAxNCwgNywgMjA3LCA4MywgMTQsIDcsIDIwNywgODIsIDE0LCA3LCAyMDcsIDgxLCAxNCwgNywgMjA3LCA4MCwgMTQsIDcsIAotICAgIDIwNywgNzksIDE0LCA3LCAyMDcsIDc4LCAxNCwgNywgMjA3LCA3NywgMTQsIDcsIDIwNywgNzYsIDE0LCA3LCAyMDcsIDc1LCAKLSAgICAxNCwgNywgMjA3LCA3NCwgMTQsIDcsIDIwNywgNzMsIDE0LCA3LCAyMDcsIDcyLCAxNCwgNywgMjA3LCA3MSwgMTQsIDcsIAotICAgIDIwNywgNzAsIDE0LCA3LCAyMDcsIDY5LCAxNCwgNywgMjA3LCA2OCwgMTQsIDcsIDIwNywgNjcsIDE0LCA3LCAyMDcsIDY2LCAKLSAgICAxNCwgNywgMjA3LCA2NSwgMTQsIDcsIDIwNywgNjQsIDE0LCA3LCAyMDcsIDYzLCAxNCwgNywgMjA3LCA2MiwgMTQsIDcsIAotICAgIDIwNywgNjEsIDE0LCA3LCAyMDcsIDYwLCAxNCwgNywgMjA3LCA1OSwgMTQsIDcsIDIwNywgNTgsIDE0LCA3LCAyMDcsIDU3LCAKLSAgICAxNCwgNywgMjA3LCA1NiwgMTQsIDcsIDIwNywgNTUsIDE0LCA3LCAyMDcsIDU0LCAxNCwgNywgMjA3LCA1MywgMTQsIDcsIAotICAgIDIwNywgNTIsIDE0LCA3LCAyMDcsIDUxLCAxNCwgNywgMjA3LCA1MCwgMTQsIDcsIDIwNywgNDksIDE0LCA3LCAyMDcsIDQ4LCAKLSAgICAxNCwgNywgMjA3LCA0NywgMTQsIDcsIDIwNywgNDYsIDE0LCA3LCAyMDcsIDQ1LCAxNCwgNywgMjA3LCA0NCwgMTQsIDcsIAotICAgIDIwNywgNDMsIDE0LCA3LCAyMDcsIDQyLCAxNCwgNywgMjA2LCAxNjMsIDE0LCA3LCAyMDYsIDE2MiwgMTQsIDcsIDIwNiwgCi0gICAgMTYxLCAxNCwgNywgMjA2LCAxNjAsIDE0LCA3LCAyMDYsIDE1OSwgMTQsIDcsIDIwNiwgMTU4LCAxNCwgNywgMjA2LCAxNTcsIAotICAgIDE0LCA3LCAyMDYsIDE1NiwgMTQsIDcsIDIwNiwgMTU1LCAxNCwgNywgMjA2LCAxNTQsIDE0LCA3LCAyMDYsIDE1MywgMTQsIAotICAgIDcsIDIwNiwgMTUyLCAxNCwgNywgMjA2LCAxNTEsIDE0LCA3LCAyMDYsIDE1MCwgMTQsIDcsIDIwNiwgMTQ5LCAxNCwgNywgCi0gICAgMjA2LCAxNDgsIDE0LCA3LCAyMDYsIDE0NywgMTQsIDcsIDIwNiwgMTQ2LCAxNCwgNywgMjA2LCAxNDUsIDE0LCA3LCAyMDYsIAotICAgIDE0NCwgMTQsIDcsIDIwNiwgMTQzLCAxNCwgNywgMjA2LCAxNDIsIDE0LCA3LCAyMDYsIDE0MSwgMTQsIDcsIDIwNiwgMTQwLCAKLSAgICAxNCwgNywgMjA2LCAxMzksIDE0LCA3LCAyMDYsIDEzOCwgMTQsIDcsIDIwNiwgMTM3LCAxNCwgNywgMjA2LCAxMzYsIDE0LCAKLSAgICA3LCAyMDYsIDEzNSwgMTQsIDcsIDIwNiwgMTM0LCAxNCwgNywgMjA2LCAxMzMsIDE0LCA3LCAyMDYsIDEzMiwgMTQsIDcsIAotICAgIDIwNiwgMTMxLCAxNCwgNywgMjA2LCAxMzAsIDE0LCA3LCAyMDYsIDEyOSwgMTQsIDcsIDIwNiwgMTI4LCAxNCwgNywgMjA2LCAKLSAgICAxMjcsIDE0LCA3LCAyMDYsIDEyNiwgMTQsIDcsIDIwNiwgMTI1LCAxNCwgNywgMjA2LCAxMjQsIDE0LCA3LCAyMDYsIDEyMywgCi0gICAgMTQsIDcsIDIwNiwgMTIyLCAxNCwgNywgMjA2LCAxMjEsIDE0LCA3LCAyMDYsIDEyMCwgMTQsIDcsIDIwNiwgMTE5LCAxNCwgCi0gICAgNywgMjA2LCAxMTgsIDE0LCA3LCAyMDYsIDExNywgMTQsIDcsIDIwNiwgMTE2LCAxNCwgNywgMjA2LCAxMTUsIDE0LCA3LCAKLSAgICAyMDYsIDExNCwgMTQsIDcsIDIwNiwgMTEzLCAxNCwgNywgMjA2LCAxMTIsIDE0LCA3LCAyMDYsIDExMSwgMTQsIDcsIDIwNiwgCi0gICAgMTEwLCAxNCwgNywgMjA2LCAxMDksIDE0LCA3LCAyMDYsIDEwOCwgMTQsIDcsIDIwNiwgMTA3LCAxNCwgNywgMjA2LCAxMDYsIAotICAgIDE0LCA3LCAyMDYsIDEwNSwgMTQsIDcsIDIwNiwgMTA0LCAxNCwgNywgMjA2LCAxMDMsIDE0LCA3LCAyMDYsIDEwMiwgMTQsIAotICAgIDcsIDIwNiwgMTAxLCAxNCwgNywgMjA2LCAxMDAsIDE0LCA3LCAyMDYsIDk5LCAxNCwgNywgMjA2LCA5OCwgMTQsIDcsIDIwNiwgCi0gICAgOTcsIDE0LCA3LCAyMDYsIDk2LCAxNCwgNywgMjA2LCA5NSwgMTQsIDcsIDIwNiwgOTQsIDE0LCA3LCAyMDYsIDkzLCAxNCwgCi0gICAgNywgMjA2LCA5MiwgMTQsIDcsIDIwNiwgOTEsIDE0LCA3LCAyMDYsIDkwLCAxNCwgNywgMjA2LCA4OSwgMTQsIDcsIDIwNiwgCi0gICAgODgsIDE0LCA3LCAyMDYsIDg3LCAxNCwgNywgMjA0LCAxNDMsIDE0LCA3LCAyMDQsIDE0MiwgMTQsIDcsIDIwNCwgMTQxLCAKLSAgICAxNCwgNywgMjA0LCAxNDAsIDE0LCA3LCAyMDQsIDEzOSwgMTQsIDcsIDIwNCwgMTM4LCAxNCwgNywgMjA0LCAxMzcsIDE0LCAKLSAgICA3LCAyMDQsIDEzNiwgMTQsIDcsIDIwNCwgMTM1LCAxNCwgNywgMjA0LCAxMzQsIDE0LCA3LCAyMDQsIDEzMywgMTQsIDcsIAotICAgIDIwNCwgMTMyLCAxNCwgNywgMjA0LCAxMzEsIDE0LCA3LCAyMDQsIDEzMCwgMTQsIDcsIDIwNCwgMTI5LCAxNCwgNywgMjA0LCAKLSAgICAxMjgsIDE0LCA3LCAyMDQsIDEyNywgMTQsIDcsIDIwNCwgMTI2LCAxNCwgNywgMjA0LCAxMjUsIDE0LCA3LCAyMDQsIDEyNCwgCi0gICAgMTQsIDcsIDIwNCwgMTIzLCAxNCwgNywgMjA0LCAxMjIsIDE0LCA3LCAyMDQsIDEyMSwgMTQsIDcsIDIwNCwgMTIwLCAxNCwgCi0gICAgNywgMjA0LCAxMTksIDE0LCA3LCAyMDQsIDExOCwgMTQsIDcsIDIwNCwgMTE3LCAxNCwgNywgMjA0LCAxMTYsIDE0LCA3LCAKLSAgICAyMDQsIDExNSwgMTQsIDcsIDIwNCwgMTE0LCAxNCwgNywgMjA0LCAxMTMsIDE0LCA3LCAyMDQsIDExMiwgMTQsIDcsIDIwMywgCi0gICAgMTk0LCAxNCwgNywgMjAzLCAxOTMsIDE0LCA3LCAyMDMsIDE5MiwgMTQsIDcsIDIwMywgMTkxLCAxNCwgNywgMjAzLCAxOTAsIAotICAgIDE0LCA3LCAyMDMsIDE4OSwgMTQsIDcsIDIwMywgMTg4LCAxNCwgNywgMjAzLCAxODcsIDE0LCA3LCAyMDMsIDE4NiwgMTQsIAotICAgIDcsIDIwMywgMTg1LCAxNCwgNywgMjAzLCAxODQsIDE0LCA3LCAyMDMsIDE4MywgMTQsIDcsIDIwMywgMTIyLCAxNCwgNywgCi0gICAgMjAzLCAxMjEsIDE0LCA3LCAyMDMsIDEyMCwgMTQsIDcsIDIwMywgMTE5LCAxNCwgNywgMjAzLCAxMTgsIDE0LCA3LCAyMDMsIAotICAgIDExNywgMTQsIDcsIDIwMywgMTE2LCAxNCwgNywgMjAzLCAxMTUsIDE0LCA3LCAyMDMsIDExNCwgMTQsIDcsIDIwMiwgMTU4LCAKLSAgICAxNCwgNywgMjAyLCAxNTcsIDE0LCA3LCAyMDIsIDE1NiwgMTQsIDcsIDIwMiwgMTU1LCAxNCwgNywgMjAyLCAxNTQsIDE0LCAKLSAgICA3LCAyMDIsIDE1MywgMTQsIDcsIDIwMiwgMTUyLCAxNCwgNywgMjAyLCAxNTEsIDE0LCA3LCAyMDIsIDE1MCwgMTQsIDcsIAotICAgIDIwMiwgMTQ5LCAxNCwgNywgMjAyLCAxNDgsIDE0LCA3LCAyMDIsIDE0NywgMTQsIDcsIDIwMiwgMTQ2LCAxNCwgNywgMjAyLCAKLSAgICAxNDUsIDE0LCA3LCAyMDIsIDE0NCwgMTQsIDcsIDIwMiwgMTQzLCAxNCwgNywgMjAyLCAxNDIsIDE0LCA3LCAyMDIsIDE0MSwgCi0gICAgMTQsIDcsIDIwMiwgMTQwLCAxNCwgNywgMjAyLCAxMzksIDE0LCA3LCAyMDIsIDEzOCwgMTQsIDcsIDIwMiwgMTM3LCAxNCwgCi0gICAgNywgMjAyLCAxMzYsIDE0LCA3LCAyMDIsIDEzNSwgMTQsIDcsIDIwMiwgMTM0LCAxNCwgNywgMjAyLCAxMzMsIDE0LCA3LCAKLSAgICAyMDIsIDEzMiwgMTQsIDcsIDIwMiwgMTMxLCAxNCwgNywgMjAyLCAxMzAsIDE0LCA3LCAyMDIsIDEyOSwgMTQsIDcsIDIwMiwgCi0gICAgMTI4LCAxNCwgNywgMjAyLCAxMjcsIDE0LCA3LCAyMDIsIDEyNiwgMTQsIDcsIDIwMiwgMTI1LCAxNCwgNywgMjAyLCAxMjQsIAotICAgIDE0LCA3LCAyMDIsIDEyMywgMTQsIDcsIDIwMiwgMTIyLCAxNCwgNywgMjAyLCAxMjEsIDE0LCA3LCAyMDIsIDEyMCwgMTQsIAotICAgIDcsIDIwMiwgMTE5LCAxNCwgNywgMjAyLCAxMTgsIDE0LCA3LCAyNTIsIDI0LCAxNCwgNywgMjUyLCAyMywgMTQsIDcsIDI1MiwgCi0gICAgMjIsIDE0LCA3LCAyNTIsIDIxLCAxNCwgNywgMjUyLCAyMCwgMTQsIDcsIDI1MiwgMTksIDE0LCA3LCAyNTIsIDE4LCAxNCwgCi0gICAgNywgMjUyLCAxNywgMTQsIDcsIDI1MiwgMTYsIDE0LCA3LCAyNTIsIDE1LCAxNCwgNywgMjUyLCAxNCwgMTQsIDcsIDI1MiwgCi0gICAgMTMsIDE0LCA3LCAyNTIsIDEyLCAxNCwgNywgMjUyLCAxMSwgMTQsIDcsIDI1MiwgMTAsIDE0LCA3LCAyNTIsIDksIDE0LCA3LCAKLSAgICAyNTIsIDgsIDE0LCA3LCAyNTIsIDcsIDE0LCA3LCAyNTIsIDYsIDE0LCA3LCAyNTIsIDUsIDE0LCA3LCAyNTIsIDQsIDE0LCAKLSAgICA3LCAyNTIsIDMsIDE0LCA3LCAyNTIsIDIsIDE0LCA3LCAyNTIsIDEsIDE0LCA3LCAyNTIsIDAsIDE0LCA3LCAyNTEsIDI1NSwgCi0gICAgMTQsIDcsIDI1MSwgMjU0LCAxNCwgNywgMjUxLCAyNTMsIDE0LCA3LCAyNTEsIDI1MiwgMTQsIDcsIDI1MSwgMjUxLCAxNCwgCi0gICAgNywgMjUxLCAyNTAsIDE0LCA3LCAyNTEsIDI0OSwgMTQsIDcsIDI1MSwgMjQ4LCAxNCwgNywgMjUxLCAyNDcsIDI3LCA3LCAKLSAgICAyNTUsIDE4LCAyNywgNywgMjU1LCAxNywgMjcsIDcsIDI1NSwgMTYsIDI3LCA3LCAyNTUsIDE1LCAyNywgNywgMjU1LCAxNCwgCi0gICAgMjcsIDcsIDI1NSwgMTIsIDI3LCA3LCAyNTUsIDksIDI3LCA3LCAyNTUsIDgsIDI3LCA3LCAyNTUsIDcsIDI3LCA3LCAyNTUsIAotICAgIDYsIDI3LCA3LCAyNTUsIDUsIDI3LCA3LCAyNTUsIDQsIDI3LCA3LCAyNTUsIDMsIDI3LCA3LCAyNTUsIDIsIDI3LCA3LCAKLSAgICAyNTUsIDEsIDI3LCA3LCAyNTQsIDI1NSwgMjcsIDcsIDI1NCwgMjU0LCAyNywgNywgMjU0LCAyNTMsIDI3LCA3LCAyNTQsIAotICAgIDI1MSwgMjcsIDcsIDI1NCwgMjUwLCAyNywgNywgMjU0LCAyNDksIDI3LCA3LCAyNTQsIDI0OCwgMjcsIDcsIDI1NCwgMjQ3LCAKLSAgICAyNywgNywgMjU0LCAyNDYsIDI3LCA3LCAyNTQsIDI0NSwgMjcsIDcsIDI1NCwgMjQ0LCAyNywgNywgMjU0LCAyNDMsIDI3LCAKLSAgICA3LCAyNTQsIDI0MiwgMjcsIDcsIDI1NCwgMjQxLCAyNywgNywgMjU0LCAyNDAsIDI3LCA3LCAyNTQsIDIzOCwgMjcsIDcsIAotICAgIDI1NCwgMjM3LCAyNywgNywgMjU0LCAyMzYsIDI3LCA3LCAyNTQsIDIzNSwgMjcsIDcsIDI1NCwgMjMzLCAyNywgNywgMjU0LCAKLSAgICAyMzIsIDI3LCA3LCAyNTQsIDIzMSwgMjcsIDcsIDI1NCwgMjMwLCAyNywgNywgMjU0LCAyMjksIDI3LCA3LCAyNTQsIDIyOCwgCi0gICAgMjcsIDcsIDI1NCwgMjI3LCAyNywgNywgMjU0LCAyMjYsIDI3LCA3LCAyNTQsIDIyNSwgMjcsIDcsIDI1NCwgMjIzLCAyNywgCi0gICAgNywgMjU0LCAyMjIsIDI3LCA3LCAyNTQsIDIyMSwgMjcsIDcsIDI1NCwgMjE5LCAyNywgNywgMjU0LCAyMTcsIDI3LCA3LCAKLSAgICAyNTQsIDIxNiwgMjcsIDcsIDI1NCwgMjE1LCAyNywgNywgMjU0LCAyMTQsIDI3LCA3LCAyNTQsIDIxMywgMjcsIDcsIDI1NCwgCi0gICAgMjEyLCAyNywgNywgMjU0LCAyMTEsIDI3LCA3LCAyNTQsIDIxMCwgMjcsIDcsIDI1NCwgMjA5LCAyNywgNywgMjU0LCAyMDgsIAotICAgIDI3LCA3LCAyNTQsIDIwNywgMjcsIDcsIDI1NCwgMjA2LCAyNywgNywgMjU0LCAyMDUsIDI3LCA3LCAyNTQsIDIwNCwgMjcsIAotICAgIDcsIDI1NCwgMjAzLCAyNywgNywgMjU0LCAyMDIsIDI3LCA3LCAyNTQsIDIwMSwgMjcsIDcsIDI1NCwgMjAwLCAyNywgNywgCi0gICAgMjU0LCAxOTksIDI3LCA3LCAyNTQsIDE5OCwgMjcsIDcsIDI1NCwgMTk3LCAyNywgNywgMjU0LCAxOTYsIDI3LCA3LCAyNTQsIAotICAgIDE5NSwgMjcsIDcsIDI1NCwgMTk0LCAyNywgNywgMjU0LCAxOTMsIDI3LCA3LCAyNTQsIDE5MiwgMjcsIDcsIDI1NCwgMTkxLCAKLSAgICAyNywgNywgMjU0LCAxOTAsIDI3LCA3LCAyNTQsIDE4OSwgMjcsIDcsIDI1NCwgMTg4LCAyNywgNywgMjU0LCAxODcsIDI3LCAKLSAgICA3LCAyNTQsIDE4NiwgMjcsIDcsIDI1NCwgMTg1LCAyNywgNywgMjU0LCAxODQsIDI3LCA3LCAyNTQsIDE4MywgMjcsIDcsIAotICAgIDI1NCwgMTgyLCAyNywgNywgMjU0LCAxODEsIDI3LCA3LCAyNTQsIDE4MCwgMjcsIDcsIDI1NCwgMTc5LCAyNywgNywgMjU0LCAKLSAgICAxNzgsIDI3LCA3LCAyNTQsIDE3NywgMjcsIDcsIDI1NCwgMTc2LCAyNywgNywgMjU0LCAxNzUsIDI3LCA3LCAyNTQsIDE3NCwgCi0gICAgMjcsIDcsIDI1NCwgMTczLCAyNywgNywgMjU0LCAxNzIsIDI3LCA3LCAyNTQsIDE3MSwgMjcsIDcsIDI1NCwgMTcwLCAyNywgCi0gICAgNywgMjU0LCAxNjksIDI3LCA3LCAyNTQsIDE2OCwgMjcsIDcsIDI1NCwgMTY3LCAyNywgNywgMjU0LCAxNjYsIDI3LCA3LCAKLSAgICAyNTQsIDE2NSwgMjcsIDcsIDI1NCwgMTY0LCAyNywgNywgMjU0LCAxNjMsIDI3LCA3LCAyNTQsIDE2MiwgMjcsIDcsIDI1NCwgCi0gICAgMTYxLCAyNywgNywgMjU0LCAxNjAsIDI3LCA3LCAyNTQsIDE1OSwgMjcsIDcsIDI1NCwgMTU4LCAyNywgNywgMjU0LCAxNTcsIAotICAgIDI3LCA3LCAyNTQsIDE1NiwgMjcsIDcsIDI1NCwgMTU1LCAyNywgNywgMjU0LCAxNTQsIDI3LCA3LCAyNTQsIDE1MywgMjcsIAotICAgIDcsIDI1NCwgMTUxLCAyNywgNywgMjU0LCAxNTAsIDI3LCA3LCAyNTQsIDE0OSwgMjcsIDcsIDI1NCwgMTQ4LCAyNywgNywgCi0gICAgMjU0LCAxNDcsIDI3LCA3LCAyNTQsIDE0NiwgMjcsIDcsIDI1NCwgMTQ1LCAyNywgNywgMjU0LCAxNDQsIDI3LCA3LCAyNTQsIAotICAgIDE0MywgMjcsIDcsIDI1NCwgMTQyLCAyNywgNywgMjU0LCAxNDEsIDI3LCA3LCAyNTQsIDE0MCwgMjcsIDcsIDI1NCwgMTM5LCAKLSAgICAyNywgNywgMjU0LCAxMzgsIDI3LCA3LCAyNTQsIDEzNywgMjcsIDcsIDI1NCwgMTM2LCAyNywgNywgMjU0LCAxMzUsIDI3LCAKLSAgICA3LCAyNTQsIDEzNCwgMjcsIDcsIDI1NCwgMTMzLCAyNywgNywgMjU0LCAxMzIsIDI3LCA3LCAyNTQsIDEzMSwgMjcsIDcsIAotICAgIDI1NCwgMTMwLCAyNywgNywgMjU0LCAxMjksIDI3LCA3LCAyNTQsIDEyOCwgMjcsIDcsIDI1NCwgMTI3LCAyNywgNywgMjU0LCAKLSAgICAxMjYsIDI3LCA3LCAyNTQsIDEyNSwgMjcsIDcsIDI1NCwgMTI0LCAyNywgNywgMjU0LCAxMjMsIDI3LCA3LCAyNTQsIDEyMiwgCi0gICAgMjcsIDcsIDI1NCwgMTIxLCAyNywgNywgMjU0LCAxMjAsIDI3LCA3LCAyNTQsIDExOSwgMjcsIDcsIDI1NCwgMTE4LCAyNywgCi0gICAgNywgMjU0LCAxMTYsIDI3LCA3LCAyNTQsIDExNSwgMjcsIDcsIDI1NCwgMTE0LCAyNywgNywgMjU0LCAxMTMsIDI3LCA3LCAKLSAgICAyNTQsIDExMiwgMjcsIDcsIDI1NCwgMTExLCAyNywgNywgMjU0LCAxMTAsIDI3LCA3LCAyNTQsIDEwOSwgMjcsIDcsIDI1NCwgCi0gICAgMTA4LCAyNywgNywgMjU0LCAxMDcsIDI3LCA3LCAyNTQsIDEwNiwgMjcsIDcsIDI1NCwgMTA1LCAyNywgNywgMjU0LCAxMDMsIAotICAgIDI3LCA3LCAyNTQsIDEwMiwgMjcsIDcsIDI1NCwgMTAxLCAyNywgNywgMjU0LCAxMDAsIDI3LCA3LCAyNTQsIDk5LCAyNywgNywgCi0gICAgMjU0LCA5OCwgMjcsIDcsIDI1NCwgOTcsIDI3LCA3LCAyNTQsIDk2LCAyNywgNywgMjU0LCA5NSwgMjcsIDcsIDI1NCwgOTQsIAotICAgIDI3LCA3LCAyNTQsIDkzLCAyNywgNywgMjU0LCA5MiwgMjcsIDcsIDI1NCwgOTEsIDI3LCA3LCAyNTQsIDkwLCAyNywgNywgCi0gICAgMjU0LCA4OSwgMjcsIDcsIDI1NCwgODgsIDI3LCA3LCAyNTQsIDg3LCAyNywgNywgMjU0LCA4NiwgMjcsIDcsIDI1NCwgODUsIAotICAgIDI3LCA3LCAyNTQsIDg0LCAyNywgNywgMjU0LCA4MywgMjcsIDcsIDI1NCwgODIsIDI3LCA3LCAyNTQsIDgxLCAyNywgNywgCi0gICAgMjU0LCA4MCwgMjcsIDcsIDI1NCwgNzksIDI3LCA3LCAyNTQsIDc4LCAyNywgNywgMjU0LCA3NywgMjcsIDcsIDI1NCwgNzYsIAotICAgIDI3LCA3LCAyNTQsIDc1LCAyNywgNywgMjU0LCA3NCwgMjcsIDcsIDI1NCwgNzMsIDI3LCA3LCAyNTQsIDcyLCAyNywgNywgCi0gICAgMjU0LCA3MSwgMjcsIDcsIDI1NCwgNzAsIDI3LCA3LCAyNTQsIDY5LCAyNywgNywgMjU0LCA2OCwgMjcsIDcsIDI1NCwgNjcsIAotICAgIDI3LCA3LCAyNTQsIDY2LCAyNywgNywgMjU0LCA2NSwgMjcsIDcsIDI1NCwgNjQsIDI3LCA3LCAyNTQsIDYzLCAyNywgNywgCi0gICAgMjU0LCA2MiwgMjcsIDcsIDI1NCwgNjEsIDI3LCA3LCAyNTQsIDYwLCAyNywgNywgMjU0LCA1OSwgMjcsIDcsIDI1NCwgNTgsIAotICAgIDI3LCA3LCAyNTQsIDU3LCAyNywgNywgMjU0LCA1NiwgMjcsIDcsIDI1NCwgNTUsIDI3LCA3LCAyNTQsIDU0LCAyNywgNywgCi0gICAgMjU0LCA1MywgMjcsIDcsIDI1NCwgNTIsIDI3LCA3LCAyNTQsIDUxLCAyNywgNywgMjU0LCA1MCwgMjcsIDcsIDI1NCwgNDksIAotICAgIDI3LCA3LCAyNTQsIDQ4LCAyNywgNywgMjU0LCA0NywgMjcsIDcsIDI1NCwgNDYsIDI3LCA3LCAyNTQsIDQ1LCAyNywgNywgCi0gICAgMjU0LCA0NCwgMjcsIDcsIDI1NCwgNDMsIDI3LCA3LCAyNTQsIDQyLCAyNywgNywgMjU0LCA0MSwgMjcsIDcsIDI1NCwgNDAsIAotICAgIDI3LCA3LCAyNTQsIDM5LCAyNywgNywgMjU0LCAzOCwgMjcsIDcsIDI1NCwgMzcsIDI3LCA3LCAyNTQsIDM2LCAyNywgNywgCi0gICAgMjU0LCAzNSwgMjcsIDcsIDI1NCwgMzMsIDI3LCA3LCAyNTQsIDMyLCAyNywgNywgMjU0LCAzMSwgMjcsIDcsIDI1NCwgMzAsIAotICAgIDI3LCA3LCAyNTQsIDI5LCAyNywgNywgMjU0LCAyOCwgMjcsIDcsIDI1NCwgMjcsIDI3LCA3LCAyNTQsIDI2LCAyNywgNywgCi0gICAgMjU0LCAyNSwgMjcsIDcsIDI1NCwgMjQsIDI3LCA3LCAyNTQsIDIzLCAyNywgNywgMjU0LCAyMiwgMjcsIDcsIDI1NCwgMjEsIAotICAgIDI3LCA3LCAyNTQsIDIwLCAyNywgNywgMjU0LCAxOSwgMjcsIDcsIDI1NCwgMTgsIDI3LCA3LCAyNTQsIDE3LCAyNywgNywgCi0gICAgMjU0LCAxNiwgMjcsIDcsIDI1NCwgMTUsIDI3LCA3LCAyNTQsIDE0LCAyNywgNywgMjU0LCAxMywgMjcsIDcsIDI1NCwgMTIsIAotICAgIDI3LCA3LCAyNTQsIDExLCAyNywgNywgMjU0LCAxMCwgMjcsIDcsIDI1NCwgOSwgMjcsIDcsIDI1NCwgOCwgMjcsIDcsIDI1NCwgCi0gICAgNywgMjcsIDcsIDI1NCwgNiwgMjcsIDcsIDI1NCwgNSwgMjcsIDcsIDI1NCwgNCwgMjcsIDcsIDI1NCwgMywgMjcsIDcsIAotICAgIDI1NCwgMiwgMjcsIDcsIDI1NCwgMSwgMjcsIDcsIDI1NCwgMCwgMjcsIDcsIDI1MywgMjU1LCAyNywgNywgMjUzLCAyNTQsIAotICAgIDI3LCA3LCAyNTMsIDI1MywgMjcsIDcsIDI1MywgMjUyLCAyNywgNywgMjUzLCAyNTEsIDI3LCA3LCAyNTMsIDI1MCwgMjcsIAotICAgIDcsIDI1MywgMjQ5LCAyNywgNywgMjUzLCAyNDgsIDI3LCA3LCAyNTMsIDI0NywgMjcsIDcsIDI1MywgMjQ2LCAyNywgNywgCi0gICAgMjUzLCAyNDUsIDI3LCA3LCAyNTMsIDI0NCwgMjcsIDcsIDI1MywgMjQzLCAyNywgNywgMjUzLCAyNDIsIDI3LCA3LCAyNTMsIAotICAgIDI0MSwgMjcsIDcsIDI1MywgMjQwLCAyNywgNywgMjUzLCAyMzksIDI3LCA3LCAyNTMsIDIzOCwgMjcsIDcsIDI1MywgMjM3LCAKLSAgICAyNywgNywgMjUzLCAyMzYsIDI3LCA3LCAyNTMsIDIzNSwgMjcsIDcsIDI1MywgMjM0LCAyNywgNywgMjUzLCAyMzMsIDI3LCAKLSAgICA3LCAyNTMsIDIzMiwgMjcsIDcsIDI1MywgMjMxLCAyNywgNywgMjUzLCAyMzAsIDI3LCA3LCAyNTMsIDIyOSwgMjcsIDcsIAotICAgIDI1MywgMjI4LCAyNywgNywgMjUzLCAyMjcsIDI3LCA3LCAyNTMsIDIyNiwgMjcsIDcsIDI1MywgMjI1LCAyNywgNywgMjUzLCAKLSAgICAyMjQsIDI3LCA3LCAyNTMsIDIyMywgMjcsIDcsIDI1MywgMjIyLCAyNywgNywgMjUzLCAyMjEsIDI3LCA3LCAyNTMsIDIyMCwgCi0gICAgMjcsIDcsIDI1MywgMjE5LCAyNywgNywgMjUzLCAyMTgsIDI3LCA3LCAyNTMsIDIxNywgMjcsIDcsIDI1MywgMjE2LCAyNywgCi0gICAgNywgMjUzLCAyMTUsIDI3LCA3LCAyNTMsIDIxNCwgMjcsIDcsIDI1MywgMjEzLCAyNywgNywgMjUzLCAyMTIsIDI3LCA3LCAKLSAgICAyNTMsIDIxMSwgMjcsIDcsIDI1MywgMjEwLCAyNywgNywgMjUzLCAyMDksIDI3LCA3LCAyNTMsIDIwOCwgMjcsIDcsIDI1MywgCi0gICAgMjA3LCAyNywgNywgMjUzLCAyMDYsIDI3LCA3LCAyNTMsIDIwNSwgMjcsIDcsIDI1MywgMjA0LCAyNywgNywgMjUzLCAyMDMsIAotICAgIDI3LCA3LCAyNTMsIDIwMiwgMjcsIDcsIDI1MywgMjAxLCAyNywgNywgMjUzLCAyMDAsIDI3LCA3LCAyNTMsIDE5OSwgMjcsIAotICAgIDcsIDI1MywgMTk4LCAyNywgNywgMjUzLCAxOTcsIDI3LCA3LCAyNTMsIDE5NiwgMjcsIDcsIDI1MywgMTk1LCAyNywgNywgCi0gICAgMjUzLCAxOTQsIDI3LCA3LCAyNTMsIDE5MywgMjcsIDcsIDI1MywgMTkyLCAyNywgNywgMjUzLCAxOTEsIDI3LCA3LCAyNTMsIAotICAgIDE5MCwgMjcsIDcsIDI1MywgMTg5LCAyNywgNywgMjUzLCAxODgsIDI3LCA3LCAyNTMsIDE4NywgMjcsIDcsIDI1MywgMTg2LCAKLSAgICAyNywgNywgMjUzLCAxODUsIDI3LCA3LCAyNTMsIDE4NCwgMjcsIDcsIDI1MywgMTgzLCAyNywgNywgMjUzLCAxODIsIDI3LCAKLSAgICA3LCAyNTMsIDE4MSwgMjcsIDcsIDI1MywgMTgwLCAyNywgNywgMjUzLCAxNzksIDI3LCA3LCAyNTMsIDE3NywgMjcsIDcsIAotICAgIDI1MywgMTc2LCAyNywgNywgMjUzLCAxNzUsIDI3LCA3LCAyNTMsIDE3NCwgMjcsIDcsIDI1MywgMTczLCAyNywgNywgMjUzLCAKLSAgICAxNzIsIDI3LCA3LCAyNTMsIDE3MSwgMjcsIDcsIDI1MywgMTcwLCAyNywgNywgMjUzLCAxNjksIDI3LCA3LCAyNTMsIDE2OCwgCi0gICAgMjcsIDcsIDI1MywgMTY3LCAyNywgNywgMjUzLCAxNjQsIDI3LCA3LCAyNTMsIDE2MywgMjcsIDcsIDI1MywgMTYyLCAyNywgCi0gICAgNywgMjUzLCAxNjEsIDI3LCA3LCAyNTMsIDE1NywgMjcsIDcsIDI1MywgMTU2LCAyNywgNywgMjUzLCAxNTUsIDI3LCA3LCAKLSAgICAyNTMsIDE1NCwgMjcsIDcsIDI1MywgMTUzLCAyNywgNywgMjUzLCAxNTIsIDI3LCA3LCAyNTMsIDE1MSwgMjcsIDcsIDI1MywgCi0gICAgMTUwLCAyNywgNywgMjUzLCAxNDksIDI3LCA3LCAyNTMsIDE0OCwgMjcsIDcsIDI1MywgMTQ3LCAyNywgNywgMjUzLCAxNDYsIAotICAgIDI3LCA3LCAyNTMsIDE0NSwgMjcsIDcsIDI1MywgMTQ0LCAyNywgNywgMjUzLCAxNDMsIDI3LCA3LCAyNTMsIDE0MiwgMjcsIAotICAgIDcsIDI1MywgMTQxLCAyNywgNywgMjUzLCAxNDAsIDI3LCA3LCAyNTMsIDEzOSwgMjcsIDcsIDI1MywgMTM3LCAyNywgNywgCi0gICAgMjUzLCAxMzYsIDI3LCA3LCAyNTMsIDEzNSwgMjcsIDcsIDI1MywgMTM0LCAyNywgNywgMjUzLCAxMzMsIDI3LCA3LCAyNTMsIAotICAgIDEzMiwgMjcsIDcsIDI1MywgMTMxLCAyNywgNywgMjUzLCAxMzAsIDI3LCA3LCAyNTMsIDEyOSwgMjcsIDcsIDI1MywgMTI4LCAKLSAgICAyNywgNywgMjUzLCAxMjcsIDI3LCA3LCAyNTMsIDEyNiwgMjcsIDcsIDI1MywgMTI1LCAyNywgNywgMjUzLCAxMjQsIDI3LCAKLSAgICA3LCAyNTMsIDEyMywgMjcsIDcsIDI1MywgMTIyLCAyNywgNywgMjUzLCAxMjEsIDI3LCA3LCAyNTMsIDEyMCwgMjcsIDcsIAotICAgIDI1MywgMTE5LCAyNywgNywgMjUzLCAxMTgsIDI3LCA3LCAyNTMsIDExNywgMjcsIDcsIDI1MywgMTE2LCAyNywgNywgMjUzLCAKLSAgICAxMTUsIDI3LCA3LCAyNTMsIDExNCwgMjcsIDcsIDI1MywgMTEzLCAyNywgNywgMjUzLCAxMTIsIDI3LCA3LCAyNTMsIDExMSwgCi0gICAgMjcsIDcsIDI1MywgMTEwLCAyNywgNywgMjUzLCAxMDksIDI3LCA3LCAyNTMsIDEwOCwgMjcsIDcsIDI1MywgMTA3LCAyNywgCi0gICAgNywgMjUzLCAxMDYsIDI3LCA3LCAyNTMsIDEwNSwgMjcsIDcsIDI1MywgMTA0LCAyNywgNywgMjUzLCAxMDMsIDI3LCA3LCAKLSAgICAyNTMsIDEwMiwgMjcsIDcsIDI1MywgMTAxLCAyNywgNywgMjUzLCAxMDAsIDI3LCA3LCAyNTMsIDk5LCAyNywgNywgMjUzLCAKLSAgICA5OCwgMjcsIDcsIDI1MywgOTcsIDI3LCA3LCAyNTMsIDk2LCAyNywgNywgMjUzLCA5NSwgMjcsIDcsIDI1MywgOTQsIDI3LCAKLSAgICA3LCAyNTMsIDkzLCAyNywgNywgMjUzLCA5MiwgMjcsIDcsIDI1MywgOTEsIDI3LCA3LCAyNTMsIDkwLCAyNywgNywgMjUzLCAKLSAgICA4OSwgMjcsIDcsIDI1MywgODgsIDI3LCA3LCAyNTMsIDg3LCAyNywgNywgMjUzLCA4NiwgMjcsIDcsIDI1MywgODUsIDI3LCAKLSAgICA3LCAyNTMsIDg0LCAyNywgNywgMjUzLCA4MywgMjcsIDcsIDI1MywgODIsIDI3LCA3LCAyNTMsIDgxLCAyNywgNywgMjUzLCAKLSAgICA4MCwgMjcsIDcsIDI1MywgNzksIDI3LCA3LCAyNTMsIDc4LCAyNywgNywgMjUzLCA3NywgMjcsIDcsIDI1MywgNzYsIDIxNiwgCi0gICAgMjIxLCAyMTksIDI0NSwgMjE2LCA1NywgMjcsIDcsIDI1MywgNzUsIDI3LCA3LCAyNTMsIDc0LCAyNywgNywgMjUzLCA3MywgCi0gICAgMjcsIDcsIDI1MywgNzIsIDI3LCA3LCAyNTMsIDcxLCAyNywgNywgMjUzLCA3MCwgMjcsIDcsIDI1MywgNjksIDI3LCA3LCAKLSAgICAyNTMsIDY4LCAyNywgNywgMjUzLCA2NywgMjcsIDcsIDI1MywgNjYsIDI3LCA3LCAyNTMsIDY1LCAyNywgNywgMjUzLCA2NCwgCi0gICAgMTk5LCAyNywgNywgMjUzLCA2MywgMjcsIDcsIDI1MywgNjIsIDI3LCA3LCAyNTMsIDYxLCAyNywgNywgMjUzLCA2MCwgMjcsIAotICAgIDcsIDI1MywgNTksIDI3LCA3LCAyNTMsIDU4LCAyNywgNywgMjUzLCA1NywgMjcsIDcsIDI1MywgNTUsIDI3LCA3LCAyNTMsIAotICAgIDUzLCAyNywgNywgMjUzLCA1MSwgMjcsIDcsIDI1MywgNDksIDI3LCA3LCAyNTMsIDQ3LCAyNywgNywgMjUzLCA0NSwgMjcsIAotICAgIDcsIDI1MywgNDMsIDI3LCA3LCAyNTMsIDQxLCAyNywgNywgMjUzLCAzOSwgMjcsIDcsIDI1MywgMzcsIDI0OCwgMTQyLCAKLSAgICAyMjcsIDM2LCA4MiwgMjcsIDcsIDI1MywgMzUsIDI0MSwgODQsIDIyNywgMzYsIDgyLCAyNywgNywgMjUzLCAzNCwgMjcsIDcsIAotICAgIDI1MywgMzIsIDI3LCA3LCAyNTMsIDMwLCAyNywgNywgMjUzLCAyOCwgMjcsIDcsIDI1MywgMjYsIDI3LCA3LCAyNTMsIDI0LCAKLSAgICAyNywgNywgMjUzLCAyMiwgMjcsIDcsIDI1MywgMjAsIDI3LCA3LCAyNTMsIDE4LCAyNywgNywgMjUzLCAxNywgMjcsIDcsIAotICAgIDI1MywgMTYsIDI3LCA3LCAyNTMsIDE1LCAyNywgNywgMjUzLCAxNCwgMjcsIDcsIDI1MywgMTMsIDI3LCA3LCAyNTMsIDEyLCAKLSAgICAyNywgNywgMjUzLCAxMSwgMjcsIDcsIDI1MywgMTAsIDI3LCA3LCAyNTMsIDksIDI3LCA3LCAyNTMsIDgsIDI3LCA3LCAyNTMsIAotICAgIDcsIDI3LCA3LCAyNTMsIDYsIDI3LCA3LCAyNTMsIDUsIDI3LCA3LCAyNTMsIDQsIDI3LCA3LCAyNTMsIDMsIDI3LCA3LCAKLSAgICAyNTMsIDIsIDI3LCA3LCAyNTMsIDEsIDI3LCA3LCAyNTMsIDAsIDI3LCA3LCAyNTIsIDI1NSwgMjcsIDcsIDI1MiwgMjU0LCAKLSAgICAyNywgNywgMjUyLCAyNTMsIDI3LCA3LCAyNTIsIDI1MiwgMjcsIDcsIDI1MiwgMjUxLCAyNywgNywgMjUyLCAyNTAsIDI3LCAKLSAgICA3LCAyNTIsIDI0OSwgMjcsIDcsIDI1MiwgMjQ4LCAyNywgNywgMjUyLCAyNDcsIDI3LCA3LCAyNTIsIDI0NiwgMjcsIDcsIAotICAgIDI1MiwgMjQ1LCAyNywgNywgMjUyLCAyNDQsIDI3LCA3LCAyNTIsIDI0MywgMjcsIDcsIDI1MiwgMjQyLCAyNywgNywgMjUyLCAKLSAgICAyNDEsIDI3LCA3LCAyNTIsIDI0MCwgMjcsIDcsIDI1MiwgMjM5LCAyNywgNywgMjUyLCAyMzgsIDI3LCA3LCAyNTIsIDIzNywgCi0gICAgMjcsIDcsIDI1MiwgMjM2LCAyNywgNywgMjUyLCAyMzUsIDI3LCA3LCAyNTIsIDIzNCwgMjcsIDcsIDI1MiwgMjMzLCAyNywgCi0gICAgNywgMjUyLCAyMzIsIDI3LCA3LCAyNTIsIDIzMSwgMjcsIDcsIDI1MiwgMjMwLCAyNywgNywgMjUyLCAyMjksIDI3LCA3LCAKLSAgICAyNTIsIDIyOCwgMjcsIDcsIDI1MiwgMjI3LCAyNywgNywgMjUyLCAyMjYsIDI3LCA3LCAyNTIsIDIyNSwgMjcsIDcsIDI1MiwgCi0gICAgMjI0LCAyNywgNywgMjUyLCAyMjMsIDI3LCA3LCAyNTIsIDIyMiwgMjcsIDcsIDI1MiwgMjIxLCAyNywgNywgMjUyLCAyMjAsIAotICAgIDI3LCA3LCAyNTIsIDIxOSwgMjcsIDcsIDI1MiwgMjE4LCAyNywgNywgMjUyLCAyMTcsIDI3LCA3LCAyNTIsIDIxNiwgMjcsIAotICAgIDcsIDI1MiwgMjE1LCAyNywgNywgMjUyLCAyMTQsIDI3LCA3LCAyNTIsIDIxMywgMjcsIDcsIDI1MiwgMjEyLCAyNywgNywgCi0gICAgMjUyLCAyMTEsIDI3LCA3LCAyNTIsIDIxMCwgMjcsIDcsIDI1MiwgMjA5LCAyNywgNywgMjUyLCAyMDgsIDI3LCA3LCAyNTIsIAotICAgIDIwNywgMjcsIDcsIDI1MiwgMjA2LCAyNywgNywgMjUyLCAyMDUsIDI3LCA3LCAyNTIsIDIwNCwgMjcsIDcsIDI1MiwgMjAzLCAKLSAgICAyNywgNywgMjUyLCAyMDIsIDI3LCA3LCAyNTIsIDIwMSwgMjcsIDcsIDI1MiwgMjAwLCAyNywgNywgMjUyLCAxOTksIDI3LCAKLSAgICA3LCAyNTIsIDE5OCwgMjcsIDcsIDI1MiwgMTk3LCAyNywgNywgMjUyLCAxOTYsIDI3LCA3LCAyNTIsIDE5NSwgMjcsIDcsIAotICAgIDI1MiwgMTk0LCAyNywgNywgMjUyLCAxOTMsIDI3LCA3LCAyNTIsIDE5MiwgMjcsIDcsIDI1MiwgMTkxLCAyNywgNywgMjUyLCAKLSAgICAxOTAsIDI3LCA3LCAyNTIsIDE4OSwgMjcsIDcsIDI1MiwgMTg4LCAyNywgNywgMjUyLCAxODcsIDI3LCA3LCAyNTIsIDE4NiwgCi0gICAgMjcsIDcsIDI1MiwgMTg1LCAyNywgNywgMjUyLCAxODQsIDI3LCA3LCAyNTIsIDE4MywgMjcsIDcsIDI1MiwgMTgyLCAyNywgCi0gICAgNywgMjUyLCAxODEsIDI3LCA3LCAyNTIsIDE4MCwgMjcsIDcsIDI1MiwgMTc5LCAyNywgNywgMjUyLCAxNzgsIDI3LCA3LCAKLSAgICAyNTIsIDE3NywgMjcsIDcsIDI1MiwgMTc2LCAyNywgNywgMjUyLCAxNzUsIDI3LCA3LCAyNTIsIDE3NCwgMjcsIDcsIDI1MiwgCi0gICAgMTczLCAyNywgNywgMjUyLCAxNzIsIDI3LCA3LCAyNTIsIDE3MSwgMjcsIDcsIDI1MiwgMTcwLCAyNywgNywgMjUyLCAxNjksIAotICAgIDI3LCA3LCAyNTIsIDE2OCwgMjcsIDcsIDI1MiwgMTY3LCAyNywgNywgMjUyLCAxNjYsIDI3LCA3LCAyNTIsIDE2NSwgMjcsIAotICAgIDcsIDI1MiwgMTY0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMTM2LCAyMjQsIDE5NywgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIAotICAgIDE5OCwgMjM5LCAxNzgsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCA0NywgMjI0LCAxOTgsIDIxOCwgMTE1LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIxOCwgNDcsIDIyNCwgMTk4LCAyMTgsIDExNiwgMjQsIDEsIDIxOCwgMTk4LCAyMjMsIDEwNywgMjI0LCAxOTcsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAxOTUsIDI0LCAxLCAyMTgsIDE5OCwgMjA4LCAxOTksIDIyNCwgMTk3LCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIyMCwgMjE1LCAyMjQsIDE5NywgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDI1NCwgMjE5LCAxNjksIDIyMiwgCi0gICAgMzIsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCA0NywgMjE5LCAxNjksIDIyMiwgMzMsIDIxOCwgMTE1LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIxOCwgNDcsIDIxOSwgMTY5LCAyMjIsIDMzLCAyMTgsIDExNiwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1NiwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMDcsIDIwNCwgMjI1LCAxNTcsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAxOTcsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjI1LCAxNTMsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAxODYsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjEzLCAxMTQsIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCA5MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjksIAotICAgIDE2MywgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDAsIDI0LCAxLCAyMTgsIDE5OCwgMjEwLCAxNzksIDI0LCAxLCAyMTgsIDE5OCwgCi0gICAgMjIyLCAxMzUsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAxMCwgMjQsIDEsIDIxOCwgMTk4LCAyMjcsIDE3NiwgMjI4LCAxNzUsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCAxMDEsIDIyNCwgMjA1LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTYwLCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIxOSwgNjIsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAxMDAsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxMjUsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjI0LCA1NSwgMjIyLCAxNzAsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAxOTYsIDIyNCwgMjA4LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDEwNiwgMjAyLCAxODgsIDIyMywgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgMTAxLCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIyMSwgMTAxLCAyMjEsIDEwMiwgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDkxLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyNCwgMTkwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgMjExLCAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgMzEsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjMwLCAyMSwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDE2OSwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIzLCAyNiwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCAyMTksIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAKLSAgICAxNTQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCA3NCwgMjQsIDEsIDIxOCwgMTk4LCAyMTcsIDE3MiwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMDcsIDIwMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjYsIDIzNSwgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI1MSwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMDksIDExNywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjksIAotICAgIDE3MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjMsIDIyLCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMTg4LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyNCwgMzIsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAxOTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI3LCAyOSwgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMzksIDI0NiwgMjQsIDEsIDIxOCwgMTk4LCAyMTUsIDIxMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDIzMywgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI0NywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDEwNywgMjE4LCAxNTcsIDI0LCAxLCAKLSAgICAyMTgsIDE5OCwgMjEyLCAyNDcsIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCAxMDAsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAyMzAsIAotICAgIDIyMSwgMTExLCAyMDIsIDE5NiwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDIzNywgMjI0LCA1MSwgMjQsIDEsIDIxOCwgMTk4LCAKLSAgICAyMTksIDE2NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDIsIDI0LCAxLCAyMTgsIDE5OCwgMjA2LCAyMzEsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIyLCAxNzMsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTAsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCA0NCwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMjUsIDQ5LCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMjUxLCAyNCwgMSwgMjE4LCAxOTgsIDIwOSwgCi0gICAgMTIxLCAyNCwgMSwgMjE4LCAxOTgsIDIxMSwgMjQ0LCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTY1LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMSwgMTE1LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTU4LCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMjQ4LCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIyOSwgMjQxLCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTE4LCAyNCwgMSwgMjE4LCAxOTgsIDIwNiwgCi0gICAgNTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI2LCAyMzksIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAyMzAsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIzLCA3NSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDQ4LCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgMTEzLCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIwNywgMjA0LCAyMjUsIDE1NSwgMjQsIDEsIDIxOCwgMTk3LCAyMTIsIDE1MiwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMTMsIDExOCwgMjA3LCAyMDMsIDI0LCAxLCAyMTgsIDE5NywgMjI3LCAzMSwgMjIxLCA5NywgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMjUsIDU1LCAyMjUsIDE1OSwgMjQsIDEsIDIxOCwgMTk3LCAyMjksIDkyLCAyNCwgMSwgMjE4LCAxOTcsIDIwMywgMTgsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjI1LCA1MCwgMjQsIDEsIDIxOCwgMTk3LCAyMzAsIDcsIDI0LCAxLCAyMTgsIDE5NywgMjE5LCAKLSAgICAxOSwgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDk2LCAyMjcsIDIyMywgMjQsIDEsIDIxOCwgMTk3LCAyMjgsIDI5LCAyMjEsIAotICAgIDExMSwgMjIxLCA2LCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgOTQsIDIxMywgMTcsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAKLSAgICAyNDksIDIyMiwgNDcsIDI0LCAxLCAyMTgsIDE5NywgMjM4LCA5OCwgMjQsIDEsIDIxOCwgMTk3LCAyMTgsIDEwNSwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMDcsIDIwNCwgMjIxLCAxMDksIDI0LCAxLCAyMTgsIDE5NywgMjEzLCAyMiwgMjIyLCA0MiwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMTMsIDE4LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMTk4LCAyMDksIDEyMCwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMjUsIDM3LCAyMjUsIDUxLCAyNCwgMSwgMjE4LCAxOTcsIDIyMCwgMjQ5LCAyMjEsIDk3LCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIyOSwgMTU5LCAyNCwgMSwgMjE4LCAxOTcsIDIzOCwgOTksIDI0LCAxLCAyMTgsIDE5NywgMjI5LCAxNTUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjI4LCAxMDcsIDI0LCAxLCAyMTgsIDE5NywgMjE5LCA2NSwgMjQsIDEsIDIxOCwgMTk3LCAyMDUsIDIzNywgCi0gICAgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDEzNywgMjIzLCAxODQsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxNzIsIDIyNSwgMzMsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjAzLCAyMTUsIDI0LCAxLCAyMTgsIDE5NywgMjE1LCAxMiwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMTAsIDE0LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjEwLCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTU2LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIyMiwgMTU3LCAyMjgsIDcsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMDAsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjEwLCAyMzAsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCA0MSwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDM2LCAyNCwgMSwgMjE4LCAKLSAgICAxOTcsIDIyMSwgOSwgMjQsIDEsIDIxOCwgMTk3LCAyMTcsIDE3NiwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIwOSwgMjIyLCAKLSAgICAxNzQsIDI0LCAxLCAyMTgsIDE5NywgMjQwLCAzMSwgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDI4LCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDI0MCwgNTMsIDI0LCAxLCAyMTgsIDE5NywgMjI5LCAxNjcsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAxNzcsIDIyMiwgMzYsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAxNzcsIDIyMiwgMTIsIDI0LCAxLCAyMTgsIDE5NywgMjI3LCAxNzUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjIyLCAxODAsIDI0LCAxLCAyMTgsIDE5NywgMjIxLCAxMjAsIDI0LCAxLCAyMTgsIDE5NywgMTkyLCAyNCwgCi0gICAgMSwgMjE4LCAxOTcsIDIyOSwgNzcsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxMjUsIDI0LCAxLCAxNjgsIDIyMiwgMTM2LCAKLSAgICAyMjUsIDE1NywgMjQsIDEsIDE2OCwgMjIwLCAyMTQsIDI0LCAxLCAxNjgsIDIwMiwgMTk2LCAyNCwgMSwgMTY4LCAyMDQsIAotICAgIDk1LCAyNCwgMSwgMTY4LCAyMjIsIDE3MywgMjQsIDEsIDE2OCwgMjIzLCAxNCwgMjQsIDEsIDE2OCwgMjIyLCAxNDMsIDI0LCAKLSAgICAxLCAxNjgsIDIzOCwgMTA4LCAyNCwgMSwgMTY4LCAyMjUsIDQ1LCAyNCwgMSwgMTY4LCAyMzgsIDIwNSwgMjQsIDEsIDE2OCwgCi0gICAgMjIwLCAyMzksIDIyNCwgOTEsIDIyNCwgMjEyLCAyNCwgMSwgMTY4LCAyMjEsIDg5LCAyMjUsIDM2LCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDQyLCAyNCwgMSwgMTY4LCAyMTgsIDExMSwgMjQsIDEsIDE2OCwgMjIyLCAyNTUsIDI0LCAxLCAxNjgsIDIyNSwgNTMsIAotICAgIDI0NywgODgsIDI0LCAxLCAxNjgsIDIyOSwgMTU3LCAyNCwgMSwgMTY4LCAyMzgsIDEwOSwgMjQsIDEsIDE2OCwgMjI5LCAKLSAgICAxNjQsIDI0LCAxLCAxNjgsIDIwMiwgMjE0LCAyMjMsIDIxNSwgMjQsIDEsIDE2OCwgMjIwLCAyMDgsIDI0LCAxLCAxNjgsIAotICAgIDIyNSwgMzAsIDI0LCAxLCAxNjgsIDIyMSwgMTE5LCAyNCwgMSwgMTY4LCAyMjUsIDM2LCAyNCwgMSwgMTY4LCAyMDMsIDE5LCAKLSAgICAyNCwgMSwgMTY4LCAyMjgsIDI0MSwgMjQsIDEsIDE2OCwgMjMwLCA0MSwgMjQsIDEsIDE2OCwgMjEzLCAxMTMsIDI0LCAxLCAKLSAgICAxNjgsIDIyMywgOCwgMjQsIDEsIDE2OCwgMjEwLCAxMiwgMjQsIDEsIDE2OCwgMjIyLCAxNiwgMjQsIDEsIDE2OCwgMjA4LCAKLSAgICAxOTksIDIwMiwgMTk5LCAyNCwgMSwgMTY4LCAyMTEsIDUsIDI0LCAxLCAxNjgsIDIyMiwgMTYzLCAyMjEsIDYsIDI0LCAxLCAKLSAgICAxNjgsIDIwNSwgMjM2LCAyNCwgMSwgMTY4LCAyMjMsIDc4LCAyNCwgMSwgMTY4LCAyMjUsIDE3NywgMjI5LCAxNjYsIDI0LCAKLSAgICAxLCAxNjgsIDIyMSwgMTAyLCAyNCwgMSwgMTY4LCAyMjIsIDE1OCwgMjQsIDEsIDE2OCwgMjI4LCAxMSwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCAzOCwgMjQsIDEsIDE2OCwgMjI0LCAxODksIDI0LCAxLCAxNjgsIDIyMSwgOTYsIDI0LCAxLCAxNjgsIDIwOSwgMTE2LCAKLSAgICAyNCwgMSwgMTY4LCAyMjIsIDE2MCwgMjQsIDEsIDE2OCwgMjM5LCAxMDYsIDI0LCAxLCAxNjgsIDIyMywgMTMsIDI0LCAxLCAKLSAgICAxNjgsIDIyMSwgMTIxLCAyNCwgMSwgMTY4LCAyMjEsIDExNywgMjQsIDEsIDE2OCwgMjQ3LCAxNjksIDI0LCAxLCAxNjgsIAotICAgIDIwNSwgMjM4LCAyNCwgMSwgMTY4LCAyMjUsIDQzLCAyNCwgMSwgMTY4LCAyMTUsIDE0NSwgMjQsIDEsIDE2OCwgMjIyLCA0NiwgCi0gICAgMjQsIDEsIDE2OCwgMjI4LCAyOCwgMjQsIDEsIDE2OCwgMjA4LCAxOTYsIDI0LCAxLCAxNjgsIDIyMSwgMTAzLCAyMjIsIAotICAgIDEyNSwgMjQsIDEsIDE2OCwgMjIyLCAzOCwgMjQsIDEsIDE2OCwgMjI5LCAxNzAsIDI0LCAxLCAxNjgsIDIyMiwgMTY1LCAyNCwgCi0gICAgMSwgMTY4LCAyMjUsIDE1MCwgMjQsIDEsIDE2OCwgMjI1LCAzMSwgMjQsIDEsIDE2OCwgMjI2LCAyMzksIDI0LCAxLCAxNjgsIAotICAgIDIyOCwgMTc1LCAyNCwgMSwgMTY4LCAyMjIsIDQ0LCAyNCwgMSwgMTY4LCAyMjIsIDEyNSwgMjQsIDEsIDE2OCwgMjAzLCAKLSAgICAyMDUsIDI0LCAxLCAxNjgsIDIyMiwgMTYxLCAyNCwgMSwgMTY4LCAyMjEsIDEwNiwgMjQsIDEsIDE2OCwgMjIxLCA5OCwgMjQsIAotICAgIDEsIDE2OCwgMjI4LCAxOTAsIDIyMiwgMiwgMjQsIDEsIDE2OCwgMjIxLCAxMDQsIDI0LCAxLCAxNjgsIDIyMywgMjEsIDI0LCAKLSAgICAxLCAxNjgsIDIyNSwgMTc3LCAyMjEsIDEwOSwgMjQsIDEsIDE2OCwgMjAzLCAxMTAsIDI0LCAxLCAxNjgsIDIyMywgMjAsIAotICAgIDI0LCAxLCAxNjgsIDIxMiwgMTk0LCAyNCwgMSwgMTY4LCAyMTMsIDExNiwgMjQsIDEsIDE2OCwgMjI1LCAzOSwgMjQsIDEsIAotICAgIDE2OCwgMjI1LCAxNTcsIDI0LCAxLCAxNjgsIDIyNSwgNDksIDI0LCAxLCAxNjgsIDIyOSwgMTU4LCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDQwLCAyNCwgMSwgMTY4LCAyMjksIDE2MiwgMjQsIDEsIDE2OCwgMjI1LCA1MywgMjE4LCAxNjIsIDI0LCAxLCAxNjgsIAotICAgIDIwMiwgMTc5LCAyNCwgMSwgMTY4LCAyMjIsIDM0LCAyNCwgMSwgMTY4LCAyMjQsIDE0NCwgMjQsIDEsIDE2OCwgMjIzLCAKLSAgICAyNDQsIDI0LCAxLCAxNjgsIDIxMiwgMjUwLCAyNCwgMSwgMTY4LCAyMjksIDE4MSwgMjI3LCAyNDYsIDI0LCAxLCAxNjgsIAotICAgIDIyOSwgMTgxLCAyNDAsIDY2LCAyNCwgMSwgMTY4LCAyMjIsIDE5NSwgMjQsIDEsIDE2OCwgMjIzLCA3NSwgMjQsIDEsIDE2OCwgCi0gICAgMjI3LCA5NiwgMjQsIDEsIDE2OCwgMjE4LCAxMjMsIDI0LCAxLCAxNjgsIDIxOSwgOSwgMjQsIDEsIDE2OCwgMjA5LCAxMzIsIAotICAgIDI0LCAxLCAxMzQsIDIyNSwgMjksIDI0LCAxLCAxMzQsIDIwNCwgOTMsIDI0LCAxLCAxMzQsIDIyMiwgMzIsIDI0LCAxLCAKLSAgICAxMzQsIDIyNCwgMTk3LCAyNCwgMSwgMTM0LCAyMjIsIDMwLCAyNCwgMSwgMTM0LCAyMjcsIDE0MSwgMjQsIDEsIDEzNCwgCi0gICAgMjIyLCAzNSwgMjQsIDEsIDEzNCwgMjIxLCAxMTYsIDI0LCAxLCAxMzQsIDIyMiwgMTc5LCAyNCwgMSwgMTM0LCAyMjEsIDYsIAotICAgIDI0LCAxLCAxMzQsIDIwMywgMjE2LCAyNCwgMSwgMTM0LCAyMjIsIDEzMywgMjQsIDEsIDEzNCwgMjEzLCA0MSwgMjQsIDEsIAotICAgIDEzNCwgMjIyLCAxNDQsIDI0LCAxLCAxMzQsIDIyOSwgMTY1LCAyNCwgMSwgMTM0LCAyMDksIDExOCwgMjQsIDEsIDEzNCwgCi0gICAgMjEzLCAyMCwgMjQsIDEsIDEzNCwgMjIyLCA0MywgMjQsIDEsIDEzNCwgMjEwLCAyMzAsIDI0LCAxLCAxMzQsIDIyOSwgMTcwLCAKLSAgICAyNCwgMSwgMTM0LCAyMDMsIDk4LCAyNCwgMSwgMTM0LCAyMjgsIDE5MSwgMjQsIDEsIDEzNCwgMjE0LCAyMzMsIDI0LCAxLCAKLSAgICAxMzQsIDIyNCwgMjAyLCAyNCwgMSwgMTM0LCAyMjMsIDEyLCAyNCwgMSwgMTM0LCAyMjUsIDEyNSwgMjQsIDEsIDEzNCwgCi0gICAgMjI0LCAyMDgsIDI0LCAxLCAxMzQsIDIxMywgMTE1LCAyNCwgMSwgMTM0LCAyMDMsIDQyLCAyNCwgMSwgMTM0LCAyMjIsIDM3LCAKLSAgICAyNCwgMSwgMTM0LCAyMjksIDE2MSwgMjI1LCAzMiwgMjQsIDEsIDEzNCwgMjIyLCAxNDAsIDI0LCAxLCAxMzQsIDIwNywgCi0gICAgMjAzLCAyNCwgMSwgMTM0LCAyMzgsIDExOCwgMjQsIDEsIDEzNCwgMjIyLCAxMzAsIDI0LCAxLCAxMzQsIDI0MCwgMzIsIDI0LCAKLSAgICAxLCAxMzQsIDIyMywgMTYsIDI0LCAxLCAxMzQsIDIyNCwgMTgxLCAyNCwgMSwgMTM0LCAyMjcsIDE2OSwgMjQsIDEsIDEzNCwgCi0gICAgMjIyLCAyNTQsIDI0LCAxLCAxMzQsIDIyNCwgNTAsIDI0LCAxLCAxMzQsIDIyNCwgMTg1LCAyNCwgMSwgMTM0LCAyMTcsIAotICAgIDE1NiwgMjQsIDEsIDEzNCwgMjI0LCAxODMsIDI0LCAxLCAxMzQsIDIyNCwgMTk5LCAyNCwgMSwgMTM0LCAyMjYsIDIyMiwgCi0gICAgMjQsIDEsIDEzNCwgMjIxLCAxMDgsIDI0LCAxLCAxMzQsIDIyNSwgNTIsIDI0LCAxLCAxMzQsIDIyOCwgMTY1LCAyNCwgMSwgCi0gICAgMTM0LCAyMjAsIDI1MSwgMjQsIDEsIDEzNCwgMjA5LCAxMjEsIDI0LCAxLCAxMzQsIDIxMSwgMjQ0LCAyNCwgMSwgMTM0LCAKLSAgICAyMDIsIDE3OSwgMjQsIDEsIDEzNCwgMjI5LCAxNjIsIDI0LCAxLCAxMzQsIDIxNiwgMjAxLCAyNCwgMSwgMTM0LCAyMDksIAotICAgIDE3NSwgMjQsIDEsIDEzNCwgMjIyLCAxNDEsIDI0LCAxLCAxMzQsIDIyNCwgMjA0LCAyNCwgMSwgMTM0LCAyMjEsIDEwNywgCi0gICAgMjQsIDEsIDEzNCwgMjI5LCAxNjAsIDI0LCAxLCAxMzQsIDIxOCwgMTE3LCAyNCwgMSwgMTM0LCAyMTgsIDIxMywgMjQsIDEsIAotICAgIDEzNCwgMjIwLCAyMjUsIDI0LCAxLCAxMzQsIDIyNywgMTc1LCAyNCwgMSwgMTM0LCAyMjIsIDE4MCwgMjQsIDEsIDEzNCwgCi0gICAgMjI0LCAyMDEsIDI0LCAxLCAxMzQsIDIyMiwgMTUzLCAyNCwgMSwgMTM0LCAyMDIsIDE5MywgMjQsIDEsIDEzNCwgMjE5LCAKLSAgICA5NiwgMjQsIDEsIDEzNCwgMjAyLCAxOTIsIDI0LCAxLCAxMzQsIDIyMywgMjEsIDI0LCAxLCAxMzQsIDIyMSwgOTcsIDI0LCAKLSAgICAxLCAxMzQsIDIxMSwgNywgMjQsIDEsIDEzNCwgMjI4LCAxOTUsIDI0LCAxLCAxMzQsIDIyMiwgMTY5LCAyNCwgMSwgMTM0LCAKLSAgICAyMjIsIDEzOCwgMjQsIDEsIDEzNCwgMjA3LCAxODUsIDI0LCAxLCAxMzQsIDIyNCwgMjEyLCAyNCwgMSwgMTM0LCAyMjgsIAotICAgIDE4NSwgMjQsIDEsIDEzNCwgMjIxLCAxMDUsIDI0LCAxLCAxMzQsIDIwOSwgMTE5LCAyNCwgMSwgMTM0LCAyMjUsIDE1MiwgCi0gICAgMjQsIDEsIDEzNCwgMjIyLCAxNzgsIDI0LCAxLCAxMzQsIDIyNywgMTY4LCAyNCwgMSwgMTM0LCAyMjIsIDE1OSwgMjQsIDEsIAotICAgIDEzNCwgMjIxLCAxMTAsIDI0LCAxLCAxMzQsIDIyMiwgMTYsIDI0LCAxLCAxMzQsIDIzOCwgMTAyLCAyNCwgMSwgMTM0LCAKLSAgICAyMjgsIDIwOSwgMjQsIDEsIDEzNCwgMjE2LCAxMDgsIDIyMCwgNDUsIDI0LCAxLCAxMzQsIDIxMCwgMSwgMjQsIDEsIDEzNCwgCi0gICAgMjA4LCAxNDEsIDI0LCAxLCAxMzQsIDIyMCwgMjQ4LCAyNCwgMSwgMTM0LCAyMTYsIDMsIDI0LCAxLCAxMzQsIDIyNywgMjI1LCAKLSAgICAyNCwgMSwgMTM0LCAyMjUsIDcsIDI0LCAxLCAxMzQsIDIyNiwgMTg1LCAyNCwgMSwgMTM0LCAyMTAsIDE3OSwgMjQsIDEsIAotICAgIDEzNCwgMjIzLCAyNDYsIDI0LCAxLCAxMzQsIDIxMywgNiwgMjQsIDEsIDEzNCwgMjEzLCAxNiwgMjQsIDEsIDEzNCwgMjI4LCAKLSAgICAxMzcsIDI0LCAxLCAxMzQsIDIyMSwgODQsIDI0LCAxLCAxMzQsIDIxMiwgMTk5LCAyNCwgMSwgMTM0LCAyMjEsIDk5LCAyNCwgCi0gICAgMSwgMTM0LCAyMTksIDIzLCAyNCwgMSwgMTM0LCAyMjIsIDEwMCwgMjQsIDEsIDEzNCwgMjEyLCAyMjksIDI0LCAxLCAxMzQsIAotICAgIDIxNywgMTcxLCAyNCwgMSwgMTM0LCAyMjMsIDE4NCwgMjQsIDEsIDEzNCwgMjI3LCAxMCwgMjQsIDEsIDEzNCwgMjE2LCAKLSAgICAxMDgsIDIyMywgMjM5LCAyNCwgMSwgMTM0LCAyMDksIDIsIDI0LCAxLCAxMzQsIDIyMSwgODYsIDI0LCAxLCAxMzQsIDIyNSwgCi0gICAgNTMsIDIxMywgMTExLCAyNCwgMSwgMTM0LCAyMTQsIDIzMSwgMjQsIDEsIDEzNCwgMjQwLCAxMDcsIDI0LCAxLCA5MywgMjIzLCAKLSAgICAyMCwgMjQsIDEsIDkzLCAyMDgsIDE0NywgMjQsIDEsIDkzLCAyMjUsIDQyLCAyNCwgMSwgOTMsIDIyOCwgMTEsIDI0LCAxLCAKLSAgICA5MywgMjA1LCAxNzcsIDI0LCAxLCA5MywgMjI3LCAxNiwgMjQsIDEsIDkzLCAyMTksIDE2OCwgMjQsIDEsIDkzLCAyMTEsIAotICAgIDI1NSwgMjQsIDEsIDkzLCAyMTYsIDE3NiwgMjQsIDEsIDkzLCAyMjEsIDExMiwgMjQsIDEsIDkzLCAyMjIsIDI0NywgMjQsIAotICAgIDEsIDkzLCAyMTcsIDE4OCwgMjQsIDEsIDkzLCAyMDksIDIzMiwgMjQsIDEsIDkzLCAyMjIsIDE0NiwgMjQsIDEsIDkzLCAKLSAgICAyMjgsIDIzNywgMjQsIDEsIDkzLCAyMDMsIDIwOCwgMjQsIDEsIDkzLCAyMTQsIDE2NSwgMjQsIDEsIDkzLCAyMjIsIDE3MCwgCi0gICAgMjQsIDEsIDkzLCAyMTksIDE2NSwgMjQsIDEsIDkzLCAyMDgsIDE0OCwgMjQsIDEsIDkzLCAyMjgsIDE4OSwgMjQsIDEsIDkzLCAKLSAgICAyMjcsIDMwLCAyNCwgMSwgOTMsIDIyMSwgMTE1LCAyNCwgMSwgOTMsIDIyMiwgMTIyLCAyNCwgMSwgOTMsIDIyNSwgMTU4LCAKLSAgICAyNCwgMSwgOTMsIDIyMiwgMTM5LCAyNCwgMSwgOTMsIDIyMiwgMTIxLCAyNCwgMSwgOTMsIDIyMSwgMTE0LCAyNCwgMSwgOTMsIAotICAgIDIxNiwgMCwgMjQsIDEsIDkzLCAyMjIsIDM0LCAyNCwgMSwgOTMsIDIxOSwgMjEsIDI0LCAxLCA5MywgMjE1LCAzMywgMjQsIAotICAgIDEsIDkzLCAyMjIsIDE1NCwgMjQsIDEsIDkzLCAyMjQsIDE5MSwgMjQsIDEsIDkzLCAyMzgsIDk2LCAyNCwgMSwgOTMsIDIyMiwgCi0gICAgMTQyLCAyNCwgMSwgOTMsIDIyMiwgNDUsIDI0LCAxLCA5MywgMjI1LCAxMDYsIDI0LCAxLCA5MywgMjI3LCAxMiwgMjQsIDEsIAotICAgIDkzLCAyMjIsIDE3NSwgMjQsIDEsIDkzLCAyMjMsIDQsIDI0LCAxLCA5MywgMjEwLCAwLCAyMjEsIDk3LCAyNCwgMSwgOTMsIAotICAgIDIxMywgMTE3LCAyNCwgMSwgOTMsIDIxNywgMTgxLCAyNCwgMSwgOTMsIDIyMywgMjQsIDIxMiwgNiwgMjQsIDEsIDkzLCAKLSAgICAyMjIsIDE2MiwgMjIxLCA2LCAyNCwgMSwgOTMsIDIwMywgNywgMjQsIDEsIDkzLCAyMzgsIDk3LCAyNCwgMSwgOTMsIDIwNywgCi0gICAgMjAyLCAyNCwgMSwgOTMsIDIwMywgMjIsIDI0LCAxLCA5MywgMjE4LCA2OSwgMjQsIDEsIDkzLCAyMDcsIDE5MCwgMjQsIDEsIAotICAgIDkzLCAyMjksIDE2OCwgMjQsIDEsIDkzLCAyMTEsIDYsIDI0LCAxLCA5MywgMjA5LCAxMjAsIDI0LCAxLCA5MywgMjA1LCAKLSAgICAyMzksIDI0LCAxLCA5MywgMjA0LCA0MywgMjQsIDEsIDkzLCAyMjgsIDExMCwgMjQsIDEsIDkzLCAyMTcsIDE5MSwgMjQsIDEsIAotICAgIDkzLCAyMTAsIDEzLCAyNCwgMSwgOTMsIDIzOCwgMTE3LCAyNCwgMSwgOTMsIDIyMiwgMTg1LCAyNCwgMSwgOTMsIDIxMywgCi0gICAgMTksIDI0LCAxLCA5MywgMjI0LCAxODYsIDI0LCAxLCA5MywgMjI1LCA0NiwgMjQsIDEsIDkzLCAyMjAsIDIxMiwgMjQsIDEsIAotICAgIDkzLCAyMjEsIDI1NCwgMjQsIDEsIDkzLCAyMzgsIDIwMSwgMjQsIDEsIDkzLCAyMDcsIDE5MSwgMjQsIDEsIDkzLCAyMjgsIAotICAgIDE5OSwgMjQsIDEsIDkzLCAyMDMsIDc0LCAyNCwgMSwgOTMsIDIyMCwgMjQ5LCAyNDYsIDMyLCAyNCwgMSwgOTMsIDIwMiwgCi0gICAgMjUzLCAyNCwgMSwgOTMsIDIyNCwgMjAzLCAyNCwgMSwgOTMsIDIyMywgOSwgMjQsIDEsIDkzLCAyMTgsIDE1OCwgMjQsIDEsIAotICAgIDkzLCAyMDIsIDE5OCwgMjQsIDEsIDkzLCAyMjcsIDE3MCwgMjQsIDEsIDkzLCAyMzksIDEwNiwgMjQsIDEsIDkzLCAyMzgsIAotICAgIDIwMCwgMjQsIDEsIDkzLCAyMjIsIDEzMiwgMjQsIDEsIDkzLCAyMjksIDE3MCwgMjQsIDEsIDkzLCAyMjUsIDE2MSwgMjQsIAotICAgIDEsIDkzLCAyMjIsIDE0NSwgMjQsIDEsIDkzLCAyMzgsIDEwMywgMjQsIDEsIDkzLCAyNDAsIDEwOCwgMjQsIDEsIDkzLCAKLSAgICAyMjEsIDg3LCAyNCwgMSwgOTMsIDIxOCwgMjE0LCAyNCwgMSwgOTMsIDIwMywgMjAsIDI0LCAxLCA5MywgMjIyLCAxNzEsIAotICAgIDI0LCAxLCA5MywgMjIwLCAyNDksIDI0OCwgMTAzLCAyNCwgMSwgOTMsIDIyMCwgMTkyLCAyNCwgMSwgOTMsIDIxOCwgNDMsIAotICAgIDI0LCAxLCA5MywgMjI0LCAxNDQsIDI0LCAxLCA5MywgMjM5LCAxMDQsIDI0LCAxLCA5MywgMjIzLCAxMDAsIDI0LCAxLCA5MywgCi0gICAgMjIzLCAyNDQsIDI0LCAxLCA5MywgMjM4LCAxMDIsIDI0LCAxLCA5MywgMjM5LCAxMDksIDc1LCAyNCwgMSwgOTMsIDIyMywgCi0gICAgMTg1LCAyNCwgMSwgOTMsIDIxNywgMTg3LCAyNCwgMSwgOTMsIDIyMiwgMTM0LCAyNCwgMSwgOTMsIDIyOCwgMTc1LCAyNCwgCi0gICAgMSwgOTMsIDIxOCwgMTU1LCAyNCwgMSwgOTMsIDIyMSwgMTAwLCAyNCwgMSwgOTMsIDIwMywgMjEsIDI0LCAxLCA5MywgMjIyLCAKLSAgICAxNTUsIDI0LCAxLCA5MywgMjE5LCAxNjksIDIxOCwgMjUyLCAyNCwgMSwgOTMsIDIzOSwgMTA5LCAyNDcsIDcxLCAyNCwgMSwgCi0gICAgOTMsIDIzOSwgMTc5LCAyNCwgMSwgOTMsIDIyMiwgMzksIDI0LCAxLCA5MywgNjMsIDI0LCAxLCA5MywgMjA4LCAxNDEsIDI0LCAKLSAgICAxLCA5MywgNzgsIDI0LCAxLCA5MywgNzUsIDI0LCAxLCA5MywgMjI4LCA5LCAyNCwgMSwgOTMsIDIxOSwgMTY5LCAyMTgsIAotICAgIDc3LCAyNCwgMSwgOTMsIDIxMCwgMTgsIDI0LCAxLCA5MywgMjA5LCAyMTksIDI0LCAxLCA5MywgMjIzLCAyNCwgMjIzLCAKLSAgICAxNzIsIDIzNiwgMzgsIDI0LCAxLCA5MywgMjEyLCAyNTAsIDI0LCAxLCA5MywgMjAzLCAxNywgMjQsIDEsIDkzLCAyMjIsIAotICAgIDExNSwgMjQsIDEsIDkzLCAyMDIsIDIwMywgMjQsIDEsIDkzLCAyMDIsIDIzMCwgMjEwLCAxNTksIDI0LCAxLCA5MywgMjAyLCAKLSAgICAyMzAsIDI0NSwgMTUxLCAyNCwgMSwgOTMsIDIwMiwgMTg3LCAyNCwgMSwgOTMsIDIwMiwgMTk1LCAyNCwgMSwgOTMsIDIyOSwgCi0gICAgMTU2LCAyNCwgMSwgOTMsIDIxOCwgMjEyLCAyNCwgMSwgOTMsIDIyMiwgNDAsIDI0MSwgMzksIDI0LCAxLCA5MywgMjE3LCAKLSAgICAxODMsIDI0LCAxLCA5MywgMjAzLCAyMTQsIDI0LCAxLCA5MywgMjQwLCA1MywgMjQsIDEsIDkzLCAyMDYsIDUwLCAyNCwgMSwgCi0gICAgOTMsIDIyNiwgMjM5LCAyNCwgMSwgOTMsIDIyNCwgMTU1LCAyNCwgMSwgOTMsIDIxNiwgNzUsIDI0LCAxLCA5MywgMjE2LCAKLSAgICAyMDIsIDI0LCAxLCA5MywgMjIyLCAxMTQsIDI0LCAxLCA5MywgMjIyLCAyMDMsIDI0LCAxLCA5MywgMjEyLCAyNDIsIDI0LCAKLSAgICAxLCA5MywgMjEyLCAyMjksIDI0LCAxLCA5MywgMjM5LCAxMDksIDIxNiwgMTExLCAyNCwgMSwgOTMsIDIwMSwgMjAxLCAyNCwgCi0gICAgMSwgOTMsIDIxOCwgMTY3LCAyNCwgMSwgOTMsIDIyNywgMTAsIDI0LCAxLCA5MywgMjI5LCAyNiwgMjQsIDEsIDkzLCAyMjQsIAotICAgIDI0MCwgMjQsIDEsIDkzLCAxOTIsIDI0LCAxLCA5MywgMjI1LCAxMDMsIDI0LCAxLCA5MywgMjA5LCAxMjIsIDI0LCAxLCA5MywgCi0gICAgMjI5LCAxMDAsIDI0LCAxLCA5MywgMjI0LCA1NCwgMjQsIDEsIDkzLCAyMDksIDE1MiwgMjQsIDEsIDkzLCAyNDAsIDc3LCAKLSAgICAyNCwgMSwgOTMsIDIzOCwgOTAsIDI0LCAxLCAyMTgsIDE5NiwgMTczLCAyNCwgMSwgMjE4LCAxOTYsIDY4LCAyNCwgMSwgCi0gICAgMjE4LCAxOTYsIDIyOCwgMjA5LCAyNCwgMSwgMjE4LCAxOTYsIDI0MSwgMTYxLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgMTM1LCAKLSAgICAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjAsIDI0OCwgMjQsIDEsIDIxOCwgMTk2LCAyMjgsIAotICAgIDExMywgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDMsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCA1MCwgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMjUsIDcsIDI0LCAxLCAyMTgsIDE5NiwgMjEwLCAxOCwgMjQsIDEsIDIxOCwgMTk2LCAyMjMsIDIzLCAyNCwgMSwgMjE4LCAKLSAgICAxOTYsIDIyMiwgNDYsIDI0LCAxLCAyMTgsIDE5NiwgMjI2LCAxODUsIDI0LCAxLCAyMTgsIDE5NiwgMjEwLCAxNzksIDI0LCAKLSAgICAxLCAyMTgsIDE5NiwgMjEzLCA2LCAyNCwgMSwgMjE4LCAxOTYsIDIxMiwgMTYyLCAyNCwgMSwgMjE4LCAxOTYsIDIxMywgCi0gICAgMTEzLCAyNCwgMSwgMjE4LCAxOTYsIDIyOCwgMTM3LCAyNCwgMSwgMjE4LCAxOTYsIDIyOSwgMTcwLCAyNCwgMSwgMjE4LCAKLSAgICAxOTYsIDIyMSwgNTUsIDI0LCAxLCAyMTgsIDE5NiwgMjIxLCA4NCwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDE3LCAyNCwgMSwgCi0gICAgMjE4LCAxOTYsIDIwMiwgMjI5LCAyNCwgMSwgMjE4LCAxOTYsIDIxMiwgMTk5LCAyNCwgMSwgMjE4LCAxOTYsIDE5OCwgMjQsIAotICAgIDEsIDIxOCwgMTk2LCAyMjEsIDExOCwgMjQsIDEsIDIxOCwgMTk2LCAyMTgsIDIxMiwgMjQsIDEsIDIxOCwgMTk2LCAyMjEsIAotICAgIDk5LCAyNCwgMSwgMjE4LCAxOTYsIDIwMywgMjE0LCAyNCwgMSwgMjE4LCAxOTYsIDIxOSwgMjMsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjE1LCAxNDUsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxMDAsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCA3NSwgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMjksIDE4MCwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDEzMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDE4MiwgCi0gICAgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDI0MiwgMjQsIDEsIDIxOCwgMTk2LCAyMTcsIDE4OCwgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMzksIDE3OSwgMjQsIDEsIDIxOCwgMTk2LCAyMDQsIDExMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjcsIDE0OCwgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMjcsIDEwLCAyNCwgMSwgMjE4LCAxOTYsIDIyOSwgMjYsIDI0LCAxLCAyMTgsIDE5NiwgMjI1LCA0NCwgCi0gICAgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDEwNywgMjQsIDEsIDIxOCwgMTk2LCAxOTIsIDI0LCAxLCAyMTgsIDE5NiwgMjI0LCAKLSAgICA4MiwgMjQsIDEsIDIxOCwgMTk2LCAyMjUsIDUyLCAyNCwgMSwgMjE4LCAxOTYsIDIwOSwgMTMyLCAyNCwgMSwgMjE4LCAxOTYsIAotICAgIDIyOCwgMjQ0LCAyNCwgMSwgMjE4LCAxOTYsIDIxNCwgMjUxLCAyNCwgMSwgMjE4LCAxOTYsIDIwNCwgMTYyLCAyMjMsIDI0OSwgCi0gICAgMSwgMjEwLCAyMiwgMjIzLCAyNDksIDEsIDIyMiwgMTUxLCAyMjMsIDI0OSwgMSwgMjAyLCAyNDcsIDIyMywgMjQ5LCAxLCAKLSAgICAyMjQsIDExMiwgMjIzLCAyNDksIDEsIDI0OSwgMzIsIDIyMywgMjQ5LCAxLCAyNDQsIDIxMiwgMjIzLCAyNDksIDEsIDYzLCAKLSAgICAyMjMsIDI0OSwgMSwgMjE4LCAxOTIsIDIyMywgMjQ5LCAxLCAyMjksIDEzOSwgMjIzLCAyNDksIDEsIDIzNywgOTUsIDIyMywgCi0gICAgMjQ5LCAxLCAyNDQsIDE4OCwgMjIzLCAyNDksIDEsIDI0NiwgOTgsIDIyMywgMjQ5LCAxLCAyMjksIDIwMCwgMjIzLCAyNDksIAotICAgIDEsIDIyMCwgNDYsIDIyMywgMjQ5LCAxLCAyMjUsIDE1OCwgMjIzLCAyNDksIDEsIDIyMiwgNjgsIDIyMywgMjQ5LCAxLCAKLSAgICAxODUsIDIyMywgMjQ5LCAxLCAyMjAsIDE4LCAyMjMsIDI0OSwgMSwgNzgsIDIyMywgMjQ5LCAxLCAyMTUsIDIyNywgMjIzLCAKLSAgICAyNDksIDEsIDIxMywgMTEsIDIyMywgMjQ5LCAxLCAyMDksIDkxLCAyMjMsIDI0OSwgMSwgMjQxLCAxODksIDIyMywgMjQ5LCAKLSAgICAxLCAyMDQsIDExMSwgMjIzLCAyNDksIDEsIDc0LCAyMjMsIDI0OSwgMSwgMjI5LCAyNiwgMjIzLCAyNDksIDEsIDIyOCwgMTcsIAotICAgIDIyMywgMjQ5LCAxLCAyMjgsIDExMywgMjIzLCAyNDksIDEsIDIzNywgMTQ3LCAyMjMsIDI0OSwgMSwgMjE2LCA1NywgMjIzLCAKLSAgICAyNDksIDEsIDIwOSwgMTY1LCAyMjMsIDI0OSwgMTcsIDIwMiwgODQsIDIyMywgMjQ5LCAxNywgMTA1LCAyMjMsIDI0OSwgMTcsIAotICAgIDEwOCwgMjIzLCAyNDksIDE3LCAxNDcsIDIyMywgMjQ5LCAxNywgMTQ5LCAyMjMsIDI0OSwgMTcsIDE3MCwgMjIzLCAyNDksIAotICAgIDE3LCAxOTUsIDIyMywgMjQ5LCAxNywgMjEzLCAxMTEsIDIyMywgMjQ5LCAxNywgMTk5LCAyMjMsIDI0OSwgMTcsIDIyMiwgCi0gICAgNjMsIDIyMywgMjQ5LCAyNDQsIDE2NiwgMjIzLCAyNDksIDUyLCAyNDQsIDE2NiwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIAotICAgIDI0MSwgNzQsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAxNzMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMTQsIDE3NywgMjQ4LCAKLSAgICAyMTIsIDIwNiwgODMsIDEsIDI0MCwgMTA4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjI1LCA0NywgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDIwMywgOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIzOCwgMjQ5LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQzLCAKLSAgICAyMzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMjgsIDI0MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIzMCwgMTAxLCAyNDgsIAotICAgIDIxMiwgMjA2LCA4MywgMSwgMjM1LCAyNTMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDQsIDExMSwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDIwMiwgMTcsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzgsIDE5NCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIAotICAgIDI0MywgMTEzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQ2LCAyMzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDYsIDE3MSwgCi0gICAgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDEzNSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0OSwgMzIsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCAyMDQsIDE2MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIwMywgNDYsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKLSAgICAxODUsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDQsIDEwOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDYzLCAyNDgsIDIxMiwgCi0gICAgMjA2LCA4MywgMSwgNzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMjAsIDE4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgNjgsIAotICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDEsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDc0LCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMSwgNzUsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgMTM4LCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAKLSAgICAxMjQsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDIyNCwgMTUwLCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDM5LCAyMjYsIDI1MywgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgMjM2LCAyNDIsIDIwOCwgMTYxLCAKLSAgICAyNDgsIDIxMiwgMjA2LCA4MywgMjM5LCAxMDIsIDIxMSwgNjEsIDExOSwgMTE3LCAyMiwgMjI5LCAxOTcsIDExOSwgMTE3LCAKLSAgICAyMiwgMjI5LCAxOTMsIDExOSwgMTE3LCAyMiwgMjI5LCA5NywgMTE5LCAxMTcsIDIyLCAyMjksIDYzLCAxMTksIDExNywgMjIsIAotICAgIDIyOSwgMjE4LCAxMTksIDExNywgMjIsIDIyOSwgMjE1LCAxMTksIDExNywgMjIsIDIyOCwgMjAwLCAxMTksIDExNywgMjIsIAotICAgIDIyOCwgMTcyLCAxMTksIDExNywgMjIsIDIyOSwgMTk5LCAxMTksIDExNywgMjIsIDIyOSwgMTU0LCAxMTksIDExNywgMjIsIAotICAgIDIzMCwgMTcsIDExOSwgMTE3LCAyMiwgMjMwLCAxNCwgMTE5LCAxMTcsIDIyLCAyMjksIDUsIDExOSwgMTE3LCAyMiwgMjI5LCAKLSAgICAyLCAxMTksIDExNywgMjIsIDIyOSwgMjEyLCAxMTksIDExNywgMjIsIDIyOSwgMjEwLCAxMTksIDExNywgMjIsIDIyOCwgCi0gICAgMjAyLCAxMTksIDExNywgMjIsIDIyOCwgMjAxLCAxMTksIDExNywgMjIsIDIyOSwgMjMsIDExOSwgMTE3LCAyMiwgMjI4LCAKLSAgICAyNDcsIDExOSwgMTE3LCAyMiwgMjI5LCA5OSwgMTE5LCAxMTcsIDIyLCAyMjksIDk4LCAxMTksIDExNywgMjIsIDIzMCwgMzIsIAotICAgIDExOSwgMTE3LCAyMiwgMjI5LCAyMTQsIDExOSwgMTE3LCAyMiwgMjI4LCAxNjMsIDExOSwgMTE3LCAyMiwgMjI4LCAxNTQsIAotICAgIDExOSwgMTE3LCAyMiwgMjMwLCA0MCwgMTE5LCAxMTcsIDIyLCAyMzAsIDMzLCAxMTksIDExNywgMTA5LCAyMDYsIDYxLCAKLSAgICAxMTksIDExNywgMTA5LCAyMjEsIDkwLCAxMTksIDExNywgMTA5LCAyMjcsIDI1MSwgMTE5LCAxMTcsIDEwOSwgMjM3LCA3NiwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjIxLCAyMzAsIDExOSwgMTE3LCAxMDksIDIxNiwgMTY3LCAxMTksIDExNywgMTA5LCAyMjIsIDEsIAotICAgIDExOSwgMTE3LCAxMDksIDIxNywgMTAwLCAxMTksIDExNywgMTA5LCAyMDMsIDYyLCAxMTksIDExNywgMTA5LCAyMzYsIDIyMSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjI1LCA2NywgMTE5LCAxMTcsIDEwOSwgMjQ2LCAxNzQsIDExOSwgMTE3LCAxMDksIDIyMywgMjgsIAotICAgIDExOSwgMTE3LCAxMDksIDIzNiwgMTU3LCAxMTksIDExNywgMTA5LCAyMTgsIDg1LCAxMTksIDExNywgMTA5LCAyMjEsIDk1LCAKLSAgICAxMTksIDExNywgMTA5LCAyMjMsIDY1LCAxMTksIDExNywgMTA5LCAyNTAsIDM0LCAxMTksIDExNywgMTA5LCAyMDMsIDE3OCwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjQ3LCAxNSwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjA3LCAxOTksIDExOSwgMTE3LCAxMzEsIAotICAgIDI0NiwgNjcsIDIxMiwgMTMsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIyOSwgMTcyLCAxMTksIDExNywgMTMxLCAyNDYsIAotICAgIDY3LCAyMjksIDEzMCwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjExLCA0LCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAKLSAgICAyMzYsIDEyMywgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjA5LCAyMDYsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA5LCAKLSAgICA0NCwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMDgsIDksIDI0NiwgMjI5LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjQ2LCAKLSAgICAxNjMsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA5LCA2OSwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyNDAsIDUwLCAxMTksIAotICAgIDExNywgMiwgMjAzLCAxMzYsIDIyMSwgODUsIDExOSwgMTE3LCAyLCAyMDMsIDEzNiwgMjE2LCA1OSwgMTE5LCAxMTcsIDIsIAotICAgIDIwMywgMTM2LCAyMDgsIDEyNCwgMTE5LCAxMTcsIDIsIDIwMywgMTM2LCAyNDAsIDg5LCAxMTksIDExNywgMiwgMjA1LCAKLSAgICAxNzMsIDIxNCwgMTU5LCAxMTksIDExNywgMiwgMjI1LCA2LCAyMTEsIDgsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjIxLCAKLSAgICAxMzQsIDExOSwgMTE3LCAyLCAyMzUsIDE2NywgMjAzLCA4MSwgMTE5LCAxMTcsIDIsIDIwMywgMTc3LCAxMTksIDExNywgMiwgCi0gICAgMjQ2LCA2NywgMjA3LCAyNTIsIDIxNSwgMjE2LCAxMTksIDExNywgMTcsIDIwMiwgODQsIDExOSwgMTE3LCAxNywgMTA1LCAKLSAgICAxMTksIDExNywgMTcsIDEwOCwgMTE5LCAxMTcsIDE3LCAxNDcsIDExOSwgMTE3LCAxNywgMTQ5LCAxMTksIDExNywgMTcsIAotICAgIDE3MCwgMTE5LCAxMTcsIDE3LCAxOTUsIDExOSwgMTE3LCAxNywgMjEzLCAxMTEsIDExOSwgMTE3LCAxNywgMTk5LCAxMTksIAotICAgIDExNywgMTcsIDIyMiwgNjMsIDExOSwgMTE3LCA0MiwgMjA5LCAxNDcsIDExOSwgMTE3LCA0MiwgMjM2LCAxMCwgMTE5LCAKLSAgICAxMTcsIDQyLCAyMDksIDE1MywgMjA5LCAzNCwgMTE5LCAxMTcsIDQyLCAyMjQsIDExMywgMTE5LCAxMTcsIDQyLCAyMzYsIAotICAgIDEyLCAyMjQsIDExMywgMTE5LCAxMTcsIDQyLCAyMDksIDE1MywgMjQ4LCA2OCwgMTE5LCAxMTcsIDQyLCAyMDgsIDcyLCAKLSAgICAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIyNiwgMjM0LCAxMTksIDExNywgMiwgMjAzLCAxMzMsIDExOSwgMTE3LCAyLCAyMzYsIAotICAgIDIxNiwgMTE5LCAxMTcsIDIsIDIwOSwgNTksIDIzNiwgMjE2LCAxMTksIDExNywgMiwgMjAxLCAyNDcsIDIwOSwgMTAyLCAKLSAgICAxMTksIDExNywgMiwgMjM2LCAxNDEsIDExOSwgMTE3LCAyLCAyMjEsIDE0OCwgMTE5LCAxMTcsIDIsIDIwMywgMTY5LCAxMTksIAotICAgIDExNywgMiwgMjIxLCA4OCwgMTE5LCAxMTcsIDIsIDI1MCwgMTgsIDExOSwgMTE3LCAyLCAyMDcsIDEyOSwgMjQ2LCAyMjgsIAotICAgIDExOSwgMTE3LCAyLCAyMjUsIDYsIDIwOCwgMTIsIDExOSwgMTE3LCAyLCAyMDksIDIwNywgMTE5LCAxMTcsIDIsIDIyNywgNywgCi0gICAgMTE5LCAxMTcsIDIsIDIyMywgMjAxLCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjM3LCAxNDMsIDIyNiwgMjEyLCAyMjEsIDkzLCAKLSAgICAyMjEsIDkyLCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjQ1LCAxMDksIDIwOCwgMywgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIAotICAgIDIwNywgMTI3LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjA3LCAxMjgsIDI0NiwgODYsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAKLSAgICAyMTcsIDE4NiwgMjQ0LCAxMzUsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyMjEsIDE0MSwgMjA4LCAxMzIsIDExOSwgMTE3LCAKLSAgICAyNDYsIDM5LCAyLCAyMDgsIDcsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDMsIDQ4LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgCi0gICAgMjI3LCA5MywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyNywgMjUwLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCAxMzIsIAotICAgIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjksIDYsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMzcsIDczLCAxMTksIDExNywgCi0gICAgMjQ2LCAzOSwgMiwgMjIzLCAyNDIsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDksIDQ1LCAxMTksIDExNywgMjQ2LCAzOSwgCi0gICAgMiwgMjA4LCAxNywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIxOCwgMjA1LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI5LCAKLSAgICAxNDIsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMzcsIDEzMywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwNiwgODAsIDExOSwgCi0gICAgMTE3LCAyNDYsIDM5LCAyLCAyNDAsIDg2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCA4OCwgMTE5LCAxMTcsIDI0NiwgCi0gICAgMzksIDIsIDIwNywgMjQ2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI4LCAxNTgsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAKLSAgICAyMDQsIDE1MywgMTExLCAxLCAxODUsIDExMSwgMSwgMjQ5LCAzMiwgMTExLCAxLCAxMSwgMTg1LCAxMTEsIDEsIDIxOCwgOTgsIAotICAgIDExMSwgMSwgMTkyLCAxMTEsIDEsIDIyNCwgMTU4LCAxMTEsIDEsIDI1MCwgMTI2LCAxOTIsIDExMSwgMSwgMjQwLCAxMDgsIAotICAgIDExMSwgMSwgMjA2LCA4NiwgMTExLCAxLCAyMDUsIDIzMSwgMTExLCAxLCAyMTAsIDIyLCAxMTEsIDEsIDI0NCwgMjEyLCAKLSAgICAxMTEsIDEsIDExLCAyMDcsIDI0MSwgMTExLCAxLCAxMSwgMjEwLCAyMiwgMTExLCAxLCAyMDcsIDI0MSwgMTExLCAxLCAyNDQsIAotICAgIDEyMCwgMTExLCAxLCAyMDEsIDIwMSwgMTExLCAxLCAyMjIsIDEwNCwgMTExLCAxLCAxMSwgMjIxLCAyMjcsIDExMSwgMSwgCi0gICAgMjUwLCAxMjYsIDIwMSwgMjAxLCAxMTEsIDEsIDIyMSwgMjI3LCAxMTEsIDEsIDIyMSwgMjEzLCAxMTEsIDEsIDIyOCwgMTEzLCAKLSAgICAxMTEsIDEsIDIyNiwgMTk4LCAxMTEsIDEsIDIyNywgMTYxLCAxMTEsIDEsIDIyNywgMTUwLCAxMTEsIDEsIDIwOCwgMTg3LCAKLSAgICAxMTEsIDEsIDI0MywgMTIxLCAxMTEsIDEsIDIwOCwgMTc5LCAxMTEsIDEsIDI0MywgMTIwLCAxMTEsIDEsIDE3MywgMTExLCAKLSAgICAxLCAyMzksIDgsIDExMSwgMSwgMTEsIDE3MywgMTExLCAxLCAyMTcsIDEyNiwgMTExLCAxLCAyMTcsIDEwMywgMTExLCAxLCAKLSAgICAyMjIsIDIwMywgMTExLCAxLCAyMjIsIDE1MiwgMTExLCAxLCAyNTAsIDEyNiwgMjIyLCAyMDMsIDExMSwgMSwgMTUyLCAxMTEsIAotICAgIDEsIDIwMywgMTgyLCAxMTEsIDEsIDIzOCwgMTE5LCAxMTEsIDEsIDIzOCwgOTQsIDExMSwgMSwgMjA3LCAyNTEsIDExMSwgMSwgCi0gICAgMjQxLCAyMzksIDExMSwgMSwgMjIxLCAxMSwgMTExLCAxLCAyMjAsIDI1MCwgMTExLCAxLCAyMDgsIDEwLCAxMTEsIDEsIAotICAgIDI0MSwgMjQ5LCAxMTEsIDEsIDExLCAyMDgsIDEwLCAxMTEsIDEsIDExLCAyNDEsIDI0OSwgMTExLCAxLCAyMTYsIDEzMywgCi0gICAgMjA4LCAxMCwgMTExLCAxLCAyMTMsIDkwLCAxMTEsIDEsIDIxMSwgMTY0LCAxMTEsIDEsIDIwMiwgODAsIDExMSwgMSwgMjAyLCAKLSAgICA4LCAxMTEsIDEsIDIwOCwgMjAsIDExMSwgMSwgMjQxLCAyNTUsIDExMSwgMSwgMTEsIDIwOCwgMjAsIDExMSwgMSwgMjE1LCAKLSAgICAzNiwgMTExLCAxLCAyMDIsIDExNiwgMTExLCAxLCAyMDIsIDksIDExMSwgMSwgMjAxLCAyMzUsIDExMSwgMSwgMjAxLCAyMTUsIAotICAgIDExMSwgMSwgMjUwLCAxMjYsIDIwMSwgMjM1LCAxMTEsIDEsIDIwMSwgMjA3LCAxMTEsIDEsIDIwMSwgMjE0LCAxMTEsIDEsIAotICAgIDIwNCwgMTExLCAxMTEsIDEsIDI1MSwgNzMsIDExMSwgMSwgMjM3LCAxMiwgMTExLCAxLCAyMjMsIDcwLCAxMTEsIDIsIDI1MCwgCi0gICAgNjUsIDExMSwgMiwgMjE2LCAxMzMsIDIwNSwgMTg0LCAxMTEsIDIsIDIxNiwgMTMzLCAyNTAsIDY1LCAxMTEsIDIyLCAyLCAKLSAgICA2MywgMTExLCAyMiwgMiwgMjUyLCAyNSwgMTExLCAyMiwgMiwgMjUxLCA2OSwgMTExLCAyMiwgMiwgMjUwLCAyMzEsIDExMSwgCi0gICAgMjIsIDIsIDI1MCwgMjIzLCAxMTEsIDIyLCAyLCA3OCwgMTExLCAyMiwgMiwgMjIwLCAxOCwgMTExLCAyMiwgMiwgMjA0LCAwLCAKLSAgICAxMTEsIDIyLCAyLCAyMDQsIDE0NCwgMTExLCAyMiwgMiwgNzQsIDExMSwgMjIsIDIsIDI0MSwgOTIsIDExMSwgMjIsIDIsIAotICAgIDI0MSwgNzgsIDExMSwgMjIsIDIsIDIyMCwgNzAsIDExMSwgMjIsIDIsIDc1LCAxMTEsIDIyLCAyLCAyMzUsIDE3MSwgMTExLCAKLSAgICAyMiwgMiwgMjM1LCAxNzAsIDExMSwgMjIsIDIsIDIzNSwgMTY5LCAxMTEsIDIyLCAyLCAyMzAsIDIzNCwgMTExLCAyMiwgMiwgCi0gICAgMjMxLCAxMTAsIDExMSwgMjIsIDIsIDIzMSwgODMsIDExMSwgMjIsIDIsIDIzMCwgMTk3LCAxMTEsIDIyLCAyLCAyMzEsIDI0LCAKLSAgICAxMTEsIDIyLCAyLCA2OCwgMTExLCAyMiwgMiwgMjA3LCAzOSwgMTExLCAyMiwgMiwgMjA3LCAzOCwgMTExLCAyMiwgMiwgCi0gICAgMjA3LCAzNywgMTExLCAyMiwgMiwgMjA2LCAxNzgsIDExMSwgMjIsIDIsIDIwNywgMjEsIDExMSwgMjIsIDIsIDIwNiwgMjQxLCAKLSAgICAxMTEsIDIyLCAyLCAyMDMsIDEyNCwgMTExLCAyMiwgMiwgMjAzLCAxMSwgMTExLCAyMiwgMiwgMjUxLCAxMDksIDExMSwgMjIsIAotICAgIDIsIDI1MSwgMTA1LCAxMTEsIDIyLCAyLCAyNDEsIDIxLCAxMTEsIDIyLCAyLCAyMTUsIDE4OSwgMjQxLCAyMSwgMTExLCAyMiwgCi0gICAgMiwgMjQxLCAyOCwgMTExLCAyMiwgMiwgMjE1LCAxODksIDI0MSwgMjgsIDExMSwgMjIsIDIsIDI1MSwgNjQsIDExMSwgMjIsIAotICAgIDIsIDI0MSwgMTQ1LCAxMTEsIDIyLCAyLCAyNTAsIDM0LCAxMTEsIDIyLCAyLCAyMTksIDIxNiwgMTExLCAyMiwgMiwgMjIzLCAKLSAgICAxNjMsIDExMSwgMjIsIDIsIDIyMiwgMjA1LCAxMTEsIDE0MywgMjE2LCAxNiwgMTExLCAxNDMsIDIwOCwgMTQ1LCAyMTYsIAotICAgIDE2LCAxMTEsIDE0MywgNTUsIDExMSwgMTQzLCA1NiwgMTExLCAxLCAyMDgsIDE1OSwgMTExLCAxLCAyMDgsIDE1OCwgMTExLCAKLSAgICAxLCAyMDgsIDE1NywgMTExLCAxLCAyMDgsIDE1NiwgMTExLCAxLCAyMDgsIDE1NSwgMTExLCAxLCAyMDgsIDE1NCwgMTExLCAKLSAgICAxLCAyMDgsIDE1MywgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNjAsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTU5LCAxMTEsIAotICAgIDEsIDIxNiwgMTMzLCAyMDgsIDE1NywgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTYsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgCi0gICAgMTU1LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1MywgNjcsIDEsIDI1MCwgMTI2LCA3NCwgMTcyLCAxLCAyNTAsIDEyNiwgCi0gICAgMjAzLCA1MiwgMTAwLCAxLCAyMzcsIDE3MSwgMTAwLCAxLCAyMDMsIDE5NiwgMTAwLCAxLCAyMTksIDE4NCwgMTAwLCAxLCAKLSAgICAyMTAsIDY5LCAxMDAsIDEsIDI0MCwgMTc0LCAxMDAsIDEsIDIzMCwgNTQsIDEwMCwgMSwgMTU5LCAxMDAsIDEsIDI0OSwgCi0gICAgMjU1LCAxMDAsIDEsIDI0NSwgNTEsIDEwMCwgMSwgMjA2LCAxNjQsIDEwMCwgMSwgMjM5LCA3NSwgMTAwLCAxLCAxNDYsIAotICAgIDEwMCwgMSwgMjE5LCAxODUsIDIyMywgMTYzLCAxMDAsIDEsIDI0NSwgNTIsIDE5NCwgMTAwLCAxLCAyNDAsIDE3NSwgMjIzLCAKLSAgICAxNjMsIDEwMCwgMSwgMjMwLCA1NSwgMjI2LCAxODUsIDEwMCwgMSwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgMjA5LCAxMTAsIAotICAgIDEwMCwgMSwgMjEyLCA0NSwgMjQ0LCAyLCAxMDAsIDEsIDI0NCwgMiwgMTAwLCAxLCAyMjksIDQ4LCAxMDAsIDEsIDIxMiwgCi0gICAgNDUsIDIzMCwgMTg0LCAxMDAsIDEsIDIzNiwgMjI1LCAxMDAsIDEsIDIyNywgMTYyLCAxMDAsIDEsIDIxNiwgNjIsIDEwMCwgCi0gICAgMSwgMjI2LCAxODUsIDEwMCwgMSwgMjIzLCAxNjMsIDEwMCwgMSwgMjMwLCAxODQsIDEwMCwgMSwgMTk0LCAxMDAsIDEsIAotICAgIDIyNiwgMTg2LCAyMjMsIDE2MywgMTAwLCAxLCAyMjMsIDE2NCwgMjI2LCAxODUsIDEwMCwgMSwgMjMwLCAxODUsIDIyNiwgCi0gICAgMTg1LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgMTg0LCAxMDAsIDEsIDIyNiwgMTg2LCAzLCAyNDMsIDg1LCAxMDAsIDEsIAotICAgIDIyMywgMTY0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAzLCAKLSAgICAxODcsIDIzMSwgNywgMjUsIDU1LCAxMDAsIDEsIDIxNSwgOTQsIDMsIDI0MywgODUsIDEwMCwgMSwgMjE1LCA5NCwgMywgNzAsIAotICAgIDU2LCAxMDAsIDEsIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMTk0LCAKLSAgICAxMDAsIDEsIDIxNSwgOTQsIDE5NCwgMTAwLCAxLCAyMjYsIDE4NiwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMjMsIDE2NCwgCi0gICAgMjI2LCAxODYsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMjI2LCAxODYsIDE5NCwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIAotICAgIDE4NSwgMTk0LCAxMDAsIDEsIDIzMCwgMTg1LCAyMTUsIDk0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjMsIAotICAgIDE2MywgMTAwLCAxLCAyMzAsIDE4NSwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMTUsIDk0LCAyMTAsIDY5LCAxMDAsIDEsIAotICAgIDIxNSwgOTQsIDIxMCwgNzAsIDE0NiwgMTAwLCAxLCAyMTUsIDk0LCAyMTksIDE4NCwgMTAwLCAxLCAyMTUsIDk0LCAyMTksIAotICAgIDE4NSwgMTQ2LCAxMDAsIDEsIDIxMCwgNzAsIDE5NCwgMTAwLCAxLCAyMTAsIDcwLCAyMTcsIDEsIDE5NCwgMTAwLCAxLCAKLSAgICAyMDQsIDE0NCwgMTAwLCAxLCAyMDQsIDQwLCAxMDAsIDEsIDIwNCwgMTQ1LCAxNDYsIDEwMCwgMSwgMjE1LCA5NCwgMjIzLCAKLSAgICAxNjMsIDEwMCwgMSwgMjE1LCA5NCwgMjI2LCAxODUsIDEwMCwgMSwgMjMwLCA1NSwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgCi0gICAgMjM5LCA3NiwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCA1NCwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDU1LCAKLSAgICAxNDYsIDEwMCwgMSwgNjMsIDEwMCwgMSwgMjEyLCA0NSwgMjE5LCAxOTUsIDEwMCwgMSwgMjIwLCA5NywgMTAwLCAxLCA3OCwgCi0gICAgMTAwLCAxLCAyNTAsIDE3NiwgMTAwLCAxLCA3NSwgMTAwLCAxLCA3NCwgMTAwLCAxLCAyMzEsIDExMCwgMTAwLCAxLCAyMTIsIAotICAgIDIyOCwgNzUsIDEwMCwgMSwgMjA3LCAxNywgMTAwLCAxLCAyNDEsIDE2MSwgMTAwLCAxLCAyMTIsIDQ1LCAyNDEsIDE0NywgCi0gICAgMTAwLCAxLCAyMTUsIDIwOSwgNzUsIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCAxNjEsIDEwMCwgMSwgMTYzLCA3NSwgMTAwLCAxLCAKLSAgICAyMDMsIDUyLCAxMDAsIDEsIDY4LCAxMDAsIDEsIDI0MCwgMjM4LCAxMDAsIDEsIDIwMywgMTQ3LCAxMDAsIDEsIDEwNiwgCi0gICAgMjIzLCAxNjMsIDEwMCwgMSwgMTYzLCA2OCwgMTAwLCAxLCAyMTUsIDIwOSwgNjgsIDEwMCwgMSwgMjA3LCAxOCwgMTAwLCAxLCAKLSAgICAyMTIsIDQ1LCA2OCwgMTAwLCAxLCAyMjAsIDE1LCAxMDAsIDEsIDIxOSwgMTk1LCAxMDAsIDEsIDIxOSwgMjE2LCAxMDAsIDEsIAotICAgIDIwNCwgMTExLCAxMDAsIDEsIDIwNCwgMCwgMTAwLCAxLCAyMDQsIDMwLCAxMDAsIDEsIDIwNCwgNTMsIDEwMCwgMSwgMjAzLCAKLSAgICAyMzAsIDEwMCwgMSwgMjIzLCA3MiwgNjgsIDEwMCwgMSwgMjIzLCA3MiwgNzgsIDEwMCwgMSwgMjIzLCA3MiwgNzUsIDEwMCwgCi0gICAgMSwgMjIzLCA3MiwgNjMsIDEwMCwgMSwgMjE4LCAyMzUsIDI1MCwgMjMxLCAxMDAsIDEsIDIxOCwgMjM1LCAyNTAsIDI0NywgCi0gICAgMTAwLCAxLCAyMTIsIDQ1LCAyNDEsIDkyLCAxMDAsIDEsIDIxMiwgNDUsIDI1MCwgMjMxLCAxMDAsIDEsIDIxMiwgNDUsIAotICAgIDIyMCwgMzEsIDEwMCwgMSwgMTI1LCAyMjYsIDE4NSwgMTAwLCAyNTEsIDg4LCA0OSwgMjM2LCAxMDYsIDIxNCwgMTcyLCAKLSAgICAxMDAsIDI1MSwgODgsIDIyNCwgMTUwLCAyMzYsIDEwNiwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgNTAsIDIzNiwgMTA2LCAKLSAgICAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAxMjQsIDgwLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyMjQsIDE1MCwgODAsIAotICAgIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDEzOCwgODAsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIxNCwgCi0gICAgMTcyLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIyNywgMjEzLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAKLSAgICAyMDksIDIyNiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMDksIDI0OCwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAxODgsIAotICAgIDExMywgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMzUsIDIwNiwgMTEzLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIwOSwgCi0gICAgMjI3LCAxMTMsIDEwMCwgMjUxLCA4OCwgMTM4LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDgsIDI0NCwgMTY1LCAxMDAsIAotICAgIDI1MSwgODgsIDEzOCwgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgMTM4LCAxNjMsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIAotICAgIDEzOCwgMjQzLCA4NSwgMTAwLCAyNTEsIDg4LCAxMzgsIDI0NiwgNjEsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMjcsIDExNCwgCi0gICAgMTAwLCAyNTEsIDg4LCAxMzgsIDIwNCwgNzUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDYsIDM4LCAxMDAsIDI1MSwgODgsIAotICAgIDEyNCwgMTY1LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA4LCAyNDQsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIzNywgMjUzLCAKLSAgICAxMDAsIDI1MSwgODgsIDEyNCwgMTYzLCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAxMjQsIDI0MywgODUsIDEwMCwgMjUxLCAKLSAgICA4OCwgMTI0LCAyNDYsIDYxLCAxMDAsIDI1MSwgODgsIDEyNCwgMjI3LCAxMTQsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMDQsIAotICAgIDc1LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA2LCAzOCwgMTAwLCAyNTEsIDg4LCAxMjQsIDQ3LCAxMDAsIDIsIDE1OCwgMywgCi0gICAgMjQ1LCAxMzAsIDEwMCwgMjA5LCA2OCwgMSwgMjE0LCAxNTAsIDEwMCwgNTIsIDgyLCAxMDAsIDIxNywgMTc5LCAyNDYsIAotICAgIDEyNiwgMjM5LCAxMDIsIDIxMSwgNjEsIDIxMiwgMjE1LCAyMzksIDE1OCwgMSwgMjE5LCAyMDEsIDIxMiwgMjE1LCAyMzksIAotICAgIDE1OCwgMjQ1LCAxOTAsIDIxOSwgMjAxLCAyMTIsIDIxNSwgMjM5LCAxNTgsIDEyMSwgMjExLCA3NSwgMjEyLCAyMTUsIDIzOSwgCi0gICAgMTU4LCAxMTIsIDIxMSwgNzUsIDYwLCAzMSwgMTYsIDIxNywgMTk1LCA2MCwgMzEsIDE2LCAyNDQsIDE0NiwgNjAsIDMxLCAKLSAgICAxNiwgMjE4LCAyMzksIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDI0MywgCi0gICAgMTcxLCA2MCwgMzEsIDE2LCAyMDYsIDczLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjQzLCAxNzEsIDYwLCAKLSAgICAzMSwgMTYsIDIyOSwgMjIxLCA2MCwgMzEsIDE2LCAyMTAsIDg2LCA2MCwgMzEsIDE2LCAyMTksIDgzLCA2MCwgMzEsIDE2LCAKLSAgICAyMDIsIDIxOSwgNjAsIDMxLCAxNiwgMjAyLCAyMjAsIDI0MywgMTcxLCA2MCwgMzEsIDE2LCAyMjgsIDIyNiwgNjAsIDMxLCAKLSAgICAxNiwgMjUwLCAxNzEsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyNDAsIDIwNiwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIwOSwgCi0gICAgMTYzLCA2MCwgMzEsIDE2LCAyMjksIDE3NiwgNjAsIDMxLCAxNiwgMjUwLCAxNjEsIDYwLCAzMSwgMTYsIDI1MCwgMTYyLCAKLSAgICAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjEwLCA5MywgNjAsIDMxLCAxNiwgMjA5LCA1MCwgNjAsIDMxLCAxNiwgMjIwLCA0MiwgCi0gICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIzOCwgMjMsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMTcsIDE5NCwgNjAsIDMxLCAKLSAgICAxNiwgMjQ2LCAxOTAsIDYwLCAzMSwgMTYsIDIwNiwgNjIsIDYwLCAzMSwgMTYsIDIzMCwgMjA2LCAyNTAsIDEyNCwgNjAsIAotICAgIDMxLCAxNiwgMjI5LCAxNzgsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAotICAgIDIxNCwgMjEwLCA2MCwgMzEsIDE2LCAyMTksIDczLCA2MCwgMzEsIDE2LCAyMTEsIDg0LCAyNTAsIDE2NCwgNjAsIDMxLCAxNiwgCi0gICAgMjE5LCAxOTEsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMDYsIDcyLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjUwLCAxNjUsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyNTAsIDE1OSwgNjAsIDMxLCAxNiwgMjI5LCAzOCwgNjAsIDMxLCAxNiwgMjE2LCA2OSwgCi0gICAgNjAsIDMxLCAxNiwgMjE4LCAxNjUsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMDgsIDIxNywgNjAsIDMxLCAxNiwgMjUwLCAKLSAgICAyMjksIDYwLCAzMSwgMTYsIDIxNCwgMTUzLCA2MCwgMzEsIDE2LCAyMTAsIDk3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgCi0gICAgMjEwLCA5NywgMjI0LCAyMjEsIDIxMSwgODIsIDYwLCAzMSwgMTYsIDIxOSwgMTg2LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgCi0gICAgMjA5LCA4NiwgNjAsIDMxLCAxNiwgMjI3LCAyMDAsIDYwLCAzMSwgMTYsIDI0MiwgMiwgNjAsIDMxLCAxNiwgMjA4LCA4NywgCi0gICAgNjAsIDMxLCAxNiwgMjA5LCAxMzQsIDYwLCAzMSwgMTYsIDIyOCwgMjI5LCA2MCwgMzEsIDE2LCAyNTAsIDE3MSwgMjQwLCAKLSAgICAyMDYsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIzMSwgNjIsIDYwLCAKLSAgICAzMSwgMTYsIDIwOCwgNTcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjksIDIyNCwgMjA4LCA1NiwgNjAsIDMxLCAxNiwgCi0gICAgMjE5LCAxMSwgNjAsIDMxLCAxNiwgMjE3LCAxOTksIDYwLCAzMSwgMTYsIDIyOSwgNywgNjAsIDMxLCAxNiwgMjQ2LCAxMTAsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMTYsIDE3NywgNjAsIDMxLCAxNiwgMjE5LCA4NiwgMjUwLCAxMjQsIDYwLCAzMSwgCi0gICAgMTYsIDIxOSwgODQsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzUsIDE2MCwgNjAsIDMxLCAxNiwgMjIzLCA4MiwgNjAsIDMxLCAKLSAgICAxNiwgMjE4LCAyMTcsIDYwLCAzMSwgMTYsIDIyOSwgOCwgMjUxLCA5LCA2MCwgMzEsIDE2LCAyMDgsIDU3LCAyNTEsIDksIAotICAgIDYwLCAzMSwgMTYsIDIxMSwgNTUsIDYwLCAzMSwgMTYsIDIzNywgMjQwLCA2MCwgMzEsIDE2LCAyMzAsIDIwNiwgMjIyLCAKLSAgICAyMjYsIDYwLCAzMSwgMTYsIDIyMCwgNDIsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjIyLCAyMjYsIDYwLCAKLSAgICAzMSwgMTYsIDIxOCwgMjE2LCA2MCwgMzEsIDE2LCAyMjgsIDI0OCwgNjAsIDMxLCAxNiwgMjE4LCAyMTUsIDYwLCAzMSwgMTYsIAotICAgIDIyOCwgMjI4LCA2MCwgMzEsIDE2LCAyMTksIDEyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAKLSAgICAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjI5LCAxNzgsIDIyMiwgMjI3LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjAyLCAyMTcsIAotICAgIDYwLCAzMSwgMTYsIDI1MCwgMTYyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjUwLCAxNjMsIDIxMCwgOTQsIDIyMiwgMjI2LCAKLSAgICA2MCwgMzEsIDE2LCAyMDIsIDIxOCwgNjAsIDMxLCAxNiwgMjI4LCAyMjcsIDYwLCAzMSwgMTYsIDI0MSwgMTIxLCA2MCwgMzEsIAotICAgIDE2LCAyNDYsIDE5MSwgNjAsIDMxLCAxNiwgMjI0LCAxMjIsIDIzMCwgMjA1LCA2MCwgMzEsIDE2LCAyMDYsIDczLCAyMjIsIAotICAgIDIyNiwgNjAsIDMxLCAxNiwgMjE4LCAxNjUsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTcsIDIwMCwgMjIyLCAyMjYsIDYwLCAKLSAgICAzMSwgMTYsIDIyMCwgMzgsIDYwLCAzMSwgMTYsIDI1MCwgMTg5LCA2MCwgMzEsIDE2LCAyMjYsIDE5NSwgNjAsIDMxLCAxNiwgCi0gICAgMjE5LCA4NCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIxOSwgODYsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDAsIDI0NCwgCi0gICAgMjE5LCA4NSwgNjAsIDMxLCAxNiwgMjI4LCAxMzUsIDYwLCAzMSwgMTYsIDI1MCwgMTkwLCA2MCwgMzEsIDE2LCAyMDgsIDU3LCAKLSAgICAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQxLCAxMjQsIDYwLCAzMSwgMTYsIDIxMCwgOTcsIDIyMiwgMjI2LCA2MCwgMzEsIAotICAgIDE2LCAyMTAsIDg3LCA2MCwgMzEsIDE2LCAyNDYsIDExMCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MSwgNDMsIDYwLCAzMSwgCi0gICAgMTYsIDIxNCwgMTU0LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjAzLCAxNjMsIDIyOSwgMzgsIDYwLCAzMSwgMTYsIDIwOCwgCi0gICAgNTQsIDYwLCAzMSwgMTYsIDIxNywgMjAxLCA2MCwgMzEsIDE2LCAyMDgsIDU4LCA2MCwgMzEsIDE2LCAyMDgsIDU1LCA2MCwgCi0gICAgMzEsIDE2LCAyMTcsIDE5OCwgNjAsIDMxLCAxNiwgMjA4LCA1MywgNjAsIDMxLCAxNiwgMjE3LCAxOTcsIDYwLCAzMSwgMTYsIAotICAgIDIzOCwgMjIsIDYwLCAzMSwgMTYsIDI1MCwgMTE2LCA2MCwgMzEsIDE2LCAyNDAsIDI0NCwgMjUwLCAxMTYsIDYwLCAzMSwgCi0gICAgMTYsIDIxOSwgMTg2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjA5LCA4NSwgMjQxLCAxLCA2MCwgMzEsIDE2LCAyMDksIDg1LCAKLSAgICAyNDAsIDIwNSwgNjAsIDMxLCAxNiwgMjA5LCA4NywgMjUwLCAxNjYsIDYwLCAzMSwgMTYsIDIwOSwgNzksIDIzMCwgMTksIAotICAgIDI1MCwgMTU4LCA2MCwgMzEsIDE2LCAyMjksIDIyMywgNjAsIDMxLCAxNiwgMjQxLCA4MCwgNjAsIDMxLCAxNiwgMjAzLCAxNCwgCi0gICAgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIwMywgMTQsIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyMTEsIDgzLCA2MCwgMzEsIDE2LCAKLSAgICAyMjksIDM5LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjQzLCAxNzIsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgCi0gICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIyOCwgMjMwLCAyNTEsIDksIDYwLCAzMSwgMTYsIDIyOCwgMjMwLCAyMjIsIDIyNiwgCi0gICAgNjAsIDMxLCAxNiwgMjUwLCAxNjUsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNTAsIDE2NywgNjAsIDMxLCAxNiwgMjQzLCAKLSAgICAxNzEsIDYwLCAzMSwgMTYsIDIwOCwgNjgsIDYwLCAzMSwgMTYsIDIwOSwgMTI1LCA2MCwgMzEsIDE2LCAyMjgsIDI1MiwgNjAsIAotICAgIDMxLCAxNiwgMjI3LCAyMDUsIDI0MSwgNzMsIDI0NiwgMTAwLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjQyLCAzLCAyNDYsIAotICAgIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIwOCwgNzEsIDI0NiwgMTAxLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjA5LCAKLSAgICAxMzYsIDI0NiwgMTAxLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjMxLCA1NywgMjQ2LCAxMDAsIDYwLCAzMSwgMTYsIDIzOCwgCi0gICAgMjMsIDIyMiwgMjI3LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjM4LCAyMywgMjE5LCA3NCwgMjUwLCAxMTIsIDYwLCAzMSwgCi0gICAgMTYsIDIzOCwgMjMsIDIxOSwgNzQsIDI0NCwgNiwgNjAsIDMxLCAxNiwgMjQzLCAxOTYsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAKLSAgICAyMTksIDc0LCAyNTAsIDExMywgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAyMTksIDc0LCAyNTAsIDExMywgCi0gICAgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAyMTksIDc0LCAyNDQsIDYsIDYwLCAzMSwgMTYsIDIwOCwgNzYsIDYwLCAKLSAgICAzMSwgMTYsIDI1MCwgMTE3LCA2MCwgMzEsIDE2LCAyMzEsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxOSwgNjAsIDMxLCAxNiwgCi0gICAgMjUxLCA3NSwgMjE4LCA1MiwgMjUwLCAxMTgsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDI1MCwgMTE1LCA2MCwgMzEsIDE2LCAKLSAgICAyNTEsIDc1LCAyNTAsIDExOCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjI0LCAyMTUsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIAotICAgIDIyNCwgMjI2LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyMzgsIDI0LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyMzgsIDIxLCA2MCwgCi0gICAgMzEsIDE2LCAyNTEsIDc1LCAyMTgsIDUyLCAyMzgsIDI0LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMTcsIDIwNywgMjM1LCAKLSAgICAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDI1MSwgMTEsIDIxNywgMjA3LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCAKLSAgICA4NCwgMjQ0LCA1LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjUxLCAxMSwgMjQ0LCA1LCAyMzUsIDE1OCwgNjAsIAotICAgIDMxLCAxNiwgMjI1LCA4NCwgMjA4LCA2MywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIwOCwgNzcsIDYwLCAzMSwgCi0gICAgMTYsIDIyNSwgODQsIDIwOSwgMTMwLCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjA5LCAxMzAsIDIyNywgMjA5LCAKLSAgICAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjI3LCAyMDksIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAKLSAgICAyMTgsIDk1LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjMwLCAyMTMsIDIwOSwgMTU2LCAyMzUsIDE1OSwgNjAsIDMxLCAxNiwgCi0gICAgMjUwLCAxNjMsIDIwOSwgMTU2LCAyMzUsIDE1OSwgNjAsIDMxLCAxNiwgMjQwLCA4MCwgMjA5LCAxMjcsIDYwLCAzMSwgMTYsIAotICAgIDI0MCwgODAsIDIyNCwgNDYsIDYwLCAzMSwgMTYsIDI0MCwgODAsIDI0MywgMjAyLCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAKLSAgICAyMDYsIDY2LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjE3LCAyMDYsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAKLSAgICAyMjUsIDg0LCAyMTgsIDk1LCAyMDksIDEzMCwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzOCwgMTksIDIyMywgMTY0LCAyNTAsIAotICAgIDE2NiwgNjAsIDMxLCAxNiwgMjM4LCAxOSwgMjIzLCAxNjQsIDI0MywgMTcwLCA2MCwgMzEsIDE2LCAyNDEsIDkwLCAyMzAsIAotICAgIDE5LCAyMzksIDExMCwgMjA1LCAxNzEsIDYwLCAzMSwgMTYsIDIzMSwgNjMsIDYwLCAzMSwgMTYsIDIzMSwgNjEsIDYwLCAzMSwgCi0gICAgMTYsIDIzOSwgMTEwLCAyNTAsIDEyNSwgMjQ0LCA0LCAyMzUsIDE1NywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAKLSAgICAxODUsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjIzLCA4MiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIyMywgCi0gICAgNzcsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDI0MywgMjMzLCA2MCwgMzEsIDE2LCAyMzksIAotICAgIDExMCwgMjEyLCA2NCwgMjQzLCAyMTYsIDI0MywgMjMzLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyOSwgCi0gICAgMjAxLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIwMiwgMTcsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIAotICAgIDIxNywgMjIyLCAxMDEsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyMiwgMTAxLCAyNTAsIAotICAgIDIwMiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIyNSwgMTI4LCAyNDYsIDEwMiwgMjQzLCAyMDIsIDYwLCAzMSwgMTYsIDIzOSwgCi0gICAgMTEwLCAyMjUsIDEyOCwgMjQ2LCAxMDIsIDIyNCwgNDYsIDYwLCAzMSwgMTYsIDI0MCwgMjcsIDIxMiwgNjQsIDI0NiwgMTAyLCAKLSAgICAyMDYsIDY1LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjEyLCA2NCwgMjQ2LCAxMDIsIDIxMCwgOTgsIDYwLCAzMSwgMTYsIAotICAgIDIzOSwgMTEwLCAyMjIsIDIyOSwgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIDIwMSwgMjQxLCA2MCwgMzEsIDE2LCAyNDYsIDEwMywgCi0gICAgMjI5LCAzNywgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIDIxMSwgMjE5LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjM1LCAyMDYsIAotICAgIDIwMywgMTMsIDIwOSwgMTMxLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQxLCA5MSwgMjUwLCAxOTEsIDYwLCAzMSwgMTYsIAotICAgIDIwMywgMTMsIDIwOCwgNjQsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyMDgsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgCi0gICAgMjA5LCAxMzEsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyNTAsIDE2OCwgMjQyLCAzLCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgCi0gICAgMjQzLCAyMTAsIDIyNCwgNDQsIDIwOSwgMTM1LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIDI0MywgMTkzLCAKLSAgICAyNDAsIDIxOCwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyMDgsIDc0LCAyMjAsIDQ4LCAyNDMsIDEwNSwgNjAsIAotICAgIDMxLCAxNiwgMjAzLCAxMywgMjUwLCAxNjgsIDI0MiwgMywgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDIyNCwgCi0gICAgNDQsIDIwOSwgMTM1LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjAzLCAxMywgMjQzLCAxOTMsIDI0MCwgMjE4LCAyNDMsIAotICAgIDEwNSwgNjAsIDMxLCAxNiwgMjAzLCAxMywgMjA4LCA3NCwgMjIwLCA0OCwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIzOCwgCi0gICAgMTc1LCAyNDMsIDIwOSwgNjAsIDMxLCAxNiwgMjM4LCAxNzUsIDIwMywgMTIsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyNTAsIAotICAgIDE2OCwgMjI0LCAxMjMsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyNTAsIDE2OCwgMjI0LCAyNTUsIDYwLCAzMSwgMTYsIDI0MywgCi0gICAgMjE4LCAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjQzLCAyMTgsIDIwOSwgNzcsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIAotICAgIDc3LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCA3OCwgMjQzLCAxNTUsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIAotICAgIDc4LCAyMDgsIDY1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCA3OCwgMjA5LCAxMjMsIDYwLCAzMSwgMTYsIDIxMiwgCi0gICAgMTMwLCAyNTAsIDg4LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjUwLCA4OSwgMjQzLCAxNTUsIDYwLCAzMSwgMTYsIDIxMiwgCi0gICAgMTMwLCAyNTAsIDg5LCAyMDgsIDY1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjUwLCA4OSwgMjA5LCAxMjMsIDYwLCAzMSwgCi0gICAgMTYsIDI0MywgMTk0LCAyMzgsIDE1NiwgNjAsIDMxLCAxNiwgMjQzLCAyMDEsIDIxOSwgMjE2LCA2MCwgMzEsIDE2LCAyMTEsIAotICAgIDcxLCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMTg1LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjA1LCAxNzEsIDYwLCAzMSwgCi0gICAgMTYsIDI1MCwgMTA5LCAyMzksIDgsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjUwLCAKLSAgICAxMDksIDIyOSwgMjAxLCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjAyLCAxNywgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIyMiwgCi0gICAgMTAwLCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjIyLCAyMjcsIDIyNCwgMjI1LCA2MCwgMzEsIDE2LCAyMjksIDE3OCwgMjIyLCAKLSAgICAyMjcsIDIyNCwgMjI1LCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjIyLCAyMjcsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMjksIAotICAgIDE3OCwgMjIyLCAyMjcsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMjksIDM5LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjM4LCAKLSAgICAyMywgMjIyLCAyMjcsIDIyOSwgMjIwLCAzMSwgMTYsIDIxMiwgMTIwLCAyNDgsIDIyNiwgMzEsIDE2LCA1MiwgMjQ4LCAyMjYsIAotICAgIDMxLCAxNiwgNDYsIDI0OCwgMjI2LCAzMSwgMTYsIDIxNiwgNzQsIDQ2LCAyNDgsIDIyNiwgMzEsIDE2LCAyNDQsIDE0MywgCi0gICAgMjQ4LCAyMjYsIDMxLCAxNiwgMjEyLCAyMjgsIDI0OCwgMjI2LCAzMSwgMTYsIDQ5LCAyMTYsIDEwMSwgNTQsIDMxLCAxNiwgCi0gICAgNTAsIDIxNiwgMTAxLCA1NCwgMzEsIDE2LCAyMTYsIDEwMSwgMjQzLCA4MywgMzEsIDE2LCAyNDQsIDE4NSwgMjE0LCAxNTcsIAotICAgIDMxLCAxNiwgMjQ0LCAyMTMsIDI0NywgNDUsIDMxLCAxNiwgMjE0LCAxNTcsIDMxLCAxNiwgMjQ1LCAyNTAsIDMxLCAxNiwgCi0gICAgMjE2LCA5OSwgMjQwLCAxNSwgMzEsIDE2LCAyMTYsIDk5LCAyNDAsIDE0LCAzMSwgMTYsIDIxNiwgOTksIDI0MCwgMTMsIDMxLCAKLSAgICAxNiwgMjQwLCAzNiwgMzEsIDE2LCAyNDAsIDM3LCA1NiwgMzEsIDE2LCAyNDcsIDIxNiwgODIsIDMxLCAxNiwgMjQ3LCA4MiwgCi0gICAgMzEsIDE2LCAyNDcsIDIyOCwgMzEsIDE2LCAxNTUsIDMxLCAxNiwgMjIwLCAyOCwgMjExLCAxMDIsIDMxLCAxNiwgMjA3LCAKLSAgICAxMzMsIDIxMSwgMTAyLCAzMSwgMTYsIDIwOSwgMjksIDIxMSwgMTAyLCAzMSwgMTYsIDIzOSwgMTQ2LCAyMTEsIDEwMiwgMzEsIAotICAgIDE2LCAyMzksIDIzMiwgMjExLCAxMDIsIDMxLCAxNiwgMjEyLCA4NywgMjExLCAxMDIsIDMxLCAxNiwgMjEyLCA4NSwgMjM5LCAKLSAgICAxMjcsIDMxLCAxNiwgMjM5LCAxNDQsIDIzOSwgMTI3LCAzMSwgMTYsIDIzOSwgNzYsIDI0NiwgMzAsIDMxLCAxNiwgMjM5LCAKLSAgICA3NiwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI1MSwgMCwgMzEsIDE2LCAyMzksIDc2LCAyNDYsIDMxLCAyMTksIDIxOCwgMjQ4LCAKLSAgICAyMTEsIDMxLCAxNiwgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAxNiwgMjQwLCAxNzUsIDI0NiwgMzAsIDMxLCAxNiwgMjQwLCAKLSAgICAxNzUsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNTEsIDAsIDMxLCAxNiwgMjQwLCAxNzUsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNDgsIAotICAgIDIxMSwgMzEsIDE2LCAyNDIsIDQ3LCAyNDYsIDI5LCAzMSwgMTYsIDI0MiwgNDcsIDI0NiwgMjgsIDMxLCAxNiwgMjIzLCAKLSAgICAyMjYsIDIyNSwgMTksIDIxNiwgODUsIDMxLCAxNiwgNTIsIDIxMywgNTYsIDMxLCAxNiwgNTIsIDIzOSwgMjE2LCAzMSwgMTYsIAotICAgIDIzOSwgMjE3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMzksIDIxNywgMjQyLCA3MCwgMzEsIDE2LCAyMjMsIDY2LCAyMDYsIDIyNCwgCi0gICAgMzEsIDE2LCAyMjMsIDY2LCAyNDIsIDcwLCAzMSwgMTYsIDIxMywgNTcsIDIwNiwgMjI0LCAzMSwgMTYsIDIxMywgNTcsIAotICAgIDI0MiwgNzAsIDMxLCAxNiwgMjE3LCA1NiwgMTQzLCAyMTMsIDU2LCAzMSwgMTYsIDIxNywgNTYsIDE0MywgMjM5LCAyMTYsIAotICAgIDMxLCAxNiwgMjQ1LCAyMzAsIDIwOCwgMjIxLCAzMSwgMTYsIDI0NSwgNzgsIDIwOCwgMjIxLCAzMSwgMTYsIDIxOSwgMjE4LCAKLSAgICAyNTEsIDAsIDMxLCAxNiwgMjE5LCAyMTgsIDI0OCwgMjExLCAzMSwgMTYsIDIxNywgMzcsIDI1MSwgMCwgMzEsIDE2LCAyMTcsIAotICAgIDM3LCAyNDgsIDIxMSwgMzEsIDE2LCAyMjMsIDIyOSwgMjE2LCA4NSwgMzEsIDE2LCAyMDQsIDMxLCAyMTYsIDg1LCAzMSwgCi0gICAgMTYsIDE2MiwgMjE2LCA4NSwgMzEsIDE2LCAyMTcsIDU2LCAyMTYsIDg1LCAzMSwgMTYsIDI0MSwgMTM5LCAyMTYsIDg1LCAKLSAgICAzMSwgMTYsIDIxMiwgODEsIDIxNiwgODUsIDMxLCAxNiwgMjA5LCA1MSwgMjE2LCA4NSwgMzEsIDE2LCAyMTIsIDczLCAyMTYsIAotICAgIDg1LCAzMSwgMTYsIDExOCwgMjM2LCAxMiwgMjA3LCAxNDksIDIxNiwgODUsIDMxLCAxNiwgMjAzLCAxOTcsIDIyMSwgMTU2LCAKLSAgICAzMSwgMTYsIDkxLCAyMjEsIDE1NiwgMzEsIDE2LCAyNDYsIDYyLCAyMDMsIDE5NywgMjIxLCAxNTYsIDMxLCAxNiwgNTEsIAotICAgIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgMTYsIDUxLCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIAotICAgIDE1NywgMTEyLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAxMTIsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCAKLSAgICA4NiwgMjIxLCAxNTcsIDQ5LCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA0OSwgMjQ4LCA0MywgMzEsIAotICAgIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNTAsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDUwLCAyNDgsIAotICAgIDQzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAxMjEsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIAotICAgIDEyMSwgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTEyLCA1MCwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIAotICAgIDg2LCAyMjEsIDE1NywgMTEyLCA1MCwgMjQ4LCA0MywgMzEsIDE2LCAyMjQsIDMwLCAyMjEsIDE1NywgMjA0LCAzMywgMzEsIAotICAgIDE2LCAyMjQsIDMwLCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDgzLCAyMjEsIDE1NywgMTIxLCAyMDQsIDMzLCAKLSAgICAzMSwgMTYsIDIwOCwgODMsIDIyMSwgMTU3LCAxMjEsIDI0OCwgNDMsIDMxLCAxNiwgMjE5LCA3NywgMjIxLCAxNTYsIDMxLCAKLSAgICAxNiwgMjA1LCAxODMsIDIyMSwgMTU2LCAzMSwgMTYsIDIyMSwgMTU3LCAyNDgsIDQzLCAzMSwgMTYsIDIyMSwgNDksIDIyMSwgCi0gICAgMTU2LCAzMSwgMTYsIDI0NiwgMSwgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAxNiwgMjQ2LCAxLCAyMjEsIDE1NywgMjQ4LCAKLSAgICA0MywgMzEsIDE2LCAyNDcsIDIxNCwgMzEsIDE2LCAyMDQsIDMxLCAyMjEsIDE2MCwgMzEsIDE2LCAxNjIsIDIyMSwgMTYwLCAKLSAgICAzMSwgMTYsIDIxNywgNTYsIDIyMSwgMTYwLCAzMSwgMTYsIDI0MSwgMTM5LCAyMjEsIDE2MCwgMzEsIDE2LCAyMTIsIDgxLCAKLSAgICAyMjEsIDE2MCwgMzEsIDE2LCAyMDksIDUxLCAyMjEsIDE2MCwgMzEsIDE2LCAyMTIsIDczLCAyMjEsIDE2MCwgMzEsIDE2LCAKLSAgICAxMTgsIDIzNiwgMTIsIDIwNywgMTQ5LCAyMjEsIDE2MCwgMzEsIDE2LCAzOSwgMjExLCA3NywgMzEsIDE2LCAzOSwgMjExLCAKLSAgICAxODQsIDIxMSwgNzcsIDMxLCAxNiwgMzksIDIwOCwgOTQsIDMxLCAxNiwgMzksIDIwOCwgOTMsIDMxLCAxNiwgMzksIDIwOCwgCi0gICAgOTIsIDMxLCAxNiwgMjQwLCAwLCAyMDgsIDk0LCAzMSwgMTYsIDI0MCwgMCwgMjA4LCA5MywgMzEsIDE2LCAyNDAsIDAsIAotICAgIDIwOCwgOTIsIDMxLCAxNiwgMzksIDI1MCwgMzEsIDI0MywgODUsIDMxLCAxNiwgMzksIDIzOSwgMjI0LCAzMSwgMTYsIDM5LCAKLSAgICAyMzksIDIyMywgMzEsIDE2LCAzOSwgMjM5LCAyMjIsIDMxLCAxNiwgMzksIDIzOSwgMjIxLCAzMSwgMTYsIDM5LCAyMzksIAotICAgIDIyMCwgMzEsIDE2LCAyNDgsIDE0MiwgMjQ4LCAxNTksIDMxLCAxNiwgMjQxLCA4NCwgMjQ4LCAxNTksIDMxLCAxNiwgMjQ4LCAKLSAgICAxNDIsIDIwOCwgMjUwLCAzMSwgMTYsIDI0MSwgODQsIDIwOCwgMjUwLCAzMSwgMTYsIDI0OCwgMTQyLCAyMTIsIDM3LCAzMSwgCi0gICAgMTYsIDI0MSwgODQsIDIxMiwgMzcsIDMxLCAxNiwgMjQ4LCAxNDIsIDIxOCwgMTc0LCAzMSwgMTYsIDI0MSwgODQsIDIxOCwgCi0gICAgMTc0LCAzMSwgMTYsIDM5LCAyNTEsIDEzOCwgMzEsIDE2LCAzOSwgMjExLCAxMDUsIDMxLCAxNiwgMzksIDIwOSwgMTQwLCAKLSAgICAzMSwgMTYsIDM5LCAyMTEsIDEwNiwgMzEsIDE2LCAzOSwgMjI1LCA5NiwgMzEsIDE2LCAzOSwgMjI1LCA5NSwgMzEsIDE2LCAKLSAgICAzOSwgMjUxLCAxMzcsIDMxLCAxNiwgMzksIDIyNywgMiwgMzEsIDE2LCAyNTAsIDEwMCwgMjA2LCAyMjQsIDMxLCAxNiwgCi0gICAgMjUwLCAxMDAsIDI0MiwgNzAsIDMxLCAxNiwgMzksIDI0MywgMTAwLCAzMSwgMTYsIDM5LCAyMTUsIDI0OSwgMzEsIDE2LCAKLSAgICAzOSwgMjM5LCAyMDYsIDMxLCAxNiwgMzksIDIxMiwgMzMsIDMxLCAxNiwgMzksIDI0OCwgMTIwLCAzMSwgMTYsIDM5LCA1MiwgCi0gICAgMjA4LCAxNTAsIDMxLCAxNiwgMzksIDIwOCwgNzAsIDIwOCwgMTUwLCAzMSwgMTYsIDIxNSwgMjU0LCAzMSwgMTYsIDIxMSwgCi0gICAgMCwgMzEsIDE2LCAyMDIsIDE1OSwgMzEsIDE2LCAyMTgsIDE2NiwgMzEsIDE2LCAyMjQsIDIwNiwgMzEsIDE2LCAyMzksIAotICAgIDE1NSwgMzEsIDE2LCAyNDUsIDE0MCwgMzEsIDE2LCAyNDQsIDYyLCAzMSwgMTYsIDIzOCwgMTQsIDIyMSwgMTYxLCAyMTIsIAotICAgIDU3LCAzMSwgMTYsIDIzOCwgMTQsIDIyMSwgMTYxLCAyMjEsIDE5MiwgMjEyLCA1NywgMzEsIDE2LCAyMDgsIDEyMCwgMzEsIAotICAgIDE2LCAyMDcsIDE3NSwgMzEsIDE2LCAyMzAsIDIzOSwgMjA3LCAxNzUsIDMxLCAxNiwgMjA3LCAxNzYsIDIxMiwgNTcsIDMxLCAKLSAgICAxNiwgMjA3LCAxNzYsIDIwNiwgMjI0LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDMxLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIAotICAgIDI4LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI3LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI2LCAzMSwgMTYsIDIxOSwgCi0gICAgMjM0LCAyMTEsIDI1LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI0LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDIzLCAzMSwgCi0gICAgMTYsIDIxOSwgMjM0LCAyMTEsIDIyLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDIxLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIAotICAgIDMwLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI5LCAzMSwgMTYsIDIzNywgNzUsIDMxLCAxNiwgMjIyLCAyMzgsIDMxLCAxNiwgCi0gICAgMjQxLCA4NCwgNzYsIDIxMSwgNjcsIDMxLCAxNiwgMjQ0LCA1NSwgMjEyLCA1NywgMzEsIDE2LCAzOSwgMTIxLCAyNDcsIAotICAgIDI0MCwgMzEsIDE2LCAzOSwgMTEyLCAyNDcsIDI0MCwgMzEsIDE2LCAzOSwgMjM3LCA4OCwgMzEsIDE2LCAzOSwgMjEyLCAyMywgCi0gICAgMjE4LCA5OSwgMzEsIDE2LCAyMTksIDI4LCA4MiwgMzEsIDE2LCAyMTksIDI4LCAxMTIsIDgyLCAzMSwgMTYsIDE2MiwgMjE5LCAKLSAgICAyOCwgODIsIDMxLCAxNiwgMjM4LCA0NywgMjA2LCAyMjQsIDMxLCAxNiwgMjM4LCA0NywgMjQyLCA3MCwgMzEsIDE2LCAzLCAKLSAgICAyMzksIDI1NSwgMzEsIDE2LCAyNDQsIDE2OCwgMzEsIDE2LCAyNDQsIDE2OSwgMjUxLCAxNCwgMzEsIDE2LCAyMjUsIDY1LCAKLSAgICAzMSwgMTYsIDIyNywgMjAsIDMxLCAxNiwgMjQ3LCAyMTEsIDMxLCAxNiwgMjEzLCAxNDcsIDIwNCwgMzMsIDMxLCAxNiwgCi0gICAgMjEzLCAxNDcsIDI0OCwgNDMsIDMxLCAxNiwgMjI0LCAxMDYsIDMxLCAxNiwgMjI0LCAxMDcsIDI0OCwgNDMsIDMxLCAxNiwgCi0gICAgMjEzLCAxNDEsIDIwNCwgMzMsIDMxLCAxNiwgMjEzLCAxNDEsIDI0OCwgNDMsIDMxLCAxNiwgMjM5LCA5MywgMjA0LCAzMywgCi0gICAgMzEsIDE2LCAyMzksIDkzLCAyNDgsIDQzLCAzMSwgMTYsIDIyNywgMjEsIDIxOCwgMjQ0LCAyMTYsIDg1LCAzMSwgMTYsIAotICAgIDIyNywgMjEsIDIzMSwgNTQsIDIxNiwgODUsIDMxLCAxNiwgMjQ3LCAyMTIsIDIxNiwgODUsIDMxLCAxNiwgMjEzLCAxNDcsIAotICAgIDIxNiwgODUsIDMxLCAxNiwgMjI0LCAxMDcsIDIxNiwgODUsIDMxLCAxNiwgMjEzLCAxNDEsIDIxNiwgODUsIDMxLCAxNiwgCi0gICAgMjA5LCAxNTQsIDIxOCwgMjQyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIxOCwgMjQzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMTgsIAotICAgIDI0MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDUzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMTgsIDI0MiwgMjQ1LCAxMDQsIAotICAgIDIxNywgMjE2LCAyMTgsIDI0NCwgMjQzLCAxODEsIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIAotICAgIDIxNiwgMjE4LCAyNDMsIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1MywgCi0gICAgMzEsIDE2LCAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE4MSwgMzEsIDE2LCAKLSAgICAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE4MCwgMzEsIDE2LCAyMDksIAotICAgIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE3OSwgMzEsIDE2LCAyNDUsIDEzMywgCi0gICAgMzEsIDE2LCAyMzcsIDI0MywgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAxNiwgMjM3LCAyNDMsIDI0MCwgMTc1LCAyNDYsIDMwLCAKLSAgICAzMSwgMTYsIDUxLCAyNDksIDI1NSwgMzEsIDE2LCAyMDUsIDIwMywgMzEsIDE2LCAyMTgsIDY2LCAzMSwgMTYsIDI0NiwgMjEsIAotICAgIDMxLCAxNiwgMjE0LCAyMDAsIDMxLCAxNiwgMjQ2LCAyNSwgMzEsIDE2LCAyMDgsIDEzOCwgMzEsIDE2LCAyMTgsIDM2LCAzMSwgCi0gICAgMTYsIDIxOCwgMzcsIDIzOSwgMjA5LCAzMSwgMTYsIDIxNCwgMjAxLCAyMzksIDIwOSwgMzEsIDE2LCAyMDgsIDEzOSwgMjE2LCAKLSAgICA4MiwgMzEsIDE2LCAyMTgsIDIyNSwgMjEwLCAyNDcsIDMxLCAxNiwgMjI5LCA5MCwgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAKLSAgICAxNiwgMjI5LCA5MCwgMjQxLCA4NCwgNzYsIDIxOCwgMTU5LCAzMSwgMTYsIDIyOSwgOTAsIDQ2LCAyMjEsIDE2MCwgMzEsIAotICAgIDE2LCAyMjksIDkwLCAyMTYsIDE1MCwgODIsIDMxLCAxNiwgMjI5LCA5MCwgMjA0LCAzMSwgMjIxLCAxNjAsIDMxLCAxNiwgCi0gICAgMjI5LCA5MCwgMTYyLCAyMjEsIDE2MCwgMzEsIDE2LCAyMjksIDkwLCAyMTcsIDU2LCAyMjEsIDE2MSwgMjExLCA3OCwgMjQyLCAKLSAgICA3MCwgMzEsIDE2LCAyMjksIDkwLCAyMTcsIDU2LCAyMjEsIDE2MSwgMjExLCA3OCwgMjA2LCAyMjQsIDMxLCAxNiwgMjI5LCAKLSAgICA5MCwgMjQxLCAxMzksIDIyMSwgMTYxLCAyMTEsIDc4LCAyNDIsIDcwLCAzMSwgMTYsIDIyOSwgOTAsIDI0MSwgMTM5LCAyMjEsIAotICAgIDE2MSwgMjExLCA3OCwgMjA2LCAyMjQsIDMxLCAxNiwgMjI5LCA5MCwgMjM5LCAyMTcsIDU0LCAzMCwgMjA1LCAxODgsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDE0OCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTI3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEyMCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxMTIsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA2LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNSwgCi0gICAgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDQsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTAzLCAzMCwgCi0gICAgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDYsIDMwLCAyMDUsIAotICAgIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ1LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NCwgMzAsIDIwNSwgMTg4LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxNDMsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQyLCAzMCwgMjA1LCAxODgsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDE0MSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDAsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTM5LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzOCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxMzYsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM1LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNCwgCi0gICAgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzMsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTMyLCAzMCwgCi0gICAgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDExMSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMTAsIDMwLCAyMDUsIAotICAgIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA5LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwOCwgMzAsIDIwNSwgMTg4LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxMDcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0OCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTM3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExMiwgCi0gICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDQsIDMwLCAyMzEsIAotICAgIDUsIDIyMSwgMTY0LCAyMTAsIDE0NiwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTQ1LCAzMCwgMjMxLCA1LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxNDQsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0MywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTQwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzOCwgMzAsIAotICAgIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzIsIDMwLCAyMzEsIDUsIAotICAgIDIyMSwgMTY0LCAyMTAsIDEzMSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMjksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyOCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI2LCAKLSAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjUsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNCwgMzAsIDIzMSwgCi0gICAgNSwgMjIxLCAxNjQsIDIxMCwgMTIzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjIsIDMwLCAyMzEsIDUsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDEyMSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxMTgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE2LCAzMCwgCi0gICAgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTUsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNCwgMzAsIDIzMSwgNSwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTEzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDExMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDgsIAotICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNywgMzksIDMwLCAzMSwgMjA4LCA2NiwgMzksIDMwLCAzMSwgMjA5LCAKLSAgICAxMjQsIDM5LCAzMCwgMzEsIDIxOCwgMjUzLCAzMCwgMzEsIDIyNywgMjA0LCAyMjQsIDQ1LCAzNSwgMjQxLCAxNzksIDI0MywgCi0gICAgMTk1LCAzNSwgMjM3LCA1MCwgMjQxLCAxNzksIDI0MywgMTk1LCAzNSwgMjM2LCAxNiwgMjQxLCAxNzksIDI0MywgMTk1LCAKLSAgICAzNSwgMjQxLCAxNzgsIDIzNywgNTEsIDI0MywgMTk1LCAzNSwgMjQxLCAxNzgsIDIzNiwgMTUsIDI0MywgMTk1LCAzNSwgCi0gICAgMjQxLCAxNzksIDIwOSwgMTI2LCAzNSwgMjQ2LCAyMTcsIDIwOSwgMTI2LCAzNSwgMjM5LCAxMDIsIDI0NiwgNjEsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjI0LCA5OCwgMjA5LCAxMjYsIDM1LCAyNDgsIDIyMSwgMjA5LCAxMjYsIDM1LCAyMjksIDE5NSwgMjEyLCAKLSAgICAzNiwgMjA5LCAxMjYsIDM1LCAyNDUsIDE4NSwgMjA5LCAxMjYsIDM1LCAyNTAsIDc3LCAyMDksIDEyNiwgMzUsIDIxOSwgCi0gICAgMjUwLCAyMDksIDEyNiwgMzUsIDI0NywgMjIxLCAyMTksIDIxMSwgMjA5LCAxMjYsIDM1LCAyNDQsIDU3LCAyMTksIDI0NSwgCi0gICAgMjQzLCAxNDgsIDIwOSwgMTI2LCAzNSwgMjQzLCAxNDUsIDIwOSwgMTI2LCAzNSwgMjAyLCAyMjUsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjMxLCA0MCwgMjA5LCAxMjYsIDM1LCAyMTksIDcsIDIwOSwgMTI2LCAzNSwgMjE2LCAxNTcsIDIwOSwgMTI2LCAzNSwgMjQ1LCAKLSAgICAxOTcsIDIwOSwgMTI2LCAzNSwgMjM2LCAxMjcsIDI0OSwgMjUsIDIwOSwgMTI2LCAzNSwgMjA0LCAxMDMsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjM5LCAxODEsIDIwOSwgMTI2LCAzNSwgMjUxLCAxMTIsIDIwOSwgMTI2LCAzNSwgMjE2LCAxMTQsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjE2LCA4OSwgMjA5LCAxMjYsIDM1LCAyNDEsIDE3NywgMjA5LCAxMjYsIDM1LCAyMzAsIDg1LCAyMDksIDEyNiwgMzUsIAotICAgIDI0NSwgMTkyLCAyMDksIDEyNiwgMzUsIDI0MSwgODMsIDIwOSwgMTI2LCAzNSwgMjQyLCAxNSwgMjA5LCAxMjYsIDM1LCAKLSAgICAyNDYsIDE4NiwgMjA5LCAxMjYsIDM1LCAyNDQsIDY3LCAyMDksIDEyNiwgMzUsIDI2LCAyMTYsIDg4LCAyMDksIDEyNiwgMzUsIAotICAgIDIxOSwgMTYwLCAyMDksIDEyNiwgMzUsIDIyNywgMjA4LCAyMDksIDEyNiwgMzUsIDI0NiwgMTQsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjI5LCA4MCwgMjA5LCAxMjYsIDM1LCAyMzgsIDIxNCwgMjA5LCAxMjYsIDM1LCAyMTEsIDQzLCAyMDksIDEyNiwgMzUsIAotICAgIDIxNywgMTY4LCAyMDksIDEyNiwgMzUsIDIzOSwgMTAxLCAyMDksIDEyNiwgMzUsIDIxNiwgOTAsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjI3LCAyNDcsIDIxOSwgMjQ1LCAyMjQsIDc4LCAyMDksIDEyNiwgMzUsIDIxNiwgODYsIDIwOSwgMTI2LCAzNSwgMjM4LCAKLSAgICAzMywgMjA4LCAxNzMsIDIyNSwgMywgMjA5LCAxMjYsIDM1LCAyNDEsIDg1LCAyMDksIDEyNiwgMzUsIDIxMSwgNTYsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjM3LCAyNDUsIDIwOSwgMTI2LCAzNSwgMjQxLCA3NiwgMjA5LCAxMjYsIDM1LCAyMTksIDUwLCAyMDksIAotICAgIDEyNiwgMzUsIDIxNSwgMjQyLCAyMDksIDEyNiwgMzUsIDIzOSwgMjA3LCAyMDksIDEyNiwgMzUsIDIwNiwgNjQsIDIxOSwgCi0gICAgMjQ1LCAyMDQsIDg0LCAyMDksIDEyNiwgMzUsIDI0NSwgMjAyLCAyMDksIDEyNiwgMzUsIDIyNSwgMTgsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjQwLCAyNDUsIDIwOSwgMTI2LCAzNSwgMjA2LCAyMzQsIDIwOSwgMTI2LCAzNSwgMjQzLCAxODIsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjQ2LCAxNiwgMjI0LCA3LCAyMDksIDEyNiwgMzUsIDIzNywgMjIyLCAyMDksIDEyNiwgMzUsIDIzOCwgMjE1LCAyMzEsIAotICAgIDQ5LCAyMDksIDEyNiwgMzUsIDIyNSwgNzMsIDIwOSwgMTI2LCAzNSwgMjUxLCAxMzMsIDIwOSwgMTI2LCAzNSwgMjQxLCAKLSAgICAxMDEsIDIwOSwgMTI2LCAzNSwgMjQyLCA3NCwgMjA5LCAxMjYsIDM1LCAyMDQsIDgyLCAyMDksIDEyNiwgMzUsIDIxMiwgCi0gICAgMTE1LCAyMDksIDEyNiwgMzUsIDIzMSwgMTQsIDIwOSwgMTI2LCAzNSwgMjQ0LCAyNSwgMjA5LCAxMjYsIDM1LCAyNDQsIAotICAgIDE0OCwgMjA5LCAxMjYsIDM1LCAyNDMsIDE3OCwgMjA5LCAxMjYsIDM1LCAyNDAsIDIwOSwgMjA5LCAxMjYsIDM1LCAyMTMsIAotICAgIDEwNCwgMjA5LCAxMjYsIDM1LCAyMTEsIDYwLCAyMDksIDEyNiwgMzUsIDIzNywgOTAsIDIwOSwgMTI2LCAzNSwgMjQ1LCAKLSAgICAyMjYsIDIwOSwgMTI2LCAzNSwgMjQ2LCAxMSwgMjA5LCAxMjYsIDM1LCAyNDAsIDg3LCAyMDksIDEyNiwgMzUsIDI1MSwgNzYsIAotICAgIDIwOSwgMTI2LCAzNSwgMjQ1LCAyMjUsIDIwOSwgMTI2LCAzNSwgMjIwLCAzMiwgMjA5LCA5MywgMjA2LCA0MSwgMjA5LCAKLSAgICAxMjYsIDM1LCAyNDMsIDIwNCwgMjA5LCAxMjYsIDM1LCAyMjgsIDEwMSwgMjA5LCAxMjYsIDM1LCAyMzksIDE1MCwgMjQ1LCAKLSAgICAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDEwNSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDEwOCwgCi0gICAgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDE0NywgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIAotICAgIDE0OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDE3MCwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgCi0gICAgMTcsIDE5NSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDIxMywgMTExLCAyNDUsIDE1MywgMjE1LCAyMTcsIAotICAgIDIwNiwgMjM2LCAxNywgMTk5LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMjIyLCA2MywgMjQ1LCAxNTMsIAotICAgIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDEwNSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDEwOCwgMjQ1LCAKLSAgICAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE0NywgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE0OSwgCi0gICAgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE3MCwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIAotICAgIDE5NSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDIxMywgMTExLCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgCi0gICAgMTQ4LCAxNywgMTk5LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMjIyLCA2MywgMTMsIDI2LCA2LCA2MywgCi0gICAgMTMsIDI2LCA2LCAyNDksIDI1NSwgMTMsIDI2LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCA2LCAyNDUsIDUxLCAxMywgMjYsIDYsIAotICAgIDc0LCAxMywgMjYsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDYsIDIzOSwgNzUsIDEzLCAyNiwgNiwgMjM3LCAxNzEsIDEzLCAyNiwgCi0gICAgNiwgNzUsIDEzLCAyNiwgNiwgMjMwLCAxODQsIDEzLCAyNiwgNiwgMjMwLCA1NCwgMTMsIDI2LCA2LCAxNTksIDEzLCAyNiwgCi0gICAgNiwgMjI2LCAxODUsIDEzLCAyNiwgNiwgMjIzLCAxNjMsIDEzLCAyNiwgNiwgNzgsIDEzLCAyNiwgNiwgMjE5LCAxODQsIDEzLCAKLSAgICAyNiwgNiwgMjE3LCAxMzQsIDEzLCAyNiwgNiwgMTQ2LCAxMywgMjYsIDYsIDE5NCwgMTMsIDI2LCA2LCAyMTAsIDY5LCAxMywgCi0gICAgMjYsIDYsIDY4LCAxMywgMjYsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDYsIDIwNCwgMTQ0LCAxMywgMjYsIDYsIDIwMywgMTk2LCAKLSAgICAxMywgMjYsIDYsIDIwMywgMTI0LCAxMywgMjYsIDYsIDIwMiwgMTU5LCAxMywgMjYsIDUsIDYzLCAxMywgMjYsIDUsIDI0OSwgCi0gICAgMjU1LCAxMywgMjYsIDUsIDI0NywgMTI1LCAxMywgMjYsIDUsIDI0NSwgNTEsIDEzLCAyNiwgNSwgNzQsIDEzLCAyNiwgNSwgCi0gICAgMjQwLCAxNzQsIDEzLCAyNiwgNSwgMjM5LCA3NSwgMTMsIDI2LCA1LCAyMzcsIDE3MSwgMTMsIDI2LCA1LCA3NSwgMTMsIDI2LCAKLSAgICA1LCAyMzAsIDE4NCwgMTMsIDI2LCA1LCAyMzAsIDU0LCAxMywgMjYsIDUsIDE1OSwgMTMsIDI2LCA1LCAyMjYsIDE4NSwgMTMsIAotICAgIDI2LCA1LCAyMjMsIDE2MywgMTMsIDI2LCA1LCA3OCwgMTMsIDI2LCA1LCAyMTksIDE4NCwgMTMsIDI2LCA1LCAyMTcsIDEzNCwgCi0gICAgMTMsIDI2LCA1LCAxNDYsIDEzLCAyNiwgNSwgMTk0LCAxMywgMjYsIDUsIDIxMCwgNjksIDEzLCAyNiwgNSwgNjgsIDEzLCAKLSAgICAyNiwgNSwgMjA2LCAxNjQsIDEzLCAyNiwgNSwgMjA0LCAxNDQsIDEzLCAyNiwgNSwgMjAzLCAxOTYsIDEzLCAyNiwgNSwgCi0gICAgMjAzLCAxMjQsIDEzLCAyNiwgNSwgMjAyLCAxNTksIDEzLCAzNywgNiwgNjMsIDEzLCAzNywgNiwgMjQ5LCAyNTUsIDEzLCAKLSAgICAzNywgNiwgMjQ3LCAxMjUsIDEzLCAzNywgNiwgMjQ1LCA1MSwgMTMsIDM3LCA2LCA3NCwgMTMsIDM3LCA2LCAyNDAsIDE3NCwgCi0gICAgMTMsIDM3LCA2LCAyMzksIDc1LCAxMywgMzcsIDYsIDIzNywgMTcxLCAxMywgMzcsIDYsIDc1LCAxMywgMzcsIDYsIDIzMCwgCi0gICAgMTg0LCAxMywgMzcsIDYsIDIzMCwgNTQsIDEzLCAzNywgNiwgMTU5LCAxMywgMzcsIDYsIDIyNiwgMTg1LCAxMywgMzcsIDYsIAotICAgIDIyMywgMTYzLCAxMywgMzcsIDYsIDc4LCAxMywgMzcsIDYsIDIxOSwgMTg0LCAxMywgMzcsIDYsIDIxNywgMTM0LCAxMywgCi0gICAgMzcsIDYsIDE0NiwgMTMsIDM3LCA2LCAxOTQsIDEzLCAzNywgNiwgMjEwLCA2OSwgMTMsIDM3LCA2LCA2OCwgMTMsIDM3LCA2LCAKLSAgICAyMDYsIDE2NCwgMTMsIDM3LCA2LCAyMDQsIDE0NCwgMTMsIDM3LCA2LCAyMDMsIDE5NiwgMTMsIDM3LCA2LCAyMDMsIDEyNCwgCi0gICAgMTMsIDM3LCA2LCAyMDIsIDE1OSwgMTMsIDM3LCA1LCA2MywgMTMsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDM3LCA1LCAyNDcsIAotICAgIDEyNSwgMTMsIDM3LCA1LCAyNDUsIDUxLCAxMywgMzcsIDUsIDc0LCAxMywgMzcsIDUsIDI0MCwgMTc0LCAxMywgMzcsIDUsIAotICAgIDIzOSwgNzUsIDEzLCAzNywgNSwgNzUsIDEzLCAzNywgNSwgMjMwLCAxODQsIDEzLCAzNywgNSwgMjMwLCA1NCwgMTMsIDM3LCAKLSAgICA1LCAxNTksIDEzLCAzNywgNSwgMjI2LCAxODUsIDEzLCAzNywgNSwgMjIzLCAxNjMsIDEzLCAzNywgNSwgNzgsIDEzLCAzNywgCi0gICAgNSwgMjE5LCAxODQsIDEzLCAzNywgNSwgMjE3LCAxMzQsIDEzLCAzNywgNSwgMTQ2LCAxMywgMzcsIDUsIDE5NCwgMTMsIDM3LCAKLSAgICA1LCAyMTAsIDY5LCAxMywgMzcsIDUsIDY4LCAxMywgMzcsIDUsIDIwNiwgMTY0LCAxMywgMzcsIDUsIDIwNCwgMTQ0LCAxMywgCi0gICAgMzcsIDUsIDIwMywgMTk2LCAxMywgMzcsIDUsIDIwMywgMTI0LCAxMywgMzcsIDUsIDIwMiwgMTU5LCAxMywgMjYsIDM3LCA2LCAKLSAgICA2MywgMTMsIDI2LCAzNywgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMzcsIDYsIDI0NywgMTI1LCAxMywgMjYsIDM3LCA2LCAyNDUsIAotICAgIDUxLCAxMywgMjYsIDM3LCA2LCA3NCwgMTMsIDI2LCAzNywgNiwgMjQwLCAxNzQsIDEzLCAyNiwgMzcsIDYsIDIzOSwgNzUsIAotICAgIDEzLCAyNiwgMzcsIDYsIDIzNywgMTcxLCAxMywgMjYsIDM3LCA2LCA3NSwgMTMsIDI2LCAzNywgNiwgMjMwLCAxODQsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMzcsIDYsIDE1OSwgMTMsIDI2LCAzNywgNiwgMjI2LCAxODUsIDEzLCAyNiwgCi0gICAgMzcsIDYsIDIyMywgMTYzLCAxMywgMjYsIDM3LCA2LCA3OCwgMTMsIDI2LCAzNywgNiwgMjE5LCAxODQsIDEzLCAyNiwgMzcsIAotICAgIDYsIDIxNywgMTM0LCAxMywgMjYsIDM3LCA2LCAxNDYsIDEzLCAyNiwgMzcsIDYsIDE5NCwgMTMsIDI2LCAzNywgNiwgMjEwLCAKLSAgICA2OSwgMTMsIDI2LCAzNywgNiwgNjgsIDEzLCAyNiwgMzcsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDM3LCA2LCAyMDQsIDE0NCwgCi0gICAgMTMsIDI2LCAzNywgNiwgMjAzLCAxOTYsIDEzLCAyNiwgMzcsIDYsIDIwMywgMTI0LCAxMywgMjYsIDM3LCA2LCAyMDIsIAotICAgIDE1OSwgMTMsIDI2LCAzNywgNSwgNjMsIDEzLCAyNiwgMzcsIDUsIDI0OSwgMjU1LCAxMywgMjYsIDM3LCA1LCAyNDcsIDEyNSwgCi0gICAgMTMsIDI2LCAzNywgNSwgMjQ1LCA1MSwgMTMsIDI2LCAzNywgNSwgNzQsIDEzLCAyNiwgMzcsIDUsIDI0MCwgMTc0LCAxMywgCi0gICAgMjYsIDM3LCA1LCAyMzksIDc1LCAxMywgMjYsIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDI2LCAzNywgNSwgNzUsIDEzLCAyNiwgCi0gICAgMzcsIDUsIDIzMCwgMTg0LCAxMywgMjYsIDM3LCA1LCAyMzAsIDU0LCAxMywgMjYsIDM3LCA1LCAxNTksIDEzLCAyNiwgMzcsIAotICAgIDUsIDIyNiwgMTg1LCAxMywgMjYsIDM3LCA1LCAyMjMsIDE2MywgMTMsIDI2LCAzNywgNSwgNzgsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIxOSwgMTg0LCAxMywgMjYsIDM3LCA1LCAyMTcsIDEzNCwgMTMsIDI2LCAzNywgNSwgMTQ2LCAxMywgMjYsIDM3LCA1LCAKLSAgICAxOTQsIDEzLCAyNiwgMzcsIDUsIDIxMCwgNjksIDEzLCAyNiwgMzcsIDUsIDY4LCAxMywgMjYsIDM3LCA1LCAyMDYsIDE2NCwgCi0gICAgMTMsIDI2LCAzNywgNSwgMjA0LCAxNDQsIDEzLCAyNiwgMzcsIDUsIDIwMywgMTk2LCAxMywgMjYsIDM3LCA1LCAyMDMsIAotICAgIDEyNCwgMTMsIDI2LCAzNywgNSwgMjAyLCAxNTksIDEzLCAxMzIsIDYsIDYzLCAxMywgMTMyLCA2LCAyNDcsIDEyNSwgMTMsIAotICAgIDEzMiwgNiwgMjQ1LCA1MSwgMTMsIDEzMiwgNiwgMjM5LCA3NSwgMTMsIDEzMiwgNiwgMjMwLCAxODQsIDEzLCAxMzIsIDYsIAotICAgIDIzMCwgNTQsIDEzLCAxMzIsIDYsIDIyMywgMTYzLCAxMywgMTMyLCA2LCA3OCwgMTMsIDEzMiwgNiwgMjE5LCAxODQsIDEzLCAKLSAgICAxMzIsIDYsIDIxNywgMTM0LCAxMywgMTMyLCA2LCAxOTQsIDEzLCAxMzIsIDYsIDIxMCwgNjksIDEzLCAxMzIsIDYsIDY4LCAKLSAgICAxMywgMTMyLCA2LCAyMDYsIDE2NCwgMTMsIDEzMiwgNiwgMjA0LCAxNDQsIDEzLCAxMzIsIDYsIDIwMywgMTk2LCAxMywgCi0gICAgMTMyLCA2LCAyMDMsIDEyNCwgMTMsIDEzMiwgNiwgMjAyLCAxNTksIDEzLCAxMzIsIDUsIDYzLCAxMywgMTMyLCA1LCAyNDksIAotICAgIDI1NSwgMTMsIDEzMiwgNSwgMjQ3LCAxMjUsIDEzLCAxMzIsIDUsIDI0NSwgNTEsIDEzLCAxMzIsIDUsIDI0MCwgMTc0LCAxMywgCi0gICAgMTMyLCA1LCAyMzcsIDE3MSwgMTMsIDEzMiwgNSwgNzUsIDEzLCAxMzIsIDUsIDIzMCwgMTg0LCAxMywgMTMyLCA1LCAyMzAsIAotICAgIDU0LCAxMywgMTMyLCA1LCAxNTksIDEzLCAxMzIsIDUsIDIyNiwgMTg1LCAxMywgMTMyLCA1LCAyMjMsIDE2MywgMTMsIDEzMiwgCi0gICAgNSwgMjE5LCAxODQsIDEzLCAxMzIsIDUsIDIxNywgMTM0LCAxMywgMTMyLCA1LCAxNDYsIDEzLCAxMzIsIDUsIDE5NCwgMTMsIAotICAgIDEzMiwgNSwgMjEwLCA2OSwgMTMsIDEzMiwgNSwgNjgsIDEzLCAxMzIsIDUsIDIwNiwgMTY0LCAxMywgMTMyLCA1LCAyMDQsIAotICAgIDE0NCwgMTMsIDEzMiwgNSwgMjAzLCAxOTYsIDEzLCAxMzIsIDUsIDIwMywgMTI0LCAxMywgMTMyLCA1LCAyMDIsIDE1OSwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDYzLCAxMywgMjYsIDEzMiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMTMyLCA2LCAyNDcsIDEyNSwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDI0NSwgNTEsIDEzLCAyNiwgMTMyLCA2LCA3NCwgMTMsIDI2LCAxMzIsIDYsIDI0MCwgMTc0LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjM5LCA3NSwgMTMsIDI2LCAxMzIsIDYsIDIzNywgMTcxLCAxMywgMjYsIDEzMiwgNiwgNzUsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMzAsIDE4NCwgMTMsIDI2LCAxMzIsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMTMyLCA2LCAxNTksIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMjYsIDE4NSwgMTMsIDI2LCAxMzIsIDYsIDIyMywgMTYzLCAxMywgMjYsIDEzMiwgNiwgNzgsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMTksIDE4NCwgMTMsIDI2LCAxMzIsIDYsIDIxNywgMTM0LCAxMywgMjYsIDEzMiwgNiwgMTQ2LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMTk0LCAxMywgMjYsIDEzMiwgNiwgMjEwLCA2OSwgMTMsIDI2LCAxMzIsIDYsIDY4LCAxMywgMjYsIAotICAgIDEzMiwgNiwgMjA2LCAxNjQsIDEzLCAyNiwgMTMyLCA2LCAyMDQsIDE0NCwgMTMsIDI2LCAxMzIsIDYsIDIwMywgMTk2LCAxMywgCi0gICAgMjYsIDEzMiwgNiwgMjAzLCAxMjQsIDEzLCAyNiwgMTMyLCA2LCAyMDIsIDE1OSwgMTMsIDI2LCAxMzIsIDUsIDYzLCAxMywgCi0gICAgMjYsIDEzMiwgNSwgMjQ5LCAyNTUsIDEzLCAyNiwgMTMyLCA1LCAyNDcsIDEyNSwgMTMsIDI2LCAxMzIsIDUsIDI0NSwgNTEsIAotICAgIDEzLCAyNiwgMTMyLCA1LCA3NCwgMTMsIDI2LCAxMzIsIDUsIDI0MCwgMTc0LCAxMywgMjYsIDEzMiwgNSwgMjM5LCA3NSwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIzNywgMTcxLCAxMywgMjYsIDEzMiwgNSwgNzUsIDEzLCAyNiwgMTMyLCA1LCAyMzAsIDE4NCwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIzMCwgNTQsIDEzLCAyNiwgMTMyLCA1LCAxNTksIDEzLCAyNiwgMTMyLCA1LCAyMjYsIDE4NSwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIyMywgMTYzLCAxMywgMjYsIDEzMiwgNSwgNzgsIDEzLCAyNiwgMTMyLCA1LCAyMTksIDE4NCwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIxNywgMTM0LCAxMywgMjYsIDEzMiwgNSwgMTQ2LCAxMywgMjYsIDEzMiwgNSwgMTk0LCAxMywgCi0gICAgMjYsIDEzMiwgNSwgMjEwLCA2OSwgMTMsIDI2LCAxMzIsIDUsIDY4LCAxMywgMjYsIDEzMiwgNSwgMjA2LCAxNjQsIDEzLCAKLSAgICAyNiwgMTMyLCA1LCAyMDQsIDE0NCwgMTMsIDI2LCAxMzIsIDUsIDIwMywgMTk2LCAxMywgMjYsIDEzMiwgNSwgMjAzLCAxMjQsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMDIsIDE1OSwgMTMsIDE2NiwgNiwgNjMsIDEzLCAxNjYsIDYsIDI0OSwgMjU1LCAxMywgMTY2LCAKLSAgICA2LCAyNDUsIDUxLCAxMywgMTY2LCA2LCA3NCwgMTMsIDE2NiwgNiwgMjQwLCAxNzQsIDEzLCAxNjYsIDYsIDIzOSwgNzUsIAotICAgIDEzLCAxNjYsIDYsIDIzMCwgMTg0LCAxMywgMTY2LCA2LCAyMzAsIDU0LCAxMywgMTY2LCA2LCAxNTksIDEzLCAxNjYsIDYsIAotICAgIDIyNiwgMTg1LCAxMywgMTY2LCA2LCAyMjMsIDE2MywgMTMsIDE2NiwgNiwgNzgsIDEzLCAxNjYsIDYsIDIxOSwgMTg0LCAxMywgCi0gICAgMTY2LCA2LCAyMTcsIDEzNCwgMTMsIDE2NiwgNiwgMTk0LCAxMywgMTY2LCA2LCAyMTAsIDY5LCAxMywgMTY2LCA2LCA2OCwgCi0gICAgMTMsIDE2NiwgNiwgMjA2LCAxNjQsIDEzLCAxNjYsIDYsIDIwNCwgMTQ0LCAxMywgMTY2LCA2LCAyMDMsIDE5NiwgMTMsIAotICAgIDE2NiwgNiwgMjAzLCAxMjQsIDEzLCAxNjYsIDUsIDYzLCAxMywgMTY2LCA1LCAyNDksIDI1NSwgMTMsIDE2NiwgNSwgMjQ3LCAKLSAgICAxMjUsIDEzLCAxNjYsIDUsIDI0NSwgNTEsIDEzLCAxNjYsIDUsIDc0LCAxMywgMTY2LCA1LCAyNDAsIDE3NCwgMTMsIDE2NiwgCi0gICAgNSwgMjM5LCA3NSwgMTMsIDE2NiwgNSwgMjM3LCAxNzEsIDEzLCAxNjYsIDUsIDc1LCAxMywgMTY2LCA1LCAyMzAsIDE4NCwgCi0gICAgMTMsIDE2NiwgNSwgMjMwLCA1NCwgMTMsIDE2NiwgNSwgMTU5LCAxMywgMTY2LCA1LCAyMjYsIDE4NSwgMTMsIDE2NiwgNSwgCi0gICAgMjIzLCAxNjMsIDEzLCAxNjYsIDUsIDc4LCAxMywgMTY2LCA1LCAyMTksIDE4NCwgMTMsIDE2NiwgNSwgMjE3LCAxMzQsIDEzLCAKLSAgICAxNjYsIDUsIDE0NiwgMTMsIDE2NiwgNSwgMTk0LCAxMywgMTY2LCA1LCAyMTAsIDY5LCAxMywgMTY2LCA1LCA2OCwgMTMsIAotICAgIDE2NiwgNSwgMjA2LCAxNjQsIDEzLCAxNjYsIDUsIDIwNCwgMTQ0LCAxMywgMTY2LCA1LCAyMDMsIDE5NiwgMTMsIDE2NiwgNSwgCi0gICAgMjAzLCAxMjQsIDEzLCAxNjYsIDUsIDIwMiwgMTU5LCAxMywgMTY5LCA2LCA2MywgMTMsIDE2OSwgNiwgMjQ5LCAyNTUsIDEzLCAKLSAgICAxNjksIDYsIDI0NSwgNTEsIDEzLCAxNjksIDYsIDc0LCAxMywgMTY5LCA2LCAyNDAsIDE3NCwgMTMsIDE2OSwgNiwgMjM5LCAKLSAgICA3NSwgMTMsIDE2OSwgNiwgNzUsIDEzLCAxNjksIDYsIDIzMCwgMTg0LCAxMywgMTY5LCA2LCAyMzAsIDU0LCAxMywgMTY5LCAKLSAgICA2LCAxNTksIDEzLCAxNjksIDYsIDIyNiwgMTg1LCAxMywgMTY5LCA2LCA3OCwgMTMsIDE2OSwgNiwgMTk0LCAxMywgMTY5LCAKLSAgICA2LCAyMTAsIDY5LCAxMywgMTY5LCA2LCA2OCwgMTMsIDE2OSwgNiwgMjA2LCAxNjQsIDEzLCAxNjksIDYsIDIwNCwgMTQ0LCAKLSAgICAxMywgMTY5LCA2LCAyMDMsIDE5NiwgMTMsIDE2OSwgNiwgMjAzLCAxMjQsIDEzLCAxNjksIDUsIDYzLCAxMywgMTY5LCA1LCAKLSAgICAyNDksIDI1NSwgMTMsIDE2OSwgNSwgMjQ3LCAxMjUsIDEzLCAxNjksIDUsIDI0NSwgNTEsIDEzLCAxNjksIDUsIDc0LCAxMywgCi0gICAgMTY5LCA1LCAyNDAsIDE3NCwgMTMsIDE2OSwgNSwgMjM5LCA3NSwgMTMsIDE2OSwgNSwgMjM3LCAxNzEsIDEzLCAxNjksIDUsIAotICAgIDc1LCAxMywgMTY5LCA1LCAyMzAsIDE4NCwgMTMsIDE2OSwgNSwgMjMwLCA1NCwgMTMsIDE2OSwgNSwgMTU5LCAxMywgMTY5LCAKLSAgICA1LCAyMjYsIDE4NSwgMTMsIDE2OSwgNSwgMjIzLCAxNjMsIDEzLCAxNjksIDUsIDc4LCAxMywgMTY5LCA1LCAyMTksIDE4NCwgCi0gICAgMTMsIDE2OSwgNSwgMjE3LCAxMzQsIDEzLCAxNjksIDUsIDE0NiwgMTMsIDE2OSwgNSwgMTk0LCAxMywgMTY5LCA1LCAyMTAsIAotICAgIDY5LCAxMywgMTY5LCA1LCA2OCwgMTMsIDE2OSwgNSwgMjA2LCAxNjQsIDEzLCAxNjksIDUsIDIwNCwgMTQ0LCAxMywgMTY5LCAKLSAgICA1LCAyMDMsIDE5NiwgMTMsIDE2OSwgNSwgMjAzLCAxMjQsIDEzLCAxNjksIDUsIDIwMiwgMTU5LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgNjMsIDEzLCAyNiwgMTY2LCA2LCAyNDksIDI1NSwgMTMsIDI2LCAxNjYsIDYsIDI0NywgMTI1LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjQ1LCA1MSwgMTMsIDI2LCAxNjYsIDYsIDc0LCAxMywgMjYsIDE2NiwgNiwgMjQwLCAxNzQsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMzksIDc1LCAxMywgMjYsIDE2NiwgNiwgMjM3LCAxNzEsIDEzLCAyNiwgMTY2LCA2LCA3NSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIzMCwgMTg0LCAxMywgMjYsIDE2NiwgNiwgMjMwLCA1NCwgMTMsIDI2LCAxNjYsIDYsIDE1OSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIyNiwgMTg1LCAxMywgMjYsIDE2NiwgNiwgMjIzLCAxNjMsIDEzLCAyNiwgMTY2LCA2LCA3OCwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIxOSwgMTg0LCAxMywgMjYsIDE2NiwgNiwgMjE3LCAxMzQsIDEzLCAyNiwgMTY2LCA2LCAxNDYsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAxOTQsIDEzLCAyNiwgMTY2LCA2LCAyMTAsIDY5LCAxMywgMjYsIDE2NiwgNiwgNjgsIDEzLCAyNiwgMTY2LCA2LCAyMDYsIAotICAgIDE2NCwgMTMsIDI2LCAxNjYsIDYsIDIwNCwgMTQ0LCAxMywgMjYsIDE2NiwgNiwgMjAzLCAxOTYsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMDMsIDEyNCwgMTMsIDI2LCAxNjYsIDYsIDIwMiwgMTU5LCAxMywgMjYsIDE2NiwgNSwgNjMsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyNDksIDI1NSwgMTMsIDI2LCAxNjYsIDUsIDI0NywgMTI1LCAxMywgMjYsIDE2NiwgNSwgMjQ1LCA1MSwgMTMsIDI2LCAxNjYsIAotICAgIDUsIDc0LCAxMywgMjYsIDE2NiwgNSwgMjQwLCAxNzQsIDEzLCAyNiwgMTY2LCA1LCAyMzksIDc1LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjM3LCAxNzEsIDEzLCAyNiwgMTY2LCA1LCA3NSwgMTMsIDI2LCAxNjYsIDUsIDIzMCwgMTg0LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjMwLCA1NCwgMTMsIDI2LCAxNjYsIDUsIDE1OSwgMTMsIDI2LCAxNjYsIDUsIDIyNiwgMTg1LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjIzLCAxNjMsIDEzLCAyNiwgMTY2LCA1LCA3OCwgMTMsIDI2LCAxNjYsIDUsIDIxOSwgMTg0LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjE3LCAxMzQsIDEzLCAyNiwgMTY2LCA1LCAxNDYsIDEzLCAyNiwgMTY2LCA1LCAxOTQsIDEzLCAyNiwgMTY2LCA1LCAyMTAsIAotICAgIDY5LCAxMywgMjYsIDE2NiwgNSwgNjgsIDEzLCAyNiwgMTY2LCA1LCAyMDYsIDE2NCwgMTMsIDI2LCAxNjYsIDUsIDIwNCwgCi0gICAgMTQ0LCAxMywgMjYsIDE2NiwgNSwgMjAzLCAxOTYsIDEzLCAyNiwgMTY2LCA1LCAyMDMsIDEyNCwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIwMiwgMTU5LCAxMywgNDEsIDYsIDYzLCAxMywgNDEsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDYsIDI0NywgMTI1LCAxMywgCi0gICAgNDEsIDYsIDI0NSwgNTEsIDEzLCA0MSwgNiwgNzQsIDEzLCA0MSwgNiwgMjQwLCAxNzQsIDEzLCA0MSwgNiwgMjM5LCA3NSwgCi0gICAgMTMsIDQxLCA2LCAyMzcsIDE3MSwgMTMsIDQxLCA2LCA3NSwgMTMsIDQxLCA2LCAyMzAsIDE4NCwgMTMsIDQxLCA2LCAyMzAsIAotICAgIDU0LCAxMywgNDEsIDYsIDE1OSwgMTMsIDQxLCA2LCAyMjYsIDE4NSwgMTMsIDQxLCA2LCAyMjMsIDE2MywgMTMsIDQxLCA2LCAKLSAgICA3OCwgMTMsIDQxLCA2LCAyMTksIDE4NCwgMTMsIDQxLCA2LCAyMTcsIDEzNCwgMTMsIDQxLCA2LCAxNDYsIDEzLCA0MSwgNiwgCi0gICAgMTk0LCAxMywgNDEsIDYsIDIxMCwgNjksIDEzLCA0MSwgNiwgNjgsIDEzLCA0MSwgNiwgMjA2LCAxNjQsIDEzLCA0MSwgNiwgCi0gICAgMjA0LCAxNDQsIDEzLCA0MSwgNiwgMjAzLCAxOTYsIDEzLCA0MSwgNiwgMjAzLCAxMjQsIDEzLCA0MSwgNiwgMjAyLCAxNTksIAotICAgIDEzLCA0MSwgNSwgNjMsIDEzLCA0MSwgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgNSwgMjQ1LCAKLSAgICA1MSwgMTMsIDQxLCA1LCA3NCwgMTMsIDQxLCA1LCAyNDAsIDE3NCwgMTMsIDQxLCA1LCAyMzksIDc1LCAxMywgNDEsIDUsIAotICAgIDIzNywgMTcxLCAxMywgNDEsIDUsIDc1LCAxMywgNDEsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDUsIDIzMCwgNTQsIDEzLCA0MSwgCi0gICAgNSwgMTU5LCAxMywgNDEsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDUsIDIyMywgMTYzLCAxMywgNDEsIDUsIDc4LCAxMywgNDEsIAotICAgIDUsIDIxOSwgMTg0LCAxMywgNDEsIDUsIDIxNywgMTM0LCAxMywgNDEsIDUsIDE0NiwgMTMsIDQxLCA1LCAxOTQsIDEzLCA0MSwgCi0gICAgNSwgMjEwLCA2OSwgMTMsIDQxLCA1LCA2OCwgMTMsIDQxLCA1LCAyMDYsIDE2NCwgMTMsIDQxLCA1LCAyMDQsIDE0NCwgMTMsIAotICAgIDQxLCA1LCAyMDMsIDE5NiwgMTMsIDQxLCA1LCAyMDMsIDEyNCwgMTMsIDQxLCA1LCAyMDIsIDE1OSwgMTMsIDQxLCAyNiwgNiwgCi0gICAgNjMsIDEzLCA0MSwgMjYsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCA2LCAyNDcsIDEyNSwgMTMsIDQxLCAyNiwgNiwgMjQ1LCAKLSAgICA1MSwgMTMsIDQxLCAyNiwgNiwgNzQsIDEzLCA0MSwgMjYsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDI2LCA2LCAyMzksIDc1LCAKLSAgICAxMywgNDEsIDI2LCA2LCAyMzcsIDE3MSwgMTMsIDQxLCAyNiwgNiwgNzUsIDEzLCA0MSwgMjYsIDYsIDIzMCwgMTg0LCAxMywgCi0gICAgNDEsIDI2LCA2LCAyMzAsIDU0LCAxMywgNDEsIDI2LCA2LCAxNTksIDEzLCA0MSwgMjYsIDYsIDIyNiwgMTg1LCAxMywgNDEsIAotICAgIDI2LCA2LCAyMjMsIDE2MywgMTMsIDQxLCAyNiwgNiwgNzgsIDEzLCA0MSwgMjYsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDI2LCAKLSAgICA2LCAyMTcsIDEzNCwgMTMsIDQxLCAyNiwgNiwgMTQ2LCAxMywgNDEsIDI2LCA2LCAxOTQsIDEzLCA0MSwgMjYsIDYsIDIxMCwgCi0gICAgNjksIDEzLCA0MSwgMjYsIDYsIDY4LCAxMywgNDEsIDI2LCA2LCAyMDYsIDE2NCwgMTMsIDQxLCAyNiwgNiwgMjA0LCAxNDQsIAotICAgIDEzLCA0MSwgMjYsIDYsIDIwMywgMTk2LCAxMywgNDEsIDI2LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAyNiwgNiwgMjAyLCAKLSAgICAxNTksIDEzLCA0MSwgMjYsIDUsIDYzLCAxMywgNDEsIDI2LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgNSwgMjQ3LCAxMjUsIAotICAgIDEzLCA0MSwgMjYsIDUsIDI0NSwgNTEsIDEzLCA0MSwgMjYsIDUsIDc0LCAxMywgNDEsIDI2LCA1LCAyNDAsIDE3NCwgMTMsIAotICAgIDQxLCAyNiwgNSwgMjM5LCA3NSwgMTMsIDQxLCAyNiwgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDUsIDc1LCAxMywgNDEsIAotICAgIDI2LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAyNiwgNSwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgNSwgMTU5LCAxMywgNDEsIDI2LCAKLSAgICA1LCAyMjYsIDE4NSwgMTMsIDQxLCAyNiwgNSwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDUsIDc4LCAxMywgNDEsIDI2LCA1LCAKLSAgICAyMTksIDE4NCwgMTMsIDQxLCAyNiwgNSwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDUsIDE0NiwgMTMsIDQxLCAyNiwgNSwgCi0gICAgMTk0LCAxMywgNDEsIDI2LCA1LCAyMTAsIDY5LCAxMywgNDEsIDI2LCA1LCA2OCwgMTMsIDQxLCAyNiwgNSwgMjA2LCAxNjQsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgNSwgMjAzLCAKLSAgICAxMjQsIDEzLCA0MSwgMjYsIDUsIDIwMiwgMTU5LCAxMywgNDEsIDM3LCA2LCA2MywgMTMsIDQxLCAzNywgNiwgMjQ5LCAyNTUsIAotICAgIDEzLCA0MSwgMzcsIDYsIDI0NywgMTI1LCAxMywgNDEsIDM3LCA2LCAyNDUsIDUxLCAxMywgNDEsIDM3LCA2LCA3NCwgMTMsIAotICAgIDQxLCAzNywgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMzcsIDYsIDIzOSwgNzUsIDEzLCA0MSwgMzcsIDYsIDIzNywgMTcxLCAxMywgCi0gICAgNDEsIDM3LCA2LCA3NSwgMTMsIDQxLCAzNywgNiwgMjMwLCAxODQsIDEzLCA0MSwgMzcsIDYsIDIzMCwgNTQsIDEzLCA0MSwgCi0gICAgMzcsIDYsIDE1OSwgMTMsIDQxLCAzNywgNiwgMjI2LCAxODUsIDEzLCA0MSwgMzcsIDYsIDIyMywgMTYzLCAxMywgNDEsIDM3LCAKLSAgICA2LCA3OCwgMTMsIDQxLCAzNywgNiwgMjE5LCAxODQsIDEzLCA0MSwgMzcsIDYsIDIxNywgMTM0LCAxMywgNDEsIDM3LCA2LCAKLSAgICAxNDYsIDEzLCA0MSwgMzcsIDYsIDE5NCwgMTMsIDQxLCAzNywgNiwgMjEwLCA2OSwgMTMsIDQxLCAzNywgNiwgNjgsIDEzLCAKLSAgICA0MSwgMzcsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDM3LCA2LCAyMDQsIDE0NCwgMTMsIDQxLCAzNywgNiwgMjAzLCAxOTYsIAotICAgIDEzLCA0MSwgMzcsIDYsIDIwMywgMTI0LCAxMywgNDEsIDM3LCA2LCAyMDIsIDE1OSwgMTMsIDQxLCAzNywgNSwgNjMsIDEzLCAKLSAgICA0MSwgMzcsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDM3LCA1LCAyNDcsIDEyNSwgMTMsIDQxLCAzNywgNSwgMjQ1LCA1MSwgMTMsIAotICAgIDQxLCAzNywgNSwgNzQsIDEzLCA0MSwgMzcsIDUsIDI0MCwgMTc0LCAxMywgNDEsIDM3LCA1LCAyMzksIDc1LCAxMywgNDEsIAotICAgIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDQxLCAzNywgNSwgNzUsIDEzLCA0MSwgMzcsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDM3LCAKLSAgICA1LCAyMzAsIDU0LCAxMywgNDEsIDM3LCA1LCAxNTksIDEzLCA0MSwgMzcsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDM3LCA1LCAKLSAgICAyMjMsIDE2MywgMTMsIDQxLCAzNywgNSwgNzgsIDEzLCA0MSwgMzcsIDUsIDIxOSwgMTg0LCAxMywgNDEsIDM3LCA1LCAyMTcsIAotICAgIDEzNCwgMTMsIDQxLCAzNywgNSwgMTQ2LCAxMywgNDEsIDM3LCA1LCAxOTQsIDEzLCA0MSwgMzcsIDUsIDIxMCwgNjksIDEzLCAKLSAgICA0MSwgMzcsIDUsIDY4LCAxMywgNDEsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDQxLCAzNywgNSwgMjA0LCAxNDQsIDEzLCA0MSwgCi0gICAgMzcsIDUsIDIwMywgMTk2LCAxMywgNDEsIDM3LCA1LCAyMDMsIDEyNCwgMTMsIDQxLCAzNywgNSwgMjAyLCAxNTksIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCA2MywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCAzNywgNiwgMjQ3LCAKLSAgICAxMjUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDUsIDUxLCAxMywgNDEsIDI2LCAzNywgNiwgNzQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyNDAsIDE3NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDc1LCAxMywgNDEsIDI2LCAzNywgNiwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzAsIAotICAgIDU0LCAxMywgNDEsIDI2LCAzNywgNiwgMTU5LCAxMywgNDEsIDI2LCAzNywgNiwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMjMsIDE2MywgMTMsIDQxLCAyNiwgMzcsIDYsIDc4LCAxMywgNDEsIDI2LCAzNywgNiwgMjE5LCAxODQsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDE0NiwgMTMsIDQxLCAyNiwgMzcsIDYsIDE5NCwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDIxMCwgNjksIDEzLCA0MSwgMjYsIDM3LCA2LCA2OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNiwgCi0gICAgMTY0LCAxMywgNDEsIDI2LCAzNywgNiwgMjA0LCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDMsIDE5NiwgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDYsIDIwMywgMTI0LCAxMywgNDEsIDI2LCAzNywgNiwgMjAyLCAxNTksIDEzLCA0MSwgMjYsIDM3LCA1LCA2MywgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCAzNywgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAyNDUsIDUxLCAxMywgNDEsIDI2LCAzNywgNSwgNzQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDUsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDQxLCAyNiwgMzcsIDUsIDc1LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDU0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMTU5LCAxMywgNDEsIDI2LCAzNywgNSwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjMsIDE2MywgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDUsIDc4LCAxMywgNDEsIDI2LCAzNywgNSwgMjE5LCAxODQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTcsIDEzNCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDE0NiwgMTMsIDQxLCAyNiwgMzcsIDUsIDE5NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxMCwgCi0gICAgNjksIDEzLCA0MSwgMjYsIDM3LCA1LCA2OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwNiwgMTY0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjA0LCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTI0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjAyLCAxNTksIDEzLCAyMjQsIDQxLCA2LCA2MywgMTMsIDIyNCwgNDEsIDYsIDI0OSwgCi0gICAgMjU1LCAxMywgMjI0LCA0MSwgNiwgMjQ3LCAxMjUsIDEzLCAyMjQsIDQxLCA2LCAyNDUsIDUxLCAxMywgMjI0LCA0MSwgNiwgCi0gICAgNzQsIDEzLCAyMjQsIDQxLCA2LCAyNDAsIDE3NCwgMTMsIDIyNCwgNDEsIDYsIDIzOSwgNzUsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMzcsIDE3MSwgMTMsIDIyNCwgNDEsIDYsIDc1LCAxMywgMjI0LCA0MSwgNiwgMjMwLCAxODQsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMzAsIDU0LCAxMywgMjI0LCA0MSwgNiwgMTU5LCAxMywgMjI0LCA0MSwgNiwgMjI2LCAxODUsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMjMsIDE2MywgMTMsIDIyNCwgNDEsIDYsIDc4LCAxMywgMjI0LCA0MSwgNiwgMjE5LCAxODQsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMTcsIDEzNCwgMTMsIDIyNCwgNDEsIDYsIDE0NiwgMTMsIDIyNCwgNDEsIDYsIDE5NCwgMTMsIDIyNCwgNDEsIDYsIDIxMCwgCi0gICAgNjksIDEzLCAyMjQsIDQxLCA2LCA2OCwgMTMsIDIyNCwgNDEsIDYsIDIwNiwgMTY0LCAxMywgMjI0LCA0MSwgNiwgMjA0LCAKLSAgICAxNDQsIDEzLCAyMjQsIDQxLCA2LCAyMDMsIDE5NiwgMTMsIDIyNCwgNDEsIDYsIDIwMywgMTI0LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjAyLCAxNTksIDEzLCAyMjQsIDQxLCA1LCA2MywgMTMsIDIyNCwgNDEsIDUsIDI0OSwgMjU1LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMjQ3LCAxMjUsIDEzLCAyMjQsIDQxLCA1LCAyNDUsIDUxLCAxMywgMjI0LCA0MSwgNSwgNzQsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICAyNDAsIDE3NCwgMTMsIDIyNCwgNDEsIDUsIDIzOSwgNzUsIDEzLCAyMjQsIDQxLCA1LCAyMzcsIDE3MSwgMTMsIDIyNCwgNDEsIAotICAgIDUsIDc1LCAxMywgMjI0LCA0MSwgNSwgMjMwLCAxODQsIDEzLCAyMjQsIDQxLCA1LCAyMzAsIDU0LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMTU5LCAxMywgMjI0LCA0MSwgNSwgMjI2LCAxODUsIDEzLCAyMjQsIDQxLCA1LCAyMjMsIDE2MywgMTMsIDIyNCwgNDEsIDUsIAotICAgIDc4LCAxMywgMjI0LCA0MSwgNSwgMjE5LCAxODQsIDEzLCAyMjQsIDQxLCA1LCAyMTcsIDEzNCwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDE0NiwgMTMsIDIyNCwgNDEsIDUsIDE5NCwgMTMsIDIyNCwgNDEsIDUsIDIxMCwgNjksIDEzLCAyMjQsIDQxLCA1LCA2OCwgCi0gICAgMTMsIDIyNCwgNDEsIDUsIDIwNiwgMTY0LCAxMywgMjI0LCA0MSwgNSwgMjA0LCAxNDQsIDEzLCAyMjQsIDQxLCA1LCAyMDMsIAotICAgIDE5NiwgMTMsIDIyNCwgNDEsIDUsIDIwMywgMTI0LCAxMywgMjI0LCA0MSwgNSwgMjAyLCAxNTksIDEzLCAzNywgNSwgMjQzLCAKLSAgICA4NCwgNzUsIDEzLCAzNywgNSwgMjQzLCA4NCwgMjMwLCAxODQsIDEzLCAyNiwgNiwgMjUxLCAyLCAxMywgMjYsIDYsIDI0OCwgCi0gICAgMTA2LCAxMywgMjYsIDYsIDIzOCwgMjM1LCAxMywgMjYsIDYsIDI0NCwgMzcsIDEzLCAyNiwgNiwgMjQxLCAzNywgMTMsIDI2LCAKLSAgICA2LCAyMDIsIDgzLCAxMywgMjYsIDYsIDI0MCwgMjQ4LCAxMywgMjYsIDYsIDIwOSwgNzQsIDEzLCAyNiwgNiwgMjMwLCAyMzAsIAotICAgIDEzLCAyNiwgNiwgMjI5LCAyNDcsIDEzLCAyNiwgNiwgMjI4LCAyNCwgMTMsIDI2LCA2LCAyMjMsIDI0NiwgMTMsIDI2LCA2LCAKLSAgICAyMjEsIDg0LCAxMywgMjYsIDYsIDIwMywgMTcwLCAxMywgMjYsIDYsIDIyMCwgMzQsIDEzLCAyNiwgNiwgMjE4LCAxNjcsIAotICAgIDEzLCAyNiwgNiwgMjE2LCA1OSwgMTMsIDI2LCA2LCAyMDksIDc1LCA5NywgMTMsIDI2LCA2LCAyMTIsIDE0NCwgMTMsIDI2LCAKLSAgICA2LCAyMDksIDIwNywgMTMsIDI2LCA2LCAyMDYsIDIxNiwgMTMsIDI2LCA2LCAyMTgsIDE5MiwgMTMsIDI2LCA2LCAyNDYsIAotICAgIDE0MiwgMTMsIDI2LCA2LCAyMTcsIDIwMiwgMTMsIDI2LCA2LCAyMjAsIDM2LCAxMywgMjYsIDIyMywgMTAxLCAxMywgMjYsIAotICAgIDUsIDI1MSwgMiwgMTMsIDI2LCA1LCAyNDgsIDEwNiwgMTMsIDI2LCA1LCAyMzgsIDIzNSwgMTMsIDI2LCA1LCAyNDQsIDM3LCAKLSAgICAxMywgMjYsIDUsIDI0MSwgMzcsIDEzLCAyNiwgNSwgMjAyLCA4MywgMTMsIDI2LCA1LCAyNDAsIDI0OCwgMTMsIDI2LCA1LCAKLSAgICAyMDksIDc0LCAxMywgMjYsIDUsIDIzMCwgMjMwLCAxMywgMjYsIDUsIDIyOSwgMjQ3LCAxMywgMjYsIDUsIDIyOCwgMjQsIAotICAgIDEzLCAyNiwgNSwgMjIzLCAyNDYsIDEzLCAyNiwgNSwgMjIxLCA4NCwgMTMsIDI2LCA1LCAyMDMsIDE3MCwgMTMsIDI2LCA1LCAKLSAgICAyMjAsIDM0LCAxMywgMjYsIDUsIDIxOCwgMTY3LCAxMywgMjYsIDUsIDIxNiwgNTksIDEzLCAyNiwgNSwgNDYsIDIxMiwgCi0gICAgMTQ0LCAxMywgMjYsIDUsIDIxMiwgMTQ0LCAxMywgMjYsIDUsIDIwOSwgMjA3LCAxMywgMjYsIDUsIDIwNiwgMjE2LCAxMywgCi0gICAgMjYsIDUsIDIxOCwgMTkyLCAxMywgMjYsIDUsIDI0NiwgMTQyLCAxMywgMjYsIDUsIDIxNywgMjAyLCAxMywgMjYsIDUsIAotICAgIDIyMCwgMzYsIDEzLCAyNiwgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCAyNiwgMjQxLCAzOCwgOTcsIDEzLCAyNiwgMjA5LCA3NSwgCi0gICAgOTcsIDEzLCAyNiwgMjI5LCAyNDgsIDk3LCAxMywgMjYsIDIxOCwgMTkzLCA5NywgMTMsIDI2LCAyMTYsIDYwLCA5NywgMTMsIAotICAgIDI2LCAyMTgsIDE2OCwgOTcsIDEzLCAzNywgNiwgMjUxLCAyLCAxMywgMzcsIDYsIDI0OCwgMTA2LCAxMywgMzcsIDYsIDIzOCwgCi0gICAgMjM1LCAxMywgMzcsIDYsIDI0NCwgMzcsIDEzLCAzNywgNiwgMjQxLCAzNywgMTMsIDM3LCA2LCAyMDIsIDgzLCAxMywgMzcsIAotICAgIDYsIDI0MCwgMjQ4LCAxMywgMzcsIDYsIDIwOSwgNzQsIDEzLCAzNywgNiwgMjMwLCAyMzAsIDEzLCAzNywgNiwgMjI5LCAKLSAgICAyNDcsIDEzLCAzNywgNiwgMjI4LCAyNCwgMTMsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIDM3LCA2LCAyMjEsIDg0LCAxMywgMzcsIAotICAgIDYsIDIwMywgMTcwLCAxMywgMzcsIDYsIDIyMCwgMzQsIDEzLCAzNywgNiwgMjE4LCAxNjcsIDEzLCAzNywgNiwgMjE2LCA1OSwgCi0gICAgMTMsIDM3LCA2LCAyMDksIDc1LCA5NywgMTMsIDM3LCA2LCAyMTIsIDE0NCwgMTMsIDM3LCA2LCAyMDksIDIwNywgMTMsIDM3LCAKLSAgICA2LCAyMDYsIDIxNiwgMTMsIDM3LCA2LCAyMTgsIDE5MiwgMTMsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDM3LCA2LCAyMTcsIAotICAgIDIwMiwgMTMsIDM3LCA2LCAyMjAsIDM2LCAxMywgMzcsIDIyMywgMTAxLCAxMywgMzcsIDUsIDI1MSwgMiwgMTMsIDM3LCA1LCAKLSAgICAyNDgsIDEwNiwgMTMsIDM3LCA1LCAyMzgsIDIzNSwgMTMsIDM3LCA1LCAyNDQsIDM3LCAxMywgMzcsIDUsIDI0MSwgMzcsIAotICAgIDEzLCAzNywgNSwgMjAyLCA4MywgMTMsIDM3LCA1LCAyNDAsIDI0OCwgMTMsIDM3LCA1LCAyMDksIDc0LCAxMywgMzcsIDUsIAotICAgIDIzMCwgMjMwLCAxMywgMzcsIDUsIDIyOSwgMjQ3LCAxMywgMzcsIDUsIDIyOCwgMjQsIDEzLCAzNywgNSwgMjIzLCAyNDYsIAotICAgIDEzLCAzNywgNSwgMjIxLCA4NCwgMTMsIDM3LCA1LCAyMDMsIDE3MCwgMTMsIDM3LCA1LCAyMjAsIDM0LCAxMywgMzcsIDUsIAotICAgIDIxOCwgMTY3LCAxMywgMzcsIDUsIDIxNiwgNTksIDEzLCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAxMywgMzcsIDUsIDIxMiwgCi0gICAgMTQ0LCAxMywgMzcsIDUsIDIwOSwgMjA3LCAxMywgMzcsIDUsIDIwNiwgMjE2LCAxMywgMzcsIDUsIDIxOCwgMTkyLCAxMywgCi0gICAgMzcsIDUsIDI0NiwgMTQyLCAxMywgMzcsIDUsIDIxNywgMjAyLCAxMywgMzcsIDUsIDIyMCwgMzYsIDEzLCAzNywgMjE5LCAKLSAgICA2OSwgMjQzLCAyMDUsIDEzLCAzNywgMjQxLCAzOCwgOTcsIDEzLCAzNywgMjA5LCA3NSwgOTcsIDEzLCAzNywgMjI5LCAyNDgsIAotICAgIDk3LCAxMywgMzcsIDIxOCwgMTkzLCA5NywgMTMsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDM3LCAyMTgsIDE2OCwgOTcsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDI1MSwgMiwgMTMsIDI2LCAzNywgNiwgMjQ4LCAxMDYsIDEzLCAyNiwgMzcsIDYsIDIzOCwgMjM1LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyNDQsIDM3LCAxMywgMjYsIDM3LCA2LCAyNDEsIDM3LCAxMywgMjYsIDM3LCA2LCAyMDIsIDgzLCAxMywgCi0gICAgMjYsIDM3LCA2LCAyNDAsIDI0OCwgMTMsIDI2LCAzNywgNiwgMjA5LCA3NCwgMTMsIDI2LCAzNywgNiwgMjMwLCAyMzAsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIyOSwgMjQ3LCAxMywgMjYsIDM3LCA2LCAyMjgsIDI0LCAxMywgMjYsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIAotICAgIDI2LCAzNywgNiwgMjIxLCA4NCwgMTMsIDI2LCAzNywgNiwgMjAzLCAxNzAsIDEzLCAyNiwgMzcsIDYsIDIyMCwgMzQsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIxOCwgMTY3LCAxMywgMjYsIDM3LCA2LCAyMTYsIDU5LCAxMywgMjYsIDM3LCA2LCAyMDksIDc1LCA5NywgCi0gICAgMTMsIDI2LCAzNywgNiwgMjEyLCAxNDQsIDEzLCAyNiwgMzcsIDYsIDIwOSwgMjA3LCAxMywgMjYsIDM3LCA2LCAyMDYsIAotICAgIDIxNiwgMTMsIDI2LCAzNywgNiwgMjE4LCAxOTIsIDEzLCAyNiwgMzcsIDYsIDI0NiwgMTQyLCAxMywgMjYsIDM3LCA2LCAKLSAgICAyMTcsIDIwMiwgMTMsIDI2LCAzNywgNiwgMjIwLCAzNiwgMTMsIDI2LCAzNywgMjIzLCAxMDEsIDEzLCAyNiwgMzcsIDUsIAotICAgIDI1MSwgMiwgMTMsIDI2LCAzNywgNSwgMjQ4LCAxMDYsIDEzLCAyNiwgMzcsIDUsIDIzOCwgMjM1LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyNDQsIDM3LCAxMywgMjYsIDM3LCA1LCAyNDEsIDM3LCAxMywgMjYsIDM3LCA1LCAyMDIsIDgzLCAxMywgMjYsIDM3LCA1LCAKLSAgICAyNDAsIDI0OCwgMTMsIDI2LCAzNywgNSwgMjA5LCA3NCwgMTMsIDI2LCAzNywgNSwgMjMwLCAyMzAsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIyOSwgMjQ3LCAxMywgMjYsIDM3LCA1LCAyMjgsIDI0LCAxMywgMjYsIDM3LCA1LCAyMjMsIDI0NiwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjIxLCA4NCwgMTMsIDI2LCAzNywgNSwgMjAzLCAxNzAsIDEzLCAyNiwgMzcsIDUsIDIyMCwgMzQsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIxOCwgMTY3LCAxMywgMjYsIDM3LCA1LCAyMTYsIDU5LCAxMywgMjYsIDM3LCA1LCA0NiwgMjEyLCAxNDQsIDEzLCAyNiwgCi0gICAgMzcsIDUsIDIxMiwgMTQ0LCAxMywgMjYsIDM3LCA1LCAyMDksIDIwNywgMTMsIDI2LCAzNywgNSwgMjA2LCAyMTYsIDEzLCAKLSAgICAyNiwgMzcsIDUsIDIxOCwgMTkyLCAxMywgMjYsIDM3LCA1LCAyNDYsIDE0MiwgMTMsIDI2LCAzNywgNSwgMjE3LCAyMDIsIAotICAgIDEzLCAyNiwgMzcsIDUsIDIyMCwgMzYsIDEzLCAyNiwgMzcsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgMjYsIDM3LCAyNDEsIAotICAgIDM4LCA5NywgMTMsIDI2LCAzNywgMjA5LCA3NSwgOTcsIDEzLCAyNiwgMzcsIDIyOSwgMjQ4LCA5NywgMTMsIDI2LCAzNywgCi0gICAgMjE4LCAxOTMsIDk3LCAxMywgMjYsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDI2LCAzNywgMjE4LCAxNjgsIDk3LCAxMywgNDEsIAotICAgIDI2LCA2LCAyNTEsIDIsIDEzLCA0MSwgMjYsIDYsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCA2LCAyMzgsIDIzNSwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgNiwgMjQxLCAzNywgMTMsIDQxLCAyNiwgNiwgMjAyLCA4MywgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDYsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIDYsIDIzMCwgMjMwLCAxMywgNDEsIAotICAgIDI2LCA2LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgNiwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgNiwgMjIzLCAyNDYsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDIyMSwgODQsIDEzLCA0MSwgMjYsIDYsIDIwMywgMTcwLCAxMywgNDEsIDI2LCA2LCAyMjAsIDM0LCAxMywgNDEsIAotICAgIDI2LCA2LCAyMTgsIDE2NywgMTMsIDQxLCAyNiwgNiwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgNiwgMjA5LCA3NSwgOTcsIDEzLCAKLSAgICA0MSwgMjYsIDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCA2LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgNiwgMjA2LCAyMTYsIAotICAgIDEzLCA0MSwgMjYsIDYsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCA2LCAyNDYsIDE0MiwgMTMsIDQxLCAyNiwgNiwgMjE3LCAKLSAgICAyMDIsIDEzLCA0MSwgMjYsIDYsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDIyMywgMTAxLCAxMywgNDEsIDI2LCA1LCAyNTEsIDIsIAotICAgIDEzLCA0MSwgMjYsIDUsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCA1LCAyMzgsIDIzNSwgMTMsIDQxLCAyNiwgNSwgMjQ0LCAzNywgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjQxLCAzNywgMTMsIDQxLCAyNiwgNSwgMjAyLCA4MywgMTMsIDQxLCAyNiwgNSwgMjQwLCAyNDgsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIDUsIDIzMCwgMjMwLCAxMywgNDEsIDI2LCA1LCAyMjksIDI0NywgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgNSwgMjIzLCAyNDYsIDEzLCA0MSwgMjYsIDUsIDIyMSwgODQsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIwMywgMTcwLCAxMywgNDEsIDI2LCA1LCAyMjAsIDM0LCAxMywgNDEsIDI2LCA1LCAyMTgsIDE2NywgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgNSwgNDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCA1LCAyMTIsIAotICAgIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDUsIDIwNiwgMjE2LCAxMywgNDEsIDI2LCA1LCAKLSAgICAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgNSwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDUsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAKLSAgICA1LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDQxLCAyNiwgMjQxLCAzOCwgOTcsIDEzLCAKLSAgICA0MSwgMjYsIDIwOSwgNzUsIDk3LCAxMywgNDEsIDI2LCAyMjksIDI0OCwgOTcsIDEzLCA0MSwgMjYsIDIxOCwgMTkzLCA5NywgCi0gICAgMTMsIDQxLCAyNiwgMjE2LCA2MCwgOTcsIDEzLCA0MSwgMjYsIDIxOCwgMTY4LCA5NywgMTMsIDQxLCAyNiwgMzcsIDYsIAotICAgIDI1MSwgMiwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCAzNywgNiwgMjM4LCAyMzUsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA2LCAyNDQsIDM3LCAxMywgNDEsIDI2LCAzNywgNiwgMjQxLCAzNywgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMiwgCi0gICAgODMsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIAotICAgIDM3LCA2LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCAzNywgNiwgMjI4LCAyNCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCAzNywgNiwgMjIxLCA4NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIwMywgMTcwLCAxMywgNDEsIDI2LCAzNywgNiwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOCwgMTY3LCAxMywgCi0gICAgNDEsIDI2LCAzNywgNiwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwOSwgNzUsIDk3LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNiwgMjE2LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNiwgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAzNywgNiwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMzcsIDIyMywgMTAxLCAxMywgCi0gICAgNDEsIDI2LCAzNywgNSwgMjUxLCAyLCAxMywgNDEsIDI2LCAzNywgNSwgMjQ4LCAxMDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAKLSAgICAyMzgsIDIzNSwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDEsIDM3LCAxMywgNDEsIAotICAgIDI2LCAzNywgNSwgMjAyLCA4MywgMTMsIDQxLCAyNiwgMzcsIDUsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCAzNywgNSwgMjA5LCAKLSAgICA3NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgMjMwLCAxMywgNDEsIDI2LCAzNywgNSwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIAotICAgIDM3LCA1LCAyMjgsIDI0LCAxMywgNDEsIDI2LCAzNywgNSwgMjIzLCAyNDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjEsIDg0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxNzAsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjAsIDM0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjE4LCAxNjcsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTYsIDU5LCAxMywgNDEsIDI2LCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDIwNiwgMjE2LCAxMywgNDEsIDI2LCAzNywgNSwgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDYsIDE0MiwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAzNywgNSwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDIxOSwgNjksIDI0MywgMjA1LCAxMywgNDEsIDI2LCAzNywgMjQxLCAzOCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMDksIDc1LCAKLSAgICA5NywgMTMsIDQxLCAyNiwgMzcsIDIyOSwgMjQ4LCA5NywgMTMsIDQxLCAyNiwgMzcsIDIxOCwgMTkzLCA5NywgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDIxNiwgNjAsIDk3LCAxMywgNDEsIDI2LCAzNywgMjE4LCAxNjgsIDk3LCAxMywgMjYsIDYsIDI0MywgMTk5LCAKLSAgICAxMywgMjYsIDUsIDI0MywgMTk5LCAxMywgMjYsIDE3LCAyMDIsIDg0LCAxMywgMjYsIDE3LCAxMDUsIDEzLCAyNiwgMTcsIAotICAgIDEwOCwgMTMsIDI2LCAxNywgMTQ3LCAxMywgMjYsIDE3LCAxNDksIDEzLCAyNiwgMTcsIDE3MCwgMTMsIDI2LCAxNywgMTk1LCAKLSAgICAxMywgMjYsIDE3LCAyMTMsIDExMSwgMTMsIDI2LCAxNywgMTk5LCAxMywgMjYsIDE3LCAyMjIsIDYzLCAxMywgMTY5LCAxNywgCi0gICAgMjAyLCA4NCwgMTMsIDE2OSwgMTcsIDEwNSwgMTMsIDE2OSwgMTcsIDEwOCwgMTMsIDE2OSwgMTcsIDE0NywgMTMsIDE2OSwgCi0gICAgMTcsIDE0OSwgMTMsIDE2OSwgMTcsIDE3MCwgMTMsIDE2OSwgMTcsIDE5NSwgMTMsIDE2OSwgMTcsIDIxMywgMTExLCAxMywgCi0gICAgMTY5LCAxNywgMTk5LCAxMywgMTY5LCAxNywgMjIyLCA2MywgMTMsIDQxLCAxNywgMjAyLCA4NCwgMTMsIDQxLCAxNywgMTA1LCAKLSAgICAxMywgNDEsIDE3LCAxMDgsIDEzLCA0MSwgMTcsIDE0NywgMTMsIDQxLCAxNywgMTQ5LCAxMywgNDEsIDE3LCAxNzAsIDEzLCAKLSAgICA0MSwgMTcsIDE5NSwgMTMsIDQxLCAxNywgMjEzLCAxMTEsIDEzLCA0MSwgMTcsIDE5OSwgMTMsIDQxLCAxNywgMjIyLCA2MywgCi0gICAgMTMsIDQxLCAyNiwgMTcsIDIwMiwgODQsIDEzLCA0MSwgMjYsIDE3LCAxMDUsIDEzLCA0MSwgMjYsIDE3LCAxMDgsIDEzLCAKLSAgICA0MSwgMjYsIDE3LCAxNDcsIDEzLCA0MSwgMjYsIDE3LCAxNDksIDEzLCA0MSwgMjYsIDE3LCAxNzAsIDEzLCA0MSwgMjYsIAotICAgIDE3LCAxOTUsIDEzLCA0MSwgMjYsIDE3LCAyMTMsIDExMSwgMTMsIDQxLCAyNiwgMTcsIDE5OSwgMTMsIDQxLCAyNiwgMTcsIAotICAgIDIyMiwgNjMsIDEzLCAyMjQsIDQxLCAxNywgMjAyLCA4NCwgMTMsIDIyNCwgNDEsIDE3LCAxMDUsIDEzLCAyMjQsIDQxLCAxNywgCi0gICAgMTA4LCAxMywgMjI0LCA0MSwgMTcsIDE0NywgMTMsIDIyNCwgNDEsIDE3LCAxNDksIDEzLCAyMjQsIDQxLCAxNywgMTcwLCAKLSAgICAxMywgMjI0LCA0MSwgMTcsIDE5NSwgMTMsIDIyNCwgNDEsIDE3LCAyMTMsIDExMSwgMTMsIDIyNCwgNDEsIDE3LCAxOTksIAotICAgIDEzLCAyMjQsIDQxLCAxNywgMjIyLCA2MywgMjEsIDEyOCwgMjMxLCAzNSwgMjEsIDIzNywgMTIwLCAyMzEsIDM1LCAyMSwgCi0gICAgMjM3LCAxMTYsIDIzMSwgMzUsIDIxLCAyMzcsIDEwNSwgMjMxLCAzNSwgMjEsIDIzNywgMTA5LCAyMzEsIDM1LCAyMSwgMjM3LCAKLSAgICAxMjIsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDEyMCwgMTIyLCAyNDgsIDExNywgMjEsIAotICAgIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTIyLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIAotICAgIDEyOCwgMTIyLCAyNDUsIDk3LCAyMSwgMTI4LCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDIzNiwgMjM2LCAyMjcsIAotICAgIDAsIDIxLCAyMzcsIDEyMCwgMTIyLCAyMzYsIDIzNywgMjEsIDEyOCwgMTIyLCAyMjQsIDE0OCwgMjEsIDIzNywgMTIwLCAKLSAgICAxMjIsIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMTYsIDE4OCwgCi0gICAgMjI5LCAyOCwgMjEsIDEyOCwgMTIyLCAxMDEsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDExMiwgMTAxLCAyMzYsIDIzNSwgCi0gICAgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNiwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA3LCAyMSwgCi0gICAgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTAxLCAKLSAgICAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAyNDUsIDk3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAKLSAgICAyMDgsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMjcsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDI0NSwgCi0gICAgMTI3LCAyMSwgMTI4LCAxMDEsIDI0OCwgMTE4LCAxMTUsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMjQ4LCAxMTgsIDExNSwgCi0gICAgMjI0LCAxNDgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMDksIDIxLCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyMDksIDIxLCAKLSAgICAyMSwgMTI4LCAxMjIsIDEwMSwgMjExLCA1MywgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0OCwgMTE4LCAKLSAgICAxNDgsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjM2LCAKLSAgICAyMzYsIDIxMSwgMTg2LCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDExMiwgMTAxLCAyMzYsIDIzNiwgMTQ4LCAyMTIsIAotICAgIDE1NSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzYsIDE0OCwgMjQ1LCAyMDcsIDIxLCAxMjgsIDEyMiwgMjM2LCAKLSAgICAyMzYsIDEwMSwgMTEyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTEyLCAyMTEsIDE4NiwgMTQ4LCAyMzksIAotICAgIDE1MSwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjQ2LCA2MCwgCi0gICAgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjM2LCAxMTQsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDIzNiwgMjM1LCAyMSwgCi0gICAgMTI4LCAxNDgsIDI0OCwgMTA0LCAxMjIsIDEwMSwgMjExLCA1MiwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIAotICAgIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjEyLCAxNTYsIDI0NSwgMjA3LCAyMSwgMTI4LCAKLSAgICAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjEyLCAxNTYsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMDEsIDE0OCwgMjM2LCAxMTUsIAotICAgIDEyMiwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzYsIDExNSwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAKLSAgICAxMDEsIDI0NSwgMjA4LCAyMzYsIDIzNiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTI4LCAxNDgsIAotICAgIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDEyMiwgMTAxLCAKLSAgICAyNDUsIDIwOCwgMjQ1LCA5OCwgMTQ4LCAyMzksIDE1MSwgMjEsIDEyOCwgMTAxLCAxNDgsIDI0NSwgOTgsIDEyMiwgMjA2LCAKLSAgICAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDk4LCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgNDMsIAotICAgIDEyMiwgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCA0MywgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxNDgsIAotICAgIDI1MCwgMjE2LCAyMTksIDIxMiwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDI1MCwgMjE2LCAyMzEsIDUwLCAKLSAgICAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgNDMsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTAxLCAKLSAgICAxNDgsIDI0NSwgMjA4LCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjUwLCAyMTYsIDIxOSwgMjExLCAyMSwgCi0gICAgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNTAsIDIxNSwgMjEsIDEyOCwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMiwgMTIyLCAKLSAgICAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMiwgMTIyLCAyNDUsIDEyNywgMjEsIDEyOCwgCi0gICAgMTAxLCAxNDgsIDI1MCwgMjE2LCAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM2LCAxMTUsIDEwMSwgMjM2LCAKLSAgICAyMzUsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjUzLCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgCi0gICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjU0LCAyMzYsIDIzNSwgMjEsIDIzNywgMTExLCAyMzksIAotICAgIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDgsIDIxMSwgCi0gICAgMTkzLCAyMSwgMjM3LCAxMTgsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDcsIDIxLCAxMjgsIDIzOSwgMTQ3LCAyMzksIAotICAgIDI1NCwgMjQ1LCAyMDgsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMDksIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDcsIDIxLCAKLSAgICAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAyMzksIDIzMywgCi0gICAgMjM5LCAyNTQsIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzOSwgMTQ3LCAKLSAgICAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzksIDE0NywgCi0gICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIAotICAgIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAKLSAgICAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTE2LCAyMzksIDIzMywgMjM5LCAyNTQsIAotICAgIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIyMCwgOCwgMjEsIDIzNywgCi0gICAgMTA5LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMjAsIDgsIDIxLCAyMzcsIDEwNSwgMjM5LCAyMzMsIDIzOSwgCi0gICAgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNSwgMjEsIAotICAgIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgCi0gICAgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNiwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIAotICAgIDExMCwgMjEsIDIzNywgMTExLCAyNDgsIDEwNCwgMjE5LCAxMzUsIDI0MCwgOTQsIDIxLCAyMzcsIDExMSwgMjM3LCA0NSwgCi0gICAgMjEsIDIzNywgMTExLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIzNywgNDYsIDE0OCwgMjEyLCAxNTUsIDIxLCAKLSAgICAyMzcsIDExMSwgMTQ4LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMTEsIDIxMSwgCi0gICAgMTk0LCAxMjIsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDI0NiwgMjE3LCAyMSwgMjM3LCAxMTEsIAotICAgIDIxMSwgMTk0LCAyNDYsIDIxOCwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjQ2LCAyMTgsIDE0OCwgCi0gICAgMjEyLCAxNTYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyMjcsIDg1LCAyMSwgMjM3LCAxMTcsIDIxLCAKLSAgICAyMzcsIDExOCwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTE4LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTE4LCAKLSAgICAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMDcsIDI0NSwgOTQsIDIxLCAyMzcsIDEwNiwgMjEsIDIzNywgMTE2LCAyMjAsIDgsIAotICAgIDIxLCAyMzcsIDExNSwgMjEsIDIzNywgMTE2LCAxNzEsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExNiwgMTQ4LCAyMTIsIAotICAgIDE1NSwgMjEsIDIzNywgMTE2LCAxNzEsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTYsIDIyMSwgMTkyLCAyMDksIAotICAgIDIxLCAyMSwgMjM3LCAxMTYsIDE3MSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTE2LCAxNDgsIDIzOSwgMTUxLCAyMSwgCi0gICAgMjM3LCAxMTQsIDIyMCwgOCwgMjEsIDIzNywgMTEzLCAyMSwgMjM3LCAxMTksIDIxLCAyMzcsIDEwNCwgMjEsIDIzNywgMTA1LCAKLSAgICAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDUsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDUsIDE0OCwgMjM5LCAKLSAgICAxNTEsIDIxLCAyMzcsIDEwOSwgMjIwLCA4LCAyMSwgMjM3LCAxMDksIDE3MSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgCi0gICAgMTA4LCAyMSwgMjM3LCAxMDksIDIxMiwgMzYsIDIxLCAyMzcsIDEwOSwgMTcxLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAKLSAgICAxMDksIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDEwOSwgMTcxLCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAKLSAgICAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAxNDgsIDIxMiwgMTU2LCAyMDgsIDEyNywgMjMxLCAzNSwgMjEsIAotICAgIDIzNywgMTA5LCAxNDgsIDI0OCwgMTA0LCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMjEsIDIxLCAxMjgsIDEyMiwgMTAxLCAKLSAgICAyMTUsIDI1MiwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEwOSwgMTIyLCAxMDEsIDIxNSwgCi0gICAgMjUyLCAyMSwgMjM3LCAxMjIsIDEyMiwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTA5LCAyMjcsIDg1LCAyMSwgMTI4LCAKLSAgICAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0NSwgMjA3LCAyMSwgCi0gICAgMjM3LCAxMDksIDEyMiwgMTAxLCAyMTUsIDI1MywgMjQ1LCAyMDcsIDIxLCAxMjgsIDIyNywgODYsIDI0MiwgNzAsIDIxLCAKLSAgICAxMjgsIDIyNywgODYsIDEyMSwgMjE1LCAyNDgsIDIxMSwgNTIsIDIxLCAxMjgsIDIyNywgODYsIDEyMSwgMjE1LCAyNDgsIAotICAgIDI0NSwgODUsIDIxLCAxMjgsIDIyNywgODYsIDEyMSwgMjE5LCAyMjAsIDI0NiwgNjAsIDIxLCAxMjgsIDIyNywgODYsIDIwNiwgCi0gICAgMjI0LCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAyMjcsIDg2LCAyMDYsIDIyNCwgMjEsIDIzNywgMTIwLCAyMjcsIDg2LCAKLSAgICAyMDYsIDIyNCwgMjEsIDIzNywgMTA1LCAyMjcsIDg2LCAyMDYsIDIyNCwgMjEsIDIzNywgMTIyLCAyMjcsIDg2LCAyMDYsIAotICAgIDIyNCwgMjEsIDEyOCwgMjI3LCA4NiwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAxMjgsIDIyNywgODYsIDI0OCwgMTE3LCAyMSwgCi0gICAgMTI4LCAyMjcsIDg2LCAyMDgsIDEyOCwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAKLSAgICAyMjcsIDg2LCAyMDksIDIxLCAyMSwgMTI4LCAyMjcsIDg2LCAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NiwgCi0gICAgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMjIsIDIyNywgODYsIDEyMiwgMTQ4LCAxMjIsIDE0OCwgMjE5LCAyMTEsIDIxLCAKLSAgICAyMzcsIDEyMiwgMjI3LCA4NiwgMTIyLCAxNDgsIDEyMiwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIAotICAgIDIzNywgMTIwLCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDksIDIyNywgODYsIDIzMSwgMzUsIDIxLCAyMzcsIDEyMiwgCi0gICAgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIAotICAgIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMjE1LCAyNTIsIDIxLCAKLSAgICAyMzcsIDEyMiwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEzMSwgMjI3LCA4NSwgMjEsIAotICAgIDIzNywgMTIwLCAxMjIsIDEwMSwgMjQ1LCAxMzEsIDIyNywgODUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyNDIsIDcwLCAyMSwgCi0gICAgMjM3LCAxMDksIDIxNSwgMjUzLCAxMjEsIDEyMiwgMTQ4LCAyMzYsIDExNiwgMjI0LCAxNDgsIDIxLCAyMzcsIDEyMiwgMjE1LCAKLSAgICAyNTMsIDEyMSwgMTAxLCAxNDgsIDEyMiwgMjQ1LCAxMzAsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMDYsIDIyNCwgMjEsIDEyOCwgCi0gICAgMjE1LCAyNTMsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAKLSAgICAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTA1LCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIyLCAyMTUsIAotICAgIDI1MywgMjI3LCA4NSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIyNCwgMTQ4LCAyMSwgMTI4LCAyMTUsIDI1MywgMTAxLCAyNDUsIAotICAgIDIwNywgMjEsIDEyOCwgMjE1LCAyNTMsIDEwMSwgMjE2LCAxODgsIDIyOSwgMjgsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMzEsIAotICAgIDM1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjA5LCAyMSwgMjEsIDIzNywgMTA3LCAyMTUsIDI1MywgMjA5LCAyMSwgMjEsIDEyOCwgCi0gICAgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAKLSAgICAxMTQsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIyMCwgMzEsIDIxLCAyMzcsIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCAKLSAgICA4NiwgMjE5LCAyMTEsIDIxLCAyMzcsIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjMxLCA0OSwgMjEsIDIzNywgCi0gICAgMTA3LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMDYsIDI0NywgMjEsIDIzNywgMTE2LCAxMjIsIDIxNSwgMjUzLCAyMjcsIAotICAgIDg1LCAyMSwgMjM3LCAxMDksIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMiwgMTIyLCAyMTUsIDI1MywgCi0gICAgMjI3LCA4NiwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDEyOCwgMTAxLCAKLSAgICAyNDIsIDcwLCAyMSwgMjM3LCAxMDksIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMDEsIDIwNiwgMjI0LCAyMSwgMjM3LCAxMjAsIAotICAgIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAxMjgsIDEwMSwgMTEyLCAxNDgsIAotICAgIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDcsIDEwMSwgMjA5LCAyMSwgMjEsIDEyOCwgMTAxLCAxNDgsIDIyNywgODUsIDIxLCAKLSAgICAxMjgsIDEwMSwgMjI3LCA4NSwgMjEsIDEyOCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAxMDEsIAotICAgIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMTQsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDIyMCwgMzEsIDIxLCAKLSAgICAyMzcsIDExNiwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTA5LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg1LCAKLSAgICAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAKLSAgICAyNTMsIDIyNywgODYsIDIzMSwgNDksIDIxLCAyMzcsIDEyMiwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgCi0gICAgMTIwLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDgsIDExNywgMjEsIDIzNywgMTE4LCAxMDEsIDIxNSwgMjUzLCAyMjcsIAotICAgIDg2LCAyNDUsIDIwNywgMjEsIDIzNywgMTE4LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjEyLCAxNTUsIAotICAgIDIxLCAyMzcsIDEwNywgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIxOSwgMjExLCAyMSwgMjM3LCAxMDcsIAotICAgIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMDcsIDEwMSwgMjE1LCAyNTMsIAotICAgIDIyNywgODYsIDI0NSwgMjA3LCAyMSwgMjM3LCAxMDksIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIAotICAgIDE1NSwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTQ4LCAKLSAgICAyNDMsIDIyNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAxNDgsIDI0NSwgMjA3LCAyMSwgMTI4LCAxMjIsIDE0OCwgCi0gICAgMjEyLCAxNTYsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTIyLCAyNDgsIDExNywgMjEsIAotICAgIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAyNDcsIDI1MSwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgCi0gICAgMTIyLCAyMzYsIDIzNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIzOSwgMTUyLCAxMjIsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgCi0gICAgMTQ4LCAyMzksIDE1MiwgMTIyLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxNDgsIDExMywgMjEsIDEyOCwgMTIyLCAxNDgsIAotICAgIDI0NSwgOTQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDg4LCAxNDgsIDIzMSwgNiwgMjEsIDIzNywgMTE4LCAxMjIsIDE0OCwgCi0gICAgMjQ1LCA4OCwgMTQ4LCAyMzEsIDYsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDg4LCAxNDgsIDIwNiwgMjQ3LCAyMSwgMTI4LCAKLSAgICAxMjIsIDE0OCwgMjQ2LCA2MSwgMjEsIDIzNywgMTE2LCAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDExNiwgMTIyLCAxNDgsIAotICAgIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjIwLCA4LCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMjgsIDcsIAotICAgIDIxLCAyMzcsIDEwOSwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMTIsIDM2LCAyMSwgMjM3LCAKLSAgICAxMjIsIDEyMiwgMTQ4LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMjIsIDE0OCwgMjMxLCA0OSwgMjEsIDIzNywgMTIyLCAKLSAgICAxMjIsIDIwOSwgMjEsIDIxLCAxMjgsIDIwOSwgMjEsIDIxLCAxMjgsIDE0OCwgMjM3LCA0NSwgMjEsIDEyOCwgMTQ4LCAyMTIsIAotICAgIDE1NiwgMjQzLCAyMjcsIDIxLCAxMjgsIDE0OCwgMjEyLCAxNTYsIDI0NSwgMjA3LCAyMSwgMTI4LCAxNDgsIDIxMiwgMTU2LCAKLSAgICAyNDgsIDExNywgMjEsIDEyOCwgMTQ4LCAyMzksIDE1MSwgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTIyLCAyMjQsIDE0OCwgCi0gICAgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTAxLCAyMTUsIDI1MiwgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMjE1LCAyNTMsIAotICAgIDIyNywgODUsIDIxLCAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyMCwgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMTE1LCAxMjAsIAotICAgIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjYsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAKLSAgICAyMzksIDE0NywgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMTE1LCAyMzksIDE0NywgMjE2LCAxODgsIDIyOSwgMjgsIDIxLCAKLSAgICAyMzcsIDExMiwgMjEsIDEyOCwgMjM3LCA0NSwgMjEsIDIwOCwgMTI5LCAyMTIsIDExOSwgMjEsIDIwOCwgMTI5LCAyMjMsIAotICAgIDIyNSwgMjEsIDIwOCwgMTI5LCAyNDgsIDEwMywgMjEsIDIzOCwgMiwgMjEyLCAxMTksIDIxLCAyMzgsIDIsIDIyMywgMjI1LCAKLSAgICAyMSwgMjM4LCAyLCAyNDgsIDEwMywgMjEsIDIxMSwgMzcsIDIxMiwgMTE5LCAyMSwgMjExLCAzNywgMjIzLCAyMjUsIDIxLCAKLSAgICAyMTEsIDM3LCAyNDgsIDEwMywgMjEsIDI0NywgMjAxLCAyMTIsIDExOSwgMjEsIDI0NywgMjAxLCAyMjMsIDIyNSwgMjEsIAotICAgIDI0NywgMjAxLCAyNDgsIDEwMywgMjEsIDIxNSwgMTQzLCAyMTIsIDExOSwgMjEsIDIxNSwgMTQzLCAyMjMsIDIyNSwgMjEsIAotICAgIDIxNSwgMTQzLCAyNDgsIDEwMywgMjEsIDIxMCwgMTg5LCAyMTAsIDEwMiwgMjEsIDIxMCwgMTg5LCAyNDgsIDEwMywgMjEsIAotICAgIDIxMSwgMTczLCAyMjgsIDgsIDIxMiwgMTE5LCAyMSwgMjExLCAxNzMsIDUsIDIxMiwgMTE5LCAyMSwgMjExLCAxNzMsIDIyOCwgCi0gICAgOCwgMjIzLCAyMjUsIDIxLCAyMTEsIDE3MywgNSwgMjIzLCAyMjUsIDIxLCAyMTEsIDE3MywgMjEzLCAxMjYsIDIxLCAyMzksIAotICAgIDIwOCwgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIzOSwgMjA4LCA1LCAyMTIsIDExOSwgMjEsIDIzOSwgMjA4LCAyMjgsIDgsIAotICAgIDIyMywgMjI1LCAyMSwgMjM5LCAyMDgsIDUsIDIyMywgMjI1LCAyMSwgMjM5LCAyMDgsIDIxMywgMTI2LCAyMSwgMjExLCAKLSAgICAxNzMsIDIzOSwgMjA4LCAyNTAsIDI1MiwgMjEsIDIyNCwgMCwgMTEyLCAxMjEsIDIyOCwgNywgMjEsIDIyNCwgMCwgMTEyLCAKLSAgICAxMjEsIDIxMiwgMzYsIDIxLCAyMjQsIDAsIDExMiwgMjEzLCAxMjYsIDIxLCAyMjQsIDAsIDEyMSwgMjEzLCAxMjYsIDIxLCAKLSAgICAyMjQsIDAsIDExMiwgMTIxLCAyNTAsIDI1MywgMjI4LCA3LCAyMSwgMjI0LCAwLCAxMTIsIDEyMSwgMjUwLCAyNTMsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjQsIDAsIDIxMiwgMTU2LCAyMDgsIDE3MywgMjEyLCAxNTYsIDIxNCwgMTkwLCAyMSwgMjIzLCAyNTUsIAotICAgIDI0MCwgMywgMjQ1LCAxOTcsIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ1LCAxOTcsIDIxLCAyMjMsIDI1NSwgMjEyLCAxMjAsIAotICAgIDIxMSwgNTMsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAKLSAgICAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjgsIDUsIDIxLCAKLSAgICAyMjMsIDI1NSwgMjEyLCAxMjAsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCA1MiwgMjExLCA1MiwgMjEsIAotICAgIDIyMywgMjU1LCA1MiwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDUyLCAyNTAsIDI1MiwgMjEsIDIyMywgCi0gICAgMjU1LCA1MiwgMjUwLCAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCAyNDUsIDEzMCwgMjEsIDIyMywgCi0gICAgMjU1LCAyMDgsIDcwLCAyMTEsIDUzLCAyMjQsIDMsIDIxLCAyMjMsIDI1NSwgMjA4LCA3MCwgMjAzLCAyMjEsIDIzOSwgMjExLCAKLSAgICAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDI1MCwgMjUyLCAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDI1MCwgMjUzLCAyMDMsIAotICAgIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIAotICAgIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDgsIDEyMSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMTIsIDM2LCAKLSAgICAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ1LCAxNjYsIDIyOCwgNywgMjEsIDIyMywgCi0gICAgMjU1LCAyNDUsIDE2NiwgMjE1LCAxOTYsIDIxLCAyMjMsIDI1NSwgMjQ2LCAxNjksIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjQ2LCAxNjksIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDYsIDE2OSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDk4LCAyMTIsIAotICAgIDM2LCAyMSwgMjIzLCAyNTUsIDk4LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgOTgsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAKLSAgICAyMDIsIDMwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwMiwgMzAsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMDIsIDMwLCAKLSAgICAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMTksIDMwLCAyMjUsIDksIAotICAgIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjI4LCA3LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjA4LCAKLSAgICA5OSwgMjE1LCAxOTQsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NCwgMjUwLCAyNTIsIDIxLCAyMDgsIDk5LCAyMTUsIAotICAgIDE5NSwgMjEyLCAxMTksIDIxLCAyMDgsIDk5LCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDIxNSwgMTk1LCAKLSAgICAyNTAsIDI1MiwgMjEsIDIwOCwgOTksIDIxMywgNzEsIDIxLCAyMDgsIDk5LCAyNTAsIDEwNywgMjExLCAyMDIsIDIxMiwgCi0gICAgMTE5LCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIDIxMSwgMjAyLCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIAotICAgIDIxMSwgMjAyLCAyMDgsIDY5LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAKLSAgICAyMjUsIDksIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjI4LCA1LCAyMSwgCi0gICAgMjI0LCAyLCAyMDgsIDEyMywgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjA4LCAxMjMsIDIyNSwgOSwgMjEsIDIyNCwgMiwgMjA4LCAKLSAgICAxMjMsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjA4LCAxMjMsIDIyOCwgNSwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDI1MCwgMTIsIAotICAgIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAyMjUsIDksIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAKLSAgICAyNTAsIDEyLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAyMjgsIDUsIDIxLCAyMjQsIDIsIDI0OCwgCi0gICAgMTA0LCAyMDgsIDEyMywgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjUsIDksIDIxLCAyMjQsIAotICAgIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyOCwgNSwgCi0gICAgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAKLSAgICAyMjUsIDksIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIAotICAgIDUzLCAyMjgsIDUsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDUyLCAKLSAgICAyMTEsIDUyLCAyMSwgMjI0LCAxLCA1MiwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCA1MiwgMjUwLCAyNTIsIAotICAgIDIxLCAyMjQsIDEsIDUyLCAyNTAsIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCAyNDUsIDEzMCwgMjEsIAotICAgIDIyNCwgMSwgMjA4LCA3MCwgMjExLCA1MywgMjI0LCAzLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyMDMsIDIyMSwgMjM5LCAKLSAgICAyMTEsIDIxLCAyMjQsIDEsIDIwOCwgNzAsIDI1MCwgMjUzLCAyMjQsIDMsIDIxLCAyMjQsIDEsIDIwOCwgNzAsIDI1MCwgCi0gICAgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDI0OCwgMTIwLCAyMSwgMjI0LCAxLCAyNDUsIDE2NiwgMjEyLCAKLSAgICAzNiwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIyOCwgNywgMjEsIDIyNCwgCi0gICAgMSwgMjQ2LCAxNjgsIDIxLCAyMjQsIDEsIDk4LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCA5OCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAKLSAgICA5OCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMjUsIDksIAotICAgIDIxLCAyMjQsIDEsIDIwMiwgMzAsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjE5LCAzMCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgCi0gICAgMjE5LCAzMCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAyMTksIDMwLCAyMjgsIDcsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTUsIAotICAgIDIxMiwgMTE5LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAyNDIsIDc4LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAyNTAsIAotICAgIDI1MiwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NCwgMjEyLCAxMTksIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDI0MiwgNzgsIAotICAgIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDI1MCwgMjUyLCAyMSwgMjA4LCAxMDAsIDIxMywgNzEsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjQ1LCA4OCwgMjE3LCA1NiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjUsIDksIDIxLCAKLSAgICAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyOCwgCi0gICAgNSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIDEzNiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIAotICAgIDEzNiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIzNywgMTM2LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAKLSAgICA4OCwgMjM3LCAxMzYsIDIyOCwgNSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMDksIDI3LCAyNDYsIDYyLCAyMTIsIDM2LCAKLSAgICAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIwOSwgMjcsIDI0NiwgNjIsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAKLSAgICAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMjgsIDcsIAotICAgIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMjUsIDksIDIxLCAyMjMsIAotICAgIDI1NSwgMjI3LCAxNSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDUsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIyNSwgCi0gICAgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCA1MiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAotICAgIDI0NSwgODgsIDIwOCwgNzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgMjA4LCA3MCwgMjI1LCAKLSAgICA5LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDIwOCwgNzAsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIAotICAgIDg4LCAyMDksIDg0LCAyMTEsIDUyLCAyMSwgMjIzLCAyNTUsIDI0NSwgODYsIDI0NSwgMTMxLCAyMTIsIDM2LCAyMSwgMjIzLCAKLSAgICAyNTUsIDI0NSwgODYsIDI0NSwgMTMxLCAyMjUsIDksIDIxLCAyMTUsIDE5NCwgMjEyLCAxMTksIDIxLCAyMTUsIDE5NCwgCi0gICAgMjQyLCA3OCwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1NCwgMjEsIDIyMywgMjU1LCAyMTMsIDcxLCAyMSwgMjIzLCAyNTUsIAotICAgIDI0NSwgODgsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMzYsIDIyOSwgCi0gICAgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCAyMTIsIAotICAgIDEyMCwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDUyLCAyMzYsIDIyOSwgMjM5LCAxMTksIAotICAgIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIyMywgCi0gICAgMjU1LCAyNDUsIDg4LCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgCi0gICAgMTQ5LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKLSAgICAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIDE5NCwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgCi0gICAgMTk0LCA1MiwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjQ2LCAxNDksIAotICAgIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQzLCAyMjgsIDIxOSwgNTIsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCi0gICAgMjQzLCAyMjgsIDIxOSwgNTIsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDMsIDIyOCwgMjE5LCA1MiwgMjI4LCAKLSAgICA3LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDI0NSwgODgsIAotICAgIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIAotICAgIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyNDIsIDc4LCAyMSwgCi0gICAgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIzNiwgMTQsIAotICAgIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAKLSAgICAyMjcsIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjEyLCAKLSAgICAxMTksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgCi0gICAgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgCi0gICAgMjI5LCAyNDYsIDIyNywgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDcsIAotICAgIDIxLCAyMTUsIDE5NSwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyNDYsIDIyNiwgMjEsIDIxNSwgMTk1LCA1MiwgMjM2LCAyMjksIAotICAgIDI0NiwgMjI2LCAyMSwgMjE1LCAxOTUsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjQ2LCAyMjYsIDIxLCAyMjQsIDEsIDI0NSwgCi0gICAgODgsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjM2LCAyMjksIDIzOSwgMjA1LCAKLSAgICAyMjgsIDcsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIDIwNSwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgCi0gICAgMjM2LCAxNCwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgCi0gICAgMjI5LCAyMzksIDIwNSwgMjA4LCA3MCwgNSwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDIzOSwgCi0gICAgMjA1LCAyMDgsIDcwLCAyMjgsIDgsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgCi0gICAgNSwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyMTIsIDExOSwgCi0gICAgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMjA1LCA1LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAKLSAgICAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgCi0gICAgMjA1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgNywgMjEsIDIxNSwgCi0gICAgMTk1LCAyMTIsIDEyMCwgMjM2LCAyMjksIDIzOSwgMjA0LCAyMSwgMjE1LCAxOTUsIDUyLCAyMzYsIDIyOSwgMjM5LCAyMDQsIAotICAgIDIxLCAyMTUsIDE5NSwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyMzksIDIwNCwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjEyLCAzNiwgCi0gICAgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMjgsIDcsIDIxLCAyMjQsIDEsIAotICAgIDI0NSwgODgsIDIyOCwgNSwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjQ1LCAyMzcsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIxMiwgMjQsIDIxLCAyMjQsIAotICAgIDEsIDIwNCwgNzYsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIyOCwgNywgMjEsIDIxNSwgMTk1LCAyMTIsIDExOSwgCi0gICAgMjEsIDIxNSwgMTk1LCAyNDIsIDc4LCAyMSwgMjE1LCAxOTUsIDI1MCwgMjUyLCAyMSwgMjI0LCAxLCAyMTMsIDcyLCAyMTksIAotICAgIDgxLCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCA1LCAyMTIsIDExOSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgCi0gICAgMjQ2LCA2MiwgMjI1LCAxMCwgMjEyLCAxMTksIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIDI0NiwgNjIsIDUsIDI0MiwgNzgsIAotICAgIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIyNSwgMTAsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAKLSAgICAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgCi0gICAgMjM2LCAyMjksIDIwNCwgMTAwLCAyMjUsIDEwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIAotICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgCi0gICAgMjI5LCAyMDQsIDEwMCwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIAotICAgIDEwMCwgMjI1LCAxMCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgCi0gICAgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIDIwMywgMjIxLCAyNDYsIDYyLCAyMzksIDExOSwgMjEyLCAxMTksIDIxLCAKLSAgICAyMjMsIDI1NSwgMjAzLCAyMjEsIDI0NiwgNjIsIDIzOSwgMTE5LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDMsIDIyMSwgCi0gICAgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjAzLCAyMjEsIDI0NiwgNjIsIAotICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAyNDAsIDMsIDI0NiwgNTksIDIxMiwgMTE5LCAyMSwgCi0gICAgMjIzLCAyNTUsIDI0MCwgMywgMjQ2LCA1OSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDYsIDU5LCAyMzYsIAotICAgIDIyOSwgMjA0LCAxMDAsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NiwgNTksIDIzNiwgMjI5LCAyMDQsIDEwMCwgCi0gICAgMjQyLCA3OCwgMjEsIDI0MiwgNCwgMjUwLCA5NSwgMjEyLCAzNiwgMjEsIDI0MiwgNCwgMjUwLCA5NSwgMjI4LCA3LCAyMSwgCi0gICAgMjQyLCA0LCAyNDAsIDc0LCAyMSwgMjQyLCA0LCAyMTIsIDM5LCAyMSwgMjQyLCA0LCAyMDksIDE0NSwgMjEsIDI0MiwgNCwgCi0gICAgMjE2LCAxMTUsIDIxLCAyNDIsIDQsIDIxMiwgMTI1LCAyMSwgMjQyLCA0LCAyMTIsIDEyNiwgMjUwLCAyNTIsIDIxLCAyNDIsIAotICAgIDQsIDI0MCwgMjIxLCAyMTksIDIyMSwgMjA4LCAyMjEsIDIxLCAyNDIsIDQsIDIzOCwgMTIsIDIxLCAyMzcsIDY0LCAyMSwgCi0gICAgMjM3LCA2NSwgMjE2LCAxLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIDIxMSwgNTIsIDIxLCAyMzcsIDY1LCAyMjMsIDI1NSwgCi0gICAgMjA4LCAyMjQsIDIxLCAyMzcsIDY1LCAyMjQsIDEsIDIxMSwgNTIsIDIxLCAyMzcsIDY1LCAyMjMsIDI1NSwgMjQ1LCA4NywgCi0gICAgMjEsIDIzNywgNjUsIDIyNCwgMSwgMjQ1LCA4NywgMjEsIDIzNywgNjUsIDIyNCwgNCwgMjQ2LCA2MSwgMjEsIDI0MCwgMTAzLCAKLSAgICAyNDMsIDE2NiwgMjE4LCAzNCwgMjIxLCAxNjgsIDIzOSwgMTUyLCAyMDgsIDIyMiwgMjEsIDI0MCwgMTAzLCAyNDMsIDE2NiwgCi0gICAgMjE4LCAzNCwgMjIxLCAxNjgsIDExMiwgMjE5LCAyNDUsIDI0MiwgNzAsIDIxLCAyNDAsIDEwMywgMjQzLCAxNjYsIDIxOCwgCi0gICAgMzQsIDIyMSwgMTY4LCAxMTIsIDIxOSwgMjQ1LCAxMjEsIDIwOCwgMjIyLCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDIwNiwgCi0gICAgMjI0LCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDIyMiwgMjE1LCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDI0MiwgNzAsIDIxLCAKLSAgICAyNDIsIDU3LCAyNDAsIDE5MCwgMjIyLCAyMTYsIDI0MiwgNzAsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMTIxLCAyMjIsIAotICAgIDIxNSwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAxMTIsIDIyMiwgMjE1LCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDIyMiwgCi0gICAgMjE2LCAyMDYsIDIyNCwgMjEsIDIzOSwgMTY0LCAyMjIsIDIxNSwgMjEsIDIzOSwgMTY0LCAyNDUsIDE5NywgMjEsIDIzOSwgCi0gICAgMTY0LCAyMDMsIDIyNCwgMjEsIDI0MCwgMTg1LCAyMjAsIDgsIDIxLCAyNDAsIDE4NSwgMjExLCAxNzIsIDIxLCAyNDAsIAotICAgIDE4NSwgMjQ2LCAxNSwgMjEsIDI0MCwgMTkyLCAyNDgsIDM0LCAyMTIsIDExOSwgMjEsIDI0MCwgMTkyLCAyNDgsIDM0LCAKLSAgICAyMjMsIDIyNSwgMjEsIDI0MCwgMTg1LCAxNjIsIDIyMCwgOCwgMjEsIDI0MCwgMTg1LCAyMDQsIDI3LCAyMjAsIDgsIDIxLCAKLSAgICAyNDAsIDE4NSwgMTYyLCAyNDYsIDE1LCAyMSwgMjQwLCAxODUsIDIwNCwgMjUsIDIyNCwgMywgMjEsIDI0MCwgMTkyLCAyMDQsIAotICAgIDksIDIxLCAyNDAsIDE4NiwgMjA2LCAyMjQsIDIxLCAyNDAsIDE4NiwgMjQyLCA3MCwgMjEsIDI0MCwgMTg2LCAyMzksIDE5MSwgCi0gICAgMjEsIDI0MCwgMTg4LCAyMTEsIDUyLCAyMSwgMjQwLCAxODgsIDIxMSwgNTMsIDI0MiwgNzgsIDIxLCAyNDAsIDE4OCwgMjExLCAKLSAgICA1MywgMjUwLCAyNTIsIDIxLCAyNDAsIDE4OSwgMjExLCA1MiwgMjEsIDI0MCwgMTg5LCAyMTEsIDUzLCAyNDIsIDc4LCAyMSwgCi0gICAgMjQwLCAxODksIDIxMSwgNTMsIDI1MCwgMjUyLCAyMSwgMjQwLCAxODgsIDI0NSwgODUsIDIxLCAyNDAsIDE4OSwgMjQ1LCAKLSAgICA4NSwgMjEsIDI0MCwgMTg4LCAyNDYsIDU2LCAyMSwgMjQ2LCAxNjQsIDIxNywgMTgyLCAyMSwgMjQ2LCAxNjQsIDIyMiwgCi0gICAgMjE1LCAyMSwgMjQ2LCAxNjQsIDIxMCwgMjM0LCAyMSwgMjA5LCAxNDYsIDI0NiwgMTY0LCAyMzYsIDI0NCwgMjEsIDIwOSwgCi0gICAgMTQ2LCAyNDYsIDE2NCwgMjI0LCAxNDgsIDIxLCAyMDksIDE0NiwgMjQ2LCAxNjQsIDIyNywgMCwgMjEsIDI0MSwgMTgxLCAKLSAgICAyMSwgMjIxLCAxNjgsIDIyMiwgMjE1LCAyMSwgMjIxLCAxNjgsIDI0NSwgMTk3LCAyMSwgMjIxLCAxNjgsIDIwMywgMjIyLCAKLSAgICAyMSwgMjIxLCAxNjgsIDIwNCwgMjIsIDIxLCAyNTEsIDU1LCAyNDgsIDI3LCAyMTksIDIxMSwgMjEsIDI1MSwgNTUsIDIxMCwgCi0gICAgMjMzLCAyMzEsIDQ5LCAyMSwgMjUxLCA1NSwgMjQ4LCAyOSwgNSwgMjE1LCAxOTMsIDIxLCAyNTEsIDU1LCAyMTAsIDIzNSwgCi0gICAgNSwgMjE1LCAxOTMsIDIxLCAyNDcsIDIxNiwgMjMxLCAyMiwgMjEsIDI0NywgMjE2LCAyNDAsIDIxMCwgMjEsIDIyNCwgOCwgCi0gICAgMjQ2LCAxNiwgMjIyLCAyMTUsIDIxLCAyMjQsIDgsIDI0NiwgMTYsIDIzOSwgMTUxLCAyMSwgMjI0LCA4LCAyNDYsIDE2LCAKLSAgICAyNDUsIDE5NywgMjEsIDIyNCwgOCwgMjEyLCAzMSwgMjEsIDIyNCwgOCwgMjEyLCAzMiwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIAotICAgIDIxMiwgMzIsIDIyMCwgOCwgMjEsIDIyNCwgOCwgMjM5LCAxMTUsIDIxLCAyMjQsIDgsIDIzOSwgMTE2LCAyMDMsIDIyNCwgCi0gICAgMjEsIDIyNCwgOCwgMjM5LCAxMTYsIDIyMCwgOCwgMjEsIDIyNCwgOCwgMTcxLCAyNDYsIDYxLCAyMSwgMjI0LCA4LCAxNzEsIAotICAgIDIzOSwgMTUxLCAyMSwgMjI0LCA4LCAxNzEsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIDIxOSwgMjA0LCAyMSwgMjI0LCAKLSAgICA4LCAxNzEsIDIxOSwgMjA1LCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAyMTksIDIwNSwgMjAzLCA1OSwgMjEsIDIyNCwgCi0gICAgOCwgMTcxLCAyMTYsIDE0MywgMjEsIDIyNCwgOCwgMTcxLCAyMTYsIDE0NCwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgCi0gICAgMjE2LCAxNDQsIDIwMywgNTksIDIxLCAyMjQsIDgsIDIyOSwgNjYsIDIxLCAyMjQsIDgsIDIyOSwgNjcsIDIzOSwgMTUxLCAKLSAgICAyMSwgMjI0LCA4LCAyMjksIDY3LCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMjA5LCAxNDUsIDIxLCAyMjQsIDgsIDIwOSwgCi0gICAgMTQ2LCAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMjA5LCAxNDYsIDIxMCwgMjM0LCAyMSwgMjI3LCA5OSwgMjE3LCAyMzksIAotICAgIDIwOCwgMTY5LCAyMSwgMjI3LCAxMDEsIDIyNiwgMjUxLCAxMTUsIDIwNiwgMjIwLCAyMSwgMjI3LCAxMDEsIDIwNiwgMjIxLCAKLSAgICAxMTUsIDIyNiwgMjUwLCAyMSwgMjI0LCA4LCAyNDUsIDE2NCwgMjEsIDIyNCwgOCwgMjAzLCAyMjMsIDIxMiwgMTE5LCAyMSwgCi0gICAgMjI0LCA4LCAyMDMsIDIyMywgMjQyLCA3OCwgMjEsIDIwOCwgMTUxLCAyMTEsIDcyLCAyMTksIDIxMiwgMjQwLCA3NiwgMjEsIAotICAgIDIwOCwgMTUxLCAyMjcsIDE0NCwgMjI3LCA5OCwgMjEsIDIwOCwgMTUxLCAyMDgsIDIxMSwgMjQ4LCAxMDQsIDIyNywgOTgsIAotICAgIDIxLCAyMDgsIDE1MSwgMjA4LCAyMTEsIDIwOCwgMTI3LCAyMzEsIDcsIDIyNCwgNywgMjEsIDIwOCwgMTUxLCAyMzEsIDcsIAotICAgIDIyNCwgOCwgMjE2LCAxMTUsIDIxLCAyMDgsIDE1MSwgMjIzLCAyNTQsIDI1MSwgNzksIDI0NiwgMTY1LCAyMSwgMjA4LCAKLSAgICAxNTEsIDI0NiwgMjE4LCAyMTEsIDcyLCAyMTksIDIxMSwgMjEsIDIwOCwgMTUxLCAyNDYsIDIxOCwgMjMxLCA3LCAyMjQsIDcsIAotICAgIDIxLCAyMDksIDE3MiwgMjEsIDIwOSwgMTczLCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjIwLCAzMiwgMjA4LCAxNTAsIDIxLCAKLSAgICAyMDksIDE3MywgMjIwLCAzMiwgMjA4LCAxNTEsIDIyNCwgMywgMjEsIDIwOSwgMTczLCAyMjAsIDMyLCAyMjcsIDk4LCAyMSwgCi0gICAgMjA5LCAxNzMsIDIyMCwgMzIsIDIyNywgOTksIDIyNCwgMywgMjEsIDIwOSwgMTczLCAyNDgsIDUwLCAyMjcsIDk4LCAyMSwgCi0gICAgMjIzLCAyNTUsIDIzMCwgMTY1LCAyMSwgMjI0LCAxLCAyMzAsIDE2NSwgMjEsIDIyMiwgMjM3LCAyMSwgMjM3LCAxNDUsIDIxLCAKLSAgICAyNDAsIDIxMywgMjEsIDIxMiwgMjExLCAyMzYsIDIzNCwgMjExLCAyMDMsIDIxLCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIxOCwgCi0gICAgMzMsIDIxLCAyMDQsIDk4LCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIyNCwgNiwgMjEsIDIzOSwgMjAzLCAyMTIsIDIxMSwgMjM2LCAKLSAgICAyMzQsIDIyNCwgNiwgMjEsIDIxMiwgMjExLCAyMDgsIDIyMywgMjM5LCAxMjAsIDIwNCwgMTA0LCAyMSwgMjA4LCAxMzQsIAotICAgIDIxMSwgNTMsIDIxMSwgNDEsIDIxLCAyMDgsIDEzNCwgMjQ1LCA4NiwgMjQ4LCAxMjAsIDIxLCAyMDgsIDEzNSwgMjA3LCAKLSAgICAxMzcsIDIxLCAyMDYsIDIyMSwgMjQ4LCAxOCwgMjA4LCAyMjMsIDIzOSwgMTIwLCAyMzYsIDIzNCwgMjMwLCA5NSwgMjEsIAotICAgIDIyNywgMTI2LCAyNDUsIDIzOCwgMjEsIDIyNywgMTI2LCAyMjcsIDE5NSwgMjEsIDIyNywgMTI2LCAyMjcsIDE5NCwgMjEsIAotICAgIDIyNywgMTI2LCAyMjcsIDE5MywgMjEsIDIyNywgMTI2LCAyMjcsIDE5MiwgMjEsIDIyNywgMTI2LCAyMjcsIDE5MSwgMjEsIAotICAgIDIyNywgMTI2LCAyMjcsIDE5MCwgMjEsIDIyNywgMTI2LCAyMjcsIDE4OSwgMjEsIDI0MCwgMiwgMjEsIDIyNywgNDUsIDIxMSwgCi0gICAgMjI4LCAyMSwgMjI3LCA0NiwgMjExLCAyMjgsIDIxLCAyMjcsIDQ3LCAyMzcsIDQxLCAyMSwgMjI3LCA0NywgMjA0LCAyMywgCi0gICAgMjEsIDIyNywgNDcsIDI0NCwgMjQsIDIxLCAyMjcsIDQ3LCAyMzcsIDY1LCAyMjIsIDIzNywgMjEsIDIyNywgNDcsIDIwOCwgCi0gICAgMTM2LCAyMSwgMjI3LCA0NywgMjI3LCAxMjUsIDI0MywgMTk4LCAyMSwgMjQ1LCAyMzMsIDIxLCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgMjEsIDIxMywgMTQzLCAyMSwgMjQ1LCAyNDIsIDIxLCAyMTksIDc2LCAyMSwgMjQwLCAxMCwgMjI0LCA2NiwgMjEsIAotICAgIDI0MCwgMTAsIDIyNCwgNjUsIDIxLCAyNDAsIDEwLCAyMjQsIDY0LCAyMSwgMjQwLCAxMCwgMjI0LCA2MywgMjEsIDI0MCwgCi0gICAgMTAsIDIyNCwgNjIsIDIxLCAyMTUsIDE5NywgMjI0LCA2NiwgMjEsIDIxNSwgMTk3LCAyMjQsIDY1LCAyMSwgMjE1LCAxOTcsIAotICAgIDIyNCwgNjQsIDIxLCAyMTUsIDE5NywgMjI0LCA2MywgMjEsIDIxNSwgMTk3LCAyMjQsIDYyLCAyMSwgMjE1LCAxOTcsIDIyNCwgCi0gICAgNjEsIDIxLCAyMTUsIDE5NywgMjI0LCA2MCwgMjEsIDIxNSwgMTk3LCAyMjQsIDU5LCAyMSwgMjE1LCAxOTcsIDIyNCwgNzMsIAotICAgIDIxLCAyMTUsIDE5NywgMjI0LCA3MiwgMjEsIDIxNSwgMTk3LCAyMjQsIDcxLCAyMSwgMjE1LCAxOTcsIDIyNCwgNzAsIDIxLCAKLSAgICAyMTUsIDE5NywgMjI0LCA2OSwgMjEsIDIxNSwgMTk3LCAyMjQsIDY4LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjcsIDczLCA3MiwgCi0gICAgNCwgMjI2LCAxODQsIDIyOSwgMTAwLCA3MywgNzIsIDQsIDIyNiwgMTgwLCAxNzMsIDczLCA3MiwgNCwgMjI2LCAxNzgsIAotICAgIDIyOCwgMjA5LCA3MywgNzIsIDQsIDIyNiwgNTQsIDIyOSwgMTk4LCA3MywgNzIsIDQsIDIyNiwgMjQsIDIyOSwgMjAxLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgNDMsIDIyOSwgNiwgNzMsIDcyLCA0LCAyMjYsIDcxLCAyMjksIDI2LCA3MywgNzIsIDQsIDIyNSwgMTk2LCAKLSAgICAyMjgsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDE3NSwgMjA0LCAzMCwgNzMsIDcyLCA0LCAyMjYsIDE3MywgMjA0LCAxMTEsIAotICAgIDczLCA3MiwgNCwgMjI2LCAxNzEsIDIwMywgMjE3LCA3MywgNzIsIDQsIDIyNSwgMjQ5LCAyMDQsIDU1LCA3MywgNzIsIDQsIAotICAgIDIyNiwgMSwgMjA0LCA2MiwgNzMsIDcyLCA0LCAyMjYsIDUsIDIwMywgMjQ0LCA3MywgNzIsIDQsIDIyNiwgNzQsIDIwNCwgMCwgCi0gICAgNzMsIDcyLCA0LCAyMjUsIDE4MSwgMjAzLCAyMTMsIDczLCA3MiwgNCwgMjI1LCAyMzIsIDIwNCwgNTMsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA1OCwgMjAzLCAyMDEsIDczLCA3MiwgNCwgMjI2LCA3MCwgMjAzLCAyMDMsIDczLCA3MiwgNCwgMjI1LCAyMzYsIAotICAgIDIwMywgMjAyLCA3MywgNzIsIDQsIDIyNiwgMTY5LCAyMjQsIDExMCwgNzMsIDcyLCA0LCAyMjYsIDE2NywgMjI1LCAxMjIsIAotICAgIDczLCA3MiwgNCwgMjI2LCAxNjUsIDIyMywgMjE5LCA3MywgNzIsIDQsIDIyNiwgNjAsIDIyNCwgMjQwLCA3MywgNzIsIDQsIAotICAgIDIyNiwgMjUsIDIyNCwgNTQsIDczLCA3MiwgNCwgMjI1LCAyMjEsIDIyMywgMjQzLCA3MywgNzIsIDQsIDIyNSwgMTg2LCAKLSAgICAyMjMsIDIzNywgNzMsIDcyLCA0LCAyMjYsIDE2MywgMjQ4LCA4NiwgNzMsIDcyLCA0LCAyMjYsIDE2MCwgMjQ5LCAzMiwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDE1OCwgMjQ3LCAxOTMsIDczLCA3MiwgNCwgMjI1LCAyMjUsIDI0OCwgMTUwLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMjIsIDI0OCwgMTYyLCA3MywgNzIsIDQsIDIyNiwgMTYsIDI0OCwgMTAsIDczLCA3MiwgNCwgMjI1LCAyMzcsIDI0OCwgMjMsIAotICAgIDczLCA3MiwgNCwgMjI2LCAxNDgsIDc1LCA3MywgNzIsIDQsIDIyNiwgMTQ2LCA2MywgNzMsIDcyLCA0LCAyMjYsIDE0NCwgCi0gICAgNjgsIDczLCA3MiwgNCwgMjI1LCAyMTIsIDI0MSwgMTYxLCA3MywgNzIsIDQsIDIyNiwgMTksIDc0LCA3MywgNzIsIDQsIAotICAgIDIyNSwgMjEwLCAyMjAsIDE4LCA3MywgNzIsIDQsIDIyNSwgMjI4LCA3OCwgNzMsIDcyLCA0LCAyMjUsIDIzOCwgMjQxLCAKLSAgICAxNDUsIDczLCA3MiwgNCwgMjI1LCAyNDQsIDIzMSwgNDksIDczLCA3MiwgNCwgMjI1LCAyNDAsIDIzMSwgNDksIDczLCA3MiwgCi0gICAgNCwgMjI1LCAxODAsIDI1MCwgMjMxLCA3MywgNzIsIDQsIDIyNSwgMTk3LCAyNDEsIDkyLCA3MywgNzIsIDQsIDIyNiwgMTMzLCAKLSAgICAyMTIsIDE2MiwgNzMsIDcyLCA0LCAyMjYsIDEzMSwgMjE1LCAzNiwgNzMsIDcyLCA0LCAyMjYsIDEyOSwgMjExLCAxMCwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDIxMywgMjE0LCAxNjUsIDczLCA3MiwgNCwgMjI2LCAzLCAyMTQsIDE3NywgNzMsIDcyLCA0LCAyMjUsIAotICAgIDIzOSwgMjExLCAyNTAsIDczLCA3MiwgNCwgMjI2LCA0MCwgMjEyLCAxMywgNzMsIDcyLCA0LCAyMjUsIDE3OSwgMjEyLCAKLSAgICAxNjEsIDczLCA3MiwgNCwgMjI2LCAxMTksIDIyNywgMTQ4LCA3MywgNzIsIDQsIDIyNiwgMTE3LCAyMjgsIDExMywgNzMsIAotICAgIDcyLCA0LCAyMjYsIDExNSwgMjI2LCAyMzksIDczLCA3MiwgNCwgMjI2LCAzNSwgMjI3LCAyMjYsIDczLCA3MiwgNCwgMjI2LCAKLSAgICA0NiwgMjI3LCAyMzQsIDczLCA3MiwgNCwgMjI2LCA2NSwgMjI3LCAxOCwgNzMsIDcyLCA0LCAyMjUsIDIyMiwgMjI3LCA0OSwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDksIDE2MywgMjI3LCAyMzQsIDczLCA3MiwgNCwgMjI2LCAxNDEsIDI0MywgMjMzLCA3MywgNzIsIAotICAgIDQsIDIyNiwgMTM4LCAyNDQsIDIxMiwgNzMsIDcyLCA0LCAyMjYsIDEzNSwgMjQyLCA0MiwgNzMsIDcyLCA0LCAyMjYsIDMwLCAKLSAgICAyNDQsIDYxLCA3MywgNzIsIDQsIDIyNSwgMTk1LCAyNDMsIDkwLCA3MywgNzIsIDQsIDIyNSwgMTk0LCAyNDMsIDExMywgNzMsIAotICAgIDcyLCA0LCAyMjYsIDEyNywgMjA5LCAyLCA3MywgNzIsIDQsIDIyNiwgMTI0LCAyMTAsIDIyLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMTIyLCAyMDcsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDI4LCAyMDksIDE3NiwgNzMsIDcyLCA0LCAyMjYsIDY0LCAyMDksIAotICAgIDE4NywgNzMsIDcyLCA0LCAyMjYsIDE1LCAyMDgsIDE0OCwgNzMsIDcyLCA0LCAyMjYsIDUwLCAxMzUsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAxMTMsIDIzMCwgMTQxLCA3MywgNzIsIDQsIDIyNiwgMTEwLCAyMzAsIDE4MSwgNzMsIDcyLCA0LCAyMjYsIDEwOCwgCi0gICAgMjMwLCA4MiwgNzMsIDcyLCA0LCAyMjUsIDIxOCwgMjMwLCAxNTksIDczLCA3MiwgNCwgMjI2LCA2LCAyMzAsIDE2MSwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDIxNSwgMjMwLCA5MSwgNzMsIDcyLCA0LCAyMjYsIDU2LCAyMzAsIDEwMSwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDIwMCwgMTYzLCAyMzAsIDEwMSwgNzMsIDcyLCA0LCAyMjYsIDEwNiwgMjAzLCAxMSwgNzMsIDcyLCA0LCAyMjYsIDEwMywgCi0gICAgMTk4LCA3MywgNzIsIDQsIDIyNiwgMTAxLCAyMDIsIDIxMywgNzMsIDcyLCA0LCAyMjYsIDEwLCAyMDMsIDQ5LCA3MywgNzIsIAotICAgIDQsIDIyNiwgMzksIDIwMywgNTIsIDczLCA3MiwgNCwgMjI1LCAyMzQsIDIwMiwgMjMyLCA3MywgNzIsIDQsIDIyNSwgMjU0LCAKLSAgICAyMDIsIDI0NywgNzMsIDcyLCA0LCAyMjYsIDk3LCAyNDAsIDI2LCA3MywgNzIsIDQsIDIyNiwgOTUsIDI0MCwgMTA4LCA3MywgCi0gICAgNzIsIDQsIDIyNiwgOTMsIDIzOSwgMTA4LCA3MywgNzIsIDQsIDIyNiwgNDEsIDI0MCwgNTMsIDczLCA3MiwgNCwgMjI2LCAKLSAgICA0NCwgMjQwLCA2MCwgNzMsIDcyLCA0LCAyMjUsIDI0MiwgMjM5LCAxNzUsIDczLCA3MiwgNCwgMjI2LCAzMSwgMjM5LCAxODYsIAotICAgIDczLCA3MiwgNCwgMjI1LCAxNzgsIDIzOSwgMTA3LCA3MywgNzIsIDQsIDIyNiwgMTgsIDI0MCwgODEsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA5MSwgMjIyLCA2OCwgNzMsIDcyLCA0LCAyMjYsIDg5LCAyMjMsIDgzLCA3MywgNzIsIDQsIDIyNiwgODcsIDIyMSwgCi0gICAgNDAsIDczLCA3MiwgNCwgMjI2LCAyLCAyMjIsIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDIwNiwgMjIxLCAxODUsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAxOTksIDIzNywgMywgNzMsIDcyLCA0LCAyMjYsIDgyLCAxNTIsIDczLCA3MiwgNCwgMjI1LCAxODksIDIzNiwgCi0gICAgMjYsIDczLCA3MiwgNCwgMjI2LCA4NSwgMjM3LCA0OCwgNzMsIDcyLCA0LCAyMjYsIDIzLCAyMzcsIDY3LCA3MywgNzIsIDQsIAotICAgIDIyNiwgODAsIDIzNiwgMTE3LCA3MywgNzIsIDQsIDIyNSwgMjM1LCAyMzYsIDEzNiwgNzMsIDcyLCA0LCAyMjYsIDM2LCAKLSAgICAyMzcsIDQ3LCA3MywgNzIsIDQsIDIyNSwgMjQ3LCAyMzYsIDExMCwgNzMsIDcyLCA0LCAyMjYsIDY2LCAyMzYsIDIzOCwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDI0NSwgMjM3LCAxMjYsIDczLCA3MiwgNCwgMjI2LCAzMiwgMjM2LCAxMywgNzMsIDcyLCA0LCAyMjYsIAotICAgIDY3LCAyMzcsIDMzLCA3MywgNzIsIDQsIDIyNSwgMTgyLCAyMzYsIDEyMCwgNzMsIDcyLCA0LCAyMjYsIDczLCAyMzYsIDI1LCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMjksIDIyMiwgMTY4LCA3MywgNzIsIDQsIDIyNiwgNzgsIDIyMiwgMTgyLCA3MywgNzIsIDQsIAotICAgIDIyNiwgMzcsIDIyMiwgMTY1LCA3MywgNzIsIDQsIDIyNiwgNCwgMjIyLCAxNzYsIDczLCA3MiwgNCwgMjI1LCAyMjksIDIyMiwgCi0gICAgMTc3LCA3MywgNzIsIDQsIDIyNSwgMjE5LCAyMjIsIDE2NiwgNzMsIDcyLCA0LCAyMjUsIDI1NSwgMjIyLCAxNjcsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMTYsIDIyMiwgMTgxLCA3MywgNzIsIDQsIDIyNSwgMjQ4LCAyMjIsIDE2NCwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDMzLCAxNjMsIDIyMiwgMTc3LCA3MywgNzIsIDQsIDIyNiwgMTMsIDE2MywgMjIyLCAxNjYsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAxOTIsIDE2MywgMjIyLCAxNjcsIDczLCA3MiwgNCwgMjI1LCAyMjAsIDIzOCwgODEsIDczLCA3MiwgNCwgMjI2LCA4LCAyMzksIAotICAgIDgsIDczLCA3MiwgNCwgMjI1LCAyMDcsIDIzNywgMjMwLCA3MywgNzIsIDQsIDIyNSwgMTg1LCAyMzgsIDE4MiwgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDIwOSwgMjM3LCAyMTYsIDczLCA3MiwgNCwgMjI1LCAyMDgsIDIzNywgMjI2LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMTkxLCAyMjIsIDE4NywgNzMsIDcyLCA0LCAyMjYsIDYyLCAyMjIsIDEyNCwgNzMsIDcyLCA0LCAyMjUsIDE5OCwgMjIyLCAKLSAgICAxMTMsIDczLCA3MiwgNCwgMjI2LCA1MSwgMjE4LCAxNjcsIDczLCA3MiwgNCwgMjI2LCAyMCwgMTg1LCA3MywgNzIsIDQsIAotICAgIDIyNiwgNjksIDIxNywgMTkxLCA3MywgNzIsIDQsIDIyNiwgMzgsIDIxOSwgMjMsIDczLCA3MiwgNCwgMjI2LCA2OCwgMjE5LCAKLSAgICAzNCwgNzMsIDcyLCA0LCAyMjYsIDE3LCAyMTgsIDQ1LCA3MywgNzIsIDQsIDIyNiwgNTMsIDIxOCwgNjksIDczLCA3MiwgNCwgCi0gICAgMjI1LCAyMzAsIDIyNSwgMzksIDczLCA3MiwgNCwgMjI2LCA1NywgMjI1LCA1NCwgNzMsIDcyLCA0LCAyMjUsIDI1MywgMjI1LCAKLSAgICAzMywgNzMsIDcyLCA0LCAyMjYsIDcyLCAyMjUsIDQ2LCA3MywgNzIsIDQsIDIyNSwgMTg3LCAyMjUsIDQ2LCA3MywgNzIsIDQsIAotICAgIDIyNiwgNDcsIDIyNSwgNDcsIDczLCA3MiwgNCwgMjI1LCAyMDMsIDIyNSwgMzQsIDczLCA3MiwgNCwgMjI1LCAyMDEsIDIyNSwgCi0gICAgMzUsIDczLCA3MiwgNCwgMjI1LCAxODgsIDIyNSwgMjcsIDczLCA3MiwgNCwgMjI1LCAyMTQsIDE2MywgMjI1LCA0NywgNzMsIAotICAgIDcyLCA0LCAyMjYsIDE0LCAxNjMsIDIyNSwgMzQsIDczLCA3MiwgNCwgMjI1LCAyMzMsIDE2MywgMjI1LCAzNSwgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDI0MywgMjI4LCAyMzYsIDczLCA3MiwgNCwgMjI2LCAyNywgMjI4LCAyNDQsIDczLCA3MiwgNCwgMjI2LCA0NSwgCi0gICAgMjI4LCAyMzIsIDczLCA3MiwgNCwgMjI2LCA3NiwgMjI4LCAyMzksIDczLCA3MiwgNCwgMjI2LCAxMSwgMjI4LCAyNDAsIDczLCAKLSAgICA3MiwgNCwgMjI2LCA3LCAyMjgsIDIzNCwgNzMsIDcyLCA0LCAyMjUsIDIxNywgMjI4LCAyMzUsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyNTEsIDIzOCwgMTk5LCA3MywgNzIsIDQsIDIyNiwgNjMsIDIzOCwgMjA3LCA3MywgNzIsIDQsIDIyNSwgMjI3LCAyMzgsIAotICAgIDE5NCwgNzMsIDcyLCA0LCAyMjYsIDI2LCAyMzgsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDEyLCAyMzgsIDIwNCwgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDQ4LCAyMzgsIDE5NSwgNzMsIDcyLCA0LCAyMjYsIDQ5LCAyMzgsIDE5NywgNzMsIDcyLCA0LCAyMjUsIDIwNCwgCi0gICAgMjE2LCAyMjAsIDczLCA3MiwgNCwgMjI1LCAyNTIsIDIyMywgMTAsIDczLCA3MiwgNCwgMjI1LCAyNDYsIDIyMywgMjUsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyNTAsIDIyMiwgMjQ4LCA3MywgNzIsIDQsIDIyNSwgMTg0LCAyMjMsIDE2LCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMCwgMjIzLCAxNywgNzMsIDcyLCA0LCAyMjYsIDUyLCAyMjIsIDI1MywgNzMsIDcyLCA0LCAyMjYsIDU1LCAyMjMsIDEsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMjMsIDIyMiwgNDgsIDczLCA3MiwgNCwgMjI1LCAxODMsIDIyMiwgMTgsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyMjYsIDIyMiwgMzksIDczLCA3MiwgNCwgMjI1LCAyNDEsIDIyMiwgMjIsIDczLCA3MiwgNCwgMjI1LCAxOTMsIDIwNSwgCi0gICAgMjMwLCA3MywgNzIsIDQsIDIyNSwgMTkwLCAyMDYsIDg2LCA3MywgNzIsIDQsIDIyNSwgMjI0LCAyMDQsIDE2MywgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDIwMiwgMjA2LCA1MCwgNzMsIDcyLCA0LCAyMjYsIDM0LCAyMDYsIDU1LCA3MywgNzIsIDQsIDIyNSwgMjMxLCAKLSAgICAyMDUsIDE3NiwgNzMsIDcyLCA0LCAyMjYsIDQyLCAyMDUsIDE4OSwgNzMsIDcyLCA0LCAyMjUsIDIxMSwgMjIwLCAyNDIsIAotICAgIDczLCA3MiwgNCwgMjI2LCA2MSwgMjIxLCA1LCA3MywgNzIsIDQsIDIyNSwgMjA1LCAyMjAsIDIyNCwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDIxLCAyMjAsIDI1MywgNzMsIDcyLCA0LCAyMjYsIDU5LCAyMjAsIDIzMSwgNzMsIDcyLCAxNywgMTA1LCA3MywgNzIsIAotICAgIDE3LCAxMDgsIDczLCA3MiwgMTcsIDE0NywgNzMsIDcyLCAxNywgMTQ5LCA3MywgNzIsIDE3LCAxNzAsIDczLCA3MiwgMTcsIAotICAgIDE5NSwgNzMsIDcyLCAxNywgMjEzLCAxMTEsIDczLCA3MiwgMTcsIDE5OSwgNzMsIDcyLCAxNywgMjIyLCA2MywgNzMsIDcyLCAKLSAgICAzOSwgNDIsIDIwOSwgMTc0LCA3MywgNzIsIDM5LCA0MiwgMjA5LCAxNDcsIDczLCA3MiwgMzksIDQyLCAyMzYsIDEwLCA3MywgCi0gICAgNzIsIDM5LCA0MiwgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIDIwOSwgMTUzLCAyMDksIDM0LCA3MywgNzIsIDM5LCA0MiwgCi0gICAgMjM2LCAxMiwgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIDIyNCwgMTEzLCAxMCwgMTMsIDI1MSwgMzAsIDEwLCAxMywgMjQ4LCAKLSAgICAxMzgsIDEwLCAxMywgMjMwLCAxNTgsIDEwLCAxMywgMjQ0LCAxODQsIDEwLCAxMywgMjA0LCA3MCwgMTAsIDEzLCAyMDIsIAotICAgIDEwNywgMTAsIDEzLCAyMzcsIDE0OCwgMTAsIDEzLCAyMDksIDI1MSwgMTAsIDEzLCAyMDMsIDQ3LCAxMCwgMTMsIDIzMCwgCi0gICAgMjIsIDEwLCAxMywgMjI4LCAyOCwgMTAsIDEzLCAyMjUsIDUsIDEwLCAxMywgMjIxLCAxNzgsIDEwLCAxMywgMjE0LCAxNjEsIAotICAgIDEwLCAxMywgMjUxLCA1OSwgMTAsIDEzLCAyNDAsIDQ3LCAxMCwgMTMsIDIxNSwgMjgsIDEwLCAxMywgMjE3LCAxMTksIDEwLCAKLSAgICAxMywgMjE2LCAxMjIsIDEwLCAxMywgMjEzLCAzOSwgMTAsIDEzLCAyMDksIDE2OSwgMTAsIDEzLCAyMDksIDg4LCAxMCwgMTMsIAotICAgIDIyOSwgMTQwLCAxMCwgMTMsIDIwOSwgMTAwLCAxMCwgMTMsIDI0NCwgMjA3LCAxMCwgMTMsIDIwMiwgMTEwLCAxMCwgMTMsIAotICAgIDIzOCwgMTE0LCAxMCwgMTMsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMTMsIDI0MywgODQsIDIyMSwgMTc4LCAxMCwgMTMsIAotICAgIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxMywgMjQzLCA4NCwgMjE3LCAxMTksIDEwLCAxMywgODEsIDI0OCwgMTM4LCAxMCwgCi0gICAgMTMsIDgxLCAyMzAsIDE1OCwgMTAsIDEzLCA4MSwgMjM3LCA0MywgMTAsIDEzLCA4MSwgMjM3LCAxNDgsIDEwLCAxMywgODEsIAotICAgIDIwMywgNDcsIDEwLCAxMywgODEsIDIzMCwgMjIsIDEwLCAxMywgODEsIDIyOCwgMjgsIDEwLCAxMywgODEsIDIyNSwgNSwgCi0gICAgMTAsIDEzLCA4MSwgMjIxLCAxNzgsIDEwLCAxMywgODEsIDIxNCwgMTYxLCAxMCwgMTMsIDgxLCAyNTEsIDU5LCAxMCwgMTMsIAotICAgIDgxLCAyNDAsIDQ3LCAxMCwgMTMsIDgxLCAyMTUsIDI4LCAxMCwgMTMsIDgxLCAyMTcsIDExOSwgMTAsIDEzLCA4MSwgMjEzLCAKLSAgICAzOSwgMTAsIDEzLCA4MSwgMjA5LCAxNjksIDEwLCAxMywgODEsIDIwOSwgODgsIDEwLCAxMywgODEsIDIyOSwgMTQwLCAxMCwgCi0gICAgMTMsIDgxLCAyNDQsIDIwNywgMTAsIDEzLCA4MSwgMjM4LCAxMTQsIDEwLCAxMywgMjA5LCAyNDcsIDIzMCwgMTU4LCAxMCwgCi0gICAgMTMsIDIwOSwgMjQ3LCAyMzcsIDE0OCwgMTAsIDEzLCAyMDksIDI0NywgMjAzLCA0NywgMTAsIDEzLCAyMDksIDI0NywgMjI4LCAKLSAgICAyOCwgMTAsIDEzLCAyMDksIDI0NywgMjIxLCAxNzgsIDEwLCAxMywgMjA5LCAyNDcsIDIxNCwgMTYxLCAxMCwgMTMsIDIwOSwgCi0gICAgMjQ3LCAyNTEsIDU5LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTUsIDI4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTcsIDExOSwgMTAsIAotICAgIDEzLCAyMDksIDI0NywgMjEzLCAzOSwgMTAsIDEzLCAyMDksIDI0NywgMjI5LCAxNDAsIDEwLCAxMywgMjA5LCAyNDcsIDI0NCwgCi0gICAgMjA3LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMzgsIDExNCwgMTAsIDEzLCAyMDksIDI0NywgMjQzLCA4NCwgMjIxLCAxNzgsIDEwLCAKLSAgICAxMywgMjA5LCAyNDcsIDI0MywgODQsIDIxNywgMTE5LCAxMCwgMTMsIDIxMSwgNDAsIDI0OCwgMTM4LCAxMCwgMTMsIDIxMSwgCi0gICAgNDAsIDIzMCwgMTU4LCAxMCwgMTMsIDIxMSwgNDAsIDIzNywgNDMsIDEwLCAxMywgMjExLCA0MCwgMjM3LCAxNDgsIDEwLCAKLSAgICAxMywgMjExLCA0MCwgMjA5LCAyNTEsIDEwLCAxMywgMjExLCA0MCwgMjAzLCA0NywgMTAsIDEzLCAyMTEsIDQwLCAyMzAsIAotICAgIDIyLCAxMCwgMTMsIDIxMSwgNDAsIDIyNSwgNSwgMTAsIDEzLCAyMTEsIDQwLCAyMjEsIDE3OCwgMTAsIDEzLCAyMTEsIDQwLCAKLSAgICAyMTQsIDE2MSwgMTAsIDEzLCAyMTEsIDQwLCAyNTEsIDU5LCAxMCwgMTMsIDIxMSwgNDAsIDI0MCwgNDcsIDEwLCAxMywgCi0gICAgMjExLCA0MCwgMjE1LCAyOCwgMTAsIDEzLCAyMTEsIDQwLCAyMTcsIDExOSwgMTAsIDEzLCAyMTEsIDQwLCAyMTMsIDM5LCAKLSAgICAxMCwgMTMsIDIxMSwgNDAsIDIwOSwgMTY5LCAxMCwgMTMsIDIxMSwgNDAsIDIwOSwgODgsIDEwLCAxMywgMjExLCA0MCwgCi0gICAgMjI5LCAxNDAsIDEwLCAxMywgMjExLCA0MCwgMjQ0LCAyMDcsIDEwLCAxMywgMjExLCA0MCwgMjAyLCAxMTAsIDEwLCAxMywgCi0gICAgMjExLCA0MCwgMjM4LCAxMTQsIDEwLCAxMywgMjExLCA0MCwgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxMywgMjExLCA0MCwgCi0gICAgMjQzLCA4NCwgMjQwLCA0NywgMTAsIDEzLCAyMjcsIDEzLCAyNTEsIDMwLCAxMCwgMTMsIDIyNywgMTMsIDI0OCwgMTM4LCAKLSAgICAxMCwgMTMsIDIyNywgMTMsIDIzMCwgMTU4LCAxMCwgMTMsIDIyNywgMTMsIDI0NCwgMTg0LCAxMCwgMTMsIDIyNywgMTMsIAotICAgIDIzNywgNDMsIDEwLCAxMywgMjI3LCAxMywgMjA0LCA3MCwgMTAsIDEzLCAyMjcsIDEzLCAyMDIsIDEwNywgMTAsIDEzLCAKLSAgICAyMjcsIDEzLCAyMzcsIDE0OCwgMTAsIDEzLCAyMjcsIDEzLCAyMDksIDI1MSwgMTAsIDEzLCAyMjcsIDEzLCAyMDMsIDQ3LCAKLSAgICAxMCwgMTMsIDIyNywgMTMsIDIyOCwgMjgsIDEwLCAxMywgMjI3LCAxMywgMjI1LCA1LCAxMCwgMTMsIDIyNywgMTMsIDIyMSwgCi0gICAgMTc4LCAxMCwgMTMsIDIyNywgMTMsIDIxNCwgMTYxLCAxMCwgMTMsIDIyNywgMTMsIDI1MSwgNTksIDEwLCAxMywgMjI3LCAKLSAgICAxMywgMjQwLCA0NywgMTAsIDEzLCAyMjcsIDEzLCAyMTUsIDI4LCAxMCwgMTMsIDIyNywgMTMsIDIxNywgMTE5LCAxMCwgMTMsIAotICAgIDIyNywgMTMsIDIxNiwgMTIyLCAxMCwgMTMsIDIyNywgMTMsIDIxMywgMzksIDEwLCAxMywgMjI3LCAxMywgMjA5LCAxNjksIAotICAgIDEwLCAxMywgMjI3LCAxMywgMjA5LCA4OCwgMTAsIDEzLCAyMjcsIDEzLCAyMjksIDE0MCwgMTAsIDEzLCAyMjcsIDEzLCAKLSAgICAyMDksIDEwMCwgMTAsIDEzLCAyMjcsIDEzLCAyNDQsIDIwNywgMTAsIDEzLCAyMjcsIDEzLCAyMDIsIDExMCwgMTAsIDEzLCAKLSAgICAyMjcsIDEzLCAyMzgsIDExNCwgMTAsIDEzLCAxNjksIDI0OCwgMTM4LCAxMCwgMTMsIDE2OSwgMjMwLCAxNTgsIDEwLCAxMywgCi0gICAgMTY5LCAyNDQsIDE4NCwgMTAsIDEzLCAxNjksIDIwNCwgNzAsIDEwLCAxMywgMTY5LCAyMDIsIDEwNywgMTAsIDEzLCAxNjksIAotICAgIDIzNywgMTQ4LCAxMCwgMTMsIDE2OSwgMjA5LCAyNTEsIDEwLCAxMywgMTY5LCAyMDMsIDQ3LCAxMCwgMTMsIDE2OSwgMjI4LCAKLSAgICAyOCwgMTAsIDEzLCAxNjksIDIyNSwgNSwgMTAsIDEzLCAxNjksIDIyMSwgMTc4LCAxMCwgMTMsIDE2OSwgMjE0LCAxNjEsIAotICAgIDEwLCAxMywgMTY5LCAyNTEsIDU5LCAxMCwgMTMsIDE2OSwgMjQwLCA0NywgMTAsIDEzLCAxNjksIDIxNSwgMjgsIDEwLCAxMywgCi0gICAgMTY5LCAyMTcsIDExOSwgMTAsIDEzLCAxNjksIDIxNiwgMTIyLCAxMCwgMTMsIDE2OSwgMjEzLCAzOSwgMTAsIDEzLCAxNjksIAotICAgIDIwOSwgMTY5LCAxMCwgMTMsIDE2OSwgMjA5LCA4OCwgMTAsIDEzLCAxNjksIDIyOSwgMTQwLCAxMCwgMTMsIDE2OSwgMjA5LCAKLSAgICAxMDAsIDEwLCAxMywgMTY5LCAyNDQsIDIwNywgMTAsIDEzLCAxNjksIDIwMiwgMTEwLCAxMCwgMTMsIDE2OSwgMjM4LCAxMTQsIAotICAgIDEwLCAxMywgMjE5LCAyNTUsIDgzLCAzLCAxNTEsIDMsIDIwOSwgMjA5LCAxMCwgMTMsIDIxOSwgMjU1LCAxNTEsIDMsIDI0NCwgCi0gICAgMTg0LCAyMjUsIDE0MiwgOTksIDI0MSwgMTc2LCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIDIxMSwgMjM4LCAyMDQsIDE2LCAKLSAgICAyMjUsIDE0MiwgOTksIDIwNCwgNDYsIDIwNCwgMTYsIDIyNSwgMTQyLCA5OSwgMTUzLCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIAotICAgIDIxNiwgMTM4LCAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDIzNywgMjQ0LCAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDYxLCAKLSAgICAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDEyMCwgNzYsIDI0NiwgCi0gICAgMTgxLCAyMjUsIDE0MiwgOTksIDEyNiwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ2LCAKLSAgICAxODEsIDIyNSwgMTQyLCA5OSwgMjM5LCAyMzMsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMTIsIDg4LCA3NiwgCi0gICAgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyNDEsIDE0MywgCi0gICAgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIyMiwgNjQsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAKLSAgICAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDgsIAotICAgIDI0MywgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgCi0gICAgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCAKLSAgICA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMjIsIAotICAgIDY0LCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAKLSAgICAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDEyNiwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDYsIAotICAgIDU4LCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMTIsIDg4LCA3NiwgMjQ2LCAKLSAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIDc2LCAyNDYsIAotICAgIDU4LCAyMjUsIDE0MiwgOTksIDIyMiwgNjQsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIxOCwgNzksIDIyNSwgMTQyLCAKLSAgICA5OSwgMjE5LCAyNDIsIDIyNSwgMTQyLCA5OSwgMjQ4LCAyNDQsIDIyNSwgMTQyLCA5OSwgMjQ2LCA5OSwgMjI1LCAxNDIsIAotICAgIDk5LCAyMTEsIDE4MywgMjI1LCAxNDIsIDk5LCAyMTAsIDIxNiwgMjI1LCAxNDIsIDk5LCAyNTAsIDIxLCAyMjUsIDE0MiwgCi0gICAgOTksIDIwNCwgNywgMjI1LCAxNDIsIDk5LCAyMzAsIDk0LCAyMjUsIDE0MiwgOTksIDI0OSwgMjUsIDE2MSwgOTksIDIzNiwgCi0gICAgMTA2LCAyNDksIDI1LCAxNjEsIDk5LCAyMzYsIDEwNCwgMTYxLCA5OSwgMjM2LCAxMDMsIDE2MSwgOTksIDIzNiwgMTAyLCAKLSAgICAxNjEsIDk5LCAyMzYsIDEwMSwgMTYxLCA5OSwgMjM2LCAxMDAsIDE2MSwgOTksIDIzNiwgOTksIDE2MSwgOTksIDIzNiwgOTgsIAotICAgIDE2MSwgOTksIDIzNiwgOTcsIDE2MSwgOTksIDIzNiwgOTYsIDE2MSwgOTksIDIzNiwgOTUsIDE2MSwgOTksIDIzNiwgOTQsIAotICAgIDE2MSwgOTksIDIzNiwgOTMsIDE2MSwgOTksIDIzNiwgOTIsIDE2MSwgOTksIDIzNiwgOTEsIDE2MSwgOTksIDIzNiwgOTAsIAotICAgIDE2MSwgOTksIDIzNiwgODksIDE2MSwgOTksIDIzNiwgODgsIDE2MSwgOTksIDIzNiwgODcsIDE2MSwgOTksIDIzNiwgODYsIAotICAgIDE2MSwgOTksIDIzNiwgODUsIDE2MSwgOTksIDIzNiwgODQsIDE2MSwgOTksIDIzNiwgODMsIDE2MSwgOTksIDIzNiwgODIsIAotICAgIDE2MSwgOTksIDIzNiwgODEsIDE2MSwgOTksIDIzNiwgODAsIDE2MSwgOTksIDIzNiwgNzksIDE2MSwgOTksIDIzNiwgNzgsIAotICAgIDE2MSwgOTksIDIzNiwgNzcsIDE2MSwgOTksIDIzNiwgNzYsIDE2MSwgOTksIDIzNiwgNzUsIDE2MSwgOTksIDIzNiwgNzQsIAotICAgIDE2MSwgOTksIDIzNiwgNzMsIDE2MSwgOTksIDIzNiwgNzIsIDE2MSwgOTksIDIzNiwgNzEsIDE2MSwgOTksIDIzNiwgNzAsIAotICAgIDE2MSwgOTksIDIzNiwgNjksIDE2MSwgOTksIDIzNiwgNjgsIDE2MSwgOTksIDIzNiwgNjcsIDE2MSwgOTksIDIzNiwgNjYsIAotICAgIDE2MSwgOTksIDIzNiwgNjUsIDE2MSwgOTksIDIzNiwgNjQsIDE2MSwgOTksIDIzNiwgNjMsIDE2MSwgOTksIDIzNiwgNjIsIAotICAgIDE2MSwgOTksIDIzNiwgNjEsIDE2MSwgOTksIDIzNiwgNjAsIDE2MSwgOTksIDIzNiwgNTksIDE2MSwgOTksIDIzNiwgNTgsIAotICAgIDE2MSwgOTksIDIzNiwgNTcsIDE2MSwgOTksIDIzNiwgNTYsIDE2MSwgOTksIDgwLCAyNDksIDI1LCAxNjEsIDk5LCAyMDYsIAotICAgIDM3LCAxNjEsIDk5LCAyMDYsIDM2LCAxNjEsIDk5LCAyMDYsIDM1LCAxNjEsIDk5LCAyMDYsIDM0LCAxNjEsIDk5LCAyMDYsIAotICAgIDMzLCAxNjEsIDk5LCAyMDYsIDMyLCAxNjEsIDk5LCAyMDYsIDMxLCAxNjEsIDk5LCAyMDYsIDMwLCAxNjEsIDk5LCAyMDYsIAotICAgIDI5LCAxNjEsIDk5LCAyMDYsIDI4LCAxNjEsIDk5LCAyMDYsIDI3LCAxNjEsIDk5LCAyMDYsIDI2LCAxNjEsIDk5LCAyMDYsIAotICAgIDI1LCAxNjEsIDk5LCAyMDYsIDI0LCAxNjEsIDk5LCAyMDYsIDIzLCAxNjEsIDk5LCAyMDYsIDIyLCAxNjEsIDk5LCAyMDYsIAotICAgIDIxLCAxNjEsIDk5LCAyMDYsIDIwLCAxNjEsIDk5LCAyMDYsIDE5LCAxNjEsIDk5LCAyMDYsIDE4LCAxNjEsIDk5LCAyMDYsIAotICAgIDE3LCAxNjEsIDk5LCAyMDYsIDE2LCAxNjEsIDk5LCAyMDYsIDE1LCAxNjEsIDk5LCAyMDYsIDE0LCAxNjEsIDk5LCAyMDYsIAotICAgIDEzLCAxNjEsIDk5LCAyMDYsIDEyLCAxNjEsIDk5LCAyMDYsIDExLCAxNjEsIDk5LCAyMDYsIDEwLCAxNjEsIDk5LCAyMDYsIAotICAgIDksIDE2MSwgOTksIDIwNiwgOCwgMTYxLCA5OSwgMjA2LCA3LCAxNjEsIDk5LCAyMDYsIDYsIDE2MSwgOTksIDIwNiwgNSwgCi0gICAgMTYxLCA5OSwgMjA2LCA0LCAxNjEsIDk5LCAyMDYsIDMsIDE2MSwgOTksIDIwNiwgMiwgMTYxLCA5OSwgMjA2LCAxLCAxNjEsIAotICAgIDk5LCAyMDYsIDAsIDE2MSwgOTksIDIwNSwgMjU1LCAxNjEsIDk5LCAyMDUsIDI1NCwgMTYxLCA5OSwgMjA1LCAyNTMsIDE2MSwgCi0gICAgOTksIDIwNSwgMjUyLCAxNjEsIDk5LCAyMDUsIDI1MSwgMTYxLCA5OSwgMjA1LCAyNTAsIDE2MSwgOTksIDIwNSwgMjQ5LCAKLSAgICAxNjEsIDk5LCAyMDUsIDI0OCwgMTYxLCA5OSwgMjA1LCAyNDcsIDE2MSwgOTksIDIwNSwgMjQ2LCAxNjEsIDk5LCAyMDUsIAotICAgIDI0NSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQ5LCAyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyMTEsIDIyNSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDIxMSwgMjI1LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIAotICAgIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgCi0gICAgMTEyLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAyMTEsIDIyNSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIAotICAgIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgCi0gICAgODIsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIAotICAgIDM4LCAxMjAsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIAotICAgIDM4LCAyMzksIDE0NywgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgMjM3LCA1MywgMjE4LCAKLSAgICA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgMTEyLCA3NiwgMjM3LCAKLSAgICA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAxNDMsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjIsIDY0LCAKLSAgICA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMzAsIDE3OSwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDIzNywgNTMsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIxNiwgMTM4LCAyMzAsIDk0LCAyMTgsIDg4LCAyNDcsIDM4LCAyNTEsIDEzMiwgNzYsIDI0MywgCi0gICAgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjQzLCAKLSAgICAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMTQ3LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgCi0gICAgMjMzLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAKLSAgICAzOCwgMjEzLCAxMTIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAxNDMsIDc2LCAyNDMsIDIyMCwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDksIDE1MywgNzYsIAotICAgIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMjksIDMyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIxNywgNDksIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCA2MiwgMjMwLCA5NCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDI0NiwgMiwgMjE4LCAKLSAgICA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDI0NiwgMiwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAKLSAgICAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgMTEyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIAotICAgIDE0MywgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjA5LCAxNTMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMjksIDMyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjQ2LCAyLCAyMTgsIAotICAgIDg4LCAyNDcsIDM4LCAyMjksIDgyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCA2MSwgMjMwLCA5NCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjM5LCAxNzMsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzcsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzQsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzMsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOCwgMzIsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzEsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzAsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIwOCwgMjksIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMjgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDcsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDYsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDUsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOCwgNDQsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDMsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDIsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIwOCwgNDEsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDAsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzksIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzYsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOCwgMzUsIDE3LCAyMDIsIDg1LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIwMiwgODUsIDI0NSwgMjMzLCAxNywgMTE4LCAKLSAgICAyNDUsIDIzMywgMTcsIDEyMCwgMjQ1LCAyMzMsIDE3LCAxMjYsIDI0NSwgMjMzLCAxNywgMjM5LCAxNDcsIDI0NSwgMjMzLCAKLSAgICAxNywgMjM5LCAyMzMsIDI0NSwgMjMzLCAxNywgMjEyLCA4OCwgMjQ1LCAyMzMsIDE3LCAyMTMsIDExMiwgMjQ1LCAyMzMsIAotICAgIDE3LCAyNDEsIDE0MywgMjQ1LCAyMzMsIDE3LCAyMjIsIDY0LCAyNDUsIDIzMywgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDIwMiwgCi0gICAgODQsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIwMiwgODQsIDEwMiwgOCwgNiwgMSwgNjMsIDEwMiwgOCwgNiwgMSwgCi0gICAgMjQ5LCAyNTUsIDEwMiwgOCwgNiwgMSwgMjQ3LCAxMjUsIDEwMiwgOCwgNiwgMSwgMjQ1LCA1MSwgMTAyLCA4LCA2LCAxLCAKLSAgICA3NCwgMTAyLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTAyLCA4LCA2LCAxLCAyMzksIDc1LCAxMDIsIDgsIDYsIDEsIDIzNywgCi0gICAgMTcxLCAxMDIsIDgsIDYsIDEsIDc1LCAxMDIsIDgsIDYsIDEsIDIzMCwgMTg0LCAxMDIsIDgsIDYsIDEsIDIzMCwgNTQsIAotICAgIDEwMiwgOCwgNiwgMSwgMTU5LCAxMDIsIDgsIDYsIDEsIDIyNiwgMTg1LCAxMDIsIDgsIDYsIDEsIDIyMywgMTYzLCAxMDIsIAotICAgIDgsIDYsIDEsIDc4LCAxMDIsIDgsIDYsIDEsIDIxOSwgMTg0LCAxMDIsIDgsIDYsIDEsIDIxNywgMTM0LCAxMDIsIDgsIDYsIAotICAgIDEsIDE0NiwgMTAyLCA4LCA2LCAxLCAxOTQsIDEwMiwgOCwgNiwgMSwgMjEwLCA2OSwgMTAyLCA4LCA2LCAxLCA2OCwgMTAyLCAKLSAgICA4LCA2LCAxLCAyMDYsIDE2NCwgMTAyLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTAyLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTAyLCAKLSAgICA4LCA2LCAxLCAyMDMsIDEyNCwgMTAyLCA4LCA2LCAxLCAyMDIsIDE1OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAKLSAgICA4LCA2LCAxLCAxOTQsIDQzLCAzNywgOCwgNiwgMSwgMjQ3LCAxMjUsIDQzLCAzNywgOCwgNiwgMSwgMTQ2LCA0MywgMjQ2LCAKLSAgICAyMzksIDQzLCAyMDMsIDE5OCwgMTAzLCA4LCA2LCAxLCA2MywgMTAzLCA4LCA2LCAxLCAyNDksIDI1NSwgMTAzLCA4LCA2LCAKLSAgICAxLCAyNDcsIDEyNSwgMTAzLCA4LCA2LCAxLCAyNDUsIDUxLCAxMDMsIDgsIDYsIDEsIDc0LCAxMDMsIDgsIDYsIDEsIDI0MCwgCi0gICAgMTc0LCAxMDMsIDgsIDYsIDEsIDIzOSwgNzUsIDEwMywgOCwgNiwgMSwgMjM3LCAxNzEsIDEwMywgOCwgNiwgMSwgNzUsIAotICAgIDEwMywgOCwgNiwgMSwgMjMwLCAxODQsIDEwMywgOCwgNiwgMSwgMjMwLCA1NCwgMTAzLCA4LCA2LCAxLCAxNTksIDEwMywgOCwgCi0gICAgNiwgMSwgMjI2LCAxODUsIDEwMywgOCwgNiwgMSwgMjIzLCAxNjMsIDEwMywgOCwgNiwgMSwgNzgsIDEwMywgOCwgNiwgMSwgCi0gICAgMjE5LCAxODQsIDEwMywgOCwgNiwgMSwgMjE3LCAxMzQsIDEwMywgOCwgNiwgMSwgMTQ2LCAxMDMsIDgsIDYsIDEsIDE5NCwgCi0gICAgMTAzLCA4LCA2LCAxLCAyMTAsIDY5LCAxMDMsIDgsIDYsIDEsIDY4LCAxMDMsIDgsIDYsIDEsIDIwNiwgMTY0LCAxMDMsIDgsIAotICAgIDYsIDEsIDIwNCwgMTQ0LCAxMDMsIDgsIDYsIDEsIDIwMywgMTk2LCAxMDMsIDgsIDYsIDEsIDIwMywgMTI0LCAxMDMsIDgsIAotICAgIDYsIDEsIDIwMiwgMTU5LCAxMDMsIDIzNSwgMjU1LCAxMDMsIDIyMywgMTg3LCAxMDMsIDIxNCwgMTc5LCAxMDMsIDIxMSwgCi0gICAgMTY3LCAxMDMsIDIxOCwgMTAsIDEwMywgMjA0LCA2MywgMTgyLCA0MywgOCwgNiwgMSwgNjMsIDE4MiwgNDMsIDgsIDYsIDEsIAotICAgIDI0OSwgMjU1LCAxODIsIDQzLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTgyLCA0MywgOCwgNiwgMSwgMjQ1LCA1MSwgMTgyLCA0MywgCi0gICAgOCwgNiwgMSwgNzQsIDE4MiwgNDMsIDgsIDYsIDEsIDI0MCwgMTc0LCAxODIsIDQzLCA4LCA2LCAxLCAyMzksIDc1LCAxODIsIAotICAgIDQzLCA4LCA2LCAxLCAyMzcsIDE3MSwgMTgyLCA0MywgOCwgNiwgMSwgNzUsIDE4MiwgNDMsIDgsIDYsIDEsIDIzMCwgMTg0LCAKLSAgICAxODIsIDQzLCA4LCA2LCAxLCAyMzAsIDU0LCAxODIsIDQzLCA4LCA2LCAxLCAxNTksIDE4MiwgNDMsIDgsIDYsIDEsIDIyNiwgCi0gICAgMTg1LCAxODIsIDQzLCA4LCA2LCAxLCAyMjMsIDE2MywgMTgyLCA0MywgOCwgNiwgMSwgNzgsIDE4MiwgNDMsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg0LCAxODIsIDQzLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTgyLCA0MywgOCwgNiwgMSwgMTQ2LCAxODIsIDQzLCA4LCAKLSAgICA2LCAxLCAxOTQsIDE4MiwgNDMsIDgsIDYsIDEsIDIxMCwgNjksIDE4MiwgNDMsIDgsIDYsIDEsIDY4LCAxODIsIDQzLCA4LCAKLSAgICA2LCAxLCAyMDYsIDE2NCwgMTgyLCA0MywgOCwgNiwgMSwgMjA0LCAxNDQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwMywgMTk2LCAKLSAgICAxODIsIDQzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTgyLCA0MywgOCwgNiwgMSwgMjAyLCAxNTksIDIxNiwgMTg4LCAyMjUsIAotICAgIDI2LCA1NCwgMjE2LCAxODgsIDIyNSwgMjMsIDU0LCAxODIsIDEwMywgOCwgNiwgMSwgNjMsIDE4MiwgMTAzLCA4LCA2LCAxLCAKLSAgICAyNDksIDI1NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0NywgMTI1LCAxODIsIDEwMywgOCwgNiwgMSwgMjQ1LCA1MSwgMTgyLCAKLSAgICAxMDMsIDgsIDYsIDEsIDc0LCAxODIsIDEwMywgOCwgNiwgMSwgMjQwLCAxNzQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMzksIAotICAgIDc1LCAxODIsIDEwMywgOCwgNiwgMSwgMjM3LCAxNzEsIDE4MiwgMTAzLCA4LCA2LCAxLCA3NSwgMTgyLCAxMDMsIDgsIDYsIAotICAgIDEsIDIzMCwgMTg0LCAxODIsIDEwMywgOCwgNiwgMSwgMjMwLCA1NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDE1OSwgMTgyLCAKLSAgICAxMDMsIDgsIDYsIDEsIDIyNiwgMTg1LCAxODIsIDEwMywgOCwgNiwgMSwgMjIzLCAxNjMsIDE4MiwgMTAzLCA4LCA2LCAxLCAKLSAgICA3OCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxOSwgMTg0LCAxODIsIDEwMywgOCwgNiwgMSwgMjE3LCAxMzQsIDE4MiwgMTAzLCAKLSAgICA4LCA2LCAxLCAxNDYsIDE4MiwgMTAzLCA4LCA2LCAxLCAxOTQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTAsIDY5LCAxODIsIAotICAgIDEwMywgOCwgNiwgMSwgNjgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDYsIDE2NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwNCwgCi0gICAgMTQ0LCAxODIsIDEwMywgOCwgNiwgMSwgMjAzLCAxOTYsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTgyLCAxMDMsIAotICAgIDgsIDYsIDEsIDIwMiwgMTU5LCAyNDUsIDEyOCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxOSwgMTg0LCAxODIsIDEwMywgMjM1LCAKLSAgICAxNjQsIDE4MiwgMTAzLCAxODUsIDE4MiwgMTAzLCAyMTUsIDM2LCAxODIsIDEwMywgMjUxLCAyMzIsIDE4MiwgMTAzLCAyMDQsIAotICAgIDYzLCA1MSwgMjQzLCAxMzIsIDEwMywgMjQ2LCA0MiwgMTAzLCAyNDUsIDE3NiwgMTAzLCAyMzksIDEyOSwgMTAzLCAyMzUsIAotICAgIDE1NSwgMTAzLCAyMjIsIDIxMywgMTAzLCAyMjIsIDIwNSwgMTAzLCAyMjAsIDUxLCAxMDMsIDIxMSwgMjQ1LCAxMDMsIDExMiwgCi0gICAgMywgMjQwLCAyMTIsIDgyLCAxMDMsIDIwNSwgMTY2LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDYzLCAyMTYsIDEzMCwgCi0gICAgMjMxLCAzMiwgMTYsIDEsIDI0OSwgMjU1LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDI0NywgMTI1LCAyMTYsIDEzMCwgCi0gICAgMjMxLCAzMiwgMTYsIDEsIDI0NSwgNTEsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAKLSAgICAxNiwgMSwgMjQwLCAxNzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjM5LCA3NSwgMjE2LCAxMzAsIDIzMSwgMzIsIAotICAgIDE2LCAxLCAyMzcsIDE3MSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA3NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAKLSAgICAyMzAsIDE4NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMzAsIDU0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIAotICAgIDE1OSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMjYsIDE4NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMjMsIAotICAgIDE2MywgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA3OCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTksIDE4NCwgCi0gICAgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTcsIDEzNCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAxNDYsIDIxNiwgCi0gICAgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMTk0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIxMCwgNjksIDIxNiwgMTMwLCAKLSAgICAyMzEsIDMyLCAxNiwgMSwgNjgsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjA2LCAxNjQsIDIxNiwgMTMwLCAyMzEsIAotICAgIDMyLCAxNiwgMSwgMjA0LCAxNDQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjAzLCAxOTYsIDIxNiwgMTMwLCAyMzEsIAotICAgIDMyLCAxNiwgMSwgMjAzLCAxMjQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjAyLCAxNTksIDUxLCAxNzIsIDIzNiwgCi0gICAgMTMwLCAxMDMsIDY3LCAyMjksIDE0LCAxMDMsIDY3LCAyMTUsIDM2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDAsIAotICAgIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTEyLCAxMDMsIDY3LCAyNDQsIAotICAgIDc1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNiwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgNzgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTE4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODUsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDk0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDEwMSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MywgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgMTE2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3OSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgODQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDcsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDEwOSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDk4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5NiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTIyLCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCAxMjEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICAxMDIsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEyMCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTExLCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCA5NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDk5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODAsIDEwMywgMTIsIDIwNiwgCi0gICAgMjM5LCAyMzMsIDExMCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDkwLCAKLSAgICAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODMsIDEwMywgMTIsIDIwNiwgCi0gICAgMjM5LCAyMzMsIDExNCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA4LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIAotICAgIDEyLCAyMDYsIDIzOSwgMjMzLCA4OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTIxLCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTksIDIwOCwgMTMzLCAyMTMsIAotICAgIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDEwMywgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgODYsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDk5LCAKLSAgICAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MiwgMjA4LCAxMzMsIDIxMywgMzMsIAotICAgIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTEzLCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIAotICAgIDIzOSwgMjMzLCA5NSwgNDMsIDE4OSwgMjUxLCAxMTEsIDQzLCAxODksIDI1MSwgMTM2LCAyNDUsIDYyLCAyMzksIDE4NCwgCi0gICAgMjQ2LCAxNiwgMjA3LCAzLCAyMjIsIDgwLCAzLCAyMTEsIDkxLCAyMTAsIDIwOSwgMTE1LCAyMjQsIDExLCAyMTAsIDIwOCwgCi0gICAgMjQ2LCA0NiwgMjUwLCA1MCwgMjQyLCAxNywgMjEwLCAyMDcsIDExNSwgMjQ3LCAxODIsIDIxNiwgMTg5LCAyNDcsIDIwOCwgCi0gICAgMjUwLCA1MCwgMjIyLCA3OSwgMjA0LCA4MSwgMjA0LCA3NSwgMjA1LCAxODEsIDIyNCwgMTE4LCAyMDQsIDY1LCAyNDEsIAotICAgIDE4MCwgMjM4LCA0NiwgMjQwLCAyMjgsIDI0MSwgMTgwLCAyMzgsIDQ2LCAyNTAsIDIzOCwgMjQxLCAxODAsIDIzOCwgNDYsIAotICAgIDI1MCwgNjgsIDIzOCwgNDYsIDMsIDIyNCwgMjMxLCAyMjIsIDIxNCwgMjI0LCAzMCwgOTcsIDIwNCwgNjcsIDI0NSwgMTM5LCAKLSAgICAyMjQsIDMwLCA5NywgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMzAsIDk3LCAyMDQsIDY3LCAyMzgsIDc3LCAyMjQsIDMwLCAKLSAgICA5NywgMjM5LCAxMDIsIDIyNCwgMzAsIDk3LCAyMDQsIDk0LCAyMzgsIDc3LCAyMjQsIDMwLCA5NywgMjI4LCAxLCAyMTcsIAotICAgIDU2LCAyMjQsIDMwLCA5NywgMjA0LCA5NCwgMjQ1LCAxMzksIDIyNCwgMzAsIDk3LCAyNDUsIDEzOSwgMjI0LCAyOSwgMjIyLCAKLSAgICAyMTQsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMzksIDI0NSwgMjE3LCA1NiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIyOCwgCi0gICAgMSwgMjE3LCA1NiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIzOSwgMTAyLCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjEwLCAKLSAgICAyMTUsIDMsIDI0MCwgMTAyLCAyMzgsIDQ0LCAyMTEsIDk0LCAyMTIsIDIzMywgMjExLCA5NCwgMjA5LCA4MCwgNjIsIDI0MiwgCi0gICAgNDksIDYxLCAyMTAsIDIxNCwgNjEsIDIxMCwgMjE1LCAzLCA1LCAyNDYsIDcsIDYxLCAyMTAsIDIxNSwgMjQ4LCAxMzUsIAotICAgIDI0NiwgNywgNjEsIDIxMCwgMjE1LCAyNDgsIDEzNSwgMjQ2LCA4LCAzLCAyMTYsIDE5MCwgMjQ2LCA4LCAzLCAyMTYsIDE5MCwgCi0gICAgMjQ2LCA4LCAzLCAyMTIsIDE5LCAyNDYsIDgsIDMsIDIyNywgMTMxLCAyNDYsIDgsIDMsIDIwOCwgMTM3LCAyMzksIDE4NSwgCi0gICAgMjA0LCAxNywgMjQ4LCAyNywgMjQwLCAxMDIsIDIzNiwgNDcsIDI0MywgMTAyLCAyMTAsIDIsIDI0NywgMTU4LCAyNDYsIAotICAgIDE0OCwgMjE0LCAxNjMsIDI0MCwgMjIyLCAyMDgsIDk1LCAyNDQsIDY5LCAyMDgsIDk1LCAyMTksIDEzNSwgMjA4LCA5NSwgCi0gICAgMjQ3LCA4NSwgMjM2LCA0NywgMjE4LCAyNDgsIDIwNywgMTkzLCAyNDYsIDE1MiwgMjQ4LCAzMCwgMjE1LCAyMDIsIDIzNywgCi0gICAgMiwgMjEwLCAyMTIsIDI0OCwgMzAsIDI0MSwgMTg0LCA3NiwgMjI1LCAxMzEsIDI0MSwgMTg0LCA3NiwgMjE2LCA1MiwgMjM3LCAKLSAgICAyOCwgMjM5LCAxNDcsIDIyNywgMjMwLCAyNDYsIDYsIDIyNSwgMTA0LCAyMjcsIDIyOSwgMjQwLCA4NSwgMjI3LCAyMjksIAotICAgIDIyNywgMjMwLCAyMzksIDE5MiwgMjMxLCA1MCwgMjA0LCAxNiwgMjIzLCAxOTYsIDIwOCwgMTY1LCAyNTAsIDMzLCAyMzgsIAotICAgIDUsIDIyNCwgMjQ5LCAyMDQsIDc5LCAyMDksIDIyNSwgMjI3LCAxOTksIDI0OCwgMjM5LCAyMTgsIDEyMCwgMjE2LCAxMzgsIAotICAgIDI1MCwgMTU3LCAyMzcsIDI0NCwgMjUwLCAxNTcsIDIxOSwgMjksIDIxOSwgMzEsIDI0NiwgMTUzLCAyMTEsIDQ1LCAyMzcsIAotICAgIDEzMiwgMjEyLCA1MSwgNzYsIDIxOCwgMTAwLCAyMjUsIDE2LCAyMjAsIDMyLCAyNDgsIDExLCAyMTgsIDIxLCAyMjcsIDIxMCwgCi0gICAgMjE2LCA1MywgMjQ1LCAxNDUsIDIxNiwgNTMsIDI0OCwgMjUxLCAyNDUsIDE3OSwgMjE2LCA1MiwgMjQ1LCA4OSwgMjUsIAotICAgIDIxNiwgNTIsIDIxMSwgNzksIDI0NywgMjM3LCAyMTEsIDIyNCwgMjQ3LCAyMTksIDIzOSwgMTI4LCAyMzksIDEyNCwgMjE1LCAKLSAgICAyMjMsIDIxMCwgMTY1LCAyMTgsIDIzLCAyNDQsIDE2MywgMjIwLCA3NSwgMjEwLCAxODMsIDIzOSwgMTI1LCAyMTIsIDIwNCwgCi0gICAgMjM5LCAyNDQsIDI0NywgNzksIDMsIDIxMCwgMTU4LCAyNDQsIDEzLCAyMTIsIDcsIDIzNSwgMTYzLCAyNDUsIDE0MywgMjEzLCAKLSAgICA1MSwgMjM1LCAxNjIsIDIzNSwgMTYzLCAyNDUsIDE0MywgMjQyLCA3MywgMjQ1LCAxNzgsIDI0NiwgMTE0LCAxNDIsIDI0NywgCi0gICAgNTEsIDIyNywgMzIsIDI0NSwgODEsIDIzNiwgMTE5LCAyMTgsIDI1LCAyMTIsIDIxNywgMjQ4LCAxMTYsIDI0NywgMjMzLCAKLSAgICAyMTgsIDI2LCA3NiwgMjM5LCAxNzQsIDI0NSwgMTc3LCAyMzksIDE2MywgMjUsIDIyOSwgMzMsIDIwOSwgMTg0LCAyMDQsIDMsIAotICAgIDIzNywgMTAyLCAyMTUsIDEzLCAyNDcsIDI1MCwgMjUsIDI0NSwgOTksIDIwNCwgMTMsIDIzOCwgNDksIDI0NSwgMjUxLCAKLSAgICAyMzgsIDQ5LCAyMDgsIDUxLCAyNDIsIDU0LCAyNDgsIDE0NiwgMjIzLCAyMzUsIDI0NiwgMjMsIDI0OCwgMTQ2LCAyMjMsIAotICAgIDIzNCwgMjQ5LCAyOCwgMjQ3LCAyNDksIDIzOSwgMTYzLCAyNSwgMjI5LCAzNCwgMywgMjE4LCA4OSwgMjQ3LCAyNTAsIDMsIAotICAgIDIxOCwgMzgsIDI0NSwgMTY3LCAyMTgsIDQwLCAyMTYsIDU0LCAyMDMsIDIyNywgMjE3LCAyNDIsIDI0OCwgNTgsIDI0NywgCi0gICAgNzgsIDIzMCwgMTc4LCAyNDYsIDEwNiwgMjA4LCA5NSwgMjQwLCA2OCwgMjQ2LCAxMDUsIDIzOSwgMjQ3LCAyMzksIDI0OCwgCi0gICAgMjExLCAyMjIsIDI0OCwgMjUwLCAyMTksIDY2LCAyMTgsIDM5LCAyNDUsIDIxNSwgMjQ4LCAyNTEsIDIwOSwgMjI5LCAyMDgsIAotICAgIDk1LCAyNDUsIDEyOCwgMjM5LCAyMTksIDIxOCwgMTIxLCAyNDQsIDY2LCAyMzAsIDE2OSwgMjQzLCA5NiwgMjQ3LCAyNywgCi0gICAgMjExLCA0NCwgMjA0LCAxNywgMjQ2LCAxMzAsIDIyNCwgMzAsIDIwNSwgMjE3LCAyNDYsIDIwNCwgMjE0LCAxOTYsIDIxNCwgCi0gICAgMjIzLCAyMzgsIDExLCAyNDcsIDQ4LCAyMzcsIDU2LCAzLCAyMDgsIDIxMSwgMjIwLCAzMiwgMjA5LCA5MywgMjI3LCAyMjIsIAotICAgIDI0NywgMjQzLCA3NiwgMjM5LCAxOTYsIDIyNCwgMTE5LCAyMjUsIDEzLCAyMTYsIDExMCwgMjE2LCA1NCwgMzEsIDIyOSwgCi0gICAgMTUwLCAzLCAyMzAsIDE3NywgMjExLCAxNSwgMjI0LCAxNTIsIDIyNywgMTY3LCAyMTIsIDQ5LCAyNDUsIDE4NCwgMjI5LCAKLSAgICAzMCwgMjQ4LCAxNTgsIDI1MCwgNzgsIDMxLCAyMjEsIDE1NSwgMjQ4LCAxNTgsIDI0NCwgMTksIDMxLCAyMjEsIDE1NSwgCi0gICAgMjQwLCA2LCAyMzksIDEzMywgMjUxLCAxMTQsIDIwOCwgMjUyLCAyNDcsIDI4LCAyMzYsIDQ5LCAyNDAsIDM1LCAyMDQsIDM2LCAKLSAgICAyMTUsIDIxMywgMjQ1LCAyNTIsIDIzOSwgMjM5LCAyMTgsIDU0LCAyNSwgMjM5LCAyNDMsIDIyNCwgMTUyLCAyMjMsIDI1MywgCi0gICAgMjQ3LCA2NSwgMjQ2LCA2NSwgMjM3LCA2MCwgMjUwLCA4NSwgMjE5LCAxMzgsIDIwOCwgMTQ1LCAyMzcsIDgzLCAyNDYsIDUxLCAKLSAgICAyMDksIDE0NCwgMjA4LCAyNTMsIDI0NiwgMzcsIDI0OCwgMjAsIDIxOCwgMjQxLCAyNTAsIDg0LCAyMDUsIDIyNiwgMjM4LCAKLSAgICAyMzgsIDI0MywgMTY3LCAyMzYsIDIzMCwgMjEyLCA0MiwgMjI1LCAxNzIsIDI0OCwgNjksIDIzOCwgMjM5LCAyNDMsIDIxMywgCi0gICAgMjQ3LCAyMzYsIDIzOSwgMTk4LCAyMTgsIDg4LCAyNDcsIDM2LCAzMSwgMjIxLCAxNjAsIDIyMywgMjI2LCAzMSwgMjIxLCAKLSAgICAxNTUsIDIxNCwgMjA5LCAyMzcsIDIxNCwgMzEsIDIyOSwgMTQ5LCAyMDgsIDI3LCAyMDUsIDIwNiwgMzEsIDIxNCwgMTg5LCAKLSAgICAyMTUsIDEyNiwgMjEyLCAyNDYsIDMsIDIxNCwgMjI2LCAyMDksIDE0OSwgMjE2LCAyMDksIDI1LCAyNDgsIDI1MSwgMjEyLCAKLSAgICA2NywgMjUsIDIxMiwgNjcsIDI0OCwgNCwgMjQ4LCAyMTMsIDI1LCAyMzYsIDExMiwgMjQ2LCAxNTQsIDIzOSwgMjI1LCAyMTIsIAotICAgIDE4LCAyMTUsIDEyNywgMjEwLCAxODgsIDIxMSwgMTg5LCAyMjUsIDEzLCAyMDgsIDUyLCAyMzYsIDUwLCAyMTYsIDIxMCwgCi0gICAgMjUwLCAyMzksIDIzOSwgMTcxLCAyMTUsIDEzOSwgMjM5LCAxNzEsIDIxMCwgMTYwLCAyMDQsIDUxLCAyMjcsIDEzNiwgMjM4LCAKLSAgICAzMCwgMjE2LCAyMTEsIDIyNCwgMTgsIDIxNiwgMjExLCAyNDcsIDM5LCAyNDUsIDEzNiwgMjQ4LCAyMTAsIDI1LCAyNDgsIAotICAgIDI1MSwgMjA1LCAxODAsIDI0MCwgMjUsIDIzNiwgMTMzLCAyMTEsIDczLCAyNSwgMjQ4LCAyNTEsIDIzNSwgMTYzLCAyMzYsIAotICAgIDEzMywgMjExLCA3MywgMjUsIDIxNywgMTg0LCAyMTAsIDksIDIwOSwgMTQ5LCAyMTksIDE1NiwgMjUsIDI0OCwgMjUxLCAKLSAgICAyMTIsIDIwLCAyNDcsIDQ0LCAyMjQsIDEyLCAyNDcsIDYzLCAyNDgsIDE2MSwgMywgMjA3LCAzLCAyNDcsIDE4NCwgMjQ1LCAKLSAgICAxOTgsIDIzNiwgMzksIDI0NywgMTgyLCAyNDYsIDQ1LCAyNDQsIDIzLCAyMzYsIDM5LCAyNDcsIDE4MywgMjQ2LCAzNSwgCi0gICAgMjQ3LCAxODMsIDI0NCwgMTUsIDI0NCwgMTYsIDIzMCwgMjA4LCAyMjMsIDY3LCAyMTksIDcyLCAyMTEsIDEwNCwgMjM2LCAKLSAgICAzOSwgMjQ3LCAxODMsIDIzNiwgMzksIDMsIDIzOCwgMjIyLCAyMjAsIDY3LCAyNDcsIDE4MywgMjMwLCAxNjksIDIxOCwgMzEsIAotICAgIDIyMCwgNjYsIDI0MCwgMjI3LCAyMTgsIDMxLCAyMjAsIDY2LCAyMzYsIDQ4LCAyNDgsIDIzNSwgMjUwLCAyMywgMjA5LCAKLSAgICAxNTcsIDIyNSwgMTcyLCAyMzYsIDQ0LCAyMjcsIDEsIDIzNiwgNDQsIDI0NSwgMTgyLCAyMTEsIDU3LCAyMTQsIDE5NSwgCi0gICAgMjQ0LCAyNiwgMjExLCA1NywgMjQwLCA5MSwgMjMwLCAxODksIDIyOCwgMTMsIDIzMCwgMTY5LCAyNDcsIDE5LCAyNDAsIAotICAgIDIyNywgMjQ3LCAxOSwgNjEsIDIxOSwgMywgNjIsIDIxOSwgMywgMjA0LCA3MywgNjEsIDIzOSwgMjI1LCAyMDQsIDczLCA2MiwgCi0gICAgMjM5LCAyMjUsIDIxNSwgMjAxLCA2MiwgMjE1LCAyMDEsIDIyOCwgMTA1LCAyNDksIDEyLCAyMTYsIDIwOSwgMjUsIDIxMiwgCi0gICAgMTgzLCAyNDcsIDI0MSwgMjUsIDQ3LCAyNTAsIDIzNCwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExOSwgMjQxLCAKLSAgICA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExNiwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExNCwgMjQxLCA5OCwgNjUsIAotICAgIDIzOSwgMjM0LCAyMDcsIDExMiwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExMCwgMjE2LCAxNzIsIDIyNCwgOSwgCi0gICAgMjE5LCAxOTMsIDIwNCwgODEsIDI0NywgMTg4LCAyNDUsIDE0OSwgMjA4LCAyNDUsIDIyNywgMTgzLCAyMTYsIDIxMiwgMjQ3LCAKLSAgICAxNywgMjQyLCA2MSwgMjQ1LCAxMzUsIDIwNCwgMzksIDIxMiwgMjYsIDIxMiwgMjQsIDIzNiwgNDksIDIxNiwgMTg0LCAyMzgsIAotICAgIDM1LCAyMTMsIDM3LCAyMjQsIDQ4LCAyMTUsIDIwNSwgMjQ2LCAxNDAsIDI0MywgMTAyLCAyMTgsIDEzMSwgMjQ4LCAyMSwgCi0gICAgMjQxLCAxMTQsIDIyMCwgNzgsIDIxMSwgMjAyLCAyMTMsIDMyLCAyNDcsIDE4NywgMjUwLCAxOTgsIDIzNiwgMTE4LCAyMjgsIAotICAgIDk4LCAyNDgsIDE0NCwgMjM5LCAyNDMsIDIwOCwgNTEsIDIzOSwgMjQzLCAyNDgsIDI4LCAyMDcsIDE3MSwgMjM3LCA4MSwgCi0gICAgMjQ2LCAxNDEsIDI0OSwgMjgsIDI0NiwgMTQxLCAyMzksIDExOCwgMjQ5LCAyOCwgMjQ2LCAxNDEsIDI0OCwgNjAsIDIxOSwgCi0gICAgNSwgMjI5LCAyNCwgMjE4LCA0NCwgMjQyLCA1MSwgMjQ3LCA2NywgMjQ5LCAxNywgMjQ3LCA2NywgMjQzLCA5NSwgMjI0LCAKLSAgICAxMCwgMjQwLCAxMDIsIDI0NSwgMTUwLCAyNDAsIDEwMiwgMjA4LCAyNDYsIDI0MCwgMTAyLCAyMTYsIDIxMywgMjQwLCAxMDIsIAotICAgIDI0NywgMTgsIDI0MCwgMTAyLCAyNDIsIDYyLCAyNDAsIDEwMiwgMjExLCAxODcsIDIwNCwgMzksIDIzNiwgNTAsIDI0MCwgCi0gICAgMTAyLCAyMjQsIDQ5LCAyNDAsIDEwMiwgMjQzLCAxMDMsIDI0MCwgMTAyLCAyMTgsIDEzMiwgMjQwLCAxMDIsIDIzOSwgMTIyLCAKLSAgICAyNDAsIDEwMiwgMjM3LCAxMjksIDI0MCwgMTAyLCAyMDMsIDI1MywgMjQwLCAxMDIsIDI0OCwgMTU2LCAyNDAsIDEwMiwgCi0gICAgMjE5LCAxMjAsIDI0MCwgMTAyLCAyMTgsIDEzMiwgMjIxLCAxNjcsIDIxOSwgNDYsIDIxNywgMjMwLCAyNDYsIDEyNSwgMjQwLCAKLSAgICAxODQsIDI0MCwgMTkxLCAyNDEsIDE4MywgMjIxLCAxNjcsIDIyNCwgNywgMjA4LCAxNTAsIDYxLCAxMTIsIDIxOCwgNTksIAotICAgIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCAxMjEsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCA0OSwgMjE4LCA1OSwgCi0gICAgMjQ5LCAyMywgMjMxLCAzNSwgNjEsIDUwLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyMzksIDIzNywgMjM3LCAxMjQsIAotICAgIDU0LCAyMDQsIDczLCAyMzcsIDEyNCwgNTQsIDIyMCwgNTIsIDIzNywgMTI0LCA1NCwgMjA5LCAyMCwgMTEyLCA1NCwgMjA5LCAKLSAgICAyMCwgMTIxLCA1NCwgMjQ2LCAzNiwgMjM3LCAxMDAsIDU0LCAxNzEsIDIzNywgMTAwLCA1NCwgMjQ1LCAxMjIsIDIwMywgCi0gICAgMjQ5LCAyMzcsIDgzLCAyNDAsIDE4NywgMjIyLCAyMzYsIDIxMCwgNjgsIDIzMCwgMTYwLCAyNDIsIDU2LCAyMjksIDg1LCAKLSAgICAyNDgsIDcxLCAyMDMsIDI0OSwgMjQ2LCA5LCAyMTcsIDE2NSwgMjM3LCAxMDMsIDIxOCwgMjIsIDIyNSwgMTEyLCAyMTIsIAotICAgIDIzOSwgMjUwLCA0NiwgMjEyLCAyMzksIDIzNiwgMjQzLCAyMTIsIDIzOSwgMjAzLCAyNDksIDIxNCwgMjQwLCAyMDMsIDI0OSwgCi0gICAgMjQ4LCAzLCAyMzksIDE2OSwgMjQ3LCAxNTAsIDIzMSwgNTAsIDIxMiwgMTM2LCAyNDcsIDE0OSwgMjMxLCA1MCwgMjEyLCAKLSAgICAxMzYsIDI0NywgMjMyLCAyMzgsIDYwLCAyMjUsIDEyMiwgMjAzLCAyNTAsIDI0MCwgODIsIDIyNSwgMTIzLCAyNSwgMjAzLCAKLSAgICAyNTEsIDIzNiwgMTI3LCAyMzcsIDk5LCAxMjAsIDIyNCwgMjQxLCAyMzYsIDEyNywgMjM3LCA5OSwgMTIwLCAyMDMsIDI0OCwgCi0gICAgMjM2LCAxMjcsIDIzNywgOTksIDIxOCwgNTEsIDIyMCwgNjUsIDIwMywgMjUxLCAzLCAyNDcsIDE2OCwgMjQxLCAxODEsIAotICAgIDI0NywgMjA5LCAzLCAyMDYsIDQ2LCAyMTgsIDIzMCwgMywgMjQ4LCAzMiwgMjM3LCAxNDUsIDIyNSwgMTIzLCAzLCAyMzcsIAotICAgIDIyNywgMjE4LCAxNjgsIDIyNSwgMTA4LCAyMjUsIDEyMywgMywgMjA3LCAxODAsIDIyMCwgNDQsIDIyNSwgMTIyLCAyMjAsIAotICAgIDQ0LCAyMDMsIDI1MCwgMjQ5LCAyNywgMjQ1LCAxOTksIDIwMywgMjM0LCAyMTcsIDIzNSwgMjMwLCAxNjksIDIyMCwgNjEsIAotICAgIDIzMCwgMTY5LCAyMzgsIDM0LCAyMzgsIDg5LCAyNDksIDI4LCAyNTAsIDIyMSwgMjQwLCAxOTYsIDI1MSwgMjAsIDI1MSwgCi0gICAgMjEsIDIyNCwgMzksIDIzMSwgNTUsIDIxMiwgNjIsIDIzMSwgMjUsIDI0NCwgMTIsIDIxOCwgMjI5LCAyMzcsIDIyMSwgMjQ0LCAKLSAgICAxNjcsIDIyNywgOTcsIDIyMywgOTEsIDIxOCwgNTAsIDI0MCwgMTAzLCAyMjUsIDc0LCAyMzcsIDE0NCwgMjQ4LCAyMjksIAotICAgIDIxOCwgNTMsIDIxMCwgODgsIDIxOCwgMTI0LCAyMjksIDY3LCA4MiwgMjI3LCAxLCAyMjcsIDE3NCwgMjE1LCAyNTIsIDIzOCwgCi0gICAgMTgwLCAyMTEsIDYzLCAyMjksIDY2LCAyNDcsIDI0MiwgMjQ1LCAxNTIsIDMsIDIzNywgNTUsIDIwNCwgNTgsIDI0OCwgMTU0LCAKLSAgICAyMzcsIDU1LCAyNDcsIDIwMywgMjM3LCA1NSwgMTIwLCAyMzcsIDUzLCAyMTEsIDIyMCwgMjM3LCA1NSwgMjM3LCAyMzcsIAotICAgIDIzNywgNTUsIDIzNywgNTYsIDMsIDQ3LCAyNDgsIDI2LCAyMzcsIDU1LCAyMzcsIDI0NCwgMjM3LCA1NSwgMjAzLCA0NSwgCi0gICAgMjM3LCA1NSwgMjE3LCAxNjYsIDIzNywgNTUsIDIzNywgNTYsIDMsIDIxNiwgNTQsIDIxNiwgNjcsIDIzNywgNTMsIDIzNywgCi0gICAgNTYsIDI0NCwgNjYsIDI0MywgMjIyLCAyMTMsIDYzLCAzLCAzNCwgNzAsIDIzMSwgNiwgMjQxLCAxMTcsIDE1NywgMjQ3LCAKLSAgICAxODAsIDI1MCwgMjIwLCA5NywgMjQ4LCAxMiwgMjEyLCA1NCwgOTcsIDI0NSwgMjQ0LCA5NywgMjExLCAxOTYsIDIxMCwgCi0gICAgMTY3LCA5NywgMjQyLCA0OSwgMjQ0LCAxNDUsIDk3LCAyMTgsIDEyNSwgNzYsIDIxOCwgNDUsIDIzOSwgMjEwLCAyNDgsIDgzLCAKLSAgICAyNDMsIDEzMywgOTcsIDIxMSwgMjEyLCAyNDgsIDI1MCwgMjA5LCAzOCwgMjQ4LCAyNTAsIDYxLCAyMzksIDE5NywgMjM2LCAKLSAgICAxMiwgMjE4LCA1NywgOTcsIDIyNCwgNTMsIDI0OSwgMTAsIDI0NSwgOTIsIDI0MCwgMjE0LCA3OSwgMjQzLCA5NywgNTQsIAotICAgIDI0NSwgMTQxLCAyNDcsIDM3LCAyNDgsIDIzNCwgMywgMjAzLCA0MywgNTQsIDI0OCwgMjM0LCAzLCAyNDMsIDk3LCA1NCwgCi0gICAgMjQ4LCAyMzQsIDMsIDI0MCwgMjMwLCA1NCwgMjQ4LCAyMzQsIDMsIDIxOCwgMjAsIDU0LCAyMjQsIDUzLCAzLCAyMDQsIDExLCAKLSAgICAyNDYsIDE3OCwgMywgMTc3LCAyMDgsIDkxLCAyNSwgMjAzLCA0MywgNTQsIDIxNCwgMTc0LCAyMTgsIDIyOCwgMjQ1LCAyMjAsIAotICAgIDI0NywgMjA3LCAyMjQsIDEwOCwgMjM5LCAyMDIsIDI0MywgMTU0LCAyMTksIDI0OCwgMjQzLCAxNTksIDI0MiwgMTIsIDI0MCwgCi0gICAgMTEsIDIzOSwgMTgyLCAxNzEsIDI0MCwgMTEsIDIzOSwgMTgyLCAyMTksIDE1NCwgMywgMjQ1LCA5NSwgMjE5LCAxNTQsIAotICAgIDI0MCwgOTUsIDIwNiwgMjI0LCAyNDcsIDcyLCAyMDksIDE4MywgMjQ3LCA3MiwgMjQ3LCAzOCwgMjMxLCAzNSwgMjQ2LCAKLSAgICAxNzgsIDMsIDE3NywgMjA4LCA5MCwgMjQ2LCAxNzgsIDMsIDE4MywgMjA4LCA5MCwgMjQ4LCAyMzEsIDI0NiwgMTc3LCAyNDYsIAotICAgIDIyLCAyMTcsIDE2MSwgMjE1LCAxOTEsIDIxNywgMTYxLCAyMTksIDk0LCAyMTEsIDUzLCAyMTUsIDEzMywgMjA4LCA4MiwgCi0gICAgMjE1LCAxMzMsIDI0OCwgOCwgMjEwLCA3LCAyMjcsIDIyNywgMjIxLCAxNTgsIDIyMSwgMTU5LCAzLCAyNDQsIDY1LCAyNDUsIAotICAgIDE1MSwgMjQ2LCAxNiwgMjQ4LCA5LCAxNzEsIDI0OCwgOSwgMjM3LCAyNDQsIDI0OCwgOSwgMjQ4LCAyNiwgMjQ4LCA5LCAKLSAgICAyMTksIDI0MywgMjQ4LCA5LCAyNDgsIDYsIDIyMywgODUsIDI0OSwgMTQsIDIxNCwgMTgyLCAyMjQsIDI0MiwgMjA5LCAxNjIsIAotICAgIDIxNiwgMTUyLCAyMTksIDE1MiwgMjQwLCA2NSwgMjI1LCAxNzIsIDIxNCwgMjIyLCAyNTAsIDE5NSwgMjE3LCAxODUsIDI1MSwgCi0gICAgMTE5LCAyMjcsIDMsIDI0NiwgMTYyLCAyMjQsIDI1NCwgMjE5LCAyMTAsIDIwOCwgOTgsIDIzMSwgNDYsIDIwOCwgOTgsIAotICAgIDIxOSwgMTYxLCAyNDEsIDIzNiwgOTcsIDIzMSwgNDMsIDI0MSwgNTcsIDI0MSwgNTgsIDMsIDE4MywgNTMsIDU1LCAyNDYsIAotICAgIDE2LCAyMjUsIDEzNywgMywgMjI2LCAyNDksIDIzOSwgMjI1LCAyNDYsIDE2LCAyMjUsIDEzNywgMywgMjE2LCAxODgsIDIzOSwgCi0gICAgMjI1LCAxNzEsIDIyNSwgMTM3LCAzLCAyMTYsIDE4OCwgMjM5LCAyMjUsIDE3MSwgMjI1LCAxMzcsIDMsIDIyNiwgMjQ5LCAKLSAgICAyMzksIDIyNSwgMjE4LCAyOCwgMjE4LCAyOSwgMjM2LCA1MywgMjIyLCAyMTAsIDIyNCwgODAsIDIxOCwgMTc2LCAyMjQsIAotICAgIDgwLCAyMTgsIDE3NywgMywgODYsIDUzLCAyNTAsIDUwLCAyMjcsIDIyMiwgMjA1LCAyMjksIDIyNCwgNzksIDIyNCwgODAsIAotICAgIDIxOCwgMTc3LCAyMjAsIDY4LCAyMjEsIDE5MiwgMjI0LCA4MCwgMjE4LCAxNzUsIDI1MCwgMTk2LCAzLCAyNDgsIDIyMCwgCi0gICAgMjQ3LCA2NSwgMjQ3LCA2NiwgMywgMjM5LCAyMTgsIDIwNSwgMjI2LCAyNDcsIDY1LCAyMDksIDE1OSwgMjE2LCAyMDQsIAotICAgIDIwNSwgMjI1LCAyNDAsIDYsIDIxNywgMjE3LCAyMTgsIDM1LCAyMTEsIDc0LCAyMTcsIDI1NCwgMjQ4LCAxNjAsIDIwNywgCi0gICAgMTM4LCA4NiwgMjUwLCA5MSwgMjQ2LCAxOCwgODYsIDI1LCA5NiwgMTcxLCAyNDYsIDYyLCAyNTAsIDkxLCAyNDYsIDE4LCAKLSAgICA4NiwgMjUsIDk2LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTIsIDMsIDQzLCAxMTgsIDIxOSwgMTk5LCAyNDYsIDE4LCAxODMsIAotICAgIDI1LCAxNzcsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MSwgMjUwLCAxOTQsIDE4MywgMjUsIDE3NywgMTcxLCAyNDYsIDYyLCAKLSAgICAyNTAsIDkxLCAxMjQsIDI0NywgMjA2LCA5NywgMTM4LCAyNDcsIDIwNiwgOTcsIDIxMSwgMjE3LCAzLCAyNDcsIDU4LCA5NSwgCi0gICAgMjExLCAyMTYsIDIxMSwgMjE3LCAzLCAxMTgsIDIxMSwgMjQxLCAyMDQsIDc1LCAyMTEsIDIxNywgMywgMTI2LCAyMTEsIAotICAgIDI0MSwgMjA0LCA3NCwgMjQ4LCAyMDMsIDI0MSwgMTE3LCAyMTgsIDgxLCAyMjcsIDIxNywgMjI1LCAxNDksIDIzOCwgNDksIAotICAgIDIxNiwgMTEsIDIyNSwgMTQ5LCAyMzgsIDQ5LCAyMjcsIDQzLCAzLCAyMzEsIDE3LCAyMTksIDksIDI0NiwgMTYsIDIyNywgCi0gICAgNDMsIDMsIDIyOSwgMTUxLCAyMjksIDE1MSwgMjI3LCA0MiwgMTcxLCAyMjcsIDQyLCAyNDgsIDEyOCwgMjQ4LCAxMjksIDMsIAotICAgIDI0NywgNTgsIDk1LCAyNDgsIDcsIDIyNywgMTA1LCA5NywgMjE2LCAyMDUsIDI0NywgMTQ1LCAyNDksIDI2LCAzLCA5NiwgCi0gICAgNTMsIDU1LCAyNDEsIDg0LCAzLCA5NiwgNTMsIDU1LCAyMjAsIDMyLCAzLCAyNDAsIDIxMiwgMTMxLCAzLCA0OSwgNTAsIDUzLCAKLSAgICA1NSwgMjExLCAyNDksIDMsIDg2LCA1MywgNTUsIDIwOCwgMTQ1LCAzLCAxNzcsIDUzLCA1NSwgMjIxLCAxOTIsIDExOCwgCi0gICAgMjA2LCAyNDgsIDI0MSwgMTQxLCA5NywgMjI5LCAxNDgsIDIwOSwgMTUyLCAyMzEsIDExLCAxNiwgMzUsIDgsIDYsIDIyNywgCi0gICAgMTczLCAyMzEsIDExLCAxNiwgMzUsIDgsIDUsIDIyNywgMTczLCAyMzEsIDExLCAxNiwgMzUsIDIyMSwgNDUsIDIzMSwgMTEsIAotICAgIDE2LCAzNSwgMjEwLCAxMDIsIDIzMSwgMTEsIDE2LCAzNSwgOCwgMjI3LCAxNzMsIDIzOSwgMjQ5LCAyNDEsIDExNywgMjA4LCAKLSAgICAxNDAsIDIwMywgMjI1LCAyMzcsIDEzMCwgMjIxLCAyOCwgMjUsIDI0OCwgMTQsIDIzNiwgMTM0LCAyMTgsIDEwNiwgMjI0LCAKLSAgICAxNTEsIDIwOSwgMTYwLCAyNDUsIDExMiwgMjQ4LCAyNTEsIDIxMiwgODgsIDIxOCwgNjEsIDIxMSwgOTUsIDMsIDEwMSwgCi0gICAgMjQzLCA4NSwgMjMwLCAxNjksIDE2LCAzNSwgMjQ4LCAxNDEsIDIwOCwgODAsIDI0MSwgMTAwLCA2MiwgNTEsIDI0NywgMTQ1LCAKLSAgICA2MSwgNTEsIDI0NywgMTQ1LCAyMjgsIDgsIDIxNiwgMTM4LCAyNDYsIDYxLCAyMjgsIDgsIDI0OCwgMjYsIDI0NiwgNjEsIAotICAgIDIyOCwgOCwgMjE5LCAyNDMsIDI0MywgMjIxLCAyMjgsIDgsIDI0OCwgMjYsIDI0MywgMjIxLCA1LCAyMTksIDI0MywgMjQzLCAKLSAgICAyMjEsIDUsIDI0OCwgMjYsIDI0MywgMjIxLCAyMDYsIDIyMywgMjE2LCAxMzgsIDIwOCwgODUsIDI0MiwgNjksIDIxNiwgCi0gICAgMTM4LCAyMDgsIDg1LCAyMDYsIDIyMywgNSwgMjE2LCAxMzgsIDIwOCwgODUsIDI0MiwgNjksIDUsIDIxNiwgMTM4LCAyMDgsIAotICAgIDg1LCAyMjYsIDI1MSwgNTAsIDIxMywgNzcsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgNTAsIDIxMywgNzcsIDYxLCAyNDYsIAotICAgIDYxLCA0MywgMjQ1LCAxMzEsIDIxOCwgNDgsIDI0NSwgMTMxLCAyMTgsIDQ5LCAzLCAyMzcsIDEzNiwgNTYsIDI0NSwgMTMxLCAKLSAgICAyMTgsIDQ4LCAyMjEsIDE2MiwgNDksIDIxMywgMTQ2LCAzLCAxMjYsIDI0MywgODMsIDIyMSwgMTYyLCA1MCwgMjEzLCAxNDYsIAotICAgIDMsIDEyNiwgMjQzLCA4MywgMTYsIDM1LCAyMjUsIDg3LCAyNDYsIDE4NCwgNjEsIDgsIDI0NSwgMTMwLCA3OSwgOCwgMjQ1LCAKLSAgICAxMzAsIDI0NiwgMjIyLCAyNDUsIDEzMCwgMjIwLCA0MCwgOTcsIDI0MiwgNzIsIDc2LCAyMTksIDMyLCAyMzAsIDM5LCAyMjQsIAotICAgIDIyLCAyMTAsIDk2LCAyMjQsIDIzNywgMywgMjIyLCA2NCwgMjQ3LCAyMjIsIDI0NywgMjM4LCA3NiwgMjM1LCAyMjIsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAxMTgsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAxMjAsIDIyMCwgODMsIDI0NiwgMjAsIAotICAgIDI0MCwgMTAzLCAxMjYsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMzksIDE0NywgMjIwLCA4MywgMjQ2LCAyMCwgCi0gICAgMjQwLCAxMDMsIDIzOSwgMjMzLCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjEyLCA4OCwgMjIwLCA4MywgMjQ2LCAKLSAgICAyMCwgMjQwLCAxMDMsIDIxMywgMTEyLCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxNDMsIDIyMCwgODMsIAotICAgIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjIsIDY0LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjA5LCAxNTMsIDIyMCwgCi0gICAgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDExMywgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTU1LCAKLSAgICAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjIwLCAyNywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTMyLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMjA5LCAyNiwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIzOSwgMTQzLCAyNDYsIDIwLCAyNDAsIDEwMywgCi0gICAgMjM5LCAyMzEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMTIsIDg0LCAyNDYsIDIwLCAyNDAsIDEwMywgMjEzLCAxMTAsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAyNDEsIDE0MiwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMiwgNjIsIDI0NiwgMjAsIDI0MCwgMTAzLCAKLSAgICAyMDksIDE1MSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTExLCAyNDYsIDIwLCAyNDAsIDEwMywgMjA3LCAxNTMsIDUwLCAKLSAgICAyMTEsIDIxNiwgNTAsIDIxMSwgMjE3LCAzLCAxMTgsIDIxMSwgMjQxLCAyMDQsIDc1LCA1MCwgMjExLCAyMTcsIDMsIDEyNiwgCi0gICAgMjExLCAyNDEsIDIwNCwgNzQsIDI0NywgMTc1LCAyNDcsIDE3NiwgMywgMjExLCAyNDEsIDIwNCwgNzQsIDIxNSwgMjUxLCAKLSAgICAyNDgsIDEyOCwgMjQ4LCA5LCAyNDcsIDU2LCAyMjUsIDEwOSwgMjQ2LCAxOSwgNjIsIDIxMiwgNjMsIDI1LCAyNDUsIDEyOSwgCi0gICAgMjIxLCAxOTIsIDIxOCwgMTEyLCAyMzYsIDEyNiwgMjI1LCAxMjMsIDIzMSwgNTAsIDI0NywgMTUyLCAyMTAsIDIyOCwgMjI3LCAKLSAgICAxNjYsIDIxMiwgNTIsIDIxOSwgMjQ1LCAyMTEsIDE3OCwgMjQ0LCAxNTAsIDIxMCwgMjEwLCAyMTEsIDIwNSwgMjExLCAyMDYsIAotICAgIDIwNCwgNTksIDIzMCwgODMsIDQ5LCAyMzcsIDEyNCwgMjA5LCAxNjIsIDIxNiwgMTUyLCAyMDksIDE2MiwgMjE2LCAxNTMsIAotICAgIDMsIDIxOSwgMTUzLCA1MCwgMjM3LCAxMjQsIDIwOSwgMTYyLCAyMTYsIDE1MiwgNjEsIDIwOCwgMTI2LCAyMDksIDE2MSwgCi0gICAgNjIsIDIwOCwgMTI2LCAyMDksIDE2MSwgMjA5LCAxNjIsIDIyMCwgMzIsIDIwOCwgMTQ1LCA3NiwgMjI0LCA3NiwgMjQ2LCAKLSAgICA0MCwgMjI0LCA4MCwgMjE4LCAxNzYsIDI0OSwgMjYsIDc2LCAyNDEsIDU3LCAyMTEsIDEwMCwgMjQxLCA1NywgMjQxLCA1OCwgCi0gICAgMywgMjI3LCAxMzEsIDIzOSwgMTg5LCAyNDEsIDU3LCAyMTksIDEwLCAxMTUsIDIxMSwgMTAwLCAyNDEsIDU3LCAyMjcsIAotICAgIDEwNCwgMjE5LCA5MywgNjIsIDIxNywgMTYxLCAyMjYsIDI1MSwgNDksIDIxOSwgOCwgMjI2LCAyNTEsIDQ5LCAyNDgsIDI0NiwgCi0gICAgMjE5LCA5LCAyMjYsIDI1MSwgNDksIDIzOSwgMTQ5LCAyMTksIDksIDIyNiwgMjUxLCA0OSwgMjE5LCAxNDcsIDIyNiwgMjUxLCAKLSAgICA0OSwgMjQ1LCAxNDQsIDQ5LCAyMDMsIDIyMCwgMjM3LCAxMjMsIDIwNywgMTc0LCAyMjAsIDUyLCAyMzcsIDEyNCwgNTQsIAotICAgIDIxNiwgMTg4LCAyMzcsIDEyNCwgMywgMjM5LCAyNTQsIDIxMSwgMTk1LCAyMTYsIDczLCAyMTYsIDE4OCwgMjM3LCAxMjQsIAotICAgIDMsIDIzOSwgMjU0LCAyMTEsIDE5NSwgMjE2LCA3MywgMjA5LCAyMCwgMTEyLCA1NCwgMjE2LCA3MywgMjA5LCAyMCwgMTIxLCAKLSAgICA1NCwgMjE2LCA3MywgMjA1LCAyMjgsIDIzNywgMTIzLCAyMTYsIDczLCAyMzcsIDEyNCwgMywgMTAxLCAyNDAsIDMsIDI0MCwgCi0gICAgMjAxLCAyMTYsIDE4OCwgMjM3LCAxMjQsIDMsIDIxOSwgNzEsIDI0OCwgMTA0LCAxMDEsIDI1LCAyMTUsIDI1MywgMjM5LCAKLSAgICAyNTMsIDYxLCAxMjEsIDIxOCwgNTksIDQ5LCAyMzcsIDEyNCwgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCA0OSwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCA0OSwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDQ5LCAyMTgsIDU5LCAyNDksIDIzLCAKLSAgICAyMzEsIDM1LCA2MiwgNTAsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgMTEyLCAyMTgsIDU5LCAKLSAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCAxMTIsIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgMTIxLCAyMTgsIDU5LCAyMzEsIDM1LCA2MiwgMTEyLCAyMTgsIDU5LCAyNDksIDIzLCAKLSAgICAyMzEsIDM1LCA2MiwgMTIxLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyNDQsIDExLCAyNDUsIDIyMCwgMjI5LCAxNTAsIAotICAgIDI1LCAyMjQsIDksIDEyNiwgMjIyLCAyMTgsIDI0NSwgMjE5LCAyMTcsIDIzMSwgMjE4LCA2NywgMjQ3LCA3NCwgNjIsIDIzNywgCi0gICAgOTEsIDIxMywgMzMsIDIzOSwgMjAyLCAyNDMsIDE1NCwgNjEsIDIzNywgOTEsIDIxMywgMzMsIDIzOSwgMjAyLCAyNDMsIAotICAgIDE1NCwgMjEyLCA3LCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAxNTQsIDIwOSwgMjIxLCAyNDcsIDIyLCAyMDQsIDYsIDIyOSwgCi0gICAgMTQ5LCAxMTgsIDI0NywgMTQ2LCAyMjQsIDksIDEyMCwgMjQ3LCAxNDYsIDIyNCwgOSwgMTI2LCAyNDcsIDE0NiwgMjI0LCA5LCAKLSAgICAyMDgsIDExNywgMzgsIDIxOCwgMjI4LCAyNDUsIDIyMCwgMjM3LCA5MSwgMjQzLCAxNTQsIDIxNCwgMTg0LCAyMTcsIDIzMiwgCi0gICAgMjM1LCAxNTYsIDI0MCwgNjUsIDIzNSwgMTU2LCAyMTksIDI0OCwgMjQzLCAxNjAsIDIzNSwgMTU2LCAyNDMsIDEwNywgMywgCi0gICAgMjA5LCAxMTIsIDI0MywgMTA3LCAzLCAyMDksIDExMywgMjUsIDIxOCwgMTYxLCAyNDMsIDEwNywgMywgMjE4LCAxNjEsIAotICAgIDIzOSwgMTM1LCAzLCAyMTgsIDE2MSwgMjM5LCAxMzUsIDMsIDIwOCwgMjI1LCAyMzksIDEzNSwgMywgMjUwLCAyMzIsIDIwMywgCi0gICAgMTk2LCA2MiwgMjM5LCAxODIsIDIzOSwgMTgyLCAxNzEsIDIzOSwgMTgyLCAyNDcsIDM4LCAxMjIsIDI0MywgMTQwLCAyNDcsIAotICAgIDM4LCAyNDAsIDExLCAyNDcsIDIzMywgMjQwLCAxMSwgMjQ3LCA4NywgMjQxLCA5NCwgMjIxLCAxNjAsIDI0MSwgOTQsIDIyMSwgCi0gICAgMTYxLCAyMTksIDE1MywgMjQxLCA5NCwgMjIxLCAxNjEsIDIxOSwgMTU5LCAyMjEsIDE2MCwgMjIxLCAxNjEsIDIxOSwgMTUzLCAKLSAgICAyMjEsIDE2MSwgMjE5LCAxNTksIDI0MSwgOTQsIDI0MywgMTA2LCAyNDEsIDk0LCAyMTksIDE1MywgMjQxLCA5NCwgMjE5LCAKLSAgICAxNTEsIDI0MywgMTA2LCAyMTksIDE1MywgMjE5LCAxNTEsIDIwNCwgODUsIDIxMSwgMjAyLCAyMjEsIDE2MSwgMjE5LCAxNTksIAotICAgIDIxMSwgMjAyLCAyNDcsIDczLCAyMTksIDE1OSwgMjQ0LCAxMSwgMjA0LCAxNSwgMjI0LCAxMDUsIDIyNSwgNjQsIDIxOSwgCi0gICAgMjAxLCAyNDYsIDE4LCA1MCwgMjUsIDQ5LCAyMTMsIDE0NiwgMjUwLCA5MSwgMjQ3LCA1OCwgMjAzLCAxOTYsIDIzMSwgNDEsIAotICAgIDIzOSwgMTc2LCAyMTIsIDcyLCA5NywgMjQ0LCA2NCwgMjM5LCAxNzYsIDIxMiwgNzIsIDk3LCAyNDUsIDIyMSwgMzgsIDIyOSwgCi0gICAgMTUxLCAyMTUsIDIxNCwgMjIyLCAyMTAsIDIxOSwgMTU0LCAzLCA0MywgMjA5LCAxMTIsIDIxMSwgNjUsIDI0NiwgMTc3LCAKLSAgICAyNDQsIDE5NiwgMjI5LCAzMywgMjI3LCA5OCwgMjExLCAyMTUsIDIzNywgNjUsIDIzMSwgNTAsIDIxMiwgMTM2LCAxMjYsIAotICAgIDIxNiwgMTYzLCA1NSwgMTI2LCAyMTYsIDE2MywgNTYsIDEyNiwgMjE2LCAxNjMsIDIyNywgMjIyLCAxMjYsIDIxNiwgMTYzLCAKLSAgICAyMTYsIDE2LCA0OSwgMjExLCAyMTIsIDI0NywgMTkyLCA1MCwgMjExLCAyMTIsIDI0NywgMTkyLCAxMjAsIDIxMSwgMjEyLCAKLSAgICAyNDcsIDE5MSwgMTI2LCAyMTEsIDIxMiwgMjQ3LCAxOTEsIDQ5LCAyMDksIDM4LCAyNDcsIDE5MiwgNTAsIDIwOSwgMzgsIAotICAgIDI0NywgMTkyLCA0OSwgMjUwLCAyMjAsIDI0NywgMTkyLCA1MCwgMjUwLCAyMjAsIDI0NywgMTkyLCAyMjQsIDM0LCAyNDcsIAotICAgIDE5MiwgMjI3LCAxMzIsIDIyNCwgMzQsIDI0NywgMTkyLCAyMjcsIDEzMiwgMjI0LCAzMywgMjQ4LCAyNDgsIDk4LCAzLCAKLSAgICAyNDgsIDI0NywgMjQ4LCAyNDgsIDEzMiwgMjAzLCAxOTYsIDI0OCwgMjQ4LCA5OCwgMywgMTMyLCAyMDMsIDE5NiwgMjQ4LCAKLSAgICAyNDgsIDI2LCAxMzIsIDIwMywgMTk2LCAyNDgsIDI0OCwgOTgsIDMsIDI2LCAxMzIsIDIwMywgMTk2LCAxNTcsIDI0NiwgCi0gICAgMTY5LCA4MiwgMjQ4LCAyNDgsIDk4LCAzLCAyNiwgMjQ2LCAxNjgsIDIwMywgMjMzLCAyMjUsIDEwNiwgMjI0LCAxNCwgMjM5LCAKLSAgICAxMDMsIDIwOCwgMTY3LCAyMDgsIDEyMiwgMjExLCA4NiwgNzYsIDIyNywgMTQ2LCAyMTIsIDEzNywgNzYsIDIzMCwgMTcwLCAKLSAgICAyMjMsIDI1MSwgMjM3LCAyNDEsIDI0MCwgMTAyLCAyMzcsIDI0MSwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIDI0MCwgMTg0LCAKLSAgICAyNDAsIDEwMywgMywgMjA5LCAxNzksIDc2LCAyMzAsIDg1LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDcsIAotICAgIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgOCwgMjUsIDIxMiwgMzAsIDI0MCwgMTg0LCAyMTIsIDMwLCAyNDAsIAotICAgIDEwMywgMywgMTcxLCAyMjQsIDgsIDI1LCAyNDUsIDI0NiwgMjEwLCAxNjYsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAxNzEsIAotICAgIDIyNCwgOCwgMjUsIDIwOCwgMjQzLCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIzNywgMTM1LCAyMTIsIDMwLCAKLSAgICAyNDAsIDEwMywgMywgMjM2LCA1MiwgMjA0LCA4LCAyNDAsIDEwMiwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIAotICAgIDI0MCwgMTg0LCAyNDAsIDEwMywgMjE0LCAyMTQsIDI0NCwgNDUsIDIzOSwgMTc0LCAyMTYsIDExMywgMjQwLCAxMDIsIDIxMiwgCi0gICAgMzAsIDI0MCwgMTAzLCAzLCAyMzcsIDU0LCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIxMCwgMjEwLCAyMTIsIAotICAgIDI5LCAyNDAsIDEwMiwgMjIyLCAyMTYsIDI0MCwgMTAyLCAyNDAsIDIwMywgMjQwLCAxMDIsIDIwNiwgMjUzLCAyNDAsIDEwMiwgCi0gICAgMjQwLCAxMDMsIDMsIDI0NSwgMjQ2LCAyMTAsIDE2NiwgMjE5LCAxLCAyNDAsIDEwMiwgMjQ1LCAyMTIsIDI0MCwgMTAyLCAKLSAgICAyNDUsIDIxMywgMjQwLCAxMDIsIDIyOSwgNjUsIDI0MCwgMTAyLCAyNDAsIDEwMywgMjA5LCAyMywgMzQsIDIyOSwgNjYsIAotICAgIDIyOSwgNjUsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgMjI5LCA2NSwgMjQwLCAxMDMsIDMsIDI0NiwgMTYsIAotICAgIDI0MCwgMTg0LCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTAsIDI0MCwgMTAzLCAzLCAyMTEsIDE2LCAyMDgsIDE1MSwgCi0gICAgMjUsIDIwNCwgOCwgMjQwLCAxOTEsIDI0MCwgMTAzLCAzLCAyMTEsIDE2LCAyMDgsIDE1MSwgMjUsIDIwOCwgMjQzLCAyNDAsIAotICAgIDE4NCwgMjQzLCAxNjEsIDI0MCwgMTAyLCAyMDMsIDIzMiwgMjQwLCAxMDIsIDI1MCwgMjE0LCAyNDAsIDEwMiwgMjE4LCAxOSwgCi0gICAgMjQwLCAxMDIsIDI0NSwgMTE0LCAyNDAsIDEwMiwgMjE4LCAyMzIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgMjI3LCAxNywgCi0gICAgNzYsIDIwOCwgNjIsIDI0MywgMTYxLCAyNDcsIDE0OCwgMjE2LCAxMTMsIDI0MCwgMTAyLCAyMzksIDExNCwgMjQwLCAxMDMsIAotICAgIDMsIDE3MSwgMjI0LCA3LCAyNTAsIDIxMiwgMjQwLCAxMDIsIDI0MCwgNTgsIDI0MCwgMTAyLCAyMDQsIDYwLCAyNDAsIDEwMiwgCi0gICAgMjEyLCA1MywgMjQwLCAxMDIsIDIwOCwgMjA1LCAyNDAsIDEwMiwgMjM3LCAyNDIsIDI0MCwgMTAyLCAyMjcsIDQsIDI0NSwgCi0gICAgMTE0LCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAyMzYsIDIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgCi0gICAgMTcxLCAyMjQsIDgsIDI1LCAyNDUsIDI0NiwgMjEwLCAxNjYsIDI0MCwgMTAzLCAyMTQsIDE4NiwgMjMxLCA1MCwgMjQwLCAKLSAgICA1OSwgMjUwLCA1NiwgMjQwLCAxMDIsIDIzOSwgMTk0LCAyNDAsIDEwMiwgMjEyLCA1NCwgMjQwLCAxMDIsIDI0MywgMTMzLCAKLSAgICAyNDAsIDEwMiwgMjQwLCAxMDMsIDIwNCwgMywgMjI0LCA3LCAyNDAsIDEwMywgMywgMjI1LCAxMiwgMjI1LCA3NiwgMjM3LCAKLSAgICAyNDEsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIwOSwgCi0gICAgMTc5LCA3NiwgMjMwLCA4NSwgMjEyLCAzMCwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAyMTIsIDMwLCAKLSAgICAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjM3LCA1NCwgMjQwLCAxODQsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMDMsIDIxOCwgCi0gICAgMjEyLCAzMSwgMjI5LCA2NSwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDI0NiwgMTYsIDI0MCwgMTg0LCAyMTgsIDE5LCAyNDcsIAotICAgIDE4LCAyNDAsIDEwMiwgMjQ1LCAxMTQsIDI0NywgMTgsIDI0MCwgMTAyLCAyMDQsIDYwLCAyNDcsIDE4LCAyNDAsIDEwMiwgCi0gICAgMjEyLCA0NywgMjM5LCAxMTQsIDI0MCwgMTAyLCAyMTIsIDQ3LCAyMTIsIDMwLCAyNDAsIDEwMiwgMjA2LCAyMTgsIDI0MCwgCi0gICAgMTAyLCAyNDAsIDEwMywgMywgMjE1LCAyMTIsIDI0MCwgMTg0LCAyNDAsIDEwMywgMywgMjIxLCAxOTIsIDIzOCwgMjcsIAotICAgIDIzOCwgMTYwLCAyNDAsIDEwMywgMywgMjIwLCA1MiwgMjM4LCAxNjAsIDIxOCwgMjMwLCAyNDcsIDIzOSwgMjQ0LCA1OSwgCi0gICAgMjE0LCAxNjQsIDIyNCwgNDgsIDIzNywgNTcsIDIyNCwgNDgsIDIxMSwgMjE4LCAyMjQsIDQ4LCAyMzcsIDkzLCAyMTgsIAotICAgIDIzMCwgMjE2LCAxODcsIDExOCwgMjM3LCAxMjMsIDIxOCwgMjMwLCAyMTYsIDE4NywgMjQ3LCAyNTEsIDIzNywgMTAwLCAKLSAgICAyMzEsIDUwLCAyNDYsIDIyNCwgMjE4LCAyMzAsIDIzOSwgMTEzLCAyMTgsIDIzMCwgMywgMjE4LCAxOSwgMjQwLCAxMDIsIAotICAgIDIxOCwgMjMwLCAzLCAyMzksIDE4MywgMjM3LCA5OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjExLCAKLSAgICAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjExLCAKLSAgICAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjA3LCAxNzQsIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAKLSAgICAyMjksIDIwNywgMTc0LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAxNTMsIDI0MSwgCi0gICAgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjA3LCAxNzQsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIAotICAgIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgCi0gICAgMjA1LCAyMTIsIDIyNywgMjI5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDIxMSwgMjM4LCAKLSAgICAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMDUsIAotICAgIDIxMiwgMjI3LCAyMjksIDc5LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgCi0gICAgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIAotICAgIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDIxMSwgMjM4LCAyMDQsIAotICAgIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIDIxMSwgMjM4LCAyNDEsIAotICAgIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIDc5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMjExLCAKLSAgICAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIAotICAgIDc5LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAyMzYsIDEyNSwgMjE3LCA0MCwgNTEsIDIxOSwgCi0gICAgMjMzLCAyMzYsIDEyNSwgMjE3LCA0MCwgNTEsIDIxOSwgMjM0LCAyMzEsIDUwLCA2MiwgMjExLCAxNzcsIDIxMiwgMiwgMjE3LCAKLSAgICA0MCwgNTEsIDIxOSwgMjMzLCAyMTIsIDIsIDIxNywgNDAsIDUxLCAyMTksIDIzNCwgMjMxLCA1MCwgNjIsIDIxMSwgMTc3LCAKLSAgICA5NiwgMjE1LCAyMTgsIDE3NywgMjE1LCAyMTgsIDg2LCAyMTUsIDIxOCwgMTgzLCAyMTUsIDIxOCwgMTMyLCAzMiwgMjQwLCAKLSAgICAyNTEsIDIxOSwgMjMzLCA3OSwgMTMyLCAzMiwgMjQwLCAyNTEsIDIxOSwgMjMzLCAzMiwgMTcxLCAyNDAsIDI1MSwgMjE5LCAKLSAgICAyMzMsIDc5LCAzMiwgMTcxLCAyNDAsIDI1MSwgMjE5LCAyMzMsIDc5LCAyNTAsIDIzNiwgMjE5LCAyMzMsIDIxMCwgMTY5LCAKLSAgICAyNTAsIDIzNiwgMjE5LCAyMzMsIDQxLCA3OSwgNTIsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIAotICAgIDIzMywgNDEsIDc5LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDQxLCA3OSwgMTI0LCA1MiwgMjQ1LCAKLSAgICAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAyMzAsIDI0OCwgMjE5LCAyMzMsIDQxLCAyMzAsIDI0OCwgMjE5LCAKLSAgICAyMzMsIDc5LCA0MSwgMjMwLCAyNDgsIDIxOSwgMjMzLCAyMDUsIDI0MiwgNzksIDIxMiwgMCwgMjA1LCAyNDIsIDc5LCAyMTYsIAotICAgIDc0LCAyMTIsIDAsIDI0NiwgMTY3LCAyNDgsIDIwLCAyMTYsIDc0LCAyNDYsIDE2NywgMjQ4LCAyMCwgMjE1LCAyMTgsIDIzNywgCi0gICAgMzgsIDIxMSwgODEsIDIyNywgNDAsIDIxNiwgMTkzLCAyNDcsIDM5LCAyMzYsIDI0MCwgMjA4LCAxMTAsIDIzNiwgMjQwLCAKLSAgICAyMDgsIDExMSwgMywgMjQ3LCAxNzgsIDIyMSwgMTY3LCAyMDgsIDExMCwgMjI0LCAyMTMsIDE1NywgMjE2LCAxOTQsIDIxMSwgCi0gICAgODcsIDIwOCwgMTA4LCAyMDgsIDEwOSwgMjQ3LCAzOSwgMjQ3LCAxNTMsIDIyMCwgMjksIDI0NywgMTUzLCAyMDgsIDU5LCAKLSAgICAyNDcsIDE1NCwgMjExLCA2MSwgMjI0LCAxMDksIDI1MCwgMjQwLCAyMzksIDI1MCwgMjQxLCA3NywgMjE4LCA1MSwgMjQ3LCAKLSAgICAzOSwgMjIwLCAyOSwgMjE4LCA1MSwgMjQ3LCAzOSwgMjA5LCAxOTcsIDIyMCwgMjksIDIwOSwgMTk3LCAyNTAsIDIyLCAyMjAsIAotICAgIDI5LCAyNTAsIDIyLCAyMTYsIDE0NSwgMjA2LCA0NywgMjQ0LCA0MSwgMjA4LCA1MCwgMjUwLCA4NiwgMjI3LCA4LCAyMDgsIAotICAgIDExNiwgMjI0LCA0MiwgMjI0LCAxMywgMjE2LCAxOTIsIDIxMCwgMTgyLCAyMTYsIDE5MiwgMjI0LCAxMywgMjQ3LCA4NiwgCi0gICAgMjUxLCA5NSwgMjA4LCAxMDcsIDIxMiwgMjUxLCAyMTUsIDE4OCwgMjExLCAyMTAsIDIzNiwgMTA2LCAyMDgsIDExNCwgMjI3LCAKLSAgICAxMzQsIDgwLCAyMDgsIDExNCwgMjI3LCAxMzQsIDI0NSwgMTk5LCA1NCwgMjE4LCA1MSwgMjQ3LCAyNCwgMjE2LCA2NywgCi0gICAgMjI3LCAxMzQsIDIwOCwgODIsIDIzOSwgMjI2LCAyMjAsIDMyLCAyMTgsIDMwLCAyNDMsIDg4LCAyMjEsIDE5MiwgMjQxLCAKLSAgICA2MywgNTQsIDIxMiwgMjgsIDk3LCAyMjEsIDE5MiwgMjEyLCAyOCwgOTcsIDIxNywgMTYwLCAyMjcsIDg3LCAyMzEsIDUwLCAKLSAgICAyMzAsIDE5OCwgMjE4LCA5NywgOTcsIDI0MywgMTE0LCAyMjEsIDE2NiwgMjI3LCA4NywgOTcsIDIxOCwgMjQsIDIwNCwgODEsIAotICAgIDk3LCAyMjEsIDE4MiwgMjA0LCA4MSwgOTcsIDI0OCwgODIsIDIyMSwgMTkyLCAyNDgsIDgxLCAyNDgsIDgwLCAyMjQsIDEzLCAKLSAgICAyNDgsIDgwLCAyMTksIDI1LCAyMjEsIDE5MiwgMjE5LCAyNCwgMjQ2LCAxMzIsIDI0NSwgMTIzLCAyMjQsIDIzNiwgOTcsIAotICAgIDIwMywgMjQ3LCA5NywgMjE2LCA4MywgMjQ5LCAyOCwgOTcsIDIwOCwgMTY4LCAyMDQsIDgxLCAyNDYsIDEzLCAyMTIsIDIwOSwgCi0gICAgMjQ4LCAyMDYsIDI0OCwgMjA0LCAyMTksIDU3LCAyNDUsIDE4MywgMjQ1LCA3OSwgMjQ5LCA3LCAyNDYsIDQxLCA0OSwgMjI2LCAKLSAgICAyMjksIDIwOCwgODYsIDMsIDIxNSwgMTg5LCAyNDUsIDE2NCwgMjE3LCAyMjAsIDU0LCA0MywgMjMxLCAyNSwgMjExLCAyMzksIAotICAgIDI0NywgMjMxLCA5NywgMjM4LCA1OSwgOTcsIDI0NSwgMTU3LCAyNSwgMjI4LCAxOCwgMjEyLCA1NCwgMjUxLCAxMzUsIDIxMiwgCi0gICAgMjMxLCAyNDksIDYsIDI0OCwgMTI3LCAyNDgsIDEyOCwgMjQ4LCAxNTEsIDIxOCwgOTcsIDc2LCAyMDMsIDIzMSwgMjM3LCAKLSAgICAxMzEsIDI1LCAyMDMsIDIyNSwgMjEzLCA4LCAyMjAsIDU2LCAyNDIsIDQ2LCAyMjQsIDE3LCAyMTYsIDE5MywgMjA4LCAxMTgsIAotICAgIDIyNCwgMTksIDI0OCwgMTksIDIwNiwgMjIzLCAyMjQsIDExOSwgMjUxLCA1MiwgMjA2LCAyMjMsIDI1MSwgNTIsIDIwNiwgCi0gICAgMjIzLCA1LCAyNTEsIDUyLCA1LCAyNTEsIDUyLCAyMjEsIDE3MSwgMjUxLCA1MiwgMjUxLCA1MywgMjQ0LCAyNSwgMjUxLCAKLSAgICA1MywgMjUwLCA5NywgMjE0LCAyMjEsIDIyMCwgMjksIDIzOSwgMjUwLCAyNDEsIDc3LCAyNDMsIDIxMSwgMjI3LCA0MCwgCi0gICAgMjE5LCA2MCwgMjEyLCAyNTEsIDEzNiwgMTYsIDM1LCAyMTcsIDM2LCAxMzYsIDE2LCAzNSwgMjUxLCA1NCwgMTM2LCAxNiwgCi0gICAgMzUsIDIzOSwgMjQ5LCAxMzYsIDE2LCAzNSwgMjQxLCAxNzksIDEzNiwgMTYsIDM1LCAyMDQsIDgwLCAxMzYsIDE2LCAzNSwgCi0gICAgMjUwLCAxNDYsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjE2LCAxMzIsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjE2LCAKLSAgICAxMzEsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjA1LCAxOTUsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjA1LCAxOTQsIAotICAgIDEzNiwgMTYsIDM1LCAyMDUsIDIwOSwgMTM2LCAxNiwgMzUsIDIwNSwgMjA4LCAxMzYsIDE2LCAzNSwgMjA1LCAyMDcsIDEzNiwgCi0gICAgMTYsIDM1LCAyMTAsIDIyMSwgMTM2LCAxNiwgMzUsIDIxOCwgMTg0LCAyMTAsIDIyMSwgMTM2LCAxNiwgMzUsIDYyLCAyMTAsIAotICAgIDIyMSwgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MiwgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MSwgCi0gICAgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MCwgMTM2LCAxNiwgMzUsIDI0NiwgNjQsIDEzNiwgMTYsIDM1LCAyMTUsIAotICAgIDEsIDEzNiwgMTYsIDM1LCAyMjIsIDUxLCAxMzYsIDE2LCAzNSwgMjA1LCAxOTMsIDEzNiwgMTYsIDM1LCAyMDUsIDE5MiwgCi0gICAgMTM2LCAxNiwgMzUsIDIxNSwgMjE5LCAyMTUsIDEsIDEzNiwgMTYsIDM1LCAyMTUsIDIxOSwgMjE1LCAwLCAxMzYsIDE2LCAKLSAgICAzNSwgMjM4LCAzMSwgMTM2LCAxNiwgMzUsIDIxMiwgMTMzLCAxMzYsIDE2LCAzNSwgMjMwLCAyMjEsIDIxOSwgMjM5LCAxMzYsIAotICAgIDE2LCAzNSwgMjMwLCAyMjEsIDIxOSwgMjM4LCAxMzYsIDE2LCAzNSwgMjQ1LCAxMzQsIDc2LCAyMzAsIDIyMCwgMTM2LCAxNiwgCi0gICAgMzUsIDIxNiwgMTI4LCA3NiwgMjMwLCAyMjAsIDEzNiwgMTYsIDM1LCAyNDUsIDE3NCwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAKLSAgICAyMzAsIDIxOSwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDI0NSwgMTczLCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ1LCAxMzQsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIDI0NSwgMTM0LCA3NiwgMjQ1LCAxNzIsIDEzNiwgMTYsIDM1LCAKLSAgICAyNDUsIDE3NCwgMjUwLCAxODgsIDEzNiwgMTYsIDM1LCAyMTUsIDIsIDc2LCAyNDUsIDE3NCwgMjUwLCAxODgsIDEzNiwgMTYsIAotICAgIDM1LCAyMTAsIDI1MywgNzYsIDIxNSwgMiwgNzYsIDI0NSwgMTczLCAxMzYsIDE2LCAzNSwgMjA2LCA0MiwgMTM2LCAxNiwgCi0gICAgMzUsIDIwOCwgMjE4LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIyNywgMjMzLCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIAotICAgIDI1MCwgMTg3LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIxMCwgMjUzLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAKLSAgICAyMTUsIDIsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIDIxMCwgMjUzLCA3NiwgMjE1LCAyLCA3NiwgMjUwLCAxODYsIAotICAgIDEzNiwgMTYsIDM1LCAyMDUsIDIxMCwgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjgsIDc2LCAyNTAsIDE4NiwgCi0gICAgMTM2LCAxNiwgMzUsIDIxNiwgMTI4LCA3NiwgMjUwLCAxODUsIDEzNiwgMTYsIDM1LCAyMTYsIDEyNywgMTM2LCAxNiwgMzUsIAotICAgIDIxNiwgMTI2LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjUsIDEzNiwgMTYsIDM1LCAyMTYsIDEyNCwgMTM2LCAxNiwgMzUsIDI1MSwgCi0gICAgMTcsIDEzNiwgMTYsIDM1LCAyNTEsIDE2LCAxMzYsIDE2LCAzNSwgMjI1LCA5NywgMTM2LCAxNiwgMzUsIDIxNSwgNywgMTM2LCAKLSAgICAxNiwgMzUsIDI1MCwgOTAsIDEzNiwgMTYsIDM1LCAyMTYsIDE1NSwgMTM2LCAxNiwgMzUsIDIxNiwgMTU0LCAxMzYsIDE2LCAKLSAgICAzNSwgMjUwLCAyNSwgMTM2LCAxNiwgMzUsIDI0OCwgNTIsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjA5LCAyMTYsIDEzNiwgCi0gICAgMTYsIDM1LCAyMDksIDIxNSwgMTM2LCAxNiwgMzUsIDIxNywgNDIsIDIyNywgMTIzLCAxMzYsIDE2LCAzNSwgMjQ4LCAwLCAKLSAgICAxMzYsIDE2LCAzNSwgMjQ3LCAyNTUsIDEzNiwgMTYsIDM1LCAyNDcsIDI1NCwgMTM2LCAxNiwgMzUsIDI1MCwgMjQ5LCAxMzYsIAotICAgIDE2LCAzNSwgMjIwLCA1NSwgMTM2LCAxNiwgMzUsIDIxMSwgMTk4LCAxMzYsIDE2LCAzNSwgMjA4LCAyMTYsIDEzNiwgMTYsIAotICAgIDM1LCAyMzcsIDIxMCwgMTM2LCAxNiwgMzUsIDIwNCwgNjgsIDEzNiwgMTYsIDM1LCAyMTgsIDE4LCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ3LCA3MCwgMTM2LCAxNiwgMzUsIDIwNywgMTY2LCAxMzYsIDE2LCAzNSwgMjQ3LCA0MSwgMjI0LCAyMywgMTM2LCAxNiwgCi0gICAgMzUsIDIxNCwgMTk5LCA3NiwgMjMwLCA4NywgMTM2LCAxNiwgMzUsIDI0NywgODMsIDEzNiwgMTYsIDM1LCAyMDgsIDc5LCAKLSAgICAxMzYsIDE2LCAzNSwgMjExLCA5MiwgMjA4LCA3OSwgMTM2LCAxNiwgMzUsIDIyNywgMzksIDEzNiwgMTYsIDM1LCAyMTIsIAotICAgIDExLCAxMzYsIDE2LCAzNSwgMjA2LCAyMDIsIDEzNiwgMTYsIDM1LCAyMzYsIDUwLCAyNDIsIDI3LCAxMzYsIDE2LCAzNSwgCi0gICAgMjUwLCA3MCwgMTM2LCAxNiwgMzUsIDIxOCwgMjYsIDI1MCwgNzAsIDEzNiwgMTYsIDM1LCAyNDcsIDIxMCwgMTM2LCAxNiwgCi0gICAgMzUsIDIxOCwgMTcsIDI0NywgMjEwLCAxMzYsIDE2LCAzNSwgMjUwLCAyNDYsIDEzNiwgMTYsIDM1LCAyMTEsIDQ4LCAyMTAsIAotICAgIDIwMiwgMjExLCA0NywgMTM2LCAxNiwgMzUsIDIxMSwgNDgsIDIxMCwgMjAyLCAyMTEsIDQ2LCAxMzYsIDE2LCAzNSwgMjEwLCAKLSAgICAyNDksIDEzNiwgMTYsIDM1LCAyMTcsIDI0NywgMTM2LCAxNiwgMzUsIDI0MywgMTUwLCAxMzYsIDE2LCAzNSwgMjQzLCAxNTIsIAotICAgIDEzNiwgMTYsIDM1LCAyNDMsIDE1MSwgMTM2LCAxNiwgMzUsIDIxNywgMTY5LCAxMzYsIDE2LCAzNSwgMjE3LCAxNTgsIDEzNiwgCi0gICAgMTYsIDM1LCAyNDUsIDEyMSwgMTM2LCAxNiwgMzUsIDI0NSwgMTIwLCAxMzYsIDE2LCAzNSwgMjQ1LCAxMTksIDEzNiwgMTYsIAotICAgIDM1LCAyNDUsIDExOCwgMTM2LCAxNiwgMzUsIDI0NSwgMTE3LCAxMzYsIDE2LCAzNSwgMjUxLCAyOSwgMTM2LCAxNiwgMzUsIAotICAgIDI0OCwgMjA3LCA3NiwgMjI1LCA4MSwgMTM2LCAxNiwgMzUsIDI0OCwgMjA3LCA3NiwgMjA2LCA3NCwgMTM2LCAxNiwgMzUsIAotICAgIDIxNiwgODEsIDEzNiwgMTYsIDM1LCAyMzYsIDQyLCAxMzYsIDE2LCAzNSwgMjIyLCA3OSwgMTM2LCAxNiwgMzUsIDI0NCwgCi0gICAgMTMyLCAxMzYsIDE2LCAzNSwgMjI0LCAzNywgMTM2LCAxNiwgMzUsIDE2MiwgMjQyLCA1OSwgMTM2LCAxNiwgMzUsIDE2MiwgCi0gICAgMjE5LCAyMTQsIDYyLCAyMjcsIDIxNywgMjMwLCAyMDQsIDUwLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDIzMCwgMjA0LCAKLSAgICA1MCwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIzMCwgMjA0LCA1MCwgMjA4LCA4NSwgNjIsIDI0MiwgNjksIDIzMCwgMjA0LCAKLSAgICA1MCwgMjA4LCA4NSwgNjIsIDIxMiwgNDcsIDUsIDI0NiwgNjEsIDIyNSwgMTAsIDI2LCA2MSwgMjQ2LCA2MSwgMjYsIDYxLCAKLSAgICAyNDYsIDYxLCA3OSwgNjEsIDI0NiwgNjEsIDIwNSwgMjQyLCA3OSwgNjEsIDI0NiwgNjEsIDI0MCwgMTk1LCA3OSwgNjEsIAotICAgIDI0NiwgNjEsIDYxLCAyNDYsIDYyLCAyNDUsIDE5NSwgNjIsIDUsIDI0NiwgNjEsIDIxNSwgMTkxLCAyMDksIDIxNywgNjIsIAotICAgIDIwOCwgMjEzLCAyMTEsIDE3NywgNjIsIDIxMiwgNDcsIDUsIDIxMSwgMTc3LCAxNTcsIDYxLCAyMTEsIDE3NywgMjI1LCAxMCwgCi0gICAgNjEsIDIxMSwgMTc3LCAyNiwgNjEsIDIxMSwgMTc3LCA3OSwgNjEsIDIxMSwgMTc3LCAyMDUsIDI0MiwgNzksIDYxLCAyMTEsIAotICAgIDE3NywgMjQwLCAxOTUsIDc5LCA2MSwgMjExLCAxNzcsIDYxLCA1MSwgMjQ1LCAxOTUsIDYyLCAyMDUsIDI0MiwgNSwgMjExLCAKLSAgICAxNzcsIDYxLCA1MSwgMjQ1LCAxOTUsIDYyLCAyMjUsIDEwLCAyMTEsIDE3NywgNTEsIDIwOSwgMjE3LCA2MiwgMjA4LCAyMTMsIAotICAgIDI0MywgMjIxLCA2MiwgMjA1LCAyNDIsIDUsIDI0MywgMjIxLCA2MiwgMjI1LCAxMCwgNSwgMjQzLCAyMjEsIDYxLCAyNDMsIAotICAgIDIyMiwgMjQ1LCAxOTUsIDYyLCAyMDUsIDI0MiwgNSwgMjQzLCAyMjEsIDYxLCAyNDMsIDIyMiwgMjQ1LCAxOTUsIDYyLCAKLSAgICAyMjUsIDEwLCAyNDMsIDIyMSwgMjQzLCAyMjIsIDIwOSwgMjE3LCA2MiwgMjA4LCAyMTMsIDIyNiwgMjQ2LCA2MiwgMjA1LCAKLSAgICAyNDIsIDUsIDIyNiwgMjQ2LCA2MiwgMjI1LCAxMCwgNSwgMjI2LCAyNDYsIDYxLCAyMjYsIDI0NywgMjQ1LCAxOTUsIDYyLCAKLSAgICA1LCAyMjYsIDI0NiwgMjA5LCA2MywgMzAsIDI0NSwgMTMwLCAxNTcsIDMwLCAyNDUsIDEzMCwgMjI1LCAxMCwgMzAsIDI0NSwgCi0gICAgMTMwLCAyNiwgMzAsIDI0NSwgMTMwLCAyMDUsIDI0MiwgMjYsIDMwLCAyNDUsIDEzMCwgMjA1LCAyNDIsIDc5LCAzMCwgMjQ1LCAKLSAgICAxMzAsIDI0MCwgMTk1LCA3OSwgMzAsIDI0NSwgMTMwLCAyMDksIDYzLCAyMTQsIDI1NCwgMTU3LCAyMTQsIDI1NCwgMjI1LCAKLSAgICAxMCwgMjE0LCAyNTQsIDI2LCAyMTQsIDI1NCwgNzksIDIxNCwgMjU0LCAyMDUsIDI0MiwgNzksIDIxNCwgMjU0LCAyNDAsIAotICAgIDE5NSwgNzksIDIxNCwgMjU0LCAxNTcsIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjI1LCAxMCwgMjM5LCAyMzMsIAotICAgIDIxMSwgMTkxLCAyNTAsIDU5LCAyNiwgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgMjM5LCAyMzMsIDIxMSwgCi0gICAgMTkxLCAyNTAsIDU5LCAyMDUsIDI0MiwgNzksIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjQwLCAxOTUsIDc5LCAKLSAgICAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDE1NywgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgMTAsIAotICAgIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNiwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAyMTIsIDg4LCAKLSAgICAyMTEsIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjQwLCAxOTUsIAotICAgIDc5LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMTU3LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgCi0gICAgMTAsIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIAotICAgIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIAotICAgIDE1NywgMTI2LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMTI2LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMTI2LCAKLSAgICAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMTI2LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMzksIAotICAgIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjM5LCAKLSAgICAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMzksIDE0NywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIAotICAgIDIxNiwgNzQsIDE1NywgMjM5LCAxNDcsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIzOSwgMjMzLCAyMTgsIAotICAgIDYxLCA2MiwgMjExLCA5NCwgNzksIDIzOSwgMjMzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjEyLCA4OCwgCi0gICAgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMTIsIDg4LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjEyLCA4OCwgMjE4LCAKLSAgICA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDIyNSwgMTAsIDI0MSwgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDI0MSwgCi0gICAgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjA1LCAyNDIsIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIAotICAgIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjA3LCAxNTUsIDIxOCwgNjEsIDYyLCAKLSAgICAyMTEsIDk0LCA3OSwgMjA3LCAxNTUsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjA3LCAxNTUsIDIxOCwgNjEsIDIxOCwgCi0gICAgMTE4LCAyMTEsIDk0LCA5NiwgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDUsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDg2LCA1MywgMywgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgNSwgMjA4LCA4NiwgMjUwLCA5NCwgCi0gICAgOTYsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIAotICAgIDk0LCA4NiwgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDk2LCA1MywgMywgMjI4LCA4LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyMjgsIDgsIDIwOCwgCi0gICAgODYsIDI1MCwgOTQsIDg2LCA1MywgMywgMjI4LCA4LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyMjgsIDgsIAotICAgIDIwOCwgODYsIDI1MCwgOTQsIDk2LCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgMTc3LCA1MywgMywgNSwgMjQxLCAzMSwgCi0gICAgMjUwLCA5NCwgODYsIDUzLCAzLCA1LCAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDUzLCAzLCA1LCAyNDEsIDMxLCAyNTAsIDk0LCAKLSAgICA5NiwgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDg2LCA1MywgMywgCi0gICAgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDk2LCA1MywgMywgMjQxLCAzMSwgCi0gICAgMjUwLCA5NCwgNzksIDE3NywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA4NiwgNTMsIDMsIDI0MSwgMzEsIDI1MCwgCi0gICAgOTQsIDc5LCAxODMsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgOTYsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDc5LCAxNzcsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA4NiwgNTMsIDMsIDIyOCwgOCwgCi0gICAgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDE4MywgNTMsIDMsIDIyOCwgOCwgMjQxLCAzMSwgMjUwLCA5NCwgOTYsIDIwOCwgODQsIAotICAgIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCA4NiwgMjA4LCAKLSAgICA4NCwgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDk2LCAKLSAgICAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgCi0gICAgODYsIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIAotICAgIDc1LCA5NiwgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgCi0gICAgODYsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDk2LCAKLSAgICAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCA4NiwgMjA4LCAKLSAgICA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgOTYsIDIwOCwgODQsIAotICAgIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIwNSwgMjQyLCA3OSwgMjEzLCA3NSwgCi0gICAgODYsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDIwNSwgMjQyLCAKLSAgICA3OSwgMjEzLCA3NSwgOTYsIDI0MCwgMSwgNDcsIDE3NywgMjQwLCAxLCA0NywgODYsIDI0MCwgMSwgNDcsIDE4MywgMjQwLCAKLSAgICAxLCA0NywgOTYsIDEwMywgNDcsIDE3NywgMTAzLCA0NywgODYsIDEwMywgNDcsIDE4MywgMTAzLCA0NywgOTYsIDI0NSwgCi0gICAgMjIyLCA0NywgMTc3LCAyNDUsIDIyMiwgNDcsIDg2LCAyNDUsIDIyMiwgNDcsIDE4MywgMjQ1LCAyMjIsIDQ3LCA5NiwgNzksIAotICAgIDI0NSwgMjIyLCA0NywgMTc3LCA3OSwgMjQ1LCAyMjIsIDQ3LCA4NiwgNzksIDI0NSwgMjIyLCA0NywgMTgzLCA3OSwgMjQ1LCAKLSAgICAyMjIsIDQ3LCA5NiwgNzksIDQ3LCAxNzcsIDc5LCA0NywgODYsIDc5LCA0NywgMTgzLCA3OSwgNDcsIDk2LCA0MSwgNDcsIAotICAgIDE3NywgNDEsIDQ3LCA4NiwgNDEsIDQ3LCAxODMsIDQxLCA0NywgMTUzLCAyMDQsIDQ2LCA0MSwgNDcsIDE1MywgMjQxLCAKLSAgICAxNzYsIDQxLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA0MSwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0MSwgNDcsIDQ5LCAKLSAgICA1MCwgNDEsIDQ3LCAxMTIsIDEyMSwgNDEsIDQ3LCAyMDQsIDI2LCA5NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIAotICAgIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgODYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAxNTcsIDE1MCwgNDcsIDIwNCwgCi0gICAgMjYsIDE1MywgMjA0LCA0NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCAxNTcsIDE1MCwgNDcsIAotICAgIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgCi0gICAgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDE1MCwgNDcsIDIwNCwgMjYsIAotICAgIDE1MywgMjQxLCAxNzYsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMjExLCAyMzgsIDIwNCwgNDYsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIAotICAgIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDIyNSwgMTAsIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgCi0gICAgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAyMTEsIDIzOCwgMjA0LCA0NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAxNzcsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgNzksIDE1MCwgNDcsIAotICAgIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIDc5LCAxNTAsIDQ3LCAKLSAgICAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgMjA1LCAyNDIsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDIwNSwgMjQyLCA3OSwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAKLSAgICAxNzYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMDUsIDI0MiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDk2LCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCAxNzcsIDIwOCwgODYsIDI1MCwgOTQsIDg2LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDIwOCwgODYsIDI1MCwgCi0gICAgOTQsIDk2LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgCi0gICAgMjUwLCA5NCwgODYsIDYxLCA1MywgMjA0LCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDYxLCA1MywgMjA0LCA1LCAyMDgsIAotICAgIDg2LCAyNTAsIDk0LCA5NiwgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgMTc3LCA1MywgMywgMjIxLCAxNjIsIDIwOSwgCi0gICAgMjQ4LCA4NiwgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgMTgzLCA1MywgMywgMjIxLCAxNjIsIDIwOSwgMjQ4LCA3OSwgCi0gICAgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDEwNSwgNzksIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMjAsIDIwOSwgNTcsIDc5LCAKLSAgICA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTE4LCAyMzcsIDEzNywgNzksIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMTgsIDIwOSwgCi0gICAgNjAsIDk2LCAyNDcsIDI0NSwgNjEsIDQ3LCA4NiwgMjQ3LCAyNDgsIDIxMywgNzgsIDYxLCA0NywgOTYsIDIwOCwgMTQ1LCAKLSAgICAyMTMsIDc4LCA2MSwgNDcsIDg2LCAyMDgsIDE0NSwgMjEzLCA3OCwgNjEsIDQ3LCA5NiwgMjI3LCAyMTYsIDYxLCA0NywgODYsIAotICAgIDIxNiwgMTAsIDYxLCA0NywgOTYsIDIxNiwgMTAsIDYxLCA0NywgODYsIDIyNywgMjE2LCA2MSwgNDcsIDk2LCAyNDksIDI0LCAKLSAgICAyMTMsIDc3LCA2MSwgNDcsIDg2LCAyNDksIDI0LCAyMTMsIDc3LCA2MSwgNDcsIDk2LCAyMzksIDExNywgMjEzLCA3NywgNjEsIAotICAgIDQ3LCA4NiwgMjM5LCAxMTcsIDIxMywgNzcsIDYxLCA0NywgNjEsIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMDUsIDYxLCA1MywgCi0gICAgMjEzLCA3NiwgMjA0LCAyNCwgMTIwLCAyMDksIDU3LCAyMDIsIDI2LCAyNDAsIDEwMiwgMjI0LCA1MiwgMjQwLCAxMDIsIAotICAgIDI0MCwgMTAzLCAzLCAyMDksIDgwLCAyMjIsIDIyMiwgMjQwLCAxMDIsIDIwOSwgNjIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgCi0gICAgMjM3LCA2MywgMjE1LCAyMjEsIDI0MCwgMTAyLCAyMzYsIDIwLCAyNDAsIDEwMiwgMiwgNzYsIDIwOSwgOTMsIDIzNiwgNTIsIAotICAgIDI0NSwgMTQ2LCAyMjcsIDEwMiwgMjQwLCAxMDIsIDIxNCwgMTg4LCAyMDcsIDE3OSwgMjA2LCAyNDAsIDI0MCwgMTAyLCAKLSAgICAyNDYsIDE2MSwgMjA0LCA1NywgMTIsIDE1LCAyMzUsIDE1MiwgMTIsIDE1LCAyMzUsIDE1MSwgMTIsIDE1LCAyMzUsIDE1MCwgCi0gICAgMTIsIDE1LCAyMzUsIDE0OSwgMTIsIDE1LCAyMzUsIDE0OCwgMTIsIDE1LCAyMzUsIDE0NywgMTIsIDE1LCAyMzUsIDE0NiwgCi0gICAgMTIsIDE1LCAyMzUsIDE0NSwgMTIsIDE1LCAyMzUsIDE0NCwgMTIsIDE1LCAyMzUsIDE0MywgMTIsIDE1LCAyMzUsIDE0MiwgCi0gICAgMTIsIDE1LCAyMzUsIDE0MSwgMTIsIDE1LCAyMzUsIDE0MCwgMTIsIDE1LCAyMzUsIDEzOSwgMTIsIDE1LCAyMzUsIDEzOCwgCi0gICAgMTIsIDE1LCAyMzUsIDEzNywgMTIsIDE1LCAyMzUsIDEzNiwgMTIsIDE1LCAyMzUsIDEzNSwgMTIsIDE1LCAyMzUsIDEzNCwgCi0gICAgMTIsIDE1LCAyMzUsIDEzMywgMTIsIDE1LCAyMzUsIDEzMiwgMTIsIDE1LCAyMzUsIDEzMSwgMTIsIDE1LCAyMzUsIDEzMCwgCi0gICAgMTIsIDE1LCAyMzUsIDEyOSwgMTIsIDE1LCAyMzUsIDEyOCwgMTIsIDE1LCAyMzUsIDEyNywgMTIsIDE1LCAyMzUsIDEyNiwgCi0gICAgMTIsIDE1LCAyMzUsIDEyNSwgMTIsIDE1LCAyMzUsIDEyNCwgMTIsIDE1LCAyMzUsIDEyMywgMTIsIDE1LCAyMzUsIDEyMiwgCi0gICAgMTIsIDE1LCAyMzUsIDEyMSwgMTIsIDE1LCAyMzUsIDEyMCwgMTIsIDE1LCAyMzUsIDExOSwgMTIsIDE1LCAyMzUsIDExOCwgCi0gICAgMTIsIDE1LCAyMzUsIDExNywgMTIsIDE1LCAyMzUsIDExNiwgMTIsIDE1LCAyMzUsIDExNSwgMTIsIDE1LCAyMzUsIDExNCwgCi0gICAgMTIsIDE1LCAyMzUsIDExMywgMTIsIDE1LCAyMzUsIDExMiwgMTIsIDE1LCAyMzUsIDExMSwgMTIsIDE1LCAyMzUsIDExMCwgCi0gICAgMTIsIDE1LCAyMzUsIDEwOSwgMTIsIDE1LCAyMzUsIDEwOCwgMTIsIDE1LCAyMzUsIDEwNywgMTIsIDE1LCAyMzUsIDEwNiwgCi0gICAgMTIsIDE1LCAyMzUsIDEwNSwgMTIsIDE1LCAyMzUsIDEwNCwgMTIsIDE1LCAyMzUsIDEwMywgMTIsIDE1LCAyMzUsIDEwMiwgCi0gICAgMTIsIDE1LCAyMzUsIDEwMSwgMTIsIDE1LCAyMzUsIDEwMCwgMTIsIDE1LCAyMzUsIDk5LCAxMiwgMTUsIDIzNSwgOTgsIDEyLCAKLSAgICAxNSwgMjM1LCA5NywgMTIsIDE1LCAyMzUsIDk2LCAxMiwgMTUsIDIzNSwgOTUsIDEyLCAxNSwgMjM1LCA5NCwgMTIsIDE1LCAKLSAgICAyMzUsIDkzLCAxMiwgMTUsIDIzNSwgOTIsIDEyLCAxNSwgMjM1LCA5MSwgMTIsIDE1LCAyMzUsIDkwLCAxMiwgMTUsIDIzNSwgCi0gICAgODksIDEyLCAxNSwgMjM1LCA4OCwgMTIsIDE1LCAyMzUsIDg3LCAxMiwgMTUsIDIzNSwgODYsIDEyLCAxNSwgMjM1LCA4NSwgCi0gICAgMTIsIDE1LCAyMzUsIDg0LCAxMiwgMTUsIDIzNSwgODMsIDEyLCAxNSwgMjM1LCA4MiwgMTIsIDE1LCAyMzUsIDgxLCAxMiwgCi0gICAgMTUsIDIzNSwgODAsIDEyLCAxNSwgMjM1LCA3OSwgMTIsIDE1LCAyMzUsIDc4LCAxMiwgMTUsIDIzNSwgNzcsIDEyLCAxNSwgCi0gICAgMjM1LCA3NiwgMTIsIDE1LCAyMzUsIDc1LCAxMiwgMTUsIDIzNSwgNzQsIDEyLCAxNSwgMjM1LCA3MywgMTIsIDE1LCAyMzUsIAotICAgIDcyLCAxMiwgMTUsIDIzNSwgNzEsIDEyLCAxNSwgMjM1LCA3MCwgMTIsIDE1LCAyMzUsIDY5LCAxMiwgMTUsIDIzNSwgNjgsIAotICAgIDEyLCAxNSwgMjM1LCA2NywgMTIsIDE1LCAyMzUsIDY2LCAxMiwgMTUsIDIzNSwgNjUsIDEyLCAxNSwgMjM1LCA2NCwgMTIsIAotICAgIDE1LCAyMzUsIDYzLCAxMiwgMTUsIDIzNSwgNjIsIDEyLCAxNSwgMjM1LCA2MSwgMTIsIDE1LCAyMzUsIDYwLCAxMiwgMTUsIAotICAgIDIzNSwgNTksIDEyLCAxNSwgMjM1LCA1OCwgMTIsIDE1LCAyMzUsIDU3LCAxMiwgMTUsIDIzNSwgNTYsIDEyLCAxNSwgMjM1LCAKLSAgICA1NSwgMTIsIDE1LCAyMzUsIDU0LCAxMiwgMTUsIDIzNSwgNTMsIDEyLCAxNSwgMjM1LCA1MiwgMTIsIDE1LCAyMzUsIDUxLCAKLSAgICAxMiwgMTUsIDIzNSwgNTAsIDEyLCAxNSwgMjM1LCA0OSwgMTIsIDE1LCAyMzUsIDQ4LCAxMiwgMTUsIDIzNSwgNDcsIDEyLCAKLSAgICAxNSwgMjM1LCA0NiwgMTIsIDE1LCAyMzUsIDQ1LCAxMiwgMTUsIDIzNSwgNDQsIDEyLCAxNSwgMjM1LCA0MywgMTIsIDE1LCAKLSAgICAyMzUsIDQyLCAxMiwgMTUsIDIzNSwgNDEsIDEyLCAxNSwgMjM1LCA0MCwgMTIsIDE1LCAyMzUsIDM5LCAxMiwgMTUsIDIzNSwgCi0gICAgMzgsIDEyLCAxNSwgMjM1LCAzNywgMTIsIDE1LCAyMzUsIDM2LCAxMiwgMTUsIDIzNSwgMzUsIDEyLCAxNSwgMjM1LCAzNCwgCi0gICAgMTIsIDE1LCAyMzUsIDMzLCAxMiwgMTUsIDIzNSwgMzIsIDEyLCAxNSwgMjM1LCAzMSwgMTIsIDE1LCAyMzUsIDMwLCAxMiwgCi0gICAgMTUsIDIzNSwgMjksIDEyLCAxNSwgMjM1LCAyOCwgMTIsIDE1LCAyMzUsIDI3LCAxMiwgMTUsIDIzNSwgMjYsIDEyLCAxNSwgCi0gICAgMjM1LCAyNSwgMTIsIDE1LCAyMzUsIDI0LCAxMiwgMTUsIDIzNSwgMjMsIDEyLCAxNSwgMjM1LCAyMiwgMTIsIDE1LCAyMzUsIAotICAgIDIxLCAxMiwgMTUsIDIzNSwgMjAsIDEyLCAxNSwgMjM1LCAxOSwgMTIsIDE1LCAyMzUsIDE4LCAxMiwgMTUsIDIzNSwgMTcsIAotICAgIDEyLCAxNSwgMjM1LCAxNiwgMTIsIDE1LCAyMzUsIDE1LCAxMiwgMTUsIDIzNSwgMTQsIDEyLCAxNSwgMjM1LCAxMywgMTIsIAotICAgIDE1LCAyMzUsIDEyLCAxMiwgMTUsIDIzNSwgMTEsIDEyLCAxNSwgMjM1LCAxMCwgMTIsIDE1LCAyMzUsIDksIDEyLCAxNSwgCi0gICAgMjM1LCA4LCAxMiwgMTUsIDIzNSwgNywgMTIsIDE1LCAyMzUsIDYsIDEyLCAxNSwgMjM1LCA1LCAxMiwgMTUsIDIzNSwgNCwgCi0gICAgMTIsIDE1LCAyMzUsIDMsIDEyLCAxNSwgMjM1LCAyLCAxMiwgMTUsIDIzNSwgMSwgMTIsIDE1LCAyMzUsIDAsIDEyLCAxNSwgCi0gICAgMjM0LCAyNTUsIDEyLCAxNSwgMjM0LCAyNTQsIDEyLCAxNSwgMjM0LCAyNTMsIDEyLCAxNSwgMjM0LCAyNTIsIDEyLCAxNSwgCi0gICAgMjM0LCAyNTEsIDEyLCAxNSwgMjM0LCAyNTAsIDEyLCAxNSwgMjM0LCAyNDksIDEyLCAxNSwgMjM0LCAyNDgsIDEyLCAxNSwgCi0gICAgMjM0LCAyNDcsIDEyLCAxNSwgMjM0LCAyNDYsIDEyLCAxNSwgMjM0LCAyNDUsIDEyLCAxNSwgMjM0LCAyNDQsIDEyLCAxNSwgCi0gICAgMjM0LCAyNDMsIDEyLCAxNSwgMjM0LCAyNDIsIDEyLCAxNSwgMjM0LCAyNDEsIDEyLCAxNSwgMjM0LCAyNDAsIDEyLCAxNSwgCi0gICAgMjM0LCAyMzksIDEyLCAxNSwgMjM0LCAyMzgsIDEyLCAxNSwgMjM0LCAyMzcsIDEyLCAxNSwgMjM0LCAyMzYsIDEyLCAxNSwgCi0gICAgMjM0LCAyMzUsIDEyLCAxNSwgMjM0LCAyMzQsIDEyLCAxNSwgMjM0LCAyMzMsIDEyLCAxNSwgMjM0LCAyMzIsIDEyLCAxNSwgCi0gICAgMjM0LCAyMzEsIDEyLCAxNSwgMjM0LCAyMzAsIDEyLCAxNSwgMjM0LCAyMjksIDEyLCAxNSwgMjM0LCAyMjgsIDEyLCAxNSwgCi0gICAgMjM0LCAyMjcsIDEyLCAxNSwgMjM0LCAyMjYsIDEyLCAxNSwgMjM0LCAyMjUsIDEyLCAxNSwgMjM0LCAyMjQsIDEyLCAxNSwgCi0gICAgMjM0LCAyMjMsIDEyLCAxNSwgMjM0LCAyMjIsIDEyLCAxNSwgMjM0LCAyMjEsIDEyLCAxNSwgMjM0LCAyMjAsIDEyLCAxNSwgCi0gICAgMjM0LCAyMTksIDEyLCAxNSwgMjM0LCAyMTgsIDEyLCAxNSwgMjM0LCAyMTcsIDEyLCAxNSwgMjM0LCAyMTYsIDEyLCAxNSwgCi0gICAgMjM0LCAyMTUsIDEyLCAxNSwgMjM0LCAyMTQsIDEyLCAxNSwgMjM0LCAyMTMsIDEyLCAxNSwgMjM0LCAyMTIsIDEyLCAxNSwgCi0gICAgMjM0LCAyMTEsIDEyLCAxNSwgMjM0LCAyMTAsIDEyLCAxNSwgMjM0LCAyMDksIDEyLCAxNSwgMjM0LCAyMDgsIDEyLCAxNSwgCi0gICAgMjM0LCAyMDcsIDEyLCAxNSwgMjM0LCAyMDYsIDEyLCAxNSwgMjM0LCAyMDUsIDEyLCAxNSwgMjM0LCAyMDQsIDEyLCAxNSwgCi0gICAgMjM0LCAyMDMsIDEyLCAxNSwgMjM0LCAyMDIsIDEyLCAxNSwgMjM0LCAyMDEsIDEyLCAxNSwgMjM0LCAyMDAsIDEyLCAxNSwgCi0gICAgMjM0LCAxOTksIDEyLCAxNSwgMjM0LCAxOTgsIDEyLCAxNSwgMjM0LCAxOTcsIDEyLCAxNSwgMjM0LCAxOTYsIDEyLCAxNSwgCi0gICAgMjM0LCAxOTUsIDEyLCAxNSwgMjM0LCAxOTQsIDEyLCAxNSwgMjM0LCAxOTMsIDEyLCAxNSwgMjM0LCAxOTIsIDEyLCAxNSwgCi0gICAgMjM0LCAxOTEsIDEyLCAxNSwgMjM0LCAxOTAsIDEyLCAxNSwgMjM0LCAxODksIDEyLCAxNSwgMjM0LCAxODgsIDEyLCAxNSwgCi0gICAgMjM0LCAxODcsIDEyLCAxNSwgMjM0LCAxODYsIDEyLCAxNSwgMjM0LCAxODUsIDEyLCAxNSwgMjM0LCAxODQsIDEyLCAxNSwgCi0gICAgMjM0LCAxODMsIDEyLCAxNSwgMjM0LCAxODIsIDEyLCAxNSwgMjM0LCAxODEsIDEyLCAxNSwgMjM0LCAxODAsIDEyLCAxNSwgCi0gICAgMjM0LCAxNzksIDEyLCAxNSwgMjM0LCAxNzgsIDEyLCAxNSwgMjM0LCAxNzcsIDEyLCAxNSwgMjM0LCAxNzYsIDEyLCAxNSwgCi0gICAgMjM0LCAxNzUsIDEyLCAxNSwgMjM0LCAxNzQsIDEyLCAxNSwgMjM0LCAxNzMsIDEyLCAxNSwgMjM0LCAxNzIsIDEyLCAxNSwgCi0gICAgMjM0LCAxNzEsIDEyLCAxNSwgMjM0LCAxNzAsIDEyLCAxNSwgMjM0LCAxNjksIDEyLCAxNSwgMjM0LCAxNjgsIDEyLCAxNSwgCi0gICAgMjM0LCAxNjcsIDEyLCAxNSwgMjM0LCAxNjYsIDEyLCAxNSwgMjM0LCAxNjUsIDEyLCAxNSwgMjM0LCAxNjQsIDEyLCAxNSwgCi0gICAgMjM0LCAxNjMsIDEyLCAxNSwgMjM0LCAxNjIsIDEyLCAxNSwgMjM0LCAxNjEsIDEyLCAxNSwgMjM0LCAxNjAsIDEyLCAxNSwgCi0gICAgMjM0LCAxNTksIDEyLCAxNSwgMjM0LCAxNTgsIDEyLCAxNSwgMjM0LCAxNTcsIDEyLCAxNSwgMjM0LCAxNTYsIDEyLCAxNSwgCi0gICAgMjM0LCAxNTUsIDEyLCAxNSwgMjM0LCAxNTQsIDEyLCAxNSwgMjM0LCAxNTMsIDEyLCAxNSwgMjM0LCAxNTIsIDEyLCAxNSwgCi0gICAgMjM0LCAxNTEsIDEyLCAxNSwgMjM0LCAxNTAsIDEyLCAxNSwgMjM0LCAxNDksIDEyLCAxNSwgMjM0LCAxNDgsIDEyLCAxNSwgCi0gICAgMjM0LCAxNDcsIDEyLCAxNSwgMjM0LCAxNDYsIDEyLCAxNSwgMjM0LCAxNDUsIDEyLCAxNSwgMjM0LCAxNDQsIDEyLCAxNSwgCi0gICAgMjM0LCAxNDMsIDEyLCAxNSwgMjM0LCAxNDIsIDEyLCAxNSwgMjM0LCAxNDEsIDEyLCAxNSwgMjM0LCAxNDAsIDEyLCAxNSwgCi0gICAgMjM0LCAxMzksIDEyLCAxNSwgMjM0LCAxMzgsIDEyLCAxNSwgMjM0LCAxMzcsIDEyLCAxNSwgMjM0LCAxMzYsIDEyLCAxNSwgCi0gICAgMjM0LCAxMzUsIDEyLCAxNSwgMjM0LCAxMzQsIDEyLCAxNSwgMjM0LCAxMzMsIDEyLCAxNSwgMjM0LCAxMzIsIDEyLCAxNSwgCi0gICAgMjM0LCAxMzEsIDEyLCAxNSwgMjM0LCAxMzAsIDEyLCAxNSwgMjM0LCAxMjksIDEyLCAxNSwgMjM0LCAxMjgsIDEyLCAxNSwgCi0gICAgMjM0LCAxMjcsIDEyLCAxNSwgMjM0LCAxMjYsIDEyLCAxNSwgMjM0LCAxMjUsIDEyLCAxNSwgMjM0LCAxMjQsIDEyLCAxNSwgCi0gICAgMjM0LCAxMjMsIDEyLCAxNSwgMjM0LCAxMjIsIDEyLCAxNSwgMjM0LCAxMjEsIDEyLCAxNSwgMjM0LCAxMjAsIDEyLCAxNSwgCi0gICAgMjM0LCAxMTksIDEyLCAxNSwgMjM0LCAxMTgsIDEyLCAxNSwgMjM0LCAxMTcsIDEyLCAxNSwgMjM0LCAxMTYsIDEyLCAxNSwgCi0gICAgMjM0LCAxMTUsIDEyLCAxNSwgMjM0LCAxMTQsIDEyLCAxNSwgMjM0LCAxMTMsIDEyLCAxNSwgMjM0LCAxMTIsIDEyLCAxNSwgCi0gICAgMjM0LCAxMTEsIDEyLCAxNSwgMjM0LCAxMTAsIDEyLCAxNSwgMjM0LCAxMDksIDEyLCAxNSwgMjM0LCAxMDgsIDEyLCAxNSwgCi0gICAgMjM0LCAxMDcsIDEyLCAxNSwgMjM0LCAxMDYsIDEyLCAxNSwgMjM0LCAxMDUsIDEyLCAxNSwgMjM0LCAxMDQsIDEyLCAxNSwgCi0gICAgMjM0LCAxMDMsIDEyLCAxNSwgMjM0LCAxMDIsIDEyLCAxNSwgMjM0LCAxMDEsIDEyLCAxNSwgMjM0LCAxMDAsIDEyLCAxNSwgCi0gICAgMjM0LCA5OSwgMTIsIDE1LCAyMzQsIDk4LCAxMiwgMTUsIDIzNCwgOTcsIDEyLCAxNSwgMjM0LCA5NiwgMTIsIDE1LCAyMzQsIAotICAgIDk1LCAxMiwgMTUsIDIzNCwgOTQsIDEyLCAxNSwgMjM0LCA5MywgMTIsIDE1LCAyMzQsIDkyLCAxMiwgMTUsIDIzNCwgOTEsIAotICAgIDEyLCAxNSwgMjM0LCA5MCwgMTIsIDE1LCAyMzQsIDg5LCAxMiwgMTUsIDIzNCwgODgsIDEyLCAxNSwgMjM0LCA4NywgMTIsIAotICAgIDE1LCAyMzQsIDg2LCAxMiwgMTUsIDIzNCwgODUsIDEyLCAxNSwgMjM0LCA4NCwgMTIsIDE1LCAyMzQsIDgzLCAxMiwgMTUsIAotICAgIDIzNCwgODIsIDEyLCAxNSwgMjM0LCA4MSwgMTIsIDE1LCAyMzQsIDgwLCAxMiwgMTUsIDIzNCwgNzksIDEyLCAxNSwgMjM0LCAKLSAgICA3OCwgMTIsIDE1LCAyMzQsIDc3LCAxMiwgMTUsIDIzNCwgNzYsIDEyLCAxNSwgMjM0LCA3NSwgMTIsIDE1LCAyMzQsIDc0LCAKLSAgICAxMiwgMTUsIDIzNCwgNzMsIDEyLCAxNSwgMjM0LCA3MiwgMTIsIDE1LCAyMzQsIDcxLCAxMiwgMTUsIDIzNCwgNzAsIDEyLCAKLSAgICAxNSwgMjM0LCA2OSwgMTIsIDE1LCAyMzQsIDY4LCAxMiwgMTUsIDIzNCwgNjcsIDEyLCAxNSwgMjM0LCA2NiwgMTIsIDE1LCAKLSAgICAyMzQsIDY1LCAxMiwgMTUsIDIzNCwgNjQsIDEyLCAxNSwgMjM0LCA2MywgMTIsIDE1LCAyMzQsIDYyLCAxMiwgMTUsIDIzNCwgCi0gICAgNjEsIDEyLCAxNSwgMjM0LCA2MCwgMTIsIDE1LCAyMzQsIDU5LCAxMiwgMTUsIDIzNCwgNTgsIDEyLCAxNSwgMjM0LCA1NywgCi0gICAgMTIsIDE1LCAyMzQsIDU2LCAxMiwgMTUsIDIzNCwgNTUsIDEyLCAxNSwgMjM0LCA1NCwgMTIsIDE1LCAyMzQsIDUzLCAxMiwgCi0gICAgMTUsIDIzNCwgNTIsIDEyLCAxNSwgMjM0LCA1MSwgMTIsIDE1LCAyMzQsIDUwLCAxMiwgMTUsIDIzNCwgNDksIDEyLCAxNSwgCi0gICAgMjM0LCA0OCwgMTIsIDE1LCAyMzQsIDQ3LCAxMiwgMTUsIDIzNCwgNDYsIDEyLCAxNSwgMjM0LCA0NSwgMTIsIDE1LCAyMzQsIAotICAgIDQ0LCAxMiwgMTUsIDIzNCwgNDMsIDEyLCAxNSwgMjM0LCA0MiwgMTIsIDE1LCAyMzQsIDQxLCAxMiwgMTUsIDIzNCwgNDAsIAotICAgIDEyLCAxNSwgMjM0LCAzOSwgMTIsIDE1LCAyMzQsIDM4LCAxMiwgMTUsIDIzNCwgMzcsIDEyLCAxNSwgMjM0LCAzNiwgMTIsIAotICAgIDE1LCAyMzQsIDM1LCAxMiwgMTUsIDIzNCwgMzQsIDEyLCAxNSwgMjM0LCAzMywgMTIsIDE1LCAyMzQsIDMyLCAxMiwgMTUsIAotICAgIDIzNCwgMzEsIDEyLCAxNSwgMjM0LCAzMCwgMTIsIDE1LCAyMzQsIDI5LCAxMiwgMTUsIDIzNCwgMjgsIDEyLCAxNSwgMjM0LCAKLSAgICAyNywgMTIsIDE1LCAyMzQsIDI2LCAxMiwgMTUsIDIzNCwgMjUsIDEyLCAxNSwgMjM0LCAyNCwgMTIsIDE1LCAyMzQsIDIzLCAKLSAgICAxMiwgMTUsIDIzNCwgMjIsIDEyLCAxNSwgMjM0LCAyMSwgMTIsIDE1LCAyMzQsIDIwLCAxMiwgMTUsIDIzNCwgMTksIDEyLCAKLSAgICAxNSwgMjM0LCAxOCwgMTIsIDE1LCAyMzQsIDE3LCAxMiwgMTUsIDIzNCwgMTYsIDEyLCAxNSwgMjM0LCAxNSwgMTIsIDE1LCAKLSAgICAyMzQsIDE0LCAxMiwgMTUsIDIzNCwgMTMsIDEyLCAxNSwgMjM0LCAxMiwgMTIsIDE1LCAyMzQsIDExLCAxMiwgMTUsIDIzNCwgCi0gICAgMTAsIDEyLCAxNSwgMjM0LCA5LCAxMiwgMTUsIDIzNCwgOCwgMTIsIDE1LCAyMzQsIDcsIDEyLCAxNSwgMjM0LCA2LCAxMiwgCi0gICAgMTUsIDIzNCwgNSwgMTIsIDE1LCAyMzQsIDQsIDEyLCAxNSwgMjM0LCAzLCAxMiwgMTUsIDIzNCwgMiwgMTIsIDE1LCAyMzQsIAotICAgIDEsIDEyLCAxNSwgMjM0LCAwLCAxMiwgMTUsIDIzMywgMjU1LCAxMiwgMTUsIDIzMywgMjU0LCAxMiwgMTUsIDIzMywgMjUzLCAKLSAgICAxMiwgMTUsIDIzMywgMjUyLCAxMiwgMTUsIDIzMywgMjUxLCAxMiwgMTUsIDIzMywgMjUwLCAxMiwgMTUsIDIzMywgMjQ5LCAKLSAgICAxMiwgMTUsIDIzMywgMjQ4LCAxMiwgMTUsIDIzMywgMjQ3LCAxMiwgMTUsIDIzMywgMjQ2LCAxMiwgMTUsIDIzMywgMjQ1LCAKLSAgICAxMiwgMTUsIDIzMywgMjQ0LCAxMiwgMTUsIDIzMywgMjQzLCAxMiwgMTUsIDIzMywgMjQyLCAxMiwgMTUsIDIzMywgMjQxLCAKLSAgICAxMiwgMTUsIDIzMywgMjQwLCAxMiwgMTUsIDIzMywgMjM5LCAxMiwgMTUsIDIzMywgMjM4LCAxMiwgMTUsIDIzMywgMjM3LCAKLSAgICAxMiwgMTUsIDIzMywgMjM2LCAxMiwgMTUsIDIzMywgMjM1LCAxMiwgMTUsIDIzMywgMjM0LCAxMiwgMTUsIDIzMywgMjMzLCAKLSAgICAxMiwgMTUsIDIzMywgMjMyLCAxMiwgMTUsIDIzMywgMjMxLCAxMiwgMTUsIDIzMywgMjMwLCAxMiwgMTUsIDIzMywgMjI5LCAKLSAgICAxMiwgMTUsIDIzMywgMjI4LCAxMiwgMTUsIDIzMywgMjI3LCAxMiwgMTUsIDIzMywgMjI2LCAxMiwgMTUsIDIzMywgMjI1LCAKLSAgICAxMiwgMTUsIDIzMywgMjI0LCAxMiwgMTUsIDIzMywgMjIzLCAxMiwgMTUsIDIzMywgMjIyLCAxMiwgMTUsIDIzMywgMjIxLCAKLSAgICAxMiwgMTUsIDIzMywgMjIwLCAxMiwgMTUsIDIzMywgMjE5LCAxMiwgMTUsIDIzMywgMjE4LCAxMiwgMTUsIDIzMywgMjE3LCAKLSAgICAxMiwgMTUsIDIzMywgMjE2LCAxMiwgMTUsIDIzMywgMjE1LCAxMiwgMTUsIDIzMywgMjE0LCAxMiwgMTUsIDIzMywgMjEzLCAKLSAgICAxMiwgMTUsIDIzMywgMjEyLCAxMiwgMTUsIDIzMywgMjExLCAxMiwgMTUsIDIzMywgMjEwLCAxMiwgMTUsIDIzMywgMjA5LCAKLSAgICAxMiwgMTUsIDIzMywgMjA4LCAxMiwgMTUsIDIzMywgMjA3LCAxMiwgMTUsIDIzMywgMjA2LCAxMiwgMTUsIDIzMywgMjA1LCAKLSAgICAxMiwgMTUsIDIzMywgMjA0LCAxMiwgMTUsIDIzMywgMjAzLCAxMiwgMTUsIDIzMywgMjAyLCAxMiwgMTUsIDIzMywgMjAxLCAKLSAgICAxMiwgMTUsIDIzMywgMjAwLCAxMiwgMTUsIDIzMywgMTk5LCAxMiwgMTUsIDIzMywgMTk4LCAxMiwgMTUsIDIzMywgMTk3LCAKLSAgICAxMiwgMTUsIDIzMywgMTk2LCAxMiwgMTUsIDIzMywgMTk1LCAxMiwgMTUsIDIzMywgMTk0LCAxMiwgMTUsIDIzMywgMTkzLCAKLSAgICAxMiwgMTUsIDIzMywgMTkyLCAxMiwgMTUsIDIzMywgMTkxLCAxMiwgMTUsIDIzMywgMTkwLCAxMiwgMTUsIDIzMywgMTg5LCAKLSAgICAxMiwgMTUsIDIzMywgMTg4LCAxMiwgMTUsIDIzMywgMTg3LCAxMiwgMTUsIDIzMywgMTg2LCAxMiwgMTUsIDIzMywgMTg1LCAKLSAgICAxMiwgMTUsIDIzMywgMTg0LCAxMiwgMTUsIDIzMywgMTgzLCAxMiwgMTUsIDIzMywgMTgyLCAxMiwgMTUsIDIzMywgMTgxLCAKLSAgICAxMiwgMTUsIDIzMywgMTgwLCAxMiwgMTUsIDIzMywgMTc5LCAxMiwgMTUsIDIzMywgMTc4LCAxMiwgMTUsIDIzMywgMTc3LCAKLSAgICAxMiwgMTUsIDIzMywgMTc2LCAxMiwgMTUsIDIzMywgMTc1LCAxMiwgMTUsIDIzMywgMTc0LCAxMiwgMTUsIDIzMywgMTczLCAKLSAgICAxMiwgMTUsIDIzMywgMTcyLCAxMiwgMTUsIDIzMywgMTcxLCAxMiwgMTUsIDIzMywgMTcwLCAxMiwgMTUsIDIzMywgMTY5LCAKLSAgICAxMiwgMTUsIDIzMywgMTY4LCAxMiwgMTUsIDIzMywgMTY3LCAxMiwgMTUsIDIzMywgMTY2LCAxMiwgMTUsIDIzMywgMTY1LCAKLSAgICAxMiwgMTUsIDIzMywgMTY0LCAxMiwgMTUsIDIzMywgMTYzLCAxMiwgMTUsIDIzMywgMTYyLCAxMiwgMTUsIDIzMywgMTYxLCAKLSAgICAxMiwgMTUsIDIzMywgMTYwLCAxMiwgMTUsIDIzMywgMTU5LCAxMiwgMTUsIDIzMywgMTU4LCAxMiwgMTUsIDIzMywgMTU3LCAKLSAgICAxMiwgMTUsIDIzMywgMTU2LCAxMiwgMTUsIDIzMywgMTU1LCAxMiwgMTUsIDIzMywgMTU0LCAxMiwgMTUsIDIzMywgMTUzLCAKLSAgICAxMiwgMTUsIDIzMywgMTUyLCAxMiwgMTUsIDIzMywgMTUxLCAxMiwgMTUsIDIzMywgMTUwLCAxMiwgMTUsIDIzMywgMTQ5LCAKLSAgICAxMiwgMTUsIDIzMywgMTQ4LCAxMiwgMTUsIDIzMywgMTQ3LCAxMiwgMTUsIDIzMywgMTQ2LCAxMiwgMTUsIDIzMywgMTQ1LCAKLSAgICAxMiwgMTUsIDIzMywgMTQ0LCAxMiwgMTUsIDIzMywgMTQzLCAxMiwgMTUsIDIzMywgMTQyLCAxMiwgMTUsIDIzMywgMTQxLCAKLSAgICAxMiwgMTUsIDIzMywgMTQwLCAxMiwgMTUsIDIzMywgMTM5LCAxMiwgMTUsIDIzMywgMTM4LCAxMiwgMTUsIDIzMywgMTM3LCAKLSAgICAxMiwgMTUsIDIzMywgMTM2LCAxMiwgMTUsIDIzMywgMTM1LCAxMiwgMTUsIDIzMywgMTM0LCAxMiwgMTUsIDIzMywgMTMzLCAKLSAgICAxMiwgMTUsIDIzMywgMTMyLCAxMiwgMTUsIDIzMywgMTMxLCAxMiwgMTUsIDIzMywgMTMwLCAxMiwgMTUsIDIzMywgMTI5LCAKLSAgICAxMiwgMTUsIDIzMywgMTI4LCAxMiwgMTUsIDIzMywgMTI3LCAxMiwgMTUsIDIzMywgMTI2LCAxMiwgMTUsIDIzMywgMTI1LCAKLSAgICAxMiwgMTUsIDIzMywgMTI0LCAxMiwgMTUsIDIzMywgMTIzLCAyMjgsIDE0LCAyMDksIDI1NSwgMTYwLCAyMTEsIDIyOCwgCi0gICAgMTYwLCAyNDAsIDIxMiwgODIsIDE2MCwgMjE3LCAzMSwgODIsIDE2MCwgNDIsIDU0LCAxNjAsIDI0MywgOTcsIDU0LCAxNjAsIAotICAgIDIxOCwgMjQ2LCA1NCwgMTYwLCAyNTAsIDIzNSwgMTYwLCAyNTAsIDE2MCwgMTYwLCA0OSwgMjE5LCA3NiwgMTYwLCA1MCwgCi0gICAgMjE5LCA3NiwgMTYwLCAyNTAsIDU5LCAxNjAsIDkxLCA1NCwgMTYwLCAyNDUsIDIzMywgMTYwLCAyMzUsIDIxOSwgMTYwLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMTYwLCAyMTIsIDAsIDE2MCwgMTcsIDIwMiwgODQsIDE2MCwgMTcsIDEwNSwgMTYwLCAxNywgCi0gICAgMTA4LCAxNjAsIDE3LCAxNDcsIDE2MCwgMTcsIDE0OSwgMTYwLCAxNywgMTcwLCAxNjAsIDE3LCAxOTUsIDE2MCwgMTcsIAotICAgIDIxMywgMTExLCAxNjAsIDE3LCAxOTksIDE2MCwgMTcsIDIyMiwgNjMsIDE2MCwgMjQ1LCAyNDIsIDE2MCwgMjEzLCAxNDMsIAotICAgIDE2MCwgMjI3LCAxNzksIDU0LCAxNjAsIDI0MSwgMzUsIDU0LCAxNjAsIDIzNywgMjQ3LCA1NCwgMTYwLCAyMTcsIDQ3LCA4MiwgCi0gICAgMTYwLCAyNDUsIDIzMSwgMjUwLCA0OSwgMTYwLCA4LCA2LCAxLCA2MywgMTYwLCA4LCA2LCAxLCAyNDksIDI1NSwgMTYwLCA4LCAKLSAgICA2LCAxLCAyNDcsIDEyNSwgMTYwLCA4LCA2LCAxLCAyNDUsIDUxLCAxNjAsIDgsIDYsIDEsIDc0LCAxNjAsIDgsIDYsIDEsIAotICAgIDI0MCwgMTc0LCAxNjAsIDgsIDYsIDEsIDIzOSwgNzUsIDE2MCwgOCwgNiwgMSwgMjM3LCAxNzEsIDE2MCwgOCwgNiwgMSwgCi0gICAgNzUsIDE2MCwgOCwgNiwgMSwgMjMwLCAxODQsIDE2MCwgOCwgNiwgMSwgMjMwLCA1NCwgMTYwLCA4LCA2LCAxLCAxNTksIAotICAgIDE2MCwgOCwgNiwgMSwgMjI2LCAxODUsIDE2MCwgOCwgNiwgMSwgMjIzLCAxNjMsIDE2MCwgOCwgNiwgMSwgNzgsIDE2MCwgOCwgCi0gICAgNiwgMSwgMjE5LCAxODQsIDE2MCwgOCwgNiwgMSwgMjE3LCAxMzQsIDE2MCwgOCwgNiwgMSwgMTQ2LCAxNjAsIDgsIDYsIDEsIAotICAgIDE5NCwgMTYwLCA4LCA2LCAxLCAyMTAsIDY5LCAxNjAsIDgsIDYsIDEsIDY4LCAxNjAsIDgsIDYsIDEsIDIwNiwgMTY0LCAKLSAgICAxNjAsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxNjAsIDgsIDYsIDEsIDIwMywgMTk2LCAxNjAsIDgsIDYsIDEsIDIwMywgMTI0LCAKLSAgICAxNjAsIDgsIDYsIDEsIDIwMiwgMTU5LCAxNjAsIDQ5LCA1MSwgMTU1LCAxNjAsIDIxNiwgNzQsIDIxMiwgMCwgMTYwLCA1MCwgCi0gICAgNTEsIDE1NSwgMTYwLCAyNDYsIDUzLCAyNTEsIDEzOCwgMTYwLCAxMjQsIDIyNywgMTE0LCAxNjAsIDIzNywgMjU0LCAyNTEsIAotICAgIDEzOCwgMTYwLCA4LCA1LCAxLCA2MywgMTYwLCA4LCA1LCAxLCAyNDksIDI1NSwgMTYwLCA4LCA1LCAxLCAyNDcsIDEyNSwgCi0gICAgMTYwLCA4LCA1LCAxLCAyNDUsIDUxLCAxNjAsIDgsIDUsIDEsIDc0LCAxNjAsIDgsIDUsIDEsIDI0MCwgMTc0LCAxNjAsIDgsIAotICAgIDUsIDEsIDIzOSwgNzUsIDE2MCwgOCwgNSwgMSwgMjM3LCAxNzEsIDE2MCwgOCwgNSwgMSwgNzUsIDE2MCwgOCwgNSwgMSwgCi0gICAgMjMwLCAxODQsIDE2MCwgOCwgNSwgMSwgMjMwLCA1NCwgMTYwLCA4LCA1LCAxLCAxNTksIDE2MCwgOCwgNSwgMSwgMjI2LCAKLSAgICAxODUsIDE2MCwgOCwgNSwgMSwgMjIzLCAxNjMsIDE2MCwgOCwgNSwgMSwgNzgsIDE2MCwgOCwgNSwgMSwgMjE5LCAxODQsIAotICAgIDE2MCwgOCwgNSwgMSwgMjE3LCAxMzQsIDE2MCwgOCwgNSwgMSwgMTQ2LCAxNjAsIDgsIDUsIDEsIDE5NCwgMTYwLCA4LCA1LCAKLSAgICAxLCAyMTAsIDY5LCAxNjAsIDgsIDUsIDEsIDY4LCAxNjAsIDgsIDUsIDEsIDIwNiwgMTY0LCAxNjAsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ0LCAxNjAsIDgsIDUsIDEsIDIwMywgMTk2LCAxNjAsIDgsIDUsIDEsIDIwMywgMTI0LCAxNjAsIDgsIDUsIDEsIDIwMiwgCi0gICAgMTU5LCAxNjAsIDQ5LCAyNDUsIDkzLCAxNTUsIDE2MCwgODAsIDIyNywgMTE0LCAxNjAsIDUwLCAyNDUsIDkzLCAxNTUsIAotICAgIDE2MCwgMjA4LCAyMjcsIDI0NywgNjAsIDIwOSwgMjU1LCA1NywgMjE0LCA3MSwgNTcsIDIxNCwgNjAsIDU3LCAyMTQsIDQ5LCAKLSAgICA1NywgMjE0LCAzNywgNTcsIDIxNCwgMjYsIDU3LCAyMTQsIDE1LCA1NywgMjE0LCA0LCA1NywgMjEzLCAyNDksIDU3LCAyMTMsIAotICAgIDIzOCwgNTcsIDIxMywgMjMwLCA1NywgMjEzLCAyMjksIDU3LCAyMTMsIDIyOCwgNTcsIDIxMywgMjI3LCA1NywgMjEzLCAKLSAgICAyMjUsIDU3LCAyMTMsIDIyNCwgNTcsIDIxMywgMjIzLCA1NywgMjEzLCAyMjIsIDU3LCAyMTMsIDIyMSwgNTcsIDIxMywgCi0gICAgMjIwLCA1NywgMjEzLCAyMTksIDU3LCAyMTMsIDIxOCwgNTcsIDIxMywgMjE3LCA1NywgMjEzLCAyMTYsIDU3LCAyMTMsIAotICAgIDIxNCwgNTcsIDIxMywgMjEzLCA1NywgMjEzLCAyMTIsIDU3LCAyMTMsIDIxMSwgNTcsIDIxMywgMjEwLCA1NywgMjEzLCAKLSAgICAyMDksIDU3LCAyMTMsIDIwOCwgNTcsIDIxMywgMjA3LCA1NywgMjEzLCAyMDYsIDU3LCAyMTMsIDIwNSwgNTcsIDIxMywgCi0gICAgMjAzLCA1NywgMjEzLCAyMDIsIDU3LCAyMTMsIDIwMSwgNTcsIDIxMywgMjAwLCA1NywgMjEzLCAxOTksIDU3LCAyMTMsIAotICAgIDE5OCwgNTcsIDIxMywgMTk3LCA1NywgMjEzLCAxOTYsIDU3LCAyMTMsIDE5NSwgNTcsIDIxMywgMTk0LCA1NywgMjEzLCAKLSAgICAxOTIsIDU3LCAyMTMsIDE5MSwgNTcsIDIxMywgMTkwLCA1NywgMjEzLCAxODksIDU3LCAyMTMsIDE4OCwgNTcsIDIxMywgCi0gICAgMTg3LCA1NywgMjEzLCAxODYsIDU3LCAyMTMsIDE4NSwgNTcsIDIxMywgMTg0LCA1NywgMjEzLCAxODMsIDU3LCAyMTMsIAotICAgIDE4MSwgNTcsIDIxMywgMTgwLCA1NywgMjEzLCAxNzksIDU3LCAyMTMsIDE3OCwgNTcsIDIxMywgMTc3LCA1NywgMjEzLCAKLSAgICAxNzYsIDU3LCAyMTMsIDE3NSwgNTcsIDIxMywgMTc0LCA1NywgMjEzLCAxNzMsIDU3LCAyMTMsIDE3MiwgNTcsIDIxMywgCi0gICAgMTcwLCA1NywgMjEzLCAxNjksIDU3LCAyMTMsIDE2OCwgNTcsIDIxMywgMTY3LCA1NywgMjEzLCAxNjYsIDU3LCAyMTMsIAotICAgIDE2NSwgNTcsIDIxMywgMTY0LCA1NywgMjEzLCAxNjMsIDU3LCAyMTMsIDE2MiwgNTcsIDIxMywgMTYxLCA1NywgMjEzLCAKLSAgICAxNTksIDU3LCAyMTMsIDE1OCwgNTcsIDIxMywgMTU3LCA1NywgMjEzLCAxNTYsIDU3LCAyMTMsIDE1NSwgNTcsIDIxMywgCi0gICAgMTU0LCA1NywgMjEzLCAxNTMsIDU3LCAyMTMsIDE1MiwgNTcsIDIxMywgMTUxLCA1NywgMjEzLCAxNTAsIDU3LCAyMTQsIAotICAgIDE0NywgNTcsIDIxNCwgMTQ2LCA1NywgMjE0LCAxNDUsIDU3LCAyMTQsIDE0NCwgNTcsIDIxNCwgMTQzLCA1NywgMjE0LCAKLSAgICAxNDIsIDU3LCAyMTQsIDE0MSwgNTcsIDIxNCwgMTQwLCA1NywgMjE0LCAxMzksIDU3LCAyMTQsIDEzOCwgNTcsIDIxNCwgCi0gICAgMTM2LCA1NywgMjE0LCAxMzUsIDU3LCAyMTQsIDEzNCwgNTcsIDIxNCwgMTMzLCA1NywgMjE0LCAxMzIsIDU3LCAyMTQsIAotICAgIDEzMSwgNTcsIDIxNCwgMTMwLCA1NywgMjE0LCAxMjksIDU3LCAyMTQsIDEyOCwgNTcsIDIxNCwgMTI3LCA1NywgMjE0LCAKLSAgICAxMjUsIDU3LCAyMTQsIDEyNCwgNTcsIDIxNCwgMTIzLCA1NywgMjE0LCAxMjIsIDU3LCAyMTQsIDEyMSwgNTcsIDIxNCwgCi0gICAgMTIwLCA1NywgMjE0LCAxMTksIDU3LCAyMTQsIDExOCwgNTcsIDIxNCwgMTE3LCA1NywgMjE0LCAxMTYsIDU3LCAyMTQsIAotICAgIDExNCwgNTcsIDIxNCwgMTEzLCA1NywgMjE0LCAxMTIsIDU3LCAyMTQsIDExMSwgNTcsIDIxNCwgMTEwLCA1NywgMjE0LCAKLSAgICAxMDksIDU3LCAyMTQsIDEwOCwgNTcsIDIxNCwgMTA3LCA1NywgMjE0LCAxMDYsIDU3LCAyMTQsIDEwNSwgNTcsIDIxNCwgCi0gICAgMTAzLCA1NywgMjE0LCAxMDIsIDU3LCAyMTQsIDEwMSwgNTcsIDIxNCwgMTAwLCA1NywgMjE0LCA5OSwgNTcsIDIxNCwgOTgsIAotICAgIDU3LCAyMTQsIDk3LCA1NywgMjE0LCA5NiwgNTcsIDIxNCwgOTUsIDU3LCAyMTQsIDk0LCA1NywgMjE0LCA5MiwgNTcsIDIxNCwgCi0gICAgOTEsIDU3LCAyMTQsIDkwLCA1NywgMjE0LCA4OSwgNTcsIDIxNCwgODgsIDU3LCAyMTQsIDg3LCA1NywgMjE0LCA4NiwgNTcsIAotICAgIDIxNCwgODUsIDU3LCAyMTQsIDg0LCA1NywgMjE0LCA4MywgNTcsIDIxNCwgODEsIDU3LCAyMTQsIDgwLCA1NywgMjE0LCA3OSwgCi0gICAgNTcsIDIxNCwgNzgsIDU3LCAyMTQsIDc3LCA1NywgMjE0LCA3NiwgNTcsIDIxNCwgNzUsIDU3LCAyMTQsIDc0LCA1NywgMjE0LCAKLSAgICA3MywgNTcsIDIxNCwgNzIsIDU3LCAyMTQsIDcwLCA1NywgMjE0LCA2OSwgNTcsIDIxNCwgNjgsIDU3LCAyMTQsIDY3LCA1NywgCi0gICAgMjE0LCA2NiwgNTcsIDIxNCwgNjUsIDU3LCAyMTQsIDY0LCA1NywgMjE0LCA2MywgNTcsIDIxNCwgNjIsIDU3LCAyMTQsIDYxLCAKLSAgICA1NywgMjE0LCA1OSwgNTcsIDIxNCwgNTgsIDU3LCAyMTQsIDU3LCA1NywgMjE0LCA1NiwgNTcsIDIxNCwgNTUsIDU3LCAyMTQsIAotICAgIDU0LCA1NywgMjE0LCA1MywgNTcsIDIxNCwgNTIsIDU3LCAyMTQsIDUxLCA1NywgMjE0LCA1MCwgNTcsIDIxNCwgNDgsIDU3LCAKLSAgICAyMTQsIDQ3LCA1NywgMjE0LCA0NiwgNTcsIDIxNCwgNDUsIDU3LCAyMTQsIDQ0LCA1NywgMjE0LCA0MywgNTcsIDIxNCwgNDIsIAotICAgIDU3LCAyMTQsIDQxLCA1NywgMjE0LCA0MCwgNTcsIDIxNCwgMzksIDU3LCAyMTQsIDM2LCA1NywgMjE0LCAzNSwgNTcsIDIxNCwgCi0gICAgMzQsIDU3LCAyMTQsIDMzLCA1NywgMjE0LCAzMiwgNTcsIDIxNCwgMzEsIDU3LCAyMTQsIDMwLCA1NywgMjE0LCAyOSwgNTcsIAotICAgIDIxNCwgMjgsIDU3LCAyMTQsIDI3LCA1NywgMjE0LCAyNSwgNTcsIDIxNCwgMjQsIDU3LCAyMTQsIDIzLCA1NywgMjE0LCAyMiwgCi0gICAgNTcsIDIxNCwgMjEsIDU3LCAyMTQsIDIwLCA1NywgMjE0LCAxOSwgNTcsIDIxNCwgMTgsIDU3LCAyMTQsIDE3LCA1NywgMjE0LCAKLSAgICAxNiwgNTcsIDIxNCwgMTQsIDU3LCAyMTQsIDEzLCA1NywgMjE0LCAxMiwgNTcsIDIxNCwgMTEsIDU3LCAyMTQsIDEwLCA1NywgCi0gICAgMjE0LCA5LCA1NywgMjE0LCA4LCA1NywgMjE0LCA3LCA1NywgMjE0LCA2LCA1NywgMjE0LCA1LCA1NywgMjE0LCAzLCA1NywgCi0gICAgMjE0LCAyLCA1NywgMjE0LCAxLCA1NywgMjE0LCAwLCA1NywgMjEzLCAyNTUsIDU3LCAyMTMsIDI1NCwgNTcsIDIxMywgMjUzLCAKLSAgICA1NywgMjEzLCAyNTIsIDU3LCAyMTMsIDI1MSwgNTcsIDIxMywgMjUwLCA1NywgMjEzLCAyNDgsIDU3LCAyMTMsIDI0NywgNTcsIAotICAgIDIxMywgMjQ2LCA1NywgMjEzLCAyNDUsIDU3LCAyMTMsIDI0NCwgNTcsIDIxMywgMjQzLCA1NywgMjEzLCAyNDIsIDU3LCAKLSAgICAyMTMsIDI0MSwgNTcsIDIxMywgMjQwLCA1NywgMjEzLCAyMzksIDU3LCAyMTMsIDIzNywgNTcsIDIxMywgMjM2LCA1NywgCi0gICAgMjEzLCAyMzUsIDU3LCAyMTMsIDIzNCwgNTcsIDIxMywgMjMzLCA1NywgMjEzLCAyMzIsIDU3LCAyMTMsIDIzMSwgMjIxLCAKLSAgICA0OCwgMjIxLCA1MCwgMjExLCA5MCwgNzYsIDIzNywgNjEsIDIxMiwgMywgMjExLCA5MCwgNzYsIDIwOSwgMTEyLCAyMTEsIAotICAgIDEyLCAyNDEsIDg0LCA3NiwgMjA5LCAxMTIsIDI0MCwgMjQwLCAyNDEsIDg0LCA3NiwgMjA4LCAxMDUsIDI0MSwgNDcsIDI0MSwgCi0gICAgNzEsIDI0MSwgNzIsIDI1MSwgMTMwLCAyNTEsIDEzMSwgMjUxLCAyNywgMjQ4LCAxMzEsIDI0OSwgMTksIDI0NywgMTk5LCAKLSAgICAxNjcsIDIxMCwgNSwgMjM2LCAxMDYsIDIxMCwgNSwgMjM2LCAzMSwgMjEwLCAxMCwgMjI3LCAxMTUsIDI0MCwgNTEsIDIyMiwgCi0gICAgMjE0LCAyMjcsIDExNCwgMjQxLCA4NCwgNzYsIDIyNywgMTE0LCAyMjcsIDE2MywgMjIxLCAyNTMsIDI0MSwgNTAsIDIyNywgCi0gICAgMTE1LCAyMTAsIDUsIDgwLCAyMTAsIDUsIDIwNCwgMTY1LCAyMzksIDE1OSwgMjQwLCA1MSwgMjQwLCAzMCwgMjQ3LCAyNSwgCi0gICAgMjE2LCA3NywgMjQ1LCAxNDcsIDIxMywgNywgMjE5LCAyMTEsIDIyNywgNDEsIDEwNSwgMjEyLCAxMywgMjEzLCA3LCAyMzEsIAotICAgIDQ5LCAyMjcsIDQxLCAyMDIsIDg0LCAyMTIsIDE2MiwgMjQ0LCAxMzksIDIyNywgMTA1LCAyNDEsIDksIDI0MywgMTIzLCAKLSAgICAyNDQsIDgsIDI0NSwgMTg0LCAxMDUsIDI0NCwgMTI4LCAyNDQsIDgsIDI0NSwgMTg0LCAxMDgsIDI0NCwgMTI3LCAyNDQsIDgsIAotICAgIDI0NSwgMTg0LCAxNDcsIDI0NCwgMTI2LCAyNDQsIDgsIDI0NSwgMTg0LCAxNDksIDI0NCwgMTI1LCAxODIsIDI1MSwgMTMwLCAKLSAgICAyMjMsIDg5LCAyMTAsIDk1LCAyMzEsIDExMiwgMjEwLCA5OSwgMjQxLCA4NCwgNzYsIDIwOCwgMTA2LCAyNDgsIDMzLCAyNDAsIAotICAgIDI0NywgMjQ3LCA1OSwgMjQ3LCA2MSwgMjQxLCA4NCwgNzYsIDIyNSwgOSwgMjQxLCA0OCwgMjEwLCAyNDIsIDIxMSwgMywgCi0gICAgMjQxLCA5LCAyNDEsIDEwLCAyMzEsIDI1LCAyMTMsIDEzMSwgMTQ5LCAyNDAsIDExLCAyMTMsIDEzMCwgMjM5LCAxMTIsIAotICAgIDIzMSwgMjUsIDIxMywgMTMxLCAxNDcsIDIzNywgMjM4LCAyMTMsIDEzMCwgMjM3LCAyMzUsIDIzMSwgMjUsIDIxMywgMTMxLCAKLSAgICAxMDgsIDIxNiwgMTQ5LCAyMTMsIDEzMCwgMjE1LCAxNTAsIDIzMSwgMjUsIDIxMywgMTMxLCAxMDUsIDIwNiwgMjM2LCAyMTMsIAotICAgIDEzMCwgMjA2LCAxOTMsIDIxMSwgMjMxLCAyNDQsIDQ2LCAyNDQsIDQ4LCAyMTksIDE1NywgMjQ2LCAxODIsIDIxOSwgMTU5LCAKLSAgICAxMzgsIDIyMCwgODAsIDIxNywgMjQwLCAyMzYsIDEwOSwgMjQ3LCAyMTgsIDIxOCwgMjM2LCAyMzcsIDI3LCAyNDcsIDIzMCwgCi0gICAgMjIxLCAxOTIsIDI0NywgMjE4LCAyMzcsIDI3LCAyMjMsIDUzLCAyMzEsIDM1LCAyMzEsIDM3LCAyMjIsIDIwOCwgMjI3LCAKLSAgICAxMTQsIDIyMiwgMjMxLCAyMTEsIDkwLCA3NiwgMjE0LCAxNTIsIDI1MCwgMTIwLCAyMTEsIDE2NCwgMjQxLCA4NCwgNzYsIAotICAgIDIxNCwgMTUyLCAyNTAsIDEyMCwgMjQxLCAxMiwgMTY3LCAyMTAsIDYsIDIxMywgMTE3LCAyMzYsIDEwNiwgMjEwLCA2LCAKLSAgICAyMTMsIDExNywgMjM2LCAyOCwgMTY3LCAyMTAsIDYsIDMsIDIzMCwgNjYsIDIzNiwgMTA2LCAyMTAsIDYsIDMsIDIzMCwgNjYsIAotICAgIDIzNiwgMjksIDIyNywgMTE1LCAyMTAsIDYsIDIxMywgMTE3LCA4MCwgMjEwLCA2LCAyMTMsIDExNywgMjA0LCAxNjQsIDIxOSwgCi0gICAgNjksIDIyNywgMTE1LCAyMzksIDE1MSwgMjE5LCA2OSwgMjI3LCAxMTUsIDI0MiwgNzAsIDIxOCwgODcsIDIxOSwgNjksIAotICAgIDIyNywgMTE1LCAyNDksIDE4LCAyMTksIDY5LCAyMjcsIDExNSwgMjA2LCAyMjQsIDIxOCwgODIsIDIxNiwgNzQsIDIyNywgCi0gICAgMTE1LCAyNDAsIDUxLCAyMTYsIDc0LCAyMzEsIDM1LCAyMTYsIDU3LCAyMTIsIDEyMCwgMjEzLCA3LCAxMDgsIDIxMiwgMTE3LCAKLSAgICAyMTEsIDE2NiwgMjEyLCAxMjAsIDIxMywgNywgMTQ3LCAyMTIsIDExNiwgMjExLCAxNjUsIDI0NCwgOCwgMjQ1LCAxODQsIAotICAgIDIxMSwgMzQsIDI0NCwgMTIzLCAyMTcsIDIyNywgMjA2LCAxOTIsIDEwNSwgMjE3LCAyMjcsIDIwNiwgMTkwLCAyMTcsIDE5MCwgCi0gICAgMjE3LCAyMjcsIDIwNiwgMTkyLCAxMDgsIDIxNywgMjI3LCAyMDYsIDE4OSwgMjE3LCAxODksIDIxMywgMTE4LCAyMDgsIAotICAgIDEwNCwgMjExLCA4OSwgMjExLCAxNywgMjQ3LCA2MCwgMjQ2LCAxODIsIDI0NywgMSwgMjI0LCAyMjQsIDIwNCwgMTAzLCAKLSAgICAyMjMsIDE4MSwgMjExLCA5MCwgNzYsIDIzNywgMjIzLCAyNTAsIDEyMCwgMjExLCA5MCwgNzYsIDIxNywgMjA4LCAyNTAsIAotICAgIDEyMCwgMjExLCAyMzAsIDI0MSwgODQsIDc2LCAyMzcsIDIyMywgMjUwLCAxMjAsIDI0MSwgODQsIDc2LCAyMTcsIDIwOCwgCi0gICAgMjUwLCAxMjAsIDI0MSwgNDUsIDIxMSwgOTAsIDc2LCAyMTEsIDM0LCAyMTEsIDI0NSwgMjEyLCAxMjAsIDIzOCwgMywgMTY3LCAKLSAgICAyMzAsIDI0MSwgMjEzLCA5NSwgMjEyLCAxMjAsIDE2NywgMjMwLCAyNDEsIDIxNCwgMTkxLCAyNDUsIDE4NCwgMjEzLCAxMjcsIAotICAgIDIzMCwgMjQxLCAyNDUsIDExMSwgMjExLCAzNSwgMjA5LCAxMzgsIDIxMSwgMTA4LCAyMjAsIDAsIDIxMCwgODQsIDI0NSwgCi0gICAgMjMyLCAyMTksIDIyNiwgMjE3LCAyMjgsIDIyNCwgMjIzLCAyMTgsIDcyLCAyNTAsIDE1NiwgMjE3LCAyMjIsIDI0NSwgMjMyLCAKLSAgICAyNTAsIDE3MiwgMjIzLCA0MSwgMjEyLCAxNzEsIDgsIDYsIDEsIDIzOCwgMTE5LCA4LCA1LCAxLCAyMzgsIDExOSwgMjQ2LCAKLSAgICAyMDEsIDI1MSwgOCwgMjEwLCA4OSwgMjEwLCAyNDgsIDI0NSwgMjQzLCAyMTIsIDY4LCAyMjcsIDIyMiwgMjAwLCAxLCAyMjcsIAotICAgIDY4LCAyMjgsIDEyLCAxLCAyMzksIDE4NywgMjM5LCAxNzgsIDIyOCwgMTIsIDEsIDIzOSwgMTg3LCAyNDAsIDYzLCAyMjgsIAotICAgIDEyLCAxLCAyMTUsIDIyNywgMjI4LCAxMiwgMSwgMjI3LCA0OSwgNzcsIDEzMSwgMjQ4LCA0NSwgMjEyLCAyMzgsIDIzOCwgCi0gICAgODIsIDIyNCwgMTczLCAyMTYsIDY0LCAyMzksIDg5LCAyMzksIDg4LCAyMzksIDg3LCAyMjMsIDE4MywgMjAxLCAyNDMsIAotICAgIDIwMSwgMjQ0LCAyMDEsIDI0NiwgMjI2LCAyNDMsIDIxNSwgMjM1LCAyMjYsIDI0NSwgMjE1LCAyMzcsIDIxOSwgMzcsIDIyNiwgCi0gICAgMjQyLCAyMTUsIDIzNCwgMjIxLCAyMjMsIDIyNCwgODYsIDIwNCwgMiwgMjI2LCAyNDQsIDIxNSwgMjM2LCAyMzksIDExMSwgCi0gICAgMjE5LCAzNiwgMjA0LCA1MiwgMjQxLCAxMDcsIDIzOSwgOTksIDIyNCwgMTU0LCAyMjAsIDMyLCAyMDYsIDE5NCwgOTcsIAotICAgIDIyNCwgMTU0LCAyNDQsIDE0NSwgOTcsIDk2LCAyMDgsIDg0LCA1MywgMywgNTIsIDgwLCA5NSwgODYsIDIwOCwgODQsIDUzLCAKLSAgICAzLCA1MiwgODAsIDk1LCAxMSwgNCwgMjMwLCAxOTksIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAKLSAgICAyMjcsIDE4NSwgMTU1LCAyMDUsIDE2NSwgMjA1LCA1NCwgMjA0LCAyNDIsIDIwNCwgMjMxLCAyMDQsIDIyMCwgMjA0LCAyMDksIAotICAgIDIwNCwgMTk4LCAyMDQsIDE4NywgMjA0LCAxNzYsIDIwNSwgMTY0LCAyMDUsIDE1MywgMjA1LCAxNDIsIDIwNSwgMTMxLCAKLSAgICAyMDUsIDEyMCwgMjA1LCAxMDksIDIwNSwgOTgsIDI0NywgMTMwLCAyMTksIDI0MSwgODIsIDI0OCwgMTMsIDIwMSwgMjQ1LCAKLSAgICA5LCAyLCAyMjEsIDU3LCAyMDksIDE0MSwgOSwgMiwgMjIxLCA1NywgMTE1LCAyMjEsIDU3LCAyNDcsIDE2MSwgMTE1LCAyNDcsIAotICAgIDE2MCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIxMiwgNjQsIDI0NiwgMTAyLCAyMDYsIDY1LCAyMDUsIDg3LCAyMDUsIDc2LCAKLSAgICAyMDUsIDY1LCAyMDUsIDUzLCAyMDUsIDQyLCAyMDUsIDMxLCAyMDUsIDIwLCAyMDUsIDksIDIwNCwgMjU0LCAyMDQsIDI0NiwgCi0gICAgMjA0LCAyNDUsIDIwNCwgMjQ0LCAyMDQsIDI0MywgMjA0LCAyNDEsIDIwNCwgMjQwLCAyMDQsIDIzOSwgMjA0LCAyMzgsIAotICAgIDIwNCwgMjM3LCAyMDQsIDIzNiwgMjA0LCAyMzUsIDIwNCwgMjM0LCAyMDQsIDIzMywgMjA0LCAyMzIsIDIwNCwgMjMwLCAKLSAgICAyMDQsIDIyOSwgMjA0LCAyMjgsIDIwNCwgMjI3LCAyMDQsIDIyNiwgMjA0LCAyMjUsIDIwNCwgMjI0LCAyMDQsIDIyMywgCi0gICAgMjA0LCAyMjIsIDIwNCwgMjIxLCAyMDQsIDIxOSwgMjA0LCAyMTgsIDIwNCwgMjE3LCAyMDQsIDIxNiwgMjA0LCAyMTUsIAotICAgIDIwNCwgMjE0LCAyMDQsIDIxMywgMjA0LCAyMTIsIDIwNCwgMjExLCAyMDQsIDIxMCwgMjA0LCAyMDgsIDIwNCwgMjA3LCAKLSAgICAyMDQsIDIwNiwgMjA0LCAyMDUsIDIwNCwgMjA0LCAyMDQsIDIwMywgMjA0LCAyMDIsIDIwNCwgMjAxLCAyMDQsIDIwMCwgCi0gICAgMjA0LCAxOTksIDIwNCwgMTk3LCAyMDQsIDE5NiwgMjA0LCAxOTUsIDIwNCwgMTk0LCAyMDQsIDE5MywgMjA0LCAxOTIsIAotICAgIDIwNCwgMTkxLCAyMDQsIDE5MCwgMjA0LCAxODksIDIwNCwgMTg4LCAyMDQsIDE4NiwgMjA0LCAxODUsIDIwNCwgMTg0LCAKLSAgICAyMDQsIDE4MywgMjA0LCAxODIsIDIwNCwgMTgxLCAyMDQsIDE4MCwgMjA0LCAxNzksIDIwNCwgMTc4LCAyMDQsIDE3NywgCi0gICAgMjA0LCAxNzUsIDIwNCwgMTc0LCAyMDQsIDE3MywgMjA0LCAxNzIsIDIwNCwgMTcxLCAyMDQsIDE3MCwgMjA0LCAxNjksIAotICAgIDIwNCwgMTY4LCAyMDQsIDE2NywgMjA0LCAxNjYsIDIwNSwgMTYzLCAyMDUsIDE2MiwgMjA1LCAxNjEsIDIwNSwgMTYwLCAKLSAgICAyMDUsIDE1OSwgMjA1LCAxNTgsIDIwNSwgMTU3LCAyMDUsIDE1NiwgMjA1LCAxNTUsIDIwNSwgMTU0LCAyMDUsIDE1MiwgCi0gICAgMjA1LCAxNTEsIDIwNSwgMTUwLCAyMDUsIDE0OSwgMjA1LCAxNDgsIDIwNSwgMTQ3LCAyMDUsIDE0NiwgMjA1LCAxNDUsIAotICAgIDIwNSwgMTQ0LCAyMDUsIDE0MywgMjA1LCAxNDEsIDIwNSwgMTQwLCAyMDUsIDEzOSwgMjA1LCAxMzgsIDIwNSwgMTM3LCAKLSAgICAyMDUsIDEzNiwgMjA1LCAxMzUsIDIwNSwgMTM0LCAyMDUsIDEzMywgMjA1LCAxMzIsIDIwNSwgMTMwLCAyMDUsIDEyOSwgCi0gICAgMjA1LCAxMjgsIDIwNSwgMTI3LCAyMDUsIDEyNiwgMjA1LCAxMjUsIDIwNSwgMTI0LCAyMDUsIDEyMywgMjA1LCAxMjIsIAotICAgIDIwNSwgMTIxLCAyMDUsIDExOSwgMjA1LCAxMTgsIDIwNSwgMTE3LCAyMDUsIDExNiwgMjA1LCAxMTUsIDIwNSwgMTE0LCAKLSAgICAyMDUsIDExMywgMjA1LCAxMTIsIDIwNSwgMTExLCAyMDUsIDExMCwgMjA1LCAxMDgsIDIwNSwgMTA3LCAyMDUsIDEwNiwgCi0gICAgMjA1LCAxMDUsIDIwNSwgMTA0LCAyMDUsIDEwMywgMjA1LCAxMDIsIDIwNSwgMTAxLCAyMDUsIDEwMCwgMjA1LCA5OSwgMjA1LCAKLSAgICA5NywgMjA1LCA5NiwgMjA1LCA5NSwgMjA1LCA5NCwgMjA1LCA5MywgMjA1LCA5MiwgMjA1LCA5MSwgMjA1LCA5MCwgMjA1LCAKLSAgICA4OSwgMjA1LCA4OCwgMjA1LCA4NiwgMjA1LCA4NSwgMjA1LCA4NCwgMjA1LCA4MywgMjA1LCA4MiwgMjA1LCA4MSwgMjA1LCAKLSAgICA4MCwgMjA1LCA3OSwgMjA1LCA3OCwgMjA1LCA3NywgMjA1LCA3NSwgMjA1LCA3NCwgMjA1LCA3MywgMjA1LCA3MiwgMjA1LCAKLSAgICA3MSwgMjA1LCA3MCwgMjA1LCA2OSwgMjA1LCA2OCwgMjA1LCA2NywgMjA1LCA2NiwgMjA1LCA2NCwgMjA1LCA2MywgMjA1LCAKLSAgICA2MiwgMjA1LCA2MSwgMjA1LCA2MCwgMjA1LCA1OSwgMjA1LCA1OCwgMjA1LCA1NywgMjA1LCA1NiwgMjA1LCA1NSwgMjA1LCAKLSAgICA1MiwgMjA1LCA1MSwgMjA1LCA1MCwgMjA1LCA0OSwgMjA1LCA0OCwgMjA1LCA0NywgMjA1LCA0NiwgMjA1LCA0NSwgMjA1LCAKLSAgICA0NCwgMjA1LCA0MywgMjA1LCA0MSwgMjA1LCA0MCwgMjA1LCAzOSwgMjA1LCAzOCwgMjA1LCAzNywgMjA1LCAzNiwgMjA1LCAKLSAgICAzNSwgMjA1LCAzNCwgMjA1LCAzMywgMjA1LCAzMiwgMjA1LCAzMCwgMjA1LCAyOSwgMjA1LCAyOCwgMjA1LCAyNywgMjA1LCAKLSAgICAyNiwgMjA1LCAyNSwgMjA1LCAyNCwgMjA1LCAyMywgMjA1LCAyMiwgMjA1LCAyMSwgMjA1LCAxOSwgMjA1LCAxOCwgMjA1LCAKLSAgICAxNywgMjA1LCAxNiwgMjA1LCAxNSwgMjA1LCAxNCwgMjA1LCAxMywgMjA1LCAxMiwgMjA1LCAxMSwgMjA1LCAxMCwgMjA1LCAKLSAgICA4LCAyMDUsIDcsIDIwNSwgNiwgMjA1LCA1LCAyMDUsIDQsIDIwNSwgMywgMjA1LCAyLCAyMDUsIDEsIDIwNSwgMCwgMjA0LCAKLSAgICAyNTUsIDIwNCwgMjUzLCAyMDQsIDI1MiwgMjA0LCAyNTEsIDIwNCwgMjUwLCAyMDQsIDI0OSwgMjA0LCAyNDgsIDIwNCwgCi0gICAgMjQ3LCA4LCA2LCAxLCAzNCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDIyNSwgMTcxLCAKLSAgICAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMTg4LCAzLCA4MCwgCi0gICAgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgCi0gICAgNSwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgODAsIAotICAgIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgCi0gICAgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAKLSAgICAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDI0NywgMjksIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDI0NywgMjksIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAKLSAgICAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIAotICAgIDE2NSwgOCwgNSwgMSwgMjIyLCAyMDYsIDMsIDIwOCwgMjI4LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIAotICAgIDU2LCA4LCA1LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAKLSAgICAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAyMzcsIAotICAgIDI1MywgOCwgNiwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIAotICAgIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDgwLCAyMjcsIDExNSwgNTYsIAotICAgIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjIwLCAKLSAgICA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyMjAsIDYzLCAKLSAgICAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDM0LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgMywgCi0gICAgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIAotICAgIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIAotICAgIDE4OCwgMywgNzAsIDg3LCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDcwLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNzAsIDg3LCAyNSwgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCAKLSAgICA2MywgMjUsIDcwLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgCi0gICAgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjMsIDI1LCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMjMwLCAxODUsIAotICAgIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMzAsIDE4NSwgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDIyOCwgCi0gICAgMTMxLCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgCi0gICAgMjA4LCAyMjcsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMDgsIDIyNywgCi0gICAgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAKLSAgICAxMDYsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgCi0gICAgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIwOCwgMjI3LCAKLSAgICA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDI1MSwgMTEwLCAzLCAyMzcsIDI1MywgCi0gICAgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxNzEsIDE1OCwgMywgMTY1LCA4LCA1LCAxLCAyMDcsIAotICAgIDE3NCwgMjA2LCAxNjUsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjA2LCAxNjUsIDMsIDE2NSwgOCwgNSwgMSwgCi0gICAgMjE0LCAxOTMsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMTQsIDE5MywgMywgMTY1LCA4LCA1LCAxLCAyMzYsIDExNSwgMjE0LCAKLSAgICAxOTMsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzYsIDExNSwgMjE0LCAxOTMsIDMsIDE2NSwgMTAsIDIxMywgMTI3LCA4OSwgCi0gICAgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDMwLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwNCwgCi0gICAgNzAsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEyOSwgMTAsIDIxMywgMTI3LCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDczLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAotICAgIDY4LCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMjEzLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDMsIDc0LCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTA5LCAxMCwgCi0gICAgMjEzLCAxMjcsIDIyMSwgMTc5LCAzLCAyMjksIDE4OSwgMTc5LCAxLCAyMjksIDExOSwgNDQsIDEwOSwgMjMwLCA1NCwgNDQsIAotICAgIDEwOSwgMjIyLCAyMDUsIDQ0LCAxMDksIDI0NywgMTI1LCA0NCwgMTA5LCAyMjEsIDEzLCA0NCwgMTA5LCAyMDcsIDI0NCwgCi0gICAgNDQsIDEwOSwgMjIxLCAyMjgsIDQ0LCAxMDksIDIxMCwgNjksIDQ0LCAxMDksIDIyMywgMTYzLCA0NCwgMTA5LCAyMTksIAotICAgIDE4NCwgNDQsIDEwOSwgMjI2LCAxODUsIDQ0LCAxMDksIDIwMywgMTI0LCA0NCwgMTA5LCAxNDYsIDQ0LCAxMDksIDE1OSwgCi0gICAgNDQsIDEwOSwgMjA2LCAxNjQsIDQ0LCAxMDksIDIyNywgNjksIDQ0LCAxMDksIDIyNywgNzgsIDQ0LCAxMDksIDIxNSwgMTg2LCAKLSAgICA0NCwgMTA5LCAyMjEsIDIxMCwgNDQsIDEwOSwgMjMwLCAxODQsIDQ0LCAxMDksIDIxMywgOTIsIDQ0LCAxMDksIDIxMSwgCi0gICAgMTY3LCA0NCwgMTA5LCAxOTQsIDQ0LCAxMDksIDIzNywgMTcxLCA0NCwgMTA5LCAyMjgsIDIyNCwgNDQsIDQsIDIzMCwgNDEsIAotICAgIDQ0LCA0LCAyMjksIDEwMCwgNDQsIDQsIDIyOSwgODcsIDQ0LCA0LCAyMjgsIDIwOSwgNDQsIDQsIDIyOCwgMTc0LCA0NCwgNCwgCi0gICAgMjI5LCAyMDEsIDQ0LCA0LCAyMjksIDE5OCwgNDQsIDQsIDIzMCwgMTgsIDQ0LCA0LCAyMjksIDI2LCA0NCwgNCwgMjI5LCA2LCAKLSAgICA0NCwgNCwgMjI5LCAyMTksIDQ0LCA0LCAyMjIsIDIwMiwgNDQsIDQsIDIyMiwgMTUxLCA0NCwgNCwgMjIyLCAxNDcsIDQ0LCAKLSAgICA0LCAyMjIsIDExNiwgNDQsIDQsIDIyMiwgMTA4LCA0NCwgNCwgMjIyLCAxOTAsIDQ0LCA0LCAyMjIsIDE4OCwgNDQsIDQsIAotICAgIDIyMiwgMTk5LCA0NCwgNCwgMjIyLCAxMjgsIDQ0LCA0LCAyMjIsIDEyMywgNDQsIDQsIDIyMiwgMTkyLCA0NCwgNCwgMjQ3LCAKLSAgICA5MSwgNDQsIDQsIDI0NiwgNzksIDQ0LCA0LCAyNDYsIDY5LCA0NCwgNCwgMjQ1LCAxMTAsIDQ0LCA0LCAyNDUsIDc2LCA0NCwgCi0gICAgNCwgMjQ2LCAyMzgsIDQ0LCA0LCAyNDYsIDIzMCwgNDQsIDQsIDI0NywgODAsIDQ0LCA0LCAyNDUsIDI1NCwgNDQsIDQsIAotICAgIDI0NSwgMTgwLCA0NCwgNCwgMjQ3LCAxNSwgNDQsIDQsIDIyMSwgMTAsIDQ0LCA0LCAyMjAsIDI0OCwgNDQsIDQsIDIyMCwgCi0gICAgMjQzLCA0NCwgNCwgMjIwLCAyMjYsIDQ0LCA0LCAyMjAsIDIxOCwgNDQsIDQsIDIyMSwgMSwgNDQsIDQsIDIyMSwgMCwgNDQsIAotICAgIDQsIDIyMSwgNywgNDQsIDQsIDIyMCwgMjMzLCA0NCwgNCwgMjIwLCAyMzAsIDQ0LCA0LCAyMjEsIDQsIDQ0LCA0LCAyMDcsIAotICAgIDI0MCwgNDQsIDQsIDIwNywgMjIwLCA0NCwgNCwgMjA3LCAyMTksIDQ0LCA0LCAyMDcsIDIwOCwgNDQsIDQsIDIwNywgMjA1LCAKLSAgICA0NCwgNCwgMjA3LCAyMzYsIDQ0LCA0LCAyMDcsIDIzNSwgNDQsIDQsIDIwNywgMjM5LCA0NCwgNCwgMjA3LCAyMTgsIDQ0LCAKLSAgICA0LCAyMDcsIDIxNywgNDQsIDQsIDIwNywgMjM4LCA0NCwgNCwgMjIxLCAyMjYsIDQ0LCA0LCAyMjEsIDIxMiwgNDQsIDQsIAotICAgIDIyMSwgMjExLCA0NCwgNCwgMjIxLCAxOTUsIDQ0LCA0LCAyMjEsIDE5NCwgNDQsIDQsIDIyMSwgMjIyLCA0NCwgNCwgMjIxLCAKLSAgICAyMjEsIDQ0LCA0LCAyMjEsIDIyNSwgNDQsIDQsIDIyMSwgMTk3LCA0NCwgNCwgMjIxLCAxOTYsIDQ0LCA0LCAyMjEsIDIyNCwgCi0gICAgNDQsIDQsIDIxMCwgMTgsIDQ0LCA0LCAyMDksIDIsIDQ0LCA0LCAyMDgsIDI0MiwgNDQsIDQsIDIwNywgMjAzLCA0NCwgNCwgCi0gICAgMjA3LCAxNjUsIDQ0LCA0LCAyMDksIDE4NywgNDQsIDQsIDIwOSwgMTc2LCA0NCwgNCwgMjA5LCAyNTAsIDQ0LCA0LCAxMzUsIAotICAgIDQ0LCA0LCAyMDgsIDE0OCwgNDQsIDQsIDIwOSwgMjA3LCA0NCwgNCwgMjIzLCAxMDYsIDQ0LCA0LCAyMjIsIDEwMCwgNDQsIAotICAgIDQsIDIyMiwgNzUsIDQ0LCA0LCAyMjEsIDg0LCA0NCwgNCwgMjIxLCAyNSwgNDQsIDQsIDIyMiwgMjQwLCA0NCwgNCwgMjIyLCAKLSAgICAyMzUsIDQ0LCA0LCAyMjMsIDkyLCA0NCwgNCwgMjIxLCAxOTEsIDQ0LCA0LCAyMjEsIDE4MCwgNDQsIDQsIDIyMywgNjUsIAotICAgIDQ0LCA0LCAyMTksIDE2OCwgNDQsIDQsIDIxOCwgMTY3LCA0NCwgNCwgMjE4LCAxMjksIDQ0LCA0LCAyMTcsIDE5MSwgNDQsIAotICAgIDQsIDIxNywgMTU3LCA0NCwgNCwgMjE5LCAzNCwgNDQsIDQsIDIxOSwgMjMsIDQ0LCA0LCAyMTksIDE0OCwgNDQsIDQsIDIxOCwgCi0gICAgNjksIDQ0LCA0LCAyMTgsIDQ1LCA0NCwgNCwgMjE5LCA0OCwgNDQsIDQsIDIyNSwgMTc1LCA0NCwgNCwgMjI0LCAxNTUsIDQ0LCAKLSAgICA0LCAyMjQsIDEyNSwgNDQsIDQsIDIyMywgMjQ2LCA0NCwgNCwgMjIzLCAxOTIsIDQ0LCA0LCAyMjUsIDIwLCA0NCwgNCwgCi0gICAgMjI1LCA4LCA0NCwgNCwgMjI1LCAxNDAsIDQ0LCA0LCAyMjQsIDgyLCA0NCwgNCwgMjI0LCAzNSwgNDQsIDQsIDIyNSwgNjcsIAotICAgIDQ0LCA0LCAyMDMsIDExMCwgNDQsIDQsIDIwMywgMTEsIDQ0LCA0LCAyMDMsIDIsIDQ0LCA0LCAyMDIsIDIxMywgNDQsIDQsIAotICAgIDIwMiwgMTgxLCA0NCwgNCwgMjAzLCA1MiwgNDQsIDQsIDIwMywgNDksIDQ0LCA0LCAyMDMsIDg5LCA0NCwgNCwgMjAyLCAKLSAgICAyNDcsIDQ0LCA0LCAyMDIsIDIzMiwgNDQsIDQsIDIwMywgNjIsIDQ0LCA0LCAyMTYsIDIxNiwgNDQsIDQsIDIxNiwgNTcsIAotICAgIDQ0LCA0LCAyMTYsIDMsIDQ0LCA0LCAyMTUsIDE0NSwgNDQsIDQsIDIxNSwgMTE0LCA0NCwgNCwgMjE2LCAxNTgsIDQ0LCA0LCAKLSAgICAyMTYsIDEzNSwgNDQsIDQsIDIxNiwgMTk3LCA0NCwgNCwgMjE1LCAyMjcsIDQ0LCA0LCAyMTUsIDIwOCwgNDQsIDQsIDIxNiwgCi0gICAgMTY3LCA0NCwgNCwgMjI4LCAxMTIsIDQ0LCA0LCAyMjcsIDE0OCwgNDQsIDQsIDIyNywgMTMwLCA0NCwgNCwgMjI2LCAyMzksIAotICAgIDQ0LCA0LCAyMjYsIDIxMCwgNDQsIDQsIDIyNywgMjM0LCA0NCwgNCwgMjI3LCAyMjYsIDQ0LCA0LCAyMjgsIDg2LCA0NCwgNCwgCi0gICAgMjI3LCA0OSwgNDQsIDQsIDIyNywgMTgsIDQ0LCA0LCAyMjcsIDI1MSwgNDQsIDQsIDIwNiwgODUsIDQ0LCA0LCAyMDUsIAotICAgIDIzMCwgNDQsIDQsIDIwNSwgMjE1LCA0NCwgNCwgMjA0LCAxNjMsIDQ0LCA0LCAyMDQsIDE1NiwgNDQsIDQsIDIwNiwgNTUsIAotICAgIDQ0LCA0LCAyMDYsIDUwLCA0NCwgNCwgMjA2LCA4MSwgNDQsIDQsIDIwNSwgMTg5LCA0NCwgNCwgMjA1LCAxNzYsIDQ0LCA0LCAKLSAgICAyMDYsIDYxLCA0NCwgNCwgMjI3LCA2NywgNDQsIDQsIDIyNywgNjIsIDQ0LCA0LCAyMjcsIDYxLCA0NCwgNCwgMjI3LCA1OCwgCi0gICAgNDQsIDQsIDIyNywgNTcsIDQ0LCA0LCAyMjcsIDY0LCA0NCwgNCwgMjI3LCA2MywgNDQsIDQsIDIyNywgNjYsIDQ0LCA0LCAKLSAgICAyMjcsIDYwLCA0NCwgNCwgMjI3LCA1OSwgNDQsIDQsIDIyNywgNjUsIDQ0LCA0LCAyMjcsIDc2LCA0NCwgNCwgMjI3LCA3MSwgCi0gICAgNDQsIDQsIDIyNywgNzAsIDQ0LCA0LCAyMjcsIDU0LCA0NCwgNCwgMjI3LCA1MywgNDQsIDQsIDIyNywgNzMsIDQ0LCA0LCAKLSAgICAyMjcsIDcyLCA0NCwgNCwgMjI3LCA3NSwgNDQsIDQsIDIyNywgNTYsIDQ0LCA0LCAyMjcsIDU1LCA0NCwgNCwgMjI3LCA3NCwgCi0gICAgNDQsIDQsIDIxNSwgMTg0LCA0NCwgNCwgMjE1LCAxNzMsIDQ0LCA0LCAyMTUsIDE3MiwgNDQsIDQsIDIxNSwgMTY1LCA0NCwgCi0gICAgNCwgMjE1LCAxNTgsIDQ0LCA0LCAyMTUsIDE4MCwgNDQsIDQsIDIxNSwgMTc5LCA0NCwgNCwgMjE1LCAxODMsIDQ0LCA0LCAKLSAgICAyMTUsIDE3MSwgNDQsIDQsIDIxNSwgMTcwLCA0NCwgNCwgMjE1LCAxODIsIDQ0LCA0LCAyMjEsIDIwOCwgNDQsIDQsIDIyMSwgCi0gICAgMjAzLCA0NCwgNCwgMjIxLCAyMDIsIDQ0LCA0LCAyMjEsIDE5OSwgNDQsIDQsIDIyMSwgMTk4LCA0NCwgNCwgMjIxLCAyMDUsIAotICAgIDQ0LCA0LCAyMjEsIDIwNCwgNDQsIDQsIDIyMSwgMjA3LCA0NCwgNCwgMjIxLCAyMDEsIDQ0LCA0LCAyMjEsIDIwMCwgNDQsIAotICAgIDQsIDIyMSwgMjA2LCA0NCwgNCwgMjMwLCAxODAsIDQ0LCA0LCAyMzAsIDE0MSwgNDQsIDQsIDIzMCwgMTM0LCA0NCwgNCwgCi0gICAgMjMwLCA4MiwgNDQsIDQsIDIzMCwgNjQsIDQ0LCA0LCAyMzAsIDE2MSwgNDQsIDQsIDIzMCwgMTU5LCA0NCwgNCwgMjMwLCAKLSAgICAxNzQsIDQ0LCA0LCAyMzAsIDEwMSwgNDQsIDQsIDIzMCwgOTEsIDQ0LCA0LCAyMzAsIDE2NywgNDQsIDQsIDIxMywgODUsIAotICAgIDQ0LCA0LCAyMTMsIDExLCA0NCwgNCwgMjEzLCA2LCA0NCwgNCwgMjEyLCAxOTksIDQ0LCA0LCAyMTIsIDE4MiwgNDQsIDQsIAotICAgIDIxMywgNDMsIDQ0LCA0LCAyMTMsIDQxLCA0NCwgNCwgMjEzLCA3NCwgNDQsIDQsIDIxMiwgMjQyLCA0NCwgNCwgMjEyLCAKLSAgICAyMzYsIDQ0LCA0LCAyMTMsIDUyLCA0NCwgNCwgMjExLCAxNjMsIDQ0LCA0LCAyMTEsIDEzMiwgNDQsIDQsIDIxMSwgMTI4LCAKLSAgICA0NCwgNCwgMjExLCAxMTksIDQ0LCA0LCAyMTEsIDExNiwgNDQsIDQsIDIxMSwgMTM4LCA0NCwgNCwgMjExLCAxMzcsIDQ0LCAKLSAgICA0LCAyMTEsIDE2MiwgNDQsIDQsIDIxMSwgMTI0LCA0NCwgNCwgMjExLCAxMjMsIDQ0LCA0LCAyMTEsIDE0MCwgNDQsIDQsIAotICAgIDIxNSwgMzMsIDQ0LCA0LCAyMTIsIDE2MiwgNDQsIDQsIDIxMiwgMTQyLCA0NCwgNCwgMjExLCAxMCwgNDQsIDQsIDIxMCwgCi0gICAgMTc5LCA0NCwgNCwgMjE0LCAxNzcsIDQ0LCA0LCAyMTQsIDE2NSwgNDQsIDQsIDIxNSwgMTgsIDQ0LCA0LCAyMTIsIDEzLCAKLSAgICA0NCwgNCwgMjExLCAyNTAsIDQ0LCA0LCAyMTQsIDIxNywgNDQsIDQsIDIzNywgMTU3LCA0NCwgNCwgMjM3LCAzLCA0NCwgNCwgCi0gICAgMjM2LCAyMzksIDQ0LCA0LCAyMzYsIDI2LCA0NCwgNCwgMjM2LCAxLCA0NCwgNCwgMjM3LCA2NywgNDQsIDQsIDIzNywgNDgsIAotICAgIDQ0LCA0LCAyMzcsIDE0NywgNDQsIDQsIDIzNiwgMTM2LCA0NCwgNCwgMjM2LCAxMTcsIDQ0LCA0LCAyMzcsIDc2LCA0NCwgNCwgCi0gICAgMjI4LCAyMjMsIDQ0LCA0LCAyMjgsIDIyMiwgNDQsIDQsIDIyOCwgMjE3LCA0NCwgNCwgMjI4LCAyMTYsIDQ0LCA0LCAyMjgsIAotICAgIDIxMywgNDQsIDQsIDIyOCwgMjEyLCA0NCwgNCwgMjI4LCAyMTksIDQ0LCA0LCAyMjgsIDIxOCwgNDQsIDQsIDIyOCwgMjIxLCAKLSAgICA0NCwgNCwgMjI4LCAyMTUsIDQ0LCA0LCAyMjgsIDIxNCwgNDQsIDQsIDIyOCwgMjIwLCA0NCwgNCwgMjEyLCAyMDUsIDE0MCwgCi0gICAgMTA5LCAyLCAyMDMsIDc1LCAxNDAsIDEwOSwgMiwgMjE2LCAxODYsIDE0MCwgMTA5LCAyLCAyMTYsIDEwMiwgMTE0LCAxLCAKLSAgICAyMDcsIDk1LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTczLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAxNDQsIDg1LCAKLSAgICAxMDksIDIsIDI0NSwgMjQ5LCAyMjksIDI2LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAxMTUsIDg1LCAxMDksIDIsIAotICAgIDI0NSwgMjQ5LCAyMjIsIDEyOCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NywgOTIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAKLSAgICAyNDYsIDE5OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NSwgMjU0LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQ2LCAxMTYsIAotICAgIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjAsIDIzMywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NCwgMjEyLCA4NSwgMTA5LCAKLSAgICAyLCAyNDUsIDI0OSwgMjA3LCAyMjksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDMsIDExMywgODUsIDEwOSwgMiwgMjQ1LCAKLSAgICAyNDksIDIwNywgMjI0LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjAxLCAyMDEsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTAsIAotICAgIDIyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjA5LCAxMDgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAxMzUsIDg1LCAxMDksIAotICAgIDIsIDI0NSwgMjQ5LCAyMDksIDQ3LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjIxLCAxOTEsIDg1LCAxMDksIDIsIDI0NSwgCi0gICAgMjQ5LCAyNDksIDMyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAyMDgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTgsIAotICAgIDY5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAxODAsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjQsIDgyLCA4NSwgCi0gICAgMTA5LCAyLCAyNDUsIDI0OSwgMjAyLCAyNDcsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTUsIDIyNywgODUsIDEwOSwgMiwgCi0gICAgMjQ1LCAyNDksIDIyNywgNDksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMDUsIDE4OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIAotICAgIDIxMywgOTAsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTEsIDE2NCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxNSwgMzYsIAotICAgIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAxNTIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjgsIDExMywgODUsIDIyLCAyLCAKLSAgICAyNDUsIDI0OSwgMjE3LCAxMjYsIDg1LCAyMzEsIDM2LCAyMiwgMiwgMjQ1LCAyNDksIDIxNywgNjUsIDg1LCAyMzEsIDM2LCAKLSAgICAyMiwgMiwgMjQ1LCAyNDksIDIxNSwgMTAyLCA4NSwgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTUsIDk1LCA4NSwgCi0gICAgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTcsIDEwNiwgODUsIDIyLCAyLCAyMjAsIDM5LCA4NSwgMjIsIDIsIDI1MSwgCi0gICAgMjQyLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMjAzLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTUxLCAxNzIsIDEsIDI0OCwgCi0gICAgNzksIDIyMiwgMTE2LCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTkwLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTI4LCA2NywgCi0gICAgMSwgMjQ4LCA3OSwgMjIyLCAyMDMsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDE1MSwgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTE2LCAKLSAgICA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxOTAsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDEyOCwgNjcsIDEsIDI1MSwgNTcsIDI0NiwgCi0gICAgMjM4LCA2NywgMSwgMjUxLCA1NywgMjA3LCAyMDMsIDY3LCAxLCAyNTEsIDU3LCAxMzUsIDY3LCAxLCAyNTEsIDU3LCAyMTksIAotICAgIDE4NCwgNjUsIDEsIDI0MCwgMTk4LCAyNDAsIDE5NywgMjQ1LCAxODgsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MCwgCi0gICAgMTk4LCAyNDUsIDE4OCwgMTQzLCAxNDIsIAorICAgIDAsIDIwOCwgMjQ0LCAyMzgsIDQzLCA4MSwgMjE0LCA2MywgODEsIDQxLCA1NCwgMjQwLCAxOTQsIDU0LCAyMTYsIDI3LCA1NCwgCisgICAgMjUxLCA4OSwgMjUxLCAxMywgNDksIDIxNiwgMTE1LCA1MSwgMjE2LCAxMTUsIDI1MCwgMTY1LCA5MywgNTQsIDI0NiwgNzAsIAorICAgIDIzMywgMzIsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDksIDE2LCAxNywgMTk5LCA4MSwgMTcsIDEwMiwgMTcsIDEwNSwgMTcsIAorICAgIDE0NywgMTcsIDE0OSwgMTcsIDE2NCwgMTcsIDE4NywgMTcsIDIxMCwgMTM1LCAxNywgMTkyLCAxNywgMjE5LCAxMTMsIDI0NiwgCisgICAgNzksIDIxMCwgMTY3LCAyMjQsIDI0MSwgNTQsIDIzOCwgMTIyLCA1NCwgMjM1LCA2NywgNTQsIDIxNCwgNzksIDgxLCAyNDYsIAorICAgIDY4LCAyNTAsIDE1NSwgOCwgNiwgMSwgNjIsIDgsIDYsIDEsIDI1MCwgMTAzLCA4LCA2LCAxLCAyNDcsIDIyMywgOCwgNiwgMSwgCisgICAgMjQyLCAxNTMsIDgsIDYsIDEsIDcyLCA4LCA2LCAxLCAyMzgsIDUsIDgsIDYsIDEsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMzQsIAorICAgIDI0NywgOCwgNiwgMSwgNzAsIDgsIDYsIDEsIDIyNywgMjUxLCA4LCA2LCAxLCAyMjcsIDExOCwgOCwgNiwgMSwgMTU2LCA4LCAKKyAgICA2LCAxLCAyMjMsIDI0MywgOCwgNiwgMSwgMjIwLCAyMTQsIDgsIDYsIDEsIDc0LCA4LCA2LCAxLCAyMTYsIDIyNiwgOCwgNiwgCisgICAgMSwgMjE0LCAxNjcsIDgsIDYsIDEsIDE0NiwgOCwgNiwgMSwgMjEyLCAxMjIsIDgsIDYsIDEsIDIwNywgODMsIDgsIDYsIDEsIAorICAgIDY2LCA4LCA2LCAxLCAyMDMsIDE2OCwgOCwgNiwgMSwgMjAxLCAxNDcsIDgsIDYsIDEsIDIwMCwgMTk1LCA4LCA2LCAxLCAKKyAgICAyMDAsIDEyMywgOCwgNiwgMSwgMTk5LCAxNTcsIDQ5LCA1MiwgMTU5LCAyMTMsIDEwNiwgMjA5LCAxNiwgNTEsIDUyLCAxNTksIAorICAgIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMTI4LCAyMjQsIDE3NiwgMjM1LCA3NCwgMjUxLCAyNTEsIDgsIDQsIDEsIDYyLCA4LCA0LCAKKyAgICAxLCAyNTAsIDEwMywgOCwgNCwgMSwgMjQ3LCAyMjMsIDgsIDQsIDEsIDI0MiwgMTUzLCA4LCA0LCAxLCA3MiwgOCwgNCwgMSwgCisgICAgMjM4LCA1LCA4LCA0LCAxLCAyMzYsIDE1NiwgOCwgNCwgMSwgMjM0LCAyNDcsIDgsIDQsIDEsIDcwLCA4LCA0LCAxLCAyMjcsIAorICAgIDI1MSwgOCwgNCwgMSwgMjI3LCAxMTgsIDgsIDQsIDEsIDE1NiwgOCwgNCwgMSwgMjIzLCAyNDMsIDgsIDQsIDEsIDIyMCwgCisgICAgMjE0LCA4LCA0LCAxLCA3NCwgOCwgNCwgMSwgMjE2LCAyMjYsIDgsIDQsIDEsIDIxNCwgMTY3LCA4LCA0LCAxLCAxNDYsIDgsIAorICAgIDQsIDEsIDIxMiwgMTIyLCA4LCA0LCAxLCAyMDcsIDgzLCA4LCA0LCAxLCA2NiwgOCwgNCwgMSwgMjAzLCAxNjgsIDgsIDQsIAorICAgIDEsIDIwMSwgMTQ3LCA4LCA0LCAxLCAyMDAsIDE5NSwgOCwgNCwgMSwgMjAwLCAxMjMsIDgsIDQsIDEsIDE5OSwgMTU3LCA0OSwgCisgICAgMjQyLCAxOTYsIDE1OSwgODMsIDIyNCwgMTc2LCA1MSwgMjQyLCAxOTYsIDE1OSwgMjA1LCAyNDAsIDIxOCwgMjQwLCAyMDgsIAorICAgIDI0NCwgMjI4LCA1MCwgMjM4LCA0MywgODEsIDI0NywgNTgsIDU0LCAyMTUsIDU2LCA1NCwgMjQyLCAxOTUsIDU0LCAyMDAsIAorICAgIDQyLCA1NCwgMjQ4LCA0NiwgMTQ4LCAyMTEsIDE5MywgNTQsIDI0MSwgNzQsIDI0MywgMTksIDU0LCAyMzcsIDEyOCwgMjE3LCAKKyAgICAyOSwgMjI4LCA5OSwgMjI1LCAyMywgNTMsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMTgsIDIxNSwgNTQsIDIwOSwgMjMsIAorICAgIDIzMywgMzMsIDIxMywgMTYxLCA1NCwgMjIyLCAyMjgsIDI0MSwgMTU1LCA1NCwgMjE1LCAxMTIsIDU0LCAyMDcsIDIxMywgCisgICAgMTA1LCAyMDcsIDIxMywgMTQ3LCAyNTEsIDIzOSwgMjUxLCAyNTEsIDIyMSwgMjA5LCA1NCwgMjE1LCAxNjMsIDU0LCAxMDEsIAorICAgIDI0MCwgMTgyLCAyNDcsIDY5LCAyMDcsIDIxMywgMTAyLCAyMjIsIDEzNiwgMjE3LCAyOSwgMjI4LCA5OSwgMjEzLCA0MSwgCisgICAgNTMsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMjAxLCAxNjQsIAorICAgIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMjI4LCA1MCwgMjE0LCAKKyAgICA3OSwgODEsIDgsIDYsIDEsIDM1LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMTY5LCA4LCA2LCAxLCAzNSwgMywgCisgICAgMjQ2LCAxNDYsIDgsIDYsIDEsIDM1LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMzUsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDM1LCAKKyAgICAzLCAyMTMsIDI3LCA1NiwgOCwgNiwgMSwgMjUxLCAyMjEsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDY5LCA4LCA2LCAKKyAgICAxLCAxOTcsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgMywgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ2LCA4LCAKKyAgICA2LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDIzMywgMTksIDMsIAorICAgIDE2OSwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIzMywgMTksIDMsIDI0MSwgNzQsIDgsIDYsIAorICAgIDEsIDIzOCwgNzQsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMTYzLCAzLCAyMzUsIDczLCA4LCAKKyAgICA2LCAxLCAxNjMsIDMsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MCwgCisgICAgOCwgNiwgMSwgMTYzLCAzLCAyNDEsIDc0LCAyMjEsIDE5LCA1NCwgOCwgNiwgMSwgMTYzLCAzLCA5NywgOCwgNiwgMSwgMTA4LCAKKyAgICAzLCAyMzUsIDczLCA4LCA2LCAxLCAxMDgsIDMsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgCisgICAgMTA4LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgMTY5LCA4LCA2LCAxLCAyMDYsIDU0LCA4LCA0LCAxLCAKKyAgICAyMTAsIDc5LCAyMTIsIDEyMiwgOCwgNCwgMSwgMzUsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAzLCAxNjksIDgsIDQsIDEsIAorICAgIDM1LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMzUsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgMjQxLCA3NCwgOCwgNCwgCisgICAgMSwgMzUsIDMsIDIxMywgMjcsIDU2LCA4LCA0LCAxLCAyNTEsIDIyMSwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgNjksIAorICAgIDgsIDQsIDEsIDE5NywgMywgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAKKyAgICAxNDYsIDgsIDQsIDEsIDE5NywgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjM1LCA3MywgOCwgNCwgMSwgCisgICAgMjMzLCAxOSwgMywgMTY5LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQxLCAKKyAgICA3NCwgOCwgNCwgMSwgMjM4LCA3NCwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAxNjMsIAorICAgIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIDI0MSwgNzQsIDI0MCwgMjM1LCA1NCwgOCwgNCwgMSwgMTYzLCAzLCA5NywgCisgICAgOCwgNCwgMSwgMTA4LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxMDgsIDMsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyNDYsIAorICAgIDE0NiwgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMTY5LCA4LCA0LCAxLCAyMDYsIAorICAgIDU0LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMzUsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAzNSwgCisgICAgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1NywgOCwgNiwgMSwgCisgICAgMzUsIDMsIDIxNywgMTEwLCA4LCA0LCAxLCAzNSwgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAxNjksIDgsIAorICAgIDQsIDEsIDI0NywgMjI0LCAzLCAxNjksIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjQ3LCAKKyAgICAyMjQsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgNzMsIAorICAgIDU2LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDEyNSwgOCwgNiwgCisgICAgMSwgMjQyLCAxNTQsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDI0MiwgCisgICAgMTU0LCAzLCA5NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDk3LCA4LCA2LCAxLCAxOTcsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAxOTcsIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAxOTcsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjQ4LCA1NywgOCwgCisgICAgNiwgMSwgMTk3LCAzLCA3MywgNTYsIDgsIDQsIDEsIDE5NywgMywgNzMsIDU2LCA4LCA2LCAxLCAxOTcsIDMsIDIxNywgMTEwLCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDIxNywgMTEwLCA4LCA2LCAxLCAxOTcsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAxOTcsIDMsIAorICAgIDI0NywgMTI1LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDYsIDE0NiwgCisgICAgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDgsIDU3LCA4LCA2LCAxLCAKKyAgICAyMzYsIDE1NywgMywgNzMsIDU2LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgNzMsIDU2LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgCisgICAgMjQ3LCA2OSwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAyNDYsIDE0NiwgCisgICAgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgOTcsIDgsIDQsIDEsIDIzNCwgCisgICAgMjQ4LCAzLCA5NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIwNSwgMjQwLCAKKyAgICA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDgsIDYsIDEsIAorICAgIDIzMywgMTksIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0OCwgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIAorICAgIDIxNywgMTEwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMjMzLCAxOSwgMywgNzMsIDU2LCA4LCAKKyAgICA0LCAxLCAyNDAsIDE4MSwgNzAsIDgsIDYsIDMzLCAyMjgsIDE0OSwgOCwgNCwgMzMsIDIyOCwgMTQ5LCA4LCA2LCAxLCAyMjcsIAorICAgIDI1MiwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIAorICAgIDI0NywgNjksIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMjYsIDM3LCA4LCA2LCAxLCAyMjUsIAorICAgIDE5MywgMywgMTY5LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMTY5LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjQ3LCA2OSwgOCwgCisgICAgNCwgMSwgMjI1LCAxOTMsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMTAxLCAyNDAsIDE4MiwgOCwgNCwgMSwgMjI1LCAxOTMsIAorICAgIDMsIDEwMSwgMjQwLCAxODIsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA5NywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDk3LCA4LCAKKyAgICA2LCAxLCAyMjAsIDIxNSwgMywgMTY5LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMTY5LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgCisgICAgMjQ3LCA2OSwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyNDcsIDEyNSwgCisgICAgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMjAsIDIxNSwgMjE1LCAzMCwgMjQ3LCAyMzUsIAorICAgIDI1MSwgMTMsIDgsIDYsIDEsIDIzOCwgMTY1LCA4LCA0LCAxLCAyMzgsIDE2NSwgOCwgNiwgMSwgMTYzLCAzLCAyMjIsIDIyOCwgCisgICAgOCwgNCwgMSwgMTYzLCAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgMTYzLCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDI0OCwgNTcsIDgsIDYsIDEsIDE2MywgMywgNTMsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCA1MywgMTY5LCA4LCA2LCAzMywgCisgICAgMjE3LCAxMjEsIDgsIDQsIDMzLCAyMTcsIDEyMSwgOCwgNiwgMSwgMjE0LCAzMywgMywgMTY5LCA4LCA0LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAxNjksIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDI0NywgNjksIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDI0NywgNjksIDgsIDYsIAorICAgIDEsIDIxNCwgMzMsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjEyLCAKKyAgICAxMjMsIDMsIDE2OSwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDE2OSwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgMTQ2LCAKKyAgICA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAKKyAgICAyMTIsIDEyMywgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMTIsIDEyMywgCisgICAgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NywgNjksIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0NywgNjksIAorICAgIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgCisgICAgMjA3LCA4NCwgMywgOTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDk3LCA4LCA2LCAxLCAxMDgsIDMsIDIwNSwgMjQwLCA4LCA0LCAKKyAgICAxLCAxMDgsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAxMDgsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgCisgICAgMjI4LCA4LCA2LCAxLCAxMDgsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjQ4LCA1NywgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMTA4LCAzLCAyMTMsIDI3LCA1NiwgOCwgNiwgMSwgMTA4LCAzLCA1MywgMTY5LCA4LCAKKyAgICA0LCAxLCAxMDgsIDMsIDUzLCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjE3LCAxMTAsIDgsIDQsIDEsIDEwOCwgMywgMjE3LCAKKyAgICAxMTAsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDI0NiwgMTQ2LCA4LCAKKyAgICA2LCAxLCAyMDAsIDEyNCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgCisgICAgMjAwLCAxMjQsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAxNjksIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAKKyAgICAxNjksIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTYsIDgsIDYsIDEsIAorICAgIDE5OSwgMTU4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAxNjgsIDIxMiwgCisgICAgMTIyLCA4LCA0LCAxLCA2OCwgMywgOTcsIDgsIDYsIDEsIDY4LCAzLCAxMTcsIDgsIDYsIDEsIDY4LCAzLCAyMDUsIDE1NSwgCisgICAgOCwgNCwgMSwgNjgsIDMsIDIwNSwgMTU1LCA4LCA2LCAxLCAxNTAsIDE4NywgOCwgNCwgMSwgMTUwLCAxODcsIDgsIDYsIDEsIAorICAgIDE3NiwgNzQsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAxMTcsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAxMTcsIDgsIDYsIDEsIAorICAgIDI1MSwgMTk2LCAyNDIsIDE1MywgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDExNywgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDIwNSwgCisgICAgMTU1LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjA1LCAxNTUsIDgsIDQsIDEsIDIwNCwgMTg1LCAyNDEsIDEzNiwgOCwgNiwgCisgICAgMSwgMjEzLCAxMDUsIDcyLCA4LCA2LCAxLCAyMTEsIDIxOCwgOCwgNiwgMSwgMTc2LCA3MiwgOCwgNiwgMSwgMjM4LCA2LCAzLCAKKyAgICAxMTcsIDgsIDQsIDEsIDIzOCwgNiwgMywgMTE3LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMTE3LCA4LCA2LCAxLCAyMzYsIAorICAgIDYwLCA4LCA0LCAxLCAyMzMsIDY5LCA4LCA2LCAxLCAyMjgsIDQxLCA4LCA2LCAxLCAyMzMsIDE5LCAzLCA5NywgOCwgNiwgMSwgCisgICAgMjI3LCAxMTksIDMsIDExNywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDExNywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDE0OCwgCisgICAgOCwgNCwgMSwgMjI1LCA4OSwgMywgOTcsIDgsIDYsIDEsIDIwNCwgMTg1LCAyMjMsIDI0MywgOCwgNiwgMSwgMjIwLCAyMTUsIAorICAgIDMsIDQ5LCAxMTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAxNjgsIDUxLCAyMjUsIDE2LCA4LCA2LCAxLCAxNjMsIDMsIDEwMSwgCisgICAgMjA1LCAyNDAsIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjQsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjQsIDgsIDYsIDEsIAorICAgIDIxNywgMTA1LCA4LCA0LCAxLCAyMTcsIDEwNSwgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDExNywgOCwgNCwgMSwgMjE2LCAKKyAgICAyMjcsIDMsIDExNywgOCwgMSwgMTk5LCAyMTQsIDgsIDYsIDEsIDE1MCwgMTA1LCA4LCA0LCAxLCAxNTAsIDEwNSwgOCwgNiwgCisgICAgMSwgMjM4LCA5NCwgOCwgMSwgMjEzLCAxMDUsIDIzOCwgOTUsIDIyNCwgNzQsIDgsIDQsIDEsIDIwNywgODQsIDMsIDIxNiwgCisgICAgMTg0LCAxMTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDExNywgOCwgNCwgMSwgMjA3LCA4NCwgMywgMTE3LCA4LCA2LCAxLCAKKyAgICAyMDcsIDg0LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI0LCA4LCA0LCAxLCAxMDgsIDMsIAorICAgIDIzMywgMTI0LCA4LCA2LCAxLCAyMDMsIDIyMCwgOCwgNiwgMSwgMjAzLCAxNjksIDMsIDExNywgOCwgNiwgMSwgMjAwLCAKKyAgICAxMjQsIDMsIDExNywgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDExNywgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDk3LCA4LCA0LCAKKyAgICAxLCAxOTksIDE1OCwgMywgOTcsIDgsIDYsIDEsIDIzOCwgOCwgOCwgNiwgMSwgMjM4LCA5LCAyMTMsIDEwNCwgOCwgNCwgMSwgCisgICAgMjM4LCA5LCAyMTMsIDEwNCwgOCwgNCwgMSwgMjM4LCA5LCAzLCAyMDcsIDYsIDgsIDEsIDEyMCwgMywgOTcsIDgsIDYsIDEsIAorICAgIDE1MCwgMTY0LCA4LCA0LCAxLCAxNTAsIDE2NCwgOCwgMSwgMjI4LCA1MCwgMjM1LCAxMjMsIDIwOCwgNzcsIDMsIDk3LCA4LCAKKyAgICAxLCAyMDAsIDE5OCwgOCwgMSwgMjQxLCAxMjksIDI0NiwgMTIxLCA4LCAxLCAyMjUsIDYxLCAyNDYsIDEyMSwgOCwgMSwgCisgICAgMjUxLCAxMDIsIDI0NiwgMTIxLCA4LCAxLCAyMTMsIDExMSwgMjQ2LCAxMjEsIDgsIDYsIDEsIDIzOSwgOTUsIDMsIDI0NywgCisgICAgMTI1LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgNCwgMSwgMTk5LCAxNTgsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzksIDk1LCAKKyAgICAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjI0LCAxNDIsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA0LCAxLCAyMjcsIDI1MSwgOCwgCisgICAgNCwgMSwgMjI0LCAxNDIsIDgsIDYsIDEsIDIxOSwgOTksIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCA0LCAxLCAyMjcsIDI1MSwgCisgICAgOCwgNCwgMSwgMjE5LCA5OSwgOCwgNiwgMSwgMzUsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAzNSwgMywgMjQ3LCAxMjUsIDgsIAorICAgIDYsIDEsIDIzMywgMTksIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTYzLCAKKyAgICAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTYzLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTA4LCAzLCAyNDcsIDEyNSwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDEwOCwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAxNjksIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjQ3LCAxMjUsIDgsIAorICAgIDQsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDI0NywgMTI1LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMzUsIAorICAgIDczLCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAyMDQsIDE4NSwgNzIsIDgsIDYsIAorICAgIDEsIDM1LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDM1LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIAorICAgIDgsIDYsIDEsIDM1LCAzLCA3MywgODgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMzUsIDMsIDczLCA4OCwgMjYsIDIyMiwgCisgICAgMjI4LCA4LCA2LCAxLCAyNTEsIDIyMiwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDI1MSwgMjIyLCAzLCAyMjIsIDIyOCwgOCwgCisgICAgNiwgMSwgMjM2LCAxNTcsIDMsIDk3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgOTcsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAKKyAgICAyNDcsIDEyNSwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjQ3LCAxMjUsIAorICAgIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTYzLCAzLCAyMTcsIDExMCwgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMTYzLCAzLCAyMTcsIDExMSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDIxNywgMTExLCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIzOCwgOSwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzOCwgOSwgMywgCisgICAgMjQ3LCAxMjUsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjM5LCA5NCwgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDQsIDEsIDE5OSwgMTU3LCA4LCA0LCAxLCAyMzksIDk0LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMTY5LCA4LCAKKyAgICA0LCAxLCAyMzYsIDE1NywgMywgMTY5LCA4LCA2LCAxLCAyMzMsIDY2LCA4LCA2LCAxLCAyMDAsIDE5OCwgOCwgNiwgMSwgCisgICAgMjIwLCAyMTUsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMjEzLCAKKyAgICAyNywgODgsIDI2LCAxNjksIDgsIDQsIDEsIDM1LCAzLCAyMTMsIDI3LCA4OCwgMjYsIDE2OSwgOCwgNiwgMSwgMjUxLCAyMjIsIAorICAgIDMsIDE2OSwgOCwgNCwgMSwgMjUxLCAyMjIsIDMsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyMDgsIDQ3LCAyNiwgMTY5LCA4LCAKKyAgICA0LCAxLCAxNjMsIDMsIDIwOCwgNDcsIDI2LCAxNjksIDgsIDYsIDEsIDM1LCAzLCA1MywgMjM1LCA3MywgOCwgNCwgMSwgMzUsIAorICAgIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMzUsIDMsIDIyOCwgCisgICAgNTAsIDI0OCwgNTcsIDgsIDYsIDEsIDE5NywgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgNTMsIDIzNSwgNzMsIAorICAgIDgsIDYsIDEsIDE5NywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCAKKyAgICA2LCAxLCAyMzMsIDE5LCAzLCA1MywgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxOSwgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIAorICAgIDIzMywgMTksIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIAorICAgIDYsIDEsIDE2MywgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMTYzLCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAKKyAgICA1MywgMjM1LCA3MywgOCwgNCwgMSwgMjE0LCAzMywgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIyOCwgCisgICAgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDYsIDEsIDEwOCwgMywgNTMsIAorICAgIDIzNSwgNzMsIDgsIDQsIDEsIDEwOCwgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDEwOCwgMywgMjI4LCA1MCwgMjQ4LCA1NywgCisgICAgOCwgNCwgMSwgMTA4LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ2LCA3MSwgNTcsIDgsIAorICAgIDQsIDEsIDIxMiwgMTIzLCAzLCAyNDYsIDcxLCA1NywgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQ2LCA3MSwgNTcsIDgsIDQsIAorICAgIDEsIDIwNywgODQsIDMsIDI0NiwgNzEsIDU3LCA4LCA2LCAxLCAxOTksIDIzMiwgOCwgNCwgMSwgMTk5LCAyMzIsIDgsIDYsIAorICAgIDEsIDIzNCwgMjQ4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjAsIAorICAgIDIxNSwgMywgMTY4LCA1MSwgMjI1LCAxNiwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0MiwgMTk4LCA4LCA2LCAxLCAyMTcsIAorICAgIDMsIDgsIDQsIDEsIDIxNywgMywgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDExNywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDExNywgCisgICAgOCwgNiwgMSwgMzUsIDMsIDczLCA1NiwgOCwgNCwgMSwgMzUsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyNDcsIDY5LCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDI0NywgNjksIDgsIDYsIDEsIDE2MywgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAKKyAgICAxLCAxNjMsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDIyMiwgCisgICAgMjI4LCA4LCA0LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDE2MywgMywgNzMsIDU2LCA4LCAKKyAgICA0LCAxLCAxNjMsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTYzLCAzLCA3MywgODgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMTYzLCAzLCA3MywgODgsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAyMDAsIDEyNCwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjIwLCAyMTUsIAorICAgIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjQwLCAxODEsIDIyNywgMjUxLCAKKyAgICA4LCA0LCAxLCAyNDEsIDIzMCwgMjQxLCAzNCwgOCwgNCwgMSwgMjE0LCA5OCwgMjQxLCAzNCwgOCwgNiwgMSwgMzUsIDMsIAorICAgIDk3LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgOTcsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCA5NywgOCwgNiwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDE0OCwgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyMDcsIAorICAgIDE4MywgMjA3LCA2LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjA3LCAxODMsIDIwNywgNiwgOCwgNiwgMSwgMjM1LCAxMjMsIAorICAgIDIwOCwgNzYsIDgsIDQsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA4LCA2LCAxLCA2OCwgMywgOTcsIDgsIDYsIDEsIDEwOCwgCisgICAgMTQ4LCA4LCA2LCAxLCAyMDQsIDE4NSwgMjAzLCAxNjgsIDgsIDYsIDEsIDE5NywgMywgOTcsIDgsIDQsIDEsIDE5NywgMywgCisgICAgOTcsIDgsIDYsIDEsIDIyNywgMjUyLCAzLCA5NywgOCwgNCwgMSwgMjI3LCAyNTIsIDMsIDk3LCA4LCA2LCAxLCA0LCAyMTQsIAorICAgIDE2OCwgMywgMjMzLCAxODcsIDIwNywgNiwgOCwgNCwgMSwgMjE0LCAxNjgsIDMsIDIzMywgMTg3LCAyMDcsIDYsIDgsIDYsIAorICAgIDEsIDIxNCwgMzMsIDMsIDk3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCA5NywgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDk3LCA4LCAKKyAgICA0LCAxLCAyMDAsIDEyNCwgMywgOTcsIDgsIDQsIDEsIDIwNCwgMTg1LCA2MiwgOCwgNCwgMSwgMjUxLCAxMTIsIDgsIDQsIDEsIAorICAgIDIwNCwgMTg1LCAyNTEsIDExMiwgOCwgNCwgMSwgNjgsIDMsIDExNywgOCwgNCwgMSwgMTc2LCA3NCwgOCwgNCwgMSwgMjQ3LCAKKyAgICAyMjQsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjA3LCA2LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgCisgICAgMTE3LCA4LCA0LCAxLCAyMTMsIDEwNSwgNzIsIDgsIDQsIDEsIDIxMSwgMjE4LCA4LCA0LCAxLCAyMTEsIDIxOSwgMywgMTE3LCAKKyAgICA4LCA0LCAxLCAxNzYsIDcyLCA4LCA0LCAxLCAyMTMsIDEwNSwgMTc2LCA3MiwgOCwgNCwgMSwgMjEzLCAxMDUsIDE3NiwgCisgICAgMTk3LCAzLCAxMTcsIDgsIDQsIDEsIDI0NiwgMTEwLCAyMTMsIDEwNSwgMTc2LCA3MiwgOCwgNCwgMSwgMjQwLCAxODEsIAorICAgIDIyNywgMjUyLCAzLCA5NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDExNywgOCwgNCwgMSwgMTM1LCAyMzYsIDE1NiwgOCwgMSwgCisgICAgNCwgNiwgMjM2LCAxNTYsIDgsIDQsIDEsIDIzNiwgNjAsIDgsIDQsIDEsIDIxMywgMjE0LCAyMzMsIDEyNCwgOCwgNCwgMSwgCisgICAgMjA0LCAxODUsIDIzNCwgMjQ3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMTE3LCA4LCA0LCAxLCAyMzQsIDEwNCwgMywgMTE3LCAKKyAgICA4LCA0LCAxLCAyMzMsIDE5LCAzLCA5NywgOCwgNCwgMSwgMjI4LCA0MSwgOCwgMSwgNCwgNiwgNzAsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjQ4LCAyMjYsIDgsIDQsIDEsIDIyNSwgMTkzLCAKKyAgICAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMjQsIDIyNiwgOCwgNCwgMSwgMjA0LCAxODUsIDIyMywgMjQzLCA4LCA0LCAKKyAgICAxLCAyMDQsIDE4NSwgMjIzLCAyNDQsIDMsIDE2OCwgMjI1LCAxNiwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDExNywgOCwgNCwgCisgICAgMSwgMjIwLCAyMTUsIDMsIDQ5LCAxMTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMTMsIDExMSwgMTE3LCA4LCAxLCA0LCA2LCAKKyAgICAyMjAsIDIxNCwgOCwgNCwgMSwgMjQ5LCA3MSwgNzQsIDgsIDEsIDQsIDYsIDIxNywgMTIxLCA4LCA0LCAxLCAyNDYsIDExMCwgCisgICAgMjE3LCA4MywgOCwgNCwgMSwgMjE1LCAyMjksIDgsIDQsIDEsIDIwNCwgMTg1LCAxNDYsIDgsIDQsIDEsIDIwNCwgMTg1LCAKKyAgICAyMTQsIDMzLCAzLCAxNjgsIDIyNSwgMTYsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMTQsIDMzLCAzLCAxMTcsIDgsIDQsIDEsIAorICAgIDIxNCwgMzMsIDMsIDE2OCwgMjI1LCAxNiwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjA3LCA2LCA4LCA0LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAyMzcsIDY4LCA4LCA0LCAxLCAyMTMsIDEwNSwgMjE0LCAzMywgMywgMjM3LCA2OCwgOCwgMSwgNCwgNiwgMTQ2LCA4LCAKKyAgICAxLCA0LCA2LCAyMjgsIDUwLCAxNDYsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAxMTcsIDgsIDQsIDEsIDIzOCwgOTQsIDgsIDQsIAorICAgIDEsIDI0MCwgMTgxLCAyMjcsIDI1MiwgMywgMjA4LCA0NywgMjYsIDExNywgOCwgNCwgMSwgMjA4LCAxOTAsIDIxMywgMTA1LCAKKyAgICAyMzgsIDk0LCA4LCA0LCAxLCAyMzgsIDk1LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjA0LCAxODUsIDIwNywgODMsIDgsIDQsIAorICAgIDEsIDIwNywgODQsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDEwOCwgMTQ4LCA4LCA0LCAxLCAyMDMsIDIyMCwgOCwgNCwgCisgICAgMSwgMjAzLCAxNjksIDMsIDExNywgOCwgNCwgMSwgMjA0LCAxODUsIDIwMywgMTY4LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAxLCAKKyAgICAxNDcsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDAsIDEyMywgOCwgMSwgNCwgNiwgMjAwLCAxMjMsIDgsIDQsIDEsIDE5OSwgCisgICAgMTU4LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIzOCwgOCwgCisgICAgOCwgNCwgMSwgMjM4LCA5LCAzLCAyNDIsIDE5OCwgOCwgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDgsIDEsIDIxNSwgMjM2LCAKKyAgICAyMDIsIDE4OSwgMjM2LCAyMDcsIDgsIDEsIDIyOCwgNTAsIDIzNSwgMTIzLCAyMDgsIDc2LCA4LCAxLCAyMDgsIDU1LCAyNDcsIAorICAgIDIyMywgOCwgMSwgMjQ4LCAxNzIsIDI0NiwgMTIxLCA4LCAxLCA0LCA2LCAyNTAsIDEwMywgOCwgNCwgMSwgMjQ2LCAxMTAsIAorICAgIDE3NiwgNzIsIDgsIDEsIDQsIDYsIDIzNiwgMTU3LCAzLCAxMTcsIDgsIDEsIDQsIDYsIDIzNCwgMjQ3LCA4LCA0LCAxLCAKKyAgICAyMjcsIDI1MiwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMjcsIDExOCwgOCwgMSwgNCwgNiwgMTU2LCA4LCAKKyAgICA0LCAxLCAyMTQsIDE2OCwgMywgMTE3LCA4LCAxLCAyMzUsIDEyMywgMjA4LCA3NywgMywgOTcsIDgsIDEsIDIxMywgMTA1LCAKKyAgICAyMzUsIDEyMywgMjA4LCA3NywgMywgOTcsIDgsIDQsIDEsIDIzOSwgOTUsIDI0MSwgMzQsIDgsIDQsIDEsIDI0MSwgMTAyLCAKKyAgICAyNDEsIDM0LCA4LCA0LCAxLCAyMzksIDk1LCAyNDEsIDM1LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjA1LCAzNCwgMjQxLCAKKyAgICAzNCwgOCwgNCwgMSwgMjA2LCAxNTEsIDI0MSwgMzQsIDgsIDQsIDEsIDIwNiwgMjA4LCAyNDEsIDM1LCAzLCAyNDIsIDE5OCwgCisgICAgOCwgNCwgMSwgMjM3LCAxMjUsIDI0MSwgMzQsIDgsIDQsIDEsIDIyNCwgNDQsIDI0MSwgMzQsIDgsIDQsIDEsIDIyMywgMjQ1LCAKKyAgICAyNDEsIDM0LCA4LCAxLCAyNDgsIDE3MiwgMjE2LCAyNiwgOCwgMSwgMjQ4LCAxODAsIDIxNiwgMjYsIDgsIDQsIDEsIDIwNCwgCisgICAgMTg1LCAyMzQsIDI0OCwgMywgMjM3LCA2OCwgOCwgNCwgMSwgMjA0LCAxODUsIDIzNCwgMjQ4LCAzLCAyMzcsIDY5LCAyNiwgCisgICAgMjA3LCA2LCA2NywgMSwgNCwgMjM0LCAyNDcsIDY3LCAxLCA0LCAyMzQsIDI0OCwgMywgMTE3LCA2NywgMSwgNCwgMjI3LCAKKyAgICAyNTEsIDY3LCAxLCA0LCAxNDYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMTQ2LCA2NywgMSwgNCwgMjA0LCAxODUsIDIxNCwgMzMsIAorICAgIDMsIDExNywgNjcsIDEsIDQsIDYsIDIyOCwgNTAsIDE0NiwgNjcsIDEsIDQsIDIwMSwgMTQ3LCA2NywgMSwgNCwgMjAwLCAKKyAgICAxMjMsIDY3LCAxLCAyMTUsIDE0LCA2NywgMSwgNTMsIDIxNSwgMTQsIDY3LCAxLCAyMDQsIDE4NSwgMjQ2LCA3MCwgNjcsIDEsIAorICAgIDI1MSwgMTMsIDY3LCAxLCAyMTMsIDEwNSwgMjQ2LCA3MCwgNjcsIDEsIDUxLCAxNjcsIDIxMywgMjYsIDY3LCAxLCA0OSwgCisgICAgMTY3LCAyMTMsIDI2LCA2NywgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDY3LCAxLCAyMTMsIDEwNSwgMjM1LCAxMjMsIDIwOCwgCisgICAgNzYsIDY3LCAxLCA0OSwgMjUwLCAyMDIsIDY3LCAxLCA1MSwgMjUwLCAyMDIsIDY3LCAxLCAxMTUsIDI1MCwgMjAyLCA2NywgCisgICAgMSwgMTI3LCAyNTAsIDIwMiwgNjcsIDEsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMjQ3LCAxMjUsIDY3LCAxLCA4MywgMjI0LCAKKyAgICAxNzYsIDY3LCAxLCAyMjIsIDIyOCwgNjcsIDEsIDI1MSwgMjM5LCAyNTEsIDI1MSwgNjcsIDEsIDIzNSwgNzQsIDI1MSwgCisgICAgMjUxLCA2NywgMSwgMTI4LCA4MywgMjI0LCAxNzYsIDY3LCAxLCAxMjgsIDIyMiwgMjI4LCA2NywgMSwgMTI4LCAyMzUsIDc0LCAKKyAgICAyNTEsIDI1MSwgNjcsIDEsIDEyOCwgMjUxLCAyMzksIDI1MSwgMjUxLCA2NywgMSwgMjA1LCA5NSwgMjQ2LCA3OSwgNjcsIDEsIAorICAgIDE2NywgMjA1LCA5NSwgMjQ2LCA3OSwgNjcsIDEsIDI0NywgNTQsIDUxLCAxNjcsIDIxMywgMjYsIDY3LCAxLCAyNDcsIDU0LCAKKyAgICA0OSwgMTY3LCAyMTMsIDI2LCA2NywgMSwgMTE1LCAyMDcsIDE3LCA2NywgMSwgMTI3LCAyMDcsIDE3LCA2NywgMSwgOTMsIAorICAgIDU0LCA2NywgMSwgMjIxLCAxNTcsIDU0LCAyNDgsIDU3LCA3MywgNTYsIDIxMywgMjcsIDU2LCAyMTcsIDExMCwgNCwgMjA1LCAKKyAgICAyNDAsIDUzLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAyMTMsIDg5LCAxMTcsIDY3LCAxLCAyNDIsIDIzNSwgMjUxLCAKKyAgICAyNTEsIDY3LCAxLCA0LCAyMzYsIDYwLCA2NywgMSwgNCwgMTU2LCA2NywgMSwgNCwgMjEyLCAxMjIsIDY3LCAxLCA0LCAyMDAsIAorICAgIDE5NSwgNjcsIDEsIDQsIDIxMywgMTA1LCAyMzUsIDEyMywgMjA4LCA3NiwgNjcsIDEsIDIzOCwgMjksIDE1MCwgMTQ4LCA2NywgCisgICAgMSwgMTIyLCAxNTAsIDE0OCwgNjcsIDEsIDIyMSwgMjA2LCAxNTAsIDE0OCwgNjcsIDEsIDEyOCwgMTUwLCAxNDgsIDY3LCAxLCAKKyAgICAyMzgsIDI4LCAxNTAsIDE0OCwgNjcsIDEsIDE5OSwgMjU1LCAyNDEsIDEyNiwgMTUwLCA4MSwgNjcsIDEsIDIwMCwgNzYsIAorICAgIDI0MSwgMTI2LCAxNTAsIDgxLCA2NywgMSwgMjAyLCAxODcsIDY3LCAxLCAyMDQsIDEsIDY3LCAxLCA1MywgMjUxLCAxMywgCisgICAgNjcsIDEsIDEyOCwgMTI3LCAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgMTE1LCAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgNDksIAorICAgIDI1MCwgMjAyLCA2NywgMSwgMTI4LCA1MSwgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDIxMywgMjYsIDY3LCAxLCAxMDEsIDIzNSwgCisgICAgNzQsIDI1MSwgMjUxLCA2NywgMSwgMTAxLCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIDY3LCAxLCAxMDEsIDUzLCAyNTEsIAorICAgIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAxMjgsIDIwNSwgMjQwLCA2NywgMSwgMjEzLCAyMjAsIDI0NiwgNzksIDY3LCAxLCAKKyAgICAyNDgsIDI0NCwgMTIyLCAyMDUsIDE3NCwgNjcsIDEsIDIzOCwgMTcxLCAxMjIsIDIwNSwgMTc0LCA2NywgMSwgMjQ4LCAyNDQsIAorICAgIDEyOCwgMjA1LCAxNzQsIDY3LCAxLCAyMzgsIDE3MSwgMTI4LCAyMDUsIDE3NCwgNjcsIDEsIDIxMCwgNTYsIDY3LCAxLCAKKyAgICAxNzYsIDIxMCwgNTYsIDY3LCAxLCAxMjgsIDQ5LCA0OCwgMzgsIDIzNSwgNzQsIDI1MSwgMjUxLCAzOCwgMjUxLCAyMzksIAorICAgIDI1MSwgMjUxLCAzOCwgMjQ2LCAxNDcsIDI1MSwgMjUxLCAzOCwgMjA1LCAyNDAsIDM4LCAyMjIsIDIyOCwgMzgsIDIxNiwgCisgICAgMjQxLCAzOCwgMjQ4LCA1NywgMzgsIDczLCA1NiwgMzgsIDI0MSwgNzQsIDM4LCAyMzMsIDE4NywgNTYsIDM4LCAyMTMsIDI3LCAKKyAgICA1NiwgMzgsIDUzLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDM4LCAyNDcsIDEyNSwgMzgsIDgzLCAyMjQsIDE3NywgNTYsIDM4LCAKKyAgICA1MywgODMsIDIyNCwgMTc3LCA1NiwgMzgsIDUzLCAyMzUsIDc0LCAyNTEsIDI1MSwgMzgsIDI0NywgMTQ5LCAzOCwgMjI4LCAKKyAgICA1MCwgMjQ4LCA1NywgMzgsIDIwNCwgMTg1LCAyNDYsIDcxLCA1NiwgMzgsIDI0NiwgNzEsIDU2LCAzOCwgMjEzLCAxMDUsIAorICAgIDI0NiwgNzEsIDU2LCAzOCwgMjQ2LCA3MSwgODgsIDIxMywgNDYsIDM4LCAyMzUsIDc0LCAyNTEsIDI1MiwgNTcsIDM4LCAKKyAgICAyNTEsIDIzOSwgMjUxLCAyNTIsIDU3LCAzOCwgNDksIDIwNywgMTgsIDU3LCAzOCwgNTEsIDIwNywgMTgsIDU3LCAzOCwgNDksIAorICAgIDI1MSwgNzEsIDU2LCAzOCwgMjMzLCAxMjQsIDM4LCA0OSwgMTY3LCAyMTMsIDI3LCA1NywgMzgsIDExNSwgMjA3LCAxOCwgCisgICAgNTcsIDM4LCAxMjcsIDIwNywgMTgsIDU3LCAzOCwgOTMsIDIsIDU3LCAzOCwgMjIxLCAxNTcsIDIsIDU3LCAzOCwgMjE2LCAKKyAgICAxODIsIDIzMywgMTg3LCA1NywgMzgsIDIxMywgMTExLCAyMzMsIDE4NywgNTcsIDM4LCA3MywgNTcsIDM4LCAyNDEsIDc1LCAKKyAgICA1NywgMzgsIDIxMywgMjcsIDU3LCAzOCwgMjQ2LCA3MSwgNTcsIDM4LCAyNDcsIDY5LCAzOCwgMjE3LCAxMTAsIDM4LCA4MywgCisgICAgMjI0LCAxNzcsIDU3LCAzOCwgMjQ4LCA1MSwgNTcsIDM4LCAyMjgsIDUwLCA1MywgMjUwLCAyMzUsIDU3LCAzOCwgMjQ3LCAKKyAgICAxMjYsIDU3LCAzOCwgMjQ2LCAxNDcsIDI1MSwgMjUyLCA1NywgMzgsIDI0OCwgNTgsIDU3LCAzOCwgMjI4LCA1MCwgMjQ4LCAKKyAgICA1OCwgNTcsIDM4LCAyMDUsIDI0MSwgNTcsIDM4LCAyMjIsIDIyOSwgNTcsIDM4LCAxMjgsIDIyNCwgMTc2LCAzOCwgNTMsIAorICAgIDEyOCwgMjI0LCAxNzYsIDM4LCAyMDUsIDI0MSwgMjE2LCAyNDIsIDM4LCAyMDksIDI1MCwgMjA4LCA0NywgMjE2LCAyNDIsIAorICAgIDM4LCAxNjgsIDIwOCwgNDcsIDIxNiwgMjQyLCAzOCwgMjA5LCAyNTAsIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgMTY4LCAKKyAgICAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDUxLCAxNjcsIDIxMywgMjcsIDU3LCAzOCwgMjI4LCA1MCwgMjQ4LCA1MSwgNTcsIAorICAgIDM4LCA1MiwgNTcsIDM4LCAyMTEsIDIwMSwgNTcsIDM4LCAyMDAsIDE5NiwgNTYsIDM4LCA4MywgMjA1LCAyNDAsIDM4LCA1MywgCisgICAgMjE2LCAyNDEsIDM4LCAyMzUsIDc0LCAxNTAsIDgxLCAzOCwgMjUxLCAyMzksIDE1MCwgODEsIDM4LCAzMSwgMjE2LCAyMCwgCisgICAgMzgsIDMxLCAyMjYsIDU4LCAzOCwgMzEsIDI0MSwgNjgsIDIwNSwgMTYyLCAzOCwgMzEsIDE5OSwgMjE5LCAzOCwgMjQ4LCAKKyAgICA1MSwgNTYsIDM4LCAyMzgsIDEyMiwgMiwgNTcsIDM4LCA1MywgODMsIDIyNCwgMTc3LCA1NywgMzgsIDQ5LCAyNTEsIDcxLCAKKyAgICA1NywgMzgsIDIxOCwgMjE1LCAyMDUsIDI0MSwgNTYsIDM4LCAyMzMsIDE5MywgNTYsIDM4LCAyNTEsIDExNywgMTYwLCAyMDUsIAorICAgIDE4NiwgNTYsIDM4LCA0OSwgNTEsIDU1LCA1NywgMzgsIDE4MiwgNTUsIDU3LCAzOCwgMjM1LCA4MCwgMjI3LCAxNjEsIDM4LCAKKyAgICA1MSwgMjUwLCAyMDMsIDU2LCAzOCwgNDksIDE2NywgMjEzLCAyNywgNTYsIDM4LCAyMzcsIDEyMiwgMzgsIDIwMCwgMTk2LCAKKyAgICA1NywgMzgsIDQ5LCAyNTAsIDIwMywgNTcsIDM4LCA1MSwgMjUwLCAyMDMsIDU3LCAzOCwgNTEsIDI1MCwgMjAzLCAyNiwgCisgICAgMTE1LCAyNTAsIDIwMywgNTcsIDM4LCA1MSwgMTY3LCAyMTMsIDI3LCA1NiwgMzgsIDczLCA4OCwgMjEzLCA0NiwgMzgsIAorICAgIDI1MCwgMTY2LCA1NywgMzgsIDUzLCAyMTMsIDI3LCA1NywgMzgsIDE5OSwgMjcsIDU2LCAzOCwgNTMsIDI0OCwgNTgsIDU3LCAKKyAgICAzOCwgNTMsIDI0OCwgNTcsIDM4LCA1MywgMjIyLCAyMjgsIDM4LCA1MywgMjIyLCAyMjksIDU3LCAzOCwgNTMsIDIwNSwgCisgICAgMjQwLCAzOCwgNTMsIDIyOCwgNTAsIDI0OCwgNTcsIDM4LCA1MywgODcsIDU1LCA1NywgMzgsIDgsIDQsIDEsIDYyLCAzOCwgCisgICAgOCwgNCwgMSwgNzIsIDM4LCA4LCA0LCAxLCA3MCwgMzgsIDgsIDQsIDEsIDc0LCAzOCwgOCwgNCwgMSwgNjYsIDM4LCA4LCA0LCAKKyAgICAxLCAyNDcsIDIyMywgMzgsIDgsIDQsIDEsIDI0MiwgMTUzLCAzOCwgOCwgNCwgMSwgMjM0LCAyNDcsIDM4LCA4LCA0LCAxLCAKKyAgICAyMjMsIDI0MywgMzgsIDgsIDQsIDEsIDE0NiwgMzgsIDgsIDQsIDEsIDIwNywgODMsIDM4LCA4LCA0LCAxLCAyMDMsIDE2OCwgCisgICAgMzgsIDgsIDQsIDEsIDIwMCwgMTk1LCAzMSwgNiwgMSwgMjM0LCA5MiwgMzEsIDQsIDEsIDIzNCwgOTIsIDMxLCA2LCAxLCAKKyAgICAyNTAsIDIzNCwgMjEyLCAxNiwgMzEsIDQsIDEsIDI1MCwgMjM0LCAyMTIsIDE2LCAzMSwgMjE4LCA5MywgNTQsIDMxLCAyMjQsIAorICAgIDU0LCAyMTgsIDkzLCA1NCwgMzEsIDYsIDEsIDIxNiwgMTY3LCAyNDEsIDQyLCAzMSwgNCwgMSwgMjE2LCAxNjcsIDI0MSwgCisgICAgNDIsIDMxLCAxOTksIDIxOSwgMzEsIDQsIDIxMywgMTA1LCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA0LCAyMzksIAorICAgIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNCwgMjEzLCAxMDUsIDIzOSwgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgCisgICAgOTksIDMxLCAyMTQsIDc5LCA4MSwgMzEsIDYsIDEsIDE5OSwgMjI1LCAzMSwgMjA1LCAxNjIsIDMxLCAyNDEsIDY4LCAyMDUsIAorICAgIDE2MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMDUsIDE2MiwgMzEsIDI1MSwgNTYsIDIwNiwgMTc3LCAzMSwgNiwgMSwgCisgICAgMjM4LCAxMjUsIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjA1LCAxNjIsIDMxLCA2LCAxLCAyMjgsIDQyLCAKKyAgICAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDIwNSwgCisgICAgMTYyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAyNiwgCisgICAgMjA1LCAxNjIsIDMxLCA2LCAxLCAyNTEsIDExMiwgMzEsIDYsIDEsIDI0OCwgMjA4LCAzMSwgNiwgMSwgMjM2LCA2MCwgMzEsIAorICAgIDYsIDEsIDI0MSwgMTM2LCAzMSwgNiwgMSwgMjM4LCAxMjQsIDMxLCA2LCAxLCAxOTksIDgwLCAzMSwgNiwgMSwgMjM4LCA3OSwgCisgICAgMzEsIDYsIDEsIDIwNiwgODgsIDMxLCA2LCAxLCAyMjgsIDQxLCAzMSwgNiwgMSwgMjI3LCA1NCwgMzEsIDYsIDEsIDIyNSwgCisgICAgODcsIDMxLCA2LCAxLCAyMjEsIDQxLCAzMSwgNiwgMSwgMjE4LCAxMzMsIDMxLCA2LCAxLCAyMDAsIDE2OSwgMzEsIDYsIDEsIAorICAgIDIxNywgODEsIDMxLCA2LCAxLCAyMTUsIDIwNCwgMzEsIDYsIDEsIDIxMywgOTAsIDMxLCA2LCAxLCAyMDksIDE2MywgMzEsIAorICAgIDYsIDEsIDIwNiwgMjIxLCAzMSwgNiwgMSwgMjAzLCAyMjAsIDMxLCA2LCAxLCAyMTUsIDIyOSwgMzEsIDYsIDEsIDI0NiwgCisgICAgMjM2LCAzMSwgNiwgMSwgMjE0LCAyMzUsIDMxLCA2LCAxLCAyMTcsIDgzLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjQxLCAKKyAgICA2NywgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY3LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwNSwgMTYyLCAzMSwgCisgICAgNCwgMSwgMjM4LCAxMjUsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAKKyAgICAyMjgsIDQyLCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY4LCAyNiwgMjA1LCAxNjIsIDMxLCAKKyAgICA0LCAxLCAyNTEsIDExMiwgMzEsIDQsIDEsIDI0OCwgMjA4LCAzMSwgNCwgMSwgMjM2LCA2MCwgMzEsIDQsIDEsIDI0MSwgCisgICAgMTM2LCAzMSwgNCwgMSwgMjM4LCAxMjQsIDMxLCA0LCAxLCAxOTksIDgwLCAzMSwgNCwgMSwgMjM4LCA3OSwgMzEsIDQsIDEsIAorICAgIDIwNiwgODgsIDMxLCA0LCAxLCAyMjgsIDQxLCAzMSwgNCwgMSwgMjI3LCA1NCwgMzEsIDQsIDEsIDIyNSwgODcsIDMxLCA0LCAKKyAgICAxLCAyMjEsIDQxLCAzMSwgNCwgMSwgMjE4LCAxMzMsIDMxLCA0LCAxLCAyMDAsIDE2OSwgMzEsIDQsIDEsIDIxNywgODEsIAorICAgIDMxLCA0LCAxLCAyMTUsIDIwNCwgMzEsIDQsIDEsIDIxMywgOTAsIDMxLCA0LCAxLCA0NywgMjA5LCAxNjMsIDMxLCA0LCAxLCAKKyAgICAyMDksIDE2MywgMzEsIDQsIDEsIDIwNiwgMjIxLCAzMSwgNCwgMSwgMjAzLCAyMjAsIDMxLCA0LCAxLCAyMTUsIDIyOSwgMzEsIAorICAgIDQsIDEsIDI0NiwgMjM2LCAzMSwgNCwgMSwgMjE0LCAyMzUsIDMxLCA0LCAxLCAyMTcsIDgzLCAzMSwgNCwgMSwgMjI4LCA0MiwgCisgICAgMywgMjQxLCA2NywgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY3LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjA1LCAKKyAgICAxNjIsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDE2MiwgMzEsIAorICAgIDYsIDIyNywgODMsIDk5LCAzMSwgMjQ4LCAyMDksIDk5LCAzMSwgMjA2LCA4OSwgOTksIDMxLCAyMDMsIDIyMSwgMywgMjMzLCAKKyAgICAxODcsIDk5LCAzMSwgMjAzLCAyMjEsIDMsIDI1MSwgMjM5LCAyNiwgMjMzLCAxODcsIDk5LCAzMSwgMjAzLCAyMjEsIDMsIAorICAgIDI0MSwgNzUsIDI2LCAyMzMsIDE4NywgOTksIDMxLCAyMTUsIDIzMCwgOTksIDMxLCAyMTUsIDIwNSwgOTksIDMxLCAyMjcsIAorICAgIDgzLCA5OSwgMzEsIDEsIDI1MCwgMjM0LCAyMjYsIDYyLCAzMSwgNCwgMSwgMjUwLCAyMzQsIDIyNiwgNjIsIDMxLCAxLCAKKyAgICAyMDgsIDg2LCAzMSwgNCwgMSwgMjA4LCA4NiwgMzEsIDEsIDI0MSwgNDIsIDMxLCA0LCAxLCAyNDEsIDQyLCAzMSwgMSwgCisgICAgMjI2LCA2MiwgMzEsIDQsIDEsIDIyNiwgNjIsIDMxLCAxLCAyMTIsIDE2LCAzMSwgNCwgMSwgMjEyLCAxNiwgODUsIDYsIDEsIAorICAgIDIxMCwgNTcsIDg1LCA0LCAxLCAyMTAsIDU3LCA4NSwgNiwgMSwgMjM3LCAxMzIsIDg1LCA0LCAxLCAyMzcsIDEzMiwgODUsIAorICAgIDYsIDEsIDIyNiwgMTkwLCA4NSwgNCwgMSwgMjI2LCAxOTAsIDg1LCA2LCAxLCAyMzMsIDE3OCwgODUsIDQsIDEsIDIzMywgCisgICAgMTc4LCA4NSwgNiwgMSwgMjM2LCA1NSwgODUsIDQsIDEsIDIzNiwgNTUsIDg1LCA2LCAxLCAyMTAsIDIzLCA4NSwgNCwgMSwgCisgICAgMjEwLCAyMywgODUsIDYsIDEsIDI0MSwgMTUyLCA4NSwgNCwgMSwgMjQxLCAxNTIsIDMxLCAyMjcsIDU1LCA5OSwgMzEsIAorICAgIDIxMywgOTEsIDk5LCAzMSwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgMSwgMTk5LCAyMjUsIDMxLCA2LCAyMDYsIDg5LCAKKyAgICA5OSwgMzEsIDIyNCwgMjQsIDIzOCwgMTI1LCA5OSwgMzEsIDIxMywgMTA1LCAyMjQsIDI0LCAyMzgsIDEyNSwgOTksIDMxLCAKKyAgICA2LCAxLCAyMTAsIDgsIDMxLCA0LCAxLCAyMTAsIDgsIDMxLCA2LCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA2LCAxLCAKKyAgICAyMTIsIDEzLCAzMSwgNCwgMSwgMjEyLCAxMywgMzEsIDIxMywgOTEsIDMsIDIwOCwgNDcsIDk5LCAzMSwgNiwgMjEzLCAxMDUsIAorICAgIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDYsIDIzOSwgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA2LCAKKyAgICAyMTMsIDEwNSwgMjM5LCAxODAsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzcsIDYsIDEsIDIyOCwgMTc5LCAzLCAyMzUsIAorICAgIDczLCAzNywgNiwgMSwgMjI4LCA0NSwgMzcsIDYsIDEsIDI0MCwgMjI4LCAzNywgNiwgMSwgMjM1LCAxMzIsIDM3LCA2LCAxLCAKKyAgICAyMDQsIDE3LCAyMjgsIDE3OCwgMzcsIDYsIDEsIDIzOSwgOTAsIDM3LCA2LCAxLCAyNDcsIDIzMywgNzAsIDM3LCA2LCAxLCAKKyAgICAyMDAsIDksIDM3LCA2LCAxLCAyMjcsIDIyNywgMzcsIDYsIDEsIDIyNCwgMTQxLCAzNywgNiwgMSwgMjE5LCA5MSwgMzcsIDYsIAorICAgIDEsIDIwNSwgMjAsIDM3LCA2LCAxLCAyMjYsIDExMSwgMzcsIDYsIDEsIDIzMywgMTksIDMsIDIzNSwgNzMsIDM3LCA2LCAxLCAKKyAgICAyMDksIDI1MCwgNjYsIDM3LCA2LCAxLCAyMzksIDg2LCAzNywgNiwgMSwgNjIsIDM3LCA2LCAxLCAyNDksIDgsIDM3LCA2LCAKKyAgICAxLCAyMDMsIDU5LCAzNywgNiwgMSwgMjM1LCAxODUsIDM3LCA2LCAxLCAyNDEsIDE3NSwgMzcsIDYsIDEsIDIyOCwgMTc4LCAKKyAgICAzNywgNiwgMSwgMTk5LCA2OCwgMzcsIDYsIDEsIDE5OSwgODksIDM3LCA2LCAxLCA3MCwgMzcsIDYsIDEsIDIwOSwgMjUwLCAKKyAgICA3MCwgMzcsIDYsIDEsIDE2MSwgMzcsIDYsIDEsIDIzOCwgMjA5LCAzNywgNiwgMSwgMjM4LCAxOTAsIDM3LCA2LCAxLCAyMzgsIAorICAgIDE3OSwgMzcsIDYsIDEsIDc0LCAzNywgNiwgMSwgMjE2LCA3MywgMzcsIDYsIDEsIDIzOCwgMTE1LCAzNywgNiwgMSwgMjM4LCAKKyAgICAxMDQsIDM3LCA2LCAxLCAyMDYsIDIwMSwgMzcsIDYsIDEsIDY2LCAzNywgNiwgMSwgMjM4LCAyNDgsIDM3LCA2LCAxLCAxNDQsIAorICAgIDM3LCA2LCAxLCAyMDUsIDI2LCAzNywgNiwgMSwgMjQ3LCA4LCAzNywgNiwgMSwgMjEwLCAxMTQsIDM3LCA2LCAxLCAyMTAsIAorICAgIDY4LCAzNywgNiwgMSwgMjM0LCAxNjUsIDU0LCAzNywgNiwgMSwgMjAwLCAyOSwgMzcsIDYsIDEsIDIwOSwgMjMsIDU0LCAzNywgCisgICAgNiwgMSwgNzIsIDM3LCA2LCAxLCAxOTksIDIxMSwgMzcsIDYsIDEsIDE4MywgMzcsIDQsIDEsIDYyLCAzNywgNCwgMSwgMjQ5LCAKKyAgICA4LCAzNywgNCwgMSwgMjAzLCA1OSwgMzcsIDQsIDEsIDIzNSwgMTg1LCAzNywgNCwgMSwgMjQxLCAxNzUsIDM3LCA0LCAxLCAKKyAgICAyMjgsIDE3OCwgMzcsIDQsIDEsIDE5OSwgNjgsIDM3LCA0LCAxLCAxOTksIDg5LCAzNywgNCwgMSwgNzAsIDM3LCA0LCAxLCAKKyAgICAyMDksIDI1MCwgNzAsIDM3LCA0LCAxLCAxNjEsIDM3LCA0LCAxLCAyMzgsIDIwOSwgMzcsIDQsIDEsIDIzOCwgMTkwLCAzNywgCisgICAgNCwgMSwgMjM4LCAxNzksIDM3LCA0LCAxLCA3NCwgMzcsIDQsIDEsIDIxNiwgNzMsIDM3LCA0LCAxLCAyMzgsIDExNSwgMzcsIAorICAgIDQsIDEsIDIzOCwgMTA0LCAzNywgNCwgMSwgMjA2LCAyMDEsIDM3LCA0LCAxLCA2NiwgMzcsIDQsIDEsIDIzOCwgMjQ4LCAzNywgCisgICAgNCwgMSwgMTQ0LCAzNywgNCwgMSwgMjA1LCAyNiwgMzcsIDQsIDEsIDI0NywgOCwgMzcsIDQsIDEsIDIxMCwgMTE0LCAzNywgCisgICAgNCwgMSwgMjEwLCA2OCwgMzcsIDQsIDEsIDIzNCwgMTY1LCA1NCwgMzcsIDQsIDEsIDIwMCwgMjksIDM3LCA0LCAxLCAyMDksIAorICAgIDIzLCA1NCwgMzcsIDQsIDEsIDcyLCAzNywgNCwgMSwgMTk5LCAyMTEsIDM3LCA0LCAxLCAxODMsIDM3LCA0LCAxLCAyMjgsIAorICAgIDE3OSwgMywgMjM1LCA3MywgMzcsIDQsIDEsIDIyOCwgNDUsIDM3LCA0LCAxLCAyNDAsIDIyOCwgMzcsIDQsIDEsIDIzNSwgCisgICAgMTMyLCAzNywgNCwgMSwgMjA0LCAxNywgMjI4LCAxNzgsIDM3LCA0LCAxLCAyMzksIDkwLCAzNywgNCwgMSwgMjQ3LCAyMzMsIAorICAgIDcwLCAzNywgNCwgMSwgMjAwLCA5LCAzNywgNCwgMSwgMjI3LCAyMjcsIDM3LCA0LCAxLCAyMjQsIDE0MSwgMzcsIDQsIDEsIAorICAgIDIxOSwgOTEsIDM3LCA0LCAxLCAyMDUsIDIwLCAzNywgNCwgMSwgMjI2LCAxMTEsIDM3LCA0LCAxLCAyMzMsIDE5LCAzLCAKKyAgICAyMzUsIDczLCAzNywgNCwgMSwgMjA5LCAyNTAsIDY2LCAzNywgNCwgMSwgMjM5LCA4NiwgMzcsIDYsIDEsIDIxNywgODMsIAorICAgIDM3LCA0LCAxLCAyMTcsIDgzLCAzNywgNiwgMSwgMjAwLCA2NSwgMzcsIDQsIDEsIDIwMCwgNjUsIDM3LCA2LCAxLCAyMjgsIAorICAgIDM5LCA3MiwgMzcsIDQsIDEsIDIyOCwgMzksIDcyLCAzNywgNiwgMSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgCisgICAgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNiwgMSwgMjI4LCAzOSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjI4LCAKKyAgICAzOSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNiwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjQ4LCAxNzUsIAorICAgIDE5OSwgMTgxLCAzNywgNiwgMSwgMjI4LCAzOSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjI4LCAzOSwgMjQ4LCAKKyAgICAxNzUsIDE5OSwgMTgxLCAzNywgNiwgMSwgMjI2LCAzMSwgMzcsIDQsIDEsIDIyNiwgMzEsIDM3LCA2LCAxLCAyMTQsIDIzNSwgCisgICAgMzcsIDQsIDEsIDIxNCwgMjM1LCAzNywgNiwgMSwgMjM3LCA2MywgMzcsIDQsIDEsIDIzNywgNjMsIDM3LCA2LCAxLCAyMjcsIAorICAgIDI1MywgMzcsIDQsIDEsIDIyNywgMjUzLCAzNywgNiwgMSwgMjI3LCAyNTQsIDMsIDUzLCAyMzUsIDc0LCAyNTEsIDI1MSwgCisgICAgMzcsIDQsIDEsIDIyNywgMjU0LCAzLCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIDM3LCA2LCAxLCAyMDQsIDIwLCAzNywgNCwgCisgICAgMSwgMjA0LCAyMCwgMzcsIDYsIDEsIDIxMiwgMjIxLCAyMTcsIDgzLCAzNywgNCwgMSwgMjEyLCAyMjEsIDIxNywgODMsIDM3LCAKKyAgICA2LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDIxMCwgMzcsIDQsIDEsIDIxNywgODQsIDMsIDIwNSwgMjEwLCAzNywgNiwgMSwgCisgICAgMjE3LCAxMSwgMzcsIDQsIDEsIDIxNywgMTEsIDM3LCA2LCAxLCAyMjYsIDYyLCAzNywgNCwgMSwgMjI2LCA2MiwgMzcsIAorICAgIDIwNiwgNDksIDU0LCAzOCwgMzcsIDIwNSwgMjEwLCAzOCwgMzcsIDIxNiwgMTgzLCAzOCwgMzcsIDI0MSwgMjQyLCAyMTUsIAorICAgIDEwOCwgMzgsIDM3LCAyMTQsIDIyOSwgMjE1LCAxMDgsIDM4LCAzNywgMjE1LCA5MiwgMzgsIDM3LCAyMzMsIDgzLCAyMDYsIAorICAgIDQ5LCA1NCwgMzgsIDM3LCAyMjEsIDE2OCwgNTQsIDM3LCA2LCAxLCAyMDksIDI1MCwgMjMzLCAxOSwgMywgMjA3LCA2LCAzNywgCisgICAgNCwgMSwgMjA5LCAyNTAsIDIzMywgMTksIDMsIDIwNywgNiwgMzcsIDYsIDEsIDIxMCwgMTYzLCA1NCwgMzcsIDQsIDEsIAorICAgIDIxMCwgMTYzLCA1NCwgMzcsIDYsIDEsIDIzOCwgMTE2LCAzLCAyMDYsIDExLCAzNywgNCwgMSwgMjM4LCAxMTYsIDMsIDIwNiwgCisgICAgMTEsIDM3LCA2LCAxLCAyMzUsIDE4NiwgMywgMjAzLCAyMTksIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMjAzLCAyMTksIDM3LCAKKyAgICA2LCAxLCAyMzUsIDE4NiwgMywgOTcsIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgOTcsIDM3LCA2LCAxLCAyMzUsIDE4NiwgMywgCisgICAgMTAxLCAxMTcsIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMTAxLCAxMTcsIDM3LCA2LCAxLCAxOTksIDY5LCAzLCAyNDEsIAorICAgIDExOSwgMzcsIDQsIDEsIDE5OSwgNjksIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMTk5LCA5MCwgMywgMjQxLCAxMTksIDM3LCAKKyAgICA0LCAxLCAxOTksIDkwLCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIyNywgMTA4LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIAorICAgIDIyNywgMTA4LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIyNywgMTA4LCAzLCA4MywgOTcsIDM3LCA0LCAxLCAyMjcsIDEwOCwgCisgICAgMywgODMsIDk3LCAzNywgNiwgMSwgMjI3LCAxMDgsIDMsIDk3LCAzNywgNCwgMSwgMjI3LCAxMDgsIDMsIDk3LCAzNywgNiwgCisgICAgMSwgMjQ5LCA2MCwgMTYxLCAzNywgNCwgMSwgMjQ5LCA2MCwgMTYxLCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDI0MSwgMTE5LCAKKyAgICAzNywgNCwgMSwgMjM4LCAxODAsIDMsIDI0MSwgMTE5LCAzNywgNiwgMzMsIDIzOCwgMTgwLCAyMzUsIDE4NSwgMzcsIDQsIAorICAgIDMzLCAyMzgsIDE4MCwgMjM1LCAxODUsIDM3LCA2LCAxLCAyMTYsIDc0LCAzLCAxMDEsIDExNywgMzcsIDQsIDEsIDIxNiwgCisgICAgNzQsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMjUyLCAyLCAxNDQsIDM3LCA0LCAxLCAyNTIsIDIsIDE0NCwgMzcsIDYsIDEsIAorICAgIDIzOCwgMTA1LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzOCwgMTA1LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIwNiwgCisgICAgMjAyLCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIwNiwgMjAyLCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIwOCwgNjgsIDY2LCAKKyAgICAzNywgNCwgMSwgMjA4LCA2OCwgNjYsIDM3LCA2LCAxLCAyMDgsIDY4LCAxMDgsIDMsIDk3LCAzNywgNCwgMSwgMjA4LCA2OCwgCisgICAgMTA4LCAzLCA5NywgMzcsIDYsIDEsIDIzNCwgMjM2LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzNCwgMjM2LCAzLCAyNDEsIAorICAgIDExOSwgMzcsIDYsIDMzLCAyMDYsIDIwMiwgMjA1LCAyNiwgMzcsIDQsIDMzLCAyMDYsIDIwMiwgMjA1LCAyNiwgMzcsIDYsIAorICAgIDEsIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyNDcsIDksIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjQ3LCA5LCAKKyAgICAzLCA4MywgOTcsIDM3LCA0LCAxLCAyNDcsIDksIDMsIDgzLCA5NywgMzcsIDYsIDEsIDIxMCwgMzQsIDM3LCA0LCAxLCAyMTAsIAorICAgIDM0LCAzNywgNiwgMSwgMjUyLCAyLCAyNDcsIDgsIDM3LCA0LCAxLCAyNTIsIDIsIDI0NywgOCwgMzcsIDYsIDEsIDI1MiwgMiwgCisgICAgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDI1MiwgMiwgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDEsIDIxNiwgCisgICAgMTc0LCAzNywgNiwgMSwgMTk5LCA2OSwgMywgMjQ4LCA1NywgMzcsIDQsIDEsIDE5OSwgNjksIDMsIDI0OCwgNTcsIDM3LCA2LCAKKyAgICAxLCAyMjcsIDEwOCwgMywgMTE3LCAzNywgNCwgMSwgMjI3LCAxMDgsIDMsIDExNywgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAKKyAgICAyMDcsIDYsIDM3LCA0LCAxLCAyMzgsIDIxMCwgMywgMjA3LCA2LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDExNywgMzcsIDQsIAorICAgIDEsIDIzOCwgMTgwLCAzLCAxMTcsIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgMjA3LCA2LCAzNywgNCwgMSwgMjM4LCAxODAsIAorICAgIDMsIDIwNywgNiwgMzcsIDYsIDEsIDIyNiwgMjAxLCAyNDcsIDgsIDM3LCA0LCAxLCAyMjYsIDIwMSwgMjQ3LCA4LCAzNywgNiwgCisgICAgMSwgMjM4LCAxOTEsIDMsIDIwNywgNiwgMzcsIDQsIDEsIDIzOCwgMTkxLCAzLCAyMDcsIDYsIDM3LCA0LCAxLCAyMTYsIAorICAgIDE3NCwgMzcsIDYsIDEsIDM1LCAzLCAyNDgsIDU3LCAzNywgNCwgMSwgMzUsIDMsIDI0OCwgNTcsIDM3LCA2LCAxLCAzNSwgMywgCisgICAgMjQxLCA3NCwgMzcsIDQsIDEsIDM1LCAzLCAyNDEsIDc0LCAzNywgNiwgMzMsIDM1LCAyMjgsIDE3OCwgMzcsIDQsIDMzLCAKKyAgICAzNSwgMjI4LCAxNzgsIDM3LCA2LCAxLCAyMjgsIDE3OSwgMywgMjQ4LCA1NywgMzcsIDQsIDEsIDIyOCwgMTc5LCAzLCAyNDgsIAorICAgIDU3LCAzNywgNiwgMSwgMjExLCAyMTgsIDM3LCA0LCAxLCAyMTEsIDIxOCwgMzcsIDYsIDEsIDIxMSwgMjE5LCAzLCAyNDEsIAorICAgIDc0LCAzNywgNCwgMSwgMjExLCAyMTksIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxOTksIDY5LCAzLCAyNDEsIDc0LCAzNywgNCwgCisgICAgMSwgMTk5LCA2OSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDE5OSwgOTAsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAxOTksIDkwLCAKKyAgICAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMjUyLCAyLCAyMzksIDkwLCAzNywgNCwgMSwgMjUyLCAyLCAyMzksIDkwLCAzNywgNiwgCisgICAgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDM3LCA0LCAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOCwgMzcsIDYsIDEsIDIzMywgCisgICAgMTksIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTYzLCAzLCAyNDEsIDc0LCAKKyAgICAzNywgNCwgMSwgMTYzLCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMjQ5LCA3MSwgNzQsIDM3LCA0LCAxLCAyNDksIDcxLCA3NCwgCisgICAgMzcsIDYsIDEsIDI0OSwgNzEsIDE2MywgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDI0OSwgNzEsIDE2MywgMywgMjQxLCA3NCwgCisgICAgMzcsIDYsIDEsIDE5NywgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDE5NywgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDEwOCwgMywgCisgICAgMjIyLCAyMjgsIDM3LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI4LCAzNywgNiwgMSwgMTA4LCAzLCAyNDEsIDc0LCAzNywgNCwgCisgICAgMSwgMTA4LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTA4LCAzLCA1MywgMTY5LCAzNywgNCwgMSwgMTA4LCAzLCA1MywgMTY5LCAKKyAgICAzNywgNiwgMSwgMjQ3LCA5LCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMjQ3LCA5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgCisgICAgMjM1LCAxODYsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjAwLCAKKyAgICAzMCwgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDIwMCwgMzAsIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAyMzUsIDE4NiwgMywgCisgICAgMjA4LCA0NywgMjYsIDExNywgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCAyMDgsIDQ3LCAyNiwgMTE3LCAzNywgNiwgMSwgMjM0LCAKKyAgICAyMzYsIDMsIDExNywgMzcsIDQsIDEsIDIzNCwgMjM2LCAzLCAxMTcsIDM3LCA2LCAxLCAyMzQsIDIzNiwgMywgOTcsIDM3LCAKKyAgICA0LCAxLCAyMzQsIDIzNiwgMywgOTcsIDM3LCA2LCAxLCAyMjYsIDcyLCAyNDEsIDE3NSwgMzcsIDQsIDEsIDIyNiwgNzIsIAorICAgIDI0MSwgMTc1LCAzNywgNiwgMSwgMjI2LCA3MiwgMjQwLCAyMjgsIDM3LCA0LCAxLCAyMjYsIDcyLCAyNDAsIDIyOCwgMzcsIAorICAgIDYsIDEsIDIyNiwgNzIsIDE5OSwgMTgsIDM3LCA0LCAxLCAyMjYsIDcyLCAxOTksIDE4LCAzNywgNiwgMSwgMjI2LCA3MiwgCisgICAgMjM5LCA4MiwgMzcsIDQsIDEsIDIyNiwgNzIsIDIzOSwgODIsIDM3LCA2LCAxLCAyMjYsIDcyLCAyMjQsIDE0MSwgMzcsIDQsIAorICAgIDEsIDIyNiwgNzIsIDIyNCwgMTQxLCAzNywgNiwgMSwgMjI2LCA3MiwgMjE5LCA5MSwgMzcsIDQsIDEsIDIyNiwgNzIsIDIxOSwgCisgICAgOTEsIDM3LCA2LCAxLCAyMjYsIDcyLCAyMDksIDg5LCAzNywgNCwgMSwgMjI2LCA3MiwgMjA5LCA4OSwgMzcsIDYsIDEsIAorICAgIDIyNiwgNzIsIDIwNSwgMjA0LCAzNywgNCwgMSwgMjI2LCA3MiwgMjA1LCAyMDQsIDM3LCA2LCAxLCAyMTMsIDEwNSwgMTk5LCAKKyAgICA4OSwgMzcsIDQsIDEsIDIxMywgMTA1LCAxOTksIDg5LCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIDExNywgMzcsIDQsIDEsIAorICAgIDIzOCwgMjEwLCAzLCAxMTcsIDM3LCA2LCAxLCAyMjQsIDIyMywgMzcsIDQsIDEsIDIyNCwgMjIzLCAzNywgNiwgMSwgMjEzLCAKKyAgICA5MywgMzcsIDQsIDEsIDIxMywgOTMsIDM3LCA2LCAxLCAyMDAsIDk4LCAzNywgNCwgMSwgMjAwLCA5OCwgMzcsIDYsIDEsIAorICAgIDIxNCwgMTU5LCAzNywgNCwgMSwgMjE0LCAxNTksIDM3LCA2LCAxLCAyMDEsIDY0LCAzNywgNCwgMSwgMjAxLCA2NCwgMzcsIAorICAgIDYsIDEsIDI1MSwgMTM4LCAxNjEsIDM3LCA0LCAxLCAyNTEsIDEzOCwgMTYxLCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIDEwMSwgCisgICAgMTE3LCAzNywgNCwgMSwgMjM4LCAyMTAsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDEwMSwgMTE3LCAKKyAgICAzNywgNCwgMSwgMjM4LCAxODAsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMjE2LCA3NCwgMywgMjQxLCAxMTksIDM3LCA0LCAKKyAgICAxLCAyMTYsIDc0LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIxMCwgMzUsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjEwLCAKKyAgICAzNSwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgNDksIDExNywgMzcsIDQsIDEsIDIzOCwgMTgwLCAzLCAKKyAgICA0OSwgMTE3LCAzNywgNiwgMSwgMjM5LCA3NSwgMzcsIDQsIDEsIDIzOSwgNzUsIDM3LCA2LCAxLCAyNDEsIDIyNCwgMzcsIDQsIAorICAgIDEsIDI0MSwgMjI0LCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjM4LCAyMTAsIDMsIDI0MSwgCisgICAgMTE5LCAxODQsIDYsIDEsIDI1MCwgMTA5LCAxODQsIDYsIDEsIDI0OCwgMjI0LCAxODQsIDYsIDEsIDIzNSwgMTQ5LCAxODQsIAorICAgIDYsIDEsIDI0MiwgNTgsIDE4NCwgNiwgMSwgMjM5LCA1LCAxODQsIDYsIDEsIDE5OSwgMTE0LCAxODQsIDYsIDEsIDIzOCwgCisgICAgMjQxLCAxODQsIDYsIDEsIDIzOCwgODEsIDE4NCwgNiwgMSwgMTM4LCAxODQsIDYsIDEsIDE5OSwgNjgsIDE4NCwgNiwgMSwgCisgICAgMjI4LCA4NiwgMTg0LCA2LCAxLCAyMjQsIDE0NSwgMTg0LCA2LCAxLCAyMDAsIDE3MywgMTg0LCA2LCAxLCAyNDcsIDE5MCwgCisgICAgMTg0LCA2LCAxLCAyMjYsIDI0MywgMTg0LCA2LCAxLCAyMzMsIDIwNywgMTg0LCA2LCAxLCAyMjcsIDI0OCwgMTg0LCA2LCAxLCAKKyAgICAyMzUsIDE5NiwgMTg0LCA2LCAxLCAyNDYsIDI1NCwgMTg0LCA2LCAxLCAyMjIsIDQwLCAxODQsIDYsIDEsIDIwMCwgOSwgCisgICAgMTg0LCA2LCAxLCAyMTgsIDIwMSwgMTg0LCA2LCAxLCAyMTAsIDExNCwgMTg0LCA2LCAxLCAyMDIsIDE5MywgMTg0LCA2LCAxLCAKKyAgICAyNDcsIDM3LCAxODQsIDYsIDEsIDIxNiwgNTQsIDE4NCwgNiwgMSwgMjI3LCAyMTAsIDE4NCwgNiwgMSwgMjEzLCAyNTIsIAorICAgIDE4NCwgNiwgMSwgMjExLCAxODAsIDE4NCwgNiwgMSwgMjAyLCAyMzgsIDE4NCwgNiwgMSwgMjA1LCAyMDcsIDE4NCwgNiwgMSwgCisgICAgMjEzLCAxNTQsIDE4NCwgNiwgMSwgMjQ2LCA5MSwgMTg0LCA2LCAxLCAxOTksIDI1MCwgMTg0LCA2LCAxLCAyMTUsIDEzOSwgCisgICAgMTg0LCA2LCAxLCAyMjYsIDI1NCwgMTg0LCA2LCAxLCAyMTcsIDEwOCwgMTg0LCA2LCAxLCAyMzcsIDEzNCwgMTg0LCA2NywgCisgICAgMSwgNDksIDE2NywgMjEzLCAyNiwgMTg0LCAyNTEsIDEzLCAxODQsIDIzOCwgMTgzLCA4MSwgMTg0LCAyMzgsIDQzLCA4MSwgCisgICAgMTg0LCAyNDYsIDcwLCAxODQsIDIxNCwgNzksIDgxLCAxODQsIDI1MiwgMywgODEsIDE4NCwgNCwgMSwgMjUwLCAxMDksIAorICAgIDE4NCwgNCwgMSwgMjQ4LCAyMjQsIDE4NCwgNCwgMSwgMjM1LCAxNDksIDE4NCwgNCwgMSwgMjQyLCA1OCwgMTg0LCA0LCAxLCAKKyAgICAyMzksIDUsIDE4NCwgNCwgMSwgMTk5LCAxMTQsIDE4NCwgNCwgMSwgMjM4LCAyNDEsIDE4NCwgNCwgMSwgMjM4LCA4MSwgCisgICAgMTg0LCA0LCAxLCAxMzgsIDE4NCwgNCwgMSwgMTk5LCA2OCwgMTg0LCA0LCAxLCAyMjgsIDg2LCAxODQsIDQsIDEsIDIyNCwgCisgICAgMTQ1LCAxODQsIDQsIDEsIDIwMCwgMTczLCAxODQsIDQsIDEsIDI0NywgMTkwLCAxODQsIDQsIDEsIDIyNiwgMjQzLCAxODQsIAorICAgIDQsIDEsIDIzMywgMjA3LCAxODQsIDQsIDEsIDIyNywgMjQ4LCAxODQsIDQsIDEsIDIzNSwgMTk2LCAxODQsIDQsIDEsIDI0NiwgCisgICAgMjU0LCAxODQsIDQsIDEsIDIyMiwgNDAsIDE4NCwgNCwgMSwgMjAwLCA5LCAxODQsIDQsIDEsIDIxOCwgMjAxLCAxODQsIDQsIAorICAgIDEsIDIxMCwgMTE0LCAxODQsIDQsIDEsIDIwMiwgMTkzLCAxODQsIDQsIDEsIDI0NywgMzcsIDE4NCwgNCwgMSwgMjE2LCA1NCwgCisgICAgMTg0LCA0LCAxLCAyMjcsIDIxMCwgMTg0LCA0LCAxLCAyMTMsIDI1MiwgMTg0LCA0LCAxLCAyMTEsIDE4MCwgMTg0LCA0LCAxLCAKKyAgICAyMDIsIDIzOCwgMTg0LCA0LCAxLCAyMDUsIDIwNywgMTg0LCA0LCAxLCAyMTMsIDE1NCwgMTg0LCA0LCAxLCAyNDYsIDkxLCAKKyAgICAxODQsIDQsIDEsIDE5OSwgMjUwLCAxODQsIDQsIDEsIDIxNSwgMTM5LCAxODQsIDQsIDEsIDIyNiwgMjU0LCAxODQsIDQsIDEsIAorICAgIDIxNywgMTA4LCAxODQsIDQsIDEsIDIzNywgMTM0LCAxODQsIDQsIDMzLCAyMzksIDYsIDE5OSwgMjUwLCAxODQsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAxODQsIDIzMywgMzMsIDIxMywgNDUsIDE4NCwgMjM4LCA3NywgNTQsIDIyNSwgMjcsIDE4NCwgMjM4LCAKKyAgICA3NywgNTQsIDE4NCwgMjM5LCAxNTcsIDU0LCAxMTMsIDI1MSwgMjUyLCAyMzgsIDcyLCAxMTMsIDI1MSwgMjUyLCAyMTEsIAorICAgIDE4MSwgMTEzLCAyNTEsIDI1MiwgMjEwLCA5MiwgMTEzLCAyNTEsIDI1MiwgMTk5LCAxMDAsIDIxNCwgMTQyLCAxMTMsIDI1MSwgCisgICAgMjUyLCAxOTksIDEwMCwgMjM2LCA3OSwgMTEzLCAyNTEsIDI1MiwgMjA1LCAyMjIsIDExMywgMjUxLCAyNTIsIDIxMywgMTAyLCAKKyAgICAxMTMsIDI1MSwgMjUyLCAxOTksIDk4LCAxMTMsIDI1MSwgMjUyLCAyMTYsIDEwMCwgMTEzLCAyNTEsIDI1MiwgMjAwLCAyMiwgCisgICAgMTEzLCAyNTEsIDI1MiwgMjA2LCAxMjksIDExMywgMjUxLCAyNTIsIDIzNSwgMjQ3LCAxMTMsIDI1MSwgMjUyLCAyMzUsIAorICAgIDI0OCwgMjIxLCAzLCAxMTMsIDI1MSwgMjUyLCAyMzUsIDI0NSwgMTEzLCAyNTEsIDI1MiwgMjE0LCAxNDMsIDIxNiwgMTI5LCAKKyAgICAxMTMsIDI1MSwgMjUyLCAyMDYsIDE3MiwgMjM2LCA4LCAxMTMsIDI1MSwgMjUyLCAyMTYsIDc5LCAxMTMsIDI1MSwgMjUyLCAKKyAgICAyNTAsIDE0OCwgMjM0LCAyMjgsIDExMywgMjUxLCAyNTIsIDIyMSwgMTMsIDExMywgMjUxLCAyNTIsIDIyMiwgMjAzLCAxMTMsIAorICAgIDI1MSwgMjUyLCAyMjIsIDI5LCAxMTMsIDI1MSwgMjUyLCAyMjIsIDMwLCAyMjYsIDI1NSwgMTEzLCAyNTEsIDI1MiwgMjQxLCAKKyAgICAyNTEsIDExMywgMjUxLCAyNTIsIDIxNCwgMTU0LCAxMTMsIDI1MSwgMjUyLCAyMDYsIDE3MiwgMjE0LCAxMzcsIDExMywgCisgICAgMjUxLCAyNTIsIDIwMCwgMzIsIDI0OCwgMjI1LCAxOTksIDIzMSwgMTEzLCAyNTEsIDI1MiwgMjE3LCA5MCwgMTEzLCAyNTEsIAorICAgIDI1MiwgMjI4LCAxMzcsIDExMywgMjUxLCAyNTIsIDI0MSwgMTUzLCAxMTMsIDI1MSwgMjUyLCAxOTksIDI1LCAxMTMsIDEzNCwgCisgICAgMjIyLCAxMzEsIDI0NiwgMTU1LCAxMTMsIDIxNSwgMTAwLCAyMTAsIDM3LCAxMTMsIDIxNSwgMTAwLCAyMzQsIDE1NiwgMjExLCAKKyAgICAxODEsIDExMywgMjE1LCAxMDAsIDIzNCwgMTU2LCAyMTYsIDkzLCAxMTMsIDIxNSwgMTAwLCAyMzQsIDE1NiwgMjE0LCAxNDcsIAorICAgIDExMywgMjE1LCAxMDAsIDIzNCwgNDcsIDExMywgMjE1LCAxMDAsIDIwNSwgMjMsIDExMywgMjE1LCAxMDAsIDIxMSwgMTgxLCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMTYsIDkzLCAxMTMsIDIxNSwgMTAwLCAyMTQsIDE0NywgMTEzLCAyMTUsIDEwMCwgMjMzLCAxOTksIAorICAgIDExMywgMjE1LCAxMDAsIDIzMywgMjAwLCAyMzQsIDE1OCwgMzYsIDIwMywgNjMsIDExMywgMjE1LCAxMDAsIDIxNCwgODMsIAorICAgIDExMywgMjE1LCAxMDAsIDI0MiwgNDMsIDIxNywgMzQsIDIyMiwgMTYzLCAxMTMsIDIxNSwgMTAwLCAyMjIsIDE5LCAxMTMsIAorICAgIDIxNCwgMjEyLCAyMjIsIDE2MCwgMTEzLCAyMTUsIDEwMCwgMjEzLCAyMzIsIDExMywgMjE0LCAyMTIsIDIxNiwgMTAyLCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMTAsIDIyLCAyNDAsIDE4MiwgMTEzLCAyMTUsIDEwMCwgMjA5LCAxNDMsIDI0MCwgMTgyLCAxMTMsIAorICAgIDIxNCwgMjEyLCAyMDksIDI0LCAyMTYsIDk1LCAxMTMsIDEzNCwgMjAzLCAyMjUsIDI0MCwgMTgyLCAxMTMsIDEzNCwgMjI0LCAKKyAgICA1NCwgMjQwLCAxODIsIDExMywgMjE0LCAyMTIsIDIxOCwgOTAsIDIzNCwgMjI3LCAxMTMsIDIxNSwgMTAwLCAyMTQsIDE0OCwgCisgICAgMjE0LCAxNDIsIDExMywgMSwgMjUxLCAxNDIsIDExMywgMSwgMjQ4LCAyMTAsIDExMywgMSwgMjM1LCAxNDcsIDExMywgMSwgCisgICAgMjQyLCAyMywgMTEzLCAxLCAyMzQsIDEzOSwgMTEzLCAxLCAyMDMsIDYzLCAxMTMsIDEsIDE5OSwgOTIsIDExMywgMSwgMjM0LCAKKyAgICA5MywgMTEzLCAxLCAyMDYsIDE0NiwgMTEzLCAxLCAxOTksIDIzNCwgMTEzLCAxLCA0NywgMjI3LCA4NiwgMTEzLCAxLCAyMjcsIAorICAgIDg2LCAxMTMsIDEsIDIyNSwgODMsIDExMywgMSwgNDcsIDIyMiwgNDcsIDExMywgMSwgMjIyLCA0NywgMTEzLCAxLCA0NywgCisgICAgMjE4LCA4OSwgMTEzLCAxLCAyMTgsIDg5LCAxMTMsIDEsIDIxMiwgMTksIDExMywgMSwgMjUwLCAxMDcsIDExMywgMSwgNDcsIAorICAgIDIxNiwgNzMsIDExMywgMSwgMjE2LCA3MywgMTEzLCAxLCA0NywgMjA1LCAyNywgMTEzLCAxLCAyMDUsIDI3LCAxMTMsIDEsIAorICAgIDIxNCwgMTA2LCAxMTMsIDEsIDIxMywgMTIzLCAxMTMsIDEsIDIxMCwgMjEsIDExMywgMSwgMjA2LCAyMTcsIDExMywgMzMsIAorICAgIDIwMCwgNywgNTMsIDIwMywgNjMsIDExMywgMzMsIDIwMCwgNywgMjAzLCA2NCwgMTk5LCAyMzQsIDExMywgMzMsIDIwMCwgNywgCisgICAgNTMsIDE5OSwgMjM0LCAxMTMsIDIxNCwgMjEyLCAyMzUsIDI0NywgMTEzLCAyMTQsIDIxMiwgMjM1LCAyNDUsIDksIDQxLCAKKyAgICA1NCwgOSwgMiwgMjEyLCAxMiwgOSwgMjM2LCAyNTMsIDIyMiwgMTQ1LCA5LCAyLCAyMTIsIDUyLCA5LCAyLCAyMTIsIDE1LCAKKyAgICA5LCA0MSwgMTM0LCA1NiwgMjUwLCAyNDgsIDI0MiwgMjEwLCAyMTIsIDIzNCwgMjUwLCAyNDgsIDIzNiwgMjIyLCAyMTIsIAorICAgIDIzNCwgOSwgMjEzLCAxOTcsIDI1MCwgMjQ4LCAyMTYsIDI4LCAyMjEsIDE3MCwgNTQsIDI1MCwgMjQ4LCAyMTYsIDI4LCAKKyAgICAyMDYsIDE2NywgMjA2LCA1MSwgNTQsIDI1MSwgMTk4LCA1NCwgOSwgMjQ2LCA3MCwgOSwgMjQxLCAyMzgsIDIxMCwgMTU0LCAKKyAgICA5LCAyMTUsIDEwMiwgMjAzLCA0NCwgNTQsIDksIDIsIDIyMSwgMTQ5LCA5LCAyLCAyMTIsIDI5LCAyNTEsIDE0NSwgMjAxLCAKKyAgICA4OCwgOSwgMiwgMjUxLCAxNDUsIDI1MCwgMTcwLCA5LCAyLCAyMTMsIDIzMCwgMjUxLCAxNDQsIDksIDIsIDIxMywgMjM4LCAKKyAgICAyNTEsIDEyMiwgMjUxLCA2MywgOSwgMiwgMjA2LCAyNTQsIDksIDQsIDEyMiwgMjA3LCA5LCA5LCA0LCAxMjIsIDMzLCAxNDAsIAorICAgIDMsIDIyNSwgOTIsIDMsIDIwMCwgNDYsIDksIDQsIDEyMiwgMTk5LCAxMDUsIDksIDQsIDIzNywgMTU4LCA5LCA0LCAyNDIsIAorICAgIDE3LCA5LCA0LCAyMjcsIDM2LCA5LCAyMTAsIDE2NywgOSwgMSwgODEsIDksIDIwNSwgODMsIDczLCAyMTQsIDIxMiwgODEsIAorICAgIDksIDIxNCwgNzksIDgxLCA5LCAxLCAyMjcsIDQwLCAyMDAsIDQ2LCA5LCAxLCAyMzQsIDIwMywgOSwgMSwgMTQwLCAzLCAKKyAgICAyMjIsIDIyNCwgNTYsIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyMDEsIDczLCAzLCAyMzQsIDIwNCwgNTYsIAorICAgIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDU3LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyNTEsIDE0MiwgOSwgCisgICAgMSwgMjQ4LCAyNDAsIDksIDEsIDIwNiwgMTg0LCAyMjIsIDE1NiwgOSwgMSwgMjA2LCAxODMsIDksIDEsIDIwNiwgMTAyLCA5LCAKKyAgICAxLCAyMjcsIDIyNCwgOSwgMSwgMjM0LCAyMjQsIDksIDEsIDIyNiwgMjAzLCA5LCAxLCAyNDIsIDI5LCA5LCAxLCAyMDYsIAorICAgIDExNCwgOSwgMSwgMjEzLCAxNTQsIDksIDEsIDE5OSwgMTA1LCA5LCAxLCAyMTEsIDE4NiwgOSwgMSwgMjEwLCA2MSwgOSwgMSwgCisgICAgMjEyLCA1NiwgOSwgMSwgMjQyLCA1MiwgOSwgMSwgMjA3LCA5LCA5LCAxLCAxOTksIDEwOCwgOSwgMSwgMjUxLCAxNzEsIDksIAorICAgIDEsIDIzNSwgMTk0LCA5LCAxLCAyMjYsIDI1MywgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMjYsIDI1MywgMywgMTI2LCAKKyAgICAxOTAsIDU3LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIyOCwgNTAsIDIwMywgMTY4LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIAorICAgIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAxMjYsIDE5MCwgNTYsIDksIDIwNiwgMjIzLCA5LCAxLCAKKyAgICAyMzcsIDEzNCwgOSwgMSwgMjE0LCAxNTIsIDksIDEsIDIyNywgODYsIDksIDEsIDIyNSwgOTEsIDksIDEsIDIyMiwgNjEsIDksIAorICAgIDEsIDIxOCwgMjI3LCA5LCAxLCAyMzQsIDExNSwgOSwgMSwgMjAxLCA3MiwgOSwgMSwgMTQwLCAyMjIsIDE4NywgOSwgMSwgCisgICAgMjAwLCA0NiwgOSwgMjM3LCAxNTYsIDksIDI0MiwgMTUsIDksIDIyNywgMzQsIDksIDIzNywgMTU4LCA5LCAyNDIsIDE3LCA5LCAKKyAgICAyMjcsIDM2LCA5LCAyMTAsIDEwNCwgOSwgMjA3LCAyMzYsIDksIDIyMiwgMjIyLCA1NiwgOSwgMjM0LCAyMDQsIDU2LCA5LCAKKyAgICAyMzQsIDIwNCwgNTcsIDksIDIwOCwgNCwgMjUxLCAxNDIsIDksIDIyOCwgNTAsIDI0MiwgMTcsIDksIDEzNCwgMjE4LCAyMjgsIAorICAgIDIzNSwgMTY1LCA5LCAxOTgsIDI0NSwgOSwgMjIsIDIsIDQsIDIwMywgMTY5LCA1NiwgOSwgMjIsIDIsIDIyOCwgNTAsIDQsIAorICAgIDIwMywgMTY5LCA1NiwgOSwgMjIsIDIsIDczLCA1NywgOSwgMjEzLCAxMDUsIDI0MiwgMTcsIDksIDIzNywgMTU5LCAzLCAKKyAgICAxMjAsIDI0MCwgMTgwLCA5LCAyMDEsIDc0LCAyMzQsIDIwNCwgNTcsIDI1MCwgMjQ4LCAxNywgMTk5LCA4MSwgMjUwLCAyNDgsIAorICAgIDE3LCAxMDIsIDI1MCwgMjQ4LCAxNywgMTA1LCAyNTAsIDI0OCwgMTcsIDE0NywgMjUwLCAyNDgsIDE3LCAxNDksIDI1MCwgCisgICAgMjQ4LCAxNywgMTY0LCAyNTAsIDI0OCwgMTcsIDE4NywgMjUwLCAyNDgsIDE3LCAyMTAsIDEzNSwgMjUwLCAyNDgsIDE3LCAKKyAgICAxOTIsIDI1MCwgMjQ4LCAxNywgMjE5LCAxMTMsIDksIDIxNiwgMjcsIDU0LCA5LCAyNDEsIDE2OCwgMjEwLCAxNTQsIDksIAorICAgIDIwNiwgNDksIDIxMCwgMTU0LCA5LCAyMzcsIDYxLCAyMTUsIDk4LCAyMDgsIDEwOSwgOSwgMSwgMjQwLCAxODEsIDI0OCwgCisgICAgMjQwLCA5LCAxLCAyNDAsIDE4MSwgMjE0LCAxNTIsIDksIDEsIDIwNywgMjEzLCAyNTEsIDE0MiwgOSwgMSwgMTQwLCAyMDEsIAorICAgIDg5LCA5LCAxLCAxNDAsIDMsIDIwMSwgNzQsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTQwLCAzLCAyMDEsIDc0LCAyMzQsIDIwNCwgCisgICAgNTcsIDksIDEsIDEyMiwgMjM0LCAyMDMsIDksIDEsIDEyMiwgMjM0LCAyMDQsIDI1MSwgMTQyLCA5LCAxLCAxMjIsIDIzNCwgCisgICAgMjA0LCAyMDEsIDcyLCA5LCAxLCAxMDgsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTIyLCAyMzQsIDIwNCwgMjAwLCA0NiwgCisgICAgOSwgMSwgMjA0LCAyNDUsIDksIDEsIDIwNCwgMjQzLCA5LCAxLCAyNDgsIDI1MCwgOSwgMSwgMjA2LCAxODQsIDMsIDIxMywgCisgICAgMjYsIDksIDEsIDIwNiwgMTg0LCAzLCAxMjYsIDE5MCwgODgsIDIzOSwgMTY1LCA5LCAxLCAyMTYsIDU0LCA5LCAxLCAyMDYsIAorICAgIDE4MSwgOSwgMSwgMjQ4LCAyMzgsIDksIDEsIDE1NSwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAxNTUsIDMsIDEyMCwgMTkwLCAKKyAgICA4MywgNTYsIDksIDEsIDIxOCwgNDcsIDksIDEsIDIzOSwgOTksIDksIDEsIDE1NSwgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMDYsIDIwNSwgOSwgMSwgMjA2LCAyMDMsIDksIDEsIDI0MSwgMjE1LCA5LCAxLCAyNDIsIDMwLCAzLCAyMTMsIDI2LCA5LCAKKyAgICAxLCAyNDIsIDMwLCAzLCA3MywgNTcsIDksIDEsIDI0MiwgMzAsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDQsIDIwNywgOSwgOSwgCisgICAgMSwgMjQyLCAzNiwgOSwgMSwgMjQxLCAyMTcsIDksIDEsIDIzOSwgMTI3LCA5LCAxLCAyNDIsIDMwLCAzLCAxMjYsIDE5MCwgCisgICAgODgsIDIzOSwgMTY1LCA5LCAxLCAyNDIsIDMwLCAzLCAyMzYsIDIyOSwgMTkwLCA1NiwgOSwgMSwgMjEyLCAyMDcsIDksIDEsIAorICAgIDIxMywgMTU1LCAzLCA0LCAyMDMsIDE2OCwgOSwgMSwgMjEzLCAxNTUsIDMsIDIxMywgMjYsIDksIDEsIDIxMywgMTU1LCAzLCAKKyAgICA3MywgNTcsIDksIDEsIDIxMywgMTU1LCAzLCA0LCAyMDMsIDE2OSwgNTcsIDksIDEsIDIxMywgMTU1LCAzLCA3MywgMjQ4LCAKKyAgICAyMjgsIDI2LCA3MywgNTYsIDksIDEsIDIxMywgMTU1LCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDIyNywgMjIxLCA5LCAxLCAKKyAgICAyMTMsIDE1NSwgMywgMjM2LCAyMjksIDE5MCwgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA3MywgCisgICAgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIxMSwgMTg3LCAzLCAxMjYsIDE5MCwgMjQ4LCAKKyAgICAyMjgsIDI2LCAxMjYsIDE5MCwgNTYsIDksIDEsIDIxMiwgNTcsIDMsIDEyMCwgMTkwLCA1NywgOSwgMSwgMjEyLCA1NywgMywgCisgICAgMTI2LCAxOTAsIDU2LCA5LCAxLCAyMDcsIDEwLCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjYsIAorICAgIDE5MCwgNTYsIDksIDEsIDI0MCwgMTgxLCAyMzcsIDEzNCwgOSwgMSwgMjM3LCAxMzUsIDMsIDczLCAyMjEsIDU2LCA1NywgOSwgCisgICAgMSwgMjM3LCAxMzUsIDMsIDczLCA1NywgOSwgMSwgMjAzLCA1MiwgOSwgMSwgMjM3LCAxMzUsIDMsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMSwgMjE2LCA1MiwgOSwgMSwgMjE0LCAxNTMsIDMsIDczLCA1NiwgOSwgMSwgMjE0LCAxNTMsIDMsIDEyNiwgMTkwLCAKKyAgICA1NiwgOSwgMSwgMjI2LCAyNTIsIDksIDEsIDIwNywgMTgzLCAyMjcsIDg2LCA5LCAxLCAyMjcsIDg3LCAzLCAyMTMsIDI2LCAKKyAgICA5LCAxLCAyMjcsIDg3LCAzLCA3MywgNTYsIDksIDEsIDIxOSwgMjU1LCA5LCAxLCAyMjcsIDg3LCAzLCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDEsIDIzNiwgNzYsIDksIDEsIDIzNiwgNzcsIDMsIDIxMywgMjYsIDksIDEsIDIxOSwgMTc2LCA5LCAxLCAyMzYsIDc3LCAKKyAgICAzLCAxMjAsIDE5MCwgNTcsIDksIDEsIDIzNSwgMzcsIDksIDEsIDIzNiwgNzcsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjI1LCA5MiwgMywgNCwgMjAzLCAxNjgsIDksIDEsIDIyNSwgOTIsIDMsIDczLCA1NiwgOSwgMSwgMjI1LCA5MiwgMywgMTI2LCAKKyAgICAxOTAsIDU2LCA5LCAxLCAyMjUsIDkyLCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIxOCwgMjI4LCAzLCA3MywgNTcsIDksIDEsIAorICAgIDIxOCwgMjI4LCAyMzUsIDE2NSwgOSwgMSwgMjEzLCA0LCA5LCAxLCAyMTgsIDIyOCwgMywgMjEzLCAyNiwgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA3LCA5LCAxLCAyMDYsIDIwNiwgMywgNzMsIAorICAgIDU2LCA5LCAxLCAyMzQsIDExNiwgMywgOTAsIDU2LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTMsIDksIDEsIDIzNCwgMTE2LCAKKyAgICAyMzUsIDExNCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyMDYsIDE4NCwgMjIyLCAxNTcsIDIzNSwgMTEzLCA5LCAxLCAyMDEsIAorICAgIDczLCAzLCAyMTMsIDI2LCA5LCAxLCAyMjYsIDEzOSwgMjE3LCAxMjEsIDksIDEsIDIxNywgMTIxLCA5LCAxLCA2NiwgOSwgMSwgCisgICAgMTk5LCAyMTEsIDksIDEsIDIyNiwgMTM5LCAxOTksIDIxMSwgOSwgMSwgMjAxLCA3MywgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMDMsIDU5LCA5LCAxLCAyMzcsIDE2MiwgMjAwLCA0NiwgOSwgMSwgOTAsIDMsIDIwNywgNiwgOSwgMSwgOTAsIDMsIDQsIAorICAgIDIwMywgMTY4LCA5LCAxLCAyMDEsIDczLCAzLCA3MywgNTYsIDksIDEsIDcyLCA5LCAxLCA5MCwgMywgMTI2LCAxOTAsIDU3LCAKKyAgICA5LCAxLCA5MCwgMjQ5LCA2OSwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMjM2LCAxODMsIDIwOCwgCisgICAgNzYsIDksIDEsIDI1MSwgMjIxLCA5LCA0LCAxMjIsIDMzLCAyMTIsIDU3LCAzLCAyMjUsIDkyLCAzLCAxNDAsIDIyMiwgMTg3LCAKKyAgICA5LCA0LCAxMjIsIDMzLCAyMTQsIDE1MywgMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4NywgOSwgNCwgMTIyLCA4NCwgODIsIAorICAgIDE5LCA5LCA0LCAxMjIsIDIyNSwgOTIsIDI1MSwgMTQyLCA5LCA0LCAxMjIsIDIyNywgMjI0LCA5LCA0LCAxMjIsIDEyNiwgCisgICAgMjQwLCAxODAsIDksIDQsIDEyMiwgMjExLCAxODYsIDksIDIzOCwgMTcxLCA3NiwgMjUwLCAxMTEsIDksIDIwOCwgMTA1LCAKKyAgICA3NiwgMjEyLCAxNzMsIDIzOCwgMjEwLCAyMzQsIDQyLCA5LCA0LCAxMjIsIDIxMiwgMjE5LCAxOTksIDgxLCA5LCA0LCAxMjIsIAorICAgIDIwMywgMjIzLCAyMTMsIDE3NCwgMTk5LCA4MSwgOSwgNCwgMTIyLCAyNDAsIDE4MSwgMjM0LCAxMzcsIDc2LCAyMjYsIDIwMywgCisgICAgOSwgNCwgMTIyLCA4NCwgNjUsIDE5LCA5LCA0LCAxMjgsIDIxMSwgMTg2LCA5LCA0LCAxMjIsIDIyMiwgMjIzLCA5LCA0LCAKKyAgICAyMDEsIDcyLCA5LCA0LCAyMDAsIDQ2LCA5LCA0LCAxMjIsIDIwMCwgNDYsIDksIDQsIDEyMiwgMjE4LCAyMjcsIDksIDIxNSwgCisgICAgMTM0LCA3NiwgMjEyLCA0MiwgOSwgMjM4LCAxODEsIDI0NywgNTYsIDEyOCwgMjA4LCA3NiwgOSwgMjM4LCAxODEsIDI0NywgCisgICAgNTYsIDEyMiwgMjA4LCA3NiwgOSwgMjEyLCAyMTksIDEyMiwgMjA4LCA3NywgMywgMjM3LCA5NCwgMjQ3LCA1NSwgOSwgNCwgCisgICAgMTI4LCAyMjIsIDYxLCA5LCAxLCAyNDIsIDMwLCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgOSwgMSwgMjEzLCAxNTUsIDMsIAorICAgIDIyOCwgNTAsIDIwMywgMTY4LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE5OSwgODEsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgCisgICAgMTAyLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEwNSwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxNDcsIDIzOCwgMzMsIAorICAgIDI1MCwgMjQ4LCAxNywgMTQ5LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE2NCwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAKKyAgICAxODcsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMjEwLCAxMzUsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTkyLCAyMzgsIAorICAgIDMzLCAyNTAsIDI0OCwgMTcsIDIxOSwgMTEzLCA5LCAxLCAyMTAsIDYyLCAzLCA3MywgNTcsIDksIDEsIDI0MiwgNTMsIDMsIAorICAgIDczLCA1NywgOSwgMSwgMjM1LCAxOTUsIDMsIDczLCA1NywgOSwgMiwgMjA5LCAxNDIsIDI1MSwgODksIDksIDIsIDIwOSwgCisgICAgMTQyLCAyMTUsIDYzLCAyMjIsIDQwLCA5LCAxLCAyMzQsIDExNiwgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDIwNywgMTAzLCAKKyAgICAyMzgsIDE3MSwgNzYsIDIxNiwgMTI3LCAyMDcsIDEwMywgMjA3LCAyMDksIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDcsIDEwMywgCisgICAgMjA4LCA2LCAyMzYsIDE4MywgMjA4LCA3NiwgMjA3LCAxMDMsIDIwNywgMjA5LCAyNDYsIDc5LCAyMDcsIDEwMywgMjA4LCA2LCAKKyAgICAyNDYsIDc5LCAyMDcsIDEwMywgMjMzLCAxNzcsIDI0NiwgNzksIDIwNywgMTAzLCAyNDYsIDgwLCAyMDksIDg2LCAyMjUsIAorICAgIDI4LCAyMDcsIDEwMywgMjQ2LCA4MCwgMjA5LCA4NiwgMjEzLCA0NiwgMjA3LCAxMDMsIDIwNywgMjA5LCAyNDYsIDgwLCAKKyAgICAyMDksIDg2LCAyMjUsIDI4LCAyMDcsIDEwMywgMjA4LCA2LCAyNDYsIDgwLCAyMDksIDg2LCAyMTMsIDQ2LCAyMDcsIDEwMywgCisgICAgMjQzLCAzNiwgMjA3LCAxMDMsIDIzNCwgMTYzLCAyMTcsIDE0MCwgMjA3LCAxMDMsIDIzNCwgMTYzLCAyMjIsIDE3LCAyMDcsIAorICAgIDEwMywgMjM0LCAxNjMsIDI1MCwgMTY3LCAyMDcsIDEwMywgMjUyLCAzLCA4MSwgMjA3LCAxMDMsIDEsIDI1MSwgMTQ3LCAKKyAgICAyMDcsIDEwMywgMSwgMjA3LCAyMTMsIDI1MSwgMTQ3LCAyMDcsIDEwMywgMSwgMjQ4LCAyMDcsIDIwNywgMTAzLCAxLCAyMzYsIAorICAgIDY2LCAyMDcsIDEwMywgMSwgMjM2LCA2NywgMjM2LCA0NCwgMjA3LCAxMDMsIDEsIDI0MiwgMjYsIDIwNywgMTAzLCAxLCAKKyAgICAyNDAsIDE4MSwgMjQyLCAyNywgMjEzLCAyMCwgMjA3LCAxMDMsIDEsIDIzNCwgMTM5LCAyMDcsIDEwMywgMSwgMjAxLCA3MiwgCisgICAgMjA3LCAxMDMsIDEsIDE5OSwgMTA1LCAyMDcsIDEwMywgMSwgMjM0LCA5MSwgMjA3LCAxMDMsIDEsIDIwNiwgMTQyLCAyMDcsIAorICAgIDEwMywgMSwgMjA2LCAxNDMsIDIzNiwgNDQsIDIwNywgMTAzLCAxLCAxOTksIDE5OCwgMjA3LCAxMDMsIDEsIDE5OSwgMTk5LCAKKyAgICAyMzQsIDEzOSwgMjA3LCAxMDMsIDEsIDIyNywgNTcsIDIwNywgMTAzLCAxLCAyMjUsIDkwLCAyMDcsIDEwMywgMSwgMjIxLCAKKyAgICAxNjYsIDIwNywgMTAzLCAxLCAyMTgsIDg5LCAyMDcsIDEwMywgMSwgMjEwLCAxNjAsIDIwNywgMTAzLCAxLCA0NywgMjEwLCAKKyAgICAxNjAsIDIwNywgMTAzLCAxLCA3MiwgMjA3LCAxMDMsIDEsIDIxNiwgNzMsIDIwNywgMTAzLCAxLCAyMTMsIDEwNSwgMjE2LCAKKyAgICA3MywgMjA3LCAxMDMsIDEsIDIxMiwgNTQsIDIwNywgMTAzLCAxLCAyMTQsIDE0NiwgMjA3LCAxMDMsIDEsIDIxMywgMjAsIAorICAgIDIwNywgMTAzLCAxLCAyMTAsIDIxLCAyMDcsIDEwMywgMSwgMjA2LCAyMTUsIDIwNywgMTAzLCAxLCAyMTYsIDEyLCAyNDgsIAorICAgIDE5NCwgMjA3LCAxMDMsIDEsIDIxNiwgMTIsIDIzNSwgMTkyLCAyMDcsIDEwMywgMSwgMjE2LCAxMiwgMjQxLCA5NSwgMjA3LCAKKyAgICAxMDMsIDIxNCwgMjI1LCA1NiwgMjA3LCAxMDMsIDIxNCwgMjI1LCA1NywgMjA3LCAxMDMsIDIxNCwgMjI1LCAyMzksIDE3OSwgCisgICAgMjA3LCAxMDMsIDE5OSwgOCwgNTYsIDIwNywgMTAzLCAxOTksIDgsIDU3LCAyMDcsIDEwMywgMTk5LCA4LCAyMzksIDE3OSwgCisgICAgMjA3LCAxMDMsIDIxMywgMTkzLCA1NiwgMjA3LCAxMDMsIDIxMywgMTkzLCA1NywgMjA3LCAxMDMsIDIzOSwgMTgwLCAxOTksIAorICAgIDE1LCAyMzMsIDE3NiwgMjA3LCAxMDMsIDIzOSwgMTgwLCAxOTksIDE1LCAyNTEsIDY0LCAyMDcsIDEwMywgMjM0LCAxNDQsIAorICAgIDU2LCAyMDcsIDEwMywgMjM0LCAxNDQsIDU3LCAyMDcsIDEwMywgMjM0LCAxNDMsIDIzOSwgMTc5LCAyMDcsIDEwMywgMjM4LCAKKyAgICA5OCwgNTYsIDIwNywgMTAzLCAyMzgsIDk4LCA1NywgMjA3LCAxMDMsIDIxMiwgMTM4LCAyMDcsIDEwMywgMjM3LCAxMjgsIAorICAgIDI0MCwgMTgyLCAyMDcsIDEwMywgMjE0LCA1NywgMjA3LCAxMDMsIDIxMiwgMTY3LCAyMDcsIDEwMywgMTIwLCA4MywgMTkwLCAKKyAgICA1NiwgMjA3LCAxMDMsIDEyMCwgODMsIDE5MCwgNTcsIDIwNywgMTAzLCAxMjYsIDE5MCwgNTYsIDIwNywgMTAzLCAxMjYsIAorICAgIDE5MCwgNTcsIDIwNywgMTAzLCAyMTcsIDEzOCwgMjI0LCAxNzcsIDU2LCAyMDcsIDEwMywgMjE3LCAxMzgsIDIyNCwgMTc3LCAKKyAgICA1NywgMjA3LCAxMDMsIDIyMCwgMjQ1LCAyMDcsIDEwMywgMjQ5LCA2OCwgMjA3LCAxMDMsIDEsIDIwOSwgMjAsIDE5OSwgNzUsIAorICAgIDIwNywgMTAzLCAxLCAyMDksIDIwLCAyMjYsIDE5NiwgMjA3LCAxMDMsIDEsIDIwOSwgMjAsIDIzNywgMTQ3LCA5LCAxLCAKKyAgICAyNDgsIDI0MSwgMywgMTI2LCAxOTAsIDIzMywgMTI2LCA1NywgOSwgMSwgMjQ4LCAyNDEsIDMsIDczLCAyNDgsIDIyOCwgMjYsIAorICAgIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjQ4LCAyNDEsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCAyNDgsIAorICAgIDI0MSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgMjQ4LCAyMjgsIDI2LCAxMjAsIDE5MCwgNTYsIDksIDEsIDI0OCwgCisgICAgMjQxLCAzLCAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDksIDEsIDI0OCwgMjQxLCAzLCAyMjgsIDUwLCA0LCAKKyAgICAyMDMsIDE2OSwgNTcsIDksIDEsIDI0OCwgMjQxLCAzLCA0LCAyMDMsIDE2OCwgOSwgMSwgMTU1LCAzLCAxMjAsIDE5MCwgNTYsIAorICAgIDksIDEsIDE1NSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgNTcsIDksIDEsIDI0MiwgMzAsIDMsIDEyMCwgMTkwLCAKKyAgICAyMDIsIDI0OCwgMjQ4LCAyMjgsIDI2LCA0LCAyMDcsIDksIDksIDEsIDI0MiwgMzAsIDMsIDIyOCwgNTAsIDQsIDIwMywgCisgICAgMTY5LCA1NywgOSwgMSwgMjEzLCAxNTUsIDMsIDk3LCA5LCAxLCAyMTEsIDE4NywgMywgMjM2LCAyMjksIDE5MCwgNTYsIDksIAorICAgIDEsIDI1MSwgMTcyLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTkxLCAKKyAgICA1NiwgOSwgMSwgMjUxLCAxNzIsIDMsIDEyMCwgMTkwLCAyMDIsIDI0OCwgNTYsIDksIDEsIDIzNywgMTM1LCAzLCAxMjAsIAorICAgIDE5MCwgNTcsIDksIDEsIDIzNywgMTM1LCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgMjI2LCAyNTMsIAorICAgIDMsIDczLCA1NiwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyNiwgMTkwLCAKKyAgICAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCA4NCwgMywgNzMsIDU2LCA5LCAxLCA4NCwgMywgNzMsIDU3LCA5LCAxLCAyMTgsIAorICAgIDIyOCwgMywgMTIwLCAxOTAsIDU3LCA5LCAxLCAyMTgsIDIyOCwgMywgNCwgMjA3LCA5LCA5LCAxLCAyMTgsIDIyOCwgMywgNCwgCisgICAgMjAzLCAxNjgsIDksIDEsIDIyNSwgOTIsIDMsIDE0OCwgOSwgMSwgMjEzLCAxNTUsIDMsIDEyMCwgMTkwLCAyMDIsIDI0OCwgCisgICAgNTYsIDksIDEsIDIxMywgMTU1LCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCAxMjAsIDE5MCwgMjAyLCAKKyAgICAyNDgsIDU2LCA5LCAxLCAxNTUsIDMsIDQsIDksIDEsIDIwNywgMTAsIDU3LCA5LCAxLCAxNTUsIDMsIDQsIDksIDEsIDIwNywgCisgICAgMTAsIDI2LCAxMjAsIDI0MCwgMTgwLCA5LCAxLCAyMTEsIDE4NywgMywgNCwgOSwgMSwgMjA3LCAxMCwgMjYsIDEyMCwgMjQwLCAKKyAgICAxODAsIDksIDEsIDIxMywgMTU1LCAzLCA0LCA5LCAxLCAyMDcsIDEwLCAyNiwgMTIwLCAyNDAsIDE4MCwgOSwgMSwgMTU1LCAKKyAgICAzLCA0LCA5LCAxLCAyMDcsIDEwLCA1NiwgOSwgMSwgMTQwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgNTYsIDksIAorICAgIDEsIDE0MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjYsIDU2LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIzOCwgCisgICAgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIAorICAgIDEyNiwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAyMzYsIDIyOSwgNTcsIDksIAorICAgIDEsIDIwMSwgNzMsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCA1NiwgOSwgMSwgMjAxLCA3MywgMywgMjM4LCAzMywgCisgICAgMjUwLCAyNDgsIDE3LCAxMjYsIDU2LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjAsIAorICAgIDU2LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjYsIDU2LCA5LCAxLCAxNTUsIDMsIAorICAgIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMjM2LCAyMjksIDU3LCA5LCAxLCAyMTEsIDE4NywgMywgMjM4LCAzMywgMjUwLCAKKyAgICAyNDgsIDE3LCAyMzYsIDIyOSwgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgOSwgMSwgMjI3LCAKKyAgICA4NywgMywgMTIwLCAxOTAsIDU2LCAyMDYsIDExOSwgMSwgMjM0LCAyMzMsIDIwNiwgMTE5LCAxLCAyMTAsIDcxLCAyMDYsIAorICAgIDExOSwgMSwgMjE4LCAyMjYsIDIwNiwgMTE5LCAxLCAyMTMsIDI0OCwgMjA2LCAxMTksIDEsIDI0OSwgMTM0LCAyMDYsIDExOSwgCisgICAgMSwgMjI0LCAyMjAsIDIwNiwgMTE5LCAxLCAyMjcsIDEwMSwgMjA2LCAxMTksIDEsIDI1MSwgMTI5LCAyMDYsIDExOSwgMSwgCisgICAgMjAzLCA4OCwgMjA2LCAxMTksIDEsIDIyMiwgNjAsIDIwNiwgMTE5LCAxLCAyMzcsIDE5MywgMjA2LCAxMTksIDEsIDI0MSwgCisgICAgOTgsIDIwNiwgMTE5LCAxLCAyMDYsIDEyMSwgMjA2LCAxMTksIDEsIDIyNSwgMTcyLCAyMDYsIDExOSwgMSwgMjM2LCA4NSwgCisgICAgMjA2LCAxMTksIDEsIDIzNSwgMTE5LCAyMDYsIDExOSwgMSwgMjExLCAxODUsIDIwNiwgMTE5LCAxLCAyNDEsIDIzNiwgMjA2LCAKKyAgICAxMTksIDEsIDE5OSwgOTUsIDIwNiwgMTE5LCAxLCAyMDYsIDIxNiwgMjA2LCAxMTksIDEsIDIwMCwgMTA5LCAyMDYsIDExOSwgCisgICAgMSwgMjE2LCA4NiwgMjA2LCAxMTksIDEsIDIyNywgMjMyLCAyMDYsIDExOSwgMSwgMjQ3LCAxMSwgMjA2LCAxMTksIDEsIAorICAgIDIwNCwgMjUyLCAyMDYsIDExOSwgMSwgMjM0LCA4MywgMjA2LCAxMTksIDEsIDIyNiwgMjA2LCAyMDYsIDExOSwgMSwgMjA2LCAKKyAgICAxMjAsIDIwNiwgMTE5LCAxLCAxOTksIDExMiwgMjA2LCAxMTksIDEsIDIxMCwgNjAsIDIwNiwgMTE5LCAxLCAyMTIsIDYwLCAKKyAgICAyMDYsIDExOSwgMSwgMjQyLCA1NiwgMjA2LCAxMTksIDEsIDEzOCwgMjA2LCAxMTksIDEsIDE5OSwgMTQsIDIwNiwgMTE5LCAKKyAgICAxLCAyNTEsIDE2OCwgMjA2LCAxMTksIDEsIDIzNSwgMTkzLCAyMDYsIDExOSwgMSwgMjE0LCAxNTYsIDIwNiwgMTE5LCAxLCAKKyAgICAyMDEsIDExMiwgMjA2LCAxMTksIDI1MiwgNSwgMjA2LCAxMTksIDI1MiwgMTAzLCAyMDYsIDExOSwgMjMyLCAyMzQsIDIwNiwgCisgICAgMTE5LCAyMzgsIDI1NCwgMjA2LCAxMTksIDIwNCwgMzksIDIwNiwgMTE5LCAyMTcsIDYyLCAyMDYsIDExOSwgMjM5LCA4LCAKKyAgICAyMDYsIDExOSwgMjM4LCAyNCwgMjA2LCAxMTksIDIxNywgMTM3LCAyMDYsIDExOSwgMjE3LCAxNDUsIDIwNiwgMTE5LCAyMDcsIAorICAgIDIzNiwgMjA2LCAxMTksIDEsIDIyMCwgMTU3LCAyMTksIDQ5LCAxNywgMTk5LCA4MSwgMjE5LCA0OSwgMTcsIDEwMiwgMjE5LCAKKyAgICA0OSwgMTcsIDEwNSwgMjE5LCA0OSwgMTcsIDE0NywgMjE5LCA0OSwgMTcsIDE0OSwgMjE5LCA0OSwgMTcsIDE2NCwgMjE5LCAKKyAgICA0OSwgMTcsIDE4NywgMjE5LCA0OSwgMTcsIDIxMCwgMTM1LCAyMTksIDQ5LCAxNywgMTkyLCAyMTksIDQ5LCAxNywgMjE5LCAKKyAgICAxMTMsIDIxOSwgNDksIDEsIDYyLCAyMTksIDQ5LCAxLCAyMzgsIDI1NSwgMjE5LCA0OSwgMSwgNzAsIDIxOSwgNDksIDEsIAorICAgIDcyLCAyMTksIDQ5LCAxLCA2NiwgMjE5LCA0OSwgMSwgMjE3LCA2MywgMjE5LCA0OSwgMSwgNzQsIDIxOSwgNDksIDEsIDI0MiwgCisgICAgNDQsIDIxOSwgNDksIDEsIDIyMCwgMjE0LCAyMTksIDQ5LCAxLCAyNDksIDEzNiwgMjE5LCA0OSwgMSwgMTcyLCAyMTksIDQ5LCAKKyAgICAxLCAyMDcsIDM2LCAyMTksIDQ5LCAxLCAyMjcsIDI0OCwgMjE5LCA0OSwgMSwgMjQ3LCAzNywgMjE5LCA0OSwgMSwgMjQyLCAKKyAgICA1OCwgMjE5LCA0OSwgMSwgMjEzLCAyNTIsIDIxOSwgNDksIDEsIDIxMiwgMjE1LCAyMTksIDQ5LCAxLCAyMTIsIDY0LCAyMTksIAorICAgIDQ5LCAxLCAyMzYsIDMyLCAyMTksIDQ5LCAxLCAyMzcsIDE5NSwgMjE5LCA0OSwgMSwgMTYxLCAyMTksIDQ5LCAxLCAxOTQsIAorICAgIDIxOSwgNDksIDEsIDIyMCwgMTYyLCAyMDAsIDI1MiwgMjE5LCA0OSwgMSwgMTc4LCAyMTksIDQ5LCAxLCAyMTgsIDYwLCAKKyAgICAyMTksIDQ5LCAxLCAxODgsIDIxOSwgNDksIDEsIDE0NCwgMjE5LCA0OSwgMSwgMjAxLCAxMTQsIDIxOSwgNDksIDEsIDE4MywgCisgICAgMjE5LCA0OSwgMSwgMjE4LCA2MSwgMjAwLCAyNTIsIDIxOSwgNDksIDEsIDIyNywgMTU4LCAyMjcsIDI0OCwgMjE5LCA0OSwgCisgICAgMSwgMjI3LCAxNTgsIDI0NywgMzcsIDIxOSwgNDksIDEsIDIyNywgMTU4LCAyMTMsIDI1MiwgMjE5LCA0OSwgMzgsIDIwOSwgCisgICAgMjUwLCAxMjIsIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMjA5LCAyNTAsIDEyOCwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAKKyAgICAyMDksIDI1MCwgMjEzLCAxOSwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAxNjgsIDI0MSwgMTE4LCAyMDUsIDE3NCwgMjE5LCAKKyAgICA0OSwgMzgsIDE2OCwgMTIyLCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIDE2OCwgMTI4LCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIAorICAgIDE2OCwgMjEzLCAxOSwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAyMjAsIDEyMiwgODEsIDIxOSwgNDksIDM4LCA1MywgNzMsIAorICAgIDU2LCAyMTksIDQ5LCAxMjIsIDE1MCwgMjUxLCAxMywgMjE5LCA0OSwgMTI4LCAxNTAsIDI1MSwgMTMsIDIxOSwgNDksIDE2LCAKKyAgICAyMTcsIDY0LCAyNDEsIDEzMiwgMjE5LCA0OSwgMTYsIDIzNiwgMzEsIDIxOSwgNDksIDI0NiwgNzAsIDIxOSwgNDksIDIzOCwgCisgICAgNDMsIDgxLCAyMTksIDQ5LCAyMjUsIDE0NywgMjEyLCAyMiwgMSwgMjUxLCAxNDksIDIxMiwgMjIsIDEsIDI0OCwgMTUyLCAKKyAgICAyMTIsIDIyLCAxLCAyMzYsIDY1LCAyMTIsIDIyLCAxLCAyNDIsIDI4LCAyMTIsIDIyLCAxLCAyMjgsIDMsIDIxMiwgMjIsIDEsIAorICAgIDI0OSwgMTM0LCAyMTIsIDIyLCAxLCAxOTksIDg0LCAyMTIsIDIyLCAxLCAyMjgsIDEyLCAyMTIsIDIyLCAxLCAyMDUsIDIxMywgCisgICAgMjEyLCAyMiwgMSwgMTk5LCAxODAsIDIxMiwgMjIsIDEsIDIyNywgMTAyLCAyMTIsIDIyLCAxLCAyMjUsIDE2OSwgMjEyLCAKKyAgICAyMiwgMSwgMjIxLCAxNjYsIDIxMiwgMjIsIDEsIDIxOCwgODksIDIxMiwgMjIsIDEsIDIwOSwgMTQwLCAyMTIsIDIyLCAxLCAKKyAgICAyMjgsIDExNywgMjEyLCAyMiwgMSwgMjM3LCAxMTIsIDIxMiwgMjIsIDEsIDIwNSwgMzAsIDIxMiwgMjIsIDEsIDIxNCwgNzYsIAorICAgIDIxMiwgMjIsIDEsIDIxMywgMjAsIDIxMiwgMjIsIDEsIDIxMCwgODksIDIxMiwgMjIsIDEsIDIwNywgMzEsIDIxMiwgMjIsIAorICAgIDEzNCwgMjI4LCAxMTcsIDIxMiwgMjIsIDEzNCwgMjI4LCAxMTYsIDIxMiwgMjIsIDEzNCwgMjE3LCAxMzMsIDIxMiwgMjIsIAorICAgIDEzNCwgMjQyLCA0MiwgMjEyLCAyMiwgNjcsIDEsIDIzOCwgMTI5LCAxOTksIDE4MCwgMjEyLCAyMiwgMTM0LCAyMzgsIDEyOSwgCisgICAgMTk5LCAxODAsIDIxMiwgMjIsIDIyLCAyLCAxNjgsIDcyLCAyMTIsIDIyLCAyMiwgMiwgNzIsIDIxMiwgMjIsIDIyLCAyLCAKKyAgICAyMTYsIDI0MCwgMjUyLCAxMzgsIDIxMiwgMjIsIDIyLCAyLCAxNjgsIDI1MiwgMTM4LCAyMTIsIDIyLCAyMiwgMiwgMjUyLCAKKyAgICAxMzgsIDIxMiwgMjIsIDIyLCAyLCAyMTYsIDI0MCwgNjIsIDIxMiwgMjIsIDIyLCAyLCAxNjgsIDYyLCAyMTIsIDIyLCAyMiwgCisgICAgMiwgNjIsIDIxMiwgMjIsIDY3LCAxLCAyMDksIDI1MCwgNjIsIDIxMiwgMjIsIDIyLCAyLCAyMDksIDI1MCwgNjIsIDIxMiwgCisgICAgMjIsIDIyLCAyLCAxNjgsIDY2LCAyMTIsIDIyLCAyMiwgMiwgNjYsIDIxMiwgMjIsIDY3LCAxLCA3MCwgMjEyLCAyMiwgMjIsIAorICAgIDIsIDE2OCwgNzAsIDIxMiwgMjIsIDIyLCAyLCA3MCwgMjEyLCAyMiwgMjIsIDIsIDc0LCAyMTIsIDIyLCAyMiwgMiwgMjA3LCAKKyAgICAyMzYsIDIxMiwgMjIsIDEzNCwgMjIwLCAxNywgMjEyLCAyMiwgMjE0LCAyMTIsIDIyMCwgMTcsIDIxMiwgMjIsIDIxNCwgCisgICAgMjEyLCAyNTEsIDE5NSwgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MSwgNzUsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNDksIDQ4LCAKKyAgICAyMTIsIDIyLCAyMTQsIDIxMiwgMjUwLCAxNDksIDIxMiwgMjIsIDIxNCwgMjEyLCAyMTAsIDksIDIxMiwgMjIsIDI1MiwgMywgCisgICAgODEsIDIxMiwgMjIsIDIxNCwgMjEyLCAyMjIsIDUwLCAyMTQsIDExMiwgMjEyLCAyMiwgMjE0LCAyMTIsIDE5OSwgMjIsIAorICAgIDIxMiwgMjIsIDIxNCwgMjEyLCAyMTQsIDExMiwgMjEyLCAyMiwgMjE0LCAyMTIsIDE5OSwgMTExLCAyMTIsIDIyLCAyMTQsIAorICAgIDIxMiwgMjA0LCAxODEsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNTAsIDIxOSwgMjEyLCAyMiwgMjE0LCAyMTIsIDIwOSwgMjQsIAorICAgIDIyMiwgMTMzLCAyMTIsIDIyLCAyMTQsIDIxMiwgMjUxLCA1OSwgMjIyLCAxNzYsIDEsIDIzNCwgMjEwLCAyMjIsIDE3NiwgMSwgCisgICAgMjUyLCA4OSwgMjIyLCAxNzYsIDEsIDI1MSwgMTkzLCAyMjIsIDE3NiwgMSwgMjUxLCAyMzUsIDIyMiwgMTc2LCAxLCAyNTEsIAorICAgIDE4NSwgMjIyLCAxNzYsIDEsIDIwMywgMTg4LCAyMjIsIDE3NiwgMSwgMjUwLCAxMDUsIDIyMiwgMTc2LCAxLCAyMjgsIDEyLCAKKyAgICAyMjIsIDE3NiwgMSwgMjUwLCAxNDYsIDIyMiwgMTc2LCAxLCAyNTEsIDE1NCwgMjIyLCAxNzYsIDEsIDI1MSwgMTU5LCAyMjIsIAorICAgIDE3NiwgMSwgMjUxLCAxNTEsIDIyMiwgMTc2LCAxLCAyNTEsIDEwMSwgMjIyLCAxNzYsIDEsIDI1MSwgODUsIDIyMiwgMTc2LCAKKyAgICAxLCAyNTAsIDE4OCwgMjIyLCAxNzYsIDEsIDIyOCwgMTE3LCAyMjIsIDE3NiwgMSwgMjUxLCAyOCwgMjIyLCAxNzYsIDEsIAorICAgIDI1MCwgMTU3LCAyMjIsIDE3NiwgMSwgMjUxLCAxLCAyMjIsIDE3NiwgMSwgMjUwLCAyNTMsIDIyMiwgMTc2LCAxLCAyNTAsIAorICAgIDE4MSwgMjIyLCAxNzYsIDEsIDI1MCwgMTU1LCAyMjIsIDE3NiwgMSwgMjM5LCAxMTIsIDIyMiwgMTc2LCAxLCAyMjcsIDk0LCAKKyAgICAyMjIsIDE3NiwgMSwgMjUxLCAxNzEsIDIyMiwgMTc2LCAyNTEsIDE5OSwgODEsIDIyMiwgMTc2LCAyMDIsIDE5MSwgODEsIAorICAgIDIyMiwgMTc2LCAyMzYsIDMsIDgxLCAyMjIsIDE3NiwgMjE0LCAyMTEsIDksIDEsIDI0OCwgMjQxLCAzLCA0LCAyMDMsIDE2OSwgCisgICAgNTcsIDksIDEsIDI0OCwgMjQxLCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDE5MywgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMDcsIDEwLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDIzNywgMTM1LCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAxMjYsIDE5MCwgCisgICAgNTYsIDksIDEsIDIxNCwgMTUzLCAzLCA3MywgNTcsIDksIDEsIDIyNSwgOTIsIDMsIDUzLCAxNDgsIDksIDEsIDg0LCAzLCAKKyAgICAxMjYsIDE5MCwgNTYsIDksIDEsIDkwLCAzLCAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCAyMzQsIDIwNCwgNTYsIDksIDEsIAorICAgIDkwLCAzLCAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDksIDEsIDIxMywgMTU1LCAzLCAyMjQsIDc0LCA5LCAxLCAKKyAgICAyMDEsIDczLCAzLCA3MywgMjAxLCA0LCA5LCAxLCAyMTIsIDI0NSwgMjAwLCA0NiwgOSwgMSwgMTI4LCAyNTEsIDE0MiwgOSwgCisgICAgMSwgMjQyLCAzMCwgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMTIsIDU3LCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIzNiwgCisgICAgNzcsIDMsIDIyOCwgNTAsIDk3LCA5LCAxLCAyMDgsIDY4LCAyMDEsIDcyLCA5LCAxLCAxOTksIDEwNiwgMywgMjI4LCA1MCwgCisgICAgMjAzLCAxNjksIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMjcsIDg3LCAzLCA3MywgNTcsIAorICAgIDksIDEsIDI0OCwgMjQxLCAzLCA0LCA4NCwgNTYsIDksIDEsIDIxNiwgNTUsIDMsIDQsIDg0LCA1NiwgOSwgMSwgMjA2LCAKKyAgICAxODQsIDMsIDQsIDIwNiwgMTg0LCA1NiwgOSwgMSwgMjEzLCAxNTUsIDMsIDQsIDIxOCwgMjI4LCA1NiwgOSwgMSwgOTAsIDMsIAorICAgIDEyMCwgMTkwLCAyNDgsIDIyOCwgMjYsIDQsIDIxOCwgMjI4LCA1NiwgOSwgMSwgMjUxLCAxOTYsIDIzNywgMTM0LCA5LCAxLCAKKyAgICAyNTEsIDE5NiwgMjE0LCAxNTIsIDksIDEsIDI1MSwgMTk2LCAyMTgsIDIyNywgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjUwLCAKKyAgICAyNTAsIDksIDQsIDEyMiwgMjEyLCA1NiwgOSwgNCwgMTIyLCAyNTEsIDE3MSwgOSwgNCwgMTIyLCAyMTQsIDE1MiwgOSwgNCwgCisgICAgMTIyLCAyMTgsIDIyOCwgMywgMjI3LCAzNiwgOSwgNCwgMTI4LCAyMTgsIDIyOCwgMywgMjI3LCAzNiwgOSwgNCwgMTIyLCAKKyAgICAyMDAsIDIzOCwgMjUwLCAxNTQsIDksIDQsIDEyMiwgMjAwLCAyMzgsIDI1MCwgMTg3LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAKKyAgICAyNTEsIDg0LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyMTIsIDM3LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyMTQsIDExNiwgOSwgCisgICAgNCwgMTIyLCAyMDAsIDIzOCwgMjAxLCA5NSwgOSwgNCwgMTIyLCAyMzYsIDI1MywgMjIyLCAxNDUsIDksIDQsIDEyMiwgMiwgCisgICAgMjEyLCA1MiwgOSwgMjQwLCAyNTEsIDIzOCwgMTcxLCA3NiwgMjUwLCAxMTEsIDksIDIwNCwgMTg1LCAyNDIsIDE4LCA1NywgCisgICAgOSwgMjQyLCAxOTYsIDIzNywgMTU4LCA5LCAyNDIsIDE5NiwgMjQyLCAxNywgOSwgMjQyLCAxOTYsIDIyNywgMzYsIDksIAorICAgIDI0MiwgMTk2LCAyMzcsIDE1NiwgOSwgMjQyLCAxOTYsIDI0MiwgMTUsIDksIDI0MiwgMTk2LCAyMjcsIDM0LCA5LCAxNTAsIAorICAgIDExMiwgNzMsIDU2LCA5LCAxNTAsIDEyMCwgMTkwLCA1NiwgOSwgMTUwLCAyMjQsIDc1LCA1NiwgOSwgMTUwLCAxMTIsIDczLCAKKyAgICA1NywgOSwgMTUwLCAxMjAsIDE5MCwgNTcsIDksIDE1MCwgMjI0LCA3NSwgNTcsIDksIDE3NiwgMjM3LCAxNTYsIDksIDE3NiwgCisgICAgMjQyLCAxNSwgOSwgMTc2LCAyMjcsIDM0LCA5LCA0LCAxMjIsIDIwMSwgNzIsIDksIDIzNywgMTU5LCAzLCAyMTMsIDI2LCA5LCAKKyAgICAyMzcsIDE1OSwgMywgNzMsIDU2LCA5LCAyMjcsIDM3LCAzLCA3MywgNTcsIDksIDQ5LCAyNTAsIDIwMywgNTYsIDksIDUxLCAKKyAgICAyNTAsIDIwMywgNTYsIDksIDQ5LCAyNTAsIDIwMywgNTcsIDksIDUxLCAyNTAsIDIwMywgNTcsIDksIDUzLCA1MSwgMjUwLCAKKyAgICAyMDMsIDU2LCA5LCA1MywgNTEsIDI1MCwgMjAzLCA4OCwgMywgMjQwLCAxODIsIDksIDUxLCAyNTAsIDIwMywgODgsIDMsIAorICAgIDI0MCwgMTgyLCA5LCAyNDIsIDE4LCAzLCAyNDAsIDE4MiwgOSwgMTM0LCAyMDksIDE3MywgMjE4LCAyMjgsIDIzNSwgMTY1LCAKKyAgICA5NCwgMiwgMjI4LCA1MCwgMjQ3LCAxNDksIDk0LCAyLCAyNDcsIDE0OSwgOTQsIDIsIDI1MSwgMzMsIDk0LCAyLCAyMDIsIAorICAgIDIwMywgOTQsIDEsIDIwOSwgMjUwLCA2MiwgOTQsIDEsIDYyLCA5NCwgMSwgMjUyLCAxMzgsIDk0LCAxLCA3MCwgOTQsIDEsIAorICAgIDIyOCwgMTUxLCA5NCwgMSwgNjYsIDk0LCAxLCAyMDMsIDE4MiwgOTQsIDEsIDEwOSwgMTQ2LCA5NCwgMSwgMTA5LCAxNTYsIAorICAgIDk0LCAxLCAyNDcsIDE1MiwgNzIsIDk0LCAxLCAyMDksIDI1MCwgNzIsIDk0LCAxLCA3MiwgOTQsIDEsIDI1MSwgMTc2LCA5NCwgCisgICAgMSwgMjQ3LCAxNTIsIDc0LCA5NCwgMSwgMjA5LCAyNTAsIDc0LCA5NCwgMSwgNzQsIDk0LCAxLCAyNTAsIDEzOSwgOTQsIDEsIAorICAgIDE2MSwgOTQsIDEsIDIyNiwgMjA3LCA5NCwgMSwgMjM2LCA4OSwgOTQsIDEsIDIzNSwgMTk5LCA5NCwgMSwgMjE5LCAyNTMsIAorICAgIDk0LCAxLCAyNDcsIDE5MCwgOTQsIDEsIDI0NywgMzcsIDk0LCAxLCAyMjcsIDI0OCwgOTQsIDEsIDIyNywgMjE1LCA5NCwgMSwgCisgICAgMjE4LCA2MCwgOTQsIDEsIDIwNCwgMjUzLCA5NCwgMSwgMjA0LCAyNDEsIDk0LCAxLCAyNDEsIDIyMCwgOTQsIDEsIDI0MSwgCisgICAgMjA0LCA5NCwgMSwgMjE5LCAyMSwgOTQsIDEsIDIwNywgMzYsIDk0LCAxLCAyMDYsIDEyMiwgOTQsIDEsIDI0MiwgNTgsIDk0LCAKKyAgICAxLCAyNDEsIDEwMCwgOTQsIDEsIDE4OCwgOTQsIDEsIDIxOSwgMywgOTQsIDEsIDE3MiwgOTQsIDEsIDIxNSwgMjQ1LCA5NCwgCisgICAgMSwgMjQ5LCAxMzYsIDk0LCAxLCAyNDgsIDIwMCwgOTQsIDEsIDE3OCwgOTQsIDEsIDE4MywgOTQsIDEsIDIxMywgMjUyLCAKKyAgICA5NCwgMSwgMjEyLCAyMTUsIDk0LCAxLCAxOTQsIDk0LCAxLCAyMjQsIDEzOCwgOTQsIDEsIDIyNCwgMTI5LCA5NCwgMSwgCisgICAgMjAzLCA5MCwgOTQsIDEsIDIxMCwgMTE0LCA5NCwgMSwgMjA4LCAxNzksIDk0LCAxLCAyMTIsIDY0LCA5NCwgMSwgMTQ0LCAKKyAgICA5NCwgMjIsIDIsIDIxNywgMTIxLCA5NCwgMjIsIDIsIDIxNywgNjEsIDk0LCAyLCAyMTgsIDEwMCwgOTQsIDIsIDI1MCwgCisgICAgMTIyLCA5NCwgMjIsIDIsIDI1MiwgMTM4LCA5NCwgMjIsIDIsIDcwLCA5NCwgMjIsIDIsIDIyOCwgMTUxLCA5NCwgMjIsIDIsIAorICAgIDY2LCA5NCwgMjIsIDIsIDIwMywgMTgyLCA5NCwgMjIsIDIsIDEwOSwgMTQ2LCA5NCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIAorICAgIDk0LCAyMiwgMiwgMjQ3LCAxNTIsIDcyLCA5NCwgMjIsIDIsIDIwOSwgMjUwLCA3MiwgOTQsIDIyLCAyLCA3MiwgOTQsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgOTQsIDIyLCAyLCAyNDcsIDE1MiwgNzQsIDk0LCAyMiwgMiwgMjA5LCAyNTAsIDc0LCA5NCwgMjIsIDIsIAorICAgIDc0LCA5NCwgMjIsIDIsIDI1MCwgMTM5LCA5NCwgMiwgMjAyLCAyMDgsIDk0LCAyMiwgMiwgMjE1LCA2LCA3MiwgOTQsIDIyLCAKKyAgICAyLCAyNTAsIDExNywgOTQsIDIxNywgODYsIDk0LCAyMDgsIDU3LCAyLCAyMDQsIDMzLCA5NCwgMjA4LCA1NywgMiwgMjUxLCAKKyAgICAzNSwgOTQsIDIzNSwgNzQsIDI1MSwgMjUxLCA5NCwgMjUxLCAyMzksIDI1MSwgMjUxLCA5NCwgMjIsIDIsIDI0NywgMTUyLCAKKyAgICAxNjgsIDcyLCA5NCwgMjIsIDIsIDIwNCwgMzEsIDk0LCAyMiwgMiwgMjAzLCAxODEsIDk0LCAxLCAyMTQsIDE1OSwgOTQsIDEsIAorICAgIDIyNiwgMTg4LCA5NCwgMSwgMjM1LCAxNzQsIDk0LCAxLCAxOTksIDExNCwgOTQsIDEsIDI0MSwgMjA5LCA5NCwgMSwgMjEzLCAKKyAgICA5MywgOTQsIDEsIDIzNywgMTk1LCA5NCwgMSwgMTk5LCAxNjYsIDk0LCAxLCAxMDksIDIxMiwgMjE2LCA5NCwgMSwgMTA5LCAKKyAgICAyMjQsIDEzOSwgOTQsIDIyLCAyLCAxMDksIDE1NiwgOTQsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCA5NCwgMjQyLCAxMCwgOTQsIAorICAgIDUzLCAyNDIsIDEwLCA5NCwgMTcsIDE5OSwgODEsIDk0LCAxNywgMTAyLCA5NCwgMTcsIDEwNSwgOTQsIDE3LCAxNDcsIDk0LCAKKyAgICAxNywgMTQ5LCA5NCwgMTcsIDE2NCwgOTQsIDE3LCAxODcsIDk0LCAxNywgMjEwLCAxMzUsIDk0LCAxNywgMTkyLCA5NCwgMTcsIAorICAgIDIxOSwgMTEzLCA5NCwgMjUyLCAzLCA1NCwgOTQsIDIsIDEyMiwgMjA4LCAyNDMsIDI0MCwgMTgyLCA5NCwgMSwgMjQ3LCAKKyAgICAxNTIsIDYyLCA5NCwgMSwgMjE3LCAxMjEsIDk0LCAxLCAyMTcsIDYxLCA5NCwgMSwgMjUwLCAxMTcsIDk0LCAxLCAyMDQsIAorICAgIDMxLCA5NCwgMSwgMjAzLCAxODEsIDk0LCAxLCAyMjIsIDEzOCwgMjQxLCAyMjAsIDk0LCAxLCAxOTksIDc3LCA5NCwgMSwgCisgICAgODAsIDE4MywgOTQsIDEsIDIzNSwgMjM1LCA5NCwgMSwgMjI3LCAxOTQsIDk0LCAxLCAyMzUsIDEyMywgMjA4LCA3NiwgOTQsIAorICAgIDEsIDI0MSwgMjEwLCA5NCwgMSwgMjQ5LCA0NCwgMTg1LCAyNTEsIDYyLCAxODUsIDIsIDI0NywgMTQ5LCAxODUsIDIsIDI1MSwgCisgICAgMzMsIDE4NSwgMiwgMjAyLCAyMDMsIDE4NSwgMSwgNjIsIDE4NSwgMSwgMjUyLCAxMzgsIDE4NSwgMSwgNzAsIDE4NSwgMSwgCisgICAgMjI4LCAxNTEsIDE4NSwgMSwgNjYsIDE4NSwgMSwgMjAzLCAxODIsIDE4NSwgMSwgMTA5LCAxNDYsIDE4NSwgMSwgMTA5LCAKKyAgICAxNTYsIDE4NSwgMSwgNzIsIDE4NSwgMSwgMjUxLCAxNzYsIDE4NSwgMSwgNzQsIDE4NSwgMSwgMjUwLCAxMzksIDE4NSwgMSwgCisgICAgMTYxLCAxODUsIDEsIDIyNiwgMjA3LCAxODUsIDEsIDIzNiwgODksIDE4NSwgMSwgMjM1LCAxOTksIDE4NSwgMSwgMjE5LCAKKyAgICAyNTMsIDE4NSwgMSwgMjQ3LCAxOTAsIDE4NSwgMSwgMjQ3LCAzNywgMTg1LCAxLCAyMjcsIDI0OCwgMTg1LCAxLCAyMjcsIAorICAgIDIxNSwgMTg1LCAxLCAyMTgsIDYwLCAxODUsIDEsIDIwNCwgMjUzLCAxODUsIDEsIDIwNCwgMjQxLCAxODUsIDEsIDI0MSwgCisgICAgMjIwLCAxODUsIDEsIDI0MSwgMjA0LCAxODUsIDEsIDIxOSwgMjEsIDE4NSwgMSwgMjA3LCAzNiwgMTg1LCAxLCAyMDYsIAorICAgIDEyMiwgMTg1LCAxLCAyNDIsIDU4LCAxODUsIDEsIDI0MSwgMTAwLCAxODUsIDEsIDE4OCwgMTg1LCAxLCAxNzIsIDE4NSwgMSwgCisgICAgMjE1LCAyNDUsIDE4NSwgMSwgMjQ5LCAxMzYsIDE4NSwgMSwgMjQ4LCAyMDAsIDE4NSwgMSwgMTc4LCAxODUsIDEsIDE4MywgCisgICAgMTg1LCAxLCAyMTMsIDI1MiwgMTg1LCAxLCAxOTQsIDE4NSwgMSwgMjEwLCAxMTQsIDE4NSwgMSwgMjA4LCAxNzksIDE4NSwgCisgICAgMSwgMjEyLCA2NCwgMTg1LCAxLCAxNDQsIDE4NSwgMiwgMjE4LCAxMDAsIDE4NSwgMiwgMjUwLCAxMjIsIDE4NSwgMjIsIDIsIAorICAgIDI1MiwgMTM4LCAxODUsIDIyLCAyLCA3MCwgMTg1LCAyMiwgMiwgMjI4LCAxNTEsIDE4NSwgMjIsIDIsIDY2LCAxODUsIDIyLCAKKyAgICAyLCAyMDMsIDE4MiwgMTg1LCAyMiwgMiwgMTA5LCAxNDYsIDE4NSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE4NSwgMjIsIDIsIAorICAgIDcyLCAxODUsIDIyLCAyLCAyNTEsIDE3NiwgMTg1LCAyMiwgMiwgNzQsIDE4NSwgMjIsIDIsIDI1MCwgMTM5LCAxODUsIDIsIAorICAgIDIwMiwgMjA4LCAxODUsIDEsIDIyNiwgMTk4LCAyMDcsIDM2LCAxODUsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCAxODUsIDEsIAorICAgIDIxMiwgMjE1LCAxODUsIDEsIDIxMywgOTMsIDE4NSwgMSwgMTk5LCAxNjYsIDE4NSwgMSwgMTA5LCAyMTIsIDIxNiwgMTg1LCAKKyAgICAxLCAxMDksIDIyNCwgMTM5LCAxODUsIDIyLCAyLCAxMDksIDE1NiwgMTg1LCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMTg1LCAKKyAgICAxNywgMTk5LCA4MSwgMTg1LCAxNywgMTAyLCAxODUsIDE3LCAxMDUsIDE4NSwgMTcsIDE0NywgMTg1LCAxNywgMTQ5LCAxODUsIAorICAgIDE3LCAxNjQsIDE4NSwgMTcsIDE4NywgMTg1LCAxNywgMjEwLCAxMzUsIDE4NSwgMTcsIDE5MiwgMTg1LCAxNywgMjE5LCAKKyAgICAxMTMsIDE4NSwgMSwgMjEzLCAyNTMsIDMsIDEwMSwgMjQxLCA3MCwgMTg1LCAxLCAyMTMsIDI1MywgMywgMjI0LCA1NCwgCisgICAgMjQxLCA3MCwgMTg1LCAyMTIsIDE0OSwgODEsIDE4NSwgMjEyLCAxNDksIDU0LCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAKKyAgICAxMDIsIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIDEwNSwgMTg1LCAyNDIsIDE5NSwgMjE4LCA5MiwgMTQ3LCAxODUsIDI0MiwgCisgICAgMTk1LCAyMTgsIDkyLCAxNDksIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIDExMiwgMjI0LCAyNDIsIDIwNiwgMTEyLCAyMDYsIAorICAgIDEwNywgMjQxLCAxMzAsIDE4NSwgMjQyLCAxOTUsIDI0MSwgMTMxLCAyMDksIDEwMCwgMTg1LCAyMjgsIDEzLCAxODUsIDIzNiwgCisgICAgNTYsIDgxLCAyMzUsIDE4LCAyLCAyNTEsIDIzNCwgMjQ4LCAxNjgsIDIzNSwgMTgsIDIsIDI0OCwgMTY4LCAyMzUsIDE4LCAyLCAKKyAgICAyMDIsIDIwMywgMjM1LCAxOCwgMSwgNjIsIDIzNSwgMTgsIDEsIDI1MiwgMTM4LCAyMzUsIDE4LCAxLCA3MCwgMjM1LCAxOCwgCisgICAgMSwgMjI4LCAxNTEsIDIzNSwgMTgsIDEsIDY2LCAyMzUsIDE4LCAxLCAyMDMsIDE4MiwgMjM1LCAxOCwgMSwgMjM4LCAyNTUsIAorICAgIDIzNSwgMTgsIDEsIDI1MSwgMTc2LCAyMzUsIDE4LCAxLCAyMTcsIDYzLCAyMzUsIDE4LCAxLCAyNTAsIDEzOSwgMjM1LCAxOCwgCisgICAgMSwgMTYxLCAyMzUsIDE4LCAxLCAyMjYsIDIwNywgMjM1LCAxOCwgMSwgMjM2LCA4OSwgMjM1LCAxOCwgMSwgMjM1LCAxOTksIAorICAgIDIzNSwgMTgsIDEsIDIxOSwgMjUzLCAyMzUsIDE4LCAxLCAyNDcsIDE5MCwgMjM1LCAxOCwgMSwgMjQ3LCAzNywgMjM1LCAxOCwgCisgICAgMSwgMjI3LCAyNDgsIDIzNSwgMTgsIDEsIDIyNywgMjE1LCAyMzUsIDE4LCAxLCAyMTgsIDYwLCAyMzUsIDE4LCAxLCAyMDQsIAorICAgIDI1MywgMjM1LCAxOCwgMSwgMjA0LCAyNDEsIDIzNSwgMTgsIDEsIDI0MSwgMjIwLCAyMzUsIDE4LCAxLCAyNDEsIDIwNCwgCisgICAgMjM1LCAxOCwgMSwgMjE5LCAyMSwgMjM1LCAxOCwgMSwgMjA3LCAzNiwgMjM1LCAxOCwgMSwgMjA2LCAxMjIsIDIzNSwgMTgsIAorICAgIDEsIDI0MiwgNTgsIDIzNSwgMTgsIDEsIDI0MSwgMTAwLCAyMzUsIDE4LCAxLCAxODgsIDIzNSwgMTgsIDEsIDE3MiwgMjM1LCAKKyAgICAxOCwgMSwgMjE1LCAyNDUsIDIzNSwgMTgsIDEsIDI0OSwgMTM2LCAyMzUsIDE4LCAxLCAyNDgsIDIwMCwgMjM1LCAxOCwgMSwgCisgICAgMTc4LCAyMzUsIDE4LCAxLCAxODMsIDIzNSwgMTgsIDEsIDIxMywgMjUyLCAyMzUsIDE4LCAxLCAxOTQsIDIzNSwgMTgsIDEsIAorICAgIDIyNCwgMTM4LCAyMzUsIDE4LCAxLCAyMDMsIDkwLCAyMzUsIDE4LCAxLCAyMTAsIDExNCwgMjM1LCAxOCwgMSwgMjEyLCA2NCwgCisgICAgMjM1LCAxOCwgMSwgMTQ0LCAyMzUsIDE4LCAyLCAyMTgsIDEwMCwgMjM1LCAxOCwgMjIsIDIsIDI1MiwgMTM4LCAyMzUsIDE4LCAKKyAgICAyMiwgMiwgNzAsIDIzNSwgMTgsIDIyLCAyLCAyMjgsIDE1MSwgMjM1LCAxOCwgMjIsIDIsIDY2LCAyMzUsIDE4LCAyMiwgMiwgCisgICAgMjAzLCAxODIsIDIzNSwgMTgsIDIyLCAyLCAyMzgsIDI1NSwgMjM1LCAxOCwgMjIsIDIsIDI1MSwgMTc2LCAyMzUsIDE4LCAKKyAgICAyMiwgMiwgMjE3LCA2MywgMjM1LCAxOCwgMjIsIDIsIDI1MCwgMTM5LCAyMzUsIDE4LCAyLCAyMDIsIDIwOCwgMjM1LCAxOCwgCisgICAgMiwgMjA0LCAzNSwgMjM1LCAxOCwgMSwgMjI2LCAxODgsIDIzNSwgMTgsIDEsIDIzNSwgMTc0LCAyMzUsIDE4LCAxLCAxOTksIAorICAgIDExNCwgMjM1LCAxOCwgMSwgMjEyLCAyMTUsIDIzNSwgMTgsIDEsIDIzNywgMTk1LCAyMzUsIDE4LCAxNywgMTk5LCA4MSwgCisgICAgMjM1LCAxOCwgMTcsIDEwMiwgMjM1LCAxOCwgMTcsIDEwNSwgMjM1LCAxOCwgMTcsIDE0NywgMjM1LCAxOCwgMTcsIDE0OSwgCisgICAgMjM1LCAxOCwgMTcsIDE2NCwgMjM1LCAxOCwgMTcsIDE4NywgMjM1LCAxOCwgMTcsIDIxMCwgMTM1LCAyMzUsIDE4LCAxNywgCisgICAgMTkyLCAyMzUsIDE4LCAxNywgMjE5LCAxMTMsIDIzNSwgMTgsIDIwNSwgMjIxLCAyMzUsIDE4LCAyNTEsIDIzMywgMjM1LCAKKyAgICAxOCwgMjI4LCAzMywgMjM1LCAxOCwgMjAzLCAyMTAsIDIzNSwgMTgsIDIzOCwgMjE3LCAyMTcsIDY4LCAyMzUsIDE4LCAyLCAKKyAgICAyMDAsIDg0LCAyMzUsIDMzLCAyLCAyNDcsIDE0OSwgMjM1LCAzMywgMiwgMjUxLCAzMywgMjM1LCAzMywgMiwgMjAyLCAyMDMsIAorICAgIDIzNSwgMzMsIDEsIDYyLCAyMzUsIDMzLCAxLCAyNTIsIDEzOCwgMjM1LCAzMywgMSwgNzAsIDIzNSwgMzMsIDEsIDIyOCwgCisgICAgMTUxLCAyMzUsIDMzLCAxLCA2NiwgMjM1LCAzMywgMSwgMjAzLCAxODIsIDIzNSwgMzMsIDEsIDEwOSwgMTQ2LCAyMzUsIDMzLCAKKyAgICAxLCAxMDksIDE1NiwgMjM1LCAzMywgMjIsIDI0NywgMTUyLCA3MiwgMjM1LCAzMywgMSwgNzIsIDIzNSwgMzMsIDEsIDI1MSwgCisgICAgMTc2LCAyMzUsIDMzLCAyMiwgMjQ3LCAxNTIsIDc0LCAyMzUsIDMzLCAxLCA3NCwgMjM1LCAzMywgMSwgMjUwLCAxMzksIAorICAgIDIzNSwgMzMsIDEsIDE2MSwgMjM1LCAzMywgMSwgMjI2LCAyMDcsIDIzNSwgMzMsIDEsIDIzNiwgODksIDIzNSwgMzMsIDEsIAorICAgIDIzNSwgMTk5LCAyMzUsIDMzLCAxLCAyMTksIDI1MywgMjM1LCAzMywgMSwgMjQ3LCAxOTAsIDIzNSwgMzMsIDEsIDI0NywgCisgICAgMzcsIDIzNSwgMzMsIDEsIDIyNywgMjQ4LCAyMzUsIDMzLCAxLCAyMjcsIDIxNSwgMjM1LCAzMywgMSwgMjE4LCA2MCwgMjM1LCAKKyAgICAzMywgMSwgMjA0LCAyNTMsIDIzNSwgMzMsIDEsIDIwNCwgMjQxLCAyMzUsIDMzLCAxLCAyNDEsIDIyMCwgMjM1LCAzMywgMSwgCisgICAgMjQxLCAyMDQsIDIzNSwgMzMsIDEsIDIxOSwgMjEsIDIzNSwgMzMsIDEsIDIwNywgMzYsIDIzNSwgMzMsIDEsIDIwNiwgMTIyLCAKKyAgICAyMzUsIDMzLCAxLCAyNDIsIDU4LCAyMzUsIDMzLCAxLCAyNDEsIDEwMCwgMjM1LCAzMywgMSwgMTg4LCAyMzUsIDMzLCAxLCAKKyAgICAxNzIsIDIzNSwgMzMsIDEsIDIxNSwgMjQ1LCAyMzUsIDMzLCAxLCAyNDksIDEzNiwgMjM1LCAzMywgMSwgMjQ4LCAyMDAsIAorICAgIDIzNSwgMzMsIDEsIDE3OCwgMjM1LCAzMywgMSwgMTgzLCAyMzUsIDMzLCAxLCAyMTMsIDI1MiwgMjM1LCAzMywgMSwgMTk0LCAKKyAgICAyMzUsIDMzLCAxLCAyMjQsIDEzOCwgMjM1LCAzMywgMSwgMjAzLCA5MCwgMjM1LCAzMywgMSwgMjEwLCAxMTQsIDIzNSwgMzMsIAorICAgIDEsIDIwOCwgMTc5LCAyMzUsIDMzLCAxLCAyMTIsIDY0LCAyMzUsIDMzLCAxLCAxNDQsIDIzNSwgMzMsIDIsIDIxOCwgMTAwLCAKKyAgICAyMzUsIDMzLCAyLCAyNTAsIDEyMiwgMjM1LCAzMywgMjIsIDIsIDI1MiwgMTM4LCAyMzUsIDMzLCAyMiwgMiwgNzAsIDIzNSwgCisgICAgMzMsIDIyLCAyLCAyMjgsIDE1MSwgMjM1LCAzMywgMjIsIDIsIDY2LCAyMzUsIDMzLCAyMiwgMiwgMjAzLCAxODIsIDIzNSwgCisgICAgMzMsIDIyLCAyLCAxMDksIDE0NiwgMjM1LCAzMywgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIzNSwgMzMsIDIyLCAyLCAyNDcsIAorICAgIDE1MiwgNzIsIDIzNSwgMzMsIDIyLCAyLCA3MiwgMjM1LCAzMywgMjIsIDIsIDI1MSwgMTc2LCAyMzUsIDMzLCAyMiwgMiwgCisgICAgMjQ3LCAxNTIsIDc0LCAyMzUsIDMzLCAyMiwgMiwgNzQsIDIzNSwgMzMsIDIyLCAyLCAyNTAsIDEzOSwgMjM1LCAzMywgMiwgCisgICAgMjAyLCAyMDgsIDIzNSwgMzMsIDIxNywgODYsIDIzNSwgMzMsIDEsIDEwOSwgMjEyLCAyMTYsIDIzNSwgMzMsIDEsIDEwOSwgCisgICAgMjI0LCAxMzksIDIzNSwgMzMsIDIyLCAyLCAxMDksIDE1NiwgMjM1LCAzMywgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDIzNSwgCisgICAgMzMsIDE3LCAxOTksIDgxLCAyMzUsIDMzLCAxNywgMTAyLCAyMzUsIDMzLCAxNywgMTA1LCAyMzUsIDMzLCAxNywgMTQ3LCAKKyAgICAyMzUsIDMzLCAxNywgMTQ5LCAyMzUsIDMzLCAxNywgMTY0LCAyMzUsIDMzLCAxNywgMTg3LCAyMzUsIDMzLCAxNywgMjEwLCAKKyAgICAxMzUsIDIzNSwgMzMsIDE3LCAxOTIsIDIzNSwgMzMsIDE3LCAyMTksIDExMywgMjM1LCAzMywgMjUyLCAzLCA1NCwgMjM1LCAKKyAgICAzMywgMjEyLCAxNDksIDU0LCAyMzUsIDMzLCAxLCAxOTksIDc3LCAyMTcsIDI0LCAyLCAyNDcsIDE0OSwgMjE3LCAyNCwgMiwgCisgICAgMjUxLCAzMywgMjE3LCAyNCwgMiwgMjAyLCAyMDMsIDIxNywgMjQsIDEsIDYyLCAyMTcsIDI0LCAxLCAyNTIsIDEzOCwgMjE3LCAKKyAgICAyNCwgMSwgNzAsIDIxNywgMjQsIDEsIDIyOCwgMTUxLCAyMTcsIDI0LCAxLCA2NiwgMjE3LCAyNCwgMSwgMjAzLCAxODIsIAorICAgIDIxNywgMjQsIDEsIDEwOSwgMTQ2LCAyMTcsIDI0LCAxLCAxMDksIDE1NiwgMjE3LCAyNCwgMSwgNzIsIDIxNywgMjQsIDEsIAorICAgIDI1MSwgMTc2LCAyMTcsIDI0LCAxLCA3NCwgMjE3LCAyNCwgMSwgMjUwLCAxMzksIDIxNywgMjQsIDEsIDE2MSwgMjE3LCAyNCwgCisgICAgMSwgMjI2LCAyMDcsIDIxNywgMjQsIDEsIDIzNiwgODksIDIxNywgMjQsIDEsIDIzNSwgMTk5LCAyMTcsIDI0LCAxLCAyMTksIAorICAgIDI1MywgMjE3LCAyNCwgMSwgMjQ3LCAxOTAsIDIxNywgMjQsIDEsIDI0NywgMzcsIDIxNywgMjQsIDEsIDIyNywgMjQ4LCAKKyAgICAyMTcsIDI0LCAxLCAyMjcsIDIxNSwgMjE3LCAyNCwgMSwgMjE4LCA2MCwgMjE3LCAyNCwgMSwgMjA0LCAyNTMsIDIxNywgMjQsIAorICAgIDEsIDIwNCwgMjQxLCAyMTcsIDI0LCAxLCAyNDEsIDIyMCwgMjE3LCAyNCwgMSwgMjQxLCAyMDQsIDIxNywgMjQsIDEsIDIxOSwgCisgICAgMjEsIDIxNywgMjQsIDEsIDIwNywgMzYsIDIxNywgMjQsIDEsIDIwNiwgMTIyLCAyMTcsIDI0LCAxLCAyNDIsIDU4LCAyMTcsIAorICAgIDI0LCAxLCAyNDEsIDEwMCwgMjE3LCAyNCwgMSwgMTg4LCAyMTcsIDI0LCAxLCAxNzIsIDIxNywgMjQsIDEsIDIxNSwgMjQ1LCAKKyAgICAyMTcsIDI0LCAxLCAyNDksIDEzNiwgMjE3LCAyNCwgMSwgMjQ4LCAyMDAsIDIxNywgMjQsIDEsIDE3OCwgMjE3LCAyNCwgMSwgCisgICAgMTgzLCAyMTcsIDI0LCAxLCAyMTMsIDI1MiwgMjE3LCAyNCwgMSwgMTk0LCAyMTcsIDI0LCAxLCAyMjQsIDEzOCwgMjE3LCAKKyAgICAyNCwgMSwgMjAzLCA5MCwgMjE3LCAyNCwgMSwgMjEwLCAxMTQsIDIxNywgMjQsIDEsIDIwOCwgMTc5LCAyMTcsIDI0LCAxLCAKKyAgICAyMTIsIDY0LCAyMTcsIDI0LCAxLCAxNDQsIDIxNywgMjQsIDIsIDIxOCwgMTAwLCAyMTcsIDI0LCAyLCAyNTAsIDEyMiwgCisgICAgMjE3LCAyNCwgMjIsIDIsIDI1MiwgMTM4LCAyMTcsIDI0LCAyMiwgMiwgNzAsIDIxNywgMjQsIDIyLCAyLCAyMjgsIDE1MSwgCisgICAgMjE3LCAyNCwgMjIsIDIsIDY2LCAyMTcsIDI0LCAyMiwgMiwgMjAzLCAxODIsIDIxNywgMjQsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMjE3LCAyNCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIxNywgMjQsIDIyLCAyLCA3MiwgMjE3LCAyNCwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMTcsIDI0LCAyMiwgMiwgNzQsIDIxNywgMjQsIDIyLCAyLCAyNTAsIDEzOSwgMjE3LCAyNCwgMiwgMjAyLCAyMDgsIAorICAgIDIxNywgMjQsIDI1MSwgMTc3LCAyMjUsIDIsIDgxLCAyMTcsIDI0LCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgMjE3LCAyNCwgMSwgCisgICAgMjEyLCAyMTUsIDIxNywgMjQsIDEsIDIxMywgOTMsIDIxNywgMjQsIDEsIDE5OSwgMTY2LCAyMTcsIDI0LCAxLCAxMDksIAorICAgIDIxMiwgMjE2LCAyMTcsIDI0LCAxLCAxMDksIDIyNCwgMTM5LCAyMTcsIDI0LCAyMiwgMiwgMTA5LCAxNTYsIDIxNywgMjQsIAorICAgIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAyMTcsIDI0LCAxNywgMTk5LCA4MSwgMjE3LCAyNCwgMTcsIDEwMiwgMjE3LCAyNCwgCisgICAgMTcsIDEwNSwgMjE3LCAyNCwgMTcsIDE0NywgMjE3LCAyNCwgMTcsIDE0OSwgMjE3LCAyNCwgMTcsIDE2NCwgMjE3LCAyNCwgCisgICAgMTcsIDE4NywgMjE3LCAyNCwgMTcsIDIxMCwgMTM1LCAyMTcsIDI0LCAxNywgMTkyLCAyMTcsIDI0LCAxNywgMjE5LCAxMTMsIAorICAgIDIxNywgMjQsIDIyOCwgMTMsIDIxNywgMjQsIDEsIDIwMSwgMTE0LCAyMTcsIDI0LCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAKKyAgICAyMTcsIDI0LCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMjE3LCAyNCwgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMjE3LCAKKyAgICAyNCwgMjM2LCAyMTksIDExMiwgMjA5LCA5OCwgMjE3LCAyNCwgMjM2LCAyMTksIDExMiwgMjM4LCAyMjcsIDIxNywgMjQsIAorICAgIDIzNiwgMjE5LCAxMjYsIDIwOSwgOTcsIDQ1LCAyLCAyNTEsIDMzLCA0NSwgMiwgMjAyLCAyMDMsIDQ1LCAxLCA2MiwgNDUsIAorICAgIDEsIDI1MiwgMTM4LCA0NSwgMSwgNzAsIDQ1LCAxLCAyMjgsIDE1MSwgNDUsIDEsIDY2LCA0NSwgMSwgMjAzLCAxODIsIDQ1LCAKKyAgICAxLCA3MiwgNDUsIDEsIDIzOCwgMjU1LCA0NSwgMSwgMjUxLCAxNzYsIDQ1LCAxLCA3NCwgNDUsIDEsIDIxNywgNjMsIDQ1LCAKKyAgICAxLCAyNTAsIDEzOSwgNDUsIDEsIDE2MSwgNDUsIDEsIDIxOSwgMjUzLCA0NSwgMSwgMjQ3LCAxOTAsIDQ1LCAxLCAyMjcsIAorICAgIDI0OCwgNDUsIDEsIDIxOCwgNjAsIDQ1LCAxLCAyMDQsIDI1MywgNDUsIDEsIDIxOSwgMjEsIDQ1LCAxLCAyMDcsIDM2LCA0NSwgCisgICAgMSwgMTg4LCA0NSwgMSwgMjE5LCAzLCA0NSwgMSwgMTcyLCA0NSwgMSwgMTc4LCA0NSwgMSwgMTgzLCA0NSwgMSwgMjEzLCAKKyAgICAyNTIsIDQ1LCAxLCAyMTIsIDIxNSwgNDUsIDEsIDE5NCwgNDUsIDEsIDIyNCwgMTM4LCA0NSwgMSwgMjI0LCAxMjksIDQ1LCAKKyAgICAxLCAyMDMsIDkwLCA0NSwgMSwgMjEwLCAxMTQsIDQ1LCAxLCAyMDgsIDE3OSwgNDUsIDEsIDIxMiwgNjQsIDQ1LCAxLCAxNDQsIAorICAgIDQ1LCAyMiwgMiwgMjUyLCAxMzgsIDQ1LCAyMiwgMiwgNzAsIDQ1LCAyMiwgMiwgMjI4LCAxNTEsIDQ1LCAyMiwgMiwgNjYsIAorICAgIDQ1LCAyMiwgMiwgMjAzLCAxODIsIDQ1LCAyMiwgMiwgNzIsIDQ1LCAyMiwgMiwgMjM4LCAyNTUsIDQ1LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDQ1LCAyMiwgMiwgNzQsIDQ1LCAyMiwgMiwgMjE3LCA2MywgNDUsIDIyLCAyLCAyNTAsIDEzOSwgNDUsIDIsIDIwMiwgCisgICAgMjA4LCA0NSwgMjE3LCA4NiwgNDUsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCA0NSwgMTcsIDE5OSwgODEsIDQ1LCAxNywgMTAyLCAKKyAgICA0NSwgMTcsIDEwNSwgNDUsIDE3LCAxNDcsIDQ1LCAxNywgMTQ5LCA0NSwgMTcsIDE2NCwgNDUsIDE3LCAxODcsIDQ1LCAxNywgCisgICAgMjEwLCAxMzUsIDQ1LCAxNywgMTkyLCA0NSwgMTcsIDIxOSwgMTEzLCA0NSwgNDEsIDIwNiwgMTY2LCA0NSwgNDEsIDExMiwgCisgICAgMjMzLCA4MiwgNDUsIDQxLCAxMTIsIDIwNiwgNTAsIDQ1LCAyNDEsIDIzMywgNTQsIDQ1LCAyMjEsIDkwLCA1NCwgNDUsIAorICAgIDIwMCwgNDksIDU0LCA0NSwgMjQxLCAxNzIsIDU0LCA0NSwgMjQyLCAyNDYsIDU0LCA0NSwgMjUwLCAxODksIDg4LCA1NCwgCisgICAgNDUsIDIxMiwgMTQ5LCA1NCwgNDUsIDQxLCA1NCwgMTgwLCAyLCAzOCwgMjQ3LCAxNTAsIDU2LCAxODAsIDIsIDI0NywgMTQ5LCAKKyAgICAxODAsIDIsIDI1MSwgMzMsIDE4MCwgMiwgMjAyLCAyMDMsIDE4MCwgMSwgNjIsIDE4MCwgMSwgMjUyLCAxMzgsIDE4MCwgMSwgCisgICAgNzAsIDE4MCwgMSwgMjI4LCAxNTEsIDE4MCwgMSwgNjYsIDE4MCwgMSwgMjAzLCAxODIsIDE4MCwgMSwgMTA5LCAxNDYsIAorICAgIDE4MCwgMSwgMTA5LCAxNTYsIDE4MCwgMSwgNzIsIDE4MCwgMSwgMjM4LCAyNTUsIDE4MCwgMSwgMjUxLCAxNzYsIDE4MCwgMSwgCisgICAgNzQsIDE4MCwgMSwgMjE3LCA2MywgMTgwLCAxLCAyNTAsIDEzOSwgMTgwLCAxLCAxNjEsIDE4MCwgMSwgMjI2LCAyMDcsIAorICAgIDE4MCwgMSwgMjM2LCA4OSwgMTgwLCAxLCAyMzUsIDE5OSwgMTgwLCAxLCAyMTksIDI1MywgMTgwLCAxLCAyNDcsIDE5MCwgCisgICAgMTgwLCAxLCAyNDcsIDM3LCAxODAsIDEsIDIyNywgMjQ4LCAxODAsIDEsIDIyNywgMjE1LCAxODAsIDEsIDIxOCwgNjAsIAorICAgIDE4MCwgMSwgMjA0LCAyNTMsIDE4MCwgMSwgMjA0LCAyNDEsIDE4MCwgMSwgMjQxLCAyMjAsIDE4MCwgMSwgMjQxLCAyMDQsIAorICAgIDE4MCwgMSwgMjE5LCAyMSwgMTgwLCAxLCAyMDcsIDM2LCAxODAsIDEsIDIwNiwgMTIyLCAxODAsIDEsIDI0MiwgNTgsIDE4MCwgCisgICAgMSwgMjQxLCAxMDAsIDE4MCwgMSwgMTg4LCAxODAsIDEsIDE3MiwgMTgwLCAxLCAyMTUsIDI0NSwgMTgwLCAxLCAyNDksIAorICAgIDEzNiwgMTgwLCAxLCAyNDgsIDIwMCwgMTgwLCAxLCAxNzgsIDE4MCwgMSwgMTgzLCAxODAsIDEsIDIxMywgMjUyLCAxODAsIAorICAgIDEsIDIxMiwgMjE1LCAxODAsIDEsIDE5NCwgMTgwLCAxLCAyMjQsIDEzOCwgMTgwLCAxLCAyMjQsIDEyOSwgMTgwLCAxLCAKKyAgICAyMDMsIDkwLCAxODAsIDEsIDIxMCwgMTE0LCAxODAsIDEsIDIwOCwgMTc5LCAxODAsIDEsIDIxMiwgNjQsIDE4MCwgMSwgCisgICAgMTQ0LCAxODAsIDIsIDI1MCwgMTIyLCAxODAsIDIyLCAyLCAyNTIsIDEzOCwgMTgwLCAyMiwgMiwgNzAsIDE4MCwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxODAsIDIyLCAyLCA2NiwgMTgwLCAyMiwgMiwgMjAzLCAxODIsIDE4MCwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxODAsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxODAsIDIyLCAyLCA3MiwgMTgwLCAyMiwgMiwgMjM4LCAyNTUsIDE4MCwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCAxODAsIDIyLCAyLCA3NCwgMTgwLCAyMiwgMiwgMjE3LCA2MywgMTgwLCAyMiwgMiwgMjUwLCAxMzksIAorICAgIDE4MCwgMiwgMjAyLCAyMDgsIDE4MCwgMjI1LCAyLCA4MSwgMTgwLCAyNTEsIDE3NywgMjI1LCAyLCA4MSwgMTgwLCAxLCAKKyAgICAyMDUsIDMyLCAxODAsIDEsIDIzOSwgOTMsIDE4MCwgMSwgMjEyLCAxOTYsIDE4MCwgMSwgMTA5LCAyMTIsIDIxNiwgMTgwLCAKKyAgICAxLCAxMDksIDIyNCwgMTM5LCAxODAsIDIyLCAyLCAxMDksIDE1NiwgMTgwLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMTgwLCAKKyAgICAxNywgMTk5LCA4MSwgMTgwLCAxNywgMTAyLCAxODAsIDE3LCAxMDUsIDE4MCwgMTcsIDE0NywgMTgwLCAxNywgMTQ5LCAxODAsIAorICAgIDE3LCAxNjQsIDE4MCwgMTcsIDE4NywgMTgwLCAxNywgMjEwLCAxMzUsIDE4MCwgMTcsIDE5MiwgMTgwLCAxNywgMjE5LCAKKyAgICAxMTMsIDE4MCwgMjM2LCAyMTksIDE3LCAxOTksIDgyLCAzNiwgMjE3LCAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgCisgICAgMjM2LCAyMTksIDE3LCAxMTIsIDM2LCAyMTcsIDEyNSwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIAorICAgIDEyMCwgMzYsIDIxNywgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgMTI2LCAzNiwgMjE3LCAKKyAgICAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAyMTksIDE3LCAxMTIsIDM2LCAyMzgsIDU2LCAyMTUsIDUwLCA3NiwgCisgICAgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgMTIwLCAzNiwgMjM4LCA1NiwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIAorICAgIDIxOSwgMTcsIDEyNiwgMzYsIDIzOCwgNTYsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMiwgMjA0LCAxNzUsIDIyNywgNjMsIAorICAgIDIsIDIwOCwgMjQzLCAyNDcsIDE0OSwgMjI3LCA2MywgMiwgMjQ3LCAxNDksIDIyNywgNjMsIDIsIDI1MSwgMzMsIDIyNywgCisgICAgNjMsIDIsIDIwMiwgMjAzLCAyMjcsIDYzLCAxLCA2MiwgMjI3LCA2MywgMSwgMjUyLCAxMzgsIDIyNywgNjMsIDEsIDcwLCAKKyAgICAyMjcsIDYzLCAxLCAyMjgsIDE1MSwgMjI3LCA2MywgMSwgNjYsIDIyNywgNjMsIDEsIDIwMywgMTgyLCAyMjcsIDYzLCAxLCAKKyAgICAxMDksIDE0NiwgMjI3LCA2MywgMSwgMTA5LCAxNTYsIDIyNywgNjMsIDEsIDcyLCAyMjcsIDYzLCAxLCAyMzgsIDI1NSwgCisgICAgMjI3LCA2MywgMSwgMjUxLCAxNzYsIDIyNywgNjMsIDEsIDc0LCAyMjcsIDYzLCAxLCAyMTcsIDYzLCAyMjcsIDYzLCAxLCAKKyAgICAyNTAsIDEzOSwgMjI3LCA2MywgMSwgMTYxLCAyMjcsIDYzLCAxLCAyMjYsIDIwNywgMjI3LCA2MywgMSwgMjM2LCA4OSwgCisgICAgMjI3LCA2MywgMSwgMjM1LCAxOTksIDIyNywgNjMsIDEsIDIxOSwgMjUzLCAyMjcsIDYzLCAxLCAyNDcsIDE5MCwgMjI3LCAKKyAgICA2MywgMSwgMjQ3LCAzNywgMjI3LCA2MywgMSwgMjI3LCAyNDgsIDIyNywgNjMsIDEsIDIyNywgMjE1LCAyMjcsIDYzLCAxLCAKKyAgICAyMTgsIDYwLCAyMjcsIDYzLCAxLCAyMDQsIDI1MywgMjI3LCA2MywgMSwgMjA0LCAyNDEsIDIyNywgNjMsIDEsIDI0MSwgCisgICAgMjIwLCAyMjcsIDYzLCAxLCAyNDEsIDIwNCwgMjI3LCA2MywgMSwgMjE5LCAyMSwgMjI3LCA2MywgMSwgMjA3LCAzNiwgMjI3LCAKKyAgICA2MywgMSwgMjA2LCAxMjIsIDIyNywgNjMsIDEsIDI0MiwgNTgsIDIyNywgNjMsIDEsIDI0MSwgMTAwLCAyMjcsIDYzLCAxLCAKKyAgICAxODgsIDIyNywgNjMsIDEsIDE3MiwgMjI3LCA2MywgMSwgMjE1LCAyNDUsIDIyNywgNjMsIDEsIDI0OSwgMTM2LCAyMjcsIAorICAgIDYzLCAxLCAyNDgsIDIwMCwgMjI3LCA2MywgMSwgMTc4LCAyMjcsIDYzLCAxLCAxODMsIDIyNywgNjMsIDEsIDIxMywgMjUyLCAKKyAgICAyMjcsIDYzLCAxLCAyMTIsIDIxNSwgMjI3LCA2MywgMSwgMTk0LCAyMjcsIDYzLCAxLCAyMjQsIDEzOCwgMjI3LCA2MywgMSwgCisgICAgMjAzLCA5MCwgMjI3LCA2MywgMSwgMjEwLCAxMTQsIDIyNywgNjMsIDEsIDIwOCwgMTc5LCAyMjcsIDYzLCAxLCAyMTIsIDY0LCAKKyAgICAyMjcsIDYzLCAxLCAxNDQsIDIyNywgNjMsIDIsIDIxOCwgMTAwLCAyMjcsIDYzLCAyLCAyNTAsIDEyMiwgMjI3LCA2MywgMjIsIAorICAgIDIsIDI1MiwgMTM4LCAyMjcsIDYzLCAyMiwgMiwgNzAsIDIyNywgNjMsIDIyLCAyLCAyMjgsIDE1MSwgMjI3LCA2MywgMjIsIAorICAgIDIsIDY2LCAyMjcsIDYzLCAyMiwgMiwgMjAzLCAxODIsIDIyNywgNjMsIDIyLCAyLCAxMDksIDE0NiwgMjI3LCA2MywgMjIsIAorICAgIDIsIDEwOSwgMjEyLCAyMTYsIDIyNywgNjMsIDIyLCAyLCA3MiwgMjI3LCA2MywgMjIsIDIsIDIzOCwgMjU1LCAyMjcsIDYzLCAKKyAgICAyMiwgMiwgMjUxLCAxNzYsIDIyNywgNjMsIDIyLCAyLCA3NCwgMjI3LCA2MywgMjIsIDIsIDIxNywgNjMsIDIyNywgNjMsIAorICAgIDIyLCAyLCAyNTAsIDEzOSwgMjI3LCA2MywgMiwgMjAyLCAyMDgsIDIyNywgNjMsIDIyNSwgMiwgODEsIDIyNywgNjMsIDI1MSwgCisgICAgMTc3LCAyMjUsIDIsIDgxLCAyMjcsIDYzLCAxLCAyMzcsIDE5NSwgMjI3LCA2MywgMSwgMTA5LCAyMTIsIDIxNiwgMjI3LCAKKyAgICA2MywgMSwgMTA5LCAyMjQsIDEzOSwgMjI3LCA2MywgMjIsIDIsIDEwOSwgMTU2LCAyMjcsIDYzLCAyMiwgMiwgMTA5LCAyMjQsIAorICAgIDEzOSwgMjI3LCA2MywgMTcsIDE5OSwgODEsIDIyNywgNjMsIDE3LCAxMDIsIDIyNywgNjMsIDE3LCAxMDUsIDIyNywgNjMsIAorICAgIDE3LCAxNDcsIDIyNywgNjMsIDE3LCAxNDksIDIyNywgNjMsIDE3LCAxNjQsIDIyNywgNjMsIDE3LCAxODcsIDIyNywgNjMsIAorICAgIDE3LCAyMTAsIDEzNSwgMjI3LCA2MywgMTcsIDE5MiwgMjI3LCA2MywgMTcsIDIxOSwgMTEzLCAyMjcsIDYzLCAyLCAyMjcsIAorICAgIDIwMSwgMjI3LCA2MywgMiwgMjAzLCAyMjYsIDE0MiwgMiwgMjQ3LCAxNDksIDE0MiwgMiwgMjUxLCAzMywgMTQyLCAyLCAKKyAgICAyMDIsIDIwMywgMTQyLCAxLCA2MiwgMTQyLCAxLCAyNTIsIDEzOCwgMTQyLCAxLCA3MCwgMTQyLCAxLCAyMjgsIDE1MSwgCisgICAgMTQyLCAxLCA2NiwgMTQyLCAxLCAyMDMsIDE4MiwgMTQyLCAxLCAxMDksIDE0NiwgMTQyLCAxLCAxMDksIDE1NiwgMTQyLCAxLCAKKyAgICA3MiwgMTQyLCAxLCAyMzgsIDI1NSwgMTQyLCAxLCAyNTEsIDE3NiwgMTQyLCAxLCA3NCwgMTQyLCAxLCAyMTcsIDYzLCAxNDIsIAorICAgIDEsIDI1MCwgMTM5LCAxNDIsIDEsIDE2MSwgMTQyLCAxLCAyMjYsIDIwNywgMTQyLCAxLCAyMzYsIDg5LCAxNDIsIDEsIDIzNSwgCisgICAgMTk5LCAxNDIsIDEsIDIxOSwgMjUzLCAxNDIsIDEsIDI0NywgMTkwLCAxNDIsIDEsIDI0NywgMzcsIDE0MiwgMSwgMjI3LCAKKyAgICAyNDgsIDE0MiwgMSwgMjI3LCAyMTUsIDE0MiwgMSwgMjE4LCA2MCwgMTQyLCAxLCAyMDQsIDI1MywgMTQyLCAxLCAyMDQsIAorICAgIDI0MSwgMTQyLCAxLCAyNDEsIDIyMCwgMTQyLCAxLCAyNDEsIDIwNCwgMTQyLCAxLCAyMTksIDIxLCAxNDIsIDEsIDIwNywgCisgICAgMzYsIDE0MiwgMSwgMjA2LCAxMjIsIDE0MiwgMSwgMjQyLCA1OCwgMTQyLCAxLCAyNDEsIDEwMCwgMTQyLCAxLCAxODgsIAorICAgIDE0MiwgMSwgMjE5LCAzLCAxNDIsIDEsIDE3MiwgMTQyLCAxLCAyMTUsIDI0NSwgMTQyLCAxLCAyNDksIDEzNiwgMTQyLCAxLCAKKyAgICAyNDgsIDIwMCwgMTQyLCAxLCAxNzgsIDE0MiwgMSwgMTgzLCAxNDIsIDEsIDIxMywgMjUyLCAxNDIsIDEsIDIxMiwgMjE1LCAKKyAgICAxNDIsIDEsIDE5NCwgMTQyLCAxLCAyMjQsIDEzOCwgMTQyLCAxLCAyMjQsIDEyOSwgMTQyLCAxLCAyMDMsIDkwLCAxNDIsIDEsIAorICAgIDIxMCwgMTE0LCAxNDIsIDEsIDIwOCwgMTc5LCAxNDIsIDEsIDIxMiwgNjQsIDE0MiwgMSwgMTQ0LCAxNDIsIDEsIDIwNCwgCisgICAgMjIyLCAxNDIsIDIsIDI1MCwgMTIyLCAxNDIsIDIyLCAyLCAyNTIsIDEzOCwgMTQyLCAyMiwgMiwgNzAsIDE0MiwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxNDIsIDIyLCAyLCA2NiwgMTQyLCAyMiwgMiwgMjAzLCAxODIsIDE0MiwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxNDIsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxNDIsIDIyLCAyLCA3MiwgMTQyLCAyMiwgMiwgMjM4LCAyNTUsIDE0MiwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCAxNDIsIDIyLCAyLCA3NCwgMTQyLCAyMiwgMiwgMjE3LCA2MywgMTQyLCAyMiwgMiwgMjUwLCAxMzksIAorICAgIDE0MiwgMiwgMjAyLCAyMDgsIDE0MiwgMSwgNzMsIDIxMywgMTI5LCAxNDIsIDIsIDIxNiwgMTI5LCAxNDIsIDEsIDI0NiwgCisgICAgMjI1LCAyMjMsIDI0MywgMTQyLCAxLCAyNDYsIDIyNSwgMjAwLCAxMjMsIDE0MiwgMSwgMjQ2LCAyMjUsIDIyNCwgMTMwLCAKKyAgICAxNDIsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIxNywgNzQsIDE0MiwgMjM2LCAyMTksIAorICAgIDExMiwgMjM2LCAyMzcsIDE0MiwgMjM2LCAyMTksIDEyNiwgMjM4LCAyMjQsIDE0MiwgMjM2LCAyMTksIDExMiwgMjA0LCAKKyAgICAxNjIsIDE0MiwgMjM2LCAyMTksIDExMiwgMjA2LCAxNTcsIDE0MiwgMjM2LCAyMTksIDEyNiwgMjA0LCAxNjEsIDE0MiwgCisgICAgMjM2LCAyMTksIDExMiwgMjM3LCAxMDcsIDE0MiwgMSwgMjUwLCAyMzQsIDIyOCwgMTUxLCAxNDIsIDEsIDEwOSwgMjEyLCAKKyAgICAyMTYsIDE0MiwgMSwgMTA5LCAyMjQsIDEzOSwgMTQyLCAyMiwgMiwgMTA5LCAxNTYsIDE0MiwgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDE0MiwgMTcsIDE5OSwgODEsIDE0MiwgMTcsIDEwMiwgMTQyLCAxNywgMTA1LCAxNDIsIDE3LCAxNDcsIDE0MiwgMTcsIAorICAgIDE0OSwgMTQyLCAxNywgMTY0LCAxNDIsIDE3LCAxODcsIDE0MiwgMTcsIDIxMCwgMTM1LCAxNDIsIDE3LCAxOTIsIDE0MiwgCisgICAgMTcsIDIxOSwgMTEzLCAxNDIsIDQxLCAyMDYsIDE2NiwgMTQyLCA0MSwgMTEyLCAyMzMsIDgyLCAxNDIsIDQxLCAxMTIsIAorICAgIDIwNiwgNTAsIDE0MiwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMTQyLCAKKyAgICAyMzYsIDIxOSwgMTI2LCAyMTQsIDg1LCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTgsIDE0MiwgMjM2LCAyMTksIDExMiwgCisgICAgMjM4LCAyMjcsIDE0MiwgMjM2LCAyMTksIDEyNiwgMjA5LCA5NywgMTQyLCAyNDEsIDIzOCwgODEsIDE0MiwgMSwgMjQ2LCAKKyAgICAyMjUsIDIxOSwgMjIsIDE0MiwgMSwgMjQ2LCAyMjUsIDIyMCwgMjE0LCAxNDIsIDEsIDI0NiwgMjI1LCAyMTIsIDIxNiwgCisgICAgMTQyLCAxLCAyNDYsIDIyNSwgMTU2LCAxNDIsIDEsIDI0NiwgMjI1LCAyMjQsIDEzOSwgMTQyLCAxLCAyNDYsIDIyNSwgMjI3LCAKKyAgICAxMTgsIDE0MywgMiwgMjUxLCAzMiwgMTQzLCAyLCAyMDIsIDIwMiwgMTQzLCAxLCAyNTAsIDExMCwgMTQzLCAxLCAyNTIsIAorICAgIDkyLCAxNDMsIDEsIDI1MSwgMjAxLCAxNDMsIDEsIDI1MSwgMjE2LCAxNDMsIDEsIDIyOCwgMiwgMTQzLCAxLCAyMjgsIDE1MCwgCisgICAgMTQzLCAxLCAyMDMsIDE3MywgMTQzLCAxLCAyMDMsIDE3NiwgMTQzLCAxLCAyMjgsIDI4LCAxNDMsIDEsIDIyOCwgMjksIAorICAgIDE0MywgMSwgMjI4LCAxMzYsIDE0MywgMSwgMjI4LCAxMzgsIDE0MywgMSwgMjM4LCAyNSwgMTQzLCAxLCAyMzgsIDI1MCwgCisgICAgMTQzLCAxLCAyNTEsIDE2MSwgMTQzLCAxLCAyMTYsIDIyOSwgMTQzLCAxLCAyMTcsIDU2LCAxNDMsIDEsIDI1MCwgMTI1LCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyMjcsIDEzLCAxNDMsIDEsIDIyMiwgMjA1LCAyMjcsIDEzLCAxNDMsIDEsIDI1MSwgMTE1LCAKKyAgICAyMzYsIDM1LCAxNDMsIDEsIDIyMiwgMjA1LCAyMzYsIDM1LCAxNDMsIDEsIDIyNywgNjIsIDIyMCwgMTU0LCAxNDMsIDEsIAorICAgIDIxMiwgNSwgMjM2LCAzNSwgMTQzLCAxLCAyNTEsIDExNSwgMjQ3LCAxMDIsIDE0MywgMSwgMjIyLCAyMDUsIDI0NywgMTAyLCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyMjcsIDIzMCwgMTQzLCAxLCAyMjIsIDIwNSwgMjI3LCAyMzAsIDE0MywgMSwgMjA3LCAyOSwgCisgICAgMjIwLCAxNTQsIDE0MywgMSwgMjA3LCAyOSwgMjEyLCA0LCAyMjAsIDE1NSwgMTQzLCAxLCAyMTIsIDUsIDIyNywgMjMwLCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyMDQsIDI0OSwgMTQzLCAxLCAyMjIsIDIwNSwgMjA0LCAyNDksIDE0MywgMSwgMjUxLCAxMTUsIAorICAgIDI0MSwgMjExLCAxNDMsIDEsIDIyMiwgMjA1LCAyNDEsIDIxMSwgMTQzLCAxLCAyMjAsIDI0MiwgMjIwLCAxMDgsIDE0MywgMSwgCisgICAgMjEyLCA1LCAyNDEsIDIxMSwgMTQzLCAxLCAyNTEsIDExNSwgMjA2LCAyMDksIDE0MywgMSwgMjIyLCAyMDUsIDIwNiwgMjA5LCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyNDEsIDIzMSwgMTQzLCAxLCAyMjIsIDIwNSwgMjQxLCAyMzEsIDE0MywgMSwgMjQyLCA2LCAKKyAgICAyMjAsIDEwOCwgMTQzLCAxLCAyMTIsIDUsIDI0MSwgMjMxLCAxNDMsIDEsIDI1MSwgMTE1LCAyMTYsIDgxLCAxNDMsIDEsIAorICAgIDIyMiwgMjA1LCAyMTYsIDgxLCAxNDMsIDEsIDI1MSwgMTE1LCAyNDksIDQ2LCAxNDMsIDEsIDIyMiwgMjA1LCAyNDksIDQ2LCAKKyAgICAxNDMsIDEsIDIyMiwgMTE4LCAxNDMsIDEsIDI1MSwgOTUsIDI0OSwgNDYsIDE0MywgMSwgMjAwLCA1NiwgMTQzLCAxLCAyMTMsIAorICAgIDE5NiwgMTQzLCAxLCAyNDIsIDYsIDIyNSwgNDksIDE0MywgMSwgMjAzLCA2MSwgMTQzLCAxLCAyMDcsIDI5LCAyMTEsIDIzMywgCisgICAgMTQzLCAxLCAyMjAsIDI0MiwgMjExLCAyMzMsIDE0MywgMSwgMjQyLCA2LCAyMTEsIDIzMywgMTQzLCAxLCAyMzQsIDE0NSwgCisgICAgMTQzLCAxLCAyMjAsIDI0MiwgMjI1LCA0OSwgMTQzLCAxLCAyMzcsIDE0OSwgMTQzLCAyLCAyNTEsIDE1MCwgMTQzLCAyMiwgCisgICAgMiwgMjUxLCAyMTEsIDE0MywgMjIsIDIsIDIyNiwgMjMyLCAyNTEsIDIxOCwgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjUxLCAKKyAgICAyMTgsIDE0MywgMjIsIDIsIDIyNiwgMjMyLCAyMjgsIDI1LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMjgsIDI1LCAxNDMsIAorICAgIDIyLCAyLCAyMjYsIDIzMiwgMjE2LCAyMDksIDE0MywgMjIsIDIsIDI0MSwgNDMsIDIxNiwgMjA5LCAxNDMsIDIyLCAyLCAKKyAgICAyMzYsIDc4LCAxNDMsIDIyLCAyLCAyMjYsIDczLCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMjYsIDczLCAxNDMsIDIyLCAyLCAKKyAgICAyMjYsIDc1LCAyNDEsIDE1MCwgMTQzLCAyMiwgMiwgMjI2LCA3NCwgMjM0LCAyMzQsIDI1MSwgMjExLCAxNDMsIDIyLCAyLCAKKyAgICAyMjYsIDc0LCAyMzQsIDIzNCwgMjQxLCA0MywgMjUxLCAyMTEsIDE0MywgMjIsIDIsIDIyNiwgNzQsIDIzNCwgMjM0LCAyMzYsIAorICAgIDM0LCAxNDMsIDIyLCAyLCAyMzYsIDM0LCAxNDMsIDIyNCwgMTUxLCAxNywgMTk5LCA4MSwgMTQzLCAyMjQsIDE1MSwgMTcsIAorICAgIDEwMiwgMTQzLCAyMjQsIDE1MSwgMTcsIDEwNSwgMTQzLCAyMjQsIDE1MSwgMTcsIDE0NywgMTQzLCAyMjQsIDE1MSwgMTcsIAorICAgIDE0OSwgMTQzLCAyMjQsIDE1MSwgMTcsIDE2NCwgMTQzLCAyMjQsIDE1MSwgMTcsIDE4NywgMTQzLCAyMjQsIDE1MSwgMTcsIAorICAgIDIxMCwgMTM1LCAxNDMsIDIyNCwgMTUxLCAxNywgMTkyLCAxNDMsIDIyNCwgMTUxLCAxNywgMjE5LCAxMTMsIDE0MywgMjIsIAorICAgIDIsIDI0MSwgNDMsIDIzNiwgNzgsIDE0MywgMjIsIDIsIDI0MSwgNDMsIDIzNiwgMzQsIDE0MywgMjE0LCAyMTIsIDIyNiwgMCwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjI2LCA4OSwgMjI3LCA4MiwgMjA2LCAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMjAyLCAyMDYsIAorICAgIDExNywgMTcxLCAyMjYsIDE3OSwgMjI2LCAxNzEsIDIwNiwgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDE2NiwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMTc1LCAyMDYsIDExNywgMTcxLCAyMjYsIDE3OSwgMjEzLCAyMTcsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIxOSwgMTc5LCAyMTksIDE2NiwgMjA2LCAxMTcsIDE3MSwgMjQ2LCAyMTEsIDI0NywgMjYsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDI0NiwgMjExLCAyNDYsIDIyMSwgMjA2LCAxMTcsIDE3MSwgMjQ2LCAyMTEsIDI0NywgMjUsIDIwNiwgMTE3LCAxNzEsIAorICAgIDIwOSwgMzAsIDIwOSwgMjksIDIwNiwgMTE3LCAxNzEsIDI0NiwgMjExLCAyNDYsIDIwNywgMjA2LCAxMTcsIDE3MSwgMTk5LCAKKyAgICAyNDYsIDE5OSwgMjUzLCAyMDYsIDExNywgMTcxLCAyNDAsIDIxMiwgMjQ3LCAzNCwgMjA2LCAxMTcsIDE3MSwgMjA1LCAxODYsIAorICAgIDIxNiwgOTIsIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgMTExLCAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMjAsIAorICAgIDEzMSwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjE1LCAyMDcsIDIwNiwgMTE3LCAxNzEsIDIxOCwgMjQyLCAyMjAsIDI0LCAKKyAgICAyMDYsIDExNywgMTcxLCAyNDAsIDIxMiwgMjQxLCAxNTEsIDIwNiwgMTE3LCAxNzEsIDIwNSwgMTg2LCAyMDYsIDIzNywgCisgICAgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjA2LCAyOSwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjA2LCAxMTgsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgNTcsIDIwNiwgMTE3LCAxNzEsIDIxOCwgMjQyLCAyMTgsIDEzMywgMjA2LCAxMTcsIAorICAgIDE3MSwgMjQ4LCAxMjUsIDI0OSwgMTAyLCAyMDYsIDExNywgMTcxLCAyMTUsIDEwNywgMjE1LCAxMzUsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxNSwgMjE4LCAyMTUsIDIwOSwgMjA2LCAxMTcsIDE3MSwgMjM3LCAxNCwgMjM3LCAxOTUsIDIwNiwgMTE3LCAxNzEsIAorICAgIDIxNSwgMjE4LCAyMTUsIDIzOCwgMjA2LCAxMTcsIDE3MSwgMjM3LCAxNCwgMjM3LCAxNjgsIDIwNiwgMTE3LCAxNzEsIDIxNSwgCisgICAgMjE4LCAyMTIsIDE3LCAyMDYsIDExNywgMTcxLCAyMjEsIDEzNywgMTc4LCAyMDYsIDExNywgMTcxLCAxOTksIDI0NiwgMjAwLCAKKyAgICA4NSwgMjA2LCAxMTcsIDE3MSwgMjEzLCAyLCAyMTIsIDE3NCwgMjA2LCAxMTcsIDE3MSwgMjEyLCAxNzUsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIyNCwgMTExLCAyMjQsIDE2OSwgMjA2LCAxMTcsIDE3MSwgMjI0LCA0MiwgMjA2LCAxMTcsIDE3MSwgMjAxLCAxLCAKKyAgICAyMDEsIDEwOSwgMjA2LCAxMTcsIDE3MSwgMjA5LCAzMCwgMjEyLCAzMywgMjA2LCAxMTcsIDE3MSwgMjA5LCAzMCwgMjEyLCAKKyAgICAxNDUsIDIwNiwgMTE3LCAxNzEsIDIwOSwgMzAsIDIwOCwgMjMsIDIwNiwgMTE3LCAxNzEsIDIzMywgMjA4LCAyMzQsIDQ4LCAKKyAgICAyMDYsIDExNywgMTcxLCAyMjQsIDExMSwgMjQ2LCAxOTEsIDIwNiwgMTE3LCAxNzEsIDE2MywgMjUxLCA3NiwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjMzLCAyMDgsIDIxOCwgMjM3LCAyMDYsIDExNywgMTcxLCAyMTYsIDE4NiwgMjA2LCAxMTcsIDE3MSwgMjExLCAKKyAgICAyNTUsIDYyLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjM0LCAyMDEsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTIsIAorICAgIDEzOCwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDI1MSwgMTAxLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgNzAsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIxMSwgMjU1LCAyMjgsIDE1MSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDIwNCwgMzEsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxMSwgMjU1LCAyMDQsIDI5LCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgNjYsIDIwNiwgMTE3LCAxNzEsIDIxMSwgCisgICAgMjU1LCAyMDMsIDE4MiwgMjA2LCAxMTcsIDE3MSwgMjE1LCAyMjAsIDIwNiwgMTE3LCAyNDIsIDE5NSwgMTYsIDI0OSwgMTAzLCAKKyAgICAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgNzIsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTEsIDIyMSwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjExLCAyNTUsIDc0LCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUxLCAxNzcsIDIyMiwgMTkzLCAyMDYsIDExNywgCisgICAgMTcxLCAyMTEsIDI1NSwgMjUxLCAxNzcsIDIyMiwgMTk0LCAyMDYsIDExNywgMTcxLCAyMjUsIDk1LCAyMDYsIDExNywgMTcxLCAKKyAgICAyMjIsIDE5MCwgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTEsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMzgsIDIxNiwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTksIDIwNiwgNjEsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMDUsIDEwMSwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjIyLCAxOTksIDI0NywgMTMsIDIwNiwgMTE3LCAxNzEsIDIwNiwgMTA5LCAyMDYsIDExNywgMTcxLCAyMTksIAorICAgIDEyMiwgMjA2LCAxMTcsIDE3MSwgMjAwLCA3OSwgMjA2LCAxMTcsIDE3MSwgMjM3LCA0LCAyMDYsIDExNywgMTcsIDE5OSwgCisgICAgODEsIDIwNiwgMTE3LCAxNywgMTAyLCAyMDYsIDExNywgMTcsIDEwNSwgMjA2LCAxMTcsIDE3LCAxNDcsIDIwNiwgMTE3LCAKKyAgICAxNywgMTQ5LCAyMDYsIDExNywgMTcsIDE2NCwgMjA2LCAxMTcsIDE3LCAxODcsIDIwNiwgMTE3LCAxNywgMjEwLCAxMzUsIAorICAgIDIwNiwgMTE3LCAxNywgMTkyLCAyMDYsIDExNywgMTcsIDIxOSwgMTEzLCAyMDYsIDExNywgMTcxLCAyNTEsIDcyLCAyMDYsIAorICAgIDExNywgMTcxLCAyMjYsIDE3NiwgMjI1LCA3NSwgMSwgMjI2LCA4OCwgMjI1LCA3NSwgMSwgMjI2LCAxNzksIDIwNywgMjI1LCAKKyAgICAyMjUsIDc1LCAxLCAyMjYsIDE3OSwgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIxOSwgMTc4LCAyMjUsIDc1LCAxLCAyNDYsIAorICAgIDkxLCAyMjUsIDc1LCAxLCAyMDksIDMwLCAyMDYsIDI0NiwgMjI1LCA3NSwgMSwgMjE4LCAyNiwgMjI1LCA3NSwgMSwgMjQwLCAKKyAgICAyMTEsIDIyNSwgNzUsIDEsIDEzOCwgMjI1LCA3NSwgMSwgMjA2LCA2MiwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIDIwNiwgNjIsIAorICAgIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMTgsIDI0MSwgMjI1LCA3NSwgMSwgMjQ4LCAxMjQsIDIyNSwgNzUsIDEsIDIxNSwgCisgICAgMTA2LCAyMjUsIDc1LCAxLCAyMTUsIDIxOCwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIDIzNywgMTQsIDIwNiwgMjQ2LCAyMjUsIAorICAgIDc1LCAxLCAyMTUsIDIxOCwgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIzNywgMTQsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCAKKyAgICAyMjEsIDEzNiwgMjI1LCA3NSwgMSwgMTk5LCAyNDUsIDIyNSwgNzUsIDEsIDIyNCwgMTExLCAyMjQsIDE2OSwgMjI1LCA3NSwgCisgICAgMSwgMjI0LCAxMTEsIDIyNCwgNzIsIDIyNSwgNzUsIDEsIDIwMSwgMCwgMjI1LCA3NSwgMSwgMjA5LCAzMCwgMjA3LCAyMjUsIAorICAgIDIyNSwgNzUsIDEsIDIzMywgMjA4LCAyMDcsIDIyNSwgMjI1LCA3NSwgMSwgNzQsIDIyNSwgNzUsIDEsIDIzMywgMjA4LCAKKyAgICAyMDYsIDI0NiwgMjI1LCA3NSwgMjM4LCAxOTUsIDIyNSwgNzUsIDIyLCAyLCA2MiwgMjI1LCA3NSwgMjIsIDIsIDIyMiwgCisgICAgMTk5LCAyMjcsIDY4LCAyMjUsIDc1LCAyMiwgMiwgMjUyLCAxMzgsIDIyNSwgNzUsIDIyLCAyLCAyNTEsIDEwMSwgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDcwLCAyMjUsIDc1LCAyMiwgMiwgMjI4LCAxNTEsIDIyNSwgNzUsIDIyLCAyLCAyMDAsIDEyMywgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDE5OSwgMTY3LCAyMjUsIDc1LCAyMiwgMiwgNjYsIDIyNSwgNzUsIDIyLCAyLCAyMDMsIDE4MiwgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDIyMiwgMTk5LCAyMjYsIDcxLCAyMjUsIDc1LCAyMTAsIDE2MiwgMiwgMjI0LCAxMTAsIDIyNSwgNzUsIAorICAgIDIxMCwgMTYyLCAyLCAyMTgsIDI2LCAyMjUsIDc1LCAyMiwgMiwgNzIsIDIyNSwgNzUsIDIyLCAyLCAyMzgsIDIzNCwgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDc0LCAyMjUsIDc1LCAyMiwgMiwgMjUwLCAxMTIsIDIyNSwgNzUsIDIyLCAyLCAyNTEsIDE3NiwgMjI1LCAKKyAgICA3NSwgMjI2LCA4OSwgMTk0LCAyMjUsIDc1LCAxNTAsIDIyMiwgMTk5LCAyMzgsIDIxNiwgMjI1LCA3NSwgMTUwLCAyMjIsIAorICAgIDE5OSwgMjA2LCA2MSwgMjI1LCA3NSwgMTUwLCAyMjIsIDE5OSwgMjA2LCAxNSwgMjI1LCA3NSwgMTUwLCAyMjIsIDE5OSwgCisgICAgMjQ3LCAxMTAsIDIyNSwgNzUsIDI0NywgMTU1LCA4MSwgMjI1LCA3NSwgMjE5LCAxMzEsIDIyNSwgNzUsIDE3LCAxOTksIDgxLCAKKyAgICAyMjUsIDc1LCAxNywgMTAyLCAyMjUsIDc1LCAxNywgMTA1LCAyMjUsIDc1LCAxNywgMTQ3LCAyMjUsIDc1LCAxNywgMTQ5LCAKKyAgICAyMjUsIDc1LCAxNywgMTY0LCAyMjUsIDc1LCAxNywgMTg3LCAyMjUsIDc1LCAxNywgMjEwLCAxMzUsIDIyNSwgNzUsIDE3LCAKKyAgICAxOTIsIDIyNSwgNzUsIDE3LCAyMTksIDExMywgMjI1LCA3NSwgMjMzLCAyMDgsIDIxOCwgMjQxLCAyMjUsIDc1LCAyMzMsIAorICAgIDIwOCwgMjIxLCAxMzYsIDIyNSwgNzUsIDEsIDIyNiwgMTgwLCAyMzUsIDExNiwgMjI1LCA3NSwgMSwgMjI2LCAxODAsIDIxOCwgCisgICAgMjYsIDc5LCA1LCAyMTcsIDg2LCA3OSwgMTM0LCAyMzUsIDUyLCAyMDAsIDEsIDIyMSwgMjI5LCAyMDUsIDM4LCA2MiwgNzksIAorICAgIDEzNCwgMjM1LCA1MiwgMjAwLCAxLCAyMjEsIDIyOSwgMjU1LCAxMzUsIDIxMywgNiwgMjQ5LCAxMCwgMTc4LCA3OSwgMTM0LCAKKyAgICAyMzUsIDUyLCAyMDAsIDEsIDIyMSwgMjI5LCAyNTUsIDEzNSwgMjM1LCA1MiwgMjA1LCAxOCwgMTc4LCA3OSwgMTM0LCA4MiwgCisgICAgMjAwLCAxLCAyMjEsIDIyOSwgMjIyLCA3OCwgMTc4LCA3OSwgMTM0LCAyNDYsIDEwNiwgMjAwLCAxLCAyMjEsIDIyOSwgMjEwLCAKKyAgICAxMjEsIDE3OCwgNzksIDEzNCwgMjQ3LCAxMzAsIDIwMCwgMSwgMjIxLCAyMjksIDIxNSwgMjA4LCAyMTAsIDEwNywgMTc4LCAKKyAgICA3OSwgMTM0LCAyMDAsIDEsIDIyMSwgMjI5LCAyMDUsIDE4LCAyMTAsIDEwNywgMTc4LCA3OSwgMTM0LCAyMTEsIDIzMSwgCisgICAgMjEwLCAxMDYsIDc5LCAxMzQsIDI0OCwgMzksIDIwMCwgMSwgMjIxLCAyMjgsIDc5LCAxMzQsIDI0OCwgMTQ2LCAyMTAsIDQsIAorICAgIDIwMCwgMSwgMjIxLCAyMjgsIDc5LCAxMzQsIDIyOCwgNTQsIDIwNSwgMTcsIDc5LCAxMzQsIDI0MSwgMTQzLCAyMDUsIDE4LCAKKyAgICAyNDgsIDM4LCA3OSwgMTM0LCAyMTAsIDEwNiwgNzksIDEzNCwgMjE4LCAzMSwgMjEwLCAxMDYsIDc5LCAxMzQsIDIwNSwgMTgsIAorICAgIDIxMCwgMTA2LCA3OSwgMTM0LCAyMTgsIDMxLCAyMDUsIDE4LCAyMTAsIDEwNiwgNzksIDEzNCwgMjEzLCAyOSwgMjQ2LCAKKyAgICAyNTAsIDIwOCwgMTk2LCAyMTAsIDEwNiwgNzksIDEzNCwgMjEzLCA5NywgMjM1LCA4NSwgMjEwLCAxMDYsIDc5LCAxMzQsIAorICAgIDI0NywgMTMwLCAyNTUsIDEzOSwgMjEyLCAxNzksIDIyMiwgNzcsIDE2OCwgMjQ3LCAxNTgsIDc5LCAxMzQsIDIzNSwgNTIsIAorICAgIDIwNSwgMTcsIDc5LCAyMjQsIDk2LCAyLCAyNDcsIDM1LCAyMTIsIDE3OCwgNzksIDIyNCwgOTYsIDIsIDIyNCwgMjIxLCAKKyAgICAyMTIsIDE3OCwgNzksIDI1MCwgMTYxLCAyLCAyMTAsIDExNywgMjM2LCAxOCwgMjU1LCAxNDAsIDIxMiwgMTc4LCA3OSwgCisgICAgMjUwLCAxNjEsIDIsIDI1NSwgMTM3LCAxNzIsIDc5LCAyNTAsIDE2MSwgMiwgMjExLCAyMDMsIDIwNSwgMTIsIDc5LCAyLCAKKyAgICAyMTMsIDE5MiwgMjQwLCAyMjUsIDIzNiwgMTcsIDc5LCAyLCAyMTMsIDE5MiwgMjQwLCAyMjUsIDIzNSwgMTE4LCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMzUsIDUzLCA3OSwgMiwgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMzYsIDE3LCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMzUsIDExOCwgNzksIDIsIDIxMywgMTkyLCAyNDAsIDIyNSwgMjEzLCAxOTIsIDIyMCwgCisgICAgMTQ5LCA3OSwgMTcsIDE5OSwgODEsIDc5LCAxNywgMTAyLCA3OSwgMTcsIDEwNSwgNzksIDE3LCAxNDcsIDc5LCAxNywgMTQ5LCAKKyAgICA3OSwgMTcsIDE2NCwgNzksIDE3LCAxODcsIDc5LCAxNywgMjEwLCAxMzUsIDc5LCAxNywgMTkyLCA3OSwgMTcsIDIxOSwgCisgICAgMTEzLCA3OSwgMTcsIDE2NywgMTAyLCA3OSwgMTcsIDE2NywgMTA1LCA3OSwgMTcsIDE2NywgMTQ3LCA3OSwgMTcsIDE2NywgCisgICAgMTQ5LCA3OSwgMTcsIDE2NywgMTY0LCA3OSwgMTcsIDE2NywgMTg3LCA3OSwgMTcsIDE2NywgMjEwLCAxMzUsIDc5LCAxNywgCisgICAgMTY3LCAxOTIsIDc5LCAxNywgMTY3LCAyMTksIDExMywgNzksIDE3LCAxNjcsIDE5OSwgODEsIDc5LCAxMzQsIDI0OCwgNDEsIAorICAgIDIxMiwgMTc4LCA3OSwgMTM0LCAyMTksIDI0NCwgMjQ3LCAyMjUsIDIxOCwgNDIsIDE5OSwgMTYsIDc5LCAxMzQsIDI0NywgCisgICAgMTMwLCAyNTUsIDEzOSwgMjEyLCAxNzksIDI0NywgMjI2LCAyMjEsIDE4MiwgMjQ3LCAxNTgsIDc5LCAxMzQsIDIxOSwgMjQ0LCAKKyAgICAyNDcsIDIyNSwgMjEwLCAxMTgsIDIxMiwgMTc4LCA3OSwgMTM0LCAyNDcsIDksIDIyMSwgMjI4LCA3OSwgMTM0LCAyMDUsIAorICAgIDMzLCAyNTUsIDEzNiwgNzksIDEzNCwgMjM1LCAzNSwgMjEyLCAxNzksIDIzNCwgMjUwLCA3OSwgMTM0LCAyMzUsIDM1LCAKKyAgICAyMTIsIDE3OSwgMjM1LCAwLCA3OSwgMTM0LCAyNTEsIDc3LCAyMjYsIDE5NywgMjM0LCAyNTAsIDc5LCAxMzQsIDI1MSwgNzcsIAorICAgIDIyNiwgMTk3LCAyMzUsIDAsIDc5LCAyLCAyMDAsIDcxLCAyMDUsIDE2LCA3OSwgMiwgMjIyLCAxNTksIDIwNSwgMTYsIDc5LCAKKyAgICAxLCAxNjEsIDc5LCAxLCAyMjYsIDIwNywgNzksIDEsIDIzNiwgODksIDc5LCAxLCAyMzUsIDE5OSwgNzksIDEsIDIxOSwgCisgICAgMjUzLCA3OSwgMSwgMjQ3LCAxOTAsIDc5LCAxLCAyNDcsIDM3LCA3OSwgMSwgMjI3LCAyNDgsIDc5LCAxLCAyMTgsIDYwLCAKKyAgICA3OSwgMSwgMjA0LCAyNTMsIDc5LCAxLCAyMDQsIDI0MSwgNzksIDEsIDI0MSwgMjIwLCA3OSwgMSwgMjQxLCAyMDQsIDc5LCAKKyAgICAxLCAyMTksIDIxLCA3OSwgMSwgMjA3LCAzNiwgNzksIDEsIDIwNiwgMTIyLCA3OSwgMSwgMjQyLCA1OCwgNzksIDEsIDI0MSwgCisgICAgMTAwLCA3OSwgMSwgMTg4LCA3OSwgMSwgMTcyLCA3OSwgMSwgMjE1LCAyNDUsIDc5LCAxLCAyNDksIDEzNiwgNzksIDEsIAorICAgIDI0OCwgMjAwLCA3OSwgMSwgMTc4LCA3OSwgMSwgMjA1LCAzMiwgNzksIDEsIDIwNSwgMjIsIDc5LCAxLCAyMzksIDkzLCA3OSwgCisgICAgMSwgMjM5LCA4NywgNzksIDEsIDIwMSwgMTE0LCA3OSwgMSwgMTk5LCA3NywgNzksIDEsIDE5OSwgMTE0LCA3OSwgMSwgMjU1LCAKKyAgICAxNDIsIDc5LCAxLCAxODMsIDc5LCAxLCAyMTMsIDI1MiwgNzksIDEsIDE5NCwgNzksIDEsIDIxMCwgMTE0LCA3OSwgMSwgCisgICAgMjA4LCAxNzksIDc5LCAxLCAyMTIsIDY0LCA3OSwgMSwgMTQ0LCA3OSwgMSwgNjIsIDc5LCAxLCAyMjYsIDI5LCA3OSwgMSwgCisgICAgMjM3LCA1NywgMjEzLCAyNTIsIDc5LCAxLCAyMjYsIDEwOSwgNzksIDEsIDIxMiwgMjE1LCA3OSwgMjIsIDIsIDI1MiwgMTM4LCAKKyAgICA3OSwgMjIsIDIsIDcwLCA3OSwgMjIsIDIsIDIyOCwgMTUxLCA3OSwgMjIsIDIsIDY2LCA3OSwgMjIsIDIsIDIwMywgMTgyLCAKKyAgICA3OSwgMjIsIDIsIDEwOSwgMTQ2LCA3OSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDc5LCAyMiwgMiwgMTA5LCAxNTYsIDc5LCAKKyAgICAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgNzksIDIyLCAyLCA3MiwgNzksIDIyLCAyLCAyMzgsIDI1NSwgNzksIDIyLCAyLCA3NCwgCisgICAgNzksIDIyLCAyLCAyMTcsIDYzLCA3OSwgMiwgMjEzLCAxMiwgMjA4LCAyNSwgMjE5LCAyNTQsIDIxMywgMSwgNzksIDIsIAorICAgIDIxMywgNiwgMjQ5LCA5LCA3OSwgMjIsIDIsIDIxMywgMTA1LCA3MCwgNzksIDIyLCAyLCAyMTMsIDEwNSwgMjI4LCAxNTEsIAorICAgIDc5LCAyLCAyMTgsIDQyLCAxOTksIDE3LCAyMjAsIDE1OCwgMjQyLCA1OCwgNzksIDIsIDIwOSwgNDQsIDIyNSwgNDIsIDc5LCAKKyAgICAxMzQsIDIzNCwgMjE1LCA3OSwgMTM0LCAyMTYsIDE3MywgNzksIDIsIDIyNSwgNDUsIDIxMiwgMTc4LCA3OSwgMiwgMjAwLCAKKyAgICA3NiwgMjEyLCAxNzgsIDc5LCAyLCAyMjUsIDQ2LCAyMDUsIDMzLCAyNDcsIDE1OCwgNzksIDIsIDIyMiwgODAsIDI0NywgCisgICAgMTU4LCA3OSwgMiwgMjM1LCA1NiwgMjQ3LCAxNTksIDIxMywgOTUsIDc5LCAyLCAyMzUsIDU2LCAyMjIsIDcwLCAyMTMsIDk1LCAKKyAgICA3OSwgMiwgMjI4LCA1MCwgMjIyLCA4MCwgMjQ3LCAxNTgsIDc5LCAyMDgsIDEyLCAyLCAyMjUsIDQ2LCAyMDUsIDMzLCAyNDcsIAorICAgIDE1OCwgNzksIDIwOCwgMTIsIDIsIDIyMiwgODAsIDI0NywgMTU4LCA3OSwgMjA4LCAxMiwgMiwgMjI4LCA1MCwgMjIyLCA4MCwgCisgICAgMjQ3LCAxNTgsIDc5LCAyMDgsIDEyLCAxLCAxNjEsIDc5LCAyMDgsIDEyLCAxLCAyMjYsIDIwNywgNzksIDIwOCwgMTIsIDEsIAorICAgIDIzNiwgODksIDc5LCAyMDgsIDEyLCAxLCAyMzUsIDE5OSwgNzksIDIwOCwgMTIsIDEsIDIxOSwgMjUzLCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMjQ3LCAxOTAsIDc5LCAyMDgsIDEyLCAxLCAyNDcsIDM3LCA3OSwgMjA4LCAxMiwgMSwgMjI3LCAyNDgsIDc5LCAyMDgsIAorICAgIDEyLCAxLCAyMTgsIDYwLCA3OSwgMjA4LCAxMiwgMSwgMjA0LCAyNTMsIDc5LCAyMDgsIDEyLCAxLCAyMDQsIDI0MSwgNzksIAorICAgIDIwOCwgMTIsIDEsIDI0MSwgMjIwLCA3OSwgMjA4LCAxMiwgMSwgMjQxLCAyMDQsIDc5LCAyMDgsIDEyLCAxLCAyMTksIDIxLCAKKyAgICA3OSwgMjA4LCAxMiwgMSwgMjA3LCAzNiwgNzksIDIwOCwgMTIsIDEsIDIwNiwgMTIyLCA3OSwgMjA4LCAxMiwgMSwgMjQyLCAKKyAgICA1OCwgNzksIDIwOCwgMTIsIDEsIDI0MSwgMTAwLCA3OSwgMjA4LCAxMiwgMSwgMTg4LCA3OSwgMjA4LCAxMiwgMSwgMTcyLCAKKyAgICA3OSwgMjA4LCAxMiwgMSwgMjE1LCAyNDUsIDc5LCAyMDgsIDEyLCAxLCAyNDksIDEzNiwgNzksIDIwOCwgMTIsIDEsIDI0OCwgCisgICAgMjAwLCA3OSwgMjA4LCAxMiwgMSwgMTc4LCA3OSwgMjA4LCAxMiwgMSwgMjA1LCAzMiwgNzksIDIwOCwgMTIsIDEsIDIwNSwgCisgICAgMjIsIDc5LCAyMDgsIDEyLCAxLCAyMzksIDkzLCA3OSwgMjA4LCAxMiwgMSwgMjM5LCA4NywgNzksIDIwOCwgMTIsIDEsIAorICAgIDIwMSwgMTE0LCA3OSwgMjA4LCAxMiwgMSwgMTk5LCA3NywgNzksIDIwOCwgMTIsIDEsIDE5OSwgMTE0LCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMjU1LCAxNDIsIDc5LCAyMDgsIDEyLCAxLCAxODMsIDc5LCAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgNzksIDIwOCwgMTIsIAorICAgIDEsIDE5NCwgNzksIDIwOCwgMTIsIDEsIDIxMCwgMTE0LCA3OSwgMjA4LCAxMiwgMSwgMjA4LCAxNzksIDc5LCAyMDgsIDEyLCAKKyAgICAxLCAyMTIsIDY0LCA3OSwgMjA4LCAxMiwgMSwgMTQ0LCA3OSwgMjA4LCAxMiwgMSwgNjIsIDc5LCAyMDgsIDEyLCAxLCAyMjYsIAorICAgIDI5LCA3OSwgMjA4LCAxMiwgMSwgMjM3LCA1NywgMjAxLCAxMTQsIDc5LCAyMDgsIDEyLCAxLCAyMzcsIDU3LCAxODMsIDc5LCAKKyAgICAyMDgsIDEyLCAxLCAyMzcsIDU3LCAyMTMsIDI1MiwgNzksIDIyNiwgMTYsIDIxMiwgMTc2LCAyMjYsIDIwNywgNzksIDIyNiwgCisgICAgMTYsIDIxMiwgMTc2LCAyMjYsIDIwOCwgMjQ3LCAyMjYsIDIyMSwgMTgyLCAyNDcsIDE1OCwgNzksIDI0NywgMTQ1LCAyLCAKKyAgICA4MCwgMjQ5LCAxLCA3OSwgMjQ3LCAxNDUsIDIsIDE2MiwgMjQ5LCAxLCA3OSwgMjQ3LCAxNDUsIDIsIDI0NywgMTQ3LCAyMDYsIAorICAgIDE5OSwgNzksIDI0NywgMTQ1LCAyLCAyMTEsIDIzMCwgMjU1LCAxNDEsIDc5LCAxNiwgMjM5LCAxNTIsIDI0OCwgMzYsIDc5LCAKKyAgICAxNiwgMjEzLCAxOTEsIDIxMywgMTMsIDc5LCAxNiwgMjE2LCAxOTcsIDIzNiwgMTYsIDc5LCAxNiwgMjEzLCAxOTEsIDIxMywgCisgICAgMTQsIDIxMywgOTcsIDIzNSwgODQsIDc5LCAxNiwgMjE1LCAyMDgsIDE3MiwgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNiwgCisgICAgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNywgMjE4LCAzMSwgMjU1LCAxMzgsIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzcsIAorICAgIDIzNSwgNTQsIDI1NSwgMTM4LCA3OSwgMTYsIDIxOCwgMjI0LCAyNDgsIDM3LCAyNDcsIDIyNiwgMjU1LCAxMzgsIDc5LCAyLCAKKyAgICAyMTMsIDE5MiwgMjIwLCAxNTAsIDIxMywgMTkyLCAyNDAsIDIyNCwgNzksIDIsIDIxMywgMTkyLCAyMjAsIDE1MCwgMjM1LCAKKyAgICA1MywgNzksIDEzNCwgMjQ4LCA0MCwgMjEwLCA0LCAyMzUsIDE2MiwgMjIxLCAyMjksIDIxMywgOTYsIDc5LCAxMzQsIDIyMSwgCisgICAgMTM4LCAyMDAsIDEsIDIzNSwgMTYyLCAyMjEsIDIyOSwgMjEzLCA5NiwgNzksIDEzNCwgMjE4LCAzMSwgMjA1LCAxNywgNzksIAorICAgIDEzNCwgODIsIDI0OCwgNjMsIDIxMywgMywgMjAwLCAxLCAyMjEsIDIyOSwgMjIyLCA3OCwgMTc4LCA3OSwgMTM0LCAyNDYsIAorICAgIDEwNiwgMjQ4LCA2MywgMjEzLCAzLCAyMDAsIDEsIDIyMSwgMjI5LCAyMTAsIDEyMSwgMTc4LCAyMTMsIDQ1LCAyMDcsIDE4OCwgCisgICAgNTQsIDIyNSwgMjcsIDIwNywgMTg4LCA1NCwgMjEzLCA0NSwgMjA3LCAxODgsIDIsIDMsIDI0MCwgMTgwLCAyMjUsIDI3LCAKKyAgICAyMDcsIDE4OCwgMiwgMywgMjQwLCAxODAsIDc5LCAxMzQsIDIyNSwgMzcsIDIyMiwgODEsIDIxMiwgMTc4LCA3OSwgMTM0LCAKKyAgICAyMDUsIDEyNSwgMjIyLCA4MSwgMjEyLCAxNzgsIDcxLCAxLCAxNjEsIDcxLCAxLCAyMjYsIDIwNywgNzEsIDEsIDIzNiwgODksIAorICAgIDcxLCAxLCAyMzUsIDE5OSwgNzEsIDEsIDIxOSwgMjUzLCA3MSwgMSwgMjQ3LCAxOTAsIDcxLCAxLCAyNDcsIDM3LCA3MSwgMSwgCisgICAgMjI3LCAyNDgsIDcxLCAxLCAyMjcsIDIxNSwgNzEsIDEsIDIxOCwgNjAsIDcxLCAxLCAyMTgsIDI0MywgNzEsIDEsIDIwNCwgCisgICAgMjUzLCA3MSwgMSwgMjA0LCAyNDEsIDcxLCAxLCAyNDEsIDIyMCwgNzEsIDEsIDI0MSwgMjA0LCA3MSwgMSwgMjE5LCAyMSwgCisgICAgNzEsIDEsIDIwNywgMzYsIDcxLCAxLCAyMDYsIDEyMiwgNzEsIDEsIDI0MiwgNTgsIDcxLCAxLCAyNDEsIDEwMCwgNzEsIDEsIAorICAgIDE4OCwgNzEsIDEsIDE3MiwgNzEsIDEsIDIxNSwgMjQ1LCA3MSwgMSwgMjQ5LCAxMzYsIDcxLCAxLCAyNDgsIDIwMCwgNzEsIAorICAgIDEsIDE3OCwgNzEsIDEsIDE4MywgNzEsIDEsIDIxMywgMjUyLCA3MSwgMSwgMTk0LCA3MSwgMSwgMjAxLCAxMTQsIDcxLCAxLCAKKyAgICAyMTIsIDY0LCA3MSwgMSwgMTQ0LCA3MSwgMSwgMjI0LCAxMzgsIDcxLCAxLCA2MiwgNzEsIDEsIDIxMCwgOTAsIDYyLCA3MSwgCisgICAgMSwgNzAsIDcxLCAxLCAyMjgsIDE1MSwgNzEsIDEsIDY2LCA3MSwgMSwgMjAzLCAxODIsIDcxLCAxLCA3MiwgNzEsIDEsIAorICAgIDIyMSwgMTA3LCA3MiwgNzEsIDEsIDc0LCA3MSwgMSwgMjUwLCAxMzksIDcxLCAyMiwgMiwgMjA2LCAyNDgsIDI1MiwgMTM4LCAKKyAgICA3MSwgMjIsIDIsIDI1MiwgMTM4LCA3MSwgMjIsIDIsIDcwLCA3MSwgMjIsIDIsIDIyOCwgMTUxLCA3MSwgMjIsIDIsIDY2LCAKKyAgICA3MSwgMjIsIDIsIDIwMywgMTgyLCA3MSwgMjIsIDIsIDcyLCA3MSwgMjIsIDIsIDI1MSwgMTc2LCA3MSwgMjIsIDIsIDIyMSwgCisgICAgMTA3LCAyMjgsIDE1MSwgNzEsIDIyLCAyLCAyMjEsIDEwNywgNzQsIDcxLCAyMiwgMiwgMTk3LCA1NiwgNzEsIDIsIDI1MSwgCisgICAgMzMsIDcxLCAyLCA3MywgNTcsIDcxLCAyLCAyMDIsIDIwMywgNzEsIDIsIDIwMiwgMjA4LCA3MSwgMiwgMjUwLCAxODUsIDcxLCAKKyAgICAxMTEsIDIsIDE3OSwgMTgzLCA3MSwgMTExLCAyLCAxNzksIDIxMywgMjUyLCA3MSwgMTExLCAyLCAxNzksIDIwMSwgMTE0LCAKKyAgICA3MSwgMTExLCAyLCAxNzksIDE0NCwgNzEsIDEsIDIzNSwgNjksIDIxMiwgNjQsIDcxLCAxNywgMTk5LCA4MSwgNzEsIDE3LCAKKyAgICAxMDIsIDcxLCAxNywgMTA1LCA3MSwgMTcsIDE0NywgNzEsIDE3LCAxNDksIDcxLCAxNywgMTY0LCA3MSwgMTcsIDE4NywgNzEsIAorICAgIDE3LCAyMTAsIDEzNSwgNzEsIDE3LCAxOTIsIDcxLCAxNywgMjE5LCAxMTMsIDcxLCAyLCAyMjQsIDE0OCwgMjExLCAxOTIsIAorICAgIDcxLCAyLCAyMTEsIDE5MiwgNzEsIDE2LCAyMjQsIDEwNSwgNzEsIDE2LCAyNDYsIDY0LCA3MSwgMTYsIDI1MSwgMTk3LCA3MSwgCisgICAgMTYsIDIzNSwgMjU0LCA3MSwgMSwgMjEwLCAxMTQsIDcxLCAxLCAyMDgsIDE3OSwgNzEsIDEsIDEwOSwgMTQ2LCA3MSwgMSwgCisgICAgMTA5LCAyMTIsIDIxNiwgNzEsIDEsIDEwOSwgMTU2LCA3MSwgMSwgMTA5LCAyMjQsIDEzOSwgNzEsIDIyLCAyLCAxMDksIAorICAgIDE0NiwgNzEsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCA3MSwgMjIsIDIsIDEwOSwgMTU2LCA3MSwgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDcxLCAxLCAyMjEsIDEwNywgMjE5LCAyNTMsIDcxLCAxLCAyMjEsIDEwNywgMjI3LCAyMTUsIDcxLCAxLCAyMjEsIAorICAgIDEwNywgMjQ5LCA0NCwgNzEsIDEsIDIyMSwgMTA3LCAyNDksIDM5LCA3MSwgMTExLCAyLCAyMjEsIDEwNywgMTc5LCAxODgsIAorICAgIDcxLCAxMTEsIDIsIDIyMSwgMTA3LCAxNzksIDE3OCwgNzEsIDExMSwgMiwgMjIxLCAxMDcsIDE3OSwgMTk0LCA3MSwgMSwgCisgICAgMjEwLCAxMjAsIDIyNywgNDQsIDIxMCwgMTE0LCA3MSwgMjIsIDIsIDIxMCwgMTIwLCAyMjcsIDQ0LCAyMzgsIDY5LCA3MSwgCisgICAgMTUwLCAxMzQsIDIxMCwgMTIwLCAyMjcsIDQ0LCAyMzQsIDE1MywgNzEsIDE1MCwgMTM0LCAyMTAsIDEyMCwgMjI3LCA0NCwgCisgICAgMjI3LCA5LCAyMTUsIDIxNywgNzEsIDEsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDYsIDEyMiwgNzEsIDEsIAorICAgIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMTQsIDE4NSwgNzEsIDIyLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCAKKyAgICA0NCwgMjM4LCA2OSwgNzEsIDIyLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA0LCAzMSwgNzEsIDIsIDIwMSwgCisgICAgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIDE3MywgNzEsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIAorICAgIDE3MiwgNzEsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIDE3MSwgNzEsIDIsIDIwMSwgNDUsIDIxNCwgCisgICAgMTc5LCAyMjcsIDQ0LCAyMDUsIDE3MCwgNzEsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIDE2OSwgNzEsIAorICAgIDEsIDIzOSwgMTIsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMTksIDIxLCA3MSwgMSwgMjM5LCAxMiwgMjE0LCAxNzksIDIyNywgCisgICAgNDQsIDE5OSwgMTc0LCA3MSwgMSwgMjM5LCAxMiwgMjE0LCAxNzksIDIyNywgNDQsIDIzNSwgMTY0LCA3MSwgMjIsIDIsIAorICAgIDIzNiwgMTEsIDIyNywgNDQsIDcwLCA3MSwgMjIsIDIsIDIyNywgMTQsIDIxNywgMTIxLCA3MSwgMjIsIDIsIDIyNywgMTQsIAorICAgIDY2LCA3MSwgMjIsIDIsIDIyNywgMTQsIDIzOCwgMjU1LCA3MSwgMSwgMjEwLCA5MCwgMTYxLCA3MSwgMSwgMjEwLCA5MCwgCisgICAgMjI2LCAyMDcsIDcxLCAxLCAyMTAsIDkwLCAyMzYsIDg5LCA3MSwgMSwgMjEwLCA5MCwgMjQ3LCAxOTAsIDcxLCAxLCAyMTAsIAorICAgIDkwLCAxOTksIDExNCwgNzEsIDEsIDIxMCwgOTAsIDIxOCwgNjAsIDcxLCAxLCAyMTAsIDkwLCAyNDIsIDU4LCA3MSwgMSwgCisgICAgMjEwLCA5MCwgMTg4LCA3MSwgMSwgMjEwLCA5MCwgMjE1LCAyNDUsIDcxLCAxLCAyMTAsIDkwLCAyMzcsIDE5NSwgNzEsIDEsIAorICAgIDIxMCwgOTAsIDI0OSwgMTM2LCA3MSwgMSwgMjEwLCA5MCwgMjA2LCAxMjIsIDcxLCAxLCAyMTAsIDkwLCAxNDQsIDcxLCAKKyAgICAxMTEsIDIsIDIxMCwgOTAsIDE3OSwgMjAxLCAxMTQsIDcxLCAyMiwgMiwgMjEwLCA5MCwgMjUyLCAxMzgsIDcxLCAyMiwgMiwgCisgICAgMjEwLCA5MCwgNzIsIDcxLCAyMiwgMiwgMjEwLCA5MCwgMTk3LCA1NiwgNzEsIDIyLCAyLCAyMTAsIDkwLCA0NywgMjAwLCAKKyAgICAxMjMsIDcxLCAyLCAyMTAsIDkwLCAyMDUsIDE3MiwgNzEsIDIsIDIxMCwgOTAsIDIwNSwgMTcxLCA3MSwgMiwgMjEwLCA5MCwgCisgICAgMjA1LCAxNjksIDcxLCAyLCAyMTAsIDkwLCAyMDUsIDE2OCwgNzEsIDIsIDIxMCwgOTAsIDI0MywgNiwgMjA1LCAxNzIsIDcxLCAKKyAgICAyLCAyMTAsIDkwLCAyNDMsIDYsIDIwNSwgMTcxLCA3MSwgMiwgMjEwLCA5MCwgMjQzLCA2LCAyMzgsIDE4MiwgMjA1LCAxNzQsIAorICAgIDcxLCAxLCAyMTIsIDE2MCwgMjE2LCAxODEsIDIzNywgMTk1LCA3MSwgMiwgMjEyLCAxNjAsIDIxNiwgMTgxLCAyMDUsIDE2OSwgCisgICAgNzEsIDIxMCwgOTAsIDE3LCAxOTksIDgxLCA3MSwgMjEwLCA5MCwgMTcsIDEwMiwgNzEsIDIxMCwgOTAsIDE3LCAxMDUsIDcxLCAKKyAgICAyMTAsIDkwLCAxNywgMTQ3LCA3MSwgMjEwLCA5MCwgMTcsIDE0OSwgNzEsIDIxMCwgOTAsIDE3LCAxNjQsIDcxLCAyMTAsIAorICAgIDkwLCAxNywgMTg3LCA3MSwgMjEwLCA5MCwgMTcsIDIxMCwgMTM1LCA3MSwgMjEwLCA5MCwgMTcsIDE5MiwgNzEsIDIxMCwgCisgICAgOTAsIDE3LCAyMTksIDExMywgNzEsIDIsIDIyNiwgMjAwLCAyMDUsIDE3MywgNzEsIDIsIDIyNiwgMjAwLCAyMDUsIDE3MSwgCisgICAgNzEsIDIyLCAyLCAyNTEsIDE2MywgNjIsIDcxLCAyMiwgMiwgMjUxLCAxNjMsIDI1MSwgMTc2LCA3MSwgMTYsIDIxMCwgOTAsIAorICAgIDEwMiwgNzEsIDE2LCAyMTAsIDkwLCAyMzgsIDQyLCAxMTgsIDYsIDEsIDI1MSwgODUsIDExOCwgNiwgMSwgMjQ5LCA4OCwgCisgICAgMTE4LCA2LCAxLCAyMzYsIDU5LCAxMTgsIDYsIDEsIDI0MCwgMTkwLCAxMTgsIDYsIDEsIDIzOCwgMTc5LCAxMTgsIDYsIDEsIAorICAgIDIwMiwgMjE3LCAxMTgsIDYsIDEsIDE5OSwgODQsIDExOCwgNiwgMSwgMjA2LCAyNDQsIDExOCwgNiwgMSwgMjI4LCAxMTcsIAorICAgIDExOCwgNiwgMSwgMjI3LCA2OCwgMTE4LCA2LCAxLCAyMjUsIDY1LCAxMTgsIDYsIDEsIDIyMiwgMTgwLCAxMTgsIDYsIDEsIAorICAgIDIyMCwgMTI1LCAxMTgsIDYsIDEsIDIxNywgNzgsIDExOCwgNiwgMSwgMjE2LCAxMzAsIDExOCwgNiwgMSwgMTk5LCA3MywgCisgICAgMTE4LCA2LCAxLCAyMTMsIDIzNCwgMTE4LCA2LCAxLCAyMTIsIDEzLCAxMTgsIDYsIDEsIDIwNiwgMjMyLCAxMTgsIDYsIDEsIAorICAgIDIwNCwgNSwgMTE4LCA2LCAxLCAyMTUsIDIzNywgMTE4LCA2LCAxLCAyMjYsIDE5NSwgMTE4LCA2LCAxLCAyMzUsIDE5MCwgCisgICAgMTE4LCA2LCAxLCAyMTQsIDE0NCwgMTE4LCA2LCAxLCAyMTAsIDIxLCAxMTgsIDYsIDEsIDI0NiwgMjIzLCAxMTgsIDYsIDEsIAorICAgIDI0NywgMTU4LCAxMTgsIDYsIDEsIDIyNywgMTk4LCAxMTgsIDYsIDEsIDI0NiwgMTYyLCAxMTgsIDYsIDEsIDI0NywgMjEsIAorICAgIDExOCwgNiwgMSwgMjAwLCAxNzksIDExOCwgNiwgMSwgMjI3LCAyMTIsIDExOCwgNiwgMSwgMjM0LCAyMzAsIDExOCwgNiwgMSwgCisgICAgMjM0LCAxMzksIDExOCwgNiwgMSwgMjM0LCA2OSwgMTE4LCA2LCAxLCAyMDEsIDY0LCAxMTgsIDYsIDEsIDIzNCwgMTY2LCAKKyAgICAxMTgsIDYsIDEsIDIzMywgMjAzLCAxMTgsIDYsIDEsIDE5OSwgMjQ3LCAxMTgsIDYsIDEsIDI1MSwgMjEwLCAxMTgsIDEsIAorICAgIDI1MSwgODUsIDExOCwgMSwgMjQ5LCA4OCwgMTE4LCAxLCAyMzYsIDU5LCAxMTgsIDEsIDI0MCwgMTkwLCAxMTgsIDEsIDIzOCwgCisgICAgMTc5LCAxMTgsIDEsIDIwMiwgMjE3LCAxMTgsIDEsIDE5OSwgODQsIDExOCwgMSwgMjA2LCAyNDQsIDExOCwgMSwgMjI4LCAKKyAgICAxMTcsIDExOCwgMSwgMjI3LCA2OCwgMTE4LCAxLCAyMjUsIDY1LCAxMTgsIDEsIDIyMiwgMTgwLCAxMTgsIDEsIDIyMCwgCisgICAgMTI1LCAxMTgsIDEsIDIxNywgNzgsIDExOCwgMSwgMjE2LCAxMzAsIDExOCwgMSwgMTk5LCA3MywgMTE4LCAxLCAyMTMsIAorICAgIDIzNCwgMTE4LCAxLCAyMTIsIDEzLCAxMTgsIDEsIDIwNiwgMjMyLCAxMTgsIDEsIDIwNCwgNSwgMTE4LCAxLCAyMTUsIDIzNywgCisgICAgMTE4LCAxLCAyMjYsIDE5NSwgMTE4LCAxLCAyMzUsIDE5MCwgMTE4LCAxLCAyMTQsIDE0NCwgMTE4LCAxLCAyMTAsIDIxLCAKKyAgICAxMTgsIDEsIDI0NiwgMjIzLCAxMTgsIDEsIDI0NywgMTU4LCAxMTgsIDEsIDIyNywgMTk4LCAxMTgsIDEsIDI0NiwgMTYyLCAKKyAgICAxMTgsIDEsIDI0NywgMjEsIDExOCwgMSwgMjAwLCAxNzksIDExOCwgMSwgMjI3LCAyMTIsIDExOCwgMSwgMjM0LCAyMzAsIAorICAgIDExOCwgMSwgMjM0LCAxMzksIDExOCwgMSwgMjM0LCA2OSwgMTE4LCAxLCAyMDEsIDY0LCAxMTgsIDEsIDIzNCwgMTY2LCAKKyAgICAxMTgsIDEsIDIzMywgMjAzLCAxMTgsIDEsIDIzNywgMTEyLCAxMTgsIDEsIDE5OSwgMjQ3LCAxMTgsIDEsIDIzOCwgMTk3LCAKKyAgICAxMTgsIDEsIDIwNCwgMTg1LCAyMzYsIDU5LCAxMTgsIDEsIDI1MSwgMTcxLCAxMTgsIDIxNiwgMTI4LCAyMTAsIDE1NCwgNjcsIAorICAgIDEsIDExOCwgMjIwLCAxMjUsIDExOCwgMSwgMjUxLCAyMTAsIDExOCwgMSwgMjM0LCAxNjUsIDU0LCAxMTgsIDEsIDIyNSwgCisgICAgMTY3LCA1NCwgMjksIDEyOSwgMjI2LCAxMjEsIDI5LCAxMjksIDIwOCwgMTcxLCAyOSwgMTI5LCAyMTksIDE0MywgMjksIAorICAgIDEyOSwgMjA1LCAyNTMsIDI5LCAxMjksIDIwOCwgMTYwLCAyOSwgMTI5LCAyMTMsIDc4LCAyOSwgMTI5LCAyMjEsIDE5NywgCisgICAgMjksIDEyOSwgMjE1LCAxOTAsIDI5LCAxMjksIDIwOCwgMTY4LCAyOSwgMTI5LCAyMDksIDEyOSwgMjksIDEyOSwgMjA4LCAKKyAgICAxNjUsIDI5LCAxMjksIDIyOCwgMTc0LCAyOSwgMTI5LCAyNDYsIDE2OCwgMjksIDEyOSwgMjA4LCAxNzUsIDI5LCAxMjksIAorICAgIDI0NiwgMjMyLCAyOSwgMTI5LCAyMjYsIDE4MywgMjksIDEyOSwgMjA2LCA4MCwgMjksIDEyOSwgMjE1LCAyMjcsIDI5LCAKKyAgICAxMjksIDIzNCwgNjYsIDI5LCAxMjksIDIxOSwgMTM5LCAyOSwgMTI5LCAyMDgsIDE2OSwgMjksIDEyOSwgMjE5LCAxMzMsIAorICAgIDI5LCAxMjksIDIxOSwgMTM3LCAyOSwgMTI5LCAyMDUsIDI1MCwgMjksIDEyOSwgMjEzLCA2NiwgMjksIDEyOSwgMjA4LCAKKyAgICAxNjcsIDI5LCAxMjksIDIxMywgNzYsIDI5LCAxMjksIDIyNywgNTAsIDI5LCAxMjksIDIyMSwgMTkwLCAyOSwgMTI5LCAyMjcsIAorICAgIDUzLCAyOSwgMTI5LCAyMTUsIDE4NSwgMjksIDEyOSwgMjE1LCAxODMsIDI5LCAxMjksIDIxNSwgMTcxLCAyOSwgMTI5LCAKKyAgICAyMTUsIDE3OSwgMjksIDEyOSwgMjE1LCAxNzcsIDI5LCAxMjksIDIxNSwgMTc0LCAyOSwgMTI5LCAyMTUsIDE3NiwgMjksIAorICAgIDEyOSwgMjE1LCAxNzMsIDI5LCAxMjksIDIxNSwgMTc4LCAyOSwgMTI5LCAyMTUsIDE4OCwgMjksIDEyOSwgMjE1LCAxODksIAorICAgIDI5LCAxMjksIDIxNSwgMTcyLCAyOSwgMTI5LCAyMTUsIDE4MiwgMjksIDEyOSwgMjI3LCA1MSwgMjksIDEyOSwgMjI3LCA0OSwgCisgICAgMjksIDEyOSwgMjA5LCAxMjIsIDI5LCAxMjksIDIwOSwgMTIwLCAyOSwgMTI5LCAyMDksIDExMiwgMjksIDEyOSwgMjA5LCAKKyAgICAxMTUsIDI5LCAxMjksIDIwOSwgMTIxLCAyOSwgMTI5LCAyMDksIDExNywgMjksIDEyOSwgMjA5LCAxMTYsIDI5LCAxMjksIAorICAgIDIwOSwgMTE0LCAyOSwgMTI5LCAyMDksIDEyNSwgMjksIDEyOSwgMjA5LCAxMjcsIDI5LCAxMjksIDIwOSwgMTI4LCAyOSwgCisgICAgMTI5LCAyMDksIDEyMywgMjksIDEyOSwgMjA5LCAxMTMsIDI5LCAxMjksIDIwOSwgMTE4LCAyOSwgMTI5LCAyMDksIDEyNiwgCisgICAgMjksIDEyOSwgMjQ2LCAyMTQsIDI5LCAxMjksIDI0NiwgMjEyLCAyOSwgMTI5LCAyNDcsIDQ4LCAyOSwgMTI5LCAyNDcsIDQ2LCAKKyAgICAyOSwgMTI5LCAyMTYsIDE0NiwgMjksIDEyOSwgMjI4LCAxNjksIDI5LCAxMjksIDIyOCwgMTYwLCAyOSwgMTI5LCAyMjgsIAorICAgIDE2OCwgMjksIDEyOSwgMjI4LCAxNjUsIDI5LCAxMjksIDIyOCwgMTYzLCAyOSwgMTI5LCAyMjgsIDE2NywgMjksIDEyOSwgCisgICAgMjA4LCAxNzIsIDI5LCAxMjksIDIyOCwgMTcyLCAyOSwgMTI5LCAyMjgsIDE3MywgMjksIDEyOSwgMjI4LCAxNjEsIDI5LCAKKyAgICAxMjksIDIyOCwgMTY2LCAyOSwgMTI5LCAyMDAsIDI4LCAyOSwgMTI5LCAyNDYsIDE2NywgMjksIDEyOSwgMjQ2LCAyMTUsIAorICAgIDI5LCAxMjksIDI0NiwgMjEzLCAyOSwgMTI5LCAyNDcsIDQ5LCAyOSwgMTI5LCAyNDcsIDQ3LCAyOSwgMTI5LCAyNDYsIDIzMCwgCisgICAgMjksIDEyOSwgMjQ2LCAyMzEsIDI5LCAxMjksIDI0NiwgMjE2LCAyOSwgMTI5LCAyNDcsIDUwLCAyOSwgMTI5LCAyMTUsIAorICAgIDIyNSwgMjksIDEyOSwgMjI3LCA1MiwgMjksIDEyOSwgMjA4LCAxNzMsIDI5LCAxMjksIDIwMCwgMzQsIDI5LCAxMjksIDIyNiwgCisgICAgMTEyLCAyOSwgMTI5LCAyMTksIDEzNSwgMjksIDEyOSwgMjE5LCAxNDEsIDI5LCAxMjksIDIxOSwgMTQwLCAyOSwgMTI5LCAKKyAgICAyMDUsIDI0NywgMjksIDEyOSwgMjM3LCA5MywgMjksIDE4MSwgMjM3LCA5MywgMjksIDE4MSwgNjIsIDI5LCAxODEsIDI1MSwgCisgICAgMjIxLCAyOSwgMTgxLCAxODMsIDI5LCAxODEsIDIwMCwgOTgsIDI5LCAxODEsIDIzOCwgMTQyLCAyOSwgMTgxLCA3MiwgMjksIAorICAgIDE4MSwgMjAwLCAzOCwgMjksIDE4MSwgMjAwLCA1MSwgMjksIDE4MSwgNzQsIDI5LCAxODEsIDIwMSwgMTE0LCAyOSwgMTgxLCAKKyAgICAyMDEsIDExMCwgMjksIDE4MSwgMjE3LCAxMjEsIDI5LCAxODEsIDE5OSwgMjQ1LCAyOSwgMTgxLCA2NiwgMjksIDE4MSwgCisgICAgMjAxLCA1MCwgMjksIDE4MSwgMjAxLCA2NCwgMjksIDE4MSwgMjAxLCAzMSwgMjksIDE4MSwgMTk5LCAyMTEsIDI5LCAxODEsIAorICAgIDIzOCwgNjksIDI5LCAxODEsIDIwMCwgOSwgMjksIDE4MSwgNzAsIDI5LCAxODEsIDI1NSwgMTMzLCAyOSwgMTgxLCAyNTUsIAorICAgIDEzMiwgMjksIDE4MSwgMjAwLCAxMTIsIDI5LCAxODEsIDIwMCwgMTEwLCAyOSwgMTgxLCAyMzgsIDE0MCwgMjksIDE4MSwgCisgICAgMjM4LCAxMzksIDI5LCAxODEsIDIzOCwgMTQxLCAyOSwgMTgxLCAyMDAsIDM3LCAyOSwgMTgxLCAyMDAsIDM2LCAyOSwgMTgxLCAKKyAgICAyMTcsIDIzMCwgMjksIDE4MSwgMjE3LCAyMzEsIDI5LCAxODEsIDIxNywgMjI0LCAyOSwgMTgxLCAyMTcsIDIyOSwgMjksIAorICAgIDE4MSwgMjE3LCAyMjcsIDI5LCAxODEsIDE5OSwgMjM5LCAyOSwgMTgxLCAxOTksIDIzOCwgMjksIDE4MSwgMTk5LCAyMzcsIAorICAgIDI5LCAxODEsIDE5OSwgMjQwLCAyOSwgMTgxLCAxOTksIDI0MSwgMjksIDE4MSwgMjA0LCAxMDQsIDI5LCAxODEsIDIwNCwgCisgICAgMTAzLCAyOSwgMTgxLCAyMDQsIDEwMSwgMjksIDE4MSwgMjA0LCA5NywgMjksIDE4MSwgMjA0LCA5OCwgMjksIDE4MSwgMTk5LCAKKyAgICAyMTAsIDI5LCAxODEsIDE5OSwgMjA3LCAyOSwgMTgxLCAxOTksIDIwOCwgMjksIDE4MSwgMTk5LCAyMDIsIDI5LCAxODEsIAorICAgIDE5OSwgMjAzLCAyOSwgMTgxLCAxOTksIDIwNCwgMjksIDE4MSwgMTk5LCAyMDYsIDI5LCAxODEsIDIzOCwgNjMsIDI5LCAKKyAgICAxODEsIDIzOCwgNjUsIDI5LCAxODEsIDIwMCwgOCwgMjksIDE4MSwgMjMzLCAxOCwgMjksIDE4MSwgMjMzLCAxMCwgMjksIAorICAgIDE4MSwgMjMzLCAxMywgMjksIDE4MSwgMjMzLCAxMSwgMjksIDE4MSwgMjMzLCAxNSwgMjksIDE4MSwgMjMzLCAxNywgMjksIAorICAgIDE4MSwgMjUwLCAyNDUsIDI5LCAxODEsIDI1MCwgMjQyLCAyOSwgMTgxLCAyNTAsIDI0MCwgMjksIDE4MSwgMjUwLCAyNDEsIAorICAgIDI5LCAxODEsIDIwOCwgMTc2LCAyOSwgMTgxLCAyNTUsIDEzNCwgMjksIDE4MSwgMjAwLCAxMTEsIDI5LCAxODEsIDIwMCwgCisgICAgMzUsIDI5LCAxODEsIDIxNywgMjI2LCAyOSwgMTgxLCAyMTcsIDIyNSwgMjksIDExMCwgMjI2LCAxMjEsIDI5LCAxMTAsIAorICAgIDIwOCwgMTcxLCAyOSwgMTEwLCAyMjYsIDExNCwgMjksIDExMCwgMjE5LCAxNDMsIDI5LCAxMTAsIDIxOSwgMTQxLCAyOSwgCisgICAgMTEwLCAyMTksIDE0MCwgMjksIDExMCwgMjA1LCAyNTMsIDI5LCAxMTAsIDIxMywgNzgsIDI5LCAxMTAsIDIxMywgNzMsIDI5LCAKKyAgICAxMTAsIDIxMywgNzAsIDI5LCAxMTAsIDIxMywgNjMsIDI5LCAxMTAsIDIxMywgNTgsIDI5LCAxMTAsIDIxMywgNTMsIDI5LCAKKyAgICAxMTAsIDIxMywgNjQsIDI5LCAxMTAsIDIxMywgNzYsIDI5LCAxMTAsIDIyMSwgMTk3LCAyOSwgMTEwLCAyMTUsIDE5MCwgMjksIAorICAgIDExMCwgMjE1LCAxNzksIDI5LCAxMTAsIDIwOSwgMTI5LCAyOSwgMTEwLCAyMDgsIDE2NSwgMjksIDExMCwgMjI4LCAxNzQsIAorICAgIDI5LCAxMTAsIDI0NiwgMTY4LCAyOSwgMTEwLCAyNDYsIDIzMiwgMjksIDExMCwgMjI2LCAxODMsIDI5LCAxMTAsIDIwNiwgCisgICAgODAsIDI5LCAxMTAsIDIxNSwgMjI3LCAyOSwgMTEwLCAyMzQsIDY2LCAyOSwgMTEwLCAyMjYsIDExNSwgMjksIDExMCwgMjI2LCAKKyAgICAxMTMsIDI5LCAxMTAsIDIxOSwgMTM5LCAyOSwgMTEwLCAyMTksIDEzMywgMjksIDExMCwgMjE5LCAxMzUsIDI5LCAxMTAsIAorICAgIDIxOSwgMTM4LCAyOSwgMTEwLCAyMTksIDEzNCwgMjksIDExMCwgMjA1LCAyNTAsIDI5LCAxMTAsIDIwNSwgMjQ3LCAyOSwgCisgICAgMTEwLCAyMTMsIDcxLCAyOSwgMTEwLCAyMTMsIDY2LCAyOSwgMTEwLCAyMTMsIDUyLCAyOSwgMTEwLCAyMTMsIDUxLCAyOSwgCisgICAgMTEwLCAyMDgsIDE2NywgMjksIDExMCwgMjEzLCA2OCwgMjksIDExMCwgMjEzLCA2NywgMjksIDExMCwgMjEzLCA2MCwgMjksIAorICAgIDExMCwgMjEzLCA2MiwgMjksIDExMCwgMjEzLCA3NSwgMjksIDExMCwgMjEzLCA1NSwgMjksIDExMCwgMjEzLCA2NSwgMjksIAorICAgIDExMCwgMjEzLCA3NCwgMjksIDExMCwgMjEzLCA1MCwgMjksIDExMCwgMjIxLCAxOTMsIDI5LCAxMTAsIDIyMSwgMTg4LCAyOSwgCisgICAgMTEwLCAyMjEsIDE5MCwgMjksIDExMCwgMjIxLCAxODcsIDI5LCAxMTAsIDIyMSwgMTg1LCAyOSwgMTEwLCAyMjEsIDE5MSwgCisgICAgMjksIDExMCwgMjIxLCAxOTYsIDI5LCAxMTAsIDIyMSwgMTk0LCAyOSwgMTEwLCAyMjcsIDUzLCAyOSwgMTEwLCAyMTUsIAorICAgIDE4MSwgMjksIDExMCwgMjE1LCAxODIsIDI5LCAxMTAsIDIxNSwgMTg3LCAyOSwgMTEwLCAyMjcsIDUxLCAyOSwgMTEwLCAKKyAgICAyMDksIDEyMiwgMjksIDExMCwgMjA5LCAxMTIsIDI5LCAxMTAsIDIwOSwgMTE1LCAyOSwgMTEwLCAyMDksIDExNywgMjksIAorICAgIDExMCwgMjE2LCAxNDYsIDI5LCAxMTAsIDIyOCwgMTY5LCAyOSwgMTEwLCAyMjgsIDE2MiwgMjksIDExMCwgMjA4LCAxNzIsIAorICAgIDI5LCAxMTAsIDIyOCwgMTcwLCAyOSwgMTEwLCAyMDAsIDI4LCAyOSwgMTEwLCAyMDAsIDI0LCAyOSwgMTEwLCAyMDAsIDI1LCAKKyAgICAyOSwgMTEwLCAyMTUsIDIyNSwgMjksIDExMCwgMjI3LCA1MiwgMjksIDExMCwgMjM0LCA2NCwgMjksIDExMCwgMjM0LCA2MiwgCisgICAgMjksIDExMCwgMjM0LCA2NSwgMjksIDExMCwgMjM0LCA2MywgMjksIDExMCwgMjAwLCAzNCwgMjksIDExMCwgMjI2LCAxMTcsIAorICAgIDI5LCAxMTAsIDIyNiwgMTE2LCAyOSwgMTEwLCAyMjYsIDEyMCwgMjksIDExMCwgMjI2LCAxMTgsIDI5LCAxMTAsIDIyNiwgCisgICAgMTE5LCAyOSwgMTEwLCAyMDgsIDE2OSwgMzQsIDUsIDE0NCwgMzQsIDUsIDIzMywgOTcsIDM0LCA1LCAyMzQsIDc1LCAzNCwgCisgICAgNSwgMjM0LCAyMzMsIDM0LCA1LCAyMzQsIDEyMCwgMzQsIDUsIDIzNCwgMTM5LCAzNCwgNSwgMjMzLCAyMDcsIDM0LCA1LCAKKyAgICAyMzMsIDIwNiwgMzQsIDUsIDE5NCwgMzQsIDUsIDIyNCwgNDIsIDM0LCA1LCAyMjQsIDIxMCwgMzQsIDUsIDIyNSwgMTc1LCAKKyAgICAzNCwgNSwgMjI1LCAzMiwgMzQsIDUsIDIyNSwgNDAsIDM0LCA1LCAyMjQsIDExMCwgMzQsIDUsIDIyNCwgMTAsIDM0LCA1LCAKKyAgICAyMzQsIDg0LCAzNCwgNSwgMjM0LCA3OCwgMzQsIDUsIDIzNCwgODAsIDM0LCA1LCAyMzQsIDgzLCAzNCwgNSwgMjM0LCA4MSwgCisgICAgMzQsIDUsIDIzNCwgODIsIDM0LCA1LCAyMzQsIDc5LCAzNCwgNSwgMjM0LCA3NywgMzQsIDUsIDE3OCwgMzQsIDUsIDIyMSwgCisgICAgNDEsIDM0LCA1LCAyMjEsIDIxMSwgMzQsIDUsIDIyMiwgMjMzLCAzNCwgNSwgMjIyLCA2NCwgMzQsIDUsIDIyMiwgNzYsIDM0LCAKKyAgICA1LCAyMjEsIDEzNiwgMzQsIDUsIDIyMCwgMjMxLCAzNCwgNSwgMjA3LCA5NCwgMzQsIDUsIDIwNywgODgsIDM0LCA1LCAyMDcsIAorICAgIDkwLCAzNCwgNSwgMjA3LCA5MywgMzQsIDUsIDIwNywgOTEsIDM0LCA1LCAyMDcsIDkyLCAzNCwgNSwgMjA3LCA4OSwgMzQsIAorICAgIDUsIDIwNywgODcsIDM0LCA1LCAyMTMsIDI1MiwgMzQsIDUsIDIxMiwgMTc1LCAzNCwgNSwgMjEzLCA4OCwgMzQsIDUsIDIxMywgCisgICAgMjQ4LCAzNCwgNSwgMjEzLCAxNjcsIDM0LCA1LCAyMTMsIDE5MCwgMzQsIDUsIDIxMywgMSwgMzQsIDUsIDIxMiwgMTQwLCAKKyAgICAzNCwgNSwgMjEyLCA2NCwgMzQsIDUsIDIwOCwgMjQsIDM0LCA1LCAyMDksIDE4MiwgMzQsIDUsIDIxMiwgNjEsIDM0LCA1LCAKKyAgICAyMTEsIDE5MCwgMzQsIDUsIDIxMSwgMjAyLCAzNCwgNSwgMjA5LCAyOSwgMzQsIDUsIDIwNywgMTg2LCAzNCwgNSwgMjEwLCAKKyAgICAxMTQsIDM0LCA1LCAyMDksIDIyMCwgMzQsIDUsIDIxMCwgMzMsIDM0LCA1LCAyMTAsIDEwOSwgMzQsIDUsIDIxMCwgNjMsIAorICAgIDM0LCA1LCAyMTAsIDY1LCAzNCwgNSwgMjEwLCA4LCAzNCwgNSwgMjA5LCAyMDAsIDM0LCA1LCAyMTQsIDE1OSwgMzQsIDUsIAorICAgIDIxNCwgOTcsIDM0LCA1LCAyMTQsIDEyMSwgMzQsIDUsIDIxNCwgMTU4LCAzNCwgNSwgMjE0LCAxMzgsIDM0LCA1LCAyMTQsIAorICAgIDEzOSwgMzQsIDUsIDIxNCwgMTA5LCAzNCwgNSwgMjE0LCAxMDgsIDM0LCA1LCAyMTQsIDUxLCAzNCwgNSwgMjE0LCA0NywgCisgICAgMzQsIDUsIDIxNCwgNTAsIDM0LCA1LCAyMTQsIDQ4LCAzNCwgNSwgMjE0LCA0OSwgMzQsIDUsIDIxNCwgMTM1LCAzNCwgNSwgCisgICAgMjE0LCAxMjcsIDM0LCA1LCAyMTQsIDEzMCwgMzQsIDUsIDIxNCwgMTM0LCAzNCwgNSwgMjE0LCAxMzEsIDM0LCA1LCAyMTQsIAorICAgIDEzMiwgMzQsIDUsIDIxNCwgMTI5LCAzNCwgNSwgMjE0LCAxMjYsIDM0LCA1LCAyMTQsIDEyMiwgMzQsIDUsIDIxNCwgMTI1LCAKKyAgICAzNCwgNSwgMjE0LCAxMjMsIDM0LCA1LCAyMTQsIDEyNCwgMzQsIDUsIDI0OSwgMTM2LCAzNCwgNSwgMjQ4LCAzNiwgMzQsIDUsIAorICAgIDI0OCwgMTg4LCAzNCwgNSwgMjQ5LCAxMzQsIDM0LCA1LCAyNDgsIDI1MiwgMzQsIDUsIDI0OSwgOCwgMzQsIDUsIDI0OCwgCisgICAgMTI0LCAzNCwgNSwgMjQ3LCAyNDAsIDM0LCA1LCAyMDMsIDkwLCAzNCwgNSwgMjAxLCAxNjYsIDM0LCA1LCAyMDIsIDIzNCwgCisgICAgMzQsIDUsIDIwMywgODksIDM0LCA1LCAyMDMsIDU0LCAzNCwgNSwgMjAzLCA1OSwgMzQsIDUsIDIwMiwgMTkzLCAzNCwgNSwgCisgICAgMjAxLCAxNTcsIDM0LCA1LCAyMDcsIDM2LCAzNCwgNSwgMjA0LCAyMTUsIDM0LCA1LCAyMDYsIDE1LCAzNCwgNSwgMjA3LCAKKyAgICAzMiwgMzQsIDUsIDIwNiwgMTkwLCAzNCwgNSwgMjA2LCAyMDEsIDM0LCA1LCAxMzgsIDM0LCA1LCAyMDQsIDE3MCwgMzQsIDUsIAorICAgIDI0NywgMTkwLCAzNCwgNSwgMjQyLCAyMTQsIDM0LCA1LCAyNDYsIDE3MywgMzQsIDUsIDI0NywgMTg5LCAzNCwgNSwgMjQ3LCAKKyAgICA2OCwgMzQsIDUsIDI0NywgNzYsIDM0LCA1LCAyNDYsIDkxLCAzNCwgNSwgMjQyLCAxNzYsIDM0LCA1LCAyMDAsIDE4MSwgMzQsIAorICAgIDUsIDIwMCwgMTUxLCAzNCwgNSwgMjAwLCAxNjksIDM0LCA1LCAyMDAsIDE4MCwgMzQsIDUsIDIwMCwgMTc0LCAzNCwgNSwgCisgICAgMjAwLCAxNzUsIDM0LCA1LCAyMDAsIDE1OSwgMzQsIDUsIDIwMCwgMTU4LCAzNCwgNSwgMjAwLCAxNDUsIDM0LCA1LCAyMDAsIAorICAgIDE0MSwgMzQsIDUsIDIwMCwgMTQ0LCAzNCwgNSwgMjAwLCAxNDIsIDM0LCA1LCAyMDAsIDE0MywgMzQsIDUsIDE4OCwgMzQsIAorICAgIDUsIDIxOCwgMTMzLCAzNCwgNSwgMjE5LCAxNTAsIDM0LCA1LCAyMjAsIDE1NywgMzQsIDUsIDIyMCwgMjksIDM0LCA1LCAKKyAgICAyMjAsIDM0LCAzNCwgNSwgMjE4LCAyNDEsIDM0LCA1LCAyMTgsIDY5LCAzNCwgNSwgMjE4LCA2MCwgMzQsIDUsIDIxOCwgMTksIAorICAgIDM0LCA1LCAyMTgsIDQxLCAzNCwgNSwgMjE4LCA1OSwgMzQsIDUsIDIxOCwgNDksIDM0LCA1LCAyMTgsIDUwLCAzNCwgNSwgCisgICAgMjE4LCAyNiwgMzQsIDUsIDIxOCwgOSwgMzQsIDUsIDIzNSwgMTIzLCA2MiwgMzQsIDUsIDIzNSwgMTIzLCA2NiwgMzQsIDUsIAorICAgIDIzNSwgMTIzLCA3MCwgMzQsIDUsIDIzNSwgMTIzLCAyNTIsIDEzOCwgMzQsIDUsIDIzNSwgMTIzLCAyMzgsIDI1NSwgMzQsIAorICAgIDUsIDIzNSwgMTIzLCA3MiwgMzQsIDUsIDIzNSwgMTIzLCA3NCwgMzQsIDUsIDIzNSwgMTIzLCAyMDEsIDExNCwgMzQsIDUsIAorICAgIDE2MSwgMzQsIDUsIDIyNiwgMTUsIDM0LCA1LCAyMjYsIDE2MywgMzQsIDUsIDIyNywgMTA1LCAzNCwgNSwgMjI3LCA1LCAzNCwgCisgICAgNSwgMjI3LCA4LCAzNCwgNSwgMjI2LCA4OCwgMzQsIDUsIDIyNiwgODcsIDM0LCA1LCAyMjUsIDIyOSwgMzQsIDUsIDIyNSwgCisgICAgMjIyLCAzNCwgNSwgMjI1LCAyMjgsIDM0LCA1LCAyMjUsIDIyMywgMzQsIDUsIDIyNSwgMjI0LCAzNCwgNSwgMjI1LCAyMTUsIAorICAgIDM0LCA1LCAyMjUsIDIwOSwgMzQsIDUsIDIyNSwgMjExLCAzNCwgNSwgMjI1LCAyMTQsIDM0LCA1LCAyMjUsIDIxMiwgMzQsIAorICAgIDUsIDIyNSwgMjEzLCAzNCwgNSwgMjI1LCAyMTAsIDM0LCA1LCAyMjUsIDIwOCwgMzQsIDUsIDIyNSwgMjA0LCAzNCwgNSwgCisgICAgMjI1LCAyMDcsIDM0LCA1LCAyMjUsIDIwNSwgMzQsIDUsIDIyNSwgMjA2LCAzNCwgNSwgMjAxLCAxMTQsIDM0LCA1LCAyMDAsIAorICAgIDIxNiwgMzQsIDUsIDIwMSwgMzEsIDM0LCA1LCAyMDEsIDExMywgMzQsIDUsIDIwMSwgNTcsIDM0LCA1LCAyMDEsIDY0LCAzNCwgCisgICAgNSwgMjAxLCAwLCAzNCwgNSwgMjAwLCAyNTUsIDM0LCA1LCAyMTUsIDIzNiwgNjIsIDM0LCA1LCAyMTUsIDIzNiwgNjYsIDM0LCAKKyAgICA1LCAyMTUsIDIzNiwgNzAsIDM0LCA1LCAyMTUsIDIzNiwgMjUyLCAxMzgsIDM0LCA1LCAyMTUsIDIzNiwgMjM4LCAyNTUsIAorICAgIDM0LCA1LCAyMTUsIDIzNiwgNzIsIDM0LCA1LCAyMTUsIDIzNiwgNzQsIDM0LCA1LCAxOTksIDExNCwgMzQsIDUsIDE5OSwgMywgCisgICAgMzQsIDUsIDE5OSwgMzYsIDM0LCA1LCAxOTksIDExMiwgMzQsIDUsIDE5OSwgODcsIDM0LCA1LCAxOTksIDg5LCAzNCwgNSwgCisgICAgMTk5LCAxNCwgMzQsIDUsIDE5OCwgMjQ2LCAzNCwgNSwgMTk5LCA3NywgMzQsIDUsIDE5OSwgNTQsIDM0LCA1LCAxOTksIDYzLCAKKyAgICAzNCwgNSwgMTk5LCA3NiwgMzQsIDUsIDE5OSwgNjcsIDM0LCA1LCAxOTksIDY4LCAzNCwgNSwgMTk5LCA2MCwgMzQsIDUsIAorICAgIDE5OSwgNDUsIDM0LCA1LCAxODMsIDM0LCA1LCAxOTksIDIxMSwgMzQsIDUsIDIwMCwgOSwgMzQsIDUsIDIwMCwgMTA5LCAzNCwgCisgICAgNSwgMjAwLCA0OCwgMzQsIDUsIDIwMCwgNTEsIDM0LCA1LCAxOTksIDI0NSwgMzQsIDUsIDE5OSwgMjM2LCAzNCwgNSwgMjQyLCAKKyAgICA1OCwgMzQsIDUsIDIzOSwgMTM3LCAzNCwgNSwgMjQxLCA3NiwgMzQsIDUsIDI0MiwgNTcsIDM0LCA1LCAyNDEsIDE2MSwgMzQsIAorICAgIDUsIDI0MSwgMTc1LCAzNCwgNSwgMjQwLCAyMTEsIDM0LCA1LCAyMzksIDEwNCwgMzQsIDUsIDI0MSwgMjIwLCAzNCwgNSwgCisgICAgMjQxLCAxODUsIDM0LCA1LCAyNDEsIDE5NywgMzQsIDUsIDI0MSwgMjE5LCAzNCwgNSwgMjQxLCAyMDcsIDM0LCA1LCAyNDEsIAorICAgIDIwOCwgMzQsIDUsIDI0MSwgMTkwLCAzNCwgNSwgMjQxLCAxNzYsIDM0LCA1LCAyMjcsIDI0OCwgMzQsIDUsIDIyNywgMTQ3LCAKKyAgICAzNCwgNSwgMjI3LCAyMDcsIDM0LCA1LCAyMjcsIDI0NywgMzQsIDUsIDIyNywgMjI1LCAzNCwgNSwgMjI3LCAyMjcsIDM0LCAKKyAgICA1LCAyMjcsIDE2NiwgMzQsIDUsIDIyNywgMTI2LCAzNCwgNSwgMjM2LCA4OSwgMzQsIDUsIDIzNSwgNTAsIDM0LCA1LCAyMzUsIAorICAgIDE2MSwgMzQsIDUsIDIzNiwgODYsIDM0LCA1LCAyMzYsIDcsIDM0LCA1LCAyMzYsIDE1LCAzNCwgNSwgMjM1LCAxMTYsIDM0LCAKKyAgICA1LCAyMzUsIDExNSwgMzQsIDUsIDIzNSwgMTAsIDM0LCA1LCAyMzUsIDYsIDM0LCA1LCAyMzUsIDksIDM0LCA1LCAyMzUsIDcsIAorICAgIDM0LCA1LCAyMzUsIDgsIDM0LCA1LCAyMzUsIDIzNSwgMzQsIDUsIDIzNSwgMjE1LCAzNCwgNSwgMjM1LCAyMjUsIDM0LCA1LCAKKyAgICAyMzUsIDIzNCwgMzQsIDUsIDIzNSwgMjI5LCAzNCwgNSwgMjM1LCAyMzAsIDM0LCA1LCAyMzUsIDIxOSwgMzQsIDUsIDIzNSwgCisgICAgMjA0LCAzNCwgNSwgMjA2LCAxMjIsIDM0LCA1LCAyMDYsIDM1LCAzNCwgNSwgMjA2LCA4NCwgMzQsIDUsIDIwNiwgMTIxLCAKKyAgICAzNCwgNSwgMjA2LCAxMDQsIDM0LCA1LCAyMDYsIDEwNiwgMzQsIDUsIDIwNiwgNjEsIDM0LCA1LCAyMDYsIDI2LCAzNCwgNSwgCisgICAgMjQ3LCAzNywgMzQsIDUsIDI0NiwgMTkyLCAzNCwgNSwgMjQ2LCAyMzYsIDM0LCA1LCAyNDcsIDM2LCAzNCwgNSwgMjQ3LCA0LCAKKyAgICAzNCwgNSwgMjQ3LCA4LCAzNCwgNSwgMjQ2LCAyMTAsIDM0LCA1LCAyNDYsIDE4MSwgMzQsIDUsIDIxNSwgMjQ1LCAzNCwgNSwgCisgICAgMjE1LCAyMTAsIDM0LCA1LCAyMTUsIDIyOSwgMzQsIDUsIDIxNSwgMjQ0LCAzNCwgNSwgMjE1LCAyMzEsIDM0LCA1LCAyMTUsIAorICAgIDIzMiwgMzQsIDUsIDIxNSwgMjE3LCAzNCwgNSwgMjE1LCAyMDYsIDM0LCA1LCAyMDUsIDMyLCAzNCwgNSwgMjA1LCA1LCAzNCwgCisgICAgNSwgMjA1LCAxMSwgMzQsIDUsIDIwNSwgMzEsIDM0LCA1LCAyMDUsIDI1LCAzNCwgNSwgMjA1LCAyNiwgMzQsIDUsIDIwNSwgCisgICAgOSwgMzQsIDUsIDIwNSwgMywgMzQsIDUsIDIwNCwgMTEzLCAzNCwgNSwgMjA0LCAxMDUsIDM0LCA1LCAyMDQsIDEwOSwgMzQsIAorICAgIDUsIDIwNCwgMTEyLCAzNCwgNSwgMjA0LCAxMTAsIDM0LCA1LCAyMDQsIDExMSwgMzQsIDUsIDIwNCwgMTA3LCAzNCwgNSwgCisgICAgMjA0LCAxMDYsIDM0LCA1LCAyMzcsIDE5NSwgMzQsIDUsIDIzNiwgMTg5LCAzNCwgNSwgMjM3LCAxMTIsIDM0LCA1LCAyMzcsIAorICAgIDE5NCwgMzQsIDUsIDIzNywgMTQwLCAzNCwgNSwgMjM3LCAxNDcsIDM0LCA1LCAyMzcsIDEzLCAzNCwgNSwgMjM2LCAxNjcsIAorICAgIDM0LCA1LCAxNzIsIDM0LCA1LCAyMTQsIDIyNCwgMzQsIDUsIDIxNSwgMjA0LCAzNCwgNSwgMjE2LCAyMTAsIDM0LCA1LCAKKyAgICAyMTYsIDYxLCAzNCwgNSwgMjE2LCA3MywgMzQsIDUsIDIxNSwgMTA2LCAzNCwgNSwgMjE0LCAxODUsIDM0LCA1LCAyMTIsIAorICAgIDEzMCwgMzQsIDUsIDIyMCwgMjIwLCAzNCwgNSwgMjM2LCAxNjEsIDM0LCAzOCwgMjM2LCAzLCAyNiwgMjIsIDIyNSwgMiwgCisgICAgODEsIDM0LCAzOCwgMjIsIDIyNSwgMiwgODEsIDM0LCAzOCwgMjM2LCAzLCA4MSwgMzQsIDIxMSwgMTkzLCA4MSwgMzQsIAorICAgIDIwMCwgMjM3LCAzNCwgMjM2LCAxODMsIDIwOCwgNzYsIDM0LCAyNDYsIDcwLCAzNCwgMjEwLCAxNjcsIDM0LCAyNDYsIDc5LCAKKyAgICAzNCwgMjE1LCAyNSwgMjQ2LCA3OSwgMzQsIDIxNCwgNzksIDgxLCAzNCwgMjE2LCAxMjgsIDIxMCwgMTU0LCAzNCwgMTcsIAorICAgIDEwMiwgMzQsIDE3LCAxMDUsIDM0LCAxNywgMTQ3LCAzNCwgMTcsIDE0OSwgMzQsIDE3LCAxNjQsIDM0LCAxNywgMTg3LCAzNCwgCisgICAgMTcsIDIxMCwgMTM1LCAzNCwgMTcsIDE5MiwgMzQsIDE3LCAyMTksIDExMywgMzQsIDQxLCAyMDYsIDE2NiwgMzQsIDQxLCAKKyAgICAyMDQsIDE1OSwgMzQsIDQxLCAyMDYsIDY3LCAzNCwgNDEsIDIzNiwgMjM1LCAzNCwgNDEsIDIzNywgMTA0LCAzNCwgNDEsIAorICAgIDIwOSwgOTIsIDM0LCA0MSwgMjEwLCAxMjksIDM0LCA0MSwgMjM4LCAyMjIsIDM0LCA0MSwgMjE5LCAxMDgsIDM0LCA0MSwgCisgICAgMjMzLCA4MiwgMzQsIDQxLCAyMDYsIDE2NywgMjA2LCA1MCwgMzQsIDUsIDIxMSwgMTk4LCAyMjAsIDIzMSwgMzQsIDUsIAorICAgIDIyMCwgMjI3LCAzNCwgNSwgMjIwLCAyMjgsIDM0LCA1LCAyMjAsIDIyOSwgMzQsIDUsIDIxMSwgMTk4LCAyNDcsIDI0MCwgCisgICAgMzQsIDUsIDI0NywgMjM3LCAzNCwgNSwgMjQ3LCAyMzgsIDM0LCA1LCAyNDcsIDIzOSwgMzQsIDUsIDIxMSwgMTk4LCAyMzYsIAorICAgIDE2NywgMzQsIDUsIDIzNiwgMTYzLCAzNCwgNSwgMjM2LCAxNjQsIDM0LCA1LCAyMzYsIDE2NSwgMzQsIDUsIDIxMSwgMTk4LCAKKyAgICAyMTQsIDE4NSwgMzQsIDUsIDIxNCwgMTgxLCAzNCwgNSwgMjE0LCAxODIsIDM0LCA1LCAyMTQsIDE4MywgMzQsIDIwNSwgCisgICAgMTc1LCAxMzQsIDE5OSwgMjQ4LCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQxLCAxMjEsIDM0LCAyMDUsIDE3NSwgMTM0LCAyMTMsIAorICAgIDMyLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjA5LCAyNTAsIDIxMywgMzIsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDEsIDUwLCAzNCwgCisgICAgMjA1LCAxNzUsIDEzNCwgMjI2LCAyNDIsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDYsIDIxOCwgMzQsIDIwNSwgMTc1LCAxMzQsIAorICAgIDIzNCwgNzEsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDEsIDEyMCwgMzQsIDIwNSwgMTc1LCAxMzQsIDIyNSwgMjQzLCA5MSwgMSwgCisgICAgNjIsIDkxLCAxLCA3MiwgOTEsIDEsIDcwLCA5MSwgMSwgNzQsIDkxLCAxLCA2NiwgOTEsIDEsIDIwMywgMTY4LCA5MSwgMSwgCisgICAgMjM2LCA4OSwgOTEsIDEsIDE2MSwgOTEsIDEsIDIzNiwgMTUsIDkxLCAxLCAyMzUsIDE2MSwgOTEsIDEsIDIzNSwgMTE2LCAKKyAgICA5MSwgMSwgMjM1LCA1MCwgOTEsIDEsIDIzNSwgMTIsIDkxLCAxLCAxNDQsIDkxLCAxLCAyMzQsIDEzOSwgOTEsIDEsIDIzNCwgCisgICAgNzUsIDkxLCAxLCAyMzMsIDIwNywgOTEsIDEsIDIzMywgOTcsIDkxLCAxLCAyMzMsIDY5LCA5MSwgMSwgMTk0LCA5MSwgMSwgCisgICAgMjI1LCA0MCwgOTEsIDEsIDIyNCwgMjEwLCA5MSwgMSwgMjI0LCAxMTAsIDkxLCAxLCAyMjQsIDQyLCA5MSwgMSwgMjI0LCAKKyAgICAxMSwgOTEsIDEsIDE3OCwgOTEsIDEsIDIyMiwgNzYsIDkxLCAxLCAyMjEsIDIxMSwgOTEsIDEsIDIyMSwgMTM2LCA5MSwgMSwgCisgICAgMjIxLCA0MSwgOTEsIDEsIDE4OCwgOTEsIDEsIDIzMywgMjMxLCA5MSwgMSwgMjIwLCAxNDQsIDkxLCAxLCAyMjAsIDM0LCAKKyAgICA5MSwgMSwgMjE5LCAxNTAsIDkxLCAxLCAyMTgsIDI0MSwgOTEsIDEsIDIxOCwgMTMzLCA5MSwgMSwgMjE4LCA3MSwgOTEsIDEsIAorICAgIDIxNCwgOTYsIDkxLCAxLCAyMTQsIDgyLCA5MSwgMSwgMjE0LCA3NSwgOTEsIDEsIDIxNCwgNjYsIDkxLCAxLCAyMTQsIDU1LCAKKyAgICA5MSwgMSwgMjE0LCA1MywgOTEsIDEsIDIxMiwgNjQsIDkxLCAxLCAyMTIsIDEyMiwgOTEsIDEsIDIxMSwgMjAyLCA5MSwgMSwgCisgICAgMjA5LCAxODIsIDkxLCAxLCAyMDksIDI5LCA5MSwgMSwgMjA4LCAyNCwgOTEsIDEsIDIwNywgMTkxLCA5MSwgMSwgMjQyLCAKKyAgICA1OCwgOTEsIDEsIDIwNywgMzYsIDkxLCAxLCAyNDEsIDE3NSwgOTEsIDEsIDIwNiwgMjAxLCA5MSwgMSwgMjQxLCA3NiwgOTEsIAorICAgIDEsIDIwNiwgMTUsIDkxLCAxLCAyNDAsIDIxMSwgOTEsIDEsIDIzOSwgMTM3LCA5MSwgMSwgMjM5LCAxMDcsIDkxLCAxLCAKKyAgICAyNDAsIDIyMiwgOTEsIDEsIDIwNSwgMjAzLCA5MSwgMSwgMjA1LCAyMDIsIDkxLCAxLCAyMDUsIDE5MSwgOTEsIDEsIDIwNSwgCisgICAgMTkwLCA5MSwgMSwgMjA1LCAxODksIDkxLCAxLCAyMDUsIDE4OCwgOTEsIDEsIDIwNSwgMzIsIDkxLCAxLCAyMDUsIDI2LCAKKyAgICA5MSwgMSwgMjA1LCAxMSwgOTEsIDEsIDIwNSwgOSwgOTEsIDEsIDIwNSwgNSwgOTEsIDEsIDIwNSwgNCwgOTEsIDEsIDIwMSwgCisgICAgMTE0LCA5MSwgMSwgMjAxLCA2NCwgOTEsIDEsIDIwMSwgMzEsIDkxLCAxLCAyMDEsIDAsIDkxLCAxLCAyMDAsIDIxNiwgOTEsIAorICAgIDEsIDIwMCwgMjAzLCA5MSwgMSwgMTgzLCA5MSwgMSwgMjAwLCA1MSwgOTEsIDEsIDIwMCwgOSwgOTEsIDEsIDE5OSwgMjQ1LCAKKyAgICA5MSwgMSwgMTk5LCAyMTEsIDkxLCAxLCAxOTksIDE3NSwgOTEsIDEsIDIyMCwgMjM4LCA5MSwgNCwgMSwgMjAwLCA1MSwgOTEsIAorICAgIDQsIDEsIDIwMCwgOSwgOTEsIDQsIDEsIDE5OSwgMjQ1LCA5MSwgNCwgMSwgMTk5LCAyMTEsIDkxLCA0LCAxLCAxOTksIDE3NSwgCisgICAgOTEsIDQsIDEsIDIyMCwgMjM4LCAyMCwgMjEsIDIzMywgMzMsIDIwLCAyMSwgNzIsIDIwLCAyMSwgMjUyLCAxMDIsIDIwLCAKKyAgICAyMSwgNzAsIDIwLCAyMSwgMjI4LCAxNTEsIDIwLCAyMSwgNzQsIDIwLCAyMSwgMjE3LCA2MywgMjAsIDIxLCAyMDAsIDEyMiwgCisgICAgMjE3LCA2MywgMjAsIDIxLCA4OSwgMjM4LCAyNTUsIDIwLCAyMSwgODksIDcwLCAyMCwgMjEsIDYyLCAyMCwgMjEsIDI1MiwgCisgICAgMTM4LCAyMCwgMjEsIDIwMSwgNjQsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCA2NCwgMjAsIDIxLCAyMDEsIDMxLCAyMCwgMjEsIAorICAgIDIwMSwgNDYsIDIwMSwgMzEsIDIwLCAyMSwgMjAxLCAyMCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDIwLCAyMCwgMjEsIDIwMSwgCisgICAgMCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDAsIDIwLCAyMSwgMjAwLCAyNDQsIDIwLCAyMSwgMjAxLCA0NiwgMjAwLCAyNDQsIAorICAgIDIwLCAyMSwgMjIwLCAxMTksIDIwMCwgMjQ0LCAyMCwgMjEsIDIwMSwgMTE0LCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgMTE0LCAKKyAgICAyMCwgMjEsIDIwMSwgMTEzLCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgMTEzLCAyMCwgMjEsIDIyMCwgMTE5LCAyMDEsIDExMywgCisgICAgMjAsIDIxLCAyNTEsIDE3NiwgMjAsIDIxLCAyMDAsIDEyMiwgMjAxLCAxNDcsIDIwLCAyMSwgMjM1LCAxMjMsIDIwOCwgNzYsIAorICAgIDIwLCAyMSwgNDcsIDE2OSwgMjAsIDIxLCA0NywgMjM1LCA3MywgMjAsIDIxLCA0NywgMjQ4LCA5MywgMTY3LCAyMTMsIDI2LCAKKyAgICAyMCwgMjEsIDQ3LCAyMDUsIDE1OCwgMTY3LCAyMTMsIDI2LCAyMCwgMjEsIDQ3LCA1MSwgMTY3LCAyMTMsIDI2LCAyMCwgMjEsIAorICAgIDQ3LCAyMTMsIDI2LCAyMCwgMjEsIDQ3LCA1MywgMTY5LCAyMCwgMjEsIDQ3LCA1MywgMjA5LCAyNTAsIDgzLCAyMDgsIDM0LCAKKyAgICAyMCwgMjEsIDQ3LCAxMDEsIDI0MCwgMTgyLCAyMCwgMjEsIDQ3LCAyMDksIDI1MCwgMjMzLCAxNzcsIDk3LCAyMCwgMjEsIAorICAgIDQ3LCAyMTUsIDExMywgMjAsIDIxLCA0NywgMTI3LCAyMDcsIDE3LCAyMCwgMjEsIDIzOCwgMTc5LCAyMCwgMjEsIDIyOCwgCisgICAgMTE3LCAyMCwgMjEsIDIxNywgNzgsIDIwLCAyMSwgMjUxLCA4NSwgMjAsIDIxLCAyMTYsIDczLCAyMCwgMjEsIDIxNiwgMjA4LCAKKyAgICAyMCwgMjEsIDIxNSwgMjA0LCAyMCwgMjEsIDIxNSwgMTY2LCAyMCwgMjEsIDIxNSwgMTA2LCAyMCwgMjEsIDIxNSwgODEsIAorICAgIDIwLCAyMSwgMjAwLCAxMjIsIDIxNSwgODEsIDIwLCAyMSwgODksIDIzNCwgMTIwLCAyMCwgMjEsIDg5LCAyMzQsIDc1LCAyMCwgCisgICAgMjEsIDE3MiwgMjAsIDIxLCAyMTYsIDIxMCwgMjAsIDIxLCAyMTQsIDE4MywgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE4MywgCisgICAgMjAsIDIxLCAyMTQsIDE4MSwgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE4MSwgMjAsIDIxLCAyMTQsIDE4MCwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyMTQsIDE4MCwgMjAsIDIxLCAyMTQsIDE3OCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE3OCwgMjAsIDIxLCAKKyAgICAyMTQsIDE3NywgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE3NywgMjAsIDIxLCAyMTQsIDE4NSwgMjAsIDIxLCAyMDEsIDQ2LCAKKyAgICAyMTQsIDE4NSwgMjAsIDIxLCAyMTQsIDE4NCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE4NCwgMjAsIDIxLCAyMDAsIDEyMiwgCisgICAgMjE0LCAxODQsIDIwLCAyMSwgMjE2LCAyMjYsIDIwLCAyMSwgMjAxLCA0NiwgMjE2LCAyMjYsIDIwLCAyMSwgODksIDIzNCwgCisgICAgMjQ3LCAyMCwgMjEsIDIwNiwgMjAxLCAyMCwgMjEsIDIwNywgMzAsIDIwLCAyMSwgMjA2LCAxNSwgMjAsIDIxLCAyMDUsIAorICAgIDI1NSwgMjAsIDIxLCAxMzgsIDIwLCAyMSwgMjA1LCAxNjEsIDIwLCAyMSwgMjAwLCAxMjIsIDIwNSwgMTYxLCAyMCwgMjEsIAorICAgIDg5LCAyNDEsIDE2MSwgMjAsIDIxLCA4OSwgMjQxLCA3NiwgMjAsIDIxLCAyMDcsIDM2LCAyMCwgMjEsIDIwNywgMzIsIDIwLCAKKyAgICAyMSwgMjA0LCAxNjgsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxNjgsIDIwLCAyMSwgMjA0LCAxNDcsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA0LCAxNDcsIDIwLCAyMSwgMjA0LCAxNDYsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxNDYsIDIwLCAyMSwgMTA1LCAKKyAgICAyMCwgMjEsIDIwMSwgNDYsIDEwNSwgMjAsIDIxLCAyMDQsIDEzNywgMjAsIDIxLCAyMDEsIDQ2LCAyMDQsIDEzNywgMjAsIAorICAgIDIxLCAyMDQsIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDQsIDE3MCwgMjAsIDIxLCAyMDQsIDE2OSwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMDQsIDE2OSwgMjAsIDIxLCAyMjAsIDExOSwgMjA0LCAxNjksIDIwLCAyMSwgMjA3LCA4MywgMjAsIDIxLCAyMDQsIAorICAgIDI0OCwgMjAsIDIxLCAyMDQsIDIzMiwgMjAsIDIxLCAyMDQsIDIzMCwgMjAsIDIxLCAyMDQsIDI1MywgMjAsIDIxLCAyMjcsIAorICAgIDgsIDIwLCAyMSwgMjI3LCAxMDAsIDIwLCAyMSwgMjI2LCAxNjMsIDIwLCAyMSwgMjI2LCAxNTAsIDIwLCAyMSwgMjI2LCA4OCwgCisgICAgMjAsIDIxLCAyMjYsIDY4LCAyMCwgMjEsIDIwMCwgMTIyLCAyMjYsIDY4LCAyMCwgMjEsIDE2MSwgMjAsIDIxLCAyMjcsIAorICAgIDEwNSwgMjAsIDIxLCAyMjUsIDIyNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyNCwgMjAsIDIxLCAyMjUsIDIyMiwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMjUsIDIyMiwgMjAsIDIxLCAyMjUsIDIyMSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyMSwgMjAsIAorICAgIDIxLCAyMjUsIDIxOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIxOSwgMjAsIDIxLCAyMjUsIDIxOCwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjUsIDIxOCwgMjAsIDIxLCAyMjUsIDIyOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyOSwgMjAsIDIxLCAyMjUsIAorICAgIDIyOCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyOCwgMjAsIDIxLCAyMjAsIDExOSwgMjI1LCAyMjgsIDIwLCAyMSwgMjI3LCAKKyAgICAxMTgsIDIwLCAyMSwgMjI1LCAyMzAsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNiwgMjU0LCAyMCwgMjEsIDIwOCwgMjUzLCAyMjYsIAorICAgIDE1MSwgMjAsIDIxLCAyMDgsIDI1MywgMjI2LCA4MiwgMjAsIDIxLCAyMDgsIDI1MywgMjI3LCA4NCwgMjAsIDIxLCAyNDcsIAorICAgIDc2LCAyMCwgMjEsIDI0NywgMTg4LCAyMCwgMjEsIDI0NiwgMTczLCAyMCwgMjEsIDI0NiwgMTYzLCAyMCwgMjEsIDI0NiwgCisgICAgOTEsIDIwLCAyMSwgMjQzLCAzMCwgMjAsIDIxLCAyMDAsIDEyMiwgMjQzLCAzMCwgMjAsIDIxLCAyNDcsIDE5MCwgMjAsIDIxLCAKKyAgICAyNDcsIDE4OSwgMjAsIDIxLCAyNDIsIDE3NCwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3NCwgMjAsIDIxLCAyNDIsIDE3MiwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3MiwgMjAsIDIxLCAyNDIsIDE3MSwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3MSwgCisgICAgMjAsIDIxLCAyNDIsIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3MCwgMjAsIDIxLCAyNDIsIDE2OSwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyNDIsIDE2OSwgMjAsIDIxLCAyNDIsIDE3NiwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3NiwgMjAsIDIxLCAKKyAgICAyNDIsIDE3NSwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3NSwgMjAsIDIxLCAyMjAsIDExOSwgMjQyLCAxNzUsIDIwLCAyMSwgCisgICAgMjQ3LCAyMjMsIDIwLCAyMSwgMjExLCAyMzIsIDIwNiwgMTI0LCAyMCwgMjEsIDIyMiwgNzYsIDIwLCAyMSwgMjIyLCAyMzIsIAorICAgIDIwLCAyMSwgMjIxLCAyMTEsIDIwLCAyMSwgMjIxLCAxODEsIDIwLCAyMSwgMjIxLCAxMzYsIDIwLCAyMSwgMjIxLCA4NywgCisgICAgMjAsIDIxLCAyMDAsIDEyMiwgMjIxLCA4NywgMjAsIDIxLCAxNzgsIDIwLCAyMSwgMjIyLCAyMzMsIDIwLCAyMSwgMjIwLCAKKyAgICAyMjksIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMjksIDIwLCAyMSwgMjIwLCAyMjcsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAKKyAgICAyMjcsIDIwLCAyMSwgMjIwLCAyMjYsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMjYsIDIwLCAyMSwgMjIwLCAyMjUsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjIwLCAyMjUsIDIwLCAyMSwgMjIwLCAyMjQsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMjQsIDIwLCAKKyAgICAyMSwgMjIwLCAyMzEsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMzEsIDIwLCAyMSwgMjIwLCAyMzAsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjIwLCAyMzAsIDIwLCAyMSwgMjIwLCAxMTksIDIyMCwgMjMwLCAyMCwgMjEsIDIyMywgMjQzLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyMywgMjQzLCAyMCwgMjEsIDIyMSwgMjE1LCAyMCwgMjEsIDI1MCwgMTUzLCAyMjMsIDI0MywgMjAsIDIxLCAyMTEsIAorICAgIDIzMiwgMjIzLCAyNDMsIDIwLCAyMSwgMjIwLCAzNCwgMjAsIDIxLCAyMjAsIDE1NiwgMjAsIDIxLCAyMTksIDE1MCwgMjAsIAorICAgIDIxLCAyMTksIDEyNSwgMjAsIDIxLCAyMTgsIDI0MSwgMjAsIDIxLCAyMTgsIDIyOSwgMjAsIDIxLCAyMDAsIDEyMiwgMjE4LCAKKyAgICAyMjksIDIwLCAyMSwgMTg4LCAyMCwgMjEsIDIyMCwgMTU3LCAyMCwgMjEsIDIxOCwgNjcsIDIwLCAyMSwgMjAxLCA0NiwgCisgICAgMjE4LCA2NywgMjAsIDIxLCAyMTgsIDY5LCAyMCwgMjEsIDIwMSwgNDYsIDIxOCwgNjksIDIwLCAyMSwgMjE4LCA2OCwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMTgsIDY4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMTgsIDY4LCAyMCwgMjEsIDIyMCwgMjE0LCAyMCwgCisgICAgMjEsIDg5LCAyMTksIDI1NSwgMjAsIDIxLCAyMTksIDE1NSwgMjAsIDIxLCAyMjUsIDQwLCAyMCwgMjEsIDIyNSwgMTc0LCAKKyAgICAyMCwgMjEsIDIyNCwgMjEwLCAyMCwgMjEsIDIyNCwgMTkyLCAyMCwgMjEsIDIyNCwgMTEwLCAyMCwgMjEsIDIyNCwgNzgsIAorICAgIDIwLCAyMSwgMjAwLCAxMjIsIDIyNCwgNzgsIDIwLCAyMSwgMTk0LCAyMCwgMjEsIDIyNSwgMTc1LCAyMCwgMjEsIDIyNCwgOCwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDgsIDIwLCAyMSwgMjI0LCA3LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNywgMjAsIDIxLCAKKyAgICAyMjQsIDYsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA2LCAyMCwgMjEsIDIyNCwgNSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDUsIAorICAgIDIwLCAyMSwgMjI0LCA0LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNCwgMjAsIDIxLCAyMjQsIDEwLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyNCwgMTAsIDIwLCAyMSwgMjI0LCA5LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgOSwgMjAsIDIxLCAxNTYsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMTU2LCAyMCwgMjEsIDE3OSwgMTU2LCAyMCwgMjEsIDIxMSwgMjAyLCAyMCwgMjEsIDIxMiwgNTksIAorICAgIDIwLCAyMSwgMjA5LCAxODIsIDIwLCAyMSwgMjA5LCAxNjEsIDIwLCAyMSwgMjA5LCAyOSwgMjAsIDIxLCAyMDksIDEwLCAyMCwgCisgICAgMjEsIDIwMCwgMTIyLCAyMDksIDEwLCAyMCwgMjEsIDIxMiwgNjQsIDIwLCAyMSwgMjEyLCA2MSwgMjAsIDIxLCAyMDcsIAorICAgIDE4MiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE4MiwgMjAsIDIxLCAyMDcsIDE3NiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIAorICAgIDE3NiwgMjAsIDIxLCAyMDcsIDE3NSwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE3NSwgMjAsIDIxLCAyMDcsIDE3MSwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMDcsIDE3MSwgMjAsIDIxLCAyMDcsIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE3MCwgMjAsIAorICAgIDIxLCAyMDcsIDE4NiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE4NiwgMjAsIDIxLCAyMDcsIDE4NSwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMDcsIDE4NSwgMjAsIDIxLCAyMjAsIDExOSwgMjA3LCAxODUsIDIwLCAyMSwgMjEyLCAxMjIsIDIwLCAyMSwgMjUwLCAKKyAgICAxNTMsIDIxMiwgMTIyLCAyMCwgMjEsIDIwNywgMTg3LCAyMCwgMjEsIDI0OCwgMTQxLCAyMTIsIDEyMiwgMjAsIDIxLCAyMjEsIAorICAgIDgwLCAyMDksIDg4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDksIDc5LCAyMCwgMjEsIDIyMCwgMTE5LCAyMTIsIDEyMCwgMjAsIAorICAgIDIxLCAyMjAsIDExOSwgMjA4LCAxOTUsIDIwLCAyMSwgMjIwLCAxMTksIDIwOCwgMjcsIDIwLCAyMSwgMjIwLCAxMTksIDIwOSwgCisgICAgNzgsIDIwLCAyMSwgMjIwLCAxMTksIDIxMSwgMjA1LCAyMCwgMjEsIDIxMCwgNjUsIDIwLCAyMSwgMjEwLCAzMywgMjAsIDIxLCAKKyAgICAyMTAsIDI4LCAyMCwgMjEsIDIxMCwgOCwgMjAsIDIxLCAyMTAsIDIsIDIwLCAyMSwgMjEwLCAxMTQsIDIwLCAyMSwgMjEwLCAKKyAgICAxMDksIDIwLCAyMSwgMjA5LCAxOTcsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTcsIDIwLCAyMSwgMjA5LCAxOTYsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjA5LCAxOTYsIDIwLCAyMSwgMjA5LCAxOTUsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTUsIDIwLCAKKyAgICAyMSwgMjA5LCAxOTQsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTQsIDIwLCAyMSwgMjA5LCAxOTMsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA5LCAxOTMsIDIwLCAyMSwgMjA5LCAyMDAsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAyMDAsIDIwLCAyMSwgMjA5LCAKKyAgICAxOTksIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTksIDIwLCAyMSwgMjEwLCAxMTYsIDIwLCAyMSwgMjAwLCA1MSwgMjAsIAorICAgIDIxLCAyMDAsIDEwNywgMjAsIDIxLCAyMDAsIDksIDIwLCAyMSwgMjAwLCAwLCAyMCwgMjEsIDE5OSwgMjQ1LCAyMCwgMjEsIAorICAgIDE5OSwgMjMwLCAyMCwgMjEsIDIwMCwgMTIyLCAxOTksIDIzMCwgMjAsIDIxLCAxODMsIDIwLCAyMSwgMjAwLCAxMDksIDIwLCAKKyAgICAyMSwgMTk5LCAxNzIsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNzIsIDIwLCAyMSwgMTk5LCAxNzEsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMTk5LCAxNzEsIDIwLCAyMSwgMTk5LCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNzAsIDIwLCAyMSwgMTk5LCAKKyAgICAxNjksIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNjksIDIwLCAyMSwgMTk5LCAxNjgsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAKKyAgICAxNjgsIDIwLCAyMSwgMTk5LCAxNzQsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNzQsIDIwLCAyMSwgMTk5LCAxNzMsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMTk5LCAxNzMsIDIwLCAyMSwgMjIwLCAxMTksIDE5OSwgMTczLCAyMCwgMjEsIDIwMCwgMTIzLCAyMCwgCisgICAgMjEsIDI0OCwgMTg2LCAyMDAsIDEyMywgMjAsIDIxLCAyMDEsIDQ2LCAyMDAsIDEyMywgMjAsIDIxLCAyMTEsIDIzMiwgMjAwLCAKKyAgICA5LCAyMCwgMjEsIDIxMywgMTkwLCAyMCwgMjEsIDIxNCwgMzIsIDIxMywgMTkwLCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgNDAsIAorICAgIDIwLCAyMSwgMjEzLCAyNDcsIDIwLCAyMSwgMjEzLCA4OCwgMjAsIDIxLCAyMTMsIDMzLCAyMCwgMjEsIDIxMywgMSwgMjAsIAorICAgIDIxLCAyMTIsIDIzOCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDExMCwgMjAsIDIxLCAyMTMsIDI1MiwgMjAsIDIxLCAyMTMsIAorICAgIDI0OCwgMjAsIDIxLCAyMDEsIDQ2LCAxOTQsIDIwLCAyMSwgMjEyLCAxMzksIDIwLCAyMSwgMjAxLCA0NiwgMjEyLCAxMzksIAorICAgIDIwLCAyMSwgMTQ2LCAyMCwgMjEsIDIwMSwgNDYsIDE0NiwgMjAsIDIxLCAxNzksIDE0NiwgMjAsIDIxLCAyMzcsIDE0NywgCisgICAgMjAsIDIxLCAyMzcsIDE5MiwgMjAsIDIxLCAyMzcsIDExMiwgMjAsIDIxLCAyMzcsIDk4LCAyMCwgMjEsIDIzNywgMTMsIDIwLCAKKyAgICAyMSwgMjM3LCAyLCAyMCwgMjEsIDIzNywgMTk1LCAyMCwgMjEsIDIzNywgMTk0LCAyMCwgMjEsIDIzNiwgMTY2LCAyMCwgMjEsIAorICAgIDIwMSwgNDYsIDIzNiwgMTY2LCAyMCwgMjEsIDIzOCwgNSwgMjAsIDIxLCAyMDYsIDEwNiwgMjAsIDIxLCAyMjAsIDIxMiwgCisgICAgMjA2LCAxMDYsIDIwLCAyMSwgMjA2LCA4NCwgMjAsIDIxLCAyMjAsIDIxMiwgMjA2LCA4NCwgMjAsIDIxLCAyMDYsIDc4LCAKKyAgICAyMCwgMjEsIDIyMCwgMjEyLCAyMDYsIDc4LCAyMCwgMjEsIDIwNiwgNjEsIDIwLCAyMSwgMjA2LCA1NiwgMjAsIDIxLCAyMDYsIAorICAgIDEyMiwgMjAsIDIxLCAyMDYsIDEyMSwgMjAsIDIxLCAyMDYsIDI1LCAyMCwgMjEsIDIwMSwgNDYsIDIwNiwgMjUsIDIwLCAyMSwgCisgICAgMjA2LCAxMjQsIDIwLCAyMSwgMjA0LCAyMzksIDIwLCAyMSwgMjA0LCAyMzcsIDIwLCAyMSwgMjA0LCAyMzYsIDIwLCAyMSwgCisgICAgMjA0LCAyNDEsIDIwLCAyMSwgMjA0LCAyNDIsIDIwLCAyMSwgMjA0LCAxMzEsIDIwLCAyMSwgMjA0LCAxMzAsIDIwLCAyMSwgCisgICAgMjA0LCAxMjksIDIwLCAyMSwgMjA0LCAxMzMsIDIwLCAyMSwgMjE4LCA4OCwgMjM0LCAxMzksIDIwLCAyMSwgMjE4LCA4OCwgCisgICAgMjM0LCA3NSwgMjAsIDIxLCAyMTgsIDg4LCAyMzQsIDU0LCAyMCwgMjEsIDIxOCwgODgsIDIzMywgMjA3LCAyMCwgMjEsIAorICAgIDIxOCwgODgsIDIzMywgMTg4LCAyMCwgMjEsIDIxOCwgODgsIDE0NCwgMjAsIDIxLCAyMTgsIDg4LCAyMzQsIDIzMywgMjAsIAorICAgIDIxLCAyMTgsIDg4LCAyMzQsIDI0NywgMjAsIDIxLCAyMTgsIDg3LCAyMzQsIDI0NywgMjAsIDIxLCAyMzQsIDQxLCAyMCwgCisgICAgMjEsIDIxNCwgMTU1LCAyMCwgMjEsIDIxNCwgMTIxLCAyMCwgMjEsIDIxNCwgMTE1LCAyMCwgMjEsIDIxNCwgMTA5LCAyMCwgCisgICAgMjEsIDIxNCwgMTA0LCAyMCwgMjEsIDIxNCwgMTU5LCAyMCwgMjEsIDIxNCwgMTU4LCAyMCwgMjEsIDIxNCwgMTY3LCAyMCwgCisgICAgMjEsIDIwNSwgMTk5LCAyMCwgMjEsIDIwNSwgMTk3LCAyMCwgMjEsIDIwNSwgMTk2LCAyMCwgMjEsIDIwNSwgMjAwLCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIxMywgMTkwLCAyMCwgMjEsIDIwMSwgNDYsIDIxMywgODgsIDIwLCAyMSwgMjAxLCA0NiwgMjEzLCAxLCAKKyAgICAyMCwgMjEsIDIwMSwgNDYsIDIxMywgMjUyLCAyMCwgMjEsIDIxOSwgMjUxLCAyMCwgMjEsIDIxOSwgMjAxLCAyMCwgMjEsIAorICAgIDIxOSwgMTk3LCAyMCwgMjEsIDIxOSwgMTc4LCAyMCwgMjEsIDIxOSwgMTczLCAyMCwgMjEsIDIxOSwgMjUzLCAyMCwgMjEsIAorICAgIDIxOSwgMjUyLCAyMCwgMjEsIDIxOSwgMjU1LCAyMCwgMjEsIDIxOSwgMTQsIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgNjUsIAorICAgIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgMzMsIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgOCwgMjAsIDIxLCAyMTEsIDIzMiwgCisgICAgMjEwLCAxMTQsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMTA2LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDg0LCAyMCwgMjEsIAorICAgIDIwMCwgMjQyLCAyMDYsIDYxLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDEyMiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAKKyAgICAxMjQsIDIwLCAyMSwgMjI0LCAyMTcsIDIwLCAyMSwgMjI0LCAyMTYsIDIwLCAyMSwgMjI0LCAyMTUsIDIwLCAyMSwgMjI0LCAKKyAgICAyMTQsIDIwLCAyMSwgMjI0LCAyMjMsIDIwLCAyMSwgMjI0LCAyMjIsIDIwLCAyMSwgMjI0LCAyMjQsIDIwLCAyMSwgMjA2LCAKKyAgICAxMjMsIDIwNiwgMTA2LCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDg0LCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDc4LCAyMCwgCisgICAgMjEsIDIwNiwgMTIzLCAyMDYsIDYxLCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDU2LCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIAorICAgIDEyMiwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCAxMjEsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgMTI0LCAyMCwgMjEsIDI1MSwgCisgICAgMTYyLCAyNTAsIDEwMywgMjAsIDIxLCAyNDgsIDE0MSwgNzIsIDIwLCAyMSwgMjQ4LCAxNDEsIDcwLCAyMCwgMjEsIDI0OCwgCisgICAgMTQxLCA3NCwgMjAsIDIxLCAyNDgsIDE0MSwgNjIsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgNjQsIDIwLCAyMSwgMjQ4LCAKKyAgICAxNDEsIDIwMSwgMzEsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgMCwgMjAsIDIxLCAyNDgsIDE0MSwgMjAxLCAxMTQsIDIwLCAKKyAgICAyMSwgMjQ4LCAxNDEsIDIyMCwgMzQsIDIwLCAyMSwgMjQ4LCAxNDEsIDIxOSwgMTUwLCAyMCwgMjEsIDI0OCwgMTQxLCAyMTgsIAorICAgIDI0MSwgMjAsIDIxLCAyNDgsIDE0MSwgMTg4LCAyMCwgMjEsIDI0OCwgMTQxLCAyMjcsIDgsIDIwLCAyMSwgMjQ4LCAxNDEsIAorICAgIDIyNiwgMTYzLCAyMCwgMjEsIDI0OCwgMTQxLCAyMjYsIDg4LCAyMCwgMjEsIDI0OCwgMTQxLCAxNjEsIDIwLCAyMSwgMjExLCAKKyAgICAyMzIsIDIzNCwgMTM5LCAyMCwgMjEsIDIxMSwgMjMyLCAyMzQsIDc1LCAyMCwgMjEsIDIxMSwgMjMyLCAyMzMsIDIwNywgMjAsIAorICAgIDIxLCAyMTEsIDIzMiwgMTQ0LCAyMCwgMjEsIDg5LCAyMzUsIDE2NywgMjAsIDIxLCA4OSwgMjM1LCAxNzEsIDIwLCAyMSwgCisgICAgODksIDIzNSwgMTg1LCAyMCwgMjEsIDg5LCAyMzUsIDE4NCwgMjAsIDIxLCA4OSwgMjM1LCAxNzMsIDIwLCAyMSwgODksIAorICAgIDIzNSwgMTk5LCAyMCwgMjEsIDg5LCAyMTIsIDE3NSwgMjAsIDIxLCA4OSwgMjEzLCAxLCAyMCwgMjEsIDg5LCAyMTMsIDE5MCwgCisgICAgMjAsIDIxLCA4OSwgMjEzLCAxNjcsIDIwLCAyMSwgODksIDIxMywgODgsIDIwLCAyMSwgODksIDIxMywgMjUyLCAyMCwgMjEsIAorICAgIDg5LCAyMDAsIDIxNiwgMjAsIDIxLCA4OSwgMjAxLCAwLCAyMCwgMjEsIDg5LCAyMDEsIDY0LCAyMCwgMjEsIDg5LCAyMDEsIAorICAgIDU3LCAyMCwgMjEsIDg5LCAyMDEsIDMxLCAyMCwgMjEsIDg5LCAyMDEsIDExNCwgMjAsIDIxLCA4OSwgMjMzLCA2MSwgMjAsIAorICAgIDIxLCA4OSwgMjMzLCA2MiwgMjAsIDIxLCA4OSwgMjMzLCA2NSwgMjAsIDIxLCA4OSwgMjMzLCA2NCwgMjAsIDIxLCA4OSwgCisgICAgMjMzLCA2MywgMjAsIDIxLCA4OSwgMjMzLCA2OCwgMjAsIDIxLCA4OSwgMjA2LCAzNSwgMjAsIDIxLCA4OSwgMjA2LCA2MSwgCisgICAgMjAsIDIxLCA4OSwgMjA2LCAxMDYsIDIwLCAyMSwgODksIDIwNiwgMTA0LCAyMCwgMjEsIDg5LCAyMDYsIDg0LCAyMCwgMjEsIAorICAgIDg5LCAyMDYsIDEyMiwgMjAsIDIxLCA4OSwgMjA0LCAyMjAsIDIwLCAyMSwgODksIDIwNCwgMjMwLCAyMCwgMjEsIDg5LCAKKyAgICAyMDQsIDI0OCwgMjAsIDIxLCA4OSwgMjA0LCAyNDcsIDIwLCAyMSwgODksIDIwNCwgMjMyLCAyMCwgMjEsIDg5LCAyMDQsIAorICAgIDI1MywgMjAsIDIxLCA4OSwgMjE0LCAyMjQsIDIwLCAyMSwgODksIDIxNSwgMTA2LCAyMCwgMjEsIDg5LCAyMTYsIDczLCAyMCwgCisgICAgMjEsIDg5LCAyMTYsIDYxLCAyMCwgMjEsIDg5LCAyMTUsIDIwNCwgMjAsIDIxLCA4OSwgMTcyLCAyMCwgMjEsIDg5LCAyMTYsIAorICAgIDIyNiwgMjAsIDIxLCA4OSwgMjM1LCA1MCwgMjAsIDIxLCA4OSwgMjM1LCAxMTYsIDIwLCAyMSwgODksIDIzNiwgMTUsIDIwLCAKKyAgICAyMSwgODksIDIzNiwgNywgMjAsIDIxLCA4OSwgMjM1LCAxNjEsIDIwLCAyMSwgODksIDIzNiwgODksIDIwLCAyMSwgODksIAorICAgIDIyNiwgMTcyLCAyMCwgMjEsIDg5LCAyMjYsIDE3OCwgMjAsIDIxLCA4OSwgMjI2LCAxOTIsIDIwLCAyMSwgODksIDIyNiwgCisgICAgMTkxLCAyMCwgMjEsIDg5LCAyMjYsIDE4NSwgMjAsIDIxLCA4OSwgMjI2LCAyMDcsIDIwLCAyMSwgODksIDIyNiwgMTA0LCAKKyAgICAyMCwgMjEsIDg5LCAyMjYsIDEwNSwgMjAsIDIxLCA4OSwgMjI2LCAxMDgsIDIwLCAyMSwgODksIDIyNiwgMTA3LCAyMCwgMjEsIAorICAgIDg5LCAyMjYsIDEwNiwgMjAsIDIxLCA4OSwgMjI2LCAxMDksIDIwLCAyMSwgODksIDIyNiwgMTEwLCAyMCwgMjEsIDg5LCAKKyAgICAyMTgsIDEzMywgMjAsIDIxLCA4OSwgMjE4LCAyNDEsIDIwLCAyMSwgODksIDIyMCwgMzQsIDIwLCAyMSwgODksIDIyMCwgMjksIAorICAgIDIwLCAyMSwgODksIDIxOSwgMTUwLCAyMCwgMjEsIDg5LCAxODgsIDIwLCAyMSwgODksIDIyMSwgNDEsIDIwLCAyMSwgODksIAorICAgIDIyMSwgMTM2LCAyMCwgMjEsIDg5LCAyMjIsIDc2LCAyMCwgMjEsIDg5LCAyMjIsIDY0LCAyMCwgMjEsIDg5LCAyMjEsIDIxMSwgCisgICAgMjAsIDIxLCA4OSwgMTc4LCAyMCwgMjEsIDg5LCAxOTksIDIxMSwgMjAsIDIxLCA4OSwgMTk5LCAyNDUsIDIwLCAyMSwgODksIAorICAgIDIwMCwgNTEsIDIwLCAyMSwgODksIDIwMCwgNDgsIDIwLCAyMSwgODksIDIwMCwgOSwgMjAsIDIxLCA4OSwgMTgzLCAyMCwgCisgICAgMjEsIDg5LCAyMjcsIDE0NywgMjAsIDIxLCAyMTEsIDIzMiwgMjI3LCAxNDcsIDIwLCAyMSwgODksIDIyNywgMTY2LCAyMCwgCisgICAgMjEsIDg5LCAyMjcsIDIyNywgMjAsIDIxLCA4OSwgMjI3LCAyMjUsIDIwLCAyMSwgODksIDIyNywgMjA3LCAyMCwgMjEsIAorICAgIDIxMSwgMjMyLCAyMjcsIDIwNywgMjAsIDIxLCA4OSwgMjI3LCAyNDgsIDIwLCAyMSwgODksIDIyNywgMTc5LCAyMCwgMjEsIAorICAgIDg5LCAyMjcsIDE4MywgMjAsIDIxLCA4OSwgMjI3LCAxOTMsIDIwLCAyMSwgODksIDIyNywgMTkyLCAyMCwgMjEsIDg5LCAKKyAgICAyMjcsIDE5MSwgMjAsIDIxLCA4OSwgMjI3LCAxOTQsIDIwLCAyMSwgODksIDIyNCwgNDIsIDIwLCAyMSwgODksIDIyNCwgCisgICAgMTEwLCAyMCwgMjEsIDg5LCAyMjUsIDQwLCAyMCwgMjEsIDg5LCAyMjUsIDMyLCAyMCwgMjEsIDg5LCAyMjQsIDIxMCwgMjAsIAorICAgIDIxLCA4OSwgMTk0LCAyMCwgMjEsIDg5LCAyNDAsIDIxNSwgMjAsIDIxLCA4OSwgMjQwLCAyMTYsIDIwLCAyMSwgODksIDI0MCwgCisgICAgMjIxLCAyMCwgMjEsIDg5LCAyNDAsIDIyMCwgMjAsIDIxLCA4OSwgMjQwLCAyMTcsIDIwLCAyMSwgODksIDI0MCwgMjIyLCAKKyAgICAyMCwgMjEsIDg5LCAyMjQsIDIxMywgMjAsIDIxLCA4OSwgMjI0LCAyMTUsIDIwLCAyMSwgODksIDIyNCwgMjE5LCAyMCwgMjEsIAorICAgIDg5LCAyMjQsIDIxOCwgMjAsIDIxLCA4OSwgMjI0LCAyMTcsIDIwLCAyMSwgODksIDIyNCwgMjIzLCAyMCwgMjEsIDg5LCAKKyAgICAyMDUsIDE5NCwgMjAsIDIxLCA4OSwgMjA1LCAxOTYsIDIwLCAyMSwgODksIDIwNSwgMTk5LCAyMCwgMjEsIDg5LCAyMDUsIAorICAgIDE5OCwgMjAsIDIxLCA4OSwgMjA1LCAxOTcsIDIwLCAyMSwgODksIDIwNSwgMjAwLCAyMCwgMjEsIDg5LCAyMDUsIDE4OSwgCisgICAgMjAsIDIxLCA4OSwgMjA1LCAxOTAsIDIwLCAyMSwgODksIDIwNSwgMjAyLCAyMCwgMjEsIDg5LCAyMDUsIDIwMSwgMjAsIDIxLCAKKyAgICA4OSwgMjA1LCAxOTEsIDIwLCAyMSwgODksIDIwNSwgMjAzLCAyMCwgMjEsIDg5LCAxOTksIDMsIDIwLCAyMSwgODksIDE5OSwgCisgICAgMTQsIDIwLCAyMSwgODksIDE5OSwgODksIDIwLCAyMSwgODksIDE5OSwgODcsIDIwLCAyMSwgODksIDE5OSwgMzYsIDIwLCAKKyAgICAyMSwgODksIDE5OSwgMTE0LCAyMCwgMjEsIDg5LCAxOTksIDE1NywgMjAsIDIxLCA4OSwgODIsIDE5OSwgMTU3LCAyMCwgMjEsIAorICAgIDg5LCAyMzksIDgwLCAyMCwgMjEsIDg5LCAyMzksIDgxLCAyMCwgMjEsIDg5LCAyMzksIDkwLCAyMCwgMjEsIDg5LCAyMzksIAorICAgIDg5LCAyMCwgMjEsIDg5LCAyMzksIDg0LCAyMCwgMjEsIDg5LCAyMzksIDkzLCAyMCwgMjEsIDg5LCAyMDgsIDI0LCAyMCwgCisgICAgMjEsIDg5LCAyMDksIDI5LCAyMCwgMjEsIDg5LCAyMTEsIDIwMiwgMjAsIDIxLCA4OSwgMjExLCAxOTAsIDIwLCAyMSwgODksIAorICAgIDIwOSwgMTgyLCAyMCwgMjEsIDg5LCAyMTIsIDY0LCAyMCwgMjEsIDg5LCAyMDksIDIyMCwgMjAsIDIxLCA4OSwgMjEwLCA4LCAKKyAgICAyMCwgMjEsIDg5LCAyMTAsIDY1LCAyMCwgMjEsIDg5LCAyMTAsIDYzLCAyMCwgMjEsIDg5LCAyMTAsIDMzLCAyMCwgMjEsIAorICAgIDg5LCAyMTAsIDExNCwgMjAsIDIxLCA4OSwgMjEwLCAxMTYsIDIwLCAyMSwgODksIDIwNSwgNSwgMjAsIDIxLCA4OSwgMjA1LCAKKyAgICA5LCAyMCwgMjEsIDg5LCAyMDUsIDI2LCAyMCwgMjEsIDg5LCAyMDUsIDI1LCAyMCwgMjEsIDg5LCAyMDUsIDExLCAyMCwgMjEsIAorICAgIDg5LCAyMDUsIDMyLCAyMCwgMjEsIDg5LCAyNDYsIDE5MiwgMjAsIDIxLCA4OSwgMjQ2LCAyMTAsIDIwLCAyMSwgODksIDI0NywgCisgICAgOCwgMjAsIDIxLCA4OSwgMjQ3LCA0LCAyMCwgMjEsIDg5LCAyNDYsIDIzNiwgMjAsIDIxLCA4OSwgMjQ3LCAzNywgMjAsIDIxLCAKKyAgICA4OSwgMjA0LCAyMjMsIDIwLCAyMSwgODksIDIwNCwgMjI0LCAyMCwgMjEsIDg5LCAyMDQsIDIyNywgMjAsIDIxLCA4OSwgCisgICAgMjA0LCAyMjYsIDIwLCAyMSwgODksIDIwNCwgMjI1LCAyMCwgMjEsIDg5LCAyMDQsIDIyOCwgMjAsIDIxLCAyNDYsIDIzNywgCisgICAgNTQsIDIwLCAyMSwgMjM2LCAxODMsIDIwOCwgNzYsIDIwLCAyMSwgMjE0LCAxNTEsIDIwLCAyMSwgMjE5LCAyNDksIDIwLCAKKyAgICAyMSwgMjE5LCAxMSwgMjAsIDIxLCAyMTksIDEwLCAyMCwgMjEsIDIxOSwgOSwgMjAsIDIxLCAyMTksIDgsIDIwLCAyMSwgCisgICAgMjE5LCAxMywgMjAsIDIxLCAyMTksIDEyLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDIzLCAyMCwgMjEsIDIwMCwgMjQyLCAKKyAgICAyMDYsIDIyLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDIxLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDIwLCAyMCwgMjEsIAorICAgIDIwMCwgMjQyLCAyMDYsIDE5LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDI2LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDI1LCAKKyAgICAyMCwgMjEsIDIwMCwgMjQyLCA0NywgMjA2LCAxMjQsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgMTQ3LCAyMTcsIDExMiwgCisgICAgMjA4LCAyNDUsIDgxLCAyMTcsIDExMiwgMSwgMjQ4LCAyMzQsIDIxNywgMTEyLCAxLCAyMjQsIDI4LCAyMTcsIDExMiwgMSwgCisgICAgMjM3LCAxNDQsIDIxNywgMTEyLCAxLCAyMTIsIDQ0LCAyMTcsIDExMiwgMSwgMjE5LCAxMDYsIDIxNywgMTEyLCAxLCAyMDQsIAorICAgIDQzLCAyMTcsIDExMiwgMSwgMjQyLCAzMSwgMjE3LCAxMTIsIDEsIDIwNSwgMjI3LCAyMTcsIDExMiwgMSwgMjQ2LCA4MiwgCisgICAgMjE3LCAxMTIsIDEsIDI0NywgNjMsIDIxNywgMTEyLCAxLCAyMjEsIDI4LCAyMTcsIDExMiwgMSwgMjM1LCA5NiwgMjE3LCAKKyAgICAxMTIsIDEsIDIxOSwgMjM5LCAyMTcsIDExMiwgMSwgMjA4LCA2OSwgMjE3LCAxMTIsIDEsIDIxMiwgMTY4LCAyMTcsIDExMiwgCisgICAgMSwgMjUxLCAxNzMsIDIxNywgMTEyLCAxLCAyMTcsIDY3LCAyMTcsIDExMiwgMSwgMjAzLCAyMTQsIDIxNywgMTEyLCAxLCAKKyAgICAyMzksIDI1LCAyMTcsIDExMiwgMSwgMjI4LCA0NCwgMjE3LCAxMTIsIDEsIDIzOSwgMjYsIDIxNywgMTEyLCAxLCAyMTcsIAorICAgIDMzLCAyMTcsIDExMiwgMSwgMjA0LCAyMSwgMjE3LCAxMTIsIDEsIDIyOCwgMTU3LCAyMTcsIDExMiwgMSwgMjM5LCAyMywgCisgICAgMjE3LCAxMTIsIDEsIDIxNiwgNTEsIDIxNywgMTEyLCAyMzcsIDE0MywgODEsIDIxNywgMTEyLCAyMTMsIDEwNSwgMjM3LCAKKyAgICAxNDMsIDgxLCAyMTIsIDE1NywgMSwgMjM3LCAxMzMsIDIzNywgMTI0LCAyMzcsIDE0OCwgMjM4LCA1LCAyMTIsIDE1NywgMSwgCisgICAgMjAzLCAxNjgsIDIxMiwgMTU3LCAxLCAyMDMsIDE5OSwgMjAzLCAyMTUsIDY2LCAyMTIsIDE1NywgMSwgMTk5LCAyMTQsIAorICAgIDIxMiwgMTU3LCAxLCAyMDAsIDEyMywgMjEyLCAxNTcsIDEsIDIwMSwgMTQ3LCAyMTIsIDE1NywgMSwgMjA2LCAyOCwgMjA2LCAKKyAgICAyNywgMjA2LCA1NCwgMjEyLCAxNTcsIDEsIDIzOCwgNzQsIDIxMiwgMTU3LCAxLCAyNTEsIDUyLCA2MiwgMjEyLCAxNTcsIDEsIAorICAgIDIxNywgMTYsIDc0LCAyMTIsIDE1NywgMSwgMjUxLCAyNTUsIDYyLCAyMTIsIDE1NywgMSwgMjUxLCAyMDUsIDIxMiwgMTU3LCAKKyAgICAxLCAyMjQsIDg1LCA3NCwgMjEyLCAxNTcsIDEsIDIwOSwgMjQzLCA3NCwgMjEyLCAxNTcsIDEsIDc0LCAyMTIsIDE1NywgMSwgCisgICAgMjE3LCAxMjEsIDIxMiwgMTU3LCAxLCAyMTcsIDc4LCAyMTIsIDE1NywgMSwgMjEzLCAyMjcsIDIxMywgMjQwLCAyMTMsIAorICAgIDE1MiwgMTQ2LCAyMTIsIDE1NywgMSwgMjI3LCAyMywgMjEyLCAxNTcsIDEsIDI0NywgNTksIDIxMiwgMTU3LCAxLCAyMjcsIAorICAgIDI0LCAyMjcsIDExOCwgMjEyLCAxNTcsIDEsIDIzNiwgMTU2LCAyMTIsIDE1NywgMSwgMjM4LCAxNjUsIDIxMiwgMTU3LCAxLCAKKyAgICAyMzYsIDEwLCAyMzQsIDI1MywgMjM2LCAxNTYsIDIxMiwgMTU3LCAxLCAyMzYsIDQ5LCAyMTIsIDE1NywgMSwgMjAwLCAyMDgsIAorICAgIDIwMCwgMTk5LCAyMDEsIDE0NywgMjEyLCAxNTcsIDEsIDIzNCwgMjI1LCAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIzNCwgCisgICAgMjI5LCAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIyNCwgODcsIDIzNCwgMjQ3LCAyMTIsIDE1NywgMSwgMjA5LCAyNDYsIAorICAgIDIzNCwgMjQ3LCAyMTIsIDE1NywgMSwgMjIwLCAxMTQsIDIxOCwgNTEsIDIyMCwgMTE1LCAyMjAsIDIxNCwgMjEyLCAxNTcsIAorICAgIDEsIDIwOSwgMjQ0LCAyMjAsIDIxNCwgMjEyLCAxNTcsIDEsIDIzOSwgMTc3LCAyMTIsIDE1NywgMSwgMjI4LCAyMywgMjI4LCAKKyAgICAyNywgMjI4LCAxNCwgNzAsIDIxMiwgMTU3LCAxLCA3MiwgMjEyLCAxNTcsIDEsIDIyNywgMjE4LCAyMjcsIDI1MSwgMjEyLCAKKyAgICAxNTcsIDEsIDIzNSwgMjQ5LCAyMTIsIDE1NywgMSwgMjI0LCA4OCwgMjUxLCAyMjEsIDIxMiwgMTU3LCAxLCAyMDksIDI0OCwgCisgICAgNjIsIDIxMiwgMTU3LCAxLCAyMjgsIDYsIDIzOCwgMTM4LCAyMTIsIDE1NywgMSwgMjE2LCA3LCAyMTYsIDMyLCAyMTYsIAorICAgIDIyNiwgMjEyLCAxNTcsIDEsIDI1MSwgMTM1LCAyMzgsIDEzNiwgMjEyLCAxNTcsIDEsIDIwOCwgMjUwLCAyMTIsIDEyMiwgCisgICAgMjEyLCAxNTcsIDEsIDIwOSwgMTY1LCAyMjQsIDg0LCAyMTIsIDEyMiwgMjEyLCAxNTcsIDEsIDIwOSwgMjQyLCAyMTIsIAorICAgIDEyMiwgMjEyLCAxNTcsIDEsIDI0NywgMjIzLCAyMTIsIDE1NywgMSwgMTk5LCAxNTcsIDIxMiwgMTU3LCAxLCAyMDUsIDIwOCwgCisgICAgMjA1LCAyMjAsIDIwNCwgMTE1LCAyMDcsIDgzLCAyMTIsIDE1NywgMSwgMjA5LCAyNDEsIDIwNywgODMsIDIxMiwgMTU3LCAxLCAKKyAgICAyNDIsIDE1MywgMjEyLCAxNTcsIDEsIDI0OCwgMjEzLCAyNDgsIDIxNiwgMjQ4LCAxNDcsIDI1MCwgMTAzLCAyMTIsIDE1NywgCisgICAgMSwgMjA5LCAyNDcsIDI1MCwgMTAzLCAyMTIsIDE1NywgMSwgMjM5LCAxNzYsIDIxMiwgMTU3LCAxLCAyMTcsIDQ3LCAyMTIsIAorICAgIDE1NywgMSwgMjM4LCAyMzUsIDIzOCwgMjQyLCA3MiwgMjEyLCAxNTcsIDEsIDIyMiwgMTcxLCAyMjIsIDE4MSwgMjIzLCAKKyAgICAyNDMsIDIxMiwgMTU3LCAxLCAyMjQsIDg2LCAyMjMsIDI0MywgMjEyLCAxNTcsIDEsIDIwOSwgMjQ1LCAyMjMsIDI0MywgCisgICAgMjEyLCAxNTcsIDEsIDIyNSwgNTUsIDIyNSwgMTU0LCAyMjQsIDk1LCAxNTYsIDIxMiwgMTU3LCAxLCAyMzksIDE3OCwgMjEyLCAKKyAgICAxNTcsIDEsIDIyOCwgOTAsIDIxMiwgMTU3LCAxLCAyMjgsIDkxLCAyMTIsIDE1NywgMSwgMjQyLCA0NSwgMjQyLCA1MSwgCisgICAgMjQyLCAxNTMsIDIxMiwgMTU3LCAxLCAyMTcsIDksIDIzOCwgNzMsIDc0LCAyMTIsIDE1NywgMSwgMjM5LCAyMSwgMjEyLCAKKyAgICAxNTcsIDEsIDIyOCwgNDMsIDIxMiwgMTU3LCAxLCAyNDIsIDE3MywgMjEyLCAxNTcsIDEsIDI0NywgMTczLCAyMTIsIDE1NywgCisgICAgMSwgMjQ3LCA3NSwgMjEyLCAxNTcsIDEsIDIwOCwgMTE0LCAyMTIsIDE1NywgMSwgMjI0LCA4MywgMjEyLCAxNTcsIDEsIAorICAgIDIwOSwgMjQwLCAyMTIsIDE1NywgMSwgMjMyLCAyMzAsIDIxMiwgMTU3LCAxLCAyMTQsIDE2NywgMjEyLCAxNTcsIDEsIDIwMCwgCisgICAgMTk1LCAyMTIsIDE1NywgMjA5LCAxMzksIDIxNCwgMjExLCAyMTIsIDE1NywgMjIxLCAyMSwgMjE0LCAyMTEsIDIxMiwgMTU3LCAKKyAgICAyNDIsIDIzNSwgMjE0LCAyMTEsIDIxMiwgMTU3LCAyNTAsIDIxNiwgOTksIDIxMiwgMTU3LCAyMDQsIDE3MiwgOTksIDIxMiwgCisgICAgMTU3LCAyNDgsIDIzMiwgOTksIDIxMiwgMTU3LCAxLCAyMjcsIDExOCwgMjEyLCAxNTcsIDEsIDIxMCwgMTE2LCAyMTIsIAorICAgIDE1NywgMSwgMjE3LCA2MywgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIDExNCwgMjE3LCAxNSwgMjEyLCAxNTcsIDEsIAorICAgIDIzNiwgMjEyLCAyNDcsIDExNCwgMjI4LCAyNiwgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIDExNCwgMjM4LCAyNDEsIAorICAgIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAxMTQsIDI1MSwgMjU0LCAyMTIsIDE1NywgMSwgMjM2LCAyMTIsIDI0NywgCisgICAgMTE0LCAyNTEsIDIwNSwgMjA3LCAxMiwgMSwgNjIsIDIwNywgMTIsIDEsIDcwLCAyMDcsIDEyLCAxLCA2NiwgMjA3LCAxMiwgCisgICAgMSwgMTYxLCAyMDcsIDEyLCAxLCAyMzYsIDg5LCAyMDcsIDEyLCAxLCAyMTksIDI1MywgMjA3LCAxMiwgMSwgMjA3LCAzNiwgCisgICAgMjA3LCAxMiwgMSwgMjQyLCA1OCwgMjA3LCAxMiwgMSwgMTg4LCAyMDcsIDEyLCAxLCAxNzIsIDIwNywgMTIsIDEsIDI0OSwgCisgICAgMTM2LCAyMDcsIDEyLCAxLCAxNzgsIDIwNywgMTIsIDEsIDE4MywgMjA3LCAxMiwgMSwgMTk0LCAyMDcsIDEyLCAxLCAyMDEsIAorICAgIDExNCwgMjA3LCAxMiwgMSwgMjEyLCA2NCwgMjA3LCAxMiwgMSwgMTQ0LCAyMDcsIDEyLCAyMiwgMiwgNzAsIDIwNywgMTIsIAorICAgIDIyLCAyLCA2NiwgMjA3LCAxMiwgMiwgMjAyLCAyMDgsIDIzNCwgMTcwLCAxLCA2MiwgMjM0LCAxNzAsIDEsIDcwLCAyMzQsIAorICAgIDE3MCwgMSwgNjYsIDIzNCwgMTcwLCAxLCAxNjEsIDIzNCwgMTcwLCAxLCAyMzYsIDg5LCAyMzQsIDE3MCwgMSwgMjE5LCAKKyAgICAyNTMsIDIzNCwgMTcwLCAxLCAyMDcsIDM2LCAyMzQsIDE3MCwgMSwgMjQyLCA1OCwgMjM0LCAxNzAsIDEsIDE4OCwgMjM0LCAKKyAgICAxNzAsIDEsIDE3MiwgMjM0LCAxNzAsIDEsIDI0OSwgMTM2LCAyMzQsIDE3MCwgMSwgMTc4LCAyMzQsIDE3MCwgMSwgMTgzLCAKKyAgICAyMzQsIDE3MCwgMSwgMjEzLCAyNTIsIDIzNCwgMTcwLCAxLCAxOTQsIDIzNCwgMTcwLCAxLCAyMDEsIDExNCwgMjM0LCAxNzAsIAorICAgIDEsIDIxMiwgNjQsIDIzNCwgMTcwLCAxLCAxNDQsIDIzNCwgMTcwLCAyMiwgMiwgNzAsIDIzNCwgMTcwLCAyMiwgMiwgNjYsIAorICAgIDIzNCwgMTcwLCAyLCAyMTYsIDE2NSwgMjE1LCAyMjIsIDIwOSwgMTM5LCAyMTQsIDIxMSwgMjE1LCAyMjIsIDUzLCAyMTQsIAorICAgIDIxMSwgMjQ4LCAyOCwgMSwgNjIsIDI0OCwgMjgsIDEsIDcwLCAyNDgsIDI4LCAxLCA2NiwgMjQ4LCAyOCwgMSwgMTYxLCAKKyAgICAyNDgsIDI4LCAxLCAyMzYsIDg5LCAyNDgsIDI4LCAxLCAyMTksIDI1MywgMjQ4LCAyOCwgMSwgMjA3LCAzNiwgMjQ4LCAyOCwgCisgICAgMSwgMjQyLCA1OCwgMjQ4LCAyOCwgMSwgMTg4LCAyNDgsIDI4LCAxLCAxNzIsIDI0OCwgMjgsIDEsIDI0OSwgMTM2LCAyNDgsIAorICAgIDI4LCAxLCAxNzgsIDI0OCwgMjgsIDEsIDE4MywgMjQ4LCAyOCwgMSwgMjEzLCAyNTIsIDI0OCwgMjgsIDEsIDE5NCwgMjQ4LCAKKyAgICAyOCwgMSwgMjAxLCAxMTQsIDI0OCwgMjgsIDEsIDIxMiwgNjQsIDI0OCwgMjgsIDEsIDE0NCwgMjQ4LCAyOCwgMjIsIDIsIAorICAgIDcwLCAyNDgsIDI4LCAyMiwgMiwgNjYsIDIwNywgMTEsIDEsIDYyLCAyMDcsIDExLCAxLCA3MCwgMjA3LCAxMSwgMSwgNjYsIAorICAgIDIwNywgMTEsIDEsIDE2MSwgMjA3LCAxMSwgMSwgMjM2LCA4OSwgMjA3LCAxMSwgMSwgMjE5LCAyNTMsIDIwNywgMTEsIDEsIAorICAgIDIwNywgMzYsIDIwNywgMTEsIDEsIDI0MiwgNTgsIDIwNywgMTEsIDEsIDE4OCwgMjA3LCAxMSwgMSwgMTcyLCAyMDcsIDExLCAKKyAgICAxLCAyNDksIDEzNiwgMjA3LCAxMSwgMSwgMTc4LCAyMDcsIDExLCAxLCAxODMsIDIwNywgMTEsIDEsIDE5NCwgMjA3LCAxMSwgCisgICAgMSwgMjAxLCAxMTQsIDIwNywgMTEsIDEsIDIxMiwgNjQsIDIwNywgMTEsIDIyLCAyLCA3MCwgMjA3LCAxMSwgMjIsIDIsIDY2LCAKKyAgICA4NiwgMSwgMTYxLCA4NiwgMSwgMjI2LCAyMDcsIDg2LCAxLCAyMjYsIDg4LCA4NiwgMSwgMjI2LCAxNzgsIDg2LCAxLCAyMTksIAorICAgIDE3OCwgODYsIDEsIDI0NywgMTkwLCA4NiwgMSwgMjQ3LCAzNywgODYsIDEsIDI0NiwgOTEsIDg2LCAxLCAyNDYsIDIxMCwgCisgICAgODYsIDEsIDIxOCwgMjYsIDg2LCAxLCAyNDIsIDU4LCA4NiwgMSwgMjA0LCAyNDEsIDg2LCAxLCAyNDAsIDIxMSwgODYsIDEsIAorICAgIDIwNCwgMjM2LCA4NiwgMSwgMjE4LCAyNDcsIDg2LCAxLCAyMDcsIDM2LCA4NiwgMSwgMjA2LCAxMjIsIDg2LCAxLCAxMzgsIAorICAgIDg2LCAxLCAyMDYsIDYxLCA4NiwgMSwgMjE4LCAyNDEsIDg2LCAxLCAyNDksIDEzNiwgODYsIDEsIDIxNSwgMjQ1LCA4NiwgMSwgCisgICAgMjE1LCAxMDYsIDg2LCAxLCAyMTUsIDIxNywgODYsIDEsIDIyMSwgMTM2LCA4NiwgMSwgMTk5LCAyNDUsIDg2LCAxLCAyMTMsIAorICAgIDEsIDg2LCAxLCAyMjQsIDExMCwgODYsIDEsIDIwMiwgMTkzLCA4NiwgMSwgMjEwLCAxMTQsIDg2LCAxLCAyMDgsIDEzOSwgCisgICAgODYsIDEsIDIxMiwgNjQsIDg2LCAxLCAxNDQsIDg2LCAxLCAxOTQsIDg2LCAxLCAyMTQsIDE1OSwgODYsIDIyOCwgMTA0LCAKKyAgICAyMiwgMjE0LCAxNDUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTU4LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDEyMSwgODYsIAorICAgIDIyOCwgMTA0LCAyMiwgMjE0LCAxMTUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgOTcsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgCisgICAgNjcsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgNTUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgNTQsIDg2LCAyMjgsIDEwNCwgCisgICAgMjIsIDIxMiwgMTMxLCA4NiwgMjI4LCAxMDQsIDIyLCAyMTIsIDEyNCwgODYsIDIyOCwgMTA0LCAyMiwgMjI0LCAyLCA4NiwgCisgICAgMjI4LCAxMDQsIDIyLCAyMjMsIDI0NiwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxMzksIDg2LCAyMjgsIDEwNCwgMjIsIAorICAgIDIxNCwgMTUxLCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDEwNSwgMjA0LCAxMjgsIDEwMiwgODYsIDIyOCwgMTA0LCAyMiwgCisgICAgMjE0LCAxMDUsIDIwNCwgMTI4LCAxMDUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTQxLCA4NiwgMjIsIDIyOCwgODgsIAorICAgIDI1MSwgMSwgODYsIDIyLCAyMjgsIDg4LCAyNTIsIDEzOCwgODYsIDIyLCAyLCAyNTIsIDEzOCwgODYsIDIyLCAyLCA3MCwgCisgICAgODYsIDIyLCAyLCAyMjgsIDE1MSwgODYsIDIyLCAyLCAyMDAsIDEyMywgODYsIDIyLCAyLCAxOTksIDE2NywgODYsIDIyLCAyLCAKKyAgICA2NiwgODYsIDIyLCAyLCAyMDMsIDE4MiwgODYsIDIyLCAyLCAyMDQsIDQ2LCA4NiwgMjIsIDIsIDIxNywgMTIxLCA4NiwgMjIsIAorICAgIDIsIDE4MywgODYsIDIyLCAyLCAyMjgsIDE3OCwgODYsIDIyLCAyLCA3MiwgODYsIDIyLCAyLCAyNTEsIDIyMSwgODYsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgODYsIDIyLCAyLCAyMTcsIDYzLCA4NiwgMjIsIDIsIDI1MCwgMTM5LCA4NiwgMiwgMjE5LCAxMjMsIAorICAgIDg2LCAyLCAyMTMsIDE4OCwgODYsIDIsIDE5OSwgMTc4LCA4NiwgMiwgMjIwLCAyNDEsIDg2LCAyLCAyMDUsIDg2LCA4NiwgMiwgCisgICAgMjQ5LCA3OSwgODYsIDIsIDIxMiwgMjUyLCA4NiwgMiwgMjA1LCAxODQsIDg2LCAyLCAyMjcsIDc1LCA4NiwgMiwgMjUxLCAKKyAgICAxNzgsIDg2LCAyLCAyMTIsIDE0LCAyMTIsIDcsIDg2LCAyLCAyMDIsIDIwNSwgODYsIDIsIDI0NiwgODUsIDg2LCAyLCAyNDksIAorICAgIDUxLCA4NiwgMiwgMjI2LCAxOTksIDg2LCAyLCAyNDksIDc0LCA4NiwgMiwgMjQ3LCAxNjEsIDIxNSwgMTY3LCAyMjUsIDIzNSwgCisgICAgODYsIDIsIDIyNSwgOSwgMjA1LCAxNjEsIDg2LCAyLCAyNDgsIDIwMiwgODYsIDIsIDIxNSwgMjE5LCAyMjEsIDM4LCA4NiwgCisgICAgMiwgMjI2LCA2NiwgODYsIDI0MiwgMTk1LCAxNiwgMjEzLCA4MCwgODYsIDIsIDI1MCwgMTIxLCA4NiwgMiwgMjUwLCAxNDIsIAorICAgIDg2LCAxNywgMTk5LCA4MSwgODYsIDE3LCAxMDIsIDg2LCAxNywgMTA1LCA4NiwgMTcsIDE0NywgODYsIDE3LCAxNDksIDg2LCAKKyAgICAxNywgMTY0LCA4NiwgMTcsIDE4NywgODYsIDE3LCAyMTAsIDEzNSwgODYsIDE3LCAxOTIsIDg2LCAxNywgMjE5LCAxMTMsIAorICAgIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjA5LCAxMywgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMjEsIDUsIDg2LCAKKyAgICAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAxNjYsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjQ4LCAyMzUsIDg2LCAKKyAgICAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjQ4LCA4LCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgNDIsIDg2LCAxNiwgCisgICAgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAzNiwgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDM0LCA4NiwgMTYsIAorICAgIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgNDAsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAzOCwgOTIsIDI0OCwgCisgICAgMTYwLCA5MiwgMjM4LCAxOTUsIDkyLCAyNDYsIDcwLCA5MiwgMjM2LCAxODMsIDIwOCwgNzYsIDkyLCAyNDYsIDc5LCA5MiwgCisgICAgMjM2LCAyMjksIDI0MCwgMTgwLCA5MiwgMjA1LCAxODMsIDIwOSwgMjMsIDIzMywgMzMsIDkyLCAyMDksIDE4MCwgNSwgMjQ4LCAKKyAgICA4OSwgMjIyLCAxNDUsIDkyLCAyMjIsIDE3NywgMjQ2LCA3MCwgOTIsIDIyMiwgMTc3LCAyMzYsIDE4MywgMjA4LCA3NiwgOTIsIAorICAgIDIxOSwgMTA0LCA5MiwgMjM2LCAyMTEsIDU4LCAyMTEsIDE3NiwgMTAyLCA5MiwgMjM2LCAyMTEsIDU4LCAyMTEsIDE3NiwgCisgICAgMTA1LCA5MiwgMjM2LCAyMTEsIDU4LCAyMTEsIDE3NiwgMTQ3LCA5MiwgMjIsIDIxMCwgMTU0LCA5MiwgMTcsIDE5OSwgODEsIAorICAgIDkyLCAxNywgMTAyLCA5MiwgMTcsIDEwNSwgOTIsIDE3LCAxNDcsIDkyLCAxNywgMTQ5LCA5MiwgMTcsIDE2NCwgOTIsIDE3LCAKKyAgICAxODcsIDkyLCAxNywgMjEwLCAxMzUsIDkyLCAxNywgMTkyLCA5MiwgMTcsIDIxOSwgMTEzLCA5MiwgMSwgNjIsIDkyLCAxLCAKKyAgICA3MiwgOTIsIDEsIDcwLCA5MiwgMSwgNzQsIDkyLCAxLCA2NiwgOTIsIDEsIDIxNywgMTIxLCA5MiwgMSwgMjA0LCAzMSwgOTIsIAorICAgIDEsIDIzOCwgMjU1LCA5MiwgMSwgMTg4LCA5MiwgMSwgMjUxLCA3NiwgOTIsIDEsIDI0OSwgMTM2LCA5MiwgMSwgMTcyLCA5MiwgCisgICAgMSwgMjE0LCAxNTksIDkyLCAxLCAyMzYsIDg5LCA5MiwgMSwgMTc4LCA5MiwgMSwgMTk0LCA5MiwgMSwgMjEyLCA2NCwgOTIsIAorICAgIDEsIDIxMCwgMTE0LCA5MiwgMSwgMjA3LCAzNiwgOTIsIDEsIDI0MiwgNTgsIDkyLCAxLCAyNDcsIDM3LCA5MiwgMSwgMjI3LCAKKyAgICAyNDgsIDkyLCAxLCAxODMsIDkyLCAxLCAyMTMsIDI1MiwgOTIsIDEsIDIwMSwgMTE0LCA5MiwgMSwgMjM3LCAxOTUsIDkyLCAKKyAgICAxLCAxNjEsIDkyLCAxLCAyMjYsIDIwNywgOTIsIDEsIDIwNSwgMzIsIDkyLCAxLCAxOTksIDExNCwgOTIsIDEsIDIzNCwgCisgICAgMjMzLCA5MiwgMSwgMTk5LCA3LCA5MiwgMSwgMjI0LCAyMjMsIDkyLCAxLCAxOTksIDYzLCA5MiwgMSwgMjQ2LCAyMzYsIDkyLCAKKyAgICAxLCAyMDUsIDE4MywgMTY4LCAyMiwgNTQsIDkyLCAxLCAyMDUsIDE4MywgNzIsIDkyLCAxLCAyMDUsIDE4MywgNzAsIDkyLCAKKyAgICAxLCAyMDUsIDE4MywgNzQsIDkyLCAxLCAyMDUsIDE4MywgNjYsIDkyLCAxLCAyMDUsIDE4MywgMjE3LCAxMjEsIDkyLCAxLCAKKyAgICAyMDUsIDE4MywgMjA0LCAzMSwgOTIsIDEsIDIwNSwgMTgzLCAyNTEsIDc2LCA5MiwgMSwgMjA1LCAxODMsIDI0OSwgMTM2LCAKKyAgICA5MiwgMSwgMjA1LCAxODMsIDE3MiwgOTIsIDEsIDIwNSwgMTgzLCAyMTQsIDE1OSwgOTIsIDEsIDIwNSwgMTgzLCAyMzYsIAorICAgIDg5LCA5MiwgMSwgMjA1LCAxODMsIDE3OCwgOTIsIDEsIDIwNSwgMTgzLCAyMDcsIDM2LCA5MiwgMSwgMjA1LCAxODMsIDI0MiwgCisgICAgNTgsIDkyLCAxLCAyMDUsIDE4MywgMjQ3LCAzNywgOTIsIDEsIDIwNSwgMTgzLCAyMjcsIDI0OCwgOTIsIDEsIDIwNSwgMTgzLCAKKyAgICAyMDUsIDMyLCA5MiwgMSwgMjA1LCAxODMsIDE4MywgOTIsIDEsIDIwNSwgMTgzLCAyMDEsIDExNCwgOTIsIDEsIDIwNSwgCisgICAgMTgzLCAxNjEsIDkyLCAxLCAyMDUsIDE4MywgMjM2LCA4NiwgOTIsIDEsIDIwNSwgMTgzLCAyMzQsIDIzMywgOTIsIDEsIAorICAgIDIwNSwgMTgzLCAyMjcsIDIwNiwgOTIsIDEsIDIwNSwgMTgzLCAyMTksIDE0OCwgOTIsIDEsIDIwNSwgMTgzLCAyMzksIDkzLCAKKyAgICA5MiwgMSwgMjA5LCAxODAsIDcyLCA5MiwgMSwgMjA5LCAxODAsIDcwLCA5MiwgMSwgMjA5LCAxODAsIDIyOCwgMywgOTIsIDEsIAorICAgIDIwOSwgMTgwLCAyMDQsIDMxLCA5MiwgMSwgMjA5LCAxODAsIDY2LCA5MiwgMSwgMjA5LCAxODAsIDI1MSwgNzYsIDkyLCAxLCAKKyAgICAyMDksIDE4MCwgMTYxLCA5MiwgMSwgMjA5LCAxODAsIDIzNiwgODksIDkyLCAxLCAyMDksIDE4MCwgMTQ0LCA5MiwgMSwgCisgICAgMjA5LCAxODAsIDE3MiwgOTIsIDEsIDIwOSwgMTgwLCAyMTAsIDExNCwgOTIsIDEsIDIwOSwgMTgwLCAyMDcsIDM2LCA5MiwgCisgICAgMSwgMjA5LCAxODAsIDI0MiwgNTgsIDkyLCAxLCAyMDksIDE4MCwgMjI3LCAyNDgsIDkyLCAxLCAyMDksIDE4MCwgMjM3LCAKKyAgICAxOTUsIDkyLCAxLCAyMDksIDE4MCwgMjM2LCA4NiwgOTIsIDEsIDIwOSwgMTgwLCAyMzQsIDIzMywgOTIsIDEsIDIwOSwgCisgICAgMTgwLCAyMDUsIDMyLCA5MiwgMSwgMjA5LCAxODAsIDE5OSwgMTE0LCA5MiwgMSwgMjA5LCAxODAsIDIxMywgMjQ4LCA5MiwgCisgICAgMSwgMjA5LCAxODAsIDI0NywgMzcsIDkyLCAxLCAyMDksIDE4MCwgMTk5LCA3NywgOTIsIDEsIDIyMiwgMTc3LCA3MCwgOTIsIAorICAgIDEsIDIyMiwgMTc3LCAxNjEsIDkyLCAxLCAyMjIsIDE3NywgMjEzLCAyNTIsIDkyLCAxLCAyMjIsIDE3NywgMjM3LCAxOTUsIAorICAgIDkyLCAxLCAyMjIsIDE3NywgMTk5LCA3NywgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNTEsIDM0LCAxMDIsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjAyLCAyMDQsIDEwMiwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDIsIDE5LCA5MiwgCisgICAgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgNDEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjI4LCA1MCwgMjA0LCAKKyAgICA0MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDksIDkxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDEyNiwgCisgICAgMjQ5LCA5MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCA2MiwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCA3MCwgOTIsIAorICAgIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxNjEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjE5LCAyNTMsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ3LCAxOTAsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCAyNTMsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCAyNDEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQxLCAyMjAsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjE5LCAyMSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDcsIDM2LCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDI0MiwgNTgsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTcyLCA5MiwgMSwgMjUxLCAKKyAgICAxMzQsIDIzNiwgNjksIDIxNSwgMjQ1LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwOCwgMTc5LCA5MiwgMSwgMjUxLCAKKyAgICAxMzQsIDIzNiwgNjksIDE5OSwgNzcsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTk5LCAxMTQsIDkyLCAxLCAyNTEsIAorICAgIDEzNCwgMjM2LCA2OSwgMjUxLCAxODUsIDkyLCAxLCAyMDUsIDE4MywgMjUxLCAxMzQsIDIzNiwgNjksIDIwNywgMzYsIDkyLCAKKyAgICAxLCAyMDUsIDE4MywgMjUxLCAxMzQsIDIzNiwgNjksIDE5OSwgNzcsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgCisgICAgNjksIDIzNSwgMTk5LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMTksIDI1MywgOTIsIDEsIDIyMiwgCisgICAgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ3LCAxOTAsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIAorICAgIDIyNywgMjE1LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDQsIDI1MywgOTIsIDEsIDIyMiwgMTc3LCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjQxLCAyMDQsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDIwNywgMzYsIAorICAgIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0MSwgMTAwLCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAKKyAgICAyMzYsIDY5LCAyMDgsIDE3OSwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQyLCAxNjcsIDkyLCAxLCAKKyAgICAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDE5OSwgNzcsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIAorICAgIDE5OSwgMTE0LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE2NywgNjYsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgCisgICAgMTY3LCAxODMsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0OCwgMjAwLCA5MiwgMSwgMjUxLCAxMzQsIAorICAgIDIzNiwgNjksIDI0MiwgNDYsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDIyNCwgMjIzLCAyMCwgMjEsIAorICAgIDIxNiwgMjMwLCAyMCwgMjEsIDI1MCwgMTEyLCAyMCwgMjEsIDI1MiwgOTMsIDIwLCAyMSwgMjAxLCA2NywgMjAsIDIxLCAKKyAgICAyMTUsIDQ4LCAyMCwgMjEsIDIxNiwgODIsIDIwLCAyMSwgMjE0LCAxNzYsIDIwLCAyMSwgMjA2LCAyMTAsIDIwLCAyMSwgCisgICAgMjI3LCAxNSwgMjAsIDIxLCAyMjUsIDIyNiwgMjAsIDIxLCAyMjIsIDExOSwgMjAsIDIxLCAyMTgsIDE5OCwgMjAsIDIxLCAKKyAgICAyMjAsIDEwOSwgMjAsIDIxLCAyMjUsIDUwLCAyMCwgMjEsIDIwOCwgMjQ4LCAyMCwgMjEsIDIxMSwgMjM0LCAyMCwgMjEsIAorICAgIDIwOSwgMjI5LCAyMCwgMjEsIDIxMCwgNjksIDIwLCAyMSwgMjA5LCAxOTIsIDIwLCAyMSwgMTk5LCAyMjAsIDIwLCAyMSwgCisgICAgMjAwLCA1NywgMjAsIDIxLCAyMTMsIDE5NywgMjAsIDIxLCAyMTgsIDY2LCAyMCwgMjEsIDIxNywgMTAwLCAyMTgsIDY2LCAKKyAgICAyMCwgMjEsIDIxOCwgNjUsIDIwLCAyMSwgMjE3LCAxMDAsIDIxOCwgNjUsIDIwLCAyMSwgMjE4LCA2NCwgMjAsIDIxLCAyMTcsIAorICAgIDEwMCwgMjE4LCA2NCwgMjAsIDIxLCAyMTgsIDYzLCAyMCwgMjEsIDIxNywgMTAwLCAyMTgsIDYzLCAyMCwgMjEsIDIxMiwgCisgICAgMTM2LCAyMCwgMjEsIDIxMiwgMTM1LCAyMCwgMjEsIDIxMiwgMTM0LCAyMCwgMjEsIDIxMiwgMTMzLCAyMCwgMjEsIDIxMiwgCisgICAgMTMyLCAyMCwgMjEsIDIxMiwgMTQwLCAyMCwgMjEsIDIxNywgMTAwLCAyMTYsIDIyNiwgMjAsIDIxLCAyMTcsIDEwMCwgMjA3LCAKKyAgICA4MywgMjAsIDIxLCAyMTcsIDEwMCwgMjI3LCAxMTgsIDIwLCAyMSwgMjE3LCAxMDAsIDI0NywgMjIzLCAyMCwgMjEsIDIxNywgCisgICAgMTAwLCAyMjMsIDI0MywgMjAsIDIxLCAyMTcsIDEwMCwgMjIwLCAyMTQsIDIwLCAyMSwgMjE3LCAxMDAsIDIxMiwgMTIyLCAKKyAgICAyMCwgMjEsIDIxNywgMTAwLCAyMTAsIDExNiwgMjAsIDIxLCAyMzksIDEyLCAyMDEsIDE0NywgMjAsIDIxLCAyMDEsIDQ1LCAKKyAgICAyMDEsIDE0NywgMjAsIDIxLCA0NywgNCwgMjEzLCAyNiwgMjAsIDIxLCA0NywgMjEzLCAyMjAsIDI0MCwgMTgyLCAyMCwgMjEsIAorICAgIDIxNCwgMzIsIDIxMiwgMTM3LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNzgsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAxNzUsIAorICAgIDIwLCAyMSwgMjA2LCAyNCwgMjAsIDIxLCAyMDYsIDI2LCAyMCwgMjEsIDIwNCwgMjMzLCAyMCwgMjEsIDIwNCwgMjM1LCAyMCwgCisgICAgMjEsIDIwNCwgMjQwLCAyMCwgMjEsIDIwNSwgMTkzLCAyMCwgMjEsIDIwNSwgMTk1LCAyMCwgMjEsIDIxMSwgMjMyLCAyMDksIAorICAgIDE5NywgMjAsIDIxLCAyMTEsIDIzMiwgMjEwLCAyLCAyMCwgMjEsIDIxMSwgMjMyLCAyMzMsIDE4OCwgMjAsIDIxLCA4OSwgCisgICAgMjM1LCA1LCAyMCwgMjEsIDg5LCAyNDEsIDEzNCwgMjM2LCA3LCAyMCwgMjEsIDg5LCAyMzYsIDg2LCAyMCwgMjEsIDg5LCAKKyAgICAyMzUsIDEwLCAyMCwgMjEsIDIxMSwgMjMyLCAyMjcsIDEyOCwgMjAsIDIxLCA4OSwgMjI3LCAxMjYsIDIwLCAyMSwgMjQ4LCAKKyAgICAyNTUsIDI0MSwgMTM0LCAxNTYsIDIwLCAyMSwgMjQ4LCAyNTUsIDI0MSwgMTM0LCAxNDYsIDIwLCAyMSwgODksIDI0MSwgCisgICAgMTI5LCAyMTIsIDEyMiwgMjI0LCAxODYsIDIwMiwgMTcyLCAyMjQsIDIzNiwgMjI0LCAxODYsIDEsIDE2MSwgMjI0LCAxODYsIAorICAgIDEsIDIyNiwgMjA3LCAyMjQsIDE4NiwgMSwgMjM2LCA4OSwgMjI0LCAxODYsIDEsIDIzNSwgMTk5LCAyMjQsIDE4NiwgMSwgCisgICAgMjE5LCAyNTMsIDIyNCwgMTg2LCAxLCAyNDcsIDE5MCwgMjI0LCAxODYsIDEsIDI0NywgMzcsIDIyNCwgMTg2LCAxLCAyMjcsIAorICAgIDI0OCwgMjI0LCAxODYsIDEsIDIyNywgMjE1LCAyMjQsIDE4NiwgMSwgMjAwLCA3NywgMjI0LCAxODYsIDEsIDIwNywgMzYsIAorICAgIDIyNCwgMTg2LCAxLCAyMDYsIDEyMiwgMjI0LCAxODYsIDEsIDI0MiwgNTgsIDIyNCwgMTg2LCAxLCAyNDEsIDEwMCwgMjI0LCAKKyAgICAxODYsIDEsIDE4OCwgMjI0LCAxODYsIDEsIDE3MiwgMjI0LCAxODYsIDEsIDIxNSwgMjQ1LCAyMjQsIDE4NiwgMSwgMjQ5LCAKKyAgICAxMzYsIDIyNCwgMTg2LCAxLCAyNDgsIDIwMCwgMjI0LCAxODYsIDEsIDE3OCwgMjI0LCAxODYsIDEsIDE4MywgMjI0LCAxODYsIAorICAgIDEsIDIxMywgMjUyLCAyMjQsIDE4NiwgMSwgMTk0LCAyMjQsIDE4NiwgMSwgMjAxLCAxMTQsIDIyNCwgMTg2LCAxLCAyMTAsIAorICAgIDExNCwgMjI0LCAxODYsIDEsIDIwOCwgMTc5LCAyMjQsIDE4NiwgMSwgMjEyLCA2NCwgMjI0LCAxODYsIDEsIDE0NCwgMjI0LCAKKyAgICAxODYsIDEsIDIzNSwgMSwgMjI0LCAxODYsIDEsIDIwNSwgMTMyLCAyMjQsIDE4NiwgMjIsIDIsIDYyLCAyMjQsIDE4NiwgMjIsIAorICAgIDIsIDcwLCAyMjQsIDE4NiwgMjIsIDIsIDY2LCAyMjQsIDE4NiwgMjIsIDIsIDIzOCwgMjU1LCAyMjQsIDE4NiwgMjIsIDIsIAorICAgIDI1MSwgMTc2LCAyMjQsIDE4NiwgMjIsIDIsIDIxNywgNjMsIDIyNCwgMTg2LCAyMiwgMiwgMjUwLCAxMzksIDIyNCwgMTg2LCAKKyAgICAyMiwgMiwgNzIsIDIyNCwgMTg2LCAyMiwgMiwgNzQsIDIyNCwgMTg2LCAyMDgsIDEyLCAxLCAxODMsIDIyNCwgMTg2LCAyMDgsIAorICAgIDEyLCAxLCAyMTMsIDI1MiwgMjI0LCAxODYsIDIwOCwgMTIsIDEsIDIwMSwgMTE0LCAyMjQsIDE4NiwgNCwgMSwgMTYxLCAKKyAgICAyMjQsIDE4NiwgNCwgMSwgMjE5LCAyNTMsIDIyNCwgMTg2LCA0LCAxLCAyNTEsIDMzLCAyMjQsIDE4NiwgNCwgMSwgMjA3LCAKKyAgICAzNiwgMjI0LCAxODYsIDQsIDEsIDE4OCwgMjI0LCAxODYsIDQsIDEsIDE3MiwgMjI0LCAxODYsIDQsIDEsIDE3OCwgMjI0LCAKKyAgICAxODYsIDQsIDEsIDIxMywgMjUyLCAyMjQsIDE4NiwgNCwgMSwgMTk0LCAyMjQsIDE4NiwgMiwgMjIxLCAyNiwgMjI0LCAxODYsIAorICAgIDIsIDIyNiwgMjQ5LCAyMjQsIDE4NiwgMiwgMjEyLCA2MiwgMjI0LCAxODYsIDIsIDIyNCwgNzgsIDIyNCwgMTg2LCAyMzgsIAorICAgIDQzLCA4MSwgMjI0LCAxODYsIDIxNCwgNzksIDgxLCAyMjQsIDE4NiwgMTcsIDE5OSwgODEsIDIyNCwgMTg2LCAxNywgMTAyLCAKKyAgICAyMjQsIDE4NiwgMTcsIDEwNSwgMjI0LCAxODYsIDE3LCAxNDcsIDIyNCwgMTg2LCAxNywgMTQ5LCAyMjQsIDE4NiwgMTcsIAorICAgIDE2NCwgMjI0LCAxODYsIDE3LCAxODcsIDIyNCwgMTg2LCAxNywgMjEwLCAxMzUsIDIyNCwgMTg2LCAxNywgMTkyLCAyMjQsIAorICAgIDE4NiwgMTcsIDIxOSwgMTEzLCA0NiwgMjI1LCA0MSwgMSwgMTYxLCA0NiwgMjI1LCA0MSwgMSwgMjAwLCAxODEsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAyMTksIDI1MywgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMzIsIDQ2LCAyMjUsIDQxLCAxLCAyMTIsIDY0LCAKKyAgICA0NiwgMjI1LCA0MSwgMSwgMTgzLCA0NiwgMjI1LCA0MSwgMSwgMjA3LCAzNiwgNDYsIDIyNSwgNDEsIDEsIDIwNiwgMTIyLCAKKyAgICA0NiwgMjI1LCA0MSwgMSwgMTk0LCA0NiwgMjI1LCA0MSwgMSwgMTcyLCA0NiwgMjI1LCA0MSwgMSwgMjE1LCAyNDUsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAxNzgsIDQ2LCAyMjUsIDQxLCAxLCAyMzcsIDE5NSwgNDYsIDIyNSwgNDEsIDEsIDIwMywgOTAsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAxNDQsIDQ2LCAyMjUsIDQxLCAxLCAyMTQsIDE1OSwgNDYsIDIyNSwgNDEsIDEsIDIyNiwgMjA3LCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMjA1LCAyMiwgNDYsIDIyNSwgNDEsIDEsIDE4OCwgNDYsIDIyNSwgNDEsIDEsIDYyLCA0NiwgMjI1LCAKKyAgICA0MSwgMSwgNzAsIDQ2LCAyMjUsIDQxLCAxLCAyMzgsIDI1NSwgNDYsIDIyNSwgNDEsIDEsIDIzOCwgMjQxLCA0NiwgMjI1LCAKKyAgICA0MSwgMSwgNjYsIDQ2LCAyMjUsIDQxLCAxLCAyMTcsIDYzLCA0NiwgMjI1LCA0MSwgMSwgNzQsIDQ2LCAyMjUsIDQxLCAxLCAKKyAgICAyMDQsIDMxLCA0NiwgMjI1LCA0MSwgMSwgNzIsIDQ2LCAyMjUsIDQxLCAxLCAyNTAsIDEzNywgNDYsIDIyNSwgNDEsIDEsIAorICAgIDI1MSwgMTc2LCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNzIsIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDE3MSwgNDYsIDIyNSwgCisgICAgNDEsIDEsIDIwNSwgMTcwLCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNjksIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDE2OCwgMjIwLCAKKyAgICA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMTQsIDE1OSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTQsIDE1OSwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxNjEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjAwLCAxODEsIAorICAgIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjE5LCAyNTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMTYxLCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwMCwgMTgxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIxOSwgCisgICAgMjUzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwNSwgMzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgCisgICAgMjEyLCA2NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxODMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgCisgICAgMjA1LCAzMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTIsIDY0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDE4MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMDcsIDM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDIwNiwgMTIyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE4OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAyMDcsIDM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwNiwgMTIyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDE4OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxNzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyMiwgMjE1LCAyNDUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTc4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDE3MiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTUsIDI0NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAxNzgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjM3LCAxOTUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyMiwgMjAzLCA5MCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxOTQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMjM3LCAxOTUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjAzLCA5MCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMSwgMTI4LCAxOTQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTQ0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDI0MiwgNTgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjQ5LCAxMzYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMTQ0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDI0MiwgNTgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMjQ5LCAxMzYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjI1LCAyMzEsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDEsIDEyMiwgMjAwLCAxNDgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjI1LCAyMzEsIDIyMCwgOCwgNDYsIAorICAgIDIyNCwgMzYsIDEsIDEyOCwgMjAwLCAxNDgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjA4LCAyMywgMjIwLCA4LCAKKyAgICA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDgsIDIzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjIsIDIwOSwgMjM4LCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjUyLCAxMzgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMjgsIAorICAgIDE1MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDY2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjAzLCAKKyAgICAxODIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCA3MiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDI1MSwgCisgICAgMjIxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgNzQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMTcsIAorICAgIDE0NiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIwNCwgMzEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAKKyAgICAyNTAsIDExMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDI1MiwgOTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAKKyAgICAyLCAyMDMsIDE3NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIxNiwgMjMwLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAyMiwgMiwgMjE3LCAxNDMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMDQsIDI3LCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAyMiwgMiwgMjI4LCAzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjAzLCAxNjgsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDEsIDQ3LCAyMTksIDI1NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDIyMCwgMjE0LCAyMjAsIDgsIDQ2LCAKKyAgICAyMjQsIDM2LCAxLCA0NywgMjIzLCAyNDMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyMjcsIDExOCwgMjIwLCA4LCAKKyAgICA0NiwgMjI0LCAzNiwgMSwgNDcsIDI0MiwgMTUzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjUwLCAxMDMsIDIyMCwgCisgICAgOCwgNDYsIDIyNCwgMzYsIDE1MCwgMjIyLCAxNDksIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE1MCwgMjIyLCAxNDgsIDIyMCwgCisgICAgOCwgNDYsIDIyNCwgMzYsIDE3LCAxOTksIDgxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTAyLCAyMjAsIDgsIDQ2LCAKKyAgICAyMjQsIDM2LCAxNywgMTA1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTQ3LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgCisgICAgMTQ5LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTY0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTg3LCAyMjAsIDgsIAorICAgIDQ2LCAyMjQsIDM2LCAxNywgMjEwLCAxMzUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxOTIsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDE3LCAyMTksIDExMywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTA3LCAxNywgMTAyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAyLCAyMjUsIDE2MCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMiwgMjI1LCAxNTksIDg2LCAxNiwgMjE2LCA5MCwgODYsIDE2LCAKKyAgICAyMjEsIDYsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCAxNjcsIDIyNiwgODQsIDg2LCAxNiwgMjQ4LCAyMzYsIDIyNiwgODQsIAorICAgIDg2LCAxNiwgMjQ4LCA5LCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgNDMsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCAzNywgMjI2LCAKKyAgICA4NCwgODYsIDE2LCAyMTUsIDM1LCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgNDEsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCAzOSwgCisgICAgMjI2LCA4NCwgODYsIDE2LCAyNDIsIDUsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAxLCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgCisgICAgMCwgMjI2LCA4NCwgODYsIDE2LCAyNDIsIDMsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAyLCAyMjYsIDg0LCA4NiwgMTYsIAorICAgIDI0MSwgMjU1LCAyMjYsIDg0LCA4NiwgMTYsIDIwNCwgMTc4LCA4NiwgMTYsIDIyMSwgNiwgMjEyLCAyNTAsIDg2LCAxNiwgCisgICAgMjE1LCAxNjcsIDIxMiwgMjUwLCA4NiwgMTYsIDI0OCwgMjM2LCAyMTIsIDI1MCwgODYsIDE2LCAyNDgsIDksIDIxMiwgMjUwLCAKKyAgICA4NiwgMTYsIDIxNSwgNDMsIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgMzcsIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgMzUsIAorICAgIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgNDEsIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgMzksIDIxMiwgMjUwLCA4NiwgMTYsIAorICAgIDI0MiwgNSwgMjEyLCAyNTAsIDg2LCAxNiwgMjQyLCAxLCAyMTIsIDI1MCwgODYsIDE2LCAyNDIsIDAsIDIxMiwgMjUwLCA4NiwgCisgICAgMTYsIDI0MiwgMywgMjEyLCAyNTAsIDg2LCAxNiwgMjQyLCAyLCAyMTIsIDI1MCwgODYsIDE2LCAyNDEsIDI1NSwgMjEyLCAKKyAgICAyNTAsIDI0OCwgMjksIDEsIDE2MSwgMjQ4LCAyOSwgMSwgMjM2LCA4OSwgMjQ4LCAyOSwgMSwgMjE5LCAyNTMsIDI0OCwgMjksIAorICAgIDEsIDIxOSwgMTk2LCAyNDgsIDI5LCAxLCAxNzIsIDI0OCwgMjksIDEsIDI0OSwgMTM2LCAyNDgsIDI5LCAxLCAxNzgsIDI0OCwgCisgICAgMjksIDEsIDIyMSwgNDUsIDI0OCwgMjksIDEsIDIwNywgMzYsIDI0OCwgMjksIDEsIDI0MiwgNTgsIDI0OCwgMjksIDEsIAorICAgIDE4OCwgMjQ4LCAyOSwgMSwgMjE4LCAxOTYsIDI0OCwgMjksIDEsIDI0NywgMTkwLCAyNDgsIDI5LCAxLCAyMjcsIDI0OCwgCisgICAgMjQ4LCAyOSwgMSwgMjE4LCA2MCwgMjQ4LCAyOSwgMSwgMjE4LCA1MiwgMjQ4LCAyOSwgMSwgMTgzLCAyNDgsIDI5LCAxLCAKKyAgICAyMTMsIDI1MiwgMjQ4LCAyOSwgMSwgMTk0LCAyNDgsIDI5LCAxLCAyMDMsIDkwLCAyNDgsIDI5LCAxLCAyMTIsIDY0LCAyNDgsIAorICAgIDI5LCAxLCA2MiwgMjQ4LCAyOSwgMSwgMTQ0LCAyNDgsIDI5LCAyMiwgMiwgNzAsIDI0OCwgMjksIDIyLCAyLCA2NiwgMjQ4LCAKKyAgICAyOSwgMjIsIDIsIDcyLCAyNDgsIDI5LCAyMiwgMiwgNzQsIDI0OCwgMjksIDIyLCAyLCAyNTEsIDIyMSwgMjQ4LCAyOSwgCisgICAgMjE2LCAxNzgsIDI0OCwgMjksIDIzOCwgMTcxLCA3NiwgMjExLCAxOTIsIDQ2LCAxMDcsIDEsIDEyMiwgMTYxLCA0NiwgMTA3LCAKKyAgICAxLCAxMjIsIDIyNiwgMjA3LCA0NiwgMTA3LCAxLCAxMjIsIDIyNSwgMjE1LCA0NiwgMTA3LCAxLCAxMjgsIDE2MSwgNDYsIAorICAgIDEwNywgMSwgMTI4LCAyMjUsIDIxNSwgNDYsIDEwNywgMSwgMTI4LCAyMjYsIDIwNywgNDYsIDEwNywgMSwgMjE5LCAyNTMsIAorICAgIDQ2LCAxMDcsIDEsIDEyMiwgMjQ3LCAxOTAsIDQ2LCAxMDcsIDEsIDEyMiwgMjQ3LCAzNywgNDYsIDEwNywgMSwgMTI4LCAKKyAgICAyNDcsIDE5MCwgNDYsIDEwNywgMSwgMTI4LCAyMTIsIDY0LCA0NiwgMTA3LCAxLCAxMjgsIDI0NywgMzcsIDQ2LCAxMDcsIDEsIAorICAgIDIxOCwgNjAsIDQ2LCAxMDcsIDEsIDIxMywgMjAzLCA0NiwgMTA3LCAxLCAxMjIsIDIxMywgMjAxLCA0NiwgMTA3LCAxLCAKKyAgICAyNDIsIDU4LCA0NiwgMTA3LCAxLCAxMjgsIDIxMywgMjAxLCA0NiwgMTA3LCAxLCAyMTMsIDIxMiwgNDYsIDEwNywgMSwgCisgICAgMTIyLCAyMDcsIDM2LCA0NiwgMTA3LCAxLCAxMjIsIDIwNiwgMTIyLCA0NiwgMTA3LCAxLCAxMjgsIDIwNywgMzYsIDQ2LCAKKyAgICAxMDcsIDEsIDEyOCwgMjA2LCAxMjIsIDQ2LCAxMDcsIDEsIDE4OCwgNDYsIDEwNywgMSwgMjQ5LCAxMzYsIDQ2LCAxMDcsIDEsIAorICAgIDEyMiwgMTcyLCA0NiwgMTA3LCAxLCAxMjIsIDIxNSwgMjQ1LCA0NiwgMTA3LCAxLCAxMjIsIDIzNywgMTk1LCA0NiwgMTA3LCAKKyAgICAxLCAxMjgsIDE3MiwgNDYsIDEwNywgMSwgMTI4LCAyMzcsIDE5NSwgNDYsIDEwNywgMSwgMTI4LCAyMTUsIDI0NSwgNDYsIAorICAgIDEwNywgMSwgMTc4LCA0NiwgMTA3LCAxLCAxMjgsIDE4MywgNDYsIDEwNywgMSwgMTIyLCAxODMsIDQ2LCAxMDcsIDEsIDIxMywgCisgICAgMjUyLCA0NiwgMTA3LCAxLCAyMTIsIDE3MCwgNDYsIDEwNywgMSwgMTk0LCA0NiwgMTA3LCAxLCAyMjQsIDM1LCA0NiwgMTA3LCAKKyAgICAxLCAyMDEsIDExNCwgNDYsIDEwNywgMSwgMTIyLCAyMTAsIDExNCwgNDYsIDEwNywgMSwgMTIyLCAyMDgsIDE3OSwgNDYsIAorICAgIDEwNywgMSwgMTIyLCAyMTIsIDY0LCA0NiwgMTA3LCAxLCAxMjIsIDE0NCwgNDYsIDEwNywgMSwgMjI0LCAxMzgsIDQ2LCAKKyAgICAxMDcsIDEsIDYyLCA0NiwgMTA3LCAxLCAxMjgsIDE0NCwgNDYsIDEwNywgMSwgNzAsIDQ2LCAxMDcsIDEsIDIyOCwgMTUxLCAKKyAgICA0NiwgMTA3LCAxLCA2NiwgNDYsIDEwNywgMSwgMjAzLCAxODIsIDQ2LCAxMDcsIDEsIDIzOCwgMjU1LCA0NiwgMTA3LCAxLCAKKyAgICAyMTcsIDYzLCA0NiwgMTA3LCAxLCAyMjUsIDE2MCwgNDYsIDEwNywgMSwgMjM1LCA2OSwgMjEyLCA2NCwgNDYsIDEwNywgCisgICAgMTExLCAyLCAxNzksIDIxMywgMjUyLCA0NiwgMTA3LCAxMTEsIDIsIDE3OSwgMTk0LCA0NiwgMTA3LCAxMTEsIDIsIDIyNSwgCisgICAgMTc2LCAyMDYsIDI0MiwgMjI1LCAxNDksIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAyMjcsIDY1LCAyMjUsIDE0OSwgNDYsIAorICAgIDEwNywgMTExLCAyLCA0NywgMjE5LCAyNTMsIDQ2LCAxMDcsIDExMSwgMiwgMTI4LCAxNzIsIDQ2LCAxMDcsIDExMSwgMiwgCisgICAgMTIyLCAyMTMsIDIwMiwgMjE3LCAzNCwgMTI4LCAxNzIsIDQ2LCAxMDcsIDExMSwgMiwgMTc4LCA0NiwgMTA3LCAxMTEsIDIsIAorICAgIDI0OSwgMTM2LCA0NiwgMTA3LCAxMTEsIDIsIDIxMiwgNjQsIDQ2LCAxMDcsIDIsIDIxMiwgMzgsIDQ2LCAxMDcsIDIyLCAyLCAKKyAgICA2MiwgNDYsIDEwNywgMjIsIDIsIDIyMiwgMTk5LCAyMTEsIDI1MSwgNDYsIDEwNywgMjIsIDIsIDI1MiwgMTM4LCA0NiwgCisgICAgMTA3LCAyMiwgMiwgMjA2LCAyNDgsIDI1MiwgMTM4LCA0NiwgMTA3LCAyMiwgMiwgNzAsIDQ2LCAxMDcsIDIyLCAyLCAyMjgsIAorICAgIDE1MSwgNDYsIDEwNywgMjIsIDIsIDIwNCwgMzEsIDQ2LCAxMDcsIDIyLCAyLCAyMDMsIDE4MSwgNDYsIDEwNywgMjIsIDIsIAorICAgIDY2LCA0NiwgMTA3LCAyMiwgMiwgMjAzLCAxODIsIDQ2LCAxMDcsIDIyLCAyLCA3NCwgNDYsIDEwNywgMjIsIDIsIDIxNywgCisgICAgMTQ3LCA1NywgNDYsIDEwNywgMjIsIDIsIDIxNiwgMjMwLCA0NiwgMTA3LCAyMiwgMiwgNzIsIDQ2LCAxMDcsIDIyLCAyLCAKKyAgICAyNTEsIDIyMSwgNDYsIDEwNywgMjIsIDIsIDIxNywgNjMsIDQ2LCAxMDcsIDIyLCAyLCAyNTEsIDE3NiwgNDYsIDEwNywgMjIsIAorICAgIDIsIDEwNywgMjUxLCAxNzYsIDQ2LCAxMDcsIDIyLCAyLCAyMTcsIDE0NywgNTYsIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAKKyAgICAyMjcsIDY0LCA0NiwgMTA3LCAyLCAyMDUsIDE3MywgNDYsIDEwNywgMiwgMjA1LCAxNzIsIDQ2LCAxMDcsIDIsIDIyNiwgCisgICAgMTY4LCAyMDUsIDE3MSwgNDYsIDEwNywgMiwgMjI2LCAxNjgsIDIwNSwgMTcwLCA0NiwgMTA3LCAyLCAyMjYsIDE2OCwgMjA1LCAKKyAgICAxNjksIDQ2LCAxMDcsIDIsIDIxMywgMjUzLCAyMzQsIDIzMiwgNDYsIDEwNywgMiwgMjIyLCAxOTksIDIxMiwgMjMsIDQ2LCAKKyAgICAxMDcsIDIsIDIyNiwgMTY3LCAyMjcsIDQ2LCA0NiwgMTA3LCAzOCwgMjQyLCAyMTcsIDI0MCwgMTgyLCA0NiwgMTA3LCAyMzMsIAorICAgIDE3OSwgMTcsIDE5OSwgODEsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTAyLCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDEwNSwgCisgICAgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxNDcsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTQ5LCA0NiwgMTA3LCAyMzMsIAorICAgIDE3OSwgMTcsIDE2NCwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxODcsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMjEwLCAKKyAgICAxMzUsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTkyLCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDIxOSwgMTEzLCA0NiwgCisgICAgMTA3LCAxMDcsIDE3LCAxOTksIDgxLCA0NiwgMTA3LCAxMDcsIDE3LCAxMDIsIDQ2LCAxMDcsIDEwNywgMTcsIDEwNSwgNDYsIAorICAgIDEwNywgMTA3LCAxNywgMTQ3LCA0NiwgMTA3LCAxMDcsIDE3LCAxNDksIDQ2LCAxMDcsIDEwNywgMTcsIDE2NCwgNDYsIDEwNywgCisgICAgMTA3LCAxNywgMTg3LCA0NiwgMTA3LCAxMDcsIDE3LCAyMTAsIDEzNSwgNDYsIDEwNywgMTA3LCAxNywgMTkyLCA0NiwgMTA3LCAKKyAgICAxMDcsIDE3LCAyMTksIDExMywgNDYsIDEwNywgMiwgMjAxLCAzMCwgNDYsIDEwNywgMiwgMjAxLCAyOSwgNDYsIDEwNywgMiwgCisgICAgMjExLCAyMzgsIDQ2LCAxMDcsIDIsIDIyNiwgMjM4LCA0NiwgMTA3LCAyLCAyMzMsIDEwNywgNDYsIDEwNywgMiwgMjQwLCAKKyAgICAxOTYsIDQ2LCAxMDcsIDIsIDIxMywgMTA1LCAyMTIsIDIyOCwgMjEzLCAyMTIsIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAyMDAsIAorICAgIDc4LCA0NiwgMTA3LCAyLCAyMjcsIDk5LCA0NiwgMTA3LCAyLCAyMjcsIDk4LCA0NiwgMTA3LCAyLCAyMTEsIDI0NiwgNDYsIAorICAgIDEwNywgMiwgMjExLCAyNDUsIDQ2LCAxMDcsIDIsIDIzNCwgMTcyLCA0NiwgMTA3LCAyLCAyNDcsIDE4NywgMzgsIDIzOSwgCisgICAgMTcyLCAyNDYsIDE0NywgMjUxLCAyNTEsIDM4LCAyNDEsIDczLCAzOCwgMjI4LCA5NCwgMzgsIDE5MSwgNDgsIDM4LCAyMDUsIAorICAgIDgzLCAyNDAsIDE4MiwgMzgsIDIwMCwgMTk0LCA1NywgMzgsIDIwMSwgMjIsIDIyNCwgMTc3LCA1NywgMzgsIDE3NiwgMTM0LCAKKyAgICA1NywgMzgsIDUzLCAxNzYsIDEzNCwgNTcsIDM4LCAxNjIsIDI0NywgNTcsIDIwOCwgNDcsIDU3LCAzOCwgMjA4LCAzMywgCisgICAgMjQ3LCA1NywgMjA4LCA0NywgNTcsIDM4LCAyMTYsIDExNywgNTYsIDM4LCA1MywgMjE2LCAxMTcsIDU2LCAzOCwgMjE2LCAKKyAgICAxMTcsIDU3LCAzOCwgMjE2LCAxMTcsIDIxNiwgMjQyLCAxMzMsIDIsIDIwNCwgMTUsIDIxMywgODIsIDEzMywgMiwgMjA0LCAKKyAgICAxNSwgMjQ3LCAxNTEsIDEzMywgMiwgMjQ3LCA3MiwgMTMzLCAyLCAyMDcsIDIwNSwgMTMzLCAyLCAyNDgsIDE1NywgMTMzLCAKKyAgICAxLCAyNTEsIDE1NywgMTMzLCAxLCAyNTEsIDE1OCwgMjA2LCAxOTIsIDEzMywgMSwgMjI4LCAxNDcsIDEzMywgMSwgMjI4LCAKKyAgICAxNDgsIDIwNiwgMTkyLCAxMzMsIDEsIDIwNCwgMTgsIDEzMywgMSwgMjA0LCAxOSwgMjA2LCAxOTIsIDEzMywgMSwgMjEzLCAKKyAgICAyNTMsIDIxMywgMTM1LCAxMzMsIDEsIDIxMywgMjUzLCAyMTMsIDEzNiwgMjA2LCAxOTIsIDEzMywgMSwgMjI1LCAxNzYsIAorICAgIDIyNSwgMywgMTMzLCAxLCAyMjUsIDE3NiwgMjI1LCA0LCAyMDYsIDE5MiwgMTMzLCAxLCAyMzgsIDIxNCwgMTMzLCAxLCAKKyAgICAyNTEsIDE3NCwgMTMzLCAxLCAyMTcsIDk2LCAxMzMsIDEsIDIxNywgOTcsIDIwNiwgMTkyLCAxMzMsIDEsIDE2MSwgMTMzLCAKKyAgICAxLCAyMjcsIDEwOCwgMjIyLCAyMDIsIDEzMywgMSwgMjM2LCA4OSwgMTMzLCAxLCAyMzYsIDkwLCAyMzUsIDEwMiwgMTMzLCAKKyAgICAxLCAyMTksIDI1MywgMTMzLCAxLCAyNDcsIDE5MCwgMTMzLCAxLCAyNDcsIDE5MSwgMjI1LCAxNjMsIDEzMywgMSwgMjI3LCAKKyAgICAyNDgsIDEzMywgMSwgMjI3LCAyNDksIDIyNywgMjE5LCAxMzMsIDEsIDIxOCwgNjAsIDEzMywgMSwgMjA3LCAzNywgMjI1LCAKKyAgICA2MCwgMTMzLCAxLCAyMDcsIDM3LCAyMjEsIDEsIDIyMiwgMjAyLCAxMzMsIDEsIDI0MiwgNTksIDIyMSwgMSwgMjUxLCAxMTQsIAorICAgIDEzMywgMSwgMjQyLCA1OSwgMjIxLCAxLCAyMjIsIDIwMiwgMTMzLCAxLCAyMjAsIDE2MiwgMjEzLCAyMTUsIDEzMywgMSwgCisgICAgMjA3LCAzNiwgMTMzLCAxLCAyMDcsIDM3LCAyMDYsIDIxNCwgMTMzLCAxLCAyNDIsIDU4LCAxMzMsIDEsIDI0MiwgNTksIAorICAgIDIyMiwgMjIxLCAxMzMsIDEsIDE4OCwgMTMzLCAxLCAxNzIsIDEzMywgMSwgMjE2LCAyMTEsIDIyNywgNTgsIDEzMywgMSwgCisgICAgMjQ5LCAxMzYsIDEzMywgMSwgMjQ5LCAxMzcsIDIyNiwgMjUwLCAxMzMsIDEsIDE3OCwgMTMzLCAxLCAxODMsIDEzMywgMSwgCisgICAgMjEzLCAyNTIsIDEzMywgMSwgMTk0LCAxMzMsIDEsIDIwMSwgMTE0LCAxMzMsIDEsIDIxMiwgNjUsIDIxMiwgNDksIDEzMywgCisgICAgMSwgMjEyLCA2NSwgMjEyLCAyLCAxMzMsIDEsIDIxMiwgNjQsIDEzMywgMSwgMTQ0LCAxMzMsIDIsIDIxMywgMTI2LCAxMzMsIAorICAgIDIyLCAyLCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjA0LCAxNCwgMTMzLCAyMiwgMiwgMjA0LCAxNSwgMjExLCAyNTQsIDEzMywgCisgICAgMjIsIDIsIDIwNywgMjM4LCAxMzMsIDIyLCAyLCAyMDcsIDIzOSwgMjI4LCAxMzksIDEzMywgMjIsIDIsIDIxMywgMjUzLCAKKyAgICAyMTMsIDEzNSwgMTMzLCAyMiwgMiwgMjEzLCAyNTMsIDIxMywgMTM2LCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjI1LCAxNzYsIAorICAgIDIyNSwgMywgMTMzLCAyMiwgMiwgMjI1LCAxNzYsIDIyNSwgNCwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIwNiwgMjQ5LCAKKyAgICAxMzMsIDIyLCAyLCAyMDYsIDI1MCwgMjEzLCAxMzUsIDEzMywgMjIsIDIsIDIwNiwgMjUwLCAyMDYsIDE5MiwgMTMzLCAyMiwgCisgICAgMiwgMjA2LCAyNTAsIDIxMywgMTM2LCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjE2LCAzMCwgMTMzLCAyMiwgMiwgMjE2LCAKKyAgICAzMSwgMjA2LCAxOTIsIDEzMywgMjUxLCAyMzAsIDI1MSwgMjI5LCAxMzMsIDEsIDIyNywgODcsIDIxMSwgMjUzLCAxMzMsIDEsIAorICAgIDIyNiwgMTc0LCAyMTEsIDI1MywgMTMzLCAxLCAyMDQsIDEwOCwgMjExLCAyNTMsIDEzMywgMSwgMjM4LCAyNDksIDIxMSwgCisgICAgMjUzLCAxMzMsIDEsIDIwMywgNjAsIDIxMSwgMjUzLCAxMzMsIDEsIDE5OSwgMTA0LCAyMTEsIDI1MywgMTMzLCAxLCAyNTAsIAorICAgIDE1OCwgMjExLCAyNTMsIDEzMywgMTcsIDE5OSwgODEsIDEzMywgMTcsIDEwMiwgMTMzLCAxNywgMTA1LCAxMzMsIDE3LCAKKyAgICAxNDcsIDEzMywgMTcsIDE0OSwgMTMzLCAxNywgMTY0LCAxMzMsIDE3LCAxODcsIDEzMywgMTcsIDIxMCwgMTM1LCAxMzMsIAorICAgIDE3LCAxOTIsIDEzMywgMTcsIDIxOSwgMTEzLCAxMzMsIDIxNiwgMTQzLCAxMzMsIDIxNiwgMTcxLCAxMzMsIDIwMSwgMTQsIAorICAgIDEzMywgMjQ3LCAxMjcsIDIxNiwgMTY0LCAxMzMsIDI0NywgMTI3LCAyMDksIDE1OCwgMTMzLCAyNDcsIDEyNywgMjE2LCAKKyAgICAxMTQsIDEzMywgMjE2LCAxNzAsIDEzMywgMzIsIDE2LCAyNDAsIDE4OCwgMTMzLCAzMiwgMTYsIDI0MSwgMTMzLCAxMzMsIAorICAgIDMyLCAxNiwgMjM5LCAxMjEsIDEzMywgMzIsIDE2LCAyNDIsIDgsIDEzMywgMzIsIDE2LCAyNDIsIDksIDIwNywgMjA1LCAKKyAgICAxMzMsIDMyLCAxNiwgMjQxLCAxOCwgMTMzLCAzMiwgMTYsIDI0MiwgNTAsIDEzMywgMzIsIDE2LCAyNDEsIDEwOSwgMTMzLCAKKyAgICAzMiwgMTYsIDI0MiwgMzIsIDEzMywgMzIsIDE2LCAyNDIsIDksIDIzNiwgOSwgMTMzLCAzMiwgMTYsIDM4LCAyMDYsIDE4NSwgCisgICAgMTMzLCAzMiwgMTYsIDM4LCAyMzgsIDE2OSwgMTMzLCAzMiwgMTYsIDM4LCAyMjYsIDI0NSwgMTMzLCAzMiwgMTYsIDM4LCAKKyAgICAyMjYsIDI0NywgMTMzLCAzMiwgMTYsIDM4LCAyMjcsIDIyMywgMTMzLCAzMiwgMTYsIDM4LCAyMjYsIDI0NiwgMywgMjI3LCAKKyAgICAyMjMsIDEzMywgMzIsIDE2LCAzOCwgMjI2LCAyNDgsIDMsIDIyNywgMjIzLCAxMzMsIDMyLCAxNiwgMzgsIDI0OCwgMjIxLCAKKyAgICAxMzMsIDMyLCAxNiwgMzgsIDIzNSwgMTA2LCAxMzMsIDMyLCAxNiwgMjEzLCA0NCwgMTc2LCAyMzksIDEzMSwgMTMzLCAzMiwgCisgICAgMTYsIDIxMywgNDQsIDE3NiwgMjQyLCA0OCwgMTMzLCAzMiwgMTYsIDIxMywgNDQsIDI0NiwgMTEwLCAyMDQsIDIwNywgMTMzLCAKKyAgICAzMiwgMTYsIDIxMywgNDQsIDI0NiwgMTEwLCAyMDcsIDIsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAxNzYsIDIxNiwgMTU3LCAKKyAgICAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMTc2LCAyMTQsIDIxMCwgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDI0NiwgMTEwLCAyMTUsIAorICAgIDEzMSwgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDI0NiwgMTEwLCAyMTUsIDExNywgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDE3NiwgCisgICAgMjE1LCAxNTYsIDIwNywgMjI3LCAyLCAyMTYsIDE0MCwgMjA3LCAyMjcsIDIsIDIxNiwgMTUzLCAyMDcsIDIyNywgMiwgMjE2LCAKKyAgICAxNDksIDIwNywgMjI3LCAxLCA2MiwgMjA3LCAyMjcsIDEsIDcwLCAyMDcsIDIyNywgMSwgNjYsIDIwNywgMjI3LCAxLCAyNTEsIAorICAgIDIyMSwgMjA3LCAyMjcsIDEsIDc0LCAyMDcsIDIyNywgMSwgNzIsIDIwNywgMjI3LCAxLCAyMzgsIDY5LCAyMDcsIDIyNywgMSwgCisgICAgMTYxLCAyMDcsIDIyNywgMSwgMjE0LCAxNTksIDIwNywgMjI3LCAxLCAyMzYsIDg5LCAyMDcsIDIyNywgMSwgMjE5LCAyNTMsIAorICAgIDIwNywgMjI3LCAxLCAyNDcsIDE5MCwgMjA3LCAyMjcsIDEsIDIyNywgMjQ4LCAyMDcsIDIyNywgMSwgMTk5LCAxMTQsIDIwNywgCisgICAgMjI3LCAxLCAyMTgsIDYwLCAyMDcsIDIyNywgMSwgMjA3LCAzNiwgMjA3LCAyMjcsIDEsIDI0MiwgNTgsIDIwNywgMjI3LCAxLCAKKyAgICAxODgsIDIwNywgMjI3LCAxLCAxNzIsIDIwNywgMjI3LCAxLCAyMzcsIDE5NSwgMjA3LCAyMjcsIDEsIDIwMywgOTAsIDIwNywgCisgICAgMjI3LCAxLCAyNDksIDEzNiwgMjA3LCAyMjcsIDEsIDE3OCwgMjA3LCAyMjcsIDEsIDE4MywgMjA3LCAyMjcsIDEsIDIxMywgCisgICAgMjUyLCAyMDcsIDIyNywgMSwgMTk0LCAyMDcsIDIyNywgMSwgMjAxLCAxMTQsIDIwNywgMjI3LCAxLCAyMTIsIDY0LCAyMDcsIAorICAgIDIyNywgMSwgMjAwLCAxODEsIDIwNywgMjI3LCAxLCAxNDQsIDIwNywgMjI3LCAxMTEsIDIsIDIxNiwgMTY4LCAyMDcsIDIyNywgCisgICAgMTExLCAyLCAyMTYsIDE0MiwgMjA3LCAyMjcsIDExMSwgMiwgMjE2LCAxMzksIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNTYsIAorICAgIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxMzgsIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNjEsIDIwNywgMjI3LCAyMiwgMiwgCisgICAgMjE2LCAxNDgsIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNjksIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNTgsIDIwNywgMjI3LCAKKyAgICAyLCAyMTYsIDE3MiwgMjA3LCAyMjcsIDIsIDIwMiwgMjA4LCAyMDcsIDIyNywgMTExLCAyLCAyMTYsIDEwMywgMTc4LCAyMDcsIAorICAgIDIyNywgMTExLCAyLCAyMTYsIDEwMywgMjAxLCAxMTQsIDIwNywgMjI3LCAxLCAyMjYsIDIwNywgMjA3LCAyMjcsIDEsIDIwNywgCisgICAgMTY0LCAyMDcsIDIyNywgMTcsIDE5OSwgODEsIDIwNywgMjI3LCAxNywgMTAyLCAyMDcsIDIyNywgMTcsIDEwNSwgMjA3LCAKKyAgICAyMjcsIDE3LCAxNDcsIDIwNywgMjI3LCAxNywgMTQ5LCAyMDcsIDIyNywgMTcsIDE2NCwgMjA3LCAyMjcsIDE3LCAxODcsIAorICAgIDIwNywgMjI3LCAxNywgMjEwLCAxMzUsIDIwNywgMjI3LCAxNywgMTkyLCAyMDcsIDIyNywgMTcsIDIxOSwgMTEzLCAyMDcsIAorICAgIDIyNywgMjUwLCAxMjIsIDIwNywgMjI3LCAxLCAyMTMsIDEwOCwgMjA3LCAyMjcsIDEsIDIyNCwgMjMzLCAyMDcsIDIyNywgMSwgCisgICAgMjQ4LCAyMDAsIDIwNywgMjI3LCAxLCA0NywgMjI3LCAxMTgsIDIwNywgMjI3LCAxLCA0NywgMjIzLCAyNDMsIDI0OSwgNTQsIAorICAgIDEsIDYyLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgNjIsIDI0OSwgNTQsIDEsIDE0NCwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIAorICAgIDE0NCwgMjQ5LCA1NCwgMSwgMjIyLCAxNzUsIDE0NCwgMjQ5LCA1NCwgMSwgMjQ5LCAxMzYsIDI0OSwgNTQsIDEsIDIyNywgCisgICAgNDMsIDI0OSwgMTM2LCAyNDksIDU0LCAxLCAxNzIsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAxNzIsIDI0OSwgNTQsIDEsIAorICAgIDE4OCwgMjQ5LCA1NCwgMSwgMjIyLCAxNzUsIDE4OCwgMjQ5LCA1NCwgMSwgMjAxLCAxMTQsIDI0OSwgNTQsIDEsIDIwOSwgCisgICAgMTUwLCAyMDEsIDExNCwgMjQ5LCA1NCwgMSwgMjE2LCAxODUsIDIwMSwgMTE0LCAyNDksIDU0LCAxLCAyMzYsIDg5LCAyNDksIAorICAgIDU0LCAxLCAyMDksIDE1MCwgMjM2LCA4OSwgMjQ5LCA1NCwgMSwgMjI3LCAyNDgsIDI0OSwgNTQsIDEsIDI0MiwgNTgsIDI0OSwgCisgICAgNTQsIDEsIDIxMywgMjUyLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMjEzLCAyNTIsIDI0OSwgNTQsIDEsIDE3OCwgMjQ5LCAKKyAgICA1NCwgMSwgMjA5LCAxNTAsIDE3OCwgMjQ5LCA1NCwgMSwgMjA4LCAyNTIsIDIwNywgMzYsIDI0OSwgNTQsIDEsIDIxOCwgCisgICAgMjE5LCAyMDcsIDM2LCAyNDksIDU0LCAxLCAyMTIsIDY0LCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMjEyLCA2NCwgMjQ5LCAKKyAgICA1NCwgMSwgMjIyLCAxNzUsIDIxMiwgNjQsIDI0OSwgNTQsIDEsIDE4MywgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDE4MywgCisgICAgMjQ5LCA1NCwgMSwgMjE5LCAyNTMsIDI0OSwgNTQsIDEsIDE5NCwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDE5NCwgMjQ5LCAKKyAgICA1NCwgMSwgMjE4LCA2MCwgMjQ5LCA1NCwgMSwgMjQ3LCAxOTAsIDI0OSwgNTQsIDEsIDIyMCwgNzUsIDI0OSwgNTQsIDEsIAorICAgIDIyMiwgMTEwLCAyNDksIDU0LCAxLCA3MCwgMjQ5LCA1NCwgMSwgNjYsIDI0OSwgNTQsIDIsIDIwNSwgMTc3LCAyNDksIDU0LCAKKyAgICAyMiwgMiwgNzIsIDI0OSwgNTQsIDIyLCAyLCAyMTYsIDE4NSwgNzIsIDI0OSwgNTQsIDIyLCAyLCAyMzgsIDI1NSwgMjQ5LCAKKyAgICA1NCwgMjIsIDIsIDcwLCAyNDksIDU0LCAyMiwgMiwgMjI3LCA0MywgNzAsIDI0OSwgNTQsIDIyLCAyLCA3NCwgMjQ5LCA1NCwgCisgICAgMjIsIDIsIDIyNywgNDMsIDc0LCAyNDksIDU0LCAyMiwgMiwgNjYsIDI0OSwgNTQsIDIyLCAyLCAxMDgsIDM2LCAyMDksIAorICAgIDE1MCwgMjEyLCA2NCwgMjQ5LCA1NCwgMTExLCAyLCAyMTksIDI1NSwgMjQ5LCA1NCwgMTExLCAyLCAyMzQsIDI0NywgMjQ5LCAKKyAgICA1NCwgMjE2LCAxNTEsIDI0OSwgNTQsIDIxNiwgMTQ3LCAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIyMCwgMTYyLCAyMjIsIAorICAgIDE4LCAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIxNSwgMTU5LCAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIyNywgMTQ0LCAKKyAgICAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIxNiwgMTUxLCAyMjQsIDI0MywgMSwgMTYxLCAyMjQsIDI0MywgMSwgMjI2LCAxMDIsIAorICAgIDIyNCwgMjQzLCAxLCAyMjYsIDIwNywgMjI0LCAyNDMsIDEsIDIzNiwgODksIDIyNCwgMjQzLCAxLCAyMzUsIDEzMSwgMjI0LCAKKyAgICAyNDMsIDEsIDIxOSwgMjUzLCAyMjQsIDI0MywgMSwgMjQ3LCAxOTAsIDIyNCwgMjQzLCAxLCAyNDcsIDM3LCAyMjQsIDI0MywgCisgICAgMSwgMjI3LCAyNDgsIDIyNCwgMjQzLCAxLCAyMTgsIDYwLCAyMjQsIDI0MywgMSwgMjA3LCAzNiwgMjI0LCAyNDMsIDEsIAorICAgIDIwNiwgMTIyLCAyMjQsIDI0MywgMSwgMjQyLCA1OCwgMjI0LCAyNDMsIDEsIDE4OCwgMjI0LCAyNDMsIDEsIDE3MiwgMjI0LCAKKyAgICAyNDMsIDEsIDIxNSwgMTM1LCAyMjQsIDI0MywgMSwgMjE1LCAyNDUsIDIyNCwgMjQzLCAxLCAyMzcsIDE5NSwgMjI0LCAyNDMsIAorICAgIDEsIDIzNywgNTUsIDIyNCwgMjQzLCAxLCAyNDksIDEzNiwgMjI0LCAyNDMsIDEsIDI0OCwgMTQ1LCAyMjQsIDI0MywgMSwgCisgICAgMTc4LCAyMjQsIDI0MywgMSwgMjIxLCAxNDMsIDIyNCwgMjQzLCAxLCAyMDUsIDMyLCAyMjQsIDI0MywgMSwgMjA1LCAyMiwgCisgICAgMjI0LCAyNDMsIDEsIDIzOSwgOTMsIDIyNCwgMjQzLCAxLCAxODMsIDIyNCwgMjQzLCAxLCAyMTMsIDI1MiwgMjI0LCAyNDMsIAorICAgIDEsIDE5NCwgMjI0LCAyNDMsIDEsIDE0NCwgMjI0LCAyNDMsIDEsIDIzNCwgMzksIDIyNCwgMjQzLCAxLCAyMDMsIDkwLCAKKyAgICAyMjQsIDI0MywgMSwgMjEyLCA2NCwgMjI0LCAyNDMsIDEsIDIxMCwgMTE0LCAyMjQsIDI0MywgMSwgMjAxLCAxMTQsIDIyNCwgCisgICAgMjQzLCAxLCA2MiwgMjI0LCAyNDMsIDIwOCwgMTIsIDEsIDE4MywgMjI0LCAyNDMsIDIwOCwgMTIsIDEsIDIxMywgMjUyLCAKKyAgICAyMjQsIDI0MywgMjIsIDIsIDI1MiwgMTM4LCAyMjQsIDI0MywgMjIsIDIsIDcwLCAyMjQsIDI0MywgMjIsIDIsIDc0LCAyMjQsIAorICAgIDI0MywgMjIsIDIsIDIxNywgNjMsIDIyNCwgMjQzLCAyMiwgMiwgNjYsIDIyNCwgMjQzLCAyMiwgMiwgMjAzLCAxODIsIDIyNCwgCisgICAgMjQzLCAyMiwgMiwgNzIsIDIyNCwgMjQzLCAxMTEsIDIsIDIyNywgMTE4LCAyMjQsIDI0MywgMTExLCAyLCAyMjMsIDI0MywgCisgICAgMjI0LCAyNDMsIDExMSwgMiwgMTU2LCAyMjQsIDI0MywgMTExLCAyLCAyMjAsIDIxNCwgMjI0LCAyNDMsIDExMSwgMiwgMjE2LCAKKyAgICAyMjYsIDIyNCwgMjQzLCAxMTEsIDIsIDE0NiwgMjI0LCAyNDMsIDExMSwgMiwgMjA3LCA4MywgMjI0LCAyNDMsIDExMSwgMiwgCisgICAgMjE4LCAzNCwgMjI0LCAyNDMsIDExMSwgMiwgMjI3LCA2NCwgMjI0LCAyNDMsIDIsIDIxMywgMjEzLCAyMjQsIDI0MywgMiwgCisgICAgMjE4LCAxMDAsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjA3LCAzNCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyMTgsIDQ1LCAyMDYsIAorICAgIDE4LCAyMDcsIDM0LCAyMjQsIDI0MywgMjE0LCAyMTIsIDI0NywgNDQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjA1LCAxNCwgCisgICAgMjQ3LCA0NCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyMDUsIDEzLCAyMjQsIDI0MywgMTcsIDE5OSwgODEsIDIyNCwgMjQzLCAKKyAgICAxNywgMTAyLCAyMjQsIDI0MywgMTcsIDEwNSwgMjI0LCAyNDMsIDE3LCAxNDcsIDIyNCwgMjQzLCAxNywgMTQ5LCAyMjQsIAorICAgIDI0MywgMTcsIDE2NCwgMjI0LCAyNDMsIDE3LCAxODcsIDIyNCwgMjQzLCAxNywgMjEwLCAxMzUsIDIyNCwgMjQzLCAxNywgCisgICAgMTkyLCAyMjQsIDI0MywgMTcsIDIxOSwgMTEzLCAyMjQsIDI0MywgMSwgMjA0LCAyNTMsIDIyNCwgMjQzLCAxLCAyMDQsIAorICAgIDI0MSwgMjI0LCAyNDMsIDEsIDI0MSwgMjIwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE5OSwgODEsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxNywgMTAyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDEwNSwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxNDcsIAorICAgIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTQ5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE2NCwgMjE3LCA5NCwgMjQ2LCAKKyAgICAyMjksIDE3LCAxODcsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMjEwLCAxMzUsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgCisgICAgMTkyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDIxOSwgMTEzLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMTk0LCAyMTcsIDk0LCAKKyAgICAyNDYsIDIyOSwgMSwgMjUwLCAxNTUsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTEsIDE5MywgMjE3LCA5NCwgMjQ2LCAyMjksIAorICAgIDEsIDI1MSwgNzYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTEsIDE1MSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNSwgCisgICAgMTc1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCAxMDAsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDEwMSwgMjE3LCAKKyAgICA5NCwgMjQ2LCAyMjksIDEsIDI1MiwgOTksIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDk0LCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMSwgMjI0LCAyMTAsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjgsIDI2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgCisgICAgMjI4LCAxNTIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjgsIDQ3LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI4LCAzNSwgCisgICAgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNCwgNDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMDQsIDM4LCAyMTcsIDk0LCAKKyAgICAyNDYsIDIyOSwgMSwgMjA0LCAzNiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIwMywgMjMzLCAyMTcsIDk0LCAyNDYsIDIyOSwgCisgICAgMSwgMjAzLCAxNzQsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjUsIDQwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjM4LCAKKyAgICAxMzMsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMzksIDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMzgsIDE3OSwgMjE3LCAKKyAgICA5NCwgMjQ2LCAyMjksIDEsIDIzOCwgMTA4LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI0LCAxMTAsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxLCAyMTcsIDYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMTcsIDE0MiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIAorICAgIDIxNiwgMjQ5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjE3LCAxMDgsIDIxNywgOTQsIDI0NiwgMjI5LCAyMjEsIDQyLCAKKyAgICAyMDQsIDIxOCwgMjE3LCA5NCwgMjQ2LCAyMjksIDIzNiwgODQsIDIwNCwgMjE5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjIxLCAKKyAgICA0MCwgMjA0LCAyMTksIDIxNywgOTQsIDI0NiwgMjI5LCAyMTMsIDE1MCwgMjE3LCA5NCwgMjQ2LCAyMjksIDIxNSwgMjQzLCAKKyAgICAyMTcsIDk0LCAyNDYsIDIyOSwgMjUxLCAxODQsIDIxNywgOTQsIDI0NiwgMjI5LCAyMTQsIDIxMiwgMjIxLCAzNiwgMjE3LCAKKyAgICA5NCwgMjQ2LCAyMjksIDIxNCwgMjEyLCA1MywgMjIxLCAzNiwgMzcsIDQsIDEsIDIxMiwgMjE5LCAyMDMsIDU5LCAzNywgNCwgCisgICAgMSwgMjI0LCA4MiwgMjQxLCAxNzUsIDM3LCA0LCAxLCAyMjAsIDEyNCwgNzQsIDM3LCA0LCAxLCAyMDEsIDI4LCAyMzgsIAorICAgIDEwNCwgMzcsIDQsIDEsIDIwNiwgMjQ4LCAyMDYsIDIwMSwgMzcsIDQsIDEsIDIwNiwgNDMsIDIwNiwgMjAxLCAzNywgNCwgMSwgCisgICAgMjA2LCAyNDgsIDIzNCwgMTY1LCA1NCwgMzcsIDQsIDEsIDIwNiwgMjQ4LCAyMDAsIDY1LCAzNywgNCwgMSwgMjA0LCAwLCAKKyAgICAyMDQsIDIwLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMDcsIDE5OCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIAorICAgIDE2NiwgMjE2LCAxNTIsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDIxNCwgMjAwLCAyMDcsIDIyNywgMjE0LCAKKyAgICAyMTIsIDI0OCwgMTY2LCAyNDcsIDE3NSwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjI0LCAyMzQsIDIxMSwgCisgICAgMjUwLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMjcsIDEwOCwgMjExLCAyNTAsIDIwNywgMjI3LCAyMTQsIAorICAgIDIxMiwgMjQ4LCAxNjYsIDI0MiwgNTksIDIxMSwgMjUwLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyNDksIDEzNywgCisgICAgMjExLCAyNTAsIDIwMywgNTYsIDE1MCwgMjI3LCA0MSwgMjAzLCA1NiwgMTUwLCAyMTAsIDgxLCAyMDMsIDU2LCAxNTAsIAorICAgIDIxNSwgMjMsIDIwMywgNTYsIDIsIDIxOSwgMTI2LCAyMDMsIDU2LCAyLCAyMDAsIDg2LCAyMjEsIDIwMiwgMjA3LCAxODksIAorICAgIDIwMywgNTYsIDE1MCwgMjAwLCA4NiwgMjUxLCAxODksIDIyOCwgMTA0LCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMDAsIAorICAgIDg2LCAyMjgsIDEwNCwgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjAwLCA4NiwgMjI3LCAyOSwgMjI4LCAxMDQsIDIwNywgCisgICAgMTg5LCAyMDMsIDU2LCAxNTAsIDI0NywgMTUyLCA1NywgMjAzLCA1NiwgMTUwLCAyMDAsIDg2LCAyMjcsIDI5LCAyMjgsIAorICAgIDEwNCwgMjA3LCAxOTAsIDIxMSwgMjIwLCAyMDMsIDU2LCAxNTAsIDUzLCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMDUsIAorICAgIDgzLCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMjcsIDI5LCAyNTEsIDM1LCAyMDMsIDU2LCAxNTAsIDczLCA1NywgMjAzLCAKKyAgICA1NiwgMTUwLCAxMjAsIDE5MCwgNTcsIDIwMywgNTYsIDE1MCwgMTI2LCAxOTAsIDU3LCAyMDMsIDU2LCAxNTAsIDIxMywgMzQsIAorICAgIDIyNywgNDAsIDIyOCwgMTA0LCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyNTAsIDE1MiwgMjI4LCAxMDQsIDIwNywgMTg5LCAKKyAgICAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjA3LCAxODksIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyMDQsIDMzLCAyMDMsIDU2LCAKKyAgICAyLCAyMTMsIDEwNSwgMjAyLCAyMDQsIDIwNCwgMzMsIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyNTEsIDM1LCAyMDMsIDU2LCAKKyAgICAyLCAyMTMsIDEwNSwgMjAyLCAyMDQsIDI1MSwgMzUsIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyMDQsIDM0LCAzLCAyMDcsIDYsIAorICAgIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyNTEsIDM2LCAzLCAyMDcsIDYsIDIwMywgNTYsIDIsIDI1MSwgMzQsIDI1MSwgNTAsIAorICAgIDIwMywgNTYsIDIsIDI1MSwgMzQsIDI0OSwgMTA0LCAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyMDMsIDgxLCAyMDMsIDU2LCAyLCAKKyAgICAyNTEsIDM0LCAyMDMsIDgyLCAzLCAyMDcsIDYsIDIwMywgNTYsIDIsIDIwNSwgMjE0LCAyMDMsIDU2LCAyLCAyMzQsIDg3LCAKKyAgICAxNjgsIDI1MSwgMzMsIDIwMywgNTYsIDIsIDE2OCwgMjUxLCAzMywgMjAzLCA1NiwgMiwgMjEyLCAxNzcsIDE2OCwgMjUxLCAKKyAgICAzMywgMjAzLCA1NiwgMiwgMjUxLCAzNCwgMjA0LCA0MCwgMjIxLCAyNywgMjAzLCA1NiwgMiwgMjUwLCAyMzAsIDIwMywgNTYsIAorICAgIDIsIDIxMiwgMjI4LCAyNTAsIDIzMCwgMjAzLCA1NiwgMTUwLCAyNDcsIDE1MiwgNTYsIDIwMywgNTYsIDIsIDIyNywgMjAxLCAKKyAgICAyMDMsIDU2LCAyLCAyMDMsIDIyNiwgMjAzLCA1NiwgMTUwLCAyMTMsIDI3LCA1NiwgMjAzLCA1NiwgMTUwLCA1MywgMjEzLCAKKyAgICAyNywgNTYsIDgsIDEsIDQsIDYsIDYyLCA4LCAxLCA0LCA2LCAyNTEsIDIyMSwgOCwgNCwgMSwgMjA0LCAxODUsIDI1MSwgCisgICAgMjIxLCA4LCAxLCA0LCA2LCAyNDksIDcxLCAyNTAsIDEwMywgOCwgMSwgNCwgNiwgMjQ3LCAyMjMsIDgsIDEsIDQsIDYsIAorICAgIDI0MiwgMTUzLCA4LCAxLCA0LCA2LCAyMzgsIDc0LCA4LCAxLCA0LCA2LCA3MiwgOCwgNCwgMSwgMjA0LCAxODUsIDE3NiwgCisgICAgNzIsIDgsIDQsIDEsIDIwNCwgMTg1LCA3MCwgOCwgMSwgNCwgNiwgMjI3LCAyNTEsIDgsIDEsIDQsIDYsIDIyNywgMTE4LCA4LCAKKyAgICAxLCA0LCA2LCAyMjUsIDE5MywgMywgOTcsIDgsIDEsIDQsIDYsIDIyMywgMjQzLCA4LCAxLCA0LCA2LCAyMTMsIDEwNSwgCisgICAgMjIwLCAyMTQsIDgsIDEsIDQsIDYsIDc0LCA4LCAxLCA0LCA2LCAxNzYsIDc0LCA4LCA0LCAxLCAyMDksIDE3MywgNzQsIDgsIAorICAgIDQsIDEsIDIwOSwgMTczLCAxNzYsIDc0LCA4LCA0LCAxLCAyMDksIDE3MywgMTYzLCAzLCA5NywgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDIxNywgMTIxLCA4LCAxLCA0LCA2LCAyMTcsIDMsIDgsIDQsIDEsIDIwNSwgMTU4LCAxNjcsIDc0LCA4LCA0LCAxLCAKKyAgICAyNDgsIDkzLCAxNjcsIDc0LCA4LCAxLCA0LCA2LCAyMTYsIDIyNiwgOCwgMSwgNCwgNiwgMjEzLCAxMDUsIDE0NiwgOCwgMSwgCisgICAgNCwgNiwgMjA0LCAxODUsIDE0NiwgOCwgMSwgNCwgNiwgMjA3LCA4MywgOCwgMSwgNCwgNiwgNjYsIDgsIDQsIDEsIDIwOSwgCisgICAgMTczLCA2NiwgOCwgNCwgMSwgMjA5LCAxNzMsIDI0MSwgNzIsIDY2LCA4LCA0LCAxLCAyMDksIDE3MywgMjA0LCAxODUsIAorICAgIDIyMywgMjQzLCA4LCAxLCA0LCA2LCAyMDMsIDE2OCwgOCwgMSwgNCwgNiwgMjAxLCAxNDcsIDgsIDEsIDQsIDYsIDE5OSwgCisgICAgMTU3LCA4LCAxLCA0LCA2LCAyMzgsIDgsIDgsIDEsIDIwMiwgMTg5LCAyMjUsIDY2LCAyMDgsIDIxNiwgOCwgMSwgMjUxLCAKKyAgICAxNzEsIDMxLCAxLCA0LCA2LCAyMzYsIDYwLCAzMSwgMSwgNCwgNiwgMjI1LCA4NywgMzEsIDEsIDQsIDYsIDIxNSwgMjA0LCAKKyAgICAzMSwgMSwgNCwgNiwgMjEzLCA5MCwgMzEsIDEsIDQsIDYsIDIxNCwgMjM1LCAzNywgMSwgNCwgNiwgMjM4LCAyMDksIDY3LCAKKyAgICAxLCA2LCA2MiwgNjcsIDEsIDYsIDI1MSwgMjIxLCA2NywgMSwgNiwgMjUwLCAxMDMsIDY3LCAxLCA2LCAyNDksIDcxLCAyNTAsIAorICAgIDEwMywgNjcsIDEsIDYsIDI0MiwgMTUzLCA2NywgMSwgNiwgNzIsIDY3LCAxLCA2LCAyMTMsIDEwNSwgNzIsIDY3LCAxLCA2LCAKKyAgICAyMzYsIDE1NiwgNjcsIDEsIDYsIDIzNCwgMjQ3LCA2NywgMSwgNiwgNzAsIDY3LCAxLCA2LCAyMjcsIDI1MSwgNjcsIDEsIDYsIAorICAgIDIyNywgMTE4LCA2NywgMSwgNiwgMTU2LCA2NywgMSwgNiwgMjIzLCAyNDMsIDY3LCAxLCA2LCAyMjAsIDIxNCwgNjcsIDEsIAorICAgIDYsIDIxMywgMTA1LCAyMjAsIDIxNCwgNjcsIDEsIDYsIDc0LCA2NywgMSwgNiwgMjE3LCAzLCA2NywgMSwgNiwgMjE2LCAKKyAgICAyMjYsIDY3LCAxLCA2LCAxNDYsIDY3LCAxLCA2LCAyMDcsIDgzLCA2NywgMSwgNiwgNjYsIDY3LCAxLCA2LCAyMDEsIDE0NywgCisgICAgNjcsIDEsIDQsIDYyLCA2NywgMSwgNCwgMjA0LCAxODUsIDYyLCA2NywgMSwgNCwgMjUxLCAxMTIsIDY3LCAxLCA0LCAyMDQsIAorICAgIDE4NSwgMjUxLCAyMjEsIDY3LCAxLCA0LCAyNTAsIDEwMywgNjcsIDEsIDQsIDI0MiwgMTUzLCA2NywgMSwgNCwgNzIsIDY3LCAKKyAgICAxLCA0LCAyMTEsIDIxOCwgNjcsIDEsIDQsIDE3NiwgNzIsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMTc2LCA3MiwgNjcsIDEsIDQsIAorICAgIDIzNiwgMTU2LCA2NywgMSwgNCwgMjA0LCAxODUsIDcwLCA2NywgMSwgNCwgMjI3LCAxMTgsIDY3LCAxLCA0LCAyMjMsIDI0MywgCisgICAgNjcsIDEsIDQsIDIzOCwgMTY1LCA2NywgMSwgNCwgNzQsIDY3LCAxLCA0LCAxNzYsIDc0LCA2NywgMSwgNCwgMjA1LCAxNTgsIAorICAgIDE2NywgNzQsIDY3LCAxLCA0LCAyNDgsIDkzLCAxNjcsIDc0LCA2NywgMSwgNCwgMjE2LCAyMjYsIDY3LCAxLCA0LCAyMDcsIAorICAgIDgzLCA2NywgMSwgNCwgNjYsIDY3LCAxLCA0LCAyMDksIDE3MywgNjYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMjIzLCAyNDMsIAorICAgIDY3LCAxLCA0LCAyMDMsIDE2OCwgNjcsIDEsIDQsIDI1MSwgMTcxLCA2NywgMSwgNCwgMjQ4LCAyMDgsIDY3LCAxLCA0LCAzMSwgCisgICAgMjM2LCA2MCwgNjcsIDEsIDQsIDI0MSwgMTM2LCA2NywgMSwgNCwgMzEsIDIxNSwgMjI5LCA2NywgMSwgNCwgMjQ2LCAyMzYsIAorICAgIDgsIDIwOCwgNCwgNCwgMSwgNzAsIDgsIDIwOCwgNCwgNCwgMSwgMTQ2LCA4LCAyMDgsIDQsIDQsIDEsIDY2LCA4LCAyMDgsIAorICAgIDQsIDQsIDEsIDIwMywgMTY4LCAzMSwgMjA4LCA0LCA0LCAxLCAyNDgsIDIwOCwgMzEsIDIwOCwgNCwgNCwgMSwgMjM2LCA2MCwgCisgICAgMzEsIDIwOCwgNCwgNCwgMSwgMjEzLCA5MCwgMzEsIDIwOCwgNCwgNCwgMSwgMjE1LCAyMjksIDMxLCAyMDgsIDQsIDQsIDEsIAorICAgIDI0NiwgMjM2LCA4LCA0LCAxLCAyMDQsIDMxLCA4LCA0LCAxLCA2OCwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIzOCwgNiwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjIzLCAKKyAgICAyNDQsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTYsIAorICAgIDIyNywgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE0LCAzMywgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE0LCAKKyAgICAzMywgMywgMjM3LCA2OSwgMjYsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAxMDEsIDIwNSwgMjQwLCAKKyAgICA4LCA0LCAxLCAyMDcsIDg0LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMTAxLCAyMDUsIDI0MCwgCisgICAgOCwgNCwgMSwgMjA0LCAxODUsIDIzNiwgMTU2LCA2NywgMSwgMzcsIDIzOCwgMTc5LCA4LCA0LCAxLCAyMjgsIDcxLCAyMzYsIAorICAgIDE1NiwgOCwgNCwgMSwgMjA2LCAxMjUsIDMsIDIwOCwgNTEsIDgsIDQsIDYsIDEsIDIzMywgMTksIDMsIDk3LCA4LCA0LCAxLCAKKyAgICAyMjgsIDQyLCAzLCA5NywgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDk3LCA4LCA0LCA2LCAxLCAxMDgsIDMsIDk3LCA4LCA0LCAKKyAgICAxLCAyMDMsIDIyMSwgMywgOTcsIDgsIDQsIDEsIDY4LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM4LCA2LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM4LCA5NSwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMzUsIDMsIDIxMywgCisgICAgMTExLCAxMTcsIDgsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjMzLCAKKyAgICAxODcsIDI2LCAyMDcsIDYsIDgsIDQsIDEsIDE5NywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMTc2LCAxOTcsIDMsIAorICAgIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIxMywgMTA1LCAxNzYsIDE5NywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgCisgICAgMjExLCAyMTksIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIAorICAgIDE3NiwgMTYzLCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMzgsIDk1LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAKKyAgICAxMDgsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIzOCwgOSwgMywgMjEzLCAxMTEsIDExNywgNjcsIDEsIDQsIDIwNCwgCisgICAgMTg1LCAyNTEsIDExMiwgNjcsIDEsIDQsIDI0NywgMjIzLCA2NywgMSwgNCwgMjQ3LCAyMjQsIDMsIDI0MiwgMTk4LCA2NywgCisgICAgMSwgNCwgMjM4LCA3NCwgNjcsIDEsIDQsIDIxMywgMTA1LCAxNzYsIDcyLCA2NywgMSwgNCwgMjM4LCA1LCA2NywgMSwgNCwgCisgICAgMjQwLCAxODEsIDIyNywgMjUyLCAzLCA5NywgNjcsIDEsIDQsIDEzNSwgMjM2LCAxNTYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgCisgICAgMjM0LCAyNDcsIDY3LCAxLCA0LCAyMzMsIDE5LCAzLCA5NywgNjcsIDEsIDQsIDIyOCwgNDEsIDY3LCAxLCA0LCA2LCA3MCwgCisgICAgNjcsIDEsIDQsIDYsIDIzMywgMTksIDMsIDk3LCA2NywgMSwgNCwgMjI3LCAyNTIsIDMsIDI0MiwgMjMwLCA2NywgMSwgNCwgCisgICAgMjI1LCAxOTMsIDMsIDIxMywgMTExLCAxMTcsIDY3LCAxLCA0LCAyMjUsIDE5MywgMywgMjE2LCAxODQsIDExNywgNjcsIDEsIAorICAgIDQsIDYsIDE1NiwgNjcsIDEsIDQsIDIyMywgMjQ0LCAzLCAxMTcsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMjIzLCAyNDQsIDMsIAorICAgIDE2OCwgMjI1LCAxNiwgNjcsIDEsIDQsIDIyMCwgMjE1LCAzLCA0OSwgMTE3LCA2NywgMSwgNCwgMjIwLCAyMTUsIDMsIDIxMywgCisgICAgMTExLCAxMTcsIDY3LCAxLCA0LCA2LCAyMjAsIDIxNCwgNjcsIDEsIDQsIDI0OSwgNzEsIDc0LCA2NywgMSwgNCwgMjE1LCAKKyAgICAyMjksIDY3LCAxLCA0LCAyMTIsIDEyMywgMywgMTE3LCA2NywgMSwgNCwgMjM4LCA5NCwgNjcsIDEsIDQsIDIwNywgODQsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDY3LCAxLCA0LCAxMDgsIDE0OCwgNjcsIDEsIDQsIDIwMywgMjIwLCA2NywgMSwgNCwgNiwgNjYsIAorICAgIDY3LCAxLCA0LCAyMDMsIDE2OSwgMywgMTE3LCA2NywgMSwgNCwgMjA0LCAxODUsIDIwMywgMTY4LCA2NywgMSwgNCwgMTk5LCAKKyAgICAxNTcsIDY3LCAxLCA0LCAxOTksIDE1OCwgMywgMjEzLCAxMTEsIDExNywgNjcsIDEsIDQsIDE5OSwgMTU4LCAzLCAyNDIsIAorICAgIDE5OCwgNjcsIDEsIDQsIDIzOCwgOCwgNjcsIDEsIDQsIDIwNiwgODgsIDM4LCAyMzksIDE4MCwgMjM1LCA3NCwgMjUxLCAKKyAgICAyNTEsIDM4LCAyMzksIDE4MCwgMjUxLCAyMzksIDI1MSwgMjUxLCAzOCwgMjA5LCA0MiwgNTcsIDM4LCAyMDcsIDE5NiwgODEsIAorICAgIDM4LCAyMjIsIDIyNywgMzgsIDIzNSwgNzEsIDM4LCAyMjIsIDIyNSwgMzgsIDI1MSwgMjM3LCAzOCwgMjM1LCA3MiwgMzgsIAorICAgIDI1MSwgMjM4LCAzOCwgOCwgNCwgMSwgMjE0LCAzMywgNTcsIDM4LCAyNDgsIDU2LCAzOCwgMjIyLCAyMjYsIDM4LCA1MywgCisgICAgMjQ2LCAxNDcsIDU2LCAzOCwgMjE3LCAxMTEsIDU2LCAzOCwgMTk5LCAyNywgNTcsIDM4LCAyMjgsIDI3LCA1NywgMzgsIAorICAgIDIwMywgMjE1LCA1NiwgMzgsIDIwMywgMTk4LCA1NiwgMzgsIDgsIDQsIDEsIDIzNywgNDEsIDE3NiwgMzUsIDU2LCAzOCwgOCwgCisgICAgNCwgMSwgMjUxLCAyMjEsIDM4LCA4LCA0LCAxLCAyNTEsIDMxLCAzOCwgOCwgNCwgMSwgMjUwLCAxMjMsIDM4LCA4LCA0LCAxLCAKKyAgICAyNDcsIDIyNCwgMjQ3LCA2OSwgMzgsIDgsIDQsIDEsIDIyOCwgNzEsIDI0MiwgMTUzLCAzOCwgOCwgNCwgMSwgMjM4LCA3NCwgCisgICAgMzgsIDgsIDQsIDEsIDIzNiwgMTU2LCAzOCwgOCwgMSwgNCwgNiwgMjM2LCAxNTYsIDM4LCA4LCA0LCAxLCAyMjcsIDExOCwgCisgICAgMzgsIDgsIDQsIDEsIDE1NiwgMzgsIDgsIDEsIDQsIDYsIDE1NiwgMzgsIDgsIDEsIDQsIDYsIDIyMywgMjQzLCAzOCwgOCwgCisgICAgNCwgMSwgMjIwLCAyMTQsIDM4LCA4LCAxLCA0LCA2LCAyMjAsIDIxNCwgMzgsIDgsIDEsIDQsIDYsIDE0NiwgMzgsIDgsIDQsIAorICAgIDEsIDIxNCwgMzMsIDIxMiwgMjIyLCAzOCwgOCwgNCwgMSwgMjEyLCAxMjIsIDM4LCA4LCA0LCAxLCAxNjgsIDIxMiwgMTIyLCAKKyAgICAzOCwgOCwgNCwgMSwgMTk5LCAxNTcsIDM4LCA4LCA0LCAxLCAyNTEsIDExMiwgMzgsIDgsIDQsIDEsIDI1MCwgMTAzLCAzOCwgCisgICAgOCwgNCwgMSwgMjQ4LCAyMDgsIDM4LCA4LCA0LCAxLCAyMTEsIDIxOCwgMzgsIDgsIDQsIDEsIDIzOCwgNSwgMzgsIDgsIDQsIAorICAgIDEsIDIyNSwgMTkzLCAzLCA1MywgMTAxLCAyMDUsIDI0MCwgMzgsIDgsIDQsIDEsIDE2MywgMywgMTYyLCAyNDcsIDU3LCA5NywgCisgICAgMzgsIDgsIDQsIDEsIDIxNiwgMjI2LCAzOCwgOCwgNCwgMSwgMjM4LCA5NCwgMzgsIDgsIDQsIDEsIDEwOCwgMywgMTYyLCAKKyAgICAyNDcsIDU3LCA5NywgMzgsIDgsIDQsIDEsIDIwMSwgMTQ3LCAzOCwgOCwgNCwgMSwgMzUsIDMsIDI0MSwgNzQsIDM4LCA4LCAKKyAgICA0LCAxLCAxNjMsIDMsIDI0MSwgNzQsIDM4LCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzQsIDM4LCAxMTUsIDIwNywgMTgsIAorICAgIDU2LCAzOCwgMjQxLCAxNDUsIDgxLCAzOCwgNTMsIDIyOCwgNTAsIDI0OCwgNTgsIDU3LCAzOCwgMjUxLCAxMTcsIDE2MCwgCisgICAgMjA1LCAxODYsIDU3LCAzOCwgNDksIDI1MCwgMjAzLCA1NiwgMzgsIDUxLCAyNTAsIDIwMywgMjYsIDEyNywgMjUwLCAyMDMsIAorICAgIDU3LCA4LCA2LCAxLCAzNSwgMywgMjEzLCAyNywgNTcsIDgsIDQsIDEsIDM1LCAzLCAyMTMsIDI3LCA1NywgOCwgNiwgMSwgCisgICAgNjgsIDMsIDczLCA1NiwgOCwgNCwgMSwgNjgsIDMsIDczLCA1NiwgOCwgNiwgMSwgNjgsIDMsIDczLCA1NywgOCwgNCwgMSwgCisgICAgNjgsIDMsIDczLCA1NywgOCwgNiwgMSwgNjgsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgNjgsIDMsIDIyNCwgMTc3LCAKKyAgICA1NywgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgNzAsIDI2LCAxNjksIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAyNDcsIAorICAgIDcwLCAyNiwgMTY5LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU2LCAKKyAgICA4LCA2LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU3LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0NywgNjksIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCAKKyAgICAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDE5NywgMywgMjIyLCAKKyAgICAyMjksIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTk3LCAKKyAgICAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNiwgMSwgMTk3LCAKKyAgICAzLCAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDIwNSwgCisgICAgMjQxLCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDYsIDEsIDE5NywgMywgMjQ3LCA3MCwgMjYsIAorICAgIDI0OCwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjQ3LCA3MCwgMjYsIDI0OCwgNTcsIDgsIDYsIDEsIDIzOCwgNiwgMywgNzMsIAorICAgIDU2LCA4LCA0LCAxLCAyMzgsIDYsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAyMzYsIDE1NywgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIzNCwgMjQ4LCAKKyAgICAzLCA3MywgNTYsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCA3MywgNTcsIDgsIAorICAgIDYsIDEsIDIzNCwgMjQ4LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjM0LCAKKyAgICAyNDgsIDMsIDI0NywgNjksIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgCisgICAgMjQ4LCA1OCwgNTcsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDgsIDU4LCA1NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjA1LCAKKyAgICAyNDEsIDU3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDI0MSwgNzUsIAorICAgIDI2LCAxNjksIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0MSwgNzUsIDI2LCAxNjksIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAKKyAgICAxNjksIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAxNjksIDgsIDYsIDEsIDIyNywgMTE5LCAzLCA3MywgNTcsIDgsIDQsIDEsIAorICAgIDIyNywgMTE5LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIyNywgCisgICAgMTE5LCAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICA3MywgNTcsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjI0LCAxNzcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjQ2LCAxNDcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgMTY5LCA4LCA0LCAxLCAKKyAgICAyMjMsIDI0NCwgMywgMTY5LCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgNzMsIAorICAgIDU2LCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgNzMsIDU3LCA4LCA2LCAxLCAKKyAgICAyMjAsIDIxNSwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgCisgICAgNzMsIDU3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjI0LCAxNzcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjQ2LCAxNDcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMTY5LCAKKyAgICA4LCA0LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMjQxLCAKKyAgICA3NCwgOCwgNCwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDI0MSwgNzQsIDgsIDYsIDEsIDE2MywgMywgMjIyLCAyMjksIAorICAgIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNiwgMSwgMjE2LCAyMjcsIAorICAgIDMsIDE2OSwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDE2OSwgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDczLCA1NiwgOCwgNCwgMSwgCisgICAgMjE2LCAyMjcsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjE0LCAzMywgMywgNzMsIDU2LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAKKyAgICA3MywgNTYsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDczLCA1NywgOCwgNCwgMSwgMjE0LCAzMywgMywgNzMsIDU3LCA4LCA2LCAKKyAgICAxLCAyMTQsIDMzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMjE0LCAzMywgMywgNzMsIDI0OCwgCisgICAgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjE0LCAzMywgCisgICAgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgNzMsIDU2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgNzMsIAorICAgIDU2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgNzMsIDU3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgNzMsIDU3LCA4LCA2LCAxLCAKKyAgICAyMTIsIDEyMywgMywgMjUxLCAyMzksIDI2LCA3MywgNTYsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyNTEsIDIzOSwgMjYsIAorICAgIDczLCA1NiwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NywgMTI2LCAyNiwgNzMsIDU2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgCisgICAgMjQ3LCAxMjYsIDI2LCA3MywgNTYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDgsIAorICAgIDQsIDEsIDIxMiwgMTIzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDgsIDYsIDEsIDIwNywgODQsIDMsIDczLCA1NiwgCisgICAgOCwgNCwgMSwgMjA3LCA4NCwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIwNywgCisgICAgODQsIDMsIDczLCA1NywgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAKKyAgICAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgCisgICAgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDU3LCAKKyAgICA4LCA2LCAxLCAxMDgsIDMsIDIwNSwgMjQxLCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDYsIDEsIAorICAgIDEwOCwgMywgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMDUsIDI0MSwgMjYsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyMDUsIDI0MSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDI0MSwgNzQsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyNDEsIDc0LCA4LCA2LCAxLCAKKyAgICAyMDMsIDE2OSwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMjAzLCAxNjksIAorICAgIDMsIDczLCA1NywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDczLCA1NywgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDIzNSwgNzMsIAorICAgIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMTY5LCA4LCA0LCAxLCAyMDEsIAorICAgIDE0OCwgMywgMTY5LCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDI0MSwgCisgICAgNzQsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCA3MywgNTYsIDgsIDYsIDEsIAorICAgIDIwMSwgMTQ4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwMCwgMTk2LCAzLCAKKyAgICA3MywgNTYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIwMCwgMTk2LCAzLCAyNDEsIDc0LCA4LCAKKyAgICA0LCAxLCAyMDAsIDE5NiwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjAwLCAKKyAgICAxMjQsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgCisgICAgMjQ2LCAxNDYsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTcsIDgsIAorICAgIDYsIDEsIDE5OSwgMTU4LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyMjQsIDE3NywgNTcsIDgsIAorICAgIDQsIDEsIDIzNCwgMjQ4LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIAorICAgIDIwMSwgMTQ4LCAzLCAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIxMywgMjcsIDU2LCA4LCA0LCAxLCAzNSwgCisgICAgMywgNTEsIDE2NywgMjEzLCAyNiwgOCwgNCwgMSwgMTY4LCAyMTIsIDEyMywgMywgNzMsIDU2LCA4LCA0LCAxLCAxNjgsIAorICAgIDIxMiwgMTIzLCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMTY4LCAyMTIsIDEyMywgMywgMTIyLCA5NywgOCwgNiwgMSwgCisgICAgMjEwLCA3OSwgMjEyLCAxMjIsIDgsIDQsIDEsIDI0MSwgMTM2LCA4LCA2LCAxLCAzNSwgMywgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgNzMsIDU3LCA4LCA2LCAxLCAzNSwgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAzNSwgMywgMjMzLCAxODcsIAorICAgIDU2LCA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDQsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgCisgICAgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCAKKyAgICA3MywgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAzNSwgMywgMjQ2LCAxNDcsIAorICAgIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgCisgICAgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMTY5LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ4LCA1OCwgMjYsIDE2OSwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjMzLCAxODcsIDU2LCAKKyAgICA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAKKyAgICAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIAorICAgIDI2LCA3MywgNTcsIDgsIDQsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgNzMsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDczLCA1NywgCisgICAgOCwgNCwgMSwgMTk3LCAzLCA3MywgNTcsIDgsIDYsIDEsIDE5NywgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxOTcsIDMsIAorICAgIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk3LCAzLCAyMDUsIDI0MCwgOCwgNiwgCisgICAgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNiwgCisgICAgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCAKKyAgICA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAKKyAgICAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgCisgICAgMywgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNCwgCisgICAgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAKKyAgICAxLCAyMzMsIDE5LCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDIzMywgMTksIDMsIDczLCA1NywgOCwgNCwgMSwgMjMzLCAKKyAgICAxOSwgMywgNzMsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDczLCA1NywgOCwgNCwgMSwgMTYzLCAzLCA3MywgNTcsIDgsIDYsIDEsIAorICAgIDE2MywgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAKKyAgICAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAKKyAgICAxODcsIDU2LCA4LCA2LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAKKyAgICAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzNSwgNzMsIDgsIDQsIAorICAgIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjMzLCAKKyAgICAxODcsIDU2LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgCisgICAgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDczLCA1NywgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDczLCA1NywgOCwgCisgICAgNiwgMSwgMTA4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDEwOCwgMywgNzMsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTg3LCAKKyAgICA1NiwgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIAorICAgIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCAKKyAgICA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIAorICAgIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTA4LCAKKyAgICAzLCAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDYsIAorICAgIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIAorICAgIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjM1LCA3MywgOCwgNiwgMSwgCisgICAgMjAwLCAxMjQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDczLCA1NywgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIAorICAgIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIAorICAgIDIwNSwgMjQwLCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDIyMSwgMjAzLCAyMjQsIDEzOSwgOCwgCisgICAgNCwgMSwgMjIxLCAyMDMsIDIyNCwgMTM5LCA4LCA2LCAxLCAyMjEsIDIwMywgMjAzLCAxNjgsIDgsIDQsIDEsIDIyMSwgMjAzLCAKKyAgICAyMDMsIDE2OCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDIyNCwgNzQsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMjQsIDc0LCAKKyAgICAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQxLCAzMSwgNCwgCisgICAgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIAorICAgIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyNTEsIAorICAgIDExMywgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIAorICAgIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNiwgCisgICAgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOCwgCisgICAgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCAKKyAgICAxMjUsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIAorICAgIDIzMSwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MSwgCisgICAgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAKKyAgICAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI4LCAKKyAgICAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgCisgICAgNzQsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAKKyAgICAyNDEsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgCisgICAgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAKKyAgICAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICA0LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgCisgICAgMjI4LCA0MiwgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAKKyAgICAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAKKyAgICAyMCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDEsIDMxLCAKKyAgICA0LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCAKKyAgICA4MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgCisgICAgMjE3LCA4MiwgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAKKyAgICAxLCAyMTcsIDgyLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIwMywgCisgICAgMjIxLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgNCwgMSwgMjAzLCAyMjEsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAKKyAgICAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQxLCAKKyAgICAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIAorICAgIDEsIDIxNywgODQsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMTcsIAorICAgIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgCisgICAgNzQsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIAorICAgIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI4LCAKKyAgICAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgCisgICAgNzQsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgCisgICAgMjMxLCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjE2LCAyMzEsIDMxLCAKKyAgICA0LCAxLCAyMzgsIDgwLCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAKKyAgICAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjAzLCA3NCwgCisgICAgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAKKyAgICAyMTcsIDg0LCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDE5OSwgMjE5LCAzMSwgCisgICAgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAKKyAgICAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMDMsIAorICAgIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgCisgICAgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIAorICAgIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAKKyAgICAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgCisgICAgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAKKyAgICAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIAorICAgIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgCisgICAgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDQsIDEsIAorICAgIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIAorICAgIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCAKKyAgICA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIAorICAgIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgCisgICAgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIAorICAgIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgCisgICAgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAKKyAgICAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIAorICAgIDIxNCwgMjQyLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgCisgICAgODQsIDMsIDI0MSwgMjQyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgCisgICAgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgCisgICAgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgCisgICAgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgCisgICAgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE0LCAyNDIsIAorICAgIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAKKyAgICAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgCisgICAgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAyMTQsIAorICAgIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIAorICAgIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjAyLCAxNzAsIDMxLCAKKyAgICA0LCAxLCAyNTEsIDExMywgMywgMjIyLCAyMjgsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjAzLCA3NSwgMjYsIDE5OSwgCisgICAgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgMjMyLCAKKyAgICAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIAorICAgIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjAyLCAxNzAsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgCisgICAgMjIyLCAyMjgsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIAorICAgIDIzMSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDI0MiwgMzEsIDIyNiwgNTgsIDMxLCAyMTQsIDI0MiwgMzEsIDIxNCwgCisgICAgMjI4LCAzMSwgMjE2LCAyMCwgMzEsIDI0MSwgNjgsIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjAzLCAKKyAgICA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgODAsIAorICAgIDMsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCAKKyAgICAxMjUsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIAorICAgIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyNDIsIDMxLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgCisgICAgMjAyLCAxNzAsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyMjIsIDIyOCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIAorICAgIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCA2OCwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgCisgICAgMjI4LCA0MiwgMywgMjAyLCAxNzAsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMjIsIDIyOCwgMzEsIDYsIDEsIDIyOCwgNDIsIAorICAgIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTYsIDIzMSwgMzEsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgCisgICAgMzEsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMDMsIAorICAgIDIyMSwgMywgMjAyLCAxNzAsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjIyLCAyMjgsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgCisgICAgMjQxLCA2OCwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2OCwgMjYsIDIxNiwgMjMxLCAzMSwgCisgICAgNCwgMSwgMjEzLCA5MSwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMTMsIDkxLCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIAorICAgIDIwMywgMjIxLCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIwLCAzMSwgNiwgCisgICAgMSwgMjAzLCAyMjEsIDMsIDIwMiwgMTcwLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDIyMiwgMjI4LCAzMSwgNiwgMSwgMjAzLCAKKyAgICAyMjEsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTMsIDkxLCAzLCAKKyAgICAyNDEsIDI0MSwgMzEsIDI0MSwgNjgsIDI2LCAyMDMsIDc0LCAzMSwgMjQxLCA2OCwgMjYsIDIxNiwgMjMxLCAzMSwgMjAzLCAKKyAgICA3NCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIwMywgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIAorICAgIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgCisgICAgODQsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAKKyAgICAyMTcsIDgyLCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDg0LCAKKyAgICAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIAorICAgIDI0MiwgMzEsIDIxNiwgMjMxLCAzMSwgMjQxLCAyNDEsIDIzOCwgMTgwLCAyMTQsIDk0LCAyMzgsIDE5MSwgMjE0LCA5NCwgCisgICAgMjM4LCAxODAsIDIwOCwgMjQ0LCAyMzgsIDE5MSwgMjA4LCAyNDQsIDIwNiwgNDEsIDIwOCwgMjQ0LCAyMzYsIDIyNywgMjA4LCAKKyAgICAyNDQsIDIwOSwgMTA0LCAyMDgsIDI0NCwgMjM3LCAxMDIsIDIwOCwgMjQ0LCAyMTQsIDIxMiwgMjA4LCAyNDQsIDIwNiwgNzcsIAorICAgIDIwOCwgMjQ0LCAyMzQsIDIyMiwgMjA4LCAyNDQsIDE5OSwgODIsIDIwMSwgMjUsIDIwOCwgMjQ0LCAxOTksIDgyLCAyMDEsIAorICAgIDI1LCAyMTgsIDIzMiwgMTk5LCA4MiwgMjAxLCAyNSwgMjI3LCAxNjEsIDIyNSwgMTksIDgxLCAyMTMsIDM3LCA4MSwgMjMzLCAKKyAgICAzMywgMjE4LCAyMzMsIDIzMywgMzMsIDIzNywgMTAyLCAyNDEsIDI0NCwgMjM4LCAxODAsIDI0MSwgMjQ0LCAyMzgsIDE5MSwgCisgICAgMjQxLCAyNDQsIDIzMywgMTc3LCAxNDgsIDUzLCA4MywgMjI0LCAxNzYsIDUzLCAxMjgsIDIyNCwgMTc2LCA0OSwgMjA5LCAKKyAgICAxMzksIDIxNCwgNjMsIDgxLCA1MSwgMjA5LCAxMzksIDIxNCwgNjMsIDgxLCAyMDksIDEzOSwgMjI0LCA1OCwgMjE0LCA2MywgCisgICAgODEsIDIwOSwgMTM5LCAyMzQsIDU2LCAyMTQsIDYzLCA4MSwgNDksIDUzLCAyMTQsIDYzLCA4MSwgNTEsIDUzLCAyMTQsIDYzLCAKKyAgICA4MSwgNTMsIDIyNCwgNTgsIDIxNCwgNjMsIDgxLCA1MywgMjM0LCA1NiwgMjE0LCA2MywgODEsIDI0MiwgNDAsIDUzLCAyNDIsIAorICAgIDQwLCAyNDgsIDIwLCAyMDUsIDk1LCAyNDgsIDIwLCAxMTIsIDczLCAyMjUsIDM4LCAxMjAsIDczLCAyMjUsIDM4LCAyMzMsIAorICAgIDE3NywgMjM4LCAxOTUsIDIzMywgMzEsIDIxNSwgOTksIDIyNCwgMTc3LCAyMTAsIDE1NCwgMjE2LCAxMjgsIDIxMCwgMTU0LCAKKyAgICAyMjUsIDE5LCAyMzgsIDE4OSwgMjEzLCAzNywgMjM4LCAxODksIDIxNSwgNzgsIDI0MSwgOCwgMjM2LCAyNDAsIDIyNSwgMTksIAorICAgIDIxNiwgMjM5LCAyMTMsIDM3LCAyMTYsIDIzOSwgMjIwLCAxMjQsIDIxOCwgMjQwLCAyMDgsIDI0NCwgMjE2LCAyOCwgMjIxLCAKKyAgICAxNzAsIDU0LCAyMTYsIDI4LCAyMDYsIDE2NywgMjA2LCA1MSwgNTQsIDIxNSwgMTQsIDUzLCAyMTUsIDE0LCAyMDUsIDgzLCAKKyAgICAyMTUsIDE0LCAyMTMsIDEwNSwgMjE1LCAxNCwgMjEzLCAxMDUsIDUzLCAyMTUsIDE0LCAyMTMsIDEwNSwgMjA1LCA4MywgCisgICAgMjE1LCAxNCwgMjQ3LCAxMjksIDIwOSwgMTM5LCAyMjUsIDIzLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjA5LCAxMzksIAorICAgIDIxMywgNDEsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMTMsIDE2NiwgODEsIDUzLCAyMzgsIDQzLCA4MSwgMjI4LCA1OCwgCisgICAgMjE2LCAyNDEsIDIwMywgMjQ4LCAxNzEsIDIwNiwgNywgMjQ3LCAxMzAsIDIyOCwgNzUsIDIxNSwgOTksIDI1MCwgMTYzLCAKKyAgICAyMzMsIDM0LCAyNDgsIDIwLCAyMzYsIDIxOSwgMjA5LCA3NSwgNDksIDUyLCAyNDgsIDcwLCAzLCAyMTQsIDczLCA1MSwgNTIsIAorICAgIDI0OCwgNzAsIDMsIDIxNCwgNzMsIDUzLCAyMTQsIDc5LCA4MSwgMjE0LCA3OSwgMjM4LCA0MywgODEsIDIzOCwgNDMsIDIxNCwgCisgICAgNzksIDgxLCAyMDUsIDIxNiwgMiwgMjM4LCA4MSwgMjEzLCAxMDUsIDIxNSwgMTYzLCA1NCwgNjMsIDk4LCAyNDgsIDIwLCAKKyAgICA2MywgODcsIDI0OCwgMjAsIDEyOCwgMjUwLCAxNjUsIDIxMywgMTA1LCAyMTAsIDE2NywgMjQ2LCAxMTEsIDIwMywgMjI4LCAKKyAgICAxMjAsIDI1MCwgMTY0LCAyNTEsIDEyOCwgMjAyLCAyNDcsIDI0NiwgNjgsIDIyMSwgMTU3LCA1NCwgMjA3LCAxNjcsIDI0MSwgCisgICAgMjQ0LCAyMjgsIDUwLCAyMDMsIDI0OCwgMjM3LCAyNSwgMjE0LCAyMTIsIDgxLCAxMjYsIDczLCAyMTQsIDIxMSwgMjE0LCAKKyAgICA5MCwgMjE1LCAxNCwgMjM2LCAyMjksIDczLCAyMTQsIDIxMSwgMjM3LCA2MSwgNzMsIDIxNCwgMjExLCAxMjAsIDczLCAyMTQsIAorICAgIDIxMSwgMjM2LCAyMjksIDczLCA4MSwgMjM5LCAxODAsIDI0MiwgMjM0LCAyMDUsIDk0LCA4MywgMjM2LCAyMjksIDI0MCwgCisgICAgMTgwLCAyMjIsIDY2LCAxMywgMjA4LCAyNDQsIDIwMCwgMjM4LCAyMjcsIDE2MSwgMjM2LCAxODEsIDI1MSwgOCwgMjI4LCAKKyAgICA0OCwgMjA1LCAyMzIsIDIyOCwgNDgsIDIxMCwgMTU0LCAyMjgsIDQ4LCAyMTUsIDExMywgMjI1LCAxOSwgMjI4LCAxOCwgCisgICAgMjEzLCAzNywgMjI4LCAxOCwgMjM3LCA3MywgMjA4LCAzMywgMjI4LCAxOCwgMjE1LCA3OCwgMjQxLCA4LCAyMjgsIDE4LCAKKyAgICAyMjgsIDg3LCAyMDcsIDExNSwgMjA3LCAxODQsIDI1MSwgMjQxLCAyMDcsIDExNSwgMjA3LCAxODQsIDIyOCwgODcsIDksIAorICAgIDIzNiwgMjQyLCAyMTAsIDg0LCAyNTEsIDI0MSwgOSwgMjM2LCAyNDIsIDIxMCwgODQsIDIyMCwgMTE4LCAxNywgMjEwLCA4NSwgCisgICAgMjE4LCAyMzYsIDE3LCAyMTAsIDg1LCAyMDcsIDIxMywgMTk5LCA4MSwgMjA3LCAyMTMsIDgsIDQsIDEsIDcwLCAyMDcsIAorICAgIDIxMywgMTQ5LCAyMDcsIDIxMywgMTY0LCAyMDcsIDIxMywgMTg3LCAyMDcsIDIxMywgMjEwLCAxMzUsIDIwNywgMjEzLCAKKyAgICAxOTIsIDIwNywgMjEzLCAyMTksIDExMywgMjA3LCAyMTMsIDkzLCA1NCwgMjA3LCAyMTMsIDIyMSwgMTU2LCAyMDcsIDIxMywgCisgICAgMjM4LCAxMjIsIDU0LCAyMDcsIDIxMywgNDksIDIxNiwgMTE1LCAyMDcsIDIxMywgNTEsIDIxNiwgMTE1LCAyMDcsIDIxMywgCisgICAgOCwgNCwgMSwgMjIwLCAyMTQsIDIwOCwgNCwgMTk5LCA4MSwgMjA4LCA0LCAxMDIsIDIwOCwgNCwgMTA1LCAyMDgsIDQsIAorICAgIDE0NywgMjA4LCA0LCAxNDksIDIwOCwgNCwgMTY0LCAyMDgsIDQsIDE4NywgMjA4LCA0LCAyMTAsIDEzNSwgMjA4LCA0LCAKKyAgICAxOTIsIDIwOCwgNCwgMjE5LCAxMTMsIDIwOCwgNCwgOTMsIDU0LCAyMDgsIDQsIDIyMSwgMTU2LCAyMDgsIDQsIDIzOCwgCisgICAgMTIyLCA1NCwgMjA4LCA0LCA0OSwgMjE2LCAxMTUsIDIwOCwgNCwgNTEsIDIxNiwgMTE1LCA4LCAyMDgsIDQsIDQsIDEsIDYyLCAKKyAgICA4LCAyMDgsIDQsIDQsIDEsIDcyLCA4LCAyMDgsIDQsIDQsIDEsIDc0LCA4LCAyMDgsIDQsIDQsIDEsIDIwMCwgMTk1LCA4LCAKKyAgICAyMDgsIDQsIDQsIDEsIDIxMSwgMjE4LCA4LCAyMDgsIDQsIDQsIDEsIDIzNCwgMjQ3LCA4LCAyMDgsIDQsIDQsIDEsIDIyNywgCisgICAgMTE4LCA4LCAyMDgsIDQsIDQsIDEsIDE1NiwgOCwgMjA4LCA0LCA0LCAxLCAyMjMsIDI0MywgOCwgMjA4LCA0LCA0LCAxLCAKKyAgICAyMjAsIDIxNCwgOCwgMjA4LCA0LCA0LCAxLCAyMTYsIDIyNiwgOCwgMjA4LCA0LCA0LCAxLCAyMTIsIDEyMiwgOCwgMjA4LCAKKyAgICA0LCA0LCAxLCAyMDcsIDgzLCAyMzgsIDYwLCA1NCwgMjQ2LCA4MCwgNTQsIDI0MiwgMjE5LCA1NCwgMjM2LCAyMDksIDIzNiwgCisgICAgMjEzLCA1NCwgMjI0LCAxNTYsIDU0LCAyMjEsIDE3MSwgNTQsIDIyMCwgMTQxLCA1NCwgMjE2LCA1LCA1NCwgMjEyLCAxNDksIAorICAgIDU0LCAyMDAsIDI0NiwgNTQsIDIyMCwgOCwgMjEwLCA1MSwgNTQsIDI0MCwgMTg5LCA1NCwgMjM4LCA2MSwgNTQsIDIyNiwgCisgICAgMTQyLCA1NCwgMjA0LCAyMDgsIDU0LCAyMzksIDE2MywgNTQsIDIzNSwgMjQ2LCAyMTYsIDQwLCA1NCwgMjE2LCAyLCA1NCwgCisgICAgMjM1LCA0NSwgNTQsIDI1MCwgMTI5LCA1NCwgMjMzLCAxMDMsIDU0LCAyNDcsIDcxLCA1NCwgMjI0LCAxNDYsIDIwNSwgMTM4LCAKKyAgICA1NCwgMjA4LCAyMjUsIDU0LCAyMDYsIDE2NCwgNTQsIDIyOCwgMTAyLCAyMTIsIDE0OSwgNTQsIDIwNCwgMTg4LCAyMjQsIAorICAgIDE1NiwgNTQsIDIxOCwgMjIyLCAxMzQsIDU0LCAyMjIsIDE3OCwgNTQsIDIxMiwgMTcyLCA1NCwgMjI1LCA2NywgNTQsIDM4LCAKKyAgICA0OSwgMjM0LCAxNjEsIDU2LCAzOCwgNTEsIDIzNCwgMTYxLCA1NiwgMzgsIDE2OCwgODMsIDIyNCwgMTc3LCAyMTYsIDI0MiwgCisgICAgMzgsIDIwOSwgMjUwLCA4MywgMjI0LCAxNzcsIDIxNiwgMjQyLCAzOCwgMjUxLCA0NywgNTUsIDU2LCAzOCwgMjQ2LCAxMTIsIAorICAgIDU1LCA1NiwgMzgsIDQ5LCA1NSwgNTYsIDM4LCA1MSwgNTUsIDU2LCAzOCwgMjEzLCAyNywgMjE2LCAyNDIsIDM4LCAyNDYsIAorICAgIDExMiwgMjEzLCAyNywgMjE2LCAyNDIsIDM4LCAyNTEsIDQ3LCAyMTMsIDI3LCAyMTYsIDI0MiwgMzgsIDEyNiwgMTkwLCA1NiwgCisgICAgMzgsIDIzNiwgMjI5LCAxOTAsIDU2LCAzOCwgMjM4LCAxNzUsIDI0NiwgMTU1LCAzOCwgMjM4LCAxNzUsIDIwOCwgMTkzLCAKKyAgICAzOCwgMjM4LCAxNzUsIDI0MSwgNjQsIDM4LCAyMzgsIDE3NSwgMjQ2LCAxNTYsIDI0OSwgMTI0LCAzOCwgNDksIDUxLCA1NSwgCisgICAgNTYsIDM4LCAyMzgsIDE3NSwgMjExLCAyMDksIDM4LCAyMzgsIDE3NSwgMjI2LCAyMTAsIDM4LCAyMzgsIDE3NSwgMjAzLCAKKyAgICAyMTgsIDIxNSwgOTYsIDIwNSwgOTgsIDM4LCAyMTMsIDEwNiwgMjA5LCAxNywgMjE2LCAyNDIsIDM4LCA1MywgODMsIDIwOCwgCisgICAgNDcsIDIxNiwgMjQyLCAzOCwgMjUxLCA1NywgOTksIDM4LCAyMDUsIDgzLCAyMDMsIDI1MCwgMzgsIDIwMSwgMjgsIDI0OCwgCisgICAgNTEsIDU2LCAzOCwgOTgsIDU1LCAyMTYsIDI0MiwgMzgsIDE2OCwgNTMsIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgODcsIAorICAgIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY1LCAzOCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY1LCAzOCwgNDksIAorICAgIDU1LCA1NywgMzgsIDUxLCA1NSwgNTcsIDM4LCAyNTAsIDE2NiwgNTYsIDI1MSwgMjQ3LCAyMTcsIDExNywgMjUxLCAyMzEsIAorICAgIDIwNSwgMTg2LCAyMDYsIDEwNywgMjA4LCAxMywgMTc1LCA2LCAyNDcsIDIyMywgMjQxLCAxNTUsIDI0NywgNjEsIDI0NywgCisgICAgNTYsIDIyNCwgMTc3LCA5OSwgMjQ3LCAxMzEsIDIxNywgMTE3LCAyNDcsIDE4MiwgMjA0LCA0LCAyMzgsIDYyLCAyNDMsIDUwLCAKKyAgICAyMTEsIDIwNiwgMjQxLCAxNTUsIDIzNywgMTc3LCAxMzUsIDQsIDIzNiwgMTU2LCAxMzUsIDYsIDIzNCwgMjQ3LCAyNDgsIAorICAgIDE0MiwgNiwgMjM0LCAyNDcsIDE3NSwgNiwgMjM0LCAyNDcsIDIxNSwgMTMwLCAyNDMsIDUwLCAyMTUsIDEzMCwgMjQzLCA1MSwgCisgICAgMTE5LCAxMjAsIDIxNSwgMjA0LCAxMzUsIDYsIDcwLCAyNDgsIDE0MiwgNiwgNzAsIDEzNSwgNiwgMTU2LCAxMzUsIDQsIAorICAgIDE1NiwgMjI1LCAxOTMsIDY4LCAyNDksIDc3LCA5OSwgMTc1LCA2LCAyMjAsIDIxNCwgMjE4LCA5MSwgNTQsIDIwOSwgMSwgCisgICAgMjEzLCAxNzgsIDI0MywgMTgsIDEzNSwgNiwgMjE2LCAyMjYsIDE3NSwgNiwgMjE2LCAyMjYsIDE3NSwgNiwgMjE0LCAxNjcsIAorICAgIDEzNSwgNiwgMTQ2LCAyNDgsIDE0MiwgNiwgMTQ2LCAxNzUsIDYsIDE0NiwgMjE1LCAyMSwgMjA2LCAyNTUsIDIxMywgMTE4LCAKKyAgICAyMTAsIDE0NiwgODEsIDIwNiwgMTc2LCA1NCwgMjA1LCAxMjgsIDEzNCwgNTQsIDIwMywgNDMsIDE3NSwgNiwgMTk5LCAxNTcsIAorICAgIDIxNywgMiwgNTQsIDIxNywgMTA3LCA1NCwgMjI4LCA1MCwgMjE3LCAxMDcsIDU0LCAyNDgsIDE0MiwgNiwgMTk5LCAxNTcsIAorICAgIDIwNCwgMTg1LCAzMSwgNCwgMSwgMjI4LCA0MSwgMjI2LCAyNTEsIDU0LCAyNTEsIDY2LCA1NCwgMTM1LCA2LCAyNTAsIDEwMywgCisgICAgMjQ4LCAxNDIsIDYsIDI0NywgMjIzLCAyMzgsIDg2LCA5OSwgMTM1LCA0LCA3MiwgMTM1LCA2LCA3MiwgMTM1LCA2LCAyMzgsIAorICAgIDUsIDIwNCwgMTg1LCA2LCAyMzgsIDUsIDEzNSwgNiwgMjIzLCAyNDMsIDEzNSwgNCwgNzQsIDE0MCwgOTksIDI0OCwgMjExLCAKKyAgICA5OSwgMjM1LCAxNDgsIDk5LCAyNDIsIDI0LCA5OSwgMjI4LCA5MiwgMjA4LCAyNTUsIDIxMiwgMjI4LCA2LCAyMTQsIDE2NywgCisgICAgMjM3LCAxODAsIDU0LCAxNzUsIDQsIDIxNSwgMjA0LCAxNzUsIDQsIDIzNiwgNjAsIDE3NSwgNiwgMjM2LCA2MCwgMTc1LCA2LCAKKyAgICAyMTUsIDIwNCwgMTc1LCAyMjAsIDIxMywgMjA3LCAyMzEsIDIwNCwgMTg1LCA0MywgNiwgMjM2LCAxNTYsIDIwNCwgMTg1LCAKKyAgICA0MywgNiwgMTU2LCAyMTMsIDEwNSwgNDMsIDYsIDE1NiwgMjA0LCAxODUsIDQzLCA2LCAyMDAsIDEyMywgMTc1LCAzOSwgNiwgCisgICAgMjQyLCAxNTMsIDE3NSwgMzksIDQsIDI0MiwgMTUzLCAxNzUsIDM5LCA0LCA3MiwgMTc1LCAzOSwgNCwgNzAsIDE3NSwgMzksIAorICAgIDQsIDIyNywgMjUxLCAyMTQsIDI0NSwgMjI0LCAxNzYsIDIwNCwgMTg1LCAyNTEsIDg5LCAyMTYsIDI4LCA1NCwgMjUxLCAKKyAgICAxNTMsIDIwNCwgMTg1LCA0LCAyMzgsIDUsIDE2LCAzNiwgMjEyLCAyMiwgMjA4LCAyNTUsIDIwMSwgMTY0LCAyMzYsIDIxOSwgCisgICAgMTEyLCAyMTAsIDEzMSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIxOSwgMTA3LCAyMDEsIDE2NCwgMjM2LCAyMTksIAorICAgIDExMiwgMjA2LCAxNTcsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMDYsIDc0LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyMCwgCisgICAgMjA2LCA3MSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIzNywgMTA3LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyMCwgMjM3LCAKKyAgICAxMDYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTI2LCAyMzcsIDEwNiwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMzYsIDIyOSwgCisgICAgMjM3LCAxMDYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMDksIDk2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIzNywgNjEsIAorICAgIDIwOSwgOTQsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMzgsIDIyNywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjYsIDIzOCwgCisgICAgMjI1LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIzNywgNjEsIDIzOCwgMjI1LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIxMCwgMTM2LCAKKyAgICAyMzgsIDIyNSwgMjM2LCAyMTksIDIxOCwgOTIsIDEwMiwgMjEyLCAyNDAsIDIxOCwgOTMsIDEwMiwgMjEyLCAyNDAsIDIxOCwgCisgICAgOTMsIDEwNSwgMjEyLCAyNDAsIDIxOCwgOTMsIDE0NywgMjEyLCAyNDAsIDIxOCwgOTMsIDE0OSwgMjEyLCAyNDAsIDIxOCwgCisgICAgOTMsIDE2NCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE4NywgMjEyLCAyNDAsIDIxOCwgOTMsIDIxMCwgMTM1LCAyMTIsIDI0MCwgCisgICAgMjE4LCA5MywgMTkyLCAyMTIsIDI0MCwgMjE4LCA5MywgMjE5LCAxMTMsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDYsIDE2NiwgCisgICAgMjEyLCAyNDAsIDIxOCwgOTMsIDIzOCwgMTk5LCAyMTIsIDI0MCwgMjE4LCA5MywgMjA0LCAxNjQsIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAyMzcsIDEwNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjMzLCA4MiwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgCisgICAgNjEsIDIzMywgODIsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIwNiwgNTAsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMDIsIAorICAgIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMDUsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNDcsIDQsIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAxNDksIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNjQsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxODcsIDQsIDIxMiwgCisgICAgMjQwLCAyMTgsIDkzLCAyMTAsIDEzNSwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE5MiwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIAorICAgIDIxOSwgMTEzLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjA2LCAxNjYsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzgsIDE5OSwgCisgICAgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNCwgMTY0LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCAxMDQsIDQsIDIxMiwgCisgICAgMjQwLCAyMTgsIDkzLCAxMTIsIDIzMywgODIsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDYxLCAyMzMsIDgyLCA0LCAKKyAgICAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMDYsIDUwLCAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMDYsIDUxLCAyNDcsIAorICAgIDIyNCwgMjQyLCAxNTMsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDYxLCAyMDYsIDUwLCAyMTIsIDI0MCwgMjE4LCA5MywgCisgICAgMjA2LCAxNjcsIDIwNiwgNTAsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMTMsIDEwNSwgMTEyLCAyMzMsIDgyLCA4LCA0LCAxLCAKKyAgICAyMTMsIDEwNSwgMjQ3LCAyMjMsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDksIDEwNiwgMjI1LCA2MiwgMTksIDIxMiwgMjQwLCAKKyAgICAyMTgsIDkzLCAyMzcsIDEwNSwgMjM5LCAyMCwgMTksIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDEwNSwgMjA2LCA1MCwgCisgICAgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjMzLCA4MywgMjA2LCA1MCwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxOTksIDgyLCAKKyAgICAyMDYsIDcxLCAyMDQsIDE4NSwgMTcsIDEwNSwgMjA0LCAxODUsIDE3LCAxNDcsIDk4LCA0OCwgMTgyLCA0OCwgODcsIDQ4LCAKKyAgICAxOTEsIDQ4LCA0OSwgNTEsIDQ4LCAxMTUsIDEyNywgNDgsIDE1NywgMjAxLCA0OCwgNDgsIDE1NywgMjM5LCAxNCwgNDgsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDQ4LCA5OCwgNTUsIDMsIDk3LCA4NywgNTUsIDMsIAorICAgIDk3LCA5OCwgMjAxLCA3OCwgNDgsIDg3LCAyMDEsIDc4LCA0OCwgOTgsIDEyMCwgMjM0LCAxMzQsIDQ4LCAxODIsIDEyMCwgCisgICAgMjM0LCAxMzQsIDQ4LCA4NywgMTIwLCAyMzQsIDEzNCwgNDgsIDE5MSwgMTIwLCAyMzQsIDEzNCwgNDgsIDk4LCA1NSwgMywgCisgICAgMjA3LCA2LCA4NywgNTUsIDMsIDIwNywgNiwgOTgsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDU1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA4NywgNTUsIDIzNiwgMjAxLCAxNDgsIDE5MSwgNTUsIDIzNiwgMjAxLCAxNDgsIDExNSwgMTI3LCA1NSwgMywgMjQ5LCA2NCwgCisgICAgOTgsIDU1LCAzLCAxMTcsIDg3LCA1NSwgMywgMTE3LCA5OCwgNTUsIDMsIDIyNCwgNzQsIDg3LCA1NSwgMywgMjI0LCA3NCwgCisgICAgNDksIDUxLCAyMDEsIDc4LCA0OCwgNDksIDUxLCA1NSwgMywgOTcsIDE5MSwgMTk5LCAyNywgNDgsIDE4MiwgNTUsIDMsIAorICAgIDIwNSwgMjI0LCAyMjUsIDE4LCAxODIsIDU1LCAzLCAyMDUsIDIyNCwgMjEzLCAzNSwgMTkxLCA1NSwgMywgMjA1LCAyMjQsIAorICAgIDIyNSwgMTgsIDE5MSwgNTUsIDMsIDIwNSwgMjI0LCAyMTMsIDM1LCA4NywgNTUsIDMsIDI0MywgMTYsIDIzOSwgMTY1LCAKKyAgICAxOTEsIDU1LCAzLCAyNDMsIDE2LCAyMjUsIDE4LCAyNTEsIDQ3LCAyMDUsIDE1OCwgMjEwLCAxNzAsIDQ4LCAyNDYsIDExMiwgCisgICAgMjA1LCAxNTgsIDIxMCwgMTcwLCA0OCwgMTU3LCAyMDEsIDQ4LCA1NSwgMjA1LCAxODYsIDE2OCwgMTQ4LCA5OCwgNTUsIAorICAgIDIwNSwgMTg2LCAyNDksIDc3LCAxMTksIDg3LCA1NSwgMjA1LCAxODYsIDE0OCwgMjUxLCA0NywgMTc2LCAyNDYsIDE1NiwgCisgICAgNDgsIDI0NiwgMTEyLCAxNzYsIDI0NiwgMTU2LCA0OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDIwMywgMjE2LCA5OCwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgMjM5LCAxNjUsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCAzNSwgMTgyLCAyMzQsIDE2MSwgMywgCisgICAgMTU0LCAyMjUsIDE4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjAzLCAyMTYsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAyMzksIAorICAgIDE2NSwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDM1LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDIyNSwgMTgsIDg3LCAKKyAgICA1NSwgMTE5LCA5OCwgNDgsIDE4MiwgNTUsIDk4LCA3NiwgMTkxLCA0OCwgOTgsIDU1LCAxMTksIDg3LCA0OCwgOTgsIDIxNiwgCisgICAgMTg4LCAyNTAsIDE5OSwgMTgyLCAyMTYsIDE4OCwgMjUwLCAxOTksIDg3LCAyMTYsIDE4OCwgMjUwLCAxOTksIDE5MSwgMjE2LCAKKyAgICAxODgsIDI1MCwgMTk5LCA5OCwgMjM0LCAxNjEsIDExOSwgODcsIDIzNCwgMTYwLCA4NywgMjM0LCAxNjEsIDExOSwgOTgsIAorICAgIDIzNCwgMTYwLCA5OCwgNTMsIDU1LCAzLCA5NywgNDksIDUxLCA1MywgNTUsIDMsIDk3LCA4NywgNTMsIDU1LCAzLCA5NywgCisgICAgOTgsIDUzLCA0OCwgMTgyLCA1MywgNDgsIDg3LCA1MywgNDgsIDE5MSwgNTMsIDQ4LCA0OSwgNTEsIDUzLCA0OCwgMTE1LCAKKyAgICAxMjcsIDUzLCA0OCwgMTU3LCAyMDEsIDQ4LCA1MywgNDgsIDE1NywgMjM5LCAxNCwgNTMsIDQ4LCAyMDgsIDI1NCwgMjM5LCAKKyAgICAxNCwgNTMsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgNTMsIDQ4LCA5OCwgMjA1LCA4MywgNDgsIDg3LCAyMDUsIDgzLCA0OCwgCisgICAgOTgsIDIwOCwgMTg2LCA0OCwgODcsIDIwOCwgMTg2LCA0OCwgMTgyLCA1NSwgMywgNTMsIDk3LCAxOTEsIDU1LCAzLCA1MywgCisgICAgOTcsIDk4LCAyNDEsIDI0MywgNDgsIDE4MiwgMjQxLCAyNDMsIDQ4LCA4NywgMjQxLCAyNDMsIDQ4LCAxOTEsIDI0MSwgMjQzLCAKKyAgICA0OCwgOTgsIDU1LCAyMDUsIDE4NiwgMTQ4LCA4NywgNTUsIDIwNSwgMTg2LCAxNDgsIDk4LCA2NCwgNDgsIDE4MiwgNjQsIAorICAgIDQ4LCA4NywgNjQsIDQ4LCAxOTEsIDY0LCA0OCwgMTgyLCA2NCwgNTUsIDIzNiwgMjAxLCAxNDgsIDE4MiwgNjQsIDU1LCAKKyAgICAyMTcsIDc5LCAyMTYsIDY0LCAxODIsIDY0LCA1NSwgMjE3LCA3OSwgMjE2LCA2NSwgMywgMjMzLCAxNzcsIDE0OCwgMTgyLCAKKyAgICA2NCwgNTUsIDIxNywgNzksIDIxNiwgNjUsIDMsIDgzLCAxNDgsIDE4MiwgNjQsIDUzLCA0OCwgMTgyLCA2NCwgNTMsIDU1LCAKKyAgICAyMTcsIDc5LCAyMTYsIDY0LCA4NywgNjQsIDU1LCAyMzYsIDIwMSwgMjAxLCAxMDIsIDE1NywgMjAxLCA0OCwgNTUsIDIwNSwgCisgICAgMTg2LCAyNDMsIDE1LCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDIwNSwgMTg2LCAyNDMsIDE1LCAxMTUsIDEyNywgNjQsIDQ4LCAKKyAgICA1MSwgNTUsIDMsIDQsIDI0NiwgMTU1LCAxOTEsIDU1LCA5OCwgNzYsIDE4MiwgNDgsIDEyNiwgODcsIDI1MCwgMTk5LCA5OCwgCisgICAgNTUsIDMsIDgzLCA5NywgODcsIDU1LCAzLCA4MywgOTcsIDQ5LCA1MSwgNTUsIDMsIDgzLCA5NywgOTgsIDU1LCAzLCA1MywgCisgICAgODMsIDk3LCA4NywgNTUsIDMsIDUzLCA4MywgOTcsIDQ5LCA1MSwgNTUsIDMsIDUzLCA4MywgOTcsIDk4LCAyMTcsIDUxLCAKKyAgICA0OCwgODcsIDIxNywgNTEsIDQ4LCA0OSwgNTEsIDIxNywgNTEsIDQ4LCAzNiwgMjUxLCAxMjQsIDI0NiwgNjUsIDIxNiwgCisgICAgMTA4LCAyNDEsIDQ4LCAyMDYsIDk3LCAyMzgsIDM4LCAyMDYsIDk3LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIzOCwgMzksIAorICAgIDIzOCwgMTgxLCAyMTAsIDE0MSwgMjI4LCAxMDYsIDIyMCwgMTUyLCAyMzgsIDIwMiwgMjE3LCAxMTcsIDIxOCwgMjE1LCAKKyAgICAyNTEsIDg2LCAyMzgsIDIwMiwgMjE3LCAxMTcsIDQsIDIzOCwgMjAyLCAyMTcsIDExNywgMjQzLCA0NCwgMjUwLCAxODksIAorICAgIDIyMiwgNDQsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQzLCA0NiwgMjUwLCAxODksIDIyMiwgNDQsIDQsIDI0MywgNDQsIDI1MCwgCisgICAgMTg5LCAyMjIsIDQ0LCAyMzgsIDE3MSwgNzYsIDIxNCwgMjQ3LCAyMjAsIDIxMywgMjE1LCAxLCAyMjAsIDIxMywgMjQzLCAKKyAgICAyMSwgMjIwLCAyMTMsIDIwNywgMjMxLCAyMjEsIDE1NywgNTQsIDIyMSwgMTU1LCA1NCwgNzMsIDIxNSwgMTEzLCAyNDAsIAorICAgIDIzNSwgMjA5LCA3NSwgMjEwLCAxNDIsIDIyMSwgMTU2LCAyNTAsIDE2NiwgMjE3LCA0MywgMjEzLCAyNywgMjE3LCA0MywgCisgICAgMjQ4LCAyMSwgMjE3LCA0MywgNTIsIDIxMiwgMjM0LCAyNDIsIDIxMCwgMjEyLCAyMzQsIDIzNiwgMjIyLCAyMTIsIDIzNCwgCisgICAgMjE0LCAyNDMsIDEzOCwgMjI4LCA5NCwgNTEsIDI1MSwgNzAsIDI1MSwgNzAsIDIyMiwgNzMsIDI1MSwgNzAsIDIwOCwgMjI0LCAKKyAgICAyNTEsIDcwLCAyNDAsIDIzNywgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDAsIDI0MSwgMjE2LCAxMjEsIDEzOCwgMjE4LCAyMTUsIAorICAgIDIxNiwgMTIxLCAxMzgsIDIyNCwgOTgsIDI1MSwgNzksIDIyNCwgOTgsIDIxNywgMzMsIDIyOCwgNTUsIDIwMywgMjQxLCAKKyAgICAyMjgsIDY5LCA1MywgMjI4LCA2OSwgMjA1LCA4MywgMjI4LCA2OSwgMjQzLCAzOCwgMjI4LCA2OSwgMjA3LCAyMDMsIDIyOCwgCisgICAgNjksIDIwMiwgMTgxLCAyMjgsIDY5LCAyNDYsIDExMiwgMjI4LCA2OSwgMjQ2LCAxMTIsIDI0MywgMzgsIDIyOCwgNjksIAorICAgIDI1MSwgNDcsIDI0MywgMzgsIDIyOCwgNjksIDIwNiwgOTYsIDI0OCwgMjU0LCAyMTMsIDIwMCwgMjE0LCAyNDQsIDczLCAKKyAgICAyMjEsIDE1NiwgMjM4LCA0NiwgMjM1LCAyNTIsIDIxNCwgMjQ0LCAyMzMsIDE5MiwgMjA1LCAyNDEsIDIxNywgNDMsIDIxMywgCisgICAgMTA1LCAyMDUsIDI0MCwgMjI4LCA1MCwgMjI1LCA0NywgMjEyLCAxMjIsIDIwOSwgMTQxLCAyMDEsIDc3LCAyMDAsIDIyNiwgCisgICAgMjE1LCAxLCAyMTgsIDIxNSwgMjA1LCAyNDAsIDIyMSwgMTU3LCAyMDUsIDI0MCwgMjUwLCAxNTksIDE2MCwgMTM4LCAyMTgsIAorICAgIDIxNSwgMjUwLCAxNTksIDE2MCwgMTM4LCAyNTEsIDQsIDE2MCwgMTM4LCAyNTEsIDQsIDI0NywgMjQ3LCAyMTgsIDIxNSwgCisgICAgMjUxLCAyNDAsIDE2MCwgMTM4LCAyMjAsIDI2LCAyNTEsIDQsIDIxOCwgMjI0LCAyNTEsIDI0MCwgMTYwLCAxMzgsIDI1MSwgCisgICAgMTE3LCAxNjAsIDEzOCwgMjE4LCAyMTUsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjUxLCAxMTcsIDE2MCwgMjE3LCAzNCwgMTYwLCAKKyAgICAxMzgsIDIwNSwgODMsIDIwNSwgMjQwLCAyNTEsIDEyNSwgMTYwLCAxMzgsIDIzOCwgMTE3LCAxMzgsIDIzNSwgMjUxLCAyMzgsIAorICAgIDExNywgMTM4LCAyNDEsIDQ5LCAyNDgsIDIwNSwgMjUxLCA2LCAyMDYsIDEwNywgMjI0LCAxODQsIDIzNSwgMjUxLCAxNjAsIAorICAgIDEzOCwgMjUxLCA0LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMDYsIDEwNywgMjI4LCAxMzMsIDIxNywgMTE3LCAyMjgsIAorICAgIDEzMywgNzYsIDIxNywgMzQsIDI1MSwgNCwgMTYwLCAxMzgsIDI0NiwgODAsIDIzOCwgMTIxLCAyMzgsIDEyMiwgMjQ2LCA3OSwgCisgICAgMjEzLCAyNywgMjI4LCAxMTgsIDE2MCwgMTM4LCAyMTMsIDI3LCAxNjAsIDEzOCwgMjQzLCA5LCAxMzgsIDIzOCwgODUsIAorICAgIDIzOCwgMTIwLCAxMzgsIDIwOCwgMTEwLCAyMzgsIDEyMSwgMjQxLCAxMzcsIDE2MCwgMTM4LCAxNjAsIDIwNSwgMTg2LCAKKyAgICAyNDcsIDIzNSwgMjQxLCAxNTYsIDIyMiwgNzMsIDI0NywgMjM0LCAyMTQsIDc3LCAxNjAsIDEzOCwgMjE4LCAyMTUsIDE2MCwgCisgICAgMTM4LCAyMzIsIDIyMywgMTM4LCAyMTgsIDIxNSwgMjMyLCAyMjMsIDEzOCwgMjA4LCA1NCwgMjM4LCAxMTcsIDEzOCwgMjI0LCAKKyAgICAyNDEsIDIxNywgMzQsIDE2MCwgMTM4LCAyMzUsIDY3LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDExOSwgMTYwLCAKKyAgICAxMzgsIDIzNSwgNjcsIDExOSwgMTYwLCAxMzgsIDIyNCwgMjQxLCAyNDcsIDI0NywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMzUsIAorICAgIDY3LCAyNDcsIDI0NywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMjEsIDM1LCAyMjQsIDI0MCwgMjIxLCAzNSwgMjM1LCA2NiwgCisgICAgMjQ4LCAyMDUsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMTgsIDIxNSwgMjI0LCAyNDAsIDIxOCwgMjE1LCAyMzUsIDY2LCAKKyAgICAyMjAsIDI2LCAyMjQsIDI0MSwgMjE4LCAyMjQsIDE2MCwgMTM4LCAyMjAsIDI2LCAyMzUsIDY3LCAyMTgsIDIyNCwgMTYwLCAKKyAgICAxMzgsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMzgsIDExNywgMTM4LCAyMzUsIDY3LCAyMTcsIDM0LCAyMzgsIDExNywgMTM4LCAKKyAgICAyMjAsIDI2LCAyMjQsIDI0MSwgMjE4LCAyMjQsIDIzOCwgMTE3LCAxMzgsIDIyMCwgMjYsIDIzNSwgNjcsIDIxOCwgMjI0LCAKKyAgICAyMzgsIDExNywgMTM4LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjM1LCA2NiwgMjM1LCA2NywgMjE3LCAzNCwgMjI0LCAyNDAsIAorICAgIDIyMCwgMjYsIDIyNCwgMjQxLCAyMTgsIDIyNCwgMjM1LCA2NiwgMjIwLCAyNiwgMjM1LCA2NywgMjE4LCAyMjQsIDIyNCwgCisgICAgMjQwLCAyMTUsIDI4LCAyMDcsIDI1MCwgMjE1LCAyOSwgMjE3LCAzNCwgMTYwLCAxMzgsIDIwNywgMjUxLCAyMTcsIDM0LCAKKyAgICAxNjAsIDEzOCwgMjE1LCAyOSwgMjE3LCAzNCwgMjM4LCAxMTcsIDEzOCwgMjA3LCAyNTEsIDIxNywgMzQsIDIzOCwgMTE3LCAKKyAgICAxMzgsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjE1LCAzMSwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMDcsIDI1MiwgMjA4LCAzLCAKKyAgICAyMTcsIDExNywgMjA3LCAyMTIsIDIxNywgMTE3LCAyMTgsIDIxNSwgMzUsIDIwOCwgMywgMjE3LCAxMTcsIDIxOCwgMjE1LCAKKyAgICAzNSwgMjA3LCAyMTIsIDIxNywgMTE3LCAyMDgsIDMsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjA3LCAyMTIsIDc2LCAyMTcsIAorICAgIDM0LCAxNjAsIDEzOCwgMjIwLCAyNiwgMzUsIDIwOCwgMywgNzYsIDIxOCwgMjI0LCAxNjAsIDEzOCwgMjIwLCAyNiwgMzUsIAorICAgIDIwNywgMjEyLCA3NiwgMjE4LCAyMjQsIDE2MCwgMTM4LCAyMDgsIDMsIDc2LCAzLCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgCisgICAgMjEyLCA3NiwgMywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMjEsIDE2LCAyMjEsIDE3LCAyMjEsIDE4LCAyMjEsIDE3LCAyMDMsIAorICAgIDI0MSwgNTIsIDIyOCwgMTMzLCAyMTcsIDExNywgNTIsIDIxNywgMjUsIDIxNywgMTE3LCA1MiwgMjI4LCAxMzMsIDc2LCAKKyAgICAyMTcsIDM0LCAxNjAsIDEzOCwgNTIsIDIxNywgMjUsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgNTIsIDI0NywgMTQ0LCA1MiwgCisgICAgMjQyLCAyMDIsIDQ0LCAyMTUsIDExMywgNDQsIDIyMSwgMTU2LCA0NCwgMjA1LCAyMzIsIDQ0LCAyNDAsIDIzNSwgMjA5LCAKKyAgICA3NSwgNDQsIDczLCAyMTcsIDQzLCA0NCwgMjEzLCAyNywgMjE3LCA0MywgNDQsIDI1MCwgMTY2LCAyMTcsIDQzLCA0NCwgCisgICAgMjM4LCAxMjEsIDQ0LCAyNDEsIDI0NCwgOTUsIDIxNSwgMTEzLCA5NSwgMjIxLCAxNTYsIDk1LCAyMDUsIDIzMiwgOTUsIDczLCAKKyAgICAyMTcsIDQzLCA1MSwgMjA3LCAxNywgNDksIDIwNywgMTcsIDEyNywgMjA3LCAxNywgMTE1LCAyMDcsIDE3LCAyNTAsIDE2OSwgCisgICAgMjIxLCAxMzEsIDIwNSwgNjEsIDIzNiwgMjQ4LCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgNTEsIDIwNCwgMTg0LCA1MywgODMsIAorICAgIDI0OSwgNzcsIDUzLCA1MSwgMjA0LCAxODQsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjE0LCAyMzgsIDIxOCwgMjE1LCAyMDUsIAorICAgIDYxLCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIzNiwgMjQ5LCAyMjAsIDI4LCA1MywgODMsIDI0OSwgNzcsIDUzLCA1MSwgMjA0LCAKKyAgICAxODQsIDIxNSwgMjksIDIwMywgMjUzLCAyMTMsIDE0OSwgMjA3LCAyNTEsIDIwMywgMjUzLCAyMTMsIDE0OSwgMjE4LCAyMjEsIAorICAgIDIwOCwgMTYsIDIxNywgMTE3LCAyNDMsIDQ0LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTUsIDIxOCwgMjIxLCAyMDgsIAorICAgIDE2LCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDI0MywgNDQsIDI1MCwgMTg5LCAyMTgsIDIyMSwgMjA4LCAxNiwgMjE3LCAzNCwgCisgICAgMTYwLCAxMzgsIDIxNywgMjUsIDIxNywgMTE3LCAyMjgsIDEzMywgMjE3LCAxMTcsIDIyMSwgMjMsIDIzNCwgOTYsIDI0MywgCisgICAgNTUsIDIyMiwgMTI1LCAyMjgsIDY2LCAyMDAsIDE1NSwgMjIwLCAxMzIsIDIxOCwgMjIzLCA1MSwgMjUxLCA3MSwgMywgMjUwLCAKKyAgICAyMzYsIDUxLCAyMDUsIDk4LCAyMjAsIDIxMywgMjI0LCA5OCwgMjUxLCA3OSwgMjIwLCAyMTMsIDIyNCwgOTgsIDIxNywgMzMsIAorICAgIDIyMCwgMjEzLCAyMjgsIDU1LCAyMjAsIDIxMywgMjAzLCAyNDEsIDI0MSwgNjUsIDIxNywgNDMsIDczLCAyMTcsIDQzLCAKKyAgICAyMDgsIDExMCwgMjE3LCA0MywgMjQwLCAyMzUsIDIwNSwgMjMyLCAyNDgsIDc5LCA0OSwgMjE4LCAyMjEsIDIzNywgMTc5LCAKKyAgICAyMTAsIDE2NiwgMjE1LCAxLCA1MSwgMjE4LCAyMjEsIDIzNywgMTc5LCAyMTAsIDE2NiwgMjE1LCAxLCA0OSwgMjEwLCAxNjYsIAorICAgIDIxNSwgMSwgNTEsIDIxMCwgMTY2LCAyMTUsIDEsIDIxMywgMTA1LCAyMDUsIDI0MSwgMjM4LCAxMjEsIDI0MiwgMTk2LCAKKyAgICAyMjQsIDk4LCAyMTcsIDMzLCAyNDIsIDE5NiwgMjI0LCA5OCwgMjUxLCA3OSwgNTMsIDIwOCwgMiwgNTMsIDIwNywgMjExLCAKKyAgICA1MywgMjI4LCA1NSwgNTMsIDIwMywgMjQxLCAyMTUsIDE0MCwgMTYwLCAyNiwgMjE2LCAxMjEsIDEzOCwgMjI0LCAyNDEsIDMsIAorICAgIDI0MCwgMTgyLCAyMzUsIDY3LCAzLCAyNDAsIDE4MiwgMjAyLCAyNDYsIDIyMSwgMzUsIDIyNCwgMjQwLCAyMDIsIDI0NiwgCisgICAgMjIxLCAzNSwgMjM1LCA2NiwgMjI0LCAyNDEsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIDIzNSwgNjcsIAorICAgIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMTYwLCAKKyAgICAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NiwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjE1LCAyOCwgMTYwLCAyMDUsIAorICAgIDE4NiwgMjE3LCAzNCwgMjA3LCAyNTAsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjE1LCAzMiwgMjE3LCAzNCwgMjM4LCAxMjMsIAorICAgIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjA3LCAyNTMsIDIxNywgMzQsIDIzOCwgMTIzLCAyMTgsIDIxNSwgNTIsIDIyOCwgMTMzLCAKKyAgICA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDIxOCwgMjE1LCA1MiwgMjE3LCAyNSwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCA1MiwgCisgICAgMjI4LCAxMzMsIDc2LCAyMTcsIDM0LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDUyLCAyMTcsIDI1LCA3NiwgMjE3LCAzNCwgMjE4LCAKKyAgICAyMTUsIDE2MCwgMTM4LCAyMjQsIDI0MSwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMzUsIDY3LCAyNDcsIAorICAgIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIDIxNSwgMjksIDI0NywgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgCisgICAgMjA3LCAyNTEsIDI0NywgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjE4LCAyMTUsIDIxOCwgMjIxLCAyMDgsIDE2LCAKKyAgICAyMTcsIDExNywgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDMsIDQ2LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTUsIDIxOCwgCisgICAgMjE1LCAyMTgsIDIyMSwgMjA4LCAxNiwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MywgCisgICAgNDYsIDI1MCwgMTg5LCAyMTgsIDIyMSwgMjA4LCAxNiwgMjE3LCAzNCwgMjM4LCAxMjMsIDgzLCAyMzgsIDE5NSwgMjIxLCAKKyAgICAyMDIsIDIzMywgMTc3LCAyMzgsIDE5NSwgMTE1LCA1MSwgMjQxLCA3MSwgMjM4LCAxOTUsIDEyNywgNTEsIDI0MSwgNzEsIAorICAgIDIzOCwgMTk1LCAyMzgsIDIwMiwgNzYsIDMsIDE2OCwgMjMzLCAxNzcsIDk3LCAyMzgsIDIwMiwgNzYsIDMsIDgzLCAyNDksIAorICAgIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDQsIDIzOCwgMjAyLCA3NiwgMywgODMsIDI0OSwgCisgICAgNzcsIDI1MCwgMTU2LCAyMzgsIDE3MSwgNzYsIDIzMywgMTc3LCA5NywgMjM4LCAyMDIsIDc2LCAzLCA3MywgNTYsIDIzOCwgCisgICAgMjAyLCA3NiwgMywgMjE2LCAyNDYsIDQsIDIzOCwgMjAyLCA3NiwgMywgMjE2LCAyNDYsIDIzOCwgMjAyLCA3NiwgMywgMjAzLCAKKyAgICAyNTEsIDIzOCwgMjAyLCA3NiwgMywgMTIwLCAyMzMsIDE3NywgMjA4LCAzNCwgMjQzLCA0NCwgMywgMTY4LCAyMzMsIDE3NywgCisgICAgOTcsIDI0MywgNDQsIDMsIDgzLCAyNDksIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDQsIAorICAgIDI0MywgNDQsIDMsIDgzLCAyNDksIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDI0MywgNDQsIAorICAgIDMsIDIxNiwgMjQ2LCA0LCAyNDMsIDQ0LCAzLCAyMTYsIDI0NiwgMTk5LCAxNTgsIDIxOCwgMjEzLCAyNDksIDExNCwgMjIyLCAKKyAgICA0MywgMjQxLCA2NiwgNTQsIDIzOCwgMjA0LCA0OCwgMjMzLCAxMDksIDExNSwgMjUwLCAyMDIsIDEyNywgMjUwLCAyMDIsIAorICAgIDIxNCwgMjUxLCAyMTYsIDgsIDIwMSwgNzQsIDIyNCwgMTc2LCA0OSwgMjQ3LCA2NCwgNTEsIDI0NywgNjQsIDQ5LCAyMzcsIAorICAgIDMxLCA1MSwgMjM3LCAzMSwgMjQ4LCA5MywgNTEsIDI0MiwgMjM2LCAyNDgsIDkzLCA0OSwgMjQyLCAyMzYsIDIwNSwgMTU4LCAKKyAgICA1MSwgMjQyLCAyMzYsIDIwNSwgMTU4LCA0OSwgMjQyLCAyMzYsIDIxMywgMTA1LCAyMTgsIDIxNSwgNTQsIDUyLCAyMjQsIAorICAgIDQ5LCAyNTAsIDIzNiwgMjExLCAxODMsIDIxMSwgMTkxLCAyMDYsIDE3NiwgMjEzLCAxNzksIDIxNSwgNzAsIDIyOCwgOTksIAorICAgIDIwMiwgMjIyLCAyMDgsIDE5MywgMjE1LCAxMzQsIDc2LCAyMjgsIDY1LCA1NCwgMjA0LCAxODUsIDIxOCwgMjE1LCA1NCwgCisgICAgMjAxLCA4NCwgMjMzLCAxMTEsIDIwNSwgMTU4LCA0OSwgMjQzLCAxNSwgMjA1LCAxNTgsIDUxLCAyNDMsIDE1LCAyNDgsIDkzLCAKKyAgICA0OSwgMjQzLCAxNSwgMjQ4LCA5MywgNTEsIDI0MywgMTUsIDIwNSwgMTU4LCAxNjcsIDIyOCwgNjksIDI0OCwgOTMsIDE2NywgCisgICAgMjI4LCA2OSwgMjM2LCAxOTYsIDIwOSwgNDgsIDExNSwgMjUwLCAyMDMsIDI0OCwgMjA2LCAxMjAsIDIzMywgMTc3LCAyNDksIAorICAgIDY2LCAyMTcsIDM2LCAyMjYsIDIxNCwgMjM4LCAxMTMsIDIwNSwgMTg2LCAyMDYsIDEwNywgMjEzLCA0NiwgMjAwLCAxOTYsIAorICAgIDIyOCwgMTE4LCAzNSwgMjEzLCAxNzYsIDI0OCwgNzgsIDIyNiwgMjEyLCAyMjUsIDIzLCAyNTEsIDcxLCAxNTksIDIxMywgCisgICAgNDEsIDI1MSwgNzEsIDE1OSwgMjM4LCAxMTMsIDIwNSwgMTg2LCAyMDYsIDEwNywgMjI1LCAyOCwgMjQ4LCAyMTcsIDIxMywgCisgICAgMjYsIDI0MiwgMTYzLCAyNTEsIDEyNSwgMjUwLCAyMTEsIDIwNywgMTE0LCAyMDUsIDE0MywgMjEyLCAxNTQsIDI0MSwgMjgsIAorICAgIDIxNywgMjYsIDI0MywgNTksIDIwNiwgMjM0LCAyMDksIDYxLCAyNDMsIDUsIDI0MywgNCwgMjUxLCAyMiwgMjM2LCAxNzksIAorICAgIDE2LCAyMzMsIDE2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIwOCwgMTg0LCAyMTQsIDk0LCAyNTEsIDIyLCAyMzYsIDE3OSwgCisgICAgMTYsIDIxNCwgOTUsIDIzOCwgMTIzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0MCwgMjQxLCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0MSwgNjQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjI3LCAxNTMsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQ2LCAxNTUsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAKKyAgICAxNTYsIDIwOCwgODQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDIyNywgMTUzLCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDIwOSwgNzYsIDE0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDksIDEyNSwgMTQ4LCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIwOSwgNzUsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQ5LCAxMjQsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjI0LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgCisgICAgMjM1LCA2NiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCA5OCwgMjAzLCA4MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCA4NywgCisgICAgMjAzLCA4MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCA5OCwgNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjE0LCA5NSwgODcsIDQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyNDksIDEyNCwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAxMjcsIDIwNywgMTgsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgMTM3LCAyMDgsIAorICAgIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDEyNywgMjQ3LCAxMjksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjE0LCA5NSwgMjQxLCAxMzYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTI3LCAyMDcsIDE4LCAyMjcsIDE1MywgMjUxLCAKKyAgICAyMiwgMjM2LCAxNzksIDE2LCAxODIsIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMTgyLCA0OCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIDIwNywgMTgsIDIxNiwgMjQ2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDI0MSwgMTQ5LCAyMDgsIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDExNSwgMjQ3LCAxMjksIDI1MSwgCisgICAgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQxLCAxNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAyMDcsIDE4LCAKKyAgICAyMjcsIDE1MywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxOTEsIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjE0LCA5NSwgMTkxLCA0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDYyLCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyNDEsIDEzNywgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCA2NSwgMjAzLCAyNTEsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjI3LCAxNTQsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgCisgICAgMTU2LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIDIxMCwgNiwgMjI3LCAxNTMsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjE0LCA2MiwgMjE0LCA5NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDE1NiwgMjA4LCAKKyAgICAxMDksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQ2LCA3OSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIAorICAgIDIwNywgMTgsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCAxNDksIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjA4LCAxMTAsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjI3LCAxNTQsIDI0MSwgNzQsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTI3LCAKKyAgICAyMTAsIDYsIDIwOCwgODQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgNDksIDIxMCwgNiwgMjA4LCA4NCwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMDUsIDI0MSwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMzUsIDY3LCAyNDEsIDc0LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgNzEsIDE0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDEsIDE0OSwgCisgICAgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTk5LCAyNiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMDgsIDg1LCAKKyAgICAyMDUsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTAsIDE2OCwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAKKyAgICAxNiwgMjE0LCA5NSwgMjE4LCAyMTUsIDIzOCwgMTIzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIxNCwgNzgsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTI3LCAyNDcsIDEzMCwgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMTE1LCAyNDcsIDEzMCwgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjI4LCA0MSwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyMTMsIDkwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNywgODMsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjUxLCAxMTMsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIzOCwgMTI1LCAyMDMsIDI1MSwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMjgsIDQyLCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTcsIDg0LCAyMDMsIAorICAgIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNTEsIDExMiwgMjE4LCAyMTUsIDI0NywgNywgODEsIDUxLCAyNTEsIDcxLCAKKyAgICAzLCAxOTEsIDE5OSwgMjcsIDQ4LCAyMDksIDIzMiwgMTc2LCAyNDgsIDc4LCAyNDgsIDIzMSwgOTksIDgzLCAyMjQsIDE3NywgCisgICAgMywgMTAxLCAyNDAsIDE4MiwgMjI4LCA3NSwgOTksIDI0MywgMzksIDIwMywgMjQ5LCA5OSwgMjQxLCAxLCAyMDMsIDI0OSwgCisgICAgOTksIDIzOCwgMTgzLCA5OSwgMjQzLCA3NCwgOTksIDY0LCA1MiwgMywgMjQ3LCA1NiwgODMsIDIyNCwgMTc2LCAyMzgsIAorICAgIDE1NSwgOTksIDI1MSwgMTA0LCAyMjYsIDIxNSwgOTksIDIzNCwgMTA5LCA5OSwgNDQsIDIzMywgMTc3LCAyNDksIDc3LCAzLCAKKyAgICAyMTgsIDIxMiwgNDQsIDIwNSwgOTksIDIzOSwgMTY3LCAyNDgsIDQ2LCAyNDYsIDE1NiwgMywgMjE4LCAyMTgsIDQ4LCAyMDMsIAorICAgIDI0NywgOTksIDIyMSwgOTIsIDk5LCAyMzMsIDI5LCA5OSwgMjE3LCA1MiwgMjM0LCAyNDYsIDk5LCAyMTcsIDUyLCAyMjUsIAorICAgIDE5MSwgOTksIDIxNiwgOTgsIDk5LCAyMTYsIDk3LCA5OSwgMjQxLCAxMCwgMjQyLCAxOTQsIDE2LCAyMzYsIDI0MiwgMTA1LCAKKyAgICAyMDksIDIxLCA5OSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk0LCAyNDEsIDE2OCwgMjEwLCAxNTUsIDIyNiwgCisgICAgMjE1LCA5OSwgMjE1LCAxNiwgMjE2LCAxOTUsIDIyMCwgMiwgMjE2LCAxOTUsIDIxNSwgMTEsIDIxMSwgMjEwLCA5OSwgMjQ2LCAKKyAgICAxMjcsIDIxMSwgMjEwLCA5OSwgNDksIDIxNiwgMTE2LCAyMDMsIDIyNSwgMTE3LCA0OSwgMjE2LCAxMTYsIDIzOCwgMzEsIAorICAgIDQ5LCAyMTYsIDExNiwgMjI0LCA1NCwgMTE3LCA1MSwgMjE2LCAxMTYsIDIwMywgMjI1LCAxMTcsIDUxLCAyMTYsIDExNiwgCisgICAgMjM4LCAzMSwgNTEsIDIxNiwgMTE2LCAyMjQsIDU0LCAxMTcsIDQ5LCA1MiwgMjQ4LCA3MCwgMjAzLCAyMjUsIDI0MywgMTUsIAorICAgIDQ5LCA1MiwgMjQ4LCA3MCwgMjM4LCAzMSwgNDksIDUyLCAyNDgsIDcwLCAyMjQsIDU0LCAyNDMsIDE1LCA1MSwgNTIsIDI0OCwgCisgICAgNzAsIDIwMywgMjI1LCAyNDMsIDE1LCA1MSwgNTIsIDI0OCwgNzAsIDIzOCwgMzEsIDUxLCA1MiwgMjQ4LCA3MCwgMjI0LCAKKyAgICA1NCwgMjQzLCAxNSwgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAyMDMsIDIyNSwgMTE3LCA0OSwgMjQyLCAxOTYsIDI0OCwgNzAsIAorICAgIDEwMSwgMjE1LCAxOTYsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjI0LCA1NCwgMTE3LCAyNDIsIDE5NiwgMjQ4LCA3MCwgCisgICAgMjM4LCAzMSwgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAyMDMsIDIyNSwgMTE3LCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIAorICAgIDEwMSwgMjE1LCAxOTYsIDUxLCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjI0LCA1NCwgMTE3LCAyMjgsIDcwLCAyMzgsIDMxLCAKKyAgICAyMzMsIDE3NywgMjI0LCAxNzcsIDIzOCwgMzEsIDIwMywgMjI1LCA0OSwgMjE3LCAzNCwgMjI0LCA1NCwgNTEsIDI0MiwgCisgICAgMTk2LCAyNDgsIDcwLCAyMTEsIDE5MiwgMjAzLCAyMjUsIDUxLCAyMTcsIDM0LCAyMjQsIDU0LCA0OSwgMjQyLCAxOTYsIAorICAgIDI0OCwgNzAsIDIxMSwgMTkyLCAyMDcsIDIzMiwgMjA1LCAxNTcsIDIwNywgMjMyLCAyNDgsIDkyLCAyMDUsIDE1OCwgNTIsIAorICAgIDE1OSwgMjQ4LCA5MywgNTIsIDE1OSwgMjQ4LCA5MywgNTIsIDI0OCwgNzAsIDExOSwgMjA1LCAxNTgsIDUyLCAxNTksIDQyLCAKKyAgICAxNiwgMjQ4LCA5MiwgNDksIDgzLCAxMDAsIDIyNCwgMTc2LCA1MSwgODMsIDEwMCwgMjI0LCAxNzYsIDIzMywgMTc3LCAyMTEsIAorICAgIDIyOCwgMjI0LCAxNzUsIDIzMywgMTc3LCAyMTEsIDIyOCwgMjI0LCAxNzQsIDIzMywgMTc3LCAyMTEsIDIyOCwgMjI0LCAKKyAgICAxNzMsIDIzMywgMTc3LCAyMTEsIDIyOCwgMjI0LCAxNzIsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDIwNSwgMTU4LCAKKyAgICAyMTMsIDQ2LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyNDgsIDkzLCAyMTMsIDQ2LCAyNDEsIDEyOCwgMTYsIDE2MiwgCisgICAgODMsIDMsIDI0NiwgMTU1LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzcsIDMsIDI0NiwgMTU1LCAyNDEsIAorICAgIDEyOCwgMTYsIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzcsIDMsIDI0NiwgMTU1LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDMsIAorICAgIDIwNSwgOTgsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NywgMywgMjA1LCA5OCwgMjQxLCAxMjgsIDE2LCAKKyAgICAxNjIsIDExNSwgMjYsIDIzMywgMTc3LCAzLCAyMDUsIDk4LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyMDEsIDc3LCAKKyAgICAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzcsIDMsIDIwMSwgNzcsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMTUsIAorICAgIDI2LCAyMzMsIDE3NywgMywgMjAxLCA3NywgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc2LCAyNDEsIDEyOCwgCisgICAgMTYsIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzYsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDIwNSwgMTU4LCAyMjUsIDI4LCAKKyAgICAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyNDgsIDkzLCAyMjUsIDI4LCA1MiwgMjM2LCAyNTUsIDIxMywgMTEwLCA5OSwgCisgICAgMjM4LCAyMTgsIDk5LCA4MywgMjI0LCAxNzcsIDIzOCwgMzEsIDIyMiwgMTQsIDI0OCwgNTcsIDIyMiwgMTQsIDE2OCwgMTE5LCAKKyAgICAyMDksIDI0OSwgMjIyLCAxNCwgMjA5LCAyNTAsIDExOSwgMjI0LCA4OSwgMjIyLCAxNCwgMTY4LCAxMTksIDEyMCwgMjA5LCAKKyAgICAyMzUsIDIyMiwgMTQsIDEyMCwgMjA5LCAyMzYsIDExOSwgMjI0LCA4OSwgMjIyLCAxNCwgMTIwLCAyMDksIDIzNiwgMjI3LCAKKyAgICAxNjIsIDIyMiwgMTQsIDIwNSwgNzksIDIyMiwgMTQsIDIwNiwgMTM4LCAyMjIsIDE0LCAyMTYsIDM1LCAyMzksIDE4LCAyMzUsIAorICAgIDU5LCAyMzYsIDE3MywgMjA1LCAxNTgsIDIxNiwgMTE1LCAyNDgsIDkzLCAyMTYsIDExNSwgMjA1LCAxNTgsIDI0MiwgMTk2LCAKKyAgICAxNTksIDI0OCwgOTMsIDI0MiwgMTk2LCAxNTksIDIwNSwgMTU4LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAyNDgsIDkzLCAKKyAgICAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA2NCwgMjA1LCAxMTQsIDI0OCwgMjE3LCAyMTMsIDI3LCAzLCAyNDYsIDE1NSwgCisgICAgMjA4LCA2NiwgMjM3LCA0MiwgMjUxLCAyNTUsIDI0MiwgMTkzLCAyMzgsIDIwMywgMjI4LCA1NSwgMjQxLCAxNjgsIDIzOCwgCisgICAgMzUsIDk5LCA2MywgMjEzLCA0MSwgNTMsIDIwNSwgOTgsIDYzLCAyMjUsIDIzLCA1MywgMjA1LCA5OCwgNjMsIDIwMywgMjI3LCAKKyAgICA1MywgMjA1LCA5OCwgNjMsIDIzOSwgMTY2LCA1MywgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDUzLCAyMDUsIDk5LCAzLCA4MywgCisgICAgMTQ4LCA2MywgMjI1LCAyMywgNTMsIDIwNSwgOTksIDMsIDgzLCAxNDgsIDYzLCAyMTMsIDQxLCAyMDUsIDk5LCAzLCA1MywgCisgICAgODMsIDE0OCwgMjUxLCAxNDYsIDI0NiwgMTEzLCAyMDgsIDczLCAyMDUsIDIzMywgMjQ2LCAxMTMsIDIzMywgMTEyLCAzLCAKKyAgICAyMzcsIDIyLCAyMTIsIDExLCA2MywgMjIyLCA2NiwgMjI1LCAyMywgMjA1LCA5OCwgNjMsIDIyMiwgNjYsIDIxMywgNDEsIAorICAgIDIwNSwgOTgsIDYzLCAyMjIsIDY2LCAyMDMsIDIyNywgMjA1LCA5OCwgNjMsIDIyMiwgNjYsIDIzOSwgMTY2LCAyMDUsIDk4LCAKKyAgICA1MywgODMsIDE0OCwgNjMsIDUyLCAzNiwgMjA4LCA3NiwgNjMsIDI0NiwgMTU2LCAzNiwgMjEzLCAxODAsIDIxNSwgNTIsIAorICAgIDk5LCAyMTUsIDUyLCAyMTcsIDc3LCA5OSwgMjE1LCA1MiwgMjE3LCA3OSwgOTksIDIxNSwgNTIsIDIwOSwgNzIsIDk5LCAxNiwgCisgICAgMzYsIDIxOCwgOTcsIDE2LCAzNiwgMjA4LCAxMDUsIDc2LCAyMzQsIDEzMywgMTYsIDM2LCAyMDgsIDEwNSwgNzYsIDIwNiwgCisgICAgMTI2LCAxNiwgMzYsIDIzOCwgMTcxLCA3NiwgMjA2LCAxMjYsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMDUsIDExOCwgMTYsIAorICAgIDM2LCAyMzgsIDE1OCwgMTYsIDM2LCAyNTEsIDI0MywgMTYsIDM2LCAyNDgsIDIzMCwgMTYsIDM2LCAyNDksIDEyMywgMTYsIAorICAgIDM2LCAyMzMsIDE3NywgMjA3LCAxOSwgMTYsIDM2LCAyMjQsIDE3NywgMjM3LCAxMzgsIDE2LCAzNiwgODMsIDIwNywgMTksIAorICAgIDE2LCAzNiwgMjM2LCAyNDIsIDIzNywgMTM4LCAxNiwgMzYsIDI0NywgMTIxLCAyMTMsIDEwOSwgMTYsIDM2LCAyMTAsIDI5LCAKKyAgICAyMTYsIDI1NCwgMTYsIDM2LCAyMTAsIDI5LCAyMjgsIDExNywgMTYsIDM2LCAyNDEsIDIzOSwgMjI0LCAxNjcsIDIzOCwgOTYsIAorICAgIDE2LCAzNiwgMjQxLCAxMDcsIDI0MywgMzQsIDEwMiwgMTYsIDM2LCAyNDEsIDEwNywgMjQzLCAzNCwgMTA1LCAxNiwgMzYsIAorICAgIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDcsIDE2LCAzNiwgMjQxLCAxMDcsIDI0MywgMzQsIDE0OSwgMTYsIDM2LCAxODksIDI1MSwgCisgICAgMjQzLCAxNiwgMzYsIDIwNywgMTA5LCAyMjgsIDE4MCwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIwNSwgMTE5LCAyNDgsIAorICAgIDEzNCwgMTYsIDM2LCAyNDcsIDE1NiwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIyMiwgNjUsIDE2LCAzNiwgMjA4LCAwLCAxNiwgCisgICAgMzYsIDIzOCwgOTYsIDE2LCAzNiwgMjM3LCA5NywgMjEwLCAxNTQsIDE2LCAzNiwgMjM1LCA1OCwgMjEwLCAxNTQsIDE2LCAKKyAgICAzNiwgMjEzLCAxODEsIDIxMCwgMTU0LCAxNiwgMzYsIDIwMywgMjQwLCAyMTAsIDE1NCwgMTYsIDM2LCAyMDgsIDI0NCwgMTYsIAorICAgIDM2LCAyNDEsIDE0NiwgMjQ4LCAxMzgsIDk5LCAxNzYsIDI0OCwgNzgsIDE2LCAzNiwgMjIwLCA1LCAxNiwgMzYsIDI0MSwgCisgICAgMTQ3LCAyMzYsIDI0MiwgMTA1LCAxNiwgMzYsIDIwOCwgMSwgMjM2LCAyNDIsIDEwNSwgMjE3LCAxMzEsIDExNywgMjE3LCAKKyAgICAxMzEsIDI0NywgMzIsIDIxNywgMTMxLCAyMzYsIDI0NSwgMjE3LCAxMzEsIDIyOCwgNTAsIDIzNiwgMjQ1LCAyMTcsIDEzMSwgCisgICAgMjQ4LCAyMjcsIDI0OCwgMzMsIDIxNywgMTMxLCAyNDgsIDg2LCAyMDYsIDcsIDIxNywgMTMxLCAyNDgsIDY3LCAyNDksIDgyLCAKKyAgICAyMzIsIDIyMiwgMjE3LCAxMzEsIDI1MSwgOTEsIDc2LCAyNDcsIDYsIDIxNywgMTMxLCAyNDEsIDI0NCwgMjE3LCAxMzEsIAorICAgIDI0MiwgMTgyLCAyNTEsIDI0NywgMjE4LCA5NSwgMjE3LCAxMzEsIDUzLCAyNDksIDEyNCwgNDQsIDE3LCAxMDIsIDQ0LCAxNywgCisgICAgMTA1LCA0NCwgMTcsIDE0NywgNDQsIDE3LCAxNDksIDQ0LCAxNywgMTY0LCA0NCwgMTcsIDE4NywgNDQsIDE3LCAyMTAsIAorICAgIDEzNSwgNDQsIDE3LCAxOTIsIDQ0LCAxNywgMjE5LCAxMTMsIDQ0LCA0MSwgMjA2LCAxNjYsIDQ0LCA0MSwgMjM4LCAxOTksIAorICAgIDQ0LCA0MSwgMjA0LCAxNjQsIDQ0LCA0MSwgMjA2LCA2OSwgNDQsIDQxLCAyMzYsIDIyMywgNDQsIDQxLCAyMzcsIDEwOCwgCisgICAgNDQsIDQxLCAyMDksIDEwMCwgNDQsIDQxLCAyMTAsIDEzMiwgNDQsIDQxLCAyMzgsIDIyOSwgNDQsIDQxLCAyMTksIDExMCwgCisgICAgNDQsIDQxLCAyMDQsIDE1OSwgMTA2LCAxNywgMTAyLCAxMDYsIDE3LCAxMDUsIDEwNiwgMTcsIDE0NywgMTA2LCAxNywgMTQ5LCAKKyAgICAxMDYsIDE3LCAxNjQsIDEwNiwgMTcsIDE4NywgMTA2LCAxNywgMjEwLCAxMzUsIDEwNiwgMTcsIDE5MiwgMTA2LCAxNywgCisgICAgMjE5LCAxMTMsIDEwNiwgNDEsIDIwNiwgMTY2LCAxMDYsIDQxLCAyMzgsIDE5OSwgMTA2LCA0MSwgMjA0LCAxNjQsIDEwNiwgCisgICAgNDEsIDIwNiwgNjksIDEwNiwgNDEsIDIzNiwgMjIzLCAxMDYsIDQxLCAyMzcsIDEwOCwgMTA2LCA0MSwgMjA5LCAxMDAsIAorICAgIDEwNiwgNDEsIDIxMCwgMTMyLCAxMDYsIDQxLCAyMzgsIDIyOSwgMTA2LCA0MSwgMjE5LCAxMTAsIDEwNiwgNDEsIDIwNCwgCisgICAgMTU5LCAxNywgMTEyLCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDEyMCwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAxMjYsIAorICAgIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjM2LCAyMjksIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjM3LCA2MSwgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDE3LCAyMDksIDEwNiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAyMTAsIDEzNiwgMjM2LCAxODMsIAorICAgIDIwOCwgNzYsIDE3LCAyMzgsIDIzMiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAyMTksIDExNCwgMjM2LCAxODMsIDIwOCwgCisgICAgNzYsIDQxLCAyMDYsIDE2NywgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzgsIDIwMCwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAKKyAgICAyMDQsIDE2NSwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMDYsIDcwLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzNiwgCisgICAgMjI0LCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzNywgMTA5LCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIwOSwgMTAxLCAKKyAgICAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIxMCwgMTMzLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzOCwgMjMwLCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgNDEsIDIxOSwgMTExLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIwNCwgMTYwLCAyMzYsIDE4MywgCisgICAgMjA4LCA3NiwgMTA2LCA4LCA0LCAxLCA2MiwgMTA2LCA4LCA0LCAxLCAyNTAsIDEwMywgMTA2LCA4LCA0LCAxLCAyNDcsIAorICAgIDIyMywgMTA2LCA4LCA0LCAxLCAyNDIsIDE1MywgMTA2LCA4LCA0LCAxLCA3MiwgMTA2LCA4LCA0LCAxLCAyMzgsIDUsIDEwNiwgCisgICAgOCwgNCwgMSwgMjM2LCAxNTYsIDEwNiwgOCwgNCwgMSwgMjM0LCAyNDcsIDEwNiwgOCwgNCwgMSwgNzAsIDEwNiwgOCwgNCwgCisgICAgMSwgMjI3LCAyNTEsIDEwNiwgOCwgNCwgMSwgMjI3LCAxMTgsIDEwNiwgOCwgNCwgMSwgMTU2LCAxMDYsIDgsIDQsIDEsIAorICAgIDIyMywgMjQzLCAxMDYsIDgsIDQsIDEsIDIyMCwgMjE0LCAxMDYsIDgsIDQsIDEsIDc0LCAxMDYsIDgsIDQsIDEsIDIxNiwgCisgICAgMjI2LCAxMDYsIDgsIDQsIDEsIDIxNCwgMTY3LCAxMDYsIDgsIDQsIDEsIDE0NiwgMTA2LCA4LCA0LCAxLCAyMTIsIDEyMiwgCisgICAgMTA2LCA4LCA0LCAxLCAyMDcsIDgzLCAxMDYsIDgsIDQsIDEsIDY2LCAxMDYsIDgsIDQsIDEsIDIwMywgMTY4LCAxMDYsIDgsIAorICAgIDQsIDEsIDIwMSwgMTQ3LCAxMDYsIDgsIDQsIDEsIDIwMCwgMTk1LCAxMDYsIDgsIDQsIDEsIDIwMCwgMTIzLCAxMDYsIDgsIAorICAgIDQsIDEsIDE5OSwgMTU3LCA0NCwgOCwgNiwgMSwgNjIsIDQ0LCA4LCA2LCAxLCAyNTAsIDEwMywgNDQsIDgsIDYsIDEsIDI0NywgCisgICAgMjIzLCA0NCwgOCwgNiwgMSwgMjQyLCAxNTMsIDQ0LCA4LCA2LCAxLCA3MiwgNDQsIDgsIDYsIDEsIDIzOCwgNSwgNDQsIDgsIAorICAgIDYsIDEsIDIzNiwgMTU2LCA0NCwgOCwgNiwgMSwgMjM0LCAyNDcsIDQ0LCA4LCA2LCAxLCA3MCwgNDQsIDgsIDYsIDEsIDIyNywgCisgICAgMjUxLCA0NCwgOCwgNiwgMSwgMjI3LCAxMTgsIDQ0LCA4LCA2LCAxLCAxNTYsIDQ0LCA4LCA2LCAxLCAyMjMsIDI0MywgNDQsIAorICAgIDgsIDYsIDEsIDIyMCwgMjE0LCA0NCwgOCwgNiwgMSwgNzQsIDQ0LCA4LCA2LCAxLCAyMTYsIDIyNiwgNDQsIDgsIDYsIDEsIAorICAgIDIxNCwgMTY3LCA0NCwgOCwgNiwgMSwgMTQ2LCA0NCwgOCwgNiwgMSwgMjEyLCAxMjIsIDQ0LCA4LCA2LCAxLCAyMDcsIDgzLCAKKyAgICA0NCwgOCwgNiwgMSwgNjYsIDQ0LCA4LCA2LCAxLCAyMDMsIDE2OCwgNDQsIDgsIDYsIDEsIDIwMSwgMTQ3LCA0NCwgOCwgNiwgCisgICAgMSwgMjAwLCAxOTUsIDQ0LCA4LCA2LCAxLCAyMDAsIDEyMywgNDQsIDgsIDYsIDEsIDE5OSwgMTU3LCA0NCwgOCwgNCwgMSwgCisgICAgNjIsIDQ0LCA4LCA0LCAxLCAyNTAsIDEwMywgNDQsIDgsIDQsIDEsIDI0NywgMjIzLCA0NCwgOCwgNCwgMSwgMjQyLCAxNTMsIAorICAgIDQ0LCA4LCA0LCAxLCA3MiwgNDQsIDgsIDQsIDEsIDIzOCwgNSwgNDQsIDgsIDQsIDEsIDIzNiwgMTU2LCA0NCwgOCwgNCwgMSwgCisgICAgMjM0LCAyNDcsIDQ0LCA4LCA0LCAxLCA3MCwgNDQsIDgsIDQsIDEsIDIyNywgMjUxLCA0NCwgOCwgNCwgMSwgMjI3LCAxMTgsIAorICAgIDQ0LCA4LCA0LCAxLCAxNTYsIDQ0LCA4LCA0LCAxLCAyMjMsIDI0MywgNDQsIDgsIDQsIDEsIDIyMCwgMjE0LCA0NCwgOCwgNCwgCisgICAgMSwgNzQsIDQ0LCA4LCA0LCAxLCAyMTYsIDIyNiwgNDQsIDgsIDQsIDEsIDIxNCwgMTY3LCA0NCwgOCwgNCwgMSwgMTQ2LCAKKyAgICA0NCwgOCwgNCwgMSwgMjEyLCAxMjIsIDQ0LCA4LCA0LCAxLCAyMDcsIDgzLCA0NCwgOCwgNCwgMSwgNjYsIDQ0LCA4LCA0LCAKKyAgICAxLCAyMDMsIDE2OCwgNDQsIDgsIDQsIDEsIDIwMSwgMTQ3LCA0NCwgOCwgNCwgMSwgMjAwLCAxOTUsIDQ0LCA4LCA0LCAxLCAKKyAgICAyMDAsIDEyMywgNDQsIDgsIDQsIDEsIDE5OSwgMTU3LCA0NCwgMTcsIDE5OSwgODEsIDE4OSwgNDQsIDQxLCAyMzgsIDE5OSwgCisgICAgMTg5LCA0NCwgNDEsIDIwNCwgMTY0LCAxODksIDQ0LCA0MSwgMjA2LCA2OSwgMTg5LCA0NCwgNDEsIDIzNiwgMjIzLCAxODksIAorICAgIDQ0LCA0MSwgMjM3LCAxMDgsIDE4OSwgNDQsIDQxLCAyMDksIDEwMCwgMTg5LCA0NCwgNDEsIDIxMCwgMTMyLCAxODksIDQ0LCAKKyAgICA0MSwgMjM4LCAyMjksIDE4OSwgNDQsIDQxLCAyMTksIDExMCwgMTg5LCA0NCwgNDEsIDIwNCwgMTU5LCA1MywgNDQsIDE3LCAKKyAgICAxMDIsIDUzLCA0NCwgMTcsIDEwNSwgNTMsIDQ0LCAxNywgMTQ3LCA1MywgNDQsIDE3LCAxNDksIDUzLCA0NCwgMTcsIDE2NCwgCisgICAgNTMsIDQ0LCAxNywgMTg3LCA1MywgNDQsIDE3LCAyMTAsIDEzNSwgNTMsIDQ0LCAxNywgMTkyLCA1MywgNDQsIDE3LCAyMTksIAorICAgIDExMywgNTMsIDQ0LCA0MSwgMjA2LCAxNjYsIDE4OSwgNDQsIDE3LCAxOTksIDgxLCAxMDAsIDEyMSwgMTYyLCAyMzMsIDE3NiwgCisgICAgMTAwLCAxMjEsIDgwLCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCAyMDMsIDQyLCAKKyAgICAxMDAsIDEyMSwgMTYyLCAyMDUsIDgzLCAyNDEsIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCA4MCwgMjA1LCA4MywgMjQxLCAKKyAgICAyNDUsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAyMDUsIDgzLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCAKKyAgICAyMDUsIDgzLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDE2MiwgMjE0LCA5MCwgMjQxLCAyNDUsIDIzMywgMTc2LCAKKyAgICAxMDAsIDEyMSwgODAsIDIxNCwgOTAsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMjE0LCA5MCwgMjQxLCAKKyAgICAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgMjE0LCA5MCwgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCAxNjIsIAorICAgIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDUxLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDEyNywgCisgICAgODAsIDI2LCA1MSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MCwgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMTI3LCAKKyAgICAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNDksIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTI3LCA4MCwgMjYsIAorICAgIDQ5LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgwLCAxMjcsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCAKKyAgICAyMTMsIDQ2LCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCA1MSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNTEsIAorICAgIDIyNCwgMTk2LCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDExNSwgMjYsIDIyNSwgCisgICAgMjgsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDQ5LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA0OSwgMjI0LCAKKyAgICAxOTYsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgODMsIDI2LCAyMTMsIDQ2LCAxMDAsIAorICAgIDEyMSwgODMsIDE2MiwgMjYsIDUxLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA1MSwgMTI3LCAyMjQsIDE5NiwgCisgICAgMTAwLCAxMjEsIDEyNywgODAsIDI2LCA1MSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCA4MCwgMjYsIDUxLCAyMjQsIAorICAgIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNTEsIDExNSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIAorICAgIDUxLCAxMjcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgODAsIDgzLCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgODMsIDI2LCAKKyAgICAyMjUsIDI4LCAxMDAsIDEyMSwgODMsIDE2MiwgMjYsIDQ5LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA0OSwgCisgICAgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgODAsIDI2LCA0OSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCAKKyAgICA4MCwgMjYsIDQ5LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNDksIDExNSwgMjM0LCAxMjEsIDEwMCwgCisgICAgMTIxLCAxMTUsIDE2MiwgMjYsIDQ5LCAxMjcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgODAsIDgzLCAyNiwgMjI1LCAyOCwgMTAwLCAKKyAgICAxMjEsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCA0OSwgODAsIDI2LCA1MSwgMTI3LCAyMjQsIDE5NiwgCisgICAgMTAwLCAxMjEsIDUxLCA4MCwgMjYsIDQ5LCAxMjcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCAyMzMsIAorICAgIDE3NywgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIAorICAgIDE2MiwgMjYsIDQ5LCAxMjcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgNDksIDE2MiwgMjYsIDUxLCAxMjcsIDIzNCwgMTIxLCAKKyAgICAxMDAsIDEyMSwgODAsIDEyNywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCAyMzMsIDE3NiwgMTAwLCAKKyAgICAxMjEsIDQ5LCA4MCwgMjYsIDUxLCAxMTUsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIDgwLCAyNiwgNDksIDExNSwgMjI0LCAKKyAgICAxOTYsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDIzMywgMTc3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCAKKyAgICAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCA1MSwgMTYyLCAyNiwgNDksIDExNSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAKKyAgICA0OSwgMTYyLCAyNiwgNTEsIDExNSwgMjM0LCAxMjEsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMjMzLCAxNzYsIDEwMCwgCisgICAgMTIxLCAxNjIsIDgzLCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCA0OSwgODAsIDI2LCA1MSwgODMsIDIyNCwgMTk2LCAxMDAsIAorICAgIDEyMSwgNTEsIDgwLCAyNiwgNDksIDgzLCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCAxNjIsIDI2LCAyMzMsIDE3NywgMjM0LCAKKyAgICAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgMTI3LCAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDgwLCAKKyAgICAyNiwgMTE1LCAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgODAsIDI2LCAyMzMsIDE3NywgMjI0LCAxOTYsIAorICAgIDEwMCwgMTIxLCA0OSwgMTE1LCA4MCwgMjYsIDUxLCAxMjcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIDExNSwgODAsIDI2LCAKKyAgICA0OSwgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDQ5LCAxMjcsIDgwLCAyNiwgNTEsIDExNSwgMjI0LCAxOTYsIDEwMCwgCisgICAgMTIxLCA1MSwgMTI3LCA4MCwgMjYsIDQ5LCAxMTUsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCAxMTUsIAorICAgIDIzMywgMTc3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgMTI3LCAyMzMsIDE3NywgMjM0LCAxMjEsIDEwMCwgCisgICAgMTIxLCA1MSwgMTYyLCAyNiwgNDksIDgzLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDQ5LCAxNjIsIDI2LCA1MSwgODMsIDIzNCwgCisgICAgMTIxLCAxMDAsIDEyMSwgODAsIDgzLCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDUzLCAyNDEsIDI0NSwgMjMzLCAKKyAgICAxNzYsIDEwMCwgMTIxLCA4MCwgNTMsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgNTMsIDI0MSwgMjQ1LCAKKyAgICAyMDMsIDQyLCAxMDAsIDEyMSwgODAsIDUzLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDUzLCAyMzMsIDE3NiwgCisgICAgMTAwLCAxMjEsIDUzLCAyMDMsIDQyLCAxMDAsIDEyMSwgMTI3LCAyMDksIDEzOSwgMjYsIDUxLCAyMzksIDE3NSwgMTAwLCAKKyAgICAxMjEsIDEyNywgNTMsIDI2LCA1MSwgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIAorICAgIDEyNywgMjA5LCAxMzksIDI2LCA0OSwgMjM5LCAxNzUsIDEwMCwgMTIxLCAxMjcsIDUzLCAyNiwgNDksIDIwOSwgMTM4LCAKKyAgICAxMDAsIDEyMSwgNTMsIDEyNywgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxMTUsIDIwOSwgMTM5LCAyNiwgNTEsIDIzOSwgCisgICAgMTc1LCAxMDAsIDEyMSwgMTE1LCA1MywgMjYsIDUxLCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCAxMTUsIDI2LCAyMTMsIDQ2LCAKKyAgICAxMDAsIDEyMSwgMTE1LCAyMDksIDEzOSwgMjYsIDQ5LCAyMzksIDE3NSwgMTAwLCAxMjEsIDExNSwgNTMsIDI2LCA0OSwgCisgICAgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTE1LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDgzLCAyMDksIDEzOSwgMjYsIDUxLCAKKyAgICAyMzksIDE3NSwgMTAwLCAxMjEsIDgzLCA1MywgMjYsIDUxLCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCA4MywgMjYsIDIxMywgCisgICAgNDYsIDEwMCwgMTIxLCA4MywgMjA5LCAxMzksIDI2LCA0OSwgMjM5LCAxNzUsIDEwMCwgMTIxLCA4MywgNTMsIDI2LCA0OSwgCisgICAgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgODMsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTI3LCAyMDksIDEzOSwgMjYsIAorICAgIDIzMywgMTc3LCAyMzksIDE3NSwgMTAwLCAxMjEsIDEyNywgNTMsIDI2LCAyMzMsIDE3NywgMjA5LCAxMzgsIDEwMCwgMTIxLCAKKyAgICA1MywgMTI3LCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxMTUsIDIwOSwgMTM5LCAyNiwgMjMzLCAxNzcsIDIzOSwgMTc1LCAKKyAgICAxMDAsIDEyMSwgMTE1LCA1MywgMjYsIDIzMywgMTc3LCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCAxMTUsIDI2LCAyMzMsIAorICAgIDE3NiwgMTAwLCAxMjEsIDgzLCAyMDksIDEzOSwgMjYsIDIzMywgMTc3LCAyMzksIDE3NSwgMTAwLCAxMjEsIDgzLCA1MywgCisgICAgMjYsIDIzMywgMTc3LCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCA4MywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAKKyAgICAyNTAsIDIzNywgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMjUwLCAyMzcsIDEyNywgMjYsIDIyNSwgMjgsIAorICAgIDEwMCwgMTIxLCAxNjIsIDI1MCwgMjM3LCAxMTUsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTYyLCAyNTAsIDIzNywgMTE1LCAKKyAgICAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMjQxLCA3MSwgMjAzLCAyMjUsIDUxLCAyMDUsIDE4NiwgMjI0LCA1NCwgCisgICAgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgMjQxLCA3MSwgMjAzLCAyMjUsIDQ5LCAyMDUsIDE4NiwgMjI0LCA1NCwgMjEzLCAKKyAgICA0NiwgMTAwLCAxMjEsIDE2MiwgMjQxLCA3MSwgMjQyLCAyMzQsIDEwMCwgMTIxLCAxNjIsIDIyNSwgMjgsIDEwMCwgMTIxLCAKKyAgICAxNjIsIDIwMywgMjI4LCAxMDAsIDEyMSwgMTYyLCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAyMzksIDE2NywgMTAwLCAxMjEsIAorICAgIDgwLCAyMjUsIDI4LCAxMDAsIDEyMSwgODAsIDIwMywgMjI4LCAxMDAsIDEyMSwgODAsIDIxMywgNDYsIDEwMCwgMTIxLCA4MCwgCisgICAgMjM5LCAxNjcsIDEwMCwgMTIxLCAxNjIsIDQ5LCAyNiwgODAsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDExNSwgMjYsIDgwLCAKKyAgICAyMzksIDE2NywgMTAwLCAxMjEsIDgwLCA0OSwgMjYsIDE2MiwgMjEzLCA0NiwgMTAwLCAxMjEsIDgwLCAxMTUsIDI2LCAxNjIsIAorICAgIDIzOSwgMTY3LCAyMDMsIDIyNSwgMTY3LCAyNDgsIDEzNCwgMjI0LCA1NCwgMTEyLCAyMzgsIDIyOCwgMjQ4LCAxMzQsIDIyNCwgCisgICAgNTQsIDExMiwgMjE0LCA4OCwgMjQ4LCAxMzQsIDIyNCwgNTQsIDEyNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCAyMjQsIDU0LCAKKyAgICAxNjcsIDI0OCwgMTM0LCAyMjQsIDU0LCAyMzcsIDYxLCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDIyNCwgNTQsIDEyNiwgMjE0LCAKKyAgICA4NiwgMjQ4LCAxMzQsIDIyNCwgNTQsIDIxMCwgMTM2LCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDIzNiwgMTgzLCAyNDgsIDEzNCwgCisgICAgNDksIDIxMCwgMTM2LCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDQ5LCAxMjYsIDIxNCwgODYsIDI0OCwgMTM0LCA0OSwgMjM3LCAKKyAgICA2MSwgMjM4LCAyMjYsIDI0OCwgMTM0LCA0OSwgMTY3LCAyNDgsIDEzNCwgNDksIDEyNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCAKKyAgICA0OSwgMTEyLCAyMTQsIDg4LCAyNDgsIDEzNCwgNDksIDExMiwgMjM4LCAyMjgsIDI0OCwgMTM0LCA1MSwgMTY3LCAyNDgsIAorICAgIDEzNCwgMTYyLCAyMTAsIDEwMywgMjIyLCA2NiwgMjEwLCAxMDMsIDI0MSwgMjUwLCAyMTAsIDEwMywgMjAzLCAyMjUsIDExMiwgCisgICAgMjM4LCAyMjgsIDI0OCwgMTM0LCA1MSwgMTEyLCAyMzgsIDIyOCwgMjQ4LCAxMzQsIDIxNCwgOTIsIDIyNCwgNTQsIDIyNSwgCisgICAgMjgsIDIxNCwgOTIsIDIyNCwgNTQsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCAyMjUsIDI4LCAyMTQsIDkyLCAyMDMsIAorICAgIDIyNSwgNDksIDI2LCAyMjQsIDU0LCA0OSwgMjYsIDIyNCwgNTQsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCA0OSwgCisgICAgMjYsIDIyNCwgNTQsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCA0OSwgMjYsIDIwMywgMjI1LCA1MSwgMjYsIDIyNCwgCisgICAgNTQsIDIyNSwgMjgsIDIxNCwgOTIsIDIwMywgMjI1LCA0OSwgMjYsIDIwMywgMjI1LCA1MSwgMjYsIDIyNCwgNTQsIDIxMywgCisgICAgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIDU0LCAyMjUsIAorICAgIDI4LCAyMTQsIDkyLCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIDU0LCA0OSwgMjYsIDIyNCwgNTQsIDIxMywgNDYsIDYzLCAKKyAgICAyMDgsIDE5MywgNjQsIDIwOCwgMTkzLCA2NCwgNTIsIDMsIDIxMiwgMjE5LCAyNDMsIDE0LCA2NCwgNTIsIDI0MywgNDUsIAorICAgIDYzLCA0LCAyMDgsIDE5MywgNTIsIDMsIDIzMywgMTc3LCAyMzcsIDk1LCA1MiwgMywgODMsIDIzNywgOTUsIDUyLCAzLCAKKyAgICAyMTcsIDE3LCAyNDIsIDIyOSwgMjM3LCA5NSwgNTIsIDMsIDIwMywgMjI1LCA0OSwgMjA1LCAxODYsIDIyNCwgNTQsIDUxLCAKKyAgICAyMzcsIDk1LCA1MiwgMywgMjAzLCAyMjUsIDUxLCAyMDUsIDE4NiwgMjI0LCA1NCwgNDksIDIzNywgOTUsIDUyLCAzLCAyNDEsIAorICAgIDcxLCAyNDIsIDIyOSwgMjM3LCA5NSwgNjMsIDQsIDIwOCwgMTkzLCA2NCwgNCwgMjA4LCAxOTMsIDYzLCAyMTMsIDE3NSwgCisgICAgNjQsIDIxMywgMTc1LCA2MywgODMsIDIxMywgMTc1LCA2NCwgODMsIDIxMywgMTc1LCA2MywgMjE2LCAxMTksIDY0LCAyMTYsIAorICAgIDExOSwgNjMsIDIwMywgMjI3LCAyMDUsIDk4LCA2NCwgMjAzLCAyMjcsIDIwNSwgOTgsIDYzLCAyMDMsIDIyNywgNCwgMjA1LCAKKyAgICA5OCwgNjQsIDIwMywgMjI3LCA0LCAyMDUsIDk4LCA2MywgMjEzLCA0MSwgMjA1LCA5OCwgNjQsIDIxMywgNDEsIDIwNSwgOTgsIAorICAgIDYzLCAyMTMsIDQxLCA0LCAyMDUsIDk4LCA2NCwgMjEzLCA0MSwgNCwgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDIxNSwgOTcsIAorICAgIDY0LCAyMTMsIDQxLCAyMTUsIDk3LCA2MywgMjM5LCAxNjYsIDIwNSwgOTgsIDY0LCAyMzksIDE2NiwgMjA1LCA5OCwgNjMsIAorICAgIDIzOSwgMTY2LCA0LCAyMDUsIDk4LCA2NCwgMjM5LCAxNjYsIDQsIDIwNSwgOTgsIDYzLCAyMjUsIDIzLCAyMDUsIDk4LCA2NCwgCisgICAgMjI1LCAyMywgMjA1LCA5OCwgNjMsIDIyNSwgMjMsIDQsIDIwNSwgOTgsIDY0LCAyMjUsIDIzLCA0LCAyMDUsIDk4LCA2MywgCisgICAgMjI1LCAyMywgMjE1LCA5NywgNjQsIDIyNSwgMjMsIDIxNSwgOTcsIDYzLCAyNDEsIDY0LCA2NCwgMjQxLCA2NCwgNjQsIAorICAgIDI0MSwgNjUsIDI0MywgNDUsIDYzLCA0LCAyNDEsIDY0LCAyMzcsIDcwLCAyMjQsIDQ5LCA2NCwgMjQ2LCAxNTUsIDIzOSwgCisgICAgMTgwLCAyNDYsIDE1NSwgMjQ2LCAxNTYsIDMsIDgzLCAyMzcsIDk1LCAyNDgsIDE2LCA2MywgMjQ2LCAxNTUsIDI0NiwgMTU2LCAKKyAgICAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgMjI0LCAKKyAgICA1NCwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDIwMywgMjI1LCAxNjcsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgCisgICAgMjAzLCAyMjUsIDUxLCAyMTQsIDkyLCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDI1MSwgMTI1LCAyNDcsIDI0NywgMjAzLCAKKyAgICAyMjUsIDQ5LCAyMTQsIDkyLCAyNDgsIDE0NCwgNDksIDE2NywgNjMsIDI0NiwgMTU1LCA1MSwgMTY3LCA2MywgMjQ2LCAxNTUsIAorICAgIDIyOCwgNTEsIDI0OCwgMjAsIDIyOCwgNTEsIDY0LCAyNDYsIDE1NSwgMjAzLCAyMjUsIDE2NywgMjI4LCA1MSwgNjQsIDI0NiwgCisgICAgMTU1LCAyMjQsIDU0LCAxNjcsIDIyOCwgNTEsIDY0LCAyNDYsIDE1NSwgMjAzLCAyMjUsIDQ5LCAyMTQsIDkyLCAyNDYsIAorICAgIDE0OSwgMjUwLCAyMzYsIDIwMywgMjI1LCA1MSwgMjE0LCA5MiwgMjQ2LCAxNDksIDI1MCwgMjM2LCAyMjQsIDU0LCA1MSwgCisgICAgMjE0LCA5MiwgMjQ2LCAxNDksIDI1MCwgMjM2LCAyMjQsIDU0LCA0OSwgMjE0LCA5MiwgMjQ2LCAxNDksIDI1MCwgMjM2LCAKKyAgICAyMDMsIDIyNSwgMTY3LCAyNDYsIDE1NSwgMjI0LCA1NCwgMTY3LCAyNDYsIDE1NSwgNjMsIDIyNCwgNTQsIDUxLCAyMDUsIAorICAgIDk4LCA2MywgMjI0LCA1NCwgNDksIDIwNSwgOTgsIDYzLCAyMDMsIDIyNSwgNDksIDIwNSwgOTgsIDYzLCAyMDMsIDIyNSwgCisgICAgNTEsIDIwNSwgOTgsIDY0LCAyNDgsIDIwLCA1MiwgMywgNDksIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCA1MSwgMTY3LCAyNDgsIAorICAgIDE0NCwgNTIsIDMsIDIwMywgMjI1LCA0OSwgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgNTIsIDMsIDIyNCwgNTQsIDUxLCAKKyAgICAyNDEsIDcxLCAxNjcsIDI0OCwgMTQ0LCA2NCwgNTIsIDMsIDgzLCAyNDgsIDE1NiwgMjI0LCAxNzYsIDY0LCAyMDMsIDIyNywgCisgICAgMjA1LCA5OSwgMywgMjQwLCAxODIsIDIwMywgMjI3LCAyMDUsIDk5LCAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgMjAzLCAyMjcsIAorICAgIDIwNSwgOTksIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCAyMjUsIDcxLCAyNDYsIDE1NSwgNjQsIDUyLCAzLCAyMDMsIDIyNSwgCisgICAgNDksIDIxNCwgOTEsIDY0LCA1MiwgMywgMjI0LCA1NCwgNDksIDIxNCwgOTEsIDY0LCA1MiwgMywgMjI0LCA1NCwgNTEsIAorICAgIDIxNCwgOTEsIDY0LCA1MiwgMywgMjAzLCAyMjUsIDUxLCAyMTQsIDkxLCA2NCwgMjQ2LCAxNTYsIDMsIDIwMywgMjI1LCA0OSwgCisgICAgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMjQsIDU0LCA0OSwgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMjQsIDU0LCAKKyAgICA1MSwgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMDMsIDIyNSwgNTEsIDIxNCwgOTEsIDIwMywgMjI1LCA0OSwgMjA1LCAKKyAgICA5OCwgMjAzLCAyMjUsIDUxLCAyMDUsIDk4LCAyMjQsIDU0LCA0OSwgMjA1LCA5OCwgNjQsIDIyMiwgNjYsIDIwOCwgMTkzLCAKKyAgICA2MywgMjIyLCA2NiwgMjA4LCAxOTMsIDY0LCAyMjIsIDY2LCA0LCAyMDgsIDE5MywgNjMsIDIyMiwgNjYsIDQsIDIwOCwgCisgICAgMTkzLCAyMjQsIDU0LCA1MSwgMjA1LCA5OCwgNjMsIDIwNywgMjI5LCAzLCAyMTMsIDE5NCwgMjQ2LCAxMDEsIDIwNCwgOSwgCisgICAgMjA5LCAzMSwgMjQ2LCA3MywgNjMsIDIwOCwgMTA5LCA2NCwgMjA4LCAxMDksIDIyNCwgMTkzLCAyMDYsIDMwLCAyMDcsIAorICAgIDIyOCwgMjUwLCAxODQsIDIxOCwgMjM4LCAyNDEsIDExOCwgMjE4LCAyMzgsIDI0MywgNTQsIDIxNywgMzksIDYzLCAyMDYsIAorICAgIDE3NSwgNjQsIDIwNiwgMTc1LCAyNDksIDk0LCAyNDgsIDc4LCAyNDksIDk0LCAxMDAsIDMsIDI0NywgNiwgMjQ5LCA5NCwgCisgICAgMTAwLCAzLCAyMDAsIDE5NSwgMjEyLCAyNCwgMjA0LCAxMCwgMywgMjEzLCAyMjMsIDIzOSwgMTQ0LCAyMzMsIDExOCwgMjQ4LCAKKyAgICAyMDQsIDY0LCAyMTAsIDMsIDIxNSwgMTk2LCA2MywgMjEwLCAzLCAyMTUsIDE5NiwgMjEwLCA5MSwgMjEzLCAxMDUsIDIxMiwgCisgICAgMjI4LCAyMzcsIDI4LCAyMzQsIDEyOCwgMjQ4LCAyMCwgNjMsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgNjMsIDUxLCAyMTUsIAorICAgIDk2LCAyMjgsIDEwMywgNjQsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgNjQsIDExNSwgMjE1LCA5NiwgMjI4LCAxMDMsIDY0LCAKKyAgICA1MSwgMjE1LCA5NiwgMjI4LCAxMDMsIDY0LCAxMjcsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDgxLCAyNiwgMjQyLCAyMzMsIAorICAgIDI0NywgMTA1LCA1NCwgMjEzLCAyMzUsIDU0LCAyNDgsIDE2NCwgNTQsIDI0NywgMTgxLCAyNTEsIDYxLCAyMTcsIDE4LCAKKyAgICAyNDIsIDIzNCwgMjQ2LCAyMzcsIDIxMywgOTAsIDI0MiwgMjM1LCA3NiwgMjI0LCA2OSwgMjQyLCAyMzUsIDc2LCAyMjcsIAorICAgIDIxNywgMjA4LCAxMTAsIDI2LCAyNDIsIDI0MywgMjM3LCAxNjIsIDk5LCAyNTEsIDIyOCwgMjEwLCA5NCwgMjM0LCAyMDcsIAorICAgIDI2LCAyMDksIDE3OSwgMjE2LCA3MiwgOTksIDE5OSwgMjU1LCAyMDAsIDc1LCAyMDUsIDg4LCAzNiwgMjM0LCAxMjMsIDIwNSwgCisgICAgODgsIDM2LCAyMjUsIDk2LCAyMDUsIDg4LCAzNiwgMjM3LCA3NywgMjA1LCA4OCwgMzYsIDIwNiwgMzEsIDIwNSwgODgsIDM2LCAKKyAgICAyMDEsIDE2LCAyMDUsIDg4LCAzNiwgMjAxLCA4MiwgMjA1LCA4OCwgMzYsIDIyMSwgNjMsIDIwNSwgODgsIDM2LCAyMzksIAorICAgIDE3LCAyMDEsIDM4LCA3NiwgMjQxLCA5MiwgNjQsIDIzNiwgMTk1LCAyMzcsIDE4OSwgNjQsIDIwOSwgNDcsIDIzNywgMTg5LCAKKyAgICA2MywgMjA5LCA0NywgMjM3LCAxODksIDY0LCAyMDcsIDIyOSwgMywgMjEzLCAxOTQsIDIzNywgNzMsIDIxNCwgODgsIDIyMSwgCisgICAgODEsIDIyNSwgNjQsIDIxNCwgODgsIDIyMSwgODEsIDIyMiwgMzQsIDIzNywgMTMwLCA1NCwgMjM5LCAxNywgMjIyLCAxODUsIAorICAgIDU0LCAyMjcsIDEzMywgMjExLCAyNDQsIDIwMywgMjA5LCAyMjAsIDE4LCAyMTUsIDExMCwgMjUwLCAyMjIsIDIwNiwgMjE5LCAKKyAgICAyMzYsIDIsIDI0NywgMTU0LCAyMjQsIDI0NiwgMjAyLCAyMDYsIDIyNCwgMjA3LCAyMTEsIDIxMiwgMjEyLCA0OCwgMjQ3LCAKKyAgICAxMzksIDI1MCwgMjU0LCAyMTUsIDE0NSwgNjQsIDI0NiwgMjQ0LCAyMjYsIDE0NCwgNjQsIDI0NiwgMjQ0LCAyMTQsIDgwLCAKKyAgICA2NCwgMjQ2LCAyNDQsIDIxMiwgMjM2LCA2NCwgMjQ2LCAyNDQsIDI0OCwgMTU1LCA2NCwgMjQ2LCAyNDQsIDIyNiwgOTMsIAorICAgIDY0LCAyNDYsIDI0NCwgMjE2LCA4NCwgNjMsIDI0NiwgMjQ0LCAyMjYsIDE0NCwgNjMsIDI0NiwgMjQ0LCAyMTQsIDgwLCA2MywgCisgICAgMjQ2LCAyNDQsIDIxMiwgMjM2LCA2MywgMjQ2LCAyNDQsIDI0OCwgMTU1LCA2MywgMjQ2LCAyNDQsIDIyNiwgOTMsIDYzLCAKKyAgICAyNDYsIDI0NCwgMjE2LCA4NCwgNjMsIDIwOCwgMjQyLCAyMDcsIDI0MSwgNjQsIDIzNCwgMTI4LCAyMDcsIDI0MSwgNjQsIAorICAgIDI0MSwgNjUsIDIwNywgMjQxLCA2MywgMjQ2LCA5OCwgMjA3LCAyNDEsIDY0LCAyMDgsIDI0MiwgMjA3LCAyNDEsIDYzLCAKKyAgICAyMzQsIDEyOCwgMjA3LCAyNDEsIDYzLCAyNDEsIDY1LCAyMDcsIDI0MSwgNjQsIDI0NiwgOTgsIDIwNywgMjQxLCAyMzMsIAorICAgIDExOCwgMjA4LCAxOTgsIDIxNCwgODgsIDIxOCwgMjA5LCAyMzgsIDIyOCwgMjE4LCAyMDksIDI0OSwgNCwgMjM4LCAyMjgsIAorICAgIDIxOCwgMjA0LCAyNDksIDQsIDIwOSwgOTksIDIxOCwgMjA0LCAyMjAsIDI0NiwgMjM3LCA0NSwgNTQsIDIyMCwgMjQ2LCAKKyAgICAyMjAsIDExNywgNTQsIDIyMCwgMjQ2LCAyMTAsIDc5LCA1NCwgMjAxLCA0OCwgMjA3LCAxMDMsIDI0MiwgMjM0LCAyMzksIAorICAgIDE0LCAyMDcsIDEwMywgMjQyLCAyMzQsIDIwMywgMjM3LCAyMTMsIDE3MSwgOTksIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgCisgICAgMTI3LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjA0LCAxMjUsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAKKyAgICAyMDQsIDEyNCwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgMTIyLCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAKKyAgICAzNiwgMjA0LCAxMjAsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIDExOCwgMjE1LCAxMjcsIDIxMywgMTcxLCAKKyAgICAxNiwgMzYsIDIwNCwgMTE2LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjM2LCAwLCAyMjIsIDEyNiwgNjMsIDIwMywgCisgICAgMjM3LCAyMTMsIDE3MSwgOTksIDIxMywgMTcyLCAyMTYsIDEzNCwgOTksIDIxNiwgMTA3LCAyMTYsIDEzNCwgOTksIDIxNiwgCisgICAgMTksIDIxNiwgMTM0LCA1NCwgMjAxLCAzNiwgOTksIDI0MSwgNTcsIDIzNywgMTg4LCAyNDEsIDU3LCAyMzcsIDE4NywgMjQxLCAKKyAgICA1NywgMjM3LCAxODYsIDI0MSwgNTcsIDIzNywgMTg1LCAyNDEsIDU3LCAyMzcsIDE4NCwgMjQxLCA1NywgMjM3LCAxODMsIAorICAgIDY0LCAyNDYsIDE1NiwgMywgNzMsIDIxMywgNDYsIDY0LCAyNDYsIDE1NiwgMywgMTIwLCAyNDAsIDE4MCwgNjMsIDI0NiwgCisgICAgMTU2LCAzLCA2NCwgNzMsIDIxMywgNDYsIDYzLCAyNDYsIDE1NiwgMywgMTIwLCA2NCwgMjQwLCAxODAsIDIyMSwgOTcsIDM2LCAKKyAgICAyMDAsIDc1LCAyMjEsIDk3LCAzNiwgMTk5LCAyNTQsIDI0MSwgMzgsIDM2LCAyMzUsIDY4LCAyMDAsIDc1LCAyNDEsIDM4LCAKKyAgICAzNiwgMjI0LCAyMzksIDE5OSwgMjU0LCAyNDEsIDM4LCAzNiwgMjI0LCAyMzksIDIwMCwgNzUsIDI0MSwgMzgsIDM2LCAyMzUsIAorICAgIDY4LCAxOTksIDI1NCwgNjQsIDIzNywgNTMsIDYzLCAyMzcsIDUzLCAyMzQsIDIwNywgMjYsIDIxNSwgMjAwLCAyNTEsIDgxLCAKKyAgICAyNDIsIDIzMiwgMjA3LCAxNjgsIDIwOCwgMTE4LCA3NiwgMjUxLCAyMDQsIDIxMSwgMjI5LCAyNTEsIDE0MSwgMjM3LCAyNCwgCisgICAgMjM2LCAxMiwgMjA4LCAxMTgsIDc2LCAyMzQsIDk4LCAyNTAsIDE0NywgOTksIDIzNywgNDAsIDIxNiwgMjUwLCA2NCwgMjA4LCAKKyAgICAxMDksIDEyNiwgMjI0LCAxNzEsIDI0MywgMzEsIDIxMywgNDYsIDEyNiwgMjI0LCAxNzEsIDI0MywgMzEsIDIyNSwgMjgsIAorICAgIDIwMSwgOTMsIDU0LCAxMjIsIDIwMiwgMTgyLCA1NCwgMjM5LCAxNzIsIDIzNywgMTMwLCA1NCwgMjM5LCAxNzIsIDIyMiwgCisgICAgMTg1LCA1NCwgMjI4LCA2MSwgMjM3LCAxMzAsIDI2LCAyMjIsIDE4NSwgNTQsIDIyMiwgMTg1LCAyNiwgMjM3LCAxMzAsIDU0LCAKKyAgICAyMjIsIDE4NSwgMywgMjA4LCA0NywgNTQsIDIyMiwgMTg1LCAzLCAyMDgsIDQ3LCAyNiwgMjIyLCAxODUsIDI2LCAyMzcsIAorICAgIDEzMCwgNTQsIDgzLCAyMjIsIDE4NSwgMywgMjA4LCA0NywgNTQsIDIzMywgMTc3LCAyMjIsIDE4NSwgMywgMjA4LCA0NywgCisgICAgNTQsIDIyMiwgNjYsIDY0LCAyNDYsIDE1NSwgMjIyLCA2NiwgNjMsIDI0NiwgMTU1LCAyMjIsIDY2LCA0LCA2NCwgMjQ2LCAKKyAgICAxNTUsIDIyMiwgMTQzLCA5OSwgMjQwLCAyMzMsIDk5LCAyMDMsIDIzNCwgMjE2LCAxMDYsIDk5LCAyNDYsIDg0LCAyMzYsIAorICAgIDE3OCwgMjAzLCAyMDUsIDIyMCwgMTEsIDI0NywgNDEsIDIxNiwgMTc5LCAyMjcsIDEzOSwgMjAyLCAyNDQsIDI0NiwgMjE3LCAKKyAgICA2MywgMjIxLCA4MiwgMjI0LCAxOTAsIDIxMCwgMTI1LCAyMTAsIDE2NCwgMjE0LCA3MCwgMjEwLCAxNDQsIDIwOSwgMjYsIAorICAgIDI0OSwgOTcsIDI0OSwgNjMsIDk1LCAyMjYsIDIxNCwgNjQsIDIzOSwgMTU1LCAyMjIsIDE4MCwgNjQsIDIzOSwgMTU1LCAKKyAgICAyMjYsIDE0NCwgNjMsIDIzOSwgMTU1LCAyMjIsIDE4MCwgNjMsIDIzOSwgMTU1LCAyMjYsIDE0NCwgMjA5LCAzMiwgMjAxLCAKKyAgICAzLCAyMDksIDM1LCAyMDcsIDIyOSwgMjQ4LCAyMzcsIDI0NiwgMTAxLCAyMTMsIDIyMiwgNjMsIDIwOSwgMzEsIDIwNiwgMzIsIAorICAgIDI0NiwgMTAyLCAyNiwgMjEzLCAyMjIsIDIwNCwgMTg1LCA2NCwgMjEwLCAzLCAyMTUsIDE5NiwgMjA0LCAxODUsIDYzLCAKKyAgICAyMTAsIDMsIDIxNSwgMTk2LCA2NCwgMjQxLCA2NSwgMjI4LCAxMTgsIDIwOCwgMTkzLCAyNDIsIDIyOCwgMjI1LCA3OCwgCisgICAgMjQxLCA1LCAyNDcsIDEzNSwgMjE3LCA0MiwgMjE1LCAyMDAsIDI0NywgMTM2LCAyMDksIDY1LCAyMzQsIDEwOCwgMywgNjQsIAorICAgIDI0MiwgMjM0LCA0NCwgMjQyLCAyMjgsIDIyNSwgNzgsIDI0NywgMzMsIDIxOCwgMjQyLCAyMzgsIDE0OSwgMjUxLCAxMDksIAorICAgIDIxNywgNzEsIDQ5LCAyMDEsIDY4LCAyMDUsIDEyNiwgNjMsIDIwNCwgMTM4LCA0OSwgMjAxLCA2OCwgMjA1LCAxMjYsIDY0LCAKKyAgICAyMDQsIDEzOCwgNDksIDIwMSwgNjgsIDIwNSwgMTI2LCA2MywgNDksIDIyNSwgNzksIDIyMiwgMzMsIDY0LCA0OSwgMjI1LCAKKyAgICA3OSwgMjIyLCAzMywgMjM5LCAxNTAsIDIwOSwgNTcsIDU0LCA4MCwgNjQsIDIzOSwgMTY2LCAyMDUsIDk4LCA0OSwgMjQ2LCAKKyAgICAxMTAsIDIzOCwgMTQ5LCA5NSwgMjEyLCAyNCwgMjM3LCAxNzEsIDI0MSwgNzEsIDIyOCwgMTE4LCA2NCwgMjQ2LCAxNTYsIAorICAgIDIyOCwgMTE4LCA2MywgMjA4LCAxOTMsIDYzLCAyMDUsIDYyLCAyMTMsIDExNiwgNDksIDIzOCwgMTQ4LCAyMTMsIDExNiwgCisgICAgNDksIDIzOCwgMTQ3LCAyNTAsIDE2MCwgMTYsIDM2LCAyMDMsIDIwOSwgODAsIDI0NiwgMTU2LCAzLCAyMDgsIDQ3LCAyNiwgCisgICAgMTIwLCAxOTAsIDU2LCAyMTYsIDM2LCAyMTMsIDQzLCAyMjgsIDYzLCAyMTYsIDM2LCAyMjUsIDI1LCAyMjgsIDYzLCAyMTYsIAorICAgIDM2LCAyMjgsIDUwLCAyMTYsIDM2LCA2MywgMjQyLCAyMzUsIDIxNywgNzksIDIxMCwgMzAsIDIxMCwgMTgsIDIwOSwgMjI1LCAKKyAgICAyNDYsIDE4NCwgMjQ3LCAxMTMsIDIzNCwgNDYsIDIwOSwgMTA3LCAyMzYsIDEzLCAyMDEsIDMsIDIzMywgOTQsIDIzNiwgMTMsIAorICAgIDMsIDIzNCwgMTc2LCAyMjIsIDE2NSwgMTYsIDM2LCAyMjQsIDE5NSwgMjIxLCA2MywgMjA0LCAxMCwgMjE3LCA3OSwgMjM1LCAKKyAgICA1OSwgMjM2LCAyMzAsIDIzNywgNTQsIDIyOCwgMTE4LCAyMzMsIDE5NywgMjM3LCAxMjAsIDIxMiwgNDMsIDUyLCAyMzYsIAorICAgIDIyOSwgMjQzLCAxNCwgMjA5LCA4NCwgMjMyLCAyMzIsIDIwOSwgODcsIDIxNiwgMTEsIDMsIDI0OSwgOTcsIDIwNiwgMTU4LCAKKyAgICAyMjcsIDIzNiwgMjQ5LCA4MiwgOTksIDIzNCwgMTMxLCAyMzUsIDcwLCA5OSwgMjM2LCAxODYsIDIxNCwgMjEzLCAyNDIsIAorICAgIDIwMywgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA2NCwgMjM3LCA1NCwgMywgMjMzLCAxNzcsIDEwMSwgNjMsIDIwOCwgNDgsIAorICAgIDYzLCAyMTIsIDUzLCAyMTEsIDIxNiwgMjAzLCAyMjUsIDI0OCwgMTM5LCAyMTEsIDIxNiwgNjMsIDIxMSwgMjE2LCAyMjQsIAorICAgIDU0LCAyNDgsIDEzOSwgMjExLCAyMTYsIDY0LCAyMTEsIDIxNiwgNjQsIDgwLCAyNDcsIDcsIDgxLCAyMDYsIDE3NiwgMjI0LCAKKyAgICAxMDgsIDU0LCAyMDYsIDIzNSwgMjM5LCAxNDksIDI1MSwgMTY0LCAyMzgsIDE0NCwgMjEzLCAyMjAsIDIzNywgNjYsIDIxMywgCisgICAgMjIwLCAyMzQsIDE5OSwgMjAyLCAyMzIsIDIzNCwgMTk5LCAyMDAsIDIxOSwgMjM0LCAxOTksIDIyNCwgNTQsIDUxLCAyMTYsIAorICAgIDQ2LCAyMTYsIDQ2LCAyMDMsIDIyNSwgNTEsIDIxNiwgNDYsIDY0LCAyMTksIDE0NywgNjMsIDIxOSwgMTQ3LCAyNDcsIDcsIAorICAgIDgxLCA4MCwgMjQ3LCA3LCA4MSwgMjIxLCAxOSwgMjAwLCAxOTUsIDgwLCAyMjEsIDE5LCAyMDAsIDE5NSwgMjQ5LCA5NCwgCisgICAgMjAwLCAxOTUsIDgwLCAyNDksIDk0LCAyMDAsIDE5NSwgMjE2LCAyNTAsIDMxLCAyNDIsIDIzNCwgODAsIDMxLCAyNDIsIAorICAgIDIzNCwgMTc2LCAyNDcsIDU2LCAyNDIsIDIzNCwgODAsIDE3NiwgMjQ3LCA1NiwgMjQyLCAyMzQsIDgsIDI0MiwgMjM0LCAKKyAgICAyMTAsIDEwMSwgNjQsIDgsIDI0MiwgMjM0LCAyMTYsIDI1MCwgOCwgMjQyLCAyMzQsIDIyMiwgMTgyLCAyNDIsIDIzNCwgCisgICAgMjA4LCAxMTAsIDc2LCAyNDEsIDIzNywgMjM2LCAyMjksIDIwNiwgMTk0LCAyNTAsIDE2NSwgMjM2LCAyMjksIDI0OSwgOTUsIAorICAgIDI1MCwgMTY1LCA4MCwgMjM2LCAyMjksIDI0OSwgOTUsIDI1MCwgMTY1LCAyMzYsIDIyOSwgMjQ2LCA5NiwgMjUwLCAxNjUsIAorICAgIDYzLCAyMzYsIDIyOSwgMjE1LCA5OCwgMjA4LCAxMDksIDY0LCAyMzYsIDIyOSwgMjE1LCA5OCwgMjA4LCAxMDksIDIwOCwgCisgICAgMjM3LCAyMDgsIDU3LCAyMTYsIDI1MCwgNjQsIDIwOCwgMTA5LCA0NCwgNjQsIDIwOCwgMTA5LCAxNzYsIDI0NywgNTYsIDYzLCAKKyAgICAyMDgsIDEwOSwgNjMsIDI0NywgNTYsIDY0LCAyMDgsIDEwOSwgMjE2LCAyNTAsIDYzLCAyMDgsIDEwOSwgODAsIDIxNiwgCisgICAgMjUwLCA2MywgMjA4LCAxMDksIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjEwLCAxMDEsIDY0LCAyMDgsIDEwOSwgODAsIDI1MCwgCisgICAgMTY1LCAxNzYsIDI0NywgNTYsIDI1MCwgMTY1LCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMzgsIDIzMiwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCAyMzgsIDIzMiwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAyMDksIDEwNiwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCAyMzgsIDIzMiwgMjE1LCA5OCwgMjEzLCAxNzMsIDYzLCAyMDgsIDEwOSwgODAsIDIzOCwgCisgICAgMjMyLCAyMTUsIDk4LCAyMTMsIDE3MywgNjMsIDIwOCwgMTA5LCAyMDQsIDE2NSwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAKKyAgICAyMDksIDEwMSwgMjE1LCA5OCwgMjUwLCAxNjUsIDIwNiwgMTk0LCAyNTAsIDE2NSwgMTc2LCAyNDcsIDU2LCAyMDYsIDE5NCwgCisgICAgMjUwLCAxNjUsIDgwLCAyMDYsIDE5NCwgMjUwLCAxNjUsIDIwOSwgMTA2LCAyMTUsIDI1NSwgNjMsIDI2LCA2NCwgMjM3LCAKKyAgICAyNywgNjMsIDIzNywgMjcsIDY0LCAyMzcsIDI3LCAyMzgsIDIzMiwgMjE1LCAyNTUsIDIxNiwgMjUwLCA2MywgMjM3LCAyNywgCisgICAgNDQsIDE3NiwgMjQ3LCA1NiwgMjM4LCAyMzIsIDIxNSwgOTgsIDIwOCwgMTA5LCA4MCwgMjA2LCAxOTQsIDIxNSwgMTU1LCAKKyAgICAyNTAsIDE2NSwgMjA5LCAzMywgMjA2LCAxLCAyMDUsIDkxLCAyMDksIDMzLCA4MCwgMjQ2LCAyNDAsIDIwOSwgMzMsIDIwOCwgCisgICAgMjM5LCA4MCwgMjA4LCAyMzksIDI0OSwgOTUsIDI1MCwgMTY1LCAyMzgsIDIzMiwgMjA2LCAxOTQsIDIxNCwgMjQ2LCAyNTAsIAorICAgIDE2NSwgODAsIDIzOCwgMjMyLCAyMDYsIDE5NCwgMjE0LCAyNDYsIDI1MCwgMTY1LCAyNDIsIDIzNSwgODEsIDIxMCwgMTAxLCAKKyAgICA2NCwgMjQ2LCAxNTUsIDE4OSwgOTUsIDI0MiwgMjM1LCA4MSwgMjI0LCA1NCwgNTEsIDIzOSwgMTQ2LCA2NCwgMjA4LCAxOTMsIAorICAgIDIwMywgMjI1LCA1MSwgMjM5LCAxNDYsIDY0LCAyMDgsIDE5MywgMjI0LCA1NCwgNTEsIDIxMCwgMTAxLCA2NCwgMjA4LCAKKyAgICAxOTMsIDIwMywgMjI1LCA1MSwgMjEwLCAxMDEsIDY0LCAyMDgsIDE5MywgNjMsIDIxNCwgNzksIDEzNCwgMjE3LCAyMSwgNjQsIAorICAgIDIxNCwgNzksIDEzNCwgMjE3LCAyMSwgNjQsIDIzOCwgNDMsIDEzNCwgMjE3LCAyMSwgNjMsIDI0MSwgNjUsIDIyMSwgMTU3LCAKKyAgICA2NCwgMjAwLCAxOTUsIDgwLCAyMzgsIDQzLCAxMzQsIDk5LCAxNjIsIDgzLCAxNDgsIDIyMiwgNjYsIDgzLCAxNDgsIDgwLCAKKyAgICA4MywgMTQ4LCA4MCwgMjA5LCAxMzksIDIwNCwgMTg1LCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAyMDksIAorICAgIDEzOSwgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgNTMsIDIwNCwgMTg1LCAyNDYsIDcxLCAyMTQsIDYzLCAKKyAgICAxMzQsIDIxNywgMjEsIDgwLCA1MywgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMTI4LCAyMDksIDEzOSwgCisgICAgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMTI4LCA1MywgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIAorICAgIDIxLCAyNDIsIDE4OCwgMjA4LCA5MywgMjE2LCAxMjgsIDIsIDIxNywgMjEsIDgwLCAyMzgsIDQzLCAxMzQsIDIxNywgMjEsIAorICAgIDgwLCAyMzQsIDEyOCwgMjM4LCA0MywgMTM0LCAyMTcsIDIxLCA4MCwgNjMsIDIzNCwgMTI3LCAyMTIsIDIyOCwgODAsIDYzLCAKKyAgICAyMzQsIDEyOCwgMjQ4LCAyMCwgMjM3LCAyOCwgMjM0LCAxMjcsIDIxMiwgMjI4LCAyMzcsIDI4LCAyMzQsIDEyOCwgMjQ4LCAKKyAgICAyMCwgMjIyLCA2NiwgNDksIDIxNiwgMTE2LCAyMTcsIDIxLCAyMjIsIDY2LCA1MSwgMjE2LCAxMTYsIDIxNywgMjEsIDIyMiwgCisgICAgNjYsIDIzNywgNDEsIDQ5LCAyMTYsIDExNiwgMjE3LCAyMSwgMjIyLCA2NiwgMjM3LCA0MSwgNTEsIDIxNiwgMTE2LCAyMTcsIAorICAgIDIxLCAyMjIsIDY2LCAyMjUsIDIzLCAyNTEsIDcxLCAyNDgsIDcwLCAyMTcsIDIxLCAyMjIsIDY2LCAyMTMsIDQxLCAyNTEsIAorICAgIDcxLCAyNDgsIDcwLCAyMTcsIDIxLCA4MCwgMjI1LCAyMywgMjUxLCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgCisgICAgMjEzLCA0MSwgMjUxLCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMjI1LCAyMywgMjUxLCA3MSwgMjQ4LCA3MCwgCisgICAgMjE3LCAyMSwgODAsIDIxMywgNDEsIDI1MSwgNzEsIDI0OCwgNzAsIDIxNywgMjEsIDE2MiwgNDksIDIwNSwgMTQ2LCAyMTAsIAorICAgIDU1LCAyNDgsIDcwLCAyMTcsIDIxLCAxNjIsIDUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA3MCwgMjE3LCAyMSwgMjIyLCAKKyAgICA2NiwgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAyMTcsIDIxLCAyMjIsIDY2LCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIxNywgCisgICAgMjEsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxMDIsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxMDUsIDI0MSwgMTcsIDE4OSwgCisgICAgNDQsIDE3LCAxNDcsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxNDksIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxNjQsIDI0MSwgCisgICAgMTcsIDE4OSwgNDQsIDE3LCAxODcsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAyMTAsIDEzNSwgMjQxLCAxNywgMTg5LCA0NCwgCisgICAgMTcsIDE5MiwgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDIxOSwgMTEzLCAyNDEsIDE3LCAxODksIDQ0LCA0MSwgMjA2LCAxNjYsIAorICAgIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDEwMiwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTA1LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAKKyAgICAxNDcsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDE0OSwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTY0LCAyNDEsIDE3LCA0NCwgNDMsIAorICAgIDE3LCAxODcsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDIxMCwgMTM1LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxOTIsIDI0MSwgCisgICAgMTcsIDQ0LCA0MywgMTcsIDIxOSwgMTEzLCAyNDEsIDE3LCA0NCwgNDMsIDQxLCAyMDYsIDE2NiwgMjQxLCAxNywgMTg5LCAKKyAgICA0NCwgNDMsIDE3LCAxMDIsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTA1LCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIAorICAgIDE0NywgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAxNDksIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTY0LCAyNDEsIAorICAgIDE3LCAxODksIDQ0LCA0MywgMTcsIDE4NywgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAyMTAsIDEzNSwgMjQxLCAxNywgCisgICAgMTg5LCA0NCwgNDMsIDE3LCAxOTIsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMjE5LCAxMTMsIDI0MSwgMTcsIDE4OSwgCisgICAgNDQsIDQzLCA0MSwgMjA2LCAxNjYsIDgwLCAyMDEsIDI3LCA4NywgNDgsIDgwLCA5MywgNTQsIDgwLCAyMjEsIDE1NywgNTQsIAorICAgIDgwLCAyNDAsIDIzNSwgNTQsIDgwLCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDgwLCA4NywgNDgsIDgwLCAxNTcsIDIzOSwgCisgICAgMTQsIDQ4LCAyMzksIDE2MCwgMjE1LCAxMDAsIDg3LCA0OCwgODAsIDIxMiwgMjIwLCA4NywgNDgsIDIwNSwgOTcsIDg3LCAKKyAgICA0OCwgODAsIDIwNSwgOTcsIDg3LCA0OCwgMjQxLCAyNDMsIDIwNSwgOTcsIDg3LCA0OCwgODAsIDI0MSwgMjQzLCAyMDUsIAorICAgIDk3LCA4NywgNDgsIDYzLCA4NywgNDgsIDIwNiwgNDUsIDIwNSwgMTU2LCA4NywgMjUwLCAyMDIsIDIwNiwgNDUsIDI0OCwgCisgICAgOTEsIDg3LCAyNTAsIDIwMiwgNjMsIDg3LCAyNTAsIDIwMiwgODAsIDYzLCAyNDIsIDE4OCwgMTkxLCAyNiwgODcsIDQ4LCAKKyAgICA4MCwgNjMsIDI0MiwgMTg4LCAxODIsIDI2LCA4NywgNDgsIDIwOCwgMTkwLCA2MywgODcsIDQ4LCA4MCwgMjQzLCA2NywgNjMsIAorICAgIDg3LCA0OCwgMjEzLCA0MCwgNjQsIDg3LCA0OCwgMjI1LCAyMiwgNjQsIDg3LCA0OCwgMjQ5LCAxMjgsIDIxMCwgMTAxLCA2NCwgCisgICAgODcsIDQ4LCAyMzYsIDE5OCwgMjEwLCAxMDEsIDY0LCA4NywgNDgsIDgwLCAyMjQsIDU0LCAyMTMsIDM5LCA2NCwgODcsIDQ4LCAKKyAgICA4MCwgMjAzLCAyMjUsIDIxMywgMzksIDY0LCA4NywgNDgsIDIxOCwgMjExLCAyMjQsIDU0LCAyMTMsIDM5LCA2NCwgODcsIAorICAgIDQ4LCAyNDIsIDE5NiwgMjI0LCA3NCwgMjE4LCAyMTEsIDIwMywgMjI1LCAyMTMsIDM5LCA2NCwgODcsIDQ4LCA0NCwgODAsIAorICAgIDY0LCA4NywgNDgsIDIwMSwgMzMsIDg3LCA0OCwgMjQ4LCAxNDMsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMjQ4LCAxNDMsIAorICAgIDg3LCA0OCwgMjQ4LCAxNDMsIDE1NywgMjM5LCAxNCwgNDgsIDgwLCAyNDgsIDE0MywgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAKKyAgICA4MCwgMjQ4LCAxNDMsIDg3LCA0OCwgODAsIDI0OCwgMTQzLCAxNTcsIDIzOSwgMTQsIDQ4LCAyMDYsIDE5NiwgODcsIDQ4LCAKKyAgICA4MCwgMjA2LCAxOTUsIDg3LCA0OCwgMjAxLCA1OCwgODcsIDQ4LCA4MCwgMjAxLCA1OCwgODcsIDQ4LCAyMTcsIDQ4LCA4NywgCisgICAgNDgsIDUzLCAyNDIsIDE5NiwgMjI0LCA3NCwgMTI2LCAyNDEsIDI3LCAyNTEsIDcwLCA2NCwgMjA1LCA5OSwgMjQzLCA0NSwgCisgICAgNCwgNjQsIDIwNSwgOTgsIDIxNiwgMTQsIDE3NiwgMjA4LCAyLCAxNzYsIDIwNywgMjExLCA0OSwgMjEyLCAxMjEsIDI0OSwgCisgICAgMTE0LCAyNDEsIDE0MiwgNTEsIDIxMiwgMTIxLCAyNDksIDExNCwgMjQxLCAxNDIsIDIxNywgMzQsIDMsIDczLCAyMjgsIDczLCAKKyAgICAyMTMsIDEwNiwgMjA5LCAxNywgMjE1LCAyNywgMjA4LCAyLCAyMDcsIDIxMiwgMjE1LCAyNywgMjA5LCAxNiwgODMsIDI0OSwgCisgICAgNzcsIDMsIDIzMywgMTc3LCA5NywgMTMsIDIxMywgMTksIDI0MSwgNzAsIDE2OCwgMjQwLCAyMzQsIDEzLCAyMzcsIDE3MSwgCisgICAgMjQxLCA3MCwgOTUsIDIyNCwgOTgsIDI1MSwgNzksIDk1LCAyMjQsIDk4LCAyMTcsIDMzLCA2NCwgMjQxLCA2NSwgMywgMjQ3LCAKKyAgICA1NCwgMjQwLCAxODIsIDI2LCAzLCAyNDAsIDE4MiwgMjM4LCAyMDIsIDc2LCAyMTcsIDQ2LCAyMDMsIDIxNiwgMjI0LCA1NCwgCisgICAgNTEsIDI0MywgMTYsIDMsIDI0MCwgMTgyLCAyMDMsIDIyNSwgNDksIDI0MywgMTYsIDMsIDI0MCwgMTgyLCA0OSwgMjE2LCAKKyAgICAyNTIsIDIyNywgMTY0LCA1MSwgMjE2LCAyNTIsIDIyNywgMTY0LCAyMzYsIDE4MywgMjE2LCAyNTIsIDIyNywgMTY0LCAyMjUsIAorICAgIDcxLCAxMTUsIDIwNywgMTcsIDIyNSwgNzEsIDEyNywgMjA3LCAxNywgNDksIDI2LCA1MSwgNTMsIDIwNCwgMTg0LCA0OSwgCisgICAgMjYsIDUxLCAyMDcsIDE3LCA0OSwgMjIxLCAyMywgMTY4LCA1MSwgMjA3LCAxNywgMTY4LCA0OSwgMjA3LCAxNywgMTE1LCAKKyAgICAyMDcsIDE4LCAzLCAyNDYsIDE1NiwgNTYsIDIyNCwgNTAsIDI0MCwgMjQwLCAyNDcsIDIzNSwgMjMzLCAxNzcsIDIxMiwgCisgICAgMTY1LCA2NCwgMjQzLCA2NiwgMjQxLCA2NCwgNjQsIDI0MywgNjYsIDI0MSwgNjUsIDMsIDk4LCAyMDYsIDExLCA2NCwgMjQzLCAKKyAgICA2NiwgMjQxLCA2NSwgMywgODcsIDIwNiwgMTEsIDY0LCA1MiwgMywgOTgsIDIwNiwgMTEsIDY0LCA1MiwgMywgODcsIDIwNiwgCisgICAgMTEsIDEzLCA0OSwgNjQsIDUyLCAxNTksIDEzLCA1MSwgNjQsIDUyLCAxNTksIDEzLCA0OSwgMjUxLCA3MSwgMTU5LCAxMywgCisgICAgNTEsIDI1MSwgNzEsIDE1OSwgMTMsIDQ5LCA1MywgMjUxLCA3MSwgMTU5LCAxMywgNTEsIDUzLCAyNTEsIDcxLCAxNTksIDEzLCAKKyAgICA0OSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDEzLCA1MSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDEzLCAKKyAgICA0OSwgMjM3LCA0MSwgMjE2LCAxMTUsIDEzLCA1MSwgMjM3LCA0MSwgMjE2LCAxMTUsIDE4MiwgMjE0LCA5MCwgNDgsIDE5MSwgCisgICAgMjE0LCA5MCwgNDgsIDI1MSwgNDcsIDIzNiwgNTEsIDI0NiwgMTU2LCA0OCwgMjQ2LCAxMTIsIDIzNiwgNTEsIDI0NiwgMTU2LCAKKyAgICA0OCwgNTEsIDU1LCAzLCA0NCwgMjE1LCAxMTMsIDE2OCwgOTgsIDQ4LCAxNjgsIDg3LCA0OCwgMTY4LCA0OSwgNTEsIDQ4LCAKKyAgICAxNjgsIDk4LCA1MywgNDgsIDE2OCwgODcsIDUzLCA0OCwgMTY4LCA0OSwgNTEsIDUzLCA0OCwgMTY4LCA5OCwgNTUsIDIzNiwgCisgICAgMjAxLCAxNDgsIDE2OCwgODcsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxNjgsIDk4LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDE2OCwgODcsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgMTY4LCA4NywgMjA4LCAxODYsIDQ4LCA1OSwgNjAsIDI0OCwgMTM3LCAKKyAgICA1OSwgNjAsIDI0MCwgMTc5LCA1OSwgNjAsIDI0MCwgNTEsIDU5LCA2MCwgMjQwLCAxNzgsIDU5LCA2MCwgMjM5LCAyNDMsIAorICAgIDU5LCA2MCwgMjQwLCAxMTQsIDU5LCA2MCwgMjQwLCA1MCwgNTksIDYwLCAyNDAsIDE3NywgNTksIDYwLCAyMzksIDIxMSwgCisgICAgNTksIDYwLCAyNDAsIDgyLCA1OSwgNjAsIDI0MCwgMTgsIDU5LCA2MCwgMjQwLCAxNDUsIDU5LCA2MCwgMjM5LCAyNDIsIDU5LCAKKyAgICA2MCwgMjQwLCAxMTMsIDU5LCA2MCwgMjQwLCA0OSwgNTksIDYwLCAyNDAsIDE3NiwgNTksIDYwLCAyMzksIDE5NSwgNTksIAorICAgIDYwLCAyNDAsIDY2LCA1OSwgNjAsIDI0MCwgMiwgNTksIDYwLCAyNDAsIDEyOSwgNTksIDYwLCAyMzksIDIyNiwgNTksIDYwLCAKKyAgICAyNDAsIDk3LCA1OSwgNjAsIDI0MCwgMzMsIDU5LCA2MCwgMjQwLCAxNjAsIDU5LCA2MCwgMjM5LCAyMTAsIDU5LCA2MCwgCisgICAgMjQwLCA4MSwgNTksIDYwLCAyNDAsIDE3LCA1OSwgNjAsIDI0MCwgMTQ0LCA1OSwgNjAsIDIzOSwgMjQxLCA1OSwgNjAsIAorICAgIDI0MCwgMTEyLCA1OSwgNjAsIDI0MCwgNDgsIDU5LCA2MCwgMjQwLCAxNzUsIDU5LCA2MCwgMjM5LCAxODcsIDU5LCA2MCwgCisgICAgMjQwLCA1OCwgNTksIDYwLCAyMzksIDI1MCwgNTksIDYwLCAyNDAsIDEyMSwgNTksIDYwLCAyMzksIDIxOCwgNTksIDYwLCAKKyAgICAyNDAsIDg5LCA1OSwgNjAsIDI0MCwgMjUsIDU5LCA2MCwgMjQwLCAxNTIsIDU5LCA2MCwgMjM5LCAyMDIsIDU5LCA2MCwgCisgICAgMjQwLCA3MywgNTksIDYwLCAyNDAsIDksIDU5LCA2MCwgMjQwLCAxMzYsIDU5LCA2MCwgMjM5LCAyMzMsIDU5LCA2MCwgMjQwLCAKKyAgICAxMDQsIDU5LCA2MCwgMjQwLCA0MCwgNTksIDYwLCAyNDAsIDE2NywgNTksIDYwLCAyMzksIDE5NCwgNTksIDYwLCAyNDAsIAorICAgIDY1LCA1OSwgNjAsIDI0MCwgMSwgNTksIDYwLCAyNDAsIDEyOCwgNTksIDYwLCAyMzksIDIyNSwgNTksIDYwLCAyNDAsIDk2LCAKKyAgICA1OSwgNjAsIDI0MCwgMzIsIDU5LCA2MCwgMjQwLCAxNTksIDU5LCA2MCwgMjM5LCAyMDksIDU5LCA2MCwgMjQwLCA4MCwgNTksIAorICAgIDYwLCAyNDAsIDE2LCA1OSwgNjAsIDI0MCwgMTQzLCA1OSwgNjAsIDIzOSwgMjQwLCA1OSwgNjAsIDI0MCwgMTExLCA1OSwgCisgICAgNjAsIDI0MCwgNDcsIDU5LCA2MCwgMjQwLCAxNzQsIDU5LCA2MCwgMjM5LCAxODMsIDU5LCA2MCwgMjQwLCA1NCwgNTksIDYwLCAKKyAgICAyMzksIDI0NiwgNTksIDYwLCAyNDAsIDExNywgNTksIDYwLCAyMzksIDIxNCwgNTksIDYwLCAyNDAsIDg1LCA1OSwgNjAsIAorICAgIDI0MCwgMjEsIDU5LCA2MCwgMjQwLCAxNDgsIDU5LCA2MCwgMjM5LCAxOTgsIDU5LCA2MCwgMjQwLCA2OSwgNTksIDYwLCAKKyAgICAyNDAsIDUsIDU5LCA2MCwgMjQwLCAxMzIsIDU5LCA2MCwgMjM5LCAyMjksIDU5LCA2MCwgMjQwLCAxMDAsIDU5LCA2MCwgCisgICAgMjQwLCAzNiwgNTksIDYwLCAyNDAsIDE2MywgNTksIDYwLCAyMzksIDE5MCwgNTksIDYwLCAyNDAsIDYxLCA1OSwgNjAsIAorICAgIDIzOSwgMjUzLCA1OSwgNjAsIDI0MCwgMTI0LCA1OSwgNjAsIDIzOSwgMjIxLCA1OSwgNjAsIDI0MCwgOTIsIDU5LCA2MCwgCisgICAgMjQwLCAyOCwgNTksIDYwLCAyNDAsIDE1NSwgNTksIDYwLCAyMzksIDIwNSwgNTksIDYwLCAyNDAsIDc2LCA1OSwgNjAsIAorICAgIDI0MCwgMTIsIDU5LCA2MCwgMjQwLCAxMzksIDU5LCA2MCwgMjM5LCAyMzYsIDU5LCA2MCwgMjQwLCAxMDcsIDU5LCA2MCwgCisgICAgMjQwLCA0MywgNTksIDYwLCAyNDAsIDE3MCwgNTksIDYwLCAyMzksIDE4NiwgNTksIDYwLCAyNDAsIDU3LCA1OSwgNjAsIAorICAgIDIzOSwgMjQ5LCA1OSwgNjAsIDI0MCwgMTIwLCA1OSwgNjAsIDIzOSwgMjE3LCA1OSwgNjAsIDI0MCwgODgsIDU5LCA2MCwgCisgICAgMjQwLCAyNCwgNTksIDYwLCAyNDAsIDE1MSwgNTksIDYwLCAyMzksIDIwMSwgNTksIDYwLCAyNDAsIDcyLCA1OSwgNjAsIAorICAgIDI0MCwgOCwgNTksIDYwLCAyNDAsIDEzNSwgNTksIDYwLCAyMzksIDIzMiwgNTksIDYwLCAyNDAsIDEwMywgNTksIDYwLCAKKyAgICAyNDAsIDM5LCA1OSwgNjAsIDI0MCwgMTY2LCA1OSwgNjAsIDIzOSwgMTkzLCA1OSwgNjAsIDI0MCwgNjQsIDU5LCA2MCwgCisgICAgMjQwLCAwLCA1OSwgNjAsIDI0MCwgMTI3LCA1OSwgNjAsIDIzOSwgMjI0LCA1OSwgNjAsIDI0MCwgOTUsIDU5LCA2MCwgMjQwLCAKKyAgICAzMSwgNTksIDYwLCAyNDAsIDE1OCwgNTksIDYwLCAyMzksIDIwOCwgNTksIDYwLCAyNDAsIDc5LCA1OSwgNjAsIDI0MCwgMTUsIAorICAgIDU5LCA2MCwgMjQwLCAxNDIsIDU5LCA2MCwgMjM5LCAyMzksIDU5LCA2MCwgMjQwLCAxMTAsIDU5LCA2MCwgMjQwLCA0NiwgCisgICAgNTksIDYwLCAyNDAsIDE3MywgNTksIDYwLCAyMzksIDE4MSwgNTksIDYwLCAyNDAsIDUyLCA1OSwgNjAsIDIzOSwgMjQ0LCAKKyAgICA1OSwgNjAsIDI0MCwgMTE1LCA1OSwgNjAsIDIzOSwgMjEyLCA1OSwgNjAsIDI0MCwgODMsIDU5LCA2MCwgMjQwLCAxOSwgNTksIAorICAgIDYwLCAyNDAsIDE0NiwgNTksIDYwLCAyMzksIDE5NiwgNTksIDYwLCAyNDAsIDY3LCA1OSwgNjAsIDI0MCwgMywgNTksIDYwLCAKKyAgICAyNDAsIDEzMCwgNTksIDYwLCAyMzksIDIyNywgNTksIDYwLCAyNDAsIDk4LCA1OSwgNjAsIDI0MCwgMzQsIDU5LCA2MCwgCisgICAgMjQwLCAxNjEsIDU5LCA2MCwgMjM5LCAxODgsIDU5LCA2MCwgMjQwLCA1OSwgNTksIDYwLCAyMzksIDI1MSwgNTksIDYwLCAKKyAgICAyNDAsIDEyMiwgNTksIDYwLCAyMzksIDIxOSwgNTksIDYwLCAyNDAsIDkwLCA1OSwgNjAsIDI0MCwgMjYsIDU5LCA2MCwgCisgICAgMjQwLCAxNTMsIDU5LCA2MCwgMjM5LCAyMDMsIDU5LCA2MCwgMjQwLCA3NCwgNTksIDYwLCAyNDAsIDEwLCA1OSwgNjAsIAorICAgIDI0MCwgMTM3LCA1OSwgNjAsIDIzOSwgMjM0LCA1OSwgNjAsIDI0MCwgMTA1LCA1OSwgNjAsIDI0MCwgNDEsIDU5LCA2MCwgCisgICAgMjQwLCAxNjgsIDU5LCA2MCwgMjM5LCAxODQsIDU5LCA2MCwgMjQwLCA1NSwgNTksIDYwLCAyMzksIDI0NywgNTksIDYwLCAKKyAgICAyNDAsIDExOCwgNTksIDYwLCAyMzksIDIxNSwgNTksIDYwLCAyNDAsIDg2LCA1OSwgNjAsIDI0MCwgMjIsIDU5LCA2MCwgCisgICAgMjQwLCAxNDksIDU5LCA2MCwgMjM5LCAxOTksIDU5LCA2MCwgMjQwLCA3MCwgNTksIDYwLCAyNDAsIDYsIDU5LCA2MCwgMjQwLCAKKyAgICAxMzMsIDU5LCA2MCwgMjM5LCAyMzAsIDU5LCA2MCwgMjQwLCAxMDEsIDU5LCA2MCwgMjQwLCAzNywgNTksIDYwLCAyNDAsIAorICAgIDE2NCwgNTksIDYwLCAyMzksIDE5MSwgNTksIDYwLCAyNDAsIDYyLCA1OSwgNjAsIDIzOSwgMjU0LCA1OSwgNjAsIDI0MCwgCisgICAgMTI1LCA1OSwgNjAsIDIzOSwgMjIyLCA1OSwgNjAsIDI0MCwgOTMsIDU5LCA2MCwgMjQwLCAyOSwgNTksIDYwLCAyNDAsIAorICAgIDE1NiwgNTksIDYwLCAyMzksIDIwNiwgNTksIDYwLCAyNDAsIDc3LCA1OSwgNjAsIDI0MCwgMTMsIDU5LCA2MCwgMjQwLCAKKyAgICAxNDAsIDU5LCA2MCwgMjM5LCAyMzcsIDU5LCA2MCwgMjQwLCAxMDgsIDU5LCA2MCwgMjQwLCA0NCwgNTksIDYwLCAyNDAsIAorICAgIDE3MSwgNTksIDYwLCAyMzksIDE4MiwgNTksIDYwLCAyNDAsIDUzLCA1OSwgNjAsIDIzOSwgMjQ1LCA1OSwgNjAsIDI0MCwgCisgICAgMTE2LCA1OSwgNjAsIDIzOSwgMjEzLCA1OSwgNjAsIDI0MCwgODQsIDU5LCA2MCwgMjQwLCAyMCwgNTksIDYwLCAyNDAsIAorICAgIDE0NywgNTksIDYwLCAyMzksIDE5NywgNTksIDYwLCAyNDAsIDY4LCA1OSwgNjAsIDI0MCwgNCwgNTksIDYwLCAyNDAsIDEzMSwgCisgICAgNTksIDYwLCAyMzksIDIyOCwgNTksIDYwLCAyNDAsIDk5LCA1OSwgNjAsIDI0MCwgMzUsIDU5LCA2MCwgMjQwLCAxNjIsIDU5LCAKKyAgICA2MCwgMjM5LCAxODksIDU5LCA2MCwgMjQwLCA2MCwgNTksIDYwLCAyMzksIDI1MiwgNTksIDYwLCAyNDAsIDEyMywgNTksIAorICAgIDYwLCAyMzksIDIyMCwgNTksIDYwLCAyNDAsIDkxLCA1OSwgNjAsIDI0MCwgMjcsIDU5LCA2MCwgMjQwLCAxNTQsIDU5LCA2MCwgCisgICAgMjM5LCAyMDQsIDU5LCA2MCwgMjQwLCA3NSwgNTksIDYwLCAyNDAsIDExLCA1OSwgNjAsIDI0MCwgMTM4LCA1OSwgNjAsIAorICAgIDIzOSwgMjM1LCA1OSwgNjAsIDI0MCwgMTA2LCA1OSwgNjAsIDI0MCwgNDIsIDU5LCA2MCwgMjQwLCAxNjksIDU5LCA2MCwgCisgICAgMjM5LCAxODUsIDU5LCA2MCwgMjQwLCA1NiwgNTksIDYwLCAyMzksIDI0OCwgNTksIDYwLCAyNDAsIDExOSwgNTksIDYwLCAKKyAgICAyMzksIDIxNiwgNTksIDYwLCAyNDAsIDg3LCA1OSwgNjAsIDI0MCwgMjMsIDU5LCA2MCwgMjQwLCAxNTAsIDU5LCA2MCwgCisgICAgMjM5LCAyMDAsIDU5LCA2MCwgMjQwLCA3MSwgNTksIDYwLCAyNDAsIDcsIDU5LCA2MCwgMjQwLCAxMzQsIDU5LCA2MCwgMjM5LCAKKyAgICAyMzEsIDU5LCA2MCwgMjQwLCAxMDIsIDU5LCA2MCwgMjQwLCAzOCwgNTksIDYwLCAyNDAsIDE2NSwgNTksIDYwLCAyMzksIAorICAgIDE5MiwgNTksIDYwLCAyNDAsIDYzLCA1OSwgNjAsIDIzOSwgMjU1LCA1OSwgNjAsIDI0MCwgMTI2LCA1OSwgNjAsIDIzOSwgCisgICAgMjIzLCA1OSwgNjAsIDI0MCwgOTQsIDU5LCA2MCwgMjQwLCAzMCwgNTksIDYwLCAyNDAsIDE1NywgNTksIDYwLCAyMzksIAorICAgIDIwNywgNTksIDYwLCAyNDAsIDc4LCA1OSwgNjAsIDI0MCwgMTQsIDU5LCA2MCwgMjQwLCAxNDEsIDU5LCA2MCwgMjM5LCAKKyAgICAyMzgsIDU5LCA2MCwgMjQwLCAxMDksIDU5LCA2MCwgMjQwLCA0NSwgNTksIDYwLCAyNDAsIDE3MiwgODcsIDIwNCwgMTQxLCAKKyAgICA1NSwgMywgODMsIDk3LCA4NywgMjA0LCAxNDEsIDU1LCAzLCA1MywgODMsIDk3LCA5OCwgNTMsIDU1LCAzLCA4MywgOTcsIAorICAgIDg3LCA1MywgNTUsIDMsIDgzLCA5NywgNDksIDUxLCA1MywgNTUsIDMsIDgzLCA5NywgODcsIDIwNCwgMTQxLCA1NSwgMjM2LCAKKyAgICAyMDEsIDE0OCwgOTgsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgODcsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgMTkxLCA1NSwgCisgICAgMywgMjMzLCAxNzcsIDk3LCAxODIsIDU1LCAzLCAyMzMsIDE3NywgOTcsIDE4MiwgMjA1LCA4MywgNDgsIDE5MSwgMjA1LCAKKyAgICA4MywgNDgsIDk4LCA1MywgMjQxLCAyNDUsIDQ4LCA4NywgNTMsIDI0MSwgMjQ1LCA0OCwgOTgsIDIwNSwgODMsIDI0MSwgCisgICAgMjQ1LCA0OCwgODcsIDIwNSwgODMsIDI0MSwgMjQ1LCA0OCwgODcsIDIwNCwgMTQxLCAyMDUsIDgzLCAyNDEsIDI0NSwgNDgsIAorICAgIDg3LCA1NSwgMywgMjM5LCAxODAsIDIwOCwgOTIsIDE4MiwgNTUsIDIwNSwgMTg2LCAxNDgsIDE5MSwgNTUsIDIwNSwgMTg2LCAKKyAgICAxNDgsIDg3LCA1NSwgMywgMjA3LCA3LCAzLCA4MywgOTcsIDg3LCA1NSwgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA4NywgCisgICAgMjA0LCAxNDEsIDU1LCAzLCAyMDcsIDYsIDg3LCAyMDQsIDE0MSwgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA4NywgMjA0LCAKKyAgICAxNDEsIDU1LCAzLCAyMDcsIDcsIDMsIDUzLCA4MywgOTcsIDk4LCAyNTAsIDIwNCwgODcsIDI1MCwgMjA0LCA5OCwgNTMsIAorICAgIDI1MCwgMjA0LCA4NywgNTMsIDI1MCwgMjA0LCA5OCwgNTUsIDIwNSwgMTg2LCA2MywgMjQxLCA2NCwgODcsIDU1LCAyMDUsIAorICAgIDE4NiwgNjMsIDI0MSwgNjQsIDk4LCA1NSwgMjM2LCAyMDEsIDI0OSwgNzcsIDIwNSwgMTg2LCA2MywgMjQxLCA2NCwgODcsIAorICAgIDU1LCAyMzYsIDIwMSwgMjQ5LCA3NywgMjA1LCAxODYsIDYzLCAyNDEsIDY0LCAxNTcsIDIwMSwgNDgsIDI2LCAyMDgsIDI1NCwgCisgICAgMjM5LCAxNCwgNDgsIDE1NywgMjM5LCAxNCwgMjYsIDIwOCwgMjU0LCAyMDEsIDQ4LCA0OCwgMTU3LCAyMDEsIDQ4LCA1NSwgCisgICAgMywgMTE3LCAxNTcsIDIzOSwgMTQsIDU1LCAzLCAxMTcsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMywgMTE3LCAyMDgsIAorICAgIDI1NCwgMjAxLCA0OCwgNTUsIDMsIDExNywgMTU3LCAyMDEsIDQ4LCA1NSwgMjYsIDE1NywgMjM5LCAxNCwgNDgsIDE1NywgCisgICAgMjM5LCAxNCwgNTUsIDI2LCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMjYsIDIwOCwgCisgICAgMjU0LCAyMDEsIDQ4LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDU1LCAyNiwgMTU3LCAyMDEsIDQ4LCA0OCwgMjEzLCAxOSwgCisgICAgMjQxLCA3MSwgMjQyLCAyMjgsIDIzNywgMTcxLCAyNDEsIDcwLCAyMzcsIDE3MSwgMjQxLCA3MSwgMjQyLCAyMjgsIDIxMywgCisgICAgMTksIDI0MSwgNzAsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMjQyLCAyMjgsIDE1NywgMjM5LCAxNCwgNDgsIDE1NywgMjM5LCAKKyAgICAxNCwgNTUsIDI0MiwgMjI4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDIzNywgMTcxLCAyNDEsIDcxLCAyNDIsIDIyOCwgCisgICAgMTU3LCAyMzksIDE0LCA0OCwgMjEzLCAxOSwgMjQxLCA3MSwgMjQyLCAyMjgsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMTU3LCAKKyAgICAyMzksIDE0LCA1NSwgMjQyLCAyMjgsIDE1NywgMjAxLCA0OCwgNDgsIDE1NywgMjAxLCA0OCwgNTUsIDI0MiwgMjI4LCAxNTcsIAorICAgIDIzOSwgMTQsIDQ4LCAyMDEsIDc4LCA1NSwgMjE1LCA5NiwgMjQxLCA3LCAyMTMsIDQ2LCA1NSwgMjE1LCA5NiwgODcsIDIwNiwgCisgICAgOTgsIDI0MiwgMTg2LCAyMDMsIDIxNiwgNTUsIDIxNSwgOTYsIDg3LCAyMDYsIDk4LCAyNDIsIDE4NiwgMjM5LCAxNjUsIDU1LCAKKyAgICAyMTUsIDk2LCAxOTEsIDIwNiwgOTgsIDI0MiwgMTg2LCAyMjUsIDE4LCA1NSwgMjE1LCA5NiwgMTkxLCAyMDYsIDk4LCAyNDIsIAorICAgIDE4NiwgMjEzLCAzNSwgMjEzLCAzOCwgMjUwLCAyMzcsIDI0NiwgMTEyLCA0OCwgMjI1LCAyMSwgMjUwLCAyMzcsIDI1MSwgCisgICAgNDcsIDQ4LCAyMDUsIDE1OCwgMjUwLCAyMzcsIDI1MSwgNDcsIDQ4LCAyNDgsIDkzLCAyNTAsIDIzNywgMjUxLCA0NywgNDgsIAorICAgIDIwNSwgMTU4LCAyNTAsIDIzNywgMjQ2LCAxMTIsIDU1LCAzLCAyMjEsIDE1NiwgMjA1LCAxNTgsIDI1MCwgMjM3LCAyNTEsIAorICAgIDQ3LCA1NSwgMywgMjE1LCAxMTMsIDIyNCwgNTQsIDUxLCAyMTAsIDE2OSwgMjQ2LCAxMTIsIDQ4LCAyMjQsIDU0LCA0OSwgCisgICAgMjEwLCAxNjksIDI1MSwgNDcsIDQ4LCAyNTEsIDQ3LCAyNDYsIDExMCwgMjQ2LCAxNTYsIDQ4LCAyNDYsIDExMiwgMjQ2LCAKKyAgICAxMTAsIDI0NiwgMTU2LCA0OCwgODcsIDU1LCA4OCwgMjA5LCAyNTAsIDk4LCA0OCwgOTgsIDU1LCA4OCwgMjA5LCAyNTAsIAorICAgIDg3LCA0OCwgMjA5LCAyNTAsIDg3LCA1NSwgODgsIDk4LCA0OCwgODcsIDU1LCAzLCA5MywgNTcsIDk4LCA1NSwgMywgOTMsIAorICAgIDU3LCA4NywgNTUsIDIwNiwgMzgsIDIwMCwgMTk1LCA0OSwgNTEsIDU1LCAyMDYsIDM4LCA0LCAyNDYsIDE1NSwgMTgyLCAKKyAgICAyMDQsIDE0MSwgNTUsIDIzNiwgMjAxLCA0LCAyNDYsIDE1NSwgNDksIDE1NCwgMTE1LCA1MSwgMTU0LCAxMjcsIDIzNCwgCisgICAgMTYwLCA0OSwgMTU0LCAxMjcsIDUxLCAxNTQsIDExNSwgMjM0LCAxNjAsIDExNSwgMTU0LCA1MSwgMTI3LCAxNTQsIDQ5LCAKKyAgICAyMzQsIDE2MCwgMTE1LCAxNTQsIDQ5LCAxMjcsIDE1NCwgNTEsIDIzNCwgMTYwLCA0OSwgMTU0LCAxMTUsIDUxLCAxNTQsIAorICAgIDExNSwgMjM0LCAxNjAsIDExNSwgMTU0LCA1MSwgMTI3LCAxNTQsIDUxLCAyMzQsIDE2MCwgNDksIDE1NCwgMTI3LCA1MSwgCisgICAgMTU0LCAxMjcsIDIzNCwgMTYwLCAxMTUsIDE1NCwgNDksIDEyNywgMTU0LCA0OSwgMjM0LCAxNjAsIDk4LCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCAxMTUsIDIwNSwgMTg2LCAxNDgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDIwNSwgMTg2LCAxNDgsIAorICAgIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIwNSwgMTg2LCAxNDgsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIwNSwgCisgICAgMTg2LCAxNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDIwNSwgMTg2LCAxNDgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAKKyAgICAxMjcsIDIwNSwgMTg2LCAxNDgsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgNDksIDIwNSwgMTg2LCAxNDgsIDE5MSwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDIwNSwgMTg2LCAxNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDIzNiwgMjAxLCAxNDgsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIzNiwgCisgICAgMjAxLCAxNDgsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIzNiwgMjAxLCAxNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAKKyAgICAxMjcsIDIzNiwgMjAxLCAxNDgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDIzNiwgMjAxLCAxNDgsIDE4MiwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDIzNiwgMjAxLCAxNDgsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgNDksIDIzNiwgMjAxLCAxNDgsIAorICAgIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjcsIDE4MiwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDI0OCwgMjEyLCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgNDYsIDg3LCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCAxMTUsIDg4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjcsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgNDksIDI0OCwgMjEyLCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgNDYsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIAorICAgIDg4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjAzLCAyMjgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDg4LCA4NywgCisgICAgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjcsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCA5OCwgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgMjAzLCAyMjgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDg4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgMjM5LCAxNjcsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCAxNjgsIDI0MSwgMjQ0LCA5OCwgMjM0LCAxNjEsIDMsIAorICAgIDE1NCwgMTI3LCAyNDgsIDIyOCwgMTY4LCAyNDEsIDI0NCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgODgsIDE2OCwgCisgICAgMjQxLCAyNDQsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDI0OCwgMjI4LCAxNjgsIDI0MSwgMjQ0LCAxODIsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyNDgsIDIxMiwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCAxOTEsIDIzNCwgMTYxLCAKKyAgICAzLCAxNTQsIDQ5LCAyNDgsIDIxMiwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCA1MSwgNTMsIDU1LCAzLCAyMTIsIAorICAgIDIxOSwgMjM0LCAxMzYsIDIzOCwgMTIyLCAyLCA4OCwgODcsIDQ4LCAyMDUsIDI0MSwgMjE3LCA0NCwgODgsIDg3LCA0OCwgCisgICAgOTgsIDU1LCA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDg3LCA1NSwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCA4NywgNTUsIDg4LCAKKyAgICAyNTEsIDExNywgMTYwLCAxMzgsIDIyNCwgMjQxLCA4OCwgOTgsIDQ4LCA5OCwgNTUsIDIwNiwgMzgsIDIyNCwgMjQwLCAyMzUsIAorICAgIDY3LCA4OCwgODcsIDQ4LCAyMDgsIDMsIDg4LCA4NywgNDgsIDk4LCA1NSwgMjA2LCAzOCwgMjA4LCAyLCAyMDcsIDIxMiwgCisgICAgODgsIDk4LCA0OCwgNDksIDIzNywgNzIsIDIwNywgNiwgNTEsIDIzNywgNzIsIDIwNywgNiwgMTE1LCAyMzcsIDcyLCAyMDcsIAorICAgIDYsIDEyNywgMjM3LCA3MiwgMjA3LCA2LCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgMjQxLCAxNDIsIDE5OSwgMTU4LCAyMTgsIAorICAgIDIxMywgMjA4LCAyMDQsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjA0LCAxMjgsIDI0NiwgNzksIDQ5LCA2NCwgMjQyLCAxOTYsIAorICAgIDE1OSwgNTEsIDY0LCAyNDIsIDE5NiwgMTU5LCA0OSwgNjQsIDIxNiwgMTE1LCA1MSwgNjQsIDIxNiwgMTE1LCAxOTksIDE1OCwgCisgICAgMjE4LCAyMTMsIDQ5LCAyMjgsIDEzMywgMTU5LCAxOTksIDE1OCwgMjE4LCAyMTMsIDUxLCAyMjgsIDEzMywgMTU5LCAxOTksIAorICAgIDE1OCwgMjE4LCAyMTMsIDQ5LCAyNDgsIDE2NywgMTU5LCAxOTksIDE1OCwgMjE4LCAyMTMsIDUxLCAyNDgsIDE2NywgMTU5LCAKKyAgICA0OSwgNTIsIDI0OCwgNzAsIDMsIDIwMywgMjUxLCA1MSwgNTIsIDI0OCwgNzAsIDMsIDIwMywgMjUxLCA0OSwgNTIsIDI0OCwgCisgICAgNzAsIDMsIDIwNiwgMTIsIDIyOCwgMTE4LCAyMDUsIDE1OCwgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIDcwLCAzLCAyMDYsIDEyLCAKKyAgICAyMjgsIDExOCwgMjQ4LCA5MywgMjQzLCAxNSwgNDksIDUyLCAyNDgsIDcwLCAzLCAyMDYsIDEyLCAyMjgsIDExOCwgMjQ4LCAKKyAgICA5MywgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIDcwLCAzLCAyMDYsIDEyLCAyMjgsIDExOCwgMjA1LCAxNTgsIDI0MywgMTUsIAorICAgIDQ5LCAyNTEsIDcxLCAyNDgsIDcwLCAzLCAyNDAsIDE4MiwgNTEsIDI1MSwgNzEsIDI0OCwgNzAsIDMsIDI0MCwgMTgyLCA0OSwgCisgICAgMjUwLCAyMzcsIDIyNCwgMjQxLCAxNTksIDUxLCAyNTAsIDIzNywgMjM1LCA2NywgMTU5LCA1MywgNDksIDI1MCwgMjM3LCAKKyAgICAyMzUsIDY3LCAxNTksIDUzLCA1MSwgMjUwLCAyMzcsIDIyNCwgMjQxLCAxNTksIDQ5LCA2MywgMjA1LCAxNDYsIDIxMCwgNTUsIAorICAgIDE1OSwgNTEsIDYzLCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAyMzksIDE4MCwgMjM3LCAxMjcsIDgzLCAxOTksIDI3LCAKKyAgICAyMjQsIDE3NiwgMjIyLCA3MywgMjUxLCA3MSwgMjE3LCA0NiwgMjI1LCAyOCwgNTEsIDI1MSwgNzEsIDIwMywgNzMsIDMsIAorICAgIDIwOCwgMTkzLCAyMjIsIDczLCA1MSwgMjUxLCA3MSwgMywgMjQwLCAxODIsIDI1MSwgNzEsIDMsIDIxMiwgMTIzLCAyMjgsIAorICAgIDczLCAyNTEsIDIzOSwgMjUxLCA3MCwgMjA4LCAyMjQsIDI1MSwgNzEsIDIxNywgNDYsIDIyNSwgMjgsIDIwOCwgMjI0LCAKKyAgICAyNTEsIDcxLCAyMTcsIDQ2LCAyMDMsIDIyOCwgMjA0LCAxODUsIDI1MSwgNzAsIDIxMywgMTA1LCAyNTEsIDcwLCAyNTEsIAorICAgIDcxLCAzLCAyMDMsIDI1MSwgMjEzLCAxMDUsIDI1MSwgNzEsIDMsIDIwMywgMjUxLCAyMTcsIDEzOCwgMjUxLCA3MSwgMjE3LCAKKyAgICA0NiwgMjAzLCAyMjgsIDIxNywgMTM4LCAyNTEsIDcxLCAyMTcsIDQ2LCAyMzksIDE2NywgMjIyLCA3MywgMjUxLCA3MSwgMywgCisgICAgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgMTE1LCAyNiwgMjEzLCA0NiwgMjIyLCAKKyAgICA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgMTE1LCAyNiwgCisgICAgMjI1LCAyOCwgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCAKKyAgICA5NiwgMTI3LCAyNiwgMjEzLCA0NiwgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgCisgICAgMTE4LCA1NSwgMjE1LCA5NiwgMTI3LCAyNiwgMjI1LCAyOCwgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgCisgICAgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgNTEsIDI2LCAyMDMsIDIyOCwgMjIyLCA3MywgMjUxLCA3MSwgMywgCisgICAgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgNDksIDI2LCAyMDMsIDIyOCwgMjIyLCAKKyAgICA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgNTEsIDI2LCAKKyAgICAyMzksIDE2NywgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgCisgICAgMjE1LCA5NiwgNDksIDI2LCAyMzksIDE2NywgMjEzLCAxMDUsIDIzOCwgMTgxLCAyMTAsIDE0MSwgMjM4LCAxODEsIDIxMCwgCisgICAgMTQyLCAzLCAyMTYsIDI0NiwgMjM4LCAxODEsIDIxMCwgMTQyLCAzLCA0LCAyNDYsIDE1NiwgNTYsIDIzOCwgMTgxLCAyMTAsIAorICAgIDE0MiwgMywgNTEsIDU1LCA1NiwgMjM4LCAxODEsIDIxMCwgMTQyLCAzLCA0OSwgNTUsIDU2LCAyNDYsIDE1NiwgMywgMjMzLCAKKyAgICAxNzcsIDE0OCwgNDQsIDgzLCAxNDgsIDQ0LCAyMTYsIDEyMCwgNDQsIDIxMywgMTA2LCAyMDksIDE2LCA0NCwgMjE2LCAxNCwgCisgICAgMjQ2LCAxNTYsIDI0MCwgMjQwLCAyNDcsIDIzNSwgMjMzLCAxNzcsIDI0OSwgNzcsIDI2LCAyMDUsIDE1OCwgMTY3LCAyNDAsIAorICAgIDI0MCwgMjQ3LCAyMzUsIDgzLCAxNDgsIDI0NiwgMTU2LCAzLCAyMDcsIDIxNCwgMjAwLCAxOTUsIDQ0LCAyNTEsIDQ1LCAKKyAgICAyNDAsIDIzNSwgNTQsIDExNSwgNTUsIDIwNiwgMzgsIDI0NiwgMTU1LCA0NCwgNjQsIDI0OCwgMjAsIDQ0LCAyNDgsIDIwLCAKKyAgICA0NCwgMjI0LCAyNDAsIDQ0LCAyMzUsIDY2LCAyNDYsIDE1NiwgMywgNCwgMjQ2LCAxNTYsIDIwNSwgMTg2LCAyMDYsIDEwNywgCisgICAgMjEzLCA0NiwgMjQ2LCAxNTYsIDMsIDEyMCwgMjMzLCAxNzcsIDIwOCwgMzUsIDIwNSwgMTg2LCAyMDYsIDEwNywgMjEzLCAKKyAgICA0NiwgOTUsIDIxMywgMTksIDI0MSwgNzEsIDIwOSwgNzUsIDk1LCAyMzcsIDE3MSwgMjQxLCA3MSwgMjA5LCA3NSwgOTUsIAorICAgIDI1MCwgMTY1LCA5NSwgNCwgMjQ2LCAxNTUsIDk1LCAyMDgsIDE5MywgMTIwLCAyMjcsIDE2MywgMjA4LCAxOTEsIDIwNSwgCisgICAgOTksIDMsIDczLCA1NiwgMjA1LCA5OSwgMywgMjAzLCAyNTEsIDIxMiwgMTIzLCAyMjgsIDExOCwgMjA1LCA5OCwgMjA1LCAKKyAgICA5OSwgMywgMjEwLCAxNDgsIDI1MCwgMTU2LCAyNDgsIDkyLCA1MSwgMjA1LCA5OSwgODgsIDQ5LCAyMDUsIDk4LCA0OSwgCisgICAgMjA1LCA5OSwgMjQ4LCAyMTIsIDgzLCAxNDgsIDgzLCAyNDksIDc3LCAyNDgsIDIxMiwgNTEsIDIwNSwgOTgsIDI0OCwgODAsIAorICAgIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyNDgsIDgwLCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgNjMsIDI0OCwgNzksIDI0LCAzLCAKKyAgICA0OSwgMTY3LCAyNDgsIDE0NCwgMjQsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCA2NCwgMjMzLCAxMTEsIDYzLCAyMzMsIDExMSwgCisgICAgNDksIDIwMSwgMjIsIDIzNywgMTI3LCA1MSwgMjAxLCAyMiwgMjM3LCAxMjcsIDQ5LCA1MywgMjAxLCAyMiwgMjM3LCAxMjcsIAorICAgIDUxLCA1MywgMjAxLCAyMiwgMjM3LCAxMjcsIDIyOCwgMTEwLCAyMjgsIDk0LCAyMDYsIDgsIDExOSwgMjI4LCA5NCwgMjI4LCAKKyAgICA5NSwgMjIwLCAyOCwgMywgODMsIDE0OCwgMjM5LCAxNzQsIDIyMSwgMjMsIDUyLCAzLCAyNDMsIDM3LCAyMTYsIDI1MSwgCisgICAgMjI4LCAxMDcsIDI1MCwgMTg4LCAyMDksIDIxNCwgMjE1LCAxLCAyMzgsIDEyMiwgMiwgMjYsIDIwOSwgNzcsIDIxNiwgMTIwLCAKKyAgICAyMzgsIDEyMiwgMiwgMjYsIDIwOSwgNzcsIDIxNiwgMTIxLCAzLCAyMDUsIDI0MSwgNTYsIDIzMiwgMjIzLCAyMDUsIDE4NiwgCisgICAgMjYsIDIwOSwgNzcsIDIxNiwgMTIwLCAyMzUsIDEyNiwgMjA4LCAxMDgsIDIwNiwgOTUsIDIzOSwgMTY2LCAyMDUsIDk5LCAzLCAKKyAgICA0OSwgMTY3LCAyNDgsIDE0NCwgMjM5LCAxNjYsIDIwNSwgOTksIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCA2MywgMjQxLCA2NSwgCisgICAgMywgMTI3LCA0OCwgNjMsIDIyNCwgNDksIDY0LCAyNDYsIDE1NiwgMywgMTI3LCA0OCwgNjMsIDI0NiwgMTU2LCAzLCAxMjcsIAorICAgIDQ4LCAyMzgsIDEwNywgNjQsIDIwOCwgMTkzLCAyMzgsIDEwNywgNjMsIDIwOCwgMTkzLCAyMzgsIDEwNywgNjQsIDI0MSwgCisgICAgNjQsIDIzOCwgMTA3LCA2MywgMjQxLCA2NCwgMjM4LCAxMDcsIDY0LCAyNDYsIDE1NSwgMjM4LCAxMDcsIDYzLCAyNDYsIAorICAgIDE1NSwgMjEyLCAxNjQsIDIxMywgMTA2LCAyMDksIDE3LCAyMTcsIDQzLCAyMDksIDE3LCAzLCAyMTYsIDI0NiwgMjEzLCAKKyAgICAxMDYsIDIwOSwgMTcsIDMsIDIzMywgMTc3LCA5NywgMjQ4LCAxNzUsIDIwOSwgMTYsIDI0OCwgMTc1LCAyMTMsIDEwNiwgCisgICAgMjA5LCAxNiwgNTMsIDIxNSwgMTEzLCAyMDUsIDgzLCAyMTUsIDExMywgMjI1LCAyMywgMjQyLCAxODgsIDI1MSwgNzEsIAorICAgIDE1OSwgMjEzLCA0MSwgMjQyLCAxODgsIDI1MSwgNzEsIDE1OSwgMjA1LCAyMjUsIDIyMSwgMTU0LCAyMjAsIDIxMywgNDQsIAorICAgIDczLCAyMTcsIDQzLCAyMjAsIDIxMywgNDQsIDkzLCAyMTcsIDQzLCAyMjAsIDIxMywgNDQsIDI0LCAyMTcsIDQzLCAyMjAsIAorICAgIDIxMywgMjAzLCAyNDIsIDIxNywgNDQsIDMsIDI0MCwgMTgyLCAyMjAsIDIxMywgMjAzLCAyNDIsIDIxNywgNDQsIDMsIDIxNSwgCisgICAgMTEzLCAyMjAsIDIxMywgNTIsIDIyOCwgNTYsIDIxNywgNDMsIDIyMCwgMjEzLCA1MiwgMjAzLCAyNDIsIDIxNywgNDMsIAorICAgIDEyMCwgMjI0LCA5OCwgMjYsIDIxNywgNDMsIDEyMCwgMjI0LCA5OCwgMjE3LCAzNCwgMjE3LCA0MywgMjIwLCAyMTMsIDI0LCAKKyAgICAyMTcsIDQzLCAyMjEsIDExMCwgMTIwLCAyMDcsIDIzNCwgMjA3LCAyMzIsIDMsIDIyOCwgNjksIDIxNCwgOTAsIDIyOCwgNzAsIAorICAgIDIxNywgNDMsIDIzNywgODAsIDIxNiwgMTEwLCAyMjgsIDY5LCAyMjgsIDcwLCAzLCA1MywgOTcsIDIyOCwgNzAsIDI1MCwgCisgICAgMTIwLCAzLCAyMDksIDc1LCAyNDYsIDE0OCwgMjM2LCAxODAsIDI1MSwgNDcsIDIyOCwgNjcsIDIyNCwgMTc3LCAyMjgsIDY4LCAKKyAgICAzLCAyMTMsIDE3NCwgMjE2LCA5MSwgMjUwLCAyMTIsIDIxNSwgOTAsIDIyNCwgMTc3LCAyMjgsIDY4LCAzLCAyMTAsIDE2OSwgCisgICAgMjE2LCA5MSwgMjUwLCAyMTIsIDIxNSwgOTAsIDIyNCwgMTc3LCAyMjgsIDY4LCAyMTgsIDIxNSwgMjI4LCAxMTIsIDIwNiwgCisgICAgMTA3LCAyMTUsIDkwLCAyMjgsIDcwLCAyNTAsIDIxMiwgMzUsIDIxNSwgMTAwLCAyMTcsIDQzLCAyMTQsIDg0LCAyMjgsIDcwLCAKKyAgICAyMTcsIDQzLCAyMjgsIDcwLCAzLCA5OCwgNTUsIDMsIDExNywgMjI4LCA3MCwgMywgMjQsIDU0LCAyMjgsIDcwLCAzLCAyMjgsIAorICAgIDU1LCAyMjgsIDcwLCAzLCAyMDMsIDI0MSwgMjI4LCA3MCwgMywgMjE2LCAyNDYsIDIyOCwgNzAsIDMsIDIwMywgMjUxLCAKKyAgICAyMjcsIDE2NCwgMjI1LCA3MSwgNDksIDIwNSwgOTksIDIxNywgNDMsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjExLCAyMjQsIAorICAgIDI0MywgNzMsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjExLCAyMjQsIDIxNSwgMTUxLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMSwgCisgICAgMjI0LCAyMTQsIDI1MiwgOTMsIDIsIDMsIDQsIDI0NiwgMTU2LCA1NiwgOTMsIDIsIDMsIDI0NiwgMTQ3LCAyNTEsIDI1MiwgCisgICAgNTYsIDkzLCAyLCAzLCAyMDUsIDI0MSwgNTYsIDkzLCAyLCAzLCA3MywgNTcsIDkzLCAyLCAzLCAyMDUsIDI0MSwgNTcsIDkzLCAKKyAgICAyLCAzLCAyMDgsIDQsIDEwNSwgOTMsIDIsIDMsIDYzLCAyMDUsIDk4LCAyMjEsIDE1NywgMiwgMywgMjQ2LCA3MSwgNTYsIAorICAgIDIyMSwgMTU3LCAyLCAzLCA3MywgNTcsIDIyMSwgMTU3LCAyLCAzLCAyMzcsIDE3MSwgMjQwLCAxODAsIDIyMSwgMTU3LCAyLCAKKyAgICAzLCAyMTMsIDE5LCAyNDAsIDE4MCwgOTMsIDIsIDIyOCwgMTE4LCA0OSwgMTY3LCAyNDYsIDE1NSwgOTMsIDIsIDIyOCwgCisgICAgMTE4LCA1MSwgMTY3LCAyNDYsIDE1NSwgMjAzLCA1OCwgMjE3LCAzNCwgMjQyLCAyMzUsIDIxNSwgMSwgMjIxLCAxOSwgMiwgCisgICAgMywgNzMsIDU2LCAyMjEsIDE5LCAyLCAzLCAyMDMsIDI1MSwgMjEwLCAxNjYsIDIxNSwgMiwgMywgMjQ4LCA5MywgMjQ2LCAKKyAgICAxMDksIDIwOSwgNTEsIDIxNSwgMSwgMjIxLCAxOSwgMiwgMjI4LCAxMTgsIDQ5LCAxNjcsIDI0NiwgMTU1LCAyMjEsIDE5LCAKKyAgICAyLCAyMjgsIDExOCwgNTEsIDE2NywgMjQ2LCAxNTUsIDQ0LCAyMjEsIDE5LCAyLCAzLCAyNDYsIDE0NywgMjUxLCAyNTEsIAorICAgIDIyMSwgMTksIDIsIDIyOCwgMTE4LCA1MywgMjQ2LCAxNTUsIDQ0LCAyNDAsIDIzNSwgNTQsIDkzLCAyLCAyMjgsIDExOCwgCisgICAgMjA1LCA5OCwgMjIxLCAxNTcsIDIsIDIyOCwgMTE4LCAyMDUsIDk4LCAyMjEsIDE5LCAyLCAyMjgsIDExOCwgMjA1LCA5OCwgCisgICAgMjI4LCA2NCwgMjE1LCAxLCAyMTMsIDM2LCAyMjgsIDY0LCAyMTUsIDEsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjEzLCAxNDgsIAorICAgIDI0MywgNzMsIDI1MSwgOTksIDIxNywgMzQsIDI0MywgMjEsIDIyOCwgNTYsIDMsIDI0MCwgMTgyLCAyMDMsIDI0MiwgMywgCisgICAgMjIxLCAxNTcsIDU0LCAyMDMsIDI0MiwgMywgMjE2LCAyNDYsIDIyOCwgNTYsIDMsIDIxNiwgMjQ2LCAyMjgsIDU2LCAzLCAKKyAgICAyMjQsIDk4LCAyNTEsIDc5LCAyMDMsIDI0MiwgMywgMjI0LCA5OCwgMjE3LCAzMywgMjAzLCAyNDIsIDg4LCAyMjgsIDU1LCAKKyAgICAyMjgsIDU2LCA4OCwgMjAzLCAyNDEsIDIwMywgMjQyLCA4OCwgMjQ5LCA3NywgODgsIDIyOCwgNTUsIDIyOCwgNTYsIDg4LCAKKyAgICAyNDksIDc3LCA4OCwgMjAzLCAyNDEsIDIwMywgMjQyLCAyNDgsIDIxMiwgMjYsIDIyNywgMTYzLCAzLCAyMDMsIDI0MSwgCisgICAgMjI4LCA1NiwgMjQ4LCAyMTIsIDI2LCAyMjcsIDE2MywgMywgMjI4LCA1NSwgMjQ2LCAxMTAsIDIwMywgMjQyLCAzLCAyMTAsIAorICAgIDE0NywgMjQ2LCAxMTAsIDIyOCwgNTYsIDMsIDIxMCwgMTQ3LCA1MywgNTIsIDIyOCwgNTUsIDUzLCA1MiwgMjAzLCAyNDEsIAorICAgIDI0NiwgMTEwLCAyMDMsIDI0MiwgMywgMjEwLCAxNDgsIDI2LCAyMDksIDUxLCAyMTUsIDEsIDIyNCwgOTgsIDI2LCAzLCA3MywgCisgICAgNTYsIDIyNCwgOTgsIDIxNywgMzQsIDMsIDczLCA1NiwgNTMsIDIyNCwgOTgsIDI1MSwgNzksIDUzLCAyMjQsIDk4LCAyMTcsIAorICAgIDMzLCAxMjAsIDIyOCwgNTcsIDIyNCwgOTgsIDI1MSwgNzksIDEyMCwgMjI4LCA1NywgMjI0LCA5OCwgMjE3LCAzMywgMjA5LCAKKyAgICA2MCwgMjI1LCA3MSwgMjE3LCAzMywgMjA5LCA2MCwgMjI1LCA3MSwgMjUxLCA3OSwgMjI0LCA5OCwgMjE3LCAzNCwgMjE2LCAKKyAgICAyNDMsIDIyNCwgOTgsIDI1MSwgNzksIDIyNCwgOTgsIDI2LCAzLCAxMDEsIDIwOCwgOTIsIDIyNCwgOTgsIDIxNywgMzQsIDMsIAorICAgIDEwMSwgMjA4LCA5MiwgMjI0LCA5OCwgMjYsIDMsIDIzMywgMTc3LCAyNDEsIDI0NCwgMjI0LCA5OCwgMjE3LCAzNCwgMywgCisgICAgMjMzLCAxNzcsIDI0MSwgMjQ0LCAyMjQsIDk4LCAyNiwgMywgNTMsIDIxNiwgMjQ2LCAyMjQsIDk4LCAyNiwgMywgMjAzLCAKKyAgICAyNTEsIDIyNCwgOTgsIDI2LCAzLCA1MywgMjAzLCAyNTEsIDQsIDIwMywgNTUsIDMsIDIwMywgMjUxLCAyMjQsIDk4LCAyMTcsIAorICAgIDM0LCAzLCA1MywgMjE2LCAyNDYsIDIyNCwgOTgsIDIxNywgMzQsIDMsIDUzLCAyMDMsIDI1MSwgMTk5LCAxNTgsIDIxOCwgCisgICAgMjEzLCAyNDAsIDE5MSwgMjUxLCAzNywgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTMsIDIxMSwgMjUxLCAzNywgMjM4LCAxMjIsIAorICAgIDIsIDMsIDczLCA1NywgMjMyLCAyMjMsIDMsIDczLCA1NiwgMjA1LCA4MywgMjMzLCAxNzcsIDI0OSwgNzcsIDMsIDUzLCA4MywgCisgICAgOTcsIDIwNSwgODMsIDIzMywgMTc3LCAyNDksIDc3LCAzLCAyMDUsIDgzLCA4MywgOTcsIDIwNSwgMjQxLCAyMTcsIDQ0LCAzLCAKKyAgICA3MywgNTYsIDIwNSwgMjQxLCAyMTcsIDQ0LCAzLCAyMTMsIDE5LCAyNDAsIDE4MCwgMjA5LCAxNDgsIDIyMSwgMTU3LCAyMDksIAorICAgIDE0NywgMjQzLCA2MCwgMywgNzMsIDU2LCAyMzgsIDEyMiwgMywgMjUwLCAxNjUsIDI1MSwgMTE3LCAxNjAsIDIwNSwgMTg2LCAKKyAgICAzLCAyNDYsIDE0NywgMjUxLCAyNTEsIDI1MSwgNCwgMTYwLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjM4LCAxMjIsIDIsIDg4LCAKKyAgICA5MywgNTQsIDkzLCAyLCA4OCwgMjM4LCAxMjIsIDU0LCAyMzgsIDEyMiwgMiwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCA1MywgCisgICAgMjQ2LCA4MCwgMjM4LCAxMjMsIDEyMCwgMjQzLCA1MywgMjM4LCAxMjIsIDIwOSwgMTYyLCAxMjYsIDI0MywgNTMsIDIzOCwgCisgICAgMTIyLCAyMDksIDE2MiwgMjM4LCAxMjIsIDIsIDMsIDEyMCwgMTkwLCA4OCwgMjYsIDEyMCwgMTkwLCA1NywgMjM4LCAxMTcsIAorICAgIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCAyMjQsIDI0MSwgMywgMjQ2LCAxNTYsIDIyOCwgNzMsIDIzNSwgNjcsIDMsIDI0NiwgCisgICAgMTU2LCAyMjgsIDczLCAyMjQsIDI0MSwgMywgMjE0LCA3OSwgMTM0LCA1NiwgMjM1LCA2NywgMywgMjE0LCA3OSwgMTM0LCAKKyAgICA1NiwgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMTM4LCAyMzUsIDY3LCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIAorICAgIDEzOCwgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCAyMjgsIDczLCAyMzUsIDY3LCAKKyAgICAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgMjI4LCA3MywgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgCisgICAgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA1NiwgMjM1LCA2NywgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgCisgICAgMywgNzMsIDU2LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDg4LCAyMTMsIDQ2LCAKKyAgICAyMzUsIDY3LCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgODgsIDIyNSwgMjgsIDIyNCwgMjQxLCAKKyAgICAyMTcsIDM0LCAyNTEsIDUsIDIzNSwgNjcsIDIxNywgMzQsIDI1MSwgNSwgMjI0LCAyNDEsIDI2LCAyMDksIDEzNywgMjE4LCAKKyAgICAyMTUsIDE2MCwgMTM4LCAyMzUsIDY3LCAyNiwgMjA5LCAxMzcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDI2LCAKKyAgICAyMTgsIDIxNSwgMjUxLCA1LCAyMzUsIDY3LCAyNiwgMjE4LCAyMTUsIDI1MSwgNSwgMjI0LCAyNDEsIDg4LCAyMzksIDE3MywgCisgICAgMTYwLCA4OCwgMjM1LCA2NiwgMjM1LCA2NywgODgsIDIzOSwgMTczLCAxNjAsIDg4LCAyMjQsIDI0MCwgMjI0LCAyNDEsIDg4LCAKKyAgICAyMDksIDE0OCwgMjE3LCAzNCwgMjM4LCAxMjMsIDIzNSwgNjcsIDg4LCAyMDksIDE0OCwgMjE3LCAzNCwgMjM4LCAxMjMsIAorICAgIDIyNCwgMjQxLCA4OCwgMjA5LCAxNDgsIDg4LCAyMzUsIDY2LCAyMzUsIDY3LCA4OCwgMjA5LCAxNDgsIDg4LCAyMjQsIDI0MCwgCisgICAgMjI0LCAyNDEsIDg4LCAyMzUsIDY3LCA4OCwgMjM5LCAxNzMsIDIzOCwgMTIzLCAyMzUsIDY3LCA4OCwgMjI0LCAyNDEsIDg4LCAKKyAgICAyMzksIDE3MywgMjM4LCAxMjMsIDIyNCwgMjQxLCA4OCwgMjA5LCA3NywgMTYwLCA4OCwgMjM1LCA2NywgODgsIDIwOSwgNzcsIAorICAgIDIzOCwgMTIzLCAyMzUsIDY3LCA4OCwgMjA5LCA3NywgMTYwLCA4OCwgMjI0LCAyNDEsIDg4LCAyMDksIDc3LCAyMzgsIDEyMywgCisgICAgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgCisgICAgMzQsIDIzNSwgNjYsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQxLCAzLCA3MywgMjI4LCA3MywgCisgICAgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NywgMywgNzMsIDIyOCwgNzMsIDIzOSwgMTczLCAxNjAsIAorICAgIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjM5LCAxNzMsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIAorICAgIDIzOSwgMTczLCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjM5LCAxNzMsIDIwOSwgNzcsIAorICAgIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIDIwOSwgMTQ4LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjA5LCAxNDgsIAorICAgIDIxNywgMzQsIDIzNSwgNjYsIDIwOSwgMTQ4LCA4OCwgMjI0LCAyNDEsIDg4LCAyMzgsIDEyMiwgNTQsIDIwOSwgMTQ4LCA4OCwgCisgICAgMjM1LCA2NywgODgsIDIzOCwgMTIyLCA1NCwgNTMsIDIyMCwgMTUsIDIyNCwgMjQwLCA1MywgMjIwLCAxNSwgMjM1LCA2NiwgCisgICAgNTMsIDIyMCwgMTUsIDIyNCwgMjQxLCAzLCAyMDMsIDI1MSwgMjM1LCA2NywgMjE2LCAyNDMsIDIyNCwgMjQwLCAyMzUsIDY3LCAKKyAgICAyNDgsIDIxMiwgMjI0LCAyNDAsIDIyNCwgMjQxLCAyNDYsIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTg5LCAyMzUsIDY3LCAyNDYsIAorICAgIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTg5LCAyMjQsIDI0MSwgMjQ2LCAxMTAsIDI0NywgMjM1LCAyNDIsIDE5MCwgODgsIDIwOSwgCisgICAgNzcsIDIzOCwgMTIzLCAyMzUsIDY3LCAyNDYsIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTkwLCA4OCwgMjA5LCA3NywgMjM4LCAKKyAgICAxMjMsIDIwOSwgNTIsIDIwNiwgMTExLCAyMjUsIDY5LCAyMDYsIDExMSwgMjA5LCA1MiwgMjA2LCAxMTIsIDIxNywgMzQsIAorICAgIDE2MCwgMTM4LCAyMjUsIDY5LCAyMDYsIDExMiwgMjE3LCAzNCwgMTYwLCAxMzgsIDIzOCwgMTIyLCAyLCAzLCAyNDgsIDEzLCAKKyAgICA1NiwgMjE1LCAyOSwgODgsIDIwOSwgMTM3LCAyMzgsIDEyMiwgNTQsIDIwNywgMjUxLCA4OCwgMjA5LCAxMzcsIDIzOCwgCisgICAgMTIyLCA1NCwgMjE1LCAyOSwgODgsIDIwOSwgMTM3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjA5LCAKKyAgICAxMzcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjE1LCAyOSwgODgsIDIzOCwgMTIyLCA1NCwgMjA3LCAyNTEsIDg4LCAyMzgsIAorICAgIDEyMiwgNTQsIDIxNSwgMjksIDg4LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjE4LCAyMTUsIDE2MCwgCisgICAgMTM4LCAyMTUsIDI5LCA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgCisgICAgMjE1LCAyOSwgODgsIDIxOCwgMjE1LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjE4LCAyMTUsIDI1MSwgCisgICAgMTE3LCAxNjAsIDEzOCwgNTMsIDIxNSwgMjgsIDUzLCAyMDcsIDI1MCwgMjA4LCAzLCAzLCAyNDAsIDE4MiwgMjA3LCAyMTIsIAorICAgIDMsIDI0MCwgMTgyLCAyMDgsIDMsIDMsIDkzLCAyLCA1NywgMjA3LCAyMTIsIDMsIDkzLCAyLCA1NywgMjA4LCAzLCAzLCAKKyAgICAyMjEsIDE5LCAyLCA1NywgMjA3LCAyMTIsIDMsIDIyMSwgMTksIDIsIDU3LCAyMDgsIDMsIDc2LCAyMTcsIDM0LCAxNjAsIAorICAgIDIwNSwgMTg2LCAzLCA3MywgNTYsIDIwNywgMjEyLCA3NiwgMjE3LCAzNCwgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDU2LCAKKyAgICAyMDgsIDMsIDc2LCA4OCwgMjM4LCAxMjIsIDU0LCAyMDcsIDIxMiwgNzYsIDg4LCAyMzgsIDEyMiwgNTQsIDIwOCwgMywgNzYsIAorICAgIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgMjA3LCAyMTIsIDc2LCA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDIwOCwgMywgNzYsIAorICAgIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwNywgMjEyLCA3NiwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjA4LCAzLCA3NiwgCisgICAgODgsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjA3LCAyMTIsIDc2LCA4OCwgMjE4LCAyMTUsIDE2MCwgMTM4LCA1MiwgNDksIAorICAgIDE3NiwgMTAwLCAyMTcsIDQzLCA1MiwgNTEsIDE3NiwgMTAwLCAyMTcsIDQzLCAyNDYsIDExMCwgMjA4LCAyLCAyNDYsIDExMCwgCisgICAgMjA3LCAyMTEsIDI0NiwgMTEwLCAyMDgsIDMsIDIxNywgMzQsIDE2MCwgMTM4LCAyNDYsIDExMCwgMjA3LCAyMTIsIDIxNywgCisgICAgMzQsIDE2MCwgMTM4LCAyMDgsIDMsIDg4LCAyMDcsIDIxMSwgMjA3LCAyMTIsIDg4LCAyMDgsIDIsIDIwOCwgMywgODgsIAorICAgIDIwOCwgMiwgMjA3LCAyMTIsIDg4LCAyMDcsIDIxMSwgMjA3LCAyMTIsIDI0OCwgMjEyLCAyMDgsIDIsIDIwNywgMjEyLCAKKyAgICAyNDgsIDIxMiwgMjYsIDIyNywgMTYzLCAyNDcsIDIzNSwgMjQxLCAyNDUsIDMsIDIwOCwgMiwgMjM4LCAyMDIsIDc2LCAyMTcsIAorICAgIDQ2LCAyMzksIDE2NSwgMjE1LCAxNDEsIDMsIDIwNiwgMTkxLCAyMDUsIDE1NywgMjA1LCAxMTUsIDIyOCwgNTUsIDIzNiwgCisgICAgMjQzLCAyMTgsIDIzMCwgMjA5LCAyNTAsIDQ5LCAyMDcsIDE3LCAyMDksIDI1MCwgMTI3LCAyMDcsIDE3LCAyMDksIDI1MCwgCisgICAgMTE1LCAyMDcsIDE3LCAyMTYsIDE1LCAzLCAyMTIsIDEyMiwgODMsIDI0OSwgNzcsIDIwNSwgODMsIDUxLCAyMDQsIDE4NCwgCisgICAgNTMsIDgzLCAyNDksIDc3LCA0OSwgMjA0LCAxODQsIDgzLCAyNDksIDc3LCA1MywgNDksIDIwNCwgMTg0LCA1MywgODMsIAorICAgIDI0OSwgNzcsIDUzLCA0OSwgMjA0LCAxODQsIDE2OCwgMjQxLCAyNDUsIDIzNiwgMjAxLCA0OSwgMjIyLCA0NSwgNzYsIDUzLCAKKyAgICAyMDMsIDQyLCAyMDksIDI1MCwgMTI3LCAyMDcsIDE4LCAzLCAyMTYsIDI0NiwgMjA5LCAyNTAsIDExNSwgMjA3LCAxOCwgMywgCisgICAgMjAzLCAyNTEsIDIwOSwgMjUwLCAxMTUsIDIwNywgMTgsIDg4LCAyMDksIDI1MCwgMTI3LCAyMDcsIDE3LCA1MywgMTI3LCAKKyAgICAyMDcsIDE3LCA1MywgMTE1LCAyMDcsIDE3LCA1MywgMjA4LCA0NywgMjE4LCAyMTUsIDU0LCAyMTMsIDEwNSwgNTMsIDIwOCwgCisgICAgNDcsIDIxOCwgMjE1LCA1NCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDAsIDI0MiwgMywgMjEzLCAxMDUsIDIyMCwgMjcsIAorICAgIDIwOSwgNzUsIDgzLCAyMjQsIDE3NywgMywgMjQ2LCAxNTYsIDU2LCA4MywgMjI0LCAxNzcsIDMsIDI0NiwgMTU2LCA1NywgCisgICAgMTI3LCAyMDcsIDE4LCAzLCAyNDYsIDE1NiwgNTcsIDIxNiwgMTIxLCAzLCAyMzMsIDE3NywgOTcsIDIxNiwgMTIxLCAzLCAKKyAgICAyMDUsIDI0MSwgMjE3LCA0MywgMjA1LCA4MywgODMsIDI0OSwgNzcsIDI0OCwgMTY5LCAyMTMsIDE0OSwgMjA1LCA4MywgODMsIAorICAgIDI0OSwgNzcsIDMsIDIzMywgMTc3LCA5NywgMjA1LCA4MywgMjQ2LCA4MCwgMjE3LCA0MywgMjA1LCA4MywgMjIwLCAxNSwgCisgICAgMjI0LCAyNDAsIDIwNSwgODMsIDIyMCwgMTUsIDIzNSwgNjYsIDIzOSwgMTczLCAyMDksIDc3LCAyMjQsIDI0MSwgMjE3LCAKKyAgICAzNCwgMTYwLCAxMzgsIDIzOSwgMTczLCAyMDksIDc3LCAyMzUsIDY3LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjA1LCA4MywgCisgICAgMjA5LCAxNywgMjQ4LCAxNjksIDIxMywgMTQ5LCAyMjUsIDcxLCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgMjE3LCA0MywgNTMsIAorICAgIDIwOSwgMTcsIDIxNywgNDMsIDY0LCA4MywgMTQ4LCAyMjAsIDIxMywgNjQsIDgzLCAxNDgsIDE1NywgMjM5LCAxNCwgNjQsIAorICAgIDQ4LCAxNTcsIDIwMSwgNDgsIDY0LCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDY0LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIAorICAgIDY0LCA0OCwgNDksIDUxLCA2NCwgNDgsIDk4LCA2MywgNDgsIDE4MiwgNjMsIDQ4LCAxOTEsIDYzLCA0OCwgMTU3LCAyMzksIAorICAgIDE0LCA2MywgNDgsIDE1NywgMjAxLCA0OCwgNjMsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNjMsIDQ4LCAyMDgsIDI1NCwgCisgICAgMjAxLCA0OCwgNjMsIDQ4LCA0OSwgNTEsIDYzLCA0OCwgMTE1LCAxMjcsIDYzLCA0OCwgODcsIDU1LCAzLCAyMDUsIDIyNCwgCisgICAgMjM5LCAxNjUsIDg3LCA1NSwgMywgMjA1LCAyMjQsIDIwMywgMjE2LCA5OCwgNTUsIDMsIDIwNSwgMjI0LCAyMzksIDE2NSwgCisgICAgOTgsIDU1LCAzLCAyMDUsIDIyNCwgMjAzLCAyMTYsIDUyLCAzLCAyMDUsIDE1OCwgMTY3LCAyNDgsIDE0NCwgNTIsIDMsIAorICAgIDI0OCwgOTMsIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCAyMDMsIDIyNSwgNTEsIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDUyLCAKKyAgICAzLCAyMjQsIDU0LCA0OSwgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgMjQxLCA2NSwgMywgNDksIDE2NywgMjQ4LCAxNDQsIAorICAgIDI0MSwgNjUsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCAyNDEsIDY1LCAzLCAyMDUsIDE1OCwgMTY3LCAyNDgsIDE0NCwgMjQxLCAKKyAgICA2NSwgMywgMjQ4LCA5MywgMTY3LCAyNDgsIDE0NCwgMjM5LCAxODAsIDIwOCwgMTkzLCA2MywgMjI1LCA3MSwgMjA4LCAxOTMsIAorICAgIDY0LCAyMjUsIDcxLCAyMDgsIDE5MywgNjMsIDIwMiwgMjQ2LCA0LCAyMDgsIDE5MywgNjQsIDIwMiwgMjQ2LCA0LCAyMDgsIAorICAgIDE5MywgNjMsIDIxNiwgMzcsIDY0LCAyMTYsIDM3LCA2NCwgMjM0LCA4OSwgNjMsIDIzNCwgODksIDIzMywgMTc3LCA2MywgCisgICAgMjM0LCA4OSwgNjMsIDIyNSwgNzEsIDI0NiwgMTU1LCA2MywgMjIyLCA2NiwgMjQxLCA2NCwgNjQsIDIyMiwgNjYsIDI0MSwgCisgICAgNjQsIDYzLCAyMjIsIDY2LCAyMjQsIDQ5LCA2NCwgMjIyLCA2NiwgMjI0LCA0OSwgNjMsIDQsIDI0MSwgNjQsIDYzLCA0LCAKKyAgICAyMjQsIDQ5LCA2NCwgNCwgMjI0LCA0OSwgNjMsIDIzMywgMTc3LCAyMzgsIDE5NiwgNjQsIDIzMywgMTc3LCAyMzgsIDE5NiwgCisgICAgNjMsIDgzLCAyMzgsIDE5NiwgNjQsIDgzLCAyMzgsIDE5NiwgNDksIDU1LCAzLCA0LCAyNDYsIDE1NSwgMTI2LCA5OCwgMjUwLCAKKyAgICAxOTksIDQ5LCA1NSwgMywgNDQsIDIxNSwgMTEzLCAxNjgsIDk4LCAyMDgsIDE4NiwgNDgsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIAorICAgIDgzLCA5NywgOTgsIDIwNCwgMTQxLCA1NSwgMywgNTMsIDgzLCA5NywgOTgsIDIwNCwgMTQxLCA1NSwgMjM2LCAyMDEsIDE0OCwgCisgICAgOTgsIDIwNCwgMTQxLCAyMDUsIDgzLCAyNDEsIDI0NSwgNDgsIDk4LCA1NSwgMywgMjM5LCAxODAsIDIwOCwgOTIsIDk4LCAKKyAgICA1NSwgMywgMjA3LCA3LCAzLCA4MywgOTcsIDk4LCA1NSwgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA5OCwgMjA0LCAxNDEsIAorICAgIDU1LCAzLCAyMDcsIDYsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA5OCwgMjA0LCAxNDEsIDU1LCAKKyAgICAzLCAyMDcsIDcsIDMsIDUzLCA4MywgOTcsIDk4LCA1NSwgMjA2LCAzOCwgMjAwLCAxOTUsIDIwMSwgNzgsIDU1LCAyMTUsIAorICAgIDk2LCAyNDEsIDcsIDIyNSwgMjgsIDIzOCwgMTIyLCAyLCA4OCwgOTgsIDQ4LCAyMTMsIDEwNiwgMjA1LCAyNDEsIDIxNywgCisgICAgNDQsIDg4LCA5OCwgNDgsIDk4LCA1NSwgODgsIDIxMywgMTA2LCAyNTEsIDExNywgMTYwLCAxMzgsIDg3LCA1NSwgMjA2LCAKKyAgICAzOCwgMjM1LCA2NiwgODcsIDU1LCAyMDYsIDM4LCAyMDcsIDIxMSwgOTgsIDIxNCwgOTAsIDQ4LCA4NywgMjE0LCA5MCwgNDgsIAorICAgIDIxMywgMTA2LCAyMDUsIDI0MSwgMjE3LCA0NCwgODgsIDg3LCA0OCwgODcsIDU1LCA4OCwgMjEzLCAxMDYsIDI1MSwgMTE3LCAKKyAgICAxNjAsIDEzOCwgMjA1LCAyNDEsIDIxNywgNDQsIDg4LCA5OCwgNDgsIDk4LCA1NSwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgCisgICAgOTgsIDU1LCA4OCwgMjEzLCAxMDYsIDIwNSwgMjQxLCAyMTcsIDQzLCA4NywgNTUsIDg4LCAyMTMsIDEwNiwgMjA1LCAyNDEsIAorICAgIDIxNywgNDMsIDE5MSwgMjA1LCA5NywgMTk5LCAyNywgNDgsIDIwOSwgMjUwLCAyMDksIDc3LCAxNTcsIDQ4LCAyMDksIDI1MCwgCisgICAgMjQ5LCAxMjYsIDIwOCwgMjU0LCA0OCwgNjQsIDIyMiwgNjYsIDIwOCwgMTA5LCA2MywgNCwgMjA4LCAxMDksIDY0LCA0LCAKKyAgICAyMDgsIDEwOSwgNjMsIDIxMywgNDEsIDIxNiwgMzcsIDY0LCAyMTMsIDQxLCAyMTYsIDM3LCA4MCwgMjI1LCA3MSwgMjQ2LCAKKyAgICAxNTUsIDgwLCAyMTYsIDI0OCwgMywgMjE2LCAyNDgsIDIyOCwgNzMsIDgwLCAyNDYsIDE1NiwgMywgMjQ2LCAxNTYsIDIyOCwgCisgICAgNzMsIDgwLCAyNDYsIDE1NSwgODAsIDQ0LCAyMTIsIDI0LCAyMDksIDc3LCAxNTcsIDU1LCAzLCAyMzMsIDE4NiwgMjM0LCAKKyAgICAxMzYsIDI0OSwgMTI2LCAyMDgsIDI1NCwgNTUsIDMsIDIzMywgMTg2LCAyMDcsIDYsIDIwOSwgNzcsIDE1NywgNTUsIDMsIAorICAgIDIzMywgMTc3LCAyMDcsIDYsIDI0OSwgMTI2LCAyMDgsIDI1NCwgNTUsIDMsIDIzMywgMTc3LCAyMDcsIDYsIDI0OCwgMjIwLCAKKyAgICA1NSwgMjE1LCA5NiwgMTkxLCAyMDYsIDk4LCAxNTcsIDIzOSwgMTMsIDIwOSwgMjUwLCAyNDgsIDIyMCwgNTUsIDIxNSwgOTYsIAorICAgIDE5MSwgMjA2LCA5OCwgMTU3LCAyMzksIDEzLCA5OCwgMjA1LCA5NywgNDgsIDE4MiwgMjA1LCA5NywgNDgsIDg3LCAyMDUsIAorICAgIDk3LCA0OCwgMTkxLCAyMDUsIDk3LCA0OCwgNDksIDUxLCAyMDUsIDk3LCA0OCwgMTE1LCAxMjcsIDIwNSwgOTcsIDQ4LCAKKyAgICAxNTcsIDIwMSwgNDgsIDIwNSwgOTcsIDQ4LCAxNTcsIDIzOSwgMTQsIDIwNSwgOTcsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgCisgICAgMjA1LCA5NywgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMDUsIDk3LCA0OCwgOTgsIDIwNSwgOTcsIDI0MSwgMjQzLCA0OCwgCisgICAgMTgyLCAyMDUsIDk3LCAyNDEsIDI0MywgNDgsIDg3LCAyMDUsIDk3LCAyNDEsIDI0MywgNDgsIDE5MSwgMjA1LCA5NywgMjQxLCAKKyAgICAyNDMsIDQ4LCAyNDYsIDExMiwgMjA1LCA5NywgMTc2LCAyNDYsIDE1NiwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDE3NiwgCisgICAgMjQ2LCAxNTYsIDQ4LCA5OCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDE4MiwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAKKyAgICAxNDgsIDg3LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMTkxLCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgCisgICAgMTU3LCAyMDEsIDQ4LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMTU3LCAyMzksIDE0LCAyMDUsIDk3LCA1NSwgMjA1LCAKKyAgICAxODYsIDE0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAyMDgsIDI1NCwgMjAxLCAKKyAgICA0OCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDk4LCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCA5NywgCisgICAgMTgyLCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCA5NywgODcsIDIwNSwgOTcsIDU1LCAzLCA1MywgMjMzLCAxNzcsIAorICAgIDk3LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCA1MywgMjMzLCAxNzcsIDk3LCAyMzMsIDE3NywgMjA3LCAyNSwgMjI2LCAyMTQsIAorICAgIDgzLCAyMDcsIDI1LCAyMjYsIDIxNCwgOTgsIDIwNSwgOTcsIDU1LCAxMTksIDg3LCAyMDUsIDk3LCA0OCwgMTgyLCAyMDUsIAorICAgIDk3LCA1NSwgOTgsIDc2LCAxOTEsIDIwNSwgOTcsIDQ4LCA4NywgMjA1LCA5NywgNTUsIDExOSwgOTgsIDIwNSwgOTcsIDQ4LCAKKyAgICAxOTEsIDIwNSwgOTcsIDU1LCA5OCwgNzYsIDE4MiwgMjA1LCA5NywgNDgsIDk4LCAyMDUsIDk3LCAyMTYsIDE4OCwgMjUwLCAKKyAgICAxOTksIDE4MiwgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgMTk5LCA4NywgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgMTk5LCAKKyAgICAxOTEsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgOTgsIDYzLCA0NCwgNjQsIDQ4LCAxODIsIDYzLCA0NCwgNjQsIAorICAgIDQ4LCA4NywgNjMsIDQ0LCA2NCwgNDgsIDE5MSwgNjMsIDQ0LCA2NCwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDUxLCAyMDQsIAorICAgIDk5LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgMjQ4LCA5MywgMjA0LCA5OSwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDQ5LCAKKyAgICAyMDQsIDk5LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgMjA1LCAxNTgsIDIwNCwgOTksIDQ4LCAyMTMsIDExMCwgMjI1LCAyOCwgCisgICAgMjEzLCAxMTAsIDIxMywgNDYsIDIyMCwgNiwgMjI1LCAyOCwgMjIwLCA2LCAyMTMsIDQ2LCAyMzYsIDIyOSwgMjQzLCAxNiwgCisgICAgMjUwLCAyMDAsIDI0NiwgMTUxLCAyNTEsIDQ2LCA4NywgNjMsIDQ4LCAyMDYsIDQ1LCAyMDUsIDE1NiwgOTgsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgMjA2LCA0NSwgMjEzLCA0MiwgMTgyLCAyMzgsIDExOCwgMjUwLCAyMDIsIDIwNiwgNDUsIDIwNSwgMTU2LCAKKyAgICA4NywgMjM4LCAxMTgsIDI1MCwgMjAyLCAyMDYsIDQ1LCAyMjUsIDI0LCAxOTEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgNjMsIAorICAgIDk4LCAyMzgsIDExOCwgMjUwLCAyMDIsIDYzLCAxODIsIDIzOCwgMTE4LCAyNTAsIDIwMiwgNjMsIDg3LCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDYzLCAxOTEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIAorICAgIDIyNCwgMjI1LCAxOCwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjEzLCAzNSwgMTgyLCAyMDUsIDk3LCAKKyAgICA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjI1LCAxOCwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjEzLCAKKyAgICAzNSwgOTgsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMDMsIDIxNiwgODcsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIAorICAgIDIwNSwgMjI0LCAyMDMsIDIxNiwgOTgsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMzksIDE2NSwgODcsIDIwNSwgCisgICAgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMzksIDE2NSwgNjMsIDI0MiwgMTg4LCAxOTEsIDI2LCA5OCwgNDgsIDYzLCAKKyAgICAyNDIsIDE4OCwgMTkxLCAyNiwgODcsIDQ4LCA2MywgMjQyLCAxODgsIDE4MiwgMjYsIDk4LCA0OCwgNjMsIDI0MiwgMTg4LCAKKyAgICAxODIsIDI2LCA4NywgNDgsIDYzLCAyNDIsIDE4OCwgOTgsIDI2LCAxODIsIDQ4LCA2MywgMjQyLCAxODgsIDg3LCAyNiwgCisgICAgMTgyLCA0OCwgNjMsIDI0MiwgMTg4LCA5OCwgMjYsIDE5MSwgNDgsIDYzLCAyNDIsIDE4OCwgODcsIDI2LCAxOTEsIDQ4LCAKKyAgICAyMTMsIDg2LCA1NSwgMTI3LCAyMjUsIDI4LCAyMTMsIDg2LCA1NSwgMTI3LCAyMTMsIDQ2LCAyMTMsIDg2LCA1NSwgMTE1LCAKKyAgICAyMjUsIDI4LCAyMTMsIDg2LCA1NSwgMTE1LCAyMTMsIDQ2LCAyMTMsIDg2LCA1NSwgNDksIDIwMywgMjI4LCAyMTMsIDg2LCAKKyAgICA1NSwgNTEsIDIwMywgMjI4LCAyMTMsIDg2LCA1NSwgNDksIDIzOSwgMTY3LCAyMTMsIDg2LCA1NSwgNTEsIDIzOSwgMTY3LCAKKyAgICAxODIsIDY0LCA1NSwgMjM2LCAyMDEsIDI0OSwgNzcsIDMsIDIzMywgMTc3LCAxNDgsIDExNSwgMjUwLCAyMDMsIDIyOCwgCisgICAgMTE4LCAzNSwgMjEzLCAxNzYsIDI0OCwgNzgsIDI0OSwgOTQsIDEwMCwgMywgMTYyLCAyMDAsIDE5NSwgNDQsIDIwMCwgMTk1LCAKKyAgICA0NCwgMjcsIDIwMCwgMTk1LCA2MywgNTIsIDI0NywgNTMsIDYzLCAyNDEsIDY1LCAyNDcsIDUzLCAyMDQsIDE4NSwgNjMsIAorICAgIDIxNiwgMzcsIDIzMywgMTc3LCA2MywgMjE3LCAxMzAsIDYzLCAyMTcsIDEzMCwgNjMsIDIyMiwgNjYsIDIwMywgMjI3LCAKKyAgICAyMDUsIDk5LCAyNDcsIDUzLCA2MywgMjIyLCA2NiwgMjM5LCAxNjYsIDIwNSwgOTksIDI0NywgNTMsIDYzLCAyMjIsIDY2LCAKKyAgICAyMjUsIDIzLCAyMDUsIDk5LCAyNDcsIDUzLCA2MywgMjIyLCA2NiwgMjEzLCA0MSwgMjA1LCA5OSwgMjQ3LCA1MywgMjA1LCAKKyAgICAxNTgsIDE2NywgNjMsIDI0NiwgMTU1LCAyNDgsIDkzLCAxNjcsIDYzLCAyNDYsIDE1NSwgMTYyLCAyMzYsIDIyOSwgMjE1LCAKKyAgICA5OCwgNjMsIDI0MiwgMTg0LCAyMTIsIDIyOCwgMTYyLCAyMzYsIDIyOSwgMjE1LCA5OCwgNjMsIDI0MiwgMTg0LCA2NCwgCisgICAgMjM2LCAyMjksIDIxNSwgOTgsIDI0MiwgMTg0LCAyMTIsIDIyOCwgNjQsIDIzNiwgMjI5LCAyMTUsIDk4LCAyNDIsIDE4NCwgCisgICAgNTIsIDIxNSwgNzAsIDIyOCwgOTksIDIwMywgMjU1LCA1NCwgOTgsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCA5OSwgMjUwLCAKKyAgICAyMDEsIDE4MiwgMjA0LCAxNDEsIDU1LCAzLCAyMDUsIDk5LCAyNTAsIDIwMSwgODcsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCAKKyAgICA5OSwgMjUwLCAyMDEsIDE5MSwgMjA0LCAxNDEsIDU1LCAzLCAyMDUsIDk5LCAyNTAsIDIwMSwgMTE2LCA2LCAxLCAyNTAsIAorICAgIDEwNCwgMTE2LCA2LCAxLCAyNDgsIDI0LCAxMTYsIDYsIDEsIDIwMywgNTcsIDExNiwgNiwgMSwgMjM1LCAxMzAsIDExNiwgNiwgCisgICAgMSwgMjQwLCAyMDYsIDExNiwgNiwgMSwgMjAwLCAyMywgMTE2LCA2LCAxLCAxOTksIDYxLCAxMTYsIDYsIDEsIDIzOSwgODgsIAorICAgIDExNiwgNiwgMSwgMTk5LCA4NiwgMTE2LCA2LCAxLCAyMjcsIDI1NSwgMTE2LCA2LCAxLCA4MiwgMjI3LCAyNTUsIDExNiwgNiwgCisgICAgMSwgNzAsIDExNiwgNiwgMSwgMjQwLCAyMjYsIDExNiwgNiwgMSwgMjI3LCA3NCwgMTE2LCA2LCAxLCAyMjQsIDE0MCwgMTE2LCAKKyAgICA2LCAxLCAyMjAsIDIxOCwgMTE2LCA2LCAxLCAyMjAsIDEyMCwgMTE2LCA2LCAxLCAyMTcsIDY1LCAxMTYsIDYsIDEsIDIxNSwgCisgICAgOTMsIDExNiwgNiwgMSwgMjEzLCAxOCwgMTE2LCA2LCAxLCAyMDksIDU4LCAxMTYsIDYsIDEsIDIwNCwgMTcxLCAxMTYsIDYsIAorICAgIDEsIDIwNCwgMTYsIDExNiwgNiwgMSwgMjM2LCAyMDQsIDExNiwgNiwgMSwgMjM0LCA5NSwgMTE2LCA2LCAxLCAyMTcsIDQsIAorICAgIDExNiwgNiwgMSwgMjE2LCA3MywgMTE2LCA2LCAxLCAyMDksIDIyMywgMTE2LCA2LCAxLCAyMDUsIDExLCAxMTYsIDYsIDEsIAorICAgIDI0NiwgMTk4LCAxMTYsIDYsIDEsIDIxMCwgMTE0LCAxMTYsIDYsIDEsIDIwMCwgMjksIDExNiwgNiwgMSwgMjAwLCAzMSwgCisgICAgMTE2LCA2LCAxLCAyMDAsIDYzLCAxMTYsIDYsIDEsIDIwOCwgMjIwLCAxNDQsIDExNiwgNiwgMSwgMTk5LCAyMTEsIDExNiwgCisgICAgNiwgMSwgNCwgMTk5LCAxODEsIDExNiwgNiwgMSwgNCwgMTk5LCAxODIsIDMsIDIwNywgNiwgMTE2LCA2LCAxLCAxOTksIAorICAgIDI0NSwgMTE2LCA2LCAxLCAyMjgsIDQwLCA0LCAxOTksIDE4MSwgMTE2LCA2LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDExNiwgCisgICAgNiwgMSwgMjI4LCA0MCwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAxMTYsIDYsIDEsIDIzNywgNjMsIDExNiwgNiwgMSwgMjI3LCAKKyAgICAyNTMsIDExNiwgNiwgMSwgMjA5LCAyMjIsIDExNiwgNiwgMSwgMjA1LCA3MywgNjIsIDExNiwgNiwgMSwgMjI1LCA1OSwgCisgICAgMjIwLCAyMTgsIDExNiwgNCwgMSwgMjUwLCAxMDQsIDExNiwgNCwgMSwgMjQ4LCAyNCwgMTE2LCA0LCAxLCAyMDMsIDU3LCAKKyAgICAxMTYsIDQsIDEsIDIzNSwgMTMwLCAxMTYsIDQsIDEsIDI0MCwgMjA2LCAxMTYsIDQsIDEsIDIwMCwgMjMsIDExNiwgNCwgMSwgCisgICAgMTk5LCA2MSwgMTE2LCA0LCAxLCAyMzksIDg4LCAxMTYsIDQsIDEsIDE5OSwgODYsIDExNiwgNCwgMSwgMjI3LCAyNTUsIAorICAgIDExNiwgNCwgMSwgODIsIDIyNywgMjU1LCAxMTYsIDQsIDEsIDcwLCAxMTYsIDQsIDEsIDI0MCwgMjI2LCAxMTYsIDQsIDEsIAorICAgIDIyNywgNzQsIDExNiwgNCwgMSwgMjI0LCAxNDAsIDExNiwgNCwgMSwgMjIwLCAyMTgsIDExNiwgNCwgMSwgMjIwLCAxMjAsIAorICAgIDExNiwgNCwgMSwgMjE3LCA2NSwgMTE2LCA0LCAxLCAyMTUsIDkzLCAxMTYsIDQsIDEsIDIxMywgMTgsIDExNiwgNCwgMSwgCisgICAgMjA5LCA1OCwgMTE2LCA0LCAxLCAyMDQsIDE3MSwgMTE2LCA0LCAxLCAyMDQsIDE2LCAxMTYsIDQsIDEsIDIzNiwgMjA0LCAKKyAgICAxMTYsIDQsIDEsIDIzNCwgOTUsIDExNiwgNCwgMSwgMjE3LCA0LCAxMTYsIDQsIDEsIDIxNiwgNzMsIDExNiwgNCwgMSwgCisgICAgMjA5LCAyMjMsIDExNiwgNCwgMSwgMjA1LCAxMSwgMTE2LCA0LCAxLCAyNDYsIDE5OCwgMTE2LCA0LCAxLCAyMTAsIDExNCwgCisgICAgMTE2LCA0LCAxLCAyMDAsIDI5LCAxMTYsIDQsIDEsIDIwMCwgMzEsIDExNiwgNCwgMSwgMjAwLCA2MywgMTE2LCA0LCAxLCAKKyAgICAyMDgsIDIyMCwgMTQ0LCAxMTYsIDQsIDEsIDE5OSwgMjExLCAxMTYsIDQsIDEsIDQsIDE5OSwgMTgxLCAxMTYsIDQsIDEsIDQsIAorICAgIDE5OSwgMTgyLCAzLCAyMDcsIDYsIDExNiwgNCwgMSwgMTk5LCAyNDUsIDExNiwgNCwgMSwgMjI4LCA0MCwgNCwgMTk5LCAKKyAgICAxODEsIDExNiwgNCwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAxMTYsIDQsIDEsIDIyOCwgNDAsIDI0OCwgMTc1LCAxOTksIAorICAgIDE4MSwgMTE2LCA0LCAxLCAyMzcsIDYzLCAxMTYsIDQsIDEsIDIyNywgMjUzLCAxMTYsIDQsIDEsIDIwOSwgMjIyLCAxMTYsIAorICAgIDQsIDEsIDIwNSwgNzMsIDYyLCAxMTYsIDQsIDEsIDIyNSwgNTksIDIyMCwgMjE4LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgCisgICAgNTMsIDE0OCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDUzLCAxNDgsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAxMDEsIDIwNSwgCisgICAgMjQwLCA4LCA2LCAxLCAyMTYsIDIyNywgMywgOTcsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIwNywgNiwgOCwgNCwgMSwgMzUsIAorICAgIDMsIDk3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgMTE5LCAKKyAgICA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQxLCAxMTksIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyNDEsIDExOSwgOCwgNCwgMSwgCisgICAgMjI3LCAxMTksIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMjQxLCAxMTksIDgsIDQsIDEsIDE5OSwgMTU4LCAKKyAgICAzLCAyNDEsIDExOSwgOCwgNiwgMSwgMjUxLCAxMTIsIDgsIDYsIDEsIDIyMywgMjQ0LCAzLCAxMTcsIDgsIDYsIDEsIDIwNCwgCisgICAgMTg1LCA2MiwgOCwgNiwgMSwgMjA0LCAxODUsIDI1MSwgMTEyLCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgNTEsIDExNywgOCwgCisgICAgNiwgMSwgMjAxLCAxNDgsIDMsIDExNywgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDExNywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIAorICAgIDI0MiwgMTk4LCA4LCA2LCAxLCAxNjcsIDIzNCwgMjQ3LCA4LCA0LCAxLCAxNjcsIDIzNCwgMjQ3LCA4LCA0LCAxLCAyMDcsIAorICAgIDQsIDIxNSwgMjI5LCA4LCA0LCAxLCAxOTcsIDMsIDIxOCwgMjEyLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjE0LCAzMywgMywgCisgICAgMjA3LCA2LCA4LCA0LCAxLCAxNjMsIDMsIDEyOCwgMjEzLCAyNywgMjI4LCA3MywgOCwgMSwgNCwgNiwgMjA0LCAxODUsIDcyLCAKKyAgICA4LCAyMDgsIDQsIDQsIDEsIDIyNywgMjUxLCA2NywgMSwgNiwgMjAzLCAxNjgsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyMDcsIAorICAgIDE4MywgMjA3LCA2LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMjA3LCAxODMsIDIwNywgNiwgODUsIDYsIDEsIDI1MSwgMTM2LCAKKyAgICA4NSwgNCwgMSwgMjUxLCAxMzYsIDg1LCA2LCAxLCAyMDIsIDIzMSwgODUsIDQsIDEsIDIwMiwgMjMxLCA4NSwgNiwgMSwgCisgICAgMjM2LCA2MCwgODUsIDQsIDEsIDIzNiwgNjAsIDg1LCA2LCAxLCAyNDIsIDI1LCA4NSwgNCwgMSwgMjQyLCAyNSwgODUsIDYsIAorICAgIDEsIDIzOCwgMjMzLCA4NSwgNCwgMSwgMjM4LCAyMzMsIDg1LCA2LCAxLCAyMDksIDMsIDg1LCA0LCAxLCAyMDksIDMsIDg1LCAKKyAgICA2LCAxLCAxOTksIDk2LCA4NSwgNCwgMSwgMTk5LCA5NiwgODUsIDYsIDEsIDIzNCwgMTU0LCA4NSwgNCwgMSwgMjM0LCAxNTQsIAorICAgIDg1LCA2LCAxLCAyMDYsIDg2LCA4NSwgNCwgMSwgMjA2LCA4NiwgODUsIDYsIDEsIDIzMiwgMjM3LCA4NSwgNCwgMSwgMjMyLCAKKyAgICAyMzcsIDg1LCA2LCAxLCAyMjcsIDU5LCA4NSwgNCwgMSwgMjI3LCA1OSwgODUsIDYsIDEsIDIyNSwgNTQsIDg1LCA0LCAxLCAKKyAgICAyMjUsIDU0LCA4NSwgNiwgMSwgMjIxLCAyMTEsIDg1LCA0LCAxLCAyMjEsIDIxMSwgODUsIDYsIDEsIDIxOSwgMTUwLCA4NSwgCisgICAgNCwgMSwgMjE5LCAxNTAsIDg1LCA2LCAxLCAyMjYsIDMxLCA4NSwgNCwgMSwgMjI2LCAzMSwgODUsIDYsIDEsIDc0LCA4NSwgCisgICAgNCwgMSwgNzQsIDg1LCA2LCAxLCAyMTUsIDIwNCwgODUsIDQsIDEsIDIxNSwgMjA0LCA4NSwgNiwgMSwgMjEzLCAxLCA4NSwgCisgICAgNCwgMSwgMjEzLCAxLCA4NSwgNiwgMSwgMjA5LCAxNTEsIDg1LCA0LCAxLCAyMDksIDE1MSwgODUsIDYsIDEsIDIwNiwgMjIxLCAKKyAgICA4NSwgNCwgMSwgMjA2LCAyMjEsIDg1LCA2LCAxLCAyMDQsIDQ2LCA4NSwgNCwgMSwgMjA0LCA0NiwgODUsIDYsIDEsIDIzNywgCisgICAgMTEyLCA4NSwgNCwgMSwgMjM3LCAxMTIsIDg1LCA2LCAxLCAyMjYsIDE4NSwgODUsIDQsIDEsIDIyNiwgMTg1LCA4NSwgNiwgCisgICAgMSwgMjE0LCAyMzUsIDg1LCA0LCAxLCAyMTQsIDIzNSwgODUsIDYsIDEsIDIxNywgNTcsIDg1LCA0LCAxLCAyMTcsIDU3LCAKKyAgICA4NSwgNiwgMSwgMjQxLCA2OSwgMjUxLCAxNDIsIDg1LCA0LCAxLCAyNDEsIDY5LCAyNTEsIDE0MiwgODUsIDYsIDEsIDQwLCAKKyAgICA4NSwgMjUxLCAxNzEsIDg1LCA0LCAxLCA0MCwgODUsIDI1MSwgMTcxLCA4NSwgNiwgMSwgMjQyLCAyMTcsIDIzOCwgMjMzLCAKKyAgICA4NSwgNCwgMSwgMjQyLCAyMTcsIDIzOCwgMjMzLCA4NSwgNiwgMSwgMjQxLCA2OSwgMjI3LCA1OSwgODUsIDQsIDEsIDI0MSwgCisgICAgNjksIDIyNywgNTksIDg1LCA2LCAxLCAyNDEsIDY5LCAyMTksIDE1MCwgODUsIDQsIDEsIDI0MSwgNjksIDIxOSwgMTUwLCAKKyAgICA4NSwgNiwgMSwgMjQyLCAyMTcsIDIxOSwgMTUwLCA4NSwgNCwgMSwgMjQyLCAyMTcsIDIxOSwgMTUwLCA4NSwgNiwgMSwgNDAsIAorICAgIDg1LCAyMTcsIDU3LCA4NSwgNCwgMSwgNDAsIDg1LCAyMTcsIDU3LCA4NSwgNiwgMSwgMjEyLCAxNiwgODUsIDQsIDEsIDIxMiwgCisgICAgMTYsIDg1LCA2LCAxLCAyNDIsIDIzMiwgMjEwLCA1NywgODUsIDQsIDEsIDI0MiwgMjMyLCAyMTAsIDU3LCA4NSwgNiwgMSwgCisgICAgNDAsIDg1LCAyMTAsIDU3LCA4NSwgNCwgMSwgNDAsIDg1LCAyMTAsIDU3LCA4NSwgNiwgMSwgNDAsIDg1LCAyMzgsIDk0LCAKKyAgICA4NSwgNCwgMSwgNDAsIDg1LCAyMzgsIDk0LCA4NSwgNiwgMSwgMjUxLCAxNTUsIDIyNiwgMTkwLCA4NSwgNCwgMSwgMjUxLCAKKyAgICAxNTUsIDIyNiwgMTkwLCA4NSwgNiwgMSwgMjQxLCA2OSwgMjMzLCAxNzgsIDg1LCA0LCAxLCAyNDEsIDY5LCAyMzMsIDE3OCwgCisgICAgODUsIDYsIDEsIDQwLCA4NSwgMjMzLCAxNzgsIDg1LCA0LCAxLCA0MCwgODUsIDIzMywgMTc4LCA4NSwgNiwgMSwgNDAsIDg1LCAKKyAgICAxNDQsIDg1LCA0LCAxLCA0MCwgODUsIDE0NCwgODUsIDYsIDEsIDIyNSwgMTkyLCAxNDQsIDg1LCA0LCAxLCAyMjUsIDE5MiwgCisgICAgMTQ0LCA4NSwgNiwgMSwgNDAsIDg1LCAyMzQsIDExNCwgODUsIDQsIDEsIDQwLCA4NSwgMjM0LCAxMTQsIDg1LCA2LCAxLCAKKyAgICA0MCwgODUsIDIzNCwgMTU3LCA4NSwgNCwgMSwgNDAsIDg1LCAyMzQsIDE1NywgODUsIDYsIDEsIDQwLCA4NSwgMjM2LCA1NSwgCisgICAgODUsIDQsIDEsIDQwLCA4NSwgMjM2LCA1NSwgODUsIDYsIDEsIDQwLCA4NSwgMjQwLCAyMjksIDg1LCA0LCAxLCA0MCwgODUsIAorICAgIDI0MCwgMjI5LCA4NSwgNiwgMSwgNDAsIDg1LCAyMTAsIDIzLCA4NSwgNCwgMSwgNDAsIDg1LCAyMTAsIDIzLCA4NSwgNiwgMSwgCisgICAgNDAsIDIxOCwgMTAzLCAyMTAsIDIzLCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMTAsIDIzLCA4NSwgNiwgMSwgNDAsIAorICAgIDIxOCwgMTAzLCAyMTksIDIwMSwgODUsIDQsIDEsIDQwLCAyMTgsIDEwMywgMjE5LCAyMDEsIDg1LCA2LCAxLCA0MCwgMjE4LCAKKyAgICAxMDMsIDIxOCwgNDEsIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIxOCwgNDEsIDg1LCA2LCAxLCA0MCwgMjE4LCAxMDMsIAorICAgIDIwMSwgNzksIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIwMSwgNzksIDg1LCAxNiwgMjI3LCA4MiwgODUsIDE2LCAyMjEsIAorICAgIDIxMiwgMjEzLCAxLCA4NSwgMTYsIDIxNSwgMjA1LCAyMTMsIDEsIDg1LCAxNiwgMjA4LCAxMDAsIDg1LCAxNiwgMjA2LCAKKyAgICAyMjIsIDIxMywgMSwgODUsIDE2LCAyMjYsIDE4NiwgMjEzLCAxLCA4NSwgMTYsIDIxMCwgMjQsIDIwOSwgMTUxLCA4NSwgNiwgCisgICAgMSwgMjQyLCAyMTcsIDIxMCwgNTcsIDg1LCA0LCAxLCAyNDIsIDIxNywgMjEwLCA1NywgODUsIDYsIDEsIDI0MiwgMjE3LCAKKyAgICAyMzYsIDU1LCA4NSwgNCwgMSwgMjQyLCAyMTcsIDIzNiwgNTUsIDg1LCAzOCwgMjE5LCAxNTEsIDU2LCA4NSwgMzgsIDIwOCwgCisgICAgMjEzLCAyNTAsIDE3MywgODUsIDM4LCAyMDgsIDIxMywgMjI0LCAyNDgsIDg1LCA2LCAxLCAyNDgsIDExNywgMjI2LCAxOTAsIAorICAgIDg1LCA0LCAxLCAyNDgsIDExNywgMjI2LCAxOTAsIDg1LCA0MCwgMjE4LCAxMDMsIDIzNiwgMTgzLCAyMDgsIDc2LCA4NSwgCisgICAgNDAsIDIxOCwgMTAzLCAyNDEsIDEwLCAyMTQsIDc5LCA4MSwgODUsIDQwLCAyMTgsIDEwMywgMjI4LCA5NywgMjE0LCA3OSwgCisgICAgODEsIDg1LCA0MCwgMjE4LCAxMDMsIDIwMywgNDQsIDI0MCwgMjM5LCA4NSwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDg1LCAKKyAgICAyMzYsIDE4MywgMjA4LCA3NiwgODUsIDIyMSwgNzcsIDI0MCwgMjM5LCAxMTgsIDQsIDEsIDI1MSwgODUsIDExOCwgNCwgMSwgCisgICAgMjQ5LCA4OCwgMTE4LCA0LCAxLCAyMzYsIDU5LCAxMTgsIDQsIDEsIDI0MCwgMTkwLCAxMTgsIDQsIDEsIDIzOCwgMTc5LCAKKyAgICAxMTgsIDQsIDEsIDIwMiwgMjE3LCAxMTgsIDQsIDEsIDE5OSwgODQsIDExOCwgNCwgMSwgMjA2LCAyNDQsIDExOCwgNCwgMSwgCisgICAgMjI4LCAxMTcsIDExOCwgNCwgMSwgMjI3LCA2OCwgMTE4LCA0LCAxLCAyMjUsIDY1LCAxMTgsIDQsIDEsIDIyMiwgMTgwLCAKKyAgICAxMTgsIDQsIDEsIDIyMCwgMTI1LCAxMTgsIDQsIDEsIDIxNywgNzgsIDExOCwgNCwgMSwgMjE2LCAxMzAsIDExOCwgNCwgMSwgCisgICAgMTk5LCA3MywgMTE4LCA0LCAxLCAyMTMsIDIzNCwgMTE4LCA0LCAxLCAyMTIsIDEzLCAxMTgsIDQsIDEsIDIwNiwgMjMyLCAKKyAgICAxMTgsIDQsIDEsIDIwNCwgNSwgMTE4LCA0LCAxLCAyMTUsIDIzNywgMTE4LCA0LCAxLCAyMjYsIDE5NSwgMTE4LCA0LCAxLCAKKyAgICAyMzUsIDE5MCwgMTE4LCA0LCAxLCAyMTQsIDE0NCwgMTE4LCA0LCAxLCAyMTAsIDIxLCAxMTgsIDQsIDEsIDI0NiwgMjIzLCAKKyAgICAxMTgsIDQsIDEsIDI0NywgMTU4LCAxMTgsIDQsIDEsIDIyNywgMTk4LCAxMTgsIDQsIDEsIDI0NiwgMTYyLCAxMTgsIDQsIDEsIAorICAgIDI0NywgMjEsIDExOCwgNCwgMSwgMjAwLCAxNzksIDExOCwgNCwgMSwgMjI3LCAyMTIsIDExOCwgNCwgMSwgMjM0LCAyMzAsIAorICAgIDExOCwgNCwgMSwgMjM0LCAxMzksIDExOCwgNCwgMSwgMjM0LCA2OSwgMTE4LCA0LCAxLCAyMDEsIDY0LCAxMTgsIDQsIDEsIAorICAgIDIzNCwgMTY2LCAxMTgsIDQsIDEsIDIzMywgMjAzLCAxMTgsIDQsIDEsIDE5OSwgMjQ3LCAxMTgsIDQsIDEsIDI1MSwgMjEwLCAKKyAgICAyMDYsIDQsIDEsIDE4MywgMjA2LCA0LCAxLCAyMDAsIDEwNSwgMjA2LCA0LCAxLCAyMDAsIDEwNCwgMjA2LCA0LCAxLCAyMDAsIAorICAgIDk0LCAyMDYsIDQsIDEsIDIwMCwgOTIsIDIwNiwgNCwgMSwgMjQ4LCAyMTQsIDI1MSwgMjUzLCAyMDAsIDg3LCAyMDYsIDQsIAorICAgIDEsIDIwMCwgODcsIDIwNiwgNCwgMSwgMjAwLCAxMDIsIDIwNiwgNCwgMSwgMjAwLCA5OSwgMjA2LCA0LCAxLCAyMDAsIDEwMSwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDEwMCwgMjA2LCA0LCAxLCAyMDAsIDE0LCAyMDYsIDQsIDEsIDIwMCwgOTYsIDIwNiwgNCwgMSwgCisgICAgMjAwLCA4NSwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA4NSwgMjA2LCA0LCAxLCAyMDAsIDgyLCAyMDYsIDQsIDEsIAorICAgIDIwMCwgOTAsIDIwNiwgNCwgMSwgMjQ4LCAyMTQsIDI1MSwgMjUzLCAyMDAsIDkwLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAKKyAgICAyMDAsIDkwLCAyMDYsIDQsIDEsIDIwMCwgODksIDIwNiwgNCwgMSwgMjAwLCAxMDksIDIwNiwgNCwgMSwgMjAwLCA4MywgCisgICAgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA4MywgMjA2LCA0LCAxLCAyMDAsIDcyLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAKKyAgICAyMDAsIDcyLCAyMDYsIDQsIDEsIDIwMCwgOSwgMjA2LCA0LCAxLCAyMDAsIDUzLCAyMDYsIDQsIDEsIDI1MSwgMTgzLCAyMDAsIAorICAgIDUzLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDUzLCAyMDYsIDQsIDEsIDIwMCwgODEsIDIwNiwgNCwgMSwgMjAwLCA4MCwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDc3LCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDkxLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAKKyAgICAyMDAsIDc1LCAyMDYsIDQsIDEsIDIwMCwgNzMsIDIwNiwgNCwgMSwgMTk5LCAyMTEsIDIwNiwgNCwgMSwgMjAwLCA3MCwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDY5LCAyMDYsIDQsIDEsIDIwMCwgOTMsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgOTMsIAorICAgIDIwNiwgNCwgMSwgMjUwLCAxMDgsIDIwMCwgOTMsIDIwNiwgNCwgMSwgMjAwLCA2OCwgMjA2LCA0LCAxLCAyMDAsIDY2LCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNjcsIDIwNiwgNCwgMSwgMjAwLCA2NSwgMjA2LCA0LCAxLCAyMDAsIDY0LCAyMDYsIDQsIDEsIAorICAgIDIwMCwgMTAzLCAyMDYsIDQsIDEsIDIwMCwgNjIsIDIwNiwgNCwgMSwgMjAwLCA2MCwgMjA2LCA0LCAxLCAyMDAsIDU5LCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNTcsIDIwNiwgNCwgMSwgMjAwLCA1NCwgMjA2LCA0LCAxLCAyMDYsIDIxMywgMjAwLCA1NCwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDUyLCAyMDYsIDQsIDEsIDIwMCwgNTEsIDIwNiwgNCwgMSwgMTk5LCAyNDUsIDIwNiwgNCwgNjcsIAorICAgIDEsIDIyNSwgMTY2LCA4MSwgMjA2LCA0LCAyMTAsIDE1NSwgODEsIDIwNiwgNCwgMTExLCAyMjcsIDE2MSwgMzQsIDUsIDIyNCwgCisgICAgMTA5LCAzNCwgNSwgMjIxLCAxMzUsIDM0LCA1LCAyMTIsIDI1NSwgMzQsIDUsIDIwOSwgMjgsIDM0LCA1LCAyMTAsIDcsIDM0LCAKKyAgICA1LCAyNDgsIDEyMywgMzQsIDUsIDIwNSwgMTg1LCAzNCwgNSwgMjQ2LCA5MCwgMzQsIDUsIDIxOCwgMjM5LCAzNCwgNSwgCisgICAgMjE4LCAyNSwgMzQsIDUsIDIzNSwgMTIzLCAyMTcsIDE0NiwgMzQsIDUsIDE5OSwgMTMsIDM0LCA1LCAyNDAsIDIwOSwgMzQsIAorICAgIDUsIDI0MSwgMTg5LCAzNCwgNSwgMjI3LCAxNjUsIDM0LCA1LCAyMDYsIDYwLCAzNCwgNSwgMjQ2LCAyMDksIDM0LCA1LCAKKyAgICAyMTUsIDIxNiwgMzQsIDUsIDIxNSwgMTA1LCAzNCwgNSwgMjM1LCAyMDUsIDM0LCA1LCAyMzUsIDIwMSwgMzQsIDUsIDIzNSwgCisgICAgMjAyLCAzNCwgNSwgMjM1LCAyMDMsIDM0LCA1LCAyMDgsIDE3OSwgMzQsIDUsIDIwOCwgMTM0LCAzNCwgNSwgMjA4LCAxNDcsIAorICAgIDM0LCA1LCAyMDgsIDE3OCwgMzQsIDUsIDIwOCwgMTUyLCAzNCwgNSwgMjA4LCAxNTMsIDM0LCA1LCAyMDgsIDEzOSwgMzQsIAorICAgIDUsIDI0NywgOTksIDM0LCA1LCAyNDcsIDc4LCAzNCwgNSwgMjQ3LCA4MCwgMzQsIDUsIDI0NywgOTgsIDM0LCA1LCAyNDcsIAorICAgIDk2LCAzNCwgNSwgMjQ3LCA5NywgMzQsIDUsIDI0NywgNzksIDM0LCA1LCAxOTgsIDIzMiwgMzQsIDUsIDE5OCwgMjEwLCAzNCwgCisgICAgNSwgMTk4LCAyMjMsIDM0LCA1LCAxOTgsIDIzMSwgMzQsIDUsIDE5OCwgMjI2LCAzNCwgNSwgMTk4LCAyMjcsIDM0LCA1LCAKKyAgICAxOTgsIDIxNSwgMzQsIDUsIDI0NywgOTQsIDM0LCA1LCAyNDcsIDgxLCAzNCwgNSwgMjQ3LCA4MywgMzQsIDUsIDI0NywgOTMsIAorICAgIDM0LCA1LCAyNDcsIDkxLCAzNCwgNSwgMjQ3LCA5MiwgMzQsIDUsIDI0NywgODIsIDM0LCA1LCAyMTQsIDQ1LCAzNCwgNSwgCisgICAgMjE0LCAzNSwgMzQsIDUsIDIxNCwgNDEsIDM0LCA1LCAyMTQsIDQ0LCAzNCwgNSwgMjE0LCA0MiwgMzQsIDUsIDIxNCwgNDMsIAorICAgIDM0LCA1LCAyMTQsIDQwLCAzNCwgNSwgMjI1LCAyMDMsIDM0LCA1LCAyMjUsIDE5NSwgMzQsIDUsIDIyNSwgMTk4LCAzNCwgNSwgCisgICAgMjI1LCAyMDIsIDM0LCA1LCAyMjUsIDE5OSwgMzQsIDUsIDIyNSwgMjAwLCAzNCwgNSwgMjI1LCAxOTYsIDM0LCA1LCAyMDAsIAorICAgIDEzOSwgMzQsIDUsIDIwMCwgMTI2LCAzNCwgNSwgMjAwLCAxMzQsIDM0LCA1LCAyMDAsIDEzOCwgMzQsIDUsIDIwMCwgMTM2LCAKKyAgICAzNCwgNSwgMjAwLCAxMzcsIDM0LCA1LCAyMDAsIDEzMywgMzQsIDUsIDIzNSwgMywgMzQsIDUsIDIzNCwgMjQ5LCAzNCwgNSwgCisgICAgMjM0LCAyNTIsIDM0LCA1LCAyMzUsIDIsIDM0LCA1LCAyMzQsIDI1NCwgMzQsIDUsIDIzNCwgMjU1LCAzNCwgNSwgMjM0LCAKKyAgICAyNTEsIDM4LCAzNywgMSwgMjQ5LCA4LCAzOCwgMzcsIDEsIDIwMywgNTksIDM4LCAzNywgMSwgMjM1LCAxODUsIDM4LCAzNywgCisgICAgMSwgMjQxLCAxNzUsIDM4LCAzNywgMSwgMTk5LCA2OCwgMzgsIDM3LCAxLCAxOTksIDg5LCAzOCwgMzcsIDEsIDE2MSwgMzgsIAorICAgIDM3LCAxLCAyMzgsIDIwOSwgMzgsIDM3LCAxLCAyMzgsIDE5MCwgMzgsIDM3LCAxLCAyMzgsIDE3OSwgMzgsIDM3LCAxLCA3NCwgCisgICAgMzgsIDM3LCAxLCAyMTYsIDczLCAzOCwgMzcsIDEsIDIzOCwgMTE1LCAzOCwgMzcsIDEsIDIzOCwgMTA0LCAzOCwgMzcsIDEsIAorICAgIDIwNiwgMjAxLCAzOCwgMzcsIDEsIDE0NCwgMzgsIDM3LCAxLCAyMDUsIDI2LCAzOCwgMzcsIDEsIDI0NywgOCwgMzgsIDM3LCAKKyAgICAxLCAyMTAsIDExNCwgMzgsIDM3LCAxLCAyMTAsIDY4LCAzOCwgMzcsIDEsIDIzNywgNjMsIDM4LCAzNywgMSwgMjM4LCAxMDAsIAorICAgIDM4LCAzNywgMSwgNjIsIDM4LCAzNywgMSwgMjI4LCAxNzgsIDM4LCAzNywgMSwgMjQwLCAyMjcsIDM4LCAzNywgMSwgMjIxLCAKKyAgICA5NSwgMjA0LCAyMCwgMzgsIDM3LCAxLCAyMDAsIDY1LCAzOCwgMzcsIDEsIDE5OSwgMjExLCAzOCwgMzcsIDEsIDIyOCwgMzksIAorICAgIDYyLCAzOCwgMzcsIDEsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzgsIDM3LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDM4LCAzNywgCisgICAgMSwgMjI4LCAzOSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCA1MSwgMjUxLCA3MSwgMjA3LCAyNTUsIDIyMiwgMTQ1LCA1MSwgMjUxLCAKKyAgICA3MSwgMjM5LCAxODAsIDIwNywgMjU1LCAyMjIsIDE0NSwgNDksIDIwNywgMjU1LCAxNTksIDUxLCAyMDcsIDI1NSwgMTU5LCAKKyAgICA0OSwgMjM5LCAxODAsIDIwNywgMjU1LCAxNTksIDUxLCAyMzksIDE4MCwgMjA3LCAyNTUsIDE1OSwgMjEzLCAyMjAsIDIyOCwgCisgICAgNjAsIDIyMiwgMTQ1LCAyMTMsIDIyMCwgMjM5LCAxODAsIDIyOCwgNjAsIDIyMiwgMTQ1LCAyMzksIDE4MCwgMjA1LCAxMTYsIAorICAgIDIyMiwgMTQ1LCA0OSwgMjA1LCAxMTYsIDE1OSwgNTEsIDIwNSwgMTE2LCAxNTksIDIxMywgMjIwLCAyMDgsIDE5MywgNDksIAorICAgIDIxMywgMjIwLCAyMTcsIDgwLCAxNTksIDUxLCAyMTMsIDIyMCwgMjE3LCA4MCwgMTU5LCAyMzksIDAsIDI0MywgMTMsIDIxNiwgCisgICAgMTI2LCAyMzYsIDI0NCwgMjE2LCAxMjYsIDIxMywgMTA1LCAyMzYsIDI0NCwgMjE2LCAxMjYsIDIzMywgMzAsIDIzOSwgMTgwLCAKKyAgICAyMTcsIDE0MSwgMTkxLCAyNTEsIDgwLCAxODIsIDI1MSwgODAsIDIzOSwgMTgwLCAyMTMsIDQxLCAyNTEsIDcwLCA1MywgCisgICAgMjE3LCAxMzgsIDIzMywgMzMsIDIyOCwgNTAsIDIyOCwgNTgsIDIxNiwgMTc3LCAyNDgsIDY2LCAyMzMsIDM0LCAzLCAyNDEsIAorICAgIDc0LCAyMDUsIDI0MSwgMywgMjEzLCAyNywgNTYsIDQ5LCAxMjgsIDIxNiwgMTE4LCAxNTksIDUxLCAxMjgsIDIxNiwgMTE4LCAKKyAgICAxNTksIDIwNSwgMjQxLCAzLCA3MywgNTYsIDIwNSwgMjQxLCAzLCA3MywgNTcsIDQ5LCA4MywgMjQ5LCA3NywgMywgMjE0LCAKKyAgICA3MywgNTEsIDgzLCAyNDksIDc3LCAzLCAyMTQsIDczLCAyMDUsIDE1OCwgNDksIDE2NywgMTU5LCAyMDUsIDE1OCwgNTEsIAorICAgIDE2NywgMTU5LCAyNDgsIDkzLCA0OSwgMTY3LCAxNTksIDI0OCwgOTMsIDUxLCAxNjcsIDE1OSwgNDksIDIwOSwgMTczLCAKKyAgICAxMDgsIDE1OSwgNTEsIDIwOSwgMTczLCAxMDgsIDE1OSwgNDksIDUzLCAyMTYsIDExNSwgNTEsIDUzLCAyMTYsIDExNSwgCisgICAgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgMjE0LCAyMTEsIDExMiwgNzMsIDExOSwgMTIwLCAxOTAsIDIxNCwgMjExLCA5NSwgCisgICAgMjM2LCAyMjksIDczLCAyMTQsIDIxMSwgMjM3LCA2MSwgNzMsIDgxLCAyMTMsIDEwNSwgMjE0LCA3OSwgODEsIDgzLCAyMDUsIAorICAgIDI0MCwgMjEzLCAyNywgMjE1LCA5OSwgMjAwLCAyMzgsIDIxMCwgMTU1LCAxMDEsIDI0MCwgMTgyLCAyMDQsIDE4NSwgMjQ2LCAKKyAgICA3MCwgMjEzLCAyMjAsIDI0MCwgMTgyLCAyMTMsIDIyMCwgMjQ2LCA3MCwgMjA0LCAxODUsIDIxMCwgMTY3LCAyNDIsIDQxLCAKKyAgICAzLCA0OSwgMjM1LCA0NCwgMjQyLCA0MSwgMywgNTEsIDIzNSwgNDQsIDIwNCwgMTg1LCAyNDIsIDQwLCAyMDUsIDE1OCwgCisgICAgMTY3LCAyMTEsIDE5MywgNTQsIDIwNCwgMTQyLCAyNDEsIDI0NCwgMjA2LCA0NCwgMjQxLCAyNDQsIDIwOCwgOTEsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCA4MywgMjA5LCAxMDYsIDI0MCwgMTgwLCAyMDEsIDIyLCA4MywgMjI0LCAxNzYsIDI0NywgMTQyLCAKKyAgICA1MywgMjMzLCAzMywgMjEzLCAxMDUsIDI0NiwgNzAsIDUzLCAyMjQsIDU1LCAyMTQsIDYzLCA4MSwgMjQxLCAyNDUsIDMsIAorICAgIDQ5LCAyMDMsIDIxOSwgNTMsIDIwNywgMTk2LCA4MSwgMTIsIDQyLCAyMTMsIDEzMiwgMTIsIDQyLCAyNDYsIDEyMCwgMTIsIAorICAgIDQyLCAyMTEsIDE5NiwgMTAyLCAxMiwgNDIsIDIxMSwgMTk2LCAxMDUsIDEyLCA0MiwgMjExLCAxOTYsIDE0NywgMTIsIDQyLCAKKyAgICAyMTYsIDEwLCAxMiwgNDIsIDI0OCwgNzgsIDEyLCA0MiwgMjA3LCAyMiwgMTIsIDQyLCAyMjYsIDk2LCAxMDIsIDEyLCA0MiwgCisgICAgMjI2LCA5NiwgMTA1LCAxMiwgNDIsIDI0MCwgMjM2LCAxMiwgNDIsIDIxMSwgMjAwLCAxMiwgNDIsIDQsIDEwMiwgMTIsIDQyLCAKKyAgICA0LCAxMDUsIDEyLCA0MiwgMjI1LCA4NiwgMTAyLCAxMiwgNDIsIDIyNSwgODYsIDEwNSwgMTIsIDQyLCAyMjUsIDg2LCAxNDcsIAorICAgIDEyLCA0MiwgMjI1LCA4NiwgMTQ5LCAxMiwgNDIsIDIwOSwgNDEsIDEyLCA0MiwgMjA2LCA0NywgMTIsIDQyLCAyMDksIDM4LCAKKyAgICAxMDIsIDEyLCA0MiwgMjA5LCAzOCwgMTA1LCAxMiwgNDIsIDIzNCwgMTI4LCAxMDIsIDEyLCA0MiwgMjM0LCAxMjgsIDEwNSwgCisgICAgMTIsIDQyLCAyMzQsIDE5OSwgMTIsIDQyLCAyMTMsIDIxMCwgMTIsIDQyLCAyNDYsIDIwNiwgMTIsIDQyLCAyMDcsIDIyOCwgCisgICAgMTIsIDQyLCAyMjEsIDgxLCAxMiwgNDIsIDI0MSwgMTczLCAxMiwgNDIsIDIyMSwgNzEsIDEyLCA0MiwgMjQ2LCAxMzgsIDEyLCAKKyAgICA0MiwgMjAxLCA4MywgMTAyLCAxMiwgNDIsIDIwMSwgODMsIDEwNSwgMTIsIDQyLCAyMzcsIDc3LCAxMiwgNDIsIDIxNiwgODUsIAorICAgIDEwMiwgMTIsIDQyLCAyMTYsIDg1LCAxMDUsIDEyLCA0MiwgMjA5LCAxNDYsIDE2NywgMjA1LCAxMDksIDIwNSwgMzcsIDEyLCAKKyAgICA0MiwgMjQyLCAyNTUsIDEyLCA0MiwgMjQwLCAyMDAsIDEyLCA0MiwgMjI3LCAyNDMsIDEyLCA0MiwgMjQ4LCAxMTYsIDc2LCAKKyAgICAyNDYsIDEwNCwgMTIsIDQyLCAyMzgsIDIyLCAxMiwgNDIsIDIwOCwgMjE1LCAxMDIsIDEyLCA0MiwgMjA4LCAyMTUsIDEwNSwgCisgICAgMTIsIDQyLCAyNDksIDkwLCAxMiwgNDIsIDIwOSwgMTUzLCAxMiwgNDIsIDI0NywgMjIwLCAyMDksIDE1MywgMTIsIDQyLCAKKyAgICAyMjAsIDE0LCAxMDIsIDEyLCA0MiwgMjIwLCAxNCwgMTA1LCAxMiwgNDIsIDIyMCwgMTQsIDE0NywgMTIsIDQyLCAyMjAsIAorICAgIDE0LCAxNDksIDEyLCA0MiwgMjIyLCAyNywgMTIsIDQyLCAyMTAsIDU5LCAxMiwgNDIsIDIxMywgMjE2LCAxMiwgNDIsIDIzOCwgCisgICAgNTAsIDEyLCA0MiwgMjE3LCA5MiwgMTIsIDQyLCAyNDgsIDQ0LCAxMDIsIDEyLCA0MiwgMjQ4LCA0NCwgMTA1LCAxMiwgNDIsIAorICAgIDIyMiwgNzEsIDEyLCA0MiwgMjIxLCA3NiwgMTIsIDQyLCAyMzUsIDc3LCAxMDIsIDEyLCA0MiwgMjM1LCA3NywgMTA1LCAxMiwgCisgICAgNDIsIDIzNSwgNzcsIDE0NywgMTIsIDQyLCAyMDYsIDIsIDEyLCA0MiwgMjQ2LCAxMDMsIDEyLCA0MiwgMjAxLCA0OCwgMTAyLCAKKyAgICAxMiwgNDIsIDIwMSwgNDgsIDEwNSwgMTIsIDQyLCAyNDcsIDIyMCwgMjExLCAxOTAsIDEyLCA0MiwgMjA5LCAxNDYsIDIzMywgCisgICAgMTI0LCAxMiwgNDIsIDIzMywgMTI0LCAxMiwgNDIsIDI0NywgMjIwLCAyMDgsIDIyNywgMTIsIDQyLCAyNDcsIDIyMCwgMjEwLCAKKyAgICA1NCwgMTIsIDQyLCAyMzYsIDI1NSwgMTIsIDQyLCAyNDcsIDIyMCwgMjQ3LCAxMTgsIDEyLCA0MiwgMjA5LCAxNDYsIDIwMSwgCisgICAgMTA0LCAxMiwgNDIsIDIwMSwgMTA1LCAxMDIsIDEyLCA0MiwgMjAxLCAxMDUsIDEwNSwgMTIsIDQyLCAyNDYsIDE0MSwgMTIsIAorICAgIDQyLCAyNDcsIDIyMCwgMjM1LCAxMDgsIDEyLCA0MiwgMTY4LCAxMDIsIDEyLCA0MiwgMTY4LCAxMDUsIDEyLCA0MiwgMjQ3LCAKKyAgICAyMjAsIDIyNCwgODksIDEyLCA0MiwgMjQ3LCAyMjAsIDIzNiwgNDEsIDEyLCA0MiwgMjIxLCA2NywgMTAyLCAxMiwgNDIsIAorICAgIDIyMSwgNjcsIDEwNSwgMTIsIDQyLCAyMTMsIDIyMiwgMTIsIDQyLCAyNDgsIDEyNiwgMTIsIDQyLCAyNDcsIDIyMCwgMjA2LCAKKyAgICAyMzgsIDIyNSwgMzQsIDEyLCA0MiwgMjQ3LCAyMjAsIDIyNSwgMzUsIDEyLCA0MiwgMjQ3LCAyMjAsIDIwMSwgMTYsIDEyLCAKKyAgICA0MiwgMjQ3LCAyMjAsIDIzNywgMTcsIDEyLCA0MiwgMjM5LCAxMSwgMTAyLCAxMiwgNDIsIDIzOSwgMTEsIDEwNSwgMTIsIAorICAgIDQyLCAyMzksIDExLCAxNDcsIDEyLCA0MiwgMjQ3LCAyMjAsIDIzOSwgMTAsIDEyLCA0MiwgMjM0LCAxMzYsIDEyLCA0MiwgCisgICAgMjQ3LCAyMjAsIDIzMywgMTIwLCAxMiwgNDIsIDI0OCwgMTEyLCAxMiwgNDIsIDIzNSwgMTY5LCAxMiwgNDIsIDI0NywgMjIwLCAKKyAgICAyMzcsIDcxLCAxMiwgNDIsIDI0NywgMjIwLCAyNDgsIDE2MiwgMTIsIDQyLCAyNDcsIDIyMCwgMjEyLCAyNywgMTIsIDQyLCAKKyAgICAyMDksIDE0NiwgMjAxLCAzOSwgMTIsIDQyLCAyMDksIDE0NiwgMjAwLCA0MywgMTIsIDQyLCAyNDcsIDIyMCwgMjM2LCAyMDIsIAorICAgIDEyLCA0MiwgMjI3LCAyNTAsIDIzOCwgNTUsIDEyLCA0MiwgMjQ3LCAyMjAsIDIzOCwgNTUsIDEyLCA0MiwgMjI3LCAyNTAsIAorICAgIDIwNSwgMTU5LCAxMiwgNDIsIDI0NywgMjIwLCAyMDUsIDE1OSwgMTIsIDQyLCAyMjcsIDI1MCwgMjM5LCAxNTgsIDEyLCA0MiwgCisgICAgMjQ3LCAyMjAsIDIzOSwgMTU4LCAxMiwgNDIsIDIwNCwgMTgyLCAxMiwgNDIsIDIyNywgMjUwLCAyMDQsIDE4MiwgMTIsIDQyLCAKKyAgICAyNDcsIDIyMCwgMjA0LCAxODIsIDc1LCA0MiwgMTAyLCA3NSwgNDIsIDIyNCwgMTc2LCA3NSwgNDIsIDI0MCwgMTgyLCA3NSwgCisgICAgNDIsIDIwOSwgNzUsIDc1LCA0MiwgMjExLCAxOTUsIDc1LCA0MiwgMTE3LCA3NSwgNDIsIDEwNSwgNzUsIDQyLCAyMjQsIAorICAgIDIwNSwgNzUsIDQyLCAyMjIsIDE4MCwgNzUsIDQyLCAyMjUsIDEzLCA3NSwgNDIsIDIzOCwgMTU0LCA3NSwgNDIsIDE5MiwgCisgICAgNzUsIDQyLCAxMjcsIDI0OCwgNzgsIDc1LCA0MiwgMjQzLCAxLCA3NSwgNDIsIDIzMiwgMjMxLCA3NSwgNDIsIDIwNywgMjIsIAorICAgIDc1LCA0MiwgMTc2LCAyNDgsIDc4LCA3NSwgNDIsIDIyNiwgOTUsIDc1LCA0MiwgMjE1LCA1MSwgNzUsIDQyLCAyMDAsIDIyOCwgCisgICAgNzUsIDQyLCAyMDgsIDIwNiwgNzUsIDQyLCA1MSwgMTc2LCAyNDgsIDc4LCA3NSwgNDIsIDIzNCwgNzAsIDIzOCwgMTc0LCAKKyAgICA3NSwgNDIsIDIwNiwgMTY2LCA3NSwgNDIsIDI0MCwgMjM2LCA3NSwgNDIsIDIxMSwgMjAwLCA3NSwgNDIsIDI0NiwgMTIwLCAKKyAgICA3NSwgNDIsIDIxNSwgMywgNzUsIDQyLCAyNTEsIDE5MiwgNzUsIDQyLCAyMjEsIDU4LCA3NSwgNDIsIDIzOCwgMTc0LCA3NSwgCisgICAgNDIsIDIzOSwgMTcsIDc1LCA0MiwgMjExLCAyMjMsIDc1LCA0MiwgMjM1LCAxMTYsIDc1LCA0MiwgMjM1LCAxMTcsIDIwOSwgCisgICAgNTUsIDc1LCA0MiwgMjM4LCA1NCwgNzUsIDQyLCAyNDgsIDE3NCwgNzUsIDQyLCAyMDAsIDI1MCwgNzUsIDQyLCAyNDYsIAorICAgIDIyNywgNzUsIDQyLCAyMTIsIDIzNywgNzUsIDQyLCAyMjgsIDExMywgNzUsIDQyLCAyMDksIDUzLCA3NSwgNDIsIDIyNSwgCisgICAgODUsIDc1LCA0MiwgMjQzLCAxMSwgNzUsIDQyLCAyMDgsIDE5NywgNzUsIDQyLCAyMjEsIDYzLCA3NSwgNDIsIDIxMywgMTUsIAorICAgIDc1LCA0MiwgMjAwLCAyMzUsIDc1LCA0MiwgMjE3LCA3MCwgNzUsIDQyLCAyMDQsIDE5MSwgNzUsIDQyLCAyMzksIDEzOSwgCisgICAgNzUsIDQyLCAyMDksIDI1MCwgMjA2LCA0NywgNzUsIDQyLCAyMzksIDE4MCwgMjQ2LCAxMjAsIDc1LCA0MiwgMTY4LCAyMDgsIAorICAgIDUzLCA3NSwgNDIsIDEyMCwgMjM0LCAxNzQsIDc1LCA0MiwgMjEwLCAwLCA3NSwgNDIsIDI0OCwgODUsIDc1LCA0MiwgMjA5LCAKKyAgICAzNywgNzUsIDQyLCAyNDgsIDQ4LCA3NSwgNDIsIDIwOCwgOTAsIDc1LCA0MiwgMjM0LCAxMjcsIDc1LCA0MiwgMjM0LCAyMTQsIAorICAgIDc1LCA0MiwgMjQwLCAxODUsIDc1LCA0MiwgMjM0LCAxOTksIDc1LCA0MiwgMjQ4LCA2NiwgNzUsIDQyLCAyMTMsIDIxMCwgCisgICAgNzUsIDQyLCAyMTEsIDIwOCwgNzUsIDQyLCAyNDEsIDEyLCA3NSwgNDIsIDI1MCwgMTEzLCA3NSwgNDIsIDIwOCwgMTkzLCAKKyAgICA3NSwgNDIsIDIxOCwgMjE0LCA3NSwgNDIsIDIwNywgMjI4LCA3NSwgNDIsIDIxMSwgMjM0LCA3NSwgNDIsIDIyMSwgODEsIAorICAgIDc1LCA0MiwgMjA1LCAxMDgsIDc1LCA0MiwgMjI1LCAxNjIsIDc1LCA0MiwgMjA4LCA3NiwgNzUsIDQyLCAyNDEsIDE3MywgCisgICAgNzUsIDQyLCAyMDEsIDYzLCA3NSwgNDIsIDI0MCwgMjEyLCAyMTgsIDIxNCwgNzUsIDQyLCAyNDYsIDY2LCA3NSwgNDIsIAorICAgIDIzNiwgMTc2LCA3NSwgNDIsIDI0NiwgMTMyLCA3NSwgNDIsIDIwOCwgOTUsIDc1LCA0MiwgMjAxLCA4MiwgNzUsIDQyLCAKKyAgICAyMzcsIDc3LCA3NSwgNDIsIDI0NiwgMTI4LCA3NSwgNDIsIDIzNywgMTU0LCA3NSwgNDIsIDUzLCAyMDAsIDE5NSwgNzUsIAorICAgIDQyLCAxNjcsIDIwNSwgMTA5LCAyMDUsIDM3LCA3NSwgNDIsIDIwOSwgNjcsIDc1LCA0MiwgMjM3LCAxNjYsIDc1LCA0MiwgCisgICAgMjQyLCAyNTUsIDc1LCA0MiwgMjQwLCAyMDAsIDc1LCA0MiwgMjE1LCAwLCA3NSwgNDIsIDIyNywgMjQzLCA3NSwgNDIsIAorICAgIDIyMiwgNDksIDc1LCA0MiwgMjA1LCAyMzksIDc1LCA0MiwgMjA3LCAxNzgsIDc1LCA0MiwgMjI0LCAxOTksIDc1LCA0MiwgCisgICAgMjAzLCAxOTUsIDc1LCA0MiwgMjM3LCAxMTAsIDc1LCA0MiwgMjQ4LCAxMTYsIDc2LCAyNDYsIDEwNCwgNzUsIDQyLCAyMDksIAorICAgIDE3OCwgNzUsIDQyLCAyMzksIDE4MCwgMjA2LCAxNTgsIDc1LCA0MiwgMjAxLCAzNCwgNzUsIDQyLCAyMDksIDgzLCA3NSwgCisgICAgNDIsIDI0MCwgMjU1LCA3NSwgNDIsIDIzOCwgMjIsIDc1LCA0MiwgMjA4LCAyMzAsIDc1LCA0MiwgNDgsIDc1LCA0MiwgMjA4LCAKKyAgICA3OCwgNzUsIDQyLCAyMDgsIDIxNCwgNzUsIDQyLCAyMDUsIDEzMSwgNzUsIDQyLCAyMzUsIDg2LCA3NSwgNDIsIDI0NywgCisgICAgMTA0LCA3NSwgNDIsIDIwOCwgMTEzLCA3NSwgNDIsIDI0OSwgOTAsIDc1LCA0MiwgMjEzLCA4MywgNzUsIDQyLCAyMDksIAorICAgIDE1MywgNzUsIDQyLCAyMjcsIDIzNSwgNzUsIDQyLCAyMjAsIDEzLCA3NSwgNDIsIDIxMCwgNTksIDc1LCA0MiwgMjM3LCAKKyAgICAxNDIsIDc1LCA0MiwgMjE3LCA5MiwgNzUsIDQyLCAyNTEsIDc5LCA3NSwgNDIsIDIxNSwgMTIwLCA3NSwgNDIsIDIzOSwgMjEsIAorICAgIDc1LCA0MiwgMjQ4LCA0MywgNzUsIDQyLCAyMjIsIDcxLCA3NSwgNDIsIDIyMSwgMTU4LCA3NSwgNDIsIDIxMCwgMTc0LCA3NSwgCisgICAgNDIsIDI1MCwgMjA2LCA3NSwgNDIsIDIyMSwgNzYsIDc1LCA0MiwgMjA1LCAxNjMsIDc1LCA0MiwgMjE3LCA0MSwgNzUsIDQyLCAKKyAgICAyNDgsIDEyMCwgNzUsIDQyLCAyMDgsIDc0LCA3NSwgNDIsIDI0NiwgNzgsIDc1LCA0MiwgMjM1LCA3NiwgNzUsIDQyLCAyMDYsIAorICAgIDIsIDc1LCA0MiwgMjI4LCA3NiwgNzUsIDQyLCAyNDgsIDEzMiwgNzUsIDQyLCAyMDEsIDEwNSwgMjM4LCAxNzQsIDc1LCA0MiwgCisgICAgMjQ2LCAxMDMsIDc1LCA0MiwgMjAxLCA0NywgNzUsIDQyLCAyMTEsIDE5MCwgNzUsIDQyLCAyMzMsIDEyNCwgNzUsIDQyLCAKKyAgICAyMDgsIDIyNywgNzUsIDQyLCAyMDMsIDgzLCA3NSwgNDIsIDI0OSwgMywgNzUsIDQyLCAyMTUsIDE2OCwgNzUsIDQyLCAyNDksIAorICAgIDExNiwgNzUsIDQyLCAyMTAsIDU0LCA3NSwgNDIsIDIxMywgMTY5LCA3NSwgNDIsIDIxMiwgMTU4LCA3NSwgNDIsIDIzNiwgCisgICAgMjU1LCA3NSwgNDIsIDI0OCwgMTE4LCA3NSwgNDIsIDI0NywgMTE4LCA3NSwgNDIsIDI0OCwgMTQ5LCA3NSwgNDIsIDIyMSwgCisgICAgNzgsIDc1LCA0MiwgMjAxLCAxMDQsIDc1LCA0MiwgMjQ2LCAxNDEsIDc1LCA0MiwgMjAxLCAxMiwgNzUsIDQyLCAyNDAsIAorICAgIDI0NywgNzUsIDQyLCAyMDIsIDIxOCwgNzUsIDQyLCAyMzUsIDEwOCwgNzUsIDQyLCAyMjQsIDg5LCA3NSwgNDIsIDIzNiwgCisgICAgNDEsIDc1LCA0MiwgMjIxLCA2NiwgNzUsIDQyLCAyMDksIDc0LCA3NSwgNDIsIDIwOSwgMjUwLCAyMDcsIDUsIDI0OCwgMTYyLCAKKyAgICA3NSwgNDIsIDIxMywgMjIyLCA3NSwgNDIsIDI0OCwgMTI2LCA3NSwgNDIsIDIwMCwgMjE4LCA3NSwgNDIsIDIzNywgMTg5LCAKKyAgICA3NSwgNDIsIDIyNSwgMzQsIDc1LCA0MiwgMjA2LCAyMzgsIDIyNSwgMzQsIDc1LCA0MiwgMjI1LCAzMCwgNzUsIDQyLCAyMDksIAorICAgIDAsIDc1LCA0MiwgMjI1LCAzNSwgNzUsIDQyLCAyMDEsIDE2LCA3NSwgNDIsIDIzNywgMTcsIDc1LCA0MiwgMjM5LCAxMCwgCisgICAgNzUsIDQyLCAyMzQsIDEzNiwgNzUsIDQyLCAyMzYsIDIxNywgNzUsIDQyLCAyMzMsIDEyMCwgNzUsIDQyLCAyNDgsIDExMiwgCisgICAgNzUsIDQyLCAyMDYsIDI0NywgNzUsIDQyLCAyMzQsIDIyMSwgNzUsIDQyLCAyMzcsIDEwMywgNzUsIDQyLCAyMTIsIDU4LCAKKyAgICAyMDEsIDEyLCA3NSwgNDIsIDI0NywgMTA2LCA3NSwgNDIsIDIzNSwgMTY5LCA3NSwgNDIsIDIzNywgNzEsIDc1LCA0MiwgCisgICAgMjQ4LCAxNjIsIDc1LCA0MiwgMjEyLCAyNywgNzUsIDQyLCAyNDEsIDE1OCwgNzUsIDQyLCAyMDEsIDM5LCA3NSwgNDIsIAorICAgIDIzNCwgMTA2LCA3NSwgNDIsIDIwMCwgNDMsIDc1LCA0MiwgMjIxLCAxNjksIDc1LCA0MiwgMjQ4LCAxNDQsIDc1LCA0MiwgCisgICAgMjM4LCAxODYsIDc1LCA0MiwgMjM2LCAyMDIsIDc1LCA0MiwgMjA1LCA4MCwgNzUsIDQyLCAyMzksIDE0MiwgNzUsIDQyLCAKKyAgICAyMTMsIDIwNCwgNzUsIDQyLCAyMTgsIDIxNiwgNzUsIDQyLCAyMzgsIDU1LCA3NSwgNDIsIDIwNSwgMTU5LCA3NSwgNDIsIAorICAgIDIzOSwgMTU4LCA3NSwgNDIsIDIwNCwgMTgyLCA3NSwgNDIsIDIzNywgMjAsIDE0MSwgMjQxLCAxMTcsIDE3MSwgNDksIDIwNSwgCisgICAgMTg2LCAyMTMsIDQ2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDg4LCAyMDUsIDE4NiwgNTcsIDE0MSwgMjQxLCAxMTcsIDE3MSwgCisgICAgNDksIDIwNSwgMTg2LCAxMDEsIDI2LCAyMTMsIDQ2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDg4LCAyMDUsIDE4NiwgMTAxLCAKKyAgICAyNiwgNTcsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjM2LCAxODMsIDIwNywgMjAwLCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgCisgICAgMjAxLCAyMzYsIDIwMSwgNTYsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCA1NywgMTQxLCAyNDEsIAorICAgIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDIyNSwgMjgsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgCisgICAgMjAxLCAyMDMsIDIyNSwgMjI1LCAyOCwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDIwMywgMjI1LCAKKyAgICAyMTMsIDQ2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIDIwMSwgMjI0LCA1NCwgMjI1LCAyOCwgMTQxLCAKKyAgICAyNDEsIDExNywgMTcxLCAyMTYsIDI0NSwgMTQxLCAyMDgsIDI0NCwgMTQxLCAyNDYsIDcwLCAxNDEsIDIzNiwgMTgzLCAyMDgsIAorICAgIDc2LCAyNDAsIDI0NCwgODEsIDIyNywgMjM2LCAyMjgsIDk2LCAyMDgsIDExMiwgOTksIDE0MSwgMjI4LCAxMCwgODEsIDE0MSwgCisgICAgMjQ2LCAxMDYsIDgxLCAxNDEsIDQxLCAxOTksIDgxLCA0OSwgMjUxLCA3MSwgMTU5LCA1MSwgMjUxLCA3MSwgMTU5LCA0OSwgCisgICAgNTMsIDI1MSwgNzEsIDE1OSwgNTEsIDUzLCAyNTEsIDcxLCAxNTksIDQ5LCAyNDMsIDE2LCAxNTksIDUxLCAyNDMsIDE2LCAKKyAgICAxNTksIDQ5LCA2NCwgMjQzLCAxNiwgMTU5LCA1MSwgNjQsIDI0MywgMTYsIDE1OSwgNDksIDYzLCAyMjQsIDI0NywgMTU5LCAKKyAgICA1MSwgNjMsIDIyNCwgMjQ3LCAxNTksIDIxNSwgNjUsIDgxLCAyMzUsIDIzOCwgODEsIDQ5LCAyMDUsIDE0NiwgMjEwLCA1NSwgCisgICAgMTU5LCA1MSwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNDksIDY0LCAyMjQsIDI0NywgMTU5LCA1MSwgNjQsIDIyNCwgMjQ3LCAKKyAgICAxNTksIDQ5LCA2NCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNTEsIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA0OSwgCisgICAgNjQsIDUyLCAxNTksIDUxLCA2NCwgNTIsIDE1OSwgMjAxLCA3OCwgMjQxLCAyNDQsIDIxMywgMTA1LCA1MywgMjE1LCAxNSwgCisgICAgMjE0LCA2MywgODEsIDUzLCAyMTUsIDE1LCAyMTQsIDYzLCA4MSwgMTI4LCA1MywgMjE1LCAxNSwgMjE0LCA2MywgODEsIAorICAgIDIxNSwgNjUsIDEzNCwgMjM3LCAxODksIDIzNCwgMTcxLCAyMTgsIDkzLCAxMDIsIDIzNCwgMTcxLCAyMTgsIDkzLCAxMDUsIAorICAgIDIzNCwgMTcxLCAyMTgsIDkzLCAxNDcsIDIzNCwgMTcxLCAyMTgsIDkzLCAxNDksIDIzNCwgMTcxLCAyMTgsIDkzLCAxNjQsIAorICAgIDIzNCwgMTcxLCAyMTgsIDkzLCAxODcsIDIzNCwgMTcxLCAyMTgsIDkzLCAyMTAsIDEzNSwgMjM0LCAxNzEsIDIxOCwgOTMsIAorICAgIDE5MiwgMjM0LCAxNzEsIDIxOCwgOTMsIDIxOSwgMTEzLCAxNDEsIDIyNCwgMjI5LCAxNTAsIDgxLCAxNDEsIDIxMywgMTksIAorICAgIDE1MCwgODEsIDE0MSwgMjQxLCAxMjYsIDE1MCwgODEsIDE0MSwgMjM4LCAxNTMsIDE1MCwgODEsIDI5LCAyMDksIDEzOSwgCisgICAgNzMsIDE1MCwgODEsIDI5LCA1MywgNzMsIDE1MCwgODEsIDIwMSwgNzQsIDI0MSwgMjQ0LCA4MywgMjI3LCA2NywgMjEzLCAKKyAgICAxMzMsIDgxLCA4MywgMjI3LCA2NywgMjEzLCAxMzMsIDMsIDIwMiwgMTg5LCAyMDksIDEsIDgxLCA4MywgMjI3LCA2NywgCisgICAgMjEzLCAxMzMsIDEzNCwgMjAzLCAyMjUsIDIzNCwgMjEzLCA4MywgMjI3LCA2NywgMjEzLCAxMzMsIDMsIDIwMiwgMTg5LCAKKyAgICAyMDksIDEsIDEzNCwgMjAzLCAyMjUsIDIzNCwgMjEzLCA4MywgMjI3LCA2NywgMjEzLCAxMzMsIDEzNCwgMjI0LCA1NCwgCisgICAgMjM0LCAyMTMsIDQ0LCAyMTUsIDY1LCA4MSwgMTQxLCAyMDYsIDE3OCwgMjI0LCAxNzcsIDIzNywgMTM5LCAyMTAsIDE1NSwgCisgICAgOTksIDIzNCwgMTcxLCAyMTgsIDkzLCAyMDYsIDE2NiwgMjM0LCAxNzEsIDIxOCwgOTMsIDIwNCwgMTU5LCAyMzQsIDE3MSwgCisgICAgMjE4LCA5MywgMjA2LCA2NywgODMsIDE0MSwgMjI4LCAxMCwgODEsIDIyMiwgMTI4LCA4MSwgMjE2LCAxMTAsIDI1MSwgMTA1LCAKKyAgICA4MSwgMTQxLCA1OCwgMjI4LCA5OSwgMTQxLCAxNjcsIDIzNywgOTYsIDIwOCwgMjQ0LCAxNzcsIDEsIDQsIDYyLCAxNzcsIDEsIAorICAgIDYyLCAxNzcsIDEsIDQsIDcwLCAxNzcsIDEsIDcwLCAxNzcsIDEsIDQsIDY2LCAxNzcsIDEsIDY2LCAxNzcsIDEsIDQsIDcyLCAKKyAgICAxNzcsIDEsIDcyLCAxNzcsIDEsIDQsIDc0LCAxNzcsIDEsIDc0LCAxNzcsIDEsIDE2MSwgMTc3LCAxLCAyMzYsIDg5LCAxNzcsIAorICAgIDEsIDIyNiwgMTYzLCAxNzcsIDEsIDIzNSwgMTYxLCAxNzcsIDEsIDIyNiwgMTUsIDE3NywgMSwgMjM1LCA1MCwgMTc3LCAxLCAKKyAgICAyMjcsIDgsIDE3NywgMSwgMjM2LCAxNSwgMTc3LCAxLCAyMjYsIDg4LCAxNzcsIDEsIDIzNSwgMTE2LCAxNzcsIDEsIDIxMiwgCisgICAgNjQsIDE3NywgMSwgMTk5LCAxMTQsIDE3NywgMSwgMjA5LCAxODIsIDE3NywgMSwgMTk5LCAzNiwgMTc3LCAxLCAyMDgsIDI0LCAKKyAgICAxNzcsIDEsIDE5OSwgMywgMTc3LCAxLCAyMTEsIDIwMiwgMTc3LCAxLCAxOTksIDg5LCAxNzcsIDEsIDIwOSwgMjksIDE3NywgCisgICAgMSwgMTk5LCAxNCwgMTc3LCAxLCAyMDcsIDM2LCAxNzcsIDEsIDI0MiwgNTgsIDE3NywgMSwgMjA2LCAxNSwgMTc3LCAxLCAKKyAgICAyNDEsIDc2LCAxNzcsIDEsIDQsIDIwNCwgMjE1LCAxNzcsIDEsIDIwNCwgMjE1LCAxNzcsIDEsIDIzOSwgMTM3LCAxNzcsIDEsIAorICAgIDIwNiwgMjAxLCAxNzcsIDEsIDI0MSwgMTc1LCAxNzcsIDEsIDEzOCwgMTc3LCAxLCAyNDAsIDIxMSwgMTc3LCAxLCAxODgsIAorICAgIDE3NywgMSwgMjE5LCAxNTAsIDE3NywgMSwgMjE4LCAxMzMsIDE3NywgMSwgMjIwLCAzNCwgMTc3LCAxLCAyMTgsIDI0MSwgCisgICAgMTc3LCAxLCAxNDQsIDE3NywgMSwgMjQ5LCAxMzYsIDE3NywgMSwgMTcyLCAxNzcsIDEsIDIzNCwgNzUsIDE3NywgMSwgMjQ4LCAKKyAgICAxODgsIDE3NywgMSwgMjE1LCAyMDQsIDE3NywgMSwgMjMzLCA5NywgMTc3LCAxLCAyNDgsIDM2LCAxNzcsIDEsIDIxNCwgCisgICAgMjI0LCAxNzcsIDEsIDIzNCwgMTM5LCAxNzcsIDEsIDI0OSwgOCwgMTc3LCAxLCAyMTYsIDczLCAxNzcsIDEsIDIzMywgMjA3LCAKKyAgICAxNzcsIDEsIDI0OCwgMTI0LCAxNzcsIDEsIDIxNSwgMTA2LCAxNzcsIDEsIDE3OCwgMTc3LCAxLCAyMjEsIDIxMSwgMTc3LCAKKyAgICAxLCAyMjEsIDQxLCAxNzcsIDEsIDIyMiwgNzYsIDE3NywgMSwgMjIxLCAxMzYsIDE3NywgMSwgNCwgMTgzLCAxNzcsIDEsIAorICAgIDE4MywgMTc3LCAxLCA0LCAxOTksIDIxMSwgMTc3LCAxLCAxOTksIDIxMSwgMTc3LCAxLCA0LCAxOTksIDI0NSwgMTc3LCAxLCAKKyAgICAxOTksIDI0NSwgMTc3LCAxLCAyMTMsIDI1MiwgMTc3LCAxLCAyMTMsIDg4LCAxNzcsIDEsIDIxMiwgMTc1LCAxNzcsIDEsIAorICAgIDIxMywgMTkwLCAxNzcsIDEsIDIxMywgMSwgMTc3LCAxLCA0LCAyMDEsIDExNCwgMTc3LCAxLCAyMDEsIDExNCwgMTc3LCAxLCAKKyAgICAyMDEsIDMxLCAxNzcsIDEsIDIwMSwgNjQsIDE3NywgMSwgMjAxLCAwLCAxNzcsIDEsIDIyMCwgMjE0LCAxNzcsIDEsIDIwMSwgCisgICAgMTY2LCAxNzcsIDEsIDQsIDE2MSwgMTc3LCAxLCA0LCAyMjcsIDgsIDM4LCAyMjcsIDMyLCAyMDIsIDE4OSwgMjA5LCAxLCAKKyAgICA4MSwgMzgsIDIyNywgMzIsIDIxMCwgMTcyLCAyMDksIDEsIDgxLCAyMjcsIDMyLCAyMDIsIDE4OSwgMjA5LCAxLCA4MSwgCisgICAgMjI3LCAzMiwgMjEwLCAxNzIsIDIwOSwgMSwgODEsIDE3NywgMjI4LCAxMCwgODEsIDE3NywgMjAyLCAxODksIDIyOCwgMTAsIAorICAgIDgxLCAxNzcsIDI0MSwgMzUsIDE5OSwgMjI2LCAyMjcsIDMyLCA1MywgMjMzLCAzMywgNjksIDEsIDQsIDYyLCA2OSwgMSwgCisgICAgNjIsIDY5LCAxLCA0LCA3MCwgNjksIDEsIDcwLCA2OSwgMSwgNCwgNjYsIDY5LCAxLCA2NiwgNjksIDEsIDQsIDcyLCA2OSwgCisgICAgMSwgNzIsIDY5LCAxLCA0LCA3NCwgNjksIDEsIDc0LCA2OSwgMSwgMTYxLCA2OSwgMSwgMjM2LCA4OSwgNjksIDEsIDIyNiwgCisgICAgMTYzLCA2OSwgMSwgMjM1LCAxNjEsIDY5LCAxLCAyMjYsIDE1LCA2OSwgMSwgMjM1LCA1MCwgNjksIDEsIDIyNywgOCwgNjksIAorICAgIDEsIDIzNiwgMTUsIDY5LCAxLCAyMjYsIDg4LCA2OSwgMSwgMjM1LCAxMTYsIDY5LCAxLCAyMTIsIDY0LCA2OSwgMSwgMTk5LCAKKyAgICAxMTQsIDY5LCAxLCAyMDksIDE4MiwgNjksIDEsIDE5OSwgMzYsIDY5LCAxLCAyMDgsIDI0LCA2OSwgMSwgMTk5LCAzLCA2OSwgCisgICAgMSwgMjExLCAyMDIsIDY5LCAxLCAxOTksIDg5LCA2OSwgMSwgMjA5LCAyOSwgNjksIDEsIDE5OSwgMTQsIDY5LCAxLCAyMDcsIAorICAgIDM2LCA2OSwgMSwgMjQyLCA1OCwgNjksIDEsIDIwNiwgMTUsIDY5LCAxLCAyNDEsIDc2LCA2OSwgMSwgNCwgMjA0LCAyMTUsIAorICAgIDY5LCAxLCAyMDQsIDIxNSwgNjksIDEsIDIzOSwgMTM3LCA2OSwgMSwgMjA2LCAyMDEsIDY5LCAxLCAyNDEsIDE3NSwgNjksIAorICAgIDEsIDEzOCwgNjksIDEsIDI0MCwgMjExLCA2OSwgMSwgMTg4LCA2OSwgMSwgMjE5LCAxNTAsIDY5LCAxLCAyMTgsIDEzMywgCisgICAgNjksIDEsIDIyMCwgMzQsIDY5LCAxLCAyMTgsIDI0MSwgNjksIDEsIDE0NCwgNjksIDEsIDI0OSwgMTM2LCA2OSwgMSwgMTcyLCAKKyAgICA2OSwgMSwgMjM0LCA3NSwgNjksIDEsIDI0OCwgMTg4LCA2OSwgMSwgMjE1LCAyMDQsIDY5LCAxLCAyMzMsIDk3LCA2OSwgMSwgCisgICAgMjQ4LCAzNiwgNjksIDEsIDIxNCwgMjI0LCA2OSwgMSwgMjM0LCAxMzksIDY5LCAxLCAyNDksIDgsIDY5LCAxLCAyMTYsIDczLCAKKyAgICA2OSwgMSwgMjMzLCAyMDcsIDY5LCAxLCAyNDgsIDEyNCwgNjksIDEsIDIxNSwgMTA2LCA2OSwgMSwgMTc4LCA2OSwgMSwgCisgICAgMjIxLCAyMTEsIDY5LCAxLCAyMjEsIDQxLCA2OSwgMSwgMjIyLCA3NiwgNjksIDEsIDIyMSwgMTM2LCA2OSwgMSwgNCwgMTgzLCAKKyAgICA2OSwgMSwgMTgzLCA2OSwgMSwgNCwgMTk5LCAyMTEsIDY5LCAxLCAxOTksIDIxMSwgNjksIDEsIDQsIDE5OSwgMjQ1LCA2OSwgCisgICAgMSwgMTk5LCAyNDUsIDY5LCAxLCAyMTMsIDI1MiwgNjksIDEsIDIxMywgODgsIDY5LCAxLCAyMTIsIDE3NSwgNjksIDEsIAorICAgIDIxMywgMTkwLCA2OSwgMSwgMjEzLCAxLCA2OSwgMSwgNCwgMjAxLCAxMTQsIDY5LCAxLCAyMDEsIDExNCwgNjksIDEsIDIwMSwgCisgICAgMzEsIDY5LCAxLCAyMDEsIDY0LCA2OSwgMSwgMjAxLCAwLCA2OSwgMSwgMjIwLCAyMTQsIDY5LCAxLCAyMDEsIDE2NiwgNjksIAorICAgIDEsIDQsIDE2MSwgNjksIDEsIDQsIDIyNywgOCwgNjksIDEsIDIwMywgOTAsIDY5LCAxLCAyMDIsIDIzNCwgNjksIDEsIDIwMywgCisgICAgNTksIDY5LCAxLCAyMDIsIDE5MywgNjksIDEwMSwgMjQwLCAxODIsIDIyNywgMzIsIDIxNCwgMjQ4LCAyMDksIDEsIDgxLCAKKyAgICA2OSwgMjI4LCAxMCwgODEsIDY5LCAyMDIsIDE4OSwgMjI4LCAxMCwgODEsIDY5LCAyNDEsIDM1LCAyMjYsIDU1LCAyNDgsIAorICAgIDEwMiwgMSwgMjUwLCAxMDMsIDI0OCwgMTAyLCAxLCAyMTYsIDIyNiwgMjQ4LCAxMDIsIDEsIDIyMywgMjQzLCAyNDgsIDEwMiwgCisgICAgMSwgMjM4LCA1LCAyNDgsIDEwMiwgMSwgMjQyLCAxNTMsIDI0OCwgMTAyLCAxLCAyMDcsIDgzLCAyNDgsIDEwMiwgMSwgMjIwLCAKKyAgICAyMTQsIDI0OCwgMTAyLCAxLCAxNTYsIDI0OCwgMTAyLCAxLCAyMzYsIDE1NiwgMjQ4LCAxMDIsIDEsIDIyNywgMTE4LCAyNDgsIAorICAgIDEwMiwgMSwgMjM0LCAyNDcsIDI0OCwgMTAyLCAxLCAyMjcsIDI1MSwgMjQ4LCAxMDIsIDEsIDIxNCwgMTY3LCAyNDgsIDEwMiwgCisgICAgMSwgMjAwLCAxOTUsIDI0OCwgMTAyLCAxLCAxOTksIDc4LCAyNDgsIDEwMiwgMSwgMjQ3LCAzOCwgMjQ4LCAxMDIsIDEsIAorICAgIDIxMCwgMTE2LCAyNDgsIDEwMiwgMSwgMTQ2LCAyNDgsIDEwMiwgMSwgMTk5LCAxNTcsIDI0OCwgMTAyLCAxLCAyNDcsIDIyMywgCisgICAgMjQ4LCAxMDIsIDEsIDIxMiwgMTIyLCAyNDgsIDEwMiwgMSwgNjIsIDI0OCwgMTAyLCAxLCA3NCwgMjQ4LCAxMDIsIDEsIDcyLCAKKyAgICAyNDgsIDEwMiwgMSwgMjM4LCAyNDEsIDI0OCwgMTAyLCAxLCAyNTEsIDE3NiwgMjQ4LCAxMDIsIDEsIDIzOCwgMjM0LCAyNDgsIAorICAgIDEwMiwgMSwgMjUwLCAxMzksIDI0OCwgMTAyLCAxLCAyMTcsIDMsIDI0OCwgMTAyLCAxLCAyNTEsIDg1LCAyNDgsIDEwMiwgMSwgCisgICAgMjM4LCAxNzksIDI0OCwgMTAyLCAxLCAyNTEsIDc2LCAyNDgsIDEwMiwgMSwgMjM4LCAxNjUsIDI0OCwgMTAyLCAxLCAyMzgsIAorICAgIDExNSwgMjQ4LCAxMDIsIDEsIDcwLCAyNDgsIDEwMiwgMSwgNjYsIDI0OCwgMTAyLCAxLCAyMjgsIDgsIDI0OCwgMTAyLCAxLCAKKyAgICAyMDMsIDE2OCwgMjQ4LCAxMDIsIDEsIDIxOSwgMjU1LCAyNDgsIDEwMiwgMSwgMjM1LCAxMjAsIDI0OCwgMTAyLCAxLCAyMjgsIAorICAgIDE1MiwgMjksIDEsIDIyNiwgMTIxLCAyOSwgMSwgMjA4LCAxNzEsIDI5LCAxLCAyMjYsIDExNCwgMjksIDEsIDIxOSwgMTQzLCAKKyAgICAyOSwgMSwgMjE5LCAxNDEsIDI5LCAxLCAyMTksIDE0MCwgMjksIDEsIDIwNSwgMjUzLCAyOSwgMSwgMjA4LCAxNjAsIDI5LCAKKyAgICAxLCAyMTMsIDc4LCAyOSwgMSwgMjEzLCA3MywgMjksIDEsIDIxMywgNzAsIDI5LCAxLCAyMTMsIDYzLCAyOSwgMSwgMjEzLCAKKyAgICA1OCwgMjksIDEsIDIxMywgNTMsIDI5LCAxLCAyMTMsIDY0LCAyOSwgMSwgMjEzLCA3NiwgMjksIDEsIDIyMSwgMTk3LCAyOSwgCisgICAgMSwgMjE1LCAxOTAsIDI5LCAxLCAyMDgsIDE2OCwgMjksIDEsIDIxNSwgMTc5LCAyOSwgMSwgMjA5LCAxMjksIDI5LCAxLCAKKyAgICAyMDgsIDE2NSwgMjksIDEsIDIyOCwgMTc0LCAyOSwgMSwgMjQ2LCAxNjgsIDI5LCAxLCAyMDgsIDE3NSwgMjksIDEsIDI0NiwgCisgICAgMjMyLCAyOSwgMSwgMjI2LCAxODMsIDI5LCAxLCAyMDYsIDgwLCAyOSwgMSwgMjE1LCAyMjcsIDI5LCAxLCAyMzQsIDY2LCAKKyAgICAyOSwgMSwgNjIsIDI5LCAxLCAyNTEsIDIyMSwgMjksIDEsIDE4MywgMjksIDEsIDIwMCwgOTgsIDI5LCAxLCAyMzgsIDE0MiwgCisgICAgMjksIDEsIDcyLCAyOSwgMSwgMjAwLCAzOCwgMjksIDEsIDIwMCwgNTEsIDI5LCAxLCA3NCwgMjksIDEsIDIwMSwgMTE0LCAKKyAgICAyOSwgMSwgMjAxLCAxMTAsIDI5LCAxLCAyMTcsIDEyMSwgMjksIDEsIDE5OSwgMjQ1LCAyOSwgMSwgNjYsIDI5LCAxLCAyMDEsIAorICAgIDUwLCAyOSwgMSwgMjAxLCA2NCwgMjksIDEsIDIwMSwgMzEsIDI5LCAxLCAxOTksIDIxMSwgMjksIDEsIDIzOCwgNjksIDI5LCAKKyAgICAxLCAyMDAsIDksIDI5LCAxLCA3MCwgMjksIDIzNywgOTMsIDI5LCAxLCAyMDgsIDE2OSwgMjksIDEsIDIxOSwgMTMzLCAyOSwgCisgICAgMSwgMjE5LCAxMzUsIDI5LCAxLCAyMTksIDEzOCwgMjksIDEsIDIxMywgNzEsIDI5LCAxLCAyMTMsIDUyLCAyOSwgMSwgMjEzLCAKKyAgICA2MCwgMjksIDEsIDIxMywgNjUsIDI5LCAxLCAyMTMsIDUwLCAyOSwgMSwgMjIxLCAxOTAsIDI5LCAxLCAyMjEsIDE4NywgMjksIAorICAgIDEsIDIyMSwgMTkxLCAyOSwgMSwgMjI3LCA1MywgMjksIDEsIDIxNSwgMTg1LCAyOSwgMSwgMjE1LCAxNzEsIDI5LCAxLCAKKyAgICAyMTUsIDE3NywgMjksIDEsIDIxNSwgMTc0LCAyOSwgMSwgMjE1LCAxODgsIDI5LCAxLCAyMTUsIDE3MiwgMjksIDEsIDIyNywgCisgICAgNTEsIDI5LCAxLCAyMjcsIDQ5LCAyOSwgMSwgMjA5LCAxMjIsIDI5LCAxLCAyMDksIDEyMCwgMjksIDEsIDIwOSwgMTEyLCAKKyAgICAyOSwgMSwgMjA5LCAxMTcsIDI5LCAxLCAyMDksIDEyNywgMjksIDEsIDIxNiwgMTQ2LCAyOSwgMSwgMjA4LCAxNzIsIDI5LCAKKyAgICAxLCAyMDAsIDI4LCAyOSwgMSwgMjAwLCAyNCwgMjksIDEsIDIwMCwgMjUsIDI5LCAxLCAyMjcsIDUyLCAyOSwgMSwgMjA4LCAKKyAgICAxNzMsIDI5LCAxLCAyMDAsIDM0LCAyOSwgMSwgMTk5LCAyMzksIDI5LCAxLCAxOTksIDIzOCwgMjksIDEsIDE5OSwgMjQxLCAKKyAgICAyOSwgMSwgMTk5LCAyMDIsIDI5LCAxLCAxOTksIDIwMywgMjksIDEsIDE5OSwgMjA2LCAyOSwgMSwgMjUwLCAyNDUsIDI5LCAKKyAgICAxLCAyNTAsIDIzOSwgMTQxLCAyNTEsIDU4LCAyMjQsIDE2NSwgODEsIDE0MSwgMjUxLCA1OCwgMjEzLCAxMDYsIDgxLCAxNDEsIAorICAgIDI1MSwgNTgsIDExMiwgODEsIDE0MSwgMjUxLCA1OCwgMTIwLCA4MSwgMTQxLCAyNTEsIDU4LCAxMjYsIDgxLCAxNDEsIDI1MSwgCisgICAgNTgsIDIzNiwgMjI5LCA4MSwgMTQxLCAyNTEsIDU4LCAyMDUsIDE1OCwgODEsIDE0MSwgMjUxLCA1OCwgMTAxLCA4MSwgMTQxLCAKKyAgICAyNTEsIDU4LCAyNDgsIDkzLCA4MSwgMTQxLCAyNTEsIDU4LCAyMzcsIDczLCA4MSwgMTQxLCAyNTEsIDU4LCAyMTEsIDE5NiwgCisgICAgODEsIDE0MSwgMjUxLCA1OCwgMjA2LCA3NSwgODEsIDE0MSwgMjUxLCA1OCwgMjM2LCAyMjIsIDgxLCAxNDEsIDI1MSwgNTgsIAorICAgIDIzNCwgMTI0LCA4MSwgMTQxLCAyNTEsIDU4LCAyMzksIDE4LCA4MSwgMTQxLCAyNTEsIDU4LCAyMjIsIDE4MSwgODEsIDI0OCwgCisgICAgMTAyLCAxLCAyNDgsIDM2LCAyNDgsIDEwMiwgMSwgMTk5LCAzNiwgMjQ4LCAxMDIsIDEsIDIyNywgMjA3LCAyNDgsIDEwMiwgCisgICAgMSwgMjM1LCA1MCwgMjQ4LCAxMDIsIDEsIDIzOCwgMjU1LCAyNDgsIDEwMiwgMSwgMjM4LCAxNjIsIDI0OCwgMTAyLCAxLCAKKyAgICAyMTcsIDYzLCAyNDgsIDEwMiwgMSwgMjE3LCA2NywgMjQ4LCAxMDIsIDEsIDIyOCwgMzUsIDI0OCwgMTAyLCAxLCAyNTEsIAorICAgIDYwLCAyNDgsIDEwMiwgMSwgMjI4LCA4MywgMjQ4LCAxMDIsIDEsIDIwMywgMjMzLCAyNDgsIDEwMiwgMSwgMjI4LCAxMzQsIAorICAgIDI0OCwgMTAyLCAxLCAyMTksIDIzMywgMjQ4LCAxMDIsIDEsIDI1MSwgMTcwLCAyNDgsIDEwMiwgMSwgMjUwLCAxMzQsIDI0OCwgCisgICAgMTAyLCAxLCAyNTEsIDEwMSwgMjQ4LCAxMDIsIDEsIDIxNywgODYsIDI0OCwgMTAyLCAxLCAyMTcsIDY5LCAyNDgsIDEwMiwgCisgICAgMSwgMjI4LCA4MCwgMjQ4LCAxMDIsIDQ3LCAxLCAyMTYsIDIyNiwgMjQ4LCAxMDIsIDQ3LCAxLCAyMDcsIDgzLCAyNDgsIAorICAgIDEwMiwgNDcsIDEsIDIyNywgMTE4LCAyNDgsIDEwMiwgNDcsIDEsIDIzNCwgMjQ3LCAyNDgsIDEwMiwgMSwgMjM1LCAyMDAsIAorICAgIDI0OCwgMTAyLCAxLCAyMjQsIDIyNCwgMjQ4LCAxMDIsIDEsIDE5OCwgMjM5LCAxMiwgMjA4LCA0NywgMjA3LCA4MywgMTIsIAorICAgIDIwOCwgNDcsIDIwMSwgNDIsIDEyLCAyMDgsIDQ3LCAyMDAsIDE3MCwgMTIsIDIwOCwgNDcsIDI0NywgMjM2LCAxMiwgMjA4LCAKKyAgICA0NywgMjA3LCAxODcsIDEyLCAyMDgsIDQ3LCAyMzMsIDIzLCAxMiwgMjA4LCA0NywgMjMzLCAyNywgMTIsIDIwOCwgNDcsIAorICAgIDIzMywgMTA2LCAxMiwgMjA4LCA0NywgMjMzLCAyNCwgMTIsIDIwOCwgNDcsIDIwNywgODYsIDEyLCAyMDgsIDQ3LCAyMzMsIAorICAgIDI2LCAxMiwgMjA4LCA0NywgMjMzLCAyMiwgMTIsIDIwOCwgNDcsIDIzMywgMTA0LCAxMiwgMjA4LCA0NywgMjMzLCAyNSwgCisgICAgMTIsIDIwOCwgNDcsIDIzMywgMjEsIDEyLCAyMDgsIDQ3LCAyMjAsIDIxNCwgMTIsIDIwOCwgNDcsIDIzNCwgMjQ3LCAxMiwgCisgICAgMjA4LCA0NywgMjEyLCAxMjIsIDEyLCAyMDgsIDQ3LCAyMTYsIDIyNiwgMTIsIDIwOCwgNDcsIDIwOCwgMjQ3LCAxMiwgMjA4LCAKKyAgICA0NywgMjQyLCAxNTMsIDEyLCAyMDgsIDQ3LCAyMzMsIDI4LCAxMiwgMjA4LCA0NywgMjM0LCA4NSwgMTIsIDIwOCwgNDcsIAorICAgIDIwNywgOTUsIDEyLCAyMDgsIDQ3LCAyMDcsIDE2NiwgMTIsIDIwOCwgNDcsIDIwOCwgMTIzLCAxMiwgMjA4LCA0NywgMjEwLCAKKyAgICAxMjIsIDEyLCAyMDgsIDQ3LCAyMTYsIDc3LCAxMiwgMjA4LCA0NywgMjE0LCAxNjksIDEyLCAyMDgsIDQ3LCAyMDUsIDE4NywgCisgICAgMTIsIDIwOCwgNDcsIDIwNywgODUsIDEyLCAyMDgsIDQ3LCAyMDcsIDE3NywgMTIsIDIwOCwgNDcsIDIzMywgMzcsIDEyLCAKKyAgICAyMDgsIDQ3LCAyMzMsIDIwLCAxMiwgMjA4LCA0NywgMjE1LCAyNDcsIDEyLCAyMDgsIDQ3LCAyMTQsIDE2NywgNjksIDEsIDQsIAorICAgIDIyNiwgMTUsIDY5LCAxLCA0LCAyMDksIDE4MiwgNjksIDEsIDQsIDIwOCwgMjQsIDY5LCAxLCA0LCAxMzgsIDY5LCAxLCA0LCAKKyAgICAyMTgsIDEzMywgNjksIDEsIDQsIDE0NCwgNjksIDEsIDQsIDIzNCwgNzUsIDY5LCAxLCA0LCAyMzMsIDk3LCA2OSwgMSwgNCwgCisgICAgMjM0LCAxMzksIDY5LCAxLCA0LCAyMzMsIDIwNywgNjksIDEsIDQsIDIyMSwgNDEsIDY5LCAxLCA0LCAyMTMsIDI1MiwgNjksIAorICAgIDEsIDQsIDIxMywgODgsIDY5LCAxLCA0LCAyMTIsIDE3NSwgNjksIDEsIDQsIDIxMywgMTkwLCA2OSwgMSwgNCwgMjEzLCAxLCAKKyAgICAxMDYsIDI5LCAyMjYsIDEyMSwgMTA2LCAyOSwgMjE5LCAxNDMsIDEwNiwgMjksIDIwNSwgMjUzLCAxMDYsIDI5LCAyMTMsIAorICAgIDc4LCAxMDYsIDI5LCAyMjEsIDE5NywgMTA2LCAyOSwgMjE1LCAxOTAsIDEwNiwgMjksIDIwOSwgMTI5LCAxMDYsIDI5LCAKKyAgICAyMjgsIDE3NCwgMTA2LCAyOSwgMjQ2LCAxNjgsIDEwNiwgMjksIDI0NiwgMjMyLCAxMDYsIDI5LCAyMjYsIDE4MywgMTA2LCAKKyAgICAyOSwgMjA2LCA4MCwgMTA2LCAyOSwgMjE1LCAyMjcsIDEwNiwgMjksIDIzNCwgNjYsIDEwNiwgMjksIDIyNiwgMTIyLCA2MiwgCisgICAgMTA2LCAyOSwgMjE5LCAxNDQsIDYyLCAxMDYsIDI5LCAyMDUsIDI1NCwgNjIsIDEwNiwgMjksIDIxMywgNzksIDYyLCAxMDYsIAorICAgIDI5LCAyMjEsIDE5OCwgNjIsIDEwNiwgMjksIDIxNSwgMTkxLCA2MiwgMTA2LCAyOSwgMjA5LCAxMzAsIDYyLCAxMDYsIDI5LCAKKyAgICAyMjgsIDE3NSwgNjIsIDEwNiwgMjksIDI0NiwgMTY5LCA2MiwgMTA2LCAyOSwgMjQ2LCAyMzMsIDYyLCAxMDYsIDI5LCAyMjYsIAorICAgIDE4NCwgNjIsIDEwNiwgMjksIDIwNiwgODEsIDYyLCAxMDYsIDI5LCAyMTUsIDIyOCwgNjIsIDEwNiwgMjksIDIzNCwgNjcsIAorICAgIDYyLCAxMDYsIDI5LCAyNDYsIDE2OSwgNjYsIDEwNiwgMjI2LCA1OSwgMTcxLCAyMTcsIDEwMSwgMTA2LCAyMjYsIDU5LCAKKyAgICAxNzEsIDE2MywgMjMzLCA5NywgMTA2LCAxOTgsIDE5OCwgMTAyLCAxMDYsIDE5OCwgMTk4LCAxMDUsIDEwNiwgMTk4LCAxOTgsIAorICAgIDE0NywgMTA2LCAxOTgsIDE5OCwgMTQ5LCAxMDYsIDE5OCwgMTk4LCAxNjQsIDEwNiwgMTk4LCAxOTgsIDE4NywgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjEwLCAxMzUsIDEwNiwgMTk4LCAxOTgsIDE5MiwgMTA2LCAxOTgsIDE5OCwgMjE5LCAxMTMsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIwNiwgMTY2LCAxMDYsIDE5OCwgMTk4LCAyMjEsIDgxLCAxMDYsIDE5OCwgMTk4LCAyMzcsIDc3LCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMDEsIDgyLCAxMDYsIDE5OCwgMTk4LCAyMDAsIDI0MywgMTA2LCAxOTgsIDE5OCwgMjIyLCAyMCwgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjM5LCAxNywgMTA2LCAxOTgsIDE5OCwgMjA3LCAyMjgsIDEwNiwgMTk4LCAxOTgsIDIwOCwgNzksIDEwNiwgCisgICAgMTk4LCAxOTgsIDIzNCwgMTQ4LCAxMDYsIDE5OCwgMTk4LCAyMDksIDI1LCAxMDYsIDE5OCwgMTk4LCAyMjAsIDEzNSwgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjA4LCAyMjksIDEwNiwgMTk4LCAxOTgsIDIzNywgODgsIDEwNiwgMTk4LCAxOTgsIDI0MywgNjEsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIyNSwgMTY1LCAxMDYsIDE5OCwgMTk4LCAyMTMsIDEyNywgMTA2LCAxOTgsIDE5OCwgMjQ3LCAxNjgsIAorICAgIDEwNiwgMTk4LCAxOTgsIDIwOCwgMjksIDEwNiwgMTk4LCAxOTgsIDIwNywgMjEwLCAxMDYsIDE5OCwgMTk4LCAyMzgsIDE1MiwgCisgICAgMTA2LCAxOTgsIDE5OCwgMjEzLCAxMTksIDEwNiwgMTk4LCAxOTgsIDI1MSwgMTIwLCAxMDYsIDE5OCwgMTk4LCAyMzcsIAorICAgIDExOSwgMTA2LCAxOTgsIDE5OCwgMjEzLCAxMTcsIDEwNiwgMTk4LCAxOTgsIDIxMCwgMTc0LCAxMDYsIDE5OCwgMTk4LCAKKyAgICAyMTMsIDE4OSwgNDQsIDE5OCwgMTk4LCAyMTQsIDc4LCA0NCwgMTk4LCAxOTgsIDIyNiwgMTQ2LCA0NCwgMTk4LCAxOTgsIAorICAgIDIxMSwgMjIxLCA0NCwgMTk4LCAxOTgsIDIyNiwgNTUsIDQ0LCA0MSwgMjA2LCAxNjcsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgCisgICAgNDQsIDQxLCAyMDQsIDE2MCwgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIwNiwgNjgsIDIxNywgNzksIDYzLCAKKyAgICAyMDgsIDE5MywgNDQsIDQxLCAyMzYsIDIzNiwgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIzNywgMTA1LCAyMTcsIAorICAgIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjA5LCA5MywgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIxMCwgCisgICAgMTMwLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjM4LCAyMjMsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgMjE2LCAKKyAgICAxMDYsIDU0LCA0NCwgNDEsIDIwNCwgMTYwLCAxMDIsIDQ0LCA0MSwgMjA0LCAxNjAsIDEwNSwgNDQsIDQxLCAyMDQsIDE2MCwgCisgICAgMTQ3LCA0NCwgNDEsIDIwNCwgMTYwLCAxNDksIDQ0LCA0MSwgMjA0LCAxNjAsIDE2NCwgNDQsIDQxLCAyMDQsIDE2MCwgMTg3LCAKKyAgICA0NCwgNDEsIDIwNCwgMTYwLCAyMTAsIDEzNSwgNDQsIDQxLCAyMDQsIDE2MCwgMTkyLCA0NCwgNDEsIDIwNCwgMTYwLCAyMTksIAorICAgIDExMywgNDQsIDQxLCAyMDYsIDY3LCA0NCwgNDEsIDIwNiwgNjgsIDEwMiwgNDQsIDQxLCAyMDYsIDY4LCAxMDUsIDQ0LCA0MSwgCisgICAgMjA2LCA2OCwgMTQ3LCA0NCwgNDEsIDIwNiwgNjgsIDE0OSwgNDQsIDQxLCAyMDYsIDY4LCAxNjQsIDQ0LCAyOSwgMjI2LCAKKyAgICAxMjEsIDQ0LCAyOSwgMjE5LCAxNDMsIDQ0LCAyOSwgMjA1LCAyNTMsIDQ0LCAyOSwgMjEzLCA3OCwgNDQsIDI5LCAyMjEsIAorICAgIDE5NywgNDQsIDI5LCAyMTUsIDE5MCwgNDQsIDI5LCAyMDksIDEyOSwgNDQsIDI5LCAyMjgsIDE3NCwgNDQsIDI5LCAyNDYsIAorICAgIDE2OCwgNDQsIDI5LCAyNDYsIDIzMiwgNDQsIDI5LCAyMjYsIDE4MywgNDQsIDI5LCAyMDYsIDgwLCA0NCwgMjksIDIxNSwgCisgICAgMjI3LCA0NCwgMjksIDIzNCwgNjYsIDQ0LCAyOSwgMjI2LCAxMjIsIDYyLCA0NCwgMjksIDIxOSwgMTQ0LCA2MiwgNDQsIDI5LCAKKyAgICAyMDUsIDI1NCwgNjIsIDQ0LCAyOSwgMjEzLCA3OSwgNjIsIDQ0LCAyOSwgMjIxLCAxOTgsIDYyLCA0NCwgMjksIDIxNSwgCisgICAgMTkxLCA2MiwgNDQsIDI5LCAyMDksIDEzMCwgNjIsIDQ0LCAyOSwgMjI4LCAxNzUsIDYyLCA0NCwgMjksIDI0NiwgMTY5LCAKKyAgICA2MiwgNDQsIDI5LCAyNDYsIDIzMywgNjIsIDQ0LCAyOSwgMjI2LCAxODQsIDYyLCA0NCwgMjksIDIwNiwgODEsIDYyLCA0NCwgCisgICAgMjksIDIxNSwgMjI4LCA2MiwgNDQsIDI5LCAyMzQsIDY3LCA2MiwgNDQsIDIyNiwgNTksIDE3MSwgMjQ3LCAyNywgNDQsIAorICAgIDIyNiwgNTksIDE3MSwgMjI3LCAxNDMsIDQ0LCAyOSwgMjI4LCAxNzUsIDY2LCAyMjYsIDU5LCAyMDgsIDExMiwgOTksIDQ0LCAKKyAgICAxOTgsIDE5OCwgMTAyLCA0NCwgMTk4LCAxOTgsIDEwNSwgNDQsIDE5OCwgMTk4LCAxNDcsIDQ0LCAxOTgsIDE5OCwgMTQ5LCAKKyAgICA0NCwgMTk4LCAxOTgsIDE2NCwgNDQsIDE5OCwgMTk4LCAxODcsIDQ0LCAxOTgsIDE5OCwgMjEwLCAxMzUsIDQ0LCAxOTgsIAorICAgIDE5OCwgMTkyLCA0NCwgMTk4LCAxOTgsIDIxOSwgMTEzLCA0NCwgMTk4LCAxOTgsIDIwNiwgMTY2LCA0NCwgMTk4LCAxOTgsIAorICAgIDIyMSwgODEsIDQ0LCAxOTgsIDE5OCwgMjM3LCA3NywgNDQsIDE5OCwgMTk4LCAyMDEsIDgyLCA0NCwgMTk4LCAxOTgsIDIwMCwgCisgICAgMjQzLCA0NCwgMTk4LCAxOTgsIDIyMiwgMjAsIDQ0LCAxOTgsIDE5OCwgMjM5LCAxNywgNDQsIDE5OCwgMTk4LCAyMDcsIAorICAgIDIyOCwgNDQsIDE5OCwgMTk4LCAyMDgsIDc5LCA0NCwgMTk4LCAxOTgsIDIzNCwgMTQ4LCA0NCwgMTk4LCAxOTgsIDIwOSwgCisgICAgMjUsIDQ0LCAxOTgsIDE5OCwgMjIwLCAxMzUsIDQ0LCAxOTgsIDE5OCwgMjA4LCAyMjksIDQ0LCAxOTgsIDE5OCwgMjM3LCAKKyAgICA4OCwgNDQsIDE5OCwgMTk4LCAyNDMsIDYxLCA0NCwgMTk4LCAxOTgsIDIyNSwgMTY1LCA0NCwgMTk4LCAxOTgsIDIxMSwgCisgICAgMTk0LCA0NCwgMTk4LCAxOTgsIDIyMiwgMTg0LCA0NCwgMTk4LCAxOTgsIDIzNywgMTI5LCA0NCwgMTk4LCAxOTgsIDIwNywgCisgICAgMjQwLCA0NCwgMTk4LCAxOTgsIDIzOCwgNDcsIDQ0LCAxOTgsIDE5OCwgMjE1LCAxMCwgNDQsIDE5OCwgMTk4LCAyNTAsIAorICAgIDE0MywgNDQsIDE5OCwgMTk4LCAyMjgsIDExLCA0NCwgMTk4LCAxOTgsIDIxMywgMTE3LCA0NCwgMTk4LCAxOTgsIDI0MywgCisgICAgMjAsIDQ0LCAxOTgsIDE5OCwgMjQzLCAxMCwgNDQsIDE5OCwgMTk4LCAyMzQsIDU5LCA0NCwgMTk4LCAxOTgsIDI0NywgNTUsIAorICAgIDQ0LCAxOTgsIDE5OCwgMjI0LCA1OSwgNDQsIDE5OCwgMTk4LCAyMjUsIDI4LCA0NCwgMTk4LCAxOTgsIDIxMywgNDYsIDQ0LCAKKyAgICAxOTgsIDE5OCwgMjIyLCA2NywgNDQsIDE5OCwgMTk4LCAyMTMsIDE0NCwgNDQsIDE5OCwgMTk4LCAyMDgsIDI5LCA0NCwgCisgICAgMTk4LCAxOTgsIDIwNywgMjEwLCA0NCwgMTk4LCAxOTgsIDIzOCwgMTUyLCA0NCwgMTk4LCAxOTgsIDIxMywgMTE5LCA0NCwgCisgICAgMTk4LCAxOTgsIDI1MSwgMTIwLCA0NCwgMTk4LCAxOTgsIDIxOSwgMTI5LCA0NCwgNDEsIDIwNiwgNjgsIDE4NywgNDQsIDQxLCAKKyAgICAyMDYsIDY4LCAyMTAsIDEzNSwgNDQsIDQxLCAyMDYsIDY4LCAxOTIsIDQ0LCA0MSwgMjA2LCA2OCwgMjE5LCAxMTMsIDQ0LCAKKyAgICA0MSwgMjM2LCAyMzUsIDQ0LCA0MSwgMjM2LCAyMzYsIDEwMiwgNDQsIDQxLCAyMzYsIDIzNiwgMTA1LCA0NCwgNDEsIDIzNiwgCisgICAgMjM2LCAxNDcsIDQ0LCA0MSwgMjM2LCAyMzYsIDE0OSwgNDQsIDQxLCAyMzYsIDIzNiwgMTY0LCA0NCwgNDEsIDIzNiwgMjM2LCAKKyAgICAxODcsIDQ0LCA0MSwgMjM2LCAyMzYsIDIxMCwgMTM1LCA0NCwgNDEsIDIzNiwgMjM2LCAxOTIsIDQ0LCA0MSwgMjM2LCAyMzYsIAorICAgIDIxOSwgMTEzLCA0NCwgNDEsIDIzNywgMTA0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIyNywgMjM4LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzNywgMTQxLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIyMiwgMTUyLCAxNDEsIDIwNiwgMTc4LCAKKyAgICAxNiwgMzYsIDI1MSwgMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjIsIDExOSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMjcsIDE0MCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjcsIDE0MSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNTAsIAorICAgIDEzNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMTAsIDE1MywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMTcsIDEyNywgCisgICAgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMTgsIDIwMiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDE3MCwgNTIsIAorICAgIDIzNCwgODUsIDUyLCAyMzgsIDExMSwgNTIsIDIzOCwgNTcsIDIyNCwgMTgyLCAyMjQsIDIwOSwgNTQsIDQ0LCA2OSwgNjIsIAorICAgIDQ0LCA2OSwgNzAsIDQ0LCA2OSwgNjYsIDQ0LCA2OSwgNzIsIDQ0LCA2OSwgNzQsIDQ0LCA2OSwgMTYxLCA0NCwgNjksIDIyNiwgCisgICAgMTYzLCA0NCwgNjksIDIyNiwgMTUsIDQ0LCA2OSwgMjI3LCA4LCA0NCwgNjksIDIyNiwgODgsIDQ0LCA2OSwgMjEyLCA2NCwgCisgICAgNDQsIDY5LCAyMDksIDE4MiwgNDQsIDY5LCAyMDgsIDI0LCA0NCwgNjksIDIxMSwgMjAyLCA0NCwgNjksIDIwOSwgMjksIDQ0LCAKKyAgICA2OSwgMjA3LCAzNiwgNDQsIDY5LCAyMDYsIDE1LCA0NCwgNjksIDIwNCwgMjE1LCA0NCwgNjksIDIwNiwgMjAxLCA0NCwgNjksIAorICAgIDEzOCwgNDQsIDY5LCAxODgsIDQ0LCA2OSwgMjE5LCAxNTAsIDQ0LCA2OSwgMjE4LCAxMzMsIDQ0LCA2OSwgMjIwLCAzNCwgCisgICAgNDQsIDY5LCAyMTgsIDI0MSwgNDQsIDY5LCAxNDQsIDQ0LCA2OSwgMjM0LCA3NSwgNDQsIDY5LCAyMzMsIDk3LCA0NCwgNjksIAorICAgIDIzNCwgMTM5LCA0NCwgNjksIDIzMywgMjA3LCA0NCwgNjksIDE3OCwgNDQsIDY5LCAyMjEsIDIxMSwgNDQsIDY5LCAyMjEsIAorICAgIDQxLCA0NCwgNjksIDIyMiwgNzYsIDQ0LCA2OSwgMjIxLCAxMzYsIDQ0LCA2OSwgMTgzLCA0NCwgNjksIDE5OSwgMjExLCA0NCwgCisgICAgNjksIDE5OSwgMjQ1LCA0NCwgNjksIDIxMywgMjUyLCA0NCwgNjksIDIxMywgODgsIDQ0LCA2OSwgMjEyLCAxNzUsIDQ0LCAKKyAgICA2OSwgMjEzLCAxOTAsIDQ0LCA2OSwgMjEzLCAxLCA0NCwgNjksIDIwMSwgMTE0LCA0NCwgNjksIDIwMSwgMzEsIDQ0LCA2OSwgCisgICAgMjAxLCA2NCwgNDQsIDY5LCAyMDEsIDAsIDUyLCAyNTEsIDI3LCA1MiwgMjUwLCAxOTAsIDUyLCAyNTEsIDU0LCA1MiwgMjUyLCAKKyAgICA5NiwgNTIsIDIyOCwgODUsIDUyLCAyMjgsIDUzLCA1MiwgMjAzLCAyMzEsIDUyLCAyMzgsIDg0LCA1MiwgMjM4LCAyNTIsIAorICAgIDUyLCAyMTcsIDY2LCA1MiwgMjE3LCA1OSwgNTIsIDIyNywgODAsIDUyLCAyMjcsIDQ1LCA1MiwgMjI3LCA0MiwgNTIsIDIzNiwgCisgICAgNDUsIDUyLCAyMzYsIDU0LCA1MiwgMjM1LCAxNTAsIDUyLCAyMzUsIDE0NiwgNTIsIDIyNSwgMTk0LCA1MiwgMjM1LCAxMzgsIAorICAgIDUyLCAyMjYsIDEzOCwgNTIsIDIyNiwgMTM3LCA1MiwgMjI2LCAxMzYsIDUyLCAyMjYsIDEzNSwgNTIsIDIzNSwgMjAsIDUyLCAKKyAgICAyMzUsIDE5LCA1MiwgMjI1LCAyNDIsIDUyLCAyMjUsIDI0NCwgNTIsIDIyNywgMSwgNTIsIDIyNiwgNTcsIDUyLCAyMjYsIAorICAgIDY1LCA1MiwgMjEyLCA0NSwgNTIsIDIxMiwgNiwgNTIsIDIwOSwgMTEwLCA1MiwgMjEwLCAxNTgsIDUyLCAyMTAsIDE1NywgCisgICAgNTIsIDI0MiwgNTQsIDUyLCAyNDEsIDExMywgNTIsIDI0MCwgMTgzLCA1MiwgMjA1LCAxNzYsIDUyLCAyMjAsIDEzMCwgNTIsIAorICAgIDIxOCwgMjAzLCA1MiwgMjM0LCAyMTgsIDUyLCAyMTYsIDIwNSwgNTIsIDIxNiwgMjA0LCA1MiwgMjQ5LCAxMzMsIDUyLCAKKyAgICAyMTUsIDIwMSwgNTIsIDIxNSwgMTY0LCA1MiwgMjE1LCAxNjUsIDUyLCAyNDgsIDE1OCwgNTIsIDIzMywgOTUsIDUyLCAyMzMsIAorICAgIDkwLCA1MiwgMjQ3LCAyNTAsIDUyLCAyMzMsIDc0LCA1MiwgMjM0LCAxMTEsIDUyLCAyMTYsIDEsIDUyLCAyMTYsIDQyLCA1MiwgCisgICAgMjM0LCA5NCwgNTIsIDIxNiwgMzgsIDUyLCAyMTYsIDU2LCA1MiwgMjQ4LCAyNDcsIDUyLCAyMTUsIDk1LCA1MiwgMjQ4LCAKKyAgICA5OCwgNTIsIDIzMywgMTkxLCA1MiwgMjE1LCA4MiwgNTIsIDIzMywgMTgyLCA1MiwgMjMzLCAxODQsIDUyLCAyMjIsIDE5NiwgCisgICAgNTIsIDIyMiwgMTkyLCA1MiwgMjIyLCAyMDEsIDUyLCAyMjIsIDEzOSwgNTIsIDIyMiwgMTY4LCA1MiwgMjIxLCAxNzYsIDUyLCAKKyAgICAyMjEsIDE1MSwgNTIsIDIyMSwgMTUwLCA1MiwgMjIyLCA1NiwgNTIsIDIyMiwgNTMsIDUyLCAyMjIsIDU3LCA1MiwgMjAwLCAKKyAgICAxMDgsIDUyLCAyMDAsIDEwNiwgNTIsIDE5OSwgMjAwLCA1MiwgMjEzLCAxNywgNTIsIDIxMywgMjEsIDUyLCAyMTIsIDE0OCwgCisgICAgNTIsIDIxMiwgMTQyLCA1MiwgMjEzLCAxNDEsIDUyLCAyMTMsIDEzOCwgNTIsIDIwMSwgODAsIDE0MSwgMjA2LCAxNzgsIDE2LCAKKyAgICAzNiwgMjMzLCAxMTQsIDE5OSwgODEsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDEwMiwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTA1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxNDcsIDE0MSwgCisgICAgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE0OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTY0LCAKKyAgICAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxODcsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIAorICAgIDIxMCwgMTM1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxOTIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIxOSwgMTEzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDYsIDE2NiwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjM4LCAxOTksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgCisgICAgMTY0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDYsIDY5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMzYsIDIyMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjM3LCAxMDgsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwOSwgMTAwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMTAsIAorICAgIDEzMiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjM4LCAyMjksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIxOSwgMTEwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIDE1OSwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAxNTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgCisgICAgMTQ4LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIDE1MCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMzMsIDExNCwgMjA0LCAxNTUsIDUyLCAyMzMsIDEwNSwgNTIsIDI0MiwgNTgsIDUyLCAyNTAsIDEzOSwgNTIsIDE0OCwgNTIsIAorICAgIDIxNiwgMjQ5LCA1MiwgMjE2LCA3OCwgNTIsIDI0MCwgMjEzLCA1MiwgMjQwLCAyMTQsIDIwOCwgMTkyLCA1MiwgMjQwLCAKKyAgICAyMTQsIDI0MiwgMjA5LCA1MiwgMjI4LCA4LCA1MiwgMjM4LCAxMTQsIDIyMCwgMTM2LCAyMzQsIDExMiwgNTIsIDIzOCwgCisgICAgMTE0LCAyMjAsIDEzNiwgMjA3LCAxMDYsIDUyLCAyMzgsIDExNCwgMjIwLCAxMzYsIDIwNywgMywgNTIsIDIzOCwgMTE0LCAKKyAgICAyMjAsIDEzNiwgMjIyLCA1MiwgNTIsIDI0MywgMTIsIDUyLCAyMTYsIDIxMSwgMjUxLCA4NywgNTIsIDE4OCwgNTIsIDIyMSwgCisgICAgNDIsIDYyLCA1MiwgMTc4LCA1MiwgMTYxLCA1MiwgMjI3LCAxMSwgNTIsIDIyMiwgMTE1LCA1MiwgMjM2LCAzMywgNTIsIAorICAgIDI0NywgMTc0LCA1MiwgMjI3LCAxMCwgNTIsIDIxNSwgMjQ4LCA1MiwgMjIwLCAxLCA1MiwgMjIxLCA0MiwgMjM4LCA1LCA1MiwgCisgICAgMjIxLCA0MiwgMjM2LCAxNTYsIDUyLCAyMjEsIDI1MiwgNTIsIDIyNiwgMjA5LCA1MiwgMjMzLCAyOCwgNTIsIDIyNiwgMTY1LCAKKyAgICA1MiwgMjIxLCAyMTMsIDUyLCAyMzUsIDE2MywgNTIsIDIwNiwgMTcsIDUyLCAyMjEsIDQyLCAxNTYsIDUyLCAyMjEsIDE0NCwgCisgICAgNTIsIDI0MCwgMjIzLCA1MiwgMjI2LCAxMDMsIDUyLCAyMzcsIDE1LCA1MiwgMjE5LCAyMywgNTIsIDIyMSwgNDIsIDIyMywgCisgICAgMjQzLCA1MiwgMjIxLCAxNDEsIDUyLCAyNDYsIDkyLCA1MiwgMjI2LCA5NywgNTIsIDIyMSwgMTQyLCAyMDgsIDE5MiwgNTIsIAorICAgIDI0NiwgOTMsIDIwOCwgMTkyLCA1MiwgMjIzLCAyNDQsIDIwOCwgMTkyLCA1MiwgMjI2LCA5OCwgMjA4LCAxOTIsIDUyLCAKKyAgICAyMjEsIDE0MiwgMjQyLCAyMDksIDUyLCAyNDYsIDkzLCAyNDIsIDIwOSwgNTIsIDIyMywgMjQ0LCAyNDIsIDIwOSwgNTIsIAorICAgIDIyNiwgOTgsIDI0MiwgMjA5LCA1MiwgMjIzLCAyNDQsIDExOSwgMjEyLCAxMjIsIDUyLCAyMjMsIDI0NCwgMTE5LCAyMTIsIAorICAgIDEyMywgMjA4LCAxOTIsIDUyLCAxNzIsIDUyLCAyMjYsIDUwLCA1MiwgMjIxLCA0NSwgNTIsIDIzNSwgOTEsIDUyLCAyMTMsIAorICAgIDIzOSwgNTIsIDIxMywgMjQwLCAxMTksIDIxMiwgMTIyLCA1MiwgMjEzLCAyNDAsIDExOSwgMjEyLCAxMjMsIDIwOCwgMTkyLCAKKyAgICA1MiwgMjE0LCAyMzcsIDUyLCAyMTgsIDE3MSwgNTIsIDIyMSwgNDIsIDIxMiwgMTIyLCA1MiwgMjIxLCA0MywgNTIsIDIxNCwgCisgICAgMTg3LCA1MiwgMjE4LCA3MSwgNTIsIDIyMSwgNDIsIDIwMywgMTY4LCA1MiwgMjIwLCAyMzgsIDUyLCAyMjUsIDIzMiwgNTIsIAorICAgIDIyMCwgMjM5LCAyMjIsIDU2LCA1MiwgMjE0LCAxODYsIDUyLCAyMTgsIDcwLCA1MiwgMjIxLCA0MiwgMjAxLCAxNDcsIDUyLCAKKyAgICAyMjAsIDIzMiwgNTIsIDIyNSwgMjMwLCA1MiwgMjIwLCAyMzMsIDIyMiwgNTYsIDUyLCAyMjcsIDExOSwgMjE3LCAxMDYsIAorICAgIDUyLCAyMjMsIDI0NCwgMjE3LCAxMDYsIDUyLCAyNTEsIDEwMSwgNTIsIDI0OCwgNzMsIDUyLCAyNDcsIDEwMCwgNTIsIDI0NywgCisgICAgNzcsIDUyLCAyNDcsIDIyNCwgMTE5LCAyMjYsIDIwOSwgNTIsIDI0NiwgOTEsIDUyLCAyNDEsIDIyOSwgNTIsIDIzNSwgNCwgCisgICAgNTIsIDE0NCwgNTIsIDIzMywgMTA2LCA1MiwgMjI4LCAxMTcsIDUyLCAyMjYsIDExMCwgNTIsIDIyNiwgOTgsIDI0NywgMTQzLCAKKyAgICA1MiwgMjI2LCAxNywgNTIsIDIyNCwgMTEzLCA1MiwgMjI0LCAxMTIsIDUyLCAyMjQsIDk5LCA1MiwgMjI0LCAzLCA1MiwgCisgICAgMjIyLCAxMTYsIDIwOSwgNTMsIDUyLCAyMjEsIDE3NSwgNTIsIDIyMSwgMTA4LCA1MiwgMjE1LCAyNDYsIDUyLCAyMTUsIAorICAgIDEwOSwgNTIsIDIxNSwgNDYsIDUyLCAyMTUsIDQ0LCA1MiwgMjA4LCAxODMsIDUyLCAyMDcsIDE5MSwgNTIsIDIwMSwgNjYsIAorICAgIDUyLCAyMDMsIDE2OSwgMTE5LCAyMjMsIDI0MywgNTIsIDM1LCAxMTksIDIyMywgMjQzLCAxNDEsIDIwNiwgMTc4LCAxNiwgCisgICAgMzYsIDI0MSwgMjMzLCAxMDIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDEwNSwgMTQxLCAyMDYsIDE3OCwgCisgICAgMTYsIDM2LCAyNDEsIDIzMywgMTQ3LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxNDksIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDE2NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMTg3LCAxNDEsIAorICAgIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTAsIDEzNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgCisgICAgMTkyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTksIDExMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA2LCAxNjYsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIzOCwgMTk5LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE2NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA2LCAKKyAgICA2OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjM2LCAyMjMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIzNywgMTA4LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDksIDEwMCwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjEwLCAxMzIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIzOCwgCisgICAgMjI5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTksIDExMCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA0LCAxNTksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTUzLCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE0OCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAKKyAgICAxNTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTU1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMDQsIDE1NiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTEsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTUyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIAorICAgIDE1OCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNiwgNjcsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNiwgNjYsIDUyLCAyMzYsIDcxLCAKKyAgICAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI0MiwgMjQ3LCAyMzQsIDEyMywgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMTMsIAorICAgIDE4MywgMjM5LCAxNywgMjM0LCA4OCwgMzYsIDI0MSwgNDYsIDI1MCwgMTU2LCAyMDYsIDEwNywgMjQ4LCAyNDIsIDIzNCwgCisgICAgODgsIDM2LCAxOTksIDIyNCwgMjM3LCA3LCAyMzQsIDg4LCAzNiwgMjAxLCAxMDYsIDIzNCwgODgsIDM2LCAyNDMsIDY0LCAKKyAgICAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI1MCwgMjEzLCAyMzQsIDg4LCAzNiwgMjMzLCAxOTgsIDIwNSwgMTgyLCAyMzQsIAorICAgIDg4LCAzNiwgNCwgMjA2LCAyNDUsIDIzNCwgODgsIDM2LCAyMDUsIDExMCwgMjM0LCA4OCwgMzYsIDIxNiwgNzEsIDIzNCwgCisgICAgODgsIDM2LCAyMDgsIDExMSwgMjM0LCA4OCwgMzYsIDIzNywgMTMxLCAyMzQsIDg4LCAzNiwgMjM1LCA2OSwgMjE1LCA2OCwgCisgICAgMjM0LCA4OCwgMzYsIDIyMSwgMTI4LCAyMzQsIDg4LCAzNiwgMjM4LCAxNTEsIDIzNCwgODgsIDM2LCAyMzcsIDgsIDIzNCwgCisgICAgODgsIDM2LCAyMDAsIDIzNiwgMjE3LCA3OSwgMjA2LCAxMDcsIDI0MSwgMTcxLCAyMzQsIDg4LCAzNiwgMjUxLCA3LCAyMzQsIAorICAgIDg4LCAzNiwgMjQzLCA0MywgMjM0LCA4OCwgMzYsIDI0OCwgMTUwLCAyMDYsIDM3LCAyMzQsIDg4LCAzNiwgMjM1LCA4OSwgCisgICAgMjM0LCA4OCwgMzYsIDIwOCwgMjA4LCAyNTEsIDI2LCAyMzQsIDg4LCAzNiwgMjEzLCAxMDksIDIzNCwgODgsIDM2LCAyMjgsIAorICAgIDc5LCAyMzQsIDg4LCAzNiwgMjM1LCA2OSwgMjA2LCAyNDUsIDIzNCwgODgsIDM2LCAyMjEsIDU5LCAyNDMsIDE0LCAyMzQsIAorICAgIDg4LCAzNiwgMjM1LCA2OSwgMjE1LCAyMiwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNTIsIDAsIDIwMSwgODIsIDIzNCwgCisgICAgODgsIDM2LCAyMDYsIDEwNywgMjQ2LCAxMTgsIDIzNywgNzcsIDIzNCwgODgsIDM2LCAyMjgsIDkzLCAyMzQsIDg4LCAzNiwgCisgICAgMjM5LCAxMTQsIDIzNCwgODgsIDM2LCAyMTMsIDExMiwgMjM0LCA4OCwgMzYsIDIzNSwgNjksIDIxNSwgNTEsIDIzNCwgODgsIAorICAgIDM2LCAyMTQsIDI1NCwgMjM0LCA4OCwgMzYsIDI0MSwgMjQ5LCA3NiwgMjA2LCAxMDcsIDIyNCwgMTk2LCAyMzQsIDg4LCAzNiwgCisgICAgMjA2LCAxMDcsIDIzNywgMTY5LCAyMzQsIDg4LCAzNiwgMjE3LCAzOSwgMjM0LCA4OCwgMzYsIDIxNywgMTM0LCAyMzQsIDg4LCAKKyAgICAzNiwgMjQxLCAxNDEsIDIzNCwgODgsIDM2LCAyNDEsIDE2MywgMjM0LCA4OCwgMzYsIDIyOCwgMTA4LCAyMzQsIDg4LCAzNiwgCisgICAgMjQ4LCA2MCwgMjM0LCA4OCwgMzYsIDI0NiwgNzIsIDIwNSwgMTg2LCAyMjIsIDU5LCAyMzQsIDg4LCAzNiwgMjM2LCA0MCwgCisgICAgMjA1LCAxODIsIDIzNCwgODgsIDM2LCAyMTQsIDE5NiwgMjAzLCAyMTcsIDIzNCwgODgsIDM2LCAyMTcsIDM4LCAyMzQsIDg4LCAKKyAgICAzNiwgMjA2LCAxMDcsIDIwMSwgNTIsIDIzNCwgODgsIDM2LCAyMTMsIDEwMCwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNDcsIAorICAgIDEwNiwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNTAsIDIwOSwgMjA2LCAzMSwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAKKyAgICAyMjcsIDIsIDIwOCwgODMsIDIyMSwgNjMsIDIzNCwgODgsIDM2LCAyNDEsIDEwOCwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAKKyAgICAyMjIsIDE0MiwgMjIyLCAxOTcsIDIzNCwgODgsIDM2LCAyNTIsIDEsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjAxLCA5OSwgCisgICAgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMzUsIDI1MywgMjAxLCAxNiwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMjcsIAorICAgIDE0OSwgMjI1LCA5NiwgMjM0LCA4OCwgMzYsIDI0MCwgMjUyLCAyMzQsIDg4LCAzNiwgMjI0LCAxODMsIDIzNCwgODgsIDM2LCAKKyAgICAyMjgsIDgyLCAyMDUsIDM2LCAyMzQsIDg4LCAzNiwgNCwgMjE1LCAyMiwgMjM0LCA4OCwgMzYsIDI1MSwgMTk0LCAyNDYsIAorICAgIDYzLCAyMzQsIDg4LCAzNiwgMjQ4LCAyNDUsIDI0NiwgNjMsIDExLCA1LCAyMjgsIDEyLCAxMSwgNSwgMjI4LCA0LCAxMSwgNSwgCisgICAgNzAsIDExLCA1LCAyMjgsIDM4LCAxMSwgNSwgMjI4LCAxNzYsIDExLCA1LCAyMjgsIDE1OSwgMTEsIDUsIDIyOCwgMTc4LCAKKyAgICAxMSwgNSwgMjI4LCAxNzcsIDExLCA1LCAyNTAsIDE1NSwgMTEsIDUsIDI1MCwgMTE0LCAxMSwgNSwgNjIsIDExLCA1LCAyNTEsIAorICAgIDI4LCAxMSwgNSwgMjAzLCAyMjksIDExLCA1LCAyMDMsIDIzMiwgMTEsIDUsIDIwMywgMjMwLCAxMSwgNSwgMjE3LCAxMSwgCisgICAgMTEsIDUsIDIxNiwgMjM1LCAxMSwgNSwgNzQsIDExLCA1LCAyMTcsIDU0LCAxMSwgNSwgMjM4LCA0OCwgMTEsIDUsIDcyLCAKKyAgICAxMSwgNSwgMjAwLCAyMTYsIDExLCA1LCAyNDgsIDE1MiwgMTEsIDUsIDI0OCwgMTQ4LCAxMSwgNSwgMjQ4LCAxODgsIDExLCAKKyAgICA1LCAyNDgsIDE2MywgMTEsIDUsIDI0OCwgMTc3LCAxMSwgNSwgMjQ4LCAxNzYsIDExLCA1LCAyNDgsIDE3OSwgMTEsIDUsIAorICAgIDI0OCwgMTc4LCAxMSwgNSwgMjQ5LCA1NSwgMTEsIDUsIDI0OSwgNDcsIDExLCA1LCAyNDksIDEzNiwgMTEsIDUsIDI0OSwgCisgICAgNzgsIDExLCA1LCAyNDgsIDYsIDExLCA1LCAyNDgsIDEwLCAxMSwgNSwgMjQ4LCA3LCAxMSwgNSwgMjQ4LCA5NywgMTEsIDUsIAorICAgIDI0OCwgNzgsIDExLCA1LCAyNDgsIDEyNCwgMTEsIDUsIDI0OCwgMTAzLCAxMSwgNSwgMjQ4LCAyMDMsIDExLCA1LCAyNDksIAorICAgIDgsIDExLCA1LCAyNDgsIDIxNSwgMTEsIDUsIDI0NywgMjQ2LCAxMSwgNSwgMjQ3LCAyNDEsIDExLCA1LCAyNDgsIDM2LCAxMSwgCisgICAgNSwgMjQ4LCA1LCAxMSwgNSwgMjQ3LCAyNTQsIDExLCA1LCAyNDgsIDMsIDExLCA1LCAyNDcsIDIyOSwgMTEsIDUsIDI0NywgCisgICAgMjI3LCAxMSwgNSwgMjQ3LCAyMzQsIDExLCA1LCAyNDcsIDIzMiwgMTEsIDUsIDI0NywgMjMwLCAxMSwgNSwgMjQ3LCAyMzEsIAorICAgIDExLCA1LCAyMTUsIDE0MiwgMTEsIDUsIDIxNSwgMTM4LCAxMSwgNSwgMjE1LCAyMDQsIDExLCA1LCAyMTUsIDE1NCwgMTEsIAorICAgIDUsIDIxNSwgMTcwLCAxMSwgNSwgMjE1LCAxOTcsIDExLCA1LCAyMTUsIDE5MywgMTEsIDUsIDIxNiwgOTQsIDExLCA1LCAKKyAgICAyMTYsIDgzLCAxMSwgNSwgMTcyLCAxMSwgNSwgMjE2LCAxMzUsIDExLCA1LCAyMTQsIDIwNiwgMTEsIDUsIDIxNCwgMjA4LCAKKyAgICAxMSwgNSwgMjE0LCAyMDcsIDExLCA1LCAyMTUsIDYxLCAxMSwgNSwgMjE1LCA0OSwgMTEsIDUsIDIxNSwgMTA2LCAxMSwgNSwgCisgICAgMjE1LCA3NywgMTEsIDUsIDIxNCwgMTkyLCAxMSwgNSwgMjE0LCAxODgsIDExLCA1LCAyMTQsIDIyNCwgMTEsIDUsIDIxNCwgCisgICAgMjA1LCAxMSwgNSwgMjE0LCAxOTcsIDExLCA1LCAyMTQsIDIwMywgMTEsIDUsIDIxNCwgMTcxLCAxMSwgNSwgMjE0LCAxNzAsIAorICAgIDExLCA1LCAyMTQsIDE3NSwgMTEsIDUsIDIxNCwgMTc0LCAxMSwgNSwgMjE0LCAxNzIsIDExLCA1LCAyMTQsIDE3MywgMTEsIAorICAgIDUsIDI0OSwgMjksIDExLCA1LCAyNDksIDI4LCAxMSwgNSwgMjQ5LCAzNSwgMTEsIDUsIDI0OSwgMzAsIDExLCA1LCAyNDksIAorICAgIDMyLCAxMSwgNSwgMjQ5LCAzMSwgMTEsIDUsIDI0OSwgMzQsIDExLCA1LCAyNDksIDMzLCAxMSwgNSwgMjQ5LCA0MSwgMTEsIAorICAgIDUsIDI0OSwgNDAsIDExLCA1LCAyNDksIDQ0LCAxMSwgNSwgMjQ5LCA0MiwgMTEsIDUsIDI0OSwgMjAsIDExLCA1LCAyNDksIAorICAgIDIyLCAxMSwgNSwgMjQ5LCAyMSwgMTEsIDUsIDI0OSwgMjUsIDExLCA1LCAyNDksIDI0LCAxMSwgNSwgMjQ5LCAyNywgMTEsIAorICAgIDUsIDI0OSwgMjYsIDExLCA1LCAyNDksIDM2LCAxMSwgNSwgMjQ5LCAzOSwgMTEsIDUsIDI0OSwgMzcsIDExLCA1LCAyNDksIAorICAgIDE2LCAxMSwgNSwgMjQ5LCAxNSwgMTEsIDUsIDI0OSwgMjMsIDExLCA1LCAyNDksIDE5LCAxMSwgNSwgMjQ5LCAxNywgMTEsIAorICAgIDUsIDI0OSwgMTgsIDExLCA1LCAyNDksIDEyLCAxMSwgNSwgMjQ5LCAxMSwgMTEsIDUsIDI0OSwgMTQsIDExLCA1LCAyNDksIAorICAgIDEzLCAxMSwgNSwgMjIwLCA5NywgMTEsIDUsIDIyMCwgOTYsIDExLCA1LCAyMjAsIDEwMiwgMTEsIDUsIDIyMCwgOTgsIDExLCAKKyAgICA1LCAyMjAsIDk5LCAxMSwgNSwgMjIwLCAxMDEsIDExLCA1LCAyMjAsIDEwMCwgMTEsIDUsIDIyMCwgMTA1LCAxMSwgNSwgCisgICAgMjIwLCAxMDQsIDExLCA1LCAyMjAsIDEwNywgMTEsIDUsIDIyMCwgMTA2LCAxMSwgNSwgMjIwLCA5MywgMTEsIDUsIDIyMCwgCisgICAgOTIsIDExLCA1LCAyMjAsIDk1LCAxMSwgNSwgMjIwLCA5NCwgMTEsIDUsIDIyMCwgODYsIDExLCA1LCAyMjAsIDg1LCAxMSwgCisgICAgNSwgMjIwLCA5MCwgMTEsIDUsIDIyMCwgODksIDExLCA1LCAyMjAsIDg3LCAxMSwgNSwgMjIwLCA4OCwgMTEsIDUsIDIyMCwgCisgICAgODAsIDExLCA1LCAyMjAsIDc5LCAxMSwgNSwgMjIwLCA4NCwgMTEsIDUsIDIyMCwgODMsIDExLCA1LCAyMjAsIDgxLCAxMSwgCisgICAgNSwgMjIwLCA4MiwgMTEsIDUsIDIzMywgMjUxLCAxMSwgNSwgMjMzLCAyNTAsIDExLCA1LCAyMzQsIDAsIDExLCA1LCAyMzMsIAorICAgIDI1MiwgMTEsIDUsIDIzMywgMjUzLCAxMSwgNSwgMjMzLCAyNTUsIDExLCA1LCAyMzMsIDI1NCwgMTEsIDUsIDIzNCwgMywgCisgICAgMTEsIDUsIDIzNCwgMiwgMTEsIDUsIDIzNCwgNSwgMTEsIDUsIDIzNCwgNCwgMTEsIDUsIDIzMywgMjQyLCAxMSwgNSwgMjMzLCAKKyAgICAyNDQsIDExLCA1LCAyMzMsIDI0MywgMTEsIDUsIDIzMywgMjQ3LCAxMSwgNSwgMjMzLCAyNDYsIDExLCA1LCAyMzMsIDI0OSwgCisgICAgMTEsIDUsIDIzMywgMjQ4LCAxMSwgNSwgMjMzLCAyMzgsIDExLCA1LCAyMzMsIDIzNywgMTEsIDUsIDIzMywgMjQ1LCAxMSwgCisgICAgNSwgMjMzLCAyNDEsIDExLCA1LCAyMzMsIDIzOSwgMTEsIDUsIDIzMywgMjQwLCAxMSwgNSwgMjMzLCAyMzIsIDExLCA1LCAKKyAgICAyMzMsIDIzNiwgMTEsIDUsIDIzMywgMjM1LCAxMSwgNSwgMjMzLCAyMzMsIDExLCA1LCAyMzMsIDIzNCwgMTEsIDUsIDIyMSwgCisgICAgMTQ3LCAxMSwgNSwgMjIxLCAxNDYsIDExLCA1LCAyMjEsIDIxMSwgMTEsIDUsIDIyMSwgMTUzLCAxMSwgNSwgMjIxLCAxODMsIAorICAgIDExLCA1LCAyMjEsIDIwMSwgMTEsIDUsIDIyMSwgMTk5LCAxMSwgNSwgMjIyLCAxMjcsIDExLCA1LCAyMjIsIDEyMiwgMTEsIAorICAgIDUsIDE3OCwgMTEsIDUsIDIyMiwgMTY0LCAxMSwgNSwgMjIxLCA4LCAxMSwgNSwgMjIxLCA3LCAxMSwgNSwgMjIxLCAxMSwgCisgICAgMTEsIDUsIDIyMSwgOSwgMTEsIDUsIDIyMSwgNzMsIDExLCA1LCAyMjEsIDQ3LCAxMSwgNSwgMjIxLCAxMzYsIDExLCA1LCAKKyAgICAyMjEsIDc5LCAxMSwgNSwgMjIyLCA3LCAxMSwgNSwgMjIyLCA3NiwgMTEsIDUsIDIyMCwgMjQ0LCAxMSwgNSwgMjIwLCAyNDAsIAorICAgIDExLCA1LCAyMjEsIDQxLCAxMSwgNSwgMjIxLCA0LCAxMSwgNSwgMjIwLCAyNTMsIDExLCA1LCAyMjEsIDIsIDExLCA1LCAKKyAgICAyMjAsIDIxNywgMTEsIDUsIDIyMCwgMjE2LCAxMSwgNSwgMjIwLCAyMjIsIDExLCA1LCAyMjAsIDIxOSwgMTEsIDUsIDIzNywgCisgICAgNjQsIDExLCA1LCAyMzcsIDU4LCAxMSwgNSwgMjM3LCAxMTIsIDExLCA1LCAyMzcsIDc5LCAxMSwgNSwgMjM3LCAxNjAsIDExLCAKKyAgICA1LCAyMzcsIDE1MSwgMTEsIDUsIDIzNywgMTk1LCAxMSwgNSwgMjM3LCAxNjUsIDExLCA1LCAyMzYsIDIyMCwgMTEsIDUsIAorICAgIDIzNywgMTMsIDExLCA1LCAyMzYsIDI1MCwgMTEsIDUsIDIzNiwgMTcyLCAxMSwgNSwgMjM2LCAxNzEsIDExLCA1LCAyMzYsIAorICAgIDE4OSwgMTEsIDUsIDIzNiwgMTc3LCAxMSwgNSwgMjM2LCAxNzUsIDExLCA1LCAyMzYsIDE3NiwgMTEsIDUsIDIzNiwgMTU5LCAKKyAgICAxMSwgNSwgMjM2LCAxNTgsIDExLCA1LCAyMzYsIDE2MiwgMTEsIDUsIDIzNiwgMTYwLCAxMSwgNSwgMjAyLCAyMDAsIDExLCAKKyAgICA1LCAyMDIsIDE5NSwgMTEsIDUsIDIwMiwgMjM0LCAxMSwgNSwgMjAyLCAyMDksIDExLCA1LCAyMDIsIDIyMywgMTEsIDUsIAorICAgIDIwMiwgMjIwLCAxMSwgNSwgMjAyLCAyMjYsIDExLCA1LCAyMDIsIDIyNSwgMTEsIDUsIDIwMywgNjcsIDExLCA1LCAyMDMsIAorICAgIDYyLCAxMSwgNSwgMjAzLCA5MCwgMTEsIDUsIDIwMywgNzksIDExLCA1LCAyMDIsIDE3NSwgMTEsIDUsIDIwMiwgMTcxLCAxMSwgCisgICAgNSwgMjAyLCAxOTMsIDExLCA1LCAyMDIsIDE3NywgMTEsIDUsIDIwMiwgMjM3LCAxMSwgNSwgMjAzLCA0OCwgMTEsIDUsIAorICAgIDIwMSwgMTYwLCAxMSwgNSwgMjAxLCAxNTgsIDExLCA1LCAyMDEsIDE2NiwgMTEsIDUsIDIwMSwgMTYzLCAxMSwgNSwgMjAxLCAKKyAgICAxNjEsIDExLCA1LCAyMDEsIDE2MiwgMTEsIDUsIDIwMSwgMTUxLCAxMSwgNSwgMjAxLCAxNTAsIDExLCA1LCAyMDEsIDE1NSwgCisgICAgMTEsIDUsIDIwMSwgMTU0LCAxMSwgNSwgMjAxLCAxNTIsIDExLCA1LCAyMDEsIDE1MywgMTEsIDUsIDI0MCwgMjQ1LCAxMSwgCisgICAgNSwgMjQwLCAyMzIsIDExLCA1LCAyNDEsIDc2LCAxMSwgNSwgMjQxLCAxNiwgMTEsIDUsIDI0MSwgNTEsIDExLCA1LCAyNDEsIAorICAgIDU2LCAxMSwgNSwgMjQxLCA1NSwgMTEsIDUsIDI0MSwgMjQwLCAxMSwgNSwgMjQxLCAyMzQsIDExLCA1LCAyNDIsIDU4LCAxMSwgCisgICAgNSwgMjQyLCA0LCAxMSwgNSwgMjM5LCAxMTksIDExLCA1LCAyMzksIDEyMCwgMTEsIDUsIDI0MCwgMTgyLCAxMSwgNSwgMjM5LCAKKyAgICAxNjQsIDExLCA1LCAyNDAsIDIxMSwgMTEsIDUsIDI0MCwgMTg0LCAxMSwgNSwgMjQxLCAxMDYsIDExLCA1LCAyNDEsIDE3NSwgCisgICAgMTEsIDUsIDI0MSwgMTI3LCAxMSwgNSwgMjM5LCAxMTAsIDExLCA1LCAyMzksIDEwOCwgMTEsIDUsIDIzOSwgMTM3LCAxMSwgCisgICAgNSwgMjM5LCAxMTgsIDExLCA1LCAyMzksIDExMywgMTEsIDUsIDIzOSwgMTE2LCAxMSwgNSwgMjA1LCAyMTMsIDExLCA1LCAKKyAgICAyMDUsIDIwNSwgMTEsIDUsIDIwNiwgMTUsIDExLCA1LCAyMDUsIDIyMywgMTEsIDUsIDIwNiwgNSwgMTEsIDUsIDIwNiwgNywgCisgICAgMTEsIDUsIDIwNiwgNiwgMTEsIDUsIDIwNiwgMjI2LCAxMSwgNSwgMjA2LCAyMTIsIDExLCA1LCAyMDcsIDM2LCAxMSwgNSwgCisgICAgMjA2LCAyMzYsIDExLCA1LCAyMDQsIDE5NiwgMTEsIDUsIDIwNCwgMTk1LCAxMSwgNSwgMjA0LCAxOTgsIDExLCA1LCAyMDQsIAorICAgIDE5NywgMTEsIDUsIDIwNSwgMTQ0LCAxMSwgNSwgMjA1LCAxMzQsIDExLCA1LCAxMzgsIDExLCA1LCAyMDUsIDE1NywgMTEsIAorICAgIDUsIDIwNiwgMTI4LCAxMSwgNSwgMjA2LCAyMDEsIDExLCA1LCAyMDYsIDE1MywgMTEsIDUsIDIwNCwgMTc5LCAxMSwgNSwgCisgICAgMjA0LCAxNzQsIDExLCA1LCAyMDQsIDIxNSwgMTEsIDUsIDIwNCwgMTk0LCAxMSwgNSwgMjA0LCAxODAsIDExLCA1LCAyMDQsIAorICAgIDE5MiwgMTEsIDUsIDI0MSwgMTkyLCAxMSwgNSwgMjQxLCAxOTEsIDExLCA1LCAyNDEsIDE5NywgMTEsIDUsIDI0MSwgMTkzLCAKKyAgICAxMSwgNSwgMjQxLCAxOTQsIDExLCA1LCAyNDEsIDE5NiwgMTEsIDUsIDI0MSwgMTk1LCAxMSwgNSwgMjQxLCAyMTMsIDExLCAKKyAgICA1LCAyNDEsIDIxMiwgMTEsIDUsIDI0MSwgMjIwLCAxMSwgNSwgMjQxLCAyMTQsIDExLCA1LCAyNDEsIDE4MiwgMTEsIDUsIAorICAgIDI0MSwgMTg0LCAxMSwgNSwgMjQxLCAxODMsIDExLCA1LCAyNDEsIDE4NywgMTEsIDUsIDI0MSwgMTg2LCAxMSwgNSwgMjQxLCAKKyAgICAxOTAsIDExLCA1LCAyNDEsIDE4OCwgMTEsIDUsIDI0MSwgMjA1LCAxMSwgNSwgMjQxLCAyMDgsIDExLCA1LCAyNDEsIDIwNiwgCisgICAgMTEsIDUsIDI0MSwgMTc4LCAxMSwgNSwgMjQxLCAxNzcsIDExLCA1LCAyNDEsIDE4NSwgMTEsIDUsIDI0MSwgMTgxLCAxMSwgCisgICAgNSwgMjQxLCAxNzksIDExLCA1LCAyNDEsIDE4MCwgMTEsIDUsIDIyMCwgNTMsIDExLCA1LCAyMjAsIDUyLCAxMSwgNSwgMjIwLCAKKyAgICA2MCwgMTEsIDUsIDIyMCwgNTUsIDExLCA1LCAyMjAsIDU2LCAxMSwgNSwgMjIwLCA1NywgMTEsIDUsIDIyMCwgNjksIDExLCAKKyAgICA1LCAyMjAsIDY4LCAxMSwgNSwgMjIwLCA3NSwgMTEsIDUsIDIyMCwgNzAsIDExLCA1LCAyMjAsIDQ1LCAxMSwgNSwgMjIwLCAKKyAgICA0NCwgMTEsIDUsIDIyMCwgNTEsIDExLCA1LCAyMjAsIDQ2LCAxMSwgNSwgMjIwLCA2MSwgMTEsIDUsIDIyMCwgNjcsIDExLCAKKyAgICA1LCAyMjAsIDY1LCAxMSwgNSwgMjIwLCAzNywgMTEsIDUsIDIyMCwgMzYsIDExLCA1LCAyMjAsIDQyLCAxMSwgNSwgMjIwLCAKKyAgICA0MCwgMTEsIDUsIDIyMCwgMzgsIDExLCA1LCAyMjAsIDM5LCAxMSwgNSwgMjMzLCAyMTcsIDExLCA1LCAyMzMsIDIxNiwgMTEsIAorICAgIDUsIDIzMywgMjIzLCAxMSwgNSwgMjMzLCAyMTgsIDExLCA1LCAyMzMsIDIyMCwgMTEsIDUsIDIzMywgMjE5LCAxMSwgNSwgCisgICAgMjMzLCAyMjIsIDExLCA1LCAyMzMsIDIyMSwgMTEsIDUsIDIzMywgMjI5LCAxMSwgNSwgMjMzLCAyMjcsIDExLCA1LCAyMzMsIAorICAgIDIzMSwgMTEsIDUsIDIzMywgMjMwLCAxMSwgNSwgMjMzLCAyMTAsIDExLCA1LCAyMzMsIDIxMSwgMTEsIDUsIDIzMywgMjE0LCAKKyAgICAxMSwgNSwgMjMzLCAyMTMsIDExLCA1LCAyMzMsIDIxNSwgMTEsIDUsIDIzMywgMjI0LCAxMSwgNSwgMjMzLCAyMjYsIDExLCAKKyAgICA1LCAyMzMsIDIyNSwgMTEsIDUsIDIzMywgMjA5LCAxMSwgNSwgMjE5LCAxMDIsIDExLCA1LCAyMTksIDEwMCwgMTEsIDUsIAorICAgIDIxOSwgMTUwLCAxMSwgNSwgMjE5LCAxMDUsIDExLCA1LCAyMTksIDEzMiwgMTEsIDUsIDIxOSwgMTQ2LCAxMSwgNSwgMjE5LCAKKyAgICAxNDUsIDExLCA1LCAyMjAsIDExMSwgMTEsIDUsIDE4OCwgMTEsIDUsIDIyMCwgMTI3LCAxMSwgNSwgMjE4LCA4MSwgMTEsIDUsIAorICAgIDIxOCwgODMsIDExLCA1LCAyMTgsIDgyLCAxMSwgNSwgMjE4LCAyMTQsIDExLCA1LCAyMTgsIDE5OSwgMTEsIDUsIDIxOCwgCisgICAgMjQxLCAxMSwgNSwgMjE4LCAyMjUsIDExLCA1LCAyMjAsIDMsIDExLCA1LCAyMjAsIDM0LCAxMSwgNSwgMjIwLCAxOSwgMTEsIAorICAgIDUsIDIxOCwgNzYsIDExLCA1LCAyMTgsIDcyLCAxMSwgNSwgMjE4LCAxMzMsIDExLCA1LCAyMTgsIDgwLCAxMSwgNSwgMjE4LCAKKyAgICA3OCwgMTEsIDUsIDIxOCwgNzksIDExLCA1LCAyMzQsIDI2LCAxMSwgNSwgMjM0LCAyNSwgMTEsIDUsIDIzNCwgMzEsIDExLCAKKyAgICA1LCAyMzQsIDI3LCAxMSwgNSwgMjM0LCAyOCwgMTEsIDUsIDIzNCwgMzAsIDExLCA1LCAyMzQsIDI5LCAxMSwgNSwgMjM0LCAKKyAgICAzNywgMTEsIDUsIDIzNCwgMzUsIDExLCA1LCAyMzQsIDM5LCAxMSwgNSwgMjM0LCAzOCwgMTEsIDUsIDIzNCwgMTgsIDExLCAKKyAgICA1LCAyMzQsIDIwLCAxMSwgNSwgMjM0LCAxOSwgMTEsIDUsIDIzNCwgMjIsIDExLCA1LCAyMzQsIDI0LCAxMSwgNSwgMjM0LCAKKyAgICAyMywgMTEsIDUsIDIzNCwgMzIsIDExLCA1LCAyMzQsIDM0LCAxMSwgNSwgMjM0LCAzMywgMTEsIDUsIDIzNCwgMTQsIDExLCAKKyAgICA1LCAyMzQsIDEzLCAxMSwgNSwgMjM0LCAyMSwgMTEsIDUsIDIzNCwgMTcsIDExLCA1LCAyMzQsIDE1LCAxMSwgNSwgMjM0LCAKKyAgICAxNiwgMTEsIDUsIDIzNCwgOCwgMTEsIDUsIDIzNCwgNywgMTEsIDUsIDIzNCwgMTIsIDExLCA1LCAyMzQsIDExLCAxMSwgNSwgCisgICAgMjM0LCA5LCAxMSwgNSwgMjM0LCAxMCwgMTEsIDUsIDIyNCwgMTUyLCAxMSwgNSwgMjI0LCAxNDQsIDExLCA1LCAyMjQsIAorICAgIDIxMCwgMTEsIDUsIDIyNCwgMTYyLCAxMSwgNSwgMjI0LCAyMDEsIDExLCA1LCAyMjQsIDIwMCwgMTEsIDUsIDIyNCwgMjA0LCAKKyAgICAxMSwgNSwgMjI0LCAyMDIsIDExLCA1LCAyMjUsIDYzLCAxMSwgNSwgMjI1LCA1MSwgMTEsIDUsIDE5NCwgMTEsIDUsIDIyNSwgCisgICAgNzQsIDExLCA1LCAyMjQsIDIwLCAxMSwgNSwgMjI0LCAxOSwgMTEsIDUsIDIyNCwgMjIsIDExLCA1LCAyMjQsIDIxLCAxMSwgCisgICAgNSwgMjI0LCA2NSwgMTEsIDUsIDIyNCwgNTEsIDExLCA1LCAyMjQsIDExMCwgMTEsIDUsIDIyNCwgNzEsIDExLCA1LCAyMjQsIAorICAgIDIyNywgMTEsIDUsIDIyNSwgNDAsIDExLCA1LCAyMjQsIDI0NCwgMTEsIDUsIDIyNCwgMTQsIDExLCA1LCAyMjQsIDEyLCAxMSwgCisgICAgNSwgMjI0LCA0MiwgMTEsIDUsIDIyNCwgMTgsIDExLCA1LCAyMjQsIDE2LCAxMSwgNSwgMjI0LCAxNywgMTEsIDUsIDIyMywgCisgICAgMjQ4LCAxMSwgNSwgMjIzLCAyNDcsIDExLCA1LCAyMjQsIDIsIDExLCA1LCAyMjMsIDI1MSwgMTEsIDUsIDIyMywgMjQ5LCAKKyAgICAxMSwgNSwgMjIzLCAyNTAsIDExLCA1LCAyMzUsIDEzNCwgMTEsIDUsIDIzNSwgMTMzLCAxMSwgNSwgMjM1LCAxNjEsIDExLCAKKyAgICA1LCAyMzUsIDE0NSwgMTEsIDUsIDIzNSwgMTUzLCAxMSwgNSwgMjM1LCAxNTIsIDExLCA1LCAyMzUsIDE1NSwgMTEsIDUsIAorICAgIDIzNSwgMTU0LCAxMSwgNSwgMjM2LCA0MiwgMTEsIDUsIDIzNiwgMzcsIDExLCA1LCAyMzYsIDg5LCAxMSwgNSwgMjM2LCA1MiwgCisgICAgMTEsIDUsIDIzNSwgMjUsIDExLCA1LCAyMzUsIDI0LCAxMSwgNSwgMjM1LCAyNywgMTEsIDUsIDIzNSwgMjYsIDExLCA1LCAKKyAgICAyMzUsIDk0LCAxMSwgNSwgMjM1LCA5MiwgMTEsIDUsIDIzNSwgMTE2LCAxMSwgNSwgMjM1LCAxMDMsIDExLCA1LCAyMzUsIAorICAgIDIzOSwgMTEsIDUsIDIzNSwgMjM3LCAxMSwgNSwgMjM2LCAxNSwgMTEsIDUsIDIzNSwgMjUwLCAxMSwgNSwgMjM1LCAxNCwgCisgICAgMTEsIDUsIDIzNSwgMTMsIDExLCA1LCAyMzUsIDUwLCAxMSwgNSwgMjM1LCAyMywgMTEsIDUsIDIzNSwgMTUsIDExLCA1LCAKKyAgICAyMzUsIDIyLCAxMSwgNSwgMjI2LCAxMjcsIDExLCA1LCAyMjYsIDEyMywgMTEsIDUsIDIyNiwgMTYzLCAxMSwgNSwgMjI2LCAKKyAgICAxNDEsIDExLCA1LCAyMjYsIDE1MiwgMTEsIDUsIDIyNiwgMTU2LCAxMSwgNSwgMjI2LCAxNTQsIDExLCA1LCAyMjcsIDMzLCAKKyAgICAxMSwgNSwgMjI3LCAxNiwgMTEsIDUsIDE2MSwgMTEsIDUsIDIyNywgNjAsIDExLCA1LCAyMjUsIDI0OSwgMTEsIDUsIDIyNSwgCisgICAgMjU0LCAxMSwgNSwgMjI1LCAyNTEsIDExLCA1LCAyMjYsIDU2LCAxMSwgNSwgMjI2LCA1MSwgMTEsIDUsIDIyNiwgODgsIDExLCAKKyAgICA1LCAyMjYsIDYzLCAxMSwgNSwgMjI2LCAyMzMsIDExLCA1LCAyMjYsIDIxNiwgMTEsIDUsIDIyNywgOCwgMTEsIDUsIDIyNiwgCisgICAgMjM3LCAxMSwgNSwgMjI1LCAyMzcsIDExLCA1LCAyMjUsIDIzMywgMTEsIDUsIDIyNiwgMTUsIDExLCA1LCAyMjUsIDI0OCwgCisgICAgMTEsIDUsIDIyNSwgMjQxLCAxMSwgNSwgMjI1LCAyNDUsIDExLCA1LCAyMzUsIDIyMSwgMTEsIDUsIDIzNSwgMjIwLCAxMSwgCisgICAgNSwgMjM1LCAyMjUsIDExLCA1LCAyMzUsIDIyMiwgMTEsIDUsIDIzNSwgMjI0LCAxMSwgNSwgMjM1LCAyMjMsIDExLCA1LCAKKyAgICAyMzUsIDIzMiwgMTEsIDUsIDIzNSwgMjMxLCAxMSwgNSwgMjM1LCAyMzUsIDExLCA1LCAyMzUsIDIzMywgMTEsIDUsIDIzNSwgCisgICAgMjEyLCAxMSwgNSwgMjM1LCAyMTEsIDExLCA1LCAyMzUsIDIxNCwgMTEsIDUsIDIzNSwgMjEzLCAxMSwgNSwgMjM1LCAyMTcsIAorICAgIDExLCA1LCAyMzUsIDIxNiwgMTEsIDUsIDIzNSwgMjE5LCAxMSwgNSwgMjM1LCAyMTgsIDExLCA1LCAyMzUsIDIyNywgMTEsIAorICAgIDUsIDIzNSwgMjI2LCAxMSwgNSwgMjM1LCAyMzAsIDExLCA1LCAyMzUsIDIyOCwgMTEsIDUsIDIzNSwgMjA3LCAxMSwgNSwgCisgICAgMjM1LCAyMDYsIDExLCA1LCAyMzUsIDIxNSwgMTEsIDUsIDIzNSwgMjEwLCAxMSwgNSwgMjM1LCAyMDgsIDExLCA1LCAyMzUsIAorICAgIDIwOSwgMTEsIDUsIDIyMSwgMjMwLCAxMSwgNSwgMjIxLCAyMzEsIDExLCA1LCAyMjEsIDI0OSwgMTEsIDUsIDIyMSwgMjQ4LCAKKyAgICAxMSwgNSwgMjIxLCAyNTEsIDExLCA1LCAyMjEsIDI1MCwgMTEsIDUsIDIyMSwgMjIxLCAxMSwgNSwgMjIxLCAyMjMsIDExLCAKKyAgICA1LCAyMjEsIDIyMiwgMTEsIDUsIDIyMSwgMjI2LCAxMSwgNSwgMjIxLCAyMjUsIDExLCA1LCAyMjEsIDIyOCwgMTEsIDUsIAorICAgIDIyMSwgMjI3LCAxMSwgNSwgMjIxLCAyMzIsIDExLCA1LCAyMjEsIDIzNCwgMTEsIDUsIDIyMSwgMjMzLCAxMSwgNSwgMjIxLCAKKyAgICAyMTcsIDExLCA1LCAyMjEsIDIxNiwgMTEsIDUsIDIyMSwgMjI0LCAxMSwgNSwgMjIxLCAyMjAsIDExLCA1LCAyMjEsIDIxOCwgCisgICAgMTEsIDUsIDIyMSwgMjE5LCAxMSwgNSwgMjMzLCA0NywgMTEsIDUsIDIzMywgNDYsIDExLCA1LCAyMzMsIDUzLCAxMSwgNSwgCisgICAgMjMzLCA0OCwgMTEsIDUsIDIzMywgNTAsIDExLCA1LCAyMzMsIDQ5LCAxMSwgNSwgMjMzLCA1MiwgMTEsIDUsIDIzMywgNTEsIAorICAgIDExLCA1LCAyMzMsIDU4LCAxMSwgNSwgMjMzLCA1NywgMTEsIDUsIDIzMywgNjAsIDExLCA1LCAyMzMsIDU5LCAxMSwgNSwgCisgICAgMjMzLCAzOSwgMTEsIDUsIDIzMywgMzgsIDExLCA1LCAyMzMsIDQxLCAxMSwgNSwgMjMzLCA0MCwgMTEsIDUsIDIzMywgNDMsIAorICAgIDExLCA1LCAyMzMsIDQyLCAxMSwgNSwgMjMzLCA0NSwgMTEsIDUsIDIzMywgNDQsIDExLCA1LCAyMzMsIDU0LCAxMSwgNSwgCisgICAgMjMzLCA1NiwgMTEsIDUsIDIzMywgNTUsIDExLCA1LCAyMTksIDE5OCwgMTEsIDUsIDIxOSwgMjAwLCAxMSwgNSwgMjE5LCAKKyAgICAxOTksIDExLCA1LCAyMTksIDI0MywgMTEsIDUsIDIxOSwgMjQxLCAxMSwgNSwgMjE5LCAyNTMsIDExLCA1LCAyMTksIDI0NiwgCisgICAgMTEsIDUsIDIxOSwgMTYwLCAxMSwgNSwgMjE5LCAxNTksIDExLCA1LCAyMTksIDE2MSwgMTEsIDUsIDIxOSwgMTcwLCAxMSwgCisgICAgNSwgMjE5LCAxNjcsIDExLCA1LCAyMTksIDE3OCwgMTEsIDUsIDIxOSwgMTcyLCAxMSwgNSwgMjE5LCAyMzQsIDExLCA1LCAKKyAgICAyMTksIDI0MCwgMTEsIDUsIDIxOSwgMjM2LCAxMSwgNSwgMjM0LCA0NSwgMTEsIDUsIDIzNCwgNjAsIDExLCA1LCAyMzQsIAorICAgIDY5LCAxMSwgNSwgMjM0LCAxNTcsIDExLCA1LCAyMzQsIDE0NiwgMTEsIDUsIDE0NCwgMTEsIDUsIDIzNCwgMTY4LCAxMSwgNSwgCisgICAgMjMzLCA3NiwgMTEsIDUsIDIzMywgNzUsIDExLCA1LCAyMzMsIDc4LCAxMSwgNSwgMjMzLCA3NywgMTEsIDUsIDIzMywgMTE3LCAKKyAgICAxMSwgNSwgMjMzLCAxMDgsIDExLCA1LCAyMzMsIDIwNywgMTEsIDUsIDIzMywgMTgwLCAxMSwgNSwgMjM0LCA5MCwgMTEsIDUsIAorICAgIDIzNCwgMTM5LCAxMSwgNSwgMjM0LCAxMDIsIDExLCA1LCAyMDEsIDg1LCAxMSwgNSwgMjAxLCA3MCwgMTEsIDUsIDIwMSwgCisgICAgMTE0LCAxMSwgNSwgMjAxLCA5NiwgMTEsIDUsIDIwMCwgMjA1LCAxMSwgNSwgMjAwLCAyMDcsIDExLCA1LCAyMDAsIDIwNiwgCisgICAgMTEsIDUsIDIwMCwgMjI5LCAxMSwgNSwgMjAxLCAwLCAxMSwgNSwgMjAwLCAyMzksIDExLCA1LCAyMDEsIDQzLCAxMSwgNSwgCisgICAgMjAxLCA2NCwgMTEsIDUsIDIwMSwgNDksIDExLCA1LCAxOTksIDIxLCAxMSwgNSwgMTk5LCAyMCwgMTEsIDUsIDE5OSwgMzYsIAorICAgIDExLCA1LCAxOTksIDI0LCAxMSwgNSwgMTk5LCAyOSwgMTEsIDUsIDE5OSwgMzEsIDExLCA1LCAxOTksIDMwLCAxMSwgNSwgCisgICAgMTk5LCA5NywgMTEsIDUsIDE5OSwgOTQsIDExLCA1LCAxOTksIDExNCwgMTEsIDUsIDE5OSwgMTAxLCAxMSwgNSwgMTk4LCAKKyAgICAyNTIsIDExLCA1LCAxOTgsIDI1NCwgMTEsIDUsIDE5OCwgMjUzLCAxMSwgNSwgMTk5LCAxMCwgMTEsIDUsIDE5OSwgOSwgMTEsIAorICAgIDUsIDE5OSwgMTQsIDExLCA1LCAxOTksIDExLCAxMSwgNSwgMTk5LCA3OSwgMTEsIDUsIDE5OSwgODksIDExLCA1LCAxOTksIAorICAgIDgzLCAxMSwgNSwgMTk4LCAyNDgsIDExLCA1LCAxOTgsIDI0NywgMTEsIDUsIDE5OSwgMywgMTEsIDUsIDE5OCwgMjUxLCAxMSwgCisgICAgNSwgMTk4LCAyNDksIDExLCA1LCAxOTgsIDI1MCwgMTEsIDUsIDE5OCwgMjM0LCAxMSwgNSwgMTk4LCAyMzMsIDExLCA1LCAKKyAgICAxOTgsIDIzOSwgMTEsIDUsIDE5OCwgMjM3LCAxMSwgNSwgMTk4LCAyMzUsIDExLCA1LCAxOTgsIDIzNiwgMTEsIDUsIDI0NiwgCisgICAgMTQ0LCAxMSwgNSwgMjQ2LCAxMzcsIDExLCA1LCAyNDYsIDE3MywgMTEsIDUsIDI0NiwgMTU3LCAxMSwgNSwgMjQ2LCAxNzAsIAorICAgIDExLCA1LCAyNDYsIDE2NCwgMTEsIDUsIDI0NiwgMTcyLCAxMSwgNSwgMjQ2LCAxNzEsIDExLCA1LCAyNDcsIDExMSwgMTEsIAorICAgIDUsIDI0NywgMTAzLCAxMSwgNSwgMjQ3LCAxOTAsIDExLCA1LCAyNDcsIDE0NCwgMTEsIDUsIDI0MiwgMjA0LCAxMSwgNSwgCisgICAgMjQyLCAyMDYsIDExLCA1LCAyNDIsIDIwNSwgMTEsIDUsIDI0MywgOCwgMTEsIDUsIDI0MiwgMjUzLCAxMSwgNSwgMjQ2LCAKKyAgICA5MSwgMTEsIDUsIDI0MywgMjUsIDExLCA1LCAyNDcsIDQwLCAxMSwgNSwgMjQ3LCA3NiwgMTEsIDUsIDI0NywgNDUsIDExLCAKKyAgICA1LCAyNDIsIDE3OSwgMTEsIDUsIDI0MiwgMTc3LCAxMSwgNSwgMjQyLCAyMTQsIDExLCA1LCAyNDIsIDIwMiwgMTEsIDUsIAorICAgIDI0MiwgMTg1LCAxMSwgNSwgMjQyLCAxOTksIDExLCA1LCAyNDIsIDE1NiwgMTEsIDUsIDI0MiwgMTU1LCAxMSwgNSwgMjQyLCAKKyAgICAxNjgsIDExLCA1LCAyNDIsIDE2MiwgMTEsIDUsIDI0MiwgMTU3LCAxMSwgNSwgMjQyLCAxNTksIDExLCA1LCAxOTgsIDIxNywgCisgICAgMTEsIDUsIDE5OCwgMjE2LCAxMSwgNSwgMTk4LCAyMjMsIDExLCA1LCAxOTgsIDIxOCwgMTEsIDUsIDE5OCwgMjIwLCAxMSwgCisgICAgNSwgMTk4LCAyMTksIDExLCA1LCAxOTgsIDIyMiwgMTEsIDUsIDE5OCwgMjIxLCAxMSwgNSwgMTk4LCAyMjksIDExLCA1LCAKKyAgICAxOTgsIDIyOCwgMTEsIDUsIDE5OCwgMjMyLCAxMSwgNSwgMTk4LCAyMzAsIDExLCA1LCAxOTgsIDIxMywgMTEsIDUsIDE5OCwgCisgICAgMjE1LCAxMSwgNSwgMTk4LCAyMTQsIDExLCA1LCAxOTgsIDIyNCwgMTEsIDUsIDE5OCwgMjI3LCAxMSwgNSwgMTk4LCAyMjUsIAorICAgIDExLCA1LCAxOTgsIDIwNiwgMTEsIDUsIDE5OCwgMjEwLCAxMSwgNSwgMTk4LCAyMDksIDExLCA1LCAxOTgsIDIwNywgMTEsIAorICAgIDUsIDE5OCwgMjA4LCAxMSwgNSwgMTk4LCAyMDAsIDExLCA1LCAxOTgsIDE5OSwgMTEsIDUsIDE5OCwgMjA1LCAxMSwgNSwgCisgICAgMTk4LCAyMDMsIDExLCA1LCAxOTgsIDIwMSwgMTEsIDUsIDE5OCwgMjAyLCAxMSwgNSwgMjE3LCAyNTAsIDExLCA1LCAyMTcsIAorICAgIDI0OSwgMTEsIDUsIDIxNywgMjU1LCAxMSwgNSwgMjE3LCAyNTEsIDExLCA1LCAyMTcsIDI1MiwgMTEsIDUsIDIxNywgMjU0LCAKKyAgICAxMSwgNSwgMjE3LCAyNTMsIDExLCA1LCAyMTgsIDQsIDExLCA1LCAyMTgsIDMsIDExLCA1LCAyMTgsIDcsIDExLCA1LCAyMTgsIAorICAgIDYsIDExLCA1LCAyMTcsIDI0MywgMTEsIDUsIDIxNywgMjQ0LCAxMSwgNSwgMjE3LCAyNDcsIDExLCA1LCAyMTcsIDI0OCwgCisgICAgMTEsIDUsIDIxOCwgMCwgMTEsIDUsIDIxOCwgMiwgMTEsIDUsIDIxNywgMjM4LCAxMSwgNSwgMjE3LCAyNDYsIDExLCA1LCAKKyAgICAyMTcsIDI0MiwgMTEsIDUsIDIxNywgMjM5LCAxMSwgNSwgMjE3LCAyNDAsIDExLCA1LCAyMTcsIDIzMywgMTEsIDUsIDIxNywgCisgICAgMjMyLCAxMSwgNSwgMjE3LCAyMzcsIDExLCA1LCAyMTcsIDIzNiwgMTEsIDUsIDIxNywgMjM0LCAxMSwgNSwgMjE3LCAyMzUsIAorICAgIDExLCA1LCAyMDksIDEwOCwgMTEsIDUsIDE4NywgMTEsIDUsIDIwOSwgMTgyLCAxMSwgNSwgMjA5LCAxMTEsIDExLCA1LCAKKyAgICAyMDksIDE2OSwgMTEsIDUsIDIwOSwgMTcyLCAxMSwgNSwgMjA5LCAxNzAsIDExLCA1LCAyMTEsIDI1MSwgMTEsIDUsIDIxMSwgCisgICAgMjM3LCAxMSwgNSwgMjEyLCA2NCwgMTEsIDUsIDIxMiwgMywgMTEsIDUsIDIwNywgMjE4LCAxMSwgNSwgMjA3LCAyMjAsIDExLCAKKyAgICA1LCAyMDcsIDIxOSwgMTEsIDUsIDIwOSwgNCwgMTEsIDUsIDIwOCwgMjQ5LCAxMSwgNSwgMjA5LCAyOSwgMTEsIDUsIDIwOSwgCisgICAgOCwgMTEsIDUsIDIxMCwgMTI3LCAxMSwgNSwgMjExLCAyMDIsIDExLCA1LCAyMTAsIDE1NiwgMTEsIDUsIDIwNywgMTk1LCAKKyAgICAxMSwgNSwgMjA3LCAxOTIsIDExLCA1LCAyMDgsIDI0LCAxMSwgNSwgMjA3LCAyMTcsIDExLCA1LCAyMDcsIDE5OSwgMTEsIDUsIAorICAgIDIwNywgMjA3LCAxMSwgNSwgMjA3LCA5NywgMTEsIDUsIDIwNywgOTYsIDExLCA1LCAyMDcsIDE2NSwgMTEsIDUsIDIwNywgCisgICAgMTA1LCAxMSwgNSwgMjA3LCA5OSwgMTEsIDUsIDIwNywgMTA0LCAxMSwgNSwgMjA4LCAxNDEsIDExLCA1LCAyMDgsIDE0MCwgCisgICAgMTEsIDUsIDIwOCwgMTQ3LCAxMSwgNSwgMjA4LCAxNDIsIDExLCA1LCAyMDgsIDE0NCwgMTEsIDUsIDIwOCwgMTQ2LCAxMSwgCisgICAgNSwgMjA4LCAxNDUsIDExLCA1LCAyMDgsIDE1NiwgMTEsIDUsIDIwOCwgMTU0LCAxMSwgNSwgMjA4LCAxNzksIDExLCA1LCAKKyAgICAyMDgsIDE1NywgMTEsIDUsIDIwOCwgMTM2LCAxMSwgNSwgMjA4LCAxMzUsIDExLCA1LCAyMDgsIDEzOSwgMTEsIDUsIDIwOCwgCisgICAgMTM3LCAxMSwgNSwgMjA4LCAxNTAsIDExLCA1LCAyMDgsIDE1MywgMTEsIDUsIDIwOCwgMTUxLCAxMSwgNSwgMjA4LCAxMzIsIAorICAgIDExLCA1LCAyMDgsIDEzMCwgMTEsIDUsIDIwOCwgMTM0LCAxMSwgNSwgMjA4LCAxMzMsIDExLCA1LCAyMDgsIDEyNSwgMTEsIAorICAgIDUsIDIwOCwgMTI0LCAxMSwgNSwgMjA4LCAxMjksIDExLCA1LCAyMDgsIDEyOCwgMTEsIDUsIDIwOCwgMTI2LCAxMSwgNSwgCisgICAgMjA4LCAxMjcsIDExLCA1LCAxOTksIDcyLCAxMSwgNSwgMTk5LCA3MSwgMTEsIDUsIDE5OSwgNzcsIDExLCA1LCAxOTksIDc0LCAKKyAgICAxMSwgNSwgMTk5LCA1MSwgMTEsIDUsIDE5OSwgNTMsIDExLCA1LCAxOTksIDUyLCAxMSwgNSwgMTk5LCA1NiwgMTEsIDUsIAorICAgIDE5OSwgNTUsIDExLCA1LCAxOTksIDYwLCAxMSwgNSwgMTk5LCA1NywgMTEsIDUsIDE5OSwgNjUsIDExLCA1LCAxOTksIDY0LCAKKyAgICAxMSwgNSwgMTk5LCA2OCwgMTEsIDUsIDE5OSwgNjYsIDExLCA1LCAxOTksIDQ3LCAxMSwgNSwgMTk5LCA0NiwgMTEsIDUsIAorICAgIDE5OSwgNTQsIDExLCA1LCAxOTksIDUwLCAxMSwgNSwgMTk5LCA0OCwgMTEsIDUsIDE5OSwgNDksIDExLCA1LCAxOTksIDM5LCAKKyAgICAxMSwgNSwgMTk5LCAzOCwgMTEsIDUsIDE5OSwgNDMsIDExLCA1LCAxOTksIDQyLCAxMSwgNSwgMTk5LCA0MCwgMTEsIDUsIAorICAgIDE5OSwgNDEsIDExLCA1LCAyNDcsIDE0LCAxMSwgNSwgMjQ3LCAxMCwgMTEsIDUsIDI0NywgMzcsIDExLCA1LCAyNDcsIDIzLCAKKyAgICAxMSwgNSwgMjQ2LCAxODgsIDExLCA1LCAyNDYsIDE4NywgMTEsIDUsIDI0NiwgMTkwLCAxMSwgNSwgMjQ2LCAxODksIDExLCAKKyAgICA1LCAyNDYsIDIwMywgMTEsIDUsIDI0NiwgMjAyLCAxMSwgNSwgMjQ2LCAyMTAsIDExLCA1LCAyNDYsIDIwNSwgMTEsIDUsIAorICAgIDI0NiwgMjQxLCAxMSwgNSwgMjQ2LCAyMzksIDExLCA1LCAyNDcsIDgsIDExLCA1LCAyNDYsIDI0OSwgMTEsIDUsIDI0NiwgCisgICAgMTgyLCAxMSwgNSwgMjQ2LCAxOTIsIDExLCA1LCAyNDYsIDE4NiwgMTEsIDUsIDI0NiwgMTgzLCAxMSwgNSwgMjQ2LCAxODUsIAorICAgIDExLCA1LCAyNDYsIDE3NSwgMTEsIDUsIDI0NiwgMTc0LCAxMSwgNSwgMjQ2LCAxNzksIDExLCA1LCAyNDYsIDE3OCwgMTEsIAorICAgIDUsIDI0NiwgMTc2LCAxMSwgNSwgMjQ2LCAxNzcsIDExLCA1LCAyMTIsIDIxMSwgMTEsIDUsIDIxMiwgMjE1LCAxMSwgNSwgCisgICAgMjEyLCAxOTMsIDExLCA1LCAyMTIsIDE5NCwgMTEsIDUsIDIxMiwgMTk4LCAxMSwgNSwgMjEyLCAxOTcsIDExLCA1LCAyMTIsIAorICAgIDIwMSwgMTEsIDUsIDIxMiwgMTk5LCAxMSwgNSwgMjEyLCAyMDUsIDExLCA1LCAyMTIsIDIwNCwgMTEsIDUsIDIxMiwgMjEwLCAKKyAgICAxMSwgNSwgMjEyLCAyMDYsIDExLCA1LCAyMTIsIDE4OSwgMTEsIDUsIDIxMiwgMTg3LCAxMSwgNSwgMjEyLCAxOTUsIDExLCAKKyAgICA1LCAyMTIsIDE5MiwgMTEsIDUsIDIxMiwgMTkwLCAxMSwgNSwgMjEyLCAxOTEsIDExLCA1LCAyMTIsIDE4MiwgMTEsIDUsIAorICAgIDIxMiwgMTgxLCAxMSwgNSwgMjEyLCAxODYsIDExLCA1LCAyMTIsIDE4NSwgMTEsIDUsIDIxMiwgMTgzLCAxMSwgNSwgMjEyLCAKKyAgICAxODQsIDExLCA1LCAyMTgsIDE5NCwgMTEsIDUsIDIxOCwgMTkzLCAxMSwgNSwgMjE4LCAxOTYsIDExLCA1LCAyMTgsIDE5NSwgCisgICAgMTEsIDUsIDIxOCwgMTg1LCAxMSwgNSwgMjE4LCAxODcsIDExLCA1LCAyMTgsIDE4NiwgMTEsIDUsIDIxOCwgMTg5LCAxMSwgCisgICAgNSwgMjE4LCAxODgsIDExLCA1LCAyMTgsIDE5MiwgMTEsIDUsIDIxOCwgMTkxLCAxMSwgNSwgMjE4LCAxNzksIDExLCA1LCAKKyAgICAyMTgsIDE3OCwgMTEsIDUsIDIxOCwgMTg0LCAxMSwgNSwgMjE4LCAxODIsIDExLCA1LCAyMTgsIDE4MCwgMTEsIDUsIDIxOCwgCisgICAgMTgxLCAxMSwgNSwgMjE4LCAxNzMsIDExLCA1LCAyMTgsIDE3MiwgMTEsIDUsIDIxOCwgMTc3LCAxMSwgNSwgMjE4LCAxNzYsIAorICAgIDExLCA1LCAyMTgsIDE3NCwgMTEsIDUsIDIxOCwgMTc1LCAxMSwgNSwgMjEwLCA3NSwgMTEsIDUsIDIxMCwgNzAsIDExLCA1LCAKKyAgICAyMTAsIDExNCwgMTEsIDUsIDIxMCwgODcsIDExLCA1LCAyMDksIDIwOSwgMTEsIDUsIDIwOSwgMjExLCAxMSwgNSwgMjA5LCAKKyAgICAyMTAsIDExLCA1LCAyMDksIDIzNCwgMTEsIDUsIDIwOSwgMjMwLCAxMSwgNSwgMjEwLCA4LCAxMSwgNSwgMjA5LCAyNTQsIAorICAgIDExLCA1LCAyMTAsIDQzLCAxMSwgNSwgMjEwLCAzNiwgMTEsIDUsIDIxMCwgNjUsIDExLCA1LCAyMTAsIDUyLCAxMSwgNSwgCisgICAgMjA5LCAyMDUsIDExLCA1LCAyMDksIDIwMiwgMTEsIDUsIDIwOSwgMjIwLCAxMSwgNSwgMjA5LCAyMDgsIDExLCA1LCAyMDksIAorICAgIDIwNiwgMTEsIDUsIDIwOSwgMjA3LCAxMSwgNSwgMjA5LCAxODUsIDExLCA1LCAyMDksIDE4NCwgMTEsIDUsIDIwOSwgMTkxLCAKKyAgICAxMSwgNSwgMjA5LCAxODgsIDExLCA1LCAyMDksIDE4NiwgMTEsIDUsIDIwOSwgMTg3LCAxMSwgNSwgMjEzLCAyMDQsIDExLCAKKyAgICA1LCAyMTMsIDE5OCwgMTEsIDUsIDIxMywgMjUyLCAxMSwgNSwgMjEzLCAyMTAsIDExLCA1LCAyMTIsIDE1MSwgMTEsIDUsIAorICAgIDIxMiwgMTUzLCAxMSwgNSwgMjEyLCAxNTIsIDExLCA1LCAyMTIsIDIyOSwgMTEsIDUsIDIxMiwgMjE3LCAxMSwgNSwgMjEzLCAKKyAgICAxLCAxMSwgNSwgMjEyLCAyMzMsIDExLCA1LCAyMTMsIDk4LCAxMSwgNSwgMjEzLCAxOTAsIDExLCA1LCAyMTMsIDEzNywgMTEsIAorICAgIDUsIDIxMiwgMTQ0LCAxMSwgNSwgMjEyLCAxNDEsIDExLCA1LCAyMTIsIDE3NSwgMTEsIDUsIDIxMiwgMTUwLCAxMSwgNSwgCisgICAgMjEyLCAxNDYsIDExLCA1LCAyMTIsIDE0NywgMTEsIDUsIDIxMiwgMTI2LCAxMSwgNSwgMjEyLCAxMjUsIDExLCA1LCAyMTIsIAorICAgIDEzMSwgMTEsIDUsIDIxMiwgMTI5LCAxMSwgNSwgMjEyLCAxMjcsIDExLCA1LCAyMTIsIDEyOCwgMTEsIDUsIDIyNywgMTk2LCAKKyAgICAxMSwgNSwgMjI3LCAxOTUsIDExLCA1LCAyMjcsIDIwNywgMTEsIDUsIDIyNywgMTk3LCAxMSwgNSwgMjI3LCAyMDMsIDExLCAKKyAgICA1LCAyMjcsIDIwMiwgMTEsIDUsIDIyNywgMjA1LCAxMSwgNSwgMjI3LCAyMDQsIDExLCA1LCAyMjcsIDEzNiwgMTEsIDUsIAorICAgIDIyNywgMTM1LCAxMSwgNSwgMjI3LCAxMzgsIDExLCA1LCAyMjcsIDEzNywgMTEsIDUsIDIyNywgMTUzLCAxMSwgNSwgMjI3LCAKKyAgICAxNTEsIDExLCA1LCAyMjcsIDE2NiwgMTEsIDUsIDIyNywgMTU1LCAxMSwgNSwgMjI3LCAxMjksIDExLCA1LCAyMjcsIDEyNywgCisgICAgMTEsIDUsIDIyNywgMTQ3LCAxMSwgNSwgMjI3LCAxMzQsIDExLCA1LCAyMjcsIDEzMSwgMTEsIDUsIDIyNywgMTMyLCAxMSwgCisgICAgNSwgMjI3LCAxMjEsIDExLCA1LCAyMjcsIDEyMCwgMTEsIDUsIDIyNywgMTI1LCAxMSwgNSwgMjI3LCAxMjQsIDExLCA1LCAKKyAgICAyMjcsIDEyMiwgMTEsIDUsIDIyNywgMTIzLCAxMSwgNSwgMjE0LCAxMTMsIDExLCA1LCAyMTQsIDExMSwgMTEsIDUsIDIxNCwgCisgICAgMTIxLCAxMSwgNSwgMjE0LCAxMTQsIDExLCA1LCAyMTQsIDExOCwgMTEsIDUsIDIxNCwgMTE3LCAxMSwgNSwgMjE0LCAxMjAsIAorICAgIDExLCA1LCAyMTQsIDExOSwgMTEsIDUsIDIxNCwgNjQsIDExLCA1LCAyMTQsIDYxLCAxMSwgNSwgMjE0LCA2NiwgMTEsIDUsIAorICAgIDIxNCwgNjUsIDExLCA1LCAyMTQsIDEwMCwgMTEsIDUsIDIxNCwgOTksIDExLCA1LCAyMTQsIDEwOSwgMTEsIDUsIDIxNCwgCisgICAgMTAzLCAxMSwgNSwgMjE0LCA1NiwgMTEsIDUsIDIxNCwgNTIsIDExLCA1LCAyMTQsIDk3LCAxMSwgNSwgMjE0LCA2MCwgMTEsIAorICAgIDUsIDIxNCwgNTgsIDExLCA1LCAyMTQsIDU5LCAxMSwgNSwgMjE0LCAzNiwgMTEsIDUsIDIxNCwgMzQsIDExLCA1LCAyMTQsIAorICAgIDQ2LCAxMSwgNSwgMjE0LCAzOSwgMTEsIDUsIDIxNCwgMzcsIDExLCA1LCAyMTQsIDM4LCAxMSwgNSwgMjI3LCAxODUsIDExLCAKKyAgICA1LCAyMjcsIDE4NCwgMTEsIDUsIDIyNywgMTkxLCAxMSwgNSwgMjI3LCAxODYsIDExLCA1LCAyMjcsIDE4OCwgMTEsIDUsIAorICAgIDIyNywgMTg3LCAxMSwgNSwgMjI3LCAxOTAsIDExLCA1LCAyMjcsIDE4OSwgMTEsIDUsIDIyNywgMTc2LCAxMSwgNSwgMjI3LCAKKyAgICAxNzgsIDExLCA1LCAyMjcsIDE3NywgMTEsIDUsIDIyNywgMTgxLCAxMSwgNSwgMjI3LCAxODAsIDExLCA1LCAyMjcsIDE4MywgCisgICAgMTEsIDUsIDIyNywgMTgyLCAxMSwgNSwgMjI3LCAxNzIsIDExLCA1LCAyMjcsIDE3MSwgMTEsIDUsIDIyNywgMTc5LCAxMSwgCisgICAgNSwgMjI3LCAxNzUsIDExLCA1LCAyMjcsIDE3MywgMTEsIDUsIDIyNywgMTc0LCAxMSwgNSwgMjI3LCAxNjgsIDExLCA1LCAKKyAgICAyMjcsIDE2NywgMTEsIDUsIDIyNywgMTcwLCAxMSwgNSwgMjI3LCAxNjksIDExLCA1LCAyMTksIDc1LCAxMSwgNSwgMjE5LCAKKyAgICA3NCwgMTEsIDUsIDIxOSwgODIsIDExLCA1LCAyMTksIDc2LCAxMSwgNSwgMjE5LCA3OCwgMTEsIDUsIDIxOSwgNzcsIDExLCAKKyAgICA1LCAyMTksIDgxLCAxMSwgNSwgMjE5LCA3OSwgMTEsIDUsIDIxOSwgNjQsIDExLCA1LCAyMTksIDY1LCAxMSwgNSwgMjE5LCAKKyAgICA3MCwgMTEsIDUsIDIxOSwgNjksIDExLCA1LCAyMTksIDczLCAxMSwgNSwgMjE5LCA3MSwgMTEsIDUsIDIxOSwgNTksIDExLCAKKyAgICA1LCAyMTksIDY4LCAxMSwgNSwgMjE5LCA2MywgMTEsIDUsIDIxOSwgNjAsIDExLCA1LCAyMTksIDYxLCAxMSwgNSwgMjE5LCAKKyAgICA1NCwgMTEsIDUsIDIxOSwgNTMsIDExLCA1LCAyMTksIDU4LCAxMSwgNSwgMjE5LCA1NywgMTEsIDUsIDIxOSwgNTUsIDExLCAKKyAgICA1LCAyMTksIDU2LCAxMSwgNSwgMjE4LCAyOSwgMTEsIDUsIDIxOCwgMjgsIDExLCA1LCAyMTgsIDQxLCAxMSwgNSwgMjE4LCAKKyAgICAzMywgMTEsIDUsIDIxOCwgMzgsIDExLCA1LCAyMTgsIDM3LCAxMSwgNSwgMjE4LCA0MCwgMTEsIDUsIDIxOCwgMzksIDExLCAKKyAgICA1LCAyMTgsIDE0LCAxMSwgNSwgMjE4LCAxNiwgMTEsIDUsIDIxOCwgMTUsIDExLCA1LCAyMTgsIDIxLCAxMSwgNSwgMjE4LCAKKyAgICAyMCwgMTEsIDUsIDIxOCwgMjYsIDExLCA1LCAyMTgsIDIyLCAxMSwgNSwgMjE4LCAxMiwgMTEsIDUsIDIxOCwgMTAsIDExLCAKKyAgICA1LCAyMTgsIDE5LCAxMSwgNSwgMjE4LCAxMywgMTEsIDUsIDIwMCwgMTYxLCAxMSwgNSwgMjAwLCAxNjAsIDExLCA1LCAyMDAsIAorICAgIDE2OSwgMTEsIDUsIDIwMCwgMTYzLCAxMSwgNSwgMjAwLCAxNjUsIDExLCA1LCAyMDAsIDE2NCwgMTEsIDUsIDIwMCwgMTY3LCAKKyAgICAxMSwgNSwgMjAwLCAxNjYsIDExLCA1LCAyMDAsIDE0OSwgMTEsIDUsIDIwMCwgMTUwLCAxMSwgNSwgMjAwLCAxNTQsIDExLCAKKyAgICA1LCAyMDAsIDE1MywgMTEsIDUsIDIwMCwgMTU5LCAxMSwgNSwgMjAwLCAxNTcsIDExLCA1LCAyMDAsIDEyNywgMTEsIDUsIAorICAgIDIwMCwgMTI1LCAxMSwgNSwgMjAwLCAxNDAsIDExLCA1LCAyMDAsIDEzMCwgMTEsIDUsIDIwMCwgMTI4LCAxMSwgNSwgMjAwLCAKKyAgICAxMjksIDExLCA1LCAxOTksIDI1MSwgMTEsIDUsIDE5OSwgMjQ5LCAxMSwgNSwgMjAwLCA5LCAxMSwgNSwgMTk5LCAyNTIsIAorICAgIDExLCA1LCAyMDAsIDMsIDExLCA1LCAyMDAsIDIsIDExLCA1LCAyMDAsIDYsIDExLCA1LCAyMDAsIDQsIDExLCA1LCAxOTksIAorICAgIDE4OSwgMTEsIDUsIDE5OSwgMTg4LCAxMSwgNSwgMTk5LCAxOTIsIDExLCA1LCAxOTksIDE5MCwgMTEsIDUsIDE5OSwgMjI1LCAKKyAgICAxMSwgNSwgMTk5LCAyMjEsIDExLCA1LCAxOTksIDI0NSwgMTEsIDUsIDE5OSwgMjI5LCAxMSwgNSwgMTk5LCAxODAsIDExLCAKKyAgICA1LCAxOTksIDE3NiwgMTEsIDUsIDE5OSwgMjExLCAxMSwgNSwgMTk5LCAxODcsIDExLCA1LCAxOTksIDE4MywgMTEsIDUsIAorICAgIDE5OSwgMTg0LCAxMSwgNSwgMTk5LCAxNjAsIDExLCA1LCAxOTksIDE1OSwgMTEsIDUsIDE5OSwgMTY3LCAxMSwgNSwgMTk5LCAKKyAgICAxNjMsIDExLCA1LCAxOTksIDE2MSwgMTEsIDUsIDE5OSwgMTYyLCAxMSwgNDIsIDIxNCwgMTAwLCAxMSwgNDIsIDIyNCwgCisgICAgMjEwLCAxMSwgNDIsIDIyNiwgMTI3LCAxMSwgNDIsIDIxOCwgMzMsIDExLCA0MiwgMjQyLCAxNjIsIDExLCA0MiwgMjA4LCAKKyAgICAxNDcsIDExLCA0MiwgMjM1LCAyMTgsIDExLCA0MiwgMjM1LCAyNTAsIDExLCA0MiwgMjIxLCAyMTEsIDExLCA0MiwgMjMzLCAKKyAgICA0NywgMTEsIDQyLCAyMjMsIDI1MCwgMTEsIDQyLCAyNDksIDE2LCAxMSwgNDIsIDIyMSwgNzksIDExLCA0MiwgMTk5LCAyNDUsIAorICAgIDExLCA0MiwgMjE0LCAxOTIsIDExLCA0MiwgMjMzLCA0MSwgMTEsIDQyLCAyMDYsIDIyNiwgMTEsIDQyLCAyMzYsIDg5LCAxMSwgCisgICAgNDIsIDE5OCwgMjUxLCAxMSwgNDIsIDI0MiwgMTU2LCAxMSwgNDIsIDI0MSwgMTgwLCAxMSwgNDIsIDI0OCwgMywgMTEsIDQyLCAKKyAgICAyMzUsIDIxNCwgMTEsIDQyLCAyMTgsIDIyLCAxMSwgNDIsIDIwNCwgMjE1LCAxMSwgNDIsIDIxNywgNTQsIDExLCA0MiwgCisgICAgMjI3LCAxNzIsIDExLCA0MiwgMTk5LCAxMCwgMTEsIDQyLCAyMTQsIDE3MSwgMTEsIDQyLCAyMzMsIDI0OSwgMTEsIDQyLCAKKyAgICAxOTksIDI1MSwgMTEsIDQyLCAyMDEsIDE2MiwgMTEsIDQyLCAyMDksIDE5MSwgMTEsIDQyLCAyMDMsIDQ4LCAxMSwgNDIsIAorICAgIDE5OSwgMTE0LCAxMSwgNDIsIDIyNywgMTY2LCAxMSwgNDIsIDIxNywgMjQyLCAxMSwgNDIsIDIyNywgMTcwLCAxMSwgNDIsIAorICAgIDIzNSwgOTQsIDExLCA0MiwgMjI3LCAxOTAsIDExLCA0MiwgMjAxLCAwLCAxMSwgNDIsIDIzOSwgMTM3LCAxMSwgNDIsIDIwOSwgCisgICAgMjA3LCAxMSwgNDIsIDIyNCwgMjA0LCAxMSwgNDIsIDI0MiwgMTY4LCAxMSwgNDIsIDI0MiwgMjA1LCAxMSwgNDIsIDI0NiwgCisgICAgMTU3LCAxMSwgNDIsIDIzMywgNDQsIDExLCA0MiwgMjEwLCA3NSwgMTEsIDQyLCAxOTgsIDI1MCwgMTEsIDQyLCAyMDksIAorICAgIDI1NCwgMTEsIDQyLCAyNDcsIDgsIDExLCA0MiwgMTk4LCAyMjAsIDExLCA0MiwgMjIwLCAxMDEsIDExLCA0MiwgMjI3LCA4LCAKKyAgICAyMjQsIDE1MywgMSwgMjQ5LCAxMzYsIDIyNCwgMTUzLCAxLCAxNzIsIDIyNCwgMTUzLCAxLCAyMTUsIDI0NSwgMjI0LCAxNTMsIAorICAgIDEsIDI0MiwgNTgsIDIyNCwgMTUzLCAxLCAyMDcsIDM2LCAyMjQsIDE1MywgMSwgMjA2LCAxMjIsIDIyNCwgMTUzLCAxLCAKKyAgICAyMzYsIDg5LCAyMjQsIDE1MywgMSwgMTYxLCAyMjQsIDE1MywgMSwgMjI2LCAyMDcsIDIyNCwgMTUzLCAxLCAyMjcsIDI0OCwgCisgICAgMjI0LCAxNTMsIDEsIDI0NywgMTkwLCAyMjQsIDE1MywgMSwgMjQ3LCAzNywgMjI0LCAxNTMsIDEsIDIzOSwgOTMsIDIyNCwgCisgICAgMTUzLCAxLCAyMDUsIDMyLCAyMjQsIDE1MywgMSwgMjA1LCAyMiwgMjI0LCAxNTMsIDEsIDE3OCwgMjI0LCAxNTMsIDEsIAorICAgIDE4OCwgMjI0LCAxNTMsIDEsIDE5NCwgMjI0LCAxNTMsIDEsIDIxMiwgNjQsIDIyNCwgMTUzLCAxLCAxOTksIDc3LCAyMjQsIAorICAgIDE1MywgMSwgMTk5LCAxMTQsIDIyNCwgMTUzLCAxLCAyMTksIDI1MywgMjI0LCAxNTMsIDEsIDE0NCwgMjI0LCAxNTMsIDEsIAorICAgIDIwMCwgMTgxLCAyMjQsIDE1MywgMSwgMjM0LCA4NCwgMjI0LCAxNTMsIDEsIDIzNywgMTk1LCAyMjQsIDE1MywgMSwgMjAxLCAKKyAgICAxMTQsIDIyNCwgMTUzLCAxLCAyMTAsIDExNCwgMjI0LCAxNTMsIDEsIDE4MywgMjI0LCAxNTMsIDEsIDIzNSwgMTk5LCAyMjQsIAorICAgIDE1MywgMSwgNjIsIDIyNCwgMTUzLCAxLCAyNTEsIDIyMSwgMjI0LCAxNTMsIDEsIDcyLCAyMjQsIDE1MywgMSwgMjM4LCA2OSwgCisgICAgMjI0LCAxNTMsIDEsIDcwLCAyMjQsIDE1MywgMSwgNzQsIDIyNCwgMTUzLCAxLCA2NiwgMjI0LCAxNTMsIDEsIDIwNCwgMzEsIAorICAgIDIyNCwgMTUzLCAxLCAyMDQsIDI1LCAyMjQsIDE1MywgMSwgMjE3LCAxMjEsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgMjIxLCAKKyAgICAyMDYsIDE1LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDE2MiwgMjE1LCAxMDYsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgCisgICAgMjIxLCAyNDIsIDE2NywgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAyMjEsIDI0OCwgMTI0LCAyMjQsIDE1MywgMSwgMTUwLCAKKyAgICAyMjAsIDIyMSwgMTg4LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDIyMSwgMjI3LCAyMTYsIDIyNCwgMTUzLCAyMTQsIDIxMiwgCisgICAgMjQ2LCA3MCwgMjI0LCAxNTMsIDIxNCwgMjEyLCAyMzYsIDE4MywgMjA4LCA3NiwgNTAsIDUsIDIzOCwgMjU1LCA1MCwgNSwgCisgICAgMjM4LCAyNTEsIDUwLCA1LCAyMzQsIDEyMCwgNTAsIDUsIDIwMSwgNTcsIDUwLCA1LCAyMDEsIDU2LCA1MCwgNSwgMjE2LCAKKyAgICA2MSwgNTAsIDUsIDI0OCwgMTk1LCA1MCwgNSwgMjQ4LCAyNTIsIDUwLCA1LCAyMjIsIDEwMiwgNTAsIDUsIDIyNiwgNDUsIAorICAgIDUwLCA1LCAyMjEsIDI0MywgNTAsIDUsIDIzNiwgMjgsIDUwLCA1LCAyMzcsIDE0MCwgNTAsIDUsIDIwMywgNTQsIDUwLCA1LCAKKyAgICAyMDYsIDE5MCwgNTAsIDUsIDIwNiwgMTA0LCA1MCwgNSwgMjQxLCA5MCwgNTAsIDUsIDI0MSwgODcsIDUwLCA1LCAyMjUsIAorICAgIDMyLCA1MCwgNSwgMjEzLCAxNjcsIDUwLCA1LCAyNDEsIDE2MSwgNTAsIDUsIDIyMCwgNjYsIDUwLCA1LCAyMTEsIDE5MCwgCisgICAgNTAsIDUsIDIxMCwgNjMsIDUwLCA1LCAxOTksIDg3LCA1MCwgNSwgMTk5LCA2NywgNTAsIDUsIDI0NywgNjgsIDUwLCA1LCAKKyAgICAyMjcsIDIyNSwgNTAsIDUsIDIxOSwgODksIDUwLCA1LCAyMDAsIDQ4LCA1MCwgNSwgMjI3LCA1LCA1MCwgNSwgMjE5LCAyMjYsIAorICAgIDUwLCA1LCAyMzYsIDcsIDUwLCA1LCAyMjIsIDY0LCA1MCwgNSwgMjIwLCAyOSwgNTAsIDUsIDIxOCwgNDksIDUwLCA1LCA3MCwgCisgICAgNTAsIDUsIDIyOCwgMTE3LCA1MCwgNSwgMjM0LCA3NSwgNTAsIDUsIDIzNCwgNTMsIDUwLCA1LCAyMDEsIDMxLCA1MCwgNSwgCisgICAgMjAxLCAxOCwgNTAsIDUsIDIxNSwgMjA0LCA1MCwgNSwgMjQ4LCAxOTMsIDUwLCA1LCAyNDgsIDE4OCwgNTAsIDUsIDIyMiwgCisgICAgOTUsIDUwLCA1LCAyMjYsIDQyLCA1MCwgNSwgMjIxLCAyNDAsIDUwLCA1LCAyMzYsIDI0LCA1MCwgNSwgMjM3LCAxMTIsIDUwLCAKKyAgICA1LCAyMDIsIDIzNCwgNTAsIDUsIDIwNiwgMTUsIDUwLCA1LCAyMDYsIDg0LCA1MCwgNSwgMjQxLCA4MiwgNTAsIDUsIDI0MSwgCisgICAgODYsIDUwLCA1LCAyMjQsIDIxMCwgNTAsIDUsIDIxMywgODgsIDUwLCA1LCAyNDEsIDc2LCA1MCwgNSwgMjIwLCA2MCwgNTAsIAorICAgIDUsIDIwOSwgMTgyLCA1MCwgNSwgMjEwLCAzMywgNTAsIDUsIDE5OSwgMzYsIDUwLCA1LCAxOTksIDYzLCA1MCwgNSwgMjQ2LCAKKyAgICAxNzMsIDUwLCA1LCAyMjcsIDIwNywgNTAsIDUsIDIxOSwgODIsIDUwLCA1LCAyMDAsIDksIDUwLCA1LCAyMjYsIDE2MywgNTAsIAorICAgIDUsIDIxOSwgMjE4LCA1MCwgNSwgMjM1LCAxNjEsIDUwLCA1LCAyMjEsIDIxMSwgNTAsIDUsIDIxOSwgMTUwLCA1MCwgNSwgCisgICAgMjE4LCA0MSwgNTAsIDUsIDYyLCA1MCwgNSwgMjUxLCA4NSwgNTAsIDUsIDIxOSwgMjQ4LCA1MCwgNSwgMTQ0LCA1MCwgNSwgCisgICAgMjM0LCAyMDIsIDUwLCA1LCAyMDEsIDExNCwgNTAsIDUsIDIwMSwgMTAwLCA1MCwgNSwgMTcyLCA1MCwgNSwgMjQ4LCAyMDAsIAorICAgIDUwLCA1LCAyNDksIDEzNiwgNTAsIDUsIDIyMiwgMTEwLCA1MCwgNSwgMjI2LCA1MCwgNTAsIDUsIDIyNiwgNDgsIDUwLCA1LCAKKyAgICAyMjEsIDI0NywgNTAsIDUsIDIzNiwgMzIsIDUwLCA1LCAyMzcsIDE5NSwgNTAsIDUsIDIwMywgOTAsIDUwLCA1LCAyMDcsIAorICAgIDM2LCA1MCwgNSwgMjA2LCAxMjIsIDUwLCA1LCAyNDEsIDEwMCwgNTAsIDUsIDI0MSwgODksIDUwLCA1LCAxOTQsIDUwLCA1LCAKKyAgICAyMTMsIDI1MiwgNTAsIDUsIDI0MiwgNTgsIDUwLCA1LCAyMjAsIDc1LCA1MCwgNSwgMjEyLCA2NCwgNTAsIDUsIDIxMCwgCisgICAgMTE0LCA1MCwgNSwgMTk5LCAxMTQsIDUwLCA1LCAxOTksIDc3LCA1MCwgNSwgMjQ3LCAxOTAsIDUwLCA1LCAyMjcsIDI0OCwgCisgICAgNTAsIDUsIDIxOSwgOTgsIDUwLCA1LCAxODMsIDUwLCA1LCAxNjEsIDUwLCA1LCAyMjcsIDY4LCA1MCwgNSwgMjE5LCAyMzIsIAorICAgIDUwLCA1LCAyMzYsIDg5LCA1MCwgNSwgMTc4LCA1MCwgNSwgMTg4LCA1MCwgNSwgMjE4LCA2MCwgNTAsIDUsIDIxNywgNjMsIAorICAgIDUwLCA1LCAyMTcsIDU4LCA1MCwgNSwgMjMzLCAxODgsIDUwLCA1LCAyMDAsIDI0NCwgNTAsIDUsIDIwMCwgMjQwLCA1MCwgNSwgCisgICAgMjE1LCA4MSwgNTAsIDUsIDI0OCwgMTkxLCA1MCwgNSwgMjQ4LCAxMTEsIDUwLCA1LCAyMjIsIDkwLCA1MCwgNSwgMjI2LCAKKyAgICA0MCwgNTAsIDUsIDIyMSwgMjM2LCA1MCwgNSwgMjM2LCAyMCwgNTAsIDUsIDIzNywgMiwgNTAsIDUsIDIwMiwgMTc5LCA1MCwgCisgICAgNSwgMjA1LCAxNjEsIDUwLCA1LCAyMDYsIDU2LCA1MCwgNSwgMjQxLCA3OSwgNTAsIDUsIDI0MSwgODQsIDUwLCA1LCAyMjQsIAorICAgIDc4LCA1MCwgNSwgMjEyLCAyMzgsIDUwLCA1LCAyNDAsIDE4NywgNTAsIDUsIDIyMCwgNDcsIDUwLCA1LCAyMDksIDEwLCA1MCwgCisgICAgNSwgMjEwLCAyLCA1MCwgNSwgMTk5LCAxMiwgNTAsIDUsIDE5OSwgNTgsIDUwLCA1LCAyNDMsIDMwLCA1MCwgNSwgMjI3LCAKKyAgICAxNTYsIDUwLCA1LCAyMTksIDcyLCA1MCwgNSwgMTk5LCAyMzAsIDUwLCA1LCAyMjYsIDY4LCA1MCwgNSwgMjE5LCAyMTYsIAorICAgIDUwLCA1LCAyMzUsIDEwNSwgNTAsIDUsIDIyMSwgODcsIDUwLCA1LCAyMTgsIDIyOSwgNTAsIDUsIDIxOCwgMjMsIDUwLCA1LCAKKyAgICA2NiwgNTAsIDUsIDIwNCwgNSwgNTAsIDUsIDIzMywgOTcsIDUwLCA1LCAyMzMsIDg0LCA1MCwgNSwgMjAwLCAyMTYsIDUwLCAKKyAgICA1LCAyMDAsIDIwOSwgNTAsIDUsIDIxNCwgMjI0LCA1MCwgNSwgMjQ4LCAxOTAsIDUwLCA1LCAyNDgsIDM2LCA1MCwgNSwgCisgICAgMjIyLCA4OSwgNTAsIDUsIDIyNiwgMzgsIDUwLCA1LCAyMjEsIDIzNSwgNTAsIDUsIDIzNiwgMTksIDUwLCA1LCAyMzYsIAorICAgIDE4OSwgNTAsIDUsIDIwMSwgMTY2LCA1MCwgNSwgMjA0LCAyMTUsIDUwLCA1LCAyMDYsIDM1LCA1MCwgNSwgMjQxLCA3NywgCisgICAgNTAsIDUsIDI0MSwgODMsIDUwLCA1LCAyMjQsIDQyLCA1MCwgNSwgMjEyLCAxNzUsIDUwLCA1LCAyMzksIDEzNywgNTAsIDUsIAorICAgIDIyMCwgNDIsIDUwLCA1LCAyMDgsIDI0LCA1MCwgNSwgMjA5LCAyMjAsIDUwLCA1LCAxOTksIDMsIDUwLCA1LCAxOTksIDU0LCAKKyAgICA1MCwgNSwgMjQyLCAyMTQsIDUwLCA1LCAyMjcsIDE0NywgNTAsIDUsIDIxOSwgNjgsIDUwLCA1LCAxOTksIDIxMSwgNTAsIDUsIAorICAgIDIyNiwgMTUsIDUwLCA1LCAyMTksIDIxNSwgNTAsIDUsIDIzNSwgNTAsIDUwLCA1LCAyMjEsIDQxLCA1MCwgNSwgMjE4LCAKKyAgICAxMzMsIDUwLCA1LCAyMTgsIDE5LCA1MCwgNSwgNzQsIDUwLCA1LCAyMTcsIDc4LCA1MCwgNSwgMjE5LCAxNzQsIDUwLCA1LCAKKyAgICAyMzMsIDIwNywgNTAsIDUsIDIzMywgMTkxLCA1MCwgNSwgMjAxLCAwLCA1MCwgNSwgMjAwLCAyNDUsIDUwLCA1LCAyMTUsIAorICAgIDEwNiwgNTAsIDUsIDI0OCwgMTkyLCA1MCwgNSwgMjQ4LCAxMjQsIDUwLCA1LCAyMjIsIDkxLCA1MCwgNSwgMjI2LCA0MSwgCisgICAgNTAsIDUsIDIyMSwgMjM4LCA1MCwgNSwgMjM2LCAyMiwgNTAsIDUsIDIzNiwgMjEsIDUwLCA1LCAyMzcsIDEzLCA1MCwgNSwgCisgICAgMjAyLCAxOTMsIDUwLCA1LCAxMzgsIDUwLCA1LCAyMDYsIDYxLCA1MCwgNSwgMjQxLCA4MCwgNTAsIDUsIDI0MSwgODUsIDUwLCAKKyAgICA1LCAyMjQsIDExMCwgNTAsIDUsIDIxMywgMSwgNTAsIDUsIDI0MCwgMjExLCA1MCwgNSwgMjIwLCA1MSwgNTAsIDUsIDIwOSwgCisgICAgMjksIDUwLCA1LCAyMTAsIDgsIDUwLCA1LCAxOTksIDE0LCA1MCwgNSwgMTk5LCA2MCwgNTAsIDUsIDI0NiwgOTEsIDUwLCA1LCAKKyAgICAyMjcsIDE2NiwgNTAsIDUsIDIxOSwgNzMsIDUwLCA1LCAxOTksIDI0NSwgNTAsIDUsIDIyNiwgODgsIDUwLCA1LCAyMTksIAorICAgIDIxNywgNTAsIDUsIDIzNSwgMTE2LCA1MCwgNSwgMjIxLCAxMzYsIDUwLCA1LCAyMTgsIDI0MSwgNTAsIDUsIDIxOCwgMjYsIAorICAgIDUwLCA1LCA3MiwgNTAsIDUsIDIzOCwgMTc5LCA1MCwgNSwgMjE5LCAyMzcsIDUwLCA1LCAyMzQsIDEzOSwgNTAsIDUsIDIzNCwgCisgICAgMTA1LCA1MCwgNSwgMjAxLCA2NCwgNTAsIDUsIDIwMSwgNTEsIDUwLCA1LCAyMTYsIDczLCA1MCwgNSwgMjQ4LCAxOTYsIDUwLCAKKyAgICA1LCAyNDksIDgsIDUwLCA1LCAyMjIsIDEwMywgNTAsIDUsIDIyNiwgNDYsIDUwLCA1LCAyMjYsIDQ0LCA1MCwgNSwgMjIxLCAKKyAgICAyNDQsIDUwLCA1LCAyMzYsIDI5LCA1MCwgNSwgMjM2LCAyNywgNTAsIDUsIDIzNywgMTQ3LCA1MCwgNSwgMjAzLCA1OSwgNTAsIAorICAgIDUsIDIwNiwgMjAxLCA1MCwgNSwgMjA2LCAxMDYsIDUwLCA1LCAyNDEsIDkxLCA1MCwgNSwgMjQxLCA4OCwgNTAsIDUsIDIyNSwgCisgICAgNDAsIDUwLCA1LCAyMTMsIDE5MCwgNTAsIDUsIDI0MSwgMTc1LCA1MCwgNSwgMjIwLCA2NywgNTAsIDUsIDIxMSwgMjAyLCAKKyAgICA1MCwgNSwgMjEwLCA2NSwgNTAsIDUsIDE5OSwgODksIDUwLCA1LCAxOTksIDY4LCA1MCwgNSwgMjQ3LCA3NiwgNTAsIDUsIAorICAgIDIyNywgMjI3LCA1MCwgNSwgMjE5LCA5MSwgNTAsIDUsIDIwMCwgNTEsIDUwLCA1LCAyMjcsIDgsIDUwLCA1LCAyMTksIDIyNywgCisgICAgNTAsIDUsIDIxOSwgMjIzLCA1MCwgNSwgMjM2LCAxNSwgNTAsIDUsIDIzNiwgMSwgNTAsIDUsIDIyMiwgNzYsIDUwLCA1LCAKKyAgICAyMjAsIDM0LCA1MCwgNSwgMjE4LCA1MCwgNTAsIDUsIDIxOSwgMjU1LCA1MCwgNSwgMjI0LCAyNTAsIDUwLCAyNDYsIDcwLCAKKyAgICA1MCwgMjM2LCAxODMsIDIwOCwgNzYsIDUwLCAyMTQsIDc5LCA4MSwgNTAsIDUsIDIyMCwgNTAsIDIzNywgMTk1LCA1MCwgNSwgCisgICAgMjIwLCA1MCwgMTYxLCA1MCwgNSwgMjIwLCA1MCwgMjA5LCAxMCwgNTAsIDE2LCAyMzcsIDEzNiwgNTAsIDE2LCAyMjcsIDMsIAorICAgIDUwLCAxNiwgMjA1LCAyMjgsIDUwLCAxNiwgMjE5LCAxMjUsIDUwLCAxNiwgMjQ5LCA4MywgNTAsIDE2LCAyMzcsIDE5NCwgCisgICAgNTAsIDE2LCAyMDcsIDMyLCA1MCwgMTYsIDI0MiwgOCwgNTAsIDE2LCAyNDAsIDE4NiwgNTAsIDE2LCAyMjUsIDI1NSwgNTAsIAorICAgIDE2LCAyMDUsIDE2NSwgNTAsIDE2LCAyNDAsIDIxMCwgNTAsIDE2LCAyMjcsIDE1NywgNTAsIDE3LCAxOTksIDgxLCA1MCwgCisgICAgMTcsIDEwMiwgNTAsIDE3LCAxMDUsIDUwLCAxNywgMTQ3LCA1MCwgMTcsIDE0OSwgNTAsIDE3LCAxNjQsIDUwLCAxNywgMTg3LCAKKyAgICA1MCwgMTcsIDIxMCwgMTM1LCA1MCwgMTcsIDE5MiwgNTAsIDE3LCAyMTksIDExMywgNTAsIDUsIDIyMCwgNTAsIDE3OCwgNTAsIAorICAgIDUsIDIyMCwgNTAsIDI0MCwgMjExLCAzNywgNiwgMSwgMTk5LCA4NSwgMzcsIDQsIDEsIDE5OSwgODUsIDM3LCA2LCAxLCAKKyAgICAyMzksIDg4LCAzNywgNCwgMSwgMjM5LCA4OCwgMzcsIDYsIDEsIDIxMywgMTA1LCAyMzksIDkwLCAzNywgNCwgMSwgMjEzLCAKKyAgICAxMDUsIDIzOSwgOTAsIDM3LCA2LCAxLCAyMjgsIDQxLCAzNywgNCwgMSwgMjI4LCA0MSwgMzcsIDYsIDEsIDI0MCwgMjI3LCAKKyAgICAzNywgNCwgMSwgMjQwLCAyMjcsIDM3LCA2LCAxLCAyMjEsIDk1LCAyMDQsIDIwLCAzNywgNCwgMSwgMjIxLCA5NSwgMjA0LCAKKyAgICAyMCwgMzcsIDYsIDEsIDI0OCwgNDcsIDIxNywgODMsIDM3LCA0LCAxLCAyNDgsIDQ3LCAyMTcsIDgzLCAzNywgNiwgMSwgCisgICAgMjIwLCAxMCwgMjAwLCAzMywgMzcsIDQsIDEsIDIyMCwgMTAsIDIwMCwgMzMsIDM3LCA2LCAxLCAyMDAsIDMwLCAzLCAyNDksIAorICAgIDEzMCwgMjAwLCAzMywgMzcsIDQsIDEsIDIwMCwgMzAsIDMsIDI0OSwgMTMwLCAyMDAsIDMzLCAzNywgNiwgMSwgMjI4LCAzOSwgCisgICAgMjAwLCA2NSwgMzcsIDQsIDEsIDIyOCwgMzksIDIwMCwgNjUsIDM3LCA2LCAxLCAyMTMsIDEwNSwgMTk5LCAyMTEsIDM3LCA0LCAKKyAgICAxLCAyMTMsIDEwNSwgMTk5LCAyMTEsIDM3LCA2LCAxLCAyMjgsIDM5LCA2MiwgMzcsIDQsIDEsIDIyOCwgMzksIDYyLCAzNywgCisgICAgNiwgMSwgMjQ2LCAxMTAsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIDI0NiwgMTEwLCAyMjQsIDE0OCwgMTk5LCAKKyAgICAxODEsIDM3LCA2LCAxLCAyNDgsIDEzNiwgMTk5LCAxODEsIDM3LCA0LCAxLCAyNDgsIDEzNiwgMTk5LCAxODEsIDM3LCA2LCAKKyAgICAxLCAyMjgsIDM5LCAyNDYsIDExMCwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjI4LCAzOSwgMjQ2LCAxMTAsIAorICAgIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDYsIDEsIDE5OSwgMjQ3LCAzNywgNCwgMSwgMTk5LCAyNDcsIDM3LCA2LCAxLCAKKyAgICAyMTMsIDEwNSwgMjA1LCAyNiwgMzcsIDQsIDEsIDIxMywgMTA1LCAyMDUsIDI2LCAzNywgNiwgMSwgMjA5LCAyMywgMjQxLCAKKyAgICAxNzUsIDM3LCA0LCAxLCAyMDksIDIzLCAyNDEsIDE3NSwgMzcsIDYsIDEsIDIwOSwgMjMsIDIzOCwgMjA5LCAzNywgNCwgMSwgCisgICAgMjA5LCAyMywgMjM4LCAyMDksIDM3LCA2LCAxLCAyMDksIDIzLCAyMzgsIDE5MCwgMzcsIDQsIDEsIDIwOSwgMjMsIDIzOCwgCisgICAgMTkwLCAzNywgNiwgMSwgMjIxLCA5OSwgNzQsIDM3LCA0LCAxLCAyMjEsIDk5LCA3NCwgMzcsIDYsIDEsIDI0OCwgMTY1LCAKKyAgICA3NCwgMzcsIDQsIDEsIDI0OCwgMTY1LCA3NCwgMzcsIDYsIDEsIDUzLCAyMjEsIDk5LCA3NCwgMzcsIDQsIDEsIDUzLCAyMjEsIAorICAgIDk5LCA3NCwgMzcsIDEsIDIyMSwgMjIsIDc0LCAzOCwgMzcsIDIwMSwgMTQ5LCAzOCwgMzcsIDIwNiwgMTY3LCAyMjEsIDE2OCwgCisgICAgNTQsIDM4LCAzNywgMjMzLCA4MywgMjIxLCAxNjgsIDU0LCAzOCwgMzcsIDIwNiwgNTEsIDIyMSwgMTY4LCA1NCwgMjA5LCAKKyAgICA3MywgMjUwLCAxNjUsIDM4LCAzNywgMSwgMjA0LCAxNywgMjI4LCAxNzgsIDM4LCAzNywgMSwgNzAsIDM4LCAzNywgMSwgCisgICAgMjAwLCA5LCAzOCwgMzcsIDEsIDY2LCAzOCwgMzcsIDEsIDIzNCwgMTY1LCA1NCwgMzgsIDM3LCAxLCAyMDAsIDI5LCAzOCwgCisgICAgMzcsIDEsIDIwOSwgMjMsIDU0LCAzOCwgMzcsIDEsIDIxNywgODMsIDM4LCAzNywgMjI3LCAyMCwgMzgsIDM3LCAyMTYsIDgwLCAKKyAgICAzNywgMjI3LCAyMCwgMzcsIDIxNiwgODAsIDM3LCA2LCAxLCAyMzksIDEwMywgMzcsIDQsIDEsIDIzOSwgMTAzLCAzNywgNiwgCisgICAgMSwgMjM5LCA3OSwgMzcsIDQsIDEsIDIzOSwgNzksIDM3LCA2LCAxLCAxOTksIDQ0LCAzNywgNCwgMSwgMTk5LCA0NCwgMzcsIAorICAgIDYsIDEsIDI0NywgOTIsIDM3LCA0LCAxLCAyNDcsIDkyLCAzNywgNiwgMSwgMjM5LCA3NiwgMzcsIDQsIDEsIDIzOSwgNzYsIAorICAgIDM3LCA2LCAxLCAyMDYsIDIwMiwgMywgMTAxLCAxMTcsIDM3LCA0LCAxLCAyMDYsIDIwMiwgMywgMTAxLCAxMTcsIDM3LCA2LCAKKyAgICAxLCAyMDQsIDE2OCwgMzcsIDQsIDEsIDIwNCwgMTY4LCAzNywgNiwgMSwgMjA1LCAxLCAzNywgNCwgMSwgMjA1LCAxLCAzNywgCisgICAgNiwgMSwgMjA1LCA2LCAzNywgNCwgMSwgMjA1LCA2LCAzNywgNiwgMSwgMjA2LCAyMDcsIDM3LCA0LCAxLCAyMDYsIDIwNywgCisgICAgMzcsIDYsIDEsIDIzMywgNjUsIDM3LCA0LCAxLCAyMzMsIDY1LCAzNywgNiwgMSwgMjA5LCAxOTcsIDM3LCA0LCAxLCAyMDksIAorICAgIDE5NywgMzcsIDYsIDEsIDUzLCA3NCwgMzcsIDQsIDEsIDUzLCA3NCwgMzcsIDYsIDEsIDI0MiwgMjMyLCA3NCwgMzcsIDQsIAorICAgIDEsIDI0MiwgMjMyLCA3NCwgNjcsIDEsIDM3LCAyMzQsIDE2NSwgNTQsIDY3LCAxLCAzNywgMjA5LCAyMywgNTQsIDM4LCAzNywgCisgICAgMSwgMjM4LCAyNDgsIDM4LCAzNywgMSwgMjI4LCAzOSwgNzIsIDI1LCAxLCA2MiwgMjUsIDEsIDE2MSwgMjUsIDEsIDY2LCAKKyAgICAyNSwgMSwgMjI2LCAxNSwgMjUsIDEsIDIzOCwgMjU1LCAyNSwgMSwgMjEzLCAxNjcsIDI1LCAxLCAyMDcsIDE1LCAyNSwgMSwgCisgICAgNzQsIDI1LCAxLCAyMTgsIDQxLCAyNSwgMSwgNzAsIDI1LCAxLCAxOTQsIDI1LCAxLCAxNzIsIDI1LCAxLCAyMTMsIDMzLCAKKyAgICAyNSwgMSwgMjEzLCA4MSwgMjUsIDEsIDIyNSwgMzEsIDI1LCAxLCAyMjIsIDYzLCAyNSwgMSwgMjA3LCAzMiwgMjUsIDEsIAorICAgIDIyMCwgNzMsIDI1LCAxLCAyMTksIDk2LCAyNSwgMSwgMjIzLCAyNDMsIDI1LCAxLCAyMDcsIDE5MywgMjUsIDEsIDIyMSwgCisgICAgNDEsIDI1LCAxLCAyMTAsIDI4LCAyNSwgMSwgMjA5LCAxODIsIDI1LCAxLCAyMTAsIDM4LCAyNSwgMSwgMjEwLCAxMzcsIDI1LCAKKyAgICAxLCAyMjUsIDE5OSwgMjUsIDEsIDIyNiwgMjMzLCAyNSwgMSwgMjE4LCAxMDQsIDI1LCAxLCAyMTgsIDEzMywgMjUsIDEsIAorICAgIDIxOSwgNjcsIDI1LCAxLCAxOTksIDIyNywgMjUsIDEsIDIwOSwgMjIwLCAyNSwgMSwgMTk5LCAxODUsIDI1LCAxLCAxODMsIAorICAgIDI1LCAxLCAyMTgsIDE2NywgMjUsIDEsIDIyNiwgMjE5LCAyNSwgMSwgMjE1LCAyNDksIDI1LCAxLCAyMTksIDg5LCAyNSwgMSwgCisgICAgMjE4LCAxNDgsIDI1LCAxLCAyMTQsIDIxNiwgMjUsIDEsIDIwMCwgMjEzLCAyNSwgMSwgMjE2LCA2MSwgMjUsIDEsIDIzNywgCisgICAgMTQwLCAyNSwgMSwgMjEyLCAxNzUsIDI1LCAxLCAyMjQsIDQyLCAyNSwgMSwgMjIxLCAyMTEsIDI1LCAxLCAyMTksIDE1MCwgCisgICAgMjUsIDEsIDIxMywgMTA3LCAyNSwgMSwgMjEzLCAyMzQsIDI1LCAxLCAyMjYsIDI0MywgMjUsIDEsIDIxOSwgMTgxLCAyNSwgCisgICAgMSwgMjE5LCAyMzIsIDI1LCAxLCAyMTksIDI1MywgMjUsIDEsIDIxMCwgOCwgMjUsIDEsIDIxNCwgMjIxLCAyNSwgMSwgMjM2LCAKKyAgICAxODksIDI1LCAxLCAyMzcsIDYsIDI1LCAxLCAyMDEsIDExNCwgMjUsIDEsIDE4OCwgMjUsIDEsIDIyNCwgMjEwLCAyNSwgMSwgCisgICAgMjE1LCAyMDQsIDI1LCAxLCAyMjQsIDcwLCAyNSwgMSwgMjI2LCA4OCwgMjUsIDEsIDIyMiwgMTAwLCAyNSwgMSwgMjEzLCAKKyAgICAxMzksIDI1LCAxLCAyMjIsIDQwLCAyNSwgMSwgMTc4LCAyNSwgMSwgMjA2LCAxNSwgMjUsIDEsIDIyNiwgMTYzLCAyNSwgMSwgCisgICAgMjIxLCAxMzYsIDI1LCAxLCAyMjIsIDEwOCwgMjUsIDEsIDIwNiwgMTQ2LCAyNSwgMSwgMjI2LCA1MCwgMjUsIDEsIDIwNiwgCisgICAgMTY2LCAyNSwgMSwgMjE4LCAxMzUsIDI1LCAxLCAyMTIsIDIxLCAyNSwgMSwgMjM3LCAxOTEsIDI1LCAxLCAyMjYsIDUyLCAKKyAgICAyNSwgMSwgMjI2LCA4MywgMjUsIDM4LCAxMzQsIDIyNiwgNjEsIDI1LCAzOCwgMTM0LCAyMDQsIDIwNiwgMjUsIDIxOSwgOTUsIAorICAgIDI1LCAyMzYsIDE4MywgMjA4LCA3NiwgMjUsIDI0NiwgNzksIDI1LCAyNDYsIDcwLCAyNSwgMjEwLCAxNjcsIDI1LCAyMTQsIAorICAgIDc5LCA4MSwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTUsIDE1NiwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIAorICAgIDIwMCwgNzYsIDIxNSwgMTU2LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxMCwgODgsIDY3LCAxLCAyNDYsIAorICAgIDIyMiwgMTUwLCAyMDAsIDc2LCAyMTAsIDg4LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxNCwgOTcsIDY3LCAKKyAgICAxLCAyNDYsIDIyMiwgMTUwLCAyMDAsIDc2LCAyMTQsIDk3LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxMiwgCisgICAgMTc1LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMjAwLCA3NiwgMjEyLCAxNzUsIDY3LCAxLCAyMzgsIDI5LCAyMzksIDE4MCwgCisgICAgMTUwLCAxNDgsIDY3LCAxLCAxMjIsIDIzOSwgMTgwLCAxNTAsIDE0OCwgNjcsIDEsIDIyMSwgMjA2LCAyMzksIDE4MCwgMTUwLCAKKyAgICAxNDgsIDY3LCAxLCAxMjgsIDIzOSwgMTgwLCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgMjgsIDIzOSwgMTgwLCAxNTAsIDE0OCwgCisgICAgNjcsIDEsIDIzOCwgMjksIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyMiwgMjM5LCAxODAsIDIyNSwgCisgICAgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMjIxLCAyMDYsIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyOCwgCisgICAgMjM5LCAxODAsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMjM4LCAyOCwgMjM5LCAxODAsIDIyNSwgMjAsIDE1MCwgMTQ4LCAKKyAgICA2NywgMSwgMjM4LCAyOSwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjIsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgCisgICAgMjIxLCAyMDYsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMTI4LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgCisgICAgMjgsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgNzMsIDgzLCAxNDgsIDY3LCAxLCA3MywgMjA5LCA3NSwgNjcsIDEsIDczLCAKKyAgICAyMzMsIDE3NywgMTQ4LCA2NywgMSwgMjI0LCA1NCwgNTEsIDI0MywgMTYsIDI1MSwgNzAsIDY3LCAxLCAyMTMsIDIyMCwgCisgICAgMTE1LCA0OCwgNjcsIDEsIDIxMywgMjIwLCAxMjcsIDQ4LCA2NywgMSwgMjEzLCAyMjAsIDIzOCwgNDMsIDgxLCA2NywgMSwgCisgICAgMjEzLCAyMjAsIDIyOCwgNTAsIDIzOCwgNDMsIDgxLCA2NywgMSwgMTI4LCAyMjgsIDUwLCAyMzgsIDQzLCA4MSwgNjcsIDEsIAorICAgIDIwOCwgNTcsIDI2LCAxMjIsIDIwNSwgMTc0LCA2NywgMSwgMjA4LCA1NywgMjYsIDEyOCwgMjA1LCAxNzQsIDgsIDYsIDEsIAorICAgIDIzOCwgMjQzLCAyNTEsIDE0MiwgOCwgNCwgMSwgMjM4LCAyNDMsIDI1MSwgMTQyLCA4LCA2LCAxLCAyMzgsIDI0MywgMjUxLCAKKyAgICAxNzEsIDgsIDQsIDEsIDIzOCwgMjQzLCAyNTEsIDE3MSwgOCwgNiwgMSwgMjM0LCAxMDMsIDgsIDQsIDEsIDIzNCwgMTAzLCAKKyAgICA4LCA2LCAxLCAyMDQsIDExNCwgOCwgNCwgMSwgMjA0LCAxMTQsIDgsIDYsIDEsIDIwNSwgMTAyLCA4LCA0LCAxLCAyMDUsIAorICAgIDEwMiwgOCwgNiwgMSwgMjQyLCAyMTEsIDgsIDQsIDEsIDI0MiwgMjExLCA4LCA2LCAxLCAyNDIsIDIxMiwgMywgMjQ2LCA3MCwgCisgICAgOCwgNCwgMSwgMjQyLCAyMTIsIDMsIDI0NiwgNzAsIDgsIDEsIDQsIDYsIDIzOCwgNSwgOCwgMSwgNCwgNiwgMjEyLCAxMjIsIAorICAgIDgsIDYsIDEsIDI1MiwgMTM4LCA4LCA0LCAxLCAyNTIsIDEzOCwgOCwgNiwgMSwgMjUxLCAzMSwgOCwgNCwgMSwgMjUxLCAzMSwgCisgICAgOCwgNiwgMSwgMjUwLCAxMzksIDgsIDQsIDEsIDI1MCwgMTM5LCA4LCA2LCAxLCAyNTAsIDEyMywgOCwgNCwgMSwgMjUwLCAKKyAgICAxMjMsIDgsIDYsIDEsIDI1MCwgMTI0LCAzLCAyMzMsIDE3NywgMTQ4LCA4LCA0LCAxLCAyNTAsIDEyNCwgMywgMjMzLCAxNzcsIAorICAgIDE0OCwgOCwgNiwgMSwgMjUwLCAxMTIsIDgsIDQsIDEsIDI1MCwgMTEyLCA4LCA2LCAxLCAyMTMsIDEwNSwgMjQ3LCAyMjQsIAorICAgIDMsIDI0MCwgMTgyLCA4LCA0LCAxLCAyMTMsIDEwNSwgMjQ3LCAyMjQsIDMsIDI0MCwgMTgyLCA4LCA2LCAxLCAyMjcsIDExOSwgCisgICAgMywgOTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCA5NywgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAKKyAgICAxLCAyMjcsIDExOSwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyMDgsIDQ3LCAyNiwgMjQxLCA3MSwgCisgICAgOTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyMDgsIDQ3LCAyNiwgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDI0OCwgNDYsIAorICAgIDE1NiwgOCwgNCwgMSwgMjQ4LCA0NiwgMTU2LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMTIyLCA5NywgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDEyMiwgOTcsIDgsIDYsIDEsIDE2MywgMywgMTY4LCAyMDgsIDQ3LCAyMTYsIDI0MiwgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAxNjgsIDIwOCwgNDcsIDIxNiwgMjQyLCA4LCA2LCAxLCAxNjMsIDMsIDIyNCwgNzQsIDgsIDQsIDEsIDE2MywgMywgCisgICAgMjI0LCA3NCwgOCwgNiwgMSwgMjE3LCA2MywgOCwgNCwgMSwgMjE3LCA2MywgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDIwOCwgCisgICAgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjA4LCA0NywgMjA2LCAzOCwgMjQxLCAxMTksIAorICAgIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCAyMzcsIDI2LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjM3LCAyNiwgOCwgNiwgMSwgCisgICAgMjE2LCAyMjcsIDMsIDIwOCwgMTg1LCAyMDcsIDYsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAyMDgsIDE4NSwgMjA3LCA2LCA4LCAKKyAgICA2LCAxLCAyMTQsIDE2OCwgMywgMjA4LCA0NywgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDQsIDEsIDIxNCwgMTY4LCAzLCAyMDgsIAorICAgIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNiwgMSwgMjE0LCAxNjgsIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAxLCAyMTQsIAorICAgIDE2OCwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDIxNCwgMzMsIDIxMiwgMjIyLCA4LCA0LCAxLCAyMTQsIDMzLCAyMTIsIAorICAgIDIyMiwgOCwgNiwgMSwgMjEyLCAxNjIsIDIxMiwgMjIyLCA4LCA0LCAxLCAyMTIsIDE2MiwgMjEyLCAyMjIsIDgsIDYsIDEsIAorICAgIDIwMywgMTY5LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAKKyAgICAyMDEsIDE1NSwgOCwgNCwgMSwgMjAxLCAxNTUsIDgsIDYsIDEsIDIwMiwgMjAxLCAxOTksIDE1NywgOCwgNCwgMSwgMjAyLCAKKyAgICAyMDEsIDE5OSwgMTU3LCA4LCA2LCAxLCAyMDYsIDU1LCAzLCA5NywgOCwgNCwgMSwgMjA2LCA1NSwgMywgOTcsIDgsIDYsIDEsIAorICAgIDIwNiwgNTUsIDMsIDIwOCwgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMDYsIDU1LCAzLCAyMDgsIDQ3LCAKKyAgICAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNiwgMSwgMjAzLCA0OSwgOCwgNCwgMSwgMjAzLCA0OSwgOCwgNiwgMSwgMjM4LCA4MSwgCisgICAgOCwgNCwgMSwgMjM4LCA4MSwgOCwgNiwgMSwgMjI4LCAyNiwgOCwgNCwgMSwgMjI4LCAyNiwgOCwgNiwgMSwgMjQzLCA2OCwgCisgICAgOCwgNCwgMSwgMjQzLCA2OCwgNjcsIDEsIDIwMywgMTk3LCA4LCA0LCAxLCAyMzksIDEyNiwgOCwgNCwgMSwgMjI0LCAyNSwgCisgICAgOCwgNCwgMSwgMjIxLCAxNSwgOCwgNCwgMSwgMjE4LCA5NiwgOCwgNCwgMSwgMjEyLCAxNjEsIDgsIDEsIDQsIDYsIDIxMiwgCisgICAgMTYxLCA4LCA0LCAxLCAyMDQsIDIwMywgOCwgNCwgMSwgMjA0LCAxMiwgOCwgNiwgMSwgMjI4LCA3MSwgMjQyLCAxNTMsIDgsIAorICAgIDQsIDEsIDIyOCwgNzEsIDI0MiwgMTUzLCA4LCA2LCAxLCAyMjgsIDcxLCAyMzgsIDUsIDgsIDQsIDEsIDIyOCwgNzEsIDIzOCwgCisgICAgNSwgOCwgNiwgMSwgMjI4LCA3MSwgMjM2LCAxNTYsIDgsIDYsIDEsIDIwNCwgMTg1LCAyMjgsIDcxLCAyMzYsIDE1NiwgOCwgCisgICAgNCwgMSwgMjA0LCAxODUsIDIyOCwgNzEsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMDQsIDE4NSwgMTU2LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMTU2LCA4LCA2LCAxLCAyMjgsIDcxLCAxNDYsIDgsIDQsIDEsIDIyOCwgNzEsIDE0NiwgOCwgNiwgMSwgMjI4LCA3MSwgCisgICAgMjEyLCAxMjIsIDgsIDQsIDEsIDIyOCwgNzEsIDIxMiwgMTIyLCA4LCA2LCAxLCAyMjgsIDcxLCAyMDcsIDgzLCA4LCA0LCAxLCAKKyAgICAyMjgsIDcxLCAyMDcsIDgzLCA2NywgMSwgMTI4LCAyNDYsIDE0NywgMjUxLCAyNTEsIDY3LCAxLCAyNDYsIDc5LCA2NywgMSwgCisgICAgMjA5LCAyNTAsIDIzOCwgMTIyLCA1NCwgOCwgNiwgMSwgMjEyLCAyNSwgOCwgNCwgMSwgMjEyLCAyNSwgOCwgNiwgMSwgMjA0LCAKKyAgICAxODUsIDIzNCwgMjQ3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjEzLCAxMTEsIDIzMywgMTg3LCAyNiwgMjQ4LCAyMjYsIDgsIAorICAgIDEsIDIwOSwgMTMyLCAyNDAsIDE4MiwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMjAsIDIxNSwgCisgICAgMywgMjQxLCAxMTksIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAxNDgsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAxNDgsIDgsIDQsIAorICAgIDEsIDI0NywgMjI0LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjE2LCAxODQsIDExNywgOCwgNiwgCisgICAgMSwgNjgsIDMsIDIzNywgMjYsIDgsIDQsIDEsIDY4LCAzLCAyMzcsIDI2LCA4LCA2LCAxLCAyMzgsIDYsIDMsIDk3LCA4LCA0LCAKKyAgICAxLCAyMzgsIDYsIDMsIDk3LCA4LCA2LCAxLCAyMDIsIDE4NSwgMjUxLCAyMjEsIDgsIDQsIDEsIDIwMiwgMTg1LCAyNTEsIAorICAgIDIyMSwgOCwgNiwgMSwgMjAyLCAxODUsIDIxNywgMTIxLCA4LCA0LCAxLCAyMDIsIDE4NSwgMjE3LCAxMjEsIDgsIDYsIDEsIAorICAgIDIwMiwgMTg1LCAyMDQsIDMxLCA4LCA0LCAxLCAyMDIsIDE4NSwgMjA0LCAzMSwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjE0LCAzMywgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAxMTcsIAorICAgIDgsIDYsIDEsIDIxMywgMTA1LCAxNzYsIDcyLCA4LCA2LCAxLCAxMzUsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgCisgICAgMjQ4LCAyMjYsIDgsIDYsIDEsIDQsIDYsIDcwLCA4LCA2LCAxLCAyMDQsIDE4NSwgMjI3LCAxMTgsIDgsIDYsIDEsIDIwNCwgCisgICAgMTg1LCAyMDcsIDgzLCA4LCA2LCAxLCAyMjcsIDI1MiwgMywgMjQyLCAyMzAsIDgsIDYsIDEsIDI0NiwgMjM2LCA4LCA2LCAxLCAKKyAgICAyNDgsIDIwOCwgOCwgNCwgMSwgMjQ4LCAyMDgsIDgsIDYsIDEsIDIxNywgODMsIDgsIDQsIDEsIDIxNywgODMsIDgsIDIzOCwgCisgICAgMTI3LCAxLCAyMDksIDE3MywgNzAsIDY3LCAxLCA2LCAyMzQsIDI0OCwgMywgOTcsIDY3LCAxLCA0LCAzMywgMjE3LCAxMjEsIAorICAgIDgsIDEsIDQsIDYsIDIwNCwgMTg1LCAyMjMsIDI0MywgOCwgMjM4LCAxMjcsIDEsIDIxMywgMTA1LCAyMzgsIDUsIDgsIDIzOCwgCisgICAgMTI3LCAxLCAyMTMsIDEwNSwgMjE2LCAyMjYsIDgsIDIzOCwgMTI3LCAxLCAyMjgsIDUwLCAyMjMsIDI0MywgOCwgMjM4LCAKKyAgICAxMjcsIDEsIDIzMywgMTksIDIyNCwgODAsIDgsIDIzOCwgMTI3LCAxLCAyNTAsIDIzNCwgMjIzLCAyNDMsIDIwNywgMTYzLCAKKyAgICAyMjAsIDE0NSwgMSwgNjIsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgNzAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMiwgMjM5LCAKKyAgICAxMDUsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgNjYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgNzIsIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMSwgNzQsIDIwNywgMTYzLCAyMjAsIDE0NSwgMiwgMjM0LCAxNTksIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI2LCAKKyAgICA4OCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMjYsIDE3OCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMzUsIDExNiwgCisgICAgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMzUsIDE3MSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyLCAyNTEsIDMzLCAyMDcsIAorICAgIDE2MywgMjIwLCAxNDUsIDEsIDI0NiwgOTEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQ2LCAyMTAsIDIwNywgMTYzLCAKKyAgICAyMjAsIDE0NSwgMSwgMjI3LCAxNjYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI3LCAyMDksIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMSwgMjA0LCAyMzAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjA0LCAyMzYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgCisgICAgMjQxLCAxOTAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQxLCAxOTksIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMTM4LCAKKyAgICAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIwNiwgNjEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQwLCAyMTEsIDIwNywgCisgICAgMTYzLCAyMjAsIDE0NSwgMSwgMjQxLCA4MCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTgsIDI0MSwgMjA3LCAxNjMsIAorICAgIDIyMCwgMTQ1LCAxLCAyMTUsIDEwNiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTUsIDIxNywgMjA3LCAxNjMsIDIyMCwgCisgICAgMTQ1LCAxLCAyNDgsIDEyNCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyNDgsIDE5MiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAKKyAgICAyMjEsIDEzNiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTMsIDEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI0LCAxMTAsIAorICAgIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjEyLCAyMDEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjA5LCAyOSwgMjA3LCAKKyAgICAxNjMsIDIyMCwgMTQ1LCAxLCAyMzMsIDIwNywgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgNjIsIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMjIsIDIsIDcwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIyLCAyLCA2NiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgCisgICAgNzIsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIDIxNywgNjMsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjE1LCAxMDEsIAorICAgIDIyMiwgMTQ5LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIxNSwgMTAxLCAyMjIsIDE0OCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAKKyAgICAyMTUsIDEwMSwgMjIyLCAxNDcsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjE1LCAxMDEsIDIyMiwgMTQ2LCAxNTcsIDIyOCwgCisgICAgMTAxLCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAxNTcsIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMTU3LCAKKyAgICAyMjgsIDEwMSwgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDExMiwgMjA5LCA5OCwgCisgICAgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDExMiwgMjM4LCAyMjcsIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMjYsIAorICAgIDIwOSwgOTcsIDE1NywgMjI4LCAxMDEsIDIxNCwgODgsIDgxLCAxNTcsIDIyOCwgMTAxLCAyMTUsIDEzMywgODEsIDE1NywgCisgICAgMjI4LCAxMDEsIDIxMiwgMTQ5LCA4MSwgMTU3LCAyMjgsIDEwMSwgMjE0LCA4OSwgODEsIDIxNSwgMjQxLCAxLCAxNjEsIAorICAgIDIxNSwgMjQxLCAxLCAyMjYsIDIwNywgMjE1LCAyNDEsIDEsIDIzNiwgODksIDIxNSwgMjQxLCAxLCAyMTksIDI1MywgMjE1LCAKKyAgICAyNDEsIDEsIDI0NywgMTkwLCAyMTUsIDI0MSwgMSwgMjQ3LCAzNywgMjE1LCAyNDEsIDEsIDIyNywgMjQ4LCAyMTUsIDI0MSwgCisgICAgMSwgMjE4LCA2MCwgMjE1LCAyNDEsIDEsIDIwNywgMzYsIDIxNSwgMjQxLCAxLCAyMDYsIDEyMiwgMjE1LCAyNDEsIDEsIAorICAgIDI0MiwgNTgsIDIxNSwgMjQxLCAxLCAxODgsIDIxNSwgMjQxLCAxLCAxNzIsIDIxNSwgMjQxLCAxLCAyMTUsIDI0NSwgMjE1LCAKKyAgICAyNDEsIDEsIDI0OSwgMTM2LCAyMTUsIDI0MSwgMSwgMTc4LCAyMTUsIDI0MSwgMSwgMjA1LCAzMiwgMjE1LCAyNDEsIDEsIAorICAgIDIwNSwgMjIsIDIxNSwgMjQxLCAxLCAyMzksIDkzLCAyMTUsIDI0MSwgMSwgMjAxLCAxMTQsIDIxNSwgMjQxLCAxLCAxOTksIAorICAgIDc3LCAyMTUsIDI0MSwgMSwgMTk5LCAxMTQsIDIxNSwgMjQxLCAxLCA0LCA2MiwgMjE1LCAyNDEsIDEsIDE4MywgMjE1LCAKKyAgICAyNDEsIDEsIDIxMywgMjUyLCAyMTUsIDI0MSwgMSwgMTk0LCAyMTUsIDI0MSwgMSwgMjEwLCAxMTQsIDIxNSwgMjQxLCAxLCAKKyAgICAyMTIsIDY0LCAyMTUsIDI0MSwgMSwgMTQ0LCAyMTUsIDI0MSwgMSwgNjIsIDIxNSwgMjQxLCAxLCA3MCwgMjE1LCAyNDEsIDEsIAorICAgIDY2LCAyMTUsIDI0MSwgMSwgNzIsIDIxNSwgMjQxLCAxLCA3NCwgMjE1LCAyNDEsIDEsIDIxNCwgMTU5LCAyMTUsIDI0MSwgMSwgCisgICAgMjAwLCAxODEsIDIxNSwgMjQxLCAxLCAyMzcsIDE5NSwgMjE1LCAyNDEsIDEsIDIzNSwgMjM1LCAyMTUsIDI0MSwgMSwgMjM4LCAKKyAgICAyNTUsIDIxNSwgMjQxLCAyMDgsIDEyLCAxLCAyMDEsIDExNCwgMjE1LCAyNDEsIDIwOCwgMTIsIDEsIDE4MywgMjE1LCAyNDEsIAorICAgIDEsIDIwNCwgMjUzLCAyMTUsIDI0MSwgMSwgMjA0LCAyNDEsIDIxNSwgMjQxLCAxLCAyNDEsIDIyMCwgMjE1LCAyNDEsIDEsIAorICAgIDIxOSwgMjEsIDIxNSwgMjQxLCAxLCAyNTEsIDEwOSwgMTgzLCAyMTUsIDI0MSwgMSwgMjAyLCAxODgsIDIxMCwgMTE0LCAKKyAgICAyMTUsIDI0MSwgMSwgMjAyLCAxODksIDE0NCwgMjE1LCAyNDEsIDEsIDI1MCwgMTcyLCAyMzcsIDE5NSwgMjE1LCAyNDEsIAorICAgIDIwOCwgMTIsIDEsIDIxMywgMjUyLCAyMTUsIDI0MSwgMjA3LCAyMTUsIDEsIDIxMywgMjUyLCAyMTUsIDI0MSwgMSwgMjQ3LCAKKyAgICAxNDksIDIxNSwgMjQxLCAyMDksIDEzOSwgMjM0LCAxMzcsIDgxLCAyMTUsIDI0MSwgNTMsIDIzNCwgMTM3LCA4MSwgMjE1LCAKKyAgICAyNDEsIDEzNCwgMjEwLCAxMDYsIDIxNSwgMjQxLCAxMzQsIDUzLCAyMTAsIDEwNiwgMjExLCAyNDEsIDIsIDI1MSwgMzMsIAorICAgIDIxMSwgMjQxLCAyLCAyMDIsIDIwMywgMjExLCAyNDEsIDEsIDYyLCAyMTEsIDI0MSwgMSwgMjUyLCAxMzgsIDIxMSwgMjQxLCAKKyAgICAxLCA3MCwgMjExLCAyNDEsIDEsIDIyOCwgMTUxLCAyMTEsIDI0MSwgMSwgNjYsIDIxMSwgMjQxLCAxLCAyMDMsIDE4MiwgCisgICAgMjExLCAyNDEsIDEsIDEwOSwgMTQ2LCAyMTEsIDI0MSwgMSwgMTA5LCAyMTIsIDIxNiwgMjExLCAyNDEsIDEsIDEwOSwgMTU2LCAKKyAgICAyMTEsIDI0MSwgMSwgMTA5LCAyMjQsIDEzOSwgMjExLCAyNDEsIDEsIDcyLCAyMTEsIDI0MSwgMSwgMjM4LCAyNTUsIDIxMSwgCisgICAgMjQxLCAxLCAyNTEsIDE3NiwgMjExLCAyNDEsIDEsIDc0LCAyMTEsIDI0MSwgMSwgMjE3LCA2MywgMjExLCAyNDEsIDEsIAorICAgIDI1MCwgMTM5LCAyMTEsIDI0MSwgMSwgMTYxLCAyMTEsIDI0MSwgMSwgMjI2LCAyMDcsIDIxMSwgMjQxLCAxLCAyMzYsIDg5LCAKKyAgICAyMTEsIDI0MSwgMSwgMjM1LCAxOTksIDIxMSwgMjQxLCAxLCAyMTksIDI1MywgMjExLCAyNDEsIDEsIDI0NywgMTkwLCAyMTEsIAorICAgIDI0MSwgMSwgMjQ3LCAzNywgMjExLCAyNDEsIDEsIDIyNywgMjQ4LCAyMTEsIDI0MSwgMSwgMjI3LCAyMTUsIDIxMSwgMjQxLCAKKyAgICAxLCAyMTgsIDYwLCAyMTEsIDI0MSwgMSwgMjA0LCAyNTMsIDIxMSwgMjQxLCAxLCAyMDQsIDI0MSwgMjExLCAyNDEsIDEsIAorICAgIDI0MSwgMjIwLCAyMTEsIDI0MSwgMSwgMjQxLCAyMDQsIDIxMSwgMjQxLCAxLCAyMTksIDIxLCAyMTEsIDI0MSwgMSwgMjA3LCAKKyAgICAzNiwgMjExLCAyNDEsIDEsIDIwNiwgMTIyLCAyMTEsIDI0MSwgMSwgMjQyLCA1OCwgMjExLCAyNDEsIDEsIDI0MSwgMTAwLCAKKyAgICAyMTEsIDI0MSwgMSwgMTg4LCAyMTEsIDI0MSwgMSwgMTcyLCAyMTEsIDI0MSwgMSwgMjE1LCAyNDUsIDIxMSwgMjQxLCAxLCAKKyAgICAyNDksIDEzNiwgMjExLCAyNDEsIDEsIDI0OCwgMjAwLCAyMTEsIDI0MSwgMSwgMTc4LCAyMTEsIDI0MSwgMSwgMTgzLCAyMTEsIAorICAgIDI0MSwgMSwgMjEzLCAyNTIsIDIxMSwgMjQxLCAxLCAxOTQsIDIxMSwgMjQxLCAxLCAyMDMsIDkwLCAyMTEsIDI0MSwgMSwgCisgICAgMjEwLCAxMTQsIDIxMSwgMjQxLCAxLCAyMDgsIDE3OSwgMjExLCAyNDEsIDEsIDIxMiwgNjQsIDIxMSwgMjQxLCAxLCAxNDQsIAorICAgIDIxMSwgMjQxLCAxLCAyMjQsIDEzOCwgMjExLCAyNDEsIDExMSwgMiwgMjM0LCAyMzEsIDIxMSwgMjQxLCAyMiwgMiwgMjUyLCAKKyAgICAxMzgsIDIxMSwgMjQxLCAyMiwgMiwgNzAsIDIxMSwgMjQxLCAyMiwgMiwgMjI4LCAxNTEsIDIxMSwgMjQxLCAyMiwgMiwgNjYsIAorICAgIDIxMSwgMjQxLCAyMiwgMiwgMjAzLCAxODIsIDIxMSwgMjQxLCAyMiwgMiwgMTA5LCAxNDYsIDIxMSwgMjQxLCAyMiwgMiwgCisgICAgMTA5LCAyMTIsIDIxNiwgMjExLCAyNDEsIDIyLCAyLCAxMDksIDE1NiwgMjExLCAyNDEsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAKKyAgICAyMTEsIDI0MSwgMjIsIDIsIDcyLCAyMTEsIDI0MSwgMjIsIDIsIDIzOCwgMjU1LCAyMTEsIDI0MSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMTEsIDI0MSwgMjIsIDIsIDc0LCAyMTEsIDI0MSwgMjIsIDIsIDIxNywgNjMsIDIxMSwgMjQxLCAyMiwgMiwgMjUwLCAKKyAgICAxMzksIDIxMSwgMjQxLCAyLCAyMDIsIDIwOCwgMjExLCAyNDEsIDIsIDI0NywgMTQ5LCAyMTEsIDI0MSwgMjQyLCAxMCwgCisgICAgMjExLCAyNDEsIDUzLCAyNDIsIDEwLCAyMTEsIDI0MSwgMTcsIDE5OSwgODEsIDIxMSwgMjQxLCAxNywgMTAyLCAyMTEsIAorICAgIDI0MSwgMTcsIDEwNSwgMjExLCAyNDEsIDE3LCAxNDcsIDIxMSwgMjQxLCAxNywgMTQ5LCAyMTEsIDI0MSwgMTcsIDE2NCwgCisgICAgMjExLCAyNDEsIDE3LCAxODcsIDIxMSwgMjQxLCAxNywgMjEwLCAxMzUsIDIxMSwgMjQxLCAxNywgMTkyLCAyMTEsIDI0MSwgCisgICAgMTcsIDIxOSwgMTEzLCAzOCwgOTQsIDE3LCAxOTksIDgxLCAzOCwgOTQsIDE3LCAxMDIsIDM4LCA5NCwgMTcsIDEwNSwgMzgsIAorICAgIDk0LCAxNywgMTQ3LCAzOCwgOTQsIDE3LCAxNDksIDM4LCA5NCwgMTcsIDE2NCwgMzgsIDk0LCAxNywgMTg3LCAzOCwgOTQsIAorICAgIDE3LCAyMTAsIDEzNSwgMzgsIDk0LCAxNywgMTkyLCAzOCwgOTQsIDE3LCAyMTksIDExMywgMzgsIDk0LCAxLCA2MiwgMzgsIAorICAgIDk0LCAxLCA2NiwgMzgsIDk0LCAxLCAxNjEsIDM4LCA5NCwgMSwgMTg4LCAzOCwgOTQsIDEsIDE3MiwgMzgsIDk0LCAxLCAKKyAgICAyMTMsIDI1MiwgMzgsIDk0LCAxLCAyMDIsIDIzNCwgMzgsIDk0LCAyLCAyNTAsIDEyMiwgOTQsIDIsIDIwOCwgMjQzLCAyNDcsIAorICAgIDE0OSwgOTQsIDIsIDI0NywgMTUwLCAyMDIsIDIwOCwgOTQsIDIsIDUzLCAyNDcsIDE1MCwgMjAyLCAyMDgsIDk0LCAyLCAKKyAgICAyNDcsIDE1MCwgMTA1LCA5NCwgMiwgMjQ3LCAxNTAsIDE0NywgOTQsIDIsIDI0NywgMTUwLCAyNTAsIDEyMiwgOTQsIDIsIAorICAgIDIxNCwgMTk1LCA5NCwgMjM2LCA1MywgMjM3LCA5MywgOTQsIDI0NywgMTI5LCA5NCwgMjM0LCAxMzAsIDk0LCAyLCAyMDksIAorICAgIDE3NywgOTQsIDIyNywgMjQwLCAyMTcsIDg2LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE5OSwgODEsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxNywgMTAyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDEwNSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxNDcsIAorICAgIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTQ5LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE2NCwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDE3LCAxODcsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMjEwLCAxMzUsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgCisgICAgMTkyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDIxOSwgMTEzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTYxLCAyMjcsIDE0LCAKKyAgICAyMjQsIDIxMSwgMSwgMjI2LCAyMDcsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMzYsIDg5LCAyMjcsIDE0LCAyMjQsIDIxMSwgCisgICAgMSwgMjE5LCAyNTMsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTIsIDY0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjEwLCAKKyAgICAxMTQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxOTksIDExNCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxOCwgNjAsIDIyNywgCisgICAgMTQsIDIyNCwgMjExLCAxLCAyMDcsIDM2LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjMzLCAxMDEsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxLCAxODgsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNzIsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTUsIDI0NSwgCisgICAgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE3OCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDI0MiwgNTgsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxLCAyNDksIDEzNiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxMywgMjUyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgCisgICAgMTgzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTk0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjAxLCAxMTQsIDIyNywgMTQsIAorICAgIDIyNCwgMjExLCAxLCAyMDYsIDEyMiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE0NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIAorICAgIDIwMywgOTAsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyNDcsIDE5MCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDYyLCAyMjcsIAorICAgIDE0LCAyMjQsIDIxMSwgMSwgMjE3LCAxMjEsIDIyNywgMTQsIDIyNCwgMjExLCAxLCA3MCwgMjI3LCAxNCwgMjI0LCAyMTEsIAorICAgIDEsIDIxNywgNjMsIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgMjA0LCAzMSwgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCA3MiwgCisgICAgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCA2NiwgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCAyMzgsIDI1NSwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDIyLCA3NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDE1MCwgMjE1LCAxMjEsIDIyNywgMTQsIDIyNCwgMjExLCAxNTAsIAorICAgIDI0NywgMTY1LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTUwLCAyNDcsIDE2NiwgMjE1LCAxMjEsIDIyNywgMTQsIDIyNCwgMjExLCAKKyAgICAyLCAyNDIsIDE3MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDIsIDIwOSwgMTkwLCAyMTMsIDE1MSwgMSwgMTYxLCAyMTMsIDE1MSwgCisgICAgMSwgMjM2LCA4OSwgMjEzLCAxNTEsIDEsIDIxOSwgMjUzLCAyMTMsIDE1MSwgMSwgMjA3LCAzNiwgMjEzLCAxNTEsIDEsIAorICAgIDI0MiwgNTgsIDIxMywgMTUxLCAxLCAxODgsIDIxMywgMTUxLCAxLCAxNzIsIDIxMywgMTUxLCAxLCAyNDksIDEzNiwgMjEzLCAKKyAgICAxNTEsIDEsIDE3OCwgMjEzLCAxNTEsIDEsIDI0NywgMTkwLCAyMTMsIDE1MSwgMSwgMjI3LCAyNDgsIDIxMywgMTUxLCAxLCAKKyAgICAyMTgsIDYwLCAyMTMsIDE1MSwgMSwgMjEyLCA2NCwgMjEzLCAxNTEsIDEsIDIxMywgMjUyLCAyMTMsIDE1MSwgMSwgMTk0LCAKKyAgICAyMTMsIDE1MSwgMSwgMTgzLCAyMTMsIDE1MSwgMSwgMjAxLCAxMTQsIDIxMywgMTUxLCAxLCAxNDQsIDIxMywgMTUxLCAxLCAKKyAgICAyMjIsIDExMCwgMjEzLCAxNTEsIDEsIDIxOSwgMjMyLCAyMTMsIDE1MSwgMSwgMjIwLCA3NSwgMjEzLCAxNTEsIDEsIDIxOCwgCisgICAgMjcsIDIxMywgMTUxLCAxLCA2MiwgMjEzLCAxNTEsIDIyLCAyLCA3MCwgMjEzLCAxNTEsIDIyLCAyLCA2NiwgMjEzLCAxNTEsIAorICAgIDIyLCAyLCA3MiwgMjEzLCAxNTEsIDIyLCAyLCAyNTEsIDE3NiwgMjEzLCAxNTEsIDIyLCAyLCA3NCwgMjEzLCAxNTEsIDIyLCAKKyAgICAyLCAyNTAsIDEzOSwgMjEzLCAxNTEsIDIyLCAyLCAyMzgsIDY5LCAyMTMsIDE1MSwgMjIsIDIsIDIzOSwgMjcsIDIxMywgCisgICAgMTUxLCAxMTEsIDIsIDIxOSwgMjU1LCAyMTMsIDE1MSwgMTExLCAyLCAyMjAsIDIxNCwgMjEzLCAxNTEsIDExMSwgMiwgMTQ2LCAKKyAgICAyMTMsIDE1MSwgMTExLCAyLCAyMzQsIDI0NywgMjEzLCAxNTEsIDIwMiwgMjA4LCAyMTMsIDE1MSwgMjExLCAxOTMsIDgxLCAKKyAgICAyOSwgMTI5LCAyMDUsIDI0OSwgMjksIDEyOSwgMjA1LCAyNDgsIDI5LCAxMjksIDIwNSwgMjQ2LCAyOSwgMTI5LCAyMDUsIAorICAgIDI1MSwgMjksIDEyOSwgMjEzLCA3MywgMjksIDEyOSwgMjEzLCA1NywgMjksIDEyOSwgMjEzLCA1MiwgMjksIDEyOSwgMjEzLCAKKyAgICA1NCwgMjksIDEyOSwgMjEzLCA3MCwgMjksIDEyOSwgMjEzLCA2MywgMjksIDEyOSwgMjEzLCA1NiwgMjksIDEyOSwgMjEzLCAKKyAgICA3NSwgMjksIDEyOSwgMjEzLCA1OCwgMjksIDEyOSwgMjEzLCA3NywgMjksIDEyOSwgMjEzLCA3NCwgMjksIDEyOSwgMjIxLCAKKyAgICAxOTMsIDI5LCAxMjksIDIyMSwgMTg0LCAyOSwgMTI5LCAyMjEsIDE4NywgMjksIDEyOSwgMjE1LCAxNzUsIDI5LCAxMjksIAorICAgIDIxNSwgMTg2LCAyOSwgMTI5LCAyMTUsIDE4NywgMjksIDEyOSwgMjA4LCAxNjMsIDI5LCAxMjksIDIyOCwgMTY0LCAyOSwgCisgICAgMTI5LCAyMjgsIDE3MSwgMjksIDEyOSwgMjA4LCAxNzQsIDI5LCAxMjksIDIwOCwgMTYxLCAyOSwgMTI5LCAyMTUsIDIyNiwgCisgICAgMjksIDEyOSwgMjM0LCA2MSwgMjksIDEyOSwgMjA4LCAxNTgsIDIyNywgMjMzLCAyLCAyMTYsIDE0MSwgMjI3LCAyMzMsIDIsIAorICAgIDI0NywgNzMsIDIyNywgMjMzLCAyLCAyMjUsIDQ4LCAyMjcsIDIzMywgMiwgMjAxLCAyMSwgMjI3LCAyMzMsIDEsIDYyLCAKKyAgICAyMjcsIDIzMywgMSwgMjMzLCAxOSwgMjI3LCAxOCwgMjI3LCAyMzMsIDEsIDcwLCAyMjcsIDIzMywgMSwgMjI4LCAxNTEsIAorICAgIDIyNywgMjMzLCAxLCA2NiwgMjI3LCAyMzMsIDEsIDIxNiwgMjExLCAyNDcsIDQzLCAyMjcsIDIzMywgMSwgMjE5LCAyNTQsIAorICAgIDIyNSwgNywgMjI3LCAyMzMsIDEsIDIxOSwgMjU0LCAyMjUsIDgsIDIxMywgMjA1LCAyMjcsIDIzMywgMSwgNzIsIDIyNywgCisgICAgMjMzLCAxLCAyNTEsIDE3NiwgMjI3LCAyMzMsIDEsIDc0LCAyMjcsIDIzMywgMSwgMTYxLCAyMjcsIDIzMywgMSwgMjI3LCAKKyAgICAxMDgsIDIxMSwgMjUzLCAyMjcsIDIzMywgMSwgMjI3LCAxMDgsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIzNiwgODksIDIyNywgCisgICAgMjMzLCAxLCAyMzYsIDkwLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMTksIDI1MywgMjI3LCAyMzMsIDEsIDI0NywgMTkwLCAKKyAgICAyMjcsIDIzMywgMSwgMjQ3LCAxOTEsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIyNywgMjQ4LCAyMjcsIDIzMywgMSwgMjE4LCAKKyAgICA2MSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjI3LCAyNDksIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjE4LCA2MCwgMjI3LCAKKyAgICAyMzMsIDEsIDIwNCwgMjUzLCAyMjcsIDIzMywgMSwgMjA0LCAyNTQsIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjQxLCAyMjAsIAorICAgIDIyNywgMjMzLCAxLCAyNDEsIDIyMSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAyMjAsIDE2MiwgMjIxLCAwLCAyMjcsIDIzMywgCisgICAgMSwgMjA3LCAzNiwgMjI3LCAyMzMsIDEsIDIwNywgMzcsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDI0MiwgNTgsIDIyNywgMjMzLCAKKyAgICAxLCAyNDIsIDU5LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDE4OCwgMjI3LCAyMzMsIDEsIDE3MiwgMjI3LCAyMzMsIDEsIAorICAgIDIxNiwgMjExLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyNDksIDEzNiwgMjI3LCAyMzMsIDEsIDI0OSwgMTM3LCAyMjEsIDAsIAorICAgIDIyNywgMjMzLCAxLCAxNzgsIDIyNywgMjMzLCAxLCAxODMsIDIyNywgMjMzLCAxLCAyMTMsIDI1MiwgMjI3LCAyMzMsIDEsIAorICAgIDIxMywgMjUzLCAyNTEsIDE4NiwgMjI3LCAyMzMsIDEsIDE5NCwgMjI3LCAyMzMsIDEsIDIwMSwgMTE0LCAyMjcsIDIzMywgMSwgCisgICAgMjEyLCA2NSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjEyLCA2NSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAyMTIsIDY0LCAKKyAgICAyMjcsIDIzMywgMSwgMTQ0LCAyMjcsIDIzMywgMiwgMjQ3LCA3NCwgMjA2LCAxNjksIDIyNywgMjMzLCAyMiwgMiwgMjA2LCAKKyAgICAyMjgsIDIyNywgMjMzLCAyMiwgMiwgMjA1LCAxNzksIDIyNywgMjMzLCAyMiwgMiwgMjAwLCAyMTAsIDIyNywgMjMzLCAyMiwgCisgICAgMiwgMjAwLCAyMTEsIDIyMiwgNTEsIDIyNywgMjMzLCAyMiwgMiwgMjA3LCAyMzgsIDIyNywgMjMzLCAyMiwgMiwgMjA3LCAKKyAgICAyMzksIDIyMiwgMzksIDIyNywgMjMzLCAyMiwgMiwgMjA2LCAyNDksIDIyNywgMjMzLCAyMiwgMiwgMjQxLCA2LCAyMjAsIAorICAgIDI1NSwgMjI3LCAyMzMsIDIyLCAyLCAyMTYsIDMwLCAyMjcsIDIzMywgMTExLCAyLCAyMjYsIDIzNiwgMjI3LCAyMzMsIDExMSwgCisgICAgMiwgMjE2LCA0NCwgMjI3LCAyMzMsIDExMSwgMiwgMjQ3LCAxNzUsIDIyNywgMjMzLCAyMTYsIDE1NCwgMjI3LCAyMzMsIDQ5LCAKKyAgICAyMTMsIDEyNSwgMjI3LCAyMzMsIDUxLCAyMTMsIDEyNSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyNTEsIDc4LCAyMjcsIDIzMywgCisgICAgMjE2LCAyMDAsIDIyMiwgMjIwLCAyMjcsIDIzMywgMjE2LCAyMDAsIDIyNCwgMjksIDIyNywgMjMzLCAyMTYsIDIwMCwgMjAxLCAKKyAgICAxNCwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMTYsIDE1NSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMjQsIDE2OCwgMjI3LCAyMzMsIAorICAgIDIxNiwgMjAwLCAyMjQsIDIzLCAyMjcsIDIzMywgMjE2LCAyMDAsIDI1MSwgMjI5LCAyMjcsIDIzMywgMjE2LCAyMDAsIDI1MSwgCisgICAgMjMwLCAyNTEsIDIyOSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMTUsIDE0NCwgMjI3LCAyMzMsIDIwNCwgMTg1LCAyMTYsIAorICAgIDIwMCwgMjE1LCAxNDQsIDIyNywgMjMzLCAyMTYsIDE1MCwgMjI3LCAyMzMsIDE3LCAxOTksIDgxLCAyMjcsIDIzMywgMTcsIAorICAgIDEwMiwgMjI3LCAyMzMsIDE3LCAxMDUsIDIyNywgMjMzLCAxNywgMTQ3LCAyMjcsIDIzMywgMTcsIDE0OSwgMjI3LCAyMzMsIAorICAgIDE3LCAxNjQsIDIyNywgMjMzLCAxNywgMTg3LCAyMjcsIDIzMywgMTcsIDIxMCwgMTM1LCAyMjcsIDIzMywgMTcsIDE5MiwgCisgICAgMjI3LCAyMzMsIDE3LCAyMTksIDExMywgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMDUsIDIxNSwgMjA0LCAyMDAsIDIyNywgMjMzLCAKKyAgICAyMTYsIDIwMCwgMjI4LCAyMiwgNzEsIDEsIDIxMCwgOTAsIDIzNSwgMTk5LCA3MSwgMSwgMjEwLCA5MCwgMjQ3LCAzNywgNzEsIAorICAgIDEsIDIxMCwgOTAsIDIyNywgMjE1LCA3MSwgMSwgMjEwLCA5MCwgMjE5LCAyMSwgNzEsIDEsIDIxMCwgOTAsIDI0OCwgMjAwLCAKKyAgICA3MSwgMiwgMjEwLCA5MCwgMjExLCAyMzksIDcxLCA2NywgMSwgMjEwLCA5MCwgMjEzLCAxNjgsIDcxLCAxLCA0NiwgMjI1LCAKKyAgICAxNDgsIDIxOCwgNjAsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIzNywgMTk1LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMzYsIAorICAgIDg5LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMzUsIDE5OSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjI3LCAyNDgsIDcxLCAxLCAKKyAgICA0NiwgMjI1LCAxNDgsIDIyNywgMjE1LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDEsIDIyMCwgNzEsIDEsIDQ2LCAyMjUsIAorICAgIDE0OCwgMjQxLCAyMDQsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIxOSwgMjEsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxOTksIAorICAgIDgxLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTAyLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTA1LCA3MSwgNDYsIDIyNSwgCisgICAgMTQ4LCAxNywgMTQ3LCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTQ5LCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTY0LCA3MSwgCisgICAgNDYsIDIyNSwgMTQ4LCAxNywgMTg3LCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMjEwLCAxMzUsIDcxLCA0NiwgMjI1LCAxNDgsIAorICAgIDE3LCAxOTIsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAyMTksIDExMywgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjI0LCAxMzgsIAorICAgIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0MiwgNTgsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0MSwgMTAwLCA3MSwgMSwgNDYsIAorICAgIDIyNSwgMTQ4LCAyNDksIDEzNiwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjQ4LCAyMDAsIDI0NywgMzAsIDEsIDYyLCAyNDcsIAorICAgIDMwLCAxLCA3MCwgMjQ3LCAzMCwgMSwgNjYsIDI0NywgMzAsIDEsIDcyLCAyNDcsIDMwLCAxLCAyNTEsIDE3NiwgMjQ3LCAzMCwgCisgICAgMSwgNzQsIDI0NywgMzAsIDEsIDE2MSwgMjQ3LCAzMCwgMSwgMjI2LCAyMDcsIDI0NywgMzAsIDEsIDIzNiwgODksIDI0NywgCisgICAgMzAsIDEsIDIzNSwgMTk5LCAyNDcsIDMwLCAxLCAyMTksIDE2MiwgMjQ3LCAzMCwgMSwgMjE5LCAyNTMsIDI0NywgMzAsIDEsIAorICAgIDI0NywgMzcsIDI0NywgMzAsIDEsIDI0NiwgMjM4LCAyNDcsIDMwLCAxLCAyMjcsIDI0OCwgMjQ3LCAzMCwgMSwgMjI3LCAKKyAgICAyMTUsIDI0NywgMzAsIDEsIDIxOSwgMTUyLCAyNDcsIDMwLCAxLCAyMTksIDE1NCwgMjQ3LCAzMCwgMSwgMjE5LCAxNTMsIAorICAgIDI0NywgMzAsIDEsIDIwNywgMzYsIDI0NywgMzAsIDEsIDIwNiwgMTIyLCAyNDcsIDMwLCAxLCAyNDIsIDU4LCAyNDcsIDMwLCAKKyAgICAxLCAyNDEsIDEwMCwgMjQ3LCAzMCwgMSwgMjE4LCAxMDIsIDI0NywgMzAsIDEsIDE4OCwgMjQ3LCAzMCwgMSwgMjQxLCAyMjAsIAorICAgIDI0NywgMzAsIDEsIDE3MiwgMjQ3LCAzMCwgMSwgMjE1LCA0NywgMjQ3LCAzMCwgMSwgMjE1LCAyNDUsIDI0NywgMzAsIDEsIAorICAgIDI0OSwgMTM2LCAyNDcsIDMwLCAxLCAyNDgsIDIwMCwgMjQ3LCAzMCwgMSwgMjIxLCAzMywgMjQ3LCAzMCwgMSwgMTc4LCAKKyAgICAyNDcsIDMwLCAxLCAyNDksIDQ0LCAyNDcsIDMwLCAxLCAxODMsIDI0NywgMzAsIDEsIDIxMywgMjUyLCAyNDcsIDMwLCAxLCAKKyAgICAxOTQsIDI0NywgMzAsIDEsIDIwMywgOTAsIDI0NywgMzAsIDEsIDIwOCwgMTc5LCAyNDcsIDMwLCAxLCAyMTIsIDY0LCAyNDcsIAorICAgIDMwLCAxLCAxNDQsIDI0NywgMzAsIDIyLCAyLCAyNTIsIDEzOCwgMjQ3LCAzMCwgMjIsIDIsIDcwLCAyNDcsIDMwLCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDI0NywgMzAsIDIyLCAyLCAyMzgsIDIzNCwgMjQ3LCAzMCwgMjIsIDIsIDY2LCAyNDcsIDMwLCAyMiwgMiwgCisgICAgMjE3LCAxMjEsIDI0NywgMzAsIDIyLCAyLCA3NCwgMjQ3LCAzMCwgMjIsIDIsIDI1MSwgMTc2LCAyNDcsIDMwLCAyMiwgMiwgCisgICAgMjUwLCAxMzksIDI0NywgMzAsIDIyLCAyLCAyMDQsIDMxLCAyNDcsIDMwLCAxMTEsIDIsIDE4MywgMjQ3LCAzMCwgMTExLCAyLCAKKyAgICAyMTMsIDI1MiwgMjQ3LCAzMCwgMTExLCAyLCAxOTQsIDI0NywgMzAsIDExMSwgMiwgMjAxLCAxMTQsIDI0NywgMzAsIDEsIAorICAgIDQ3LCAyMjcsIDExOCwgMjQ3LCAzMCwgMSwgNDcsIDIzNiwgMTU2LCAyNDcsIDMwLCAxLCA0NywgMjE5LCAyNTUsIDI0NywgCisgICAgMzAsIDExMSwgMiwgNDcsIDIxOSwgMjU1LCAyNDcsIDMwLCAxLCA0NywgMjQ3LCAzOCwgMjQ3LCAzMCwgMSwgNDcsIDIwNywgCisgICAgODMsIDI0NywgMzAsIDEsIDQ3LCAyMjAsIDIxNCwgMjQ3LCAzMCwgMSwgNDcsIDIxNiwgMjI2LCAyNDcsIDMwLCAxLCA0NywgCisgICAgMjAwLCAxMjMsIDI0NywgMzAsIDEsIDQ3LCAxNDYsIDI0NywgMzAsIDEsIDQ3LCAxNTYsIDI0NywgMzAsIDEsIDQ3LCAyMDgsIAorICAgIDE4MiwgMjQ3LCAzMCwgMTExLCAyLCA0NywgMjIzLCAyNDMsIDI0NywgMzAsIDExMSwgMiwgNDcsIDIzNCwgMjQ3LCAyNDcsIAorICAgIDMwLCAxNywgMTk5LCA4MSwgMjQ3LCAzMCwgMTcsIDEwMiwgMjQ3LCAzMCwgMTcsIDEwNSwgMjQ3LCAzMCwgMTcsIDE0NywgCisgICAgMjQ3LCAzMCwgMTcsIDE0OSwgMjQ3LCAzMCwgMTcsIDE2NCwgMjQ3LCAzMCwgMTcsIDE4NywgMjQ3LCAzMCwgMTcsIDIxMCwgCisgICAgMTM1LCAyNDcsIDMwLCAxNywgMTkyLCAyNDcsIDMwLCAxNywgMjE5LCAxMTMsIDI0NywgMzAsIDIxNCwgMjEyLCAyMDgsIAorICAgIDIxNywgMjQ3LCAzMCwgMjE0LCAyMTIsIDI0MiwgMTAsIDI0NywgMzAsIDIxNCwgMjEyLCA1MywgMjQyLCAxMCwgMjQ3LCAzMCwgCisgICAgMjE0LCAyMTIsIDIwNSwgODMsIDI0MiwgMTAsIDcxLCAxLCAyMjYsIDIwMCwgMjM2LCA4OSwgNzEsIDEsIDIyNiwgMjAwLCAKKyAgICAyNDcsIDE5MCwgNzEsIDEsIDIyNiwgMjAwLCAyNDcsIDM3LCA3MSwgMSwgMjI2LCAyMDAsIDIyNywgMjQ4LCA3MSwgMSwgCisgICAgMjI2LCAyMDAsIDIyNywgMjE1LCA3MSwgMSwgMjI2LCAyMDAsIDIxOCwgNjAsIDcxLCAxLCAyMjYsIDIwMCwgMjA0LCAyNTMsIAorICAgIDcxLCAxLCAyMjYsIDIwMCwgMjA0LCAyNDEsIDcxLCAxLCAyMjYsIDIwMCwgMjQxLCAyMjAsIDcxLCAxLCAyMjYsIDIwMCwgCisgICAgMjQxLCAyMDQsIDcxLCAxLCAyMjYsIDIwMCwgMjQxLCAxMDAsIDcxLCAxLCAyMjYsIDIwMCwgMTg4LCA3MSwgMSwgMjI2LCAKKyAgICAyMDAsIDIxMiwgNjQsIDcxLCAxLCAyMjYsIDIwMCwgMTQ0LCA3MSwgMSwgMjI2LCAyMDAsIDIzNCwgODQsIDcxLCAxLCAyMjYsIAorICAgIDIwMCwgMjM3LCAxOTUsIDcxLCA2NywgMSwgMjI2LCAyMDAsIDIxMywgMTY4LCA3MSwgMSwgMjI2LCAyMDAsIDIwMCwgMTgxLCAKKyAgICA3MSwgMSwgMjI2LCAyMDAsIDE5OSwgMTE0LCA3MSwgMSwgMjI2LCAyMDAsIDIxMywgMjUyLCA3MSwgMjI0LCA5NywgMjI2LCAKKyAgICAyMDAsIDIxNywgMTQzLCA3MSwgMjI0LCA5NywgMjI2LCAyMDAsIDIxNCwgMTEwLCA3MSwgMjI0LCA5NywgMjI2LCAyMDAsIAorICAgIDIzNCwgNiwgNzEsIDE2LCAyNTEsIDE2MywgMjM4LCA0MiwgNzEsIDE2LCAyNTEsIDE2MywgMTAyLCA3MSwgMTYsIDI1MSwgCisgICAgMTYzLCAxMDUsIDcxLCAxLCAyNTEsIDE2MywgMjEzLCAyNTIsIDcxLCAyLCAyMTYsIDEzNywgMjI3LCA0NCwgMjA1LCAxNzQsIAorICAgIDcxLCAyLCA0NiwgMjI1LCAxNDgsIDIwNSwgMTcyLCA3MSwgMiwgNDYsIDIyNSwgMTQ4LCAyMDUsIDE2OSwgNzEsIDEsIDIwOSwgCisgICAgMTk4LCAyMTYsIDE4MSwgMjQ3LCAzNywgNzEsIDEsIDIwOSwgMTk4LCAyMTYsIDE4MSwgMjEwLCAxMTQsIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCAyMjYsIDg4LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjI2LCA4OCwgNDYsIDIwMiwgMjI0LCAxLCAKKyAgICAxMjgsIDIyNiwgMTc4LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjI2LCAxNzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMjYsIAorICAgIDE4NywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyNiwgMTg3LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjM1LCAxMTYsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMSwgMTIyLCAyMzUsIDExNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIxOSwgMTc4LCA0NiwgMjAyLCAyMjQsIAorICAgIDEsIDEyMiwgMjE5LCAxNzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyNDYsIDkxLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgCisgICAgMjQ2LCA5MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDI0NiwgMjEwLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjQ2LCAyMTAsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMDksIDI5LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjA5LCAyOSwgNDYsIDIwMiwgCisgICAgMjI0LCAxLCAxMjgsIDIxOCwgMjYsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMTgsIDI2LCA0NiwgMjAyLCAyMjQsIDEsIAorICAgIDEyOCwgMjQwLCAyMTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyNDAsIDIxMSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDEzOCwgCisgICAgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDEzOCwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIwNiwgNjEsIDQ2LCAyMDIsIDIyNCwgCisgICAgMSwgMTIyLCAyMDYsIDYxLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjE4LCAyNDEsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAKKyAgICAyMTgsIDI0MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDI0OCwgMTI0LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjQ4LCAxMjQsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTUsIDEwNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIxNSwgMTA2LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgMjE1LCAyMTcsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMTUsIDIxNywgNDYsIDIwMiwgMjI0LCAxLCAKKyAgICAxMjgsIDIzNywgMTMsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMzcsIDEzLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjIxLCAKKyAgICAxMzYsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMjEsIDEzNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDE5OSwgMjQ1LCA0NiwgCisgICAgMjAyLCAyMjQsIDEsIDEyMiwgMTk5LCAyNDUsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTMsIDEsIDQ2LCAyMDIsIDIyNCwgCisgICAgMSwgMTIyLCAyMTMsIDEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMjQsIDExMCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIAorICAgIDIyNCwgMTEwLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjAyLCAxOTMsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMDIsIDE5MywgCisgICAgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIzMywgMjA3LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjMzLCAyMDcsIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCA3NCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDc0LCA0NiwgMjAyLCAyMjQsIDIyMiwgMTk5LCAyMjcsIAorICAgIDY0LCA0NiwgMjAyLCAyMjQsIDIyLCAyNTIsIDEzOCwgNDYsIDIwMiwgMjI0LCAyMiwgNzAsIDQ2LCAyMDIsIDIyNCwgMjIsIAorICAgIDIwNCwgMzEsIDQ2LCAyMDIsIDIyNCwgMjIsIDY2LCA0NiwgMjAyLCAyMjQsIDIyLCA3MiwgNDYsIDIwMiwgMjI0LCAyMiwgCisgICAgNzQsIDQ2LCAyMDIsIDIyNCwgMjIyLCAxOTksIDIyNiwgMTgxLCA0NiwgMjAyLCAyMjQsIDIyLCAyMzIsIDI0MCwgNDYsIAorICAgIDIwMiwgMjI0LCAyMiwgMjA0LCAzMCwgNDYsIDIwMiwgMjI0LCAyMiwgMjA0LCA0NiwgNDYsIDIwMiwgMjI0LCAyMiwgMjUwLCAKKyAgICAxMzcsIDQ2LCAyMDIsIDIyNCwgMjIsIDI1MCwgMTEyLCA0NiwgMjAyLCAyMjQsIDIyLCAyNTEsIDg1LCA0NiwgMjAyLCAyMjQsIAorICAgIDIyLCAyNTEsIDEwMSwgNDYsIDIwMiwgMjI0LCAxNTAsIDIyMiwgMTk5LCAyMzgsIDIxNiwgNDYsIDIwMiwgMjI0LCAxNTAsIAorICAgIDIyMiwgMTk5LCAyMTgsIDEwMSwgNDYsIDIwMiwgMjI0LCAxNTAsIDIyMiwgMTk5LCAyMDYsIDYxLCA0NiwgMjAyLCAyMjQsIAorICAgIDE1MCwgMjIyLCAxOTksIDIwOSwgMTIsIDQ2LCAyMDIsIDIyNCwgMTYsIDIyNiwgNzEsIDQ2LCAyMDIsIDIyNCwgMTYsIDIxOCwgCisgICAgMTAxLCA0NiwgMjAyLCAyMjQsIDE2LCAyMTIsIDIzLCA0NiwgMjAyLCAyMjQsIDE2LCAyMzMsIDIwOCwgMjMzLCAyMDIsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMTYsIDIyNiwgODEsIDIyNiwgODAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCA3MiwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDEsIDc0LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQ3LCAzNywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxOCwgNjAsIAorICAgIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDQsIDI1MywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNCwgMjQxLCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMSwgMjQxLCAyMjAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDEsIDIwNCwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDEsIDIxOSwgMjEsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTAsIDExNCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwOCwgCisgICAgMTc5LCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIyOCwgMTUxLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwMywgCisgICAgMTgyLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDI1MiwgMTAyLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDI1MCwgCisgICAgMTM5LCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDI1MiwgOTUsIDIyMiwgNTgsIDIyMiwgMTE3LCAyNDYsIDI1MywgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDI1MSwgMTgyLCAyMjYsIDE3MCwgMjIyLCA1OCwgMjIyLCAxMTcsIDI1MSwgNjIsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCA1LCAyMTMsIDEzMCwgODEsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMDAsIDIzOCwgMjEzLCAxMzAsIDgxLCAKKyAgICAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwMiwgMjAzLCAyMjIsIDU4LCAyMjIsIDExNywgMjAyLCAyMDgsIDM0LCA1LCAKKyAgICAyMDQsIDIzNCwgMzQsIDUsIDIwNCwgMjM3LCAzNCwgNSwgMjA0LCAyNDAsIDM0LCA1LCAyMDQsIDIzOCwgMzQsIDUsIDIwNCwgCisgICAgMjM5LCAzNCwgNSwgMjA0LCAyMzYsIDM0LCA1LCAyNDEsIDE5OCwgMzQsIDUsIDI0MSwgMjAwLCAzNCwgNSwgMjQxLCAyMDMsIAorICAgIDM0LCA1LCAyNDEsIDIwMSwgMzQsIDUsIDI0MSwgMjAyLCAzNCwgNSwgMjQxLCAxOTksIDM0LCA1LCAyMzksIDgwLCAzNCwgNSwgCisgICAgMjM5LCA4NCwgMzQsIDUsIDIzOSwgOTIsIDM0LCA1LCAyMzksIDg5LCAzNCwgNSwgMjM5LCA5MCwgMzQsIDUsIDIzOSwgODEsIAorICAgIDM0LCA1LCAyNDcsIDkwLCAzNCwgNSwgMjQ3LCA4NCwgMzQsIDUsIDI0NywgODYsIDM0LCA1LCAyNDcsIDg5LCAzNCwgNSwgCisgICAgMjQ3LCA4NywgMzQsIDUsIDI0NywgODgsIDM0LCA1LCAyNDcsIDg1LCAzNCwgNSwgMjQ5LCA0NCwgMzQsIDUsIDI0OSwgMjMsIAorICAgIDM0LCA1LCAyNDksIDM1LCAzNCwgNSwgMjQ5LCA0MywgMzQsIDUsIDI0OSwgMzgsIDM0LCA1LCAyNDksIDM5LCAzNCwgNSwgCisgICAgMjQ5LCAyNywgOCwgNCwgMSwgMjQ5LCA3MSwgMjUxLCAxMTIsIDgsIDQsIDEsIDM1LCAyMTMsIDEwMywgOCwgNCwgMSwgMjQ4LCAKKyAgICAxNDAsIDcyLCA4LCA0LCAxLCAyNDksIDcxLCA3MiwgOCwgNCwgMSwgMTk3LCAzLCAyMzcsIDI2LCA4LCA0LCAxLCAyMjQsIAorICAgIDI0OSwgMjM4LCA1LCA4LCA0LCAxLCAxMzUsIDIzNiwgMTU3LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDIyOCwgNTAsIDIyNSwgNDcsIDIxMiwgMTIyLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgNTMsIDEwMSwgMjA1LCAyNDAsIDgsIAorICAgIDQsIDEsIDIyNSwgMTkzLCAzLCAxMDEsIDIxMywgMjYsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgCisgICAgMjIwLCAyMTUsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyMzgsIDE2NiwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDI0OCwgMTQwLCAKKyAgICA3NCwgOCwgNCwgMSwgMjQ4LCAxNDAsIDE2MywgMywgOTcsIDgsIDQsIDEsIDE3NiwgMTYzLCAzLCA5NywgOCwgNCwgMSwgCisgICAgMjI4LCA1MCwgMjE3LCAxMjEsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMTcsIDEyMiwgMywgOTcsIDgsIDQsIDEsIDIwNCwgMTg1LCAKKyAgICAyMTcsIDEyMiwgMywgMjMzLCAxNzcsIDk3LCA4LCA0LCAxLCAyMDQsIDE4NSwgMTYzLCAyMTcsIDQ5LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMTYzLCAyMTcsIDUwLCAzLCA5NywgOCwgNCwgMSwgMjA4LCA4MSwgMTQ2LCA4LCAxLCA0LCA2LCAyMTQsIDMzLCAzLCAKKyAgICA1MSwgMjI1LCAxNiwgOCwgNCwgMSwgMjE0LCAzMywgMjAxLCAzLCAyMzQsIDE3NywgOCwgNCwgMSwgNTMsIDE0NiwgOCwgNCwgCisgICAgMSwgMjE0LCAzMywgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDUzLCAyMTQsIDMzLCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMTM1LCAKKyAgICAxNDYsIDgsIDQsIDEsIDEzNSwgMjE0LCAzMywgMywgMjEzLCAyNiwgOCwgNCwgMSwgMjQ5LCA2MiwgMjM4LCA5NCwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyMDksIDI1MCwgNTEsIDIyNSwgMTYsIDgsIDQsIDEsIDEwOCwgMjQ5LCA3NywgMywgMjA5LCAyNTAsIDUxLCAKKyAgICAyMjUsIDE2LCA4LCA0LCAxLCAyMDQsIDIzLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjA0LCAyMywgOCwgNCwgMSwgMTA4LCAzLCAKKyAgICA0OSwgMTE3LCA4LCA0LCAxLCAyNDYsIDIzNiwgOCwgNCwgMSwgMjQ2LCAyMzcsIDMsIDEyOCwgNTEsIDIxMywgMjYsIDgsIDQsIAorICAgIDEsIDI0NiwgMjM3LCAzLCAxMjgsIDQ5LCAyMTAsIDE0OSwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDEyOCwgNTEsIDIxMywgCisgICAgMjYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxNjgsIDQ5LCAyMjUsIDE2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTY4LCAKKyAgICA0OSwgMjI1LCAxNywgMjYsIDEyOCwgNTEsIDIxMywgMjYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxNjgsIDQ5LCAyMjUsIAorICAgIDE3LCAzLCAyMTAsIDE0OSwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIwOSwgMjUwLCA1MSwgMjI1LCAxNiwgNjcsIDI0OCwgCisgICAgNTgsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDY3LCAxLCA0LCAyMzQsIDEwMywgNjcsIDEsIDQsIDIyNSwgMTkzLCAzLCAyMjgsIAorICAgIDUwLCAyMjUsIDQ3LCAyMTIsIDEyMiwgNjcsIDEsIDQsIDIyNSwgMTkzLCAzLCAxMDEsIDIwNSwgMjQwLCA2NywgMSwgNCwgCisgICAgMTA4LCAzLCA0OSwgMTE3LCA4LCA0LCAxLCAyMTIsIDM5LCAyMDAsIDY1LCA4LCA0LCAxLCAyMjgsIDM5LCA3MiwgOCwgNCwgCisgICAgMSwgMTc2LCAyMTcsIDEyMSwgOCwgNCwgMSwgMjAzLCAyMzIsIDgsIDQsIDEsIDIyOCwgNTAsIDI1MSwgMTEyLCAzMSwgMSwgCisgICAgNCwgNiwgMjE3LCA4MywgOTEsIDQsIDEsIDYyLCA5MSwgNCwgMSwgNzIsIDkxLCA0LCAxLCA3MCwgOTEsIDQsIDEsIDc0LCAKKyAgICA5MSwgNCwgMSwgNjYsIDkxLCA0LCAxLCAyMDMsIDE2OCwgOTEsIDQsIDEsIDIzNiwgODksIDkxLCA0LCAxLCAxNjEsIDkxLCAKKyAgICA0LCAxLCAyMzYsIDE1LCA5MSwgNCwgMSwgMjM1LCAxNjEsIDkxLCA0LCAxLCAyMzUsIDExNiwgOTEsIDQsIDEsIDIzNSwgNTAsIAorICAgIDkxLCA0LCAxLCAyMzUsIDEyLCA5MSwgNCwgMSwgMTQ0LCA5MSwgNCwgMSwgMjM0LCAxMzksIDkxLCA0LCAxLCAyMzQsIDc1LCAKKyAgICA5MSwgNCwgMSwgMjMzLCAyMDcsIDkxLCA0LCAxLCAyMzMsIDk3LCA5MSwgNCwgMSwgMjMzLCA2OSwgOTEsIDQsIDEsIDE5NCwgCisgICAgOTEsIDQsIDEsIDIyNSwgNDAsIDkxLCA0LCAxLCAyMjQsIDIxMCwgOTEsIDQsIDEsIDIyNCwgMTEwLCA5MSwgNCwgMSwgMjI0LCAKKyAgICA0MiwgOTEsIDQsIDEsIDIyNCwgMTEsIDkxLCA0LCAxLCAxNzgsIDkxLCA0LCAxLCAyMjIsIDc2LCA5MSwgNCwgMSwgMjIxLCAKKyAgICAyMTEsIDkxLCA0LCAxLCAyMjEsIDEzNiwgOTEsIDQsIDEsIDIyMSwgNDEsIDkxLCA0LCAxLCAxODgsIDkxLCA0LCAxLCAyMzMsIAorICAgIDIzMSwgOTEsIDQsIDEsIDIyMCwgMTQ0LCA5MSwgNCwgMSwgMjIwLCAzNCwgOTEsIDQsIDEsIDIxOSwgMTUwLCA5MSwgNCwgMSwgCisgICAgMjE4LCAyNDEsIDkxLCA0LCAxLCAyMTgsIDEzMywgOTEsIDQsIDEsIDIxOCwgNzEsIDkxLCA0LCAxLCAyMTQsIDk2LCA5MSwgCisgICAgNCwgMSwgMjE0LCA4MiwgOTEsIDQsIDEsIDIxNCwgNzUsIDkxLCA0LCAxLCAyMTQsIDY2LCA5MSwgNCwgMSwgMjE0LCA1NSwgCisgICAgOTEsIDQsIDEsIDIxNCwgNTMsIDkxLCA0LCAxLCAyMTIsIDY0LCA5MSwgNCwgMSwgMjEyLCAxMjIsIDkxLCA0LCAxLCAyMTEsIAorICAgIDIwMiwgOTEsIDQsIDEsIDIwOSwgMTgyLCA5MSwgNCwgMSwgMjA5LCAyOSwgOTEsIDQsIDEsIDIwOCwgMjQsIDkxLCA0LCAxLCAKKyAgICAyMDcsIDE5MSwgOTEsIDQsIDEsIDI0MiwgNTgsIDkxLCA0LCAxLCAyMDcsIDM2LCA5MSwgNCwgMSwgMjQxLCAxNzUsIDkxLCAKKyAgICA0LCAxLCAyMDYsIDIwMSwgOTEsIDQsIDEsIDI0MSwgNzYsIDkxLCA0LCAxLCAyMDYsIDE1LCA5MSwgNCwgMSwgMjQwLCAyMTEsIAorICAgIDkxLCA0LCAxLCAyMzksIDEzNywgOTEsIDQsIDEsIDIzOSwgMTA3LCA5MSwgNCwgMSwgMjQwLCAyMjIsIDkxLCA0LCAxLCAKKyAgICAyMDUsIDIwMywgOTEsIDQsIDEsIDIwNSwgMjAyLCA5MSwgNCwgMSwgMjA1LCAxOTEsIDkxLCA0LCAxLCAyMDUsIDE5MCwgOTEsIAorICAgIDQsIDEsIDIwNSwgMTg5LCA5MSwgNCwgMSwgMjA1LCAxODgsIDkxLCA0LCAxLCAyMDUsIDMyLCA5MSwgNCwgMSwgMjA1LCAyNiwgCisgICAgOTEsIDQsIDEsIDIwNSwgMTEsIDkxLCA0LCAxLCAyMDUsIDksIDkxLCA0LCAxLCAyMDUsIDUsIDkxLCA0LCAxLCAyMDUsIDQsIAorICAgIDkxLCA0LCAxLCAyMDEsIDExNCwgOTEsIDQsIDEsIDIwMSwgNjQsIDkxLCA0LCAxLCAyMDEsIDMxLCA5MSwgNCwgMSwgMjAxLCAKKyAgICAwLCA5MSwgNCwgMSwgMjAwLCAyMTYsIDkxLCA0LCAxLCAyMDAsIDIwMywgOTEsIDQsIDEsIDE4MywgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDEsIDIyNiwgNzgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTIsIDIzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgCisgICAgMjI1LCAxNDksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjEsIDE0NywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDE3MiwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDE4OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0NiwgMjI4LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjA1LCAyNDIsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjYsIDE3MywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxOSwgCisgICAgMTY4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA2LCA1MywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwMSwgMTA4LCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMSwgMjAwLCA3NSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzMywgODksIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAxLCAyMDQsIDUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCA3MCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxNSwgMjM5LCAKKyAgICAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjUwLCAxNTAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzUsIDEwOSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDEsIDIyNywgMjEzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjEzLCAyMjksIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyNDksIDEzNiwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyNywgMTk4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQxLCAKKyAgICAzMywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzNSwgMTY4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQxLCA3OCwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDI0OCwgMTk4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjI2LCA3OSwgMjI0LCA3OSwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDIyNSwgMTUwLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjIxLCAxNDgsIDIyNCwgCisgICAgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTYsIDIxMSwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyMCwgCisgICAgMTYyLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA1LCAyNDMsIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyMTksIDE2OSwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzMywgMTksIDIyNCwgNzksIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAyMiwgMiwgMjE3LCA3NiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMjgsIDExNSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDIyLCAyLCAyNTEsIDgzLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwMCwgNDAsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAyMiwgMiwgMjA5LCAyLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwNCwgMiwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDIyLCAyLCAyNDYsIDI1MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMTgsIDg2LCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMjQ2LCAyNTIsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMjQsIDI2LCAyMjgsIDEsIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAyNTEsIDIsIDIyOCwgMSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxOTksIDgxLCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIAorICAgIDEwMiwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxMDUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTQ3LCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMTcsIDE0OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxNjQsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgCisgICAgMTg3LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDIxMCwgMTM1LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDE5MiwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDE3LCAyMTksIDExMywgMjksIDE4MSwgMjE3LCAyMjMsIDI5LCAxODEsIDIxNywgMjI4LCAyOSwgCisgICAgMTgxLCAxOTksIDI0NCwgMjksIDE4MSwgMTk5LCAyNDMsIDI5LCAxODEsIDE5OSwgMjQyLCAyOSwgMTgxLCAyMDQsIDk2LCAKKyAgICAyOSwgMTgxLCAyMDQsIDEwMCwgMjksIDE4MSwgMTk5LCAyMDksIDI5LCAxODEsIDE5OSwgMjA1LCAyOSwgMTgxLCAyMzgsIAorICAgIDY4LCAyOSwgMTgxLCAyMzgsIDY2LCAyOSwgMTgxLCAyMzgsIDY3LCAyOSwgMTgxLCAyMzgsIDY0LCAyOSwgMTgxLCAyMzMsIAorICAgIDksIDI5LCAxODEsIDIzMywgOCwgMjksIDE4MSwgMjMzLCA2LCAyOSwgMTgxLCAyMzMsIDcsIDI5LCAxODEsIDIzMywgMTIsIAorICAgIDI5LCAxODEsIDIzMywgNSwgMjksIDE4MSwgMjMzLCA0LCAyOSwgMTgxLCAyMzMsIDE0LCAyOSwgMTgxLCAyNTAsIDI0NCwgCisgICAgMjksIDE4MSwgMjUwLCAyNDMsIDI5LCAxMTAsIDIxOSwgMTM2LCAyOSwgMTEwLCAyMTksIDE0MiwgMjksIDExMCwgMjA4LCAKKyAgICAxNjAsIDI5LCAxMTAsIDIwOCwgMTU5LCAyOSwgMTEwLCAyMDUsIDI0OCwgMjksIDExMCwgMjA1LCAyNDYsIDI5LCAxMTAsIAorICAgIDIwNSwgMjQ1LCAyOSwgMTEwLCAyMDUsIDI1MSwgMjksIDExMCwgMjA1LCAyNTIsIDI5LCAxMTAsIDIwNSwgMjQ0LCAyOSwgCisgICAgMTEwLCAyMTMsIDU3LCAyOSwgMTEwLCAyMTMsIDcyLCAyOSwgMTEwLCAyMDgsIDE2NiwgMjksIDExMCwgMjEzLCA2OSwgMjksIAorICAgIDExMCwgMjEzLCA1OSwgMjksIDExMCwgMjEzLCA2MSwgMjksIDExMCwgMjEzLCA0OCwgMjksIDExMCwgMjEzLCA0OSwgMjksIAorICAgIDExMCwgMjI3LCA1MCwgMjksIDExMCwgMjIxLCAxOTIsIDI5LCAxMTAsIDIyMSwgMTg2LCAyOSwgMTEwLCAyMDgsIDE3MCwgCisgICAgMjksIDExMCwgMjIxLCAxODksIDI5LCAxMTAsIDIyMSwgMTk1LCAyOSwgMTEwLCAyMTUsIDE3MSwgMjksIDExMCwgMjE1LCAKKyAgICAxODAsIDI5LCAxMTAsIDIxNSwgMTg0LCAyOSwgMTEwLCAyMDgsIDE2OCwgMjksIDExMCwgMjE1LCAxNzQsIDI5LCAxMTAsIAorICAgIDIxNSwgMTg4LCAyOSwgMTEwLCAyMTUsIDE4OSwgMjksIDExMCwgMjA5LCAxMjEsIDI5LCAxMTAsIDIwOSwgMTI0LCAyOSwgCisgICAgMTEwLCAyMDgsIDE2NCwgMjksIDExMCwgMjA4LCAxNjIsIDI5LCAxMTAsIDIwOSwgMTE5LCAyOSwgMTEwLCAyMDksIDEyNywgCisgICAgMjksIDExMCwgMjA5LCAxMjgsIDI5LCAxMTAsIDIwOSwgMTEzLCAyOSwgMTEwLCAyMDksIDEyNiwgMjksIDExMCwgMjE2LCAKKyAgICAxNDQsIDI5LCAxMTAsIDIxNiwgMTQ1LCAyOSwgMTEwLCAyMDAsIDI2LCAyOSwgMTEwLCAyMDAsIDI3LCAyOSwgMTEwLCAyNDYsIAorICAgIDE2NiwgMjksIDExMCwgMjQ2LCAxNjUsIDI5LCAxMTAsIDIwOCwgMTc1LCAyOSwgMTEwLCAyMTUsIDIyNCwgMjksIDExMCwgCisgICAgMjE1LCAyMjMsIDEyLCAxNSwgMjMwLCAxNDIsIDEyLCAxNSwgMjMwLCAxNDEsIDEyLCAxNSwgMjMwLCAxNDAsIDEyLCAxNSwgCisgICAgMjMwLCAxMzksIDEyLCAxNSwgMjMwLCAxMzgsIDEyLCAxNSwgMjMwLCAxMzcsIDEyLCAxNSwgMjMwLCAxMzYsIDEyLCAxNSwgCisgICAgMjMwLCAxMzUsIDEyLCAxNSwgMjMwLCAxMzQsIDEyLCAxNSwgMjMwLCAxMzMsIDEyLCAxNSwgMjMwLCAxMzIsIDEyLCAxNSwgCisgICAgMjMwLCAxMzEsIDEyLCAxNSwgMjMwLCAxMzAsIDEyLCAxNSwgMjMwLCAxMjksIDEyLCAxNSwgMjMwLCAxMjgsIDEyLCAxNSwgCisgICAgMjMwLCAxMjcsIDEyLCAxNSwgMjMwLCAxMjYsIDEyLCAxNSwgMjMwLCAxMjUsIDEyLCAxNSwgMjMwLCAxMjQsIDEyLCAxNSwgCisgICAgMjMwLCAxMjMsIDEyLCAxNSwgMjMwLCAxMjIsIDEyLCAxNSwgMjMwLCAxMjEsIDEyLCAxNSwgMjMwLCAxMjAsIDEyLCAxNSwgCisgICAgMjMwLCAxMTksIDEyLCAxNSwgMjMwLCAxMTgsIDEyLCAxNSwgMjMwLCAxMTcsIDEyLCAxNSwgMjMwLCAxMTYsIDEyLCAxNSwgCisgICAgMjMwLCAxMTUsIDEyLCAxNSwgMjMwLCAxMTQsIDEyLCAxNSwgMjMwLCAxMTMsIDEyLCAxNSwgMjMwLCAxMTIsIDEyLCAxNSwgCisgICAgMjMwLCAxMTEsIDEyLCAxNSwgMjMwLCAxMTAsIDEyLCAxNSwgMjMwLCAxMDksIDEyLCAxNSwgMjMwLCAxMDgsIDEyLCAxNSwgCisgICAgMjMwLCAxMDcsIDEyLCAxNSwgMjMwLCAxMDYsIDEyLCAxNSwgMjMwLCAxMDUsIDEyLCAxNSwgMjMwLCAxMDQsIDEyLCAxNSwgCisgICAgMjMwLCAxMDMsIDEyLCAxNSwgMjMwLCAxMDIsIDEyLCAxNSwgMjMwLCAxMDEsIDEyLCAxNSwgMjMwLCAxMDAsIDEyLCAxNSwgCisgICAgMjMwLCA5OSwgMTIsIDE1LCAyMzAsIDk4LCAxMiwgMTUsIDIzMCwgOTcsIDEyLCAxNSwgMjMwLCA5NiwgMTIsIDE1LCAyMzAsIAorICAgIDk1LCAxMiwgMTUsIDIzMCwgOTQsIDEyLCAxNSwgMjMwLCA5MywgMTIsIDE1LCAyMzAsIDkyLCAxMiwgMTUsIDIzMCwgOTEsIAorICAgIDEyLCAxNSwgMjMwLCA5MCwgMTIsIDE1LCAyMzAsIDg5LCAxMiwgMTUsIDIzMCwgODgsIDEyLCAxNSwgMjMwLCA4NywgMTIsIAorICAgIDE1LCAyMzAsIDg2LCAxMiwgMTUsIDIzMCwgODUsIDEyLCAxNSwgMjMwLCA4NCwgMTIsIDE1LCAyMzAsIDgzLCAxMiwgMTUsIAorICAgIDIzMCwgODIsIDEyLCAxNSwgMjMwLCA4MSwgMTIsIDE1LCAyMzAsIDgwLCAxMiwgMTUsIDIzMCwgNzksIDEyLCAxNSwgMjMwLCAKKyAgICA3OCwgMTIsIDE1LCAyMzAsIDc3LCAxMiwgMTUsIDIzMCwgNzYsIDEyLCAxNSwgMjMwLCA3NSwgMTIsIDE1LCAyMzAsIDc0LCAKKyAgICAxMiwgMTUsIDIzMCwgNzMsIDEyLCAxNSwgMjMwLCA3MiwgMTIsIDE1LCAyMzAsIDcxLCAxMiwgMTUsIDIzMCwgNzAsIDEyLCAKKyAgICAxNSwgMjMwLCA2OSwgMTIsIDE1LCAyMzAsIDY4LCAxMiwgMTUsIDIzMCwgNjcsIDEyLCAxNSwgMjMwLCA2NiwgMTIsIDE1LCAKKyAgICAyMzAsIDY1LCAxMiwgMTUsIDIzMCwgNjQsIDEyLCAxNSwgMjMwLCA2MywgMTIsIDE1LCAyMzAsIDYyLCAxMiwgMTUsIDIzMCwgCisgICAgNjEsIDEyLCAxNSwgMjMwLCA2MCwgMTIsIDE1LCAyMzAsIDU5LCAxMiwgMTUsIDIzMCwgNTgsIDEyLCAxNSwgMjMwLCA1NywgCisgICAgMTIsIDE1LCAyMzAsIDU2LCAxMiwgMTUsIDIzMCwgNTUsIDEyLCAxNSwgMjMwLCA1NCwgMTIsIDE1LCAyMzAsIDUzLCAxMiwgCisgICAgMTUsIDIzMCwgNTIsIDEyLCAxNSwgMjMwLCA1MSwgMTIsIDE1LCAyMzAsIDUwLCAxMiwgMTUsIDIzMCwgNDksIDEyLCAxNSwgCisgICAgMjMwLCA0OCwgMTIsIDE1LCAyMzAsIDQ3LCAxMiwgMTUsIDIzMCwgNDYsIDEyLCAxNSwgMjMwLCA0NSwgMTIsIDE1LCAyMzAsIAorICAgIDQ0LCAxMiwgMTUsIDIzMCwgNDMsIDEyLCAxNSwgMjMwLCA0MiwgMTIsIDE1LCAyMzAsIDQxLCAxMiwgMTUsIDIzMCwgNDAsIAorICAgIDEyLCAxNSwgMjMwLCAzOSwgMTIsIDE1LCAyMzAsIDM4LCAxMiwgMTUsIDIzMCwgMzcsIDEyLCAxNSwgMjMwLCAzNiwgMTIsIAorICAgIDE1LCAyMzAsIDM1LCAxMiwgMTUsIDIzMCwgMzQsIDEyLCAxNSwgMjMwLCAzMywgMTIsIDE1LCAyMzAsIDMyLCAxMiwgMTUsIAorICAgIDIzMCwgMzEsIDEyLCAxNSwgMjMwLCAzMCwgMTIsIDE1LCAyMzAsIDI5LCAxMiwgMTUsIDIzMCwgMjgsIDEyLCAxNSwgMjMwLCAKKyAgICAyNywgMTIsIDE1LCAyMzAsIDI2LCAxMiwgMTUsIDIzMCwgMjUsIDEyLCAxNSwgMjMwLCAyNCwgMTIsIDE1LCAyMzAsIDIzLCAKKyAgICAxMiwgMTUsIDIzMCwgMjIsIDEyLCAxNSwgMjMwLCAyMSwgMTIsIDE1LCAyMzAsIDIwLCAxMiwgMTUsIDIzMCwgMTksIDEyLCAKKyAgICAxNSwgMjMwLCAxOCwgMTIsIDE1LCAyMzAsIDE3LCAxMiwgMTUsIDIzMCwgMTYsIDEyLCAxNSwgMjMwLCAxNSwgMTIsIDE1LCAKKyAgICAyMzAsIDE0LCAxMiwgMTUsIDIzMCwgMTMsIDEyLCAxNSwgMjMwLCAxMiwgMTIsIDE1LCAyMzAsIDExLCAxMiwgMTUsIDIzMCwgCisgICAgMTAsIDEyLCAxNSwgMjMwLCA5LCAxMiwgMTUsIDIzMCwgOCwgMTIsIDE1LCAyMzAsIDcsIDEyLCAxNSwgMjMwLCA2LCAxMiwgCisgICAgMTUsIDIzMCwgNSwgMTIsIDE1LCAyMzAsIDQsIDEyLCAxNSwgMjMwLCAzLCAxMiwgMTUsIDIzMCwgMiwgMTIsIDE1LCAyMzAsIAorICAgIDEsIDEyLCAxNSwgMjMwLCAwLCAxMiwgMTUsIDIyOSwgMjU1LCAxMiwgMTUsIDIyOSwgMjU0LCAxMiwgMTUsIDIyOSwgMjUzLCAKKyAgICAxMiwgMTUsIDIyOSwgMjUyLCAxMiwgMTUsIDIyOSwgMjUxLCAxMiwgMTUsIDIyOSwgMjUwLCAxMiwgMTUsIDIyOSwgMjQ5LCAKKyAgICAxMiwgMTUsIDIyOSwgMjQ4LCAxMiwgMTUsIDIyOSwgMjQ3LCAxMiwgMTUsIDIyOSwgMjQ2LCAxMiwgMTUsIDIyOSwgMjQ1LCAKKyAgICAxMiwgMTUsIDIyOSwgMjQ0LCAxMiwgMTUsIDIyOSwgMjQzLCAxMiwgMTUsIDIyOSwgMjQyLCAxMiwgMTUsIDIyOSwgMjQxLCAKKyAgICAxMiwgMTUsIDIyOSwgMjQwLCAxMiwgMTUsIDIyOSwgMjM5LCAxMiwgMTUsIDIyOSwgMjM4LCAxMiwgMTUsIDIyOSwgMjM3LCAKKyAgICAxMiwgMTUsIDIyOSwgMjM2LCAxMiwgMTUsIDIyOSwgMjM1LCAxMiwgMTUsIDIyOSwgMjM0LCAxMiwgMTUsIDIyOSwgMjMzLCAKKyAgICAxMiwgMTUsIDIyOSwgMjMyLCAxMiwgMTUsIDIyOSwgMjMxLCAxMiwgMTUsIDIyOSwgMjMwLCAxMiwgMTUsIDIyOSwgMjI5LCAKKyAgICAxMiwgMTUsIDIyOSwgMjI4LCAxMiwgMTUsIDIyOSwgMjI3LCAxMiwgMTUsIDIyOSwgMjI2LCAxMiwgMTUsIDIyOSwgMjI1LCAKKyAgICAxMiwgMTUsIDIyOSwgMjI0LCAxMiwgMTUsIDIyOSwgMjIzLCAxMiwgMTUsIDIyOSwgMjIyLCAxMiwgMTUsIDIyOSwgMjIxLCAKKyAgICAxMiwgMTUsIDIyOSwgMjIwLCAxMiwgMTUsIDIyOSwgMjE5LCAxMiwgMTUsIDIyOSwgMjE4LCAxMiwgMTUsIDIyOSwgMjE3LCAKKyAgICAxMiwgMTUsIDIyOSwgMjE2LCAxMiwgMTUsIDIyOSwgMjE1LCAxMiwgMTUsIDIyOSwgMjE0LCAxMiwgMTUsIDIyOSwgMjEzLCAKKyAgICAxMiwgMTUsIDIyOSwgMjEyLCAxMiwgMTUsIDIyOSwgMjExLCAxMiwgMTUsIDIyOSwgMjEwLCAxMiwgMTUsIDIyOSwgMjA5LCAKKyAgICAxMiwgMTUsIDIyOSwgMjA4LCAxMiwgMTUsIDIyOSwgMjA3LCAxMiwgMTUsIDIyOSwgMjA2LCAxMiwgMTUsIDIyOSwgMjA1LCAKKyAgICAxMiwgMTUsIDIyOSwgMjA0LCAxMiwgMTUsIDIyOSwgMjAzLCAxMiwgMTUsIDIyOSwgMjAyLCAxMiwgMTUsIDIyOSwgMjAxLCAKKyAgICAxMiwgMTUsIDIyOSwgMjAwLCAxMiwgMTUsIDIyOSwgMTk5LCAxMiwgMTUsIDIyOSwgMTk4LCAxMiwgMTUsIDIyOSwgMTk3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTk2LCAxMiwgMTUsIDIyOSwgMTk1LCAxMiwgMTUsIDIyOSwgMTk0LCAxMiwgMTUsIDIyOSwgMTkzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTkyLCAxMiwgMTUsIDIyOSwgMTkxLCAxMiwgMTUsIDIyOSwgMTkwLCAxMiwgMTUsIDIyOSwgMTg5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTg4LCAxMiwgMTUsIDIyOSwgMTg3LCAxMiwgMTUsIDIyOSwgMTg2LCAxMiwgMTUsIDIyOSwgMTg1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTg0LCAxMiwgMTUsIDIyOSwgMTgzLCAxMiwgMTUsIDIyOSwgMTgyLCAxMiwgMTUsIDIyOSwgMTgxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTgwLCAxMiwgMTUsIDIyOSwgMTc5LCAxMiwgMTUsIDIyOSwgMTc4LCAxMiwgMTUsIDIyOSwgMTc3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTc2LCAxMiwgMTUsIDIyOSwgMTc1LCAxMiwgMTUsIDIyOSwgMTc0LCAxMiwgMTUsIDIyOSwgMTczLCAKKyAgICAxMiwgMTUsIDIyOSwgMTcyLCAxMiwgMTUsIDIyOSwgMTcxLCAxMiwgMTUsIDIyOSwgMTcwLCAxMiwgMTUsIDIyOSwgMTY5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTY4LCAxMiwgMTUsIDIyOSwgMTY3LCAxMiwgMTUsIDIyOSwgMTY2LCAxMiwgMTUsIDIyOSwgMTY1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTY0LCAxMiwgMTUsIDIyOSwgMTYzLCAxMiwgMTUsIDIyOSwgMTYyLCAxMiwgMTUsIDIyOSwgMTYxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTYwLCAxMiwgMTUsIDIyOSwgMTU5LCAxMiwgMTUsIDIyOSwgMTU4LCAxMiwgMTUsIDIyOSwgMTU3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTU2LCAxMiwgMTUsIDIyOSwgMTU1LCAxMiwgMTUsIDIyOSwgMTU0LCAxMiwgMTUsIDIyOSwgMTUzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTUyLCAxMiwgMTUsIDIyOSwgMTUxLCAxMiwgMTUsIDIyOSwgMTUwLCAxMiwgMTUsIDIyOSwgMTQ5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTQ4LCAxMiwgMTUsIDIyOSwgMTQ3LCAxMiwgMTUsIDIyOSwgMTQ2LCAxMiwgMTUsIDIyOSwgMTQ1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTQ0LCAxMiwgMTUsIDIyOSwgMTQzLCAxMiwgMTUsIDIyOSwgMTQyLCAxMiwgMTUsIDIyOSwgMTQxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTQwLCAxMiwgMTUsIDIyOSwgMTM5LCAxMiwgMTUsIDIyOSwgMTM4LCAxMiwgMTUsIDIyOSwgMTM3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTM2LCAxMiwgMTUsIDIyOSwgMTM1LCAxMiwgMTUsIDIyOSwgMTM0LCAxMiwgMTUsIDIyOSwgMTMzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTMyLCAxMiwgMTUsIDIyOSwgMTMxLCAxMiwgMTUsIDIyOSwgMTMwLCAxMiwgMTUsIDIyOSwgMTI5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTI4LCAxMiwgMTUsIDIyOSwgMTI3LCAxMiwgMTUsIDIyOSwgMTI2LCAxMiwgMTUsIDIyOSwgMTI1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTI0LCAxMiwgMTUsIDIyOSwgMTIzLCAxMiwgMTUsIDIyOSwgMTIyLCAxMiwgMTUsIDIyOSwgMTIxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTIwLCAxMiwgMTUsIDIyOSwgMTE5LCAxMiwgMTUsIDIyOSwgMTE4LCAxMiwgMTUsIDIyOSwgMTE3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTE2LCAxMiwgMTUsIDIyOSwgMTE1LCAxMiwgMTUsIDIyOSwgMTE0LCAxMiwgMTUsIDIyOSwgMTEzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTEyLCAxMiwgMTUsIDIyOSwgMTExLCAxMiwgMTUsIDIyOSwgMTEwLCAxMiwgMTUsIDIyOSwgMTA5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTA4LCAxMiwgMTUsIDIyOSwgMTA3LCAxMiwgMTUsIDIyOSwgMTA2LCAxMiwgMTUsIDIyOSwgMTA1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTA0LCAxMiwgMTUsIDIyOSwgMTAzLCAxMiwgMTUsIDIyOSwgMTAyLCAxMiwgMTUsIDIyOSwgMTAxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTAwLCAxMiwgMTUsIDIyOSwgOTksIDEyLCAxNSwgMjI5LCA5OCwgMTIsIDE1LCAyMjksIDk3LCAxMiwgCisgICAgMTUsIDIyOSwgOTYsIDEyLCAxNSwgMjI5LCA5NSwgMTIsIDE1LCAyMjksIDk0LCAxMiwgMTUsIDIyOSwgOTMsIDEyLCAxNSwgCisgICAgMjI5LCA5MiwgMTIsIDE1LCAyMjksIDkxLCAxMiwgMTUsIDIyOSwgOTAsIDEyLCAxNSwgMjI5LCA4OSwgMTIsIDE1LCAyMjksIAorICAgIDg4LCAxMiwgMTUsIDIyOSwgODcsIDEyLCAxNSwgMjI5LCA4NiwgMTIsIDE1LCAyMjksIDg1LCAxMiwgMTUsIDIyOSwgODQsIAorICAgIDEyLCAxNSwgMjI5LCA4MywgMTIsIDE1LCAyMjksIDgyLCAxMiwgMTUsIDIyOSwgODEsIDEyLCAxNSwgMjI5LCA4MCwgMTIsIAorICAgIDE1LCAyMjksIDc5LCAxMiwgMTUsIDIyOSwgNzgsIDEyLCAxNSwgMjI5LCA3NywgMTIsIDE1LCAyMjksIDc2LCAxMiwgMTUsIAorICAgIDIyOSwgNzUsIDEyLCAxNSwgMjI5LCA3NCwgMTIsIDE1LCAyMjksIDczLCAxMiwgMTUsIDIyOSwgNzIsIDEyLCAxNSwgMjI5LCAKKyAgICA3MSwgMTIsIDE1LCAyMjksIDcwLCAxMiwgMTUsIDIyOSwgNjksIDEyLCAxNSwgMjI5LCA2OCwgMTIsIDE1LCAyMjksIDY3LCAKKyAgICAxMiwgMTUsIDIyOSwgNjYsIDEyLCAxNSwgMjI5LCA2NSwgMTIsIDE1LCAyMjksIDY0LCAxMiwgMTUsIDIyOSwgNjMsIDEyLCAKKyAgICAxNSwgMjI5LCA2MiwgMTIsIDE1LCAyMjksIDYxLCAxMiwgMTUsIDIyOSwgNjAsIDEyLCAxNSwgMjI5LCA1OSwgMTIsIDE1LCAKKyAgICAyMjksIDU4LCAxMiwgMTUsIDIyOSwgNTcsIDEyLCAxNSwgMjI5LCA1NiwgMTIsIDE1LCAyMjksIDU1LCAxMiwgMTUsIDIyOSwgCisgICAgNTQsIDEyLCAxNSwgMjI5LCA1MywgMTIsIDE1LCAyMjksIDUyLCAxMiwgMTUsIDIyOSwgNTEsIDEyLCAxNSwgMjI5LCA1MCwgCisgICAgMTIsIDE1LCAyMjksIDQ5LCAxMiwgMTUsIDIyOSwgNDgsIDEyLCAxNSwgMjI5LCA0NywgMTIsIDE1LCAyMjksIDQ2LCAxMiwgCisgICAgMTUsIDIyOSwgNDUsIDEyLCAxNSwgMjI5LCA0NCwgMTIsIDE1LCAyMjksIDQzLCAxMiwgMTUsIDIyOSwgNDIsIDEyLCAxNSwgCisgICAgMjI5LCA0MSwgMTIsIDE1LCAyMjksIDQwLCAxMiwgMTUsIDIyOSwgMzksIDEyLCAxNSwgMjI5LCAzOCwgMTIsIDE1LCAyMjksIAorICAgIDM3LCAxMiwgMTUsIDIyOSwgMzYsIDEyLCAxNSwgMjI5LCAzNSwgMTIsIDE1LCAyMjksIDM0LCAxMiwgMTUsIDIyOSwgMzMsIAorICAgIDEyLCAxNSwgMjI5LCAzMiwgMTIsIDE1LCAyMjksIDMxLCAxMiwgMTUsIDIyOSwgMzAsIDEyLCAxNSwgMjI5LCAyOSwgMTIsIAorICAgIDE1LCAyMjksIDI4LCAxMiwgMTUsIDIyOSwgMjcsIDEyLCAxNSwgMjI5LCAyNiwgMTIsIDE1LCAyMjksIDI1LCAxMiwgMTUsIAorICAgIDIyOSwgMjQsIDEyLCAxNSwgMjI5LCAyMywgMTIsIDE1LCAyMjksIDIyLCAxMiwgMTUsIDIyOSwgMjEsIDEyLCAxNSwgMjI5LCAKKyAgICAyMCwgMTIsIDE1LCAyMjksIDE5LCAxMiwgMTUsIDIyOSwgMTgsIDEyLCAxNSwgMjI5LCAxNywgMTIsIDE1LCAyMjksIDE2LCAKKyAgICAxMiwgMTUsIDIyOSwgMTUsIDEyLCAxNSwgMjI5LCAxNCwgMTIsIDE1LCAyMjksIDEzLCAxMiwgMTUsIDIyOSwgMTIsIDEyLCAKKyAgICAxNSwgMjI5LCAxMSwgMTIsIDE1LCAyMjksIDEwLCAxMiwgMTUsIDIyOSwgOSwgMTIsIDE1LCAyMjksIDgsIDEyLCAxNSwgCisgICAgMjI5LCA3LCAxMiwgMTUsIDIyOSwgNiwgMTIsIDE1LCAyMjksIDUsIDEyLCAxNSwgMjI5LCA0LCAxMiwgMTUsIDIyOSwgMywgCisgICAgMTIsIDE1LCAyMjksIDIsIDEyLCAxNSwgMjI5LCAxLCAxMiwgMTUsIDIyOSwgMCwgMTIsIDE1LCAyMjgsIDI1NSwgMTIsIDE1LCAKKyAgICAyMjgsIDI1NCwgMTIsIDE1LCAyMjgsIDI1MywgMTIsIDE1LCAyMjgsIDI1MiwgMTIsIDE1LCAyMjgsIDI1MSwgMTIsIDE1LCAKKyAgICAyMjgsIDI1MCwgMTIsIDE1LCAyMjgsIDI0OSwgMTIsIDE1LCAyMjgsIDI0OCwgMTIsIDE1LCAyMjgsIDI0NywgMTIsIDE1LCAKKyAgICAyMjgsIDI0NiwgMTIsIDE1LCAyMjgsIDI0NSwgMTIsIDE1LCAyMjgsIDI0NCwgMTIsIDE1LCAyMjgsIDI0MywgMTIsIDE1LCAKKyAgICAyMjgsIDI0MiwgMTIsIDE1LCAyMjgsIDI0MSwgMTIsIDE1LCAyMjgsIDI0MCwgMTIsIDE1LCAyMjgsIDIzOSwgMTIsIDE1LCAKKyAgICAyMjgsIDIzOCwgMTIsIDE1LCAyMjgsIDIzNywgMTIsIDE1LCAyMjgsIDIzNiwgMTIsIDE1LCAyMjgsIDIzNSwgMTIsIDE1LCAKKyAgICAyMjgsIDIzNCwgMTIsIDE1LCAyMjgsIDIzMywgMTIsIDE1LCAyMjgsIDIzMiwgMTIsIDE1LCAyMjgsIDIzMSwgMTIsIDE1LCAKKyAgICAyMjgsIDIzMCwgMTIsIDE1LCAyMjgsIDIyOSwgMTIsIDE1LCAyMjgsIDIyOCwgMTIsIDE1LCAyMjgsIDIyNywgMTIsIDE1LCAKKyAgICAyMjgsIDIyNiwgMTIsIDE1LCAyMjgsIDIyNSwgMTIsIDE1LCAyMjgsIDIyNCwgMTIsIDE1LCAyMjgsIDIyMywgMTIsIDE1LCAKKyAgICAyMjgsIDIyMiwgMTIsIDE1LCAyMjgsIDIyMSwgMTIsIDE1LCAyMjgsIDIyMCwgMTIsIDE1LCAyMjgsIDIxOSwgMTIsIDE1LCAKKyAgICAyMjgsIDIxOCwgMTIsIDE1LCAyMjgsIDIxNywgMTIsIDE1LCAyMjgsIDIxNiwgMTIsIDE1LCAyMjgsIDIxNSwgMTIsIDE1LCAKKyAgICAyMjgsIDIxNCwgMTIsIDE1LCAyMjgsIDIxMywgMTIsIDE1LCAyMjgsIDIxMiwgMTIsIDE1LCAyMjgsIDIxMSwgMTIsIDE1LCAKKyAgICAyMjgsIDIxMCwgMTIsIDE1LCAyMjgsIDIwOSwgMTIsIDE1LCAyMjgsIDIwOCwgMTIsIDE1LCAyMjgsIDIwNywgMTIsIDE1LCAKKyAgICAyMjgsIDIwNiwgMTIsIDE1LCAyMjgsIDIwNSwgMTIsIDE1LCAyMjgsIDIwNCwgMTIsIDE1LCAyMjgsIDIwMywgMTIsIDE1LCAKKyAgICAyMjgsIDIwMiwgMTIsIDE1LCAyMjgsIDIwMSwgMTIsIDE1LCAyMjgsIDIwMCwgMTIsIDE1LCAyMjgsIDE5OSwgMTIsIDE1LCAKKyAgICAyMjgsIDE5OCwgMTIsIDE1LCAyMjgsIDE5NywgMTIsIDE1LCAyMjgsIDE5NiwgMTIsIDE1LCAyMjgsIDE5NSwgMTIsIDE1LCAKKyAgICAyMjgsIDE5NCwgMTIsIDE1LCAyMjgsIDE5MywgMTIsIDE1LCAyMjgsIDE5MiwgMTIsIDE1LCAyMjgsIDE5MSwgMTIsIDE1LCAKKyAgICAyMjgsIDE5MCwgMTIsIDE1LCAyMjgsIDE4OSwgMTIsIDE1LCAyMjgsIDE4OCwgMTIsIDE1LCAyMjgsIDE4NywgMTIsIDE1LCAKKyAgICAyMjgsIDE4NiwgMTIsIDE1LCAyMjgsIDE4NSwgMTIsIDE1LCAyMjgsIDE4NCwgMTIsIDE1LCAyMjgsIDE4MywgOCwgNCwgMzMsIAorICAgIDIzNywgMTE2LCA4LCA0LCAzMywgMjM3LCAxMTIsIDgsIDQsIDMzLCAyMzcsIDU2LCA4LCA0LCAzMywgMjM3LCAxMTUsIDgsIAorICAgIDQsIDMzLCAyMzcsIDExNCwgOCwgNCwgMzMsIDE2OCwgMjEyLCAxMjMsIDIwNywgODMsIDgsIDQsIDMzLCAyMDgsIDEyMywgCisgICAgMTg0LCA0LCAzMywgMjIyLCA0MSwgMjE4LCAyMDEsIDE4NCwgNCwgMzMsIDIyMiwgNDEsIDIzOSwgNSwgMTg0LCA0LCAzMywgCisgICAgMjIyLCA0MSwgMjI4LCA4NiwgMTg0LCA0LCAzMywgMjAyLCAyMzksIDIxOCwgMjAxLCAxODQsIDQsIDMzLCAyMjIsIDQxLCAKKyAgICAyMDAsIDE3MywgMTEzLCAxLCAxOTksIDIzNSwgMywgMjM0LCA0NywgMTEzLCAyMTUsIDEwMCwgMjI3LCAxNDYsIDIwMywgNzEsIAorICAgIDExMywgMzMsIDIwMCwgNywgMTk5LCAyMzUsIDE5OSwgMjM1LCAyMTYsIDkzLCAxMTMsIDEsIDI1MSwgMTA0LCAyNTAsIDEwNywgCisgICAgMTEzLCAxLCAyMDEsIDI4LCAyNTEsIDE0MiwgMTEzLCAxLCAyMDEsIDI4LCAyNDIsIDIzLCAxMTMsIDEsIDIwMSwgMjgsIAorICAgIDIzNCwgMTM5LCAxMTMsIDEsIDIwMSwgMjgsIDIyNywgODYsIDExMywgMSwgMjAxLCAyOCwgMjI1LCA4MywgMTEzLCAxLCAKKyAgICAyMDEsIDI4LCA0NywgMjIyLCA0NywgMTEzLCAxLCAyMDEsIDI4LCAyMTMsIDEyMywgMTEzLCAxLCAyMDEsIDI4LCAyMDYsIAorICAgIDIxNywgMTEzLCAxLCAyNTEsIDEwNCwgOTMsIDU0LCAxMTMsIDEsIDIxMCwgMjIsIDMsIDIxMCwgMjIsIDI0MCwgMTgyLCAKKyAgICAxMTMsIDEsIDIxMCwgMjIsIDMsIDIwOSwgMTQzLCAyNDAsIDE4MiwgMTEzLCAxLCAyMTAsIDIyLCAzLCAyNDIsIDQzLCAyNiwgCisgICAgMjEwLCAyMiwgMjQwLCAxODIsIDExMywgMSwgMjEwLCAyMiwgMywgMjQyLCA0MywgMjYsIDIwOSwgMTQzLCAyNDAsIDE4MiwgCisgICAgMTEzLCAxLCAxNDAsIDMsIDIxNiwgOTMsIDExMywgMSwgMTQwLCAzLCAyMTQsIDE0NywgMTEzLCAxLCAxNDAsIDMsIDIyMiwgCisgICAgMTYzLCAxMTMsIDEsIDI0OCwgMjExLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIzNSwgMTQ4LCAzLCAyNDIsIDQyLCAxMTMsIDEsIAorICAgIDI0MiwgMjQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjM0LCAxNDAsIDMsIDIyMiwgMTYzLCAxMTMsIDEsIDIwMywgNjQsIDMsIAorICAgIDI0MiwgNDIsIDExMywgMSwgMTk5LCA5MywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMDYsIDE0NywgMywgMjQyLCA0MiwgMTEzLCAKKyAgICAxLCAxOTksIDIzNSwgMywgMjQyLCA0MiwgMTEzLCAxLCA0NywgMjI3LCA4NywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMjcsIAorICAgIDg3LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIyNSwgODQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjIyLCA0OCwgMywgMjQyLCA0MiwgCisgICAgMTEzLCAxLCAyMTgsIDkwLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIxMiwgMjAsIDMsIDI0MiwgNDIsIDExMywgMSwgNDcsIAorICAgIDIxNiwgNzQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjE2LCA3NCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMDUsIDI4LCAzLCAKKyAgICAyNDIsIDQyLCAxMTMsIDEsIDIxNCwgMTA3LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIxMywgMTI0LCAzLCAyNDIsIDQyLCAxMTMsIAorICAgIDEsIDIxMCwgMjIsIDMsIDI0MiwgNDIsIDExMywgMSwgMjA2LCAyMTgsIDMsIDI0MiwgNDIsIDExMywgMSwgMjAzLCA2NCwgMywgCisgICAgMjMzLCAxOTksIDExMywgMSwgMjQ4LCAyMTEsIDMsIDIxMywgMjMyLCAxMTMsIDEsIDIyNywgODcsIDMsIDIxMywgMjMyLCAKKyAgICAxMTMsIDEsIDIxNiwgNzQsIDMsIDIxMywgMjMyLCAxMTMsIDMzLCAxNDAsIDIyNSwgODMsIDksIDEsIDE0MCwgMjAxLCA5MCwgCisgICAgNjUsIDE5LCA5LCAxLCAxNDAsIDIwMSwgOTAsIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNTEsIDY1LCAxOSwgOSwgMSwgMjQ4LCAKKyAgICAyNTEsIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNTEsIDgyLCAxOSwgOSwgMSwgMjQ4LCAyNTEsIDE3OSwgMTksIDksIDEsIDIxNiwgCisgICAgNTUsIDY1LCAxOSwgOSwgMSwgMjE2LCA1NSwgNDcsIDE5LCA5LCAxLCAyMTYsIDU1LCA4MiwgMTksIDksIDEsIDIxNiwgNTUsIAorICAgIDE3OSwgMTksIDksIDEsIDI0OCwgMjM5LCA2NSwgMTksIDksIDEsIDI0OCwgMjM5LCA0NywgMTksIDksIDEsIDI0OCwgMjM5LCAKKyAgICA4MiwgMTksIDksIDEsIDI0OCwgMjM5LCAxNzksIDE5LCA5LCAxLCAyMDQsIDI0NCwgNjUsIDE5LCA5LCAxLCAyMDQsIDI0NCwgCisgICAgNDcsIDE5LCA5LCAxLCAyMDQsIDI0NCwgODIsIDE5LCA5LCAxLCAyMDQsIDI0NCwgMTc5LCAxOSwgOSwgMSwgMjA2LCAxODIsIAorICAgIDY1LCAxOSwgOSwgMSwgMjA2LCAxODIsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxODIsIDgyLCAxOSwgOSwgMSwgMjA2LCAxODIsIAorICAgIDE3OSwgMTksIDksIDEsIDIwNCwgMjQ2LCA2NSwgMTksIDksIDEsIDIwNCwgMjQ2LCA0NywgMTksIDksIDEsIDIwNCwgMjQ2LCAKKyAgICA4MiwgMTksIDksIDEsIDIwNCwgMjQ2LCAxNzksIDE5LCA5LCAxLCAyMDMsIDUzLCA2NSwgMTksIDksIDEsIDIwMywgNTMsIAorICAgIDQ3LCAxOSwgOSwgMSwgMjAzLCA1MywgODIsIDE5LCA5LCAxLCAyMDMsIDUzLCAxNzksIDE5LCA5LCAxLCAyMTYsIDUzLCA2NSwgCisgICAgMTksIDksIDEsIDIxNiwgNTMsIDQ3LCAxOSwgOSwgMSwgMjE2LCA1MywgODIsIDE5LCA5LCAxLCAyMTYsIDUzLCAxNzksIDE5LCAKKyAgICA5LCAxLCAyMzksIDEwMCwgNjUsIDE5LCA5LCAxLCAyMzksIDEwMCwgNDcsIDE5LCA5LCAxLCAyMzksIDEwMCwgODIsIDE5LCAKKyAgICA5LCAxLCAyMzksIDEwMCwgMTc5LCAxOSwgOSwgMSwgMjE4LCA0OCwgNjUsIDE5LCA5LCAxLCAyMTgsIDQ4LCA0NywgMTksIDksIAorICAgIDEsIDIxOCwgNDgsIDgyLCAxOSwgOSwgMSwgMjE4LCA0OCwgMTc5LCAxOSwgOSwgMSwgMjA2LCAyMDYsIDY1LCAxOSwgOSwgMSwgCisgICAgMjA2LCAyMDYsIDQ3LCAxOSwgOSwgMSwgMjA2LCAyMDYsIDgyLCAxOSwgOSwgMSwgMjA2LCAyMDYsIDE3OSwgMTksIDksIDEsIAorICAgIDIwNiwgMjA0LCA2NSwgMTksIDksIDEsIDIwNiwgMjA0LCA0NywgMTksIDksIDEsIDIwNiwgMjA0LCA4MiwgMTksIDksIDEsIAorICAgIDIwNiwgMjA0LCAxNzksIDE5LCA5LCAxLCAyNDEsIDIxOCwgNjUsIDE5LCA5LCAxLCAyNDEsIDIxOCwgNDcsIDE5LCA5LCAxLCAKKyAgICAyNDIsIDM3LCA2NSwgMTksIDksIDEsIDI0MiwgMzcsIDQ3LCAxOSwgOSwgMSwgMjM5LCAxMjgsIDY1LCAxOSwgOSwgMSwgCisgICAgMjM5LCAxMjgsIDQ3LCAxOSwgOSwgMSwgMjQxLCAyMTYsIDY1LCAxOSwgOSwgMSwgMjQxLCAyMTYsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI3LCAyMjIsIDY1LCAxOSwgOSwgMSwgMjI3LCAyMjIsIDQ3LCAxOSwgOSwgMSwgMjEyLCAyMDgsIDY1LCAxOSwgOSwgMSwgCisgICAgMjEyLCAyMDgsIDQ3LCAxOSwgOSwgMSwgMjI2LCAyNTMsIDY1LCAxOSwgOSwgMSwgMjI2LCAyNTMsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI2LCAyNTMsIDgyLCAxOSwgOSwgMSwgMjI2LCAyNTMsIDE3OSwgMTksIDksIDEsIDIzNiwgNzcsIDY1LCAxOSwgOSwgMSwgCisgICAgMjM2LCA3NywgNDcsIDE5LCA5LCAxLCAyMzYsIDc3LCA4MiwgMTksIDksIDEsIDIzNiwgNzcsIDE3OSwgMTksIDksIDEsIAorICAgIDIzNSwgMzgsIDY1LCAxOSwgOSwgMSwgMjM1LCAzOCwgNDcsIDE5LCA5LCAxLCAyMzUsIDM4LCA4MiwgMTksIDksIDEsIDIzNSwgCisgICAgMzgsIDE3OSwgMTksIDksIDEsIDIxOSwgMTc3LCA2NSwgMTksIDksIDEsIDIxOSwgMTc3LCA0NywgMTksIDksIDEsIDIxOSwgCisgICAgMTc3LCA4MiwgMTksIDksIDEsIDIxOSwgMTc3LCAxNzksIDE5LCA5LCAxLCAyMTgsIDIyOCwgMjM1LCAxNjYsIDY1LCAxOSwgCisgICAgOSwgMSwgMjE4LCAyMjgsIDIzNSwgMTY2LCA0NywgMTksIDksIDEsIDIxMywgNSwgNjUsIDE5LCA5LCAxLCAyMTMsIDUsIDQ3LCAKKyAgICAxOSwgOSwgMSwgMjEzLCA1LCA4MiwgMTksIDksIDEsIDIxMywgNSwgMTc5LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDMsIDkwLCAKKyAgICA4OCwgNjUsIDE5LCA5LCAxLCAyMzQsIDExNiwgMywgOTAsIDg4LCA0NywgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgCisgICAgNjUsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIDQ3LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTE0LCA4MiwgCisgICAgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgMTc5LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA4LCA2NSwgMTksIAorICAgIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwOCwgNDcsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjQwLCAyMDgsIDgyLCAxOSwgOSwgMSwgCisgICAgMjM0LCAxMTYsIDI0MCwgMjA4LCAxNzksIDE5LCA5LCAxLCA5MCwgMjQ5LCA3MCwgNjUsIDE5LCA5LCAxLCA5MCwgMjQ5LCAKKyAgICA3MCwgNDcsIDE5LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIDksIDEsIDkwLCAyNDksIAorICAgIDcwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMTYsIDczLCA1NiwgOSwgMTYsIDczLCA1NywgOSwgMTYsIDEyMCwgCisgICAgMTkwLCA1NiwgOSwgMTYsIDEyMCwgMTkwLCA1NywgOSwgMTYsIDEyNiwgMTkwLCA1NiwgOSwgMTYsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMTYsIDEyNiwgMTkwLCAyMTUsIDk2LCAxOTEsIDU2LCA5LCAxNiwgMTI2LCAxOTAsIDIxNSwgOTYsIDE5MSwgNTcsIDksIAorICAgIDE2LCAyMzYsIDIyOSwgMTkwLCA1NiwgOSwgMTYsIDIzNiwgMjI5LCAxOTAsIDU3LCA5LCAxNiwgNTMsIDgzLCAyNDksIDc3LCAKKyAgICA1NywgOSwgMTYsIDEyMCwgMTkwLCAyMDIsIDI0OCwgNTYsIDksIDE2LCAxMjAsIDE5MCwgMjAyLCAyNDgsIDU3LCA5LCAxNiwgCisgICAgMjEzLCAyNiwgOSwgMTYsIDQsIDIwNywgMTAsIDU2LCA5LCAxNiwgNCwgMjA3LCAxMCwgNTcsIDksIDEsIDIyMCwgMCwgNjUsIAorICAgIDE5LCA5LCAxLCAyMjAsIDAsIDQ3LCAxOSwgOSwgMSwgMjIwLCAwLCA4MiwgMTksIDksIDEsIDIyMCwgMCwgMTc5LCAxOSwgOSwgCisgICAgMSwgMTA4LCA2NSwgMTksIDksIDEsIDEwOCwgNDcsIDE5LCA5LCAxLCAyMTcsIDEyMiwgNjUsIDE5LCA5LCAxLCAyMTcsIAorICAgIDEyMiwgNDcsIDE5LCA5LCAxLCAxOTksIDIxMiwgNjUsIDE5LCA5LCAxLCAxOTksIDIxMiwgNDcsIDE5LCA5LCAxLCAxMDgsIAorICAgIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAxLCAyMDMsIDYwLCA2NSwgMTksIDksIDEsIDIwMywgNjAsIDQ3LCAxOSwgOSwgCisgICAgMSwgMjI2LCAxMzksIDIxNywgMTIyLCA2NSwgMTksIDksIDEsIDIyNiwgMTM5LCAyMTcsIDEyMiwgNDcsIDE5LCA5LCAxLCAKKyAgICAyMjYsIDEzOSwgMTk5LCAyMTIsIDY1LCAxOSwgOSwgMSwgMjI2LCAxMzksIDE5OSwgMjEyLCA0NywgMTksIDksIDEsIDE5NywgCisgICAgNjUsIDE5LCA5LCAxLCAxOTcsIDQ3LCAxOSwgOSwgMSwgMTk3LCA4MiwgMTksIDksIDEsIDE5NywgMTc5LCAxOSwgOSwgMSwgCisgICAgMjA0LCAyMiwgMjI3LCAxMiwgMjI2LCAxMzksIDE0MCwgMjIyLCAxODgsIDgyLCAxOSwgOSwgMSwgMjA0LCAyMiwgMjI3LCAKKyAgICAxMiwgMjI2LCAxMzksIDE0MCwgMjIyLCAxODgsIDE3OSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIAorICAgIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgCisgICAgMjA0LCA4OCwgMywgMjUxLCAyMjIsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDI1MSwgMjIyLCAKKyAgICA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMDEsIDczLCA2NSwgMTksIDksIDMzLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCAyMDEsIDczLCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxMDgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDEwOCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCAKKyAgICA4OCwgMywgMjE3LCAxMjIsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIxNywgMTIyLCA0NywgMTksIAorICAgIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTksIDIxMiwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCAKKyAgICA4OCwgMywgMTk5LCAyMTIsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5NywgNjUsIDE5LCA5LCAKKyAgICAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk3LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAKKyAgICAxOTcsIDgyLCAxOSwgOSwgMzMsIDIwNCwgMjIsIDIyNiwgMTM5LCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA2NSwgMTksIDksIDMzLCAyMDQsIDIyLCAyMjYsIDEzOSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA0LCAyMiwgMjI2LCAxMzksIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDgyLCAxOSwgOSwgMSwgMjM3LCAxNjIsIDkwLCA2NSwgMTksIDksIDEsIDIzNywgMTYyLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMzcsIDE2MiwgOTAsIDgyLCAxOSwgOSwgMSwgMjM3LCAxNjIsIDkwLCAxNzksIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgCisgICAgMjA0LCA4OCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNTUsIDY1LCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAKKyAgICAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjQ4LCAyNDEsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjQ4LCAKKyAgICAyNDEsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDI0OCwgCisgICAgMjQxLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIwNiwgMTg0LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIwNiwgCisgICAgMTg0LCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMDYsIAorICAgIDE4NCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMDYsIDEwMywgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIwNiwgCisgICAgMTAzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDE5MywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAxOTMsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAxNTUsIDMsIDE5MywgNjUsIAorICAgIDE5LCA5LCAzMywgMTU1LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgCisgICAgMjI2LCAyMDQsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTEsIAorICAgIDE4NywgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgCisgICAgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTkzLCA2NSwgMTksIDksIAorICAgIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAKKyAgICAyNDIsIDUzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMDcsIDEwLCAKKyAgICAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMTk5LCAxMDksIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTkzLCAKKyAgICA2NSwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxOTMsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgCisgICAgMjM3LCAxMzUsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMzcsIDEzNSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMzcsIDEzNSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxNCwgCisgICAgMTUzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIxNCwgMTUzLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAKKyAgICAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI2LCAKKyAgICAyMDQsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgOTIsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA5MCwgCisgICAgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgOTAsIDY1LCAxOSwgOSwgCisgICAgMzMsIDg0LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIAorICAgIDIwNCwgNjUsIDE5LCA5LCAzMywgODQsIDMsIDg0LCA2NSwgMTksIDksIDMzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIAorICAgIDE5LCA5LCAzMywgODQsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMTgsIDIyOCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIxOCwgMjI4LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIxOCwgMjI4LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjM0LCAKKyAgICAxMTYsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjM0LCAxMTYsIDMsIDkwLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMTU1LCAKKyAgICA2NSwgMTksIDksIDMzLCA5MCwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgCisgICAgOTAsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxMTUsIAorICAgIDMsIDIwNywgMjEzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDIxMywgMTU1LCAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIAorICAgIDMzLCAxNDAsIDIyMiwgMTg4LCAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjQyLCAxNiwgCisgICAgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDIyNywgMzUsIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyMzcsIAorICAgIDE1OSwgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDI0MiwgMTgsIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAKKyAgICAyMjcsIDM3LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5OSwgCisgICAgMTA2LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgCisgICAgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDgsIAorICAgIDI0MSwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxOTksIDEwNiwgNDcsIDE5LCA5LCAzMywgCisgICAgMjQ4LCAyNDEsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDI0OCwgMjQxLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5OSwgMTA2LCA0NywgMTksIAorICAgIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA5MCwgNDcsIDE5LCAKKyAgICA5LCAzMywgMjA2LCAxMDMsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyMDYsIDEwMywgMywgMTk5LCAxMDYsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDIxOCwgMjI4LCA0NywgMTksIAorICAgIDksIDMzLCAyMDYsIDEwMywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIAorICAgIDkwLCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgOTIsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDIyMiwgMTg4LCAKKyAgICA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCA4NCwgMywgMTQwLCA0NywgMTksIDksIDMzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAKKyAgICAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5OSwgMTA2LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgCisgICAgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIAorICAgIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTQwLCAyMjIsIAorICAgIDE4OCwgMywgMjA3LCAyMTMsIDE0MCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCA5MCwgCisgICAgMywgMTk5LCAxMDYsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIxOCwgMjI4LCAKKyAgICA0NywgMTksIDksIDMzLCA5MCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDkwLCAKKyAgICAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMzQsIDExNiwgCisgICAgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE1NSwgODIsIDE5LCAKKyAgICA5LCAzMywgMjQ4LCAyNDEsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDI0OCwgMjQxLCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5MywgODIsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgCisgICAgMjA2LCAxMDMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAxOTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDE1NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIyNiwgMjA0LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjExLCAKKyAgICAxODcsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIAorICAgIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgCisgICAgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCA4MiwgCisgICAgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE1NSwgODIsIDE5LCA5LCAKKyAgICAzMywgMjQyLCA1MywgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMDcsIDEwLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDE5OSwgMTA5LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIAorICAgIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTkzLCAKKyAgICA4MiwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxOTMsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIzNywgMTM1LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjM3LCAxMzUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTQsIAorICAgIDE1MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI1LCAKKyAgICA5MiwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgODIsIAorICAgIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgODIsIDE5LCAKKyAgICA5LCAzMywgMjI1LCA5MiwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIAorICAgIDMzLCA4NCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMjI2LCAKKyAgICAyMDQsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgODIsIDE5LCAKKyAgICA5LCAzMywgMjE4LCAyMjgsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMTgsIDIyOCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgCisgICAgMjM0LCAxMTYsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMzQsIAorICAgIDExNiwgMywgMjA3LCAyMTMsIDE0MCwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCA5MCwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgODQsIDE3OSwgMTksIAorICAgIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIAorICAgIDkyLCAxNzksIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIDE3OSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMTc5LCAKKyAgICAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMzQsIDExNiwgMTc5LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIAorICAgIDIxMCwgMTA1LCAzLCAyMzcsIDE1OSwgMTc5LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyNDIsIDE4LCAxNzksIDE5LCA5LCAKKyAgICAzMywgMjEwLCAxMDUsIDMsIDIyNywgMzcsIDE3OSwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgCisgICAgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDE0MCwgMjIyLCAxODgsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgCisgICAgNjUsIDE5LCA5LCAzMywgMTU1LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMTkzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIAorICAgIDksIDMzLCAxOTMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjI2LCAyMDQsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMTIsIDU3LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjQyLCA1MywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjEwLCAKKyAgICA2MiwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgCisgICAgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgCisgICAgMjEzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAKKyAgICAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA3LCAKKyAgICAxMCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNTEsIAorICAgIDE3MiwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAKKyAgICAyMzUsIDE5NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAyMTEsIDE4NywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxMCwgNjIsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMTkzLCAzLCAKKyAgICA5MCwgNDcsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAKKyAgICAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxOTMsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjI2LCAyMDQsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCA0NywgCisgICAgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIxMywgMTU1LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMjEzLCAxNTUsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTU1LCA4MiwgMTksIAorICAgIDksIDMzLCAyMTAsIDYyLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIxMSwgMTg3LCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjM0LCAxMTYsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTkzLCAxNzksIDE5LCA5LCAzMywgCisgICAgMjExLCAxODcsIDMsIDE1NSwgMTc5LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMjYsIDIwNCwgMTc5LCAxOSwgOSwgMzMsIAorICAgIDIxMCwgNjIsIDMsIDE5MywgMTc5LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgMTc5LCAxOSwgOSwgMzMsIDIxMCwgCisgICAgNjIsIDMsIDIyNiwgMjA0LCAxNzksIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDE3OSwgMTksIDksIDMzLCAxOTksIAorICAgIDEwOSwgMywgODQsIDE3OSwgMTksIDksIDMzLCAxNDAsIDMsIDIzNywgMTU3LCA0NywgMTksIDksIDMzLCAxNDAsIDMsIDIzNywgCisgICAgMTU3LCA2NSwgMTksIDIxNywgMTksIDQ5LCAyMTYsIDExNSwgMjE3LCAxOSwgNTEsIDIxNiwgMTE1LCA5LCAzMywgMjA2LCAKKyAgICAxODQsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDMsIDE5MywgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDE1NSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTU1LCAzLCA4NCwgODIsIAorICAgIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCAKKyAgICAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgCisgICAgMywgODQsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAxOTMsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDE5MywgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMTU1LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE1NSwgCisgICAgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNTUsIDMsIDE5MywgODIsIDE5LCAKKyAgICA5LCAzMywgMjExLCAxODcsIDMsIDE5MywgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTkzLCAzLCAxNDAsIAorICAgIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjExLCAKKyAgICAxODcsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgMywgMTkzLCA4MiwgMTksIDksIAorICAgIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDg0LCA4MiwgCisgICAgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgCisgICAgMTU1LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTU1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjEwLCAKKyAgICA2MiwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDMsIDIyNiwgMjA0LCA0NywgMTksIDksIAorICAgIDMzLCAyMTAsIDYyLCAzLCA4NCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCA4NCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDMsIAorICAgIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjQyLCA1MywgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgMTU1LCA0NywgCisgICAgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE5MywgMywgCisgICAgODQsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAKKyAgICA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjM1LCAxOTUsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgCisgICAgMjI2LCAyMDQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMTQsIDE1MywgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCA4NCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAKKyAgICAzLCAxOTMsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCAxOTMsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMjI2LCAyMDQsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMywgMTU1LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgMTU1LCA4MiwgCisgICAgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgODQsIDMsIDIyNiwgMjA0LCAzLCAxOTMsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxOTMsIDMsIDIyNiwgCisgICAgMjA0LCA4MiwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgODQsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIAorICAgIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE1NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgCisgICAgMjI4LCAzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDg0LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgCisgICAgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjE4LCAyMjgsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCA5MCwgMywgODQsIDMsIDg0LCA0NywgCisgICAgMTksIDksIDMzLCA5MCwgMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMjI2LCAyMDQsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5MywgCisgICAgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgCisgICAgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDE5MywgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxOTMsIDMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIAorICAgIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIyNiwgCisgICAgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMTAsIDYyLCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMywgOTAsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCA5MCwgMywgMTkzLCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE1NSwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDMsIAorICAgIDg0LCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgODQsIDMsIAorICAgIDIyNiwgMjA0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgCisgICAgMjI3LCA4NywgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDMsIDg0LCA0NywgMTksIDksIAorICAgIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCAKKyAgICA5LCAzMywgMTU1LCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjM3LCAxMzUsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE1NSwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE5MywgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIyNiwgCisgICAgMjA0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgCisgICAgMzAsIDIwMywgMTkyLCAyNTAsIDE4OSwgMjI2LCA2MCwgMjA4LCA3NywgMiwgNjUsIDE5LCA5LCAzMywgMjE0LCAxNDksIAorICAgIDIwMywgMTkyLCAyNTAsIDE4OSwgMjI2LCA2MCwgMjA4LCA3NywgMiwgNjUsIDE5LCA5LCAzMywgMjUxLCAxMjMsIDY1LCAxOSwgCisgICAgOSwgMzMsIDI1MSwgMTU2LCA2NSwgMTksIDksIDMzLCAyMjEsIDEwOSwgNjUsIDE5LCA5LCAzMywgMjEyLCAzMSwgNjUsIDE5LCAKKyAgICA5LCAzMywgMjEzLCAyMDYsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTQ1LCA2NSwgMTksIDksIDMzLCAyMDEsIDkyLCA2NSwgMTksIAorICAgIDksIDMzLCAyMTIsIDMwLCA2NSwgMTksIDksIDMzLCAyMTIsIDI5LCAyNTEsIDE0NSwgMjAxLCA5MSwgOSwgMzMsIDIyNywgCisgICAgMjM5LCAyMTMsIDg3LCA1NCwgOSwgMzMsIDI0OCwgMTU0LCAyNTAsIDI1MSwgMjUwLCAyNTIsIDU4LCAyMTEsIDE3NCwgNTgsIAorICAgIDIxMSwgNjMsIDU4LCAyMTAsIDI1MSwgNTgsIDIxMCwgMjQwLCA1OCwgMjEwLCAyMjksIDU4LCAyMTAsIDIxOCwgNTgsIDIxMCwgCisgICAgMjA3LCA1OCwgMjEwLCAxOTYsIDU4LCAyMTAsIDE4NSwgNTgsIDIxMSwgMTczLCA1OCwgMjExLCAxNjIsIDU4LCAyMTEsIAorICAgIDE1MSwgNTgsIDIxMSwgMTQwLCA1OCwgMjExLCAxMjksIDU4LCAyMTEsIDExOCwgNTgsIDIxMSwgMTA3LCAyMTUsIDE5LCAKKyAgICAyMzYsIDI0MiwgMzYsIDgzLCAyNDYsIDcwLCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAxNDEsIDI0NiwgNzAsIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDE0MSwgMjM2LCAxODMsIDIwOCwgNzYsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIAorICAgIDI0NiwgNzksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIxMCwgMTY3LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAKKyAgICAyMzgsIDQzLCA4MSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjE0LCA3OSwgODEsIDIxNSwgMTksIDIzNiwgMjQyLCAKKyAgICAzNiwgODMsIDQ5LCA2NCwgMjI0LCAyNDcsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDY0LCAyMjQsIAorICAgIDI0NywgMjQ4LCA2OCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjMzLCAxNzcsIDIzOCwgMTk1LCAzOCwgMzMsIDQ5LCAKKyAgICAyMzQsIDIxMywgMzgsIDMzLCA1MSwgMjM0LCAyMTMsIDM4LCA1MywgMjA1LCAyNDEsIDQ5LCAyMzQsIDIxMywgMzgsIDUzLCAKKyAgICAyMDUsIDI0MSwgNTEsIDIzNCwgMjEzLCAzOCwgMjIyLCAyMjksIDQ5LCAyMzQsIDIxMywgMzgsIDIyMiwgMjI5LCA1MSwgCisgICAgMjM0LCAyMTMsIDM4LCAyNDMsIDU2LCAyMjIsIDIyOCwgMzgsIDMzLCA0OSwgMTY3LCA1NywgMzgsIDMzLCA1MSwgMTY3LCAKKyAgICA1NywgMzgsIDIwNSwgMjQxLCA0OSwgMTY3LCA1NywgMzgsIDIwNSwgMjQxLCA1MSwgMTY3LCA1NywgMzgsIDIyMiwgMjI5LCAKKyAgICA0OSwgMTY3LCA1NywgMzgsIDIyMiwgMjI5LCA1MSwgMTY3LCA1NywgMzgsIDI0MywgNTYsIDIyMiwgMjI5LCA1NywgMzgsIAorICAgIDM3LCAyMDUsIDIxMSwgNDksIDIzNCwgMjEzLCAzOCwgMzcsIDIwNSwgMjExLCA1MSwgMjM0LCAyMTMsIDIxNSwgMTksIDIzNiwgCisgICAgMjQyLCAzNiwgODMsIDEyMCwgNzMsIDIyNSwgMzgsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIzOCwgMTkxLCAyNDEsIAorICAgIDI0NCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjM4LCAxODAsIDI0MSwgMjQ0LCAyMTUsIDE5LCAyMzYsIDI0MiwgCisgICAgMzYsIDgzLCAxMjgsIDIyNCwgMTc2LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMDEsIDc0LCAxMjgsIDIyNCwgMTc2LCAKKyAgICAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjE2LCAxMTUsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAKKyAgICAyMTYsIDExNSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDI0MiwgMTk2LCAxNTksIDIxNSwgMTksIDIzNiwgCisgICAgMjQyLCAzNiwgODMsIDUxLCAyNDIsIDE5NiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjA1LCAxNDYsIAorICAgIDIxMCwgNTUsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCA2MywgMjI0LCAyNDcsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgCisgICAgNTEsIDYzLCAyMjQsIDI0NywgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNTMsIDI1MSwgNzEsIDE1OSwgCisgICAgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDUzLCAyNTEsIDcxLCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgCisgICAgODMsIDQ5LCAyNTEsIDcxLCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAyNTEsIDcxLCAxNTksIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCAyNDMsIDE2LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAKKyAgICAyNDMsIDE2LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCA2NCwgMjQzLCAxNiwgMTU5LCAyMTUsIDE5LCAKKyAgICAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgNjQsIDI0MywgMTYsIDE1OSwgMjEwLCAxNDUsIDI0MCwgMTgyLCA2NCwgMjEwLCAxNDUsIAorICAgIDI0MCwgMTgyLCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNTIsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCAKKyAgICA4MywgNTEsIDUyLCAxNTksIDI0MSwgMjQzLCAyMTYsIDI0MSwgMjQ3LCA1MiwgMjE2LCAyNDEsIDIwMSwgNzQsIDIxNiwgCisgICAgMjQxLCA1MywgMjAxLCA3NCwgMjE2LCAyNDEsIDI0MSwgMjQzLCAxMjgsIDIyNCwgMTc2LCAyNDcsIDUyLCAxMjgsIDIyNCwgCisgICAgMTc2LCAyMDEsIDc0LCAxMjgsIDIyNCwgMTc2LCA0LCAyNDYsIDcwLCA0LCAxNDEsIDI0NiwgNzAsIDQsIDIzNiwgMTgzLCAKKyAgICAyMDgsIDc2LCA0LCAyMTAsIDE2NywgNCwgMjQ2LCA3OSwgNCwgMjE0LCA3OSwgODEsIDQsIDIzOCwgNDMsIDgxLCA0LCAyMzgsIAorICAgIDE5MSwgMjQxLCAyNDQsIDQsIDQ5LCAyMTYsIDExNSwgNCwgNTEsIDIxNiwgMTE1LCA0LCA0OSwgMjQyLCAxOTYsIDE1OSwgNCwgCisgICAgNTEsIDI0MiwgMTk2LCAxNTksIDQsIDQ5LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA0LCA1MSwgMjA1LCAxNDYsIDIxMCwgCisgICAgNTUsIDE1OSwgNCwgNDEsIDU0LCA0LCAyNTEsIDg5LCA0LCAyNTAsIDE2NSwgNCwgOTMsIDU0LCA0LCAyMzMsIDMyLCA0LCAKKyAgICAyMjQsIDI0MSwgNTQsIDQsIDIzNSwgNjcsIDU0LCA0LCAyMzgsIDEyMiwgNTQsIDQsIDIxMywgMTA2LCAyMDksIDE2LCA0LCAKKyAgICAyNDAsIDE5NCwgNTQsIDQsIDIxNiwgMjcsIDU0LCA0LCAyNDYsIDY4LCAyNTAsIDE1NSwgOSwgMjM3LCAxNTcsIDY1LCAxOSwgCisgICAgOSwgMjA2LCAyMjQsIDMsIDIzNywgMTU3LCA1NiwgOSwgMjQyLCAxNiwgNjUsIDE5LCA5LCAyMDcsIDcsIDIzNiwgMjE4LCA5LCAKKyAgICAyMjcsIDM1LCA2NSwgMTksIDksIDIzNywgMTU5LCA2NSwgMTksIDksIDIzNywgMTU5LCAxNzksIDE5LCA5LCAyNDIsIDE4LCAKKyAgICA2NSwgMTksIDksIDI0MiwgMTgsIDE3OSwgMTksIDksIDIyNywgMzcsIDY1LCAxOSwgOSwgMjI3LCAzNywgMTc5LCAxOSwgOSwgCisgICAgMjEwLCAxMDUsIDY1LCAxOSwgOSwgMjEwLCAxMDUsIDE3OSwgMTksIDksIDIwNywgMjM3LCA2NSwgMTksIDksIDIwNywgMjM3LCAKKyAgICAxNzksIDE5LCA5LCAxLCAyMzQsIDIwNCwgNjUsIDE5LCA5LCAxLCAxNDAsIDMsIDIyMiwgMjI0LCA4OCwgNjUsIDE5LCA5LCAKKyAgICAxLCAxNDAsIDMsIDIyMiwgMjI0LCA4OCwgNDcsIDE5LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAKKyAgICAxLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxLCAyMDEsIDczLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgCisgICAgOSwgMSwgMjAxLCA3MywgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDI0OCwgMjI4LCAKKyAgICA2NSwgMTksIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDI0OCwgMjI4LCA0NywgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgCisgICAgODgsIDY1LCAxOSwgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAKKyAgICA4MiwgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDE3OSwgMTksIDksIDEsIDE0MCwgNjUsIDE5LCA5LCAxLCAxNDAsIAorICAgIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNDEsIDY1LCAxOSwgOSwgMSwgMjQ4LCAyNDEsIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNDEsIAorICAgIDgyLCAxOSwgOSwgMSwgMjQ4LCAyNDEsIDE3OSwgMTksIDksIDEsIDIwNiwgMTg0LCAyMjIsIDE1NywgNjUsIDE5LCA5LCAxLCAKKyAgICAyMDYsIDE4NCwgMjIyLCAxNTcsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxODQsIDY1LCAxOSwgOSwgMSwgMjA2LCAxODQsIDQ3LCAKKyAgICAxOSwgOSwgMSwgMjA2LCAxODQsIDgyLCAxOSwgOSwgMSwgMjA2LCAxODQsIDE3OSwgMTksIDksIDEsIDIwNiwgMTAzLCA2NSwgCisgICAgMTksIDksIDEsIDIwNiwgMTAzLCA0NywgMTksIDksIDEsIDIwNiwgMTAzLCA4MiwgMTksIDksIDEsIDIwNiwgMTAzLCAxNzksIAorICAgIDE5LCA5LCAxLCAxOTMsIDY1LCAxOSwgOSwgMSwgMTkzLCA0NywgMTksIDksIDEsIDE5MywgODIsIDE5LCA5LCAxLCAxOTMsIAorICAgIDE3OSwgMTksIDksIDEsIDE1NSwgNjUsIDE5LCA5LCAxLCAxNTUsIDQ3LCAxOSwgOSwgMSwgMTU1LCA4MiwgMTksIDksIDEsIAorICAgIDE1NSwgMTc5LCAxOSwgOSwgMSwgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMSwgMjI2LCAyMDQsIDQ3LCAxOSwgOSwgMSwgMjI2LCAKKyAgICAyMDQsIDgyLCAxOSwgOSwgMSwgMjI2LCAyMDQsIDE3OSwgMTksIDksIDEsIDI0MiwgMzAsIDY1LCAxOSwgOSwgMSwgMjQyLCAKKyAgICAzMCwgNDcsIDE5LCA5LCAxLCAyMDYsIDExNSwgNjUsIDE5LCA5LCAxLCAyMDYsIDExNSwgNDcsIDE5LCA5LCAxLCAyMTMsIAorICAgIDE1NSwgNjUsIDE5LCA5LCAxLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAxLCAxOTksIDEwNiwgNjUsIDE5LCA5LCAxLCAxOTksIAorICAgIDEwNiwgNDcsIDE5LCA5LCAxLCAyMTEsIDE4NywgNjUsIDE5LCA5LCAxLCAyMTEsIDE4NywgNDcsIDE5LCA5LCAxLCAyMTEsIAorICAgIDE4NywgODIsIDE5LCA5LCAxLCAyMTEsIDE4NywgMTc5LCAxOSwgOSwgMSwgMjEwLCA2MiwgNjUsIDE5LCA5LCAxLCAyMTAsIAorICAgIDYyLCA0NywgMTksIDksIDEsIDIxMCwgNjIsIDgyLCAxOSwgOSwgMSwgMjEwLCA2MiwgMTc5LCAxOSwgOSwgMSwgMjEyLCA1NywgCisgICAgNjUsIDE5LCA5LCAxLCAyMTIsIDU3LCA0NywgMTksIDksIDEsIDIxMiwgNTcsIDgyLCAxOSwgOSwgMSwgMjEyLCA1NywgMTc5LCAKKyAgICAxOSwgOSwgMSwgMjQyLCA1MywgNjUsIDE5LCA5LCAxLCAyNDIsIDUzLCA0NywgMTksIDksIDEsIDI0MiwgNTMsIDgyLCAxOSwgCisgICAgOSwgMSwgMjQyLCA1MywgMTc5LCAxOSwgOSwgMSwgMjA3LCAxMCwgNjUsIDE5LCA5LCAxLCAyMDcsIDEwLCA0NywgMTksIDksIAorICAgIDEsIDIwNywgMTAsIDgyLCAxOSwgOSwgMSwgMjA3LCAxMCwgMTc5LCAxOSwgOSwgMSwgMTk5LCAxMDksIDY1LCAxOSwgOSwgMSwgCisgICAgMTk5LCAxMDksIDQ3LCAxOSwgOSwgMSwgMTk5LCAxMDksIDgyLCAxOSwgOSwgMSwgMTk5LCAxMDksIDE3OSwgMTksIDksIDEsIAorICAgIDI1MSwgMTcyLCA2NSwgMTksIDksIDEsIDI1MSwgMTcyLCA0NywgMTksIDksIDEsIDI1MSwgMTcyLCA4MiwgMTksIDksIDEsIAorICAgIDI1MSwgMTcyLCAxNzksIDE5LCA5LCAxLCAyMzUsIDE5NSwgNjUsIDE5LCA5LCAxLCAyMzUsIDE5NSwgNDcsIDE5LCA5LCAxLCAKKyAgICAyMzUsIDE5NSwgODIsIDE5LCA5LCAxLCAyMzUsIDE5NSwgMTc5LCAxOSwgOSwgMSwgMjM3LCAxMzUsIDY1LCAxOSwgOSwgMSwgCisgICAgMjM3LCAxMzUsIDQ3LCAxOSwgOSwgMSwgMjM3LCAxMzUsIDgyLCAxOSwgOSwgMSwgMjM3LCAxMzUsIDE3OSwgMTksIDksIDEsIAorICAgIDIxNCwgMTUzLCA2NSwgMTksIDksIDEsIDIxNCwgMTUzLCA0NywgMTksIDksIDEsIDIxNCwgMTUzLCA4MiwgMTksIDksIDEsIAorICAgIDIxNCwgMTUzLCAxNzksIDE5LCA5LCAxLCAyMjcsIDg3LCA2NSwgMTksIDksIDEsIDIyNywgODcsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI3LCA4NywgODIsIDE5LCA5LCAxLCAyMjcsIDg3LCAxNzksIDE5LCA5LCAxLCAyMjUsIDkyLCA2NSwgMTksIDksIDEsIAorICAgIDIyNSwgOTIsIDQ3LCAxOSwgOSwgMSwgMjI1LCA5MiwgODIsIDE5LCA5LCAxLCAyMjUsIDkyLCAxNzksIDE5LCA5LCAxLCA4NCwgCisgICAgNjUsIDE5LCA5LCAxLCA4NCwgNDcsIDE5LCA5LCAxLCA4NCwgODIsIDE5LCA5LCAxLCA4NCwgMTc5LCAxOSwgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDY1LCAxOSwgOSwgMSwgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMSwgMjE4LCAyMjgsIDgyLCAxOSwgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDE3OSwgMTksIDksIDEsIDIzNCwgMTE2LCA2NSwgMTksIDksIDEsIDIzNCwgMTE2LCA0NywgMTksIDksIDEsIDIzNCwgCisgICAgMTE2LCA4MiwgMTksIDksIDEsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAxLCAyMDEsIDczLCA2NSwgMTksIDksIDEsIDIwMSwgCisgICAgNzMsIDQ3LCAxOSwgOSwgMSwgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAxLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDEsIDkwLCA2NSwgMTksIDksIDEsIDkwLCA0NywgMTksIDksIDEsIDkwLCA4MiwgMTksIDksIDEsIDkwLCAxNzksIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMjIsIDIyNCwgODgsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgCisgICAgMjIyLCAyMjQsIDg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgCisgICAgMjM0LCAyMDQsIDI0OCwgMjI4LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIDIzNCwgMjA0LCAyNDgsIAorICAgIDIyOCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDQ3LCAKKyAgICAxOSwgMTk5LCA4MiwgMjAxLCAyNSwgMjE4LCAyNDAsIDIwOCwgMjQ0LCAxNTgsIDIzOCwgNDMsIDgxLCAxNTgsIDIxNCwgNjMsIAorICAgIDgxLCAxNTgsIDQxLCA1NCwgMTU4LCAyNDAsIDE5NCwgNTQsIDE1OCwgMjE2LCAyNywgNTQsIDE1OCwgMjUxLCA4OSwgMTU4LCAKKyAgICAyNTEsIDEzLCAxNTgsIDQ5LCAyMTYsIDExNSwgMTU4LCA1MSwgMjE2LCAxMTUsIDE1OCwgMjUwLCAxNjUsIDE1OCwgOTMsIAorICAgIDU0LCAxNTgsIDI0NiwgNzAsIDE1OCwgMjMzLCAzMiwgMTU4LCAyMzYsIDE4MywgMjA4LCA3NiwgMTU4LCAyMDksIDE2LCAKKyAgICAxNTgsIDE3LCAxOTksIDgxLCAxNTgsIDE3LCAxMDIsIDE1OCwgMTcsIDEwNSwgMTU4LCAxNywgMTQ3LCAxNTgsIDE3LCAxNDksIAorICAgIDE1OCwgMTcsIDE2NCwgMTU4LCAxNywgMTg3LCAxNTgsIDE3LCAyMTAsIDEzNSwgMTU4LCAxNywgMTkyLCAxNTgsIDE3LCAKKyAgICAyMTksIDExMywgMTU4LCAyNDYsIDc5LCAxNTgsIDIxMCwgMTY3LCAxNTgsIDIyNCwgMjQxLCA1NCwgMTU4LCAyMzgsIDEyMiwgCisgICAgNTQsIDE1OCwgMjM1LCA2NywgNTQsIDE1OCwgMjE0LCA3OSwgODEsIDE1OCwgMjQ2LCA2OCwgMjUwLCAxNTUsIDE1OCwgOCwgCisgICAgNiwgMSwgNjIsIDE1OCwgOCwgNiwgMSwgMjUwLCAxMDMsIDE1OCwgOCwgNiwgMSwgMjQ3LCAyMjMsIDE1OCwgOCwgNiwgMSwgCisgICAgMjQyLCAxNTMsIDE1OCwgOCwgNiwgMSwgNzIsIDE1OCwgOCwgNiwgMSwgMjM4LCA1LCAxNTgsIDgsIDYsIDEsIDIzNiwgMTU2LCAKKyAgICAxNTgsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxNTgsIDgsIDYsIDEsIDcwLCAxNTgsIDgsIDYsIDEsIDIyNywgMjUxLCAxNTgsIDgsIAorICAgIDYsIDEsIDIyNywgMTE4LCAxNTgsIDgsIDYsIDEsIDE1NiwgMTU4LCA4LCA2LCAxLCAyMjMsIDI0MywgMTU4LCA4LCA2LCAxLCAKKyAgICAyMjAsIDIxNCwgMTU4LCA4LCA2LCAxLCA3NCwgMTU4LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTU4LCA4LCA2LCAxLCAyMTQsIAorICAgIDE2NywgMTU4LCA4LCA2LCAxLCAxNDYsIDE1OCwgOCwgNiwgMSwgMjEyLCAxMjIsIDE1OCwgOCwgNiwgMSwgMjA3LCA4MywgCisgICAgMTU4LCA4LCA2LCAxLCA2NiwgMTU4LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTU4LCA4LCA2LCAxLCAyMDEsIDE0NywgMTU4LCA4LCAKKyAgICA2LCAxLCAyMDAsIDE5NSwgMTU4LCA4LCA2LCAxLCAyMDAsIDEyMywgMTU4LCA4LCA2LCAxLCAxOTksIDE1NywgMTU4LCA0OSwgCisgICAgNTIsIDE1OSwgMTU4LCAyMTMsIDEwNiwgMjA5LCAxNiwgMTU4LCA1MSwgNTIsIDE1OSwgMTU4LCAyNDYsIDE0NywgMjUxLCAKKyAgICAyNTEsIDE1OCwgMTI4LCAyMjQsIDE3NiwgMTU4LCAyMzUsIDc0LCAyNTEsIDI1MSwgMTU4LCA4LCA0LCAxLCA2MiwgMTU4LCAKKyAgICA4LCA0LCAxLCAyNTAsIDEwMywgMTU4LCA4LCA0LCAxLCAyNDcsIDIyMywgMTU4LCA4LCA0LCAxLCAyNDIsIDE1MywgMTU4LCAKKyAgICA4LCA0LCAxLCA3MiwgMTU4LCA4LCA0LCAxLCAyMzgsIDUsIDE1OCwgOCwgNCwgMSwgMjM2LCAxNTYsIDE1OCwgOCwgNCwgMSwgCisgICAgMjM0LCAyNDcsIDE1OCwgOCwgNCwgMSwgNzAsIDE1OCwgOCwgNCwgMSwgMjI3LCAyNTEsIDE1OCwgOCwgNCwgMSwgMjI3LCAKKyAgICAxMTgsIDE1OCwgOCwgNCwgMSwgMTU2LCAxNTgsIDgsIDQsIDEsIDIyMywgMjQzLCAxNTgsIDgsIDQsIDEsIDIyMCwgMjE0LCAKKyAgICAxNTgsIDgsIDQsIDEsIDc0LCAxNTgsIDgsIDQsIDEsIDIxNiwgMjI2LCAxNTgsIDgsIDQsIDEsIDIxNCwgMTY3LCAxNTgsIDgsIAorICAgIDQsIDEsIDE0NiwgMTU4LCA4LCA0LCAxLCAyMTIsIDEyMiwgMTU4LCA4LCA0LCAxLCAyMDcsIDgzLCAxNTgsIDgsIDQsIDEsIAorICAgIDY2LCAxNTgsIDgsIDQsIDEsIDIwMywgMTY4LCAxNTgsIDgsIDQsIDEsIDIwMSwgMTQ3LCAxNTgsIDgsIDQsIDEsIDIwMCwgCisgICAgMTk1LCAxNTgsIDgsIDQsIDEsIDIwMCwgMTIzLCAxNTgsIDgsIDQsIDEsIDE5OSwgMTU3LCAxNTgsIDQ5LCAyNDIsIDE5NiwgCisgICAgMTU5LCAxNTgsIDgzLCAyMjQsIDE3NiwgMTU4LCA1MSwgMjQyLCAxOTYsIDE1OSwgMTU4LCAyMDUsIDI0MCwgMTU4LCA0OSwgCisgICAgNjQsIDIxNiwgMTE1LCAxNTgsIDUxLCA2NCwgMjE2LCAxMTUsIDEzMCwgMTQxLCAyMzYsIDE4MywgMjA4LCA3NiwgMTMwLCAKKyAgICA0OSwgMjQzLCAxNiwgMTU5LCAxMzAsIDUxLCAyNDMsIDE2LCAxNTksIDEzMCwgMTQxLCAyNDYsIDcwLCAxMzAsIDY5LCAxMDEsIAorICAgIDI0MCwgMTgyLCAxMzAsIDY5LCAxLCAyMDEsIDAsIDEzMCwgNjksIDEsIDQsIDYyLCAxMzAsIDY5LCAxLCA0LCA3MCwgMTMwLCAKKyAgICA2OSwgMSwgNCwgNjYsIDEzMCwgNjksIDEsIDQsIDcyLCAxMzAsIDY5LCAxLCA0LCA3NCwgMTMwLCA2OSwgMSwgNCwgMTgzLCAKKyAgICAxMzAsIDY5LCAxLCA0LCAxOTksIDIxMSwgMTMwLCA2OSwgMSwgNCwgMTk5LCAyNDUsIDEzMCwgNjksIDEsIDQsIDIwNCwgCisgICAgMjE1LCAxMzAsIDIyNywgMzIsIDIxNCwgMjQ4LCAyMDksIDEsIDgxLCAxMzAsIDY5LCAxLCA2MiwgMTMwLCA2OSwgMSwgNzAsIAorICAgIDEzMCwgNjksIDEsIDY2LCAxMzAsIDY5LCAxLCA3MiwgMTMwLCA2OSwgMSwgNzQsIDEzMCwgNjksIDEsIDE2MSwgMTMwLCA2OSwgCisgICAgMSwgMjI2LCAxNjMsIDEzMCwgNjksIDEsIDIyNiwgMTUsIDEzMCwgNjksIDEsIDIyNywgOCwgMTMwLCA2OSwgMSwgMjI2LCAKKyAgICA4OCwgMTMwLCA2OSwgMSwgMjEyLCA2NCwgMTMwLCA2OSwgMSwgMjA5LCAxODIsIDEzMCwgNjksIDEsIDIwOCwgMjQsIDEzMCwgCisgICAgNjksIDEsIDIxMSwgMjAyLCAxMzAsIDY5LCAxLCAyMDksIDI5LCAxMzAsIDY5LCAxLCAyMDcsIDM2LCAxMzAsIDY5LCAxLCAKKyAgICAyMDYsIDE1LCAxMzAsIDY5LCAxLCAyMDQsIDIxNSwgMTMwLCA2OSwgMSwgMjA2LCAyMDEsIDEzMCwgNjksIDEsIDEzOCwgCisgICAgMTMwLCA2OSwgMSwgMTg4LCAxMzAsIDY5LCAxLCAyMTksIDE1MCwgMTMwLCA2OSwgMSwgMjE4LCAxMzMsIDEzMCwgNjksIDEsIAorICAgIDIyMCwgMzQsIDEzMCwgNjksIDEsIDIxOCwgMjQxLCAxMzAsIDY5LCAxLCAxNDQsIDEzMCwgNjksIDEsIDIzNCwgNzUsIDEzMCwgCisgICAgNjksIDEsIDIzMywgOTcsIDEzMCwgNjksIDEsIDIzNCwgMTM5LCAxMzAsIDY5LCAxLCAyMzMsIDIwNywgMTMwLCA2OSwgMSwgCisgICAgMTc4LCAxMzAsIDY5LCAxLCAyMjEsIDIxMSwgMTMwLCA2OSwgMSwgMjIxLCA0MSwgMTMwLCA2OSwgMSwgMjIyLCA3NiwgMTMwLCAKKyAgICA2OSwgMSwgMjIxLCAxMzYsIDEzMCwgNjksIDEsIDE4MywgMTMwLCA2OSwgMSwgMTk5LCAyMTEsIDEzMCwgNjksIDEsIDE5OSwgCisgICAgMjQ1LCAxMzAsIDY5LCAxLCAyMTMsIDI1MiwgMTMwLCA2OSwgMSwgMjEzLCA4OCwgMTMwLCA2OSwgMSwgMjEyLCAxNzUsIAorICAgIDEzMCwgNjksIDEsIDIxMywgMTkwLCAxMzAsIDY5LCAxLCAyMTMsIDEsIDEzMCwgNjksIDEsIDIwMSwgMTE0LCAxMzAsIDY5LCAKKyAgICAxLCAyMjAsIDIxNCwgMTMwLCA2OSwgMjAyLCAxODksIDIwOSwgMSwgODEsIDEzMCwgNjksIDIxMCwgMTcyLCAyMDksIDEsIAorICAgIDgxLCAxMzAsIDI5LCAyMzcsIDkzLCAxMzAsIDI5LCAxLCAyMjYsIDEyMSwgMTMwLCAyOSwgMSwgMjA4LCAxNzEsIDEzMCwgCisgICAgMjksIDEsIDIyNiwgMTE0LCAxMzAsIDI5LCAxLCAyMTksIDE0MywgMTMwLCAyOSwgMSwgMjE5LCAxNDEsIDEzMCwgMjksIDEsIAorICAgIDIxOSwgMTQwLCAxMzAsIDI5LCAxLCAyMDUsIDI1MywgMTMwLCAyOSwgMSwgMjA4LCAxNjAsIDEzMCwgMjksIDEsIDIxMywgCisgICAgNzgsIDEzMCwgMjksIDEsIDIxMywgNzMsIDEzMCwgMjksIDEsIDIxMywgNzAsIDEzMCwgMjksIDEsIDIxMywgNjMsIDEzMCwgCisgICAgMjksIDEsIDIxMywgNTgsIDEzMCwgMjksIDEsIDIxMywgNTMsIDEzMCwgMjksIDEsIDIxMywgNjQsIDEzMCwgMjksIDEsIAorICAgIDIxMywgNzYsIDEzMCwgMjksIDEsIDIyMSwgMTk3LCAxMzAsIDI5LCAxLCAyMTUsIDE5MCwgMTMwLCAyOSwgMSwgMjA4LCAKKyAgICAxNjgsIDEzMCwgMjksIDEsIDIxNSwgMTc5LCAxMzAsIDI5LCAxLCAyMDksIDEyOSwgMTMwLCAyOSwgMSwgMjA4LCAxNjUsIAorICAgIDEzMCwgMjksIDEsIDIyOCwgMTc0LCAxMzAsIDI5LCAxLCAyNDYsIDE2OCwgMTMwLCAyOSwgMSwgMjA4LCAxNzUsIDEzMCwgCisgICAgMjksIDEsIDI0NiwgMjMyLCAxMzAsIDI5LCAxLCAyMjYsIDE4MywgMTMwLCAyOSwgMSwgMjA2LCA4MCwgMTMwLCAyOSwgMSwgCisgICAgMjE1LCAyMjcsIDEzMCwgMjksIDEsIDIzNCwgNjYsIDEzMCwgMjksIDEsIDYyLCAxMzAsIDI5LCAxLCAyNTEsIDIyMSwgMTMwLCAKKyAgICAyOSwgMSwgMTgzLCAxMzAsIDI5LCAxLCAyMDAsIDk4LCAxMzAsIDI5LCAxLCAyMzgsIDE0MiwgMTMwLCAyOSwgMSwgNzIsIAorICAgIDEzMCwgMjksIDEsIDIwMCwgMzgsIDEzMCwgMjksIDEsIDIwMCwgNTEsIDEzMCwgMjksIDEsIDc0LCAxMzAsIDI5LCAxLCAKKyAgICAyMDEsIDExNCwgMTMwLCAyOSwgMSwgMjAxLCAxMTAsIDEzMCwgMjksIDEsIDIxNywgMTIxLCAxMzAsIDI5LCAxLCAxOTksIAorICAgIDI0NSwgMTMwLCAyOSwgMSwgNjYsIDEzMCwgMjksIDEsIDIwMSwgNTAsIDEzMCwgMjksIDEsIDIwMSwgNjQsIDEzMCwgMjksIAorICAgIDEsIDIwMSwgMzEsIDEzMCwgMjksIDEsIDE5OSwgMjExLCAxMzAsIDI5LCAxLCAyMzgsIDY5LCAxMzAsIDI5LCAxLCAyMDAsIAorICAgIDksIDEzMCwgMjksIDEsIDcwLCAxNTgsIDI0NywgNTgsIDU0LCAxNTgsIDIxNSwgNTYsIDU0LCAxNTgsIDIxOCwgMjE1LCA1NCwgCisgICAgMTU4LCAyMjIsIDIyOCwgMTU4LCAyNDgsIDQ2LCAxNDgsIDE1OCwgMjAwLCA0MiwgNTQsIDE1OCwgMjAwLCAyNDYsIDU0LCAKKyAgICAxMzAsIDIzNiwgMjM5LCAxNjIsIDIwMywgNDIsIDEzMCwgOTgsIDQ4LCAxMzAsIDE4MiwgNDgsIDEzMCwgODcsIDQ4LCAxMzAsIAorICAgIDE5MSwgNDgsIDEzMCwgNjMsIDIwOCwgMTkzLCAxMzAsIDY0LCAyNDYsIDE1NSwgMjI4LCA2MiwgMjUxLCA1OCwgMjUxLCA4MSwgCisgICAgMjI4LCA2MiwgMjUxLCA1OCwgMjEwLCAxNTQsIDIyOCwgNjIsIDI1MSwgNTgsIDIwNiwgMTUyLCAyMTcsIDEzOSwgMjEzLCAKKyAgICAxMjgsIDI0NywgMjAsIDIxMywgMTI4LCAyNDcsIDIwLCAzMCwgNjgsIDUsIDI1MCwgODcsIDYyLCAzMCwgNjgsIDUsIDI1MCwgCisgICAgNTYsIDcyLCAzMCwgNjgsIDUsIDI1MCwgNjUsIDcwLCAzMCwgNjgsIDUsIDI1MCwgMzMsIDc0LCAzMCwgNjgsIDUsIDI1MCwgCisgICAgODMsIDY2LCAzMCwgNjgsIDUsIDI1MCwgMTAyLCAyNDIsIDU4LCAzMCwgNjgsIDUsIDI1MCwgNDksIDI0MSwgMTc1LCAzMCwgCisgICAgNjgsIDUsIDI1MCwgODksIDI0MSwgNzYsIDMwLCA2OCwgNSwgMjUwLCA3OSwgMjQwLCAyMTEsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA0MywgMjM5LCAxMzcsIDMwLCA2OCwgNSwgMjUwLCAzNywgMjI3LCAyNDgsIDMwLCA2OCwgNSwgMjUwLCA0OCwgMjI3LCAyMjcsIAorICAgIDMwLCA2OCwgNSwgMjUwLCA1OCwgMjI3LCAxNjYsIDMwLCA2OCwgNSwgMjUwLCAyOSwgMjI3LCAxNDcsIDMwLCA2OCwgNSwgCisgICAgMjUwLCAxNywgMTYxLCAzMCwgNjgsIDUsIDI1MCwgNTAsIDIyNywgOCwgMzAsIDY4LCA1LCAyNTAsIDI3LCAyMjYsIDE2MywgCisgICAgMzAsIDY4LCA1LCAyNTAsIDI0LCAyMjYsIDg4LCAzMCwgNjgsIDUsIDI1MCwgMTMsIDIyNiwgMTUsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICAxNCwgMTc4LCAzMCwgNjgsIDUsIDI1MCwgODAsIDIyMiwgNzYsIDMwLCA2OCwgNSwgMjUwLCAyMSwgMjIxLCAyMTEsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA3OCwgMjIxLCAxMzYsIDMwLCA2OCwgNSwgMjUwLCA3MCwgMjIxLCA0MSwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDkxLCAxODgsIDMwLCA2OCwgNSwgMjUwLCA2OSwgMjIwLCAzNCwgMzAsIDY4LCA1LCAyNTAsIDYzLCAyMTksIDE1MCwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDQyLCAyMTgsIDI0MSwgMzAsIDY4LCA1LCAyNTAsIDM5LCAyMTgsIDEzMywgMzAsIDY4LCA1LCAyNTAsIAorICAgIDk4LCAxNzIsIDMwLCA2OCwgNSwgMjUwLCAyMiwgMjE2LCA3MywgMzAsIDY4LCA1LCAyNTAsIDU1LCAyMTUsIDIwNCwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDgyLCAyMTUsIDEwNiwgMzAsIDY4LCA1LCAyNTAsIDQ0LCAyMTQsIDIyNCwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDc3LCAyMTQsIDE1OSwgMzAsIDY4LCA1LCAyNTAsIDE2LCAyMTQsIDEzOSwgMzAsIDY4LCA1LCAyNTAsIDcyLCAyMTQsIDEyMSwgCisgICAgMzAsIDY4LCA1LCAyNTAsIDYxLCAyMTQsIDEwOSwgMzAsIDY4LCA1LCAyNTAsIDM0LCAyMTMsIDI1MiwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDY2LCAyMTMsIDE5MCwgMzAsIDY4LCA1LCAyNTAsIDQxLCAyMTMsIDg4LCAzMCwgNjgsIDUsIDI1MCwgMTAwLCAyMTMsIAorICAgIDEsIDMwLCA2OCwgNSwgMjUwLCA2NywgMjEyLCAxNzUsIDMwLCA2OCwgNSwgMjUwLCA2MiwgMjEyLCA2NCwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDg1LCAyMTEsIDIwMiwgMzAsIDY4LCA1LCAyNTAsIDUzLCAyMDksIDE4MiwgMzAsIDY4LCA1LCAyNTAsIDgxLCAyMDksIAorICAgIDI5LCAzMCwgNjgsIDUsIDI1MCwgMzYsIDIwOCwgMjQsIDMwLCA2OCwgNSwgMjUwLCAzNSwgMjA3LCAzNiwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDk2LCAyMDYsIDIwMSwgMzAsIDY4LCA1LCAyNTAsIDU3LCAyMDYsIDE1LCAzMCwgNjgsIDUsIDI1MCwgOTQsIDEzOCwgCisgICAgMzAsIDY4LCA1LCAyNTAsIDI1LCAyMDQsIDIxNSwgMzAsIDY4LCA1LCAyNTAsIDQwLCAyMDEsIDExNCwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDE5LCAyMDEsIDY0LCAzMCwgNjgsIDUsIDI1MCwgNTQsIDIwMSwgMzEsIDMwLCA2OCwgNSwgMjUwLCA1MiwgMjAxLCAKKyAgICAwLCAzMCwgNjgsIDUsIDI1MCwgNzYsIDE5OSwgMTE0LCAzMCwgNjgsIDUsIDI1MCwgMjAsIDE5OSwgODksIDMwLCA2OCwgNSwgCisgICAgMjUwLCA3MywgMTk5LCAxNCwgMzAsIDY4LCA1LCAyNTAsIDY4LCAyNTQsIDE0NywgMzAsIDY4LCA1LCAyNTAsIDUxLCAyNTQsIAorICAgIDM1LCAzMCwgNjgsIDUsIDI1MCwgMTAsIDI1MCwgMTM5LCAzMCwgNjgsIDUsIDI1MCwgMjMsIDIzOSwgMTAzLCAzMCwgNjgsIAorICAgIDUsIDI1MCwgNiwgMjM5LCAxMDIsIDMwLCA2OCwgNSwgMjUwLCA0NiwgMjE4LCA2OSwgMzAsIDY4LCA1LCAyNTAsIDY0LCAKKyAgICAyMTQsIDIyMiwgMzAsIDY4LCA1LCAyNTAsIDMyLCAyMTQsIDIyNiwgMzAsIDY4LCA1LCAyNTAsIDE4LCAyMTMsIDI1MCwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDYwLCAyMTMsIDI0OSwgMzAsIDY4LCA1LCAyNTAsIDI2LCAyMTMsIDAsIDMwLCA2OCwgNSwgMjUwLCAyOCwgCisgICAgMjA3LCAzMywgMzAsIDY4LCA1LCAyNTAsIDgsIDIwNCwgMTY4LCAzMCwgNjgsIDUsIDI1MCwgNSwgMTA1LCAzMCwgNjgsIDE2LCAKKyAgICAyNTAsIDc1LCAzMCwgNjgsIDE2LCAyNTAsIDc0LCAzMCwgNjgsIDE2LCAyNTAsIDcxLCAzMCwgNjgsIDE2LCAyNTAsIDU5LCAKKyAgICAzMCwgNjgsIDE2LCAyNTAsIDQ3LCAzMCwgNjgsIDE2LCAyNTAsIDQ1LCAzMCwgNjgsIDE2LCAyNTAsIDM4LCAzMCwgNjgsIAorICAgIDE2LCAyNTAsIDMxLCAzMCwgNjgsIDE2LCAyNTAsIDMwLCAzMCwgNjgsIDE2LCAyNTAsIDE1LCAzMCwgNjgsIDE2LCAyNTAsIAorICAgIDEyLCAzMCwgNjgsIDE2LCAyNTAsIDExLCAzMCwgNjgsIDE2LCAyNTAsIDksIDMwLCA2OCwgMTYsIDI1MCwgNywgMzAsIDY4LCAKKyAgICAxMzYsIDI1MCwgNCwgMjIyLCAxODAsIDMwLCA2OCwgMTM2LCAyNTAsIDMsIDIwMCwgMjUwLCAzMCwgNjgsIDEzNiwgMjUwLCAKKyAgICAyLCAyNDEsIDE1OCwgMzAsIDY4LCAxMzYsIDI1MCwgMSwgMjM4LCAxMTksIDMwLCA2OCwgMTM2LCAyNTAsIDAsIDIyMiwgCisgICAgMTUwLCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTUsIDIwOCwgMTE2LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTQsIDIzOCwgNTAsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDI1MywgMjEzLCAyMTYsIDMwLCA2OCwgMTM2LCAyNDksIDI1MiwgMjEwLCA2NCwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMjUxLCAyMzQsIDEzOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjUwLCAyMDgsIDI1MSwgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjQ5LCAyNDgsIDEyMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ4LCAyNDIsIDI1NSwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ3LCAKKyAgICAyNDgsIDIyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDYsIDIwMSwgMzksIDMwLCA2OCwgMTM2LCAyNDksIDI0NSwgMjQ5LCA3MywgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMjQ0LCAyMTcsIDg4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDMsIDIwOCwgMjIzLCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyNDIsIDI0MiwgMTYxLCAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMjQxLCAyMjcsIDU2LCAzMCwgNjgsIDIyMSwgCisgICAgOTcsIDI0OSwgMjQwLCAyMjcsIDY2LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzksIDIxNywgMTAzLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMzgsIDIwMSwgMTIsIDMwLCA2OCwgMTM2LCAyNDksIDIzNywgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDIzNiwgMjUwLCAyMjcsIAorICAgIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyMzUsIDIyMiwgMzIsIDMwLCA2OCwgMTM2LCAyNDksIDIzNCwgMjQ4LCA0NSwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjMzLCAyMzUsIDEwOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjMyLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMzEsIDIwMCwgMjQxLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzAsIDMwLCA2OCwgMTM2LCAyNDksIDIyOSwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMjI4LCAyMzMsIDEyNCwgMzAsIDY4LCAxMzYsIDI0OSwgMjI3LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjYsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDIyNSwgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDIyMywgMjA0LCAxODMsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDIyMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjIxLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjAsIDI0NiwgMTA0LCAzMCwgNjgsIDEzNiwgCisgICAgMjQ5LCAyMTksIDMwLCA2OCwgMTM2LCAyNDksIDIxOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjE3LCAyMzYsIDQ2LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyMTYsIDI1MCwgMjE0LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTUsIDMwLCA2OCwgMTM2LCAyNDksIDIxNCwgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMjEzLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTIsIDMwLCA2OCwgMTM2LCAyNDksIDIxMSwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjEwLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDksIDMwLCA2OCwgMTM2LCAyNDksIDIwOCwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjA3LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDYsIDIyMSwgODksIDMwLCA2OCwgMTM2LCAyNDksIDIwNSwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjA0LCAyMDUsIDEwOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjAzLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMDIsIDMwLCA2OCwgMTM2LCAyNDksIDIwMSwgMzAsIDY4LCAxMzYsIDI0OSwgMjAwLCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTksIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDE5OCwgMzAsIDY4LCAxMzYsIDI0OSwgMTk3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTYsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDE5NSwgMzAsIDY4LCAxMzYsIDI0OSwgMTk0LCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTMsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDE5MiwgMjM0LCAxMDcsIDMwLCA2OCwgMTM2LCAyNDksIDE3MSwgMjM2LCAyNTEsIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDE2OCwgMjQ5LCA1MCwgMzAsIDY4LCAxMzYsIDI0OSwgMTYzLCAyMDgsIDIzMCwgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMTYyLCA0OCwgMzAsIDY4LCAxMzYsIDI0OSwgMTYxLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNjAsIDIwNywgMTY5LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAxNTksIDMwLCA2OCwgMTM2LCAyNDksIDE1OCwgMzAsIDY4LCAxMzYsIDI0OSwgMTU3LCAyMDEsIDM1LCAKKyAgICAyNDcsIDE3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTYsIDI0NywgMTcsIDMwLCA2OCwgMTM2LCAyNDksIDE1NSwgMjQ3LCAxOCwgCisgICAgMjM2LCAyMTUsIDMwLCA2OCwgMTM2LCAyNDksIDE1NCwgMjAxLCAzNywgMzAsIDY4LCAxMzYsIDI0OSwgMTUzLCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAxNTIsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAxNTEsIDI0MSwgMTEsIDMwLCA2OCwgMTM2LCAyNDksIDE1MCwgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMTQ5LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDcsIDMwLCA2OCwgMTM2LCAyNDksIDE0NiwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMTQ1LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDQsIDI0MSwgMjQ3LCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAxNDMsIDMwLCA2OCwgMTM2LCAyNDksIDE0MiwgMzAsIDY4LCAxMzYsIDI0OSwgMTQxLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDAsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDEzOSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDIyNCwgMzAsIDY4LCAxMzYsIDIwMiwgCisgICAgMjQ1LCAyNDksIDE5MSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE5MCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAKKyAgICAyNDksIDE4OSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4OCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIAorICAgIDE4NywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4NiwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4NSwgCisgICAgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4NCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4MywgMzAsIDY4LCAKKyAgICAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4MiwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4MSwgMzAsIDY4LCAxMzYsIAorICAgIDIwMiwgMjQ1LCAyNDksIDE4MCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3OSwgMzAsIDY4LCAxMzYsIDIwMiwgCisgICAgMjQ1LCAyNDksIDE3OCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3NywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAKKyAgICAyNDksIDE3NiwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3NSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIAorICAgIDE3NCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3MywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3MiwgCisgICAgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3MCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2OSwgMzAsIDY4LCAKKyAgICAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2NywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2NiwgMzAsIDY4LCAxMzYsIAorICAgIDIwMiwgMjQ1LCAyNDksIDE2NSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2NCwgMzAsIDY4LCAxMzYsIDIwMiwgCisgICAgMjQ1LCAyNDksIDE0OCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDEzOCwgMjUxLCAyMTQsIDIwMCwgMjM4LCAyMTAsIAorICAgIDE1NSwgMjI0LCAxNzYsIDI1MSwgMjE0LCAyMDAsIDIzOCwgMjEwLCAxNTUsIDI0MCwgMTgyLCAyNTEsIDIxNCwgMjQ3LCA3LCAKKyAgICA4MSwgMjUxLCAyMTQsIDQxLCAxMDIsIDI1MSwgMjE0LCA0MSwgMTA1LCAyNTEsIDIxNCwgNDEsIDE0NywgMjUxLCAyMTQsIAorICAgIDQxLCAxNDksIDI1MSwgMjE0LCA0MSwgMTY0LCAyNTEsIDIxNCwgNDEsIDE4NywgMjUxLCAyMTQsIDQxLCAyMTAsIDEzNSwgCisgICAgMjUxLCAyMTQsIDQxLCAxOTIsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMTMsIDI1MSwgMjE0LCA0MSwgMjA2LCAxNjYsIDI1MSwgCisgICAgMjE0LCA0MSwgMjA0LCAxNTksIDI1MSwgMjE0LCA0MSwgMjA2LCA2NywgMjUxLCAyMTQsIDQxLCAyMzYsIDIzNSwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMzcsIDEwNCwgMjUxLCAyMTQsIDQxLCAyMDksIDkyLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTI5LCAyNTEsIAorICAgIDIxNCwgNDEsIDIzOCwgMjIyLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTA4LCAyNTEsIDIxNCwgNDEsIDExMiwgMjMzLCA4MiwgCisgICAgMjUxLCAyMTQsIDQxLCAxMjAsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMTI2LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIAorICAgIDIzNiwgMjI5LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIzNywgNjEsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjA5LCAKKyAgICAxMDYsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzYsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjM4LCAyMzIsIAorICAgIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMTQsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMTEyLCAyMDYsIDUwLCAKKyAgICAyNTEsIDIxNCwgNDEsIDEyMCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAxMjYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgCisgICAgMjM2LCAyMjksIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM3LCA2MSwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMDksIAorICAgIDEwNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMTAsIDEzNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMzgsIDIzMiwgCisgICAgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMTksIDExNCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMDYsIDE2NywgMjA2LCAKKyAgICA1MCwgMjUxLCAyMTQsIDQxLCAyMDQsIDE2MCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMDYsIDY4LCAyMDYsIDUwLCAyNTEsIAorICAgIDIxNCwgNDEsIDIzNiwgMjM2LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzNywgMTA1LCAyMDYsIDUwLCAyNTEsIDIxNCwgCisgICAgNDEsIDIwOSwgOTMsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzAsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM4LCAKKyAgICAyMjMsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMDksIDIwNiwgNTAsIDI1MSwgMjE0LCAyMDEsIDUzLCAyNDksIAorICAgIDY1LCAyMDMsIDIzOSwgMjUxLCAyMTQsIDIwMSwgNTMsIDIzNywgNzMsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjAxLCA1MywgCisgICAgMjExLCAxOTYsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjAxLCA1MywgMjA2LCA3NSwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMDEsIAorICAgIDUzLCAyMzYsIDIyMiwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMzksIDE0MCwgMjIyLCA3NSwgMjM3LCA3MywgMjA3LCAyNTQsIAorICAgIDI1MSwgMjE0LCAyMjQsIDE1NywgMjIyLCA3NSwgMjM3LCA3MywgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMjIsIDc1LCAyMTEsIAorICAgIDE5NiwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMjIsIDc1LCAyMDYsIDc1LCAyMDcsIDI1NCwgMzEsIDI1MSwgMjQyLCAyNTAsIAorICAgIDE0MSwgMTEyLCAyMTQsIDg3LCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAxMTIsIDIzNCwgMjEzLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAxMTIsIDIzOSwgMTYyLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAxNjQsIDMxLCAyNTEsIDI0MiwgMjUwLCAKKyAgICAxNDEsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAyMzcsIDYxLCAyMDYsIDUwLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDEwNSwgMjA2LCA1MCwgCisgICAgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIwNiwgCisgICAgMTY3LCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAxMTIsIDIzMywgODMsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMzMsIAorICAgIDgzLCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTEyLCAyMDYsIDUxLCAyMDYsIDI1MSwgMzEsIDI1MSwgCisgICAgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjA2LCA1MSwgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgCisgICAgNjEsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIDE2NywgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTEyLCAyMzMsIDgzLCAyMDgsIAorICAgIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjMzLCA4MywgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDExMiwgMjA2LCA1MSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIwNiwgMTY3LCAyMDYsIAorICAgIDUxLCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwNiwgNTEsIDIwOCwgMTAzLCAzMSwgCisgICAgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIDE2NywgMjIxLCAxMzksIDMxLCAyNTEsIDI0MiwgMjM0LCAxMDEsIDExMiwgMjE1LCAKKyAgICAxMjMsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTAyLCAzMSwgMjUxLCAyNDIsIDIzNCwgOTcsIDEwMiwgMzEsIDI1MSwgCisgICAgMjQyLCAyMzgsIDEyOCwgMTA1LCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDEwNSwgMzEsIDI1MSwgMjQyLCAyNDIsIDE1OCwgCisgICAgMTIwLCAyMzksIDE2MSwgMzEsIDI1MSwgMjQyLCAyMzgsIDEyOCwgMTIwLCAyMzksIDE2MSwgMzEsIDI1MSwgMjQyLCAyMDUsIAorICAgIDc0LCAxNjQsIDMxLCAyNTEsIDI0MiwgMjA1LCA3NCwgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjA1LCA3NCwgMjA2LCAKKyAgICAxNjcsIDI1MSwgMTA5LCAxOSwgMzEsIDI1MSwgMjQyLCAyMzQsIDk3LCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMjIsIAorICAgIDIyLCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAKKyAgICAyMDYsIDY3LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIzNywgCisgICAgMTA1LCAyNTEsIDEwOSwgMTksIDMxLCAyNTEsIDI0MiwgMjM0LCA5NywgMjM3LCAxMDQsIDMxLCAyNTEsIDI0MiwgMjA2LCAKKyAgICA5MCwgMjM3LCAxMDQsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTEyLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIAorICAgIDEyNiwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMzgsIDEyOCwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAKKyAgICAyMDUsIDc0LCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDIzNywgNjEsIDIzMywgODIsIDMxLCAKKyAgICAyNTEsIDI0MiwgMjQ3LCAxMTUsIDIzNywgNjEsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjIwLCAxMTAsIDIzNywgNjEsIAorICAgIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTEyLCAyMDYsIDUwLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDIzNywgCisgICAgNjEsIDIwNiwgNTAsIDMxLCAyNTEsIDI0MiwgMjQxLCAxMzksIDIzNywgNjEsIDIyMSwgMTM5LCAzMSwgMjUxLCAyNDIsIAorICAgIDIwOCwgNjQsIDIzNywgMTA1LCAyMjEsIDEzOSwgMzEsIDExMiwgMTY3LCA1NCwgMzEsIDExMiwgMTY3LCAyLCAyNTEsIDEwOSwgCisgICAgMTksIDMxLCAxMjAsIDIwNiwgNzIsIDU0LCAzMSwgMTI2LCAyMTQsIDg2LCA1NCwgMzEsIDIwMCwgNDksIDU0LCAzMSwgMjA2LCAKKyAgICAyNTIsIDU0LCAzMSwgMjM5LCAxNjMsIDU0LCAzMSwgMjE3LCAxMzYsIDU0LCAzMSwgMTIwLCAyMTcsIDEzNSwgNTQsIDMxLCAKKyAgICAxMjYsIDIxNywgMTM1LCA1NCwgMzEsIDIzNiwgMjI5LCAyMTcsIDEzNSwgNTQsIDMxLCAyMzcsIDYxLCAyMTcsIDEzNSwgNTQsIAorICAgIDMxLCAyMjIsIDE2LCA1NCwgMzEsIDIyNSwgMjAxLCAyNDksIDY1LCA1NCwgMzEsIDIyNCwgMTUwLCA1NCwgMzEsIDIxNywgMCwgCisgICAgNTQsIDMxLCAyMDAsIDE3MiwgNTQsIDMxLCAyNTAsIDE5NSwgNTQsIDMxLCAyNTAsIDIxMCwgNTQsIDMxLCAyMzUsIDgzLCAKKyAgICA1NCwgMzEsIDIwNSwgMzUsIDI0OSwgNjUsIDU0LCAzMSwgMTk5LCA4MiwgNTQsIDMxLCAxMTIsIDIxNCwgODgsIDU0LCAzMSwgCisgICAgMjA5LCAxMzEsIDU0LCAzMSwgMjI4LCA5OCwgNTQsIDIxOCwgMjM1LCA1NCwgMjEyLCAyNDAsIDIxMCwgMTI2LCA1NCwgMjEyLCAKKyAgICAyNDAsIDIwMywgMjU0LCA1NCwgMjEyLCAyNDAsIDIxMCwgMTU5LCA1NCwgMjEyLCAyNDAsIDIxMCwgMTI0LCA1NCwgMjEyLCAKKyAgICAyNDAsIDI0MSwgMjYsIDIxMCwgMTI0LCA1NCwgMjEyLCAyNDAsIDIwOSwgMTU0LCA1NCwgMjEyLCAyNDAsIDI0MSwgMTM1LCAKKyAgICA1NCwgMjEyLCAyNDAsIDIxNCwgNzEsIDU0LCAyMTIsIDI0MCwgMjEwLCAxNDMsIDU0LCAyMTIsIDI0MCwgMjM5LCAxMTcsIAorICAgIDU0LCAyMTIsIDI0MCwgMjUwLCAxODksIDU0LCAyMTIsIDI0MCwgMjQ3LCA1MSwgNTQsIDMxLCAxNiwgMjA2LCAyMjIsIDIxMywgCisgICAgOTAsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNiwgNjMsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNSwgMTE1LCAyMzQsIAorICAgIDEzNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjA2LCAyMjUsIDIzNCwgMTM2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDcsIAorICAgIDEzOCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ2LCAyMjcsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwMCwgMjUwLCAyMTUsIAorICAgIDI0MCwgMjQxLCAzLCAyLCAyMzQsIDEwNywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM2LCAzOCwgMjE1LCAyNDAsIDI0MSwgMywgCisgICAgMiwgMjA2LCAxMywgMjE1LCAyNDAsIDI0MSwgMywgMiwgNDgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgODUsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDIxMCwgMzAsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0NiwgOTcsIDIxNSwgMjQwLCAyNDEsIDMsIAorICAgIDIsIDIyMiwgMTc5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMjIsIDEyNCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjExLCAKKyAgICAyMzksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIyNCwgMjA1LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDgsIDEwNiwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjQ3LCAxMjIsIDIxNSwgMTI4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDAsIDE5NSwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjQ2LCA3NiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjA5LCA2MywgMjE1LCAyNDAsIDI0MSwgMywgCisgICAgMiwgMjQ2LCA3NywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCAyNDksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxMCwgMTcsIAorICAgIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzMywgMTI0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzQsIDcyLCAyMTUsIDI0MCwgCisgICAgMjQxLCAzLCAyLCAyNDgsIDE3LCAyMjUsIDE2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDcsIDExMSwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjEzLCAyMTYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzOSwgMjQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIAorICAgIDIzOSwgMTY4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDQsIDE5OSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCAyNTIsIAorICAgIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNSwgMTI5LCAyMDUsIDEwOCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjAyLCAyMTUsIAorICAgIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNiwgMTMxLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTIsIDIzMSwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjI0LCAxODksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNiwgMjM2LCAyNDksIDEyOSwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjM3LCAyMCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM1LCA3NSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgCisgICAgMjA4LCA2NSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgNCwgMjUwLCAxMTMsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwMSwgNzQsIAorICAgIDI0OSwgODQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDM4LCAyMTcsIDEzOCwgOTcsIDIyNCwgMCwgMSwgNjIsIDIyNCwgMCwgMSwgCisgICAgNzIsIDIyNCwgMCwgMSwgMjUwLCAxMDMsIDIyNCwgMCwgMSwgMjQ4LCAyMDEsIDIyNCwgMCwgMSwgMjM2LCAxNTYsIDIyNCwgCisgICAgMCwgMSwgMjQyLCAxNTMsIDIyNCwgMCwgMSwgNzAsIDIyNCwgMCwgMSwgMjAxLCAxNDcsIDIyNCwgMCwgMSwgMTk5LCAxNTcsIAorICAgIDIyNCwgMCwgMSwgMjA2LCAxMjQsIDIyNCwgMCwgMSwgMjI3LCAyNTEsIDIyNCwgMCwgMSwgMjI3LCAxMTgsIDIyNCwgMCwgMSwgCisgICAgMjE0LCAxNjcsIDIyNCwgMCwgMSwgMTU2LCAyMjQsIDAsIDEsIDIyMywgMjQzLCAyMjQsIDAsIDEsIDIyMCwgMjE0LCAyMjQsIAorICAgIDAsIDEsIDIyMSwgMTQxLCAyMjQsIDAsIDEsIDIxOSwgMjIsIDIyNCwgMCwgMSwgNjYsIDIyNCwgMCwgMSwgMjE2LCAyMjYsIAorICAgIDIyNCwgMCwgMSwgMjI2LCAxMTAsIDIyNCwgMCwgMSwgMTQ2LCAyMjQsIDAsIDEsIDIxMiwgMTIyLCAyMjQsIDAsIDEsIDIwNywgCisgICAgODMsIDIyNCwgMCwgMSwgMjA1LCAwLCAyMjQsIDAsIDEsIDI1MSwgODUsIDIyNCwgMCwgMSwgMjM4LCAxNzksIDIyNCwgMCwgCisgICAgMSwgMjM0LCAyNDcsIDIyNCwgMCwgMSwgMjAwLCAxOTUsIDI0NywgMTI4LCAxLCA2MiwgMjQ3LCAxMjgsIDEsIDIxNiwgMjEyLCAKKyAgICAyNDcsIDEyOCwgMSwgMjQyLCAxNTMsIDI0NywgMTI4LCAxLCAxNTYsIDI0NywgMTI4LCAxLCAyMDMsIDE4MCwgMjQ3LCAxMjgsIAorICAgIDEsIDE0NiwgMjQ3LCAxMjgsIDEsIDIyNSwgNDQsIDI0NywgMTI4LCAxLCAyNTQsIDE0NywgMjQ3LCAxMjgsIDEsIDIxNCwgCisgICAgMTY3LCAyNDcsIDEyOCwgMSwgMjUwLCAxMDMsIDI0NywgMTI4LCAxLCAyMjMsIDI0MywgMjQ3LCAxMjgsIDEsIDc0LCAyNDcsIAorICAgIDEyOCwgMSwgMjQyLCA2MCwgMjQ3LCAxMjgsIDEsIDIwNywgODMsIDI0NywgMTI4LCAxLCAyMTAsIDExNiwgMjQ3LCAxMjgsIAorICAgIDEsIDIxMCwgMTE1LCAyNDcsIDEyOCwgMSwgMjEyLCAxMjIsIDI0NywgMTI4LCAxLCAyNDcsIDIyMiwgMjQ3LCAxMjgsIDEsIAorICAgIDY2LCAyNDcsIDEyOCwgMSwgMjE5LCAyMiwgMjQ3LCAxMjgsIDEsIDIwMCwgMTk1LCAyNDcsIDEyOCwgMSwgMjIwLCAyMTQsIAorICAgIDI0NywgMTI4LCAxLCAyMDQsIDI1NSwgMjQ3LCAxMjgsIDEsIDIxNiwgMjI2LCAyNDcsIDEyOCwgMSwgMjA4LCAxODIsIDI0NywgCisgICAgMTI4LCAxLCA3MCwgMjQ3LCAxMjgsIDEsIDcyLCAyNDcsIDEyOCwgMSwgMjAzLCAxNzcsIDI0NywgMTI4LCAxLCAyMjcsIAorICAgIDExOCwgMjQ3LCAxMjgsIDEsIDIyNywgMTA5LCAyNDcsIDEyOCwgMSwgMjIwLCA3NywgMjQ3LCAxMjgsIDEsIDIwMywgMTgyLCAKKyAgICAyNDcsIDEyOCwgMSwgMjM2LCAxNTYsIDI0NywgMTI4LCAxLCAyMzYsIDkxLCAyNDcsIDEyOCwgMSwgMjA4LCAxMjMsIDI0NywgCisgICAgMTI4LCAxLCAyMDgsIDEyMiwgMjQ3LCAxMjgsIDEsIDIxOSwgMjU1LCAyNDcsIDEyOCwgMSwgMjI4LCAxNTEsIDI0NywgMTI4LCAKKyAgICAxLCAyNDcsIDIyMSwgMjQ3LCAxMjgsIDEsIDIwNSwgMCwgMjQ3LCAxMjgsIDEsIDIwMywgMTc5LCAyNDcsIDEyOCwgMSwgCisgICAgMjEyLCAyMTYsIDI0NywgMTI4LCAxLCAyMjIsIDExNSwgMjQ3LCAxMjgsIDEsIDIyMiwgMTE0LCAyNDcsIDEyOCwgMSwgMjIyLCAKKyAgICAxMTMsIDI0NywgMTI4LCAxLCAyMjIsIDExMiwgMjQ3LCAxMjgsIDEsIDIyNSwgNDMsIDI0NywgMTI4LCAxLCAyMzksIDI4LCAKKyAgICAyNDcsIDEyOCwgMSwgMjAzLCAxNzgsIDg1LCAyMzgsIDEzMSwgMjA2LCA0OSwgODEsIDg1LCAyMzgsIDEzMSwgMTcsIDEwMiwgCisgICAgODUsIDIzOCwgMTMxLCAxNywgMTA1LCA4NSwgMjM4LCAxMzEsIDE3LCAxNDcsIDg1LCAyMzgsIDEzMSwgMTcsIDE0OSwgODUsIAorICAgIDIzOCwgMTMxLCAxNywgMTY0LCA4NSwgMjM4LCAxMzEsIDE3LCAxODcsIDg1LCAyMzgsIDEzMSwgMTcsIDIxMCwgMTM1LCA4NSwgCisgICAgMjM4LCAxMzEsIDE3LCAxOTIsIDg1LCAyMzgsIDEzMSwgMTcsIDIxOSwgMTEzLCA4NSwgMjM4LCAxMzEsIDQxLCAyMDYsIAorICAgIDE2NiwgODUsIDIzOCwgMTMxLCA0MSwgMjA0LCAxNTksIDg1LCAyMzgsIDEzMSwgNDEsIDIwNiwgNjcsIDg1LCAyMzgsIDEzMSwgCisgICAgNDEsIDIzNiwgMjM1LCA4NSwgMjM4LCAxMzEsIDQxLCAyMzcsIDEwNCwgODUsIDIzOCwgMTMxLCA0MSwgMjA5LCA5MiwgODUsIAorICAgIDIzOCwgMTMxLCA0MSwgMjEwLCAxMjksIDg1LCAyMzgsIDEzMSwgNDEsIDIzOCwgMjIyLCA4NSwgMjM4LCAxMzEsIDQxLCAKKyAgICAyMTksIDEwOCwgODUsIDIzOCwgMTMxLCA0MSwgMTEyLCAyMzMsIDgyLCA4NSwgMjM4LCAxMzEsIDQxLCAxMjAsIDIzMywgODIsIAorICAgIDg1LCAyMzgsIDEzMSwgNDEsIDEyNiwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMjM2LCAyMjksIDIzMywgODIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIzNywgNjEsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDIwOSwgMTA2LCAyMzMsIDgyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMjM4LCAyMzIsIDIzMywgODIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCA0MCwgMzksIDEsIDYyLCA0MCwgMzksIDEsIDI0OSwgOCwgNDAsIAorICAgIDM5LCAxLCAyMjcsIDgsIDQwLCAzOSwgMSwgMjQxLCAxNzUsIDQwLCAzOSwgMSwgNzIsIDQwLCAzOSwgMSwgMjAzLCA1OSwgCisgICAgNDAsIDM5LCAxLCAxOTksIDg5LCA0MCwgMzksIDEsIDIzNCwgMTM5LCA0MCwgMzksIDEsIDIwNiwgMTA2LCA0MCwgMzksIDEsIAorICAgIDcwLCA0MCwgMzksIDEsIDE2MSwgNDAsIDM5LCAxLCAyMzgsIDIwOSwgNDAsIDM5LCAxLCAyMzgsIDE5MCwgNDAsIDM5LCAxLCAKKyAgICAyMzgsIDE3OSwgNDAsIDM5LCAxLCAyMzgsIDk0LCA0MCwgMzksIDEsIDc0LCA0MCwgMzksIDEsIDIxNiwgNzMsIDQwLCAzOSwgCisgICAgMSwgMjEwLCA2NSwgNDAsIDM5LCAxLCAyMjYsIDE1LCA0MCwgMzksIDEsIDIzOCwgMTE1LCA0MCwgMzksIDEsIDIzOCwgMTA0LCAKKyAgICA0MCwgMzksIDEsIDIwNiwgMjAxLCA0MCwgMzksIDEsIDY2LCA0MCwgMzksIDEsIDIzOCwgMjEyLCA0MCwgMzksIDEsIDIxNSwgCisgICAgMjMyLCA0MCwgMzksIDEsIDIyNiwgMTkyLCA0MCwgMzksIDEsIDIzOCwgMjQ4LCA0MCwgMzksIDEsIDIzOCwgMTA2LCA0MCwgCisgICAgMzksIDEsIDI0NywgOCwgNDAsIDM5LCAxLCAyMjgsIDE1MSwgNDAsIDM5LCAxLCAyMDMsIDE4MiwgNDAsIDM5LCAxLCAyMzgsIAorICAgIDg3LCA0MCwgMzksIDIxOCwgOTMsIDEwMiwgNDAsIDM5LCAyMTgsIDkzLCAxNjQsIDQwLCAzOSwgMjE4LCA5MywgMjA2LCAKKyAgICAxNjYsIDQwLCAzOSwgMjE4LCA5MywgMjM3LCAxMDQsIDIzNSwgOTMsIDEsIDI1MSwgMTc5LCAyMzUsIDkzLCAxLCAyNDksIAorICAgIDEwMSwgMjM1LCA5MywgMSwgMjM1LCAxNTgsIDIzNSwgOTMsIDEsIDI0MiwgMzksIDIzNSwgOTMsIDEsIDI1MSwgMTc1LCAKKyAgICAyMzUsIDkzLCAxLCAyMTQsIDE1MCwgMjM1LCA5MywgMSwgMjI4LCA3LCAyMzUsIDkzLCAxLCAyMzQsIDIyNiwgMjM1LCA5MywgCisgICAgMSwgMjA2LCA2MywgMjM1LCA5MywgMSwgMjM4LCAyMjAsIDIzNSwgOTMsIDEsIDIyNSwgMjM4LCAyMzUsIDkzLCAxLCAyMjUsIAorICAgIDE1MywgMjM1LCA5MywgMSwgMjIyLCAxNzIsIDIzNSwgOTMsIDEsIDIyMCwgMTEyLCAyMzUsIDkzLCAxLCAyMjcsIDIyMCwgCisgICAgMjM1LCA5MywgMSwgMjAzLCAyMDAsIDIzNSwgOTMsIDEsIDIxNiwgMTg3LCAyMzUsIDkzLCAxLCAyMTksIDEwOCwgMjM1LCAKKyAgICA5MywgMSwgMjEzLCAyMjgsIDIzNSwgOTMsIDEsIDIxMSwgMjQyLCAyMzUsIDkzLCAxLCAyMDYsIDE4MCwgMjM1LCA5MywgMSwgCisgICAgMjAxLCAxMCwgMjM1LCA5MywgMSwgMjM3LCAxNzUsIDIzNSwgOTMsIDEsIDIyOCwgMTU1LCAyMzUsIDkzLCAxLCAyMzMsIDY2LCAKKyAgICAyMzUsIDkzLCAxLCAyMTcsIDEwLCAyMzUsIDkzLCAxLCAyMTksIDExNCwgMjMzLCA4MiwgNDAsIDIxNiwgMTgsIDEsIDI1MSwgCisgICAgODUsIDQwLCAyMTYsIDE4LCAxLCAyNDgsIDMsIDQwLCAyMTYsIDE4LCAxLCAyMzYsIDczLCA0MCwgMjE2LCAxOCwgMSwgMjQwLCAKKyAgICAxOTksIDQwLCAyMTYsIDE4LCAxLCA3MiwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgNTksIDQwLCAyMTYsIDE4LCAxLCAyMzksIAorICAgIDg1LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCA5NiwgNDAsIDIxNiwgMTgsIDEsIDIzOSwgODMsIDQwLCAyMTYsIDE4LCAxLCA3MCwgCisgICAgNDAsIDIxNiwgMTgsIDEsIDIyNiwgNzcsIDQwLCAyMTYsIDE4LCAxLCAyMjUsIDEyLCA0MCwgMjE2LCAxOCwgMSwgMjIyLCAKKyAgICAzOCwgNDAsIDIxNiwgMTgsIDEsIDIyMCwgMjIsIDQwLCAyMTYsIDE4LCAxLCAyMDIsIDE3OCwgNDAsIDIxNiwgMTgsIDEsIAorICAgIDIxNiwgNjAsIDQwLCAyMTYsIDE4LCAxLCAyMTMsIDE1MywgNDAsIDIxNiwgMTgsIDEsIDIwOSwgMTYxLCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjA3LCA4LCA0MCwgMjE2LCAxOCwgMSwgNjYsIDQwLCAyMTYsIDE4LCAxLCAyNDYsIDI0NSwgNDAsIDIxNiwgMTgsIDEsIAorICAgIDIxMCwgMSwgNDAsIDIxNiwgMTgsIDEsIDIxMCwgNjcsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDIxMywgNDAsIDIxNiwgMTgsIAorICAgIDEsIDIwMCwgMjksIDQwLCAyMTYsIDE4LCAxLCA3NCwgNDAsIDIxNiwgMTgsIDEsIDIxNywgNjMsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMzgsIDI0OCwgNDAsIDIxNiwgMTgsIDEsIDE0NCwgNDAsIDIxNiwgMTgsIDEsIDIwNSwgMTAsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMDMsIDQ3LCA0MCwgMjE2LCAxOCwgMSwgMjAwLCAzMywgNDAsIDIxNiwgMTgsIDEsIDIwMCwgMzEsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMDAsIDY1LCA0MCwgMjE2LCAxOCwgMSwgMjI4LCAxNzgsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDIxMSwgNDAsIDIxNiwgCisgICAgMTgsIDEsIDE4MywgNDAsIDIxNiwgMTgsIDEsIDIzMiwgMjQwLCAzOCwgNDAsIDIxNiwgMTgsIDEsIDI1MSwgODUsIDM4LCAKKyAgICA0MCwgMjE2LCAxOCwgMSwgMjQwLCAxOTksIDM4LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCA5NiwgMzgsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMjAsIDIyLCAzOCwgNDAsIDIxNiwgMTgsIDEsIDIwOSwgMTYxLCAyMDQsIDI2LCAxLCAyNTEsIDExNiwgMjA0LCAyNiwgCisgICAgMSwgMjQ4LCAyMDgsIDIwNCwgMjYsIDEsIDIzNiwgNjEsIDIwNCwgMjYsIDEsIDIyNiwgMjA3LCAyMDQsIDI2LCAxLCAyNDEsIAorICAgIDEzNiwgMjA0LCAyNiwgMSwgMjMzLCAyMDcsIDIwNCwgMjYsIDEsIDIwMSwgMCwgMjA0LCAyNiwgMSwgMTk5LCA4MCwgMjA0LCAKKyAgICAyNiwgMSwgMjMzLCAxMTYsIDIwNCwgMjYsIDEsIDIwNiwgMTQ2LCAyMDQsIDI2LCAxLCAxOTksIDIzNCwgMjA0LCAyNiwgMSwgCisgICAgMjI3LCA4NiwgMjA0LCAyNiwgMSwgMjEwLCAyMSwgMjA0LCAyNiwgMSwgMjI1LCA4NywgMjA0LCAyNiwgMSwgMjIyLCA0NywgCisgICAgMjA0LCAyNiwgMSwgMjQxLCA5NiwgMjA0LCAyNiwgMSwgMjE4LCA4OSwgMjA0LCAyNiwgMSwgMTk5LCAzLCAyMDQsIDI2LCAxLCAKKyAgICAyMTIsIDE4LCAyMDQsIDI2LCAxLCAyNTEsIDE3MSwgMjA0LCAyNiwgMSwgMjE0LCAyMjQsIDIwNCwgMjYsIDEsIDIxMiwgNTUsIAorICAgIDIwNCwgMjYsIDEsIDIxNCwgMTAyLCAyMDQsIDI2LCAxLCAyMTMsIDIwNywgMjA0LCAyNiwgMSwgMjA2LCAxMTAsIDIwNCwgCisgICAgMjYsIDEsIDIzNSwgMTk0LCAyMDQsIDI2LCAxLCAxMzgsIDIwNCwgMjYsIDEsIDcwLCAyMDQsIDI2LCAxLCA2NiwgMjA0LCAKKyAgICAyNiwgMSwgMjA4LCAxMzQsIDIwNCwgMjYsIDIwMCwgMjM4LCAyNDAsIDIzOSwgNDAsIDIxNiwgMTIsIDIsIDYyLCA0MCwgCisgICAgMjE2LCAxMiwgMiwgNzAsIDQwLCAyMTYsIDEyLCAyLCA2NiwgNDAsIDIxNiwgMTIsIDIsIDE2MSwgNDAsIDIxNiwgMTIsIDIsIAorICAgIDIyNiwgMTUsIDQwLCAyMTYsIDEyLCAyLCAyMzYsIDg5LCA0MCwgMjE2LCAxMiwgMiwgMjM1LCA1MCwgNDAsIDIxNiwgMTIsIAorICAgIDIsIDIwMCwgMTgxLCA0MCwgMjE2LCAxMiwgMiwgMjQ3LCAxOTAsIDQwLCAyMTYsIDEyLCAyLCAyMjcsIDI0OCwgNDAsIDIxNiwgCisgICAgMTIsIDIsIDIyNywgMjA3LCA0MCwgMjE2LCAxMiwgMiwgMjA3LCAzNiwgNDAsIDIxNiwgMTIsIDIsIDIwNCwgMjE1LCA0MCwgCisgICAgMjE2LCAxMiwgMiwgMjQyLCA1OCwgNDAsIDIxNiwgMTIsIDIsIDI0MSwgNzYsIDQwLCAyMTYsIDEyLCAyLCAyMzksIDEzNywgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIwNiwgMTIyLCA0MCwgMjE2LCAxMiwgMiwgMTcyLCA0MCwgMjE2LCAxMiwgMiwgMjQ5LCAxMzYsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMzcsIDE5NSwgNDAsIDIxNiwgMTIsIDIsIDE4OCwgNDAsIDIxNiwgMTIsIDIsIDIxOCwgMTMzLCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMTc4LCA0MCwgMjE2LCAxMiwgMiwgMjIxLCAyMTEsIDQwLCAyMTYsIDEyLCAyLCAyMjEsIDQxLCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMTgzLCA0MCwgMjE2LCAxMiwgMiwgMjAzLCA5MCwgNDAsIDIxNiwgMTIsIDIsIDIwMiwgMjM0LCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMjEzLCAyNTIsIDQwLCAyMTYsIDEyLCAyLCAyMTIsIDE3NSwgNDAsIDIxNiwgMTIsIDIsIDE5NCwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIxMiwgNjQsIDQwLCAyMTYsIDEyLCAyLCAxOTksIDExNCwgNDAsIDIxNiwgMTIsIDIsIDIxMCwgCisgICAgMTE0LCA0MCwgMjE2LCAxMiwgMiwgMjA4LCAxNzksIDQwLCAyMTYsIDEyLCAyLCAxNDQsIDQwLCAyMTYsIDEyLCAyLCAyNTAsIAorICAgIDEzMywgNDAsIDIxNiwgMTIsIDIsIDI1MCwgMTMyLCA0MCwgMjE2LCAxMiwgMiwgMjUwLCAxMzEsIDQwLCAyMTYsIDEyLCAyLCAKKyAgICAyMDAsIDE1MiwgNDAsIDIxNiwgMTIsIDIsIDI0MiwgMzUsIDQwLCAyMTYsIDEyLCAyLCAyNDIsIDM0LCA0MCwgMjE2LCAxMiwgCisgICAgMiwgMjQ5LCAxMTEsIDQwLCAyMTYsIDEyLCAyLCAyNDcsIDI0MiwgNDAsIDIxNiwgMTIsIDIwMCwgMjM4LCAyNDAsIDIzOSwgCisgICAgNDAsIDIxNiwgMTIsIDQxLCAxMDIsIDQwLCAyMTYsIDEyLCA0MSwgMTA1LCA0MCwgMjE2LCAxMiwgNDEsIDIwNiwgMTY2LCAKKyAgICA0MCwgMjE2LCAxMiwgNDEsIDIwNCwgMTU5LCA0MCwgMjE2LCAxMiwgNDEsIDIzMywgODIsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIAorICAgIDcwLCAyNDEsIDExNiwgNiwgMSwgMTY4LCA3MiwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgNjIsIDI0MSwgMTE2LCA2LCAxLCAKKyAgICAxNjgsIDI1MSwgMTg1LCAyNDEsIDExNiwgNiwgMSwgMTY4LCA3NCwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgMjE3LCA2MywgCisgICAgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCA3MCwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCA3MiwgMjQxLCAxMTYsIDYsIAorICAgIDEsIDIwOSwgMjUwLCA2MiwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCAyNTEsIDE4NSwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgCisgICAgMjUwLCA3NCwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCAyMTcsIDYzLCAyNDEsIDExNiwgNiwgMSwgMjUwLCAxMTIsIAorICAgIDI0MSwgMTE2LCA2LCAxLCAyMTYsIDIzOCwgMjQxLCAxMTYsIDYsIDEsIDIwMCwgMjE2LCAyNDEsIDExNiwgNiwgMSwgMjAwLCAKKyAgICA0OCwgMjQxLCAxMTYsIDYsIDEsIDIzNCwgMjQ3LCAyNDEsIDExNiwgNiwgMSwgMjE2LCA2MSwgMjQxLCAxMTYsIDYsIDEsIAorICAgIDI0OCwgMjUyLCAyNDEsIDExNiwgNiwgMSwgMjA2LCAxOTAsIDI0MSwgMTE2LCA2LCAxLCAyNDEsIDE2MSwgMjQxLCAxMTYsIAorICAgIDYsIDEsIDI0NywgNCwgMjQxLCAxMTYsIDYsIDEsIDIyNywgMjI1LCAyNDEsIDExNiwgNiwgMSwgMjI3LCAxNSwgMjQxLCAKKyAgICAxMTYsIDYsIDEsIDIzNiwgMzYsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDI0OCwgMjQxLCAxMTYsIDYsIDEsIDIwMywgNTQsIAorICAgIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDc0LCAyNDEsIDExNiwgNiwgMSwgMjA2LCAxMDQsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIAorICAgIDEwNCwgMjQxLCAxMTYsIDYsIDEsIDE5OSwgODcsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDk0LCAyNDEsIDExNiwgNiwgMSwgCisgICAgMTk5LCA2NywgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMTE1LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAyMDksIDI0MSwgMTE2LCA2LCAKKyAgICAxLCAyMzgsIDE5MCwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMTc5LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAxNjUsIDI0MSwgCisgICAgMTE2LCA2LCAxLCAyMTcsIDEwNSwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgNTEsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDcwLCAKKyAgICAyNDEsIDExNiwgNCwgMSwgMTY4LCA3MiwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNjIsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIAorICAgIDI1MSwgMTg1LCAyNDEsIDExNiwgNCwgMSwgMTY4LCA3NCwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgMjE3LCA2MywgMjQxLCAKKyAgICAxMTYsIDQsIDEsIDIwOSwgMjUwLCA3MCwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgMjUwLCA3MiwgMjQxLCAxMTYsIDQsIDEsIAorICAgIDIwOSwgMjUwLCA2MiwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgMjUwLCAyNTEsIDE4NSwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgCisgICAgMjUwLCA3NCwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgMjUwLCAyMTcsIDYzLCAyNDEsIDExNiwgNCwgMSwgMjUwLCAxMTIsIAorICAgIDI0MSwgMTE2LCA0LCAxLCAyMTYsIDIzOCwgMjQxLCAxMTYsIDQsIDEsIDIwMCwgMjE2LCAyNDEsIDExNiwgNCwgMSwgMjAwLCAKKyAgICA0OCwgMjQxLCAxMTYsIDQsIDEsIDIzNCwgMjQ3LCAyNDEsIDExNiwgNCwgMSwgMjE2LCA2MSwgMjQxLCAxMTYsIDQsIDEsIAorICAgIDI0OCwgMjUyLCAyNDEsIDExNiwgNCwgMSwgMjA2LCAxOTAsIDI0MSwgMTE2LCA0LCAxLCAyNDEsIDE2MSwgMjQxLCAxMTYsIAorICAgIDQsIDEsIDI0NywgNCwgMjQxLCAxMTYsIDQsIDEsIDIyNywgMjI1LCAyNDEsIDExNiwgNCwgMSwgMjI3LCAxNSwgMjQxLCAKKyAgICAxMTYsIDQsIDEsIDIzNiwgMzYsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDI0OCwgMjQxLCAxMTYsIDQsIDEsIDIwMywgNTQsIAorICAgIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDc0LCAyNDEsIDExNiwgNCwgMSwgMjA2LCAxMDQsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIAorICAgIDEwNCwgMjQxLCAxMTYsIDQsIDEsIDE5OSwgODcsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDk0LCAyNDEsIDExNiwgNCwgMSwgCisgICAgMTk5LCA2NywgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMTE1LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAyMDksIDI0MSwgMTE2LCA0LCAKKyAgICAxLCAyMzgsIDE5MCwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMTc5LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAxNjUsIDI0MSwgCisgICAgMTE2LCA0LCAxLCAyMTcsIDEwNSwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgNTEsIDIxMCwgNzIsIDEsIDIxNiwgNTgsIDIxMCwgCisgICAgNzIsIDEsIDIwNSwgMTQ0LCAyMTAsIDcyLCAxLCAyMjYsIDE1OSwgMjEwLCA3MiwgMSwgMjM3LCAxNDAsIDIxMCwgNzIsIDEsIAorICAgIDIwNiwgNzksIDIxMCwgNzIsIDEsIDIwOSwgMjksIDIxMCwgNzIsIDEsIDIwNywgMjA0LCAyMTAsIDcyLCAxLCAyNDYsIDE4NCwgCisgICAgMjEwLCA3MiwgMSwgMjAwLCA1MCwgMjEwLCA3MiwgMSwgMjMzLCA3OSwgMjEwLCA3MiwgMSwgMjQ4LCAxODcsIDIxMCwgNzIsIAorICAgIDEsIDI0MSwgMTc0LCAyMTAsIDcyLCAxLCAyMzYsIDc1LCAyMTAsIDcyLCAxLCAyMDIsIDE3MywgMjEwLCA3MiwgMSwgMjA2LCAKKyAgICA4NSwgMjEwLCA3MiwgMSwgMTk5LCAxMiwgMjEwLCA3MiwgMSwgMjIyLCA3NCwgMjEwLCA3MiwgMSwgMjI3LCAxNDUsIDIxMCwgCisgICAgNzIsIDEsIDIwMCwgMjU0LCAyMTAsIDcyLCAxLCAyMzQsIDIzNSwgMjEwLCA3MiwgMSwgMjI0LCA5NCwgMjEwLCA3MiwgMSwgCisgICAgMjIxLCAxNjUsIDIxMCwgNzIsIDEsIDIyOCwgMTU4LCAyMTAsIDcyLCAxLCAyMzgsIDI0NiwgMjEwLCA3MiwgMSwgMjUwLCAKKyAgICAxODEsIDIxMCwgNzIsIDEsIDI1MSwgMjI1LCAyMTAsIDcyLCAxLCAyMTcsIDc4LCAyMTAsIDcyLCAxLCAyMDAsIDI0MSwgCisgICAgMjEwLCA3MiwgMSwgMjE2LCAyNTQsIDIxMCwgNzIsIDEsIDI1MSwgMTg1LCAyMTAsIDcyLCAxLCAyMTIsIDI1NCwgMjEwLCAKKyAgICA3MiwgMSwgMjE4LCA4OSwgMjEwLCA3MiwgMSwgMjM5LCAxMCwgMjEwLCA3MiwgMSwgMjUxLCAxOTAsIDIxMCwgNzIsIDEsIAorICAgIDIzMiwgMjMxLCAyMTAsIDcyLCAxLCAyMDMsIDIyOCwgMjEwLCA3MiwgMSwgMjE3LCAxNDQsIDIxMCwgNzIsIDEsIDIxNywgCisgICAgNTUsIDIxMCwgNzIsIDEsIDIxNywgMTAzLCAyMTAsIDcyLCAxLCAyNTAsIDExNSwgMjEwLCA3MiwgMSwgMjUwLCAyMjksIAorICAgIDIxMCwgNzIsIDEsIDIxNywgMzMsIDIxMCwgNzIsIDEsIDI1MSwgMTY2LCAyMTAsIDcyLCAxLCAyMzgsIDEwOCwgMjEwLCA3MiwgCisgICAgMSwgMjUwLCAyMDcsIDIxMCwgNzIsIDEsIDIzOSwgMjEsIDIxMCwgNzIsIDEsIDIzMiwgMjM5LCAyMTAsIDcyLCAxLCAyMDAsIAorICAgIDE1LCAyMTcsIDEyLCAxLCAyNTEsIDE0MiwgMjE3LCAxMiwgMSwgMjQ5LCAxMzYsIDIxNywgMTIsIDEsIDIwNywgMzYsIDIxNywgCisgICAgMTIsIDEsIDIyNywgMjQ4LCAyMTcsIDEyLCAxLCAyMDAsIDE4MSwgMjE3LCAxMiwgMSwgMjI2LCAyMDcsIDIxNywgMTIsIDEsIAorICAgIDI0MSwgMTYwLCAyMTcsIDEyLCAxLCAyMTMsIDI1MiwgMjE3LCAxMiwgMSwgMjEyLCA2NCwgMjE3LCAxMiwgMSwgMjEwLCAyNywgCisgICAgMjE3LCAxMiwgMSwgMjQxLCAxMDAsIDIxNywgMTIsIDEsIDI0NywgMTAxLCAyMTcsIDEyLCAxLCAyMzYsIDg5LCAyMTcsIDEyLCAKKyAgICAxLCAyMzcsIDE5NSwgMjE3LCAxMiwgMSwgMjE0LCAxNTcsIDIxNywgMTIsIDEsIDIyNywgMTAyLCAyMTcsIDEyLCAxLCAyMjUsIAorICAgIDE3MSwgMjE3LCAxMiwgMSwgMjIxLCAxNzksIDIxNywgMTIsIDEsIDIxOCwgNzMsIDIxNywgMTIsIDEsIDIwMSwgNzIsIDIxNywgCisgICAgMTIsIDEsIDE0NCwgMjE3LCAxMiwgMSwgMTgzLCAyMTcsIDEyLCAxLCA2MiwgMjE3LCAxMiwgMSwgNzIsIDIxNywgMTIsIDEsIAorICAgIDcwLCAyMTcsIDEyLCAxLCA3NCwgMjE3LCAxMiwgMSwgNjYsIDIxNywgMTIsIDEsIDI1MiwgMTM4LCAyMTcsIDEyLCAxLCAKKyAgICAyMzgsIDI1NSwgMjE3LCAxMiwgMSwgMjE3LCA2MywgMjE3LCAxMiwgMTcsIDE5OSwgODEsIDIxNywgMTIsIDE3LCAxMDIsIAorICAgIDIxNywgMTIsIDE3LCAxMDUsIDIxNywgMTIsIDE3LCAxNDcsIDIxNywgMTIsIDE3LCAxNDksIDIxNywgMTIsIDE3LCAxNjQsIAorICAgIDIxNywgMTIsIDE3LCAxODcsIDIxNywgMTIsIDE3LCAyMTAsIDEzNSwgMjE3LCAxMiwgMTcsIDE5MiwgMjE3LCAxMiwgMTcsIAorICAgIDIxOSwgMTEzLCAyMTcsIDE0LCA2LCAxLCA2MiwgMjE3LCAxNCwgNiwgMSwgMjUxLCAxNzYsIDIxNywgMTQsIDYsIDEsIDI1MSwgCisgICAgMTcxLCAyMTcsIDE0LCA2LCAxLCAyNTEsIDE4NSwgMjE3LCAxNCwgNiwgMSwgMjQ4LCA3MiwgMjE3LCAxNCwgNiwgMSwgMjQ3LCAKKyAgICAzNywgMjE3LCAxNCwgNiwgMSwgMjM4LCAyNDAsIDIxNywgMTQsIDYsIDEsIDcyLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIyMSwgCisgICAgMjE3LCAxNCwgNiwgMSwgMTQ0LCAyMTcsIDE0LCA2LCAxLCAyMzMsIDM2LCAyMTcsIDE0LCA2LCAxLCA3MCwgMjE3LCAxNCwgCisgICAgNiwgMSwgMTYxLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIzOSwgMjE3LCAxNCwgNiwgMSwgMjI1LCAyMDMsIDIxNywgMTQsIDYsIAorICAgIDEsIDE5NCwgMjE3LCAxNCwgNiwgMSwgMTc4LCAyMTcsIDE0LCA2LCAxLCAxODgsIDIxNywgMTQsIDYsIDEsIDc0LCAyMTcsIAorICAgIDE0LCA2LCAxLCAyMTcsIDEwMiwgMjE3LCAxNCwgNiwgMSwgMTcyLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIzOCwgMjE3LCAxNCwgCisgICAgNiwgMSwgMjEyLCA2NCwgMjE3LCAxNCwgNiwgMSwgMjEwLCAxMTQsIDIxNywgMTQsIDYsIDEsIDIwNywgMzYsIDIxNywgMTQsIAorICAgIDYsIDEsIDIzOCwgMjM3LCAyMTcsIDE0LCA2LCAxLCAyMDUsIDMyLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIzNiwgMjE3LCAxNCwgCisgICAgNiwgMSwgMjA1LCAyMiwgMjE3LCAxNCwgNiwgMSwgMjQxLCAxMDAsIDIxNywgMTQsIDYsIDEsIDY2LCAyMTcsIDE0LCA2LCAxLCAKKyAgICAyMDEsIDExNCwgMjE3LCAxNCwgNiwgMSwgMjI2LCAyMDcsIDIxNywgMTQsIDYsIDEsIDIzNSwgMTk5LCAyMTcsIDE0LCA2LCAKKyAgICAxLCAxOTksIDExNCwgMjE3LCAxNCwgNiwgMSwgMTk5LCA3NywgMjE3LCAxNCwgNCwgMSwgNjIsIDIxNywgMTQsIDQsIDEsIAorICAgIDI1MSwgMTc2LCAyMTcsIDE0LCA0LCAxLCAyNTEsIDE3MSwgMjE3LCAxNCwgNCwgMSwgMjUxLCAxODUsIDIxNywgMTQsIDQsIAorICAgIDEsIDI0OCwgNzIsIDIxNywgMTQsIDQsIDEsIDI0NywgMzcsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjQwLCAyMTcsIDE0LCA0LCAKKyAgICAxLCA3MiwgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMjEsIDIxNywgMTQsIDQsIDEsIDE0NCwgMjE3LCAxNCwgNCwgMSwgMjMzLCAKKyAgICAzNiwgMjE3LCAxNCwgNCwgMSwgNzAsIDIxNywgMTQsIDQsIDEsIDE2MSwgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzksIDIxNywgCisgICAgMTQsIDQsIDEsIDIyNSwgMjAzLCAyMTcsIDE0LCA0LCAxLCAxOTQsIDIxNywgMTQsIDQsIDEsIDE3OCwgMjE3LCAxNCwgNCwgCisgICAgMSwgMTg4LCAyMTcsIDE0LCA0LCAxLCA3NCwgMjE3LCAxNCwgNCwgMSwgMjE3LCAxMDIsIDIxNywgMTQsIDQsIDEsIDE3MiwgCisgICAgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzgsIDIxNywgMTQsIDQsIDEsIDIxMiwgNjQsIDIxNywgMTQsIDQsIDEsIDIxMCwgMTE0LCAKKyAgICAyMTcsIDE0LCA0LCAxLCAyMDcsIDM2LCAyMTcsIDE0LCA0LCAxLCAyMzgsIDIzNywgMjE3LCAxNCwgNCwgMSwgMjA1LCAzMiwgCisgICAgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzYsIDIxNywgMTQsIDQsIDEsIDIwNSwgMjIsIDIxNywgMTQsIDQsIDEsIDI0MSwgMTAwLCAKKyAgICAyMTcsIDE0LCA0LCAxLCA2NiwgMjE3LCAxNCwgNCwgMSwgMjAxLCAxMTQsIDIxNywgMTQsIDQsIDEsIDIyNiwgMjA3LCAyMTcsIAorICAgIDE0LCA0LCAxLCAyMzUsIDE5OSwgMjE3LCAxNCwgNCwgMSwgMTk5LCAxMTQsIDIxNywgMTQsIDQsIDEsIDE5OSwgNzcsIDIzOCwgCisgICAgMjA1LCAxLCA2MiwgMjM4LCAyMDUsIDEsIDI0OSwgOCwgMjM4LCAyMDUsIDEsIDI0NywgNzYsIDIzOCwgMjA1LCAxLCAyNDcsIAorICAgIDgsIDIzOCwgMjA1LCAxLCAyNDEsIDE3NSwgMjM4LCAyMDUsIDEsIDIyMCwgNjcsIDIzOCwgMjA1LCAxLCAyNDEsIDkxLCAKKyAgICAyMzgsIDIwNSwgMSwgMjM4LCAyMzQsIDIzOCwgMjA1LCAxLCA3MiwgMjM4LCAyMDUsIDEsIDIzNywgMTQ3LCAyMzgsIDIwNSwgCisgICAgMSwgMjM2LCAxNSwgMjM4LCAyMDUsIDEsIDIzNSwgMTMyLCAyMzgsIDIwNSwgMSwgMjM0LCAxMzksIDIzOCwgMjA1LCAxLCAKKyAgICA3MCwgMjM4LCAyMDUsIDEsIDIyNywgMjI3LCAyMzgsIDIwNSwgMSwgMjI3LCA4LCAyMzgsIDIwNSwgMSwgMjI1LCA0MCwgCisgICAgMjM4LCAyMDUsIDEsIDIyNCwgMTM0LCAyMzgsIDIwNSwgMSwgMjIyLCA3NiwgMjM4LCAyMDUsIDEsIDIyMCwgMzQsIDIzOCwgCisgICAgMjA1LCAxLCAxODgsIDIzOCwgMjA1LCAxLCAyMTksIDkxLCAyMzgsIDIwNSwgMSwgNzQsIDIzOCwgMjA1LCAxLCAyMTYsIDczLCAKKyAgICAyMzgsIDIwNSwgMSwgMjE0LCAxMzksIDIzOCwgMjA1LCAxLCAyMTMsIDE5MCwgMjM4LCAyMDUsIDEsIDIxMiwgMjEwLCAyMzgsIAorICAgIDIwNSwgMSwgMjExLCAyMDIsIDIzOCwgMjA1LCAxLCAyMTAsIDY1LCAyMzgsIDIwNSwgMSwgMjA2LCAyMDEsIDIzOCwgMjA1LCAKKyAgICAxLCAyMDYsIDEwNiwgMjM4LCAyMDUsIDEsIDY2LCAyMzgsIDIwNSwgMSwgMjAzLCA1OSwgMjM4LCAyMDUsIDEsIDIwMCwgCisgICAgMTc1LCAyMzgsIDIwNSwgMSwgMjAwLCAxMjMsIDIzOCwgMjA1LCAxLCAxOTksIDg5LCAyMzgsIDIwNSwgMSwgMTk5LCA2OCwgCisgICAgMjM4LCAyMDUsIDEsIDIzNSwgMTg1LCAyMzgsIDIwNSwgMSwgMjM1LCAxOTEsIDIzOCwgMjA1LCAxLCAyMjYsIDE5MiwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyNTEsIDExMSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDgsIDIxMCwgMjQ3LCAxMDgsIAorICAgIDI1MSwgMTQzLCAxLCAyMzUsIDE0OSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDEsIDI0MCwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyMzksIDksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCA5OSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMzgsIDE0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDE5OSwgNjIsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjA2LCAyMjcsIAorICAgIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ3LCAzNywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDIyMiwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDc3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyOCwgMzQsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjEwLCAxMTQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI1LCA4MCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMjgsIDQ2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwMCwgMTcxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzOSwgCisgICAgMTAxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NywgMTM1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNywgMjA4LCAKKyAgICAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNywgNDcsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjIzLCAyNTIsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjM0LCA4NiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTQsIDE0MCwgMjQ3LCAxMDgsIAorICAgIDI1MSwgMTQzLCAxLCAyNTEsIDMwLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NiwgMjAxLCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDI0NiwgMjM2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0MiwgMTY1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIyMiwgMTYxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxNCwgMTQ0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxOCwgCisgICAgMjAwLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzOSwgNzgsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjEwLCA5NywgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyMjcsIDIyOCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTcsIDc4LCAyNDcsIDEwOCwgCisgICAgMjUxLCAxNDMsIDEsIDIwNCwgMTMyLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzNywgMTcwLCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDIzOSwgOTEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ3LCAxNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMTYsIDQ3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzNSwgMTc1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxMywgCisgICAgMjA0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxMCwgMTIzLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwMiwgMjM2LCAKKyAgICAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwNSwgMjA2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwOSwgMjI5LCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDIyOCwgNSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDIsIDE2NiwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyNDcsIDEwMSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDAsIDU1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIxNSwgMTM5LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNiwgMTI1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDI0NiwgMTQzLCAKKyAgICA4MSwgMzAsIDM1LCAyLCAyNTIsIDg4LCAzMCwgMzUsIDIsIDI1MiwgODcsIDMwLCAzNSwgMiwgMjUyLCA4NiwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDg1LCAzMCwgMzUsIDIsIDI1MiwgODQsIDMwLCAzNSwgMiwgMjUyLCA4MywgMzAsIDM1LCAyLCAyNTIsIDgyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgODEsIDMwLCAzNSwgMiwgMjUyLCA4MCwgMzAsIDM1LCAyLCAyNTIsIDc5LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgNzgsIDMwLCAzNSwgMiwgMjUyLCA3NywgMzAsIDM1LCAyLCAyNTIsIDc2LCAzMCwgMzUsIDIsIDI1MiwgNzUsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCA3NCwgMzAsIDM1LCAyLCAyNTIsIDczLCAzMCwgMzUsIDIsIDI1MiwgNzIsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICA3MSwgMzAsIDM1LCAyLCAyNTIsIDcwLCAzMCwgMzUsIDIsIDI1MiwgNjksIDMwLCAzNSwgMiwgMjUyLCA2OCwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDY3LCAzMCwgMzUsIDIsIDI1MiwgNjYsIDMwLCAzNSwgMiwgMjUyLCA2NSwgMzAsIDM1LCAyLCAyNTIsIDY0LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgNjMsIDMwLCAzNSwgMiwgMjUyLCA2MiwgMzAsIDM1LCAyLCAyNTUsIDk2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgNjEsIDMwLCAzNSwgMiwgMjUyLCA2MCwgMzAsIDM1LCAyLCAyNTIsIDU5LCAzMCwgMzUsIDIsIDI1MiwgNTgsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCA1NywgMzAsIDM1LCAyLCAyNTIsIDU2LCAzMCwgMzUsIDIsIDI1MiwgNTUsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICA1NCwgMzAsIDM1LCAyLCAyNTIsIDUzLCAzMCwgMzUsIDIsIDI1MiwgNTIsIDMwLCAzNSwgMiwgMjUyLCA1MSwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDUwLCAzMCwgMzUsIDIsIDI1MiwgNDksIDMwLCAzNSwgMiwgMjUyLCA0OCwgMzAsIDM1LCAyLCAyNTIsIDQ3LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgNDYsIDMwLCAzNSwgMiwgMjUyLCA0NSwgMzAsIDM1LCAyLCAyNTIsIDQ0LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgNDMsIDMwLCAzNSwgMiwgMjUyLCA0MiwgMzAsIDM1LCAyLCAyNTIsIDQxLCAzMCwgMzUsIDIsIDI1MiwgNDAsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAzOSwgMzAsIDM1LCAyLCAyNTIsIDM4LCAzMCwgMzUsIDIsIDI1MiwgMzcsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAzNiwgMzAsIDM1LCAyLCAyNTIsIDM1LCAzMCwgMzUsIDIsIDI1MiwgMzQsIDMwLCAzNSwgMiwgMjUyLCAzMywgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDMyLCAzMCwgMzUsIDIsIDI1MiwgMzEsIDMwLCAzNSwgMiwgMjUyLCAzMCwgMzAsIDM1LCAyLCAyNTIsIDI5LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjgsIDMwLCAzNSwgMiwgMjUyLCAyNywgMzAsIDM1LCAyLCAyNTIsIDI2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjUsIDMwLCAzNSwgMiwgMjUyLCAyNCwgMzAsIDM1LCAyLCAyNTIsIDIzLCAzMCwgMzUsIDIsIDI1MiwgMjIsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAyMSwgMzAsIDM1LCAyLCAyNTIsIDIwLCAzMCwgMzUsIDIsIDI1MiwgMTksIDMwLCAzNSwgMiwgMjU1LCAKKyAgICA5LCAzMCwgMzUsIDIsIDI1MiwgMTgsIDMwLCAzNSwgMiwgMjUyLCAxNywgMzAsIDM1LCAyLCAyNTQsIDIzMCwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDE2LCAzMCwgMzUsIDIsIDI1MiwgMTUsIDMwLCAzNSwgMiwgMjUyLCAxNCwgMzAsIDM1LCAyLCAyNTIsIDEzLCAKKyAgICAzMCwgMzUsIDIsIDI1NCwgMjE3LCAzMCwgMzUsIDIsIDI1MiwgMTIsIDMwLCAzNSwgMiwgMjUyLCAxMSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDEwLCAzMCwgMzUsIDIsIDI1MiwgOSwgMzAsIDM1LCAyLCAyNTIsIDgsIDMwLCAzNSwgMiwgMjU0LCAzMywgMzAsIAorICAgIDM1LCAyLCAyNTQsIDMyLCAzMCwgMzUsIDIsIDI1NCwgMzEsIDMwLCAzNSwgMiwgMjU0LCAzMCwgMzAsIDM1LCAyLCAyNTQsIAorICAgIDI5LCAzMCwgMzUsIDIsIDI1NCwgMjgsIDMwLCAzNSwgMiwgMjU0LCAyNywgMzAsIDM1LCAyLCAyNTQsIDI2LCAzMCwgMzUsIAorICAgIDIsIDI1NCwgMjQsIDMwLCAzNSwgMiwgMjU0LCAyMywgMzAsIDM1LCAyLCAyNTQsIDIyLCAzMCwgMzUsIDIsIDI1NCwgMjEsIAorICAgIDMwLCAzNSwgMiwgMjU0LCAyMCwgMzAsIDM1LCAyLCAyNTQsIDE5LCAzMCwgMzUsIDIsIDI1NCwgMTcsIDMwLCAzNSwgMiwgCisgICAgMjU0LCAxNiwgMzAsIDM1LCAyLCAyNTQsIDE1LCAzMCwgMzUsIDIsIDI1NCwgMTQsIDMwLCAzNSwgMiwgMjU0LCAxMywgMzAsIAorICAgIDM1LCAyLCAyNTQsIDEyLCAzMCwgMzUsIDIsIDI1NCwgMTEsIDMwLCAzNSwgMiwgMjU0LCAxMCwgMzAsIDM1LCAyLCAyNTQsIAorICAgIDksIDMwLCAzNSwgMiwgMjU0LCA4LCAzMCwgMzUsIDIsIDI1NCwgNywgMzAsIDM1LCAyLCAyNTQsIDYsIDMwLCAzNSwgMiwgCisgICAgMjU0LCA1LCAzMCwgMzUsIDIsIDI1NCwgNCwgMzAsIDM1LCAyLCAyNTQsIDMsIDMwLCAzNSwgMiwgMjU0LCAyLCAzMCwgMzUsIAorICAgIDIsIDI1NCwgMSwgMzAsIDM1LCAyLCAyNTQsIDAsIDMwLCAzNSwgMiwgMjUzLCAyNTUsIDMwLCAzNSwgMiwgMjUzLCAyNTMsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyNTIsIDMwLCAzNSwgMiwgMjUzLCAyNTEsIDMwLCAzNSwgMiwgMjUzLCAyNDcsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyNDYsIDMwLCAzNSwgMiwgMjUzLCAyNDUsIDMwLCAzNSwgMiwgMjUzLCAyNDQsIDMwLCAzNSwgMiwgMjUzLCAyNDAsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMzksIDMwLCAzNSwgMiwgMjUzLCAyMzgsIDMwLCAzNSwgMiwgMjUzLCAyMzcsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMzYsIDMwLCAzNSwgMiwgMjUzLCAyMzUsIDMwLCAzNSwgMiwgMjUzLCAyMzQsIDMwLCAzNSwgMiwgMjUzLCAyMzMsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMzIsIDMwLCAzNSwgMiwgMjUzLCAyMzEsIDMwLCAzNSwgMiwgMjUzLCAyMzAsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMjksIDMwLCAzNSwgMiwgMjUzLCAyMjgsIDMwLCAzNSwgMiwgMjUzLCAyMjcsIDMwLCAzNSwgMiwgMjUzLCAyMjYsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMjUsIDMwLCAzNSwgMiwgMjUzLCAyMjQsIDMwLCAzNSwgMiwgMjUzLCAyMjMsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMjIsIDMwLCAzNSwgMiwgMjUzLCAyMjEsIDMwLCAzNSwgMiwgMjUzLCAyMjAsIDMwLCAzNSwgMiwgMjUzLCAyMTksIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMTgsIDMwLCAzNSwgMiwgMjUzLCAyMTYsIDMwLCAzNSwgMiwgMjUzLCAyMTUsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMTQsIDMwLCAzNSwgMiwgMjUzLCAyMTMsIDMwLCAzNSwgMiwgMjUzLCAyMTIsIDMwLCAzNSwgMiwgMjUzLCAyMTAsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMDksIDMwLCAzNSwgMiwgMjUzLCAyMDgsIDMwLCAzNSwgMiwgMjUzLCAyMDcsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMDUsIDMwLCAzNSwgMiwgMjUzLCAyMDQsIDMwLCAzNSwgMiwgMjUzLCAyMDMsIDMwLCAzNSwgMiwgMjUzLCAxNjksIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxNjcsIDMwLCAzNSwgMiwgMjUzLCAxNjUsIDMwLCAzNSwgMiwgMjUzLCAxNjMsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAxNjEsIDMwLCAzNSwgMiwgMjUzLCAxNTksIDMwLCAzNSwgMiwgMjUzLCAxNTcsIDMwLCAzNSwgMiwgMjUzLCAxNTUsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxNTMsIDMwLCAzNSwgMiwgMjUzLCAxNTEsIDMwLCAzNSwgMiwgMjUzLCAxNDksIDMwLCAzNSwgMiwgCisgICAgMjUzLCAxNDYsIDMwLCAzNSwgMiwgMjUzLCAxNDQsIDMwLCAzNSwgMiwgMjUzLCAxNDIsIDMwLCAzNSwgMiwgMjUzLCAxNDAsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxMzgsIDMwLCAzNSwgMiwgMjUzLCAxMzYsIDMwLCAzNSwgMiwgMjUzLCAxMzQsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAxMzIsIDMwLCAzNSwgMiwgMjUzLCA1MCwgMzAsIDM1LCAyLCAyNTMsIDQ5LCAzMCwgMzUsIDIsIDI1MywgNDgsIDMwLCAKKyAgICAzNSwgMiwgMjUzLCA0NywgMzAsIDM1LCAyLCAyNTMsIDQ2LCAzMCwgMzUsIDIsIDI1MywgNDUsIDMwLCAzNSwgMiwgMjUzLCAKKyAgICA0MywgMzAsIDM1LCAyLCAyNTMsIDQyLCAzMCwgMzUsIDIsIDI1MywgNDEsIDMwLCAzNSwgMiwgMjUzLCA0MCwgMzAsIDM1LCAKKyAgICAyLCAyNTMsIDM5LCAzMCwgMzUsIDIsIDI1MywgMzgsIDMwLCAzNSwgMiwgMjUzLCAzNiwgMzAsIDM1LCAyLCAyNTMsIDM1LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMzEsIDMwLCAzNSwgMiwgMjUzLCAzMCwgMzAsIDM1LCAyLCAyNTMsIDI4LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjcsIDMwLCAzNSwgMiwgMjUzLCAyNiwgMzAsIDM1LCAyLCAyNTMsIDI1LCAzMCwgMzUsIDIsIDI1MywgMjQsIDMwLCAKKyAgICAzNSwgMiwgMjUzLCAyMywgMzAsIDM1LCAyLCAyNTMsIDIyLCAzMCwgMzUsIDIsIDI1MywgMjEsIDMwLCAzNSwgMiwgMjUzLCAKKyAgICAyMCwgMzAsIDM1LCAyLCAyNTMsIDE5LCAzMCwgMzUsIDIsIDI1MywgMTgsIDMwLCAzNSwgMiwgMjUzLCAxNywgMzAsIDM1LCAKKyAgICAyLCAyNTMsIDE2LCAzMCwgMzUsIDIsIDI1MywgMTUsIDMwLCAzNSwgMiwgMjUzLCAxNCwgMzAsIDM1LCAyLCAyNTMsIDEzLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTIsIDMwLCAzNSwgMiwgMjUzLCAxMSwgMzAsIDM1LCAyLCAyNTMsIDEwLCAzMCwgMzUsIDIsIAorICAgIDI1MywgOSwgMzAsIDM1LCAyLCAyNTMsIDgsIDMwLCAzNSwgMiwgMjUzLCA3LCAzMCwgMzUsIDIsIDI1MywgNiwgMzAsIDM1LCAKKyAgICAyLCAyNTMsIDUsIDMwLCAzNSwgMiwgMjUzLCA0LCAzMCwgMzUsIDIsIDI1MywgMywgMzAsIDM1LCAyLCAyNTMsIDIsIDMwLCAKKyAgICAzNSwgMiwgMjUzLCAxLCAzMCwgMzUsIDIsIDI1MywgMCwgMzAsIDM1LCAyLCAyNTIsIDI1NSwgMzAsIDM1LCAyLCAyNTIsIAorICAgIDI1NCwgMzAsIDM1LCAyLCAyNTIsIDI1MywgMzAsIDM1LCAyLCAyNTIsIDI1MiwgMzAsIDM1LCAyLCAyNTIsIDI1MSwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDI1MCwgMzAsIDM1LCAyLCAyNTIsIDI0OSwgMzAsIDM1LCAyLCAyNTIsIDI0OCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDI0NywgMzAsIDM1LCAyLCAyNTIsIDI0NiwgMzAsIDM1LCAyLCAyNTIsIDI0NSwgMzAsIDM1LCAyLCAyNTIsIDI0NCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDI0MywgMzAsIDM1LCAyLCAyNTIsIDI0MiwgMzAsIDM1LCAyLCAyNTIsIDI0MSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDI0MCwgMzAsIDM1LCAyLCAyNTIsIDIzOSwgMzAsIDM1LCAyLCAyNTIsIDIzOCwgMzAsIDM1LCAyLCAyNTIsIDIzNywgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIzNiwgMzAsIDM1LCAyLCAyNTIsIDIzNSwgMzAsIDM1LCAyLCAyNTIsIDIzNCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIzMywgMzAsIDM1LCAyLCAyNTIsIDIzMiwgMzAsIDM1LCAyLCAyNTIsIDIzMSwgMzAsIDM1LCAyLCAyNTIsIDIzMCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIyOSwgMzAsIDM1LCAyLCAyNTIsIDIyOCwgMzAsIDM1LCAyLCAyNTIsIDIyNywgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIyNiwgMzAsIDM1LCAyLCAyNTIsIDIyNSwgMzAsIDM1LCAyLCAyNTIsIDIyNCwgMzAsIDM1LCAyLCAyNTIsIDIyMywgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIyMiwgMzAsIDM1LCAyLCAyNTIsIDIyMSwgMzAsIDM1LCAyLCAyNTIsIDIyMCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIxOSwgMzAsIDM1LCAyLCAyNTIsIDIxOCwgMzAsIDM1LCAyLCAyNTIsIDIxNywgMzAsIDM1LCAyLCAyNTIsIDIxNiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIxNSwgMzAsIDM1LCAyLCAyNTIsIDIxNCwgMzAsIDM1LCAyLCAyNTIsIDIxMywgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIxMiwgMzAsIDM1LCAyLCAyNTIsIDIxMSwgMzAsIDM1LCAyLCAyNTIsIDIxMCwgMzAsIDM1LCAyLCAyNTIsIDIwOSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIwOCwgMzAsIDM1LCAyLCAyNTIsIDIwNywgMzAsIDM1LCAyLCAyNTIsIDIwNiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIwNSwgMzAsIDM1LCAyLCAyNTIsIDIwNCwgMzAsIDM1LCAyLCAyNTIsIDIwMywgMzAsIDM1LCAyLCAyNTIsIDIwMiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIwMSwgMzAsIDM1LCAyLCAyNTIsIDIwMCwgMzAsIDM1LCAyLCAyNTIsIDE5OSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE5OCwgMzAsIDM1LCAyLCAyNTIsIDE5NywgMzAsIDM1LCAyLCAyNTIsIDE5NiwgMzAsIDM1LCAyLCAyNTIsIDE5NSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE5NCwgMzAsIDM1LCAyLCAyNTIsIDE5MywgMzAsIDM1LCAyLCAyNTIsIDE5MiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE5MSwgMzAsIDM1LCAyLCAyNTIsIDE5MCwgMzAsIDM1LCAyLCAyNTIsIDE4OSwgMzAsIDM1LCAyLCAyNTIsIDE4OCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE4NywgMzAsIDM1LCAyLCAyNTIsIDE4NiwgMzAsIDM1LCAyLCAyNTIsIDE4NSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE4NCwgMzAsIDM1LCAyLCAyNTIsIDE4MywgMzAsIDM1LCAyLCAyNTIsIDE4MiwgMzAsIDM1LCAyLCAyNTIsIDE4MSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE4MCwgMzAsIDM1LCAyLCAyNTIsIDE3OSwgMzAsIDM1LCAyLCAyNTIsIDE3OCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE3NywgMzAsIDM1LCAyLCAyNTIsIDE3NiwgMzAsIDM1LCAyLCAyNTIsIDE3NSwgMzAsIDM1LCAyLCAyNTIsIDE3NCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE3MywgMzAsIDM1LCAyLCAyNTIsIDE3MiwgMzAsIDM1LCAyLCAyNTIsIDE3MSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE3MCwgMzAsIDM1LCAyLCAyNTIsIDE2OSwgMzAsIDM1LCAyLCAyNTIsIDE2OCwgNjIsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAxNjcsIDI1MCwgMTAzLCAzMCwgMzUsIDIsIDI1MiwgMTY2LCAyNDIsIDE1MywgMzAsIDM1LCAyLCAyNTIsIDE2NSwgNzIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxNjQsIDIzOCwgNSwgMzAsIDM1LCAyLCAyNTIsIDE2MywgMjM0LCAyNDcsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNjIsIDIyNywgMjUxLCAzMCwgMzUsIDIsIDI1MiwgMTYxLCAyMjcsIDExOCwgMzAsIDM1LCAyLCAyNTIsIDE2MCwgCisgICAgMTU2LCAzMCwgMzUsIDIsIDI1MiwgMTU5LCAyMjUsIDE4MCwgMzAsIDM1LCAyLCAyNTIsIDE1OCwgMjI1LCAxNzksIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAxNTcsIDIyNSwgMTc4LCAzMCwgMzUsIDIsIDI1MiwgMTU2LCAyMjUsIDE3NywgMzAsIDM1LCAyLCAyNTIsIAorICAgIDE1NSwgMjAxLCAxNDcsIDMwLCAzNSwgMiwgMjUyLCAxNTQsIDIwMCwgMTk1LCAzMCwgMzUsIDIsIDI1MiwgMTUzLCAyMDAsIAorICAgIDEyMywgMzAsIDM1LCAyLCAyNTIsIDE1MiwgMjE3LCA4MywgMzAsIDM1LCAyLCAyNTIsIDE1MSwgMjUyLCA0LCAzMCwgMzUsIAorICAgIDIsIDI1MiwgMTUwLCAyNDksIDQ1LCAzMCwgMzUsIDIsIDI1MiwgMTQ5LCAyNDEsIDIyMiwgMzAsIDM1LCAyLCAyNTIsIDE0OCwgCisgICAgMjM4LCAxMywgMzAsIDM1LCAyLCAyNTIsIDE0NywgMjI3LCAyMjcsIDMwLCAzNSwgMiwgMjUyLCAxNDYsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNDUsIDMwLCAzNSwgMiwgMjUyLCAxNDQsIDMwLCAzNSwgMiwgMjUyLCAxNDMsIDMwLCAzNSwgMiwgMjUyLCAxNDIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxNDEsIDMwLCAzNSwgMiwgMjUyLCAxNDAsIDMwLCAzNSwgMiwgMjUyLCAxMzksIDI0MiwgMTYwLCAKKyAgICA1LCA2MiwgMjQyLCAxNjAsIDUsIDcyLCAyNDIsIDE2MCwgNSwgNzAsIDI0MiwgMTYwLCA1LCA3NCwgMjQyLCAxNjAsIDUsIAorICAgIDY2LCAyNDIsIDE2MCwgNSwgMjI3LCAyNDgsIDI0MiwgMTYwLCA1LCAyMjcsIDE2NiwgMjQyLCAxNjAsIDUsIDE2MSwgMjQyLCAKKyAgICAxNjAsIDUsIDIyNywgOCwgMjQyLCAxNjAsIDUsIDIyNiwgMTYzLCAyNDIsIDE2MCwgNSwgMjI2LCA4OCwgMjQyLCAxNjAsIDUsIAorICAgIDIyNiwgMTUsIDI0MiwgMTYwLCA1LCAxOTQsIDI0MiwgMTYwLCA1LCAyMjUsIDQwLCAyNDIsIDE2MCwgNSwgMjI0LCAyMTAsIAorICAgIDI0MiwgMTYwLCA1LCAyMjQsIDExMCwgMjQyLCAxNjAsIDUsIDIyNCwgNDIsIDI0MiwgMTYwLCA1LCAxNzgsIDI0MiwgMTYwLCAKKyAgICA1LCAyMjIsIDc2LCAyNDIsIDE2MCwgNSwgMjIxLCAyMTEsIDI0MiwgMTYwLCA1LCAyMjEsIDEzNiwgMjQyLCAxNjAsIDUsIAorICAgIDIyMSwgNDEsIDI0MiwgMTYwLCA1LCAxODgsIDI0MiwgMTYwLCA1LCAyMjAsIDM0LCAyNDIsIDE2MCwgNSwgMjE5LCAxNTAsIAorICAgIDI0MiwgMTYwLCA1LCAyMTgsIDI0MSwgMjQyLCAxNjAsIDUsIDIxOCwgMTMzLCAyNDIsIDE2MCwgNSwgMTcyLCAyNDIsIDE2MCwgCisgICAgNSwgMjE2LCA3MywgMjQyLCAxNjAsIDUsIDIxNSwgMjA0LCAyNDIsIDE2MCwgNSwgMjE1LCAxMDYsIDI0MiwgMTYwLCA1LCAKKyAgICAyMTQsIDIyNCwgMjQyLCAxNjAsIDUsIDIxMywgMjUyLCAyNDIsIDE2MCwgNSwgMjEzLCAxOTAsIDI0MiwgMTYwLCA1LCAyMTMsIAorICAgIDg4LCAyNDIsIDE2MCwgNSwgMjEzLCAxLCAyNDIsIDE2MCwgNSwgMjEyLCAxNzUsIDI0MiwgMTYwLCA1LCAyMTIsIDY0LCAKKyAgICAyNDIsIDE2MCwgNSwgMjExLCAyMDIsIDI0MiwgMTYwLCA1LCAyMDksIDE4MiwgMjQyLCAxNjAsIDUsIDIwOSwgMjksIDI0MiwgCisgICAgMTYwLCA1LCAyMDgsIDI0LCAyNDIsIDE2MCwgNSwgMjA3LCAzNiwgMjQyLCAxNjAsIDUsIDIwNiwgMjAxLCAyNDIsIDE2MCwgCisgICAgNSwgMjA2LCAxNSwgMjQyLCAxNjAsIDUsIDEzOCwgMjQyLCAxNjAsIDUsIDIwNCwgMjE1LCAyNDIsIDE2MCwgNSwgMjAxLCAKKyAgICAxMTQsIDI0MiwgMTYwLCA1LCAyMDEsIDY0LCAyNDIsIDE2MCwgNSwgMjAxLCAzMSwgMjQyLCAxNjAsIDUsIDIwMSwgMCwgCisgICAgMjQyLCAxNjAsIDUsIDIwMCwgMTgxLCAyNDIsIDE2MCwgNSwgMjAwLCAxNzUsIDI0MiwgMTYwLCA1LCAxOTksIDExNCwgMjQyLCAKKyAgICAxNjAsIDUsIDE5OSwgMTQsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjUxLCAxNDAsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgCisgICAgMjQ4LCAyMDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjM1LCAxNDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjQyLCAKKyAgICAyMiwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMzQsIDEzOSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMDEsIDcyLCAyMjgsIAorICAgIDExOSwgMjUwLCAyMzgsIDEsIDE5OSwgOTIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjM0LCA5MSwgMjI4LCAxMTksIDI1MCwgCisgICAgMjM4LCAxLCAyMDYsIDE0MiwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAxOTksIDIzMywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAKKyAgICAyMjcsIDU3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIyNSwgODIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjIyLCA0NywgCisgICAgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTgsIDg5LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxMiwgMTksIDIyOCwgMTE5LCAKKyAgICAyNTAsIDIzOCwgMSwgMjUwLCAxMDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjE2LCA3MywgMjI4LCAxMTksIDI1MCwgCisgICAgMjM4LCAxLCAyMTIsIDU0LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxNCwgMTAxLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIAorICAgIDIxMywgMTIzLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxMCwgMjEsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjA2LCAKKyAgICAyMTUsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMjExLCAxOTMsIDU0LCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAxMDIsIDIyOCwgCisgICAgMTE5LCAyNTAsIDIzOCwgNDEsIDEwNSwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMTQ3LCAyMjgsIDExOSwgMjUwLCAyMzgsIAorICAgIDQxLCAyMDYsIDE2NiwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMjA0LCAxNTksIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIAorICAgIDExMiwgMjMzLCA4MiwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMTEyLCAyMDYsIDUwLCAyMjgsIDExOSwgMjUwLCAyMzgsIAorICAgIDQxLCAyMDYsIDE2NywgMjA2LCA1MCwgMjE2LCAxNzUsIDEsIDI1MSwgMTQwLCAyMTYsIDE3NSwgMSwgMjQ4LCAyMDcsIDIxNiwgCisgICAgMTc1LCAxLCAyMzUsIDE0NywgMjE2LCAxNzUsIDEsIDI0MiwgMjIsIDIxNiwgMTc1LCAxLCAyMzQsIDEzOSwgMjE2LCAxNzUsIAorICAgIDEsIDIwMSwgNzIsIDIxNiwgMTc1LCAxLCAxOTksIDkyLCAyMTYsIDE3NSwgMSwgMjM0LCA5MSwgMjE2LCAxNzUsIDEsIDIwNiwgCisgICAgMTQyLCAyMTYsIDE3NSwgMSwgMTk5LCAyMzMsIDIxNiwgMTc1LCAxLCAyMjcsIDU3LCAyMTYsIDE3NSwgMSwgMjI1LCA4MiwgCisgICAgMjE2LCAxNzUsIDEsIDIyMiwgNDcsIDIxNiwgMTc1LCAxLCA0NywgMjE4LCA4OSwgMjE2LCAxNzUsIDEsIDIxOCwgODksIAorICAgIDIxNiwgMTc1LCAxLCAyMTIsIDE5LCAyMTYsIDE3NSwgMSwgMjUwLCAxMDcsIDIxNiwgMTc1LCAxLCAyMTYsIDczLCAyMTYsIAorICAgIDE3NSwgMSwgMjEyLCA1NCwgMjE2LCAxNzUsIDEsIDIxNCwgMTAxLCAyMTYsIDE3NSwgMSwgMjEzLCAxMjMsIDIxNiwgMTc1LCAKKyAgICAxLCAyMTAsIDIxLCAyMTYsIDE3NSwgMSwgMjA2LCAyMTUsIDIxNiwgMTc1LCAyMjUsIDIzLCAyMzcsIDM5LCAyMTYsIDE3NSwgCisgICAgMjEzLCA0MSwgMjM3LCAzOSwgMjE2LCAxNzUsIDQxLCAxMDIsIDIxNiwgMTc1LCA0MSwgMTA1LCAyMTYsIDE3NSwgNDEsIAorICAgIDE0NywgMjE2LCAxNzUsIDQxLCAxNDksIDIxNiwgMTc1LCA0MSwgMTY0LCAyMTYsIDE3NSwgNDEsIDIwNiwgMTY2LCAyMTYsIAorICAgIDE3NSwgNDEsIDIwNCwgMTU5LCAyMjAsIDE1MywgMSwgNDcsIDI1MSwgMTQwLCAyMjAsIDE1MywgMSwgMjUxLCAxNDAsIDIyMCwgCisgICAgMTUzLCAxLCA0NywgMjQ4LCAyMDcsIDIyMCwgMTUzLCAxLCAyNDgsIDIwNywgMjIwLCAxNTMsIDEsIDIzNSwgMTQ3LCAyMjAsIAorICAgIDE1MywgMSwgMjQyLCAyMiwgMjIwLCAxNTMsIDEsIDQ3LCAyMzQsIDEzOSwgMjIwLCAxNTMsIDEsIDIzNCwgMTM5LCAyMjAsIAorICAgIDE1MywgMSwgMjAxLCA3MiwgMjIwLCAxNTMsIDEsIDE5OSwgOTIsIDIyMCwgMTUzLCAxLCAyMzQsIDkxLCAyMjAsIDE1MywgMSwgCisgICAgMjA2LCAxNDIsIDIyMCwgMTUzLCAxLCA0NywgMTk5LCAyMzMsIDIyMCwgMTUzLCAxLCAxOTksIDIzMywgMjIwLCAxNTMsIDEsIAorICAgIDQ3LCAyMjcsIDU3LCAyMjAsIDE1MywgMSwgMjI3LCA1NywgMjIwLCAxNTMsIDEsIDQ3LCAyMjUsIDgyLCAyMjAsIDE1MywgMSwgCisgICAgMjI1LCA4MiwgMjIwLCAxNTMsIDEsIDQ3LCAyMjIsIDQ3LCAyMjAsIDE1MywgMSwgMjIyLCA0NywgMjIwLCAxNTMsIDEsIDQ3LCAKKyAgICAyMTgsIDg5LCAyMjAsIDE1MywgMSwgMjE4LCA4OSwgMjIwLCAxNTMsIDEsIDIxMiwgMTksIDIyMCwgMTUzLCAxLCAyNTAsIAorICAgIDEwNywgMjIwLCAxNTMsIDEsIDIxNiwgNzMsIDIyMCwgMTUzLCAxLCAyMTIsIDU0LCAyMjAsIDE1MywgMSwgMjE0LCAxMDEsIAorICAgIDIyMCwgMTUzLCAxLCAyMTMsIDEyMywgMjIwLCAxNTMsIDEsIDQ3LCAyMTAsIDIxLCAyMjAsIDE1MywgMSwgMjEwLCAyMSwgCisgICAgMjIwLCAxNTMsIDEsIDIwNiwgMjE1LCAyMjAsIDE1MywgNDEsIDEwMiwgMjIwLCAxNTMsIDQxLCAxMDUsIDIyMCwgMTUzLCAKKyAgICA0MSwgMTQ3LCAyMjAsIDE1MywgNDEsIDE0OSwgMjIwLCAxNTMsIDI0MiwgMjIwLCA0MSwgMTQ5LCAyMjAsIDE1MywgNDEsIAorICAgIDE2NCwgMjIwLCAxNTMsIDQxLCAyMDYsIDE2NiwgMjIwLCAxNTMsIDQxLCAyMDQsIDE1OSwgMjIwLCAxNTMsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDIzNCwgMTUyLCAxLCAyNTEsIDE0MCwgMjM0LCAxNTIsIDEsIDI0OCwgMjA3LCAyMzQsIDE1MiwgMSwgMjM1LCAKKyAgICAxNDcsIDIzNCwgMTUyLCAxLCAyNDIsIDIxLCAyMzQsIDE1MiwgMSwgMjM0LCAxMzksIDIzNCwgMTUyLCAxLCAyMDEsIDcyLCAKKyAgICAyMzQsIDE1MiwgMSwgMTk5LCA5MSwgMjM0LCAxNTIsIDEsIDIzNCwgOTEsIDIzNCwgMTUyLCAxLCAyMDYsIDE0MiwgMjM0LCAKKyAgICAxNTIsIDEsIDE5OSwgMjMzLCAyMzQsIDE1MiwgMSwgMjI3LCA1NywgMjM0LCAxNTIsIDEsIDIyNSwgODIsIDIzNCwgMTUyLCAKKyAgICAxLCAyMjIsIDQ3LCAyMzQsIDE1MiwgMSwgMjE4LCA4OSwgMjM0LCAxNTIsIDEsIDIxMiwgMTksIDIzNCwgMTUyLCAxLCAyNTAsIAorICAgIDEwNiwgMjM0LCAxNTIsIDEsIDIxNiwgNzMsIDIzNCwgMTUyLCAxLCAyMTIsIDU0LCAyMzQsIDE1MiwgMSwgMjE0LCAxMDEsIAorICAgIDIzNCwgMTUyLCAxLCAyMTAsIDIxLCAyMzQsIDE1MiwgMSwgMjA2LCAyMTUsIDIzNCwgMTUyLCA0MSwgMTAyLCAyMzQsIDE1MiwgCisgICAgNDEsIDE2NCwgMjM0LCAxNTIsIDQxLCAyMDYsIDE2NiwgMjM0LCAxNTIsIDQxLCAyMDQsIDE1OSwgMjM0LCAxNTIsIDQxLCAKKyAgICAxMTIsIDIzMywgODIsIDIxNSwgMjE1LCAxLCAyNTEsIDEzNywgMjE1LCAyMTUsIDEsIDI0OCwgMjEwLCAyMTUsIDIxNSwgMSwgCisgICAgMjM2LCA2MiwgMjE1LCAyMTUsIDEsIDI0MSwgMTM4LCAyMTUsIDIxNSwgMSwgMjM0LCAxMzksIDIxNSwgMjE1LCAxLCAyMDEsIAorICAgIDc5LCAyMTUsIDIxNSwgMSwgMTk5LCAxMDcsIDIxNSwgMjE1LCAxLCAyMzQsIDkzLCAyMTUsIDIxNSwgMSwgMjA2LCAxNDYsIAorICAgIDIxNSwgMjE1LCAxLCAxOTksIDIzNCwgMjE1LCAyMTUsIDEsIDIyNywgODYsIDIxNSwgMjE1LCAxLCAyMjUsIDg4LCAyMTUsIAorICAgIDIxNSwgMSwgMjIyLCA0NywgMjE1LCAyMTUsIDEsIDIxOCwgODksIDIxNSwgMjE1LCAxLCAyMTAsIDE2MSwgMjE1LCAyMTUsIAorICAgIDEsIDI1MSwgMTcxLCAyMTUsIDIxNSwgMSwgMjE2LCA3MywgMjE1LCAyMTUsIDEsIDIxMiwgNTUsIDIxNSwgMjE1LCAxLCAKKyAgICAyMTQsIDEwNiwgMjE1LCAyMTUsIDEsIDIxMiwgMjMwLCAyMTUsIDIxNSwgMSwgMjEwLCAyMSwgMjE1LCAyMTUsIDEsIDIwNiwgCisgICAgMjIxLCAyMTUsIDIxNSwgNDEsIDEwMiwgMjE1LCAyMTUsIDQxLCAyMDYsIDE2NiwgMjE1LCAyMTUsIDQxLCAyMDQsIDE1OSwgCisgICAgMjE1LCAyMTUsIDQxLCAxMTIsIDIzMywgODIsIDIxNSwgMjE1LCA0MSwgMTA1LCAyMTUsIDIxNSwgNDEsIDE0NywgMjE1LCAKKyAgICAyMTUsIDIwMCwgMjM4LCAyMTAsIDE1NCwgMjIzLCAyNTUsIDEsIDYyLCAyMjMsIDI1NSwgMSwgMjUwLCAxMDMsIDIyMywgCisgICAgMjU1LCAxLCAyMzYsIDE1NiwgMjIzLCAyNTUsIDEsIDI0MiwgMTUzLCAyMjMsIDI1NSwgMSwgNzIsIDIyMywgMjU1LCAxLCAKKyAgICAyMDMsIDE2OCwgMjIzLCAyNTUsIDEsIDcwLCAyMjMsIDI1NSwgMSwgMjAwLCAxMjMsIDIyMywgMjU1LCAxLCAyMjcsIDExOCwgCisgICAgMjIzLCAyNTUsIDEsIDE1NiwgMjIzLCAyNTUsIDEsIDIyMywgMjQzLCAyMjMsIDI1NSwgMSwgMjIwLCAyMTQsIDIyMywgMjU1LCAKKyAgICAxLCA3NCwgMjIzLCAyNTUsIDEsIDE0NiwgMjIzLCAyNTUsIDEsIDIwOCwgMTgyLCAyMjMsIDI1NSwgMSwgMjA3LCA4MywgCisgICAgMjIzLCAyNTUsIDEsIDY2LCAyMjMsIDI1NSwgMSwgMjM4LCA1LCAyMjMsIDI1NSwgMSwgMjE0LCAxNjcsIDIyMywgMjU1LCAxLCAKKyAgICAyMTIsIDEyMiwgMjIzLCAyNTUsIDEsIDIwNSwgMCwgMjIzLCAyNTUsIDEsIDI1MSwgODUsIDIyMywgMjU1LCAxLCAyMzgsIAorICAgIDE3OSwgMjIzLCAyNTUsIDEsIDIyNCwgMiwgMjIzLCAyNTUsIDEsIDIxOSwgMjIsIDIyMywgMjU1LCAxLCAyNDcsIDIyMywgCisgICAgMjIzLCAyNTUsIDIwNSwgOTUsIDgxLCAxMzIsIDIzNCwgNjgsIDEsIDYyLCAxMzIsIDIzNCwgNjgsIDEsIDcyLCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDcwLCAxMzIsIDIzNCwgNjgsIDEsIDc0LCAxMzIsIDIzNCwgNjgsIDEsIDE4MywgMTMyLCAyMzQsIDY4LCAKKyAgICAxLCAyMDEsIDExNCwgMTMyLCAyMzQsIDY4LCAxLCAyNDksIDEzNiwgMTMyLCAyMzQsIDY4LCAxLCAyNDksIDEzNSwgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCAxNzIsIDEzMiwgMjM0LCA2OCwgMSwgMTc4LCAxMzIsIDIzNCwgNjgsIDEsIDE4OCwgMTMyLCAyMzQsIAorICAgIDY4LCAxLCAyMjAsIDE2MSwgMTMyLCAyMzQsIDY4LCAxLCAyMjAsIDM0LCAxMzIsIDIzNCwgNjgsIDEsIDIyMCwgMzMsIDEzMiwgCisgICAgMjM0LCA2OCwgMSwgMjEzLCAyNTIsIDEzMiwgMjM0LCA2OCwgMSwgMjEzLCAyNTEsIDEzMiwgMjM0LCA2OCwgMSwgMTk0LCAKKyAgICAxMzIsIDIzNCwgNjgsIDEsIDIyNiwgMjA3LCAxMzIsIDIzNCwgNjgsIDEsIDIzNCwgODQsIDEzMiwgMjM0LCA2OCwgMSwgCisgICAgMjEyLCA2NCwgMTMyLCAyMzQsIDY4LCAxLCAyMTIsIDYzLCAxMzIsIDIzNCwgNjgsIDEsIDIxMSwgMjAyLCAxMzIsIDIzNCwgCisgICAgNjgsIDEsIDE2MSwgMTMyLCAyMzQsIDY4LCAxLCAyMTQsIDE1OSwgMTMyLCAyMzQsIDY4LCAxLCAyMDcsIDM2LCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDIwNywgMzUsIDEzMiwgMjM0LCA2OCwgMSwgMjA2LCAyMDEsIDEzMiwgMjM0LCA2OCwgMSwgMjA2LCAKKyAgICAyMDAsIDEzMiwgMjM0LCA2OCwgMSwgMTM4LCAxMzIsIDIzNCwgNjgsIDEsIDI0MiwgNTgsIDEzMiwgMjM0LCA2OCwgMTYsIAorICAgIDIwMiwgMjI4LCAxMzIsIDIzNCwgNjgsIDE2LCAyMDIsIDIyNywgMTMyLCAyNDIsIDE5MSwgMSwgNjIsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDEsIDcyLCAxMzIsIDI0MiwgMTkxLCAxLCA3MCwgMTMyLCAyNDIsIDE5MSwgMSwgNzQsIDEzMiwgMjQyLCAxOTEsIDEsIAorICAgIDE4MywgMTMyLCAyNDIsIDE5MSwgMSwgMjAxLCAxMTQsIDEzMiwgMjQyLCAxOTEsIDEsIDI0OSwgMTM2LCAxMzIsIDI0MiwgCisgICAgMTkxLCAxLCAxNzIsIDEzMiwgMjQyLCAxOTEsIDEsIDE3OCwgMTMyLCAyNDIsIDE5MSwgMSwgMTg4LCAxMzIsIDI0MiwgMTkxLCAKKyAgICAxLCAyMjAsIDM0LCAxMzIsIDI0MiwgMTkxLCAxLCAyMTMsIDI1MiwgMTMyLCAyNDIsIDE5MSwgMSwgMTk0LCAxMzIsIDI0MiwgCisgICAgMTkxLCAxLCAyMjYsIDIwNywgMTMyLCAyNDIsIDE5MSwgMSwgMjM0LCA4NCwgMTMyLCAyNDIsIDE5MSwgMSwgMjEyLCA2NCwgCisgICAgMTMyLCAyNDIsIDE5MSwgMSwgMjUwLCAyMzQsIDIxMiwgNjQsIDEzMiwgMjQyLCAxOTEsIDEsIDIxMSwgMjAyLCAxMzIsIAorICAgIDI0MiwgMTkxLCAxLCAxNjEsIDEzMiwgMjQyLCAxOTEsIDEsIDIxNCwgMTU5LCAxMzIsIDI0MiwgMTkxLCAxLCAyMDcsIDM2LCAKKyAgICAxMzIsIDI0MiwgMTkxLCAxLCAyMDYsIDIwMSwgMTMyLCAyNDIsIDE5MSwgMSwgMTM4LCAxMzIsIDI0MiwgMTkxLCAxLCAyNDIsIAorICAgIDU4LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM4LCAyMDAsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgCisgICAgMTEyLCAyMzQsIDIxMywgMTMyLCAyNDIsIDE5MSwgMjI0LCA5NywgMjEzLCA3LCAxMzIsIDI0MiwgMTkxLCAyMjQsIDk3LCAKKyAgICAyMjgsIDEyNCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEwMiwgMTMyLCAyNDIsIDE5MSwgNDEsIDEwNSwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDE0NywgMTMyLCAyNDIsIDE5MSwgNDEsIDE0OSwgMTMyLCAyNDIsIDE5MSwgNDEsIDE2NCwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDE4NywgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgMTM1LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTkyLCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjE5LCAxMTMsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDYsIDE2NiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNCwgCisgICAgMTU5LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCA2NywgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNiwgMjM1LCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjM3LCAxMDQsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDkyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAKKyAgICAxMjksIDEzMiwgMjQyLCAxOTEsIDQxLCAxMTIsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjAsIDIzMywgODIsIAorICAgIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjYsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzYsIDIyOSwgMjMzLCA4MiwgCisgICAgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgNjEsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDEwNiwgMjMzLCAKKyAgICA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMzIsIAorICAgIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDExMiwgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyMCwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyNiwgMjA2LCAKKyAgICA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNiwgMjI5LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM3LCA2MSwgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwOSwgMTA2LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAKKyAgICAxMzYsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzgsIDIzMiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIAorICAgIDIxOSwgMTE0LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCAxNjcsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAyMDQsIDE2MCwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgNjgsIDIwNiwgNTAsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDQxLCAyMzYsIDIzNiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgMTA1LCAyMDYsIDUwLCAxMzIsIAorICAgIDI0MiwgMTkxLCA0MSwgMjA5LCA5MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgMTMwLCAyMDYsIDUwLCAKKyAgICAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMjMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTksIDEwOSwgMjA2LCAKKyAgICA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDExMiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyMCwgCisgICAgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyNiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIzNiwgMjI5LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM3LCA2MSwgMjMzLCA4MywgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwOSwgMTA2LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCAKKyAgICA0MSwgMjEwLCAxMzYsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzgsIDIzMiwgMjMzLCA4MywgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCAKKyAgICAyMzYsIDIxOSwgMTEyLCAyMDQsIDE2NywgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDEyMCwgMjA0LCAxNjYsIDEzMiwgCisgICAgMjQyLCAxOTEsIDIzNiwgMjE5LCAxMjYsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM2LCAyMjksIAorICAgIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM3LCA2MSwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgCisgICAgMjE5LCAyMDksIDEwNiwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMTAsIDEzNiwgMjA0LCAxNjYsIAorICAgIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMzgsIDIzMiwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAKKyAgICAyMTksIDExNCwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMDYsIDE2NywgMjA0LCAxNjYsIDIyNiwgCisgICAgMTk0LCAxLCA2MiwgMjI2LCAxOTQsIDIyLCAyLCA3MCwgMjI2LCAxOTQsIDIyLCAyLCA2NiwgMjI2LCAxOTQsIDIyLCAyLCAKKyAgICAxMDksIDE0NiwgMjI2LCAxOTQsIDIyLCAyLCA3MiwgMjI2LCAxOTQsIDIyLCAyLCA3NCwgMjI2LCAxOTQsIDIyLCAyMjUsIDIsIAorICAgIDgxLCAyMjYsIDE5NCwgMiwgNTMsIDIxMywgMjcsIDU3LCAyMjYsIDE5NCwgMiwgMjUxLCAzMywgMjI2LCAxOTQsIDIsIDIwMiwgCisgICAgMjAzLCAyMjYsIDE5NCwgMSwgMTYxLCAyMjYsIDE5NCwgMSwgMjI2LCAyMDcsIDIyNiwgMTk0LCAxLCAyMzYsIDg5LCAyMjYsIAorICAgIDE5NCwgMSwgMjM1LCAxOTksIDIyNiwgMTk0LCAxLCAyNDcsIDE5MCwgMjI2LCAxOTQsIDEsIDI0NywgMzcsIDIyNiwgMTk0LCAKKyAgICAxLCAyMjcsIDI0OCwgMjI2LCAxOTQsIDEsIDIxOCwgNjAsIDIyNiwgMTk0LCAxLCAyMDQsIDI1MywgMjI2LCAxOTQsIDEsIAorICAgIDIwNCwgMjQxLCAyMjYsIDE5NCwgMSwgMjQxLCAyMjAsIDIyNiwgMTk0LCAxLCAyNDEsIDIwNCwgMjI2LCAxOTQsIDEsIDIxOSwgCisgICAgMjEsIDIyNiwgMTk0LCAxLCAyMDcsIDM2LCAyMjYsIDE5NCwgMSwgMjA2LCAxMjIsIDIyNiwgMTk0LCAxLCAyNDIsIDU4LCAKKyAgICAyMjYsIDE5NCwgMSwgMjQxLCAxMDAsIDIyNiwgMTk0LCAxLCAxODgsIDIyNiwgMTk0LCAxLCAxNzIsIDIyNiwgMTk0LCAxLCAKKyAgICAyMTUsIDI0NSwgMjI2LCAxOTQsIDEsIDI0OSwgMTM2LCAyMjYsIDE5NCwgMSwgMjQ4LCAyMDAsIDIyNiwgMTk0LCAxLCAxNzgsIAorICAgIDIyNiwgMTk0LCAxLCAxODMsIDIyNiwgMTk0LCAxLCAyMTMsIDI1MiwgMjI2LCAxOTQsIDEsIDE5NCwgMjI2LCAxOTQsIDEsIAorICAgIDIwMywgOTAsIDIyNiwgMTk0LCAxLCAyMTAsIDExNCwgMjI2LCAxOTQsIDEsIDIwOCwgMTc5LCAyMjYsIDE5NCwgMSwgMjEyLCAKKyAgICA2NCwgMjI2LCAxOTQsIDEsIDE5OSwgMTE0LCAyMjYsIDE5NCwgMSwgMTQ0LCAyMjYsIDE5NCwgMSwgMjI2LCAxMDksIDIyNiwgCisgICAgMTk0LCAxLCAyMDQsIDIyMSwgMjI2LCAxOTQsIDIsIDI0OSwgNzcsIDU2LCAyMjYsIDE5NCwgMiwgMjQ3LCAxMDcsIDIyNiwgCisgICAgMTk0LCAyLCA3MywgNTcsIDIyNiwgMTk0LCAyMDIsIDIwOCwgMjI2LCAxOTQsIDE3LCAxMDIsIDIyNiwgMTk0LCAxNywgMTA1LCAKKyAgICAyMjYsIDE5NCwgMTcsIDE0NywgMjI2LCAxOTQsIDE3LCAxNDksIDIyNiwgMTk0LCA0MSwgMjA2LCAxNjYsIDIyNiwgMTk0LCAKKyAgICA0MSwgMjA0LCAxNTksIDIyNiwgMTk0LCA0MSwgMTEyLCAyMzMsIDgyLCAyMjYsIDE5NCwgNDEsIDExMiwgMjA2LCA1MCwgCisgICAgMjI2LCAxOTQsIDIxNCwgMjEyLCAyNDAsIDE4MiwgMjI2LCAxOTQsIDIxNCwgMjEyLCA0LCAyNDYsIDE1NSwgMjI2LCAxOTQsIAorICAgIDIxNCwgMjEyLCAyNDYsIDE1NSwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyNDIsIDI0NCwgMTQ4LCAyMjYsIDE5NCwgMjE0LCAKKyAgICAyMTIsIDIyMiwgMTc0LCAyMjYsIDE5NCwgMjE0LCAyMTIsIDIyNCwgNjQsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjQyLCAxMCwgCisgICAgMjI2LCAxOTQsIDIxNCwgMjEyLCA1MywgMjQyLCAxMCwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyMjQsIDE3MCwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM0LCAxMzksIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyNSwgODIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNCwgOTEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyMiwgNDcsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxNCwgMTAxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDEsIDcyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTAsIDIxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMTMsIDEyMywgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjQ4LCAyMDcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgMjE1LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTEsIDI1MSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjI3LCA1NywgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjE4LCA4OSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjI2LCAxODksIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxMiwgNTQsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIxMiwgMTksIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNywgMTQ3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNTEsIDE0MiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjUwLCAxMDYsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDI0MSwgOTcsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNSwgMTQ3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNDIsIDIyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzUsIDE4NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCAxNDIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDE5OSwgOTEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDI0MSwgOTQsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDE5OSwgMjMzLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDYsIDEwOCwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCA4NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgNDEsIDEwMiwgNDAsIDIwOCwgMjU0LCAKKyAgICAyNTAsIDI0OSwgNDEsIDIzNywgMTA0LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxNDUsIDIyOCwgOTksIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCAxLCAyMzQsIDExNSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIyNSwgOTEsIDQwLCAxNTcsIDI1MCwgMjQ5LCAKKyAgICAxLCAyMzQsIDIyNCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIyMiwgNjEsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMTQsIAorICAgIDE1MiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIwMSwgNzIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzgsIDEwMiwgNDAsIAorICAgIDE1NywgMjUwLCAyNDksIDEsIDIxMywgMTU0LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjQ4LCAyNDAsIDQwLCAxNTcsIDI1MCwgCisgICAgMjQ5LCAxLCAyMDYsIDE4MywgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzOCwgMTAzLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgCisgICAgMjI3LCA4NiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIxOCwgMjI3LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjI2LCAyMDMsIAorICAgIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMTIsIDU2LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM4LCAxMDEsIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCAxLCAyMzcsIDEzNCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI1MSwgMTQyLCA0MCwgMTU3LCAyNTAsIDI0OSwgCisgICAgMSwgMjUxLCAxNzEsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyNDIsIDUyLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM2LCA2LCAKKyAgICA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjQyLCAyOSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzNSwgMTk0LCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgMSwgMjA3LCA5LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMTk5LCAxMDUsIDQwLCAxNTcsIDI1MCwgMjQ5LCAKKyAgICAxLCAyMDYsIDExNCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIwMCwgNDYsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMDYsIAorICAgIDEwMiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDE5OSwgMTA4LCA0MCwgMTU3LCAyNTAsIDI0OSwgNDEsIDEwMiwgNDAsIDE1NywgCisgICAgMjUwLCAyNDksIDQxLCAyMDYsIDE2NiwgNDAsIDE1NywgMjUwLCAyNDksIDQxLCAyMDQsIDE1OSwgMjIyLCAxNzMsIDEsIAorICAgIDI1MSwgMTQwLCAyMjIsIDE3MywgMSwgMjQ4LCAyMDcsIDIyMiwgMTczLCAxLCAyNDgsIDE5NCwgMjIyLCAxNzMsIDEsIDIzNSwgCisgICAgMTQ3LCAyMjIsIDE3MywgMSwgMjM1LCAxNzIsIDIyMiwgMTczLCAxLCAyNDIsIDIyLCAyMjIsIDE3MywgMSwgMjM0LCAxMzksIAorICAgIDIyMiwgMTczLCAxLCAyMDEsIDcyLCAyMjIsIDE3MywgMiwgMjA0LCAzNiwgMjIyLCAxNzMsIDEsIDE5OSwgOTIsIDIyMiwgCisgICAgMTczLCAxLCAxOTksIDcwLCAyMjIsIDE3MywgMSwgMjI3LCAyMjksIDIyMiwgMTczLCAxLCAyMjcsIDIxMSwgMjIyLCAxNzMsIAorICAgIDEsIDIzNCwgOTEsIDIyMiwgMTczLCAxLCAyMDYsIDE0MiwgMjIyLCAxNzMsIDEsIDE5OSwgMjMzLCAyMjIsIDE3MywgMSwgCisgICAgMjI3LCA1NywgMjIyLCAxNzMsIDEsIDIwMCwgMTc4LCAyMjIsIDE3MywgMSwgMjI2LCAxOTYsIDIyMiwgMTczLCAxLCAyMjUsIAorICAgIDgyLCAyMjIsIDE3MywgMSwgMjQxLCA5MywgMjIyLCAxNzMsIDEsIDIwNiwgMTEzLCAyMjIsIDE3MywgMSwgMjIyLCA0NywgCisgICAgMjIyLCAxNzMsIDEsIDIxOCwgODksIDIyMiwgMTczLCAxLCAyMTIsIDE5LCAyMjIsIDE3MywgMSwgMjUwLCAxMDcsIDIyMiwgCisgICAgMTczLCAxLCAyNTIsIDkxLCAyMjIsIDE3MywgMSwgMjE2LCA3MywgMjIyLCAxNzMsIDEsIDIzNywgMTQ3LCAyMjIsIDE3MywgCisgICAgMSwgMjEyLCA1NCwgMjIyLCAxNzMsIDEsIDIxNCwgMTAxLCAyMjIsIDE3MywgMSwgMjAwLCAxNTYsIDIyMiwgMTczLCAxLCAKKyAgICAyMTQsIDEyOCwgMjIyLCAxNzMsIDEsIDIxMywgMTIzLCAyMjIsIDE3MywgMSwgMjEwLCAyMSwgMjIyLCAxNzMsIDEsIDIwOCwgCisgICAgMTQ4LCAyMjIsIDE3MywgMSwgMjA2LCAyMTUsIDIyMiwgMTczLCAyNTIsIDMsIDEzNCwgNTYsIDIyMiwgMTczLCAyNTIsIDMsIAorICAgIDEzNCwgNTcsIDIyMiwgMTczLCA0MSwgMTAyLCAyMjIsIDE3MywgNDEsIDE2NCwgMjIyLCAxNzMsIDQxLCAyMDYsIDE2NiwgCisgICAgMjIyLCAxNzMsIDQxLCAyMDQsIDE1OSwgMjIyLCAxNzMsIDQxLCAxMTIsIDIzMywgODIsIDIyMiwgMTczLCAyMTQsIDIxMiwgCisgICAgMjA4LCAxMDksIDIyMiwgMTczLCAyMTQsIDIxMiwgMjM3LCAzOSwgMjIyLCAxNzMsIDIxNCwgMjEyLCA1MywgNzMsIDIwMSwgCisgICAgNSwgMjQwLCAxODIsIDIyMiwgMTczLCAyMTQsIDIxMiwgNzMsIDIwMSwgNSwgMjQwLCAxODIsIDIyMiwgMTczLCAyMTQsIAorICAgIDIxMiwgMjQwLCAxODIsIDIyMiwgMTczLCAyMTQsIDIxMiwgMTIwLCAyNDAsIDE4MCwgMjIyLCAxNzMsIDIxNCwgMjEyLCAKKyAgICAyMjQsIDE3NywgMjM3LCA5MywgMjUwLCAxMTksIDEsIDYyLCAyNTAsIDExOSwgMSwgMjUyLCAxMzgsIDI1MCwgMTE5LCAxLCAKKyAgICAyNTEsIDMxLCAyNTAsIDExOSwgMSwgMjUyLCA5NywgMjUwLCAxMTksIDEsIDI1MSwgODUsIDI1MCwgMTE5LCAxLCAyNTIsIAorICAgIDk4LCAyNTAsIDExOSwgMSwgMjUxLCAyMjEsIDI1MCwgMTE5LCAxLCAyNTEsIDIxNywgMjUwLCAxMTksIDEsIDcyLCAyNTAsIAorICAgIDExOSwgMSwgMjM4LCAyNTUsIDI1MCwgMTE5LCAxLCA3NCwgMjUwLCAxMTksIDEsIDIxNywgNjMsIDI1MCwgMTE5LCAxLCA3MCwgCisgICAgMjUwLCAxMTksIDEsIDIyOCwgMTUxLCAyNTAsIDExOSwgMSwgNjYsIDI1MCwgMTE5LCAxLCAyMDMsIDE4MiwgMjUwLCAxMTksIAorICAgIDEsIDIyNywgOCwgMjUwLCAxMTksIDEsIDIwMCwgMTc1LCAyNTAsIDExOSwgMSwgMjAwLCAxMzcsIDI1MCwgMTE5LCAxLCAKKyAgICAyMDAsIDE0NywgMjUwLCAxMTksIDEsIDIzNiwgMTUsIDI1MCwgMTE5LCAxLCAyMzUsIDIzMCwgMjUwLCAxMTksIDEsIDIzNSwgCisgICAgMTg1LCAyNTAsIDExOSwgMSwgMjQ3LCA3NiwgMjUwLCAxMTksIDEsIDIyNywgMjI3LCAyNTAsIDExOSwgMSwgMjA2LCAyMDEsIAorICAgIDI1MCwgMTE5LCAxLCAyMDYsIDEwNiwgMjUwLCAxMTksIDEsIDI0MSwgMTc1LCAyNTAsIDExOSwgMSwgMjQxLCA5MSwgMjUwLCAKKyAgICAxMTksIDEsIDIwNCwgMjQ4LCAyNTAsIDExOSwgMSwgMjE2LCA3MywgMjUwLCAxMTksIDEsIDIzNywgMTQ3LCAyNTAsIDExOSwgCisgICAgMSwgMjQ5LCA4LCAyNTAsIDExOSwgMSwgMjQ4LCAxOTYsIDI1MCwgMTE5LCAxLCAyMTksIDI0MCwgMjUwLCAxMTksIDEsIAorICAgIDIxOSwgMTU2LCAyNTAsIDExOSwgMSwgMjE5LCAxNTcsIDI1MCwgMTE5LCAxLCAyMjAsIDM0LCAyNTAsIDExOSwgMSwgMjE4LCAKKyAgICA1MCwgMjUwLCAxMTksIDEsIDIxOSwgMTYsIDI1MCwgMTE5LCAxLCAyMjIsIDc2LCAyNTAsIDExOSwgMSwgMjM0LCAxLCAyNTAsIAorICAgIDExOSwgMSwgMTk5LCAxNjQsIDI1MCwgMTE5LCAxLCAyMDAsIDUxLCAyNTAsIDExOSwgMSwgMjAzLCA1OSwgMjUwLCAxMTksIAorICAgIDEsIDIxMywgMTkwLCAyNTAsIDExOSwgMSwgMjI1LCA0MCwgMjUwLCAxMTksIDEsIDIxMSwgMjAyLCAyNTAsIDExOSwgMSwgCisgICAgMTk5LCA4OSwgMjUwLCAxMTksIDEsIDIxMCwgNjUsIDI1MCwgMTE5LCAxLCAxOTksIDY4LCAyNTAsIDExOSwgMSwgMjA5LCAKKyAgICAxODksIDI1MCwgMTE5LCAxLCAyMDgsIDE0OSwgMjUwLCAxMTksIDEsIDIzNCwgMTM5LCAyNTAsIDExOSwgMjUyLCAzLCA4MSwgCisgICAgMjA1LCAyMjYsIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIDIxNCwgMjExLCA0LCAxMjAsIDE5MCwgMTE5LCAxMTIsIDczLCAKKyAgICAyMTQsIDIxMSwgMjI1LCA3MSwgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgMjE0LCAyMTEsIDIyNSwgNzEsIDExMiwgNzMsIAorICAgIDExOSwgMTIwLCAxOTAsIDIxNCwgMjExLCAyMjUsIDcxLCAxMjAsIDIxMywgMjQsIDExOSwgMTEyLCAyMTMsIDI3LCAyMTQsIAorICAgIDIxMSwgMjI1LCA3MSwgMTEyLCAyMTMsIDI3LCAxMTksIDEyMCwgMjEzLCAyNCwgMjE0LCAyMTEsIDIyOCwgNzcsIDIxNiwgCisgICAgMTA5LCAxLCAyNTEsIDE0MCwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDI0OCwgMjA3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgCisgICAgMjM1LCAxNDcsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyNDIsIDIyLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjM0LCAxMzksIAorICAgIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMDEsIDcyLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMTk5LCA5MiwgMjI4LCA3NywgCisgICAgMjE2LCAxMDksIDEsIDIzNCwgOTEsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMDYsIDE0MiwgMjI4LCA3NywgMjE2LCAxMDksIAorICAgIDEsIDE5OSwgMjMzLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjI3LCA1NywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIyNSwgCisgICAgODIsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMjIsIDQ3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjE4LCA4OSwgMjI4LCAKKyAgICA3NywgMjE2LCAxMDksIDEsIDIxMiwgMTksIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyNTAsIDEwNywgMjI4LCA3NywgMjE2LCAKKyAgICAxMDksIDEsIDIxNiwgNzMsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTIsIDU0LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgCisgICAgMjE0LCAxMDEsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTMsIDEyMywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIxMCwgMjEsIAorICAgIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMDYsIDIxNSwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxMDIsIDIyOCwgNzcsIDIxNiwgCisgICAgMTA5LCA0MSwgMTA1LCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDE0NywgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxNDksIAorICAgIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMjA2LCAxNjYsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMjA0LCAxNTksIDIyOCwgCisgICAgNzcsIDIxNiwgMTA5LCA0MSwgMTEyLCAyMzMsIDgyLCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDExMiwgMjA2LCA1MCwgMjI4LCAKKyAgICA3NywgMjE2LCAxOTEsIDEsIDI1MSwgMTQwLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjQ4LCAyMDcsIDIyOCwgNzcsIDIxNiwgCisgICAgMTkxLCAxLCAyMzUsIDE0NywgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDI0MiwgMjIsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAKKyAgICAyMzQsIDEzOSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIwMSwgNzEsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAxOTksIDkyLCAKKyAgICAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjM0LCA5MSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIwNiwgMTQyLCAyMjgsIDc3LCAKKyAgICAyMTYsIDE5MSwgMSwgMTk5LCAyMzMsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMjcsIDU3LCAyMjgsIDc3LCAyMTYsIDE5MSwgCisgICAgMSwgMjI1LCA4MiwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIyMiwgNDYsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMTgsIDg5LCAKKyAgICAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjEyLCAxOSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxNiwgNzMsIDIyOCwgNzcsIAorICAgIDIxNiwgMTkxLCAxLCAyMTIsIDU0LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjEwLCAyMSwgMjI4LCA3NywgMjE2LCAxOTEsIAorICAgIDEsIDIwNiwgMjE1LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDEwMiwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMDUsIDIyOCwgCisgICAgNzcsIDIxNiwgMTkxLCA0MSwgMTQ3LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDE0OSwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAKKyAgICAyMDYsIDE2NiwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAyMDQsIDE1OSwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTEyLCAyMDYsIDUwLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDI1MSwgCisgICAgMTQwLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDI0OCwgMjA3LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIzNSwgMTQ3LCAKKyAgICAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDI0MiwgMjIsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjM0LCAxMzksIDIxNCwgCisgICAgMjM2LCAyMTYsIDE5MSwgMSwgMjAxLCA3MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAxOTksIDkyLCAyMTQsIDIzNiwgMjE2LCAKKyAgICAxOTEsIDEsIDIzNCwgOTEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMTk5LCAyMzMsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgCisgICAgMjI3LCA1NywgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMjUsIDgyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIyMiwgNDYsIAorICAgIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjE4LCA4OSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMTIsIDE5LCAyMTQsIDIzNiwgCisgICAgMjE2LCAxOTEsIDEsIDIxNiwgNzMsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjEyLCA1NCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAKKyAgICAxLCAyMTAsIDIxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIwNiwgMjE1LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDIxMSwgCisgICAgMTkzLCA4MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAyMDQsIDE4NSwgMjExLCAxOTMsIDgxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIAorICAgIDIzNiwgMjI5LCAxOTAsIDMsIDI0MiwgMjM0LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDIzNiwgMjI5LCAxOTAsIDMsIDI0MCwgCisgICAgMTgyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxMDIsIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDEwNSwgMjE0LCAyMzYsIAorICAgIDIxNiwgMTkxLCA0MSwgMTQ3LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxNDksIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIAorICAgIDIwNiwgMTY2LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAyMDQsIDE1OSwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDYyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDYyLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjIxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDcwLCA0MCwgMjA0LCAKKyAgICAxODksIDEsIDIwMCwgMzksIDcwLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDcyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgCisgICAgMjMsIDc0LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIxNywgMTIxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDIxNywgMTIxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MiwgODksIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUyLCA4OSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIyMCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIyMCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDE5MywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDE5MywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIxNSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIxNSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIzNSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIzNSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIxOSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDEyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUwLCAxMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAxMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMDIsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMDIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMTMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjE3LCAxMTksIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjE3LCAxMTksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAxNTEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAxNTEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjM4LCAxOTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxOTAsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCA4NSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDIxMCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIxMCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE1NywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDE1NywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE3NiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDE3NiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE0MywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDE0MywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDc2LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgMTY1LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMjA5LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgMTMzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIxNywgNTQsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjMyLCAyMzMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM5LCA3LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOSwgNywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIAorICAgIDEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIyOCwgMzcsIAorICAgIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjI4LCAzNywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMTcsIDM1LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIwMCwgMzksIDIxNywgMzUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAyNTMsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAyNTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMDgsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAxODgsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMDYsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAxODEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAxODEsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjM4LCA5NCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDk0LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMTU1LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMTU1LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjAzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjAzLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDIxNywgMTEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjQ5LCA2MSwgNDAsIAorICAgIDE1MiwgNiwgMSwgNjIsIDQwLCAxNTIsIDYsIDEsIDI1MiwgMTM4LCA0MCwgMTUyLCA2LCAxLCAyMzksIDksIDQwLCAxNTIsIAorICAgIDYsIDEsIDI1MSwgOTYsIDQwLCAxNTIsIDYsIDEsIDIzOSwgNywgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNzYsIDQwLCAxNTIsIAorICAgIDYsIDEsIDIzOSwgNCwgNDAsIDE1MiwgNiwgMSwgMjM5LCAzLCA0MCwgMTUyLCA2LCAxLCAyNTEsIDc5LCA0MCwgMTUyLCA2LCAKKyAgICAxLCA3MiwgNDAsIDE1MiwgNiwgMSwgMjQ2LCAxMTEsIDcyLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDI1NSwgNDAsIDE1MiwgNiwgCisgICAgMSwgMjM4LCAyNDgsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjQ3LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDI0NCwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjM4LCAyNDEsIDQwLCAxNTIsIDYsIDEsIDcwLCA0MCwgMTUyLCA2LCAxLCAyMjgsIDE1MSwgNDAsIDE1MiwgNiwgCisgICAgMSwgMjM4LCAyMTksIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjE2LCA0MCwgMTUyLCA2LCAxLCAyNTEsIDE1OSwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjAzLCAyMzYsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjA5LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE5MiwgNDAsIAorICAgIDE1MiwgNiwgMSwgMjM4LCAxOTAsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTc5LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE0MywgCisgICAgNDAsIDE1MiwgNiwgMSwgNzQsIDQwLCAxNTIsIDYsIDEsIDIxNywgNjMsIDQwLCAxNTIsIDYsIDEsIDIxOSwgMTIxLCAyMTcsIAorICAgIDEyMSwgNDAsIDE1MiwgNiwgMSwgMjEyLCAxNzEsIDIxNywgMTIxLCA0MCwgMTUyLCA2LCAxLCAyMTcsIDEyMCwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjM4LCAxMzMsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTg0LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDExNSwgNDAsIAorICAgIDE1MiwgNiwgMSwgMjA5LCAyNTAsIDIzOCwgMTE1LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDEwNCwgNDAsIDE1MiwgNiwgMSwgCisgICAgMjM4LCA4MywgNDAsIDE1MiwgNiwgMSwgMjM4LCA4MSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNTcsIDQwLCAxNTIsIDYsIDEsIAorICAgIDIzOCwgNzAsIDQwLCAxNTIsIDYsIDEsIDIzOSwgNSwgNDAsIDE1MiwgNiwgMSwgNjYsIDQwLCAxNTIsIDYsIDEsIDIwMywgCisgICAgMTgyLCA0MCwgMTUyLCA2LCAxLCAyMTksIDEyMSwgMjA0LCAzMSwgNDAsIDE1MiwgNiwgMSwgMjEyLCAxNzEsIDIwNCwgMzEsIAorICAgIDQwLCAxNTIsIDYsIDEsIDIzOCwgNTcsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTIsIDQwLCAxNTIsIDYsIDEsIDIzOCwgNywgCisgICAgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNTYsIDU0LCA0MCwgMTUyLCA2LCAxLCAyMDMsIDE5NywgNDAsIDE1MiwgNCwgMSwgNjIsIAorICAgIDQwLCAxNTIsIDQsIDEsIDI1MiwgMTM4LCA0MCwgMTUyLCA0LCAxLCAyMzksIDksIDQwLCAxNTIsIDQsIDEsIDI1MSwgOTYsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOSwgNywgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNzYsIDQwLCAxNTIsIDQsIDEsIDIzOSwgNCwgCisgICAgNDAsIDE1MiwgNCwgMSwgMjM5LCAzLCA0MCwgMTUyLCA0LCAxLCAyNTEsIDc5LCA0MCwgMTUyLCA0LCAxLCA3MiwgNDAsIAorICAgIDE1MiwgNCwgMSwgMjQ2LCAxMTEsIDcyLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDI1NSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAKKyAgICAyNDgsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjQ3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDI0NCwgNDAsIDE1MiwgNCwgMSwgCisgICAgMjM4LCAyNDEsIDQwLCAxNTIsIDQsIDEsIDcwLCA0MCwgMTUyLCA0LCAxLCAyMjgsIDE1MSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAKKyAgICAyMTksIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjE2LCA0MCwgMTUyLCA0LCAxLCAyNTEsIDE1OSwgNDAsIDE1MiwgNCwgMSwgCisgICAgMjAzLCAyMzYsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjA5LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE5MiwgNDAsIDE1MiwgNCwgCisgICAgMSwgMjM4LCAxOTAsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTc5LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE0MywgNDAsIDE1MiwgCisgICAgNCwgMSwgNzQsIDQwLCAxNTIsIDQsIDEsIDIxNywgNjMsIDQwLCAxNTIsIDQsIDEsIDIxOSwgMTIxLCAyMTcsIDEyMSwgNDAsIAorICAgIDE1MiwgNCwgMSwgMjEyLCAxNzEsIDIxNywgMTIxLCA0MCwgMTUyLCA0LCAxLCAyMTcsIDEyMCwgNDAsIDE1MiwgNCwgMSwgCisgICAgMjM4LCAxMzMsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTg0LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDExNSwgNDAsIDE1MiwgNCwgCisgICAgMSwgMjA5LCAyNTAsIDIzOCwgMTE1LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDEwNCwgNDAsIDE1MiwgNCwgMSwgMjM4LCA4MywgCisgICAgNDAsIDE1MiwgNCwgMSwgMjM4LCA4MSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNTcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgNzAsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOSwgNSwgNDAsIDE1MiwgNCwgMSwgNjYsIDQwLCAxNTIsIDQsIDEsIDIwMywgMTgyLCA0MCwgCisgICAgMTUyLCA0LCAxLCAyMTksIDEyMSwgMjA0LCAzMSwgNDAsIDE1MiwgNCwgMSwgMjEyLCAxNzEsIDIwNCwgMzEsIDQwLCAxNTIsIAorICAgIDQsIDEsIDIzOCwgNTcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTIsIDQwLCAxNTIsIDQsIDEsIDIzOCwgNywgNDAsIDE1MiwgNCwgCisgICAgMSwgMjM4LCAxNTYsIDU0LCA0MCwgMTUyLCA0LCAxLCAyMDMsIDE5NywgNDAsIDE1MiwgNDEsIDEwMiwgNDAsIDE1MiwgNDEsIAorICAgIDE2NCwgNDAsIDE1MiwgNDEsIDIwNiwgMTY2LCA0MCwgMTUyLCA0MSwgMjM3LCAxMDQsIDQwLCAxNTIsIDQxLCAxMTIsIDIzMywgCisgICAgODIsIDQwLCAxNTIsIDQxLCAxMTIsIDIwNiwgNTAsIDIxMiwgMTU5LCAxNywgMTAyLCAyMTIsIDE1OSwgMTcsIDEwNSwgMjEyLCAKKyAgICAxNTksIDE3LCAxNDcsIDIxMiwgMTU5LCAxNywgMTQ5LCAyMTIsIDE1OSwgMTcsIDE2NCwgMjEyLCAxNTksIDE3LCAxODcsIAorICAgIDIxMiwgMTU5LCAxNywgMjEwLCAxMzUsIDIxMiwgMTU5LCAxNywgMTkyLCAyMTIsIDE1OSwgMTcsIDIxOSwgMTEzLCAyMTIsIAorICAgIDE1OSwgNDEsIDIwNiwgMTY2LCAyMTIsIDE1OSwgNDEsIDIwNCwgMTU5LCAyMTIsIDE1OSwgNDEsIDIwNiwgNjcsIDIxMiwgCisgICAgMTU5LCA0MSwgMjM2LCAyMzUsIDIxMiwgMTU5LCA0MSwgMjM3LCAxMDQsIDIxMiwgMTU5LCA0MSwgMjA5LCA5MiwgMjEyLCAKKyAgICAxNTksIDQxLCAyMTAsIDEyOSwgMjEyLCAxNTksIDQxLCAyMzgsIDIyMiwgMjEyLCAxNTksIDQxLCAyMTksIDEwOCwgMjEyLCAKKyAgICAxNTksIDQxLCAxMTIsIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMTIwLCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDEyNiwgCisgICAgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMzYsIDIyOSwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCAKKyAgICAyMTIsIDE1OSwgNDEsIDIwOSwgMTA2LCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCAyMTIsIAorICAgIDE1OSwgNDEsIDIzOCwgMjMyLCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCAyMTIsIDE1OSwgCisgICAgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDIxMiwgMTU5LCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAyMTIsIDE1OSwgMjM2LCAKKyAgICAyMTksIDExMiwgMjA2LCA3NCwgMjEyLCAxNTksIDIzNiwgMjE5LCAxMjAsIDIwNiwgNzEsIDE1MSwgMiwgMjQ3LCAxNDksIAorICAgIDE1MSwgMiwgMjUxLCAzMywgMTUxLCAyLCAyMDIsIDIwMywgMTUxLCAyLCAyMjcsIDIwMSwgMTUxLCAyLCAyMDMsIDIyNiwgCisgICAgMTUxLCAxLCA2MiwgMTUxLCAxLCAyNTIsIDEzOCwgMTUxLCAxLCA3MCwgMTUxLCAxLCAyMjgsIDE1MSwgMTUxLCAxLCA2NiwgCisgICAgMTUxLCAxLCAyMDMsIDE4MiwgMTUxLCAxLCAxMDksIDE0NiwgMTUxLCAxLCAxMDksIDIxMiwgMjE2LCAxNTEsIDEsIDEwOSwgCisgICAgMTU2LCAxNTEsIDEsIDEwOSwgMjI0LCAxMzksIDE1MSwgMSwgNzIsIDE1MSwgMSwgMjUxLCAxNzYsIDE1MSwgMSwgNzQsIAorICAgIDE1MSwgMSwgMjUwLCAxMzksIDE1MSwgMSwgMTYxLCAxNTEsIDEsIDIyNiwgMjA3LCAxNTEsIDEsIDIzNiwgODksIDE1MSwgMSwgCisgICAgMjM1LCAxOTksIDE1MSwgMSwgMjE5LCAyNTMsIDE1MSwgMSwgMjQ3LCAxOTAsIDE1MSwgMSwgMjQ3LCAzNywgMTUxLCAxLCAKKyAgICAyMjcsIDI0OCwgMTUxLCAxLCAyMjcsIDIxNSwgMTUxLCAxLCAyMTgsIDYwLCAxNTEsIDEsIDIwNCwgMjUzLCAxNTEsIDEsIAorICAgIDIwNCwgMjQxLCAxNTEsIDEsIDI0MSwgMjIwLCAxNTEsIDEsIDI0MSwgMjA0LCAxNTEsIDEsIDIxOSwgMjEsIDE1MSwgMSwgCisgICAgMjA3LCAzNiwgMTUxLCAxLCAyMDYsIDEyMiwgMTUxLCAxLCAyNDIsIDU4LCAxNTEsIDEsIDI0MSwgMTAwLCAxNTEsIDEsIAorICAgIDE4OCwgMTUxLCAxLCAxNzIsIDE1MSwgMSwgMjE1LCAyNDUsIDE1MSwgMSwgMjQ5LCAxMzYsIDE1MSwgMSwgMjQ4LCAyMDAsIAorICAgIDE1MSwgMSwgMTc4LCAxNTEsIDEsIDE4MywgMTUxLCAxLCAyMTMsIDI1MiwgMTUxLCAxLCAxOTQsIDE1MSwgMSwgMjAzLCA5MCwgCisgICAgMTUxLCAxLCAyMTAsIDExNCwgMTUxLCAxLCAyMDgsIDE3OSwgMTUxLCAxLCAyMTIsIDY0LCAxNTEsIDEsIDE0NCwgMTUxLCAxLCAKKyAgICAyMjQsIDEzOCwgMTUxLCAxLCA0MCwgNDUsIDIyNCwgMTI5LCAxNTEsIDEsIDQwLCA0NSwgMjEyLCAyMTUsIDE1MSwgMSwgNDAsIAorICAgIDQ1LCAyMTksIDMsIDE1MSwgMjIsIDIsIDI1MiwgMTM4LCAxNTEsIDIyLCAyLCAyNDgsIDE5NywgMjUyLCAxMzgsIDE1MSwgCisgICAgMjIsIDIsIDcwLCAxNTEsIDIyLCAyLCAyMjgsIDE1MSwgMTUxLCAyMiwgMiwgNjYsIDE1MSwgMjIsIDIsIDIwMywgMTgyLCAKKyAgICAxNTEsIDIyLCAyLCAxMDksIDE0NiwgMTUxLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTUxLCAyMiwgMiwgMTA5LCAxNTYsIAorICAgIDE1MSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE1MSwgMjIsIDIsIDcyLCAxNTEsIDIyLCAyLCAyNTEsIDE3NiwgMTUxLCAyMiwgCisgICAgMiwgNzQsIDE1MSwgMjIsIDIsIDI1MCwgMTM5LCAxNTEsIDIwMiwgMjA4LCAxNTEsIDI0MiwgMTAsIDE1MSwgNTMsIDI0MiwgCisgICAgMTAsIDE1MSwgMjE0LCAyMTIsIDI0MCwgMTgyLCAxNTEsIDIxNCwgMjEyLCA1MywgMjQwLCAxODIsIDE1MSwgMjE0LCAyMTIsIAorICAgIDIyNCwgMTc2LCAxNTEsIDIxNCwgMjEyLCAyNDIsIDI0NCwgMTQ4LCAxNTEsIDIxNCwgMjEyLCAyMjQsIDY0LCAxNTEsIDQxLCAKKyAgICAxMDIsIDE1MSwgNDEsIDEwNSwgMTUxLCA0MSwgMTQ3LCAxNTEsIDQxLCAxNDksIDE1MSwgNDEsIDE2NCwgMTUxLCA0MSwgCisgICAgMTg3LCAxNTEsIDQxLCAyMTAsIDEzNSwgMTUxLCA0MSwgMTkyLCAxNTEsIDQxLCAyMTksIDExMywgMTUxLCA0MSwgMjA2LCAKKyAgICAxNjYsIDE1MSwgNDEsIDIwNCwgMTU5LCAxNTEsIDQxLCAyMDYsIDY3LCAxNTEsIDQxLCAyMzYsIDIzNSwgMTUxLCA0MSwgCisgICAgMjM3LCAxMDQsIDE1MSwgNDEsIDIwOSwgOTIsIDE1MSwgNDEsIDIxMCwgMTI5LCAxNTEsIDQxLCAyMzgsIDIyMiwgMTUxLCAKKyAgICA0MSwgMjE5LCAxMDgsIDE1MSwgNDEsIDExMiwgMjMzLCA4MiwgMTUxLCA0MSwgMTEyLCAyMDYsIDUwLCAxNTEsIDE3LCAxOTksIAorICAgIDgxLCAxNTEsIDE3LCAxMDIsIDE1MSwgMTcsIDEwNSwgMTUxLCAxNywgMTQ3LCAxNTEsIDE3LCAxNDksIDE1MSwgMTcsIDE2NCwgCisgICAgMTUxLCAxNywgMTg3LCAxNTEsIDE3LCAyMTAsIDEzNSwgMTUxLCAxNywgMTkyLCAxNTEsIDE3LCAyMTksIDExMywgMTUxLCAKKyAgICA0MSwgMjI3LCAxNjEsIDIyNywgNzksIDIsIDI0NywgMTQ5LCAyMjcsIDc5LCAyLCAyNTEsIDMzLCAyMjcsIDc5LCAyLCAyMDIsIAorICAgIDIwMywgMjI3LCA3OSwgMSwgNjIsIDIyNywgNzksIDEsIDI1MiwgMTM4LCAyMjcsIDc5LCAxLCA3MCwgMjI3LCA3OSwgMSwgCisgICAgMjI4LCAxNTEsIDIyNywgNzksIDEsIDY2LCAyMjcsIDc5LCAxLCAyMDMsIDE4MiwgMjI3LCA3OSwgMSwgNzIsIDIyNywgNzksIAorICAgIDEsIDI1MSwgMTc2LCAyMjcsIDc5LCAxLCA3NCwgMjI3LCA3OSwgMSwgMjUwLCAxMzksIDIyNywgNzksIDEsIDE2MSwgMjI3LCAKKyAgICA3OSwgMSwgMjI2LCAyMDcsIDIyNywgNzksIDEsIDIzNiwgODksIDIyNywgNzksIDEsIDIzNSwgMTk5LCAyMjcsIDc5LCAxLCAKKyAgICAyMTksIDI1MywgMjI3LCA3OSwgMSwgMjQ3LCAxOTAsIDIyNywgNzksIDEsIDI0NywgMzcsIDIyNywgNzksIDEsIDIyNywgCisgICAgMjQ4LCAyMjcsIDc5LCAxLCAyMjcsIDIxNSwgMjI3LCA3OSwgMSwgMjE4LCA2MCwgMjI3LCA3OSwgMSwgMjA0LCAyNTMsIAorICAgIDIyNywgNzksIDEsIDIwNCwgMjQxLCAyMjcsIDc5LCAxLCAyNDEsIDIyMCwgMjI3LCA3OSwgMSwgMjQxLCAyMDksIDIyNywgCisgICAgNzksIDEsIDI0MSwgMjA0LCAyMjcsIDc5LCAxLCAyMTMsIDkzLCAyMjcsIDc5LCAxLCAyMTksIDIxLCAyMjcsIDc5LCAxLCAKKyAgICAyMDcsIDM2LCAyMjcsIDc5LCAxLCAyMDYsIDEyMiwgMjI3LCA3OSwgMSwgMjQyLCA1OCwgMjI3LCA3OSwgMSwgMjQxLCAxMDAsIAorICAgIDIyNywgNzksIDEsIDE4OCwgMjI3LCA3OSwgMSwgMTcyLCAyMjcsIDc5LCAxLCAyMTUsIDI0NSwgMjI3LCA3OSwgMSwgMjQ5LCAKKyAgICAxMzYsIDIyNywgNzksIDEsIDI0OCwgMjAwLCAyMjcsIDc5LCAxLCAxNzgsIDIyNywgNzksIDEsIDE4MywgMjI3LCA3OSwgMSwgCisgICAgMjEzLCAyNTIsIDIyNywgNzksIDEsIDE5NCwgMjI3LCA3OSwgMSwgMjAzLCA5MCwgMjI3LCA3OSwgMSwgMjEwLCAxMTQsIAorICAgIDIyNywgNzksIDEsIDIwOCwgMTc5LCAyMjcsIDc5LCAxLCAyMTIsIDY0LCAyMjcsIDc5LCAxLCAxNDQsIDIyNywgNzksIDIyLCAKKyAgICAyLCAyNTIsIDEzOCwgMjI3LCA3OSwgMjIsIDIsIDcwLCAyMjcsIDc5LCAyMiwgMiwgMjI4LCAxNTEsIDIyNywgNzksIDIyLCAKKyAgICAyLCA2NiwgMjI3LCA3OSwgMjIsIDIsIDIwMywgMTgyLCAyMjcsIDc5LCAyMiwgMiwgNzIsIDIyNywgNzksIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjI3LCA3OSwgMjIsIDIsIDc0LCAyMjcsIDc5LCAyMiwgMiwgMjUwLCAxMzksIDIyNywgNzksIDIsIDIwMiwgMjA4LCAKKyAgICAyMjcsIDc5LCAyLCAyMTgsIDEwMCwgMjI3LCA3OSwgMjUyLCAzLCA1NCwgMjI3LCA3OSwgMjM4LCAxNDYsIDU0LCAyMjcsIAorICAgIDc5LCA0MSwgNTQsIDIyNywgNzksIDIxMSwgMTkzLCA4MSwgMjI3LCA3OSwgNTMsIDIxMSwgMTkzLCA4MSwgMjI3LCA3OSwgCisgICAgMjQyLCAxMCwgMjI3LCA3OSwgNTMsIDI0MiwgMTAsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjEyLCA0NywgMjA5LCA2LCAyMDksIAorICAgIDE0LCAxLCAyMDcsIDksIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjQ5LCAxMDcsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjQ3LCAKKyAgICAxNzksIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjQyLCAzOCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMzYsIDc0LCAyMDksIDYsIAorICAgIDIwOSwgMTQsIDEsIDIyMiwgMjA2LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxOSwgMjUwLCAyMDksIDYsIDIwOSwgMTQsIDEsIAorICAgIDIyNSwgMTUyLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIyMCwgMTQ0LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIwMywgODYsIDIwOSwgCisgICAgNiwgMjA5LCAxNCwgMSwgMjE2LCAxOTIsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjAwLCA5MCwgMjA5LCA2LCAyMDksIDE0LCAxLCAKKyAgICAyMTMsIDIzMSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMzQsIDIyNCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjcsIDg0LCAyMDksIAorICAgIDYsIDIwOSwgMTQsIDEsIDIyNywgMjQyLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxOCwgNTcsIDIwOSwgNiwgMjA5LCAxNCwgMSwgCisgICAgMjUxLCAxODUsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjM4LCAyNTMsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjI4LCAxNTIsIAorICAgIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjA0LCAyNSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTcsIDEwOCwgMjA5LCA2LCAyMDksIAorICAgIDE0LCAxLCAyMzgsIDI0MSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjIsIDIxOSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTk5LCAKKyAgICA4MSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTAyLCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxMDUsIDIwOSwgNiwgMjA5LCAxNCwgCisgICAgMTcsIDE0NywgMjA5LCA2LCAyMDksIDE0LCAxNywgMTQ5LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxNjQsIDIwOSwgNiwgMjA5LCAKKyAgICAxNCwgMTcsIDE4NywgMjA5LCA2LCAyMDksIDE0LCAxNywgMjEwLCAxMzUsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE5MiwgCisgICAgMjA5LCA2LCAyMDksIDE0LCAxNywgMjE5LCAxMTMsIDI0NywgMzEsIDIsIDI0NywgMTQ5LCAyNDcsIDMxLCAyLCAyNTEsIDMzLCAKKyAgICAyNDcsIDMxLCAyLCAyMDIsIDIwMywgMjQ3LCAzMSwgMSwgMjUyLCAxMzgsIDI0NywgMzEsIDEsIDcwLCAyNDcsIDMxLCAxLCAKKyAgICA2NiwgMjQ3LCAzMSwgMSwgNzIsIDI0NywgMzEsIDEsIDIyNywgMTA1LCAyNDcsIDMxLCAxLCAyMjYsIDIwNiwgMjQ3LCAzMSwgCisgICAgMSwgMjM2LCA4NiwgMjQ3LCAzMSwgMSwgMjM1LCAxOTgsIDI0NywgMzEsIDEsIDIxOSwgMjUyLCAyNDcsIDMxLCAxLCAyNDcsIAorICAgIDE4OSwgMjQ3LCAzMSwgMSwgMjQ3LCAzNiwgMjQ3LCAzMSwgMSwgMjI3LCAyNDcsIDI0NywgMzEsIDEsIDIyNywgMjE0LCAKKyAgICAyNDcsIDMxLCAxLCAyMTgsIDU5LCAyNDcsIDMxLCAxLCAyMDQsIDI1MiwgMjQ3LCAzMSwgMSwgMjA0LCAyNDAsIDI0NywgMzEsIAorICAgIDEsIDI0MSwgMjE5LCAyNDcsIDMxLCAxLCAyNDEsIDIwMywgMjQ3LCAzMSwgMSwgMjE5LCAyMCwgMjQ3LCAzMSwgMSwgMjA3LCAKKyAgICAzMiwgMjQ3LCAzMSwgMSwgMjA2LCAxMjEsIDI0NywgMzEsIDEsIDI0MiwgNTcsIDI0NywgMzEsIDEsIDI0MSwgOTksIDI0NywgCisgICAgMzEsIDEsIDIyMCwgMTU3LCAyNDcsIDMxLCAxLCAyMTYsIDIxMCwgMjQ3LCAzMSwgMSwgMjE1LCAyNDQsIDI0NywgMzEsIDEsIAorICAgIDI0OSwgMTM0LCAyNDcsIDMxLCAxLCAyNDgsIDE5OSwgMjQ3LCAzMSwgMSwgMjIyLCAyMzMsIDI0NywgMzEsIDEsIDE5OSwgCisgICAgMTY1LCAyNDcsIDMxLCAxLCAyMDAsIDEwOSwgMjQ3LCAzMSwgMSwgMjEzLCAyNDgsIDI0NywgMzEsIDEsIDIyNSwgMTc1LCAKKyAgICAyNDcsIDMxLCAxLCAyMDEsIDExMywgMjQ3LCAzMSwgMSwgMjEyLCA2MSwgMjQ3LCAzMSwgMSwgMjM0LCAyMzMsIDI0NywgMzEsIAorICAgIDIyLCAyLCA2MiwgMjQ3LCAzMSwgMjIsIDIsIDcwLCAyNDcsIDMxLCAyMiwgMiwgMjI4LCAxNTEsIDI0NywgMzEsIDIyLCAyLCAKKyAgICA2NiwgMjQ3LCAzMSwgMjIsIDIsIDIwMywgMTgyLCAyNDcsIDMxLCAyMiwgMiwgNzIsIDI0NywgMzEsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjQ3LCAzMSwgMjIsIDIsIDc0LCAyNDcsIDMxLCAyMiwgMiwgMjUwLCAxMzksIDI0NywgMzEsIDIyLCAyLCAyMTcsIAorICAgIDEwNSwgMjQ3LCAzMSwgMTYzLCA4MSwgMjQ3LCAzMSwgMjUwLCAxNDAsIDgxLCAyNDcsIDMxLCAyMDIsIDIwOCwgMjQ3LCAzMSwgCisgICAgMjIyLCAyMzEsIDI0NywgMzEsIDE3LCAxOTksIDgxLCAyNDcsIDMxLCAxNywgMTAyLCAyNDcsIDMxLCAxNywgMTA1LCAyNDcsIAorICAgIDMxLCAxNywgMTQ3LCAyNDcsIDMxLCAxNywgMTQ5LCAyNDcsIDMxLCAxNywgMTY0LCAyNDcsIDMxLCAxNywgMTg3LCAyNDcsIAorICAgIDMxLCAxNywgMjEwLCAxMzUsIDI0NywgMzEsIDE3LCAxOTIsIDI0NywgMzEsIDE3LCAyMTksIDExMywgMjQ3LCAzMSwgMjExLCAKKyAgICAxOTMsIDgxLCAyNDcsIDMxLCAyNDIsIDEwLCAyNDcsIDMxLCA1MywgMjQyLCAxMCwgMjQ3LCAzMSwgMjE0LCA3OSwgODEsIAorICAgIDIyMiwgMjA0LCAxLCA2MiwgMjIyLCAyMDQsIDEsIDcwLCAyMjIsIDIwNCwgMSwgNjYsIDIyMiwgMjA0LCAxLCA3MiwgMjIyLCAKKyAgICAyMDQsIDEsIDc0LCAyMjIsIDIwNCwgMSwgMTYxLCAyMjIsIDIwNCwgMSwgMjI2LCAyMDcsIDIyMiwgMjA0LCAxLCAyMzYsIAorICAgIDg5LCAyMjIsIDIwNCwgMSwgMjM1LCAxOTksIDIyMiwgMjA0LCAxLCAyNDcsIDE5MCwgMjIyLCAyMDQsIDEsIDI0NywgMzcsIAorICAgIDIyMiwgMjA0LCAxLCAyMjcsIDI0OCwgMjIyLCAyMDQsIDEsIDIyNywgMjE1LCAyMjIsIDIwNCwgMSwgMjE4LCA2MCwgMjIyLCAKKyAgICAyMDQsIDEsIDIwNCwgMjUzLCAyMjIsIDIwNCwgMSwgMjA0LCAyNDEsIDIyMiwgMjA0LCAxLCAyNDEsIDIyMCwgMjIyLCAyMDQsIAorICAgIDEsIDI0MSwgMjA0LCAyMjIsIDIwNCwgMSwgMjE5LCAyMSwgMjIyLCAyMDQsIDEsIDIwNywgMzYsIDIyMiwgMjA0LCAxLCAKKyAgICAyMDYsIDEyMiwgMjIyLCAyMDQsIDEsIDI0MiwgNTgsIDIyMiwgMjA0LCAxLCAyNDEsIDEwMCwgMjIyLCAyMDQsIDEsIDE4OCwgCisgICAgMjIyLCAyMDQsIDEsIDE3MiwgMjIyLCAyMDQsIDEsIDIxNSwgMjQ1LCAyMjIsIDIwNCwgMSwgMjQ5LCAxMzYsIDIyMiwgMjA0LCAKKyAgICAxLCAyNDgsIDIwMCwgMjIyLCAyMDQsIDEsIDE3OCwgMjIyLCAyMDQsIDEsIDIxMywgMjUyLCAyMjIsIDIwNCwgMSwgMTk0LCAKKyAgICAyMjIsIDIwNCwgMSwgMjAzLCA5MCwgMjIyLCAyMDQsIDEsIDIxMiwgNjQsIDIyMiwgMjA0LCAxLCAxNDQsIDIyMiwgMjA0LCAKKyAgICAxLCAyMTIsIDIxNSwgMjIyLCAyMDQsIDIsIDIxOCwgMTAwLCAyMjIsIDIwNCwgMjUyLCAzLCA1NCwgMjIyLCAyMDQsIDIxMSwgCisgICAgMTkzLCA4MSwgMjIyLCAyMDQsIDMzLCAyMDksIDIyOCwgMTg2LCAyLCAyNDcsIDE0OSwgMTg2LCAyLCAyNTEsIDMzLCAxODYsIAorICAgIDIsIDIwMiwgMjAzLCAxODYsIDEsIDYyLCAxODYsIDEsIDI1MiwgMTM4LCAxODYsIDEsIDcwLCAxODYsIDEsIDIyOCwgMTUxLCAKKyAgICAxODYsIDEsIDY2LCAxODYsIDEsIDIwMywgMTgyLCAxODYsIDEsIDEwOSwgMTQ2LCAxODYsIDEsIDEwOSwgMjEyLCAyMTYsIAorICAgIDE4NiwgMSwgMTA5LCAxNTYsIDE4NiwgMSwgMTA5LCAyMjQsIDEzOSwgMTg2LCAxLCA3MiwgMTg2LCAxLCAyNTEsIDE3NiwgCisgICAgMTg2LCAxLCA3NCwgMTg2LCAxLCAyNTAsIDEzOSwgMTg2LCAxLCAxNjEsIDE4NiwgMSwgMjI2LCAyMDcsIDE4NiwgMSwgMjM2LCAKKyAgICA4OSwgMTg2LCAxLCAyMzUsIDE5OSwgMTg2LCAxLCAyMTksIDI1MywgMTg2LCAxLCAyNDcsIDE5MCwgMTg2LCAxLCAyNDcsIAorICAgIDM3LCAxODYsIDEsIDIyNywgMjQ4LCAxODYsIDEsIDIyNywgMjE1LCAxODYsIDEsIDIxOCwgNjAsIDE4NiwgMSwgMjA0LCAKKyAgICAyNTMsIDE4NiwgMSwgMjA0LCAyNDEsIDE4NiwgMSwgMjQxLCAyMjAsIDE4NiwgMSwgMjQxLCAyMDQsIDE4NiwgMSwgMjE5LCAKKyAgICAyMSwgMTg2LCAxLCAyMDcsIDM2LCAxODYsIDEsIDIwNiwgMTIyLCAxODYsIDEsIDI0MiwgNTgsIDE4NiwgMSwgMjQxLCAxMDAsIAorICAgIDE4NiwgMSwgMTg4LCAxODYsIDEsIDE3MiwgMTg2LCAxLCAyMTUsIDI0NSwgMTg2LCAxLCAyNDksIDEzNiwgMTg2LCAxLCAKKyAgICAyNDgsIDIwMCwgMTg2LCAxLCAxNzgsIDE4NiwgMSwgMTgzLCAxODYsIDEsIDIxMywgMjUyLCAxODYsIDEsIDE5NCwgMTg2LCAKKyAgICAxLCAyMjQsIDEzOCwgMTg2LCAxLCAyMDMsIDkwLCAxODYsIDEsIDIxMCwgMTE0LCAxODYsIDEsIDIwOCwgMTc5LCAxODYsIDEsIAorICAgIDIxMiwgNjQsIDE4NiwgMSwgMTQ0LCAxODYsIDIyLCAyLCAyNTIsIDEzOCwgMTg2LCAyMiwgMiwgNzAsIDE4NiwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxODYsIDIyLCAyLCA2NiwgMTg2LCAyMiwgMiwgMjAzLCAxODIsIDE4NiwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxODYsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxODYsIDIyLCAyLCAxMDksIDE1NiwgMTg2LCAyMiwgMiwgMTA5LCAyMjQsIAorICAgIDEzOSwgMTg2LCAyMiwgMiwgNzIsIDE4NiwgMjIsIDIsIDI1MSwgMTc2LCAxODYsIDIyLCAyLCA3NCwgMTg2LCAyMiwgMiwgCisgICAgMjUwLCAxMzksIDE4NiwgMiwgMjAyLCAyMDgsIDE4NiwgMiwgMjUwLCAxMjIsIDE4NiwgMiwgMjI3LCAyMDEsIDE4NiwgMiwgCisgICAgMjAzLCAyMjYsIDE4NiwgMjE3LCA4NiwgMTg2LCAyNDIsIDEwLCAxODYsIDUzLCAyNDIsIDEwLCAxODYsIDI1MiwgMywgNTQsIAorICAgIDE4NiwgMjEwLCAxNTQsIDE4NiwgMjEyLCA5LCA4MSwgMTg2LCAyLCAyMTgsIDEwMCwgMTg2LCAyMiwgNjcsIDgxLCAxODYsIAorICAgIDIzOCwgMzAsIDIwOSwgMjUwLCAyMiwgODEsIDE4NiwgMjA3LCAxOTQsIDgxLCAxODYsIDE3LCAxOTksIDgxLCAxODYsIDE3LCAKKyAgICAxMDIsIDE4NiwgMTcsIDEwNSwgMTg2LCAxNywgMTQ3LCAxODYsIDE3LCAxNDksIDE4NiwgMTcsIDE2NCwgMTg2LCAxNywgCisgICAgMTg3LCAxODYsIDE3LCAyMTAsIDEzNSwgMTg2LCAxNywgMTkyLCAxODYsIDE3LCAyMTksIDExMywgMTg2LCAyMzgsIDIxNSwgCisgICAgMTg2LCAyLCAyMDksIDE3NywgMTg2LCAyMzQsIDEzMCwgMTg2LCAyNDMsIDQxLCA1NCwgMTg2LCAyMTEsIDE5MywgMjIyLCAKKyAgICAxNDksIDE4NiwgMjExLCAxOTMsIDIyMiwgMTQ4LCAxNDMsIDI1MCwgMjM0LCAxNywgMTAyLCAxNDMsIDI1MCwgMjM0LCAxNywgCisgICAgMTA1LCAxNDMsIDI1MCwgMjM0LCAxNywgMTQ3LCAxNDMsIDI1MCwgMjM0LCAxNywgMTQ5LCAxNDMsIDI1MCwgMjM0LCAxNywgCisgICAgMTY0LCAxNDMsIDI1MCwgMjM0LCAxNywgMTg3LCAxNDMsIDI1MCwgMjM0LCAxNywgMjEwLCAxMzUsIDE0MywgMjUwLCAyMzQsIAorICAgIDE3LCAxOTIsIDE0MywgMjUwLCAyMzQsIDE3LCAyMTksIDExMywgMTQzLCAyNTAsIDIzNCwgNDEsIDIwNiwgMTY2LCAxNDMsIAorICAgIDI1MCwgMjM0LCA0MSwgMjA0LCAxNTksIDE0MywgMjUwLCAyMzQsIDQxLCAyMDYsIDY3LCAxNDMsIDI1MCwgMjM0LCA0MSwgCisgICAgMjM2LCAyMzUsIDE0MywgMjUwLCAyMzQsIDQxLCAyMzcsIDEwNCwgMTQzLCAyNTAsIDIzNCwgNDEsIDIwOSwgOTIsIDE0MywgCisgICAgMjUwLCAyMzQsIDQxLCAyMTAsIDEyOSwgMTQzLCAyNTAsIDIzNCwgNDEsIDIzOCwgMjIyLCAxNDMsIDI1MCwgMjM0LCA0MSwgCisgICAgMjE5LCAxMDgsIDE0MywgMjUwLCAyMzQsIDQxLCAxMTIsIDIzMywgODIsIDE0MywgMjUwLCAyMzQsIDQxLCAxMTIsIDIwNiwgCisgICAgNTAsIDIyNiwgMTc3LCAxLCA2MiwgMjI2LCAxNzcsIDEsIDI1MiwgMTM4LCAyMjYsIDE3NywgMSwgNzAsIDIyNiwgMTc3LCAxLCAKKyAgICA2NiwgMjI2LCAxNzcsIDEsIDcyLCAyMjYsIDE3NywgMSwgMjUxLCAxNzYsIDIyNiwgMTc3LCAxLCA3NCwgMjI2LCAxNzcsIDEsIAorICAgIDI1MCwgMTM5LCAyMjYsIDE3NywgMSwgMTYxLCAyMjYsIDE3NywgMSwgMjI2LCAyMDcsIDIyNiwgMTc3LCAxLCAyMzYsIDg5LCAKKyAgICAyMjYsIDE3NywgMSwgMjM1LCAyMzUsIDIyNiwgMTc3LCAxLCAyMzUsIDE5OSwgMjI2LCAxNzcsIDEsIDIxOSwgMjUzLCAyMjYsIAorICAgIDE3NywgMSwgMjQ3LCAxOTAsIDIyNiwgMTc3LCAxLCAyNDcsIDM3LCAyMjYsIDE3NywgMSwgMjI3LCAyNDgsIDIyNiwgMTc3LCAKKyAgICAxLCAyMjcsIDE5NCwgMjI2LCAxNzcsIDEsIDIxOCwgNjAsIDIyNiwgMTc3LCAxLCAyMDQsIDI1MywgMjI2LCAxNzcsIDEsIAorICAgIDIwNCwgMjQxLCAyMjYsIDE3NywgMSwgMjQxLCAyMjAsIDIyNiwgMTc3LCAxLCAyNDEsIDIwNCwgMjI2LCAxNzcsIDEsIDIxOSwgCisgICAgMjEsIDIyNiwgMTc3LCAxLCAyMDcsIDM2LCAyMjYsIDE3NywgMSwgMjA2LCAxMjIsIDIyNiwgMTc3LCAxLCAyNDIsIDU4LCAKKyAgICAyMjYsIDE3NywgMSwgMjQxLCAyMTAsIDIyNiwgMTc3LCAxLCAyNDEsIDEwMCwgMjI2LCAxNzcsIDEsIDE4OCwgMjI2LCAxNzcsIAorICAgIDEsIDE3MiwgMjI2LCAxNzcsIDEsIDIxNSwgMjQ1LCAyMjYsIDE3NywgMSwgMjQ5LCAxMzYsIDIyNiwgMTc3LCAxLCAyNDksIAorICAgIDQ0LCAyMjYsIDE3NywgMSwgMjQ4LCAyMDAsIDIyNiwgMTc3LCAxLCAxNzgsIDIyNiwgMTc3LCAxLCAxODMsIDIyNiwgMTc3LCAKKyAgICAxLCAyMTMsIDI1MiwgMjI2LCAxNzcsIDEsIDE5NCwgMjI2LCAxNzcsIDEsIDIwMywgOTAsIDIyNiwgMTc3LCAxLCAyMTIsIAorICAgIDY0LCAyMjYsIDE3NywgMSwgMTQ0LCAyMjYsIDE3NywgMSwgMjI0LCAxMzgsIDIyNiwgMTc3LCAyMiwgMiwgMjUyLCAxMzgsIAorICAgIDIyNiwgMTc3LCAyMiwgMiwgNzAsIDIyNiwgMTc3LCAyMiwgMiwgMjI4LCAxNTEsIDIyNiwgMTc3LCAyMiwgMiwgNjYsIDIyNiwgCisgICAgMTc3LCAyMiwgMiwgNzIsIDIyNiwgMTc3LCAyMiwgMiwgMjUxLCAxNzYsIDIyNiwgMTc3LCAyMiwgMiwgNzQsIDIyNiwgMTc3LCAKKyAgICAyMiwgMiwgMjUwLCAxMzksIDIyNiwgMTc3LCAyLCAyNTEsIDMzLCAyMjYsIDE3NywgMiwgMjAyLCAyMDgsIDIyNiwgMTc3LCAKKyAgICAyLCAyMTgsIDEwMCwgMjI2LCAxNzcsIDIsIDIxMCwgMTA0LCAyMjYsIDE3NywgMjQyLCAxMCwgMjI2LCAxNzcsIDUzLCAyNDIsIAorICAgIDEwLCAyMjYsIDE3NywgMjAwLCAyMzgsIDIxMCwgMTU0LCAyMjYsIDE3NywgMjExLCAxOTMsIDgxLCAyMjYsIDE3NywgNTMsIAorICAgIDIxMSwgMTkzLCA4MSwgMjI2LCAxNzcsIDI1MiwgMywgNTQsIDIyNiwgMTc3LCAyLCAyMDcsIDIzNiwgMjIxLCAyNSwgMSwgCisgICAgNjIsIDIyMSwgMjUsIDEsIDcwLCAyMjEsIDI1LCAxLCA2NiwgMjIxLCAyNSwgMSwgNzIsIDIyMSwgMjUsIDEsIDE2MSwgMjIxLCAKKyAgICAyNSwgMSwgMjI2LCAyMDcsIDIyMSwgMjUsIDEsIDIzNiwgODksIDIyMSwgMjUsIDEsIDIzNSwgMTk5LCAyMjEsIDI1LCAxLCAKKyAgICAyNDcsIDE5MCwgMjIxLCAyNSwgMSwgMjQ3LCAzNywgMjIxLCAyNSwgMSwgMjI3LCAyNDgsIDIyMSwgMjUsIDEsIDIyNywgCisgICAgMTk0LCAyMjEsIDI1LCAxLCAyMTgsIDYwLCAyMjEsIDI1LCAxLCAyMDQsIDI1MywgMjIxLCAyNSwgMSwgMjA0LCAyNDEsIAorICAgIDIyMSwgMjUsIDEsIDI0MSwgMjIwLCAyMjEsIDI1LCAxLCAyNDEsIDIxMCwgMjIxLCAyNSwgMSwgMjQxLCAyMDQsIDIyMSwgCisgICAgMjUsIDEsIDIxOSwgMjEsIDIyMSwgMjUsIDEsIDIwNywgMzYsIDIyMSwgMjUsIDEsIDIwNiwgMTIyLCAyMjEsIDI1LCAxLCAKKyAgICAyNDIsIDU4LCAyMjEsIDI1LCAxLCAyNDEsIDEwMCwgMjIxLCAyNSwgMSwgMTg4LCAyMjEsIDI1LCAxLCAxNzIsIDIyMSwgMjUsIAorICAgIDEsIDIxNSwgMjQ1LCAyMjEsIDI1LCAxLCAyNDksIDEzNiwgMjIxLCAyNSwgMSwgMjQ4LCAyMDAsIDIyMSwgMjUsIDEsIDE3OCwgCisgICAgMjIxLCAyNSwgMSwgMTgzLCAyMjEsIDI1LCAxLCAyMTMsIDI1MiwgMjIxLCAyNSwgMSwgMTk0LCAyMjEsIDI1LCAxLCAyMDMsIAorICAgIDkwLCAyMjEsIDI1LCAxLCAyMTIsIDY0LCAyMjEsIDI1LCAxLCAxNDQsIDIyMSwgMjUsIDEsIDIxMiwgMjE1LCAyMjEsIDI1LCAKKyAgICAxLCAyMTMsIDkzLCAyMjEsIDI1LCAyMTEsIDE5MywgODEsIDIyNiwgMTY5LCAxLCA2MiwgMjI2LCAxNjksIDEsIDI1MiwgCisgICAgMTM4LCAyMjYsIDE2OSwgMSwgNzAsIDIyNiwgMTY5LCAxLCAyMjgsIDE1MSwgMjI2LCAxNjksIDEsIDY2LCAyMjYsIDE2OSwgCisgICAgMSwgMjAzLCAxODIsIDIyNiwgMTY5LCAxLCA3MiwgMjI2LCAxNjksIDEsIDI1MSwgMTc2LCAyMjYsIDE2OSwgMSwgNzQsIAorICAgIDIyNiwgMTY5LCAxLCAyNTAsIDEzOSwgMjI2LCAxNjksIDEsIDE2MSwgMjI2LCAxNjksIDEsIDIyNiwgMjA3LCAyMjYsIDE2OSwgCisgICAgMSwgMjM2LCA4OSwgMjI2LCAxNjksIDEsIDIzNSwgMjM1LCAyMjYsIDE2OSwgMSwgMjM1LCAxOTksIDIyNiwgMTY5LCAxLCAKKyAgICAyMTksIDI1MywgMjI2LCAxNjksIDEsIDI0NywgMTkwLCAyMjYsIDE2OSwgMSwgMjQ3LCAzNywgMjI2LCAxNjksIDEsIDIyNywgCisgICAgMjQ4LCAyMjYsIDE2OSwgMSwgMjI3LCAxOTQsIDIyNiwgMTY5LCAxLCAyMjcsIDIxNSwgMjI2LCAxNjksIDEsIDIxOCwgNjAsIAorICAgIDIyNiwgMTY5LCAxLCAyMDQsIDI1MywgMjI2LCAxNjksIDEsIDIwNCwgMjQxLCAyMjYsIDE2OSwgMSwgMjQxLCAyMjAsIDIyNiwgCisgICAgMTY5LCAxLCAyNDEsIDIxMCwgMjI2LCAxNjksIDEsIDIxMiwgMjE1LCAyMjYsIDE2OSwgMSwgMjQxLCAyMDQsIDIyNiwgMTY5LCAKKyAgICAxLCAyMTksIDIxLCAyMjYsIDE2OSwgMSwgMjA3LCAzNiwgMjI2LCAxNjksIDEsIDIwNiwgMTIyLCAyMjYsIDE2OSwgMSwgCisgICAgMjQyLCA1OCwgMjI2LCAxNjksIDEsIDI0MSwgMTAwLCAyMjYsIDE2OSwgMSwgMTg4LCAyMjYsIDE2OSwgMSwgMTcyLCAyMjYsIAorICAgIDE2OSwgMSwgMjE1LCAyNDUsIDIyNiwgMTY5LCAxLCAyNDksIDEzNiwgMjI2LCAxNjksIDEsIDI0OSwgNDQsIDIyNiwgMTY5LCAKKyAgICAxLCAyNDgsIDIwMCwgMjI2LCAxNjksIDEsIDE3OCwgMjI2LCAxNjksIDEsIDE4MywgMjI2LCAxNjksIDEsIDIxMywgMjUyLCAKKyAgICAyMjYsIDE2OSwgMSwgMTk0LCAyMjYsIDE2OSwgMSwgMjAzLCA5MCwgMjI2LCAxNjksIDEsIDIxMCwgMTE0LCAyMjYsIDE2OSwgCisgICAgMSwgMjEyLCA2NCwgMjI2LCAxNjksIDEsIDE0NCwgMjI2LCAxNjksIDIsIDI1MSwgMzMsIDIyNiwgMTY5LCAyMiwgMiwgMjUyLCAKKyAgICAxMzgsIDIyNiwgMTY5LCAyMiwgMiwgNzAsIDIyNiwgMTY5LCAyMiwgMiwgMjI4LCAxNTEsIDIyNiwgMTY5LCAyMiwgMiwgNjYsIAorICAgIDIyNiwgMTY5LCAyMiwgMiwgMjAzLCAxODIsIDIyNiwgMTY5LCAyMiwgMiwgNzIsIDIyNiwgMTY5LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDIyNiwgMTY5LCAyMiwgMiwgNzQsIDIyNiwgMTY5LCAyMiwgMiwgMjUwLCAxMzksIDIyNiwgMTY5LCAyLCAyMTgsIAorICAgIDEwMCwgMjI2LCAxNjksIDIsIDIwMiwgMjA4LCAyMjYsIDE2OSwgMTcsIDE5OSwgODEsIDIyNiwgMTY5LCAxNywgMTAyLCAKKyAgICAyMjYsIDE2OSwgMTcsIDEwNSwgMjI2LCAxNjksIDE3LCAxNDcsIDIyNiwgMTY5LCAxNywgMTQ5LCAyMjYsIDE2OSwgMTcsIAorICAgIDE2NCwgMjI2LCAxNjksIDE3LCAxODcsIDIyNiwgMTY5LCAxNywgMjEwLCAxMzUsIDIyNiwgMTY5LCAxNywgMTkyLCAyMjYsIAorICAgIDE2OSwgMTcsIDIxOSwgMTEzLCAyMzUsIDgyLCAyLCAzOCwgMjUxLCAzNCwgNTYsIDIzNSwgODIsIDIsIDI0NywgMTQ5LCAKKyAgICAyMzUsIDgyLCAyLCAyNTEsIDMzLCAyMzUsIDgyLCAyLCAyMDIsIDIwMywgMjM1LCA4MiwgMSwgNjIsIDIzNSwgODIsIDEsIAorICAgIDI1MiwgMTM4LCAyMzUsIDgyLCAxLCA3MCwgMjM1LCA4MiwgMSwgMjI4LCAxNTEsIDIzNSwgODIsIDEsIDY2LCAyMzUsIDgyLCAKKyAgICAxLCAyMDMsIDE4MiwgMjM1LCA4MiwgMSwgMTA5LCAxNDYsIDIzNSwgODIsIDEsIDEwOSwgMTU2LCAyMzUsIDgyLCAxLCAyMzgsIAorICAgIDI1NSwgMjM1LCA4MiwgMSwgMjUxLCAxNzYsIDIzNSwgODIsIDEsIDIxNywgNjMsIDIzNSwgODIsIDEsIDI1MCwgMTM5LCAKKyAgICAyMzUsIDgyLCAxLCAxNjEsIDIzNSwgODIsIDEsIDIyNiwgMjA3LCAyMzUsIDgyLCAxLCAyMzYsIDg5LCAyMzUsIDgyLCAxLCAKKyAgICAyMzUsIDE5OSwgMjM1LCA4MiwgMSwgMjE5LCAyNTMsIDIzNSwgODIsIDEsIDI0NywgMTkwLCAyMzUsIDgyLCAxLCAyNDcsIAorICAgIDM3LCAyMzUsIDgyLCAxLCAyMjcsIDI0OCwgMjM1LCA4MiwgMSwgMjI3LCAyMTUsIDIzNSwgODIsIDEsIDIxOCwgNjAsIDIzNSwgCisgICAgODIsIDEsIDIwNCwgMjUzLCAyMzUsIDgyLCAxLCAyMDQsIDI0MSwgMjM1LCA4MiwgMSwgMjQxLCAyMjAsIDIzNSwgODIsIDEsIAorICAgIDI0MSwgMjA0LCAyMzUsIDgyLCAxLCAyMTksIDIxLCAyMzUsIDgyLCAxLCAyMDcsIDM2LCAyMzUsIDgyLCAxLCAyMDYsIDEyMiwgCisgICAgMjM1LCA4MiwgMSwgMjQyLCA1OCwgMjM1LCA4MiwgMSwgMjQxLCAxMDAsIDIzNSwgODIsIDEsIDE4OCwgMjM1LCA4MiwgMSwgCisgICAgMTcyLCAyMzUsIDgyLCAxLCAyMTUsIDI0NSwgMjM1LCA4MiwgMSwgMjQ5LCAxMzYsIDIzNSwgODIsIDEsIDI0OCwgMjAwLCAKKyAgICAyMzUsIDgyLCAxLCAxNzgsIDIzNSwgODIsIDEsIDE4MywgMjM1LCA4MiwgMSwgMjEzLCAyNTIsIDIzNSwgODIsIDEsIDE5NCwgCisgICAgMjM1LCA4MiwgMSwgMjI0LCAxMzgsIDIzNSwgODIsIDEsIDIwMywgOTAsIDIzNSwgODIsIDEsIDIxMCwgMTE0LCAyMzUsIDgyLCAKKyAgICAxLCAyMDgsIDE3OSwgMjM1LCA4MiwgMSwgMjEyLCA2NCwgMjM1LCA4MiwgMSwgMTQ0LCAyMzUsIDgyLCAyLCAyMTgsIDEwMCwgCisgICAgMjM1LCA4MiwgMiwgMjUwLCAxMjIsIDIzNSwgODIsIDIyLCAyLCAyNTIsIDEzOCwgMjM1LCA4MiwgMjIsIDIsIDcwLCAyMzUsIAorICAgIDgyLCAyMiwgMiwgMjI4LCAxNTEsIDIzNSwgODIsIDIyLCAyLCA2NiwgMjM1LCA4MiwgMjIsIDIsIDIwMywgMTgyLCAyMzUsIAorICAgIDgyLCAyMiwgMiwgMTA5LCAxNDYsIDIzNSwgODIsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMzUsIDgyLCAyMiwgMiwgMjM4LCAKKyAgICAyNTUsIDIzNSwgODIsIDIyLCAyLCAyNTEsIDE3NiwgMjM1LCA4MiwgMjIsIDIsIDIxNywgNjMsIDIzNSwgODIsIDIyLCAyLCAKKyAgICAyNTAsIDEzOSwgMjM1LCA4MiwgMiwgMjAyLCAyMDgsIDIzNSwgODIsIDIxNywgODYsIDIzNSwgODIsIDI1MCwgMTQwLCAyMjUsIAorICAgIDIsIDgxLCAyMzUsIDgyLCAyLCAyMTUsIDExMSwgMjM1LCA4MiwgMSwgMjAzLCA1NiwgMjUxLCAzMywgMjM1LCA4MiwgMSwgCisgICAgMjAzLCA1NiwgNTMsIDI1MSwgMzMsIDIzNSwgODIsIDEsIDEwOSwgMjEyLCAyMTYsIDIzNSwgODIsIDEsIDEwOSwgMjI0LCAKKyAgICAxMzksIDIzNSwgODIsIDIyLCAyLCAxMDksIDE1NiwgMjM1LCA4MiwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDM4LCAyMzUsIAorICAgIDgyLCAxNywgMTk5LCA4MSwgMzgsIDIzNSwgODIsIDE3LCAxMDIsIDM4LCAyMzUsIDgyLCAxNywgMTA1LCAzOCwgMjM1LCA4MiwgCisgICAgMTcsIDE0NywgMzgsIDIzNSwgODIsIDE3LCAxNDksIDM4LCAyMzUsIDgyLCAxNywgMTY0LCAzOCwgMjM1LCA4MiwgMTcsIAorICAgIDE4NywgMzgsIDIzNSwgODIsIDEsIDYyLCAzOCwgMjM1LCA4MiwgMSwgMTYxLCAzOCwgMjM1LCA4MiwgMSwgMTg4LCAzOCwgCisgICAgMjM1LCA4MiwgMSwgMjAyLCAyMzQsIDM4LCAyMzUsIDgyLCAxLCAxNzIsIDE5NSwgMSwgNjIsIDE5NSwgMSwgMjUyLCAxMzgsIAorICAgIDE5NSwgMSwgNzAsIDE5NSwgMSwgMjI4LCAxNTEsIDE5NSwgMSwgNjYsIDE5NSwgMSwgMjAzLCAxODIsIDE5NSwgMSwgMTA5LCAKKyAgICAxNDYsIDE5NSwgMSwgMTA5LCAyMTIsIDIxNiwgMTk1LCAxLCAxMDksIDE1NiwgMTk1LCAxLCAxMDksIDIyNCwgMTM5LCAxOTUsIAorICAgIDEsIDcyLCAxOTUsIDEsIDI1MSwgMTc2LCAxOTUsIDEsIDc0LCAxOTUsIDEsIDI1MCwgMTM5LCAxOTUsIDEsIDE2MSwgMTk1LCAKKyAgICAxLCAyMjYsIDIwNywgMTk1LCAxLCAyMzYsIDg5LCAxOTUsIDEsIDIzNSwgMTk5LCAxOTUsIDEsIDIxOSwgMjUzLCAxOTUsIDEsIAorICAgIDIxOSwgMjAyLCAxOTUsIDEsIDI0NywgMTkwLCAxOTUsIDEsIDI0NywgMzcsIDE5NSwgMSwgMjI3LCAyNDgsIDE5NSwgMSwgCisgICAgMjI3LCAyMTUsIDE5NSwgMSwgMjE4LCA2MCwgMTk1LCAxLCAyMTgsIDQzLCAxOTUsIDEsIDIwNCwgMjUzLCAxOTUsIDEsIAorICAgIDIwNCwgMjQxLCAxOTUsIDEsIDI0MSwgMjIwLCAxOTUsIDEsIDI0MSwgMjA0LCAxOTUsIDEsIDIxOSwgMjEsIDE5NSwgMSwgCisgICAgMjA3LCAzNiwgMTk1LCAxLCAyMDYsIDEyMiwgMTk1LCAxLCAyNDIsIDU4LCAxOTUsIDEsIDI0MSwgMTAwLCAxOTUsIDEsIAorICAgIDE4OCwgMTk1LCAxLCAyMTksIDE1NCwgMTk1LCAxLCAxNzIsIDE5NSwgMSwgMjE1LCAyNDUsIDE5NSwgMSwgMjQ5LCAxMzYsIAorICAgIDE5NSwgMSwgMjQ4LCAyMDAsIDE5NSwgMSwgMTc4LCAxOTUsIDEsIDIyMSwgMjE0LCAxOTUsIDEsIDE4MywgMTk1LCAxLCAKKyAgICAyMTMsIDI1MiwgMTk1LCAxLCAyMTMsIDkzLCAxOTUsIDEsIDE5NCwgMTk1LCAxLCAyMjQsIDIyMywgMTk1LCAxLCAyMDEsIAorICAgIDExNCwgMTk1LCAxLCAyMTAsIDExNCwgMTk1LCAxLCAyMDgsIDE3OSwgMTk1LCAxLCAyMTIsIDY0LCAxOTUsIDEsIDE0NCwgCisgICAgMTk1LCAyMiwgMiwgMjUyLCAxMzgsIDE5NSwgMjIsIDIsIDcwLCAxOTUsIDIyLCAyLCAyMjgsIDE1MSwgMTk1LCAyMiwgMiwgCisgICAgNjYsIDE5NSwgMjIsIDIsIDIwMywgMTgyLCAxOTUsIDIyLCAyLCAxMDksIDE0NiwgMTk1LCAyMiwgMiwgMTA5LCAyMTIsIAorICAgIDIxNiwgMTk1LCAyMiwgMiwgMTA5LCAxNTYsIDE5NSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE5NSwgMjIsIDIsIDcyLCAKKyAgICAxOTUsIDIyLCAyLCAyNTEsIDE3NiwgMTk1LCAyMiwgMiwgNzQsIDE5NSwgMjIsIDIsIDI1MCwgMTM5LCAxOTUsIDIsIDIwMiwgCisgICAgMjA4LCAxOTUsIDIsIDI0NywgMTQ5LCAxOTUsIDIsIDI1MSwgMzMsIDE5NSwgMiwgMjAyLCAyMDMsIDE5NSwgMiwgMjE4LCAKKyAgICAxMDAsIDE5NSwgMiwgMjUwLCAxMjIsIDE5NSwgMiwgNDcsIDI1MSwgMzMsIDE5NSwgMjE3LCA4NiwgMTk1LCAyMDksIDE3NiwgCisgICAgMTk1LCAyNDIsIDEwLCAxOTUsIDUzLCAyNDIsIDEwLCAxOTUsIDI0NiwgNzAsIDE5NSwgMjM2LCA1MywgMjM3LCA5MywgMTk1LCAKKyAgICAyNTIsIDMsIDU0LCAxOTUsIDE3LCAxOTksIDgxLCAxOTUsIDE3LCAxMDIsIDE5NSwgMTcsIDEwNSwgMTk1LCAxNywgMTQ3LCAKKyAgICAxOTUsIDE3LCAxNDksIDE5NSwgMTcsIDE2NCwgMTk1LCAxNywgMTg3LCAxOTUsIDE3LCAyMTAsIDEzNSwgMTk1LCAxNywgCisgICAgMTkyLCAxOTUsIDE3LCAyMTksIDExMywgMTk1LCAyMTUsIDEzMywgODEsIDE5NSwgMjI4LCA3NSwgNTQsIDIwNSwgMjE3LCAKKyAgICAyNTEsIDYyLCAyMDUsIDIxNywgMSwgNjIsIDIwNSwgMjE3LCAxLCAyNTIsIDEzOCwgMjA1LCAyMTcsIDEsIDcwLCAyMDUsIAorICAgIDIxNywgMSwgMjI4LCAxNTEsIDIwNSwgMjE3LCAxLCA2NiwgMjA1LCAyMTcsIDEsIDIwMywgMTgyLCAyMDUsIDIxNywgMSwgCisgICAgMTA5LCAxNDYsIDIwNSwgMjE3LCAxLCAxMDksIDIxMiwgMjE2LCAyMDUsIDIxNywgMSwgMTA5LCAxNTYsIDIwNSwgMjE3LCAxLCAKKyAgICAxMDksIDIyNCwgMTM5LCAyMDUsIDIxNywgMSwgNzIsIDIwNSwgMjE3LCAxLCAyNTEsIDE3NiwgMjA1LCAyMTcsIDEsIDc0LCAKKyAgICAyMDUsIDIxNywgMSwgMjUwLCAxMzksIDIwNSwgMjE3LCAxLCAxNjEsIDIwNSwgMjE3LCAxLCAyMjYsIDIwNywgMjA1LCAyMTcsIAorICAgIDEsIDIzNiwgODksIDIwNSwgMjE3LCAxLCAyMzUsIDE5OSwgMjA1LCAyMTcsIDEsIDIxOSwgMjUzLCAyMDUsIDIxNywgMSwgCisgICAgMjQ3LCAxOTAsIDIwNSwgMjE3LCAxLCAyNDcsIDM3LCAyMDUsIDIxNywgMSwgMjI3LCAyNDgsIDIwNSwgMjE3LCAxLCAyMjcsIAorICAgIDIxNSwgMjA1LCAyMTcsIDEsIDIxOCwgNjAsIDIwNSwgMjE3LCAxLCAyMDQsIDI1MywgMjA1LCAyMTcsIDEsIDIwNCwgMjQxLCAKKyAgICAyMDUsIDIxNywgMSwgMjQxLCAyMjAsIDIwNSwgMjE3LCAxLCAyNDEsIDIwNCwgMjA1LCAyMTcsIDEsIDIxOSwgMjEsIDIwNSwgCisgICAgMjE3LCAxLCAyMDcsIDM2LCAyMDUsIDIxNywgMSwgMjA2LCAxMjIsIDIwNSwgMjE3LCAxLCAyNDIsIDU4LCAyMDUsIDIxNywgCisgICAgMSwgMjQxLCAxMDAsIDIwNSwgMjE3LCAxLCAxODgsIDIwNSwgMjE3LCAxLCAxNzIsIDIwNSwgMjE3LCAxLCAyMTUsIDI0NSwgCisgICAgMjA1LCAyMTcsIDEsIDI0OSwgMTM2LCAyMDUsIDIxNywgMSwgMjQ4LCAyMDAsIDIwNSwgMjE3LCAxLCAxNzgsIDIwNSwgMjE3LCAKKyAgICAxLCAxODMsIDIwNSwgMjE3LCAxLCAyMTMsIDI1MiwgMjA1LCAyMTcsIDEsIDE5NCwgMjA1LCAyMTcsIDEsIDIwMywgOTAsIAorICAgIDIwNSwgMjE3LCAxLCAyMTAsIDExNCwgMjA1LCAyMTcsIDEsIDIwOCwgMTc5LCAyMDUsIDIxNywgMSwgMjEyLCA2NCwgMjA1LCAKKyAgICAyMTcsIDEsIDE0NCwgMjA1LCAyMTcsIDIyLCAyLCAyNTIsIDEzOCwgMjA1LCAyMTcsIDIyLCAyLCA3MCwgMjA1LCAyMTcsIAorICAgIDIyLCAyLCAyMjgsIDE1MSwgMjA1LCAyMTcsIDIyLCAyLCA2NiwgMjA1LCAyMTcsIDIyLCAyLCAyMDMsIDE4MiwgMjA1LCAKKyAgICAyMTcsIDIyLCAyLCAxMDksIDE0NiwgMjA1LCAyMTcsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMDUsIDIxNywgMjIsIDIsIAorICAgIDEwOSwgMTU2LCAyMDUsIDIxNywgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDIwNSwgMjE3LCAyMiwgMiwgNzIsIDIwNSwgMjE3LCAKKyAgICAyMiwgMiwgMjA5LCAyNTAsIDcyLCAyMDUsIDIxNywgMjIsIDIsIDI1MSwgMTc2LCAyMDUsIDIxNywgMjIsIDIsIDc0LCAyMDUsIAorICAgIDIxNywgMjIsIDIsIDIwOSwgMjUwLCA3NCwgMjA1LCAyMTcsIDIyLCAyLCAyNTAsIDEzOSwgMjA1LCAyMTcsIDIsIDI0NywgCisgICAgMTQ5LCAyMDUsIDIxNywgMiwgMjUxLCAzMywgMjA1LCAyMTcsIDIsIDIwMiwgMjAzLCAyMDUsIDIxNywgMiwgMjAyLCAyMDgsIAorICAgIDIwNSwgMjE3LCAyLCAyMTgsIDEwMCwgMjA1LCAyMTcsIDIsIDI1MCwgMTIyLCAyMDUsIDIxNywgMjM1LCAxMSwgMjA1LCAKKyAgICAyMTcsIDI1MiwgMywgNTQsIDIwNSwgMjE3LCAyMTcsIDg2LCAyMDUsIDIxNywgMTcsIDE5OSwgODEsIDIwNSwgMjE3LCAxNywgCisgICAgMTAyLCAyMDUsIDIxNywgMTcsIDEwNSwgMjA1LCAyMTcsIDE3LCAxNDcsIDIwNSwgMjE3LCAxNywgMTQ5LCAyMDUsIDIxNywgCisgICAgMTcsIDE2NCwgMjA1LCAyMTcsIDE3LCAxODcsIDIwNSwgMjE3LCAxNywgMjEwLCAxMzUsIDIwNSwgMjE3LCAxNywgMTkyLCAKKyAgICAyMDUsIDIxNywgMTcsIDIxOSwgMTEzLCAxOTYsIDEsIDYyLCAxOTYsIDEsIDI1MiwgMTM4LCAxOTYsIDEsIDcwLCAxOTYsIDEsIAorICAgIDIyOCwgMTUxLCAxOTYsIDEsIDY2LCAxOTYsIDEsIDIwMywgMTgyLCAxOTYsIDEsIDEwOSwgMTQ2LCAxOTYsIDEsIDEwOSwgCisgICAgMjEyLCAyMTYsIDE5NiwgMSwgMTA5LCAxNTYsIDE5NiwgMSwgMTA5LCAyMjQsIDEzOSwgMTk2LCAxLCA3MiwgMTk2LCAxLCAKKyAgICAyNTEsIDE3NiwgMTk2LCAxLCA3NCwgMTk2LCAxLCAyNTAsIDEzOSwgMTk2LCAxLCAxNjEsIDE5NiwgMSwgMjI2LCAyMDcsIAorICAgIDE5NiwgMSwgMjM2LCA4OSwgMTk2LCAxLCAyMzUsIDE5OSwgMTk2LCAxLCAyMTksIDI1MywgMTk2LCAxLCAyNDcsIDE5MCwgCisgICAgMTk2LCAxLCAyNDcsIDM3LCAxOTYsIDEsIDIyNywgMjQ4LCAxOTYsIDEsIDIyNywgMjE1LCAxOTYsIDEsIDIxOCwgNjAsIAorICAgIDE5NiwgMSwgMjA0LCAyNTMsIDE5NiwgMSwgMjA0LCAyNDEsIDE5NiwgMSwgMjQxLCAyMjAsIDE5NiwgMSwgMjQxLCAyMDQsIAorICAgIDE5NiwgMSwgMjE5LCAyMSwgMTk2LCAxLCAyMDcsIDM2LCAxOTYsIDEsIDIwNiwgMTIyLCAxOTYsIDEsIDI0MiwgNTgsIDE5NiwgCisgICAgMSwgMjQxLCAxMDAsIDE5NiwgMSwgMTg4LCAxOTYsIDEsIDE3MiwgMTk2LCAxLCAyMTUsIDI0NSwgMTk2LCAxLCAyNDksIAorICAgIDEzNiwgMTk2LCAxLCAyNDgsIDIwMCwgMTk2LCAxLCAxNzgsIDE5NiwgMSwgMTgzLCAxOTYsIDEsIDIxMywgMjUyLCAxOTYsIAorICAgIDEsIDE5NCwgMTk2LCAxLCAyMDMsIDkwLCAxOTYsIDEsIDIxMCwgMTE0LCAxOTYsIDEsIDIwOCwgMTc5LCAxOTYsIDEsIDIxMiwgCisgICAgNjQsIDE5NiwgMSwgMTQ0LCAxOTYsIDIyLCAyLCAyNTIsIDEzOCwgMTk2LCAyMiwgMiwgNzAsIDE5NiwgMjIsIDIsIDIyOCwgCisgICAgMTUxLCAxOTYsIDIyLCAyLCA2NiwgMTk2LCAyMiwgMiwgMjAzLCAxODIsIDE5NiwgMjIsIDIsIDEwOSwgMTQ2LCAxOTYsIDIyLCAKKyAgICAyLCAxMDksIDIxMiwgMjE2LCAxOTYsIDIyLCAyLCA3MiwgMTk2LCAyMiwgMiwgMjUxLCAxNzYsIDE5NiwgMjIsIDIsIDc0LCAKKyAgICAxOTYsIDIyLCAyLCAyNTAsIDEzOSwgMTk2LCAyLCAyNDcsIDE0OSwgMTk2LCAyLCAyNTEsIDMzLCAxOTYsIDIsIDIwMiwgCisgICAgMjAzLCAxOTYsIDIsIDIwMiwgMjA4LCAxOTYsIDIsIDIxOCwgMTAwLCAxOTYsIDIsIDIwOSwgMTc3LCAxOTYsIDI0MiwgMTAsIAorICAgIDE5NiwgNTMsIDI0MiwgMTAsIDE5NiwgMjEwLCAxNTUsIDI0MCwgMTgyLCAxOTYsIDIxMCwgMTU1LCAxNDgsIDE5NiwgMjEzLCAKKyAgICAxMzAsIDIyMiwgMTQ5LCAxOTYsIDIxMywgMTMwLCAyMjIsIDE0OCwgMTk2LCAyMTMsIDEzMCwgMjIyLCAxNDcsIDE5NiwgCisgICAgMjM4LCAxNzEsIDc2LCAyMDYsIDEyNywgODEsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjA1LCA5MywgMjYsIDIwNCwgOTksIAorICAgIDIxNywgMjAsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjA1LCA5MywgMjYsIDIzOSwgMTgwLCAyNDIsIDI0MiwgMTk2LCAKKyAgICAyMTEsIDE5MywgMTM0LCAzLCAyMTMsIDE5NSwgMjYsIDIzOSwgMTgwLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAKKyAgICAzLCAyMTMsIDE5NSwgMjYsIDIzOSwgMTgwLCA1MywgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjEzLCAxOTUsIAorICAgIDI2LCAyMzksIDE4MCwgMjA1LCA4MywgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgNTMsIDIxMywgMjYsIDE5NiwgCisgICAgMjExLCAxOTMsIDEzNCwgNTMsIDIxMywgMjcsIDMsIDIxMywgMTk0LCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDUzLCAyNDIsIAorICAgIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMDUsIDgzLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAKKyAgICAyMTQsIDkwLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMTAsIDE1MiwgMjQyLCAyNDIsIDE5NiwgMjExLCAKKyAgICAxOTMsIDEzNCwgMywgMjQ2LCAxNTMsIDI2LCAyMTMsIDE5NCwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyNDYsIDE1MywgMjYsIAorICAgIDEyMCwgMjM4LCAxNzMsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjQ2LCAxNTMsIDI2LCAyMzYsIDIyOSwgMjM4LCAxNzMsIAorICAgIDE5NiwgMSwgMjA2LCA0NiwgMjUxLCAxMDksIDcwLCAxOTYsIDEsIDIwNCwgMTQzLCAyNTEsIDEwOSwgNzAsIDE5NiwgMSwgCisgICAgMjA0LCAxNDMsIDI1MSwgMTA5LCAyMjgsIDE1MSwgMTk2LCAxLCAyNTEsIDEwOSwgNjYsIDE5NiwgMjIsIDIsIDI1MSwgMTA5LCAKKyAgICA2NiwgMTk2LCAyMiwgMiwgMjUxLCAxMDksIDIwMywgMTgyLCAyMjEsIDEyNywgMSwgNjIsIDIyMSwgMTI3LCAxLCAyNTIsIAorICAgIDEzOCwgMjIxLCAxMjcsIDEsIDcwLCAyMjEsIDEyNywgMSwgMjI4LCAxNTEsIDIyMSwgMTI3LCAxLCA2NiwgMjIxLCAxMjcsIAorICAgIDEsIDIwMywgMTgyLCAyMjEsIDEyNywgMSwgMTA5LCAxNDYsIDIyMSwgMTI3LCAxLCAxMDksIDIxMiwgMjE2LCAyMjEsIDEyNywgCisgICAgMSwgMTA5LCAxNTYsIDIyMSwgMTI3LCAxLCAxMDksIDIyNCwgMTM5LCAyMjEsIDEyNywgMSwgNzIsIDIyMSwgMTI3LCAxLCAKKyAgICAyNTEsIDE3NiwgMjIxLCAxMjcsIDEsIDc0LCAyMjEsIDEyNywgMSwgMjUwLCAxMzksIDIyMSwgMTI3LCAxLCAxNjEsIDIyMSwgCisgICAgMTI3LCAxLCAyMjYsIDIwNywgMjIxLCAxMjcsIDEsIDIzNiwgODksIDIyMSwgMTI3LCAxLCAyMzUsIDE5OSwgMjIxLCAxMjcsIAorICAgIDEsIDIxOSwgMjUzLCAyMjEsIDEyNywgMSwgMjQ3LCAxOTAsIDIyMSwgMTI3LCAxLCAyNDcsIDM3LCAyMjEsIDEyNywgMSwgCisgICAgMjI3LCAyNDgsIDIyMSwgMTI3LCAxLCAyMjcsIDIxNSwgMjIxLCAxMjcsIDEsIDIxOCwgNjAsIDIyMSwgMTI3LCAxLCAyMDQsIAorICAgIDI1MywgMjIxLCAxMjcsIDEsIDIwNCwgMjQxLCAyMjEsIDEyNywgMSwgMjQxLCAyMjAsIDIyMSwgMTI3LCAxLCAyNDEsIDIwNCwgCisgICAgMjIxLCAxMjcsIDEsIDIxOSwgMjEsIDIyMSwgMTI3LCAxLCAyMDcsIDM2LCAyMjEsIDEyNywgMSwgMjA2LCAxMjIsIDIyMSwgCisgICAgMTI3LCAxLCAyNDIsIDU4LCAyMjEsIDEyNywgMSwgMjQxLCAxMDAsIDIyMSwgMTI3LCAxLCAxODgsIDIyMSwgMTI3LCAxLCAKKyAgICAxNzIsIDIyMSwgMTI3LCAxLCAyMTUsIDI0NSwgMjIxLCAxMjcsIDEsIDI0OSwgMTM2LCAyMjEsIDEyNywgMSwgMjQ4LCAyMDAsIAorICAgIDIyMSwgMTI3LCAxLCAxNzgsIDIyMSwgMTI3LCAxLCAxODMsIDIyMSwgMTI3LCAxLCAyMTMsIDI1MiwgMjIxLCAxMjcsIDEsIAorICAgIDE5NCwgMjIxLCAxMjcsIDEsIDIwMywgOTAsIDIyMSwgMTI3LCAxLCAyMTAsIDExNCwgMjIxLCAxMjcsIDEsIDIwOCwgMTc5LCAKKyAgICAyMjEsIDEyNywgMSwgMjEyLCA2NCwgMjIxLCAxMjcsIDEsIDE0NCwgMjIxLCAxMjcsIDEsIDIyNCwgMTM4LCAyMjEsIDEyNywgCisgICAgMjIsIDIsIDI1MiwgMTM4LCAyMjEsIDEyNywgMjIsIDIsIDcwLCAyMjEsIDEyNywgMjIsIDIsIDIyOCwgMTUxLCAyMjEsIAorICAgIDEyNywgMjIsIDIsIDY2LCAyMjEsIDEyNywgMjIsIDIsIDIwMywgMTgyLCAyMjEsIDEyNywgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAyMjEsIDEyNywgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIyMSwgMTI3LCAyMiwgMiwgMTA5LCAxNTYsIDIyMSwgMTI3LCAyMiwgCisgICAgMiwgMTA5LCAyMjQsIDEzOSwgMjIxLCAxMjcsIDIyLCAyLCA3MiwgMjIxLCAxMjcsIDIyLCAyLCAyNTEsIDE3NiwgMjIxLCAKKyAgICAxMjcsIDIyLCAyLCA3NCwgMjIxLCAxMjcsIDIyLCAyLCAyNTAsIDEzOSwgMjIxLCAxMjcsIDIsIDI1MSwgMzMsIDIyMSwgCisgICAgMTI3LCAyLCAyMDIsIDIwMywgMjIxLCAxMjcsIDIsIDIwMiwgMjA4LCAyMjEsIDEyNywgMiwgMjUwLCAyMzEsIDIyMSwgMTI3LCAKKyAgICAyNDIsIDEwLCAyMjEsIDEyNywgNTMsIDI0MiwgMTAsIDIyMSwgMTI3LCAyNTIsIDMsIDU0LCAyMjEsIDEyNywgMiwgMjMzLCAKKyAgICA3MCwgMjIxLCAxMjcsIDE3LCAxOTksIDgxLCAyMjEsIDEyNywgMTcsIDEwMiwgMjIxLCAxMjcsIDE3LCAxMDUsIDIyMSwgCisgICAgMTI3LCAxNywgMTQ3LCAyMjEsIDEyNywgMTcsIDE0OSwgMjIxLCAxMjcsIDE3LCAxNjQsIDIyMSwgMTI3LCAxNywgMTg3LCAKKyAgICAyMjEsIDEyNywgMTcsIDIxMCwgMTM1LCAyMjEsIDEyNywgMTcsIDE5MiwgMjIxLCAxMjcsIDE3LCAyMTksIDExMywgOTIsIAorICAgIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjEyLCAyMjgsIDI0OCwgMTYwLCA5MiwgNTMsIDI0OCwgMTYxLCAzLCAyMTcsIAorICAgIDIxLCA5MiwgMjA1LCA4MywgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIDkyLCAKKyAgICAyMTIsIDIyOCwgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyMTIsIDIyOCwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCAKKyAgICA5MiwgMjI4LCA1MCwgMjQ4LCAxNjAsIDkyLCAyMjgsIDUwLCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIDkyLCAyMDcsIAorICAgIDE3MiwgMjQ4LCAxNjAsIDkyLCAyMDcsIDE3MiwgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyMDcsIDE3MiwgMjQ4LCAKKyAgICAxNjEsIDMsIDUzLCAyMTcsIDIxLCA5MiwgMjA0LCAxODUsIDIwNywgMTcyLCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIAorICAgIDIwNiwgMjUzLCAxLCA2MiwgMjA2LCAyNTMsIDEsIDI1MiwgMTM4LCAyMDYsIDI1MywgMSwgNzAsIDIwNiwgMjUzLCAxLCAKKyAgICAyMjgsIDE1MSwgMjA2LCAyNTMsIDEsIDY2LCAyMDYsIDI1MywgMSwgMjAzLCAxODIsIDIwNiwgMjUzLCAxLCA3MiwgMjA2LCAKKyAgICAyNTMsIDEsIDI1MSwgMTc2LCAyMDYsIDI1MywgMSwgNzQsIDIwNiwgMjUzLCAxLCAyNTAsIDEzOSwgMjA2LCAyNTMsIDEsIAorICAgIDE2MSwgMjA2LCAyNTMsIDEsIDIyNiwgMjA3LCAyMDYsIDI1MywgMSwgMjM2LCA4OSwgMjA2LCAyNTMsIDEsIDIzNSwgMTk5LCAKKyAgICAyMDYsIDI1MywgMSwgMjE5LCAyNTMsIDIwNiwgMjUzLCAxLCAyNDcsIDE5MCwgMjA2LCAyNTMsIDEsIDI0NywgMzcsIDIwNiwgCisgICAgMjUzLCAxLCAyMjcsIDI0OCwgMjA2LCAyNTMsIDEsIDIyNywgMjE1LCAyMDYsIDI1MywgMSwgMjE4LCA2MCwgMjA2LCAyNTMsIAorICAgIDEsIDIwNCwgMjUzLCAyMDYsIDI1MywgMSwgMjA0LCAyNDEsIDIwNiwgMjUzLCAxLCAyNDEsIDIyMCwgMjA2LCAyNTMsIDEsIAorICAgIDI0MSwgMjA0LCAyMDYsIDI1MywgMSwgMjE5LCAyMSwgMjA2LCAyNTMsIDEsIDIwNywgMzYsIDIwNiwgMjUzLCAxLCAyMDYsIAorICAgIDEyMiwgMjA2LCAyNTMsIDEsIDI0MiwgNTgsIDIwNiwgMjUzLCAxLCAyNDEsIDEwMCwgMjA2LCAyNTMsIDEsIDE4OCwgMjA2LCAKKyAgICAyNTMsIDEsIDE3MiwgMjA2LCAyNTMsIDEsIDIxNSwgMjQ1LCAyMDYsIDI1MywgMSwgMjQ5LCAxMzYsIDIwNiwgMjUzLCAxLCAKKyAgICAyNDgsIDIwMCwgMjA2LCAyNTMsIDEsIDE3OCwgMjA2LCAyNTMsIDEsIDE4MywgMjA2LCAyNTMsIDEsIDIxMywgMjUyLCAyMDYsIAorICAgIDI1MywgMSwgMTk0LCAyMDYsIDI1MywgMSwgMjAzLCA5MCwgMjA2LCAyNTMsIDEsIDIxMCwgMTE0LCAyMDYsIDI1MywgMSwgCisgICAgMjEyLCA2NCwgMjA2LCAyNTMsIDEsIDE0NCwgMjA2LCAyNTMsIDEsIDIxMiwgMjE1LCAyMDYsIDI1MywgMiwgMjUxLCAzMywgCisgICAgMjA2LCAyNTMsIDIsIDIwMiwgMjAzLCAyMDYsIDI1MywgMjIsIDIsIDI1MiwgMTM4LCAyMDYsIDI1MywgMjIsIDIsIDcwLCAKKyAgICAyMDYsIDI1MywgMjIsIDIsIDIyOCwgMTUxLCAyMDYsIDI1MywgMjIsIDIsIDY2LCAyMDYsIDI1MywgMjIsIDIsIDIwMywgCisgICAgMTgyLCAyMDYsIDI1MywgMjIsIDIsIDcyLCAyMDYsIDI1MywgMjIsIDIsIDI1MSwgMTc2LCAyMDYsIDI1MywgMjIsIDIsIDc0LCAKKyAgICAyMDYsIDI1MywgMjIsIDIsIDI1MCwgMTM5LCAyMDYsIDI1MywgMiwgMjAyLCAyMDgsIDIwNiwgMjUzLCAyLCAyMTgsIDEwMCwgCisgICAgMjA2LCAyNTMsIDE3LCAxOTksIDgxLCAyMDYsIDI1MywgMTcsIDEwMiwgMjA2LCAyNTMsIDE3LCAxMDUsIDIwNiwgMjUzLCAKKyAgICAxNywgMTQ3LCAyMDYsIDI1MywgMTcsIDE0OSwgMjA2LCAyNTMsIDE3LCAxNjQsIDIwNiwgMjUzLCAxNywgMTg3LCAyMDYsIAorICAgIDI1MywgMTcsIDIxMCwgMTM1LCAyMDYsIDI1MywgMTcsIDE5MiwgMjA2LCAyNTMsIDE3LCAyMTksIDExMywgMjUxLCAxODAsIAorICAgIDEsIDE2MSwgMjUxLCAxODAsIDEsIDIyNiwgMjA3LCAyNTEsIDE4MCwgMSwgMjE5LCAyNTMsIDI1MSwgMTgwLCAxLCAxODgsIAorICAgIDI1MSwgMTgwLCAxLCAyMDcsIDM2LCAyNTEsIDE4MCwgMSwgMjUxLCAxMDksIDIwNywgMzYsIDI1MSwgMTgwLCAxLCAxNzIsIAorICAgIDI1MSwgMTgwLCAxLCAyMTUsIDI0NSwgMjUxLCAxODAsIDEsIDI0OSwgMTM2LCAyNTEsIDE4MCwgMSwgMTc4LCAyNTEsIDE4MCwgCisgICAgMSwgMjI3LCAyNDgsIDI1MSwgMTgwLCAxLCAyNDcsIDM3LCAyNTEsIDE4MCwgMSwgMjA2LCAxMjIsIDI1MSwgMTgwLCAxLCAKKyAgICAyMTMsIDI1MiwgMjUxLCAxODAsIDEsIDE5NCwgMjUxLCAxODAsIDEsIDIxMiwgNjQsIDI1MSwgMTgwLCAxLCAyMTgsIDYwLCAKKyAgICAyNTEsIDE4MCwgMSwgMTQ0LCAyNTEsIDE4MCwgMSwgNjIsIDI1MSwgMTgwLCAxLCAyNDIsIDU4LCAyNTEsIDE4MCwgMSwgCisgICAgMjQxLCAxMDAsIDI1MSwgMTgwLCAxLCAyMzYsIDg5LCAyNTEsIDE4MCwgMSwgMjUxLCAxMDksIDIzNiwgODksIDI1MSwgMTgwLCAKKyAgICAxLCAyMzUsIDE5OSwgMjUxLCAxODAsIDEsIDI0OCwgMjAwLCAyNTEsIDE4MCwgMSwgMjI3LCAyMTUsIDI1MSwgMTgwLCAxMTEsIAorICAgIDIsIDE3OSwgMTk0LCAyNTEsIDE4MCwgMTExLCAyLCAxNzksIDIxMywgMjUyLCAyNTEsIDE4MCwgMTExLCAyLCAxNzksIDIyNCwgCisgICAgMTk3LCAyMTMsIDI1MiwgMjUxLCAxODAsIDIyLCAyLCA2MiwgMjUxLCAxODAsIDIyLCAyLCAyNTIsIDEzOCwgMjUxLCAxODAsIAorICAgIDIyLCAyLCA3MCwgMjUxLCAxODAsIDIyLCAyLCAyMjgsIDE1MSwgMjUxLCAxODAsIDIyLCAyLCA2NiwgMjUxLCAxODAsIDIyLCAKKyAgICAyLCAyMDMsIDE4MiwgMjUxLCAxODAsIDIyLCAyLCA3MiwgMjUxLCAxODAsIDIyLCAyLCAyNTAsIDExNywgMjUxLCAxODAsIAorICAgIDIyLCAyLCA3NCwgMjUxLCAxODAsIDIyLCAyLCAyNTEsIDE3NiwgMjUxLCAxODAsIDIyLCAyLCAyNTEsIDEwMSwgMjUxLCAKKyAgICAxODAsIDIsIDIyNiwgMTQ5LCAyNTEsIDE4MCwgMTcsIDE5OSwgODEsIDI1MSwgMTgwLCAxNywgMTAyLCAyNTEsIDE4MCwgMTcsIAorICAgIDEwNSwgMjUxLCAxODAsIDE3LCAxNDcsIDI1MSwgMTgwLCAxNywgMTQ5LCAyNTEsIDE4MCwgMTcsIDE2NCwgMjUxLCAxODAsIAorICAgIDE3LCAxODcsIDI1MSwgMTgwLCAxNywgMjEwLCAxMzUsIDI1MSwgMTgwLCAxNywgMTkyLCAyNTEsIDE4MCwgMTcsIDIxOSwgCisgICAgMTEzLCAyNTEsIDE4MCwgNDEsIDIwNiwgMTY2LCAyNTEsIDE4MCwgNDEsIDIwNCwgMTU5LCAyNTEsIDE4MCwgMiwgNCwgMjExLCAKKyAgICAxOTIsIDI1MSwgMTgwLCAyLCAyMTEsIDE5MiwgMjUxLCAxODAsIDIsIDIxMiwgMTY2LCAyNTEsIDE4MCwgMTYsIDIwMiwgCisgICAgMjM0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjE5LCAyNTIsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCA2MiwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwMSwgMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAxOTksIDIxMSwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDYsIDEsIDE4MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDE5OSwgMjQ1LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNiwgMSwgMjI4LCAxNTEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDMsIDE4MiwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDcyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgNzQsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyNTEsIAorICAgIDc2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM2LCA4OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIyNiwgODgsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzgsIDE0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDE5OSwgMTk1LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjA0LCAzOCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzOCwgMTYyLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjE3LCAxMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDQsIDI0OCwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDYsIDEsIDIxOCwgODYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyNDIsIDU4LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNiwgMSwgMjUwLCAxNTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyNTEsIDEwMSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDI0OCwgMzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMTQsIDIyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIAorICAgIDYsIDEsIDIzNCwgNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzMsIDE5NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIAorICAgIDEsIDIzMywgMTIyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM0LCAxNjYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAKKyAgICAyMDgsIDEzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwOSwgMTYxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgCisgICAgMjAyLCAxOTQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMTksIDI1MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDYyLCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjAxLCAzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE5OSwgMjExLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTgzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTk5LCAyNDUsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0LCAxLCAyMjgsIDE1MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwMywgMTgyLCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgNzIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCA3NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDI1MSwgCisgICAgNzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzYsIDg5LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjI2LCA4OCwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzOCwgMTQzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTk5LCAxOTUsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDQsIDM4LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM4LCAxNjIsIDIwMSwgCisgICAgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMTcsIDEyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwNCwgMjQ4LCAyMDEsIDk0LCAKKyAgICAyNDYsIDE0MiwgNCwgMSwgMjE4LCA4NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDI0MiwgNTgsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0LCAxLCAyNTAsIDE1NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDI1MSwgMTAxLCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgMjQ4LCAzNiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIxNCwgMjI0LCAyMDEsIDk0LCAyNDYsIDE0MiwgCisgICAgNCwgMSwgMjM0LCA0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzMywgMTk1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgCisgICAgMSwgMjMzLCAxMjIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzQsIDE2NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIAorICAgIDIwOCwgMTMxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjA5LCAxNjEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAKKyAgICAyMDIsIDE5NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxOTksIDgxLCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDEwMiwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxMDUsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTQ3LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgMTcsIDE0OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxNjQsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTg3LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDIxMCwgMTM1LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE5MiwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDE3LCAyMTksIDExMywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMDYsIDE2NiwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQxLCAyMDQsIDE1OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMDYsIDY3LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIAorICAgIDIzNiwgMjM1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIzNywgMTA0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIwOSwgCisgICAgOTIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjEwLCAxMjksIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjM4LCAyMjIsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjE5LCAxMDgsIDIwMSwgOTQsIDI0NiwgMTQyLCAyMTcsIDg2LCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE3MiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNjEsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTk0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE3OCwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDIsIDU4LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE5OSwgMTE0LCAKKyAgICAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwMywgOTAsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgCisgICAgMjE5LCAyNTMsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTQ0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAKKyAgICAxNTEsIDEsIDIzNiwgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjI2LCAyMDcsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMSwgMjEyLCA2NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDksIDEzNiwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDcsIDE5MCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDcsIAorICAgIDM2LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwNiwgMTIyLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAKKyAgICAxNTEsIDEsIDE4OCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMTUsIDI0NSwgMjE2LCA4OCwgMjQ2LCAxNjAsIAorICAgIDIzNCwgMTUxLCAxLCAyMTMsIDI1MiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMzcsIDE5NSwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDcsIDM3LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDYyLCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDcyLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDcwLCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDc0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDY2LCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwNCwgNDYsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjMyLCAKKyAgICAyNDAsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIxNiwgMjI2LCAyMTYsIDg4LCAyNDYsIDE2MCwgCisgICAgMjM0LCAxNTEsIDEsIDQ3LCAyMjcsIDExOCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjA3LCA4MywgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjIzLCAyNDMsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIAorICAgIDE1MSwgMSwgNDcsIDIyMCwgMjE0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAxNTYsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIwMSwgMTQ3LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAKKyAgICAyMTksIDI1NSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjAwLCAxMjMsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjEzLCAxOSwgMTUwLCAyMjQsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMywgCisgICAgMTksIDIwNSwgMTc0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMjM1LCAxMjMsIDIwOCwgNzYsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEzLCAxOSwgMTUwLCAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjEzLCAxOSwgMTUwLCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgCisgICAgOSwgMjM1LCAxMjMsIDIwOCwgNzcsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAxNTAsIAorICAgIDIyNCwgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAyMDUsIDE3NCwgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAyMTIsIDksIDE1MCwgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIAorICAgIDIxMiwgOSwgMTUwLCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyMSwgMjA1LCAyMDUsIDE3NCwgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMzUsIDEyMywgMjA4LCA3NywgMjAzLCA3MiwgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAyMjEsIDIwNSwgMTUwLCAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgCisgICAgMjIxLCAyMDUsIDE1MCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjQsIDU3LCAxNTAsIDIyNCwgCisgICAgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMjA1LCAxNzQsIDIxNiwgODgsIDI0NiwgMTYwLCAKKyAgICAyMzQsIDE1MSwgMjM1LCAxMjMsIDIwOCwgNzYsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMTUwLCAKKyAgICAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMTUwLCAyMzcsIDg5LCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIzNSwgMTIzLCAyMDgsIDc3LCAyMzcsIDg5LCAxNzQsIDEsIDYyLCAxNzQsIDEsIAorICAgIDI1MiwgMTM4LCAxNzQsIDEsIDcwLCAxNzQsIDEsIDIyOCwgMTUxLCAxNzQsIDEsIDY2LCAxNzQsIDEsIDIwMywgMTgyLCAKKyAgICAxNzQsIDEsIDEwOSwgMTQ2LCAxNzQsIDEsIDEwOSwgMjEyLCAyMTYsIDE3NCwgMSwgMTA5LCAxNTYsIDE3NCwgMSwgNzIsIAorICAgIDE3NCwgMSwgMjUxLCAxNzYsIDE3NCwgMSwgNzQsIDE3NCwgMSwgMjUwLCAxMzksIDE3NCwgMSwgMTYxLCAxNzQsIDEsIDIyNiwgCisgICAgMjA3LCAxNzQsIDEsIDIzNiwgODksIDE3NCwgMSwgMjM1LCAxOTksIDE3NCwgMSwgMjE5LCAyNTMsIDE3NCwgMSwgMjQ3LCAKKyAgICAxOTAsIDE3NCwgMSwgMjQ3LCAzNywgMTc0LCAxLCAyMjcsIDI0OCwgMTc0LCAxLCAyMjcsIDIxNSwgMTc0LCAxLCAyMTgsIAorICAgIDYwLCAxNzQsIDEsIDIwNCwgMjUzLCAxNzQsIDEsIDIwNCwgMjQxLCAxNzQsIDEsIDI0MSwgMjIwLCAxNzQsIDEsIDI0MSwgCisgICAgMjA0LCAxNzQsIDEsIDIxOSwgMjEsIDE3NCwgMSwgMjA3LCAzNiwgMTc0LCAxLCAyMDYsIDEyMiwgMTc0LCAxLCAyNDIsIDU4LCAKKyAgICAxNzQsIDEsIDI0MSwgMTAwLCAxNzQsIDEsIDE4OCwgMTc0LCAxLCAxNzIsIDE3NCwgMSwgMjE1LCAyNDUsIDE3NCwgMSwgCisgICAgMjQ5LCAxMzYsIDE3NCwgMSwgMjQ4LCAyMDAsIDE3NCwgMSwgMTc4LCAxNzQsIDEsIDE4MywgMTc0LCAxLCAyMTMsIDI1MiwgCisgICAgMTc0LCAxLCAxOTQsIDE3NCwgMSwgMjAzLCA5MCwgMTc0LCAxLCAyMTAsIDExNCwgMTc0LCAxLCAyMDgsIDE3OSwgMTc0LCAxLCAKKyAgICAyMTIsIDY0LCAxNzQsIDEsIDE0NCwgMTc0LCAyMiwgMiwgMjUyLCAxMzgsIDE3NCwgMjIsIDIsIDcwLCAxNzQsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTc0LCAyMiwgMiwgNjYsIDE3NCwgMjIsIDIsIDIwMywgMTgyLCAxNzQsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTc0LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTc0LCAyMiwgMiwgMTA5LCAxNTYsIDE3NCwgMjIsIDIsIDcyLCAxNzQsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgMTc0LCAyMiwgMiwgNzQsIDE3NCwgMjIsIDIsIDI1MCwgMTM5LCAxNzQsIDIsIDI0NywgMTQ5LCAxNzQsIAorICAgIDIsIDI1MSwgMzMsIDE3NCwgMiwgMjAyLCAyMDMsIDE3NCwgMiwgMjAyLCAyMDgsIDE3NCwgMiwgMjUwLCAxMjIsIDE3NCwgCisgICAgMjQyLCAxMCwgMTc0LCA1MywgMjQyLCAxMCwgMTc0LCAyMDAsIDIzOCwgMjEwLCAxNTQsIDE3NCwgMjM2LCA1MywgMjM3LCAKKyAgICA5MiwgMTc0LCAyMzYsIDUzLCAyMzcsIDkxLCAxNzQsIDE3LCAxOTksIDgxLCAxNzQsIDE3LCAxMDIsIDE3NCwgMTcsIDEwNSwgCisgICAgMTc0LCAxNywgMTQ3LCAxNzQsIDE3LCAxNDksIDE3NCwgMTcsIDE2NCwgMTc0LCAxNywgMTg3LCAxNzQsIDE3LCAyMTAsIAorICAgIDEzNSwgMTc0LCAxNywgMTkyLCAxNzQsIDE3LCAyMTksIDExMywgMTc0LCA0MSwgMTAyLCAxNzQsIDQxLCAxMDUsIDE3NCwgCisgICAgNDEsIDE0NywgMTc0LCA0MSwgMTQ5LCAxNzQsIDQxLCAxNjQsIDE3NCwgNDEsIDE4NywgMTc0LCA0MSwgMjEwLCAxMzUsIAorICAgIDE3NCwgNDEsIDE5MiwgMTc0LCA0MSwgMjE5LCAxMTMsIDE3NCwgNDEsIDIwNiwgMTY2LCAxNzQsIDQxLCAyMDQsIDE1OSwgCisgICAgMTc0LCA0MSwgMjA2LCA2NywgMTc0LCA0MSwgMjM2LCAyMzUsIDE3NCwgNDEsIDIzNywgMTA0LCAxNzQsIDQxLCAyMDksIDkyLCAKKyAgICAxNzQsIDQxLCAyMTAsIDEyOSwgMTc0LCA0MSwgMjM4LCAyMjIsIDE3NCwgNDEsIDIxOSwgMTA4LCAxNzQsIDIzMywgODEsIAorICAgIDIwMywgMjQwLCA4MSwgMjIyLCAxNTEsIDIzNCwgMTM3LCA4MSwgMjIyLCAxNTEsIDEzNCwgMjEwLCAxMDYsIDIyMiwgMTUxLCAKKyAgICAxLCAxNjEsIDIyMiwgMTUxLCAxLCAyMjYsIDIwNywgMjIyLCAxNTEsIDEsIDIzNiwgODksIDIyMiwgMTUxLCAxLCAyMTksIAorICAgIDI1MywgMjIyLCAxNTEsIDEsIDI0NywgMTkwLCAyMjIsIDE1MSwgMSwgMjQ3LCAzNywgMjIyLCAxNTEsIDEsIDIyNywgMjQ4LCAKKyAgICAyMjIsIDE1MSwgMSwgMjE4LCA2MCwgMjIyLCAxNTEsIDEsIDIwNywgMzYsIDIyMiwgMTUxLCAxLCAyMDYsIDEyMiwgMjIyLCAKKyAgICAxNTEsIDEsIDI0MiwgNTgsIDIyMiwgMTUxLCAxLCAxODgsIDIyMiwgMTUxLCAxLCAxNzIsIDIyMiwgMTUxLCAxLCAyMTUsIAorICAgIDI0NSwgMjIyLCAxNTEsIDEsIDI0OSwgMTM2LCAyMjIsIDE1MSwgMSwgMTc4LCAyMjIsIDE1MSwgMSwgMjA1LCAzMiwgMjIyLCAKKyAgICAxNTEsIDEsIDIwNSwgMjIsIDIyMiwgMTUxLCAxLCAyMzksIDkzLCAyMjIsIDE1MSwgMSwgMjAxLCAxMTQsIDIyMiwgMTUxLCAKKyAgICAxLCAxOTksIDc3LCAyMjIsIDE1MSwgMSwgMTk5LCAxMTQsIDIyMiwgMTUxLCAxLCAyNTUsIDE0MiwgMjIyLCAxNTEsIDEsIAorICAgIDE4MywgMjIyLCAxNTEsIDEsIDIxMywgMjUyLCAyMjIsIDE1MSwgMSwgMTk0LCAyMjIsIDE1MSwgMSwgMjEwLCAxMTQsIDIyMiwgCisgICAgMTUxLCAxLCAyMTIsIDY0LCAyMjIsIDE1MSwgMSwgMTQ0LCAyMjIsIDE1MSwgMSwgNjIsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAKKyAgICAxNjEsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMjYsIDIwNywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIzNiwgODksIDIyMiwgCisgICAgMTUxLCAyMDgsIDEyLCAxLCAyMTksIDI1MywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDI0NywgMTkwLCAyMjIsIDE1MSwgMjA4LCAKKyAgICAxMiwgMSwgMjQ3LCAzNywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIyNywgMjQ4LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgCisgICAgMjE4LCA2MCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIwNywgMzYsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMDYsIDEyMiwgCisgICAgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDI0MiwgNTgsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxODgsIDIyMiwgMTUxLCAyMDgsIAorICAgIDEyLCAxLCAxNzIsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTUsIDI0NSwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDI0OSwgCisgICAgMTM2LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTc4LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjA1LCAzMiwgMjIyLCAxNTEsIAorICAgIDIwOCwgMTIsIDEsIDIwNSwgMjIsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMzksIDkzLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgCisgICAgMjAxLCAxMTQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxOTksIDc3LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTk5LCAxMTQsIAorICAgIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxODMsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgMjIyLCAxNTEsIDIwOCwgCisgICAgMTIsIDEsIDE5NCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIxMCwgMTE0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjEyLCAKKyAgICA2NCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE0NCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDYyLCAyMjIsIDE1MSwgMjIsIDIsIAorICAgIDI1MiwgMTM4LCAyMjIsIDE1MSwgMjIsIDIsIDcwLCAyMjIsIDE1MSwgMjIsIDIsIDY2LCAyMjIsIDE1MSwgMjIsIDIsIDcyLCAKKyAgICAyMjIsIDE1MSwgMjIsIDIsIDc0LCAyMjIsIDE1MSwgMiwgMjUxLCAzMywgMjIyLCAxNTEsIDIsIDI0NywgMTQ5LCAxMCwgMiwgCisgICAgNjIsIDEwLCAyLCAzNSwgMjQsIDYyLCAxMCwgMiwgMzUsIDI0LCAyNDksIDExOCwgMTAsIDIsIDM1LCAyNCwgMjM2LCA1OCwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAzNSwgMjQsIDE0NCwgMTAsIDIsIDM1LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAzNSwgMjQsIAorICAgIDIyNSwgMTU2LCAyMzUsIDI4LCAxMCwgMiwgMzUsIDI0LCAyMjAsIDI1MCwgMTAsIDIsIDM1LCAyNCwgMjEyLCA1MCwgMTAsIAorICAgIDIsIDI1NCwgMTQ3LCAxMCwgMiwgMjUyLCA4OSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDI1MiwgCisgICAgOTAsIDI0LCAyMzksIDEyNCwgMjM1LCAyOCwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMzYsIDcxLCAxMCwgMiwgMjUyLCA5MCwgCisgICAgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDE0NCwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMjgsIDEyNywgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMjUsIDE1NywgCisgICAgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMTAsIDQ5LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDY2LCAKKyAgICAxMCwgMiwgMjUyLCA5MCwgMjM1LCAyOCwgMTAsIDIsIDI1MiwgNiwgMTAsIDIsIDI1MiwgNywgMjQsIDI0OSwgOTgsIDEwLCAKKyAgICAyLCAyNTIsIDcsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDI1MiwgNywgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIAorICAgIDE3OSwgMTAsIDIsIDI1MiwgNywgMjQsIDIxMCwgMTEyLCAxMCwgMiwgMjUyLCA3LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjUxLCAKKyAgICAyMzUsIDEwLCAyLCAyNTEsIDE1OSwgMTAsIDIsIDI1MSwgMTYwLCAyNCwgMjM4LCAxMDksIDEwLCAyLCAyNTEsIDE2MCwgMjQsIAorICAgIDIxMCwgMTEsIDkzLCAyMzUsIDEzNSwgMTAsIDIsIDI1MSwgMTUxLCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyNTEsIDE1MSwgCisgICAgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjQxLCAyOSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyNTEsIAorICAgIDE1MiwgMjQsIDE0NCwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjI3LCA5MSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjI2LCAKKyAgICAxNjMsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIwMywgMTkwLCAxMCwgMiwgCisgICAgMjUxLCAxNDgsIDEwLCAyLCAyNTEsIDE0MCwgMTAsIDIsIDI1MSwgOTcsIDEwLCAyLCAyNTEsIDk4LCAyNCwgMjEwLCA2NSwgCisgICAgMTAsIDIsIDI1MSwgODUsIDEwLCAyLCAyNTEsIDg2LCAxMTksIDI1MSwgODUsIDEwLCAyLCAyNTEsIDg2LCAxMjYsIDIwNSwgCisgICAgMjMyLCAxMCwgMiwgMjUxLCA4NiwgOTMsIDIyMCwgMTQ4LCAyMTcsIDQwLCAyNTEsIDg2LCA5MywgMjIwLCAxNDcsIDEwLCAyLCAKKyAgICAyNTEsIDg2LCA5MywgMjIwLCAxNDgsIDIwOCwgMTkyLCAxMCwgMiwgMjUxLCA1MywgMTAsIDIsIDI1MSwgMjMsIDEwLCAyLCAKKyAgICAyNTAsIDI0NiwgMTAsIDIsIDI1MCwgMjQ3LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyNTAsIDIxOCwgMTAsIDIsIDI1MCwgCisgICAgMTg2LCAxMCwgMiwgMjUwLCAxODEsIDEwLCAyLCAyNTAsIDE4MiwgMTk5LCAzMiwgMjA2LCAxNTUsIDEwLCAyLCAyNTAsIAorICAgIDE4MiwgMjI3LCA5NSwgMjA2LCAxNTUsIDEwLCAyLCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MiwgMjA0LCAyMTAsIDExOSwgCisgICAgMjA0LCAyMTAsIDIwNCwgMjEwLCAxMTksIDIwNCwgMjEwLCAyMTYsIDEzNSwgMTAsIDIsIDI1MCwgMTgyLCAxMTksIDI1MCwgCisgICAgMTgyLCAxMTksIDI1MCwgMTgxLCAxMCwgMiwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDI0MiwgCisgICAgMjI4LCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MSwgMTAsIDIsIDI1MCwgMTc5LCAxMCwgMiwgMjUwLCAKKyAgICAxNzUsIDEwLCAyLCAyNDksIDEzNiwgMTAsIDIsIDI0OSwgMTE4LCAxMCwgMiwgMjQ5LCAxMTIsIDEwLCAyLCAyNDksIDEwNSwgCisgICAgMTAsIDIsIDI0OSwgOTksIDEwLCAyLCAyNDksIDEwMCwgMTE5LCAyNDksIDk5LCAxMCwgMiwgMjQ5LCA5OCwgMTAsIDIsIAorICAgIDE0OCwgMTAsIDIsIDI0OSwgNzYsIDEwLCAyLCAyNDgsIDE4OCwgMTAsIDIsIDI0OCwgMTg5LCAyNCwgNjIsIDEwLCAyLCAKKyAgICAyNDgsIDE4OSwgMjQsIDIzNiwgNDksIDEwLCAyLCAyNDgsIDE4OSwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMjQ4LCAzNiwgMTAsIDIsIDI0OCwgMzcsIDExOSwgMjQ4LCAzNywgMjUyLCA4OSwgMTAsIDIsIDI0OCwgMzcsIDExOSwgMjQ4LCAKKyAgICAzNywgMjA0LCA1LCAxMCwgMiwgMjQ4LCAzNywgMjQyLCAyMjgsIDI0OCwgMzYsIDEwLCAyLCAyNDgsIDE0LCAxMCwgMiwgCisgICAgMjQ4LCAxNSwgMTE5LCAyNDgsIDE0LCAxMCwgMiwgMjQ4LCAzLCAxMCwgMiwgMjQ4LCAyLCAxMCwgMiwgMjQyLCA1OCwgMTAsIAorICAgIDIsIDI0MiwgNDgsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDM1LCA5MywgMjIyLCAxMzUsIDEwLCAyLCAyNDIsIAorICAgIDQ5LCAyMjYsIDEzMiwgMjQsIDI1MSwgOTcsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDI0OSwgOTgsIDEwLCAyLCAKKyAgICAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMzYsIDg5LCAKKyAgICAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMzYsIDkwLCA5MywgMjIyLCAxMzUsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIAorICAgIDEzMiwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMzUsIDE0MywgMTAsIDIsIDI0MiwgCisgICAgNDksIDIyNiwgMTMyLCAyNCwgMjM1LCAzOSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMTQ0LCAxMCwgMiwgMjQyLCAKKyAgICA0OSwgMjI2LCAxMzIsIDI0LCAyMjgsIDM1LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjgsIDM2LCA5MywgCisgICAgMjI0LCA0MiwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI3LCA3NiwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAKKyAgICAyNCwgMTk0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjQsIDQyLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIAorICAgIDI0LCAyMjQsIDQzLCA5MywgMjIyLCAxMzQsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyNCwgMjUsIDEwLCAyLCAKKyAgICAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyMCwgMzQsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIxNiwgMTM2LCAKKyAgICA5MywgMjE2LCAxMzUsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwOSwgMTgyLCAxMCwgMiwgMjQyLCA0OSwgCisgICAgMjI2LCAxMzIsIDI0LCAyMDcsIDAsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwNCwgNDgsIDkzLCAyMzUsIAorICAgIDE0MywgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjAzLCAxOTAsIDEwLCAyLCAyNDIsIDIwLCAxMCwgMiwgMjQxLCAKKyAgICAyNTQsIDEwLCAyLCAyNDEsIDI1MywgMTAsIDIsIDI0MSwgMjUyLCAxMCwgMiwgMjQxLCA3NiwgMTAsIDIsIDI0MSwgNTgsIAorICAgIDEwLCAyLCAyNDEsIDMxLCAxMCwgMiwgMjQxLCAzMiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyNDEsIDI5LCAxMCwgMiwgMjQxLCAKKyAgICAxOSwgMTAsIDIsIDI0MSwgMjAsIDIyNywgMzksIDEwOCwgMjM1LCAyOSwgMjQwLCAyNTUsIDEwLCAyLCAyNDAsIDI1NSwgMTAsIAorICAgIDIsIDIzOSwgMTM3LCAxMCwgMiwgMjM5LCAxMzgsIDExOSwgMjM5LCAxMzcsIDEwLCAyLCAyMzksIDEzOCwgMjM1LCAyOCwgCisgICAgMTAsIDIsIDIzOSwgMTM4LCAyMTAsIDQ2LCAxMCwgMiwgMjM5LCAxMzUsIDEwLCAyLCAyMzksIDEzNiwgMjQsIDIzOCwgOTEsIAorICAgIDEwLCAyLCAyMzksIDEzNCwgMTAsIDIsIDIzOSwgMTMxLCAxMCwgMiwgMjM5LCAxMzAsIDEwLCAyLCAyMzksIDEyOSwgMTAsIAorICAgIDIsIDIzOSwgMTI1LCAxMCwgMiwgMjM5LCAxMjMsIDEwLCAyLCAyMzksIDEyNCwgMjM1LCAyOCwgMTAsIDIsIDIzOSwgMTI0LCAKKyAgICAyMzUsIDI5LCAyMzUsIDI4LCAxMCwgMiwgMjM5LCAxMjIsIDEwLCAyLCAyMzksIDExNSwgMTAsIDIsIDcyLCAxMCwgMiwgCisgICAgMTk3LCAyNCwgMjE2LCAxMzUsIDEwLCAyLCAxOTcsIDExOSwgMTk3LCAyMTgsIDkwLCAxMTksIDIxOCwgODksIDEwLCAyLCAKKyAgICAyMzksIDI4LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDM1LCA5MywgMjM0LCAyMzYsIDkzLCAyNDIsIDU4LCAxMCwgMiwgMjM5LCAKKyAgICAyOSwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMzksIDI5LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMzksIDI5LCAyNCwgMjEyLCAKKyAgICAzNSwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDY2LCAxMCwgMiwgMjM5LCAxLCAKKyAgICAxMCwgMiwgMjM4LCAyNDUsIDEwLCAyLCAyMzgsIDIwOSwgMTAsIDIsIDIzOCwgMTc5LCAxMCwgMiwgMjM4LCAxODAsIDI0LCAKKyAgICAyMzYsIDU3LCAxMCwgMiwgMjM4LCAxODAsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzOCwgMTgwLCAyNCwgCisgICAgMjIyLCA3NiwgMTAsIDIsIDIzOCwgMTgwLCAyNDIsIDIyOCwgMjM4LCAxNzksIDEwLCAyLCAyMzgsIDE4MCwgMjE3LCA0MCwgCisgICAgMjM4LCAxNzksIDEwLCAyLCAyMzgsIDE4MCwgMjA4LCAxOTIsIDEwLCAyLCAyMzgsIDExMiwgMTAsIDIsIDIzOCwgMTA5LCAKKyAgICAxMCwgMiwgMjM4LCA5MSwgMTAsIDIsIDIzOCwgMTAsIDEwLCAyLCAyMzgsIDExLCAyNCwgNjIsIDEwLCAyLCAyMzgsIDExLCAKKyAgICAyNCwgMzUsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDM1LCA5MywgMjI1LCA5NCwgMjQsIDIyNSwgOTMsIAorICAgIDEwLCAyLCAyMzgsIDExLCAyNCwgMjUxLCA4NSwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzOCwgCisgICAgMTEsIDI0LCAyMzksIDEyNCwgMjM1LCAyOCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMzksIDEyNCwgMjM1LCAyOSwgMjM1LCAKKyAgICAyOCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAxNDQsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjM0LCAyMzYsIDIzNSwgMjgsIDEwLCAKKyAgICAyLCAyMzgsIDExLCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI3LCAzOCwgMTAsIDIsIAorICAgIDIzOCwgMTEsIDI0LCAyMjcsIDM5LCAyMDgsIDE5MiwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjYsIDEzLCAxMCwgMiwgMjM4LCAKKyAgICAxMSwgMjQsIDE5NCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjUsIDk0LCAyNCwgMjI1LCA5MywgMTAsIDIsIDIzOCwgMTEsIAorICAgIDI0LCAyMjQsIDIxMCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjQsIDQyLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIwNCwgNDcsIAorICAgIDEwLCAyLCAyMzgsIDExLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIzNiwgODksIDEwLCAyLCAyMzYsIDkwLCAyMzUsIDI4LCAxMCwgCisgICAgMiwgMjM2LCA4NywgMTAsIDIsIDIzNiwgODgsIDI0LCAzNSwgOTMsIDI0MiwgNTksIDkzLCAxNDQsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMzUsIDkzLCAxNDQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMzUsIDkzLCAyMjgsIDE1MywgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyNTIsIDcsIDIwNiwgMTU2LCA5MywgMjA3LCAyNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNTEsIDg1LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI1MCwgMTgwLCA5MywgMjM2LCA3MSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDksIDc3LCA5MywgMjEzLCAyNTIsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjQ4LCAzLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0OCwgNCwgOTMsIDIxMywgMjUyLCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0MiwgNTgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjQxLCA3NiwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyNDEsIDMyLCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzksIDEzNSwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyMzgsIDIwOSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzgsIDIxMCwgOTMsIDE5NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzgsIAorICAgIDE3OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzgsIDE4MCwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjM1LCAxNjEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM1LCAxNTksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM1LCAxNjAsIDkzLCAKKyAgICA2MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzUsIDE0NCwgOTMsIDIwOCwgMjQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM0LCAKKyAgICAyMzYsIDkzLCAyMjQsIDQzLCA5MywgMjM4LCA5MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzQsIDIxNiwgMTAsIDIsIDIzNiwgCisgICAgODgsIDI0LCAyMzQsIDIxNywgOTMsIDE5NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzQsIDc2LCA5MywgMjI0LCAyMTAsIDEwLCAKKyAgICAyLCAyMzYsIDg4LCAyNCwgMjMzLCA5MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjgsIDIxLCA5MywgMjMzLCA5OCwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNywgCisgICAgNzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjYsIDE1NywgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjYsIDE1OCwgOTMsIDIyNSwgOTMsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI2LCAxNCwgOTMsIDI1MSwgCisgICAgODUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMTk0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIDE3OSwgCisgICAgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjM2LCAKKyAgICA4OCwgMjQsIDIxOCwgOTAsIDExOSwgMjE4LCA4OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAxNzIsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjEyLCAzNSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTIsIDAsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEwLCA2NSwgMTAsIAorICAgIDIsIDIzNiwgODgsIDI0LCAyMTAsIDY2LCA5MywgMjA0LCAxOTIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEwLCAzMSwgMTAsIAorICAgIDIsIDIzNiwgODgsIDI0LCAyMDcsIDIzNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgNjYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMDQsIDM3LCA5MywgMjM5LCAKKyAgICAxMzcsIDEwLCAyLCAyMzYsIDg4LCAxMTksIDIzNiwgODcsIDEwLCAyLCAyMzYsIDgyLCAxMCwgMiwgMjM2LCA4MywgMjQyLCAKKyAgICAyMjgsIDIzNiwgODIsIDEwLCAyLCAyMzYsIDgwLCAxMCwgMiwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAxMTksIAorICAgIDIzNiwgNDksIDEwLCAyLCAyMzYsIDcxLCAxMCwgMiwgMjM2LCA3MiwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAKKyAgICAxMTksIDIzNiwgNDksIDEwLCAyLCAyMzYsIDcwLCAxMCwgMiwgMjM2LCA2OCwgMTAsIDIsIDIzNiwgNTksIDEwLCAyLCAyMzYsIAorICAgIDU3LCAxMCwgMiwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzYsIDU4LCAxMTksIDIzNiwgNTcsIDEwLCAyLCAyMzYsIAorICAgIDU4LCAyNDIsIDIyOCwgMjM2LCA1NywgMTAsIDIsIDIzNiwgNDksIDEwLCAyLCAyMzYsIDQ4LCAxMCwgMiwgMjM2LCA0MywgCisgICAgMTAsIDIsIDIzNSwgMjQyLCAxMCwgMiwgMjM1LCAyNDMsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzNSwgMTYxLCAxMCwgMiwgCisgICAgMjM1LCAxNjIsIDI0LCA3MiwgMTAsIDIsIDIzNSwgMTYyLCAyNCwgNjYsIDEwLCAyLCAyMzUsIDE2MiwgMjQyLCAyMjgsIAorICAgIDIzNSwgMTYxLCAxMCwgMiwgMjM1LCAxNTksIDEwLCAyLCAyMzUsIDE2MCwgMTE5LCAyMzUsIDE1OSwgMTAsIDIsIDIzNSwgCisgICAgMTYwLCAyNDIsIDIyOCwgMjM1LCAxNTksIDEwLCAyLCAyMzUsIDE1NiwgMTAsIDIsIDIzNSwgMTQzLCAxMCwgMiwgMjM1LCAKKyAgICAxNDQsIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDE0MSwgMTAsIDIsIDIzNSwgMTQyLCAyNCwgMzUsIDkzLCAyMjgsIDE1MywgMTAsIAorICAgIDIsIDIzNSwgMTQyLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzUsIDE0MiwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgCisgICAgMjM1LCAxNDIsIDI0LCAyMjQsIDQzLCA5MywgMjI4LCAxNTMsIDEwLCAyLCAyMzUsIDE0MiwgMjQsIDE3MiwgMTAsIDIsIAorICAgIDIzNSwgMTM3LCAxMCwgMiwgMjM1LCAxMzUsIDEwLCAyLCAyMzUsIDEzNiwgMjQyLCAyMjgsIDIzNSwgMTM1LCAxMCwgMiwgCisgICAgMjM1LCAxMzYsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzNSwgMTM2LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjM1LCAxMzYsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMjM1LCA1MCwgMTAsIDIsIDIzNSwgNTEsIDI0MiwgMjI4LCAyMzUsIDUwLCAxMCwgMiwgMjM1LCAKKyAgICA0OCwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjM1LCA0OSwgMjQsIDIyNywgNzcsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjM1LCA0OSwgMjQsIDIxMiwgMzYsIAorICAgIDkzLCAyMDQsIDIwOSwgMTAsIDIsIDIzNSwgNDksIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDM5LCAxMCwgMiwgMjM1LCA0MCwgCisgICAgMjQsIDM1LCA5MywgMjI1LCAyNDUsIDEwLCAyLCAyMzUsIDQwLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzUsIDQwLCAxMTksIAorICAgIDIzNSwgNDAsIDIyNCwgMzMsIDEwLCAyLCAyMzUsIDMyLCAxMCwgMiwgMjM1LCAzMCwgMTAsIDIsIDIzNSwgMzEsIDI0LCAKKyAgICAyMTAsIDY1LCAxMCwgMiwgMjM1LCAyMiwgMTAsIDIsIDIzNSwgMjEsIDEwLCAyLCAyMzUsIDE3LCAxMCwgMiwgMjM1LCAxNiwgCisgICAgMTAsIDIsIDE0NCwgMTAsIDIsIDIzNCwgMjM2LCAyMDYsIDE1NSwgMTAsIDIsIDIzNCwgMjM2LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMjM0LCAyMTYsIDEwLCAyLCAyMzQsIDc1LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM0LCA3NiwgCisgICAgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI0MCwgMjU1LCAKKyAgICAxMCwgMiwgMjM0LCA3NiwgMjQsIDIzNiwgODAsIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjI2LCAxNDcsIDEwLCAyLCAyMzQsIAorICAgIDc2LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDY2LCAxMCwgCisgICAgMiwgMjMzLCA5NywgMTAsIDIsIDIzMywgOTIsIDEwLCAyLCAyMzMsIDkzLCAyNCwgMjUxLCA4NSwgMTAsIDIsIDIzMywgOTMsIAorICAgIDI0LCAyMzQsIDIxNiwgMTAsIDIsIDIzMywgOTMsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjMzLCA5MywgMjQsIDIyNCwgMTU0LCAKKyAgICAxMCwgMiwgMjMzLCA5MywgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzMsIDg4LCAxMCwgMiwgNzAsIDEwLCAyLCAyMzMsIDE5LCAKKyAgICA2MiwgMTAsIDIsIDIzMiwgMjM1LCAxMCwgMiwgMjI4LCAxODEsIDEwLCAyLCAyMjgsIDE4MiwgMTE5LCAyMjgsIDE4MiwgCisgICAgMjQ4LCAzLCAxMCwgMiwgMjI4LCAxODIsIDExOSwgMjI4LCAxODIsIDIwOCwgMTkyLCAxMCwgMiwgMjI4LCAxNTYsIDEwLCAyLCAKKyAgICAyMjgsIDE1MywgMTAsIDIsIDIyOCwgMTU0LCAyNDEsIDU4LCAxMCwgMiwgMjI4LCAxNTQsIDIxMywgODgsIDEwLCAyLCAyMjgsIAorICAgIDE1NCwgMTE5LCAyMjgsIDE1NCwgMjEwLCAxNSwgMTE5LCAyMTAsIDE1LCAyMDQsIDM3LCAxMTksIDIwNCwgMzYsIDEwLCAyLCAKKyAgICAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIyOCwgMTQ1LCAxMCwgMiwgMjI4LCAxNDYsIDI0LCAyMzYsIDU4LCAyMDYsIAorICAgIDE1NSwgMTAsIDIsIDIyOCwgMTQ0LCAxMCwgMiwgMjI4LCAxMzQsIDEwLCAyLCAyMjgsIDEzNSwgMjQsIDIwNywgMCwgMTAsIAorICAgIDIsIDIyOCwgMTM1LCAyNDIsIDIyOCwgMjI4LCAxMzQsIDEwLCAyLCAyMjgsIDEzNSwgMjE3LCA0MCwgMjI4LCAxMzQsIDEwLCAKKyAgICAyLCAyMjgsIDEzNSwgMjA4LCAxOTIsIDEwLCAyLCAyMjgsIDEyNywgMTAsIDIsIDIyOCwgMTE3LCAxMCwgMiwgMjI4LCAzNSwgCisgICAgMTAsIDIsIDIyOCwgMjAsIDEwLCAyLCAxNjEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDYyLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAKKyAgICAyNTEsIDIzNSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjUxLCAyMzYsIDkzLCAyMjYsIDEzLCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OSwgCisgICAgOTgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE0OCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIzOCwgMTA5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzgsIDkxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAKKyAgICAyMzYsIDg5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzYsIDcxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzYsIDU4LCAyMDYsIAorICAgIDE1NSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA1MCwgOTMsIDIxMCwgCisgICAgMTEzLCA5MywgNjIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIAorICAgIDE0MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAxMzYsIDkzLCAyMTIsIDAsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgCisgICAgMTM2LCAyNDIsIDIyOCwgMjM1LCAxMzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgNTAsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIzNSwgMjEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjgsIAorICAgIDEzNCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI2LCAxNjMsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDIyNiwgMTU3LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjQsIDIxMCwgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjI0LCA0MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIyLCA3NiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIyLCA3NywgCisgICAgOTMsIDIzOSwgMTM3LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjIsIDc3LCA5MywgMjM1LCAxNjEsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIyMiwgNzcsIDkzLCAyMDYsIDIwMSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDIyMSwgMjEyLCA5MywgMjE4LCA4NCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIwLCAzNCwgMTAsIDIsIAorICAgIDIyNywgMTA4LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjE1LCAyMDQsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIxMiwgMTc1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTIsIDY0LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTIsIDAsIAorICAgIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxMCwgMTE0LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMTAsIDMxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDksIDIyMCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjA5LCAxNjgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNywgMjQzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDYsIDIzMiwgCisgICAgMTAsIDIsIDIyNywgMTA4LCAyNCwgNjYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNCwgNDcsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNCwgOCwgMjQsIDE3MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjAzLCAxOTAsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE5OSwgMzYsIDEwLCAyLCAyMjcsIDEwNiwgMTAsIDIsIDIyNywgMTA3LCAKKyAgICAyNDIsIDIyOCwgMjI3LCAxMDYsIDEwLCAyLCAyMjcsIDk2LCAxMCwgMiwgMjI3LCA5MywgMTAsIDIsIDIyNywgOTEsIDEwLCAKKyAgICAyLCAyMjcsIDkwLCAxMCwgMiwgMjI3LCA4OCwgMTAsIDIsIDIyNywgODksIDExOSwgMjI3LCA4OCwgMTAsIDIsIDIyNywgNzYsIAorICAgIDEwLCAyLCAyMjcsIDc3LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMjcsIDcyLCAxMCwgMiwgMjI3LCA3MywgCisgICAgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI3LCA3MywgMjQyLCAyMjgsIDIyNywgNzIsIDEwLCAyLCAyMjcsIDcwLCAxMCwgMiwgCisgICAgMjI3LCA2OSwgMTAsIDIsIDIyNywgMzgsIDEwLCAyLCAyMjcsIDM5LCAyMjUsIDE1OCwgMjQsIDEwOCwgMTE5LCAyMjUsIAorICAgIDE1OCwgMjQsIDY2LCAxMCwgMiwgMjI3LCAzOSwgMTE5LCAyMjcsIDM5LCAyMjUsIDE1OCwgMjQsIDEwOCwgMTE5LCAyMjUsIAorICAgIDE1OCwgMjQsIDY2LCAxMCwgMiwgMjI2LCAyMzQsIDEwLCAyLCAyMjYsIDE2MywgMTAsIDIsIDIyNiwgMTY0LCAyNCwgMjQ5LCAKKyAgICAxMTgsIDEwLCAyLCAyMjYsIDE2NCwgMjQsIDY2LCAxMCwgMiwgMjI2LCAxNjQsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI2LCAKKyAgICAxNTcsIDEwLCAyLCAyMjYsIDE0NywgMTAsIDIsIDIyNiwgMTM0LCAxMCwgMiwgMjI2LCAxMzMsIDEwLCAyLCAyMjYsIDEzMSwgCisgICAgMTAsIDIsIDIyNiwgMTMyLCAxMTksIDIyNiwgMTMxLCAxMCwgMiwgMjI2LCAxNSwgMTAsIDIsIDIyNiwgMTYsIDExOSwgMjM0LCAKKyAgICA3NiwgMjQsIDI1MCwgMTgwLCAyMjYsIDE2LCAxMTksIDIzNCwgNzYsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIyNiwgMTMsIAorICAgIDEwLCAyLCAyMjYsIDExLCAxMCwgMiwgMjI2LCAxMiwgMjAzLCA3MywgMTksIDEwLCAyLCAyMjYsIDEwLCAxMCwgMiwgMjI2LCAKKyAgICAyLCAxMCwgMiwgMjI2LCAzLCAyMzUsIDI4LCAxMCwgMiwgMjI2LCAxLCAxMCwgMiwgMjI1LCAyNDUsIDEwLCAyLCAyMjUsIAorICAgIDI0NiwgMjE3LCA0MCwgMjI1LCAyNDUsIDEwLCAyLCAyMjUsIDIzOSwgMTAsIDIsIDIyNSwgMjE3LCAxMCwgMiwgMTk0LCAxMCwgCisgICAgMiwgMjI1LCAxNTcsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDYyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAzNSwgOTMsIDI0MiwgCisgICAgNTksIDkzLCAxNDQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDM1LCA5MywgMjM2LCA0OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgCisgICAgMzUsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNTEsIDE1MSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjUxLCAKKyAgICA4NSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjUwLCAxODIsIDE5OSwgMzIsIDIwNiwgMTU1LCAxMCwgMiwgMjI1LCAxNTgsIAorICAgIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI0MSwgCisgICAgMjU0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzgsIDE3OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM2LCA4OSwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgCisgICAgMjM1LCA0MCwgOTMsIDIzNSwgMzksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDE0NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM0LCAKKyAgICAyMTYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNCwgNzYsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAxMzQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyOCwgCisgICAgMTM1LCA5MywgMTQ0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIDEzNSwgOTMsIDIyNCwgNDIsIDEwLCAyLCAyMjUsIAorICAgIDE1OCwgMjQsIDIyNiwgMTYzLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjYsIDE0NywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgCisgICAgMjI2LCAxMywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI2LCAyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjYsIDMsIDkzLCAKKyAgICAyMzQsIDc2LCA5MywgNjIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNSwgMTU3LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjQsIAorICAgIDE1NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI0LCA0MiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI0LCAyNywgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMjIyLCA3NiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjIyLCA3NywgOTMsIDIzOCwgMTc5LCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAyMjAsIDI1MCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjIwLCAzNCwgMTAsIDIsIDIyNSwgMTU4LCAKKyAgICAyNCwgMjEwLCA2NiwgOTMsIDIwNywgMjM0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMTAsIDExLCA5MywgMjM1LCAxMzYsIAorICAgIDkzLCAyMzgsIDEwOSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjEwLCAxMSwgOTMsIDIzNSwgMTM2LCAyMDYsIDE1NSwgMTAsIAorICAgIDIsIDIyNSwgMTU4LCAyNCwgMjA5LCAyMTgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwOSwgMjE5LCA5MywgMjA5LCAyMTgsIAorICAgIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNywgMjM0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDcsIDEzLCAxMCwgMiwgMjI1LCAKKyAgICAxNTgsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNiwgMjAyLCA5MywgMzUsIDkzLCAyMDgsIDI1LCA5MywgCisgICAgMTg4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCA2NiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMTA4LCA5MywgNjIsIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDY2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDQsIDQ4LCA5MywgCisgICAgMjUwLCAxODEsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwMywgMTkwLCAKKyAgICAxMCwgMiwgMjI1LCAxNTgsIDIwOCwgMTkyLCAxMCwgMiwgMjI1LCAxNTUsIDEwLCAyLCAyMjUsIDE1NiwgMjQsIDIxMCwgNjUsIAorICAgIDEwLCAyLCAyMjUsIDE1NiwgMjQsIDIxMCwgNjYsIDkzLCAyMDcsIDIzNCwgMTAsIDIsIDIyNSwgMTU2LCAyMzUsIDI4LCAxMCwgCisgICAgMiwgMjI1LCAxNTYsIDIzNSwgMjksIDExOSwgMjI1LCAxNTYsIDIzNSwgMjksIDIxMCwgNjUsIDEwLCAyLCAyMjUsIDE1MSwgCisgICAgMTAsIDIsIDIyNSwgOTMsIDEwLCAyLCAyMjUsIDk0LCAyNCwgMjI1LCA5MywgMTAsIDIsIDIyNSwgOTEsIDEwLCAyLCAyMjUsIAorICAgIDkyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMjUsIDkyLCAyNCwgMjI1LCAyNDYsIDkzLCAyMTIsIDE3NSwgMTAsIDIsIDIyNCwgCisgICAgMjEwLCAxMCwgMiwgMjI0LCAxOTEsIDEwLCAyLCAyMjQsIDE3OSwgMTAsIDIsIDIyNCwgMTU0LCAxMCwgMiwgMjI0LCA0MiwgCisgICAgMTAsIDIsIDIyNCwgNDMsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNCwgNDAsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjUxLCAKKyAgICAxNTEsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM4LCA5MSwgMTAsIDIsIAorICAgIDIyNCwgNDEsIDI0LCAyMzgsIDkyLCAyMDYsIDE1NSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgCisgICAgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzQsIDc2LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI4LCAxMzQsIAorICAgIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI3LCA5MywgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjcsIDkxLCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIyNywgOTIsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjYsIDE2MywgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMjUsIDE3NiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyNSwgMTU3LCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIDE3OSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIxOCwgMTMzLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIwOSwgMTgzLCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjA5LCAxNjAsIDkzLCAyNDgsIDM2LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIwNCwgMjA5LCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAyMjQsIDQxLCAyNDIsIDIyOCwgMjI0LCA0MCwgMTAsIDIsIDIyNCwgNDEsIDIxNywgNDAsIAorICAgIDIyNCwgNDAsIDEwLCAyLCAyMjQsIDQxLCAyMDgsIDE5MiwgMTAsIDIsIDIyNCwgNDEsIDIxMCwgNDYsIDEwLCAyLCAyMjQsIAorICAgIDM5LCAxMCwgMiwgMjI0LCAzMywgMTAsIDIsIDIyNCwgMzQsIDExOSwgMjI0LCAzMywgMTAsIDIsIDIyNCwgMzQsIDIxNywgCisgICAgNDAsIDIyNCwgMzMsIDEwLCAyLCAyMjQsIDM0LCAyMTAsIDQ2LCAxMCwgMiwgMjI0LCAzMCwgMTAsIDIsIDIyNCwgMjcsIDEwLCAKKyAgICAyLCAyMjQsIDI1LCAxMCwgMiwgMjI0LCAyNiwgMTE5LCAyMjQsIDI1LCAxMCwgMiwgMjI0LCAyNiwgMTE5LCAyMjQsIDI2LCAKKyAgICAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAxNzgsIDEwLCAyLCAyMjIsIDIzNSwgMjQsIDIwNywgMCwgMTAsIDIsIAorICAgIDIyMiwgMjM1LCAyMzUsIDI4LCAxMCwgMiwgMjIyLCAyMzQsIDEwLCAyLCAyMjIsIDIwNiwgMTAsIDIsIDIyMiwgMTU4LCAxMCwgCisgICAgMiwgMjIyLCAxMzUsIDEwLCAyLCAyMjIsIDEzNCwgMTAsIDIsIDIyMiwgNzYsIDEwLCAyLCAyMjIsIDI4LCAxMCwgMiwgMjIxLCAKKyAgICAyMTEsIDEwLCAyLCAyMjEsIDE2NCwgMTAsIDIsIDIyMSwgNDEsIDEwLCAyLCAyMjEsIDQyLCAxMTksIDIyMSwgNDEsIDEwLCAKKyAgICAyLCAyMjEsIDMwLCAxMCwgMiwgMjIxLCAzMSwgMjM1LCAyOCwgMTAsIDIsIDIyMSwgMTIsIDEwLCAyLCAyMjAsIDI1NCwgMTAsIAorICAgIDIsIDIyMCwgMjUwLCAxMCwgMiwgMjIwLCAyNTEsIDI0LCA2MiwgMTAsIDIsIDIyMCwgMjUxLCAyNCwgMjI1LCAyNDUsIDEwLCAKKyAgICAyLCAyMjAsIDI1MSwgMjQsIDE5OSwgMTE0LCAxMCwgMiwgMjIwLCAyNTEsIDExOSwgMjIwLCAyNTAsIDEwLCAyLCAyMjAsIAorICAgIDI1MSwgMTE5LCAyMjAsIDI1MSwgMjQsIDM1LCA5MywgMTg4LCAxMCwgMiwgMjIwLCAyNTEsIDI0MiwgMjI4LCAyMjAsIDI1MCwgCisgICAgMTAsIDIsIDIyMCwgMjQ4LCAxMCwgMiwgMjIwLCAyNDksIDI0LCA2MiwgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgMzUsIDkzLCAKKyAgICAyNDEsIDc2LCAxMCwgMiwgMjIwLCAyNDksIDI0LCAyNDEsIDc2LCAxMCwgMiwgMjIwLCAyNDksIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAxODgsIDEwLCAyLCAyMjAsIDE2MCwgMTAsIDIsIDIyMCwgMTQ3LCAxMCwgMiwgMjIwLCAxNDgsIDIyOCwgNDksIDEwLCAyLCAKKyAgICAyMjAsIDE0OCwgMjQsIDIwOSwgMjIxLCAyMDYsIDE1NSwgMTAsIDIsIDIyMCwgMTQ4LCAyMTcsIDQwLCAyMjAsIDE0NywgMTAsIAorICAgIDIsIDIyMCwgMTQ2LCAxMCwgMiwgMjIwLCAxMzksIDIxOCwgNzUsIDEwLCAyLCAyMjAsIDEzOCwgMTAsIDIsIDIyMCwgMTM3LCAKKyAgICAxMCwgMiwgMjIwLCAzNCwgMTAsIDIsIDIyMCwgMzUsIDI0LCA2MiwgMTAsIDIsIDIyMCwgMzUsIDI0LCAyMDQsIDM2LCAxMCwgCisgICAgMiwgMjIwLCAzNSwgMjEwLCA0NiwgMTAsIDIsIDIxOSwgMTUwLCAxMCwgMiwgMjE5LCAxNTEsIDI0LCA3MiwgMTAsIDIsIAorICAgIDIxOSwgMTQ5LCAxMCwgMiwgMjE5LCAxMTksIDEwLCAyLCAyMTksIDEyMCwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgCisgICAgMjE5LCAxMjAsIDI0LCAyMzYsIDUwLCA5MywgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMTksIDExNSwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMjUxLCA4NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMTksIDExNiwgCisgICAgMjQsIDI1MCwgMTgyLCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDIyMiwgNzcsIDkzLCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjIwLCAzNCwgCisgICAgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIxOSwgCisgICAgMTE2LCAyNCwgMjEwLCA2NiwgOTMsIDM1LCAyNTEsIDg1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMTAsIDY2LCA5MywgMjUwLCAKKyAgICAxODEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxMCwgNjYsIDkzLCAyNTAsIDE4MiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgCisgICAgMjE5LCAxMTYsIDI0LCAyMDQsIDQ4LCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIwMywgMTkwLCAxMCwgCisgICAgMiwgMjE5LCAxMDMsIDEwLCAyLCAyMTgsIDEzMywgMTAsIDIsIDIxOCwgMTA1LCAxMCwgMiwgMjE4LCA4OSwgMTAsIDIsIAorICAgIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjIyLCAxMzUsIAorICAgIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIxMiwgMzUsIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIxMiwgCisgICAgMzYsIDExOSwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAKKyAgICAyMDMsIDE5MCwgMTAsIDIsIDIxOCwgOTAsIDIwNiwgMTU1LCAxMCwgMiwgMjE4LCA5MCwgMTE5LCAyMTgsIDg5LCAxMCwgMiwgCisgICAgMjE4LCA5MCwgMjQyLCAyMjgsIDIxOCwgODksIDEwLCAyLCAyMTgsIDkwLCAyNDIsIDIyOCwgMjE4LCA5MCwgMjI1LCAxNTYsIAorICAgIDExOSwgMjI1LCAxNTUsIDEwLCAyLCAyMTgsIDg0LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjUwLCAxNzUsIDEwLCAKKyAgICAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIzOSwgMTMxLCAKKyAgICAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjI3LCA5MSwgMTAsIDIsIDIxOCwgODUsIDI1MiwgCisgICAgNywgMjQsIDE5NCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIAorICAgIDI0LCAyMDksIDE1NywgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIwNCwgNDcsIDEwLCAyLCAyMTgsIDg1LCAyMjYsIAorICAgIDEzMiwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjE4LCA4NSwgMjI2LCAxMzIsIDI0LCAyNDgsIDE4OSwgNjYsIDEwLCAyLCAKKyAgICAxNzIsIDEwLCAyLCAyMTYsIDIwMSwgMTAsIDIsIDIxNiwgMTYyLCAxMCwgMiwgMjE2LCAxMzUsIDEwLCAyLCAyMTYsIDMsIAorICAgIDEwLCAyLCAyMTUsIDIwNCwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgNjIsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDI1MiwgODksIAorICAgIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyNDgsIDM2LCAxMCwgMiwgMjE1LCAKKyAgICAyMDUsIDI0LCA3MiwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgNzAsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDIzMiwgMjM1LCAxMCwgCisgICAgMiwgMjE1LCAyMDUsIDI0LCA2NiwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjA0LCA0NywgMTAsIDIsIDIxNSwgMjA1LCAyNDIsIAorICAgIDIyOCwgMjE1LCAyMDQsIDEwLCAyLCAyMTUsIDE0NiwgMTAsIDIsIDIxNSwgMTQ3LCAyNCwgMjI3LCA3MiwgMTAsIDIsIDIxNSwgCisgICAgMTQ3LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIxNSwgMTQ3LCAyNCwgMTk5LCAxMTQsIDEwLCAyLCAyMTUsIDE0NywgMjE3LCAKKyAgICA0MCwgMjE1LCAxNDYsIDEwLCAyLCAyMTMsIDI1MiwgMTAsIDIsIDIxMywgMjQ2LCAxMCwgMiwgMjEzLCA4OCwgMTAsIDIsIAorICAgIDIxMiwgMTc1LCAxMCwgMiwgMjEyLCA2NCwgMTAsIDIsIDIxMiwgNTEsIDIxOCwgNzUsIDEwLCAyLCAyMTIsIDUwLCAxMCwgMiwgCisgICAgMjEyLCA1MSwgMjQsIDYyLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIzOSwgMTM3LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIzOSwgCisgICAgMTM1LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDE0NCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjEyLCAKKyAgICA1MSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyNCwgMjUsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjIxLCAKKyAgICAyMTEsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMTIsIDM1LCAxMCwgMiwgCisgICAgMjEyLCA1MSwgMjQsIDIxMCwgMzEsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA3LCAyNCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAKKyAgICAyMDQsIDQ3LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNCwgNDIsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA0LCAxMiwgMTAsIDIsIAorICAgIDIxMiwgNTEsIDI0LCAyMDMsIDIxNCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDMsIDE5MCwgMTAsIDIsIDIxMiwgNTEsIDExOSwgCisgICAgMjEyLCA1MCwgMTAsIDIsIDIxMiwgNTEsIDIzNSwgMjgsIDEwLCAyLCAyMTIsIDM1LCAxMCwgMiwgMjEyLCAzNiwgMjI1LCAKKyAgICAxNTgsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIxMiwgOCwgMTAsIDIsIDIxMiwgMCwgMTAsIDIsIDIxMCwgMTE0LCAxMCwgMiwgCisgICAgMjEwLCAxMTIsIDEwLCAyLCAyMTAsIDExMywgMjQsIDYyLCAxMCwgMiwgMjEwLCAxMTMsIDI0LCAyNDksIDExOCwgMTAsIDIsIAorICAgIDIxMCwgMTEzLCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMTAsIDExMywgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMTAsIDExMywgCisgICAgMjQsIDIwOSwgMjE4LCAxMCwgMiwgMjEwLCAxMTMsIDI0LCAyMDQsIDE5MiwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgNjYsIDEwLCAKKyAgICAyLCAyMTAsIDExMywgMjQsIDEwOCwgOTMsIDYyLCAxMCwgMiwgMjEwLCAxMTAsIDEwLCAyLCAyMTAsIDEwOCwgMTAsIDIsIAorICAgIDIxMCwgODIsIDEwLCAyLCAyMTAsIDY1LCAxMCwgMiwgMjEwLCA2NiwgMjMzLCA5NywgMTAsIDIsIDIxMCwgNjYsIDExOSwgCisgICAgMjEwLCA2NiwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAyMTAsIDY2LCAKKyAgICAxMTksIDIxMCwgNjYsIDIwNywgMjUsIDExOSwgMjA3LCAyNSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjEwLCAKKyAgICA1OCwgMTAsIDIsIDIxMCwgNTMsIDEwLCAyLCAyMTAsIDQ5LCAxMCwgMiwgMjEwLCA0OCwgMTAsIDIsIDIxMCwgNDUsIDEwLCAKKyAgICAyLCAyMTAsIDMxLCAxMCwgMiwgMjEwLCAzMiwgMjQsIDYyLCAxMCwgMiwgMjEwLCAzMiwgMjQsIDIyOCwgMTM0LCAxMCwgMiwgCisgICAgMjEwLCAyNSwgMTAsIDIsIDIxMCwgMjYsIDI0LCA2MiwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyNDksIDk5LCAxMCwgMiwgMjEwLCAKKyAgICAyNiwgMjQsIDI0OCwgMTQsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjQxLCAxOSwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMzYsIAorICAgIDQ5LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAKKyAgICAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyNSwgMjM5LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyNCwgMjcsIDEwLCAyLCAyMTAsIAorICAgIDI2LCAyNCwgMjIxLCAzMCwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjEwLCAxOSwgMTAsIDIsIDIxMCwgCisgICAgMTQsIDEwLCAyLCAyMTAsIDE1LCAyMDYsIDE1NSwgMTAsIDIsIDIxMCwgMTUsIDExOSwgMjEwLCAxNSwgMjQ4LCA0LCAxMTksIAorICAgIDI0OCwgMywgMTAsIDIsIDIxMCwgMTAsIDEwLCAyLCAyMDksIDIyMCwgMTAsIDIsIDIwOSwgMjIxLCAxMTksIDIyOCwgNTAsIAorICAgIDIwOSwgMjIwLCAxMCwgMiwgMjA5LCAyMTgsIDEwLCAyLCAyMDksIDIxNywgMTAsIDIsIDIwOSwgMTgyLCAxMCwgMiwgMjA5LCAKKyAgICAxODMsIDIzNSwgMjgsIDEwLCAyLCAyMDksIDE2OCwgMTAsIDIsIDIwOSwgMTY2LCAxMCwgMiwgMjA5LCAxNjcsIDExOSwgCisgICAgMjA5LCAxNjcsIDIwOSwgMjE4LCAxMCwgMiwgMjA5LCAxNTksIDEwLCAyLCAyMDksIDE1NywgMTAsIDIsIDIwOCwgMjQsIDEwLCAKKyAgICAyLCAyMDgsIDI1LCAxMTksIDIwOCwgMjQsIDEwLCAyLCAyMDcsIDI0NiwgMTAsIDIsIDIwNywgMjQ1LCAxMCwgMiwgMjA3LCAKKyAgICAyNDMsIDEwLCAyLCAyMDcsIDIzNCwgMTAsIDIsIDIwNywgMjMzLCAxMCwgMiwgMjA3LCAyMDcsIDEwLCAyLCAyMDcsIDIwNiwgCisgICAgMTAsIDIsIDIwNywgMzYsIDEwLCAyLCAyMDcsIDM3LCAyNTAsIDE2NSwgMTAsIDIsIDIwNywgMzcsIDI0LCAyMzQsIDc1LCAKKyAgICAxMCwgMiwgMjA3LCAzNywgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjA3LCAzNywgMjM1LCAyOCwgMTAsIDIsIDIwNywgMjQsIAorICAgIDEwLCAyLCAyMDcsIDI1LCAxMTksIDIwNywgMjUsIDIxOSwgMTUxLCAxMTksIDIxOSwgMTUxLCAyNDEsIDAsIDExOSwgMjQwLCAKKyAgICAyNTUsIDEwLCAyLCAyMDcsIDI1LCAyMDgsIDE5MiwgMTAsIDIsIDIwNywgMTMsIDEwLCAyLCAxNjUsIDI0LCAyNDgsIDE4OCwgCisgICAgMTAsIDIsIDE2NSwgMjQsIDIzNSwgMzksIDEwLCAyLCAxNjUsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMTY1LCAyNCwgMjA5LCAKKyAgICAyMjAsIDEwLCAyLCAxNjUsIDI0LCAyMDQsIDIwOSwgMTAsIDIsIDE2NSwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMDcsIDAsIAorICAgIDEwLCAyLCAyMDYsIDIzMiwgMTAsIDIsIDIwNiwgMjAxLCAxMCwgMiwgMjA2LCAyMDIsIDIzNSwgMjgsIDEwLCAyLCAyMDYsIAorICAgIDE1LCAxMCwgMiwgMjA2LCAxNiwgMjA2LCAxNTUsIDEwLCAyLCAyMDUsIDI0MiwgMTAsIDIsIDIwNSwgMjE5LCAxMCwgMiwgCisgICAgMjA1LCAyMjAsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMDUsIDIyMCwgMTE5LCAyMDUsIDIxOSwgMTAsIDIsIDIwNSwgMjIwLCAKKyAgICAxMTksIDIwNSwgMjIwLCAyMzYsIDgxLCAxMTksIDIzNiwgODEsIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDIwNCwgCisgICAgMjE1LCAxMCwgMiwgMjA0LCAyMDksIDEwLCAyLCAyMDQsIDIwNywgMTAsIDIsIDIwNCwgMjAzLCAxMCwgMiwgMjA0LCAxOTIsIAorICAgIDEwLCAyLCAyMDQsIDE5MywgMTE5LCAyMDQsIDE5MywgMTk5LCAxMTUsIDExOSwgMTk5LCAxMTQsIDEwLCAyLCA2NiwgMTAsIAorICAgIDIsIDEwOCwgMjM1LCAzOSwgMTAsIDIsIDEwOCwgMTA4LCA2NiwgMTAsIDIsIDEwOCwgMTE5LCAxMDgsIDIxNiwgMjExLCAKKyAgICAxMTksIDIxNiwgMjExLCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAxMDgsIDExOSwgMTA4LCAyMDcsIDIwOCwgCisgICAgMTE5LCAyMDcsIDIwNywgMTAsIDIsIDEwOCwgMTE5LCAxMDgsIDEwOCwgMjEzLCAxMDUsIDExOSwgMTA4LCAyMTMsIDEwNCwgCisgICAgMTAsIDIsIDIwNCwgNDcsIDEwLCAyLCAyMDQsIDQyLCAxMCwgMiwgMjA0LCAzNiwgMTAsIDIsIDIwNCwgMzcsIDIyNSwgMjM5LCAKKyAgICAxMCwgMiwgMjA0LCAzNywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjA0LCAzNywgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjA0LCAKKyAgICAzNywgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDY2LCAxMCwgMiwgMjA0LCAzNywgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDEwOCwgCisgICAgMjM1LCAyOCwgMTAsIDIsIDIwNCwgMzcsIDIzNSwgMjgsIDEwLCAyLCAyMDQsIDM3LCAyMTAsIDQ2LCAxMCwgMiwgMjA0LCAKKyAgICAzNywgMjEwLCA0NywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjA0LCAzMiwgMTAsIDIsIDIwNCwgMTIsIDEwLCAyLCAyMDQsIAorICAgIDEzLCAyNCwgMjI1LCAxNTcsIDEwLCAyLCAyMDQsIDEzLCAyNCwgMjIyLCA3NywgOTMsIDI0MiwgNTgsIDEwLCAyLCAyMDQsIAorICAgIDEzLCAyNCwgMjEwLCAxMTIsIDEwLCAyLCAyMDQsIDEzLCAyNCwgNjYsIDEwLCAyLCAyMDQsIDExLCAxMCwgMiwgMjA0LCA3LCAKKyAgICAxMCwgMiwgMjA0LCA4LCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIwNCwgOCwgMjQsIDE3MiwgMTAsIDIsIDIwNCwgNSwgMTAsIDIsIAorICAgIDIwNCwgNiwgMjM1LCAyOCwgMTAsIDIsIDIwMywgMjE0LCAxMCwgMiwgMjAzLCAyMTUsIDI0MiwgMjI4LCAyMDMsIDIxNCwgCisgICAgMTAsIDIsIDIwMywgMjE1LCAyMTAsIDQ2LCAxMCwgMiwgMjAzLCAyMTIsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDM1LCA5MywgCisgICAgMTQ0LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAzNSwgOTMsIDE4OCwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjUxLCAxNTEsIDEwLCAKKyAgICAyLCAyMDMsIDIxMywgMjQsIDE0NCwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIwMywgMjEzLCAyNCwgCisgICAgMjA0LCA0NywgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjA0LCA0OCwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAKKyAgICAyMDQsIDQ4LCA5MywgMjQ4LCAxODgsIDEwLCAyLCAyMDMsIDIxMSwgMTAsIDIsIDIwMywgMjA4LCAxMCwgMiwgMjAzLCAyMDcsIAorICAgIDEwLCAyLCAyMDMsIDIwMywgMTAsIDIsIDIwMywgMjA0LCAyNCwgNjIsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDI1MCwgMTc1LCAKKyAgICAxMCwgMiwgMjAzLCAyMDQsIDI0LCAxNDgsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzOSwgMTI1LCAxMCwgMiwgMjAzLCAyMDQsIAorICAgIDI0LCAyMzYsIDg5LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzYsIDcxLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzYsIDU4LCAKKyAgICAyMDYsIDE1NSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM1LCA1MCwgMTAsIAorICAgIDIsIDIwMywgMjA0LCAyNCwgMTQ0LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIwMywgMjA0LCAyNCwgCisgICAgMjI4LCAxMzQsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyOCwgMjAsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyNiwgMTYzLCAKKyAgICAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjQsIDI1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjEsIDE2NCwgMTAsIDIsIDIwMywgCisgICAgMjA0LCAyNCwgMTcyLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDksIAorICAgIDE2NiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjA0LCAyMTUsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDEwOCwgOTMsIDIzNSwgCisgICAgMzksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwMywgMjAxLCAxMCwgMiwgCisgICAgMjAzLCAyMDEsIDEwLCAyLCAyMDMsIDIwMiwgMjQsIDY2LCAxMCwgMiwgMjAzLCAxOTAsIDEwLCAyLCAyMDMsIDE5MSwgMjQsIAorICAgIDYyLCAxMCwgMiwgMjAzLCAxOTEsIDI0LCAyMjYsIDE1LCAxMCwgMiwgMjAzLCAxOTEsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIAorICAgIDIwMywgMTkxLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjAzLCAxODYsIDEwLCAyLCAyMDMsIDE4OSwgMTAsIDIsIDIwMywgMTg3LCAKKyAgICAxMCwgMiwgMjAzLCAxODMsIDEwLCAyLCAyMDMsIDE3MSwgMTAsIDIsIDIwMywgMTcyLCAyNCwgMjI3LCAzOCwgMTAsIDIsIAorICAgIDIwMywgMTcwLCAxMCwgMiwgMTk5LCAxMTQsIDEwLCAyLCAxOTksIDExNSwgMjA2LCAxNTUsIDEwLCAyLCAxOTksIDExNSwgCisgICAgOTUsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDE5OSwgMTEwLCAxMCwgMiwgMTk5LCAxMDIsIDEwLCAyLCAxOTksIDg4LCAxMCwgCisgICAgMiwgMTk5LCAzNiwgMTAsIDIsIDE5OSwgMzcsIDExOSwgMTk5LCAzNiwgMTAsIDIsIDE5OSwgMzUsIDEwLCAyLCAxOTksIDMzLCAKKyAgICAxMCwgMiwgMTk5LCAzNCwgMjI3LCA5NSwgMjA2LCAxNTUsIDEwLCAyLCAxOTksIDI4LCAxMCwgMiwgMTk5LCAxOSwgMTAsIDIsIAorICAgIDE5OSwgMywgMTAsIDIsIDE5OSwgMSwgMTAsIDIsIDE5OSwgMiwgMjQsIDYyLCAxMCwgMiwgMTk5LCAwLCAxMCwgMiwgMTk4LCAKKyAgICAyNTUsIDEwLCAyLCAyMjcsIDYxLCAyMzgsIDIwNiwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjUyLCAKKyAgICA3LCAyNCwgNjIsIDEwLCAyLCAyNTEsIDk4LCAyNCwgMjI2LCA0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDQsIAorICAgIDQ4LCA5MywgMjIyLCAxMzUsIDEwLCAyLCAyNDIsIDQ3LCAxMCwgMiwgMjQxLCAwLCA5MywgMjA5LCAyMjAsIDEwLCAyLCAKKyAgICAyMzksIDEzNiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIzOCwgMTEsIDI0LCAKKyAgICAyMTAsIDY1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI1MSwgODYsIDkzLCAyMjcsIDc3LCA5MywgNjIsIDEwLCAyLCAyMzYsIAorICAgIDg4LCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMzYsIDE0LCAxMCwgMiwgMjM1LCAxNTEsIDEwLCAyLCAyMzMsIDczLCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyNTEsIDUzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNTAsIDE3OCwgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNCwgNzYsIAorICAgIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI0LCAyNSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTcyLCAxMCwgCisgICAgMiwgMjI3LCAxMDgsIDI0LCAyMDksIDIxMywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA0LCAyMTUsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIwMywgMjEyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIyNCwgNDEsIDIxMCwgCisgICAgNDcsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzgsIDkyLCA5MywgMjI1LCA5MywgMTAsIDIsIDIyNCwgCisgICAgNDEsIDI0LCAyMDksIDIyMCwgMTAsIDIsIDIyMiwgMjcsIDEwLCAyLCAyMjAsIDI0OSwgMjQsIDE5OSwgMTE0LCAxMCwgMiwgCisgICAgMjIwLCAxNTksIDEwLCAyLCAyMTksIDExOCwgMTAsIDIsIDIxOSwgMTE3LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyNDksIDk5LCAKKyAgICAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIxOCwgMTA2LCAyMTIsIDIyOCwgMjE5LCAxMDksIDI0MSwgCisgICAgMTU0LCAxMCwgMiwgMjE2LCA0LCAyNTAsIDE2NSwgMTAsIDIsIDIxNSwgMTUwLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjA2LCAxNCwgMTAsIDIsIDIwNCwgMTMsIDI0LCAyMjIsIDc2LCAxMCwgMiwgMTA4LCAKKyAgICA2NiwgMTAsIDE0NSwgMiwgMTIwLCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMTI2LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIAorICAgIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyNTAsIDE4MSwgCisgICAgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAxMjYsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAKKyAgICAyMzYsIDIyOSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgCisgICAgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDI0MCwgMjU1LCAKKyAgICAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCA2NiwgMTAsIDE0NSwgMiwgCisgICAgMjM3LCA2MSwgNjYsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCA2NiwgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDY2LCAxMCwgMTQ1LCAKKyAgICAyLCAyMzgsIDIzMiwgNjYsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCA2NiwgMTAsIDE0NSwgMiwgMTEyLCAyMzUsIDI0NCwgMTAsIAorICAgIDE0NSwgMiwgMTIwLCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMTI2LCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIAorICAgIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDIzNSwgMjQ0LCAKKyAgICAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyMzUsIDI0NCwgMTAsIDE0NSwgCisgICAgMiwgMjE5LCAxMTQsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAxMTIsIDIzNSwgMjQxLCAxMCwgMTQ1LCAyLCAxMjAsIDIzNSwgCisgICAgMjQxLCAxMCwgMTQ1LCAyLCAxMjYsIDIzNSwgMjQxLCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjM1LCAyNDEsIDEwLCAxNDUsIAorICAgIDIsIDIzNywgNjEsIDIzNSwgMjQxLCAxMCwgMTQ1LCAyLCAxMjAsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDEyNiwgMjEwLCA4MiwgCisgICAgMTAsIDE0NSwgMiwgMTI2LCAyMTAsIDgzLCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIxMCwgODIsIDEwLCAKKyAgICAxNDUsIDIsIDIzNywgNjEsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMTAsIAorICAgIDEzNiwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMTAsIAorICAgIDgyLCAxMCwgMTQ1LCAyLCAxMTIsIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDEyMCwgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMTI2LCAKKyAgICAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAxMjYsIDIxMCwgNzcsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgCisgICAgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMjEwLCA4MywgMjQsIDIzNiwgNzIsIAorICAgIDkzLCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjEwLCA4MywgMjQsIDIzNiwgNzIsIDkzLCAyMjEsIDE2NCwgMTAsIDE0NSwgMiwgCisgICAgMTEyLCAyNDcsIDI1NSwgMTAsIDE0NSwgMiwgMTIwLCAyNDcsIDI1NSwgMTAsIDE0NSwgMiwgMTI2LCAyNDcsIDI1NSwgMTAsIAorICAgIDE0NSwgMiwgMTI2LCAyNDgsIDAsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjQ3LCAyNTUsIDEwLCAKKyAgICAxNDUsIDIsIDIzNywgNjEsIDI0NywgMjU1LCAxMCwgMTQ1LCAyLCAxMjYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMzgsIDkzLCAKKyAgICAxMCwgMTQ1LCAyLCAxMjYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMzgsIDkwLCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjAzLCAKKyAgICA3MywgMjM2LCAyNDIsIDIyNCwgMTgwLCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjAzLCA3MywgMjM2LCAyNDIsIDIyNCwgCisgICAgMTc4LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjAzLCA3MywgMjM2LCAyNDIsIDIyNCwgMTgxLCA2MiwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDIwMywgNzMsIDIzNiwgMjQyLCAyMjQsIDE4MSwgMjUwLCAxMDMsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAKKyAgICAyMDMsIDczLCAyMzYsIDI0MiwgMjUwLCAxNzcsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyMDMsIDczLCAyMzYsIDI0MiwgCisgICAgMjI4LCAxMjYsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxMjgsIDYyLCAxMCwgMTQ1LCAKKyAgICAyLCAyMTAsIDEzNiwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTI4LCAyNTAsIDEwMywgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIAorICAgIDIwMywgNzMsIDIzNiwgMjQyLCAyMDMsIDE4NSwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDIwMywgNzMsIDIzNiwgMjQyLCAKKyAgICAyMDMsIDE4NCwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDE0MiwgMTAsIDE0NSwgMiwgCisgICAgMjE5LCAxMTQsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDE0MSwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIwMywgNzMsIAorICAgIDIzNiwgMjQyLCAyMjgsIDE0MCwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDE0MywgCisgICAgNjIsIDEwLCAxNDUsIDIsIDEyMCwgMjUwLCAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAxMjYsIDI1MCwgMTgyLCAyMDYsIAorICAgIDE1NSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDI1MCwgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjUwLCAKKyAgICAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMjUwLCAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAxMTIsIAorICAgIDI0OSwgODYsIDEwLCAxNDUsIDIsIDEyMCwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMTI2LCAyNDksIDg2LCAxMCwgMTQ1LCAyLCAKKyAgICAyMzYsIDIyOSwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDI0OSwgODcsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAKKyAgICAyLCAyMzcsIDYxLCAyNDksIDg2LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNDksIDg3LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgCisgICAgMiwgMjE5LCAxMjcsIDEwLCAxNDUsIDIsIDIxOSwgMTI4LCAxMCwgMTQ1LCAyLCAxMTIsIDIzOCwgODksIDEwLCAxNDUsIDIsIAorICAgIDEyMCwgMjM4LCA4OSwgMTAsIDE0NSwgMiwgMTEyLCAyMDYsIDc1LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMTIwLCAyMDYsIAorICAgIDcyLCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjA5LCA5NSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDExMiwgCisgICAgMjA2LCA3NSwgMjAzLCA3MywgMjM2LCAyNDIsIDYyLCAxMCwgMTQ1LCAyLCAxMjAsIDIwNiwgNzIsIDIwMywgNzMsIDIzNiwgCisgICAgMjQyLCA2MiwgMTAsIDE0NSwgMiwgMTEyLCAyMzgsIDIyOCwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDExMiwgMjE0LCA4OCwgCisgICAgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDQwLCAyNTAsIDE2OCwgMTEyLCAyMDksIDk2LCAxMCwgMTQ1LCAyLCA0MCwgMjUwLCAKKyAgICAxNjgsIDExMiwgMjE0LCA4NywgMTAsIDE0NSwgMiwgMTEyLCAyMTQsIDg4LCAyMzUsIDIyLCAxMCwgMTQ1LCAyLCAxMTIsIAorICAgIDE2NywgMjM1LCAyMiwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIDExMiwgMjA2LCA3NCwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIAorICAgIDEyMCwgMjA2LCA3MSwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIDIzNiwgMjM1LCAxMCwgMTQ1LCAyLCAyMzgsIDIwNywgMjM3LCAKKyAgICAxMDQsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAxMDgsIAorICAgIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjEwLCAKKyAgICAxMzYsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAKKyAgICAyLCAyMTksIDExNCwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDIxNCwgMjEyLCAyLCA0MCwgMjUwLCAxNjgsIDIwMCwgMjM4LCAKKyAgICAyNDAsIDIzOSwgMTAsIDIxNCwgMjEyLCAyLCA4MywgMjQ2LCA3OSwgMTAsIDIxNCwgMjEyLCAyLCAyNDEsIDcxLCAyNDYsIAorICAgIDc5LCAxMCwgMjE0LCAyMTIsIDIsIDI0MSwgNzEsIDIwNSwgOTQsIDEwLCAyMTQsIDIxMiwgMiwgMjQxLCA3MSwgMjE0LCA5MywgCisgICAgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMTgsIDkwLCAyMDYsIDE1NSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMDksIDIxOCwgMTAsIAorICAgIDIsIDI1MSwgMjM2LCAyNCwgMjM4LCA5MSwgMTAsIDIsIDI0OSwgMTE5LCAyNCwgMjQxLCAwLCAyMDYsIDE1NSwgMTAsIDIsIAorICAgIDI0OSwgMTA2LCAyNCwgMjUyLCA2LCAxMCwgMiwgMjQ5LCAxMDYsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDI0OSwgMTA2LCAyNCwgCisgICAgMTk5LCAxMTQsIDEwLCAyLCAyNDgsIDM3LCAxMTksIDI0OCwgMzcsIDI0LCAyMjAsIDE2MCwgMTAsIDIsIDI0MiwgNTksIDI0LCAKKyAgICAyMDcsIDAsIDEwLCAyLCAyNDIsIDQ5LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyNDEsIDMyLCAyNCwgMjI4LCAxNTMsIDEwLCAKKyAgICAyLCAyNDEsIDMyLCAyNCwgMTA4LCAxMDgsIDY2LCAxMCwgMiwgMjQxLCAzMCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzksIAorICAgIDEzMiwgMjQsIDI1MSwgNTMsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAKKyAgICAyNTAsIDE4MiwgMjUwLCAxNTYsIDIyNSwgMjgsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDI0MSwgMTksIDEwLCAyLCAyMzksIAorICAgIDEzMiwgMjQsIDIzOSwgMTI1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzgsIDEwOSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgCisgICAgMjM2LCA4OSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIzNSwgMTQ0LCAKKyAgICAyMzUsIDI4LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMTQ0LCAxMCwgMiwgCisgICAgMjM5LCAxMzIsIDI0LCAyMzQsIDc1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDIzOSwgMTMyLCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzksIDEzMiwgCisgICAgMjQsIDIyNSwgMjM5LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjUsIDI0MCwgOTMsIDIyNywgMzgsIDEwLCAyLCAyMzksIAorICAgIDEzMiwgMjQsIDIyNSwgMTQ1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjUsIDkxLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAKKyAgICAyMjUsIDkyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyNCwgMzEsIDkzLCAyMzUsIDEzNSwgMTAsIDIsIAorICAgIDIzOSwgMTMyLCAyNCwgMjIyLCAxMzUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyMiwgMjgsIDEwLCAyLCAyMzksIDEzMiwgCisgICAgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjE1LCAKKyAgICAyMDQsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIwOSwgMTgzLCAyMzUsIAorICAgIDI4LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIxNiwgMTM1LCAxMCwgMiwgCisgICAgMjM4LCAxMTAsIDIwMCwgMTk1LCAxMCwgMiwgMjM4LCA5MiwgMjQyLCAyMjgsIDIzOCwgOTEsIDEwLCAyLCAyMzgsIDExLCAKKyAgICAyMTAsIDQ3LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjM0LCA3NSwgMTAsIDIsIDIzOCwgCisgICAgMTEsIDIxMCwgNDcsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAxOTQsIDEwLCAKKyAgICAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjI1LCA5MywgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMjIsIDc2LCAKKyAgICAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIyMiwgMjgsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjA4LCAKKyAgICAyNCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMDgsIDI0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0OSwgMTA1LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0MSwgMzIsIDIzNSwgMjgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM5LCAxMzIsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzksIDEzMiwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjM4LCAxMTIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA4OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDUwLCAKKyAgICA5MywgMjQxLCA3NiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDUwLCA5MywgMjIwLCAzNCwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyMzQsIDIzNiwgOTMsIDYyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNSwgMjQwLCA5MywgMjI3LCAzOCwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjUsIDkxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNSwgOTIsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjQsIDMwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMCwgMjUwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIyMCwgMzQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjIwLCAzNSwgOTMsIDIzOSwgMjgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjIwLCAzNSwgOTMsIDIzNSwgMTYxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMCwgMjUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMTk5LCAxOSwgMTAsIDIsIDIzNiwgODMsIDIxMiwgMjI4LCAyMTksIDEwOSwgMjQxLCAxNTQsIDEwLCAyLCAyMzUsIDI0MywgCisgICAgMjQsIDY2LCAxMCwgMiwgMjM1LCAxMzYsIDI0LCAyMzUsIDEzNiwgMjQyLCAyMjgsIDIzNSwgMTM1LCAxMCwgMiwgMjM1LCAKKyAgICA0OSwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCA0MCwgOTMsIDIzNSwgMTM2LCAyNCwgMjA3LCAwLCAxMCwgCisgICAgMiwgMjM0LCAyMzYsIDIwNiwgMTU2LCAyMzUsIDI4LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI1MCwgMTgyLCAxMTksIDIzNCwgCisgICAgNzYsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ4LCAzNiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTYxLCAKKyAgICAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxMDgsIDEwOCwgNjYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwMywgMjE0LCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAxOTksIDQsIDExOSwgMTk5LCAzLCAxMCwgMiwgMjI1LCAxNDYsIDEwLCAyLCAyMjUsIDE0NCwgMTAsIAorICAgIDIsIDIyNSwgMTQzLCAxMCwgMiwgMjI1LCAxNDIsIDEwLCAyLCAyMjUsIDE0MSwgMTAsIDIsIDIyNSwgMTQwLCAxMCwgMiwgCisgICAgMjI1LCAxMzksIDEwLCAyLCAyMjUsIDEzOCwgMTE5LCAyMjUsIDEzOCwgMjM1LCAyOCwgMTAsIDIsIDIyNSwgMTM3LCAxMCwgCisgICAgMiwgMjI1LCAxMzYsIDExOSwgMjI1LCAxMzUsIDEwLCAyLCAyMjUsIDEzNCwgMTAsIDIsIDIyNSwgMTMzLCAxMCwgMiwgMjI1LCAKKyAgICAxMzIsIDEwLCAyLCAyMjUsIDEzMSwgMTAsIDIsIDIyNSwgMTMwLCAxMCwgMiwgMjI1LCAxMjksIDEwLCAyLCAyMjUsIDEyOCwgCisgICAgMTAsIDIsIDIyNSwgMTI3LCAxMCwgMiwgMjI1LCAxMjYsIDEwLCAyLCAyMjUsIDEyNSwgMTAsIDIsIDIyNSwgMTI0LCAxMCwgCisgICAgMiwgMjI1LCAxMjMsIDEwLCAyLCAyMjUsIDEyMiwgMTAsIDIsIDIyNSwgMTIxLCAxMCwgMiwgMjI1LCAxMjAsIDEwLCAyLCAKKyAgICAyMjUsIDExOSwgMTAsIDIsIDIyNSwgMTE4LCAxMCwgMiwgMjI1LCAxMTcsIDEwLCAyLCAyMjUsIDExNSwgMTAsIDIsIDIyNSwgCisgICAgMTE2LCAyNCwgMjM1LCA1MCwgMTAsIDIsIDIyNSwgMTE2LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMjUsIDExNiwgMjQsIAorICAgIDIxNiwgMTM2LCA5MywgMjI0LCAzOSwgMTAsIDIsIDIyNSwgMTE2LCAyNCwgMjE2LCAxMzYsIDkzLCAyMTYsIDEzNiwgOTMsIAorICAgIDIyNCwgMzksIDEwLCAyLCAyMjUsIDExNiwgMjQsIDIwNCwgNDgsIDkzLCAyNDksIDEzNiwgMTAsIDIsIDIyNSwgMTE0LCAxMCwgCisgICAgMiwgMjI1LCAxMTMsIDEwLCAyLCAyMjUsIDExMiwgMTAsIDIsIDIyNSwgMTExLCAxMCwgMiwgMjI1LCAxMTAsIDEwLCAyLCAKKyAgICAyMjUsIDEwOSwgMTAsIDIsIDIyNSwgMTA4LCAxMCwgMiwgMjI1LCAxMDcsIDEwLCAyLCAyMjUsIDEwNiwgMTAsIDIsIDIyNSwgCisgICAgMTA1LCAxMCwgMiwgMjI1LCAxMDMsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAKKyAgICAyNDksIDExOCwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjM5LCAxMjQsIDIzNSwgMjksIDIzNSwgMjgsIDEwLCAyLCAyMjUsIAorICAgIDEwNCwgMjQsIDIyNiwgMTMsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDE5NCwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjA2LCAKKyAgICAyMzIsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIwNiwgMjAxLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgCisgICAgMjI1LCAxMDQsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIDIyNSwgMTAyLCAKKyAgICAxMCwgMiwgMjI1LCAxMDAsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIzOSwgMTM1LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMzYsIAorICAgIDg5LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjI4LCAxNTQsIDIzNSwgCisgICAgMjgsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIxOSwgMTUwLCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMTYsIDEzNiwgOTMsIAorICAgIDIxNiwgMTM2LCA5MywgMjI0LCAzOSwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjEwLCA1MCwgOTMsIDIyNiwgMTYzLCAxMCwgMiwgCisgICAgMjI1LCAxMDEsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIDIyNSwgOTgsIDEwLCAKKyAgICAyLCAyMjUsIDk3LCAxMCwgMiwgMjI0LCA0MSwgMjM1LCAyOSwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIAorICAgIDI0MCwgMjU1LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzNCwgMjE2LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIxNiwgMTM1LCAxMCwgCisgICAgMiwgMjI0LCA0MSwgMjQsIDIxNiwgMTM2LCA5MywgMjE2LCAxMzYsIDkzLCAyMjQsIDM5LCAxMCwgMiwgMjI0LCA0MSwgMjQsIAorICAgIDIwNywgMCwgMTAsIDIsIDIyMSwgMjEyLCA5MywgMTk5LCAxMTMsIDEwLCAyLCAyMjAsIDI1MSwgMTE5LCAyMjAsIDI1MSwgCisgICAgMjQsIDIzNiwgODksIDEwLCAyLCAyMjAsIDI1MSwgMTE5LCAyMjAsIDI1MSwgMjQsIDIyNywgNzYsIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDI0MSwgMzIsIDIzNSwgMjgsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyMzUsIDMyLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzQsIDc1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMjYsIAorICAgIDIzNCwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjI1LCAxNDEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyMiwgMTM1LCAxMCwgMiwgCisgICAgMjE5LCAxMTYsIDI0LCAyMTYsIDEzNiwgOTMsIDIxNiwgMTM1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCA2NiwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMTA4LCA5MywgNjYsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIwMywgMjAxLCAxMCwgMiwgMjEyLCA1MSwgCisgICAgMjM1LCAyOSwgMjQsIDE0NCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMzgsIDE3OSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMTAsIAorICAgIDY2LCAyNTAsIDE1NiwgMjI1LCAyOCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMTAsIDExMSwgMjA2LCAKKyAgICAxNTUsIDEwLCAyLCAyMTAsIDY2LCAxMTksIDIxMCwgNjUsIDEwLCAyLCAyMTAsIDY2LCA5MywgMjMzLCA5MiwgMTAsIDIsIAorICAgIDIxMCwgNjYsIDkzLCAyMjAsIDEzNywgMTAsIDIsIDIxMCwgNjYsIDkzLCAyMTIsIDAsIDEwLCAyLCAyMDksIDIxOSwgOTMsIAorICAgIDIzOSwgMTMyLCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyMDksIDIxOSwgOTMsIDIzOSwgMjksIDI0LCAyNTEsIDg1LCAxMCwgMiwgCisgICAgMjA5LCAxODMsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMDcsIDEsIDkzLCAyMTIsIDUwLCAxMCwgMiwgMjA0LCAyMDQsIDI0LCAKKyAgICAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIwNCwgMjA0LCAyNCwgMTI2LCAyNDAsIDI1NSwgMTAsIDIsIDIwMywgMjEzLCAKKyAgICAyMjgsIDQ5LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyNDEsIDI1MywgMTAsIAorICAgIDIsIDIwMywgMjA0LCAyNCwgMjI1LCA5OSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI0LCAzOSwgMTAsIDIsIDE5OSwgMTEzLCAKKyAgICAxMCwgMiwgMTk5LCA0LCAxMTksIDE5OSwgNCwgOTMsIDIxMiwgMCwgMTAsIDIsIDE5OSwgMiwgMjQsIDEyNiwgMjQxLCAwLCAKKyAgICAyMDYsIDE1NSwgMTQsIDcsIDI1NSwgMTMxLCAxNCwgNywgMjU1LCAxMzAsIDE0LCA3LCAyNTUsIDEyOSwgMTQsIDcsIDI1NSwgCisgICAgMTI4LCAxNCwgNywgMjU1LCAxMjcsIDE0LCA3LCAyNTUsIDEyNiwgMTQsIDcsIDI1NSwgMTI1LCAxNCwgNywgMjU1LCAxMjQsIAorICAgIDE0LCA3LCAyNTUsIDEyMywgMTQsIDcsIDI1NSwgMTIyLCAxNCwgNywgMjU1LCAxMjEsIDE0LCA3LCAyNTUsIDEyMCwgMTQsIAorICAgIDcsIDI1NSwgMTE5LCAxNCwgNywgMjU1LCAxMTcsIDE0LCA3LCAyNTUsIDExNiwgMTQsIDcsIDI1NSwgMTE1LCAxNCwgNywgCisgICAgMjU1LCAxMTQsIDE0LCA3LCAyNTUsIDExMywgMTQsIDcsIDI1NSwgMTEyLCAxNCwgNywgMjU1LCAxMTEsIDE0LCA3LCAyNTUsIAorICAgIDExMCwgMTQsIDcsIDI1NSwgMTA5LCAxNCwgNywgMjU1LCAxMDgsIDE0LCA3LCAyNTUsIDEwNywgMTQsIDcsIDI1NSwgMTA2LCAKKyAgICAxNCwgNywgMjU1LCAxMDUsIDE0LCA3LCAyNTUsIDEwNCwgMTQsIDcsIDI1NSwgMTAzLCAxNCwgNywgMjU1LCAxMDIsIDE0LCAKKyAgICA3LCAyNTUsIDEwMSwgMTQsIDcsIDI1NSwgMTAwLCAxNCwgNywgMjU1LCA5OCwgMTQsIDcsIDI1NSwgOTcsIDE0LCA3LCAyNTUsIAorICAgIDk1LCAxNCwgNywgMjU1LCA5NCwgMTQsIDcsIDI1NSwgOTMsIDE0LCA3LCAyNTUsIDkyLCAxNCwgNywgMjU1LCA5MSwgMTQsIAorICAgIDcsIDI1NSwgOTAsIDE0LCA3LCAyNTUsIDg5LCAxNCwgNywgMjU1LCA4OCwgMTQsIDcsIDI1NSwgODcsIDE0LCA3LCAyNTUsIAorICAgIDg2LCAxNCwgNywgMjU1LCA4NSwgMTQsIDcsIDI1NSwgODQsIDE0LCA3LCAyNTUsIDgyLCAxNCwgNywgMjU1LCA4MSwgMTQsIAorICAgIDcsIDI1NSwgODAsIDE0LCA3LCAyNTUsIDc4LCAxNCwgNywgMjU1LCA3NywgMTQsIDcsIDI1NSwgNzYsIDE0LCA3LCAyNTUsIAorICAgIDc1LCAxNCwgNywgMjU1LCA3NCwgMTQsIDcsIDI1NSwgNzMsIDE0LCA3LCAyNTUsIDcyLCAxNCwgNywgMjU1LCA3MSwgMTQsIAorICAgIDcsIDI1NSwgNjgsIDE0LCA3LCAyNTUsIDY3LCAxNCwgNywgMjU1LCA2NiwgMTQsIDcsIDI1NSwgNjUsIDE0LCA3LCAyNTUsIAorICAgIDY0LCAxNCwgNywgMjU1LCA2MywgMTQsIDcsIDI1NSwgNjIsIDE0LCA3LCAyNTUsIDYxLCAxNCwgNywgMjU1LCA2MCwgMTQsIAorICAgIDcsIDI1NSwgNTksIDE0LCA3LCAyNTUsIDU4LCAxNCwgNywgMjU1LCA1NywgMTQsIDcsIDI1NSwgNTYsIDE0LCA3LCAyNTUsIAorICAgIDU1LCAxNCwgNywgMjU1LCA1NCwgMTQsIDcsIDI1NSwgNTMsIDE0LCA3LCAyNTUsIDUyLCAxNCwgNywgMjU1LCA1MSwgMTQsIAorICAgIDcsIDI1NSwgNTAsIDE0LCA3LCAyNTUsIDQ5LCAxNCwgNywgMjU1LCA0NSwgMTQsIDcsIDI1NSwgNDQsIDE0LCA3LCAyNTUsIAorICAgIDQzLCAxNCwgNywgMjU1LCA0MiwgMTQsIDcsIDI1MCwgMTAxLCAxNCwgNywgMjUwLCA5OSwgMTQsIDcsIDI1MCwgOTcsIDE0LCAKKyAgICA3LCAyNTAsIDk1LCAxNCwgNywgMjUwLCA5MywgMTQsIDcsIDI1MCwgOTIsIDE0LCA3LCAyNTAsIDkwLCAxNCwgNywgMjUwLCAKKyAgICA4OCwgMTQsIDcsIDI1MCwgODYsIDE0LCA3LCAyNTAsIDg0LCAxNCwgNywgMjQ3LCAyMTksIDE0LCA3LCAyNDcsIDIxOCwgMTQsIAorICAgIDcsIDI0NywgMjE3LCAxNCwgNywgMjQ3LCAyMTYsIDE0LCA3LCAyNDcsIDIxNSwgMTQsIDcsIDI0NywgMjE0LCAxNCwgNywgCisgICAgMjQ3LCAyMTMsIDE0LCA3LCAyNDcsIDIxMiwgMTQsIDcsIDI0NywgMjExLCAxNCwgNywgMjQ3LCAyMTAsIDE0LCA3LCAyNDcsIAorICAgIDIwOSwgMTQsIDcsIDI0NywgMjA4LCAxNCwgNywgMjQ3LCAyMDcsIDE0LCA3LCAyNDcsIDIwNiwgMTQsIDcsIDI0NywgMjA1LCAKKyAgICAxNCwgNywgMjQ3LCAyMDQsIDE0LCA3LCAyNDcsIDIwMywgMTQsIDcsIDI0NywgMjAyLCAxNCwgNywgMjQ3LCAyMDEsIDE0LCAKKyAgICA3LCAyNDcsIDIwMCwgMTQsIDcsIDI0NywgMTk5LCAxNCwgNywgMjQ3LCAxOTgsIDE0LCA3LCAyNDcsIDE5NywgMTQsIDcsIAorICAgIDI0NywgMTk2LCAxNCwgNywgMjQ3LCAxOTUsIDE0LCA3LCAyNDcsIDE5NCwgMTQsIDcsIDI0NywgMTkzLCAxNCwgNywgMjQ3LCAKKyAgICAxOTIsIDE0LCA3LCAyNDIsIDE1MiwgMTQsIDcsIDI0MiwgMTUxLCAxNCwgNywgMjQyLCAxNTAsIDE0LCA3LCAyNDIsIDE0OSwgCisgICAgMTQsIDcsIDI0MiwgMTQ4LCAxNCwgNywgMjQyLCAxNDcsIDE0LCA3LCAyNDIsIDE0NiwgMTQsIDcsIDI0MiwgMTQ1LCAxNCwgCisgICAgNywgMjQyLCAxNDQsIDE0LCA3LCAyNDIsIDE0MywgMTQsIDcsIDI0MiwgMTQyLCAxNCwgNywgMjQyLCAxNDEsIDE0LCA3LCAKKyAgICAyNDIsIDE0MCwgMTQsIDcsIDI0MiwgMTM5LCAxNCwgNywgMjQyLCAxMzgsIDE0LCA3LCAyNDIsIDEzNywgMTQsIDcsIDI0MiwgCisgICAgMTM2LCAxNCwgNywgMjQyLCAxMzUsIDE0LCA3LCAyNDIsIDEzNCwgMTQsIDcsIDI0MiwgMTMzLCAxNCwgNywgMjQyLCAxMzIsIAorICAgIDE0LCA3LCAyNDIsIDEzMSwgMTQsIDcsIDI0MiwgMTMwLCAxNCwgNywgMjQyLCAxMjksIDE0LCA3LCAyNDIsIDEyOCwgMTQsIAorICAgIDcsIDI0MiwgMTI3LCAxNCwgNywgMjQyLCAxMjYsIDE0LCA3LCAyNDIsIDEyNSwgMTQsIDcsIDI0MiwgMTI0LCAxNCwgNywgCisgICAgMjQyLCAxMjMsIDE0LCA3LCAyNDIsIDEyMiwgMTQsIDcsIDI0MiwgMTIxLCAxNCwgNywgMjQyLCAxMjAsIDE0LCA3LCAyNDIsIAorICAgIDExOSwgMTQsIDcsIDI0MiwgMTE4LCAxNCwgNywgMjQyLCAxMTcsIDE0LCA3LCAyNDIsIDExNiwgMTQsIDcsIDI0MiwgMTE1LCAKKyAgICAxNCwgNywgMjQyLCAxMTQsIDE0LCA3LCAyNDIsIDExMywgMTQsIDcsIDI0MiwgMTEyLCAxNCwgNywgMjQyLCAxMTEsIDE0LCAKKyAgICA3LCAyNDIsIDExMCwgMTQsIDcsIDI0MiwgMTA5LCAxNCwgNywgMjQyLCAxMDgsIDE0LCA3LCAyNDIsIDEwNywgMTQsIDcsIAorICAgIDI0MiwgMTA2LCAxNCwgNywgMjQyLCAxMDUsIDE0LCA3LCAyNDIsIDEwNCwgMTQsIDcsIDI0MiwgMTAzLCAxNCwgNywgMjQyLCAKKyAgICAxMDIsIDE0LCA3LCAyNDIsIDEwMSwgMTQsIDcsIDI0MiwgMTAwLCAxNCwgNywgMjQyLCA5OSwgMTQsIDcsIDI0MiwgOTgsIAorICAgIDE0LCA3LCAyNDIsIDk3LCAxNCwgNywgMjQyLCA5NiwgMTQsIDcsIDI0MiwgOTUsIDE0LCA3LCAyNDIsIDk0LCAxNCwgNywgCisgICAgMjQyLCA5MywgMTQsIDcsIDI0MiwgOTIsIDE0LCA3LCAyNDIsIDkxLCAxNCwgNywgMjQyLCA5MCwgMTQsIDcsIDI0MiwgODksIAorICAgIDE0LCA3LCAyNDIsIDg4LCAxNCwgNywgMjQyLCA4NywgMTQsIDcsIDI0MiwgODYsIDE0LCA3LCAyNDIsIDg1LCAxNCwgNywgCisgICAgMjQyLCA4NCwgMTQsIDcsIDI0MiwgODMsIDE0LCA3LCAyNDIsIDgyLCAxNCwgNywgMjQyLCA4MSwgMTQsIDcsIDI0MiwgODAsIAorICAgIDE0LCA3LCAyNDIsIDc5LCAxNCwgNywgMjQyLCA3OCwgMTQsIDcsIDI0MiwgNzcsIDE0LCA3LCAyNDIsIDc2LCAxNCwgNywgCisgICAgMjQyLCA3NSwgMTQsIDcsIDI0MiwgNzQsIDE0LCA3LCAyNDIsIDczLCAxNCwgNywgMjQyLCA3MiwgMTQsIDcsIDI0MiwgNzEsIAorICAgIDE0LCA3LCAyNDIsIDcwLCAxNCwgNywgMjQyLCA2OSwgMTQsIDcsIDI0MiwgNjgsIDE0LCA3LCAyNDIsIDY3LCAxNCwgNywgCisgICAgMjQyLCA2NiwgMTQsIDcsIDI0MiwgNjUsIDE0LCA3LCAyNDIsIDY0LCAxNCwgNywgMjQyLCA2MywgMTQsIDcsIDI0MiwgNjIsIAorICAgIDE0LCA3LCAyNDIsIDYxLCAxNCwgNywgMjM5LCA3MywgMTQsIDcsIDIzOSwgNzIsIDE0LCA3LCAyMzksIDcxLCAxNCwgNywgCisgICAgMjM5LCA3MCwgMTQsIDcsIDIzOSwgNjksIDE0LCA3LCAyMzksIDY4LCAxNCwgNywgMjM5LCA2NywgMTQsIDcsIDIzOSwgNjYsIAorICAgIDE0LCA3LCAyMzksIDY1LCAxNCwgNywgMjM5LCA2NCwgMTQsIDcsIDIzOSwgNjMsIDE0LCA3LCAyMzksIDYyLCAxNCwgNywgCisgICAgMjM5LCA2MSwgMTQsIDcsIDIzOSwgNjAsIDE0LCA3LCAyMzksIDU5LCAxNCwgNywgMjM5LCA1OCwgMTQsIDcsIDIzOSwgNTcsIAorICAgIDE0LCA3LCAyMzksIDU2LCAxNCwgNywgMjM5LCA1NSwgMTQsIDcsIDIzOSwgNTQsIDE0LCA3LCAyMzksIDUzLCAxNCwgNywgCisgICAgMjM5LCA1MiwgMTQsIDcsIDIzOSwgNTEsIDE0LCA3LCAyMzksIDUwLCAxNCwgNywgMjM5LCA0OSwgMTQsIDcsIDIzOSwgNDgsIAorICAgIDE0LCA3LCAyMzksIDQ3LCAxNCwgNywgMjM5LCA0NiwgMTQsIDcsIDIzOSwgNDUsIDE0LCA3LCAyMzksIDQ0LCAxNCwgNywgCisgICAgMjM5LCA0MywgMTQsIDcsIDIzOSwgNDIsIDE0LCA3LCAyMzksIDQxLCAxNCwgNywgMjM5LCA0MCwgMTQsIDcsIDIzOSwgMzksIAorICAgIDE0LCA3LCAyMzksIDM4LCAxNCwgNywgMjM5LCAzNywgMTQsIDcsIDIzOSwgMzYsIDE0LCA3LCAyMzksIDM1LCAxNCwgNywgCisgICAgMjM5LCAzNCwgMTQsIDcsIDIzOSwgMzMsIDE0LCA3LCAyMzksIDMyLCAxNCwgNywgMjM5LCAzMSwgMTQsIDcsIDIzOSwgMzAsIAorICAgIDE0LCA3LCAyMzgsIDQsIDE0LCA3LCAyMzgsIDMsIDE0LCA3LCAyMzgsIDIsIDE0LCA3LCAyMzgsIDEsIDE0LCA3LCAyMzgsIAorICAgIDAsIDE0LCA3LCAyMzcsIDI1NSwgMTQsIDcsIDIzNywgMjU0LCAxNCwgNywgMjM3LCAyNTMsIDE0LCA3LCAyMzcsIDI1MiwgCisgICAgMTQsIDcsIDIzNywgMjUxLCAxNCwgNywgMjM3LCAyNTAsIDE0LCA3LCAyMzcsIDI0OSwgMTQsIDcsIDIzNywgMjQ4LCAxNCwgCisgICAgNywgMjM3LCAyNDcsIDE0LCA3LCAyMzcsIDI0NiwgMTQsIDcsIDIzNywgMjQ1LCAxNCwgNywgMjM3LCAyNDQsIDE0LCA3LCAKKyAgICAyMzcsIDI0MywgMTQsIDcsIDIzNywgMjQyLCAxNCwgNywgMjM3LCAyNDEsIDE0LCA3LCAyMzcsIDI0MCwgMTQsIDcsIDIzNywgCisgICAgMjM5LCAxNCwgNywgMjM3LCAyMzgsIDE0LCA3LCAyMzcsIDIzNywgMTQsIDcsIDIzNywgMjM2LCAxNCwgNywgMjM3LCAyMzUsIAorICAgIDE0LCA3LCAyMzcsIDIzNCwgMTQsIDcsIDIzNywgMjMzLCAxNCwgNywgMjM3LCAyMzIsIDE0LCA3LCAyMzcsIDIzMSwgMTQsIAorICAgIDcsIDIzNywgMjMwLCAxNCwgNywgMjM3LCAyMjksIDE0LCA3LCAyMzcsIDIyOCwgMTQsIDcsIDIzNywgMjI3LCAxNCwgNywgCisgICAgMjM3LCAyMjYsIDE0LCA3LCAyMzcsIDIyNSwgMTQsIDcsIDIzNywgMjI0LCAxNCwgNywgMjM3LCAyMjMsIDE0LCA3LCAyMzcsIAorICAgIDIyMiwgMTQsIDcsIDIzNywgMjIxLCAxNCwgNywgMjM3LCAyMjAsIDE0LCA3LCAyMzcsIDIxOSwgMTQsIDcsIDIzNywgMjE4LCAKKyAgICAxNCwgNywgMjM3LCAyMTcsIDE0LCA3LCAyMzcsIDIxNiwgMTQsIDcsIDIzNywgMjE1LCAxNCwgNywgMjM3LCAyMTQsIDE0LCAKKyAgICA3LCAyMzcsIDIxMywgMTQsIDcsIDIzNywgMjEyLCAxNCwgNywgMjM3LCAyMTEsIDE0LCA3LCAyMzcsIDIxMCwgMTQsIDcsIAorICAgIDIzNywgMjA5LCAxNCwgNywgMjM3LCAyMDgsIDE0LCA3LCAyMzcsIDIwNywgMTQsIDcsIDIzNywgMjA2LCAxNCwgNywgMjM3LCAKKyAgICAyMDUsIDE0LCA3LCAyMzcsIDIwNCwgMTQsIDcsIDIzNywgMjAzLCAxNCwgNywgMjM3LCAyMDIsIDE0LCA3LCAyMzcsIDIwMSwgCisgICAgMTQsIDcsIDIzNywgMjAwLCAxNCwgNywgMjM3LCAxOTksIDE0LCA3LCAyMzcsIDE5OCwgMTQsIDcsIDIzNywgMTk3LCAxNCwgCisgICAgNywgMjM3LCAxOTYsIDE0LCA3LCAyMzYsIDE1NSwgMTQsIDcsIDIzNiwgMTU0LCAxNCwgNywgMjM2LCAxNTMsIDE0LCA3LCAKKyAgICAyMzYsIDE1MiwgMTQsIDcsIDIzNiwgMTUxLCAxNCwgNywgMjM2LCAxNTAsIDE0LCA3LCAyMzYsIDE0OSwgMTQsIDcsIDIzNiwgCisgICAgMTQ4LCAxNCwgNywgMjM2LCAxNDcsIDE0LCA3LCAyMzYsIDE0NiwgMTQsIDcsIDIzNiwgMTQ1LCAxNCwgNywgMjM2LCAxNDQsIAorICAgIDE0LCA3LCAyMzYsIDE0MywgMTQsIDcsIDIzNiwgMTQyLCAxNCwgNywgMjM2LCAxNDEsIDE0LCA3LCAyMzYsIDE0MCwgMTQsIAorICAgIDcsIDIzNiwgMTM5LCAxNCwgNywgMjM2LCAxMzgsIDE0LCA3LCAyMzYsIDEzNywgMTQsIDcsIDIzNiwgMTM2LCAxNCwgNywgCisgICAgMjM2LCAxMzUsIDE0LCA3LCAyMzYsIDEzNCwgMTQsIDcsIDIzNiwgMTMzLCAxNCwgNywgMjM2LCAxMzIsIDE0LCA3LCAyMzYsIAorICAgIDEzMSwgMTQsIDcsIDIzNiwgMTMwLCAxNCwgNywgMjM2LCAxMjksIDE0LCA3LCAyMzYsIDEyOCwgMTQsIDcsIDIzNiwgMTI3LCAKKyAgICAxNCwgNywgMjM2LCAxMjYsIDE0LCA3LCAyMzYsIDEyNSwgMTQsIDcsIDIzNiwgMTI0LCAxNCwgNywgMjM2LCAxMjMsIDE0LCAKKyAgICA3LCAyMzYsIDEyMiwgMTQsIDcsIDIzNiwgMTIxLCAxNCwgNywgMjM2LCAxMjAsIDE0LCA3LCAyMzYsIDExOSwgMTQsIDcsIAorICAgIDIzNiwgMTE4LCAxNCwgNywgMjM2LCAxMTcsIDE0LCA3LCAyMzYsIDExNiwgMTQsIDcsIDIzNiwgMTE1LCAxNCwgNywgMjM2LCAKKyAgICAxMTQsIDE0LCA3LCAyMzYsIDExMywgMTQsIDcsIDIzNiwgMTEyLCAxNCwgNywgMjM2LCAxMTEsIDE0LCA3LCAyMzYsIDExMCwgCisgICAgMTQsIDcsIDIzNiwgMTA5LCAxNCwgNywgMjM2LCAxMDgsIDE0LCA3LCAyMzYsIDEwNywgMTQsIDcsIDIzNiwgMTA2LCAxNCwgCisgICAgNywgMjM2LCAxMDUsIDE0LCA3LCAyMzYsIDEwNCwgMTQsIDcsIDIzNiwgMTAzLCAxNCwgNywgMjM2LCAxMDIsIDE0LCA3LCAKKyAgICAyMzYsIDEwMSwgMTQsIDcsIDIzNiwgMTAwLCAxNCwgNywgMjM2LCA5OSwgMTQsIDcsIDIzNiwgOTgsIDE0LCA3LCAyMzYsIAorICAgIDk3LCAxNCwgNywgMjM2LCA5NiwgMTQsIDcsIDIzNiwgOTUsIDE0LCA3LCAyMzYsIDk0LCAxNCwgNywgMjM2LCA5MywgMTQsIAorICAgIDcsIDIzNiwgOTIsIDE0LCA3LCAyMzQsIDI0NSwgMTQsIDcsIDIzNCwgMjQ0LCAxNCwgNywgMjM0LCAyNDMsIDE0LCA3LCAKKyAgICAyMzQsIDI0MiwgMTQsIDcsIDIzNCwgMjQxLCAxNCwgNywgMjM0LCAyNDAsIDE0LCA3LCAyMzQsIDIzOSwgMTQsIDcsIDIzNCwgCisgICAgMjM4LCAxNCwgNywgMjM0LCAyMzcsIDE0LCA3LCAyMzMsIDMsIDE0LCA3LCAyMzMsIDIsIDE0LCA3LCAyMzMsIDEsIDE0LCA3LCAKKyAgICAyMzMsIDAsIDE0LCA3LCAyMzIsIDI1NSwgMTQsIDcsIDIzMiwgMjU0LCAxNCwgNywgMjMyLCAyNTMsIDE0LCA3LCAyMzIsIAorICAgIDI1MiwgMTQsIDcsIDIzMiwgMjUxLCAxNCwgNywgMjMyLCAyNTAsIDE0LCA3LCAyMzIsIDI0OSwgMTQsIDcsIDIzMiwgMjQ4LCAKKyAgICAxNCwgNywgMjMyLCAyNDcsIDE0LCA3LCAyMzIsIDI0NiwgMTQsIDcsIDIzMiwgMjQ1LCAxNCwgNywgMjMyLCAyNDQsIDE0LCAKKyAgICA3LCAyMzIsIDI0MywgMTQsIDcsIDIzMiwgMjQyLCAxNCwgNywgMjMyLCAyNDEsIDE0LCA3LCAyMjcsIDExNywgMTQsIDcsIAorICAgIDIyNywgMTE2LCAxNCwgNywgMjI3LCAxMTUsIDE0LCA3LCAyMjcsIDExNCwgMTQsIDcsIDIyNywgMTEzLCAxNCwgNywgMjI3LCAKKyAgICAxMTIsIDE0LCA3LCAyMjcsIDExMSwgMTQsIDcsIDIyNywgMTEwLCAxNCwgNywgMjI1LCAxOTAsIDE0LCA3LCAyMjUsIDE4OSwgCisgICAgMTQsIDcsIDIyNSwgMTg4LCAxNCwgNywgMjI1LCAxODcsIDE0LCA3LCAyMjUsIDE4NiwgMTQsIDcsIDIyNSwgMTg1LCAxNCwgCisgICAgNywgMjI1LCAxODQsIDE0LCA3LCAyMjUsIDE4MywgMTQsIDcsIDIyNSwgMTgyLCAxNCwgNywgMjI1LCAxODEsIDE0LCA3LCAKKyAgICAyMjMsIDI0MSwgMTQsIDcsIDIyMywgMjQwLCAxNCwgNywgMjIzLCAyMzksIDE0LCA3LCAyMjMsIDIzNywgMTQsIDcsIDIyMywgCisgICAgMjM1LCAxNCwgNywgMjIzLCAyMzQsIDE0LCA3LCAyMjMsIDIzMiwgMTQsIDcsIDIyMywgMjMwLCAxNCwgNywgMjIzLCAyMjgsIAorICAgIDE0LCA3LCAyMjMsIDIyNiwgMTQsIDcsIDIyMywgMjI0LCAxNCwgNywgMjIzLCAyMjIsIDE0LCA3LCAyMjMsIDIyMCwgMTQsIAorICAgIDcsIDIyMywgMjE5LCAxNCwgNywgMjIzLCAyMTcsIDE0LCA3LCAyMjMsIDIxNSwgMTQsIDcsIDIyMywgMjE0LCAxNCwgNywgCisgICAgMjIzLCAyMTMsIDE0LCA3LCAyMjMsIDIxMiwgMTQsIDcsIDIyMywgMjExLCAxNCwgNywgMjIzLCAyMTAsIDE0LCA3LCAyMjMsIAorICAgIDIwOSwgMTQsIDcsIDIyMywgMjA4LCAxNCwgNywgMjIzLCAyMDcsIDE0LCA3LCAyMjMsIDIwNSwgMTQsIDcsIDIyMywgMjAzLCAKKyAgICAxNCwgNywgMjIzLCAyMDEsIDE0LCA3LCAyMjMsIDIwMCwgMTQsIDcsIDIyMywgMTk4LCAxNCwgNywgMjIzLCAxOTcsIDE0LCAKKyAgICA3LCAyMjMsIDE5NSwgMTQsIDcsIDIyMywgMTk0LCAxNCwgNywgMjIzLCAxOTIsIDE0LCA3LCAyMjMsIDE5MCwgMTQsIDcsIAorICAgIDIyMywgMTg4LCAxNCwgNywgMjIzLCAxODYsIDE0LCA3LCAyMjMsIDE4NCwgMTQsIDcsIDIyMywgMTgzLCAxNCwgNywgMjIzLCAKKyAgICAxODEsIDE0LCA3LCAyMjMsIDE3OSwgMTQsIDcsIDIyMywgMTc4LCAxNCwgNywgMjIzLCAxNzYsIDE0LCA3LCAyMjMsIDE3NCwgCisgICAgMTQsIDcsIDIyMywgMTcyLCAxNCwgNywgMjIzLCAxNzAsIDE0LCA3LCAyMjMsIDE2OSwgMTQsIDcsIDIyMywgMTY3LCAxNCwgCisgICAgNywgMjIzLCAxNjUsIDE0LCA3LCAyMjMsIDE2MywgMTQsIDcsIDIyMywgMTYyLCAxNCwgNywgMjIzLCAxNjAsIDE0LCA3LCAKKyAgICAyMjMsIDE1OCwgMTQsIDcsIDIyMywgMTU3LCAxNCwgNywgMjIzLCAxNTYsIDE0LCA3LCAyMjMsIDE1NCwgMTQsIDcsIDIyMywgCisgICAgMTUyLCAxNCwgNywgMjIzLCAxNTAsIDE0LCA3LCAyMjMsIDE0OCwgMTQsIDcsIDIyMywgMTQ2LCAxNCwgNywgMjIzLCAxNDQsIAorICAgIDE0LCA3LCAyMjMsIDE0MiwgMTQsIDcsIDIyMywgMTQxLCAxNCwgNywgMjIzLCAxMzksIDE0LCA3LCAyMjMsIDEzNywgMTQsIAorICAgIDcsIDIyMywgMTM1LCAxNCwgNywgMjIzLCAxMzMsIDE0LCA3LCAyMjAsIDIxMSwgMTQsIDcsIDIyMCwgMjEwLCAxNCwgNywgCisgICAgMjIwLCAyMDksIDE0LCA3LCAyMjAsIDIwOCwgMTQsIDcsIDIyMCwgMjA3LCAxNCwgNywgMjIwLCAyMDYsIDE0LCA3LCAyMjAsIAorICAgIDIwNSwgMTQsIDcsIDIyMCwgMjA0LCAxNCwgNywgMjIwLCAyMDMsIDE0LCA3LCAyMjAsIDIwMiwgMTQsIDcsIDIyMCwgMjAxLCAKKyAgICAxNCwgNywgMjIwLCAyMDAsIDE0LCA3LCAyMjAsIDE5OSwgMTQsIDcsIDIyMCwgMTk4LCAxNCwgNywgMjIwLCAxOTcsIDE0LCAKKyAgICA3LCAyMjAsIDE5NiwgMTQsIDcsIDIyMCwgMTk1LCAxNCwgNywgMjIwLCAxOTQsIDE0LCA3LCAyMjAsIDE5MywgMTQsIDcsIAorICAgIDIyMCwgMTkyLCAxNCwgNywgMjIwLCAxOTEsIDE0LCA3LCAyMjAsIDE5MCwgMTQsIDcsIDIyMCwgMTg5LCAxNCwgNywgMjIwLCAKKyAgICAxODgsIDE0LCA3LCAyMjAsIDE4NywgMTQsIDcsIDIyMCwgMTg2LCAxNCwgNywgMjIwLCAxODUsIDE0LCA3LCAyMjAsIDE4NCwgCisgICAgMTQsIDcsIDIyMCwgMTgzLCAxNCwgNywgMjIwLCAxODIsIDE0LCA3LCAyMjAsIDE4MSwgMTQsIDcsIDIyMCwgMTgwLCAxNCwgCisgICAgNywgMjIwLCAxNzksIDE0LCA3LCAyMjAsIDE3OCwgMTQsIDcsIDIyMCwgMTc3LCAxNCwgNywgMjIwLCAxNzYsIDE0LCA3LCAKKyAgICAyMjAsIDE3NSwgMTQsIDcsIDIyMCwgMTc0LCAxNCwgNywgMjIwLCAxNzMsIDE0LCA3LCAyMjAsIDE3MiwgMTQsIDcsIDIyMCwgCisgICAgMTcxLCAxNCwgNywgMjIwLCAxNzAsIDE0LCA3LCAyMjAsIDE2OSwgMTQsIDcsIDIyMCwgMTY4LCAxNCwgNywgMjIwLCAxNjcsIAorICAgIDE0LCA3LCAyMjAsIDE2NiwgMTQsIDcsIDIyMCwgMTY1LCAxNCwgNywgMjIwLCAxNjQsIDE0LCA3LCAyMjAsIDE2MywgMTQsIAorICAgIDcsIDIxOSwgNDYsIDE0LCA3LCAyMTksIDQ1LCAxNCwgNywgMjE5LCA0NCwgMTQsIDcsIDIxOSwgNDMsIDE0LCA3LCAyMTksIAorICAgIDQyLCAxNCwgNywgMjE5LCA0MSwgMTQsIDcsIDIxOSwgNDAsIDE0LCA3LCAyMTksIDM5LCAxNCwgNywgMjE5LCAzOCwgMTQsIAorICAgIDcsIDIxOSwgMzcsIDE0LCA3LCAyMTksIDM2LCAxNCwgNywgMjE5LCAzNSwgMTQsIDcsIDIxOSwgMzQsIDE0LCA3LCAyMTksIAorICAgIDMzLCAxNCwgNywgMjE5LCAzMiwgMTQsIDcsIDIxOSwgMzEsIDE0LCA3LCAyMTksIDMwLCAxNCwgNywgMjE5LCAyOSwgMTQsIAorICAgIDcsIDIxOSwgMjgsIDE0LCA3LCAyMTksIDI3LCAxNCwgNywgMjE5LCAyNiwgMTQsIDcsIDIxOSwgMjUsIDE0LCA3LCAyMTgsIAorICAgIDEzMiwgMTQsIDcsIDIxOCwgMTMxLCAxNCwgNywgMjE4LCAxMzAsIDE0LCA3LCAyMTgsIDEyOSwgMTQsIDcsIDIxOCwgMTI4LCAKKyAgICAxNCwgNywgMjE4LCAxMjcsIDE0LCA3LCAyMTgsIDEyNiwgMTQsIDcsIDIxOCwgMTI1LCAxNCwgNywgMjE4LCAxMjQsIDE0LCAKKyAgICA3LCAyMTgsIDEyMywgMTQsIDcsIDIxOCwgMTIyLCAxNCwgNywgMjE4LCAxMjEsIDE0LCA3LCAyMTgsIDEyMCwgMTQsIDcsIAorICAgIDIxOCwgMTE5LCAxNCwgNywgMjE4LCAxMTgsIDE0LCA3LCAyMTgsIDExNywgMTQsIDcsIDIxOCwgMTE2LCAxNCwgNywgMjE4LCAKKyAgICAxMTUsIDE0LCA3LCAyMTgsIDExNCwgMTQsIDcsIDIxOCwgMTEzLCAxNCwgNywgMjE4LCAxMTIsIDE0LCA3LCAyMTgsIDExMSwgCisgICAgMTQsIDcsIDIxOCwgMTEwLCAxNCwgNywgMjE4LCAxMDksIDE0LCA3LCAyMTgsIDEwOCwgMTQsIDcsIDIxOCwgMTA3LCAxNCwgCisgICAgNywgMjE3LCAyMjIsIDE0LCA3LCAyMTcsIDIyMSwgMTQsIDcsIDIxNywgMjIwLCAxNCwgNywgMjE3LCAyMTksIDE0LCA3LCAKKyAgICAyMTcsIDIxOCwgMTQsIDcsIDIxNywgMjE3LCAxNCwgNywgMjE3LCAyMTYsIDE0LCA3LCAyMTcsIDIxNSwgMTQsIDcsIDIxNywgCisgICAgMjE0LCAxNCwgNywgMjE3LCAyMTMsIDE0LCA3LCAyMTcsIDIxMiwgMTQsIDcsIDIxNywgMjExLCAxNCwgNywgMjE3LCAyMTAsIAorICAgIDE0LCA3LCAyMTcsIDIwOSwgMTQsIDcsIDIxNywgMjA4LCAxNCwgNywgMjE3LCAyMDcsIDE0LCA3LCAyMTcsIDIwNiwgMTQsIAorICAgIDcsIDIxNywgMjA1LCAxNCwgNywgMjE3LCAyMDQsIDE0LCA3LCAyMTcsIDIwMywgMTQsIDcsIDIxNywgMjAyLCAxNCwgNywgCisgICAgMjE3LCAyMDEsIDE0LCA3LCAyMTcsIDIwMCwgMTQsIDcsIDIxNywgMTk5LCAxNCwgNywgMjE3LCAxOTgsIDE0LCA3LCAyMTcsIAorICAgIDE5NywgMTQsIDcsIDIxNywgMTk2LCAxNCwgNywgMjE3LCAxOTUsIDE0LCA3LCAyMTcsIDE5NCwgMTQsIDcsIDIxNywgMTkzLCAKKyAgICAxNCwgNywgMjE3LCAxOTIsIDE0LCA3LCAyMTcsIDE5MSwgMTQsIDcsIDIxNywgMTkwLCAxNCwgNywgMjE3LCAxODksIDE0LCAKKyAgICA3LCAyMTcsIDE4OCwgMTQsIDcsIDIxNywgMTg3LCAxNCwgNywgMjE3LCAxODYsIDE0LCA3LCAyMTcsIDE4NSwgMTQsIDcsIAorICAgIDIxNywgMTg0LCAxNCwgNywgMjE3LCAxODMsIDE0LCA3LCAyMTcsIDE4MiwgMTQsIDcsIDIxNywgMTgxLCAxNCwgNywgMjE3LCAKKyAgICAxODAsIDE0LCA3LCAyMTcsIDE3OSwgMTQsIDcsIDIxNywgMTc4LCAxNCwgNywgMjE3LCAxNzcsIDE0LCA3LCAyMTcsIDE3NiwgCisgICAgMTQsIDcsIDIxNywgMTc1LCAxNCwgNywgMjE3LCAxNzQsIDE0LCA3LCAyMTcsIDE3MywgMTQsIDcsIDIxNywgMTcyLCAxNCwgCisgICAgNywgMjE3LCAxNzEsIDE0LCA3LCAyMTcsIDE3MCwgMTQsIDcsIDIxNywgMTY5LCAxNCwgNywgMjE3LCAxNjgsIDE0LCA3LCAKKyAgICAyMTcsIDE2NywgMTQsIDcsIDIxNywgMTY2LCAxNCwgNywgMjE3LCAxNjUsIDE0LCA3LCAyMTcsIDE2NCwgMTQsIDcsIDIxNywgCisgICAgMTYzLCAxNCwgNywgMjE3LCAxNjIsIDE0LCA3LCAyMTcsIDE2MSwgMTQsIDcsIDIxNywgMTYwLCAxNCwgNywgMjE3LCAxNTksIAorICAgIDE0LCA3LCAyMTcsIDE1OCwgMTQsIDcsIDIxNywgMTU3LCAxNCwgNywgMjE3LCAxNTYsIDE0LCA3LCAyMTcsIDE1NSwgMTQsIAorICAgIDcsIDIxNywgMTU0LCAxNCwgNywgMjE3LCAxNTMsIDE0LCA3LCAyMTcsIDE1MiwgMTQsIDcsIDIxNywgMTUxLCAxNCwgNywgCisgICAgMjE3LCAxNTAsIDE0LCA3LCAyMTcsIDE0OSwgMTQsIDcsIDIxNywgMTQ4LCAxNCwgNywgMjE2LCAyMjUsIDE0LCA3LCAyMTYsIAorICAgIDIyNCwgMTQsIDcsIDIxNiwgMjIzLCAxNCwgNywgMjE2LCAyMjIsIDE0LCA3LCAyMTYsIDIyMSwgMTQsIDcsIDIxNiwgMjIwLCAKKyAgICAxNCwgNywgMjE2LCAyMTksIDE0LCA3LCAyMTYsIDIxOCwgMTQsIDcsIDIxNiwgMjE3LCAxNCwgNywgMjE2LCAyMTYsIDE0LCAKKyAgICA3LCAyMTYsIDIxNSwgMTQsIDcsIDIxNiwgMjE0LCAxNCwgNywgMjE2LCAyMTMsIDE0LCA3LCAyMTQsIDE2NiwgMTQsIDcsIAorICAgIDIxNCwgMTY1LCAxNCwgNywgMjE0LCAxNjQsIDE0LCA3LCAyMTQsIDE2MywgMTQsIDcsIDIxNCwgMTYyLCAxNCwgNywgMjE0LCAKKyAgICAxNjEsIDE0LCA3LCAyMTQsIDE2MCwgMTQsIDcsIDIxNCwgMzEsIDE0LCA3LCAyMTQsIDMwLCAxNCwgNywgMjE0LCAyOSwgMTQsIAorICAgIDcsIDIxNCwgMjgsIDE0LCA3LCAyMTQsIDI3LCAxNCwgNywgMjE0LCAyNiwgMTQsIDcsIDIxNCwgMjUsIDE0LCA3LCAyMTQsIAorICAgIDI0LCAxNCwgNywgMjE0LCAyMywgMTQsIDcsIDIxNCwgMjIsIDE0LCA3LCAyMTQsIDIxLCAxNCwgNywgMjE0LCAyMCwgMTQsIAorICAgIDcsIDIxNCwgMTksIDE0LCA3LCAyMTQsIDE4LCAxNCwgNywgMjE0LCAxNywgMTQsIDcsIDIxNCwgMTYsIDE0LCA3LCAyMTQsIAorICAgIDE1LCAxNCwgNywgMjE0LCAxNCwgMTQsIDcsIDIxNCwgMTMsIDE0LCA3LCAyMTQsIDEyLCAxNCwgNywgMjE0LCAxMSwgMTQsIAorICAgIDcsIDIxNCwgMTAsIDE0LCA3LCAyMTQsIDksIDE0LCA3LCAyMTQsIDgsIDE0LCA3LCAyMTQsIDcsIDE0LCA3LCAyMTQsIDYsIAorICAgIDE0LCA3LCAyMTQsIDUsIDE0LCA3LCAyMTQsIDQsIDE0LCA3LCAyMTQsIDMsIDE0LCA3LCAyMTQsIDIsIDE0LCA3LCAyMTQsIAorICAgIDEsIDE0LCA3LCAyMTQsIDAsIDE0LCA3LCAyMTMsIDI1NSwgMTQsIDcsIDIxMywgMjU0LCAxNCwgNywgMjEyLCAxMTksIDE0LCAKKyAgICA3LCAyMTIsIDExOCwgMTQsIDcsIDIxMiwgMTE3LCAxNCwgNywgMjEyLCAxMTYsIDE0LCA3LCAyMTIsIDExNSwgMTQsIDcsIAorICAgIDIxMiwgMTE0LCAxNCwgNywgMjEyLCAxMTMsIDE0LCA3LCAyMTIsIDExMiwgMTQsIDcsIDIxMiwgMTExLCAxNCwgNywgMjEyLCAKKyAgICAxMTAsIDE0LCA3LCAyMTIsIDEwOSwgMTQsIDcsIDIxMiwgMTA4LCAxNCwgNywgMjEyLCAxMDcsIDE0LCA3LCAyMTIsIDEwNiwgCisgICAgMTQsIDcsIDIxMiwgMTA1LCAxNCwgNywgMjEyLCAxMDQsIDE0LCA3LCAyMTIsIDEwMywgMTQsIDcsIDIxMiwgMTAyLCAxNCwgCisgICAgNywgMjEyLCAxMDEsIDE0LCA3LCAyMTIsIDEwMCwgMTQsIDcsIDIxMiwgOTksIDE0LCA3LCAyMTIsIDk4LCAxNCwgNywgMjEyLCAKKyAgICA5NywgMTQsIDcsIDIxMiwgOTYsIDE0LCA3LCAyMTIsIDk1LCAxNCwgNywgMjEyLCA5NCwgMTQsIDcsIDIxMiwgOTMsIDE0LCAKKyAgICA3LCAyMTIsIDkyLCAxNCwgNywgMjEyLCA5MSwgMTQsIDcsIDIxMiwgOTAsIDE0LCA3LCAyMTIsIDg5LCAxNCwgNywgMjEyLCAKKyAgICA4OCwgMTQsIDcsIDIxMiwgODcsIDE0LCA3LCAyMTIsIDg2LCAxNCwgNywgMjEyLCA4NSwgMTQsIDcsIDIxMiwgODQsIDE0LCAKKyAgICA3LCAyMTIsIDgzLCAxNCwgNywgMjEyLCA4MiwgMTQsIDcsIDIxMiwgODEsIDE0LCA3LCAyMTIsIDgwLCAxNCwgNywgMjEyLCAKKyAgICA3OSwgMTQsIDcsIDIxMiwgNzgsIDE0LCA3LCAyMTIsIDc3LCAxNCwgNywgMjEyLCA3NiwgMTQsIDcsIDIxMiwgNzUsIDE0LCAKKyAgICA3LCAyMTIsIDc0LCAxNCwgNywgMjEyLCA3MywgMTQsIDcsIDIxMiwgNzIsIDE0LCA3LCAyMTIsIDcxLCAxNCwgNywgMjEyLCAKKyAgICA3MCwgMTQsIDcsIDIxMiwgNjksIDE0LCA3LCAyMTIsIDY4LCAxNCwgNywgMjEyLCA2NywgMTQsIDcsIDIxMiwgNjYsIDE0LCAKKyAgICA3LCAyMDcsIDgxLCAxNCwgNywgMjA3LCA4MCwgMTQsIDcsIDIwNywgNzksIDE0LCA3LCAyMDcsIDc4LCAxNCwgNywgMjA3LCAKKyAgICA3NywgMTQsIDcsIDIwNywgNzYsIDE0LCA3LCAyMDcsIDc1LCAxNCwgNywgMjA3LCA3NCwgMTQsIDcsIDIwNywgNzMsIDE0LCAKKyAgICA3LCAyMDcsIDcyLCAxNCwgNywgMjA3LCA3MSwgMTQsIDcsIDIwNywgNzAsIDE0LCA3LCAyMDcsIDY5LCAxNCwgNywgMjA3LCAKKyAgICA2OCwgMTQsIDcsIDIwNywgNjcsIDE0LCA3LCAyMDcsIDY2LCAxNCwgNywgMjA3LCA2NSwgMTQsIDcsIDIwNywgNjQsIDE0LCAKKyAgICA3LCAyMDcsIDYzLCAxNCwgNywgMjA3LCA2MiwgMTQsIDcsIDIwNywgNjEsIDE0LCA3LCAyMDcsIDYwLCAxNCwgNywgMjA3LCAKKyAgICA1OSwgMTQsIDcsIDIwNywgNTgsIDE0LCA3LCAyMDcsIDU3LCAxNCwgNywgMjA3LCA1NiwgMTQsIDcsIDIwNywgNTUsIDE0LCAKKyAgICA3LCAyMDcsIDU0LCAxNCwgNywgMjA3LCA1MywgMTQsIDcsIDIwNywgNTIsIDE0LCA3LCAyMDcsIDUxLCAxNCwgNywgMjA3LCAKKyAgICA1MCwgMTQsIDcsIDIwNywgNDksIDE0LCA3LCAyMDcsIDQ4LCAxNCwgNywgMjA3LCA0NywgMTQsIDcsIDIwNywgNDYsIDE0LCAKKyAgICA3LCAyMDcsIDQ1LCAxNCwgNywgMjA3LCA0NCwgMTQsIDcsIDIwNywgNDMsIDE0LCA3LCAyMDcsIDQyLCAxNCwgNywgMjA3LCAKKyAgICA0MSwgMTQsIDcsIDIwNywgNDAsIDE0LCA3LCAyMDcsIDM5LCAxNCwgNywgMjA3LCAzOCwgMTQsIDcsIDIwNCwgOTUsIDE0LCAKKyAgICA3LCAyMDQsIDk0LCAxNCwgNywgMjA0LCA5MywgMTQsIDcsIDIwNCwgOTIsIDE0LCA3LCAyMDQsIDkxLCAxNCwgNywgMjA0LCAKKyAgICA5MCwgMTQsIDcsIDIwNCwgODksIDE0LCA3LCAyMDQsIDg4LCAxNCwgNywgMjA0LCA4NywgMTQsIDcsIDIwNCwgODYsIDE0LCAKKyAgICA3LCAyMDQsIDg1LCAxNCwgNywgMjA0LCA4NCwgMTQsIDcsIDIwNCwgODMsIDE0LCA3LCAyMDQsIDgyLCAxNCwgNywgMjA0LCAKKyAgICA4MSwgMTQsIDcsIDIwNCwgODAsIDE0LCA3LCAyMDQsIDc5LCAxNCwgNywgMjA0LCA3OCwgMTQsIDcsIDIwNCwgNzcsIDE0LCAKKyAgICA3LCAyMDQsIDc2LCAxNCwgNywgMjA0LCA3NSwgMTQsIDcsIDIwNCwgNzQsIDE0LCA3LCAyMDQsIDczLCAxNCwgNywgMjA0LCAKKyAgICA3MiwgMTQsIDcsIDIwNCwgNzEsIDE0LCA3LCAyMDQsIDcwLCAxNCwgNywgMjA0LCA2OSwgMTQsIDcsIDIwNCwgNjgsIDE0LCAKKyAgICA3LCAyMDQsIDY3LCAxNCwgNywgMjA0LCA2NiwgMTQsIDcsIDIwNCwgNjUsIDE0LCA3LCAyMDQsIDY0LCAxNCwgNywgMjA0LCAKKyAgICA2MywgMTQsIDcsIDIwNCwgNjIsIDE0LCA3LCAyMDQsIDYxLCAxNCwgNywgMjA0LCA2MCwgMTQsIDcsIDIwNCwgNTksIDE0LCAKKyAgICA3LCAyMDQsIDU4LCAxNCwgNywgMjA0LCA1NywgMTQsIDcsIDIwNCwgNTYsIDE0LCA3LCAyMDQsIDU1LCAxNCwgNywgMjA0LCAKKyAgICA1NCwgMTQsIDcsIDIwNCwgNTMsIDE0LCA3LCAyMDQsIDUyLCAxNCwgNywgMjA0LCA1MSwgMTQsIDcsIDIwNCwgNTAsIDE0LCAKKyAgICA3LCAyMDQsIDQ5LCAxNCwgNywgMjAzLCAxNjcsIDE0LCA3LCAyMDMsIDE2NiwgMTQsIDcsIDIwMywgMTY1LCAxNCwgNywgCisgICAgMjAzLCAxNjQsIDE0LCA3LCAyMDMsIDE2MywgMTQsIDcsIDIwMywgMTYyLCAxNCwgNywgMjAzLCAxNjEsIDE0LCA3LCAyMDMsIAorICAgIDE2MCwgMTQsIDcsIDIwMywgMTU5LCAxNCwgNywgMjAzLCAxNTgsIDE0LCA3LCAyMDMsIDE1NywgMTQsIDcsIDIwMywgMTU2LCAKKyAgICAxNCwgNywgMjAzLCAxNTUsIDE0LCA3LCAyMDMsIDE1NCwgMTQsIDcsIDIwMywgMTUzLCAxNCwgNywgMjAzLCAxNTIsIDE0LCAKKyAgICA3LCAyMDMsIDE1MSwgMTQsIDcsIDIwMywgMTUwLCAxNCwgNywgMjAzLCAxNDksIDE0LCA3LCAyMDMsIDE0OCwgMTQsIDcsIAorICAgIDIwMywgMTQ3LCAxNCwgNywgMjAzLCAxNDYsIDE0LCA3LCAyMDMsIDE0NSwgMTQsIDcsIDIwMywgMTQ0LCAxNCwgNywgMjAzLCAKKyAgICAxNDMsIDE0LCA3LCAyMDMsIDE0MiwgMTQsIDcsIDIwMywgMTQxLCAxNCwgNywgMjAzLCAxNDAsIDE0LCA3LCAyMDMsIDEzOSwgCisgICAgMTQsIDcsIDIwMywgMTM4LCAxNCwgNywgMjAzLCAxMzcsIDE0LCA3LCAyMDMsIDEzNiwgMTQsIDcsIDIwMywgMTM1LCAxNCwgCisgICAgNywgMjAzLCAxMzQsIDE0LCA3LCAyMDMsIDEzMywgMTQsIDcsIDIwMywgMTMyLCAxNCwgNywgMjAzLCAxMzEsIDE0LCA3LCAKKyAgICAyMDMsIDEzMCwgMTQsIDcsIDIwMywgMTI5LCAxNCwgNywgMjAzLCAxMjgsIDE0LCA3LCAyMDMsIDEyNywgMTQsIDcsIDIwMywgCisgICAgMTI2LCAxNCwgNywgMjAzLCAxMjUsIDE0LCA3LCAyMDMsIDEyNCwgMTQsIDcsIDIwMywgMTIzLCAxNCwgNywgMjAzLCAxMjIsIAorICAgIDE0LCA3LCAyMDMsIDEyMSwgMTQsIDcsIDIwMywgMTIwLCAxNCwgNywgMjAzLCAxMTksIDE0LCA3LCAyMDMsIDExOCwgMTQsIAorICAgIDcsIDIwMywgMTE3LCAxNCwgNywgMjAzLCAxMTYsIDE0LCA3LCAyMDMsIDExNSwgMTQsIDcsIDIwMywgMTE0LCAxNCwgNywgCisgICAgMjAzLCAxMTMsIDE0LCA3LCAyMDMsIDExMiwgMTQsIDcsIDIwMywgMTExLCAxNCwgNywgMjAzLCAxMTAsIDE0LCA3LCAyMDMsIAorICAgIDEwOSwgMTQsIDcsIDIwMywgMTA4LCAxNCwgNywgMjAzLCAxMDcsIDE0LCA3LCAyMDMsIDEwNiwgMTQsIDcsIDIwMywgMTA1LCAKKyAgICAxNCwgNywgMjAzLCAxMDQsIDE0LCA3LCAyMDMsIDEwMywgMTQsIDcsIDIwMywgMTAyLCAxNCwgNywgMjAzLCAxMDEsIDE0LCAKKyAgICA3LCAyMDMsIDEwMCwgMTQsIDcsIDIwMywgOTksIDE0LCA3LCAyMDMsIDk4LCAxNCwgNywgMjAzLCA5NywgMTQsIDcsIDIwMywgCisgICAgOTYsIDE0LCA3LCAyMDMsIDk1LCAxNCwgNywgMjAzLCA5NCwgMTQsIDcsIDIwMywgOTMsIDE0LCA3LCAyMDMsIDkyLCAxNCwgCisgICAgNywgMjAzLCA5MSwgMTQsIDcsIDIwMSwgMTQ2LCAxNCwgNywgMjAxLCAxNDUsIDE0LCA3LCAyMDEsIDE0NCwgMTQsIDcsIAorICAgIDIwMSwgMTQzLCAxNCwgNywgMjAxLCAxNDIsIDE0LCA3LCAyMDEsIDE0MSwgMTQsIDcsIDIwMSwgMTQwLCAxNCwgNywgMjAxLCAKKyAgICAxMzksIDE0LCA3LCAyMDEsIDEzOCwgMTQsIDcsIDIwMSwgMTM3LCAxNCwgNywgMjAxLCAxMzYsIDE0LCA3LCAyMDEsIDEzNSwgCisgICAgMTQsIDcsIDIwMSwgMTM0LCAxNCwgNywgMjAxLCAxMzMsIDE0LCA3LCAyMDEsIDEzMiwgMTQsIDcsIDIwMSwgMTMxLCAxNCwgCisgICAgNywgMjAxLCAxMzAsIDE0LCA3LCAyMDEsIDEyOSwgMTQsIDcsIDIwMSwgMTI4LCAxNCwgNywgMjAxLCAxMjcsIDE0LCA3LCAKKyAgICAyMDEsIDEyNiwgMTQsIDcsIDIwMSwgMTI1LCAxNCwgNywgMjAxLCAxMjQsIDE0LCA3LCAyMDEsIDEyMywgMTQsIDcsIDIwMSwgCisgICAgMTIyLCAxNCwgNywgMjAxLCAxMjEsIDE0LCA3LCAyMDEsIDEyMCwgMTQsIDcsIDIwMSwgMTE5LCAxNCwgNywgMjAxLCAxMTgsIAorICAgIDE0LCA3LCAyMDEsIDExNywgMTQsIDcsIDIwMSwgMTE2LCAxNCwgNywgMjAxLCAxMTUsIDE0LCA3LCAyMDAsIDE5MywgMTQsIAorICAgIDcsIDIwMCwgMTkyLCAxNCwgNywgMjAwLCAxOTEsIDE0LCA3LCAyMDAsIDE5MCwgMTQsIDcsIDIwMCwgMTg5LCAxNCwgNywgCisgICAgMjAwLCAxODgsIDE0LCA3LCAyMDAsIDE4NywgMTQsIDcsIDIwMCwgMTg2LCAxNCwgNywgMjAwLCAxODUsIDE0LCA3LCAyMDAsIAorICAgIDE4NCwgMTQsIDcsIDIwMCwgMTgzLCAxNCwgNywgMjAwLCAxODIsIDE0LCA3LCAyMDAsIDEyMSwgMTQsIDcsIDIwMCwgMTIwLCAKKyAgICAxNCwgNywgMjAwLCAxMTksIDE0LCA3LCAyMDAsIDExOCwgMTQsIDcsIDIwMCwgMTE3LCAxNCwgNywgMjAwLCAxMTYsIDE0LCAKKyAgICA3LCAyMDAsIDExNSwgMTQsIDcsIDIwMCwgMTE0LCAxNCwgNywgMjAwLCAxMTMsIDE0LCA3LCAxOTksIDE1NiwgMTQsIDcsIAorICAgIDE5OSwgMTU1LCAxNCwgNywgMTk5LCAxNTQsIDE0LCA3LCAxOTksIDE1MywgMTQsIDcsIDE5OSwgMTUyLCAxNCwgNywgMTk5LCAKKyAgICAxNTEsIDE0LCA3LCAxOTksIDE1MCwgMTQsIDcsIDE5OSwgMTQ5LCAxNCwgNywgMTk5LCAxNDgsIDE0LCA3LCAxOTksIDE0NywgCisgICAgMTQsIDcsIDE5OSwgMTQ2LCAxNCwgNywgMTk5LCAxNDUsIDE0LCA3LCAxOTksIDE0NCwgMTQsIDcsIDE5OSwgMTQzLCAxNCwgCisgICAgNywgMTk5LCAxNDIsIDE0LCA3LCAxOTksIDE0MSwgMTQsIDcsIDE5OSwgMTQwLCAxNCwgNywgMTk5LCAxMzksIDE0LCA3LCAKKyAgICAxOTksIDEzOCwgMTQsIDcsIDE5OSwgMTM3LCAxNCwgNywgMTk5LCAxMzYsIDE0LCA3LCAxOTksIDEzNSwgMTQsIDcsIDE5OSwgCisgICAgMTM0LCAxNCwgNywgMTk5LCAxMzMsIDE0LCA3LCAxOTksIDEzMiwgMTQsIDcsIDE5OSwgMTMxLCAxNCwgNywgMTk5LCAxMzAsIAorICAgIDE0LCA3LCAxOTksIDEyOSwgMTQsIDcsIDE5OSwgMTI4LCAxNCwgNywgMTk5LCAxMjcsIDE0LCA3LCAxOTksIDEyNiwgMTQsIAorICAgIDcsIDE5OSwgMTI1LCAxNCwgNywgMTk5LCAxMjQsIDE0LCA3LCAxOTksIDEyMywgMTQsIDcsIDE5OSwgMTIyLCAxNCwgNywgCisgICAgMTk5LCAxMjEsIDE0LCA3LCAxOTksIDEyMCwgMTQsIDcsIDE5OSwgMTE5LCAxNCwgNywgMTk5LCAxMTgsIDE0LCA3LCAxOTksIAorICAgIDExNywgMTQsIDcsIDE5OSwgMTE2LCAxNCwgNywgMjUyLCAxMzcsIDE0LCA3LCAyNTIsIDEzNiwgMTQsIDcsIDI1MiwgMTM1LCAKKyAgICAxNCwgNywgMjUyLCAxMzQsIDE0LCA3LCAyNTIsIDEzMywgMTQsIDcsIDI1MiwgMTMyLCAxNCwgNywgMjUyLCAxMzEsIDE0LCAKKyAgICA3LCAyNTIsIDEzMCwgMTQsIDcsIDI1MiwgMTI5LCAxNCwgNywgMjUyLCAxMjgsIDE0LCA3LCAyNTIsIDEyNywgMTQsIDcsIAorICAgIDI1MiwgMTI2LCAxNCwgNywgMjUyLCAxMjUsIDE0LCA3LCAyNTIsIDEyNCwgMTQsIDcsIDI1MiwgMTIzLCAxNCwgNywgMjUyLCAKKyAgICAxMjIsIDE0LCA3LCAyNTIsIDEyMSwgMTQsIDcsIDI1MiwgMTIwLCAxNCwgNywgMjUyLCAxMTksIDE0LCA3LCAyNTIsIDExOCwgCisgICAgMTQsIDcsIDI1MiwgMTE3LCAxNCwgNywgMjUyLCAxMTYsIDE0LCA3LCAyNTIsIDExNSwgMTQsIDcsIDI1MiwgMTE0LCAxNCwgCisgICAgNywgMjUyLCAxMTMsIDE0LCA3LCAyNTIsIDExMiwgMTQsIDcsIDI1MiwgMTExLCAxNCwgNywgMjUyLCAxMTAsIDE0LCA3LCAKKyAgICAyNTIsIDEwOSwgMTQsIDcsIDI1MiwgMTA4LCAxNCwgNywgMjUyLCAxMDcsIDE0LCA3LCAyNTIsIDEwNiwgMTQsIDcsIDI1MiwgCisgICAgMTA1LCAxNCwgNywgMjUyLCAxMDQsIDI4LCA3LCAyNTUsIDEzMSwgMjgsIDcsIDI1NSwgMTMwLCAyOCwgNywgMjU1LCAxMjksIAorICAgIDI4LCA3LCAyNTUsIDEyOCwgMjgsIDcsIDI1NSwgMTI3LCAyOCwgNywgMjU1LCAxMjUsIDI4LCA3LCAyNTUsIDEyMiwgMjgsIAorICAgIDcsIDI1NSwgMTIxLCAyOCwgNywgMjU1LCAxMjAsIDI4LCA3LCAyNTUsIDExOSwgMjgsIDcsIDI1NSwgMTE4LCAyOCwgNywgCisgICAgMjU1LCAxMTcsIDI4LCA3LCAyNTUsIDExNiwgMjgsIDcsIDI1NSwgMTE1LCAyOCwgNywgMjU1LCAxMTQsIDI4LCA3LCAyNTUsIAorICAgIDExMiwgMjgsIDcsIDI1NSwgMTExLCAyOCwgNywgMjU1LCAxMTAsIDI4LCA3LCAyNTUsIDEwOCwgMjgsIDcsIDI1NSwgMTA3LCAKKyAgICAyOCwgNywgMjU1LCAxMDYsIDI4LCA3LCAyNTUsIDEwNSwgMjgsIDcsIDI1NSwgMTA0LCAyOCwgNywgMjU1LCAxMDMsIDI4LCAKKyAgICA3LCAyNTUsIDEwMiwgMjgsIDcsIDI1NSwgMTAxLCAyOCwgNywgMjU1LCAxMDAsIDI4LCA3LCAyNTUsIDk5LCAyOCwgNywgCisgICAgMjU1LCA5OCwgMjgsIDcsIDI1NSwgOTcsIDI4LCA3LCAyNTUsIDk1LCAyOCwgNywgMjU1LCA5NCwgMjgsIDcsIDI1NSwgOTMsIAorICAgIDI4LCA3LCAyNTUsIDkyLCAyOCwgNywgMjU1LCA5MCwgMjgsIDcsIDI1NSwgODksIDI4LCA3LCAyNTUsIDg4LCAyOCwgNywgCisgICAgMjU1LCA4NywgMjgsIDcsIDI1NSwgODYsIDI4LCA3LCAyNTUsIDg1LCAyOCwgNywgMjU1LCA4NCwgMjgsIDcsIDI1NSwgODMsIAorICAgIDI4LCA3LCAyNTUsIDgyLCAyOCwgNywgMjU1LCA4MCwgMjgsIDcsIDI1NSwgNzksIDI4LCA3LCAyNTUsIDc4LCAyOCwgNywgCisgICAgMjU1LCA3NiwgMjgsIDcsIDI1NSwgNzQsIDI4LCA3LCAyNTUsIDczLCAyOCwgNywgMjU1LCA3MiwgMjgsIDcsIDI1NSwgNzEsIAorICAgIDI4LCA3LCAyNTUsIDcwLCAyOCwgNywgMjU1LCA2OSwgMjgsIDcsIDI1NSwgNjgsIDI4LCA3LCAyNTUsIDY3LCAyOCwgNywgCisgICAgMjU1LCA2NiwgMjgsIDcsIDI1NSwgNjUsIDI4LCA3LCAyNTUsIDY0LCAyOCwgNywgMjU1LCA2MywgMjgsIDcsIDI1NSwgNjIsIAorICAgIDI4LCA3LCAyNTUsIDYxLCAyOCwgNywgMjU1LCA2MCwgMjgsIDcsIDI1NSwgNTksIDI4LCA3LCAyNTUsIDU4LCAyOCwgNywgCisgICAgMjU1LCA1NywgMjgsIDcsIDI1NSwgNTYsIDI4LCA3LCAyNTUsIDU1LCAyOCwgNywgMjU1LCA1NCwgMjgsIDcsIDI1NSwgNTMsIAorICAgIDI4LCA3LCAyNTUsIDUyLCAyOCwgNywgMjU1LCA1MSwgMjgsIDcsIDI1NSwgNTAsIDI4LCA3LCAyNTUsIDQ5LCAyOCwgNywgCisgICAgMjU1LCA0OCwgMjgsIDcsIDI1NSwgNDcsIDI4LCA3LCAyNTUsIDQ2LCAyOCwgNywgMjU1LCA0NSwgMjgsIDcsIDI1NSwgNDQsIAorICAgIDI4LCA3LCAyNTUsIDQzLCAyOCwgNywgMjU1LCA0MiwgMjgsIDcsIDI1NSwgNDEsIDI4LCA3LCAyNTUsIDQwLCAyOCwgNywgCisgICAgMjU1LCAzOSwgMjgsIDcsIDI1NSwgMzgsIDI4LCA3LCAyNTUsIDM3LCAyOCwgNywgMjU1LCAzNiwgMjgsIDcsIDI1NSwgMzUsIAorICAgIDI4LCA3LCAyNTUsIDM0LCAyOCwgNywgMjU1LCAzMywgMjgsIDcsIDI1NSwgMzIsIDI4LCA3LCAyNTUsIDMxLCAyOCwgNywgCisgICAgMjU1LCAzMCwgMjgsIDcsIDI1NSwgMjksIDI4LCA3LCAyNTUsIDI4LCAyOCwgNywgMjU1LCAyNywgMjgsIDcsIDI1NSwgMjYsIAorICAgIDI4LCA3LCAyNTUsIDI1LCAyOCwgNywgMjU1LCAyNCwgMjgsIDcsIDI1NSwgMjMsIDI4LCA3LCAyNTUsIDIyLCAyOCwgNywgCisgICAgMjU1LCAyMSwgMjgsIDcsIDI1NSwgMjAsIDI4LCA3LCAyNTUsIDE5LCAyOCwgNywgMjU1LCAxOCwgMjgsIDcsIDI1NSwgMTcsIAorICAgIDI4LCA3LCAyNTUsIDE2LCAyOCwgNywgMjU1LCAxNSwgMjgsIDcsIDI1NSwgMTQsIDI4LCA3LCAyNTUsIDEzLCAyOCwgNywgCisgICAgMjU1LCAxMiwgMjgsIDcsIDI1NSwgMTEsIDI4LCA3LCAyNTUsIDEwLCAyOCwgNywgMjU1LCA4LCAyOCwgNywgMjU1LCA3LCAKKyAgICAyOCwgNywgMjU1LCA2LCAyOCwgNywgMjU1LCA1LCAyOCwgNywgMjU1LCA0LCAyOCwgNywgMjU1LCAzLCAyOCwgNywgMjU1LCAKKyAgICAyLCAyOCwgNywgMjU1LCAxLCAyOCwgNywgMjU1LCAwLCAyOCwgNywgMjU0LCAyNTUsIDI4LCA3LCAyNTQsIDI1NCwgMjgsIDcsIAorICAgIDI1NCwgMjUzLCAyOCwgNywgMjU0LCAyNTIsIDI4LCA3LCAyNTQsIDI1MSwgMjgsIDcsIDI1NCwgMjUwLCAyOCwgNywgMjU0LCAKKyAgICAyNDksIDI4LCA3LCAyNTQsIDI0OCwgMjgsIDcsIDI1NCwgMjQ3LCAyOCwgNywgMjU0LCAyNDYsIDI4LCA3LCAyNTQsIDI0NSwgCisgICAgMjgsIDcsIDI1NCwgMjQ0LCAyOCwgNywgMjU0LCAyNDMsIDI4LCA3LCAyNTQsIDI0MiwgMjgsIDcsIDI1NCwgMjQxLCAyOCwgCisgICAgNywgMjU0LCAyNDAsIDI4LCA3LCAyNTQsIDIzOSwgMjgsIDcsIDI1NCwgMjM4LCAyOCwgNywgMjU0LCAyMzcsIDI4LCA3LCAKKyAgICAyNTQsIDIzNiwgMjgsIDcsIDI1NCwgMjM1LCAyOCwgNywgMjU0LCAyMzQsIDI4LCA3LCAyNTQsIDIzMywgMjgsIDcsIDI1NCwgCisgICAgMjMyLCAyOCwgNywgMjU0LCAyMzEsIDI4LCA3LCAyNTQsIDIyOSwgMjgsIDcsIDI1NCwgMjI4LCAyOCwgNywgMjU0LCAyMjcsIAorICAgIDI4LCA3LCAyNTQsIDIyNiwgMjgsIDcsIDI1NCwgMjI1LCAyOCwgNywgMjU0LCAyMjQsIDI4LCA3LCAyNTQsIDIyMywgMjgsIAorICAgIDcsIDI1NCwgMjIyLCAyOCwgNywgMjU0LCAyMjEsIDI4LCA3LCAyNTQsIDIyMCwgMjgsIDcsIDI1NCwgMjE5LCAyOCwgNywgCisgICAgMjU0LCAyMTgsIDI4LCA3LCAyNTQsIDIxNiwgMjgsIDcsIDI1NCwgMjE1LCAyOCwgNywgMjU0LCAyMTQsIDI4LCA3LCAyNTQsIAorICAgIDIxMywgMjgsIDcsIDI1NCwgMjEyLCAyOCwgNywgMjU0LCAyMTEsIDI4LCA3LCAyNTQsIDIxMCwgMjgsIDcsIDI1NCwgMjA5LCAKKyAgICAyOCwgNywgMjU0LCAyMDgsIDI4LCA3LCAyNTQsIDIwNywgMjgsIDcsIDI1NCwgMjA2LCAyOCwgNywgMjU0LCAyMDUsIDI4LCAKKyAgICA3LCAyNTQsIDIwNCwgMjgsIDcsIDI1NCwgMjAzLCAyOCwgNywgMjU0LCAyMDIsIDI4LCA3LCAyNTQsIDIwMSwgMjgsIDcsIAorICAgIDI1NCwgMjAwLCAyOCwgNywgMjU0LCAxOTksIDI4LCA3LCAyNTQsIDE5OCwgMjgsIDcsIDI1NCwgMTk3LCAyOCwgNywgMjU0LCAKKyAgICAxOTYsIDI4LCA3LCAyNTQsIDE5NSwgMjgsIDcsIDI1NCwgMTk0LCAyOCwgNywgMjU0LCAxOTMsIDI4LCA3LCAyNTQsIDE5MiwgCisgICAgMjgsIDcsIDI1NCwgMTkxLCAyOCwgNywgMjU0LCAxOTAsIDI4LCA3LCAyNTQsIDE4OSwgMjgsIDcsIDI1NCwgMTg4LCAyOCwgCisgICAgNywgMjU0LCAxODcsIDI4LCA3LCAyNTQsIDE4NiwgMjgsIDcsIDI1NCwgMTg1LCAyOCwgNywgMjU0LCAxODQsIDI4LCA3LCAKKyAgICAyNTQsIDE4MywgMjgsIDcsIDI1NCwgMTgyLCAyOCwgNywgMjU0LCAxODEsIDI4LCA3LCAyNTQsIDE4MCwgMjgsIDcsIDI1NCwgCisgICAgMTc5LCAyOCwgNywgMjU0LCAxNzgsIDI4LCA3LCAyNTQsIDE3NywgMjgsIDcsIDI1NCwgMTc2LCAyOCwgNywgMjU0LCAxNzUsIAorICAgIDI4LCA3LCAyNTQsIDE3NCwgMjgsIDcsIDI1NCwgMTczLCAyOCwgNywgMjU0LCAxNzIsIDI4LCA3LCAyNTQsIDE3MSwgMjgsIAorICAgIDcsIDI1NCwgMTcwLCAyOCwgNywgMjU0LCAxNjksIDI4LCA3LCAyNTQsIDE2OCwgMjgsIDcsIDI1NCwgMTY3LCAyOCwgNywgCisgICAgMjU0LCAxNjYsIDI4LCA3LCAyNTQsIDE2NSwgMjgsIDcsIDI1NCwgMTY0LCAyOCwgNywgMjU0LCAxNjMsIDI4LCA3LCAyNTQsIAorICAgIDE2MiwgMjgsIDcsIDI1NCwgMTYxLCAyOCwgNywgMjU0LCAxNjAsIDI4LCA3LCAyNTQsIDE1OSwgMjgsIDcsIDI1NCwgMTU4LCAKKyAgICAyOCwgNywgMjU0LCAxNTcsIDI4LCA3LCAyNTQsIDE1NiwgMjgsIDcsIDI1NCwgMTU1LCAyOCwgNywgMjU0LCAxNTQsIDI4LCAKKyAgICA3LCAyNTQsIDE1MywgMjgsIDcsIDI1NCwgMTUyLCAyOCwgNywgMjU0LCAxNTEsIDI4LCA3LCAyNTQsIDE1MCwgMjgsIDcsIAorICAgIDI1NCwgMTQ5LCAyOCwgNywgMjU0LCAxNDgsIDI4LCA3LCAyNTQsIDE0NiwgMjgsIDcsIDI1NCwgMTQ1LCAyOCwgNywgMjU0LCAKKyAgICAxNDQsIDI4LCA3LCAyNTQsIDE0MywgMjgsIDcsIDI1NCwgMTQyLCAyOCwgNywgMjU0LCAxNDEsIDI4LCA3LCAyNTQsIDE0MCwgCisgICAgMjgsIDcsIDI1NCwgMTM5LCAyOCwgNywgMjU0LCAxMzgsIDI4LCA3LCAyNTQsIDEzNywgMjgsIDcsIDI1NCwgMTM2LCAyOCwgCisgICAgNywgMjU0LCAxMzUsIDI4LCA3LCAyNTQsIDEzNCwgMjgsIDcsIDI1NCwgMTMzLCAyOCwgNywgMjU0LCAxMzIsIDI4LCA3LCAKKyAgICAyNTQsIDEzMSwgMjgsIDcsIDI1NCwgMTMwLCAyOCwgNywgMjU0LCAxMjksIDI4LCA3LCAyNTQsIDEyOCwgMjgsIDcsIDI1NCwgCisgICAgMTI3LCAyOCwgNywgMjU0LCAxMjYsIDI4LCA3LCAyNTQsIDEyNSwgMjgsIDcsIDI1NCwgMTI0LCAyOCwgNywgMjU0LCAxMjMsIAorICAgIDI4LCA3LCAyNTQsIDEyMiwgMjgsIDcsIDI1NCwgMTIxLCAyOCwgNywgMjU0LCAxMjAsIDI4LCA3LCAyNTQsIDExOSwgMjgsIAorICAgIDcsIDI1NCwgMTE4LCAyOCwgNywgMjU0LCAxMTcsIDI4LCA3LCAyNTQsIDExNiwgMjgsIDcsIDI1NCwgMTE1LCAyOCwgNywgCisgICAgMjU0LCAxMTQsIDI4LCA3LCAyNTQsIDExMywgMjgsIDcsIDI1NCwgMTEyLCAyOCwgNywgMjU0LCAxMTEsIDI4LCA3LCAyNTQsIAorICAgIDExMCwgMjgsIDcsIDI1NCwgMTA5LCAyOCwgNywgMjU0LCAxMDgsIDI4LCA3LCAyNTQsIDEwNywgMjgsIDcsIDI1NCwgMTA2LCAKKyAgICAyOCwgNywgMjU0LCAxMDUsIDI4LCA3LCAyNTQsIDEwNCwgMjgsIDcsIDI1NCwgMTAzLCAyOCwgNywgMjU0LCAxMDIsIDI4LCAKKyAgICA3LCAyNTQsIDEwMSwgMjgsIDcsIDI1NCwgMTAwLCAyOCwgNywgMjU0LCA5OSwgMjgsIDcsIDI1NCwgOTgsIDI4LCA3LCAyNTQsIAorICAgIDk3LCAyOCwgNywgMjU0LCA5NiwgMjgsIDcsIDI1NCwgOTUsIDI4LCA3LCAyNTQsIDk0LCAyOCwgNywgMjU0LCA5MywgMjgsIAorICAgIDcsIDI1NCwgOTIsIDI4LCA3LCAyNTQsIDkxLCAyOCwgNywgMjU0LCA5MCwgMjgsIDcsIDI1NCwgODksIDI4LCA3LCAyNTQsIAorICAgIDg4LCAyOCwgNywgMjU0LCA4NywgMjgsIDcsIDI1NCwgODYsIDI4LCA3LCAyNTQsIDg1LCAyOCwgNywgMjU0LCA4NCwgMjgsIAorICAgIDcsIDI1NCwgODMsIDI4LCA3LCAyNTQsIDgyLCAyOCwgNywgMjU0LCA4MSwgMjgsIDcsIDI1NCwgODAsIDI4LCA3LCAyNTQsIAorICAgIDc5LCAyOCwgNywgMjU0LCA3OCwgMjgsIDcsIDI1NCwgNzcsIDI4LCA3LCAyNTQsIDc2LCAyOCwgNywgMjU0LCA3NSwgMjgsIAorICAgIDcsIDI1NCwgNzQsIDI4LCA3LCAyNTQsIDczLCAyOCwgNywgMjU0LCA3MiwgMjgsIDcsIDI1NCwgNzEsIDI4LCA3LCAyNTQsIAorICAgIDcwLCAyOCwgNywgMjU0LCA2OSwgMjgsIDcsIDI1NCwgNjgsIDI4LCA3LCAyNTQsIDY3LCAyOCwgNywgMjU0LCA2NiwgMjgsIAorICAgIDcsIDI1NCwgNjUsIDI4LCA3LCAyNTQsIDY0LCAyOCwgNywgMjU0LCA2MywgMjgsIDcsIDI1NCwgNjIsIDI4LCA3LCAyNTQsIAorICAgIDYxLCAyOCwgNywgMjU0LCA2MCwgMjgsIDcsIDI1NCwgNTksIDI4LCA3LCAyNTQsIDU4LCAyOCwgNywgMjU0LCA1NywgMjgsIAorICAgIDcsIDI1NCwgNTYsIDI4LCA3LCAyNTQsIDU1LCAyOCwgNywgMjU0LCA1NCwgMjgsIDcsIDI1NCwgNTMsIDI4LCA3LCAyNTQsIAorICAgIDUyLCAyOCwgNywgMjU0LCA1MSwgMjgsIDcsIDI1NCwgNTAsIDI4LCA3LCAyNTQsIDQ5LCAyOCwgNywgMjU0LCA0OCwgMjgsIAorICAgIDcsIDI1NCwgNDcsIDI4LCA3LCAyNTQsIDQ2LCAyOCwgNywgMjU0LCA0NSwgMjgsIDcsIDI1NCwgNDQsIDI4LCA3LCAyNTQsIAorICAgIDQzLCAyOCwgNywgMjU0LCA0MiwgMjgsIDcsIDI1NCwgNDEsIDI4LCA3LCAyNTQsIDQwLCAyOCwgNywgMjU0LCAzOSwgMjgsIAorICAgIDcsIDI1NCwgMzgsIDI4LCA3LCAyNTQsIDM3LCAyOCwgNywgMjU0LCAzNiwgMjgsIDcsIDI1NCwgMzQsIDI4LCA3LCAyNTQsIAorICAgIDMzLCAyOCwgNywgMjU0LCAzMiwgMjgsIDcsIDI1NCwgMzEsIDI4LCA3LCAyNTQsIDMwLCAyOCwgNywgMjU0LCAyOSwgMjgsIAorICAgIDcsIDI1NCwgMjgsIDI4LCA3LCAyNTQsIDI3LCAyOCwgNywgMjU0LCAyNiwgMjgsIDcsIDI1NCwgMjUsIDI4LCA3LCAyNTQsIAorICAgIDI0LCAyOCwgNywgMjU0LCAyMSwgMjgsIDcsIDI1NCwgMjAsIDI4LCA3LCAyNTQsIDE5LCAyOCwgNywgMjU0LCAxOCwgMjgsIAorICAgIDcsIDI1NCwgMTQsIDI4LCA3LCAyNTQsIDEzLCAyOCwgNywgMjU0LCAxMiwgMjgsIDcsIDI1NCwgMTEsIDI4LCA3LCAyNTQsIAorICAgIDEwLCAyOCwgNywgMjU0LCA5LCAyOCwgNywgMjU0LCA4LCAyOCwgNywgMjU0LCA3LCAyOCwgNywgMjU0LCA2LCAyOCwgNywgCisgICAgMjU0LCA1LCAyOCwgNywgMjU0LCA0LCAyOCwgNywgMjU0LCAzLCAyOCwgNywgMjU0LCAyLCAyOCwgNywgMjU0LCAxLCAyOCwgCisgICAgNywgMjU0LCAwLCAyOCwgNywgMjUzLCAyNTUsIDI4LCA3LCAyNTMsIDI1NCwgMjgsIDcsIDI1MywgMjUzLCAyOCwgNywgMjUzLCAKKyAgICAyNTIsIDI4LCA3LCAyNTMsIDI1MCwgMjgsIDcsIDI1MywgMjQ5LCAyOCwgNywgMjUzLCAyNDgsIDI4LCA3LCAyNTMsIDI0NywgCisgICAgMjgsIDcsIDI1MywgMjQ2LCAyOCwgNywgMjUzLCAyNDUsIDI4LCA3LCAyNTMsIDI0NCwgMjgsIDcsIDI1MywgMjQzLCAyOCwgCisgICAgNywgMjUzLCAyNDIsIDI4LCA3LCAyNTMsIDI0MSwgMjgsIDcsIDI1MywgMjQwLCAyOCwgNywgMjUzLCAyMzksIDI4LCA3LCAKKyAgICAyNTMsIDIzOCwgMjgsIDcsIDI1MywgMjM3LCAyOCwgNywgMjUzLCAyMzYsIDI4LCA3LCAyNTMsIDIzNSwgMjgsIDcsIDI1MywgCisgICAgMjM0LCAyOCwgNywgMjUzLCAyMzMsIDI4LCA3LCAyNTMsIDIzMiwgMjgsIDcsIDI1MywgMjMxLCAyOCwgNywgMjUzLCAyMzAsIAorICAgIDI4LCA3LCAyNTMsIDIyOSwgMjgsIDcsIDI1MywgMjI4LCAyOCwgNywgMjUzLCAyMjcsIDI4LCA3LCAyNTMsIDIyNiwgMjgsIAorICAgIDcsIDI1MywgMjI1LCAyOCwgNywgMjUzLCAyMjQsIDI4LCA3LCAyNTMsIDIyMywgMjgsIDcsIDI1MywgMjIyLCAyOCwgNywgCisgICAgMjUzLCAyMjEsIDI4LCA3LCAyNTMsIDIyMCwgMjgsIDcsIDI1MywgMjE5LCAyOCwgNywgMjUzLCAyMTgsIDI4LCA3LCAyNTMsIAorICAgIDIxNywgMjgsIDcsIDI1MywgMjE2LCAyOCwgNywgMjUzLCAyMTUsIDI4LCA3LCAyNTMsIDIxNCwgMjgsIDcsIDI1MywgMjEzLCAKKyAgICAyOCwgNywgMjUzLCAyMTIsIDI4LCA3LCAyNTMsIDIxMSwgMjgsIDcsIDI1MywgMjEwLCAyOCwgNywgMjUzLCAyMDksIDI4LCAKKyAgICA3LCAyNTMsIDIwOCwgMjgsIDcsIDI1MywgMjA3LCAyOCwgNywgMjUzLCAyMDYsIDI4LCA3LCAyNTMsIDIwNSwgMjgsIDcsIAorICAgIDI1MywgMjA0LCAyOCwgNywgMjUzLCAyMDMsIDI4LCA3LCAyNTMsIDIwMiwgMjgsIDcsIDI1MywgMjAxLCAyOCwgNywgMjUzLCAKKyAgICAyMDAsIDI4LCA3LCAyNTMsIDE5OSwgMjgsIDcsIDI1MywgMTk4LCAyOCwgNywgMjUzLCAxOTcsIDI4LCA3LCAyNTMsIDE5NiwgCisgICAgMjgsIDcsIDI1MywgMTk1LCAyOCwgNywgMjUzLCAxOTQsIDI4LCA3LCAyNTMsIDE5MywgMjgsIDcsIDI1MywgMTkyLCAyOCwgCisgICAgNywgMjUzLCAxOTEsIDI4LCA3LCAyNTMsIDE5MCwgMjgsIDcsIDI1MywgMTg5LCAyMTMsIDI1MywgMjE3LCAzNCwgMjEzLCAKKyAgICA4OCwgMjgsIDcsIDI1MywgMTg4LCAyOCwgNywgMjUzLCAxODcsIDI4LCA3LCAyNTMsIDE4NiwgMjgsIDcsIDI1MywgMTg1LCAKKyAgICAyOCwgNywgMjUzLCAxODQsIDI4LCA3LCAyNTMsIDE4MywgMjgsIDcsIDI1MywgMTgyLCAyOCwgNywgMjUzLCAxODEsIDI4LCAKKyAgICA3LCAyNTMsIDE4MCwgMjgsIDcsIDI1MywgMTc5LCAyOCwgNywgMjUzLCAxNzgsIDI4LCA3LCAyNTMsIDE3NywgMTkyLCAyOCwgCisgICAgNywgMjUzLCAxNzYsIDI4LCA3LCAyNTMsIDE3NSwgMjgsIDcsIDI1MywgMTc0LCAyOCwgNywgMjUzLCAxNzMsIDI4LCA3LCAKKyAgICAyNTMsIDE3MiwgMjgsIDcsIDI1MywgMTcxLCAyOCwgNywgMjUzLCAxNzAsIDI4LCA3LCAyNTMsIDE2OCwgMjgsIDcsIDI1MywgCisgICAgMTY2LCAyOCwgNywgMjUzLCAxNjQsIDI4LCA3LCAyNTMsIDE2MiwgMjgsIDcsIDI1MywgMTYwLCAyOCwgNywgMjUzLCAxNTgsIAorICAgIDI4LCA3LCAyNTMsIDE1NiwgMjgsIDcsIDI1MywgMTU0LCAyOCwgNywgMjUzLCAxNTIsIDI4LCA3LCAyNTMsIDE1MCwgMjQ4LCAKKyAgICAyNDQsIDIyNCwgOTcsIDgxLCAyOCwgNywgMjUzLCAxNDgsIDIzOCwgMTcxLCAyMjQsIDk3LCA4MSwgMjgsIDcsIDI1MywgCisgICAgMTQ3LCAyOCwgNywgMjUzLCAxNDUsIDI4LCA3LCAyNTMsIDE0MywgMjgsIDcsIDI1MywgMTQxLCAyOCwgNywgMjUzLCAxMzksIAorICAgIDI4LCA3LCAyNTMsIDEzNywgMjgsIDcsIDI1MywgMTM1LCAyOCwgNywgMjUzLCAxMzMsIDI4LCA3LCAyNTMsIDEzMSwgMjgsIAorICAgIDcsIDI1MywgMTMwLCAyOCwgNywgMjUzLCAxMjksIDI4LCA3LCAyNTMsIDEyOCwgMjgsIDcsIDI1MywgMTI3LCAyOCwgNywgCisgICAgMjUzLCAxMjYsIDI4LCA3LCAyNTMsIDEyNSwgMjgsIDcsIDI1MywgMTI0LCAyOCwgNywgMjUzLCAxMjMsIDI4LCA3LCAyNTMsIAorICAgIDEyMiwgMjgsIDcsIDI1MywgMTIxLCAyOCwgNywgMjUzLCAxMjAsIDI4LCA3LCAyNTMsIDExOSwgMjgsIDcsIDI1MywgMTE4LCAKKyAgICAyOCwgNywgMjUzLCAxMTcsIDI4LCA3LCAyNTMsIDExNiwgMjgsIDcsIDI1MywgMTE1LCAyOCwgNywgMjUzLCAxMTQsIDI4LCAKKyAgICA3LCAyNTMsIDExMywgMjgsIDcsIDI1MywgMTEyLCAyOCwgNywgMjUzLCAxMTEsIDI4LCA3LCAyNTMsIDExMCwgMjgsIDcsIAorICAgIDI1MywgMTA5LCAyOCwgNywgMjUzLCAxMDgsIDI4LCA3LCAyNTMsIDEwNywgMjgsIDcsIDI1MywgMTA2LCAyOCwgNywgMjUzLCAKKyAgICAxMDUsIDI4LCA3LCAyNTMsIDEwNCwgMjgsIDcsIDI1MywgMTAzLCAyOCwgNywgMjUzLCAxMDIsIDI4LCA3LCAyNTMsIDEwMSwgCisgICAgMjgsIDcsIDI1MywgMTAwLCAyOCwgNywgMjUzLCA5OSwgMjgsIDcsIDI1MywgOTgsIDI4LCA3LCAyNTMsIDk3LCAyOCwgNywgCisgICAgMjUzLCA5NiwgMjgsIDcsIDI1MywgOTUsIDI4LCA3LCAyNTMsIDk0LCAyOCwgNywgMjUzLCA5MywgMjgsIDcsIDI1MywgOTIsIAorICAgIDI4LCA3LCAyNTMsIDkxLCAyOCwgNywgMjUzLCA5MCwgMjgsIDcsIDI1MywgODksIDI4LCA3LCAyNTMsIDg4LCAyOCwgNywgCisgICAgMjUzLCA4NywgMjgsIDcsIDI1MywgODYsIDI4LCA3LCAyNTMsIDg1LCAyOCwgNywgMjUzLCA4NCwgMjgsIDcsIDI1MywgODMsIAorICAgIDI4LCA3LCAyNTMsIDgyLCAyOCwgNywgMjUzLCA4MSwgMjgsIDcsIDI1MywgODAsIDI4LCA3LCAyNTMsIDc5LCAyOCwgNywgCisgICAgMjUzLCA3OCwgMjgsIDcsIDI1MywgNzcsIDI4LCA3LCAyNTMsIDc2LCAyOCwgNywgMjUzLCA3NSwgMjgsIDcsIDI1MywgNzQsIAorICAgIDI4LCA3LCAyNTMsIDczLCAyOCwgNywgMjUzLCA3MiwgMjgsIDcsIDI1MywgNzEsIDI4LCA3LCAyNTMsIDcwLCAyOCwgNywgCisgICAgMjUzLCA2OSwgMjgsIDcsIDI1MywgNjgsIDI4LCA3LCAyNTMsIDY3LCAyOCwgNywgMjUzLCA2NiwgMjgsIDcsIDI1MywgNjUsIAorICAgIDI4LCA3LCAyNTMsIDY0LCAyOCwgNywgMjUzLCA2MywgMjgsIDcsIDI1MywgNjIsIDI4LCA3LCAyNTMsIDYxLCAyOCwgNywgCisgICAgMjUzLCA2MCwgMjgsIDcsIDI1MywgNTksIDI4LCA3LCAyNTMsIDU4LCAyOCwgNywgMjUzLCA1NywgMjgsIDcsIDI1MywgNTYsIAorICAgIDI4LCA3LCAyNTMsIDU1LCAyOCwgNywgMjUzLCA1NCwgMjgsIDcsIDI1MywgNTMsIDI4LCA3LCAyNTMsIDUyLCAyOCwgNywgCisgICAgMjUzLCA1MSwgMjgsIDcsIDI1MywgNTAsIDI4LCA3LCAyNTMsIDQ5LCAyOCwgNywgMjUzLCA0OCwgMjgsIDcsIDI1MywgNDcsIAorICAgIDI4LCA3LCAyNTMsIDQ2LCAyOCwgNywgMjUzLCA0NSwgMjgsIDcsIDI1MywgNDQsIDI4LCA3LCAyNTMsIDQzLCAyOCwgNywgCisgICAgMjUzLCA0MiwgMjgsIDcsIDI1MywgNDEsIDI4LCA3LCAyNTMsIDQwLCAyOCwgNywgMjUzLCAzOSwgMjgsIDcsIDI1MywgMzgsIAorICAgIDI4LCA3LCAyNTMsIDM3LCAyOCwgNywgMjUzLCAzNiwgMjgsIDcsIDI1MywgMzUsIDI4LCA3LCAyNTMsIDM0LCAyOCwgNywgCisgICAgMjUzLCAzMywgMjgsIDcsIDI1MywgMzIsIDI4LCA3LCAyNTMsIDMxLCAyOCwgNywgMjUzLCAzMCwgMjgsIDcsIDI1MywgMjksIAorICAgIDI4LCA3LCAyNTMsIDI4LCAyOCwgNywgMjUzLCAyNywgMjgsIDcsIDI1MywgMjYsIDI4LCA3LCAyNTMsIDI1LCAyOCwgNywgCisgICAgMjUzLCAyNCwgMjgsIDcsIDI1MywgMjMsIDI4LCA3LCAyNTMsIDIyLCAyOCwgNywgMjUzLCAyMSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTksIDE4NiwgMjIxLCAyNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjM2LCAyMywgMjM3LCA1LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxNSwgODMsIDIyMSwgMjU0LCAyMTUsIDE1MiwgMjUsIDEsIDIxNSwgMjM1LCAyMTUsIDgzLCAyMjEsIDI1NCwgMjE1LCAKKyAgICAxNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCAxNTgsIDIyMSwgMjUzLCAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgMjE2LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwNSwgMjEyLCAyMjEsIDI1MywgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDgsIDIyMSwgMjUzLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIxMCwgMjAsIDIxNiwgMjExLCAyMTksIDgyLCAyNSwgMSwgMjE1LCAyMzUsIDIxNSwgODMsIDIxNiwgCisgICAgMjExLCAyMTksIDgzLCAyMTUsIDE1MiwgMjUsIDEsIDIxNSwgMjM1LCAyMTUsIDgzLCAyMTYsIDIxMSwgMjE5LCA4MywgMjE1LCAKKyAgICAxNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTQsIDI1LCAxLCAyMTUsIDIzNSwgMjA0LCAyMTYsIDIyMiwgMjE1LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIxOSwgMjQ3LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjExLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgCisgICAgMTY5LCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgMjM3LCAyNSwgMSwgMjE1LCAyMzUsIDIxMCwgMTM4LCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIxOCwgMTQwLCAyNSwgMSwgMjE1LCAyMzUsIDIyNiwgMjI2LCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgNTAsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA3LCAxOTMsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCAxODUsIDI1LCAxLCAyMTUsIDIzNSwgMjI1LCAKKyAgICA3MywgMjUsIDEsIDIxNSwgMjM1LCAyMjQsIDIzOCwgMjI1LCAyMzcsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNTAsIDIyMiwgCisgICAgNSwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxOCwgMjUsIDEsIDIxNSwgMjM1LCAyMTYsIDEwMSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMzUsIDE4MCwgMjUsIDEsIDIxNSwgMjM1LCAyMTYsIDE2NiwgMjUsIDEsIDIxNSwgMjM1LCAyMjEsIDEwNywgMjE5LCAyMjAsIAorICAgIDI1LCAxLCAyMTUsIDIzNSwgMjE3LCAyNDUsIDIyMiwgOCwgMjUsIDEsIDIxNSwgMjM1LCAxMDgsIDE5OSwgMTg2LCAyMjAsIAorICAgIDE1MSwgMjUsIDEsIDIxNSwgMjM1LCAyMzUsIDE4MSwgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDE1MCwgMjE4LCAxNTEsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA5LCAxMDksIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCAyNDYsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAKKyAgICAxMSwgMjUsIDEsIDIxNSwgMjM1LCAyMjEsIDgzLCAyNSwgMSwgMjE1LCAyMzUsIDIyNywgODUsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE2LCAyMTEsIDIyNSwgMjksIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCA3NiwgMjI1LCAyOSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTYsIDAsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTIsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCAxMjQsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjE0LCAyMDUsIDI1LCAxLCAyMTUsIDIzNSwgMjA0LCAyMTMsIDI1LCAxLCAyMTUsIDIzNSwgMjI0LCAzOCwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMDksIDExLCAyNSwgMSwgMjE1LCAyMzUsIDIwNiwgMTMxLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgCisgICAgMjA5LCAyNSwgMSwgMjE1LCAyMzUsIDIyNiwgMjMzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgNzIsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjI1LCAyNTAsIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCA4NCwgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDIxMiwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMjQsIDkwLCAyNSwgMSwgMjE1LCAyMzUsIDIzNywgNzQsIDI1LCAxLCAyMTUsIDIzNSwgMjEyLCAKKyAgICAyNDEsIDI1LCAxLCAyMTUsIDIzNSwgMjI2LCAzOSwgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDcsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjIyLCAxNjUsIDIxNSwgMTk0LCAyNSwgMSwgMjE1LCAyMzUsIDIxMCwgMTMsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNDksIAorICAgIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCAyNTIsIDIxOCwgMTYwLCAxOTksIDE5NCwgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDMwLCAKKyAgICAyMjEsIDEwMywgMjUsIDEsIDIxNSwgMjM1LCAyMTYsIDIwNiwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDUyLCAyNSwgMSwgCisgICAgMjE1LCAyMzUsIDIwMywgMjM1LCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgMjIzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjA4LCAKKyAgICAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgOTQsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAxMDUsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE4LCA0NCwgMjUsIDEsIDIxNSwgMjM1LCAyMDYsIDEzNSwgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDQsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjE2LCAyMDcsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNjQsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTYsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjE4LCA0MSwgMjUsIDEsIDIxNSwgMjM1LCAyMjcsIDQ4LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgCisgICAgMTY3LCAyNSwgMSwgMjE1LCAyMzUsIDIwMywgNTQsIDI1LCAxLCAyMTUsIDIzNSwgMjI0LCA0MiwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMjAsIDI0LCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgMTI2LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMTA0LCAyNSwgMSwgCisgICAgMjE1LCAyMzQsIDIxOCwgMTYyLCAyNSwgMSwgMjE1LCAyMzQsIDIwNCwgMjE2LCAyMjIsIDIxMywgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMDksIDE3MSwgMjUsIDEsIDIxNSwgMjM0LCAyMTAsIDE0MiwgMjA0LCAyMTUsIDI1LCAxLCAyMTUsIDIzNCwgMjI0LCA5MiwgCisgICAgMjE4LCAxNDYsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAxMTEsIDIyMiwgMjE3LCAyNSwgMSwgMjE1LCAyMzQsIDIyNiwgMTU1LCAKKyAgICAyNSwgMSwgMjE1LCAyMzQsIDIwMCwgMTcsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAxMDYsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjI3LCA3MSwgMjUsIDEsIDIxNSwgMjM0LCAyMTYsIDU3LCAyNSwgMSwgMjE1LCAyMzQsIDIwMCwgOTUsIDIyNSwgMjksIDI1LCAKKyAgICAxLCAyMTUsIDIzNCwgMjI1LCA5MiwgMjE4LCAxNjAsIDIxOCwgNTUsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCAxNDMsIDIxMCwgCisgICAgMzksIDI1LCAxLCAyMTUsIDIzNCwgMjIwLCA0MywgMjE5LCA5NywgMjUsIDEsIDIxNSwgMjM0LCAyMzUsIDE3OCwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMTUsIDE0MiwgMjUsIDEsIDIxNSwgMjM0LCAyMDQsIDIxNiwgMjE4LCAxNTgsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjEwLCA0NCwgMjE5LCA5MiwgMjUsIDEsIDIxNSwgMjM0LCAyMTAsIDQwLCAyNSwgMSwgMjE1LCAyMzQsIDIyMSwgMjU0LCAKKyAgICAyMDYsIDEzNCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDkzLCAyMjIsIDEwNywgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDQyLCAKKyAgICAyMTgsIDE0NiwgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDIyMiwgMjUsIDEsIDIxNSwgMjM0LCAyMzUsIDE3OSwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMjYsIDIxOCwgMjUsIDEsIDIxNSwgMjM0LCAyMjUsIDE3MCwgMjUsIDEsIDIxNSwgMjM0LCAyMTYsIDEwNCwgCisgICAgMjUsIDEsIDIxNSwgMjM0LCAyMDIsIDI0MSwgMjUsIDEsIDIxNSwgMjM0LCAyMTksIDE4NywgMjIwLCAyMzUsIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjE5LCAyMjIsIDIyMiwgODksIDI1LCAxLCAyMTUsIDIzNCwgMjAwLCAyMTQsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjEyLCA0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMDcsIDI4LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMTAsIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjE5LCAyMDYsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAyMDcsIDIyNSwgNzAsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAKKyAgICAwLCAyNSwgMSwgMjE1LCAyMzQsIDIwNywgMjQ0LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgOTcsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjIxLCA4OCwgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDU4LCAyNSwgMSwgMjE1LCAyMzQsIDIxNCwgMjA5LCAyNSwgMSwgMjE1LCAKKyAgICAyMzQsIDIyMiwgOSwgMjE5LCAyMjQsIDI1LCAxLCAyMTUsIDIzNCwgMjM3LCAxMTcsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAKKyAgICA4NCwgMjUsIDEsIDIxNSwgMjM0LCAyMzcsIDE0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDIzMCwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMjIsIDIzNSwgMjE5LCA4NiwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDIzNSwgMjE5LCA2MiwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMjQsIDIzNywgMjUsIDEsIDIxNSwgMjM0LCAyMTksIDIzMCwgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDE2OSwgMjUsIAorICAgIDEsIDIxNSwgMjM0LCAxNzgsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAxNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAxNzUsIAorICAgIDI1LCAxLCAxNzMsIDIxOSwgMTg2LCAyMjIsIDIxNSwgMjUsIDEsIDE3MywgMjE4LCA3LCAyNSwgMSwgMTczLCAxOTksIDE5NCwgCisgICAgMjUsIDEsIDE3MywgMjAxLCA5OCwgMjUsIDEsIDE3MywgMjE5LCAyMjMsIDI1LCAxLCAxNzMsIDIyMCwgNjQsIDI1LCAxLCAKKyAgICAxNzMsIDIxOSwgMTkzLCAyNSwgMSwgMTczLCAyMzUsIDE4OCwgMjUsIDEsIDE3MywgMjIyLCAxMDEsIDI1LCAxLCAxNzMsIAorICAgIDIzNiwgMzAsIDI1LCAxLCAxNzMsIDIxOCwgMzIsIDIyMSwgMTQ1LCAyMjIsIDEyLCAyNSwgMSwgMTczLCAyMTgsIDEzOCwgCisgICAgMjIyLCA5MiwgMjUsIDEsIDE3MywgMjIyLCA5OCwgMjUsIDEsIDE3MywgMjE1LCAxNDgsIDI1LCAxLCAxNzMsIDIyMCwgNDksIAorICAgIDI1LCAxLCAxNzMsIDIyMiwgMTA5LCAyNDcsIDE4NiwgMjUsIDEsIDE3MywgMjI2LCAyMjAsIDI1LCAxLCAxNzMsIDIzNSwgCisgICAgMTg5LCAyNSwgMSwgMTczLCAyMjYsIDIyNywgMjUsIDEsIDE3MywgMTk5LCAyMTIsIDIyMSwgMTAsIDI1LCAxLCAxNzMsIAorICAgIDIxOCwgMSwgMjUsIDEsIDE3MywgMjIyLCA4NiwgMjUsIDEsIDE3MywgMjE4LCAxNjgsIDI1LCAxLCAxNzMsIDIyMiwgOTIsIAorICAgIDI1LCAxLCAxNzMsIDIwMCwgMTgsIDI1LCAxLCAxNzMsIDIyNiwgNDcsIDI1LCAxLCAxNzMsIDIyNywgMTA1LCAyNSwgMSwgCisgICAgMTczLCAyMTAsIDEzNywgMjUsIDEsIDE3MywgMjIwLCA1OCwgMjUsIDEsIDE3MywgMjA3LCAyNiwgMjUsIDEsIDE3MywgMjE5LCAKKyAgICA2NiwgMjUsIDEsIDE3MywgMjA1LCAyMTIsIDE5OSwgMTk3LCAyNSwgMSwgMTczLCAyMDgsIDE5LCAyNSwgMSwgMTczLCAyMTksIAorICAgIDIxMywgMjE4LCA1NSwgMjUsIDEsIDE3MywgMjAyLCAyNDAsIDI1LCAxLCAxNzMsIDIyMCwgMTI5LCAyNSwgMSwgMTczLCAKKyAgICAyMjIsIDIzNSwgMjI2LCAyMjksIDI1LCAxLCAxNzMsIDIxOCwgMTUxLCAyNSwgMSwgMTczLCAyMTksIDIwOCwgMjUsIDEsIAorICAgIDE3MywgMjI1LCA3NCwgMjUsIDEsIDE3MywgMjIyLCA5NCwgMjUsIDEsIDE3MywgMjIxLCAyNDUsIDI1LCAxLCAxNzMsIDIxOCwgCisgICAgMTQ1LCAyNSwgMSwgMTczLCAyMDYsIDEzMCwgMjUsIDEsIDE3MywgMjE5LCAyMTAsIDI1LCAxLCAxNzMsIDIzNiwgMTg3LCAKKyAgICAyNSwgMSwgMTczLCAyMjAsIDYzLCAyNSwgMSwgMTczLCAyMTgsIDE3MCwgMjUsIDEsIDE3MywgMjE4LCAxNjYsIDI1LCAxLCAKKyAgICAxNzMsIDI0OCwgMTIsIDI1LCAxLCAxNzMsIDIwMiwgMjQyLCAyNSwgMSwgMTczLCAyMjIsIDk5LCAyNSwgMSwgMTczLCAyMTIsIAorICAgIDE3NSwgMjUsIDEsIDE3MywgMjE5LCA5NiwgMjUsIDEsIDE3MywgMjI1LCA5MSwgMjUsIDEsIDE3MywgMjA1LCAyMDksIDI1LCAKKyAgICAxLCAxNzMsIDIxOCwgMTUyLCAyMTksIDE3NSwgMjUsIDEsIDE3MywgMjE5LCA4OCwgMjUsIDEsIDE3MywgMjI2LCAyMzMsIAorICAgIDI1LCAxLCAxNzMsIDIxOSwgMjE1LCAyNSwgMSwgMTczLCAyMjIsIDIwOCwgMjUsIDEsIDE3MywgMjIyLCA4NywgMjUsIDEsIAorICAgIDE3MywgMjI0LCA0MiwgMjUsIDEsIDE3MywgMjI1LCAyMzcsIDI1LCAxLCAxNzMsIDIxOSwgOTQsIDI1LCAxLCAxNzMsIDIxOSwgCisgICAgMTc1LCAyNSwgMSwgMTczLCAyMDAsIDIwNCwgMjUsIDEsIDE3MywgMjE5LCAyMTEsIDI1LCAxLCAxNzMsIDIxOCwgMTU1LCAKKyAgICAyNSwgMSwgMTczLCAyMTgsIDE0NywgMjUsIDEsIDE3MywgMjI1LCAyNTIsIDIxOSwgNTIsIDI1LCAxLCAxNzMsIDIxOCwgCisgICAgMTUzLCAyNSwgMSwgMTczLCAyMjAsIDcxLCAyNSwgMSwgMTczLCAyMjIsIDIzNSwgMjE4LCAxNTgsIDI1LCAxLCAxNzMsIAorICAgIDIwMCwgMTA5LCAyNSwgMSwgMTczLCAyMjAsIDcwLCAyNSwgMSwgMTczLCAyMDksIDIxNSwgMjUsIDEsIDE3MywgMjEwLCAKKyAgICAxNDAsIDI1LCAxLCAxNzMsIDIyMiwgOTUsIDI1LCAxLCAxNzMsIDIyMiwgMjE1LCAyNSwgMSwgMTczLCAyMjIsIDEwNSwgMjUsIAorICAgIDEsIDE3MywgMjI2LCAyMjEsIDI1LCAxLCAxNzMsIDIyMiwgOTYsIDI1LCAxLCAxNzMsIDIyNiwgMjI1LCAyNSwgMSwgMTczLCAKKyAgICAyMjIsIDEwOSwgMjE1LCAxOTksIDI1LCAxLCAxNzMsIDE5OSwgMTc3LCAyNSwgMSwgMTczLCAyMTksIDg0LCAyNSwgMSwgCisgICAgMTczLCAyMjEsIDIwMCwgMjUsIDEsIDE3MywgMjIxLCAzOSwgMjUsIDEsIDE3MywgMjEwLCAxNiwgMjUsIDEsIDE3MywgMjI2LCAKKyAgICAyNDQsIDIyNSwgNTIsIDI1LCAxLCAxNzMsIDIyNiwgMjQ0LCAyMzcsIDE1MywgMjUsIDEsIDE3MywgMjE5LCAyNDUsIDI1LCAKKyAgICAxLCAxNzMsIDIyMCwgMTI2LCAyNSwgMSwgMTczLCAyMjQsIDE1OCwgMjUsIDEsIDE3MywgMjE1LCAxNjAsIDI1LCAxLCAxNzMsIAorICAgIDIxNiwgNDcsIDI1LCAxLCAxNzMsIDIwNiwgMTQ2LCAyNSwgMSwgMTM3LCAyMjIsIDg1LCAyNSwgMSwgMTM3LCAyMDEsIDk2LCAKKyAgICAyNSwgMSwgMTM3LCAyMTksIDgyLCAyNSwgMSwgMTM3LCAyMjEsIDI1MywgMjUsIDEsIDEzNywgMjE5LCA4MCwgMjUsIDEsIAorICAgIDEzNywgMjI0LCAyMDMsIDI1LCAxLCAxMzcsIDIxOSwgODUsIDI1LCAxLCAxMzcsIDIxOCwgMTY1LCAyNSwgMSwgMTM3LCAKKyAgICAyMTksIDIyOSwgMjUsIDEsIDEzNywgMjE4LCA1NSwgMjUsIDEsIDEzNywgMjAwLCAyMTUsIDI1LCAxLCAxMzcsIDIxOSwgCisgICAgMTgzLCAyNSwgMSwgMTM3LCAyMTAsIDYzLCAyNSwgMSwgMTM3LCAyMTksIDE5NCwgMjUsIDEsIDEzNywgMjI2LCAyMjgsIDI1LCAKKyAgICAxLCAxMzcsIDIwNiwgMTMyLCAyNSwgMSwgMTM3LCAyMTAsIDQyLCAyNSwgMSwgMTM3LCAyMTksIDkzLCAyNSwgMSwgMTM3LCAKKyAgICAyMDcsIDI0NCwgMjUsIDEsIDEzNywgMjI2LCAyMzMsIDI1LCAxLCAxMzcsIDIwMCwgOTcsIDI1LCAxLCAxMzcsIDIyNSwgCisgICAgMjUzLCAyNSwgMSwgMTM3LCAyMTIsIDMsIDI1LCAxLCAxMzcsIDIyMiwgMiwgMjUsIDEsIDEzNywgMjIwLCA2MiwgMjUsIDEsIAorICAgIDEzNywgMjIyLCAxODMsIDI1LCAxLCAxMzcsIDIyMiwgOCwgMjUsIDEsIDEzNywgMjEwLCAxMzksIDI1LCAxLCAxMzcsIDIwMCwgCisgICAgNDEsIDI1LCAxLCAxMzcsIDIxOSwgODcsIDI1LCAxLCAxMzcsIDIyNiwgMjI0LCAyMjIsIDg4LCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDE5MCwgMjUsIDEsIDEzNywgMjA0LCAyMTUsIDI1LCAxLCAxMzcsIDIzNSwgMTk4LCAyNSwgMSwgMTM3LCAyMTksIDE4MCwgCisgICAgMjUsIDEsIDEzNywgMjM3LCAxMTgsIDI1LCAxLCAxMzcsIDIyMCwgNjYsIDI1LCAxLCAxMzcsIDIyMSwgMjM3LCAyNSwgMSwgCisgICAgMTM3LCAyMjQsIDIzMSwgMjUsIDEsIDEzNywgMjIwLCA0OCwgMjUsIDEsIDEzNywgMjIxLCAxMDIsIDI1LCAxLCAxMzcsIAorICAgIDIyMSwgMjQxLCAyNSwgMSwgMTM3LCAyMTQsIDE4OSwgMjUsIDEsIDEzNywgMjIxLCAyMzksIDI1LCAxLCAxMzcsIDIyMSwgCisgICAgMjU1LCAyNSwgMSwgMTM3LCAyMjQsIDI1LCAyNSwgMSwgMTM3LCAyMTgsIDE1NywgMjUsIDEsIDEzNywgMjIyLCAxMDgsIDI1LCAKKyAgICAxLCAxMzcsIDIyNSwgMjI3LCAyNSwgMSwgMTM3LCAyMTgsIDQ0LCAyNSwgMSwgMTM3LCAyMDYsIDEzNSwgMjUsIDEsIDEzNywgCisgICAgMjA5LCA0LCAyNSwgMSwgMTM3LCAxOTksIDE3NywgMjUsIDEsIDEzNywgMjI2LCAyMjUsIDI1LCAxLCAxMzcsIDIxMywgMjMzLCAKKyAgICAyNSwgMSwgMTM3LCAyMDYsIDE4OSwgMjUsIDEsIDEzNywgMjE5LCAxOTEsIDI1LCAxLCAxMzcsIDIyMiwgNCwgMjUsIDEsIAorICAgIDEzNywgMjE4LCAxNTYsIDI1LCAxLCAxMzcsIDIyNiwgMjIzLCAyNSwgMSwgMTM3LCAyMTUsIDE1NCwgMjUsIDEsIDEzNywgCisgICAgMjE1LCAyNTAsIDI1LCAxLCAxMzcsIDIxOCwgMTgsIDI1LCAxLCAxMzcsIDIyNCwgMjM3LCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDIzMCwgMjUsIDEsIDEzNywgMjIyLCAxLCAyNSwgMSwgMTM3LCAyMTksIDIwMywgMjUsIDEsIDEzNywgMTk5LCAxOTEsIDI1LCAKKyAgICAxLCAxMzcsIDIxNiwgMTM1LCAyNSwgMSwgMTM3LCAxOTksIDE5MCwgMjUsIDEsIDEzNywgMjIwLCA3MSwgMjUsIDEsIDEzNywgCisgICAgMjE4LCAxNDYsIDI1LCAxLCAxMzcsIDIwOCwgMjEsIDI1LCAxLCAxMzcsIDIyNiwgMSwgMjUsIDEsIDEzNywgMjE5LCAyMTksIAorICAgIDI1LCAxLCAxMzcsIDIxOSwgMTg4LCAyNSwgMSwgMTM3LCAyMDQsIDE5NiwgMjUsIDEsIDEzNywgMjIyLCAxMiwgMjUsIDEsIAorICAgIDEzNywgMjI1LCAyNDcsIDI1LCAxLCAxMzcsIDIxOCwgMTU0LCAyNSwgMSwgMTM3LCAyMDYsIDEzMywgMjUsIDEsIDEzNywgCisgICAgMjIyLCAyMTAsIDI1LCAxLCAxMzcsIDIxOSwgMjI4LCAyNSwgMSwgMTM3LCAyMjQsIDIzMCwgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAyMDksIDI1LCAxLCAxMzcsIDIxOCwgMTU5LCAyNSwgMSwgMTM3LCAyMTksIDY2LCAyNSwgMSwgMTM3LCAyMzUsIDE4MiwgMjUsIAorICAgIDEsIDEzNywgMjI2LCAxNSwgMjUsIDEsIDEzNywgMjEzLCAxNDAsIDIxNywgOTIsIDI1LCAxLCAxMzcsIDIwNywgMTUsIDI1LCAKKyAgICAxLCAxMzcsIDIwNSwgMTU0LCAyNSwgMSwgMTM3LCAyMTgsIDQxLCAyNSwgMSwgMTM3LCAyMTMsIDMzLCAyNSwgMSwgMTM3LCAKKyAgICAyMjUsIDMxLCAyNSwgMSwgMTM3LCAyMjIsIDYzLCAyNSwgMSwgMTM3LCAyMjMsIDI0MywgMjUsIDEsIDEzNywgMjA3LCAxOTMsIAorICAgIDI1LCAxLCAxMzcsIDIyMSwgNDEsIDI1LCAxLCAxMzcsIDIxMCwgMjgsIDI1LCAxLCAxMzcsIDIxMCwgMzgsIDI1LCAxLCAKKyAgICAxMzcsIDIyNSwgMTk5LCAyNSwgMSwgMTM3LCAyMTgsIDEzMywgMjUsIDEsIDEzNywgMjA5LCAyMjAsIDI1LCAxLCAxMzcsIAorICAgIDIxOCwgMTQ4LCAyNSwgMSwgMTM3LCAyMTYsIDYxLCAyNSwgMSwgMTM3LCAyMTksIDE1MCwgMjUsIDEsIDEzNywgMjA5LCAKKyAgICAyNTEsIDI1LCAxLCAxMzcsIDIxNCwgMjA0LCAyNSwgMSwgMTM3LCAyMjAsIDIzNSwgMjUsIDEsIDEzNywgMjI0LCA3MCwgMjUsIAorICAgIDEsIDEzNywgMjEzLCAxNDAsIDIyMSwgMzQsIDI1LCAxLCAxMzcsIDIwNiwgMTUsIDI1LCAxLCAxMzcsIDIxOCwgMTM1LCAyNSwgCisgICAgMSwgMTM3LCAyMjIsIDEwOSwgMjEwLCAxMzUsIDI1LCAxLCAxMzcsIDIxMiwgMSwgMjUsIDEsIDEzNywgMjM3LCAxOTQsIDI1LCAKKyAgICAxLCA5NiwgMjIwLCA3MCwgMjUsIDEsIDk2LCAyMDUsIDE2MCwgMjUsIDEsIDk2LCAyMjIsIDk4LCAyNSwgMSwgOTYsIDIyNSwgCisgICAgNzQsIDI1LCAxLCA5NiwgMjAyLCAxODAsIDI1LCAxLCA5NiwgMjI0LCA3NiwgMjUsIDEsIDk2LCAyMTYsIDIxMCwgMjUsIDEsIAorICAgIDk2LCAyMDksIDE1LCAyNSwgMSwgOTYsIDIxMywgMjA4LCAyNSwgMSwgOTYsIDIxOCwgMTYxLCAyNSwgMSwgOTYsIDIyMCwgCisgICAgNDEsIDI1LCAxLCA5NiwgMjE0LCAyMjEsIDI1LCAxLCA5NiwgMjA2LCAyNDYsIDI1LCAxLCA5NiwgMjE5LCAxOTYsIDI1LCAxLCAKKyAgICA5NiwgMjI2LCA0MywgMjUsIDEsIDk2LCAyMDAsIDIwNywgMjUsIDEsIDk2LCAyMTEsIDE5MCwgMjUsIDEsIDk2LCAyMTksIAorICAgIDIyMCwgMjUsIDEsIDk2LCAyMTYsIDIwNywgMjUsIDEsIDk2LCAyMDUsIDE2MSwgMjUsIDEsIDk2LCAyMjUsIDI1MSwgMjUsIAorICAgIDEsIDk2LCAyMjQsIDkxLCAyNSwgMSwgOTYsIDIxOCwgMTY0LCAyNSwgMSwgOTYsIDIxOSwgMTcyLCAyNSwgMSwgOTYsIDIyMiwgCisgICAgMjE2LCAyNSwgMSwgOTYsIDIxOSwgMTg5LCAyNSwgMSwgOTYsIDIxOSwgMTcxLCAyNSwgMSwgOTYsIDIxOCwgMTYzLCAyNSwgCisgICAgMSwgOTYsIDIxMywgMzAsIDI1LCAxLCA5NiwgMjE5LCA4NCwgMjUsIDEsIDk2LCAyMTYsIDU5LCAyNSwgMSwgOTYsIDIxMiwgCisgICAgNjEsIDI1LCAxLCA5NiwgMjE5LCAyMDQsIDI1LCAxLCA5NiwgMjIxLCAyNDcsIDI1LCAxLCA5NiwgMjM1LCAxNzYsIDI1LCAxLCAKKyAgICA5NiwgMjE5LCAxOTIsIDI1LCAxLCA5NiwgMjE5LCA5NSwgMjUsIDEsIDk2LCAyMjIsIDE2NCwgMjUsIDEsIDk2LCAyMjQsIAorICAgIDcyLCAyNSwgMSwgOTYsIDIxOSwgMjI1LCAyNSwgMSwgOTYsIDIyMCwgNTQsIDI1LCAxLCA5NiwgMjA3LCAxNCwgMjE4LCAKKyAgICAxNDYsIDI1LCAxLCA5NiwgMjEwLCAxNDEsIDI1LCAxLCA5NiwgMjE0LCAyMTQsIDI1LCAxLCA5NiwgMjIwLCA3NCwgMjA5LCAKKyAgICAyMiwgMjUsIDEsIDk2LCAyMTksIDIxMiwgMjE4LCA1NSwgMjUsIDEsIDk2LCAyMDAsIDUsIDI1LCAxLCA5NiwgMjM1LCAxNzcsIAorICAgIDI1LCAxLCA5NiwgMjA0LCAyMTQsIDI1LCAxLCA5NiwgMjAwLCAyMSwgMjUsIDEsIDk2LCAyMTUsIDEwNiwgMjUsIDEsIDk2LCAKKyAgICAyMDQsIDIwMiwgMjUsIDEsIDk2LCAyMjYsIDIzMSwgMjUsIDEsIDk2LCAyMDgsIDIwLCAyNSwgMSwgOTYsIDIwNiwgMTM0LCAKKyAgICAyNSwgMSwgOTYsIDIwMiwgMjQzLCAyNSwgMSwgOTYsIDIwMSwgNDQsIDI1LCAxLCA5NiwgMjI1LCAxNzMsIDI1LCAxLCA5NiwgCisgICAgMjE0LCAyMjQsIDI1LCAxLCA5NiwgMjA3LCAyNywgMjUsIDEsIDk2LCAyMzUsIDE5NywgMjUsIDEsIDk2LCAyMTksIDIzNSwgCisgICAgMjUsIDEsIDk2LCAyMTAsIDQxLCAyNSwgMSwgOTYsIDIyMSwgMjQyLCAyNSwgMSwgOTYsIDIyMiwgMTAyLCAyNSwgMSwgOTYsIAorICAgIDIxOCwgNSwgMjUsIDEsIDk2LCAyMTksIDQ4LCAyNSwgMSwgOTYsIDIzNiwgMjYsIDI1LCAxLCA5NiwgMjA0LCAyMDMsIDI1LCAKKyAgICAxLCA5NiwgMjI2LCA1LCAyNSwgMSwgOTYsIDIwMCwgNzMsIDI1LCAxLCA5NiwgMjE4LCA0MiwgMjQ2LCAxMjYsIDI1LCAxLCAKKyAgICA5NiwgMTk5LCAyNTEsIDI1LCAxLCA5NiwgMjIyLCAzLCAyNSwgMSwgOTYsIDIyMCwgNTksIDI1LCAxLCA5NiwgMjE1LCAxOTUsIAorICAgIDI1LCAxLCA5NiwgMTk5LCAxOTYsIDI1LCAxLCA5NiwgMjI0LCAyMzIsIDI1LCAxLCA5NiwgMjM2LCAxODcsIDI1LCAxLCA5NiwgCisgICAgMjM2LCAyNSwgMjUsIDEsIDk2LCAyMTksIDE4MiwgMjUsIDEsIDk2LCAyMjYsIDIzMywgMjUsIDEsIDk2LCAyMjIsIDIxOSwgCisgICAgMjUsIDEsIDk2LCAyMTksIDE5NSwgMjUsIDEsIDk2LCAyMzUsIDE4MywgMjUsIDEsIDk2LCAyMzcsIDE5NSwgMjUsIDEsIDk2LCAKKyAgICAyMTgsIDEzNiwgMjUsIDEsIDk2LCAyMTUsIDI1MSwgMjUsIDEsIDk2LCAyMDAsIDE5LCAyNSwgMSwgOTYsIDIxOSwgMjIxLCAKKyAgICAyNSwgMSwgOTYsIDIxOCwgNDIsIDI0OCwgMjA1LCAyNSwgMSwgOTYsIDIxNywgMjQxLCAyNSwgMSwgOTYsIDIxNSwgNzksIAorICAgIDI1LCAxLCA5NiwgMjIxLCAyMDAsIDI1LCAxLCA5NiwgMjM2LCAxODUsIDI1LCAxLCA5NiwgMjIwLCAxNTEsIDI1LCAxLCA5NiwgCisgICAgMjIxLCAzOSwgMjUsIDEsIDk2LCAyMzUsIDE4MiwgMjUsIDEsIDk2LCAyMzYsIDE5MCwgNzAsIDI1LCAxLCA5NiwgMjIwLCAKKyAgICAyMzYsIDI1LCAxLCA5NiwgMjE0LCAyMjAsIDI1LCAxLCA5NiwgMjE5LCAxODQsIDI1LCAxLCA5NiwgMjI1LCAyMzcsIDI1LCAKKyAgICAxLCA5NiwgMjE1LCAxOTIsIDI1LCAxLCA5NiwgMjE4LCAxNDksIDI1LCAxLCA5NiwgMjAwLCAyMCwgMjUsIDEsIDk2LCAyMTksIAorICAgIDIwNSwgMjUsIDEsIDk2LCAyMTYsIDIxMSwgMjE2LCAzMywgMjUsIDEsIDk2LCAyMzYsIDE5MCwgMjQ3LCAxNjgsIDI1LCAxLCAKKyAgICA5NiwgMjM3LCA2LCAyNSwgMSwgOTYsIDIxOSwgODksIDI1LCAxLCA5NiwgNjIsIDI1LCAxLCA5NiwgMjA1LCAxNTQsIDI1LCAKKyAgICAxLCA5NiwgNzQsIDI1LCAxLCA5NiwgNzAsIDI1LCAxLCA5NiwgMjI1LCA3MiwgMjUsIDEsIDk2LCAyMTYsIDIxMSwgMjE1LCAKKyAgICAxMTQsIDI1LCAxLCA5NiwgMjA3LCAzMiwgMjUsIDEsIDk2LCAyMDYsIDIzMywgMjUsIDEsIDk2LCAyMjAsIDc0LCAyMjAsIAorICAgIDIyMywgMjMzLCAxMDksIDI1LCAxLCA5NiwgMjEwLCAxNiwgMjUsIDEsIDk2LCAyMDAsIDE2LCAyNSwgMSwgOTYsIDIxOSwgCisgICAgMTY1LCAyNSwgMSwgOTYsIDE5OSwgMjAxLCAyNSwgMSwgOTYsIDE5OSwgMjI4LCAyMDcsIDE3MywgMjUsIDEsIDk2LCAxOTksIAorICAgIDIyOCwgMjQzLCAxLCAyNSwgMSwgOTYsIDE5OSwgMTg1LCAyNSwgMSwgOTYsIDE5OSwgMTkzLCAyNSwgMSwgOTYsIDIyNiwgCisgICAgMjE5LCAyNSwgMSwgOTYsIDIxNSwgMjQ5LCAyNSwgMSwgOTYsIDIxOSwgOTAsIDIzOCwgMTI2LCAyNSwgMSwgOTYsIDIxNCwgCisgICAgMjE2LCAyNSwgMSwgOTYsIDIwMCwgMjEzLCAyNSwgMSwgOTYsIDIzNywgMTQwLCAyNSwgMSwgOTYsIDIwMywgNTQsIDI1LCAxLCAKKyAgICA5NiwgMjI0LCA0MiwgMjUsIDEsIDk2LCAyMjEsIDIxMSwgMjUsIDEsIDk2LCAyMTMsIDEwNywgMjUsIDEsIDk2LCAyMTMsIAorICAgIDIzNCwgMjUsIDEsIDk2LCAyMTksIDE2NCwgMjUsIDEsIDk2LCAyMTksIDI1MywgMjUsIDEsIDk2LCAyMTAsIDgsIDI1LCAxLCAKKyAgICA5NiwgMjA5LCAyNTEsIDI1LCAxLCA5NiwgMjM2LCAxOTAsIDIxMywgMTQzLCAyNSwgMSwgOTYsIDE4OCwgMjUsIDEsIDk2LCAKKyAgICAyMTUsIDIwNCwgMjUsIDEsIDk2LCAyMjQsIDcwLCAyNSwgMSwgOTYsIDIyNiwgODgsIDI1LCAxLCA5NiwgMjIyLCA0MCwgMjUsIAorICAgIDEsIDk2LCAxNzgsIDI1LCAxLCA5NiwgMjIyLCAxNjEsIDI1LCAxLCA5NiwgMjA2LCAxMzYsIDI1LCAxLCA5NiwgMjI2LCAKKyAgICAxNjMsIDI1LCAxLCA5NiwgMjIxLCAxMDYsIDI1LCAxLCA5NiwgMjA2LCAxNjYsIDI1LCAxLCA5NiwgMjM3LCAxNjQsIDI1LCAKKyAgICAxLCA5NiwgMjM1LCAxNzAsIDI1LCAxLCAyMTUsIDIzMywgMTYxLCAyNSwgMSwgMjE1LCAyMzMsIDY2LCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDIyNiwgMTUsIDI1LCAxLCAyMTUsIDIzMywgMjM4LCAyNTUsIDI1LCAxLCAyMTUsIDIzMywgMjEzLCAxNjcsIDI1LCAKKyAgICAxLCAyMTUsIDIzMywgMjA3LCAxNSwgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIDQxLCAyNSwgMSwgMjE1LCAyMzMsIDE5NCwgMjUsIAorICAgIDEsIDIxNSwgMjMzLCAyMTMsIDMzLCAyNSwgMSwgMjE1LCAyMzMsIDIxMywgODEsIDI1LCAxLCAyMTUsIDIzMywgMjIyLCA2MywgCisgICAgMjUsIDEsIDIxNSwgMjMzLCAyMDcsIDMyLCAyNSwgMSwgMjE1LCAyMzMsIDIyMCwgNzMsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAKKyAgICA5NiwgMjUsIDEsIDIxNSwgMjMzLCAyMjMsIDI0MywgMjUsIDEsIDIxNSwgMjMzLCAyMDcsIDE5MywgMjUsIDEsIDIxNSwgCisgICAgMjMzLCAyMTAsIDI4LCAyNSwgMSwgMjE1LCAyMzMsIDIwOSwgMTgyLCAyNSwgMSwgMjE1LCAyMzMsIDIxMCwgMTM3LCAyNSwgCisgICAgMSwgMjE1LCAyMzMsIDIyNSwgMTk5LCAyNSwgMSwgMjE1LCAyMzMsIDIyNiwgMjMzLCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgCisgICAgMTA0LCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgMTMzLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgNjcsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMTk5LCAyMjcsIDI1LCAxLCAyMTUsIDIzMywgMjA5LCAyMjAsIDI1LCAxLCAyMTUsIDIzMywgMTgzLCAyNSwgMSwgCisgICAgMjE1LCAyMzMsIDIxOCwgMTY3LCAyNSwgMSwgMjE1LCAyMzMsIDIxNSwgMjQ5LCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgMTQ4LCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIwMCwgMjEzLCAyNSwgMSwgMjE1LCAyMzMsIDIxNiwgNjEsIDI1LCAxLCAyMTUsIDIzMywgCisgICAgMjEyLCAxNzUsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAxNTAsIDI1LCAxLCAyMTUsIDIzMywgMjEzLCAxMDcsIDI1LCAxLCAKKyAgICAyMTUsIDIzMywgMjI2LCAyNDMsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAxODEsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAyMzIsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjEwLCA4LCAyNSwgMSwgMjE1LCAyMzMsIDIxNCwgMjIxLCAyNSwgMSwgMjE1LCAyMzMsIDIzNywgCisgICAgNiwgMjUsIDEsIDIxNSwgMjMzLCAyMDEsIDExNCwgMjUsIDEsIDIxNSwgMjMzLCAyMjQsIDIxMCwgMjUsIDEsIDIxNSwgMjMzLCAKKyAgICAyMjQsIDcwLCAyNSwgMSwgMjE1LCAyMzMsIDIyNiwgODgsIDI1LCAxLCAyMTUsIDIzMywgMjIyLCAxMDAsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMjEzLCAxMzksIDI1LCAxLCAyMTUsIDIzMywgMTc4LCAyNSwgMSwgMjE1LCAyMzMsIDIyMSwgMTM2LCAyNSwgMSwgCisgICAgMjE1LCAyMzMsIDIyMiwgMTA4LCAyNSwgMSwgMjE1LCAyMzMsIDIwNiwgMTQ2LCAyNSwgMSwgMjE1LCAyMzMsIDIyNiwgNTAsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjEyLCAyMSwgMjUsIDEsIDIxNSwgMjMzLCAyMDEsIDE2NSwgMjIxLCA0NCwgMSwgMjA3LCAzNiwgCisgICAgMjIxLCA0NCwgMSwgMjE5LCAyMDEsIDIyMSwgNDQsIDEsIDE5OSwgMjQ1LCAyMjEsIDQ0LCAxLCAyMjEsIDE2NiwgMjIxLCAKKyAgICA0NCwgMSwgMjQ5LCAxMzYsIDIyMSwgNDQsIDEsIDI0MiwgNTgsIDIyMSwgNDQsIDEsIDYyLCAyMjEsIDQ0LCAxLCAyMTUsIAorICAgIDIyOSwgMjIxLCA0NCwgMSwgMjI2LCAyMDIsIDIyMSwgNDQsIDEsIDIzNCwgMTY5LCAyMjEsIDQ0LCAxLCAyNDIsIDMzLCAKKyAgICAyMjEsIDQ0LCAxLCAyNDYsIDE5MiwgMjIxLCA0NCwgMSwgMjI3LCA3LCAyMjEsIDQ0LCAxLCAyMTcsIDkzLCAyMjEsIDQ0LCAKKyAgICAxLCAyMjIsIDIxNiwgMjIxLCA0NCwgMSwgMjE5LCAxMTgsIDIyMSwgNDQsIDEsIDE3MiwgMjIxLCA0NCwgMSwgMjE3LCA2MywgCisgICAgMjIxLCA0NCwgMSwgNzQsIDIyMSwgNDQsIDEsIDIxMywgMSwgMjIxLCA0NCwgMSwgMjEwLCAzMywgMjIxLCA0NCwgMSwgMjA2LCAKKyAgICAxMDUsIDIyMSwgNDQsIDEsIDIzOSwgMjcsIDIyMSwgNDQsIDEsIDIwMSwgMTE0LCAyMjEsIDQ0LCAxLCA3MiwgMjIxLCA0NCwgCisgICAgMSwgMjI2LCA4OCwgMjIxLCA0NCwgMSwgMjI1LCA4MCwgMjIxLCA0NCwgMSwgMTk0LCAyMjEsIDQ0LCAxLCAyMzQsIDIyMywgCisgICAgMjIxLCA0NCwgMSwgMjEzLCA4OCwgMjIxLCA0NCwgMSwgMjA2LCAxNzksIDIyMSwgNDQsIDE3LCAxOTksIDgxLCAyMjEsIDQ0LCAKKyAgICAxNywgMTAyLCAyMjEsIDQ0LCAxNywgMTA1LCAyMjEsIDQ0LCAxNywgMTQ3LCAyMjEsIDQ0LCAxNywgMTQ5LCAyMjEsIDQ0LCAKKyAgICAxNywgMTY0LCAyMjEsIDQ0LCAxNywgMTg3LCAyMjEsIDQ0LCAxNywgMjEwLCAxMzUsIDIyMSwgNDQsIDE3LCAxOTIsIDIyMSwgCisgICAgNDQsIDE3LCAyMTksIDExMywgMjIxLCA0NCwgMjQyLCAxMCwgMjIxLCA0NCwgNTMsIDI0MiwgMTAsIDI0OSwgNTgsIDIwMywgCisgICAgODcsIDEsIDIzOCwgMTYxLCAyNDksIDU4LCAyMDMsIDg3LCAxLCAxNjEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIxMSwgMjAyLCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzcsIDE5NSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjIyLCAxMDMsIDI0OSwgNTgsIAorICAgIDIwMywgODcsIDEsIDIwMCwgNiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjM2LCA3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgCisgICAgMjQxLCA4MSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjI2LCA0OSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjI3LCAxNjYsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDIzMywgNjcsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMSwgMTE0LCAyNDksIDU4LCAKKyAgICAyMDMsIDg3LCAxLCAxOTksIDE0LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzYsIDE5LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAKKyAgICAyNDAsIDIxMSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjQ3LCA3NiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjAzLCAxNzUsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDEzOCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjQ5LCAxMzYsIDI0OSwgNTgsIDIwMywgCisgICAgODcsIDEsIDIwMSwgMTY2LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDAsIDQ1LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAxNzIsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMSwgMTExLCAyNDksIDU4LCAyMDMsIDg3LCAxLCA2MiwgMjQ5LCA1OCwgMjAzLCA4NywgCisgICAgMSwgNzQsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIxNywgNjMsIDI0OSwgNTgsIDIwMywgODcsIDEsIDY2LCAyNDksIDU4LCAKKyAgICAyMDMsIDg3LCAxLCAyMzgsIDI1NSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgNzIsIDI0OSwgNTgsIDIwMywgODcsIDEsIDcwLCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMTIyLCAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDEyOCwgMjA1LCAxNzQsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDM4LCAyMjEsIDIwNiwgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDM4LCAyMjQsIDU2LCAKKyAgICAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDIzNCwgNTcsIDIwNSwgMTc0LCAyNDksIDU4LCAyMDMsIDg3LCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgMTI1LCAxMjMsIDIyLCAyMjcsIDQsIDEyNSwgMTIzLCAyMiwgMjI3LCAwLCAxMjUsIDEyMywgMjIsIAorICAgIDIyNiwgMTYwLCAxMjUsIDEyMywgMjIsIDIyNiwgMTI2LCAxMjUsIDEyMywgMjIsIDIyNywgMjUsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI3LCAyMiwgMTI1LCAxMjMsIDIyLCAyMjYsIDYsIDEyNSwgMTIzLCAyMiwgMjI1LCAyMzQsIDEyNSwgMTIzLCAyMiwgMjI3LCAKKyAgICA2LCAxMjUsIDEyMywgMjIsIDIyNiwgMjE3LCAxMjUsIDEyMywgMjIsIDIyNywgODEsIDEyNSwgMTIzLCAyMiwgMjI3LCA3OCwgCisgICAgMTI1LCAxMjMsIDIyLCAyMjYsIDY3LCAxMjUsIDEyMywgMjIsIDIyNiwgNjQsIDEyNSwgMTIzLCAyMiwgMjI3LCAxOSwgMTI1LCAKKyAgICAxMjMsIDIyLCAyMjcsIDE3LCAxMjUsIDEyMywgMjIsIDIyNiwgOCwgMTI1LCAxMjMsIDIyLCAyMjYsIDcsIDEyNSwgMTIzLCAKKyAgICAyMiwgMjI2LCA4NSwgMTI1LCAxMjMsIDIyLCAyMjYsIDUzLCAxMjUsIDEyMywgMjIsIDIyNiwgMTYyLCAxMjUsIDEyMywgMjIsIAorICAgIDIyNiwgMTYxLCAxMjUsIDEyMywgMjIsIDIyNywgOTYsIDEyNSwgMTIzLCAyMiwgMjI3LCAyMSwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjUsIDIyNSwgMTI1LCAxMjMsIDIyLCAyMjUsIDIxNiwgMTI1LCAxMjMsIDIyLCAyMjcsIDEwNCwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjcsIDk3LCAxMjUsIDEyMywgMTExLCAyMDMsIDY1LCAxMjUsIDEyMywgMTExLCAyMTgsIDEzOSwgMTI1LCAxMjMsIDExMSwgCisgICAgMjI1LCA1OCwgMTI1LCAxMjMsIDExMSwgMjM0LCAxNTAsIDEyNSwgMTIzLCAxMTEsIDIxOSwgMjQsIDEyNSwgMTIzLCAxMTEsIAorICAgIDIxMywgMTk5LCAxMjUsIDEyMywgMTExLCAyMTksIDUxLCAxMjUsIDEyMywgMTExLCAyMTQsIDEzMywgMTI1LCAxMjMsIDExMSwgCisgICAgMjAwLCA2MSwgMTI1LCAxMjMsIDExMSwgMjM0LCAzNiwgMTI1LCAxMjMsIDExMSwgMjIyLCAxMjMsIDEyNSwgMTIzLCAxMTEsIAorICAgIDI0NywgMTIsIDEyNSwgMTIzLCAxMTEsIDIyMCwgNzgsIDEyNSwgMTIzLCAxMTEsIDIzMywgMjI4LCAxMjUsIDEyMywgMTExLCAKKyAgICAyMTUsIDEyMiwgMTI1LCAxMjMsIDExMSwgMjE4LCAxNDQsIDEyNSwgMTIzLCAxMTEsIDIyMCwgMTE2LCAxMjUsIDEyMywgCisgICAgMTExLCAyNTAsIDEzOSwgMTI1LCAxMjMsIDExMSwgMjAwLCAxNzcsIDEyNSwgMTIzLCAxMTEsIDI0NywgMTA5LCAxMjUsIAorICAgIDEyMywgMTM0LCAyNDYsIDE2MSwgMjA0LCAyMTEsIDEyNSwgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMDksIDI5LCAxMjUsIDEyMywgCisgICAgMTM0LCAyNDYsIDE2MSwgMjI2LCAyMzUsIDEyNSwgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMjYsIDE5MywgMTI1LCAxMjMsIAorICAgIDEzNCwgMjQ2LCAxNjEsIDIwOCwgMTgsIDEyNSwgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMzMsIDE5NCwgMTI1LCAxMjMsIDEzNCwgCisgICAgMjQ2LCAxNjEsIDIwNiwgMjIwLCAxMjUsIDEyMywgMiwgMjAyLCAxNzYsIDIwNiwgNTgsIDEyNSwgMTIzLCAyLCAyMDIsIAorICAgIDE3NiwgMjA1LCAyMSwgMjQ3LCA2NywgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyNDcsIDEsIDEyNSwgMTIzLCAyLCAyMDIsIAorICAgIDE3NiwgMjA2LCA4MywgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMzcsIDEzNywgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAKKyAgICAyMTgsIDEzNCwgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAyMTMsIDkwLCAxMjUsIDEyMywgMiwgMjAwLCAxMzUsIDIwNSwgCisgICAgMTM3LCAxMjUsIDEyMywgMiwgMjAwLCAxMzUsIDIzNywgMTc2LCAxMjUsIDEyMywgMiwgMjAyLCAxNzYsIDIxMSwgMTg0LCAKKyAgICAxMjUsIDEyMywgMiwgMjIyLCA2MiwgMjA4LCAyMiwgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMTgsIDE4MywgMTI1LCAxMjMsIAorICAgIDIsIDIzMiwgMjM2LCAyMDAsIDgwLCAxMjUsIDEyMywgMiwgMjAwLCAxNzYsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjA1LCAKKyAgICA4LCAyMTIsIDI0NiwgMTI1LCAxMjMsIDE3LCAxOTksIDgxLCAxMjUsIDEyMywgMTcsIDEwMiwgMTI1LCAxMjMsIDE3LCAxMDUsIAorICAgIDEyNSwgMTIzLCAxNywgMTQ3LCAxMjUsIDEyMywgMTcsIDE0OSwgMTI1LCAxMjMsIDE3LCAxNjQsIDEyNSwgMTIzLCAxNywgCisgICAgMTg3LCAxMjUsIDEyMywgMTcsIDIxMCwgMTM1LCAxMjUsIDEyMywgMTcsIDE5MiwgMTI1LCAxMjMsIDE3LCAyMTksIDExMywgCisgICAgMTI1LCAxMjMsIDQxLCAyMDYsIDE2MSwgMTI1LCAxMjMsIDQxLCAyMzMsIDgwLCAxMjUsIDEyMywgNDEsIDIwNiwgMTY3LCAKKyAgICAyMDYsIDQ4LCAxMjUsIDEyMywgNDEsIDIyMSwgMTY3LCAxMjUsIDEyMywgNDEsIDIzMywgODMsIDIyMSwgMTY3LCAxMjUsIAorICAgIDEyMywgNDEsIDIwNiwgMTY3LCAyNDgsIDE3MCwgMTI1LCAxMjMsIDQxLCAyMDUsIDg1LCAxMjUsIDEyMywgMiwgMjAyLCAKKyAgICAxNzYsIDIyNCwgMzcsIDEyNSwgMTIzLCAyLCAyMDAsIDEzMiwgMTI1LCAxMjMsIDIsIDIzNCwgMzEsIDEyNSwgMTIzLCAyLCAKKyAgICAyMDYsIDczLCAyMzQsIDMxLCAxMjUsIDEyMywgMiwgMTk4LCAyNDQsIDIwNiwgMTE2LCAxMjUsIDEyMywgMiwgMjMzLCAyMTIsIAorICAgIDEyNSwgMTIzLCAyLCAyMTgsIDE5NywgMTI1LCAxMjMsIDIsIDIwMCwgMTY4LCAxMjUsIDEyMywgMiwgMjE4LCAxMzcsIDEyNSwgCisgICAgMTIzLCAyLCAyNTAsIDEyMywgMTI1LCAxMjMsIDIsIDIwNCwgMTM2LCAyNDcsIDY2LCAxMjUsIDEyMywgMiwgMjIyLCA2MiwgCisgICAgMjA1LCAyNCwgMTI1LCAxMjMsIDIsIDIwNiwgMjIxLCAxMjUsIDEyMywgMiwgMjI0LCA2NywgMTI1LCAxMjMsIDIsIDIyMCwgCisgICAgMjUyLCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIzNCwgMjE5LCAyMjQsIDE1LCAyMTgsIDE0MiwgMjE4LCAxNDEsIDEyNSwgCisgICAgMTIzLCAyLCAyNDYsIDE2MSwgMjQyLCAyMTMsIDIwNSwgMTUsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjA0LCAxMzQsIAorICAgIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjA0LCAxMzUsIDI0NiwgMTgwLCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIxNCwgCisgICAgMjE5LCAyNDEsIDIzNSwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMTgsIDE5MCwgMjA1LCAxNDUsIDEyNSwgMTIzLCAyNDYsIAorICAgIDEzMywgMiwgMjA1LCAxOSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDAsIDQ3LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIAorICAgIDIyNCwgMTU1LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyNSwgNTYsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjAwLCAKKyAgICAxMzEsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjI2LCA2OCwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMzQsIDE0NywgCisgICAgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjEsIDM3LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwNiwgNTksIDEyNSwgMTIzLCAKKyAgICAyNDYsIDEzMywgMiwgMjA1LCAyOSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMTUsIDI0MiwgMTI1LCAxMjMsIDI0NiwgCisgICAgMTMzLCAyLCAyMjYsIDIwNSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMzQsIDIwOSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAKKyAgICAyMDMsIDg0LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIzNywgMTczLCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwMCwgODcsIAorICAgIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjA1LCAyLCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyNSwgMjIwLCAxMjUsIDEyMywgCisgICAgMjQ2LCAxMzMsIDIsIDIwMSwgMTU2LCAxMTQsIDEsIDE3MiwgMTE0LCAxLCAyNDksIDEzNiwgMTE0LCAxLCAxMSwgMTcyLCAKKyAgICAxMTQsIDEsIDIxNSwgMTM1LCAxMTQsIDEsIDE3OCwgMTE0LCAxLCAyMjEsIDIxNCwgMTE0LCAxLCAyNTAsIDIzNCwgMTc4LCAKKyAgICAxMTQsIDEsIDIzNywgMTk1LCAxMTQsIDEsIDIwMywgOTAsIDExNCwgMSwgMjAyLCAyMzUsIDExNCwgMSwgMjA3LCAzNiwgCisgICAgMTE0LCAxLCAyNDIsIDU4LCAxMTQsIDEsIDExLCAyMDQsIDI1MywgMTE0LCAxLCAxMSwgMjA3LCAzNiwgMTE0LCAxLCAyMDQsIAorICAgIDI1MywgMTE0LCAxLCAyNDEsIDIyMCwgMTE0LCAxLCAxODgsIDExNCwgMSwgMjE5LCAxNTQsIDExNCwgMSwgMTEsIDIxOSwgCisgICAgMjEsIDExNCwgMSwgMjUwLCAyMzQsIDE4OCwgMTE0LCAxLCAyMTksIDIxLCAxMTQsIDEsIDIxOSwgNywgMTE0LCAxLCAxOTQsIAorICAgIDExNCwgMSwgMjI0LCAxLCAxMTQsIDEsIDIyNCwgMjIzLCAxMTQsIDEsIDIyNCwgMjEyLCAxMTQsIDEsIDIwNSwgMjAwLCAKKyAgICAxMTQsIDEsIDI0MCwgMjE5LCAxMTQsIDEsIDIwNSwgMTkyLCAxMTQsIDEsIDI0MCwgMjE4LCAxMTQsIDEsIDE2MSwgMTE0LCAKKyAgICAxLCAyMzYsIDg5LCAxMTQsIDEsIDExLCAxNjEsIDExNCwgMSwgMjE0LCAxNTksIDExNCwgMSwgMjE0LCAxMzYsIDExNCwgMSwgCisgICAgMjE5LCAyNTMsIDExNCwgMSwgMjE5LCAyMDIsIDExNCwgMSwgMjUwLCAyMzQsIDIxOSwgMjUzLCAxMTQsIDEsIDE0NCwgMTE0LCAKKyAgICAxLCAyMDAsIDE4MSwgMTE0LCAxLCAyMzUsIDE5OSwgMTE0LCAxLCAyMzUsIDE3NCwgMTE0LCAxLCAyMDUsIDcsIDExNCwgMSwgCisgICAgMjM5LCA3NywgMTE0LCAxLCAyMTgsIDYwLCAxMTQsIDEsIDIxOCwgNDMsIDExNCwgMSwgMjA1LCAyMiwgMTE0LCAxLCAyMzksIAorICAgIDg3LCAxMTQsIDEsIDExLCAyMDUsIDIyLCAxMTQsIDEsIDExLCAyMzksIDg3LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDIyLCAKKyAgICAxMTQsIDEsIDIxMCwgMTE0LCAxMTQsIDEsIDIwOCwgMTc5LCAxMTQsIDEsIDE5OSwgNzcsIDExNCwgMSwgMTk5LCA1LCAxMTQsIAorICAgIDEsIDIwNSwgMzIsIDExNCwgMSwgMjM5LCA5MywgMTE0LCAxLCAxMSwgMjA1LCAzMiwgMTE0LCAxLCAyMTIsIDY0LCAxMTQsIAorICAgIDEsIDE5OSwgMTE0LCAxMTQsIDEsIDE5OSwgNiwgMTE0LCAxLCAxOTgsIDIzMiwgMTE0LCAxLCAxOTgsIDIxMiwgMTE0LCAxLCAKKyAgICAyNTAsIDIzNCwgMTk4LCAyMzIsIDExNCwgMSwgMTk4LCAyMDQsIDExNCwgMSwgMTk4LCAyMTEsIDExNCwgMSwgMjAxLCAxMTQsIAorICAgIDExNCwgMSwgMjUxLCAxODUsIDExNCwgMSwgMjM0LCA4NCwgMTE0LCAxLCAyMjAsIDEyMSwgMTE0LCAyLCAyNTAsIDE3MSwgCisgICAgMTE0LCAyLCAyMTMsIDE2NSwgMjAyLCAxODcsIDExNCwgMiwgMjEzLCAxNjUsIDI1MCwgMTcxLCAxMTQsIDIyLCAyLCA2MiwgCisgICAgMTE0LCAyMiwgMiwgMjUyLCAxMzgsIDExNCwgMjIsIDIsIDI1MSwgMTgxLCAxMTQsIDIyLCAyLCAyNTEsIDg1LCAxMTQsIDIyLCAKKyAgICAyLCAyNTEsIDc2LCAxMTQsIDIyLCAyLCA3NCwgMTE0LCAyMiwgMiwgMjE3LCA2MywgMTE0LCAyMiwgMiwgMjAxLCAwLCAxMTQsIAorICAgIDIyLCAyLCAyMDEsIDE0NywgMTE0LCAyMiwgMiwgNzIsIDExNCwgMjIsIDIsIDIzOCwgMTc5LCAxMTQsIDIyLCAyLCAyMzgsIAorICAgIDE2NSwgMTE0LCAyMiwgMiwgMjE3LCAxMTgsIDExNCwgMjIsIDIsIDcwLCAxMTQsIDIyLCAyLCAyMzIsIDI0MCwgMTE0LCAyMiwgCisgICAgMiwgMjMyLCAyMzksIDExNCwgMjIsIDIsIDIzMiwgMjM4LCAxMTQsIDIyLCAyLCAyMjgsIDQ1LCAxMTQsIDIyLCAyLCAyMjgsIAorICAgIDE3OCwgMTE0LCAyMiwgMiwgMjI4LCAxNTEsIDExNCwgMjIsIDIsIDIyOCwgOCwgMTE0LCAyMiwgMiwgMjI4LCA5MSwgMTE0LCAKKyAgICAyMiwgMiwgNjYsIDExNCwgMjIsIDIsIDIwNCwgNDYsIDExNCwgMjIsIDIsIDIwNCwgNDUsIDExNCwgMjIsIDIsIDIwNCwgNDQsIAorICAgIDExNCwgMjIsIDIsIDIwMywgMTgyLCAxMTQsIDIyLCAyLCAyMDQsIDI4LCAxMTQsIDIyLCAyLCAyMDMsIDI0NiwgMTE0LCAyMiwgCisgICAgMiwgMjAwLCAxMjMsIDExNCwgMjIsIDIsIDIwMCwgOSwgMTE0LCAyMiwgMiwgMjUxLCAyMjEsIDExNCwgMjIsIDIsIDI1MSwgCisgICAgMjE3LCAxMTQsIDIyLCAyLCAyMzgsIDEwOCwgMTE0LCAyMiwgMiwgMjEyLCAyMTksIDIzOCwgMTA4LCAxMTQsIDIyLCAyLCAKKyAgICAyMzgsIDExNSwgMTE0LCAyMiwgMiwgMjEyLCAyMTksIDIzOCwgMTE1LCAxMTQsIDIyLCAyLCAyNTEsIDE3NiwgMTE0LCAyMiwgCisgICAgMiwgMjM4LCAyMzQsIDExNCwgMjIsIDIsIDI1MCwgMTM5LCAxMTQsIDIyLCAyLCAyMTcsIDMsIDExNCwgMjIsIDIsIDIyMCwgCisgICAgMjE0LCAxMTQsIDIyLCAyLCAyMTksIDI1NSwgMTE0LCAxNTAsIDIxMywgNDYsIDExNCwgMTUwLCAyMDUsIDE1OCwgMjEzLCAKKyAgICA0NiwgMTE0LCAxNTAsIDU2LCAxMTQsIDE1MCwgNTcsIDExNCwgMSwgMjA1LCAxNzIsIDExNCwgMSwgMjA1LCAxNzEsIDExNCwgCisgICAgMSwgMjA1LCAxNzAsIDExNCwgMSwgMjA1LCAxNjksIDExNCwgMSwgMjA1LCAxNjgsIDExNCwgMSwgMjA1LCAxNjcsIDExNCwgCisgICAgMSwgMjA1LCAxNjYsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTczLCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE3MiwgMTE0LCAKKyAgICAxLCAyMTMsIDE2NSwgMjA1LCAxNzAsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTY5LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIAorICAgIDE2OCwgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAxNjYsIDE4LCAyMjgsIDEwLCA4MSwgMTgsIDI0NiwgNjEsIDE4LCAyNDYsIAorICAgIDYwLCAxOCwgMjQ2LCA1OSwgMTgsIDI0NiwgNTgsIDE4LCAyNDYsIDU3LCAxOCwgMjQ2LCA1NiwgMTgsIDI0NiwgNTUsIDE4LCAKKyAgICAyNDYsIDU0LCAxOCwgMjQ2LCA1MywgMTgsIDI0NiwgNTIsIDE4LCAyNDYsIDUxLCAxOCwgMjQ2LCA1MCwgMTgsIDI0NiwgNDksIAorICAgIDE4LCAyNDYsIDQ4LCAxOCwgMjQ2LCA0NywgMTgsIDI0NiwgNDYsIDE4LCAyNDYsIDQ1LCAxOCwgMjQ2LCA0NCwgMTgsIDI0NiwgCisgICAgNDMsIDE4LCAyNDYsIDQyLCAxOCwgMjQ2LCA0MSwgMTgsIDI0NiwgNDAsIDE4LCAyNDYsIDM5LCAxOCwgMjQ2LCAzOCwgMTgsIAorICAgIDI0NiwgMzcsIDE4LCAyNDYsIDM2LCAxOCwgMjQ2LCAzNSwgMTgsIDI0NiwgMzQsIDE4LCAyNDYsIDMzLCAxOCwgMjQ2LCAzMiwgCisgICAgMTgsIDI0NiwgMzEsIDE4LCAyNDYsIDMwLCAxOCwgMjQ2LCAyOSwgMTgsIDI0NiwgMjgsIDE4LCAyNDYsIDI3LCAxOCwgMjQ2LCAKKyAgICAyNiwgMTgsIDI0NiwgMjUsIDE4LCAyNDYsIDI0LCAxOCwgMjQ2LCAyMywgMTgsIDI0NiwgMjIsIDE4LCAyNDYsIDIxLCAxOCwgCisgICAgMjQ2LCAyMCwgMTgsIDI0NiwgMTksIDE4LCAyNDYsIDE4LCAxOCwgMjQ2LCAxNywgMTgsIDI0NiwgMTYsIDE4LCAyNDYsIDE1LCAKKyAgICAxOCwgMjQ2LCAxNCwgMTgsIDI0NiwgMTMsIDE4LCAyNDYsIDEyLCAxOCwgMjQ2LCAxMSwgMTgsIDI0NiwgMTAsIDE4LCAyNDYsIAorICAgIDksIDE4LCAyNDYsIDgsIDE4LCAyNDYsIDcsIDE4LCAyNDYsIDYsIDE4LCAyNDYsIDUsIDE4LCAyNDYsIDQsIDE4LCAyNDYsIAorICAgIDMsIDE4LCAyNDYsIDIsIDE4LCAyNDYsIDEsIDE4LCAyNDYsIDAsIDE4LCAyNDUsIDI1NSwgMTgsIDI0NSwgMjU0LCAxOCwgCisgICAgMjQ1LCAyNTMsIDE4LCAyNDUsIDI1MiwgMTgsIDI0NSwgMjUxLCAxOCwgMjQ1LCAyNTAsIDE4LCAyNDUsIDI0OSwgMTgsIAorICAgIDI0NSwgMjQ4LCAxOCwgMjQ1LCAyNDcsIDE4LCAyNDUsIDI0NiwgMTgsIDI0NSwgMjQ1LCAxOCwgMjQ1LCAyNDQsIDE4LCAKKyAgICAyNDUsIDI0MywgMTgsIDI0NSwgMjQyLCAxOCwgMjQ1LCAyNDEsIDE4LCAyNDUsIDI0MCwgMTgsIDI0NSwgMjM5LCAxOCwgCisgICAgMjQ1LCAyMzgsIDE4LCAyNDUsIDIzNywgMTgsIDI0NSwgMjM2LCAxOCwgMjQ1LCAyMzUsIDE4LCAyNDUsIDIzNCwgMTgsIAorICAgIDI0NSwgMjMzLCAxOCwgMjQ1LCAyMzIsIDE4LCAyNDUsIDIzMSwgMTgsIDI0NSwgMjMwLCAxOCwgMjQ1LCAyMjksIDE4LCAKKyAgICAyNDUsIDIyOCwgMTgsIDI0NSwgMjI3LCAxOCwgMjQ1LCAyMjYsIDE4LCAyNDUsIDIyNSwgMTgsIDI0NSwgMjI0LCAxOCwgCisgICAgMjQ1LCAyMjMsIDE4LCAyNDUsIDIyMiwgMTgsIDI0NSwgMjIxLCAxOCwgMjQ1LCAyMjAsIDE4LCAyNDUsIDIxOSwgMTgsIAorICAgIDI0NSwgMjE4LCAxOCwgMjQ1LCAyMTcsIDE4LCAyNDUsIDIxNiwgMTgsIDI0NSwgMjE1LCAxOCwgMjQ1LCAyMTQsIDE4LCAKKyAgICAyNDUsIDIxMywgMTgsIDI0NSwgMjEyLCAxOCwgMjQ1LCAyMTEsIDE4LCAyNDUsIDIxMCwgMTgsIDI0NSwgMjA5LCAxOCwgCisgICAgMjQ1LCAyMDgsIDE4LCAyNDUsIDIwNywgMTgsIDI0NSwgMjA2LCAxOCwgMjQ1LCAyMDUsIDE4LCAyNDUsIDIwNCwgMTgsIAorICAgIDI0NSwgMjAzLCAxOCwgMjQ1LCAyMDIsIDE4LCAyNDUsIDIwMSwgMTgsIDI0NSwgMjAwLCAxOCwgMjQ1LCAxOTksIDE4LCAKKyAgICAyNDUsIDE5OCwgMTgsIDI0NSwgMTk3LCAxOCwgMjQ1LCAxOTYsIDE4LCAyNDUsIDE5NSwgMTgsIDI0NSwgMTk0LCAxOCwgCisgICAgMjQ1LCAxOTMsIDE4LCAyNDUsIDE5MiwgMTgsIDI0NSwgMTkxLCAxOCwgMjQ1LCAxOTAsIDE4LCAyNDUsIDE4OSwgMTgsIAorICAgIDI0NSwgMTg4LCAxOCwgMjQ1LCAxODcsIDE4LCAyNDUsIDE4NiwgMTgsIDI0NSwgMTg1LCAxOCwgMjQ1LCAxODQsIDE4LCAKKyAgICAyNDUsIDE4MywgMTgsIDI0NSwgMTgyLCAxOCwgMjQ1LCAxODEsIDE4LCAyNDUsIDE4MCwgMTgsIDI0NSwgMTc5LCAxOCwgCisgICAgMjQ1LCAxNzgsIDE4LCAyNDUsIDE3NywgMTgsIDI0NSwgMTc2LCAxOCwgMjQ1LCAxNzUsIDE4LCAyNDUsIDE3NCwgMTgsIAorICAgIDI0NSwgMTczLCAxOCwgMjQ1LCAxNzIsIDE4LCAyNDUsIDE3MSwgMTgsIDI0NSwgMTcwLCAxOCwgMjQ1LCAxNjksIDE4LCAKKyAgICAyNDUsIDE2OCwgMTgsIDI0NSwgMTY3LCAxOCwgMjQ1LCAxNjYsIDE4LCAyNDUsIDE2NSwgMTgsIDI0NSwgMTY0LCAxOCwgCisgICAgMjQ1LCAxNjMsIDE4LCAyNDUsIDE2MiwgMTgsIDI0NSwgMTYxLCAxOCwgMjQ1LCAxNjAsIDE4LCAyNDUsIDE1OSwgMTgsIAorICAgIDI0NSwgMTU4LCAxOCwgMjQ1LCAxNTcsIDE4LCAyNDUsIDE1NiwgMTgsIDI0NSwgMTU1LCAxOCwgMjQ1LCAxNTQsIDE4LCAKKyAgICAyNDUsIDE1MywgMTgsIDI0NSwgMTUyLCAxOCwgMjQ1LCAxNTEsIDE4LCAyNDUsIDE1MCwgMTgsIDI0NSwgMTQ5LCAxOCwgCisgICAgMjQ1LCAxNDgsIDE4LCAyNDUsIDE0NywgMTgsIDI0NSwgMTQ2LCAxOCwgMjQ1LCAxNDUsIDE4LCAyNDUsIDE0NCwgMTgsIAorICAgIDI0NSwgMTQzLCAxOCwgMjQ1LCAxNDIsIDE4LCAyNDUsIDE0MSwgMTgsIDI0NSwgMTQwLCAxOCwgMjQ1LCAxMzksIDE4LCAKKyAgICAyNDUsIDEzOCwgMTgsIDI0NSwgMTM3LCAxOCwgMjQ1LCAxMzYsIDE4LCAyNDUsIDEzNSwgMTgsIDI0NSwgMTM0LCAxOCwgCisgICAgMjQ1LCAxMzMsIDE4LCAyNDUsIDEzMiwgMTgsIDI0NSwgMTMxLCAxOCwgMjQ1LCAxMzAsIDE4LCAyNDUsIDEyOSwgMTgsIAorICAgIDI0NSwgMTI4LCAxOCwgMjQ1LCAxMjcsIDE4LCAyNDUsIDEyNiwgMTgsIDI0NSwgMTI1LCAxOCwgMjQ1LCAxMjQsIDE4LCAKKyAgICAyNDUsIDEyMywgMTgsIDI0NSwgMTIyLCAxOCwgMjQ1LCAxMjEsIDE4LCAyNDUsIDEyMCwgMTgsIDI0NSwgMTE5LCAxOCwgCisgICAgMjQ1LCAxMTgsIDE4LCAyNDUsIDExNywgMTgsIDI0NSwgMTE2LCAxOCwgMjQ1LCAxMTUsIDE4LCAyNDUsIDExNCwgMTgsIAorICAgIDI0NSwgMTEzLCAxOCwgMjQ1LCAxMTIsIDE4LCAyNDUsIDExMSwgMTgsIDI0NSwgMTEwLCAxOCwgMjQ1LCAxMDksIDE4LCAKKyAgICAyNDUsIDEwOCwgMTgsIDI0NSwgMTA3LCAxOCwgMjQ1LCAxMDYsIDE4LCAyNDUsIDEwNSwgMTgsIDI0NSwgMTA0LCAxOCwgCisgICAgMjQ1LCAxMDMsIDE4LCAyNDUsIDEwMiwgMTgsIDI0NSwgMTAxLCAxOCwgMjQ1LCAxMDAsIDE4LCAyNDUsIDk5LCAxOCwgMjQ1LCAKKyAgICA5OCwgMTgsIDI0NSwgOTcsIDE4LCAyNDUsIDk2LCAxOCwgMjQ1LCA5NSwgMTgsIDI0NSwgOTQsIDE4LCAyNDUsIDkzLCAxOCwgCisgICAgMjQ1LCA5MiwgMTgsIDI0NSwgOTEsIDE4LCAyNDUsIDkwLCAxOCwgMjQ1LCA4OSwgMTgsIDI0NSwgODgsIDE4LCAyNDUsIDg3LCAKKyAgICAxOCwgMjQ1LCA4NiwgMTgsIDI0NSwgODUsIDE4LCAyNDUsIDg0LCAxOCwgMjQ1LCA4MywgMTgsIDI0NSwgODIsIDE4LCAyNDUsIAorICAgIDgxLCAxOCwgMjQ1LCA4MCwgMTgsIDI0NSwgNzksIDE4LCAyNDUsIDc4LCAxOCwgMjQ1LCA3NywgMTgsIDI0NSwgNzYsIDE4LCAKKyAgICAyNDUsIDc1LCAxOCwgMjQ1LCA3NCwgMTgsIDI0NSwgNzMsIDE4LCAyNDUsIDcyLCAxOCwgMjQ1LCA3MSwgMTgsIDI0NSwgNzAsIAorICAgIDE4LCAyNDUsIDY5LCAxOCwgMjQ1LCA2OCwgMTgsIDI0NSwgNjcsIDE4LCAyNDUsIDY2LCAxOCwgMjQ1LCA2NSwgMTgsIDI0NSwgCisgICAgNjQsIDE4LCAyNDUsIDYzLCAxOCwgMjQ1LCA2MiwgMTgsIDI0NSwgNjEsIDE4LCAyNDUsIDYwLCAxOCwgMjQ1LCA1OSwgMTgsIAorICAgIDI0NSwgNTgsIDE4LCAyNDUsIDU3LCAxOCwgMjQ1LCA1NiwgMTgsIDI0NSwgNTUsIDE4LCAyNDUsIDU0LCAxOCwgMjQ1LCA1MywgCisgICAgMTgsIDI0NSwgNTIsIDE4LCAyNDUsIDUxLCAxOCwgMjQ1LCA1MCwgMTgsIDI0NSwgNDksIDE4LCAyNDUsIDQ4LCAxOCwgMjQ1LCAKKyAgICA0NywgMTgsIDI0NSwgNDYsIDE4LCAyNDUsIDQ1LCAxOCwgMjQ1LCA0NCwgMTgsIDI0NSwgNDMsIDE4LCAyNDUsIDQyLCAxOCwgCisgICAgMjQ1LCA0MSwgMTgsIDI0NSwgNDAsIDE4LCAyNDUsIDM5LCAxOCwgMjQ1LCAzOCwgMTgsIDI0NSwgMzcsIDE4LCAyNDUsIDM2LCAKKyAgICAxOCwgMjQ1LCAzNSwgMTgsIDI0NSwgMzQsIDE4LCAyNDUsIDMzLCAxOCwgMjQ1LCAzMiwgMTgsIDI0NSwgMzEsIDE4LCAyNDUsIAorICAgIDMwLCAxOCwgMjQ1LCAyOSwgMTgsIDI0NSwgMjgsIDE4LCAyNDUsIDI3LCAxOCwgMjQ1LCAyNiwgMTgsIDI0NSwgMjUsIDE4LCAKKyAgICAyNDUsIDI0LCAxOCwgMjQ1LCAyMywgMTgsIDI0NSwgMjIsIDE4LCAyNDUsIDIxLCAxOCwgMjQ1LCAyMCwgMTgsIDI0NSwgMTksIAorICAgIDE4LCAyNDUsIDE4LCAxOCwgMjQ1LCAxNywgMTgsIDI0NSwgMTYsIDE4LCAyNDUsIDE1LCAxOCwgMjQ1LCAxNCwgMTgsIDI0NSwgCisgICAgMTMsIDE4LCAyNDUsIDEyLCAxOCwgMjQ1LCAxMSwgMTgsIDI0NSwgMTAsIDE4LCAyNDUsIDksIDE4LCAyNDUsIDgsIDE4LCAKKyAgICAyNDUsIDcsIDE4LCAyNDUsIDYsIDE4LCAyNDUsIDUsIDE4LCAyNDUsIDQsIDE4LCAyNDUsIDMsIDE4LCAyNDUsIDIsIDE4LCAKKyAgICAyNDUsIDEsIDE4LCAyNDUsIDAsIDE4LCAyNDQsIDI1NSwgMTgsIDI0NCwgMjU0LCAxOCwgMjQ0LCAyNTMsIDE4LCAyNDQsIAorICAgIDI1MiwgMTgsIDI0NCwgMjUxLCAxOCwgMjQ0LCAyNTAsIDE4LCAyNDQsIDI0OSwgMTgsIDI0NCwgMjQ4LCAxOCwgMjQ0LCAKKyAgICAyNDcsIDE4LCAyNDQsIDI0NiwgMTgsIDI0NCwgMjQ1LCAxOCwgMjQ0LCAyNDQsIDE4LCAyNDQsIDI0MywgMTgsIDI0NCwgCisgICAgMjQyLCAxOCwgMjQ0LCAyNDEsIDE4LCAyNDQsIDI0MCwgMTgsIDI0NCwgMjM5LCAxOCwgMjQ0LCAyMzgsIDE4LCAyNDQsIAorICAgIDIzNywgMTgsIDI0NCwgMjM2LCAxOCwgMjQ0LCAyMzUsIDE4LCAyNDQsIDIzNCwgMTgsIDI0NCwgMjMzLCAxOCwgMjQ0LCAKKyAgICAyMzIsIDE4LCAyNDQsIDIzMSwgMTgsIDI0NCwgMjMwLCAxOCwgMjQ0LCAyMjksIDE4LCAyNDQsIDIyOCwgMTgsIDI0NCwgCisgICAgMjI3LCAxOCwgMjQ0LCAyMjYsIDE4LCAyNDQsIDIyNSwgMTgsIDI0NCwgMjI0LCAxOCwgMjQ0LCAyMjMsIDE4LCAyNDQsIAorICAgIDIyMiwgMTgsIDI0NCwgMjIxLCAxOCwgMjQ0LCAyMjAsIDE4LCAyNDQsIDIxOSwgMTgsIDI0NCwgMjE4LCAxOCwgMjQ0LCAKKyAgICAyMTcsIDE4LCAyNDQsIDIxNiwgMTgsIDI0NCwgMjE1LCAxOCwgMjQ0LCAyMTQsIDE4LCAyNDQsIDIxMywgMTgsIDI0NCwgCisgICAgMjEyLCAxOCwgMjQ0LCAyMTEsIDE4LCAyNDQsIDIxMCwgMTgsIDI0NCwgMjA5LCAxOCwgMjQ0LCAyMDgsIDE4LCAyNDQsIAorICAgIDIwNywgMTgsIDI0NCwgMjA2LCAxOCwgMjQ0LCAyMDUsIDE4LCAyNDQsIDIwNCwgMTgsIDI0NCwgMjAzLCAxOCwgMjQ0LCAKKyAgICAyMDIsIDE4LCAyNDQsIDIwMSwgMTgsIDI0NCwgMjAwLCAxOCwgMjQ0LCAxOTksIDE4LCAyNDQsIDE5OCwgMTgsIDI0NCwgCisgICAgMTk3LCAxOCwgMjQ0LCAxOTYsIDE4LCAyNDQsIDE5NSwgMTgsIDI0NCwgMTk0LCAxOCwgMjQ0LCAxOTMsIDE4LCAyNDQsIAorICAgIDE5MiwgMTgsIDI0NCwgMTkxLCAxOCwgMjQ0LCAxOTAsIDE4LCAyNDQsIDE4OSwgMTgsIDI0NCwgMTg4LCAxOCwgMjQ0LCAKKyAgICAxODcsIDE4LCAyNDQsIDE4NiwgMTgsIDI0NCwgMTg1LCAxOCwgMjQ0LCAxODQsIDE4LCAyNDQsIDE4MywgMTgsIDI0NCwgCisgICAgMTgyLCAxOCwgMjQ0LCAxODEsIDE4LCAyNDQsIDE4MCwgMTgsIDI0NCwgMTc5LCAxOCwgMjQ0LCAxNzgsIDE4LCAyNDQsIAorICAgIDE3NywgMTgsIDI0NCwgMTc2LCAxOCwgMjQ0LCAxNzUsIDE4LCAyNDQsIDE3NCwgMTgsIDI0NCwgMTczLCAxOCwgMjQ0LCAKKyAgICAxNzIsIDE4LCAyNDQsIDE3MSwgMTgsIDI0NCwgMTcwLCAxOCwgMjQ0LCAxNjksIDE4LCAyNDQsIDE2OCwgMTgsIDI0NCwgCisgICAgMTY3LCAxOCwgMjQ0LCAxNjYsIDE4LCAyNDQsIDE2NSwgMTgsIDI0NCwgMTY0LCAxOCwgMjQ0LCAxNjMsIDE4LCAyNDQsIAorICAgIDE2MiwgMTgsIDI0NCwgMTYxLCAxOCwgMjQ0LCAxNjAsIDE4LCAyNDQsIDE1OSwgMTgsIDI0NCwgMTU4LCAxOCwgMjQ0LCAKKyAgICAxNTcsIDE4LCAyNDQsIDE1NiwgMTgsIDI0NCwgMTU1LCAxOCwgMjQ0LCAxNTQsIDE4LCAyNDQsIDE1MywgMTgsIDI0NCwgCisgICAgMTUyLCAxOCwgMjQ0LCAxNTEsIDE4LCAyNDQsIDE1MCwgMTgsIDI0NCwgMTQ5LCAxOCwgMjQ0LCAxNDgsIDE4LCAyNDQsIAorICAgIDE0NywgMTgsIDI0NCwgMTQ2LCAxOCwgMjQ0LCAxNDUsIDE4LCAyNDQsIDE0NCwgMTgsIDI0NCwgMTQzLCAxOCwgMjQ0LCAKKyAgICAxNDIsIDE4LCAyNDQsIDE0MSwgMTgsIDI0NCwgMTQwLCAxOCwgMjQ0LCAxMzksIDE4LCAyNDQsIDEzOCwgMTgsIDI0NCwgCisgICAgMTM3LCAxOCwgMjQ0LCAxMzYsIDE4LCAyNDQsIDEzNSwgMTgsIDI0NCwgMTM0LCAxOCwgMjQ0LCAxMzMsIDE4LCAyNDQsIAorICAgIDEzMiwgMTgsIDI0NCwgMTMxLCAxOCwgMjQ0LCAxMzAsIDE4LCAyNDQsIDEyOSwgMTgsIDI0NCwgMTI4LCAxOCwgMjQ0LCAKKyAgICAxMjcsIDE4LCAyNDQsIDEyNiwgMTgsIDI0NCwgMTI1LCAxOCwgMjQ0LCAxMjQsIDE4LCAyNDQsIDEyMywgMTgsIDI0NCwgCisgICAgMTIyLCAxOCwgMjQ0LCAxMjEsIDE4LCAyNDQsIDEyMCwgMTgsIDI0NCwgMTE5LCAxOCwgMjQ0LCAxMTgsIDE4LCAyNDQsIAorICAgIDExNywgMTgsIDI0NCwgMTE2LCAxOCwgMjQ0LCAxMTUsIDE4LCAyNDQsIDExNCwgMTgsIDI0NCwgMTEzLCAxOCwgMjQ0LCAKKyAgICAxMTIsIDE4LCAyNDQsIDExMSwgMTgsIDI0NCwgMTEwLCAxOCwgMjQ0LCAxMDksIDE4LCAyNDQsIDEwOCwgMTgsIDI0NCwgCisgICAgMTA3LCAxOCwgMjQ0LCAxMDYsIDE4LCAyNDQsIDEwNSwgMTgsIDI0NCwgMTA0LCAxOCwgMjQ0LCAxMDMsIDE4LCAyNDQsIAorICAgIDEwMiwgMTgsIDI0NCwgMTAxLCAxOCwgMjQ0LCAxMDAsIDE4LCAyNDQsIDk5LCAxOCwgMjQ0LCA5OCwgMTgsIDI0NCwgOTcsIAorICAgIDE4LCAyNDQsIDk2LCAxOCwgMjQ0LCA5NSwgMTgsIDI0NCwgOTQsIDE4LCAyNDQsIDkzLCAxOCwgMjQ0LCA5MiwgMTgsIDI0NCwgCisgICAgOTEsIDE4LCAyNDQsIDkwLCAxOCwgMjQ0LCA4OSwgMTgsIDI0NCwgODgsIDE4LCAyNDQsIDg3LCAxOCwgMjQ0LCA4NiwgMTgsIAorICAgIDI0NCwgODUsIDE4LCAyNDQsIDg0LCAxOCwgMjQ0LCA4MywgMTgsIDI0NCwgODIsIDE4LCAyNDQsIDgxLCAxOCwgMjQ0LCA4MCwgCisgICAgMTgsIDI0NCwgNzksIDE4LCAyNDQsIDc4LCAxOCwgMjQ0LCA3NywgMTgsIDI0NCwgNzYsIDE4LCAyNDQsIDc1LCAxOCwgMjQ0LCAKKyAgICA3NCwgMTgsIDI0NCwgNzMsIDE4LCAyNDQsIDcyLCAxOCwgMjQ0LCA3MSwgMTgsIDI0NCwgNzAsIDE4LCAyNDQsIDY5LCAxOCwgCisgICAgMjQ0LCA2OCwgMTgsIDI0NCwgNjcsIDE4LCAyNDQsIDY2LCAxOCwgMjQ0LCA2NSwgMTgsIDI0NCwgNjQsIDE4LCAyNDQsIDYzLCAKKyAgICAxOCwgMjQ0LCA2MiwgMTgsIDI0NCwgNjEsIDE4LCAyNDQsIDYwLCAxOCwgMjQ0LCA1OSwgMTgsIDI0NCwgNTgsIDE4LCAyNDQsIAorICAgIDU3LCAxOCwgMjQ0LCA1NiwgMTgsIDI0NCwgNTUsIDE4LCAyNDQsIDU0LCAxOCwgMjQ0LCA1MywgMTgsIDI0NCwgNTIsIDE4LCAKKyAgICAyNDQsIDUxLCAxOCwgMjQ0LCA1MCwgMTgsIDI0NCwgNDksIDE4LCAyNDQsIDQ4LCAxOCwgMjQ0LCA0NywgMTgsIDI0NCwgNDYsIAorICAgIDE4LCAyNDQsIDQ1LCAxOCwgMjQ0LCA0NCwgMTgsIDI0NCwgNDMsIDE4LCAyNDQsIDQyLCAxOCwgMjQ0LCA0MSwgMTgsIDI0NCwgCisgICAgNDAsIDE4LCAyNDQsIDM5LCAxOCwgMjQ0LCAzOCwgMTgsIDI0NCwgMzcsIDE4LCAyNDQsIDM2LCAxOCwgMjQ0LCAzNSwgMTgsIAorICAgIDI0NCwgMzQsIDE4LCAyNDQsIDMzLCAxOCwgMjQ0LCAzMiwgMTgsIDI0NCwgMzEsIDE4LCAyNDQsIDMwLCAxOCwgMjQ0LCAyOSwgCisgICAgMTgsIDI0NCwgMjgsIDE4LCAyNDQsIDI3LCAxOCwgMjQ0LCAyNiwgMTgsIDI0NCwgMjUsIDE4LCAyNDQsIDI0LCAxOCwgMjQ0LCAKKyAgICAyMywgMTgsIDI0NCwgMjIsIDE4LCAyNDQsIDIxLCAxOCwgMjQ0LCAyMCwgMTgsIDI0NCwgMTksIDE4LCAyNDQsIDE4LCAxOCwgCisgICAgMjQ0LCAxNywgMTgsIDI0NCwgMTYsIDE4LCAyNDQsIDE1LCAxOCwgMjQ0LCAxNCwgMTgsIDI0NCwgMTMsIDE4LCAyNDQsIDEyLCAKKyAgICAxOCwgMjQ0LCAxMSwgMTgsIDI0NCwgMTAsIDE4LCAyNDQsIDksIDE4LCAyNDQsIDgsIDE4LCAyNDQsIDcsIDE4LCAyNDQsIDYsIAorICAgIDE4LCAyNDQsIDUsIDE4LCAyNDQsIDQsIDE4LCAyNDQsIDMsIDE4LCAyNDQsIDIsIDE4LCAyNDQsIDEsIDE4LCAyNDQsIDAsIAorICAgIDE4LCAyNDMsIDI1NSwgMTgsIDI0MywgMjU0LCAxOCwgMjQzLCAyNTMsIDE4LCAyNDMsIDI1MiwgMTgsIDI0MywgMjUxLCAxOCwgCisgICAgMjQzLCAyNTAsIDE4LCAyNDMsIDI0OSwgMTgsIDI0MywgMjQ4LCAxOCwgMjQzLCAyNDcsIDE4LCAyNDMsIDI0NiwgMTgsIAorICAgIDI0MywgMjQ1LCAxOCwgMjQzLCAyNDQsIDE4LCAyNDMsIDI0MywgMTgsIDI0MywgMjQyLCAxOCwgMjQzLCAyNDEsIDE4LCAKKyAgICAyNDMsIDI0MCwgMTgsIDI0MywgMjM5LCAxOCwgMjQzLCAyMzgsIDE4LCAyNDMsIDIzNywgMTgsIDI0MywgMjM2LCAxOCwgCisgICAgMjQzLCAyMzUsIDE4LCAyNDMsIDIzNCwgMTgsIDI0MywgMjMzLCAxOCwgMjQzLCAyMzIsIDE4LCAyNDMsIDIzMSwgMTgsIAorICAgIDI0MywgMjMwLCAxOCwgMjQzLCAyMjksIDE4LCAyNDMsIDIyOCwgMTgsIDI0MywgMjI3LCAxOCwgMjQzLCAyMjYsIDE4LCAKKyAgICAyNDMsIDIyNSwgMTgsIDI0MywgMjI0LCAxOCwgMjQzLCAyMjMsIDE4LCAyNDMsIDIyMiwgMTgsIDI0MywgMjIxLCAxOCwgCisgICAgMjQzLCAyMjAsIDE4LCAyNDMsIDIxOSwgMTgsIDI0MywgMjE4LCAxOCwgMjQzLCAyMTcsIDE4LCAyNDMsIDIxNiwgMTgsIAorICAgIDI0MywgMjE1LCAxOCwgMjQzLCAyMTQsIDE4LCAyNDMsIDIxMywgMTgsIDI0MywgMjEyLCAxOCwgMjQzLCAyMTEsIDE4LCAKKyAgICAyNDMsIDIxMCwgMTgsIDI0MywgMjA5LCAxOCwgMjQzLCAyMDgsIDE4LCAyNDMsIDIwNywgMTgsIDI0MywgMjA2LCAxOCwgCisgICAgMjQzLCAyMDUsIDE4LCAyNDMsIDIwNCwgMTgsIDI0MywgMjAzLCAxOCwgMjQzLCAyMDIsIDE4LCAyNDMsIDIwMSwgMTgsIAorICAgIDI0MywgMjAwLCAxOCwgMjQzLCAxOTksIDE4LCAyNDMsIDE5OCwgMTgsIDI0MywgMTk3LCAxOCwgMjQzLCAxOTYsIDE4LCAKKyAgICAyNDMsIDE5NSwgMTgsIDI0MywgMTk0LCAxOCwgMjQzLCAxOTMsIDE4LCAyNDMsIDE5MiwgMTgsIDI0MywgMTkxLCAxOCwgCisgICAgMjQzLCAxOTAsIDE4LCAyNDMsIDE4OSwgMTgsIDI0MywgMTg4LCAxOCwgMjQzLCAxODcsIDE4LCAyNDMsIDE4NiwgMTgsIAorICAgIDI0MywgMTg1LCAxOCwgMjQzLCAxODQsIDE4LCAyNDMsIDE4MywgMTgsIDI0MywgMTgyLCAxOCwgMjQzLCAxODEsIDE4LCAKKyAgICAyNDMsIDE4MCwgMTgsIDI0MywgMTc5LCAxOCwgMjQzLCAxNzgsIDE4LCAyNDMsIDE3NywgMTgsIDI0MywgMTc2LCAxOCwgCisgICAgMjQzLCAxNzUsIDE4LCAyNDMsIDE3NCwgMTgsIDI0MywgMTczLCAxOCwgMjQzLCAxNzIsIDE4LCAyNDMsIDE3MSwgMTgsIAorICAgIDI0MywgMTcwLCAxOCwgMjQzLCAxNjksIDE4LCAyNDMsIDE2OCwgMTgsIDI0MywgMTY3LCAxOCwgMjQzLCAxNjYsIDE4LCAKKyAgICAyNDMsIDE2NSwgMTgsIDI0MywgMTY0LCAxOCwgMjQzLCAxNjMsIDE4LCAyNDMsIDE2MiwgMTgsIDI0MywgMTYxLCAxOCwgCisgICAgMjQzLCAxNjAsIDE4LCAyNDMsIDE1OSwgMTgsIDI0MywgMTU4LCAxOCwgMjQzLCAxNTcsIDE4LCAyNDMsIDE1NiwgMTgsIAorICAgIDI0MywgMTU1LCAxOCwgMjQzLCAxNTQsIDE4LCAyNDMsIDE1MywgMTgsIDI0MywgMTUyLCAxOCwgMjQzLCAxNTEsIDE4LCAKKyAgICAyNDMsIDE1MCwgMTgsIDI0MywgMTQ5LCAxOCwgMjQzLCAxNDgsIDE4LCAyNDMsIDE0NywgMTgsIDI0MywgMTQ2LCAxOCwgCisgICAgMjQzLCAxNDUsIDE4LCAyNDMsIDE0NCwgMTgsIDI0MywgMTQzLCAxOCwgMjQzLCAxNDIsIDE4LCAyNDMsIDE0MSwgMTgsIAorICAgIDI0MywgMTQwLCAxOCwgMjQzLCAxMzksIDE4LCAyNDMsIDEzOCwgMTgsIDI0MywgMTM3LCAxOCwgMjQzLCAxMzYsIDE4LCAKKyAgICAyNDMsIDEzNSwgMTgsIDI0MywgMTM0LCAxOCwgMjQzLCAxMzMsIDE4LCAyNDMsIDEzMiwgMTgsIDI0MywgMTMxLCAxOCwgCisgICAgMjQzLCAxMzAsIDE4LCAyNDMsIDEyOSwgMTgsIDI0MywgMTI4LCAxOCwgMjQzLCAxMjcsIDE4LCAyNDMsIDEyNiwgMTgsIAorICAgIDI0MywgMTI1LCAxOCwgMjQzLCAxMjQsIDE4LCAyNDMsIDEyMywgMTgsIDI0MywgMTIyLCAxOCwgMjQzLCAxMjEsIDE4LCAKKyAgICAyNDMsIDEyMCwgMTgsIDI0MywgMTE5LCAxOCwgMjQzLCAxMTgsIDE4LCAyNDMsIDExNywgMTgsIDI0MywgMTE2LCAxOCwgCisgICAgMjQzLCAxMTUsIDE4LCAyNDMsIDExNCwgMTgsIDI0MywgMTEzLCAxOCwgMjQzLCAxMTIsIDE4LCAyNDMsIDExMSwgMTgsIAorICAgIDI0MywgMTEwLCAxOCwgMjQzLCAxMDksIDE4LCAyNDMsIDEwOCwgMTgsIDI0MywgMTA3LCAxOCwgMjQzLCAxMDYsIDE4LCAKKyAgICAyNDMsIDEwNSwgMTgsIDI0MywgMTA0LCAxOCwgMjQzLCAxMDMsIDE4LCAyNDMsIDEwMiwgMTgsIDI0MywgMTAxLCAxOCwgCisgICAgMjQzLCAxMDAsIDE4LCAyNDMsIDk5LCAxOCwgMjQzLCA5OCwgMTgsIDI0MywgOTcsIDE4LCAyNDMsIDk2LCAxOCwgMjQzLCAKKyAgICA5NSwgMTgsIDI0MywgOTQsIDE4LCAyNDMsIDkzLCAxOCwgMjQzLCA5MiwgMTgsIDI0MywgOTEsIDE4LCAyNDMsIDkwLCAxOCwgCisgICAgMjQzLCA4OSwgMTgsIDI0MywgODgsIDE4LCAyNDMsIDg3LCAxOCwgMjQzLCA4NiwgMTgsIDI0MywgODUsIDE4LCAyNDMsIDg0LCAKKyAgICAxOCwgMjQzLCA4MywgMTgsIDI0MywgODIsIDE4LCAyNDMsIDgxLCAxOCwgMjQzLCA4MCwgMTgsIDI0MywgNzksIDE4LCAyNDMsIAorICAgIDc4LCAxOCwgMjQzLCA3NywgMTgsIDI0MywgNzYsIDE4LCAyNDMsIDc1LCA2OSwgMSwgMjUwLCAyMzQsIDcyLCAxNzcsIDEsIAorICAgIDI1MCwgMjM0LCAyMDAsIDUxLCAxMDQsIDEsIDIzNCwgMjQ3LCAxMDQsIDEsIDIwMCwgMTk1LCAxMDQsIDEsIDIxNiwgMjI2LCAKKyAgICAxMDQsIDEsIDIwNywgODMsIDEwNCwgMSwgMjM4LCA1LCAxMDQsIDEsIDIyNywgMTE4LCAxMDQsIDEsIDE1NiwgMTA0LCAxLCAKKyAgICAyNTAsIDEwMywgMTA0LCAxLCAyNDIsIDE1MywgMTA0LCAxLCAyMDMsIDE2OCwgMTA0LCAxLCAyMzYsIDE1NiwgMTA0LCAxLCAKKyAgICAxNDYsIDEwNCwgMSwgMjE2LCAyMjcsIDIyMCwgMjE0LCAxMDQsIDEsIDI0MiwgMTU0LCAyMTIsIDEyMiwgMTA0LCAxLCAyMzgsIAorICAgIDYsIDIyMCwgMjE0LCAxMDQsIDEsIDIyNywgMTE5LCAyMjMsIDI0MywgMTA0LCAxLCAyMTQsIDMzLCAyMTIsIDEyMiwgMTA0LCAKKyAgICAxLCAyMDYsIDEyNCwgMTA0LCAxLCAyMDksIDYyLCAyNDEsIDEwMSwgMTA0LCAxLCAyNDEsIDEwMSwgMTA0LCAxLCAyMjYsIAorICAgIDExMCwgMTA0LCAxLCAyMDksIDYyLCAyMjcsIDI1MSwgMTA0LCAxLCAyMzQsIDQwLCAxMDQsIDEsIDIyNCwgMjI0LCAxMDQsIAorICAgIDEsIDIxMywgOTQsIDEwNCwgMSwgMjIzLCAyNDMsIDEwNCwgMSwgMjIwLCAyMTQsIDEwNCwgMSwgMjI3LCAyNTEsIDEwNCwgMSwgCisgICAgMjEyLCAxMjIsIDEwNCwgMSwgMjIzLCAyNDQsIDIyMCwgMjE0LCAxMDQsIDEsIDIyMCwgMjE1LCAyMjMsIDI0MywgMTA0LCAxLCAKKyAgICAyMjcsIDI1MiwgMjIzLCAyNDMsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgMjUxLCAxMDQsIDEsIDIyMywgMjQ0LCAzLCAyNDAsIAorICAgIDE4MiwgMTA0LCAxLCAyMjAsIDIxNSwgMywgMjQwLCAxODIsIDEwNCwgMSwgMjI3LCAyNTIsIDMsIDI0MCwgMTgyLCAxMDQsIAorICAgIDEsIDIyNywgMjUyLCAzLCAxOTAsIDIyOCwgNzQsIDI2LCA1NiwgMTA0LCAxLCAyMTIsIDEyMywgMywgMjQwLCAxODIsIDEwNCwgCisgICAgMSwgMjEyLCAxMjMsIDMsIDczLCA1NywgMTA0LCAxLCAyMjMsIDI0NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjIwLCAyMTUsIAorICAgIDIxMiwgMTIyLCAxMDQsIDEsIDIyNywgMjUyLCAyMTIsIDEyMiwgMTA0LCAxLCAyMTIsIDEyMywgMjEyLCAxMjIsIDEwNCwgMSwgCisgICAgMjIzLCAyNDQsIDIyMCwgMjE1LCAyMTIsIDEyMiwgMTA0LCAxLCAyMjAsIDIxNSwgMjIzLCAyNDQsIDIxMiwgMTIyLCAxMDQsIAorICAgIDEsIDIyNywgMjUyLCAyMjMsIDI0NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgMjUyLCAyMTIsIDEyMiwgCisgICAgMTA0LCAxLCAyMjcsIDI1MiwgMjEyLCAxMjMsIDMsIDI0MCwgMTgyLCAxMDQsIDEsIDIyNywgMjUyLCAyMjAsIDIxNCwgMTA0LCAKKyAgICAxLCAyMjcsIDI1MiwgMjIwLCAyMTUsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMDcsIDgzLCAxMDQsIDEsIDIxMiwgCisgICAgMTIzLCAyMDcsIDg0LCAxNDYsIDEwNCwgMSwgMjEyLCAxMjMsIDIxNiwgMjI2LCAxMDQsIDEsIDIxMiwgMTIzLCAyMTYsIAorICAgIDIyNywgMTQ2LCAxMDQsIDEsIDIwNywgODQsIDIxMiwgMTIyLCAxMDQsIDEsIDIwNywgODQsIDIxNCwgMzMsIDIxMiwgMTIyLCAKKyAgICAxMDQsIDEsIDIwMSwgMTQ3LCAxMDQsIDEsIDIwMSwgNDEsIDEwNCwgMSwgMjAxLCAxNDgsIDE0NiwgMTA0LCAxLCAyMTIsIAorICAgIDEyMywgMjIwLCAyMTQsIDEwNCwgMSwgMjEyLCAxMjMsIDIyMywgMjQzLCAxMDQsIDEsIDIyNywgMTE5LCAyMTQsIDMzLCAKKyAgICAyMTIsIDEyMiwgMTA0LCAxLCAyMzYsIDE1NywgMjE0LCAzMywgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgCisgICAgMTE4LCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIDExOSwgMTQ2LCAxMDQsIDEsIDYyLCAxMDQsIDEsIDIwOSwgNjIsIDIxNiwgCisgICAgMjM4LCAxMDQsIDEsIDIxNywgMTQ2LCAxMDQsIDEsIDc0LCAxMDQsIDEsIDI1MSwgMjksIDEwNCwgMSwgNzAsIDEwNCwgMSwgCisgICAgNzIsIDEwNCwgMSwgMjI4LCAxNzgsIDEwNCwgMSwgMjA5LCAyNTAsIDcwLCAxMDQsIDEsIDIwNCwgMjMsIDEwNCwgMSwgMjM4LCAKKyAgICAyNTUsIDEwNCwgMSwgMjA5LCA2MiwgMjM4LCAyNDEsIDEwNCwgMSwgMjEyLCAyMzksIDcwLCAxMDQsIDEsIDIwOSwgNjIsIAorICAgIDIzOCwgMjU1LCAxMDQsIDEsIDE2OCwgNzAsIDEwNCwgMSwgMjAwLCA1MSwgMTA0LCAxLCA2NiwgMTA0LCAxLCAyMzgsIDY5LCAKKyAgICAxMDQsIDEsIDIwMCwgMTQ2LCAxMDQsIDEsIDEwOCwgMjIwLCAyMTQsIDEwNCwgMSwgMTY4LCA2NiwgMTA0LCAxLCAyMTIsIAorICAgIDIzOSwgNjYsIDEwNCwgMSwgMjA0LCAyNSwgMTA0LCAxLCAyMDksIDYyLCA2NiwgMTA0LCAxLCAyMTcsIDYwLCAxMDQsIDEsIAorICAgIDIxNiwgMjM4LCAxMDQsIDEsIDIxNywgMywgMTA0LCAxLCAyMDEsIDExNCwgMTA0LCAxLCAyMDEsIDAsIDEwNCwgMSwgMjAxLCAKKyAgICAzMSwgMTA0LCAxLCAyMDEsIDU1LCAxMDQsIDEsIDIwMCwgMjMwLCAxMDQsIDEsIDIyMCwgMTIzLCA2NiwgMTA0LCAxLCAyMjAsIAorICAgIDEyMywgNzQsIDEwNCwgMSwgMjIwLCAxMjMsIDcwLCAxMDQsIDEsIDIyMCwgMTIzLCA2MiwgMTA0LCAxLCAyMTYsIDE2LCAKKyAgICAyNTEsIDg1LCAxMDQsIDEsIDIxNiwgMTYsIDI1MSwgMTAxLCAxMDQsIDEsIDIwOSwgNjIsIDIzOCwgMTc5LCAxMDQsIDEsIAorICAgIDIwOSwgNjIsIDI1MSwgODUsIDEwNCwgMSwgMjA5LCA2MiwgMjE3LCA3OCwgMTA0LCAxLCAxMDksIDIyMywgMjQzLCAxMDQsIAorICAgIDI1MSwgMjAwLCA0OSwgMjMzLCAxNzcsIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAyMjEsIDIwNiwgMjMzLCAxNzcsIDIxMSwgCisgICAgMTk3LCAxMDQsIDI1MSwgMjAwLCA1MSwgMjMzLCAxNzcsIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDgzLCAyMTEsIAorICAgIDE5NywgMTA0LCAyNTEsIDIwMCwgMjIxLCAyMDYsIDgzLCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMTIyLCA4MywgMjExLCAKKyAgICAxOTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIyNSwgMTksIAorICAgIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjA2LCAyNDAsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAKKyAgICAyMDcsIDYsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAxOTcsIDExNywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIzMywgCisgICAgMTksIDExNywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIwNiwgMjQxLCAxMTcsIDEwNCwgMjUxLCAyMDAsIDEyMiwgMTY5LCAKKyAgICAxMDQsIDI1MSwgMjAwLCAxMjIsIDIwNiwgMSwgMTY5LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDIzNSwgNzMsIDEwNCwgMjUxLCAKKyAgICAyMDAsIDEyMiwgMTY4LCAyMzUsIDczLCAxMDQsIDI1MSwgMjAwLCAxMjIsIDI0MCwgMTgyLCAxMDQsIDI1MSwgMjAwLCAxMjIsIAorICAgIDI0NiwgMTU1LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDIyNCwgMTc2LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDIwMSwgNzcsIDEwNCwgCisgICAgMjUxLCAyMDAsIDEyMiwgMjAzLCA0MiwgMTA0LCAyNTEsIDIwMCwgMTI4LCAxNjksIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjA2LCAKKyAgICAxLCAxNjksIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjM1LCA3MywgMTA0LCAyNTEsIDIwMCwgMTI4LCAxNjgsIDIzNSwgNzMsIAorICAgIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjQwLCAxODIsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjQ2LCAxNTUsIDEwNCwgMjUxLCAKKyAgICAyMDAsIDEyOCwgMjI0LCAxNzYsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjAxLCA3NywgMTA0LCAyNTEsIDIwMCwgMTI4LCAyMDMsIAorICAgIDQyLCAxMDQsIDI1MSwgMjAwLCAxMjgsIDQ4LCAxMDQsIDIsIDE2MywgMywgMjQyLCAyMzQsIDEwNCwgMjA2LCA4MiwgMSwgCisgICAgMjExLCAxNzUsIDEwNCwgNTMsIDgxLCAxMDQsIDIxNCwgMjEyLCAyNDYsIDIyMCwgMjM2LCAxODMsIDIwOCwgNzYsIDIwOSwgCisgICAgMjM3LCAyMzYsIDI0MSwgMSwgMjE2LCAyNDQsIDIwOSwgMjM3LCAyMzYsIDI0MSwgMjQzLCA0MCwgMjE2LCAyNDQsIDIwOSwgCisgICAgMjM3LCAyMzYsIDI0MSwgMTI3LCAyMDgsIDkwLCAyMDksIDIzNywgMjM2LCAyNDEsIDExNSwgMjA4LCA5MCwgNjEsIDMyLCAKKyAgICAxNiwgMjE0LCAyMjgsIDYxLCAzMiwgMTYsIDI0MSwgMjQ2LCA2MSwgMzIsIDE2LCAyMTYsIDIwLCA2MSwgMzIsIDE2LCAyMTYsIAorICAgIDIzNCwgMjM4LCAyMTMsIDYxLCAzMiwgMTYsIDIxNiwgMjM0LCAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMDMsIDc3LCAyMzgsIAorICAgIDIxMywgNjEsIDMyLCAxNiwgMjAzLCA3NywgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjI3LCAyOCwgNjEsIDMyLCAxNiwgMjA3LCAKKyAgICAxMDAsIDYxLCAzMiwgMTYsIDIxNiwgMTIyLCA2MSwgMzIsIDE2LCAxOTksIDIxNywgNjEsIDMyLCAxNiwgMTk5LCAyMTgsIAorICAgIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIyNiwgMzIsIDYxLCAzMiwgMTYsIDI1MSwgMjQsIDIzOCwgMjEzLCA2MSwgMzIsIDE2LCAKKyAgICAyMzgsIDM3LCAyMzgsIDIxMywgNjEsIDMyLCAxNiwgMjA2LCAxNzcsIDYxLCAzMiwgMTYsIDIyNiwgMjM5LCA2MSwgMzIsIAorICAgIDE2LCAyNTEsIDE0LCA2MSwgMzIsIDE2LCAyNTEsIDE1LCAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMDcsIDEwNywgNjEsIDMyLCAKKyAgICAxNiwgMjA2LCA2NCwgNjEsIDMyLCAxNiwgMjE3LCA4OSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIzNSwgMTAwLCAyNTAsIAorICAgIDIzMiwgNjEsIDMyLCAxNiwgMjE0LCAyMjcsIDYxLCAzMiwgMTYsIDI0NywgMjgsIDYxLCAzMiwgMTYsIDIwMywgNjYsIDYxLCAKKyAgICAzMiwgMTYsIDIyOCwgMTcsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMjYsIDI0MSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIAorICAgIDIyNiwgMjQwLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjExLCAyMzYsIDYxLCAzMiwgMTYsIDIxNiwgMTEyLCA2MSwgMzIsIAorICAgIDE2LCAyMDgsIDk5LCAyNTEsIDE3LCA2MSwgMzIsIDE2LCAyMTYsIDIzMywgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIwMywgCisgICAgNzYsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyNTEsIDE4LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjUxLCAxMiwgNjEsIDMyLCAKKyAgICAxNiwgMjI2LCAxMDAsIDYxLCAzMiwgMTYsIDIxMywgMTAxLCA2MSwgMzIsIDE2LCAyMTUsIDIwMiwgMjUwLCAyMzIsIDYxLCAKKyAgICAzMiwgMTYsIDIwNSwgMjMwLCA2MSwgMzIsIDE2LCAyNTEsIDgyLCA2MSwgMzIsIDE2LCAyMTEsIDE3OCwgNjEsIDMyLCAxNiwgCisgICAgMjA3LCAxMTEsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMDcsIDExMSwgMjIyLCAyMSwgMjA4LCA5NywgNjEsIDMyLCAxNiwgCisgICAgMjE2LCAyMjgsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMDYsIDEwMCwgNjEsIDMyLCAxNiwgMjI1LCA2LCA2MSwgMzIsIDE2LCAKKyAgICAyMzksIDk2LCA2MSwgMzIsIDE2LCAyMDUsIDEwMCwgNjEsIDMyLCAxNiwgMjA2LCAxNDgsIDYxLCAzMiwgMTYsIDIyNiwgMzUsIAorICAgIDYxLCAzMiwgMTYsIDI1MSwgMjQsIDIzOCwgMzcsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNTAsIDIzMiwgCisgICAgNjEsIDMyLCAxNiwgMjI4LCAxMzAsIDYxLCAzMiwgMTYsIDIwNSwgNjksIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMjcsIDMxLCAKKyAgICAyMDUsIDY4LCA2MSwgMzIsIDE2LCAyMTYsIDQ5LCA2MSwgMzIsIDE2LCAyMTQsIDIzMiwgNjEsIDMyLCAxNiwgMjI2LCA2OSwgCisgICAgNjEsIDMyLCAxNiwgMjQ2LCAyMDQsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMTMsIDIwOSwgNjEsIDMyLCAxNiwgMjE2LCAKKyAgICAxMjUsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMTYsIDEyMywgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIzMiwgMjI5LCA2MSwgCisgICAgMzIsIDE2LCAyMjAsIDEzMywgNjEsIDMyLCAxNiwgMjE1LCAyNTQsIDYxLCAzMiwgMTYsIDIyNiwgNzAsIDI1MSwgMTE5LCAKKyAgICA2MSwgMzIsIDE2LCAyMDUsIDY5LCAyNTEsIDExOSwgNjEsIDMyLCAxNiwgMjA4LCA3MCwgNjEsIDMyLCAxNiwgMjM1LCA2MCwgCisgICAgNjEsIDMyLCAxNiwgMjI4LCAxNywgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE3LCA4OSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjE2LCAyMzQsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNSwgMjUzLCA2MSwgMzIsIDE2LCAyMjYsIDU0LCA2MSwgMzIsIDE2LCAKKyAgICAyMTUsIDI1MiwgNjEsIDMyLCAxNiwgMjI2LCAzNCwgNjEsIDMyLCAxNiwgMjE2LCA1MCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjI2LCAyNDAsIDIyMCwgMjEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIyNiwgMjQxLCAyMjAsIDIxLCAyNTEsIDU1LCA2MSwgCisgICAgMzIsIDE2LCAxOTksIDIxNSwgNjEsIDMyLCAxNiwgMjUxLCAxNSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjUxLCAxNiwgMjA3LCAKKyAgICAxMDgsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDE5OSwgMjE2LCA2MSwgMzIsIDE2LCAyMjYsIDMzLCA2MSwgMzIsIDE2LCAyMzgsIAorICAgIDIwOCwgNjEsIDMyLCAxNiwgMjQ3LCAyOSwgNjEsIDMyLCAxNiwgMjIxLCAxNzcsIDIyOCwgMTYsIDYxLCAzMiwgMTYsIDIwMywgCisgICAgNzcsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNSwgMjAyLCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTQsIDIzMywgMjIwLCAKKyAgICAyMCwgNjEsIDMyLCAxNiwgMjE3LCA4NSwgNjEsIDMyLCAxNiwgMjUxLCA0MiwgNjEsIDMyLCAxNiwgMjIzLCAyNTQsIDYxLCAKKyAgICAzMiwgMTYsIDIxNiwgMTIzLCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTYsIDEyNSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjM4LCA3NSwgMjE2LCAxMjQsIDYxLCAzMiwgMTYsIDIyNSwgMTk3LCA2MSwgMzIsIDE2LCAyNTEsIDQzLCA2MSwgMzIsIDE2LCAKKyAgICAyMDUsIDY5LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMzgsIDIxMSwgNjEsIDMyLCAxNiwgMjA3LCAxMTEsIDIyMCwgMjAsIAorICAgIDYxLCAzMiwgMTYsIDIwNywgMTAxLCA2MSwgMzIsIDE2LCAyNDYsIDIwNCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjM4LCAKKyAgICAxMzAsIDYxLCAzMiwgMTYsIDIxMSwgMTc5LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMDAsIDE2MiwgMjI2LCAxMDAsIDYxLCAKKyAgICAzMiwgMTYsIDIwNSwgNjYsIDYxLCAzMiwgMTYsIDIxNCwgMjM0LCA2MSwgMzIsIDE2LCAyMDUsIDcwLCA2MSwgMzIsIDE2LCAKKyAgICAyMDUsIDY3LCA2MSwgMzIsIDE2LCAyMTQsIDIzMSwgNjEsIDMyLCAxNiwgMjA1LCA2NSwgNjEsIDMyLCAxNiwgMjE0LCAyMzAsIAorICAgIDYxLCAzMiwgMTYsIDIzNSwgOTksIDYxLCAzMiwgMTYsIDI1MCwgMjI0LCA2MSwgMzIsIDE2LCAyMzgsIDc1LCAyNTAsIDIyNCwgCisgICAgNjEsIDMyLCAxNiwgMjE2LCAyMjgsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIwNiwgOTksIDIzOCwgODgsIDYxLCAzMiwgMTYsIAorICAgIDIwNiwgOTksIDIzOCwgMzYsIDYxLCAzMiwgMTYsIDIwNiwgMTAxLCAyNTEsIDE5LCA2MSwgMzIsIDE2LCAyMDYsIDkzLCAKKyAgICAyMjcsIDgzLCAyNTEsIDExLCA2MSwgMzIsIDE2LCAyMjcsIDMwLCA2MSwgMzIsIDE2LCAyMzgsIDE2NywgNjEsIDMyLCAxNiwgCisgICAgMjAwLCAxMywgMjI3LCAyNywgNjEsIDMyLCAxNiwgMjAwLCAxMywgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjA4LCA5OCwgNjEsIAorICAgIDMyLCAxNiwgMjI2LCAxMDEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDI0MSwgMTUsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAKKyAgICAyMjYsIDM2LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjI2LCAzNiwgMjUxLCAxMTksIDYxLCAzMiwgMTYsIDIyNiwgMzYsIAorICAgIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDI1MSwgMTgsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDI1MSwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIwNSwgODEsIDYxLCAzMiwgMTYsIDIwNiwgMTM5LCA2MSwgMzIsIDE2LCAyMjYsIDU4LCAKKyAgICA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMzgsIDE2MCwgMjQ2LCAxOTQsIDYxLCAzMiwgMTYsIDIyNSwgMTEsIDIzOSwgOTcsIAorICAgIDI0NiwgMTk1LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMDUsIDg0LCAyNDYsIDE5NSwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgCisgICAgMjA2LCAxNTAsIDI0NiwgMTk1LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMjgsIDEyNSwgMjQ2LCAxOTQsIDYxLCAzMiwgMTYsIAorICAgIDIzNSwgMTAwLCAyMjAsIDIxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMzUsIDEwMCwgMjE2LCAxMTMsIDI1MCwgMjIwLCA2MSwgCisgICAgMzIsIDE2LCAyMzUsIDEwMCwgMjE2LCAxMTMsIDI0MSwgMTA1LCA2MSwgMzIsIDE2LCAyNDEsIDM5LCA2MSwgMzIsIDE2LCAKKyAgICAyNDEsIDQwLCAyMTYsIDExMywgMjUwLCAyMjEsIDIyNywgMjcsIDYxLCAzMiwgMTYsIDI0MSwgNDAsIDIxNiwgMTEzLCAyNTAsIAorICAgIDIyMSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjQxLCA0MCwgMjE2LCAxMTMsIDI0MSwgMTA1LCA2MSwgMzIsIDE2LCAyMDUsIAorICAgIDg5LCA2MSwgMzIsIDE2LCAyNTAsIDIyNSwgNjEsIDMyLCAxNiwgMjI4LCAxMzIsIDYxLCAzMiwgMTYsIDI0MSwgNjIsIDYxLCAKKyAgICAzMiwgMTYsIDI1MSwgMTg3LCAyMTUsIDg5LCAyNTAsIDIyNiwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDI1MCwgMjIzLCA2MSwgCisgICAgMzIsIDE2LCAyNTEsIDE4NywgMjUwLCAyMjYsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyMjIsIDE1LCA2MSwgMzIsIDE2LCAKKyAgICAyNTEsIDE4NywgMjIyLCAyNiwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDIzNSwgMTAxLCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgCisgICAgMjM1LCA5OCwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDIxNSwgODksIDIzNSwgMTAxLCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgCisgICAgMjE0LCAyNDAsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjUxLCAxMjEsIDIxNCwgMjQwLCAyMzIsIDIyNywgCisgICAgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDI0MSwgMTA0LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDI1MSwgMTIxLCAKKyAgICAyNDEsIDEwNCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMDUsIDc2LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgCisgICAgMjIyLCAxNDAsIDIwNSwgOTAsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMDYsIDE0NCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIAorICAgIDIyMiwgMTQwLCAyMDYsIDE0NCwgMjI1LCAxNSwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMjUsIDE1LCAKKyAgICAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIxNSwgMTMyLCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjI4LCAyNCwgCisgICAgMjA2LCAxNzAsIDIzMiwgMjI4LCA2MSwgMzIsIDE2LCAyNTEsIDE2LCAyMDYsIDE3MCwgMjMyLCAyMjgsIDYxLCAzMiwgMTYsIAorICAgIDIzNywgMTY3LCAyMDYsIDE0MSwgNjEsIDMyLCAxNiwgMjM3LCAxNjcsIDIyMSwgOTgsIDYxLCAzMiwgMTYsIDIzNywgMTY3LCAKKyAgICAyNDEsIDQ1LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjAzLCA3MCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAKKyAgICAyMTQsIDIzOSwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMTUsIDEzMiwgMjA2LCAxNDQsIDIzMiwgMjI3LCAKKyAgICA2MSwgMzIsIDE2LCAyMzUsIDk1LCAyMjAsIDIxNSwgMjUxLCAxOSwgNjEsIDMyLCAxNiwgMjM1LCA5NSwgMjIwLCAyMTUsIAorICAgIDI0MSwgMTMsIDYxLCAzMiwgMTYsIDIzOCwgMTc3LCAyMjcsIDgzLCAyMzYsIDE5MSwgMjAyLCAxNzQsIDYxLCAzMiwgMTYsIAorICAgIDIyOCwgMTMxLCA2MSwgMzIsIDE2LCAyMjgsIDEyOSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI1MCwgMjMzLCAyNDEsIDEwMywgCisgICAgMjMyLCAyMjYsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIDYwLCAxNzIsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIAorICAgIDYwLCAyMjAsIDEzMywgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIyMCwgMTI4LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjM2LCAKKyAgICAxOTEsIDI0MSwgNjAsIDI0MSwgNzYsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMDksIDgyLCAyNDEsIDU5LCAyNDEsIDc2LCAKKyAgICA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgMjI3LCA4LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgCisgICAgMTk5LCAxNCwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIDIxOSwgMTUxLCAyMjcsIDI3LCA2MSwgMzIsIDE2LCAKKyAgICAyMzYsIDE5MSwgMjQxLCA2MCwgMjE5LCAxNTEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjIsIDE4NiwgCisgICAgMjQ2LCAxOTYsIDI0MSwgNDUsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjIsIDE4NiwgMjQ2LCAxOTYsIDIyMSwgOTgsIDYxLCAKKyAgICAzMiwgMTYsIDIzNywgMTEzLCAyMDksIDgyLCAyNDYsIDE5NiwgMjAzLCA2OSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIwOSwgCisgICAgODIsIDI0NiwgMTk2LCAyMDcsIDExMiwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIyMCwgMjMsIDYxLCAzMiwgMTYsIDI0NiwgCisgICAgMTk3LCAxOTgsIDIzOCwgNjEsIDMyLCAxNiwgMjQ2LCAxOTcsIDIyNiwgOTksIDYxLCAzMiwgMTYsIDI0NiwgMTk3LCAyMDgsIAorICAgIDIzNSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIzMywgMTksIDIwMCwgMTIsIDIwNiwgMTQ1LCA2MSwgMzIsIDE2LCAyMzYsIAorICAgIDE5MSwgMjM4LCAxNzgsIDI1MSwgNDQsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIDIwNSwgNzcsIDYxLCAzMiwgMTYsIDI0MSwgCisgICAgNTMsIDIwNSwgNzcsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDIwNiwgMTQ1LCA2MSwgMzIsIDE2LCAyNDEsIDUzLCAyNTEsIDIxLCAKKyAgICAyMzksIDk3LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjIxLCA5NiwgMjA2LCAxNDksIDI0MCwgMjAzLCA2MSwgCisgICAgMzIsIDE2LCAyNDEsIDUzLCAyNDEsIDM2LCAyMzgsIDQ5LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjA1LCAKKyAgICA4NywgMjE3LCA5NSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIDI1MSwgMjEsIDIzOSwgOTcsIDI0MCwgMjAzLCAKKyAgICA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyMjEsIDk2LCAyMDYsIDE0OSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIAorICAgIDI0MSwgMzYsIDIzOCwgNDksIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyMDUsIDg3LCAyMTcsIDk1LCAyNDAsIAorICAgIDIwMywgNjEsIDMyLCAxNiwgMjM1LCAyNTUsIDI0MSwgNTIsIDYxLCAzMiwgMTYsIDIzNSwgMjU1LCAyMDAsIDExLCA2MSwgCisgICAgMzIsIDE2LCAyNDEsIDYxLCAyNTEsIDIxLCAyMjEsIDE3OCwgNjEsIDMyLCAxNiwgMjQxLCA2MSwgMjUxLCAyMSwgMjIyLCAKKyAgICA1NSwgNjEsIDMyLCAxNiwgMjQxLCA2MSwgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjQxLCA2MSwgMjA2LCA5MSwgNjEsIDMyLCAKKyAgICAxNiwgMjA5LCAxNDksIDIwNiwgOTEsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyMDYsIDkyLCAyNDAsIDI1NCwgNjEsIDMyLCAKKyAgICAxNiwgMjA5LCAxNDksIDIwNiwgOTIsIDIwNSwgNzgsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyMDYsIDkyLCAyMDYsIDEzNywgCisgICAgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk2LCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTcsIDI0MCwgMjU0LCAKKyAgICA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTcsIDIwNSwgNzgsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyNTAsIDE5NywgCisgICAgMjA2LCAxMzcsIDYxLCAzMiwgMTYsIDI0MSwgMzcsIDIzNSwgMjM2LCA2MSwgMzIsIDE2LCAyNDEsIDQ0LCAyMTcsIDMsIDYxLCAKKyAgICAzMiwgMTYsIDIwOCwgODYsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAxNzIsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAyMDIsIAorICAgIDE3NCwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDIzNiwgODksIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAyNDEsIDc2LCA2MSwgCisgICAgMzIsIDE2LCAyNTAsIDIxNywgMjI3LCA4LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMTk5LCAxNCwgNjEsIDMyLCAxNiwgMjUwLCAKKyAgICAyMTcsIDIxOSwgMTUwLCA2MSwgMzIsIDE2LCAyMjYsIDI0MCwgMjIwLCAyMSwgMjIyLCAyNSwgNjEsIDMyLCAxNiwgMjI2LCAKKyAgICAyNDEsIDIyMCwgMjEsIDIyMiwgMjUsIDYxLCAzMiwgMTYsIDIyNiwgMjQwLCAyMjAsIDIxLCAyMjcsIDI3LCA2MSwgMzIsIAorICAgIDE2LCAyMjYsIDI0MSwgMjIwLCAyMSwgMjI3LCAyNywgNjEsIDMyLCAxNiwgMjI2LCAxMDEsIDIyNywgMjcsIDYxLCAzMiwgCisgICAgMTYsIDIzNSwgMTAwLCAyMjAsIDIxLCAyMjcsIDI3LCAzMiwgMTYsIDIwOSwgMTM5LCAyNDksIDcyLCAzMiwgMTYsIDUzLCAKKyAgICAyNDksIDcyLCAzMiwgMTYsIDQ3LCAyNDksIDcyLCAzMiwgMTYsIDIxMywgMTA2LCA0NywgMjQ5LCA3MiwgMzIsIDE2LCAyNDEsIAorICAgIDI0MywgMjQ5LCA3MiwgMzIsIDE2LCAyMDksIDI1MCwgMjQ5LCA3MiwgMzIsIDE2LCA0OSwgMjEzLCAxMzMsIDU0LCAzMiwgCisgICAgMTYsIDUxLCAyMTMsIDEzMywgNTQsIDMyLCAxNiwgMjEzLCAxMzMsIDI0MCwgMTgwLCAzMiwgMTYsIDI0MiwgMzAsIDIxMSwgCisgICAgMTgyLCAzMiwgMTYsIDI0MiwgNTksIDI0NywgMTQxLCAzMiwgMTYsIDIxMSwgMTgyLCAzMiwgMTYsIDI0NiwgODcsIDMyLCAKKyAgICAxNiwgMjEzLCAxMzEsIDIzNywgMTAxLCAzMiwgMTYsIDIxMywgMTMxLCAyMzcsIDEwMCwgMzIsIDE2LCAyMTMsIDEzMSwgCisgICAgMjM3LCA5OSwgMzIsIDE2LCAyMzcsIDEyMiwgMzIsIDE2LCAyMzcsIDEyMywgNTcsIDMyLCAxNiwgMjQ4LCA1OSwgODEsIDMyLCAKKyAgICAxNiwgMjQ3LCAxODAsIDMyLCAxNiwgMjQ4LCA3MSwgMzIsIDE2LCAxNTksIDMyLCAxNiwgMjE3LCA3MywgMjA4LCAxMTcsIAorICAgIDMyLCAxNiwgMjA0LCAxNDAsIDIwOCwgMTE3LCAzMiwgMTYsIDIwNiwgNDIsIDIwOCwgMTE3LCAzMiwgMTYsIDIzNiwgMjI4LCAKKyAgICAyMDgsIDExNywgMzIsIDE2LCAyMzcsIDYwLCAyMDgsIDExNywgMzIsIDE2LCAyMDksIDEwNSwgMjA4LCAxMTcsIDMyLCAxNiwgCisgICAgMjA5LCAxMDMsIDIzNiwgMjA4LCAzMiwgMTYsIDIzNiwgMjI2LCAyMzYsIDIwOCwgMzIsIDE2LCAyMzYsIDE1NywgMjQ2LCAKKyAgICAxMjQsIDMyLCAxNiwgMjM2LCAxNTcsIDI0NiwgMTI1LCAyMTcsIDUsIDI1MSwgMTEwLCAzMiwgMTYsIDIzNiwgMTU3LCAyNDYsIAorICAgIDEyNSwgMjE3LCA1LCAyNDksIDU3LCAzMiwgMTYsIDI0NywgMjI0LCAyNDYsIDEyNCwgMzIsIDE2LCAyMzgsIDYsIDI0NiwgCisgICAgMTI0LCAzMiwgMTYsIDIzOCwgNiwgMjQ2LCAxMjUsIDIxNywgNSwgMjUxLCAxMTAsIDMyLCAxNiwgMjM4LCA2LCAyNDYsIAorICAgIDEyNSwgMjE3LCA1LCAyNDksIDU3LCAzMiwgMTYsIDIzOSwgMTQzLCAyNDYsIDEyMywgMzIsIDE2LCAyMzksIDE0MywgMjQ2LCAKKyAgICAxMjIsIDMyLCAxNiwgMjIxLCAyMSwgMjIyLCA3NSwgMjEzLCAxMTcsIDMyLCAxNiwgNTMsIDIxMCwgNzgsIDMyLCAxNiwgNTMsIAorICAgIDIzNywgNDQsIDMyLCAxNiwgMjM3LCA0NSwgMjAzLCAyMjgsIDMyLCAxNiwgMjM3LCA0NSwgMjM5LCAxNjcsIDMyLCAxNiwgCisgICAgMjIwLCAxMTcsIDIwMywgMjI4LCAzMiwgMTYsIDIyMCwgMTE3LCAyMzksIDE2NywgMzIsIDE2LCAyMTAsIDc5LCAyMDMsIAorICAgIDIyOCwgMzIsIDE2LCAyMTAsIDc5LCAyMzksIDE2NywgMzIsIDE2LCAyMTQsIDg4LCAxNTAsIDIxMCwgNzgsIDMyLCAxNiwgCisgICAgMjE0LCA4OCwgMTUwLCAyMzcsIDQ0LCAzMiwgMTYsIDI0NiwgNjcsIDIwNSwgMjM0LCAzMiwgMTYsIDI0MiwgMTgwLCAyMDUsIAorICAgIDIzNCwgMzIsIDE2LCAyMTcsIDUsIDI1MSwgMTEwLCAzMiwgMTYsIDIxNywgNSwgMjQ5LCA1NywgMzIsIDE2LCAyMTQsIDY5LCAKKyAgICAyNTEsIDExMCwgMzIsIDE2LCAyMTQsIDY5LCAyNDksIDU3LCAzMiwgMTYsIDIyMSwgMjQsIDIxMywgMTE3LCAzMiwgMTYsIAorICAgIDIwMSwgMzIsIDIxMywgMTE3LCAzMiwgMTYsIDE2NywgMjEzLCAxMTcsIDMyLCAxNiwgMjE0LCA4OCwgMjEzLCAxMTcsIDMyLCAKKyAgICAxNiwgMjM4LCAyMjgsIDIxMywgMTE3LCAzMiwgMTYsIDIwOSwgOTksIDIxMywgMTE3LCAzMiwgMTYsIDIwNiwgNjUsIDIxMywgCisgICAgMTE3LCAzMiwgMTYsIDIwOSwgOTEsIDIxMywgMTE3LCAzMiwgMTYsIDExMiwgMjMzLCA4MywgMjA0LCAxNTcsIDIxMywgMTE3LCAKKyAgICAzMiwgMTYsIDIwMCwgMTk2LCAyMTgsIDIwNSwgMzIsIDE2LCA5MywgMjE4LCAyMDUsIDMyLCAxNiwgMjQ2LCAxNTYsIDIwMCwgCisgICAgMTk2LCAyMTgsIDIwNSwgMzIsIDE2LCA1MiwgMjE4LCAyMDYsIDIwMSwgMzQsIDMyLCAxNiwgNTIsIDIxOCwgMjA2LCAyNDgsIAorICAgIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTE1LCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAKKyAgICAxMTUsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCA0OSwgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk5LCAKKyAgICAyMTgsIDIwNiwgNDksIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCA1MSwgMjAxLCAzNCwgMzIsIDE2LCAKKyAgICAyMDUsIDk5LCAyMTgsIDIwNiwgNTEsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMjcsIDIwMSwgMzQsIAorICAgIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDEyNywgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDExNSwgCisgICAgNTEsIDIwMSwgMzQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDExNSwgNTEsIDI0OCwgMTQ0LCAzMiwgMTYsIDIyMSwgCisgICAgODIsIDIxOCwgMjA2LCAyMDEsIDM0LCAzMiwgMTYsIDIyMSwgODIsIDIxOCwgMjA2LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIAorICAgIDk2LCAyMTgsIDIwNiwgMTI3LCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTYsIDIxOCwgMjA2LCAxMjcsIDI0OCwgMTQ0LCAzMiwgCisgICAgMTYsIDIxNiwgMTE2LCAyMTgsIDIwNSwgMzIsIDE2LCAyMDIsIDE4NiwgMjE4LCAyMDUsIDMyLCAxNiwgMjE4LCAyMDYsIAorICAgIDI0OCwgMTQ0LCAzMiwgMTYsIDIxOCwgOTgsIDIxOCwgMjA1LCAzMiwgMTYsIDI0NiwgOTQsIDIxOCwgMjA2LCAyMDEsIDM0LCAKKyAgICAzMiwgMTYsIDI0NiwgOTQsIDIxOCwgMjA2LCAyNDgsIDE0NCwgMzIsIDE2LCAyNDgsIDU3LCAzMiwgMTYsIDIwMSwgMzIsIAorICAgIDIxOCwgMjA5LCAzMiwgMTYsIDE2NywgMjE4LCAyMDksIDMyLCAxNiwgMjE0LCA4OCwgMjE4LCAyMDksIDMyLCAxNiwgMjM4LCAKKyAgICAyMjgsIDIxOCwgMjA5LCAzMiwgMTYsIDIwOSwgOTksIDIxOCwgMjA5LCAzMiwgMTYsIDIwNiwgNjUsIDIxOCwgMjA5LCAzMiwgCisgICAgMTYsIDIwOSwgOTEsIDIxOCwgMjA5LCAzMiwgMTYsIDExMiwgMjMzLCA4MywgMjA0LCAxNTcsIDIxOCwgMjA5LCAzMiwgMTYsIAorICAgIDM4LCAyMDgsIDkyLCAzMiwgMTYsIDM4LCAyMDgsIDIwMCwgMjA4LCA5MiwgMzIsIDE2LCAzOCwgMjA1LCAxMDcsIDMyLCAxNiwgCisgICAgMzgsIDIwNSwgMTA2LCAzMiwgMTYsIDM4LCAyMDUsIDEwNSwgMzIsIDE2LCAyMzcsIDg0LCAyMDUsIDEwNywgMzIsIDE2LCAKKyAgICAyMzcsIDg0LCAyMDUsIDEwNiwgMzIsIDE2LCAyMzcsIDg0LCAyMDUsIDEwNSwgMzIsIDE2LCAzOCwgMjUwLCAxMzYsIDI0MCwgCisgICAgMTgyLCAzMiwgMTYsIDM4LCAyMzcsIDUyLCAzMiwgMTYsIDM4LCAyMzcsIDUxLCAzMiwgMTYsIDM4LCAyMzcsIDUwLCAzMiwgCisgICAgMTYsIDM4LCAyMzcsIDQ5LCAzMiwgMTYsIDM4LCAyMzcsIDQ4LCAzMiwgMTYsIDI0OCwgMjQ0LCAyNDksIDUsIDMyLCAxNiwgCisgICAgMjM4LCAxNzEsIDI0OSwgNSwgMzIsIDE2LCAyNDgsIDI0NCwgMjA2LCA3LCAzMiwgMTYsIDIzOCwgMTcxLCAyMDYsIDcsIDMyLCAKKyAgICAxNiwgMjQ4LCAyNDQsIDIwOSwgNTQsIDMyLCAxNiwgMjM4LCAxNzEsIDIwOSwgNTQsIDMyLCAxNiwgMjQ4LCAyNDQsIDIxNSwgCisgICAgMjExLCAzMiwgMTYsIDIzOCwgMTcxLCAyMTUsIDIxMSwgMzIsIDE2LCAzOCwgMjUxLCAyNTEsIDMyLCAxNiwgMzgsIDIwOCwgCisgICAgMTIwLCAzMiwgMTYsIDM4LCAyMDYsIDE1NCwgMzIsIDE2LCAzOCwgMjA4LCAxMjEsIDMyLCAxNiwgMzgsIDIyMiwgMTU0LCAKKyAgICAzMiwgMTYsIDM4LCAyMjIsIDE1MywgMzIsIDE2LCAzOCwgMjUxLCAyNTAsIDMyLCAxNiwgMzgsIDIyNCwgNjEsIDMyLCAxNiwgCisgICAgMjUwLCAyMDgsIDIwMywgMjI4LCAzMiwgMTYsIDI1MCwgMjA4LCAyMzksIDE2NywgMzIsIDE2LCAzOCwgMjQwLCAxOTcsIDMyLCAKKyAgICAxNiwgMzgsIDIxMywgMjMsIDMyLCAxNiwgMzgsIDIzNywgMzMsIDMyLCAxNiwgMzgsIDIwOSwgNTAsIDMyLCAxNiwgMzgsIAorICAgIDI0OCwgMjIyLCAzMiwgMTYsIDM4LCA1MywgMjA1LCAxNjMsIDMyLCAxNiwgMzgsIDIwNSwgODMsIDIwNSwgMTYzLCAzMiwgCisgICAgMTYsIDIxMywgMjgsIDMyLCAxNiwgMjA4LCAxNCwgMzIsIDE2LCAxOTksIDE1NywgMzIsIDE2LCAyMTUsIDIwMywgMzIsIDE2LCAKKyAgICAyMjIsIDYsIDMyLCAxNiwgMjM2LCAyMzgsIDMyLCAxNiwgMjQyLCAyNDUsIDMyLCAxNiwgMjQxLCAxNjIsIDMyLCAxNiwgCisgICAgMjM1LCA5MCwgMjE4LCAyMTAsIDIwOSwgNzUsIDMyLCAxNiwgMjM1LCA5MCwgMjE4LCAyMTAsIDIxOCwgMjQyLCAyMDksIDc1LCAKKyAgICAzMiwgMTYsIDIwNSwgMTMzLCAzMiwgMTYsIDIwNCwgMTg2LCAzMiwgMTYsIDIyOCwgNTAsIDIwNCwgMTg2LCAzMiwgMTYsIAorICAgIDIwNCwgMTg3LCAyMDksIDc1LCAzMiwgMTYsIDIwNCwgMTg3LCAyMDMsIDIyOCwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQ2LCAKKyAgICAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDMsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0MiwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIAorICAgIDQxLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDAsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAzOSwgMzIsIDE2LCAyMTcsIDIyLCAKKyAgICAyMDgsIDM4LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgMzcsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAzNiwgMzIsIDE2LCAyMTcsIAorICAgIDIyLCAyMDgsIDQ1LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDQsIDMyLCAxNiwgMjM0LCAxNDksIDMyLCAxNiwgMjIwLCAzMiwgCisgICAgMzIsIDE2LCAyMzgsIDE3MSwgNzYsIDIwOCwgODIsIDMyLCAxNiwgMjQxLCAxNTUsIDIwOSwgNzUsIDMyLCAxNiwgMzgsIAorICAgIDEyNywgMjQ4LCA4NSwgMzIsIDE2LCAzOCwgMTE1LCAyNDgsIDg1LCAzMiwgMTYsIDM4LCAyMzQsIDE2MiwgMzIsIDE2LCAzOCwgCisgICAgMjA5LCA0MCwgMjE1LCAxMzYsIDMyLCAxNiwgMjE2LCA2NiwgODEsIDMyLCAxNiwgMjE2LCA2NiwgMTE1LCA4MSwgMzIsIDE2LCAKKyAgICAxNjcsIDIxNiwgNjYsIDgxLCAzMiwgMTYsIDIzNSwgMTI1LCAyMDMsIDIyOCwgMzIsIDE2LCAyMzUsIDEyNSwgMjM5LCAxNjcsIAorICAgIDMyLCAxNiwgMywgMjM3LCA4MywgMzIsIDE2LCAyNDIsIDEzLCAzMiwgMTYsIDI0MiwgMTQsIDI1MSwgMTI0LCAzMiwgMTYsIAorICAgIDIyMiwgMTIxLCAzMiwgMTYsIDIyNCwgODAsIDMyLCAxNiwgMjQ4LCA1NCwgMzIsIDE2LCAyMTAsIDE3MSwgMjAxLCAzNCwgCisgICAgMzIsIDE2LCAyMTAsIDE3MSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjIxLCAxNjAsIDMyLCAxNiwgMjIxLCAxNjEsIDI0OCwgMTQ0LCAKKyAgICAzMiwgMTYsIDIxMCwgMTY1LCAyMDEsIDM0LCAzMiwgMTYsIDIxMCwgMTY1LCAyNDgsIDE0NCwgMzIsIDE2LCAyMzYsIDE3NCwgCisgICAgMjAxLCAzNCwgMzIsIDE2LCAyMzYsIDE3NCwgMjQ4LCAxNDQsIDMyLCAxNiwgMjI0LCA4MSwgMjE2LCAyNSwgMjEzLCAxMTcsIAorICAgIDMyLCAxNiwgMjI0LCA4MSwgMjI4LCAxMjIsIDIxMywgMTE3LCAzMiwgMTYsIDI0OCwgNTUsIDIxMywgMTE3LCAzMiwgMTYsIAorICAgIDIxMCwgMTcxLCAyMTMsIDExNywgMzIsIDE2LCAyMjEsIDE2MSwgMjEzLCAxMTcsIDMyLCAxNiwgMjEwLCAxNjUsIDIxMywgCisgICAgMTE3LCAzMiwgMTYsIDIwNiwgMTY4LCAyMTYsIDIzLCAyNDIsIDIwNywgMjE0LCAyNDksIDIxNiwgMjQsIDMyLCAxNiwgMjA2LCAKKyAgICAxNjgsIDIxNiwgMjMsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjEsIDMyLCAxNiwgMjA2LCAxNjgsIDIxNiwgMjMsIAorICAgIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjE2LCAyNSwgMjQxLCAyNCwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgCisgICAgMjA3LCAyMTQsIDI0OSwgMjE2LCAyNCwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgCisgICAgMjI4LCAxMjEsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIyLCAyNDEsIAorICAgIDI0LCAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMjgsIDEyMiwgMjQxLCAyMywgCisgICAgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjIsIDI0MSwgMjIsIDMyLCAKKyAgICAxNiwgMjQyLCAyMzcsIDMyLCAxNiwgMjM1LCA2MywgMjQ3LCAyMjQsIDI0NiwgMTI0LCAzMiwgMTYsIDIzNSwgNjMsIDIzOCwgCisgICAgNiwgMjQ2LCAxMjQsIDMyLCAxNiwgNTIsIDI1MCwgMTAzLCAzMiwgMTYsIDIwMiwgMjA3LCAzMiwgMTYsIDIxNSwgMTAzLCAKKyAgICAzMiwgMTYsIDI0NiwgMTE1LCAzMiwgMTYsIDIxMSwgMjI2LCAzMiwgMTYsIDI0NiwgMTE5LCAzMiwgMTYsIDIwNSwgMTUxLCAKKyAgICAzMiwgMTYsIDIxNSwgNzIsIDMyLCAxNiwgMjE1LCA3MywgMjM3LCAzNiwgMzIsIDE2LCAyMTEsIDIyNywgMjM3LCAzNiwgMzIsIAorICAgIDE2LCAyMDUsIDE1MiwgMjEzLCAxMTQsIDMyLCAxNiwgMjE2LCA2LCAyMDgsIDUsIDMyLCAxNiwgMjI2LCAxNTMsIDI0NywgCisgICAgMjI0LCAyNDYsIDEyNCwgMzIsIDE2LCAyMjYsIDE1MywgMjM4LCAxNzEsIDc2LCAyMTUsIDE5NiwgMzIsIDE2LCAyMjYsIAorICAgIDE1MywgNDcsIDIxOCwgMjA5LCAzMiwgMTYsIDIyNiwgMTUzLCAyMTMsIDE4MiwgODEsIDMyLCAxNiwgMjI2LCAxNTMsIDIwMSwgCisgICAgMzIsIDIxOCwgMjA5LCAzMiwgMTYsIDIyNiwgMTUzLCAxNjcsIDIxOCwgMjA5LCAzMiwgMTYsIDIyNiwgMTUzLCAyMTQsIDg4LCAKKyAgICAyMTgsIDIxMCwgMjA4LCA5MywgMjM5LCAxNjcsIDMyLCAxNiwgMjI2LCAxNTMsIDIxNCwgODgsIDIxOCwgMjEwLCAyMDgsIAorICAgIDkzLCAyMDMsIDIyOCwgMzIsIDE2LCAyMjYsIDE1MywgMjM4LCAyMjgsIDIxOCwgMjEwLCAyMDgsIDkzLCAyMzksIDE2NywgCisgICAgMzIsIDE2LCAyMjYsIDE1MywgMjM4LCAyMjgsIDIxOCwgMjEwLCAyMDgsIDkzLCAyMDMsIDIyOCwgMzIsIDE2LCAyMjYsIAorICAgIDE1MywgMjM3LCA0NSwgNTQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTYyLCAzMSwgMjAyLCAxOTIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDE1MSwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDEsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTM0LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyNiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxMjAsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTE5LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDExOCwgCisgICAgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMTcsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTYxLCAzMSwgCisgICAgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE2MCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTksIDMxLCAyMDIsIAorICAgIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU4LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1NywgMzEsIDIwMiwgMTkyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxNTYsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU1LCAzMSwgMjAyLCAxOTIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDE1NCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTMsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTUyLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1MCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxNDksIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQ4LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE0NywgCisgICAgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDYsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTI1LCAzMSwgCisgICAgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyNCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjMsIDMxLCAyMDIsIAorICAgIDE5MiwgMjE4LCAyMTMsIDIwNywgMTIyLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyMSwgMzEsIDIyOCwgNzIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDE2MiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1MSwgMzEsIDIyOCwgNzIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDEzNCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyNiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDExOSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDExOCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDE2MCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1OSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1OCwgCisgICAgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1NywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1NCwgMzEsIAorICAgIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1MywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1MiwgMzEsIDIyOCwgCisgICAgNzIsIDIxOCwgMjEzLCAyMDcsIDE0NywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE0NiwgMzEsIDIyOCwgNzIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDE0NSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE0NCwgMzEsIDIyOCwgNzIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDE0MywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE0MiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDE0MCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzOSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDEzOCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzNywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzNiwgCisgICAgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzNSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMywgMzEsIAorICAgIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMSwgMzEsIDIyOCwgCisgICAgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyOSwgMzEsIDIyOCwgNzIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDEyOCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyNywgMzEsIDIyOCwgNzIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDEyNSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyNCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDEyMywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyMiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDEyMSwgMzgsIDMxLCAzMiwgMjA1LCA3OSwgMzgsIDMxLCAzMiwgMjA2LCAxMzgsIDM4LCAzMSwgMzIsIDIxNiwgMzUsIDMxLCAKKyAgICAzMiwgMjI1LCAxMCwgMjIxLCA5NywgMzYsIDIzOSwgMTcsIDI0MSwgMzgsIDM2LCAyMzQsIDEyMiwgMjM5LCAxNywgMjQxLCAKKyAgICAzOCwgMzYsIDIzMywgODcsIDIzOSwgMTcsIDI0MSwgMzgsIDM2LCAyMzksIDE2LCAyMzQsIDEyMywgMjQxLCAzOCwgMzYsIAorICAgIDIzOSwgMTYsIDIzMywgODYsIDI0MSwgMzgsIDM2LCAyMzksIDE3LCAyMDYsIDE0MCwgMzYsIDI0NywgNTUsIDIwNiwgMTQwLCAKKyAgICAzNiwgMjM2LCAxODMsIDI0NiwgMTU1LCAyMDYsIDE0MCwgMzYsIDIyMSwgMTUyLCAyMDYsIDE0MCwgMzYsIDI0OSwgNjcsIAorICAgIDIwNiwgMTQwLCAzNiwgMjI3LCAyLCAyMDksIDUzLCAyMDYsIDE0MCwgMzYsIDI0MywgMzUsIDIwNiwgMTQwLCAzNiwgMjUwLCAKKyAgICAxODMsIDIwNiwgMTQwLCAzNiwgMjE3LCAzOSwgMjA2LCAxNDAsIDM2LCAyNDgsIDY0LCAyMTYsIDI1NCwgMjA2LCAxNDAsIAorICAgIDM2LCAyNDEsIDE1NywgMjE3LCAzNCwgMjQwLCAyNDYsIDIwNiwgMTQwLCAzNiwgMjQwLCAyNDMsIDIwNiwgMTQwLCAzNiwgCisgICAgMTk5LCAyMjMsIDIwNiwgMTQwLCAzNiwgMjI4LCAxMDgsIDIwNiwgMTQwLCAzNiwgMjE2LCA0NSwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMTMsIDE4OSwgMjA2LCAxNDAsIDM2LCAyNDMsIDQ3LCAyMDYsIDE0MCwgMzYsIDIzMywgMTk4LCAyNDksIDEyOSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMDEsIDEwNiwgMjA2LCAxNDAsIDM2LCAyMzcsIDgsIDIwNiwgMTQwLCAzNiwgMjUxLCAyMjQsIDIwNiwgCisgICAgMTQwLCAzNiwgMjEzLCAxNDYsIDIwNiwgMTQwLCAzNiwgMjEzLCAxMjEsIDIwNiwgMTQwLCAzNiwgMjM5LCAxNSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMjcsIDE1MCwgMjA2LCAxNDAsIDM2LCAyNDMsIDQyLCAyMDYsIDE0MCwgMzYsIDIzOCwgMTcwLCAyMDYsIAorICAgIDE0MCwgMzYsIDIzOSwgMTA5LCAyMDYsIDE0MCwgMzYsIDI0NywgMjQsIDIwNiwgMTQwLCAzNiwgMjQxLCAxNjcsIDIwNiwgCisgICAgMTQwLCAzNiwgMjcsIDIxMywgMTIwLCAyMDYsIDE0MCwgMzYsIDIxNiwgMjAyLCAyMDYsIDE0MCwgMzYsIDIyNSwgMTQsIAorICAgIDIwNiwgMTQwLCAzNiwgMjQ2LCAxMDgsIDIwNiwgMTQwLCAzNiwgMjI2LCAxNDMsIDIwNiwgMTQwLCAzNiwgMjM2LCAzOSwgCisgICAgMjA2LCAxNDAsIDM2LCAyMDgsIDU4LCAyMDYsIDE0MCwgMzYsIDIxNCwgMjAxLCAyMDYsIDE0MCwgMzYsIDIzNiwgMTgyLCAKKyAgICAyMDYsIDE0MCwgMzYsIDIxMywgMTIyLCAyMDYsIDE0MCwgMzYsIDIyNSwgNTMsIDIxNywgMzQsIDIyMSwgMTMyLCAyMDYsIAorICAgIDE0MCwgMzYsIDIxMywgMTE4LCAyMDYsIDE0MCwgMzYsIDIzNSwgMTEwLCAyMDUsIDE4NiwgMjIyLCA1OSwgMjA2LCAxNDAsIAorICAgIDM2LCAyMzgsIDE3MiwgMjA2LCAxNDAsIDM2LCAyMDgsIDcxLCAyMDYsIDE0MCwgMzYsIDIzNSwgNjUsIDIwNiwgMTQwLCAzNiwgCisgICAgMjM4LCAxNjMsIDIwNiwgMTQwLCAzNiwgMjE2LCA4OSwgMjA2LCAxNDAsIDM2LCAyMTMsIDE2LCAyMDYsIDE0MCwgMzYsIAorICAgIDIzNywgMzQsIDIwNiwgMTQwLCAzNiwgMjAzLCA2OCwgMjE3LCAzNCwgMjAxLCA4NiwgMjA2LCAxNDAsIDM2LCAyNDMsIDUyLCAKKyAgICAyMDYsIDE0MCwgMzYsIDIyMiwgNzQsIDIwNiwgMTQwLCAzNiwgMjM4LCA3NiwgMjA2LCAxNDAsIDM2LCAyMDMsIDIzOCwgCisgICAgMjA2LCAxNDAsIDM2LCAyNDEsIDI1LCAyMDYsIDE0MCwgMzYsIDI0NiwgMTEwLCAyMjEsIDU4LCAyMDYsIDE0MCwgMzYsIAorICAgIDIzNSwgNDIsIDIwNiwgMTQwLCAzNiwgMjM2LCA0MCwgMjI4LCAxMTcsIDIwNiwgMTQwLCAzNiwgMjIyLCAxMjksIDIwNiwgCisgICAgMTQwLCAzNiwgMjUxLCAyNDYsIDIwNiwgMTQwLCAzNiwgMjM4LCAxODgsIDIwNiwgMTQwLCAzNiwgMjM5LCAxNzEsIDIwNiwgCisgICAgMTQwLCAzNiwgMjAxLCA4NCwgMjA2LCAxNDAsIDM2LCAyMDksIDEzNCwgMjA2LCAxNDAsIDM2LCAyMjgsIDgxLCAyMDYsIAorICAgIDE0MCwgMzYsIDI0MSwgMTI0LCAyMDYsIDE0MCwgMzYsIDI0MSwgMjQ4LCAyMDYsIDE0MCwgMzYsIDI0MSwgMjEsIDIwNiwgCisgICAgMTQwLCAzNiwgMjM4LCA0MCwgMjA2LCAxNDAsIDM2LCAyMTAsIDEyOCwgMjA2LCAxNDAsIDM2LCAyMDgsIDc1LCAyMDYsIAorICAgIDE0MCwgMzYsIDIzNCwgMTY0LCAyMDYsIDE0MCwgMzYsIDI0NiwgNjMsIDIwNiwgMTQwLCAzNiwgMjQ2LCAxMDUsIDIwNiwgCisgICAgMTQwLCAzNiwgMjM3LCAxNzQsIDIwNiwgMTQwLCAzNiwgMjUxLCAxODgsIDIwNiwgMTQwLCAzNiwgMjQ2LCA2MiwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMTcsIDc5LCAyMDYsIDEwNywgMjAzLCA0NSwgMjA2LCAxNDAsIDM2LCAyNDEsIDQ3LCAyMDYsIDE0MCwgMzYsIAorICAgIDIyNSwgMTY0LCAyMDYsIDE0MCwgMzYsIDIzNiwgMjMyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDEwMiwgCisgICAgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxMDUsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTQ3LCAKKyAgICAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE0OSwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxNjQsIAorICAgIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTg3LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDIxMCwgCisgICAgMTM1LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE5MiwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAKKyAgICAyMTksIDExMywgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAxMDIsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgCisgICAgMTYyLCAxNywgMTA1LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDE0NywgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAKKyAgICAxNjIsIDE3LCAxNDksIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMTY0LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIAorICAgIDE2MiwgMTcsIDE4NywgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAyMTAsIDEzNSwgMjQzLCAzLCAyMTIsIDI0NywgCisgICAgMjA2LCAxNjIsIDE3LCAxOTIsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMjE5LCAxMTMsIDEzLCAyNywgNiwgCisgICAgNjIsIDEzLCAyNywgNiwgMjUwLCAxMDMsIDEzLCAyNywgNiwgMjQ3LCAyMjMsIDEzLCAyNywgNiwgMjQyLCAxNTMsIDEzLCAKKyAgICAyNywgNiwgNzIsIDEzLCAyNywgNiwgMjM4LCA1LCAxMywgMjcsIDYsIDIzNiwgMTU2LCAxMywgMjcsIDYsIDIzNCwgMjQ3LCAKKyAgICAxMywgMjcsIDYsIDcwLCAxMywgMjcsIDYsIDIyNywgMjUxLCAxMywgMjcsIDYsIDIyNywgMTE4LCAxMywgMjcsIDYsIDE1NiwgCisgICAgMTMsIDI3LCA2LCAyMjMsIDI0MywgMTMsIDI3LCA2LCAyMjAsIDIxNCwgMTMsIDI3LCA2LCA3NCwgMTMsIDI3LCA2LCAyMTYsIAorICAgIDIyNiwgMTMsIDI3LCA2LCAyMTQsIDE2NywgMTMsIDI3LCA2LCAxNDYsIDEzLCAyNywgNiwgMjEyLCAxMjIsIDEzLCAyNywgNiwgCisgICAgMjA3LCA4MywgMTMsIDI3LCA2LCA2NiwgMTMsIDI3LCA2LCAyMDMsIDE2OCwgMTMsIDI3LCA2LCAyMDEsIDE0NywgMTMsIDI3LCAKKyAgICA2LCAyMDAsIDE5NSwgMTMsIDI3LCA2LCAyMDAsIDEyMywgMTMsIDI3LCA2LCAxOTksIDE1NywgMTMsIDI3LCA0LCA2MiwgMTMsIAorICAgIDI3LCA0LCAyNTAsIDEwMywgMTMsIDI3LCA0LCAyNDcsIDIyMywgMTMsIDI3LCA0LCAyNDIsIDE1MywgMTMsIDI3LCA0LCA3MiwgCisgICAgMTMsIDI3LCA0LCAyMzgsIDUsIDEzLCAyNywgNCwgMjM2LCAxNTYsIDEzLCAyNywgNCwgMjM0LCAyNDcsIDEzLCAyNywgNCwgCisgICAgNzAsIDEzLCAyNywgNCwgMjI3LCAyNTEsIDEzLCAyNywgNCwgMjI3LCAxMTgsIDEzLCAyNywgNCwgMTU2LCAxMywgMjcsIDQsIAorICAgIDIyMywgMjQzLCAxMywgMjcsIDQsIDIyMCwgMjE0LCAxMywgMjcsIDQsIDc0LCAxMywgMjcsIDQsIDIxNiwgMjI2LCAxMywgCisgICAgMjcsIDQsIDIxNCwgMTY3LCAxMywgMjcsIDQsIDE0NiwgMTMsIDI3LCA0LCAyMTIsIDEyMiwgMTMsIDI3LCA0LCAyMDcsIDgzLCAKKyAgICAxMywgMjcsIDQsIDY2LCAxMywgMjcsIDQsIDIwMywgMTY4LCAxMywgMjcsIDQsIDIwMSwgMTQ3LCAxMywgMjcsIDQsIDIwMCwgCisgICAgMTk1LCAxMywgMjcsIDQsIDIwMCwgMTIzLCAxMywgMjcsIDQsIDE5OSwgMTU3LCAxMywgMzksIDYsIDYyLCAxMywgMzksIDYsIAorICAgIDI1MCwgMTAzLCAxMywgMzksIDYsIDI0NywgMjIzLCAxMywgMzksIDYsIDI0MiwgMTUzLCAxMywgMzksIDYsIDcyLCAxMywgCisgICAgMzksIDYsIDIzOCwgNSwgMTMsIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDM5LCA2LCA3MCwgCisgICAgMTMsIDM5LCA2LCAyMjcsIDI1MSwgMTMsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDM5LCA2LCAxNTYsIDEzLCAzOSwgNiwgMjIzLCAKKyAgICAyNDMsIDEzLCAzOSwgNiwgMjIwLCAyMTQsIDEzLCAzOSwgNiwgNzQsIDEzLCAzOSwgNiwgMjE2LCAyMjYsIDEzLCAzOSwgNiwgCisgICAgMjE0LCAxNjcsIDEzLCAzOSwgNiwgMTQ2LCAxMywgMzksIDYsIDIxMiwgMTIyLCAxMywgMzksIDYsIDIwNywgODMsIDEzLCAKKyAgICAzOSwgNiwgNjYsIDEzLCAzOSwgNiwgMjAzLCAxNjgsIDEzLCAzOSwgNiwgMjAxLCAxNDcsIDEzLCAzOSwgNiwgMjAwLCAxOTUsIAorICAgIDEzLCAzOSwgNiwgMjAwLCAxMjMsIDEzLCAzOSwgNiwgMTk5LCAxNTcsIDEzLCAzOSwgNCwgNjIsIDEzLCAzOSwgNCwgMjUwLCAKKyAgICAxMDMsIDEzLCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCAzOSwgNCwgMjQyLCAxNTMsIDEzLCAzOSwgNCwgNzIsIDEzLCAzOSwgNCwgCisgICAgMjM4LCA1LCAxMywgMzksIDQsIDIzNiwgMTU2LCAxMywgMzksIDQsIDcwLCAxMywgMzksIDQsIDIyNywgMjUxLCAxMywgMzksIAorICAgIDQsIDIyNywgMTE4LCAxMywgMzksIDQsIDE1NiwgMTMsIDM5LCA0LCAyMjMsIDI0MywgMTMsIDM5LCA0LCAyMjAsIDIxNCwgCisgICAgMTMsIDM5LCA0LCA3NCwgMTMsIDM5LCA0LCAyMTYsIDIyNiwgMTMsIDM5LCA0LCAyMTQsIDE2NywgMTMsIDM5LCA0LCAxNDYsIAorICAgIDEzLCAzOSwgNCwgMjEyLCAxMjIsIDEzLCAzOSwgNCwgMjA3LCA4MywgMTMsIDM5LCA0LCA2NiwgMTMsIDM5LCA0LCAyMDMsIAorICAgIDE2OCwgMTMsIDM5LCA0LCAyMDEsIDE0NywgMTMsIDM5LCA0LCAyMDAsIDE5NSwgMTMsIDM5LCA0LCAyMDAsIDEyMywgMTMsIAorICAgIDM5LCA0LCAxOTksIDE1NywgMTMsIDI3LCAzOSwgNiwgNjIsIDEzLCAyNywgMzksIDYsIDI1MCwgMTAzLCAxMywgMjcsIDM5LCAKKyAgICA2LCAyNDcsIDIyMywgMTMsIDI3LCAzOSwgNiwgMjQyLCAxNTMsIDEzLCAyNywgMzksIDYsIDcyLCAxMywgMjcsIDM5LCA2LCAKKyAgICAyMzgsIDUsIDEzLCAyNywgMzksIDYsIDIzNiwgMTU2LCAxMywgMjcsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDI3LCAzOSwgNiwgCisgICAgNzAsIDEzLCAyNywgMzksIDYsIDIyNywgMjUxLCAxMywgMjcsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDI3LCAzOSwgNiwgMTU2LCAKKyAgICAxMywgMjcsIDM5LCA2LCAyMjMsIDI0MywgMTMsIDI3LCAzOSwgNiwgMjIwLCAyMTQsIDEzLCAyNywgMzksIDYsIDc0LCAxMywgCisgICAgMjcsIDM5LCA2LCAyMTYsIDIyNiwgMTMsIDI3LCAzOSwgNiwgMjE0LCAxNjcsIDEzLCAyNywgMzksIDYsIDE0NiwgMTMsIDI3LCAKKyAgICAzOSwgNiwgMjEyLCAxMjIsIDEzLCAyNywgMzksIDYsIDIwNywgODMsIDEzLCAyNywgMzksIDYsIDY2LCAxMywgMjcsIDM5LCAKKyAgICA2LCAyMDMsIDE2OCwgMTMsIDI3LCAzOSwgNiwgMjAxLCAxNDcsIDEzLCAyNywgMzksIDYsIDIwMCwgMTk1LCAxMywgMjcsIAorICAgIDM5LCA2LCAyMDAsIDEyMywgMTMsIDI3LCAzOSwgNiwgMTk5LCAxNTcsIDEzLCAyNywgMzksIDQsIDYyLCAxMywgMjcsIDM5LCAKKyAgICA0LCAyNTAsIDEwMywgMTMsIDI3LCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCAyNywgMzksIDQsIDI0MiwgMTUzLCAxMywgMjcsIAorICAgIDM5LCA0LCA3MiwgMTMsIDI3LCAzOSwgNCwgMjM4LCA1LCAxMywgMjcsIDM5LCA0LCAyMzYsIDE1NiwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjM0LCAyNDcsIDEzLCAyNywgMzksIDQsIDcwLCAxMywgMjcsIDM5LCA0LCAyMjcsIDI1MSwgMTMsIDI3LCAzOSwgNCwgMjI3LCAKKyAgICAxMTgsIDEzLCAyNywgMzksIDQsIDE1NiwgMTMsIDI3LCAzOSwgNCwgMjIzLCAyNDMsIDEzLCAyNywgMzksIDQsIDIyMCwgCisgICAgMjE0LCAxMywgMjcsIDM5LCA0LCA3NCwgMTMsIDI3LCAzOSwgNCwgMjE2LCAyMjYsIDEzLCAyNywgMzksIDQsIDIxNCwgMTY3LCAKKyAgICAxMywgMjcsIDM5LCA0LCAxNDYsIDEzLCAyNywgMzksIDQsIDIxMiwgMTIyLCAxMywgMjcsIDM5LCA0LCAyMDcsIDgzLCAxMywgCisgICAgMjcsIDM5LCA0LCA2NiwgMTMsIDI3LCAzOSwgNCwgMjAzLCAxNjgsIDEzLCAyNywgMzksIDQsIDIwMSwgMTQ3LCAxMywgMjcsIAorICAgIDM5LCA0LCAyMDAsIDE5NSwgMTMsIDI3LCAzOSwgNCwgMjAwLCAxMjMsIDEzLCAyNywgMzksIDQsIDE5OSwgMTU3LCAxMywgCisgICAgMTM1LCA2LCA2MiwgMTMsIDEzNSwgNiwgMjQ3LCAyMjMsIDEzLCAxMzUsIDYsIDI0MiwgMTUzLCAxMywgMTM1LCA2LCAyMzYsIAorICAgIDE1NiwgMTMsIDEzNSwgNiwgMjI3LCAyNTEsIDEzLCAxMzUsIDYsIDIyNywgMTE4LCAxMywgMTM1LCA2LCAyMjAsIDIxNCwgCisgICAgMTMsIDEzNSwgNiwgNzQsIDEzLCAxMzUsIDYsIDIxNiwgMjI2LCAxMywgMTM1LCA2LCAyMTQsIDE2NywgMTMsIDEzNSwgNiwgCisgICAgMjEyLCAxMjIsIDEzLCAxMzUsIDYsIDIwNywgODMsIDEzLCAxMzUsIDYsIDY2LCAxMywgMTM1LCA2LCAyMDMsIDE2OCwgMTMsIAorICAgIDEzNSwgNiwgMjAxLCAxNDcsIDEzLCAxMzUsIDYsIDIwMCwgMTk1LCAxMywgMTM1LCA2LCAyMDAsIDEyMywgMTMsIDEzNSwgNiwgCisgICAgMTk5LCAxNTcsIDEzLCAxMzUsIDQsIDYyLCAxMywgMTM1LCA0LCAyNTAsIDEwMywgMTMsIDEzNSwgNCwgMjQ3LCAyMjMsIDEzLCAKKyAgICAxMzUsIDQsIDI0MiwgMTUzLCAxMywgMTM1LCA0LCAyMzgsIDUsIDEzLCAxMzUsIDQsIDIzNCwgMjQ3LCAxMywgMTM1LCA0LCAKKyAgICA3MCwgMTMsIDEzNSwgNCwgMjI3LCAyNTEsIDEzLCAxMzUsIDQsIDIyNywgMTE4LCAxMywgMTM1LCA0LCAxNTYsIDEzLCAxMzUsIAorICAgIDQsIDIyMywgMjQzLCAxMywgMTM1LCA0LCAyMjAsIDIxNCwgMTMsIDEzNSwgNCwgMjE2LCAyMjYsIDEzLCAxMzUsIDQsIDIxNCwgCisgICAgMTY3LCAxMywgMTM1LCA0LCAxNDYsIDEzLCAxMzUsIDQsIDIxMiwgMTIyLCAxMywgMTM1LCA0LCAyMDcsIDgzLCAxMywgMTM1LCAKKyAgICA0LCA2NiwgMTMsIDEzNSwgNCwgMjAzLCAxNjgsIDEzLCAxMzUsIDQsIDIwMSwgMTQ3LCAxMywgMTM1LCA0LCAyMDAsIDE5NSwgCisgICAgMTMsIDEzNSwgNCwgMjAwLCAxMjMsIDEzLCAxMzUsIDQsIDE5OSwgMTU3LCAxMywgMjcsIDEzNSwgNiwgNjIsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyNTAsIDEwMywgMTMsIDI3LCAxMzUsIDYsIDI0NywgMjIzLCAxMywgMjcsIDEzNSwgNiwgMjQyLCAxNTMsIDEzLCAKKyAgICAyNywgMTM1LCA2LCA3MiwgMTMsIDI3LCAxMzUsIDYsIDIzOCwgNSwgMTMsIDI3LCAxMzUsIDYsIDIzNiwgMTU2LCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjM0LCAyNDcsIDEzLCAyNywgMTM1LCA2LCA3MCwgMTMsIDI3LCAxMzUsIDYsIDIyNywgMjUxLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjI3LCAxMTgsIDEzLCAyNywgMTM1LCA2LCAxNTYsIDEzLCAyNywgMTM1LCA2LCAyMjMsIDI0MywgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIyMCwgMjE0LCAxMywgMjcsIDEzNSwgNiwgNzQsIDEzLCAyNywgMTM1LCA2LCAyMTYsIDIyNiwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIxNCwgMTY3LCAxMywgMjcsIDEzNSwgNiwgMTQ2LCAxMywgMjcsIDEzNSwgNiwgMjEyLCAxMjIsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMDcsIDgzLCAxMywgMjcsIDEzNSwgNiwgNjYsIDEzLCAyNywgMTM1LCA2LCAyMDMsIDE2OCwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIwMSwgMTQ3LCAxMywgMjcsIDEzNSwgNiwgMjAwLCAxOTUsIDEzLCAyNywgMTM1LCA2LCAyMDAsIDEyMywgMTMsIAorICAgIDI3LCAxMzUsIDYsIDE5OSwgMTU3LCAxMywgMjcsIDEzNSwgNCwgNjIsIDEzLCAyNywgMTM1LCA0LCAyNTAsIDEwMywgMTMsIAorICAgIDI3LCAxMzUsIDQsIDI0NywgMjIzLCAxMywgMjcsIDEzNSwgNCwgMjQyLCAxNTMsIDEzLCAyNywgMTM1LCA0LCA3MiwgMTMsIAorICAgIDI3LCAxMzUsIDQsIDIzOCwgNSwgMTMsIDI3LCAxMzUsIDQsIDIzNiwgMTU2LCAxMywgMjcsIDEzNSwgNCwgMjM0LCAyNDcsIAorICAgIDEzLCAyNywgMTM1LCA0LCA3MCwgMTMsIDI3LCAxMzUsIDQsIDIyNywgMjUxLCAxMywgMjcsIDEzNSwgNCwgMjI3LCAxMTgsIAorICAgIDEzLCAyNywgMTM1LCA0LCAxNTYsIDEzLCAyNywgMTM1LCA0LCAyMjMsIDI0MywgMTMsIDI3LCAxMzUsIDQsIDIyMCwgMjE0LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgNzQsIDEzLCAyNywgMTM1LCA0LCAyMTYsIDIyNiwgMTMsIDI3LCAxMzUsIDQsIDIxNCwgMTY3LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgMTQ2LCAxMywgMjcsIDEzNSwgNCwgMjEyLCAxMjIsIDEzLCAyNywgMTM1LCA0LCAyMDcsIDgzLCAKKyAgICAxMywgMjcsIDEzNSwgNCwgNjYsIDEzLCAyNywgMTM1LCA0LCAyMDMsIDE2OCwgMTMsIDI3LCAxMzUsIDQsIDIwMSwgMTQ3LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgMjAwLCAxOTUsIDEzLCAyNywgMTM1LCA0LCAyMDAsIDEyMywgMTMsIDI3LCAxMzUsIDQsIDE5OSwgCisgICAgMTU3LCAxMywgMTcwLCA2LCA2MiwgMTMsIDE3MCwgNiwgMjUwLCAxMDMsIDEzLCAxNzAsIDYsIDI0MiwgMTUzLCAxMywgMTcwLCAKKyAgICA2LCA3MiwgMTMsIDE3MCwgNiwgMjM4LCA1LCAxMywgMTcwLCA2LCAyMzYsIDE1NiwgMTMsIDE3MCwgNiwgMjI3LCAyNTEsIAorICAgIDEzLCAxNzAsIDYsIDIyNywgMTE4LCAxMywgMTcwLCA2LCAxNTYsIDEzLCAxNzAsIDYsIDIyMywgMjQzLCAxMywgMTcwLCA2LCAKKyAgICAyMjAsIDIxNCwgMTMsIDE3MCwgNiwgNzQsIDEzLCAxNzAsIDYsIDIxNiwgMjI2LCAxMywgMTcwLCA2LCAyMTQsIDE2NywgMTMsIAorICAgIDE3MCwgNiwgMjEyLCAxMjIsIDEzLCAxNzAsIDYsIDIwNywgODMsIDEzLCAxNzAsIDYsIDY2LCAxMywgMTcwLCA2LCAyMDMsIAorICAgIDE2OCwgMTMsIDE3MCwgNiwgMjAxLCAxNDcsIDEzLCAxNzAsIDYsIDIwMCwgMTk1LCAxMywgMTcwLCA2LCAyMDAsIDEyMywgCisgICAgMTMsIDE3MCwgNCwgNjIsIDEzLCAxNzAsIDQsIDI1MCwgMTAzLCAxMywgMTcwLCA0LCAyNDcsIDIyMywgMTMsIDE3MCwgNCwgCisgICAgMjQyLCAxNTMsIDEzLCAxNzAsIDQsIDcyLCAxMywgMTcwLCA0LCAyMzgsIDUsIDEzLCAxNzAsIDQsIDIzNiwgMTU2LCAxMywgCisgICAgMTcwLCA0LCAyMzQsIDI0NywgMTMsIDE3MCwgNCwgNzAsIDEzLCAxNzAsIDQsIDIyNywgMjUxLCAxMywgMTcwLCA0LCAyMjcsIAorICAgIDExOCwgMTMsIDE3MCwgNCwgMTU2LCAxMywgMTcwLCA0LCAyMjMsIDI0MywgMTMsIDE3MCwgNCwgMjIwLCAyMTQsIDEzLCAKKyAgICAxNzAsIDQsIDc0LCAxMywgMTcwLCA0LCAyMTYsIDIyNiwgMTMsIDE3MCwgNCwgMjE0LCAxNjcsIDEzLCAxNzAsIDQsIDE0NiwgCisgICAgMTMsIDE3MCwgNCwgMjEyLCAxMjIsIDEzLCAxNzAsIDQsIDIwNywgODMsIDEzLCAxNzAsIDQsIDY2LCAxMywgMTcwLCA0LCAKKyAgICAyMDMsIDE2OCwgMTMsIDE3MCwgNCwgMjAxLCAxNDcsIDEzLCAxNzAsIDQsIDIwMCwgMTk1LCAxMywgMTcwLCA0LCAyMDAsIAorICAgIDEyMywgMTMsIDE3MCwgNCwgMTk5LCAxNTcsIDEzLCAxNzUsIDYsIDYyLCAxMywgMTc1LCA2LCAyNTAsIDEwMywgMTMsIDE3NSwgCisgICAgNiwgMjQyLCAxNTMsIDEzLCAxNzUsIDYsIDcyLCAxMywgMTc1LCA2LCAyMzgsIDUsIDEzLCAxNzUsIDYsIDIzNiwgMTU2LCAKKyAgICAxMywgMTc1LCA2LCA3MCwgMTMsIDE3NSwgNiwgMjI3LCAyNTEsIDEzLCAxNzUsIDYsIDIyNywgMTE4LCAxMywgMTc1LCA2LCAKKyAgICAxNTYsIDEzLCAxNzUsIDYsIDIyMywgMjQzLCAxMywgMTc1LCA2LCA3NCwgMTMsIDE3NSwgNiwgMjEyLCAxMjIsIDEzLCAxNzUsIAorICAgIDYsIDIwNywgODMsIDEzLCAxNzUsIDYsIDY2LCAxMywgMTc1LCA2LCAyMDMsIDE2OCwgMTMsIDE3NSwgNiwgMjAxLCAxNDcsIAorICAgIDEzLCAxNzUsIDYsIDIwMCwgMTk1LCAxMywgMTc1LCA2LCAyMDAsIDEyMywgMTMsIDE3NSwgNCwgNjIsIDEzLCAxNzUsIDQsIAorICAgIDI1MCwgMTAzLCAxMywgMTc1LCA0LCAyNDcsIDIyMywgMTMsIDE3NSwgNCwgMjQyLCAxNTMsIDEzLCAxNzUsIDQsIDcyLCAxMywgCisgICAgMTc1LCA0LCAyMzgsIDUsIDEzLCAxNzUsIDQsIDIzNiwgMTU2LCAxMywgMTc1LCA0LCAyMzQsIDI0NywgMTMsIDE3NSwgNCwgCisgICAgNzAsIDEzLCAxNzUsIDQsIDIyNywgMjUxLCAxMywgMTc1LCA0LCAyMjcsIDExOCwgMTMsIDE3NSwgNCwgMTU2LCAxMywgMTc1LCAKKyAgICA0LCAyMjMsIDI0MywgMTMsIDE3NSwgNCwgMjIwLCAyMTQsIDEzLCAxNzUsIDQsIDc0LCAxMywgMTc1LCA0LCAyMTYsIDIyNiwgCisgICAgMTMsIDE3NSwgNCwgMjE0LCAxNjcsIDEzLCAxNzUsIDQsIDE0NiwgMTMsIDE3NSwgNCwgMjEyLCAxMjIsIDEzLCAxNzUsIDQsIAorICAgIDIwNywgODMsIDEzLCAxNzUsIDQsIDY2LCAxMywgMTc1LCA0LCAyMDMsIDE2OCwgMTMsIDE3NSwgNCwgMjAxLCAxNDcsIDEzLCAKKyAgICAxNzUsIDQsIDIwMCwgMTk1LCAxMywgMTc1LCA0LCAyMDAsIDEyMywgMTMsIDE3NSwgNCwgMTk5LCAxNTcsIDEzLCAyNywgCisgICAgMTcwLCA2LCA2MiwgMTMsIDI3LCAxNzAsIDYsIDI1MCwgMTAzLCAxMywgMjcsIDE3MCwgNiwgMjQ3LCAyMjMsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyNDIsIDE1MywgMTMsIDI3LCAxNzAsIDYsIDcyLCAxMywgMjcsIDE3MCwgNiwgMjM4LCA1LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjM2LCAxNTYsIDEzLCAyNywgMTcwLCA2LCAyMzQsIDI0NywgMTMsIDI3LCAxNzAsIDYsIDcwLCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjI3LCAyNTEsIDEzLCAyNywgMTcwLCA2LCAyMjcsIDExOCwgMTMsIDI3LCAxNzAsIDYsIDE1NiwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIyMywgMjQzLCAxMywgMjcsIDE3MCwgNiwgMjIwLCAyMTQsIDEzLCAyNywgMTcwLCA2LCA3NCwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIxNiwgMjI2LCAxMywgMjcsIDE3MCwgNiwgMjE0LCAxNjcsIDEzLCAyNywgMTcwLCA2LCAxNDYsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMTIsIDEyMiwgMTMsIDI3LCAxNzAsIDYsIDIwNywgODMsIDEzLCAyNywgMTcwLCA2LCA2NiwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIwMywgMTY4LCAxMywgMjcsIDE3MCwgNiwgMjAxLCAxNDcsIDEzLCAyNywgMTcwLCA2LCAyMDAsIDE5NSwgMTMsIAorICAgIDI3LCAxNzAsIDYsIDIwMCwgMTIzLCAxMywgMjcsIDE3MCwgNiwgMTk5LCAxNTcsIDEzLCAyNywgMTcwLCA0LCA2MiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDI1MCwgMTAzLCAxMywgMjcsIDE3MCwgNCwgMjQ3LCAyMjMsIDEzLCAyNywgMTcwLCA0LCAyNDIsIDE1MywgCisgICAgMTMsIDI3LCAxNzAsIDQsIDcyLCAxMywgMjcsIDE3MCwgNCwgMjM4LCA1LCAxMywgMjcsIDE3MCwgNCwgMjM2LCAxNTYsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMzQsIDI0NywgMTMsIDI3LCAxNzAsIDQsIDcwLCAxMywgMjcsIDE3MCwgNCwgMjI3LCAyNTEsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMjcsIDExOCwgMTMsIDI3LCAxNzAsIDQsIDE1NiwgMTMsIDI3LCAxNzAsIDQsIDIyMywgMjQzLCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjIwLCAyMTQsIDEzLCAyNywgMTcwLCA0LCA3NCwgMTMsIDI3LCAxNzAsIDQsIDIxNiwgMjI2LCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjE0LCAxNjcsIDEzLCAyNywgMTcwLCA0LCAxNDYsIDEzLCAyNywgMTcwLCA0LCAyMTIsIDEyMiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIwNywgODMsIDEzLCAyNywgMTcwLCA0LCA2NiwgMTMsIDI3LCAxNzAsIDQsIDIwMywgMTY4LCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjAxLCAxNDcsIDEzLCAyNywgMTcwLCA0LCAyMDAsIDE5NSwgMTMsIDI3LCAxNzAsIDQsIDIwMCwgMTIzLCAKKyAgICAxMywgMjcsIDE3MCwgNCwgMTk5LCAxNTcsIDEzLCA0MywgNiwgNjIsIDEzLCA0MywgNiwgMjUwLCAxMDMsIDEzLCA0MywgNiwgCisgICAgMjQ3LCAyMjMsIDEzLCA0MywgNiwgMjQyLCAxNTMsIDEzLCA0MywgNiwgNzIsIDEzLCA0MywgNiwgMjM4LCA1LCAxMywgNDMsIAorICAgIDYsIDIzNiwgMTU2LCAxMywgNDMsIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDYsIDcwLCAxMywgNDMsIDYsIDIyNywgMjUxLCAxMywgCisgICAgNDMsIDYsIDIyNywgMTE4LCAxMywgNDMsIDYsIDE1NiwgMTMsIDQzLCA2LCAyMjMsIDI0MywgMTMsIDQzLCA2LCAyMjAsIAorICAgIDIxNCwgMTMsIDQzLCA2LCA3NCwgMTMsIDQzLCA2LCAyMTYsIDIyNiwgMTMsIDQzLCA2LCAyMTQsIDE2NywgMTMsIDQzLCA2LCAKKyAgICAxNDYsIDEzLCA0MywgNiwgMjEyLCAxMjIsIDEzLCA0MywgNiwgMjA3LCA4MywgMTMsIDQzLCA2LCA2NiwgMTMsIDQzLCA2LCAKKyAgICAyMDMsIDE2OCwgMTMsIDQzLCA2LCAyMDEsIDE0NywgMTMsIDQzLCA2LCAyMDAsIDE5NSwgMTMsIDQzLCA2LCAyMDAsIDEyMywgCisgICAgMTMsIDQzLCA2LCAxOTksIDE1NywgMTMsIDQzLCA0LCA2MiwgMTMsIDQzLCA0LCAyNTAsIDEwMywgMTMsIDQzLCA0LCAyNDcsIAorICAgIDIyMywgMTMsIDQzLCA0LCAyNDIsIDE1MywgMTMsIDQzLCA0LCA3MiwgMTMsIDQzLCA0LCAyMzgsIDUsIDEzLCA0MywgNCwgCisgICAgMjM2LCAxNTYsIDEzLCA0MywgNCwgMjM0LCAyNDcsIDEzLCA0MywgNCwgNzAsIDEzLCA0MywgNCwgMjI3LCAyNTEsIDEzLCAKKyAgICA0MywgNCwgMjI3LCAxMTgsIDEzLCA0MywgNCwgMTU2LCAxMywgNDMsIDQsIDIyMywgMjQzLCAxMywgNDMsIDQsIDIyMCwgCisgICAgMjE0LCAxMywgNDMsIDQsIDc0LCAxMywgNDMsIDQsIDIxNiwgMjI2LCAxMywgNDMsIDQsIDIxNCwgMTY3LCAxMywgNDMsIDQsIAorICAgIDE0NiwgMTMsIDQzLCA0LCAyMTIsIDEyMiwgMTMsIDQzLCA0LCAyMDcsIDgzLCAxMywgNDMsIDQsIDY2LCAxMywgNDMsIDQsIAorICAgIDIwMywgMTY4LCAxMywgNDMsIDQsIDIwMSwgMTQ3LCAxMywgNDMsIDQsIDIwMCwgMTk1LCAxMywgNDMsIDQsIDIwMCwgMTIzLCAKKyAgICAxMywgNDMsIDQsIDE5OSwgMTU3LCAxMywgNDMsIDI3LCA2LCA2MiwgMTMsIDQzLCAyNywgNiwgMjUwLCAxMDMsIDEzLCA0MywgCisgICAgMjcsIDYsIDI0NywgMjIzLCAxMywgNDMsIDI3LCA2LCAyNDIsIDE1MywgMTMsIDQzLCAyNywgNiwgNzIsIDEzLCA0MywgMjcsIAorICAgIDYsIDIzOCwgNSwgMTMsIDQzLCAyNywgNiwgMjM2LCAxNTYsIDEzLCA0MywgMjcsIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCAKKyAgICA2LCA3MCwgMTMsIDQzLCAyNywgNiwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIDYsIDIyNywgMTE4LCAxMywgNDMsIDI3LCA2LCAKKyAgICAxNTYsIDEzLCA0MywgMjcsIDYsIDIyMywgMjQzLCAxMywgNDMsIDI3LCA2LCAyMjAsIDIxNCwgMTMsIDQzLCAyNywgNiwgNzQsIAorICAgIDEzLCA0MywgMjcsIDYsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCA2LCAyMTQsIDE2NywgMTMsIDQzLCAyNywgNiwgMTQ2LCAxMywgCisgICAgNDMsIDI3LCA2LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgNiwgMjA3LCA4MywgMTMsIDQzLCAyNywgNiwgNjYsIDEzLCA0MywgCisgICAgMjcsIDYsIDIwMywgMTY4LCAxMywgNDMsIDI3LCA2LCAyMDEsIDE0NywgMTMsIDQzLCAyNywgNiwgMjAwLCAxOTUsIDEzLCAKKyAgICA0MywgMjcsIDYsIDIwMCwgMTIzLCAxMywgNDMsIDI3LCA2LCAxOTksIDE1NywgMTMsIDQzLCAyNywgNCwgNjIsIDEzLCA0MywgCisgICAgMjcsIDQsIDI1MCwgMTAzLCAxMywgNDMsIDI3LCA0LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgNCwgMjQyLCAxNTMsIDEzLCAKKyAgICA0MywgMjcsIDQsIDcyLCAxMywgNDMsIDI3LCA0LCAyMzgsIDUsIDEzLCA0MywgMjcsIDQsIDIzNiwgMTU2LCAxMywgNDMsIAorICAgIDI3LCA0LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgNCwgNzAsIDEzLCA0MywgMjcsIDQsIDIyNywgMjUxLCAxMywgNDMsIDI3LCAKKyAgICA0LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgNCwgMTU2LCAxMywgNDMsIDI3LCA0LCAyMjMsIDI0MywgMTMsIDQzLCAyNywgNCwgCisgICAgMjIwLCAyMTQsIDEzLCA0MywgMjcsIDQsIDc0LCAxMywgNDMsIDI3LCA0LCAyMTYsIDIyNiwgMTMsIDQzLCAyNywgNCwgMjE0LCAKKyAgICAxNjcsIDEzLCA0MywgMjcsIDQsIDE0NiwgMTMsIDQzLCAyNywgNCwgMjEyLCAxMjIsIDEzLCA0MywgMjcsIDQsIDIwNywgODMsIAorICAgIDEzLCA0MywgMjcsIDQsIDY2LCAxMywgNDMsIDI3LCA0LCAyMDMsIDE2OCwgMTMsIDQzLCAyNywgNCwgMjAxLCAxNDcsIDEzLCAKKyAgICA0MywgMjcsIDQsIDIwMCwgMTk1LCAxMywgNDMsIDI3LCA0LCAyMDAsIDEyMywgMTMsIDQzLCAyNywgNCwgMTk5LCAxNTcsIAorICAgIDEzLCA0MywgMzksIDYsIDYyLCAxMywgNDMsIDM5LCA2LCAyNTAsIDEwMywgMTMsIDQzLCAzOSwgNiwgMjQ3LCAyMjMsIDEzLCAKKyAgICA0MywgMzksIDYsIDI0MiwgMTUzLCAxMywgNDMsIDM5LCA2LCA3MiwgMTMsIDQzLCAzOSwgNiwgMjM4LCA1LCAxMywgNDMsIAorICAgIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDQzLCAzOSwgNiwgMjM0LCAyNDcsIDEzLCA0MywgMzksIDYsIDcwLCAxMywgNDMsIDM5LCAKKyAgICA2LCAyMjcsIDI1MSwgMTMsIDQzLCAzOSwgNiwgMjI3LCAxMTgsIDEzLCA0MywgMzksIDYsIDE1NiwgMTMsIDQzLCAzOSwgNiwgCisgICAgMjIzLCAyNDMsIDEzLCA0MywgMzksIDYsIDIyMCwgMjE0LCAxMywgNDMsIDM5LCA2LCA3NCwgMTMsIDQzLCAzOSwgNiwgMjE2LCAKKyAgICAyMjYsIDEzLCA0MywgMzksIDYsIDIxNCwgMTY3LCAxMywgNDMsIDM5LCA2LCAxNDYsIDEzLCA0MywgMzksIDYsIDIxMiwgCisgICAgMTIyLCAxMywgNDMsIDM5LCA2LCAyMDcsIDgzLCAxMywgNDMsIDM5LCA2LCA2NiwgMTMsIDQzLCAzOSwgNiwgMjAzLCAxNjgsIAorICAgIDEzLCA0MywgMzksIDYsIDIwMSwgMTQ3LCAxMywgNDMsIDM5LCA2LCAyMDAsIDE5NSwgMTMsIDQzLCAzOSwgNiwgMjAwLCAKKyAgICAxMjMsIDEzLCA0MywgMzksIDYsIDE5OSwgMTU3LCAxMywgNDMsIDM5LCA0LCA2MiwgMTMsIDQzLCAzOSwgNCwgMjUwLCAxMDMsIAorICAgIDEzLCA0MywgMzksIDQsIDI0NywgMjIzLCAxMywgNDMsIDM5LCA0LCAyNDIsIDE1MywgMTMsIDQzLCAzOSwgNCwgNzIsIDEzLCAKKyAgICA0MywgMzksIDQsIDIzOCwgNSwgMTMsIDQzLCAzOSwgNCwgMjM2LCAxNTYsIDEzLCA0MywgMzksIDQsIDIzNCwgMjQ3LCAxMywgCisgICAgNDMsIDM5LCA0LCA3MCwgMTMsIDQzLCAzOSwgNCwgMjI3LCAyNTEsIDEzLCA0MywgMzksIDQsIDIyNywgMTE4LCAxMywgNDMsIAorICAgIDM5LCA0LCAxNTYsIDEzLCA0MywgMzksIDQsIDIyMywgMjQzLCAxMywgNDMsIDM5LCA0LCAyMjAsIDIxNCwgMTMsIDQzLCAzOSwgCisgICAgNCwgNzQsIDEzLCA0MywgMzksIDQsIDIxNiwgMjI2LCAxMywgNDMsIDM5LCA0LCAyMTQsIDE2NywgMTMsIDQzLCAzOSwgNCwgCisgICAgMTQ2LCAxMywgNDMsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDQzLCAzOSwgNCwgMjA3LCA4MywgMTMsIDQzLCAzOSwgNCwgNjYsIAorICAgIDEzLCA0MywgMzksIDQsIDIwMywgMTY4LCAxMywgNDMsIDM5LCA0LCAyMDEsIDE0NywgMTMsIDQzLCAzOSwgNCwgMjAwLCAKKyAgICAxOTUsIDEzLCA0MywgMzksIDQsIDIwMCwgMTIzLCAxMywgNDMsIDM5LCA0LCAxOTksIDE1NywgMTMsIDQzLCAyNywgMzksIDYsIAorICAgIDYyLCAxMywgNDMsIDI3LCAzOSwgNiwgMjUwLCAxMDMsIDEzLCA0MywgMjcsIDM5LCA2LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDI0MiwgMTUzLCAxMywgNDMsIDI3LCAzOSwgNiwgNzIsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzgsIDUsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDQzLCAyNywgMzksIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgNzAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgMzksIDYsIDIyNywgMTE4LCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNiwgMTU2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjAsIDIxNCwgMTMsIAorICAgIDQzLCAyNywgMzksIDYsIDc0LCAxMywgNDMsIDI3LCAzOSwgNiwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTQsIAorICAgIDE2NywgMTMsIDQzLCAyNywgMzksIDYsIDE0NiwgMTMsIDQzLCAyNywgMzksIDYsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNiwgMjA3LCA4MywgMTMsIDQzLCAyNywgMzksIDYsIDY2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjAzLCAxNjgsIDEzLCA0MywgCisgICAgMjcsIDM5LCA2LCAyMDEsIDE0NywgMTMsIDQzLCAyNywgMzksIDYsIDIwMCwgMTk1LCAxMywgNDMsIDI3LCAzOSwgNiwgMjAwLCAKKyAgICAxMjMsIDEzLCA0MywgMjcsIDM5LCA2LCAxOTksIDE1NywgMTMsIDQzLCAyNywgMzksIDQsIDYyLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjUwLCAxMDMsIDEzLCA0MywgMjcsIDM5LCA0LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgMzksIDQsIDI0MiwgMTUzLCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgNzIsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzgsIDUsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzYsIAorICAgIDE1NiwgMTMsIDQzLCAyNywgMzksIDQsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCAzOSwgNCwgNzAsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgMzksIDQsIDIyNywgMTE4LCAxMywgNDMsIDI3LCAzOSwgNCwgMTU2LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNCwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjAsIDIxNCwgMTMsIDQzLCAyNywgMzksIDQsIDc0LCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTQsIDE2NywgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDE0NiwgMTMsIDQzLCAyNywgMzksIDQsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjA3LCA4MywgMTMsIDQzLCAKKyAgICAyNywgMzksIDQsIDY2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjAzLCAxNjgsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDEsIDE0NywgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIwMCwgMTk1LCAxMywgNDMsIDI3LCAzOSwgNCwgMjAwLCAxMjMsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAxOTksIDE1NywgMTMsIDIyMSwgOTMsIDYsIDYyLCAxMywgMjIxLCA5MywgNiwgMjUwLCAxMDMsIDEzLCAyMjEsIDkzLCAKKyAgICA2LCAyNDcsIDIyMywgMTMsIDIyMSwgOTMsIDYsIDI0MiwgMTUzLCAxMywgMjIxLCA5MywgNiwgNzIsIDEzLCAyMjEsIDkzLCAKKyAgICA2LCAyMzgsIDUsIDEzLCAyMjEsIDkzLCA2LCAyMzYsIDE1NiwgMTMsIDIyMSwgOTMsIDYsIDIzNCwgMjQ3LCAxMywgMjIxLCAKKyAgICA5MywgNiwgNzAsIDEzLCAyMjEsIDkzLCA2LCAyMjcsIDI1MSwgMTMsIDIyMSwgOTMsIDYsIDIyNywgMTE4LCAxMywgMjIxLCAKKyAgICA5MywgNiwgMTU2LCAxMywgMjIxLCA5MywgNiwgMjIzLCAyNDMsIDEzLCAyMjEsIDkzLCA2LCAyMjAsIDIxNCwgMTMsIDIyMSwgCisgICAgOTMsIDYsIDc0LCAxMywgMjIxLCA5MywgNiwgMjE2LCAyMjYsIDEzLCAyMjEsIDkzLCA2LCAyMTQsIDE2NywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDE0NiwgMTMsIDIyMSwgOTMsIDYsIDIxMiwgMTIyLCAxMywgMjIxLCA5MywgNiwgMjA3LCA4MywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDY2LCAxMywgMjIxLCA5MywgNiwgMjAzLCAxNjgsIDEzLCAyMjEsIDkzLCA2LCAyMDEsIDE0NywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDIwMCwgMTk1LCAxMywgMjIxLCA5MywgNiwgMjAwLCAxMjMsIDEzLCAyMjEsIDkzLCA2LCAxOTksIDE1NywgMTMsIAorICAgIDIyMSwgOTMsIDQsIDYyLCAxMywgMjIxLCA5MywgNCwgMjUwLCAxMDMsIDEzLCAyMjEsIDkzLCA0LCAyNDcsIDIyMywgMTMsIAorICAgIDIyMSwgOTMsIDQsIDI0MiwgMTUzLCAxMywgMjIxLCA5MywgNCwgNzIsIDEzLCAyMjEsIDkzLCA0LCAyMzgsIDUsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMzYsIDE1NiwgMTMsIDIyMSwgOTMsIDQsIDIzNCwgMjQ3LCAxMywgMjIxLCA5MywgNCwgNzAsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMjcsIDI1MSwgMTMsIDIyMSwgOTMsIDQsIDIyNywgMTE4LCAxMywgMjIxLCA5MywgNCwgMTU2LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjIzLCAyNDMsIDEzLCAyMjEsIDkzLCA0LCAyMjAsIDIxNCwgMTMsIDIyMSwgOTMsIDQsIDc0LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjE2LCAyMjYsIDEzLCAyMjEsIDkzLCA0LCAyMTQsIDE2NywgMTMsIDIyMSwgOTMsIDQsIDE0NiwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIxMiwgMTIyLCAxMywgMjIxLCA5MywgNCwgMjA3LCA4MywgMTMsIDIyMSwgOTMsIDQsIDY2LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjAzLCAxNjgsIDEzLCAyMjEsIDkzLCA0LCAyMDEsIDE0NywgMTMsIDIyMSwgOTMsIDQsIDIwMCwgMTk1LCAKKyAgICAxMywgMjIxLCA5MywgNCwgMjAwLCAxMjMsIDEzLCAyMjEsIDkzLCA0LCAxOTksIDE1NywgMTMsIDM5LCA0LCAyNDAsIDE4MSwgCisgICAgNzAsIDEzLCAzOSwgNCwgMjQwLCAxODEsIDIyNywgMjUxLCAxMywgMjcsIDYsIDI1MSwgMTEyLCAxMywgMjcsIDYsIDI0OCwgCisgICAgMjA4LCAxMywgMjcsIDYsIDIzNiwgNjAsIDEzLCAyNywgNiwgMjQxLCAxMzYsIDEzLCAyNywgNiwgMjM4LCAxMjQsIDEzLCAKKyAgICAyNywgNiwgMTk5LCA4MCwgMTMsIDI3LCA2LCAyMzgsIDc5LCAxMywgMjcsIDYsIDIwNiwgODgsIDEzLCAyNywgNiwgMjI4LCAKKyAgICA0MSwgMTMsIDI3LCA2LCAyMjcsIDU0LCAxMywgMjcsIDYsIDIyNSwgODcsIDEzLCAyNywgNiwgMjIxLCA0MSwgMTMsIDI3LCAKKyAgICA2LCAyMTgsIDEzMywgMTMsIDI3LCA2LCAyMDAsIDE2OSwgMTMsIDI3LCA2LCAyMTcsIDgxLCAxMywgMjcsIDYsIDIxNSwgCisgICAgMjA0LCAxMywgMjcsIDYsIDIxMywgOTAsIDEzLCAyNywgNiwgMjA2LCA4OSwgOTksIDEzLCAyNywgNiwgMjA5LCAxNjMsIDEzLCAKKyAgICAyNywgNiwgMjA2LCAyMjEsIDEzLCAyNywgNiwgMjAzLCAyMjAsIDEzLCAyNywgNiwgMjE1LCAyMjksIDEzLCAyNywgNiwgCisgICAgMjQ2LCAyMzYsIDEzLCAyNywgNiwgMjE0LCAyMzUsIDEzLCAyNywgNiwgMjE3LCA4MywgMTMsIDI3LCAyMjAsIDE1MiwgMTMsIAorICAgIDI3LCA0LCAyNTEsIDExMiwgMTMsIDI3LCA0LCAyNDgsIDIwOCwgMTMsIDI3LCA0LCAyMzYsIDYwLCAxMywgMjcsIDQsIDI0MSwgCisgICAgMTM2LCAxMywgMjcsIDQsIDIzOCwgMTI0LCAxMywgMjcsIDQsIDE5OSwgODAsIDEzLCAyNywgNCwgMjM4LCA3OSwgMTMsIDI3LCAKKyAgICA0LCAyMDYsIDg4LCAxMywgMjcsIDQsIDIyOCwgNDEsIDEzLCAyNywgNCwgMjI3LCA1NCwgMTMsIDI3LCA0LCAyMjUsIDg3LCAKKyAgICAxMywgMjcsIDQsIDIyMSwgNDEsIDEzLCAyNywgNCwgMjE4LCAxMzMsIDEzLCAyNywgNCwgMjAwLCAxNjksIDEzLCAyNywgNCwgCisgICAgMjE3LCA4MSwgMTMsIDI3LCA0LCAyMTUsIDIwNCwgMTMsIDI3LCA0LCAyMTMsIDkwLCAxMywgMjcsIDQsIDQ3LCAyMDksIAorICAgIDE2MywgMTMsIDI3LCA0LCAyMDksIDE2MywgMTMsIDI3LCA0LCAyMDYsIDIyMSwgMTMsIDI3LCA0LCAyMDMsIDIyMCwgMTMsIAorICAgIDI3LCA0LCAyMTUsIDIyOSwgMTMsIDI3LCA0LCAyNDYsIDIzNiwgMTMsIDI3LCA0LCAyMTQsIDIzNSwgMTMsIDI3LCA0LCAKKyAgICAyMTcsIDgzLCAxMywgMjcsIDIxNiwgMTA4LCAyNDEsIDQ4LCAxMywgMjcsIDIzOCwgMTI1LCA5OSwgMTMsIDI3LCAyMDYsIAorICAgIDg5LCA5OSwgMTMsIDI3LCAyMjcsIDU1LCA5OSwgMTMsIDI3LCAyMTUsIDIzMCwgOTksIDEzLCAyNywgMjEzLCA5MSwgOTksIAorICAgIDEzLCAyNywgMjE1LCAyMDUsIDk5LCAxMywgMzksIDYsIDI1MSwgMTEyLCAxMywgMzksIDYsIDI0OCwgMjA4LCAxMywgMzksIAorICAgIDYsIDIzNiwgNjAsIDEzLCAzOSwgNiwgMjQxLCAxMzYsIDEzLCAzOSwgNiwgMjM4LCAxMjQsIDEzLCAzOSwgNiwgMTk5LCA4MCwgCisgICAgMTMsIDM5LCA2LCAyMzgsIDc5LCAxMywgMzksIDYsIDIwNiwgODgsIDEzLCAzOSwgNiwgMjI4LCA0MSwgMTMsIDM5LCA2LCAKKyAgICAyMjcsIDU0LCAxMywgMzksIDYsIDIyNSwgODcsIDEzLCAzOSwgNiwgMjIxLCA0MSwgMTMsIDM5LCA2LCAyMTgsIDEzMywgMTMsIAorICAgIDM5LCA2LCAyMDAsIDE2OSwgMTMsIDM5LCA2LCAyMTcsIDgxLCAxMywgMzksIDYsIDIxNSwgMjA0LCAxMywgMzksIDYsIDIxMywgCisgICAgOTAsIDEzLCAzOSwgNiwgMjA2LCA4OSwgOTksIDEzLCAzOSwgNiwgMjA5LCAxNjMsIDEzLCAzOSwgNiwgMjA2LCAyMjEsIDEzLCAKKyAgICAzOSwgNiwgMjAzLCAyMjAsIDEzLCAzOSwgNiwgMjE1LCAyMjksIDEzLCAzOSwgNiwgMjQ2LCAyMzYsIDEzLCAzOSwgNiwgCisgICAgMjE0LCAyMzUsIDEzLCAzOSwgNiwgMjE3LCA4MywgMTMsIDM5LCAyMjAsIDE1MiwgMTMsIDM5LCA0LCAyNTEsIDExMiwgMTMsIAorICAgIDM5LCA0LCAyNDgsIDIwOCwgMTMsIDM5LCA0LCAyMzYsIDYwLCAxMywgMzksIDQsIDI0MSwgMTM2LCAxMywgMzksIDQsIDIzOCwgCisgICAgMTI0LCAxMywgMzksIDQsIDE5OSwgODAsIDEzLCAzOSwgNCwgMjM4LCA3OSwgMTMsIDM5LCA0LCAyMDYsIDg4LCAxMywgMzksIAorICAgIDQsIDIyOCwgNDEsIDEzLCAzOSwgNCwgMjI3LCA1NCwgMTMsIDM5LCA0LCAyMjUsIDg3LCAxMywgMzksIDQsIDIyMSwgNDEsIAorICAgIDEzLCAzOSwgNCwgMjE4LCAxMzMsIDEzLCAzOSwgNCwgMjAwLCAxNjksIDEzLCAzOSwgNCwgMjE3LCA4MSwgMTMsIDM5LCA0LCAKKyAgICAyMTUsIDIwNCwgMTMsIDM5LCA0LCAyMTMsIDkwLCAxMywgMzksIDQsIDQ3LCAyMDksIDE2MywgMTMsIDM5LCA0LCAyMDksIAorICAgIDE2MywgMTMsIDM5LCA0LCAyMDYsIDIyMSwgMTMsIDM5LCA0LCAyMDMsIDIyMCwgMTMsIDM5LCA0LCAyMTUsIDIyOSwgMTMsIAorICAgIDM5LCA0LCAyNDYsIDIzNiwgMTMsIDM5LCA0LCAyMTQsIDIzNSwgMTMsIDM5LCA0LCAyMTcsIDgzLCAxMywgMzksIDIxNiwgCisgICAgMTA4LCAyNDEsIDQ4LCAxMywgMzksIDIzOCwgMTI1LCA5OSwgMTMsIDM5LCAyMDYsIDg5LCA5OSwgMTMsIDM5LCAyMjcsIDU1LCAKKyAgICA5OSwgMTMsIDM5LCAyMTUsIDIzMCwgOTksIDEzLCAzOSwgMjEzLCA5MSwgOTksIDEzLCAzOSwgMjE1LCAyMDUsIDk5LCAxMywgCisgICAgMjcsIDM5LCA2LCAyNTEsIDExMiwgMTMsIDI3LCAzOSwgNiwgMjQ4LCAyMDgsIDEzLCAyNywgMzksIDYsIDIzNiwgNjAsIDEzLCAKKyAgICAyNywgMzksIDYsIDI0MSwgMTM2LCAxMywgMjcsIDM5LCA2LCAyMzgsIDEyNCwgMTMsIDI3LCAzOSwgNiwgMTk5LCA4MCwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjM4LCA3OSwgMTMsIDI3LCAzOSwgNiwgMjA2LCA4OCwgMTMsIDI3LCAzOSwgNiwgMjI4LCA0MSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjI3LCA1NCwgMTMsIDI3LCAzOSwgNiwgMjI1LCA4NywgMTMsIDI3LCAzOSwgNiwgMjIxLCA0MSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjE4LCAxMzMsIDEzLCAyNywgMzksIDYsIDIwMCwgMTY5LCAxMywgMjcsIDM5LCA2LCAyMTcsIDgxLCAxMywgCisgICAgMjcsIDM5LCA2LCAyMTUsIDIwNCwgMTMsIDI3LCAzOSwgNiwgMjEzLCA5MCwgMTMsIDI3LCAzOSwgNiwgMjA2LCA4OSwgOTksIAorICAgIDEzLCAyNywgMzksIDYsIDIwOSwgMTYzLCAxMywgMjcsIDM5LCA2LCAyMDYsIDIyMSwgMTMsIDI3LCAzOSwgNiwgMjAzLCAKKyAgICAyMjAsIDEzLCAyNywgMzksIDYsIDIxNSwgMjI5LCAxMywgMjcsIDM5LCA2LCAyNDYsIDIzNiwgMTMsIDI3LCAzOSwgNiwgCisgICAgMjE0LCAyMzUsIDEzLCAyNywgMzksIDYsIDIxNywgODMsIDEzLCAyNywgMzksIDIyMCwgMTUyLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyNTEsIDExMiwgMTMsIDI3LCAzOSwgNCwgMjQ4LCAyMDgsIDEzLCAyNywgMzksIDQsIDIzNiwgNjAsIDEzLCAyNywgMzksIDQsIAorICAgIDI0MSwgMTM2LCAxMywgMjcsIDM5LCA0LCAyMzgsIDEyNCwgMTMsIDI3LCAzOSwgNCwgMTk5LCA4MCwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjM4LCA3OSwgMTMsIDI3LCAzOSwgNCwgMjA2LCA4OCwgMTMsIDI3LCAzOSwgNCwgMjI4LCA0MSwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjI3LCA1NCwgMTMsIDI3LCAzOSwgNCwgMjI1LCA4NywgMTMsIDI3LCAzOSwgNCwgMjIxLCA0MSwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjE4LCAxMzMsIDEzLCAyNywgMzksIDQsIDIwMCwgMTY5LCAxMywgMjcsIDM5LCA0LCAyMTcsIDgxLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMTUsIDIwNCwgMTMsIDI3LCAzOSwgNCwgMjEzLCA5MCwgMTMsIDI3LCAzOSwgNCwgNDcsIDIwOSwgMTYzLCAxMywgMjcsIAorICAgIDM5LCA0LCAyMDksIDE2MywgMTMsIDI3LCAzOSwgNCwgMjA2LCAyMjEsIDEzLCAyNywgMzksIDQsIDIwMywgMjIwLCAxMywgCisgICAgMjcsIDM5LCA0LCAyMTUsIDIyOSwgMTMsIDI3LCAzOSwgNCwgMjQ2LCAyMzYsIDEzLCAyNywgMzksIDQsIDIxNCwgMjM1LCAKKyAgICAxMywgMjcsIDM5LCA0LCAyMTcsIDgzLCAxMywgMjcsIDM5LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDI3LCAzOSwgMjM4LCAKKyAgICAxMjUsIDk5LCAxMywgMjcsIDM5LCAyMDYsIDg5LCA5OSwgMTMsIDI3LCAzOSwgMjI3LCA1NSwgOTksIDEzLCAyNywgMzksIAorICAgIDIxNSwgMjMwLCA5OSwgMTMsIDI3LCAzOSwgMjEzLCA5MSwgOTksIDEzLCAyNywgMzksIDIxNSwgMjA1LCA5OSwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjUxLCAxMTIsIDEzLCA0MywgMjcsIDYsIDI0OCwgMjA4LCAxMywgNDMsIDI3LCA2LCAyMzYsIDYwLCAxMywgNDMsIAorICAgIDI3LCA2LCAyNDEsIDEzNiwgMTMsIDQzLCAyNywgNiwgMjM4LCAxMjQsIDEzLCA0MywgMjcsIDYsIDE5OSwgODAsIDEzLCA0MywgCisgICAgMjcsIDYsIDIzOCwgNzksIDEzLCA0MywgMjcsIDYsIDIwNiwgODgsIDEzLCA0MywgMjcsIDYsIDIyOCwgNDEsIDEzLCA0MywgCisgICAgMjcsIDYsIDIyNywgNTQsIDEzLCA0MywgMjcsIDYsIDIyNSwgODcsIDEzLCA0MywgMjcsIDYsIDIyMSwgNDEsIDEzLCA0MywgCisgICAgMjcsIDYsIDIxOCwgMTMzLCAxMywgNDMsIDI3LCA2LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgNiwgMjE3LCA4MSwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjE1LCAyMDQsIDEzLCA0MywgMjcsIDYsIDIxMywgOTAsIDEzLCA0MywgMjcsIDYsIDIwNiwgODksIDk5LCAxMywgCisgICAgNDMsIDI3LCA2LCAyMDksIDE2MywgMTMsIDQzLCAyNywgNiwgMjA2LCAyMjEsIDEzLCA0MywgMjcsIDYsIDIwMywgMjIwLCAKKyAgICAxMywgNDMsIDI3LCA2LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgNiwgMjQ2LCAyMzYsIDEzLCA0MywgMjcsIDYsIDIxNCwgCisgICAgMjM1LCAxMywgNDMsIDI3LCA2LCAyMTcsIDgzLCAxMywgNDMsIDI3LCAyMjAsIDE1MiwgMTMsIDQzLCAyNywgNCwgMjUxLCAKKyAgICAxMTIsIDEzLCA0MywgMjcsIDQsIDI0OCwgMjA4LCAxMywgNDMsIDI3LCA0LCAyMzYsIDYwLCAxMywgNDMsIDI3LCA0LCAyNDEsIAorICAgIDEzNiwgMTMsIDQzLCAyNywgNCwgMjM4LCAxMjQsIDEzLCA0MywgMjcsIDQsIDE5OSwgODAsIDEzLCA0MywgMjcsIDQsIDIzOCwgCisgICAgNzksIDEzLCA0MywgMjcsIDQsIDIwNiwgODgsIDEzLCA0MywgMjcsIDQsIDIyOCwgNDEsIDEzLCA0MywgMjcsIDQsIDIyNywgCisgICAgNTQsIDEzLCA0MywgMjcsIDQsIDIyNSwgODcsIDEzLCA0MywgMjcsIDQsIDIyMSwgNDEsIDEzLCA0MywgMjcsIDQsIDIxOCwgCisgICAgMTMzLCAxMywgNDMsIDI3LCA0LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgNCwgMjE3LCA4MSwgMTMsIDQzLCAyNywgNCwgMjE1LCAKKyAgICAyMDQsIDEzLCA0MywgMjcsIDQsIDIxMywgOTAsIDEzLCA0MywgMjcsIDQsIDQ3LCAyMDksIDE2MywgMTMsIDQzLCAyNywgNCwgCisgICAgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDQsIDIwNiwgMjIxLCAxMywgNDMsIDI3LCA0LCAyMDMsIDIyMCwgMTMsIDQzLCAyNywgCisgICAgNCwgMjE1LCAyMjksIDEzLCA0MywgMjcsIDQsIDI0NiwgMjM2LCAxMywgNDMsIDI3LCA0LCAyMTQsIDIzNSwgMTMsIDQzLCAKKyAgICAyNywgNCwgMjE3LCA4MywgMTMsIDQzLCAyNywgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCA0MywgMjcsIDIzOCwgMTI1LCA5OSwgCisgICAgMTMsIDQzLCAyNywgMjA2LCA4OSwgOTksIDEzLCA0MywgMjcsIDIyNywgNTUsIDk5LCAxMywgNDMsIDI3LCAyMTUsIDIzMCwgCisgICAgOTksIDEzLCA0MywgMjcsIDIxMywgOTEsIDk5LCAxMywgNDMsIDI3LCAyMTUsIDIwNSwgOTksIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICAyNTEsIDExMiwgMTMsIDQzLCAyNywgMzksIDYsIDI0OCwgMjA4LCAxMywgNDMsIDI3LCAzOSwgNiwgMjM2LCA2MCwgMTMsIAorICAgIDQzLCAyNywgMzksIDYsIDI0MSwgMTM2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjM4LCAxMjQsIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICAxOTksIDgwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjM4LCA3OSwgMTMsIDQzLCAyNywgMzksIDYsIDIwNiwgODgsIDEzLCA0MywgCisgICAgMjcsIDM5LCA2LCAyMjgsIDQxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjI3LCA1NCwgMTMsIDQzLCAyNywgMzksIDYsIDIyNSwgCisgICAgODcsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjEsIDQxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjE4LCAxMzMsIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgMzksIDYsIDIxNywgODEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTUsIDIwNCwgCisgICAgMTMsIDQzLCAyNywgMzksIDYsIDIxMywgOTAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDYsIDg5LCA5OSwgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCAzOSwgNiwgMjA2LCAyMjEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDMsIAorICAgIDIyMCwgMTMsIDQzLCAyNywgMzksIDYsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCAzOSwgNiwgMjQ2LCAyMzYsIDEzLCA0MywgCisgICAgMjcsIDM5LCA2LCAyMTQsIDIzNSwgMTMsIDQzLCAyNywgMzksIDYsIDIxNywgODMsIDEzLCA0MywgMjcsIDM5LCAyMjAsIAorICAgIDE1MiwgMTMsIDQzLCAyNywgMzksIDQsIDI1MSwgMTEyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQ4LCAyMDgsIDEzLCA0MywgCisgICAgMjcsIDM5LCA0LCAyMzYsIDYwLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQxLCAxMzYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzgsIAorICAgIDEyNCwgMTMsIDQzLCAyNywgMzksIDQsIDE5OSwgODAsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzgsIDc5LCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNCwgMjA2LCA4OCwgMTMsIDQzLCAyNywgMzksIDQsIDIyOCwgNDEsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjcsIDU0LCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjI1LCA4NywgMTMsIDQzLCAyNywgMzksIDQsIDIyMSwgNDEsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAyMTgsIDEzMywgMTMsIDQzLCAyNywgMzksIDQsIDIwMCwgMTY5LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE3LCA4MSwgMTMsIAorICAgIDQzLCAyNywgMzksIDQsIDIxNSwgMjA0LCAxMywgNDMsIDI3LCAzOSwgNCwgMjEzLCA5MCwgMTMsIDQzLCAyNywgMzksIDQsIAorICAgIDQ3LCAyMDksIDE2MywgMTMsIDQzLCAyNywgMzksIDQsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjA2LCAyMjEsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCAyMDMsIDIyMCwgMTMsIDQzLCAyNywgMzksIDQsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjQ2LCAyMzYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTQsIDIzNSwgMTMsIDQzLCAyNywgMzksIDQsIDIxNywgODMsIDEzLCAKKyAgICA0MywgMjcsIDM5LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDQzLCAyNywgMzksIDIzOCwgMTI1LCA5OSwgMTMsIDQzLCAyNywgCisgICAgMzksIDIwNiwgODksIDk5LCAxMywgNDMsIDI3LCAzOSwgMjI3LCA1NSwgOTksIDEzLCA0MywgMjcsIDM5LCAyMTUsIDIzMCwgCisgICAgOTksIDEzLCA0MywgMjcsIDM5LCAyMTMsIDkxLCA5OSwgMTMsIDQzLCAyNywgMzksIDIxNSwgMjA1LCA5OSwgMTMsIDI3LCA2LCAKKyAgICAyNDEsIDQyLCAxMywgMjcsIDQsIDI0MSwgNDIsIDEzLCAyNywgMTcsIDE5OSwgODEsIDEzLCAyNywgMTcsIDEwMiwgMTMsIAorICAgIDI3LCAxNywgMTA1LCAxMywgMjcsIDE3LCAxNDcsIDEzLCAyNywgMTcsIDE0OSwgMTMsIDI3LCAxNywgMTY0LCAxMywgMjcsIAorICAgIDE3LCAxODcsIDEzLCAyNywgMTcsIDIxMCwgMTM1LCAxMywgMjcsIDE3LCAxOTIsIDEzLCAyNywgMTcsIDIxOSwgMTEzLCAxMywgCisgICAgMTc1LCAxNywgMTk5LCA4MSwgMTMsIDE3NSwgMTcsIDEwMiwgMTMsIDE3NSwgMTcsIDEwNSwgMTMsIDE3NSwgMTcsIDE0NywgCisgICAgMTMsIDE3NSwgMTcsIDE0OSwgMTMsIDE3NSwgMTcsIDE2NCwgMTMsIDE3NSwgMTcsIDE4NywgMTMsIDE3NSwgMTcsIDIxMCwgCisgICAgMTM1LCAxMywgMTc1LCAxNywgMTkyLCAxMywgMTc1LCAxNywgMjE5LCAxMTMsIDEzLCA0MywgMTcsIDE5OSwgODEsIDEzLCAKKyAgICA0MywgMTcsIDEwMiwgMTMsIDQzLCAxNywgMTA1LCAxMywgNDMsIDE3LCAxNDcsIDEzLCA0MywgMTcsIDE0OSwgMTMsIDQzLCAKKyAgICAxNywgMTY0LCAxMywgNDMsIDE3LCAxODcsIDEzLCA0MywgMTcsIDIxMCwgMTM1LCAxMywgNDMsIDE3LCAxOTIsIDEzLCA0MywgCisgICAgMTcsIDIxOSwgMTEzLCAxMywgNDMsIDI3LCAxNywgMTk5LCA4MSwgMTMsIDQzLCAyNywgMTcsIDEwMiwgMTMsIDQzLCAyNywgCisgICAgMTcsIDEwNSwgMTMsIDQzLCAyNywgMTcsIDE0NywgMTMsIDQzLCAyNywgMTcsIDE0OSwgMTMsIDQzLCAyNywgMTcsIDE2NCwgCisgICAgMTMsIDQzLCAyNywgMTcsIDE4NywgMTMsIDQzLCAyNywgMTcsIDIxMCwgMTM1LCAxMywgNDMsIDI3LCAxNywgMTkyLCAxMywgCisgICAgNDMsIDI3LCAxNywgMjE5LCAxMTMsIDEzLCAyMjEsIDkzLCAxNywgMTk5LCA4MSwgMTMsIDIyMSwgOTMsIDE3LCAxMDIsIDEzLCAKKyAgICAyMjEsIDkzLCAxNywgMTA1LCAxMywgMjIxLCA5MywgMTcsIDE0NywgMTMsIDIyMSwgOTMsIDE3LCAxNDksIDEzLCAyMjEsIAorICAgIDkzLCAxNywgMTY0LCAxMywgMjIxLCA5MywgMTcsIDE4NywgMTMsIDIyMSwgOTMsIDE3LCAyMTAsIDEzNSwgMTMsIDIyMSwgCisgICAgOTMsIDE3LCAxOTIsIDEzLCAyMjEsIDkzLCAxNywgMjE5LCAxMTMsIDIzLCAxMzEsIDIyOCwgMTAzLCAyMywgMjM0LCAxOTYsIAorICAgIDIyOCwgMTAzLCAyMywgMjM0LCAxOTIsIDIyOCwgMTAzLCAyMywgMjM0LCAxODEsIDIyOCwgMTAzLCAyMywgMjM0LCAxODUsIAorICAgIDIyOCwgMTAzLCAyMywgMjM0LCAxOTgsIDIyOCwgMTAzLCAyMywgMTMxLCAxMjQsIDI0OCwgMjE5LCAyMywgMjM0LCAxOTYsIAorICAgIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMjEzLCAKKyAgICAyMjAsIDIyNiwgOTEsIDIzLCAxMzEsIDEyNCwgMjQyLCAyMDAsIDIzLCAxMzEsIDEyNCwgMjM0LCA1MCwgMjMsIDEzMSwgCisgICAgMTI0LCAyMzQsIDUxLCAyMjQsIDU5LCAyMywgMjM0LCAxOTYsIDEyNCwgMjM0LCA1MiwgMjMsIDEzMSwgMTI0LCAyMjEsIAorICAgIDIwNCwgMjMsIDIzNCwgMTk2LCAxMjQsIDIyMSwgMjA0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQ4LCAyMTksIDIzLCAxMzEsIAorICAgIDEyNCwgMTAxLCAyMTMsIDIyMCwgMjI2LCA5MCwgMjMsIDEzMSwgMTI0LCAxMDEsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgCisgICAgMTE1LCAxMDEsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgMjM0LCA1MSwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MywgNTcsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQzLCA1OCwgMTAxLCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDI0MiwgMjAwLCAyMywgCisgICAgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMjM0LCA1MCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MiwgMjMxLCAyMywgMjM0LCAKKyAgICAxOTYsIDEyNCwgMTAxLCAyNDIsIDIzMSwgMjMsIDEzMSwgMTAxLCAyNDgsIDIyMCwgMTE5LCAyMjgsIDEwMywgMjMsIDEzMSwgCisgICAgMTI0LCAyNDgsIDIyMCwgMTE5LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTI0LCAxMDEsIDIwNiwgMzQsIDIzLCAyMzQsIDE5NiwgCisgICAgMTI0LCAxMDEsIDIwNiwgMzQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMDgsIDY4LCAxNTMsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMjQsIDEwMSwgMjQ4LCAyMjAsIDE1MywgMjA4LCA2NywgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjQ4LCAyMTksIDIzLCAKKyAgICAxMzEsIDEyNCwgMTAxLCAyMzQsIDUxLCAyMDgsIDIwMiwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMTUsIDEwMSwgCisgICAgMjM0LCA1MSwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMTUsIDEwMSwgMjM0LCA1MSwgMTUzLCAyNDMsIDU3LCAKKyAgICAyMywgMTMxLCAxMjQsIDIzNCwgNTEsIDEwMSwgMTE1LCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDEwMSwgMTE1LCAKKyAgICAyMDgsIDIwMiwgMTUzLCAyMzYsIDIzMywgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjQyLCAyMDAsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAxNTMsIDI0NiwgMTU0LCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyMzMsIDE4NSwgMjMsIDEzMSwgMTI0LCAxMDEsIAorICAgIDE1MywgMjM0LCA1MCwgMjMsIDEzMSwgMTUzLCAyNDgsIDIwNiwgMTI0LCAxMDEsIDIwOCwgNjcsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDMsIDU4LCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMTUzLCAyMDksIDE3NSwgCisgICAgMjQzLCA1NywgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDE1MywgMjA5LCAxNzUsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMDEsIDE1MywgMjMzLCAxODYsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMzMsIDE4NiwgMTAxLCAyMDMsIAorICAgIDIyOCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDIzNCwgNTEsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDIsIDIzMiwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDE1MywgMjM2LCAyMzMsIAorICAgIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyNDIsIDIwMSwgMTUzLCAyMzYsIDIzMywgMjMsIDEzMSwgMTAxLCAxNTMsIAorICAgIDI0MiwgMjAxLCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAyMDEsIDEwMSwgMjAzLCAyMjgsIDIzLCAKKyAgICAxMzEsIDEwMSwgMTUzLCA0NCwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTAxLCAxNTMsIDQ0LCAxMjQsIDIzNCwgNTAsIAorICAgIDIzLCAxMzEsIDEyNCwgMTUzLCAyNTEsIDY5LCAyMTYsIDI1NSwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIAorICAgIDI1MSwgNjksIDIyOCwgMTE4LCAxMDEsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgNDQsIDEwMSwgMjAzLCAyMjgsIAorICAgIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI0MywgNTgsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI1MSwgCisgICAgNjksIDIxNiwgMjU0LCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNTEsIDY4LCAyMywgMTMxLCAxMDEsIDE1MywgMjUxLCAKKyAgICA2OSwgMjE2LCAyNTUsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEwMSwgMTUzLCAyNTEsIDY5LCAyMTYsIDI1NSwgMTI0LCAKKyAgICAyNDIsIDIzMSwgMjMsIDEzMSwgMTAxLCAxNTMsIDI1MSwgNjksIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAKKyAgICAyMzMsIDE4NiwgMTAxLCAyMzQsIDUwLCAyMywgMjM0LCAxODcsIDIzNiwgMjI5LCAyMzcsIDgxLCAyMywgMjM0LCAxODcsIAorICAgIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCA4MiwgMjM0LCA1MCwgCisgICAgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCA4MiwgMjQzLCA1NywgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCAKKyAgICA4MiwgMjQzLCA1OCwgMjA4LCAyMDksIDIzLCAyMzQsIDE5NCwgMjM2LCAyMjksIDIzNywgODIsIDI0MywgNTcsIDIzLCAxMzEsIAorICAgIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDMsIDU4LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg1LCAyMzYsIDIyOSwgMjM3LCA4MiwgCisgICAgMjQzLCA1NywgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTg3LCAyMzQsIAorICAgIDExOCwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAKKyAgICAyMDIsIDIzNiwgMjI5LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzQsIDExOCwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAKKyAgICAyMDIsIDIzNiwgMjI5LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjQ4LCAKKyAgICAyMTksIDIzLCAyMzQsIDE4NywgMjM0LCAxMTgsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyNDgsIDIxOSwgMjMsIAorICAgIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTkyLCAyMzcsIAorICAgIDYxLCAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTkyLCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjE3LCA1MywgCisgICAgMjMsIDIzNCwgMTg1LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjE3LCA1MywgMjMsIDIzNCwgMTgxLCAyMzcsIDYxLCAKKyAgICAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjM0LCA1MCwgMjMsIAorICAgIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjM0LCA1MSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgCisgICAgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjM0LCA1MSwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIAorICAgIDE4NiwgMjMsIDIzNCwgMTg3LCAyNDgsIDIwNiwgMjE2LCAxNzcsIDIzNywgMTgxLCAyMywgMjM0LCAxODcsIDIzNCwgMTE3LCAKKyAgICAyMywgMjM0LCAxODcsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NywgMjM0LCAxMTgsIDE1MywgMjA5LCAxNzQsIDIzLCAKKyAgICAyMzQsIDE4NywgMTUzLCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAxNTMsIDIzNiwgMjMzLCAyMywgMjM0LCAxODcsIDIwOCwgCisgICAgMjEwLCAxMjQsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NywgMjA4LCAyMTAsIDI0NywgNTUsIDIzLCAyMzQsIDE4NywgCisgICAgMjA4LCAyMTAsIDI0NywgNTYsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NywgMjA4LCAyMTAsIDI0NywgNTYsIDE1MywgCisgICAgMjA5LCAxNzUsIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDIwOCwgMjEwLCAyMjQsIDE0NywgMjMsIDIzNCwgMTkzLCAyMywgCisgICAgMjM0LCAxOTQsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE5NCwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIDE5NCwgCisgICAgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTgzLCAyNDIsIDE5NywgMjMsIDIzNCwgMTgyLCAyMywgMjM0LCAxOTIsIDIxNywgCisgICAgNTMsIDIzLCAyMzQsIDE5MSwgMjMsIDIzNCwgMTkyLCAxNzYsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE5MiwgMTUzLCAKKyAgICAyMDksIDE3NCwgMjMsIDIzNCwgMTkyLCAxNzYsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxOTIsIDIxOCwgMjQyLCAKKyAgICAyMDYsIDM0LCAyMywgMjM0LCAxOTIsIDE3NiwgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTkyLCAxNTMsIDIzNiwgMjMzLCAKKyAgICAyMywgMjM0LCAxOTAsIDIxNywgNTMsIDIzLCAyMzQsIDE4OSwgMjMsIDIzNCwgMTk1LCAyMywgMjM0LCAxODAsIDIzLCAyMzQsIAorICAgIDE4MSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTgxLCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTgxLCAxNTMsIAorICAgIDIzNiwgMjMzLCAyMywgMjM0LCAxODUsIDIxNywgNTMsIDIzLCAyMzQsIDE4NSwgMTc2LCAxNTMsIDIzNiwgMjMzLCAyMywgCisgICAgMjM0LCAxODQsIDIzLCAyMzQsIDE4NSwgMjA5LCA1MywgMjMsIDIzNCwgMTg1LCAxNzYsIDE1MywgMjA5LCAxNzQsIDIzLCAKKyAgICAyMzQsIDE4NSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg1LCAxNzYsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAKKyAgICAxODUsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxODUsIDE1MywgMjA5LCAxNzUsIDIwNSwgMTQwLCAyMjgsIDEwMywgCisgICAgMjMsIDIzNCwgMTg1LCAxNTMsIDI0OCwgMjA2LCAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE5NywgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE5NiwgMTI0LCAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE4NSwgMTI0LCAxMDEsIAorICAgIDIxMywgMjYsIDIzLCAyMzQsIDE5OCwgMTI0LCAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE4NSwgMjI0LCAxNDcsIDIzLCAKKyAgICAxMzEsIDEyNCwgMTAxLCAyMTMsIDI3LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxMDEsIDIxMywgMjcsIDI0MywgNTcsIAorICAgIDIzLCAyMzQsIDE4NSwgMTI0LCAxMDEsIDIxMywgMjcsIDI0MywgNTcsIDIzLCAxMzEsIDIyNCwgMTQ4LCAyMzksIDE2NywgCisgICAgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNywgMjEzLCAyMiwgMjA4LCA2NywgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNywgMjEzLCAKKyAgICAyMiwgMjQyLCAxODcsIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjcsIDIxNywgNywgMjQ2LCAxNTQsIDIzLCAxMzEsIDIyNCwgCisgICAgMTQ4LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMjI0LCAxNDgsIDIwMywgMjI4LCAyMywgMjM0LCAxOTYsIAorICAgIDIyNCwgMTQ4LCAyMDMsIDIyOCwgMjMsIDIzNCwgMTgxLCAyMjQsIDE0OCwgMjAzLCAyMjgsIDIzLCAyMzQsIDE5OCwgMjI0LCAKKyAgICAxNDgsIDIwMywgMjI4LCAyMywgMTMxLCAyMjQsIDE0OCwgMjEzLCAyMjAsIDIyNiwgOTEsIDIzLCAxMzEsIDIyNCwgMTQ4LCAKKyAgICAyNDgsIDIxOSwgMjMsIDEzMSwgMjI0LCAxNDgsIDIwNSwgMTQxLCAyMDYsIDM0LCAyMywgMTMxLCAyMjQsIDE0OCwgMjA2LCAKKyAgICAzNCwgMjMsIDIzNCwgMTg1LCAyMjQsIDE0OCwgMjA2LCAzNCwgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNCwgMjA2LCAzNCwgMjMsIAorICAgIDIzNCwgMTg1LCAyMjQsIDE0OCwgMTI0LCAyMDYsIDM0LCAyMywgMjM0LCAxOTgsIDIyNCwgMTQ4LCAxMjQsIDE1MywgMTI0LCAKKyAgICAxNTMsIDIxNiwgMjU0LCAyMywgMjM0LCAxOTgsIDIyNCwgMTQ4LCAxMjQsIDE1MywgMTI0LCAyMDYsIDM0LCAyMywgMTMxLCAKKyAgICAyMjQsIDE0OCwgMjI4LCAxMDMsIDIzLCAyMzQsIDE5NiwgMjI0LCAxNDgsIDIyOCwgMTAzLCAyMywgMjM0LCAxODUsIDIyNCwgCisgICAgMTQ4LCAyMjgsIDEwMywgMjMsIDIzNCwgMTk4LCAyMjQsIDE0OCwgMjI4LCAxMDMsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMjQsIAorICAgIDE0NywgMjMsIDIzNCwgMTk2LCAxMjQsIDEwMSwgMjI0LCAxNDcsIDIzLCAyMzQsIDE4NSwgMTI0LCAxMDEsIDIyNCwgMTQ3LCAKKyAgICAyMywgMjM0LCAxODUsIDIxMywgMjYsIDIzLCAyMzQsIDE5OCwgMTI0LCAxMDEsIDIyNCwgMTQ3LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQyLCAyMzUsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDEyNCwgMTAxLCAyNDIsIDIzNSwgMjI0LCAxNDcsIDIzLCAKKyAgICAxMzEsIDIxMywgMjcsIDIzOSwgMTY3LCAyMywgMjM0LCAxODUsIDIxMywgMjcsIDEyNywgMTI0LCAxNTMsIDIzMywgMTg3LCAKKyAgICAyMjEsIDIwNCwgMjMsIDIzNCwgMTk4LCAyMTMsIDI3LCAxMjcsIDEwMSwgMTUzLCAxMjQsIDI0MiwgMjM0LCAyMywgMTMxLCAKKyAgICAyMTMsIDI3LCAyMDMsIDIyOCwgMjMsIDEzMSwgMjEzLCAyNywgMjEzLCAyMjAsIDIyNiwgOTEsIDIzLCAxMzEsIDIxMywgMjcsIAorICAgIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODEsIDIxMywgMjcsIDIyNCwgCisgICAgMTQ3LCAyMywgMjM0LCAxOTgsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMTMxLCAyMTMsIDI3LCAyMjEsIDIwNCwgMjMsIAorICAgIDEzMSwgMjEzLCAyNywgMTAxLCAyNDMsIDU3LCAyMywgMTMxLCAyMTMsIDI3LCAxMDEsIDIxMywgMjIwLCAyMjYsIDkwLCAyMywgCisgICAgMTMxLCAyMTMsIDI3LCAyMjgsIDEwMywgMjMsIDEzMSwgMjEzLCAyNywgMjA2LCAzNCwgMjMsIDIzNCwgMTgzLCAyMTMsIDI3LCAKKyAgICAyMDYsIDM0LCAyMywgMTMxLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDEyNCwgMjEzLCAyNywgCisgICAgMjI0LCAxNDcsIDIzLCAyMzQsIDE5MCwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE3LCA3OCwgMjMsIDIzNCwgMTgzLCAKKyAgICAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMTYsIDI1NCwgMjMsIDIzNCwgMTgzLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAKKyAgICAyMjgsIDExNywgMjMsIDIzNCwgMTgzLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMDMsIDI1MiwgMjMsIDIzNCwgMTkyLCAKKyAgICAxMjQsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODUsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIAorICAgIDE5OCwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE2LCAyNTQsIDIzLCAyMzQsIDE5OCwgMTI0LCAyMTMsIDI3LCAyMjQsIAorICAgIDE0NywgMjMsIDEzMSwgMTAxLCAyMzksIDE2NywgMjMsIDIzNCwgMTg1LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTAxLCAyMDMsIAorICAgIDIyOCwgMjMsIDIzNCwgMTk2LCAxMDEsIDIwMywgMjI4LCAyMywgMTMxLCAxMDEsIDIxMywgMjIwLCAyMjYsIDkxLCAyMywgCisgICAgMTMxLCAxMDEsIDExNSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTgzLCAxMDEsIDIwNiwgMzQsIDIzLCAxMzEsIDEwMSwgCisgICAgMTUzLCAyMjQsIDE0NywgMjMsIDEzMSwgMTAxLCAyMjQsIDE0NywgMjMsIDEzMSwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0NywgCisgICAgMjMsIDIzNCwgMTk2LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTAsIDEwMSwgMjEzLCAyNywgMjI0LCAKKyAgICAxNDgsIDIxNywgNzgsIDIzLCAyMzQsIDE5MiwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTg1LCAxMDEsIAorICAgIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTgsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNiwgMjU0LCAyMywgCisgICAgMjM0LCAxOTgsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDIyOCwgMTE3LCAyMywgMjM0LCAxOTgsIDEwMSwgMjEzLCAyNywgCisgICAgMjI0LCAxNDcsIDIzLCAyMzQsIDE5NiwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQ4LCAyMTksIDIzLCAyMzQsIDE5NCwgCisgICAgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1NywgMjMsIDIzNCwgMTk0LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAKKyAgICAyNDMsIDU4LCAyMDksIDE3NCwgMjMsIDIzNCwgMTgzLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU4LCAyMTYsIAorICAgIDI1NCwgMjMsIDIzNCwgMTgzLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU4LCAyMjgsIDExNywgMjMsIDIzNCwgCisgICAgMTgzLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU3LCAyMywgMjM0LCAxODUsIDEyNCwgMjM0LCA1MCwgMjMsIAorICAgIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODUsIDEyNCwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxNTMsIDIwOSwgMTc1LCAxNTMsIDI0MSwgNzAsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgMTUzLCAyNDMsIDU3LCAKKyAgICAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIDE1MywgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgCisgICAgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc1LCAyNDgsIDk2LCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTI0LCAxNTMsIDIwOSwgMTc1LCAxMjQsIDIzNCwgNTIsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMzYsIDIzNCwgMTI0LCAyMDgsIAorICAgIDY3LCAyMywgMTMxLCAxMjQsIDE1MywgMjM2LCAyMzQsIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTUzLCAxMTcsIAorICAgIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIDE5NywgMjMsIDEzMSwgMTI0LCAxNTMsIDI0MiwgMTkwLCAxNTMsIDIyOCwgNzMsIAorICAgIDIzLCAyMzQsIDE5NCwgMTI0LCAxNTMsIDI0MiwgMTkwLCAxNTMsIDIyOCwgNzMsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIAorICAgIDE5MCwgMTUzLCAyMDMsIDI1MiwgMjMsIDEzMSwgMTI0LCAxNTMsIDI0NiwgMTU1LCAyMywgMjM0LCAxOTIsIDEyNCwgMjA2LCAKKyAgICAzNCwgMjMsIDIzNCwgMTkyLCAxMjQsIDE1MywgMjE3LCA1MywgMjMsIDIzNCwgMTg1LCAxMjQsIDE1MywgMjE3LCA1MywgMjMsIAorICAgIDIzNCwgMTg1LCAxMjQsIDE1MywgMjI1LCA3MCwgMjMsIDIzNCwgMTg1LCAxMjQsIDIwNiwgMzQsIDIzLCAyMzQsIDE4NSwgCisgICAgMTI0LCAxNTMsIDIwOSwgNTMsIDIzLCAyMzQsIDE5OCwgMTI0LCAxNTMsIDIxNiwgMjU0LCAyMywgMjM0LCAxOTgsIDEyNCwgCisgICAgMTUzLCAyMjgsIDExNywgMjMsIDIzNCwgMTk4LCAxMjQsIDIwNiwgMzQsIDIzLCAxMzEsIDIwNiwgMzQsIDIzLCAxMzEsIAorICAgIDE1MywgMjM0LCAxMTcsIDIzLCAxMzEsIDE1MywgMjA5LCAxNzUsIDI0MSwgNzAsIDIzLCAxMzEsIDE1MywgMjA5LCAxNzUsIAorICAgIDI0MywgNTcsIDIzLCAxMzEsIDE1MywgMjA5LCAxNzUsIDI0OCwgMjE5LCAyMywgMTMxLCAxNTMsIDIzNiwgMjMzLCAyMywgCisgICAgMTMxLCAxNTMsIDI0OCwgMjA2LCAxMjQsIDIyMSwgMjA0LCAyMywgMTMxLCAxNTMsIDI0OCwgMjA2LCAxMDEsIDIxMywgMjYsIAorICAgIDIzLCAxMzEsIDE1MywgMjQ4LCAyMDYsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAxMjAsIAorICAgIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMTE5LCAxMjAsIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDEyNiwgCisgICAgMjM3LCA4MSwgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMjM2LCAyMjksIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMTE5LCAKKyAgICAyMzYsIDIyOSwgMjEzLCAyMjAsIDIyNiwgOTAsIDIzLCAyMzQsIDE4OCwgMjMsIDEzMSwgMjM0LCAxMTcsIDIzLCAyMDUsIAorICAgIDE0MiwgMjA5LCAxMzgsIDIzLCAyMDUsIDE0MiwgMjIxLCAyMCwgMjMsIDIwNSwgMTQyLCAyNDgsIDIwNSwgMjMsIDIzNSwgCisgICAgNzgsIDIwOSwgMTM4LCAyMywgMjM1LCA3OCwgMjIxLCAyMCwgMjMsIDIzNSwgNzgsIDI0OCwgMjA1LCAyMywgMjA4LCA1MiwgCisgICAgMjA5LCAxMzgsIDIzLCAyMDgsIDUyLCAyMjEsIDIwLCAyMywgMjA4LCA1MiwgMjQ4LCAyMDUsIDIzLCAyNDgsIDQ0LCAyMDksIAorICAgIDEzOCwgMjMsIDI0OCwgNDQsIDIyMSwgMjAsIDIzLCAyNDgsIDQ0LCAyNDgsIDIwNSwgMjMsIDIxMiwgMTczLCAyMDksIDEzOCwgCisgICAgMjMsIDIxMiwgMTczLCAyMjEsIDIwLCAyMywgMjEyLCAxNzMsIDI0OCwgMjA1LCAyMywgMjA3LCAyMDMsIDIwNywgMTE2LCAKKyAgICAyMywgMjA3LCAyMDMsIDI0OCwgMjA1LCAyMywgMjA4LCAxODksIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjA4LCAxODksIDQsIAorICAgIDIwOSwgMTM4LCAyMywgMjA4LCAxODksIDIyNSwgNzEsIDIyMSwgMjAsIDIzLCAyMDgsIDE4OSwgNCwgMjIxLCAyMCwgMjMsIAorICAgIDIwOCwgMTg5LCAyMTAsIDE1MCwgMjMsIDIzNywgMzUsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjM3LCAzNSwgNCwgMjA5LCAKKyAgICAxMzgsIDIzLCAyMzcsIDM1LCAyMjUsIDcxLCAyMjEsIDIwLCAyMywgMjM3LCAzNSwgNCwgMjIxLCAyMCwgMjMsIDIzNywgMzUsIAorICAgIDIxMCwgMTUwLCAyMywgMjA4LCAxODksIDIzNywgMzUsIDI1MSwgMTA2LCAyMywgMjIxLCA1MSwgMTE1LCAxMjcsIDIyNSwgCisgICAgNzAsIDIzLCAyMjEsIDUxLCAxMTUsIDEyNywgMjA5LCA1MywgMjMsIDIyMSwgNTEsIDExNSwgMjEwLCAxNTAsIDIzLCAyMjEsIAorICAgIDUxLCAxMjcsIDIxMCwgMTUwLCAyMywgMjIxLCA1MSwgMTE1LCAxMjcsIDI1MSwgMTA3LCAyMjUsIDcwLCAyMywgMjIxLCA1MSwgCisgICAgMTE1LCAxMjcsIDI1MSwgMTA3LCAyMDksIDUzLCAyMywgMjIxLCA1MSwgMjA5LCAxNzUsIDIwNSwgMTg2LCAyMDksIDE3NSwgCisgICAgMjExLCAyMTYsIDIzLCAyMjEsIDUwLCAyMzcsIDg3LCAyNDMsIDQ3LCAyMywgMjIxLCA1MiwgMjM3LCA4NywgMjQzLCA0NywgCisgICAgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwOCwgNjgsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgMjA4LCA2OCwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAKKyAgICAyMDgsIDY4LCAyMjUsIDY4LCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgCisgICAgNTMsIDIwOCwgNjcsIDIzLCAyMjEsIDUwLCA1MywgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUwLCA1MywgMjUxLCAKKyAgICAxMDYsIDIzLCAyMjEsIDUwLCA1MywgMjUxLCAxMDcsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgMjQyLCAyMzQsIAorICAgIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyMDgsIDY4LCAyMjEsIDU0LCAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjAwLCAyMjAsIAorICAgIDIzNywgMzgsIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyNTEsIDEwNiwgMjMsIDIyMSwgNTAsIDIwNSwgODMsIDI1MSwgMTA3LCAKKyAgICAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIDI0OCwgMjIzLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQ4LCAyMjMsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyNDgsIDIyMywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MywgMTYsIDIwOSwgNTMsIAorICAgIDIzLCAyMjEsIDUwLCAyNDMsIDE2LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQzLCAxNiwgMjI1LCA3MCwgMjMsIDIyMSwgCisgICAgNTAsIDI0MywgMTYsIDIxMiwgMjI2LCAyMywgMjIxLCA1MCwgMjQ3LCA3LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQ3LCA3LCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQ3LCA3LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMTAwLCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MCwgMTAwLCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMTAwLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMTk5LCAyNywgCisgICAgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDE5OSwgMjcsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAxOTksIDI3LCAyMjUsIDcwLCAKKyAgICAyMywgMjIxLCA1MCwgMjE2LCA2OSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIxNiwgNjksIDIyMiwgNjUsIDIzLCAyMjEsIAorICAgIDUwLCAyMTYsIDY5LCAyMjUsIDcwLCAyMywgMjA1LCAxMTIsIDIxMiwgMjI0LCAyMDksIDEzOCwgMjMsIDIwNSwgMTEyLCAKKyAgICAyMTIsIDIyNCwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjQsIDI1MSwgMTA2LCAyMywgMjA1LCAxMTIsIDIxMiwgCisgICAgMjI1LCAyMDksIDEzOCwgMjMsIDIwNSwgMTEyLCAyMTIsIDIyNSwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjUsIAorICAgIDI1MSwgMTA2LCAyMywgMjA1LCAxMTIsIDIxMCwgOTUsIDIzLCAyMDUsIDExMiwgMjUwLCAyMTUsIDIwOCwgMjE4LCAyMDksIAorICAgIDEzOCwgMjMsIDIwNSwgMTEyLCAyNTAsIDIxNSwgMjA4LCAyMTgsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTIsIDI1MCwgMjE1LCAKKyAgICAyMDgsIDIxOCwgMjA1LCA4MiwgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjUwLCAxMTYsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAyMjUsIDY4LCAKKyAgICAyMywgMjIxLCA1MywgMjA1LCAxMzYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyMDUsIDEzNiwgMjIyLCA2NSwgMjMsIDIyMSwgCisgICAgNTMsIDIwNSwgMTM2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgMjA1LCAxMzYsIDIyNSwgNjgsIDIzLCAyMjEsIDUzLCAyNDgsIAorICAgIDIwNiwgMjUwLCAxMTYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjUwLCAxMTYsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUzLCAyNDgsIDIwNiwgMjUwLCAxMTYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjUwLCAxMTYsIAorICAgIDIyNSwgNjgsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjA1LCAxMzYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgCisgICAgMjA1LCAxMzYsIDIyMiwgNjUsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjA1LCAxMzYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAKKyAgICAyNDgsIDIwNiwgMjA1LCAxMzYsIDIyNSwgNjgsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMjIsIDY1LCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIyNSwgCisgICAgNzAsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjI1LCA2OCwgMjMsIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDAsIAorICAgIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTIsIDUzLCAyMDgsIDY3LCAyMywgMjIxLCA1MiwgNTMsIDIwMCwgMjIwLCAyMzcsIAorICAgIDM4LCAyMywgMjIxLCA1MiwgNTMsIDI1MSwgMTA2LCAyMywgMjIxLCA1MiwgNTMsIDI1MSwgMTA3LCAyMDAsIDIyMCwgMjM3LCAKKyAgICAzOCwgMjMsIDIyMSwgNTIsIDI0MiwgMjM0LCAyMywgMjIxLCA1MiwgMjA1LCA4MywgMjA4LCA2OCwgMjIxLCA1NCwgMjMsIAorICAgIDIyMSwgNTIsIDIwNSwgODMsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MiwgMjA1LCA4MywgMjUxLCAxMDcsIDIyMSwgCisgICAgNTQsIDIzLCAyMjEsIDUyLCAyMDUsIDgzLCAyNTEsIDEwNywgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUyLCAyNDgsIAorICAgIDIyMiwgMjMsIDIyMSwgNTIsIDI0MywgMTYsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyNDMsIDE2LCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MiwgMjQzLCAxNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDI0NywgNiwgMjMsIDIyMSwgNTIsIDEwMCwgMjA5LCAKKyAgICA1MywgMjMsIDIyMSwgNTIsIDEwMCwgMjIyLCA2NSwgMjMsIDIyMSwgNTIsIDEwMCwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIAorICAgIDE5OSwgMjcsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAxOTksIDI3LCAyMjIsIDY1LCAyMywgMjIxLCA1MiwgMTk5LCAyNywgCisgICAgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDIxNiwgNjksIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyMTYsIDY5LCAyMjIsIDY1LCAKKyAgICAyMywgMjIxLCA1MiwgMjE2LCA2OSwgMjI1LCA3MCwgMjMsIDIwNSwgMTEzLCAyMTIsIDIyNSwgMjA5LCAxMzgsIDIzLCAyMDUsIAorICAgIDExMywgMjEyLCAyMjUsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTMsIDIxMiwgMjI1LCAyNTEsIDEwNiwgMjMsIDIwNSwgMTEzLCAKKyAgICAyMTIsIDIyNCwgMjA5LCAxMzgsIDIzLCAyMDUsIDExMywgMjEyLCAyMjQsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTMsIDIxMiwgCisgICAgMjI0LCAyNTEsIDEwNiwgMjMsIDIwNSwgMTEzLCAyMTAsIDk1LCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIxNCwgODgsIAorICAgIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjE0LCA4OCwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAKKyAgICAyMTQsIDg4LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIxNCwgODgsIDIyNSwgNjgsIDIzLCAyMjEsIDUwLCAKKyAgICAyNDIsIDE5MCwgMjM0LCAyMTIsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAyMTIsIDIyMiwgNjUsIAorICAgIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAyMTIsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAKKyAgICAyMTIsIDIyNSwgNjgsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjA2LCA0MCwgMjQ2LCAxNTYsIDIwOSwgNTMsIDIzLCAyMjEsIAorICAgIDUwLCAyNDIsIDE5MCwgMjA2LCA0MCwgMjQ2LCAxNTYsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMDksIDUzLCAKKyAgICAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIyNSwgNzAsIDIzLCAyMjEsIAorICAgIDUwLCAyMjQsIDc1LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjI0LCA3NSwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDIyNCwgCisgICAgNzUsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyMjQsIDc1LCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIAorICAgIDI0MiwgMTkwLCA1MywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCA1MywgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCA1MywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCAKKyAgICAyMDUsIDgzLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIDIwNSwgODMsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgMjA1LCA4MywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMDYsIAorICAgIDk4LCAyMDgsIDY3LCAyMywgMjIxLCA1MCwgMjQyLCAxODgsIDI0MiwgMjM1LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQyLCAKKyAgICAxODgsIDI0MiwgMjM1LCAyMjIsIDY1LCAyMywgMjEyLCAyMjQsIDIwOSwgMTM4LCAyMywgMjEyLCAyMjQsIDIzOSwgMTc1LCAKKyAgICAyMywgMjEyLCAyMjQsIDI1MSwgMTA4LCAyMywgMjIxLCA1MCwgMjEwLCA5NSwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIAorICAgIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAKKyAgICAxMDIsIDIzLCAyMjEsIDUwLCAyMjQsIDc1LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMjEsIDUwLCAyMDEsIAorICAgIDc4LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMTIsIDIyNCwgMjA5LCAxMzksIDIzNCwgNDQsIDIzNiwgCisgICAgMjAwLCAyMDEsIDEwMiwgMjMsIDIxMiwgMjI0LCA1MywgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjEyLCAKKyAgICAyMjQsIDI1MSwgMTA3LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAKKyAgICA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIyMSwgNTAsIDIyNCwgCisgICAgNzUsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMTIsIAorICAgIDIyNCwgMjA5LCAxMzksIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjEyLCAyMjQsIDUzLCAyMzQsIDQ0LCAyNDYsIDI0MywgCisgICAgMjMsIDIxMiwgMjI0LCAyNTEsIDEwNywgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDEsIDcxLCAKKyAgICAyMTYsIDkxLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQxLCA3MSwgMjE2LCA5MSwgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTAsIDIwMSwgNzgsIDI0MSwgNzEsIDIxNiwgOTEsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCAKKyAgICA0NCwgMjQ3LCA2NSwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcwLCAKKyAgICAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjQ3LCA2NSwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIAorICAgIDg1LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIAorICAgIDI0NywgNjUsIDQsIDIwNSwgODIsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcxLCAKKyAgICAyMDUsIDgyLCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjQ3LCA2NSwgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIAorICAgIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIAorICAgIDIzNCwgNDQsIDI0NywgNjUsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjQ3LCA2NSwgCisgICAgMjI1LCA3MSwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MiwgMjAxLCA3OCwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MCwgMjMsIDIxMiwgMjI1LCAyMDksIDEzOSwgMjM0LCAKKyAgICA0NCwgMjQ3LCA2NCwgMjMsIDIxMiwgMjI1LCA1MywgMjM0LCA0NCwgMjQ3LCA2NCwgMjMsIDIxMiwgMjI1LCAyNTEsIDEwNywgCisgICAgMjM0LCA0NCwgMjQ3LCA2NCwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MiwgMjQyLCAxOTAsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIAorICAgIDQ0LCAyMzcsIDMyLCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgCisgICAgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjA1LCA4MywgNCwgMjA1LCAKKyAgICA4MiwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDIzNywgMzIsIDIwNSwgODMsIDIyNSwgNzEsIDIwNSwgODIsIAorICAgIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyMzcsIDMyLCA0LCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDIyNCwgCisgICAgNzUsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgCisgICAgMjM3LCAzMiwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcxLCAKKyAgICAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIzNCwgNDQsIDIzNywgMzIsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAKKyAgICAyMDEsIDc4LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcwLCAyMywgMjEyLCAyMjUsIDIwOSwgMTM5LCAyMzQsIDQ0LCAyMzcsIAorICAgIDMxLCAyMywgMjEyLCAyMjUsIDUzLCAyMzQsIDQ0LCAyMzcsIDMxLCAyMywgMjEyLCAyMjUsIDI1MSwgMTA3LCAyMzQsIDQ0LCAKKyAgICAyMzcsIDMxLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjIyLCA2NSwgCisgICAgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIyNSwgNjgsIDIzLCAyMjEsIAorICAgIDUyLCAyNDIsIDE5MCwgMjQ2LCA3NCwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyMjQsIAorICAgIDc1LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjA5LCA0MSwgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIwOSwgCisgICAgNTMsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMjUsIDcwLCAyMywgMjEyLCAyMjUsIDIwOSwgMTM4LCAyMywgMjEyLCAyMjUsIAorICAgIDIzOSwgMTc1LCAyMywgMjEyLCAyMjUsIDI1MSwgMTA2LCAyMywgMjIxLCA1MiwgMjEwLCA5NiwgMjE2LCAxMjAsIDIzLCAKKyAgICAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMjIsIDY2LCAyMDksIDEzOCwgMjMsIDIyMSwgNTAsIDI1MCwgMjE1LCAyNDYsIDE1NiwgNCwgMjM5LCAxNzUsIDIzLCAKKyAgICAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIDIyMiwgNjYsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIAorICAgIDI0NiwgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAKKyAgICAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjIsIDY2LCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIAorICAgIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjIsIDY2LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIDE1NiwgCisgICAgMjM0LCA0NCwgMjAxLCAxMDMsIDIyNSwgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MCwgMjAwLCAyMjAsIDI0NiwgMTU2LCAKKyAgICAyMzYsIDIwMCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyMDAsIDIyMCwgMjQ2LCAxNTYsIDIzNiwgMjAwLCAyMzksIDE3NSwgCisgICAgMjMsIDIyMSwgNTIsIDIwMCwgMjIwLCAyNDYsIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIwOSwgMTM4LCAyMywgMjIxLCAKKyAgICA1MiwgMjAwLCAyMjAsIDI0NiwgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgMjM5LCAxNzUsIDIzLCAyMjEsIDUwLCAyMzcsIAorICAgIDg3LCAyNDYsIDE1MywgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyMzcsIDg3LCAyNDYsIDE1MywgMjM5LCAxNzUsIDIzLCAKKyAgICAyMjEsIDUyLCAyMzcsIDg3LCAyNDYsIDE1MywgMjM0LCA0NCwgMjAxLCAxMDMsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgCisgICAgMjM3LCA4NywgMjQ2LCAxNTMsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMzksIDE3NSwgMjMsIDIzOSwgOTgsIDI1MCwgMjAzLCAKKyAgICAyMDksIDUzLCAyMywgMjM5LCA5OCwgMjUwLCAyMDMsIDIyNSwgNzAsIDIzLCAyMzksIDk4LCAyMzcsIDE2MSwgMjMsIDIzOSwgCisgICAgOTgsIDIwOSwgNTYsIDIzLCAyMzksIDk4LCAyMDYsIDE1OSwgMjMsIDIzOSwgOTgsIDIxMywgMTQ3LCAyMywgMjM5LCA5OCwgCisgICAgMjA5LCAxNDQsIDIzLCAyMzksIDk4LCAyMDksIDE0NSwgMjUxLCAxMDYsIDIzLCAyMzksIDk4LCAyMzgsIDUyLCAyMTcsIDgsIAorICAgIDIwNSwgMjM0LCAyMywgMjM5LCA5OCwgMjM1LCA4OCwgMjMsIDIzNCwgMTM2LCAyMywgMjM0LCAxMzcsIDIxMywgMzEsIDIzLCAKKyAgICAyMzQsIDEzNywgMjIxLCA1MCwgMjA4LCA2NywgMjMsIDIzNCwgMTM3LCAyMjEsIDUwLCAyMDUsIDIzNywgMjMsIDIzNCwgCisgICAgMTM3LCAyMjEsIDUyLCAyMDgsIDY3LCAyMywgMjM0LCAxMzcsIDIyMSwgNTAsIDI0MiwgMTg5LCAyMywgMjM0LCAxMzcsIAorICAgIDIyMSwgNTIsIDI0MiwgMTg5LCAyMywgMjM0LCAxMzcsIDIyMSwgNTUsIDI0NiwgMTU1LCAyMywgMjM3LCAxOTAsIDI0MSwgOSwgCisgICAgMjE1LCA3MCwgMjE4LCAyMTcsIDIzNiwgMjM0LCAyMDUsIDIzNSwgMjMsIDIzNywgMTkwLCAyNDEsIDksIDIxNSwgNzAsIAorICAgIDIxOCwgMjE3LCAxMTUsIDIxNywgMzQsIDIzOSwgMTY3LCAyMywgMjM3LCAxOTAsIDI0MSwgOSwgMjE1LCA3MCwgMjE4LCAKKyAgICAyMTcsIDExNSwgMjE3LCAzNCwgMTI3LCAyMDUsIDIzNSwgMjMsIDIzOCwgMjEsIDIwOCwgNjgsIDIwMywgMjI4LCAyMywgCisgICAgMjM4LCAyMSwgMjA4LCA2OCwgMjIwLCA5LCAyMywgMjM4LCAyMSwgMjA4LCA2OCwgMjM5LCAxNjcsIDIzLCAyMzksIDE1NCwgCisgICAgMjM4LCAyMSwgMjIwLCAxMCwgMjM5LCAxNjcsIDIzLCAyMzksIDE1NCwgMjM4LCAyMSwgMTI3LCAyMjAsIDksIDIzLCAyMzksIAorICAgIDE1NCwgMjM4LCAyMSwgMTE1LCAyMjAsIDksIDIzLCAyMzksIDE1NCwgMjM4LCAyMSwgMjIwLCAxMCwgMjAzLCAyMjgsIDIzLCAKKyAgICAyMzYsIDI0NywgMjIwLCA5LCAyMywgMjM2LCAyNDcsIDI0MywgNDcsIDIzLCAyMzYsIDI0NywgMjAwLCAyMjMsIDIzLCAyMzgsIAorICAgIDE2LCAyMTcsIDUzLCAyMywgMjM4LCAxNiwgMjA4LCAxODgsIDIzLCAyMzgsIDE2LCAyNDYsIDEwOSwgMjMsIDIzOCwgMjMsIAorICAgIDI0OCwgMTM1LCAyMDksIDEzOCwgMjMsIDIzOCwgMjMsIDI0OCwgMTM1LCAyMjEsIDIwLCAyMywgMjM4LCAxNiwgMTY3LCAKKyAgICAyMTcsIDUzLCAyMywgMjM4LCAxNiwgMjAxLCAyOCwgMjE3LCA1MywgMjMsIDIzOCwgMTYsIDE2NywgMjQ2LCAxMDksIDIzLCAKKyAgICAyMzgsIDE2LCAyMDEsIDI2LCAyMjEsIDU0LCAyMywgMjM4LCAyMywgMjAxLCA5LCAyMywgMjM4LCAxNywgMjAzLCAyMjgsIAorICAgIDIzLCAyMzgsIDE3LCAyMzksIDE2NywgMjMsIDIzOCwgMTcsIDIzNywgMTgsIDIzLCAyMzgsIDE5LCAyMDgsIDY3LCAyMywgCisgICAgMjM4LCAxOSwgMjA4LCA2OCwgMjM5LCAxNzUsIDIzLCAyMzgsIDE5LCAyMDgsIDY4LCAyNTEsIDEwNiwgMjMsIDIzOCwgMjAsIAorICAgIDIwOCwgNjcsIDIzLCAyMzgsIDIwLCAyMDgsIDY4LCAyMzksIDE3NSwgMjMsIDIzOCwgMjAsIDIwOCwgNjgsIDI1MSwgMTA2LCAKKyAgICAyMywgMjM4LCAxOSwgMjQyLCAxODcsIDIzLCAyMzgsIDIwLCAyNDIsIDE4NywgMjMsIDIzOCwgMTksIDI0NiwgMTUwLCAyMywgCisgICAgMjQ3LCAyLCAyMTQsIDIxNSwgMjMsIDI0NywgMiwgMjIwLCA5LCAyMywgMjQ3LCAyLCAyMDcsIDI0OCwgMjMsIDIwNiwgMTYwLCAKKyAgICAyNDcsIDIsIDIzNCwgNTksIDIzLCAyMDYsIDE2MCwgMjQ3LCAyLCAyMjEsIDIwNCwgMjMsIDIwNiwgMTYwLCAyNDcsIDIsIAorICAgIDIyNCwgNTksIDIzLCAyMzksIDE5LCAyMywgMjE4LCAyMTcsIDIyMCwgOSwgMjMsIDIxOCwgMjE3LCAyNDMsIDQ3LCAyMywgCisgICAgMjE4LCAyMTcsIDIwMCwgMjIxLCAyMywgMjE4LCAyMTcsIDIwMSwgMjMsIDIzLCAyNTEsIDE2NywgMjQ4LCAxMjgsIDIxNiwgCisgICAgMjU0LCAyMywgMjUxLCAxNjcsIDIwNywgMjQ3LCAyMjgsIDExNywgMjMsIDI1MSwgMTY3LCAyNDgsIDEzMCwgNCwgMjEyLCAKKyAgICAyMjMsIDIzLCAyNTEsIDE2NywgMjA3LCAyNDksIDQsIDIxMiwgMjIzLCAyMywgMjQ4LCA1OSwgMjI4LCA4OSwgMjMsIDI0OCwgCisgICAgNTksIDIzOCwgNDEsIDIzLCAyMjEsIDU5LCAyNDYsIDExMCwgMjIwLCA5LCAyMywgMjIxLCA1OSwgMjQ2LCAxMTAsIDIzNiwgCisgICAgMjMzLCAyMywgMjIxLCA1OSwgMjQ2LCAxMTAsIDI0MywgNDcsIDIzLCAyMjEsIDU5LCAyMDksIDQ4LCAyMywgMjIxLCA1OSwgCisgICAgMjA5LCA0OSwgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAyMDksIDQ5LCAyMTcsIDUzLCAyMywgMjIxLCA1OSwgMjM2LCAxOTYsIAorICAgIDIzLCAyMjEsIDU5LCAyMzYsIDE5NywgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAyMzYsIDE5NywgMjE3LCA1MywgMjMsIDIyMSwgCisgICAgNTksIDE3NiwgMjQ2LCAxNTUsIDIzLCAyMjEsIDU5LCAxNzYsIDIzNiwgMjMzLCAyMywgMjIxLCA1OSwgMTc2LCAyMDAsIAorICAgIDIyMywgMjMsIDIyMSwgNTksIDE3NiwgMjE2LCAyNDcsIDIzLCAyMjEsIDU5LCAxNzYsIDIxNiwgMjQ4LCAyMDAsIDIyMywgCisgICAgMjMsIDIyMSwgNTksIDE3NiwgMjE2LCAyNDgsIDIwMCwgNTgsIDIzLCAyMjEsIDU5LCAxNzYsIDIxMywgMTc1LCAyMywgMjIxLCAKKyAgICA1OSwgMTc2LCAyMTMsIDE3NiwgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAxNzYsIDIxMywgMTc2LCAyMDAsIDU4LCAyMywgCisgICAgMjIxLCA1OSwgMjI2LCAxMjksIDIzLCAyMjEsIDU5LCAyMjYsIDEzMCwgMjM2LCAyMzMsIDIzLCAyMjEsIDU5LCAyMjYsIAorICAgIDEzMCwgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAyMDYsIDE1OSwgMjMsIDIyMSwgNTksIDIwNiwgMTYwLCAyMzYsIDIzMywgCisgICAgMjMsIDIyMSwgNTksIDIwNiwgMTYwLCAyMDcsIDI0OCwgMjMsIDIyNCwgMTYxLCAyMTUsIDE3LCAyMDUsIDE4MiwgMjMsIAorICAgIDIyNCwgMTYzLCAyMjQsIDU0LCAxMTksIDIwMywgMjI0LCAyMywgMjI0LCAxNjMsIDIwMywgMjI1LCAxMTksIDIyNCwgNTMsIAorICAgIDIzLCAyMjEsIDU5LCAyNDMsIDE0LCAyMywgMjIxLCA1OSwgMjAwLCAyMjIsIDIwOSwgMTM4LCAyMywgMjIxLCA1OSwgMjAwLCAKKyAgICAyMjIsIDIzOSwgMTc1LCAyMywgMjA1LCAxNjQsIDIwOCwgODcsIDIxNiwgMjU1LCAyMzcsIDE2MywgMjMsIDIwNSwgMTY0LCAKKyAgICAyMjQsIDIwNiwgMjI0LCAxNjAsIDIzLCAyMDUsIDE2NCwgMjA1LCAyMjQsIDI0OCwgMjA2LCAyMjQsIDE2MCwgMjMsIDIwNSwgCisgICAgMTY0LCAyMDUsIDIyNCwgMjA1LCAxNDAsIDIyOCwgNzQsIDIyMSwgNTgsIDIzLCAyMDUsIDE2NCwgMjI4LCA3NCwgMjIxLCAKKyAgICA1OSwgMjEzLCAxNDcsIDIzLCAyMDUsIDE2NCwgMjIxLCA0OSwgMjUxLCAxOTEsIDI0NywgMywgMjMsIDIwNSwgMTY0LCAyNDcsIAorICAgIDU2LCAyMDgsIDg3LCAyMTYsIDI1NCwgMjMsIDIwNSwgMTY0LCAyNDcsIDU2LCAyMjgsIDc0LCAyMjEsIDU4LCAyMywgMjA2LCAKKyAgICAxODYsIDIzLCAyMDYsIDE4NywgMjIxLCA1NCwgMjMsIDIwNiwgMTg3LCAyMTcsIDc5LCAyMDUsIDE2MywgMjMsIDIwNiwgCisgICAgMTg3LCAyMTcsIDc5LCAyMDUsIDE2NCwgMjIxLCA1NCwgMjMsIDIwNiwgMTg3LCAyMTcsIDc5LCAyMjQsIDE2MCwgMjMsIAorICAgIDIwNiwgMTg3LCAyMTcsIDc5LCAyMjQsIDE2MSwgMjIxLCA1NCwgMjMsIDIwNiwgMTg3LCAyNDgsIDE1MSwgMjI0LCAxNjAsIAorICAgIDIzLCAyMjEsIDUwLCAyMjcsIDIzMSwgMjMsIDIyMSwgNTIsIDIyNywgMjMxLCAyMywgMjIwLCAzMSwgMjMsIDIzNCwgMjIxLCAKKyAgICAyMywgMjM4LCA0NCwgMjMsIDIwOSwgMjMzLCAyMzQsIDQ5LCAyMDgsIDIxOSwgMjMsIDIwOSwgMjMzLCAyMzQsIDQ5LCAyMTUsIAorICAgIDY5LCAyMywgMjAxLCAxMDEsIDIwOSwgMjMzLCAyMzQsIDQ5LCAyMjEsIDU3LCAyMywgMjM3LCAzMCwgMjA5LCAyMzMsIDIzNCwgCisgICAgNDksIDIyMSwgNTcsIDIzLCAyMDksIDIzMywgMjA1LCAyMzYsIDIzNiwgMjAxLCAyMDEsIDEwNywgMjMsIDIwNSwgMTQ3LCAKKyAgICAyMDgsIDY4LCAyMDgsIDU2LCAyMywgMjA1LCAxNDcsIDI0MiwgMTg4LCAyNDgsIDIyMiwgMjMsIDIwNSwgMTQ4LCAyMDQsIAorICAgIDE0NCwgMjMsIDIwMywgMjI1LCAyNDgsIDExOSwgMjA1LCAyMzYsIDIzNiwgMjAxLCAyMzQsIDQ5LCAyMjcsIDE2MCwgMjMsIAorICAgIDIyNCwgMTg4LCAyNDYsIDc1LCAyMywgMjI0LCAxODgsIDIyNSwgMSwgMjMsIDIyNCwgMTg4LCAyMjUsIDAsIDIzLCAyMjQsIAorICAgIDE4OCwgMjI0LCAyNTUsIDIzLCAyMjQsIDE4OCwgMjI0LCAyNTQsIDIzLCAyMjQsIDE4OCwgMjI0LCAyNTMsIDIzLCAyMjQsIAorICAgIDE4OCwgMjI0LCAyNTIsIDIzLCAyMjQsIDE4OCwgMjI0LCAyNTEsIDIzLCAyMzcsIDg2LCAyMywgMjI0LCAxMDYsIDIwOCwgCisgICAgMjQ0LCAyMywgMjI0LCAxMDcsIDIwOCwgMjQ0LCAyMywgMjI0LCAxMDgsIDIzNCwgMTEzLCAyMywgMjI0LCAxMDgsIDIwMSwgCisgICAgMjQsIDIzLCAyMjQsIDEwOCwgMjQxLCAxMjMsIDIzLCAyMjQsIDEwOCwgMjM0LCAxMzcsIDIyMCwgMzEsIDIzLCAyMjQsIAorICAgIDEwOCwgMjA1LCAxNDksIDIzLCAyMjQsIDEwOCwgMjI0LCAxODcsIDI0MSwgNDEsIDIzLCAyNDYsIDcwLCAyMywgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDIzLCAyMTAsIDE2NywgMjMsIDI0NiwgNzksIDIzLCAyMTYsIDExNSwgMjMsIDIzNywgOTYsIDIyMSwgCisgICAgMTE4LCAyMywgMjM3LCA5NiwgMjIxLCAxMTcsIDIzLCAyMzcsIDk2LCAyMjEsIDExNiwgMjMsIDIzNywgOTYsIDIyMSwgMTE1LCAKKyAgICAyMywgMjM3LCA5NiwgMjIxLCAxMTQsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTgsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTcsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMTYsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTUsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTQsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMTMsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTIsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTEsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMjUsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjQsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjMsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMjIsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjEsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjAsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMTksIDM4LCAxMTYsIDEsIDI1MCwgMTA0LCAzOCwgMTE2LCAxLCAyNDgsIDI0LCAzOCwgCisgICAgMTE2LCAxLCAyMDMsIDU3LCAzOCwgMTE2LCAxLCAyMzUsIDEzMCwgMzgsIDExNiwgMSwgMjQwLCAyMDYsIDM4LCAxMTYsIDEsIAorICAgIDIwMCwgMjMsIDM4LCAxMTYsIDEsIDE5OSwgNjEsIDM4LCAxMTYsIDEsIDE5OSwgODYsIDM4LCAxMTYsIDEsIDIyNywgMjU1LCAKKyAgICAzOCwgMTE2LCAxLCA4MiwgMjI3LCAyNTUsIDM4LCAxMTYsIDEsIDcwLCAzOCwgMTE2LCAxLCAyNDAsIDIyNiwgMzgsIDExNiwgCisgICAgMSwgMjI3LCA3NCwgMzgsIDExNiwgMSwgMjI0LCAxNDAsIDM4LCAxMTYsIDEsIDIyMCwgMjE4LCAzOCwgMTE2LCAxLCAyMjAsIAorICAgIDEyMCwgMzgsIDExNiwgMSwgMjE3LCA2NSwgMzgsIDExNiwgMSwgMjE1LCA5MywgMzgsIDExNiwgMSwgMjEzLCAxOCwgMzgsIAorICAgIDExNiwgMSwgMjA5LCA1OCwgMzgsIDExNiwgMSwgMjA0LCAxNzEsIDM4LCAxMTYsIDEsIDIwNCwgMTYsIDM4LCAxMTYsIDEsIAorICAgIDIzNiwgMjA0LCAzOCwgMTE2LCAxLCAyMzQsIDk1LCAzOCwgMTE2LCAxLCAyMDksIDIyMywgMzgsIDExNiwgMSwgMjA1LCAxMSwgCisgICAgMzgsIDExNiwgMSwgMjQ2LCAxOTgsIDM4LCAxMTYsIDEsIDIxMCwgMTE0LCAzOCwgMTE2LCAxLCAyMDAsIDI5LCAzOCwgMTE2LCAKKyAgICAxLCAyMDAsIDMxLCAzOCwgMTE2LCAxLCAyMDAsIDYzLCAzOCwgMTE2LCAxLCAxOTksIDIxMSwgMzgsIDExNiwgMSwgNCwgCisgICAgMTk5LCAxODEsIDM4LCAxMTYsIDEsIDE5OSwgMjQ1LCAzOCwgMTE2LCAxLCAyMjgsIDQwLCA0LCAxOTksIDE4MSwgMzgsIAorICAgIDExNiwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzOCwgMTE2LCAxLCAyMjgsIDQwLCAyNDgsIDE3NSwgMTk5LCAxODEsIDM4LCAKKyAgICAxMTYsIDEsIDIzNywgNjMsIDc4LCA3NywgNSwgMjIzLCAyNDIsIDIyNiwgMTYzLCA3OCwgNzcsIDUsIDIyMywgMjM4LCAxNjEsIAorICAgIDc4LCA3NywgNSwgMjIzLCAyMzYsIDIyNiwgMTUsIDc4LCA3NywgNSwgMjIzLCAxMTIsIDIyNywgNSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDgyLCAyMjcsIDgsIDc4LCA3NywgNSwgMjIzLCAxMDEsIDIyNiwgNjgsIDc4LCA3NywgNSwgMjIzLCAxMjksIDIyNiwgCisgICAgODgsIDc4LCA3NywgNSwgMjIyLCAyNTQsIDIyNiwgOSwgNzgsIDc3LCA1LCAyMjMsIDIzMywgMjAxLCAzMSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDIzMSwgMjAxLCAxMTQsIDc4LCA3NywgNSwgMjIzLCAyMjksIDIwMCwgMjE2LCA3OCwgNzcsIDUsIDIyMywgNTEsIAorICAgIDIwMSwgNTcsIDc4LCA3NywgNSwgMjIzLCA1OSwgMjAxLCA2NCwgNzgsIDc3LCA1LCAyMjMsIDYzLCAyMDAsIDI0NCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDEzMiwgMjAxLCAwLCA3OCwgNzcsIDUsIDIyMiwgMjM5LCAyMDAsIDIxMiwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDM0LCAyMDEsIDU1LCA3OCwgNzcsIDUsIDIyMywgMTE2LCAyMDAsIDIwMCwgNzgsIDc3LCA1LCAyMjMsIDEyOCwgMjAwLCAKKyAgICAyMDIsIDc4LCA3NywgNSwgMjIzLCAzOCwgMjAwLCAyMDEsIDc4LCA3NywgNSwgMjIzLCAyMjcsIDIyMSwgMTY0LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMjI1LCAyMjIsIDE4MCwgNzgsIDc3LCA1LCAyMjMsIDIyMywgMjIxLCAxNCwgNzgsIDc3LCA1LCAyMjMsIDExOCwgCisgICAgMjIyLCA0MCwgNzgsIDc3LCA1LCAyMjMsIDgzLCAyMjEsIDEwNiwgNzgsIDc3LCA1LCAyMjMsIDIzLCAyMjEsIDM4LCA3OCwgCisgICAgNzcsIDUsIDIyMiwgMjQ0LCAyMjEsIDMyLCA3OCwgNzcsIDUsIDIyMywgMjIxLCAyNDgsIDE4OCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDIxOCwgMjQ5LCAxMzYsIDc4LCA3NywgNSwgMjIzLCAyMTYsIDI0OCwgMzYsIDc4LCA3NywgNSwgMjIzLCAyNywgMjQ4LCAKKyAgICAyNTIsIDc4LCA3NywgNSwgMjIzLCA4MCwgMjQ5LCA4LCA3OCwgNzcsIDUsIDIyMywgNzQsIDI0OCwgMTExLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMzksIDI0OCwgMTI0LCA3OCwgNzcsIDUsIDIyMywgMjA2LCA3MCwgNzgsIDc3LCA1LCAyMjMsIDIwNCwgNjIsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAyMDIsIDY2LCA3OCwgNzcsIDUsIDIyMywgMTQsIDIzOCwgMjU1LCA3OCwgNzcsIDUsIDIyMywgNzcsIAorICAgIDcyLCA3OCwgNzcsIDUsIDIyMywgMTIsIDIxNywgNjMsIDc4LCA3NywgNSwgMjIzLCAzMCwgNzQsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA0MCwgMjM4LCAyMzQsIDc4LCA3NywgNSwgMjIzLCA0NiwgMjI4LCAxMTcsIDc4LCA3NywgNSwgMjIzLCA0MiwgMjI4LCAxMTcsIAorICAgIDc4LCA3NywgNSwgMjIyLCAyMzgsIDI1MSwgODUsIDc4LCA3NywgNSwgMjIyLCAyNTUsIDIzOCwgMTc5LCA3OCwgNzcsIDUsIAorICAgIDIyMywgMTkxLCAyMDksIDE4MiwgNzgsIDc3LCA1LCAyMjMsIDE4OSwgMjEyLCA2NCwgNzgsIDc3LCA1LCAyMjMsIDE4NywgCisgICAgMjA4LCAyNCwgNzgsIDc3LCA1LCAyMjMsIDE1LCAyMTEsIDE5MCwgNzgsIDc3LCA1LCAyMjMsIDYxLCAyMTEsIDIwMiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDQxLCAyMDksIDEwLCA3OCwgNzcsIDUsIDIyMywgOTgsIDIwOSwgMjksIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyMzcsIDIwOSwgMTgxLCA3OCwgNzcsIDUsIDIyMywgMTc3LCAyMjQsIDIxMCwgNzgsIDc3LCA1LCAyMjMsIDE3NSwgMTk0LCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMTczLCAyMjQsIDQyLCA3OCwgNzcsIDUsIDIyMywgOTMsIDIyNSwgMzIsIDc4LCA3NywgNSwgCisgICAgMjIzLCAxMDQsIDIyNSwgNDAsIDc4LCA3NywgNSwgMjIzLCAxMjMsIDIyNCwgNzgsIDc4LCA3NywgNSwgMjIzLCAyNCwgMjI0LCAKKyAgICAxMTAsIDc4LCA3NywgNSwgMjIzLCA2NywgMTY4LCAyMjUsIDQwLCA3OCwgNzcsIDUsIDIyMywgMTk5LCAyNDEsIDc2LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTk2LCAyNDIsIDU4LCA3OCwgNzcsIDUsIDIyMywgMTkzLCAyMzksIDEzNywgNzgsIDc3LCA1LCAyMjMsIAorICAgIDg4LCAyNDEsIDE2MSwgNzgsIDc3LCA1LCAyMjIsIDI1MywgMjQwLCAxODcsIDc4LCA3NywgNSwgMjIyLCAyNTIsIDI0MCwgCisgICAgMjExLCA3OCwgNzcsIDUsIDIyMywgMTg1LCAyMDYsIDE1LCA3OCwgNzcsIDUsIDIyMywgMTgyLCAyMDcsIDM2LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMTgwLCAyMDQsIDIxNSwgNzgsIDc3LCA1LCAyMjMsIDg2LCAyMDYsIDE5MCwgNzgsIDc3LCA1LCAyMjMsIDEyMiwgCisgICAgMjA2LCAyMDEsIDc4LCA3NywgNSwgMjIzLCA3MywgMjA1LCAxNjEsIDc4LCA3NywgNSwgMjIzLCAxMDgsIDEzOCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDE3MSwgMjI3LCAyMDcsIDc4LCA3NywgNSwgMjIzLCAxNjgsIDIyNywgMjQ4LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTY2LCAyMjcsIDE0NywgNzgsIDc3LCA1LCAyMjMsIDIwLCAyMjcsIDIyNSwgNzgsIDc3LCA1LCAyMjMsIDY0LCAyMjcsIAorICAgIDIyNywgNzgsIDc3LCA1LCAyMjMsIDE3LCAyMjcsIDE1NiwgNzgsIDc3LCA1LCAyMjMsIDExNCwgMjI3LCAxNjYsIDc4LCA3NywgCisgICAgNSwgMjIzLCAyLCAxNjgsIDIyNywgMTY2LCA3OCwgNzcsIDUsIDIyMywgMTY0LCAyMDAsIDksIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxNjEsIDE4MywgNzgsIDc3LCA1LCAyMjMsIDE1OSwgMTk5LCAyMTEsIDc4LCA3NywgNSwgMjIzLCA2OCwgMjAwLCA0OCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDk3LCAyMDAsIDUxLCA3OCwgNzcsIDUsIDIyMywgMzYsIDE5OSwgMjMwLCA3OCwgNzcsIDUsIDIyMywgCisgICAgNTYsIDE5OSwgMjQ1LCA3OCwgNzcsIDUsIDIyMywgMTU1LCAyMzcsIDExMiwgNzgsIDc3LCA1LCAyMjMsIDE1MywgMjM3LCAKKyAgICAxOTUsIDc4LCA3NywgNSwgMjIzLCAxNTEsIDIzNiwgMTg5LCA3OCwgNzcsIDUsIDIyMywgOTksIDIzNywgMTQwLCA3OCwgNzcsIAorICAgIDUsIDIyMywgMTAyLCAyMzcsIDE0NywgNzgsIDc3LCA1LCAyMjMsIDQ0LCAyMzcsIDIsIDc4LCA3NywgNSwgMjIzLCA4OSwgCisgICAgMjM3LCAxMywgNzgsIDc3LCA1LCAyMjIsIDIzNiwgMjM2LCAxODgsIDc4LCA3NywgNSwgMjIzLCA3NiwgMjM3LCAxNjgsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxNDksIDIxOSwgMTE4LCA3OCwgNzcsIDUsIDIyMywgMTQ3LCAyMjAsIDEzNCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDE0NSwgMjE4LCA4OSwgNzgsIDc3LCA1LCAyMjMsIDYwLCAyMjAsIDI0LCA3OCwgNzcsIDUsIDIyMywgOCwgMjE4LCAyMzQsIAorICAgIDc4LCA3NywgNSwgMjIzLCAxLCAyMzQsIDc1LCA3OCwgNzcsIDUsIDIyMywgMTQwLCAxNDQsIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyNDcsIDIzMywgOTcsIDc4LCA3NywgNSwgMjIzLCAxNDMsIDIzNCwgMTIwLCA3OCwgNzcsIDUsIDIyMywgODEsIDIzNCwgCisgICAgMTM5LCA3OCwgNzcsIDUsIDIyMywgMTM4LCAyMzMsIDE4OCwgNzgsIDc3LCA1LCAyMjMsIDM3LCAyMzMsIDIwNywgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDk0LCAyMzQsIDExOSwgNzgsIDc3LCA1LCAyMjMsIDQ5LCAyMzMsIDE4MSwgNzgsIDc3LCA1LCAyMjMsIDEyNCwgCisgICAgMjM0LCA1MywgNzgsIDc3LCA1LCAyMjMsIDQ3LCAyMzQsIDIwMiwgNzgsIDc3LCA1LCAyMjMsIDkwLCAyMzMsIDg0LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTI1LCAyMzQsIDEwNSwgNzgsIDc3LCA1LCAyMjIsIDI0MCwgMjMzLCAxOTEsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxMzEsIDIzMywgOTYsIDc4LCA3NywgNSwgMjIzLCA4NywgMjE5LCAyMTgsIDc4LCA3NywgNSwgMjIzLCAxMzYsIDIxOSwgCisgICAgMjMyLCA3OCwgNzcsIDUsIDIyMywgOTUsIDIxOSwgMjE1LCA3OCwgNzcsIDUsIDIyMywgNjIsIDIxOSwgMjI2LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMzEsIDIxOSwgMjI3LCA3OCwgNzcsIDUsIDIyMywgMjEsIDIxOSwgMjE2LCA3OCwgNzcsIDUsIDIyMywgNTcsIAorICAgIDIxOSwgMjE3LCA3OCwgNzcsIDUsIDIyMywgMTgsIDIxOSwgMjMxLCA3OCwgNzcsIDUsIDIyMywgNTAsIDIxOSwgMjE0LCA3OCwgCisgICAgNzcsIDUsIDIyMywgOTEsIDE2OCwgMjE5LCAyMjcsIDc4LCA3NywgNSwgMjIzLCA3MSwgMTY4LCAyMTksIDIxNiwgNzgsIDc3LCAKKyAgICA1LCAyMjIsIDI1MCwgMTY4LCAyMTksIDIxNywgNzgsIDc3LCA1LCAyMjMsIDIyLCAyMzUsIDE2MSwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDY2LCAyMzYsIDg5LCA3OCwgNzcsIDUsIDIyMywgOSwgMjM1LCA1MCwgNzgsIDc3LCA1LCAyMjIsIDI0MywgMjM2LCA3LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTEsIDIzNSwgMzYsIDc4LCA3NywgNSwgMjIzLCAxMCwgMjM1LCA0NiwgNzgsIDc3LCA1LCAyMjIsIAorICAgIDI0OSwgMjE5LCAyMzcsIDc4LCA3NywgNSwgMjIzLCAxMjAsIDIxOSwgMTc0LCA3OCwgNzcsIDUsIDIyMywgMCwgMjE5LCAKKyAgICAxNjMsIDc4LCA3NywgNSwgMjIzLCAxMDksIDIxNSwgMjA0LCA3OCwgNzcsIDUsIDIyMywgNzgsIDE3MiwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDEyNywgMjE0LCAyMjQsIDc4LCA3NywgNSwgMjIzLCA5NiwgMjE2LCA2MSwgNzgsIDc3LCA1LCAyMjMsIDEyNiwgCisgICAgMjE2LCA3MywgNzgsIDc3LCA1LCAyMjMsIDc1LCAyMTUsIDgxLCA3OCwgNzcsIDUsIDIyMywgMTExLCAyMTUsIDEwNiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDMyLCAyMjIsIDk1LCA3OCwgNzcsIDUsIDIyMywgMTE1LCAyMjIsIDExMCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDU1LCAyMjIsIDg5LCA3OCwgNzcsIDUsIDIyMywgMTMwLCAyMjIsIDEwMiwgNzgsIDc3LCA1LCAyMjIsIDI0NSwgMjIyLCAKKyAgICAxMDIsIDc4LCA3NywgNSwgMjIzLCAxMDUsIDIyMiwgMTAzLCA3OCwgNzcsIDUsIDIyMywgNSwgMjIyLCA5MCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDMsIDIyMiwgOTEsIDc4LCA3NywgNSwgMjIyLCAyNDYsIDIyMiwgODMsIDc4LCA3NywgNSwgMjIzLCAxNiwgCisgICAgMTY4LCAyMjIsIDEwMywgNzgsIDc3LCA1LCAyMjMsIDcyLCAxNjgsIDIyMiwgOTAsIDc4LCA3NywgNSwgMjIzLCAzNSwgMTY4LCAKKyAgICAyMjIsIDkxLCA3OCwgNzcsIDUsIDIyMywgNDUsIDIyNiwgNDIsIDc4LCA3NywgNSwgMjIzLCA4NSwgMjI2LCA1MCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDEwMywgMjI2LCAzOCwgNzgsIDc3LCA1LCAyMjMsIDEzNCwgMjI2LCA0NSwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDY5LCAyMjYsIDQ2LCA3OCwgNzcsIDUsIDIyMywgNjUsIDIyNiwgNDAsIDc4LCA3NywgNSwgMjIzLCAxOSwgMjI2LCA0MSwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDUzLCAyMzYsIDI0LCA3OCwgNzcsIDUsIDIyMywgMTIxLCAyMzYsIDMyLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMjksIDIzNiwgMTksIDc4LCA3NywgNSwgMjIzLCA4NCwgMjM2LCAyOCwgNzgsIDc3LCA1LCAyMjMsIDcwLCAyMzYsIAorICAgIDI5LCA3OCwgNzcsIDUsIDIyMywgMTA2LCAyMzYsIDIwLCA3OCwgNzcsIDUsIDIyMywgMTA3LCAyMzYsIDIyLCA3OCwgNzcsIAorICAgIDUsIDIyMywgNiwgMjEzLCAyNTIsIDc4LCA3NywgNSwgMjIzLCA1NCwgMjIwLCA2MCwgNzgsIDc3LCA1LCAyMjMsIDQ4LCAKKyAgICAyMjAsIDc1LCA3OCwgNzcsIDUsIDIyMywgNTIsIDIyMCwgNDIsIDc4LCA3NywgNSwgMjIyLCAyNDIsIDIyMCwgNjYsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA1OCwgMjIwLCA2NywgNzgsIDc3LCA1LCAyMjMsIDExMCwgMjIwLCA0NywgNzgsIDc3LCA1LCAyMjMsIAorICAgIDExMywgMjIwLCA1MSwgNzgsIDc3LCA1LCAyMjMsIDI1LCAyMTksIDk4LCA3OCwgNzcsIDUsIDIyMiwgMjQxLCAyMTksIDY4LCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMjgsIDIxOSwgODksIDc4LCA3NywgNSwgMjIzLCA0MywgMjE5LCA3MiwgNzgsIDc3LCA1LCAyMjIsIAorICAgIDI1MSwgMjAyLCAyMzQsIDc4LCA3NywgNSwgMjIyLCAyNDgsIDIwMywgOTAsIDc4LCA3NywgNSwgMjIzLCAyNiwgMjAxLCAKKyAgICAxNjYsIDc4LCA3NywgNSwgMjIzLCA0LCAyMDMsIDU0LCA3OCwgNzcsIDUsIDIyMywgOTIsIDIwMywgNTksIDc4LCA3NywgNSwgCisgICAgMjIzLCAzMywgMjAyLCAxNzksIDc4LCA3NywgNSwgMjIzLCAxMDAsIDIwMiwgMTkzLCA3OCwgNzcsIDUsIDIyMywgMTMsIAorICAgIDIxOCwgMzUsIDc4LCA3NywgNSwgMjIzLCAxMTksIDIxOCwgNTQsIDc4LCA3NywgNSwgMjIzLCA3LCAyMTgsIDE3LCA3OCwgCisgICAgNzcsIDUsIDIyMywgNzksIDIxOCwgNDYsIDc4LCA3NywgNSwgMjIzLCAxMTcsIDIxOCwgMjQsIDc4LCA3NywgMTcsIDEwMiwgCisgICAgNzgsIDc3LCAxNywgMTA1LCA3OCwgNzcsIDE3LCAxNDcsIDc4LCA3NywgMTcsIDE0OSwgNzgsIDc3LCAxNywgMTY0LCA3OCwgCisgICAgNzcsIDE3LCAxODcsIDc4LCA3NywgMTcsIDIxMCwgMTM1LCA3OCwgNzcsIDE3LCAxOTIsIDc4LCA3NywgMTcsIDIxOSwgMTEzLCAKKyAgICA3OCwgNzcsIDM4LCA0MSwgMjA2LCAxODgsIDc4LCA3NywgMzgsIDQxLCAyMDYsIDE2MSwgNzgsIDc3LCAzOCwgNDEsIDIzMywgCisgICAgODAsIDc4LCA3NywgMzgsIDQxLCAyMDYsIDQ4LCA3OCwgNzcsIDM4LCA0MSwgMjA2LCAxNjcsIDIwNiwgNDgsIDc4LCA3NywgCisgICAgMzgsIDQxLCAyMzMsIDgzLCAyMDYsIDQ4LCA3OCwgNzcsIDM4LCA0MSwgMjIxLCAxNjcsIDI1MSwgMjI3LCA2LCAxLCAyNTEsIAorICAgIDEzMCwgMjUxLCAyMjcsIDYsIDEsIDI0MiwgNTUsIDI1MSwgMjI3LCA2LCAxLCAyMjUsIDE3MywgMjUxLCAyMjcsIDYsIDEsIAorICAgIDIyMSwgMTgwLCAyNTEsIDIyNywgNiwgMSwgMjQ5LCAxMzYsIDI1MSwgMjI3LCA2LCAxLCAyMDksIDEzMywgMjUxLCAyMjcsIAorICAgIDYsIDEsIDIxNiwgNzMsIDI1MSwgMjI3LCA2LCAxLCAyNDgsIDE5NiwgMjUxLCAyMjcsIDYsIDEsIDIxMywgMjUyLCAyNTEsIAorICAgIDIyNywgNiwgMSwgNzIsIDI1MSwgMjI3LCA2LCAxLCAyMzcsIDE5NSwgMjUxLCAyMjcsIDYsIDEsIDcwLCAyNTEsIDIyNywgNiwgCisgICAgMSwgNzQsIDI1MSwgMjI3LCA2LCAxLCAyNDEsIDEwMCwgMjUxLCAyMjcsIDYsIDEsIDIwMCwgMTAsIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyMDEsIDcyLCAyNTEsIDIyNywgNiwgMSwgMjE4LCA4OSwgMjUxLCAyMjcsIDYsIDEsIDIyNywgODYsIDI1MSwgMjI3LCA2LCAKKyAgICAxLCAxODMsIDI1MSwgMjI3LCA2LCAxLCA2NiwgMjUxLCAyMjcsIDYsIDEsIDIyNywgMTk5LCAyNTEsIDIyNywgNiwgMSwgCisgICAgMjQ2LCAyMzYsIDI1MSwgMjI3LCA2LCAxLCAxNDQsIDI1MSwgMjI3LCA2LCAxLCAyMTQsIDE1NywgMjUxLCAyMjcsIDYsIDEsIAorICAgIDIzNiwgODksIDI1MSwgMjI3LCA2LCAxLCAyMTgsIDYwLCAyNTEsIDIyNywgNiwgMSwgMjA0LCAyMTUsIDI1MSwgMjI3LCA2LCAKKyAgICAxLCAyMTksIDE1NCwgMjUxLCAyMjcsIDYsIDEsIDIwMywgOTAsIDI1MSwgMjI3LCA2LCAxLCAyMjYsIDIwNywgMjUxLCAyMjcsIAorICAgIDYsIDEsIDIzNiwgMjksIDI1MSwgMjI3LCA2LCAxLCAxOTksIDEwMywgMjUxLCAyMjcsIDYsIDEsIDIyNiwgNDEsIDI1MSwgCisgICAgMjI3LCA2LCAxLCAyMTAsIDExNCwgMjUxLCAyMjcsIDQsIDEsIDI1MSwgMTMwLCAyNTEsIDIyNywgNCwgMSwgMjQyLCA1NSwgCisgICAgMjUxLCAyMjcsIDQsIDEsIDIyNSwgMTczLCAyNTEsIDIyNywgNCwgMSwgMjIxLCAxODAsIDI1MSwgMjI3LCA0LCAxLCAyNDksIAorICAgIDEzNiwgMjUxLCAyMjcsIDQsIDEsIDIwOSwgMTMzLCAyNTEsIDIyNywgNCwgMSwgMjE2LCA3MywgMjUxLCAyMjcsIDQsIDEsIAorICAgIDI0OCwgMTk2LCAyNTEsIDIyNywgNCwgMSwgMjEzLCAyNTIsIDI1MSwgMjI3LCA0LCAxLCA3MiwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDIzNywgMTk1LCAyNTEsIDIyNywgNCwgMSwgNzAsIDI1MSwgMjI3LCA0LCAxLCA3NCwgMjUxLCAyMjcsIDQsIDEsIDI0MSwgCisgICAgMTAwLCAyNTEsIDIyNywgNCwgMSwgMjAwLCAxMCwgMjUxLCAyMjcsIDQsIDEsIDIwMSwgNzIsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyMTgsIDg5LCAyNTEsIDIyNywgNCwgMSwgMjI3LCA4NiwgMjUxLCAyMjcsIDQsIDEsIDE4MywgMjUxLCAyMjcsIDQsIDEsIAorICAgIDY2LCAyNTEsIDIyNywgNCwgMSwgMjI3LCAxOTksIDI1MSwgMjI3LCA0LCAxLCAyNDYsIDIzNiwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDE0NCwgMjUxLCAyMjcsIDQsIDEsIDIxNCwgMTU3LCAyNTEsIDIyNywgNCwgMSwgMjM2LCA4OSwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDIxOCwgNjAsIDI1MSwgMjI3LCA0LCAxLCAyMDQsIDIxNSwgMjUxLCAyMjcsIDQsIDEsIDIxOSwgMTU0LCAyNTEsIDIyNywgNCwgCisgICAgMSwgMjAzLCA5MCwgMjUxLCAyMjcsIDQsIDEsIDIyNiwgMjA3LCAyNTEsIDIyNywgNCwgMSwgMjM2LCAyOSwgMjUxLCAyMjcsIAorICAgIDQsIDEsIDE5OSwgMTAzLCAyNTEsIDIyNywgNCwgMSwgMjI2LCA0MSwgMjUxLCAyMjcsIDQsIDEsIDIxMCwgMTE0LCAyNTEsIAorICAgIDIyNywgMjUxLCAxMzEsIDIyNCwgMjUwLCAyNTEsIDIyNywgMjIsIDIyNCwgMjUwLCAyNTEsIDIyNywgMjM2LCAzLCA4MSwgCisgICAgMjUxLCAyMjcsIDIzNCwgMjAzLCAyNTEsIDIyNywgMTExLCAyMjEsIDEyNiwgMjUxLCAyMjcsIDIzNiwgNCwgMTExLCAyMjEsIAorICAgIDEyNiwgMjUxLCAyMjcsIDIxOCwgMTAwLCAyNTEsIDIyNywgMTcsIDE5OSwgODEsIDI1MSwgMjI3LCAxNywgMTAyLCAyNTEsIAorICAgIDIyNywgMTcsIDEwNSwgMjUxLCAyMjcsIDE3LCAxNDcsIDI1MSwgMjI3LCAxNywgMTQ5LCAyNTEsIDIyNywgMTcsIDE2NCwgCisgICAgMjUxLCAyMjcsIDE3LCAxODcsIDI1MSwgMjI3LCAxNywgMjEwLCAxMzUsIDI1MSwgMjI3LCAxNywgMTkyLCAyNTEsIDIyNywgCisgICAgMTcsIDIxOSwgMTEzLCAyNTEsIDIyNywgODIsIDIzOCwgNDMsIDgxLCAyNTEsIDIyNywgODIsIDIxNCwgNzksIDgxLCA5LCAKKyAgICAxMywgMjUxLCAxNDIsIDksIDEzLCAyNDgsIDI0MCwgOSwgMTMsIDIyNywgMjI0LCA5LCAxMywgMjQyLCAyOSwgOSwgMTMsIAorICAgIDIwMSwgNzIsIDksIDEzLCAxOTksIDEwNSwgOSwgMTMsIDIzNCwgMjI0LCA5LCAxMywgMjA3LCA5LCA5LCAxMywgMjAwLCA0NiwgCisgICAgOSwgMTMsIDIyNywgODYsIDksIDEzLCAyMjUsIDkxLCA5LCAxMywgMjIyLCA2MSwgOSwgMTMsIDIxOCwgMjI3LCA5LCAxMywgCisgICAgMjExLCAxODYsIDksIDEzLCAyNTEsIDE3MSwgOSwgMTMsIDIzNywgMTM0LCA5LCAxMywgMjEyLCA1NiwgOSwgMTMsIDIxNCwgCisgICAgMTUyLCA5LCAxMywgMjEzLCAxNTQsIDksIDEzLCAyMTAsIDYxLCA5LCAxMywgMjA2LCAxODMsIDksIDEzLCAyMDYsIDEwMiwgCisgICAgOSwgMTMsIDIyNiwgMjAzLCA5LCAxMywgMjA2LCAxMTQsIDksIDEzLCAyNDIsIDUyLCA5LCAxMywgMTk5LCAxMDgsIDksIDEzLCAKKyAgICAyMzUsIDE5NCwgOSwgMTMsIDI0MCwgMTgxLCAyNDgsIDI0MCwgOSwgMTMsIDI0MCwgMTgxLCAyMTgsIDIyNywgOSwgMTMsIAorICAgIDI0MCwgMTgxLCAyMzcsIDEzNCwgOSwgMTMsIDI0MCwgMTgxLCAyMTQsIDE1MiwgOSwgMTMsIDgyLCAyNDgsIDI0MCwgOSwgCisgICAgMTMsIDgyLCAyMjcsIDIyNCwgOSwgMTMsIDgyLCAyMzQsIDExNSwgOSwgMTMsIDgyLCAyMzQsIDIyNCwgOSwgMTMsIDgyLCAKKyAgICAyMDAsIDQ2LCA5LCAxMywgODIsIDIyNywgODYsIDksIDEzLCA4MiwgMjI1LCA5MSwgOSwgMTMsIDgyLCAyMjIsIDYxLCA5LCAKKyAgICAxMywgODIsIDIxOCwgMjI3LCA5LCAxMywgODIsIDIxMSwgMTg2LCA5LCAxMywgODIsIDI1MSwgMTcxLCA5LCAxMywgODIsIAorICAgIDIzNywgMTM0LCA5LCAxMywgODIsIDIxMiwgNTYsIDksIDEzLCA4MiwgMjE0LCAxNTIsIDksIDEzLCA4MiwgMjEwLCA2MSwgOSwgCisgICAgMTMsIDgyLCAyMDYsIDE4MywgOSwgMTMsIDgyLCAyMDYsIDEwMiwgOSwgMTMsIDgyLCAyMjYsIDIwMywgOSwgMTMsIDgyLCAKKyAgICAyNDIsIDUyLCA5LCAxMywgODIsIDIzNSwgMTk0LCA5LCAxMywgMjA3LCA1LCAyMjcsIDIyNCwgOSwgMTMsIDIwNywgNSwgCisgICAgMjM0LCAyMjQsIDksIDEzLCAyMDcsIDUsIDIwMCwgNDYsIDksIDEzLCAyMDcsIDUsIDIyNSwgOTEsIDksIDEzLCAyMDcsIDUsIAorICAgIDIxOCwgMjI3LCA5LCAxMywgMjA3LCA1LCAyMTEsIDE4NiwgOSwgMTMsIDIwNywgNSwgMjUxLCAxNzEsIDksIDEzLCAyMDcsIAorICAgIDUsIDIxMiwgNTYsIDksIDEzLCAyMDcsIDUsIDIxNCwgMTUyLCA5LCAxMywgMjA3LCA1LCAyMTAsIDYxLCA5LCAxMywgMjA3LCAKKyAgICA1LCAyMjYsIDIwMywgOSwgMTMsIDIwNywgNSwgMjQyLCA1MiwgOSwgMTMsIDIwNywgNSwgMjM1LCAxOTQsIDksIDEzLCAyMDcsIAorICAgIDUsIDI0MCwgMTgxLCAyMTgsIDIyNywgOSwgMTMsIDIwNywgNSwgMjQwLCAxODEsIDIxNCwgMTUyLCA5LCAxMywgMjA4LCA1NSwgCisgICAgMjQ4LCAyNDAsIDksIDEzLCAyMDgsIDU1LCAyMjcsIDIyNCwgOSwgMTMsIDIwOCwgNTUsIDIzNCwgMTE1LCA5LCAxMywgMjA4LCAKKyAgICA1NSwgMjM0LCAyMjQsIDksIDEzLCAyMDgsIDU1LCAyMDcsIDksIDksIDEzLCAyMDgsIDU1LCAyMDAsIDQ2LCA5LCAxMywgCisgICAgMjA4LCA1NSwgMjI3LCA4NiwgOSwgMTMsIDIwOCwgNTUsIDIyMiwgNjEsIDksIDEzLCAyMDgsIDU1LCAyMTgsIDIyNywgOSwgCisgICAgMTMsIDIwOCwgNTUsIDIxMSwgMTg2LCA5LCAxMywgMjA4LCA1NSwgMjUxLCAxNzEsIDksIDEzLCAyMDgsIDU1LCAyMzcsIAorICAgIDEzNCwgOSwgMTMsIDIwOCwgNTUsIDIxMiwgNTYsIDksIDEzLCAyMDgsIDU1LCAyMTQsIDE1MiwgOSwgMTMsIDIwOCwgNTUsIAorICAgIDIxMCwgNjEsIDksIDEzLCAyMDgsIDU1LCAyMDYsIDE4MywgOSwgMTMsIDIwOCwgNTUsIDIwNiwgMTAyLCA5LCAxMywgMjA4LCAKKyAgICA1NSwgMjI2LCAyMDMsIDksIDEzLCAyMDgsIDU1LCAyNDIsIDUyLCA5LCAxMywgMjA4LCA1NSwgMTk5LCAxMDgsIDksIDEzLCAKKyAgICAyMDgsIDU1LCAyMzUsIDE5NCwgOSwgMTMsIDIwOCwgNTUsIDI0MCwgMTgxLCAyNDgsIDI0MCwgOSwgMTMsIDIwOCwgNTUsIAorICAgIDI0MCwgMTgxLCAyMzcsIDEzNCwgOSwgMTMsIDIyNCwgNzMsIDI1MSwgMTQyLCA5LCAxMywgMjI0LCA3MywgMjQ4LCAyNDAsIAorICAgIDksIDEzLCAyMjQsIDczLCAyMjcsIDIyNCwgOSwgMTMsIDIyNCwgNzMsIDI0MiwgMjksIDksIDEzLCAyMjQsIDczLCAyMzQsIAorICAgIDExNSwgOSwgMTMsIDIyNCwgNzMsIDIwMSwgNzIsIDksIDEzLCAyMjQsIDczLCAxOTksIDEwNSwgOSwgMTMsIDIyNCwgNzMsIAorICAgIDIzNCwgMjI0LCA5LCAxMywgMjI0LCA3MywgMjA3LCA5LCA5LCAxMywgMjI0LCA3MywgMjAwLCA0NiwgOSwgMTMsIDIyNCwgCisgICAgNzMsIDIyNSwgOTEsIDksIDEzLCAyMjQsIDczLCAyMjIsIDYxLCA5LCAxMywgMjI0LCA3MywgMjE4LCAyMjcsIDksIDEzLCAKKyAgICAyMjQsIDczLCAyMTEsIDE4NiwgOSwgMTMsIDIyNCwgNzMsIDI1MSwgMTcxLCA5LCAxMywgMjI0LCA3MywgMjM3LCAxMzQsIDksIAorICAgIDEzLCAyMjQsIDczLCAyMTIsIDU2LCA5LCAxMywgMjI0LCA3MywgMjE0LCAxNTIsIDksIDEzLCAyMjQsIDczLCAyMTMsIDE1NCwgCisgICAgOSwgMTMsIDIyNCwgNzMsIDIxMCwgNjEsIDksIDEzLCAyMjQsIDczLCAyMDYsIDE4MywgOSwgMTMsIDIyNCwgNzMsIDIwNiwgCisgICAgMTAyLCA5LCAxMywgMjI0LCA3MywgMjI2LCAyMDMsIDksIDEzLCAyMjQsIDczLCAyMDYsIDExNCwgOSwgMTMsIDIyNCwgNzMsIAorICAgIDI0MiwgNTIsIDksIDEzLCAyMjQsIDczLCAxOTksIDEwOCwgOSwgMTMsIDIyNCwgNzMsIDIzNSwgMTk0LCA5LCAxMywgMTc1LCAKKyAgICAyNDgsIDI0MCwgOSwgMTMsIDE3NSwgMjI3LCAyMjQsIDksIDEzLCAxNzUsIDI0MiwgMjksIDksIDEzLCAxNzUsIDIwMSwgNzIsIAorICAgIDksIDEzLCAxNzUsIDE5OSwgMTA1LCA5LCAxMywgMTc1LCAyMzQsIDIyNCwgOSwgMTMsIDE3NSwgMjA3LCA5LCA5LCAxMywgCisgICAgMTc1LCAyMDAsIDQ2LCA5LCAxMywgMTc1LCAyMjUsIDkxLCA5LCAxMywgMTc1LCAyMjIsIDYxLCA5LCAxMywgMTc1LCAyMTgsIAorICAgIDIyNywgOSwgMTMsIDE3NSwgMjExLCAxODYsIDksIDEzLCAxNzUsIDI1MSwgMTcxLCA5LCAxMywgMTc1LCAyMzcsIDEzNCwgOSwgCisgICAgMTMsIDE3NSwgMjEyLCA1NiwgOSwgMTMsIDE3NSwgMjE0LCAxNTIsIDksIDEzLCAxNzUsIDIxMywgMTU0LCA5LCAxMywgMTc1LCAKKyAgICAyMTAsIDYxLCA5LCAxMywgMTc1LCAyMDYsIDE4MywgOSwgMTMsIDE3NSwgMjA2LCAxMDIsIDksIDEzLCAxNzUsIDIyNiwgCisgICAgMjAzLCA5LCAxMywgMTc1LCAyMDYsIDExNCwgOSwgMTMsIDE3NSwgMjQyLCA1MiwgOSwgMTMsIDE3NSwgMTk5LCAxMDgsIDksIAorICAgIDEzLCAxNzUsIDIzNSwgMTk0LCA5LCAxMywgMjE3LCA0NCwgODQsIDMsIDE1NSwgMywgMjA2LCAyMjMsIDksIDEzLCAyMTcsIAorICAgIDQ0LCAxNTUsIDMsIDI0MiwgMjksIDIyMiwgMjAwLCAxMDMsIDIzOSwgMTQsIDIwMSwgMTYsIDIyMiwgMjAwLCAxMDMsIDIwOCwgCisgICAgMjU0LCAyMDEsIDE2LCAyMjIsIDIwMCwgMTAzLCAyMDEsIDQ4LCAyMDEsIDE2LCAyMjIsIDIwMCwgMTAzLCAxNTcsIDIwMSwgCisgICAgMTYsIDIyMiwgMjAwLCAxMDMsIDIxMywgMTcwLCAyMzksIDE1OCwgMjIyLCAyMDAsIDEwMywgMjM1LCA2NCwgMjM5LCAxNTgsIAorICAgIDIyMiwgMjAwLCAxMDMsIDY0LCAyMzksIDE1OCwgMjIyLCAyMDAsIDEwMywgMTEyLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIAorICAgIDEwMywgMTIwLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMTI2LCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgCisgICAgMjM2LCAyMjksIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAyMzcsIDYxLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIAorICAgIDEwMywgMjA5LCAxMDYsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAyMTAsIDEzNiwgNzYsIDI0NywgMTksIDIyMiwgCisgICAgMjAwLCAxMDMsIDIzOCwgMjMyLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMjE5LCAxMTQsIDc2LCAyNDcsIDE5LCAKKyAgICAyMjIsIDIwMCwgMTAzLCAxMTIsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAxMjAsIDc2LCAyNDksIDg5LCAyMjIsIAorICAgIDIwMCwgMTAzLCAxMjYsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAyMzYsIDIyOSwgNzYsIDI0OSwgODksIDIyMiwgCisgICAgMjAwLCAxMDMsIDIzNywgNjEsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAyMDksIDEwNiwgNzYsIDI0OSwgODksIAorICAgIDIyMiwgMjAwLCAxMDMsIDIxMCwgMTM2LCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMjM4LCAyMzIsIDc2LCAyNDksIAorICAgIDg5LCAyMjIsIDIwMCwgMTAzLCAyMTksIDExNCwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDExMiwgNzYsIDI0NiwgCisgICAgMTUyLCAyMjIsIDIwMCwgMTAzLCAxMjAsIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMTI2LCA3NiwgMjQ2LCAxNTIsIAorICAgIDIyMiwgMjAwLCAxMDMsIDIzNiwgMjI5LCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIzNywgNjEsIDc2LCAyNDYsIAorICAgIDE1MiwgMjIyLCAyMDAsIDEwMywgMjA5LCAxMDYsIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjEwLCAxMzYsIDc2LCAKKyAgICAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjM4LCAyMzIsIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjE5LCAxMTQsIAorICAgIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjE1LCAxMTYsIDIyMiwgMjAwLCAxMDMsIDIxNywgMzEsIDIyMiwgMjAwLCAKKyAgICAxMDMsIDI0OSwgOTAsIDIyMiwgMjAwLCAxMDMsIDI0NiwgMTkzLCAyMjIsIDIwMCwgMTAzLCAyMDgsIDE5OSwgMjIyLCAyMDAsIAorICAgIDEwMywgMjA3LCAyMzAsIDIyMiwgMjAwLCAxMDMsIDI1MCwgMTI2LCAyMjIsIDIwMCwgMTAzLCAyMDEsIDcsIDIyMiwgMjAwLCAKKyAgICAxMDMsIDIyNywgMTU5LCAyMjIsIDIwMCwgMTAzLCAyNDksIDEyOSwgMTY2LCAxMDMsIDIzMywgMTc3LCAyNDksIDEyOSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTc1LCAxNjYsIDEwMywgMjMzLCAxNzQsIDE2NiwgMTAzLCAyMzMsIDE3MywgMTY2LCAxMDMsIAorICAgIDIzMywgMTcyLCAxNjYsIDEwMywgMjMzLCAxNzEsIDE2NiwgMTAzLCAyMzMsIDE3MCwgMTY2LCAxMDMsIDIzMywgMTY5LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNjgsIDE2NiwgMTAzLCAyMzMsIDE2NywgMTY2LCAxMDMsIDIzMywgMTY2LCAxNjYsIDEwMywgCisgICAgMjMzLCAxNjUsIDE2NiwgMTAzLCAyMzMsIDE2NCwgMTY2LCAxMDMsIDIzMywgMTYzLCAxNjYsIDEwMywgMjMzLCAxNjIsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE2MSwgMTY2LCAxMDMsIDIzMywgMTYwLCAxNjYsIDEwMywgMjMzLCAxNTksIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE1OCwgMTY2LCAxMDMsIDIzMywgMTU3LCAxNjYsIDEwMywgMjMzLCAxNTYsIDE2NiwgMTAzLCAyMzMsIDE1NSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTU0LCAxNjYsIDEwMywgMjMzLCAxNTMsIDE2NiwgMTAzLCAyMzMsIDE1MiwgMTY2LCAxMDMsIAorICAgIDIzMywgMTUxLCAxNjYsIDEwMywgMjMzLCAxNTAsIDE2NiwgMTAzLCAyMzMsIDE0OSwgMTY2LCAxMDMsIDIzMywgMTQ4LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNDcsIDE2NiwgMTAzLCAyMzMsIDE0NiwgMTY2LCAxMDMsIDIzMywgMTQ1LCAxNjYsIDEwMywgCisgICAgMjMzLCAxNDQsIDE2NiwgMTAzLCAyMzMsIDE0MywgMTY2LCAxMDMsIDIzMywgMTQyLCAxNjYsIDEwMywgMjMzLCAxNDEsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE0MCwgMTY2LCAxMDMsIDIzMywgMTM5LCAxNjYsIDEwMywgMjMzLCAxMzgsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDEzNywgMTY2LCAxMDMsIDIzMywgMTM2LCAxNjYsIDEwMywgMjMzLCAxMzUsIDE2NiwgMTAzLCAyMzMsIDEzNCwgCisgICAgMTY2LCAxMDMsIDIzMywgMTMzLCAxNjYsIDEwMywgMjMzLCAxMzIsIDE2NiwgMTAzLCAyMzMsIDEzMSwgMTY2LCAxMDMsIAorICAgIDIzMywgMTMwLCAxNjYsIDEwMywgMjMzLCAxMjksIDE2NiwgMTAzLCAyMzMsIDEyOCwgMTY2LCAxMDMsIDIzMywgMTI3LCAKKyAgICAxNjYsIDEwMywgODMsIDI0OSwgMTI5LCAxNjYsIDEwMywgMjAzLCA0MSwgMTY2LCAxMDMsIDIwMywgNDAsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDM5LCAxNjYsIDEwMywgMjAzLCAzOCwgMTY2LCAxMDMsIDIwMywgMzcsIDE2NiwgMTAzLCAyMDMsIDM2LCAxNjYsIAorICAgIDEwMywgMjAzLCAzNSwgMTY2LCAxMDMsIDIwMywgMzQsIDE2NiwgMTAzLCAyMDMsIDMzLCAxNjYsIDEwMywgMjAzLCAzMiwgCisgICAgMTY2LCAxMDMsIDIwMywgMzEsIDE2NiwgMTAzLCAyMDMsIDMwLCAxNjYsIDEwMywgMjAzLCAyOSwgMTY2LCAxMDMsIDIwMywgCisgICAgMjgsIDE2NiwgMTAzLCAyMDMsIDI3LCAxNjYsIDEwMywgMjAzLCAyNiwgMTY2LCAxMDMsIDIwMywgMjUsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDI0LCAxNjYsIDEwMywgMjAzLCAyMywgMTY2LCAxMDMsIDIwMywgMjIsIDE2NiwgMTAzLCAyMDMsIDIxLCAxNjYsIAorICAgIDEwMywgMjAzLCAyMCwgMTY2LCAxMDMsIDIwMywgMTksIDE2NiwgMTAzLCAyMDMsIDE4LCAxNjYsIDEwMywgMjAzLCAxNywgCisgICAgMTY2LCAxMDMsIDIwMywgMTYsIDE2NiwgMTAzLCAyMDMsIDE1LCAxNjYsIDEwMywgMjAzLCAxNCwgMTY2LCAxMDMsIDIwMywgCisgICAgMTMsIDE2NiwgMTAzLCAyMDMsIDEyLCAxNjYsIDEwMywgMjAzLCAxMSwgMTY2LCAxMDMsIDIwMywgMTAsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDksIDE2NiwgMTAzLCAyMDMsIDgsIDE2NiwgMTAzLCAyMDMsIDcsIDE2NiwgMTAzLCAyMDMsIDYsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDUsIDE2NiwgMTAzLCAyMDMsIDQsIDE2NiwgMTAzLCAyMDMsIDMsIDE2NiwgMTAzLCAyMDMsIDIsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDEsIDE2NiwgMTAzLCAyMDMsIDAsIDE2NiwgMTAzLCAyMDIsIDI1NSwgMTY2LCAxMDMsIDIwMiwgMjU0LCAxNjYsIAorICAgIDEwMywgMjAyLCAyNTMsIDE2NiwgMTAzLCAyMDIsIDI1MiwgMTY2LCAxMDMsIDIwMiwgMjUxLCAxNjYsIDEwMywgMjAyLCAKKyAgICAyNTAsIDE2NiwgMTAzLCAyMDIsIDI0OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyNDksIDEyOSwgMjE1LCAxMjUsIDI0NywgCisgICAgMTM0LCAyNTEsIDI0NSwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgNzYsIDIwOCwgMjQxLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDEyNiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNiwgMjI5LCA3NiwgMjA4LCAKKyAgICAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwOSwgCisgICAgMTA2LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMzgsIDIzMiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxOSwgMTE0LCA3NiwgMjA4LCAKKyAgICAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjcsIAorICAgIDI0NiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMTQsIDgxLCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCAxNDUsIDc2LCAyMDgsIAorICAgIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyNTEsIDI0NSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgCisgICAgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyNiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIzNiwgMjI5LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDIzNCwgMTI1LCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwOSwgMTA2LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAKKyAgICAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzgsIDIzMiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIxOSwgMTE0LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyMzQsIDEyNSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMjcsIDI0NiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAKKyAgICAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTQsIDgxLCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjI2LCAxNDUsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTMsIDE3MCwgMjI3LCAxNTksIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjUxLCAyNDUsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgNzYsIDI0MSwgNjMsIAorICAgIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTI2LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzYsIDIyOSwgNzYsIAorICAgIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA5LCAxMDYsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgMjQxLCA2MywgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMzgsIDIzMiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE5LCAxMTQsIDc2LCAKKyAgICAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMjcsIDI0NiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCA5NCwgNzYsIDI0MSwgNjMsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjE0LCA4MSwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCAxNDUsIDc2LCAKKyAgICAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDYzLCAyMjcsIDE1OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyNTEsIDI0NSwgCisgICAgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTIwLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAxMjYsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNiwgMjI5LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMzcsIDYxLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDksIDEwNiwgNzYsIDI0NiwgCisgICAgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzOCwgCisgICAgMjMyLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTksIDExNCwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNywgMjQ2LCA3NiwgMjQ2LCAKKyAgICA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTQsIAorICAgIDgxLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDE0NSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgNjQsIDIyNywgMTU5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgMCwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDYwLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0NiwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDQ1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDQsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA0MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQyLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDEsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA0MCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDU5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNTgsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDU2LCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NCwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDUzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTIsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1MSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDUwLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDgsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA0NywgMTcsIDE5OSwgODIsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMTk5LCA4MiwgMjQ2LCA3MCwgMTcsIDExMiwgCisgICAgMjQ2LCA3MCwgMTcsIDEyMCwgMjQ2LCA3MCwgMTcsIDEyNiwgMjQ2LCA3MCwgMTcsIDIzNiwgMjI5LCAyNDYsIDcwLCAxNywgCisgICAgMjM3LCA2MSwgMjQ2LCA3MCwgMTcsIDIwOSwgMTA2LCAyNDYsIDcwLCAxNywgMjEwLCAxMzYsIDI0NiwgNzAsIDE3LCAyMzgsIAorICAgIDIzMiwgMjQ2LCA3MCwgMTcsIDIxOSwgMTE0LCAyNDYsIDcwLCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxOTksIDgxLCAyNDEsIAorICAgIDE3LCAxODksIDQ0LCA0MywgMTcsIDE5OSwgODEsIDEwNiwgOCwgNiwgMSwgNjIsIDEwNiwgOCwgNiwgMSwgMjUwLCAxMDMsIAorICAgIDEwNiwgOCwgNiwgMSwgMjQ3LCAyMjMsIDEwNiwgOCwgNiwgMSwgMjQyLCAxNTMsIDEwNiwgOCwgNiwgMSwgNzIsIDEwNiwgOCwgCisgICAgNiwgMSwgMjM4LCA1LCAxMDYsIDgsIDYsIDEsIDIzNiwgMTU2LCAxMDYsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxMDYsIDgsIDYsIAorICAgIDEsIDcwLCAxMDYsIDgsIDYsIDEsIDIyNywgMjUxLCAxMDYsIDgsIDYsIDEsIDIyNywgMTE4LCAxMDYsIDgsIDYsIDEsIDE1NiwgCisgICAgMTA2LCA4LCA2LCAxLCAyMjMsIDI0MywgMTA2LCA4LCA2LCAxLCAyMjAsIDIxNCwgMTA2LCA4LCA2LCAxLCA3NCwgMTA2LCA4LCAKKyAgICA2LCAxLCAyMTYsIDIyNiwgMTA2LCA4LCA2LCAxLCAyMTQsIDE2NywgMTA2LCA4LCA2LCAxLCAxNDYsIDEwNiwgOCwgNiwgMSwgCisgICAgMjEyLCAxMjIsIDEwNiwgOCwgNiwgMSwgMjA3LCA4MywgMTA2LCA4LCA2LCAxLCA2NiwgMTA2LCA4LCA2LCAxLCAyMDMsIAorICAgIDE2OCwgMTA2LCA4LCA2LCAxLCAyMDEsIDE0NywgMTA2LCA4LCA2LCAxLCAyMDAsIDE5NSwgMTA2LCA4LCA2LCAxLCAyMDAsIAorICAgIDEyMywgMTA2LCA4LCA2LCAxLCAxOTksIDE1NywgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDgsIDYsIDEsIDIxMiwgCisgICAgMTIyLCA0NCwgMzksIDgsIDYsIDEsIDI0NywgMjIzLCA0NCwgMzksIDgsIDYsIDEsIDE0NiwgNDQsIDI0NywgNzcsIDQ0LCAKKyAgICAyMDAsIDE5NywgOTUsIDgsIDYsIDEsIDYyLCA5NSwgOCwgNiwgMSwgMjUwLCAxMDMsIDk1LCA4LCA2LCAxLCAyNDcsIDIyMywgCisgICAgOTUsIDgsIDYsIDEsIDI0MiwgMTUzLCA5NSwgOCwgNiwgMSwgNzIsIDk1LCA4LCA2LCAxLCAyMzgsIDUsIDk1LCA4LCA2LCAxLCAKKyAgICAyMzYsIDE1NiwgOTUsIDgsIDYsIDEsIDIzNCwgMjQ3LCA5NSwgOCwgNiwgMSwgNzAsIDk1LCA4LCA2LCAxLCAyMjcsIDI1MSwgCisgICAgOTUsIDgsIDYsIDEsIDIyNywgMTE4LCA5NSwgOCwgNiwgMSwgMTU2LCA5NSwgOCwgNiwgMSwgMjIzLCAyNDMsIDk1LCA4LCA2LCAKKyAgICAxLCAyMjAsIDIxNCwgOTUsIDgsIDYsIDEsIDc0LCA5NSwgOCwgNiwgMSwgMjE2LCAyMjYsIDk1LCA4LCA2LCAxLCAyMTQsIAorICAgIDE2NywgOTUsIDgsIDYsIDEsIDE0NiwgOTUsIDgsIDYsIDEsIDIxMiwgMTIyLCA5NSwgOCwgNiwgMSwgMjA3LCA4MywgOTUsIAorICAgIDgsIDYsIDEsIDY2LCA5NSwgOCwgNiwgMSwgMjAzLCAxNjgsIDk1LCA4LCA2LCAxLCAyMDEsIDE0NywgOTUsIDgsIDYsIDEsIAorICAgIDIwMCwgMTk1LCA5NSwgOCwgNiwgMSwgMjAwLCAxMjMsIDk1LCA4LCA2LCAxLCAxOTksIDE1NywgOTUsIDIzMywgNjksIDk1LCAKKyAgICAyMjAsIDIzOCwgOTUsIDIxMSwgMjA0LCA5NSwgMjA4LCAxODIsIDk1LCAyMTUsIDQ1LCA5NSwgMjAxLCA2NSwgMTg5LCA0NCwgCisgICAgOCwgNiwgMSwgNjIsIDE4OSwgNDQsIDgsIDYsIDEsIDI1MCwgMTAzLCAxODksIDQ0LCA4LCA2LCAxLCAyNDcsIDIyMywgMTg5LCAKKyAgICA0NCwgOCwgNiwgMSwgMjQyLCAxNTMsIDE4OSwgNDQsIDgsIDYsIDEsIDcyLCAxODksIDQ0LCA4LCA2LCAxLCAyMzgsIDUsIAorICAgIDE4OSwgNDQsIDgsIDYsIDEsIDIzNiwgMTU2LCAxODksIDQ0LCA4LCA2LCAxLCAyMzQsIDI0NywgMTg5LCA0NCwgOCwgNiwgMSwgCisgICAgNzAsIDE4OSwgNDQsIDgsIDYsIDEsIDIyNywgMjUxLCAxODksIDQ0LCA4LCA2LCAxLCAyMjcsIDExOCwgMTg5LCA0NCwgOCwgCisgICAgNiwgMSwgMTU2LCAxODksIDQ0LCA4LCA2LCAxLCAyMjMsIDI0MywgMTg5LCA0NCwgOCwgNiwgMSwgMjIwLCAyMTQsIDE4OSwgCisgICAgNDQsIDgsIDYsIDEsIDc0LCAxODksIDQ0LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTg5LCA0NCwgOCwgNiwgMSwgMjE0LCAxNjcsIAorICAgIDE4OSwgNDQsIDgsIDYsIDEsIDE0NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjEyLCAxMjIsIDE4OSwgNDQsIDgsIDYsIDEsIDIwNywgCisgICAgODMsIDE4OSwgNDQsIDgsIDYsIDEsIDY2LCAxODksIDQ0LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTg5LCA0NCwgOCwgNiwgMSwgCisgICAgMjAxLCAxNDcsIDE4OSwgNDQsIDgsIDYsIDEsIDIwMCwgMTk1LCAxODksIDQ0LCA4LCA2LCAxLCAyMDAsIDEyMywgMTg5LCAKKyAgICA0NCwgOCwgNiwgMSwgMTk5LCAxNTcsIDIxMywgMjIwLCAyMjIsIDgyLCA1NCwgMjEzLCAyMjAsIDIyMiwgNzksIDU0LCAxODksIAorICAgIDk1LCA4LCA2LCAxLCA2MiwgMTg5LCA5NSwgOCwgNiwgMSwgMjUwLCAxMDMsIDE4OSwgOTUsIDgsIDYsIDEsIDI0NywgMjIzLCAKKyAgICAxODksIDk1LCA4LCA2LCAxLCAyNDIsIDE1MywgMTg5LCA5NSwgOCwgNiwgMSwgNzIsIDE4OSwgOTUsIDgsIDYsIDEsIDIzOCwgCisgICAgNSwgMTg5LCA5NSwgOCwgNiwgMSwgMjM2LCAxNTYsIDE4OSwgOTUsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxODksIDk1LCA4LCA2LCAKKyAgICAxLCA3MCwgMTg5LCA5NSwgOCwgNiwgMSwgMjI3LCAyNTEsIDE4OSwgOTUsIDgsIDYsIDEsIDIyNywgMTE4LCAxODksIDk1LCAKKyAgICA4LCA2LCAxLCAxNTYsIDE4OSwgOTUsIDgsIDYsIDEsIDIyMywgMjQzLCAxODksIDk1LCA4LCA2LCAxLCAyMjAsIDIxNCwgCisgICAgMTg5LCA5NSwgOCwgNiwgMSwgNzQsIDE4OSwgOTUsIDgsIDYsIDEsIDIxNiwgMjI2LCAxODksIDk1LCA4LCA2LCAxLCAyMTQsIAorICAgIDE2NywgMTg5LCA5NSwgOCwgNiwgMSwgMTQ2LCAxODksIDk1LCA4LCA2LCAxLCAyMTIsIDEyMiwgMTg5LCA5NSwgOCwgNiwgMSwgCisgICAgMjA3LCA4MywgMTg5LCA5NSwgOCwgNiwgMSwgNjYsIDE4OSwgOTUsIDgsIDYsIDEsIDIwMywgMTY4LCAxODksIDk1LCA4LCA2LCAKKyAgICAxLCAyMDEsIDE0NywgMTg5LCA5NSwgOCwgNiwgMSwgMjAwLCAxOTUsIDE4OSwgOTUsIDgsIDYsIDEsIDIwMCwgMTIzLCAxODksIAorICAgIDk1LCA4LCA2LCAxLCAxOTksIDE1NywgMjQyLCAyMzIsIDE4OSwgOTUsIDgsIDYsIDEsIDIxNiwgMjI2LCAxODksIDk1LCAKKyAgICAyMzIsIDIzMywgMTg5LCA5NSwgMTcyLCAxODksIDk1LCAyMTIsIDY0LCAxODksIDk1LCAyNTIsIDg5LCAxODksIDk1LCAyMDEsIAorICAgIDY1LCA1MiwgMjQwLCAyMzAsIDk1LCAyNDYsIDEzNiwgOTUsIDI0MywgMjYsIDk1LCAyMzYsIDIxMCwgOTUsIDIzMiwgMjI0LCAKKyAgICA5NSwgMjIwLCA3LCA5NSwgMjE5LCAyNTUsIDk1LCAyMTcsIDk4LCA5NSwgMjA5LCA1LCA5NSwgMTE1LCAzLCAyMzgsIDQzLCAKKyAgICA4MSwgOTUsIDIwMiwgMTY5LCA5NSwgMTI2LCAyNDIsIDE1MywgOTUsIDIxMSwgMTk2LCAyMTEsIDIwOSwgOTUsIDEyMCwgCisgICAgMjI3LCAxMTgsIDk1LCAyMzYsIDIyOSwgMjI3LCAxMTgsIDk1LCAyMzgsIDIzMiwgMjI3LCAxMTgsIDk1LCAyMzcsIDYxLCAKKyAgICAyMTUsIDEwMCwgMTAyLCA5NSwgMjEwLCAxMzYsIDIxNSwgMTAwLCAxMDIsIDk1LCAyMDQsIDE0OSwgMjE1LCAxMDAsIDEwNSwgCisgICAgOTUsIDIwOSwgOTMsIDIxNiwgMjI2LCA5NSwgMTEyLCAyMzMsIDgzLCAyMDQsIDE2MCwgMjE2LCAyMjYsIDk1LCA4LCA0LCAxLCAKKyAgICAyNDIsIDE1MywgOTUsIDIzNCwgMTQyLCA5NSwgMjM0LCAxNDEsIDk1LCAyMzQsIDc0LCA5NSwgMjI0LCA2NiwgOTUsIDIwOSwgCisgICAgMjAxLCA5NSwgMjA0LCAyNCwgOTUsIDIwMiwgMTkwLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA2MiwgMjEzLCAxNjIsIAorICAgIDIyOCwgMTAwLCAxNiwgMSwgMjUwLCAxMDMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDI0NywgMjIzLCAyMTMsIDE2MiwgCisgICAgMjI4LCAxMDAsIDE2LCAxLCAyNDIsIDE1MywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNzIsIDIxMywgMTYyLCAyMjgsIAorICAgIDEwMCwgMTYsIDEsIDIzOCwgNSwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjM2LCAxNTYsIDIxMywgMTYyLCAyMjgsIAorICAgIDEwMCwgMTYsIDEsIDIzNCwgMjQ3LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA3MCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAKKyAgICAxNiwgMSwgMjI3LCAyNTEsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIyNywgMTE4LCAyMTMsIDE2MiwgMjI4LCAxMDAsIAorICAgIDE2LCAxLCAxNTYsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIyMywgMjQzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAKKyAgICAxLCAyMjAsIDIxNCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNzQsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIAorICAgIDIxNiwgMjI2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMTQsIDE2NywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgCisgICAgMTQ2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMTIsIDEyMiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjA3LCAKKyAgICA4MywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNjYsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMywgMTY4LCAKKyAgICAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDEsIDE0NywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjAwLCAxOTUsIAorICAgIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMCwgMTIzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAxOTksIDE1NywgCisgICAgNTIsIDE3NywgMjMzLCAyMDEsIDk1LCA2OSwgMjI2LCA3NiwgOTUsIDY5LCAyMTIsIDY0LCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE2OSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzMsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgxLCA5NSwgNjksIAorICAgIDI0MSwgMTc1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzUsIDk1LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTQ3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3NCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAKKyAgICAxODcsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTYxLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1NCwgOTUsIDEyLCAyMDMsIAorICAgIDI0NCwgMjMwLCAxNjMsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTg0LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3MCwgCisgICAgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTYyLCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE4NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDgsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTUzLCA5NSwgMTIsIAorICAgIDIwMywgMjQ0LCAyMzAsIDE0NiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgCisgICAgMTc4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1NiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjcsIDk1LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTY1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE5MSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxOTAsIAorICAgIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQ0LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3MSwgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxODksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgwLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2NiwgOTUsIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNDUsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTY4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIAorICAgIDE1MCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc5LCA5NSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE1NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTYwLCAKKyAgICA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1MiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODMsIDk1LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTc3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE0MywgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNTgsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTkwLCAKKyAgICAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4OCwgMjA1LCAxNDYsIDIxMCwgNTUsIAorICAgIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzIsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTU1LCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2OCwgMjA1LCAKKyAgICAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIAorICAgIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgyLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE2NCwgNDQsIDE5OCwgMTk4LCAyNTEsIDIyMywgNDQsIDE5OCwgMTk4LCAyNTEsIDI0OSwgMjQyLCAxNjQsIDIzNywgCisgICAgMTEsIDI0NiwgMTEwLCAyMDQsIDksIDIxOSwgMTMwLCAzLCAyMDgsIDEwNiwgMjA3LCAyMjMsIDExOSwgMjIxLCA2MiwgMjA3LCAKKyAgICAyMjIsIDI0NiwgMTQwLCAyNTAsIDE1NiwgMjM5LCAxMTEsIDIwNywgMjIxLCAxMTksIDI0OCwgMjUsIDIxMywgMjIxLCAyNDgsIAorICAgIDUxLCAyNTAsIDE1NiwgMjE5LCAxMjksIDIwMSwgODMsIDIwMSwgNzcsIDIwMiwgMTg0LCAyMjEsIDE3MiwgMjAxLCA2NywgCisgICAgMjM5LCAxOCwgMjM1LCAxMjQsIDIzOCwgNTksIDIzOSwgMTgsIDIzNSwgMTI0LCAyNTEsIDkyLCAyMzksIDE4LCAyMzUsIAorICAgIDEyNCwgMjUwLCAxNzQsIDIzNSwgMTI0LCAzLCAyMjIsIDMxLCAyMjAsIDgsIDIyMSwgODIsIDk5LCAyMDEsIDY5LCAyNDIsIAorICAgIDI0NCwgMjIxLCA4MiwgOTksIDIzNywgNzMsIDIxNCwgODgsIDIyMSwgODIsIDk5LCAyMDEsIDY5LCAyMzUsIDE1NywgMjIxLCAKKyAgICA4MiwgOTksIDIzNiwgMTgzLCAyMjEsIDgyLCA5OSwgMjAxLCA5NywgMjM1LCAxNTcsIDIyMSwgODIsIDk5LCAyMjUsIDY0LCAKKyAgICAyMTQsIDg4LCAyMjEsIDgyLCA5OSwgMjAxLCA5NywgMjQyLCAyNDQsIDIyMSwgODIsIDk5LCAyNDIsIDI0NCwgMjIxLCA4MSwgCisgICAgMjIwLCA4LCAyMjEsIDgyLCAzLCAyMzcsIDE4OSwgMjM3LCA3MywgMjE0LCA4OCwgMjIxLCA4MiwgMywgMjM3LCAxODksIAorICAgIDIyNSwgNjQsIDIxNCwgODgsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAyMzYsIDE4MywgMjIxLCA4MiwgMywgMjM3LCAxODksIAorICAgIDIwNywgMjI5LCAzLCAyMzcsIDE4OSwgMjM1LCAxMjEsIDIwOCwgMTA5LCAyMDksIDI1NSwgMjA4LCAxMDksIDIwNiwgOTQsIAorICAgIDYzLCAyMzksIDE0NSwgNjQsIDIwNywgMjI4LCA2NCwgMjA3LCAyMjksIDMsIDQsIDI0NiwgMTAxLCA2NCwgMjA3LCAyMjksIAorICAgIDI0OCwgMjM3LCAyNDYsIDEwMSwgNjQsIDIwNywgMjI5LCAyNDgsIDIzNywgMjQ2LCAxMDIsIDMsIDIxMywgMjIyLCAyNDYsIAorICAgIDEwMiwgMywgMjEzLCAyMjIsIDI0NiwgMTAyLCAzLCAyMDksIDM1LCAyNDYsIDEwMiwgMywgMjI0LCAxOTMsIDI0NiwgMTAyLCAKKyAgICAzLCAyMDUsIDE1MCwgMjM3LCAxMiwgMjAxLCAxNywgMjQ4LCAxMjgsIDIzNywgMTg5LCAyMzMsIDExOCwgMjQwLCAyMDAsIAorICAgIDIwNywgMTYsIDI0OCwgMSwgMjQ2LCAyNDIsIDIxMSwgMTg4LCAyMzgsIDUzLCAyMDUsIDEwOCwgMjQxLCAxNjksIDIwNSwgCisgICAgMTA4LCAyMTYsIDE3NywgMjA1LCAxMDgsIDI0NywgMTgzLCAyMzMsIDExOCwgMjE2LCAyOSwgMjA0LCAyMDUsIDI0NiwgMjQ2LCAKKyAgICAyNDgsIDEzMSwgMjEyLCAyMzIsIDIzNCwgNzMsIDIwNywgMjI2LCAyNDgsIDEzMSwgMjM5LCAyMiwgNzYsIDIyMiwgMTg5LCAKKyAgICAyMzksIDIyLCA3NiwgMjEzLCA4MywgMjM0LCAxMDAsIDIzNiwgMjI5LCAyMjUsIDM2LCAyNDYsIDEwMCwgMjIyLCAxNjIsIAorICAgIDIyNSwgMzUsIDIzNywgMTcyLCAyMjUsIDM1LCAyMjUsIDM2LCAyMzcsIDE5LCAyMjgsIDExOCwgMjAxLCAxNiwgMjIwLCAKKyAgICAyNDcsIDIwNSwgMTc4LCAyNTAsIDEzOCwgMjM1LCA4MSwgMjIyLCA0OSwgMjAxLCA4MSwgMjA2LCAyMzksIDIyNSwgNSwgCisgICAgMjQ5LCA4NSwgMjE1LCAxNTcsIDIxMywgMTcwLCAyNTEsIDEwLCAyMzUsIDY0LCAyNTEsIDEwLCAyMTYsIDY3LCAyMTYsIDcwLCAKKyAgICAyNDYsIDI0NywgMjA4LCA2MCwgMjM0LCAyMDgsIDIwOSwgNjgsIDc2LCAyMTUsIDEzNywgMjIyLCA3MiwgMjE3LCA3OSwgCisgICAgMjQ4LCAxMTIsIDIxNSwgNTcsIDIyNSwgMTYsIDIxMywgODQsIDI0MiwgMjUwLCAyMTMsIDg0LCAyNDksIDk3LCAyNDMsIDI5LCAKKyAgICAyMTMsIDgzLCAyNDIsIDE5MiwgMjYsIDIxMywgODMsIDIwOCwgOTQsIDI0OCwgODIsIDIwOCwgMjQwLCAyNDgsIDYyLCAyMzYsIAorICAgIDIwOSwgMjM2LCAyMDUsIDIxMiwgMjUzLCAyMDcsIDE3OSwgMjE1LCA1OSwgMjQyLCA3LCAyMTcsIDEyMywgMjA3LCAxOTcsIAorICAgIDIzNiwgMjA2LCAyMDksIDIyNiwgMjM3LCA3MiwgMjQ3LCAxNzcsIDMsIDIwNywgMTcyLCAyNDEsIDExMiwgMjA5LCAyMywgCisgICAgMjMyLCAyMzIsIDI0MiwgMjQ4LCAyMTAsIDczLCAyMzIsIDIzMSwgMjMyLCAyMzIsIDI0MiwgMjQ4LCAyMzksIDE3MCwgMjQzLCAKKyAgICAyOCwgMjQ2LCAyMDgsIDE0OCwgMjQ3LCAxNDgsIDIyNCwgOTMsIDI0MiwgMTgzLCAyMzMsIDE5MCwgMjE1LCA2MSwgMjA5LCAKKyAgICAyMzksIDI0OCwgMjE4LCAyNDgsIDc4LCAyMTUsIDYyLCA3NiwgMjM3LCAxLCAyNDMsIDI3LCAyMzYsIDI0NiwgMjYsIDIyNiwgCisgICAgOTUsIDIwNiwgMTk4LCAyMDEsIDMsIDIzNCwgMTc3LCAyMTIsIDQxLCAyNDgsIDk1LCAyNiwgMjQyLCAyMDIsIDIwMSwgMTMsIAorICAgIDIzNSwgMTI4LCAyNDYsIDg4LCAyMzUsIDEyOCwgMjA1LCA2MywgMjM5LCAxNTEsIDI0OCwgMjQ4LCAyMjEsIDMwLCAyNDYsIAorICAgIDExNywgMjQ4LCAyNDgsIDIyMSwgMjksIDI0OSwgMTMyLCAyNDgsIDk0LCAyMzYsIDI0NiwgMjYsIDIyNiwgOTYsIDMsIDIxNSwgCisgICAgMTI2LCAyNDgsIDk1LCAzLCAyMTUsIDc0LCAyNDMsIDE3LCAyMTUsIDc2LCAyMTMsIDg1LCAyMDAsIDIyNywgMjE1LCAyMCwgCisgICAgMjQ4LCAxNTksIDI0NywgMTc2LCAyMjcsIDI0NSwgMjQ2LCAyMDAsIDIwNSwgMTA4LCAyMzcsIDE1NSwgMjQ2LCAxOTksIAorICAgIDIzNywgNzUsIDIzNywgNzYsIDIwOCwgMjM4LCAyNDksIDk2LCAyMTYsIDEwNSwgMjE1LCA3NSwgMjQzLCA2NSwgMjQ5LCA5NywgCisgICAgMjA2LCAyNDMsIDIwNSwgMTA4LCAyNDIsIDIzMiwgMjM3LCA0NywgMjE1LCAxNTgsIDI0MSwgMTY2LCAyMjcsIDIzNiwgMjQwLCAKKyAgICAxOTMsIDI0NywgMTIzLCAyMDgsIDU5LCAyMDEsIDE3LCAyNDYsIDIyNCwgMjIxLCA4MiwgMjAyLCAyMjEsIDI0NywgNDIsIAorICAgIDIxMSwgMjIyLCAyMTEsIDI0OSwgMjM1LCA4NywgMjQ3LCAxNDQsIDIzNCwgMTI4LCAzLCAyMDUsIDIyNCwgMjE3LCA3OSwgCisgICAgMjA2LCAxMDcsIDIyNSwgMjgsIDI0OCwgODgsIDc2LCAyMzcsIDIzLCAyMjEsIDE3NCwgMjIyLCA2OSwgMjEzLCAxNDIsIAorICAgIDIxMywgODUsIDMyLCAyMjYsIDIxMywgMywgMjI3LCAyNDQsIDIwOCwgMzAsIDIyMSwgMjA4LCAyMjQsIDIyOSwgMjA5LCA2NiwgCisgICAgMjQzLCAzNCwgMjI2LCA5MiwgMjQ5LCA0LCAyNTAsIDE4NCwgMzIsIDIxOCwgMjA0LCAyNDksIDQsIDI0MSwgMTE4LCAzMiwgCisgICAgMjE4LCAyMDQsIDIzNywgOTAsIDIzNiwgMjE0LCAyNTEsIDIyNiwgMjA2LCA5LCAyNDcsIDEyNCwgMjMzLCAxMjAsIDIzNywgCisgICAgMTIxLCAyMDEsIDM3LCAyMTIsIDI0MywgMjQ2LCA4OSwgMjM3LCA2NywgMjE1LCA5MSwgMjYsIDIzNywgNzEsIDIyMSwgMjA4LCAKKyAgICAyMjEsIDQ4LCAyNDcsIDE2MiwgMjQ2LCAxNTksIDIzNCwgMTMyLCAyNTAsIDE5MywgMjE2LCAxODAsIDIwNSwgMTU4LCAyMzQsIAorICAgIDE1NywgMjQ2LCAxNDUsIDIwNiwgMTU4LCAyMDYsIDEwLCAyNDYsIDEzMSwgMjQ4LCAxMjEsIDIxNiwgMjIsIDI1MCwgMTkxLCAKKyAgICAyMDIsIDIzMCwgMjM2LCA2MywgMjQxLCAxMCwgMjM0LCA0NSwgMjA5LCA1OSwgMjIyLCAyMzAsIDI0OCwgMTcxLCAyMzYsIAorICAgIDY0LCAyNDEsIDU2LCAyNDgsIDgxLCAyMzcsIDI1LCAyMTUsIDEyNSwgMjQ3LCAxMzIsIDMyLCAyMTgsIDIwOSwgMjIxLCAyMSwgCisgICAgMzIsIDIxOCwgMjA0LCAyMTEsIDIzNSwgMjM1LCAzNCwgMzIsIDIyNiwgMjEyLCAyMDUsIDM5LCAyMDIsIDIxMCwgMzIsIAorICAgIDIxMSwgMjE0LCAyMTIsIDE1NSwgMjEwLCAxMiwgMywgMjExLCAyNTIsIDIwNiwgMTYzLCAyMTMsIDI0MSwgMjYsIDI0OSwgCisgICAgOTcsIDIwOSwgODUsIDI2LCAyMDksIDg1LCAyNDgsIDEwNSwgMjQ5LCA1OSwgMjYsIDIzMywgMTgzLCAyNDYsIDI0OCwgMjM3LCAKKyAgICA1MywgMjA5LCAzNCwgMjEyLCAxNTYsIDIwNywgMjAyLCAyMDgsIDIwNSwgMjIyLCA2OSwgMjA1LCA2NCwgMjMzLCAxMjEsIAorICAgIDIxMywgMjQyLCAyNTEsIDkzLCAyMzYsIDI1NCwgMjEyLCAxNjksIDIzNiwgMjU0LCAyMDcsIDE3NCwgMjAxLCA1MywgMjI0LCAKKyAgICAxOTgsIDIzNSwgMTA3LCAyMTMsIDI0MywgMjIxLCA2OSwgMjEzLCAyNDMsIDI0NywgMTM1LCAyNDIsIDI0MSwgMjQ5LCA1NiwgCisgICAgMjYsIDI0OSwgOTcsIDIwMiwgMTgzLCAyMzcsIDExMSwgMjMzLCAyMDQsIDIwOCwgODgsIDI2LCAyNDksIDk3LCAyMzIsIAorICAgIDIzMiwgMjMzLCAyMDQsIDIwOCwgODgsIDI2LCAyMTQsIDIxNywgMjA3LCAyMywgMjA2LCAxNjMsIDIxNiwgMTk4LCAyNiwgCisgICAgMjQ5LCA5NywgMjA5LCAzNiwgMjQ3LCAxNDAsIDIyMSwgNjMsIDI0NywgMTYwLCAyNDksIDcsIDMsIDIwNCwgOSwgMjQ4LCAKKyAgICAyNywgMjQzLCA0OCwgMjMzLCAxMTAsIDI0OCwgMjUsIDI0NiwgMTM5LCAyNDEsIDEyMiwgMjMzLCAxMTAsIDI0OCwgMjYsIAorICAgIDI0NiwgMTI5LCAyNDgsIDI2LCAyNDEsIDExNCwgMjQxLCAxMTUsIDIyOCwgMTksIDIyMCwgMTE4LCAyMTYsIDExMSwgMjA4LCAKKyAgICAxMTksIDIzMywgMTEwLCAyNDgsIDI2LCAyMzMsIDExMCwgMywgMjM2LCA0NywgMjE3LCAxMTUsIDI0OCwgMjYsIDIyNywgCisgICAgMjM2LCAyMTUsIDY3LCAyMTcsIDExNCwgMjM4LCA1OCwgMjE1LCA2NywgMjE3LCAxMTQsIDIzMywgMTE5LCAyNDksIDgxLCAKKyAgICAyNTAsIDEyOCwgMjA2LCAxNzEsIDIyMiwgMjMwLCAyMzMsIDExNSwgMjI0LCA2MCwgMjMzLCAxMTUsIDI0MywgMzIsIDIwOCwgCisgICAgNzIsIDIxMSwgMjIxLCAyNDEsIDEyNSwgMjA4LCA3MiwgMjM3LCAxNzgsIDIyOCwgMCwgMjI1LCA3NiwgMjI3LCAyMzYsIAorICAgIDI0NywgMTEzLCAyMzgsIDU4LCAyNDcsIDExMywgNjQsIDIxNiwgNDEsIDYzLCAyMTYsIDQxLCAyMDEsIDc1LCA2NCwgMjM3LCAKKyAgICA1MywgMjAxLCA3NSwgNjMsIDIzNywgNTMsIDIxMiwgMjMxLCA2MywgMjEyLCAyMzEsIDIyNSwgMTY4LCAyNDksIDExNSwgCisgICAgMjEzLCAyNDEsIDI2LCAyMDksIDIwNCwgMjQ4LCA4NiwgMjYsIDQ4LCAyNTEsIDg4LCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIAorICAgIDIwNCwgMTI2LCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgMTIzLCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgCisgICAgMTIxLCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgMTE5LCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgMTE3LCAKKyAgICAyMTMsIDIwNCwgMjIxLCA2MCwgMjE2LCAyMzUsIDIwMSwgODMsIDI0OCwgMzEsIDI0MiwgMjU1LCAyMDYsIDIsIDIyNCwgCisgICAgMjQ1LCAyMTMsIDI0NCwgMjQ3LCAxMTEsIDIzOSwgMTU4LCAyNDIsIDI0MCwgMjAxLCA0MCwgMjA5LCA0MywgMjA5LCA0MSwgCisgICAgMjMzLCAxMjAsIDIxMywgMjE2LCAyMzUsIDExMiwgMjEwLCA1OSwgMjIxLCAxMDAsIDIxMiwgMjM1LCAyNDYsIDIzNCwgMjQwLCAKKyAgICAyMDAsIDIxNSwgMTY4LCAyNDgsIDEyMiwgMjM4LCAyMDEsIDIxNywgMTI2LCAyMDgsIDIxOCwgMjEwLCA1NCwgMjQ4LCAzMCwgCisgICAgMjUxLCA1MSwgMjMzLCAxODksIDIyNSwgMTYxLCAyNDgsIDI0NiwgMjM3LCA3MSwgMjA1LCA2MywgMjM3LCA3MSwgMjQ4LCAKKyAgICAxMjksIDIwNCwgMTgyLCAyMzQsIDE1NSwgMjQ2LCAyMzUsIDI0OSwgMTMyLCAyNDYsIDIzNSwgMjM2LCAxOTksIDI0OSwgCisgICAgMTMyLCAyNDYsIDIzNSwgMjQ4LCAxNjIsIDIxNiwgNDMsIDIyNiwgODYsIDIxNSwgODAsIDIzOSwgMTQ4LCAyNDcsIDE2NCwgCisgICAgMjQ5LCAxMjAsIDI0NywgMTY0LCAyNDAsIDE5MiwgMjIxLCA2MSwgMjM3LCAxODksIDI0MywgMCwgMjM3LCAxODksIDIwNiwgCisgICAgMywgMjM3LCAxODksIDIxMywgMjQ1LCAyMzcsIDE4OSwgMjQ3LCAxMTIsIDIzNywgMTg5LCAyMzksIDE1OSwgMjM3LCAxODksIAorICAgIDIwOCwgMjAzLCAyMDEsIDQwLCAyMzMsIDEyMSwgMjM3LCAxODksIDIyMSwgMTAxLCAyMzcsIDE4OSwgMjQwLCAyMDEsIDIzNywgCisgICAgMTg5LCAyMTUsIDE2OSwgMjM3LCAxODksIDIzNiwgMjAzLCAyMzcsIDE4OSwgMjM0LCAyMDUsIDIzNywgMTg5LCAyMDAsIAorICAgIDI1MywgMjM3LCAxODksIDI0OSwgMiwgMjM3LCAxODksIDIxNiwgMTU5LCAyMzcsIDE4OSwgMjE1LCAxNjksIDIxOCwgMjE2LCAKKyAgICAyMTYsIDg1LCAyMTUsIDcsIDI0NiwgMjE5LCAyMzgsIDE1LCAyMzgsIDIyLCAyMzksIDIxLCAyMTgsIDIxNiwgMjIxLCA1OCwgCisgICAgMjA1LCAxNjMsIDY0LCAxMTUsIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjQsIDEyNywgMjE1LCA5NiwgMjQ5LCAKKyAgICAxMjcsIDIyOCwgMTAzLCA2NCwgNDksIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjQsIDUxLCAyMTUsIDk2LCAyNDksIAorICAgIDEyNywgMjI4LCAxMDMsIDIzNywgNjUsIDIzNCwgMjAwLCA1NCwgMjAxLCA3NSwgMjM0LCAyMDAsIDU0LCAyMTcsIDk5LCAKKyAgICAyMzQsIDIwMCwgNTQsIDIwNiwgMzMsIDExNSwgNTQsIDIwNiwgMzMsIDEyNywgNTQsIDI0NiwgMTMwLCAyMzQsIDE3NSwgNTQsIAorICAgIDE3NiwgMjM0LCAxNzUsIDU0LCAyNDIsIDIyNiwgMjAwLCAyNDksIDIzNCwgMTU3LCAyMzgsIDE4LCAyMjAsIDMwLCAyMDcsIAorICAgIDgyLCAyMjcsIDIyNiwgMjM5LCAxNTMsIDIyNiwgMTQ4LCAyNDgsIDE3MywgMjAwLCAyNDksIDI0NiwgMTAzLCAyMTQsIDE5OCwgCisgICAgMjM0LCAxNzksIDIxNSwgNTgsIDIyMiwgMTcwLCAyMTAsIDUsIDI1MCwgMTUxLCAyMTAsIDUsIDIzNCwgNTgsIDIxMCwgNSwgCisgICAgMjAwLCAyNDksIDIxMiwgMTAsIDIwMCwgMjQ5LCAyNDgsIDEwNCwgMjM2LCAyNTIsIDI0NywgMjQ5LCAyMjgsIDExOCwgMjA5LCAKKyAgICAxNTUsIDI0NywgMjQ4LCAyMjgsIDExOCwgMjA5LCAxNTUsIDI0OCwgNzYsIDIzNSwgMTQwLCAyMjIsIDE4MCwgMjAwLCAyNTAsIAorICAgIDIzNywgMTY5LCAyMjIsIDE4MSwgMjYsIDIwMCwgMjUxLCAyMzMsIDE5OCwgMjM0LCAxNzQsIDEyMCwgMjIyLCA0MSwgMjMzLCAKKyAgICAxOTgsIDIzNCwgMTc0LCAxMjAsIDIwMCwgMjQ4LCAyMzMsIDE5OCwgMjM0LCAxNzQsIDIxNSwgODgsIDIxNywgMTEzLCAyMDAsIAorICAgIDI1MSwgMywgMjQ4LCAxMSwgMjM5LCAxOSwgMjQ4LCA1MiwgMywgMjAzLCA1MCwgMjE2LCAxMSwgMywgMjQ4LCAxMzMsIDIzNCwgCisgICAgMjIxLCAyMjIsIDE4MSwgMywgMjM1LCA0NywgMjE1LCAyMDUsIDIyMiwgMTY2LCAyMjIsIDE4MSwgMywgMjA0LCAxOTEsIAorICAgIDIxNywgOTEsIDIyMiwgMTgwLCAyMTcsIDkxLCAyMDAsIDI1MCwgMjQ5LCAxMzEsIDI0MywgNDksIDIwMCwgMjM0LCAyMTUsIAorICAgIDEyLCAyMjcsIDIzNiwgMjE3LCAxMDksIDIyNywgMjM2LCAyMzUsIDExMSwgMjM1LCAxNjksIDI0OSwgMTMyLCAyNTEsIDc0LCAKKyAgICAyMzgsIDI3LCAyNTEsIDEzMiwgMjUxLCAxMzMsIDIyMSwgOTEsIDIyOCwgMTIzLCAyMDksIDgwLCAyMjgsIDkyLCAyNDEsIAorICAgIDExMSwgMjE2LCAxMCwgMjM1LCA0MSwgMjQyLCAxMiwgMjI0LCAxNTksIDIyMCwgMTQyLCAyMTUsIDg3LCAyMzcsIDE5MCwgCisgICAgMjIyLCAxMzAsIDIzNCwgMjIwLCAyNDksIDc1LCAyMTUsIDkwLCAyMDcsIDEwMiwgMjE1LCAxNjEsIDIyNiwgMTMwLCA4MSwgCisgICAgMjI0LCA2MCwgMjI0LCAyMzYsIDIxMywgMjYsIDIzNiwgNSwgMjA4LCA3OCwgMjI2LCAxMjksIDI0OCwgODcsIDI0MywgMiwgCisgICAgMywgMjM0LCAxMjcsIDIwMSwgNjAsIDI0OSwgMCwgMjM0LCAxMjcsIDI0OCwgNDYsIDIzNCwgMTI3LCAxMjAsIDIzNCwgMTI1LCAKKyAgICAyMDgsIDIzNiwgMjM0LCAxMjcsIDIzNSwgNTcsIDIzNCwgMTI3LCAyMzQsIDEyOCwgMywgNDgsIDI0OCwgMTI3LCAyMzQsIAorICAgIDEyNywgMjM1LCA2NCwgMjM0LCAxMjcsIDIwMCwgNDQsIDIzNCwgMTI3LCAyMTQsIDE5OSwgMjM0LCAxMjcsIDIzNCwgMTI4LCAKKyAgICAzLCAyMTMsIDg1LCAyMTMsIDk5LCAyMzQsIDEyNSwgMjM0LCAxMjgsIDI0MSwgMTY2LCAyNDEsIDY1LCAyMTAsIDg2LCAzLCAKKyAgICAzNSwgNzMsIDIyOCwgNzMsIDIzOCwgMjA0LCAxNjIsIDI0OCwgMjMsIDI1MSwgNzMsIDk5LCAyNDgsIDExMywgMjA5LCA3MSwgCisgICAgOTksIDI0NiwgODEsIDk5LCAyMDgsIDIxMiwgMjA3LCAxODEsIDk5LCAyMzksIDE0NSwgMjQxLCAyNDUsIDk5LCAyMTUsIAorICAgIDE2MiwgNzYsIDIxNSwgODEsIDIzNywgMzcsIDI0OCwgMTg1LCAyNDAsIDIzMSwgOTksIDIwOCwgMjI4LCAyNDksIDk2LCAKKyAgICAyMDYsIDUyLCAyNDksIDk2LCA2NCwgMjM3LCAyNCwgMjMzLCA4MywgMjE1LCA5NCwgOTksIDIyMSwgMTA1LCAyNDksIDExMywgCisgICAgMjQyLCAxOTUsIDIzOCwgNDUsIDgwLCAyNDAsIDE5NCwgNTQsIDI0MiwgMjQ2LCAyNDcsIDEzMywgMjQ5LCA4MCwgMywgMjAwLCAKKyAgICA0MiwgNTQsIDI0OSwgODAsIDMsIDI0MCwgMTk0LCA1NCwgMjQ5LCA4MCwgMywgMjM4LCA2MSwgNTQsIDI0OSwgODAsIDMsIAorICAgIDIxNSwgNTYsIDU0LCAyMjEsIDEwNSwgMywgMjAxLCAxMSwgMjQ3LCAxNiwgMywgMTgyLCAyMDUsIDEwNCwgMjYsIDIwMCwgCisgICAgNDIsIDU0LCAyMTEsIDE5OSwgMjE2LCA5LCAyNDMsIDcwLCAyNDgsIDUwLCAyMjEsIDE2MiwgMjM3LCAyOSwgMjQwLCAyNTMsIAorICAgIDIxNywgMzcsIDI0MSwgMiwgMjM5LCAxMDYsIDIzNywgOTcsIDIzNywgOSwgMTc2LCAyMzcsIDk3LCAyMzcsIDksIDIxNiwgCisgICAgMTk2LCAzLCAyNDIsIDE5OCwgMjE2LCAxOTYsIDIzNywgMTgyLCAyMDMsIDIyOCwgMjQ3LCAxNzAsIDIwNiwgMTk3LCAyNDcsIAorICAgIDE3MCwgMjQ3LCAxMzQsIDIyOCwgMTAzLCAyNDcsIDE2LCAzLCAxODIsIDIwNSwgMTAzLCAyNDcsIDE2LCAzLCAxOTEsIDIwNSwgCisgICAgMTAzLCAyNDksIDc3LCAyNDcsIDE1LCAyNDYsIDExNiwgMjE0LCAxOTQsIDIxMiwgMjIxLCAyMTQsIDE5NCwgMjE2LCAxMzMsIAorICAgIDIwOCwgNjgsIDIxMiwgMTYzLCAyMDUsIDk1LCAyMTIsIDE2MywgMjQ4LCAxMDksIDIwNywgMjEsIDIyNSwgMzMsIDIxOCwgCisgICAgMjA3LCAyMTgsIDIwOCwgMywgMjQxLCAxNjUsIDI0MywgMSwgMjQ2LCAxMTAsIDI0OCwgMTEwLCAxNzYsIDI0OCwgMTEwLCAKKyAgICAyMzUsIDY0LCAyNDgsIDExMCwgMjQ4LCAxMjcsIDI0OCwgMTEwLCAyMTcsIDMyLCAyNDgsIDExMCwgMjQ4LCAxMDcsIDIyMCwgCisgICAgMTM2LCAyNDksIDExNywgMjExLCAyMDcsIDIyMiwgNDIsIDIwNiwgMTc2LCAyMTMsIDE4NCwgMjE2LCAxOTQsIDIzNywgMTUyLCAKKyAgICAyMjIsIDIzMCwgMjExLCAyNDgsIDI1MSwgNDgsIDIxNCwgMjE4LCAyNTEsIDIzMiwgMjI0LCA2MiwgMjQ3LCAwLCAyMjIsIAorICAgIDU0LCAyMTYsIDI1MywgMjA1LCAxMTEsIDIyOCwgMTE0LCAyMDUsIDExMSwgMjE2LCAyMDMsIDIzOSwgNzQsIDk5LCAyMjgsIAorICAgIDExMSwgMjM4LCAxNDQsIDIzOCwgMTQ1LCAzLCAxOTEsIDU1LCA1NiwgMjQ2LCAxMTAsIDIyMiwgMTk1LCAzLCAyMjQsIDUyLCAKKyAgICAyMzcsIDUzLCAyNDYsIDExMCwgMjIyLCAxOTUsIDMsIDIxMywgMjIwLCAyMzcsIDUzLCAxNzYsIDIyMiwgMTk1LCAzLCAyMTMsIAorICAgIDIyMCwgMjM3LCA1MywgMTc2LCAyMjIsIDE5NSwgMywgMjI0LCA1MiwgMjM3LCA1MywgMjE1LCA2NCwgMjE1LCA2NSwgMjMzLCAKKyAgICAxMjQsIDIyMCwgNCwgMjIxLCAxMzQsIDIxNSwgMjEzLCAyMjEsIDEzNCwgMjE1LCAyMTQsIDMsIDg3LCA1NSwgMjUwLCAxNTYsIAorICAgIDIyNSwgMjgsIDIwMiwgMjMzLCAyMjEsIDEzMywgMjIxLCAxMzQsIDIxNSwgMjE0LCAyMTcsIDExNiwgMjE4LCAyNDIsIDIyMSwgCisgICAgMTM0LCAyMTUsIDIxMiwgMjUxLCA0OSwgMywgMjQ5LCA2NiwgMjQ3LCAxNjIsIDI0NywgMTYzLCAzLCAyMzcsIDQ2LCAyMDIsIAorICAgIDIzMCwgMjQ3LCAxNjIsIDIwNiwgMTczLCAyMTMsIDIzNiwgMjAyLCAyMjksIDIzNywgOTAsIDIxNCwgMjUwLCAyMTUsIDcxLCAKKyAgICAyMDgsIDg5LCAyMTUsIDMzLCAyNDksIDYsIDIwNCwgMTQ1LCA4NywgMjUwLCAxOTksIDI0NiwgMTEyLCA4NywgMjYsIDk4LCAKKyAgICAxNzYsIDI0NiwgMTU2LCAyNTAsIDE5OSwgMjQ2LCAxMTIsIDg3LCAyNiwgOTgsIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMjAwLCAKKyAgICAzLCA0NCwgMTEyLCAyMTYsIDI0MiwgMjQ2LCAxMTIsIDE5MSwgMjYsIDE4MiwgMTc2LCAyNDYsIDE1NiwgMjUwLCAxOTksIAorICAgIDI1MSwgNDcsIDE5MSwgMjYsIDE4MiwgMTc2LCAyNDYsIDE1NiwgMjUwLCAxOTksIDEyOCwgMjQ4LCA0OSwgOTksIDEyMiwgCisgICAgMjQ4LCA0OSwgOTksIDIwOCwgMjMzLCAzLCAyNDcsIDE1NSwgOTcsIDIwOCwgMjMyLCAyMDgsIDIzMywgMywgMTEyLCAyMDksIAorICAgIDEsIDIwMSwgNzcsIDIwOCwgMjMzLCAzLCAxMjYsIDIwOSwgMSwgMjAxLCA3NiwgMjQ5LCA0OSwgMjM4LCAyMDQsIDIxNSwgCisgICAgMTE4LCAyMjUsIDIzLCAyMjIsIDIwNywgMjM1LCAxMjgsIDIxMywgNDEsIDIyMiwgMjA3LCAyMzUsIDEyOCwgMjI0LCAxMDQsIAorICAgIDMsIDIyOCwgODQsIDIxNiwgNDcsIDI0NiwgMTEwLCAyMjQsIDEwNCwgMywgMjI2LCAyMTQsIDIyNiwgMjE0LCAyMjQsIDEwMywgCisgICAgMTc2LCAyMjQsIDEwMywgMjQ4LCAyMzAsIDI0OCwgMjMxLCAzLCAyNDcsIDE1NSwgOTcsIDI0OCwgMTA4LCAyMjQsIDE2NywgCisgICAgOTksIDIxMywgMjM3LCAyNDcsIDI0MywgMjQ5LCAxMzAsIDMsIDk4LCA1NSwgNTYsIDIzOCwgMTcxLCAzLCA5OCwgNTUsIDU2LCAKKyAgICAyMTcsIDc5LCAzLCAyMzgsIDQzLCAxMzQsIDMsIDQ5LCA1MSwgNTUsIDU2LCAyMDksIDksIDMsIDg3LCA1NSwgNTYsIDIwNSwgCisgICAgMTU4LCAzLCAxODIsIDU1LCA1NiwgMjE4LCAyNDIsIDExMiwgMjAzLCAyNTMsIDIzOCwgMjMwLCA5OSwgMjI2LCAyMTEsIAorICAgIDIwNiwgMTY2LCAyMjgsIDc4LCAxNiwgMzYsIDgsIDYsIDIyNCwgMjM1LCAyMjgsIDc4LCAxNiwgMzYsIDgsIDQsIDIyNCwgCisgICAgMjM1LCAyMjgsIDc4LCAxNiwgMzYsIDIxOCwgOTQsIDIyOCwgNzgsIDE2LCAzNiwgMjA3LCAxMTYsIDIyOCwgNzgsIDE2LCAKKyAgICAzNiwgOCwgMjI0LCAyMzUsIDIzNywgNzcsIDIzOCwgMjA0LCAyMDUsIDE1MywgMjAwLCAyMjUsIDIzNCwgMjA2LCAyMTgsIAorICAgIDc3LCAyNiwgMjQ4LCAxMTUsIDIzMywgMjA1LCAyMTUsIDE0MywgMjIxLCAyMDcsIDIwNiwgMTc0LCAyNDIsIDIxNiwgMjQ5LCAKKyAgICA5NywgMjA5LCAxMDYsIDIxNSwgOTgsIDIwOCwgMTEwLCAzLCAxMDEsIDI0MCwgMTgyLCAyMjcsIDIzNiwgMTYsIDM2LCAyNDgsIAorICAgIDI0MywgMjA1LCA5MywgMjM4LCAxODcsIDYzLCA1MiwgMjQ3LCAyNDMsIDY0LCA1MiwgMjQ3LCAyNDMsIDIyNSwgNzEsIDIxMywgCisgICAgMTcwLCAyNDYsIDE1NSwgMjI1LCA3MSwgMjQ4LCAxMjcsIDI0NiwgMTU1LCAyMjUsIDcxLCAyMTcsIDMyLCAyNDEsIDY0LCAKKyAgICAyMjUsIDcxLCAyNDgsIDEyNywgMjQxLCA2NCwgNCwgMjE3LCAzMiwgMjQxLCA2NCwgNCwgMjQ4LCAxMjcsIDI0MSwgNjQsIAorICAgIDIwMywgMjI3LCAyMTMsIDE3MCwgMjA1LCA5OCwgMjM5LCAxNjYsIDIxMywgMTcwLCAyMDUsIDk4LCAyMDMsIDIyNywgNCwgCisgICAgMjEzLCAxNzAsIDIwNSwgOTgsIDIzOSwgMTY2LCA0LCAyMTMsIDE3MCwgMjA1LCA5OCwgMjI0LCA1NCwgNTEsIDIxMCwgMTAxLCAKKyAgICA2NCwgMjQ2LCAxNTUsIDIwMywgMjI1LCA1MSwgMjEwLCAxMDEsIDY0LCAyNDYsIDE1NSwgNDQsIDI0MiwgMjM1LCAyMTUsIAorICAgIDg0LCAyNDIsIDIzNSwgMjE1LCA4NSwgMywgMjM0LCAyMTIsIDU3LCAyNDIsIDIzNSwgMjE1LCA4NCwgMjE4LCAyMTEsIDQ5LCAKKyAgICAyMTAsIDE3MCwgMywgMTI2LCAyNDAsIDE4MCwgMjE4LCAyMTEsIDUxLCAyMTAsIDE3MCwgMywgMTI2LCAyNDAsIDE4MCwgMTYsIAorICAgIDM2LCAyMjIsIDE0NCwgMjQ3LCAyMiwgNjQsIDgsIDI0MiwgMjM0LCA4MCwgOCwgMjQyLCAyMzQsIDI0NywgNjAsIDI0MiwgCisgICAgMjM0LCAyMTcsIDg3LCA5OSwgMjM5LCAxNjksIDc2LCAyMTYsIDcxLCAyMjcsIDEwMywgMjIxLCA3NCwgMjA3LCAxMTAsIAorICAgIDIyMiwgMzcsIDMsIDIxOSwgMTE0LCAyNDgsIDY1LCAyNDgsIDgzLCA3NiwgMjMzLCAzNSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAKKyAgICAxMTIsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDEyMCwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgCisgICAgMTI2LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzYsIDIyOSwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIAorICAgIDE5MCwgMjM3LCA2MSwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA5LCAxMDYsIDIxNywgMTMyLCAyNDYsIDExNCwgCisgICAgMjM3LCAxOTAsIDIxMCwgMTM2LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDIzMiwgMjE3LCAxMzIsIAorICAgIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjE5LCAxMTQsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwNiwgMTY3LCAKKyAgICAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDIwMCwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgCisgICAgMjA0LCAxNjUsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIxNywgNzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA0LCAKKyAgICAxMzksIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA2LCAzOSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzYsIDIyNSwgMjQ2LCAxMTQsIAorICAgIDIzNywgMTkwLCAyMzcsIDU5LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwOSwgMTAyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIxMCwgCisgICAgMTM0LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzOCwgMjMxLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIxOSwgMTEyLCAyNDYsIAorICAgIDExNCwgMjM3LCAxOTAsIDIwNiwgMTY1LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzOCwgMTk4LCAyNDYsIDExNCwgMjM3LCAKKyAgICAxOTAsIDIwNCwgMTYzLCA1MSwgMjA4LCAyMzIsIDUxLCAyMDgsIDIzMywgMywgMTEyLCAyMDksIDEsIDIwMSwgNzcsIDUxLCAKKyAgICAyMDgsIDIzMywgMywgMTI2LCAyMDksIDEsIDIwMSwgNzYsIDI0OCwgMTgsIDI0OCwgMTksIDMsIDIwOSwgMSwgMjAxLCA3NiwgCisgICAgMjEzLCAyNSwgMjQ4LCAyMzAsIDI0OCwgMTEwLCAyNDcsIDE1MywgMjIyLCAxNjcsIDI0NiwgMTEzLCA2MywgMjA5LCA4MSwgCisgICAgMjYsIDI0MiwgMjMzLCAyMTgsIDI0MiwgMjE1LCAxNDksIDIzMywgMTk3LCAyMjIsIDE4MSwgMjI4LCAxMTgsIDI0NywgMjUxLCAKKyAgICAyMDcsIDI0MiwgMjI0LCAyMjgsIDIwOSwgNjksIDIxNywgMzQsIDIwOCwgMTk0LCAyNDEsIDI1MCwgMjA3LCAyMjQsIDIwOCwgCisgICAgMjIxLCAyMDgsIDIyMiwgMjAxLCA2MSwgMjI3LCAxNDgsIDIyMiwgMTgxLCAyNDIsIDExLCA0OSwgMjM0LCAyMDAsIDIwNiwgCisgICAgMTc2LCAyMTMsIDE4NCwgMjA2LCAxNzYsIDIxMywgMTg1LCAzLCAyMTYsIDE5NSwgNTEsIDIzNCwgMjAwLCAyMDYsIDE3NiwgCisgICAgMjEzLCAxODQsIDY0LCAyMDUsIDEzOSwgMjA2LCAxNzUsIDYzLCAyMDUsIDEzOSwgMjA2LCAxNzUsIDIwNiwgMTc2LCAyMTcsIAorICAgIDc5LCAyMDUsIDE1OCwgNzYsIDIyMSwgMTMwLCAyNDYsIDEzNCwgMjIxLCAxMzQsIDIxNSwgMjEzLCAyNDksIDEzMCwgNzYsIAorICAgIDIzOCwgMTQ0LCAyMDgsIDExNSwgMjM4LCAxNDQsIDIzOCwgMTQ1LCAzLCAyMjQsIDE5MywgMjM3LCAxNiwgMjM4LCAxNDQsIAorICAgIDIxNiwgNDgsIDExOSwgMjA4LCAxMTUsIDIzOCwgMTQ0LCAyMjQsIDE2NiwgMjE2LCAxMzIsIDYzLCAyMTQsIDE5NCwgMjI0LCAKKyAgICA1NCwgNDksIDIxNiwgNDYsIDIyNCwgNTQsIDQ5LCAyNDksIDkyLCAyMTYsIDQ3LCAyMjQsIDU0LCA0OSwgMjM2LCAyMzEsIAorICAgIDIxNiwgNDcsIDIyNCwgNTQsIDQ5LCAyMTYsIDE4OSwgMjI0LCA1NCwgNDksIDI0MiwgMjQ5LCA0OSwgMjAwLCAyMTksIDIzNCwgCisgICAgMTk5LCAyMDQsIDE4NSwgMjE3LCA5OSwgMjM0LCAyMDAsIDU0LCAyMTMsIDIyMCwgMjM0LCAyMDAsIDMsIDIzNywgODIsIAorICAgIDIwOCwgMjExLCAyMTMsIDEwNSwgMjEzLCAyMjAsIDIzNCwgMjAwLCAzLCAyMzcsIDgyLCAyMDgsIDIxMSwgMjEzLCAxMDUsIAorICAgIDIwNiwgMzMsIDExNSwgNTQsIDIxMywgMTA1LCAyMDYsIDMzLCAxMjcsIDU0LCAyMTMsIDEwNSwgMjAyLCAyMzIsIDIzNCwgCisgICAgMTk5LCAyMTMsIDEwNSwgMjM0LCAyMDAsIDMsIDEwMSwgMjM3LCA4NywgMjM4LCAzMiwgMjEzLCAyMjAsIDIzNCwgMjAwLCAzLCAKKyAgICAyMTYsIDExMCwgMjQ4LCAyMDYsIDEwMSwgMjYsIDIxMywgMjcsIDIzNywgODEsIDY0LCAxMjcsIDIxNSwgOTYsIDQ5LCAyMzQsIAorICAgIDIwMCwgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgNDksIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIDUxLCAKKyAgICAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDYzLCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2MywgNTEsIAorICAgIDIxNSwgOTYsIDIyOCwgMTAzLCA2MywgNDksIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjMsIDUxLCAyMTUsIDk2LCAKKyAgICAyNDksIDEyNywgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgMTE1LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDY0LCAKKyAgICAxMjcsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjMsIDExNSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCAKKyAgICA2MywgMTI3LCAyMTUsIDk2LCAyMjgsIDEwMywgNjMsIDExNSwgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2MywgCisgICAgMTI3LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDYzLCAyMzQsIDEyNywgMjQxLCAxMTAsIDI0MywgNzAsIDIyNiwgCisgICAgMjEzLCAyNiwgMjIxLCA2MCwgMTI2LCAyMjAsIDEyLCAyNDMsIDY5LCAyMTUsIDgsIDIxNSwgMTA0LCAyNDcsIDE3MiwgNjMsIAorICAgIDIzNCwgMTY1LCAyMTAsIDU1LCAyMzcsIDI5LCAyNDAsIDI1MywgNjQsIDIzNCwgMTY1LCAyMTAsIDU1LCAyMzcsIDI5LCAKKyAgICAyNDAsIDI1MywgMjA5LCAyMywgMjEwLCA1NSwgMjM3LCAyOSwgMjQwLCAyNTMsIDIwNiwgMjM1LCAyNDcsIDExNywgMjAxLCAKKyAgICA2LCAyMjYsIDIxMiwgMTEyLCAyNDcsIDI0NCwgMjIxLCA2MCwgMTIwLCAyNDcsIDI0NCwgMjIxLCA2MCwgMTI2LCAyNDcsIAorICAgIDI0NCwgMjIxLCA2MCwgMjA1LCAxMzAsIDQwLCAyMTYsIDksIDI0MywgNzAsIDIzNCwgMTY1LCAyNDAsIDI1MywgMjExLCAKKyAgICAyMDksIDIxNSwgOSwgMjMyLCAyMjUsIDIzNywgMTUyLCAyMzIsIDIyNSwgMjE3LCAzNywgMjQxLCAzLCAyMzIsIDIyNSwgCisgICAgMjQwLCAyMDUsIDMsIDIwNiwgMTI2LCAyNDAsIDIwNSwgMywgMjA2LCAxMjcsIDI2LCAyMTUsIDE5OCwgMjQwLCAyMDUsIDMsIAorICAgIDIxNSwgMTk4LCAyMzYsIDIxNiwgMywgMjE1LCAxOTgsIDIzNiwgMjE2LCAzLCAyMDUsIDIzOCwgMjM2LCAyMTYsIDMsIDI1MSwgCisgICAgODYsIDIwMCwgMTk1LCA2MywgMjM3LCA5LCAyMzcsIDksIDE3NiwgMjM3LCA5LCAyNDcsIDEzNCwgMTI0LCAyNDAsIDIzOCwgCisgICAgMjQ3LCAxMzQsIDIzNywgOTcsIDI0OCwgNzgsIDIzNywgOTcsIDI0NywgMTg1LCAyMzgsIDE4MSwgMjE4LCAyMDksIDIzOCwgCisgICAgMTgxLCAyMTgsIDIxMCwgMjE2LCAxOTUsIDIzOCwgMTgxLCAyMTgsIDIxMCwgMjE2LCAyMDEsIDIxOCwgMjA5LCAyMTgsIAorICAgIDIxMCwgMjE2LCAxOTUsIDIxOCwgMjEwLCAyMTYsIDIwMSwgMjM4LCAxODEsIDI0MCwgMjA0LCAyMzgsIDE4MSwgMjE2LCAKKyAgICAxOTUsIDIzOCwgMTgxLCAyMTYsIDE5MywgMjQwLCAyMDQsIDIxNiwgMTk1LCAyMTYsIDE5MywgMjAxLCA4NywgMjA4LCAyMTgsIAorICAgIDIxOCwgMjEwLCAyMTYsIDIwMSwgMjA4LCAyMTgsIDI0NywgMTcxLCAyMTYsIDIwMSwgMjQxLCAxMTAsIDIwMSwgMTUsIDIyMSwgCisgICAgMTU5LCAyMjIsIDEyMCwgMjE2LCAyNDQsIDI0NiwgMTEyLCA1MSwgMjYsIDQ5LCAyMTAsIDE3MCwgMjUwLCAxOTksIDI0NywgCisgICAgMTU1LCAyMDAsIDE5NSwgMjI4LCAxMDksIDIzNywgMywgMjA5LCA5MCwgOTksIDI0MSwgMTY0LCAyMzcsIDMsIDIwOSwgOTAsIAorICAgIDk5LCAyNDMsIDcxLCA0MCwgMjI2LCAyMTQsIDIxMiwgMjQ0LCAyMjAsIDQsIDIxNiwgMTk2LCAzLCA0NCwgMjA2LCAxMjYsIAorICAgIDIwOCwgODAsIDI0NywgMTUsIDI0MiwgNDEsIDIyNiwgOTUsIDIyNCwgMTYwLCAyMDgsIDIzMSwgMjM0LCAxMzcsIDIyOCwgCisgICAgMTE4LCAyMDksIDE1NSwgMTI2LCAyMTMsIDE5NSwgNTYsIDEyNiwgMjEzLCAxOTUsIDU3LCAxMjYsIDIxMywgMTk1LCAyMjUsIAorICAgIDI4LCAxMjYsIDIxMywgMTk1LCAyMTMsIDQ2LCA0OSwgMjA4LCAyMjgsIDI0OCwgMzUsIDUxLCAyMDgsIDIyOCwgMjQ4LCAzNSwgCisgICAgMTIwLCAyMDgsIDIyOCwgMjQ4LCAzNCwgMTI2LCAyMDgsIDIyOCwgMjQ4LCAzNCwgNDksIDIwNiwgNTIsIDI0OCwgMzUsIDUxLCAKKyAgICAyMDYsIDUyLCAyNDgsIDM1LCA0OSwgMjUxLCA3MywgMjQ4LCAzNSwgNTEsIDI1MSwgNzMsIDI0OCwgMzUsIDIyMSwgODYsIAorICAgIDI0OCwgMzUsIDIyNCwgMTk0LCAyMjEsIDg2LCAyNDgsIDM1LCAyMjQsIDE5NCwgMjIxLCA4NSwgMjQ5LCA5NCwgMTAwLCAzLCAKKyAgICAyNDksIDkzLCAyNDksIDk0LCAxMzUsIDIwMCwgMTk1LCAyNDksIDk0LCAxMDAsIDMsIDEzNSwgMjAwLCAxOTUsIDI0OSwgOTQsIAorICAgIDI3LCAxMzUsIDIwMCwgMTk1LCAyNDksIDk0LCAxMDAsIDMsIDI3LCAxMzUsIDIwMCwgMTk1LCAxNjIsIDI0NywgNywgODEsIAorICAgIDI0OSwgOTQsIDEwMCwgMywgMjcsIDI0NywgNiwgMjAwLCAyMzMsIDIyMiwgMTY0LCAyMjEsIDY1LCAyMzYsIDE4NCwgMjA1LCAKKyAgICAxODAsIDIwNSwgMTM1LCAyMDgsIDEwMSwgNzYsIDIyNCwgMjA4LCAyMDksIDE1NiwgNzYsIDIyNywgMjM3LCAyMjEsIDQ2LCAKKyAgICAyMzUsIDYxLCAyMzcsIDE4OSwgMjM1LCA2MSwgMjM3LCAxOTAsIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDIzNywgMTkwLCAzLCAKKyAgICAyMDYsIDE5MywgNzYsIDIyNywgMTUwLCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU4LCAyMDksIDQ3LCAyMzcsIAorICAgIDE5MCwgMywgMTc2LCAyMjEsIDU5LCAyNiwgMjA5LCA0NywgMjM4LCAxNSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDE3NiwgCisgICAgMjIxLCA1OSwgMjYsIDI0NiwgODMsIDIwNywgMTgwLCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU5LCAyNiwgCisgICAgMjA2LCAwLCAyMzgsIDE1LCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMjM0LCAyMTEsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAKKyAgICAyMzMsIDEyMywgMjAxLCA4LCAyMzcsIDE4OSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDIzNywgCisgICAgMTkwLCAyMTEsIDI0MCwgMjQxLCAxNDQsIDIzNywgMSwgMjEzLCAxNDUsIDIzNywgMTg5LCAyMDksIDQ3LCAyMzcsIDE5MCwgCisgICAgMywgMjM0LCAxMjYsIDIzOCwgMTUsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAyMDcsIDIyNCwgMjA5LCA0NiwgMjM3LCAxODksIAorICAgIDIyMCwgMTAsIDIzNywgMTg5LCAyMzgsIDM0LCAyMzcsIDE4OSwgMjA0LCAzLCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDI0NiwgCisgICAgODMsIDIwNywgMTgwLCAyMTYsIDM5LCAyMzcsIDE4OSwgMjQzLCA2MiwgMjM3LCAxODksIDI0MywgNjMsIDIzNywgMTg5LCAKKyAgICAyMjYsIDEyOCwgMjM3LCAxODksIDIzNywgMTkwLCAyMDYsIDM2LCAzNSwgMjI2LCAxMjksIDIyNiwgMTI4LCAyMzcsIDE5MCwgCisgICAgMywgMjA5LCA0NywgMjM4LCAxNSwgMjI2LCAxMjgsIDIzNywgMTkwLCAzLCAyNDYsIDExMCwgMjM4LCAxNSwgMjM3LCAxOTAsIAorICAgIDMsIDIwOCwgMzEsIDIwNSwgMTYzLCAyMzcsIDE5MCwgMywgMjA4LCAzMSwgMjA1LCAxNjQsIDI2LCAyMDEsIDgsIDIzOCwgCisgICAgMjIsIDIzNywgMTkwLCAzLCAyMDgsIDMxLCAyMDUsIDE2NCwgMjYsIDIwNiwgMCwgMjM4LCAxNSwgMjQxLCA0LCAyMzcsIAorICAgIDE4OSwgMjAwLCAyMzIsIDIzNywgMTg5LCAyNTEsIDY3LCAyMzcsIDE4OSwgMjE1LCA1NSwgMjM3LCAxODksIDI0MiwgMjE4LCAKKyAgICAyMzcsIDE4OSwgMjE2LCAxMywgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyMjQsIDc3LCA3NiwgMjA1LCA3NSwgMjQxLCA0LCAKKyAgICAyNDcsIDI0NywgMjEzLCAxNDUsIDIzNywgMTg5LCAyMzYsIDE5NSwgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjUxLCAKKyAgICA2NSwgMjM3LCAxODksIDIzNywgMTQ1LCAyMzcsIDE4OSwgMjAxLCA2MiwgMjM3LCAxODksIDIwOSwgNzAsIDIzNywgMTg5LCAKKyAgICAyMDUsIDIxOCwgMjM3LCAxODksIDIzNSwgNjIsIDIzNywgMTg5LCAyMjQsIDYzLCAyNDIsIDIxOCwgMjM3LCAxODksIDIzNywgCisgICAgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDIzMywgNzIsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU5LCAyNiwgCisgICAgMjQ2LCA4MywgMjA3LCAxODAsIDIzNywgMTkwLCAyMTEsIDIxMSwgMjI4LCAxMTgsIDIzNywgMTQ2LCAyNTAsIDE2MiwgMjM3LCAKKyAgICAxODksIDIzNywgMjEsIDIzNywgMTg5LCAyMDksIDcxLCAyMzcsIDE4OSwgMjQwLCAyMzEsIDIzNywgMTg5LCAyMzcsIDE5MCwgCisgICAgMjAxLCAzLCAyMjEsIDU4LCAyMzcsIDE5MCwgMywgMjIyLCA2OCwgMjIyLCAxMzIsIDIzNSwgNjEsIDI0NywgMTEyLCAyMzcsIAorICAgIDE5MCwgMywgMjA5LCA0NywgMjM4LCAxNSwgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAyMDYsIDE5MywgNzYsIDIyNywgMTUwLCAKKyAgICAyMDksIDQ3LCAyNDcsIDExMiwgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjA5LCA0NywgMjQ3LCAxMTIsIDIzNywgCisgICAgMTkwLCAzLCAyMzQsIDEyNiwgMjM4LCAxNSwgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAyMDAsIDIxNywgMjA5LCA0OCwgMjI2LCAKKyAgICAxMjgsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMjQ2LCAxMTAsIDIzOCwgMTUsIDIxNSwgNTUsIDI0NywgMTEyLCAyMzcsIAorICAgIDE4OSwgMjQyLCAyMTgsIDI0NywgMTEyLCAyMzcsIDE4OSwgMjAxLCA2MiwgMjQ3LCAxMTIsIDIzNywgMTg5LCAyMDksIDY0LCAKKyAgICAyMzYsIDE5NSwgMjM3LCAxODksIDIwOSwgNjQsIDIwOSwgNDcsIDIzNywgMTg5LCAyMDMsIDIyMiwgMjM3LCAxODksIDIzNywgCisgICAgMTkwLCAzLCAyMTIsIDI0MiwgMjM4LCAxNSwgMjM3LCAxOTAsIDMsIDIxOCwgMjQyLCAyMzUsIDEwNCwgMjM1LCAyNDAsIAorICAgIDIzNywgMTkwLCAzLCAyMTcsIDk5LCAyMzUsIDI0MCwgMjE2LCAxMSwgMjQ4LCA4NCwgMjQxLCAxNTksIDIxMSwgMTg5LCAKKyAgICAyMjEsIDEwMCwgMjM0LCAxMjksIDIyMSwgMTAwLCAyMDgsIDIzNCwgMjIxLCAxMDAsIDIzNCwgMTY3LCAyMTYsIDExLCAyMTMsIAorICAgIDIxOSwgMTEyLCAyMzQsIDE5OSwgMjE2LCAxMSwgMjEzLCAyMTksIDI0OCwgOTYsIDIzNCwgMTc1LCAyMjgsIDExOCwgMjQ3LCAKKyAgICA2MiwgMjE2LCAxMSwgMjM2LCAxOTQsIDIxNiwgMTEsIDMsIDIxNSwgNTUsIDIzNywgMTg5LCAyMTYsIDExLCAzLCAyMzcsIAorICAgIDEwLCAyMzQsIDE3NCwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgCisgICAgMjI1LCAzNSwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAKKyAgICAzNSwgMjA0LCAxODUsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA0LCAxODUsIDIwOCwgMjU0LCAyMDEsIAorICAgIDQ4LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDQsIDE4NSwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDQsIDE4NSwgCisgICAgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIyNSwgMzUsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjAyLCAyMTYsIAorICAgIDIyNSwgMzUsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgMTU3LCAyMzksIDE0LCAKKyAgICAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIAorICAgIDM1LCA4MCwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgODAsIDIwOCwgMjU0LCAyMDEsIDQ4LCAKKyAgICAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgODAsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIAorICAgIDgwLCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgCisgICAgMjQ4LCAzMiwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIDI0OCwgMzIsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjQ4LCAKKyAgICAzMiwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDI0OCwgMzIsIDgwLCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDI0OCwgCisgICAgMzIsIDgwLCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgMjQ4LCAzMiwgODAsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgCisgICAgMjQ4LCAzMiwgODAsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyNDgsIDMyLCAyMzMsIDE5NiwgMjE0LCA3MiwgNTIsIAorICAgIDIxNywgMjEsIDIzMywgMTk2LCAyMTQsIDcyLCA1MiwgMjE3LCAyMiwgMjI4LCAxMTgsIDYzLCAyMDgsIDE5MywgMjA5LCAxOCwgCisgICAgMjE0LCA3MiwgNTIsIDIxNywgMjEsIDIwOSwgMTgsIDIxNCwgNzIsIDUyLCAyMTcsIDIyLCAyMjgsIDExOCwgNjMsIDIwOCwgCisgICAgMTkzLCA5OCwgMjEyLCAyNDgsIDE4MiwgMjEyLCAyNDgsIDg3LCAyMTIsIDI0OCwgMTkxLCAyMTIsIDI0OCwgMTM1LCAzMywgCisgICAgMjM4LCA4MiwgMjE3LCAyMSwgODAsIDEzNSwgMzMsIDIzOCwgODIsIDIxNywgMjEsIDMzLCAxNzYsIDIzOCwgODIsIDIxNywgCisgICAgMjEsIDgwLCAzMywgMTc2LCAyMzgsIDgyLCAyMTcsIDIxLCA4MCwgMjUxLCA5MCwgMjE3LCAyMSwgMjA3LCAxODMsIDI1MSwgCisgICAgOTAsIDIxNywgMjEsIDQzLCA4MCwgNTMsIDIwNCwgMTg1LCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDQzLCAKKyAgICA4MCwgNTMsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgNDMsIDgwLCAxMjgsIDUzLCAyNDYsIDcxLCAyMTQsIAorICAgIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAyMjgsIDU5LCAyMTcsIDIxLCA0MywgMjI4LCA1OSwgMjE3LCAyMSwgODAsIDQzLCAKKyAgICAyMjgsIDU5LCAyMTcsIDIxLCAyMDIsIDI0NiwgODAsIDIwOSwgMTYsIDIwMiwgMjQ2LCA4MCwgMjEzLCAxMDYsIDIwOSwgMTYsIAorICAgIDI0NywgNSwgMjQ4LCAxMjEsIDIxMywgMTA2LCAyNDcsIDUsIDI0OCwgMTIxLCAyMTIsIDI0OCwgMjM0LCAxMTAsIDIwOCwgCisgICAgOTYsIDIyNCwgMTAxLCAyMTMsIDIyNSwgMjQ3LCAxMzUsIDIzNCwgNTUsIDIwNSwgMTIzLCAyMzQsIDU1LCAyMDUsIDEyNCwgCisgICAgMywgMjQ4LCAyMSwgMjE4LCAyMTYsIDIwNSwgMTIzLCAyMjIsIDEzLCAxNjIsIDIxMywgMjI2LCAyMDgsIDEwMiwgMjA1LCAKKyAgICAxMjEsIDIwNSwgMTIyLCAyNDcsIDEzNSwgMjQ3LCAyNTIsIDIxNywgNzUsIDI0NywgMjUyLCAyMDUsIDcxLCAyNDcsIDI1MywgCisgICAgMjA4LCA3NiwgMjIxLCAxNjMsIDI1MSwgOTQsIDIzNywgNzgsIDIzOCwgMTY0LCAyMTUsIDg4LCAyNDcsIDEzNSwgMjE3LCAKKyAgICA3NSwgMjE1LCA4OCwgMjQ3LCAxMzUsIDIwNiwgMjExLCAyMTcsIDc1LCAyMDYsIDIxMSwgMjUwLCAxMjcsIDIxNywgNzUsIAorICAgIDI1MCwgMTI3LCAyMTMsIDE3NywgMjAzLCA1MSwgMjQxLCAxNDAsIDIwNSwgNjIsIDI1MCwgMTk0LCAyMjQsIDY4LCAyMDUsIAorICAgIDEyOSwgMjIxLCA5NCwgMjIxLCA2NCwgMjEzLCAyMjQsIDIwNywgMTk2LCAyMTMsIDIyNCwgMjIxLCA2NCwgMjQ3LCAxODQsIAorICAgIDI1MSwgMjA3LCAyMDUsIDEyMCwgMjEwLCAxNywgMjEyLCAyMTgsIDIwOCwgMjI2LCAyMzMsIDE3NywgMjA1LCAxMjcsIDIyNCwgCisgICAgMTk2LCA4MywgMjA1LCAxMjcsIDIyNCwgMTk2LCAyNDMsIDQ5LCA1NCwgMjE1LCA4OCwgMjQ3LCAxMTksIDIxMywgOTksIAorICAgIDIyNCwgMTk2LCAyMDUsIDk1LCAyMzcsIDU0LCAyMTcsIDc5LCAyMTUsIDY2LCAyNDAsIDE4NSwgMjE4LCAyNDIsIDIzOCwgCisgICAgMTUwLCA1NCwgMjA5LCA0NSwgOTksIDIxOCwgMjQyLCAyMDksIDQ1LCA5OSwgMjE0LCAxOTMsIDIyNCwgMTQ5LCAyMjgsIAorICAgIDExOCwgMjI4LCA5LCAyMTUsIDEzNCwgOTksIDI0MCwgMjEyLCAyMTgsIDIxNSwgMjI0LCAxNDksIDk5LCAyMTUsIDYwLCAKKyAgICAyMDEsIDgzLCA5OSwgMjE4LCAyMzEsIDIwMSwgODMsIDk5LCAyNDgsIDE4NCwgMjE4LCAyNDIsIDI0OCwgMTgzLCAyNDgsIAorICAgIDE4MiwgMjIxLCA2NCwgMjQ4LCAxODIsIDIxNiwgNjMsIDIxOCwgMjQyLCAyMTYsIDYyLCAyNDYsIDIyNiwgMjQyLCAyMjcsIAorICAgIDIyMiwgMzYsIDk5LCAyMDAsIDI0NywgOTksIDIxMywgMTE1LCAyNDksIDEzMiwgOTksIDIwNSwgMTgxLCAyMDEsIDgzLCAKKyAgICAyNDYsIDEwNywgMjA5LCAyMzEsIDI0OSwgNTIsIDI0OSwgNTAsIDIxNiwgOTYsIDI0MywgMzMsIDI0MiwgMTgxLCAyNDksIAorICAgIDExMCwgMjQ2LCAxMzUsIDQ5LCAyMjQsIDMyLCAyMDUsIDk5LCAzLCAyMTIsIDIxOSwgMjQzLCAxNCwgMjE0LCAyNTMsIDU0LCAKKyAgICA0NCwgMjI4LCA5MiwgMjA4LCAyNTUsIDI0OCwgNzUsIDk5LCAyMzUsIDEzOSwgOTksIDI0MywgNywgMjYsIDIyNSwgODEsIAorICAgIDIwOSwgNzEsIDI1MSwgMjQ4LCAyMDksIDI1MywgMjQ5LCAxMDksIDI0OCwgMjI5LCAyNDgsIDIzMCwgMjQ4LCAyNTMsIDIxNSwgCisgICAgMTM0LCA3NiwgMjAwLCAyMzEsIDIxNywgMTI5LCA1NCwgMjA5LCAyNTMsIDIwNSwgNzIsIDIzNCwgMjA3LCAyNiwgMjAwLCAKKyAgICAyMjUsIDIxMCwgMzAsIDIxNywgMTA0LCAyMzksIDE0MiwgMjIxLCA2OCwgMjEzLCAyMjUsIDIwNSwgMTMxLCAyMjEsIDcwLCAKKyAgICAyNDgsIDEyMCwgMjAzLCAyMjcsIDIyMSwgMTc0LCAyNTEsIDE2NCwgMjAzLCAyMjcsIDI1MSwgMTY0LCAyMDMsIDIyNywgNCwgCisgICAgMjUxLCAxNjQsIDQsIDI1MSwgMTY0LCAyMTgsIDIyMCwgMjUxLCAxNjQsIDI1MSwgMTY1LCAyNDEsIDEyNCwgMjUxLCAxNjUsIAorICAgIDI1MCwgMjA1LCAyMTEsIDI0NywgMjE3LCA3NSwgMjM3LCA3OCwgMjM4LCAxNjQsIDI0MSwgNTQsIDIyNCwgMTAxLCAyMTYsIAorICAgIDk5LCAyMTAsIDE3LCAyMTEsIDIxNSwgMjIxLCA3MCwgMjExLCAyMTUsIDI0NywgMTQ2LCAxMzksIDE2LCAzNiwgMjE0LCA2OCwgCisgICAgMTM5LCAxNiwgMzYsIDI1MSwgMTY2LCAxMzksIDE2LCAzNiwgMjM3LCA3NywgMTM5LCAxNiwgMzYsIDIzOSwgMTcsIDEzOSwgCisgICAgMTYsIDM2LCAyMDEsIDgyLCAxMzksIDE2LCAzNiwgMjUwLCAyNTUsIDEzOSwgMTYsIDM2LCAyNTEsIDAsIDIxMywgMTY0LCAKKyAgICAxMzksIDE2LCAzNiwgMjUxLCAwLCAyMTMsIDE2MywgMTM5LCAxNiwgMzYsIDI1MSwgMCwgMjAyLCAxOTksIDEzOSwgMTYsIAorICAgIDM2LCAyNTEsIDAsIDIwMiwgMTk4LCAxMzksIDE2LCAzNiwgMjAyLCAyMTMsIDEzOSwgMTYsIDM2LCAyMDIsIDIxMiwgMTM5LCAKKyAgICAxNiwgMzYsIDIwMiwgMjExLCAxMzksIDE2LCAzNiwgMjA3LCAyMzUsIDEzOSwgMTYsIDM2LCAyMTUsIDIyMSwgMjA3LCAyMzUsIAorICAgIDEzOSwgMTYsIDM2LCA2MywgMjA3LCAyMzUsIDEzOSwgMTYsIDM2LCAyMjIsIDM1LCAyMDgsIDEwLCAxMzksIDE2LCAzNiwgCisgICAgMjIyLCAzNSwgMjA4LCA5LCAxMzksIDE2LCAzNiwgMjIyLCAzNSwgMjA4LCA4LCAxMzksIDE2LCAzNiwgMjQ2LCAxNTgsIAorICAgIDEzOSwgMTYsIDM2LCAyMTIsIDI3LCAxMzksIDE2LCAzNiwgMjE5LCAxMDEsIDEzOSwgMTYsIDM2LCAyMDIsIDE5NywgMTM5LCAKKyAgICAxNiwgMzYsIDIwMiwgMTk2LCAxMzksIDE2LCAzNiwgMjEyLCAyNDksIDIxMiwgMjcsIDEzOSwgMTYsIDM2LCAyMTIsIDI0OSwgCisgICAgMjEyLCAyNiwgMTM5LCAxNiwgMzYsIDIzNSwgMTA4LCAxMzksIDE2LCAzNiwgMjA5LCAxNTIsIDEzOSwgMTYsIDM2LCAyMjgsIAorICAgIDMyLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjI4LCAzMiwgMjE3LCAyNywgMTM5LCAxNiwgMzYsIDI0MiwgMjM5LCA3NiwgCisgICAgMjI4LCAzMSwgMTM5LCAxNiwgMzYsIDIxMywgMTYwLCA3NiwgMjI4LCAzMSwgMTM5LCAxNiwgMzYsIDI0MywgMjQsIDIxNywgCisgICAgMjgsIDEzOSwgMTYsIDM2LCAyMjgsIDMwLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDI0MywgMjMsIAorICAgIDEzOSwgMTYsIDM2LCAyNDIsIDIzOSwgNzYsIDI0MywgMjMsIDEzOSwgMTYsIDM2LCAyNDIsIDIzOSwgNzYsIDI0MywgMjIsIAorICAgIDEzOSwgMTYsIDM2LCAyNDMsIDI0LCAyNTEsIDQxLCAxMzksIDE2LCAzNiwgMjEyLCAyOCwgNzYsIDI0MywgMjQsIDI1MSwgCisgICAgNDEsIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjEyLCAyOCwgNzYsIDI0MywgMjMsIDEzOSwgMTYsIDM2LCAyMDMsIDQ2LCAKKyAgICAxMzksIDE2LCAzNiwgMjA1LCAyMzEsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMjUsIDM5LCAyMTcsIDI4LCAxMzksIDE2LCAKKyAgICAzNiwgMjUxLCA0MCwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIwOCwgMTEsIDc2LCAyNTEsIDM5LCAxMzksIDE2LCAzNiwgCisgICAgMjEyLCAyOCwgNzYsIDI1MSwgMzksIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjEyLCAyOCwgNzYsIDI1MSwgMzksIAorICAgIDEzOSwgMTYsIDM2LCAyMDIsIDIxNCwgNzYsIDI1MSwgMzksIDEzOSwgMTYsIDM2LCAyMTMsIDE2MCwgNzYsIDI1MSwgMzksIAorICAgIDEzOSwgMTYsIDM2LCAyMTMsIDE2MCwgNzYsIDI1MSwgMzgsIDEzOSwgMTYsIDM2LCAyMTMsIDE1OSwgMTM5LCAxNiwgMzYsIAorICAgIDIxMywgMTU4LCAxMzksIDE2LCAzNiwgMjEzLCAxNTcsIDEzOSwgMTYsIDM2LCAyMTMsIDE1NiwgMTM5LCAxNiwgMzYsIDI1MSwgCisgICAgMTI3LCAxMzksIDE2LCAzNiwgMjUxLCAxMjYsIDEzOSwgMTYsIDM2LCAyMjIsIDE1NSwgMTM5LCAxNiwgMzYsIDIxMiwgMzQsIAorICAgIDEzOSwgMTYsIDM2LCAyNTAsIDE5OCwgMTM5LCAxNiwgMzYsIDIxMywgMTg3LCAxMzksIDE2LCAzNiwgMjEzLCAxODYsIDEzOSwgCisgICAgMTYsIDM2LCAyNTAsIDEzMCwgMTM5LCAxNiwgMzYsIDI0OCwgMTUzLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjA2LCAyMzAsIAorICAgIDEzOSwgMTYsIDM2LCAyMDYsIDIyOSwgMTM5LCAxNiwgMzYsIDIxNCwgNzQsIDIyNCwgMTg1LCAxMzksIDE2LCAzNiwgMjQ4LCAKKyAgICAxMDEsIDEzOSwgMTYsIDM2LCAyNDgsIDEwMCwgMTM5LCAxNiwgMzYsIDI0OCwgOTksIDEzOSwgMTYsIDM2LCAyNTEsIDEwMywgCisgICAgMTM5LCAxNiwgMzYsIDIxNywgMTAzLCAxMzksIDE2LCAzNiwgMjA4LCAyMTQsIDEzOSwgMTYsIDM2LCAyMDUsIDIyOSwgMTM5LCAKKyAgICAxNiwgMzYsIDIzNSwgMzAsIDEzOSwgMTYsIDM2LCAyMDEsIDcwLCAxMzksIDE2LCAzNiwgMjE1LCA1NCwgMTM5LCAxNiwgMzYsIAorICAgIDI0NywgMTY3LCAxMzksIDE2LCAzNiwgMjA0LCAxNzcsIDEzOSwgMTYsIDM2LCAyNDcsIDEzNywgMjIxLCA3NSwgMTM5LCAxNiwgCisgICAgMzYsIDIxMSwgMjI1LCA3NiwgMjI3LCAxNTIsIDEzOSwgMTYsIDM2LCAyNDcsIDE4MSwgMTM5LCAxNiwgMzYsIDIwNSwgOTIsIAorICAgIDEzOSwgMTYsIDM2LCAyMDgsIDEwNywgMjA1LCA5MiwgMTM5LCAxNiwgMzYsIDIyNCwgMTAwLCAxMzksIDE2LCAzNiwgMjA5LCAKKyAgICAyNywgMTM5LCAxNiwgMzYsIDIwMywgMjA2LCAxMzksIDE2LCAzNiwgMjMzLCAxMjEsIDIzOSwgMTIxLCAxMzksIDE2LCAzNiwgCisgICAgMjUwLCAxNzYsIDEzOSwgMTYsIDM2LCAyMTUsIDYyLCAyNTAsIDE3NiwgMTM5LCAxNiwgMzYsIDI0OCwgNTMsIDEzOSwgMTYsIAorICAgIDM2LCAyMTUsIDUzLCAyNDgsIDUzLCAxMzksIDE2LCAzNiwgMjUxLCAxMDAsIDEzOSwgMTYsIDM2LCAyMDgsIDYzLCAyMDcsIAorICAgIDIxNiwgMjA4LCA2MiwgMTM5LCAxNiwgMzYsIDIwOCwgNjMsIDIwNywgMjE2LCAyMDgsIDYxLCAxMzksIDE2LCAzNiwgMjA4LCAKKyAgICA3LCAxMzksIDE2LCAzNiwgMjE1LCAyNiwgMTM5LCAxNiwgMzYsIDI0MCwgMjQ4LCAxMzksIDE2LCAzNiwgMjQwLCAyNTAsIAorICAgIDEzOSwgMTYsIDM2LCAyNDAsIDI0OSwgMTM5LCAxNiwgMzYsIDIxNCwgMjAyLCAxMzksIDE2LCAzNiwgMjE0LCAxOTEsIDEzOSwgCisgICAgMTYsIDM2LCAyNDIsIDIyNSwgMTM5LCAxNiwgMzYsIDI0MiwgMjI0LCAxMzksIDE2LCAzNiwgMjQyLCAyMjMsIDEzOSwgMTYsIAorICAgIDM2LCAyNDIsIDIyMiwgMTM5LCAxNiwgMzYsIDI0MiwgMjIxLCAxMzksIDE2LCAzNiwgMjUxLCAxNDEsIDEzOSwgMTYsIDM2LCAKKyAgICAyNDksIDUzLCA3NiwgMjIyLCAxMzcsIDEzOSwgMTYsIDM2LCAyNDksIDUzLCA3NiwgMjAzLCA3OCwgMTM5LCAxNiwgMzYsIAorICAgIDIxMywgMTEzLCAxMzksIDE2LCAzNiwgMjMzLCAxMTMsIDEzOSwgMTYsIDM2LCAyMTksIDEyOSwgMTM5LCAxNiwgMzYsIDI0MSwgCisgICAgMjMyLCAxMzksIDE2LCAzNiwgMjIxLCA4OSwgMTM5LCAxNiwgMzYsIDE2NywgMjM5LCAxNTYsIDEzOSwgMTYsIDM2LCAxNjcsIAorICAgIDIxNywgMSwgNjMsIDIyNSwgMjMsIDIyOCwgMTUsIDUxLCAyMDUsIDk4LCA2MywgMjAzLCAyMjcsIDIyOCwgMTUsIDUxLCAKKyAgICAyMDUsIDk4LCA2MywgMjEzLCA0MSwgMjI4LCAxNSwgNTEsIDIwNSwgOTgsIDYzLCAyMzksIDE2NiwgMjI4LCAxNSwgNTEsIAorICAgIDIwNSwgOTgsIDYzLCAyMDksIDY0LCA0LCAyNDYsIDE1NSwgMjIyLCA2NiwgMjcsIDY0LCAyNDYsIDE1NSwgMjcsIDY0LCAKKyAgICAyNDYsIDE1NSwgODAsIDY0LCAyNDYsIDE1NSwgMjAyLCAyNDYsIDgwLCA2NCwgMjQ2LCAxNTUsIDIzOCwgMjYsIDgwLCA2NCwgCisgICAgMjQ2LCAxNTUsIDY0LCAyNDYsIDE1NiwgMjQzLCA0NSwgNjMsIDQsIDI0NiwgMTU1LCAyMTIsIDIyMSwgMjA2LCAyMzEsIDYzLCAKKyAgICAyMDUsIDIyNiwgMjA4LCAxOTMsIDYzLCAyMDksIDY0LCA0LCAyMDgsIDE5MywgMTYyLCA2NCwgMjA4LCAxOTMsIDIyMiwgNjYsIAorICAgIDY0LCAyMDgsIDE5MywgMjcsIDY0LCAyMDgsIDE5MywgODAsIDY0LCAyMDgsIDE5MywgMjAyLCAyNDYsIDgwLCA2NCwgMjA4LCAKKyAgICAxOTMsIDIzOCwgMjYsIDgwLCA2NCwgMjA4LCAxOTMsIDY0LCA1MiwgMjQzLCA0NSwgNjMsIDIwMiwgMjQ2LCA0LCAyMDgsIAorICAgIDE5MywgNjQsIDUyLCAyNDMsIDQ1LCA2MywgMjIyLCA2NiwgMjA4LCAxOTMsIDUyLCAyMDYsIDIzMSwgNjMsIDIwNSwgMjI2LCAKKyAgICAyNDEsIDY0LCA2MywgMjAyLCAyNDYsIDQsIDI0MSwgNjQsIDYzLCAyMjIsIDY2LCA0LCAyNDEsIDY0LCA2NCwgMjQxLCA2NSwgCisgICAgMjQzLCA0NSwgNjMsIDIwMiwgMjQ2LCA0LCAyNDEsIDY0LCA2NCwgMjQxLCA2NSwgMjQzLCA0NSwgNjMsIDIyMiwgNjYsIAorICAgIDI0MSwgNjQsIDI0MSwgNjUsIDIwNiwgMjMxLCA2MywgMjA1LCAyMjYsIDIyNCwgNDksIDYzLCAyMDIsIDI0NiwgNCwgMjI0LCAKKyAgICA0OSwgNjMsIDIyMiwgNjYsIDQsIDIyNCwgNDksIDY0LCAyMjQsIDUwLCAyNDMsIDQ1LCA2MywgNCwgMjI0LCA0OSwgMjA2LCAKKyAgICA3NywgMzEsIDI0MiwgMjM0LCAxNjIsIDMxLCAyNDIsIDIzNCwgMjIyLCA2NiwgMzEsIDI0MiwgMjM0LCAyNywgMzEsIDI0MiwgCisgICAgMjM0LCAyMDIsIDI0NiwgMjcsIDMxLCAyNDIsIDIzNCwgMjAyLCAyNDYsIDgwLCAzMSwgMjQyLCAyMzQsIDIzOCwgMjYsIDgwLCAKKyAgICAzMSwgMjQyLCAyMzQsIDIwNiwgNzcsIDIxMiwgMjQsIDE2MiwgMjEyLCAyNCwgMjIyLCA2NiwgMjEyLCAyNCwgMjcsIDIxMiwgCisgICAgMjQsIDgwLCAyMTIsIDI0LCAyMDIsIDI0NiwgODAsIDIxMiwgMjQsIDIzOCwgMjYsIDgwLCAyMTIsIDI0LCAxNjIsIDIzNywgCisgICAgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjIyLCA2NiwgMjM3LCA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyNywgMjM3LCAKKyAgICA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCA4MCwgMjM3LCA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMDIsIDI0NiwgODAsIAorICAgIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjM4LCAyNiwgODAsIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgCisgICAgMTYyLCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMjIsIDY2LCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAKKyAgICAyNywgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgODAsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDIwMiwgCisgICAgMjQ2LCA4MCwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjM4LCAyNiwgODAsIDIwOSwgMTA2LCAyMDgsIDIwNywgCisgICAgMjUwLCAxNjUsIDE2MiwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjIyLCA2NiwgMjM4LCAyMzIsIDIwOCwgMjA3LCAKKyAgICAyNTAsIDE2NSwgMjcsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDgwLCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgCisgICAgMTY1LCAyMDIsIDI0NiwgODAsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDE2MiwgMTI2LCAyMTUsIDk4LCA2MywgCisgICAgMjA4LCAxMDksIDIyMiwgNjYsIDEyNiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAxMjYsIDIxNSwgOTgsIDYzLCAyMDgsIAorICAgIDEwOSwgMjIyLCA2NiwgMTI2LCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDE2MiwgMjM2LCAyMjksIDIxNSwgOTgsIAorICAgIDYzLCAyMDgsIDEwOSwgMjIyLCA2NiwgMjM2LCAyMjksIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjM2LCAyMjksIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgMjIyLCA2NiwgMjM2LCAyMjksIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjEzLCAKKyAgICAxMDYsIDE2MiwgMjM2LCAyMjksIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMTYyLCAyMzcsIDYxLCAyMTUsIDk4LCAKKyAgICA2MywgMjA4LCAxMDksIDgwLCAyMzcsIDYxLCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIyMiwgNjYsIDIwOSwgMTA2LCAyMTUsIAorICAgIDk4LCA2MywgMjA4LCAxMDksIDgwLCAyMDksIDEwNiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAyMDksIDEwNiwgMjE1LCA5OCwgCisgICAgMjE1LCAxNTUsIDIwOCwgMTA5LCAyMjIsIDY2LCAyMzgsIDIzMiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCA4MCwgMjM4LCAKKyAgICAyMzIsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjAyLCAyNDYsIDgwLCAyMzgsIDIzMiwgMjE1LCA5OCwgNjMsIDIwOCwgCisgICAgMTA5LCA4MCwgMjM4LCAyMzIsIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMTYyLCAyMDQsIDE2NSwgMjE1LCA5OCwgCisgICAgNjMsIDIwOCwgMTA5LCA4MCwgMjA0LCAxNjUsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgODAsIDIwNCwgMTY1LCAyMTUsIDk4LCAKKyAgICAyMTUsIDE1NSwgMjA4LCAxMDksIDk4LCA1NSwgMywgNCwgMjA1LCA5OSwgMjUwLCAyMDIsIDE4MiwgNTUsIDMsIDQsIDIwNSwgCisgICAgOTksIDI1MCwgMjAyLCA4NywgNTUsIDMsIDQsIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDU1LCAzLCA0LCAyMDUsIDk5LCAKKyAgICAyNTAsIDIwMiwgOTgsIDU1LCAzLCAyMjIsIDY2LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCA1NSwgMywgMjIyLCA2NiwgCisgICAgMjA1LCA5OSwgMjUwLCAyMDIsIDg3LCA1NSwgMywgMjIyLCA2NiwgMjA1LCA5OSwgMjUwLCAyMDIsIDE5MSwgNTUsIDMsIAorICAgIDIyMiwgNjYsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDIyNSwgNzEsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIAorICAgIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgCisgICAgMTkxLCA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCAKKyAgICAxODIsIDU1LCAzLCA0LCAyMzgsIDExOCwgMjUwLCAyMDIsIDg3LCA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCAxOTEsIAorICAgIDU1LCAzLCA0LCAyMzgsIDExOCwgMjUwLCAyMDIsIDk4LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCAxODIsIDU1LCAzLCAKKyAgICAyMzgsIDExOCwgMjUwLCAyMDIsIDg3LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCAxOTEsIDU1LCAzLCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDgwLCA5OCwgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODAsIDE4MiwgNTUsIDMsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgODAsIDg3LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgMTkxLCA1NSwgMywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA4MCwgOTgsIDU1LCAzLCAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCAxODIsIDU1LCAzLCAKKyAgICAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCA4NywgNTUsIDMsIDIyNSwgNzEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgCisgICAgODAsIDE5MSwgNTUsIDMsIDIyNSwgNzEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgOTgsIDIwNSwgOTcsIDU1LCAzLCAyMjAsIAorICAgIDEyNCwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjIwLCAxMjQsIDIxMCwgOTksIDg3LCAyMDUsIDk3LCA1NSwgMywgCisgICAgMjIwLCAxMjQsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDIyMCwgMTI0LCAyMTAsIDk5LCA5OCwgMjA1LCA5NywgCisgICAgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMjIyLCA2NiwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMjIyLCA2NiwgMjEwLCA5OSwgOTgsIAorICAgIDIwNSwgOTcsIDU1LCAzLCAyNywgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCA5OCwgMjA1LCA5NywgCisgICAgNTUsIDMsIDgwLCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCA4MCwgMjEwLCA5OSwgODcsIDIwNSwgOTcsIDU1LCAzLCAKKyAgICA4MCwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgODAsIDIxMCwgOTksIDk4LCAyMDUsIDk3LCA1NSwgMywgMjAyLCAKKyAgICAyNDYsIDgwLCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAyMDIsIDI0NiwgODAsIDIxMCwgOTksIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMjAyLCAyNDYsIDgwLCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyMDIsIDI0NiwgODAsIDIxMCwgCisgICAgOTksIDk4LCAyMzcsIDg1LCA0OCwgMTgyLCAyMzcsIDg1LCA0OCwgODcsIDIzNywgODUsIDQ4LCAxOTEsIDIzNywgODUsIDQ4LCAKKyAgICA5OCwgOTUsIDQ4LCAxODIsIDk1LCA0OCwgODcsIDk1LCA0OCwgMTkxLCA5NSwgNDgsIDk4LCAyNDMsIDcyLCA0OCwgMTgyLCAKKyAgICAyNDMsIDcyLCA0OCwgODcsIDI0MywgNzIsIDQ4LCAxOTEsIDI0MywgNzIsIDQ4LCA5OCwgODAsIDI0MywgNzIsIDQ4LCAxODIsIAorICAgIDgwLCAyNDMsIDcyLCA0OCwgODcsIDgwLCAyNDMsIDcyLCA0OCwgMTkxLCA4MCwgMjQzLCA3MiwgNDgsIDk4LCA4MCwgNDgsIAorICAgIDE4MiwgODAsIDQ4LCA4NywgODAsIDQ4LCAxOTEsIDgwLCA0OCwgOTgsIDQzLCA0OCwgMTgyLCA0MywgNDgsIDg3LCA0MywgCisgICAgNDgsIDE5MSwgNDMsIDQ4LCAxNTcsIDIwMSwgNDgsIDQzLCA0OCwgMTU3LCAyMzksIDE0LCA0MywgNDgsIDIwOCwgMjU0LCAKKyAgICAyMzksIDE0LCA0MywgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA0MywgNDgsIDQ5LCA1MSwgNDMsIDQ4LCAxMTUsIDEyNywgNDMsIAorICAgIDQ4LCAyMDEsIDI3LCA5OCwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgODcsIAorICAgIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMTYyLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIzOSwgMTQsIAorICAgIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgOTgsIDE1NCwgCisgICAgNDgsIDIwMSwgMjcsIDE4MiwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMTU0LCA0OCwgCisgICAgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDE1NCwgNDgsIDIwMSwgMjcsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgMTU0LCA0OCwgMjAxLCAyNywgCisgICAgOTgsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE4MiwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDIyMiwgCisgICAgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCAyMjIsIAorICAgIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAKKyAgICAyMzksIDE0LCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjIyLCA2NiwgMTU0LCA0OCwgCisgICAgMjAxLCAyNywgOTgsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgODAsIAorICAgIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgODAsIDE1NCwgNDgsIAorICAgIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMzksIDE0LCA4MCwgMTU0LCAKKyAgICA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCA5OCwgMjAyLCAyNDYsIDgwLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDIwMiwgMjQ2LCA4MCwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMjAyLCAKKyAgICAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgCisgICAgMjA4LCAyNTQsIDIzOSwgMTQsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIAorICAgIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgOTgsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgCisgICAgMjA1LCA5OSwgMjUwLCAyMDIsIDE5MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA2NCwgNTUsIDIwMSwgNSwgMjA1LCA5OSwgCisgICAgMjUwLCAyMDIsIDE4MiwgNjQsIDU1LCAyMDEsIDUsIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgNjQsIDU1LCAyMDEsIDUsIAorICAgIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDY0LCA1NSwgMjAxLCA1LCAyMDUsIDk5LCAyNTAsIDIwMiwgOTgsIDU1LCAzLCAKKyAgICAyMTgsIDIxMSwgMjA3LCA2LCAxODIsIDU1LCAzLCAyMTgsIDIxMSwgMjA3LCA2LCA4NywgNTUsIDMsIDIxOCwgMjExLCAyMDcsIAorICAgIDYsIDE5MSwgNTUsIDMsIDIxOCwgMjExLCAyMDcsIDYsIDgwLCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIDEwMiwgODAsIDU1LCAKKyAgICAyMTAsIDEwMCwgMjAxLCAyNSwgMTIwLCAyMDYsIDcxLCA4MCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMTIsIDIzNCwgCisgICAgMjEzLCA4MCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMTIsIDIwNiwgNzQsIDk4LCAyNDgsIDkwLCA2NCwgNDgsIDg3LCAKKyAgICAyNDgsIDkzLCAyMTAsIDEwMiwgNjQsIDQ4LCA5OCwgMjA1LCAxNTgsIDIxMCwgMTAyLCA2NCwgNDgsIDg3LCAyMDUsIDE1OCwgCisgICAgMjEwLCAxMDIsIDY0LCA0OCwgOTgsIDIyNSwgMjIsIDY0LCA0OCwgODcsIDIxMywgNDAsIDY0LCA0OCwgOTgsIDIxMywgNDAsIAorICAgIDY0LCA0OCwgODcsIDIyNSwgMjIsIDY0LCA0OCwgOTgsIDI0OSwgMTI4LCAyMTAsIDEwMSwgNjQsIDQ4LCA4NywgMjQ5LCAKKyAgICAxMjgsIDIxMCwgMTAxLCA2NCwgNDgsIDk4LCAyMzYsIDE5OCwgMjEwLCAxMDEsIDY0LCA0OCwgODcsIDIzNiwgMTk4LCAyMTAsIAorICAgIDEwMSwgNjQsIDQ4LCA2NCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMDIsIDY0LCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIAorICAgIDEyMCwgMjA2LCA3MSwgMTk5LCAyMywgMjM3LCAxODksIDIyMSwgMTA0LCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDIwNiwgCisgICAgOTQsIDIyMCwgMTYsIDIzNywgMTg5LCAyMDYsIDc2LCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDIzNCwgMTM1LCAyMTIsIAorICAgIDI1MSwgMjM3LCAxODksIDIzMywgOTEsIDIzNywgMTg5LCAyLCA3NiwgMjA2LCAxMDcsIDIzMywgMTIzLCAyNDcsIDE2OSwgCisgICAgMjIyLCA3NywgMjM0LCAxOTksIDIxMywgMjIwLCAyNDksIDEzMCwgNzYsIDIzNCwgMTk5LCAyMjUsIDI3LCAyMzcsIDY2LCAKKyAgICAyMTMsIDQ1LCAyMzcsIDY2LCAyMzQsIDE3MywgMjM0LCAyMDAsIDMsIDEyNCwgMjYsIDEwMSwgMjM3LCA4MiwgMjQyLCAyMzEsIAorICAgIDIzNywgMTkwLCAzLCAyNDIsIDI1NCwgMjM0LCAxNTcsIDI0NiwgOTksIDIzNywgMTg5LCAyMjAsIDExMywgMjM3LCAxODksIAorICAgIDIxMiwgMjQyLCAyMTcsIDc5LCAyMDYsIDEwNywgMjM3LCAzMiwgMjI1LCA1NywgMjM5LCAxNDcsIDIzNywgMTg5LCAyMjMsIAorICAgIDI1MywgMjM3LCAxODksIDIzNywgMTkwLCAyMTYsIDE3NiwgMjA5LCAzOSwgMjM3LCAxODksIDIxNSwgMjQsIDIwMCwgMjUwLCAKKyAgICAyMTAsIDE3MywgMjE1LCAxMywgMjIyLCAxODEsIDIyOCwgMTE4LCAyMDQsIDE3MywgMjIxLCA3MiwgMjQ2LCAxOTksIDIwOSwgCisgICAgMjI0LCAyMTYsIDExLCAyNDAsIDE5OCwgMjQ3LCAxMTYsIDIyNywgMTQyLCAyMzcsIDEyNiwgMjIxLCAxMjksIDIxNiwgMzQsIAorICAgIDIwMCwgMjI0LCAyMDEsIDgzLCAyMTUsIDg2LCAyMzQsIDE3OCwgMjAxLCAxOSwgMjM3LCAyNCwgMjM5LCAxNDMsIDMsIDIzOSwgCisgICAgMTQxLCAyNDYsIDExNywgMjM1LCAxMjcsIDIwNCwgMjAxLCAyMzUsIDEyOCwgMjA4LCAyMDYsIDIzNSwgMTE0LCAyMjAsIDEzLCAKKyAgICAyMTMsIDQ3LCAyMzcsIDczLCAyMTUsIDEzNCwgMjIyLCA2OSwgMjExLCAxOTYsIDIxNSwgMTM0LCAyMjIsIDY5LCAyMDYsIAorICAgIDc1LCAyMTUsIDEzNCwgMjIyLCA2OSwgMjQ4LCA3NywgMjM1LCAxMjIsIDIyMiwgMTQxLCAyNTAsIDE5MiwgMjAzLCAyNDMsIAorICAgIDI0MiwgMjM4LCAyNTAsIDExOCwgMjQyLCAyMDgsIDI0OSwgMTIxLCAyMTUsIDU5LCAyNDcsIDEyMCwgMjQ5LCAxMDgsIDI0OCwgCisgICAgNjIsIDIzNSwgNjQsIDIxMiwgMzIsIDIxMCwgOTMsIDIxNiwgMTYzLCA3NiwgMjM3LCAxLCAyMDgsIDI4LCAyMzcsIDQzLCAKKyAgICAyMzgsIDI0NiwgMjM1LCAxMjksIDc2LCAyMjEsIDE3MywgMjE2LCA2OCwgMjI2LCAxMjQsIDIxNiwgMTYwLCAyNDIsIDI1MSwgCisgICAgMjI0LCAxNjQsIDIzNywgMTg5LCAyMTEsIDIxMywgMjA0LCAxOTAsIDIwMywgMjQ1LCAyMzcsIDE4OSwgMjM5LCAyNCwgMjM5LCAKKyAgICAxMzMsIDI0OSwgNTUsIDIxMCwgODAsIDIxNiwgMjM3LCAyMzYsIDIyMSwgMjM3LCAxODksIDI0NywgMjQ1LCAyNDEsIDE1OCwgCisgICAgMjM1LCA5NywgMjI0LCAxNDMsIDIxMywgOTIsIDIwOSwgMjI2LCAyMDgsIDE4NywgMjQ2LCAyNTUsIDIwMSwgNTksIDEyLCAKKyAgICAxNSwgMjMyLCAyMjEsIDEyLCAxNSwgMjMyLCAyMjAsIDEyLCAxNSwgMjMyLCAyMTksIDEyLCAxNSwgMjMyLCAyMTgsIDEyLCAKKyAgICAxNSwgMjMyLCAyMTcsIDEyLCAxNSwgMjMyLCAyMTYsIDEyLCAxNSwgMjMyLCAyMTUsIDEyLCAxNSwgMjMyLCAyMTQsIDEyLCAKKyAgICAxNSwgMjMyLCAyMTMsIDEyLCAxNSwgMjMyLCAyMTIsIDEyLCAxNSwgMjMyLCAyMTEsIDEyLCAxNSwgMjMyLCAyMTAsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDksIDEyLCAxNSwgMjMyLCAyMDgsIDEyLCAxNSwgMjMyLCAyMDcsIDEyLCAxNSwgMjMyLCAyMDYsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDUsIDEyLCAxNSwgMjMyLCAyMDQsIDEyLCAxNSwgMjMyLCAyMDMsIDEyLCAxNSwgMjMyLCAyMDIsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDEsIDEyLCAxNSwgMjMyLCAyMDAsIDEyLCAxNSwgMjMyLCAxOTksIDEyLCAxNSwgMjMyLCAxOTgsIDEyLCAKKyAgICAxNSwgMjMyLCAxOTcsIDEyLCAxNSwgMjMyLCAxOTYsIDEyLCAxNSwgMjMyLCAxOTUsIDEyLCAxNSwgMjMyLCAxOTQsIDEyLCAKKyAgICAxNSwgMjMyLCAxOTMsIDEyLCAxNSwgMjMyLCAxOTIsIDEyLCAxNSwgMjMyLCAxOTEsIDEyLCAxNSwgMjMyLCAxOTAsIDEyLCAKKyAgICAxNSwgMjMyLCAxODksIDEyLCAxNSwgMjMyLCAxODgsIDEyLCAxNSwgMjMyLCAxODcsIDEyLCAxNSwgMjMyLCAxODYsIDEyLCAKKyAgICAxNSwgMjMyLCAxODUsIDEyLCAxNSwgMjMyLCAxODQsIDEyLCAxNSwgMjMyLCAxODMsIDEyLCAxNSwgMjMyLCAxODIsIDEyLCAKKyAgICAxNSwgMjMyLCAxODEsIDEyLCAxNSwgMjMyLCAxODAsIDEyLCAxNSwgMjMyLCAxNzksIDEyLCAxNSwgMjMyLCAxNzgsIDEyLCAKKyAgICAxNSwgMjMyLCAxNzcsIDEyLCAxNSwgMjMyLCAxNzYsIDEyLCAxNSwgMjMyLCAxNzUsIDEyLCAxNSwgMjMyLCAxNzQsIDEyLCAKKyAgICAxNSwgMjMyLCAxNzMsIDEyLCAxNSwgMjMyLCAxNzIsIDEyLCAxNSwgMjMyLCAxNzEsIDEyLCAxNSwgMjMyLCAxNzAsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjksIDEyLCAxNSwgMjMyLCAxNjgsIDEyLCAxNSwgMjMyLCAxNjcsIDEyLCAxNSwgMjMyLCAxNjYsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjUsIDEyLCAxNSwgMjMyLCAxNjQsIDEyLCAxNSwgMjMyLCAxNjMsIDEyLCAxNSwgMjMyLCAxNjIsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjEsIDEyLCAxNSwgMjMyLCAxNjAsIDEyLCAxNSwgMjMyLCAxNTksIDEyLCAxNSwgMjMyLCAxNTgsIDEyLCAKKyAgICAxNSwgMjMyLCAxNTcsIDEyLCAxNSwgMjMyLCAxNTYsIDEyLCAxNSwgMjMyLCAxNTUsIDEyLCAxNSwgMjMyLCAxNTQsIDEyLCAKKyAgICAxNSwgMjMyLCAxNTMsIDEyLCAxNSwgMjMyLCAxNTIsIDEyLCAxNSwgMjMyLCAxNTEsIDEyLCAxNSwgMjMyLCAxNTAsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDksIDEyLCAxNSwgMjMyLCAxNDgsIDEyLCAxNSwgMjMyLCAxNDcsIDEyLCAxNSwgMjMyLCAxNDYsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDUsIDEyLCAxNSwgMjMyLCAxNDQsIDEyLCAxNSwgMjMyLCAxNDMsIDEyLCAxNSwgMjMyLCAxNDIsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDEsIDEyLCAxNSwgMjMyLCAxNDAsIDEyLCAxNSwgMjMyLCAxMzksIDEyLCAxNSwgMjMyLCAxMzgsIDEyLCAKKyAgICAxNSwgMjMyLCAxMzcsIDEyLCAxNSwgMjMyLCAxMzYsIDEyLCAxNSwgMjMyLCAxMzUsIDEyLCAxNSwgMjMyLCAxMzQsIDEyLCAKKyAgICAxNSwgMjMyLCAxMzMsIDEyLCAxNSwgMjMyLCAxMzIsIDEyLCAxNSwgMjMyLCAxMzEsIDEyLCAxNSwgMjMyLCAxMzAsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjksIDEyLCAxNSwgMjMyLCAxMjgsIDEyLCAxNSwgMjMyLCAxMjcsIDEyLCAxNSwgMjMyLCAxMjYsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjUsIDEyLCAxNSwgMjMyLCAxMjQsIDEyLCAxNSwgMjMyLCAxMjMsIDEyLCAxNSwgMjMyLCAxMjIsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjEsIDEyLCAxNSwgMjMyLCAxMjAsIDEyLCAxNSwgMjMyLCAxMTksIDEyLCAxNSwgMjMyLCAxMTgsIDEyLCAKKyAgICAxNSwgMjMyLCAxMTcsIDEyLCAxNSwgMjMyLCAxMTYsIDEyLCAxNSwgMjMyLCAxMTUsIDEyLCAxNSwgMjMyLCAxMTQsIDEyLCAKKyAgICAxNSwgMjMyLCAxMTMsIDEyLCAxNSwgMjMyLCAxMTIsIDEyLCAxNSwgMjMyLCAxMTEsIDEyLCAxNSwgMjMyLCAxMTAsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDksIDEyLCAxNSwgMjMyLCAxMDgsIDEyLCAxNSwgMjMyLCAxMDcsIDEyLCAxNSwgMjMyLCAxMDYsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDUsIDEyLCAxNSwgMjMyLCAxMDQsIDEyLCAxNSwgMjMyLCAxMDMsIDEyLCAxNSwgMjMyLCAxMDIsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDEsIDEyLCAxNSwgMjMyLCAxMDAsIDEyLCAxNSwgMjMyLCA5OSwgMTIsIDE1LCAyMzIsIDk4LCAxMiwgMTUsIAorICAgIDIzMiwgOTcsIDEyLCAxNSwgMjMyLCA5NiwgMTIsIDE1LCAyMzIsIDk1LCAxMiwgMTUsIDIzMiwgOTQsIDEyLCAxNSwgMjMyLCAKKyAgICA5MywgMTIsIDE1LCAyMzIsIDkyLCAxMiwgMTUsIDIzMiwgOTEsIDEyLCAxNSwgMjMyLCA5MCwgMTIsIDE1LCAyMzIsIDg5LCAKKyAgICAxMiwgMTUsIDIzMiwgODgsIDEyLCAxNSwgMjMyLCA4NywgMTIsIDE1LCAyMzIsIDg2LCAxMiwgMTUsIDIzMiwgODUsIDEyLCAKKyAgICAxNSwgMjMyLCA4NCwgMTIsIDE1LCAyMzIsIDgzLCAxMiwgMTUsIDIzMiwgODIsIDEyLCAxNSwgMjMyLCA4MSwgMTIsIDE1LCAKKyAgICAyMzIsIDgwLCAxMiwgMTUsIDIzMiwgNzksIDEyLCAxNSwgMjMyLCA3OCwgMTIsIDE1LCAyMzIsIDc3LCAxMiwgMTUsIDIzMiwgCisgICAgNzYsIDEyLCAxNSwgMjMyLCA3NSwgMTIsIDE1LCAyMzIsIDc0LCAxMiwgMTUsIDIzMiwgNzMsIDEyLCAxNSwgMjMyLCA3MiwgCisgICAgMTIsIDE1LCAyMzIsIDcxLCAxMiwgMTUsIDIzMiwgNzAsIDEyLCAxNSwgMjMyLCA2OSwgMTIsIDE1LCAyMzIsIDY4LCAxMiwgCisgICAgMTUsIDIzMiwgNjcsIDEyLCAxNSwgMjMyLCA2NiwgMTIsIDE1LCAyMzIsIDY1LCAxMiwgMTUsIDIzMiwgNjQsIDEyLCAxNSwgCisgICAgMjMyLCA2MywgMTIsIDE1LCAyMzIsIDYyLCAxMiwgMTUsIDIzMiwgNjEsIDEyLCAxNSwgMjMyLCA2MCwgMTIsIDE1LCAyMzIsIAorICAgIDU5LCAxMiwgMTUsIDIzMiwgNTgsIDEyLCAxNSwgMjMyLCA1NywgMTIsIDE1LCAyMzIsIDU2LCAxMiwgMTUsIDIzMiwgNTUsIAorICAgIDEyLCAxNSwgMjMyLCA1NCwgMTIsIDE1LCAyMzIsIDUzLCAxMiwgMTUsIDIzMiwgNTIsIDEyLCAxNSwgMjMyLCA1MSwgMTIsIAorICAgIDE1LCAyMzIsIDUwLCAxMiwgMTUsIDIzMiwgNDksIDEyLCAxNSwgMjMyLCA0OCwgMTIsIDE1LCAyMzIsIDQ3LCAxMiwgMTUsIAorICAgIDIzMiwgNDYsIDEyLCAxNSwgMjMyLCA0NSwgMTIsIDE1LCAyMzIsIDQ0LCAxMiwgMTUsIDIzMiwgNDMsIDEyLCAxNSwgMjMyLCAKKyAgICA0MiwgMTIsIDE1LCAyMzIsIDQxLCAxMiwgMTUsIDIzMiwgNDAsIDEyLCAxNSwgMjMyLCAzOSwgMTIsIDE1LCAyMzIsIDM4LCAKKyAgICAxMiwgMTUsIDIzMiwgMzcsIDEyLCAxNSwgMjMyLCAzNiwgMTIsIDE1LCAyMzIsIDM1LCAxMiwgMTUsIDIzMiwgMzQsIDEyLCAKKyAgICAxNSwgMjMyLCAzMywgMTIsIDE1LCAyMzIsIDMyLCAxMiwgMTUsIDIzMiwgMzEsIDEyLCAxNSwgMjMyLCAzMCwgMTIsIDE1LCAKKyAgICAyMzIsIDI5LCAxMiwgMTUsIDIzMiwgMjgsIDEyLCAxNSwgMjMyLCAyNywgMTIsIDE1LCAyMzIsIDI2LCAxMiwgMTUsIDIzMiwgCisgICAgMjUsIDEyLCAxNSwgMjMyLCAyNCwgMTIsIDE1LCAyMzIsIDIzLCAxMiwgMTUsIDIzMiwgMjIsIDEyLCAxNSwgMjMyLCAyMSwgCisgICAgMTIsIDE1LCAyMzIsIDIwLCAxMiwgMTUsIDIzMiwgMTksIDEyLCAxNSwgMjMyLCAxOCwgMTIsIDE1LCAyMzIsIDE3LCAxMiwgCisgICAgMTUsIDIzMiwgMTYsIDEyLCAxNSwgMjMyLCAxNSwgMTIsIDE1LCAyMzIsIDE0LCAxMiwgMTUsIDIzMiwgMTMsIDEyLCAxNSwgCisgICAgMjMyLCAxMiwgMTIsIDE1LCAyMzIsIDExLCAxMiwgMTUsIDIzMiwgMTAsIDEyLCAxNSwgMjMyLCA5LCAxMiwgMTUsIDIzMiwgCisgICAgOCwgMTIsIDE1LCAyMzIsIDcsIDEyLCAxNSwgMjMyLCA2LCAxMiwgMTUsIDIzMiwgNSwgMTIsIDE1LCAyMzIsIDQsIDEyLCAKKyAgICAxNSwgMjMyLCAzLCAxMiwgMTUsIDIzMiwgMiwgMTIsIDE1LCAyMzIsIDEsIDEyLCAxNSwgMjMyLCAwLCAxMiwgMTUsIDIzMSwgCisgICAgMjU1LCAxMiwgMTUsIDIzMSwgMjU0LCAxMiwgMTUsIDIzMSwgMjUzLCAxMiwgMTUsIDIzMSwgMjUyLCAxMiwgMTUsIDIzMSwgCisgICAgMjUxLCAxMiwgMTUsIDIzMSwgMjUwLCAxMiwgMTUsIDIzMSwgMjQ5LCAxMiwgMTUsIDIzMSwgMjQ4LCAxMiwgMTUsIDIzMSwgCisgICAgMjQ3LCAxMiwgMTUsIDIzMSwgMjQ2LCAxMiwgMTUsIDIzMSwgMjQ1LCAxMiwgMTUsIDIzMSwgMjQ0LCAxMiwgMTUsIDIzMSwgCisgICAgMjQzLCAxMiwgMTUsIDIzMSwgMjQyLCAxMiwgMTUsIDIzMSwgMjQxLCAxMiwgMTUsIDIzMSwgMjQwLCAxMiwgMTUsIDIzMSwgCisgICAgMjM5LCAxMiwgMTUsIDIzMSwgMjM4LCAxMiwgMTUsIDIzMSwgMjM3LCAxMiwgMTUsIDIzMSwgMjM2LCAxMiwgMTUsIDIzMSwgCisgICAgMjM1LCAxMiwgMTUsIDIzMSwgMjM0LCAxMiwgMTUsIDIzMSwgMjMzLCAxMiwgMTUsIDIzMSwgMjMyLCAxMiwgMTUsIDIzMSwgCisgICAgMjMxLCAxMiwgMTUsIDIzMSwgMjMwLCAxMiwgMTUsIDIzMSwgMjI5LCAxMiwgMTUsIDIzMSwgMjI4LCAxMiwgMTUsIDIzMSwgCisgICAgMjI3LCAxMiwgMTUsIDIzMSwgMjI2LCAxMiwgMTUsIDIzMSwgMjI1LCAxMiwgMTUsIDIzMSwgMjI0LCAxMiwgMTUsIDIzMSwgCisgICAgMjIzLCAxMiwgMTUsIDIzMSwgMjIyLCAxMiwgMTUsIDIzMSwgMjIxLCAxMiwgMTUsIDIzMSwgMjIwLCAxMiwgMTUsIDIzMSwgCisgICAgMjE5LCAxMiwgMTUsIDIzMSwgMjE4LCAxMiwgMTUsIDIzMSwgMjE3LCAxMiwgMTUsIDIzMSwgMjE2LCAxMiwgMTUsIDIzMSwgCisgICAgMjE1LCAxMiwgMTUsIDIzMSwgMjE0LCAxMiwgMTUsIDIzMSwgMjEzLCAxMiwgMTUsIDIzMSwgMjEyLCAxMiwgMTUsIDIzMSwgCisgICAgMjExLCAxMiwgMTUsIDIzMSwgMjEwLCAxMiwgMTUsIDIzMSwgMjA5LCAxMiwgMTUsIDIzMSwgMjA4LCAxMiwgMTUsIDIzMSwgCisgICAgMjA3LCAxMiwgMTUsIDIzMSwgMjA2LCAxMiwgMTUsIDIzMSwgMjA1LCAxMiwgMTUsIDIzMSwgMjA0LCAxMiwgMTUsIDIzMSwgCisgICAgMjAzLCAxMiwgMTUsIDIzMSwgMjAyLCAxMiwgMTUsIDIzMSwgMjAxLCAxMiwgMTUsIDIzMSwgMjAwLCAxMiwgMTUsIDIzMSwgCisgICAgMTk5LCAxMiwgMTUsIDIzMSwgMTk4LCAxMiwgMTUsIDIzMSwgMTk3LCAxMiwgMTUsIDIzMSwgMTk2LCAxMiwgMTUsIDIzMSwgCisgICAgMTk1LCAxMiwgMTUsIDIzMSwgMTk0LCAxMiwgMTUsIDIzMSwgMTkzLCAxMiwgMTUsIDIzMSwgMTkyLCAxMiwgMTUsIDIzMSwgCisgICAgMTkxLCAxMiwgMTUsIDIzMSwgMTkwLCAxMiwgMTUsIDIzMSwgMTg5LCAxMiwgMTUsIDIzMSwgMTg4LCAxMiwgMTUsIDIzMSwgCisgICAgMTg3LCAxMiwgMTUsIDIzMSwgMTg2LCAxMiwgMTUsIDIzMSwgMTg1LCAxMiwgMTUsIDIzMSwgMTg0LCAxMiwgMTUsIDIzMSwgCisgICAgMTgzLCAxMiwgMTUsIDIzMSwgMTgyLCAxMiwgMTUsIDIzMSwgMTgxLCAxMiwgMTUsIDIzMSwgMTgwLCAxMiwgMTUsIDIzMSwgCisgICAgMTc5LCAxMiwgMTUsIDIzMSwgMTc4LCAxMiwgMTUsIDIzMSwgMTc3LCAxMiwgMTUsIDIzMSwgMTc2LCAxMiwgMTUsIDIzMSwgCisgICAgMTc1LCAxMiwgMTUsIDIzMSwgMTc0LCAxMiwgMTUsIDIzMSwgMTczLCAxMiwgMTUsIDIzMSwgMTcyLCAxMiwgMTUsIDIzMSwgCisgICAgMTcxLCAxMiwgMTUsIDIzMSwgMTcwLCAxMiwgMTUsIDIzMSwgMTY5LCAxMiwgMTUsIDIzMSwgMTY4LCAxMiwgMTUsIDIzMSwgCisgICAgMTY3LCAxMiwgMTUsIDIzMSwgMTY2LCAxMiwgMTUsIDIzMSwgMTY1LCAxMiwgMTUsIDIzMSwgMTY0LCAxMiwgMTUsIDIzMSwgCisgICAgMTYzLCAxMiwgMTUsIDIzMSwgMTYyLCAxMiwgMTUsIDIzMSwgMTYxLCAxMiwgMTUsIDIzMSwgMTYwLCAxMiwgMTUsIDIzMSwgCisgICAgMTU5LCAxMiwgMTUsIDIzMSwgMTU4LCAxMiwgMTUsIDIzMSwgMTU3LCAxMiwgMTUsIDIzMSwgMTU2LCAxMiwgMTUsIDIzMSwgCisgICAgMTU1LCAxMiwgMTUsIDIzMSwgMTU0LCAxMiwgMTUsIDIzMSwgMTUzLCAxMiwgMTUsIDIzMSwgMTUyLCAxMiwgMTUsIDIzMSwgCisgICAgMTUxLCAxMiwgMTUsIDIzMSwgMTUwLCAxMiwgMTUsIDIzMSwgMTQ5LCAxMiwgMTUsIDIzMSwgMTQ4LCAxMiwgMTUsIDIzMSwgCisgICAgMTQ3LCAxMiwgMTUsIDIzMSwgMTQ2LCAxMiwgMTUsIDIzMSwgMTQ1LCAxMiwgMTUsIDIzMSwgMTQ0LCAxMiwgMTUsIDIzMSwgCisgICAgMTQzLCAxMiwgMTUsIDIzMSwgMTQyLCAxMiwgMTUsIDIzMSwgMTQxLCAxMiwgMTUsIDIzMSwgMTQwLCAxMiwgMTUsIDIzMSwgCisgICAgMTM5LCAxMiwgMTUsIDIzMSwgMTM4LCAxMiwgMTUsIDIzMSwgMTM3LCAxMiwgMTUsIDIzMSwgMTM2LCAxMiwgMTUsIDIzMSwgCisgICAgMTM1LCAxMiwgMTUsIDIzMSwgMTM0LCAxMiwgMTUsIDIzMSwgMTMzLCAxMiwgMTUsIDIzMSwgMTMyLCAxMiwgMTUsIDIzMSwgCisgICAgMTMxLCAxMiwgMTUsIDIzMSwgMTMwLCAxMiwgMTUsIDIzMSwgMTI5LCAxMiwgMTUsIDIzMSwgMTI4LCAxMiwgMTUsIDIzMSwgCisgICAgMTI3LCAxMiwgMTUsIDIzMSwgMTI2LCAxMiwgMTUsIDIzMSwgMTI1LCAxMiwgMTUsIDIzMSwgMTI0LCAxMiwgMTUsIDIzMSwgCisgICAgMTIzLCAxMiwgMTUsIDIzMSwgMTIyLCAxMiwgMTUsIDIzMSwgMTIxLCAxMiwgMTUsIDIzMSwgMTIwLCAxMiwgMTUsIDIzMSwgCisgICAgMTE5LCAxMiwgMTUsIDIzMSwgMTE4LCAxMiwgMTUsIDIzMSwgMTE3LCAxMiwgMTUsIDIzMSwgMTE2LCAxMiwgMTUsIDIzMSwgCisgICAgMTE1LCAxMiwgMTUsIDIzMSwgMTE0LCAxMiwgMTUsIDIzMSwgMTEzLCAxMiwgMTUsIDIzMSwgMTEyLCAxMiwgMTUsIDIzMSwgCisgICAgMTExLCAxMiwgMTUsIDIzMSwgMTEwLCAxMiwgMTUsIDIzMSwgMTA5LCAxMiwgMTUsIDIzMSwgMTA4LCAxMiwgMTUsIDIzMSwgCisgICAgMTA3LCAxMiwgMTUsIDIzMSwgMTA2LCAxMiwgMTUsIDIzMSwgMTA1LCAxMiwgMTUsIDIzMSwgMTA0LCAxMiwgMTUsIDIzMSwgCisgICAgMTAzLCAxMiwgMTUsIDIzMSwgMTAyLCAxMiwgMTUsIDIzMSwgMTAxLCAxMiwgMTUsIDIzMSwgMTAwLCAxMiwgMTUsIDIzMSwgCisgICAgOTksIDEyLCAxNSwgMjMxLCA5OCwgMTIsIDE1LCAyMzEsIDk3LCAxMiwgMTUsIDIzMSwgOTYsIDEyLCAxNSwgMjMxLCA5NSwgCisgICAgMTIsIDE1LCAyMzEsIDk0LCAxMiwgMTUsIDIzMSwgOTMsIDEyLCAxNSwgMjMxLCA5MiwgMTIsIDE1LCAyMzEsIDkxLCAxMiwgCisgICAgMTUsIDIzMSwgOTAsIDEyLCAxNSwgMjMxLCA4OSwgMTIsIDE1LCAyMzEsIDg4LCAxMiwgMTUsIDIzMSwgODcsIDEyLCAxNSwgCisgICAgMjMxLCA4NiwgMTIsIDE1LCAyMzEsIDg1LCAxMiwgMTUsIDIzMSwgODQsIDEyLCAxNSwgMjMxLCA4MywgMTIsIDE1LCAyMzEsIAorICAgIDgyLCAxMiwgMTUsIDIzMSwgODEsIDEyLCAxNSwgMjMxLCA4MCwgMTIsIDE1LCAyMzEsIDc5LCAxMiwgMTUsIDIzMSwgNzgsIAorICAgIDEyLCAxNSwgMjMxLCA3NywgMTIsIDE1LCAyMzEsIDc2LCAxMiwgMTUsIDIzMSwgNzUsIDEyLCAxNSwgMjMxLCA3NCwgMTIsIAorICAgIDE1LCAyMzEsIDczLCAxMiwgMTUsIDIzMSwgNzIsIDEyLCAxNSwgMjMxLCA3MSwgMTIsIDE1LCAyMzEsIDcwLCAxMiwgMTUsIAorICAgIDIzMSwgNjksIDEyLCAxNSwgMjMxLCA2OCwgMTIsIDE1LCAyMzEsIDY3LCAxMiwgMTUsIDIzMSwgNjYsIDEyLCAxNSwgMjMxLCAKKyAgICA2NSwgMTIsIDE1LCAyMzEsIDY0LCAxMiwgMTUsIDIzMSwgNjMsIDEyLCAxNSwgMjMxLCA2MiwgMTIsIDE1LCAyMzEsIDYxLCAKKyAgICAxMiwgMTUsIDIzMSwgNjAsIDEyLCAxNSwgMjMxLCA1OSwgMTIsIDE1LCAyMzEsIDU4LCAxMiwgMTUsIDIzMSwgNTcsIDEyLCAKKyAgICAxNSwgMjMxLCA1NiwgMTIsIDE1LCAyMzEsIDU1LCAxMiwgMTUsIDIzMSwgNTQsIDEyLCAxNSwgMjMxLCA1MywgMTIsIDE1LCAKKyAgICAyMzEsIDUyLCAxMiwgMTUsIDIzMSwgNTEsIDEyLCAxNSwgMjMxLCA1MCwgMTIsIDE1LCAyMzEsIDQ5LCAxMiwgMTUsIDIzMSwgCisgICAgNDgsIDEyLCAxNSwgMjMxLCA0NywgMTIsIDE1LCAyMzEsIDQ2LCAxMiwgMTUsIDIzMSwgNDUsIDEyLCAxNSwgMjMxLCA0NCwgCisgICAgMTIsIDE1LCAyMzEsIDQzLCAxMiwgMTUsIDIzMSwgNDIsIDEyLCAxNSwgMjMxLCA0MSwgMTIsIDE1LCAyMzEsIDQwLCAxMiwgCisgICAgMTUsIDIzMSwgMzksIDEyLCAxNSwgMjMxLCAzOCwgMTIsIDE1LCAyMzEsIDM3LCAxMiwgMTUsIDIzMSwgMzYsIDEyLCAxNSwgCisgICAgMjMxLCAzNSwgMTIsIDE1LCAyMzEsIDM0LCAxMiwgMTUsIDIzMSwgMzMsIDEyLCAxNSwgMjMxLCAzMiwgMTIsIDE1LCAyMzEsIAorICAgIDMxLCAxMiwgMTUsIDIzMSwgMzAsIDEyLCAxNSwgMjMxLCAyOSwgMTIsIDE1LCAyMzEsIDI4LCAxMiwgMTUsIDIzMSwgMjcsIAorICAgIDEyLCAxNSwgMjMxLCAyNiwgMTIsIDE1LCAyMzEsIDI1LCAxMiwgMTUsIDIzMSwgMjQsIDEyLCAxNSwgMjMxLCAyMywgMTIsIAorICAgIDE1LCAyMzEsIDIyLCAxMiwgMTUsIDIzMSwgMjEsIDEyLCAxNSwgMjMxLCAyMCwgMTIsIDE1LCAyMzEsIDE5LCAxMiwgMTUsIAorICAgIDIzMSwgMTgsIDEyLCAxNSwgMjMxLCAxNywgMTIsIDE1LCAyMzEsIDE2LCAxMiwgMTUsIDIzMSwgMTUsIDEyLCAxNSwgMjMxLCAKKyAgICAxNCwgMTIsIDE1LCAyMzEsIDEzLCAxMiwgMTUsIDIzMSwgMTIsIDEyLCAxNSwgMjMxLCAxMSwgMTIsIDE1LCAyMzEsIDEwLCAKKyAgICAxMiwgMTUsIDIzMSwgOSwgMTIsIDE1LCAyMzEsIDgsIDEyLCAxNSwgMjMxLCA3LCAxMiwgMTUsIDIzMSwgNiwgMTIsIDE1LCAKKyAgICAyMzEsIDUsIDEyLCAxNSwgMjMxLCA0LCAxMiwgMTUsIDIzMSwgMywgMTIsIDE1LCAyMzEsIDIsIDEyLCAxNSwgMjMxLCAxLCAKKyAgICAxMiwgMTUsIDIzMSwgMCwgMTIsIDE1LCAyMzAsIDI1NSwgMTIsIDE1LCAyMzAsIDI1NCwgMTIsIDE1LCAyMzAsIDI1MywgMTIsIAorICAgIDE1LCAyMzAsIDI1MiwgMTIsIDE1LCAyMzAsIDI1MSwgMTIsIDE1LCAyMzAsIDI1MCwgMTIsIDE1LCAyMzAsIDI0OSwgMTIsIAorICAgIDE1LCAyMzAsIDI0OCwgMTIsIDE1LCAyMzAsIDI0NywgMTIsIDE1LCAyMzAsIDI0NiwgMTIsIDE1LCAyMzAsIDI0NSwgMTIsIAorICAgIDE1LCAyMzAsIDI0NCwgMTIsIDE1LCAyMzAsIDI0MywgMTIsIDE1LCAyMzAsIDI0MiwgMTIsIDE1LCAyMzAsIDI0MSwgMTIsIAorICAgIDE1LCAyMzAsIDI0MCwgMTIsIDE1LCAyMzAsIDIzOSwgMTIsIDE1LCAyMzAsIDIzOCwgMTIsIDE1LCAyMzAsIDIzNywgMTIsIAorICAgIDE1LCAyMzAsIDIzNiwgMTIsIDE1LCAyMzAsIDIzNSwgMTIsIDE1LCAyMzAsIDIzNCwgMTIsIDE1LCAyMzAsIDIzMywgMTIsIAorICAgIDE1LCAyMzAsIDIzMiwgMTIsIDE1LCAyMzAsIDIzMSwgMTIsIDE1LCAyMzAsIDIzMCwgMTIsIDE1LCAyMzAsIDIyOSwgMTIsIAorICAgIDE1LCAyMzAsIDIyOCwgMTIsIDE1LCAyMzAsIDIyNywgMTIsIDE1LCAyMzAsIDIyNiwgMTIsIDE1LCAyMzAsIDIyNSwgMTIsIAorICAgIDE1LCAyMzAsIDIyNCwgMTIsIDE1LCAyMzAsIDIyMywgMTIsIDE1LCAyMzAsIDIyMiwgMTIsIDE1LCAyMzAsIDIyMSwgMTIsIAorICAgIDE1LCAyMzAsIDIyMCwgMTIsIDE1LCAyMzAsIDIxOSwgMTIsIDE1LCAyMzAsIDIxOCwgMTIsIDE1LCAyMzAsIDIxNywgMTIsIAorICAgIDE1LCAyMzAsIDIxNiwgMTIsIDE1LCAyMzAsIDIxNSwgMTIsIDE1LCAyMzAsIDIxNCwgMTIsIDE1LCAyMzAsIDIxMywgMTIsIAorICAgIDE1LCAyMzAsIDIxMiwgMTIsIDE1LCAyMzAsIDIxMSwgMTIsIDE1LCAyMzAsIDIxMCwgMTIsIDE1LCAyMzAsIDIwOSwgMTIsIAorICAgIDE1LCAyMzAsIDIwOCwgMTIsIDE1LCAyMzAsIDIwNywgMTIsIDE1LCAyMzAsIDIwNiwgMTIsIDE1LCAyMzAsIDIwNSwgMTIsIAorICAgIDE1LCAyMzAsIDIwNCwgMTIsIDE1LCAyMzAsIDIwMywgMTIsIDE1LCAyMzAsIDIwMiwgMTIsIDE1LCAyMzAsIDIwMSwgMTIsIAorICAgIDE1LCAyMzAsIDIwMCwgMTIsIDE1LCAyMzAsIDE5OSwgMTIsIDE1LCAyMzAsIDE5OCwgMTIsIDE1LCAyMzAsIDE5NywgMTIsIAorICAgIDE1LCAyMzAsIDE5NiwgMTIsIDE1LCAyMzAsIDE5NSwgMTIsIDE1LCAyMzAsIDE5NCwgMTIsIDE1LCAyMzAsIDE5MywgMTIsIAorICAgIDE1LCAyMzAsIDE5MiwgMjI1LCA3NywgMjA3LCAxMywgMTY1LCAyMDgsIDI0NCwgMTY1LCAyMzgsIDQzLCA4MSwgMTY1LCAKKyAgICAyMTQsIDYzLCA4MSwgMTY1LCA0MSwgNTQsIDE2NSwgMjQwLCAxOTQsIDU0LCAxNjUsIDIxNiwgMjcsIDU0LCAxNjUsIDI1MSwgCisgICAgODksIDE2NSwgMjUxLCAxMywgMTY1LCA0OSwgMjE2LCAxMTUsIDE2NSwgNTEsIDIxNiwgMTE1LCAxNjUsIDI1MCwgMTY1LCAKKyAgICAxNjUsIDkzLCA1NCwgMTY1LCAyNDYsIDcwLCAxNjUsIDIzMywgMzIsIDE2NSwgMjM2LCAxODMsIDIwOCwgNzYsIDE2NSwgCisgICAgMjA5LCAxNiwgMTY1LCAxNywgMTk5LCA4MSwgMTY1LCAxNywgMTAyLCAxNjUsIDE3LCAxMDUsIDE2NSwgMTcsIDE0NywgMTY1LCAKKyAgICAxNywgMTQ5LCAxNjUsIDE3LCAxNjQsIDE2NSwgMTcsIDE4NywgMTY1LCAxNywgMjEwLCAxMzUsIDE2NSwgMTcsIDE5MiwgCisgICAgMTY1LCAxNywgMjE5LCAxMTMsIDE2NSwgMjQ2LCA3OSwgMTY1LCAyMTAsIDE2NywgMTY1LCAyMjQsIDI0MSwgNTQsIDE2NSwgCisgICAgMjM4LCAxMjIsIDU0LCAxNjUsIDIzNSwgNjcsIDU0LCAxNjUsIDIxNCwgNzksIDgxLCAxNjUsIDI0NiwgNjgsIDI1MCwgMTU1LCAKKyAgICAxNjUsIDgsIDYsIDEsIDYyLCAxNjUsIDgsIDYsIDEsIDI1MCwgMTAzLCAxNjUsIDgsIDYsIDEsIDI0NywgMjIzLCAxNjUsIDgsIAorICAgIDYsIDEsIDI0MiwgMTUzLCAxNjUsIDgsIDYsIDEsIDcyLCAxNjUsIDgsIDYsIDEsIDIzOCwgNSwgMTY1LCA4LCA2LCAxLCAKKyAgICAyMzYsIDE1NiwgMTY1LCA4LCA2LCAxLCAyMzQsIDI0NywgMTY1LCA4LCA2LCAxLCA3MCwgMTY1LCA4LCA2LCAxLCAyMjcsIAorICAgIDI1MSwgMTY1LCA4LCA2LCAxLCAyMjcsIDExOCwgMTY1LCA4LCA2LCAxLCAxNTYsIDE2NSwgOCwgNiwgMSwgMjIzLCAyNDMsIAorICAgIDE2NSwgOCwgNiwgMSwgMjIwLCAyMTQsIDE2NSwgOCwgNiwgMSwgNzQsIDE2NSwgOCwgNiwgMSwgMjE2LCAyMjYsIDE2NSwgOCwgCisgICAgNiwgMSwgMjE0LCAxNjcsIDE2NSwgOCwgNiwgMSwgMTQ2LCAxNjUsIDgsIDYsIDEsIDIxMiwgMTIyLCAxNjUsIDgsIDYsIDEsIAorICAgIDIwNywgODMsIDE2NSwgOCwgNiwgMSwgNjYsIDE2NSwgOCwgNiwgMSwgMjAzLCAxNjgsIDE2NSwgOCwgNiwgMSwgMjAxLCAKKyAgICAxNDcsIDE2NSwgOCwgNiwgMSwgMjAwLCAxOTUsIDE2NSwgOCwgNiwgMSwgMjAwLCAxMjMsIDE2NSwgOCwgNiwgMSwgMTk5LCAKKyAgICAxNTcsIDE2NSwgNDksIDUyLCAxNTksIDE2NSwgMjEzLCAxMDYsIDIwOSwgMTYsIDE2NSwgNTEsIDUyLCAxNTksIDE2NSwgCisgICAgMjQ2LCAxNDcsIDI1MSwgMjUxLCAxNjUsIDEyOCwgMjI0LCAxNzYsIDE2NSwgMjM1LCA3NCwgMjUxLCAyNTEsIDE2NSwgOCwgCisgICAgNCwgMSwgNjIsIDE2NSwgOCwgNCwgMSwgMjUwLCAxMDMsIDE2NSwgOCwgNCwgMSwgMjQ3LCAyMjMsIDE2NSwgOCwgNCwgMSwgCisgICAgMjQyLCAxNTMsIDE2NSwgOCwgNCwgMSwgNzIsIDE2NSwgOCwgNCwgMSwgMjM4LCA1LCAxNjUsIDgsIDQsIDEsIDIzNiwgMTU2LCAKKyAgICAxNjUsIDgsIDQsIDEsIDIzNCwgMjQ3LCAxNjUsIDgsIDQsIDEsIDcwLCAxNjUsIDgsIDQsIDEsIDIyNywgMjUxLCAxNjUsIDgsIAorICAgIDQsIDEsIDIyNywgMTE4LCAxNjUsIDgsIDQsIDEsIDE1NiwgMTY1LCA4LCA0LCAxLCAyMjMsIDI0MywgMTY1LCA4LCA0LCAxLCAKKyAgICAyMjAsIDIxNCwgMTY1LCA4LCA0LCAxLCA3NCwgMTY1LCA4LCA0LCAxLCAyMTYsIDIyNiwgMTY1LCA4LCA0LCAxLCAyMTQsIAorICAgIDE2NywgMTY1LCA4LCA0LCAxLCAxNDYsIDE2NSwgOCwgNCwgMSwgMjEyLCAxMjIsIDE2NSwgOCwgNCwgMSwgMjA3LCA4MywgCisgICAgMTY1LCA4LCA0LCAxLCA2NiwgMTY1LCA4LCA0LCAxLCAyMDMsIDE2OCwgMTY1LCA4LCA0LCAxLCAyMDEsIDE0NywgMTY1LCA4LCAKKyAgICA0LCAxLCAyMDAsIDE5NSwgMTY1LCA4LCA0LCAxLCAyMDAsIDEyMywgMTY1LCA4LCA0LCAxLCAxOTksIDE1NywgMTY1LCA0OSwgCisgICAgMjQyLCAxOTYsIDE1OSwgMTY1LCA4MywgMjI0LCAxNzYsIDE2NSwgNTEsIDI0MiwgMTk2LCAxNTksIDE2NSwgMjA1LCAyNDAsIAorICAgIDI0NywgMTU3LCAyMDcsIDEzLCA1OCwgMjExLCA5NiwgNTgsIDIxMSwgODUsIDU4LCAyMTEsIDc0LCA1OCwgMjExLCA2MiwgCisgICAgNTgsIDIxMSwgNTEsIDU4LCAyMTEsIDQwLCA1OCwgMjExLCAyOSwgNTgsIDIxMSwgMTgsIDU4LCAyMTEsIDcsIDU4LCAyMTAsIAorICAgIDI1NSwgNTgsIDIxMCwgMjU0LCA1OCwgMjEwLCAyNTMsIDU4LCAyMTAsIDI1MiwgNTgsIDIxMCwgMjUwLCA1OCwgMjEwLCAKKyAgICAyNDksIDU4LCAyMTAsIDI0OCwgNTgsIDIxMCwgMjQ3LCA1OCwgMjEwLCAyNDYsIDU4LCAyMTAsIDI0NSwgNTgsIDIxMCwgCisgICAgMjQ0LCA1OCwgMjEwLCAyNDMsIDU4LCAyMTAsIDI0MiwgNTgsIDIxMCwgMjQxLCA1OCwgMjEwLCAyMzksIDU4LCAyMTAsIAorICAgIDIzOCwgNTgsIDIxMCwgMjM3LCA1OCwgMjEwLCAyMzYsIDU4LCAyMTAsIDIzNSwgNTgsIDIxMCwgMjM0LCA1OCwgMjEwLCAKKyAgICAyMzMsIDU4LCAyMTAsIDIzMiwgNTgsIDIxMCwgMjMxLCA1OCwgMjEwLCAyMzAsIDU4LCAyMTAsIDIyOCwgNTgsIDIxMCwgCisgICAgMjI3LCA1OCwgMjEwLCAyMjYsIDU4LCAyMTAsIDIyNSwgNTgsIDIxMCwgMjI0LCA1OCwgMjEwLCAyMjMsIDU4LCAyMTAsIAorICAgIDIyMiwgNTgsIDIxMCwgMjIxLCA1OCwgMjEwLCAyMjAsIDU4LCAyMTAsIDIxOSwgNTgsIDIxMCwgMjE3LCA1OCwgMjEwLCAKKyAgICAyMTYsIDU4LCAyMTAsIDIxNSwgNTgsIDIxMCwgMjE0LCA1OCwgMjEwLCAyMTMsIDU4LCAyMTAsIDIxMiwgNTgsIDIxMCwgCisgICAgMjExLCA1OCwgMjEwLCAyMTAsIDU4LCAyMTAsIDIwOSwgNTgsIDIxMCwgMjA4LCA1OCwgMjEwLCAyMDYsIDU4LCAyMTAsIAorICAgIDIwNSwgNTgsIDIxMCwgMjA0LCA1OCwgMjEwLCAyMDMsIDU4LCAyMTAsIDIwMiwgNTgsIDIxMCwgMjAxLCA1OCwgMjEwLCAKKyAgICAyMDAsIDU4LCAyMTAsIDE5OSwgNTgsIDIxMCwgMTk4LCA1OCwgMjEwLCAxOTcsIDU4LCAyMTAsIDE5NSwgNTgsIDIxMCwgCisgICAgMTk0LCA1OCwgMjEwLCAxOTMsIDU4LCAyMTAsIDE5MiwgNTgsIDIxMCwgMTkxLCA1OCwgMjEwLCAxOTAsIDU4LCAyMTAsIAorICAgIDE4OSwgNTgsIDIxMCwgMTg4LCA1OCwgMjEwLCAxODcsIDU4LCAyMTAsIDE4NiwgNTgsIDIxMCwgMTg0LCA1OCwgMjEwLCAKKyAgICAxODMsIDU4LCAyMTAsIDE4MiwgNTgsIDIxMCwgMTgxLCA1OCwgMjEwLCAxODAsIDU4LCAyMTAsIDE3OSwgNTgsIDIxMCwgCisgICAgMTc4LCA1OCwgMjEwLCAxNzcsIDU4LCAyMTAsIDE3NiwgNTgsIDIxMCwgMTc1LCA1OCwgMjExLCAxNzIsIDU4LCAyMTEsIAorICAgIDE3MSwgNTgsIDIxMSwgMTcwLCA1OCwgMjExLCAxNjksIDU4LCAyMTEsIDE2OCwgNTgsIDIxMSwgMTY3LCA1OCwgMjExLCAKKyAgICAxNjYsIDU4LCAyMTEsIDE2NSwgNTgsIDIxMSwgMTY0LCA1OCwgMjExLCAxNjMsIDU4LCAyMTEsIDE2MSwgNTgsIDIxMSwgCisgICAgMTYwLCA1OCwgMjExLCAxNTksIDU4LCAyMTEsIDE1OCwgNTgsIDIxMSwgMTU3LCA1OCwgMjExLCAxNTYsIDU4LCAyMTEsIAorICAgIDE1NSwgNTgsIDIxMSwgMTU0LCA1OCwgMjExLCAxNTMsIDU4LCAyMTEsIDE1MiwgNTgsIDIxMSwgMTUwLCA1OCwgMjExLCAKKyAgICAxNDksIDU4LCAyMTEsIDE0OCwgNTgsIDIxMSwgMTQ3LCA1OCwgMjExLCAxNDYsIDU4LCAyMTEsIDE0NSwgNTgsIDIxMSwgCisgICAgMTQ0LCA1OCwgMjExLCAxNDMsIDU4LCAyMTEsIDE0MiwgNTgsIDIxMSwgMTQxLCA1OCwgMjExLCAxMzksIDU4LCAyMTEsIAorICAgIDEzOCwgNTgsIDIxMSwgMTM3LCA1OCwgMjExLCAxMzYsIDU4LCAyMTEsIDEzNSwgNTgsIDIxMSwgMTM0LCA1OCwgMjExLCAKKyAgICAxMzMsIDU4LCAyMTEsIDEzMiwgNTgsIDIxMSwgMTMxLCA1OCwgMjExLCAxMzAsIDU4LCAyMTEsIDEyOCwgNTgsIDIxMSwgCisgICAgMTI3LCA1OCwgMjExLCAxMjYsIDU4LCAyMTEsIDEyNSwgNTgsIDIxMSwgMTI0LCA1OCwgMjExLCAxMjMsIDU4LCAyMTEsIAorICAgIDEyMiwgNTgsIDIxMSwgMTIxLCA1OCwgMjExLCAxMjAsIDU4LCAyMTEsIDExOSwgNTgsIDIxMSwgMTE3LCA1OCwgMjExLCAKKyAgICAxMTYsIDU4LCAyMTEsIDExNSwgNTgsIDIxMSwgMTE0LCA1OCwgMjExLCAxMTMsIDU4LCAyMTEsIDExMiwgNTgsIDIxMSwgCisgICAgMTExLCA1OCwgMjExLCAxMTAsIDU4LCAyMTEsIDEwOSwgNTgsIDIxMSwgMTA4LCA1OCwgMjExLCAxMDYsIDU4LCAyMTEsIAorICAgIDEwNSwgNTgsIDIxMSwgMTA0LCA1OCwgMjExLCAxMDMsIDU4LCAyMTEsIDEwMiwgNTgsIDIxMSwgMTAxLCA1OCwgMjExLCAKKyAgICAxMDAsIDU4LCAyMTEsIDk5LCA1OCwgMjExLCA5OCwgNTgsIDIxMSwgOTcsIDU4LCAyMTEsIDk1LCA1OCwgMjExLCA5NCwgNTgsIAorICAgIDIxMSwgOTMsIDU4LCAyMTEsIDkyLCA1OCwgMjExLCA5MSwgNTgsIDIxMSwgOTAsIDU4LCAyMTEsIDg5LCA1OCwgMjExLCA4OCwgCisgICAgNTgsIDIxMSwgODcsIDU4LCAyMTEsIDg2LCA1OCwgMjExLCA4NCwgNTgsIDIxMSwgODMsIDU4LCAyMTEsIDgyLCA1OCwgMjExLCAKKyAgICA4MSwgNTgsIDIxMSwgODAsIDU4LCAyMTEsIDc5LCA1OCwgMjExLCA3OCwgNTgsIDIxMSwgNzcsIDU4LCAyMTEsIDc2LCA1OCwgCisgICAgMjExLCA3NSwgNTgsIDIxMSwgNzMsIDU4LCAyMTEsIDcyLCA1OCwgMjExLCA3MSwgNTgsIDIxMSwgNzAsIDU4LCAyMTEsIDY5LCAKKyAgICA1OCwgMjExLCA2OCwgNTgsIDIxMSwgNjcsIDU4LCAyMTEsIDY2LCA1OCwgMjExLCA2NSwgNTgsIDIxMSwgNjQsIDU4LCAyMTEsIAorICAgIDYxLCA1OCwgMjExLCA2MCwgNTgsIDIxMSwgNTksIDU4LCAyMTEsIDU4LCA1OCwgMjExLCA1NywgNTgsIDIxMSwgNTYsIDU4LCAKKyAgICAyMTEsIDU1LCA1OCwgMjExLCA1NCwgNTgsIDIxMSwgNTMsIDU4LCAyMTEsIDUyLCA1OCwgMjExLCA1MCwgNTgsIDIxMSwgNDksIAorICAgIDU4LCAyMTEsIDQ4LCA1OCwgMjExLCA0NywgNTgsIDIxMSwgNDYsIDU4LCAyMTEsIDQ1LCA1OCwgMjExLCA0NCwgNTgsIDIxMSwgCisgICAgNDMsIDU4LCAyMTEsIDQyLCA1OCwgMjExLCA0MSwgNTgsIDIxMSwgMzksIDU4LCAyMTEsIDM4LCA1OCwgMjExLCAzNywgNTgsIAorICAgIDIxMSwgMzYsIDU4LCAyMTEsIDM1LCA1OCwgMjExLCAzNCwgNTgsIDIxMSwgMzMsIDU4LCAyMTEsIDMyLCA1OCwgMjExLCAzMSwgCisgICAgNTgsIDIxMSwgMzAsIDU4LCAyMTEsIDI4LCA1OCwgMjExLCAyNywgNTgsIDIxMSwgMjYsIDU4LCAyMTEsIDI1LCA1OCwgMjExLCAKKyAgICAyNCwgNTgsIDIxMSwgMjMsIDU4LCAyMTEsIDIyLCA1OCwgMjExLCAyMSwgNTgsIDIxMSwgMjAsIDU4LCAyMTEsIDE5LCA1OCwgCisgICAgMjExLCAxNywgNTgsIDIxMSwgMTYsIDU4LCAyMTEsIDE1LCA1OCwgMjExLCAxNCwgNTgsIDIxMSwgMTMsIDU4LCAyMTEsIDEyLCAKKyAgICA1OCwgMjExLCAxMSwgNTgsIDIxMSwgMTAsIDU4LCAyMTEsIDksIDU4LCAyMTEsIDgsIDU4LCAyMTEsIDYsIDU4LCAyMTEsIDUsIAorICAgIDU4LCAyMTEsIDQsIDU4LCAyMTEsIDMsIDU4LCAyMTEsIDIsIDU4LCAyMTEsIDEsIDU4LCAyMTEsIDAsIDIxOCwgOTcsIDIxOCwgCisgICAgOTksIDIwOCwgMTA1LCA3NiwgMjM0LCAxMzMsIDIwOSwgMTksIDIwOCwgMTA1LCA3NiwgMjA2LCAxMjYsIDIwOCwgMjYsIAorICAgIDIzOCwgMTcxLCA3NiwgMjA2LCAxMjYsIDIzOCwgNzEsIDIzOCwgMTcxLCA3NiwgMjA1LCAxMTgsIDIzOCwgMTM0LCAyMzgsIAorICAgIDE1OCwgMjM4LCAxNTksIDI1MSwgMjQzLCAyNTEsIDI0NCwgMjUxLCAxMzksIDI0OCwgMjMzLCAyNDksIDEyMywgMjQ4LCA0MiwgCisgICAgMTcxLCAyMDcsIDE5LCAyMzMsIDE3NywgMjA3LCAxOSwgMjMzLCAxMDIsIDIwNywgMjQsIDIyNCwgMTc3LCAyMzcsIDEzOCwgCisgICAgMjIwLCA4LCAyMjQsIDE3NiwgMjM4LCAxNzEsIDc2LCAyMjQsIDE3NiwgMjI0LCAyMjUsIDIxOSwgNDcsIDIzOCwgMTM3LCAKKyAgICAyMjQsIDE3NywgMjA3LCAxOSwgODMsIDIwNywgMTksIDIwMSwgMTY4LCAyMzYsIDI0MiwgMjM3LCAxMzgsIDIzNywgMTE2LCAKKyAgICAyNDcsIDEyMSwgMjEzLCAxMDksIDI0MiwgMjUyLCAyMTAsIDI5LCAyMTYsIDI1NCwgMjI0LCAxMDIsIDEwMiwgMjA5LCAyOSwgCisgICAgMjEwLCAyOSwgMjI4LCAxMTcsIDIyNCwgMTAyLCAxOTksIDgxLCAyMDksIDE4MiwgMjQxLCAyMzksIDIyNCwgMTY3LCAyMzgsIAorICAgIDk2LCAyNDAsIDIyMSwgMjQxLCAxMDcsIDI0MywgMzQsIDEwMiwgMjQxLCAyMjgsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDUsIAorICAgIDI0MSwgMjI3LCAyNDEsIDEwNywgMjQzLCAzNCwgMTQ3LCAyNDEsIDIyNiwgMjQxLCAxMDcsIDI0MywgMzQsIDE0OSwgMjQxLCAKKyAgICAyMjUsIDE4OSwgMjUxLCAyNDMsIDIyMCwgMTQwLCAyMDcsIDEwOSwgMjI4LCAxODAsIDIwNywgMTEzLCAyMzgsIDE3MSwgNzYsIAorICAgIDIwNSwgMTE5LCAyNDgsIDEzNCwgMjM4LCA3OCwgMjQ3LCAxNTYsIDI0NywgMTU4LCAyMzgsIDE3MSwgNzYsIDIyMiwgNjUsIAorICAgIDIzOCwgMTM1LCAyMDgsIDAsIDIwOCwgMTcsIDIzOCwgOTYsIDIzOCwgOTcsIDIyOCwgOTIsIDIxMCwgMTU1LCAxNDksIDIzNywgCisgICAgOTcsIDIxMCwgMTU0LCAyMzYsIDE5MywgMjI4LCA5MiwgMjEwLCAxNTUsIDE0NywgMjM1LCA1OCwgMjEwLCAxNTQsIDIzNSwgCisgICAgNTUsIDIyOCwgOTIsIDIxMCwgMTU1LCAxMDUsIDIxMywgMTgxLCAyMTAsIDE1NCwgMjEyLCAxODAsIDIyOCwgOTIsIDIxMCwgCisgICAgMTU1LCAxMDIsIDIwMywgMjQwLCAyMTAsIDE1NCwgMjAzLCAxOTcsIDIwOCwgMjQ3LCAyNDEsIDE0NiwgMjQxLCAxNDgsIAorICAgIDIxNiwgMTk5LCAyNDcsIDIwLCAyMTYsIDIwMSwgMTIyLCAyMTcsIDEyOCwgMjE1LCAxOCwgMjMzLCAxODAsIDI0OCwgNjEsIAorICAgIDIxNiwgMTcsIDIzNCwgOTksIDI0OCwgNzQsIDIxOCwgMjQyLCAyNDgsIDYxLCAyMzQsIDk5LCAyMjAsIDEwMywgMjI4LCAKKyAgICAxMDMsIDIyOCwgMTA1LCAyMjAsIDIsIDIyNCwgMTc2LCAyMjAsIDI1LCAyMDgsIDEwNSwgNzYsIDIxMSwgMTc3LCAyNTAsIAorICAgIDIyOCwgMjA4LCAxNzksIDIzOCwgMTcxLCA3NiwgMjExLCAxNzcsIDI1MCwgMjI4LCAyMzgsIDk5LCAxNzEsIDIwNywgMjAsIAorICAgIDIxMCwgMTQxLCAyMzMsIDE3NywgMjA3LCAyMCwgMjEwLCAxNDEsIDIzMywgOTksIDE3MSwgMjA3LCAyMCwgMywgMjI3LCAKKyAgICAxMzAsIDIzMywgMTc3LCAyMDcsIDIwLCAzLCAyMjcsIDEzMCwgMjMzLCAxMDAsIDIyNCwgMTc3LCAyMDcsIDIwLCAyMTAsIAorICAgIDE0MSwgODMsIDIwNywgMjAsIDIxMCwgMTQxLCAyMDEsIDE2NywgMjE2LCAxMDgsIDIyNCwgMTc3LCAyMzYsIDIzMywgMjE2LCAKKyAgICAxMDgsIDIyNCwgMTc3LCAyMzksIDE2NywgMjE1LCAxMjQsIDIxNiwgMTA4LCAyMjQsIDE3NywgMjQ5LCAxMjIsIDIxNiwgCisgICAgMTA4LCAyMjQsIDE3NywgMjAzLCAyMjgsIDIxNSwgMTE5LCAyMTMsIDEwNiwgMjI0LCAxNzcsIDIzNywgMTM4LCAyMTMsIAorICAgIDEwNiwgMjI4LCAxMDMsIDIxMywgODgsIDIwOSwgMTM5LCAyMTAsIDI5LCAxMDUsIDIwOSwgMTM2LCAyMDgsIDE4MSwgMjA5LCAKKyAgICAxMzksIDIxMCwgMjksIDE0NywgMjA5LCAxMzUsIDIwOCwgMTgwLCAyNDEsIDEwNywgMjQzLCAzNCwgMjA4LCA0OSwgMjQxLCAKKyAgICAyMjMsIDIxNSwgNCwgMjAzLCAxOTYsIDEwMiwgMjE1LCA0LCAyMDMsIDE5NCwgMjE0LCAyMjMsIDIxNSwgNCwgMjAzLCAxOTYsIAorICAgIDEwNSwgMjE1LCA0LCAyMDMsIDE5MywgMjE0LCAyMjIsIDIxMCwgMTQyLCAyMDUsIDExNywgMjA4LCAxMDQsIDIwOCwgMzIsIAorICAgIDI0NywgMTU3LCAyNDcsIDIwLCAyNDcsIDk1LCAyMjIsIDI0LCAyMDEsIDEwNiwgMjIwLCAyMzIsIDIwOCwgMTA1LCA3NiwgCisgICAgMjM1LCA0MywgMjUwLCAyMjgsIDIwOCwgMTA1LCA3NiwgMjE0LCAyNDEsIDI1MCwgMjI4LCAyMDgsIDI0NiwgMjM4LCAxNzEsIAorICAgIDc2LCAyMzUsIDQzLCAyNTAsIDIyOCwgMjM4LCAxNzEsIDc2LCAyMTQsIDI0MSwgMjUwLCAyMjgsIDIzOCwgMTMyLCAyMDgsIAorICAgIDEwNSwgNzYsIDIwOCwgNDksIDIwOSwgNSwgMjA5LCAxMzksIDIzNSwgNzksIDE3MSwgMjI4LCA1MiwgMjEwLCAxMTksIDIwOSwgCisgICAgMTM5LCAxNzEsIDIyOCwgNTIsIDIxMSwgMjE3LCAyNDMsIDM0LCAyMTAsIDE1MSwgMjI4LCA1MiwgMjQyLCAyMTUsIDIwOCwgCisgICAgNTAsIDIwNiwgMTUyLCAyMDgsIDEyMywgMjE3LCA0NSwgMjA3LCA5OCwgMjQ2LCA2OSwgMjE3LCAxMywgMjE1LCA1LCAyMjIsIAorICAgIDIzLCAyMTUsIDEwOSwgMjUxLCA5LCAyMTQsIDI1NSwgMjQ2LCA2OSwgMjUxLCAyNSwgMjIwLCA5MSwgMjA5LCAxOTEsIDgsIAorICAgIDYsIDEsIDIzNSwgMTk5LCA4LCA0LCAxLCAyMzUsIDE5OSwgMjQ3LCAzOSwgMjUxLCAxMTgsIDIwNywgMTAzLCAyMDgsIDYsIAorICAgIDI0NiwgODAsIDIwOSwgODYsIDIyNSwgMjgsIDIyNywgNjMsIDEsIDIyNCwgMTI5LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAKKyAgICAyMzcsIDUsIDIyNSwgNzUsIDEsIDIzNywgMTQsIDIzNywgMTUwLCAyMjUsIDc1LCAxLCAyMTMsIDEsIDIyNSwgNzUsIDEsIAorICAgIDIyNCwgMTEwLCA3OSwgMTM0LCAyNDgsIDE0NiwgMjEwLCA0LCAyMzUsIDE2MiwgMjIxLCAyMjksIDIxMywgOTYsIDIzNiwgCisgICAgMTcwLCAyMzYsIDE2OSwgMjM2LCAxNjgsIDIyMCwgMjM0LCAxOTgsIDI0MCwgMTk4LCAyNDEsIDE5OCwgMjQzLCAyMjQsIDQ2LCAKKyAgICAyMTMsIDksIDIyNCwgNDgsIDIxMywgMTEsIDIxNiwgNzYsIDIyNCwgNDUsIDIxMywgOCwgMjE5LCAxNywgMjIxLCAxNDAsIAorICAgIDIwMSwgMiwgMjI0LCA0NywgMjEzLCAxMCwgMjM2LCAxOTIsIDIxNiwgNzUsIDIwMSwgNTQsIDIzOCwgMTk0LCAyMzYsIDE4MCwgCisgICAgMjIxLCAyMTAsIDIxNywgNzksIDIwMywgMTk4LCA5OSwgMjIxLCAyMTAsIDI0MSwgMjQ1LCA5OSwgOTgsIDIwNSwgOTcsIDU1LCAKKyAgICAzLCA1MywgODMsIDk3LCA4NywgMjA1LCA5NywgNTUsIDMsIDUzLCA4MywgOTcsIDExLCA1LCAyMjgsIDEwLCA4MSwgMjE1LCAKKyAgICAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDY0LCAyMjQsIDI0NywgMTU5LCAyMDIsIDE2OCwgMjAyLCA1NywgMjAxLCAyNDUsIAorICAgIDIwMSwgMjM0LCAyMDEsIDIyMywgMjAxLCAyMTIsIDIwMSwgMjAxLCAyMDEsIDE5MCwgMjAxLCAxNzksIDIwMiwgMTY3LCAKKyAgICAyMDIsIDE1NiwgMjAyLCAxNDUsIDIwMiwgMTM0LCAyMDIsIDEyMywgMjAyLCAxMTIsIDIwMiwgMTAxLCAyNDcsIDIyOCwgCisgICAgMjE3LCAzMCwgODEsIDI0OCwgMTE0LCAxOTgsIDI0MiwgMTAsIDIsIDIxOCwgMTA2LCAyMDYsIDE1NSwgMTAsIDIsIDIxOCwgCisgICAgMTA2LCAxMTksIDIxOCwgMTA2LCAyNDgsIDQsIDExOSwgMjQ4LCAzLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjA5LCA4MiwgCisgICAgMjQ2LCAxOTYsIDIwMywgNjksIDIwMiwgOTAsIDIwMiwgNzksIDIwMiwgNjgsIDIwMiwgNTYsIDIwMiwgNDUsIDIwMiwgMzQsIAorICAgIDIwMiwgMjMsIDIwMiwgMTIsIDIwMiwgMSwgMjAxLCAyNDksIDIwMSwgMjQ4LCAyMDEsIDI0NywgMjAxLCAyNDYsIDIwMSwgCisgICAgMjQ0LCAyMDEsIDI0MywgMjAxLCAyNDIsIDIwMSwgMjQxLCAyMDEsIDI0MCwgMjAxLCAyMzksIDIwMSwgMjM4LCAyMDEsIAorICAgIDIzNywgMjAxLCAyMzYsIDIwMSwgMjM1LCAyMDEsIDIzMywgMjAxLCAyMzIsIDIwMSwgMjMxLCAyMDEsIDIzMCwgMjAxLCAKKyAgICAyMjksIDIwMSwgMjI4LCAyMDEsIDIyNywgMjAxLCAyMjYsIDIwMSwgMjI1LCAyMDEsIDIyNCwgMjAxLCAyMjIsIDIwMSwgCisgICAgMjIxLCAyMDEsIDIyMCwgMjAxLCAyMTksIDIwMSwgMjE4LCAyMDEsIDIxNywgMjAxLCAyMTYsIDIwMSwgMjE1LCAyMDEsIAorICAgIDIxNCwgMjAxLCAyMTMsIDIwMSwgMjExLCAyMDEsIDIxMCwgMjAxLCAyMDksIDIwMSwgMjA4LCAyMDEsIDIwNywgMjAxLCAKKyAgICAyMDYsIDIwMSwgMjA1LCAyMDEsIDIwNCwgMjAxLCAyMDMsIDIwMSwgMjAyLCAyMDEsIDIwMCwgMjAxLCAxOTksIDIwMSwgCisgICAgMTk4LCAyMDEsIDE5NywgMjAxLCAxOTYsIDIwMSwgMTk1LCAyMDEsIDE5NCwgMjAxLCAxOTMsIDIwMSwgMTkyLCAyMDEsIAorICAgIDE5MSwgMjAxLCAxODksIDIwMSwgMTg4LCAyMDEsIDE4NywgMjAxLCAxODYsIDIwMSwgMTg1LCAyMDEsIDE4NCwgMjAxLCAKKyAgICAxODMsIDIwMSwgMTgyLCAyMDEsIDE4MSwgMjAxLCAxODAsIDIwMSwgMTc4LCAyMDEsIDE3NywgMjAxLCAxNzYsIDIwMSwgCisgICAgMTc1LCAyMDEsIDE3NCwgMjAxLCAxNzMsIDIwMSwgMTcyLCAyMDEsIDE3MSwgMjAxLCAxNzAsIDIwMSwgMTY5LCAyMDIsIAorICAgIDE2NiwgMjAyLCAxNjUsIDIwMiwgMTY0LCAyMDIsIDE2MywgMjAyLCAxNjIsIDIwMiwgMTYxLCAyMDIsIDE2MCwgMjAyLCAKKyAgICAxNTksIDIwMiwgMTU4LCAyMDIsIDE1NywgMjAyLCAxNTUsIDIwMiwgMTU0LCAyMDIsIDE1MywgMjAyLCAxNTIsIDIwMiwgCisgICAgMTUxLCAyMDIsIDE1MCwgMjAyLCAxNDksIDIwMiwgMTQ4LCAyMDIsIDE0NywgMjAyLCAxNDYsIDIwMiwgMTQ0LCAyMDIsIAorICAgIDE0MywgMjAyLCAxNDIsIDIwMiwgMTQxLCAyMDIsIDE0MCwgMjAyLCAxMzksIDIwMiwgMTM4LCAyMDIsIDEzNywgMjAyLCAKKyAgICAxMzYsIDIwMiwgMTM1LCAyMDIsIDEzMywgMjAyLCAxMzIsIDIwMiwgMTMxLCAyMDIsIDEzMCwgMjAyLCAxMjksIDIwMiwgCisgICAgMTI4LCAyMDIsIDEyNywgMjAyLCAxMjYsIDIwMiwgMTI1LCAyMDIsIDEyNCwgMjAyLCAxMjIsIDIwMiwgMTIxLCAyMDIsIAorICAgIDEyMCwgMjAyLCAxMTksIDIwMiwgMTE4LCAyMDIsIDExNywgMjAyLCAxMTYsIDIwMiwgMTE1LCAyMDIsIDExNCwgMjAyLCAKKyAgICAxMTMsIDIwMiwgMTExLCAyMDIsIDExMCwgMjAyLCAxMDksIDIwMiwgMTA4LCAyMDIsIDEwNywgMjAyLCAxMDYsIDIwMiwgCisgICAgMTA1LCAyMDIsIDEwNCwgMjAyLCAxMDMsIDIwMiwgMTAyLCAyMDIsIDEwMCwgMjAyLCA5OSwgMjAyLCA5OCwgMjAyLCA5NywgCisgICAgMjAyLCA5NiwgMjAyLCA5NSwgMjAyLCA5NCwgMjAyLCA5MywgMjAyLCA5MiwgMjAyLCA5MSwgMjAyLCA4OSwgMjAyLCA4OCwgCisgICAgMjAyLCA4NywgMjAyLCA4NiwgMjAyLCA4NSwgMjAyLCA4NCwgMjAyLCA4MywgMjAyLCA4MiwgMjAyLCA4MSwgMjAyLCA4MCwgCisgICAgMjAyLCA3OCwgMjAyLCA3NywgMjAyLCA3NiwgMjAyLCA3NSwgMjAyLCA3NCwgMjAyLCA3MywgMjAyLCA3MiwgMjAyLCA3MSwgCisgICAgMjAyLCA3MCwgMjAyLCA2OSwgMjAyLCA2NywgMjAyLCA2NiwgMjAyLCA2NSwgMjAyLCA2NCwgMjAyLCA2MywgMjAyLCA2MiwgCisgICAgMjAyLCA2MSwgMjAyLCA2MCwgMjAyLCA1OSwgMjAyLCA1OCwgMjAyLCA1NSwgMjAyLCA1NCwgMjAyLCA1MywgMjAyLCA1MiwgCisgICAgMjAyLCA1MSwgMjAyLCA1MCwgMjAyLCA0OSwgMjAyLCA0OCwgMjAyLCA0NywgMjAyLCA0NiwgMjAyLCA0NCwgMjAyLCA0MywgCisgICAgMjAyLCA0MiwgMjAyLCA0MSwgMjAyLCA0MCwgMjAyLCAzOSwgMjAyLCAzOCwgMjAyLCAzNywgMjAyLCAzNiwgMjAyLCAzNSwgCisgICAgMjAyLCAzMywgMjAyLCAzMiwgMjAyLCAzMSwgMjAyLCAzMCwgMjAyLCAyOSwgMjAyLCAyOCwgMjAyLCAyNywgMjAyLCAyNiwgCisgICAgMjAyLCAyNSwgMjAyLCAyNCwgMjAyLCAyMiwgMjAyLCAyMSwgMjAyLCAyMCwgMjAyLCAxOSwgMjAyLCAxOCwgMjAyLCAxNywgCisgICAgMjAyLCAxNiwgMjAyLCAxNSwgMjAyLCAxNCwgMjAyLCAxMywgMjAyLCAxMSwgMjAyLCAxMCwgMjAyLCA5LCAyMDIsIDgsIAorICAgIDIwMiwgNywgMjAyLCA2LCAyMDIsIDUsIDIwMiwgNCwgMjAyLCAzLCAyMDIsIDIsIDIwMiwgMCwgMjAxLCAyNTUsIDIwMSwgCisgICAgMjU0LCAyMDEsIDI1MywgMjAxLCAyNTIsIDIwMSwgMjUxLCAyMDEsIDI1MCwgOCwgNiwgMSwgMzUsIDMsIDIyMiwgMjI5LCAKKyAgICAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMzUsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTk3LCAzLCA4MywgCisgICAgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDE5NywgMywgODMsIAorICAgIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgCisgICAgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMTk3LCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgCisgICAgMjIyLCAyMjgsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIAorICAgIDE0NywgMjYsIDI0NywgMTI1LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjQ3LCAxMjUsIDgsIDYsIDEsIDIzMywgCisgICAgMTksIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCAKKyAgICA4LCA0LCAxLCAyMzMsIDE5LCAzLCA3MywgODgsIDI2LCAxNjksIDgsIDQsIDEsIDIyMCwgMCwgMywgMjA1LCAyNDEsIDU2LCAKKyAgICA4LCA2LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgCisgICAgNiwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCA4MywgCisgICAgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAKKyAgICAyNiwgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAxNjksIDgsIDYsIDEsIDIxMiwgCisgICAgMTIzLCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgNiwgCisgICAgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCAKKyAgICA4LCA2LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDQsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgCisgICAgNiwgMSwgMzUsIDMsIDIxNywgMTExLCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgCisgICAgMjQwLCA4LCA2LCAxLCAxOTcsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDIxNywgMTExLCAyNiwgCisgICAgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDIxNywgMTExLCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgMywgMjE3LCAxMTEsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTk3LCAzLCA3MywgODgsIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgNzMsIDg4LCAKKyAgICAyNiwgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDczLCA4OCwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIDMsIDczLCA4OCwgCisgICAgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCA3MywgODgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAyMzMsIDE5LCAKKyAgICAzLCA3MywgODgsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDIzMywgMTksIDMsIDIxNywgMTExLCAyNiwgNzMsIDg4LCAyNiwgMTY5LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMSwgCisgICAgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMSwgMjYsIDczLCA4OCwgMjYsIDIwNSwgMjQwLCA4LCAKKyAgICA2LCAxLCAyMjcsIDI1MiwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCA3MywgODgsIDI2LCAyMDUsIDI0MCwgCisgICAgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjA1LCAyNDAsIDgsIDYsIDEsIAorICAgIDIyMywgMjQ0LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDEwOCwgMywgMjE3LCAxMTEsIAorICAgIDI2LCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjE3LCAxMTEsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTA4LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI5LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgCisgICAgMjUxLCAyMjIsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDE3NiwgMTYzLCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxNzYsIDE2MywgCisgICAgMywgMTY5LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAzLCAxNjksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDMsIAorICAgIDE2OSwgMywgMTY5LCA4LCA0LCAxLCAyMTEsIDIxOSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjExLCAyMTksIDMsIDE2OSwgOCwgCisgICAgNCwgMSwgMjMzLCAxODYsIDIxMSwgMjE5LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMzMsIDE4NiwgMjExLCAyMTksIDMsIAorICAgIDE2OSwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDI1MSwgMTQyLCA5LCAyMTAsIDE1MSwgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjAxLCA3MiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODcsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMTcsIDEyMSwgOSwgMjEwLCAxNTEsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDY2LCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk5LCAyMTEsIDksIAorICAgIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA3MiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIAorICAgIDMsIDI1MSwgMjIxLCA5LCAyMTAsIDE1MSwgMjE4LCAyMjgsIDMsIDIyNiwgMjUyLCAxODUsIDEsIDIyNiwgMTgyLCA0NSwgCisgICAgMTExLCAyMjcsIDExOCwgNDUsIDExMSwgMjE5LCAyNTUsIDQ1LCAxMTEsIDI0NywgMjIzLCA0NSwgMTExLCAyMTgsIDYyLCAKKyAgICA0NSwgMTExLCAyMDUsIDAsIDQ1LCAxMTEsIDIxOSwgMjIsIDQ1LCAxMTEsIDIwNywgODMsIDQ1LCAxMTEsIDIyMCwgMjE0LCAKKyAgICA0NSwgMTExLCAyMTYsIDIyNiwgNDUsIDExMSwgMjIzLCAyNDMsIDQ1LCAxMTEsIDIwMCwgMTIzLCA0NSwgMTExLCAxNDYsIAorICAgIDQ1LCAxMTEsIDE1NiwgNDUsIDExMSwgMjAzLCAxNjgsIDQ1LCAxMTEsIDIyNCwgMTMwLCA0NSwgMTExLCAyMjQsIDEzOSwgCisgICAgNDUsIDExMSwgMjEyLCAyMTYsIDQ1LCAxMTEsIDIxOSwgNCwgNDUsIDExMSwgMjI3LCAyNTEsIDQ1LCAxMTEsIDIxMCwgMTE2LCAKKyAgICA0NSwgMTExLCAyMDgsIDE4MiwgNDUsIDExMSwgMjEyLCAxMjIsIDQ1LCAxMTEsIDIzNCwgMjQ3LCA0NSwgMTExLCAyMjYsIAorICAgIDMwLCA0NSwgNSwgMjI3LCAxMDUsIDQ1LCA1LCAyMjYsIDE2MywgNDUsIDUsIDIyNiwgMTUwLCA0NSwgNSwgMjI2LCAxNSwgCisgICAgNDUsIDUsIDIyNSwgMjM2LCA0NSwgNSwgMjI3LCA4LCA0NSwgNSwgMjI3LCA1LCA0NSwgNSwgMjI3LCA4MiwgNDUsIDUsIAorICAgIDIyNiwgODgsIDQ1LCA1LCAyMjYsIDY4LCA0NSwgNSwgMjI3LCAyNiwgNDUsIDUsIDIxOSwgMjUyLCA0NSwgNSwgMjE5LCAKKyAgICAyMDEsIDQ1LCA1LCAyMTksIDE5NywgNDUsIDUsIDIxOSwgMTY2LCA0NSwgNSwgMjE5LCAxNTgsIDQ1LCA1LCAyMTksIDI0MCwgCisgICAgNDUsIDUsIDIxOSwgMjM4LCA0NSwgNSwgMjE5LCAyNDksIDQ1LCA1LCAyMTksIDE3OCwgNDUsIDUsIDIxOSwgMTczLCA0NSwgCisgICAgNSwgMjE5LCAyNDIsIDQ1LCA1LCAyNDcsIDE4OSwgNDUsIDUsIDI0NiwgMTczLCA0NSwgNSwgMjQ2LCAxNjMsIDQ1LCA1LCAKKyAgICAyNDIsIDIxNCwgNDUsIDUsIDI0MiwgMTc4LCA0NSwgNSwgMjQ3LCA3NiwgNDUsIDUsIDI0NywgNjgsIDQ1LCA1LCAyNDcsIAorICAgIDE3OCwgNDUsIDUsIDI0NiwgOTEsIDQ1LCA1LCAyNDMsIDMwLCA0NSwgNSwgMjQ3LCAxMDksIDQ1LCA1LCAyMTgsIDU5LCA0NSwgCisgICAgNSwgMjE4LCA0MSwgNDUsIDUsIDIxOCwgMzYsIDQ1LCA1LCAyMTgsIDE5LCA0NSwgNSwgMjE4LCAxMSwgNDUsIDUsIDIxOCwgCisgICAgNTAsIDQ1LCA1LCAyMTgsIDQ5LCA0NSwgNSwgMjE4LCA1NiwgNDUsIDUsIDIxOCwgMjYsIDQ1LCA1LCAyMTgsIDIzLCA0NSwgCisgICAgNSwgMjE4LCA1MywgNDUsIDUsIDIwNCwgMjUyLCA0NSwgNSwgMjA0LCAyMzIsIDQ1LCA1LCAyMDQsIDIzMSwgNDUsIDUsIAorICAgIDIwNCwgMjIwLCA0NSwgNSwgMjA0LCAyMTcsIDQ1LCA1LCAyMDQsIDI0OCwgNDUsIDUsIDIwNCwgMjQ3LCA0NSwgNSwgMjA0LCAKKyAgICAyNTEsIDQ1LCA1LCAyMDQsIDIzMCwgNDUsIDUsIDIwNCwgMjI5LCA0NSwgNSwgMjA0LCAyNTAsIDQ1LCA1LCAyMTksIDIwLCAKKyAgICA0NSwgNSwgMjE5LCA2LCA0NSwgNSwgMjE5LCA1LCA0NSwgNSwgMjE4LCAyNDUsIDQ1LCA1LCAyMTgsIDI0NCwgNDUsIDUsIAorICAgIDIxOSwgMTYsIDQ1LCA1LCAyMTksIDE1LCA0NSwgNSwgMjE5LCAxOSwgNDUsIDUsIDIxOCwgMjQ3LCA0NSwgNSwgMjE4LCAKKyAgICAyNDYsIDQ1LCA1LCAyMTksIDE4LCA0NSwgNSwgMjA3LCAzMiwgNDUsIDUsIDIwNiwgMTUsIDQ1LCA1LCAyMDUsIDI1NSwgNDUsIAorICAgIDUsIDIwNCwgMjE1LCA0NSwgNSwgMjA0LCAxNzYsIDQ1LCA1LCAyMDYsIDIwMSwgNDUsIDUsIDIwNiwgMTkwLCA0NSwgNSwgCisgICAgMjA3LCA4LCA0NSwgNSwgMTM4LCA0NSwgNSwgMjA1LCAxNjEsIDQ1LCA1LCAyMDYsIDIyMSwgNDUsIDUsIDIyMCwgMTU3LCAKKyAgICA0NSwgNSwgMjE5LCAxNTAsIDQ1LCA1LCAyMTksIDEyNSwgNDUsIDUsIDIxOCwgMTMzLCA0NSwgNSwgMjE4LCA3NCwgNDUsIDUsIAorICAgIDIyMCwgMzQsIDQ1LCA1LCAyMjAsIDI5LCA0NSwgNSwgMjIwLCAxNDMsIDQ1LCA1LCAyMTgsIDI0MSwgNDUsIDUsIDIxOCwgCisgICAgMjI5LCA0NSwgNSwgMjIwLCAxMTYsIDQ1LCA1LCAyMTYsIDIxMCwgNDUsIDUsIDIxNSwgMjA0LCA0NSwgNSwgMjE1LCAxNjYsIAorICAgIDQ1LCA1LCAyMTQsIDIyNCwgNDUsIDUsIDIxNCwgMTkwLCA0NSwgNSwgMjE2LCA3MywgNDUsIDUsIDIxNiwgNjEsIDQ1LCA1LCAKKyAgICAyMTYsIDE5MCwgNDUsIDUsIDIxNSwgMTA2LCA0NSwgNSwgMjE1LCA4MSwgNDUsIDUsIDIxNiwgODcsIDQ1LCA1LCAyMjIsIAorICAgIDIzMywgNDUsIDUsIDIyMSwgMjExLCA0NSwgNSwgMjIxLCAxODEsIDQ1LCA1LCAyMjEsIDQxLCA0NSwgNSwgMjIwLCAyNDMsIAorICAgIDQ1LCA1LCAyMjIsIDc2LCA0NSwgNSwgMjIyLCA2NCwgNDUsIDUsIDIyMiwgMTk4LCA0NSwgNSwgMjIxLCAxMzYsIDQ1LCA1LCAKKyAgICAyMjEsIDg3LCA0NSwgNSwgMjIyLCAxMjMsIDQ1LCA1LCAyMDAsIDEwOSwgNDUsIDUsIDIwMCwgOSwgNDUsIDUsIDIwMCwgMCwgCisgICAgNDUsIDUsIDE5OSwgMjExLCA0NSwgNSwgMTk5LCAxNzksIDQ1LCA1LCAyMDAsIDUxLCA0NSwgNSwgMjAwLCA0OCwgNDUsIDUsIAorICAgIDIwMCwgODgsIDQ1LCA1LCAxOTksIDI0NSwgNDUsIDUsIDE5OSwgMjMwLCA0NSwgNSwgMjAwLCA2MSwgNDUsIDUsIDIxMywgCisgICAgMjQ4LCA0NSwgNSwgMjEzLCA4OCwgNDUsIDUsIDIxMywgMzMsIDQ1LCA1LCAyMTIsIDE3NSwgNDUsIDUsIDIxMiwgMTQzLCAKKyAgICA0NSwgNSwgMjEzLCAxOTAsIDQ1LCA1LCAyMTMsIDE2NywgNDUsIDUsIDIxMywgMjI5LCA0NSwgNSwgMjEzLCAxLCA0NSwgNSwgCisgICAgMjEyLCAyMzgsIDQ1LCA1LCAyMTMsIDE5OSwgNDUsIDUsIDIyNSwgMTc1LCA0NSwgNSwgMjI0LCAyMTAsIDQ1LCA1LCAyMjQsIAorICAgIDE5MiwgNDUsIDUsIDIyNCwgNDIsIDQ1LCA1LCAyMjQsIDEzLCA0NSwgNSwgMjI1LCA0MCwgNDUsIDUsIDIyNSwgMzIsIDQ1LCAKKyAgICA1LCAyMjUsIDE0OSwgNDUsIDUsIDIyNCwgMTEwLCA0NSwgNSwgMjI0LCA3OCwgNDUsIDUsIDIyNSwgNTgsIDQ1LCA1LCAyMDMsIAorICAgIDg5LCA0NSwgNSwgMjAyLCAyMzQsIDQ1LCA1LCAyMDIsIDIxOSwgNDUsIDUsIDIwMSwgMTY2LCA0NSwgNSwgMjAxLCAxNTksIAorICAgIDQ1LCA1LCAyMDMsIDU5LCA0NSwgNSwgMjAzLCA1NCwgNDUsIDUsIDIwMywgODUsIDQ1LCA1LCAyMDIsIDE5MywgNDUsIDUsIAorICAgIDIwMiwgMTc5LCA0NSwgNSwgMjAzLCA2NSwgNDUsIDUsIDIyNCwgMTI4LCA0NSwgNSwgMjI0LCAxMjMsIDQ1LCA1LCAyMjQsIAorICAgIDEyMiwgNDUsIDUsIDIyNCwgMTE5LCA0NSwgNSwgMjI0LCAxMTgsIDQ1LCA1LCAyMjQsIDEyNSwgNDUsIDUsIDIyNCwgMTI0LCAKKyAgICA0NSwgNSwgMjI0LCAxMjcsIDQ1LCA1LCAyMjQsIDEyMSwgNDUsIDUsIDIyNCwgMTIwLCA0NSwgNSwgMjI0LCAxMjYsIDQ1LCAKKyAgICA1LCAyMjQsIDEzNywgNDUsIDUsIDIyNCwgMTMyLCA0NSwgNSwgMjI0LCAxMzEsIDQ1LCA1LCAyMjQsIDExNSwgNDUsIDUsIAorICAgIDIyNCwgMTE0LCA0NSwgNSwgMjI0LCAxMzQsIDQ1LCA1LCAyMjQsIDEzMywgNDUsIDUsIDIyNCwgMTM2LCA0NSwgNSwgMjI0LCAKKyAgICAxMTcsIDQ1LCA1LCAyMjQsIDExNiwgNDUsIDUsIDIyNCwgMTM1LCA0NSwgNSwgMjEyLCAyMTQsIDQ1LCA1LCAyMTIsIDIwMywgCisgICAgNDUsIDUsIDIxMiwgMjAyLCA0NSwgNSwgMjEyLCAxOTUsIDQ1LCA1LCAyMTIsIDE4OCwgNDUsIDUsIDIxMiwgMjEwLCA0NSwgCisgICAgNSwgMjEyLCAyMDksIDQ1LCA1LCAyMTIsIDIxMywgNDUsIDUsIDIxMiwgMjAxLCA0NSwgNSwgMjEyLCAyMDAsIDQ1LCA1LCAKKyAgICAyMTIsIDIxMiwgNDUsIDUsIDIxOSwgMiwgNDUsIDUsIDIxOCwgMjUzLCA0NSwgNSwgMjE4LCAyNTIsIDQ1LCA1LCAyMTgsIAorICAgIDI0OSwgNDUsIDUsIDIxOCwgMjQ4LCA0NSwgNSwgMjE4LCAyNTUsIDQ1LCA1LCAyMTgsIDI1NCwgNDUsIDUsIDIxOSwgMSwgCisgICAgNDUsIDUsIDIxOCwgMjUxLCA0NSwgNSwgMjE4LCAyNTAsIDQ1LCA1LCAyMTksIDAsIDQ1LCA1LCAyMjcsIDI0NywgNDUsIDUsIAorICAgIDIyNywgMjA3LCA0NSwgNSwgMjI3LCAyMDAsIDQ1LCA1LCAyMjcsIDE0NywgNDUsIDUsIDIyNywgMTI4LCA0NSwgNSwgMjI3LCAKKyAgICAyMjcsIDQ1LCA1LCAyMjcsIDIyNSwgNDUsIDUsIDIyNywgMjQxLCA0NSwgNSwgMjI3LCAxNjYsIDQ1LCA1LCAyMjcsIDE1NiwgCisgICAgNDUsIDUsIDIyNywgMjM0LCA0NSwgNSwgMjEwLCAxMDksIDQ1LCA1LCAyMTAsIDMzLCA0NSwgNSwgMjEwLCAyOCwgNDUsIDUsIAorICAgIDIwOSwgMjIwLCA0NSwgNSwgMjA5LCAyMDMsIDQ1LCA1LCAyMTAsIDY1LCA0NSwgNSwgMjEwLCA2MywgNDUsIDUsIDIxMCwgCisgICAgOTgsIDQ1LCA1LCAyMTAsIDgsIDQ1LCA1LCAyMTAsIDIsIDQ1LCA1LCAyMTAsIDc0LCA0NSwgNSwgMjA4LCAxNzgsIDQ1LCA1LCAKKyAgICAyMDgsIDE0NywgNDUsIDUsIDIwOCwgMTQzLCA0NSwgNSwgMjA4LCAxMzQsIDQ1LCA1LCAyMDgsIDEzMSwgNDUsIDUsIDIwOCwgCisgICAgMTUzLCA0NSwgNSwgMjA4LCAxNTIsIDQ1LCA1LCAyMDgsIDE3NywgNDUsIDUsIDIwOCwgMTM5LCA0NSwgNSwgMjA4LCAxMzgsIAorICAgIDQ1LCA1LCAyMDgsIDE1NSwgNDUsIDUsIDIxMiwgNjEsIDQ1LCA1LCAyMDksIDE4MiwgNDUsIDUsIDIwOSwgMTYxLCA0NSwgNSwgCisgICAgMjA4LCAyNCwgNDUsIDUsIDIwNywgMTkzLCA0NSwgNSwgMjExLCAyMDIsIDQ1LCA1LCAyMTEsIDE5MCwgNDUsIDUsIDIxMiwgCisgICAgNDYsIDQ1LCA1LCAyMDksIDI5LCA0NSwgNSwgMjA5LCAxMCwgNDUsIDUsIDIxMSwgMjQzLCA0NSwgNSwgMjM0LCAyMzMsIDQ1LCAKKyAgICA1LCAyMzQsIDc1LCA0NSwgNSwgMjM0LCA1NCwgNDUsIDUsIDIzMywgOTcsIDQ1LCA1LCAyMzMsIDcxLCA0NSwgNSwgMjM0LCAKKyAgICAxMzksIDQ1LCA1LCAyMzQsIDEyMCwgNDUsIDUsIDIzNCwgMjIzLCA0NSwgNSwgMjMzLCAyMDcsIDQ1LCA1LCAyMzMsIDE4OCwgCisgICAgNDUsIDUsIDIzNCwgMTUwLCA0NSwgNSwgMjI2LCAyOSwgNDUsIDUsIDIyNiwgMjgsIDQ1LCA1LCAyMjYsIDIzLCA0NSwgNSwgCisgICAgMjI2LCAyMiwgNDUsIDUsIDIyNiwgMTksIDQ1LCA1LCAyMjYsIDE4LCA0NSwgNSwgMjI2LCAyNSwgNDUsIDUsIDIyNiwgMjQsIAorICAgIDQ1LCA1LCAyMjYsIDI3LCA0NSwgNSwgMjI2LCAyMSwgNDUsIDUsIDIyNiwgMjAsIDQ1LCA1LCAyMjYsIDI2LCA0NSwgNSwgCisgICAgMjA5LCAyMjcsIDE0MywgMTExLCAyLCAyMDAsIDc0LCAxNDMsIDExMSwgMiwgMjEzLCAyMTgsIDE0MywgMTExLCAyLCAyMTMsIAorICAgIDEzNCwgMTE4LCAxLCAyMDQsIDEwMiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMTYxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAyMjYsIDIwNywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjI2LCA4OCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjI2LCAxNzgsIAorICAgIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxOSwgMTc4LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDcsIDE5MCwgODYsIDExMSwgMiwgCisgICAgMjQ2LCA4NiwgMjQ3LCAzNywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ2LCA5MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ2LCAKKyAgICAyMTAsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxOCwgMjYsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0MiwgNTgsIDg2LCAxMTEsIAorICAgIDIsIDI0NiwgODYsIDIwNCwgMjQxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDAsIDIxMSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMjA0LCAyMzYsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDE4OCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjA3LCAzNiwgODYsIAorICAgIDExMSwgMiwgMjQ2LCA4NiwgMjA2LCAxMjIsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDEzOCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMjA2LCA2MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE4LCAyNDEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0OSwgMTM2LCAKKyAgICA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTUsIDI0NSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE1LCAxMDYsIDg2LCAxMTEsIDIsIAorICAgIDI0NiwgODYsIDIxNSwgMjE3LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMjEsIDEzNiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMTk5LCAyNDUsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxMywgMSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjI0LCAxMTAsIDg2LCAKKyAgICAxMTEsIDIsIDI0NiwgODYsIDIwMiwgMTkzLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTAsIDExNCwgODYsIDExMSwgMiwgCisgICAgMjQ2LCA4NiwgMjA4LCAxNzksIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxMiwgNjQsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDE0NCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMTk0LCA4NiwgMjIsIDIsIDI0NiwgODYsIDIxNCwgMTU5LCA4NiwgMjI4LCAKKyAgICAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTQsIDk3LCA4NiwgMjI4LCAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTIsIDEzMSwgODYsIAorICAgIDIyOCwgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjEyLCAxMjQsIDg2LCAyMjgsIDEwNCwgMjIsIDIsIDI0NiwgODYsIDIxNCwgCisgICAgMTM5LCA4NiwgMjIsIDIsIDIxNywgODYsIDg2LCAyMiwgMiwgMjUyLCA5OSwgMTc3LCAxLCAyNDgsIDE4MSwgMjE5LCAyNTMsIAorICAgIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMjAxLCAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDE2NiwgMTc3LCAxLCAyNDgsIDE4MSwgCisgICAgMjE5LCAyNDAsIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMTc4LCA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMjUzLCA2OSwgMSwgCisgICAgMjQ4LCAxODEsIDIxOSwgMjAxLCA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMTY2LCA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMjQwLCAKKyAgICA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMTc4LCA2OSwgMSwgMjUxLCAxNjksIDI0NywgNzYsIDY5LCAxLCAyNTEsIDE2OSwgCisgICAgMjA0LCAyMTUsIDY5LCAxLCAyNTEsIDE2OSwgMTM4LCA2OSwgMSwgMjUxLCAxNjksIDIxNiwgMjI2LCA2NywgMSwgMjM4LCAKKyAgICAyOSwgMjM4LCAyOCwgMjQzLCAzOCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIDI4LCAyMzgsIDI5LCAyNDMsIDM4LCAxNTAsIAorICAgIDE0OCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rX29mZnNldDFbXSA9IHsKQEAgLTE2NTMzLDIwICsxNzY0OSwyMCBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIAogICAgIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgNTIsIDg3LCA1MiwgODgsIAotICAgIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgNTIsIDk3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDk4LCA5OSwgMTAwLCAKLSAgICAxMDEsIDEwMiwgMTAzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTA0LCAxMDUsIDEwNiwgCi0gICAgMTA3LCAxMDgsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDEwOSwgMTEwLCAxMTEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA1MiwgOTcsIDUyLCA5OCwgNTIsIDUyLCA1MiwgOTksIDEwMCwgMTAxLCAKKyAgICAxMDIsIDEwMywgMTA0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTA1LCAxMDYsIDEwNywgCisgICAgMTA4LCAxMDksIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDExMCwgMTExLCAxMTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDExMiwgMTEzLCAxMTQsIDExNSwgNTIsIDUyLCA1MiwgMTE2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDUyLCA1MiwgNTIsIDExNywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTE4LCAxMTksIAorICAgIDEyMCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDExNywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTgsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTksIDEyMCwgCi0gICAgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzMCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzEsIDUyLCAxMzIsIDEzMywgMTM0LCAKLSAgICAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgMTIxLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEyMiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEyMywgMTI0LCAKKyAgICAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzNCwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzNSwgMTM2LCA1MiwgNTIsIDUyLCA1MiwgMTM3LCA1MiwgMTM4LCAxMzksIDE0MCwgCisgICAgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NTYwLDcgKzE3Njc2LDcgQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0MiwgMTQzLCAxNDQsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQ4LCAxNDksIDE1MCwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCkBAIC0xNjcxNyw3ICsxNzgzMyw3IEBACiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0NSwgMTQ2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTUxLCAxNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY3MzEsOCArMTc4NDcsOCBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQ3LCAxNDgsIDE0OSwgCi0gICAgMTUwLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTUzLCAxNTQsIDE1NSwgCisgICAgMTU2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY3NjgsMTIxNCArMTc4ODQsMTIxNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDMsIDYsIDksIDExLCAxNCwgMTcsIDE5LCAyMSwgMjQsIDI3LCAyOSwgMzEsIAogICAgIDMzLCAzNSwgMzksIDQxLCA0NCwgNDYsIDQ4LCA1MCwgNTIsIDU0LCA1NiwgNTksIDYxLCA2NCwgNjYsIDY4LCA3MSwgNzQsIAogICAgIDc3LCA4MCwgODQsIDg4LCA5MywgOTgsIDEwMywgMTA3LCAxMTIsIDExNywgMTIyLCAxMjYsIDEzMSwgMTM2LCAxNDAsIDE0NSwgCi0gICAgMTUwLCAxNTQsIDE1OSwgMTY0LCAxNjgsIDE3MiwgMTc3LCAxODEsIDE4NiwgMTkxLCAxOTYsIDIwMSwgMjA2LCAyMDksIAotICAgIDIxMywgMjE2LCAyMjAsIDIyMywgMjI3LCAyMzEsIDIzNiwgMjQxLCAyNDYsIDI1MCwgMjU1LCAyNjAsIDI2NSwgMjY5LCAKLSAgICAyNzQsIDI3OSwgMjgzLCAyODgsIDI5MywgMjk3LCAzMDIsIDMwNywgMzExLCAzMTUsIDMyMCwgMzI0LCAzMjksIDMzNCwgCi0gICAgMzM5LCAzNDQsIDM0OSwgMzUzLCAzNTYsIDM2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYyLCAzNjYsIDM3MSwgCi0gICAgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODYsIDM4OSwgMzkxLCAzOTQsIDQwMCwgNDA4LCA0MTEsIDQxNSwgNDE4LCA0MjAsIAotICAgIDQyMywgNDI2LCA0MjksIDQzMiwgNDM2LCA0MzksIDQ0MiwgNDQ1LCA0NDcsIDQ1MCwgNDU2LCA0NjQsIDQ3MSwgNDc4LCAKLSAgICA0ODUsIDQ5MCwgNDk3LCA1MDMsIDUxMCwgNTE3LCA1MjQsIDUzMiwgNTM3LCA1NDUsIDU1MiwgNTU4LCA1NjUsIDU3MiwgCi0gICAgNTgwLCA1ODcsIDU5NSwgNjAzLCA2MDgsIDYxNiwgNjIzLCA2MjksIDYzNiwgNjQzLCA2NTAsIDY1MywgNjU5LCA2NjYsIAotICAgIDY3MiwgNjc5LCA2ODYsIDY5MywgNjk4LCA3MDQsIDcxMSwgNzE3LCA3MjQsIDczMSwgNzM4LCA3NDYsIDc1MSwgNzU5LCAKLSAgICA3NjYsIDc3MiwgNzc5LCA3ODYsIDc5NCwgODAxLCA4MDksIDgxNywgODIyLCA4MzAsIDgzNywgODQzLCA4NTAsIDg1NywgCi0gICAgODY0LCA4NjcsIDg3MywgODgwLCA4ODYsIDg5MywgOTAwLCA5MDcsIDkxMiwgOTIwLCA5MjcsIDkzNCwgOTQxLCA5NDgsIAotICAgIDk1NSwgOTYyLCA5NjksIDk3NiwgOTg0LCA5OTIsIDEwMDAsIDEwMDgsIDEwMTYsIDEwMjQsIDEwMzIsIDEwNDAsIDEwNDcsIAotICAgIDEwNTQsIDEwNjEsIDEwNjgsIDEwNzUsIDEwODIsIDEwODksIDEwOTYsIDExMDMsIDExMTAsIDExMTcsIDExMjQsIDExMzIsIAotICAgIDExNDAsIDExNDgsIDExNTYsIDExNjQsIDExNzIsIDExODAsIDExODgsIDExOTYsIDEyMDQsIDEyMTEsIDEyMTgsIDEyMjYsIAotICAgIDEyMzQsIDEyNDIsIDEyNTAsIDEyNTgsIDEyNjYsIDEyNzQsIDEyODIsIDEyOTAsIDEyOTYsIDEzMDEsIDEzMDYsIDEzMTQsIAotICAgIDEzMjIsIDEzMzAsIDEzMzgsIDEzNDMsIDEzNTAsIDEzNTcsIDEzNjUsIDEzNzMsIDEzODEsIDEzODksIDEzOTgsIDE0MDcsIAotICAgIDE0MTQsIDE0MjEsIDE0MjgsIDE0MzUsIDE0NDMsIDE0NTEsIDE0NTksIDE0NjcsIDE0NzgsIDE0ODMsIDE0ODgsIDE0OTUsIAotICAgIDE1MDIsIDE1MDksIDE1MTYsIDE1MjMsIDE1MzAsIDE1MzUsIDE1NDAsIDE1NDcsIDE1NTQsIDE1NjIsIDE1NzAsIDE1NzgsIAotICAgIDE1ODYsIDE1OTMsIDE2MDAsIDE2MDgsIDE2MTYsIDE2MjQsIDE2MzIsIDE2NDAsIDE2NDgsIDE2NTYsIDE2NjQsIDE2NzIsIAotICAgIDE2ODAsIDE2ODcsIDE2OTQsIDE3MDEsIDE3MDgsIDE3MTUsIDE3MjIsIDE3MjksIDE3MzYsIDE3NDQsIDE3NTIsIDE3NTksIAotICAgIDE3NjYsIDE3NzMsIDE3ODAsIDE3ODgsIDE3OTYsIDE4MDQsIDE4MTIsIDE4MjAsIDE4MjcsIDE4MzQsIDE4NDIsIDE4NTAsIAotICAgIDE4NTgsIDE4NjYsIDE4NzEsIDE4NzcsIDE4ODMsIDE4OTAsIDE4OTcsIDE5MDIsIDE5MDcsIDE5MTIsIDE5MTksIDE5MjYsIAotICAgIDE5MzMsIDE5NDAsIDE5NDgsIDE5NTYsIDE5NjMsIDE5NjksIDE5NzQsIDE5NzksIDE5ODYsIDE5OTMsIDIwMDAsIDIwMDUsIAotICAgIDIwMTAsIDIwMTUsIDIwMjIsIDIwMjksIDIwMzYsIDIwNDMsIDIwNTAsIDIwNTcsIDIwNjUsIDIwNzUsIDIwODMsIDIwOTAsIAotICAgIDIwOTcsIDIxMDIsIDIxMDcsIDIxMTQsIDIxMjEsIDIxMjUsIDIxMzAsIDIxMzUsIDIxNDAsIDIxNDgsIDIxNTcsIDIxNjQsIAotICAgIDIxNzEsIDIxODAsIDIxODcsIDIxOTQsIDIxOTksIDIyMDYsIDIyMTMsIDIyMjAsIDIyMjcsIDIyMzQsIDIyMzksIDIyNDYsIAotICAgIDIyNTMsIDIyNjEsIDIyNjYsIDIyNzEsIDIyNzYsIDIyODYsIDIyOTAsIDIyOTYsIDIzMDIsIDIzMDgsIDIzMTQsIDIzMjIsIAotICAgIDIzMzUsIDIzNDMsIDIzNDgsIDIzNTgsIDIzNjMsIDIzNjgsIDIzNzgsIDIzODMsIDIzOTAsIDIzOTcsIDI0MDUsIDI0MTMsIAotICAgIDI0MjAsIDI0MjcsIDI0MzQsIDI0NDEsIDI0NTEsIDI0NjEsIDI0NzAsIDI0NzksIDI0ODksIDI0OTksIDI1MDksIDI1MTksIAotICAgIDI1MjUsIDI1MzUsIDI1NDUsIDI1NTUsIDI1NjUsIDI1NzMsIDI1ODEsIDI1ODgsIDI1OTUsIDI2MDMsIDI2MTEsIDI2MTksIAotICAgIDI2MjcsIDI2MzQsIDI2NDEsIDI2NTEsIDI2NjEsIDI2NjksIDI2NzcsIDI2ODUsIDI2OTAsIDI3MDAsIDI3MDUsIDI3MTIsIAotICAgIDI3MTksIDI3MjQsIDI3MjksIDI3MzcsIDI3NDUsIDI3NTUsIDI3NjUsIDI3NzIsIDI3NzksIDI3ODgsIDI3OTcsIDI4MDUsIAotICAgIDI4MTMsIDI4MjIsIDI4MzEsIDI4MzksIDI4NDcsIDI4NTYsIDI4NjUsIDI4NzQsIDI4ODMsIDI4OTMsIDI5MDMsIDI5MTEsIAotICAgIDI5MTksIDI5MjgsIDI5MzcsIDI5NDYsIDI5NTUsIDI5NjUsIDI5NzUsIDI5ODMsIDI5OTEsIDMwMDAsIDMwMDksIDMwMTgsIAotICAgIDMwMjcsIDMwMzYsIDMwNDUsIDMwNTAsIDMwNTUsIDMwNjMsIDMwNzEsIDMwODEsIDMwODksIDMwOTQsIDMwOTksIDMxMDYsIAotICAgIDMxMTMsIDMxMjAsIDMxMjcsIDMxMzQsIDMxNDEsIDMxNTEsIDMxNjEsIDMxNzEsIDMxODEsIDMxODgsIDMxOTUsIDMyMDUsIAotICAgIDMyMTUsIDMyMjMsIDMyMzEsIDMyMzksIDMyNDcsIDMyNTUsIDMyNjIsIDMyNjksIDMyNzYsIDMyODIsIDMyODksIDMyOTYsIAotICAgIDMzMDMsIDMzMTIsIDMzMjIsIDMzMzIsIDMzMzksIDMzNDYsIDMzNTIsIDMzNTcsIDMzNjQsIDMzNzAsIDMzNzYsIDMzODMsIAotICAgIDMzOTAsIDM0MDEsIDM0MTEsIDM0MTgsIDM0MjUsIDM0MzIsIDM0MzksIDM0NDUsIDM0NTAsIDM0NTcsIDM0NjMsIDM0NjgsIAotICAgIDM0NzYsIDM0ODQsIDM0OTEsIDM0OTcsIDM1MDIsIDM1MDksIDM1MTQsIDM1MjEsIDM1MzAsIDM1MzksIDM1NDgsIDM1NTUsIAotICAgIDM1NjEsIDM1NjcsIDM1NzIsIDM1NzksIDM1ODYsIDM1OTMsIDM2MDAsIDM2MDcsIDM2MTIsIDM2MTcsIDM2MjYsIDM2MzQsIAotICAgIDM2NDMsIDM2NDgsIDM2NTUsIDM2NjYsIDM2NzMsIDM2ODEsIDM2OTAsIDM2OTYsIDM3MDIsIDM3MDgsIDM3MTUsIDM3MjAsIAotICAgIDM3MjYsIDM3MzcsIDM3NDYsIDM3NTUsIDM3NjMsIDM3NzEsIDM3ODEsIDM3ODYsIDM3OTMsIDM4MDAsIDM4MDUsIDM4MTcsIAotICAgIDM4MjYsIDM4MzQsIDM4NDEsIDM4NTAsIDM4NTUsIDM4NjAsIDM4NjcsIDM4NzQsIDM4ODEsIDM4ODgsIDM4OTQsIDM5MDMsIAotICAgIDM5MTEsIDM5MTYsIDM5MjQsIDM5MzAsIDM5MzgsIDM5NDYsIDM5NTIsIDM5NTgsIDM5NjQsIDM5NzEsIDM5NzksIDM5ODUsIAotICAgIDM5OTMsIDQwMDAsIDQwMDUsIDQwMTIsIDQwMjAsIDQwMzAsIDQwMzcsIDQwNDQsIDQwNTQsIDQwNjEsIDQwNjgsIDQwNzgsIAotICAgIDQwODUsIDQwOTIsIDQwOTksIDQxMDUsIDQxMTEsIDQxMjEsIDQxMzQsIDQxMzksIDQxNDYsIDQxNTEsIDQxNTUsIDQxNjEsIAotICAgIDQxNzAsIDQxNzcsIDQxODIsIDQxODcsIDQxOTEsIDQxOTYsIDQyMDIsIDQyMDYsIDQyMTIsIDQyMTgsIDQyMjQsIDQyMzAsIAotICAgIDQyMzgsIDQyNDMsIDQyNDgsIDQyNTMsIDQyNTgsIDQyNjQsIDQyNjYsIDQyNzEsIDQyNzUsIDQyODEsIDQyODcsIDQyOTMsIAotICAgIDQyOTgsIDQzMDUsIDQzMTIsIDQzMTgsIDQzMjUsIDQzMzMsIDQzNDEsIDQzNDYsIDQzNTEsIDQzNTUsIDQzNjAsIDQzNjIsIAotICAgIDQzNjQsIDQzNjcsIDQzNjksIDQzNzIsIDQzNzcsIDQzODIsIDQzODgsIDQzOTMsIDQzOTcsIDQ0MDEsIDQ0MDYsIDQ0MTUsIAotICAgIDQ0MjEsIDQ0MjYsIDQ0MzIsIDQ0MzcsIDQ0NDMsIDQ0NTEsIDQ0NTksIDQ0NjMsIDQ0NjcsIDQ0NzIsIDQ0NzgsIDQ0ODQsIAotICAgIDQ0OTAsIDQ0OTYsIDQ1MDEsIDQ1MDgsIDQ1MTYsIDQ1MjQsIDQ1MjksIDQ1MzUsIDQ1NDIsIDQ1NDksIDQ1NTYsIDQ1NjMsIAotICAgIDQ1NjcsIDQ1NzIsIDQ1NzcsIDQ1ODIsIDQ1ODcsIDQ1OTIsIDQ1OTUsIDQ1OTgsIDQ2MDEsIDQ2MDQsIDQ2MDcsIDQ2MTAsIAotICAgIDQ2MTQsIDQ2MTgsIDQ2MjQsIDQ2MjcsIDQ2MzIsIDQ2MzgsIDQ2NDQsIDQ2NDcsIDQ2NTIsIDQ2NTgsIDQ2NjIsIDQ2NjgsIAotICAgIDQ2NzQsIDQ2ODAsIDQ2ODYsIDQ2OTEsIDQ2OTYsIDQ3MDEsIDQ3MDQsIDQ3MTAsIDQ3MTUsIDQ3MjAsIDQ3MjQsIDQ3MjksIAotICAgIDQ3MzUsIDQ3NDEsIDQ3NDQsIDQ3NDgsIDQ3NTIsIDQ3NTYsIDQ3NTksIDQ3NjIsIDQ3NjcsIDQ3NzEsIDQ3NzgsIDQ3ODIsIAotICAgIDQ3ODgsIDQ3OTIsIDQ3OTgsIDQ4MDIsIDQ4MDYsIDQ4MTAsIDQ4MTUsIDQ4MjAsIDQ4MjcsIDQ4MzMsIDQ4NDAsIDQ4NDYsIAotICAgIDQ4NTIsIDQ4NTgsIDQ4NjEsIDQ4NjUsIDQ4NjksIDQ4NzMsIDQ4NzcsIDQ4ODIsIDQ4ODcsIDQ4OTEsIDQ4OTUsIDQ5MDEsIAotICAgIDQ5MDUsIDQ5MDksIDQ5MTQsIDQ5MjAsIDQ5MjUsIDQ5MzEsIDQ5MzUsIDQ5NDIsIDQ5NDcsIDQ5NTEsIDQ5NTYsIDQ5NjEsIAotICAgIDQ5NjcsIDQ5NzAsIDQ5NzQsIDQ5NzksIDQ5ODQsIDQ5OTMsIDQ5OTksIDUwMDQsIDUwMDgsIDUwMTMsIDUwMTcsIDUwMjIsIAotICAgIDUwMjYsIDUwMzAsIDUwMzUsIDUwMzksIDUwNDUsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzAsIDUwNzUsIDUwODEsIAotICAgIDUwODcsIDUwOTMsIDUwOTksIDUxMDQsIDUxMTAsIDUxMTYsIDUxMjIsIDUxMjcsIDUxMzIsIDUxMzksIDUxNDYsIDUxNTAsIAotICAgIDUxNTYsIDUxNjMsIDAsIDAsIDUxNzAsIDUxNzMsIDUxODIsIDUxOTEsIDUyMDIsIDUyMDYsIDAsIDAsIDAsIDAsIDUyMTEsIAotICAgIDUyMTQsIDUyMTksIDUyMjcsIDUyMzIsIDUyNDAsIDUyNDgsIDAsIDUyNTYsIDAsIDUyNjQsIDUyNzIsIDUyODAsIDUyOTEsIAotICAgIDUyOTYsIDUzMDEsIDUzMDYsIDUzMTEsIDUzMTYsIDUzMjEsIDUzMjYsIDUzMzEsIDUzMzYsIDUzNDEsIDUzNDYsIDUzNTEsIAotICAgIDUzNTYsIDUzNjEsIDUzNjYsIDUzNzEsIDAsIDUzNzYsIDUzODEsIDUzODYsIDUzOTEsIDUzOTYsIDU0MDEsIDU0MDYsIAotICAgIDU0MTEsIDU0MTksIDU0MjcsIDU0MzUsIDU0NDMsIDU0NTEsIDU0NTksIDU0NzAsIDU0NzUsIDU0ODAsIDU0ODUsIDU0OTAsIAotICAgIDU0OTUsIDU1MDAsIDU1MDUsIDU1MTAsIDU1MTUsIDU1MjAsIDU1MjUsIDU1MzAsIDU1MzUsIDU1NDAsIDU1NDUsIDU1NTAsIAotICAgIDU1NTUsIDU1NjEsIDU1NjYsIDU1NzEsIDU1NzYsIDU1ODEsIDU1ODYsIDU1OTEsIDU1OTYsIDU2MDQsIDU2MTIsIDU2MjAsIAotICAgIDU2MjgsIDU2MzYsIDU2NDEsIDU2NDUsIDU2NDksIDU2NTYsIDU2NjYsIDU2NzYsIDU2ODAsIDU2ODQsIDU2ODgsIDU2OTQsIAotICAgIDU3MDEsIDU3MDUsIDU3MTAsIDU3MTQsIDU3MTksIDU3MjMsIDU3MjgsIDU3MzIsIDU3MzcsIDU3NDIsIDU3NDcsIDU3NTIsIAotICAgIDU3NTcsIDU3NjIsIDU3NjcsIDU3NzIsIDU3NzcsIDU3ODIsIDU3ODcsIDU3OTIsIDU3OTcsIDU4MDIsIDU4MDcsIDU4MTEsIAotICAgIDU4MTUsIDU4MjEsIDU4MjUsIDU4MzAsIDU4MzYsIDU4NDQsIDU4NDksIDU4NTQsIDU4NjEsIDU4NjYsIDU4NzEsIDU4NzgsIAotICAgIDU4ODcsIDU4OTYsIDU5MDcsIDU5MTUsIDU5MjAsIDU5MjUsIDU5MzAsIDU5MzcsIDU5NDIsIDU5NDgsIDU5NTMsIDU5NTgsIAotICAgIDU5NjMsIDU5NjgsIDU5NzMsIDU5NzgsIDU5ODYsIDU5OTIsIDU5OTcsIDYwMDEsIDYwMDYsIDYwMTEsIDYwMTYsIDYwMjEsIAotICAgIDYwMjYsIDYwMzEsIDYwMzYsIDYwNDAsIDYwNDYsIDYwNTAsIDYwNTUsIDYwNjAsIDYwNjUsIDYwNjksIDYwNzQsIDYwNzksIAotICAgIDYwODQsIDYwODksIDYwOTMsIDYwOTgsIDYxMDIsIDYxMDcsIDYxMTIsIDYxMTcsIDYxMjIsIDYxMjgsIDYxMzMsIDYxMzksIAotICAgIDYxNDMsIDYxNDgsIDYxNTIsIDYxNTYsIDYxNjEsIDYxNjYsIDYxNzEsIDYxNzYsIDYxODEsIDYxODYsIDYxOTEsIDYxOTUsIAotICAgIDYyMDEsIDYyMDUsIDYyMTAsIDYyMTUsIDYyMjAsIDYyMjQsIDYyMjksIDYyMzQsIDYyMzksIDYyNDQsIDYyNDgsIDYyNTMsIAotICAgIDYyNTcsIDYyNjIsIDYyNjcsIDYyNzIsIDYyNzcsIDYyODMsIDYyODgsIDYyOTQsIDYyOTgsIDYzMDMsIDYzMDcsIDYzMTUsIAotICAgIDYzMjAsIDYzMjUsIDYzMzAsIDYzMzcsIDYzNDIsIDYzNDgsIDYzNTMsIDYzNTgsIDYzNjMsIDYzNjgsIDYzNzMsIDYzNzgsIAotICAgIDYzODYsIDYzOTIsIDYzOTcsIDY0MDIsIDY0MDcsIDY0MTIsIDY0MTcsIDY0MjMsIDY0MjksIDY0MzYsIDY0NDMsIDY0NTIsIAotICAgIDY0NjEsIDY0NjgsIDY0NzUsIDY0ODQsIDY0OTMsIDY0OTgsIDY1MDMsIDY1MDgsIDY1MTMsIDY1MTgsIDY1MjMsIDY1MjgsIAotICAgIDY1MzMsIDY1NDQsIDY1NTUsIDY1NjAsIDY1NjUsIDY1NzIsIDY1NzksIDY1ODcsIDY1OTUsIDY2MDAsIDY2MDUsIDY2MTAsIAotICAgIDY2MTUsIDY2MTksIDY2MjMsIDY2MjcsIDY2MzMsIDY2MzksIDY2NDMsIDY2NTAsIDY2NTUsIDY2NjUsIDY2NzUsIDY2ODEsIAotICAgIDY2ODcsIDY2OTUsIDY3MDMsIDY3MTEsIDY3MTksIDY3MjYsIDY3MzMsIDY3NDEsIDY3NDksIDY3NTcsIDY3NjUsIDY3NzMsIAotICAgIDY3ODEsIDY3ODksIDY3OTcsIDY4MDUsIDY4MTMsIDY4MjAsIDY4MjcsIDY4MzMsIDY4MzksIDY4NDcsIDY4NTUsIDY4NjIsIAotICAgIDY4NjksIDY4NzcsIDY4ODUsIDY4OTEsIDY4OTcsIDY5MDUsIDY5MTMsIDY5MjEsIDY5MjksIDY5MzUsIDY5NDEsIDY5NDksIAotICAgIDY5NTcsIDY5NjUsIDY5NzMsIDY5ODAsIDY5ODcsIDY5OTUsIDcwMDMsIDcwMTEsIDcwMTksIDcwMjQsIDcwMjksIDcwMzYsIAotICAgIDcwNDMsIDcwNTMsIDcwNjMsIDcwNjcsIDcwNzUsIDcwODMsIDcwOTAsIDcwOTcsIDcxMDUsIDcxMTMsIDcxMjAsIDcxMjcsIAotICAgIDcxMzUsIDcxNDMsIDcxNTAsIDcxNTcsIDcxNjUsIDcxNzMsIDcxNzgsIDcxODUsIDcxOTIsIDcxOTksIDcyMDYsIDcyMTIsIAotICAgIDcyMTgsIDcyMjYsIDcyMzQsIDcyMzksIDcyNDQsIDcyNTIsIDcyNjAsIDcyNjgsIDcyNzYsIDcyODQsIDcyOTIsIDcyOTksIAotICAgIDczMDYsIDczMTQsIDczMjIsIDczMzAsIDczMzgsIDczNDUsIDczNTIsIDczNTgsIDczNjQsIDczNzMsIDczODIsIDczODksIAotICAgIDczOTYsIDc0MDMsIDc0MTAsIDc0MTcsIDc0MjQsIDc0MzEsIDc0MzgsIDc0NDYsIDc0NTQsIDc0NjIsIDc0NzAsIDc0NzgsIAotICAgIDc0ODYsIDc0OTYsIDc1MDYsIDc1MTMsIDc1MjAsIDc1MjcsIDc1MzQsIDc1NDEsIDc1NDgsIDc1NTUsIDc1NjIsIDc1NjksIAotICAgIDc1NzYsIDc1ODMsIDc1OTAsIDc1OTcsIDc2MDQsIDc2MTEsIDc2MTgsIDc2MjUsIDc2MzIsIDc2MzksIDc2NDYsIDc2NTMsIAotICAgIDc2NjAsIDc2NjcsIDc2NzQsIDc2NzksIDc2ODQsIDc2ODksIDc2OTQsIDc2OTksIDc3MDQsIDc3MDksIDc3MTQsIDc3MTksIAotICAgIDc3MjQsIDc3MzAsIDc3MzYsIDc3NDQsIDc3NTIsIDc3NjAsIDc3NjgsIDc3NzYsIDc3ODQsIDc3OTIsIDc4MDAsIDc4MDgsIAotICAgIDc4MTYsIDc4MjEsIDc4MjYsIDc4MzEsIDc4MzYsIDc4NDQsIDAsIDc4NTIsIDc4NTcsIDc4NjIsIDc4NjcsIDc4NzIsIAotICAgIDc4NzcsIDc4ODIsIDc4ODcsIDc4OTIsIDc4OTYsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzEsIAotICAgIDc5MzYsIDc5NDEsIDc5NDYsIDc5NTEsIDc5NTYsIDc5NjEsIDc5NjYsIDc5NzEsIDc5NzYsIDc5ODEsIDc5ODYsIDc5OTEsIAotICAgIDc5OTYsIDgwMDEsIDgwMDYsIDgwMTEsIDgwMTYsIDgwMjEsIDgwMjYsIDgwMzEsIDgwMzYsIDAsIDAsIDgwNDEsIDgwNDgsIAotICAgIDgwNTEsIDgwNTUsIDgwNTksIDgwNjIsIDgwNjYsIDAsIDgwNzAsIDgwNzUsIDgwODAsIDgwODUsIDgwOTAsIDgwOTUsIAotICAgIDgxMDAsIDgxMDUsIDgxMTAsIDgxMTQsIDgxMTksIDgxMjQsIDgxMjksIDgxMzQsIDgxMzksIDgxNDQsIDgxNDksIDgxNTQsIAotICAgIDgxNTksIDgxNjQsIDgxNjksIDgxNzQsIDgxNzksIDgxODQsIDgxODksIDgxOTQsIDgxOTksIDgyMDQsIDgyMDksIDgyMTQsIAotICAgIDgyMTksIDgyMjQsIDgyMjksIDgyMzQsIDgyMzksIDgyNDQsIDgyNDksIDgyNTQsIDgyNTksIDAsIDgyNjYsIDgyNzEsIDAsIAotICAgIDAsIDgyNzQsIDgyODAsIDgyODYsIDAsIDgyOTAsIDgyOTUsIDgzMDAsIDgzMDUsIDgzMTIsIDgzMTksIDgzMjQsIDgzMjksIAotICAgIDgzMzQsIDgzMzksIDgzNDQsIDgzNDksIDgzNTQsIDgzNjEsIDgzNjYsIDgzNzMsIDgzODAsIDgzODUsIDgzOTIsIDgzOTcsIAotICAgIDg0MDIsIDg0MDcsIDg0MTQsIDg0MTksIDg0MjQsIDg0MzEsIDg0NDAsIDg0NDUsIDg0NTAsIDg0NTUsIDg0NjAsIDg0NjYsIAotICAgIDg0NzEsIDg0NzgsIDg0ODUsIDg0OTIsIDg0OTcsIDg1MDIsIDg1MDcsIDg1MTIsIDg1MTcsIDg1MjIsIDg1MzIsIDg1MzcsIAotICAgIDg1NDYsIDg1NTEsIDg1NTYsIDg1NjEsIDg1NjYsIDg1NzMsIDg1ODAsIDg1ODcsIDg1OTMsIDg1OTksIDg2MDYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDg2MTMsIDg2MTcsIDg2MjEsIDg2MjUsIDg2MjksIDg2MzMsIDg2MzcsIDg2NDEsIDg2NDUsIAotICAgIDg2NDksIDg2NTMsIDg2NTgsIDg2NjIsIDg2NjYsIDg2NzEsIDg2NzUsIDg2ODAsIDg2ODQsIDg2ODgsIDg2OTIsIDg2OTcsIAotICAgIDg3MDEsIDg3MDYsIDg3MTAsIDg3MTQsIDg3MTgsIDg3MjIsIDAsIDAsIDAsIDAsIDAsIDg3MjYsIDg3MzMsIDg3NDEsIAotICAgIDg3NDgsIDg3NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NTgsIDg3NjEsIDg3NjUsIDg3NzAsIAotICAgIDg3NzQsIDg3NzgsIDg3ODIsIDg3ODgsIDg3OTQsIDg3OTcsIDg4MDQsIDg4MTMsIDg4MTYsIDg4MTksIDg4MjQsIDg4MzAsIAotICAgIDg4MzQsIDg4NDIsIDg4NDgsIDg4NTQsIDg4NjIsIDg4NjYsIDg4NzEsIDg4ODIsIDg4ODcsIDg4OTEsIDg4OTUsIDg4OTksIAotICAgIDg5MDIsIDAsIDg5MDUsIDg5MTIsIDg5MTYsIDg5MjIsIDg5MjYsIDg5MzMsIDg5NDAsIDg5NDgsIDg5NTUsIDg5NjIsIAotICAgIDg5NjYsIDg5NzAsIDg5NzYsIDg5ODAsIDg5ODQsIDg5ODgsIDg5OTIsIDg5OTYsIDkwMDAsIDkwMDQsIDkwMDgsIDkwMTIsIAotICAgIDkwMTYsIDkwMjAsIDkwMjQsIDkwMjgsIDkwMzIsIDkwMzYsIDkwNDAsIDkwNDQsIDkwNTIsIDkwNjAsIDkwNzAsIDkwNzksIAotICAgIDkwODgsIDkwOTEsIDkwOTUsIDkwOTksIDkxMDMsIDkxMDcsIDkxMTEsIDkxMTUsIDkxMTksIDkxMjMsIDkxMjgsIDkxMzIsIAotICAgIDkxMzUsIDkxMzgsIDkxNDEsIDkxNDQsIDkxNDcsIDkxNTAsIDkxNTMsIDkxNTYsIDkxNjAsIDkxNjQsIDkxNjgsIDkxNzMsIAotICAgIDkxNzgsIDkxODQsIDkxODcsIDkxOTQsIDkyMDMsIDkyMDgsIDkyMTMsIDkyMjAsIDkyMjYsIDkyMzEsIDkyMzUsIDkyMzksIAotICAgIDkyNDMsIDkyNDcsIDkyNTEsIDkyNTUsIDkyNjAsIDkyNjQsIDkyNjksIDkyNzMsIDkyNzgsIDkyODMsIDkyOTAsIDkyOTYsIAotICAgIDkzMDIsIDkzMDgsIDkzMTMsIDkzMjIsIDkzMzEsIDkzMzYsIDkzNDMsIDkzNTAsIDkzNTcsIDkzNjQsIDkzNjgsIDkzNzIsIAotICAgIDkzNzYsIDkzODMsIDkzOTMsIDkzOTcsIDk0MDEsIDk0MDUsIDk0MTIsIDk0MjAsIDk0MjQsIDk0MjgsIDk0MzUsIDk0MzksIAotICAgIDk0NDMsIDk0NDcsIDk0NTQsIDk0NjEsIDk0NzMsIDk0NzcsIDk0ODEsIDk0ODUsIDk0OTUsIDk1MDQsIDk1MDgsIDk1MTYsIAotICAgIDk1MjMsIDk1MzAsIDk1MzksIDk1NTAsIDk1NTgsIDk1NjIsIDk1NzEsIDk1ODIsIDk1OTAsIDk2MDMsIDk2MTEsIDk2MTksIAotICAgIDk2MjcsIDk2MzUsIDk2NDEsIDk2NTAsIDk2NTcsIDk2NjEsIDk2NjksIDk2NzMsIDk2ODAsIDk2ODgsIDk2OTIsIDk2OTgsIAotICAgIDk3MDUsIDk3MTIsIDk3MTYsIDk3MjQsIDk3MjgsIDk3MzUsIDk3MzksIDk3NDcsIDk3NTEsIDk3NTksIDk3NjcsIDk3NzQsIAotICAgIDk3ODIsIDk3OTAsIDk3OTcsIDk4MDMsIDk4MDcsIDk4MTQsIDk4MjIsIDk4MjgsIDk4MzUsIDk4NDIsIDk4NDgsIDk4NTgsIAotICAgIDk4NjYsIDk4NzMsIDk4NzksIDk4ODMsIDk4ODYsIDk4OTAsIDk4OTYsIDk5MDQsIDk5MDgsIDk5MTQsIDk5MjAsIDk5MjcsIAotICAgIDk5MzQsIDk5MzcsIDk5NDQsIDk5NDksIDk5NTgsIDk5NjMsIDk5NjcsIDk5ODAsIDk5OTMsIDk5OTksIDEwMDA2LCAxMDAxMSwgCi0gICAgMTAwMTcsIDEwMDIyLCAxMDAyOCwgMTAwMzgsIDEwMDQ1LCAxMDA1NCwgMTAwNjQsIDEwMDcwLCAxMDA3NSwgMTAwODAsIAotICAgIDEwMDg0LCAxMDA4OCwgMTAwOTMsIDEwMDk4LCAxMDEwNCwgMTAxMTIsIDEwMTIwLCAxMDEzMSwgMTAxMzYsIDEwMTQ1LCAKLSAgICAxMDE1NCwgMTAxNjEsIDEwMTY3LCAxMDE3MywgMTAxNzksIDEwMTg1LCAxMDE5MSwgMTAxOTcsIDEwMjA0LCAxMDIxMCwgCi0gICAgMTAyMTcsIDEwMjI0LCAxMDIzMSwgMTAyMzgsIDEwMjQ0LCAxMDI1MiwgMTAyNjEsIDEwMjY4LCAxMDI3NiwgMTAyODQsIAotICAgIDEwMjkwLCAxMDI5NiwgMTAzMDIsIDEwMzEwLCAxMDMxOCwgMTAzMjgsIDEwMzM4LCAxMDM0MiwgMTAzNDgsIDEwMzU0LCAwLCAKLSAgICAxMDM2MCwgMTAzNjUsIDEwMzcwLCAxMDM3NywgMTAzODIsIDEwMzg3LCAxMDM5NCwgMTAzOTksIDEwNDA4LCAxMDQxMywgCi0gICAgMTA0MTgsIDEwNDIzLCAxMDQyOCwgMTA0MzMsIDEwNDQwLCAxMDQ0NSwgMTA0NTIsIDEwNDU3LCAxMDQ2MiwgMTA0NjcsIAotICAgIDEwNDcyLCAxMDQ3NywgMTA0ODMsIDEwNDg3LCAxMDQ5MiwgMTA0OTksIDEwNTA0LCAxMDUwOSwgMTA1MTQsIDEwNTE5LCAKLSAgICAxMDUyNCwgMTA1MzEsIDEwNTM4LCAxMDU0NSwgMTA1NTAsIDEwNTU1LCAxMDU2MSwgMTA1NjYsIDEwNTcxLCAxMDU3NywgCi0gICAgMTA1ODIsIDEwNTg3LCAxMDU5NSwgMTA2MDMsIDEwNjA4LCAxMDYxMywgMTA2MTksIDEwNjI0LCAxMDYyOSwgMTA2MzMsIAotICAgIDEwNjM5LCAxMDY0MywgMTA2NDcsIDEwNjUzLCAxMDY1OSwgMTA2NjQsIDEwNjY5LCAxMDY3NiwgMTA2ODMsIDEwNjg3LCAwLCAKLSAgICAwLCAxMDY5MSwgMTA2OTgsIDEwNzA1LCAxMDcxMiwgMTA3MjIsIDEwNzM0LCAxMDc0NSwgMTA3NjEsIDEwNzczLCAxMDc4NCwgCi0gICAgMTA3OTIsIDEwNzk5LCAxMDgwOSwgMTA4MjQsIDEwODM1LCAxMDg0MSwgMTA4NTAsIDEwODU4LCAxMDg2OSwgMTA4NzksIAotICAgIDEwODg3LCAxMDg5OCwgMTA5MDUsIDEwOTEzLCAxMDkyNCwgMTA5MzAsIDEwOTM2LCAxMDk0NCwgMTA5NTIsIDEwOTYwLCAKLSAgICAxMDk2NiwgMTA5NzYsIDEwOTg0LCAxMDk5NCwgMTEwMDQsIDExMDE3LCAxMTAzMSwgMTEwNDUsIDExMDU1LCAxMTA2NiwgCi0gICAgMTEwNzcsIDExMDkwLCAxMTEwMywgMTExMTcsIDExMTI5LCAxMTE0MSwgMTExNTQsIDExMTY3LCAxMTE3OSwgMTExOTIsIAotICAgIDExMjAxLCAxMTIwOSwgMTEyMTQsIDExMjE5LCAxMTIyNCwgMTEyMjksIDExMjM0LCAxMTIzOSwgMTEyNDQsIDExMjQ5LCAKLSAgICAxMTI1NCwgMTEyNTksIDExMjY0LCAxMTI2OSwgMTEyNzQsIDExMjc5LCAxMTI4NCwgMTEyODksIDExMjk0LCAxMTI5OSwgCi0gICAgMTEzMDQsIDExMzA5LCAxMTMxNCwgMTEzMTksIDExMzI0LCAxMTMyOSwgMTEzMzQsIDExMzM5LCAxMTM0NCwgMTEzNDksIAotICAgIDExMzU0LCAxMTM1OSwgMTEzNjQsIDExMzY5LCAxMTM3MywgMTEzNzgsIDExMzgzLCAxMTM4OCwgMTEzOTMsIDExMzk4LCAKLSAgICAxMTQwMiwgMTE0MDYsIDExNDEwLCAxMTQxNCwgMTE0MTgsIDExNDIyLCAxMTQyNiwgMTE0MzAsIDExNDM0LCAxMTQzOCwgCi0gICAgMTE0NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDQ3LCAxMTQ1MiwgMTE0NTYsIAotICAgIDExNDYwLCAxMTQ2NCwgMTE0NjgsIDExNDcyLCAxMTQ3NiwgMTE0ODEsIDExNDg1LCAxMTQ5MCwgMTE0OTQsIDExNDk5LCAKLSAgICAxMTUwMywgMTE1MDcsIDExNTExLCAxMTUxNiwgMTE1MjAsIDExNTI1LCAxMTUzMCwgMTE1MzUsIDExNTM5LCAxMTU0NCwgCi0gICAgMTE1NDksIDExNTU0LCAxMTU1OSwgMTE1NjQsIDExNTY5LCAxMTU3NCwgMTE1NzksIDExNTg0LCAxMTU4OCwgMTE1OTMsIAotICAgIDExNjAwLCAxMTYwNCwgMTE2MDksIDExNjE0LCAxMTYxOCwgMTE2MjMsIDExNjI3LCAxMTYzNCwgMTE2NDEsIDExNjQ4LCAKLSAgICAxMTY1NSwgMTE2NjMsIDExNjcxLCAxMTY4MCwgMTE2ODgsIDExNjk1LCAxMTcwMiwgMTE3MTAsIDExNzE2LCAxMTcyMiwgCi0gICAgMTE3MjgsIDExNzM0LCAxMTc0MSwgMTE3NDYsIDExNzUwLCAxMTc1NSwgMCwgMCwgMCwgMCwgMCwgMTE3NTksIDExNzY0LCAKLSAgICAxMTc2OSwgMTE3NzQsIDExNzc5LCAxMTc4NCwgMTE3ODksIDExNzk0LCAxMTc5OSwgMTE4MDQsIDExODA5LCAxMTgxNCwgCi0gICAgMTE4MTksIDExODI0LCAxMTgyOSwgMTE4MzQsIDExODM5LCAxMTg0NCwgMTE4NDksIDExODU0LCAxMTg1OSwgMTE4NjQsIAotICAgIDExODY5LCAxMTg3NCwgMTE4NzksIDExODg0LCAxMTg4OSwgMTE4OTcsIDExOTA0LCAxMTkxMCwgMTE5MTUsIDExOTIzLCAKLSAgICAxMTkzMCwgMTE5MzYsIDExOTQzLCAxMTk0OSwgMTE5NTQsIDExOTYxLCAxMTk2OCwgMTE5NzQsIDExOTc5LCAxMTk4NCwgCi0gICAgMTE5OTAsIDExOTk1LCAxMjAwMCwgMTIwMDYsIDAsIDAsIDEyMDExLCAxMjAxNywgMTIwMjMsIDEyMDI5LCAxMjAzNSwgCi0gICAgMTIwNDEsIDEyMDQ3LCAxMjA1MiwgMTIwNjAsIDEyMDY2LCAxMjA3MiwgMTIwNzgsIDEyMDg0LCAxMjA5MCwgMTIwOTgsIDAsIAotICAgIDEyMTA0LCAxMjEwOSwgMTIxMTQsIDEyMTE5LCAxMjEyNCwgMTIxMjksIDEyMTM0LCAxMjEzOSwgMTIxNDQsIDEyMTQ5LCAKLSAgICAxMjE1NCwgMTIxNTksIDEyMTY0LCAxMjE2OSwgMTIxNzQsIDEyMTc5LCAxMjE4NCwgMTIxODksIDEyMTk0LCAxMjE5OSwgCi0gICAgMTIyMDQsIDEyMjA5LCAxMjIxNCwgMTIyMTksIDEyMjI0LCAxMjIyOSwgMTIyMzQsIDEyMjM5LCAwLCAwLCAxMjI0NCwgMCwgCisgICAgMTUwLCAxNTQsIDE1OSwgMTY0LCAxNjgsIDE3MywgMTc4LCAxODIsIDE4NywgMTkyLCAxOTcsIDIwMiwgMjA3LCAyMTAsIAorICAgIDIxNCwgMjE3LCAyMjEsIDIyNCwgMjI4LCAyMzIsIDIzNywgMjQyLCAyNDcsIDI1MSwgMjU2LCAyNjEsIDI2NiwgMjcwLCAKKyAgICAyNzUsIDI4MCwgMjg0LCAyODksIDI5NCwgMjk4LCAzMDMsIDMwOCwgMzEyLCAzMTcsIDMyMiwgMzI2LCAzMzEsIDMzNiwgCisgICAgMzQxLCAzNDYsIDM1MSwgMzU1LCAzNTgsIDM2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY0LCAzNjgsIDM3MywgCisgICAgMzc2LCAzNzksIDM4MiwgMzg1LCAzODgsIDM5MSwgMzkzLCAzOTYsIDQwMiwgNDEwLCA0MTMsIDQxNywgNDIwLCA0MjIsIAorICAgIDQyNSwgNDI4LCA0MzEsIDQzNCwgNDM4LCA0NDEsIDQ0NCwgNDQ3LCA0NDksIDQ1MiwgNDU4LCA0NjYsIDQ3MywgNDgwLCAKKyAgICA0ODcsIDQ5MiwgNDk5LCA1MDUsIDUxMiwgNTE5LCA1MjYsIDUzNCwgNTM5LCA1NDcsIDU1NCwgNTYwLCA1NjcsIDU3NCwgCisgICAgNTgyLCA1ODksIDU5NywgNjA1LCA2MTAsIDYxOCwgNjI1LCA2MzEsIDYzOCwgNjQ1LCA2NTIsIDY1NSwgNjYxLCA2NjgsIAorICAgIDY3NCwgNjgxLCA2ODgsIDY5NSwgNzAwLCA3MDcsIDcxNCwgNzIwLCA3MjcsIDczNCwgNzQxLCA3NDksIDc1NCwgNzYyLCAKKyAgICA3NjksIDc3NSwgNzgyLCA3ODksIDc5NywgODA0LCA4MTIsIDgyMCwgODI1LCA4MzMsIDg0MCwgODQ2LCA4NTMsIDg2MCwgCisgICAgODY3LCA4NzAsIDg3NiwgODgzLCA4ODksIDg5NiwgOTAzLCA5MTAsIDkxNSwgOTIzLCA5MzAsIDkzNywgOTQ0LCA5NTEsIAorICAgIDk1OCwgOTY1LCA5NzIsIDk3OSwgOTg3LCA5OTUsIDEwMDMsIDEwMTEsIDEwMTksIDEwMjcsIDEwMzUsIDEwNDMsIDEwNTAsIAorICAgIDEwNTcsIDEwNjQsIDEwNzEsIDEwNzgsIDEwODUsIDEwOTIsIDEwOTksIDExMDYsIDExMTMsIDExMjAsIDExMjcsIDExMzUsIAorICAgIDExNDMsIDExNTEsIDExNTksIDExNjcsIDExNzUsIDExODMsIDExOTEsIDExOTksIDEyMDcsIDEyMTQsIDEyMjEsIDEyMjksIAorICAgIDEyMzcsIDEyNDUsIDEyNTMsIDEyNjEsIDEyNjksIDEyNzcsIDEyODUsIDEyOTMsIDEyOTksIDEzMDQsIDEzMDksIDEzMTcsIAorICAgIDEzMjUsIDEzMzMsIDEzNDEsIDEzNDYsIDEzNTMsIDEzNjAsIDEzNjgsIDEzNzYsIDEzODQsIDEzOTIsIDE0MDEsIDE0MTAsIAorICAgIDE0MTcsIDE0MjQsIDE0MzEsIDE0MzgsIDE0NDYsIDE0NTQsIDE0NjIsIDE0NzAsIDE0ODEsIDE0ODYsIDE0OTEsIDE0OTgsIAorICAgIDE1MDUsIDE1MTIsIDE1MTksIDE1MjYsIDE1MzMsIDE1MzgsIDE1NDMsIDE1NTAsIDE1NTcsIDE1NjUsIDE1NzMsIDE1ODEsIAorICAgIDE1ODksIDE1OTYsIDE2MDMsIDE2MTEsIDE2MTksIDE2MjcsIDE2MzUsIDE2NDMsIDE2NTEsIDE2NTksIDE2NjcsIDE2NzUsIAorICAgIDE2ODMsIDE2OTAsIDE2OTcsIDE3MDQsIDE3MTEsIDE3MTgsIDE3MjUsIDE3MzIsIDE3MzksIDE3NDcsIDE3NTUsIDE3NjIsIAorICAgIDE3NjksIDE3NzYsIDE3ODMsIDE3OTEsIDE3OTksIDE4MDcsIDE4MTUsIDE4MjMsIDE4MzAsIDE4MzcsIDE4NDUsIDE4NTMsIAorICAgIDE4NjEsIDE4NjksIDE4NzUsIDE4ODEsIDE4ODcsIDE4OTQsIDE5MDEsIDE5MDYsIDE5MTEsIDE5MTYsIDE5MjMsIDE5MzAsIAorICAgIDE5MzcsIDE5NDQsIDE5NTIsIDE5NjAsIDE5NjcsIDE5NzMsIDE5NzgsIDE5ODMsIDE5OTAsIDE5OTcsIDIwMDQsIDIwMDksIAorICAgIDIwMTQsIDIwMTksIDIwMjYsIDIwMzMsIDIwNDAsIDIwNDcsIDIwNTQsIDIwNjEsIDIwNjksIDIwNzksIDIwODcsIDIwOTQsIAorICAgIDIxMDEsIDIxMDYsIDIxMTEsIDIxMTgsIDIxMjUsIDIxMjksIDIxMzQsIDIxMzksIDIxNDQsIDIxNTIsIDIxNjEsIDIxNjgsIAorICAgIDIxNzUsIDIxODQsIDIxOTEsIDIxOTgsIDIyMDMsIDIyMTAsIDIyMTcsIDIyMjQsIDIyMzEsIDIyMzgsIDIyNDMsIDIyNTAsIAorICAgIDIyNTcsIDIyNjUsIDIyNzAsIDIyNzUsIDIyODAsIDIyOTAsIDIyOTQsIDIzMDAsIDIzMDYsIDIzMTIsIDIzMTgsIDIzMjYsIAorICAgIDIzMzksIDIzNDcsIDIzNTIsIDIzNjIsIDIzNjcsIDIzNzIsIDIzODIsIDIzODcsIDIzOTQsIDI0MDEsIDI0MDksIDI0MTcsIAorICAgIDI0MjQsIDI0MzEsIDI0MzgsIDI0NDUsIDI0NTUsIDI0NjUsIDI0NzQsIDI0ODMsIDI0OTMsIDI1MDMsIDI1MTMsIDI1MjMsIAorICAgIDI1MjksIDI1MzksIDI1NDksIDI1NTksIDI1NjksIDI1NzcsIDI1ODUsIDI1OTIsIDI1OTksIDI2MDcsIDI2MTUsIDI2MjMsIAorICAgIDI2MzEsIDI2MzgsIDI2NDUsIDI2NTUsIDI2NjUsIDI2NzMsIDI2ODEsIDI2ODksIDI2OTQsIDI3MDQsIDI3MDksIDI3MTYsIAorICAgIDI3MjMsIDI3MjgsIDI3MzMsIDI3NDEsIDI3NDksIDI3NTksIDI3NjksIDI3NzYsIDI3ODMsIDI3OTIsIDI4MDEsIDI4MDksIAorICAgIDI4MTcsIDI4MjYsIDI4MzUsIDI4NDMsIDI4NTEsIDI4NjAsIDI4NjksIDI4NzgsIDI4ODcsIDI4OTcsIDI5MDcsIDI5MTUsIAorICAgIDI5MjMsIDI5MzIsIDI5NDEsIDI5NTAsIDI5NTksIDI5NjksIDI5NzksIDI5ODcsIDI5OTUsIDMwMDQsIDMwMTMsIDMwMjIsIAorICAgIDMwMzEsIDMwNDAsIDMwNDksIDMwNTQsIDMwNTksIDMwNjcsIDMwNzUsIDMwODUsIDMwOTMsIDMwOTgsIDMxMDMsIDMxMTAsIAorICAgIDMxMTcsIDMxMjQsIDMxMzEsIDMxMzgsIDMxNDUsIDMxNTUsIDMxNjUsIDMxNzUsIDMxODUsIDMxOTIsIDMxOTksIDMyMDksIAorICAgIDMyMTksIDMyMjcsIDMyMzUsIDMyNDMsIDMyNTEsIDMyNTksIDMyNjYsIDMyNzMsIDMyODAsIDMyODYsIDMyOTMsIDMzMDAsIAorICAgIDMzMDcsIDMzMTYsIDMzMjYsIDMzMzYsIDMzNDMsIDMzNTAsIDMzNTYsIDMzNjEsIDMzNjgsIDMzNzQsIDMzODAsIDMzODcsIAorICAgIDMzOTQsIDM0MDUsIDM0MTUsIDM0MjIsIDM0MjksIDM0MzYsIDM0NDMsIDM0NDksIDM0NTQsIDM0NjEsIDM0NjcsIDM0NzIsIAorICAgIDM0ODAsIDM0ODgsIDM0OTUsIDM1MDEsIDM1MDYsIDM1MTMsIDM1MTgsIDM1MjUsIDM1MzQsIDM1NDMsIDM1NTIsIDM1NTksIAorICAgIDM1NjUsIDM1NzEsIDM1NzYsIDM1ODMsIDM1OTAsIDM1OTcsIDM2MDQsIDM2MTEsIDM2MTYsIDM2MjEsIDM2MzAsIDM2MzgsIAorICAgIDM2NDcsIDM2NTIsIDM2NTksIDM2NzAsIDM2NzcsIDM2ODUsIDM2OTQsIDM3MDAsIDM3MDYsIDM3MTIsIDM3MTksIDM3MjQsIAorICAgIDM3MzAsIDM3NDEsIDM3NTAsIDM3NTksIDM3NjcsIDM3NzUsIDM3ODUsIDM3OTAsIDM3OTcsIDM4MDQsIDM4MDksIDM4MjEsIAorICAgIDM4MzAsIDM4MzgsIDM4NDUsIDM4NTQsIDM4NTksIDM4NjQsIDM4NzEsIDM4NzgsIDM4ODUsIDM4OTIsIDM4OTgsIDM5MDcsIAorICAgIDM5MTUsIDM5MjAsIDM5MjgsIDM5MzQsIDM5NDIsIDM5NTAsIDM5NTYsIDM5NjIsIDM5NjgsIDM5NzUsIDM5ODMsIDM5ODksIAorICAgIDM5OTcsIDQwMDQsIDQwMDksIDQwMTYsIDQwMjQsIDQwMzQsIDQwNDEsIDQwNDgsIDQwNTgsIDQwNjUsIDQwNzIsIDQwODIsIAorICAgIDQwODksIDQwOTYsIDQxMDMsIDQxMDksIDQxMTUsIDQxMjUsIDQxMzgsIDQxNDMsIDQxNTAsIDQxNTUsIDQxNTksIDQxNjUsIAorICAgIDQxNzQsIDQxODEsIDQxODYsIDQxOTEsIDQxOTUsIDQyMDAsIDQyMDYsIDQyMTAsIDQyMTYsIDQyMjIsIDQyMjgsIDQyMzQsIAorICAgIDQyNDIsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjgsIDQyNzAsIDQyNzUsIDQyNzksIDQyODUsIDQyOTEsIDQyOTcsIAorICAgIDQzMDIsIDQzMDksIDQzMTYsIDQzMjIsIDQzMjksIDQzMzcsIDQzNDUsIDQzNTAsIDQzNTUsIDQzNTksIDQzNjQsIDQzNjYsIAorICAgIDQzNjgsIDQzNzEsIDQzNzMsIDQzNzYsIDQzODEsIDQzODYsIDQzOTIsIDQzOTcsIDQ0MDEsIDQ0MDYsIDQ0MTEsIDQ0MjAsIAorICAgIDQ0MjYsIDQ0MzEsIDQ0MzcsIDQ0NDIsIDQ0NDgsIDQ0NTYsIDQ0NjQsIDQ0NjgsIDQ0NzIsIDQ0NzcsIDQ0ODMsIDQ0ODksIAorICAgIDQ0OTUsIDQ1MDEsIDQ1MDYsIDQ1MTMsIDQ1MjEsIDQ1MjksIDQ1MzQsIDQ1NDAsIDQ1NDcsIDQ1NTQsIDQ1NjEsIDQ1NjgsIAorICAgIDQ1NzIsIDQ1NzcsIDQ1ODIsIDQ1ODcsIDQ1OTIsIDQ1OTcsIDQ2MDAsIDQ2MDMsIDQ2MDYsIDQ2MDksIDQ2MTIsIDQ2MTUsIAorICAgIDQ2MTksIDQ2MjMsIDQ2MjksIDQ2MzIsIDQ2MzcsIDQ2NDMsIDQ2NDksIDQ2NTIsIDQ2NTcsIDQ2NjMsIDQ2NjcsIDQ2NzMsIAorICAgIDQ2NzksIDQ2ODUsIDQ2OTEsIDQ2OTYsIDQ3MDEsIDQ3MDYsIDQ3MDksIDQ3MTUsIDQ3MjAsIDQ3MjUsIDQ3MjksIDQ3MzQsIAorICAgIDQ3NDAsIDQ3NDYsIDQ3NDksIDQ3NTMsIDQ3NTcsIDQ3NjEsIDQ3NjQsIDQ3NjcsIDQ3NzIsIDQ3NzYsIDQ3ODMsIDQ3ODcsIAorICAgIDQ3OTMsIDQ3OTcsIDQ4MDMsIDQ4MDcsIDQ4MTEsIDQ4MTUsIDQ4MjAsIDQ4MjUsIDQ4MzIsIDQ4MzgsIDQ4NDUsIDQ4NTEsIAorICAgIDQ4NTcsIDQ4NjMsIDQ4NjYsIDQ4NzAsIDQ4NzQsIDQ4NzgsIDQ4ODIsIDQ4ODcsIDQ4OTIsIDQ4OTYsIDQ5MDAsIDQ5MDYsIAorICAgIDQ5MTAsIDQ5MTQsIDQ5MTksIDQ5MjUsIDQ5MzAsIDQ5MzYsIDQ5NDAsIDQ5NDcsIDQ5NTIsIDQ5NTYsIDQ5NjEsIDQ5NjYsIAorICAgIDQ5NzIsIDQ5NzUsIDQ5NzksIDQ5ODQsIDQ5ODksIDQ5OTgsIDUwMDQsIDUwMDksIDUwMTMsIDUwMTgsIDUwMjIsIDUwMjcsIAorICAgIDUwMzEsIDUwMzUsIDUwNDAsIDUwNDQsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzAsIDUwNzUsIDUwODAsIDUwODYsIAorICAgIDUwOTIsIDUwOTgsIDUxMDQsIDUxMDksIDUxMTUsIDUxMjEsIDUxMjcsIDUxMzIsIDUxMzcsIDUxNDQsIDUxNTEsIDUxNTUsIAorICAgIDUxNjEsIDUxNjgsIDAsIDAsIDUxNzUsIDUxNzgsIDUxODcsIDUxOTYsIDUyMDcsIDUyMTEsIDAsIDAsIDAsIDAsIDUyMTYsIAorICAgIDUyMTksIDUyMjQsIDUyMzIsIDUyMzcsIDUyNDUsIDUyNTMsIDAsIDUyNjEsIDAsIDUyNjksIDUyNzcsIDUyODUsIDUyOTYsIAorICAgIDUzMDEsIDUzMDYsIDUzMTEsIDUzMTYsIDUzMjEsIDUzMjYsIDUzMzEsIDUzMzYsIDUzNDEsIDUzNDYsIDUzNTEsIDUzNTYsIAorICAgIDUzNjEsIDUzNjYsIDUzNzEsIDUzNzYsIDAsIDUzODEsIDUzODYsIDUzOTEsIDUzOTYsIDU0MDEsIDU0MDYsIDU0MTEsIAorICAgIDU0MTYsIDU0MjQsIDU0MzIsIDU0NDAsIDU0NDgsIDU0NTYsIDU0NjQsIDU0NzUsIDU0ODAsIDU0ODUsIDU0OTAsIDU0OTUsIAorICAgIDU1MDAsIDU1MDUsIDU1MTAsIDU1MTUsIDU1MjAsIDU1MjUsIDU1MzAsIDU1MzUsIDU1NDAsIDU1NDUsIDU1NTAsIDU1NTUsIAorICAgIDU1NjAsIDU1NjYsIDU1NzEsIDU1NzYsIDU1ODEsIDU1ODYsIDU1OTEsIDU1OTYsIDU2MDEsIDU2MDksIDU2MTcsIDU2MjUsIAorICAgIDU2MzMsIDU2NDEsIDU2NDYsIDU2NTAsIDU2NTQsIDU2NjEsIDU2NzEsIDU2ODEsIDU2ODUsIDU2ODksIDU2OTMsIDU2OTksIAorICAgIDU3MDYsIDU3MTAsIDU3MTUsIDU3MTksIDU3MjQsIDU3MjgsIDU3MzMsIDU3MzcsIDU3NDIsIDU3NDcsIDU3NTIsIDU3NTcsIAorICAgIDU3NjIsIDU3NjcsIDU3NzIsIDU3NzcsIDU3ODIsIDU3ODcsIDU3OTIsIDU3OTcsIDU4MDIsIDU4MDcsIDU4MTIsIDU4MTYsIAorICAgIDU4MjAsIDU4MjYsIDU4MzAsIDU4MzUsIDU4NDEsIDU4NDksIDU4NTQsIDU4NTksIDU4NjYsIDU4NzEsIDU4NzYsIDU4ODMsIAorICAgIDU4OTIsIDU5MDEsIDU5MTIsIDU5MjAsIDU5MjUsIDU5MzAsIDU5MzUsIDU5NDIsIDU5NDcsIDU5NTMsIDU5NTgsIDU5NjMsIAorICAgIDU5NjgsIDU5NzMsIDU5NzgsIDU5ODMsIDU5OTEsIDU5OTcsIDYwMDIsIDYwMDYsIDYwMTEsIDYwMTYsIDYwMjEsIDYwMjYsIAorICAgIDYwMzEsIDYwMzYsIDYwNDEsIDYwNDUsIDYwNTEsIDYwNTUsIDYwNjAsIDYwNjUsIDYwNzAsIDYwNzQsIDYwNzksIDYwODQsIAorICAgIDYwODksIDYwOTQsIDYwOTgsIDYxMDMsIDYxMDcsIDYxMTIsIDYxMTcsIDYxMjIsIDYxMjcsIDYxMzMsIDYxMzgsIDYxNDQsIAorICAgIDYxNDgsIDYxNTMsIDYxNTcsIDYxNjEsIDYxNjYsIDYxNzEsIDYxNzYsIDYxODEsIDYxODYsIDYxOTEsIDYxOTYsIDYyMDAsIAorICAgIDYyMDYsIDYyMTAsIDYyMTUsIDYyMjAsIDYyMjUsIDYyMjksIDYyMzQsIDYyMzksIDYyNDQsIDYyNDksIDYyNTMsIDYyNTgsIAorICAgIDYyNjIsIDYyNjcsIDYyNzIsIDYyNzcsIDYyODIsIDYyODgsIDYyOTMsIDYyOTksIDYzMDMsIDYzMDgsIDYzMTIsIDYzMjAsIAorICAgIDYzMjUsIDYzMzAsIDYzMzUsIDYzNDIsIDYzNDcsIDYzNTMsIDYzNTgsIDYzNjMsIDYzNjgsIDYzNzMsIDYzNzgsIDYzODMsIAorICAgIDYzOTEsIDYzOTcsIDY0MDIsIDY0MDcsIDY0MTIsIDY0MTcsIDY0MjIsIDY0MjgsIDY0MzQsIDY0NDEsIDY0NDgsIDY0NTcsIAorICAgIDY0NjYsIDY0NzMsIDY0ODAsIDY0ODksIDY0OTgsIDY1MDMsIDY1MDgsIDY1MTMsIDY1MTgsIDY1MjMsIDY1MjgsIDY1MzMsIAorICAgIDY1MzgsIDY1NDksIDY1NjAsIDY1NjUsIDY1NzAsIDY1NzcsIDY1ODQsIDY1OTIsIDY2MDAsIDY2MDUsIDY2MTAsIDY2MTUsIAorICAgIDY2MjAsIDY2MjQsIDY2MjgsIDY2MzIsIDY2MzgsIDY2NDQsIDY2NDgsIDY2NTUsIDY2NjAsIDY2NzAsIDY2ODAsIDY2ODYsIAorICAgIDY2OTIsIDY3MDAsIDY3MDgsIDY3MTYsIDY3MjQsIDY3MzEsIDY3MzgsIDY3NDYsIDY3NTQsIDY3NjIsIDY3NzAsIDY3NzgsIAorICAgIDY3ODYsIDY3OTQsIDY4MDIsIDY4MTAsIDY4MTgsIDY4MjUsIDY4MzIsIDY4MzgsIDY4NDQsIDY4NTIsIDY4NjAsIDY4NjcsIAorICAgIDY4NzQsIDY4ODIsIDY4OTAsIDY4OTYsIDY5MDIsIDY5MTAsIDY5MTgsIDY5MjYsIDY5MzQsIDY5NDAsIDY5NDYsIDY5NTQsIAorICAgIDY5NjIsIDY5NzAsIDY5NzgsIDY5ODUsIDY5OTIsIDcwMDAsIDcwMDgsIDcwMTYsIDcwMjQsIDcwMjksIDcwMzQsIDcwNDEsIAorICAgIDcwNDgsIDcwNTgsIDcwNjgsIDcwNzIsIDcwODAsIDcwODgsIDcwOTUsIDcxMDIsIDcxMTAsIDcxMTgsIDcxMjUsIDcxMzIsIAorICAgIDcxNDAsIDcxNDgsIDcxNTUsIDcxNjIsIDcxNzAsIDcxNzgsIDcxODMsIDcxOTAsIDcxOTcsIDcyMDQsIDcyMTEsIDcyMTcsIAorICAgIDcyMjMsIDcyMzEsIDcyMzksIDcyNDQsIDcyNDksIDcyNTcsIDcyNjUsIDcyNzMsIDcyODEsIDcyODksIDcyOTcsIDczMDQsIAorICAgIDczMTEsIDczMTksIDczMjcsIDczMzUsIDczNDMsIDczNTAsIDczNTcsIDczNjMsIDczNjksIDczNzgsIDczODcsIDczOTQsIAorICAgIDc0MDEsIDc0MDgsIDc0MTUsIDc0MjIsIDc0MjksIDc0MzYsIDc0NDMsIDc0NTEsIDc0NTksIDc0NjcsIDc0NzUsIDc0ODMsIAorICAgIDc0OTEsIDc1MDEsIDc1MTEsIDc1MTgsIDc1MjUsIDc1MzIsIDc1MzksIDc1NDYsIDc1NTMsIDc1NjAsIDc1NjcsIDc1NzQsIAorICAgIDc1ODEsIDc1ODgsIDc1OTUsIDc2MDIsIDc2MDksIDc2MTYsIDc2MjMsIDc2MzAsIDc2MzcsIDc2NDQsIDc2NTEsIDc2NTgsIAorICAgIDc2NjUsIDc2NzIsIDc2NzksIDc2ODQsIDc2ODksIDc2OTQsIDc2OTksIDc3MDQsIDc3MDksIDc3MTQsIDc3MTksIDc3MjQsIAorICAgIDc3MjksIDc3MzUsIDc3NDEsIDc3NDksIDc3NTcsIDc3NjUsIDc3NzMsIDc3ODEsIDc3ODksIDc3OTcsIDc4MDUsIDc4MTMsIAorICAgIDc4MjEsIDc4MjYsIDc4MzEsIDc4MzYsIDc4NDEsIDc4NDksIDAsIDc4NTcsIDc4NjIsIDc4NjcsIDc4NzIsIDc4NzcsIAorICAgIDc4ODIsIDc4ODcsIDc4OTIsIDc4OTcsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzEsIDc5MzYsIAorICAgIDc5NDEsIDc5NDYsIDc5NTEsIDc5NTYsIDc5NjEsIDc5NjYsIDc5NzEsIDc5NzYsIDc5ODEsIDc5ODYsIDc5OTEsIDc5OTYsIAorICAgIDgwMDEsIDgwMDYsIDgwMTEsIDgwMTYsIDgwMjEsIDgwMjYsIDgwMzEsIDgwMzYsIDgwNDEsIDAsIDAsIDgwNDYsIDgwNTMsIAorICAgIDgwNTYsIDgwNjAsIDgwNjQsIDgwNjcsIDgwNzEsIDAsIDgwNzUsIDgwODAsIDgwODUsIDgwOTAsIDgwOTUsIDgxMDAsIAorICAgIDgxMDUsIDgxMTAsIDgxMTUsIDgxMTksIDgxMjQsIDgxMjksIDgxMzQsIDgxMzksIDgxNDQsIDgxNDksIDgxNTQsIDgxNTksIAorICAgIDgxNjQsIDgxNjksIDgxNzQsIDgxNzksIDgxODQsIDgxODksIDgxOTQsIDgxOTksIDgyMDQsIDgyMDksIDgyMTQsIDgyMTksIAorICAgIDgyMjQsIDgyMjksIDgyMzQsIDgyMzksIDgyNDQsIDgyNDksIDgyNTQsIDgyNTksIDgyNjQsIDAsIDgyNzEsIDgyNzYsIDAsIAorICAgIDAsIDgyNzksIDgyODUsIDgyOTEsIDAsIDgyOTUsIDgzMDAsIDgzMDUsIDgzMTAsIDgzMTcsIDgzMjQsIDgzMjksIDgzMzQsIAorICAgIDgzMzksIDgzNDQsIDgzNDksIDgzNTQsIDgzNTksIDgzNjYsIDgzNzEsIDgzNzgsIDgzODUsIDgzOTAsIDgzOTcsIDg0MDIsIAorICAgIDg0MDcsIDg0MTIsIDg0MTksIDg0MjQsIDg0MjksIDg0MzYsIDg0NDUsIDg0NTAsIDg0NTUsIDg0NjAsIDg0NjUsIDg0NzEsIAorICAgIDg0NzYsIDg0ODMsIDg0OTAsIDg0OTcsIDg1MDIsIDg1MDcsIDg1MTIsIDg1MTcsIDg1MjIsIDg1MjcsIDg1MzcsIDg1NDIsIAorICAgIDg1NTEsIDg1NTYsIDg1NjEsIDg1NjYsIDg1NzEsIDg1NzgsIDg1ODUsIDg1OTIsIDg1OTgsIDg2MDQsIDg2MTEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDg2MTgsIDg2MjIsIDg2MjYsIDg2MzAsIDg2MzQsIDg2MzgsIDg2NDIsIDg2NDYsIDg2NTAsIAorICAgIDg2NTQsIDg2NTgsIDg2NjMsIDg2NjcsIDg2NzEsIDg2NzYsIDg2ODAsIDg2ODUsIDg2ODksIDg2OTMsIDg2OTcsIDg3MDIsIAorICAgIDg3MDYsIDg3MTEsIDg3MTUsIDg3MTksIDg3MjMsIDg3MjcsIDAsIDAsIDAsIDAsIDAsIDg3MzEsIDg3MzgsIDg3NDYsIAorICAgIDg3NTMsIDg3NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NjMsIDg3NjYsIDg3NzAsIDg3NzUsIAorICAgIDg3NzksIDg3ODMsIDg3ODcsIDg3OTMsIDg3OTksIDg4MDIsIDg4MDksIDg4MTgsIDg4MjEsIDg4MjQsIDg4MjksIDg4MzUsIAorICAgIDg4MzksIDg4NDcsIDg4NTMsIDg4NTksIDg4NjcsIDg4NzEsIDg4NzYsIDg4ODcsIDg4OTIsIDg4OTYsIDg5MDAsIDg5MDQsIAorICAgIDg5MDcsIDAsIDg5MTAsIDg5MTcsIDg5MjEsIDg5MjcsIDg5MzEsIDg5MzgsIDg5NDUsIDg5NTMsIDg5NjAsIDg5NjcsIAorICAgIDg5NzEsIDg5NzUsIDg5ODEsIDg5ODUsIDg5ODksIDg5OTMsIDg5OTcsIDkwMDEsIDkwMDUsIDkwMDksIDkwMTMsIDkwMTcsIAorICAgIDkwMjEsIDkwMjUsIDkwMjksIDkwMzMsIDkwMzcsIDkwNDEsIDkwNDUsIDkwNDksIDkwNTcsIDkwNjUsIDkwNzUsIDkwODQsIAorICAgIDkwOTMsIDkwOTYsIDkxMDAsIDkxMDQsIDkxMDgsIDkxMTIsIDkxMTYsIDkxMjAsIDkxMjQsIDkxMjgsIDkxMzMsIDkxMzcsIAorICAgIDkxNDAsIDkxNDMsIDkxNDYsIDkxNDksIDkxNTIsIDkxNTUsIDkxNTgsIDkxNjEsIDkxNjUsIDkxNjksIDkxNzMsIDkxNzgsIAorICAgIDkxODMsIDkxODksIDkxOTIsIDkxOTksIDkyMDgsIDkyMTMsIDkyMTgsIDkyMjUsIDkyMzEsIDkyMzYsIDkyNDAsIDkyNDQsIAorICAgIDkyNDgsIDkyNTIsIDkyNTYsIDkyNjAsIDkyNjUsIDkyNjksIDkyNzQsIDkyNzgsIDkyODMsIDkyODgsIDkyOTUsIDkzMDEsIAorICAgIDkzMDcsIDkzMTMsIDkzMTgsIDkzMjcsIDkzMzYsIDkzNDEsIDkzNDgsIDkzNTUsIDkzNjIsIDkzNjksIDkzNzMsIDkzNzcsIAorICAgIDkzODEsIDkzODgsIDkzOTgsIDk0MDIsIDk0MDYsIDk0MTAsIDk0MTcsIDk0MjUsIDk0MjksIDk0MzMsIDk0NDAsIDk0NDQsIAorICAgIDk0NDgsIDk0NTIsIDk0NTksIDk0NjYsIDk0NzgsIDk0ODIsIDk0ODYsIDk0OTAsIDk1MDAsIDk1MDksIDk1MTMsIDk1MjEsIAorICAgIDk1MjgsIDk1MzUsIDk1NDQsIDk1NTUsIDk1NjMsIDk1NjcsIDk1NzYsIDk1ODcsIDk1OTUsIDk2MDgsIDk2MTYsIDk2MjQsIAorICAgIDk2MzIsIDk2NDAsIDk2NDYsIDk2NTUsIDk2NjIsIDk2NjYsIDk2NzQsIDk2NzgsIDk2ODUsIDk2OTMsIDk2OTcsIDk3MDMsIAorICAgIDk3MTAsIDk3MTcsIDk3MjEsIDk3MjksIDk3MzMsIDk3NDAsIDk3NDQsIDk3NTIsIDk3NTYsIDk3NjQsIDk3NzIsIDk3NzksIAorICAgIDk3ODcsIDk3OTUsIDk4MDIsIDk4MDgsIDk4MTIsIDk4MTksIDk4MjcsIDk4MzMsIDk4NDAsIDk4NDcsIDk4NTMsIDk4NjMsIAorICAgIDk4NzEsIDk4NzgsIDk4ODQsIDk4ODgsIDk4OTEsIDk4OTUsIDk5MDEsIDk5MDksIDk5MTMsIDk5MTksIDk5MjUsIDk5MzIsIAorICAgIDk5MzksIDk5NDIsIDk5NDksIDk5NTQsIDk5NjMsIDk5NjgsIDk5NzIsIDk5ODUsIDk5OTgsIDEwMDA0LCAxMDAxMSwgCisgICAgMTAwMTYsIDEwMDIyLCAxMDAyNywgMTAwMzMsIDEwMDQzLCAxMDA1MCwgMTAwNTksIDEwMDY5LCAxMDA3NSwgMTAwODAsIAorICAgIDEwMDg1LCAxMDA4OSwgMTAwOTMsIDEwMDk4LCAxMDEwMywgMTAxMDksIDEwMTE3LCAxMDEyNSwgMTAxMzYsIDEwMTQxLCAKKyAgICAxMDE1MCwgMTAxNTksIDEwMTY2LCAxMDE3MiwgMTAxNzgsIDEwMTg0LCAxMDE5MCwgMTAxOTYsIDEwMjAyLCAxMDIwOSwgCisgICAgMTAyMTUsIDEwMjIyLCAxMDIyOSwgMTAyMzYsIDEwMjQzLCAxMDI0OSwgMTAyNTcsIDEwMjY2LCAxMDI3MywgMTAyODEsIAorICAgIDEwMjg5LCAxMDI5NSwgMTAzMDEsIDEwMzA3LCAxMDMxNSwgMTAzMjMsIDEwMzMzLCAxMDM0MywgMTAzNDcsIDEwMzUzLCAKKyAgICAxMDM1OSwgMCwgMTAzNjUsIDEwMzcwLCAxMDM3NSwgMTAzODIsIDEwMzg3LCAxMDM5MiwgMTAzOTksIDEwNDA0LCAxMDQxMywgCisgICAgMTA0MTgsIDEwNDIzLCAxMDQyOCwgMTA0MzMsIDEwNDM4LCAxMDQ0NSwgMTA0NTAsIDEwNDU3LCAxMDQ2MiwgMTA0NjcsIAorICAgIDEwNDcyLCAxMDQ3NywgMTA0ODIsIDEwNDg4LCAxMDQ5MiwgMTA0OTcsIDEwNTA0LCAxMDUwOSwgMTA1MTQsIDEwNTE5LCAKKyAgICAxMDUyNCwgMTA1MjksIDEwNTM2LCAxMDU0MywgMTA1NTAsIDEwNTU1LCAxMDU2MCwgMTA1NjYsIDEwNTcxLCAxMDU3NiwgCisgICAgMTA1ODIsIDEwNTg3LCAxMDU5MiwgMTA2MDAsIDEwNjA4LCAxMDYxMywgMTA2MTgsIDEwNjI0LCAxMDYyOSwgMTA2MzQsIAorICAgIDEwNjM4LCAxMDY0NCwgMTA2NDgsIDEwNjUyLCAxMDY1OCwgMTA2NjQsIDEwNjY5LCAxMDY3NCwgMTA2ODEsIDEwNjg4LCAKKyAgICAxMDY5MiwgMCwgMCwgMTA2OTYsIDEwNzAzLCAxMDcxMCwgMTA3MTcsIDEwNzI3LCAxMDczOSwgMTA3NTAsIDEwNzY2LCAKKyAgICAxMDc3OCwgMTA3ODksIDEwNzk3LCAxMDgwNCwgMTA4MTQsIDEwODI5LCAxMDg0MCwgMTA4NDYsIDEwODU1LCAxMDg2MywgCisgICAgMTA4NzQsIDEwODg0LCAxMDg5MiwgMTA5MDMsIDEwOTEwLCAxMDkxOCwgMTA5MjksIDEwOTM1LCAxMDk0MSwgMTA5NDksIAorICAgIDEwOTU3LCAxMDk2NSwgMTA5NzEsIDEwOTgxLCAxMDk4OSwgMTA5OTksIDExMDA5LCAxMTAyMiwgMTEwMzYsIDExMDUwLCAKKyAgICAxMTA2MCwgMTEwNzEsIDExMDgyLCAxMTA5NSwgMTExMDgsIDExMTIyLCAxMTEzNCwgMTExNDYsIDExMTU5LCAxMTE3MiwgCisgICAgMTExODQsIDExMTk3LCAxMTIwNiwgMTEyMTQsIDExMjE5LCAxMTIyNCwgMTEyMjksIDExMjM0LCAxMTIzOSwgMTEyNDQsIAorICAgIDExMjQ5LCAxMTI1NCwgMTEyNTksIDExMjY0LCAxMTI2OSwgMTEyNzQsIDExMjc5LCAxMTI4NCwgMTEyODksIDExMjk0LCAKKyAgICAxMTI5OSwgMTEzMDQsIDExMzA5LCAxMTMxNCwgMTEzMTksIDExMzI0LCAxMTMyOSwgMTEzMzQsIDExMzM5LCAxMTM0NCwgCisgICAgMTEzNDksIDExMzU0LCAxMTM1OSwgMTEzNjQsIDExMzY5LCAxMTM3NCwgMTEzNzgsIDExMzgzLCAxMTM4OCwgMTEzOTMsIAorICAgIDExMzk4LCAxMTQwMywgMTE0MDcsIDExNDExLCAxMTQxNSwgMTE0MTksIDExNDIzLCAxMTQyNywgMTE0MzEsIDExNDM1LCAKKyAgICAxMTQzOSwgMTE0NDMsIDExNDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ1MiwgCisgICAgMTE0NTcsIDExNDYxLCAxMTQ2NSwgMTE0NjksIDExNDczLCAxMTQ3NywgMTE0ODEsIDExNDg2LCAxMTQ5MCwgMTE0OTUsIAorICAgIDExNDk5LCAxMTUwNCwgMTE1MDgsIDExNTEyLCAxMTUxNiwgMTE1MjEsIDExNTI1LCAxMTUzMCwgMTE1MzUsIDExNTQwLCAKKyAgICAxMTU0NCwgMTE1NDksIDExNTU0LCAxMTU1OSwgMTE1NjQsIDExNTY5LCAxMTU3NCwgMTE1NzksIDExNTg0LCAxMTU4OSwgCisgICAgMTE1OTMsIDExNTk3LCAxMTYwNCwgMTE2MDgsIDExNjEzLCAxMTYxNywgMTE2MjEsIDExNjI2LCAxMTYzMCwgMTE2MzcsIAorICAgIDExNjQ0LCAxMTY1MSwgMTE2NTgsIDExNjY2LCAxMTY3NCwgMTE2ODMsIDExNjkxLCAxMTY5OCwgMTE3MDUsIDExNzEzLCAKKyAgICAxMTcxOSwgMTE3MjUsIDExNzMxLCAxMTczNywgMTE3NDQsIDExNzQ5LCAxMTc1MywgMTE3NTgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExNzYyLCAxMTc2NywgMTE3NzIsIDExNzc3LCAxMTc4MiwgMTE3ODcsIDExNzkyLCAxMTc5NywgMTE4MDIsIDExODA3LCAKKyAgICAxMTgxMiwgMTE4MTcsIDExODIyLCAxMTgyNywgMTE4MzIsIDExODM3LCAxMTg0MiwgMTE4NDcsIDExODUyLCAxMTg1NywgCisgICAgMTE4NjIsIDExODY3LCAxMTg3MiwgMTE4NzcsIDExODgyLCAxMTg4NywgMTE4OTIsIDExOTAwLCAxMTkwNywgMTE5MTMsIAorICAgIDExOTE4LCAxMTkyNiwgMTE5MzMsIDExOTM5LCAxMTk0NiwgMTE5NTIsIDExOTU3LCAxMTk2NCwgMTE5NzEsIDExOTc3LCAKKyAgICAxMTk4MiwgMTE5ODcsIDExOTkzLCAxMTk5OCwgMTIwMDMsIDEyMDA5LCAwLCAwLCAxMjAxNCwgMTIwMjAsIDEyMDI2LCAKKyAgICAxMjAzMiwgMTIwMzgsIDEyMDQ0LCAxMjA1MCwgMTIwNTUsIDEyMDYzLCAxMjA2OSwgMTIwNzUsIDEyMDgxLCAxMjA4NywgCisgICAgMTIwOTMsIDEyMTAxLCAwLCAxMjEwNywgMTIxMTIsIDEyMTE3LCAxMjEyMiwgMTIxMjcsIDEyMTMyLCAxMjEzNywgMTIxNDIsIAorICAgIDEyMTQ3LCAxMjE1MiwgMTIxNTcsIDEyMTYyLCAxMjE2NywgMTIxNzIsIDEyMTc3LCAxMjE4MiwgMTIxODcsIDEyMTkyLCAKKyAgICAxMjE5NywgMTIyMDIsIDEyMjA3LCAxMjIxMiwgMTIyMTcsIDEyMjIyLCAxMjIyNywgMTIyMzIsIDEyMjM3LCAxMjI0MiwgMCwgCisgICAgMCwgMTIyNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjUxLCAxMjI2MCwgCisgICAgMTIyNjgsIDEyMjc1LCAxMjI4MywgMTIyOTUsIDEyMzAyLCAxMjMwOSwgMTIzMTYsIDEyMzI4LCAxMjMzOSwgMTIzNDYsIAorICAgIDEyMzU0LCAxMjM2MCwgMTIzNjUsIDEyMzczLCAxMjM4MSwgMTIzODksIDEyMzk1LCAxMjQwNSwgMTI0MTMsIDAsIDEyNDIwLCAKKyAgICAxMjQyOCwgMTI0MzYsIDEyNDQ1LCAxMjQ1NCwgMTI0NjcsIDEyNDczLCAxMjQ3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0ODUsIDEyNDkyLCAxMjQ5NywgMTI1MDIsIAorICAgIDEyNTA3LCAxMjUxNSwgMTI1MjMsIDEyNTMwLCAxMjUzNywgMTI1NDQsIDEyNTUxLCAxMjU1OCwgMTI1NjUsIDEyNTcyLCAKKyAgICAxMjU3OCwgMTI1ODYsIDEyNTkyLCAxMjU5NywgMTI2MDIsIDEyNjA3LCAxMjYxMiwgMTI2MTcsIDEyNjIyLCAxMjYyNywgCisgICAgMTI2MzIsIDEyNjM3LCAxMjY0MiwgMTI2NDcsIDEyNjUyLCAxMjY1NiwgMTI2NjAsIDEyNjY0LCAxMjY2OSwgMTI2NzUsIAorICAgIDEyNjgxLCAxMjY4NywgMTI2OTIsIDEyNjk3LCAxMjcwMiwgMTI3MDcsIDEyNzEzLCAxMjcyMiwgMTI3MzAsIDEyNzM2LCAKKyAgICAxMjc0NCwgMTI3NTAsIDEyNzU0LCAxMjc1OCwgMTI3NjIsIDEyNzY3LCAxMjc3MCwgMTI3NzQsIDEyNzc3LCAxMjc4MSwgCisgICAgMTI3ODQsIDEyNzg4LCAxMjc5MiwgMTI3OTYsIDEyODAxLCAxMjgwNiwgMTI4MDksIDEyODEzLCAxMjgxOCwgMTI4MjMsIAorICAgIDEyODI2LCAxMjgzMCwgMTI4MzMsIDEyODM3LCAxMjg0MSwgMTI4NDUsIDEyODQ5LCAxMjg1MywgMTI4NTcsIDEyODYxLCAKKyAgICAxMjg2NSwgMTI4NjksIDEyODczLCAxMjg3NywgMTI4ODEsIDEyODg1LCAxMjg4OSwgMTI4OTMsIDEyODk3LCAxMjkwMSwgCisgICAgMTI5MDUsIDEyOTA4LCAxMjkxMiwgMTI5MTUsIDEyOTE5LCAxMjkyMywgMTI5MjcsIDEyOTMwLCAxMjkzMywgMTI5MzcsIAorICAgIDEyOTQxLCAxMjk0NCwgMTI5NDgsIDEyOTUyLCAxMjk1NiwgMTI5NjAsIDEyOTY0LCAxMjk2OCwgMTI5NzEsIDEyOTc2LCAKKyAgICAxMjk4MSwgMTI5ODUsIDEyOTg5LCAxMjk5NCwgMTI5OTgsIDEzMDAzLCAxMzAwNywgMTMwMTIsIDEzMDE3LCAxMzAyMywgCisgICAgMTMwMjksIDEzMDM1LCAxMzAzOSwgMTMwNDQsIDEzMDUwLCAxMzA1NiwgMTMwNjAsIDEzMDY1LCAxMzA2OSwgMTMwNzUsIAorICAgIDEzMDgwLCAxMzA4MywgMTMwODksIDEzMDk1LCAxMzEwMCwgMTMxMDUsIDEzMTEyLCAxMzExNywgMTMxMjIsIDEzMTI2LCAKKyAgICAxMzEzMCwgMTMxMzQsIDEzMTM4LCAxMzE0MiwgMTMxNDYsIDEzMTUwLCAxMzE1NCwgMTMxNTksIDEzMTY0LCAxMzE2OSwgCisgICAgMTMxNzUsIDEzMTc4LCAxMzE4MiwgMTMxODYsIDEzMTg5LCAxMzE5MiwgMTMxOTUsIDEzMTk4LCAxMzIwMSwgMTMyMDQsIAorICAgIDEzMjA4LCAxMzIxMSwgMTMyMTUsIDEzMjE5LCAxMzIyNiwgMTMyMzEsIDEzMjM1LCAxMzIzOSwgMTMyNDMsIDEzMjQ3LCAKKyAgICAxMzI1MSwgMTMyNTcsIDEzMjYxLCAxMzI2NSwgMTMyNjksIDEzMjczLCAxMzI3OSwgMTMyODMsIDEzMjg3LCAxMzI5MCwgCisgICAgMTMyOTQsIDEzMjk4LCAwLCAxMzMwMiwgMTMzMDUsIDEzMzA5LCAxMzMxMiwgMTMzMTYsIDEzMzE5LCAxMzMyMywgMTMzMjcsIAorICAgIDAsIDAsIDEzMzMxLCAxMzMzNCwgMCwgMCwgMTMzMzgsIDEzMzQxLCAxMzM0NSwgMTMzNDgsIDEzMzUyLCAxMzM1NiwgCisgICAgMTMzNjAsIDEzMzY0LCAxMzM2OCwgMTMzNzIsIDEzMzc2LCAxMzM4MCwgMTMzODQsIDEzMzg4LCAxMzM5MiwgMTMzOTYsIAorICAgIDEzNDAwLCAxMzQwNCwgMTM0MDgsIDEzNDEyLCAxMzQxNiwgMTM0MjAsIDAsIDEzNDIzLCAxMzQyNiwgMTM0MzAsIDEzNDM0LCAKKyAgICAxMzQzOCwgMTM0NDEsIDEzNDQ0LCAwLCAxMzQ0OCwgMCwgMCwgMCwgMTM0NTEsIDEzNDU1LCAxMzQ1OSwgMTM0NjMsIDAsIDAsIAorICAgIDEzNDY2LCAxMzQ3MCwgMTM0NzQsIDEzNDc5LCAxMzQ4MywgMTM0ODgsIDEzNDkyLCAxMzQ5NywgMTM1MDIsIDAsIDAsIAorICAgIDEzNTA4LCAxMzUxMiwgMCwgMCwgMTM1MTcsIDEzNTIxLCAxMzUyNiwgMTM1MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNTM2LCAwLCAwLCAwLCAwLCAxMzU0MiwgMTM1NDYsIDAsIDEzNTUwLCAxMzU1NCwgMTM1NTksIDEzNTY0LCAxMzU2OSwgMCwgCisgICAgMCwgMTM1NzUsIDEzNTc5LCAxMzU4MiwgMTM1ODUsIDEzNTg4LCAxMzU5MSwgMTM1OTQsIDEzNTk3LCAxMzYwMSwgMTM2MDQsIAorICAgIDEzNjA4LCAxMzYxNiwgMTM2MjUsIDEzNjI5LCAxMzYzMywgMTM2MzksIDEzNjQ1LCAxMzY1MSwgMTM2NTcsIDEzNjcxLCAKKyAgICAxMzY3OCwgMTM2ODEsIDAsIDAsIDAsIDAsIDAsIDEzNjg1LCAxMzY5MiwgMTM2OTcsIDAsIDEzNzAyLCAxMzcwNiwgMTM3MTEsIAorICAgIDEzNzE1LCAxMzcyMCwgMTM3MjQsIDAsIDAsIDAsIDAsIDEzNzI5LCAxMzczNCwgMCwgMCwgMTM3MzksIDEzNzQ0LCAxMzc0OSwgCisgICAgMTM3NTMsIDEzNzU4LCAxMzc2MywgMTM3NjgsIDEzNzczLCAxMzc3OCwgMTM3ODMsIDEzNzg4LCAxMzc5MywgMTM3OTgsIAorICAgIDEzODAzLCAxMzgwOCwgMTM4MTMsIDEzODE4LCAxMzgyMywgMTM4MjgsIDEzODMzLCAxMzgzOCwgMTM4NDMsIDAsIDEzODQ3LCAKKyAgICAxMzg1MSwgMTM4NTYsIDEzODYxLCAxMzg2NiwgMTM4NzAsIDEzODc0LCAwLCAxMzg3OSwgMTM4ODMsIDAsIDEzODg4LCAKKyAgICAxMzg5MywgMCwgMTM4OTgsIDEzOTAzLCAwLCAwLCAxMzkwNywgMCwgMTM5MTIsIDEzOTE4LCAxMzkyMywgMTM5MjksIAorICAgIDEzOTM0LCAwLCAwLCAwLCAwLCAxMzk0MCwgMTM5NDYsIDAsIDAsIDEzOTUyLCAxMzk1OCwgMTM5NjQsIDAsIDAsIDAsIAorICAgIDEzOTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzk3NCwgMTM5NzksIDEzOTg0LCAxMzk4OSwgMCwgMTM5OTQsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzOTk5LCAxNDAwNCwgMTQwMDgsIDE0MDEyLCAxNDAxNiwgMTQwMjAsIDE0MDI0LCAxNDAyOCwgCisgICAgMTQwMzMsIDE0MDM3LCAxNDA0MiwgMTQwNDYsIDE0MDUwLCAxNDA1NCwgMTQwNTgsIDE0MDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNDA2OSwgMTQwNzQsIDE0MDc5LCAwLCAxNDA4NCwgMTQwODgsIDE0MDkzLCAxNDA5NywgMTQxMDIsIAorICAgIDE0MTA2LCAxNDExMSwgMTQxMTYsIDE0MTIxLCAwLCAxNDEyNywgMTQxMzEsIDE0MTM2LCAwLCAxNDE0MiwgMTQxNDYsIAorICAgIDE0MTUxLCAxNDE1NSwgMTQxNjAsIDE0MTY1LCAxNDE3MCwgMTQxNzUsIDE0MTgwLCAxNDE4NSwgMTQxOTAsIDE0MTk1LCAKKyAgICAxNDIwMCwgMTQyMDUsIDE0MjEwLCAxNDIxNSwgMTQyMjAsIDE0MjI1LCAxNDIzMCwgMTQyMzUsIDE0MjQwLCAxNDI0NSwgMCwgCisgICAgMTQyNDksIDE0MjUzLCAxNDI1OCwgMTQyNjMsIDE0MjY4LCAxNDI3MiwgMTQyNzYsIDAsIDE0MjgxLCAxNDI4NSwgMCwgCisgICAgMTQyOTAsIDE0Mjk1LCAxNDMwMCwgMTQzMDUsIDE0MzEwLCAwLCAwLCAxNDMxNCwgMTQzMTksIDE0MzI0LCAxNDMzMCwgCisgICAgMTQzMzUsIDE0MzQxLCAxNDM0NiwgMTQzNTIsIDE0MzU4LCAxNDM2NSwgMCwgMTQzNzIsIDE0Mzc3LCAxNDM4MywgMCwgCisgICAgMTQzOTAsIDE0Mzk1LCAxNDQwMSwgMCwgMCwgMTQ0MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE0NDEwLCAxNDQxNiwgMTQ0MjIsIDE0NDI4LCAwLCAwLCAxNDQzNSwgMTQ0NDAsIDE0NDQ0LCAxNDQ0OCwgCisgICAgMTQ0NTIsIDE0NDU2LCAxNDQ2MCwgMTQ0NjQsIDE0NDY5LCAxNDQ3MywgMTQ0NzgsIDE0NDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNDQ4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0OTMsIDE0NDk4LCAxNDUwMywgMCwgMTQ1MDgsIDE0NTEyLCAKKyAgICAxNDUxNywgMTQ1MjEsIDE0NTI2LCAxNDUzMCwgMTQ1MzUsIDE0NTQwLCAwLCAwLCAxNDU0NSwgMTQ1NDksIDAsIDAsIAorICAgIDE0NTU0LCAxNDU1OCwgMTQ1NjMsIDE0NTY3LCAxNDU3MiwgMTQ1NzcsIDE0NTgyLCAxNDU4NywgMTQ1OTIsIDE0NTk3LCAKKyAgICAxNDYwMiwgMTQ2MDcsIDE0NjEyLCAxNDYxNywgMTQ2MjIsIDE0NjI3LCAxNDYzMiwgMTQ2MzcsIDE0NjQyLCAxNDY0NywgCisgICAgMTQ2NTIsIDE0NjU3LCAwLCAxNDY2MSwgMTQ2NjUsIDE0NjcwLCAxNDY3NSwgMTQ2ODAsIDE0Njg0LCAxNDY4OCwgMCwgCisgICAgMTQ2OTMsIDE0Njk3LCAwLCAxNDcwMiwgMTQ3MDcsIDE0NzEyLCAxNDcxNywgMTQ3MjIsIDAsIDAsIDE0NzI2LCAxNDczMSwgCisgICAgMTQ3MzYsIDE0NzQyLCAxNDc0NywgMTQ3NTMsIDE0NzU4LCAxNDc2NCwgMTQ3NzAsIDAsIDAsIDE0Nzc3LCAxNDc4MiwgMCwgCisgICAgMCwgMTQ3ODgsIDE0NzkzLCAxNDc5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4MDQsIDE0ODExLCAwLCAwLCAwLCAwLCAKKyAgICAxNDgxOCwgMTQ4MjMsIDAsIDE0ODI4LCAxNDgzMywgMTQ4MzksIDE0ODQ1LCAxNDg1MSwgMCwgMCwgMTQ4NTgsIDE0ODYzLCAKKyAgICAxNDg2NywgMTQ4NzEsIDE0ODc1LCAxNDg3OSwgMTQ4ODMsIDE0ODg3LCAxNDg5MiwgMTQ4OTYsIDE0OTAxLCAxNDkwNSwgCisgICAgMTQ5MTAsIDE0OTE3LCAxNDkyNCwgMTQ5MzEsIDE0OTM4LCAxNDk0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ5NTIsIDE0OTU2LCAwLCAxNDk2MCwgMTQ5NjMsIDE0OTY3LCAxNDk3MCwgMTQ5NzQsIDE0OTc3LCAwLCAwLCAwLCAKKyAgICAxNDk4MSwgMTQ5ODQsIDE0OTg4LCAwLCAxNDk5MiwgMTQ5OTUsIDE0OTk5LCAxNTAwMywgMCwgMCwgMCwgMTUwMDYsIAorICAgIDE1MDEwLCAwLCAxNTAxNCwgMCwgMTUwMTgsIDE1MDIyLCAwLCAwLCAwLCAxNTAyNiwgMTUwMzAsIDAsIDAsIDAsIDE1MDM0LCAKKyAgICAxNTAzNywgMTUwNDEsIDAsIDAsIDAsIDE1MDQ0LCAxNTA0NywgMTUwNTAsIDE1MDU0LCAxNTA1OCwgMTUwNjEsIDE1MDY1LCAKKyAgICAxNTA2OSwgMTUwNzMsIDE1MDc3LCAxNTA4MSwgMTUwODUsIDAsIDAsIDAsIDAsIDE1MDg4LCAxNTA5MywgMTUwOTcsIAorICAgIDE1MTAyLCAxNTEwNiwgMCwgMCwgMCwgMTUxMTEsIDE1MTE1LCAxNTEyMCwgMCwgMTUxMjUsIDE1MTI5LCAxNTEzNCwgCisgICAgMTUxMzksIDAsIDAsIDE1MTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTUxNTIsIDE1MTU2LCAxNTE1OSwgMTUxNjIsIDE1MTY1LCAxNTE2OCwgMTUxNzEsIDE1MTc0LCAKKyAgICAxNTE3OCwgMTUxODEsIDE1MTg1LCAxNTE4OSwgMTUxOTQsIDE1MTk5LCAxNTIwMywgMTUyMDcsIDE1MjExLCAxNTIxNSwgCisgICAgMTUyMTksIDE1MjI0LCAxNTIyOCwgMCwgMCwgMCwgMCwgMCwgMTUyMzEsIDE1MjM3LCAxNTI0MSwgMTUyNDUsIDAsIDE1MjQ5LCAKKyAgICAxNTI1MiwgMTUyNTYsIDE1MjU5LCAxNTI2MywgMTUyNjYsIDE1MjcwLCAxNTI3NCwgMCwgMTUyNzgsIDE1MjgxLCAxNTI4NSwgCisgICAgMCwgMTUyODksIDE1MjkyLCAxNTI5NiwgMTUzMDAsIDE1MzAzLCAxNTMwNywgMTUzMTEsIDE1MzE1LCAxNTMxOSwgMTUzMjMsIAorICAgIDE1MzI3LCAxNTMzMSwgMTUzMzUsIDE1MzM5LCAxNTM0MywgMTUzNDcsIDE1MzUxLCAxNTM1NSwgMTUzNTksIDE1MzYzLCAKKyAgICAxNTM2NywgMTUzNzEsIDE1Mzc1LCAwLCAxNTM3OCwgMTUzODEsIDE1Mzg1LCAxNTM4OSwgMTUzOTMsIDE1Mzk2LCAxNTM5OSwgCisgICAgMTU0MDMsIDE1NDA3LCAxNTQxMCwgMTU0MTQsIDE1NDE4LCAxNTQyMiwgMTU0MjYsIDE1NDMwLCAxNTQzNCwgMCwgMCwgMCwgCisgICAgMTU0MzcsIDE1NDQxLCAxNTQ0NiwgMTU0NTAsIDE1NDU1LCAxNTQ1OSwgMTU0NjQsIDE1NDY5LCAwLCAxNTQ3NSwgMTU0NzksIAorICAgIDE1NDg0LCAwLCAxNTQ4OSwgMTU0OTMsIDE1NDk4LCAxNTUwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1MDcsIDE1NTExLCAKKyAgICAwLCAxNTUxNywgMTU1MjEsIDE1NTI1LCAwLCAwLCAwLCAwLCAwLCAxNTUyOSwgMTU1MzQsIDE1NTM5LCAxNTU0NCwgMCwgMCwgCisgICAgMTU1NTAsIDE1NTU0LCAxNTU1NywgMTU1NjAsIDE1NTYzLCAxNTU2NiwgMTU1NjksIDE1NTcyLCAxNTU3NiwgMTU1NzksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTgzLCAxNTU5NiwgMTU2MDgsIDE1NjIwLCAxNTYzMiwgMTU2NDQsIDE1NjU2LCAKKyAgICAxNTY2OCwgMTU2NzIsIDE1Njc5LCAxNTY4NCwgMTU2ODksIDAsIDE1Njk0LCAxNTY5OCwgMTU3MDMsIDE1NzA3LCAxNTcxMiwgCisgICAgMTU3MTYsIDE1NzIxLCAxNTcyNiwgMCwgMTU3MzEsIDE1NzM1LCAxNTc0MCwgMCwgMTU3NDUsIDE1NzQ5LCAxNTc1NCwgCisgICAgMTU3NTksIDE1NzYzLCAxNTc2OCwgMTU3NzMsIDE1Nzc4LCAxNTc4MywgMTU3ODgsIDE1NzkzLCAxNTc5OCwgMTU4MDMsIAorICAgIDE1ODA4LCAxNTgxMywgMTU4MTgsIDE1ODIzLCAxNTgyOCwgMTU4MzMsIDE1ODM4LCAxNTg0MywgMTU4NDgsIDE1ODUzLCAwLCAKKyAgICAxNTg1NywgMTU4NjEsIDE1ODY2LCAxNTg3MSwgMTU4NzYsIDE1ODgwLCAxNTg4NCwgMTU4ODksIDE1ODk0LCAxNTg5OCwgMCwgCisgICAgMTU5MDMsIDE1OTA4LCAxNTkxMywgMTU5MTgsIDE1OTIzLCAwLCAwLCAxNTkyNywgMTU5MzIsIDE1OTM3LCAxNTk0MywgCisgICAgMTU5NDgsIDE1OTU0LCAxNTk1OSwgMTU5NjUsIDE1OTcxLCAwLCAxNTk3OCwgMTU5ODMsIDE1OTg5LCAwLCAxNTk5NSwgCisgICAgMTYwMDAsIDE2MDA2LCAxNjAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwMTcsIDE2MDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNjAyOSwgMCwgMTYwMzQsIDE2MDQwLCAxNjA0NiwgMTYwNTIsIDAsIDAsIDE2MDU5LCAxNjA2NCwgMTYwNjgsIAorICAgIDE2MDcyLCAxNjA3NiwgMTYwODAsIDE2MDg0LCAxNjA4OCwgMTYwOTMsIDE2MDk3LCAwLCAxNjEwMiwgMTYxMDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MTEyLCAxNjExNiwgMTYxMjAsIDAsIDE2MTI0LCAxNjEyNywgCisgICAgMTYxMzEsIDE2MTM0LCAxNjEzOCwgMTYxNDEsIDE2MTQ1LCAxNjE0OSwgMCwgMTYxNTMsIDE2MTU2LCAxNjE2MCwgMCwgCisgICAgMTYxNjQsIDE2MTY3LCAxNjE3MSwgMTYxNzUsIDE2MTc4LCAxNjE4MiwgMTYxODYsIDE2MTkwLCAxNjE5NCwgMTYxOTgsIAorICAgIDE2MjAyLCAxNjIwNiwgMTYyMTAsIDE2MjE0LCAxNjIxOCwgMTYyMjIsIDE2MjI2LCAxNjIzMCwgMTYyMzQsIDE2MjM4LCAKKyAgICAxNjI0MiwgMTYyNDYsIDE2MjUwLCAxNjI1MywgMTYyNTcsIDE2MjYwLCAxNjI2NCwgMTYyNjgsIDE2MjcyLCAxNjI3NSwgCisgICAgMTYyNzgsIDE2MjgyLCAxNjI4NiwgMTYyODksIDE2MjkzLCAxNjI5NywgMTYzMDEsIDE2MzA1LCAxNjMwOSwgMTYzMTMsIAorICAgIDE2MzE2LCAwLCAwLCAxNjMyMCwgMTYzMjQsIDE2MzI5LCAxNjMzMywgMTYzMzgsIDE2MzQyLCAxNjM0NywgMTYzNTIsIDAsIAorICAgIDE2MzU4LCAxNjM2MiwgMTYzNjcsIDAsIDE2MzcyLCAxNjM3NiwgMTYzODEsIDE2Mzg2LCAxNjM5MCwgMTYzOTUsIDAsIDAsIAorICAgIDAsIDAsIDE2Mzk5LCAxNjQwNSwgMTY0MTEsIDE2NDE3LCAxNjQyMywgMTY0MjksIDE2NDM1LCAxNjQ0MSwgMTY0NDcsIAorICAgIDE2NDUzLCAxNjQ1OSwgMTY0NjUsIDE2NDcxLCAxNjQ3NiwgMTY0ODEsIDE2NDg2LCAwLCAwLCAxNjQ5MiwgMTY0OTYsIAorICAgIDE2NDk5LCAxNjUwMiwgMTY1MDUsIDE2NTA4LCAxNjUxMSwgMTY1MTQsIDE2NTE4LCAxNjUyMSwgMTY1MjUsIDE2NTI5LCAKKyAgICAxNjUzNCwgMTY1MzksIDE2NTQ1LCAxNjU1MSwgMTY1NTcsIDE2NTYzLCAxNjU2OSwgMTY1NzUsIDE2NTc5LCAxNjU4NSwgCisgICAgMTY1OTEsIDE2NTk3LCAxNjYwMiwgMTY2MDgsIDAsIDAsIDE2NjE0LCAxNjYxOCwgMCwgMTY2MjIsIDE2NjI2LCAxNjYzMCwgCisgICAgMTY2MzQsIDE2NjM4LCAxNjY0MiwgMTY2NDYsIDE2NjUwLCAxNjY1NCwgMTY2NTgsIDE2NjYyLCAxNjY2NiwgMTY2NzAsIAorICAgIDE2Njc0LCAxNjY3OCwgMTY2ODIsIDE2Njg2LCAxNjY5MCwgMCwgMCwgMCwgMTY2OTQsIDE2NzAwLCAxNjcwNiwgMTY3MTIsIAorICAgIDE2NzE4LCAxNjcyNCwgMTY3MzAsIDE2NzM2LCAxNjc0MiwgMTY3NDgsIDE2NzU0LCAxNjc2MCwgMTY3NjgsIDE2Nzc0LCAKKyAgICAxNjc4MCwgMTY3ODYsIDE2NzkyLCAxNjc5OCwgMTY4MDQsIDE2ODEwLCAxNjgxNiwgMTY4MjIsIDE2ODI4LCAxNjgzNCwgMCwgCisgICAgMTY4NDAsIDE2ODQ2LCAxNjg1MiwgMTY4NTgsIDE2ODY0LCAxNjg3MCwgMTY4NzQsIDE2ODgwLCAxNjg4NCwgMCwgMTY4ODgsIAorICAgIDAsIDAsIDE2ODk0LCAxNjg5OCwgMTY5MDQsIDE2OTEwLCAxNjkxNiwgMTY5MjAsIDE2OTI2LCAwLCAwLCAwLCAxNjkzMCwgMCwgCisgICAgMCwgMCwgMCwgMTY5MzQsIDE2OTM5LCAxNjk0NiwgMTY5NTMsIDE2OTYwLCAxNjk2NywgMCwgMTY5NzQsIDAsIDE2OTgxLCAKKyAgICAxNjk4NiwgMTY5OTEsIDE2OTk4LCAxNzAwNSwgMTcwMTQsIDE3MDI1LCAxNzAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwMzksIAorICAgIDE3MDQ1LCAxNzA1MCwgMTcwNTUsIDE3MDYwLCAxNzA2NSwgMTcwNzAsIDE3MDc1LCAxNzA4MSwgMTcwODYsIDAsIDAsIAorICAgIDE3MDkyLCAxNzA5OSwgMTcxMDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MTExLCAxNzExOCwgCisgICAgMTcxMjUsIDE3MTMyLCAxNzEzOSwgMTcxNDYsIDE3MTUzLCAxNzE2MCwgMTcxNjcsIDE3MTc0LCAxNzE4MSwgMTcxODgsIAorICAgIDE3MTk1LCAxNzIwMiwgMTcyMDksIDE3MjE2LCAxNzIyMywgMTcyMzAsIDE3MjM3LCAxNzI0NCwgMTcyNTEsIDE3MjU4LCAKKyAgICAxNzI2NSwgMTcyNzIsIDE3Mjc5LCAxNzI4NiwgMTcyOTMsIDE3MzAwLCAxNzMwNywgMTczMTQsIDE3MzIxLCAxNzMyOCwgCisgICAgMTczMzUsIDE3MzQxLCAxNzM0OCwgMTczNTUsIDE3MzYwLCAxNzM2NywgMTczNzIsIDE3Mzc5LCAxNzM4NiwgMTczOTMsIAorICAgIDE3NDAwLCAxNzQwNywgMTc0MTQsIDE3NDIwLCAxNzQyNywgMTc0MzIsIDE3NDM4LCAxNzQ0NSwgMTc0NTIsIDE3NDU5LCAKKyAgICAxNzQ2NSwgMTc0NzIsIDE3NDc5LCAxNzQ4NiwgMTc0OTIsIDE3NDk5LCAwLCAwLCAwLCAwLCAxNzUwNCwgMTc1MTEsIAorICAgIDE3NTE3LCAxNzUyNCwgMTc1MzAsIDE3NTM5LCAxNzU0OCwgMTc1NTMsIDE3NTU4LCAxNzU2MywgMTc1NzAsIDE3NTc3LCAKKyAgICAxNzU4NCwgMTc1OTEsIDE3NTk2LCAxNzYwMSwgMTc2MDYsIDE3NjExLCAxNzYxNiwgMTc2MjAsIDE3NjI0LCAxNzYyOCwgCisgICAgMTc2MzIsIDE3NjM2LCAxNzY0MCwgMTc2NDUsIDE3NjQ5LCAxNzY1NCwgMTc2NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE3NjY0LCAxNzY2OSwgMCwgMTc2NzYsIDAsIDAsIDE3NjgzLCAxNzY4OCwgMCwgMTc2OTMsIDAsIAorICAgIDAsIDE3NzAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzcwNSwgMTc3MTAsIDE3NzE0LCAxNzcyMSwgMCwgMTc3MjgsIDE3NzMzLCAKKyAgICAxNzczOCwgMTc3NDMsIDE3NzUwLCAxNzc1NywgMTc3NjQsIDAsIDE3NzcxLCAxNzc3NiwgMTc3ODEsIDAsIDE3Nzg4LCAwLCAKKyAgICAxNzc5NSwgMCwgMCwgMTc4MDAsIDE3ODA3LCAwLCAxNzgxNCwgMTc4MTgsIDE3ODI1LCAxNzgyOSwgMTc4MzQsIDE3ODQyLCAKKyAgICAxNzg0OCwgMTc4NTQsIDE3ODU5LCAxNzg2NSwgMTc4NzEsIDE3ODc3LCAxNzg4MiwgMCwgMTc4ODgsIDE3ODk2LCAxNzkwMywgCisgICAgMCwgMCwgMTc5MTAsIDE3OTE1LCAxNzkyMSwgMTc5MjYsIDE3OTMyLCAwLCAxNzkzOCwgMCwgMTc5NDMsIDE3OTUwLCAKKyAgICAxNzk1NywgMTc5NjQsIDE3OTcxLCAxNzk3NiwgMCwgMCwgMTc5ODAsIDE3OTg1LCAxNzk4OSwgMTc5OTMsIDE3OTk3LCAKKyAgICAxODAwMSwgMTgwMDUsIDE4MDA5LCAxODAxNCwgMTgwMTgsIDAsIDAsIDE4MDIzLCAxODAyOSwgMTgwMzUsIDE4MDQyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODA0OSwgMTgwNTMsIDE4MDY0LCAxODA3OSwgMTgwOTQsIDE4MTA0LCAxODExNSwgCisgICAgMTgxMjgsIDE4MTM5LCAxODE0NSwgMTgxNTMsIDE4MTYzLCAxODE2OSwgMTgxNzcsIDE4MTgxLCAxODE4NywgMTgxOTMsIAorICAgIDE4MjAxLCAxODIxMSwgMTgyMTksIDE4MjMyLCAxODIzOCwgMTgyNDYsIDE4MjU0LCAxODI2NiwgMTgyNzMsIDE4MjgxLCAKKyAgICAxODI4OSwgMTgyOTcsIDE4MzA1LCAxODMxMywgMTgzMjEsIDE4MzMxLCAxODMzNSwgMTgzMzgsIDE4MzQxLCAxODM0NCwgCisgICAgMTgzNDcsIDE4MzUwLCAxODM1MywgMTgzNTcsIDE4MzYwLCAxODM2NCwgMTgzNjgsIDE4MzcyLCAxODM3NiwgMTgzODAsIAorICAgIDE4Mzg0LCAxODM4OCwgMTgzOTMsIDE4Mzk3LCAxODQwMiwgMTg0MDcsIDE4NDEzLCAxODQyMywgMTg0MzcsIDE4NDQ3LCAKKyAgICAxODQ1MywgMTg0NTksIDE4NDY3LCAxODQ3NSwgMTg0ODMsIDE4NDkxLCAxODQ5NywgMTg1MDMsIDE4NTA2LCAxODUxMCwgCisgICAgMTg1MTQsIDE4NTE4LCAxODUyMiwgMTg1MjYsIDE4NTMwLCAwLCAxODUzNCwgMTg1MzgsIDE4NTQyLCAxODU0NiwgMTg1NTAsIAorICAgIDE4NTU0LCAxODU1OCwgMTg1NjIsIDE4NTY2LCAxODU3MCwgMTg1NzQsIDE4NTc3LCAxODU4MCwgMTg1ODQsIDE4NTg4LCAKKyAgICAxODU5MiwgMTg1OTUsIDE4NTk5LCAxODYwMywgMTg2MDcsIDE4NjExLCAxODYxNSwgMTg2MTksIDE4NjIzLCAxODYyNywgCisgICAgMTg2MzAsIDE4NjM0LCAxODYzNywgMTg2NDEsIDE4NjQ1LCAxODY0OSwgMTg2NTIsIDE4NjU1LCAxODY1OSwgMTg2NjUsIAorICAgIDE4NjY5LCAwLCAwLCAwLCAwLCAxODY3MywgMTg2NzgsIDE4NjgyLCAxODY4NywgMTg2OTEsIDE4Njk2LCAxODcwMSwgCisgICAgMTg3MDcsIDE4NzEyLCAxODcxOCwgMTg3MjIsIDE4NzI3LCAxODczMSwgMTg3MzYsIDE4NzQ2LCAxODc1MiwgMTg3NTgsIAorICAgIDE4NzY1LCAxODc3NSwgMTg3ODEsIDE4Nzg1LCAxODc4OSwgMTg3OTUsIDE4ODAxLCAxODgwOSwgMTg4MTUsIDE4ODIzLCAKKyAgICAxODgzMSwgMTg4MzksIDE4ODQ5LCAxODg1NywgMTg4NjcsIDE4ODcyLCAxODg3OCwgMTg4ODQsIDE4ODkwLCAxODg5NiwgCisgICAgMTg5MDIsIDE4OTA4LCAwLCAxODkxNCwgMTg5MjAsIDE4OTI2LCAxODkzMiwgMTg5MzgsIDE4OTQ0LCAxODk1MCwgMTg5NTYsIAorICAgIDE4OTYyLCAxODk2OCwgMTg5NzQsIDE4OTc5LCAxODk4NCwgMTg5OTAsIDE4OTk2LCAxOTAwMiwgMTkwMDcsIDE5MDEzLCAKKyAgICAxOTAxOSwgMTkwMjUsIDE5MDMxLCAxOTAzNywgMTkwNDMsIDE5MDQ5LCAxOTA1NSwgMTkwNjAsIDE5MDY2LCAxOTA3MSwgCisgICAgMTkwNzcsIDE5MDgzLCAxOTA4OSwgMTkwOTQsIDE5MDk5LCAxOTEwNSwgMTkxMTMsIDE5MTIwLCAwLCAxOTEyOCwgMTkxMzUsIAorICAgIDE5MTQ4LCAxOTE1NSwgMTkxNjIsIDE5MTcwLCAxOTE3OCwgMTkxODQsIDE5MTkwLCAxOTE5NiwgMTkyMDYsIDE5MjExLCAKKyAgICAxOTIxNywgMTkyMjcsIDE5MjM3LCAwLCAxOTI0NywgMTkyNTcsIDE5MjY1LCAxOTI3NywgMTkyODksIDE5Mjk1LCAxOTMwOSwgCisgICAgMTkzMjQsIDE5MzI5LCAxOTMzNCwgMTkzNDIsIDE5MzUwLCAxOTM1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTkzNjYsIDE5MzY5LCAxOTM3MywgMTkzNzcsIDE5MzgxLCAxOTM4NSwgMTkzODksIDE5MzkzLCAxOTM5NywgCisgICAgMTk0MDEsIDE5NDA1LCAxOTQwOSwgMTk0MTMsIDE5NDE3LCAxOTQyMSwgMTk0MjUsIDE5NDI5LCAxOTQzMywgMTk0MzcsIAorICAgIDE5NDQxLCAxOTQ0NSwgMTk0NDgsIDE5NDUxLCAxOTQ1NSwgMTk0NTksIDE5NDYzLCAxOTQ2NiwgMTk0NjksIDE5NDczLCAKKyAgICAxOTQ3NiwgMTk0ODAsIDE5NDg0LCAxOTQ4NywgMTk0OTEsIDE5NDk0LCAxOTQ5OSwgMTk1MDIsIDE5NTA2LCAxOTUwOSwgCisgICAgMTk1MTMsIDE5NTE2LCAxOTUyMSwgMTk1MjQsIDE5NTI4LCAxOTUzNSwgMTk1NDAsIDE5NTQ0LCAxOTU0OSwgMTk1NTMsIAorICAgIDE5NTU4LCAxOTU2MiwgMTk1NjcsIDE5NTc0LCAxOTU4MCwgMTk1ODUsIDE5NTg5LCAxOTU5MywgMTk1OTcsIDE5NjAxLCAKKyAgICAxOTYwNSwgMTk2MTAsIDE5NjE2LCAxOTYyMiwgMTk2MjcsIDE5NjMzLCAxOTYzNywgMTk2NDAsIDE5NjQzLCAxOTY0NiwgCisgICAgMTk2NDksIDE5NjUyLCAxOTY1NSwgMTk2NTksIDE5NjYyLCAxOTY2NiwgMTk2NzIsIDE5Njc2LCAxOTY4MCwgMTk2ODQsIAorICAgIDE5Njg4LCAxOTY5MiwgMTk2OTYsIDE5NzAwLCAxOTcwNCwgMTk3MDksIDE5NzEzLCAxOTcxOCwgMTk3MjMsIDE5NzI5LCAKKyAgICAxOTczNCwgMTk3NDAsIDE5NzQ2LCAxOTc1MiwgMTk3NTgsIDE5NzY0LCAxOTc3MSwgMTk3NzgsIDE5Nzg1LCAxOTc5MywgCisgICAgMTk4MDIsIDE5ODExLCAxOTgyMiwgMTk4MzIsIDE5ODQyLCAxOTg1MywgMTk4NjQsIDE5ODc0LCAxOTg4NCwgMTk4OTQsIAorICAgIDE5OTA0LCAxOTkxNCwgMTk5MjQsIDE5OTM0LCAxOTk0NCwgMTk5NTIsIDE5OTU5LCAxOTk2NSwgMTk5NzIsIDE5OTc3LCAKKyAgICAxOTk4MywgMTk5ODksIDE5OTk1LCAyMDAwMSwgMjAwMDcsIDIwMDEzLCAyMDAxOCwgMjAwMjQsIDIwMDMwLCAyMDAzNiwgCisgICAgMjAwNDIsIDIwMDQ3LCAyMDA1NSwgMjAwNjIsIDIwMDY4LCAyMDA3NSwgMjAwODMsIDIwMDg5LCAyMDA5NSwgMjAxMDEsIAorICAgIDIwMTA3LCAyMDExNSwgMjAxMjMsIDIwMTMzLCAyMDE0MSwgMjAxNDksIDIwMTU1LCAyMDE2MCwgMjAxNjUsIDIwMTcwLCAKKyAgICAyMDE3NSwgMjAxODAsIDIwMTg1LCAyMDE5MSwgMjAxOTYsIDIwMjAyLCAyMDIwOCwgMjAyMTQsIDIwMjIwLCAyMDIyNywgCisgICAgMjAyMzIsIDIwMjM4LCAyMDI0MywgMjAyNDgsIDIwMjUzLCAyMDI1OCwgMjAyNjMsIDIwMjY4LCAyMDI3MywgMjAyNzgsIAorICAgIDIwMjgzLCAyMDI4OCwgMjAyOTMsIDIwMjk4LCAyMDMwMywgMjAzMDgsIDIwMzEzLCAyMDMxOCwgMjAzMjMsIDIwMzI4LCAKKyAgICAyMDMzMywgMjAzMzgsIDIwMzQzLCAyMDM0OCwgMjAzNTMsIDIwMzU4LCAyMDM2MywgMjAzNjgsIDIwMzczLCAyMDM3OCwgCisgICAgMjAzODMsIDIwMzg4LCAyMDM5MywgMjAzOTgsIDIwNDAzLCAyMDQwOCwgMjA0MTMsIDIwNDE4LCAyMDQyMywgMCwgMjA0MjgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDIwNDMzLCAwLCAwLCAyMDQzOCwgMjA0NDIsIDIwNDQ2LCAyMDQ1MCwgMjA0NTQsIDIwNDU4LCAKKyAgICAyMDQ2MiwgMjA0NjYsIDIwNDcwLCAyMDQ3NCwgMjA0NzgsIDIwNDgyLCAyMDQ4NiwgMjA0OTAsIDIwNDk0LCAyMDQ5OCwgCisgICAgMjA1MDIsIDIwNTA2LCAyMDUxMCwgMjA1MTQsIDIwNTE4LCAyMDUyMiwgMjA1MjYsIDIwNTMwLCAyMDUzNCwgMjA1MzgsIAorICAgIDIwNTQyLCAyMDU0NiwgMjA1NTAsIDIwNTU0LCAyMDU1OCwgMjA1NjIsIDIwNTY2LCAyMDU3MCwgMjA1NzQsIDIwNTc4LCAKKyAgICAyMDU4MiwgMjA1ODYsIDIwNTkwLCAyMDU5NCwgMjA1OTgsIDIwNjAyLCAyMDYwOCwgMjA2MTIsIDIwNjE3LCAyMDYyMiwgCisgICAgMjA2MjYsIDIwNjMxLCAyMDYzNiwgMjA2NDAsIDIwNjQ0LCAyMDY0OCwgMjA2NTIsIDIwNjU2LCAyMDY2MCwgMjA2NjQsIAorICAgIDIwNjY4LCAyMDY3MiwgMjA2NzYsIDIwNjgwLCAyMDY4NCwgMjA2ODgsIDIwNjkyLCAyMDY5NiwgMjA3MDAsIDIwNzA0LCAKKyAgICAyMDcwOCwgMjA3MTIsIDIwNzE2LCAyMDcyMCwgMjA3MjQsIDIwNzI4LCAyMDczMiwgMjA3MzYsIDIwNzQwLCAyMDc0NCwgCisgICAgMjA3NDgsIDIwNzUyLCAyMDc1NiwgMjA3NjAsIDIwNzY0LCAyMDc2OCwgMjA3NzIsIDIwNzc2LCAyMDc4MCwgMjA3ODQsIAorICAgIDIwNzg4LCAyMDc5MiwgMjA3OTYsIDIwODAwLCAyMDgwNCwgMjA4MDgsIDIwODEyLCAyMDgxNiwgMjA4MjAsIDIwODI0LCAKKyAgICAyMDgyOCwgMjA4MzIsIDIwODM2LCAyMDg0MCwgMjA4NDQsIDIwODQ4LCAyMDg1MiwgMjA4NTYsIDIwODYwLCAyMDg2NCwgCisgICAgMjA4NjgsIDIwODcyLCAyMDg3NiwgMjA4ODAsIDIwODg0LCAyMDg4OCwgMjA4OTIsIDIwODk2LCAyMDkwMCwgMjA5MDQsIAorICAgIDIwOTA4LCAyMDkxMiwgMjA5MTYsIDIwOTIwLCAyMDkyNCwgMjA5MjgsIDIwOTMyLCAyMDkzNiwgMjA5NDAsIDIwOTQ0LCAKKyAgICAyMDk0OCwgMjA5NTIsIDIwOTU2LCAyMDk2MCwgMjA5NjQsIDIwOTY4LCAyMDk3MiwgMjA5NzYsIDIwOTgwLCAyMDk4NCwgCisgICAgMjA5ODgsIDIwOTkyLCAyMDk5NiwgMjEwMDAsIDIxMDA0LCAyMTAwOCwgMjEwMTIsIDIxMDE2LCAyMTAyMCwgMjEwMjQsIAorICAgIDIxMDI3LCAyMTAzMSwgMjEwMzQsIDIxMDM4LCAyMTA0MiwgMjEwNDUsIDIxMDQ5LCAyMTA1MywgMjEwNTYsIDIxMDYwLCAKKyAgICAyMTA2NCwgMjEwNjgsIDIxMDcyLCAyMTA3NSwgMjEwNzksIDIxMDgzLCAyMTA4NywgMjEwOTEsIDIxMDk1LCAyMTA5OSwgCisgICAgMjExMDIsIDIxMTA2LCAyMTExMCwgMjExMTQsIDIxMTE4LCAyMTEyMiwgMjExMjYsIDIxMTMwLCAyMTEzNCwgMjExMzgsIAorICAgIDIxMTQyLCAyMTE0NiwgMjExNTAsIDIxMTU0LCAyMTE1OCwgMjExNjIsIDIxMTY2LCAyMTE3MCwgMjExNzQsIDIxMTc4LCAKKyAgICAyMTE4MiwgMjExODYsIDIxMTkwLCAyMTE5NCwgMjExOTgsIDIxMjAyLCAyMTIwNiwgMjEyMTAsIDIxMjE0LCAyMTIxOCwgCisgICAgMjEyMjIsIDIxMjI2LCAyMTIzMCwgMjEyMzQsIDIxMjM4LCAyMTI0MiwgMjEyNDYsIDIxMjUwLCAyMTI1NCwgMjEyNTgsIAorICAgIDIxMjYyLCAyMTI2NiwgMjEyNzAsIDIxMjc0LCAyMTI3OCwgMjEyODIsIDIxMjg2LCAyMTI5MCwgMjEyOTQsIDIxMjk4LCAKKyAgICAyMTMwMiwgMjEzMDYsIDIxMzEwLCAyMTMxNCwgMjEzMTgsIDIxMzIyLCAyMTMyNiwgMjEzMzAsIDIxMzM0LCAyMTMzOCwgCisgICAgMjEzNDIsIDIxMzQ2LCAyMTM1MCwgMjEzNTQsIDIxMzU4LCAyMTM2MiwgMjEzNjYsIDIxMzcwLCAyMTM3NCwgMjEzNzgsIAorICAgIDIxMzgyLCAyMTM4NiwgMjEzOTAsIDIxMzk0LCAyMTM5OCwgMjE0MDIsIDIxNDA2LCAyMTQxMCwgMjE0MTQsIDIxNDE4LCAKKyAgICAyMTQyMiwgMjE0MjYsIDIxNDMwLCAyMTQzNCwgMjE0MzgsIDIxNDQyLCAyMTQ0NiwgMjE0NTAsIDIxNDU0LCAyMTQ1OCwgCisgICAgMjE0NjIsIDIxNDY2LCAyMTQ3MCwgMjE0NzQsIDIxNDc4LCAyMTQ4MiwgMjE0ODYsIDIxNDkwLCAyMTQ5NCwgMjE0OTgsIAorICAgIDIxNTAyLCAyMTUwNiwgMjE1MTAsIDIxNTE0LCAyMTUxOCwgMjE1MjIsIDIxNTI2LCAyMTUzMCwgMjE1MzQsIDIxNTM4LCAKKyAgICAyMTU0MiwgMjE1NDYsIDIxNTUwLCAyMTU1NCwgMjE1NTgsIDIxNTYyLCAyMTU2NiwgMjE1NzAsIDIxNTc0LCAyMTU3OCwgCisgICAgMjE1ODIsIDIxNTg2LCAyMTU5MCwgMjE1OTQsIDIxNTk4LCAyMTYwMiwgMjE2MDYsIDIxNjEwLCAyMTYxNCwgMjE2MTgsIAorICAgIDIxNjIyLCAyMTYyNiwgMjE2MzAsIDIxNjM0LCAyMTYzOCwgMjE2NDIsIDIxNjQ2LCAyMTY1MCwgMjE2NTQsIDIxNjU3LCAKKyAgICAyMTY2MSwgMjE2NjUsIDIxNjY5LCAyMTY3MywgMjE2NzcsIDIxNjgxLCAyMTY4NSwgMjE2ODgsIDIxNjkyLCAyMTY5NiwgCisgICAgMjE3MDAsIDIxNzA0LCAyMTcwOCwgMjE3MTIsIDIxNzE2LCAyMTcyMCwgMjE3MjQsIDIxNzI4LCAyMTczMiwgMjE3MzYsIAorICAgIDIxNzQwLCAyMTc0NCwgMjE3NDgsIDIxNzUxLCAyMTc1NSwgMjE3NTksIDIxNzYzLCAyMTc2NywgMjE3NzEsIDIxNzc1LCAKKyAgICAyMTc3OSwgMjE3ODMsIDIxNzg3LCAyMTc5MSwgMjE3OTUsIDIxNzk5LCAyMTgwMywgMjE4MDcsIDIxODExLCAyMTgxNSwgCisgICAgMjE4MTksIDIxODIzLCAyMTgyNywgMjE4MzEsIDIxODM1LCAyMTgzOSwgMjE4NDMsIDIxODQ3LCAyMTg1MSwgMjE4NTUsIAorICAgIDIxODU5LCAyMTg2MywgMjE4NjcsIDIxODcxLCAyMTg3NSwgMjE4NzksIDIxODgzLCAyMTg4NywgMjE4OTEsIDIxODk1LCAKKyAgICAyMTg5OSwgMjE5MDMsIDIxOTA3LCAyMTkxMSwgMjE5MTUsIDIxOTE5LCAyMTkyMywgMjE5MjcsIDIxOTMxLCAyMTkzNSwgCisgICAgMjE5MzksIDAsIDIxOTQzLCAyMTk0NywgMjE5NTEsIDIxOTU1LCAwLCAwLCAyMTk1OSwgMjE5NjMsIDIxOTY3LCAyMTk3MSwgCisgICAgMjE5NzUsIDIxOTc5LCAyMTk4MywgMCwgMjE5ODcsIDAsIDIxOTkxLCAyMTk5NSwgMjE5OTksIDIyMDAzLCAwLCAwLCAKKyAgICAyMjAwNywgMjIwMTEsIDIyMDE1LCAyMjAxOSwgMjIwMjMsIDIyMDI3LCAyMjAzMSwgMjIwMzUsIDIyMDM5LCAyMjA0MywgCisgICAgMjIwNDcsIDIyMDUxLCAyMjA1NSwgMjIwNTksIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgMjIwODMsIAorICAgIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk4LCAyMjEwMiwgMjIxMDYsIDIyMTEwLCAyMjExNCwgMjIxMTgsIDIyMTIyLCAKKyAgICAyMjEyNiwgMjIxMzAsIDIyMTM0LCAyMjEzOCwgMjIxNDIsIDIyMTQ2LCAyMjE1MCwgMjIxNTQsIDIyMTU4LCAyMjE2MiwgCisgICAgMjIxNjYsIDAsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAwLCAwLCAyMjE4NiwgMjIxODksIDIyMTkzLCAyMjE5NywgCisgICAgMjIyMDEsIDIyMjA1LCAyMjIwOSwgMjIyMTMsIDIyMjE3LCAyMjIyMSwgMjIyMjUsIDIyMjI5LCAyMjIzMywgMjIyMzcsIAorICAgIDIyMjQxLCAyMjI0NSwgMjIyNDksIDIyMjU0LCAyMjI1OSwgMjIyNjQsIDIyMjcwLCAyMjI3NiwgMjIyODEsIDIyMjg2LCAKKyAgICAyMjI5MiwgMjIyOTUsIDIyMjk5LCAyMjMwMywgMjIzMDcsIDIyMzExLCAyMjMxNSwgMjIzMTksIDIyMzIzLCAwLCAyMjMyNywgCisgICAgMjIzMzEsIDIyMzM1LCAyMjMzOSwgMCwgMCwgMjIzNDMsIDIyMzQ3LCAyMjM1MSwgMjIzNTUsIDIyMzU5LCAyMjM2MywgCisgICAgMjIzNjcsIDAsIDIyMzcxLCAwLCAyMjM3NSwgMjIzNzksIDIyMzgzLCAyMjM4NywgMCwgMCwgMjIzOTEsIDIyMzk1LCAKKyAgICAyMjM5OSwgMjI0MDMsIDIyNDA3LCAyMjQxMSwgMjI0MTUsIDIyNDE5LCAyMjQyMywgMjI0MjgsIDIyNDMzLCAyMjQzOCwgCisgICAgMjI0NDQsIDIyNDUwLCAyMjQ1NSwgMCwgMjI0NjAsIDIyNDY0LCAyMjQ2OCwgMjI0NzIsIDIyNDc2LCAyMjQ4MCwgMjI0ODQsIAorICAgIDIyNDg4LCAyMjQ5MiwgMjI0OTYsIDIyNTAwLCAyMjUwNCwgMjI1MDgsIDIyNTEyLCAyMjUxNiwgMjI1MjAsIDIyNTI0LCAKKyAgICAyMjUyNywgMjI1MzEsIDIyNTM1LCAyMjUzOSwgMjI1NDMsIDIyNTQ3LCAyMjU1MSwgMjI1NTUsIDIyNTU5LCAyMjU2MywgCisgICAgMjI1NjcsIDIyNTcxLCAyMjU3NSwgMjI1NzksIDIyNTgzLCAyMjU4NywgMjI1OTEsIDIyNTk1LCAyMjU5OSwgMjI2MDMsIAorICAgIDIyNjA3LCAyMjYxMSwgMjI2MTUsIDIyNjE5LCAyMjYyMywgMjI2MjcsIDIyNjMxLCAyMjYzNSwgMjI2MzksIDIyNjQzLCAKKyAgICAyMjY0NywgMjI2NTEsIDIyNjU1LCAyMjY1OSwgMjI2NjMsIDIyNjY3LCAyMjY3MSwgMjI2NzUsIDIyNjc5LCAyMjY4MywgMCwgCisgICAgMjI2ODcsIDIyNjkxLCAyMjY5NSwgMjI2OTksIDAsIDAsIDIyNzAzLCAyMjcwNywgMjI3MTEsIDIyNzE1LCAyMjcxOSwgCisgICAgMjI3MjMsIDIyNzI3LCAyMjczMSwgMjI3MzUsIDIyNzM5LCAyMjc0MywgMjI3NDcsIDIyNzUxLCAyMjc1NSwgMjI3NTksIAorICAgIDIyNzYzLCAyMjc2NywgMjI3NzEsIDIyNzc1LCAyMjc3OSwgMjI3ODMsIDIyNzg3LCAyMjc5MSwgMjI3OTUsIDIyNzk5LCAKKyAgICAyMjgwMywgMjI4MDcsIDIyODExLCAyMjgxNSwgMjI4MTksIDIyODIzLCAyMjgyNywgMjI4MzEsIDIyODM1LCAyMjgzOSwgCisgICAgMjI4NDMsIDIyODQ3LCAyMjg1MSwgMjI4NTUsIDIyODU5LCAyMjg2MywgMjI4NjcsIDIyODcxLCAyMjg3NSwgMjI4NzksIAorICAgIDIyODgzLCAyMjg4NywgMjI4OTEsIDIyODk1LCAyMjg5OSwgMjI5MDMsIDIyOTA3LCAyMjkxMSwgMjI5MTUsIDIyOTE5LCAKKyAgICAyMjkyMywgMjI5MjcsIDIyOTMwLCAyMjkzNCwgMjI5MzgsIDIyOTQyLCAyMjk0NiwgMjI5NTAsIDIyOTU0LCAyMjk1OCwgCisgICAgMjI5NjIsIDIyOTY2LCAwLCAwLCAyMjk3MCwgMjI5NzksIDIyOTg1LCAyMjk5MCwgMjI5OTQsIDIyOTk3LCAyMzAwMiwgCisgICAgMjMwMDUsIDIzMDA4LCAyMzAxMSwgMjMwMTYsIDIzMDIwLCAyMzAyNSwgMjMwMjgsIDIzMDMxLCAyMzAzNCwgMjMwMzcsIAorICAgIDIzMDQwLCAyMzA0MywgMjMwNDcsIDIzMDUwLCAyMzA1NCwgMjMwNTgsIDIzMDYyLCAyMzA2NiwgMjMwNzAsIDIzMDc0LCAKKyAgICAyMzA3OCwgMjMwODIsIDIzMDg2LCAyMzA5MCwgMjMwOTQsIDAsIDAsIDAsIDIzMTAwLCAyMzEwNiwgMjMxMTAsIDIzMTE0LCAKKyAgICAyMzExOCwgMjMxMjQsIDIzMTI4LCAyMzEzMiwgMjMxMzYsIDIzMTQyLCAyMzE0NiwgMjMxNTAsIDIzMTU0LCAyMzE2MCwgCisgICAgMjMxNjQsIDIzMTY4LCAyMzE3MiwgMjMxNzgsIDIzMTg0LCAyMzE5MCwgMjMxOTgsIDIzMjA0LCAyMzIxMCwgMjMyMTYsIAorICAgIDIzMjIyLCAyMzIyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMyMzQsIDIzMjM3LCAyMzI0MCwgMjMyNDMsIDIzMjQ2LCAyMzI0OSwgCisgICAgMjMyNTMsIDIzMjU3LCAyMzI2MCwgMjMyNjQsIDIzMjY4LCAyMzI3MiwgMjMyNzYsIDIzMjgwLCAyMzI4MywgMjMyODcsIAorICAgIDIzMjkxLCAyMzI5NSwgMjMyOTksIDIzMzAzLCAyMzMwNiwgMjMzMTAsIDIzMzE0LCAyMzMxOCwgMjMzMjIsIDIzMzI2LCAKKyAgICAyMzMyOSwgMjMzMzMsIDIzMzM3LCAyMzM0MSwgMjMzNDUsIDIzMzQ4LCAyMzM1MiwgMjMzNTYsIDIzMzYwLCAyMzM2NCwgCisgICAgMjMzNjgsIDIzMzcyLCAyMzM3NiwgMjMzODAsIDIzMzg0LCAyMzM4OCwgMjMzOTIsIDIzMzk2LCAyMzQwMCwgMjM0MDQsIAorICAgIDIzNDA4LCAyMzQxMiwgMjM0MTYsIDIzNDIwLCAyMzQyNCwgMjM0MjgsIDIzNDMyLCAyMzQzNiwgMjM0NDAsIDIzNDQ0LCAKKyAgICAyMzQ0OCwgMjM0NTIsIDIzNDU2LCAyMzQ2MCwgMjM0NjQsIDIzNDY4LCAyMzQ3MiwgMjM0NzYsIDIzNDgwLCAyMzQ4NCwgCisgICAgMjM0ODgsIDIzNDkyLCAyMzQ5NiwgMjM1MDAsIDIzNTA0LCAyMzUwOCwgMjM1MTIsIDIzNTE2LCAyMzUyMCwgMjM1MjQsIAorICAgIDIzNTI4LCAyMzUzMiwgMjM1MzYsIDIzNTQwLCAyMzU0MywgMjM1NDcsIDIzNTUxLCAyMzU1NSwgMjM1NTksIDIzNTYzLCAwLCAKKyAgICAwLCAyMzU2NywgMjM1NzIsIDIzNTc3LCAyMzU4MiwgMjM1ODcsIDIzNTkyLCAwLCAwLCAyMzU5NywgMjM2MDEsIDIzNjA0LCAKKyAgICAyMzYwOCwgMjM2MTEsIDIzNjE1LCAyMzYxOCwgMjM2MjIsIDIzNjI4LCAyMzYzMywgMjM2MzcsIDIzNjQwLCAyMzY0NCwgCisgICAgMjM2NDgsIDIzNjU0LCAyMzY1OCwgMjM2NjQsIDIzNjY4LCAyMzY3NCwgMjM2NzgsIDIzNjg0LCAyMzY4OCwgMjM2OTQsIAorICAgIDIzNzAwLCAyMzcwNCwgMjM3MTAsIDIzNzE0LCAyMzcyMCwgMjM3MjYsIDIzNzMwLCAyMzczNiwgMjM3NDIsIDIzNzQ2LCAKKyAgICAyMzc1MSwgMjM3NTksIDIzNzY3LCAyMzc3NCwgMjM3NzksIDIzNzg0LCAyMzc5MywgMjM3OTksIDIzODA3LCAyMzgxMiwgCisgICAgMjM4MTgsIDIzODIyLCAyMzgyNiwgMjM4MzAsIDIzODM0LCAyMzgzOCwgMjM4NDIsIDIzODQ2LCAyMzg1MCwgMjM4NTQsIAorICAgIDIzODU4LCAyMzg2NCwgMjM4NjksIDIzODc0LCAyMzg3NywgMjM4ODEsIDIzODg1LCAyMzg5MSwgMjM4OTUsIDIzOTAxLCAKKyAgICAyMzkwNSwgMjM5MTEsIDIzOTE1LCAyMzkyMSwgMjM5MjUsIDIzOTMxLCAyMzkzNSwgMjM5NDEsIDIzOTQ1LCAyMzk1MSwgCisgICAgMjM5NTcsIDIzOTYxLCAyMzk2NywgMjM5NzIsIDIzOTc2LCAyMzk4MCwgMjM5ODQsIDIzOTg4LCAyMzk5MSwgMjM5OTUsIAorICAgIDI0MDAxLCAyNDAwNiwgMjQwMTEsIDI0MDE1LCAyNDAxOSwgMjQwMjMsIDI0MDI5LCAyNDAzMywgMjQwMzksIDI0MDQzLCAKKyAgICAyNDA0OSwgMjQwNTIsIDI0MDU3LCAyNDA2MSwgMjQwNjcsIDI0MDcxLCAyNDA3NywgMjQwODEsIDI0MDg3LCAyNDA5MywgCisgICAgMjQwOTcsIDI0MTAxLCAyNDEwNSwgMjQxMDksIDI0MTEzLCAyNDExNywgMjQxMjEsIDI0MTI1LCAyNDEyOSwgMjQxMzMsIAorICAgIDI0MTM3LCAyNDE0MywgMjQxNDYsIDI0MTUwLCAyNDE1NCwgMjQxNjAsIDI0MTY0LCAyNDE3MCwgMjQxNzQsIDI0MTgwLCAKKyAgICAyNDE4NCwgMjQxOTAsIDI0MTk0LCAyNDIwMCwgMjQyMDQsIDI0MjEwLCAyNDIxNCwgMjQyMjAsIDI0MjI2LCAyNDIzMCwgCisgICAgMjQyMzQsIDI0MjQwLCAyNDI0NiwgMjQyNTIsIDI0MjU4LCAyNDI2MiwgMjQyNjYsIDI0MjcwLCAyNDI3NCwgMjQyNzgsIAorICAgIDI0MjgyLCAyNDI4OCwgMjQyOTIsIDI0Mjk2LCAyNDMwMCwgMjQzMDYsIDI0MzEwLCAyNDMxNiwgMjQzMjAsIDI0MzI2LCAKKyAgICAyNDMzMCwgMjQzMzYsIDI0MzQwLCAyNDM0NiwgMjQzNTAsIDI0MzU2LCAyNDM2MCwgMjQzNjYsIDI0MzcyLCAyNDM3NiwgCisgICAgMjQzODIsIDI0Mzg2LCAyNDM5MCwgMjQzOTQsIDI0Mzk4LCAyNDQwMiwgMjQ0MDYsIDI0NDEyLCAyNDQxNSwgMjQ0MTksIAorICAgIDI0NDIzLCAyNDQyOSwgMjQ0MzMsIDI0NDM5LCAyNDQ0MywgMjQ0NDksIDI0NDUzLCAyNDQ1OSwgMjQ0NjMsIDI0NDY5LCAKKyAgICAyNDQ3MywgMjQ0NzksIDI0NDgzLCAyNDQ4OSwgMjQ0OTUsIDI0NDk5LCAyNDUwNSwgMjQ1MDksIDI0NTE1LCAyNDUyMSwgCisgICAgMjQ1MjUsIDI0NTI5LCAyNDUzMywgMjQ1MzcsIDI0NTQxLCAyNDU0NSwgMjQ1NTEsIDI0NTU0LCAyNDU1OCwgMjQ1NjIsIAorICAgIDI0NTY4LCAyNDU3MiwgMjQ1NzgsIDI0NTgyLCAyNDU4OCwgMjQ1OTQsIDI0NTk4LCAyNDYwMywgMjQ2MDcsIDI0NjExLCAKKyAgICAyNDYxNSwgMjQ2MTksIDI0NjIzLCAyNDYyNywgMjQ2MzEsIDI0NjM3LCAyNDY0MCwgMjQ2NDQsIDI0NjQ4LCAyNDY1NCwgCisgICAgMjQ2NTgsIDI0NjY0LCAyNDY2OCwgMjQ2NzQsIDI0Njc4LCAyNDY4NCwgMjQ2ODgsIDI0Njk0LCAyNDY5OCwgMjQ3MDQsIAorICAgIDI0NzA4LCAyNDcxNCwgMjQ3MTcsIDI0NzIyLCAyNDcyNiwgMjQ3MzAsIDI0NzM0LCAyNDczOCwgMjQ3NDIsIDI0NzQ2LCAKKyAgICAyNDc1MCwgMjQ3NTYsIDI0NzYwLCAyNDc2NCwgMjQ3NjgsIDI0Nzc0LCAyNDc3OCwgMjQ3ODQsIDI0Nzg4LCAyNDc5NCwgCisgICAgMjQ3OTgsIDI0ODA0LCAyNDgwOCwgMjQ4MTQsIDI0ODE4LCAyNDgyNCwgMjQ4MjgsIDI0ODM0LCAyNDg0MCwgMjQ4NDQsIAorICAgIDI0ODUwLCAyNDg1NCwgMjQ4NjAsIDI0ODY2LCAyNDg3MiwgMjQ4NzgsIDI0ODg0LCAyNDg5MCwgMjQ4OTYsIDI0OTAyLCAKKyAgICAyNDkwNiwgMjQ5MTAsIDI0OTE0LCAyNDkxOCwgMjQ5MjIsIDI0OTI2LCAyNDkzMCwgMjQ5MzQsIDI0OTQwLCAyNDk0NCwgCisgICAgMjQ5NTAsIDI0OTU0LCAyNDk2MCwgMjQ5NjQsIDI0OTcwLCAyNDk3NCwgMjQ5ODAsIDI0OTg0LCAyNDk5MCwgMjQ5OTQsIAorICAgIDI1MDAwLCAyNTAwNCwgMjUwMDgsIDI1MDEyLCAyNTAxNiwgMjUwMjAsIDI1MDI0LCAyNTAyOCwgMjUwMzQsIDI1MDM3LCAKKyAgICAyNTA0MSwgMjUwNDUsIDI1MDUxLCAyNTA1NSwgMjUwNjEsIDI1MDY1LCAyNTA3MSwgMjUwNzUsIDI1MDgxLCAyNTA4NSwgCisgICAgMjUwOTEsIDI1MDk1LCAyNTEwMSwgMjUxMDUsIDI1MTExLCAyNTExNywgMjUxMjEsIDI1MTI3LCAyNTEzMywgMjUxMzksIAorICAgIDI1MTQzLCAyNTE0OSwgMjUxNTUsIDI1MTU5LCAyNTE2MywgMjUxNjcsIDI1MTcxLCAyNTE3NSwgMjUxODEsIDI1MTg1LCAKKyAgICAyNTE4OSwgMjUxOTQsIDI1MTk4LCAyNTIwNCwgMjUyMDcsIDI1MjEyLCAyNTIxNiwgMjUyMjAsIDI1MjI0LCAyNTIyOCwgCisgICAgMjUyMzIsIDI1MjM2LCAyNTI0MCwgMjUyNDQsIDI1MjQ4LCAyNTI1MiwgMjUyNTgsIDI1MjYyLCAyNTI2NiwgMjUyNzIsIAorICAgIDI1Mjc2LCAyNTI4MiwgMjUyODYsIDI1MjkyLCAyNTI5NiwgMjUzMDAsIDI1MzA0LCAyNTMwOCwgMjUzMTIsIDI1MzE4LCAKKyAgICAyNTMyMiwgMjUzMjYsIDI1MzMwLCAyNTMzNCwgMjUzMzgsIDI1MzQyLCAyNTM0NiwgMjUzNTAsIDI1MzU0LCAyNTM1OCwgCisgICAgMjUzNjQsIDI1MzcwLCAyNTM3NiwgMjUzODIsIDI1Mzg4LCAyNTM5MywgMjUzOTksIDI1NDA1LCAyNTQxMSwgMjU0MTUsIAorICAgIDI1NDE5LCAyNTQyMywgMjU0MjcsIDI1NDMxLCAyNTQzNSwgMjU0MzksIDI1NDQzLCAyNTQ0NywgMjU0NTEsIDI1NDU1LCAKKyAgICAyNTQ1OSwgMjU0NjMsIDI1NDY5LCAyNTQ3NSwgMjU0ODEsIDI1NDg3LCAyNTQ5MSwgMjU0OTUsIDI1NDk5LCAyNTUwMywgCisgICAgMjU1MDcsIDI1NTExLCAyNTUxNSwgMjU1MTksIDI1NTIzLCAyNTUyOSwgMjU1MzUsIDI1NTQxLCAyNTU0NywgMjU1NTMsIAorICAgIDI1NTU5LCAyNTU2NSwgMjU1NzEsIDI1NTc3LCAyNTU4MSwgMjU1ODUsIDI1NTg5LCAyNTU5MywgMjU1OTcsIDI1NjAxLCAKKyAgICAyNTYwNSwgMjU2MTEsIDI1NjE3LCAyNTYyMywgMjU2MjksIDI1NjM1LCAyNTY0MSwgMjU2NDcsIDI1NjUzLCAyNTY1OSwgCisgICAgMjU2NjQsIDI1NjY5LCAyNTY3NCwgMjU2NzksIDI1Njg1LCAyNTY5MSwgMjU2OTcsIDI1NzAzLCAyNTcwOSwgMjU3MTUsIAorICAgIDI1NzIxLCAyNTcyNiwgMjU3MzIsIDI1NzM4LCAyNTc0NCwgMjU3NDksIDI1NzU1LCAyNTc2MSwgMjU3NjcsIDI1NzcyLCAKKyAgICAyNTc3NywgMjU3ODIsIDI1Nzg3LCAyNTc5MiwgMjU3OTcsIDI1ODAyLCAyNTgwNywgMjU4MTIsIDI1ODE3LCAyNTgyMiwgCisgICAgMjU4MjcsIDI1ODMyLCAyNTgzNywgMjU4NDIsIDI1ODQ3LCAyNTg1MiwgMjU4NTcsIDI1ODYyLCAyNTg2NywgMjU4NzIsIAorICAgIDI1ODc3LCAyNTg4MiwgMjU4ODcsIDI1ODkyLCAyNTg5NywgMjU5MDIsIDI1OTA3LCAyNTkxMiwgMjU5MTcsIDI1OTIyLCAKKyAgICAyNTkyNywgMjU5MzIsIDI1OTM3LCAyNTk0MiwgMjU5NDcsIDI1OTUyLCAyNTk1NywgMjU5NjIsIDI1OTY3LCAyNTk3MiwgCisgICAgMjU5NzcsIDI1OTgxLCAyNTk4NiwgMjU5OTEsIDI1OTk2LCAyNjAwMSwgMjYwMDYsIDI2MDExLCAyNjAxNiwgMjYwMjEsIAorICAgIDI2MDI2LCAyNjAzMSwgMjYwMzYsIDI2MDQxLCAyNjA0NiwgMjYwNTEsIDI2MDU2LCAyNjA2MSwgMjYwNjYsIDI2MDcxLCAKKyAgICAyNjA3NiwgMjYwODEsIDI2MDg2LCAyNjA5MSwgMjYwOTYsIDI2MTAxLCAyNjEwNiwgMjYxMTAsIDI2MTE1LCAyNjEyMCwgCisgICAgMjYxMjUsIDI2MTMwLCAyNjEzNSwgMjYxMzksIDI2MTQ0LCAyNjE0OSwgMjYxNTQsIDI2MTU5LCAyNjE2NCwgMjYxNjgsIAorICAgIDI2MTczLCAyNjE3OSwgMjYxODQsIDI2MTg5LCAyNjE5NCwgMjYxOTksIDI2MjA1LCAyNjIxMCwgMjYyMTUsIDI2MjIwLCAKKyAgICAyNjIyNSwgMjYyMzAsIDI2MjM1LCAyNjI0MCwgMjYyNDUsIDI2MjUwLCAyNjI1NSwgMjYyNjAsIDI2MjY1LCAyNjI2OSwgCisgICAgMjYyNzQsIDI2Mjc5LCAyNjI4NCwgMjYyODksIDI2Mjk0LCAyNjI5OSwgMjYzMDQsIDI2MzA5LCAyNjMxNCwgMjYzMTksIAorICAgIDI2MzI0LCAyNjMyOSwgMjYzMzQsIDI2MzM5LCAyNjM0NCwgMjYzNDksIDI2MzU0LCAyNjM1OSwgMjYzNjQsIDI2MzY5LCAKKyAgICAyNjM3NCwgMjYzNzksIDI2Mzg0LCAyNjM4OSwgMjYzOTQsIDI2Mzk5LCAyNjQwNCwgMjY0MDksIDI2NDE0LCAyNjQxOSwgCisgICAgMjY0MjQsIDI2NDMwLCAyNjQzNSwgMjY0NDAsIDI2NDQ1LCAyNjQ1MCwgMjY0NTUsIDI2NDYwLCAyNjQ2NSwgMjY0NzAsIAorICAgIDI2NDc1LCAyNjQ4MCwgMjY0ODUsIDI2NDkwLCAyNjQ5NSwgMjY1MDAsIDI2NTA1LCAyNjUxMCwgMjY1MTUsIDI2NTIwLCAKKyAgICAyNjUyNSwgMjY1MzAsIDI2NTM1LCAyNjU0MCwgMjY1NDUsIDI2NTUwLCAyNjU1NSwgMjY1NjAsIDI2NTY1LCAyNjU3MCwgCisgICAgMjY1NzUsIDI2NTgwLCAyNjU4NSwgMjY1OTAsIDI2NTk1LCAyNjYwMCwgMjY2MDUsIDI2NjEwLCAyNjYxNSwgMjY2MjAsIAorICAgIDI2NjI2LCAyNjYzMCwgMjY2MzQsIDI2NjM4LCAyNjY0MiwgMjY2NDYsIDI2NjUwLCAyNjY1NCwgMjY2NTgsIDI2NjY0LCAKKyAgICAyNjY3MCwgMjY2NzYsIDI2NjgyLCAyNjY4OCwgMjY2OTQsIDI2NzAwLCAyNjcwNywgMjY3MTMsIDI2NzE4LCAyNjcyMywgCisgICAgMjY3MjgsIDI2NzMzLCAyNjczOCwgMjY3NDMsIDI2NzQ4LCAyNjc1MywgMjY3NTgsIDI2NzYzLCAyNjc2OCwgMjY3NzMsIAorICAgIDI2Nzc4LCAyNjc4MywgMjY3ODgsIDI2NzkzLCAyNjc5OCwgMjY4MDMsIDI2ODA4LCAyNjgxMywgMjY4MTgsIDI2ODIzLCAKKyAgICAyNjgyOCwgMjY4MzMsIDI2ODM4LCAyNjg0MywgMjY4NDgsIDI2ODUzLCAwLCAwLCAwLCAyNjg2MCwgMjY4NzEsIDI2ODc2LCAKKyAgICAyNjg4NCwgMjY4ODksIDI2ODk0LCAyNjg5OSwgMjY5MDgsIDI2OTEzLCAyNjkxOSwgMjY5MjUsIDI2OTMxLCAyNjkzNiwgCisgICAgMjY5NDIsIDI2OTQ4LCAyNjk1MiwgMjY5NTcsIDI2OTYyLCAyNjk3MiwgMjY5NzcsIDI2OTgyLCAyNjk4OSwgMjY5OTQsIAorICAgIDI2OTk5LCAyNzAwOCwgMjcwMTMsIDI3MDIyLCAyNzAyOSwgMjcwMzYsIDI3MDQzLCAyNzA1MCwgMjcwNjEsIDI3MDY4LCAKKyAgICAyNzA3MywgMjcwODMsIDI3MDg3LCAyNzA5NCwgMjcwOTksIDI3MTA2LCAyNzExMiwgMjcxMTksIDI3MTI4LCAyNzEzNSwgCisgICAgMjcxNDIsIDI3MTUxLCAyNzE1OCwgMjcxNjMsIDI3MTY4LCAyNzE3OSwgMjcxODYsIDI3MTkxLCAyNzIwMiwgMjcyMDksIAorICAgIDI3MjE0LCAyNzIxOSwgMjcyMjcsIDI3MjM2LCAyNzI0MywgMjcyNTAsIDI3MjYwLCAyNzI2NSwgMjcyNzAsIDI3Mjc1LCAKKyAgICAyNzI4NCwgMjcyOTIsIDI3Mjk3LCAyNzMwMiwgMjczMDcsIDI3MzEyLCAyNzMxNywgMjczMjIsIDI3MzI3LCAyNzMzMiwgCisgICAgMjczMzcsIDI3MzQyLCAyNzM0NywgMjczNTMsIDI3MzU5LCAyNzM2NSwgMjczNzAsIDI3Mzc1LCAyNzM4MCwgMjczODUsIAorICAgIDI3MzkwLCAyNzM5NSwgMjc0MDQsIDI3NDEzLCAyNzQyMiwgMjc0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NDQwLCAKKyAgICAyNzQ0NCwgMjc0NDgsIDI3NDUyLCAyNzQ1NiwgMjc0NjEsIDI3NDY2LCAyNzQ3MSwgMjc0NzYsIDI3NDgwLCAyNzQ4NCwgCisgICAgMjc0ODksIDI3NDkzLCAwLCAyNzQ5NywgMjc1MDEsIDI3NTA2LCAyNzUxMSwgMjc1MTUsIDI3NTIwLCAyNzUyNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1MzAsIDI3NTM0LCAyNzUzOCwgMjc1NDIsIDI3NTQ2LCAyNzU1MSwgCisgICAgMjc1NTYsIDI3NTYxLCAyNzU2NiwgMjc1NzAsIDI3NTc0LCAyNzU3OSwgMjc1ODMsIDI3NTg3LCAyNzU5MiwgMjc1OTYsIAorICAgIDI3NjAxLCAyNzYwNiwgMjc2MTAsIDI3NjE1LCAyNzYyMCwgMjc2MjUsIDI3NjMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNzYzNiwgMjc2NDAsIDI3NjQ0LCAyNzY0OCwgMjc2NTIsIDI3NjU3LCAyNzY2MiwgMjc2NjcsIDI3NjcyLCAyNzY3NiwgCisgICAgMjc2ODAsIDI3Njg1LCAyNzY4OSwgMjc2OTMsIDI3Njk4LCAyNzcwMiwgMjc3MDcsIDI3NzEyLCAyNzcxNiwgMjc3MjEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NzI2LCAyNzczMCwgMjc3MzQsIDI3NzM4LCAyNzc0MiwgCisgICAgMjc3NDcsIDI3NzUyLCAyNzc1NywgMjc3NjIsIDI3NzY2LCAyNzc3MCwgMjc3NzUsIDI3Nzc5LCAwLCAyNzc4MywgMjc3ODcsIAorICAgIDI3NzkyLCAwLCAyNzc5NywgMjc4MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3ODA3LCAyNzgxMCwgCisgICAgMjc4MTQsIDI3ODE4LCAyNzgyMiwgMjc4MjYsIDI3ODMwLCAyNzgzNCwgMjc4MzgsIDI3ODQyLCAyNzg0NiwgMjc4NTAsIAorICAgIDI3ODU0LCAyNzg1OCwgMjc4NjIsIDI3ODY2LCAyNzg3MCwgMjc4NzQsIDI3ODc3LCAyNzg4MSwgMjc4ODUsIDI3ODg5LCAKKyAgICAyNzg5MywgMjc4OTcsIDI3OTAxLCAyNzkwNSwgMjc5MDksIDI3OTEzLCAyNzkxNywgMjc5MjEsIDI3OTI1LCAyNzkyOSwgCisgICAgMjc5MzMsIDI3OTM2LCAyNzkzOSwgMjc5NDMsIDI3OTQ5LCAyNzk1NSwgMjc5NjEsIDI3OTY3LCAyNzk3MywgMjc5NzksIAorICAgIDI3OTg1LCAyNzk5MSwgMjc5OTcsIDI4MDAzLCAyODAwOSwgMjgwMTUsIDI4MDIxLCAyODAyNywgMjgwMzYsIDI4MDQ1LCAKKyAgICAyODA1MSwgMjgwNTcsIDI4MDYzLCAyODA2OCwgMjgwNzIsIDI4MDc3LCAyODA4MiwgMjgwODcsIDI4MDkxLCAyODA5NiwgCisgICAgMjgxMDEsIDI4MTA2LCAyODExMCwgMjgxMTUsIDI4MTE5LCAyODEyNCwgMjgxMjksIDI4MTM0LCAyODEzOSwgMjgxNDMsIAorICAgIDI4MTQ3LCAyODE1MSwgMjgxNTUsIDI4MTU5LCAyODE2MywgMjgxNjcsIDI4MTcxLCAyODE3NSwgMjgxNzksIDI4MTg1LCAKKyAgICAyODE4OSwgMjgxOTMsIDI4MTk3LCAyODIwMSwgMjgyMDUsIDI4MjEzLCAyODIxOSwgMjgyMjMsIDI4MjI5LCAyODIzMywgCisgICAgMjgyMzksIDI4MjQzLCAwLCAwLCAyODI0NywgMjgyNTEsIDI4MjU0LCAyODI1NywgMjgyNjAsIDI4MjYzLCAyODI2NiwgCisgICAgMjgyNjksIDI4MjczLCAyODI3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMjgyODAsIDI4Mjg4LCAyODI5NiwgMjgzMDQsIDI4MzEyLCAKKyAgICAyODMyMCwgMjgzMjgsIDI4MzM2LCAyODM0NCwgMjgzNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MzYwLCAyODM2MywgMjgzNjYsIAorICAgIDI4MzY5LCAyODM3NCwgMjgzNzcsIDI4MzgyLCAyODM4OSwgMjgzOTcsIDI4NDAyLCAyODQwOSwgMjg0MTIsIDI4NDE5LCAKKyAgICAyODQyNiwgMjg0MzMsIDAsIDI4NDM3LCAyODQ0MSwgMjg0NDQsIDI4NDQ3LCAyODQ1MCwgMjg0NTMsIDI4NDU2LCAyODQ1OSwgCisgICAgMjg0NjMsIDI4NDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAyODQ3MCwgMjg0NzMsIDI4NDc2LCAyODQ3OSwgMjg0ODIsIDI4NDg1LCAKKyAgICAyODQ4OSwgMjg0OTMsIDI4NDk3LCAyODUwMCwgMjg1MDQsIDI4NTA4LCAyODUxMSwgMjg1MTUsIDI4NTE5LCAyODUyMiwgCisgICAgMjg1MjUsIDI4NTI5LCAyODUzMywgMjg1MzcsIDI4NTQxLCAyODU0NSwgMjg1NDksIDI4NTUyLCAyODU1NiwgMjg1NjAsIAorICAgIDI4NTY0LCAyODU2NywgMjg1NzEsIDI4NTc1LCAyODU3OSwgMjg1ODMsIDI4NTg3LCAyODU5MSwgMjg1OTUsIDI4NTk5LCAKKyAgICAyODYwNiwgMjg2MTEsIDI4NjE2LCAyODYyMSwgMjg2MjYsIDI4NjMyLCAyODYzOCwgMjg2NDQsIDI4NjUwLCAyODY1NSwgCisgICAgMjg2NjEsIDI4NjY3LCAyODY3MiwgMjg2NzgsIDI4Njg0LCAyODY5MCwgMjg2OTYsIDI4NzAyLCAyODcwNywgMjg3MTMsIAorICAgIDI4NzE4LCAyODcyNCwgMjg3MzAsIDI4NzM2LCAyODc0MiwgMjg3NDgsIDI4NzUzLCAyODc1OCwgMjg3NjQsIDI4NzcwLCAKKyAgICAyODc3NSwgMjg3ODEsIDI4Nzg2LCAyODc5MiwgMjg3OTcsIDI4ODAyLCAyODgwOCwgMjg4MTQsIDI4ODIwLCAyODgyNiwgCisgICAgMjg4MzIsIDI4ODM4LCAyODg0NCwgMjg4NTAsIDI4ODU2LCAyODg2MiwgMjg4NjgsIDI4ODc0LCAyODg3OSwgMjg4ODQsIAorICAgIDI4ODkwLCAyODg5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg5MDIsIDI4OTExLCAyODkyMCwgMjg5MjgsIDI4OTM2LCAKKyAgICAyODk0NiwgMjg5NTQsIDI4OTYzLCAyODk3MCwgMjg5NzcsIDI4OTg0LCAyODk5MiwgMjkwMDAsIDI5MDA4LCAyOTAxNiwgCisgICAgMjkwMjQsIDI5MDMyLCAyOTA0MCwgMjkwNDgsIDI5MDU1LCAyOTA2MywgMjkwNzEsIDI5MDc5LCAyOTA4NywgMjkwOTUsIAorICAgIDI5MTA1LCAyOTExNSwgMjkxMjUsIDI5MTM1LCAyOTE0NSwgMjkxNTUsIDI5MTY1LCAyOTE3NSwgMjkxODUsIDI5MTk1LCAKKyAgICAyOTIwNSwgMjkyMTUsIDI5MjI1LCAyOTIzNSwgMjkyNDMsIDI5MjUxLCAyOTI2MSwgMjkyNjksIDAsIDAsIDAsIDAsIDAsIAorICAgIDI5Mjc5LCAyOTI4MywgMjkyODcsIDI5MjkxLCAyOTI5NSwgMjkyOTksIDI5MzAzLCAyOTMwNywgMjkzMTEsIDI5MzE1LCAKKyAgICAyOTMxOSwgMjkzMjMsIDI5MzI3LCAyOTMzMSwgMjkzMzUsIDI5MzM5LCAyOTM0MywgMjkzNDcsIDI5MzUxLCAyOTM1NSwgCisgICAgMjkzNTksIDI5MzYzLCAyOTM2NywgMjkzNzEsIDI5Mzc3LCAyOTM4MSwgMjkzODcsIDI5MzkxLCAyOTM5NywgMjk0MDEsIAorICAgIDI5NDA3LCAyOTQxMSwgMjk0MTUsIDI5NDE5LCAyOTQyMywgMjk0MjcsIDI5NDMxLCAyOTQzNywgMjk0NDMsIDI5NDQ5LCAKKyAgICAyOTQ1NSwgMjk0NjEsIDI5NDY3LCAyOTQ3MywgMjk0NzksIDI5NDg1LCAyOTQ5MSwgMjk0OTcsIDI5NTA0LCAyOTUxMCwgCisgICAgMjk1MTYsIDI5NTIyLCAyOTUyNiwgMjk1MzAsIDI5NTM0LCAyOTUzOCwgMjk1NDIsIDI5NTQ2LCAyOTU1MCwgMjk1NTYsIAorICAgIDI5NTYyLCAyOTU2OCwgMjk1NzMsIDI5NTgwLCAyOTU4NSwgMjk1OTAsIDI5NTk2LCAyOTYwMSwgMjk2MDgsIDI5NjE1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTYyMiwgMjk2MjgsIDI5NjMyLCAyOTYzNywgMjk2NDIsIDI5NjQ3LCAKKyAgICAyOTY1MiwgMjk2NTcsIDI5NjYyLCAyOTY2NywgMjk2NzIsIDI5Njc3LCAyOTY4MiwgMjk2ODcsIDI5NjkyLCAyOTY5NywgCisgICAgMjk3MDEsIDI5NzA1LCAyOTcxMCwgMjk3MTUsIDI5NzIwLCAyOTcyNCwgMjk3MjgsIDI5NzMzLCAyOTczNywgMjk3NDIsIAorICAgIDI5NzQ3LCAyOTc1MiwgMjk3NTcsIDI5NzYxLCAyOTc2NiwgMCwgMjk3NzEsIDI5Nzc2LCAyOTc4MSwgMjk3ODYsIDI5NzkyLCAKKyAgICAyOTc5OCwgMjk4MDQsIDI5ODEwLCAyOTgxNSwgMjk4MjAsIDI5ODI2LCAyOTgzMywgMCwgMCwgMCwgMCwgMjk4NDAsIAorICAgIDI5ODQ1LCAyOTg1MSwgMjk4NTcsIDI5ODYzLCAyOTg2OCwgMjk4NzMsIDI5ODc4LCAyOTg4NCwgMjk4ODksIDI5ODk0LCAKKyAgICAyOTg5OSwgMCwgMCwgMCwgMCwgMjk5MDQsIDAsIDAsIDAsIDI5OTA5LCAyOTkxNCwgMjk5MTksIDI5OTI0LCAyOTkyOCwgCisgICAgMjk5MzIsIDI5OTM2LCAyOTk0MCwgMjk5NDQsIDI5OTQ4LCAyOTk1MywgMjk5NTcsIDI5OTYyLCAyOTk2NywgMjk5NzMsIAorICAgIDI5OTc5LCAyOTk4NSwgMjk5OTEsIDI5OTk2LCAzMDAwMiwgMzAwMDgsIDMwMDEzLCAzMDAxOCwgMzAwMjQsIDMwMDI5LCAKKyAgICAzMDAzNSwgMzAwNDEsIDMwMDQ2LCAzMDA1MiwgMzAwNTgsIDMwMDY0LCAzMDA2OSwgMzAwNzQsIDMwMDc5LCAzMDA4NSwgCisgICAgMzAwOTEsIDMwMDk2LCAzMDEwMiwgMzAxMDcsIDMwMTEzLCAzMDExOCwgMzAxMjQsIDAsIDAsIDMwMTMwLCAzMDEzNiwgCisgICAgMzAxNDIsIDMwMTQ4LCAzMDE1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxNjAsIDMwMTY5LCAKKyAgICAzMDE3OCwgMzAxODYsIDMwMTk1LCAzMDIwNCwgMzAyMTIsIDMwMjIxLCAzMDIzMCwgMzAyMzksIDMwMjQ4LCAzMDI1NiwgCisgICAgMzAyNjUsIDMwMjc0LCAzMDI4MiwgMzAyOTEsIDMwMzAwLCAzMDMwOCwgMzAzMTcsIDMwMzI2LCAzMDMzNCwgMzAzNDIsIAorICAgIDMwMzUxLCAzMDM1OSwgMzAzNjcsIDMwMzc2LCAzMDM4NCwgMzAzOTMsIDMwNDAyLCAzMDQxMCwgMzA0MTksIDMwNDI4LCAKKyAgICAzMDQzNiwgMzA0NDQsIDMwNDUzLCAzMDQ2MiwgMzA0NzAsIDMwNDc5LCAzMDQ4OCwgMzA0OTcsIDMwNTA2LCAzMDUxNSwgCisgICAgMzA1MjQsIDMwNTMzLCAwLCAwLCAwLCAwLCAzMDU0MiwgMzA1NTIsIDMwNTYxLCAzMDU3MCwgMzA1NzgsIDMwNTg3LCAKKyAgICAzMDU5NSwgMzA2MDQsIDMwNjEyLCAzMDYyMSwgMzA2MzAsIDMwNjM5LCAzMDY0OCwgMzA2NTcsIDMwNjY2LCAzMDY3NSwgCisgICAgMzA2ODQsIDMwNjkzLCAzMDcwMiwgMzA3MTEsIDMwNzIwLCAzMDcyOSwgMzA3MzgsIDMwNzQ3LCAzMDc1NiwgMzA3NjQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMwNzcyLCAzMDc4MCwgMzA3ODcsIDMwNzk0LCAzMDgwMSwgMzA4MDgsIDMwODE1LCAzMDgyMiwgCisgICAgMzA4MzAsIDMwODM3LCAzMDg0NSwgMCwgMCwgMCwgMzA4NTMsIDMwODYxLCAzMDg2OSwgMzA4NzMsIDMwODc5LCAzMDg4NSwgCisgICAgMzA4OTEsIDMwODk3LCAzMDkwMywgMzA5MDksIDMwOTE1LCAzMDkyMSwgMzA5MjcsIDMwOTMzLCAzMDkzOSwgMzA5NDUsIAorICAgIDMwOTUxLCAzMDk1NywgMzA5NjMsIDMwOTY3LCAzMDk3MywgMzA5NzksIDMwOTg1LCAzMDk5MSwgMzA5OTcsIDMxMDAzLCAKKyAgICAzMTAwOSwgMzEwMTUsIDMxMDIxLCAzMTAyNywgMzEwMzMsIDMxMDM5LCAzMTA0NSwgMzEwNTEsIDMxMDU3LCAzMTA2MSwgCisgICAgMzEwNjYsIDMxMDcxLCAzMTA3NiwgMzEwODAsIDMxMDg1LCAzMTA4OSwgMzEwOTQsIDMxMDk5LCAzMTEwNCwgMzExMDgsIAorICAgIDMxMTEzLCAzMTExOCwgMzExMjMsIDMxMTI4LCAzMTEzMywgMzExMzcsIDMxMTQyLCAzMTE0NiwgMzExNTEsIDMxMTU2LCAKKyAgICAzMTE2MCwgMzExNjQsIDMxMTY5LCAzMTE3NCwgMzExNzksIDMxMTg0LCAwLCAwLCAzMTE5MCwgMzExOTQsIDMxMjAxLCAKKyAgICAzMTIwNiwgMzEyMTIsIDMxMjE4LCAzMTIyMywgMzEyMjksIDMxMjM1LCAzMTI0MCwgMzEyNDYsIDMxMjUyLCAzMTI1OCwgCisgICAgMzEyNjQsIDMxMjcwLCAzMTI3NSwgMzEyODAsIDMxMjg2LCAzMTI5MSwgMzEyOTcsIDMxMzAyLCAzMTMwOCwgMzEzMTQsIAorICAgIDMxMzIwLCAzMTMyNiwgMzEzMzAsIDMxMzM1LCAzMTM0MCwgMzEzNDYsIDMxMzUyLCAzMTM1NywgMzEzNjMsIDMxMzY5LCAKKyAgICAzMTM3MywgMzEzNzgsIDMxMzgzLCAzMTM4OCwgMzEzOTMsIDMxMzk3LCAzMTQwMiwgMzE0MDcsIDMxNDEzLCAzMTQxOSwgCisgICAgMzE0MjUsIDMxNDMwLCAzMTQzNSwgMzE0MzksIDMxNDQ0LCAzMTQ0OCwgMzE0NTMsIDMxNDU3LCAzMTQ2MiwgMzE0NjcsIAorICAgIDMxNDcyLCAzMTQ3NywgMzE0ODQsIDMxNDkxLCAzMTQ5NywgMzE1MDcsIDMxNTE2LCAzMTUyMywgMzE1MjksIDMxNTQwLCAKKyAgICAzMTU0NSwgMzE1NTEsIDAsIDMxNTU3LCAzMTU2MiwgMzE1NjcsIDMxNTc1LCAzMTU4MSwgMzE1ODksIDMxNTk0LCAzMTYwMCwgCisgICAgMzE2MDYsIDMxNjEyLCAzMTYxNywgMzE2MjMsIDMxNjI4LCAzMTYzNSwgMzE2NDEsIDMxNjQ2LCAzMTY1MiwgMzE2NTgsIAorICAgIDMxNjY0LCAzMTY3MSwgMzE2NzgsIDMxNjg1LCAzMTY5MCwgMzE2OTUsIDMxNzAyLCAzMTcwOSwgMzE3MTYsIDMxNzIzLCAKKyAgICAzMTczMCwgMCwgMCwgMzE3MzcsIDMxNzQ0LCAzMTc1MSwgMzE3NTcsIDMxNzYzLCAzMTc2OSwgMzE3NzUsIDMxNzgxLCAKKyAgICAzMTc4NywgMzE3OTQsIDMxODAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgwNywgMzE4MTMsIDMxODE4LCAzMTgyMywgMzE4MjgsIAorICAgIDMxODMzLCAzMTgzOCwgMzE4NDMsIDMxODQ5LCAzMTg1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4NjAsIDMxODY1LCAzMTg3MCwgCisgICAgMzE4NzUsIDMxODgwLCAzMTg4NSwgMzE4OTAsIDMxODk5LCAzMTkwNiwgMzE5MTEsIDMxOTE2LCAzMTkyMSwgMzE5MjYsIAorICAgIDMxOTMxLCAwLCAwLCAzMTkzNiwgMzE5NDMsIDMxOTQ2LCAzMTk0OSwgMzE5NTIsIDMxOTU3LCAzMTk2MSwgMzE5NjcsIAorICAgIDMxOTcxLCAzMTk3NiwgMzE5ODMsIDMxOTkxLCAzMTk5NSwgMzIwMDAsIDMyMDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI0OCwgMTIyNTcsIDEyMjY1LCAKLSAgICAxMjI3MiwgMTIyODAsIDEyMjkyLCAxMjI5OSwgMTIzMDYsIDEyMzEzLCAxMjMyNSwgMTIzMzYsIDEyMzQzLCAxMjM1MSwgCi0gICAgMTIzNTcsIDEyMzYyLCAxMjM3MCwgMTIzNzgsIDEyMzg2LCAxMjM5MiwgMTI0MDIsIDEyNDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjAwOSwgMzIwMTUsIDMyMDIxLCAzMjAyNSwgMzIwMjksIDMyMDMzLCAKKyAgICAzMjAzNywgMzIwNDMsIDMyMDQ3LCAzMjA1MywgMzIwNTcsIDMyMDYzLCAzMjA2OSwgMzIwNzcsIDMyMDgzLCAzMjA5MSwgCisgICAgMzIwOTUsIDMyMDk5LCAzMjEwMywgMzIxMDksIDMyMTEyLCAzMjExOCwgMzIxMjIsIDMyMTI4LCAzMjEzMiwgMzIxMzYsIAorICAgIDMyMTQyLCAzMjE0NiwgMzIxNTIsIDMyMTU2LCAzMjE2MiwgMzIxNzAsIDMyMTc4LCAzMjE4NiwgMzIxOTIsIDMyMTk2LCAKKyAgICAzMjIwMiwgMzIyMDYsIDMyMjEyLCAzMjIxNSwgMzIyMTgsIDMyMjI0LCAzMjIyOCwgMzIyMzQsIDMyMjM3LCAzMjI0MCwgCisgICAgMzIyNDQsIDMyMjQ3LCAzMjI1MSwgMzIyNTcsIDMyMjYzLCAzMjI2NywgMzIyNzAsIDMyMjc0LCAzMjI3OSwgMzIyODQsIAorICAgIDMyMjkxLCAzMjI5NiwgMzIzMDMsIDMyMzEwLCAzMjMxOSwgMzIzMjYsIDMyMzM1LCAzMjM0MCwgMzIzNDcsIDMyMzU0LCAKKyAgICAzMjM2MywgMzIzNjgsIDMyMzc1LCAzMjM4MCwgMzIzODYsIDMyMzkyLCAzMjM5OCwgMzI0MDQsIDMyNDEwLCAzMjQxNiwgMCwgCisgICAgMCwgMCwgMCwgMzI0MjIsIDMyNDI2LCAzMjQyOSwgMzI0MzIsIDMyNDM1LCAzMjQzOCwgMzI0NDEsIDMyNDQ0LCAzMjQ0OCwgCisgICAgMzI0NTEsIDMyNDU1LCAzMjQ1OCwgMzI0NjEsIDMyNDY0LCAzMjQ2OSwgMzI0NzQsIDMyNDc5LCAzMjQ4MiwgMzI0ODcsIAorICAgIDMyNDkyLCAzMjQ5NywgMzI1MDIsIDMyNTA5LCAzMjUxNCwgMzI1MTksIDMyNTI0LCAzMjUyOSwgMzI1MzYsIDMyNTQyLCAKKyAgICAzMjU0OCwgMzI1NTQsIDMyNTYwLCAzMjU2NiwgMzI1NzUsIDMyNTg0LCAzMjU5MCwgMzI1OTYsIDMyNjA0LCAzMjYxMiwgCisgICAgMzI2MjEsIDMyNjMwLCAzMjYzOCwgMzI2NDYsIDMyNjU1LCAzMjY2NCwgMCwgMCwgMCwgMzI2NzIsIDMyNjc3LCAzMjY4MiwgCisgICAgMzI2ODcsIDMyNjkxLCAzMjY5NSwgMzI2OTksIDMyNzA0LCAzMjcwOCwgMzI3MTIsIDMyNzE3LCAzMjcyMSwgMzI3MjYsIAorICAgIDMyNzMxLCAzMjczNiwgMzI3NDEsIDMyNzQ2LCAzMjc1MSwgMzI3NTYsIDMyNzYxLCAzMjc2NiwgMzI3NzAsIDMyNzc0LCAKKyAgICAzMjc3OSwgMzI3ODQsIDMyNzg5LCAzMjc5MywgMzI3OTcsIDMyODAyLCAzMjgwNiwgMzI4MTEsIDMyODE2LCAzMjgyMSwgCisgICAgMzI4MjUsIDMyODMxLCAzMjgzNywgMzI4NDMsIDMyODQ5LCAzMjg1NSwgMzI4NjEsIDMyODY3LCAzMjg3MywgMzI4NzksIAorICAgIDMyODg0LCAzMjg4OSwgMzI4OTYsIDMyOTA0LCAzMjkwOSwgMzI5MTQsIDMyOTE5LCAzMjkyMywgMzI5MjcsIDMyOTMxLCAKKyAgICAzMjkzNSwgMzI5MzksIDMyOTQzLCAzMjk0OCwgMzI5NTIsIDMyOTU3LCAzMjk2MSwgMzI5NjYsIDMyOTcxLCAzMjk3NiwgCisgICAgMzI5ODIsIDMyOTg4LCAzMjk5MiwgMzI5OTgsIDMzMDAyLCAzMzAwOCwgMzMwMTQsIDMzMDE5LCAzMzAyNiwgMzMwMzAsIAorICAgIDMzMDM2LCAzMzA0MCwgMzMwNDYsIDMzMDUxLCAzMzA1OCwgMzMwNjUsIDMzMDcwLCAzMzA3NywgMzMwODIsIDMzMDg3LCAKKyAgICAzMzA5MiwgMzMwOTksIDMzMTAzLCAzMzEwOSwgMzMxMTYsIDMzMTIzLCAzMzEyOCwgMzMxMzUsIDMzMTQyLCAzMzE0NiwgCisgICAgMzMxNTIsIDMzMTU3LCAzMzE2MSwgMzMxNjcsIDMzMTcyLCAzMzE3NywgMzMxODIsIDMzMTg3LCAzMzE5MSwgMzMxOTUsIAorICAgIDMzMjAwLCAzMzIwNSwgMzMyMTIsIDMzMjE4LCAzMzIyMywgMzMyMzAsIDMzMjM1LCAzMzI0MiwgMzMyNDcsIDMzMjU3LCAKKyAgICAzMzI2MywgMzMyNjksIDMzMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzI3NywgMzMyODYsIDMzMjkzLCAzMzMwMCwgCisgICAgMzMzMDcsIDMzMzExLCAzMzMxNiwgMzMzMjEsIDMzMzI2LCAzMzMzMSwgMzMzMzYsIDMzMzQxLCAzMzM0NiwgMzMzNTEsIAorICAgIDMzMzU2LCAzMzM2MSwgMzMzNjYsIDMzMzcxLCAzMzM3NSwgMzMzNzksIDMzMzg0LCAzMzM4OSwgMzMzOTQsIDMzMzk5LCAKKyAgICAzMzQwNCwgMzM0MDksIDMzNDEzLCAzMzQxOCwgMzM0MjMsIDMzNDI4LCAzMzQzMywgMzM0MzcsIDMzNDQyLCAzMzQ0NiwgCisgICAgMzM0NTAsIDMzNDU1LCAzMzQ2MCwgMzM0NjUsIDMzNDcwLCAzMzQ3NSwgMzM0NzksIDMzNDg1LCAzMzQ5MiwgMzM0OTgsIAorICAgIDMzNTAzLCAzMzUwOCwgMzM1MTQsIDMzNTE5LCAzMzUyNSwgMzM1MzAsIDMzNTM2LCAzMzU0MiwgMzM1NDcsIDMzNTUzLCAKKyAgICAzMzU1OSwgMzM1NjQsIDMzNTcwLCAzMzU3NiwgMzM1ODIsIDMzNTg3LCAwLCAwLCAwLCAzMzU5MiwgMzM1OTgsIDMzNjA4LCAKKyAgICAzMzYxNCwgMzM2MjIsIDMzNjI4LCAzMzYzMywgMzM2MzcsIDMzNjQxLCAzMzY0NSwgMzM2NDksIDMzNjUzLCAzMzY1NywgCisgICAgMzM2NjIsIDMzNjY2LCAwLCAwLCAwLCAzMzY3MSwgMzM2NzYsIDMzNjgxLCAzMzY4NiwgMzM2OTMsIDMzNjk5LCAzMzcwNSwgCisgICAgMzM3MTEsIDMzNzE3LCAzMzcyMywgMzM3MjksIDMzNzM2LCAzMzc0MiwgMzM3NDksIDMzNzU1LCAzMzc2MiwgMzM3NjksIAorICAgIDMzNzc2LCAzMzc4MywgMzM3OTAsIDMzNzk3LCAzMzgwNCwgMzM4MTEsIDMzODE4LCAzMzgyNSwgMzM4MzIsIDMzODM5LCAKKyAgICAzMzg0NiwgMzM4NTMsIDMzODYwLCAzMzg2NywgMzM4NzQsIDMzODgxLCAzMzg4OCwgMzM4OTUsIDMzOTAyLCAzMzkwOSwgCisgICAgMzM5MTYsIDMzOTIzLCAzMzkzMCwgMzM5MzcsIDMzOTQ0LCAzMzk1MSwgMzM5NTgsIDMzOTY2LCAzMzk3NCwgMzM5ODIsIAorICAgIDMzOTg4LCAzMzk5NCwgMzQwMDAsIDM0MDA4LCAzNDAxNywgMzQwMjQsIDM0MDMxLCAzNDAzNywgMzQwNDQsIDM0MDUxLCAKKyAgICAzNDA1OCwgMzQwNjYsIDM0MDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQxNywgMTI0MjMsIDEyNDI4LCAKLSAgICAxMjQzMywgMTI0MzgsIDEyNDQzLCAxMjQ0OCwgMTI0NTMsIDEyNDU4LCAxMjQ2MywgMTI0NjgsIDEyNDczLCAxMjQ3OCwgCi0gICAgMTI0ODMsIDEyNDg3LCAxMjQ5MSwgMTI0OTUsIDEyNTAwLCAxMjUwNiwgMTI1MTIsIDEyNTE4LCAxMjUyMywgMTI1MjgsIAotICAgIDEyNTMzLCAxMjUzOCwgMTI1NDQsIDEyNTUzLCAxMjU2MSwgMTI1NjcsIDEyNTc1LCAxMjU4MSwgMTI1ODUsIDEyNTg5LCAKLSAgICAxMjU5MywgMTI1OTgsIDEyNjAxLCAxMjYwNSwgMTI2MDgsIDEyNjEyLCAxMjYxNSwgMTI2MTksIDEyNjIzLCAxMjYyNywgCi0gICAgMTI2MzIsIDEyNjM3LCAxMjY0MCwgMTI2NDQsIDEyNjQ5LCAxMjY1NCwgMTI2NTcsIDEyNjYxLCAxMjY2NCwgMTI2NjgsIAotICAgIDEyNjcyLCAxMjY3NiwgMTI2ODAsIDEyNjg0LCAxMjY4OCwgMTI2OTIsIDEyNjk2LCAxMjcwMCwgMTI3MDQsIDEyNzA4LCAKLSAgICAxMjcxMiwgMTI3MTYsIDEyNzIwLCAxMjcyNCwgMTI3MjgsIDEyNzMyLCAxMjczNiwgMTI3NDAsIDEyNzQ0LCAxMjc0NywgCi0gICAgMTI3NTEsIDEyNzU1LCAxMjc1OSwgMTI3NjIsIDEyNzY1LCAxMjc2OSwgMTI3NzMsIDEyNzc3LCAxMjc4MSwgMTI3ODUsIAotICAgIDEyNzg5LCAxMjc5MywgMTI3OTcsIDEyODAxLCAxMjgwNCwgMTI4MDksIDEyODE0LCAxMjgxOCwgMTI4MjIsIDEyODI3LCAKLSAgICAxMjgzMSwgMTI4MzYsIDEyODQwLCAxMjg0NSwgMTI4NTAsIDEyODU2LCAxMjg2MiwgMTI4NjgsIDEyODcyLCAxMjg3NywgCi0gICAgMTI4ODMsIDEyODg5LCAxMjg5MywgMTI4OTgsIDEyOTAyLCAxMjkwOCwgMTI5MTMsIDEyOTE2LCAxMjkyMiwgMTI5MjgsIAotICAgIDEyOTMzLCAxMjkzOCwgMTI5NDUsIDEyOTUwLCAxMjk1NSwgMTI5NTksIDEyOTYzLCAxMjk2NywgMTI5NzEsIDEyOTc1LCAKLSAgICAxMjk3OSwgMTI5ODMsIDEyOTg3LCAxMjk5MiwgMTI5OTcsIDEzMDAyLCAxMzAwOCwgMTMwMTEsIDEzMDE1LCAxMzAxOSwgCi0gICAgMTMwMjIsIDEzMDI1LCAxMzAyOCwgMTMwMzEsIDEzMDM0LCAxMzAzNywgMTMwNDEsIDEzMDQ0LCAxMzA0OCwgMTMwNTIsIAotICAgIDEzMDU5LCAxMzA2NCwgMTMwNjgsIDEzMDcyLCAxMzA3NiwgMTMwODAsIDEzMDg0LCAxMzA5MCwgMTMwOTQsIDEzMDk4LCAKLSAgICAxMzEwMiwgMTMxMDYsIDEzMTEyLCAxMzExNiwgMTMxMjAsIDEzMTIzLCAxMzEyNywgMTMxMzEsIDAsIDEzMTM1LCAxMzEzOCwgCi0gICAgMTMxNDIsIDEzMTQ1LCAxMzE0OSwgMTMxNTIsIDEzMTU2LCAxMzE2MCwgMCwgMCwgMTMxNjQsIDEzMTY3LCAwLCAwLCAKLSAgICAxMzE3MSwgMTMxNzQsIDEzMTc4LCAxMzE4MSwgMTMxODUsIDEzMTg5LCAxMzE5MywgMTMxOTcsIDEzMjAxLCAxMzIwNSwgCi0gICAgMTMyMDksIDEzMjEzLCAxMzIxNywgMTMyMjEsIDEzMjI1LCAxMzIyOSwgMTMyMzMsIDEzMjM3LCAxMzI0MSwgMTMyNDUsIAotICAgIDEzMjQ5LCAxMzI1MywgMCwgMTMyNTcsIDEzMjYwLCAxMzI2NCwgMTMyNjgsIDEzMjcyLCAxMzI3NSwgMTMyNzgsIDAsIAotICAgIDEzMjgyLCAwLCAwLCAwLCAxMzI4NiwgMTMyOTAsIDEzMjk0LCAxMzI5OCwgMCwgMCwgMTMzMDEsIDEzMzA1LCAxMzMwOSwgCi0gICAgMTMzMTQsIDEzMzE4LCAxMzMyMywgMTMzMjcsIDEzMzMyLCAxMzMzNywgMCwgMCwgMTMzNDMsIDEzMzQ3LCAwLCAwLCAKLSAgICAxMzM1MiwgMTMzNTYsIDEzMzYxLCAxMzM2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzNzEsIDAsIDAsIDAsIDAsIAotICAgIDEzMzc3LCAxMzM4MSwgMCwgMTMzODUsIDEzMzg5LCAxMzM5NCwgMTMzOTksIDEzNDA0LCAwLCAwLCAxMzQxMCwgMTM0MTQsIAotICAgIDEzNDE3LCAxMzQyMCwgMTM0MjMsIDEzNDI2LCAxMzQyOSwgMTM0MzIsIDEzNDM2LCAxMzQzOSwgMTM0NDMsIDEzNDUxLCAKLSAgICAxMzQ2MCwgMTM0NjQsIDEzNDY4LCAxMzQ3NCwgMTM0ODAsIDEzNDg2LCAxMzQ5MiwgMTM1MDYsIDEzNTEzLCAxMzUxNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM1MjAsIDEzNTI3LCAxMzUzMiwgMCwgMTM1MzcsIDEzNTQxLCAxMzU0NiwgMTM1NTAsIDEzNTU1LCAKLSAgICAxMzU1OSwgMCwgMCwgMCwgMCwgMTM1NjQsIDEzNTY5LCAwLCAwLCAxMzU3NCwgMTM1NzksIDEzNTg0LCAxMzU4OCwgMTM1OTMsIAotICAgIDEzNTk4LCAxMzYwMywgMTM2MDgsIDEzNjEzLCAxMzYxOCwgMTM2MjMsIDEzNjI4LCAxMzYzMywgMTM2MzgsIDEzNjQzLCAKLSAgICAxMzY0OCwgMTM2NTMsIDEzNjU4LCAxMzY2MywgMTM2NjgsIDEzNjczLCAxMzY3OCwgMCwgMTM2ODMsIDEzNjg3LCAxMzY5MiwgCi0gICAgMTM2OTcsIDEzNzAyLCAxMzcwNiwgMTM3MTAsIDAsIDEzNzE1LCAxMzcyMCwgMCwgMTM3MjUsIDEzNzMwLCAwLCAxMzczNSwgCi0gICAgMTM3NDAsIDAsIDAsIDEzNzQ0LCAwLCAxMzc0OSwgMTM3NTUsIDEzNzYwLCAxMzc2NiwgMTM3NzEsIDAsIDAsIDAsIDAsIAotICAgIDEzNzc3LCAxMzc4MywgMCwgMCwgMTM3ODksIDEzNzk1LCAxMzgwMSwgMCwgMCwgMCwgMTM4MDYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzODExLCAxMzgxNiwgMTM4MjEsIDEzODI2LCAwLCAxMzgzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4MzYsIAotICAgIDEzODQxLCAxMzg0NSwgMTM4NDksIDEzODUzLCAxMzg1NywgMTM4NjEsIDEzODY1LCAxMzg3MCwgMTM4NzQsIDEzODc5LCAKLSAgICAxMzg4MywgMTM4ODcsIDEzODkxLCAxMzg5NSwgMTM5MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzOTA2LCAxMzkxMSwgMTM5MTYsIDAsIDEzOTIxLCAxMzkyNSwgMTM5MzAsIDEzOTM0LCAxMzkzOSwgMTM5NDMsIDEzOTQ4LCAKLSAgICAxMzk1MywgMTM5NTgsIDAsIDEzOTY0LCAxMzk2OCwgMTM5NzMsIDAsIDEzOTc5LCAxMzk4MywgMTM5ODgsIDEzOTkyLCAKLSAgICAxMzk5NywgMTQwMDIsIDE0MDA3LCAxNDAxMiwgMTQwMTcsIDE0MDIyLCAxNDAyNywgMTQwMzIsIDE0MDM3LCAxNDA0MiwgCi0gICAgMTQwNDcsIDE0MDUyLCAxNDA1NywgMTQwNjIsIDE0MDY3LCAxNDA3MiwgMTQwNzcsIDE0MDgyLCAwLCAxNDA4NywgMTQwOTEsIAotICAgIDE0MDk2LCAxNDEwMSwgMTQxMDYsIDE0MTEwLCAxNDExNCwgMCwgMTQxMTksIDE0MTI0LCAwLCAxNDEyOSwgMTQxMzQsIAotICAgIDE0MTM5LCAxNDE0NCwgMTQxNDksIDAsIDAsIDE0MTUzLCAxNDE1OCwgMTQxNjMsIDE0MTY5LCAxNDE3NCwgMTQxODAsIAotICAgIDE0MTg1LCAxNDE5MSwgMTQxOTcsIDE0MjA0LCAwLCAxNDIxMSwgMTQyMTYsIDE0MjIyLCAwLCAxNDIyOSwgMTQyMzQsIAotICAgIDE0MjQwLCAwLCAwLCAxNDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyNDksIAotICAgIDE0MjU1LCAxNDI2MSwgMTQyNjcsIDAsIDAsIDE0Mjc0LCAxNDI3OSwgMTQyODMsIDE0Mjg3LCAxNDI5MSwgMTQyOTUsIAotICAgIDE0Mjk5LCAxNDMwMywgMTQzMDgsIDE0MzEyLCAxNDMxNywgMTQzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MzI3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDMzMiwgMTQzMzYsIDE0MzQwLCAwLCAxNDM0NCwgMTQzNDcsIDE0MzUxLCAxNDM1NCwgCi0gICAgMTQzNTgsIDE0MzYxLCAxNDM2NSwgMTQzNjksIDAsIDAsIDE0MzczLCAxNDM3NiwgMCwgMCwgMTQzODAsIDE0MzgzLCAKLSAgICAxNDM4NywgMTQzOTAsIDE0Mzk0LCAxNDM5OCwgMTQ0MDIsIDE0NDA2LCAxNDQxMCwgMTQ0MTQsIDE0NDE4LCAxNDQyMiwgCi0gICAgMTQ0MjYsIDE0NDMwLCAxNDQzNCwgMTQ0MzgsIDE0NDQyLCAxNDQ0NiwgMTQ0NTAsIDE0NDU0LCAxNDQ1OCwgMTQ0NjIsIDAsIAotICAgIDE0NDY2LCAxNDQ2OSwgMTQ0NzMsIDE0NDc3LCAxNDQ4MSwgMTQ0ODQsIDE0NDg3LCAwLCAxNDQ5MSwgMTQ0OTUsIDAsIAotICAgIDE0NDk5LCAxNDUwMywgMTQ1MDcsIDE0NTExLCAxNDUxNSwgMCwgMCwgMTQ1MTgsIDE0NTIyLCAxNDUyNiwgMTQ1MzEsIAotICAgIDE0NTM1LCAxNDU0MCwgMTQ1NDQsIDE0NTQ5LCAxNDU1NCwgMCwgMCwgMTQ1NjAsIDE0NTY0LCAwLCAwLCAxNDU2OSwgCi0gICAgMTQ1NzMsIDE0NTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU4MiwgMTQ1ODgsIDAsIDAsIDAsIDAsIDE0NTk0LCAKLSAgICAxNDU5OCwgMCwgMTQ2MDIsIDE0NjA2LCAxNDYxMSwgMTQ2MTYsIDE0NjIxLCAwLCAwLCAxNDYyNywgMTQ2MzEsIDE0NjM0LCAKLSAgICAxNDYzNywgMTQ2NDAsIDE0NjQzLCAxNDY0NiwgMTQ2NDksIDE0NjUzLCAxNDY1NiwgMTQ2NjAsIDE0NjYzLCAxNDY2NywgCi0gICAgMTQ2NzMsIDE0Njc5LCAxNDY4NSwgMTQ2OTEsIDE0Njk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDcwMywgCi0gICAgMTQ3MDcsIDAsIDE0NzExLCAxNDcxNCwgMTQ3MTgsIDE0NzIxLCAxNDcyNSwgMTQ3MjgsIDAsIDAsIDAsIDE0NzMyLCAKLSAgICAxNDczNSwgMTQ3MzksIDAsIDE0NzQzLCAxNDc0NiwgMTQ3NTAsIDE0NzU0LCAwLCAwLCAwLCAxNDc1NywgMTQ3NjEsIDAsIAotICAgIDE0NzY1LCAwLCAxNDc2OSwgMTQ3NzMsIDAsIDAsIDAsIDE0Nzc3LCAxNDc4MSwgMCwgMCwgMCwgMTQ3ODUsIDE0Nzg5LCAKLSAgICAxNDc5MywgMCwgMCwgMCwgMTQ3OTYsIDE0Nzk5LCAxNDgwMiwgMTQ4MDYsIDE0ODEwLCAxNDgxNCwgMTQ4MTgsIDE0ODIyLCAKLSAgICAxNDgyNiwgMTQ4MzAsIDE0ODM0LCAxNDgzOCwgMCwgMCwgMCwgMCwgMTQ4NDEsIDE0ODQ2LCAxNDg1MCwgMTQ4NTUsIAotICAgIDE0ODU5LCAwLCAwLCAwLCAxNDg2NCwgMTQ4NjgsIDE0ODczLCAwLCAxNDg3OCwgMTQ4ODIsIDE0ODg3LCAxNDg5MiwgMCwgMCwgCi0gICAgMTQ4OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDkwNSwgMTQ5MDksIDE0OTEyLCAxNDkxNSwgMTQ5MTgsIDE0OTIxLCAxNDkyNCwgMTQ5MjcsIDE0OTMxLCAxNDkzNCwgCi0gICAgMTQ5MzgsIDE0OTQyLCAxNDk0NywgMTQ5NTIsIDE0OTU2LCAxNDk2MCwgMTQ5NjQsIDE0OTY4LCAxNDk3MiwgMTQ5NzcsIAotICAgIDE0OTgxLCAwLCAwLCAwLCAwLCAwLCAxNDk4NCwgMTQ5OTAsIDE0OTk0LCAxNDk5OCwgMCwgMTUwMDIsIDE1MDA1LCAxNTAwOSwgCi0gICAgMTUwMTIsIDE1MDE2LCAxNTAxOSwgMTUwMjMsIDE1MDI3LCAwLCAxNTAzMSwgMTUwMzQsIDE1MDM4LCAwLCAxNTA0MiwgCi0gICAgMTUwNDUsIDE1MDQ5LCAxNTA1MywgMTUwNTYsIDE1MDYwLCAxNTA2NCwgMTUwNjgsIDE1MDcyLCAxNTA3NiwgMTUwODAsIAotICAgIDE1MDg0LCAxNTA4OCwgMTUwOTIsIDE1MDk2LCAxNTEwMCwgMTUxMDQsIDE1MTA4LCAxNTExMiwgMTUxMTYsIDE1MTIwLCAKLSAgICAxNTEyNCwgMTUxMjgsIDAsIDE1MTMyLCAxNTEzNSwgMTUxMzksIDE1MTQzLCAxNTE0NywgMTUxNTAsIDE1MTUzLCAxNTE1NywgCi0gICAgMTUxNjEsIDE1MTY1LCAxNTE2OSwgMTUxNzMsIDE1MTc3LCAxNTE4MSwgMTUxODUsIDE1MTg5LCAwLCAwLCAwLCAxNTE5MiwgCi0gICAgMTUxOTYsIDE1MjAxLCAxNTIwNSwgMTUyMTAsIDE1MjE0LCAxNTIxOSwgMTUyMjQsIDAsIDE1MjMwLCAxNTIzNCwgMTUyMzksIAotICAgIDAsIDE1MjQ0LCAxNTI0OCwgMTUyNTMsIDE1MjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI2MiwgMTUyNjYsIDAsIAotICAgIDE1MjcyLCAxNTI3NiwgMTUyODAsIDAsIDAsIDAsIDAsIDAsIDE1Mjg0LCAxNTI4OSwgMTUyOTQsIDE1Mjk5LCAwLCAwLCAKLSAgICAxNTMwNSwgMTUzMDksIDE1MzEyLCAxNTMxNSwgMTUzMTgsIDE1MzIxLCAxNTMyNCwgMTUzMjcsIDE1MzMxLCAxNTMzNCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzgsIDE1MzUxLCAxNTM2MywgMTUzNzUsIDE1Mzg3LCAxNTM5OSwgMTU0MTEsIAotICAgIDE1NDIzLCAwLCAxNTQyNywgMTU0MzEsIDE1NDM1LCAwLCAxNTQzOSwgMTU0NDIsIDE1NDQ2LCAxNTQ0OSwgMTU0NTMsIAotICAgIDE1NDU2LCAxNTQ2MCwgMTU0NjQsIDAsIDE1NDY4LCAxNTQ3MSwgMTU0NzUsIDAsIDE1NDc5LCAxNTQ4MiwgMTU0ODYsIAotICAgIDE1NDkwLCAxNTQ5MywgMTU0OTcsIDE1NTAxLCAxNTUwNSwgMTU1MDksIDE1NTEzLCAxNTUxNywgMTU1MjEsIDE1NTI1LCAKLSAgICAxNTUyOSwgMTU1MzMsIDE1NTM3LCAxNTU0MSwgMTU1NDUsIDE1NTQ5LCAxNTU1MywgMTU1NTcsIDE1NTYxLCAxNTU2NSwgMCwgCi0gICAgMTU1NjksIDE1NTcyLCAxNTU3NiwgMTU1ODAsIDE1NTg0LCAxNTU4NywgMTU1OTAsIDE1NTk0LCAxNTU5OCwgMTU2MDIsIDAsIAotICAgIDE1NjA2LCAxNTYxMCwgMTU2MTQsIDE1NjE4LCAxNTYyMiwgMCwgMCwgMTU2MjUsIDE1NjI5LCAxNTYzMywgMTU2MzgsIAotICAgIDE1NjQyLCAxNTY0NywgMTU2NTEsIDE1NjU2LCAxNTY2MSwgMCwgMTU2NjcsIDE1NjcxLCAxNTY3NiwgMCwgMTU2ODEsIAotICAgIDE1Njg1LCAxNTY5MCwgMTU2OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1Njk5LCAxNTcwMywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTU3MDksIDAsIDE1NzEzLCAxNTcxOCwgMTU3MjMsIDE1NzI4LCAwLCAwLCAxNTczNCwgMTU3MzgsIDE1NzQxLCAKLSAgICAxNTc0NCwgMTU3NDcsIDE1NzUwLCAxNTc1MywgMTU3NTYsIDE1NzYwLCAxNTc2MywgMCwgMTU3NjcsIDE1NzcxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc3NSwgMTU3NzksIDE1NzgzLCAwLCAxNTc4NywgMTU3OTAsIAotICAgIDE1Nzk0LCAxNTc5NywgMTU4MDEsIDE1ODA0LCAxNTgwOCwgMTU4MTIsIDAsIDE1ODE2LCAxNTgxOSwgMTU4MjMsIDAsIAotICAgIDE1ODI3LCAxNTgzMCwgMTU4MzQsIDE1ODM4LCAxNTg0MSwgMTU4NDUsIDE1ODQ5LCAxNTg1MywgMTU4NTcsIDE1ODYxLCAKLSAgICAxNTg2NSwgMTU4NjksIDE1ODczLCAxNTg3NywgMTU4ODEsIDE1ODg1LCAxNTg4OSwgMTU4OTMsIDE1ODk3LCAxNTkwMSwgCi0gICAgMTU5MDUsIDE1OTA5LCAxNTkxMywgMTU5MTcsIDE1OTIxLCAxNTkyNCwgMTU5MjgsIDE1OTMyLCAxNTkzNiwgMTU5MzksIAotICAgIDE1OTQyLCAxNTk0NiwgMTU5NTAsIDE1OTU0LCAxNTk1OCwgMTU5NjIsIDE1OTY2LCAxNTk3MCwgMTU5NzQsIDE1OTc4LCAKLSAgICAxNTk4MSwgMCwgMCwgMTU5ODUsIDE1OTg5LCAxNTk5NCwgMTU5OTgsIDE2MDAzLCAxNjAwNywgMTYwMTIsIDE2MDE3LCAwLCAKLSAgICAxNjAyMywgMTYwMjcsIDE2MDMyLCAwLCAxNjAzNywgMTYwNDEsIDE2MDQ2LCAxNjA1MSwgMTYwNTUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE2MDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjA2NiwgMTYwNzIsIDE2MDc3LCAxNjA4MiwgMTYwODcsIAotICAgIDAsIDAsIDE2MDkzLCAxNjA5NywgMTYxMDAsIDE2MTAzLCAxNjEwNiwgMTYxMDksIDE2MTEyLCAxNjExNSwgMTYxMTksIAotICAgIDE2MTIyLCAxNjEyNiwgMTYxMzAsIDE2MTM1LCAxNjE0MCwgMTYxNDYsIDE2MTUyLCAwLCAwLCAwLCAxNjE1OCwgMTYxNjIsIAotICAgIDE2MTY4LCAxNjE3NCwgMTYxODAsIDE2MTg1LCAxNjE5MSwgMCwgMCwgMTYxOTcsIDE2MjAxLCAwLCAxNjIwNSwgMTYyMDksIAotICAgIDE2MjEzLCAxNjIxNywgMTYyMjEsIDE2MjI1LCAxNjIyOSwgMTYyMzMsIDE2MjM3LCAxNjI0MSwgMTYyNDUsIDE2MjQ5LCAKLSAgICAxNjI1MywgMTYyNTcsIDE2MjYxLCAxNjI2NSwgMTYyNjksIDE2MjczLCAwLCAwLCAwLCAxNjI3NywgMTYyODMsIDE2Mjg5LCAKLSAgICAxNjI5NSwgMTYzMDEsIDE2MzA3LCAxNjMxMywgMTYzMTksIDE2MzI1LCAxNjMzMSwgMTYzMzcsIDE2MzQzLCAxNjM1MSwgCi0gICAgMTYzNTcsIDE2MzYzLCAxNjM2OSwgMTYzNzUsIDE2MzgxLCAxNjM4NywgMTYzOTMsIDE2Mzk5LCAxNjQwNSwgMTY0MTEsIAotICAgIDE2NDE3LCAwLCAxNjQyMywgMTY0MjksIDE2NDM1LCAxNjQ0MSwgMTY0NDcsIDE2NDUzLCAxNjQ1NywgMTY0NjMsIDE2NDY3LCAKLSAgICAwLCAxNjQ3MSwgMCwgMCwgMTY0NzcsIDE2NDgxLCAxNjQ4NywgMTY0OTMsIDE2NDk5LCAxNjUwMywgMTY1MDksIDAsIDAsIDAsIAotICAgIDE2NTEzLCAwLCAwLCAwLCAwLCAxNjUxNywgMTY1MjIsIDE2NTI5LCAxNjUzNiwgMTY1NDMsIDE2NTUwLCAwLCAxNjU1NywgMCwgCi0gICAgMTY1NjQsIDE2NTY5LCAxNjU3NCwgMTY1ODEsIDE2NTg4LCAxNjU5NywgMTY2MDgsIDE2NjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNjYyMiwgMTY2MjgsIDE2NjMzLCAxNjYzOCwgMTY2NDMsIDE2NjQ4LCAxNjY1MywgMTY2NTgsIDE2NjY0LCAxNjY2OSwgMCwgCi0gICAgMCwgMTY2NzUsIDE2NjgyLCAxNjY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2OTQsIDE2NzAxLCAKLSAgICAxNjcwOCwgMTY3MTUsIDE2NzIyLCAxNjcyOSwgMTY3MzYsIDE2NzQzLCAxNjc1MCwgMTY3NTcsIDE2NzY0LCAxNjc3MSwgCi0gICAgMTY3NzgsIDE2Nzg1LCAxNjc5MiwgMTY3OTksIDE2ODA2LCAxNjgxMywgMTY4MjAsIDE2ODI3LCAxNjgzNCwgMTY4NDEsIAotICAgIDE2ODQ4LCAxNjg1NSwgMTY4NjIsIDE2ODY5LCAxNjg3NiwgMTY4ODMsIDE2ODkwLCAxNjg5NywgMTY5MDQsIDE2OTExLCAKLSAgICAxNjkxOCwgMTY5MjQsIDE2OTMxLCAxNjkzOCwgMTY5NDMsIDE2OTUwLCAxNjk1NSwgMTY5NjIsIDE2OTY5LCAxNjk3NiwgCi0gICAgMTY5ODMsIDE2OTkwLCAxNjk5NywgMTcwMDMsIDE3MDEwLCAxNzAxNSwgMTcwMjEsIDE3MDI4LCAxNzAzNSwgMTcwNDIsIAotICAgIDE3MDQ4LCAxNzA1NSwgMTcwNjIsIDE3MDY5LCAxNzA3NSwgMTcwODIsIDAsIDAsIDAsIDAsIDE3MDg3LCAxNzA5NCwgCi0gICAgMTcxMDAsIDE3MTA3LCAxNzExMywgMTcxMjIsIDE3MTMxLCAxNzEzNiwgMTcxNDEsIDE3MTQ2LCAxNzE1MywgMTcxNjAsIAotICAgIDE3MTY3LCAxNzE3NCwgMTcxNzksIDE3MTg0LCAxNzE4OSwgMTcxOTQsIDE3MTk5LCAxNzIwMywgMTcyMDcsIDE3MjExLCAKLSAgICAxNzIxNSwgMTcyMTksIDE3MjIzLCAxNzIyOCwgMTcyMzIsIDE3MjM3LCAxNzI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTcyNDcsIDE3MjUyLCAwLCAxNzI1OSwgMCwgMCwgMTcyNjYsIDE3MjcxLCAwLCAxNzI3NiwgMCwgCi0gICAgMCwgMTcyODMsIDAsIDAsIDAsIDAsIDAsIDAsIDE3Mjg4LCAxNzI5MywgMTcyOTcsIDE3MzA0LCAwLCAxNzMxMSwgMTczMTYsIAotICAgIDE3MzIxLCAxNzMyNiwgMTczMzMsIDE3MzQwLCAxNzM0NywgMCwgMTczNTQsIDE3MzU5LCAxNzM2NCwgMCwgMTczNzEsIDAsIAotICAgIDE3Mzc4LCAwLCAwLCAxNzM4MywgMTczOTAsIDAsIDE3Mzk3LCAxNzQwMSwgMTc0MDgsIDE3NDEyLCAxNzQxNywgMTc0MjUsIAotICAgIDE3NDMxLCAxNzQzNywgMTc0NDIsIDE3NDQ4LCAxNzQ1NCwgMTc0NjAsIDE3NDY1LCAwLCAxNzQ3MSwgMTc0NzksIDE3NDg2LCAKLSAgICAwLCAwLCAxNzQ5MywgMTc0OTgsIDE3NTA0LCAxNzUwOSwgMTc1MTUsIDAsIDE3NTIxLCAwLCAxNzUyNywgMTc1MzQsIAotICAgIDE3NTQxLCAxNzU0OCwgMTc1NTUsIDE3NTYwLCAwLCAwLCAxNzU2NCwgMTc1NjksIDE3NTczLCAxNzU3NywgMTc1ODEsIAotICAgIDE3NTg1LCAxNzU4OSwgMTc1OTMsIDE3NTk4LCAxNzYwMiwgMCwgMCwgMTc2MDcsIDE3NjEzLCAxNzYxOSwgMTc2MjYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NjMzLCAxNzYzNywgMTc2NDgsIDE3NjYzLCAxNzY3OCwgMTc2ODgsIDE3Njk5LCAKLSAgICAxNzcxMiwgMTc3MjMsIDE3NzI5LCAxNzczNywgMTc3NDcsIDE3NzUzLCAxNzc2MSwgMTc3NjUsIDE3NzcxLCAxNzc3NywgCi0gICAgMTc3ODUsIDE3Nzk1LCAxNzgwMywgMTc4MTYsIDE3ODIyLCAxNzgzMCwgMTc4MzgsIDE3ODUwLCAxNzg1NywgMTc4NjUsIAotICAgIDE3ODczLCAxNzg4MSwgMTc4ODksIDE3ODk3LCAxNzkwNSwgMTc5MTUsIDE3OTE5LCAxNzkyMiwgMTc5MjUsIDE3OTI4LCAKLSAgICAxNzkzMSwgMTc5MzQsIDE3OTM3LCAxNzk0MSwgMTc5NDQsIDE3OTQ4LCAxNzk1MiwgMTc5NTYsIDE3OTYwLCAxNzk2NCwgCi0gICAgMTc5NjgsIDE3OTcyLCAxNzk3NywgMTc5ODEsIDE3OTg2LCAxNzk5MSwgMTc5OTcsIDE4MDA3LCAxODAyMSwgMTgwMzEsIAotICAgIDE4MDM3LCAxODA0MywgMTgwNTEsIDE4MDU5LCAxODA2NywgMTgwNzUsIDE4MDgxLCAxODA4NywgMTgwOTAsIDE4MDk0LCAKLSAgICAxODA5OCwgMTgxMDIsIDE4MTA2LCAxODExMCwgMTgxMTQsIDAsIDE4MTE4LCAxODEyMiwgMTgxMjYsIDE4MTMwLCAxODEzNCwgCi0gICAgMTgxMzgsIDE4MTQyLCAxODE0NiwgMTgxNTAsIDE4MTU0LCAxODE1OCwgMTgxNjIsIDE4MTY1LCAxODE2OSwgMTgxNzMsIAotICAgIDE4MTc3LCAxODE4MCwgMTgxODQsIDE4MTg4LCAxODE5MiwgMTgxOTYsIDE4MjAwLCAxODIwNCwgMTgyMDgsIDE4MjEyLCAKLSAgICAxODIxNSwgMTgyMTksIDE4MjIzLCAxODIyNywgMTgyMzEsIDE4MjM1LCAxODIzOCwgMTgyNDEsIDE4MjQ1LCAxODI1MSwgCi0gICAgMTgyNTUsIDAsIDAsIDAsIDAsIDE4MjU5LCAxODI2NCwgMTgyNjgsIDE4MjczLCAxODI3NywgMTgyODIsIDE4Mjg3LCAKLSAgICAxODI5MywgMTgyOTgsIDE4MzA0LCAxODMwOCwgMTgzMTMsIDE4MzE3LCAxODMyMiwgMTgzMzIsIDE4MzM4LCAxODM0NCwgCi0gICAgMTgzNTEsIDE4MzYxLCAxODM2NywgMTgzNzEsIDE4Mzc1LCAxODM4MSwgMTgzODcsIDE4Mzk1LCAxODQwMSwgMTg0MDksIAotICAgIDE4NDE3LCAxODQyNSwgMTg0MzUsIDE4NDQzLCAxODQ1MywgMTg0NTgsIDE4NDY0LCAxODQ3MCwgMTg0NzYsIDE4NDgyLCAKLSAgICAxODQ4OCwgMTg0OTQsIDAsIDE4NTAwLCAxODUwNiwgMTg1MTIsIDE4NTE4LCAxODUyNCwgMTg1MzAsIDE4NTM2LCAxODU0MiwgCi0gICAgMTg1NDgsIDE4NTU0LCAxODU2MCwgMTg1NjYsIDE4NTcxLCAxODU3NywgMTg1ODMsIDE4NTg5LCAxODU5NCwgMTg2MDAsIAotICAgIDE4NjA2LCAxODYxMiwgMTg2MTgsIDE4NjI0LCAxODYzMCwgMTg2MzYsIDE4NjQyLCAxODY0NywgMTg2NTMsIDE4NjU5LCAKLSAgICAxODY2NSwgMTg2NzEsIDE4Njc3LCAxODY4MiwgMTg2ODcsIDE4NjkzLCAxODcwMSwgMTg3MDgsIDAsIDE4NzE2LCAxODcyMywgCi0gICAgMTg3MzYsIDE4NzQzLCAxODc1MCwgMTg3NTgsIDE4NzY2LCAxODc3MiwgMTg3NzgsIDE4Nzg0LCAxODc5NCwgMTg3OTksIAotICAgIDE4ODA1LCAxODgxNSwgMTg4MjUsIDAsIDE4ODM1LCAxODg0NSwgMTg4NTMsIDE4ODY1LCAxODg3NywgMTg4ODMsIDE4ODk3LCAKLSAgICAxODkxMiwgMTg5MTcsIDE4OTIyLCAxODkzMCwgMTg5MzgsIDE4OTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxODk1NCwgMTg5NTcsIDE4OTYxLCAxODk2NSwgMTg5NjksIDE4OTczLCAxODk3NywgMTg5ODEsIDE4OTg1LCAKLSAgICAxODk4OSwgMTg5OTMsIDE4OTk3LCAxOTAwMSwgMTkwMDUsIDE5MDA5LCAxOTAxMywgMTkwMTcsIDE5MDIxLCAxOTAyNSwgCi0gICAgMTkwMjksIDE5MDMzLCAxOTAzNywgMTkwNDAsIDE5MDQ0LCAxOTA0OCwgMTkwNTIsIDE5MDU1LCAxOTA1OCwgMTkwNjIsIAotICAgIDE5MDY2LCAxOTA3MCwgMTkwNzQsIDE5MDc3LCAxOTA4MSwgMTkwODQsIDE5MDg5LCAxOTA5MiwgMTkwOTYsIDE5MDk5LCAKLSAgICAxOTEwMywgMTkxMDYsIDE5MTExLCAxOTExNCwgMTkxMTgsIDE5MTI1LCAxOTEzMCwgMTkxMzQsIDE5MTM5LCAxOTE0MywgCi0gICAgMTkxNDgsIDE5MTUyLCAxOTE1NywgMTkxNjQsIDE5MTcwLCAxOTE3NSwgMTkxNzksIDE5MTgzLCAxOTE4NywgMTkxOTEsIAotICAgIDE5MTk1LCAxOTIwMCwgMTkyMDYsIDE5MjEyLCAxOTIxNywgMTkyMjMsIDE5MjI3LCAxOTIzMCwgMTkyMzMsIDE5MjM2LCAKLSAgICAxOTIzOSwgMTkyNDIsIDE5MjQ1LCAxOTI0OSwgMTkyNTIsIDE5MjU2LCAxOTI2MiwgMTkyNjYsIDE5MjcwLCAxOTI3NCwgCi0gICAgMTkyNzgsIDE5MjgyLCAxOTI4NiwgMTkyOTAsIDE5Mjk0LCAxOTI5OSwgMTkzMDMsIDE5MzA4LCAxOTMxMywgMTkzMTksIAotICAgIDE5MzI0LCAxOTMzMCwgMTkzMzYsIDE5MzQyLCAxOTM0OCwgMTkzNTQsIDE5MzYyLCAxOTM2OSwgMTkzNzcsIDE5Mzg1LCAKLSAgICAxOTM5NCwgMTk0MDMsIDE5NDE0LCAxOTQyNCwgMTk0MzQsIDE5NDQ1LCAxOTQ1NiwgMTk0NjYsIDE5NDc2LCAxOTQ4NiwgCi0gICAgMTk0OTYsIDE5NTA2LCAxOTUxNiwgMTk1MjYsIDE5NTM2LCAxOTU0NCwgMTk1NTEsIDE5NTU3LCAxOTU2NCwgMTk1NjksIAotICAgIDE5NTc1LCAxOTU4MSwgMTk1ODcsIDE5NTkzLCAxOTU5OSwgMTk2MDUsIDE5NjExLCAxOTYxNywgMTk2MjMsIDE5NjI5LCAKLSAgICAxOTYzNSwgMTk2NDAsIDE5NjQ4LCAxOTY1NSwgMTk2NjEsIDE5NjY4LCAxOTY3NiwgMTk2ODIsIDE5Njg4LCAxOTY5NCwgCi0gICAgMTk3MDAsIDE5NzA4LCAxOTcxNiwgMTk3MjYsIDE5NzM0LCAxOTc0MiwgMTk3NDgsIDE5NzUzLCAxOTc1OCwgMTk3NjMsIAotICAgIDE5NzY4LCAxOTc3MywgMTk3NzgsIDE5Nzg0LCAxOTc4OSwgMTk3OTUsIDE5ODAxLCAxOTgwNywgMTk4MTMsIDE5ODIwLCAKLSAgICAxOTgyNSwgMTk4MzEsIDE5ODM2LCAxOTg0MSwgMTk4NDYsIDE5ODUxLCAxOTg1NiwgMTk4NjEsIDE5ODY2LCAxOTg3MSwgCi0gICAgMTk4NzYsIDE5ODgxLCAxOTg4NiwgMTk4OTEsIDE5ODk2LCAxOTkwMSwgMTk5MDYsIDE5OTExLCAxOTkxNiwgMTk5MjEsIAotICAgIDE5OTI2LCAxOTkzMSwgMTk5MzYsIDE5OTQxLCAxOTk0NiwgMTk5NTEsIDE5OTU2LCAxOTk2MSwgMTk5NjYsIDE5OTcxLCAKLSAgICAxOTk3NiwgMTk5ODEsIDE5OTg2LCAxOTk5MSwgMTk5OTYsIDIwMDAxLCAyMDAwNiwgMjAwMTEsIDIwMDE2LCAwLCAyMDAyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjAwMjYsIDAsIDAsIDIwMDMxLCAyMDAzNSwgMjAwMzksIDIwMDQzLCAyMDA0NywgMjAwNTEsIAotICAgIDIwMDU1LCAyMDA1OSwgMjAwNjMsIDIwMDY3LCAyMDA3MSwgMjAwNzUsIDIwMDc5LCAyMDA4MywgMjAwODcsIDIwMDkxLCAKLSAgICAyMDA5NSwgMjAwOTksIDIwMTAzLCAyMDEwNywgMjAxMTEsIDIwMTE1LCAyMDExOSwgMjAxMjMsIDIwMTI3LCAyMDEzMSwgCi0gICAgMjAxMzUsIDIwMTM5LCAyMDE0MywgMjAxNDcsIDIwMTUxLCAyMDE1NSwgMjAxNTksIDIwMTYzLCAyMDE2NywgMjAxNzEsIAotICAgIDIwMTc1LCAyMDE3OSwgMjAxODMsIDIwMTg3LCAyMDE5MSwgMjAxOTUsIDIwMjAxLCAyMDIwNSwgMjAyMTAsIDIwMjE1LCAKLSAgICAyMDIxOSwgMjAyMjQsIDIwMjI5LCAyMDIzMywgMjAyMzcsIDIwMjQxLCAyMDI0NSwgMjAyNDksIDIwMjUzLCAyMDI1NywgCi0gICAgMjAyNjEsIDIwMjY1LCAyMDI2OSwgMjAyNzMsIDIwMjc3LCAyMDI4MSwgMjAyODUsIDIwMjg5LCAyMDI5MywgMjAyOTcsIAotICAgIDIwMzAxLCAyMDMwNSwgMjAzMDksIDIwMzEzLCAyMDMxNywgMjAzMjEsIDIwMzI1LCAyMDMyOSwgMjAzMzMsIDIwMzM3LCAKLSAgICAyMDM0MSwgMjAzNDUsIDIwMzQ5LCAyMDM1MywgMjAzNTcsIDIwMzYxLCAyMDM2NSwgMjAzNjksIDIwMzczLCAyMDM3NywgCi0gICAgMjAzODEsIDIwMzg1LCAyMDM4OSwgMjAzOTMsIDIwMzk3LCAyMDQwMSwgMjA0MDUsIDIwNDA5LCAyMDQxMywgMjA0MTcsIAotICAgIDIwNDIxLCAyMDQyNSwgMjA0MjksIDIwNDMzLCAyMDQzNywgMjA0NDEsIDIwNDQ1LCAyMDQ0OSwgMjA0NTMsIDIwNDU3LCAKLSAgICAyMDQ2MSwgMjA0NjUsIDIwNDY5LCAyMDQ3MywgMjA0NzcsIDIwNDgxLCAyMDQ4NSwgMjA0ODksIDIwNDkzLCAyMDQ5NywgCi0gICAgMjA1MDEsIDIwNTA1LCAyMDUwOSwgMjA1MTMsIDIwNTE3LCAyMDUyMSwgMjA1MjUsIDIwNTI5LCAyMDUzMywgMjA1MzcsIAotICAgIDIwNTQxLCAyMDU0NSwgMjA1NDksIDIwNTUzLCAyMDU1NywgMjA1NjEsIDIwNTY1LCAyMDU2OSwgMjA1NzMsIDIwNTc3LCAKLSAgICAyMDU4MSwgMjA1ODUsIDIwNTg5LCAyMDU5MywgMjA1OTcsIDIwNjAxLCAyMDYwNSwgMjA2MDksIDIwNjEzLCAyMDYxNywgCi0gICAgMjA2MjAsIDIwNjI0LCAyMDYyNywgMjA2MzEsIDIwNjM1LCAyMDYzOCwgMjA2NDIsIDIwNjQ2LCAyMDY0OSwgMjA2NTMsIAotICAgIDIwNjU3LCAyMDY2MSwgMjA2NjUsIDIwNjY4LCAyMDY3MiwgMjA2NzYsIDIwNjgwLCAyMDY4NCwgMjA2ODgsIDIwNjkyLCAKLSAgICAyMDY5NSwgMjA2OTksIDIwNzAzLCAyMDcwNywgMjA3MTEsIDIwNzE1LCAyMDcxOSwgMjA3MjMsIDIwNzI3LCAyMDczMSwgCi0gICAgMjA3MzUsIDIwNzM5LCAyMDc0MywgMjA3NDcsIDIwNzUxLCAyMDc1NSwgMjA3NTksIDIwNzYzLCAyMDc2NywgMjA3NzEsIAotICAgIDIwNzc1LCAyMDc3OSwgMjA3ODMsIDIwNzg3LCAyMDc5MSwgMjA3OTUsIDIwNzk5LCAyMDgwMywgMjA4MDcsIDIwODExLCAKLSAgICAyMDgxNSwgMjA4MTksIDIwODIzLCAyMDgyNywgMjA4MzEsIDIwODM1LCAyMDgzOSwgMjA4NDMsIDIwODQ3LCAyMDg1MSwgCi0gICAgMjA4NTUsIDIwODU5LCAyMDg2MywgMjA4NjcsIDIwODcxLCAyMDg3NSwgMjA4NzksIDIwODgzLCAyMDg4NywgMjA4OTEsIAotICAgIDIwODk1LCAyMDg5OSwgMjA5MDMsIDIwOTA3LCAyMDkxMSwgMjA5MTUsIDIwOTE5LCAyMDkyMywgMjA5MjcsIDIwOTMxLCAKLSAgICAyMDkzNSwgMjA5MzksIDIwOTQzLCAyMDk0NywgMjA5NTEsIDIwOTU1LCAyMDk1OSwgMjA5NjMsIDIwOTY3LCAyMDk3MSwgCi0gICAgMjA5NzUsIDIwOTc5LCAyMDk4MywgMjA5ODcsIDIwOTkxLCAyMDk5NSwgMjA5OTksIDIxMDAzLCAyMTAwNywgMjEwMTEsIAotICAgIDIxMDE1LCAyMTAxOSwgMjEwMjMsIDIxMDI3LCAyMTAzMSwgMjEwMzUsIDIxMDM5LCAyMTA0MywgMjEwNDcsIDIxMDUxLCAKLSAgICAyMTA1NSwgMjEwNTksIDIxMDYzLCAyMTA2NywgMjEwNzEsIDIxMDc1LCAyMTA3OSwgMjEwODMsIDIxMDg3LCAyMTA5MSwgCi0gICAgMjEwOTUsIDIxMDk5LCAyMTEwMywgMjExMDcsIDIxMTExLCAyMTExNSwgMjExMTksIDIxMTIzLCAyMTEyNywgMjExMzEsIAotICAgIDIxMTM1LCAyMTEzOSwgMjExNDMsIDIxMTQ3LCAyMTE1MSwgMjExNTUsIDIxMTU5LCAyMTE2MywgMjExNjcsIDIxMTcxLCAKLSAgICAyMTE3NSwgMjExNzksIDIxMTgzLCAyMTE4NywgMjExOTEsIDIxMTk1LCAyMTE5OSwgMjEyMDMsIDIxMjA3LCAyMTIxMSwgCi0gICAgMjEyMTUsIDIxMjE5LCAyMTIyMywgMjEyMjcsIDIxMjMxLCAyMTIzNSwgMjEyMzksIDIxMjQzLCAyMTI0NywgMjEyNTAsIAotICAgIDIxMjU0LCAyMTI1OCwgMjEyNjIsIDIxMjY2LCAyMTI3MCwgMjEyNzQsIDIxMjc4LCAyMTI4MiwgMjEyODYsIDIxMjkwLCAKLSAgICAyMTI5NCwgMjEyOTgsIDIxMzAyLCAyMTMwNiwgMjEzMTAsIDIxMzE0LCAyMTMxOCwgMjEzMjIsIDIxMzI2LCAyMTMzMCwgCi0gICAgMjEzMzQsIDIxMzM4LCAyMTM0MiwgMjEzNDUsIDIxMzQ5LCAyMTM1MywgMjEzNTcsIDIxMzYxLCAyMTM2NSwgMjEzNjksIAotICAgIDIxMzczLCAyMTM3NywgMjEzODEsIDIxMzg1LCAyMTM4OSwgMjEzOTMsIDIxMzk3LCAyMTQwMSwgMjE0MDUsIDIxNDA5LCAKLSAgICAyMTQxMywgMjE0MTcsIDIxNDIxLCAyMTQyNSwgMjE0MjksIDIxNDMzLCAyMTQzNywgMjE0NDEsIDIxNDQ1LCAyMTQ0OSwgCi0gICAgMjE0NTMsIDIxNDU3LCAyMTQ2MSwgMjE0NjUsIDIxNDY5LCAyMTQ3MywgMjE0NzcsIDIxNDgxLCAyMTQ4NSwgMjE0ODksIAotICAgIDIxNDkzLCAyMTQ5NywgMjE1MDEsIDIxNTA1LCAyMTUwOSwgMjE1MTMsIDIxNTE3LCAyMTUyMSwgMjE1MjUsIDIxNTI5LCAKLSAgICAyMTUzMywgMCwgMjE1MzcsIDIxNTQxLCAyMTU0NSwgMjE1NDksIDAsIDAsIDIxNTUzLCAyMTU1NywgMjE1NjEsIDIxNTY1LCAKLSAgICAyMTU2OSwgMjE1NzMsIDIxNTc3LCAwLCAyMTU4MSwgMCwgMjE1ODUsIDIxNTg5LCAyMTU5MywgMjE1OTcsIDAsIDAsIAotICAgIDIxNjAxLCAyMTYwNSwgMjE2MDksIDIxNjEzLCAyMTYxNywgMjE2MjEsIDIxNjI1LCAyMTYyOSwgMjE2MzMsIDIxNjM3LCAKLSAgICAyMTY0MSwgMjE2NDUsIDIxNjQ5LCAyMTY1MywgMjE2NTcsIDIxNjYxLCAyMTY2NSwgMjE2NjksIDIxNjczLCAyMTY3NywgCi0gICAgMjE2ODEsIDIxNjg1LCAyMTY4OSwgMjE2OTIsIDIxNjk2LCAyMTcwMCwgMjE3MDQsIDIxNzA4LCAyMTcxMiwgMjE3MTYsIAotICAgIDIxNzIwLCAyMTcyNCwgMjE3MjgsIDIxNzMyLCAyMTczNiwgMjE3NDAsIDIxNzQ0LCAyMTc0OCwgMjE3NTIsIDIxNzU2LCAKLSAgICAyMTc2MCwgMCwgMjE3NjQsIDIxNzY4LCAyMTc3MiwgMjE3NzYsIDAsIDAsIDIxNzgwLCAyMTc4NCwgMjE3ODgsIDIxNzkyLCAKLSAgICAyMTc5NiwgMjE4MDAsIDIxODA0LCAyMTgwOCwgMjE4MTIsIDIxODE2LCAyMTgyMCwgMjE4MjQsIDIxODI4LCAyMTgzMiwgCi0gICAgMjE4MzYsIDIxODQwLCAyMTg0NCwgMjE4NDksIDIxODU0LCAyMTg1OSwgMjE4NjUsIDIxODcxLCAyMTg3NiwgMjE4ODEsIAotICAgIDIxODg3LCAyMTg5MCwgMjE4OTQsIDIxODk4LCAyMTkwMiwgMjE5MDYsIDIxOTEwLCAyMTkxNCwgMjE5MTgsIDAsIDIxOTIyLCAKLSAgICAyMTkyNiwgMjE5MzAsIDIxOTM0LCAwLCAwLCAyMTkzOCwgMjE5NDIsIDIxOTQ2LCAyMTk1MCwgMjE5NTQsIDIxOTU4LCAKLSAgICAyMTk2MiwgMCwgMjE5NjYsIDAsIDIxOTcwLCAyMTk3NCwgMjE5NzgsIDIxOTgyLCAwLCAwLCAyMTk4NiwgMjE5OTAsIAotICAgIDIxOTk0LCAyMTk5OCwgMjIwMDIsIDIyMDA2LCAyMjAxMCwgMjIwMTQsIDIyMDE4LCAyMjAyMywgMjIwMjgsIDIyMDMzLCAKLSAgICAyMjAzOSwgMjIwNDUsIDIyMDUwLCAwLCAyMjA1NSwgMjIwNTksIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgCi0gICAgMjIwODMsIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk5LCAyMjEwMywgMjIxMDcsIDIyMTExLCAyMjExNSwgMjIxMTksIAotICAgIDIyMTIyLCAyMjEyNiwgMjIxMzAsIDIyMTM0LCAyMjEzOCwgMjIxNDIsIDIyMTQ2LCAyMjE1MCwgMjIxNTQsIDIyMTU4LCAKLSAgICAyMjE2MiwgMjIxNjYsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAyMjE4NiwgMjIxOTAsIDIyMTk0LCAyMjE5OCwgCi0gICAgMjIyMDIsIDIyMjA2LCAyMjIxMCwgMjIyMTQsIDIyMjE4LCAyMjIyMiwgMjIyMjYsIDIyMjMwLCAyMjIzNCwgMjIyMzgsIAotICAgIDIyMjQyLCAyMjI0NiwgMjIyNTAsIDIyMjU0LCAyMjI1OCwgMjIyNjIsIDIyMjY2LCAyMjI3MCwgMjIyNzQsIDIyMjc4LCAwLCAKLSAgICAyMjI4MiwgMjIyODYsIDIyMjkwLCAyMjI5NCwgMCwgMCwgMjIyOTgsIDIyMzAyLCAyMjMwNiwgMjIzMTAsIDIyMzE0LCAKLSAgICAyMjMxOCwgMjIzMjIsIDIyMzI2LCAyMjMzMCwgMjIzMzQsIDIyMzM4LCAyMjM0MiwgMjIzNDYsIDIyMzUwLCAyMjM1NCwgCi0gICAgMjIzNTgsIDIyMzYyLCAyMjM2NiwgMjIzNzAsIDIyMzc0LCAyMjM3OCwgMjIzODIsIDIyMzg2LCAyMjM5MCwgMjIzOTQsIAotICAgIDIyMzk4LCAyMjQwMiwgMjI0MDYsIDIyNDEwLCAyMjQxNCwgMjI0MTgsIDIyNDIyLCAyMjQyNiwgMjI0MzAsIDIyNDM0LCAKLSAgICAyMjQzOCwgMjI0NDIsIDIyNDQ2LCAyMjQ1MCwgMjI0NTQsIDIyNDU4LCAyMjQ2MiwgMjI0NjYsIDIyNDcwLCAyMjQ3NCwgCi0gICAgMjI0NzgsIDIyNDgyLCAyMjQ4NiwgMjI0OTAsIDIyNDk0LCAyMjQ5OCwgMjI1MDIsIDIyNTA2LCAyMjUxMCwgMjI1MTQsIAotICAgIDIyNTE4LCAyMjUyMiwgMjI1MjUsIDIyNTI5LCAyMjUzMywgMjI1MzcsIDIyNTQxLCAyMjU0NSwgMjI1NDksIDIyNTUzLCAKLSAgICAyMjU1NywgMjI1NjEsIDAsIDAsIDIyNTY1LCAyMjU3NCwgMjI1ODAsIDIyNTg1LCAyMjU4OSwgMjI1OTIsIDIyNTk3LCAKLSAgICAyMjYwMCwgMjI2MDMsIDIyNjA2LCAyMjYxMSwgMjI2MTUsIDIyNjIwLCAyMjYyMywgMjI2MjYsIDIyNjI5LCAyMjYzMiwgCi0gICAgMjI2MzUsIDIyNjM4LCAyMjY0MiwgMjI2NDUsIDIyNjQ5LCAyMjY1MywgMjI2NTcsIDIyNjYxLCAyMjY2NSwgMjI2NjksIAotICAgIDIyNjczLCAyMjY3NywgMjI2ODEsIDIyNjg1LCAyMjY4OSwgMCwgMCwgMCwgMjI2OTUsIDIyNzAxLCAyMjcwNSwgMjI3MDksIAotICAgIDIyNzEzLCAyMjcxOSwgMjI3MjMsIDIyNzI3LCAyMjczMSwgMjI3MzcsIDIyNzQxLCAyMjc0NSwgMjI3NDksIDIyNzU1LCAKLSAgICAyMjc1OSwgMjI3NjMsIDIyNzY3LCAyMjc3MywgMjI3NzksIDIyNzg1LCAyMjc5MywgMjI3OTksIDIyODA1LCAyMjgxMSwgCi0gICAgMjI4MTcsIDIyODIzLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjgyOSwgMjI4MzIsIDIyODM1LCAyMjgzOCwgMjI4NDEsIDIyODQ0LCAKLSAgICAyMjg0OCwgMjI4NTIsIDIyODU1LCAyMjg1OSwgMjI4NjMsIDIyODY3LCAyMjg3MSwgMjI4NzUsIDIyODc4LCAyMjg4MiwgCi0gICAgMjI4ODYsIDIyODkwLCAyMjg5NCwgMjI4OTgsIDIyOTAyLCAyMjkwNiwgMjI5MTAsIDIyOTE0LCAyMjkxOCwgMjI5MjIsIAotICAgIDIyOTI1LCAyMjkyOSwgMjI5MzMsIDIyOTM3LCAyMjk0MSwgMjI5NDUsIDIyOTQ5LCAyMjk1MywgMjI5NTcsIDIyOTYxLCAKLSAgICAyMjk2NSwgMjI5NjksIDIyOTczLCAyMjk3NywgMjI5ODEsIDIyOTg1LCAyMjk4OSwgMjI5OTMsIDIyOTk3LCAyMzAwMSwgCi0gICAgMjMwMDQsIDIzMDA4LCAyMzAxMiwgMjMwMTYsIDIzMDIwLCAyMzAyNCwgMjMwMjgsIDIzMDMyLCAyMzAzNiwgMjMwNDAsIAotICAgIDIzMDQ0LCAyMzA0OCwgMjMwNTIsIDIzMDU2LCAyMzA2MCwgMjMwNjQsIDIzMDY4LCAyMzA3MiwgMjMwNzYsIDIzMDgwLCAKLSAgICAyMzA4NCwgMjMwODgsIDIzMDkyLCAyMzA5NiwgMjMxMDAsIDIzMTA0LCAyMzEwOCwgMjMxMTIsIDIzMTE2LCAyMzEyMCwgCi0gICAgMjMxMjQsIDIzMTI4LCAyMzEzMiwgMjMxMzYsIDIzMTM5LCAyMzE0MywgMjMxNDcsIDIzMTUxLCAyMzE1NSwgMjMxNTksIDAsIAotICAgIDAsIDIzMTYzLCAyMzE2OCwgMjMxNzMsIDIzMTc4LCAyMzE4MywgMjMxODgsIDAsIDAsIDIzMTkzLCAyMzE5NywgMjMyMDAsIAotICAgIDIzMjA0LCAyMzIwNywgMjMyMTEsIDIzMjE0LCAyMzIxOCwgMjMyMjQsIDIzMjI5LCAyMzIzMywgMjMyMzYsIDIzMjQwLCAKLSAgICAyMzI0NCwgMjMyNDksIDIzMjUzLCAyMzI1OCwgMjMyNjIsIDIzMjY3LCAyMzI3MSwgMjMyNzYsIDIzMjgwLCAyMzI4NSwgCi0gICAgMjMyOTEsIDIzMjk1LCAyMzMwMCwgMjMzMDQsIDIzMzA5LCAyMzMxNSwgMjMzMTksIDIzMzI1LCAyMzMzMSwgMjMzMzUsIAotICAgIDIzMzQwLCAyMzM0OCwgMjMzNTYsIDIzMzYzLCAyMzM2OCwgMjMzNzMsIDIzMzgyLCAyMzM4OCwgMjMzOTYsIDIzNDAxLCAKLSAgICAyMzQwNywgMjM0MTEsIDIzNDE1LCAyMzQxOSwgMjM0MjMsIDIzNDI3LCAyMzQzMSwgMjM0MzUsIDIzNDM5LCAyMzQ0MywgCi0gICAgMjM0NDcsIDIzNDUzLCAyMzQ1OCwgMjM0NjMsIDIzNDY2LCAyMzQ3MCwgMjM0NzQsIDIzNDc5LCAyMzQ4MywgMjM0ODgsIAotICAgIDIzNDkyLCAyMzQ5NywgMjM1MDEsIDIzNTA2LCAyMzUxMCwgMjM1MTUsIDIzNTE5LCAyMzUyNCwgMjM1MjgsIDIzNTMzLCAKLSAgICAyMzUzOSwgMjM1NDMsIDIzNTQ4LCAyMzU1MywgMjM1NTcsIDIzNTYxLCAyMzU2NSwgMjM1NjksIDIzNTcyLCAyMzU3NiwgCi0gICAgMjM1ODIsIDIzNTg3LCAyMzU5MiwgMjM1OTYsIDIzNjAwLCAyMzYwNCwgMjM2MDksIDIzNjEzLCAyMzYxOCwgMjM2MjIsIAotICAgIDIzNjI3LCAyMzYzMCwgMjM2MzQsIDIzNjM4LCAyMzY0MywgMjM2NDcsIDIzNjUyLCAyMzY1NiwgMjM2NjEsIDIzNjY3LCAKLSAgICAyMzY3MSwgMjM2NzUsIDIzNjc5LCAyMzY4MywgMjM2ODcsIDIzNjkxLCAyMzY5NSwgMjM2OTksIDIzNzAzLCAyMzcwNywgCi0gICAgMjM3MTEsIDIzNzE3LCAyMzcyMCwgMjM3MjQsIDIzNzI4LCAyMzczMywgMjM3MzcsIDIzNzQyLCAyMzc0NiwgMjM3NTEsIAotICAgIDIzNzU1LCAyMzc2MCwgMjM3NjQsIDIzNzY5LCAyMzc3MywgMjM3NzgsIDIzNzgyLCAyMzc4NywgMjM3OTMsIDIzNzk3LCAKLSAgICAyMzgwMSwgMjM4MDcsIDIzODEzLCAyMzgxOSwgMjM4MjUsIDIzODI5LCAyMzgzMywgMjM4MzcsIDIzODQxLCAyMzg0NSwgCi0gICAgMjM4NDksIDIzODU1LCAyMzg1OSwgMjM4NjMsIDIzODY3LCAyMzg3MiwgMjM4NzYsIDIzODgxLCAyMzg4NSwgMjM4OTAsIAotICAgIDIzODk0LCAyMzg5OSwgMjM5MDMsIDIzOTA4LCAyMzkxMiwgMjM5MTcsIDIzOTIxLCAyMzkyNiwgMjM5MzIsIDIzOTM2LCAKLSAgICAyMzk0MiwgMjM5NDYsIDIzOTUwLCAyMzk1NCwgMjM5NTgsIDIzOTYyLCAyMzk2NiwgMjM5NzIsIDIzOTc1LCAyMzk3OSwgCi0gICAgMjM5ODMsIDIzOTg4LCAyMzk5MiwgMjM5OTcsIDI0MDAxLCAyNDAwNiwgMjQwMTAsIDI0MDE1LCAyNDAxOSwgMjQwMjQsIAotICAgIDI0MDI4LCAyNDAzMywgMjQwMzcsIDI0MDQyLCAyNDA0OCwgMjQwNTIsIDI0MDU3LCAyNDA2MSwgMjQwNjcsIDI0MDczLCAKLSAgICAyNDA3NywgMjQwODEsIDI0MDg1LCAyNDA4OSwgMjQwOTMsIDI0MDk3LCAyNDEwMywgMjQxMDcsIDI0MTExLCAyNDExNSwgCi0gICAgMjQxMjAsIDI0MTI0LCAyNDEyOSwgMjQxMzMsIDI0MTM4LCAyNDE0NCwgMjQxNDgsIDI0MTUzLCAyNDE1NywgMjQxNjEsIAotICAgIDI0MTY1LCAyNDE2OSwgMjQxNzMsIDI0MTc3LCAyNDE4MSwgMjQxODcsIDI0MTkxLCAyNDE5NSwgMjQxOTksIDI0MjA0LCAKLSAgICAyNDIwOCwgMjQyMTMsIDI0MjE3LCAyNDIyMiwgMjQyMjYsIDI0MjMxLCAyNDIzNSwgMjQyNDAsIDI0MjQ0LCAyNDI0OSwgCi0gICAgMjQyNTMsIDI0MjU4LCAyNDI2MSwgMjQyNjUsIDI0MjY5LCAyNDI3MywgMjQyNzcsIDI0MjgxLCAyNDI4NSwgMjQyODksIAotICAgIDI0MjkzLCAyNDI5OSwgMjQzMDMsIDI0MzA3LCAyNDMxMSwgMjQzMTYsIDI0MzIwLCAyNDMyNSwgMjQzMjksIDI0MzM0LCAKLSAgICAyNDMzOCwgMjQzNDMsIDI0MzQ3LCAyNDM1MiwgMjQzNTYsIDI0MzYxLCAyNDM2NSwgMjQzNzAsIDI0Mzc2LCAyNDM3OSwgCi0gICAgMjQzODQsIDI0Mzg4LCAyNDM5MywgMjQzOTksIDI0NDA1LCAyNDQxMSwgMjQ0MTcsIDI0NDIzLCAyNDQyOSwgMjQ0MzUsIAotICAgIDI0NDM5LCAyNDQ0MywgMjQ0NDcsIDI0NDUxLCAyNDQ1NSwgMjQ0NTksIDI0NDYzLCAyNDQ2NywgMjQ0NzIsIDI0NDc2LCAKLSAgICAyNDQ4MSwgMjQ0ODUsIDI0NDkwLCAyNDQ5NCwgMjQ0OTksIDI0NTAzLCAyNDUwOCwgMjQ1MTIsIDI0NTE3LCAyNDUyMSwgCi0gICAgMjQ1MjYsIDI0NTMwLCAyNDUzNCwgMjQ1MzgsIDI0NTQyLCAyNDU0NiwgMjQ1NTAsIDI0NTU0LCAyNDU2MCwgMjQ1NjMsIAotICAgIDI0NTY3LCAyNDU3MSwgMjQ1NzYsIDI0NTgwLCAyNDU4NSwgMjQ1ODksIDI0NTk0LCAyNDU5OCwgMjQ2MDMsIDI0NjA3LCAKLSAgICAyNDYxMiwgMjQ2MTYsIDI0NjIxLCAyNDYyNSwgMjQ2MzAsIDI0NjM2LCAyNDY0MCwgMjQ2NDYsIDI0NjUxLCAyNDY1NywgCi0gICAgMjQ2NjEsIDI0NjY3LCAyNDY3MiwgMjQ2NzYsIDI0NjgwLCAyNDY4NCwgMjQ2ODgsIDI0NjkyLCAyNDY5NywgMjQ3MDEsIAotICAgIDI0NzA1LCAyNDcxMCwgMjQ3MTQsIDI0NzE5LCAyNDcyMiwgMjQ3MjYsIDI0NzMwLCAyNDczNCwgMjQ3MzgsIDI0NzQyLCAKLSAgICAyNDc0NiwgMjQ3NTAsIDI0NzU0LCAyNDc1OCwgMjQ3NjIsIDI0NzY2LCAyNDc3MSwgMjQ3NzUsIDI0Nzc5LCAyNDc4NSwgCi0gICAgMjQ3ODksIDI0Nzk1LCAyNDc5OSwgMjQ4MDUsIDI0ODA5LCAyNDgxMywgMjQ4MTcsIDI0ODIxLCAyNDgyNSwgMjQ4MzAsIAotICAgIDI0ODM0LCAyNDgzOCwgMjQ4NDIsIDI0ODQ2LCAyNDg1MCwgMjQ4NTQsIDI0ODU4LCAyNDg2MiwgMjQ4NjYsIDI0ODcwLCAKLSAgICAyNDg3NiwgMjQ4ODIsIDI0ODg4LCAyNDg5NCwgMjQ5MDAsIDI0OTA1LCAyNDkxMSwgMjQ5MTcsIDI0OTIzLCAyNDkyNywgCi0gICAgMjQ5MzEsIDI0OTM1LCAyNDkzOSwgMjQ5NDMsIDI0OTQ3LCAyNDk1MSwgMjQ5NTUsIDI0OTU5LCAyNDk2MywgMjQ5NjcsIAotICAgIDI0OTcxLCAyNDk3NSwgMjQ5ODAsIDI0OTg1LCAyNDk5MCwgMjQ5OTUsIDI0OTk5LCAyNTAwMywgMjUwMDcsIDI1MDExLCAKLSAgICAyNTAxNSwgMjUwMTksIDI1MDIzLCAyNTAyNywgMjUwMzEsIDI1MDM3LCAyNTA0MywgMjUwNDksIDI1MDU1LCAyNTA2MSwgCi0gICAgMjUwNjcsIDI1MDczLCAyNTA3OSwgMjUwODUsIDI1MDg5LCAyNTA5MywgMjUwOTcsIDI1MTAxLCAyNTEwNSwgMjUxMDksIAotICAgIDI1MTEzLCAyNTExOSwgMjUxMjUsIDI1MTMxLCAyNTEzNywgMjUxNDMsIDI1MTQ5LCAyNTE1NSwgMjUxNjEsIDI1MTY3LCAKLSAgICAyNTE3MiwgMjUxNzcsIDI1MTgyLCAyNTE4NywgMjUxOTMsIDI1MTk5LCAyNTIwNSwgMjUyMTEsIDI1MjE3LCAyNTIyMywgCi0gICAgMjUyMjksIDI1MjM1LCAyNTI0MSwgMjUyNDcsIDI1MjUzLCAyNTI1OCwgMjUyNjQsIDI1MjcwLCAyNTI3NiwgMjUyODEsIAotICAgIDI1Mjg2LCAyNTI5MSwgMjUyOTYsIDI1MzAxLCAyNTMwNiwgMjUzMTEsIDI1MzE2LCAyNTMyMSwgMjUzMjYsIDI1MzMxLCAKLSAgICAyNTMzNiwgMjUzNDEsIDI1MzQ2LCAyNTM1MSwgMjUzNTYsIDI1MzYxLCAyNTM2NiwgMjUzNzEsIDI1Mzc2LCAyNTM4MSwgCi0gICAgMjUzODYsIDI1MzkxLCAyNTM5NiwgMjU0MDEsIDI1NDA2LCAyNTQxMSwgMjU0MTYsIDI1NDIxLCAyNTQyNiwgMjU0MzEsIAotICAgIDI1NDM2LCAyNTQ0MSwgMjU0NDYsIDI1NDUxLCAyNTQ1NiwgMjU0NjEsIDI1NDY2LCAyNTQ3MSwgMjU0NzYsIDI1NDgxLCAKLSAgICAyNTQ4NiwgMjU0OTAsIDI1NDk1LCAyNTUwMCwgMjU1MDUsIDI1NTEwLCAyNTUxNSwgMjU1MjAsIDI1NTI1LCAyNTUzMCwgCi0gICAgMjU1MzUsIDI1NTQwLCAyNTU0NSwgMjU1NTAsIDI1NTU1LCAyNTU2MCwgMjU1NjUsIDI1NTcwLCAyNTU3NSwgMjU1ODAsIAotICAgIDI1NTg1LCAyNTU5MCwgMjU1OTUsIDI1NjAwLCAyNTYwNSwgMjU2MTAsIDI1NjE1LCAyNTYyMCwgMjU2MjUsIDI1NjMwLCAKLSAgICAyNTYzNSwgMjU2NDAsIDI1NjQ1LCAyNTY0OSwgMjU2NTQsIDI1NjU5LCAyNTY2NCwgMjU2NjksIDI1Njc0LCAyNTY3OCwgCi0gICAgMjU2ODMsIDI1Njg5LCAyNTY5NCwgMjU2OTksIDI1NzA0LCAyNTcwOSwgMjU3MTUsIDI1NzIwLCAyNTcyNSwgMjU3MzAsIAotICAgIDI1NzM1LCAyNTc0MCwgMjU3NDUsIDI1NzUwLCAyNTc1NSwgMjU3NjAsIDI1NzY1LCAyNTc3MCwgMjU3NzUsIDI1NzgwLCAKLSAgICAyNTc4NSwgMjU3OTAsIDI1Nzk1LCAyNTgwMCwgMjU4MDUsIDI1ODEwLCAyNTgxNSwgMjU4MjAsIDI1ODI1LCAyNTgzMCwgCi0gICAgMjU4MzUsIDI1ODQwLCAyNTg0NSwgMjU4NTAsIDI1ODU1LCAyNTg2MCwgMjU4NjUsIDI1ODcwLCAyNTg3NSwgMjU4ODAsIAotICAgIDI1ODg1LCAyNTg5MCwgMjU4OTUsIDI1OTAwLCAyNTkwNSwgMjU5MTAsIDI1OTE1LCAyNTkyMCwgMjU5MjUsIDI1OTMwLCAKLSAgICAyNTkzNSwgMjU5NDEsIDI1OTQ2LCAyNTk1MSwgMjU5NTYsIDI1OTYxLCAyNTk2NiwgMjU5NzEsIDI1OTc2LCAyNTk4MSwgCi0gICAgMjU5ODYsIDI1OTkxLCAyNTk5NiwgMjYwMDEsIDI2MDA2LCAyNjAxMSwgMjYwMTYsIDI2MDIxLCAyNjAyNiwgMjYwMzEsIAotICAgIDI2MDM2LCAyNjA0MSwgMjYwNDYsIDI2MDUxLCAyNjA1NiwgMjYwNjEsIDI2MDY2LCAyNjA3MSwgMjYwNzYsIDI2MDgxLCAKLSAgICAyNjA4NiwgMjYwOTEsIDI2MDk2LCAyNjEwMSwgMjYxMDYsIDI2MTExLCAyNjExNiwgMjYxMjEsIDI2MTI2LCAyNjEzMSwgCi0gICAgMjYxMzcsIDI2MTQxLCAyNjE0NSwgMjYxNDksIDI2MTUzLCAyNjE1NywgMjYxNjEsIDI2MTY1LCAyNjE2OSwgMjYxNzUsIAotICAgIDI2MTgxLCAyNjE4NywgMjYxOTMsIDI2MTk5LCAyNjIwNSwgMjYyMTEsIDI2MjE4LCAyNjIyNCwgMjYyMjksIDI2MjM0LCAKLSAgICAyNjIzOSwgMjYyNDQsIDI2MjQ5LCAyNjI1NCwgMjYyNTksIDI2MjY0LCAyNjI2OSwgMjYyNzQsIDI2Mjc5LCAyNjI4NCwgCi0gICAgMjYyODksIDI2Mjk0LCAyNjI5OSwgMjYzMDQsIDI2MzA5LCAyNjMxNCwgMjYzMTksIDI2MzI0LCAyNjMyOSwgMjYzMzQsIAotICAgIDI2MzM5LCAyNjM0NCwgMjYzNDksIDI2MzU0LCAyNjM1OSwgMjYzNjQsIDAsIDAsIDAsIDI2MzcxLCAyNjM4MSwgMjYzODUsIAotICAgIDI2MzkyLCAyNjM5NiwgMjY0MDAsIDI2NDA0LCAyNjQxMiwgMjY0MTYsIDI2NDIxLCAyNjQyNiwgMjY0MzEsIDI2NDM1LCAKLSAgICAyNjQ0MCwgMjY0NDUsIDI2NDQ4LCAyNjQ1MiwgMjY0NTYsIDI2NDY1LCAyNjQ2OSwgMjY0NzMsIDI2NDc5LCAyNjQ4MywgCi0gICAgMjY0ODcsIDI2NDk1LCAyNjQ5OSwgMjY1MDcsIDI2NTEzLCAyNjUxOSwgMjY1MjUsIDI2NTMxLCAyNjU0MSwgMjY1NDcsIAotICAgIDI2NTUxLCAyNjU2MCwgMjY1NjMsIDI2NTY5LCAyNjU3MywgMjY1NzksIDI2NTg0LCAyNjU5MCwgMjY1OTgsIDI2NjA0LCAKLSAgICAyNjYwOSwgMjY2MTYsIDI2NjIxLCAyNjYyNSwgMjY2MjksIDI2NjM5LCAyNjY0NSwgMjY2NDksIDI2NjU5LCAyNjY2NSwgCi0gICAgMjY2NjksIDI2NjczLCAyNjY4MCwgMjY2ODgsIDI2Njk0LCAyNjcwMCwgMjY3MDksIDI2NzEzLCAyNjcxNywgMjY3MjEsIAotICAgIDI2NzI5LCAyNjczNiwgMjY3NDAsIDI2NzQ0LCAyNjc0OCwgMjY3NTIsIDI2NzU2LCAyNjc2MCwgMjY3NjQsIDI2NzY4LCAKLSAgICAyNjc3MiwgMjY3NzYsIDI2NzgwLCAyNjc4NSwgMjY3OTAsIDI2Nzk1LCAyNjc5OSwgMjY4MDMsIDI2ODA3LCAyNjgxMSwgCi0gICAgMjY4MTUsIDI2ODE5LCAyNjgyNywgMjY4MzUsIDI2ODQzLCAyNjg1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4NTksIAotICAgIDI2ODYzLCAyNjg2NywgMjY4NzEsIDI2ODc1LCAyNjg4MCwgMjY4ODUsIDI2ODkwLCAyNjg5NSwgMjY5MDAsIDI2OTA0LCAKLSAgICAyNjkwOSwgMjY5MTMsIDAsIDI2OTE3LCAyNjkyMiwgMjY5MjcsIDI2OTMyLCAyNjkzNiwgMjY5NDEsIDI2OTQ2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjk1MSwgMjY5NTUsIDI2OTU5LCAyNjk2MywgMjY5NjcsIDI2OTcyLCAKLSAgICAyNjk3NywgMjY5ODIsIDI2OTg3LCAyNjk5MiwgMjY5OTYsIDI3MDAxLCAyNzAwNSwgMjcwMDksIDI3MDE0LCAyNzAxOSwgCi0gICAgMjcwMjQsIDI3MDI5LCAyNzAzMywgMjcwMzgsIDI3MDQzLCAyNzA0OCwgMjcwNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI3MDU5LCAyNzA2MywgMjcwNjcsIDI3MDcxLCAyNzA3NSwgMjcwODAsIDI3MDg1LCAyNzA5MCwgMjcwOTUsIDI3MTAwLCAKLSAgICAyNzEwNCwgMjcxMDksIDI3MTEzLCAyNzExNywgMjcxMjIsIDI3MTI3LCAyNzEzMiwgMjcxMzcsIDI3MTQxLCAyNzE0NiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcxNTEsIDI3MTU1LCAyNzE1OSwgMjcxNjMsIDI3MTY3LCAKLSAgICAyNzE3MiwgMjcxNzcsIDI3MTgyLCAyNzE4NywgMjcxOTIsIDI3MTk2LCAyNzIwMSwgMjcyMDUsIDAsIDI3MjA5LCAyNzIxNCwgCi0gICAgMjcyMTksIDAsIDI3MjI0LCAyNzIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcyMzQsIDI3MjM3LCAKLSAgICAyNzI0MSwgMjcyNDUsIDI3MjQ5LCAyNzI1MywgMjcyNTcsIDI3MjYxLCAyNzI2NSwgMjcyNjksIDI3MjczLCAyNzI3NywgCi0gICAgMjcyODEsIDI3Mjg1LCAyNzI4OSwgMjcyOTMsIDI3Mjk3LCAyNzMwMSwgMjczMDQsIDI3MzA4LCAyNzMxMiwgMjczMTYsIAotICAgIDI3MzIwLCAyNzMyNCwgMjczMjgsIDI3MzMyLCAyNzMzNiwgMjczNDAsIDI3MzQ0LCAyNzM0OCwgMjczNTIsIDI3MzU2LCAKLSAgICAyNzM2MCwgMjczNjMsIDI3MzY3LCAyNzM3MSwgMjczNzcsIDI3MzgzLCAyNzM4OSwgMjczOTUsIDI3NDAxLCAyNzQwNywgCi0gICAgMjc0MTMsIDI3NDE5LCAyNzQyNSwgMjc0MzEsIDI3NDM3LCAyNzQ0MywgMjc0NDksIDI3NDU1LCAyNzQ2NCwgMjc0NzMsIAotICAgIDI3NDc5LCAyNzQ4NSwgMjc0OTEsIDI3NDk2LCAyNzUwMCwgMjc1MDUsIDI3NTEwLCAyNzUxNSwgMjc1MTksIDI3NTI0LCAKLSAgICAyNzUyOSwgMjc1MzQsIDI3NTM4LCAyNzU0MywgMjc1NDcsIDI3NTUyLCAyNzU1NywgMjc1NjIsIDI3NTY3LCAyNzU3MSwgCi0gICAgMjc1NzUsIDI3NTc5LCAyNzU4MywgMjc1ODcsIDI3NTkxLCAyNzU5NSwgMjc1OTksIDI3NjAzLCAyNzYwNywgMjc2MTMsIAotICAgIDI3NjE3LCAyNzYyMSwgMjc2MjUsIDI3NjI5LCAyNzYzMywgMjc2NDEsIDI3NjQ3LCAyNzY1MSwgMjc2NTcsIDI3NjYxLCAKLSAgICAyNzY2NywgMjc2NzEsIDAsIDAsIDI3Njc1LCAyNzY3OSwgMjc2ODIsIDI3Njg1LCAyNzY4OCwgMjc2OTEsIDI3Njk0LCAKLSAgICAyNzY5NywgMjc3MDEsIDI3NzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcwOCwgMjc3MTYsIDI3NzI0LCAyNzczMiwgMjc3NDAsIAotICAgIDI3NzQ4LCAyNzc1NiwgMjc3NjQsIDI3NzcyLCAyNzc4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3ODgsIDI3NzkxLCAyNzc5NCwgCi0gICAgMjc3OTcsIDI3ODAyLCAyNzgwNSwgMjc4MTAsIDI3ODE3LCAyNzgyNSwgMjc4MzAsIDI3ODM3LCAyNzg0MCwgMjc4NDcsIAotICAgIDI3ODU0LCAyNzg2MSwgMCwgMjc4NjUsIDI3ODY5LCAyNzg3MiwgMjc4NzUsIDI3ODc4LCAyNzg4MSwgMjc4ODQsIDI3ODg3LCAKLSAgICAyNzg5MSwgMjc4OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDI3ODk4LCAyNzkwMSwgMjc5MDQsIDI3OTA3LCAyNzkxMCwgMjc5MTMsIAotICAgIDI3OTE3LCAyNzkyMSwgMjc5MjUsIDI3OTI5LCAyNzkzMywgMjc5MzcsIDI3OTQwLCAyNzk0NCwgMjc5NDgsIDI3OTUxLCAKLSAgICAyNzk1NSwgMjc5NTksIDI3OTYzLCAyNzk2NywgMjc5NzEsIDI3OTc1LCAyNzk3OSwgMjc5ODIsIDI3OTg2LCAyNzk5MCwgCi0gICAgMjc5OTQsIDI3OTk3LCAyODAwMSwgMjgwMDUsIDI4MDA5LCAyODAxMywgMjgwMTcsIDI4MDIxLCAyODAyNSwgMjgwMjksIAotICAgIDI4MDM2LCAyODA0MSwgMjgwNDYsIDI4MDUxLCAyODA1NiwgMjgwNjIsIDI4MDY4LCAyODA3NCwgMjgwODAsIDI4MDg1LCAKLSAgICAyODA5MSwgMjgwOTcsIDI4MTAyLCAyODEwOCwgMjgxMTQsIDI4MTIwLCAyODEyNiwgMjgxMzIsIDI4MTM3LCAyODE0MywgCi0gICAgMjgxNDgsIDI4MTU0LCAyODE2MCwgMjgxNjYsIDI4MTcyLCAyODE3OCwgMjgxODMsIDI4MTg4LCAyODE5NCwgMjgyMDAsIAotICAgIDI4MjA1LCAyODIxMSwgMjgyMTYsIDI4MjIyLCAyODIyNywgMjgyMzIsIDI4MjM4LCAyODI0NCwgMjgyNTAsIDI4MjU2LCAKLSAgICAyODI2MiwgMjgyNjgsIDI4Mjc0LCAyODI4MCwgMjgyODYsIDI4MjkyLCAyODI5OCwgMjgzMDQsIDI4MzA5LCAyODMxNCwgCi0gICAgMjgzMjAsIDI4MzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODMzMiwgMjgzNDEsIDI4MzUwLCAyODM1OCwgMjgzNjYsIAotICAgIDI4Mzc2LCAyODM4NCwgMjgzOTMsIDI4NDAwLCAyODQwNywgMjg0MTQsIDI4NDIyLCAyODQzMCwgMjg0MzgsIDI4NDQ2LCAKLSAgICAyODQ1NCwgMjg0NjIsIDI4NDcwLCAyODQ3OCwgMjg0ODUsIDI4NDkzLCAyODUwMSwgMjg1MDksIDI4NTE3LCAyODUyNSwgCi0gICAgMjg1MzUsIDI4NTQ1LCAyODU1NSwgMjg1NjUsIDI4NTc1LCAyODU4NSwgMjg1OTUsIDI4NjA1LCAyODYxNSwgMjg2MjUsIAotICAgIDI4NjM1LCAyODY0NSwgMjg2NTUsIDI4NjY1LCAyODY3MywgMjg2ODEsIDI4NjkxLCAyODY5OSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjg3MDksIDI4NzEzLCAyODcxNywgMjg3MjEsIDI4NzI1LCAyODcyOSwgMjg3MzMsIDI4NzM3LCAyODc0MSwgMjg3NDUsIAotICAgIDI4NzQ5LCAyODc1MywgMjg3NTcsIDI4NzYxLCAyODc2NSwgMjg3NjksIDI4NzczLCAyODc3NywgMjg3ODEsIDI4Nzg1LCAKLSAgICAyODc4OSwgMjg3OTMsIDI4Nzk3LCAyODgwMSwgMjg4MDcsIDI4ODExLCAyODgxNywgMjg4MjEsIDI4ODI3LCAyODgzMSwgCi0gICAgMjg4MzcsIDI4ODQxLCAyODg0NSwgMjg4NDksIDI4ODUzLCAyODg1NywgMjg4NjEsIDI4ODY3LCAyODg3MywgMjg4NzksIAotICAgIDI4ODg1LCAyODg5MSwgMjg4OTcsIDI4OTAyLCAyODkwOCwgMjg5MTQsIDI4OTIwLCAyODkyNiwgMjg5MzMsIDI4OTM5LCAKLSAgICAyODk0NCwgMjg5NDksIDI4OTUzLCAyODk1NywgMjg5NjEsIDI4OTY1LCAyODk2OSwgMjg5NzMsIDI4OTc3LCAyODk4MywgCi0gICAgMjg5ODksIDI4OTk1LCAyOTAwMCwgMjkwMDcsIDI5MDEyLCAyOTAxNywgMjkwMjMsIDI5MDI4LCAyOTAzNSwgMjkwNDIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MDQ4LCAyOTA1NCwgMjkwNTgsIDI5MDYzLCAyOTA2OCwgMjkwNzMsIAotICAgIDI5MDc4LCAyOTA4MywgMjkwODgsIDI5MDkzLCAyOTA5OCwgMjkxMDMsIDI5MTA4LCAyOTExMywgMjkxMTgsIDI5MTIzLCAKLSAgICAyOTEyOCwgMjkxMzIsIDI5MTM3LCAyOTE0MiwgMjkxNDcsIDI5MTUxLCAyOTE1NSwgMjkxNjAsIDI5MTY1LCAyOTE3MCwgCi0gICAgMjkxNzUsIDI5MTgwLCAyOTE4NSwgMjkxODksIDI5MTk0LCAwLCAyOTE5OSwgMjkyMDQsIDI5MjA5LCAyOTIxNCwgMjkyMjAsIAotICAgIDI5MjI2LCAyOTIzMiwgMjkyMzgsIDI5MjQzLCAyOTI0OCwgMjkyNTQsIDI5MjYxLCAwLCAwLCAwLCAwLCAyOTI2OCwgCi0gICAgMjkyNzMsIDI5Mjc5LCAyOTI4NSwgMjkyOTEsIDI5Mjk3LCAyOTMwMiwgMjkzMDcsIDI5MzEzLCAyOTMxOSwgMjkzMjQsIAotICAgIDI5MzI5LCAwLCAwLCAwLCAwLCAyOTMzNCwgMCwgMCwgMCwgMjkzMzksIDI5MzQ0LCAyOTM0OSwgMjkzNTQsIDI5MzU4LCAKLSAgICAyOTM2MiwgMjkzNjYsIDI5MzcwLCAyOTM3NCwgMjkzNzgsIDI5MzgzLCAyOTM4NywgMjkzOTIsIDI5Mzk3LCAyOTQwMywgCi0gICAgMjk0MDksIDI5NDE1LCAyOTQyMSwgMjk0MjYsIDI5NDMyLCAyOTQzOCwgMjk0NDQsIDI5NDQ5LCAyOTQ1NSwgMjk0NjAsIAotICAgIDI5NDY2LCAyOTQ3MiwgMjk0NzcsIDI5NDgzLCAyOTQ4OSwgMjk0OTUsIDI5NTAxLCAyOTUwNiwgMjk1MTEsIDI5NTE3LCAKLSAgICAyOTUyMywgMjk1MjgsIDI5NTM0LCAyOTUzOSwgMjk1NDUsIDI5NTUwLCAyOTU1NiwgMCwgMCwgMjk1NjIsIDI5NTY4LCAKLSAgICAyOTU3NCwgMjk1ODAsIDI5NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTU5MiwgMjk2MDEsIAotICAgIDI5NjEwLCAyOTYxOCwgMjk2MjcsIDI5NjM2LCAyOTY0NCwgMjk2NTMsIDI5NjYyLCAyOTY3MSwgMjk2ODAsIDI5Njg4LCAKLSAgICAyOTY5NywgMjk3MDYsIDI5NzE0LCAyOTcyMywgMjk3MzIsIDI5NzQxLCAyOTc1MCwgMjk3NTksIDI5NzY4LCAyOTc3NiwgCi0gICAgMjk3ODUsIDI5NzkzLCAyOTgwMSwgMjk4MTAsIDI5ODE4LCAyOTgyNywgMjk4MzYsIDI5ODQ1LCAyOTg1NCwgMjk4NjMsIAotICAgIDI5ODcyLCAyOTg4MCwgMjk4ODksIDI5ODk4LCAyOTkwNiwgMjk5MTUsIDI5OTI0LCAyOTkzMywgMjk5NDIsIDI5OTUxLCAKLSAgICAyOTk2MCwgMjk5NjksIDAsIDAsIDAsIDAsIDI5OTc4LCAyOTk4OCwgMjk5OTcsIDMwMDA2LCAzMDAxNCwgMzAwMjMsIAotICAgIDMwMDMxLCAzMDA0MCwgMzAwNDgsIDMwMDU3LCAzMDA2NiwgMzAwNzUsIDMwMDg0LCAzMDA5MywgMzAxMDIsIDMwMTExLCAKLSAgICAzMDEyMCwgMzAxMjksIDMwMTM4LCAzMDE0NywgMzAxNTYsIDMwMTY1LCAzMDE3NCwgMzAxODMsIDMwMTkyLCAzMDIwMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzAyMDgsIDMwMjE2LCAzMDIyMywgMzAyMzAsIDMwMjM3LCAzMDI0NCwgMzAyNTEsIDMwMjU4LCAKLSAgICAzMDI2NiwgMzAyNzMsIDMwMjgxLCAwLCAwLCAwLCAzMDI4OSwgMzAyOTcsIDMwMzA1LCAzMDMwOSwgMzAzMTUsIDMwMzIxLCAKLSAgICAzMDMyNywgMzAzMzMsIDMwMzM5LCAzMDM0NSwgMzAzNTEsIDMwMzU3LCAzMDM2MywgMzAzNjksIDMwMzc1LCAzMDM4MSwgCi0gICAgMzAzODcsIDMwMzkzLCAzMDM5OSwgMzA0MDMsIDMwNDA5LCAzMDQxNSwgMzA0MjEsIDMwNDI3LCAzMDQzMywgMzA0MzksIAotICAgIDMwNDQ1LCAzMDQ1MSwgMzA0NTcsIDMwNDYzLCAzMDQ2OSwgMzA0NzUsIDMwNDgxLCAzMDQ4NywgMzA0OTMsIDMwNDk3LCAKLSAgICAzMDUwMiwgMzA1MDcsIDMwNTEyLCAzMDUxNiwgMzA1MjEsIDMwNTI1LCAzMDUzMCwgMzA1MzUsIDMwNTQwLCAzMDU0NSwgCi0gICAgMzA1NTAsIDMwNTU1LCAzMDU2MCwgMzA1NjUsIDMwNTcwLCAzMDU3NCwgMzA1NzksIDMwNTg0LCAzMDU4OSwgMzA1OTQsIAotICAgIDMwNTk4LCAzMDYwMiwgMzA2MDcsIDMwNjEyLCAzMDYxNywgMzA2MjIsIDAsIDAsIDMwNjI4LCAzMDYzMiwgMzA2MzksIAotICAgIDMwNjQ0LCAzMDY1MCwgMzA2NTYsIDMwNjYxLCAzMDY2NywgMzA2NzMsIDMwNjc4LCAzMDY4NCwgMzA2OTAsIDMwNjk2LCAKLSAgICAzMDcwMiwgMzA3MDgsIDMwNzEzLCAzMDcxOCwgMzA3MjQsIDMwNzI5LCAzMDczNSwgMzA3NDAsIDMwNzQ2LCAzMDc1MiwgCi0gICAgMzA3NTgsIDMwNzY0LCAzMDc2OSwgMzA3NzQsIDMwNzc5LCAzMDc4NSwgMzA3OTEsIDMwNzk2LCAzMDgwMiwgMzA4MDgsIAotICAgIDMwODEyLCAzMDgxNywgMzA4MjIsIDMwODI3LCAzMDgzMiwgMzA4MzcsIDMwODQyLCAzMDg0NywgMzA4NTMsIDMwODU5LCAKLSAgICAzMDg2NSwgMzA4NzAsIDMwODc1LCAzMDg3OSwgMzA4ODQsIDMwODg4LCAzMDg5MywgMzA4OTcsIDMwOTAyLCAzMDkwNywgCi0gICAgMzA5MTIsIDMwOTE3LCAzMDkyNCwgMzA5MzEsIDMwOTM4LCAzMDk0OCwgMzA5NTcsIDMwOTY0LCAzMDk3MCwgMzA5ODEsIAotICAgIDMwOTg2LCAzMDk5MiwgMCwgMzA5OTgsIDMxMDAzLCAzMTAwOCwgMzEwMTYsIDMxMDIyLCAzMTAzMCwgMzEwMzUsIDMxMDQxLCAKLSAgICAzMTA0NywgMzEwNTMsIDMxMDU4LCAzMTA2NCwgMzEwNjksIDMxMDc2LCAzMTA4MiwgMzEwODcsIDMxMDkzLCAzMTA5OSwgCi0gICAgMzExMDUsIDMxMTEyLCAzMTExOSwgMzExMjYsIDMxMTMxLCAzMTEzNiwgMzExNDMsIDMxMTUwLCAzMTE1NywgMzExNjQsIAotICAgIDMxMTcxLCAwLCAwLCAzMTE3OCwgMzExODUsIDMxMTkyLCAzMTE5OCwgMzEyMDQsIDMxMjEwLCAzMTIxNiwgMzEyMjIsIAotICAgIDMxMjI4LCAzMTIzNSwgMzEyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjQ4LCAzMTI1NCwgMzEyNTksIDMxMjY0LCAzMTI2OSwgCi0gICAgMzEyNzQsIDMxMjc5LCAzMTI4NCwgMzEyOTAsIDMxMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAzMTMwMSwgMzEzMDYsIDMxMzExLCAKLSAgICAzMTMxNiwgMzEzMjEsIDMxMzI2LCAzMTMzMSwgMzEzNDAsIDMxMzQ3LCAzMTM1MiwgMzEzNTcsIDMxMzYyLCAzMTM2NywgCi0gICAgMzEzNzIsIDAsIDAsIDMxMzc3LCAzMTM4NCwgMzEzODcsIDMxMzkwLCAzMTM5MywgMzEzOTgsIDMxNDAyLCAzMTQwOCwgCi0gICAgMzE0MTIsIDMxNDE3LCAzMTQyNCwgMzE0MzIsIDMxNDM2LCAzMTQ0MSwgMzE0NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MDgwLCAzNDA4OCwgMzQwOTYsIDM0MTA0LCAKKyAgICAzNDExMiwgMzQxMjIsIDM0MTMyLCAzNDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQxNTIsIDM0MTU3LCAzNDE2MiwgCisgICAgMzQxNjcsIDM0MTcyLCAzNDE4MSwgMzQxOTIsIDM0MjAxLCAzNDIxMiwgMzQyMTgsIDM0MjMxLCAzNDIzNywgMzQyNDQsIAorICAgIDM0MjUxLCAzNDI1NiwgMzQyNjIsIDM0MjY4LCAzNDI3OSwgMzQyODgsIDM0Mjk1LCAzNDMwMiwgMzQzMTEsIDM0MzE4LCAKKyAgICAzNDMyNywgMzQzMzcsIDM0MzQ3LCAzNDM1NCwgMzQzNjEsIDM0MzY4LCAzNDM3OCwgMzQzODMsIDM0MzkxLCAzNDM5NywgCisgICAgMzQ0MDUsIDM0NDE0LCAzNDQxOSwgMzQ0MjYsIDM0NDMyLCAzNDQzNywgMCwgMzQ0NDIsIDM0NDQ4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNDQ1NSwgMzQ0NjAsIDM0NDY2LCAzNDQ3MywgMzQ0ODEsIDM0NDg3LCAzNDQ5MywgMzQ0OTksIDM0NTA0LCAzNDUxMSwgCisgICAgMzQ1MTcsIDM0NTIzLCAzNDUyOSwgMzQ1MzcsIDM0NTQzLCAzNDU1MSwgMzQ1NTYsIDM0NTYyLCAzNDU2OCwgMzQ1NzUsIAorICAgIDM0NTgzLCAzNDU5MCwgMzQ1OTYsIDM0NjAzLCAzNDYxMCwgMzQ2MTYsIDM0NjIzLCAzNDYzMCwgMzQ2MzYsIDM0NjQxLCAKKyAgICAzNDY0NywgMzQ2NTUsIDM0NjY0LCAzNDY3MCwgMzQ2NzYsIDM0NjgyLCAzNDY4OCwgMzQ2OTYsIDM0NzAwLCAzNDcwNiwgCisgICAgMzQ3MTIsIDM0NzE4LCAzNDcyNCwgMzQ3MzAsIDM0NzM2LCAzNDc0MCwgMzQ3NDUsIDM0NzUwLCAzNDc1NywgMzQ3NjIsIAorICAgIDM0NzY2LCAzNDc3MiwgMzQ3NzcsIDM0NzgyLCAzNDc4NiwgMzQ3OTEsIDM0Nzk2LCAzNDgwMCwgMzQ4MDUsIDM0ODEwLCAKKyAgICAzNDgxNywgMzQ4MjEsIDM0ODI2LCAzNDgzMSwgMzQ4MzUsIDM0ODQwLCAzNDg0NCwgMzQ4NDksIDM0ODUzLCAzNDg1OSwgCisgICAgMzQ4NjQsIDM0ODcxLCAzNDg3NiwgMzQ4ODEsIDM0ODg1LCAzNDg5MCwgMzQ4OTUsIDM0OTAyLCAzNDkwNywgMzQ5MTMsIAorICAgIDM0OTE4LCAzNDkyMywgMzQ5MjgsIDM0OTMyLCAzNDkzNywgMzQ5NDQsIDM0OTUxLCAzNDk1NiwgMzQ5NjEsIDM0OTY1LCAKKyAgICAzNDk3MSwgMzQ5NzgsIDM0OTgzLCAzNDk4OCwgMzQ5OTMsIDM0OTk5LCAzNTAwNCwgMzUwMTAsIDM1MDE1LCAzNTAyMSwgCisgICAgMzUwMjcsIDM1MDMzLCAzNTA0MCwgMzUwNDcsIDM1MDU0LCAzNTA2MSwgMzUwNjgsIDM1MDc1LCAzNTA4MCwgMzUwODgsIAorICAgIDM1MDk3LCAzNTEwNiwgMzUxMTUsIDM1MTI0LCAzNTEzMywgMzUxNDIsIDM1MTU0LCAzNTE2MywgMzUxNzIsIDM1MTgxLCAKKyAgICAzNTE4OCwgMzUxOTMsIDM1MjAwLCAzNTIwOCwgMzUyMTYsIDM1MjIzLCAzNTIzMCwgMzUyMzcsIDM1MjQ0LCAzNTI1MiwgCisgICAgMzUyNjEsIDM1MjcwLCAzNTI3OSwgMzUyODgsIDM1Mjk3LCAzNTMwNiwgMzUzMTUsIDM1MzI0LCAzNTMzMywgMzUzNDIsIAorICAgIDM1MzUxLCAzNTM2MCwgMzUzNjksIDM1Mzc4LCAzNTM4NiwgMzUzOTUsIDM1NDA2LCAzNTQxNCwgMzU0MjMsIDM1NDM0LCAKKyAgICAzNTQ0MywgMzU0NTIsIDM1NDYxLCAzNTQ3MCwgMzU0NzgsIDM1NDg3LCAzNTQ5NCwgMzU0OTksIDM1NTA3LCAzNTUxMiwgCisgICAgMzU1MTksIDM1NTI0LCAzNTUzMywgMzU1MzksIDM1NTQ2LCAzNTU1MywgMzU1NTgsIDM1NTYzLCAzNTU3MSwgMzU1NzksIAorICAgIDM1NTg4LCAzNTU5NywgMzU2MDIsIDM1NjA5LCAzNTYyMCwgMzU2MjgsIDM1NjM3LCAzNTY0MywgMzU2NDksIDM1NjU0LCAKKyAgICAzNTY2MSwgMzU2NjYsIDM1Njc1LCAzNTY4MCwgMzU2ODUsIDM1NjkwLCAzNTY5NywgMzU3MDQsIDM1NzA5LCAzNTcxOCwgCisgICAgMzU3MjYsIDM1NzMxLCAzNTczNiwgMzU3NDMsIDM1NzUwLCAzNTc1NCwgMzU3NTgsIDM1NzYxLCAzNTc2NCwgMzU3NjcsIAorICAgIDM1NzcwLCAzNTc3MywgMzU3NzYsIDM1NzgzLCAzNTc4NiwgMzU3ODksIDM1Nzk0LCAzNTc5OCwgMzU4MDIsIDM1ODA2LCAKKyAgICAzNTgxMCwgMzU4MTQsIDM1ODIzLCAzNTgyOSwgMzU4MzUsIDM1ODQxLCAzNTg0OSwgMzU4NTcsIDM1ODYzLCAzNTg2OSwgCisgICAgMzU4NzYsIDM1ODgyLCAzNTg4NywgMzU4OTMsIDM1OTAwLCAzNTkwNiwgMzU5MTMsIDM1OTE5LCAzNTkyNywgMzU5MzMsIAorICAgIDM1OTQwLCAzNTk0NiwgMzU5NTIsIDM1OTU4LCAzNTk2NCwgMzU5NzAsIDM1OTc2LCAzNTk4NywgMzU5OTcsIDM2MDAzLCAKKyAgICAzNjAwOSwgMzYwMTksIDM2MDI1LCAzNjAzMywgMzYwNDEsIDM2MDQ5LCAwLCAwLCAwLCAwLCAwLCAzNjA1NCwgMzYwNTgsIAorICAgIDM2MDY1LCAzNjA3MiwgMzYwNzcsIDM2MDg2LCAzNjA5NCwgMzYxMDIsIDM2MTA5LCAzNjExNiwgMzYxMjMsIDM2MTMwLCAKKyAgICAzNjEzOCwgMzYxNDYsIDM2MTU2LCAzNjE2NiwgMzYxNzQsIDM2MTgyLCAzNjE5MCwgMzYxOTgsIDM2MjA3LCAzNjIxNiwgCisgICAgMzYyMjQsIDM2MjMyLCAzNjI0MSwgMzYyNTAsIDM2MjYwLCAzNjI3MCwgMzYyNzksIDM2Mjg4LCAzNjI5NiwgMzYzMDQsIAorICAgIDM2MzEyLCAzNjMyMCwgMzYzMzAsIDM2MzQwLCAzNjM0OCwgMzYzNTYsIDM2MzY0LCAzNjM3MiwgMzYzODAsIDM2Mzg4LCAKKyAgICAzNjM5NiwgMzY0MDQsIDM2NDEyLCAzNjQyMCwgMzY0MjgsIDM2NDM2LCAzNjQ0NSwgMzY0NTQsIDM2NDYzLCAzNjQ3MiwgCisgICAgMzY0ODIsIDM2NDkyLCAzNjQ5OSwgMzY1MDYsIDM2NTE0LCAzNjUyMiwgMzY1MzEsIDM2NTQwLCAzNjU0OCwgMzY1NTYsIAorICAgIDM2NTY4LCAzNjU4MCwgMzY1ODksIDM2NTk4LCAzNjYwNywgMzY2MTYsIDM2NjIzLCAzNjYzMCwgMzY2MzgsIDM2NjQ2LCAKKyAgICAzNjY1NCwgMzY2NjIsIDM2NjcwLCAzNjY3OCwgMzY2ODYsIDM2Njk0LCAzNjcwMywgMzY3MTIsIDM2NzIxLCAzNjczMCwgCisgICAgMzY3MzksIDM2NzQ4LCAzNjc1OCwgMzY3NjgsIDM2Nzc4LCAzNjc4OCwgMzY3OTcsIDM2ODA2LCAzNjgxMywgMzY4MjAsIAorICAgIDM2ODI4LCAzNjgzNiwgMzY4NDQsIDM2ODUyLCAzNjg2MCwgMzY4NjgsIDM2ODgwLCAzNjg5MiwgMzY5MDEsIDM2OTEwLCAKKyAgICAzNjkxOCwgMzY5MjYsIDM2OTM0LCAzNjk0MiwgMzY5NTMsIDM2OTY0LCAzNjk3NSwgMzY5ODYsIDM2OTk4LCAzNzAxMCwgCisgICAgMzcwMTgsIDM3MDI2LCAzNzAzNCwgMzcwNDIsIDM3MDUxLCAzNzA2MCwgMzcwNjksIDM3MDc4LCAzNzA4NiwgMzcwOTQsIAorICAgIDM3MTAyLCAzNzExMCwgMzcxMTgsIDM3MTI2LCAzNzEzNSwgMzcxNDQsIDM3MTU0LCAzNzE2NCwgMzcxNzIsIDM3MTgwLCAKKyAgICAzNzE4OCwgMzcxOTYsIDM3MjA0LCAzNzIxMiwgMzcyMTksIDM3MjI2LCAzNzIzNCwgMzcyNDIsIDM3MjUwLCAzNzI1OCwgCisgICAgMzcyNjYsIDM3Mjc0LCAzNzI4MiwgMzcyOTAsIDM3Mjk4LCAzNzMwNiwgMzczMTQsIDM3MzIyLCAzNzMzMCwgMzczMzgsIAorICAgIDM3MzQ2LCAzNzM1NCwgMzczNjMsIDM3MzcyLCAzNzM4MSwgMzczODksIDM3Mzk4LCAzNzQwNywgMzc0MTYsIDM3NDI1LCAKKyAgICAzNzQzNSwgMzc0NDQsIDM3NDUxLCAzNzQ1NiwgMzc0NjMsIDM3NDcwLCAzNzQ3OCwgMzc0ODYsIDM3NDk1LCAzNzUwNCwgCisgICAgMzc1MTQsIDM3NTI0LCAzNzUzNSwgMzc1NDYsIDM3NTU2LCAzNzU2NiwgMzc1NzYsIDM3NTg2LCAzNzU5NSwgMzc2MDQsIAorICAgIDM3NjE0LCAzNzYyNCwgMzc2MzUsIDM3NjQ2LCAzNzY1NiwgMzc2NjYsIDM3Njc2LCAzNzY4NiwgMzc2OTMsIDM3NzAwLCAKKyAgICAzNzcwOCwgMzc3MTYsIDM3NzIzLCAzNzczMCwgMzc3MzksIDM3NzQ4LCAzNzc1OCwgMzc3NjgsIDM3Nzc5LCAzNzc5MCwgCisgICAgMzc4MDAsIDM3ODEwLCAzNzgyMCwgMzc4MzAsIDM3ODM5LCAzNzg0OCwgMzc4NTYsIDM3ODY0LCAzNzg3MSwgMzc4NzgsIAorICAgIDM3ODg2LCAzNzg5NCwgMzc5MDMsIDM3OTEyLCAzNzkyMiwgMzc5MzIsIDM3OTQzLCAzNzk1NCwgMzc5NjQsIDM3OTc0LCAKKyAgICAzNzk4NCwgMzc5OTQsIDM4MDAzLCAzODAxMiwgMzgwMjIsIDM4MDMyLCAzODA0MywgMzgwNTQsIDM4MDY0LCAzODA3NCwgCisgICAgMzgwODQsIDM4MDk0LCAzODEwMSwgMzgxMDgsIDM4MTE2LCAzODEyNCwgMzgxMzMsIDM4MTQyLCAzODE1MiwgMzgxNjIsIAorICAgIDM4MTczLCAzODE4NCwgMzgxOTQsIDM4MjA0LCAzODIxNCwgMzgyMjQsIDM4MjMyLCAzODI0MCwgMzgyNDgsIDM4MjU2LCAKKyAgICAzODI2NSwgMzgyNzQsIDM4MjgyLCAzODI5MCwgMzgyOTcsIDM4MzA0LCAzODMxMSwgMzgzMTgsIDM4MzI2LCAzODMzNCwgCisgICAgMzgzNDIsIDM4MzUwLCAzODM2MSwgMzgzNzIsIDM4MzgzLCAzODM5NCwgMzg0MDUsIDM4NDE2LCAzODQyNCwgMzg0MzIsIAorICAgIDM4NDQzLCAzODQ1NCwgMzg0NjUsIDM4NDc2LCAzODQ4NywgMzg0OTgsIDM4NTA2LCAzODUxNCwgMzg1MjUsIDM4NTM2LCAKKyAgICAzODU0NywgMCwgMCwgMzg1NTgsIDM4NTY2LCAzODU3NCwgMzg1ODUsIDM4NTk2LCAzODYwNywgMCwgMCwgMzg2MTgsIAorICAgIDM4NjI2LCAzODYzNCwgMzg2NDUsIDM4NjU2LCAzODY2NywgMzg2NzgsIDM4Njg5LCAzODcwMCwgMzg3MDgsIDM4NzE2LCAKKyAgICAzODcyNywgMzg3MzgsIDM4NzQ5LCAzODc2MCwgMzg3NzEsIDM4NzgyLCAzODc5MCwgMzg3OTgsIDM4ODA5LCAzODgyMCwgCisgICAgMzg4MzEsIDM4ODQyLCAzODg1MywgMzg4NjQsIDM4ODcyLCAzODg4MCwgMzg4OTEsIDM4OTAyLCAzODkxMywgMzg5MjQsIAorICAgIDM4OTM1LCAzODk0NiwgMzg5NTQsIDM4OTYyLCAzODk3MywgMzg5ODQsIDM4OTk1LCAwLCAwLCAzOTAwNiwgMzkwMTQsIAorICAgIDM5MDIyLCAzOTAzMywgMzkwNDQsIDM5MDU1LCAwLCAwLCAzOTA2NiwgMzkwNzQsIDM5MDgyLCAzOTA5MywgMzkxMDQsIAorICAgIDM5MTE1LCAzOTEyNiwgMzkxMzcsIDAsIDM5MTQ4LCAwLCAzOTE1NiwgMCwgMzkxNjcsIDAsIDM5MTc4LCAzOTE4OSwgCisgICAgMzkxOTcsIDM5MjA1LCAzOTIxNiwgMzkyMjcsIDM5MjM4LCAzOTI0OSwgMzkyNjAsIDM5MjcxLCAzOTI3OSwgMzkyODcsIAorICAgIDM5Mjk4LCAzOTMwOSwgMzkzMjAsIDM5MzMxLCAzOTM0MiwgMzkzNTMsIDM5MzYxLCAzOTM2OSwgMzkzNzcsIDM5Mzg1LCAKKyAgICAzOTM5MywgMzk0MDEsIDM5NDA5LCAzOTQxNywgMzk0MjUsIDM5NDMzLCAzOTQ0MSwgMzk0NDksIDM5NDU3LCAwLCAwLCAKKyAgICAzOTQ2NSwgMzk0NzYsIDM5NDg3LCAzOTUwMSwgMzk1MTUsIDM5NTI5LCAzOTU0MywgMzk1NTcsIDM5NTcxLCAzOTU4MiwgCisgICAgMzk1OTMsIDM5NjA3LCAzOTYyMSwgMzk2MzUsIDM5NjQ5LCAzOTY2MywgMzk2NzcsIDM5Njg4LCAzOTY5OSwgMzk3MTMsIAorICAgIDM5NzI3LCAzOTc0MSwgMzk3NTUsIDM5NzY5LCAzOTc4MywgMzk3OTQsIDM5ODA1LCAzOTgxOSwgMzk4MzMsIDM5ODQ3LCAKKyAgICAzOTg2MSwgMzk4NzUsIDM5ODg5LCAzOTkwMCwgMzk5MTEsIDM5OTI1LCAzOTkzOSwgMzk5NTMsIDM5OTY3LCAzOTk4MSwgCisgICAgMzk5OTUsIDQwMDA2LCA0MDAxNywgNDAwMzEsIDQwMDQ1LCA0MDA1OSwgNDAwNzMsIDQwMDg3LCA0MDEwMSwgNDAxMDksIAorICAgIDQwMTE3LCA0MDEyOCwgNDAxMzYsIDAsIDQwMTQ3LCA0MDE1NSwgNDAxNjYsIDQwMTc0LCA0MDE4MiwgNDAxOTAsIDQwMTk4LCAKKyAgICA0MDIwNiwgNDAyMDksIDQwMjEyLCA0MDIxNSwgNDAyMTgsIDQwMjI0LCA0MDIzNSwgNDAyNDMsIDAsIDQwMjU0LCA0MDI2MiwgCisgICAgNDAyNzMsIDQwMjgxLCA0MDI4OSwgNDAyOTcsIDQwMzA1LCA0MDMxMywgNDAzMTksIDQwMzI1LCA0MDMzMSwgNDAzMzksIAorICAgIDQwMzQ3LCA0MDM1OCwgMCwgMCwgNDAzNjksIDQwMzc3LCA0MDM4OCwgNDAzOTYsIDQwNDA0LCA0MDQxMiwgMCwgNDA0MjAsIAorICAgIDQwNDI2LCA0MDQzMiwgNDA0MzgsIDQwNDQ2LCA0MDQ1NCwgNDA0NjUsIDQwNDc2LCA0MDQ4NCwgNDA0OTIsIDQwNTAwLCAKKyAgICA0MDUxMSwgNDA1MTksIDQwNTI3LCA0MDUzNSwgNDA1NDMsIDQwNTUxLCA0MDU1NywgNDA1NjMsIDAsIDAsIDQwNTY2LCAKKyAgICA0MDU3NywgNDA1ODUsIDAsIDQwNTk2LCA0MDYwNCwgNDA2MTUsIDQwNjIzLCA0MDYzMSwgNDA2MzksIDQwNjQ3LCA0MDY1NSwgCisgICAgNDA2NTgsIDAsIDQwNjYxLCA0MDY2NSwgNDA2NjksIDQwNjczLCA0MDY3NywgNDA2ODEsIDQwNjg1LCA0MDY4OSwgNDA2OTMsIAorICAgIDQwNjk3LCA0MDcwMSwgNDA3MDUsIDQwNzExLCA0MDcxNywgNDA3MjMsIDQwNzI2LCA0MDcyOSwgNDA3MzEsIDQwNzM1LCAKKyAgICA0MDczOSwgNDA3NDMsIDQwNzQ3LCA0MDc1MCwgNDA3NTQsIDQwNzU4LCA0MDc2NCwgNDA3NzAsIDQwNzc3LCA0MDc4NCwgCisgICAgNDA3ODksIDQwNzk0LCA0MDgwMCwgNDA4MDYsIDQwODA4LCA0MDgxMSwgNDA4MTMsIDQwODE3LCA0MDgyMSwgNDA4MjUsIAorICAgIDQwODI5LCA0MDgzMywgNDA4MzcsIDQwODQxLCA0MDg0NSwgNDA4NDksIDQwODU1LCA0MDg1OSwgNDA4NjMsIDQwODY5LCAKKyAgICA0MDg3NCwgNDA4ODEsIDQwODgzLCA0MDg4NiwgNDA4OTAsIDQwODk0LCA0MDg5OSwgNDA5MDUsIDQwOTA3LCA0MDkxNiwgCisgICAgNDA5MjUsIDQwOTI4LCA0MDkzMiwgNDA5MzQsIDQwOTM2LCA0MDkzOCwgNDA5NDEsIDQwOTQ3LCA0MDk0OSwgNDA5NTMsIAorICAgIDQwOTU3LCA0MDk2NCwgNDA5NzEsIDQwOTc1LCA0MDk4MCwgNDA5ODUsIDQwOTkwLCA0MDk5NSwgNDA5OTksIDQxMDAzLCAKKyAgICA0MTAwNiwgNDEwMTAsIDQxMDE0LCA0MTAyMSwgNDEwMjYsIDQxMDMwLCA0MTAzNCwgNDEwMzksIDQxMDQzLCA0MTA0NywgCisgICAgNDEwNTIsIDQxMDU3LCA0MTA2MSwgNDEwNjUsIDQxMDY5LCA0MTA3MSwgNDEwNzYsIDQxMDgxLCA0MTA4NSwgNDEwODksIAorICAgIDQxMDkzLCA0MTA5NywgMCwgNDExMDEsIDQxMTA1LCA0MTEwOSwgNDExMTUsIDQxMTIxLCA0MTEyNywgNDExMzMsIDQxMTQwLCAKKyAgICA0MTE0NywgNDExNTIsIDQxMTU3LCA0MTE2MSwgMCwgMCwgNDExNjcsIDQxMTcwLCA0MTE3MywgNDExNzYsIDQxMTgwLCAKKyAgICA0MTE4MywgNDExODcsIDQxMTkxLCA0MTE5NSwgNDEyMDAsIDQxMjA1LCA0MTIxMCwgNDEyMTcsIDQxMjIxLCA0MTIyNCwgCisgICAgNDEyMjcsIDQxMjMwLCA0MTIzMywgNDEyMzYsIDQxMjM5LCA0MTI0MywgNDEyNDYsIDQxMjUwLCA0MTI1NCwgNDEyNTgsIAorICAgIDQxMjYzLCA0MTI2OCwgMCwgNDEyNzMsIDQxMjc5LCA0MTI4NSwgNDEyOTEsIDQxMjk4LCA0MTMwNSwgNDEzMTIsIDQxMzE5LCAKKyAgICA0MTMyNSwgNDEzMzIsIDQxMzM5LCA0MTM0NiwgNDEzNTMsIDAsIDAsIDAsIDQxMzYwLCA0MTM2MywgNDEzNjYsIDQxMzY5LCAKKyAgICA0MTM3NCwgNDEzNzcsIDQxMzgwLCA0MTM4MywgNDEzODYsIDQxMzg5LCA0MTM5MiwgNDEzOTcsIDQxNDAwLCA0MTQwMywgCisgICAgNDE0MDYsIDQxNDA5LCA0MTQxMiwgNDE0MTcsIDQxNDIwLCA0MTQyMywgNDE0MjYsIDQxNDI5LCA0MTQzMiwgNDE0MzcsIAorICAgIDQxNDQwLCA0MTQ0MywgNDE0NDgsIDQxNDUzLCA0MTQ1NywgNDE0NjAsIDQxNDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTQ2NiwgNDE0NzEsIDQxNDc2LCA0MTQ4MywgNDE0OTEsIDQxNDk2LCAKKyAgICA0MTUwMSwgNDE1MDUsIDQxNTA5LCA0MTUxNCwgNDE1MjEsIDQxNTI4LCA0MTUzMiwgNDE1MzcsIDQxNTQyLCA0MTU0NywgCisgICAgNDE1NTIsIDQxNTU5LCA0MTU2NCwgNDE1NjksIDQxNTc0LCA0MTU4MywgNDE1OTAsIDQxNTk3LCA0MTYwMSwgNDE2MDYsIAorICAgIDQxNjEyLCA0MTYxNywgNDE2MjQsIDQxNjMyLCA0MTY0MCwgNDE2NDQsIDQxNjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTY1MiwgNDE2NTYsIDQxNjY0LCA0MTY2OCwgNDE2NzIsIDQxNjc3LCA0MTY4MSwgCisgICAgNDE2ODUsIDQxNjg5LCA0MTY5MSwgNDE2OTUsIDQxNjk5LCA0MTcwMywgNDE3MDgsIDQxNzEyLCA0MTcxNiwgNDE3MjQsIAorICAgIDQxNzI3LCA0MTczMSwgNDE3MzQsIDQxNzM3LCA0MTc0MywgNDE3NDcsIDQxNzUwLCA0MTc1NiwgNDE3NjAsIDQxNzY0LCAKKyAgICA0MTc2OCwgNDE3NzEsIDQxNzc1LCA0MTc3OCwgNDE3ODIsIDQxNzg0LCA0MTc4NywgNDE3OTAsIDQxNzk0LCA0MTc5NiwgCisgICAgNDE4MDAsIDQxODAzLCA0MTgwNiwgNDE4MTEsIDQxODE2LCA0MTgyMywgNDE4MjYsIDQxODI5LCA0MTgzMywgNDE4MzgsIAorICAgIDQxODQxLCA0MTg0NCwgNDE4NDcsIDQxODUxLCA0MTg1NiwgNDE4NjAsIDQxODYzLCA0MTg2NSwgNDE4NjgsIDQxODcxLCAKKyAgICA0MTg3NCwgNDE4NzgsIDQxODgzLCA0MTg4NiwgNDE4OTAsIDQxODk0LCA0MTg5OCwgNDE5MDIsIDQxOTA3LCA0MTkxMywgCisgICAgNDE5MTgsIDQxOTIzLCA0MTkyOSwgNDE5MzQsIDQxOTM5LCA0MTk0MywgNDE5NDcsIDQxOTUyLCA0MTk1NiwgNDE5NjAsIAorICAgIDQxOTYzLCA0MTk2NSwgNDE5NzAsIDQxOTc2LCA0MTk4MywgNDE5OTAsIDQxOTk3LCA0MjAwNCwgNDIwMTEsIDQyMDE4LCAKKyAgICA0MjAyNSwgNDIwMzIsIDQyMDQwLCA0MjA0NywgNDIwNTUsIDQyMDYyLCA0MjA2OSwgNDIwNzcsIDQyMDg1LCA0MjA5MCwgCisgICAgNDIwOTUsIDQyMTAwLCA0MjEwNSwgNDIxMTAsIDQyMTE1LCA0MjEyMCwgNDIxMjYsIDQyMTMxLCA0MjEzNywgNDIxNDMsIAorICAgIDQyMTQ5LCA0MjE1NSwgNDIxNjEsIDQyMTY4LCA0MjE3NiwgNDIxODMsIDQyMTg5LCA0MjE5NSwgNDIyMDEsIDQyMjA3LCAKKyAgICA0MjIxMywgNDIyMTksIDQyMjI2LCA0MjIzMiwgNDIyMzksIDQyMjQ2LCA0MjI1MywgNDIyNjAsIDQyMjY3LCA0MjI3NSwgCisgICAgNDIyODQsIDQyMjkyLCA0MjMwMywgNDIzMTEsIDQyMzE5LCA0MjMyOCwgNDIzMzUsIDQyMzQ0LCA0MjM1MywgNDIzNjEsIAorICAgIDQyMzcwLCA0MjM3OCwgNDIzODIsIDAsIDAsIDAsIDAsIDQyMzg2LCA0MjM4OCwgNDIzOTAsIDQyMzkyLCA0MjM5NCwgCisgICAgNDIzOTcsIDQyNDAwLCA0MjQwNCwgNDI0MDgsIDQyNDEzLCA0MjQxOCwgNDI0MjIsIDQyNDI2LCA0MjQzMCwgNDI0MzQsIAorICAgIDQyNDM5LCA0MjQ0NCwgNDI0NDksIDQyNDU0LCA0MjQ1OSwgNDI0NjQsIDQyNDY5LCA0MjQ3NCwgNDI0NzksIDQyNDg0LCAKKyAgICA0MjQ5MCwgNDI0OTQsIDQyNDk4LCA0MjUwMywgNDI1MDgsIDQyNTEzLCA0MjUxOCwgNDI1MjIsIDQyNTI5LCA0MjUzNiwgCisgICAgNDI1NDMsIDQyNTUwLCA0MjU1NywgNDI1NjQsIDQyNTcxLCA0MjU3OCwgNDI1ODYsIDQyNTk4LCA0MjYwNCwgNDI2MTAsIAorICAgIDQyNjE3LCA0MjYyNCwgNDI2MzEsIDQyNjM4LCA0MjY0NSwgNDI2NTIsIDQyNjU5LCA0MjY2NiwgNDI2NzEsIDQyNjc3LCAKKyAgICA0MjY4MiwgNDI2ODcsIDQyNjkyLCA0MjY5NywgNDI3MDIsIDQyNzA5LCA0MjcxNiwgNDI3MjEsIDQyNzI3LCA0MjczMiwgCisgICAgNDI3MzUsIDQyNzM4LCA0Mjc0MSwgNDI3NDQsIDQyNzQ4LCA0Mjc1MiwgNDI3NTcsIDQyNzYyLCA0Mjc2OCwgNDI3NzQsIAorICAgIDQyNzc4LCA0Mjc4MiwgNDI3ODYsIDQyNzkwLCA0Mjc5NSwgNDI4MDAsIDQyODA0LCA0MjgwOCwgNDI4MTIsIDQyODE2LCAKKyAgICA0MjgyMSwgNDI4MjYsIDQyODI5LCA0MjgzMiwgNDI4MzUsIDQyODM4LCA0Mjg0NCwgNDI4NTEsIDQyODYyLCA0Mjg3MiwgCisgICAgNDI4NzYsIDQyODg0LCA0Mjg5MSwgNDI4OTksIDQyOTA4LCA0MjkxMiwgNDI5MTgsIDQyOTI0LCA0MjkyOCwgNDI5MzMsIAorICAgIDQyOTM4LCA0Mjk0NCwgNDI5NTAsIDQyOTU2LCA0Mjk2MywgNDI5NjcsIDQyOTcxLCA0Mjk3NiwgNDI5NzksIDQyOTgxLCAKKyAgICA0Mjk4NSwgNDI5ODksIDQyOTk3LCA0MzAwMSwgNDMwMDMsIDQzMDA1LCA0MzAwOSwgNDMwMTcsIDQzMDIyLCA0MzAyOCwgCisgICAgNDMwMzgsIDQzMDQ1LCA0MzA1MCwgNDMwNTQsIDQzMDU4LCA0MzA2MiwgNDMwNjUsIDQzMDY4LCA0MzA3MSwgNDMwNzUsIAorICAgIDQzMDc5LCA0MzA4MywgNDMwODcsIDQzMDkxLCA0MzA5NCwgNDMwOTgsIDQzMTAyLCA0MzEwNSwgNDMxMDcsIDQzMTEwLCAKKyAgICA0MzExMiwgNDMxMTYsIDQzMTIwLCA0MzEyMiwgNDMxMjgsIDQzMTMxLCA0MzEzNiwgNDMxNDAsIDQzMTQ0LCA0MzE0NiwgCisgICAgNDMxNDgsIDQzMTUwLCA0MzE1MywgNDMxNTcsIDQzMTYxLCA0MzE2NSwgNDMxNjksIDQzMTczLCA0MzE3OSwgNDMxODUsIAorICAgIDQzMTg3LCA0MzE4OSwgNDMxOTEsIDQzMTkzLCA0MzE5NiwgNDMxOTgsIDQzMjAyLCA0MzIwNCwgNDMyMDgsIDQzMjEyLCAKKyAgICA0MzIxOCwgNDMyMjIsIDQzMjI2LCA0MzIzMCwgNDMyMzQsIDQzMjM4LCA0MzI0NCwgNDMyNDgsIDQzMjU4LCA0MzI2OCwgCisgICAgNDMyNzIsIDQzMjc4LCA0MzI4NSwgNDMyODksIDQzMjkzLCA0MzI5NiwgNDMzMDEsIDQzMzA1LCA0MzMxMSwgNDMzMTUsIAorICAgIDQzMzI4LCA0MzMzNywgNDMzNDEsIDQzMzQ1LCA0MzM1MSwgNDMzNTUsIDQzMzU4LCA0MzM2MCwgNDMzNjMsIDQzMzY3LCAKKyAgICA0MzM3MSwgNDMzNzgsIDQzMzgyLCA0MzM4NiwgNDMzOTAsIDQzMzkzLCA0MzM5OCwgNDM0MDMsIDQzNDA5LCA0MzQxNSwgCisgICAgNDM0MjAsIDQzNDI1LCA0MzQzMywgNDM0NDEsIDQzNDQ1LCA0MzQ0OSwgNDM0NTEsIDQzNDU2LCA0MzQ2MCwgNDM0NjQsIAorICAgIDQzNDcyLCA0MzQ4MCwgNDM0ODcsIDQzNDk0LCA0MzUwMywgNDM1MTIsIDQzNTE4LCA0MzUyNCwgNDM1MzIsIDQzNTQwLCAKKyAgICA0MzU0MiwgNDM1NDQsIDQzNTUwLCA0MzU1NiwgNDM1NjMsIDQzNTcwLCA0MzU3NiwgNDM1ODIsIDQzNTg2LCA0MzU5MCwgCisgICAgNDM1OTcsIDQzNjA0LCA0MzYxMSwgNDM2MTgsIDQzNjI4LCA0MzYzOCwgNDM2NDYsIDQzNjU0LCA0MzY1NiwgNDM2NjAsIAorICAgIDQzNjY0LCA0MzY2OSwgNDM2NzQsIDQzNjgyLCA0MzY5MCwgNDM2OTMsIDQzNjk2LCA0MzY5OSwgNDM3MDIsIDQzNzA1LCAKKyAgICA0MzcxMCwgNDM3MTQsIDQzNzE5LCA0MzcyNCwgNDM3MjcsIDQzNzMwLCA0MzczMywgNDM3MzYsIDQzNzM5LCA0Mzc0MywgCisgICAgNDM3NDYsIDQzNzQ5LCA0Mzc1MiwgNDM3NTUsIDQzNzU3LCA0Mzc1OSwgNDM3NjEsIDQzNzYzLCA0Mzc3MSwgNDM3NzksIAorICAgIDQzNzg1LCA0Mzc4OSwgNDM3OTUsIDQzODA1LCA0MzgxMSwgNDM4MTcsIDQzODIzLCA0MzgzMSwgNDM4NDAsIDQzODUyLCAKKyAgICA0Mzg1NiwgNDM4NjAsIDQzODYyLCA0Mzg2OCwgNDM4NzAsIDQzODcyLCA0Mzg3NCwgNDM4NzYsIDQzODgyLCA0Mzg4NSwgCisgICAgNDM4OTEsIDQzODk3LCA0MzkwMSwgNDM5MDUsIDQzOTA5LCA0MzkxMiwgNDM5MTYsIDQzOTIwLCA0MzkyMiwgNDM5MzEsIAorICAgIDQzOTQwLCA0Mzk0NSwgNDM5NTAsIDQzOTU2LCA0Mzk2MiwgNDM5NjgsIDQzOTcxLCA0Mzk3NCwgNDM5NzcsIDQzOTgwLCAKKyAgICA0Mzk4MiwgNDM5ODcsIDQzOTkyLCA0Mzk5NywgNDQwMDMsIDQ0MDA5LCA0NDAxOCwgNDQwMjcsIDQ0MDM0LCA0NDA0MSwgCisgICAgNDQwNDgsIDQ0MDU1LCA0NDA2NSwgNDQwNzUsIDQ0MDg1LCA0NDA5NSwgNDQxMDUsIDQ0MTE1LCA0NDEyNCwgNDQxMzMsIAorICAgIDQ0MTQyLCA0NDE1MSwgNDQxNTksIDQ0MTcxLCA0NDE4MiwgNDQxOTgsIDQ0MjAxLCA0NDIwNywgNDQyMTMsIDQ0MjE5LCAKKyAgICA0NDIyNywgNDQyNDIsIDQ0MjU4LCA0NDI2NCwgNDQyNzAsIDQ0Mjc3LCA0NDI4MywgNDQyOTIsIDQ0Mjk5LCA0NDMxMywgCisgICAgNDQzMjgsIDQ0MzMzLCA0NDMzOSwgNDQzNDcsIDQ0MzUwLCA0NDM1MywgNDQzNTUsIDQ0MzU4LCA0NDM2MSwgNDQzNjMsIAorICAgIDQ0MzY1LCA0NDM2OSwgNDQzNzIsIDQ0Mzc1LCA0NDM3OCwgNDQzODEsIDQ0Mzg2LCA0NDM5MSwgNDQzOTYsIDQ0NDAxLCAKKyAgICA0NDQwNiwgNDQ0MDksIDQ0NDExLCA0NDQxMywgNDQ0MTUsIDQ0NDE5LCA0NDQyMywgNDQ0MjcsIDQ0NDMzLCA0NDQzOCwgCisgICAgNDQ0NDAsIDQ0NDQyLCA0NDQ0NywgNDQ0NTIsIDQ0NDU3LCA0NDQ2MiwgNDQ0NjcsIDQ0NDcyLCA0NDQ3NCwgNDQ0NzYsIAorICAgIDQ0NDg2LCA0NDQ5MCwgNDQ0OTgsIDQ0NTA3LCA0NDUwOSwgNDQ1MTQsIDQ0NTE5LCA0NDUyNywgNDQ1MzEsIDQ0NTMzLCAKKyAgICA0NDUzNywgNDQ1MzksIDQ0NTQzLCA0NDU0NywgNDQ1NTEsIDQ0NTUzLCA0NDU1NSwgNDQ1NTcsIDQ0NTY0LCA0NDU3MywgCisgICAgNDQ1ODIsIDQ0NTkxLCA0NDYwMCwgNDQ2MDksIDQ0NjE4LCA0NDYyNywgNDQ2MzYsIDQ0NjQ0LCA0NDY1MiwgNDQ2NjEsIAorICAgIDQ0NjcwLCA0NDY3OSwgNDQ2ODgsIDQ0Njk2LCA0NDcwNCwgNDQ3MTMsIDQ0NzIyLCA0NDczMSwgNDQ3NDEsIDQ0NzUwLCAKKyAgICA0NDc2MCwgNDQ3NjksIDQ0Nzc5LCA0NDc4NywgNDQ3OTYsIDQ0ODA2LCA0NDgxNSwgNDQ4MjUsIDQ0ODM0LCA0NDg0NCwgCisgICAgNDQ4NTIsIDQ0ODYxLCA0NDg3MCwgNDQ4NzksIDQ0ODg4LCA0NDg5NywgNDQ5MDYsIDQ0OTE2LCA0NDkyNSwgNDQ5MzQsIAorICAgIDQ0OTQzLCA0NDk1MywgNDQ5NjIsIDQ0OTcxLCA0NDk4MCwgNDQ5ODksIDQ0OTk5LCA0NTAwOSwgNDUwMTgsIDQ1MDI3LCAKKyAgICA0NTAzNSwgNDUwNDQsIDQ1MDUxLCA0NTA2MCwgNDUwNjksIDQ1MDgwLCA0NTA4OSwgNDUwOTksIDQ1MTA5LCA0NTExNiwgCisgICAgNDUxMjMsIDQ1MTMwLCA0NTEzOSwgNDUxNDgsIDQ1MTU3LCA0NTE2NiwgNDUxNzMsIDQ1MTc4LCA0NTE4NiwgNDUxOTEsIAorICAgIDQ1MTk0LCA0NTIwMSwgNDUyMDQsIDQ1MjA5LCA0NTIxNCwgNDUyMTcsIDQ1MjIwLCA0NTIyOCwgNDUyMzEsIDQ1MjM2LCAKKyAgICA0NTIzOSwgNDUyNDcsIDQ1MjUyLCA0NTI2MCwgNDUyNjMsIDQ1MjY2LCA0NTI2OSwgNDUyNzQsIDQ1Mjc5LCA0NTI4MiwgCisgICAgNDUyODUsIDQ1MjkzLCA0NTI5NiwgNDUzMDMsIDQ1MzEwLCA0NTMxNCwgNDUzMTgsIDQ1MzIzLCA0NTMyOCwgNDUzMzQsIAorICAgIDQ1MzM5LCA0NTM0NSwgNDUzNTEsIDQ1MzU2LCA0NTM2MiwgNDUzNzAsIDQ1Mzc2LCA0NTM4NCwgNDUzOTIsIDQ1Mzk4LCAKKyAgICA0NTQwNiwgNDU0MTQsIDQ1NDIyLCA0NTQzMCwgNDU0MzYsIDQ1NDQ0LCA0NTQ1MiwgNDU0NjAsIDQ1NDY0LCA0NTQ3MCwgCisgICAgNDU0ODQsIDQ1NDk4LCA0NTUwMiwgNDU1MDYsIDQ1NTEwLCA0NTUxNCwgNDU1MjQsIDQ1NTI4LCA0NTUzMywgNDU1MzgsIAorICAgIDQ1NTQ0LCA0NTU1MCwgNDU1NTYsIDQ1NTYyLCA0NTU3MiwgNDU1ODIsIDQ1NTkwLCA0NTYwMSwgNDU2MTIsIDQ1NjIwLCAKKyAgICA0NTYzMSwgNDU2NDIsIDQ1NjUwLCA0NTY2MSwgNDU2NzIsIDQ1NjgwLCA0NTY4OCwgNDU2OTgsIDQ1NzA4LCA0NTcxMSwgCisgICAgNDU3MTQsIDQ1NzE3LCA0NTcyMiwgNDU3MjYsIDQ1NzMyLCA0NTczOSwgNDU3NDYsIDQ1NzU0LCA0NTc2MSwgNDU3NjUsIAorICAgIDQ1NzY5LCA0NTc3MywgNDU3NzcsIDQ1Nzc5LCA0NTc4MywgNDU3ODcsIDQ1NzkyLCA0NTc5NywgNDU4MDQsIDQ1ODExLCAKKyAgICA0NTgxNCwgNDU4MjEsIDQ1ODIzLCA0NTgyNSwgNDU4MjksIDQ1ODMzLCA0NTgzOCwgNDU4NDQsIDQ1ODUwLCA0NTg1NiwgCisgICAgNDU4NjIsIDQ1ODcxLCA0NTg4MCwgNDU4ODksIDQ1ODkzLCA0NTg5NSwgNDU4OTksIDQ1OTA2LCA0NTkxMywgNDU5MjAsIAorICAgIDQ1OTI3LCA0NTkzNCwgNDU5MzcsIDQ1OTQyLCA0NTk0OCwgNDU5NTEsIDQ1OTU2LCA0NTk2MSwgMCwgNDU5NjYsIDQ1OTcwLCAKKyAgICA0NTk3NywgNDU5ODQsIDQ1OTkxLCA0NTk5OCwgNDYwMDIsIDQ2MDA2LCA0NjAxMCwgNDYwMTQsIDQ2MDIwLCA0NjAyNiwgCisgICAgNDYwMzEsIDQ2MDM3LCA0NjA0MywgNDYwNDksIDQ2MDU1LCA0NjA2MywgNDYwNzAsIDQ2MDc3LCA0NjA4NCwgNDYwOTEsIAorICAgIDQ2MDk2LCA0NjEwMiwgNDYxMTEsIDQ2MTE1LCA0NjEyMiwgNDYxMjYsIDQ2MTMwLCA0NjEzNiwgNDYxNDIsIDQ2MTQ4LCAKKyAgICA0NjE1NCwgNDYxNTgsIDQ2MTYyLCA0NjE2NSwgNDYxNjgsIDQ2MTcyLCA0NjE3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYxODYsIDQ2MTg5LCA0NjE5MywgCisgICAgNDYxOTcsIDQ2MjAzLCA0NjIwOSwgNDYyMTUsIDQ2MjIzLCA0NjIzMCwgNDYyMzQsIDQ2MjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjI0NywgNDYyNTAsIDQ2MjUzLCA0NjI1NiwgCisgICAgNDYyNTksIDQ2MjYyLCA0NjI2NSwgNDYyNjksIDQ2MjcyLCA0NjI3NiwgNDYyODAsIDQ2Mjg0LCA0NjI4OCwgNDYyOTIsIAorICAgIDQ2Mjk2LCA0NjMwMCwgNDYzMDQsIDQ2MzA4LCA0NjMxMiwgNDYzMTYsIDQ2MzIwLCA0NjMyMywgNDYzMjYsIDQ2MzI5LCAKKyAgICA0NjMzMiwgNDYzMzUsIDQ2MzM4LCA0NjM0MiwgNDYzNDUsIDQ2MzQ5LCA0NjM1MywgNDYzNTcsIDQ2MzYxLCA0NjM2NSwgCisgICAgNDYzNjksIDQ2MzczLCA0NjM3NywgNDYzODEsIDQ2Mzg1LCA0NjM4OSwgNDYzOTMsIDQ2Mzk5LCA0NjQwNSwgNDY0MTEsIAorICAgIDQ2NDE4LCA0NjQyNSwgNDY0MzIsIDQ2NDM5LCA0NjQ0NiwgNDY0NTMsIDQ2NDYwLCA0NjQ2NywgNDY0NzQsIDQ2NDgxLCAKKyAgICA0NjQ4OCwgNDY0OTUsIDQ2NTAyLCA0NjUwOSwgNDY1MTYsIDQ2NTIzLCA0NjUzMCwgNDY1MzUsIDQ2NTQxLCA0NjU0NywgCisgICAgNDY1NTMsIDQ2NTU4LCA0NjU2NCwgNDY1NzAsIDQ2NTc2LCA0NjU4MSwgNDY1ODcsIDQ2NTkzLCA0NjU5OCwgNDY2MDQsIAorICAgIDQ2NjEwLCA0NjYxNSwgNDY2MjEsIDQ2NjI3LCA0NjYzMiwgNDY2MzgsIDQ2NjQ0LCA0NjY0OSwgNDY2NTUsIDQ2NjYxLCAKKyAgICA0NjY2NywgNDY2NzMsIDQ2Njc5LCA0NjY4NCwgNDY2OTAsIDQ2Njk2LCA0NjcwMiwgNDY3MDcsIDQ2NzEzLCA0NjcxOSwgCisgICAgNDY3MjUsIDQ2NzMwLCA0NjczNiwgNDY3NDIsIDQ2NzQ3LCA0Njc1MywgNDY3NTksIDQ2NzY0LCA0Njc3MCwgNDY3NzYsIAorICAgIDQ2NzgxLCA0Njc4NywgNDY3OTMsIDQ2Nzk4LCA0NjgwNCwgNDY4MTAsIDQ2ODE2LCA0NjgyMiwgNDY4MjgsIDQ2ODMzLCAKKyAgICA0NjgzOSwgNDY4NDUsIDQ2ODUxLCA0Njg1NiwgNDY4NjIsIDQ2ODY4LCA0Njg3NCwgNDY4NzksIDQ2ODg1LCA0Njg5MSwgCisgICAgNDY4OTYsIDQ2OTAyLCA0NjkwOCwgNDY5MTMsIDQ2OTE5LCA0NjkyNSwgNDY5MzAsIDQ2OTM2LCA0Njk0MiwgNDY5NDcsIAorICAgIDQ2OTUzLCA0Njk1OSwgNDY5NjUsIDQ2OTcxLCA0Njk3NywgNDY5ODEsIDQ2OTg2LCA0Njk5MSwgNDY5OTYsIDQ3MDAxLCAKKyAgICA0NzAwNiwgNDcwMTEsIDQ3MDE2LCA0NzAyMSwgNDcwMjYsIDQ3MDMxLCA0NzAzNSwgNDcwMzksIDQ3MDQzLCA0NzA0NywgCisgICAgNDcwNTEsIDQ3MDU1LCA0NzA2MCwgNDcwNjQsIDQ3MDY5LCA0NzA3NCwgNDcwNzksIDQ3MDg0LCA0NzA4OSwgNDcwOTQsIAorICAgIDQ3MDk5LCA0NzEwOCwgNDcxMTcsIDQ3MTI2LCA0NzEzNSwgNDcxNDQsIDQ3MTUzLCA0NzE2MiwgNDcxNzEsIDQ3MTc4LCAKKyAgICA0NzE4NiwgNDcxOTQsIDQ3MjAxLCA0NzIwOCwgNDcyMTYsIDQ3MjI0LCA0NzIzMSwgNDcyMzgsIDQ3MjQ2LCA0NzI1NCwgCisgICAgNDcyNjEsIDQ3MjY4LCA0NzI3NiwgNDcyODQsIDQ3MjkxLCA0NzI5OCwgNDczMDYsIDQ3MzE1LCA0NzMyNCwgNDczMzIsIAorICAgIDQ3MzQxLCA0NzM1MCwgNDczNTcsIDQ3MzY0LCA0NzM3MiwgNDczODEsIDQ3MzkwLCA0NzM5OCwgNDc0MDcsIDQ3NDE2LCAKKyAgICA0NzQyMywgNDc0MzAsIDQ3NDM5LCA0NzQ0OCwgNDc0NTcsIDQ3NDY2LCA0NzQ3NSwgNDc0ODQsIDQ3NDkxLCA0NzQ5OCwgCisgICAgNDc1MDcsIDQ3NTE2LCA0NzUyNSwgNDc1MzQsIDQ3NTQzLCA0NzU1MiwgNDc1NTksIDQ3NTY2LCA0NzU3NSwgNDc1ODQsIAorICAgIDQ3NTkzLCA0NzYwMywgNDc2MTMsIDQ3NjIyLCA0NzYzMiwgNDc2NDIsIDQ3NjUyLCA0NzY2MiwgNDc2NzIsIDQ3NjgyLCAKKyAgICA0NzY5MSwgNDc3MDAsIDQ3NzA3LCA0NzcxNSwgNDc3MjMsIDQ3NzMxLCA0NzczOSwgNDc3NDQsIDQ3NzQ5LCA0Nzc1OCwgCisgICAgNDc3NjYsIDQ3NzczLCA0Nzc4MiwgNDc3OTAsIDQ3Nzk3LCA0NzgwNiwgNDc4MTQsIDQ3ODIxLCA0NzgzMCwgNDc4MzgsIAorICAgIDQ3ODQ1LCA0Nzg1NCwgNDc4NjIsIDQ3ODY5LCA0Nzg3OCwgNDc4ODYsIDQ3ODkzLCA0NzkwMywgNDc5MTIsIDQ3OTE5LCAKKyAgICA0NzkyOSwgNDc5MzgsIDQ3OTQ1LCA0Nzk1NSwgNDc5NjQsIDQ3OTcxLCA0Nzk4MCwgNDc5ODksIDQ3OTk4LCA0ODAwNywgCisgICAgNDgwMjEsIDQ4MDM1LCA0ODA0MiwgNDgwNDcsIDQ4MDUyLCA0ODA1NywgNDgwNjIsIDQ4MDY3LCA0ODA3MiwgNDgwNzcsIAorICAgIDQ4MDgyLCA0ODA5MCwgNDgwOTgsIDQ4MTA2LCA0ODExNCwgNDgxMTksIDQ4MTI2LCA0ODEzMywgNDgxNDAsIDQ4MTQ1LCAKKyAgICA0ODE1MywgNDgxNjAsIDQ4MTY4LCA0ODE3MiwgNDgxNzksIDQ4MTg1LCA0ODE5MiwgNDgxOTYsIDQ4MjAyLCA0ODIwOCwgCisgICAgNDgyMTQsIDQ4MjE4LCA0ODIyMSwgNDgyMjUsIDQ4MjI5LCA0ODIzNiwgNDgyNDIsIDQ4MjQ4LCA0ODI1NCwgNDgyNjAsIAorICAgIDQ4Mjc0LCA0ODI4NCwgNDgyOTgsIDQ4MzEyLCA0ODMxOCwgNDgzMjgsIDQ4MzQyLCA0ODM0NSwgNDgzNDgsIDQ4MzU1LCAKKyAgICA0ODM2MywgNDgzNjksIDQ4Mzc0LCA0ODM4MiwgNDgzOTQsIDQ4NDA2LCA0ODQxNCwgNDg0MTgsIDQ4NDIyLCA0ODQyNSwgCisgICAgNDg0MjgsIDQ4NDMyLCA0ODQzNiwgNDg0MzksIDQ4NDQyLCA0ODQ0NywgNDg0NTIsIDQ4NDU4LCA0ODQ2NCwgNDg0NjksIAorICAgIDQ4NDc0LCA0ODQ4MCwgNDg0ODYsIDQ4NDkxLCA0ODQ5NiwgNDg1MDEsIDQ4NTA2LCA0ODUxMiwgNDg1MTgsIDQ4NTIzLCAKKyAgICA0ODUyOCwgNDg1MzQsIDQ4NTQwLCA0ODU0NSwgNDg1NTAsIDQ4NTUzLCA0ODU1NiwgNDg1NjUsIDQ4NTY3LCA0ODU2OSwgCisgICAgNDg1NzIsIDQ4NTc2LCA0ODU4MiwgNDg1ODQsIDQ4NTg3LCA0ODU5NCwgNDg2MDEsIDQ4NjA5LCA0ODYxNywgNDg2MjcsIAorICAgIDQ4NjQxLCA0ODY0NiwgNDg2NTEsIDQ4NjU1LCA0ODY2MCwgNDg2NjgsIDQ4Njc2LCA0ODY4NSwgNDg2OTQsIDQ4NzAzLCAKKyAgICA0ODcxMiwgNDg3MTcsIDQ4NzIyLCA0ODcyOCwgNDg3MzQsIDQ4NzQwLCA0ODc0NiwgNDg3NDksIDQ4NzU1LCA0ODc2MSwgCisgICAgNDg3NzEsIDQ4NzgxLCA0ODc4OSwgNDg3OTcsIDQ4ODA2LCA0ODgxNSwgNDg4MTksIDQ4ODI3LCA0ODgzNSwgNDg4NDMsIAorICAgIDQ4ODUxLCA0ODg2MCwgNDg4NjksIDQ4ODc4LCA0ODg4NywgNDg4OTIsIDQ4ODk3LCA0ODkwMiwgNDg5MDcsIDQ4OTEyLCAKKyAgICA0ODkxOCwgNDg5MjQsIDQ4OTI5LCA0ODkzNSwgNDg5MzcsIDQ4OTM5LCA0ODk0MSwgNDg5NDMsIDQ4OTQ2LCA0ODk0OSwgCisgICAgNDg5NTEsIDQ4OTUzLCA0ODk1NSwgNDg5NTksIDQ4OTYzLCA0ODk2NSwgNDg5NjcsIDQ4OTcwLCA0ODk3MywgNDg5NzcsIAorICAgIDQ4OTgzLCA0ODk4OSwgNDg5OTEsIDQ4OTk4LCA0OTAwMiwgNDkwMDcsIDQ5MDEyLCA0OTAxNCwgNDkwMjQsIDQ5MDMwLCAKKyAgICA0OTAzNiwgNDkwNDIsIDQ5MDQ4LCA0OTA1NCwgNDkwNjAsIDQ5MDY1LCA0OTA2OCwgNDkwNzEsIDQ5MDc0LCA0OTA3NiwgCisgICAgNDkwNzgsIDQ5MDgyLCA0OTA4NiwgNDkwOTEsIDQ5MDk2LCA0OTEwMSwgNDkxMDQsIDQ5MTA4LCA0OTExMywgNDkxMTYsIAorICAgIDQ5MTIwLCA0OTEyNSwgNDkxMzAsIDQ5MTM1LCA0OTE0MCwgNDkxNDUsIDQ5MTUwLCA0OTE1NSwgNDkxNjAsIDQ5MTY1LCAKKyAgICA0OTE3MCwgNDkxNzUsIDQ5MTgwLCA0OTE4NiwgNDkxOTIsIDQ5MTk4LCA0OTIwMCwgNDkyMDMsIDQ5MjA1LCA0OTIwOCwgCisgICAgNDkyMTAsIDQ5MjEyLCA0OTIxNCwgNDkyMTYsIDQ5MjE4LCA0OTIyMCwgNDkyMjIsIDQ5MjI0LCA0OTIyNiwgNDkyMjgsIAorICAgIDQ5MjMwLCA0OTIzMiwgNDkyMzQsIDQ5MjM2LCA0OTIzOCwgNDkyNDAsIDQ5MjQyLCA0OTI0NywgNDkyNTIsIDQ5MjU3LCAKKyAgICA0OTI2MiwgNDkyNjcsIDQ5MjcyLCA0OTI3NywgNDkyODIsIDQ5Mjg3LCA0OTI5MiwgNDkyOTcsIDQ5MzAyLCA0OTMwNywgCisgICAgNDkzMTIsIDQ5MzE3LCA0OTMyMiwgNDkzMjcsIDQ5MzMyLCA0OTMzNywgNDkzNDIsIDQ5MzQ2LCA0OTM1MCwgNDkzNTQsIAorICAgIDQ5MzYwLCA0OTM2NiwgNDkzNzEsIDQ5Mzc2LCA0OTM4MSwgNDkzODcsIDQ5MzkzLCA0OTM5OCwgNDk0MDYsIDQ5NDE0LCAKKyAgICA0OTQyMiwgNDk0MzAsIDQ5NDM4LCA0OTQ0NiwgNDk0NTQsIDQ5NDYyLCA0OTQ2OCwgNDk0NzMsIDQ5NDc4LCA0OTQ4MywgCisgICAgNDk0ODYsIDQ5NDkwLCA0OTQ5NCwgNDk0OTgsIDQ5NTAyLCA0OTUwNiwgNDk1MTAsIDQ5NTE3LCA0OTUyNCwgNDk1MzIsIAorICAgIDQ5NTQwLCA0OTU0NSwgNDk1NTAsIDQ5NTU3LCA0OTU2NCwgNDk1NzEsIDQ5NTc4LCA0OTU4MSwgNDk1ODQsIDQ5NTg5LCAKKyAgICA0OTU5MSwgNDk1OTUsIDQ5NjAwLCA0OTYwMiwgNDk2MDQsIDQ5NjA2LCA0OTYwOCwgNDk2MTMsIDQ5NjE2LCA0OTYxOCwgCisgICAgNDk2MjMsIDQ5NjMwLCA0OTYzNywgNDk2NDAsIDQ5NjQ0LCA0OTY0OSwgNDk2NTQsIDQ5NjYyLCA0OTY2OCwgNDk2NzQsIAorICAgIDQ5Njg2LCA0OTY5MywgNDk3MDEsIDQ5NzA2LCA0OTcxMSwgNDk3MTcsIDQ5NzIwLCA0OTcyMywgNDk3MjgsIDQ5NzMwLCAKKyAgICA0OTczNCwgNDk3MzYsIDQ5NzM4LCA0OTc0MCwgNDk3NDIsIDQ5NzQ0LCA0OTc0NiwgNDk3NTEsIDQ5NzUzLCA0OTc1NSwgCisgICAgNDk3NTcsIDQ5NzU5LCA0OTc2MywgNDk3NjUsIDQ5NzY4LCA0OTc3MywgNDk3NzgsIDQ5NzgzLCA0OTc4OCwgNDk3OTQsIAorICAgIDQ5ODAwLCA0OTgwMiwgNDk4MDUsIDQ5ODEyLCA0OTgxOSwgNDk4MjYsIDQ5ODMzLCA0OTgzNywgNDk4NDEsIDQ5ODQzLCAKKyAgICA0OTg0NSwgNDk4NDksIDQ5ODU1LCA0OTg2MCwgNDk4NjIsIDQ5ODY2LCA0OTg3NSwgNDk4ODMsIDQ5ODkxLCA0OTg5NywgCisgICAgNDk5MDMsIDQ5OTA4LCA0OTkxNCwgNDk5MTksIDQ5OTIyLCA0OTkzNiwgNDk5MzksIDQ5OTQ0LCA0OTk0OSwgNDk5NTUsIAorICAgIDQ5OTY1LCA0OTk2NywgNDk5NzMsIDQ5OTc5LCA0OTk4MywgNDk5OTAsIDQ5OTk0LCA0OTk5NiwgNDk5OTgsIDUwMDAyLCAKKyAgICA1MDAwOCwgNTAwMTMsIDUwMDE5LCA1MDAyMSwgNTAwMjcsIDUwMDI5LCA1MDAzNSwgNTAwMzcsIDUwMDM5LCA1MDA0NCwgCisgICAgNTAwNDYsIDUwMDUwLCA1MDA1NSwgNTAwNTcsIDUwMDYyLCA1MDA2NywgNTAwNzEsIDUwMDc4LCA1MDA4OCwgNTAwOTMsIAorICAgIDUwMDk5LCA1MDEwMiwgNTAxMDgsIDUwMTExLCA1MDExNiwgNTAxMjEsIDUwMTI1LCA1MDEyNywgNTAxMjksIDUwMTMzLCAKKyAgICA1MDEzNywgNTAxNDEsIDUwMTQ1LCA1MDE1MCwgNTAxNTIsIDUwMTU3LCA1MDE2MCwgNTAxNjMsIDUwMTY2LCA1MDE3MCwgCisgICAgNTAxNzQsIDUwMTc5LCA1MDE4MywgNTAxODgsIDUwMTkzLCA1MDE5NywgNTAyMDIsIDUwMjA4LCA1MDIxMSwgNTAyMTcsIAorICAgIDUwMjIyLCA1MDIyNiwgNTAyMzEsIDUwMjM3LCA1MDI0MywgNTAyNTAsIDUwMjU2LCA1MDI2MywgNTAyNzAsIDUwMjcyLCAKKyAgICA1MDI3OSwgNTAyODMsIDUwMjg5LCA1MDI5NSwgNTAzMDAsIDUwMzA2LCA1MDMxMCwgNTAzMTUsIDUwMzE4LCA1MDMyMywgCisgICAgNTAzMjksIDUwMzM2LCA1MDM0NCwgNTAzNTEsIDUwMzYwLCA1MDM3MCwgNTAzNzcsIDUwMzgzLCA1MDM4NywgNTAzOTQsIAorICAgIDUwMzk5LCA1MDQwOCwgNTA0MTEsIDUwNDE0LCA1MDQyMywgNTA0MzMsIDUwNDQwLCA1MDQ0MiwgNTA0NDgsIDUwNDUzLCAKKyAgICA1MDQ1NSwgNTA0NTgsIDUwNDYyLCA1MDQ3MCwgNTA0NzksIDUwNDgyLCA1MDQ4NywgNTA0OTIsIDUwNTAwLCA1MDUwOCwgCisgICAgNTA1MTYsIDUwNTI0LCA1MDUzMCwgNTA1MzYsIDUwNTQyLCA1MDU1MCwgNTA1NTUsIDUwNTU4LCA1MDU2MiwgNTA1NjUsIAorICAgIDUwNTc3LCA1MDU4NywgNTA1OTgsIDUwNjA3LCA1MDYxOCwgNTA2MjgsIDUwNjM3LCA1MDY0MywgNTA2NTEsIDUwNjU1LCAKKyAgICA1MDY2MywgNTA2NjcsIDUwNjc1LCA1MDY4MiwgNTA2ODksIDUwNjk4LCA1MDcwNywgNTA3MTcsIDUwNzI3LCA1MDczNywgCisgICAgNTA3NDcsIDUwNzU2LCA1MDc2NSwgNTA3NzUsIDUwNzg1LCA1MDc5NCwgNTA4MDMsIDUwODA5LCA1MDgxNSwgNTA4MjEsIAorICAgIDUwODI3LCA1MDgzMywgNTA4MzksIDUwODQ2LCA1MDg1MiwgNTA4NTksIDUwODY2LCA1MDg3MiwgNTA4NzgsIDUwODg0LCAKKyAgICA1MDg5MCwgNTA4OTYsIDUwOTAyLCA1MDkwOSwgNTA5MTUsIDUwOTIyLCA1MDkyOSwgNTA5MzYsIDUwOTQzLCA1MDk1MCwgCisgICAgNTA5NTcsIDUwOTY0LCA1MDk3MSwgNTA5NzksIDUwOTg2LCA1MDk5NCwgNTEwMDIsIDUxMDA3LCA1MTAxMCwgNTEwMTQsIAorICAgIDUxMDE4LCA1MTAyNCwgNTEwMjcsIDUxMDMyLCA1MTAzOCwgNTEwNDMsIDUxMDQ3LCA1MTA1MiwgNTEwNTgsIDUxMDY1LCAKKyAgICA1MTA2OCwgNTEwNzUsIDUxMDgyLCA1MTA4NiwgNTEwOTQsIDUxMTAyLCA1MTEwNywgNTExMTMsIDUxMTE4LCA1MTEyMywgCisgICAgNTExMzAsIDUxMTM3LCA1MTE0NSwgNTExNTMsIDUxMTYyLCA1MTE2NiwgNTExNzUsIDUxMTgwLCA1MTE4NCwgNTExOTEsIAorICAgIDUxMTk1LCA1MTIwMSwgNTEyMDksIDUxMjE0LCA1MTIyMSwgNTEyMjUsIDUxMjMwLCA1MTIzNCwgNTEyMzksIDUxMjQzLCAKKyAgICA1MTI0OCwgNTEyNTMsIDUxMjYyLCA1MTI2NCwgNTEyNjcsIDUxMjcwLCA1MTI3NywgNTEyODQsIDUxMjkwLCA1MTI5OCwgCisgICAgNTEzMDQsIDUxMzExLCA1MTMxNiwgNTEzMTksIDUxMzI0LCA1MTMyOSwgNTEzMzQsIDUxMzQyLCA1MTM0NiwgNTEzNTMsIAorICAgIDUxMzYxLCA1MTM2OSwgNTEzNzQsIDUxMzc5LCA1MTM4NSwgNTEzOTAsIDUxMzk1LCA1MTQwMSwgNTE0MDYsIDUxNDA5LCAKKyAgICA1MTQxMywgNTE0MTcsIDUxNDI0LCA1MTQzNCwgNTE0MzksIDUxNDQ4LCA1MTQ1NywgNTE0NjMsIDUxNDY5LCA1MTQ3NCwgCisgICAgNTE0NzksIDUxNDg0LCA1MTQ4OSwgNTE0OTUsIDUxNTAxLCA1MTUwOSwgNTE1MTcsIDUxNTIzLCA1MTUyOSwgNTE1MzMsIAorICAgIDUxNTM3LCA1MTU0NCwgNTE1NTEsIDUxNTU3LCA1MTU2MCwgNTE1NjMsIDUxNTY3LCA1MTU3MSwgNTE1NzUsIDUxNTgwLCAKKyAgICA1MTU4NiwgNTE1OTIsIDUxNTk5LCA1MTYwNiwgNTE2MTEsIDUxNjE1LCA1MTYxOSwgNTE2MjMsIDUxNjI3LCA1MTYzMSwgCisgICAgNTE2MzUsIDUxNjM5LCA1MTY0MywgNTE2NDcsIDUxNjUxLCA1MTY1NSwgNTE2NTksIDUxNjYzLCA1MTY2NywgNTE2NzEsIAorICAgIDUxNjc1LCA1MTY3OSwgNTE2ODMsIDUxNjg3LCA1MTY5MSwgNTE2OTUsIDUxNjk5LCA1MTcwMywgNTE3MDcsIDUxNzExLCAKKyAgICA1MTcxNSwgNTE3MTksIDUxNzIzLCA1MTcyNywgNTE3MzEsIDUxNzM1LCA1MTczOSwgNTE3NDMsIDUxNzQ3LCA1MTc1MSwgCisgICAgNTE3NTUsIDUxNzU5LCA1MTc2MywgNTE3NjcsIDUxNzcxLCA1MTc3NSwgNTE3NzksIDUxNzgzLCA1MTc4NywgNTE3OTEsIAorICAgIDUxNzk1LCA1MTc5OSwgNTE4MDMsIDUxODA3LCA1MTgxMSwgNTE4MTUsIDUxODE5LCA1MTgyMywgNTE4MjcsIDUxODMxLCAKKyAgICA1MTgzNSwgNTE4MzksIDUxODQzLCA1MTg0NywgNTE4NTEsIDUxODU1LCA1MTg1OSwgNTE4NjMsIDUxODY3LCA1MTg3MSwgCisgICAgNTE4NzUsIDUxODc5LCA1MTg4MywgNTE4ODcsIDUxODkxLCA1MTg5NSwgNTE4OTksIDUxOTAzLCA1MTkwNywgNTE5MTEsIAorICAgIDUxOTE1LCA1MTkxOSwgNTE5MjMsIDUxOTI3LCA1MTkzMSwgNTE5MzUsIDUxOTM5LCA1MTk0MywgNTE5NDcsIDUxOTUxLCAKKyAgICA1MTk1NSwgNTE5NTksIDUxOTYzLCA1MTk2NywgNTE5NzEsIDUxOTc1LCA1MTk3OSwgNTE5ODMsIDUxOTg3LCA1MTk5MSwgCisgICAgNTE5OTUsIDUxOTk5LCA1MjAwMywgNTIwMDcsIDUyMDExLCA1MjAxNSwgNTIwMTksIDUyMDIzLCA1MjAyNywgNTIwMzEsIAorICAgIDUyMDM1LCA1MjAzOSwgNTIwNDMsIDUyMDQ3LCA1MjA1MSwgNTIwNTUsIDUyMDU5LCA1MjA2MywgNTIwNjcsIDUyMDcxLCAKKyAgICA1MjA3NSwgNTIwNzksIDUyMDgzLCA1MjA4NywgNTIwOTEsIDUyMDk1LCA1MjA5OSwgNTIxMDMsIDUyMTA3LCA1MjExMSwgCisgICAgNTIxMTUsIDUyMTE5LCA1MjEyMywgNTIxMjcsIDUyMTMxLCA1MjEzNSwgNTIxMzksIDUyMTQzLCA1MjE0NywgNTIxNTEsIAorICAgIDUyMTU1LCA1MjE1OSwgNTIxNjMsIDUyMTY3LCA1MjE3MSwgNTIxNzUsIDUyMTc5LCA1MjE4MywgNTIxODcsIDUyMTkxLCAKKyAgICA1MjE5NSwgNTIxOTksIDUyMjAzLCA1MjIwNywgNTIyMTEsIDUyMjE1LCA1MjIxOSwgNTIyMjMsIDUyMjI3LCA1MjIzMSwgCisgICAgNTIyMzUsIDUyMjM5LCA1MjI0MywgNTIyNDcsIDUyMjUxLCA1MjI1NSwgNTIyNTksIDUyMjYzLCA1MjI2NywgNTIyNzEsIAorICAgIDUyMjc1LCA1MjI3OSwgNTIyODMsIDUyMjg3LCA1MjI5MSwgNTIyOTUsIDUyMjk5LCA1MjMwMywgNTIzMDcsIDUyMzExLCAKKyAgICA1MjMxNSwgNTIzMTksIDUyMzIzLCA1MjMyNywgNTIzMzEsIDUyMzM1LCA1MjMzOSwgNTIzNDMsIDUyMzQ3LCA1MjM1MSwgCisgICAgNTIzNTUsIDUyMzU5LCA1MjM2MywgNTIzNjcsIDUyMzcxLCA1MjM3NSwgNTIzNzksIDUyMzgzLCA1MjM4NywgNTIzOTEsIAorICAgIDUyMzk1LCA1MjM5OSwgNTI0MDMsIDUyNDA3LCA1MjQxMSwgNTI0MTUsIDUyNDE5LCA1MjQyMywgNTI0MjcsIDUyNDMxLCAKKyAgICA1MjQzNSwgNTI0MzksIDUyNDQzLCA1MjQ0NywgNTI0NTEsIDUyNDU1LCA1MjQ1OSwgNTI0NjMsIDUyNDY3LCA1MjQ3MSwgCisgICAgNTI0NzUsIDUyNDc5LCA1MjQ4MywgNTI0ODcsIDUyNDkxLCA1MjQ5NSwgNTI0OTksIDUyNTAzLCA1MjUwNywgNTI1MTEsIAorICAgIDUyNTE1LCA1MjUxOSwgNTI1MjMsIDUyNTI3LCA1MjUzMSwgNTI1MzUsIDUyNTM5LCA1MjU0MywgNTI1NDcsIDUyNTUxLCAKKyAgICA1MjU1NSwgNTI1NTksIDUyNTYzLCA1MjU2NywgNTI1NzEsIDUyNTc1LCA1MjU3OSwgNTI1ODMsIDUyNTg3LCA1MjU5MSwgCisgICAgNTI1OTUsIDUyNTk5LCA1MjYwMywgNTI2MDcsIDUyNjExLCA1MjYxNSwgNTI2MTksIDUyNjIzLCA1MjYyNywgNTI2MzEsIAorICAgIDUyNjM1LCA1MjY0MiwgNTI2NTAsIDUyNjU2LCA1MjY2MiwgNTI2NjksIDUyNjc2LCA1MjY4MiwgNTI2ODgsIDUyNjk0LCAKKyAgICA1MjcwMCwgNTI3MDQsIDUyNzA4LCA1MjcxMywgNTI3MTgsIDUyNzI0LCA1MjczMCwgNTI3MzgsIDUyNzQ1LCA1Mjc1MCwgCisgICAgNTI3NTUsIDUyNzYzLCA1Mjc3MiwgNTI3NzksIDUyNzg5LCA1MjgwMCwgNTI4MDMsIDUyODA2LCA1MjgxMCwgNTI4MTQsIAorICAgIDUyODIxLCA1MjgyOCwgNTI4MzksIDUyODUwLCA1Mjg1OSwgNTI4NjgsIDUyODc0LCA1Mjg4MCwgNTI4ODcsIDUyODk0LCAKKyAgICA1MjkwMywgNTI5MTMsIDUyOTI0LCA1MjkzNCwgNTI5NDQsIDUyOTU0LCA1Mjk2NSwgNTI5NzYsIDUyOTg2LCA1Mjk5NywgCisgICAgNTMwMDcsIDUzMDE3LCA1MzAyNiwgNTMwMzYsIDUzMDQ2LCA1MzA1NiwgNTMwNjYsIDUzMDczLCA1MzA4MCwgNTMwODcsIAorICAgIDUzMDk0LCA1MzEwNCwgNTMxMTQsIDUzMTIyLCA1MzEzMCwgNTMxMzcsIDUzMTQ0LCA1MzE1MSwgNTMxNTgsIDUzMTY1LCAKKyAgICA1MzE3MCwgNTMxNzUsIDUzMTgxLCA1MzE4OSwgNTMxOTgsIDUzMjA2LCA1MzIxNCwgNTMyMjIsIDUzMjMwLCA1MzIzOCwgCisgICAgNTMyNDYsIDUzMjU0LCA1MzI2MiwgNTMyNzEsIDUzMjgwLCA1MzI4OSwgNTMyOTgsIDUzMzA3LCA1MzMxNiwgNTMzMjUsIAorICAgIDUzMzM0LCA1MzM0MywgNTMzNTIsIDUzMzYxLCA1MzM3MCwgNTMzNzksIDUzMzg4LCA1MzM5NywgNTM0MDYsIDUzNDIwLCAKKyAgICA1MzQzNSwgNTM0NDksIDUzNDY0LCA1MzQ3OCwgNTM0OTIsIDUzNTA2LCA1MzUyMCwgNTM1MzAsIDUzNTQxLCA1MzU1MSwgCisgICAgNTM1NjIsIDUzNTc3LCA1MzU5MiwgNTM2MDAsIDUzNjA2LCA1MzYxMywgNTM2MjAsIDUzNjI3LCA1MzYzNCwgNTM2MzksIAorICAgIDUzNjQ1LCA1MzY1MCwgNTM2NTUsIDUzNjYxLCA1MzY2NiwgNTM2NzEsIDUzNjc2LCA1MzY4MSwgNTM2ODYsIDUzNjkzLCAKKyAgICA1MzY5OSwgNTM3MDcsIDUzNzEyLCA1MzcxNywgNTM3MjEsIDUzNzI1LCA1MzczMywgNTM3NDEsIDUzNzQ5LCA1Mzc1NywgCisgICAgNTM3NjQsIDUzNzcxLCA1Mzc4NCwgNTM3OTcsIDUzODEwLCA1MzgyMywgNTM4MzEsIDUzODM5LCA1Mzg0NSwgNTM4NTEsIAorICAgIDUzODU4LCA1Mzg2NSwgNTM4NzIsIDUzODc5LCA1Mzg4MywgNTM4ODgsIDUzODk2LCA1MzkwNCwgNTM5MTIsIDUzOTE5LCAKKyAgICA1MzkyMywgNTM5MzEsIDUzOTM5LCA1Mzk0MywgNTM5NDcsIDUzOTUyLCA1Mzk1OSwgNTM5NjcsIDUzOTc1LCA1Mzk5NCwgCisgICAgNTQwMTMsIDU0MDMyLCA1NDA1MSwgNTQwNzAsIDU0MDg5LCA1NDEwOCwgNTQxMjcsIDU0MTMzLCA1NDE0MCwgNTQxNDksIAorICAgIDU0MTU3LCA1NDE2NSwgNTQxNzEsIDU0MTc0LCA1NDE3NywgNTQxODIsIDU0MTg1LCA1NDIwNSwgNTQyMTIsIDU0MjE4LCAKKyAgICA1NDIyNCwgNTQyMjgsIDU0MjMxLCA1NDIzNCwgNTQyMzcsIDU0MjQ5LCA1NDI2MywgNTQyNzAsIDU0Mjc3LCA1NDI4MCwgCisgICAgNTQyODQsIDU0Mjg3LCA1NDI5MiwgNTQyOTcsIDU0MzAyLCA1NDMwOCwgNTQzMTcsIDU0MzI0LCA1NDMzMSwgNTQzMzksIAorICAgIDU0MzQ2LCA1NDM1MywgNTQzNTYsIDU0MzYyLCA1NDM2OCwgNTQzNzEsIDU0Mzc0LCA1NDM3OSwgNTQzODQsIDU0MzkwLCAKKyAgICA1NDM5NiwgNTQ0MDAsIDU0NDA1LCA1NDQxMiwgNTQ0MTYsIDU0NDIyLCA1NDQyNiwgNTQ0MzAsIDU0NDM4LCA1NDQ1MCwgCisgICAgNTQ0NTksIDU0NDYzLCA1NDQ2NSwgNTQ0NzQsIDU0NDgzLCA1NDQ4OSwgNTQ0OTIsIDU0NDk4LCA1NDUwNCwgNTQ1MDksIAorICAgIDU0NTE0LCA1NDUxOSwgNTQ1MjQsIDU0NTI5LCA1NDUzNCwgNTQ1MzYsIDU0NTQyLCA1NDU0NywgNTQ1NTUsIDU0NTU5LCAKKyAgICA1NDU2NSwgNTQ1NjgsIDU0NTcyLCA1NDU3OSwgNTQ1ODYsIDU0NTg4LCA1NDU5MCwgNTQ1OTYsIDU0NjAyLCA1NDYwOCwgCisgICAgNTQ2MTcsIDU0NjI2LCA1NDYzMywgNTQ2NDAsIDU0NjQ2LCA1NDY1MywgNTQ2NTgsIDU0NjYzLCA1NDY2OCwgNTQ2NzQsIAorICAgIDU0NjgwLCA1NDY4NSwgNTQ2OTIsIDU0Njk2LCA1NDcwMCwgNTQ3MTMsIDU0NzI2LCA1NDczOCwgNTQ3NDcsIDU0NzUzLCAKKyAgICA1NDc2MCwgNTQ3NjUsIDU0NzcwLCA1NDc3NSwgNTQ3ODAsIDU0Nzg1LCA1NDc4NywgNTQ3OTQsIDU0ODAyLCA1NDgxMCwgCisgICAgNTQ4MTgsIDU0ODI1LCA1NDgzMywgNTQ4MzksIDU0ODQ0LCA1NDg1MCwgNTQ4NTYsIDU0ODYyLCA1NDg2OSwgNTQ4NzUsIAorICAgIDU0ODgzLCA1NDg5MSwgNTQ4OTksIDU0OTA3LCA1NDkxNSwgNTQ5MjEsIDU0OTI3LCA1NDkzNiwgNTQ5NDAsIDU0OTQ5LCAKKyAgICA1NDk1OCwgNTQ5NjcsIDU0OTc1LCA1NDk3OSwgNTQ5ODUsIDU0OTkyLCA1NDk5OSwgNTUwMDMsIDU1MDA5LCA1NTAxNywgCisgICAgNTUwMjMsIDU1MDI4LCA1NTAzNCwgNTUwMzksIDU1MDQ0LCA1NTA1MSwgNTUwNTgsIDU1MDYzLCA1NTA2OCwgNTUwNzYsIAorICAgIDU1MDg0LCA1NTA5NCwgNTUxMDQsIDU1MTExLCA1NTExOCwgNTUxMjIsIDU1MTI2LCA1NTEzOCwgNTUxNDQsIDU1MTUxLCAKKyAgICA1NTE1NiwgNTUxNjEsIDU1MTY4LCA1NTE3NSwgNTUxODEsIDU1MTg3LCA1NTE5NywgNTUyMDQsIDU1MjEyLCA1NTIyMCwgCisgICAgNTUyMjksIDU1MjM2LCA1NTI0MiwgNTUyNDksIDU1MjU1LCA1NTI2MywgNTUyNzEsIDU1Mjc5LCA1NTI4NywgNTUyOTMsIAorICAgIDU1Mjk4LCA1NTMwOCwgNTUzMTksIDU1MzI2LCA1NTMzNSwgNTUzNDEsIDU1MzQ2LCA1NTM1MSwgNTUzNjEsIDU1MzY4LCAKKyAgICA1NTM3NCwgNTUzODAsIDU1Mzg4LCA1NTM5MywgNTU0MDAsIDU1NDA3LCA1NTQxOCwgNTU0MjUsIDU1NDMyLCA1NTQzOSwgCisgICAgNTU0NDYsIDU1NDUzLCA1NTQ2MSwgNTU0NjksIDU1NDgyLCA1NTQ5NSwgNTU1MDcsIDU1NTE5LCA1NTUzMywgNTU1NDcsIAorICAgIDU1NTUzLCA1NTU1OSwgNTU1NjgsIDU1NTc3LCA1NTU4NCwgNTU1OTEsIDU1NjAwLCA1NTYwOSwgNTU2MTgsIDU1NjI3LCAKKyAgICA1NTYzNSwgNTU2NDMsIDU1NjUzLCA1NTY2MywgNTU2NzcsIDU1NjkxLCA1NTcwMCwgNTU3MDksIDU1NzIyLCA1NTczNSwgCisgICAgNTU3NDQsIDU1NzUzLCA1NTc2NCwgNTU3NzUsIDU1NzgxLCA1NTc4NywgNTU3OTYsIDU1ODA1LCA1NTgxMCwgNTU4MTUsIAorICAgIDU1ODIzLCA1NTgyOSwgNTU4MzUsIDU1ODQzLCA1NTg1MSwgNTU4NjQsIDU1ODc3LCA1NTg4MSwgNTU4ODUsIDU1ODkzLCAKKyAgICA1NTkwMSwgNTU5MDgsIDU1OTE2LCA1NTkyNCwgNTU5MzMsIDU1OTQyLCA1NTk0OCwgNTU5NTQsIDU1OTYxLCA1NTk2OCwgCisgICAgNTU5NzUsIDU1OTgyLCA1NTk5MSwgNTYwMDAsIDU2MDAzLCA1NjAwNiwgNTYwMTEsIDU2MDE2LCA1NjAyMiwgNTYwMjgsIAorICAgIDU2MDM1LCA1NjA0MiwgNTYwNTMsIDU2MDY0LCA1NjA3MSwgNTYwNzgsIDU2MDg2LCA1NjA5NCwgNTYxMDIsIDU2MTEwLCAKKyAgICA1NjExOCwgNTYxMjYsIDU2MTMyLCA1NjEzOCwgNTYxNDIsIDU2MTQ2LCA1NjE1NCwgNTYxNjIsIDU2MTY3LCA1NjE3MiwgCisgICAgNTYxNzcsIDU2MTgyLCA1NjE4OCwgNTYyMDIsIDU2MjA5LCA1NjIxNiwgNTYyMjAsIDU2MjIyLCA1NjIyNCwgNTYyMjksIAorICAgIDU2MjM0LCA1NjIzOSwgNTYyNDQsIDU2MjUyLCA1NjI1OSwgNTYyNjYsIDU2Mjc0LCA1NjI4NiwgNTYyOTQsIDU2MzAyLCAKKyAgICA1NjMxMywgNTYzMTcsIDU2MzIxLCA1NjMyNywgNTYzMzUsIDU2MzQ4LCA1NjM1NSwgNTYzNjIsIDU2MzY5LCA1NjM3NSwgCisgICAgNTYzODIsIDU2MzkxLCA1NjQwMCwgNTY0MDYsIDU2NDEyLCA1NjQxOCwgNTY0MjgsIDU2NDM4LCA1NjQ0NiwgNTY0NTUsIAorICAgIDU2NDYwLCA1NjQ2MywgNTY0NjgsIDU2NDczLCA1NjQ3OCwgNTY0ODQsIDU2NDkwLCA1NjQ5NCwgNTY0OTcsIDU2NTAwLCAKKyAgICA1NjUwMywgNTY1MDgsIDU2NTEzLCA1NjUxOSwgNTY1MjUsIDU2NTI5LCA1NjUzMywgNTY1NDAsIDU2NTQ3LCA1NjU1NCwgCisgICAgNTY1NjEsIDU2NTY4LCA1NjU3NSwgNTY1ODUsIDU2NTk1LCA1NjYwMiwgNTY2MDksIDU2NjE3LCA1NjYyNSwgNTY2MjksIAorICAgIDU2NjM0LCA1NjYzOSwgNTY2NDUsIDU2NjUxLCA1NjY1NCwgNTY2NTcsIDU2NjYwLCA1NjY2MywgNTY2NjgsIDU2NjczLCAKKyAgICA1NjY3OCwgNTY2ODMsIDU2Njg4LCA1NjY5MywgNTY2OTcsIDU2NzAxLCA1NjcwNSwgNTY3MTAsIDU2NzE1LCA1NjcxOSwgCisgICAgNTY3MjMsIDU2NzI5LCA1NjczMywgNTY3MzksIDU2NzQ0LCA1Njc1MSwgNTY3NTksIDU2NzY2LCA1Njc3NCwgNTY3ODEsIAorICAgIDU2Nzg5LCA1Njc5OCwgNTY4MDUsIDU2ODE1LCA1NjgyNiwgNTY4MzIsIDU2ODQxLCA1Njg0NywgNTY4NTYsIDU2ODY1LCAKKyAgICA1Njg3MSwgNTY4NzcsIDU2ODgxLCA1Njg4NSwgNTY4OTQsIDU2OTAzLCA1NjkxMCwgNTY5MTcsIDU2OTI2LCA1NjkzNSwgCisgICAgNTY5NDEsIDU2OTQ3LCA1Njk1NCwgNTY5NTksIDU2OTYzLCA1Njk2NywgNTY5NzIsIDU2OTc3LCA1Njk4MiwgNTY5OTAsIAorICAgIDU2OTk4LCA1NzAwMSwgNTcwMDUsIDU3MDE0LCA1NzAyNCwgNTcwMzMsIDU3MDQzLCA1NzA1NCwgNTcwNjcsIDU3MDcxLCAKKyAgICA1NzA3NSwgNTcwNzksIDU3MDgzLCA1NzA4OCwgNTcwOTMsIDU3MDk5LCA1NzEwNSwgNTcxMTIsIDU3MTE5LCA1NzEyNSwgCisgICAgNTcxMzEsIDU3MTM3LCA1NzE0MywgNTcxNTEsIDU3MTU5LCA1NzE2NiwgNTcxNzMsIDU3MTgwLCAwLCAwLCA1NzE4NywgCisgICAgNTcxOTYsIDU3MjA1LCA1NzIxNSwgNTcyMjUsIDU3MjM0LCA1NzI0MywgNTcyNTIsIDU3MjYxLCA1NzI2NywgNTcyNzIsIAorICAgIDU3MjgxLCA1NzI5MSwgNTczMDAsIDU3MzEwLCA1NzMxNywgNTczMjQsIDU3MzMxLCA1NzMzOCwgNTczNDMsIDU3MzQ4LCAKKyAgICA1NzM1MywgNTczNTgsIDU3MzY2LCA1NzM3NSwgNTczODMsIDU3MzkyLCA1NzM5NiwgNTc0MDAsIDU3NDA0LCA1NzQwOCwgCisgICAgNTc0MTgsIDAsIDAsIDU3NDIxLCA1NzQzMCwgNTc0MzksIDU3NDQ4LCA1NzQ1NywgNTc0NjMsIDU3NDY5LCA1NzQ3NSwgCisgICAgNTc0ODEsIDU3NDkxLCA1NzUwMSwgNTc1MTEsIDU3NTIxLCA1NzUzMSwgNTc1NDEsIDU3NTUxLCA1NzU2MSwgNTc1NjgsIAorICAgIDU3NTc1LCA1NzU4MiwgNTc1ODksIDU3NTk2LCA1NzYwMywgNTc2MTAsIDU3NjE3LCA1NzYyMywgNTc2MjksIDU3NjM1LCAKKyAgICA1NzY0MSwgNTc2NDcsIDU3NjUzLCA1NzY1OSwgNTc2NjUsIDU3Njc2LCAwLCAwLCAwLCA1NzY4NiwgNTc2OTMsIDU3Njk2LCAKKyAgICA1NzcwMCwgNTc3MDQsIDU3NzA5LCA1NzcxNCwgNTc3MTksIDU3NzIyLCA1NzczMSwgNTc3NDAsIDU3NzQ5LCAwLCA1Nzc1OCwgCisgICAgNTc3NjQsIDU3NzcwLCA1Nzc3OCwgNTc3ODgsIDU3Nzk1LCA1NzgwNCwgNTc4MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3ODEyLCA1NzgyMSwgCisgICAgNTc4MzAsIDU3ODM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Nzg0OCwgCisgICAgNTc4NTMsIDU3ODU4LCA1Nzg2MywgNTc4NjgsIDU3ODczLCA1Nzg3OCwgNTc4ODMsIDU3ODg4LCA1Nzg5MywgNTc4OTgsIAorICAgIDU3OTA0LCA1NzkwOCwgNTc5MTMsIDU3OTE4LCA1NzkyMywgNTc5MjgsIDU3OTMzLCA1NzkzOCwgNTc5NDMsIDU3OTQ4LCAKKyAgICA1Nzk1MywgNTc5NTgsIDU3OTYzLCA1Nzk2OCwgNTc5NzMsIDU3OTc4LCA1Nzk4MywgNTc5ODgsIDU3OTkzLCA1Nzk5OCwgCisgICAgNTgwMDMsIDU4MDA4LCA1ODAxMywgNTgwMTgsIDU4MDI0LCA1ODAyOSwgNTgwMzUsIDU4MDQ0LCA1ODA0OSwgNTgwNTcsIAorICAgIDU4MDY0LCA1ODA3MywgNTgwNzgsIDU4MDgzLCA1ODA4OCwgNTgwOTQsIDAsIDU4MTAxLCA1ODEwNiwgNTgxMTEsIDU4MTE2LCAKKyAgICA1ODEyMSwgNTgxMjYsIDU4MTMxLCA1ODEzNiwgNTgxNDEsIDU4MTQ2LCA1ODE1MSwgNTgxNTcsIDU4MTYxLCA1ODE2NiwgCisgICAgNTgxNzEsIDU4MTc2LCA1ODE4MSwgNTgxODYsIDU4MTkxLCA1ODE5NiwgNTgyMDEsIDU4MjA2LCA1ODIxMSwgNTgyMTYsIAorICAgIDU4MjIxLCA1ODIyNiwgNTgyMzEsIDU4MjM2LCA1ODI0MSwgNTgyNDYsIDU4MjUxLCA1ODI1NiwgNTgyNjEsIDU4MjY2LCAKKyAgICA1ODI3MSwgNTgyNzcsIDU4MjgyLCA1ODI4OCwgNTgyOTcsIDU4MzAyLCA1ODMxMCwgNTgzMTcsIDU4MzI2LCA1ODMzMSwgCisgICAgNTgzMzYsIDU4MzQxLCA1ODM0NywgMCwgNTgzNTQsIDU4MzYyLCA1ODM3MCwgNTgzNzksIDU4Mzg2LCA1ODM5NCwgNTg0MDAsIAorICAgIDU4NDA5LCA1ODQxNywgNTg0MjUsIDU4NDMzLCA1ODQ0MSwgNTg0NDksIDU4NDU3LCA1ODQ2MiwgNTg0NjksIDU4NDc1LCAKKyAgICA1ODQ4MiwgNTg0OTAsIDU4NDk3LCA1ODUwNCwgNTg1MTIsIDU4NTE4LCA1ODUyNCwgNTg1MzEsIDU4NTM4LCA1ODU0OCwgCisgICAgNTg1NTgsIDU4NTY1LCA1ODU3MiwgNTg1NzcsIDU4NTg3LCA1ODU5NywgNTg2MDIsIDU4NjA3LCA1ODYxMiwgNTg2MTcsIAorICAgIDU4NjIyLCA1ODYyNywgNTg2MzIsIDU4NjM3LCA1ODY0MiwgNTg2NDcsIDU4NjUyLCA1ODY1NywgNTg2NjIsIDU4NjY3LCAKKyAgICA1ODY3MiwgNTg2NzcsIDU4NjgyLCA1ODY4NywgNTg2OTIsIDU4Njk3LCA1ODcwMiwgNTg3MDcsIDU4NzEyLCA1ODcxNywgCisgICAgNTg3MjIsIDU4NzI3LCA1ODczMiwgNTg3MzcsIDU4NzQyLCA1ODc0NywgNTg3NTEsIDU4NzU1LCA1ODc2MCwgNTg3NjUsIAorICAgIDU4NzcwLCA1ODc3NSwgNTg3ODAsIDU4Nzg1LCA1ODc5MCwgNTg3OTUsIDU4ODAwLCA1ODgwNSwgNTg4MTAsIDU4ODE1LCAKKyAgICA1ODgyMCwgNTg4MjUsIDU4ODMwLCA1ODgzNSwgNTg4NDAsIDU4ODQ1LCA1ODg1MiwgNTg4NTksIDU4ODY2LCA1ODg3MywgCisgICAgNTg4ODAsIDU4ODg3LCA1ODg5NCwgNTg5MDEsIDU4OTA4LCA1ODkxNSwgNTg5MjIsIDU4OTI5LCA1ODkzNiwgNTg5NDMsIAorICAgIDU4OTQ4LCA1ODk1MywgNTg5NjAsIDU4OTY3LCA1ODk3NCwgNTg5ODEsIDU4OTg4LCA1ODk5NSwgNTkwMDIsIDU5MDA5LCAKKyAgICA1OTAxNiwgNTkwMjMsIDU5MDMwLCA1OTAzNywgNTkwNDMsIDU5MDQ5LCA1OTA1NSwgNTkwNjEsIDU5MDY4LCA1OTA3NSwgCisgICAgNTkwODIsIDU5MDg5LCA1OTA5NiwgNTkxMDMsIDU5MTEwLCA1OTExNywgNTkxMjQsIDU5MTMxLCA1OTEzOSwgNTkxNDcsIAorICAgIDU5MTU1LCA1OTE2MywgNTkxNzEsIDU5MTc5LCA1OTE4NywgNTkxOTUsIDU5MTk5LCA1OTIwNSwgNTkyMTEsIDU5MjE1LCAKKyAgICA1OTIyMSwgNTkyMjcsIDU5MjMzLCA1OTI0MCwgNTkyNDcsIDU5MjU0LCA1OTI2MSwgNTkyNjYsIDU5MjcyLCA1OTI3OCwgCisgICAgNTkyODUsIDAsIDAsIDAsIDAsIDAsIDU5MjkyLCA1OTMwMCwgNTkzMDksIDU5MzE4LCA1OTMyNiwgNTkzMzIsIDU5MzM3LCAKKyAgICA1OTM0MiwgNTkzNDcsIDU5MzUyLCA1OTM1NywgNTkzNjIsIDU5MzY3LCA1OTM3MiwgNTkzNzcsIDU5MzgyLCA1OTM4NywgCisgICAgNTkzOTIsIDU5Mzk3LCA1OTQwMiwgNTk0MDcsIDU5NDEyLCA1OTQxNywgNTk0MjIsIDU5NDI3LCA1OTQzMiwgNTk0MzcsIAorICAgIDU5NDQyLCA1OTQ0NywgNTk0NTIsIDU5NDU3LCA1OTQ2MiwgNTk0NjcsIDU5NDcyLCA1OTQ3NywgNTk0ODIsIDU5NDg3LCAKKyAgICA1OTQ5MiwgNTk0OTcsIDU5NTAyLCA1OTUwNywgNTk1MTIsIDU5NTE3LCA1OTUyMiwgNTk1MjcsIDAsIDU5NTMyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1OTUzNywgMCwgMCwgNTk1NDIsIDU5NTQ2LCA1OTU1MSwgNTk1NTYsIDU5NTYxLCA1OTU2NiwgNTk1NzUsIAorICAgIDU5NTgwLCA1OTU4NSwgNTk1OTAsIDU5NTk1LCA1OTYwMCwgNTk2MDUsIDU5NjEwLCA1OTYxNSwgNTk2MjIsIDU5NjI3LCAKKyAgICA1OTYzMiwgNTk2NDEsIDU5NjQ4LCA1OTY1MywgNTk2NTgsIDU5NjYzLCA1OTY3MCwgNTk2NzUsIDU5NjgyLCA1OTY4NywgCisgICAgNTk2OTIsIDU5Njk5LCA1OTcwNiwgNTk3MTEsIDU5NzE2LCA1OTcyMSwgNTk3MjgsIDU5NzM1LCA1OTc0MCwgNTk3NDUsIAorICAgIDU5NzUwLCA1OTc1NSwgNTk3NjAsIDU5NzY3LCA1OTc3NCwgNTk3NzksIDU5Nzg0LCA1OTc4OSwgNTk3OTQsIDU5Nzk5LCAKKyAgICA1OTgwNCwgNTk4MDksIDU5ODE0LCA1OTgxOSwgNTk4MjQsIDU5ODI5LCA1OTgzNiwgNTk4NDEsIDU5ODQ2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1OTg1MSwgNTk4NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5ODYzLCA1OTg2OCwgNTk4NzIsIDU5ODc2LCA1OTg4MCwgNTk4ODQsIDU5ODg4LCA1OTg5MiwgNTk4OTYsIDU5OTAwLCAKKyAgICA1OTkwNCwgNTk5MDgsIDU5OTE0LCA1OTkxOCwgNTk5MjIsIDU5OTI2LCA1OTkzMCwgNTk5MzQsIDU5OTM4LCA1OTk0MiwgCisgICAgNTk5NDYsIDU5OTUwLCA1OTk1NCwgNTk5NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OTYyLCA1OTk2NiwgCisgICAgNTk5NzAsIDU5OTc0LCA1OTk3OCwgNTk5ODIsIDU5OTg2LCAwLCA1OTk5MCwgNTk5OTQsIDU5OTk4LCA2MDAwMiwgNjAwMDYsIAorICAgIDYwMDEwLCA2MDAxNCwgMCwgNjAwMTgsIDYwMDIyLCA2MDAyNiwgNjAwMzAsIDYwMDM0LCA2MDAzOCwgNjAwNDIsIDAsIAorICAgIDYwMDQ2LCA2MDA1MCwgNjAwNTQsIDYwMDU4LCA2MDA2MiwgNjAwNjYsIDYwMDcwLCAwLCA2MDA3NCwgNjAwNzgsIDYwMDgyLCAKKyAgICA2MDA4NiwgNjAwOTAsIDYwMDk0LCA2MDA5OCwgMCwgNjAxMDIsIDYwMTA2LCA2MDExMCwgNjAxMTQsIDYwMTE4LCA2MDEyMiwgCisgICAgNjAxMjYsIDAsIDYwMTMwLCA2MDEzNCwgNjAxMzgsIDYwMTQyLCA2MDE0NiwgNjAxNTAsIDYwMTU0LCAwLCA2MDE1OCwgCisgICAgNjAxNjIsIDYwMTY2LCA2MDE3MCwgNjAxNzQsIDYwMTc4LCA2MDE4MiwgMCwgNjAxODYsIDYwMTkxLCA2MDE5NiwgNjAyMDEsIAorICAgIDYwMjA2LCA2MDIxMSwgNjAyMTYsIDYwMjIwLCA2MDIyNSwgNjAyMzAsIDYwMjM1LCA2MDIzOSwgNjAyNDQsIDYwMjQ5LCAKKyAgICA2MDI1NCwgNjAyNTksIDYwMjYzLCA2MDI2OCwgNjAyNzMsIDYwMjc4LCA2MDI4MywgNjAyODgsIDYwMjkzLCA2MDI5NywgCisgICAgNjAzMDIsIDYwMzA3LCA2MDMxNCwgNjAzMTksIDYwMzI0LCA2MDMzMCwgNjAzMzcsIDYwMzQ0LCA2MDM1MywgNjAzNjAsIAorICAgIDYwMzY5LCA2MDM3MywgNjAzNzcsIDYwMzgzLCA2MDM4OSwgNjAzOTUsIDYwNDAzLCA2MDQwOSwgNjA0MTMsIDYwNDE3LCAKKyAgICA2MDQyMSwgNjA0MjcsIDYwNDMzLCA2MDQzNywgNjA0MzksIDYwNDQzLCA2MDQ0OSwgNjA0NTEsIDYwNDU1LCA2MDQ1OCwgCisgICAgNjA0NjEsIDYwNDY3LCA2MDQ3MiwgNjA0NzYsIDYwNDgwLCA2MDQ4NSwgNjA0OTEsIDYwNDk2LCA2MDUwMSwgNjA1MDYsIAorICAgIDYwNTExLCA2MDUxOCwgNjA1MjUsIDYwNTMwLCA2MDUzNSwgNjA1NDAsIDYwNTQ1LCA2MDU1MCwgNjA1NTUsIDYwNTU5LCAKKyAgICA2MDU2MywgNjA1NzAsIDYwNTc3LCA2MDU4MywgNjA1ODcsIDYwNTkyLCA2MDU5NSwgNjA1OTksIDYwNjA2LCA2MDYxMCwgCisgICAgNjA2MTQsIDYwNjE4LCA2MDYyMiwgNjA2MjgsIDYwNjM0LCA2MDYzOCwgNjA2NDQsIDYwNjQ4LCA2MDY1MiwgNjA2NTgsIAorICAgIDYwNjYzLCA2MDY2OCwgNjA2NzAsIDYwNjczLCA2MDY3NywgNjA2ODMsIDYwNjg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTQ1MCwgMzE0NTYsIDMxNDYyLCAzMTQ2NiwgMzE0NzAsIDMxNDc0LCAKLSAgICAzMTQ3OCwgMzE0ODQsIDMxNDg4LCAzMTQ5NCwgMzE0OTgsIDMxNTA0LCAzMTUxMCwgMzE1MTgsIDMxNTI0LCAzMTUzMiwgCi0gICAgMzE1MzYsIDMxNTQwLCAzMTU0NCwgMzE1NTAsIDMxNTUzLCAzMTU1OSwgMzE1NjMsIDMxNTY5LCAzMTU3MywgMzE1NzcsIAotICAgIDMxNTgzLCAzMTU4NywgMzE1OTMsIDMxNTk3LCAzMTYwMywgMzE2MTEsIDMxNjE5LCAzMTYyNywgMzE2MzMsIDMxNjM3LCAKLSAgICAzMTY0MywgMzE2NDcsIDMxNjUzLCAzMTY1NywgMzE2NjAsIDMxNjY2LCAzMTY3MCwgMzE2NzYsIDMxNjc5LCAzMTY4MiwgCi0gICAgMzE2ODYsIDMxNjkwLCAzMTY5NCwgMzE3MDAsIDMxNzA2LCAzMTcxMCwgMzE3MTMsIDMxNzE3LCAzMTcyMiwgMzE3MjcsIAotICAgIDMxNzM0LCAzMTczOSwgMzE3NDYsIDMxNzUzLCAzMTc2MiwgMzE3NjksIDMxNzc4LCAzMTc4MywgMzE3OTAsIDMxNzk3LCAKLSAgICAzMTgwNiwgMzE4MTEsIDMxODE4LCAzMTgyMywgMzE4MjksIDMxODM1LCAzMTg0MSwgMzE4NDcsIDMxODUzLCAzMTg1OSwgMCwgCi0gICAgMCwgMCwgMCwgMzE4NjUsIDMxODY5LCAzMTg3MiwgMzE4NzUsIDMxODc4LCAzMTg4MSwgMzE4ODQsIDMxODg3LCAzMTg5MSwgCi0gICAgMzE4OTQsIDMxODk4LCAzMTkwMSwgMzE5MDQsIDMxOTA3LCAzMTkxMiwgMzE5MTcsIDMxOTIyLCAzMTkyNSwgMzE5MzAsIAotICAgIDMxOTM1LCAzMTk0MCwgMzE5NDUsIDMxOTUyLCAzMTk1NywgMzE5NjIsIDMxOTY3LCAzMTk3MiwgMzE5NzksIDMxOTg1LCAKLSAgICAzMTk5MSwgMzE5OTcsIDMyMDAzLCAzMjAwOSwgMzIwMTgsIDMyMDI3LCAzMjAzMywgMzIwMzksIDMyMDQ3LCAzMjA1NSwgCi0gICAgMzIwNjQsIDMyMDczLCAzMjA4MSwgMzIwODksIDMyMDk4LCAzMjEwNywgMCwgMCwgMCwgMzIxMTUsIDMyMTIwLCAzMjEyNSwgCi0gICAgMzIxMzAsIDMyMTM0LCAzMjEzOCwgMzIxNDIsIDMyMTQ3LCAzMjE1MSwgMzIxNTUsIDMyMTYwLCAzMjE2NCwgMzIxNjksIAotICAgIDMyMTc0LCAzMjE3OSwgMzIxODQsIDMyMTg5LCAzMjE5NCwgMzIxOTksIDMyMjA0LCAzMjIwOSwgMzIyMTQsIDMyMjE4LCAKLSAgICAzMjIyMywgMzIyMjgsIDMyMjMzLCAzMjIzNywgMzIyNDEsIDMyMjQ2LCAzMjI1MSwgMzIyNTYsIDMyMjYxLCAzMjI2NiwgCi0gICAgMzIyNzAsIDMyMjc2LCAzMjI4MiwgMzIyODgsIDMyMjk0LCAzMjMwMCwgMzIzMDYsIDMyMzEyLCAzMjMxOCwgMzIzMjQsIAotICAgIDMyMzI5LCAzMjMzNCwgMzIzNDEsIDMyMzQ5LCAzMjM1NCwgMzIzNTksIDMyMzY0LCAzMjM2OCwgMzIzNzIsIDMyMzc2LCAKLSAgICAzMjM4MCwgMzIzODQsIDMyMzg4LCAzMjM5MywgMzIzOTcsIDMyNDAyLCAzMjQwNiwgMzI0MTEsIDMyNDE2LCAzMjQyMSwgCi0gICAgMzI0MjcsIDMyNDMzLCAzMjQzNywgMzI0NDMsIDMyNDQ3LCAzMjQ1MywgMzI0NTksIDMyNDY0LCAzMjQ3MSwgMzI0NzUsIAotICAgIDMyNDgxLCAzMjQ4NiwgMzI0OTMsIDMyNDk4LCAzMjUwNSwgMzI1MTIsIDMyNTE3LCAzMjUyNCwgMzI1MjksIDMyNTM0LCAKLSAgICAzMjUzOSwgMzI1NDYsIDMyNTUwLCAzMjU1NiwgMzI1NjMsIDMyNTcwLCAzMjU3NSwgMzI1ODIsIDMyNTg5LCAzMjU5MywgCi0gICAgMzI1OTksIDMyNjA0LCAzMjYwOSwgMzI2MTYsIDMyNjIxLCAzMjYyNiwgMzI2MzEsIDMyNjM2LCAzMjY0MCwgMzI2NDQsIAotICAgIDMyNjQ5LCAzMjY1NCwgMzI2NjEsIDMyNjY3LCAzMjY3MiwgMzI2NzksIDMyNjg0LCAzMjY5MSwgMzI2OTYsIDMyNzA2LCAKLSAgICAzMjcxMiwgMzI3MTgsIDMyNzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjcyNiwgMzI3MzUsIDMyNzQyLCAzMjc0OSwgCi0gICAgMzI3NTYsIDMyNzYwLCAzMjc2NSwgMzI3NzAsIDMyNzc1LCAzMjc4MCwgMzI3ODUsIDMyNzkwLCAzMjc5NSwgMzI4MDAsIAotICAgIDMyODA1LCAzMjgxMCwgMzI4MTUsIDMyODIwLCAzMjgyNSwgMzI4MjksIDMyODM0LCAzMjgzOSwgMzI4NDQsIDMyODQ5LCAKLSAgICAzMjg1NCwgMzI4NTksIDMyODYzLCAzMjg2OCwgMzI4NzMsIDMyODc4LCAzMjg4MywgMzI4ODcsIDMyODkyLCAzMjg5NywgCi0gICAgMzI5MDEsIDMyOTA2LCAzMjkxMSwgMzI5MTYsIDMyOTIxLCAzMjkyNiwgMzI5MzAsIDMyOTM2LCAzMjk0MywgMzI5NDksIAotICAgIDMyOTU0LCAzMjk1OSwgMzI5NjUsIDMyOTcwLCAzMjk3NiwgMzI5ODEsIDMyOTg3LCAzMjk5MywgMzI5OTgsIDMzMDA0LCAKLSAgICAzMzAxMCwgMzMwMTUsIDMzMDIxLCAzMzAyNywgMzMwMzMsIDMzMDM4LCAwLCAwLCAwLCAzMzA0MywgMzMwNDksIDMzMDU5LCAKLSAgICAzMzA2NSwgMzMwNzMsIDMzMDc5LCAzMzA4NCwgMzMwODgsIDMzMDkyLCAzMzA5NiwgMzMxMDAsIDMzMTA0LCAzMzEwOCwgCi0gICAgMzMxMTMsIDMzMTE3LCAwLCAwLCAwLCAzMzEyMiwgMzMxMjcsIDMzMTMyLCAzMzEzNywgMzMxNDQsIDMzMTUwLCAzMzE1NiwgCi0gICAgMzMxNjIsIDMzMTY4LCAzMzE3NCwgMzMxODAsIDMzMTg3LCAzMzE5MywgMzMyMDAsIDMzMjA3LCAzMzIxNCwgMzMyMjEsIAotICAgIDMzMjI4LCAzMzIzNSwgMzMyNDIsIDMzMjQ5LCAzMzI1NiwgMzMyNjMsIDMzMjcwLCAzMzI3NywgMzMyODQsIDMzMjkxLCAKLSAgICAzMzI5OCwgMzMzMDUsIDMzMzEyLCAzMzMxOSwgMzMzMjYsIDMzMzMzLCAzMzM0MCwgMzMzNDcsIDMzMzU0LCAzMzM2MSwgCi0gICAgMzMzNjgsIDMzMzc1LCAzMzM4MiwgMzMzODksIDMzMzk2LCAzMzQwMywgMzM0MTAsIDMzNDE4LCAzMzQyNiwgMzM0MzQsIAotICAgIDMzNDQwLCAzMzQ0NiwgMzM0NTIsIDMzNDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzMzQ2OSwgMzM0NzcsIDMzNDg1LCAzMzQ5MywgMzM1MDEsIDMzNTExLCAzMzUyMSwgMzM1MzEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDMzNTQxLCAzMzU0NiwgMzM1NTEsIDMzNTU2LCAzMzU2MSwgMzM1NzAsIDMzNTgxLCAzMzU5MCwgMzM2MDEsIAotICAgIDMzNjA3LCAzMzYyMCwgMzM2MjYsIDMzNjMzLCAzMzY0MCwgMzM2NDUsIDMzNjUxLCAzMzY1NywgMzM2NjgsIDMzNjc3LCAKLSAgICAzMzY4NCwgMzM2OTEsIDMzNzAwLCAzMzcwNywgMzM3MTYsIDMzNzI2LCAzMzczNiwgMzM3NDMsIDMzNzUwLCAzMzc1NywgCi0gICAgMzM3NjcsIDMzNzcyLCAzMzc4MCwgMzM3ODYsIDMzNzk0LCAzMzgwMywgMzM4MDgsIDMzODE1LCAzMzgyMSwgMzM4MjYsIDAsIAotICAgIDMzODMxLCAzMzgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMzM4NDQsIDMzODQ5LCAzMzg1NSwgMzM4NjIsIDMzODcwLCAzMzg3NiwgCi0gICAgMzM4ODIsIDMzODg4LCAzMzg5MywgMzM5MDAsIDMzOTA2LCAzMzkxMiwgMzM5MTgsIDMzOTI2LCAzMzkzMiwgMzM5NDAsIAotICAgIDMzOTQ1LCAzMzk1MSwgMzM5NTcsIDMzOTY0LCAzMzk3MiwgMzM5NzksIDMzOTg1LCAzMzk5MiwgMzM5OTksIDM0MDA1LCAKLSAgICAzNDAxMiwgMzQwMTksIDM0MDI1LCAzNDAzMCwgMzQwMzYsIDM0MDQ0LCAzNDA1MywgMzQwNTksIDM0MDY1LCAzNDA3MSwgCi0gICAgMzQwNzcsIDM0MDg1LCAzNDA4OSwgMzQwOTUsIDM0MTAxLCAzNDEwNywgMzQxMTMsIDM0MTE5LCAzNDEyNSwgMzQxMjksIAotICAgIDM0MTM0LCAzNDEzOSwgMzQxNDYsIDM0MTUxLCAzNDE1NSwgMzQxNjEsIDM0MTY2LCAzNDE3MSwgMzQxNzUsIDM0MTgwLCAKLSAgICAzNDE4NSwgMzQxODksIDM0MTk0LCAzNDE5OSwgMzQyMDYsIDM0MjEwLCAzNDIxNSwgMzQyMjAsIDM0MjI0LCAzNDIyOSwgCi0gICAgMzQyMzMsIDM0MjM4LCAzNDI0MiwgMzQyNDgsIDM0MjUzLCAzNDI2MCwgMzQyNjUsIDM0MjcwLCAzNDI3NCwgMzQyNzksIAotICAgIDM0Mjg0LCAzNDI5MSwgMzQyOTYsIDM0MzAyLCAzNDMwNywgMzQzMTIsIDM0MzE3LCAzNDMyMSwgMzQzMjYsIDM0MzMzLCAKLSAgICAzNDM0MCwgMzQzNDUsIDM0MzUwLCAzNDM1NCwgMzQzNjAsIDM0MzY3LCAzNDM3MiwgMzQzNzcsIDM0MzgyLCAzNDM4OCwgCi0gICAgMzQzOTMsIDM0Mzk5LCAzNDQwNCwgMzQ0MTAsIDM0NDE2LCAzNDQyMiwgMzQ0MjksIDM0NDM2LCAzNDQ0MywgMzQ0NTAsIAotICAgIDM0NDU3LCAzNDQ2NCwgMzQ0NjksIDM0NDc3LCAzNDQ4NiwgMzQ0OTUsIDM0NTA0LCAzNDUxMywgMzQ1MjIsIDM0NTMxLCAKLSAgICAzNDU0MywgMzQ1NTIsIDM0NTYxLCAzNDU3MCwgMzQ1NzcsIDM0NTgyLCAzNDU4OSwgMzQ1OTcsIDM0NjA1LCAzNDYxMiwgCi0gICAgMzQ2MTksIDM0NjI2LCAzNDYzMywgMzQ2NDEsIDM0NjUwLCAzNDY1OSwgMzQ2NjgsIDM0Njc3LCAzNDY4NiwgMzQ2OTUsIAotICAgIDM0NzA0LCAzNDcxMywgMzQ3MjIsIDM0NzMxLCAzNDc0MCwgMzQ3NDksIDM0NzU4LCAzNDc2NywgMzQ3NzUsIDM0Nzg0LCAKLSAgICAzNDc5NSwgMzQ4MDMsIDM0ODEyLCAzNDgyMywgMzQ4MzIsIDM0ODQxLCAzNDg1MCwgMzQ4NTksIDM0ODY3LCAzNDg3NiwgCi0gICAgMzQ4ODMsIDM0ODg4LCAzNDg5NiwgMzQ5MDEsIDM0OTA4LCAzNDkxMywgMzQ5MjIsIDM0OTI4LCAzNDkzNSwgMzQ5NDIsIAotICAgIDM0OTQ3LCAzNDk1MiwgMzQ5NjAsIDM0OTY4LCAzNDk3NywgMzQ5ODYsIDM0OTkxLCAzNDk5OCwgMzUwMDksIDM1MDE3LCAKLSAgICAzNTAyNiwgMzUwMzIsIDM1MDM4LCAzNTA0MywgMzUwNTAsIDM1MDU1LCAzNTA2NCwgMzUwNjksIDM1MDc0LCAzNTA3OSwgCi0gICAgMzUwODYsIDM1MDkzLCAzNTA5OCwgMzUxMDcsIDM1MTE1LCAzNTEyMCwgMzUxMjUsIDM1MTMyLCAzNTEzOSwgMzUxNDMsIAotICAgIDM1MTQ3LCAzNTE1MCwgMzUxNTMsIDM1MTU2LCAzNTE1OSwgMzUxNjIsIDM1MTY1LCAzNTE3MiwgMzUxNzUsIDM1MTc4LCAKLSAgICAzNTE4MywgMzUxODcsIDM1MTkxLCAzNTE5NSwgMzUxOTksIDM1MjAzLCAzNTIxMiwgMzUyMTgsIDM1MjI0LCAzNTIzMCwgCi0gICAgMzUyMzgsIDM1MjQ2LCAzNTI1MiwgMzUyNTgsIDM1MjY1LCAzNTI3MSwgMzUyNzYsIDM1MjgyLCAzNTI4OSwgMzUyOTUsIAotICAgIDM1MzAyLCAzNTMwOCwgMzUzMTYsIDM1MzIxLCAzNTMyNywgMzUzMzMsIDM1MzM5LCAzNTM0NSwgMzUzNTEsIDM1MzU3LCAKLSAgICAzNTM2MywgMzUzNzQsIDM1Mzg0LCAzNTM5MCwgMzUzOTYsIDM1NDA2LCAzNTQxMiwgMzU0MjAsIDM1NDI4LCAzNTQzNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzU0NDEsIDM1NDQ4LCAzNTQ1NSwgMzU0NjAsIDM1NDY5LCAzNTQ3NywgMzU0ODUsIDM1NDkyLCAKLSAgICAzNTQ5OSwgMzU1MDYsIDM1NTEzLCAzNTUyMSwgMzU1MjksIDM1NTM5LCAzNTU0OSwgMzU1NTcsIDM1NTY1LCAzNTU3MywgCi0gICAgMzU1ODEsIDM1NTkwLCAzNTU5OSwgMzU2MDcsIDM1NjE1LCAzNTYyNCwgMzU2MzMsIDM1NjQzLCAzNTY1MywgMzU2NjIsIAotICAgIDM1NjcxLCAzNTY3OSwgMzU2ODcsIDM1Njk1LCAzNTcwMywgMzU3MTMsIDM1NzIzLCAzNTczMSwgMzU3MzksIDM1NzQ3LCAKLSAgICAzNTc1NSwgMzU3NjMsIDM1NzcxLCAzNTc3OSwgMzU3ODcsIDM1Nzk1LCAzNTgwMywgMzU4MTEsIDM1ODE5LCAzNTgyOCwgCi0gICAgMzU4MzcsIDM1ODQ2LCAzNTg1NSwgMzU4NjUsIDM1ODc1LCAzNTg4MiwgMzU4ODksIDM1ODk3LCAzNTkwNSwgMzU5MTQsIAotICAgIDM1OTIzLCAzNTkzMSwgMzU5MzksIDM1OTUxLCAzNTk2MywgMzU5NzIsIDM1OTgxLCAzNTk5MCwgMzU5OTksIDM2MDA2LCAKLSAgICAzNjAxMywgMzYwMjEsIDM2MDI5LCAzNjAzNywgMzYwNDUsIDM2MDUzLCAzNjA2MSwgMzYwNjksIDM2MDc3LCAzNjA4NiwgCi0gICAgMzYwOTUsIDM2MTA0LCAzNjExMywgMzYxMjIsIDM2MTMxLCAzNjE0MSwgMzYxNTEsIDM2MTYxLCAzNjE3MSwgMzYxODAsIAotICAgIDM2MTg5LCAzNjE5NiwgMzYyMDMsIDM2MjExLCAzNjIxOSwgMzYyMjcsIDM2MjM1LCAzNjI0MywgMzYyNTEsIDM2MjYzLCAKLSAgICAzNjI3NSwgMzYyODQsIDM2MjkzLCAzNjMwMSwgMzYzMDksIDM2MzE3LCAzNjMyNSwgMzYzMzYsIDM2MzQ3LCAzNjM1OCwgCi0gICAgMzYzNjksIDM2MzgxLCAzNjM5MywgMzY0MDEsIDM2NDA5LCAzNjQxNywgMzY0MjUsIDM2NDM0LCAzNjQ0MywgMzY0NTIsIAotICAgIDM2NDYxLCAzNjQ2OSwgMzY0NzcsIDM2NDg1LCAzNjQ5MywgMzY1MDEsIDM2NTA5LCAzNjUxOCwgMzY1MjcsIDM2NTM3LCAKLSAgICAzNjU0NywgMzY1NTUsIDM2NTYzLCAzNjU3MSwgMzY1NzksIDM2NTg3LCAzNjU5NSwgMzY2MDIsIDM2NjA5LCAzNjYxNywgCi0gICAgMzY2MjUsIDM2NjMzLCAzNjY0MSwgMzY2NDksIDM2NjU3LCAzNjY2NSwgMzY2NzMsIDM2NjgxLCAzNjY4OSwgMzY2OTcsIAotICAgIDM2NzA1LCAzNjcxMywgMzY3MjEsIDM2NzI5LCAzNjczNywgMzY3NDYsIDM2NzU1LCAzNjc2NCwgMzY3NzIsIDM2NzgxLCAKLSAgICAzNjc5MCwgMzY3OTksIDM2ODA4LCAzNjgxOCwgMzY4MjcsIDM2ODMzLCAzNjgzOCwgMzY4NDUsIDM2ODUyLCAzNjg2MCwgCi0gICAgMzY4NjgsIDM2ODc3LCAzNjg4NiwgMzY4OTYsIDM2OTA2LCAzNjkxNywgMzY5MjgsIDM2OTM4LCAzNjk0OCwgMzY5NTgsIAotICAgIDM2OTY4LCAzNjk3NywgMzY5ODYsIDM2OTk2LCAzNzAwNiwgMzcwMTcsIDM3MDI4LCAzNzAzOCwgMzcwNDgsIDM3MDU4LCAKLSAgICAzNzA2OCwgMzcwNzUsIDM3MDgyLCAzNzA5MCwgMzcwOTgsIDM3MTA1LCAzNzExMiwgMzcxMjEsIDM3MTMwLCAzNzE0MCwgCi0gICAgMzcxNTAsIDM3MTYxLCAzNzE3MiwgMzcxODIsIDM3MTkyLCAzNzIwMiwgMzcyMTIsIDM3MjIxLCAzNzIzMCwgMzcyMzgsIAotICAgIDM3MjQ2LCAzNzI1MywgMzcyNjAsIDM3MjY4LCAzNzI3NiwgMzcyODUsIDM3Mjk0LCAzNzMwNCwgMzczMTQsIDM3MzI1LCAKLSAgICAzNzMzNiwgMzczNDYsIDM3MzU2LCAzNzM2NiwgMzczNzYsIDM3Mzg1LCAzNzM5NCwgMzc0MDQsIDM3NDE0LCAzNzQyNSwgCi0gICAgMzc0MzYsIDM3NDQ2LCAzNzQ1NiwgMzc0NjYsIDM3NDc2LCAzNzQ4MywgMzc0OTAsIDM3NDk4LCAzNzUwNiwgMzc1MTUsIAotICAgIDM3NTI0LCAzNzUzNCwgMzc1NDQsIDM3NTU1LCAzNzU2NiwgMzc1NzYsIDM3NTg2LCAzNzU5NiwgMzc2MDYsIDM3NjE0LCAKLSAgICAzNzYyMiwgMzc2MzAsIDM3NjM4LCAzNzY0NywgMzc2NTYsIDM3NjY0LCAzNzY3MiwgMzc2NzksIDM3Njg2LCAzNzY5MywgCi0gICAgMzc3MDAsIDM3NzA4LCAzNzcxNiwgMzc3MjQsIDM3NzMyLCAzNzc0MywgMzc3NTQsIDM3NzY1LCAzNzc3NiwgMzc3ODcsIAotICAgIDM3Nzk4LCAzNzgwNiwgMzc4MTQsIDM3ODI1LCAzNzgzNiwgMzc4NDcsIDM3ODU4LCAzNzg2OSwgMzc4ODAsIDM3ODg4LCAKLSAgICAzNzg5NiwgMzc5MDcsIDM3OTE4LCAzNzkyOSwgMCwgMCwgMzc5NDAsIDM3OTQ4LCAzNzk1NiwgMzc5NjcsIDM3OTc4LCAKLSAgICAzNzk4OSwgMCwgMCwgMzgwMDAsIDM4MDA4LCAzODAxNiwgMzgwMjcsIDM4MDM4LCAzODA0OSwgMzgwNjAsIDM4MDcxLCAKLSAgICAzODA4MiwgMzgwOTAsIDM4MDk4LCAzODEwOSwgMzgxMjAsIDM4MTMxLCAzODE0MiwgMzgxNTMsIDM4MTY0LCAzODE3MiwgCi0gICAgMzgxODAsIDM4MTkxLCAzODIwMiwgMzgyMTMsIDM4MjI0LCAzODIzNSwgMzgyNDYsIDM4MjU0LCAzODI2MiwgMzgyNzMsIAotICAgIDM4Mjg0LCAzODI5NSwgMzgzMDYsIDM4MzE3LCAzODMyOCwgMzgzMzYsIDM4MzQ0LCAzODM1NSwgMzgzNjYsIDM4Mzc3LCAwLCAKLSAgICAwLCAzODM4OCwgMzgzOTYsIDM4NDA0LCAzODQxNSwgMzg0MjYsIDM4NDM3LCAwLCAwLCAzODQ0OCwgMzg0NTYsIDM4NDY0LCAKLSAgICAzODQ3NSwgMzg0ODYsIDM4NDk3LCAzODUwOCwgMzg1MTksIDAsIDM4NTMwLCAwLCAzODUzOCwgMCwgMzg1NDksIDAsIAotICAgIDM4NTYwLCAzODU3MSwgMzg1NzksIDM4NTg3LCAzODU5OCwgMzg2MDksIDM4NjIwLCAzODYzMSwgMzg2NDIsIDM4NjUzLCAKLSAgICAzODY2MSwgMzg2NjksIDM4NjgwLCAzODY5MSwgMzg3MDIsIDM4NzEzLCAzODcyNCwgMzg3MzUsIDM4NzQzLCAzODc1MSwgCi0gICAgMzg3NTksIDM4NzY3LCAzODc3NSwgMzg3ODMsIDM4NzkxLCAzODc5OSwgMzg4MDcsIDM4ODE1LCAzODgyMywgMzg4MzEsIAotICAgIDM4ODM5LCAwLCAwLCAzODg0NywgMzg4NTgsIDM4ODY5LCAzODg4MywgMzg4OTcsIDM4OTExLCAzODkyNSwgMzg5MzksIAotICAgIDM4OTUzLCAzODk2NCwgMzg5NzUsIDM4OTg5LCAzOTAwMywgMzkwMTcsIDM5MDMxLCAzOTA0NSwgMzkwNTksIDM5MDcwLCAKLSAgICAzOTA4MSwgMzkwOTUsIDM5MTA5LCAzOTEyMywgMzkxMzcsIDM5MTUxLCAzOTE2NSwgMzkxNzYsIDM5MTg3LCAzOTIwMSwgCi0gICAgMzkyMTUsIDM5MjI5LCAzOTI0MywgMzkyNTcsIDM5MjcxLCAzOTI4MiwgMzkyOTMsIDM5MzA3LCAzOTMyMSwgMzkzMzUsIAotICAgIDM5MzQ5LCAzOTM2MywgMzkzNzcsIDM5Mzg4LCAzOTM5OSwgMzk0MTMsIDM5NDI3LCAzOTQ0MSwgMzk0NTUsIDM5NDY5LCAKLSAgICAzOTQ4MywgMzk0OTEsIDM5NDk5LCAzOTUxMCwgMzk1MTgsIDAsIDM5NTI5LCAzOTUzNywgMzk1NDgsIDM5NTU2LCAzOTU2NCwgCi0gICAgMzk1NzIsIDM5NTgwLCAzOTU4OCwgMzk1OTEsIDM5NTk0LCAzOTU5NywgMzk2MDAsIDM5NjA2LCAzOTYxNywgMzk2MjUsIDAsIAotICAgIDM5NjM2LCAzOTY0NCwgMzk2NTUsIDM5NjYzLCAzOTY3MSwgMzk2NzksIDM5Njg3LCAzOTY5NSwgMzk3MDEsIDM5NzA3LCAKLSAgICAzOTcxMywgMzk3MjEsIDM5NzI5LCAzOTc0MCwgMCwgMCwgMzk3NTEsIDM5NzU5LCAzOTc3MCwgMzk3NzgsIDM5Nzg2LCAKLSAgICAzOTc5NCwgMCwgMzk4MDIsIDM5ODA4LCAzOTgxNCwgMzk4MjAsIDM5ODI4LCAzOTgzNiwgMzk4NDcsIDM5ODU4LCAzOTg2NiwgCi0gICAgMzk4NzQsIDM5ODgyLCAzOTg5MywgMzk5MDEsIDM5OTA5LCAzOTkxNywgMzk5MjUsIDM5OTMzLCAzOTkzOSwgMzk5NDUsIDAsIAotICAgIDAsIDM5OTQ4LCAzOTk1OSwgMzk5NjcsIDAsIDM5OTc4LCAzOTk4NiwgMzk5OTcsIDQwMDA1LCA0MDAxMywgNDAwMjEsIAotICAgIDQwMDI5LCA0MDAzNywgNDAwNDAsIDAsIDQwMDQzLCA0MDA0NywgNDAwNTEsIDQwMDU1LCA0MDA1OSwgNDAwNjMsIDQwMDY3LCAKLSAgICA0MDA3MSwgNDAwNzUsIDQwMDc5LCA0MDA4MywgNDAwODcsIDQwMDkzLCA0MDA5OSwgNDAxMDUsIDQwMTA4LCA0MDExMSwgCi0gICAgNDAxMTMsIDQwMTE3LCA0MDEyMSwgNDAxMjUsIDQwMTI5LCA0MDEzMiwgNDAxMzYsIDQwMTQwLCA0MDE0NiwgNDAxNTIsIAotICAgIDQwMTU5LCA0MDE2NiwgNDAxNzEsIDQwMTc2LCA0MDE4MiwgNDAxODgsIDQwMTkwLCA0MDE5MywgNDAxOTUsIDQwMTk5LCAKLSAgICA0MDIwMywgNDAyMDcsIDQwMjExLCA0MDIxNSwgNDAyMTksIDQwMjIzLCA0MDIyNywgNDAyMzEsIDQwMjM3LCA0MDI0MSwgCi0gICAgNDAyNDUsIDQwMjUxLCA0MDI1NiwgNDAyNjMsIDQwMjY1LCA0MDI2OCwgNDAyNzIsIDQwMjc2LCA0MDI4MSwgNDAyODcsIAotICAgIDQwMjg5LCA0MDI5OCwgNDAzMDcsIDQwMzEwLCA0MDMxNCwgNDAzMTYsIDQwMzE4LCA0MDMyMCwgNDAzMjMsIDQwMzI5LCAKLSAgICA0MDMzMSwgNDAzMzUsIDQwMzM5LCA0MDM0NiwgNDAzNTMsIDQwMzU3LCA0MDM2MiwgNDAzNjcsIDQwMzcyLCA0MDM3NywgCi0gICAgNDAzODEsIDQwMzg1LCA0MDM4OCwgNDAzOTIsIDQwMzk2LCA0MDQwMywgNDA0MDgsIDQwNDEyLCA0MDQxNiwgNDA0MjEsIAotICAgIDQwNDI1LCA0MDQyOSwgNDA0MzQsIDQwNDM5LCA0MDQ0MywgNDA0NDcsIDQwNDUxLCA0MDQ1MywgNDA0NTgsIDQwNDYzLCAKLSAgICA0MDQ2NywgNDA0NzEsIDQwNDc1LCA0MDQ3OSwgMCwgNDA0ODMsIDQwNDg3LCA0MDQ5MSwgNDA0OTcsIDQwNTAzLCA0MDUwOSwgCi0gICAgNDA1MTUsIDQwNTIyLCA0MDUyOSwgNDA1MzQsIDQwNTM5LCA0MDU0MywgMCwgMCwgNDA1NDksIDQwNTUyLCA0MDU1NSwgCi0gICAgNDA1NTgsIDQwNTYyLCA0MDU2NSwgNDA1NjksIDQwNTczLCA0MDU3NywgNDA1ODIsIDQwNTg3LCA0MDU5MiwgNDA1OTksIAotICAgIDQwNjAzLCA0MDYwNiwgNDA2MDksIDQwNjEyLCA0MDYxNSwgNDA2MTgsIDQwNjIxLCA0MDYyNSwgNDA2MjgsIDQwNjMyLCAKLSAgICA0MDYzNiwgNDA2NDAsIDQwNjQ1LCA0MDY1MCwgMCwgNDA2NTUsIDQwNjYxLCA0MDY2NywgNDA2NzMsIDQwNjgwLCA0MDY4NywgCi0gICAgNDA2OTQsIDQwNzAxLCA0MDcwNywgNDA3MTQsIDQwNzIxLCA0MDcyOCwgNDA3MzQsIDAsIDAsIDAsIDQwNzQxLCA0MDc0NCwgCi0gICAgNDA3NDcsIDQwNzUwLCA0MDc1NSwgNDA3NTgsIDQwNzYxLCA0MDc2NCwgNDA3NjcsIDQwNzcwLCA0MDc3MywgNDA3NzgsIAotICAgIDQwNzgxLCA0MDc4NCwgNDA3ODcsIDQwNzkwLCA0MDc5MywgNDA3OTgsIDQwODAxLCA0MDgwNCwgNDA4MDcsIDQwODEwLCAKLSAgICA0MDgxMywgNDA4MTgsIDQwODIxLCA0MDgyNCwgNDA4MjksIDQwODM0LCA0MDgzOCwgNDA4NDEsIDQwODQ0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDg0NywgNDA4NTIsIDQwODU3LCA0MDg2NCwgCi0gICAgNDA4NzIsIDQwODc3LCA0MDg4MiwgNDA4ODYsIDQwODkwLCA0MDg5NSwgNDA5MDIsIDQwOTA5LCA0MDkxMywgNDA5MTgsIAotICAgIDQwOTIzLCA0MDkyOCwgNDA5MzMsIDQwOTQwLCA0MDk0NSwgNDA5NTAsIDQwOTU1LCA0MDk2NCwgNDA5NzEsIDQwOTc4LCAKLSAgICA0MDk4MiwgNDA5ODcsIDQwOTkzLCA0MDk5OCwgNDEwMDUsIDQxMDEzLCA0MTAyMSwgNDEwMjUsIDQxMDI5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTAzMywgNDEwMzcsIDQxMDQ1LCA0MTA0OSwgNDEwNTMsIAotICAgIDQxMDU4LCA0MTA2MiwgNDEwNjYsIDQxMDcwLCA0MTA3MiwgNDEwNzYsIDQxMDgwLCA0MTA4NCwgNDEwODksIDQxMDkzLCAKLSAgICA0MTA5NywgNDExMDUsIDQxMTA4LCA0MTExMiwgNDExMTUsIDQxMTE4LCA0MTEyNCwgNDExMjgsIDQxMTMxLCA0MTEzNywgCi0gICAgNDExNDEsIDQxMTQ1LCA0MTE0OSwgNDExNTIsIDQxMTU2LCA0MTE1OSwgNDExNjMsIDQxMTY1LCA0MTE2OCwgNDExNzEsIAotICAgIDQxMTc1LCA0MTE3NywgNDExODEsIDQxMTg0LCA0MTE4NywgNDExOTIsIDQxMTk3LCA0MTIwNCwgNDEyMDcsIDQxMjEwLCAKLSAgICA0MTIxNCwgNDEyMTksIDQxMjIyLCA0MTIyNSwgNDEyMjgsIDQxMjMyLCA0MTIzNywgNDEyNDEsIDQxMjQ0LCA0MTI0NiwgCi0gICAgNDEyNDksIDQxMjUyLCA0MTI1NSwgNDEyNTksIDQxMjY0LCA0MTI2NywgNDEyNzEsIDQxMjc1LCA0MTI3OSwgNDEyODMsIAotICAgIDQxMjg4LCA0MTI5NCwgNDEyOTksIDQxMzA0LCA0MTMxMCwgNDEzMTUsIDQxMzIwLCA0MTMyNCwgNDEzMjgsIDQxMzMzLCAKLSAgICA0MTMzNywgNDEzNDEsIDQxMzQ0LCA0MTM0NiwgNDEzNTEsIDQxMzU3LCA0MTM2NCwgNDEzNzEsIDQxMzc4LCA0MTM4NSwgCi0gICAgNDEzOTIsIDQxMzk5LCA0MTQwNiwgNDE0MTMsIDQxNDIxLCA0MTQyOCwgNDE0MzYsIDQxNDQzLCA0MTQ1MCwgNDE0NTgsIAotICAgIDQxNDY2LCA0MTQ3MSwgNDE0NzYsIDQxNDgxLCA0MTQ4NiwgNDE0OTEsIDQxNDk2LCA0MTUwMSwgNDE1MDcsIDQxNTEyLCAKLSAgICA0MTUxOCwgNDE1MjQsIDQxNTMwLCA0MTUzNiwgNDE1NDIsIDQxNTQ5LCA0MTU1NywgNDE1NjQsIDQxNTcwLCA0MTU3NiwgCi0gICAgNDE1ODIsIDQxNTg4LCA0MTU5NCwgNDE2MDAsIDQxNjA3LCA0MTYxMywgNDE2MjAsIDQxNjI3LCA0MTYzNCwgNDE2NDEsIAotICAgIDQxNjQ4LCA0MTY1NiwgNDE2NjUsIDQxNjczLCA0MTY4NCwgNDE2OTIsIDQxNzAwLCA0MTcwOSwgNDE3MTYsIDQxNzI1LCAKLSAgICA0MTczNCwgNDE3NDIsIDQxNzUxLCA0MTc1OSwgNDE3NjMsIDAsIDAsIDAsIDAsIDQxNzY3LCA0MTc2OSwgNDE3NzEsIAotICAgIDQxNzczLCA0MTc3NSwgNDE3NzgsIDQxNzgxLCA0MTc4NSwgNDE3ODksIDQxNzk0LCA0MTc5OSwgNDE4MDMsIDQxODA3LCAKLSAgICA0MTgxMSwgNDE4MTUsIDQxODIwLCA0MTgyNSwgNDE4MzAsIDQxODM1LCA0MTg0MCwgNDE4NDUsIDQxODUwLCA0MTg1NSwgCi0gICAgNDE4NjAsIDQxODY1LCA0MTg3MSwgNDE4NzUsIDQxODc5LCA0MTg4NCwgNDE4ODksIDQxODk0LCA0MTg5OSwgNDE5MDMsIAotICAgIDQxOTEwLCA0MTkxNywgNDE5MjQsIDQxOTMxLCA0MTkzOCwgNDE5NDUsIDQxOTUyLCA0MTk1OSwgNDE5NjcsIDQxOTc5LCAKLSAgICA0MTk4NSwgNDE5OTEsIDQxOTk4LCA0MjAwNSwgNDIwMTIsIDQyMDE5LCA0MjAyNiwgNDIwMzMsIDQyMDQwLCA0MjA0NywgCi0gICAgNDIwNTIsIDQyMDU4LCA0MjA2MywgNDIwNjgsIDQyMDczLCA0MjA3OCwgNDIwODMsIDQyMDkwLCA0MjA5NywgNDIxMDIsIAotICAgIDQyMTA4LCA0MjExMywgNDIxMTYsIDQyMTE5LCA0MjEyMiwgNDIxMjUsIDQyMTI5LCA0MjEzMywgNDIxMzgsIDQyMTQzLCAKLSAgICA0MjE0OSwgNDIxNTUsIDQyMTU5LCA0MjE2MywgNDIxNjcsIDQyMTcxLCA0MjE3NiwgNDIxODEsIDQyMTg1LCA0MjE4OSwgCi0gICAgNDIxOTMsIDQyMTk3LCA0MjIwMiwgNDIyMDcsIDQyMjEwLCA0MjIxMywgNDIyMTYsIDQyMjE5LCA0MjIyNSwgNDIyMzIsIAotICAgIDQyMjQzLCA0MjI1MywgNDIyNTcsIDQyMjY1LCA0MjI3MiwgNDIyODAsIDQyMjg5LCA0MjI5MywgNDIyOTksIDQyMzA1LCAKLSAgICA0MjMwOSwgNDIzMTQsIDQyMzE5LCA0MjMyNSwgNDIzMzEsIDQyMzM3LCA0MjM0NCwgNDIzNDgsIDQyMzUyLCA0MjM1NywgCi0gICAgNDIzNjAsIDQyMzYyLCA0MjM2NiwgNDIzNzAsIDQyMzc4LCA0MjM4MiwgNDIzODQsIDQyMzg2LCA0MjM5MCwgNDIzOTgsIAotICAgIDQyNDAzLCA0MjQwOSwgNDI0MTksIDQyNDI2LCA0MjQzMSwgNDI0MzUsIDQyNDM5LCA0MjQ0MywgNDI0NDYsIDQyNDQ5LCAKLSAgICA0MjQ1MiwgNDI0NTYsIDQyNDYwLCA0MjQ2NCwgNDI0NjgsIDQyNDcyLCA0MjQ3NSwgNDI0NzksIDQyNDgzLCA0MjQ4NiwgCi0gICAgNDI0ODgsIDQyNDkxLCA0MjQ5MywgNDI0OTcsIDQyNTAxLCA0MjUwMywgNDI1MDksIDQyNTEyLCA0MjUxNywgNDI1MjEsIAotICAgIDQyNTI1LCA0MjUyNywgNDI1MjksIDQyNTMxLCA0MjUzNCwgNDI1MzgsIDQyNTQyLCA0MjU0NiwgNDI1NTAsIDQyNTU0LCAKLSAgICA0MjU2MCwgNDI1NjYsIDQyNTY4LCA0MjU3MCwgNDI1NzIsIDQyNTc0LCA0MjU3NywgNDI1NzksIDQyNTgzLCA0MjU4NSwgCi0gICAgNDI1ODksIDQyNTkzLCA0MjU5OCwgNDI2MDIsIDQyNjA2LCA0MjYxMCwgNDI2MTQsIDQyNjE4LCA0MjYyNCwgNDI2MjgsIAotICAgIDQyNjM4LCA0MjY0OCwgNDI2NTIsIDQyNjU4LCA0MjY2NSwgNDI2NjksIDQyNjczLCA0MjY3NiwgNDI2ODEsIDQyNjg1LCAKLSAgICA0MjY5MSwgNDI2OTUsIDQyNzA4LCA0MjcxNywgNDI3MjEsIDQyNzI1LCA0MjczMSwgNDI3MzUsIDQyNzM4LCA0Mjc0MCwgCi0gICAgNDI3NDMsIDQyNzQ3LCA0Mjc1MSwgNDI3NTgsIDQyNzYyLCA0Mjc2NiwgNDI3NzAsIDQyNzczLCA0Mjc3OCwgNDI3ODMsIAotICAgIDQyNzg5LCA0Mjc5NSwgNDI4MDAsIDQyODA1LCA0MjgxMywgNDI4MjEsIDQyODI1LCA0MjgyOSwgNDI4MzEsIDQyODM2LCAKLSAgICA0Mjg0MCwgNDI4NDQsIDQyODUyLCA0Mjg2MCwgNDI4NjcsIDQyODc0LCA0Mjg4MywgNDI4OTIsIDQyODk4LCA0MjkwNCwgCi0gICAgNDI5MTIsIDQyOTIwLCA0MjkyMiwgNDI5MjQsIDQyOTMwLCA0MjkzNiwgNDI5NDMsIDQyOTUwLCA0Mjk1NiwgNDI5NjIsIAotICAgIDQyOTY2LCA0Mjk3MCwgNDI5NzcsIDQyOTg0LCA0Mjk5MSwgNDI5OTgsIDQzMDA4LCA0MzAxOCwgNDMwMjYsIDQzMDM0LCAKLSAgICA0MzAzNiwgNDMwNDAsIDQzMDQ0LCA0MzA0OSwgNDMwNTQsIDQzMDYyLCA0MzA3MCwgNDMwNzMsIDQzMDc2LCA0MzA3OSwgCi0gICAgNDMwODIsIDQzMDg1LCA0MzA5MCwgNDMwOTQsIDQzMDk5LCA0MzEwNCwgNDMxMDcsIDQzMTEwLCA0MzExMywgNDMxMTYsIAotICAgIDQzMTE5LCA0MzEyMywgNDMxMjYsIDQzMTI5LCA0MzEzMiwgNDMxMzUsIDQzMTM3LCA0MzEzOSwgNDMxNDEsIDQzMTQzLCAKLSAgICA0MzE1MSwgNDMxNTksIDQzMTY1LCA0MzE2OSwgNDMxNzUsIDQzMTg1LCA0MzE5MSwgNDMxOTcsIDQzMjAzLCA0MzIxMSwgCi0gICAgNDMyMjAsIDQzMjMyLCA0MzIzNiwgNDMyNDAsIDQzMjQyLCA0MzI0OCwgNDMyNTAsIDQzMjUyLCA0MzI1NCwgNDMyNTYsIAotICAgIDQzMjYyLCA0MzI2NSwgNDMyNzEsIDQzMjc3LCA0MzI4MSwgNDMyODUsIDQzMjg5LCA0MzI5MiwgNDMyOTYsIDQzMzAwLCAKLSAgICA0MzMwMiwgNDMzMTEsIDQzMzIwLCA0MzMyNSwgNDMzMzAsIDQzMzM2LCA0MzM0MiwgNDMzNDgsIDQzMzUxLCA0MzM1NCwgCi0gICAgNDMzNTcsIDQzMzYwLCA0MzM2MiwgNDMzNjcsIDQzMzcyLCA0MzM3NywgNDMzODMsIDQzMzg5LCA0MzM5OCwgNDM0MDcsIAotICAgIDQzNDE0LCA0MzQyMSwgNDM0MjgsIDQzNDM1LCA0MzQ0NSwgNDM0NTUsIDQzNDY1LCA0MzQ3NSwgNDM0ODUsIDQzNDk1LCAKLSAgICA0MzUwNCwgNDM1MTMsIDQzNTIyLCA0MzUzMSwgNDM1MzksIDQzNTUxLCA0MzU2MiwgNDM1NzgsIDQzNTgxLCA0MzU4NywgCi0gICAgNDM1OTMsIDQzNTk5LCA0MzYwNywgNDM2MjIsIDQzNjM4LCA0MzY0NCwgNDM2NTAsIDQzNjU3LCA0MzY2MywgNDM2NzIsIAotICAgIDQzNjc5LCA0MzY5MywgNDM3MDgsIDQzNzEzLCA0MzcxOSwgNDM3MjcsIDQzNzMwLCA0MzczMywgNDM3MzUsIDQzNzM4LCAKLSAgICA0Mzc0MSwgNDM3NDMsIDQzNzQ1LCA0Mzc0OSwgNDM3NTIsIDQzNzU1LCA0Mzc1OCwgNDM3NjEsIDQzNzY2LCA0Mzc3MSwgCi0gICAgNDM3NzYsIDQzNzgxLCA0Mzc4NiwgNDM3ODksIDQzNzkxLCA0Mzc5MywgNDM3OTUsIDQzNzk5LCA0MzgwMywgNDM4MDcsIAotICAgIDQzODEzLCA0MzgxOCwgNDM4MjAsIDQzODIyLCA0MzgyNywgNDM4MzIsIDQzODM3LCA0Mzg0MiwgNDM4NDcsIDQzODUyLCAKLSAgICA0Mzg1NCwgNDM4NTYsIDQzODY2LCA0Mzg3MCwgNDM4NzgsIDQzODg3LCA0Mzg4OSwgNDM4OTQsIDQzODk5LCA0MzkwNywgCi0gICAgNDM5MTEsIDQzOTEzLCA0MzkxNywgNDM5MTksIDQzOTIzLCA0MzkyNywgNDM5MzEsIDQzOTMzLCA0MzkzNSwgNDM5MzcsIAotICAgIDQzOTQ0LCA0Mzk1MywgNDM5NjIsIDQzOTcxLCA0Mzk4MCwgNDM5ODksIDQzOTk4LCA0NDAwNywgNDQwMTYsIDQ0MDI0LCAKLSAgICA0NDAzMiwgNDQwNDEsIDQ0MDUwLCA0NDA1OSwgNDQwNjgsIDQ0MDc2LCA0NDA4NCwgNDQwOTMsIDQ0MTAyLCA0NDExMSwgCi0gICAgNDQxMjEsIDQ0MTMwLCA0NDE0MCwgNDQxNDksIDQ0MTU5LCA0NDE2NywgNDQxNzYsIDQ0MTg2LCA0NDE5NSwgNDQyMDUsIAotICAgIDQ0MjE0LCA0NDIyNCwgNDQyMzIsIDQ0MjQxLCA0NDI1MCwgNDQyNTksIDQ0MjY4LCA0NDI3NywgNDQyODYsIDQ0Mjk2LCAKLSAgICA0NDMwNSwgNDQzMTQsIDQ0MzIzLCA0NDMzMywgNDQzNDIsIDQ0MzUxLCA0NDM2MCwgNDQzNjksIDQ0Mzc5LCA0NDM4OSwgCi0gICAgNDQzOTgsIDQ0NDA3LCA0NDQxNSwgNDQ0MjQsIDQ0NDMxLCA0NDQ0MCwgNDQ0NDksIDQ0NDYwLCA0NDQ2OSwgNDQ0NzksIAotICAgIDQ0NDg5LCA0NDQ5NiwgNDQ1MDMsIDQ0NTEwLCA0NDUxOSwgNDQ1MjgsIDQ0NTM3LCA0NDU0NiwgNDQ1NTMsIDQ0NTU4LCAKLSAgICA0NDU2NiwgNDQ1NzEsIDQ0NTc0LCA0NDU4MSwgNDQ1ODQsIDQ0NTg5LCA0NDU5NCwgNDQ1OTcsIDQ0NjAwLCA0NDYwOCwgCi0gICAgNDQ2MTEsIDQ0NjE2LCA0NDYxOSwgNDQ2MjcsIDQ0NjMyLCA0NDY0MCwgNDQ2NDMsIDQ0NjQ2LCA0NDY0OSwgNDQ2NTQsIAotICAgIDQ0NjU5LCA0NDY2MiwgNDQ2NjUsIDQ0NjczLCA0NDY3NiwgNDQ2ODMsIDQ0NjkwLCA0NDY5NCwgNDQ2OTgsIDQ0NzAzLCAKLSAgICA0NDcwOCwgNDQ3MTQsIDQ0NzE5LCA0NDcyNSwgNDQ3MzEsIDQ0NzM2LCA0NDc0MiwgNDQ3NTAsIDQ0NzU2LCA0NDc2NCwgCi0gICAgNDQ3NzIsIDQ0Nzc4LCA0NDc4NiwgNDQ3OTQsIDQ0ODAyLCA0NDgxMCwgNDQ4MTYsIDQ0ODI0LCA0NDgzMiwgNDQ4NDAsIAotICAgIDQ0ODQ0LCA0NDg1MCwgNDQ4NjQsIDQ0ODc4LCA0NDg4MiwgNDQ4ODYsIDQ0ODkwLCA0NDg5NCwgNDQ5MDQsIDQ0OTA4LCAKLSAgICA0NDkxMywgNDQ5MTgsIDQ0OTI0LCA0NDkzMCwgNDQ5MzYsIDQ0OTQyLCA0NDk1MiwgNDQ5NjIsIDQ0OTcwLCA0NDk4MSwgCi0gICAgNDQ5OTIsIDQ1MDAwLCA0NTAxMSwgNDUwMjIsIDQ1MDMwLCA0NTA0MSwgNDUwNTIsIDQ1MDYwLCA0NTA2OCwgNDUwNzgsIAotICAgIDQ1MDg4LCA0NTA5MSwgNDUwOTQsIDQ1MDk3LCA0NTEwMiwgNDUxMDYsIDQ1MTEyLCA0NTExOSwgNDUxMjYsIDQ1MTM0LCAKLSAgICA0NTE0MSwgNDUxNDUsIDQ1MTQ5LCA0NTE1MywgNDUxNTcsIDQ1MTU5LCA0NTE2MywgNDUxNjcsIDQ1MTcyLCA0NTE3NywgCi0gICAgNDUxODQsIDQ1MTkxLCA0NTE5NCwgNDUyMDEsIDQ1MjAzLCA0NTIwNSwgNDUyMDksIDQ1MjEzLCA0NTIxOCwgNDUyMjQsIAotICAgIDQ1MjMwLCA0NTIzNiwgNDUyNDIsIDQ1MjUxLCA0NTI2MCwgNDUyNjksIDQ1MjczLCA0NTI3NSwgNDUyNzksIDQ1Mjg2LCAKLSAgICA0NTI5MywgNDUzMDAsIDQ1MzA3LCA0NTMxNCwgNDUzMTcsIDQ1MzIyLCAwLCAwLCAwLCAwLCAwLCA0NTMyOCwgNDUzMzIsIAotICAgIDQ1MzM5LCA0NTM0NiwgNDUzNTMsIDQ1MzYwLCA0NTM2NCwgNDUzNjgsIDQ1MzcyLCA0NTM3NiwgNDUzODIsIDQ1Mzg4LCAKLSAgICA0NTM5MywgNDUzOTksIDQ1NDA1LCA0NTQxMSwgNDU0MTcsIDQ1NDI1LCA0NTQzMiwgNDU0MzksIDQ1NDQ2LCA0NTQ1MywgCi0gICAgNDU0NTgsIDQ1NDY0LCA0NTQ3MywgNDU0NzcsIDQ1NDg0LCA0NTQ4OCwgNDU0OTIsIDQ1NDk4LCA0NTUwNCwgNDU1MTAsIAotICAgIDQ1NTE2LCA0NTUyMCwgNDU1MjQsIDQ1NTI3LCA0NTUzMCwgNDU1MzQsIDQ1NTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTU0OCwgNDU1NTEsIDQ1NTU1LCAKLSAgICA0NTU1OSwgNDU1NjUsIDQ1NTcxLCA0NTU3NywgNDU1ODUsIDQ1NTkyLCA0NTU5NiwgNDU2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NjA5LCA0NTYxMiwgNDU2MTUsIDQ1NjE4LCAKLSAgICA0NTYyMSwgNDU2MjQsIDQ1NjI3LCA0NTYzMSwgNDU2MzQsIDQ1NjM4LCA0NTY0MiwgNDU2NDYsIDQ1NjUwLCA0NTY1NCwgCi0gICAgNDU2NTgsIDQ1NjYyLCA0NTY2NiwgNDU2NzAsIDQ1Njc0LCA0NTY3OCwgNDU2ODIsIDQ1Njg1LCA0NTY4OCwgNDU2OTEsIAotICAgIDQ1Njk0LCA0NTY5NywgNDU3MDAsIDQ1NzA0LCA0NTcwNywgNDU3MTEsIDQ1NzE1LCA0NTcxOSwgNDU3MjMsIDQ1NzI3LCAKLSAgICA0NTczMSwgNDU3MzUsIDQ1NzM5LCA0NTc0MywgNDU3NDcsIDQ1NzUxLCA0NTc1NSwgNDU3NjEsIDQ1NzY3LCA0NTc3MywgCi0gICAgNDU3ODAsIDQ1Nzg3LCA0NTc5NCwgNDU4MDEsIDQ1ODA4LCA0NTgxNSwgNDU4MjIsIDQ1ODI5LCA0NTgzNiwgNDU4NDMsIAotICAgIDQ1ODUwLCA0NTg1NywgNDU4NjQsIDQ1ODcxLCA0NTg3OCwgNDU4ODUsIDQ1ODkyLCA0NTg5NywgNDU5MDMsIDQ1OTA5LCAKLSAgICA0NTkxNSwgNDU5MjAsIDQ1OTI2LCA0NTkzMiwgNDU5MzgsIDQ1OTQzLCA0NTk0OSwgNDU5NTUsIDQ1OTYwLCA0NTk2NiwgCi0gICAgNDU5NzIsIDQ1OTc3LCA0NTk4MywgNDU5ODksIDQ1OTk0LCA0NTk5OSwgNDYwMDUsIDQ2MDEwLCA0NjAxNiwgNDYwMjIsIAotICAgIDQ2MDI4LCA0NjAzNCwgNDYwNDAsIDQ2MDQ1LCA0NjA1MSwgNDYwNTcsIDQ2MDYzLCA0NjA2OCwgNDYwNzQsIDQ2MDgwLCAKLSAgICA0NjA4NiwgNDYwOTEsIDQ2MDk3LCA0NjEwMywgNDYxMDgsIDQ2MTE0LCA0NjEyMCwgNDYxMjUsIDQ2MTMxLCA0NjEzNywgCi0gICAgNDYxNDIsIDQ2MTQ3LCA0NjE1MywgNDYxNTgsIDQ2MTY0LCA0NjE3MCwgNDYxNzYsIDQ2MTgyLCA0NjE4OCwgNDYxOTMsIAotICAgIDQ2MTk5LCA0NjIwNSwgNDYyMTEsIDQ2MjE2LCA0NjIyMiwgNDYyMjgsIDQ2MjM0LCA0NjIzOSwgNDYyNDUsIDQ2MjUxLCAKLSAgICA0NjI1NiwgNDYyNjIsIDQ2MjY4LCA0NjI3MywgNDYyNzksIDQ2Mjg1LCA0NjI5MCwgNDYyOTUsIDQ2MzAxLCA0NjMwNiwgCi0gICAgNDYzMTIsIDQ2MzE4LCA0NjMyNCwgNDYzMzAsIDQ2MzM2LCA0NjM0MCwgNDYzNDUsIDQ2MzUwLCA0NjM1NSwgNDYzNjAsIAotICAgIDQ2MzY1LCA0NjM3MCwgNDYzNzUsIDQ2MzgwLCA0NjM4NSwgNDYzOTAsIDQ2Mzk0LCA0NjM5OCwgNDY0MDIsIDQ2NDA2LCAKLSAgICA0NjQxMCwgNDY0MTQsIDQ2NDE5LCA0NjQyMywgNDY0MjgsIDQ2NDMzLCA0NjQzOCwgNDY0NDMsIDQ2NDQ4LCA0NjQ1MywgCi0gICAgNDY0NTgsIDQ2NDY3LCA0NjQ3NiwgNDY0ODUsIDQ2NDk0LCA0NjUwMywgNDY1MTIsIDQ2NTIxLCA0NjUzMCwgNDY1MzcsIAotICAgIDQ2NTQ1LCA0NjU1MywgNDY1NjAsIDQ2NTY3LCA0NjU3NSwgNDY1ODMsIDQ2NTkwLCA0NjU5NywgNDY2MDUsIDQ2NjEzLCAKLSAgICA0NjYyMCwgNDY2MjcsIDQ2NjM1LCA0NjY0MywgNDY2NTAsIDQ2NjU3LCA0NjY2NSwgNDY2NzQsIDQ2NjgzLCA0NjY5MSwgCi0gICAgNDY3MDAsIDQ2NzA5LCA0NjcxNiwgNDY3MjMsIDQ2NzMxLCA0Njc0MCwgNDY3NDksIDQ2NzU3LCA0Njc2NiwgNDY3NzUsIAotICAgIDQ2NzgyLCA0Njc4OSwgNDY3OTgsIDQ2ODA3LCA0NjgxNiwgNDY4MjUsIDQ2ODM0LCA0Njg0MywgNDY4NTAsIDQ2ODU3LCAKLSAgICA0Njg2NiwgNDY4NzUsIDQ2ODg0LCA0Njg5MywgNDY5MDIsIDQ2OTExLCA0NjkxOCwgNDY5MjUsIDQ2OTM0LCA0Njk0MywgCi0gICAgNDY5NTIsIDQ2OTYyLCA0Njk3MiwgNDY5ODEsIDQ2OTkxLCA0NzAwMSwgNDcwMTEsIDQ3MDIxLCA0NzAzMSwgNDcwNDEsIAotICAgIDQ3MDUwLCA0NzA1OSwgNDcwNjYsIDQ3MDc0LCA0NzA4MiwgNDcwOTAsIDQ3MDk4LCA0NzEwMywgNDcxMDgsIDQ3MTE3LCAKLSAgICA0NzEyNSwgNDcxMzIsIDQ3MTQxLCA0NzE0OSwgNDcxNTYsIDQ3MTY1LCA0NzE3MywgNDcxODAsIDQ3MTg5LCA0NzE5NywgCi0gICAgNDcyMDQsIDQ3MjEzLCA0NzIyMSwgNDcyMjgsIDQ3MjM3LCA0NzI0NSwgNDcyNTIsIDQ3MjYyLCA0NzI3MSwgNDcyNzgsIAotICAgIDQ3Mjg4LCA0NzI5NywgNDczMDQsIDQ3MzE0LCA0NzMyMywgNDczMzAsIDQ3MzM5LCA0NzM0OCwgNDczNTcsIDQ3MzY2LCAKLSAgICA0NzM4MCwgNDczOTQsIDQ3NDAxLCA0NzQwNiwgNDc0MTEsIDQ3NDE2LCA0NzQyMSwgNDc0MjYsIDQ3NDMxLCA0NzQzNiwgCi0gICAgNDc0NDEsIDQ3NDQ5LCA0NzQ1NywgNDc0NjUsIDQ3NDczLCA0NzQ3OCwgNDc0ODUsIDQ3NDkyLCA0NzQ5OSwgNDc1MDQsIAotICAgIDQ3NTEyLCA0NzUxOSwgNDc1MjcsIDQ3NTMxLCA0NzUzOCwgNDc1NDQsIDQ3NTUxLCA0NzU1NSwgNDc1NjEsIDQ3NTY3LCAKLSAgICA0NzU3MywgNDc1NzcsIDQ3NTgwLCA0NzU4NCwgNDc1ODgsIDQ3NTk1LCA0NzYwMSwgNDc2MDcsIDQ3NjEzLCA0NzYxOSwgCi0gICAgNDc2MzMsIDQ3NjQzLCA0NzY1NywgNDc2NzEsIDQ3Njc3LCA0NzY4NywgNDc3MDEsIDQ3NzA0LCA0NzcwNywgNDc3MTQsIAotICAgIDQ3NzIyLCA0NzcyOCwgNDc3MzMsIDQ3NzQxLCA0Nzc1MywgNDc3NjUsIDQ3NzczLCA0Nzc3NywgNDc3ODEsIDQ3Nzg0LCAKLSAgICA0Nzc4NywgNDc3OTEsIDQ3Nzk1LCA0Nzc5OCwgNDc4MDEsIDQ3ODA2LCA0NzgxMSwgNDc4MTcsIDQ3ODIzLCA0NzgyOCwgCi0gICAgNDc4MzMsIDQ3ODM5LCA0Nzg0NSwgNDc4NTAsIDQ3ODU1LCA0Nzg2MCwgNDc4NjUsIDQ3ODcxLCA0Nzg3NywgNDc4ODIsIAotICAgIDQ3ODg3LCA0Nzg5MywgNDc4OTksIDQ3OTA0LCA0NzkwOSwgNDc5MTIsIDQ3OTE1LCA0NzkyNCwgNDc5MjYsIDQ3OTI4LCAKLSAgICA0NzkzMSwgNDc5MzUsIDQ3OTQxLCA0Nzk0MywgNDc5NDYsIDQ3OTUzLCA0Nzk2MCwgNDc5NjgsIDQ3OTc2LCA0Nzk4NiwgCi0gICAgNDgwMDAsIDQ4MDA1LCA0ODAxMCwgNDgwMTQsIDQ4MDE5LCA0ODAyNywgNDgwMzUsIDQ4MDQ0LCA0ODA1MywgNDgwNjIsIAotICAgIDQ4MDcxLCA0ODA3NiwgNDgwODEsIDQ4MDg3LCA0ODA5MywgNDgwOTksIDQ4MTA1LCA0ODEwOCwgNDgxMTQsIDQ4MTIwLCAKLSAgICA0ODEzMCwgNDgxNDAsIDQ4MTQ4LCA0ODE1NiwgNDgxNjUsIDQ4MTc0LCA0ODE3OCwgNDgxODYsIDQ4MTk0LCA0ODIwMiwgCi0gICAgNDgyMTAsIDQ4MjE5LCA0ODIyOCwgNDgyMzcsIDQ4MjQ2LCA0ODI1MSwgNDgyNTYsIDQ4MjYxLCA0ODI2NiwgNDgyNzEsIAotICAgIDQ4Mjc3LCA0ODI4MywgNDgyODgsIDQ4Mjk0LCA0ODI5NiwgNDgyOTgsIDQ4MzAwLCA0ODMwMiwgNDgzMDUsIDQ4MzA4LCAKLSAgICA0ODMxMCwgNDgzMTIsIDQ4MzE0LCA0ODMxOCwgNDgzMjIsIDQ4MzI0LCA0ODMyNiwgNDgzMjksIDQ4MzMyLCA0ODMzNiwgCi0gICAgNDgzNDIsIDQ4MzQ4LCA0ODM1MCwgNDgzNTcsIDQ4MzYxLCA0ODM2NiwgNDgzNzEsIDQ4MzczLCA0ODM4MywgNDgzODksIAotICAgIDQ4Mzk1LCA0ODQwMSwgNDg0MDcsIDQ4NDEzLCA0ODQxOSwgNDg0MjQsIDQ4NDI3LCA0ODQzMCwgNDg0MzMsIDQ4NDM1LCAKLSAgICA0ODQzNywgNDg0NDEsIDQ4NDQ1LCA0ODQ1MCwgNDg0NTUsIDQ4NDYwLCA0ODQ2MywgNDg0NjcsIDQ4NDcyLCA0ODQ3NSwgCi0gICAgNDg0NzksIDQ4NDg0LCA0ODQ4OSwgNDg0OTQsIDQ4NDk5LCA0ODUwNCwgNDg1MDksIDQ4NTE0LCA0ODUxOSwgNDg1MjQsIAotICAgIDQ4NTI5LCA0ODUzNCwgNDg1MzksIDQ4NTQ1LCA0ODU1MSwgNDg1NTcsIDQ4NTU5LCA0ODU2MiwgNDg1NjQsIDQ4NTY3LCAKLSAgICA0ODU2OSwgNDg1NzEsIDQ4NTczLCA0ODU3NSwgNDg1NzcsIDQ4NTc5LCA0ODU4MSwgNDg1ODMsIDQ4NTg1LCA0ODU4NywgCi0gICAgNDg1ODksIDQ4NTkxLCA0ODU5MywgNDg1OTUsIDQ4NTk3LCA0ODU5OSwgNDg2MDEsIDQ4NjA2LCA0ODYxMSwgNDg2MTYsIAotICAgIDQ4NjIxLCA0ODYyNiwgNDg2MzEsIDQ4NjM2LCA0ODY0MSwgNDg2NDYsIDQ4NjUxLCA0ODY1NiwgNDg2NjEsIDQ4NjY2LCAKLSAgICA0ODY3MSwgNDg2NzYsIDQ4NjgxLCA0ODY4NiwgNDg2OTEsIDQ4Njk2LCA0ODcwMSwgNDg3MDUsIDQ4NzA5LCA0ODcxMywgCi0gICAgNDg3MTksIDQ4NzI1LCA0ODczMCwgNDg3MzUsIDQ4NzQwLCA0ODc0NiwgNDg3NTIsIDQ4NzU3LCA0ODc2NSwgNDg3NzMsIAotICAgIDQ4NzgxLCA0ODc4OSwgNDg3OTcsIDQ4ODA1LCA0ODgxMywgNDg4MjEsIDQ4ODI3LCA0ODgzMiwgNDg4MzcsIDQ4ODQyLCAKLSAgICA0ODg0NSwgNDg4NDksIDQ4ODUzLCA0ODg1NywgNDg4NjEsIDQ4ODY1LCA0ODg2OSwgNDg4NzYsIDQ4ODgzLCA0ODg5MSwgCi0gICAgNDg4OTksIDQ4OTA0LCA0ODkwOSwgNDg5MTYsIDQ4OTIzLCA0ODkzMCwgNDg5MzcsIDQ4OTQwLCA0ODk0MywgNDg5NDgsIAotICAgIDQ4OTUwLCA0ODk1NCwgNDg5NTksIDQ4OTYxLCA0ODk2MywgNDg5NjUsIDQ4OTY3LCA0ODk3MiwgNDg5NzUsIDQ4OTc3LCAKLSAgICA0ODk4MiwgNDg5ODksIDQ4OTk2LCA0ODk5OSwgNDkwMDMsIDQ5MDA4LCA0OTAxMywgNDkwMjEsIDQ5MDI3LCA0OTAzMywgCi0gICAgNDkwNDUsIDQ5MDUyLCA0OTA2MCwgNDkwNjUsIDQ5MDcwLCA0OTA3NiwgNDkwNzksIDQ5MDgyLCA0OTA4NywgNDkwODksIAotICAgIDQ5MDkzLCA0OTA5NSwgNDkwOTcsIDQ5MDk5LCA0OTEwMSwgNDkxMDMsIDQ5MTA1LCA0OTExMCwgNDkxMTIsIDQ5MTE0LCAKLSAgICA0OTExNiwgNDkxMTgsIDQ5MTIyLCA0OTEyNCwgNDkxMjcsIDQ5MTMyLCA0OTEzNywgNDkxNDIsIDQ5MTQ3LCA0OTE1MywgCi0gICAgNDkxNTksIDQ5MTYxLCA0OTE2NCwgNDkxNzEsIDQ5MTc4LCA0OTE4NSwgNDkxOTIsIDQ5MTk2LCA0OTIwMCwgNDkyMDIsIAotICAgIDQ5MjA0LCA0OTIwOCwgNDkyMTQsIDQ5MjE5LCA0OTIyMSwgNDkyMjUsIDQ5MjM0LCA0OTI0MiwgNDkyNTAsIDQ5MjU2LCAKLSAgICA0OTI2MiwgNDkyNjcsIDQ5MjczLCA0OTI3OCwgNDkyODEsIDQ5Mjk1LCA0OTI5OCwgNDkzMDMsIDQ5MzA4LCA0OTMxNCwgCi0gICAgNDkzMjQsIDQ5MzI2LCA0OTMzMiwgNDkzMzgsIDQ5MzQyLCA0OTM0OSwgNDkzNTMsIDQ5MzU1LCA0OTM1NywgNDkzNjEsIAotICAgIDQ5MzY3LCA0OTM3MiwgNDkzNzgsIDQ5MzgwLCA0OTM4NiwgNDkzODgsIDQ5Mzk0LCA0OTM5NiwgNDkzOTgsIDQ5NDAzLCAKLSAgICA0OTQwNSwgNDk0MDksIDQ5NDE0LCA0OTQxNiwgNDk0MjEsIDQ5NDI2LCA0OTQzMCwgNDk0MzcsIDQ5NDQ3LCA0OTQ1MiwgCi0gICAgNDk0NTgsIDQ5NDYxLCA0OTQ2NywgNDk0NzAsIDQ5NDc1LCA0OTQ4MCwgNDk0ODQsIDQ5NDg2LCA0OTQ4OCwgNDk0OTIsIAotICAgIDQ5NDk2LCA0OTUwMCwgNDk1MDQsIDQ5NTA5LCA0OTUxMSwgNDk1MTYsIDQ5NTE5LCA0OTUyMiwgNDk1MjUsIDQ5NTI5LCAKLSAgICA0OTUzMywgNDk1MzgsIDQ5NTQyLCA0OTU0NywgNDk1NTIsIDQ5NTU2LCA0OTU2MSwgNDk1NjcsIDQ5NTcwLCA0OTU3NiwgCi0gICAgNDk1ODEsIDQ5NTg1LCA0OTU5MCwgNDk1OTYsIDQ5NjAyLCA0OTYwOSwgNDk2MTUsIDQ5NjIyLCA0OTYyOSwgNDk2MzEsIAotICAgIDQ5NjM4LCA0OTY0MiwgNDk2NDgsIDQ5NjU0LCA0OTY1OSwgNDk2NjUsIDQ5NjY5LCA0OTY3NCwgNDk2NzcsIDQ5NjgyLCAKLSAgICA0OTY4OCwgNDk2OTUsIDQ5NzAzLCA0OTcxMCwgNDk3MTksIDQ5NzI5LCA0OTczNiwgNDk3NDIsIDQ5NzQ2LCA0OTc1MywgCi0gICAgNDk3NTgsIDQ5NzY3LCA0OTc3MCwgNDk3NzMsIDQ5NzgyLCA0OTc5MiwgNDk3OTksIDQ5ODAxLCA0OTgwNywgNDk4MTIsIAotICAgIDQ5ODE0LCA0OTgxNywgNDk4MjEsIDQ5ODI5LCA0OTgzOCwgNDk4NDEsIDQ5ODQ2LCA0OTg1MSwgNDk4NTksIDQ5ODY3LCAKLSAgICA0OTg3NSwgNDk4ODMsIDQ5ODg5LCA0OTg5NSwgNDk5MDEsIDQ5OTA5LCA0OTkxNCwgNDk5MTcsIDQ5OTIxLCA0OTkyNCwgCi0gICAgNDk5MzYsIDQ5OTQ2LCA0OTk1NywgNDk5NjYsIDQ5OTc3LCA0OTk4NywgNDk5OTYsIDUwMDAyLCA1MDAxMCwgNTAwMTQsIAotICAgIDUwMDIyLCA1MDAyNiwgNTAwMzQsIDUwMDQxLCA1MDA0OCwgNTAwNTcsIDUwMDY2LCA1MDA3NiwgNTAwODYsIDUwMDk2LCAKLSAgICA1MDEwNiwgNTAxMTUsIDUwMTI0LCA1MDEzNCwgNTAxNDQsIDUwMTUzLCA1MDE2MiwgNTAxNjgsIDUwMTc0LCA1MDE4MCwgCi0gICAgNTAxODYsIDUwMTkyLCA1MDE5OCwgNTAyMDUsIDUwMjExLCA1MDIxOCwgNTAyMjUsIDUwMjMxLCA1MDIzNywgNTAyNDMsIAotICAgIDUwMjQ5LCA1MDI1NSwgNTAyNjEsIDUwMjY4LCA1MDI3NCwgNTAyODEsIDUwMjg4LCA1MDI5NSwgNTAzMDIsIDUwMzA5LCAKLSAgICA1MDMxNiwgNTAzMjMsIDUwMzMwLCA1MDMzOCwgNTAzNDUsIDUwMzUzLCA1MDM2MSwgNTAzNjYsIDUwMzY5LCA1MDM3MywgCi0gICAgNTAzNzcsIDUwMzgzLCA1MDM4NiwgNTAzOTEsIDUwMzk3LCA1MDQwMiwgNTA0MDYsIDUwNDExLCA1MDQxNywgNTA0MjQsIAotICAgIDUwNDI3LCA1MDQzNCwgNTA0NDEsIDUwNDQ1LCA1MDQ1MywgNTA0NjEsIDUwNDY2LCA1MDQ3MiwgNTA0NzcsIDUwNDgyLCAKLSAgICA1MDQ4OSwgNTA0OTYsIDUwNTA0LCA1MDUxMiwgNTA1MjEsIDUwNTI1LCA1MDUzNCwgNTA1MzksIDUwNTQzLCA1MDU1MCwgCi0gICAgNTA1NTQsIDUwNTYwLCA1MDU2OCwgNTA1NzMsIDUwNTgwLCA1MDU4NCwgNTA1ODksIDUwNTkzLCA1MDU5OCwgNTA2MDIsIAotICAgIDUwNjA3LCA1MDYxMiwgNTA2MjEsIDUwNjIzLCA1MDYyNiwgNTA2MjksIDUwNjM2LCA1MDY0MywgNTA2NDksIDUwNjU3LCAKLSAgICA1MDY2MywgNTA2NzAsIDUwNjc1LCA1MDY3OCwgNTA2ODMsIDUwNjg4LCA1MDY5MywgNTA3MDEsIDUwNzA1LCA1MDcxMiwgCi0gICAgNTA3MjAsIDUwNzI4LCA1MDczMywgNTA3MzgsIDUwNzQ0LCA1MDc0OSwgNTA3NTQsIDUwNzYwLCA1MDc2NSwgNTA3NjgsIAotICAgIDUwNzcyLCA1MDc3NiwgNTA3ODMsIDUwNzkzLCA1MDc5OCwgNTA4MDcsIDUwODE2LCA1MDgyMiwgNTA4MjgsIDUwODMzLCAKLSAgICA1MDgzOCwgNTA4NDMsIDUwODQ4LCA1MDg1NCwgNTA4NjAsIDUwODY4LCA1MDg3NiwgNTA4ODIsIDUwODg4LCA1MDg5MiwgCi0gICAgNTA4OTYsIDUwOTAzLCA1MDkxMCwgNTA5MTYsIDUwOTE5LCA1MDkyMiwgNTA5MjYsIDUwOTMwLCA1MDkzNCwgNTA5MzksIAotICAgIDUwOTQ1LCA1MDk1MSwgNTA5NTgsIDUwOTY1LCA1MDk3MCwgNTA5NzQsIDUwOTc4LCA1MDk4MiwgNTA5ODYsIDUwOTkwLCAKLSAgICA1MDk5NCwgNTA5OTgsIDUxMDAyLCA1MTAwNiwgNTEwMTAsIDUxMDE0LCA1MTAxOCwgNTEwMjIsIDUxMDI2LCA1MTAzMCwgCi0gICAgNTEwMzQsIDUxMDM4LCA1MTA0MiwgNTEwNDYsIDUxMDUwLCA1MTA1NCwgNTEwNTgsIDUxMDYyLCA1MTA2NiwgNTEwNzAsIAotICAgIDUxMDc0LCA1MTA3OCwgNTEwODIsIDUxMDg2LCA1MTA5MCwgNTEwOTQsIDUxMDk4LCA1MTEwMiwgNTExMDYsIDUxMTEwLCAKLSAgICA1MTExNCwgNTExMTgsIDUxMTIyLCA1MTEyNiwgNTExMzAsIDUxMTM0LCA1MTEzOCwgNTExNDIsIDUxMTQ2LCA1MTE1MCwgCi0gICAgNTExNTQsIDUxMTU4LCA1MTE2MiwgNTExNjYsIDUxMTcwLCA1MTE3NCwgNTExNzgsIDUxMTgyLCA1MTE4NiwgNTExOTAsIAotICAgIDUxMTk0LCA1MTE5OCwgNTEyMDIsIDUxMjA2LCA1MTIxMCwgNTEyMTQsIDUxMjE4LCA1MTIyMiwgNTEyMjYsIDUxMjMwLCAKLSAgICA1MTIzNCwgNTEyMzgsIDUxMjQyLCA1MTI0NiwgNTEyNTAsIDUxMjU0LCA1MTI1OCwgNTEyNjIsIDUxMjY2LCA1MTI3MCwgCi0gICAgNTEyNzQsIDUxMjc4LCA1MTI4MiwgNTEyODYsIDUxMjkwLCA1MTI5NCwgNTEyOTgsIDUxMzAyLCA1MTMwNiwgNTEzMTAsIAotICAgIDUxMzE0LCA1MTMxOCwgNTEzMjIsIDUxMzI2LCA1MTMzMCwgNTEzMzQsIDUxMzM4LCA1MTM0MiwgNTEzNDYsIDUxMzUwLCAKLSAgICA1MTM1NCwgNTEzNTgsIDUxMzYyLCA1MTM2NiwgNTEzNzAsIDUxMzc0LCA1MTM3OCwgNTEzODIsIDUxMzg2LCA1MTM5MCwgCi0gICAgNTEzOTQsIDUxMzk4LCA1MTQwMiwgNTE0MDYsIDUxNDEwLCA1MTQxNCwgNTE0MTgsIDUxNDIyLCA1MTQyNiwgNTE0MzAsIAotICAgIDUxNDM0LCA1MTQzOCwgNTE0NDIsIDUxNDQ2LCA1MTQ1MCwgNTE0NTQsIDUxNDU4LCA1MTQ2MiwgNTE0NjYsIDUxNDcwLCAKLSAgICA1MTQ3NCwgNTE0NzgsIDUxNDgyLCA1MTQ4NiwgNTE0OTAsIDUxNDk0LCA1MTQ5OCwgNTE1MDIsIDUxNTA2LCA1MTUxMCwgCi0gICAgNTE1MTQsIDUxNTE4LCA1MTUyMiwgNTE1MjYsIDUxNTMwLCA1MTUzNCwgNTE1MzgsIDUxNTQyLCA1MTU0NiwgNTE1NTAsIAotICAgIDUxNTU0LCA1MTU1OCwgNTE1NjIsIDUxNTY2LCA1MTU3MCwgNTE1NzQsIDUxNTc4LCA1MTU4MiwgNTE1ODYsIDUxNTkwLCAKLSAgICA1MTU5NCwgNTE1OTgsIDUxNjAyLCA1MTYwNiwgNTE2MTAsIDUxNjE0LCA1MTYxOCwgNTE2MjIsIDUxNjI2LCA1MTYzMCwgCi0gICAgNTE2MzQsIDUxNjM4LCA1MTY0MiwgNTE2NDYsIDUxNjUwLCA1MTY1NCwgNTE2NTgsIDUxNjYyLCA1MTY2NiwgNTE2NzAsIAotICAgIDUxNjc0LCA1MTY3OCwgNTE2ODIsIDUxNjg2LCA1MTY5MCwgNTE2OTQsIDUxNjk4LCA1MTcwMiwgNTE3MDYsIDUxNzEwLCAKLSAgICA1MTcxNCwgNTE3MTgsIDUxNzIyLCA1MTcyNiwgNTE3MzAsIDUxNzM0LCA1MTczOCwgNTE3NDIsIDUxNzQ2LCA1MTc1MCwgCi0gICAgNTE3NTQsIDUxNzU4LCA1MTc2MiwgNTE3NjYsIDUxNzcwLCA1MTc3NCwgNTE3NzgsIDUxNzgyLCA1MTc4NiwgNTE3OTAsIAotICAgIDUxNzk0LCA1MTc5OCwgNTE4MDIsIDUxODA2LCA1MTgxMCwgNTE4MTQsIDUxODE4LCA1MTgyMiwgNTE4MjYsIDUxODMwLCAKLSAgICA1MTgzNCwgNTE4MzgsIDUxODQyLCA1MTg0NiwgNTE4NTAsIDUxODU0LCA1MTg1OCwgNTE4NjIsIDUxODY2LCA1MTg3MCwgCi0gICAgNTE4NzQsIDUxODc4LCA1MTg4MiwgNTE4ODYsIDUxODkwLCA1MTg5NCwgNTE4OTgsIDUxOTAyLCA1MTkwNiwgNTE5MTAsIAotICAgIDUxOTE0LCA1MTkxOCwgNTE5MjIsIDUxOTI2LCA1MTkzMCwgNTE5MzQsIDUxOTM4LCA1MTk0MiwgNTE5NDYsIDUxOTUwLCAKLSAgICA1MTk1NCwgNTE5NTgsIDUxOTYyLCA1MTk2NiwgNTE5NzAsIDUxOTc0LCA1MTk3OCwgNTE5ODIsIDUxOTg2LCA1MTk5MCwgCi0gICAgNTE5OTQsIDUyMDAxLCA1MjAwOSwgNTIwMTUsIDUyMDIxLCA1MjAyOCwgNTIwMzUsIDUyMDQxLCA1MjA0NywgNTIwNTMsIAotICAgIDUyMDU5LCA1MjA2MywgNTIwNjcsIDUyMDcyLCA1MjA3NywgNTIwODMsIDUyMDg5LCA1MjA5NywgNTIxMDQsIDUyMTA5LCAKLSAgICA1MjExNCwgNTIxMjIsIDUyMTMxLCA1MjEzOCwgNTIxNDgsIDUyMTU5LCA1MjE2MiwgNTIxNjUsIDUyMTY5LCA1MjE3MywgCi0gICAgNTIxODAsIDUyMTg3LCA1MjE5OCwgNTIyMDksIDUyMjE4LCA1MjIyNywgNTIyMzMsIDUyMjM5LCA1MjI0NiwgNTIyNTMsIAotICAgIDUyMjYyLCA1MjI3MiwgNTIyODMsIDUyMjkzLCA1MjMwMywgNTIzMTMsIDUyMzI0LCA1MjMzNSwgNTIzNDUsIDUyMzU2LCAKLSAgICA1MjM2NiwgNTIzNzYsIDUyMzg1LCA1MjM5NSwgNTI0MDUsIDUyNDE1LCA1MjQyNSwgNTI0MzIsIDUyNDM5LCA1MjQ0NiwgCi0gICAgNTI0NTMsIDUyNDYzLCA1MjQ3MywgNTI0ODEsIDUyNDg5LCA1MjQ5NiwgNTI1MDMsIDUyNTEwLCA1MjUxNywgNTI1MjQsIAotICAgIDUyNTI5LCA1MjUzNCwgNTI1NDAsIDUyNTQ4LCA1MjU1NywgNTI1NjUsIDUyNTczLCA1MjU4MSwgNTI1ODksIDUyNTk3LCAKLSAgICA1MjYwNSwgNTI2MTMsIDUyNjIxLCA1MjYzMCwgNTI2MzksIDUyNjQ4LCA1MjY1NywgNTI2NjYsIDUyNjc1LCA1MjY4NCwgCi0gICAgNTI2OTMsIDUyNzAyLCA1MjcxMSwgNTI3MjAsIDUyNzI5LCA1MjczOCwgNTI3NDcsIDUyNzU2LCA1Mjc2NSwgNTI3NzksIAotICAgIDUyNzk0LCA1MjgwOCwgNTI4MjMsIDUyODM3LCA1Mjg1MSwgNTI4NjUsIDUyODc5LCA1Mjg4OSwgNTI5MDAsIDUyOTEwLCAKLSAgICA1MjkyMSwgNTI5MzYsIDUyOTUxLCA1Mjk1OSwgNTI5NjUsIDUyOTcyLCA1Mjk3OSwgNTI5ODYsIDUyOTkzLCA1Mjk5OCwgCi0gICAgNTMwMDQsIDUzMDA5LCA1MzAxNCwgNTMwMjAsIDUzMDI1LCA1MzAzMCwgNTMwMzUsIDUzMDQwLCA1MzA0NSwgNTMwNTIsIAotICAgIDUzMDU4LCA1MzA2NiwgNTMwNzEsIDUzMDc2LCA1MzA4MCwgNTMwODQsIDUzMDkyLCA1MzEwMCwgNTMxMDgsIDUzMTE2LCAKLSAgICA1MzEyMywgNTMxMzAsIDUzMTQzLCA1MzE1NiwgNTMxNjksIDUzMTgyLCA1MzE5MCwgNTMxOTgsIDUzMjA0LCA1MzIxMCwgCi0gICAgNTMyMTcsIDUzMjI0LCA1MzIzMSwgNTMyMzgsIDUzMjQyLCA1MzI0NywgNTMyNTUsIDUzMjYzLCA1MzI3MSwgNTMyNzgsIAotICAgIDUzMjgyLCA1MzI5MCwgNTMyOTgsIDUzMzAyLCA1MzMwNiwgNTMzMTEsIDUzMzE4LCA1MzMyNiwgNTMzMzQsIDUzMzUzLCAKLSAgICA1MzM3MiwgNTMzOTEsIDUzNDEwLCA1MzQyOSwgNTM0NDgsIDUzNDY3LCA1MzQ4NiwgNTM0OTIsIDUzNDk5LCA1MzUwOCwgCi0gICAgNTM1MTYsIDUzNTI0LCA1MzUzMCwgNTM1MzMsIDUzNTM2LCA1MzU0MSwgNTM1NDQsIDUzNTY0LCA1MzU3MSwgNTM1NzcsIAotICAgIDUzNTgzLCA1MzU4NywgNTM1OTAsIDUzNTkzLCA1MzU5NiwgNTM2MDgsIDUzNjIyLCA1MzYyOSwgNTM2MzYsIDUzNjM5LCAKLSAgICA1MzY0MywgNTM2NDYsIDUzNjUxLCA1MzY1NiwgNTM2NjEsIDUzNjY3LCA1MzY3NiwgNTM2ODMsIDUzNjkwLCA1MzY5OCwgCi0gICAgNTM3MDUsIDUzNzEyLCA1MzcxNSwgNTM3MjEsIDUzNzI3LCA1MzczMCwgNTM3MzMsIDUzNzM4LCA1Mzc0MywgNTM3NDksIAotICAgIDUzNzU1LCA1Mzc1OSwgNTM3NjQsIDUzNzcxLCA1Mzc3NSwgNTM3ODEsIDUzNzg1LCA1Mzc4OSwgNTM3OTcsIDUzODA5LCAKLSAgICA1MzgxOCwgNTM4MjIsIDUzODI0LCA1MzgzMywgNTM4NDIsIDUzODQ4LCA1Mzg1MSwgNTM4NTcsIDUzODYzLCA1Mzg2OCwgCi0gICAgNTM4NzMsIDUzODc4LCA1Mzg4MywgNTM4ODgsIDUzODkzLCA1Mzg5NSwgNTM5MDEsIDUzOTA2LCA1MzkxNCwgNTM5MTgsIAotICAgIDUzOTI0LCA1MzkyNywgNTM5MzEsIDUzOTM4LCA1Mzk0NSwgNTM5NDcsIDUzOTQ5LCA1Mzk1NSwgNTM5NjEsIDUzOTY3LCAKLSAgICA1Mzk3NiwgNTM5ODUsIDUzOTkyLCA1Mzk5OSwgNTQwMDUsIDU0MDEyLCA1NDAxNywgNTQwMjIsIDU0MDI3LCA1NDAzMywgCi0gICAgNTQwMzksIDU0MDQ0LCA1NDA1MSwgNTQwNTUsIDU0MDU5LCA1NDA3MiwgNTQwODUsIDU0MDk3LCA1NDEwNiwgNTQxMTIsIAotICAgIDU0MTE5LCA1NDEyNCwgNTQxMjksIDU0MTM0LCA1NDEzOSwgNTQxNDQsIDU0MTQ2LCA1NDE1MywgNTQxNjEsIDU0MTY5LCAKLSAgICA1NDE3NywgNTQxODQsIDU0MTkyLCA1NDE5OCwgNTQyMDMsIDU0MjA5LCA1NDIxNSwgNTQyMjEsIDU0MjI4LCA1NDIzNCwgCi0gICAgNTQyNDIsIDU0MjUwLCA1NDI1OCwgNTQyNjYsIDU0Mjc0LCA1NDI4MCwgNTQyODYsIDU0Mjk1LCA1NDI5OSwgNTQzMDgsIAotICAgIDU0MzE3LCA1NDMyNiwgNTQzMzQsIDU0MzM4LCA1NDM0NCwgNTQzNTEsIDU0MzU4LCA1NDM2MiwgNTQzNjgsIDU0Mzc2LCAKLSAgICA1NDM4MiwgNTQzODcsIDU0MzkzLCA1NDM5OCwgNTQ0MDMsIDU0NDEwLCA1NDQxNywgNTQ0MjIsIDU0NDI3LCA1NDQzNSwgCi0gICAgNTQ0NDMsIDU0NDUzLCA1NDQ2MywgNTQ0NzAsIDU0NDc3LCA1NDQ4MSwgNTQ0ODUsIDU0NDk3LCA1NDUwMywgNTQ1MTAsIAotICAgIDU0NTE1LCA1NDUyMCwgNTQ1MjcsIDU0NTM0LCA1NDU0MCwgNTQ1NDYsIDU0NTU2LCA1NDU2MywgNTQ1NzEsIDU0NTc5LCAKLSAgICA1NDU4OCwgNTQ1OTUsIDU0NjAxLCA1NDYwOCwgNTQ2MTQsIDU0NjIyLCA1NDYzMCwgNTQ2MzgsIDU0NjQ2LCA1NDY1MiwgCi0gICAgNTQ2NTcsIDU0NjY3LCA1NDY3OCwgNTQ2ODUsIDU0Njk0LCA1NDcwMCwgNTQ3MDUsIDU0NzEwLCA1NDcyMCwgNTQ3MjcsIAotICAgIDU0NzMzLCA1NDczOSwgNTQ3NDcsIDU0NzUyLCA1NDc1OSwgNTQ3NjYsIDU0Nzc3LCA1NDc4NCwgNTQ3OTEsIDU0Nzk4LCAKLSAgICA1NDgwNSwgNTQ4MTIsIDU0ODIwLCA1NDgyOCwgNTQ4NDEsIDU0ODU0LCA1NDg2NiwgNTQ4NzgsIDU0ODkyLCA1NDkwNiwgCi0gICAgNTQ5MTIsIDU0OTE4LCA1NDkyNywgNTQ5MzYsIDU0OTQzLCA1NDk1MCwgNTQ5NTksIDU0OTY4LCA1NDk3NywgNTQ5ODYsIAotICAgIDU0OTk0LCA1NTAwMiwgNTUwMTIsIDU1MDIyLCA1NTAzNiwgNTUwNTAsIDU1MDU5LCA1NTA2OCwgNTUwODEsIDU1MDk0LCAKLSAgICA1NTEwMywgNTUxMTIsIDU1MTIzLCA1NTEzNCwgNTUxNDAsIDU1MTQ2LCA1NTE1NSwgNTUxNjQsIDU1MTY5LCA1NTE3NCwgCi0gICAgNTUxODIsIDU1MTg4LCA1NTE5NCwgNTUyMDIsIDU1MjEwLCA1NTIyMywgNTUyMzYsIDU1MjQwLCA1NTI0NCwgNTUyNTIsIAotICAgIDU1MjYwLCA1NTI2NywgNTUyNzUsIDU1MjgzLCA1NTI5MiwgNTUzMDEsIDU1MzA3LCA1NTMxMywgNTUzMjAsIDU1MzI3LCAKLSAgICA1NTMzNCwgNTUzNDEsIDU1MzUwLCA1NTM1OSwgNTUzNjIsIDU1MzY1LCA1NTM3MCwgNTUzNzUsIDU1MzgxLCA1NTM4NywgCi0gICAgNTUzOTQsIDU1NDAxLCA1NTQxMiwgNTU0MjMsIDU1NDMwLCA1NTQzNywgNTU0NDUsIDU1NDUzLCA1NTQ2MSwgNTU0NjksIAotICAgIDU1NDc3LCA1NTQ4NSwgNTU0OTEsIDU1NDk3LCA1NTUwMSwgNTU1MDUsIDU1NTEzLCA1NTUyMSwgNTU1MjYsIDU1NTMxLCAKLSAgICA1NTUzNiwgNTU1NDEsIDU1NTQ3LCA1NTU2MSwgNTU1NjgsIDU1NTc1LCA1NTU3OSwgNTU1ODEsIDU1NTgzLCA1NTU4OCwgCi0gICAgNTU1OTMsIDU1NTk4LCA1NTYwMiwgNTU2MTAsIDU1NjE3LCA1NTYyNCwgNTU2MzIsIDU1NjQ0LCA1NTY1MiwgNTU2NjAsIAotICAgIDU1NjcxLCA1NTY3NSwgNTU2NzksIDU1Njg1LCA1NTY5MywgNTU3MDYsIDU1NzEzLCA1NTcyMCwgNTU3MjcsIDU1NzMzLCAKLSAgICA1NTc0MCwgNTU3NDksIDU1NzU4LCA1NTc2NCwgNTU3NzAsIDU1Nzc2LCA1NTc4NiwgNTU3OTYsIDU1ODA0LCA1NTgxMywgCi0gICAgNTU4MTgsIDU1ODIxLCA1NTgyNiwgNTU4MzEsIDU1ODM2LCA1NTg0MiwgNTU4NDgsIDU1ODUyLCA1NTg1NSwgNTU4NTgsIAotICAgIDU1ODYxLCA1NTg2NiwgNTU4NzEsIDU1ODc3LCA1NTg4MywgNTU4ODcsIDU1ODkxLCA1NTg5OCwgNTU5MDUsIDU1OTEyLCAKLSAgICA1NTkxOSwgNTU5MjYsIDU1OTMzLCA1NTk0MywgNTU5NTMsIDU1OTYwLCA1NTk2NywgNTU5NzUsIDU1OTgzLCA1NTk4NywgCi0gICAgNTU5OTIsIDU1OTk3LCA1NjAwMywgNTYwMDksIDU2MDEyLCA1NjAxNSwgNTYwMTgsIDU2MDIxLCA1NjAyNiwgNTYwMzEsIAotICAgIDU2MDM2LCA1NjA0MSwgNTYwNDYsIDU2MDUxLCA1NjA1NSwgNTYwNTksIDU2MDYzLCA1NjA2OCwgNTYwNzMsIDU2MDc3LCAKLSAgICA1NjA4MSwgNTYwODcsIDU2MDkxLCA1NjA5NywgNTYxMDIsIDU2MTA5LCA1NjExNywgNTYxMjQsIDU2MTMyLCA1NjEzOSwgCi0gICAgNTYxNDcsIDU2MTU2LCA1NjE2MywgNTYxNzMsIDU2MTg0LCA1NjE5MCwgNTYxOTksIDU2MjA1LCA1NjIxNCwgNTYyMjMsIAotICAgIDU2MjI5LCA1NjIzNSwgNTYyMzksIDU2MjQzLCA1NjI1MiwgNTYyNjEsIDU2MjY4LCA1NjI3NSwgNTYyODQsIDU2MjkzLCAKLSAgICA1NjI5OSwgNTYzMDUsIDU2MzEyLCA1NjMxNywgNTYzMjEsIDU2MzI1LCA1NjMzMCwgNTYzMzUsIDU2MzQwLCA1NjM0OCwgCi0gICAgNTYzNTYsIDU2MzU5LCA1NjM2MywgNTYzNzIsIDU2MzgyLCA1NjM5MSwgNTY0MDEsIDU2NDEyLCA1NjQyNSwgNTY0MjksIAotICAgIDU2NDMzLCA1NjQzNywgNTY0NDEsIDU2NDQ2LCA1NjQ1MSwgNTY0NTcsIDU2NDYzLCA1NjQ3MCwgNTY0NzcsIDU2NDgzLCAKLSAgICA1NjQ4OSwgNTY0OTUsIDU2NTAxLCA1NjUwOSwgNTY1MTcsIDU2NTI0LCA1NjUzMSwgNTY1MzgsIDAsIDAsIDU2NTQ1LCAKLSAgICA1NjU1NCwgNTY1NjMsIDU2NTczLCA1NjU4MywgNTY1OTIsIDU2NjAxLCA1NjYxMCwgNTY2MTksIDU2NjI1LCA1NjYzMCwgCi0gICAgNTY2MzksIDU2NjQ5LCA1NjY1OCwgNTY2NjgsIDU2Njc1LCA1NjY4MiwgNTY2ODksIDU2Njk2LCA1NjcwMSwgNTY3MDYsIAotICAgIDU2NzExLCA1NjcxNiwgNTY3MjQsIDU2NzMzLCA1Njc0MSwgNTY3NTAsIDU2NzU0LCA1Njc1OCwgNTY3NjIsIDU2NzY2LCAKLSAgICA1Njc3NiwgMCwgMCwgNTY3NzksIDU2Nzg4LCA1Njc5NywgNTY4MDYsIDU2ODE1LCA1NjgyMSwgNTY4MjcsIDU2ODMzLCAKLSAgICA1NjgzOSwgNTY4NDksIDU2ODU5LCA1Njg2OSwgNTY4NzksIDU2ODg5LCA1Njg5OSwgNTY5MDksIDU2OTE5LCA1NjkyNiwgCi0gICAgNTY5MzMsIDU2OTQwLCA1Njk0NywgNTY5NTQsIDU2OTYxLCA1Njk2OCwgNTY5NzUsIDU2OTgxLCA1Njk4NywgNTY5OTMsIAotICAgIDU2OTk5LCA1NzAwNSwgNTcwMTEsIDU3MDE3LCA1NzAyMywgNTcwMzQsIDAsIDAsIDAsIDU3MDQ0LCA1NzA1MSwgNTcwNTQsIAotICAgIDU3MDU4LCA1NzA2MiwgNTcwNjcsIDU3MDcyLCA1NzA3NywgNTcwODAsIDU3MDg5LCA1NzA5OCwgNTcxMDcsIDAsIDU3MTE2LCAKLSAgICA1NzEyMiwgNTcxMjgsIDU3MTM2LCA1NzE0NiwgNTcxNTMsIDU3MTYyLCA1NzE2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcxNzAsIDU3MTc5LCAKLSAgICA1NzE4OCwgNTcxOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MjA2LCAKLSAgICA1NzIxMSwgNTcyMTYsIDU3MjIxLCA1NzIyNiwgNTcyMzEsIDU3MjM2LCA1NzI0MSwgNTcyNDYsIDU3MjUxLCA1NzI1NiwgCi0gICAgNTcyNjIsIDU3MjY2LCA1NzI3MSwgNTcyNzYsIDU3MjgxLCA1NzI4NiwgNTcyOTEsIDU3Mjk2LCA1NzMwMSwgNTczMDYsIAotICAgIDU3MzExLCA1NzMxNiwgNTczMjEsIDU3MzI2LCA1NzMzMSwgNTczMzYsIDU3MzQxLCA1NzM0NiwgNTczNTEsIDU3MzU2LCAKLSAgICA1NzM2MSwgNTczNjYsIDU3MzcxLCA1NzM3NiwgNTczODIsIDU3Mzg3LCA1NzM5MywgNTc0MDIsIDU3NDA3LCA1NzQxNSwgCi0gICAgNTc0MjIsIDU3NDMxLCA1NzQzNiwgNTc0NDEsIDU3NDQ2LCA1NzQ1MiwgMCwgNTc0NTksIDU3NDY0LCA1NzQ2OSwgNTc0NzQsIAotICAgIDU3NDc5LCA1NzQ4NCwgNTc0ODksIDU3NDk0LCA1NzQ5OSwgNTc1MDQsIDU3NTA5LCA1NzUxNSwgNTc1MTksIDU3NTI0LCAKLSAgICA1NzUyOSwgNTc1MzQsIDU3NTM5LCA1NzU0NCwgNTc1NDksIDU3NTU0LCA1NzU1OSwgNTc1NjQsIDU3NTY5LCA1NzU3NCwgCi0gICAgNTc1NzksIDU3NTg0LCA1NzU4OSwgNTc1OTQsIDU3NTk5LCA1NzYwNCwgNTc2MDksIDU3NjE0LCA1NzYxOSwgNTc2MjQsIAotICAgIDU3NjI5LCA1NzYzNSwgNTc2NDAsIDU3NjQ2LCA1NzY1NSwgNTc2NjAsIDU3NjY4LCA1NzY3NSwgNTc2ODQsIDU3Njg5LCAKLSAgICA1NzY5NCwgNTc2OTksIDU3NzA1LCAwLCA1NzcxMiwgNTc3MjAsIDU3NzI4LCA1NzczNywgNTc3NDQsIDU3NzUyLCA1Nzc1OCwgCi0gICAgNTc3NjcsIDU3Nzc1LCA1Nzc4MywgNTc3OTEsIDU3Nzk5LCA1NzgwNywgNTc4MTUsIDU3ODIwLCA1NzgyNywgNTc4MzMsIAotICAgIDU3ODQwLCA1Nzg0OCwgNTc4NTUsIDU3ODYyLCA1Nzg3MCwgNTc4NzYsIDU3ODgyLCA1Nzg4OSwgNTc4OTYsIDU3OTA2LCAKLSAgICA1NzkxNiwgNTc5MjMsIDU3OTMwLCA1NzkzNSwgNTc5NDUsIDU3OTU1LCA1Nzk2MCwgNTc5NjUsIDU3OTcwLCA1Nzk3NSwgCi0gICAgNTc5ODAsIDU3OTg1LCA1Nzk5MCwgNTc5OTUsIDU4MDAwLCA1ODAwNSwgNTgwMTAsIDU4MDE1LCA1ODAyMCwgNTgwMjUsIAotICAgIDU4MDMwLCA1ODAzNSwgNTgwNDAsIDU4MDQ1LCA1ODA1MCwgNTgwNTUsIDU4MDYwLCA1ODA2NSwgNTgwNzAsIDU4MDc1LCAKLSAgICA1ODA4MCwgNTgwODUsIDU4MDkwLCA1ODA5NSwgNTgxMDAsIDU4MTA1LCA1ODEwOSwgNTgxMTMsIDU4MTE4LCA1ODEyMywgCi0gICAgNTgxMjgsIDU4MTMzLCA1ODEzOCwgNTgxNDMsIDU4MTQ4LCA1ODE1MywgNTgxNTgsIDU4MTYzLCA1ODE2OCwgNTgxNzMsIAotICAgIDU4MTc4LCA1ODE4MywgNTgxODgsIDU4MTkzLCA1ODE5OCwgNTgyMDMsIDU4MjEwLCA1ODIxNywgNTgyMjQsIDU4MjMxLCAKLSAgICA1ODIzOCwgNTgyNDUsIDU4MjUyLCA1ODI1OSwgNTgyNjYsIDU4MjczLCA1ODI4MCwgNTgyODcsIDU4Mjk0LCA1ODMwMSwgCi0gICAgNTgzMDYsIDU4MzExLCA1ODMxOCwgNTgzMjUsIDU4MzMyLCA1ODMzOSwgNTgzNDYsIDU4MzUzLCA1ODM2MCwgNTgzNjcsIAotICAgIDU4Mzc0LCA1ODM4MSwgNTgzODgsIDU4Mzk1LCA1ODQwMSwgNTg0MDcsIDU4NDEzLCA1ODQxOSwgNTg0MjYsIDU4NDMzLCAKLSAgICA1ODQ0MCwgNTg0NDcsIDU4NDU0LCA1ODQ2MSwgNTg0NjgsIDU4NDc1LCA1ODQ4MiwgNTg0ODksIDU4NDk3LCA1ODUwNSwgCi0gICAgNTg1MTMsIDU4NTIxLCA1ODUyOSwgNTg1MzcsIDU4NTQ1LCA1ODU1MywgNTg1NTcsIDU4NTYzLCA1ODU2OSwgNTg1NzMsIAotICAgIDU4NTc5LCA1ODU4NSwgNTg1OTEsIDU4NTk4LCA1ODYwNSwgNTg2MTIsIDU4NjE5LCA1ODYyNCwgNTg2MzAsIDU4NjM2LCAKLSAgICA1ODY0MywgMCwgMCwgMCwgMCwgMCwgNTg2NTAsIDU4NjU4LCA1ODY2NywgNTg2NzYsIDU4Njg0LCA1ODY5MCwgNTg2OTUsIAotICAgIDU4NzAwLCA1ODcwNSwgNTg3MTAsIDU4NzE1LCA1ODcyMCwgNTg3MjUsIDU4NzMwLCA1ODczNSwgNTg3NDAsIDU4NzQ1LCAKLSAgICA1ODc1MCwgNTg3NTUsIDU4NzYwLCA1ODc2NSwgNTg3NzAsIDU4Nzc1LCA1ODc4MCwgNTg3ODUsIDU4NzkwLCA1ODc5NSwgCi0gICAgNTg4MDAsIDU4ODA1LCA1ODgxMCwgNTg4MTUsIDU4ODIwLCA1ODgyNSwgNTg4MzAsIDU4ODM1LCA1ODg0MCwgNTg4NDUsIAotICAgIDU4ODUwLCA1ODg1NSwgNTg4NjAsIDU4ODY1LCA1ODg3MCwgNTg4NzUsIDU4ODgwLCA1ODg4NSwgMCwgNTg4OTAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU4ODk1LCAwLCAwLCA1ODkwMCwgNTg5MDQsIDU4OTA5LCA1ODkxNCwgNTg5MTksIDU4OTI0LCA1ODkzMywgCi0gICAgNTg5MzgsIDU4OTQzLCA1ODk0OCwgNTg5NTMsIDU4OTU4LCA1ODk2MywgNTg5NjgsIDU4OTczLCA1ODk4MCwgNTg5ODUsIAotICAgIDU4OTkwLCA1ODk5OSwgNTkwMDYsIDU5MDExLCA1OTAxNiwgNTkwMjEsIDU5MDI4LCA1OTAzMywgNTkwNDAsIDU5MDQ1LCAKLSAgICA1OTA1MCwgNTkwNTcsIDU5MDY0LCA1OTA2OSwgNTkwNzQsIDU5MDc5LCA1OTA4NiwgNTkwOTMsIDU5MDk4LCA1OTEwMywgCi0gICAgNTkxMDgsIDU5MTEzLCA1OTExOCwgNTkxMjUsIDU5MTMyLCA1OTEzNywgNTkxNDIsIDU5MTQ3LCA1OTE1MiwgNTkxNTcsIAotICAgIDU5MTYyLCA1OTE2NywgNTkxNzIsIDU5MTc3LCA1OTE4MiwgNTkxODcsIDU5MTk0LCA1OTE5OSwgNTkyMDQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU5MjA5LCA1OTIxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTkyMjEsIDU5MjI2LCA1OTIzMCwgNTkyMzQsIDU5MjM4LCA1OTI0MiwgNTkyNDYsIDU5MjUwLCA1OTI1NCwgNTkyNTgsIAotICAgIDU5MjYyLCA1OTI2NiwgNTkyNzIsIDU5Mjc2LCA1OTI4MCwgNTkyODQsIDU5Mjg4LCA1OTI5MiwgNTkyOTYsIDU5MzAwLCAKLSAgICA1OTMwNCwgNTkzMDgsIDU5MzEyLCA1OTMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkzMjAsIDU5MzI0LCAKLSAgICA1OTMyOCwgNTkzMzIsIDU5MzM2LCA1OTM0MCwgNTkzNDQsIDAsIDU5MzQ4LCA1OTM1MiwgNTkzNTYsIDU5MzYwLCA1OTM2NCwgCi0gICAgNTkzNjgsIDU5MzcyLCAwLCA1OTM3NiwgNTkzODAsIDU5Mzg0LCA1OTM4OCwgNTkzOTIsIDU5Mzk2LCA1OTQwMCwgMCwgCi0gICAgNTk0MDQsIDU5NDA4LCA1OTQxMiwgNTk0MTYsIDU5NDIwLCA1OTQyNCwgNTk0MjgsIDAsIDU5NDMyLCA1OTQzNiwgNTk0NDAsIAotICAgIDU5NDQ0LCA1OTQ0OCwgNTk0NTIsIDU5NDU2LCAwLCA1OTQ2MCwgNTk0NjQsIDU5NDY4LCA1OTQ3MiwgNTk0NzYsIDU5NDgwLCAKLSAgICA1OTQ4NCwgMCwgNTk0ODgsIDU5NDkyLCA1OTQ5NiwgNTk1MDAsIDU5NTA0LCA1OTUwOCwgNTk1MTIsIDAsIDU5NTE2LCAKLSAgICA1OTUyMCwgNTk1MjQsIDU5NTI4LCA1OTUzMiwgNTk1MzYsIDU5NTQwLCAwLCA1OTU0NCwgNTk1NDksIDU5NTU0LCA1OTU1OSwgCi0gICAgNTk1NjQsIDU5NTY5LCA1OTU3NCwgNTk1NzgsIDU5NTgzLCA1OTU4OCwgNTk1OTMsIDU5NTk3LCA1OTYwMiwgNTk2MDcsIAotICAgIDU5NjEyLCA1OTYxNywgNTk2MjEsIDU5NjI2LCA1OTYzMSwgNTk2MzYsIDU5NjQxLCA1OTY0NiwgNTk2NTEsIDU5NjU1LCAKLSAgICA1OTY2MCwgNTk2NjUsIDU5NjcyLCA1OTY3NywgNTk2ODIsIDU5Njg4LCA1OTY5NSwgNTk3MDIsIDU5NzExLCA1OTcxOCwgCi0gICAgNTk3MjcsIDU5NzMxLCA1OTczNSwgNTk3NDEsIDU5NzQ3LCA1OTc1MywgNTk3NjEsIDU5NzY3LCA1OTc3MSwgNTk3NzUsIAotICAgIDU5Nzc5LCA1OTc4NSwgNTk3OTEsIDU5Nzk1LCA1OTc5NywgNTk4MDEsIDU5ODA3LCA1OTgwOSwgNTk4MTMsIDU5ODE2LCAKLSAgICA1OTgxOSwgNTk4MjUsIDU5ODMwLCA1OTgzNCwgNTk4MzgsIDU5ODQzLCA1OTg0OSwgNTk4NTQsIDU5ODU5LCA1OTg2NCwgCi0gICAgNTk4NjksIDU5ODc2LCA1OTg4MywgNTk4ODgsIDU5ODkzLCA1OTg5OCwgNTk5MDMsIDU5OTA4LCA1OTkxMywgNTk5MTcsIAotICAgIDU5OTIxLCA1OTkyOCwgNTk5MzUsIDU5OTQxLCA1OTk0NSwgNTk5NTAsIDU5OTUzLCA1OTk1NywgNTk5NjQsIDU5OTY4LCAKLSAgICA1OTk3MiwgNTk5NzYsIDU5OTgwLCA1OTk4NiwgNTk5OTIsIDU5OTk2LCA2MDAwMiwgNjAwMDYsIDYwMDEwLCA2MDAxNiwgCi0gICAgNjAwMjEsIDYwMDI2LCA2MDAyOCwgNjAwMzEsIDYwMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MDA0MSwgNjAwNDUsIDYwMDQ5LCA2MDA1NCwgNjAwNTksIDYwMDY0LCA2MDA2OCwgNjAwNzIsIDYwMDc2LCA2MDA4MSwgCi0gICAgNjAwODYsIDYwMDkwLCA2MDA5NCwgNjAwOTgsIDYwMTAyLCA2MDEwNywgNjAxMTIsIDYwMTE3LCA2MDEyMiwgNjAxMjYsIAotICAgIDYwMTMwLCA2MDEzNSwgNjAxNDAsIDYwMTQ1LCA2MDE1MCwgNjAxNTQsIDAsIDYwMTU4LCA2MDE2MiwgNjAxNjYsIDYwMTcwLCAKLSAgICA2MDE3NCwgNjAxNzgsIDYwMTgyLCA2MDE4NywgNjAxOTIsIDYwMTk2LCA2MDIwMSwgNjAyMDYsIDYwMjE1LCA2MDIxOSwgCi0gICAgNjAyMjMsIDYwMjI3LCA2MDIzNCwgNjAyMzgsIDYwMjQzLCA2MDI0OCwgNjAyNTIsIDYwMjU2LCA2MDI2MiwgNjAyNjcsIAotICAgIDYwMjcyLCA2MDI3NywgNjAyODIsIDYwMjg2LCA2MDI5MCwgNjAyOTQsIDYwMjk4LCA2MDMwMiwgNjAzMDcsIDYwMzEyLCAKLSAgICA2MDMxNiwgNjAzMjAsIDYwMzI1LCA2MDMzMCwgNjAzMzUsIDYwMzM5LCA2MDM0MywgNjAzNDgsIDYwMzUzLCA2MDM1OSwgCi0gICAgNjAzNjUsIDYwMzY5LCA2MDM3NSwgNjAzODEsIDYwMzg1LCA2MDM5MSwgNjAzOTcsIDYwNDAyLCA2MDQwNywgNjA0MTEsIAotICAgIDYwNDE3LCA2MDQyMSwgNjA0MjUsIDYwNDMxLCA2MDQzNywgNjA0NDIsIDYwNDQ3LCA2MDQ1MSwgNjA0NTUsIDYwNDYzLCAKLSAgICA2MDQ2OSwgNjA0NzUsIDYwNDgxLCA2MDQ4NiwgNjA0OTEsIDYwNDk2LCA2MDUwMiwgNjA1MDYsIDYwNTEyLCA2MDUxNiwgCi0gICAgNjA1MjAsIDYwNTI2LCA2MDUzMiwgNjA1MzgsIDYwNTQ0LCA2MDU1MCwgNjA1NTYsIDYwNTYyLCA2MDU2OCwgNjA1NzQsIAotICAgIDYwNTgwLCA2MDU4NiwgNjA1OTIsIDYwNTk2LCA2MDYwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjA2MDgsIDYwNjExLCA2MDYxNSwgNjA2MTksIDYwNjIzLCA2MDYyNywgNjA2MzAsIDYwNjMzLCA2MDYzNywgNjA2NDEsIAotICAgIDYwNjQ1LCA2MDY0OSwgNjA2NTIsIDYwNjU3LCA2MDY2MSwgNjA2NjUsIDYwNjY5LCA2MDY3NCwgNjA2NzgsIDYwNjgyLCAKLSAgICA2MDY4NiwgNjA2OTAsIDYwNjk2LCA2MDcwMiwgNjA3MDYsIDYwNzEwLCA2MDcxNCwgNjA3MTgsIDYwNzIyLCA2MDcyNiwgCi0gICAgNjA3MzAsIDYwNzM0LCA2MDczOCwgNjA3NDIsIDYwNzQ2LCA2MDc1MiwgNjA3NTYsIDYwNzYwLCA2MDc2NCwgNjA3NjgsIAotICAgIDYwNzcyLCA2MDc3NiwgNjA3ODAsIDYwNzg0LCA2MDc4OCwgNjA3OTIsIDYwNzk2LCA2MDgwMCwgNjA4MDQsIDYwODA4LCAKLSAgICA2MDgxMiwgNjA4MTYsIDYwODIyLCA2MDgyOCwgNjA4MzMsIDYwODM4LCA2MDg0MiwgNjA4NDYsIDYwODUwLCA2MDg1NCwgCi0gICAgNjA4NTgsIDYwODYyLCA2MDg2NiwgNjA4NzAsIDYwODc0LCA2MDg3OCwgNjA4ODIsIDYwODg2LCA2MDg5MCwgNjA4OTQsIAotICAgIDYwODk4LCA2MDkwMiwgNjA5MDYsIDYwOTEwLCA2MDkxNCwgNjA5MTgsIDYwOTIyLCA2MDkyNiwgNjA5MzAsIDYwOTM0LCAKLSAgICA2MDk0MCwgNjA5NDQsIDYwOTQ4LCA2MDk1MiwgNjA5NTYsIDYwOTYwLCA2MDk2NCwgNjA5NjgsIDYwOTcyLCA2MDk3NywgCi0gICAgNjA5ODQsIDYwOTg4LCA2MDk5MiwgNjA5OTYsIDYxMDAwLCA2MTAwNCwgNjEwMDgsIDYxMDEyLCA2MTAxNiwgNjEwMjAsIAotICAgIDYxMDI0LCA2MTAyOCwgNjEwMzIsIDYxMDM5LCA2MTA0MywgNjEwNDksIDYxMDUzLCA2MTA1NywgNjEwNjEsIDYxMDY1LCAKLSAgICA2MTA2OSwgNjEwNzIsIDYxMDc2LCA2MTA4MCwgNjEwODQsIDYxMDg4LCA2MTA5MiwgNjEwOTYsIDYxMTAwLCA2MTEwNCwgCi0gICAgNjExMDgsIDYxMTEyLCA2MTExNiwgNjExMjAsIDYxMTI0LCA2MTEyOCwgNjExMzIsIDYxMTM2LCA2MTE0MCwgNjExNDQsIAotICAgIDYxMTQ4LCA2MTE1MiwgNjExNTYsIDYxMTYwLCA2MTE2NCwgNjExNjgsIDYxMTcyLCA2MTE3NiwgNjExODAsIDYxMTg0LCAKLSAgICA2MTE4OCwgNjExOTIsIDYxMTk2LCA2MTIwMCwgNjEyMDYsIDYxMjEwLCA2MTIxNCwgNjEyMTgsIDYxMjIyLCA2MTIyNiwgCi0gICAgNjEyMzAsIDYxMjM0LCA2MTIzOCwgNjEyNDIsIDYxMjQ2LCA2MTI1MCwgNjEyNTQsIDYxMjU4LCA2MTI2MiwgNjEyNjYsIAotICAgIDYxMjcwLCA2MTI3NCwgNjEyNzgsIDYxMjgyLCA2MTI4NiwgNjEyOTAsIDYxMjk0LCA2MTI5OCwgNjEzMDIsIDYxMzA2LCAKLSAgICA2MTMxMCwgNjEzMTQsIDYxMzIyLCA2MTMyNiwgNjEzMzAsIDYxMzM0LCA2MTMzOCwgNjEzNDIsIDYxMzQ4LCA2MTM1MiwgCi0gICAgNjEzNTYsIDYxMzYwLCA2MTM2NCwgNjEzNjgsIDYxMzcyLCA2MTM3NiwgNjEzODAsIDYxMzg0LCA2MTM4OCwgNjEzOTIsIAotICAgIDYxMzk2LCA2MTQwMCwgNjE0MDYsIDYxNDEwLCA2MTQxNCwgNjE0MTgsIDYxNDIyLCA2MTQyNiwgNjE0MzAsIDYxNDM0LCAKLSAgICA2MTQzOCwgNjE0NDIsIDYxNDQ2LCA2MTQ1MCwgNjE0NTQsIDYxNDU4LCA2MTQ2MiwgNjE0NjYsIDYxNDcwLCA2MTQ3NCwgCi0gICAgNjE0NzgsIDYxNDgyLCA2MTQ4NiwgNjE0OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNDk0LCA2MTUwMywgNjE1MTEsIDYxNTIyLCA2MTUzMiwgCi0gICAgNjE1NDAsIDYxNTQ5LCA2MTU1OCwgNjE1NjgsIDYxNTgwLCA2MTU5MiwgNjE2MDQsIDAsIDAsIDAsIDAsIDYxNjEwLCAKLSAgICA2MTYxMywgNjE2MTYsIDYxNjIxLCA2MTYyNCwgNjE2MzEsIDYxNjM1LCA2MTYzOSwgNjE2NDMsIDYxNjQ3LCA2MTY1MSwgCi0gICAgNjE2NTYsIDYxNjYxLCA2MTY2NSwgNjE2NjksIDYxNjc0LCA2MTY3OSwgNjE2ODQsIDYxNjg5LCA2MTY5MiwgNjE2OTUsIAotICAgIDYxNzAxLCA2MTcwNywgNjE3MTIsIDYxNzE3LCA2MTcyNCwgNjE3MzEsIDYxNzM1LCA2MTczOSwgNjE3NDMsIDYxNzUxLCAKLSAgICA2MTc1NywgNjE3NjQsIDYxNzY5LCA2MTc3NCwgNjE3NzksIDYxNzg0LCA2MTc4OSwgNjE3OTQsIDYxNzk5LCA2MTgwNSwgCi0gICAgNjE4MTAsIDYxODE2LCA2MTgyMSwgNjE4MjYsIDYxODMxLCA2MTgzNiwgNjE4NDIsIDYxODQ3LCA2MTg1MSwgNjE4NTcsIAotICAgIDYxODY4LCA2MTg3OCwgNjE4OTMsIDYxOTAzLCA2MTkwNywgNjE5MTcsIDYxOTIzLCA2MTkyOSwgNjE5MzUsIDYxOTQwLCAKLSAgICA2MTk0MywgNjE5NDgsIDYxOTUyLCAwLCA2MTk1OCwgNjE5NjIsIDYxOTY1LCA2MTk2OSwgNjE5NzIsIDYxOTc2LCA2MTk3OSwgCi0gICAgNjE5ODMsIDYxOTg2LCA2MTk5MCwgNjE5OTMsIDYxOTk2LCA2MjAwMCwgNjIwMDQsIDYyMDA4LCA2MjAxMiwgNjIwMTYsIAotICAgIDYyMDIwLCA2MjAyNCwgNjIwMjgsIDYyMDMyLCA2MjAzNiwgNjIwNDAsIDYyMDQ0LCA2MjA0OCwgNjIwNTIsIDYyMDU2LCAKLSAgICA2MjA2MCwgNjIwNjQsIDYyMDY4LCA2MjA3MiwgNjIwNzYsIDYyMDgwLCA2MjA4NCwgNjIwODgsIDYyMDkzLCA2MjA5NywgCi0gICAgNjIxMDEsIDYyMTA1LCA2MjEwOSwgNjIxMTIsIDYyMTE2LCA2MjEyMCwgNjIxMjQsIDYyMTI4LCA2MjEzMiwgNjIxMzYsIAotICAgIDYyMTM5LCA2MjE0MywgNjIxNDYsIDYyMTUwLCA2MjE1NCwgNjIxNTgsIDYyMTYyLCA2MjE2NiwgNjIxNzAsIDYyMTc0LCAKLSAgICA2MjE3OCwgNjIxODIsIDYyMTg2LCA2MjE5MCwgNjIxOTQsIDYyMTk3LCA2MjIwMSwgNjIyMDUsIDYyMjA5LCA2MjIxMywgCi0gICAgNjIyMTcsIDYyMjIwLCA2MjIyNSwgNjIyMjksIDYyMjM0LCA2MjIzOCwgNjIyNDIsIDYyMjQ2LCA2MjI1MCwgNjIyNTQsIAotICAgIDYyMjU4LCA2MjI2MywgNjIyNjcsIDYyMjcxLCA2MjI3NSwgNjIyNzksIDYyMjgzLCA2MjI4NywgNjIyOTEsIDAsIDAsIAotICAgIDYyMjk2LCA2MjMwNCwgNjIzMTIsIDYyMzE5LCA2MjMyNiwgNjIzMzAsIDYyMzM2LCA2MjM0MSwgNjIzNDYsIDYyMzUwLCAKLSAgICA2MjM1MywgNjIzNTcsIDYyMzYwLCA2MjM2NCwgNjIzNjcsIDYyMzcxLCA2MjM3NCwgNjIzNzgsIDYyMzgxLCA2MjM4NCwgCi0gICAgNjIzODgsIDYyMzkyLCA2MjM5NiwgNjI0MDAsIDYyNDA0LCA2MjQwOCwgNjI0MTIsIDYyNDE2LCA2MjQyMCwgNjI0MjQsIAotICAgIDYyNDI4LCA2MjQzMiwgNjI0MzYsIDYyNDQwLCA2MjQ0NCwgNjI0NDgsIDYyNDUyLCA2MjQ1NiwgNjI0NjAsIDYyNDY0LCAKLSAgICA2MjQ2OCwgNjI0NzIsIDYyNDc2LCA2MjQ4MSwgNjI0ODUsIDYyNDg5LCA2MjQ5MywgNjI0OTcsIDYyNTAwLCA2MjUwNCwgCi0gICAgNjI1MDgsIDYyNTEyLCA2MjUxNiwgNjI1MjAsIDYyNTI0LCA2MjUyNywgNjI1MzEsIDYyNTM0LCA2MjUzOCwgNjI1NDIsIAotICAgIDYyNTQ2LCA2MjU1MCwgNjI1NTQsIDYyNTU4LCA2MjU2MiwgNjI1NjYsIDYyNTcwLCA2MjU3NCwgNjI1NzgsIDYyNTgyLCAKLSAgICA2MjU4NSwgNjI1ODksIDYyNTkzLCA2MjU5NywgNjI2MDEsIDYyNjA1LCA2MjYwOCwgNjI2MTMsIDYyNjE3LCA2MjYyMiwgCi0gICAgNjI2MjYsIDYyNjMwLCA2MjYzNCwgNjI2MzgsIDYyNjQyLCA2MjY0NiwgNjI2NTEsIDYyNjU1LCA2MjY1OSwgNjI2NjMsIAotICAgIDYyNjY3LCA2MjY3MSwgNjI2NzUsIDYyNjc5LCA2MjY4NCwgNjI2ODgsIDYyNjkyLCA2MjY5NiwgNjI3MDAsIDYyNzA0LCAKLSAgICA2MjcxMSwgNjI3MTUsIDYyNzIxLCAwLCAwLCAwLCAwLCAwLCA2MjcyNiwgNjI3MzEsIDYyNzM2LCA2Mjc0MSwgNjI3NDYsIAotICAgIDYyNzUxLCA2Mjc1NiwgNjI3NjEsIDYyNzY1LCA2Mjc3MCwgNjI3NzUsIDYyNzgwLCA2Mjc4NSwgNjI3OTAsIDYyNzk1LCAKLSAgICA2MjgwMCwgNjI4MDUsIDYyODEwLCA2MjgxNCwgNjI4MTksIDYyODI0LCA2MjgyOCwgNjI4MzIsIDYyODM2LCA2Mjg0MCwgCi0gICAgNjI4NDUsIDYyODUwLCA2Mjg1NSwgNjI4NjAsIDYyODY1LCA2Mjg3MCwgNjI4NzUsIDYyODgwLCA2Mjg4NSwgNjI4OTAsIAotICAgIDYyODk0LCA2Mjg5OCwgNjI5MDMsIDYyOTA4LCA2MjkxMywgNjI5MTgsIDAsIDAsIDAsIDYyOTIzLCA2MjkyNywgNjI5MzEsIAotICAgIDYyOTM1LCA2MjkzOSwgNjI5NDMsIDYyOTQ3LCA2Mjk1MSwgNjI5NTUsIDYyOTU5LCA2Mjk2MywgNjI5NjcsIDYyOTcxLCAKLSAgICA2Mjk3NSwgNjI5NzksIDYyOTgzLCA2Mjk4NywgNjI5OTEsIDYyOTk1LCA2Mjk5OSwgNjMwMDMsIDYzMDA3LCA2MzAxMSwgCi0gICAgNjMwMTUsIDYzMDE5LCA2MzAyMywgNjMwMjcsIDYzMDMxLCA2MzAzNSwgNjMwMzksIDYzMDQzLCA2MzA0NiwgNjMwNTAsIAotICAgIDYzMDUzLCA2MzA1NywgNjMwNjEsIDYzMDY0LCA2MzA2OCwgNjMwNzIsIDYzMDc1LCA2MzA3OSwgNjMwODMsIDYzMDg3LCAKLSAgICA2MzA5MSwgNjMwOTQsIDYzMDk4LCA2MzEwMiwgNjMxMDYsIDYzMTEwLCA2MzExNCwgNjMxMTgsIDYzMTIxLCA2MzEyNCwgCi0gICAgNjMxMjgsIDYzMTMyLCA2MzEzNiwgNjMxNDAsIDYzMTQ0LCA2MzE0OCwgNjMxNTIsIDYzMTU2LCA2MzE2MCwgNjMxNjQsIAotICAgIDYzMTY4LCA2MzE3MiwgNjMxNzYsIDYzMTgwLCA2MzE4NCwgNjMxODgsIDYzMTkyLCA2MzE5NiwgNjMyMDAsIDYzMjA0LCAKLSAgICA2MzIwOCwgNjMyMTIsIDYzMjE2LCA2MzIyMCwgNjMyMjQsIDYzMjI4LCA2MzIzMiwgNjMyMzYsIDYzMjQwLCA2MzI0NCwgCi0gICAgNjMyNDgsIDYzMjUyLCA2MzI1NiwgNjMyNjAsIDYzMjY0LCA2MzI2OCwgNjMyNzIsIDYzMjc2LCA2MzI4MCwgNjMyODQsIAotICAgIDYzMjg4LCAwLCA2MzI5MiwgNjMyOTgsIDYzMzA0LCA2MzMwOSwgNjMzMTQsIDYzMzE5LCA2MzMyNSwgNjMzMzEsIDYzMzM2LCAKLSAgICA2MzM0MiwgNjMzNDgsIDYzMzU0LCA2MzM2MCwgNjMzNjYsIDYzMzcyLCA2MzM3OCwgNjMzODQsIDYzMzg5LCA2MzM5NCwgCi0gICAgNjMzOTksIDYzNDA0LCA2MzQwOSwgNjM0MTQsIDYzNDE5LCA2MzQyNCwgNjM0MjksIDYzNDM0LCA2MzQzOSwgNjM0NDQsIAotICAgIDYzNDQ5LCA2MzQ1NCwgNjM0NTksIDYzNDY0LCA2MzQ2OSwgNjM0NzQsIDYzNDc5LCA2MzQ4NCwgNjM0OTAsIDYzNDk2LCAKLSAgICA2MzUwMiwgNjM1MDgsIDYzNTEzLCA2MzUxOCwgMCwgMCwgMCwgMCwgMCwgNjM1MjMsIDYzNTI4LCA2MzUzMywgNjM1MzgsIAotICAgIDYzNTQzLCA2MzU0OCwgNjM1NTMsIDYzNTU4LCA2MzU2MywgNjM1NjgsIDYzNTczLCA2MzU3OCwgNjM1ODMsIDYzNTg4LCAKLSAgICA2MzU5MywgNjM1OTgsIDYzNjAzLCA2MzYwOCwgNjM2MTIsIDYzNjE3LCA2MzYyMiwgNjM2MjcsIDYzNjMyLCA2MzYzNywgCi0gICAgNjM2NDIsIDYzNjQ3LCA2MzY1MiwgNjM2NTcsIDYzNjYyLCA2MzY2NywgNjM2NzIsIDYzNjc3LCA2MzY4MiwgNjM2ODcsIAotICAgIDYzNjkyLCA2MzY5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM3MDIsIDYzNzA3LCA2MzcxMiwgCi0gICAgNjM3MTcsIDYzNzIxLCA2MzcyNiwgNjM3MzAsIDYzNzM1LCA2Mzc0MCwgNjM3NDUsIDYzNzUwLCA2Mzc1NSwgNjM3NjAsIAotICAgIDYzNzY1LCA2Mzc3MCwgNjM3NzUsIDYzNzgwLCA2Mzc4NCwgNjM3ODgsIDYzNzkyLCA2Mzc5NiwgNjM4MDAsIDYzODA0LCAKLSAgICA2MzgwOCwgNjM4MTIsIDYzODE2LCA2MzgyMCwgNjM4MjQsIDYzODI4LCA2MzgzMiwgNjM4MzYsIDYzODQxLCA2Mzg0NiwgCi0gICAgNjM4NTEsIDYzODU2LCA2Mzg2MSwgNjM4NjYsIDYzODcxLCA2Mzg3NiwgNjM4ODEsIDYzODg2LCA2Mzg5MSwgNjM4OTYsIAotICAgIDYzOTAxLCA2MzkwNiwgNjM5MTEsIDYzOTE3LCAwLCA2MzkyNCwgNjM5MjcsIDYzOTMwLCA2MzkzMywgNjM5MzYsIDYzOTM5LCAKLSAgICA2Mzk0MiwgNjM5NDYsIDYzOTQ5LCA2Mzk1MywgNjM5NTcsIDYzOTYxLCA2Mzk2NSwgNjM5NjksIDYzOTczLCA2Mzk3NywgCi0gICAgNjM5ODEsIDYzOTg1LCA2Mzk4OSwgNjM5OTMsIDYzOTk3LCA2NDAwMSwgNjQwMDUsIDY0MDA5LCA2NDAxMywgNjQwMTcsIAotICAgIDY0MDIxLCA2NDAyNSwgNjQwMjksIDY0MDMzLCA2NDAzNywgNjQwNDEsIDY0MDQ1LCA2NDA0OSwgNjQwNTMsIDY0MDU3LCAKLSAgICA2NDA2MSwgNjQwNjUsIDY0MDY5LCA2NDA3MywgNjQwNzcsIDY0MDg2LCA2NDA5NSwgNjQxMDQsIDY0MTEzLCA2NDEyMiwgCi0gICAgNjQxMzEsIDY0MTQwLCA2NDE0OSwgNjQxNTIsIDY0MTU3LCA2NDE2MiwgNjQxNjcsIDY0MTcyLCA2NDE3NywgNjQxODIsIAotICAgIDY0MTg4LCA2NDE5MywgNjQxOTksIDY0MjAzLCA2NDIwOCwgNjQyMTMsIDY0MjE4LCA2NDIyMywgNjQyMjgsIDY0MjMyLCAKLSAgICA2NDIzNiwgNjQyNDAsIDY0MjQ0LCA2NDI0OCwgNjQyNTIsIDY0MjU2LCA2NDI2MCwgNjQyNjQsIDY0MjY4LCA2NDI3MiwgCi0gICAgNjQyNzYsIDY0MjgwLCA2NDI4NCwgNjQyODksIDY0Mjk0LCA2NDI5OSwgNjQzMDQsIDY0MzA5LCA2NDMxNCwgNjQzMTksIAotICAgIDY0MzI0LCA2NDMyOSwgNjQzMzQsIDY0MzM5LCA2NDM0NCwgNjQzNDksIDY0MzU0LCA2NDM2MCwgNjQzNjYsIDY0MzcxLCAKLSAgICA2NDM3NiwgNjQzNzksIDY0MzgyLCA2NDM4NSwgNjQzODgsIDY0MzkxLCA2NDM5NCwgNjQzOTgsIDY0NDAxLCA2NDQwNSwgCi0gICAgNjQ0MDksIDY0NDEzLCA2NDQxNywgNjQ0MjEsIDY0NDI1LCA2NDQyOSwgNjQ0MzMsIDY0NDM3LCA2NDQ0MSwgNjQ0NDUsIAotICAgIDY0NDQ5LCA2NDQ1MywgNjQ0NTcsIDY0NDYxLCA2NDQ2NSwgNjQ0NjksIDY0NDczLCA2NDQ3NywgNjQ0ODEsIDY0NDg1LCAKLSAgICA2NDQ4OSwgNjQ0OTMsIDY0NDk3LCA2NDUwMSwgNjQ1MDUsIDY0NTA5LCA2NDUxMywgNjQ1MTcsIDY0NTIxLCA2NDUyNSwgCi0gICAgNjQ1MjksIDY0NTMzLCA2NDUzNywgNjQ1NDEsIDY0NTQ1LCA2NDU0OSwgNjQ1NTMsIDY0NTU3LCA2NDU2MSwgNjQ1NjUsIAotICAgIDY0NTcwLCA2NDU3NiwgNjQ1ODEsIDY0NTg3LCA2NDU5MSwgNjQ1OTYsIDY0NjAxLCA2NDYwNiwgNjQ2MTEsIDY0NjE2LCAKLSAgICA2NDYyMSwgNjQ2MjcsIDY0NjMyLCA2NDYzOCwgNjQ2NDIsIDY0NjQ5LCA2NDY1NiwgNjQ2NjMsIDY0NjcwLCA2NDY3NywgCi0gICAgNjQ2ODQsIDY0NjkxLCA2NDY5OCwgNjQ3MDUsIDY0NzEyLCA2NDcxOSwgNjQ3MjYsIDY0NzI5LCA2NDczMiwgNjQ3MzUsIAotICAgIDY0NzQwLCA2NDc0MywgNjQ3NDYsIDY0NzQ5LCA2NDc1MiwgNjQ3NTUsIDY0NzU4LCA2NDc2MiwgNjQ3NjYsIDY0NzcwLCAKLSAgICA2NDc3NCwgNjQ3NzgsIDY0NzgyLCA2NDc4NiwgNjQ3OTAsIDY0Nzk0LCA2NDc5OCwgNjQ4MDIsIDY0ODA2LCA2NDgxMCwgCi0gICAgNjQ4MTMsIDY0ODE3LCA2NDgyMSwgNjQ4MjUsIDY0ODI5LCA2NDgzMywgNjQ4MzYsIDY0ODQwLCA2NDg0NCwgNjQ4NDgsIAotICAgIDY0ODUyLCA2NDg1NSwgNjQ4NTksIDY0ODYzLCA2NDg2NywgNjQ4NzEsIDY0ODc0LCA2NDg3OCwgNjQ4ODIsIDY0ODg2LCAKLSAgICA2NDg5MCwgNjQ4OTQsIDY0ODk4LCA2NDkwMiwgNjQ5MDYsIDY0OTEwLCA2NDkxNCwgMCwgNjQ5MTgsIDY0OTIxLCA2NDkyNCwgCi0gICAgNjQ5MjcsIDY0OTMwLCA2NDkzMywgNjQ5MzYsIDY0OTM5LCA2NDk0MiwgNjQ5NDUsIDY0OTQ4LCA2NDk1MSwgNjQ5NTQsIAotICAgIDY0OTU3LCA2NDk2MCwgNjQ5NjMsIDY0OTY2LCA2NDk2OSwgNjQ5NzIsIDY0OTc1LCA2NDk3OCwgNjQ5ODEsIDY0OTg0LCAKLSAgICA2NDk4NywgNjQ5OTAsIDY0OTkzLCA2NDk5NiwgNjQ5OTksIDY1MDAyLCA2NTAwNSwgNjUwMDgsIDY1MDExLCA2NTAxNCwgCi0gICAgNjUwMTcsIDY1MDIwLCA2NTAyMywgNjUwMjYsIDY1MDI5LCA2NTAzMiwgNjUwMzUsIDY1MDM4LCA2NTA0MSwgNjUwNDQsIAotICAgIDY1MDQ3LCA2NTA1MCwgNjUwNTMsIDY1MDU2LCA2NTA1OSwgNjUwNjIsIDY1MDY1LCA2NTA2OCwgNjUwNzEsIDY1MDc0LCAKLSAgICA2NTA3NywgNjUwODAsIDY1MDgzLCA2NTA4NiwgNjUwODksIDY1MDkyLCA2NTA5NSwgNjUwOTgsIDY1MTAxLCA2NTEwNCwgCi0gICAgNjUxMDcsIDY1MTEwLCA2NTExMywgNjUxMTYsIDY1MTE5LCA2NTEyMiwgNjUxMjUsIDY1MTI4LCA2NTEzMSwgNjUxMzQsIAotICAgIDY1MTM3LCA2NTE0MCwgNjUxNDMsIDY1MTQ2LCA2NTE0OSwgNjUxNTIsIDY1MTU1LCA2NTE1OCwgNjUxNjEsIDY1MTY0LCAKLSAgICA2NTE2NywgNjUxNzAsIDY1MTczLCA2NTE3NiwgNjUxNzksIDY1MTgyLCA2NTE5MSwgNjUxOTksIDY1MjA3LCA2NTIxNSwgCi0gICAgNjUyMjMsIDY1MjMxLCA2NTIzOSwgNjUyNDgsIDY1MjU2LCA2NTI2NSwgNjUyNzQsIDY1MjgzLCA2NTI5MiwgNjUzMDEsIAotICAgIDY1MzEwLCA2NTMxOSwgNjUzMjgsIDY1MzM3LCA2NTM0NiwgNjUzNTUsIDY1MzY0LCA2NTM3MywgNjUzODIsIDY1MzkxLCAKLSAgICA2NTQwMCwgNjU0MDMsIDY1NDA2LCA2NTQwOSwgNjU0MTEsIDY1NDE0LCA2NTQxNywgNjU0MjAsIDY1NDI1LCA2NTQzMCwgCi0gICAgNjU0MzMsIDY1NDQwLCA2NTQ0NywgNjU0NTQsIDY1NDYxLCA2NTQ2NCwgNjU0NjksIDY1NDcyLCA2NTQ3NiwgNjU0NzgsIAotICAgIDY1NDgwLCA2NTQ4MywgNjU0ODYsIDY1NDg5LCA2NTQ5MiwgNjU0OTUsIDY1NDk4LCA2NTUwMSwgNjU1MDYsIDY1NTExLCAKLSAgICA2NTUxNCwgNjU1MTcsIDY1NTIwLCA2NTUyMywgNjU1MjYsIDY1NTI5LCA2NTUzMiwgNjU1MzYsIDY1NTM5LCA2NTU0MiwgCi0gICAgNjU1NDUsIDY1NTQ4LCA2NTU1MSwgNjU1NTYsIDY1NTU5LCA2NTU2MiwgNjU1NjUsIDY1NTcwLCA2NTU3NSwgNjU1ODAsIAotICAgIDY1NTg1LCA2NTU5MCwgNjU1OTUsIDY1NjAwLCA2NTYwNSwgNjU2MTAsIDY1NjE4LCA2NTYyMCwgNjU2MjMsIDY1NjI2LCAKLSAgICA2NTYyOSwgNjU2MzIsIDY1NjM3LCA2NTY0NSwgNjU2NDgsIDY1NjUxLCA2NTY1NSwgNjU2NTgsIDY1NjYxLCA2NTY2NCwgCi0gICAgNjU2NjksIDY1NjcyLCA2NTY3NSwgNjU2ODAsIDY1NjgzLCA2NTY4NiwgNjU2OTEsIDY1Njk0LCA2NTY5NywgNjU3MDIsIAotICAgIDY1NzA3LCA2NTcxMiwgNjU3MTUsIDY1NzE4LCA2NTcyMSwgNjU3MjQsIDY1NzMwLCA2NTczMywgNjU3MzYsIDY1NzM5LCAKLSAgICA2NTc0MSwgNjU3NDQsIDY1NzQ3LCA2NTc1MCwgNjU3NTUsIDY1NzU4LCA2NTc2MSwgNjU3NjQsIDY1NzY3LCA2NTc3MCwgCi0gICAgNjU3NzUsIDY1Nzc4LCA2NTc4MSwgNjU3ODQsIDY1Nzg3LCA2NTc5MCwgNjU3OTMsIDY1Nzk2LCA2NTc5OSwgNjU4MDIsIAotICAgIDY1ODA4LCA2NTgxMywgNjU4MjEsIDY1ODI5LCA2NTgzNywgNjU4NDUsIDY1ODUzLCA2NTg2MSwgNjU4NzAsIDY1ODc4LCAKLSAgICA2NTg4NywgNjU4OTYsIDY1OTA1LCA2NTkxNCwgNjU5MjMsIDY1OTMyLCA2NTk0MSwgNjU5NTAsIDY1OTU5LCA2NTk2OCwgCi0gICAgNjU5NzcsIDY1OTg2LCA2NTk5NSwgNjYwMDQsIDY2MDEzLCA2NjAyMiwgNjYwMzEsIDY2MDQwLCA2NjA0OSwgNjYwNTgsIAotICAgIDY2MDY3LCA2NjA3NiwgNjYwODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDYwNjkzLCA2MDY5NywgNjA3MDEsIDYwNzA2LCA2MDcxMSwgNjA3MTYsIDYwNzIwLCA2MDcyNCwgNjA3MjgsIAorICAgIDYwNzMzLCA2MDczOCwgNjA3NDIsIDYwNzQ2LCA2MDc1MCwgNjA3NTQsIDYwNzU5LCA2MDc2NCwgNjA3NjksIDYwNzc0LCAKKyAgICA2MDc3OCwgNjA3ODIsIDYwNzg3LCA2MDc5MiwgNjA3OTcsIDYwODAyLCA2MDgwNiwgMCwgNjA4MTAsIDYwODE0LCA2MDgxOCwgCisgICAgNjA4MjIsIDYwODI2LCA2MDgzMCwgNjA4MzQsIDYwODM5LCA2MDg0NCwgNjA4NDgsIDYwODUzLCA2MDg1OCwgNjA4NjcsIAorICAgIDYwODcxLCA2MDg3NSwgNjA4NzksIDYwODg2LCA2MDg5MCwgNjA4OTUsIDYwOTAwLCA2MDkwNCwgNjA5MDgsIDYwOTE0LCAKKyAgICA2MDkxOSwgNjA5MjQsIDYwOTI5LCA2MDkzNCwgNjA5MzgsIDYwOTQyLCA2MDk0NiwgNjA5NTAsIDYwOTU0LCA2MDk1OSwgCisgICAgNjA5NjQsIDYwOTY4LCA2MDk3MiwgNjA5NzcsIDYwOTgyLCA2MDk4NywgNjA5OTEsIDYwOTk1LCA2MTAwMCwgNjEwMDUsIAorICAgIDYxMDExLCA2MTAxNywgNjEwMjEsIDYxMDI3LCA2MTAzMywgNjEwMzcsIDYxMDQzLCA2MTA0OSwgNjEwNTQsIDYxMDU5LCAKKyAgICA2MTA2MywgNjEwNjksIDYxMDczLCA2MTA3NywgNjEwODMsIDYxMDg5LCA2MTA5NCwgNjEwOTksIDYxMTAzLCA2MTEwNywgCisgICAgNjExMTUsIDYxMTIxLCA2MTEyNywgNjExMzMsIDYxMTM4LCA2MTE0MywgNjExNDgsIDYxMTU0LCA2MTE1OCwgNjExNjQsIAorICAgIDYxMTY4LCA2MTE3MiwgNjExNzgsIDYxMTg0LCA2MTE5MCwgNjExOTYsIDYxMjAyLCA2MTIwOCwgNjEyMTQsIDYxMjIwLCAKKyAgICA2MTIyNiwgNjEyMzIsIDYxMjM4LCA2MTI0NCwgNjEyNDgsIDYxMjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA2MTI2MCwgNjEyNjMsIDYxMjY3LCA2MTI3MSwgNjEyNzUsIDYxMjc5LCA2MTI4MiwgNjEyODUsIDYxMjg5LCAKKyAgICA2MTI5MywgNjEyOTcsIDYxMzAxLCA2MTMwNCwgNjEzMDksIDYxMzEzLCA2MTMxNywgNjEzMjEsIDYxMzI2LCA2MTMzMCwgCisgICAgNjEzMzQsIDYxMzM4LCA2MTM0MiwgNjEzNDgsIDYxMzU0LCA2MTM1OCwgNjEzNjIsIDYxMzY2LCA2MTM3MCwgNjEzNzQsIAorICAgIDYxMzc4LCA2MTM4MiwgNjEzODYsIDYxMzkwLCA2MTM5NCwgNjEzOTgsIDYxNDA0LCA2MTQwOCwgNjE0MTIsIDYxNDE2LCAKKyAgICA2MTQyMCwgNjE0MjQsIDYxNDI4LCA2MTQzMiwgNjE0MzYsIDYxNDQwLCA2MTQ0NCwgNjE0NDgsIDYxNDUyLCA2MTQ1NiwgCisgICAgNjE0NjAsIDYxNDY0LCA2MTQ2OCwgNjE0NzQsIDYxNDgwLCA2MTQ4NSwgNjE0OTAsIDYxNDk0LCA2MTQ5OCwgNjE1MDIsIAorICAgIDYxNTA2LCA2MTUxMCwgNjE1MTQsIDYxNTE4LCA2MTUyMiwgNjE1MjYsIDYxNTMwLCA2MTUzNCwgNjE1MzgsIDYxNTQyLCAKKyAgICA2MTU0NiwgNjE1NTAsIDYxNTU0LCA2MTU1OCwgNjE1NjIsIDYxNTY2LCA2MTU3MCwgNjE1NzQsIDYxNTc4LCA2MTU4MiwgCisgICAgNjE1ODYsIDYxNTkyLCA2MTU5NiwgNjE2MDAsIDYxNjA0LCA2MTYwOCwgNjE2MTIsIDYxNjE2LCA2MTYyMCwgNjE2MjQsIAorICAgIDYxNjI5LCA2MTYzNiwgNjE2NDAsIDYxNjQ0LCA2MTY0OCwgNjE2NTIsIDYxNjU2LCA2MTY2MCwgNjE2NjQsIDYxNjY4LCAKKyAgICA2MTY3MiwgNjE2NzYsIDYxNjgwLCA2MTY4NCwgNjE2OTEsIDYxNjk1LCA2MTcwMSwgNjE3MDUsIDYxNzA5LCA2MTcxMywgCisgICAgNjE3MTcsIDYxNzIxLCA2MTcyNCwgNjE3MjgsIDYxNzMyLCA2MTczNiwgNjE3NDAsIDYxNzQ0LCA2MTc0OCwgNjE3NTIsIAorICAgIDYxNzU2LCA2MTc2MCwgNjE3NjQsIDYxNzY4LCA2MTc3MiwgNjE3NzYsIDYxNzgwLCA2MTc4NCwgNjE3ODgsIDYxNzkyLCAKKyAgICA2MTc5NiwgNjE4MDAsIDYxODA0LCA2MTgwOCwgNjE4MTIsIDYxODE2LCA2MTgyMCwgNjE4MjQsIDYxODI4LCA2MTgzMiwgCisgICAgNjE4MzYsIDYxODQwLCA2MTg0NCwgNjE4NDgsIDYxODUyLCA2MTg1OCwgNjE4NjIsIDYxODY2LCA2MTg3MCwgNjE4NzQsIAorICAgIDYxODc4LCA2MTg4MiwgNjE4ODYsIDYxODkwLCA2MTg5NCwgNjE4OTgsIDYxOTAyLCA2MTkwNiwgNjE5MTAsIDYxOTE0LCAKKyAgICA2MTkxOCwgNjE5MjIsIDYxOTI2LCA2MTkzMCwgNjE5MzQsIDYxOTM4LCA2MTk0MiwgNjE5NDYsIDYxOTUwLCA2MTk1NCwgCisgICAgNjE5NTgsIDYxOTYyLCA2MTk2NiwgNjE5NzQsIDYxOTc4LCA2MTk4MiwgNjE5ODYsIDYxOTkwLCA2MTk5NCwgNjIwMDAsIAorICAgIDYyMDA0LCA2MjAwOCwgNjIwMTIsIDYyMDE2LCA2MjAyMCwgNjIwMjQsIDYyMDI4LCA2MjAzMiwgNjIwMzYsIDYyMDQwLCAKKyAgICA2MjA0NCwgNjIwNDgsIDYyMDUyLCA2MjA1OCwgNjIwNjIsIDYyMDY2LCA2MjA3MCwgNjIwNzQsIDYyMDc4LCA2MjA4MiwgCisgICAgNjIwODYsIDYyMDkwLCA2MjA5NCwgNjIwOTgsIDYyMTAyLCA2MjEwNiwgNjIxMTAsIDYyMTE0LCA2MjExOCwgNjIxMjIsIAorICAgIDYyMTI2LCA2MjEzMCwgNjIxMzQsIDYyMTM4LCA2MjE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIxNDYsIDYyMTU1LCA2MjE2MywgNjIxNzQsIDYyMTg0LCAKKyAgICA2MjE5MiwgNjIyMDEsIDYyMjEwLCA2MjIyMCwgNjIyMzIsIDYyMjQ0LCA2MjI1NiwgMCwgMCwgMCwgMCwgNjIyNjIsIAorICAgIDYyMjY1LCA2MjI2OCwgNjIyNzMsIDYyMjc2LCA2MjI4MywgNjIyODcsIDYyMjkxLCA2MjI5NSwgNjIyOTksIDYyMzAzLCAKKyAgICA2MjMwOCwgNjIzMTMsIDYyMzE3LCA2MjMyMSwgNjIzMjYsIDYyMzMxLCA2MjMzNiwgNjIzNDEsIDYyMzQ0LCA2MjM0NywgCisgICAgNjIzNTMsIDYyMzU5LCA2MjM2NCwgNjIzNjksIDYyMzc2LCA2MjM4MywgNjIzODcsIDYyMzkxLCA2MjM5NSwgNjI0MDMsIAorICAgIDYyNDA5LCA2MjQxNiwgNjI0MjEsIDYyNDI2LCA2MjQzMSwgNjI0MzYsIDYyNDQxLCA2MjQ0NiwgNjI0NTEsIDYyNDU3LCAKKyAgICA2MjQ2MiwgNjI0NjgsIDYyNDczLCA2MjQ3OCwgNjI0ODMsIDYyNDg4LCA2MjQ5NCwgNjI0OTksIDYyNTAzLCA2MjUwOSwgCisgICAgNjI1MjAsIDYyNTMwLCA2MjU0NSwgNjI1NTUsIDYyNTU5LCA2MjU2OSwgNjI1NzUsIDYyNTgxLCA2MjU4NywgNjI1OTIsIAorICAgIDYyNTk1LCA2MjYwMCwgNjI2MDQsIDAsIDYyNjEwLCA2MjYxNCwgNjI2MTcsIDYyNjIxLCA2MjYyNCwgNjI2MjgsIDYyNjMxLCAKKyAgICA2MjYzNSwgNjI2MzgsIDYyNjQyLCA2MjY0NSwgNjI2NDgsIDYyNjUyLCA2MjY1NiwgNjI2NjAsIDYyNjY0LCA2MjY2OCwgCisgICAgNjI2NzIsIDYyNjc2LCA2MjY4MCwgNjI2ODQsIDYyNjg4LCA2MjY5MiwgNjI2OTYsIDYyNzAwLCA2MjcwNCwgNjI3MDgsIAorICAgIDYyNzEyLCA2MjcxNiwgNjI3MjAsIDYyNzI0LCA2MjcyOCwgNjI3MzIsIDYyNzM2LCA2Mjc0MCwgNjI3NDUsIDYyNzQ5LCAKKyAgICA2Mjc1MywgNjI3NTcsIDYyNzYxLCA2Mjc2NCwgNjI3NjgsIDYyNzcxLCA2Mjc3NSwgNjI3NzksIDYyNzgzLCA2Mjc4NywgCisgICAgNjI3OTAsIDYyNzk0LCA2Mjc5NywgNjI4MDEsIDYyODA1LCA2MjgwOSwgNjI4MTMsIDYyODE3LCA2MjgyMSwgNjI4MjUsIAorICAgIDYyODI5LCA2MjgzMywgNjI4MzcsIDYyODQxLCA2Mjg0NSwgNjI4NDgsIDYyODUyLCA2Mjg1NiwgNjI4NjAsIDYyODY0LCAKKyAgICA2Mjg2OCwgNjI4NzEsIDYyODc2LCA2Mjg4MCwgNjI4ODUsIDYyODg5LCA2Mjg5MywgNjI4OTcsIDYyOTAxLCA2MjkwNSwgCisgICAgNjI5MDksIDYyOTE0LCA2MjkxOCwgNjI5MjIsIDYyOTI2LCA2MjkzMCwgNjI5MzQsIDYyOTM4LCA2Mjk0MiwgMCwgMCwgCisgICAgNjI5NDcsIDYyOTU1LCA2Mjk2MywgNjI5NzAsIDYyOTc3LCA2Mjk4MSwgNjI5ODcsIDYyOTkyLCA2Mjk5NywgNjMwMDEsIAorICAgIDYzMDA0LCA2MzAwOCwgNjMwMTEsIDYzMDE1LCA2MzAxOCwgNjMwMjIsIDYzMDI1LCA2MzAyOSwgNjMwMzIsIDYzMDM1LCAKKyAgICA2MzAzOSwgNjMwNDMsIDYzMDQ3LCA2MzA1MSwgNjMwNTUsIDYzMDU5LCA2MzA2MywgNjMwNjcsIDYzMDcxLCA2MzA3NSwgCisgICAgNjMwNzksIDYzMDgzLCA2MzA4NywgNjMwOTEsIDYzMDk1LCA2MzA5OSwgNjMxMDMsIDYzMTA3LCA2MzExMSwgNjMxMTUsIAorICAgIDYzMTE5LCA2MzEyMywgNjMxMjcsIDYzMTMyLCA2MzEzNiwgNjMxNDAsIDYzMTQ0LCA2MzE0OCwgNjMxNTEsIDYzMTU1LCAKKyAgICA2MzE1OCwgNjMxNjIsIDYzMTY2LCA2MzE3MCwgNjMxNzQsIDYzMTc3LCA2MzE4MSwgNjMxODQsIDYzMTg4LCA2MzE5MiwgCisgICAgNjMxOTYsIDYzMjAwLCA2MzIwNCwgNjMyMDgsIDYzMjEyLCA2MzIxNiwgNjMyMjAsIDYzMjI0LCA2MzIyOCwgNjMyMzIsIAorICAgIDYzMjM1LCA2MzIzOSwgNjMyNDMsIDYzMjQ3LCA2MzI1MSwgNjMyNTUsIDYzMjU4LCA2MzI2MywgNjMyNjcsIDYzMjcyLCAKKyAgICA2MzI3NiwgNjMyODAsIDYzMjg0LCA2MzI4OCwgNjMyOTIsIDYzMjk2LCA2MzMwMSwgNjMzMDUsIDYzMzA5LCA2MzMxMywgCisgICAgNjMzMTcsIDYzMzIxLCA2MzMyNSwgNjMzMjksIDYzMzM0LCA2MzMzOCwgNjMzNDIsIDYzMzQ2LCA2MzM1MCwgNjMzNTQsIAorICAgIDYzMzYxLCA2MzM2NSwgNjMzNzEsIDAsIDAsIDAsIDAsIDAsIDYzMzc2LCA2MzM4MSwgNjMzODYsIDYzMzkxLCA2MzM5NiwgCisgICAgNjM0MDEsIDYzNDA2LCA2MzQxMSwgNjM0MTUsIDYzNDIwLCA2MzQyNSwgNjM0MzAsIDYzNDM1LCA2MzQ0MCwgNjM0NDUsIAorICAgIDYzNDUwLCA2MzQ1NSwgNjM0NjAsIDYzNDY0LCA2MzQ2OSwgNjM0NzQsIDYzNDc5LCA2MzQ4MywgNjM0ODcsIDYzNDkxLCAKKyAgICA2MzQ5NiwgNjM1MDEsIDYzNTA2LCA2MzUxMSwgNjM1MTYsIDYzNTIxLCA2MzUyNiwgNjM1MzEsIDYzNTM2LCA2MzU0MSwgCisgICAgNjM1NDUsIDYzNTQ5LCA2MzU1NCwgNjM1NTksIDYzNTY0LCA2MzU2OSwgMCwgMCwgMCwgNjM1NzQsIDYzNTc4LCA2MzU4MiwgCisgICAgNjM1ODYsIDYzNTkwLCA2MzU5NCwgNjM1OTgsIDYzNjAyLCA2MzYwNiwgNjM2MTAsIDYzNjE0LCA2MzYxOCwgNjM2MjIsIAorICAgIDYzNjI2LCA2MzYzMCwgNjM2MzQsIDYzNjM4LCA2MzY0MiwgNjM2NDYsIDYzNjUwLCA2MzY1NCwgNjM2NTgsIDYzNjYyLCAKKyAgICA2MzY2NiwgNjM2NzAsIDYzNjc0LCA2MzY3OCwgNjM2ODIsIDYzNjg2LCA2MzY5MCwgNjM2OTQsIDYzNjk3LCA2MzcwMSwgCisgICAgNjM3MDQsIDYzNzA4LCA2MzcxMiwgNjM3MTUsIDYzNzE5LCA2MzcyMywgNjM3MjYsIDYzNzMwLCA2MzczNCwgNjM3MzgsIAorICAgIDYzNzQyLCA2Mzc0NSwgNjM3NDksIDYzNzUzLCA2Mzc1NywgNjM3NjEsIDYzNzY1LCA2Mzc2OSwgNjM3NzIsIDYzNzc1LCAKKyAgICA2Mzc3OSwgNjM3ODMsIDYzNzg3LCA2Mzc5MSwgNjM3OTUsIDYzNzk5LCA2MzgwMywgNjM4MDcsIDYzODExLCA2MzgxNSwgCisgICAgNjM4MTksIDYzODIzLCA2MzgyNywgNjM4MzEsIDYzODM1LCA2MzgzOSwgNjM4NDMsIDYzODQ3LCA2Mzg1MSwgNjM4NTUsIAorICAgIDYzODU5LCA2Mzg2MywgNjM4NjcsIDYzODcxLCA2Mzg3NSwgNjM4NzksIDYzODgzLCA2Mzg4NywgNjM4OTEsIDYzODk1LCAKKyAgICA2Mzg5OSwgNjM5MDMsIDYzOTA3LCA2MzkxMSwgNjM5MTUsIDYzOTE5LCA2MzkyMywgNjM5MjcsIDYzOTMxLCA2MzkzNSwgCisgICAgNjM5MzksIDAsIDYzOTQzLCA2Mzk0OSwgNjM5NTUsIDYzOTYwLCA2Mzk2NSwgNjM5NzAsIDYzOTc2LCA2Mzk4MiwgNjM5ODcsIAorICAgIDYzOTkzLCA2Mzk5OSwgNjQwMDUsIDY0MDExLCA2NDAxNywgNjQwMjMsIDY0MDI5LCA2NDAzNSwgNjQwNDAsIDY0MDQ1LCAKKyAgICA2NDA1MCwgNjQwNTUsIDY0MDYwLCA2NDA2NSwgNjQwNzAsIDY0MDc1LCA2NDA4MCwgNjQwODUsIDY0MDkwLCA2NDA5NSwgCisgICAgNjQxMDAsIDY0MTA1LCA2NDExMCwgNjQxMTUsIDY0MTIwLCA2NDEyNSwgNjQxMzAsIDY0MTM1LCA2NDE0MSwgNjQxNDcsIAorICAgIDY0MTUzLCA2NDE1OSwgNjQxNjQsIDY0MTY5LCAwLCAwLCAwLCAwLCAwLCA2NDE3NCwgNjQxNzksIDY0MTg0LCA2NDE4OSwgCisgICAgNjQxOTQsIDY0MTk5LCA2NDIwNCwgNjQyMDksIDY0MjE0LCA2NDIxOSwgNjQyMjQsIDY0MjI5LCA2NDIzNCwgNjQyMzksIAorICAgIDY0MjQ0LCA2NDI0OSwgNjQyNTQsIDY0MjU5LCA2NDI2NCwgNjQyNjksIDY0Mjc0LCA2NDI3OSwgNjQyODQsIDY0Mjg5LCAKKyAgICA2NDI5NCwgNjQyOTksIDY0MzA0LCA2NDMwOSwgNjQzMTQsIDY0MzE5LCA2NDMyNCwgNjQzMjksIDY0MzM0LCA2NDMzOSwgCisgICAgNjQzNDQsIDY0MzQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDM1NCwgNjQzNTksIDY0MzY0LCAKKyAgICA2NDM2OSwgNjQzNzMsIDY0Mzc4LCA2NDM4MiwgNjQzODcsIDY0MzkyLCA2NDM5NywgNjQ0MDIsIDY0NDA3LCA2NDQxMiwgCisgICAgNjQ0MTcsIDY0NDIyLCA2NDQyNywgNjQ0MzIsIDY0NDM2LCA2NDQ0MCwgNjQ0NDQsIDY0NDQ4LCA2NDQ1MiwgNjQ0NTYsIAorICAgIDY0NDYwLCA2NDQ2NCwgNjQ0NjgsIDY0NDcyLCA2NDQ3NiwgNjQ0ODAsIDY0NDg0LCA2NDQ4OCwgNjQ0OTMsIDY0NDk4LCAKKyAgICA2NDUwMywgNjQ1MDgsIDY0NTEzLCA2NDUxOCwgNjQ1MjMsIDY0NTI4LCA2NDUzMywgNjQ1MzgsIDY0NTQzLCA2NDU0OCwgCisgICAgNjQ1NTMsIDY0NTU4LCA2NDU2MywgNjQ1NjksIDAsIDY0NTc2LCA2NDU4MCwgNjQ1ODQsIDY0NTg4LCA2NDU5MiwgNjQ1OTYsIAorICAgIDY0NjAwLCA2NDYwNSwgNjQ2MDksIDY0NjE0LCA2NDYxOSwgNjQ2MjQsIDY0NjI5LCA2NDYzNCwgNjQ2MzksIDY0NjQ0LCAKKyAgICA2NDY0OSwgNjQ2NTQsIDY0NjU5LCA2NDY2NCwgNjQ2NjksIDY0Njc0LCA2NDY3OSwgNjQ2ODQsIDY0Njg5LCA2NDY5NCwgCisgICAgNjQ2OTksIDY0NzA0LCA2NDcwOSwgNjQ3MTQsIDY0NzE5LCA2NDcyNCwgNjQ3MjksIDY0NzM0LCA2NDczOSwgNjQ3NDQsIAorICAgIDY0NzQ5LCA2NDc1NCwgNjQ3NTksIDY0NzY0LCA2NDc2OSwgNjQ3NzgsIDY0Nzg3LCA2NDc5NiwgNjQ4MDUsIDY0ODE0LCAKKyAgICA2NDgyMywgNjQ4MzIsIDY0ODQxLCA2NDg0NCwgNjQ4NDksIDY0ODU0LCA2NDg1OSwgNjQ4NjQsIDY0ODY5LCA2NDg3NCwgCisgICAgNjQ4ODAsIDY0ODg1LCA2NDg5MSwgNjQ4OTUsIDY0OTAwLCA2NDkwNSwgNjQ5MTAsIDY0OTE1LCA2NDkyMCwgNjQ5MjQsIAorICAgIDY0OTI4LCA2NDkzMiwgNjQ5MzYsIDY0OTQwLCA2NDk0NCwgNjQ5NDgsIDY0OTUyLCA2NDk1NiwgNjQ5NjAsIDY0OTY0LCAKKyAgICA2NDk2OCwgNjQ5NzIsIDY0OTc2LCA2NDk4MSwgNjQ5ODYsIDY0OTkxLCA2NDk5NiwgNjUwMDEsIDY1MDA2LCA2NTAxMSwgCisgICAgNjUwMTYsIDY1MDIxLCA2NTAyNiwgNjUwMzEsIDY1MDM2LCA2NTA0MSwgNjUwNDYsIDY1MDUyLCA2NTA1OCwgNjUwNjMsIAorICAgIDY1MDY4LCA2NTA3MiwgNjUwNzYsIDY1MDgwLCA2NTA4NCwgNjUwODgsIDY1MDkyLCA2NTA5NywgNjUxMDEsIDY1MTA2LCAKKyAgICA2NTExMSwgNjUxMTYsIDY1MTIxLCA2NTEyNiwgNjUxMzEsIDY1MTM2LCA2NTE0MSwgNjUxNDYsIDY1MTUxLCA2NTE1NiwgCisgICAgNjUxNjEsIDY1MTY2LCA2NTE3MSwgNjUxNzYsIDY1MTgxLCA2NTE4NiwgNjUxOTEsIDY1MTk2LCA2NTIwMSwgNjUyMDYsIAorICAgIDY1MjExLCA2NTIxNiwgNjUyMjEsIDY1MjI2LCA2NTIzMSwgNjUyMzYsIDY1MjQxLCA2NTI0NiwgNjUyNTEsIDY1MjU2LCAKKyAgICA2NTI2MSwgNjUyNjYsIDY1MjcxLCA2NTI3NiwgNjUyODEsIDY1Mjg2LCA2NTI5MSwgNjUyOTYsIDY1MzAxLCA2NTMwNiwgCisgICAgNjUzMTEsIDY1MzE3LCA2NTMyMiwgNjUzMjgsIDY1MzMyLCA2NTMzNywgNjUzNDIsIDY1MzQ3LCA2NTM1MiwgNjUzNTcsIAorICAgIDY1MzYyLCA2NTM2OCwgNjUzNzMsIDY1Mzc5LCA2NTM4MywgNjUzOTAsIDY1Mzk3LCA2NTQwNCwgNjU0MTEsIDY1NDE4LCAKKyAgICA2NTQyNSwgNjU0MzIsIDY1NDM5LCA2NTQ0NiwgNjU0NTMsIDY1NDYwLCA2NTQ2NywgNjU0NzAsIDY1NDczLCA2NTQ3NiwgCisgICAgNjU0ODEsIDY1NDg0LCA2NTQ4NywgNjU0OTAsIDY1NDkzLCA2NTQ5NiwgNjU0OTksIDY1NTAzLCA2NTUwNywgNjU1MTEsIAorICAgIDY1NTE1LCA2NTUxOSwgNjU1MjMsIDY1NTI3LCA2NTUzMSwgNjU1MzUsIDY1NTM5LCA2NTU0MywgNjU1NDcsIDY1NTUxLCAKKyAgICA2NTU1NCwgNjU1NTcsIDY1NTYxLCA2NTU2NSwgNjU1NjksIDY1NTczLCA2NTU3NiwgNjU1ODAsIDY1NTg0LCA2NTU4OCwgCisgICAgNjU1OTIsIDY1NTk1LCA2NTU5OSwgNjU2MDMsIDY1NjA3LCA2NTYxMSwgNjU2MTQsIDY1NjE4LCA2NTYyMiwgNjU2MjYsIAorICAgIDY1NjMwLCA2NTYzNCwgNjU2MzgsIDY1NjQyLCA2NTY0NiwgNjU2NTAsIDY1NjU0LCAwLCA2NTY1OCwgNjU2NjEsIDY1NjY0LCAKKyAgICA2NTY2NywgNjU2NzAsIDY1NjczLCA2NTY3NiwgNjU2NzksIDY1NjgyLCA2NTY4NSwgNjU2ODgsIDY1NjkxLCA2NTY5NCwgCisgICAgNjU2OTcsIDY1NzAwLCA2NTcwMywgNjU3MDYsIDY1NzA5LCA2NTcxMiwgNjU3MTUsIDY1NzE4LCA2NTcyMSwgNjU3MjQsIAorICAgIDY1NzI3LCA2NTczMCwgNjU3MzMsIDY1NzM2LCA2NTczOSwgNjU3NDIsIDY1NzQ1LCA2NTc0OCwgNjU3NTEsIDY1NzU0LCAKKyAgICA2NTc1NywgNjU3NjAsIDY1NzYzLCA2NTc2NiwgNjU3NjksIDY1NzcyLCA2NTc3NSwgNjU3NzgsIDY1NzgxLCA2NTc4NCwgCisgICAgNjU3ODcsIDY1NzkwLCA2NTc5MywgNjU3OTYsIDY1Nzk5LCA2NTgwMiwgNjU4MDUsIDY1ODA4LCA2NTgxMSwgNjU4MTQsIAorICAgIDY1ODE3LCA2NTgyMCwgNjU4MjMsIDY1ODI2LCA2NTgyOSwgNjU4MzIsIDY1ODM1LCA2NTgzOCwgNjU4NDEsIDY1ODQ0LCAKKyAgICA2NTg0NywgNjU4NTAsIDY1ODUzLCA2NTg1NiwgNjU4NTksIDY1ODYyLCA2NTg2NSwgNjU4NjgsIDY1ODcxLCA2NTg3NCwgCisgICAgNjU4NzcsIDY1ODgwLCA2NTg4MywgNjU4ODYsIDY1ODg5LCA2NTg5MiwgNjU4OTUsIDY1ODk4LCA2NTkwMSwgNjU5MDQsIAorICAgIDY1OTA3LCA2NTkxMCwgNjU5MTMsIDY1OTE2LCA2NTkxOSwgNjU5MjIsIDY1OTMxLCA2NTkzOSwgNjU5NDcsIDY1OTU1LCAKKyAgICA2NTk2MywgNjU5NzEsIDY1OTc5LCA2NTk4OCwgNjU5OTYsIDY2MDA1LCA2NjAxNCwgNjYwMjMsIDY2MDMyLCA2NjA0MSwgCisgICAgNjYwNTAsIDY2MDU5LCA2NjA2OCwgNjYwNzcsIDY2MDg2LCA2NjA5NSwgNjYxMDQsIDY2MTEzLCA2NjEyMiwgNjYxMzEsIAorICAgIDY2MTQwLCA2NjE0MywgNjYxNDYsIDY2MTQ5LCA2NjE1MSwgNjYxNTQsIDY2MTU3LCA2NjE2MCwgNjYxNjUsIDY2MTcwLCAKKyAgICA2NjE3MywgNjYxODAsIDY2MTg3LCA2NjE5NCwgNjYyMDEsIDY2MjA0LCA2NjIwOSwgNjYyMTEsIDY2MjE1LCA2NjIxNywgCisgICAgNjYyMTksIDY2MjIyLCA2NjIyNSwgNjYyMjgsIDY2MjMxLCA2NjIzNCwgNjYyMzcsIDY2MjQwLCA2NjI0NSwgNjYyNTAsIAorICAgIDY2MjUzLCA2NjI1NiwgNjYyNTksIDY2MjYyLCA2NjI2NSwgNjYyNjgsIDY2MjcxLCA2NjI3NSwgNjYyNzgsIDY2MjgxLCAKKyAgICA2NjI4NCwgNjYyODcsIDY2MjkwLCA2NjI5NSwgNjYyOTgsIDY2MzAxLCA2NjMwNCwgNjYzMDksIDY2MzE0LCA2NjMxOSwgCisgICAgNjYzMjQsIDY2MzI5LCA2NjMzNCwgNjYzMzksIDY2MzQ0LCA2NjM1MCwgNjYzNTgsIDY2MzYwLCA2NjM2MywgNjYzNjYsIAorICAgIDY2MzY5LCA2NjM3MiwgNjYzNzgsIDY2Mzg2LCA2NjM4OSwgNjYzOTIsIDY2Mzk3LCA2NjQwMCwgNjY0MDMsIDY2NDA2LCAKKyAgICA2NjQxMSwgNjY0MTQsIDY2NDE3LCA2NjQyMiwgNjY0MjUsIDY2NDI4LCA2NjQzMywgNjY0MzYsIDY2NDM5LCA2NjQ0NCwgCisgICAgNjY0NDksIDY2NDU0LCA2NjQ1NywgNjY0NjAsIDY2NDYzLCA2NjQ2NiwgNjY0NzIsIDY2NDc1LCA2NjQ3OCwgNjY0ODEsIAorICAgIDY2NDgzLCA2NjQ4NiwgNjY0ODksIDY2NDkyLCA2NjQ5NywgNjY1MDAsIDY2NTAzLCA2NjUwNiwgNjY1MDksIDY2NTEyLCAKKyAgICA2NjUxNywgNjY1MjAsIDY2NTIzLCA2NjUyNiwgNjY1MjksIDY2NTMyLCA2NjUzNSwgNjY1MzgsIDY2NTQxLCA2NjU0NCwgCisgICAgNjY1NTAsIDY2NTU1LCA2NjU2MywgNjY1NzEsIDY2NTc5LCA2NjU4NywgNjY1OTUsIDY2NjAzLCA2NjYxMiwgNjY2MjAsIAorICAgIDY2NjI5LCA2NjYzOCwgNjY2NDcsIDY2NjU2LCA2NjY2NSwgNjY2NzQsIDY2NjgzLCA2NjY5MiwgNjY3MDEsIDY2NzEwLCAKKyAgICA2NjcxOSwgNjY3MjgsIDY2NzM3LCA2Njc0NiwgNjY3NTUsIDY2NzY0LCA2Njc3MywgNjY3ODIsIDY2NzkxLCA2NjgwMCwgCisgICAgNjY4MDksIDY2ODE4LCA2NjgyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xNzk5NCwzMDUgKzE5MTEzLDMwNSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY2MDg4LCA2NjA5NywgNjYxMDYsIDY2MTE3LCA2NjEyNCwgNjYxMjksIDY2MTM0LCA2NjE0MSwgNjYxNDgsIDY2MTU0LCAKLSAgICA2NjE1OSwgNjYxNjQsIDY2MTY5LCA2NjE3NCwgNjYxODEsIDY2MTg2LCA2NjE5MSwgNjYxOTYsIDY2MjA3LCA2NjIxMiwgCi0gICAgNjYyMTcsIDY2MjI0LCA2NjIyOSwgNjYyMzYsIDY2MjQxLCA2NjI0NiwgNjYyNTMsIDY2MjYwLCA2NjI2NywgNjYyNzYsIAotICAgIDY2Mjg1LCA2NjI5MCwgNjYyOTUsIDY2MzAwLCA2NjMwNywgNjYzMTIsIDY2MzIyLCA2NjMyOSwgNjYzMzQsIDY2MzM5LCAKLSAgICA2NjM0NCwgNjYzNDksIDY2MzU0LCA2NjM1OSwgNjYzNjgsIDY2Mzc1LCA2NjM4MiwgNjYzODcsIDY2Mzk0LCA2NjM5OSwgCi0gICAgNjY0MDYsIDY2NDE1LCA2NjQyNiwgNjY0MzEsIDY2NDQwLCA2NjQ0NSwgNjY0NTIsIDY2NDYxLCA2NjQ3MCwgNjY0NzUsIAotICAgIDY2NDgwLCA2NjQ4NywgNjY0OTMsIDY2NTAwLCA2NjUwNywgNjY1MTEsIDY2NTE1LCA2NjUxOCwgNjY1MjIsIDY2NTI2LCAKLSAgICA2NjUzMCwgNjY1MzQsIDY2NTM4LCA2NjU0MiwgNjY1NDYsIDY2NTQ5LCA2NjU1MywgNjY1NTcsIDY2NTYxLCA2NjU2NSwgCi0gICAgNjY1NjksIDY2NTczLCA2NjU3NiwgNjY1ODAsIDY2NTg0LCA2NjU4NywgNjY1OTEsIDY2NTk1LCA2NjU5OSwgNjY2MDMsIAotICAgIDY2NjA3LCA2NjYxMSwgNjY2MTUsIDY2NjE5LCA2NjYyMywgNjY2MjcsIDY2NjMxLCA2NjYzNSwgNjY2MzksIDY2NjQzLCAKLSAgICA2NjY0NywgNjY2NTEsIDY2NjU1LCA2NjY1OSwgNjY2NjMsIDY2NjY3LCA2NjY3MSwgNjY2NzUsIDY2Njc5LCA2NjY4MywgCi0gICAgNjY2ODcsIDY2NjkxLCA2NjY5NSwgNjY2OTksIDY2NzAzLCA2NjcwNywgNjY3MTEsIDY2NzE1LCA2NjcxOSwgNjY3MjMsIAotICAgIDY2NzI3LCA2NjczMSwgNjY3MzUsIDY2NzM5LCA2Njc0MywgNjY3NDcsIDY2NzUxLCA2Njc1NSwgNjY3NTksIDY2NzYzLCAKLSAgICA2Njc2NiwgNjY3NzAsIDY2Nzc0LCA2Njc3OCwgNjY3ODIsIDY2Nzg2LCA2Njc5MCwgNjY3OTQsIDY2Nzk4LCA2NjgwMiwgCi0gICAgNjY4MDYsIDY2ODEwLCA2NjgxNCwgNjY4MTgsIDY2ODIyLCA2NjgyNiwgNjY4MzAsIDY2ODM0LCA2NjgzOCwgNjY4NDIsIAotICAgIDY2ODQ2LCA2Njg1MCwgNjY4NTQsIDY2ODU4LCA2Njg2MiwgNjY4NjYsIDY2ODcwLCA2Njg3NCwgNjY4NzgsIDY2ODgyLCAKLSAgICA2Njg4NiwgNjY4OTAsIDY2ODk0LCA2Njg5OCwgNjY5MDIsIDY2OTA2LCA2NjkxMCwgNjY5MTQsIDY2OTE4LCA2NjkyMiwgCi0gICAgNjY5MjYsIDY2OTMwLCA2NjkzNCwgNjY5MzgsIDY2OTQyLCA2Njk0NiwgNjY5NTAsIDY2OTU0LCA2Njk1OCwgNjY5NjIsIAotICAgIDY2OTY2LCA2Njk3MCwgNjY5NzQsIDY2OTc4LCA2Njk4MiwgNjY5ODYsIDY2OTkwLCA2Njk5NCwgNjY5OTgsIDY3MDAyLCAKLSAgICA2NzAwNiwgNjcwMTAsIDY3MDE0LCA2NzAxOCwgNjcwMjIsIDY3MDI2LCA2NzAzMCwgNjcwMzQsIDY3MDM4LCA2NzA0MiwgCi0gICAgNjcwNDYsIDY3MDUwLCA2NzA1NCwgNjcwNTgsIDY3MDYyLCA2NzA2NiwgNjcwNzAsIDY3MDc0LCA2NzA3OCwgNjcwODIsIAotICAgIDY3MDg2LCA2NzA5MCwgNjcwOTQsIDY3MDk4LCA2NzEwMiwgNjcxMDYsIDY3MTEwLCA2NzExNCwgNjcxMTgsIDY3MTIyLCAKLSAgICA2NzEyNiwgNjcxMzAsIDY3MTM0LCA2NzEzOCwgNjcxNDIsIDY3MTQ2LCA2NzE1MCwgNjcxNTQsIDY3MTU4LCA2NzE2MiwgCi0gICAgNjcxNjYsIDY3MTcwLCA2NzE3NCwgNjcxNzgsIDY3MTgyLCA2NzE4NiwgNjcxOTAsIDY3MTk0LCA2NzE5OCwgNjcyMDIsIAotICAgIDY3MjA2LCA2NzIxMCwgNjcyMTQsIDY3MjE4LCA2NzIyMiwgNjcyMjYsIDY3MjMwLCA2NzIzNCwgNjcyMzcsIDY3MjQxLCAKLSAgICA2NzI0NSwgNjcyNDksIDY3MjUzLCA2NzI1NywgNjcyNjEsIDY3MjY1LCA2NzI2OSwgNjcyNzMsIDY3Mjc3LCA2NzI4MSwgCi0gICAgNjcyODUsIDY3Mjg5LCA2NzI5MywgNjcyOTcsIDY3MzAxLCA2NzMwNSwgNjczMDksIDY3MzEzLCA2NzMxNywgNjczMjEsIAotICAgIDY3MzI1LCA2NzMyOSwgNjczMzMsIDY3MzM3LCA2NzM0MSwgNjczNDUsIDY3MzQ5LCA2NzM1MywgNjczNTcsIDY3MzYxLCAKLSAgICA2NzM2NSwgNjczNjksIDY3MzczLCA2NzM3NywgNjczODEsIDY3Mzg1LCA2NzM4OSwgNjczOTMsIDY3Mzk3LCA2NzQwMSwgCi0gICAgNjc0MDUsIDY3NDA5LCA2NzQxMywgNjc0MTcsIDY3NDIxLCA2NzQyNSwgNjc0MjksIDY3NDMzLCA2NzQzNywgNjc0NDEsIAotICAgIDY3NDQ1LCA2NzQ0OSwgNjc0NTMsIDY3NDU3LCA2NzQ2MSwgNjc0NjUsIDY3NDY5LCA2NzQ3MywgNjc0NzcsIDY3NDgxLCAKLSAgICA2NzQ4NSwgNjc0ODksIDY3NDkzLCA2NzQ5NywgNjc1MDEsIDY3NTA1LCA2NzUwOSwgNjc1MTMsIDY3NTE3LCA2NzUyMSwgCi0gICAgNjc1MjUsIDY3NTI5LCA2NzUzMywgNjc1MzcsIDY3NTQxLCA2NzU0NSwgNjc1NDksIDY3NTUzLCA2NzU1NywgNjc1NjEsIAotICAgIDY3NTY1LCA2NzU2OSwgNjc1NzMsIDY3NTc3LCA2NzU4MSwgNjc1ODUsIDY3NTg5LCA2NzU5MywgNjc1OTcsIDY3NjAxLCAKLSAgICA2NzYwNSwgNjc2MDksIDY3NjEzLCA2NzYxNywgNjc2MjEsIDY3NjI1LCA2NzYyOSwgNjc2MzMsIDY3NjM3LCA2NzY0MSwgCi0gICAgNjc2NDUsIDY3NjQ5LCA2NzY1MywgNjc2NTcsIDY3NjYxLCA2NzY2NSwgNjc2NjksIDY3NjczLCA2NzY3NywgNjc2ODEsIAotICAgIDY3Njg1LCA2NzY4OSwgNjc2OTMsIDY3Njk3LCA2NzcwMCwgNjc3MDQsIDY3NzA4LCA2NzcxMiwgNjc3MTYsIDY3NzIwLCAKLSAgICA2NzcyNCwgNjc3MjgsIDY3NzMyLCA2NzczNiwgNjc3NDAsIDY3NzQ0LCA2Nzc0OCwgNjc3NTIsIDY3NzU2LCA2Nzc2MCwgCi0gICAgNjc3NjQsIDY3NzY4LCA2Nzc3MiwgNjc3NzYsIDY3NzgwLCA2Nzc4NCwgNjc3ODgsIDY3NzkyLCA2Nzc5NiwgNjc4MDAsIAotICAgIDY3ODA0LCA2NzgwOCwgNjc4MTIsIDY3ODE2LCA2NzgyMCwgNjc4MjQsIDY3ODI4LCA2NzgzMiwgNjc4MzYsIDY3ODQwLCAKLSAgICA2Nzg0NCwgNjc4NDgsIDY3ODUyLCA2Nzg1NiwgNjc4NjAsIDY3ODY0LCA2Nzg2OCwgNjc4NzIsIDY3ODc2LCA2Nzg4MCwgCi0gICAgNjc4ODQsIDY3ODg4LCA2Nzg5MiwgNjc4OTYsIDY3OTAwLCA2NzkwNCwgNjc5MDgsIDY3OTEyLCA2NzkxNiwgNjc5MjAsIAotICAgIDY3OTI0LCA2NzkyOCwgNjc5MzIsIDY3OTM2LCA2Nzk0MCwgNjc5NDQsIDY3OTQ4LCA2Nzk1MiwgNjc5NTYsIDY3OTYwLCAKLSAgICA2Nzk2NCwgNjc5NjgsIDY3OTcyLCA2Nzk3NiwgNjc5ODAsIDY3OTg0LCA2Nzk4OCwgNjc5OTIsIDY3OTk2LCA2ODAwMCwgCi0gICAgNjgwMDQsIDY4MDA4LCA2ODAxMiwgNjgwMTYsIDY4MDIwLCA2ODAyNCwgNjgwMjgsIDY4MDMyLCA2ODAzNiwgNjgwNDAsIAotICAgIDY4MDQ0LCA2ODA0OCwgNjgwNTIsIDY4MDU2LCA2ODA2MCwgNjgwNjQsIDY4MDY4LCA2ODA3MiwgNjgwNzYsIDY4MDgwLCAKLSAgICA2ODA4NCwgNjgwODgsIDY4MDkyLCA2ODA5NiwgNjgxMDAsIDY4MTA0LCA2ODEwOCwgNjgxMTIsIDY4MTE2LCA2ODEyMCwgCi0gICAgNjgxMjQsIDY4MTI4LCA2ODEzMiwgNjgxMzYsIDY4MTQwLCA2ODE0NCwgNjgxNDgsIDY4MTUyLCA2ODE1NiwgNjgxNjAsIAotICAgIDY4MTY0LCA2ODE2OCwgNjgxNzIsIDY4MTc2LCA2ODE4MCwgNjgxODQsIDY4MTg4LCA2ODE5MiwgNjgxOTYsIDY4MjAwLCAKLSAgICA2ODIwNCwgNjgyMDgsIDY4MjEyLCA2ODIxNiwgNjgyMjAsIDY4MjI0LCA2ODIyOCwgNjgyMzIsIDY4MjM2LCA2ODI0MCwgCi0gICAgNjgyNDQsIDY4MjQ4LCA2ODI1MiwgNjgyNTYsIDY4MjYwLCA2ODI2NCwgNjgyNjgsIDY4MjcyLCA2ODI3NiwgNjgyODAsIAotICAgIDY4Mjg0LCA2ODI4OCwgNjgyOTIsIDY4Mjk2LCA2ODMwMCwgNjgzMDQsIDY4MzA4LCA2ODMxMiwgNjgzMTYsIDY4MzIwLCAKLSAgICA2ODMyNCwgNjgzMjgsIDY4MzMyLCA2ODMzNiwgNjgzNDAsIDY4MzQ0LCA2ODM0OCwgNjgzNTIsIDY4MzU2LCA2ODM2MCwgCi0gICAgNjgzNjQsIDY4MzY4LCA2ODM3MiwgNjgzNzYsIDY4MzgwLCA2ODM4NCwgNjgzODgsIDY4MzkyLCA2ODM5NiwgNjg0MDAsIAotICAgIDY4NDA0LCA2ODQwOCwgNjg0MTIsIDY4NDE2LCA2ODQyMCwgNjg0MjQsIDY4NDI4LCA2ODQzMiwgNjg0MzYsIDY4NDQwLCAKLSAgICA2ODQ0NCwgNjg0NDgsIDY4NDUyLCA2ODQ1NiwgNjg0NjAsIDY4NDY0LCA2ODQ2OCwgNjg0NzIsIDY4NDc2LCA2ODQ4MCwgCi0gICAgNjg0ODQsIDY4NDg4LCA2ODQ5MiwgNjg0OTYsIDY4NTAwLCA2ODUwNCwgNjg1MDgsIDY4NTEyLCA2ODUxNiwgNjg1MjAsIAotICAgIDY4NTI0LCA2ODUyOCwgNjg1MzIsIDY4NTM2LCA2ODU0MCwgNjg1NDQsIDY4NTQ4LCA2ODU1MiwgNjg1NTUsIDY4NTU5LCAKLSAgICA2ODU2MywgNjg1NjcsIDY4NTcxLCA2ODU3NSwgNjg1NzksIDY4NTgzLCA2ODU4NywgNjg1OTEsIDY4NTk1LCA2ODU5OSwgCi0gICAgNjg2MDMsIDY4NjA3LCA2ODYxMSwgNjg2MTUsIDY4NjE5LCA2ODYyMywgNjg2MjcsIDY4NjMxLCA2ODYzNSwgNjg2MzksIAotICAgIDY4NjQzLCA2ODY0NywgNjg2NTEsIDY4NjU1LCA2ODY1OSwgNjg2NjMsIDY4NjY3LCA2ODY3MSwgNjg2NzUsIDY4Njc5LCAKLSAgICA2ODY4MywgNjg2ODcsIDY4NjkxLCA2ODY5NSwgNjg2OTksIDY4NzAzLCA2ODcwNywgNjg3MTEsIDY4NzE1LCA2ODcxOSwgCi0gICAgNjg3MjMsIDY4NzI3LCA2ODczMSwgNjg3MzUsIDY4NzM5LCA2ODc0MywgNjg3NDcsIDY4NzUxLCA2ODc1NSwgNjg3NTksIAotICAgIDY4NzYzLCA2ODc2NywgNjg3NzEsIDY4Nzc1LCA2ODc3OSwgNjg3ODMsIDY4Nzg3LCA2ODc5MSwgNjg3OTUsIDY4Nzk5LCAKLSAgICA2ODgwMywgNjg4MDcsIDY4ODExLCA2ODgxNSwgNjg4MTksIDY4ODIzLCA2ODgyNywgNjg4MzEsIDY4ODM1LCA2ODgzOSwgCi0gICAgNjg4NDMsIDY4ODQ3LCA2ODg1MSwgNjg4NTUsIDY4ODU5LCA2ODg2MywgNjg4NjcsIDY4ODcxLCA2ODg3NSwgNjg4NzksIAotICAgIDY4ODgzLCA2ODg4NywgNjg4OTEsIDY4ODk1LCA2ODg5OSwgNjg5MDMsIDY4OTA3LCA2ODkxMSwgNjg5MTUsIDY4OTE5LCAKLSAgICA2ODkyMywgNjg5MjcsIDY4OTMxLCA2ODkzNSwgNjg5MzksIDY4OTQzLCA2ODk0NywgNjg5NTEsIDY4OTU1LCA2ODk1OSwgCi0gICAgNjg5NjMsIDY4OTY3LCA2ODk3MSwgNjg5NzUsIDY4OTc5LCA2ODk4MywgNjg5ODcsIDY4OTkxLCA2ODk5NSwgNjg5OTksIAotICAgIDY5MDAzLCA2OTAwNywgNjkwMTAsIDY5MDE0LCA2OTAxOCwgNjkwMjIsIDY5MDI2LCA2OTAzMCwgNjkwMzQsIDY5MDM4LCAKLSAgICA2OTA0MiwgNjkwNDYsIDY5MDUwLCA2OTA1NCwgNjkwNTgsIDY5MDYyLCA2OTA2NiwgNjkwNzAsIDY5MDc0LCA2OTA3OCwgCi0gICAgNjkwODIsIDY5MDg2LCA2OTA5MCwgNjkwOTQsIDY5MDk4LCA2OTEwMiwgNjkxMDYsIDY5MTEwLCA2OTExNCwgNjkxMTgsIAotICAgIDY5MTIyLCA2OTEyNiwgNjkxMzAsIDY5MTM0LCA2OTEzOCwgNjkxNDIsIDY5MTQ2LCA2OTE1MCwgNjkxNTQsIDY5MTU4LCAKLSAgICA2OTE2MiwgNjkxNjYsIDY5MTcwLCA2OTE3NCwgNjkxNzgsIDY5MTgyLCA2OTE4NiwgNjkxOTAsIDY5MTk0LCA2OTE5OCwgCi0gICAgNjkyMDIsIDY5MjA2LCA2OTIxMCwgNjkyMTQsIDY5MjE4LCA2OTIyMiwgNjkyMjYsIDY5MjMwLCA2OTIzNCwgNjkyMzgsIAotICAgIDY5MjQyLCA2OTI0NiwgNjkyNTAsIDY5MjU0LCA2OTI1OCwgNjkyNjIsIDY5MjY2LCA2OTI3MCwgNjkyNzQsIDY5Mjc4LCAKLSAgICA2OTI4MiwgNjkyODYsIDY5MjkwLCA2OTI5NCwgNjkyOTgsIDY5MzAyLCA2OTMwNiwgNjkzMTAsIDY5MzE0LCA2OTMxOCwgCi0gICAgNjkzMjIsIDY5MzI2LCA2OTMzMCwgNjkzMzQsIDY5MzM4LCA2OTM0MiwgNjkzNDYsIDY5MzUwLCA2OTM1NCwgNjkzNTgsIAotICAgIDY5MzYyLCA2OTM2NiwgNjkzNzAsIDY5Mzc0LCA2OTM3OCwgNjkzODIsIDY5Mzg2LCA2OTM5MCwgNjkzOTQsIDY5Mzk4LCAKLSAgICA2OTQwMiwgNjk0MDYsIDY5NDEwLCA2OTQxNCwgNjk0MTgsIDY5NDIyLCA2OTQyNiwgNjk0MzAsIDY5NDM0LCA2OTQzOCwgCi0gICAgNjk0NDIsIDY5NDQ2LCA2OTQ1MCwgNjk0NTQsIDY5NDU4LCA2OTQ2MiwgNjk0NjYsIDY5NDcwLCA2OTQ3NCwgNjk0NzgsIAotICAgIDY5NDgyLCA2OTQ4NiwgNjk0OTAsIDY5NDk0LCA2OTQ5OCwgNjk1MDIsIDY5NTA2LCA2OTUxMCwgNjk1MTQsIDY5NTE4LCAKLSAgICA2OTUyMiwgNjk1MjYsIDY5NTMwLCA2OTUzNCwgNjk1MzgsIDY5NTQyLCA2OTU0NiwgNjk1NTAsIDY5NTU0LCA2OTU1OCwgCi0gICAgNjk1NjIsIDY5NTY2LCA2OTU3MCwgNjk1NzQsIDY5NTc4LCA2OTU4MiwgNjk1ODYsIDY5NTkwLCA2OTU5NCwgNjk1OTgsIAotICAgIDY5NjAyLCA2OTYwNiwgNjk2MTAsIDY5NjEzLCA2OTYxNywgNjk2MjEsIDY5NjI1LCA2OTYyOSwgNjk2MzMsIDY5NjM3LCAKLSAgICA2OTY0MSwgNjk2NDUsIDY5NjQ5LCA2OTY1MywgNjk2NTcsIDY5NjYxLCA2OTY2NSwgNjk2NjksIDY5NjczLCA2OTY3NywgCi0gICAgNjk2ODEsIDY5Njg1LCA2OTY4OSwgNjk2OTMsIDY5Njk3LCA2OTcwMSwgNjk3MDUsIDY5NzA5LCA2OTcxMywgNjk3MTcsIAotICAgIDY5NzIxLCA2OTcyNSwgNjk3MjksIDY5NzMzLCA2OTczNywgNjk3NDEsIDY5NzQ1LCA2OTc0OSwgNjk3NTMsIDY5NzU3LCAKLSAgICA2OTc2MSwgNjk3NjUsIDY5NzY5LCA2OTc3MywgNjk3NzcsIDY5NzgxLCA2OTc4NSwgNjk3ODksIDY5NzkzLCA2OTc5NywgCi0gICAgNjk4MDEsIDY5ODA1LCA2OTgwOSwgNjk4MTMsIDY5ODE3LCA2OTgyMSwgNjk4MjUsIDY5ODI5LCA2OTgzMywgNjk4MzcsIAotICAgIDY5ODQxLCA2OTg0NSwgNjk4NDksIDY5ODUzLCA2OTg1NywgNjk4NjEsIDY5ODY1LCA2OTg2OSwgNjk4NzMsIDY5ODc3LCAKLSAgICA2OTg4MSwgNjk4ODUsIDY5ODg5LCA2OTg5MywgNjk4OTcsIDY5OTAxLCA2OTkwNSwgNjk5MDksIDY5OTEzLCA2OTkxNywgCi0gICAgNjk5MjEsIDY5OTI1LCA2OTkyOSwgNjk5MzMsIDY5OTM3LCA2OTk0MSwgNjk5NDUsIDY5OTQ5LCA2OTk1MywgNjk5NTcsIAotICAgIDY5OTYxLCA2OTk2NSwgNjk5NjksIDY5OTczLCA2OTk3NywgNjk5ODEsIDY5OTg1LCA2OTk4OSwgNjk5OTMsIDY5OTk3LCAKLSAgICA3MDAwMSwgNzAwMDUsIDcwMDA5LCA3MDAxMywgNzAwMTcsIDcwMDIxLCA3MDAyNSwgNzAwMjksIDcwMDMzLCA3MDAzNywgCi0gICAgNzAwNDEsIDcwMDQ1LCA3MDA0OSwgNzAwNTMsIDcwMDU3LCA3MDA2MSwgNzAwNjUsIDcwMDY5LCA3MDA3MywgNzAwNzcsIAotICAgIDcwMDgxLCA3MDA4NSwgNzAwODksIDcwMDkzLCA3MDA5NywgNzAxMDEsIDcwMTA1LCA3MDEwOSwgNzAxMTMsIDcwMTE3LCAKLSAgICA3MDEyMSwgNzAxMjUsIDcwMTI5LCA3MDEzMywgNzAxMzcsIDcwMTQxLCA3MDE0NSwgNzAxNDksIDcwMTUzLCA3MDE1NywgCi0gICAgNzAxNjEsIDcwMTY1LCA3MDE2OSwgNzAxNzMsIDcwMTc3LCA3MDE4MSwgNzAxODUsIDcwMTg5LCA3MDE5MywgNzAxOTcsIAotICAgIDcwMjAxLCA3MDIwNSwgNzAyMDksIDcwMjEzLCA3MDIxNywgNzAyMjEsIDcwMjI1LCA3MDIyOSwgNzAyMzMsIDcwMjM3LCAKLSAgICA3MDI0MSwgNzAyNDUsIDcwMjQ5LCA3MDI1MywgNzAyNTcsIDcwMjYxLCA3MDI2NSwgNzAyNjksIDcwMjczLCA3MDI3NywgCi0gICAgNzAyODEsIDcwMjg1LCA3MDI4OSwgNzAyOTMsIDcwMjk3LCA3MDMwMSwgNzAzMDUsIDcwMzA5LCA3MDMxMywgNzAzMTcsIAotICAgIDcwMzIxLCA3MDMyNSwgNzAzMjksIDcwMzMzLCA3MDMzNywgNzAzNDEsIDcwMzQ1LCA3MDM0OSwgNzAzNTMsIDcwMzU3LCAKLSAgICA3MDM2MSwgNzAzNjUsIDcwMzY5LCA3MDM3MywgNzAzNzcsIDcwMzgxLCA3MDM4NSwgNzAzODksIDcwMzkzLCA3MDM5NywgCi0gICAgNzA0MDEsIDcwNDA1LCA3MDQwOSwgNzA0MTMsIDcwNDE3LCA3MDQyMSwgNzA0MjUsIDcwNDI5LCA3MDQzMywgNzA0MzcsIAotICAgIDcwNDQxLCA3MDQ0NSwgNzA0NDksIDcwNDUzLCA3MDQ1NywgNzA0NjEsIDcwNDY1LCA3MDQ2OSwgNzA0NzMsIDcwNDc3LCAKLSAgICA3MDQ4MSwgNzA0ODUsIDcwNDg5LCA3MDQ5MywgNzA0OTcsIDcwNTAxLCA3MDUwNSwgNzA1MDksIDcwNTEzLCA3MDUxNywgCi0gICAgNzA1MjEsIDcwNTI1LCA3MDUyOSwgNzA1MzMsIDcwNTM3LCA3MDU0MSwgNzA1NDUsIDcwNTQ5LCA3MDU1MywgNzA1NTcsIAotICAgIDcwNTYxLCA3MDU2NSwgNzA1NjksIDcwNTczLCA3MDU3NywgNzA1ODEsIDcwNTg1LCA3MDU4OSwgNzA1OTMsIDcwNTk3LCAKLSAgICA3MDYwMSwgNzA2MDUsIDcwNjA5LCA3MDYxMywgNzA2MTcsIDcwNjIxLCA3MDYyNSwgNzA2MjksIDcwNjMzLCA3MDYzNywgCi0gICAgNzA2NDEsIDcwNjQ1LCA3MDY0OSwgNzA2NTMsIDcwNjU3LCA3MDY2MSwgNzA2NjUsIDcwNjY5LCA3MDY3MywgNzA2NzcsIAotICAgIDcwNjgxLCA3MDY4NSwgNzA2ODksIDcwNjkzLCA3MDY5NywgNzA3MDEsIDcwNzA1LCA3MDcwOSwgNzA3MTMsIDcwNzE3LCAKLSAgICA3MDcyMSwgNzA3MjUsIDcwNzI5LCA3MDczMywgNzA3MzcsIDcwNzQxLCA3MDc0NSwgNzA3NDksIDcwNzUzLCA3MDc1NywgCi0gICAgNzA3NjEsIDcwNzY1LCA3MDc2OSwgNzA3NzMsIDcwNzc3LCA3MDc4MSwgNzA3ODUsIDcwNzg5LCA3MDc5MywgNzA3OTcsIAotICAgIDcwODAxLCA3MDgwNSwgNzA4MDksIDcwODEzLCA3MDgxNywgNzA4MjEsIDcwODI1LCA3MDgyOSwgNzA4MzMsIDcwODM3LCAKLSAgICA3MDg0MSwgNzA4NDUsIDcwODQ5LCA3MDg1MywgNzA4NTcsIDcwODYxLCA3MDg2NSwgNzA4NjksIDcwODczLCA3MDg3NywgCi0gICAgNzA4ODEsIDcwODg1LCA3MDg4OSwgNzA4OTMsIDcwODk3LCA3MDkwMSwgNzA5MDUsIDcwOTA5LCA3MDkxMywgNzA5MTcsIAotICAgIDcwOTIxLCA3MDkyNSwgNzA5MjksIDcwOTMzLCA3MDkzNywgNzA5NDEsIDcwOTQ1LCA3MDk0OSwgNzA5NTMsIDcwOTU3LCAKLSAgICA3MDk2MSwgNzA5NjUsIDcwOTY5LCA3MDk3MywgNzA5NzcsIDcwOTgxLCA3MDk4NSwgNzA5ODksIDcwOTkzLCA3MDk5NywgCi0gICAgNzEwMDEsIDcxMDA1LCA3MTAwOSwgNzEwMTMsIDcxMDE3LCA3MTAyMSwgNzEwMjUsIDcxMDI5LCA3MTAzMywgNzEwMzcsIAotICAgIDcxMDQxLCA3MTA0NSwgNzEwNDksIDcxMDUzLCA3MTA1NywgNzEwNjEsIDcxMDY1LCA3MTA2OSwgNzEwNzMsIDcxMDc3LCAKLSAgICA3MTA4MSwgNzEwODUsIDcxMDg5LCA3MTA5MywgNzEwOTcsIDcxMTAxLCA3MTEwNSwgNzExMDksIDcxMTEzLCA3MTExNywgCi0gICAgNzExMjEsIDcxMTI1LCA3MTEyOSwgNzExMzMsIDcxMTM3LCA3MTE0MSwgNzExNDUsIDcxMTQ5LCA3MTE1MywgMCwgMCwgMCwgCi0gICAgNzExNTcsIDcxMTYxLCA3MTE2NSwgNzExNjksIDcxMTczLCA3MTE3NywgNzExODEsIDcxMTg1LCA3MTE4OSwgNzExOTMsIAotICAgIDcxMTk3LCA3MTIwMSwgNzEyMDUsIDcxMjA5LCA3MTIxMywgNzEyMTcsIDcxMjIxLCA3MTIyNSwgNzEyMjksIDcxMjMzLCAKLSAgICA3MTIzNywgNzEyNDEsIDcxMjQ1LCA3MTI0OSwgNzEyNTMsIDcxMjU3LCA3MTI2MSwgNzEyNjUsIDcxMjY5LCA3MTI3MywgCi0gICAgNzEyNzcsIDcxMjgxLCA3MTI4NSwgNzEyODksIDcxMjkzLCA3MTI5NywgNzEzMDEsIDcxMzA1LCA3MTMwOSwgNzEzMTMsIAotICAgIDcxMzE3LCA3MTMyMSwgNzEzMjUsIDcxMzI5LCA3MTMzMywgNzEzMzcsIDcxMzQxLCA3MTM0NSwgNzEzNDksIDcxMzUzLCAKLSAgICA3MTM1NywgNzEzNjEsIDcxMzY1LCA3MTM2OSwgNzEzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxMzc3LCAKLSAgICA3MTM4MiwgNzEzODYsIDcxMzkxLCA3MTM5NiwgNzE0MDEsIDcxNDA2LCA3MTQxMSwgNzE0MTUsIDcxNDIwLCA3MTQyNSwgCi0gICAgNzE0MzAsIDcxNDM1LCA3MTQ0MCwgNzE0NDUsIDcxNDUwLCA3MTQ1NCwgNzE0NTksIDcxNDY0LCA3MTQ2OSwgNzE0NzQsIAotICAgIDcxNDc5LCA3MTQ4NCwgNzE0ODgsIDcxNDkzLCA3MTQ5OCwgNzE1MDMsIDcxNTA4LCA3MTUxMywgNzE1MTcsIDcxNTIyLCAKLSAgICA3MTUyNiwgNzE1MzEsIDcxNTM1LCA3MTU0MCwgNzE1NDQsIDcxNTQ4LCA3MTU1MiwgNzE1NTcsIDcxNTYyLCA3MTU2NywgCi0gICAgNzE1NzUsIDcxNTgzLCA3MTU5MSwgNzE1OTksIDcxNjA3LCA3MTYxNSwgNzE2MjEsIDcxNjI5LCA3MTYzMywgNzE2MzcsIAotICAgIDcxNjQxLCA3MTY0NSwgNzE2NDksIDcxNjUzLCA3MTY1NywgNzE2NjEsIDcxNjY1LCA3MTY2OSwgNzE2NzMsIDcxNjc3LCAKLSAgICA3MTY4MSwgNzE2ODUsIDcxNjg5LCA3MTY5MywgNzE2OTcsIDcxNzAxLCA3MTcwNSwgNzE3MDksIDcxNzEzLCA3MTcxNywgCi0gICAgNzE3MjEsIDcxNzI1LCA3MTcyOSwgNzE3MzMsIDcxNzM3LCA3MTc0MSwgNzE3NDUsIDcxNzQ5LCA3MTc1MywgNzE3NTcsIAotICAgIDcxNzYxLCA3MTc2NSwgNzE3NjksIDcxNzczLCA3MTc3NiwgNzE3ODAsIDcxNzg0LCA3MTc4OCwgNzE3OTIsIDcxNzk2LCAKLSAgICA3MTgwMCwgNzE4MDQsIDcxODA4LCA3MTgxMiwgNzE4MTYsIDcxODIwLCA3MTgyNCwgNzE4MjgsIDcxODMyLCA3MTgzNiwgCi0gICAgNzE4NDAsIDcxODQ0LCA3MTg0OCwgNzE4NTIsIDcxODU2LCA3MTg2MCwgNzE4NjQsIDcxODY4LCA3MTg3MiwgNzE4NzYsIAotICAgIDcxODgwLCA3MTg4NCwgNzE4ODgsIDcxODkyLCA3MTg5NiwgNzE5MDAsIDcxOTA0LCA3MTkwOCwgNzE5MTIsIDcxOTE2LCAKLSAgICA3MTkyMCwgNzE5MjMsIDcxOTI3LCA3MTkzMSwgNzE5MzQsIDcxOTM4LCA3MTk0MiwgNzE5NDYsIDcxOTQ5LCA3MTk1MywgCi0gICAgNzE5NTcsIDcxOTYxLCA3MTk2NSwgNzE5NjksIDcxOTczLCA3MTk3NywgNzE5ODEsIDcxOTg1LCA3MTk4OSwgNzE5OTMsIAotICAgIDcxOTk3LCA3MjAwMSwgNzIwMDUsIDcyMDA5LCA3MjAxMywgNzIwMTcsIDcyMDIxLCA3MjAyNSwgNzIwMjksIDcyMDMzLCAKLSAgICA3MjAzNywgNzIwNDEsIDcyMDQ1LCA3MjA0OCwgNzIwNTEsIDcyMDU1LCA3MjA1OSwgNzIwNjMsIDcyMDY2LCA3MjA3MCwgCi0gICAgNzIwNzQsIDcyMDc4LCA3MjA4MiwgNzIwODYsIDcyMDkwLCA3MjA5NCwgNzIwOTgsIDcyMTAyLCA3MjEwNiwgNzIxMTAsIAotICAgIDcyMTE0LCA3MjExOCwgNzIxMjIsIDcyMTI2LCA3MjEzMCwgNzIxMzQsIDcyMTM4LCA3MjE0MiwgNzIxNDYsIDcyMTUwLCAKLSAgICA3MjE1NCwgNzIxNTgsIDcyMTYyLCA3MjE2NiwgNzIxNzAsIDcyMTc0LCA3MjE3OCwgNzIxODIsIDcyMTg2LCA3MjE5MCwgCi0gICAgNzIxOTQsIDcyMTk4LCA3MjIwMiwgNzIyMDYsIDcyMjEwLCA3MjIxNCwgNzIyMTgsIDcyMjIxLCA3MjIyNSwgNzIyMjksIAotICAgIDcyMjMzLCA3MjIzNywgNzIyNDEsIDcyMjQ1LCA3MjI0OSwgNzIyNTMsIDcyMjU3LCA3MjI2MSwgNzIyNjUsIDcyMjY5LCAKLSAgICA3MjI3MywgNzIyNzcsIDcyMjgxLCA3MjI4NSwgNzIyODksIDcyMjkzLCA3MjI5NywgNzIzMDEsIDcyMzA1LCA3MjMwOSwgCi0gICAgNzIzMTMsIDcyMzE3LCA3MjMyMSwgNzIzMjUsIDcyMzI5LCA3MjMzMywgNzIzMzcsIDcyMzQxLCA3MjM0NSwgNzIzNDksIAotICAgIDcyMzUzLCA3MjM1NywgNzIzNjEsIDcyMzY1LCA3MjM2OCwgNzIzNzIsIDcyMzc2LCA3MjM4MCwgNzIzODQsIDcyMzg4LCAKLSAgICA3MjM5MiwgNzIzOTYsIDcyNDAwLCA3MjQwNCwgNzI0MDgsIDcyNDEyLCA3MjQxNiwgNzI0MjAsIDcyNDI0LCA3MjQyOCwgCi0gICAgNzI0MzIsIDcyNDM1LCA3MjQzOSwgNzI0NDMsIDcyNDQ3LCA3MjQ1MSwgNzI0NTUsIDcyNDU5LCA3MjQ2MywgNzI0NjcsIAotICAgIDcyNDcxLCA3MjQ3NSwgNzI0NzksIDcyNDgzLCA3MjQ4NywgNzI0OTEsIDcyNDk1LCA3MjQ5OSwgNzI1MDMsIDcyNTA3LCAKLSAgICA3MjUxMSwgNzI1MTUsIDcyNTE5LCA3MjUyMiwgNzI1MjYsIDcyNTMwLCA3MjUzNCwgNzI1MzgsIDcyNTQyLCA3MjU0NiwgCi0gICAgNzI1NTAsIDcyNTU0LCA3MjU1OCwgNzI1NjIsIDcyNTY2LCA3MjU3MCwgNzI1NzQsIDcyNTc4LCA3MjU4MiwgNzI1ODYsIAotICAgIDcyNTkwLCA3MjU5NCwgNzI1OTgsIDcyNjAyLCA3MjYwNiwgNzI2MTAsIDcyNjE0LCA3MjYxOCwgNzI2MjIsIDcyNjI2LCAKLSAgICA3MjYzMCwgNzI2MzQsIDcyNjM4LCA3MjY0MiwgNzI2NDYsIDcyNjUwLCA3MjY1NCwgNzI2NTgsIDcyNjYyLCA3MjY2NiwgCi0gICAgNzI2NzAsIDcyNjc0LCA3MjY3OCwgNzI2ODIsIDcyNjg2LCA3MjY5MCwgNzI2OTQsIDcyNjk3LCA3MjcwMiwgNzI3MDYsIAotICAgIDcyNzEyLCA3MjcxNywgNzI3MjMsIDcyNzI3LCA3MjczMSwgNzI3MzUsIDcyNzM5LCA3Mjc0MywgNzI3NDcsIDcyNzUxLCAKLSAgICA3Mjc1NSwgNzI3NTksIDcyNzYzLCA3Mjc2NywgNzI3NzEsIDcyNzc1LCA3Mjc3OSwgNzI3ODIsIDcyNzg1LCA3Mjc4OCwgCi0gICAgNzI3OTEsIDcyNzk0LCA3Mjc5NywgNzI4MDEsIDcyODA0LCA3MjgwOCwgNzI4MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyODE5LCA3MjgyNCwgNzI4MjksIDcyODM0LCA3MjgzOSwgCi0gICAgNzI4NDYsIDcyODUzLCA3Mjg1OCwgNzI4NjMsIDcyODY4LCA3Mjg3MywgNzI4ODAsIDcyODg3LCA3Mjg5NCwgNzI5MDEsIAotICAgIDcyOTA4LCA3MjkxNSwgNzI5MjUsIDcyOTM1LCA3Mjk0MiwgNzI5NDksIDcyOTU2LCA3Mjk2MywgNzI5NjksIDcyOTc1LCAKLSAgICA3Mjk4NCwgNzI5OTMsIDczMDAwLCA3MzAwNywgNzMwMTgsIDczMDI5LCA3MzAzNCwgNzMwMzksIDczMDQ2LCA3MzA1MywgCi0gICAgNzMwNjAsIDczMDY3LCA3MzA3NCwgNzMwODEsIDczMDg4LCA3MzA5NSwgNzMxMDEsIDczMTA3LCA3MzExMywgNzMxMTksIAotICAgIDczMTI2LCA3MzEzMywgNzMxMzgsIDczMTQyLCA3MzE0OSwgNzMxNTYsIDczMTYzLCA3MzE2NywgNzMxNzQsIDczMTc4LCAKLSAgICA3MzE4MywgNzMxODcsIDczMTkzLCA3MzE5OCwgNzMyMDQsIDczMjA5LCA3MzIxMywgNzMyMTcsIDczMjIwLCA3MzIyMywgCi0gICAgNzMyMjgsIDczMjMzLCA3MzIzOCwgNzMyNDMsIDczMjQ4LCA3MzI1MywgNzMyNTgsIDczMjYzLCA3MzI2OCwgNzMyNzMsIAotICAgIDczMjgxLCA3MzI4OSwgNzMyOTQsIDczMjk5LCA3MzMwNCwgNzMzMDksIDczMzE0LCA3MzMxOSwgNzMzMjQsIDczMzI5LCAKLSAgICA3MzMzNCwgNzMzMzksIDczMzQ0LCA3MzM0OSwgNzMzNTQsIDczMzU5LCA3MzM2NSwgNzMzNzEsIDczMzc3LCA3MzM4MywgCi0gICAgNzMzODgsIDczMzk0LCA3MzM5NywgNzM0MDAsIDczNDAzLCA3MzQwNywgNzM0MTEsIDczNDE1LCA3MzQxOSwgNzM0MjIsIAotICAgIDczNDI2LCA3MzQyOSwgNzM0MzMsIDczNDM2LCA3MzQ0MCwgNzM0NDQsIDczNDQ4LCA3MzQ1MiwgNzM0NTYsIDczNDYwLCAKLSAgICA3MzQ2NCwgNzM0NjgsIDczNDcyLCA3MzQ3NiwgNzM0ODAsIDczNDg0LCA3MzQ4OCwgNzM0OTIsIDczNDk2LCA3MzUwMCwgCi0gICAgNzM1MDQsIDczNTA4LCA3MzUxMiwgNzM1MTYsIDczNTIwLCA3MzUyNCwgNzM1MjcsIDczNTMxLCA3MzUzNSwgNzM1MzksIAotICAgIDczNTQzLCA3MzU0NywgNzM1NTEsIDczNTU1LCA3MzU1OSwgNzM1NjMsIDczNTY3LCA3MzU3MSwgNzM1NzUsIDczNTc5LCAKLSAgICA3MzU4MywgNzM1ODcsIDczNTkxLCA3MzU5NSwgNzM1OTksIDczNjAzLCA3MzYwNywgNzM2MTEsIDczNjE1LCA3MzYxOSwgCi0gICAgNzM2MjMsIDczNjI3LCA3MzYzMSwgNzM2MzUsIDczNjM5LCA3MzY0MywgNzM2NDcsIDczNjUxLCA3MzY1NSwgNzM2NTgsIAotICAgIDczNjYyLCA3MzY2NiwgNzM2NzAsIDczNjc0LCA3MzY3OCwgNzM2ODIsIDczNjg2LCA3MzY5MCwgNzM2OTQsIDczNjk4LCAKLSAgICA3MzcwMiwgNzM3MDYsIDczNzExLCA3MzcxNiwgNzM3MTksIDczNzI0LCA3MzcyNywgNzM3MzAsIDczNzMzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3MzczNywgNzM3NDYsIDczNzU1LCA3Mzc2NCwgNzM3NzMsIDczNzgyLCA3Mzc5MSwgNzM4MDAsIAotICAgIDczODA5LCA3MzgxNywgNzM4MjQsIDczODMyLCA3MzgzOSwgNzM4NDcsIDczODU3LCA3Mzg2NiwgNzM4NzYsIDczODg1LCAKLSAgICA3Mzg5NSwgNzM5MDMsIDczOTEwLCA3MzkxOCwgNzM5MjUsIDczOTMzLCA3MzkzOCwgNzM5NDMsIDczOTQ5LCA3Mzk1OCwgCi0gICAgNzM5NjQsIDczOTcwLCA3Mzk3NywgNzM5ODYsIDczOTk0LCA3NDAwMiwgNzQwMTAsIDc0MDE3LCA3NDAyNCwgNzQwMzEsIAotICAgIDc0MDM4LCA3NDA0MywgNzQwNDgsIDc0MDUzLCA3NDA1OCwgNzQwNjMsIDc0MDY4LCA3NDA3MywgNzQwNzgsIDc0MDg2LCAKLSAgICA3NDA5NCwgNzQxMDAsIDc0MTA1LCA3NDExMCwgNzQxMTUsIDc0MTIwLCA3NDEyNSwgNzQxMzAsIDc0MTM1LCA3NDE0MCwgCi0gICAgNzQxNDUsIDc0MTU0LCA3NDE2MywgNzQxNjgsIDc0MTczLCA3NDE4MywgNzQxOTMsIDc0MjAwLCA3NDIwNywgNzQyMTYsIAotICAgIDc0MjI1LCA3NDIzNywgNzQyNDksIDc0MjU1LCA3NDI2MSwgNzQyNjksIDc0Mjc3LCA3NDI4NywgNzQyOTcsIDc0MzA0LCAKLSAgICA3NDMxMSwgNzQzMTYsIDc0MzIxLCA3NDMzMywgNzQzNDUsIDc0MzUzLCA3NDM2MSwgNzQzNzEsIDc0MzgxLCA3NDM5MywgCi0gICAgNzQ0MDUsIDc0NDE0LCA3NDQyMywgNzQ0MzAsIDc0NDM3LCA3NDQ0NCwgNzQ0NTEsIDc0NDYwLCA3NDQ2OSwgNzQ0NzQsIAotICAgIDc0NDc5LCA3NDQ4NiwgNzQ0OTMsIDc0NTAwLCA3NDUwNywgNzQ1MTksIDc0NTMxLCA3NDUzNiwgNzQ1NDEsIDc0NTQ2LCAKLSAgICA3NDU1MSwgNzQ1NTYsIDc0NTYxLCA3NDU2NiwgNzQ1NzEsIDc0NTc1LCA3NDU4MCwgNzQ1ODUsIDc0NTkwLCA3NDU5NSwgCi0gICAgNzQ2MDAsIDc0NjA2LCA3NDYxMSwgNzQ2MTYsIDc0NjIzLCA3NDYzMCwgNzQ2MzcsIDc0NjQ0LCA3NDY1MSwgNzQ2NjAsIAotICAgIDc0NjY5LCA3NDY3NSwgNzQ2ODEsIDc0Njg3LCA3NDY5MywgNzQ2OTksIDc0NzA1LCA3NDcxMiwgNzQ3MTksIDc0NzI2LCAKLSAgICA3NDczMCwgNzQ3MzcsIDc0NzQyLCA3NDc0NywgNzQ3NTQsIDc0NzY3LCA3NDc3MywgNzQ3ODEsIDc0Nzg5LCA3NDc5NiwgCi0gICAgNzQ4MDMsIDc0ODEyLCA3NDgyMSwgNzQ4MjgsIDc0ODM1LCA3NDg0MiwgNzQ4NDksIDc0ODU2LCA3NDg2MywgNzQ4NzAsIAotICAgIDc0ODc3LCA3NDg4NCwgNzQ4OTEsIDc0OTAwLCA3NDkwOSwgNzQ5MTgsIDc0OTI3LCA3NDkzNiwgNzQ5NDUsIDc0OTU0LCAKLSAgICA3NDk2MywgNzQ5NzIsIDc0OTgxLCA3NDk4OCwgNzQ5OTUsIDc1MDAxLCAwLCAwLCA3NTAwOSwgNzUwMTYsIDc1MDIzLCAKLSAgICA3NTAzMSwgNzUwMzYsIDc1MDQxLCA3NTA0NiwgNzUwNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY2ODMwLCA2NjgzOSwgNjY4NDgsIDY2ODU5LCA2Njg2NiwgNjY4NzEsIDY2ODc2LCA2Njg4MywgNjY4OTAsIDY2ODk2LCAKKyAgICA2NjkwMSwgNjY5MDYsIDY2OTExLCA2NjkxNiwgNjY5MjMsIDY2OTI4LCA2NjkzMywgNjY5MzgsIDY2OTQ5LCA2Njk1NCwgCisgICAgNjY5NTksIDY2OTY2LCA2Njk3MSwgNjY5NzgsIDY2OTgzLCA2Njk4OCwgNjY5OTUsIDY3MDAyLCA2NzAwOSwgNjcwMTgsIAorICAgIDY3MDI3LCA2NzAzMiwgNjcwMzcsIDY3MDQyLCA2NzA0OSwgNjcwNTQsIDY3MDY0LCA2NzA3MSwgNjcwNzYsIDY3MDgxLCAKKyAgICA2NzA4NiwgNjcwOTEsIDY3MDk2LCA2NzEwMSwgNjcxMTAsIDY3MTE3LCA2NzEyNCwgNjcxMjksIDY3MTM2LCA2NzE0MSwgCisgICAgNjcxNDgsIDY3MTU3LCA2NzE2OCwgNjcxNzMsIDY3MTgyLCA2NzE4NywgNjcxOTQsIDY3MjAzLCA2NzIxMiwgNjcyMTcsIAorICAgIDY3MjIyLCA2NzIyOSwgNjcyMzUsIDY3MjQyLCA2NzI0OSwgNjcyNTMsIDY3MjU3LCA2NzI2MCwgNjcyNjQsIDY3MjY4LCAKKyAgICA2NzI3MiwgNjcyNzYsIDY3MjgwLCA2NzI4NCwgNjcyODgsIDY3MjkxLCA2NzI5NSwgNjcyOTksIDY3MzAzLCA2NzMwNywgCisgICAgNjczMTEsIDY3MzE1LCA2NzMxOCwgNjczMjIsIDY3MzI2LCA2NzMyOSwgNjczMzMsIDY3MzM3LCA2NzM0MSwgNjczNDUsIAorICAgIDY3MzQ5LCA2NzM1MywgNjczNTcsIDY3MzYxLCA2NzM2NSwgNjczNjksIDY3MzczLCA2NzM3NywgNjczODEsIDY3Mzg1LCAKKyAgICA2NzM4OSwgNjczOTMsIDY3Mzk3LCA2NzQwMSwgNjc0MDUsIDY3NDA5LCA2NzQxMywgNjc0MTcsIDY3NDIxLCA2NzQyNSwgCisgICAgNjc0MjksIDY3NDMzLCA2NzQzNywgNjc0NDEsIDY3NDQ1LCA2NzQ0OSwgNjc0NTMsIDY3NDU3LCA2NzQ2MSwgNjc0NjUsIAorICAgIDY3NDY5LCA2NzQ3MywgNjc0NzcsIDY3NDgxLCA2NzQ4NSwgNjc0ODksIDY3NDkzLCA2NzQ5NywgNjc1MDEsIDY3NTA1LCAKKyAgICA2NzUwOCwgNjc1MTIsIDY3NTE2LCA2NzUyMCwgNjc1MjQsIDY3NTI4LCA2NzUzMiwgNjc1MzYsIDY3NTQwLCA2NzU0NCwgCisgICAgNjc1NDgsIDY3NTUyLCA2NzU1NiwgNjc1NjAsIDY3NTY0LCA2NzU2OCwgNjc1NzIsIDY3NTc2LCA2NzU4MCwgNjc1ODQsIAorICAgIDY3NTg4LCA2NzU5MiwgNjc1OTYsIDY3NjAwLCA2NzYwNCwgNjc2MDgsIDY3NjEyLCA2NzYxNiwgNjc2MjAsIDY3NjI0LCAKKyAgICA2NzYyOCwgNjc2MzIsIDY3NjM2LCA2NzY0MCwgNjc2NDQsIDY3NjQ4LCA2NzY1MiwgNjc2NTYsIDY3NjYwLCA2NzY2NCwgCisgICAgNjc2NjgsIDY3NjcyLCA2NzY3NiwgNjc2ODAsIDY3Njg0LCA2NzY4OCwgNjc2OTIsIDY3Njk2LCA2NzcwMCwgNjc3MDQsIAorICAgIDY3NzA4LCA2NzcxMiwgNjc3MTYsIDY3NzIwLCA2NzcyNCwgNjc3MjgsIDY3NzMyLCA2NzczNiwgNjc3NDAsIDY3NzQ0LCAKKyAgICA2Nzc0OCwgNjc3NTIsIDY3NzU2LCA2Nzc2MCwgNjc3NjQsIDY3NzY4LCA2Nzc3MiwgNjc3NzYsIDY3NzgwLCA2Nzc4NCwgCisgICAgNjc3ODgsIDY3NzkyLCA2Nzc5NiwgNjc4MDAsIDY3ODA0LCA2NzgwOCwgNjc4MTIsIDY3ODE2LCA2NzgyMCwgNjc4MjQsIAorICAgIDY3ODI4LCA2NzgzMiwgNjc4MzYsIDY3ODQwLCA2Nzg0NCwgNjc4NDgsIDY3ODUyLCA2Nzg1NiwgNjc4NjAsIDY3ODY0LCAKKyAgICA2Nzg2OCwgNjc4NzIsIDY3ODc2LCA2Nzg4MCwgNjc4ODQsIDY3ODg4LCA2Nzg5MiwgNjc4OTYsIDY3OTAwLCA2NzkwNCwgCisgICAgNjc5MDgsIDY3OTEyLCA2NzkxNiwgNjc5MjAsIDY3OTI0LCA2NzkyOCwgNjc5MzIsIDY3OTM2LCA2Nzk0MCwgNjc5NDQsIAorICAgIDY3OTQ4LCA2Nzk1MiwgNjc5NTYsIDY3OTYwLCA2Nzk2NCwgNjc5NjgsIDY3OTcyLCA2Nzk3NiwgNjc5NzksIDY3OTgzLCAKKyAgICA2Nzk4NywgNjc5OTEsIDY3OTk1LCA2Nzk5OSwgNjgwMDMsIDY4MDA3LCA2ODAxMSwgNjgwMTUsIDY4MDE5LCA2ODAyMywgCisgICAgNjgwMjcsIDY4MDMxLCA2ODAzNSwgNjgwMzksIDY4MDQzLCA2ODA0NywgNjgwNTEsIDY4MDU1LCA2ODA1OSwgNjgwNjMsIAorICAgIDY4MDY3LCA2ODA3MSwgNjgwNzUsIDY4MDc5LCA2ODA4MywgNjgwODcsIDY4MDkxLCA2ODA5NSwgNjgwOTksIDY4MTAzLCAKKyAgICA2ODEwNywgNjgxMTEsIDY4MTE1LCA2ODExOSwgNjgxMjMsIDY4MTI3LCA2ODEzMSwgNjgxMzUsIDY4MTM5LCA2ODE0MywgCisgICAgNjgxNDcsIDY4MTUxLCA2ODE1NSwgNjgxNTksIDY4MTYzLCA2ODE2NywgNjgxNzEsIDY4MTc1LCA2ODE3OSwgNjgxODMsIAorICAgIDY4MTg3LCA2ODE5MSwgNjgxOTUsIDY4MTk5LCA2ODIwMywgNjgyMDcsIDY4MjExLCA2ODIxNSwgNjgyMTksIDY4MjIzLCAKKyAgICA2ODIyNywgNjgyMzEsIDY4MjM1LCA2ODIzOSwgNjgyNDMsIDY4MjQ3LCA2ODI1MSwgNjgyNTUsIDY4MjU5LCA2ODI2MywgCisgICAgNjgyNjcsIDY4MjcxLCA2ODI3NSwgNjgyNzksIDY4MjgzLCA2ODI4NywgNjgyOTEsIDY4Mjk1LCA2ODI5OSwgNjgzMDMsIAorICAgIDY4MzA3LCA2ODMxMSwgNjgzMTUsIDY4MzE5LCA2ODMyMywgNjgzMjcsIDY4MzMxLCA2ODMzNSwgNjgzMzksIDY4MzQzLCAKKyAgICA2ODM0NywgNjgzNTEsIDY4MzU1LCA2ODM1OSwgNjgzNjMsIDY4MzY3LCA2ODM3MSwgNjgzNzUsIDY4Mzc5LCA2ODM4MywgCisgICAgNjgzODcsIDY4MzkxLCA2ODM5NSwgNjgzOTksIDY4NDAzLCA2ODQwNywgNjg0MTEsIDY4NDE1LCA2ODQxOSwgNjg0MjMsIAorICAgIDY4NDI3LCA2ODQzMSwgNjg0MzUsIDY4NDM5LCA2ODQ0MiwgNjg0NDYsIDY4NDUwLCA2ODQ1NCwgNjg0NTgsIDY4NDYyLCAKKyAgICA2ODQ2NiwgNjg0NzAsIDY4NDc0LCA2ODQ3OCwgNjg0ODIsIDY4NDg2LCA2ODQ5MCwgNjg0OTQsIDY4NDk4LCA2ODUwMiwgCisgICAgNjg1MDYsIDY4NTEwLCA2ODUxNCwgNjg1MTgsIDY4NTIyLCA2ODUyNiwgNjg1MzAsIDY4NTM0LCA2ODUzOCwgNjg1NDIsIAorICAgIDY4NTQ2LCA2ODU1MCwgNjg1NTQsIDY4NTU4LCA2ODU2MiwgNjg1NjYsIDY4NTcwLCA2ODU3NCwgNjg1NzgsIDY4NTgyLCAKKyAgICA2ODU4NiwgNjg1OTAsIDY4NTk0LCA2ODU5OCwgNjg2MDIsIDY4NjA2LCA2ODYxMCwgNjg2MTQsIDY4NjE4LCA2ODYyMiwgCisgICAgNjg2MjYsIDY4NjMwLCA2ODYzNCwgNjg2MzgsIDY4NjQyLCA2ODY0NiwgNjg2NTAsIDY4NjU0LCA2ODY1OCwgNjg2NjIsIAorICAgIDY4NjY2LCA2ODY3MCwgNjg2NzQsIDY4Njc4LCA2ODY4MiwgNjg2ODYsIDY4NjkwLCA2ODY5NCwgNjg2OTgsIDY4NzAyLCAKKyAgICA2ODcwNiwgNjg3MTAsIDY4NzE0LCA2ODcxOCwgNjg3MjIsIDY4NzI2LCA2ODczMCwgNjg3MzQsIDY4NzM4LCA2ODc0MiwgCisgICAgNjg3NDYsIDY4NzUwLCA2ODc1NCwgNjg3NTgsIDY4NzYyLCA2ODc2NiwgNjg3NzAsIDY4Nzc0LCA2ODc3OCwgNjg3ODIsIAorICAgIDY4Nzg2LCA2ODc5MCwgNjg3OTQsIDY4Nzk4LCA2ODgwMSwgNjg4MDUsIDY4ODA5LCA2ODgxMywgNjg4MTcsIDY4ODIxLCAKKyAgICA2ODgyNSwgNjg4MjksIDY4ODMzLCA2ODgzNywgNjg4NDEsIDY4ODQ1LCA2ODg0OSwgNjg4NTMsIDY4ODU3LCA2ODg2MSwgCisgICAgNjg4NjUsIDY4ODY5LCA2ODg3MywgNjg4NzcsIDY4ODgxLCA2ODg4NSwgNjg4ODksIDY4ODkzLCA2ODg5NywgNjg5MDEsIAorICAgIDY4OTA1LCA2ODkwOSwgNjg5MTMsIDY4OTE3LCA2ODkyMSwgNjg5MjUsIDY4OTI5LCA2ODkzMywgNjg5MzcsIDY4OTQxLCAKKyAgICA2ODk0NSwgNjg5NDksIDY4OTUzLCA2ODk1NywgNjg5NjEsIDY4OTY1LCA2ODk2OSwgNjg5NzMsIDY4OTc3LCA2ODk4MSwgCisgICAgNjg5ODUsIDY4OTg5LCA2ODk5MywgNjg5OTcsIDY5MDAxLCA2OTAwNSwgNjkwMDksIDY5MDEzLCA2OTAxNywgNjkwMjEsIAorICAgIDY5MDI1LCA2OTAyOSwgNjkwMzMsIDY5MDM3LCA2OTA0MCwgNjkwNDQsIDY5MDQ4LCA2OTA1MiwgNjkwNTYsIDY5MDYwLCAKKyAgICA2OTA2NCwgNjkwNjgsIDY5MDcyLCA2OTA3NiwgNjkwODAsIDY5MDg0LCA2OTA4OCwgNjkwOTIsIDY5MDk2LCA2OTEwMCwgCisgICAgNjkxMDQsIDY5MTA4LCA2OTExMiwgNjkxMTYsIDY5MTIwLCA2OTEyNCwgNjkxMjgsIDY5MTMyLCA2OTEzNiwgNjkxNDAsIAorICAgIDY5MTQ0LCA2OTE0OCwgNjkxNTIsIDY5MTU2LCA2OTE2MCwgNjkxNjQsIDY5MTY4LCA2OTE3MiwgNjkxNzYsIDY5MTgwLCAKKyAgICA2OTE4NCwgNjkxODgsIDY5MTkyLCA2OTE5NiwgNjkyMDAsIDY5MjA0LCA2OTIwOCwgNjkyMTIsIDY5MjE2LCA2OTIyMCwgCisgICAgNjkyMjQsIDY5MjI4LCA2OTIzMiwgNjkyMzYsIDY5MjQwLCA2OTI0NCwgNjkyNDgsIDY5MjUyLCA2OTI1NiwgNjkyNjAsIAorICAgIDY5MjY0LCA2OTI2OCwgNjkyNzIsIDY5Mjc2LCA2OTI4MCwgNjkyODQsIDY5Mjg4LCA2OTI5MiwgNjkyOTUsIDY5Mjk5LCAKKyAgICA2OTMwMywgNjkzMDcsIDY5MzExLCA2OTMxNSwgNjkzMTksIDY5MzIzLCA2OTMyNywgNjkzMzEsIDY5MzM1LCA2OTMzOSwgCisgICAgNjkzNDMsIDY5MzQ3LCA2OTM1MSwgNjkzNTUsIDY5MzU5LCA2OTM2MywgNjkzNjcsIDY5MzcxLCA2OTM3NSwgNjkzNzksIAorICAgIDY5MzgzLCA2OTM4NywgNjkzOTEsIDY5Mzk1LCA2OTM5OSwgNjk0MDMsIDY5NDA3LCA2OTQxMSwgNjk0MTUsIDY5NDE5LCAKKyAgICA2OTQyMywgNjk0MjcsIDY5NDMxLCA2OTQzNSwgNjk0MzksIDY5NDQzLCA2OTQ0NywgNjk0NTEsIDY5NDU1LCA2OTQ1OSwgCisgICAgNjk0NjMsIDY5NDY3LCA2OTQ3MSwgNjk0NzUsIDY5NDc5LCA2OTQ4MywgNjk0ODcsIDY5NDkxLCA2OTQ5NSwgNjk0OTksIAorICAgIDY5NTAzLCA2OTUwNywgNjk1MTEsIDY5NTE1LCA2OTUxOSwgNjk1MjMsIDY5NTI3LCA2OTUzMSwgNjk1MzUsIDY5NTM5LCAKKyAgICA2OTU0MywgNjk1NDcsIDY5NTUxLCA2OTU1NSwgNjk1NTksIDY5NTYzLCA2OTU2NywgNjk1NzEsIDY5NTc1LCA2OTU3OSwgCisgICAgNjk1ODMsIDY5NTg3LCA2OTU5MSwgNjk1OTUsIDY5NTk5LCA2OTYwMywgNjk2MDcsIDY5NjExLCA2OTYxNSwgNjk2MTksIAorICAgIDY5NjIzLCA2OTYyNywgNjk2MzEsIDY5NjM1LCA2OTYzOSwgNjk2NDMsIDY5NjQ3LCA2OTY1MSwgNjk2NTUsIDY5NjU5LCAKKyAgICA2OTY2MywgNjk2NjcsIDY5NjcxLCA2OTY3NSwgNjk2NzksIDY5NjgzLCA2OTY4NywgNjk2OTEsIDY5Njk1LCA2OTY5OSwgCisgICAgNjk3MDMsIDY5NzA3LCA2OTcxMSwgNjk3MTUsIDY5NzE5LCA2OTcyMywgNjk3MjcsIDY5NzMxLCA2OTczNSwgNjk3MzksIAorICAgIDY5NzQzLCA2OTc0NywgNjk3NTAsIDY5NzU0LCA2OTc1OCwgNjk3NjIsIDY5NzY2LCA2OTc3MCwgNjk3NzQsIDY5Nzc4LCAKKyAgICA2OTc4MiwgNjk3ODYsIDY5NzkwLCA2OTc5NCwgNjk3OTgsIDY5ODAyLCA2OTgwNiwgNjk4MTAsIDY5ODE0LCA2OTgxOCwgCisgICAgNjk4MjIsIDY5ODI2LCA2OTgzMCwgNjk4MzQsIDY5ODM4LCA2OTg0MiwgNjk4NDYsIDY5ODUwLCA2OTg1NCwgNjk4NTgsIAorICAgIDY5ODYyLCA2OTg2NiwgNjk4NzAsIDY5ODc0LCA2OTg3OCwgNjk4ODIsIDY5ODg2LCA2OTg5MCwgNjk4OTQsIDY5ODk4LCAKKyAgICA2OTkwMiwgNjk5MDYsIDY5OTEwLCA2OTkxNCwgNjk5MTgsIDY5OTIyLCA2OTkyNiwgNjk5MzAsIDY5OTM0LCA2OTkzOCwgCisgICAgNjk5NDIsIDY5OTQ2LCA2OTk1MCwgNjk5NTQsIDY5OTU4LCA2OTk2MiwgNjk5NjYsIDY5OTcwLCA2OTk3NCwgNjk5NzgsIAorICAgIDY5OTgyLCA2OTk4NiwgNjk5OTAsIDY5OTk0LCA2OTk5OCwgNzAwMDIsIDcwMDA2LCA3MDAxMCwgNzAwMTQsIDcwMDE4LCAKKyAgICA3MDAyMiwgNzAwMjYsIDcwMDMwLCA3MDAzNCwgNzAwMzgsIDcwMDQyLCA3MDA0NiwgNzAwNTAsIDcwMDU0LCA3MDA1OCwgCisgICAgNzAwNjIsIDcwMDY2LCA3MDA3MCwgNzAwNzQsIDcwMDc4LCA3MDA4MiwgNzAwODYsIDcwMDkwLCA3MDA5NCwgNzAwOTgsIAorICAgIDcwMTAyLCA3MDEwNiwgNzAxMTAsIDcwMTE0LCA3MDExOCwgNzAxMjIsIDcwMTI2LCA3MDEzMCwgNzAxMzQsIDcwMTM4LCAKKyAgICA3MDE0MiwgNzAxNDYsIDcwMTUwLCA3MDE1NCwgNzAxNTgsIDcwMTYyLCA3MDE2NiwgNzAxNzAsIDcwMTc0LCA3MDE3OCwgCisgICAgNzAxODIsIDcwMTg2LCA3MDE5MCwgNzAxOTQsIDcwMTk4LCA3MDIwMiwgNzAyMDYsIDcwMjEwLCA3MDIxNCwgNzAyMTgsIAorICAgIDcwMjIyLCA3MDIyNiwgNzAyMzAsIDcwMjM0LCA3MDIzOCwgNzAyNDIsIDcwMjQ2LCA3MDI1MCwgNzAyNTQsIDcwMjU4LCAKKyAgICA3MDI2MiwgNzAyNjYsIDcwMjcwLCA3MDI3NCwgNzAyNzgsIDcwMjgyLCA3MDI4NiwgNzAyOTAsIDcwMjk0LCA3MDI5OCwgCisgICAgNzAzMDIsIDcwMzA2LCA3MDMxMCwgNzAzMTQsIDcwMzE4LCA3MDMyMiwgNzAzMjYsIDcwMzMwLCA3MDMzNCwgNzAzMzgsIAorICAgIDcwMzQyLCA3MDM0NiwgNzAzNTAsIDcwMzUzLCA3MDM1NywgNzAzNjEsIDcwMzY1LCA3MDM2OSwgNzAzNzMsIDcwMzc3LCAKKyAgICA3MDM4MSwgNzAzODUsIDcwMzg5LCA3MDM5MywgNzAzOTcsIDcwNDAxLCA3MDQwNSwgNzA0MDksIDcwNDEzLCA3MDQxNywgCisgICAgNzA0MjEsIDcwNDI1LCA3MDQyOSwgNzA0MzMsIDcwNDM3LCA3MDQ0MSwgNzA0NDUsIDcwNDQ5LCA3MDQ1MywgNzA0NTcsIAorICAgIDcwNDYxLCA3MDQ2NSwgNzA0NjksIDcwNDczLCA3MDQ3NywgNzA0ODEsIDcwNDg1LCA3MDQ4OSwgNzA0OTMsIDcwNDk3LCAKKyAgICA3MDUwMSwgNzA1MDUsIDcwNTA5LCA3MDUxMywgNzA1MTcsIDcwNTIxLCA3MDUyNSwgNzA1MjksIDcwNTMzLCA3MDUzNywgCisgICAgNzA1NDEsIDcwNTQ1LCA3MDU0OSwgNzA1NTMsIDcwNTU3LCA3MDU2MSwgNzA1NjUsIDcwNTY5LCA3MDU3MywgNzA1NzcsIAorICAgIDcwNTgxLCA3MDU4NSwgNzA1ODksIDcwNTkzLCA3MDU5NywgNzA2MDEsIDcwNjA1LCA3MDYwOSwgNzA2MTMsIDcwNjE3LCAKKyAgICA3MDYyMSwgNzA2MjUsIDcwNjI5LCA3MDYzMywgNzA2MzcsIDcwNjQxLCA3MDY0NSwgNzA2NDksIDcwNjUzLCA3MDY1NywgCisgICAgNzA2NjEsIDcwNjY1LCA3MDY2OSwgNzA2NzMsIDcwNjc3LCA3MDY4MSwgNzA2ODUsIDcwNjg5LCA3MDY5MywgNzA2OTcsIAorICAgIDcwNzAxLCA3MDcwNSwgNzA3MDksIDcwNzEzLCA3MDcxNywgNzA3MjEsIDcwNzI1LCA3MDcyOSwgNzA3MzMsIDcwNzM3LCAKKyAgICA3MDc0MSwgNzA3NDUsIDcwNzQ5LCA3MDc1MywgNzA3NTcsIDcwNzYxLCA3MDc2NSwgNzA3NjksIDcwNzczLCA3MDc3NywgCisgICAgNzA3ODEsIDcwNzg1LCA3MDc4OSwgNzA3OTMsIDcwNzk3LCA3MDgwMSwgNzA4MDUsIDcwODA5LCA3MDgxMywgNzA4MTcsIAorICAgIDcwODIxLCA3MDgyNSwgNzA4MjksIDcwODMzLCA3MDgzNywgNzA4NDEsIDcwODQ1LCA3MDg0OSwgNzA4NTMsIDcwODU3LCAKKyAgICA3MDg2MSwgNzA4NjUsIDcwODY5LCA3MDg3MywgNzA4NzcsIDcwODgxLCA3MDg4NSwgNzA4ODksIDcwODkzLCA3MDg5NywgCisgICAgNzA5MDEsIDcwOTA1LCA3MDkwOSwgNzA5MTMsIDcwOTE3LCA3MDkyMSwgNzA5MjUsIDcwOTI5LCA3MDkzMywgNzA5MzcsIAorICAgIDcwOTQxLCA3MDk0NSwgNzA5NDksIDcwOTUzLCA3MDk1NywgNzA5NjEsIDcwOTY1LCA3MDk2OSwgNzA5NzMsIDcwOTc3LCAKKyAgICA3MDk4MSwgNzA5ODUsIDcwOTg5LCA3MDk5MywgNzA5OTcsIDcxMDAxLCA3MTAwNSwgNzEwMDksIDcxMDEzLCA3MTAxNywgCisgICAgNzEwMjEsIDcxMDI1LCA3MTAyOSwgNzEwMzMsIDcxMDM3LCA3MTA0MSwgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIAorICAgIDcxMDYxLCA3MTA2NSwgNzEwNjksIDcxMDczLCA3MTA3NywgNzEwODEsIDcxMDg1LCA3MTA4OSwgNzEwOTMsIDcxMDk3LCAKKyAgICA3MTEwMSwgNzExMDUsIDcxMTA5LCA3MTExMywgNzExMTcsIDcxMTIxLCA3MTEyNSwgNzExMjksIDcxMTMzLCA3MTEzNywgCisgICAgNzExNDEsIDcxMTQ1LCA3MTE0OSwgNzExNTMsIDcxMTU3LCA3MTE2MSwgNzExNjUsIDcxMTY5LCA3MTE3MywgNzExNzcsIAorICAgIDcxMTgxLCA3MTE4NSwgNzExODksIDcxMTkzLCA3MTE5NywgNzEyMDEsIDcxMjA1LCA3MTIwOSwgNzEyMTMsIDcxMjE3LCAKKyAgICA3MTIyMSwgNzEyMjUsIDcxMjI5LCA3MTIzMywgNzEyMzcsIDcxMjQxLCA3MTI0NSwgNzEyNDksIDcxMjUzLCA3MTI1NywgCisgICAgNzEyNjEsIDcxMjY1LCA3MTI2OSwgNzEyNzMsIDcxMjc3LCA3MTI4MSwgNzEyODUsIDcxMjg5LCA3MTI5MywgNzEyOTcsIAorICAgIDcxMzAxLCA3MTMwNSwgNzEzMDksIDcxMzEzLCA3MTMxNywgNzEzMjEsIDcxMzI1LCA3MTMyOSwgNzEzMzMsIDcxMzM3LCAKKyAgICA3MTM0MSwgNzEzNDUsIDcxMzQ5LCA3MTM1MywgNzEzNTcsIDcxMzYxLCA3MTM2NSwgNzEzNjksIDcxMzczLCA3MTM3NywgCisgICAgNzEzODEsIDcxMzg1LCA3MTM4OSwgNzEzOTMsIDcxMzk3LCA3MTQwMSwgNzE0MDUsIDcxNDA5LCA3MTQxMywgNzE0MTcsIAorICAgIDcxNDIxLCA3MTQyNSwgNzE0MjksIDcxNDMzLCA3MTQzNywgNzE0NDEsIDcxNDQ1LCA3MTQ0OSwgNzE0NTMsIDcxNDU3LCAKKyAgICA3MTQ2MSwgNzE0NjUsIDcxNDY5LCA3MTQ3MywgNzE0NzcsIDcxNDgxLCA3MTQ4NSwgNzE0ODksIDcxNDkzLCA3MTQ5NywgCisgICAgNzE1MDEsIDcxNTA1LCA3MTUwOSwgNzE1MTMsIDcxNTE3LCA3MTUyMSwgNzE1MjUsIDcxNTI5LCA3MTUzMywgNzE1MzcsIAorICAgIDcxNTQxLCA3MTU0NSwgNzE1NDksIDcxNTUzLCA3MTU1NywgNzE1NjEsIDcxNTY1LCA3MTU2OSwgNzE1NzMsIDcxNTc3LCAKKyAgICA3MTU4MSwgNzE1ODUsIDcxNTg5LCA3MTU5MywgNzE1OTcsIDcxNjAxLCA3MTYwNSwgNzE2MDksIDcxNjEzLCA3MTYxNywgCisgICAgNzE2MjEsIDcxNjI1LCA3MTYyOSwgNzE2MzMsIDcxNjM3LCA3MTY0MSwgNzE2NDUsIDcxNjQ5LCA3MTY1MywgNzE2NTcsIAorICAgIDcxNjYxLCA3MTY2NSwgNzE2NjksIDcxNjczLCA3MTY3NywgNzE2ODEsIDcxNjg1LCA3MTY4OSwgNzE2OTMsIDcxNjk3LCAKKyAgICA3MTcwMSwgNzE3MDUsIDcxNzA5LCA3MTcxMywgNzE3MTcsIDcxNzIxLCA3MTcyNSwgNzE3MjksIDcxNzMzLCA3MTczNywgCisgICAgNzE3NDEsIDcxNzQ1LCA3MTc0OSwgNzE3NTMsIDcxNzU3LCA3MTc2MSwgNzE3NjUsIDcxNzY5LCA3MTc3MywgNzE3NzcsIAorICAgIDcxNzgxLCA3MTc4NSwgNzE3ODksIDcxNzkzLCA3MTc5NywgNzE4MDEsIDcxODA1LCA3MTgwOSwgNzE4MTMsIDcxODE3LCAKKyAgICA3MTgyMSwgNzE4MjUsIDcxODI5LCA3MTgzMywgNzE4MzcsIDcxODQxLCA3MTg0NSwgNzE4NDksIDcxODUzLCA3MTg1NywgCisgICAgNzE4NjEsIDcxODY1LCA3MTg2OSwgNzE4NzMsIDcxODc3LCA3MTg4MSwgNzE4ODUsIDcxODg5LCA3MTg5MywgMCwgMCwgMCwgCisgICAgNzE4OTcsIDcxOTAxLCA3MTkwNSwgNzE5MDksIDcxOTEzLCA3MTkxNywgNzE5MjEsIDcxOTI1LCA3MTkyOSwgNzE5MzMsIAorICAgIDcxOTM3LCA3MTk0MSwgNzE5NDUsIDcxOTQ5LCA3MTk1MywgNzE5NTcsIDcxOTYxLCA3MTk2NSwgNzE5NjksIDcxOTczLCAKKyAgICA3MTk3NywgNzE5ODEsIDcxOTg1LCA3MTk4OSwgNzE5OTMsIDcxOTk3LCA3MjAwMSwgNzIwMDUsIDcyMDA5LCA3MjAxMywgCisgICAgNzIwMTcsIDcyMDIxLCA3MjAyNSwgNzIwMjksIDcyMDMzLCA3MjAzNywgNzIwNDEsIDcyMDQ1LCA3MjA0OSwgNzIwNTMsIAorICAgIDcyMDU3LCA3MjA2MSwgNzIwNjUsIDcyMDY5LCA3MjA3MywgNzIwNzcsIDcyMDgxLCA3MjA4NSwgNzIwODksIDcyMDkzLCAKKyAgICA3MjA5NywgNzIxMDEsIDcyMTA1LCA3MjEwOSwgNzIxMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyMTE3LCAKKyAgICA3MjEyMiwgNzIxMjYsIDcyMTMxLCA3MjEzNiwgNzIxNDEsIDcyMTQ2LCA3MjE1MSwgNzIxNTUsIDcyMTYwLCA3MjE2NSwgCisgICAgNzIxNzAsIDcyMTc1LCA3MjE4MCwgNzIxODUsIDcyMTkwLCA3MjE5NCwgNzIxOTgsIDcyMjAyLCA3MjIwNywgNzIyMTIsIAorICAgIDcyMjE3LCA3MjIyMiwgNzIyMjYsIDcyMjMxLCA3MjIzNiwgNzIyNDEsIDcyMjQ2LCA3MjI1MSwgNzIyNTUsIDcyMjYwLCAKKyAgICA3MjI2NCwgNzIyNjksIDcyMjczLCA3MjI3OCwgNzIyODIsIDcyMjg2LCA3MjI5MCwgNzIyOTUsIDcyMzAwLCA3MjMwNSwgCisgICAgNzIzMTMsIDcyMzIxLCA3MjMyOSwgNzIzMzcsIDcyMzQ0LCA3MjM1MiwgNzIzNTgsIDcyMzY2LCA3MjM3MCwgNzIzNzQsIAorICAgIDcyMzc4LCA3MjM4MiwgNzIzODYsIDcyMzkwLCA3MjM5NCwgNzIzOTgsIDcyNDAyLCA3MjQwNiwgNzI0MTAsIDcyNDE0LCAKKyAgICA3MjQxOCwgNzI0MjIsIDcyNDI2LCA3MjQzMCwgNzI0MzQsIDcyNDM4LCA3MjQ0MiwgNzI0NDYsIDcyNDUwLCA3MjQ1NCwgCisgICAgNzI0NTgsIDcyNDYyLCA3MjQ2NiwgNzI0NzAsIDcyNDc0LCA3MjQ3OCwgNzI0ODIsIDcyNDg2LCA3MjQ5MCwgNzI0OTQsIAorICAgIDcyNDk4LCA3MjUwMiwgNzI1MDYsIDcyNTEwLCA3MjUxMywgNzI1MTcsIDcyNTIxLCA3MjUyNSwgNzI1MjksIDcyNTMzLCAKKyAgICA3MjUzNywgNzI1NDEsIDcyNTQ1LCA3MjU0OSwgNzI1NTMsIDcyNTU3LCA3MjU2MSwgNzI1NjUsIDcyNTY5LCA3MjU3MywgCisgICAgNzI1NzcsIDcyNTgxLCA3MjU4NSwgNzI1ODksIDcyNTkzLCA3MjU5NywgNzI2MDEsIDcyNjA1LCA3MjYwOSwgNzI2MTMsIAorICAgIDcyNjE3LCA3MjYyMSwgNzI2MjUsIDcyNjI5LCA3MjYzMywgNzI2MzcsIDcyNjQxLCA3MjY0NSwgNzI2NDksIDcyNjUzLCAKKyAgICA3MjY1NywgNzI2NjAsIDcyNjY0LCA3MjY2OCwgNzI2NzEsIDcyNjc1LCA3MjY3OSwgNzI2ODMsIDcyNjg2LCA3MjY5MCwgCisgICAgNzI2OTQsIDcyNjk4LCA3MjcwMiwgNzI3MDYsIDcyNzEwLCA3MjcxNCwgNzI3MTgsIDcyNzIyLCA3MjcyNiwgNzI3MzAsIAorICAgIDcyNzM0LCA3MjczOCwgNzI3NDEsIDcyNzQ1LCA3Mjc0OSwgNzI3NTMsIDcyNzU3LCA3Mjc2MSwgNzI3NjUsIDcyNzY5LCAKKyAgICA3Mjc3MywgNzI3NzcsIDcyNzgxLCA3Mjc4NCwgNzI3ODcsIDcyNzkxLCA3Mjc5NSwgNzI3OTksIDcyODAyLCA3MjgwNSwgCisgICAgNzI4MDksIDcyODEzLCA3MjgxNywgNzI4MjEsIDcyODI1LCA3MjgyOSwgNzI4MzMsIDcyODM3LCA3Mjg0MSwgNzI4NDUsIAorICAgIDcyODQ5LCA3Mjg1MywgNzI4NTcsIDcyODYxLCA3Mjg2NSwgNzI4NjksIDcyODczLCA3Mjg3NywgNzI4ODEsIDcyODg1LCAKKyAgICA3Mjg4OSwgNzI4OTMsIDcyODk3LCA3MjkwMSwgNzI5MDUsIDcyOTA5LCA3MjkxMywgNzI5MTcsIDcyOTIxLCA3MjkyNSwgCisgICAgNzI5MjksIDcyOTMzLCA3MjkzNywgNzI5NDEsIDcyOTQ1LCA3Mjk0OSwgNzI5NTMsIDcyOTU2LCA3Mjk2MCwgNzI5NjQsIAorICAgIDcyOTY4LCA3Mjk3MiwgNzI5NzYsIDcyOTgwLCA3Mjk4NCwgNzI5ODgsIDcyOTkyLCA3Mjk5NiwgNzMwMDAsIDczMDA0LCAKKyAgICA3MzAwOCwgNzMwMTIsIDczMDE2LCA3MzAyMCwgNzMwMjQsIDczMDI4LCA3MzAzMiwgNzMwMzYsIDczMDQwLCA3MzA0NCwgCisgICAgNzMwNDgsIDczMDUyLCA3MzA1NiwgNzMwNjAsIDczMDY0LCA3MzA2OCwgNzMwNzIsIDczMDc2LCA3MzA4MCwgNzMwODQsIAorICAgIDczMDg4LCA3MzA5MiwgNzMwOTYsIDczMTAwLCA3MzEwMywgNzMxMDcsIDczMTExLCA3MzExNSwgNzMxMTksIDczMTIzLCAKKyAgICA3MzEyNywgNzMxMzEsIDczMTM1LCA3MzEzOSwgNzMxNDMsIDczMTQ3LCA3MzE1MSwgNzMxNTUsIDczMTU5LCA3MzE2MywgCisgICAgNzMxNjcsIDczMTcwLCA3MzE3NCwgNzMxNzgsIDczMTgyLCA3MzE4NiwgNzMxOTAsIDczMTk0LCA3MzE5OCwgNzMyMDIsIAorICAgIDczMjA2LCA3MzIxMCwgNzMyMTQsIDczMjE4LCA3MzIyMiwgNzMyMjYsIDczMjMwLCA3MzIzNCwgNzMyMzgsIDczMjQyLCAKKyAgICA3MzI0NiwgNzMyNTAsIDczMjU0LCA3MzI1NywgNzMyNjEsIDczMjY1LCA3MzI2OSwgNzMyNzMsIDczMjc3LCA3MzI4MSwgCisgICAgNzMyODUsIDczMjg5LCA3MzI5MywgNzMyOTcsIDczMzAxLCA3MzMwNSwgNzMzMDksIDczMzEzLCA3MzMxNywgNzMzMjEsIAorICAgIDczMzI1LCA3MzMyOSwgNzMzMzMsIDczMzM3LCA3MzM0MSwgNzMzNDUsIDczMzQ5LCA3MzM1MywgNzMzNTcsIDczMzYxLCAKKyAgICA3MzM2NSwgNzMzNjksIDczMzczLCA3MzM3NywgNzMzODEsIDczMzg1LCA3MzM4OSwgNzMzOTMsIDczMzk3LCA3MzQwMSwgCisgICAgNzM0MDUsIDczNDA5LCA3MzQxMywgNzM0MTcsIDczNDIxLCA3MzQyNSwgNzM0MjksIDczNDMyLCA3MzQzNywgNzM0NDEsIAorICAgIDczNDQ3LCA3MzQ1MiwgNzM0NTgsIDczNDYyLCA3MzQ2NiwgNzM0NzAsIDczNDc0LCA3MzQ3OCwgNzM0ODIsIDczNDg2LCAKKyAgICA3MzQ5MCwgNzM0OTQsIDczNDk4LCA3MzUwMiwgNzM1MDYsIDczNTEwLCA3MzUxNCwgNzM1MTcsIDczNTIwLCA3MzUyMywgCisgICAgNzM1MjYsIDczNTI5LCA3MzUzMiwgNzM1MzYsIDczNTM5LCA3MzU0MywgNzM1NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczNTU0LCA3MzU1OSwgNzM1NjQsIDczNTY5LCA3MzU3NCwgCisgICAgNzM1ODEsIDczNTg4LCA3MzU5MywgNzM1OTgsIDczNjAzLCA3MzYwOCwgNzM2MTUsIDczNjIyLCA3MzYyOSwgNzM2MzYsIAorICAgIDczNjQzLCA3MzY1MCwgNzM2NjAsIDczNjcwLCA3MzY3NywgNzM2ODQsIDczNjkxLCA3MzY5OCwgNzM3MDQsIDczNzEwLCAKKyAgICA3MzcxOSwgNzM3MjgsIDczNzM1LCA3Mzc0MiwgNzM3NTMsIDczNzY0LCA3Mzc2OSwgNzM3NzQsIDczNzgxLCA3Mzc4OCwgCisgICAgNzM3OTUsIDczODAyLCA3MzgwOSwgNzM4MTYsIDczODIzLCA3MzgzMCwgNzM4MzYsIDczODQyLCA3Mzg0OCwgNzM4NTQsIAorICAgIDczODYxLCA3Mzg2OCwgNzM4NzMsIDczODc3LCA3Mzg4NCwgNzM4OTEsIDczODk4LCA3MzkwMiwgNzM5MDksIDczOTEzLCAKKyAgICA3MzkxOCwgNzM5MjIsIDczOTI4LCA3MzkzMywgNzM5MzksIDczOTQ0LCA3Mzk0OCwgNzM5NTIsIDczOTU1LCA3Mzk1OCwgCisgICAgNzM5NjMsIDczOTY4LCA3Mzk3MywgNzM5NzgsIDczOTgzLCA3Mzk4OCwgNzM5OTMsIDczOTk4LCA3NDAwMywgNzQwMDgsIAorICAgIDc0MDE2LCA3NDAyNCwgNzQwMjksIDc0MDM0LCA3NDAzOSwgNzQwNDQsIDc0MDQ5LCA3NDA1NCwgNzQwNTksIDc0MDY0LCAKKyAgICA3NDA2OSwgNzQwNzQsIDc0MDc5LCA3NDA4NCwgNzQwODksIDc0MDk0LCA3NDEwMCwgNzQxMDYsIDc0MTEyLCA3NDExOCwgCisgICAgNzQxMjMsIDc0MTI5LCA3NDEzMiwgNzQxMzUsIDc0MTM4LCA3NDE0MiwgNzQxNDYsIDc0MTUwLCA3NDE1NCwgNzQxNTcsIAorICAgIDc0MTYxLCA3NDE2NCwgNzQxNjcsIDc0MTcwLCA3NDE3NCwgNzQxNzgsIDc0MTgyLCA3NDE4NiwgNzQxOTAsIDc0MTk0LCAKKyAgICA3NDE5OCwgNzQyMDIsIDc0MjA2LCA3NDIxMCwgNzQyMTQsIDc0MjE4LCA3NDIyMiwgNzQyMjYsIDc0MjMwLCA3NDIzNCwgCisgICAgNzQyMzgsIDc0MjQyLCA3NDI0NiwgNzQyNTAsIDc0MjU0LCA3NDI1OCwgNzQyNjEsIDc0MjY1LCA3NDI2OSwgNzQyNzMsIAorICAgIDc0Mjc3LCA3NDI4MSwgNzQyODUsIDc0Mjg5LCA3NDI5MywgNzQyOTcsIDc0MzAxLCA3NDMwNSwgNzQzMDksIDc0MzEzLCAKKyAgICA3NDMxNywgNzQzMjEsIDc0MzI1LCA3NDMyOSwgNzQzMzMsIDc0MzM3LCA3NDM0MSwgNzQzNDUsIDc0MzQ5LCA3NDM1MywgCisgICAgNzQzNTcsIDc0MzYwLCA3NDM2NCwgNzQzNjgsIDc0MzcyLCA3NDM3NiwgNzQzODAsIDc0Mzg0LCA3NDM4OCwgNzQzOTEsIAorICAgIDc0Mzk1LCA3NDM5OSwgNzQ0MDMsIDc0NDA3LCA3NDQxMSwgNzQ0MTUsIDc0NDE5LCA3NDQyMywgNzQ0MjcsIDc0NDMxLCAKKyAgICA3NDQzNSwgNzQ0MzksIDc0NDQ0LCA3NDQ0OSwgNzQ0NTIsIDc0NDU3LCA3NDQ2MCwgNzQ0NjMsIDc0NDY2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3NDQ3MCwgNzQ0NzksIDc0NDg4LCA3NDQ5NywgNzQ1MDYsIDc0NTE1LCA3NDUyNCwgNzQ1MzMsIAorICAgIDc0NTQyLCA3NDU1MCwgNzQ1NTcsIDc0NTY1LCA3NDU3MiwgNzQ1ODAsIDc0NTkwLCA3NDU5OSwgNzQ2MDksIDc0NjE4LCAKKyAgICA3NDYyOCwgNzQ2MzYsIDc0NjQzLCA3NDY1MSwgNzQ2NTgsIDc0NjY2LCA3NDY3MSwgNzQ2NzYsIDc0NjgyLCA3NDY5MSwgCisgICAgNzQ2OTcsIDc0NzAzLCA3NDcxMCwgNzQ3MTksIDc0NzI3LCA3NDczNSwgNzQ3NDMsIDc0NzUwLCA3NDc1NywgNzQ3NjQsIAorICAgIDc0NzcxLCA3NDc3NiwgNzQ3ODEsIDc0Nzg2LCA3NDc5MSwgNzQ3OTYsIDc0ODAxLCA3NDgwNiwgNzQ4MTEsIDc0ODE5LCAKKyAgICA3NDgyNywgNzQ4MzMsIDc0ODM5LCA3NDg0NCwgNzQ4NDksIDc0ODU0LCA3NDg1OSwgNzQ4NjQsIDc0ODY5LCA3NDg3NCwgCisgICAgNzQ4NzksIDc0ODg4LCA3NDg5NywgNzQ5MDIsIDc0OTA3LCA3NDkxNywgNzQ5MjcsIDc0OTM0LCA3NDk0MSwgNzQ5NTAsIAorICAgIDc0OTU5LCA3NDk3MSwgNzQ5ODMsIDc0OTg5LCA3NDk5NSwgNzUwMDMsIDc1MDExLCA3NTAyMSwgNzUwMzEsIDc1MDM4LCAKKyAgICA3NTA0NSwgNzUwNTAsIDc1MDU1LCA3NTA2NywgNzUwNzksIDc1MDg3LCA3NTA5NSwgNzUxMDUsIDc1MTE1LCA3NTEyNywgCisgICAgNzUxMzksIDc1MTQ4LCA3NTE1NywgNzUxNjQsIDc1MTcxLCA3NTE3OCwgNzUxODUsIDc1MTk0LCA3NTIwMywgNzUyMDgsIAorICAgIDc1MjEzLCA3NTIyMCwgNzUyMjcsIDc1MjM0LCA3NTI0MSwgNzUyNTMsIDc1MjY1LCA3NTI3MCwgNzUyNzUsIDc1MjgwLCAKKyAgICA3NTI4NSwgNzUyOTAsIDc1Mjk1LCA3NTMwMCwgNzUzMDUsIDc1MzA5LCA3NTMxNCwgNzUzMTksIDc1MzI0LCA3NTMyOSwgCisgICAgNzUzMzQsIDc1MzQwLCA3NTM0NSwgNzUzNTAsIDc1MzU3LCA3NTM2NCwgNzUzNzEsIDc1Mzc4LCA3NTM4NSwgNzUzOTQsIAorICAgIDc1NDAzLCA3NTQwOSwgNzU0MTUsIDc1NDIxLCA3NTQyNywgNzU0MzQsIDc1NDQxLCA3NTQ0OCwgNzU0NTUsIDc1NDYyLCAKKyAgICA3NTQ2NiwgNzU0NzMsIDc1NDc4LCA3NTQ4MywgNzU0OTAsIDc1NTAzLCA3NTUwOSwgNzU1MTcsIDc1NTI1LCA3NTUzMiwgCisgICAgNzU1MzksIDc1NTQ4LCA3NTU1NywgNzU1NjQsIDc1NTcxLCA3NTU3OCwgNzU1ODUsIDc1NTkyLCA3NTU5OSwgNzU2MDYsIAorICAgIDc1NjEzLCA3NTYyMCwgNzU2MjcsIDc1NjM2LCA3NTY0NSwgNzU2NTQsIDc1NjYzLCA3NTY3MiwgNzU2ODEsIDc1NjkwLCAKKyAgICA3NTY5OSwgNzU3MDgsIDc1NzE3LCA3NTcyNCwgNzU3MzEsIDc1NzM3LCA3NTc0NSwgMCwgNzU3NTEsIDc1NzU4LCA3NTc2NSwgCisgICAgNzU3NzMsIDc1Nzc4LCA3NTc4MywgNzU3ODgsIDc1NzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3NTA1NiwgNzUwNjMsIDc1MDcwLCA3NTA3NiwgNzUwODQsIDc1MDkyLCA3NTEwMCwgNzUxMDgsIDc1MTE2LCAKLSAgICA3NTEyNCwgNzUxMzAsIDc1MTM2LCA3NTE0MywgNzUxNDksIDc1MTU1LCA3NTE2MSwgNzUxNjgsIDc1MTc1LCA3NTE4MiwgCi0gICAgNzUxODksIDc1MTk2LCA3NTIwMywgNzUyMTAsIDc1MjE3LCA3NTIyNCwgNzUyMzEsIDc1MjM4LCA3NTI0NSwgNzUyNTIsIAotICAgIDc1MjU5LCA3NTI2NSwgNzUyNzIsIDc1Mjc5LCA3NTI4NiwgNzUyOTMsIDc1MzAwLCA3NTMwNywgNzUzMTQsIDc1MzIxLCAKLSAgICA3NTMyOCwgNzUzMzUsIDc1MzQyLCA3NTM0OSwgNzUzNTYsIDc1MzYzLCA3NTM3MCwgNzUzNzcsIDc1Mzg0LCA3NTM5MSwgCi0gICAgNzUzOTksIDc1NDA3LCA3NTQxNSwgNzU0MjMsIDAsIDAsIDAsIDAsIDc1NDMxLCA3NTQzOSwgNzU0NDcsIDc1NDU1LCAKLSAgICA3NTQ2MywgNzU0NzEsIDc1NDc5LCA3NTQ4NSwgNzU0OTEsIDc1NDk3LCAwLCAwLCAwLCAwLCAwLCAwLCA3NTUwMywgNzU1MDcsIAotICAgIDc1NTEyLCA3NTUxNywgNzU1MjIsIDc1NTI3LCA3NTUzMiwgNzU1MzcsIDc1NTQyLCA3NTU0NywgNzU1NTIsIDc1NTU3LCAKLSAgICA3NTU2MiwgNzU1NjYsIDc1NTcxLCA3NTU3NiwgNzU1ODAsIDc1NTg1LCA3NTU5MCwgNzU1OTUsIDc1NjAwLCA3NTYwNSwgCi0gICAgNzU2MTAsIDc1NjE1LCA3NTYxOSwgNzU2MjQsIDc1NjI5LCA3NTYzNCwgNzU2MzksIDc1NjQzLCA3NTY0NywgNzU2NTEsIAotICAgIDc1NjU1LCA3NTY1OSwgNzU2NjMsIDc1NjY4LCA3NTY3MywgNzU2NzgsIDc1NjgzLCA3NTY4OCwgNzU2OTUsIDc1NzAxLCAKLSAgICA3NTcwNiwgNzU3MTEsIDc1NzE2LCA3NTcyMSwgNzU3MjcsIDc1NzM0LCA3NTc0MCwgNzU3NDcsIDc1NzU0LCA3NTc2MSwgCi0gICAgNzU3NjYsIDc1NzczLCA3NTc3OSwgNzU3ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NzkwLCA3NTc5NSwgNzU4MDAsIAotICAgIDc1ODA0LCA3NTgwOSwgNzU4MTMsIDc1ODE4LCA3NTgyMiwgNzU4MjcsIDc1ODMyLCA3NTgzOCwgNzU4NDMsIDc1ODQ5LCAKLSAgICA3NTg1MywgNzU4NTgsIDc1ODYzLCA3NTg2NywgNzU4NzIsIDc1ODc3LCA3NTg4MSwgNzU4ODYsIDc1ODkxLCA3NTg5NiwgCi0gICAgNzU5MDEsIDc1OTA2LCA3NTkxMSwgNzU5MTYsIDc1OTIxLCA3NTkyNiwgNzU5MzEsIDc1OTM2LCA3NTk0MSwgNzU5NDYsIAotICAgIDc1OTUxLCA3NTk1NiwgNzU5NjEsIDc1OTY2LCA3NTk3MSwgNzU5NzYsIDc1OTgwLCA3NTk4NSwgNzU5OTAsIDc1OTk1LCAKLSAgICA3NTk5OSwgNzYwMDMsIDc2MDA4LCA3NjAxMywgNzYwMTgsIDc2MDIzLCA3NjAyOCwgNzYwMzMsIDc2MDM3LCA3NjA0MiwgCi0gICAgNzYwNDgsIDc2MDU0LCA3NjA1OSwgNzYwNjUsIDc2MDcwLCA3NjA3NiwgNzYwODIsIDc2MDg5LCA3NjA5NSwgNzYxMDIsIAotICAgIDc2MTA3LCA3NjExMywgNzYxMTksIDc2MTI0LCA3NjEzMCwgNzYxMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDc2MTQxLCA3NjE0NSwgNzYxNTAsIDc2MTU1LCA3NjE1OSwgNzYxNjMsIDc2MTY3LCA3NjE3MSwgNzYxNzUsIDc2MTc5LCAKLSAgICA3NjE4NCwgNzYxODgsIDAsIDAsIDAsIDAsIDAsIDAsIDc2MTkzLCA3NjE5OCwgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIAotICAgIDc2MjE4LCA3NjIyMiwgNzYyMjcsIDc2MjMxLCA3NjIzNiwgNzYyNDAsIDc2MjQ0LCA3NjI0OCwgNzYyNTMsIDc2MjU3LCAKLSAgICA3NjI2MiwgNzYyNjcsIDc2MjcyLCA3NjI3OCwgNzYyODQsIDc2MjkxLCA3NjI5NiwgNzYzMDEsIDc2MzA3LCA3NjMxMSwgCi0gICAgNzYzMTYsIDc2MzE5LCA3NjMyMiwgNzYzMjYsIDAsIDAsIDc2MzMxLCA3NjMzOCwgNzYzNDQsIDc2MzUwLCA3NjM1NiwgCi0gICAgNzYzNjIsIDc2MzY4LCA3NjM3NCwgNzYzODEsIDc2Mzg3LCA3NjM5NCwgNzY0MDAsIDc2NDA3LCA3NjQxNCwgNzY0MjEsIAotICAgIDc2NDI4LCA3NjQzNSwgNzY0NDIsIDc2NDQ5LCA3NjQ1NiwgNzY0NjMsIDc2NDcwLCA3NjQ3NiwgNzY0ODMsIDc2NDg5LCAKLSAgICA3NjQ5NiwgNzY1MDMsIDc2NTEwLCA3NjUxNiwgNzY1MjMsIDc2NTMwLCA3NjUzNywgNzY1NDMsIDc2NTUwLCA3NjU1NywgCi0gICAgNzY1NjMsIDc2NTcwLCA3NjU3NiwgNzY1ODMsIDc2NTkwLCA3NjU5NiwgNzY2MDIsIDc2NjA5LCA3NjYxNSwgNzY2MjIsIAotICAgIDc2NjI5LCA3NjYzOCwgNzY2NDUsIDc2NjUyLCA3NjY1NiwgNzY2NjEsIDc2NjY2LCA3NjY3MSwgNzY2NzYsIDc2NjgxLCAKLSAgICA3NjY4NSwgNzY2OTAsIDc2Njk0LCA3NjY5OSwgNzY3MDQsIDc2NzA5LCA3NjcxNCwgNzY3MTksIDc2NzI0LCA3NjcyOCwgCi0gICAgNzY3MzMsIDc2NzM3LCA3Njc0MiwgNzY3NDcsIDc2NzUyLCA3Njc1NywgNzY3NjEsIDc2NzY2LCA3Njc3MSwgNzY3NzYsIAotICAgIDc2NzgyLCA3Njc4NywgNzY3OTMsIDc2Nzk5LCA3NjgwNSwgNzY4MTEsIDc2ODE3LCA3NjgyMiwgNzY4MjgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc2ODMyLCA3NjgzNywgNzY4NDEsIDc2ODQ1LCA3Njg0OSwgNzY4NTMsIDc2ODU3LCAKLSAgICA3Njg2MSwgNzY4NjUsIDc2ODY5LCA3Njg3MywgNzY4NzcsIDc2ODgxLCA3Njg4NSwgNzY4ODksIDc2ODkzLCA3Njg5NywgCi0gICAgNzY5MDEsIDc2OTA1LCA3NjkwOSwgNzY5MTMsIDc2OTE3LCA3NjkyMSwgNzY5MjUsIDc2OTI5LCA3NjkzMywgNzY5MzcsIAotICAgIDc2OTQxLCA3Njk0NSwgNzY5NDksIDAsIDAsIDAsIDc2OTUzLCA3Njk1NywgNzY5NjEsIDc2OTY1LCA3Njk2OSwgNzY5NzIsIAotICAgIDc2OTc4LCA3Njk4MSwgNzY5ODUsIDc2OTg4LCA3Njk5NCwgNzcwMDAsIDc3MDA4LCA3NzAxMSwgNzcwMTUsIDc3MDE4LCAKLSAgICA3NzAyMSwgNzcwMjcsIDc3MDMzLCA3NzAzNywgNzcwNDMsIDc3MDQ3LCA3NzA1MSwgNzcwNTcsIDc3MDYxLCA3NzA2NywgCi0gICAgNzcwNzMsIDc3MDc3LCA3NzA4MSwgNzcwODcsIDc3MDkxLCA3NzA5NywgNzcxMDMsIDc3MTA3LCA3NzExMywgNzcxMTcsIAotICAgIDc3MTIzLCA3NzEyNywgNzcxMzAsIDc3MTM2LCA3NzE0MCwgNzcxNDYsIDc3MTQ5LCA3NzE1MiwgNzcxNTYsIDc3MTYyLCAKLSAgICA3NzE2NiwgNzcxNzAsIDc3MTc2LCA3NzE4MiwgNzcxODYsIDc3MTg5LCA3NzE5NSwgNzcyMDAsIDc3MjA1LCA3NzIxMCwgCi0gICAgNzcyMTcsIDc3MjIyLCA3NzIyOSwgNzcyMzQsIDc3MjQxLCA3NzI0NiwgNzcyNTEsIDc3MjU2LCA3NzI2MSwgNzcyNjQsIAotICAgIDc3MjY4LCA3NzI3MiwgNzcyNzcsIDc3MjgyLCA3NzI4NywgNzcyOTIsIDc3Mjk3LCA3NzMwMiwgNzczMDcsIDc3MzEyLCAKLSAgICA3NzMxOSwgNzczMjQsIDAsIDc3MzMxLCA3NzMzNCwgNzczMzgsIDc3MzQxLCA3NzM0NCwgNzczNDcsIDc3MzUwLCA3NzM1MywgCi0gICAgNzczNTYsIDc3MzYwLCA3NzM2MywgMCwgMCwgMCwgMCwgNzczNjcsIDc3Mzc0LCA3NzM3OSwgNzczODUsIDc3MzkxLCAKLSAgICA3NzM5NywgNzc0MDMsIDc3NDA5LCA3NzQxNSwgNzc0MjIsIDc3NDI5LCA3NzQzNiwgNzc0NDMsIDc3NDUwLCA3NzQ1NywgCi0gICAgNzc0NjQsIDc3NDcxLCA3NzQ3OCwgNzc0ODUsIDc3NDkyLCA3NzQ5OCwgNzc1MDQsIDc3NTEwLCA3NzUxNiwgNzc1MjIsIAotICAgIDc3NTI4LCA3NzUzNSwgNzc1NDEsIDc3NTQ4LCA3NzU1NSwgNzc1NjIsIDc3NTY5LCA3NzU3NiwgMCwgNzc1ODMsIDc3NTg3LCAKLSAgICA3NzU5MSwgNzc1OTUsIDc3NTk5LCA3NzYwNCwgNzc2MDgsIDc3NjEyLCA3NzYxNywgNzc2MjIsIDc3NjI3LCA3NzYzMiwgCi0gICAgNzc2MzcsIDc3NjQyLCA3NzY0NywgNzc2NTIsIDc3NjU3LCA3NzY2MiwgNzc2NjcsIDc3NjcyLCA3NzY3NywgNzc2ODIsIAotICAgIDc3Njg3LCA3NzY5MiwgNzc2OTcsIDc3NzAyLCA3NzcwNywgNzc3MTEsIDc3NzE2LCA3NzcyMSwgNzc3MjYsIDc3NzMxLCAKLSAgICA3NzczNiwgNzc3NDAsIDc3NzQ1LCA3Nzc0OSwgNzc3NTQsIDc3NzU5LCA3Nzc2NCwgNzc3NjksIDc3Nzc0LCA3Nzc3OCwgCi0gICAgNzc3ODQsIDc3Nzg5LCA3Nzc5NSwgNzc4MDEsIDc3ODA2LCA3NzgxMiwgNzc4MTcsIDc3ODIzLCA3NzgyOSwgNzc4MzUsIAotICAgIDc3ODQwLCA3Nzg0NiwgNzc4NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3ODU4LCA3Nzg2NCwgNzc4NzAsIAotICAgIDc3ODc2LCA3Nzg4MywgNzc4ODksIDc3ODk1LCA3NzkwMSwgNzc5MDcsIDc3OTEzLCA3NzkxOCwgNzc5MjMsIDc3OTI5LCAKLSAgICA3NzkzNiwgMCwgMCwgNzc5NDMsIDc3OTQ4LCA3Nzk1MiwgNzc5NTYsIDc3OTYwLCA3Nzk2NCwgNzc5NjgsIDc3OTcyLCAKLSAgICA3Nzk3NywgNzc5ODEsIDAsIDAsIDc3OTg2LCA3Nzk5MiwgNzc5OTgsIDc4MDA1LCA3ODAxMywgNzgwMTksIDc4MDI1LCAKLSAgICA3ODAzMSwgNzgwMzcsIDc4MDQzLCA3ODA0OSwgNzgwNTUsIDc4MDYxLCA3ODA2NywgNzgwNzMsIDc4MDc5LCA3ODA4NSwgCi0gICAgNzgwOTEsIDc4MDk2LCA3ODEwMiwgNzgxMDgsIDc4MTE1LCA3ODEyMSwgNzgxMjcsIDc4MTMzLCA3ODE0MCwgNzgxNDcsIAotICAgIDc4MTU0LCA3ODE2MCwgNzgxNjUsIDc4MTcwLCA3ODE3NiwgNzgxODQsIDc4MTkxLCA3ODE5OCwgNzgyMDYsIDc4MjE0LCAKLSAgICA3ODIyMSwgNzgyMjgsIDc4MjM1LCA3ODI0MiwgNzgyNDksIDc4MjU2LCA3ODI2MywgNzgyNzAsIDc4Mjc3LCA3ODI4NCwgCi0gICAgNzgyOTEsIDc4Mjk4LCA3ODMwNSwgNzgzMTIsIDc4MzE5LCA3ODMyNiwgNzgzMzMsIDc4MzQwLCA3ODM0NywgNzgzNTQsIAotICAgIDc4MzYwLCA3ODM2NiwgNzgzNzMsIDc4MzgwLCA3ODM4NywgNzgzOTQsIDc4NDAxLCA3ODQwOCwgNzg0MTUsIDc4NDIyLCAKLSAgICA3ODQyOSwgNzg0MzYsIDc4NDQzLCA3ODQ1MCwgNzg0NTcsIDc4NDY0LCA3ODQ3MSwgNzg0NzgsIDc4NDg1LCA3ODQ5MiwgCi0gICAgNzg0OTksIDc4NTA2LCA3ODUxMywgNzg1MjAsIDc4NTI3LCA3ODUzNCwgNzg1NDAsIDc4NTQ2LCA3ODU1MywgNzg1NTksIAotICAgIDc4NTY0LCA3ODU3MCwgNzg1NzUsIDc4NTgwLCA3ODU4NSwgNzg1OTIsIDc4NTk4LCA3ODYwNCwgNzg2MTAsIDc4NjE2LCAKLSAgICA3ODYyMiwgNzg2MjgsIDc4NjM0LCA3ODY0MiwgNzg2NTAsIDc4NjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODY2NiwgNzg2NzIsIDc4Njc4LCA3ODY4NCwgCi0gICAgNzg2OTIsIDc4NzAwLCA3ODcwNiwgNzg3MTIsIDc4NzE5LCA3ODcyNiwgNzg3MzMsIDc4NzQwLCA3ODc0NywgNzg3NTQsIAotICAgIDc4NzYxLCA3ODc2OCwgNzg3NzUsIDc4NzgzLCA3ODc5MSwgNzg3OTksIDc4ODA3LCA3ODgxNSwgNzg4MjEsIDc4ODI5LCAKLSAgICA3ODgzNSwgNzg4NDMsIDc4ODUyLCA3ODg2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg4NjYsIDc4ODcwLCAKLSAgICA3ODg3NCwgNzg4NzgsIDc4ODgyLCA3ODg4NiwgMCwgMCwgNzg4OTAsIDc4ODk0LCA3ODg5OCwgNzg5MDIsIDc4OTA2LCAKLSAgICA3ODkxMCwgMCwgMCwgNzg5MTQsIDc4OTE4LCA3ODkyMiwgNzg5MjYsIDc4OTMwLCA3ODkzNCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzg5MzgsIDc4OTQyLCA3ODk0NiwgNzg5NTAsIDc4OTU0LCA3ODk1OCwgNzg5NjIsIDAsIDc4OTY2LCAKLSAgICA3ODk3MCwgNzg5NzQsIDc4OTc4LCA3ODk4MiwgNzg5ODYsIDc4OTkwLCAwLCA3ODk5NCwgNzkwMDEsIDc5MDA3LCA3OTAxMywgCi0gICAgNzkwMTksIDc5MDI2LCA3OTAzMywgNzkwNDIsIDc5MDUzLCA3OTA2MywgNzkwNzIsIDc5MDgwLCA3OTA4OCwgNzkwOTYsIAotICAgIDc5MTAyLCA3OTExMCwgNzkxMTcsIDc5MTI0LCA3OTEzMywgNzkxNDQsIDc5MTUyLCA3OTE2MiwgNzkxNjgsIDc5MTc4LCAKLSAgICA3OTE4NywgNzkxOTIsIDc5MjAwLCA3OTIwOSwgNzkyMTQsIDc5MjIzLCA3OTIzMCwgNzkyNDAsIDc5MjUyLCA3OTI1NywgCi0gICAgNzkyNjQsIDc5MjcxLCA3OTI3NiwgNzkyODYsIDc5Mjk2LCA3OTMwNiwgNzkzMTYsIDc5MzMxLCA3OTM0NCwgNzkzNTUsIAotICAgIDc5MzYzLCA3OTM2OCwgNzkzNzksIDc5Mzg4LCA3OTM5NSwgNzk0MDIsIDc5NDA4LCA3OTQxNCwgNzk0MTksIDc5NDI2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTQzMiwgNzk0MzYsIDc5NDQwLCA3OTQ0NCwgNzk0NDgsIDc5NDUyLCAKLSAgICA3OTQ1NywgNzk0NjIsIDc5NDY2LCA3OTQ3MSwgNzk0NzYsIDc5NDgxLCA3OTQ4NiwgNzk0OTEsIDc5NDk1LCA3OTUwMCwgCi0gICAgNzk1MDUsIDc5NTEwLCA3OTUxNSwgNzk1MjAsIDc5NTI1LCA3OTUzMCwgNzk1MzUsIDc5NTQwLCA3OTU0NSwgNzk1NTAsIAotICAgIDc5NTU0LCA3OTU1OSwgNzk1NjQsIDc5NTY5LCA3OTU3NCwgNzk1NzksIDc5NTg0LCA3OTU4OSwgNzk1OTQsIDc5NTk5LCAKLSAgICA3OTYwNCwgNzk2MDksIDc5NjE0LCA3OTYxOSwgNzk2MjQsIDc5NjI5LCA3OTYzNCwgNzk2MzksIDc5NjQ0LCA3OTY0OSwgCi0gICAgNzk2NTMsIDc5NjU4LCA3OTY2MywgNzk2NjgsIDc5NjczLCA3OTY3OCwgNzk2ODMsIDc5Njg4LCA3OTY5MywgNzk2OTgsIAotICAgIDc5NzAzLCA3OTcwOCwgNzk3MTMsIDc5NzE4LCA3OTcyMywgNzk3MjgsIDc5NzMzLCA3OTczOCwgNzk3NDMsIDc5NzQ4LCAKLSAgICA3OTc1MywgNzk3NTgsIDc5NzYzLCA3OTc2OCwgNzk3NzMsIDc5Nzc4LCA3OTc4MywgNzk3ODgsIDc5NzkzLCA3OTc5OCwgCi0gICAgNzk4MDMsIDc5ODA4LCA3OTgxMywgNzk4MTgsIDc5ODIyLCA3OTgyOSwgNzk4MzYsIDc5ODQzLCA3OTg1MCwgNzk4NTYsIAotICAgIDc5ODYzLCA3OTg3MCwgNzk4NzcsIDc5ODg0LCA3OTg5MSwgNzk4OTgsIDc5OTA1LCA3OTkxMiwgNzk5MTksIDc5OTI2LCAKLSAgICA3OTkzMiwgNzk5MzksIDc5OTQ2LCA3OTk1MywgNzk5NjAsIDc5OTY3LCA3OTk3NCwgNzk5ODEsIDc5OTg4LCA3OTk5NSwgCi0gICAgODAwMDIsIDgwMDA5LCA4MDAxOCwgODAwMjcsIDgwMDM2LCA4MDA0NSwgODAwNTQsIDgwMDYzLCA4MDA3MiwgODAwODEsIAotICAgIDgwMDg5LCA4MDA5NywgODAxMDUsIDgwMTEzLCA4MDEyMSwgODAxMjksIDgwMTM3LCA4MDE0NSwgODAxNTEsIDgwMTU5LCAwLCAKLSAgICAwLCA4MDE2NywgODAxNzQsIDgwMTgwLCA4MDE4NiwgODAxOTIsIDgwMTk4LCA4MDIwNCwgODAyMTAsIDgwMjE3LCA4MDIyMywgCisgICAgMCwgMCwgNzU3OTgsIDc1ODA1LCA3NTgxMiwgNzU4MTgsIDc1ODI2LCA3NTgzNCwgNzU4NDIsIDc1ODUwLCA3NTg1OCwgCisgICAgNzU4NjYsIDc1ODcyLCA3NTg3OCwgNzU4ODUsIDc1ODkxLCA3NTg5NywgNzU5MDMsIDc1OTEwLCA3NTkxNywgNzU5MjQsIAorICAgIDc1OTMxLCA3NTkzOCwgNzU5NDUsIDc1OTUyLCA3NTk1OSwgNzU5NjYsIDc1OTczLCA3NTk4MCwgNzU5ODcsIDc1OTk0LCAKKyAgICA3NjAwMSwgNzYwMDcsIDc2MDE0LCA3NjAyMSwgNzYwMjgsIDc2MDM1LCA3NjA0MiwgNzYwNDksIDc2MDU2LCA3NjA2MywgCisgICAgNzYwNzAsIDc2MDc3LCA3NjA4NCwgNzYwOTEsIDc2MDk4LCA3NjEwNSwgNzYxMTIsIDc2MTE5LCA3NjEyNiwgNzYxMzMsIAorICAgIDc2MTQxLCA3NjE0OSwgNzYxNTcsIDc2MTY1LCAwLCAwLCAwLCAwLCA3NjE3MywgNzYxODEsIDc2MTg5LCA3NjE5NywgCisgICAgNzYyMDUsIDc2MjEzLCA3NjIyMSwgNzYyMjcsIDc2MjMzLCA3NjIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgNzYyNDUsIDc2MjQ5LCAKKyAgICA3NjI1NCwgNzYyNTksIDc2MjY0LCA3NjI2OSwgNzYyNzQsIDc2Mjc5LCA3NjI4NCwgNzYyODksIDc2Mjk0LCA3NjI5OSwgCisgICAgNzYzMDMsIDc2MzA3LCA3NjMxMiwgNzYzMTcsIDc2MzIxLCA3NjMyNiwgNzYzMzEsIDc2MzM2LCA3NjM0MSwgNzYzNDYsIAorICAgIDc2MzUxLCA3NjM1NiwgNzYzNjAsIDc2MzY1LCA3NjM2OSwgNzYzNzQsIDc2Mzc5LCA3NjM4MywgNzYzODcsIDc2MzkxLCAKKyAgICA3NjM5NSwgNzYzOTksIDc2NDAzLCA3NjQwOCwgNzY0MTMsIDc2NDE4LCA3NjQyMywgNzY0MjgsIDc2NDM1LCA3NjQ0MSwgCisgICAgNzY0NDYsIDc2NDUxLCA3NjQ1NiwgNzY0NjEsIDc2NDY3LCA3NjQ3NCwgNzY0ODAsIDc2NDg3LCA3NjQ5NCwgNzY1MDEsIAorICAgIDc2NTA2LCA3NjUxMywgNzY1MTksIDc2NTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjUzMCwgNzY1MzUsIDc2NTQwLCAKKyAgICA3NjU0NCwgNzY1NDksIDc2NTUzLCA3NjU1OCwgNzY1NjIsIDc2NTY3LCA3NjU3MiwgNzY1NzgsIDc2NTgzLCA3NjU4OSwgCisgICAgNzY1OTMsIDc2NTk4LCA3NjYwMywgNzY2MDcsIDc2NjEyLCA3NjYxNywgNzY2MjEsIDc2NjI2LCA3NjYzMSwgNzY2MzYsIAorICAgIDc2NjQxLCA3NjY0NiwgNzY2NTEsIDc2NjU2LCA3NjY2MSwgNzY2NjYsIDc2NjcxLCA3NjY3NiwgNzY2ODEsIDc2Njg2LCAKKyAgICA3NjY5MSwgNzY2OTYsIDc2NzAxLCA3NjcwNiwgNzY3MTEsIDc2NzE1LCA3NjcxOSwgNzY3MjQsIDc2NzI5LCA3NjczNCwgCisgICAgNzY3MzgsIDc2NzQyLCA3Njc0NywgNzY3NTEsIDc2NzU2LCA3Njc2MSwgNzY3NjYsIDc2NzcxLCA3Njc3NSwgNzY3ODAsIAorICAgIDc2Nzg2LCA3Njc5MiwgNzY3OTcsIDc2ODAzLCA3NjgwOCwgNzY4MTQsIDc2ODIwLCA3NjgyNywgNzY4MzMsIDc2ODQwLCAKKyAgICA3Njg0NSwgNzY4NTEsIDc2ODU3LCA3Njg2MiwgNzY4NjgsIDc2ODc0LCA3Njg3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzY4ODQsIDc2ODg4LCA3Njg5MywgNzY4OTgsIDc2OTAyLCA3NjkwNiwgNzY5MTAsIDc2OTE0LCA3NjkxOCwgNzY5MjIsIAorICAgIDc2OTI3LCA3NjkzMSwgMCwgMCwgMCwgMCwgMCwgMCwgNzY5MzYsIDc2OTQxLCA3Njk0NSwgNzY5NDksIDc2OTUzLCA3Njk1NywgCisgICAgNzY5NjEsIDc2OTY1LCA3Njk3MCwgNzY5NzQsIDc2OTc5LCA3Njk4MywgNzY5ODcsIDc2OTkxLCA3Njk5NSwgNzY5OTksIAorICAgIDc3MDA0LCA3NzAwOSwgNzcwMTQsIDc3MDIwLCA3NzAyNiwgNzcwMzMsIDc3MDM4LCA3NzA0MywgNzcwNDksIDc3MDUzLCAKKyAgICA3NzA1OCwgNzcwNjEsIDc3MDY0LCA3NzA2OCwgMCwgMCwgNzcwNzMsIDc3MDgwLCA3NzA4NiwgNzcwOTIsIDc3MDk4LCAKKyAgICA3NzEwNCwgNzcxMTAsIDc3MTE2LCA3NzEyMywgNzcxMjksIDc3MTM2LCA3NzE0MiwgNzcxNDksIDc3MTU2LCA3NzE2MywgCisgICAgNzcxNzAsIDc3MTc3LCA3NzE4NCwgNzcxOTEsIDc3MTk4LCA3NzIwNSwgNzcyMTEsIDc3MjE3LCA3NzIyNCwgNzcyMzAsIAorICAgIDc3MjM3LCA3NzI0NCwgNzcyNTEsIDc3MjU3LCA3NzI2MywgNzcyNzAsIDc3Mjc3LCA3NzI4MywgNzcyOTAsIDc3Mjk3LCAKKyAgICA3NzMwMywgNzczMTAsIDc3MzE2LCA3NzMyMywgNzczMzAsIDc3MzM2LCA3NzM0MiwgNzczNDksIDc3MzU1LCA3NzM2MiwgCisgICAgNzczNjksIDc3Mzc4LCA3NzM4NSwgNzczOTIsIDc3Mzk2LCA3NzQwMSwgNzc0MDYsIDc3NDExLCA3NzQxNiwgNzc0MjAsIAorICAgIDc3NDI0LCA3NzQyOSwgNzc0MzMsIDc3NDM4LCA3NzQ0MywgNzc0NDgsIDc3NDUzLCA3NzQ1OCwgNzc0NjIsIDc3NDY2LCAKKyAgICA3NzQ3MSwgNzc0NzUsIDc3NDgwLCA3NzQ4NSwgNzc0OTAsIDc3NDk1LCA3NzQ5OSwgNzc1MDQsIDc3NTA5LCA3NzUxNCwgCisgICAgNzc1MjAsIDc3NTI1LCA3NzUzMSwgNzc1MzcsIDc3NTQzLCA3NzU0OSwgNzc1NTUsIDc3NTYwLCA3NzU2NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzc1NzAsIDc3NTc1LCA3NzU3OSwgNzc1ODMsIDc3NTg3LCA3NzU5MSwgNzc1OTUsIAorICAgIDc3NTk5LCA3NzYwMywgNzc2MDcsIDc3NjExLCA3NzYxNSwgNzc2MTksIDc3NjIzLCA3NzYyNywgNzc2MzEsIDc3NjM1LCAKKyAgICA3NzYzOSwgNzc2NDMsIDc3NjQ3LCA3NzY1MSwgNzc2NTUsIDc3NjU5LCA3NzY2MywgNzc2NjcsIDc3NjcxLCA3NzY3NSwgCisgICAgNzc2NzksIDc3NjgzLCA3NzY4NywgMCwgMCwgMCwgNzc2OTEsIDc3Njk2LCA3NzcwMSwgNzc3MDYsIDc3NzExLCA3NzcxNSwgCisgICAgNzc3MjIsIDc3NzI2LCA3NzczMSwgNzc3MzUsIDc3NzQyLCA3Nzc0OSwgNzc3NTgsIDc3NzYyLCA3Nzc2NywgNzc3NzEsIAorICAgIDc3Nzc1LCA3Nzc4MiwgNzc3ODksIDc3Nzk0LCA3NzgwMSwgNzc4MDYsIDc3ODExLCA3NzgxOCwgNzc4MjMsIDc3ODMwLCAKKyAgICA3NzgzNywgNzc4NDIsIDc3ODQ3LCA3Nzg1NCwgNzc4NTksIDc3ODY2LCA3Nzg3MywgNzc4NzgsIDc3ODg1LCA3Nzg5MCwgCisgICAgNzc4OTcsIDc3OTAxLCA3NzkwNSwgNzc5MTIsIDc3OTE3LCA3NzkyNCwgNzc5MjgsIDc3OTMyLCA3NzkzNywgNzc5NDQsIAorICAgIDc3OTQ4LCA3Nzk1MywgNzc5NjAsIDc3OTY3LCA3Nzk3MiwgNzc5NzYsIDc3OTgzLCA3Nzk4OSwgNzc5OTUsIDc4MDAxLCAKKyAgICA3ODAwOSwgNzgwMTUsIDc4MDIzLCA3ODAyOSwgNzgwMzcsIDc4MDQzLCA3ODA0OSwgNzgwNTUsIDc4MDYxLCA3ODA2NSwgCisgICAgNzgwNzAsIDc4MDc1LCA3ODA4MSwgNzgwODcsIDc4MDkzLCA3ODA5OSwgNzgxMDUsIDc4MTExLCA3ODExNywgNzgxMjMsIAorICAgIDc4MTMxLCA3ODEzNywgMCwgNzgxNDUsIDc4MTQ5LCA3ODE1NCwgNzgxNTgsIDc4MTYyLCA3ODE2NiwgNzgxNzAsIDc4MTc0LCAKKyAgICA3ODE3OCwgNzgxODMsIDc4MTg3LCAwLCAwLCAwLCAwLCA3ODE5MiwgNzgyMDAsIDc4MjA2LCA3ODIxMiwgNzgyMTgsIAorICAgIDc4MjI0LCA3ODIzMCwgNzgyMzYsIDc4MjQyLCA3ODI0OSwgNzgyNTYsIDc4MjYzLCA3ODI3MCwgNzgyNzcsIDc4Mjg0LCAKKyAgICA3ODI5MSwgNzgyOTgsIDc4MzA1LCA3ODMxMiwgNzgzMTksIDc4MzI1LCA3ODMzMSwgNzgzMzcsIDc4MzQzLCA3ODM0OSwgCisgICAgNzgzNTUsIDc4MzYyLCA3ODM2OCwgNzgzNzUsIDc4MzgyLCA3ODM4OSwgNzgzOTYsIDc4NDAzLCAwLCA3ODQxMCwgNzg0MTQsIAorICAgIDc4NDE4LCA3ODQyMiwgNzg0MjYsIDc4NDMxLCA3ODQzNSwgNzg0MzksIDc4NDQ0LCA3ODQ0OSwgNzg0NTQsIDc4NDU5LCAKKyAgICA3ODQ2NCwgNzg0NjksIDc4NDc0LCA3ODQ3OSwgNzg0ODQsIDc4NDg5LCA3ODQ5NCwgNzg0OTksIDc4NTA0LCA3ODUwOSwgCisgICAgNzg1MTQsIDc4NTE5LCA3ODUyNCwgNzg1MjgsIDc4NTMzLCA3ODUzNywgNzg1NDIsIDc4NTQ3LCA3ODU1MiwgNzg1NTcsIAorICAgIDc4NTYyLCA3ODU2NiwgNzg1NzEsIDc4NTc1LCA3ODU4MCwgNzg1ODQsIDc4NTg5LCA3ODU5NCwgNzg1OTksIDc4NjAzLCAKKyAgICA3ODYwOSwgNzg2MTQsIDc4NjIwLCA3ODYyNiwgNzg2MzEsIDc4NjM3LCA3ODY0MiwgNzg2NDgsIDc4NjU0LCA3ODY2MCwgCisgICAgNzg2NjUsIDc4NjcxLCA3ODY3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg2ODIsIDc4Njg4LCA3ODY5NCwgCisgICAgNzg3MDAsIDc4NzA3LCA3ODcxMywgNzg3MTksIDc4NzI1LCA3ODczMSwgNzg3MzcsIDc4NzQyLCA3ODc0NywgNzg3NTMsIAorICAgIDc4NzYwLCAwLCAwLCA3ODc2NywgNzg3NzIsIDc4Nzc2LCA3ODc4MCwgNzg3ODQsIDc4Nzg4LCA3ODc5MiwgNzg3OTYsIAorICAgIDc4ODAxLCA3ODgwNSwgMCwgMCwgNzg4MTAsIDc4ODE2LCA3ODgyMiwgNzg4MjksIDc4ODM3LCA3ODg0MywgNzg4NDksIAorICAgIDc4ODU1LCA3ODg2MSwgNzg4NjcsIDc4ODczLCA3ODg3OSwgNzg4ODUsIDc4ODkxLCA3ODg5NywgNzg5MDMsIDc4OTA4LCAKKyAgICA3ODkxNCwgNzg5MTksIDc4OTI1LCA3ODkzMSwgNzg5MzgsIDc4OTQ0LCA3ODk1MCwgNzg5NTYsIDc4OTYzLCA3ODk3MCwgCisgICAgNzg5NzcsIDc4OTgzLCA3ODk4OCwgNzg5OTMsIDc4OTk5LCA3OTAwNywgNzkwMTQsIDc5MDIxLCA3OTAyOSwgNzkwMzcsIAorICAgIDc5MDQ0LCA3OTA1MSwgNzkwNTgsIDc5MDY1LCA3OTA3MiwgNzkwNzksIDc5MDg2LCA3OTA5MywgNzkxMDAsIDc5MTA3LCAKKyAgICA3OTExNCwgNzkxMjEsIDc5MTI4LCA3OTEzNSwgNzkxNDIsIDc5MTQ5LCA3OTE1NiwgNzkxNjMsIDc5MTcwLCA3OTE3NywgCisgICAgNzkxODMsIDc5MTg5LCA3OTE5NiwgNzkyMDMsIDc5MjEwLCA3OTIxNywgNzkyMjQsIDc5MjMxLCA3OTIzOCwgNzkyNDUsIAorICAgIDc5MjUyLCA3OTI1OSwgNzkyNjYsIDc5MjczLCA3OTI4MCwgNzkyODcsIDc5Mjk0LCA3OTMwMSwgNzkzMDgsIDc5MzE1LCAKKyAgICA3OTMyMiwgNzkzMjksIDc5MzM2LCA3OTM0MywgNzkzNTAsIDc5MzU3LCA3OTM2MywgNzkzNjksIDc5Mzc2LCA3OTM4MiwgCisgICAgNzkzODcsIDc5MzkzLCA3OTM5OCwgNzk0MDMsIDc5NDA4LCA3OTQxNSwgNzk0MjEsIDc5NDI3LCA3OTQzMywgNzk0MzksIAorICAgIDc5NDQ1LCA3OTQ1MSwgNzk0NTcsIDc5NDY1LCA3OTQ3MywgNzk0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5NDg5LCA3OTQ5NSwgNzk1MDEsIDc5NTA3LCAKKyAgICA3OTUxNSwgNzk1MjMsIDc5NTI5LCA3OTUzNSwgNzk1NDIsIDc5NTQ5LCA3OTU1NiwgNzk1NjMsIDc5NTcwLCA3OTU3NywgCisgICAgNzk1ODQsIDc5NTkxLCA3OTU5OCwgNzk2MDYsIDc5NjE0LCA3OTYyMiwgNzk2MzAsIDc5NjM4LCA3OTY0NCwgNzk2NTIsIAorICAgIDc5NjU4LCA3OTY2NiwgNzk2NzUsIDc5NjgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTY4OSwgNzk2OTMsIAorICAgIDc5Njk3LCA3OTcwMSwgNzk3MDUsIDc5NzA5LCAwLCAwLCA3OTcxMywgNzk3MTcsIDc5NzIxLCA3OTcyNSwgNzk3MjksIAorICAgIDc5NzMzLCAwLCAwLCA3OTczNywgNzk3NDEsIDc5NzQ1LCA3OTc0OSwgNzk3NTMsIDc5NzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3OTc2MSwgNzk3NjUsIDc5NzY5LCA3OTc3MywgNzk3NzcsIDc5NzgxLCA3OTc4NSwgMCwgNzk3ODksIAorICAgIDc5NzkzLCA3OTc5NywgNzk4MDEsIDc5ODA1LCA3OTgwOSwgNzk4MTMsIDAsIDc5ODE3LCA3OTgyNCwgNzk4MzAsIDc5ODM2LCAKKyAgICA3OTg0MiwgNzk4NDksIDc5ODU2LCA3OTg2NSwgNzk4NzcsIDc5ODg3LCA3OTg5NiwgNzk5MDQsIDc5OTEyLCA3OTkyMCwgCisgICAgNzk5MjYsIDc5OTM0LCA3OTk0MSwgNzk5NDgsIDc5OTU3LCA3OTk2OCwgNzk5NzYsIDc5OTg2LCA3OTk5MiwgODAwMDIsIAorICAgIDgwMDExLCA4MDAxNiwgODAwMjQsIDgwMDMzLCA4MDAzOCwgODAwNDcsIDgwMDU0LCA4MDA2NCwgODAwNzYsIDgwMDgxLCAKKyAgICA4MDA4OCwgODAwOTUsIDgwMTAwLCA4MDExMCwgODAxMjAsIDgwMTMwLCA4MDE0MCwgODAxNTUsIDgwMTY4LCA4MDE3OSwgCisgICAgODAxODcsIDgwMTkyLCA4MDIwNCwgODAyMTMsIDgwMjIwLCA4MDIyNywgODAyMzMsIDgwMjM5LCA4MDI0NCwgODAyNTEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwMjU3LCA4MDI2MSwgODAyNjUsIDgwMjY5LCA4MDI3MywgODAyNzcsIAorICAgIDgwMjgyLCA4MDI4NywgODAyOTEsIDgwMjk2LCA4MDMwMSwgODAzMDYsIDgwMzExLCA4MDMxNiwgODAzMjAsIDgwMzI1LCAKKyAgICA4MDMzMCwgODAzMzUsIDgwMzQwLCA4MDM0NSwgODAzNDksIDgwMzU0LCA4MDM1OSwgODAzNjQsIDgwMzY5LCA4MDM3NCwgCisgICAgODAzNzgsIDgwMzgzLCA4MDM4OCwgODAzOTMsIDgwMzk4LCA4MDQwMiwgODA0MDcsIDgwNDEyLCA4MDQxNywgODA0MjIsIAorICAgIDgwNDI3LCA4MDQzMiwgODA0MzcsIDgwNDQyLCA4MDQ0NywgODA0NTIsIDgwNDU3LCA4MDQ2MiwgODA0NjcsIDgwNDcyLCAKKyAgICA4MDQ3NywgODA0ODIsIDgwNDg3LCA4MDQ5MiwgODA0OTcsIDgwNTAyLCA4MDUwNywgODA1MTIsIDgwNTE3LCA4MDUyMiwgCisgICAgODA1MjcsIDgwNTMyLCA4MDUzNywgODA1NDIsIDgwNTQ3LCA4MDU1MiwgODA1NTcsIDgwNTYyLCA4MDU2NywgODA1NzIsIAorICAgIDgwNTc3LCA4MDU4MiwgODA1ODcsIDgwNTkyLCA4MDU5NywgODA2MDIsIDgwNjA3LCA4MDYxMiwgODA2MTcsIDgwNjIyLCAKKyAgICA4MDYyNywgODA2MzIsIDgwNjM3LCA4MDY0MiwgODA2NDYsIDgwNjUzLCA4MDY2MCwgODA2NjcsIDgwNjc0LCA4MDY4MCwgCisgICAgODA2ODYsIDgwNjkzLCA4MDcwMCwgODA3MDcsIDgwNzE0LCA4MDcyMSwgODA3MjgsIDgwNzM1LCA4MDc0MiwgODA3NDksIAorICAgIDgwNzU1LCA4MDc2MiwgODA3NjksIDgwNzc2LCA4MDc4MywgODA3OTAsIDgwNzk3LCA4MDgwNCwgODA4MTEsIDgwODE4LCAKKyAgICA4MDgyNSwgODA4MzIsIDgwODQxLCA4MDg1MCwgODA4NTksIDgwODY4LCA4MDg3NywgODA4ODYsIDgwODk1LCA4MDkwNCwgCisgICAgODA5MTIsIDgwOTIwLCA4MDkyOCwgODA5MzYsIDgwOTQ0LCA4MDk1MiwgODA5NjAsIDgwOTY4LCA4MDk3NCwgODA5ODIsIDAsIAorICAgIDAsIDgwOTkwLCA4MDk5NywgODEwMDMsIDgxMDA5LCA4MTAxNSwgODEwMjEsIDgxMDI3LCA4MTAzMywgODEwNDAsIDgxMDQ2LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE4MzAwLDYxOCArMTk0MTksNjM0IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAyMzAsIDgwMjM0LCA4MDIzOCwgODAyNDIsIAotICAgIDgwMjQ2LCA4MDI1MCwgODAyNTQsIDgwMjU4LCA4MDI2MiwgODAyNjYsIDgwMjcwLCA4MDI3NCwgODAyNzgsIDgwMjgyLCAKLSAgICA4MDI4NiwgODAyOTAsIDgwMjk0LCA4MDI5OCwgODAzMDIsIDgwMzA2LCA4MDMxMCwgODAzMTQsIDgwMzE4LCAwLCAwLCAwLCAKLSAgICAwLCA4MDMyMiwgODAzMjYsIDgwMzMwLCA4MDMzNCwgODAzMzgsIDgwMzQyLCA4MDM0NiwgODAzNTAsIDgwMzU0LCA4MDM1OCwgCi0gICAgODAzNjIsIDgwMzY2LCA4MDM3MCwgODAzNzQsIDgwMzc4LCA4MDM4MiwgODAzODYsIDgwMzkwLCA4MDM5NCwgODAzOTgsIAotICAgIDgwNDAyLCA4MDQwNiwgODA0MTAsIDgwNDE0LCA4MDQxOCwgODA0MjIsIDgwNDI2LCA4MDQzMCwgODA0MzQsIDgwNDM4LCAKLSAgICA4MDQ0MiwgODA0NDYsIDgwNDUwLCA4MDQ1NCwgODA0NTgsIDgwNDYyLCA4MDQ2NiwgODA0NzAsIDgwNDc0LCA4MDQ3OCwgCi0gICAgODA0ODIsIDgwNDg2LCA4MDQ5MCwgODA0OTQsIDgwNDk4LCA4MDUwMiwgODA1MDYsIDgwNTEwLCA4MDUxNCwgMCwgMCwgMCwgCi0gICAgMCwgODA1MTgsIDgwNTIyLCA4MDUyNiwgODA1MzAsIDgwNTM0LCA4MDUzOCwgODA1NDIsIDgwNTQ2LCA4MDU1MCwgODA1NTQsIAotICAgIDgwNTU4LCA4MDU2MiwgODA1NjYsIDgwNTcwLCA4MDU3NCwgODA1NzgsIDgwNTgyLCA4MDU4NiwgODA1OTAsIDgwNTk0LCAKLSAgICA4MDU5OCwgODA2MDIsIDgwNjA2LCA4MDYxMCwgODA2MTQsIDgwNjE4LCA4MDYyMiwgODA2MjYsIDgwNjMwLCA4MDYzNCwgCi0gICAgODA2MzgsIDgwNjQyLCA4MDY0NiwgODA2NTAsIDgwNjU0LCA4MDY1OCwgODA2NjIsIDgwNjY2LCA4MDY3MCwgODA2NzQsIAotICAgIDgwNjc4LCA4MDY4MiwgODA2ODYsIDgwNjkwLCA4MDY5NCwgODA2OTgsIDgwNzAyLCA4MDcwNiwgODA3MTAsIDgwNzE0LCAKLSAgICA4MDcxOCwgODA3MjIsIDgwNzI2LCA4MDczMCwgODA3MzQsIDgwNzM4LCA4MDc0MiwgODA3NDYsIDgwNzUwLCA4MDc1NCwgCi0gICAgODA3NTgsIDgwNzYyLCA4MDc2NiwgODA3NzAsIDgwNzc0LCA4MDc3OCwgODA3ODIsIDgwNzg2LCA4MDc5MCwgODA3OTQsIAotICAgIDgwNzk4LCA4MDgwMiwgODA4MDYsIDgwODEwLCA4MDgxNCwgODA4MTgsIDgwODIyLCA4MDgyNiwgODA4MzAsIDgwODM0LCAKLSAgICA4MDgzOCwgODA4NDIsIDgwODQ2LCA4MDg1MCwgODA4NTQsIDgwODU4LCA4MDg2MiwgODA4NjYsIDgwODcwLCA4MDg3NCwgCi0gICAgODA4NzgsIDgwODgyLCA4MDg4NiwgODA4OTAsIDgwODk0LCA4MDg5OCwgODA5MDIsIDgwOTA2LCA4MDkxMCwgODA5MTQsIAotICAgIDgwOTE4LCA4MDkyMiwgODA5MjYsIDgwOTMwLCA4MDkzNCwgODA5MzgsIDgwOTQyLCA4MDk0NiwgODA5NTAsIDgwOTU0LCAKLSAgICA4MDk1OCwgODA5NjIsIDgwOTY2LCA4MDk3MCwgODA5NzQsIDgwOTc4LCA4MDk4MiwgODA5ODYsIDgwOTkwLCA4MDk5NCwgCi0gICAgODA5OTgsIDgxMDAyLCA4MTAwNiwgODEwMTAsIDgxMDE0LCA4MTAxOCwgODEwMjIsIDgxMDI2LCA4MTAzMCwgODEwMzQsIAotICAgIDgxMDM4LCA4MTA0MiwgODEwNDYsIDgxMDUwLCA4MTA1NCwgODEwNTgsIDgxMDYyLCA4MTA2NiwgODEwNzAsIDgxMDc0LCAKLSAgICA4MTA3OCwgODEwODIsIDgxMDg2LCA4MTA5MCwgODEwOTQsIDgxMDk4LCA4MTEwMiwgODExMDYsIDgxMTEwLCA4MTExNCwgCi0gICAgODExMTgsIDgxMTIyLCA4MTEyNiwgODExMzAsIDgxMTM0LCA4MTEzOCwgODExNDIsIDgxMTQ2LCA4MTE1MCwgODExNTQsIAotICAgIDgxMTU4LCA4MTE2MiwgODExNjYsIDgxMTcwLCA4MTE3NCwgODExNzgsIDgxMTgyLCA4MTE4NiwgODExOTAsIDgxMTk0LCAKLSAgICA4MTE5OCwgODEyMDIsIDgxMjA2LCA4MTIxMCwgODEyMTQsIDgxMjE4LCA4MTIyMiwgODEyMjYsIDgxMjMwLCA4MTIzNCwgCi0gICAgODEyMzgsIDgxMjQyLCA4MTI0NiwgODEyNTAsIDgxMjU0LCA4MTI1OCwgODEyNjIsIDgxMjY2LCA4MTI3MCwgODEyNzQsIAotICAgIDgxMjc4LCA4MTI4MiwgODEyODYsIDgxMjkwLCA4MTI5NCwgODEyOTgsIDgxMzAyLCA4MTMwNiwgODEzMTAsIDgxMzE0LCAKLSAgICA4MTMxOCwgODEzMjIsIDgxMzI2LCA4MTMzMCwgODEzMzQsIDgxMzM4LCA4MTM0MiwgODEzNDYsIDgxMzUwLCA4MTM1NCwgCi0gICAgODEzNTgsIDgxMzYyLCA4MTM2NiwgODEzNzAsIDgxMzc0LCA4MTM3OCwgODEzODIsIDgxMzg2LCA4MTM5MCwgODEzOTQsIAotICAgIDgxMzk4LCA4MTQwMiwgODE0MDYsIDgxNDEwLCA4MTQxNCwgODE0MTgsIDgxNDIyLCA4MTQyNiwgODE0MzAsIDgxNDM0LCAKLSAgICA4MTQzOCwgODE0NDIsIDgxNDQ2LCA4MTQ1MCwgODE0NTQsIDgxNDU4LCA4MTQ2MiwgODE0NjYsIDgxNDcwLCA4MTQ3NCwgCi0gICAgODE0NzgsIDgxNDgyLCA4MTQ4NiwgODE0OTAsIDgxNDk0LCA4MTQ5OCwgODE1MDIsIDgxNTA2LCA4MTUxMCwgODE1MTQsIAotICAgIDgxNTE4LCA4MTUyMiwgODE1MjYsIDgxNTMwLCA4MTUzNCwgODE1MzgsIDgxNTQyLCA4MTU0NiwgODE1NTAsIDgxNTU0LCAKLSAgICA4MTU1OCwgODE1NjIsIDgxNTY2LCA4MTU3MCwgODE1NzQsIDgxNTc4LCA4MTU4MiwgODE1ODYsIDgxNTkwLCA4MTU5NCwgCi0gICAgODE1OTgsIDgxNjAyLCA4MTYwNiwgODE2MTAsIDgxNjE0LCA4MTYxOCwgODE2MjIsIDgxNjI2LCA4MTYzMCwgODE2MzQsIAotICAgIDgxNjM4LCA4MTY0MiwgODE2NDYsIDgxNjUwLCA4MTY1NCwgODE2NTgsIDgxNjYyLCA4MTY2NiwgODE2NzAsIDgxNjc0LCAKLSAgICA4MTY3OCwgODE2ODIsIDgxNjg2LCA4MTY5MCwgODE2OTQsIDgxNjk4LCA4MTcwMiwgODE3MDYsIDgxNzEwLCA4MTcxNCwgCi0gICAgODE3MTgsIDgxNzIyLCA4MTcyNiwgODE3MzAsIDgxNzM0LCA4MTczOCwgODE3NDIsIDgxNzQ2LCA4MTc1MCwgODE3NTQsIAotICAgIDgxNzU4LCA4MTc2MiwgODE3NjYsIDgxNzcwLCA4MTc3NCwgODE3NzgsIDgxNzgyLCA4MTc4NiwgODE3OTAsIDgxNzk0LCAKLSAgICA4MTc5OCwgODE4MDIsIDgxODA2LCA4MTgxMCwgODE4MTQsIDgxODE4LCA4MTgyMiwgODE4MjYsIDgxODMwLCA4MTgzNCwgCi0gICAgODE4MzgsIDgxODQyLCA4MTg0NiwgODE4NTAsIDgxODU0LCA4MTg1OCwgODE4NjIsIDgxODY2LCA4MTg3MCwgODE4NzQsIAotICAgIDgxODc4LCA4MTg4MiwgODE4ODYsIDgxODkwLCA4MTg5NCwgODE4OTgsIDgxOTAyLCA4MTkwNiwgODE5MTAsIDgxOTE0LCAKLSAgICA4MTkxOCwgODE5MjIsIDgxOTI2LCA4MTkzMCwgODE5MzQsIDgxOTM4LCA4MTk0MiwgODE5NDYsIDgxOTUwLCA4MTk1NCwgCi0gICAgODE5NTgsIDgxOTYyLCA4MTk2NiwgODE5NzAsIDgxOTc0LCA4MTk3OCwgMCwgMCwgODE5ODIsIDgxOTg2LCA4MTk5MCwgCi0gICAgODE5OTQsIDgxOTk4LCA4MjAwMiwgODIwMDYsIDgyMDEwLCA4MjAxNCwgODIwMTgsIDgyMDIyLCA4MjAyNiwgODIwMzAsIAotICAgIDgyMDM0LCA4MjAzOCwgODIwNDIsIDgyMDQ2LCA4MjA1MCwgODIwNTQsIDgyMDU4LCA4MjA2MiwgODIwNjYsIDgyMDcwLCAKLSAgICA4MjA3NCwgODIwNzgsIDgyMDgyLCA4MjA4NiwgODIwOTAsIDgyMDk0LCA4MjA5OCwgODIxMDIsIDgyMTA2LCA4MjExMCwgCi0gICAgODIxMTQsIDgyMTE4LCA4MjEyMiwgODIxMjYsIDgyMTMwLCA4MjEzNCwgODIxMzgsIDgyMTQyLCA4MjE0NiwgODIxNTAsIAotICAgIDgyMTU0LCA4MjE1OCwgODIxNjIsIDgyMTY2LCA4MjE3MCwgODIxNzQsIDgyMTc4LCA4MjE4MiwgODIxODYsIDgyMTkwLCAKLSAgICA4MjE5NCwgODIxOTgsIDgyMjAyLCA4MjIwNiwgODIyMTAsIDgyMjE0LCA4MjIxOCwgODIyMjIsIDgyMjI2LCA4MjIzMCwgCi0gICAgODIyMzQsIDgyMjM4LCA4MjI0MiwgODIyNDYsIDgyMjUwLCA4MjI1NCwgODIyNTgsIDgyMjYyLCA4MjI2NiwgODIyNzAsIAotICAgIDgyMjc0LCA4MjI3OCwgODIyODIsIDgyMjg2LCA4MjI5MCwgODIyOTQsIDgyMjk4LCA4MjMwMiwgODIzMDYsIDgyMzEwLCAKLSAgICA4MjMxNCwgODIzMTgsIDgyMzIyLCA4MjMyNiwgODIzMzAsIDgyMzM0LCA4MjMzOCwgODIzNDIsIDgyMzQ2LCA4MjM1MCwgCi0gICAgODIzNTQsIDgyMzU4LCA4MjM2MiwgODIzNjYsIDgyMzcwLCA4MjM3NCwgODIzNzgsIDgyMzgyLCA4MjM4NiwgODIzOTAsIAotICAgIDgyMzk0LCA4MjM5OCwgODI0MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyNDA2LCAKLSAgICA4MjQxMSwgODI0MTYsIDgyNDIxLCA4MjQyNiwgODI0MzEsIDgyNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MjQ0NCwgODI0NTEsIDgyNDU4LCA4MjQ2NSwgODI0NzIsIDAsIDAsIDAsIDAsIDAsIDgyNDc5LCA4MjQ4NiwgCi0gICAgODI0OTMsIDgyNTAzLCA4MjUwOSwgODI1MTUsIDgyNTIxLCA4MjUyNywgODI1MzMsIDgyNTM5LCA4MjU0NiwgODI1NTIsIAotICAgIDgyNTU4LCA4MjU2NCwgODI1NzMsIDgyNTgyLCA4MjU5NCwgODI2MDYsIDgyNjEyLCA4MjYxOCwgODI2MjQsIDgyNjMxLCAKLSAgICA4MjYzOCwgODI2NDUsIDgyNjUyLCA4MjY1OSwgMCwgODI2NjYsIDgyNjczLCA4MjY4MCwgODI2ODgsIDgyNjk1LCAwLCAKLSAgICA4MjcwMiwgMCwgODI3MDksIDgyNzE2LCAwLCA4MjcyMywgODI3MzEsIDAsIDgyNzM4LCA4Mjc0NSwgODI3NTIsIDgyNzU5LCAKLSAgICA4Mjc2NiwgODI3NzMsIDgyNzgwLCA4Mjc4NywgODI3OTQsIDgyODAxLCA4MjgwNiwgODI4MTMsIDgyODIwLCA4MjgyNiwgCi0gICAgODI4MzIsIDgyODM4LCA4Mjg0NCwgODI4NTAsIDgyODU2LCA4Mjg2MiwgODI4NjgsIDgyODc0LCA4Mjg4MCwgODI4ODYsIAotICAgIDgyODkyLCA4Mjg5OCwgODI5MDQsIDgyOTEwLCA4MjkxNiwgODI5MjIsIDgyOTI4LCA4MjkzNCwgODI5NDAsIDgyOTQ2LCAKLSAgICA4Mjk1MiwgODI5NTgsIDgyOTY0LCA4Mjk3MCwgODI5NzYsIDgyOTgyLCA4Mjk4OCwgODI5OTQsIDgzMDAwLCA4MzAwNiwgCi0gICAgODMwMTIsIDgzMDE4LCA4MzAyNCwgODMwMzAsIDgzMDM2LCA4MzA0MiwgODMwNDgsIDgzMDU0LCA4MzA2MCwgODMwNjYsIAotICAgIDgzMDcyLCA4MzA3OCwgODMwODQsIDgzMDkwLCA4MzA5NiwgODMxMDIsIDgzMTA4LCA4MzExNCwgODMxMjAsIDgzMTI2LCAKLSAgICA4MzEzMiwgODMxMzgsIDgzMTQ0LCA4MzE1MCwgODMxNTYsIDgzMTYyLCA4MzE2OCwgODMxNzQsIDgzMTgwLCA4MzE4NiwgCi0gICAgODMxOTIsIDgzMTk4LCA4MzIwNCwgODMyMTAsIDgzMjE2LCA4MzIyMiwgODMyMjgsIDgzMjM0LCA4MzI0MCwgODMyNDYsIAotICAgIDgzMjUyLCA4MzI1OCwgODMyNjQsIDgzMjcwLCA4MzI3NiwgODMyODQsIDgzMjkyLCA4MzI5OCwgODMzMDQsIDgzMzEwLCAKLSAgICA4MzMxNiwgODMzMjUsIDgzMzM0LCA4MzM0MiwgODMzNTAsIDgzMzU4LCA4MzM2NiwgODMzNzQsIDgzMzgyLCA4MzM5MCwgCi0gICAgODMzOTgsIDgzNDA1LCA4MzQxMiwgODM0MjMsIDgzNDM0LCA4MzQzOCwgODM0NDIsIDgzNDQ3LCA4MzQ1MiwgODM0NTcsIAotICAgIDgzNDYyLCA4MzQ3MCwgODM0NzgsIDgzNDg0LCA4MzQ5MCwgODM0OTcsIDgzNTA0LCA4MzUxMSwgODM1MTUsIDgzNTIxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MzUyNywgODM1MzMsIDgzNTM5LCAKLSAgICA4MzU0NSwgODM1NTEsIDgzNTU2LCA4MzU2MSwgODM1NjcsIDgzNTczLCA4MzU3OSwgODM1ODUsIDgzNTk0LCA4MzYwMCwgCi0gICAgODM2MDYsIDgzNjE0LCA4MzYyMiwgODM2MzAsIDgzNjM4LCA4MzY0MywgODM2NDgsIDgzNjUzLCA4MzY1OCwgODM2NzEsIAotICAgIDgzNjg0LCA4MzY5NSwgODM3MDYsIDgzNzE4LCA4MzczMCwgODM3NDIsIDgzNzU0LCA4Mzc2NSwgODM3NzYsIDgzNzg4LCAKLSAgICA4MzgwMCwgODM4MTIsIDgzODI0LCA4MzgzNSwgODM4NDYsIDgzODU3LCA4Mzg3NCwgODM4OTEsIDgzOTA4LCA4MzkxNSwgCi0gICAgODM5MjIsIDgzOTI5LCA4MzkzNiwgODM5NDcsIDgzOTU4LCA4Mzk2OSwgODM5ODIsIDgzOTkzLCA4NDAwMSwgODQwMDksIAotICAgIDg0MDE4LCA4NDAyNiwgODQwMzYsIDg0MDQ0LCA4NDA1MiwgODQwNjAsIDg0MDY5LCA4NDA3NywgODQwODcsIDg0MDk1LCAKLSAgICA4NDEwMywgODQxMTEsIDg0MTIxLCA4NDEyOSwgODQxMzYsIDg0MTQzLCA4NDE1MCwgODQxNTcsIDg0MTY1LCA4NDE3MywgCi0gICAgODQxODEsIDg0MTg5LCA4NDE5NywgODQyMDYsIDg0MjE0LCA4NDIyMiwgODQyMzAsIDg0MjM4LCA4NDI0NiwgODQyNTUsIAotICAgIDg0MjYzLCA4NDI3MSwgODQyNzksIDg0Mjg3LCA4NDI5NSwgODQzMDMsIDg0MzExLCA4NDMxOSwgODQzMjcsIDg0MzM1LCAKLSAgICA4NDM0NCwgODQzNTIsIDg0MzYyLCA4NDM3MCwgODQzNzgsIDg0Mzg2LCA4NDM5NiwgODQ0MDQsIDg0NDEyLCA4NDQyMCwgCi0gICAgODQ0MjgsIDg0NDM3LCA4NDQ0NiwgODQ0NTQsIDg0NDY0LCA4NDQ3MiwgODQ0ODAsIDg0NDg4LCA4NDQ5NywgODQ1MDUsIAotICAgIDg0NTE1LCA4NDUyMywgODQ1MzAsIDg0NTM3LCA4NDU0NSwgODQ1NTIsIDg0NTYxLCA4NDU2OCwgODQ1NzYsIDg0NTg0LCAKLSAgICA4NDU5MywgODQ2MDEsIDg0NjExLCA4NDYxOSwgODQ2MjcsIDg0NjM1LCA4NDY0NSwgODQ2NTMsIDg0NjYwLCA4NDY2NywgCi0gICAgODQ2NzUsIDg0NjgyLCA4NDY5MSwgODQ2OTgsIDg0NzA4LCA4NDcxOCwgODQ3MjksIDg0NzM4LCA4NDc0NywgODQ3NTYsIAotICAgIDg0NzY1LCA4NDc3NCwgODQ3ODQsIDg0Nzk2LCA4NDgwOCwgODQ4MTksIDg0ODMxLCA4NDg0NCwgODQ4NTUsIDg0ODY0LCAKLSAgICA4NDg3MywgODQ4ODEsIDg0ODkwLCA4NDkwMCwgODQ5MDgsIDg0OTE3LCA4NDkyNiwgODQ5MzQsIDg0OTQzLCA4NDk1MywgCi0gICAgODQ5NjEsIDg0OTcwLCA4NDk3OSwgODQ5ODcsIDg0OTk2LCA4NTAwNiwgODUwMTQsIDg1MDI0LCA4NTAzMiwgODUwNDIsIAotICAgIDg1MDUwLCA4NTA1OCwgODUwNjcsIDg1MDc1LCA4NTA4NSwgODUwOTMsIDg1MTAxLCA4NTExMSwgODUxMTksIDg1MTI2LCAKLSAgICA4NTEzMywgODUxNDIsIDg1MTUxLCA4NTE1OSwgODUxNjgsIDg1MTc4LCA4NTE4NiwgODUxOTcsIDg1MjA1LCA4NTIxMywgCi0gICAgODUyMjAsIDg1MjI4LCA4NTIzNywgODUyNDQsIDg1MjU1LCA4NTI2NiwgODUyNzgsIDg1Mjg5LCA4NTMwMSwgODUzMDksIAotICAgIDg1MzE3LCA4NTMyNiwgODUzMzQsIDg1MzQzLCA4NTM1MSwgODUzNTksIDg1MzY4LCA4NTM3NiwgODUzODUsIDg1MzkzLCAKLSAgICA4NTQwMCwgODU0MDcsIDg1NDE0LCA4NTQyMSwgODU0MjksIDg1NDM3LCA4NTQ0NSwgODU0NTMsIDg1NDYyLCA4NTQ3MCwgCi0gICAgODU0NzgsIDg1NDg3LCA4NTQ5NSwgODU1MDMsIDg1NTExLCA4NTUyMCwgODU1MjgsIDg1NTM2LCA4NTU0NCwgODU1NTIsIAotICAgIDg1NTYwLCA4NTU2OCwgODU1NzYsIDg1NTg0LCA4NTU5MiwgODU2MDEsIDg1NjA5LCA4NTYxNywgODU2MjUsIDg1NjMzLCAKLSAgICA4NTY0MSwgODU2NTAsIDg1NjU5LCA4NTY2NywgODU2NzUsIDg1NjgzLCA4NTY5MiwgODU3MDAsIDg1NzA5LCA4NTcxNiwgCi0gICAgODU3MjMsIDg1NzMxLCA4NTczOCwgODU3NDYsIDg1NzU0LCA4NTc2MywgODU3NzEsIDg1NzgwLCA4NTc4OCwgODU3OTYsIAotICAgIDg1ODA2LCA4NTgxMywgODU4MjAsIDg1ODI4LCA4NTgzNSwgODU4NDMsIDg1ODU0LCA4NTg2NiwgODU4NzQsIDg1ODgzLCAKLSAgICA4NTg5MSwgODU5MDAsIDg1OTA4LCA4NTkxNywgODU5MjUsIDg1OTM0LCA4NTk0MiwgODU5NTEsIDg1OTYwLCA4NTk2OCwgCi0gICAgODU5NzYsIDg1OTg0LCA4NTk5MywgODYwMDAsIDg2MDA4LCA4NjAxNywgODYwMjYsIDg2MDM1LCA4NjA0NSwgODYwNTMsIAotICAgIDg2MDYzLCA4NjA3MSwgODYwODEsIDg2MDg5LCA4NjA5OSwgODYxMDcsIDg2MTE3LCA4NjEyNSwgODYxMzQsIDg2MTQxLCAKLSAgICA4NjE1MCwgODYxNTcsIDg2MTY3LCA4NjE3NSwgODYxODUsIDg2MTkzLCA4NjIwMywgODYyMTEsIDg2MjE5LCA4NjIyNywgCi0gICAgODYyMzYsIDg2MjQ0LCA4NjI1MywgODYyNjIsIDg2MjcxLCA4NjI4MCwgODYyOTAsIDg2Mjk4LCA4NjMwOCwgODYzMTYsIAotICAgIDg2MzI2LCA4NjMzNCwgODYzNDQsIDg2MzUyLCA4NjM2MiwgODYzNzAsIDg2Mzc5LCA4NjM4NiwgODYzOTUsIDg2NDAyLCAKLSAgICA4NjQxMiwgODY0MjAsIDg2NDMwLCA4NjQzOCwgODY0NDgsIDg2NDU2LCA4NjQ2NCwgODY0NzIsIDg2NDgxLCA4NjQ4OSwgCi0gICAgODY0OTgsIDg2NTA3LCA4NjUxNiwgODY1MjUsIDg2NTMzLCA4NjU0MSwgODY1NTAsIDg2NTU4LCA4NjU2NywgODY1NzYsIAotICAgIDg2NTg0LCA4NjU5MiwgODY2MDAsIDg2NjA5LCA4NjYxNywgODY2MjUsIDg2NjM0LCA4NjY0MiwgODY2NTAsIDg2NjU4LCAKLSAgICA4NjY2NiwgODY2NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2Njc2LCAKLSAgICA4NjY4NiwgODY2OTYsIDg2NzA2LCA4NjcxNiwgODY3MjcsIDg2NzM3LCA4Njc0NywgODY3NTgsIDg2NzY3LCA4Njc3NiwgCi0gICAgODY3ODUsIDg2Nzk2LCA4NjgwNiwgODY4MTYsIDg2ODI4LCA4NjgzOCwgODY4NDgsIDg2ODU4LCA4Njg2OCwgODY4NzgsIAotICAgIDg2ODg4LCA4Njg5OCwgODY5MDgsIDg2OTE4LCA4NjkyOCwgODY5MzgsIDg2OTQ5LCA4Njk2MCwgODY5NzAsIDg2OTgwLCAKLSAgICA4Njk5MiwgODcwMDMsIDg3MDE0LCA4NzAyNCwgODcwMzQsIDg3MDQ0LCA4NzA1NCwgODcwNjQsIDg3MDc0LCA4NzA4NCwgCi0gICAgODcwOTYsIDg3MTA2LCA4NzExNiwgODcxMjgsIDg3MTM5LCA4NzE1MCwgODcxNjAsIDg3MTcwLCA4NzE4MCwgODcxOTAsIAotICAgIDg3MjAyLCA4NzIxMiwgODcyMjIsIDg3MjMzLCA4NzI0NCwgODcyNTQsIDg3MjY0LCA4NzI3MywgODcyODIsIDg3MjkxLCAKLSAgICA4NzMwMCwgODczMDksIDg3MzE5LCAwLCAwLCA4NzMyOSwgODczMzksIDg3MzQ5LCA4NzM1OSwgODczNjksIDg3MzgxLCAKLSAgICA4NzM5MSwgODc0MDEsIDg3NDEzLCA4NzQyMywgODc0MzUsIDg3NDQ0LCA4NzQ1MywgODc0NjQsIDg3NDc0LCA4NzQ4NiwgCi0gICAgODc0OTcsIDg3NTEwLCA4NzUyMCwgODc1MzIsIDg3NTQxLCA4NzU1MiwgODc1NjMsIDg3NTc2LCA4NzU4NiwgODc1OTYsIAotICAgIDg3NjA2LCA4NzYxNiwgODc2MjYsIDg3NjM1LCA4NzY0NCwgODc2NTMsIDg3NjYyLCA4NzY3MiwgODc2ODIsIDg3NjkyLCAKLSAgICA4NzcwMiwgODc3MTIsIDg3NzIyLCA4NzczMiwgODc3NDIsIDg3NzUyLCA4Nzc2MiwgODc3NzIsIDg3NzgyLCA4Nzc5MSwgCi0gICAgODc4MDAsIDg3ODA5LCA4NzgxOSwgODc4MjksIDg3ODM5LCA4Nzg0OSwgODc4NTksIDg3ODcwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTA1MywgODEwNTcsIDgxMDYxLCA4MTA2NSwgCisgICAgODEwNjksIDgxMDczLCA4MTA3NywgODEwODEsIDgxMDg1LCA4MTA4OSwgODEwOTMsIDgxMDk3LCA4MTEwMSwgODExMDUsIAorICAgIDgxMTA5LCA4MTExMywgODExMTcsIDgxMTIxLCA4MTEyNSwgODExMjksIDgxMTMzLCA4MTEzNywgODExNDEsIDAsIDAsIDAsIAorICAgIDAsIDgxMTQ1LCA4MTE0OSwgODExNTMsIDgxMTU3LCA4MTE2MSwgODExNjUsIDgxMTY5LCA4MTE3MywgODExNzcsIDgxMTgxLCAKKyAgICA4MTE4NSwgODExODksIDgxMTkzLCA4MTE5NywgODEyMDEsIDgxMjA1LCA4MTIwOSwgODEyMTMsIDgxMjE3LCA4MTIyMSwgCisgICAgODEyMjUsIDgxMjI5LCA4MTIzMywgODEyMzcsIDgxMjQxLCA4MTI0NSwgODEyNDksIDgxMjUzLCA4MTI1NywgODEyNjEsIAorICAgIDgxMjY1LCA4MTI2OSwgODEyNzMsIDgxMjc3LCA4MTI4MSwgODEyODUsIDgxMjg5LCA4MTI5MywgODEyOTcsIDgxMzAxLCAKKyAgICA4MTMwNSwgODEzMDksIDgxMzEzLCA4MTMxNywgODEzMjEsIDgxMzI1LCA4MTMyOSwgODEzMzMsIDgxMzM3LCAwLCAwLCAwLCAKKyAgICAwLCA4MTM0MSwgODEzNDUsIDgxMzQ5LCA4MTM1MywgODEzNTcsIDgxMzYxLCA4MTM2NSwgODEzNjksIDgxMzczLCA4MTM3NywgCisgICAgODEzODEsIDgxMzg1LCA4MTM4OSwgODEzOTMsIDgxMzk3LCA4MTQwMSwgODE0MDUsIDgxNDA5LCA4MTQxMywgODE0MTcsIAorICAgIDgxNDIxLCA4MTQyNSwgODE0MjksIDgxNDMzLCA4MTQzNywgODE0NDEsIDgxNDQ1LCA4MTQ0OSwgODE0NTMsIDgxNDU3LCAKKyAgICA4MTQ2MSwgODE0NjUsIDgxNDY5LCA4MTQ3MywgODE0NzcsIDgxNDgxLCA4MTQ4NSwgODE0ODksIDgxNDkzLCA4MTQ5NywgCisgICAgODE1MDEsIDgxNTA1LCA4MTUwOSwgODE1MTMsIDgxNTE3LCA4MTUyMSwgODE1MjUsIDgxNTI5LCA4MTUzMywgODE1MzcsIAorICAgIDgxNTQxLCA4MTU0NSwgODE1NDksIDgxNTUzLCA4MTU1NywgODE1NjEsIDgxNTY1LCA4MTU2OSwgODE1NzMsIDgxNTc3LCAKKyAgICA4MTU4MSwgODE1ODUsIDgxNTg5LCA4MTU5MywgODE1OTcsIDgxNjAxLCA4MTYwNSwgODE2MDksIDgxNjEzLCA4MTYxNywgCisgICAgODE2MjEsIDgxNjI1LCA4MTYyOSwgODE2MzMsIDgxNjM3LCA4MTY0MSwgODE2NDUsIDgxNjQ5LCA4MTY1MywgODE2NTcsIAorICAgIDgxNjYxLCA4MTY2NSwgODE2NjksIDgxNjczLCA4MTY3NywgODE2ODEsIDgxNjg1LCA4MTY4OSwgODE2OTMsIDgxNjk3LCAKKyAgICA4MTcwMSwgODE3MDUsIDgxNzA5LCA4MTcxMywgODE3MTcsIDgxNzIxLCA4MTcyNSwgODE3MjksIDgxNzMzLCA4MTczNywgCisgICAgODE3NDEsIDgxNzQ1LCA4MTc0OSwgODE3NTMsIDgxNzU3LCA4MTc2MSwgODE3NjUsIDgxNzY5LCA4MTc3MywgODE3NzcsIAorICAgIDgxNzgxLCA4MTc4NSwgODE3ODksIDgxNzkzLCA4MTc5NywgODE4MDEsIDgxODA1LCA4MTgwOSwgODE4MTMsIDgxODE3LCAKKyAgICA4MTgyMSwgODE4MjUsIDgxODI5LCA4MTgzMywgODE4MzcsIDgxODQxLCA4MTg0NSwgODE4NDksIDgxODUzLCA4MTg1NywgCisgICAgODE4NjEsIDgxODY1LCA4MTg2OSwgODE4NzMsIDgxODc3LCA4MTg4MSwgODE4ODUsIDgxODg5LCA4MTg5MywgODE4OTcsIAorICAgIDgxOTAxLCA4MTkwNSwgODE5MDksIDgxOTEzLCA4MTkxNywgODE5MjEsIDgxOTI1LCA4MTkyOSwgODE5MzMsIDgxOTM3LCAKKyAgICA4MTk0MSwgODE5NDUsIDgxOTQ5LCA4MTk1MywgODE5NTcsIDgxOTYxLCA4MTk2NSwgODE5NjksIDgxOTczLCA4MTk3NywgCisgICAgODE5ODEsIDgxOTg1LCA4MTk4OSwgODE5OTMsIDgxOTk3LCA4MjAwMSwgODIwMDUsIDgyMDA5LCA4MjAxMywgODIwMTcsIAorICAgIDgyMDIxLCA4MjAyNSwgODIwMjksIDgyMDMzLCA4MjAzNywgODIwNDEsIDgyMDQ1LCA4MjA0OSwgODIwNTMsIDgyMDU3LCAKKyAgICA4MjA2MSwgODIwNjUsIDgyMDY5LCA4MjA3MywgODIwNzcsIDgyMDgxLCA4MjA4NSwgODIwODksIDgyMDkzLCA4MjA5NywgCisgICAgODIxMDEsIDgyMTA1LCA4MjEwOSwgODIxMTMsIDgyMTE3LCA4MjEyMSwgODIxMjUsIDgyMTI5LCA4MjEzMywgODIxMzcsIAorICAgIDgyMTQxLCA4MjE0NSwgODIxNDksIDgyMTUzLCA4MjE1NywgODIxNjEsIDgyMTY1LCA4MjE2OSwgODIxNzMsIDgyMTc3LCAKKyAgICA4MjE4MSwgODIxODUsIDgyMTg5LCA4MjE5MywgODIxOTcsIDgyMjAxLCA4MjIwNSwgODIyMDksIDgyMjEzLCA4MjIxNywgCisgICAgODIyMjEsIDgyMjI1LCA4MjIyOSwgODIyMzMsIDgyMjM3LCA4MjI0MSwgODIyNDUsIDgyMjQ5LCA4MjI1MywgODIyNTcsIAorICAgIDgyMjYxLCA4MjI2NSwgODIyNjksIDgyMjczLCA4MjI3NywgODIyODEsIDgyMjg1LCA4MjI4OSwgODIyOTMsIDgyMjk3LCAKKyAgICA4MjMwMSwgODIzMDUsIDgyMzA5LCA4MjMxMywgODIzMTcsIDgyMzIxLCA4MjMyNSwgODIzMjksIDgyMzMzLCA4MjMzNywgCisgICAgODIzNDEsIDgyMzQ1LCA4MjM0OSwgODIzNTMsIDgyMzU3LCA4MjM2MSwgODIzNjUsIDgyMzY5LCA4MjM3MywgODIzNzcsIAorICAgIDgyMzgxLCA4MjM4NSwgODIzODksIDgyMzkzLCA4MjM5NywgODI0MDEsIDgyNDA1LCA4MjQwOSwgODI0MTMsIDgyNDE3LCAKKyAgICA4MjQyMSwgODI0MjUsIDgyNDI5LCA4MjQzMywgODI0MzcsIDgyNDQxLCA4MjQ0NSwgODI0NDksIDgyNDUzLCA4MjQ1NywgCisgICAgODI0NjEsIDgyNDY1LCA4MjQ2OSwgODI0NzMsIDgyNDc3LCA4MjQ4MSwgODI0ODUsIDgyNDg5LCA4MjQ5MywgODI0OTcsIAorICAgIDgyNTAxLCA4MjUwNSwgODI1MDksIDgyNTEzLCA4MjUxNywgODI1MjEsIDgyNTI1LCA4MjUyOSwgODI1MzMsIDgyNTM3LCAKKyAgICA4MjU0MSwgODI1NDUsIDgyNTQ5LCA4MjU1MywgODI1NTcsIDgyNTYxLCA4MjU2NSwgODI1NjksIDgyNTczLCA4MjU3NywgCisgICAgODI1ODEsIDgyNTg1LCA4MjU4OSwgODI1OTMsIDgyNTk3LCA4MjYwMSwgODI2MDUsIDgyNjA5LCA4MjYxMywgODI2MTcsIAorICAgIDgyNjIxLCA4MjYyNSwgODI2MjksIDgyNjMzLCA4MjYzNywgODI2NDEsIDgyNjQ1LCA4MjY0OSwgODI2NTMsIDgyNjU3LCAKKyAgICA4MjY2MSwgODI2NjUsIDgyNjY5LCA4MjY3MywgODI2NzcsIDgyNjgxLCA4MjY4NSwgODI2ODksIDgyNjkzLCA4MjY5NywgCisgICAgODI3MDEsIDgyNzA1LCA4MjcwOSwgODI3MTMsIDgyNzE3LCA4MjcyMSwgODI3MjUsIDgyNzI5LCA4MjczMywgODI3MzcsIAorICAgIDgyNzQxLCA4Mjc0NSwgODI3NDksIDgyNzUzLCA4Mjc1NywgODI3NjEsIDgyNzY1LCA4Mjc2OSwgODI3NzMsIDgyNzc3LCAKKyAgICA4Mjc4MSwgODI3ODUsIDgyNzg5LCA4Mjc5MywgODI3OTcsIDgyODAxLCAwLCAwLCA4MjgwNSwgODI4MDksIDgyODEzLCAKKyAgICA4MjgxNywgODI4MjEsIDgyODI1LCA4MjgyOSwgODI4MzMsIDgyODM3LCA4Mjg0MSwgODI4NDUsIDgyODQ5LCA4Mjg1MywgCisgICAgODI4NTcsIDgyODYxLCA4Mjg2NSwgODI4NjksIDgyODczLCA4Mjg3NywgODI4ODEsIDgyODg1LCA4Mjg4OSwgODI4OTMsIAorICAgIDgyODk3LCA4MjkwMSwgODI5MDUsIDgyOTA5LCA4MjkxMywgODI5MTcsIDgyOTIxLCA4MjkyNSwgODI5MjksIDgyOTMzLCAKKyAgICA4MjkzNywgODI5NDEsIDgyOTQ1LCA4Mjk0OSwgODI5NTMsIDgyOTU3LCA4Mjk2MSwgODI5NjUsIDgyOTY5LCA4Mjk3MywgCisgICAgODI5NzcsIDgyOTgxLCA4Mjk4NSwgODI5ODksIDgyOTkzLCA4Mjk5NywgODMwMDEsIDgzMDA1LCA4MzAwOSwgODMwMTMsIAorICAgIDgzMDE3LCA4MzAyMSwgODMwMjUsIDgzMDI5LCA4MzAzMywgODMwMzcsIDgzMDQxLCA4MzA0NSwgODMwNDksIDgzMDUzLCAKKyAgICA4MzA1NywgODMwNjEsIDgzMDY1LCA4MzA2OSwgODMwNzMsIDgzMDc3LCA4MzA4MSwgODMwODUsIDgzMDg5LCA4MzA5MywgCisgICAgODMwOTcsIDgzMTAxLCA4MzEwNSwgODMxMDksIDgzMTEzLCA4MzExNywgODMxMjEsIDgzMTI1LCA4MzEyOSwgODMxMzMsIAorICAgIDgzMTM3LCA4MzE0MSwgODMxNDUsIDgzMTQ5LCA4MzE1MywgODMxNTcsIDgzMTYxLCA4MzE2NSwgODMxNjksIDgzMTczLCAKKyAgICA4MzE3NywgODMxODEsIDgzMTg1LCA4MzE4OSwgODMxOTMsIDgzMTk3LCA4MzIwMSwgODMyMDUsIDgzMjA5LCA4MzIxMywgCisgICAgODMyMTcsIDgzMjIxLCA4MzIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMyMjksIAorICAgIDgzMjM0LCA4MzIzOSwgODMyNDQsIDgzMjQ5LCA4MzI1NCwgODMyNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDgzMjY3LCA4MzI3NCwgODMyODEsIDgzMjg4LCA4MzI5NSwgMCwgMCwgMCwgMCwgMCwgODMzMDIsIDgzMzA5LCAKKyAgICA4MzMxNiwgODMzMjYsIDgzMzMyLCA4MzMzOCwgODMzNDQsIDgzMzUwLCA4MzM1NiwgODMzNjIsIDgzMzY5LCA4MzM3NSwgCisgICAgODMzODEsIDgzMzg3LCA4MzM5NiwgODM0MDUsIDgzNDE3LCA4MzQyOSwgODM0MzUsIDgzNDQxLCA4MzQ0NywgODM0NTQsIAorICAgIDgzNDYxLCA4MzQ2OCwgODM0NzUsIDgzNDgyLCAwLCA4MzQ4OSwgODM0OTYsIDgzNTAzLCA4MzUxMSwgODM1MTgsIDAsIAorICAgIDgzNTI1LCAwLCA4MzUzMiwgODM1MzksIDAsIDgzNTQ2LCA4MzU1NCwgMCwgODM1NjEsIDgzNTY4LCA4MzU3NSwgODM1ODIsIAorICAgIDgzNTg5LCA4MzU5NiwgODM2MDMsIDgzNjEwLCA4MzYxNywgODM2MjQsIDgzNjI5LCA4MzYzNiwgODM2NDMsIDgzNjQ5LCAKKyAgICA4MzY1NSwgODM2NjEsIDgzNjY3LCA4MzY3MywgODM2NzksIDgzNjg1LCA4MzY5MSwgODM2OTcsIDgzNzAzLCA4MzcwOSwgCisgICAgODM3MTUsIDgzNzIxLCA4MzcyNywgODM3MzMsIDgzNzM5LCA4Mzc0NSwgODM3NTEsIDgzNzU3LCA4Mzc2MywgODM3NjksIAorICAgIDgzNzc1LCA4Mzc4MSwgODM3ODcsIDgzNzkzLCA4Mzc5OSwgODM4MDUsIDgzODExLCA4MzgxNywgODM4MjMsIDgzODI5LCAKKyAgICA4MzgzNSwgODM4NDEsIDgzODQ3LCA4Mzg1MywgODM4NTksIDgzODY1LCA4Mzg3MSwgODM4NzcsIDgzODgzLCA4Mzg4OSwgCisgICAgODM4OTUsIDgzOTAxLCA4MzkwNywgODM5MTMsIDgzOTE5LCA4MzkyNSwgODM5MzEsIDgzOTM3LCA4Mzk0MywgODM5NDksIAorICAgIDgzOTU1LCA4Mzk2MSwgODM5NjcsIDgzOTczLCA4Mzk3OSwgODM5ODUsIDgzOTkxLCA4Mzk5NywgODQwMDMsIDg0MDA5LCAKKyAgICA4NDAxNSwgODQwMjEsIDg0MDI3LCA4NDAzMywgODQwMzksIDg0MDQ1LCA4NDA1MSwgODQwNTcsIDg0MDYzLCA4NDA2OSwgCisgICAgODQwNzUsIDg0MDgxLCA4NDA4NywgODQwOTMsIDg0MDk5LCA4NDEwNywgODQxMTUsIDg0MTIxLCA4NDEyNywgODQxMzMsIAorICAgIDg0MTM5LCA4NDE0OCwgODQxNTcsIDg0MTY1LCA4NDE3MywgODQxODEsIDg0MTg5LCA4NDE5NywgODQyMDUsIDg0MjEzLCAKKyAgICA4NDIyMSwgODQyMjgsIDg0MjM1LCA4NDI0NiwgODQyNTcsIDg0MjYxLCA4NDI2NSwgODQyNzAsIDg0Mjc1LCA4NDI4MCwgCisgICAgODQyODUsIDg0MjkzLCA4NDMwMSwgODQzMDcsIDg0MzEzLCA4NDMyMCwgODQzMjcsIDg0MzM0LCA4NDMzOCwgODQzNDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg0MzUwLCA4NDM1NiwgODQzNjIsIAorICAgIDg0MzY4LCA4NDM3NCwgODQzNzksIDg0Mzg0LCA4NDM5MCwgODQzOTYsIDg0NDAyLCA4NDQwOCwgODQ0MTcsIDg0NDIzLCAKKyAgICA4NDQyOSwgODQ0MzcsIDg0NDQ1LCA4NDQ1MywgODQ0NjEsIDg0NDY2LCA4NDQ3MSwgODQ0NzYsIDg0NDgxLCA4NDQ5NCwgCisgICAgODQ1MDcsIDg0NTE4LCA4NDUyOSwgODQ1NDEsIDg0NTUzLCA4NDU2NSwgODQ1NzcsIDg0NTg4LCA4NDU5OSwgODQ2MTEsIAorICAgIDg0NjIzLCA4NDYzNSwgODQ2NDcsIDg0NjU4LCA4NDY2OSwgODQ2ODAsIDg0Njk3LCA4NDcxNCwgODQ3MzEsIDg0NzM4LCAKKyAgICA4NDc0NSwgODQ3NTIsIDg0NzU5LCA4NDc3MCwgODQ3ODEsIDg0NzkyLCA4NDgwNSwgODQ4MTYsIDg0ODI0LCA4NDgzMiwgCisgICAgODQ4NDEsIDg0ODQ5LCA4NDg1OSwgODQ4NjcsIDg0ODc1LCA4NDg4MywgODQ4OTIsIDg0OTAwLCA4NDkxMCwgODQ5MTgsIAorICAgIDg0OTI2LCA4NDkzNCwgODQ5NDQsIDg0OTUyLCA4NDk1OSwgODQ5NjYsIDg0OTczLCA4NDk4MCwgODQ5ODgsIDg0OTk2LCAKKyAgICA4NTAwNCwgODUwMTIsIDg1MDIwLCA4NTAyOSwgODUwMzcsIDg1MDQ1LCA4NTA1MywgODUwNjEsIDg1MDY5LCA4NTA3OCwgCisgICAgODUwODYsIDg1MDk0LCA4NTEwMiwgODUxMTAsIDg1MTE4LCA4NTEyNiwgODUxMzQsIDg1MTQyLCA4NTE1MCwgODUxNTgsIAorICAgIDg1MTY3LCA4NTE3NSwgODUxODUsIDg1MTkzLCA4NTIwMSwgODUyMDksIDg1MjE5LCA4NTIyNywgODUyMzUsIDg1MjQzLCAKKyAgICA4NTI1MSwgODUyNjAsIDg1MjY5LCA4NTI3NywgODUyODcsIDg1Mjk1LCA4NTMwMywgODUzMTEsIDg1MzIwLCA4NTMyOCwgCisgICAgODUzMzgsIDg1MzQ2LCA4NTM1MywgODUzNjAsIDg1MzY4LCA4NTM3NSwgODUzODQsIDg1MzkxLCA4NTM5OSwgODU0MDcsIAorICAgIDg1NDE2LCA4NTQyNCwgODU0MzQsIDg1NDQyLCA4NTQ1MCwgODU0NTgsIDg1NDY4LCA4NTQ3NiwgODU0ODMsIDg1NDkwLCAKKyAgICA4NTQ5OCwgODU1MDUsIDg1NTE0LCA4NTUyMSwgODU1MzEsIDg1NTQxLCA4NTU1MiwgODU1NjEsIDg1NTcwLCA4NTU3OSwgCisgICAgODU1ODgsIDg1NTk3LCA4NTYwNywgODU2MTksIDg1NjMxLCA4NTY0MiwgODU2NTQsIDg1NjY3LCA4NTY3OCwgODU2ODcsIAorICAgIDg1Njk2LCA4NTcwNCwgODU3MTMsIDg1NzIzLCA4NTczMSwgODU3NDAsIDg1NzQ5LCA4NTc1NywgODU3NjYsIDg1Nzc2LCAKKyAgICA4NTc4NCwgODU3OTMsIDg1ODAyLCA4NTgxMCwgODU4MTksIDg1ODI5LCA4NTgzNywgODU4NDcsIDg1ODU1LCA4NTg2NSwgCisgICAgODU4NzMsIDg1ODgxLCA4NTg5MCwgODU4OTgsIDg1OTA4LCA4NTkxNiwgODU5MjQsIDg1OTM0LCA4NTk0MiwgODU5NDksIAorICAgIDg1OTU2LCA4NTk2NSwgODU5NzQsIDg1OTgyLCA4NTk5MSwgODYwMDEsIDg2MDA5LCA4NjAyMCwgODYwMjgsIDg2MDM2LCAKKyAgICA4NjA0MywgODYwNTEsIDg2MDYwLCA4NjA2NywgODYwNzgsIDg2MDg5LCA4NjEwMSwgODYxMTIsIDg2MTI0LCA4NjEzMiwgCisgICAgODYxNDAsIDg2MTQ5LCA4NjE1NywgODYxNjYsIDg2MTc0LCA4NjE4MiwgODYxOTEsIDg2MTk5LCA4NjIwOCwgODYyMTYsIAorICAgIDg2MjIzLCA4NjIzMCwgODYyMzcsIDg2MjQ0LCA4NjI1MiwgODYyNjAsIDg2MjY4LCA4NjI3NiwgODYyODUsIDg2MjkzLCAKKyAgICA4NjMwMSwgODYzMTAsIDg2MzE4LCA4NjMyNiwgODYzMzQsIDg2MzQzLCA4NjM1MSwgODYzNTksIDg2MzY3LCA4NjM3NSwgCisgICAgODYzODMsIDg2MzkxLCA4NjM5OSwgODY0MDcsIDg2NDE1LCA4NjQyNCwgODY0MzIsIDg2NDQwLCA4NjQ0OCwgODY0NTYsIAorICAgIDg2NDY0LCA4NjQ3MywgODY0ODIsIDg2NDkwLCA4NjQ5OCwgODY1MDYsIDg2NTE1LCA4NjUyMywgODY1MzIsIDg2NTM5LCAKKyAgICA4NjU0NiwgODY1NTQsIDg2NTYxLCA4NjU2OSwgODY1NzcsIDg2NTg2LCA4NjU5NCwgODY2MDMsIDg2NjExLCA4NjYxOSwgCisgICAgODY2MjksIDg2NjM2LCA4NjY0MywgODY2NTEsIDg2NjU4LCA4NjY2NiwgODY2NzcsIDg2Njg5LCA4NjY5NywgODY3MDYsIAorICAgIDg2NzE0LCA4NjcyMywgODY3MzEsIDg2NzQwLCA4Njc0OCwgODY3NTcsIDg2NzY1LCA4Njc3NCwgODY3ODMsIDg2NzkxLCAKKyAgICA4Njc5OSwgODY4MDcsIDg2ODE2LCA4NjgyMywgODY4MzEsIDg2ODQwLCA4Njg0OSwgODY4NTgsIDg2ODY4LCA4Njg3NiwgCisgICAgODY4ODYsIDg2ODk0LCA4NjkwNCwgODY5MTIsIDg2OTIyLCA4NjkzMCwgODY5NDAsIDg2OTQ4LCA4Njk1NywgODY5NjQsIAorICAgIDg2OTczLCA4Njk4MCwgODY5OTAsIDg2OTk4LCA4NzAwOCwgODcwMTYsIDg3MDI2LCA4NzAzNCwgODcwNDIsIDg3MDUwLCAKKyAgICA4NzA1OSwgODcwNjcsIDg3MDc2LCA4NzA4NSwgODcwOTQsIDg3MTAzLCA4NzExMywgODcxMjEsIDg3MTMxLCA4NzEzOSwgCisgICAgODcxNDksIDg3MTU3LCA4NzE2NywgODcxNzUsIDg3MTg1LCA4NzE5MywgODcyMDIsIDg3MjA5LCA4NzIxOCwgODcyMjUsIAorICAgIDg3MjM1LCA4NzI0MywgODcyNTMsIDg3MjYxLCA4NzI3MSwgODcyNzksIDg3Mjg3LCA4NzI5NSwgODczMDQsIDg3MzEyLCAKKyAgICA4NzMyMSwgODczMzAsIDg3MzM5LCA4NzM0OCwgODczNTYsIDg3MzY0LCA4NzM3MywgODczODEsIDg3MzkwLCA4NzM5OSwgCisgICAgODc0MDcsIDg3NDE1LCA4NzQyMywgODc0MzIsIDg3NDQwLCA4NzQ0OCwgODc0NTcsIDg3NDY1LCA4NzQ3MywgODc0ODEsIAorICAgIDg3NDg5LCA4NzQ5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc0OTksIAorICAgIDg3NTA5LCA4NzUxOSwgODc1MjksIDg3NTM5LCA4NzU1MCwgODc1NjAsIDg3NTcwLCA4NzU4MSwgODc1OTAsIDg3NTk5LCAKKyAgICA4NzYwOCwgODc2MTksIDg3NjI5LCA4NzYzOSwgODc2NTEsIDg3NjYxLCA4NzY3MSwgODc2ODEsIDg3NjkxLCA4NzcwMSwgCisgICAgODc3MTEsIDg3NzIxLCA4NzczMSwgODc3NDEsIDg3NzUxLCA4Nzc2MSwgODc3NzIsIDg3NzgzLCA4Nzc5MywgODc4MDMsIAorICAgIDg3ODE1LCA4NzgyNiwgODc4MzcsIDg3ODQ3LCA4Nzg1NywgODc4NjcsIDg3ODc3LCA4Nzg4NywgODc4OTcsIDg3OTA3LCAKKyAgICA4NzkxOSwgODc5MjksIDg3OTM5LCA4Nzk1MSwgODc5NjIsIDg3OTczLCA4Nzk4MywgODc5OTMsIDg4MDAzLCA4ODAxMywgCisgICAgODgwMjUsIDg4MDM1LCA4ODA0NSwgODgwNTYsIDg4MDY3LCA4ODA3NywgODgwODcsIDg4MDk2LCA4ODEwNSwgODgxMTQsIAorICAgIDg4MTIzLCA4ODEzMiwgODgxNDIsIDAsIDAsIDg4MTUyLCA4ODE2MiwgODgxNzIsIDg4MTgyLCA4ODE5MiwgODgyMDQsIAorICAgIDg4MjE0LCA4ODIyNCwgODgyMzYsIDg4MjQ2LCA4ODI1OCwgODgyNjcsIDg4Mjc2LCA4ODI4NywgODgyOTcsIDg4MzA5LCAKKyAgICA4ODMyMCwgODgzMzMsIDg4MzQzLCA4ODM1NSwgODgzNjQsIDg4Mzc1LCA4ODM4NiwgODgzOTksIDg4NDA5LCA4ODQxOSwgCisgICAgODg0MjksIDg4NDM5LCA4ODQ0OSwgODg0NTgsIDg4NDY3LCA4ODQ3NiwgODg0ODUsIDg4NDk1LCA4ODUwNSwgODg1MTUsIAorICAgIDg4NTI1LCA4ODUzNSwgODg1NDUsIDg4NTU1LCA4ODU2NSwgODg1NzUsIDg4NTg1LCA4ODU5NSwgODg2MDUsIDg4NjE0LCAKKyAgICA4ODYyMywgODg2MzIsIDg4NjQyLCA4ODY1MiwgODg2NjIsIDg4NjcyLCA4ODY4MiwgODg2OTMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3ODgwLCA4Nzg5NSwgODc5MTAsIDg3OTE2LCA4NzkyMiwgODc5MjgsIAotICAgIDg3OTM0LCA4Nzk0MCwgODc5NDYsIDg3OTUyLCA4Nzk1OCwgODc5NjYsIDg3OTcwLCA4Nzk3MywgMCwgMCwgODc5ODEsIAotICAgIDg3OTg0LCA4Nzk4NywgODc5OTAsIDg3OTkzLCA4Nzk5NiwgODc5OTksIDg4MDAyLCA4ODAwNSwgODgwMDgsIDg4MDExLCAKLSAgICA4ODAxNCwgODgwMTcsIDg4MDIwLCA4ODAyMywgODgwMjYsIDg4MDI5LCA4ODAzNywgODgwNDYsIDg4MDU3LCA4ODA2NSwgCi0gICAgODgwNzMsIDg4MDgyLCA4ODA5MSwgODgxMDIsIDg4MTE0LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODEyNCwgODgxMjksIDg4MTM0LCAKLSAgICA4ODE0MSwgODgxNDgsIDg4MTU0LCA4ODE2MCwgODgxNjUsIDg4MTcwLCA4ODE3NSwgODgxODEsIDg4MTg3LCA4ODE5MywgCi0gICAgODgxOTksIDg4MjA1LCA4ODIxMiwgODgyMTksIDg4MjI5LCA4ODIzOSwgODgyNDksIDg4MjU4LCA4ODI2OSwgODgyNzgsIAotICAgIDg4Mjg3LCA4ODI5NywgODgzMDcsIDg4MzE5LCA4ODMzMSwgODgzNDIsIDg4MzUzLCA4ODM2NCwgODgzNzUsIDg4Mzg1LCAKLSAgICA4ODM5NSwgODg0MDUsIDg4NDE1LCA4ODQyNiwgODg0MzcsIDg4NDQxLCA4ODQ0NiwgODg0NTUsIDg4NDY0LCA4ODQ2OCwgCi0gICAgODg0NzIsIDg4NDc2LCA4ODQ4MSwgODg0ODYsIDg4NDkxLCA4ODQ5NiwgODg0OTksIDg4NTAzLCAwLCA4ODUwOCwgODg1MTEsIAotICAgIDg4NTE0LCA4ODUxOCwgODg1MjIsIDg4NTI3LCA4ODUzMSwgODg1MzUsIDg4NTQwLCA4ODU0NSwgODg1NTIsIDg4NTU5LCAKLSAgICA4ODU2MiwgODg1NjUsIDg4NTY4LCA4ODU3MSwgODg1NzQsIDg4NTc4LCA4ODU4MiwgMCwgODg1ODYsIDg4NTkxLCA4ODU5NSwgCi0gICAgODg1OTksIDAsIDAsIDAsIDAsIDg4NjA0LCA4ODYwOSwgODg2MTYsIDg4NjIxLCA4ODYyNiwgMCwgODg2MzEsIDg4NjM2LCAKLSAgICA4ODY0MSwgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NywgCi0gICAgODg2OTYsIDg4NzA1LCA4ODcxNCwgODg3MjMsIDg4NzMzLCA4ODc0MywgODg3NTMsIDg4NzYzLCA4ODc3MiwgODg3ODEsIAotICAgIDg4NzkwLCA4ODc5OSwgODg4MDQsIDg4ODA5LCA4ODgxNSwgODg4MjEsIDg4ODI3LCA4ODgzMywgODg4NDEsIDg4ODQ5LCAKLSAgICA4ODg1NSwgODg4NjEsIDg4ODY3LCA4ODg3MywgODg4NzksIDg4ODg1LCA4ODg5MSwgODg4OTcsIDg4OTAyLCA4ODkwNywgCi0gICAgODg5MTIsIDg4OTE3LCA4ODkyMiwgODg5MjcsIDg4OTMyLCA4ODkzNywgODg5NDMsIDg4OTQ5LCA4ODk1NSwgODg5NjEsIAotICAgIDg4OTY3LCA4ODk3MywgODg5NzksIDg4OTg1LCA4ODk5MSwgODg5OTcsIDg5MDAzLCA4OTAwOSwgODkwMTUsIDg5MDIxLCAKLSAgICA4OTAyNywgODkwMzMsIDg5MDM5LCA4OTA0NSwgODkwNTEsIDg5MDU3LCA4OTA2MywgODkwNjksIDg5MDc1LCA4OTA4MSwgCi0gICAgODkwODcsIDg5MDkzLCA4OTA5OSwgODkxMDUsIDg5MTExLCA4OTExNywgODkxMjMsIDg5MTI5LCA4OTEzNSwgODkxNDEsIAotICAgIDg5MTQ3LCA4OTE1MywgODkxNTksIDg5MTY1LCA4OTE3MSwgODkxNzcsIDg5MTgzLCA4OTE4OSwgODkxOTUsIDg5MjAxLCAKLSAgICA4OTIwNywgODkyMTMsIDg5MjE5LCA4OTIyNSwgODkyMzEsIDg5MjM3LCA4OTI0MywgODkyNDksIDg5MjU1LCA4OTI2MSwgCi0gICAgODkyNjcsIDg5MjczLCA4OTI3OSwgODkyODUsIDg5MjkxLCA4OTI5NywgODkzMDIsIDg5MzA3LCA4OTMxMiwgODkzMTcsIAotICAgIDg5MzIzLCA4OTMyOSwgODkzMzUsIDg5MzQxLCA4OTM0NywgODkzNTMsIDg5MzU5LCA4OTM2NSwgODkzNzEsIDg5Mzc3LCAKLSAgICA4OTM4NCwgODkzOTEsIDg5Mzk2LCA4OTQwMSwgODk0MDYsIDg5NDExLCA4OTQyMywgODk0MzUsIDg5NDQ3LCA4OTQ1OSwgCi0gICAgODk0NzIsIDg5NDg1LCA4OTQ5MywgMCwgMCwgODk1MDEsIDAsIDg5NTA5LCA4OTUxMywgODk1MTcsIDg5NTIwLCA4OTUyNCwgCi0gICAgODk1MjgsIDg5NTMxLCA4OTUzNCwgODk1MzgsIDg5NTQyLCA4OTU0NSwgODk1NDgsIDg5NTUxLCA4OTU1NCwgODk1NTksIAotICAgIDg5NTYyLCA4OTU2NiwgODk1NjksIDg5NTcyLCA4OTU3NSwgODk1NzgsIDg5NTgxLCA4OTU4NCwgODk1ODgsIDg5NTkxLCAKLSAgICA4OTU5NSwgODk1OTgsIDg5NjAxLCA4OTYwNSwgODk2MDksIDg5NjEzLCA4OTYxNywgODk2MjIsIDg5NjI3LCA4OTYzMywgCi0gICAgODk2MzksIDg5NjQ1LCA4OTY1MCwgODk2NTYsIDg5NjYyLCA4OTY2OCwgODk2NzMsIDg5Njc5LCA4OTY4NSwgODk2OTAsIAotICAgIDg5Njk2LCA4OTcwMiwgODk3MDcsIDg5NzEzLCA4OTcxOSwgODk3MjQsIDg5NzI5LCA4OTczNSwgODk3NDAsIDg5NzQ2LCAKLSAgICA4OTc1MiwgODk3NTgsIDg5NzY0LCA4OTc3MCwgODk3NzQsIDg5Nzc5LCA4OTc4MywgODk3ODgsIDg5NzkyLCA4OTc5NywgCi0gICAgODk4MDIsIDg5ODA4LCA4OTgxNCwgODk4MjAsIDg5ODI1LCA4OTgzMSwgODk4MzcsIDg5ODQzLCA4OTg0OCwgODk4NTQsIAotICAgIDg5ODYwLCA4OTg2NSwgODk4NzEsIDg5ODc3LCA4OTg4MiwgODk4ODgsIDg5ODk0LCA4OTg5OSwgODk5MDQsIDg5OTEwLCAKLSAgICA4OTkxNSwgODk5MjEsIDg5OTI3LCA4OTkzMywgODk5MzksIDg5OTQ1LCA4OTk1MCwgODk5NTQsIDg5OTU5LCA4OTk2MiwgCi0gICAgODk5NjcsIDg5OTcyLCA4OTk3OCwgODk5ODMsIDg5OTg4LCA4OTk5MiwgODk5OTcsIDkwMDAyLCA5MDAwNywgOTAwMTIsIAotICAgIDkwMDE3LCA5MDAyMiwgOTAwMjcsIDkwMDMyLCA5MDAzOCwgOTAwNDQsIDkwMDUwLCA5MDA1OCwgOTAwNjIsIDkwMDY2LCAKLSAgICA5MDA3MCwgOTAwNzQsIDkwMDc4LCA5MDA4MiwgOTAwODcsIDkwMDkyLCA5MDA5NywgOTAxMDIsIDkwMTA3LCA5MDExMiwgCi0gICAgOTAxMTcsIDkwMTIyLCA5MDEyNywgOTAxMzIsIDkwMTM3LCA5MDE0MiwgOTAxNDcsIDkwMTUxLCA5MDE1NiwgOTAxNjEsIAotICAgIDkwMTY2LCA5MDE3MSwgOTAxNzYsIDkwMTgwLCA5MDE4NSwgOTAxOTAsIDkwMTk1LCA5MDIwMCwgOTAyMDQsIDkwMjA5LCAKLSAgICA5MDIxNCwgOTAyMTksIDkwMjI0LCA5MDIyOCwgOTAyMzMsIDkwMjM4LCA5MDI0MywgOTAyNDgsIDkwMjUzLCA5MDI1OCwgCi0gICAgOTAyNjMsIDkwMjY4LCA5MDI3MywgOTAyODAsIDkwMjg3LCA5MDI5MSwgOTAyOTYsIDkwMzAxLCA5MDMwNiwgOTAzMTEsIAotICAgIDkwMzE2LCA5MDMyMSwgOTAzMjYsIDkwMzMxLCA5MDMzNiwgOTAzNDEsIDkwMzQ2LCA5MDM1MSwgOTAzNTYsIDkwMzYxLCAKLSAgICA5MDM2NiwgOTAzNzEsIDkwMzc2LCA5MDM4MSwgOTAzODYsIDkwMzkxLCA5MDM5NiwgOTA0MDEsIDkwNDA2LCA5MDQxMSwgCi0gICAgOTA0MTYsIDkwNDIxLCA5MDQyNiwgOTA0MzEsIDkwNDM2LCAwLCAwLCAwLCA5MDQ0MSwgOTA0NDUsIDkwNDUwLCA5MDQ1NCwgCi0gICAgOTA0NTksIDkwNDY0LCAwLCAwLCA5MDQ2OCwgOTA0NzMsIDkwNDc4LCA5MDQ4MiwgOTA0ODcsIDkwNDkyLCAwLCAwLCAKLSAgICA5MDQ5NywgOTA1MDIsIDkwNTA2LCA5MDUxMSwgOTA1MTYsIDkwNTIxLCAwLCAwLCA5MDUyNiwgOTA1MzEsIDkwNTM2LCAwLCAKLSAgICAwLCAwLCA5MDU0MCwgOTA1NDQsIDkwNTQ4LCA5MDU1MiwgOTA1NTUsIDkwNTU5LCA5MDU2MywgMCwgOTA1NjcsIDkwNTczLCAKLSAgICA5MDU3NiwgOTA1NzksIDkwNTgyLCA5MDU4NSwgOTA1ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwNTkzLCAKLSAgICA5MDU5OSwgOTA2MDUsIDkwNjExLCA5MDYxNywgMCwgMCwgOTA2MjEsIDkwNjI3LCA5MDYzMywgOTA2MzksIDkwNjQ1LCAKLSAgICA5MDY1MSwgOTA2NTgsIDkwNjY1LCA5MDY3MiwgOTA2NzksIDkwNjg2LCA5MDY5MywgMCwgOTA3MDAsIDkwNzA3LCA5MDcxNCwgCi0gICAgOTA3MjAsIDkwNzI3LCA5MDczNCwgOTA3NDEsIDkwNzQ4LCA5MDc1NCwgOTA3NjEsIDkwNzY4LCA5MDc3NSwgOTA3ODIsIAotICAgIDkwNzg5LCA5MDc5NiwgOTA4MDMsIDkwODEwLCA5MDgxNywgOTA4MjMsIDkwODMwLCA5MDgzNywgOTA4NDQsIDkwODUxLCAKLSAgICA5MDg1OCwgOTA4NjUsIDkwODcyLCAwLCA5MDg3OSwgOTA4ODYsIDkwODkzLCA5MDkwMCwgOTA5MDcsIDkwOTE0LCA5MDkyMSwgCi0gICAgOTA5MjgsIDkwOTM1LCA5MDk0MiwgOTA5NDksIDkwOTU2LCA5MDk2MywgOTA5NzAsIDkwOTc2LCA5MDk4MywgOTA5OTAsIAotICAgIDkwOTk3LCA5MTAwNCwgMCwgOTEwMTEsIDkxMDE4LCAwLCA5MTAyNSwgOTEwMzIsIDkxMDM5LCA5MTA0NiwgOTEwNTMsIAotICAgIDkxMDYwLCA5MTA2NywgOTEwNzQsIDkxMDgxLCA5MTA4OCwgOTEwOTUsIDkxMTAyLCA5MTEwOSwgOTExMTYsIDkxMTIzLCAwLCAKLSAgICAwLCA5MTEyOSwgOTExMzQsIDkxMTM5LCA5MTE0NCwgOTExNDksIDkxMTU0LCA5MTE1OSwgOTExNjQsIDkxMTY5LCA5MTE3NCwgCi0gICAgOTExNzksIDkxMTg0LCA5MTE4OSwgOTExOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMTk5LCA5MTIwNiwgCi0gICAgOTEyMTMsIDkxMjIwLCA5MTIyNywgOTEyMzQsIDkxMjQxLCA5MTI0OCwgOTEyNTUsIDkxMjYyLCA5MTI2OSwgOTEyNzYsIAotICAgIDkxMjgzLCA5MTI5MCwgOTEyOTcsIDkxMzA0LCA5MTMxMSwgOTEzMTgsIDkxMzI1LCA5MTMzMiwgOTEzNDAsIDkxMzQ4LCAKLSAgICA5MTM1NSwgOTEzNjIsIDkxMzY3LCA5MTM3NSwgOTEzODMsIDkxMzkwLCA5MTM5NywgOTE0MDIsIDkxNDA5LCA5MTQxNCwgCi0gICAgOTE0MTksIDkxNDI2LCA5MTQzMSwgOTE0MzYsIDkxNDQxLCA5MTQ0OSwgOTE0NTQsIDkxNDU5LCA5MTQ2NiwgOTE0NzEsIAotICAgIDkxNDc2LCA5MTQ4MywgOTE0OTAsIDkxNDk1LCA5MTUwMCwgOTE1MDUsIDkxNTEwLCA5MTUxNSwgOTE1MjAsIDkxNTI1LCAKLSAgICA5MTUzMCwgOTE1MzUsIDkxNTQyLCA5MTU0NywgOTE1NTQsIDkxNTU5LCA5MTU2NCwgOTE1NjksIDkxNTc0LCA5MTU3OSwgCi0gICAgOTE1ODQsIDkxNTg5LCA5MTU5NCwgOTE1OTksIDkxNjA0LCA5MTYwOSwgOTE2MTYsIDkxNjIzLCA5MTYzMCwgOTE2MzcsIAotICAgIDkxNjQzLCA5MTY0OCwgOTE2NTUsIDkxNjYwLCA5MTY2NSwgOTE2NzQsIDkxNjgxLCA5MTY5MCwgOTE2OTcsIDkxNzAyLCAKLSAgICA5MTcwNywgOTE3MTUsIDkxNzIwLCA5MTcyNSwgOTE3MzAsIDkxNzM1LCA5MTc0MCwgOTE3NDcsIDkxNzUyLCA5MTc1NywgCi0gICAgOTE3NjIsIDkxNzY3LCA5MTc3MiwgOTE3NzksIDkxNzg2LCA5MTc5MywgOTE4MDAsIDkxODA3LCA5MTgxNCwgOTE4MjEsIAotICAgIDkxODI4LCA5MTgzNSwgOTE4NDIsIDkxODQ5LCA5MTg1NiwgOTE4NjMsIDkxODcwLCA5MTg3NywgOTE4ODQsIDkxODkxLCAKLSAgICA5MTg5OCwgOTE5MDUsIDkxOTEyLCA5MTkxOSwgOTE5MjYsIDkxOTMzLCA5MTk0MCwgOTE5NDcsIDkxOTU0LCA5MTk2MSwgCi0gICAgOTE5NjgsIDAsIDAsIDAsIDAsIDAsIDkxOTc1LCA5MTk4MywgOTE5OTEsIDAsIDAsIDAsIDAsIDkxOTk2LCA5MjAwMCwgCi0gICAgOTIwMDQsIDkyMDA4LCA5MjAxMiwgOTIwMTYsIDkyMDIwLCA5MjAyNSwgOTIwMjksIDkyMDM0LCA5MjAzOSwgOTIwNDQsIAotICAgIDkyMDQ5LCA5MjA1NCwgOTIwNTksIDkyMDY0LCA5MjA2OSwgOTIwNzQsIDkyMDc5LCA5MjA4NSwgOTIwOTEsIDkyMDk3LCAKLSAgICA5MjEwNCwgOTIxMTEsIDkyMTE4LCA5MjEyNSwgOTIxMzIsIDkyMTM5LCA5MjE0NSwgOTIxNTEsIDkyMTU3LCA5MjE2NCwgCi0gICAgOTIxNzEsIDkyMTc4LCA5MjE4NSwgOTIxOTIsIDkyMTk5LCA5MjIwNiwgOTIyMTMsIDkyMjIwLCA5MjIyNywgOTIyMzQsIAotICAgIDkyMjQxLCA5MjI0OCwgOTIyNTUsIDAsIDAsIDAsIDkyMjYyLCA5MjI3MCwgOTIyNzgsIDkyMjg2LCA5MjI5NCwgOTIzMDIsIAotICAgIDkyMzEyLCA5MjMyMiwgOTIzMzAsIDkyMzM4LCA5MjM0NiwgOTIzNTQsIDkyMzYyLCA5MjM2OCwgOTIzNzUsIDkyMzg0LCAKLSAgICA5MjM5MywgOTI0MDIsIDkyNDExLCA5MjQyMCwgOTI0MjksIDkyNDM5LCA5MjQ1MCwgOTI0NjAsIDkyNDcxLCA5MjQ4MCwgCi0gICAgOTI0ODksIDkyNDk4LCA5MjUwOCwgOTI1MTksIDkyNTI5LCA5MjU0MCwgOTI1NTEsIDkyNTYwLCA5MjU2OCwgOTI1NzQsIAotICAgIDkyNTgwLCA5MjU4NiwgOTI1OTIsIDkyNjAwLCA5MjYwOCwgOTI2MTQsIDkyNjIxLCA5MjYzMSwgOTI2MzgsIDkyNjQ1LCAKLSAgICA5MjY1MiwgOTI2NTksIDkyNjY2LCA5MjY3NiwgOTI2ODMsIDkyNjkwLCA5MjY5OCwgOTI3MDYsIDkyNzE1LCA5MjcyNCwgCi0gICAgOTI3MzMsIDkyNzQyLCA5Mjc1MSwgOTI3NTksIDkyNzY4LCA5Mjc3NywgOTI3ODYsIDkyNzkwLCA5Mjc5NywgOTI4MDIsIAotICAgIDkyODA3LCA5MjgxMSwgOTI4MTUsIDkyODE5LCA5MjgyMywgOTI4MjgsIDkyODMzLCA5MjgzOSwgOTI4NDUsIDkyODQ5LCAKLSAgICA5Mjg1NSwgOTI4NTksIDkyODYzLCA5Mjg2NywgOTI4NzEsIDkyODc1LCA5Mjg3OSwgOTI4ODUsIDkyODg5LCA5Mjg5NCwgMCwgCi0gICAgMCwgMCwgOTI4OTgsIDkyOTAzLCA5MjkwOCwgOTI5MTMsIDkyOTE4LCA5MjkyNSwgOTI5MzAsIDkyOTM1LCA5Mjk0MCwgCi0gICAgOTI5NDUsIDkyOTUwLCA5Mjk1NSwgMCwgMCwgMCwgMCwgOTI5NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzAzLCA4ODcxOCwgODg3MzMsIDg4NzM5LCA4ODc0NSwgODg3NTEsIAorICAgIDg4NzU3LCA4ODc2MywgODg3NjksIDg4Nzc1LCA4ODc4MSwgODg3ODksIDg4NzkzLCA4ODc5NiwgMCwgMCwgODg4MDQsIAorICAgIDg4ODA3LCA4ODgxMCwgODg4MTMsIDg4ODE2LCA4ODgxOSwgODg4MjIsIDg4ODI1LCA4ODgyOCwgODg4MzEsIDg4ODM0LCAKKyAgICA4ODgzNywgODg4NDAsIDg4ODQzLCA4ODg0NiwgODg4NDksIDg4ODUyLCA4ODg2MCwgODg4NjksIDg4ODgwLCA4ODg4OCwgCisgICAgODg4OTYsIDg4OTA1LCA4ODkxNCwgODg5MjUsIDg4OTM3LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODk0NywgODg5NTIsIDg4OTU3LCAKKyAgICA4ODk2NCwgODg5NzEsIDg4OTc3LCA4ODk4MywgODg5ODgsIDg4OTkzLCA4ODk5OCwgODkwMDQsIDg5MDEwLCA4OTAxNiwgCisgICAgODkwMjIsIDg5MDI4LCA4OTAzNSwgODkwNDIsIDg5MDUyLCA4OTA2MiwgODkwNzIsIDg5MDgxLCA4OTA5MiwgODkxMDEsIAorICAgIDg5MTEwLCA4OTEyMCwgODkxMzAsIDg5MTQyLCA4OTE1NCwgODkxNjUsIDg5MTc2LCA4OTE4NywgODkxOTgsIDg5MjA4LCAKKyAgICA4OTIxOCwgODkyMjgsIDg5MjM4LCA4OTI0OSwgODkyNjAsIDg5MjY0LCA4OTI2OSwgODkyNzgsIDg5Mjg3LCA4OTI5MSwgCisgICAgODkyOTUsIDg5Mjk5LCA4OTMwNCwgODkzMDksIDg5MzE0LCA4OTMxOSwgODkzMjIsIDg5MzI2LCAwLCA4OTMzMSwgODkzMzQsIAorICAgIDg5MzM3LCA4OTM0MSwgODkzNDUsIDg5MzUwLCA4OTM1NCwgODkzNTgsIDg5MzYzLCA4OTM2OCwgODkzNzUsIDg5MzgyLCAKKyAgICA4OTM4NSwgODkzODgsIDg5MzkxLCA4OTM5NCwgODkzOTcsIDg5NDAxLCA4OTQwNSwgMCwgODk0MDksIDg5NDE0LCA4OTQxOCwgCisgICAgODk0MjIsIDAsIDAsIDAsIDAsIDg5NDI3LCA4OTQzMiwgODk0MzksIDg5NDQ0LCA4OTQ0OSwgMCwgODk0NTQsIDg5NDU5LCAKKyAgICA4OTQ2NCwgODk0NjksIDg5NDc0LCA4OTQ3OSwgODk0ODQsIDg5NDg5LCA4OTQ5NCwgODk0OTksIDg5NTA0LCA4OTUxMCwgCisgICAgODk1MTksIDg5NTI4LCA4OTUzNywgODk1NDYsIDg5NTU2LCA4OTU2NiwgODk1NzYsIDg5NTg2LCA4OTU5NSwgODk2MDQsIAorICAgIDg5NjEzLCA4OTYyMiwgODk2MjcsIDg5NjMyLCA4OTYzOCwgODk2NDQsIDg5NjUwLCA4OTY1NiwgODk2NjQsIDg5NjcyLCAKKyAgICA4OTY3OCwgODk2ODQsIDg5NjkwLCA4OTY5NiwgODk3MDIsIDg5NzA4LCA4OTcxNCwgODk3MjAsIDg5NzI1LCA4OTczMCwgCisgICAgODk3MzUsIDg5NzQwLCA4OTc0NSwgODk3NTAsIDg5NzU1LCA4OTc2MCwgODk3NjYsIDg5NzcyLCA4OTc3OCwgODk3ODQsIAorICAgIDg5NzkwLCA4OTc5NiwgODk4MDIsIDg5ODA4LCA4OTgxNCwgODk4MjAsIDg5ODI2LCA4OTgzMiwgODk4MzgsIDg5ODQ0LCAKKyAgICA4OTg1MCwgODk4NTYsIDg5ODYyLCA4OTg2OCwgODk4NzQsIDg5ODgwLCA4OTg4NiwgODk4OTIsIDg5ODk4LCA4OTkwNCwgCisgICAgODk5MTAsIDg5OTE2LCA4OTkyMiwgODk5MjgsIDg5OTM0LCA4OTk0MCwgODk5NDYsIDg5OTUyLCA4OTk1OCwgODk5NjQsIAorICAgIDg5OTcwLCA4OTk3NiwgODk5ODIsIDg5OTg4LCA4OTk5NCwgOTAwMDAsIDkwMDA2LCA5MDAxMiwgOTAwMTgsIDkwMDI0LCAKKyAgICA5MDAzMCwgOTAwMzYsIDkwMDQyLCA5MDA0OCwgOTAwNTQsIDkwMDYwLCA5MDA2NiwgOTAwNzIsIDkwMDc4LCA5MDA4NCwgCisgICAgOTAwOTAsIDkwMDk2LCA5MDEwMiwgOTAxMDgsIDkwMTE0LCA5MDEyMCwgOTAxMjUsIDkwMTMwLCA5MDEzNSwgOTAxNDAsIAorICAgIDkwMTQ2LCA5MDE1MiwgOTAxNTgsIDkwMTY0LCA5MDE3MCwgOTAxNzYsIDkwMTgyLCA5MDE4OCwgOTAxOTQsIDkwMjAwLCAKKyAgICA5MDIwNywgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMjksIDkwMjM0LCA5MDI0NiwgOTAyNTgsIDkwMjcwLCA5MDI4MiwgCisgICAgOTAyOTUsIDkwMzA4LCA5MDMxNiwgMCwgMCwgOTAzMjQsIDAsIDkwMzMyLCA5MDMzNiwgOTAzNDAsIDkwMzQzLCA5MDM0NywgCisgICAgOTAzNTEsIDkwMzU0LCA5MDM1NywgOTAzNjEsIDkwMzY1LCA5MDM2OCwgOTAzNzEsIDkwMzc0LCA5MDM3NywgOTAzODIsIAorICAgIDkwMzg1LCA5MDM4OSwgOTAzOTIsIDkwMzk1LCA5MDM5OCwgOTA0MDEsIDkwNDA0LCA5MDQwNywgOTA0MTEsIDkwNDE0LCAKKyAgICA5MDQxOCwgOTA0MjEsIDkwNDI0LCA5MDQyOCwgOTA0MzIsIDkwNDM2LCA5MDQ0MCwgOTA0NDUsIDkwNDUwLCA5MDQ1NiwgCisgICAgOTA0NjIsIDkwNDY4LCA5MDQ3MywgOTA0NzksIDkwNDg1LCA5MDQ5MSwgOTA0OTYsIDkwNTAyLCA5MDUwOCwgOTA1MTMsIAorICAgIDkwNTE5LCA5MDUyNSwgOTA1MzAsIDkwNTM2LCA5MDU0MiwgOTA1NDcsIDkwNTUzLCA5MDU1OSwgOTA1NjQsIDkwNTcwLCAKKyAgICA5MDU3NiwgOTA1ODIsIDkwNTg4LCA5MDU5NCwgOTA1OTgsIDkwNjAzLCA5MDYwNywgOTA2MTIsIDkwNjE2LCA5MDYyMSwgCisgICAgOTA2MjYsIDkwNjMyLCA5MDYzOCwgOTA2NDQsIDkwNjQ5LCA5MDY1NSwgOTA2NjEsIDkwNjY3LCA5MDY3MiwgOTA2NzgsIAorICAgIDkwNjg0LCA5MDY4OSwgOTA2OTUsIDkwNzAxLCA5MDcwNiwgOTA3MTIsIDkwNzE4LCA5MDcyMywgOTA3MjksIDkwNzM1LCAKKyAgICA5MDc0MCwgOTA3NDYsIDkwNzUyLCA5MDc1OCwgOTA3NjQsIDkwNzcwLCA5MDc3NSwgOTA3NzksIDkwNzg0LCA5MDc4NywgCisgICAgOTA3OTIsIDkwNzk3LCA5MDgwMywgOTA4MDgsIDkwODEzLCA5MDgxNywgOTA4MjIsIDkwODI3LCA5MDgzMiwgOTA4MzcsIAorICAgIDkwODQyLCA5MDg0NywgOTA4NTIsIDkwODU3LCA5MDg2MywgOTA4NjksIDkwODc1LCA5MDg4MywgOTA4ODcsIDkwODkxLCAKKyAgICA5MDg5NSwgOTA4OTksIDkwOTAzLCA5MDkwNywgOTA5MTIsIDkwOTE3LCA5MDkyMiwgOTA5MjcsIDkwOTMyLCA5MDkzNywgCisgICAgOTA5NDIsIDkwOTQ3LCA5MDk1MiwgOTA5NTcsIDkwOTYyLCA5MDk2NywgOTA5NzIsIDkwOTc2LCA5MDk4MCwgOTA5ODUsIAorICAgIDkwOTkwLCA5MDk5NSwgOTEwMDAsIDkxMDA0LCA5MTAwOSwgOTEwMTQsIDkxMDE5LCA5MTAyNCwgOTEwMjgsIDkxMDMzLCAKKyAgICA5MTAzOCwgOTEwNDMsIDkxMDQ4LCA5MTA1MiwgOTEwNTcsIDkxMDYyLCA5MTA2NywgOTEwNzIsIDkxMDc3LCA5MTA4MiwgCisgICAgOTEwODcsIDkxMDkyLCA5MTA5NywgOTExMDQsIDkxMTExLCA5MTExNSwgOTExMjAsIDkxMTI1LCA5MTEzMCwgOTExMzUsIAorICAgIDkxMTQwLCA5MTE0NSwgOTExNTAsIDkxMTU1LCA5MTE2MCwgOTExNjUsIDkxMTcwLCA5MTE3NSwgOTExODAsIDkxMTg1LCAKKyAgICA5MTE5MCwgOTExOTUsIDkxMjAwLCA5MTIwNSwgOTEyMTAsIDkxMjE1LCA5MTIyMCwgOTEyMjUsIDkxMjMwLCA5MTIzNSwgCisgICAgOTEyNDAsIDkxMjQ1LCA5MTI1MCwgOTEyNTUsIDkxMjYwLCAwLCAwLCAwLCA5MTI2NSwgOTEyNjksIDkxMjc0LCA5MTI3OCwgCisgICAgOTEyODMsIDkxMjg4LCAwLCAwLCA5MTI5MiwgOTEyOTcsIDkxMzAyLCA5MTMwNiwgOTEzMTEsIDkxMzE2LCAwLCAwLCAKKyAgICA5MTMyMSwgOTEzMjYsIDkxMzMwLCA5MTMzNSwgOTEzNDAsIDkxMzQ1LCAwLCAwLCA5MTM1MCwgOTEzNTUsIDkxMzYwLCAwLCAKKyAgICAwLCAwLCA5MTM2NCwgOTEzNjgsIDkxMzcyLCA5MTM3NiwgOTEzNzksIDkxMzgzLCA5MTM4NywgMCwgOTEzOTEsIDkxMzk3LCAKKyAgICA5MTQwMCwgOTE0MDMsIDkxNDA2LCA5MTQwOSwgOTE0MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNDE3LCAKKyAgICA5MTQyMywgOTE0MjksIDkxNDM1LCA5MTQ0MSwgMCwgMCwgOTE0NDUsIDkxNDUxLCA5MTQ1NywgOTE0NjMsIDkxNDY5LCAKKyAgICA5MTQ3NSwgOTE0ODIsIDkxNDg5LCA5MTQ5NiwgOTE1MDMsIDkxNTEwLCA5MTUxNywgMCwgOTE1MjQsIDkxNTMxLCA5MTUzOCwgCisgICAgOTE1NDQsIDkxNTUxLCA5MTU1OCwgOTE1NjUsIDkxNTcyLCA5MTU3OCwgOTE1ODUsIDkxNTkyLCA5MTU5OSwgOTE2MDYsIAorICAgIDkxNjEyLCA5MTYxOSwgOTE2MjYsIDkxNjMzLCA5MTY0MCwgOTE2NDYsIDkxNjUzLCA5MTY2MCwgOTE2NjcsIDkxNjc0LCAKKyAgICA5MTY4MSwgOTE2ODgsIDkxNjk1LCAwLCA5MTcwMiwgOTE3MDksIDkxNzE2LCA5MTcyMywgOTE3MzAsIDkxNzM3LCA5MTc0NCwgCisgICAgOTE3NTEsIDkxNzU4LCA5MTc2NSwgOTE3NzIsIDkxNzc5LCA5MTc4NiwgOTE3OTMsIDkxNzk5LCA5MTgwNiwgOTE4MTMsIAorICAgIDkxODIwLCA5MTgyNywgMCwgOTE4MzQsIDkxODQxLCAwLCA5MTg0OCwgOTE4NTUsIDkxODYyLCA5MTg2OSwgOTE4NzYsIAorICAgIDkxODgzLCA5MTg5MCwgOTE4OTcsIDkxOTA0LCA5MTkxMSwgOTE5MTgsIDkxOTI1LCA5MTkzMiwgOTE5MzksIDkxOTQ2LCAwLCAKKyAgICAwLCA5MTk1MiwgOTE5NTcsIDkxOTYyLCA5MTk2NywgOTE5NzIsIDkxOTc3LCA5MTk4MiwgOTE5ODcsIDkxOTkyLCA5MTk5NywgCisgICAgOTIwMDIsIDkyMDA3LCA5MjAxMiwgOTIwMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyMDIyLCA5MjAyOSwgCisgICAgOTIwMzYsIDkyMDQzLCA5MjA1MCwgOTIwNTcsIDkyMDY0LCA5MjA3MSwgOTIwNzgsIDkyMDg1LCA5MjA5MiwgOTIwOTksIAorICAgIDkyMTA2LCA5MjExMywgOTIxMjAsIDkyMTI3LCA5MjEzNCwgOTIxNDEsIDkyMTQ4LCA5MjE1NSwgOTIxNjMsIDkyMTcxLCAKKyAgICA5MjE3OCwgOTIxODUsIDkyMTkwLCA5MjE5OCwgOTIyMDYsIDkyMjEzLCA5MjIyMCwgOTIyMjUsIDkyMjMyLCA5MjIzNywgCisgICAgOTIyNDIsIDkyMjQ5LCA5MjI1NCwgOTIyNTksIDkyMjY0LCA5MjI3MiwgOTIyNzcsIDkyMjgyLCA5MjI4OSwgOTIyOTQsIAorICAgIDkyMjk5LCA5MjMwNiwgOTIzMTMsIDkyMzE4LCA5MjMyMywgOTIzMjgsIDkyMzMzLCA5MjMzOCwgOTIzNDMsIDkyMzQ4LCAKKyAgICA5MjM1MywgOTIzNTgsIDkyMzY1LCA5MjM3MCwgOTIzNzcsIDkyMzgyLCA5MjM4NywgOTIzOTIsIDkyMzk3LCA5MjQwMiwgCisgICAgOTI0MDcsIDkyNDEyLCA5MjQxNywgOTI0MjIsIDkyNDI3LCA5MjQzMiwgOTI0MzksIDkyNDQ2LCA5MjQ1MywgOTI0NjAsIAorICAgIDkyNDY2LCA5MjQ3MSwgOTI0NzgsIDkyNDgzLCA5MjQ4OCwgOTI0OTcsIDkyNTA0LCA5MjUxMywgOTI1MjAsIDkyNTI1LCAKKyAgICA5MjUzMCwgOTI1MzgsIDkyNTQzLCA5MjU0OCwgOTI1NTMsIDkyNTU4LCA5MjU2MywgOTI1NzAsIDkyNTc1LCA5MjU4MCwgCisgICAgOTI1ODUsIDkyNTkwLCA5MjU5NSwgOTI2MDIsIDkyNjA5LCA5MjYxNiwgOTI2MjMsIDkyNjMwLCA5MjYzNywgOTI2NDQsIAorICAgIDkyNjUxLCA5MjY1OCwgOTI2NjUsIDkyNjcyLCA5MjY3OSwgOTI2ODYsIDkyNjkzLCA5MjcwMCwgOTI3MDcsIDkyNzE0LCAKKyAgICA5MjcyMSwgOTI3MjgsIDkyNzM1LCA5Mjc0MiwgOTI3NDksIDkyNzU2LCA5Mjc2MywgOTI3NzAsIDkyNzc3LCA5Mjc4NCwgCisgICAgOTI3OTEsIDAsIDAsIDAsIDAsIDAsIDkyNzk4LCA5MjgwNiwgOTI4MTQsIDAsIDAsIDAsIDAsIDkyODE5LCA5MjgyMywgCisgICAgOTI4MjcsIDkyODMxLCA5MjgzNSwgOTI4MzksIDkyODQzLCA5Mjg0OCwgOTI4NTIsIDkyODU3LCA5Mjg2MiwgOTI4NjcsIAorICAgIDkyODcyLCA5Mjg3NywgOTI4ODIsIDkyODg3LCA5Mjg5MiwgOTI4OTcsIDkyOTAyLCA5MjkwOCwgOTI5MTQsIDkyOTIwLCAKKyAgICA5MjkyNywgOTI5MzQsIDkyOTQxLCA5Mjk0OCwgOTI5NTUsIDkyOTYyLCA5Mjk2OCwgOTI5NzQsIDkyOTgwLCA5Mjk4NywgCisgICAgOTI5OTQsIDkzMDAxLCA5MzAwOCwgOTMwMTUsIDkzMDIyLCA5MzAyOSwgOTMwMzYsIDkzMDQzLCA5MzA1MCwgOTMwNTcsIAorICAgIDkzMDY0LCA5MzA3MSwgOTMwNzgsIDAsIDAsIDAsIDkzMDg1LCA5MzA5MywgOTMxMDEsIDkzMTA5LCA5MzExNywgOTMxMjUsIAorICAgIDkzMTM1LCA5MzE0NSwgOTMxNTMsIDkzMTYxLCA5MzE2OSwgOTMxNzcsIDkzMTg1LCA5MzE5MSwgOTMxOTgsIDkzMjA3LCAKKyAgICA5MzIxNiwgOTMyMjUsIDkzMjM0LCA5MzI0MywgOTMyNTIsIDkzMjYyLCA5MzI3MywgOTMyODMsIDkzMjk0LCA5MzMwMywgCisgICAgOTMzMTIsIDkzMzIxLCA5MzMzMSwgOTMzNDIsIDkzMzUyLCA5MzM2MywgOTMzNzQsIDkzMzgzLCA5MzM5MSwgOTMzOTcsIAorICAgIDkzNDAzLCA5MzQwOSwgOTM0MTUsIDkzNDIzLCA5MzQzMSwgOTM0MzcsIDkzNDQ0LCA5MzQ1NCwgOTM0NjEsIDkzNDY4LCAKKyAgICA5MzQ3NSwgOTM0ODIsIDkzNDg5LCA5MzQ5OSwgOTM1MDYsIDkzNTEzLCA5MzUyMSwgOTM1MjksIDkzNTM4LCA5MzU0NywgCisgICAgOTM1NTYsIDkzNTY1LCA5MzU3NCwgOTM1ODIsIDkzNTkxLCA5MzYwMCwgOTM2MDksIDkzNjEzLCA5MzYyMCwgOTM2MjUsIAorICAgIDkzNjMwLCA5MzYzNCwgOTM2MzgsIDkzNjQyLCA5MzY0NiwgOTM2NTEsIDkzNjU2LCA5MzY2MiwgOTM2NjgsIDkzNjcyLCAKKyAgICA5MzY3OCwgOTM2ODIsIDkzNjg2LCA5MzY5MCwgOTM2OTQsIDkzNjk4LCA5MzcwMiwgOTM3MDgsIDkzNzEyLCA5MzcxNywgCisgICAgOTM3MjEsIDkzNzI1LCAwLCA5MzcyOCwgOTM3MzMsIDkzNzM4LCA5Mzc0MywgOTM3NDgsIDkzNzU1LCA5Mzc2MCwgOTM3NjUsIAorICAgIDkzNzcwLCA5Mzc3NSwgOTM3ODAsIDkzNzg1LCAwLCAwLCAwLCAwLCA5Mzc5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI5NjYsIDkyOTczLCA5Mjk4MiwgOTI5OTEsIDkyOTk4LCAKLSAgICA5MzAwNSwgOTMwMTIsIDkzMDE5LCA5MzAyNiwgOTMwMzMsIDkzMDM5LCA5MzA0NiwgOTMwNTMsIDkzMDYwLCA5MzA2NywgCi0gICAgOTMwNzQsIDkzMDgxLCA5MzA4OCwgOTMwOTUsIDkzMTA0LCA5MzExMSwgOTMxMTgsIDkzMTI1LCA5MzEzMiwgOTMxMzksIAotICAgIDkzMTQ2LCA5MzE1MywgOTMxNjAsIDkzMTY5LCA5MzE3NiwgOTMxODMsIDkzMTkwLCA5MzE5NywgOTMyMDQsIDkzMjExLCAKLSAgICA5MzIyMCwgOTMyMjcsIDkzMjM0LCA5MzI0MSwgOTMyNDgsIDkzMjU3LCA5MzI2NCwgOTMyNzEsIDkzMjc4LCA5MzI4NiwgCi0gICAgOTMyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzNzk2LCA5MzgwMywgOTM4MTIsIDkzODIxLCAKKyAgICA5MzgyOCwgOTM4MzUsIDkzODQyLCA5Mzg0OSwgOTM4NTYsIDkzODYzLCA5Mzg2OSwgOTM4NzYsIDkzODgzLCA5Mzg5MCwgCisgICAgOTM4OTcsIDkzOTA0LCA5MzkxMSwgOTM5MTgsIDkzOTI1LCA5MzkzNCwgOTM5NDEsIDkzOTQ4LCA5Mzk1NSwgOTM5NjIsIAorICAgIDkzOTY5LCA5Mzk3NiwgOTM5ODMsIDkzOTkwLCA5Mzk5OSwgOTQwMDYsIDk0MDEzLCA5NDAyMCwgOTQwMjcsIDk0MDM0LCAKKyAgICA5NDA0MSwgOTQwNTAsIDk0MDU3LCA5NDA2NCwgOTQwNzEsIDk0MDc4LCA5NDA4NywgOTQwOTQsIDk0MTAxLCA5NDEwOCwgCisgICAgOTQxMTYsIDk0MTI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzMwNCwgOTMzMDgsIDkzMzEyLCA5MzMxNywgOTMzMjIsIAotICAgIDkzMzI3LCA5MzMzMiwgOTMzMzYsIDkzMzQxLCA5MzM0NiwgOTMzNTEsIDkzMzU2LCA5MzM2MSwgOTMzNjYsIDkzMzcwLCAKLSAgICA5MzM3NSwgOTMzODAsIDkzMzg1LCA5MzM5MCwgOTMzOTQsIDkzMzk5LCA5MzQwNCwgOTM0MDgsIDkzNDEyLCA5MzQxNywgCi0gICAgOTM0MjIsIDkzNDI3LCA5MzQzMiwgOTM0MzcsIDAsIDAsIDAsIDkzNDQyLCA5MzQ0NiwgOTM0NTEsIDkzNDU2LCA5MzQ2MCwgCi0gICAgOTM0NjUsIDkzNDY5LCA5MzQ3NCwgOTM0NzksIDkzNDg0LCA5MzQ4OSwgOTM0OTQsIDkzNDk4LCA5MzUwMywgOTM1MDgsIAotICAgIDkzNTEzLCA5MzUxOCwgOTM1MjIsIDkzNTI3LCA5MzUzMSwgOTM1MzYsIDkzNTQxLCA5MzU0NiwgOTM1NTEsIDkzNTU2LCAKLSAgICA5MzU2MSwgOTM1NjUsIDkzNTY5LCA5MzU3NCwgOTM1NzksIDkzNTg0LCA5MzU4OSwgOTM1OTQsIDkzNTk5LCA5MzYwNCwgCi0gICAgOTM2MDksIDkzNjE0LCA5MzYxOSwgOTM2MjQsIDkzNjI5LCA5MzYzNCwgOTM2MzksIDkzNjQ0LCA5MzY0OSwgOTM2NTQsIAotICAgIDkzNjU5LCA5MzY2NCwgOTM2NjksIDkzNjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5MzY3OSwgOTM2ODUsIDkzNjkwLCA5MzY5NSwgOTM3MDAsIDkzNzA1LCA5MzcxMCwgOTM3MTUsIDkzNzIxLCA5MzcyNiwgCi0gICAgOTM3MzIsIDkzNzM4LCA5Mzc0NCwgOTM3NTAsIDkzNzU2LCA5Mzc2MiwgOTM3NjgsIDkzNzc0LCA5Mzc4MCwgOTM3ODYsIAotICAgIDkzNzkzLCA5MzgwMCwgOTM4MDcsIDkzODE1LCA5MzgyMywgOTM4MzEsIDkzODM5LCA5Mzg0NywgMCwgMCwgMCwgMCwgCi0gICAgOTM4NTUsIDkzODU5LCA5Mzg2NCwgOTM4NjksIDkzODc0LCA5Mzg3OCwgOTM4ODMsIDkzODg4LCA5Mzg5MywgOTM4OTgsIAotICAgIDkzOTAyLCA5MzkwNiwgOTM5MTEsIDkzOTE2LCA5MzkyMSwgOTM5MjYsIDkzOTMwLCA5MzkzNSwgOTM5NDAsIDkzOTQ1LCAKLSAgICA5Mzk1MCwgOTM5NTUsIDkzOTYwLCA5Mzk2NCwgOTM5NjksIDkzOTc0LCA5Mzk3OSwgOTM5ODQsIDkzOTg5LCA5Mzk5NCwgCi0gICAgOTM5OTksIDk0MDA0LCA5NDAwOSwgOTQwMTQsIDk0MDE5LCA5NDAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOTQwMzEsIDk0MDM2LCA5NDA0MSwgOTQwNDYsIDk0MDUxLCA5NDA1NiwgOTQwNjEsIDk0MDY2LCA5NDA3MSwgCi0gICAgOTQwNzYsIDk0MDgxLCA5NDA4NiwgOTQwOTEsIDk0MDk2LCA5NDEwMSwgOTQxMDYsIDk0MTExLCA5NDExNiwgOTQxMjEsIAotICAgIDk0MTI2LCA5NDEzMSwgOTQxMzYsIDk0MTQxLCA5NDE0NiwgOTQxNTEsIDk0MTU2LCA5NDE2MSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTQxNjgsIDk0MTc0LCA5NDE4MCwgOTQxODYsIDk0MTkyLCA5NDE5NywgOTQyMDMsIDk0MjA5LCA5NDIxNSwgOTQyMjEsIAotICAgIDk0MjI2LCA5NDIzMiwgOTQyMzgsIDk0MjQ0LCA5NDI1MCwgOTQyNTYsIDk0MjYyLCA5NDI2OCwgOTQyNzQsIDk0MjgwLCAKLSAgICA5NDI4NSwgOTQyOTEsIDk0Mjk3LCA5NDMwMywgOTQzMDksIDk0MzE1LCA5NDMyMCwgOTQzMjYsIDk0MzMyLCA5NDMzNywgCi0gICAgOTQzNDMsIDk0MzQ5LCA5NDM1NSwgOTQzNjEsIDk0MzY3LCA5NDM3MywgOTQzNzksIDk0Mzg0LCA5NDM5MCwgOTQzOTcsIAotICAgIDk0NDA0LCA5NDQxMSwgOTQ0MTgsIDAsIDAsIDAsIDAsIDAsIDk0NDI1LCA5NDQzMCwgOTQ0MzUsIDk0NDQwLCA5NDQ0NSwgCi0gICAgOTQ0NTAsIDk0NDU1LCA5NDQ2MCwgOTQ0NjUsIDk0NDcwLCA5NDQ3NSwgOTQ0ODAsIDk0NDg1LCA5NDQ5MCwgOTQ0OTUsIAotICAgIDk0NTAwLCA5NDUwNSwgOTQ1MTAsIDk0NTE1LCA5NDUyMCwgOTQ1MjUsIDk0NTMwLCA5NDUzNSwgOTQ1NDAsIDk0NTQ1LCAKLSAgICA5NDU1MCwgOTQ1NTUsIDk0NTU5LCA5NDU2MywgOTQ1NjcsIDAsIDk0NTcyLCA5NDU3OCwgOTQ1ODMsIDk0NTg4LCA5NDU5MywgCi0gICAgOTQ1OTgsIDk0NjA0LCA5NDYxMCwgOTQ2MTYsIDk0NjIyLCA5NDYyOCwgOTQ2MzQsIDk0NjQwLCA5NDY0NiwgOTQ2NTIsIAotICAgIDk0NjU4LCA5NDY2NCwgOTQ2NzAsIDk0Njc2LCA5NDY4MSwgOTQ2ODcsIDk0NjkzLCA5NDY5OSwgOTQ3MDUsIDk0NzEwLCAKLSAgICA5NDcxNiwgOTQ3MjIsIDk0NzI3LCA5NDczMywgOTQ3MzksIDk0NzQ1LCA5NDc1MSwgOTQ3NTcsIDk0NzYzLCA5NDc2OSwgCi0gICAgOTQ3NzUsIDk0NzgxLCAwLCAwLCAwLCAwLCA5NDc4NiwgOTQ3OTIsIDk0Nzk4LCA5NDgwNCwgOTQ4MTAsIDk0ODE2LCAKLSAgICA5NDgyMiwgOTQ4MjgsIDk0ODM0LCA5NDg0MSwgOTQ4NDYsIDk0ODUxLCA5NDg1NywgOTQ4NjMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0MTM0LCA5NDEzOCwgOTQxNDIsIDk0MTQ3LCAKKyAgICA5NDE1MiwgOTQxNTcsIDk0MTYyLCA5NDE2NiwgOTQxNzEsIDk0MTc2LCA5NDE4MSwgOTQxODYsIDk0MTkxLCA5NDE5NiwgCisgICAgOTQyMDAsIDk0MjA1LCA5NDIxMCwgOTQyMTUsIDk0MjIwLCA5NDIyNCwgOTQyMjksIDk0MjM0LCA5NDIzOCwgOTQyNDMsIAorICAgIDk0MjQ4LCA5NDI1MywgOTQyNTgsIDk0MjYzLCA5NDI2OCwgMCwgMCwgMCwgOTQyNzMsIDk0Mjc3LCA5NDI4MiwgOTQyODcsIAorICAgIDk0MjkxLCA5NDI5NiwgOTQzMDAsIDk0MzA1LCA5NDMxMCwgOTQzMTUsIDk0MzIwLCA5NDMyNSwgOTQzMjksIDk0MzM0LCAKKyAgICA5NDMzOSwgOTQzNDQsIDk0MzQ5LCA5NDM1NCwgOTQzNTksIDk0MzYzLCA5NDM2OCwgOTQzNzMsIDk0Mzc4LCA5NDM4MywgCisgICAgOTQzODgsIDk0MzkzLCA5NDM5NywgOTQ0MDEsIDk0NDA2LCA5NDQxMSwgOTQ0MTYsIDk0NDIxLCA5NDQyNiwgOTQ0MzEsIAorICAgIDk0NDM2LCA5NDQ0MSwgOTQ0NDYsIDk0NDUxLCA5NDQ1NiwgOTQ0NjEsIDk0NDY2LCA5NDQ3MSwgOTQ0NzYsIDk0NDgxLCAKKyAgICA5NDQ4NiwgOTQ0OTEsIDk0NDk2LCA5NDUwMSwgOTQ1MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDk0NTExLCA5NDUxNywgOTQ1MjIsIDk0NTI3LCA5NDUzMiwgOTQ1MzcsIDk0NTQyLCA5NDU0NywgOTQ1NTMsIAorICAgIDk0NTU4LCA5NDU2NCwgOTQ1NzAsIDk0NTc2LCA5NDU4MiwgOTQ1ODgsIDk0NTk0LCA5NDYwMCwgOTQ2MDYsIDk0NjEyLCAKKyAgICA5NDYxOCwgOTQ2MjUsIDk0NjMyLCA5NDYzOSwgOTQ2NDcsIDk0NjU1LCA5NDY2MywgOTQ2NzEsIDk0Njc5LCAwLCAwLCAwLCAKKyAgICAwLCA5NDY4NywgOTQ2OTEsIDk0Njk2LCA5NDcwMSwgOTQ3MDYsIDk0NzEwLCA5NDcxNSwgOTQ3MjAsIDk0NzI1LCA5NDczMCwgCisgICAgOTQ3MzQsIDk0NzM4LCA5NDc0MywgOTQ3NDgsIDk0NzUzLCA5NDc1OCwgOTQ3NjIsIDk0NzY3LCA5NDc3MiwgOTQ3NzcsIAorICAgIDk0NzgyLCA5NDc4NywgOTQ3OTIsIDk0Nzk2LCA5NDgwMSwgOTQ4MDYsIDk0ODExLCA5NDgxNiwgOTQ4MjEsIDk0ODI2LCAKKyAgICA5NDgzMSwgOTQ4MzYsIDk0ODQxLCA5NDg0NiwgOTQ4NTEsIDk0ODU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5NDg2MywgOTQ4NjgsIDk0ODczLCA5NDg3OCwgOTQ4ODMsIDk0ODg4LCA5NDg5MywgOTQ4OTgsIDk0OTAzLCAKKyAgICA5NDkwOCwgOTQ5MTMsIDk0OTE4LCA5NDkyMywgOTQ5MjgsIDk0OTMzLCA5NDkzOCwgOTQ5NDMsIDk0OTQ4LCA5NDk1MywgCisgICAgOTQ5NTgsIDk0OTYzLCA5NDk2OCwgOTQ5NzMsIDk0OTc4LCA5NDk4MywgOTQ5ODgsIDk0OTkzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NTAwMCwgOTUwMDYsIDk1MDEyLCA5NTAxOCwgOTUwMjQsIDk1MDI5LCA5NTAzNSwgOTUwNDEsIDk1MDQ3LCA5NTA1MywgCisgICAgOTUwNTgsIDk1MDY0LCA5NTA3MCwgOTUwNzYsIDk1MDgyLCA5NTA4OCwgOTUwOTQsIDk1MTAwLCA5NTEwNiwgOTUxMTIsIAorICAgIDk1MTE3LCA5NTEyMywgOTUxMjksIDk1MTM1LCA5NTE0MSwgOTUxNDcsIDk1MTUyLCA5NTE1OCwgOTUxNjQsIDk1MTY5LCAKKyAgICA5NTE3NSwgOTUxODEsIDk1MTg3LCA5NTE5MywgOTUxOTksIDk1MjA1LCA5NTIxMSwgOTUyMTYsIDk1MjIyLCA5NTIyOSwgCisgICAgOTUyMzYsIDk1MjQzLCA5NTI1MCwgMCwgMCwgMCwgMCwgMCwgOTUyNTcsIDk1MjYyLCA5NTI2NywgOTUyNzIsIDk1Mjc3LCAKKyAgICA5NTI4MiwgOTUyODcsIDk1MjkyLCA5NTI5NywgOTUzMDIsIDk1MzA3LCA5NTMxMiwgOTUzMTcsIDk1MzIyLCA5NTMyNywgCisgICAgOTUzMzIsIDk1MzM3LCA5NTM0MiwgOTUzNDcsIDk1MzUyLCA5NTM1NywgOTUzNjIsIDk1MzY3LCA5NTM3MiwgOTUzNzcsIAorICAgIDk1MzgyLCA5NTM4NywgOTUzOTEsIDk1Mzk1LCA5NTM5OSwgMCwgOTU0MDQsIDk1NDEwLCA5NTQxNSwgOTU0MjAsIDk1NDI1LCAKKyAgICA5NTQzMCwgOTU0MzYsIDk1NDQyLCA5NTQ0OCwgOTU0NTQsIDk1NDYwLCA5NTQ2NiwgOTU0NzIsIDk1NDc4LCA5NTQ4NCwgCisgICAgOTU0OTAsIDk1NDk2LCA5NTUwMiwgOTU1MDgsIDk1NTEzLCA5NTUxOSwgOTU1MjUsIDk1NTMwLCA5NTUzNiwgOTU1NDEsIAorICAgIDk1NTQ3LCA5NTU1MywgOTU1NTgsIDk1NTY0LCA5NTU3MCwgOTU1NzYsIDk1NTgyLCA5NTU4NywgOTU1OTMsIDk1NTk5LCAKKyAgICA5NTYwNSwgOTU2MTEsIDAsIDAsIDAsIDAsIDk1NjE2LCA5NTYyMiwgOTU2MjgsIDk1NjM0LCA5NTY0MCwgOTU2NDYsIAorICAgIDk1NjUyLCA5NTY1OCwgOTU2NjQsIDk1NjcxLCA5NTY3NiwgOTU2ODEsIDk1Njg3LCA5NTY5MywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ4NjksIDk0ODc1LCA5NDg4MSwgOTQ4ODcsIDk0ODk0LCAKLSAgICA5NDkwMCwgOTQ5MDcsIDk0OTE0LCA5NDkyMSwgOTQ5MjgsIDk0OTM2LCA5NDk0MywgOTQ5NTEsIDk0OTU3LCA5NDk2MywgCi0gICAgOTQ5NjksIDk0OTc1LCA5NDk4MSwgOTQ5ODcsIDk0OTkzLCA5NDk5OSwgOTUwMDUsIDk1MDExLCA5NTAxNywgOTUwMjMsIAotICAgIDk1MDI5LCA5NTAzNSwgOTUwNDEsIDk1MDQ3LCA5NTA1MywgOTUwNTksIDk1MDY1LCA5NTA3MSwgOTUwNzcsIDk1MDgzLCAKLSAgICA5NTA4OSwgOTUwOTUsIDk1MTAxLCA5NTEwNywgOTUxMTMsIDk1MTE5LCA5NTEyNSwgOTUxMzEsIDk1MTM3LCA5NTE0NCwgCi0gICAgOTUxNTAsIDk1MTU3LCA5NTE2NCwgOTUxNzEsIDk1MTc4LCA5NTE4NiwgOTUxOTMsIDk1MjAxLCA5NTIwNywgOTUyMTMsIAotICAgIDk1MjE5LCA5NTIyNSwgOTUyMzEsIDk1MjM3LCA5NTI0MywgOTUyNDksIDk1MjU1LCA5NTI2MSwgOTUyNjcsIDk1MjczLCAKLSAgICA5NTI3OSwgOTUyODUsIDk1MjkxLCA5NTI5NywgOTUzMDMsIDk1MzA5LCA5NTMxNSwgOTUzMjEsIDk1MzI3LCA5NTMzMywgCi0gICAgOTUzMzksIDk1MzQ1LCA5NTM1MSwgOTUzNTcsIDk1MzYzLCA5NTM2OSwgOTUzNzQsIDk1Mzc5LCA5NTM4NCwgOTUzODksIAotICAgIDk1Mzk0LCA5NTM5OSwgOTU0MDQsIDk1NDA5LCA5NTQxNCwgOTU0MTksIDk1NDI0LCA5NTQyOSwgOTU0MzQsIDk1NDM5LCAKLSAgICA5NTQ0NCwgOTU0NDksIDk1NDU0LCA5NTQ1OSwgOTU0NjQsIDk1NDY5LCA5NTQ3NCwgOTU0NzksIDk1NDg0LCA5NTQ4OSwgCi0gICAgOTU0OTQsIDk1NDk5LCA5NTUwNCwgOTU1MDksIDk1NTE0LCA5NTUxOSwgOTU1MjQsIDk1NTI5LCA5NTUzNCwgOTU1MzksIAotICAgIDk1NTQ0LCA5NTU0OSwgOTU1NTQsIDk1NTU5LCA5NTU2NCwgOTU1NjksIDk1NTc0LCA5NTU3OSwgOTU1ODQsIDk1NTg5LCAKLSAgICA5NTU5NCwgOTU1OTksIDk1NjA0LCA5NTYwOSwgOTU2MTQsIDk1NjE5LCA5NTYyNCwgOTU2MjksIDk1NjM0LCA5NTYzOSwgCi0gICAgOTU2NDQsIDk1NjQ5LCA5NTY1NCwgOTU2NTksIDk1NjY0LCA5NTY2OSwgOTU2NzQsIDk1Njc5LCA5NTY4NCwgOTU2ODksIAotICAgIDk1Njk0LCA5NTY5OSwgOTU3MDQsIDk1NzA5LCA5NTcxMywgOTU3MTcsIDk1NzIxLCA5NTcyNSwgOTU3MjksIDk1NzMzLCAKLSAgICA5NTczNywgOTU3NDIsIDk1NzQ3LCAwLCAwLCA5NTc1MiwgOTU3NTcsIDk1NzYxLCA5NTc2NSwgOTU3NjksIDk1NzczLCAKLSAgICA5NTc3NywgOTU3ODEsIDk1Nzg2LCA5NTc5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU2OTksIDk1NzA1LCA5NTcxMSwgOTU3MTcsIDk1NzI0LCAKKyAgICA5NTczMCwgOTU3MzcsIDk1NzQ0LCA5NTc1MSwgOTU3NTgsIDk1NzY2LCA5NTc3MywgOTU3ODEsIDk1Nzg3LCA5NTc5MywgCisgICAgOTU3OTksIDk1ODA1LCA5NTgxMSwgOTU4MTcsIDk1ODIzLCA5NTgyOSwgOTU4MzUsIDk1ODQxLCA5NTg0NywgOTU4NTMsIAorICAgIDk1ODU5LCA5NTg2NSwgOTU4NzEsIDk1ODc3LCA5NTg4MywgOTU4ODksIDk1ODk1LCA5NTkwMSwgOTU5MDcsIDk1OTEzLCAKKyAgICA5NTkxOSwgOTU5MjUsIDk1OTMxLCA5NTkzNywgOTU5NDMsIDk1OTQ5LCA5NTk1NSwgOTU5NjEsIDk1OTY3LCA5NTk3NCwgCisgICAgOTU5ODAsIDk1OTg3LCA5NTk5NCwgOTYwMDEsIDk2MDA4LCA5NjAxNiwgOTYwMjMsIDk2MDMxLCA5NjAzNywgOTYwNDMsIAorICAgIDk2MDQ5LCA5NjA1NSwgOTYwNjEsIDk2MDY3LCA5NjA3MywgOTYwNzksIDk2MDg1LCA5NjA5MSwgOTYwOTcsIDk2MTAzLCAKKyAgICA5NjEwOSwgOTYxMTUsIDk2MTIxLCA5NjEyNywgOTYxMzMsIDk2MTM5LCA5NjE0NSwgOTYxNTEsIDk2MTU3LCA5NjE2MywgCisgICAgOTYxNjksIDk2MTc1LCA5NjE4MSwgOTYxODcsIDk2MTkzLCA5NjE5OSwgOTYyMDQsIDk2MjA5LCA5NjIxNCwgOTYyMTksIAorICAgIDk2MjI0LCA5NjIyOSwgOTYyMzQsIDk2MjM5LCA5NjI0NCwgOTYyNDksIDk2MjU0LCA5NjI1OSwgOTYyNjQsIDk2MjY5LCAKKyAgICA5NjI3NCwgOTYyNzksIDk2Mjg0LCA5NjI4OSwgOTYyOTQsIDk2Mjk5LCA5NjMwNCwgOTYzMDksIDk2MzE0LCA5NjMxOSwgCisgICAgOTYzMjQsIDk2MzI5LCA5NjMzNCwgOTYzMzksIDk2MzQ0LCA5NjM0OSwgOTYzNTQsIDk2MzU5LCA5NjM2NCwgOTYzNjksIAorICAgIDk2Mzc0LCA5NjM3OSwgOTYzODQsIDk2Mzg5LCA5NjM5NCwgOTYzOTksIDk2NDA0LCA5NjQwOSwgOTY0MTQsIDk2NDE5LCAKKyAgICA5NjQyNCwgOTY0MjksIDk2NDM0LCA5NjQzOSwgOTY0NDQsIDk2NDQ5LCA5NjQ1NCwgOTY0NTksIDk2NDY0LCA5NjQ2OSwgCisgICAgOTY0NzQsIDk2NDc5LCA5NjQ4NCwgOTY0ODksIDk2NDk0LCA5NjQ5OSwgOTY1MDQsIDk2NTA5LCA5NjUxNCwgOTY1MTksIAorICAgIDk2NTI0LCA5NjUyOSwgOTY1MzQsIDk2NTM5LCA5NjU0MywgOTY1NDcsIDk2NTUxLCA5NjU1NSwgOTY1NTksIDk2NTYzLCAKKyAgICA5NjU2NywgOTY1NzIsIDk2NTc3LCAwLCAwLCA5NjU4MiwgOTY1ODcsIDk2NTkxLCA5NjU5NSwgOTY1OTksIDk2NjAzLCAKKyAgICA5NjYwNywgOTY2MTEsIDk2NjE2LCA5NjYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTY2MjUsIDk2NjMwLCA5NjYzNiwgOTY2NDIsIAorICAgIDk2NjQ4LCA5NjY1NCwgOTY2NjAsIDk2NjY2LCA5NjY3MSwgOTY2NzcsIDk2NjgyLCA5NjY4OCwgOTY2OTMsIDk2Njk4LCAKKyAgICA5NjcwNCwgOTY3MTAsIDk2NzE1LCA5NjcyMCwgOTY3MjUsIDk2NzMwLCA5NjczNiwgOTY3NDEsIDk2NzQ3LCA5Njc1MywgCisgICAgOTY3NTksIDk2NzY1LCA5Njc3MSwgOTY3NzcsIDk2NzgzLCA5Njc4OSwgOTY3OTUsIDk2ODAwLCA5NjgwNiwgOTY4MTIsIAorICAgIDk2ODE4LCA5NjgyNCwgMCwgMCwgMCwgMCwgOTY4MzAsIDk2ODM1LCA5Njg0MSwgOTY4NDcsIDk2ODUzLCA5Njg1OSwgCisgICAgOTY4NjUsIDk2ODcxLCA5Njg3NiwgOTY4ODIsIDk2ODg3LCA5Njg5MywgOTY4OTgsIDk2OTAzLCA5NjkwOSwgOTY5MTUsIAorICAgIDk2OTIwLCA5NjkyNSwgOTY5MzAsIDk2OTM1LCA5Njk0MSwgOTY5NDYsIDk2OTUyLCA5Njk1OCwgOTY5NjQsIDk2OTcwLCAKKyAgICA5Njk3NiwgOTY5ODIsIDk2OTg4LCA5Njk5NCwgOTcwMDAsIDk3MDA1LCA5NzAxMSwgOTcwMTcsIDk3MDIzLCA5NzAyOSwgMCwgCisgICAgMCwgMCwgMCwgOTcwMzUsIDk3MDM5LCA5NzA0NCwgOTcwNDksIDk3MDU0LCA5NzA1OSwgOTcwNjQsIDk3MDY5LCA5NzA3NCwgCisgICAgOTcwNzgsIDk3MDgzLCA5NzA4OCwgOTcwOTMsIDk3MDk4LCA5NzEwMiwgOTcxMDcsIDk3MTEyLCA5NzExNywgOTcxMjIsIAorICAgIDk3MTI3LCA5NzEzMiwgOTcxMzYsIDk3MTQxLCA5NzE0NSwgOTcxNTAsIDk3MTU1LCA5NzE2MCwgOTcxNjUsIDk3MTcwLCAKKyAgICA5NzE3NSwgOTcxODAsIDk3MTg1LCA5NzE4OSwgOTcxOTQsIDk3MTk5LCA5NzIwNCwgOTcyMDksIDk3MjE0LCA5NzIxOSwgCisgICAgOTcyMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk3MjI5LCA5NzIzNiwgOTcyNDMsIDk3MjUwLCA5NzI1NywgOTcyNjQsIAorICAgIDk3MjcxLCA5NzI3OCwgOTcyODUsIDk3MjkyLCA5NzI5OSwgOTczMDYsIDk3MzEzLCA5NzMyMCwgOTczMjcsIDk3MzM0LCAKKyAgICA5NzM0MSwgOTczNDgsIDk3MzU1LCA5NzM2MiwgOTczNjksIDk3Mzc2LCA5NzM4MywgOTczOTAsIDk3Mzk3LCA5NzQwNCwgCisgICAgOTc0MTEsIDk3NDE4LCA5NzQyNSwgOTc0MzIsIDk3NDM5LCA5NzQ0NiwgOTc0NTMsIDk3NDYwLCA5NzQ2NywgOTc0NzQsIAorICAgIDk3NDgxLCA5NzQ4OCwgOTc0OTUsIDk3NTAyLCA5NzUwOSwgOTc1MTYsIDk3NTIzLCA5NzUzMCwgOTc1MzcsIDk3NTQ0LCAKKyAgICA5NzU1MSwgOTc1NTgsIDk3NTY1LCA5NzU3MiwgOTc1NzksIDk3NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5NzU5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTU3OTUsIDk1Nzk5LCA5NTgwNCwgOTU4MDksIDk1ODE0LCA5NTgxOSwgOTU4MjQsIDk1ODI5LCA5NTgzNCwgOTU4MzgsIAotICAgIDk1ODQzLCA5NTg0OCwgOTU4NTMsIDk1ODU4LCA5NTg2MiwgOTU4NjcsIDk1ODcyLCA5NTg3NywgOTU4ODIsIDk1ODg3LCAKLSAgICA5NTg5MiwgOTU4OTcsIDk1OTAyLCA5NTkwNiwgOTU5MTEsIDk1OTE2LCA5NTkyMSwgOTU5MjYsIDk1OTMxLCA5NTkzNiwgCi0gICAgOTU5NDEsIDk1OTQ2LCA5NTk1MCwgOTU5NTUsIDk1OTYwLCA5NTk2NSwgOTU5NzAsIDk1OTc1LCA5NTk4MCwgOTU5ODUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1OTkwLCA5NTk5NywgOTYwMDQsIDk2MDExLCA5NjAxOCwgOTYwMjUsIDk2MDMyLCAKLSAgICA5NjAzOSwgOTYwNDYsIDk2MDUzLCA5NjA2MCwgOTYwNjcsIDk2MDc0LCA5NjA4MSwgOTYwODgsIDk2MDk1LCA5NjEwMiwgCi0gICAgOTYxMDksIDk2MTE2LCA5NjEyMywgOTYxMzAsIDk2MTM3LCA5NjE0NCwgOTYxNTEsIDk2MTU4LCA5NjE2NSwgOTYxNzIsIAotICAgIDk2MTc5LCA5NjE4NiwgOTYxOTMsIDk2MjAwLCA5NjIwNywgOTYyMTQsIDk2MjIxLCA5NjIyOCwgOTYyMzUsIDk2MjQyLCAKLSAgICA5NjI0OSwgOTYyNTYsIDk2MjYzLCA5NjI3MCwgOTYyNzcsIDk2Mjg0LCA5NjI5MSwgOTYyOTgsIDk2MzA1LCA5NjMxMiwgCi0gICAgOTYzMTksIDk2MzI2LCA5NjMzMywgOTYzNDAsIDk2MzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5NjM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOTc2MDAsIDk3NjA1LCA5NzYxMCwgOTc2MTUsIDk3NjIwLCA5NzYyNSwgOTc2MzAsIDk3NjM1LCA5NzY0MCwgCisgICAgOTc2NDUsIDk3NjUwLCA5NzY1NSwgOTc2NjAsIDk3NjY1LCA5NzY3MCwgOTc2NzUsIDk3NjgwLCA5NzY4NSwgOTc2OTAsIAorICAgIDk3Njk1LCA5NzcwMCwgOTc3MDUsIDk3NzEwLCA5NzcxNSwgOTc3MjAsIDk3NzI1LCA5NzczMCwgOTc3MzUsIDk3NzQwLCAKKyAgICA5Nzc0NSwgOTc3NTAsIDk3NzU1LCA5Nzc2MCwgOTc3NjUsIDk3NzcwLCA5Nzc3NSwgOTc3ODAsIDk3Nzg1LCA5Nzc5MCwgCisgICAgOTc3OTUsIDk3ODAwLCA5NzgwNSwgOTc4MTAsIDk3ODE1LCA5NzgyMCwgOTc4MjUsIDk3ODMwLCA5NzgzNSwgOTc4NDAsIAorICAgIDk3ODQ1LCA5Nzg1MCwgOTc4NTUsIDk3ODYwLCA5Nzg2NSwgOTc4NzAsIDk3ODc1LCA5Nzg4MCwgOTc4ODUsIDk3ODkwLCAKKyAgICA5Nzg5NSwgOTc5MDAsIDk3OTA1LCA5NzkxMCwgOTc5MTUsIDk3OTIwLCA5NzkyNSwgOTc5MzAsIDk3OTM1LCA5Nzk0MCwgCisgICAgOTc5NDUsIDk3OTUwLCA5Nzk1NSwgOTc5NjAsIDk3OTY1LCA5Nzk3MCwgOTc5NzUsIDk3OTgwLCA5Nzk4NSwgOTc5OTAsIAorICAgIDk3OTk1LCA5ODAwMCwgOTgwMDUsIDk4MDEwLCA5ODAxNSwgOTgwMjAsIDk4MDI1LCA5ODAzMCwgOTgwMzUsIDk4MDQwLCAKKyAgICA5ODA0NSwgOTgwNTAsIDk4MDU1LCA5ODA2MCwgOTgwNjUsIDk4MDcwLCA5ODA3NSwgOTgwODAsIDk4MDg1LCA5ODA5MCwgCisgICAgOTgwOTUsIDk4MTAwLCA5ODEwNSwgOTgxMTAsIDk4MTE1LCA5ODEyMCwgOTgxMjUsIDk4MTMwLCA5ODEzNSwgOTgxNDAsIAorICAgIDk4MTQ1LCA5ODE1MCwgOTgxNTUsIDk4MTYwLCA5ODE2NSwgOTgxNzAsIDk4MTc1LCA5ODE4MCwgOTgxODUsIDk4MTkwLCAKKyAgICA5ODE5NSwgOTgyMDAsIDk4MjA1LCA5ODIxMCwgOTgyMTUsIDk4MjIwLCA5ODIyNSwgOTgyMzAsIDk4MjM1LCA5ODI0MCwgCisgICAgOTgyNDUsIDk4MjUwLCA5ODI1NSwgOTgyNjAsIDk4MjY1LCA5ODI3MCwgOTgyNzUsIDk4MjgwLCA5ODI4NSwgOTgyOTAsIAorICAgIDk4Mjk1LCA5ODMwMCwgOTgzMDUsIDk4MzEwLCA5ODMxNSwgOTgzMjAsIDk4MzI1LCA5ODMzMCwgOTgzMzUsIDk4MzQwLCAKKyAgICA5ODM0NSwgOTgzNTAsIDk4MzU1LCA5ODM2MCwgOTgzNjUsIDk4MzcwLCA5ODM3NSwgOTgzODAsIDk4Mzg1LCA5ODM5MCwgCisgICAgOTgzOTUsIDk4NDAwLCA5ODQwNSwgOTg0MTAsIDk4NDE1LCA5ODQyMCwgOTg0MjUsIDk4NDMwLCA5ODQzNSwgOTg0NDAsIAorICAgIDk4NDQ1LCA5ODQ1MCwgOTg0NTUsIDk4NDYwLCA5ODQ2NSwgOTg0NzAsIDk4NDc1LCA5ODQ4MCwgOTg0ODUsIDk4NDkwLCAKKyAgICA5ODQ5NSwgOTg1MDAsIDk4NTA1LCA5ODUxMCwgOTg1MTUsIDk4NTIwLCA5ODUyNSwgOTg1MzAsIDk4NTM1LCA5ODU0MCwgCisgICAgOTg1NDUsIDk4NTUwLCA5ODU1NSwgOTg1NjAsIDk4NTY1LCA5ODU3MCwgOTg1NzUsIDk4NTgwLCA5ODU4NSwgOTg1OTAsIAorICAgIDk4NTk1LCA5ODYwMCwgOTg2MDUsIDk4NjEwLCA5ODYxNSwgOTg2MjAsIDk4NjI1LCA5ODYzMCwgOTg2MzUsIDk4NjQwLCAKKyAgICA5ODY0NSwgOTg2NTAsIDk4NjU1LCA5ODY2MCwgOTg2NjUsIDk4NjcwLCA5ODY3NSwgOTg2ODAsIDk4Njg1LCA5ODY5MCwgCisgICAgOTg2OTUsIDk4NzAwLCA5ODcwNSwgOTg3MTAsIDk4NzE1LCA5ODcyMCwgOTg3MjUsIDk4NzMwLCA5ODczNSwgOTg3NDAsIAorICAgIDk4NzQ1LCA5ODc1MCwgOTg3NTUsIDk4NzYwLCA5ODc2NSwgOTg3NzAsIDk4Nzc1LCA5ODc4MCwgOTg3ODUsIDk4NzkwLCAKKyAgICA5ODc5NSwgOTg4MDAsIDk4ODA1LCA5ODgxMCwgOTg4MTUsIDk4ODIwLCA5ODgyNSwgOTg4MzAsIDk4ODM1LCA5ODg0MCwgCisgICAgOTg4NDUsIDk4ODUwLCA5ODg1NSwgOTg4NjAsIDk4ODY1LCA5ODg3MCwgOTg4NzUsIDk4ODgwLCA5ODg4NSwgOTg4OTAsIAorICAgIDk4ODk1LCA5ODkwMCwgOTg5MDUsIDk4OTEwLCA5ODkxNSwgOTg5MjAsIDk4OTI1LCA5ODkzMCwgOTg5MzUsIDk4OTQwLCAKKyAgICA5ODk0NSwgOTg5NTAsIDk4OTU1LCA5ODk2MCwgOTg5NjUsIDk4OTcwLCA5ODk3NSwgOTg5ODAsIDk4OTg1LCA5ODk5MCwgCisgICAgOTg5OTUsIDk5MDAwLCA5OTAwNSwgOTkwMTAsIDk5MDE1LCA5OTAyMCwgOTkwMjUsIDk5MDMwLCA5OTAzNSwgOTkwNDAsIAorICAgIDk5MDQ1LCA5OTA1MCwgOTkwNTUsIDk5MDYwLCA5OTA2NSwgOTkwNzAsIDk5MDc1LCA5OTA4MCwgOTkwODUsIDk5MDkwLCAKKyAgICA5OTA5NSwgOTkxMDAsIDk5MTA1LCA5OTExMCwgOTkxMTUsIDk5MTIwLCA5OTEyNSwgOTkxMzAsIDk5MTM1LCA5OTE0MCwgCisgICAgOTkxNDUsIDk5MTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OTE1NSwgOTkxNjEsIDk5MTY4LCA5OTE3NSwgCisgICAgOTkxODEsIDk5MTg4LCA5OTE5NSwgOTkyMDIsIDk5MjA5LCA5OTIxNSwgOTkyMjIsIDk5MjI5LCA5OTIzNiwgOTkyNDMsIAorICAgIDk5MjUwLCA5OTI1NywgOTkyNjQsIDk5MjcxLCA5OTI3OCwgOTkyODUsIDk5MjkyLCA5OTI5OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTkzMDYsIDk5MzExLCA5OTMxNiwgOTkzMjEsIDk5MzI2LCA5OTMzMSwgOTkzMzYsIDk5MzQxLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA5NjM2MSwgOTYzNjYsIDk2MzcxLCA5NjM3NiwgOTYzODEsIDk2Mzg2LCA5NjM5MSwgOTYzOTYsIDk2NDAxLCAKLSAgICA5NjQwNiwgOTY0MTEsIDk2NDE2LCA5NjQyMSwgOTY0MjYsIDk2NDMxLCA5NjQzNiwgOTY0NDEsIDk2NDQ2LCA5NjQ1MSwgCi0gICAgOTY0NTYsIDk2NDYxLCA5NjQ2NiwgOTY0NzEsIDk2NDc2LCA5NjQ4MSwgOTY0ODYsIDk2NDkxLCA5NjQ5NiwgOTY1MDEsIAotICAgIDk2NTA2LCA5NjUxMSwgOTY1MTYsIDk2NTIxLCA5NjUyNiwgOTY1MzEsIDk2NTM2LCA5NjU0MSwgOTY1NDYsIDk2NTUxLCAKLSAgICA5NjU1NiwgOTY1NjEsIDk2NTY2LCA5NjU3MSwgOTY1NzYsIDk2NTgxLCA5NjU4NiwgOTY1OTEsIDk2NTk2LCA5NjYwMSwgCi0gICAgOTY2MDYsIDk2NjExLCA5NjYxNiwgOTY2MjEsIDk2NjI2LCA5NjYzMSwgOTY2MzYsIDk2NjQxLCA5NjY0NiwgOTY2NTEsIAotICAgIDk2NjU2LCA5NjY2MSwgOTY2NjYsIDk2NjcxLCA5NjY3NiwgOTY2ODEsIDk2Njg2LCA5NjY5MSwgOTY2OTYsIDk2NzAxLCAKLSAgICA5NjcwNiwgOTY3MTEsIDk2NzE2LCA5NjcyMSwgOTY3MjYsIDk2NzMxLCA5NjczNiwgOTY3NDEsIDk2NzQ2LCA5Njc1MSwgCi0gICAgOTY3NTYsIDk2NzYxLCA5Njc2NiwgOTY3NzEsIDk2Nzc2LCA5Njc4MSwgOTY3ODYsIDk2NzkxLCA5Njc5NiwgOTY4MDEsIAotICAgIDk2ODA2LCA5NjgxMSwgOTY4MTYsIDk2ODIxLCA5NjgyNiwgOTY4MzEsIDk2ODM2LCA5Njg0MSwgOTY4NDYsIDk2ODUxLCAKLSAgICA5Njg1NiwgOTY4NjEsIDk2ODY2LCA5Njg3MSwgOTY4NzYsIDk2ODgxLCA5Njg4NiwgOTY4OTEsIDk2ODk2LCA5NjkwMSwgCi0gICAgOTY5MDYsIDk2OTExLCA5NjkxNiwgOTY5MjEsIDk2OTI2LCA5NjkzMSwgOTY5MzYsIDk2OTQxLCA5Njk0NiwgOTY5NTEsIAotICAgIDk2OTU2LCA5Njk2MSwgOTY5NjYsIDk2OTcxLCA5Njk3NiwgOTY5ODEsIDk2OTg2LCA5Njk5MSwgOTY5OTYsIDk3MDAxLCAKLSAgICA5NzAwNiwgOTcwMTEsIDk3MDE2LCA5NzAyMSwgOTcwMjYsIDk3MDMxLCA5NzAzNiwgOTcwNDEsIDk3MDQ2LCA5NzA1MSwgCi0gICAgOTcwNTYsIDk3MDYxLCA5NzA2NiwgOTcwNzEsIDk3MDc2LCA5NzA4MSwgOTcwODYsIDk3MDkxLCA5NzA5NiwgOTcxMDEsIAotICAgIDk3MTA2LCA5NzExMSwgOTcxMTYsIDk3MTIxLCA5NzEyNiwgOTcxMzEsIDk3MTM2LCA5NzE0MSwgOTcxNDYsIDk3MTUxLCAKLSAgICA5NzE1NiwgOTcxNjEsIDk3MTY2LCA5NzE3MSwgOTcxNzYsIDk3MTgxLCA5NzE4NiwgOTcxOTEsIDk3MTk2LCA5NzIwMSwgCi0gICAgOTcyMDYsIDk3MjExLCA5NzIxNiwgOTcyMjEsIDk3MjI2LCA5NzIzMSwgOTcyMzYsIDk3MjQxLCA5NzI0NiwgOTcyNTEsIAotICAgIDk3MjU2LCA5NzI2MSwgOTcyNjYsIDk3MjcxLCA5NzI3NiwgOTcyODEsIDk3Mjg2LCA5NzI5MSwgOTcyOTYsIDk3MzAxLCAKLSAgICA5NzMwNiwgOTczMTEsIDk3MzE2LCA5NzMyMSwgOTczMjYsIDk3MzMxLCA5NzMzNiwgOTczNDEsIDk3MzQ2LCA5NzM1MSwgCi0gICAgOTczNTYsIDk3MzYxLCA5NzM2NiwgOTczNzEsIDk3Mzc2LCA5NzM4MSwgOTczODYsIDk3MzkxLCA5NzM5NiwgOTc0MDEsIAotICAgIDk3NDA2LCA5NzQxMSwgOTc0MTYsIDk3NDIxLCA5NzQyNiwgOTc0MzEsIDk3NDM2LCA5NzQ0MSwgOTc0NDYsIDk3NDUxLCAKLSAgICA5NzQ1NiwgOTc0NjEsIDk3NDY2LCA5NzQ3MSwgOTc0NzYsIDk3NDgxLCA5NzQ4NiwgOTc0OTEsIDk3NDk2LCA5NzUwMSwgCi0gICAgOTc1MDYsIDk3NTExLCA5NzUxNiwgOTc1MjEsIDk3NTI2LCA5NzUzMSwgOTc1MzYsIDk3NTQxLCA5NzU0NiwgOTc1NTEsIAotICAgIDk3NTU2LCA5NzU2MSwgOTc1NjYsIDk3NTcxLCA5NzU3NiwgOTc1ODEsIDk3NTg2LCA5NzU5MSwgOTc1OTYsIDk3NjAxLCAKLSAgICA5NzYwNiwgOTc2MTEsIDk3NjE2LCA5NzYyMSwgOTc2MjYsIDk3NjMxLCA5NzYzNiwgOTc2NDEsIDk3NjQ2LCA5NzY1MSwgCi0gICAgOTc2NTYsIDk3NjYxLCA5NzY2NiwgOTc2NzEsIDk3Njc2LCA5NzY4MSwgOTc2ODYsIDk3NjkxLCA5NzY5NiwgOTc3MDEsIAotICAgIDk3NzA2LCA5NzcxMSwgOTc3MTYsIDk3NzIxLCA5NzcyNiwgOTc3MzEsIDk3NzM2LCA5Nzc0MSwgOTc3NDYsIDk3NzUxLCAKLSAgICA5Nzc1NiwgOTc3NjEsIDk3NzY2LCA5Nzc3MSwgOTc3NzYsIDk3NzgxLCA5Nzc4NiwgOTc3OTEsIDk3Nzk2LCA5NzgwMSwgCi0gICAgOTc4MDYsIDk3ODExLCA5NzgxNiwgOTc4MjEsIDk3ODI2LCA5NzgzMSwgOTc4MzYsIDk3ODQxLCA5Nzg0NiwgOTc4NTEsIAotICAgIDk3ODU2LCA5Nzg2MSwgOTc4NjYsIDk3ODcxLCA5Nzg3NiwgOTc4ODEsIDk3ODg2LCA5Nzg5MSwgOTc4OTYsIDk3OTAxLCAKLSAgICA5NzkwNiwgOTc5MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk3OTE2LCA5NzkyMiwgOTc5MjksIDk3OTM2LCAKLSAgICA5Nzk0MiwgOTc5NDksIDk3OTU2LCA5Nzk2MywgOTc5NzAsIDk3OTc2LCA5Nzk4MywgOTc5OTAsIDk3OTk3LCA5ODAwNCwgCi0gICAgOTgwMTEsIDk4MDE4LCA5ODAyNSwgOTgwMzIsIDk4MDM5LCA5ODA0NiwgOTgwNTMsIDk4MDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5ODA2NywgOTgwNzIsIDk4MDc3LCA5ODA4MiwgOTgwODcsIDk4MDkyLCA5ODA5NywgOTgxMDIsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk5MzQ2LCA5OTM1MCwgOTkzNTQsIDk5MzU4LCA5OTM2MiwgOTkzNjYsIDAsIDAsIDk5MzcxLCAKKyAgICAwLCA5OTM3NiwgOTkzODAsIDk5Mzg1LCA5OTM5MCwgOTkzOTUsIDk5NDAwLCA5OTQwNCwgOTk0MDksIDk5NDE0LCA5OTQxOSwgCisgICAgOTk0MjQsIDk5NDI4LCA5OTQzMywgOTk0MzgsIDk5NDQzLCA5OTQ0OCwgOTk0NTIsIDk5NDU3LCA5OTQ2MiwgOTk0NjcsIAorICAgIDk5NDcyLCA5OTQ3NiwgOTk0ODEsIDk5NDg2LCA5OTQ5MSwgOTk0OTYsIDk5NTAxLCA5OTUwNiwgOTk1MTEsIDk5NTE2LCAKKyAgICA5OTUyMSwgOTk1MjYsIDk5NTMxLCA5OTUzNiwgOTk1NDEsIDk5NTQ2LCA5OTU1MSwgOTk1NTYsIDk5NTYxLCA5OTU2NSwgCisgICAgOTk1NzAsIDk5NTc1LCA5OTU4MCwgOTk1ODUsIDAsIDk5NTkwLCA5OTU5NSwgMCwgMCwgMCwgOTk2MDAsIDAsIDAsIDk5NjA1LCAKKyAgICA5OTYxMCwgOTk2MTcsIDk5NjI0LCA5OTYzMSwgOTk2MzgsIDk5NjQ1LCA5OTY1MiwgOTk2NTksIDk5NjY2LCA5OTY3MywgCisgICAgOTk2ODAsIDk5Njg3LCA5OTY5NCwgOTk3MDEsIDk5NzA4LCA5OTcxNSwgOTk3MjIsIDk5NzI5LCA5OTczNiwgOTk3NDMsIAorICAgIDk5NzUwLCA5OTc1NywgMCwgOTk3NjQsIDk5NzcxLCA5OTc3NywgOTk3ODMsIDk5Nzg5LCA5OTc5NiwgOTk4MDMsIDk5ODExLCAKKyAgICA5OTgxOSwgOTk4MjgsIDk5ODMzLCA5OTgzOCwgOTk4NDMsIDk5ODQ4LCA5OTg1MywgOTk4NTgsIDk5ODYzLCA5OTg2OCwgCisgICAgOTk4NzMsIDk5ODc4LCA5OTg4MywgOTk4ODgsIDk5ODkzLCA5OTg5OSwgOTk5MDQsIDk5OTA5LCA5OTkxNCwgOTk5MTksIAorICAgIDk5OTI0LCA5OTkyOSwgOTk5MzQsIDk5OTM5LCA5OTk0NCwgOTk5NTAsIDk5OTU2LCA5OTk2MCwgOTk5NjQsIDk5OTY4LCAKKyAgICA5OTk3MiwgOTk5NzYsIDk5OTgxLCA5OTk4NiwgOTk5OTIsIDk5OTk3LCAxMDAwMDMsIDEwMDAwOCwgMTAwMDEzLCAxMDAwMTgsIAorICAgIDEwMDAyNCwgMTAwMDI5LCAxMDAwMzQsIDEwMDAzOSwgMTAwMDQ0LCAxMDAwNDksIDEwMDA1NSwgMTAwMDYwLCAxMDAwNjYsIAorICAgIDEwMDA3MSwgMTAwMDc3LCAxMDAwODIsIDEwMDA4OCwgMTAwMDkzLCAxMDAwOTksIDEwMDEwNCwgMTAwMTA5LCAxMDAxMTQsIAorICAgIDEwMDExOSwgMTAwMTI0LCAxMDAxMjksIDEwMDEzNCwgMTAwMTQwLCAxMDAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMDE1MCwgMTAwMTU0LCAxMDAxNTgsIDEwMDE2MiwgMTAwMTY2LCAxMDAxNzIsIDEwMDE3NiwgMTAwMTgxLCAxMDAxODYsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk4MTA3LCA5ODExMSwgOTgxMTUsIDk4MTE5LCA5ODEyMywgOTgxMjcsIDAsIDAsIDk4MTMyLCAKLSAgICAwLCA5ODEzNywgOTgxNDEsIDk4MTQ2LCA5ODE1MSwgOTgxNTYsIDk4MTYxLCA5ODE2NiwgOTgxNzEsIDk4MTc2LCA5ODE4MSwgCi0gICAgOTgxODYsIDk4MTkwLCA5ODE5NSwgOTgyMDAsIDk4MjA1LCA5ODIxMCwgOTgyMTUsIDk4MjIwLCA5ODIyNSwgOTgyMzAsIAotICAgIDk4MjM1LCA5ODIzOSwgOTgyNDQsIDk4MjQ5LCA5ODI1NCwgOTgyNTksIDk4MjY0LCA5ODI2OSwgOTgyNzQsIDk4Mjc5LCAKLSAgICA5ODI4NCwgOTgyODksIDk4Mjk0LCA5ODI5OSwgOTgzMDQsIDk4MzA5LCA5ODMxNCwgOTgzMTksIDk4MzI0LCA5ODMyOCwgCi0gICAgOTgzMzMsIDk4MzM4LCA5ODM0MywgOTgzNDgsIDAsIDk4MzUzLCA5ODM1OCwgMCwgMCwgMCwgOTgzNjMsIDAsIDAsIDk4MzY4LCAKLSAgICA5ODM3MywgOTgzODAsIDk4Mzg3LCA5ODM5NCwgOTg0MDEsIDk4NDA4LCA5ODQxNSwgOTg0MjIsIDk4NDI5LCA5ODQzNiwgCi0gICAgOTg0NDMsIDk4NDUwLCA5ODQ1NywgOTg0NjQsIDk4NDcxLCA5ODQ3OCwgOTg0ODUsIDk4NDkyLCA5ODQ5OSwgOTg1MDYsIAotICAgIDk4NTEzLCA5ODUyMCwgMCwgOTg1MjcsIDk4NTM0LCA5ODU0MCwgOTg1NDYsIDk4NTUyLCA5ODU1OSwgOTg1NjYsIDk4NTc0LCAKLSAgICA5ODU4MiwgOTg1OTEsIDk4NTk2LCA5ODYwMSwgOTg2MDYsIDk4NjExLCA5ODYxNiwgOTg2MjEsIDk4NjI2LCA5ODYzMSwgCi0gICAgOTg2MzYsIDk4NjQxLCA5ODY0NiwgOTg2NTEsIDk4NjU2LCA5ODY2MiwgOTg2NjcsIDk4NjcyLCA5ODY3NywgOTg2ODIsIAotICAgIDk4Njg3LCA5ODY5MiwgOTg2OTcsIDk4NzAyLCA5ODcwNywgOTg3MTMsIDk4NzE5LCA5ODcyMywgOTg3MjcsIDk4NzMxLCAKLSAgICA5ODczNSwgOTg3MzksIDk4NzQ0LCA5ODc0OSwgOTg3NTUsIDk4NzYwLCA5ODc2NiwgOTg3NzEsIDk4Nzc2LCA5ODc4MSwgCi0gICAgOTg3ODcsIDk4NzkyLCA5ODc5NywgOTg4MDIsIDk4ODA3LCA5ODgxMiwgOTg4MTgsIDk4ODIzLCA5ODgyOSwgOTg4MzQsIAotICAgIDk4ODQwLCA5ODg0NSwgOTg4NTEsIDk4ODU2LCA5ODg2MiwgOTg4NjcsIDk4ODcyLCA5ODg3NywgOTg4ODIsIDk4ODg3LCAKLSAgICA5ODg5MiwgOTg4OTcsIDk4OTAzLCA5ODkwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTg5MTMsIDk4OTE3LCA5ODkyMSwgCi0gICAgOTg5MjUsIDk4OTI5LCA5ODkzNSwgOTg5MzksIDk4OTQ0LCA5ODk0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTg5NTUsIDk4OTYwLCA5ODk2NSwgOTg5NzAsIAotICAgIDk4OTc1LCA5ODk4MCwgOTg5ODUsIDk4OTkwLCA5ODk5NSwgOTkwMDAsIDk5MDA1LCA5OTAxMCwgOTkwMTUsIDk5MDIwLCAKLSAgICA5OTAyNSwgOTkwMzAsIDk5MDM1LCA5OTA0MCwgOTkwNDUsIDAsIDk5MDUwLCA5OTA1NSwgMCwgMCwgMCwgMCwgMCwgOTkwNjAsIAotICAgIDk5MDY0LCA5OTA2OCwgOTkwNzMsIDk5MDc4LCA5OTA4NCwgOTkwODksIDk5MDk0LCA5OTA5OSwgOTkxMDQsIDk5MTA5LCAKLSAgICA5OTExNCwgOTkxMTksIDk5MTI0LCA5OTEyOSwgOTkxMzQsIDk5MTM5LCA5OTE0NCwgOTkxNDksIDk5MTU0LCA5OTE1OSwgCi0gICAgOTkxNjQsIDk5MTY5LCA5OTE3NCwgOTkxNzksIDk5MTg0LCA5OTE4OSwgOTkxOTQsIDk5MTk4LCA5OTIwMywgOTkyMDgsIAotICAgIDk5MjE0LCA5OTIxOCwgMCwgMCwgMCwgOTkyMjIsIDk5MjI4LCA5OTIzMiwgOTkyMzcsIDk5MjQyLCA5OTI0NywgOTkyNTEsIAotICAgIDk5MjU2LCA5OTI2MCwgOTkyNjUsIDk5MjcwLCA5OTI3NCwgOTkyNzksIDk5Mjg0LCA5OTI4OCwgOTkyOTIsIDk5Mjk3LCAKLSAgICA5OTMwMiwgOTkzMDYsIDk5MzExLCA5OTMxNiwgOTkzMjAsIDk5MzI1LCA5OTMzMCwgOTkzMzUsIDk5MzQwLCA5OTM0NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTkzNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk5MzU1LCAKLSAgICA5OTM2MCwgOTkzNjUsIDk5MzcwLCA5OTM3NSwgOTkzODAsIDk5Mzg2LCA5OTM5MiwgOTkzOTgsIDk5NDAzLCA5OTQwOCwgCi0gICAgOTk0MTQsIDk5NDIwLCA5OTQyNiwgOTk0MzIsIDk5NDM4LCA5OTQ0NCwgOTk0NTAsIDk5NDU2LCA5OTQ2MiwgOTk0NjgsIAotICAgIDk5NDc0LCA5OTQ4MCwgOTk0ODUsIDk5NDkxLCA5OTQ5NywgOTk1MDMsIDk5NTA5LCA5OTUxNSwgOTk1MjAsIDk5NTI2LCAKLSAgICA5OTUzMiwgOTk1MzgsIDk5NTQyLCA5OTU0NiwgOTk1NTAsIDk5NTU0LCA5OTU1OCwgOTk1NjMsIDk5NTY4LCA5OTU3MiwgCi0gICAgOTk1NzYsIDk5NTgxLCA5OTU4NiwgOTk1OTEsIDk5NTk2LCA5OTYwMSwgOTk2MDYsIDk5NjExLCA5OTYxOCwgOTk2MjMsIAotICAgIDk5NjI3LCA5OTYzMiwgOTk2MzcsIDk5NjQyLCA5OTY0NiwgMCwgMCwgMCwgMCwgOTk2NTEsIDk5NjU5LCA5OTY2NiwgCi0gICAgOTk2NzIsIDk5Njc4LCA5OTY4MiwgOTk2ODYsIDk5NjkwLCA5OTY5NCwgOTk2OTgsIDk5NzAyLCA5OTcwNywgOTk3MTEsIAotICAgIDk5NzE2LCA5OTcyMSwgOTk3MjYsIDk5NzMxLCA5OTczNiwgOTk3NDEsIDk5NzQ2LCAwLCAwLCA5OTc1MSwgOTk3NTcsIAotICAgIDk5NzYzLCA5OTc2OSwgOTk3NzYsIDk5NzgzLCA5OTc5MCwgOTk3OTcsIDk5ODA0LCA5OTgxMSwgOTk4MTcsIDk5ODIzLCAKLSAgICA5OTgyOSwgOTk4MzYsIDk5ODQzLCA5OTg1MCwgOTk4NTcsIDk5ODY0LCA5OTg3MSwgOTk4NzgsIDk5ODg1LCA5OTg5MiwgCi0gICAgOTk4OTksIDk5OTA2LCA5OTkxMywgOTk5MjAsIDk5OTI3LCA5OTkzNCwgOTk5NDIsIDk5OTUwLCA5OTk1OCwgOTk5NjcsIAotICAgIDk5OTc2LCA5OTk4NSwgOTk5OTQsIDEwMDAwMywgMTAwMDEyLCAxMDAwMTksIDEwMDAyNiwgMTAwMDMzLCAxMDAwNDEsIAotICAgIDEwMDA0OSwgMTAwMDU3LCAxMDAwNjUsIDEwMDA3MywgMTAwMDgxLCAxMDAwODksIDEwMDA5MywgMTAwMDk4LCAxMDAxMDMsIAotICAgIDAsIDEwMDEwOSwgMTAwMTE0LCAwLCAwLCAwLCAwLCAwLCAxMDAxMTksIDEwMDEyNSwgMTAwMTMyLCAxMDAxMzcsIDEwMDE0MiwgCi0gICAgMTAwMTQ2LCAxMDAxNTEsIDEwMDE1NiwgMCwgMTAwMTYxLCAxMDAxNjYsIDEwMDE3MSwgMCwgMTAwMTc2LCAxMDAxODEsIAotICAgIDEwMDE4NiwgMTAwMTkxLCAxMDAxOTYsIDEwMDIwMSwgMTAwMjA2LCAxMDAyMTEsIDEwMDIxNiwgMTAwMjIxLCAxMDAyMjYsIAotICAgIDEwMDIzMSwgMTAwMjM1LCAxMDAyNDAsIDEwMDI0NSwgMTAwMjUwLCAxMDAyNTQsIDEwMDI1OCwgMTAwMjYzLCAxMDAyNjgsIAotICAgIDEwMDI3MywgMTAwMjc4LCAxMDAyODMsIDEwMDI4OCwgMTAwMjkzLCAxMDAyOTcsIDEwMDMwMiwgMCwgMCwgMCwgMCwgCi0gICAgMTAwMzA3LCAxMDAzMTMsIDEwMDMxOCwgMCwgMCwgMCwgMCwgMTAwMzIzLCAxMDAzMjcsIDEwMDMzMSwgMTAwMzM1LCAKLSAgICAxMDAzMzksIDEwMDM0MywgMTAwMzQ4LCAxMDAzNTMsIDEwMDM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMzY1LCAKLSAgICAxMDAzNzEsIDEwMDM3OCwgMTAwMzg0LCAxMDAzOTEsIDEwMDM5NywgMTAwNDAzLCAxMDA0MDksIDEwMDQxNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTAwNDIyLCAxMDA0MzAsIDEwMDQzOCwgMTAwNDQ2LCAxMDA0NTQsIDEwMDQ2MiwgMTAwNDcwLCAKLSAgICAxMDA0NzgsIDEwMDQ4NiwgMTAwNDk0LCAxMDA1MDIsIDEwMDUxMCwgMTAwNTE4LCAxMDA1MjYsIDEwMDUzNCwgMTAwNTQyLCAKLSAgICAxMDA1NTAsIDEwMDU1OCwgMTAwNTY2LCAxMDA1NzQsIDEwMDU4MiwgMTAwNTkwLCAxMDA1OTgsIDEwMDYwNiwgMTAwNjE0LCAKLSAgICAxMDA2MjIsIDEwMDYzMCwgMTAwNjM4LCAxMDA2NDYsIDEwMDY1NCwgMTAwNjYxLCAxMDA2NjksIDEwMDY3NywgMTAwNjg0LCAKLSAgICAxMDA2OTEsIDEwMDY5OCwgMTAwNzA1LCAxMDA3MTIsIDEwMDcxOSwgMTAwNzI2LCAxMDA3MzMsIDEwMDc0MCwgMTAwNzQ3LCAKLSAgICAxMDA3NTQsIDEwMDc2MSwgMTAwNzY4LCAxMDA3NzUsIDEwMDc4MiwgMTAwNzg5LCAxMDA3OTYsIDEwMDgwMywgMTAwODEwLCAKLSAgICAxMDA4MTcsIDEwMDgyNCwgMTAwODMxLCAxMDA4MzgsIDEwMDg0NSwgMTAwODUyLCAxMDA4NTksIDEwMDg2NiwgMTAwODczLCAKLSAgICAxMDA4ODAsIDEwMDg4NiwgMTAwODkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA5MDAsIDEwMDkwNSwgMTAwOTEwLCAKLSAgICAxMDA5MTUsIDEwMDkyMCwgMTAwOTI1LCAxMDA5MzAsIDEwMDkzNSwgMTAwOTQwLCAxMDA5NDUsIDEwMDk1MCwgMTAwOTU1LCAKLSAgICAxMDA5NjAsIDEwMDk2NSwgMTAwOTcwLCAxMDA5NzUsIDEwMDk4MCwgMTAwOTg1LCAxMDA5OTAsIDEwMDk5NSwgMTAxMDAwLCAKLSAgICAxMDEwMDUsIDEwMTAxMCwgMTAxMDE1LCAxMDEwMjAsIDEwMTAyNSwgMTAxMDMwLCAxMDEwMzUsIDEwMTA0MCwgMTAxMDQ1LCAKLSAgICAxMDEwNTAsIDEwMTA1NSwgMTAxMDYwLCAxMDEwNjUsIDEwMTA3MCwgMTAxMDc1LCAxMDEwODAsIDEwMTA4NSwgMTAxMDkxLCAKLSAgICAwLCAwLCAwLCAwLCAxMDEwOTcsIDEwMTEwMSwgMTAxMTA1LCAxMDExMTAsIDEwMTExNSwgMTAxMTIxLCAxMDExMjcsIAotICAgIDEwMTEzMywgMTAxMTQzLCAxMDExNTIsIDEwMTE1OCwgMTAxMTY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDExNzMsIDEwMTE3NywgMTAxMTgyLCAxMDExODcsIDEwMTE5MiwgMTAxMTk3LCAxMDEyMDIsIDEwMTIwNywgMTAxMjEyLCAKLSAgICAxMDEyMTYsIDEwMTIyMSwgMTAxMjI1LCAxMDEyMzAsIDEwMTIzNCwgMTAxMjM5LCAxMDEyNDMsIDEwMTI0OCwgMTAxMjUzLCAKLSAgICAxMDEyNTgsIDEwMTI2MywgMTAxMjY4LCAxMDEyNzMsIDEwMTI3OCwgMTAxMjgzLCAxMDEyODgsIDEwMTI5MywgMTAxMjk4LCAKLSAgICAxMDEzMDMsIDEwMTMwOCwgMTAxMzEzLCAxMDEzMTgsIDEwMTMyMywgMTAxMzI4LCAxMDEzMzMsIDEwMTMzOCwgMTAxMzQzLCAKLSAgICAxMDEzNDgsIDEwMTM1MywgMTAxMzU4LCAxMDEzNjMsIDEwMTM2OCwgMTAxMzczLCAxMDEzNzgsIDEwMTM4MywgMTAxMzg4LCAKLSAgICAxMDEzOTMsIDEwMTM5OCwgMTAxNDAzLCAxMDE0MDgsIDEwMTQxMywgMTAxNDE4LCAxMDE0MjMsIDEwMTQyOCwgMTAxNDMzLCAKLSAgICAwLCAwLCAwLCAxMDE0MzgsIDEwMTQ0MywgMTAxNDUyLCAxMDE0NjAsIDEwMTQ2OSwgMTAxNDc4LCAxMDE0ODksIDEwMTUwMCwgCi0gICAgMTAxNTA3LCAxMDE1MTQsIDEwMTUyMSwgMTAxNTI4LCAxMDE1MzUsIDEwMTU0MiwgMTAxNTQ5LCAxMDE1NTYsIDEwMTU2MywgCi0gICAgMTAxNTcwLCAxMDE1NzcsIDEwMTU4NCwgMTAxNTkxLCAxMDE1OTgsIDEwMTYwNSwgMTAxNjEyLCAxMDE2MTksIDEwMTYyNiwgCi0gICAgMTAxNjMzLCAxMDE2NDAsIDEwMTY0NywgMCwgMCwgMTAxNjU0LCAxMDE2NjAsIDEwMTY2NiwgMTAxNjcyLCAxMDE2NzgsIAotICAgIDEwMTY4NSwgMTAxNjkyLCAxMDE3MDAsIDEwMTcwOCwgMTAxNzE1LCAxMDE3MjIsIDEwMTcyOSwgMTAxNzM2LCAxMDE3NDMsIAotICAgIDEwMTc1MCwgMTAxNzU3LCAxMDE3NjQsIDEwMTc3MSwgMTAxNzc4LCAxMDE3ODUsIDEwMTc5MiwgMTAxNzk5LCAxMDE4MDYsIAotICAgIDEwMTgxMywgMTAxODIwLCAxMDE4MjcsIDEwMTgzNCwgMCwgMCwgMCwgMCwgMCwgMTAxODQxLCAxMDE4NDcsIDEwMTg1MywgCi0gICAgMTAxODU5LCAxMDE4NjUsIDEwMTg3MiwgMTAxODc5LCAxMDE4ODcsIDEwMTg5NSwgMTAxOTAyLCAxMDE5MDksIDEwMTkxNiwgCi0gICAgMTAxOTIzLCAxMDE5MzAsIDEwMTkzNywgMTAxOTQ0LCAxMDE5NTEsIDEwMTk1OCwgMTAxOTY1LCAxMDE5NzIsIDEwMTk3OSwgCi0gICAgMTAxOTg2LCAxMDE5OTMsIDEwMjAwMCwgMTAyMDA3LCAxMDIwMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjAyMSwgCi0gICAgMTAyMDI4LCAxMDIwMzcsIDEwMjA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyMDU3LCAKLSAgICAxMDIwNjMsIDEwMjA2OSwgMTAyMDc1LCAxMDIwODEsIDEwMjA4OCwgMTAyMDk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDIxMDMsIDEwMjExMCwgMTAyMTE3LCAxMDIxMjUsIDEwMjEzMiwgMTAyMTM5LCAxMDIxNDYsIDEwMjE1MywgMTAyMTYxLCAKLSAgICAxMDIxNjksIDEwMjE3NywgMTAyMTg1LCAxMDIxOTMsIDEwMjIwMSwgMTAyMjA5LCAxMDIyMTcsIDEwMjIyNSwgMTAyMjMzLCAKLSAgICAxMDIyNDEsIDEwMjI0OSwgMTAyMjU3LCAxMDIyNjUsIDEwMjI3MywgMTAyMjgxLCAxMDIyODksIDEwMjI5NywgMTAyMzA1LCAKLSAgICAxMDIzMTMsIDEwMjMyMSwgMTAyMzI5LCAxMDIzMzcsIDEwMjM0NSwgMTAyMzUzLCAxMDIzNjEsIDEwMjM2OSwgMTAyMzc3LCAKLSAgICAxMDIzODUsIDEwMjM5MywgMTAyNDAxLCAxMDI0MDksIDEwMjQxNywgMTAyNDI1LCAxMDI0MzMsIDEwMjQ0MSwgMTAyNDQ5LCAKLSAgICAxMDI0NTcsIDEwMjQ2NSwgMTAyNDczLCAxMDI0ODEsIDEwMjQ4OSwgMTAyNDk3LCAxMDI1MDUsIDEwMjUxMywgMTAyNTIxLCAKLSAgICAxMDI1MjksIDEwMjUzNywgMTAyNTQ1LCAxMDI1NTMsIDEwMjU2MSwgMTAyNTY5LCAxMDI1NzcsIDEwMjU4NSwgMTAyNTkzLCAKLSAgICAxMDI2MDEsIDEwMjYwOSwgMTAyNjE3LCAxMDI2MjUsIDEwMjYzMywgMTAyNjQxLCAxMDI2NDksIDEwMjY1NywgMTAyNjY1LCAKLSAgICAxMDI2NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjY4MSwgMTAyNjg2LCAxMDI2OTIsIDEwMjY5OCwgMTAyNzA0LCAKLSAgICAxMDI3MTAsIDEwMjcxNiwgMTAyNzIyLCAxMDI3MjgsIDEwMjczNCwgMTAyNzM5LCAxMDI3NDYsIDEwMjc1MiwgMTAyNzU4LCAKLSAgICAxMDI3NjQsIDEwMjc3MCwgMTAyNzc2LCAxMDI3ODEsIDEwMjc4NywgMTAyNzkzLCAxMDI3OTksIDEwMjgwNSwgMTAyODExLCAKLSAgICAxMDI4MTcsIDEwMjgyMywgMTAyODI5LCAxMDI4MzUsIDEwMjg0MSwgMTAyODQ2LCAxMDI4NTIsIDEwMjg2MCwgMTAyODY4LCAKLSAgICAxMDI4NzQsIDEwMjg4MCwgMTAyODg2LCAxMDI4OTIsIDEwMjkwMCwgMTAyOTA2LCAxMDI5MTIsIDEwMjkxOCwgMTAyOTI0LCAKLSAgICAxMDI5MzAsIDEwMjkzNiwgMTAyOTQxLCAxMDI5NDcsIDEwMjk1NSwgMTAyOTYzLCAxMDI5NjksIDEwMjk3NSwgMTAyOTgxLCAKLSAgICAxMDI5ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjk5NCwgMTAyOTk5LCAxMDMwMDUsIAotICAgIDEwMzAxMSwgMTAzMDE3LCAxMDMwMjMsIDEwMzAyOSwgMTAzMDM1LCAxMDMwNDEsIDEwMzA0NywgMTAzMDUyLCAxMDMwNTksIAotICAgIDEwMzA2NSwgMTAzMDcxLCAxMDMwNzcsIDEwMzA4MywgMTAzMDg5LCAxMDMwOTQsIDEwMzEwMCwgMTAzMTA2LCAxMDMxMTIsIAotICAgIDEwMzExOCwgMTAzMTI0LCAxMDMxMzAsIDEwMzEzNiwgMTAzMTQyLCAxMDMxNDgsIDEwMzE1NCwgMTAzMTU5LCAxMDMxNjUsIAotICAgIDEwMzE3MywgMTAzMTgxLCAxMDMxODcsIDEwMzE5MywgMTAzMTk5LCAxMDMyMDUsIDEwMzIxMywgMTAzMjE5LCAxMDMyMjUsIAotICAgIDEwMzIzMSwgMTAzMjM3LCAxMDMyNDMsIDEwMzI0OSwgMTAzMjU0LCAxMDMyNjAsIDEwMzI2OCwgMTAzMjc2LCAxMDMyODIsIAotICAgIDEwMzI4OCwgMTAzMjk0LCAxMDMzMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzMwNywgMTAzMzExLCAxMDMzMTUsIAotICAgIDEwMzMyMCwgMTAzMzI1LCAxMDMzMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMDE5MiwgMTAwMTk3LCAxMDAyMDIsIDEwMDIwNywgMTAwMjEyLCAxMDAyMTcsIDEwMDIyMiwgMTAwMjI3LCAxMDAyMzIsIAorICAgIDEwMDIzNywgMTAwMjQyLCAxMDAyNDcsIDEwMDI1MiwgMTAwMjU3LCAxMDAyNjIsIDEwMDI2NywgMTAwMjcyLCAxMDAyNzcsIAorICAgIDEwMDI4MiwgMCwgMTAwMjg3LCAxMDAyOTIsIDAsIDAsIDAsIDAsIDAsIDEwMDI5NywgMTAwMzAxLCAxMDAzMDUsIDEwMDMxMCwgCisgICAgMTAwMzE1LCAxMDAzMjEsIDEwMDMyNiwgMTAwMzMxLCAxMDAzMzYsIDEwMDM0MSwgMTAwMzQ2LCAxMDAzNTEsIDEwMDM1NiwgCisgICAgMTAwMzYxLCAxMDAzNjYsIDEwMDM3MSwgMTAwMzc2LCAxMDAzODEsIDEwMDM4NiwgMTAwMzkxLCAxMDAzOTYsIDEwMDQwMSwgCisgICAgMTAwNDA2LCAxMDA0MTEsIDEwMDQxNiwgMTAwNDIxLCAxMDA0MjYsIDEwMDQzMSwgMTAwNDM1LCAxMDA0NDAsIDEwMDQ0NSwgCisgICAgMTAwNDUxLCAxMDA0NTUsIDAsIDAsIDAsIDEwMDQ1OSwgMTAwNDY1LCAxMDA0NjksIDEwMDQ3NCwgMTAwNDc5LCAxMDA0ODQsIAorICAgIDEwMDQ4OCwgMTAwNDkzLCAxMDA0OTcsIDEwMDUwMiwgMTAwNTA3LCAxMDA1MTEsIDEwMDUxNiwgMTAwNTIxLCAxMDA1MjUsIAorICAgIDEwMDUyOSwgMTAwNTM0LCAxMDA1MzksIDEwMDU0MywgMTAwNTQ4LCAxMDA1NTMsIDEwMDU1OCwgMTAwNTYzLCAxMDA1NjgsIAorICAgIDEwMDU3MywgMTAwNTc4LCAxMDA1ODMsIDAsIDAsIDAsIDAsIDAsIDEwMDU4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwNTkzLCAxMDA1OTgsIDEwMDYwMywgMTAwNjA4LCAxMDA2MTMsIDEwMDYxOCwgCisgICAgMTAwNjI0LCAxMDA2MzAsIDEwMDYzNiwgMTAwNjQxLCAxMDA2NDYsIDEwMDY1MSwgMTAwNjU3LCAxMDA2NjMsIDEwMDY2OSwgCisgICAgMTAwNjc1LCAxMDA2ODEsIDEwMDY4NiwgMTAwNjkyLCAxMDA2OTgsIDEwMDcwNCwgMTAwNzEwLCAxMDA3MTYsIDEwMDcyMSwgCisgICAgMTAwNzI3LCAxMDA3MzMsIDEwMDczOSwgMTAwNzQ1LCAxMDA3NTEsIDEwMDc1NiwgMTAwNzYyLCAxMDA3NjgsIDEwMDc3NCwgCisgICAgMTAwNzc5LCAxMDA3ODQsIDEwMDc4OSwgMTAwNzk0LCAxMDA3OTksIDEwMDgwNSwgMTAwODExLCAxMDA4MTYsIDEwMDgyMSwgCisgICAgMTAwODI2LCAxMDA4MzIsIDEwMDgzOCwgMTAwODQzLCAxMDA4NDksIDEwMDg1NSwgMTAwODYxLCAxMDA4NjksIDEwMDg3NSwgCisgICAgMTAwODgwLCAxMDA4ODYsIDEwMDg5MiwgMTAwODk4LCAxMDA5MDMsIDAsIDAsIDAsIDAsIDEwMDkwOSwgMTAwOTE4LCAKKyAgICAxMDA5MjYsIDEwMDkzMywgMTAwOTQwLCAxMDA5NDUsIDEwMDk1MCwgMTAwOTU1LCAxMDA5NjAsIDEwMDk2NSwgMTAwOTcwLCAKKyAgICAxMDA5NzYsIDEwMDk4MSwgMTAwOTg3LCAxMDA5OTMsIDEwMDk5OSwgMTAxMDA1LCAxMDEwMTEsIDEwMTAxNywgMTAxMDIzLCAKKyAgICAwLCAwLCAxMDEwMjksIDEwMTAzNiwgMTAxMDQzLCAxMDEwNTAsIDEwMTA1OCwgMTAxMDY2LCAxMDEwNzQsIDEwMTA4MiwgCisgICAgMTAxMDkwLCAxMDEwOTgsIDEwMTEwNSwgMTAxMTEyLCAxMDExMTksIDEwMTEyNywgMTAxMTM1LCAxMDExNDMsIDEwMTE1MSwgCisgICAgMTAxMTU5LCAxMDExNjcsIDEwMTE3NSwgMTAxMTgzLCAxMDExOTEsIDEwMTE5OSwgMTAxMjA3LCAxMDEyMTUsIDEwMTIyMywgCisgICAgMTAxMjMxLCAxMDEyMzksIDEwMTI0OCwgMTAxMjU3LCAxMDEyNjYsIDEwMTI3NiwgMTAxMjg2LCAxMDEyOTYsIDEwMTMwNiwgCisgICAgMTAxMzE2LCAxMDEzMjYsIDEwMTMzNCwgMTAxMzQyLCAxMDEzNTAsIDEwMTM1OSwgMTAxMzY4LCAxMDEzNzcsIDEwMTM4NiwgCisgICAgMTAxMzk1LCAxMDE0MDQsIDEwMTQxMywgMTAxNDE3LCAxMDE0MjIsIDEwMTQyNywgMCwgMTAxNDMzLCAxMDE0MzgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwMTQ0MywgMTAxNDQ5LCAxMDE0NTYsIDEwMTQ2MSwgMTAxNDY2LCAxMDE0NzAsIDEwMTQ3NSwgMTAxNDgwLCAKKyAgICAwLCAxMDE0ODUsIDEwMTQ5MCwgMTAxNDk1LCAwLCAxMDE1MDAsIDEwMTUwNSwgMTAxNTEwLCAxMDE1MTUsIDEwMTUyMCwgCisgICAgMTAxNTI1LCAxMDE1MzAsIDEwMTUzNSwgMTAxNTQwLCAxMDE1NDUsIDEwMTU1MCwgMTAxNTU0LCAxMDE1NTgsIDEwMTU2MywgCisgICAgMTAxNTY4LCAxMDE1NzMsIDEwMTU3NywgMTAxNTgxLCAxMDE1ODYsIDEwMTU5MCwgMTAxNTk1LCAxMDE2MDAsIDEwMTYwNSwgCisgICAgMTAxNjEwLCAxMDE2MTUsIDEwMTYxOSwgMTAxNjI0LCAwLCAwLCAwLCAwLCAxMDE2MjksIDEwMTYzNSwgMTAxNjQwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDE2NDUsIDEwMTY0OSwgMTAxNjUzLCAxMDE2NTcsIDEwMTY2MSwgMTAxNjY1LCAxMDE2NzAsIDEwMTY3NSwgCisgICAgMTAxNjgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDE2ODcsIDEwMTY5MywgMTAxNzAwLCAxMDE3MDYsIDEwMTcxMywgCisgICAgMTAxNzE5LCAxMDE3MjUsIDEwMTczMSwgMTAxNzM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDE3NDQsIDEwMTc1MiwgCisgICAgMTAxNzYwLCAxMDE3NjgsIDEwMTc3NiwgMTAxNzg0LCAxMDE3OTIsIDEwMTgwMCwgMTAxODA4LCAxMDE4MTYsIDEwMTgyNCwgCisgICAgMTAxODMyLCAxMDE4NDAsIDEwMTg0OCwgMTAxODU2LCAxMDE4NjQsIDEwMTg3MiwgMTAxODgwLCAxMDE4ODgsIDEwMTg5NiwgCisgICAgMTAxOTA0LCAxMDE5MTIsIDEwMTkyMCwgMTAxOTI4LCAxMDE5MzYsIDEwMTk0NCwgMTAxOTUyLCAxMDE5NjAsIDEwMTk2OCwgCisgICAgMTAxOTc2LCAxMDE5ODMsIDEwMTk5MSwgMTAxOTk5LCAxMDIwMDYsIDEwMjAxMywgMTAyMDIwLCAxMDIwMjcsIDEwMjAzNCwgCisgICAgMTAyMDQxLCAxMDIwNDgsIDEwMjA1NSwgMTAyMDYyLCAxMDIwNjksIDEwMjA3NiwgMTAyMDgzLCAxMDIwOTAsIDEwMjA5NywgCisgICAgMTAyMTA0LCAxMDIxMTEsIDEwMjExOCwgMTAyMTI1LCAxMDIxMzIsIDEwMjEzOSwgMTAyMTQ2LCAxMDIxNTMsIDEwMjE2MCwgCisgICAgMTAyMTY3LCAxMDIxNzQsIDEwMjE4MSwgMTAyMTg4LCAxMDIxOTUsIDEwMjIwMiwgMTAyMjA4LCAxMDIyMTUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzMzNywgMTAzMzQxLCAxMDMzNDUsIDEwMzM0OSwgMTAzMzUzLCAxMDMzNTcsIAotICAgIDEwMzM2MSwgMTAzMzY2LCAxMDMzNzAsIDEwMzM3NSwgMTAzMzgwLCAxMDMzODUsIDEwMzM5MCwgMTAzMzk1LCAxMDM0MDAsIAotICAgIDEwMzQwNSwgMTAzNDEwLCAxMDM0MTUsIDEwMzQyMCwgMTAzNDI2LCAxMDM0MzIsIDEwMzQzOCwgMTAzNDQ1LCAxMDM0NTIsIAotICAgIDEwMzQ1OSwgMTAzNDY2LCAxMDM0NzMsIDEwMzQ4MCwgMTAzNDg3LCAxMDM0OTQsIDEwMzUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTAyMjIyLCAxMDIyMjcsIDEwMjIzMiwgMTAyMjM3LCAxMDIyNDIsIDEwMjI0NywgMTAyMjUyLCAKKyAgICAxMDIyNTcsIDEwMjI2MiwgMTAyMjY3LCAxMDIyNzIsIDEwMjI3NywgMTAyMjgyLCAxMDIyODcsIDEwMjI5MiwgMTAyMjk3LCAKKyAgICAxMDIzMDIsIDEwMjMwNywgMTAyMzEyLCAxMDIzMTcsIDEwMjMyMiwgMTAyMzI3LCAxMDIzMzIsIDEwMjMzNywgMTAyMzQyLCAKKyAgICAxMDIzNDcsIDEwMjM1MiwgMTAyMzU3LCAxMDIzNjIsIDEwMjM2NywgMTAyMzcyLCAxMDIzNzcsIDEwMjM4MiwgMTAyMzg3LCAKKyAgICAxMDIzOTIsIDEwMjM5NywgMTAyNDAyLCAxMDI0MDcsIDEwMjQxMywgMCwgMCwgMCwgMCwgMTAyNDE5LCAxMDI0MjMsIAorICAgIDEwMjQyNywgMTAyNDMyLCAxMDI0MzcsIDEwMjQ0MywgMTAyNDQ5LCAxMDI0NTUsIDEwMjQ2NSwgMTAyNDc0LCAxMDI0ODAsIAorICAgIDEwMjQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyNDk1LCAxMDI0OTksIDEwMjUwNCwgMTAyNTA5LCAKKyAgICAxMDI1MTQsIDEwMjUxOSwgMTAyNTI0LCAxMDI1MjksIDEwMjUzNCwgMTAyNTM4LCAxMDI1NDMsIDEwMjU0NywgMTAyNTUyLCAKKyAgICAxMDI1NTYsIDEwMjU2MSwgMTAyNTY1LCAxMDI1NzAsIDEwMjU3NSwgMTAyNTgwLCAxMDI1ODUsIDEwMjU5MCwgMTAyNTk1LCAKKyAgICAxMDI2MDAsIDEwMjYwNSwgMTAyNjEwLCAxMDI2MTUsIDEwMjYyMCwgMTAyNjI1LCAxMDI2MzAsIDEwMjYzNSwgMTAyNjQwLCAKKyAgICAxMDI2NDUsIDEwMjY1MCwgMTAyNjU1LCAxMDI2NjAsIDEwMjY2NSwgMTAyNjcwLCAxMDI2NzUsIDEwMjY4MCwgMTAyNjg1LCAKKyAgICAxMDI2OTAsIDEwMjY5NSwgMTAyNzAwLCAxMDI3MDUsIDEwMjcxMCwgMTAyNzE1LCAxMDI3MjAsIDEwMjcyNSwgMTAyNzMwLCAKKyAgICAxMDI3MzUsIDEwMjc0MCwgMTAyNzQ1LCAxMDI3NTAsIDEwMjc1NSwgMCwgMCwgMCwgMTAyNzYwLCAxMDI3NjUsIDEwMjc3NCwgCisgICAgMTAyNzgyLCAxMDI3OTEsIDEwMjgwMCwgMTAyODExLCAxMDI4MjIsIDEwMjgyOSwgMTAyODM2LCAxMDI4NDMsIDEwMjg1MCwgCisgICAgMTAyODU3LCAxMDI4NjQsIDEwMjg3MSwgMTAyODc4LCAxMDI4ODUsIDEwMjg5MiwgMTAyODk5LCAxMDI5MDYsIDEwMjkxMywgCisgICAgMTAyOTIwLCAxMDI5MjcsIDEwMjkzNCwgMTAyOTQxLCAxMDI5NDgsIDEwMjk1NSwgMTAyOTYyLCAxMDI5NjksIDAsIDAsIAorICAgIDEwMjk3NiwgMTAyOTgyLCAxMDI5ODgsIDEwMjk5NCwgMTAzMDAwLCAxMDMwMDcsIDEwMzAxNCwgMTAzMDIyLCAxMDMwMzAsIAorICAgIDEwMzAzNywgMTAzMDQ0LCAxMDMwNTEsIDEwMzA1OCwgMTAzMDY1LCAxMDMwNzIsIDEwMzA3OSwgMTAzMDg2LCAxMDMwOTMsIAorICAgIDEwMzEwMCwgMTAzMTA3LCAxMDMxMTQsIDEwMzEyMSwgMTAzMTI4LCAxMDMxMzUsIDEwMzE0MiwgMTAzMTQ5LCAxMDMxNTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEwMzE2MywgMTAzMTY5LCAxMDMxNzUsIDEwMzE4MSwgMTAzMTg3LCAxMDMxOTQsIDEwMzIwMSwgCisgICAgMTAzMjA5LCAxMDMyMTcsIDEwMzIyNCwgMTAzMjMxLCAxMDMyMzgsIDEwMzI0NSwgMTAzMjUyLCAxMDMyNTksIDEwMzI2NiwgCisgICAgMTAzMjczLCAxMDMyODAsIDEwMzI4NywgMTAzMjk0LCAxMDMzMDEsIDEwMzMwOCwgMTAzMzE1LCAxMDMzMjIsIDEwMzMyOSwgCisgICAgMTAzMzM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzNDMsIDEwMzM1MCwgMTAzMzU5LCAxMDMzNjksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzM3OSwgMTAzMzg1LCAxMDMzOTEsIDEwMzM5NywgMTAzNDAzLCAxMDM0MTAsIAorICAgIDEwMzQxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzNDI1LCAxMDM0MzIsIDEwMzQzOSwgMTAzNDQ3LCAxMDM0NTQsIAorICAgIDEwMzQ2MSwgMTAzNDY4LCAxMDM0NzUsIDEwMzQ4MywgMTAzNDkxLCAxMDM0OTksIDEwMzUwNywgMTAzNTE1LCAxMDM1MjMsIAorICAgIDEwMzUzMSwgMTAzNTM5LCAxMDM1NDcsIDEwMzU1NSwgMTAzNTYzLCAxMDM1NzEsIDEwMzU3OSwgMTAzNTg3LCAxMDM1OTUsIAorICAgIDEwMzYwMywgMTAzNjExLCAxMDM2MTksIDEwMzYyNywgMTAzNjM1LCAxMDM2NDMsIDEwMzY1MSwgMTAzNjU5LCAxMDM2NjcsIAorICAgIDEwMzY3NSwgMTAzNjgzLCAxMDM2OTEsIDEwMzY5OSwgMTAzNzA3LCAxMDM3MTUsIDEwMzcyMywgMTAzNzMxLCAxMDM3MzksIAorICAgIDEwMzc0NywgMTAzNzU1LCAxMDM3NjMsIDEwMzc3MSwgMTAzNzc5LCAxMDM3ODcsIDEwMzc5NSwgMTAzODAzLCAxMDM4MTEsIAorICAgIDEwMzgxOSwgMTAzODI3LCAxMDM4MzUsIDEwMzg0MywgMTAzODUxLCAxMDM4NTksIDEwMzg2NywgMTAzODc1LCAxMDM4ODMsIAorICAgIDEwMzg5MSwgMTAzODk5LCAxMDM5MDcsIDEwMzkxNSwgMTAzOTIzLCAxMDM5MzEsIDEwMzkzOSwgMTAzOTQ3LCAxMDM5NTUsIAorICAgIDEwMzk2MywgMTAzOTcxLCAxMDM5NzksIDEwMzk4NywgMTAzOTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQwMDMsIAorICAgIDEwNDAwOCwgMTA0MDE0LCAxMDQwMjAsIDEwNDAyNiwgMTA0MDMyLCAxMDQwMzgsIDEwNDA0NCwgMTA0MDUwLCAxMDQwNTYsIAorICAgIDEwNDA2MSwgMTA0MDY4LCAxMDQwNzQsIDEwNDA4MCwgMTA0MDg2LCAxMDQwOTIsIDEwNDA5OCwgMTA0MTAzLCAxMDQxMDksIAorICAgIDEwNDExNSwgMTA0MTIxLCAxMDQxMjcsIDEwNDEzMywgMTA0MTM5LCAxMDQxNDUsIDEwNDE1MSwgMTA0MTU3LCAxMDQxNjMsIAorICAgIDEwNDE2OCwgMTA0MTc0LCAxMDQxODIsIDEwNDE5MCwgMTA0MTk2LCAxMDQyMDIsIDEwNDIwOCwgMTA0MjE0LCAxMDQyMjIsIAorICAgIDEwNDIyOCwgMTA0MjM0LCAxMDQyNDAsIDEwNDI0NiwgMTA0MjUyLCAxMDQyNTgsIDEwNDI2MywgMTA0MjY5LCAxMDQyNzcsIAorICAgIDEwNDI4NSwgMTA0MjkxLCAxMDQyOTcsIDEwNDMwMywgMTA0MzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDQzMTYsIDEwNDMyMSwgMTA0MzI3LCAxMDQzMzMsIDEwNDMzOSwgMTA0MzQ1LCAxMDQzNTEsIDEwNDM1NywgCisgICAgMTA0MzYzLCAxMDQzNjksIDEwNDM3NCwgMTA0MzgxLCAxMDQzODcsIDEwNDM5MywgMTA0Mzk5LCAxMDQ0MDUsIDEwNDQxMSwgCisgICAgMTA0NDE2LCAxMDQ0MjIsIDEwNDQyOCwgMTA0NDM0LCAxMDQ0NDAsIDEwNDQ0NiwgMTA0NDUyLCAxMDQ0NTgsIDEwNDQ2NCwgCisgICAgMTA0NDcwLCAxMDQ0NzYsIDEwNDQ4MSwgMTA0NDg3LCAxMDQ0OTUsIDEwNDUwMywgMTA0NTA5LCAxMDQ1MTUsIDEwNDUyMSwgCisgICAgMTA0NTI3LCAxMDQ1MzUsIDEwNDU0MSwgMTA0NTQ3LCAxMDQ1NTMsIDEwNDU1OSwgMTA0NTY1LCAxMDQ1NzEsIDEwNDU3NiwgCisgICAgMTA0NTgyLCAxMDQ1OTAsIDEwNDU5OCwgMTA0NjA0LCAxMDQ2MTAsIDEwNDYxNiwgMTA0NjIzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMDQ2MjksIDEwNDYzMywgMTA0NjM3LCAxMDQ2NDIsIDEwNDY0NywgMTA0NjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMDM1MDgsIDEwMzUxMiwgMTAzNTE2LCAxMDM1MjAsIDEwMzUyNCwgMTAzNTI4LCAxMDM1MzEsIDEwMzUzNSwgCi0gICAgMTAzNTM4LCAxMDM1NDIsIDEwMzU0NSwgMTAzNTQ5LCAxMDM1NTMsIDEwMzU1OCwgMTAzNTYyLCAxMDM1NjcsIDEwMzU3MCwgCi0gICAgMTAzNTc0LCAxMDM1NzcsIDEwMzU4MSwgMTAzNTg0LCAxMDM1ODgsIDEwMzU5MiwgMTAzNTk2LCAxMDM2MDAsIDEwMzYwNCwgCi0gICAgMTAzNjA4LCAxMDM2MTIsIDEwMzYxNiwgMTAzNjIwLCAxMDM2MjQsIDEwMzYyOCwgMTAzNjMyLCAxMDM2MzYsIDEwMzY0MCwgCi0gICAgMTAzNjQ0LCAxMDM2NDgsIDEwMzY1MiwgMTAzNjU2LCAxMDM2NjAsIDEwMzY2MywgMTAzNjY3LCAxMDM2NzEsIDEwMzY3NSwgCi0gICAgMTAzNjc4LCAxMDM2ODEsIDEwMzY4NSwgMTAzNjg5LCAxMDM2OTMsIDEwMzY5NywgMTAzNzAxLCAxMDM3MDUsIDEwMzcwOCwgCi0gICAgMTAzNzEyLCAxMDM3MTgsIDEwMzcyNCwgMTAzNzMwLCAxMDM3MzUsIDEwMzc0MiwgMTAzNzQ2LCAxMDM3NTEsIDEwMzc1NSwgCi0gICAgMTAzNzYwLCAxMDM3NjUsIDEwMzc3MSwgMTAzNzc2LCAxMDM3ODIsIDEwMzc4NiwgMTAzNzkxLCAxMDM3OTUsIDEwMzgwMCwgCi0gICAgMTAzODAzLCAxMDM4MDYsIDEwMzgxMCwgMTAzODE1LCAxMDM4MjEsIDEwMzgyNiwgMTAzODMyLCAwLCAwLCAwLCAwLCAKLSAgICAxMDM4MzcsIDEwMzg0MCwgMTAzODQzLCAxMDM4NDYsIDEwMzg0OSwgMTAzODUyLCAxMDM4NTUsIDEwMzg1OSwgMTAzODYyLCAKLSAgICAxMDM4NjYsIDEwMzg3MCwgMTAzODc0LCAxMDM4NzgsIDEwMzg4MiwgMTAzODg2LCAxMDM4OTAsIDEwMzg5NCwgMTAzODk4LCAKLSAgICAxMDM5MDIsIDEwMzkwNywgMTAzOTEyLCAxMDM5MTYsIDEwMzkxOSwgMTAzOTIyLCAxMDM5MjUsIDEwMzkyOCwgMTAzOTMxLCAKLSAgICAxMDM5MzQsIDEwMzkzOCwgMTAzOTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDM5NDUsIDEwMzk0OSwgMTAzOTU0LCAxMDM5NTksIDEwMzk2NCwgMTAzOTY4LCAxMDM5NzMsIDEwMzk3NywgMTAzOTgyLCAKLSAgICAxMDM5ODYsIDEwMzk5MSwgMTAzOTk1LCAxMDQwMDAsIDEwNDAwNCwgMTA0MDA5LCAxMDQwMTMsIDEwNDAxOCwgMTA0MDIzLCAKLSAgICAxMDQwMjgsIDEwNDAzMywgMTA0MDM4LCAxMDQwNDMsIDEwNDA0OCwgMTA0MDUzLCAxMDQwNTgsIDEwNDA2MywgMTA0MDY4LCAKLSAgICAxMDQwNzMsIDEwNDA3OCwgMTA0MDgzLCAxMDQwODgsIDEwNDA5MywgMTA0MDk4LCAxMDQxMDMsIDEwNDEwOCwgMTA0MTEzLCAKLSAgICAxMDQxMTgsIDEwNDEyMiwgMTA0MTI3LCAxMDQxMzIsIDEwNDEzNywgMTA0MTQxLCAxMDQxNDUsIDEwNDE1MCwgMTA0MTU1LCAKLSAgICAxMDQxNjAsIDEwNDE2NSwgMTA0MTcwLCAxMDQxNzUsIDEwNDE3OSwgMTA0MTg1LCAxMDQxOTAsIDEwNDE5NiwgMTA0MjAxLCAKLSAgICAxMDQyMDcsIDEwNDIxMiwgMTA0MjE4LCAxMDQyMjMsIDEwNDIyOSwgMTA0MjM0LCAxMDQyMzksIDEwNDI0NCwgMTA0MjQ5LCAKLSAgICAxMDQyNTMsIDEwNDI1OCwgMTA0MjY0LCAxMDQyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNDI3MywgMTA0MjgwLCAxMDQyODcsIDEwNDI5NCwgMTA0MzAxLCAxMDQzMDgsIDEwNDMxNSwgMTA0MzIyLCAxMDQzMjksIAotICAgIDEwNDMzNiwgMTA0MzQzLCAxMDQzNTAsIDEwNDM1NywgMTA0MzY0LCAxMDQzNzEsIDEwNDM3OCwgMTA0Mzg1LCAxMDQzOTIsIAotICAgIDEwNDM5OSwgMTA0NDA2LCAxMDQ0MTMsIDEwNDQyMCwgMTA0NDI3LCAxMDQ0MzQsIDEwNDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTA0NDQ4LCAxMDQ0NTUsIDEwNDQ2MSwgMTA0NDY3LCAxMDQ0NzMsIDEwNDQ3OSwgMTA0NDg1LCAxMDQ0OTEsIAotICAgIDEwNDQ5OCwgMTA0NTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ1MTEsIDEwNDUxNiwgMTA0NTIxLCAxMDQ1MjYsIDEwNDUzMSwgCi0gICAgMTA0NTM1LCAxMDQ1MzksIDEwNDU0MywgMTA0NTQ4LCAxMDQ1NTMsIDEwNDU1OCwgMTA0NTYzLCAxMDQ1NjgsIDEwNDU3MywgCi0gICAgMTA0NTc4LCAxMDQ1ODMsIDEwNDU4OCwgMTA0NTkzLCAxMDQ1OTgsIDEwNDYwMywgMTA0NjA4LCAxMDQ2MTMsIDEwNDYxOCwgCi0gICAgMTA0NjIzLCAxMDQ2MjgsIDEwNDYzMywgMTA0NjM4LCAxMDQ2NDMsIDEwNDY0OCwgMTA0NjUzLCAxMDQ2NTgsIDEwNDY2MywgCi0gICAgMTA0NjY4LCAxMDQ2NzMsIDEwNDY3OCwgMTA0NjgzLCAxMDQ2ODgsIDEwNDY5MywgMTA0Njk4LCAxMDQ3MDMsIDEwNDcwOCwgCi0gICAgMTA0NzEzLCAxMDQ3MTksIDEwNDcyNCwgMTA0NzMwLCAxMDQ3MzUsIDEwNDc0MSwgMTA0NzQ2LCAxMDQ3NTIsIDEwNDc1OCwgCi0gICAgMTA0NzYyLCAxMDQ3NjcsIDEwNDc3MSwgMCwgMTA0Nzc1LCAxMDQ3ODAsIDEwNDc4NCwgMTA0Nzg4LCAxMDQ3OTIsIAotICAgIDEwNDc5NiwgMTA0ODAwLCAxMDQ4MDQsIDEwNDgwOSwgMTA0ODEzLCAxMDQ4MTgsIDEwNDgyMywgMTA0ODI3LCAxMDQ4MzIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDgzNywgMTA0ODQxLCAxMDQ4NDUsIDEwNDg0OSwgCi0gICAgMTA0ODUzLCAxMDQ4NTcsIDEwNDg2MSwgMTA0ODY2LCAxMDQ4NzEsIDEwNDg3NiwgMTA0ODgxLCAxMDQ4ODYsIDEwNDg5MSwgCi0gICAgMTA0ODk2LCAxMDQ5MDEsIDEwNDkwNiwgMTA0OTExLCAxMDQ5MTYsIDEwNDkyMSwgMTA0OTI2LCAxMDQ5MzEsIDEwNDkzNiwgCi0gICAgMTA0OTQxLCAxMDQ5NDYsIDEwNDk1MSwgMTA0OTU1LCAxMDQ5NjAsIDEwNDk2NSwgMTA0OTcwLCAxMDQ5NzQsIDEwNDk3OSwgCi0gICAgMTA0OTg0LCAxMDQ5ODksIDEwNDk5NCwgMTA0OTk4LCAxMDUwMDMsIDEwNTAwOCwgMTA1MDEzLCAxMDUwMTgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTAyMywgMTA1MDI3LCAxMDUwMzEsIDEwNTAzNSwgMTA1MDM4LCAxMDUwNDIsIDEwNTA0NSwgCi0gICAgMTA1MDQ5LCAxMDUwNTIsIDEwNTA1NiwgMTA1MDYwLCAxMDUwNjUsIDEwNTA2OSwgMTA1MDc0LCAxMDUwNzcsIDEwNTA4MSwgCi0gICAgMTA1MDg0LCAxMDUwODgsIDEwNTA5MSwgMTA1MDk1LCAxMDUwOTksIDEwNTEwMywgMTA1MTA3LCAxMDUxMTEsIDEwNTExNSwgCi0gICAgMTA1MTE5LCAxMDUxMjMsIDEwNTEyNywgMTA1MTMxLCAxMDUxMzUsIDEwNTEzOSwgMTA1MTQzLCAxMDUxNDcsIDEwNTE1MSwgCi0gICAgMTA1MTU1LCAxMDUxNTksIDEwNTE2MywgMTA1MTY3LCAxMDUxNzAsIDEwNTE3NCwgMTA1MTc4LCAxMDUxODIsIDEwNTE4NSwgCi0gICAgMTA1MTg4LCAxMDUxOTIsIDEwNTE5NiwgMTA1MjAwLCAxMDUyMDQsIDEwNTIwOCwgMTA1MjEyLCAxMDUyMTYsIDEwNTIxOSwgCi0gICAgMTA1MjI0LCAxMDUyMjgsIDEwNTIzMywgMTA1MjM3LCAxMDUyNDIsIDEwNTI0NywgMTA1MjUzLCAxMDUyNTgsIDEwNTI2NCwgCi0gICAgMTA1MjY4LCAxMDUyNzMsIDEwNTI3NywgMTA1MjgyLCAxMDUyODYsIDEwNTI5MCwgMTA1Mjk0LCAxMDUyOTgsIDEwNTMwMSwgCi0gICAgMTA1MzA0LCAxMDUzMDgsIDEwNTMxMiwgMTA1MzE1LCAxMDUzMTksIDEwNTMyMywgMTA1MzI3LCAxMDUzMzQsIDAsIDAsIAotICAgIDEwNTMzOCwgMTA1MzQyLCAxMDUzNDUsIDEwNTM0OCwgMTA1MzUxLCAxMDUzNTQsIDEwNTM1NywgMTA1MzYwLCAxMDUzNjQsIAotICAgIDEwNTM2NywgMTA1MzcxLCAxMDUzNzQsIDEwNTM3OCwgMTA1MzgxLCAxMDUzODUsIDEwNTM5MCwgMCwgMTA1Mzk1LCAKLSAgICAxMDU0MDAsIDEwNTQwNSwgMTA1NDEwLCAxMDU0MTUsIDEwNTQyMCwgMTA1NDI1LCAxMDU0MzEsIDEwNTQzNiwgMTA1NDQyLCAKLSAgICAxMDU0NDgsIDEwNTQ1NCwgMTA1NDYwLCAxMDU0NjYsIDEwNTQ3MiwgMTA1NDc4LCAxMDU0ODQsIDEwNTQ5MCwgMTA1NDk2LCAKLSAgICAxMDU1MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTUxMCwgMTA1NTE0LCAxMDU1MTksIDEwNTUyMywgCi0gICAgMTA1NTI3LCAxMDU1MzEsIDEwNTUzNiwgMTA1NTQwLCAxMDU1NDUsIDEwNTU0OSwgMTA1NTU0LCAxMDU1NTksIDEwNTU2NCwgCi0gICAgMTA1NTY5LCAxMDU1NzQsIDEwNTU3OSwgMTA1NTg0LCAxMDU1ODksIDAsIDEwNTU5NCwgMTA1NTk5LCAxMDU2MDQsIAotICAgIDEwNTYwOSwgMTA1NjE0LCAxMDU2MTksIDEwNTYyNCwgMTA1NjI5LCAxMDU2MzQsIDEwNTYzOSwgMTA1NjQ0LCAxMDU2NDksIAotICAgIDEwNTY1NCwgMTA1NjU4LCAxMDU2NjMsIDEwNTY2OCwgMTA1NjczLCAxMDU2NzgsIDEwNTY4MiwgMTA1Njg2LCAxMDU2OTEsIAotICAgIDEwNTY5NiwgMTA1NzAxLCAxMDU3MDYsIDEwNTcxMCwgMTA1NzE1LCAxMDU3MjEsIDEwNTcyNiwgMTA1NzMyLCAxMDU3MzcsIAotICAgIDEwNTc0MiwgMTA1NzQ4LCAxMDU3NTMsIDEwNTc1OSwgMTA1NzY0LCAxMDU3NjksIDEwNTc3NCwgMTA1Nzc5LCAxMDU3ODMsIAotICAgIDEwNTc4OCwgMTA1Nzk0LCAxMDU3OTksIDEwNTgwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NjU5LCAxMDQ2NjMsIAorICAgIDEwNDY2NywgMTA0NjcxLCAxMDQ2NzUsIDEwNDY3OSwgMTA0NjgzLCAxMDQ2ODgsIDEwNDY5MiwgMTA0Njk3LCAxMDQ3MDIsIAorICAgIDEwNDcwNywgMTA0NzEyLCAxMDQ3MTcsIDEwNDcyMiwgMTA0NzI3LCAxMDQ3MzIsIDEwNDczNywgMTA0NzQyLCAxMDQ3NDgsIAorICAgIDEwNDc1NCwgMTA0NzYwLCAxMDQ3NjcsIDEwNDc3NCwgMTA0NzgxLCAxMDQ3ODgsIDEwNDc5NSwgMTA0ODAyLCAxMDQ4MDksIAorICAgIDEwNDgxNiwgMTA0ODIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDU4MTAsIDEwNTgxNCwgMTA1ODE4LCAxMDU4MjIsIDEwNTgyNiwgMTA1ODMwLCAxMDU4MzUsIDAsIAotICAgIDEwNTg0MCwgMCwgMTA1ODQ1LCAxMDU4NTAsIDEwNTg1NSwgMTA1ODYwLCAwLCAxMDU4NjUsIDEwNTg3MCwgMTA1ODc1LCAKLSAgICAxMDU4ODAsIDEwNTg4NSwgMTA1ODkwLCAxMDU4OTUsIDEwNTkwMCwgMTA1OTA1LCAxMDU5MTAsIDEwNTkxNSwgMTA1OTIwLCAKLSAgICAxMDU5MjUsIDEwNTkyOSwgMTA1OTM0LCAwLCAxMDU5MzksIDEwNTk0NCwgMTA1OTQ4LCAxMDU5NTIsIDEwNTk1NywgCi0gICAgMTA1OTYyLCAxMDU5NjcsIDEwNTk3MiwgMTA1OTc2LCAxMDU5ODEsIDEwNTk4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1OTkxLCAKLSAgICAxMDU5OTUsIDEwNjAwMCwgMTA2MDA0LCAxMDYwMDksIDEwNjAxMywgMTA2MDE4LCAxMDYwMjIsIDEwNjAyNywgMTA2MDMxLCAKLSAgICAxMDYwMzYsIDEwNjA0MCwgMTA2MDQ1LCAxMDYwNTAsIDEwNjA1NSwgMTA2MDYwLCAxMDYwNjUsIDEwNjA3MCwgMTA2MDc1LCAKLSAgICAxMDYwODAsIDEwNjA4NSwgMTA2MDkwLCAxMDYwOTUsIDEwNjEwMCwgMTA2MTA1LCAxMDYxMTAsIDEwNjExNSwgMTA2MTIwLCAKLSAgICAxMDYxMjUsIDEwNjEzMCwgMTA2MTM1LCAxMDYxNDAsIDEwNjE0NSwgMTA2MTUwLCAxMDYxNTUsIDEwNjE1OSwgMTA2MTY0LCAKLSAgICAxMDYxNjksIDEwNjE3NCwgMTA2MTc5LCAxMDYxODMsIDEwNjE4NywgMTA2MTkyLCAxMDYxOTcsIDEwNjIwMiwgMTA2MjA3LCAKLSAgICAxMDYyMTIsIDEwNjIxNiwgMTA2MjIxLCAxMDYyMjcsIDEwNjIzMiwgMTA2MjM4LCAxMDYyNDMsIDEwNjI0OSwgMTA2MjU0LCAKLSAgICAxMDYyNjAsIDEwNjI2NSwgMTA2MjcxLCAxMDYyNzYsIDAsIDAsIDAsIDAsIDAsIDEwNjI4MSwgMTA2Mjg2LCAxMDYyOTAsIAotICAgIDEwNjI5NCwgMTA2Mjk4LCAxMDYzMDIsIDEwNjMwNiwgMTA2MzEwLCAxMDYzMTUsIDEwNjMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA2MzI0LCAxMDYzMzEsIDEwNjMzNiwgMTA2MzQxLCAwLCAxMDYzNDYsIDEwNjM1MCwgMTA2MzU1LCAxMDYzNTksIAotICAgIDEwNjM2NCwgMTA2MzY4LCAxMDYzNzMsIDEwNjM3OCwgMCwgMCwgMTA2MzgzLCAxMDYzODgsIDAsIDAsIDEwNjM5MywgCi0gICAgMTA2Mzk4LCAxMDY0MDMsIDEwNjQwNywgMTA2NDEyLCAxMDY0MTcsIDEwNjQyMiwgMTA2NDI3LCAxMDY0MzIsIDEwNjQzNywgCi0gICAgMTA2NDQyLCAxMDY0NDcsIDEwNjQ1MiwgMTA2NDU3LCAxMDY0NjIsIDEwNjQ2NywgMTA2NDcyLCAxMDY0NzcsIDEwNjQ4MiwgCi0gICAgMTA2NDg3LCAxMDY0OTIsIDEwNjQ5NywgMCwgMTA2NTAyLCAxMDY1MDYsIDEwNjUxMSwgMTA2NTE2LCAxMDY1MjEsIAotICAgIDEwNjUyNSwgMTA2NTI5LCAwLCAxMDY1MzQsIDEwNjUzOSwgMCwgMTA2NTQ0LCAxMDY1NDksIDEwNjU1NCwgMTA2NTU5LCAKLSAgICAxMDY1NjQsIDAsIDAsIDEwNjU2OCwgMTA2NTczLCAxMDY1NzgsIDEwNjU4NCwgMTA2NTg5LCAxMDY1OTUsIDEwNjYwMCwgCi0gICAgMTA2NjA2LCAxMDY2MTIsIDAsIDAsIDEwNjYxOSwgMTA2NjI1LCAwLCAwLCAxMDY2MzEsIDEwNjYzNywgMTA2NjQzLCAwLCAwLCAKLSAgICAxMDY2NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNjY1MiwgMCwgMCwgMCwgMCwgMCwgMTA2NjU5LCAxMDY2NjQsIDEwNjY3MSwgCi0gICAgMTA2Njc5LCAxMDY2ODUsIDEwNjY5MSwgMTA2Njk3LCAwLCAwLCAxMDY3MDQsIDEwNjcxMCwgMTA2NzE1LCAxMDY3MjAsIAotICAgIDEwNjcyNSwgMTA2NzMwLCAxMDY3MzUsIDAsIDAsIDAsIDEwNjc0MCwgMTA2NzQ1LCAxMDY3NTAsIDEwNjc1NiwgMTA2NzYyLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ4MzAsIDEwNDgzNCwgMTA0ODM4LCAxMDQ4NDIsIAorICAgIDEwNDg0NiwgMTA0ODUwLCAxMDQ4NTMsIDEwNDg1NywgMTA0ODYwLCAxMDQ4NjQsIDEwNDg2NywgMTA0ODcxLCAxMDQ4NzUsIAorICAgIDEwNDg4MCwgMTA0ODg0LCAxMDQ4ODksIDEwNDg5MiwgMTA0ODk2LCAxMDQ4OTksIDEwNDkwMywgMTA0OTA2LCAxMDQ5MTAsIAorICAgIDEwNDkxNCwgMTA0OTE4LCAxMDQ5MjIsIDEwNDkyNiwgMTA0OTMwLCAxMDQ5MzQsIDEwNDkzOCwgMTA0OTQyLCAxMDQ5NDYsIAorICAgIDEwNDk1MCwgMTA0OTU0LCAxMDQ5NTgsIDEwNDk2MiwgMTA0OTY2LCAxMDQ5NzAsIDEwNDk3NCwgMTA0OTc4LCAxMDQ5ODEsIAorICAgIDEwNDk4NCwgMTA0OTg4LCAxMDQ5OTIsIDEwNDk5NiwgMTA0OTk5LCAxMDUwMDIsIDEwNTAwNiwgMTA1MDA5LCAxMDUwMTMsIAorICAgIDEwNTAxNywgMTA1MDIxLCAxMDUwMjUsIDEwNTAyOCwgMTA1MDMyLCAxMDUwMzgsIDEwNTA0NCwgMTA1MDUwLCAxMDUwNTUsIAorICAgIDEwNTA2MiwgMTA1MDY2LCAxMDUwNzEsIDEwNTA3NSwgMTA1MDgwLCAxMDUwODUsIDEwNTA5MSwgMTA1MDk2LCAxMDUxMDIsIAorICAgIDEwNTEwNiwgMTA1MTExLCAxMDUxMTUsIDEwNTEyMCwgMTA1MTIzLCAxMDUxMjYsIDEwNTEzMCwgMTA1MTM1LCAxMDUxNDEsIAorICAgIDEwNTE0NiwgMTA1MTUyLCAwLCAwLCAwLCAwLCAxMDUxNTcsIDEwNTE2MCwgMTA1MTYzLCAxMDUxNjYsIDEwNTE2OSwgCisgICAgMTA1MTcyLCAxMDUxNzUsIDEwNTE3OSwgMTA1MTgyLCAxMDUxODYsIDEwNTE5MCwgMTA1MTk0LCAxMDUxOTgsIDEwNTIwMiwgCisgICAgMTA1MjA2LCAxMDUyMTAsIDEwNTIxNCwgMTA1MjE4LCAxMDUyMjIsIDEwNTIyNywgMTA1MjMyLCAxMDUyMzYsIDEwNTIzOSwgCisgICAgMTA1MjQyLCAxMDUyNDUsIDEwNTI0OCwgMTA1MjUxLCAxMDUyNTQsIDEwNTI1OCwgMTA1MjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUyNjUsIDEwNTI2OSwgMTA1Mjc0LCAxMDUyNzksIDEwNTI4NCwgCisgICAgMTA1Mjg4LCAxMDUyOTMsIDEwNTI5NywgMTA1MzAyLCAxMDUzMDYsIDEwNTMxMSwgMTA1MzE1LCAxMDUzMjAsIDEwNTMyNCwgCisgICAgMTA1MzI5LCAxMDUzMzMsIDEwNTMzOCwgMTA1MzQzLCAxMDUzNDgsIDEwNTM1MywgMTA1MzU4LCAxMDUzNjMsIDEwNTM2OCwgCisgICAgMTA1MzczLCAxMDUzNzgsIDEwNTM4MywgMTA1Mzg4LCAxMDUzOTMsIDEwNTM5OCwgMTA1NDAzLCAxMDU0MDgsIDEwNTQxMywgCisgICAgMTA1NDE4LCAxMDU0MjMsIDEwNTQyOCwgMTA1NDMzLCAxMDU0MzcsIDEwNTQ0MSwgMTA1NDQ2LCAxMDU0NTEsIDEwNTQ1NiwgCisgICAgMTA1NDYwLCAxMDU0NjQsIDEwNTQ2OSwgMTA1NDczLCAxMDU0NzgsIDEwNTQ4MywgMTA1NDg4LCAxMDU0OTMsIDEwNTQ5NywgCisgICAgMTA1NTAzLCAxMDU1MDgsIDEwNTUxNCwgMTA1NTE5LCAxMDU1MjUsIDEwNTUzMCwgMTA1NTM2LCAxMDU1NDEsIDEwNTU0NywgCisgICAgMTA1NTUyLCAxMDU1NTcsIDEwNTU2MiwgMTA1NTY3LCAxMDU1NzEsIDEwNTU3NiwgMTA1NTgyLCAxMDU1ODYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTU5MSwgMTA1NTk4LCAxMDU2MDUsIDEwNTYxMiwgMTA1NjE5LCAKKyAgICAxMDU2MjYsIDEwNTYzMywgMTA1NjQwLCAxMDU2NDcsIDEwNTY1NCwgMTA1NjYxLCAxMDU2NjgsIDEwNTY3NSwgMTA1NjgyLCAKKyAgICAxMDU2ODksIDEwNTY5NiwgMTA1NzAzLCAxMDU3MTAsIDEwNTcxNywgMTA1NzI0LCAxMDU3MzEsIDEwNTczOCwgMTA1NzQ1LCAKKyAgICAxMDU3NTIsIDEwNTc1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1NzY2LCAxMDU3NzMsIDEwNTc3OSwgMTA1Nzg1LCAKKyAgICAxMDU3OTEsIDEwNTc5NywgMTA1ODAzLCAxMDU4MDksIDEwNTgxNiwgMTA1ODIyLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU4MjksIAorICAgIDEwNTgzNCwgMTA1ODM5LCAxMDU4NDQsIDEwNTg0OSwgMTA1ODUzLCAxMDU4NTcsIDEwNTg2MSwgMTA1ODY2LCAxMDU4NzEsIAorICAgIDEwNTg3NiwgMTA1ODgxLCAxMDU4ODYsIDEwNTg5MSwgMTA1ODk2LCAxMDU5MDEsIDEwNTkwNiwgMTA1OTExLCAxMDU5MTYsIAorICAgIDEwNTkyMSwgMTA1OTI2LCAxMDU5MzEsIDEwNTkzNiwgMTA1OTQxLCAxMDU5NDYsIDEwNTk1MSwgMTA1OTU2LCAxMDU5NjEsIAorICAgIDEwNTk2NiwgMTA1OTcxLCAxMDU5NzYsIDEwNTk4MSwgMTA1OTg2LCAxMDU5OTEsIDEwNTk5NiwgMTA2MDAxLCAxMDYwMDYsIAorICAgIDEwNjAxMSwgMTA2MDE2LCAxMDYwMjEsIDEwNjAyNiwgMTA2MDMxLCAxMDYwMzcsIDEwNjA0MiwgMTA2MDQ4LCAxMDYwNTMsIAorICAgIDEwNjA1OSwgMTA2MDY0LCAxMDYwNzAsIDEwNjA3NiwgMTA2MDgwLCAxMDYwODUsIDEwNjA4OSwgMCwgMTA2MDkzLCAKKyAgICAxMDYwOTgsIDEwNjEwMiwgMTA2MTA2LCAxMDYxMTAsIDEwNjExNCwgMTA2MTE4LCAxMDYxMjIsIDEwNjEyNywgMTA2MTMxLCAKKyAgICAxMDYxMzYsIDEwNjE0MSwgMTA2MTQ1LCAxMDYxNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNjE1NSwgMTA2MTU5LCAxMDYxNjMsIDEwNjE2NywgMTA2MTcxLCAxMDYxNzUsIDEwNjE3OSwgMTA2MTg0LCAxMDYxODksIAorICAgIDEwNjE5NCwgMTA2MTk5LCAxMDYyMDQsIDEwNjIwOSwgMTA2MjE0LCAxMDYyMTksIDEwNjIyNCwgMTA2MjI5LCAxMDYyMzQsIAorICAgIDEwNjIzOSwgMTA2MjQ0LCAxMDYyNDksIDEwNjI1NCwgMTA2MjU5LCAxMDYyNjQsIDEwNjI2OCwgMTA2MjcyLCAxMDYyNzcsIAorICAgIDEwNjI4MiwgMTA2Mjg3LCAxMDYyOTEsIDEwNjI5NiwgMTA2MzAwLCAxMDYzMDUsIDEwNjMxMCwgMTA2MzE0LCAxMDYzMTksIAorICAgIDEwNjMyNCwgMTA2MzI5LCAxMDYzMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNjMzOSwgMTA2MzQzLCAKKyAgICAxMDYzNDcsIDEwNjM1MSwgMTA2MzU0LCAxMDYzNTgsIDEwNjM2MSwgMTA2MzY1LCAxMDYzNjgsIDEwNjM3MiwgMTA2Mzc2LCAKKyAgICAxMDYzODEsIDEwNjM4NSwgMTA2MzkwLCAxMDYzOTMsIDEwNjM5NywgMTA2NDAwLCAxMDY0MDQsIDEwNjQwNywgMTA2NDExLCAKKyAgICAxMDY0MTUsIDEwNjQxOSwgMTA2NDIzLCAxMDY0MjcsIDEwNjQzMSwgMTA2NDM1LCAxMDY0MzksIDEwNjQ0MywgMTA2NDQ3LCAKKyAgICAxMDY0NTEsIDEwNjQ1NSwgMTA2NDU5LCAxMDY0NjMsIDEwNjQ2NywgMTA2NDcxLCAxMDY0NzUsIDEwNjQ3OSwgMTA2NDgyLCAKKyAgICAxMDY0ODUsIDEwNjQ4OSwgMTA2NDkzLCAxMDY0OTcsIDEwNjUwMCwgMTA2NTAzLCAxMDY1MDcsIDEwNjUxMCwgMTA2NTE0LCAKKyAgICAxMDY1MTgsIDEwNjUyMiwgMTA2NTI2LCAxMDY1MzAsIDEwNjUzMywgMTA2NTM4LCAxMDY1NDIsIDEwNjU0NywgMTA2NTUxLCAKKyAgICAxMDY1NTYsIDEwNjU2MSwgMTA2NTY3LCAxMDY1NzIsIDEwNjU3OCwgMTA2NTgyLCAxMDY1ODcsIDEwNjU5MSwgMTA2NTk2LCAKKyAgICAxMDY2MDAsIDEwNjYwNCwgMTA2NjA4LCAxMDY2MTIsIDEwNjYxNSwgMTA2NjE4LCAxMDY2MjIsIDEwNjYyNiwgMTA2NjI5LCAKKyAgICAxMDY2MzMsIDEwNjYzNywgMTA2NjQxLCAxMDY2NDgsIDAsIDAsIDEwNjY1MiwgMTA2NjU2LCAxMDY2NTksIDEwNjY2MiwgCisgICAgMTA2NjY1LCAxMDY2NjgsIDEwNjY3MSwgMTA2Njc0LCAxMDY2NzgsIDEwNjY4MSwgMTA2Njg1LCAxMDY2ODgsIDEwNjY5MiwgCisgICAgMTA2Njk1LCAxMDY2OTksIDEwNjcwNCwgMCwgMTA2NzA5LCAxMDY3MTQsIDEwNjcxOSwgMTA2NzI0LCAxMDY3MjksIAorICAgIDEwNjczNCwgMTA2NzM5LCAxMDY3NDUsIDEwNjc1MCwgMTA2NzU2LCAxMDY3NjIsIDEwNjc2OCwgMTA2Nzc0LCAxMDY3ODAsIAorICAgIDEwNjc4NiwgMTA2NzkyLCAxMDY3OTgsIDEwNjgwNCwgMTA2ODEwLCAxMDY4MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwNjgyNCwgMTA2ODI4LCAxMDY4MzMsIDEwNjgzNywgMTA2ODQxLCAxMDY4NDUsIDEwNjg1MCwgMTA2ODU0LCAKKyAgICAxMDY4NTksIDEwNjg2MywgMTA2ODY4LCAxMDY4NzMsIDEwNjg3OCwgMTA2ODgzLCAxMDY4ODgsIDEwNjg5MywgMTA2ODk4LCAKKyAgICAxMDY5MDMsIDAsIDEwNjkwOCwgMTA2OTEzLCAxMDY5MTgsIDEwNjkyMywgMTA2OTI4LCAxMDY5MzMsIDEwNjkzOCwgCisgICAgMTA2OTQzLCAxMDY5NDgsIDEwNjk1MywgMTA2OTU4LCAxMDY5NjMsIDEwNjk2NywgMTA2OTcxLCAxMDY5NzYsIDEwNjk4MSwgCisgICAgMTA2OTg2LCAxMDY5OTEsIDEwNjk5NSwgMTA2OTk5LCAxMDcwMDQsIDEwNzAwOCwgMTA3MDEzLCAxMDcwMTgsIDEwNzAyMiwgCisgICAgMTA3MDI3LCAxMDcwMzMsIDEwNzAzOCwgMTA3MDQ0LCAxMDcwNDksIDEwNzA1NCwgMTA3MDYwLCAxMDcwNjUsIDEwNzA3MSwgCisgICAgMTA3MDc2LCAxMDcwODEsIDEwNzA4NiwgMTA3MDkxLCAxMDcwOTUsIDEwNzEwMCwgMTA3MTA2LCAxMDcxMTEsIDEwNzExNywgCisgICAgMTA3MTIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcxMjcsIDEwNzEzMSwgCisgICAgMTA3MTM1LCAxMDcxMzksIDEwNzE0MywgMTA3MTQ3LCAxMDcxNTIsIDAsIDEwNzE1NywgMCwgMTA3MTYyLCAxMDcxNjcsIAorICAgIDEwNzE3MiwgMTA3MTc3LCAwLCAxMDcxODIsIDEwNzE4NywgMTA3MTkyLCAxMDcxOTcsIDEwNzIwMiwgMTA3MjA3LCAKKyAgICAxMDcyMTIsIDEwNzIxNywgMTA3MjIyLCAxMDcyMjcsIDEwNzIzMiwgMTA3MjM3LCAxMDcyNDEsIDEwNzI0NSwgMTA3MjUwLCAKKyAgICAwLCAxMDcyNTUsIDEwNzI2MCwgMTA3MjY0LCAxMDcyNjgsIDEwNzI3MywgMTA3Mjc3LCAxMDcyODIsIDEwNzI4NywgCisgICAgMTA3MjkxLCAxMDcyOTYsIDEwNzMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MzA2LCAxMDczMTAsIDEwNzMxNSwgMTA3MzE5LCAKKyAgICAxMDczMjQsIDEwNzMyOCwgMTA3MzMzLCAxMDczMzcsIDEwNzM0MiwgMTA3MzQ2LCAxMDczNTEsIDEwNzM1NSwgMTA3MzYwLCAKKyAgICAxMDczNjUsIDEwNzM3MCwgMTA3Mzc1LCAxMDczODAsIDEwNzM4NSwgMTA3MzkwLCAxMDczOTUsIDEwNzQwMCwgMTA3NDA1LCAKKyAgICAxMDc0MTAsIDEwNzQxNSwgMTA3NDIwLCAxMDc0MjUsIDEwNzQzMCwgMTA3NDM1LCAxMDc0NDAsIDEwNzQ0NSwgMTA3NDUwLCAKKyAgICAxMDc0NTUsIDEwNzQ2MCwgMTA3NDY1LCAxMDc0NjksIDEwNzQ3MywgMTA3NDc4LCAxMDc0ODMsIDEwNzQ4OCwgMTA3NDkzLCAKKyAgICAxMDc0OTcsIDEwNzUwMSwgMTA3NTA2LCAxMDc1MTAsIDEwNzUxNSwgMTA3NTIwLCAxMDc1MjUsIDEwNzUyOSwgMTA3NTM0LCAKKyAgICAxMDc1NDAsIDEwNzU0NSwgMTA3NTUxLCAxMDc1NTYsIDEwNzU2MiwgMTA3NTY3LCAxMDc1NzMsIDEwNzU3OCwgMTA3NTg0LCAKKyAgICAxMDc1ODksIDAsIDAsIDAsIDAsIDAsIDEwNzU5NCwgMTA3NTk5LCAxMDc2MDMsIDEwNzYwNywgMTA3NjExLCAxMDc2MTUsIAorICAgIDEwNzYxOSwgMTA3NjIzLCAxMDc2MjgsIDEwNzYzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3NjM3LCAxMDc2NDQsIDEwNzY0OSwgCisgICAgMTA3NjU0LCAwLCAxMDc2NTksIDEwNzY2MywgMTA3NjY4LCAxMDc2NzIsIDEwNzY3NywgMTA3NjgxLCAxMDc2ODYsIAorICAgIDEwNzY5MSwgMCwgMCwgMTA3Njk2LCAxMDc3MDEsIDAsIDAsIDEwNzcwNiwgMTA3NzExLCAxMDc3MTYsIDEwNzcyMCwgCisgICAgMTA3NzI1LCAxMDc3MzAsIDEwNzczNSwgMTA3NzQwLCAxMDc3NDUsIDEwNzc1MCwgMTA3NzU1LCAxMDc3NjAsIDEwNzc2NSwgCisgICAgMTA3NzcwLCAxMDc3NzUsIDEwNzc4MCwgMTA3Nzg1LCAxMDc3OTAsIDEwNzc5NSwgMTA3ODAwLCAxMDc4MDUsIDEwNzgxMCwgCisgICAgMCwgMTA3ODE0LCAxMDc4MTgsIDEwNzgyMywgMTA3ODI4LCAxMDc4MzMsIDEwNzgzNywgMTA3ODQxLCAwLCAxMDc4NDYsIAorICAgIDEwNzg1MCwgMCwgMTA3ODU1LCAxMDc4NjAsIDEwNzg2NSwgMTA3ODcwLCAxMDc4NzUsIDAsIDAsIDEwNzg3OSwgMTA3ODg0LCAKKyAgICAxMDc4ODksIDEwNzg5NSwgMTA3OTAwLCAxMDc5MDYsIDEwNzkxMSwgMTA3OTE3LCAxMDc5MjMsIDAsIDAsIDEwNzkzMCwgCisgICAgMTA3OTM2LCAwLCAwLCAxMDc5NDIsIDEwNzk0OCwgMTA3OTU0LCAwLCAwLCAxMDc5NTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNzk2MywgMCwgMCwgMCwgMCwgMCwgMTA3OTcwLCAxMDc5NzUsIDEwNzk4MiwgMTA3OTkwLCAxMDc5OTYsIDEwODAwMiwgCisgICAgMTA4MDA4LCAwLCAwLCAxMDgwMTUsIDEwODAyMSwgMTA4MDI2LCAxMDgwMzEsIDEwODAzNiwgMTA4MDQxLCAxMDgwNDYsIDAsIAorICAgIDAsIDAsIDEwODA1MSwgMTA4MDU2LCAxMDgwNjEsIDEwODA2NiwgMTA4MDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgwNzcsIDEwODA4MCwgMTA4MDg0LCAxMDgwODcsIDEwODA5MSwgCisgICAgMTA4MDk0LCAxMDgwOTgsIDEwODEwMiwgMTA4MTA3LCAxMDgxMTEsIDEwODExNiwgMTA4MTE5LCAxMDgxMjMsIDEwODEyNiwgCisgICAgMTA4MTMwLCAxMDgxMzMsIDEwODEzNywgMTA4MTQxLCAxMDgxNDUsIDEwODE0OSwgMTA4MTUzLCAxMDgxNTcsIDEwODE2MSwgCisgICAgMTA4MTY1LCAxMDgxNjksIDEwODE3MywgMTA4MTc3LCAxMDgxODEsIDEwODE4NSwgMTA4MTg5LCAxMDgxOTMsIDEwODE5NywgCisgICAgMTA4MjAxLCAxMDgyMDUsIDEwODIwOSwgMTA4MjEzLCAxMDgyMTYsIDEwODIyMCwgMTA4MjIzLCAxMDgyMjcsIDEwODIzMSwgCisgICAgMTA4MjM1LCAxMDgyMzgsIDEwODI0MiwgMTA4MjQ1LCAxMDgyNDksIDEwODI1MywgMTA4MjU2LCAxMDgyNjAsIDEwODI2NCwgCisgICAgMTA4MjY4LCAxMDgyNzIsIDEwODI3NiwgMTA4Mjc5LCAxMDgyODQsIDEwODI4OCwgMTA4MjkzLCAxMDgyOTcsIDEwODMwMiwgCisgICAgMTA4MzA3LCAxMDgzMTMsIDEwODMxOCwgMTA4MzI0LCAxMDgzMjgsIDEwODMzMywgMTA4MzM3LCAxMDgzNDIsIDEwODM0NiwgCisgICAgMTA4MzUwLCAxMDgzNTQsIDEwODM1OCwgMTA4MzYyLCAxMDgzNjYsIDEwODM3MSwgMTA4Mzc0LCAxMDgzNzcsIDEwODM4MCwgCisgICAgMTA4Mzg0LCAxMDgzODcsIDEwODM5MiwgMTA4Mzk2LCAxMDg0MDAsIDEwODQwMywgMTA4NDA2LCAxMDg0MDksIDEwODQxMiwgCisgICAgMTA4NDE1LCAxMDg0MTgsIDEwODQyMiwgMTA4NDI1LCAwLCAxMDg0MjksIDAsIDEwODQzMywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA4NDM3LCAxMDg0NDEsIDEwODQ0NSwgMTA4NDUwLCAxMDg0NTQsIDEwODQ1OSwgMTA4NDYzLCAKKyAgICAxMDg0NjgsIDEwODQ3MywgMTA4NDc5LCAxMDg0ODQsIDEwODQ5MCwgMTA4NDk0LCAxMDg0OTksIDEwODUwMywgMTA4NTA4LCAKKyAgICAxMDg1MTIsIDEwODUxNywgMTA4NTIyLCAxMDg1MjcsIDEwODUzMiwgMTA4NTM3LCAxMDg1NDIsIDEwODU0NywgMTA4NTUyLCAKKyAgICAxMDg1NTcsIDEwODU2MiwgMTA4NTY3LCAxMDg1NzIsIDEwODU3NywgMTA4NTgyLCAxMDg1ODcsIDEwODU5MiwgMTA4NTk3LCAKKyAgICAxMDg2MDIsIDEwODYwNiwgMTA4NjEwLCAxMDg2MTUsIDEwODYyMCwgMTA4NjI1LCAxMDg2MjksIDEwODYzMywgMTA4NjM4LCAKKyAgICAxMDg2NDIsIDEwODY0NywgMTA4NjUyLCAxMDg2NTcsIDEwODY2MiwgMTA4NjY2LCAxMDg2NzIsIDEwODY3NywgMTA4NjgzLCAKKyAgICAxMDg2ODgsIDEwODY5NCwgMTA4NzAwLCAxMDg3MDcsIDEwODcxMywgMTA4NzIwLCAxMDg3MjUsIDEwODczMiwgMTA4NzM4LCAKKyAgICAxMDg3NDMsIDEwODc1MCwgMTA4NzU2LCAxMDg3NjEsIDEwODc2NiwgMTA4NzcxLCAxMDg3NzYsIDEwODc4MSwgMTA4Nzg2LCAKKyAgICAxMDg3OTAsIDEwODc5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4Nzk5LCAxMDg4MDQsIDEwODgwOCwgMTA4ODEyLCAKKyAgICAxMDg4MTYsIDEwODgyMCwgMTA4ODI0LCAxMDg4MjgsIDEwODgzMywgMTA4ODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMDY3NjcsIDEwNjc3MSwgMTA2Nzc1LCAxMDY3ODAsIDEwNjc4NCwgMTA2Nzg5LCAxMDY3OTMsIDEwNjc5OCwgCi0gICAgMTA2ODAzLCAxMDY4MDksIDEwNjgxNCwgMTA2ODIwLCAxMDY4MjQsIDEwNjgyOSwgMTA2ODMzLCAxMDY4MzgsIDEwNjg0MiwgCi0gICAgMTA2ODQ3LCAxMDY4NTIsIDEwNjg1NywgMTA2ODYyLCAxMDY4NjcsIDEwNjg3MiwgMTA2ODc3LCAxMDY4ODIsIDEwNjg4NywgCi0gICAgMTA2ODkyLCAxMDY4OTcsIDEwNjkwMiwgMTA2OTA3LCAxMDY5MTIsIDEwNjkxNywgMTA2OTIyLCAxMDY5MjcsIDEwNjkzMiwgCi0gICAgMTA2OTM3LCAxMDY5NDEsIDEwNjk0NiwgMTA2OTUxLCAxMDY5NTYsIDEwNjk2MCwgMTA2OTY0LCAxMDY5NjksIDEwNjk3NCwgCi0gICAgMTA2OTc5LCAxMDY5ODQsIDEwNjk4OSwgMTA2OTk0LCAxMDY5OTgsIDEwNzAwNCwgMTA3MDA5LCAxMDcwMTUsIDEwNzAyMCwgCi0gICAgMTA3MDI2LCAxMDcwMzIsIDEwNzAzOSwgMTA3MDQ1LCAxMDcwNTIsIDEwNzA1NywgMTA3MDY0LCAxMDcwNzAsIDEwNzA3NSwgCi0gICAgMTA3MDgyLCAxMDcwODgsIDEwNzA5MywgMTA3MDk4LCAxMDcxMDMsIDEwNzEwOCwgMTA3MTEzLCAxMDcxMTgsIDEwNzEyMiwgCi0gICAgMTA3MTI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcxMzEsIDEwNzEzNiwgMTA3MTQwLCAxMDcxNDQsIDEwNzE0OCwgCi0gICAgMTA3MTUyLCAxMDcxNTYsIDEwNzE2MCwgMTA3MTY1LCAxMDcxNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODg0MiwgMTA4ODQ1LCAxMDg4NDksIDEwODg1MiwgCisgICAgMTA4ODU2LCAxMDg4NTksIDEwODg2MywgMTA4ODY3LCAxMDg4NzIsIDEwODg3NiwgMTA4ODgxLCAxMDg4ODQsIDEwODg4OCwgCisgICAgMTA4ODkxLCAxMDg4OTUsIDEwODg5OCwgMTA4OTAyLCAxMDg5MDYsIDEwODkxMCwgMTA4OTE0LCAxMDg5MTgsIDEwODkyMiwgCisgICAgMTA4OTI2LCAxMDg5MzAsIDEwODkzNCwgMTA4OTM4LCAxMDg5NDIsIDEwODk0NiwgMTA4OTUwLCAxMDg5NTQsIDEwODk1OCwgCisgICAgMTA4OTYyLCAxMDg5NjYsIDEwODk3MCwgMTA4OTczLCAxMDg5NzYsIDEwODk4MCwgMTA4OTg0LCAxMDg5ODgsIDEwODk5MSwgCisgICAgMTA4OTk0LCAxMDg5OTgsIDEwOTAwMSwgMTA5MDA1LCAxMDkwMDksIDEwOTAxMywgMTA5MDE3LCAxMDkwMjAsIDEwOTAyNSwgCisgICAgMTA5MDI5LCAxMDkwMzQsIDEwOTAzOCwgMTA5MDQzLCAxMDkwNDgsIDAsIDAsIDEwOTA1NCwgMTA5MDU4LCAxMDkwNjMsIAorICAgIDEwOTA2NywgMTA5MDcyLCAxMDkwNzYsIDEwOTA4MCwgMTA5MDg0LCAxMDkwODgsIDEwOTA5MiwgMTA5MDk2LCAxMDkwOTksIAorICAgIDEwOTEwMywgMTA5MTA4LCAxMDkxMTIsIDEwOTExNywgMTA5MTIyLCAxMDkxMjcsIDEwOTEzNCwgMTA5MTQ2LCAxMDkxNTgsIAorICAgIDEwOTE3MCwgMTA5MTgzLCAxMDkxOTcsIDEwOTIwNCwgMTA5MjE0LCAxMDkyMjIsIDEwOTIzMSwgMTA5MjQwLCAxMDkyNDksIAorICAgIDEwOTI1OSwgMTA5MjcwLCAxMDkyODIsIDEwOTI4OSwgMTA5Mjk2LCAxMDkzMDQsIDEwOTMwOSwgMTA5MzE1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcxNzQsIDEwNzE3NywgMTA3MTgxLCAxMDcxODQsIDEwNzE4OCwgCi0gICAgMTA3MTkxLCAxMDcxOTUsIDEwNzE5OSwgMTA3MjA0LCAxMDcyMDgsIDEwNzIxMywgMTA3MjE2LCAxMDcyMjAsIDEwNzIyMywgCi0gICAgMTA3MjI3LCAxMDcyMzAsIDEwNzIzNCwgMTA3MjM4LCAxMDcyNDIsIDEwNzI0NiwgMTA3MjUwLCAxMDcyNTQsIDEwNzI1OCwgCi0gICAgMTA3MjYyLCAxMDcyNjYsIDEwNzI3MCwgMTA3Mjc0LCAxMDcyNzgsIDEwNzI4MiwgMTA3Mjg2LCAxMDcyOTAsIDEwNzI5NCwgCi0gICAgMTA3Mjk4LCAxMDczMDIsIDEwNzMwNiwgMTA3MzA5LCAxMDczMTMsIDEwNzMxNywgMTA3MzIxLCAxMDczMjQsIDEwNzMyNywgCi0gICAgMTA3MzMxLCAxMDczMzUsIDEwNzMzOSwgMTA3MzQzLCAxMDczNDcsIDEwNzM1MSwgMTA3MzU0LCAxMDczNTksIDEwNzM2MywgCi0gICAgMTA3MzY4LCAxMDczNzIsIDEwNzM3NywgMTA3MzgyLCAwLCAwLCAxMDczODgsIDEwNzM5MiwgMTA3Mzk3LCAxMDc0MDEsIAotICAgIDEwNzQwNiwgMTA3NDEwLCAxMDc0MTQsIDEwNzQxOCwgMTA3NDIyLCAxMDc0MjYsIDEwNzQzMCwgMTA3NDMzLCAxMDc0MzcsIAotICAgIDEwNzQ0MiwgMTA3NDQ2LCAxMDc0NTEsIDEwNzQ1NiwgMTA3NDYxLCAxMDc0NjgsIDEwNzQ4MCwgMTA3NDkyLCAxMDc1MDQsIAotICAgIDEwNzUxNywgMTA3NTMxLCAxMDc1MzgsIDEwNzU0OCwgMTA3NTU2LCAxMDc1NjUsIDEwNzU3NCwgMTA3NTgzLCAxMDc1OTMsIAotICAgIDEwNzYwNCwgMTA3NjE2LCAxMDc2MjMsIDEwNzYzMCwgMTA3NjM4LCAxMDc2NDMsIDEwNzY0OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5MzIyLCAxMDkzMjYsIDEwOTMzMSwgMTA5MzM1LCAxMDkzNDAsIDEwOTM0NCwgCisgICAgMTA5MzQ5LCAxMDkzNTQsIDEwOTM2MCwgMTA5MzY1LCAxMDkzNzEsIDEwOTM3NSwgMTA5MzgwLCAxMDkzODQsIDEwOTM4OSwgCisgICAgMTA5MzkzLCAxMDkzOTgsIDEwOTQwMywgMTA5NDA4LCAxMDk0MTMsIDEwOTQxOCwgMTA5NDIzLCAxMDk0MjgsIDEwOTQzMywgCisgICAgMTA5NDM4LCAxMDk0NDMsIDEwOTQ0OCwgMTA5NDUzLCAxMDk0NTgsIDEwOTQ2MywgMTA5NDY4LCAxMDk0NzMsIDEwOTQ3OCwgCisgICAgMTA5NDgzLCAxMDk0ODcsIDEwOTQ5MSwgMTA5NDk2LCAxMDk1MDEsIDEwOTUwNiwgMTA5NTEwLCAxMDk1MTQsIDEwOTUxOSwgCisgICAgMTA5NTIzLCAxMDk1MjgsIDEwOTUzMywgMTA5NTM4LCAxMDk1NDMsIDEwOTU0NywgMTA5NTUyLCAxMDk1NTgsIDEwOTU2MywgCisgICAgMTA5NTY5LCAxMDk1NzQsIDEwOTU4MCwgMTA5NTg2LCAxMDk1OTMsIDEwOTU5OSwgMTA5NjA2LCAxMDk2MTEsIDEwOTYxNywgCisgICAgMTA5NjIyLCAxMDk2MjgsIDEwOTYzMywgMTA5NjM4LCAxMDk2NDMsIDEwOTY0OCwgMTA5NjUyLCAxMDk2NTcsIDEwOTY2MiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5NjY3LCAxMDk2NzIsIDEwOTY3NiwgMTA5NjgwLCAxMDk2ODQsIAorICAgIDEwOTY4OCwgMTA5NjkyLCAxMDk2OTYsIDEwOTcwMSwgMTA5NzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDk3MTAsIDEwOTcxNiwgCisgICAgMTA5NzIxLCAxMDk3MjgsIDEwOTczNiwgMTA5NzQzLCAxMDk3NTEsIDEwOTc2MCwgMTA5NzY1LCAxMDk3NzQsIDEwOTc3OSwgCisgICAgMTA5Nzg3LCAxMDk3OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwOTgwNywgMTA5ODExLCAxMDk4MTYsIDEwOTgyMCwgMTA5ODI1LCAxMDk4MjksIDEwOTgzNCwgMTA5ODM4LCAxMDk4NDMsIAorICAgIDEwOTg0NywgMTA5ODUyLCAxMDk4NTYsIDEwOTg2MSwgMTA5ODY2LCAxMDk4NzEsIDEwOTg3NiwgMTA5ODgxLCAxMDk4ODYsIAorICAgIDEwOTg5MSwgMTA5ODk2LCAxMDk5MDEsIDEwOTkwNiwgMTA5OTExLCAxMDk5MTYsIDEwOTkyMSwgMTA5OTI2LCAxMDk5MzEsIAorICAgIDEwOTkzNiwgMTA5OTQxLCAxMDk5NDYsIDEwOTk1MCwgMTA5OTU0LCAxMDk5NTksIDEwOTk2NCwgMTA5OTY5LCAxMDk5NzMsIAorICAgIDEwOTk3NywgMTA5OTgyLCAxMDk5ODYsIDEwOTk5MSwgMTA5OTk2LCAxMTAwMDEsIDExMDAwNSwgMTEwMDEwLCAxMTAwMTUsIAorICAgIDExMDAyMCwgMTEwMDI2LCAxMTAwMzEsIDExMDAzNywgMTEwMDQyLCAxMTAwNDgsIDExMDA1MywgMTEwMDU5LCAxMTAwNjQsIAorICAgIDExMDA3MCwgMTEwMDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTAwODAsIDExMDA4NSwgMTEwMDg5LCAxMTAwOTMsIAorICAgIDExMDA5NywgMTEwMTAxLCAxMTAxMDUsIDExMDEwOSwgMTEwMTE0LCAxMTAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwNzY1NiwgMTA3NjYwLCAxMDc2NjUsIDEwNzY2OSwgMTA3Njc0LCAxMDc2NzgsIDEwNzY4MywgCi0gICAgMTA3Njg4LCAxMDc2OTQsIDEwNzY5OSwgMTA3NzA1LCAxMDc3MDksIDEwNzcxNCwgMTA3NzE4LCAxMDc3MjMsIDEwNzcyNywgCi0gICAgMTA3NzMyLCAxMDc3MzcsIDEwNzc0MiwgMTA3NzQ3LCAxMDc3NTIsIDEwNzc1NywgMTA3NzYyLCAxMDc3NjcsIDEwNzc3MiwgCi0gICAgMTA3Nzc3LCAxMDc3ODIsIDEwNzc4NywgMTA3NzkyLCAxMDc3OTcsIDEwNzgwMiwgMTA3ODA3LCAxMDc4MTIsIDEwNzgxNywgCi0gICAgMTA3ODIyLCAxMDc4MjYsIDEwNzgzMSwgMTA3ODM2LCAxMDc4NDEsIDEwNzg0NSwgMTA3ODQ5LCAxMDc4NTQsIDEwNzg1OSwgCi0gICAgMTA3ODY0LCAxMDc4NjksIDEwNzg3NCwgMTA3ODc5LCAxMDc4ODMsIDEwNzg4OCwgMTA3ODk0LCAxMDc4OTksIDEwNzkwNSwgCi0gICAgMTA3OTEwLCAxMDc5MTYsIDEwNzkyMiwgMTA3OTI5LCAxMDc5MzUsIDEwNzk0MiwgMTA3OTQ3LCAxMDc5NTMsIDEwNzk1OCwgCi0gICAgMTA3OTY0LCAxMDc5NjksIDEwNzk3NCwgMTA3OTc5LCAxMDc5ODQsIDEwNzk4OCwgMTA3OTkzLCAxMDc5OTgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODAwMywgMTA4MDA4LCAxMDgwMTIsIDEwODAxNiwgMTA4MDIwLCAxMDgwMjQsIAotICAgIDEwODAyOCwgMTA4MDMyLCAxMDgwMzcsIDEwODA0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMTIzLCAKKyAgICAxMTAxMjcsIDExMDEzMiwgMTEwMTM3LCAxMTAxNDEsIDExMDE0NiwgMTEwMTUzLCAxMTAxNTcsIDExMDE2MiwgMTEwMTY3LCAKKyAgICAxMTAxNzEsIDExMDE3NiwgMTEwMTgxLCAxMTAxODYsIDExMDE5MSwgMTEwMTk1LCAxMTAyMDAsIDExMDIwNSwgMTEwMjA5LCAKKyAgICAxMTAyMTMsIDExMDIxOCwgMTEwMjIzLCAxMTAyMjgsIDExMDIzNSwgMTEwMjQwLCAxMTAyNDUsIDAsIDAsIDAsIDExMDI1MCwgCisgICAgMTEwMjU2LCAxMTAyNjMsIDExMDI3MiwgMTEwMjc3LCAxMTAyODMsIDExMDI4OCwgMTEwMjk0LCAxMTAyOTksIDExMDMwNSwgCisgICAgMTEwMzEwLCAxMTAzMTYsIDExMDMyMSwgMTEwMzI3LCAxMTAzMzMsIDAsIDAsIDAsIDAsIDExMDMzOCwgMTEwMzQzLCAKKyAgICAxMTAzNDcsIDExMDM1MSwgMTEwMzU1LCAxMTAzNTksIDExMDM2MywgMTEwMzY3LCAxMTAzNzIsIDExMDM3NiwgMTEwMzgxLCAKKyAgICAxMTAzODYsIDExMDM5MSwgMTEwMzk3LCAxMTA0MDIsIDExMDQwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA4MDQ2LCAxMDgwNTAsIDEwODA1NSwgMTA4MDU5LCAxMDgwNjQsIDEwODA2OCwgMTA4MDczLCAxMDgwNzcsIDEwODA4MiwgCi0gICAgMTA4MDg2LCAxMDgwOTEsIDEwODA5NSwgMTA4MTAwLCAxMDgxMDUsIDEwODExMCwgMTA4MTE1LCAxMDgxMjAsIDEwODEyNSwgCi0gICAgMTA4MTMwLCAxMDgxMzUsIDEwODE0MCwgMTA4MTQ1LCAxMDgxNTAsIDEwODE1NSwgMTA4MTYwLCAxMDgxNjUsIDEwODE3MCwgCi0gICAgMTA4MTc1LCAxMDgxODAsIDEwODE4NSwgMTA4MTkwLCAxMDgxOTQsIDEwODE5OSwgMTA4MjA0LCAxMDgyMDksIDEwODIxMywgCi0gICAgMTA4MjE3LCAxMDgyMjIsIDEwODIyNywgMTA4MjMyLCAxMDgyMzcsIDEwODI0MiwgMTA4MjQ2LCAxMDgyNTEsIDEwODI1NiwgCi0gICAgMTA4MjYxLCAxMDgyNjcsIDEwODI3MiwgMTA4Mjc4LCAxMDgyODMsIDEwODI4OSwgMTA4Mjk0LCAxMDgzMDAsIDEwODMwNSwgCi0gICAgMTA4MzExLCAxMDgzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODMyMSwgMTA4MzI2LCAxMDgzMzAsIDEwODMzNCwgCi0gICAgMTA4MzM4LCAxMDgzNDIsIDEwODM0NiwgMTA4MzUwLCAxMDgzNTUsIDEwODM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MzY0LCAKLSAgICAxMDgzNjgsIDEwODM3MywgMTA4Mzc4LCAxMDgzODMsIDEwODM4OCwgMTA4Mzk1LCAxMDgzOTksIDEwODQwNCwgMTA4NDA5LCAKLSAgICAxMDg0MTMsIDEwODQxOCwgMTA4NDIzLCAxMDg0MjgsIDEwODQzMywgMTA4NDM4LCAxMDg0NDMsIDEwODQ0OCwgMTA4NDUyLCAKLSAgICAxMDg0NTYsIDEwODQ2MSwgMTA4NDY2LCAxMDg0NzEsIDEwODQ3OCwgMTA4NDgzLCAxMDg0ODgsIDAsIDAsIDAsIDEwODQ5MywgCi0gICAgMTA4NTAwLCAxMDg1MDcsIDEwODUxNiwgMTA4NTIxLCAxMDg1MjcsIDEwODUzMiwgMTA4NTM4LCAxMDg1NDMsIDEwODU0OSwgCi0gICAgMTA4NTU0LCAxMDg1NjAsIDEwODU2NSwgMTA4NTcxLCAxMDg1NzcsIDAsIDAsIDAsIDAsIDEwODU4MiwgMTA4NTg3LCAKLSAgICAxMDg1OTEsIDEwODU5NSwgMTA4NTk5LCAxMDg2MDMsIDEwODYwNywgMTA4NjExLCAxMDg2MTYsIDEwODYyMCwgMTA4NjI1LCAKLSAgICAxMDg2MzAsIDEwODYzNSwgMTA4NjQxLCAxMDg2NDYsIDEwODY1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xODkyNCwxNzUgKzIwMDU5LDE5NSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDExMDQxMiwgMTEwNDIwLCAxMTA0MjcsIDExMDQzNSwgMTEwNDQzLCAxMTA0NTAsIDExMDQ1OCwgCisgICAgMTEwNDY2LCAxMTA0NzQsIDExMDQ4MSwgMTEwNDg4LCAxMTA0OTYsIDExMDUwNCwgMTEwNTEyLCAxMTA1MjAsIDExMDUyOCwgCisgICAgMTEwNTM2LCAxMTA1NDQsIDExMDU1MiwgMTEwNTYwLCAxMTA1NjgsIDExMDU3NiwgMTEwNTg0LCAxMTA1OTIsIDExMDYwMCwgCisgICAgMTEwNjA4LCAxMTA2MTYsIDExMDYyNCwgMTEwNjMyLCAxMTA2NDAsIDExMDY0OCwgMTEwNjU2LCAxMTA2NjQsIDExMDY3MiwgCisgICAgMTEwNjc5LCAxMTA2ODcsIDExMDY5NSwgMTEwNzAyLCAxMTA3MTAsIDExMDcxOCwgMTEwNzI2LCAxMTA3MzMsIDExMDc0MCwgCisgICAgMTEwNzQ4LCAxMTA3NTYsIDExMDc2NCwgMTEwNzcyLCAxMTA3ODAsIDExMDc4OCwgMTEwNzk2LCAxMTA4MDQsIDExMDgxMiwgCisgICAgMTEwODIwLCAxMTA4MjgsIDExMDgzNiwgMTEwODQ0LCAxMTA4NTIsIDExMDg2MCwgMTEwODY4LCAxMTA4NzYsIDExMDg4NCwgCisgICAgMTEwODkyLCAxMTA5MDAsIDExMDkwOCwgMTEwOTE2LCAxMTA5MjMsIDExMDkyOSwgMTEwOTM1LCAxMTA5NDEsIDExMDk0NywgCisgICAgMTEwOTUzLCAxMTA5NTksIDExMDk2NiwgMTEwOTcyLCAxMTA5NzksIDExMDk4NiwgMTEwOTkzLCAxMTEwMDAsIDExMTAwNywgCisgICAgMTExMDE0LCAxMTEwMjEsIDExMTAyOCwgMTExMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTEwNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEwODY1NiwgMTA4NjY0LCAxMDg2NzEsIDEwODY3OSwgMTA4Njg3LCAxMDg2OTQsIDEwODcwMiwgCi0gICAgMTA4NzEwLCAxMDg3MTgsIDEwODcyNSwgMTA4NzMyLCAxMDg3NDAsIDEwODc0OCwgMTA4NzU2LCAxMDg3NjQsIDEwODc3MiwgCi0gICAgMTA4NzgwLCAxMDg3ODgsIDEwODc5NiwgMTA4ODA0LCAxMDg4MTIsIDEwODgyMCwgMTA4ODI4LCAxMDg4MzYsIDEwODg0NCwgCi0gICAgMTA4ODUyLCAxMDg4NjAsIDEwODg2OCwgMTA4ODc2LCAxMDg4ODQsIDEwODg5MiwgMTA4OTAwLCAxMDg5MDgsIDEwODkxNiwgCi0gICAgMTA4OTIzLCAxMDg5MzEsIDEwODkzOSwgMTA4OTQ2LCAxMDg5NTQsIDEwODk2MiwgMTA4OTcwLCAxMDg5NzcsIDEwODk4NCwgCi0gICAgMTA4OTkyLCAxMDkwMDAsIDEwOTAwOCwgMTA5MDE2LCAxMDkwMjQsIDEwOTAzMiwgMTA5MDQwLCAxMDkwNDgsIDEwOTA1NiwgCi0gICAgMTA5MDY0LCAxMDkwNzIsIDEwOTA4MCwgMTA5MDg4LCAxMDkwOTYsIDEwOTEwNCwgMTA5MTEyLCAxMDkxMjAsIDEwOTEyOCwgCi0gICAgMTA5MTM2LCAxMDkxNDQsIDEwOTE1MiwgMTA5MTYwLCAxMDkxNjcsIDEwOTE3MywgMTA5MTc5LCAxMDkxODUsIDEwOTE5MSwgCi0gICAgMTA5MTk3LCAxMDkyMDMsIDEwOTIxMCwgMTA5MjE2LCAxMDkyMjMsIDEwOTIzMCwgMTA5MjM3LCAxMDkyNDQsIDEwOTI1MSwgCi0gICAgMTA5MjU4LCAxMDkyNjUsIDEwOTI3MiwgMTA5Mjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDkyODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDExMTA0OCwgMTExMDU2LCAxMTEwNjQsIDExMTA3MiwgMTExMDgwLCAxMTEwODksIDExMTA5OCwgMTExMTA3LCAKKyAgICAxMTExMTYsIDExMTEyNCwgMTExMTMzLCAxMTExNDIsIDExMTE1MSwgMTExMTYwLCAxMTExNjksIDExMTE3OCwgMTExMTg3LCAKKyAgICAxMTExOTUsIDExMTIwNCwgMTExMjEzLCAxMTEyMjIsIDExMTIzMSwgMTExMjM5LCAxMTEyNDcsIDExMTI1NSwgMTExMjYzLCAKKyAgICAxMTEyNzEsIDExMTI4MCwgMTExMjg5LCAxMTEyOTksIDExMTMwOSwgMTExMzE5LCAxMTEzMjksIDExMTMzOSwgMTExMzQ4LCAKKyAgICAxMTEzNTgsIDExMTM2OCwgMTExMzc4LCAxMTEzODksIDExMTM5OSwgMTExNDExLCAxMTE0MjMsIDExMTQzNCwgMTExNDQ4LCAKKyAgICAxMTE0NTksIDExMTQ2OSwgMTExNDgxLCAxMTE0OTIsIDExMTUwMiwgMTExNTE0LCAxMTE1MjYsIDExMTUzNywgMTExNTQ4LCAKKyAgICAxMTE1NTgsIDExMTU2OCwgMTExNTgwLCAxMTE1OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTYwMywgMTExNjA2LCAKKyAgICAxMTE2MTAsIDExMTYxMywgMTExNjE3LCAxMTE2MjAsIDExMTYyNCwgMTExNjI4LCAxMTE2MzMsIDAsIDExMTYzNywgCisgICAgMTExNjQwLCAxMTE2NDQsIDExMTY0NywgMTExNjUxLCAxMTE2NTQsIDExMTY1OCwgMTExNjYyLCAxMTE2NjYsIDExMTY3MCwgCisgICAgMTExNjc0LCAxMTE2NzgsIDExMTY4MiwgMTExNjg2LCAxMTE2OTAsIDExMTY5NCwgMTExNjk4LCAxMTE3MDIsIDExMTcwNiwgCisgICAgMTExNzEwLCAxMTE3MTQsIDExMTcxOCwgMTExNzIyLCAxMTE3MjYsIDExMTcyOSwgMTExNzMyLCAxMTE3MzYsIDExMTc0MCwgCisgICAgMTExNzQ0LCAxMTE3NDcsIDExMTc1MCwgMTExNzU0LCAxMTE3NTcsIDExMTc2MSwgMTExNzY1LCAxMTE3NjksIDExMTc3MywgCisgICAgMTExNzc2LCAxMTE3ODEsIDExMTc4NSwgMTExNzkwLCAxMTE3OTQsIDExMTc5OSwgMTExODA0LCAxMTE4MTAsIDAsIAorICAgIDExMTgxNSwgMTExODE5LCAxMTE4MjQsIDExMTgyOCwgMTExODMzLCAxMTE4MzcsIDExMTg0MSwgMTExODQ1LCAxMTE4NDksIAorICAgIDExMTg1MywgMTExODU2LCAxMTE4NjAsIDExMTg2NSwgMTExODcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTE4NzUsIDExMTg3OSwgMTExODgyLCAxMTE4ODUsIDExMTg4OCwgMTExODkxLCAxMTE4OTQsIDExMTg5NywgMTExOTAxLCAKKyAgICAxMTE5MDQsIDExMTkwOCwgMTExOTExLCAxMTE5MTQsIDExMTkxNywgMTExOTIwLCAxMTE5MjMsIDExMTkyNiwgMTExOTMwLCAKKyAgICAxMTE5MzMsIDExMTkzNywgMTExOTQxLCAxMTE5NDUsIDExMTk0OSwgMTExOTUzLCAxMTE5NTcsIDExMTk2MSwgMTExOTY1LCAKKyAgICAxMTE5NjksIDExMTk3MywgMCwgMCwgMCwgMTExOTc5LCAxMTE5ODQsIDExMTk4OSwgMTExOTkzLCAxMTE5OTgsIDExMjAwMywgCisgICAgMTEyMDA4LCAxMTIwMTMsIDExMjAxOCwgMTEyMDIzLCAxMTIwMjgsIDExMjAzMywgMTEyMDM4LCAxMTIwNDMsIDExMjA0NywgCisgICAgMTEyMDUxLCAxMTIwNTYsIDExMjA2MSwgMTEyMDY1LCAxMTIwNzAsIDExMjA3NSwgMTEyMDgwLCAxMTIwODUsIDExMjA5MCwgCisgICAgMTEyMDk1LCAxMTIxMDAsIDExMjEwNCwgMTEyMTA5LCAxMTIxMTMsIDExMjExOCwgMTEyMTIzLCAxMTIxMjcsIDAsIDAsIAorICAgIDExMjEzMSwgMTEyMTM3LCAxMTIxNDQsIDExMjE1MSwgMTEyMTU4LCAxMTIxNjUsIDExMjE3MiwgMTEyMTc5LCAxMTIxODYsIAorICAgIDExMjE5MywgMTEyMjAwLCAxMTIyMDcsIDExMjIxMywgMTEyMjE5LCAxMTIyMjYsIDExMjIzMywgMTEyMjM5LCAxMTIyNDYsIAorICAgIDExMjI1MywgMTEyMjYwLCAxMTIyNjcsIDExMjI3NCwgMCwgMTEyMjgxLCAxMTIyODcsIDExMjI5NCwgMTEyMzAwLCAKKyAgICAxMTIzMDcsIDExMjMxNCwgMTEyMzIwLCAxMTIzMjYsIDExMjMzMiwgMTEyMzM3LCAxMTIzNDIsIDExMjM0NywgMTEyMzUyLCAKKyAgICAxMTIzNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEwOTI5MiwgMTA5MzAwLCAxMDkzMDgsIDEwOTMxNywgMTA5MzI1LCAxMDkzMzQsIDEwOTM0MywgMTA5MzUyLCAKLSAgICAxMDkzNjEsIDEwOTM2OSwgMTA5Mzc4LCAxMDkzODcsIDEwOTM5NiwgMTA5NDA1LCAxMDk0MTQsIDEwOTQyMywgMTA5NDMyLCAKLSAgICAxMDk0NDEsIDEwOTQ1MCwgMTA5NDU5LCAxMDk0NjgsIDEwOTQ3NywgMTA5NDg1LCAxMDk0OTMsIDEwOTUwMSwgMTA5NTA5LCAKLSAgICAxMDk1MTcsIDEwOTUyNiwgMTA5NTM1LCAxMDk1NDUsIDEwOTU1NSwgMTA5NTY1LCAxMDk1NzUsIDEwOTU4NSwgMTA5NTk0LCAKLSAgICAxMDk2MDQsIDEwOTYxNCwgMTA5NjI0LCAxMDk2MzUsIDEwOTY0NSwgMTA5NjU3LCAxMDk2NjksIDEwOTY4MCwgMTA5Njk0LCAKLSAgICAxMDk3MDUsIDEwOTcxNSwgMTA5NzI3LCAxMDk3MzgsIDEwOTc0OCwgMTA5NzYwLCAxMDk3NzIsIDEwOTc4MywgMTA5Nzk0LCAKLSAgICAxMDk4MDQsIDEwOTgxNCwgMTA5ODI2LCAxMDk4MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTg0OSwgMTA5ODUyLCAKLSAgICAxMDk4NTcsIDEwOTg2MywgMTA5ODcxLCAxMDk4NzYsIDEwOTg4MiwgMTA5ODkwLCAxMDk4OTYsIDEwOTkwMiwgMTA5OTA2LCAKLSAgICAxMDk5MTAsIDEwOTkxNywgMTA5OTI2LCAxMDk5MzMsIDEwOTk0MiwgMTA5OTQ4LCAxMDk5NTcsIDEwOTk2NCwgMTA5OTcxLCAKLSAgICAxMDk5NzgsIDEwOTk4OCwgMTA5OTk0LCAxMDk5OTgsIDExMDAwNSwgMTEwMDE0LCAxMTAwMjQsIDExMDAzMSwgMTEwMDM4LCAKLSAgICAxMTAwNDIsIDExMDA0NiwgMTEwMDUzLCAxMTAwNjMsIDExMDA2NywgMTEwMDc0LCAxMTAwODEsIDExMDA4OCwgMTEwMDk0LCAKLSAgICAxMTAxMDEsIDExMDEwOCwgMTEwMTE1LCAxMTAxMjIsIDExMDEyNiwgMTEwMTMwLCAxMTAxMzQsIDExMDE0MSwgMTEwMTQ1LCAKLSAgICAxMTAxNTIsIDExMDE1OSwgMTEwMTczLCAxMTAxODIsIDExMDE4NiwgMTEwMTkwLCAxMTAxOTQsIDExMDIwMSwgMTEwMjA1LCAKLSAgICAxMTAyMDksIDExMDIxMywgMTEwMjIxLCAxMTAyMjksIDExMDI0OCwgMTEwMjU4LCAxMTAyNzgsIDExMDI4MiwgMTEwMjg2LCAKLSAgICAxMTAyOTAsIDExMDI5NCwgMTEwMjk4LCAxMTAzMDIsIDExMDMwNiwgMTEwMzEzLCAxMTAzMTcsIDExMDMyMCwgMTEwMzI0LCAKLSAgICAxMTAzMjgsIDExMDMzNCwgMTEwMzQxLCAxMTAzNTAsIDExMDM1NCwgMTEwMzYzLCAxMTAzNzIsIDExMDM4MCwgMTEwMzg0LCAKLSAgICAxMTAzOTEsIDExMDM5NSwgMTEwMzk5LCAxMTA0MDMsIDExMDQwNywgMTEwNDE4LCAxMTA0MjcsIDExMDQzNiwgMTEwNDQ1LCAKLSAgICAxMTA0NTQsIDExMDQ2NiwgMTEwNDc1LCAxMTA0ODQsIDExMDQ5MywgMTEwNTAxLCAxMTA1MTAsIDExMDUyMiwgMTEwNTMxLCAKLSAgICAxMTA1NDAsIDExMDU0OSwgMTEwNTYxLCAxMTA1NzAsIDExMDU3OSwgMTEwNTkxLCAxMTA2MDAsIDExMDYwOSwgMTEwNjIxLCAKLSAgICAxMTA2MzAsIDExMDYzNCwgMTEwNjM4LCAxMTA2NDIsIDExMDY0NiwgMTEwNjUwLCAxMTA2NTQsIDExMDY1OCwgMTEwNjY1LCAKLSAgICAxMTA2NjksIDExMDY3MywgMTEwNjg0LCAxMTA2ODgsIDExMDY5MiwgMTEwNjk5LCAxMTA3MDUsIDExMDcxMSwgMTEwNzE1LCAKLSAgICAxMTA3MjIsIDExMDcyNiwgMTEwNzMwLCAxMTA3MzQsIDExMDczOCwgMTEwNzQyLCAxMTA3NDYsIDExMDc1MiwgMTEwNzYwLCAKLSAgICAxMTA3NjQsIDExMDc2OCwgMTEwNzcxLCAxMTA3NzcsIDExMDc4NywgMTEwNzkxLCAxMTA4MDMsIDExMDgxMCwgMTEwODE3LCAKLSAgICAxMTA4MjQsIDExMDgzMSwgMTEwODM3LCAxMTA4NDEsIDExMDg0NSwgMTEwODQ5LCAxMTA4NTMsIDExMDg2MCwgMTEwODY5LCAKLSAgICAxMTA4NzYsIDExMDg4NCwgMTEwODkyLCAxMTA4OTgsIDExMDkwMiwgMTEwOTA2LCAxMTA5MTAsIDExMDkxNCwgMTEwOTIwLCAKLSAgICAxMTA5MjksIDExMDk0MSwgMTEwOTQ4LCAxMTA5NTUsIDExMDk2NCwgMTEwOTc1LCAxMTA5ODEsIDExMDk5MCwgMTEwOTk5LCAKLSAgICAxMTEwMDYsIDExMTAxNSwgMTExMDIyLCAxMTEwMjksIDExMTAzOSwgMTExMDQ2LCAxMTEwNTMsIDExMTA2MCwgMTExMDY3LCAKLSAgICAxMTEwNzEsIDExMTA3NywgMTExMDgxLCAxMTEwOTIsIDExMTEwMCwgMTExMTA5LCAxMTExMjEsIDExMTEyOCwgMTExMTM1LCAKLSAgICAxMTExNDUsIDExMTE1MiwgMTExMTYyLCAxMTExNjksIDExMTE3OSwgMTExMTg2LCAxMTExOTMsIDExMTIwMywgMTExMjEwLCAKLSAgICAxMTEyMTcsIDExMTIyNywgMTExMjM0LCAxMTEyNDYsIDExMTI1NSwgMTExMjYyLCAxMTEyNjksIDExMTI3NiwgMTExMjg1LCAKLSAgICAxMTEyOTUsIDExMTMwOCwgMTExMzE1LCAxMTEzMjUsIDExMTMzNSwgMTExMzQyLCAxMTEzNTEsIDExMTM2NCwgMTExMzcxLCAKLSAgICAxMTEzNzgsIDExMTM4NSwgMTExMzk1LCAxMTE0MDUsIDExMTQxMiwgMTExNDIyLCAxMTE0MjksIDExMTQzNiwgMTExNDQ2LCAKLSAgICAxMTE0NTIsIDExMTQ1OSwgMTExNDY2LCAxMTE0NzMsIDExMTQ4MywgMTExNDkwLCAxMTE0OTcsIDExMTUwNCwgMTExNTEwLCAKLSAgICAxMTE1MTcsIDExMTUyNywgMTExNTM0LCAxMTE1MzgsIDExMTU0NiwgMTExNTUwLCAxMTE1NjIsIDExMTU2NiwgMTExNTgwLCAKLSAgICAxMTE1ODQsIDExMTU4OCwgMTExNTkyLCAxMTE1OTYsIDExMTYwMiwgMTExNjA5LCAxMTE2MTcsIDExMTYyMSwgMTExNjI1LCAKLSAgICAxMTE2MjksIDExMTYzMywgMTExNjQwLCAxMTE2NDQsIDExMTY1MCwgMTExNjU2LCAxMTE2NjQsIDExMTY2OCwgMTExNjc1LCAKLSAgICAxMTE2ODMsIDExMTY4NywgMTExNjkxLCAxMTE2OTcsIDExMTcwMSwgMTExNzEwLCAxMTE3MTksIDExMTcyNiwgMTExNzM2LCAKLSAgICAxMTE3NDIsIDExMTc0NiwgMTExNzUwLCAxMTE3NTgsIDExMTc2NSwgMTExNzcyLCAxMTE3NzgsIDExMTc4MiwgMTExNzkwLCAKLSAgICAxMTE3OTQsIDExMTgwMSwgMTExODEzLCAxMTE4MjAsIDExMTgzMCwgMTExODM2LCAxMTE4NDAsIDExMTg0OSwgMTExODU2LCAKLSAgICAxMTE4NjUsIDExMTg2OSwgMTExODczLCAxMTE4ODAsIDExMTg4NCwgMTExODg4LCAxMTE4OTIsIDExMTg5NiwgMTExODk5LCAKLSAgICAxMTE5MDUsIDExMTkxMSwgMTExOTE1LCAxMTE5MTksIDExMTkyNiwgMTExOTMzLCAxMTE5NDAsIDExMTk0NywgMTExOTU0LCAKLSAgICAxMTE5NjEsIDExMTk2OCwgMTExOTc1LCAxMTE5ODEsIDExMTk4NSwgMTExOTg5LCAxMTE5OTYsIDExMjAwMywgMTEyMDEwLCAKLSAgICAxMTIwMTcsIDExMjAyNCwgMTEyMDI4LCAxMTIwMzEsIDExMjAzNiwgMTEyMDQwLCAxMTIwNDQsIDExMjA1MywgMTEyMDYyLCAKLSAgICAxMTIwNjYsIDExMjA3MCwgMTEyMDc2LCAxMTIwODIsIDExMjA5OSwgMTEyMTA1LCAxMTIxMDksIDExMjExOCwgMTEyMTIyLCAKLSAgICAxMTIxMjYsIDExMjEzMywgMTEyMTQxLCAxMTIxNDksIDExMjE1NSwgMTEyMTU5LCAxMTIxNjMsIDExMjE2NywgMTEyMTcxLCAKLSAgICAxMTIxNzQsIDExMjE4MCwgMTEyMTg3LCAxMTIxOTcsIDExMjIwNCwgMTEyMjExLCAxMTIyMTgsIDExMjIyNCwgMTEyMjMxLCAKLSAgICAxMTIyMzgsIDExMjI0NSwgMTEyMjUyLCAxMTIyNTksIDExMjI2OCwgMTEyMjc1LCAxMTIyODcsIDExMjI5NCwgMTEyMzAxLCAKLSAgICAxMTIzMTEsIDExMjMyMiwgMTEyMzI5LCAxMTIzMzYsIDExMjM0MywgMTEyMzUwLCAxMTIzNTcsIDExMjM2NCwgMTEyMzcxLCAKLSAgICAxMTIzNzgsIDExMjM4NSwgMTEyMzkyLCAxMTI0MDIsIDExMjQxMiwgMTEyNDIyLCAxMTI0MjksIDExMjQzOSwgMTEyNDQ2LCAKLSAgICAxMTI0NTMsIDExMjQ2MCwgMTEyNDY3LCAxMTI0NzQsIDExMjQ4MSwgMTEyNDg4LCAxMTI0OTUsIDExMjUwMiwgMTEyNTA5LCAKLSAgICAxMTI1MTYsIDExMjUyMywgMTEyNTMwLCAxMTI1MzYsIDExMjU0MywgMTEyNTUwLCAxMTI1NTksIDExMjU2NiwgMTEyNTczLCAKLSAgICAxMTI1NzcsIDExMjU4NSwgMTEyNTg5LCAxMTI1OTMsIDExMjU5NywgMTEyNjAxLCAxMTI2MDUsIDExMjYxMiwgMTEyNjE2LCAKLSAgICAxMTI2MjUsIDExMjYyOSwgMTEyNjM2LCAxMTI2NDQsIDExMjY0OCwgMTEyNjUyLCAxMTI2NTYsIDExMjY2OSwgMTEyNjg1LCAKLSAgICAxMTI2ODksIDExMjY5MywgMTEyNzAwLCAxMTI3MDYsIDExMjcxMywgMTEyNzE3LCAxMTI3MjEsIDExMjcyNSwgMTEyNzI5LCAKLSAgICAxMTI3MzMsIDExMjc0MCwgMTEyNzQ0LCAxMTI3NjIsIDExMjc2NiwgMTEyNzcwLCAxMTI3NzcsIDExMjc4MSwgMTEyNzg1LCAKLSAgICAxMTI3OTEsIDExMjc5NSwgMTEyNzk5LCAxMTI4MDcsIDExMjgxMSwgMTEyODE1LCAxMTI4MTksIDExMjgyMywgMTEyODI5LCAKLSAgICAxMTI4NDAsIDExMjg0OSwgMTEyODU4LCAxMTI4NjUsIDExMjg3MiwgMTEyODgzLCAxMTI4OTAsIDExMjg5NywgMTEyOTA0LCAKLSAgICAxMTI5MTEsIDExMjkxOCwgMTEyOTI1LCAxMTI5MzIsIDExMjk0MiwgMTEyOTQ4LCAxMTI5NTUsIDExMjk2NSwgMTEyOTc0LCAKLSAgICAxMTI5ODEsIDExMjk5MCwgMTEzMDAwLCAxMTMwMDcsIDExMzAxNCwgMTEzMDIxLCAxMTMwMjgsIDExMzA0MCwgMTEzMDQ3LCAKLSAgICAxMTMwNTQsIDExMzA2MSwgMTEzMDY4LCAxMTMwNzUsIDExMzA4NSwgMTEzMDkyLCAxMTMwOTksIDExMzEwOSwgMTEzMTIyLCAKLSAgICAxMTMxMzQsIDExMzE0MSwgMTEzMTUxLCAxMTMxNTgsIDExMzE2NSwgMTEzMTcyLCAxMTMxODcsIDExMzE5MywgMTEzMjAxLCAKLSAgICAxMTMyMTEsIDExMzIyMSwgMTEzMjI4LCAxMTMyMzUsIDExMzI0MSwgMTEzMjQ1LCAxMTMyNTIsIDExMzI2MiwgMTEzMjY4LCAKLSAgICAxMTMyODEsIDExMzI4NSwgMTEzMjg5LCAxMTMyOTYsIDExMzMwMCwgMTEzMzA3LCAxMTMzMTcsIDExMzMyMSwgMTEzMzI1LCAKLSAgICAxMTMzMjksIDExMzMzMywgMTEzMzM3LCAxMTMzNDQsIDExMzM0OCwgMTEzMzU1LCAxMTMzNjIsIDExMzM2OSwgMTEzMzc4LCAKLSAgICAxMTMzODcsIDExMzM5NywgMTEzNDA0LCAxMTM0MTEsIDExMzQxOCwgMTEzNDI4LCAxMTM0MzUsIDExMzQ0NSwgMTEzNDUyLCAKLSAgICAxMTM0NjIsIDExMzQ2OSwgMTEzNDc2LCAxMTM0ODYsIDExMzQ5NiwgMTEzNTAzLCAxMTM1MDksIDExMzUxNywgMTEzNTI1LCAKLSAgICAxMTM1MzEsIDExMzUzNywgMTEzNTQxLCAxMTM1NDUsIDExMzU1MiwgMTEzNTYwLCAxMTM1NjYsIDExMzU3MCwgMTEzNTc0LCAKLSAgICAxMTM1NzgsIDExMzU4NSwgMTEzNTk3LCAxMTM2MDAsIDExMzYwNywgMTEzNjEzLCAxMTM2MTcsIDExMzYyMSwgMTEzNjI1LCAKLSAgICAxMTM2MjksIDExMzYzMywgMTEzNjM3LCAxMTM2NDEsIDExMzY0NSwgMTEzNjQ5LCAxMTM2NTMsIDExMzY2MCwgMTEzNjY0LCAKLSAgICAxMTM2NzAsIDExMzY3NCwgMTEzNjc4LCAxMTM2ODIsIDExMzY4OCwgMTEzNjk1LCAxMTM3MDIsIDExMzcwOSwgMTEzNzIxLCAKLSAgICAxMTM3MjksIDExMzczMywgMTEzNzM5LCAxMTM3NDgsIDExMzc1NSwgMTEzNzYxLCAxMTM3NjUsIDExMzc2OSwgMTEzNzczLCAKLSAgICAxMTM3NzksIDExMzc4OCwgMTEzNzk2LCAxMTM4MDAsIDExMzgwNiwgMTEzODEwLCAxMTM4MTQsIDExMzgxOCwgMTEzODI0LCAKLSAgICAxMTM4MzEsIDExMzgzNywgMTEzODQxLCAxMTM4NDcsIDExMzg1MSwgMTEzODU1LCAxMTM4NjQsIDExMzg3NiwgMTEzODgwLCAKLSAgICAxMTM4ODcsIDExMzg5NCwgMTEzOTA0LCAxMTM5MTEsIDExMzkyMywgMTEzOTMwLCAxMTM5MzcsIDExMzk0NCwgMTEzOTU1LCAKLSAgICAxMTM5NjUsIDExMzk3OCwgMTEzOTg4LCAxMTM5OTUsIDExMzk5OSwgMTE0MDAzLCAxMTQwMDcsIDExNDAxMSwgMTE0MDIwLCAKLSAgICAxMTQwMjksIDExNDAzOCwgMTE0MDU1LCAxMTQwNjQsIDExNDA3MCwgMTE0MDc3LCAxMTQwODUsIDExNDA5OCwgMTE0MTAyLCAKLSAgICAxMTQxMTEsIDExNDEyMCwgMTE0MTI5LCAxMTQxMzgsIDExNDE0OSwgMTE0MTU4LCAxMTQxNjcsIDExNDE3NiwgMTE0MTg1LCAKLSAgICAxMTQxOTQsIDExNDIwMywgMTE0MjEzLCAxMTQyMTYsIDExNDIyMCwgMTE0MjI0LCAxMTQyMjgsIDExNDIzMiwgMTE0MjM2LCAKLSAgICAxMTQyNDIsIDExNDI0OSwgMTE0MjU2LCAxMTQyNjMsIDExNDI2OSwgMTE0Mjc1LCAxMTQyODIsIDExNDI4OCwgMTE0Mjk1LCAKLSAgICAxMTQzMDMsIDExNDMwNywgMTE0MzE0LCAxMTQzMjEsIDExNDMyOCwgMTE0MzM2LCAxMTQzNDAsIDExNDM0NCwgMTE0MzQ4LCAKLSAgICAxMTQzNTIsIDExNDM1NiwgMTE0MzYyLCAxMTQzNjYsIDExNDM3MiwgMTE0Mzc5LCAxMTQzODYsIDExNDM5MiwgMTE0Mzk5LCAKLSAgICAxMTQ0MDYsIDExNDQxMywgMTE0NDIwLCAxMTQ0MjcsIDExNDQzNCwgMTE0NDQxLCAxMTQ0NDgsIDExNDQ1NSwgMTE0NDYyLCAKLSAgICAxMTQ0NjksIDExNDQ3NiwgMTE0NDgzLCAxMTQ0OTAsIDExNDQ5NiwgMTE0NTAwLCAxMTQ1MDksIDExNDUxMywgMTE0NTE3LCAKLSAgICAxMTQ1MjEsIDExNDUyNSwgMTE0NTMxLCAxMTQ1MzgsIDExNDU0NSwgMTE0NTUyLCAxMTQ1NTksIDExNDU2NiwgMTE0NTcyLCAKLSAgICAxMTQ1ODAsIDExNDU4NCwgMTE0NTg4LCAxMTQ1OTIsIDExNDU5NiwgMTE0NjAyLCAxMTQ2MTksIDExNDYzNiwgMTE0NjQwLCAKLSAgICAxMTQ2NDQsIDExNDY0OCwgMTE0NjUyLCAxMTQ2NTYsIDExNDY2MCwgMTE0NjY2LCAxMTQ2NzMsIDExNDY3NywgMTE0NjgzLCAKLSAgICAxMTQ2OTAsIDExNDY5NywgMTE0NzA0LCAxMTQ3MTEsIDExNDcxOCwgMTE0NzI3LCAxMTQ3MzQsIDExNDc0MSwgMTE0NzQ4LCAKLSAgICAxMTQ3NTUsIDExNDc1OSwgMTE0NzYzLCAxMTQ3NjksIDExNDc4MSwgMTE0Nzg1LCAxMTQ3ODksIDExNDc5OCwgMTE0ODAyLCAKLSAgICAxMTQ4MDYsIDExNDgxMCwgMTE0ODE2LCAxMTQ4MjAsIDExNDgyNCwgMTE0ODMzLCAxMTQ4MzcsIDExNDg0MSwgMTE0ODQ1LCAKLSAgICAxMTQ4NTIsIDExNDg1NiwgMTE0ODYwLCAxMTQ4NjQsIDExNDg2OCwgMTE0ODcyLCAxMTQ4NzYsIDExNDg4MCwgMTE0ODg0LCAKLSAgICAxMTQ4OTAsIDExNDg5NywgMTE0OTA0LCAxMTQ5MTAsIDExNDkxNCwgMTE0OTMxLCAxMTQ5MzcsIDExNDk0MSwgMTE0OTQ3LCAKLSAgICAxMTQ5NTMsIDExNDk1OSwgMTE0OTY1LCAxMTQ5NzEsIDExNDk3NywgMTE0OTgxLCAxMTQ5ODUsIDExNDk4OSwgMTE0OTk1LCAKLSAgICAxMTQ5OTksIDExNTAwNSwgMTE1MDA5LCAxMTUwMTMsIDExNTAyMCwgMTE1MDI3LCAxMTUwNDQsIDExNTA0OCwgMTE1MDUyLCAKLSAgICAxMTUwNTYsIDExNTA2MCwgMTE1MDY0LCAxMTUwNzYsIDExNTA3OSwgMTE1MDg0LCAxMTUwODksIDExNTEwNCwgMTE1MTE0LCAKLSAgICAxMTUxMjYsIDExNTEzMCwgMTE1MTM0LCAxMTUxMzgsIDExNTE0NCwgMTE1MTUxLCAxMTUxNTgsIDExNTE2OCwgMTE1MTgwLCAKLSAgICAxMTUxODYsIDExNTE5MiwgMTE1MjAxLCAxMTUyMDUsIDExNTIwOSwgMTE1MjE2LCAxMTUyMjYsIDExNTIzMywgMTE1MjM5LCAKLSAgICAxMTUyNDMsIDExNTI0NywgMTE1MjU0LCAxMTUyNjAsIDExNTI2NCwgMTE1MjcwLCAxMTUyNzQsIDExNTI4MiwgMTE1Mjg4LCAKLSAgICAxMTUyOTIsIDExNTMwMCwgMTE1MzA5LCAxMTUzMTYsIDExNTMyMiwgMTE1MzI5LCAxMTUzMzYsIDExNTM0NiwgMTE1MzU2LCAKLSAgICAxMTUzNjAsIDExNTM2NCwgMTE1MzY4LCAxMTUzNzIsIDExNTM3OCwgMTE1Mzg1LCAxMTUzOTEsIDExNTM5OCwgMTE1NDA1LCAKLSAgICAxMTU0MTIsIDExNTQyMSwgMTE1NDI4LCAxMTU0MzUsIDExNTQ0MSwgMTE1NDQ4LCAxMTU0NTUsIDExNTQ2MiwgMTE1NDY5LCAKLSAgICAxMTU0NzYsIDExNTQ4MywgMTE1NDg5LCAxMTU0OTYsIDExNTUwMywgMTE1NTEwLCAxMTU1MTksIDExNTUyNiwgMTE1NTMzLCAKLSAgICAxMTU1MzcsIDExNTU0MywgMTE1NTQ3LCAxMTU1NTMsIDExNTU2MCwgMTE1NTY3LCAxMTU1NzQsIDExNTU3OCwgMTE1NTgyLCAKLSAgICAxMTU1ODYsIDExNTU5MCwgMTE1NTk0LCAxMTU2MDEsIDExNTYwNSwgMTE1NjA5LCAxMTU2MTUsIDExNTYyMywgMTE1NjI3LCAKLSAgICAxMTU2MzEsIDExNTYzNSwgMTE1NjM5LCAxMTU2NDYsIDExNTY1MCwgMTE1NjU0LCAxMTU2NjIsIDExNTY2NiwgMTE1NjcwLCAKLSAgICAxMTU2NzQsIDExNTY3OCwgMTE1Njg0LCAxMTU2ODgsIDExNTY5MiwgMTE1Njk4LCAxMTU3MDUsIDExNTcxMSwgMTE1NzE4LCAKLSAgICAxMTU3MzAsIDExNTczNCwgMTE1NzQxLCAxMTU3NDgsIDExNTc1NSwgMTE1NzYyLCAxMTU3NzQsIDExNTc4MSwgMTE1Nzg1LCAKLSAgICAxMTU3ODksIDExNTc5MywgMTE1ODAwLCAxMTU4MDcsIDExNTgxNCwgMTE1ODIxLCAxMTU4MzEsIDExNTgzOCwgMTE1ODQ0LCAKLSAgICAxMTU4NTEsIDExNTg1OCwgMTE1ODY1LCAxMTU4NzIsIDExNTg4MSwgMTE1ODkxLCAxMTU4OTgsIDExNTkwMiwgMTE1OTA5LCAKLSAgICAxMTU5MTMsIDExNTkxNywgMTE1OTIxLCAxMTU5MjgsIDExNTkzNSwgMTE1OTQ1LCAxMTU5NTEsIDExNTk1NSwgMTE1OTY0LCAKLSAgICAxMTU5NjgsIDExNTk3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTEyMzYyLCAxMTIzNjUsIDExMjM3MCwgMTEyMzc2LCAxMTIzODQsIDExMjM4OSwgMTEyMzk1LCAxMTI0MDMsIAorICAgIDExMjQwOSwgMTEyNDE1LCAxMTI0MTksIDExMjQyMywgMTEyNDMwLCAxMTI0MzksIDExMjQ0NiwgMTEyNDU1LCAxMTI0NjEsIAorICAgIDExMjQ3MCwgMTEyNDc3LCAxMTI0ODQsIDExMjQ5MSwgMTEyNTAxLCAxMTI1MDcsIDExMjUxMSwgMTEyNTE4LCAxMTI1MjcsIAorICAgIDExMjUzNywgMTEyNTQ0LCAxMTI1NTEsIDExMjU1NSwgMTEyNTU5LCAxMTI1NjYsIDExMjU3NiwgMTEyNTgwLCAxMTI1ODcsIAorICAgIDExMjU5NCwgMTEyNjAxLCAxMTI2MDcsIDExMjYxNCwgMTEyNjIxLCAxMTI2MjgsIDExMjYzNSwgMTEyNjM5LCAxMTI2NDMsIAorICAgIDExMjY0NywgMTEyNjU0LCAxMTI2NTgsIDExMjY2NSwgMTEyNjcyLCAxMTI2ODYsIDExMjY5NSwgMTEyNjk5LCAxMTI3MDMsIAorICAgIDExMjcwNywgMTEyNzE0LCAxMTI3MTgsIDExMjcyMiwgMTEyNzI2LCAxMTI3MzQsIDExMjc0MiwgMTEyNzYxLCAxMTI3NzEsIAorICAgIDExMjc5MSwgMTEyNzk1LCAxMTI3OTksIDExMjgwMywgMTEyODA3LCAxMTI4MTEsIDExMjgxNSwgMTEyODE5LCAxMTI4MjYsIAorICAgIDExMjgzMCwgMTEyODMzLCAxMTI4MzcsIDExMjg0MSwgMTEyODQ3LCAxMTI4NTQsIDExMjg2MywgMTEyODY3LCAxMTI4NzYsIAorICAgIDExMjg4NSwgMTEyODkzLCAxMTI4OTcsIDExMjkwNCwgMTEyOTA4LCAxMTI5MTIsIDExMjkxNiwgMTEyOTIwLCAxMTI5MzEsIAorICAgIDExMjk0MCwgMTEyOTQ5LCAxMTI5NTgsIDExMjk2NywgMTEyOTc5LCAxMTI5ODgsIDExMjk5NywgMTEzMDA2LCAxMTMwMTQsIAorICAgIDExMzAyMywgMTEzMDM1LCAxMTMwNDQsIDExMzA1MiwgMTEzMDYxLCAxMTMwNzMsIDExMzA4MiwgMTEzMDkxLCAxMTMxMDMsIAorICAgIDExMzExMiwgMTEzMTIxLCAxMTMxMzMsIDExMzE0MiwgMTEzMTQ2LCAxMTMxNTAsIDExMzE1NCwgMTEzMTU4LCAxMTMxNjIsIAorICAgIDExMzE2NiwgMTEzMTcwLCAxMTMxNzcsIDExMzE4MSwgMTEzMTg1LCAxMTMxOTYsIDExMzIwMCwgMTEzMjA0LCAxMTMyMTEsIAorICAgIDExMzIxNywgMTEzMjIzLCAxMTMyMjcsIDExMzIzNCwgMTEzMjM4LCAxMTMyNDIsIDExMzI0NiwgMTEzMjUwLCAxMTMyNTQsIAorICAgIDExMzI1OCwgMTEzMjY0LCAxMTMyNzIsIDExMzI3NiwgMTEzMjgwLCAxMTMyODMsIDExMzI4OSwgMTEzMjk5LCAxMTMzMDMsIAorICAgIDExMzMxNSwgMTEzMzIyLCAxMTMzMjksIDExMzMzNiwgMTEzMzQzLCAxMTMzNDksIDExMzM1MywgMTEzMzU3LCAxMTMzNjEsIAorICAgIDExMzM2NSwgMTEzMzcyLCAxMTMzODEsIDExMzM4OCwgMTEzMzk2LCAxMTM0MDQsIDExMzQxMCwgMTEzNDE0LCAxMTM0MTgsIAorICAgIDExMzQyMiwgMTEzNDI2LCAxMTM0MzIsIDExMzQ0MSwgMTEzNDUzLCAxMTM0NjAsIDExMzQ2NywgMTEzNDc2LCAxMTM0ODcsIAorICAgIDExMzQ5MywgMTEzNTAyLCAxMTM1MTEsIDExMzUxOCwgMTEzNTI3LCAxMTM1MzQsIDExMzU0MCwgMTEzNTUwLCAxMTM1NTcsIAorICAgIDExMzU2NCwgMTEzNTcxLCAxMTM1NzgsIDExMzU4MiwgMTEzNTg4LCAxMTM1OTIsIDExMzYwMywgMTEzNjExLCAxMTM2MjAsIAorICAgIDExMzYzMiwgMTEzNjM5LCAxMTM2NDYsIDExMzY1NiwgMTEzNjYzLCAxMTM2NzMsIDExMzY4MCwgMTEzNjkwLCAxMTM2OTcsIAorICAgIDExMzcwNCwgMTEzNzE0LCAxMTM3MjEsIDExMzcyOCwgMTEzNzM3LCAxMTM3NDQsIDExMzc1NiwgMTEzNzY1LCAxMTM3NzIsIAorICAgIDExMzc3OSwgMTEzNzg2LCAxMTM3OTUsIDExMzgwNSwgMTEzODE4LCAxMTM4MjUsIDExMzgzNCwgMTEzODQ0LCAxMTM4NTEsIAorICAgIDExMzg2MCwgMTEzODczLCAxMTM4ODAsIDExMzg4NywgMTEzODk0LCAxMTM5MDQsIDExMzkxNCwgMTEzOTIwLCAxMTM5MzAsIAorICAgIDExMzkzNywgMTEzOTQ0LCAxMTM5NTQsIDExMzk2MCwgMTEzOTY3LCAxMTM5NzQsIDExMzk4MSwgMTEzOTkxLCAxMTM5OTgsIAorICAgIDExNDAwNSwgMTE0MDEyLCAxMTQwMTgsIDExNDAyNSwgMTE0MDM1LCAxMTQwNDIsIDExNDA0NiwgMTE0MDU0LCAxMTQwNTgsIAorICAgIDExNDA3MCwgMTE0MDc0LCAxMTQwODgsIDExNDA5MiwgMTE0MDk2LCAxMTQxMDAsIDExNDEwNCwgMTE0MTEwLCAxMTQxMTcsIAorICAgIDExNDEyNSwgMTE0MTI5LCAxMTQxMzMsIDExNDEzNywgMTE0MTQxLCAxMTQxNDgsIDExNDE1MiwgMTE0MTU4LCAxMTQxNjQsIAorICAgIDExNDE3MiwgMTE0MTc2LCAxMTQxODMsIDExNDE5MSwgMTE0MTk1LCAxMTQxOTksIDExNDIwNSwgMTE0MjA5LCAxMTQyMTgsIAorICAgIDExNDIyNywgMTE0MjM0LCAxMTQyNDQsIDExNDI1MCwgMTE0MjU0LCAxMTQyNTgsIDExNDI2NiwgMTE0MjczLCAxMTQyODAsIAorICAgIDExNDI4NiwgMTE0MjkwLCAxMTQyOTgsIDExNDMwMiwgMTE0MzA5LCAxMTQzMjEsIDExNDMyOCwgMTE0MzM4LCAxMTQzNDQsIAorICAgIDExNDM0OCwgMTE0MzU3LCAxMTQzNjQsIDExNDM3MywgMTE0Mzc3LCAxMTQzODEsIDExNDM4OCwgMTE0MzkyLCAxMTQzOTYsIAorICAgIDExNDQwMCwgMTE0NDA0LCAxMTQ0MDcsIDExNDQxMywgMTE0NDE5LCAxMTQ0MjMsIDExNDQyNywgMTE0NDM0LCAxMTQ0NDEsIAorICAgIDExNDQ0OCwgMTE0NDU1LCAxMTQ0NjIsIDExNDQ2OSwgMTE0NDc2LCAxMTQ0ODMsIDExNDQ4OSwgMTE0NDkzLCAxMTQ0OTcsIAorICAgIDExNDUwNCwgMTE0NTExLCAxMTQ1MTgsIDExNDUyNSwgMTE0NTMyLCAxMTQ1MzYsIDExNDUzOSwgMTE0NTQ0LCAxMTQ1NDgsIAorICAgIDExNDU1MiwgMTE0NTYxLCAxMTQ1NzAsIDExNDU3NCwgMTE0NTc4LCAxMTQ1ODQsIDExNDU5MCwgMTE0NjA3LCAxMTQ2MTMsIAorICAgIDExNDYxNywgMTE0NjI2LCAxMTQ2MzAsIDExNDYzNCwgMTE0NjQxLCAxMTQ2NDksIDExNDY1NywgMTE0NjYzLCAxMTQ2NjcsIAorICAgIDExNDY3MSwgMTE0Njc1LCAxMTQ2NzksIDExNDY4MiwgMTE0Njg4LCAxMTQ2OTUsIDExNDcwNSwgMTE0NzEyLCAxMTQ3MTksIAorICAgIDExNDcyNiwgMTE0NzMyLCAxMTQ3MzksIDExNDc0NiwgMTE0NzUzLCAxMTQ3NjAsIDExNDc2NywgMTE0Nzc2LCAxMTQ3ODMsIAorICAgIDExNDc5NSwgMTE0ODAyLCAxMTQ4MDksIDExNDgxOSwgMTE0ODMwLCAxMTQ4MzcsIDExNDg0NCwgMTE0ODUxLCAxMTQ4NTgsIAorICAgIDExNDg2NSwgMTE0ODcyLCAxMTQ4NzksIDExNDg4NiwgMTE0ODkzLCAxMTQ5MDAsIDExNDkxMCwgMTE0OTIwLCAxMTQ5MzAsIAorICAgIDExNDkzNywgMTE0OTQ3LCAxMTQ5NTQsIDExNDk2MSwgMTE0OTY4LCAxMTQ5NzUsIDExNDk4MiwgMTE0OTg5LCAxMTQ5OTYsIAorICAgIDExNTAwMywgMTE1MDEwLCAxMTUwMTcsIDExNTAyNCwgMTE1MDMxLCAxMTUwMzgsIDExNTA0NCwgMTE1MDUxLCAxMTUwNTgsIAorICAgIDExNTA2NywgMTE1MDc0LCAxMTUwODEsIDExNTA4NSwgMTE1MDkzLCAxMTUwOTcsIDExNTEwMSwgMTE1MTA1LCAxMTUxMDksIAorICAgIDExNTExMywgMTE1MTIwLCAxMTUxMjQsIDExNTEzMywgMTE1MTM3LCAxMTUxNDQsIDExNTE1MiwgMTE1MTU2LCAxMTUxNjAsIAorICAgIDExNTE2NCwgMTE1MTc3LCAxMTUxOTMsIDExNTE5NywgMTE1MjAxLCAxMTUyMDgsIDExNTIxNCwgMTE1MjIxLCAxMTUyMjUsIAorICAgIDExNTIyOSwgMTE1MjMzLCAxMTUyMzcsIDExNTI0MSwgMTE1MjQ4LCAxMTUyNTIsIDExNTI3MCwgMTE1Mjc0LCAxMTUyNzgsIAorICAgIDExNTI4NSwgMTE1Mjg5LCAxMTUyOTMsIDExNTI5OSwgMTE1MzAzLCAxMTUzMDcsIDExNTMxNSwgMTE1MzE5LCAxMTUzMjMsIAorICAgIDExNTMyNiwgMTE1MzMwLCAxMTUzMzYsIDExNTM0NywgMTE1MzU2LCAxMTUzNjUsIDExNTM3MiwgMTE1Mzc5LCAxMTUzOTAsIAorICAgIDExNTM5NywgMTE1NDA0LCAxMTU0MTEsIDExNTQxOCwgMTE1NDI1LCAxMTU0MzIsIDExNTQzOSwgMTE1NDQ5LCAxMTU0NTUsIAorICAgIDExNTQ2MiwgMTE1NDcyLCAxMTU0ODEsIDExNTQ4OCwgMTE1NDk3LCAxMTU1MDcsIDExNTUxNCwgMTE1NTIxLCAxMTU1MjgsIAorICAgIDExNTUzNSwgMTE1NTQ3LCAxMTU1NTQsIDExNTU2MSwgMTE1NTY4LCAxMTU1NzUsIDExNTU4MiwgMTE1NTkyLCAxMTU1OTksIAorICAgIDExNTYwNiwgMTE1NjE2LCAxMTU2MjksIDExNTY0MSwgMTE1NjQ4LCAxMTU2NTgsIDExNTY2NSwgMTE1NjcyLCAxMTU2NzksIAorICAgIDExNTY5MywgMTE1Njk5LCAxMTU3MDcsIDExNTcxNywgMTE1NzI3LCAxMTU3MzQsIDExNTc0MSwgMTE1NzQ3LCAxMTU3NTEsIAorICAgIDExNTc1OCwgMTE1NzY4LCAxMTU3NzQsIDExNTc4NywgMTE1NzkxLCAxMTU3OTUsIDExNTgwMiwgMTE1ODA2LCAxMTU4MTMsIAorICAgIDExNTgyMywgMTE1ODI3LCAxMTU4MzEsIDExNTgzNSwgMTE1ODM5LCAxMTU4NDMsIDExNTg1MCwgMTE1ODU0LCAxMTU4NjEsIAorICAgIDExNTg2OCwgMTE1ODc1LCAxMTU4ODQsIDExNTg5MywgMTE1OTAzLCAxMTU5MTAsIDExNTkxNywgMTE1OTI0LCAxMTU5MzQsIAorICAgIDExNTk0MSwgMTE1OTUxLCAxMTU5NTgsIDExNTk2OCwgMTE1OTc1LCAxMTU5ODIsIDExNTk5MiwgMTE2MDAyLCAxMTYwMDksIAorICAgIDExNjAxNSwgMTE2MDIzLCAxMTYwMzEsIDExNjAzNywgMTE2MDQzLCAxMTYwNDcsIDExNjA1MSwgMTE2MDU4LCAxMTYwNjYsIAorICAgIDExNjA3MiwgMTE2MDc2LCAxMTYwODAsIDExNjA4NCwgMTE2MDkxLCAxMTYxMDMsIDExNjEwNiwgMTE2MTEzLCAxMTYxMTksIAorICAgIDExNjEyMywgMTE2MTI3LCAxMTYxMzEsIDExNjEzNSwgMTE2MTM5LCAxMTYxNDMsIDExNjE0NywgMTE2MTUxLCAxMTYxNTUsIAorICAgIDExNjE1OSwgMTE2MTY2LCAxMTYxNzAsIDExNjE3NiwgMTE2MTgwLCAxMTYxODQsIDExNjE4OCwgMTE2MTk0LCAxMTYyMDEsIAorICAgIDExNjIwOCwgMTE2MjE1LCAxMTYyMjYsIDExNjIzNCwgMTE2MjM4LCAxMTYyNDQsIDExNjI1MywgMTE2MjYwLCAxMTYyNjYsIAorICAgIDExNjI2OSwgMTE2MjczLCAxMTYyNzcsIDExNjI4MywgMTE2MjkyLCAxMTYzMDAsIDExNjMwNCwgMTE2MzEwLCAxMTYzMTQsIAorICAgIDExNjMxOCwgMTE2MzIyLCAxMTYzMjgsIDExNjMzNSwgMTE2MzQxLCAxMTYzNDUsIDExNjM1MSwgMTE2MzU1LCAxMTYzNTksIAorICAgIDExNjM2OCwgMTE2MzgwLCAxMTYzODQsIDExNjM5MSwgMTE2Mzk4LCAxMTY0MDgsIDExNjQxNSwgMTE2NDI3LCAxMTY0MzQsIAorICAgIDExNjQ0MSwgMTE2NDQ4LCAxMTY0NTksIDExNjQ2OSwgMTE2NDgyLCAxMTY0OTIsIDExNjQ5OSwgMTE2NTAzLCAxMTY1MDcsIAorICAgIDExNjUxMSwgMTE2NTE1LCAxMTY1MjQsIDExNjUzMywgMTE2NTQyLCAxMTY1NTksIDExNjU2OCwgMTE2NTc0LCAxMTY1ODEsIAorICAgIDExNjU4OSwgMTE2NjAyLCAxMTY2MDYsIDExNjYxNSwgMTE2NjI0LCAxMTY2MzMsIDExNjY0MiwgMTE2NjUzLCAxMTY2NjIsIAorICAgIDExNjY3MCwgMTE2Njc5LCAxMTY2ODgsIDExNjY5NywgMTE2NzA2LCAxMTY3MTYsIDExNjcxOSwgMTE2NzIzLCAxMTY3MjcsIAorICAgIDExNjczMSwgMTE2NzM1LCAxMTY3MzksIDExNjc0NSwgMTE2NzUyLCAxMTY3NTksIDExNjc2NiwgMTE2NzcyLCAxMTY3NzgsIAorICAgIDExNjc4NSwgMTE2NzkxLCAxMTY3OTgsIDExNjgwNiwgMTE2ODEwLCAxMTY4MTcsIDExNjgyNCwgMTE2ODMxLCAxMTY4MzksIAorICAgIDExNjg0MywgMTE2ODQ3LCAxMTY4NTEsIDExNjg1NSwgMTE2ODU5LCAxMTY4NjUsIDExNjg2OSwgMTE2ODc1LCAxMTY4ODIsIAorICAgIDExNjg4OSwgMTE2ODk1LCAxMTY5MDIsIDExNjkwOSwgMTE2OTE2LCAxMTY5MjMsIDExNjkzMCwgMTE2OTM3LCAxMTY5NDQsIAorICAgIDExNjk1MSwgMTE2OTU4LCAxMTY5NjUsIDExNjk3MiwgMTE2OTc5LCAxMTY5ODYsIDExNjk5MywgMTE2OTk5LCAxMTcwMDMsIAorICAgIDExNzAxMiwgMTE3MDE2LCAxMTcwMjAsIDExNzAyNCwgMTE3MDI4LCAxMTcwMzQsIDExNzA0MSwgMTE3MDQ4LCAxMTcwNTUsIAorICAgIDExNzA2MiwgMTE3MDY5LCAxMTcwNzUsIDExNzA4MywgMTE3MDg3LCAxMTcwOTEsIDExNzA5NSwgMTE3MDk5LCAxMTcxMDUsIAorICAgIDExNzEyMiwgMTE3MTM5LCAxMTcxNDMsIDExNzE0NywgMTE3MTUxLCAxMTcxNTUsIDExNzE1OSwgMTE3MTYzLCAxMTcxNjksIAorICAgIDExNzE3NiwgMTE3MTgwLCAxMTcxODYsIDExNzE5MywgMTE3MjAwLCAxMTcyMDcsIDExNzIxNCwgMTE3MjIxLCAxMTcyMzAsIAorICAgIDExNzIzNywgMTE3MjQ0LCAxMTcyNTEsIDExNzI1OCwgMTE3MjYyLCAxMTcyNjYsIDExNzI3MiwgMTE3Mjg0LCAxMTcyODgsIAorICAgIDExNzI5MiwgMTE3MzAxLCAxMTczMDUsIDExNzMwOSwgMTE3MzEzLCAxMTczMTksIDExNzMyMywgMTE3MzI3LCAxMTczMzYsIAorICAgIDExNzM0MCwgMTE3MzQ0LCAxMTczNDgsIDExNzM1NSwgMTE3MzU5LCAxMTczNjMsIDExNzM2NywgMTE3MzcxLCAxMTczNzUsIAorICAgIDExNzM3OSwgMTE3MzgzLCAxMTczODcsIDExNzM5MywgMTE3NDAwLCAxMTc0MDcsIDExNzQxMywgMTE3NDE3LCAxMTc0MzQsIAorICAgIDExNzQ0MCwgMTE3NDQ0LCAxMTc0NTAsIDExNzQ1NiwgMTE3NDYyLCAxMTc0NjgsIDExNzQ3NCwgMTE3NDgwLCAxMTc0ODQsIAorICAgIDExNzQ4OCwgMTE3NDkyLCAxMTc0OTgsIDExNzUwMiwgMTE3NTA4LCAxMTc1MTIsIDExNzUxNiwgMTE3NTIzLCAxMTc1MzAsIAorICAgIDExNzU0NywgMTE3NTUxLCAxMTc1NTUsIDExNzU1OSwgMTE3NTYzLCAxMTc1NjcsIDExNzU3OSwgMTE3NTgyLCAxMTc1ODcsIAorICAgIDExNzU5MiwgMTE3NjA3LCAxMTc2MTcsIDExNzYyOSwgMTE3NjMzLCAxMTc2MzcsIDExNzY0MSwgMTE3NjQ3LCAxMTc2NTQsIAorICAgIDExNzY2MSwgMTE3NjcxLCAxMTc2ODMsIDExNzY4OSwgMTE3Njk1LCAxMTc3MDQsIDExNzcwOCwgMTE3NzEyLCAxMTc3MTksIAorICAgIDExNzcyOSwgMTE3NzM2LCAxMTc3NDIsIDExNzc0NiwgMTE3NzUwLCAxMTc3NTcsIDExNzc2MywgMTE3NzY3LCAxMTc3NzMsIAorICAgIDExNzc3NywgMTE3Nzg1LCAxMTc3OTEsIDExNzc5NSwgMTE3ODAzLCAxMTc4MTEsIDExNzgxOCwgMTE3ODI0LCAxMTc4MzEsIAorICAgIDExNzgzOCwgMTE3ODQ4LCAxMTc4NTgsIDExNzg2MiwgMTE3ODY2LCAxMTc4NzAsIDExNzg3NCwgMTE3ODgwLCAxMTc4ODcsIAorICAgIDExNzg5MywgMTE3OTAwLCAxMTc5MDcsIDExNzkxNCwgMTE3OTIzLCAxMTc5MzAsIDExNzkzNywgMTE3OTQzLCAxMTc5NTAsIAorICAgIDExNzk1NywgMTE3OTY0LCAxMTc5NzEsIDExNzk3OCwgMTE3OTg1LCAxMTc5OTEsIDExNzk5OCwgMTE4MDA1LCAxMTgwMTIsIAorICAgIDExODAyMSwgMTE4MDI4LCAxMTgwMzUsIDExODAzOSwgMTE4MDQ1LCAxMTgwNDksIDExODA1NSwgMTE4MDYyLCAxMTgwNjksIAorICAgIDExODA3NiwgMTE4MDgwLCAxMTgwODQsIDExODA4OCwgMTE4MDkyLCAxMTgwOTYsIDExODEwMywgMTE4MTA3LCAxMTgxMTEsIAorICAgIDExODExNywgMTE4MTI1LCAxMTgxMjksIDExODEzMywgMTE4MTM3LCAxMTgxNDEsIDExODE0OCwgMTE4MTUyLCAxMTgxNTYsIAorICAgIDExODE2NCwgMTE4MTY4LCAxMTgxNzIsIDExODE3NiwgMTE4MTgwLCAxMTgxODYsIDExODE5MCwgMTE4MTk0LCAxMTgyMDAsIAorICAgIDExODIwNywgMTE4MjEzLCAxMTgyMjAsIDExODIzMiwgMTE4MjM2LCAxMTgyNDMsIDExODI1MCwgMTE4MjU3LCAxMTgyNjQsIAorICAgIDExODI3NiwgMTE4MjgzLCAxMTgyODcsIDExODI5MSwgMTE4Mjk1LCAxMTgzMDIsIDExODMwOSwgMTE4MzE2LCAxMTgzMjMsIAorICAgIDExODMzMywgMTE4MzQwLCAxMTgzNDYsIDExODM1MywgMTE4MzYwLCAxMTgzNjcsIDExODM3NCwgMTE4MzgzLCAxMTgzOTMsIAorICAgIDExODQwMCwgMTE4NDA0LCAxMTg0MTEsIDExODQxNSwgMTE4NDE5LCAxMTg0MjMsIDExODQzMCwgMTE4NDM3LCAxMTg0NDcsIAorICAgIDExODQ1MywgMTE4NDU3LCAxMTg0NjYsIDExODQ3MCwgMTE4NDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTU5NzksIDExNTk4NSwgMTE1OTkxLCAxMTU5OTgsIDExNjAwNSwgCi0gICAgMTE2MDEyLCAxMTYwMTksIDExNjAyNiwgMTE2MDMzLCAxMTYwMzksIDExNjA0NiwgMTE2MDUzLCAxMTYwNjAsIDExNjA2NywgCi0gICAgMTE2MDc0LCAxMTYwODEsIDExNjA4NywgMTE2MDkzLCAxMTYwOTksIDExNjEwNSwgMTE2MTExLCAxMTYxMTcsIDExNjEyMywgCi0gICAgMTE2MTI5LCAxMTYxMzUsIDExNjE0MiwgMTE2MTQ5LCAxMTYxNTYsIDExNjE2MywgMTE2MTcwLCAxMTYxNzcsIDExNjE4MywgCi0gICAgMTE2MTg5LCAxMTYxOTUsIDExNjIwMiwgMTE2MjA5LCAxMTYyMTUsIDExNjIyMSwgMTE2MjMwLCAxMTYyMzcsIDExNjI0NCwgCi0gICAgMTE2MjUxLCAxMTYyNTgsIDExNjI2NSwgMTE2MjcyLCAxMTYyNzgsIDExNjI4NCwgMTE2MjkwLCAxMTYyOTksIDExNjMwNiwgCi0gICAgMTE2MzEzLCAxMTYzMjQsIDExNjMzNSwgMTE2MzQxLCAxMTYzNDcsIDExNjM1MywgMTE2MzYyLCAxMTYzNjksIDExNjM3NiwgCi0gICAgMTE2Mzg2LCAxMTYzOTYsIDExNjQwNywgMTE2NDE4LCAxMTY0MzAsIDExNjQ0MywgMTE2NDU0LCAxMTY0NjUsIDExNjQ3NywgCi0gICAgMTE2NDkwLCAxMTY1MDEsIDExNjUxMiwgMTE2NTIzLCAxMTY1MzQsIDExNjU0NSwgMTE2NTU3LCAxMTY1NjUsIDExNjU3MywgCi0gICAgMTE2NTgyLCAxMTY1OTEsIDExNjYwMCwgMTE2NjA2LCAxMTY2MTIsIDExNjYxOCwgMTE2NjI1LCAxMTY2MzUsIDExNjY0MiwgCi0gICAgMTE2NjUyLCAxMTY2NTcsIDExNjY2MiwgMTE2NjY4LCAxMTY2NzQsIDExNjY4MiwgMTE2NjkwLCAxMTY2OTksIDExNjcxMCwgCi0gICAgMTE2NzIxLCAxMTY3MjksIDExNjczNywgMTE2NzQ2LCAxMTY3NTUsIDExNjc2MywgMTE2NzcwLCAxMTY3NzgsIDExNjc4NiwgCi0gICAgMTE2NzkzLCAxMTY4MDAsIDExNjgwOSwgMTE2ODE4LCAxMTY4MjcsIDExNjgzNiwgMTE2ODQ1LCAwLCAxMTY4NTQsIAotICAgIDExNjg2NSwgMTE2ODcyLCAxMTY4ODAsIDExNjg4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2ODk2LCAKLSAgICAxMTY5MDUsIDExNjkxMiwgMTE2OTE5LCAxMTY5MjgsIDExNjkzNSwgMTE2OTQyLCAxMTY5NDksIDExNjk1OSwgMTE2OTY2LCAKLSAgICAxMTY5NzMsIDExNjk4MCwgMTE2OTg4LCAxMTY5OTUsIDExNzAwMiwgMTE3MDA5LCAxMTcwMjAsIDExNzAyNywgMTE3MDM0LCAKLSAgICAxMTcwNDEsIDExNzA0OCwgMTE3MDU1LCAxMTcwNjQsIDExNzA3MSwgMTE3MDc3LCAxMTcwODQsIDExNzA5MywgMTE3MTAwLCAKLSAgICAxMTcxMDcsIDExNzExNCwgMTE3MTI0LCAxMTcxMzEsIDExNzEzOCwgMTE3MTQ4LCAxMTcxNTgsIDExNzE2NSwgMTE3MTcyLCAKLSAgICAxMTcxNzksIDExNzE4NiwgMTE3MTkzLCAxMTcyMDAsIDExNzIwOSwgMTE3MjE2LCAxMTcyMjMsIDExNzIyOSwgMTE3MjM3LCAKLSAgICAxMTcyNDYsIDExNzI1NSwgMTE3MjY2LCAxMTcyNzUsIDExNzI4NCwgMTE3MjkzLCAxMTczMDIsIDExNzMxMSwgMTE3MzE4LCAKLSAgICAxMTczMjUsIDExNzMzNCwgMTE3MzQ2LCAxMTczNTYsIDExNzM2MywgMTE3MzcwLCAxMTczODAsIDExNzM5MCwgMTE3Mzk5LCAKLSAgICAxMTc0MDksIDExNzQxNiwgMTE3NDI2LCAxMTc0MzMsIDExNzQ0MCwgMTE3NDQ3LCAxMTc0NTcsIDExNzQ2NywgMTE3NDc0LCAKLSAgICAxMTc0ODEsIDExNzQ5MSwgMTE3NDk3LCAxMTc1MDgsIDExNzUxNywgMTE3NTI3LCAxMTc1MzUsIDExNzU0OCwgMTE3NTU1LCAKLSAgICAxMTc1NjEsIDExNzU2OSwgMTE3NTc2LCAxMTc1ODYsIDExNzU5MCwgMTE3NTk0LCAxMTc1OTgsIDExNzYwMiwgMTE3NjA2LCAKLSAgICAxMTc2MTAsIDExNzYxNCwgMTE3NjIzLCAxMTc2MjcsIDExNzYzNCwgMTE3NjM4LCAxMTc2NDIsIDExNzY0NiwgMTE3NjUwLCAKLSAgICAxMTc2NTQsIDExNzY1OCwgMTE3NjYyLCAxMTc2NjYsIDExNzY3MCwgMTE3Njc0LCAxMTc2NzgsIDExNzY4MiwgMTE3Njg2LCAKLSAgICAxMTc2OTAsIDExNzY5NCwgMTE3Njk4LCAxMTc3MDIsIDExNzcwNiwgMTE3NzEwLCAxMTc3MTcsIDExNzcyNCwgMTE3NzM0LCAKLSAgICAxMTc3NDcsIDExNzc1NywgMTE3NzYxLCAxMTc3NjUsIDExNzc2OSwgMTE3NzczLCAxMTc3NzcsIDExNzc4MSwgMTE3Nzg1LCAKLSAgICAxMTc3ODksIDExNzc5MywgMTE3Nzk3LCAxMTc4MDEsIDExNzgwOCwgMTE3ODE1LCAxMTc4MjYsIDExNzgzMywgMTE3ODQwLCAKLSAgICAxMTc4NDcsIDExNzg1NCwgMTE3ODYxLCAxMTc4NjgsIDExNzg3NSwgMTE3ODc5LCAxMTc4ODMsIDExNzg5MCwgMTE3ODk3LCAKLSAgICAxMTc5MDQsIDExNzkxMywgMTE3OTIwLCAxMTc5MzMsIDExNzk0MywgMTE3OTUwLCAxMTc5NTcsIDExNzk2MSwgMTE3OTY1LCAKLSAgICAxMTc5NzQsIDExNzk4MSwgMTE3OTg4LCAxMTc5OTUsIDExODAwOCwgMTE4MDE1LCAxMTgwMjIsIDExODAzMiwgMTE4MDQyLCAKLSAgICAxMTgwNTEsIDExODA1OCwgMTE4MDY1LCAxMTgwNzIsIDExODA3OSwgMTE4MDg2LCAxMTgwOTMsIDExODEwMywgMTE4MTA5LCAKLSAgICAxMTgxMTcsIDExODEyNCwgMTE4MTMyLCAxMTgxMzksIDExODE1MCwgMTE4MTU3LCAxMTgxNjMsIDExODE3MCwgMTE4MTc3LCAKLSAgICAxMTgxODQsIDExODE5MSwgMTE4MjAxLCAxMTgyMTEsIDExODIxOCwgMTE4MjI1LCAxMTgyMzQsIDExODI0MiwgMTE4MjQ4LCAKLSAgICAxMTgyNTUsIDExODI2MiwgMTE4MjY5LCAxMTgyNzYsIDExODI4MCwgMTE4MjkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTg0ODEsIDExODQ4NywgCisgICAgMTE4NDkzLCAxMTg1MDAsIDExODUwNywgMTE4NTE0LCAxMTg1MjEsIDExODUyOCwgMTE4NTM1LCAxMTg1NDEsIDExODU0OCwgCisgICAgMTE4NTU1LCAxMTg1NjIsIDExODU2OSwgMTE4NTc2LCAxMTg1ODMsIDExODU4OSwgMTE4NTk1LCAxMTg2MDEsIDExODYwNywgCisgICAgMTE4NjEzLCAxMTg2MTksIDExODYyNSwgMTE4NjMxLCAxMTg2MzcsIDExODY0NCwgMTE4NjUxLCAxMTg2NTgsIDExODY2NSwgCisgICAgMTE4NjcyLCAxMTg2NzksIDExODY4NSwgMTE4NjkxLCAxMTg2OTcsIDExODcwNCwgMTE4NzExLCAxMTg3MTcsIDExODcyMywgCisgICAgMTE4NzMyLCAxMTg3MzksIDExODc0NiwgMTE4NzUzLCAxMTg3NjAsIDExODc2NywgMTE4Nzc0LCAxMTg3ODAsIDExODc4NiwgCisgICAgMTE4NzkyLCAxMTg4MDEsIDExODgwOCwgMTE4ODE1LCAxMTg4MjYsIDExODgzNywgMTE4ODQzLCAxMTg4NDksIDExODg1NSwgCisgICAgMTE4ODY0LCAxMTg4NzEsIDExODg3OCwgMTE4ODg4LCAxMTg4OTgsIDExODkwOSwgMTE4OTIwLCAxMTg5MzIsIDExODk0NSwgCisgICAgMTE4OTU2LCAxMTg5NjcsIDExODk3OSwgMTE4OTkyLCAxMTkwMDMsIDExOTAxNCwgMTE5MDI1LCAxMTkwMzYsIDExOTA0NywgCisgICAgMTE5MDU5LCAxMTkwNjcsIDExOTA3NSwgMTE5MDg0LCAxMTkwOTMsIDExOTEwMiwgMTE5MTA4LCAxMTkxMTQsIDExOTEyMCwgCisgICAgMTE5MTI3LCAxMTkxMzcsIDExOTE0NCwgMTE5MTU0LCAxMTkxNTksIDExOTE2NCwgMTE5MTcwLCAxMTkxNzYsIDExOTE4NCwgCisgICAgMTE5MTkyLCAxMTkyMDEsIDExOTIxMiwgMTE5MjIzLCAxMTkyMzEsIDExOTIzOSwgMTE5MjQ4LCAxMTkyNTcsIDExOTI2NSwgCisgICAgMTE5MjcyLCAxMTkyODAsIDExOTI4OCwgMTE5Mjk1LCAxMTkzMDIsIDExOTMxMSwgMTE5MzIwLCAxMTkzMjksIDExOTMzOCwgCisgICAgMTE5MzQ3LCAwLCAxMTkzNTYsIDExOTM2NywgMTE5Mzc0LCAxMTkzODIsIDExOTM5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTE5Mzk4LCAxMTk0MDcsIDExOTQxNCwgMTE5NDIxLCAxMTk0MzAsIDExOTQzNywgMTE5NDQ0LCAKKyAgICAxMTk0NTEsIDExOTQ2MSwgMTE5NDY4LCAxMTk0NzUsIDExOTQ4MiwgMTE5NDkwLCAxMTk0OTcsIDExOTUwNCwgMTE5NTExLCAKKyAgICAxMTk1MjIsIDExOTUyOSwgMTE5NTM2LCAxMTk1NDMsIDExOTU1MCwgMTE5NTU3LCAxMTk1NjYsIDExOTU3MywgMTE5NTc5LCAKKyAgICAxMTk1ODYsIDExOTU5NSwgMTE5NjAyLCAxMTk2MDksIDExOTYxNiwgMTE5NjI2LCAxMTk2MzMsIDExOTY0MCwgMTE5NjUwLCAKKyAgICAxMTk2NjAsIDExOTY2NywgMTE5Njc0LCAxMTk2ODEsIDExOTY4OCwgMTE5Njk1LCAxMTk3MDIsIDExOTcxMSwgMTE5NzE4LCAKKyAgICAxMTk3MjUsIDExOTczMSwgMTE5NzM5LCAxMTk3NDgsIDExOTc1NywgMTE5NzY4LCAxMTk3NzYsIDExOTc4NSwgMTE5Nzk0LCAKKyAgICAxMTk4MDMsIDExOTgxMiwgMTE5ODE5LCAxMTk4MjYsIDExOTgzNSwgMTE5ODQ3LCAxMTk4NTcsIDExOTg2NCwgMTE5ODcxLCAKKyAgICAxMTk4ODEsIDExOTg5MSwgMTE5OTAwLCAxMTk5MTAsIDExOTkxNywgMTE5OTI3LCAxMTk5MzQsIDExOTk0MSwgMTE5OTQ4LCAKKyAgICAxMTk5NTgsIDExOTk2OCwgMTE5OTc1LCAxMTk5ODIsIDExOTk5MiwgMTE5OTk4LCAxMjAwMDksIDEyMDAxOCwgMTIwMDI4LCAKKyAgICAxMjAwMzYsIDEyMDA0OSwgMTIwMDU2LCAxMjAwNjIsIDEyMDA3MCwgMTIwMDc3LCAxMjAwODcsIDEyMDA5MSwgMTIwMDk1LCAKKyAgICAxMjAwOTksIDEyMDEwMywgMTIwMTA3LCAxMjAxMTEsIDEyMDExNSwgMTIwMTI0LCAxMjAxMjgsIDEyMDEzNSwgMTIwMTM5LCAKKyAgICAxMjAxNDMsIDEyMDE0NywgMTIwMTUxLCAxMjAxNTUsIDEyMDE1OSwgMTIwMTYzLCAxMjAxNjcsIDEyMDE3MSwgMTIwMTc1LCAKKyAgICAxMjAxNzksIDEyMDE4MywgMTIwMTg3LCAxMjAxOTEsIDEyMDE5NSwgMTIwMTk5LCAxMjAyMDMsIDEyMDIwNywgMTIwMjExLCAKKyAgICAxMjAyMTgsIDEyMDIyNSwgMTIwMjM1LCAxMjAyNDgsIDEyMDI1OCwgMTIwMjYyLCAxMjAyNjYsIDEyMDI3MCwgMTIwMjc0LCAKKyAgICAxMjAyNzgsIDEyMDI4MiwgMTIwMjg2LCAxMjAyOTAsIDEyMDI5NCwgMTIwMjk4LCAxMjAzMDIsIDEyMDMwOSwgMTIwMzE2LCAKKyAgICAxMjAzMjcsIDEyMDMzNCwgMTIwMzQwLCAxMjAzNDcsIDEyMDM1NCwgMTIwMzYxLCAxMjAzNjgsIDEyMDM3NSwgMTIwMzc5LCAKKyAgICAxMjAzODMsIDEyMDM5MCwgMTIwMzk3LCAxMjA0MDQsIDEyMDQxMywgMTIwNDIwLCAxMjA0MzMsIDEyMDQ0MywgMTIwNDUwLCAKKyAgICAxMjA0NTcsIDEyMDQ2MSwgMTIwNDY1LCAxMjA0NzQsIDEyMDQ4MSwgMTIwNDg4LCAxMjA0OTUsIDEyMDUwOCwgMTIwNTE1LCAKKyAgICAxMjA1MjIsIDEyMDUzMiwgMTIwNTQyLCAxMjA1NTEsIDEyMDU1OCwgMTIwNTY1LCAxMjA1NzIsIDEyMDU3OSwgMTIwNTg2LCAKKyAgICAxMjA1OTMsIDEyMDYwMywgMTIwNjA5LCAxMjA2MTcsIDEyMDYyNCwgMTIwNjMyLCAxMjA2MzksIDEyMDY1MCwgMTIwNjU3LCAKKyAgICAxMjA2NjMsIDEyMDY3MCwgMTIwNjc3LCAxMjA2ODQsIDEyMDY5MSwgMTIwNzAxLCAxMjA3MTEsIDEyMDcxOCwgMTIwNzI1LCAKKyAgICAxMjA3MzQsIDEyMDc0MiwgMTIwNzQ4LCAxMjA3NTUsIDEyMDc2MiwgMTIwNzY5LCAxMjA3NzYsIDEyMDc4MCwgMTIwNzkwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE5MTAwLDEyNiArMjAyNTUsMTI2IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4MzAwLCAxMTgzMDQsIDExODMwOCwgMTE4MzEyLCAKLSAgICAxMTgzMTYsIDExODMyMCwgMTE4MzI0LCAxMTgzMjgsIDExODMzMiwgMTE4MzM2LCAxMTgzNDAsIDExODM0NCwgMTE4MzQ4LCAKLSAgICAxMTgzNTIsIDExODM1NiwgMTE4MzYwLCAxMTgzNjQsIDExODM2OCwgMTE4MzcyLCAxMTgzNzYsIDExODM4MCwgMTE4Mzg0LCAKLSAgICAxMTgzODgsIDExODM5MiwgMTE4Mzk2LCAxMTg0MDAsIDExODQwNCwgMTE4NDA4LCAxMTg0MTIsIDExODQxNiwgMTE4NDIwLCAKLSAgICAxMTg0MjQsIDExODQyOCwgMTE4NDMyLCAxMTg0MzYsIDExODQ0MCwgMTE4NDQ0LCAxMTg0NDgsIDExODQ1MiwgMTE4NDU2LCAKLSAgICAxMTg0NjAsIDExODQ2NCwgMTE4NDY4LCAxMTg0NzIsIDExODQ3NiwgMTE4NDgwLCAxMTg0ODQsIDExODQ4OCwgMTE4NDkyLCAKLSAgICAxMTg0OTYsIDExODUwMCwgMTE4NTA0LCAxMTg1MDgsIDExODUxMiwgMTE4NTE2LCAxMTg1MjAsIDExODUyNCwgMTE4NTI4LCAKLSAgICAxMTg1MzIsIDExODUzNiwgMTE4NTQwLCAxMTg1NDQsIDExODU0OCwgMTE4NTUyLCAxMTg1NTYsIDExODU2MCwgMTE4NTY0LCAKLSAgICAxMTg1NjgsIDExODU3MiwgMTE4NTc2LCAxMTg1ODAsIDExODU4NCwgMTE4NTg4LCAxMTg1OTIsIDExODU5NiwgMTE4NjAwLCAKLSAgICAxMTg2MDQsIDExODYwOCwgMTE4NjEyLCAxMTg2MTYsIDExODYyMCwgMTE4NjI0LCAxMTg2MjgsIDExODYzMiwgMTE4NjM2LCAKLSAgICAxMTg2NDAsIDExODY0NCwgMTE4NjQ4LCAxMTg2NTIsIDExODY1NiwgMTE4NjYwLCAxMTg2NjQsIDExODY2OCwgMTE4NjcyLCAKLSAgICAxMTg2NzYsIDExODY4MCwgMTE4Njg0LCAxMTg2ODgsIDExODY5MiwgMTE4Njk2LCAxMTg3MDAsIDExODcwNCwgMTE4NzA4LCAKLSAgICAxMTg3MTIsIDExODcxNiwgMTE4NzIwLCAxMTg3MjQsIDExODcyOCwgMTE4NzMyLCAxMTg3MzYsIDExODc0MCwgMTE4NzQ0LCAKLSAgICAxMTg3NDgsIDExODc1MiwgMTE4NzU2LCAxMTg3NjAsIDExODc2NCwgMTE4NzY4LCAxMTg3NzIsIDExODc3NiwgMTE4NzgwLCAKLSAgICAxMTg3ODQsIDExODc4OCwgMTE4NzkyLCAxMTg3OTYsIDExODgwMCwgMTE4ODA0LCAxMTg4MDgsIDExODgxMiwgMTE4ODE2LCAKLSAgICAxMTg4MjAsIDExODgyNCwgMTE4ODI4LCAxMTg4MzIsIDExODgzNiwgMTE4ODQwLCAxMTg4NDQsIDExODg0OCwgMTE4ODUyLCAKLSAgICAxMTg4NTYsIDExODg2MCwgMTE4ODY0LCAxMTg4NjgsIDExODg3MiwgMTE4ODc2LCAxMTg4ODAsIDExODg4NCwgMTE4ODg4LCAKLSAgICAxMTg4OTIsIDExODg5NiwgMTE4OTAwLCAxMTg5MDQsIDExODkwOCwgMTE4OTEyLCAxMTg5MTYsIDExODkyMCwgMTE4OTI0LCAKLSAgICAxMTg5MjgsIDExODkzMiwgMTE4OTM2LCAxMTg5NDAsIDExODk0NCwgMTE4OTQ4LCAxMTg5NTIsIDExODk1NiwgMTE4OTYwLCAKLSAgICAxMTg5NjQsIDExODk2OCwgMTE4OTcyLCAxMTg5NzYsIDExODk4MCwgMTE4OTg0LCAxMTg5ODgsIDExODk5MiwgMTE4OTk2LCAKLSAgICAxMTkwMDAsIDExOTAwNCwgMTE5MDA4LCAxMTkwMTIsIDExOTAxNiwgMTE5MDIwLCAxMTkwMjQsIDExOTAyOCwgMTE5MDMyLCAKLSAgICAxMTkwMzYsIDExOTA0MCwgMTE5MDQ0LCAxMTkwNDgsIDExOTA1MiwgMTE5MDU2LCAxMTkwNjAsIDExOTA2NCwgMTE5MDY4LCAKLSAgICAxMTkwNzIsIDExOTA3NiwgMTE5MDgwLCAxMTkwODQsIDExOTA4OCwgMTE5MDkyLCAxMTkwOTYsIDExOTEwMCwgMTE5MTA0LCAKLSAgICAxMTkxMDgsIDExOTExMiwgMTE5MTE2LCAxMTkxMjAsIDExOTEyNCwgMTE5MTI4LCAxMTkxMzIsIDExOTEzNiwgMTE5MTQwLCAKLSAgICAxMTkxNDQsIDExOTE0OCwgMTE5MTUyLCAxMTkxNTYsIDExOTE2MCwgMTE5MTY0LCAxMTkxNjgsIDExOTE3MiwgMTE5MTc2LCAKLSAgICAxMTkxODAsIDExOTE4NCwgMTE5MTg4LCAxMTkxOTIsIDExOTE5NiwgMTE5MjAwLCAxMTkyMDQsIDExOTIwOCwgMTE5MjEyLCAKLSAgICAxMTkyMTYsIDExOTIyMCwgMTE5MjI0LCAxMTkyMjgsIDExOTIzMiwgMTE5MjM2LCAxMTkyNDAsIDExOTI0NCwgMTE5MjQ4LCAKLSAgICAxMTkyNTIsIDExOTI1NiwgMTE5MjYwLCAxMTkyNjQsIDExOTI2OCwgMTE5MjcyLCAxMTkyNzYsIDExOTI4MCwgMTE5Mjg0LCAKLSAgICAxMTkyODgsIDExOTI5MiwgMTE5Mjk2LCAxMTkzMDAsIDExOTMwNCwgMTE5MzA4LCAxMTkzMTIsIDExOTMxNiwgMTE5MzIwLCAKLSAgICAxMTkzMjQsIDExOTMyOCwgMTE5MzMyLCAxMTkzMzYsIDExOTM0MCwgMTE5MzQ0LCAxMTkzNDgsIDExOTM1MiwgMTE5MzU2LCAKLSAgICAxMTkzNjAsIDExOTM2NCwgMTE5MzY4LCAxMTkzNzIsIDExOTM3NiwgMTE5MzgwLCAxMTkzODQsIDExOTM4OCwgMTE5MzkyLCAKLSAgICAxMTkzOTYsIDExOTQwMCwgMTE5NDA0LCAxMTk0MDgsIDExOTQxMiwgMTE5NDE2LCAxMTk0MjAsIDExOTQyNCwgMTE5NDI4LCAKLSAgICAxMTk0MzIsIDExOTQzNiwgMTE5NDQwLCAxMTk0NDQsIDExOTQ0OCwgMTE5NDUyLCAxMTk0NTYsIDExOTQ2MCwgMTE5NDY0LCAKLSAgICAxMTk0NjgsIDExOTQ3MiwgMTE5NDc2LCAxMTk0ODAsIDExOTQ4NCwgMTE5NDg4LCAxMTk0OTIsIDExOTQ5NiwgMTE5NTAwLCAKLSAgICAxMTk1MDQsIDExOTUwOCwgMTE5NTEyLCAxMTk1MTYsIDExOTUyMCwgMTE5NTI0LCAxMTk1MjgsIDExOTUzMiwgMTE5NTM2LCAKLSAgICAxMTk1NDAsIDExOTU0NCwgMTE5NTQ4LCAxMTk1NTIsIDExOTU1NiwgMTE5NTYwLCAxMTk1NjQsIDExOTU2OCwgMTE5NTcyLCAKLSAgICAxMTk1NzYsIDExOTU4MCwgMTE5NTg0LCAxMTk1ODgsIDExOTU5MiwgMTE5NTk2LCAxMTk2MDAsIDExOTYwNCwgMTE5NjA4LCAKLSAgICAxMTk2MTIsIDExOTYxNiwgMTE5NjIwLCAxMTk2MjQsIDExOTYyOCwgMTE5NjMyLCAxMTk2MzYsIDExOTY0MCwgMTE5NjQ0LCAKLSAgICAxMTk2NDgsIDExOTY1MiwgMTE5NjU2LCAxMTk2NjAsIDExOTY2NCwgMTE5NjY4LCAxMTk2NzIsIDExOTY3NiwgMTE5NjgwLCAKLSAgICAxMTk2ODQsIDExOTY4OCwgMTE5NjkyLCAxMTk2OTYsIDExOTcwMCwgMTE5NzA0LCAxMTk3MDgsIDExOTcxMiwgMTE5NzE2LCAKLSAgICAxMTk3MjAsIDExOTcyNCwgMTE5NzI4LCAxMTk3MzIsIDExOTczNiwgMTE5NzQwLCAxMTk3NDQsIDExOTc0OCwgMTE5NzUyLCAKLSAgICAxMTk3NTYsIDExOTc2MCwgMTE5NzY0LCAxMTk3NjgsIDExOTc3MiwgMTE5Nzc2LCAxMTk3ODAsIDExOTc4NCwgMTE5Nzg4LCAKLSAgICAxMTk3OTIsIDExOTc5NiwgMTE5ODAwLCAxMTk4MDQsIDExOTgwOCwgMTE5ODEyLCAxMTk4MTYsIDExOTgyMCwgMTE5ODI0LCAKLSAgICAxMTk4MjgsIDExOTgzMiwgMTE5ODM2LCAxMTk4NDAsIDExOTg0NCwgMTE5ODQ4LCAxMTk4NTIsIDExOTg1NiwgMTE5ODYwLCAKLSAgICAxMTk4NjQsIDExOTg2OCwgMTE5ODcyLCAxMTk4NzYsIDExOTg4MCwgMTE5ODg0LCAxMTk4ODgsIDExOTg5MiwgMTE5ODk2LCAKLSAgICAxMTk5MDAsIDExOTkwNCwgMTE5OTA4LCAxMTk5MTIsIDExOTkxNiwgMTE5OTIwLCAxMTk5MjQsIDExOTkyOCwgMTE5OTMyLCAKLSAgICAxMTk5MzYsIDExOTk0MCwgMTE5OTQ0LCAxMTk5NDgsIDExOTk1MiwgMTE5OTU2LCAxMTk5NjAsIDExOTk2NCwgMTE5OTY4LCAKLSAgICAxMTk5NzIsIDExOTk3NiwgMTE5OTgwLCAxMTk5ODQsIDExOTk4OCwgMTE5OTkyLCAxMTk5OTYsIDEyMDAwMCwgMTIwMDA0LCAKLSAgICAxMjAwMDgsIDEyMDAxMiwgMTIwMDE2LCAxMjAwMjAsIDEyMDAyNCwgMTIwMDI4LCAxMjAwMzIsIDEyMDAzNiwgMTIwMDQwLCAKLSAgICAxMjAwNDQsIDEyMDA0OCwgMTIwMDUyLCAxMjAwNTYsIDEyMDA2MCwgMTIwMDY0LCAxMjAwNjgsIDEyMDA3MiwgMTIwMDc2LCAKLSAgICAxMjAwODAsIDEyMDA4NCwgMTIwMDg4LCAxMjAwOTIsIDEyMDA5NiwgMTIwMTAwLCAxMjAxMDQsIDEyMDEwOCwgMTIwMTEyLCAKLSAgICAxMjAxMTYsIDEyMDEyMCwgMTIwMTI0LCAxMjAxMjgsIDEyMDEzMiwgMTIwMTM2LCAxMjAxNDAsIDEyMDE0NCwgMTIwMTQ4LCAKLSAgICAxMjAxNTIsIDEyMDE1NiwgMTIwMTYwLCAxMjAxNjQsIDEyMDE2OCwgMTIwMTcyLCAxMjAxNzYsIDEyMDE4MCwgMTIwMTg0LCAKLSAgICAxMjAxODgsIDEyMDE5MiwgMTIwMTk2LCAxMjAyMDAsIDEyMDIwNCwgMTIwMjA4LCAxMjAyMTIsIDEyMDIxNiwgMTIwMjIwLCAKLSAgICAxMjAyMjQsIDEyMDIyOCwgMTIwMjMyLCAxMjAyMzYsIDEyMDI0MCwgMTIwMjQ0LCAxMjAyNDgsIDEyMDI1MiwgMTIwMjU2LCAKLSAgICAxMjAyNjAsIDEyMDI2NCwgMTIwMjY4LCAxMjAyNzIsIDEyMDI3NiwgMTIwMjgwLCAxMjAyODQsIDEyMDI4OCwgMTIwMjkyLCAKLSAgICAxMjAyOTYsIDEyMDMwMCwgMTIwMzA0LCAxMjAzMDgsIDEyMDMxMiwgMTIwMzE2LCAxMjAzMjAsIDEyMDMyNCwgMTIwMzI4LCAKLSAgICAxMjAzMzIsIDEyMDMzNiwgMTIwMzQwLCAxMjAzNDQsIDEyMDM0OCwgMTIwMzUyLCAxMjAzNTYsIDEyMDM2MCwgMTIwMzY0LCAKLSAgICAxMjAzNjgsIDEyMDM3MiwgMTIwMzc2LCAxMjAzODAsIDEyMDM4NCwgMTIwMzg4LCAxMjAzOTIsIDEyMDM5NiwgMTIwNDAwLCAKLSAgICAxMjA0MDQsIDEyMDQwOCwgMTIwNDEyLCAxMjA0MTYsIDEyMDQyMCwgMTIwNDI0LCAxMjA0MjgsIDEyMDQzMiwgMTIwNDM2LCAKLSAgICAxMjA0NDAsIDEyMDQ0NCwgMTIwNDQ4LCAxMjA0NTIsIDEyMDQ1NiwgMTIwNDYwLCAxMjA0NjQsIDEyMDQ2OCwgMTIwNDcyLCAKLSAgICAxMjA0NzYsIDEyMDQ4MCwgMTIwNDg0LCAxMjA0ODgsIDEyMDQ5MiwgMTIwNDk2LCAxMjA1MDAsIDEyMDUwNCwgMTIwNTA4LCAKLSAgICAxMjA1MTIsIDEyMDUxNiwgMTIwNTIwLCAxMjA1MjQsIDEyMDUyOCwgMTIwNTMyLCAxMjA1MzYsIDEyMDU0MCwgMTIwNTQ0LCAKLSAgICAxMjA1NDgsIDEyMDU1MiwgMTIwNTU2LCAxMjA1NjAsIDEyMDU2NCwgMTIwNTY4LCAxMjA1NzIsIDEyMDU3NiwgMTIwNTgwLCAKLSAgICAxMjA1ODQsIDEyMDU4OCwgMTIwNTkyLCAxMjA1OTYsIDEyMDYwMCwgMTIwNjA0LCAxMjA2MDgsIDEyMDYxMiwgMTIwNjE2LCAKLSAgICAxMjA2MjAsIDEyMDYyNCwgMTIwNjI4LCAxMjA2MzIsIDEyMDYzNiwgMTIwNjQwLCAxMjA2NDQsIDEyMDY0OCwgMTIwNjUyLCAKLSAgICAxMjA2NTYsIDEyMDY2MCwgMTIwNjY0LCAxMjA2NjgsIDEyMDY3MiwgMTIwNjc2LCAxMjA2ODAsIDEyMDY4NCwgMTIwNjg4LCAKLSAgICAxMjA2OTIsIDEyMDY5NiwgMTIwNzAwLCAxMjA3MDQsIDEyMDcwOCwgMTIwNzEyLCAxMjA3MTYsIDEyMDcyMCwgMTIwNzI0LCAKLSAgICAxMjA3MjgsIDEyMDczMiwgMTIwNzM2LCAxMjA3NDAsIDEyMDc0NCwgMTIwNzQ4LCAxMjA3NTIsIDEyMDc1NiwgMTIwNzYwLCAKLSAgICAxMjA3NjQsIDEyMDc2OCwgMTIwNzcyLCAxMjA3NzYsIDEyMDc4MCwgMTIwNzg0LCAxMjA3ODgsIDEyMDc5MiwgMTIwNzk2LCAKLSAgICAxMjA4MDAsIDEyMDgwNCwgMTIwODA4LCAxMjA4MTIsIDEyMDgxNiwgMTIwODIwLCAxMjA4MjQsIDEyMDgyOCwgMTIwODMyLCAKLSAgICAxMjA4MzYsIDEyMDg0MCwgMTIwODQ0LCAxMjA4NDgsIDEyMDg1MiwgMTIwODU2LCAxMjA4NjAsIDEyMDg2NCwgMTIwODY4LCAKLSAgICAxMjA4NzIsIDEyMDg3NiwgMTIwODgwLCAxMjA4ODQsIDEyMDg4OCwgMTIwODkyLCAxMjA4OTYsIDEyMDkwMCwgMTIwOTA0LCAKLSAgICAxMjA5MDgsIDEyMDkxMiwgMTIwOTE2LCAxMjA5MjAsIDEyMDkyNCwgMTIwOTI4LCAxMjA5MzIsIDEyMDkzNiwgMTIwOTQwLCAKLSAgICAxMjA5NDQsIDEyMDk0OCwgMTIwOTUyLCAxMjA5NTYsIDEyMDk2MCwgMTIwOTY0LCAxMjA5NjgsIDEyMDk3MiwgMTIwOTc2LCAKLSAgICAxMjA5ODAsIDEyMDk4NCwgMTIwOTg4LCAxMjA5OTIsIDEyMDk5NiwgMTIxMDAwLCAxMjEwMDQsIDEyMTAwOCwgMTIxMDEyLCAKLSAgICAxMjEwMTYsIDEyMTAyMCwgMTIxMDI0LCAxMjEwMjgsIDEyMTAzMiwgMTIxMDM2LCAxMjEwNDAsIDEyMTA0NCwgMTIxMDQ4LCAKLSAgICAxMjEwNTIsIDEyMTA1NiwgMTIxMDYwLCAxMjEwNjQsIDEyMTA2OCwgMTIxMDcyLCAxMjEwNzYsIDEyMTA4MCwgMTIxMDg0LCAKLSAgICAxMjEwODgsIDEyMTA5MiwgMTIxMDk2LCAxMjExMDAsIDEyMTEwNCwgMTIxMTA4LCAxMjExMTIsIDEyMTExNiwgMTIxMTIwLCAKLSAgICAxMjExMjQsIDEyMTEyOCwgMTIxMTMyLCAxMjExMzYsIDEyMTE0MCwgMTIxMTQ0LCAxMjExNDgsIDEyMTE1MiwgMTIxMTU2LCAKLSAgICAxMjExNjAsIDEyMTE2NCwgMTIxMTY4LCAxMjExNzIsIDEyMTE3NiwgMTIxMTgwLCAxMjExODQsIDEyMTE4OCwgMTIxMTkyLCAKLSAgICAxMjExOTYsIDEyMTIwMCwgMTIxMjA0LCAxMjEyMDgsIDEyMTIxMiwgMTIxMjE2LCAxMjEyMjAsIDEyMTIyNCwgMTIxMjI4LCAKLSAgICAxMjEyMzIsIDEyMTIzNiwgMTIxMjQwLCAxMjEyNDQsIDEyMTI0OCwgMTIxMjUyLCAxMjEyNTYsIDEyMTI2MCwgMTIxMjY0LCAKLSAgICAxMjEyNjgsIDEyMTI3MiwgMTIxMjc2LCAxMjEyODAsIDEyMTI4NCwgMTIxMjg4LCAxMjEyOTIsIDEyMTI5NiwgMTIxMzAwLCAKLSAgICAxMjEzMDQsIDEyMTMwOCwgMTIxMzEyLCAxMjEzMTYsIDEyMTMyMCwgMTIxMzI0LCAxMjEzMjgsIDEyMTMzMiwgMTIxMzM2LCAKLSAgICAxMjEzNDAsIDEyMTM0NCwgMTIxMzQ4LCAxMjEzNTIsIDEyMTM1NiwgMTIxMzYwLCAxMjEzNjQsIDEyMTM2OCwgMTIxMzcyLCAKLSAgICAxMjEzNzYsIDEyMTM4MCwgMTIxMzg0LCAxMjEzODgsIDEyMTM5MiwgMTIxMzk2LCAxMjE0MDAsIDEyMTQwNCwgMTIxNDA4LCAKLSAgICAxMjE0MTIsIDEyMTQxNiwgMTIxNDIwLCAxMjE0MjQsIDEyMTQyOCwgMTIxNDMyLCAxMjE0MzYsIDEyMTQ0MCwgMTIxNDQ0LCAKLSAgICAxMjE0NDgsIDEyMTQ1MiwgMTIxNDU2LCAxMjE0NjAsIDEyMTQ2NCwgMTIxNDY4LCAxMjE0NzIsIDEyMTQ3NiwgMTIxNDgwLCAKLSAgICAxMjE0ODQsIDEyMTQ4OCwgMTIxNDkyLCAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MDgsIDEyMTUxMiwgMTIxNTE2LCAKLSAgICAxMjE1MjAsIDEyMTUyNCwgMTIxNTI4LCAxMjE1MzIsIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAKLSAgICAxMjE1NTYsIDEyMTU2MCwgMTIxNTY0LCAxMjE1NjgsIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAKLSAgICAxMjE1OTIsIDEyMTU5NiwgMTIxNjAwLCAxMjE2MDQsIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAKLSAgICAxMjE2MjgsIDEyMTYzMiwgMTIxNjM2LCAxMjE2NDAsIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAKLSAgICAxMjE2NjQsIDEyMTY2OCwgMTIxNjcyLCAxMjE2NzYsIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDEyMTY5MiwgMTIxNjk2LCAKLSAgICAxMjE3MDAsIDEyMTcwNCwgMTIxNzA4LCAxMjE3MTIsIDEyMTcxNiwgMTIxNzIwLCAxMjE3MjQsIDEyMTcyOCwgMTIxNzMyLCAKLSAgICAxMjE3MzYsIDEyMTc0MCwgMTIxNzQ0LCAxMjE3NDgsIDEyMTc1MiwgMTIxNzU2LCAxMjE3NjAsIDEyMTc2NCwgMTIxNzY4LCAKLSAgICAxMjE3NzIsIDEyMTc3NiwgMTIxNzgwLCAxMjE3ODQsIDEyMTc4OCwgMTIxNzkyLCAxMjE3OTYsIDEyMTgwMCwgMTIxODA0LCAKLSAgICAxMjE4MDgsIDEyMTgxMiwgMTIxODE2LCAxMjE4MjAsIDEyMTgyNCwgMTIxODI4LCAxMjE4MzIsIDEyMTgzNiwgMTIxODQwLCAKLSAgICAxMjE4NDQsIDEyMTg0OCwgMTIxODUyLCAxMjE4NTYsIDEyMTg2MCwgMTIxODY0LCAxMjE4NjgsIDEyMTg3MiwgMTIxODc2LCAKLSAgICAxMjE4ODAsIDEyMTg4NCwgMTIxODg4LCAxMjE4OTIsIDEyMTg5NiwgMTIxOTAwLCAxMjE5MDQsIDEyMTkwOCwgMTIxOTEyLCAKLSAgICAxMjE5MTYsIDEyMTkyMCwgMTIxOTI0LCAxMjE5MjgsIDEyMTkzMiwgMTIxOTM2LCAxMjE5NDAsIDEyMTk0NCwgMTIxOTQ4LCAKLSAgICAxMjE5NTIsIDEyMTk1NiwgMTIxOTYwLCAxMjE5NjQsIDEyMTk2OCwgMTIxOTcyLCAxMjE5NzYsIDEyMTk4MCwgMTIxOTg0LCAKLSAgICAxMjE5ODgsIDEyMTk5MiwgMTIxOTk2LCAxMjIwMDAsIDEyMjAwNCwgMTIyMDA4LCAxMjIwMTIsIDEyMjAxNiwgMTIyMDIwLCAKLSAgICAxMjIwMjQsIDEyMjAyOCwgMTIyMDMyLCAxMjIwMzYsIDEyMjA0MCwgMTIyMDQ0LCAxMjIwNDgsIDEyMjA1MiwgMTIyMDU2LCAKLSAgICAxMjIwNjAsIDEyMjA2NCwgMTIyMDY4LCAxMjIwNzIsIDEyMjA3NiwgMTIyMDgwLCAxMjIwODQsIDEyMjA4OCwgMTIyMDkyLCAKLSAgICAxMjIwOTYsIDEyMjEwMCwgMTIyMTA0LCAxMjIxMDgsIDEyMjExMiwgMTIyMTE2LCAxMjIxMjAsIDEyMjEyNCwgMTIyMTI4LCAKLSAgICAxMjIxMzIsIDEyMjEzNiwgMTIyMTQwLCAxMjIxNDQsIDEyMjE0OCwgMTIyMTUyLCAxMjIxNTYsIDEyMjE2MCwgMTIyMTY0LCAKLSAgICAxMjIxNjgsIDEyMjE3MiwgMTIyMTc2LCAxMjIxODAsIDEyMjE4NCwgMTIyMTg4LCAxMjIxOTIsIDEyMjE5NiwgMTIyMjAwLCAKLSAgICAxMjIyMDQsIDEyMjIwOCwgMTIyMjEyLCAxMjIyMTYsIDEyMjIyMCwgMTIyMjI0LCAxMjIyMjgsIDEyMjIzMiwgMTIyMjM2LCAKLSAgICAxMjIyNDAsIDEyMjI0NCwgMTIyMjQ4LCAxMjIyNTIsIDEyMjI1NiwgMTIyMjYwLCAxMjIyNjQsIDEyMjI2OCwgMTIyMjcyLCAKLSAgICAxMjIyNzYsIDEyMjI4MCwgMTIyMjg0LCAxMjIyODgsIDEyMjI5MiwgMTIyMjk2LCAxMjIzMDAsIDEyMjMwNCwgMTIyMzA4LCAKLSAgICAxMjIzMTIsIDEyMjMxNiwgMTIyMzIwLCAxMjIzMjQsIDEyMjMyOCwgMTIyMzMyLCAxMjIzMzYsIDEyMjM0MCwgMTIyMzQ0LCAKLSAgICAxMjIzNDgsIDEyMjM1MiwgMTIyMzU2LCAxMjIzNjAsIDEyMjM2NCwgMTIyMzY4LCAxMjIzNzIsIDEyMjM3NiwgMTIyMzgwLCAKLSAgICAxMjIzODQsIDEyMjM4OCwgMTIyMzkyLCAxMjIzOTYsIDEyMjQwMCwgMTIyNDA0LCAxMjI0MDgsIDEyMjQxMiwgMTIyNDE2LCAKLSAgICAxMjI0MjAsIDEyMjQyNCwgMTIyNDI4LCAxMjI0MzIsIDEyMjQzNiwgMTIyNDQwLCAxMjI0NDQsIDEyMjQ0OCwgMTIyNDUyLCAKLSAgICAxMjI0NTYsIDEyMjQ2MCwgMTIyNDY0LCAxMjI0NjgsIDEyMjQ3MiwgMTIyNDc2LCAxMjI0ODAsIDEyMjQ4NCwgMTIyNDg4LCAKLSAgICAxMjI0OTIsIDEyMjQ5NiwgMTIyNTAwLCAxMjI1MDQsIDEyMjUwOCwgMTIyNTEyLCAxMjI1MTYsIDEyMjUyMCwgMTIyNTI0LCAKLSAgICAxMjI1MjgsIDEyMjUzMiwgMTIyNTM2LCAxMjI1NDAsIDEyMjU0NCwgMTIyNTQ4LCAxMjI1NTIsIDEyMjU1NiwgMTIyNTYwLCAKLSAgICAxMjI1NjQsIDEyMjU2OCwgMTIyNTcyLCAxMjI1NzYsIDEyMjU4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwODAwLCAKKyAgICAxMjA4MDQsIDEyMDgwOCwgMTIwODEyLCAxMjA4MTYsIDEyMDgyMCwgMTIwODI0LCAxMjA4MjgsIDEyMDgzMiwgMTIwODM2LCAKKyAgICAxMjA4NDAsIDEyMDg0NCwgMTIwODQ4LCAxMjA4NTIsIDEyMDg1NiwgMTIwODYwLCAxMjA4NjQsIDEyMDg2OCwgMTIwODcyLCAKKyAgICAxMjA4NzYsIDEyMDg4MCwgMTIwODg0LCAxMjA4ODgsIDEyMDg5MiwgMTIwODk2LCAxMjA5MDAsIDEyMDkwNCwgMTIwOTA4LCAKKyAgICAxMjA5MTIsIDEyMDkxNiwgMTIwOTIwLCAxMjA5MjQsIDEyMDkyOCwgMTIwOTMyLCAxMjA5MzYsIDEyMDk0MCwgMTIwOTQ0LCAKKyAgICAxMjA5NDgsIDEyMDk1MiwgMTIwOTU2LCAxMjA5NjAsIDEyMDk2NCwgMTIwOTY4LCAxMjA5NzIsIDEyMDk3NiwgMTIwOTgwLCAKKyAgICAxMjA5ODQsIDEyMDk4OCwgMTIwOTkyLCAxMjA5OTYsIDEyMTAwMCwgMTIxMDA0LCAxMjEwMDgsIDEyMTAxMiwgMTIxMDE2LCAKKyAgICAxMjEwMjAsIDEyMTAyNCwgMTIxMDI4LCAxMjEwMzIsIDEyMTAzNiwgMTIxMDQwLCAxMjEwNDQsIDEyMTA0OCwgMTIxMDUyLCAKKyAgICAxMjEwNTYsIDEyMTA2MCwgMTIxMDY0LCAxMjEwNjgsIDEyMTA3MiwgMTIxMDc2LCAxMjEwODAsIDEyMTA4NCwgMTIxMDg4LCAKKyAgICAxMjEwOTIsIDEyMTA5NiwgMTIxMTAwLCAxMjExMDQsIDEyMTEwOCwgMTIxMTEyLCAxMjExMTYsIDEyMTEyMCwgMTIxMTI0LCAKKyAgICAxMjExMjgsIDEyMTEzMiwgMTIxMTM2LCAxMjExNDAsIDEyMTE0NCwgMTIxMTQ4LCAxMjExNTIsIDEyMTE1NiwgMTIxMTYwLCAKKyAgICAxMjExNjQsIDEyMTE2OCwgMTIxMTcyLCAxMjExNzYsIDEyMTE4MCwgMTIxMTg0LCAxMjExODgsIDEyMTE5MiwgMTIxMTk2LCAKKyAgICAxMjEyMDAsIDEyMTIwNCwgMTIxMjA4LCAxMjEyMTIsIDEyMTIxNiwgMTIxMjIwLCAxMjEyMjQsIDEyMTIyOCwgMTIxMjMyLCAKKyAgICAxMjEyMzYsIDEyMTI0MCwgMTIxMjQ0LCAxMjEyNDgsIDEyMTI1MiwgMTIxMjU2LCAxMjEyNjAsIDEyMTI2NCwgMTIxMjY4LCAKKyAgICAxMjEyNzIsIDEyMTI3NiwgMTIxMjgwLCAxMjEyODQsIDEyMTI4OCwgMTIxMjkyLCAxMjEyOTYsIDEyMTMwMCwgMTIxMzA0LCAKKyAgICAxMjEzMDgsIDEyMTMxMiwgMTIxMzE2LCAxMjEzMjAsIDEyMTMyNCwgMTIxMzI4LCAxMjEzMzIsIDEyMTMzNiwgMTIxMzQwLCAKKyAgICAxMjEzNDQsIDEyMTM0OCwgMTIxMzUyLCAxMjEzNTYsIDEyMTM2MCwgMTIxMzY0LCAxMjEzNjgsIDEyMTM3MiwgMTIxMzc2LCAKKyAgICAxMjEzODAsIDEyMTM4NCwgMTIxMzg4LCAxMjEzOTIsIDEyMTM5NiwgMTIxNDAwLCAxMjE0MDQsIDEyMTQwOCwgMTIxNDEyLCAKKyAgICAxMjE0MTYsIDEyMTQyMCwgMTIxNDI0LCAxMjE0MjgsIDEyMTQzMiwgMTIxNDM2LCAxMjE0NDAsIDEyMTQ0NCwgMTIxNDQ4LCAKKyAgICAxMjE0NTIsIDEyMTQ1NiwgMTIxNDYwLCAxMjE0NjQsIDEyMTQ2OCwgMTIxNDcyLCAxMjE0NzYsIDEyMTQ4MCwgMTIxNDg0LCAKKyAgICAxMjE0ODgsIDEyMTQ5MiwgMTIxNDk2LCAxMjE1MDAsIDEyMTUwNCwgMTIxNTA4LCAxMjE1MTIsIDEyMTUxNiwgMTIxNTIwLCAKKyAgICAxMjE1MjQsIDEyMTUyOCwgMTIxNTMyLCAxMjE1MzYsIDEyMTU0MCwgMTIxNTQ0LCAxMjE1NDgsIDEyMTU1MiwgMTIxNTU2LCAKKyAgICAxMjE1NjAsIDEyMTU2NCwgMTIxNTY4LCAxMjE1NzIsIDEyMTU3NiwgMTIxNTgwLCAxMjE1ODQsIDEyMTU4OCwgMTIxNTkyLCAKKyAgICAxMjE1OTYsIDEyMTYwMCwgMTIxNjA0LCAxMjE2MDgsIDEyMTYxMiwgMTIxNjE2LCAxMjE2MjAsIDEyMTYyNCwgMTIxNjI4LCAKKyAgICAxMjE2MzIsIDEyMTYzNiwgMTIxNjQwLCAxMjE2NDQsIDEyMTY0OCwgMTIxNjUyLCAxMjE2NTYsIDEyMTY2MCwgMTIxNjY0LCAKKyAgICAxMjE2NjgsIDEyMTY3MiwgMTIxNjc2LCAxMjE2ODAsIDEyMTY4NCwgMTIxNjg4LCAxMjE2OTIsIDEyMTY5NiwgMTIxNzAwLCAKKyAgICAxMjE3MDQsIDEyMTcwOCwgMTIxNzEyLCAxMjE3MTYsIDEyMTcyMCwgMTIxNzI0LCAxMjE3MjgsIDEyMTczMiwgMTIxNzM2LCAKKyAgICAxMjE3NDAsIDEyMTc0NCwgMTIxNzQ4LCAxMjE3NTIsIDEyMTc1NiwgMTIxNzYwLCAxMjE3NjQsIDEyMTc2OCwgMTIxNzcyLCAKKyAgICAxMjE3NzYsIDEyMTc4MCwgMTIxNzg0LCAxMjE3ODgsIDEyMTc5MiwgMTIxNzk2LCAxMjE4MDAsIDEyMTgwNCwgMTIxODA4LCAKKyAgICAxMjE4MTIsIDEyMTgxNiwgMTIxODIwLCAxMjE4MjQsIDEyMTgyOCwgMTIxODMyLCAxMjE4MzYsIDEyMTg0MCwgMTIxODQ0LCAKKyAgICAxMjE4NDgsIDEyMTg1MiwgMTIxODU2LCAxMjE4NjAsIDEyMTg2NCwgMTIxODY4LCAxMjE4NzIsIDEyMTg3NiwgMTIxODgwLCAKKyAgICAxMjE4ODQsIDEyMTg4OCwgMTIxODkyLCAxMjE4OTYsIDEyMTkwMCwgMTIxOTA0LCAxMjE5MDgsIDEyMTkxMiwgMTIxOTE2LCAKKyAgICAxMjE5MjAsIDEyMTkyNCwgMTIxOTI4LCAxMjE5MzIsIDEyMTkzNiwgMTIxOTQwLCAxMjE5NDQsIDEyMTk0OCwgMTIxOTUyLCAKKyAgICAxMjE5NTYsIDEyMTk2MCwgMTIxOTY0LCAxMjE5NjgsIDEyMTk3MiwgMTIxOTc2LCAxMjE5ODAsIDEyMTk4NCwgMTIxOTg4LCAKKyAgICAxMjE5OTIsIDEyMTk5NiwgMTIyMDAwLCAxMjIwMDQsIDEyMjAwOCwgMTIyMDEyLCAxMjIwMTYsIDEyMjAyMCwgMTIyMDI0LCAKKyAgICAxMjIwMjgsIDEyMjAzMiwgMTIyMDM2LCAxMjIwNDAsIDEyMjA0NCwgMTIyMDQ4LCAxMjIwNTIsIDEyMjA1NiwgMTIyMDYwLCAKKyAgICAxMjIwNjQsIDEyMjA2OCwgMTIyMDcyLCAxMjIwNzYsIDEyMjA4MCwgMTIyMDg0LCAxMjIwODgsIDEyMjA5MiwgMTIyMDk2LCAKKyAgICAxMjIxMDAsIDEyMjEwNCwgMTIyMTA4LCAxMjIxMTIsIDEyMjExNiwgMTIyMTIwLCAxMjIxMjQsIDEyMjEyOCwgMTIyMTMyLCAKKyAgICAxMjIxMzYsIDEyMjE0MCwgMTIyMTQ0LCAxMjIxNDgsIDEyMjE1MiwgMTIyMTU2LCAxMjIxNjAsIDEyMjE2NCwgMTIyMTY4LCAKKyAgICAxMjIxNzIsIDEyMjE3NiwgMTIyMTgwLCAxMjIxODQsIDEyMjE4OCwgMTIyMTkyLCAxMjIxOTYsIDEyMjIwMCwgMTIyMjA0LCAKKyAgICAxMjIyMDgsIDEyMjIxMiwgMTIyMjE2LCAxMjIyMjAsIDEyMjIyNCwgMTIyMjI4LCAxMjIyMzIsIDEyMjIzNiwgMTIyMjQwLCAKKyAgICAxMjIyNDQsIDEyMjI0OCwgMTIyMjUyLCAxMjIyNTYsIDEyMjI2MCwgMTIyMjY0LCAxMjIyNjgsIDEyMjI3MiwgMTIyMjc2LCAKKyAgICAxMjIyODAsIDEyMjI4NCwgMTIyMjg4LCAxMjIyOTIsIDEyMjI5NiwgMTIyMzAwLCAxMjIzMDQsIDEyMjMwOCwgMTIyMzEyLCAKKyAgICAxMjIzMTYsIDEyMjMyMCwgMTIyMzI0LCAxMjIzMjgsIDEyMjMzMiwgMTIyMzM2LCAxMjIzNDAsIDEyMjM0NCwgMTIyMzQ4LCAKKyAgICAxMjIzNTIsIDEyMjM1NiwgMTIyMzYwLCAxMjIzNjQsIDEyMjM2OCwgMTIyMzcyLCAxMjIzNzYsIDEyMjM4MCwgMTIyMzg0LCAKKyAgICAxMjIzODgsIDEyMjM5MiwgMTIyMzk2LCAxMjI0MDAsIDEyMjQwNCwgMTIyNDA4LCAxMjI0MTIsIDEyMjQxNiwgMTIyNDIwLCAKKyAgICAxMjI0MjQsIDEyMjQyOCwgMTIyNDMyLCAxMjI0MzYsIDEyMjQ0MCwgMTIyNDQ0LCAxMjI0NDgsIDEyMjQ1MiwgMTIyNDU2LCAKKyAgICAxMjI0NjAsIDEyMjQ2NCwgMTIyNDY4LCAxMjI0NzIsIDEyMjQ3NiwgMTIyNDgwLCAxMjI0ODQsIDEyMjQ4OCwgMTIyNDkyLCAKKyAgICAxMjI0OTYsIDEyMjUwMCwgMTIyNTA0LCAxMjI1MDgsIDEyMjUxMiwgMTIyNTE2LCAxMjI1MjAsIDEyMjUyNCwgMTIyNTI4LCAKKyAgICAxMjI1MzIsIDEyMjUzNiwgMTIyNTQwLCAxMjI1NDQsIDEyMjU0OCwgMTIyNTUyLCAxMjI1NTYsIDEyMjU2MCwgMTIyNTY0LCAKKyAgICAxMjI1NjgsIDEyMjU3MiwgMTIyNTc2LCAxMjI1ODAsIDEyMjU4NCwgMTIyNTg4LCAxMjI1OTIsIDEyMjU5NiwgMTIyNjAwLCAKKyAgICAxMjI2MDQsIDEyMjYwOCwgMTIyNjEyLCAxMjI2MTYsIDEyMjYyMCwgMTIyNjI0LCAxMjI2MjgsIDEyMjYzMiwgMTIyNjM2LCAKKyAgICAxMjI2NDAsIDEyMjY0NCwgMTIyNjQ4LCAxMjI2NTIsIDEyMjY1NiwgMTIyNjYwLCAxMjI2NjQsIDEyMjY2OCwgMTIyNjcyLCAKKyAgICAxMjI2NzYsIDEyMjY4MCwgMTIyNjg0LCAxMjI2ODgsIDEyMjY5MiwgMTIyNjk2LCAxMjI3MDAsIDEyMjcwNCwgMTIyNzA4LCAKKyAgICAxMjI3MTIsIDEyMjcxNiwgMTIyNzIwLCAxMjI3MjQsIDEyMjcyOCwgMTIyNzMyLCAxMjI3MzYsIDEyMjc0MCwgMTIyNzQ0LCAKKyAgICAxMjI3NDgsIDEyMjc1MiwgMTIyNzU2LCAxMjI3NjAsIDEyMjc2NCwgMTIyNzY4LCAxMjI3NzIsIDEyMjc3NiwgMTIyNzgwLCAKKyAgICAxMjI3ODQsIDEyMjc4OCwgMTIyNzkyLCAxMjI3OTYsIDEyMjgwMCwgMTIyODA0LCAxMjI4MDgsIDEyMjgxMiwgMTIyODE2LCAKKyAgICAxMjI4MjAsIDEyMjgyNCwgMTIyODI4LCAxMjI4MzIsIDEyMjgzNiwgMTIyODQwLCAxMjI4NDQsIDEyMjg0OCwgMTIyODUyLCAKKyAgICAxMjI4NTYsIDEyMjg2MCwgMTIyODY0LCAxMjI4NjgsIDEyMjg3MiwgMTIyODc2LCAxMjI4ODAsIDEyMjg4NCwgMTIyODg4LCAKKyAgICAxMjI4OTIsIDEyMjg5NiwgMTIyOTAwLCAxMjI5MDQsIDEyMjkwOCwgMTIyOTEyLCAxMjI5MTYsIDEyMjkyMCwgMTIyOTI0LCAKKyAgICAxMjI5MjgsIDEyMjkzMiwgMTIyOTM2LCAxMjI5NDAsIDEyMjk0NCwgMTIyOTQ4LCAxMjI5NTIsIDEyMjk1NiwgMTIyOTYwLCAKKyAgICAxMjI5NjQsIDEyMjk2OCwgMTIyOTcyLCAxMjI5NzYsIDEyMjk4MCwgMTIyOTg0LCAxMjI5ODgsIDEyMjk5MiwgMTIyOTk2LCAKKyAgICAxMjMwMDAsIDEyMzAwNCwgMTIzMDA4LCAxMjMwMTIsIDEyMzAxNiwgMTIzMDIwLCAxMjMwMjQsIDEyMzAyOCwgMTIzMDMyLCAKKyAgICAxMjMwMzYsIDEyMzA0MCwgMTIzMDQ0LCAxMjMwNDgsIDEyMzA1MiwgMTIzMDU2LCAxMjMwNjAsIDEyMzA2NCwgMTIzMDY4LCAKKyAgICAxMjMwNzIsIDEyMzA3NiwgMTIzMDgwLCAxMjMwODQsIDEyMzA4OCwgMTIzMDkyLCAxMjMwOTYsIDEyMzEwMCwgMTIzMTA0LCAKKyAgICAxMjMxMDgsIDEyMzExMiwgMTIzMTE2LCAxMjMxMjAsIDEyMzEyNCwgMTIzMTI4LCAxMjMxMzIsIDEyMzEzNiwgMTIzMTQwLCAKKyAgICAxMjMxNDQsIDEyMzE0OCwgMTIzMTUyLCAxMjMxNTYsIDEyMzE2MCwgMTIzMTY0LCAxMjMxNjgsIDEyMzE3MiwgMTIzMTc2LCAKKyAgICAxMjMxODAsIDEyMzE4NCwgMTIzMTg4LCAxMjMxOTIsIDEyMzE5NiwgMTIzMjAwLCAxMjMyMDQsIDEyMzIwOCwgMTIzMjEyLCAKKyAgICAxMjMyMTYsIDEyMzIyMCwgMTIzMjI0LCAxMjMyMjgsIDEyMzIzMiwgMTIzMjM2LCAxMjMyNDAsIDEyMzI0NCwgMTIzMjQ4LCAKKyAgICAxMjMyNTIsIDEyMzI1NiwgMTIzMjYwLCAxMjMyNjQsIDEyMzI2OCwgMTIzMjcyLCAxMjMyNzYsIDEyMzI4MCwgMTIzMjg0LCAKKyAgICAxMjMyODgsIDEyMzI5MiwgMTIzMjk2LCAxMjMzMDAsIDEyMzMwNCwgMTIzMzA4LCAxMjMzMTIsIDEyMzMxNiwgMTIzMzIwLCAKKyAgICAxMjMzMjQsIDEyMzMyOCwgMTIzMzMyLCAxMjMzMzYsIDEyMzM0MCwgMTIzMzQ0LCAxMjMzNDgsIDEyMzM1MiwgMTIzMzU2LCAKKyAgICAxMjMzNjAsIDEyMzM2NCwgMTIzMzY4LCAxMjMzNzIsIDEyMzM3NiwgMTIzMzgwLCAxMjMzODQsIDEyMzM4OCwgMTIzMzkyLCAKKyAgICAxMjMzOTYsIDEyMzQwMCwgMTIzNDA0LCAxMjM0MDgsIDEyMzQxMiwgMTIzNDE2LCAxMjM0MjAsIDEyMzQyNCwgMTIzNDI4LCAKKyAgICAxMjM0MzIsIDEyMzQzNiwgMTIzNDQwLCAxMjM0NDQsIDEyMzQ0OCwgMTIzNDUyLCAxMjM0NTYsIDEyMzQ2MCwgMTIzNDY0LCAKKyAgICAxMjM0NjgsIDEyMzQ3MiwgMTIzNDc2LCAxMjM0ODAsIDEyMzQ4NCwgMTIzNDg4LCAxMjM0OTIsIDEyMzQ5NiwgMTIzNTAwLCAKKyAgICAxMjM1MDQsIDEyMzUwOCwgMTIzNTEyLCAxMjM1MTYsIDEyMzUyMCwgMTIzNTI0LCAxMjM1MjgsIDEyMzUzMiwgMTIzNTM2LCAKKyAgICAxMjM1NDAsIDEyMzU0NCwgMTIzNTQ4LCAxMjM1NTIsIDEyMzU1NiwgMTIzNTYwLCAxMjM1NjQsIDEyMzU2OCwgMTIzNTcyLCAKKyAgICAxMjM1NzYsIDEyMzU4MCwgMTIzNTg0LCAxMjM1ODgsIDEyMzU5MiwgMTIzNTk2LCAxMjM2MDAsIDEyMzYwNCwgMTIzNjA4LCAKKyAgICAxMjM2MTIsIDEyMzYxNiwgMTIzNjIwLCAxMjM2MjQsIDEyMzYyOCwgMTIzNjMyLCAxMjM2MzYsIDEyMzY0MCwgMTIzNjQ0LCAKKyAgICAxMjM2NDgsIDEyMzY1MiwgMTIzNjU2LCAxMjM2NjAsIDEyMzY2NCwgMTIzNjY4LCAxMjM2NzIsIDEyMzY3NiwgMTIzNjgwLCAKKyAgICAxMjM2ODQsIDEyMzY4OCwgMTIzNjkyLCAxMjM2OTYsIDEyMzcwMCwgMTIzNzA0LCAxMjM3MDgsIDEyMzcxMiwgMTIzNzE2LCAKKyAgICAxMjM3MjAsIDEyMzcyNCwgMTIzNzI4LCAxMjM3MzIsIDEyMzczNiwgMTIzNzQwLCAxMjM3NDQsIDEyMzc0OCwgMTIzNzUyLCAKKyAgICAxMjM3NTYsIDEyMzc2MCwgMTIzNzY0LCAxMjM3NjgsIDEyMzc3MiwgMTIzNzc2LCAxMjM3ODAsIDEyMzc4NCwgMTIzNzg4LCAKKyAgICAxMjM3OTIsIDEyMzc5NiwgMTIzODAwLCAxMjM4MDQsIDEyMzgwOCwgMTIzODEyLCAxMjM4MTYsIDEyMzgyMCwgMTIzODI0LCAKKyAgICAxMjM4MjgsIDEyMzgzMiwgMTIzODM2LCAxMjM4NDAsIDEyMzg0NCwgMTIzODQ4LCAxMjM4NTIsIDEyMzg1NiwgMTIzODYwLCAKKyAgICAxMjM4NjQsIDEyMzg2OCwgMTIzODcyLCAxMjM4NzYsIDEyMzg4MCwgMTIzODg0LCAxMjM4ODgsIDEyMzg5MiwgMTIzODk2LCAKKyAgICAxMjM5MDAsIDEyMzkwNCwgMTIzOTA4LCAxMjM5MTIsIDEyMzkxNiwgMTIzOTIwLCAxMjM5MjQsIDEyMzkyOCwgMTIzOTMyLCAKKyAgICAxMjM5MzYsIDEyMzk0MCwgMTIzOTQ0LCAxMjM5NDgsIDEyMzk1MiwgMTIzOTU2LCAxMjM5NjAsIDEyMzk2NCwgMTIzOTY4LCAKKyAgICAxMjM5NzIsIDEyMzk3NiwgMTIzOTgwLCAxMjM5ODQsIDEyMzk4OCwgMTIzOTkyLCAxMjM5OTYsIDEyNDAwMCwgMTI0MDA0LCAKKyAgICAxMjQwMDgsIDEyNDAxMiwgMTI0MDE2LCAxMjQwMjAsIDEyNDAyNCwgMTI0MDI4LCAxMjQwMzIsIDEyNDAzNiwgMTI0MDQwLCAKKyAgICAxMjQwNDQsIDEyNDA0OCwgMTI0MDUyLCAxMjQwNTYsIDEyNDA2MCwgMTI0MDY0LCAxMjQwNjgsIDEyNDA3MiwgMTI0MDc2LCAKKyAgICAxMjQwODAsIDEyNDA4NCwgMTI0MDg4LCAxMjQwOTIsIDEyNDA5NiwgMTI0MTAwLCAxMjQxMDQsIDEyNDEwOCwgMTI0MTEyLCAKKyAgICAxMjQxMTYsIDEyNDEyMCwgMTI0MTI0LCAxMjQxMjgsIDEyNDEzMiwgMTI0MTM2LCAxMjQxNDAsIDEyNDE0NCwgMTI0MTQ4LCAKKyAgICAxMjQxNTIsIDEyNDE1NiwgMTI0MTYwLCAxMjQxNjQsIDEyNDE2OCwgMTI0MTcyLCAxMjQxNzYsIDEyNDE4MCwgMTI0MTg0LCAKKyAgICAxMjQxODgsIDEyNDE5MiwgMTI0MTk2LCAxMjQyMDAsIDEyNDIwNCwgMTI0MjA4LCAxMjQyMTIsIDEyNDIxNiwgMTI0MjIwLCAKKyAgICAxMjQyMjQsIDEyNDIyOCwgMTI0MjMyLCAxMjQyMzYsIDEyNDI0MCwgMTI0MjQ0LCAxMjQyNDgsIDEyNDI1MiwgMTI0MjU2LCAKKyAgICAxMjQyNjAsIDEyNDI2NCwgMTI0MjY4LCAxMjQyNzIsIDEyNDI3NiwgMTI0MjgwLCAxMjQyODQsIDEyNDI4OCwgMTI0MjkyLCAKKyAgICAxMjQyOTYsIDEyNDMwMCwgMTI0MzA0LCAxMjQzMDgsIDEyNDMxMiwgMTI0MzE2LCAxMjQzMjAsIDEyNDMyNCwgMTI0MzI4LCAKKyAgICAxMjQzMzIsIDEyNDMzNiwgMTI0MzQwLCAxMjQzNDQsIDEyNDM0OCwgMTI0MzUyLCAxMjQzNTYsIDEyNDM2MCwgMTI0MzY0LCAKKyAgICAxMjQzNjgsIDEyNDM3MiwgMTI0Mzc2LCAxMjQzODAsIDEyNDM4NCwgMTI0Mzg4LCAxMjQzOTIsIDEyNDM5NiwgMTI0NDAwLCAKKyAgICAxMjQ0MDQsIDEyNDQwOCwgMTI0NDEyLCAxMjQ0MTYsIDEyNDQyMCwgMTI0NDI0LCAxMjQ0MjgsIDEyNDQzMiwgMTI0NDM2LCAKKyAgICAxMjQ0NDAsIDEyNDQ0NCwgMTI0NDQ4LCAxMjQ0NTIsIDEyNDQ1NiwgMTI0NDYwLCAxMjQ0NjQsIDEyNDQ2OCwgMTI0NDcyLCAKKyAgICAxMjQ0NzYsIDEyNDQ4MCwgMTI0NDg0LCAxMjQ0ODgsIDEyNDQ5MiwgMTI0NDk2LCAxMjQ1MDAsIDEyNDUwNCwgMTI0NTA4LCAKKyAgICAxMjQ1MTIsIDEyNDUxNiwgMTI0NTIwLCAxMjQ1MjQsIDEyNDUyOCwgMTI0NTMyLCAxMjQ1MzYsIDEyNDU0MCwgMTI0NTQ0LCAKKyAgICAxMjQ1NDgsIDEyNDU1MiwgMTI0NTU2LCAxMjQ1NjAsIDEyNDU2NCwgMTI0NTY4LCAxMjQ1NzIsIDEyNDU3NiwgMTI0NTgwLCAKKyAgICAxMjQ1ODQsIDEyNDU4OCwgMTI0NTkyLCAxMjQ1OTYsIDEyNDYwMCwgMTI0NjA0LCAxMjQ2MDgsIDEyNDYxMiwgMTI0NjE2LCAKKyAgICAxMjQ2MjAsIDEyNDYyNCwgMTI0NjI4LCAxMjQ2MzIsIDEyNDYzNiwgMTI0NjQwLCAxMjQ2NDQsIDEyNDY0OCwgMTI0NjUyLCAKKyAgICAxMjQ2NTYsIDEyNDY2MCwgMTI0NjY0LCAxMjQ2NjgsIDEyNDY3MiwgMTI0Njc2LCAxMjQ2ODAsIDEyNDY4NCwgMTI0Njg4LCAKKyAgICAxMjQ2OTIsIDEyNDY5NiwgMTI0NzAwLCAxMjQ3MDQsIDEyNDcwOCwgMTI0NzEyLCAxMjQ3MTYsIDEyNDcyMCwgMTI0NzI0LCAKKyAgICAxMjQ3MjgsIDEyNDczMiwgMTI0NzM2LCAxMjQ3NDAsIDEyNDc0NCwgMTI0NzQ4LCAxMjQ3NTIsIDEyNDc1NiwgMTI0NzYwLCAKKyAgICAxMjQ3NjQsIDEyNDc2OCwgMTI0NzcyLCAxMjQ3NzYsIDEyNDc4MCwgMTI0Nzg0LCAxMjQ3ODgsIDEyNDc5MiwgMTI0Nzk2LCAKKyAgICAxMjQ4MDAsIDEyNDgwNCwgMTI0ODA4LCAxMjQ4MTIsIDEyNDgxNiwgMTI0ODIwLCAxMjQ4MjQsIDEyNDgyOCwgMTI0ODMyLCAKKyAgICAxMjQ4MzYsIDEyNDg0MCwgMTI0ODQ0LCAxMjQ4NDgsIDEyNDg1MiwgMTI0ODU2LCAxMjQ4NjAsIDEyNDg2NCwgMTI0ODY4LCAKKyAgICAxMjQ4NzIsIDEyNDg3NiwgMTI0ODgwLCAxMjQ4ODQsIDEyNDg4OCwgMTI0ODkyLCAxMjQ4OTYsIDEyNDkwMCwgMTI0OTA0LCAKKyAgICAxMjQ5MDgsIDEyNDkxMiwgMTI0OTE2LCAxMjQ5MjAsIDEyNDkyNCwgMTI0OTI4LCAxMjQ5MzIsIDEyNDkzNiwgMTI0OTQwLCAKKyAgICAxMjQ5NDQsIDEyNDk0OCwgMTI0OTUyLCAxMjQ5NTYsIDEyNDk2MCwgMTI0OTY0LCAxMjQ5NjgsIDEyNDk3MiwgMTI0OTc2LCAKKyAgICAxMjQ5ODAsIDEyNDk4NCwgMTI0OTg4LCAxMjQ5OTIsIDEyNDk5NiwgMTI1MDAwLCAxMjUwMDQsIDEyNTAwOCwgMTI1MDEyLCAKKyAgICAxMjUwMTYsIDEyNTAyMCwgMTI1MDI0LCAxMjUwMjgsIDEyNTAzMiwgMTI1MDM2LCAxMjUwNDAsIDEyNTA0NCwgMTI1MDQ4LCAKKyAgICAxMjUwNTIsIDEyNTA1NiwgMTI1MDYwLCAxMjUwNjQsIDEyNTA2OCwgMTI1MDcyLCAxMjUwNzYsIDEyNTA4MCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTIyOCw3MSArMjAzODMsNzIgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjI1ODQsIDEyMjU4OCwgMTIyNTkyLCAxMjI1OTYsIDEyMjYwMCwgMTIyNjA0LCAxMjI2MDgsIAotICAgIDEyMjYxMiwgMTIyNjE2LCAxMjI2MjAsIDEyMjYyNCwgMTIyNjI4LCAxMjI2MzIsIDEyMjYzNiwgMTIyNjQwLCAxMjI2NDQsIAotICAgIDEyMjY0OCwgMTIyNjUyLCAxMjI2NTYsIDEyMjY2MCwgMTIyNjY0LCAxMjI2NjgsIDEyMjY3MiwgMTIyNjc2LCAxMjI2ODAsIAotICAgIDEyMjY4NCwgMTIyNjg4LCAxMjI2OTIsIDEyMjY5NiwgMTIyNzAwLCAxMjI3MDQsIDEyMjcwOCwgMTIyNzEyLCAxMjI3MTYsIAotICAgIDEyMjcyMCwgMTIyNzI0LCAxMjI3MjgsIDEyMjczMiwgMTIyNzM2LCAxMjI3NDAsIDEyMjc0NCwgMTIyNzQ4LCAxMjI3NTIsIAotICAgIDEyMjc1NiwgMTIyNzYwLCAxMjI3NjQsIDEyMjc2OCwgMTIyNzcyLCAxMjI3NzYsIDEyMjc4MCwgMTIyNzg0LCAxMjI3ODgsIAotICAgIDEyMjc5MiwgMTIyNzk2LCAxMjI4MDAsIDEyMjgwNCwgMTIyODA4LCAxMjI4MTIsIDEyMjgxNiwgMTIyODIwLCAxMjI4MjQsIAotICAgIDEyMjgyOCwgMTIyODMyLCAxMjI4MzYsIDEyMjg0MCwgMTIyODQ0LCAxMjI4NDgsIDEyMjg1MiwgMTIyODU2LCAxMjI4NjAsIAotICAgIDEyMjg2NCwgMTIyODY4LCAxMjI4NzIsIDEyMjg3NiwgMTIyODgwLCAxMjI4ODQsIDEyMjg4OCwgMTIyODkyLCAxMjI4OTYsIAotICAgIDEyMjkwMCwgMTIyOTA0LCAxMjI5MDgsIDEyMjkxMiwgMTIyOTE2LCAxMjI5MjAsIDEyMjkyNCwgMTIyOTI4LCAxMjI5MzIsIAotICAgIDEyMjkzNiwgMTIyOTQwLCAxMjI5NDQsIDEyMjk0OCwgMTIyOTUyLCAxMjI5NTYsIDEyMjk2MCwgMTIyOTY0LCAxMjI5NjgsIAotICAgIDEyMjk3MiwgMTIyOTc2LCAxMjI5ODAsIDEyMjk4NCwgMTIyOTg4LCAxMjI5OTIsIDEyMjk5NiwgMTIzMDAwLCAxMjMwMDQsIAotICAgIDEyMzAwOCwgMTIzMDEyLCAxMjMwMTYsIDEyMzAyMCwgMTIzMDI0LCAxMjMwMjgsIDEyMzAzMiwgMTIzMDM2LCAxMjMwNDAsIAotICAgIDEyMzA0NCwgMTIzMDQ4LCAxMjMwNTIsIDEyMzA1NiwgMTIzMDYwLCAxMjMwNjQsIDEyMzA2OCwgMTIzMDcyLCAxMjMwNzYsIAotICAgIDEyMzA4MCwgMTIzMDg0LCAxMjMwODgsIDEyMzA5MiwgMTIzMDk2LCAxMjMxMDAsIDEyMzEwNCwgMTIzMTA4LCAxMjMxMTIsIAotICAgIDEyMzExNiwgMTIzMTIwLCAxMjMxMjQsIDEyMzEyOCwgMTIzMTMyLCAxMjMxMzYsIDEyMzE0MCwgMTIzMTQ0LCAxMjMxNDgsIAotICAgIDEyMzE1MiwgMTIzMTU2LCAxMjMxNjAsIDEyMzE2NCwgMTIzMTY4LCAxMjMxNzIsIDEyMzE3NiwgMTIzMTgwLCAxMjMxODQsIAotICAgIDEyMzE4OCwgMTIzMTkyLCAxMjMxOTYsIDEyMzIwMCwgMTIzMjA0LCAxMjMyMDgsIDEyMzIxMiwgMTIzMjE2LCAxMjMyMjAsIAotICAgIDEyMzIyNCwgMTIzMjI4LCAxMjMyMzIsIDEyMzIzNiwgMTIzMjQwLCAxMjMyNDQsIDEyMzI0OCwgMTIzMjUyLCAxMjMyNTYsIAotICAgIDEyMzI2MCwgMTIzMjY0LCAxMjMyNjgsIDEyMzI3MiwgMTIzMjc2LCAxMjMyODAsIDEyMzI4NCwgMTIzMjg4LCAxMjMyOTIsIAotICAgIDEyMzI5NiwgMTIzMzAwLCAxMjMzMDQsIDEyMzMwOCwgMTIzMzEyLCAxMjMzMTYsIDEyMzMyMCwgMTIzMzI0LCAxMjMzMjgsIAotICAgIDEyMzMzMiwgMTIzMzM2LCAxMjMzNDAsIDEyMzM0NCwgMTIzMzQ4LCAxMjMzNTIsIDEyMzM1NiwgMTIzMzYwLCAxMjMzNjQsIAotICAgIDEyMzM2OCwgMTIzMzcyLCAxMjMzNzYsIDEyMzM4MCwgMTIzMzg0LCAxMjMzODgsIDEyMzM5MiwgMTIzMzk2LCAxMjM0MDAsIAotICAgIDEyMzQwNCwgMTIzNDA4LCAxMjM0MTIsIDEyMzQxNiwgMTIzNDIwLCAxMjM0MjQsIDEyMzQyOCwgMTIzNDMyLCAxMjM0MzYsIAotICAgIDEyMzQ0MCwgMTIzNDQ0LCAxMjM0NDgsIDEyMzQ1MiwgMTIzNDU2LCAxMjM0NjAsIDEyMzQ2NCwgMTIzNDY4LCAxMjM0NzIsIAotICAgIDEyMzQ3NiwgMTIzNDgwLCAxMjM0ODQsIDEyMzQ4OCwgMTIzNDkyLCAxMjM0OTYsIDEyMzUwMCwgMTIzNTA0LCAxMjM1MDgsIAotICAgIDEyMzUxMiwgMTIzNTE2LCAxMjM1MjAsIDEyMzUyNCwgMTIzNTI4LCAxMjM1MzIsIDEyMzUzNiwgMTIzNTQwLCAxMjM1NDQsIAotICAgIDEyMzU0OCwgMTIzNTUyLCAxMjM1NTYsIDEyMzU2MCwgMTIzNTY0LCAxMjM1NjgsIDEyMzU3MiwgMTIzNTc2LCAxMjM1ODAsIAotICAgIDEyMzU4NCwgMTIzNTg4LCAxMjM1OTIsIDEyMzU5NiwgMTIzNjAwLCAxMjM2MDQsIDEyMzYwOCwgMTIzNjEyLCAxMjM2MTYsIAotICAgIDEyMzYyMCwgMTIzNjI0LCAxMjM2MjgsIDEyMzYzMiwgMTIzNjM2LCAxMjM2NDAsIDEyMzY0NCwgMTIzNjQ4LCAxMjM2NTIsIAotICAgIDEyMzY1NiwgMTIzNjYwLCAxMjM2NjQsIDEyMzY2OCwgMTIzNjcyLCAxMjM2NzYsIDEyMzY4MCwgMTIzNjg0LCAxMjM2ODgsIAotICAgIDEyMzY5MiwgMTIzNjk2LCAxMjM3MDAsIDEyMzcwNCwgMTIzNzA4LCAxMjM3MTIsIDEyMzcxNiwgMTIzNzIwLCAxMjM3MjQsIAotICAgIDEyMzcyOCwgMTIzNzMyLCAxMjM3MzYsIDEyMzc0MCwgMTIzNzQ0LCAxMjM3NDgsIDEyMzc1MiwgMTIzNzU2LCAxMjM3NjAsIAotICAgIDEyMzc2NCwgMTIzNzY4LCAxMjM3NzIsIDEyMzc3NiwgMTIzNzgwLCAxMjM3ODQsIDEyMzc4OCwgMTIzNzkyLCAxMjM3OTYsIAotICAgIDEyMzgwMCwgMTIzODA0LCAxMjM4MDgsIDEyMzgxMiwgMTIzODE2LCAxMjM4MjAsIDEyMzgyNCwgMTIzODI4LCAxMjM4MzIsIAotICAgIDEyMzgzNiwgMTIzODQwLCAxMjM4NDQsIDEyMzg0OCwgMTIzODUyLCAxMjM4NTYsIDEyMzg2MCwgMTIzODY0LCAxMjM4NjgsIAotICAgIDEyMzg3MiwgMTIzODc2LCAxMjM4ODAsIDEyMzg4NCwgMTIzODg4LCAxMjM4OTIsIDEyMzg5NiwgMTIzOTAwLCAxMjM5MDQsIAotICAgIDEyMzkwOCwgMTIzOTEyLCAxMjM5MTYsIDEyMzkyMCwgMTIzOTI0LCAxMjM5MjgsIDEyMzkzMiwgMTIzOTM2LCAxMjM5NDAsIAotICAgIDEyMzk0NCwgMTIzOTQ4LCAxMjM5NTIsIDEyMzk1NiwgMTIzOTYwLCAxMjM5NjQsIDEyMzk2OCwgMTIzOTcyLCAxMjM5NzYsIAotICAgIDEyMzk4MCwgMTIzOTg0LCAxMjM5ODgsIDEyMzk5MiwgMTIzOTk2LCAxMjQwMDAsIDEyNDAwNCwgMTI0MDA4LCAxMjQwMTIsIAotICAgIDEyNDAxNiwgMTI0MDIwLCAxMjQwMjQsIDEyNDAyOCwgMTI0MDMyLCAxMjQwMzYsIDEyNDA0MCwgMTI0MDQ0LCAxMjQwNDgsIAotICAgIDEyNDA1MiwgMTI0MDU2LCAxMjQwNjAsIDEyNDA2NCwgMTI0MDY4LCAxMjQwNzIsIDEyNDA3NiwgMTI0MDgwLCAxMjQwODQsIAotICAgIDEyNDA4OCwgMTI0MDkyLCAxMjQwOTYsIDEyNDEwMCwgMTI0MTA0LCAxMjQxMDgsIDEyNDExMiwgMTI0MTE2LCAxMjQxMjAsIAotICAgIDEyNDEyNCwgMTI0MTI4LCAxMjQxMzIsIDEyNDEzNiwgMTI0MTQwLCAxMjQxNDQsIDEyNDE0OCwgMTI0MTUyLCAxMjQxNTYsIAotICAgIDEyNDE2MCwgMTI0MTY0LCAxMjQxNjgsIDEyNDE3MiwgMTI0MTc2LCAxMjQxODAsIDEyNDE4NCwgMTI0MTg4LCAxMjQxOTIsIAotICAgIDEyNDE5NiwgMTI0MjAwLCAxMjQyMDQsIDEyNDIwOCwgMTI0MjEyLCAxMjQyMTYsIDEyNDIyMCwgMTI0MjI0LCAxMjQyMjgsIAotICAgIDEyNDIzMiwgMTI0MjM2LCAxMjQyNDAsIDEyNDI0NCwgMTI0MjQ4LCAxMjQyNTIsIDEyNDI1NiwgMTI0MjYwLCAxMjQyNjQsIAotICAgIDEyNDI2OCwgMTI0MjcyLCAxMjQyNzYsIDEyNDI4MCwgMTI0Mjg0LCAxMjQyODgsIDEyNDI5MiwgMTI0Mjk2LCAxMjQzMDAsIAotICAgIDEyNDMwNCwgMTI0MzA4LCAxMjQzMTIsIDEyNDMxNiwgMTI0MzI2LCAxMjQzMzAsIDEyNDMzNCwgMTI0MzM4LCAxMjQzNDIsIAotICAgIDEyNDM0NiwgMTI0MzUwLCAxMjQzNTQsIDEyNDM1OCwgMTI0MzYyLCAxMjQzNjYsIDEyNDM3MCwgMTI0Mzc1LCAxMjQzNzksIAotICAgIDEyNDM4MywgMTI0Mzg3LCAxMjQzOTEsIDEyNDM5NSwgMTI0Mzk5LCAxMjQ0MDMsIDEyNDQwNywgMTI0NDExLCAxMjQ0MTUsIAotICAgIDEyNDQxOSwgMTI0NDIzLCAxMjQ0MjcsIDEyNDQzMSwgMTI0NDM1LCAxMjQ0MzksIDEyNDQ0OCwgMTI0NDU3LCAxMjQ0NjEsIAotICAgIDEyNDQ2NSwgMTI0NDY5LCAxMjQ0NzMsIDEyNDQ3NywgMTI0NDgxLCAxMjQ0ODUsIDEyNDQ4OSwgMTI0NDkzLCAxMjQ0OTcsIAotICAgIDEyNDUwMSwgMTI0NTA1LCAxMjQ1MDksIDEyNDUxMywgMTI0NTE3LCAxMjQ1MjEsIDEyNDUyNSwgMTI0NTI5LCAxMjQ1MzMsIAotICAgIDEyNDUzNywgMTI0NTQxLCAxMjQ1NDUsIDEyNDU0OSwgMTI0NTUzLCAxMjQ1NTcsIDEyNDU2MSwgMTI0NTY1LCAxMjQ1NjksIAotICAgIDEyNDU3MywgMTI0NTc3LCAxMjQ1ODEsIDEyNDU4NSwgMTI0NTg5LCAxMjQ1OTMsIDEyNDU5NywgMTI0NjAxLCAxMjQ2MDUsIAotICAgIDEyNDYwOSwgMTI0NjEzLCAxMjQ2MTcsIDEyNDYyMSwgMTI0NjI1LCAxMjQ2MjksIDEyNDYzMywgMTI0NjM3LCAxMjQ2NDEsIAotICAgIDEyNDY0NSwgMTI0NjQ5LCAxMjQ2NTMsIDEyNDY1NywgMTI0NjYxLCAxMjQ2NjUsIDEyNDY2OSwgMTI0NjczLCAxMjQ2NzcsIAotICAgIDEyNDY4MSwgMTI0Njg1LCAxMjQ2ODksIDEyNDY5MywgMTI0Njk3LCAxMjQ3MDEsIDEyNDcwNSwgMTI0NzA5LCAxMjQ3MTMsIAotICAgIDEyNDcxNywgMTI0NzIxLCAxMjQ3MjUsIDEyNDcyOSwgMTI0NzMzLCAxMjQ3MzcsIDEyNDc0MSwgMTI0NzQ1LCAxMjQ3NDksIAotICAgIDEyNDc1MywgMTI0NzU3LCAxMjQ3NjEsIDEyNDc2NSwgMTI0NzY5LCAxMjQ3NzMsIDEyNDc3NywgMTI0NzgxLCAxMjQ3ODUsIAotICAgIDEyNDc4OSwgMTI0NzkzLCAxMjQ3OTcsIDEyNDgwMSwgMTI0ODA1LCAxMjQ4MDksIDEyNDgxMywgMTI0ODE3LCAxMjQ4MjEsIAotICAgIDEyNDgyNSwgMTI0ODI5LCAxMjQ4MzMsIDEyNDgzNywgMTI0ODQxLCAxMjQ4NDUsIDEyNDg0OSwgMTI0ODUzLCAxMjQ4NTcsIAotICAgIDEyNDg2MSwgMTI0ODY1LCAxMjQ4NjksIDEyNDg3MywgMTI0ODc3LCAxMjQ4ODEsIDEyNDg4NSwgMTI0ODg5LCAxMjQ4OTMsIAotICAgIDEyNDg5NywgMTI0OTAxLCAxMjQ5MDUsIDEyNDkwOSwgMTI0OTEzLCAxMjQ5MTcsIDEyNDkyMSwgMTI0OTI1LCAxMjQ5MjksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTA4NCwgMTI1MDg4LCAxMjUwOTIsIDEyNTA5NiwgCisgICAgMTI1MTAwLCAxMjUxMDQsIDEyNTEwOCwgMTI1MTEyLCAxMjUxMTYsIDEyNTEyMCwgMTI1MTI0LCAxMjUxMjgsIDEyNTEzMiwgCisgICAgMTI1MTM2LCAxMjUxNDAsIDEyNTE0NCwgMTI1MTQ4LCAxMjUxNTIsIDEyNTE1NiwgMTI1MTYwLCAxMjUxNjQsIDEyNTE2OCwgCisgICAgMTI1MTcyLCAxMjUxNzYsIDEyNTE4MCwgMTI1MTg0LCAxMjUxODgsIDEyNTE5MiwgMTI1MTk2LCAxMjUyMDAsIDEyNTIwNCwgCisgICAgMTI1MjA4LCAxMjUyMTIsIDEyNTIxNiwgMTI1MjIwLCAxMjUyMjQsIDEyNTIyOCwgMTI1MjMyLCAxMjUyMzYsIDEyNTI0MCwgCisgICAgMTI1MjQ0LCAxMjUyNDgsIDEyNTI1MiwgMTI1MjU2LCAxMjUyNjAsIDEyNTI2NCwgMTI1MjY4LCAxMjUyNzIsIDEyNTI3NiwgCisgICAgMTI1MjgwLCAxMjUyODQsIDEyNTI4OCwgMTI1MjkyLCAxMjUyOTYsIDEyNTMwMCwgMTI1MzA0LCAxMjUzMDgsIDEyNTMxMiwgCisgICAgMTI1MzE2LCAxMjUzMjAsIDEyNTMyNCwgMTI1MzI4LCAxMjUzMzIsIDEyNTMzNiwgMTI1MzQwLCAxMjUzNDQsIDEyNTM0OCwgCisgICAgMTI1MzUyLCAxMjUzNTYsIDEyNTM2MCwgMTI1MzY0LCAxMjUzNjgsIDEyNTM3MiwgMTI1Mzc2LCAxMjUzODAsIDEyNTM4NCwgCisgICAgMTI1Mzg4LCAxMjUzOTIsIDEyNTM5NiwgMTI1NDAwLCAxMjU0MDQsIDEyNTQwOCwgMTI1NDEyLCAxMjU0MTYsIDEyNTQyMCwgCisgICAgMTI1NDI0LCAxMjU0MjgsIDEyNTQzMiwgMTI1NDM2LCAxMjU0NDAsIDEyNTQ0NCwgMTI1NDQ4LCAxMjU0NTIsIDEyNTQ1NiwgCisgICAgMTI1NDYwLCAxMjU0NjQsIDEyNTQ2OCwgMTI1NDcyLCAxMjU0NzYsIDEyNTQ4MCwgMTI1NDg0LCAxMjU0ODgsIDEyNTQ5MiwgCisgICAgMTI1NDk2LCAxMjU1MDAsIDEyNTUwNCwgMTI1NTA4LCAxMjU1MTIsIDEyNTUxNiwgMTI1NTIwLCAxMjU1MjQsIDEyNTUyOCwgCisgICAgMTI1NTMyLCAxMjU1MzYsIDEyNTU0MCwgMTI1NTQ0LCAxMjU1NDgsIDEyNTU1MiwgMTI1NTU2LCAxMjU1NjAsIDEyNTU2NCwgCisgICAgMTI1NTY4LCAxMjU1NzIsIDEyNTU3NiwgMTI1NTgwLCAxMjU1ODQsIDEyNTU4OCwgMTI1NTkyLCAxMjU1OTYsIDEyNTYwMCwgCisgICAgMTI1NjA0LCAxMjU2MDgsIDEyNTYxMiwgMTI1NjE2LCAxMjU2MjAsIDEyNTYyNCwgMTI1NjI4LCAxMjU2MzIsIDEyNTYzNiwgCisgICAgMTI1NjQwLCAxMjU2NDQsIDEyNTY0OCwgMTI1NjUyLCAxMjU2NTYsIDEyNTY2MCwgMTI1NjY0LCAxMjU2NjgsIDEyNTY3MiwgCisgICAgMTI1Njc2LCAxMjU2ODAsIDEyNTY4NCwgMTI1Njg4LCAxMjU2OTIsIDEyNTY5NiwgMTI1NzAwLCAxMjU3MDQsIDEyNTcwOCwgCisgICAgMTI1NzEyLCAxMjU3MTYsIDEyNTcyMCwgMTI1NzI0LCAxMjU3MjgsIDEyNTczMiwgMTI1NzM2LCAxMjU3NDAsIDEyNTc0NCwgCisgICAgMTI1NzQ4LCAxMjU3NTIsIDEyNTc1NiwgMTI1NzYwLCAxMjU3NjQsIDEyNTc2OCwgMTI1NzcyLCAxMjU3NzYsIDEyNTc4MCwgCisgICAgMTI1Nzg0LCAxMjU3ODgsIDEyNTc5MiwgMTI1Nzk2LCAxMjU4MDAsIDEyNTgwNCwgMTI1ODA4LCAxMjU4MTIsIDEyNTgxNiwgCisgICAgMTI1ODIwLCAxMjU4MjQsIDEyNTgyOCwgMTI1ODMyLCAxMjU4MzYsIDEyNTg0MCwgMTI1ODQ0LCAxMjU4NDgsIDEyNTg1MiwgCisgICAgMTI1ODU2LCAxMjU4NjAsIDEyNTg2NCwgMTI1ODY4LCAxMjU4NzIsIDEyNTg3NiwgMTI1ODgwLCAxMjU4ODQsIDEyNTg4OCwgCisgICAgMTI1ODkyLCAxMjU4OTYsIDEyNTkwMCwgMTI1OTA0LCAxMjU5MDgsIDEyNTkxMiwgMTI1OTE2LCAxMjU5MjAsIDEyNTkyNCwgCisgICAgMTI1OTI4LCAxMjU5MzIsIDEyNTkzNiwgMTI1OTQwLCAxMjU5NDQsIDEyNTk0OCwgMTI1OTUyLCAxMjU5NTYsIDEyNTk2MCwgCisgICAgMTI1OTY0LCAxMjU5NjgsIDEyNTk3MiwgMTI1OTc2LCAxMjU5ODAsIDEyNTk4NCwgMTI1OTg4LCAxMjU5OTIsIDEyNTk5NiwgCisgICAgMTI2MDAwLCAxMjYwMDQsIDEyNjAwOCwgMTI2MDEyLCAxMjYwMTYsIDEyNjAyMCwgMTI2MDI0LCAxMjYwMjgsIDEyNjAzMiwgCisgICAgMTI2MDM2LCAxMjYwNDAsIDEyNjA0NCwgMTI2MDQ4LCAxMjYwNTIsIDEyNjA1NiwgMTI2MDYwLCAxMjYwNjQsIDEyNjA2OCwgCisgICAgMTI2MDcyLCAxMjYwNzYsIDEyNjA4MCwgMTI2MDg0LCAxMjYwODgsIDEyNjA5MiwgMTI2MDk2LCAxMjYxMDAsIDEyNjEwNCwgCisgICAgMTI2MTA4LCAxMjYxMTIsIDEyNjExNiwgMTI2MTIwLCAxMjYxMjQsIDEyNjEyOCwgMTI2MTMyLCAxMjYxMzYsIDEyNjE0MCwgCisgICAgMTI2MTQ0LCAxMjYxNDgsIDEyNjE1MiwgMTI2MTU2LCAxMjYxNjAsIDEyNjE2NCwgMTI2MTY4LCAxMjYxNzIsIDEyNjE3NiwgCisgICAgMTI2MTgwLCAxMjYxODQsIDEyNjE4OCwgMTI2MTkyLCAxMjYxOTYsIDEyNjIwMCwgMTI2MjA0LCAxMjYyMDgsIDEyNjIxMiwgCisgICAgMTI2MjE2LCAxMjYyMjAsIDEyNjIyNCwgMTI2MjI4LCAxMjYyMzIsIDEyNjIzNiwgMTI2MjQwLCAxMjYyNDQsIDEyNjI0OCwgCisgICAgMTI2MjUyLCAxMjYyNTYsIDEyNjI2MCwgMTI2MjY0LCAxMjYyNjgsIDEyNjI3MiwgMTI2Mjc2LCAxMjYyODAsIDEyNjI4NCwgCisgICAgMTI2Mjg4LCAxMjYyOTIsIDEyNjI5NiwgMTI2MzAwLCAxMjYzMDQsIDEyNjMwOCwgMTI2MzEyLCAxMjYzMTYsIDEyNjMyMCwgCisgICAgMTI2MzI0LCAxMjYzMjgsIDEyNjMzMiwgMTI2MzM2LCAxMjYzNDAsIDEyNjM0NCwgMTI2MzQ4LCAxMjYzNTIsIDEyNjM1NiwgCisgICAgMTI2MzYwLCAxMjYzNjQsIDEyNjM2OCwgMTI2MzcyLCAxMjYzNzYsIDEyNjM4MCwgMTI2Mzg0LCAxMjYzODgsIDEyNjM5MiwgCisgICAgMTI2Mzk2LCAxMjY0MDAsIDEyNjQwNCwgMTI2NDA4LCAxMjY0MTIsIDEyNjQxNiwgMTI2NDIwLCAxMjY0MjQsIDEyNjQyOCwgCisgICAgMTI2NDMyLCAxMjY0MzYsIDEyNjQ0MCwgMTI2NDQ0LCAxMjY0NDgsIDEyNjQ1MiwgMTI2NDU2LCAxMjY0NjAsIDEyNjQ2NCwgCisgICAgMTI2NDY4LCAxMjY0NzIsIDEyNjQ3NiwgMTI2NDgwLCAxMjY0ODQsIDEyNjQ4OCwgMTI2NDkyLCAxMjY0OTYsIDEyNjUwMCwgCisgICAgMTI2NTA0LCAxMjY1MDgsIDEyNjUxMiwgMTI2NTE2LCAxMjY1MjAsIDEyNjUyNCwgMTI2NTI4LCAxMjY1MzIsIDEyNjUzNiwgCisgICAgMTI2NTQwLCAxMjY1NDQsIDEyNjU0OCwgMTI2NTUyLCAxMjY1NTYsIDEyNjU2MCwgMTI2NTY0LCAxMjY1NjgsIDEyNjU3MiwgCisgICAgMTI2NTc2LCAxMjY1ODAsIDEyNjU4NCwgMTI2NTg4LCAxMjY1OTIsIDEyNjU5NiwgMTI2NjAwLCAxMjY2MDQsIDEyNjYwOCwgCisgICAgMTI2NjEyLCAxMjY2MTYsIDEyNjYyMCwgMTI2NjI0LCAxMjY2MjgsIDEyNjYzMiwgMTI2NjM2LCAxMjY2NDAsIDEyNjY0NCwgCisgICAgMTI2NjQ4LCAxMjY2NTIsIDEyNjY1NiwgMTI2NjYwLCAxMjY2NjQsIDEyNjY2OCwgMTI2NjcyLCAxMjY2NzYsIDEyNjY4MCwgCisgICAgMTI2Njg0LCAxMjY2ODgsIDEyNjY5MiwgMTI2Njk2LCAxMjY3MDAsIDEyNjcwNCwgMTI2NzA4LCAxMjY3MTIsIDEyNjcxNiwgCisgICAgMTI2NzIwLCAxMjY3MjQsIDEyNjcyOCwgMTI2NzMyLCAxMjY3MzYsIDEyNjc0MCwgMTI2NzQ0LCAxMjY3NDgsIDEyNjc1MiwgCisgICAgMTI2NzU2LCAxMjY3NjAsIDEyNjc2NCwgMTI2NzY4LCAxMjY3NzIsIDEyNjc3NiwgMTI2NzgwLCAxMjY3ODQsIDEyNjc4OCwgCisgICAgMTI2NzkyLCAxMjY3OTYsIDEyNjgwMCwgMTI2ODA0LCAxMjY4MDgsIDEyNjgxMiwgMTI2ODE2LCAxMjY4MjYsIDEyNjgzMCwgCisgICAgMTI2ODM0LCAxMjY4MzgsIDEyNjg0MiwgMTI2ODQ2LCAxMjY4NTAsIDEyNjg1NCwgMTI2ODU4LCAxMjY4NjIsIDEyNjg2NiwgCisgICAgMTI2ODcwLCAxMjY4NzUsIDEyNjg3OSwgMTI2ODgzLCAxMjY4ODcsIDEyNjg5MSwgMTI2ODk1LCAxMjY4OTksIDEyNjkwMywgCisgICAgMTI2OTA3LCAxMjY5MTEsIDEyNjkxNSwgMTI2OTE5LCAxMjY5MjMsIDEyNjkyNywgMTI2OTMxLCAxMjY5MzUsIDEyNjkzOSwgCisgICAgMTI2OTQ4LCAxMjY5NTcsIDEyNjk2MSwgMTI2OTY1LCAxMjY5NjksIDEyNjk3MywgMTI2OTc3LCAxMjY5ODEsIDEyNjk4NSwgCisgICAgMTI2OTg5LCAxMjY5OTMsIDEyNjk5NywgMTI3MDAxLCAxMjcwMDUsIDEyNzAwOSwgMTI3MDEzLCAxMjcwMTcsIDEyNzAyMSwgCisgICAgMTI3MDI1LCAxMjcwMjksIDEyNzAzMywgMTI3MDM3LCAxMjcwNDEsIDEyNzA0NSwgMTI3MDQ5LCAxMjcwNTMsIDEyNzA1NywgCisgICAgMTI3MDYxLCAxMjcwNjUsIDEyNzA2OSwgMTI3MDczLCAxMjcwNzcsIDEyNzA4MSwgMTI3MDg1LCAxMjcwODksIDEyNzA5MywgCisgICAgMTI3MDk3LCAxMjcxMDEsIDEyNzEwNSwgMTI3MTA5LCAxMjcxMTMsIDEyNzExNywgMTI3MTIxLCAxMjcxMjUsIDEyNzEyOSwgCisgICAgMTI3MTMzLCAxMjcxMzcsIDEyNzE0MSwgMTI3MTQ1LCAxMjcxNDksIDEyNzE1MywgMTI3MTU3LCAxMjcxNjEsIDEyNzE2NSwgCisgICAgMTI3MTY5LCAxMjcxNzMsIDEyNzE3NywgMTI3MTgxLCAxMjcxODUsIDEyNzE4OSwgMTI3MTkzLCAxMjcxOTcsIDEyNzIwMSwgCisgICAgMTI3MjA1LCAxMjcyMDksIDEyNzIxMywgMTI3MjE3LCAxMjcyMjEsIDEyNzIyNSwgMTI3MjI5LCAxMjcyMzMsIDEyNzIzNywgCisgICAgMTI3MjQxLCAxMjcyNDUsIDEyNzI0OSwgMTI3MjUzLCAxMjcyNTcsIDEyNzI2MSwgMTI3MjY1LCAxMjcyNjksIDEyNzI3MywgCisgICAgMTI3Mjc3LCAxMjcyODEsIDEyNzI4NSwgMTI3Mjg5LCAxMjcyOTMsIDEyNzI5NywgMTI3MzAxLCAxMjczMDUsIDEyNzMwOSwgCisgICAgMTI3MzEzLCAxMjczMTcsIDEyNzMyMSwgMTI3MzI1LCAxMjczMjksIDEyNzMzMywgMTI3MzM3LCAxMjczNDEsIDEyNzM0NSwgCisgICAgMTI3MzQ5LCAxMjczNTMsIDEyNzM1NywgMTI3MzYxLCAxMjczNjUsIDEyNzM2OSwgMTI3MzczLCAxMjczNzcsIDEyNzM4MSwgCisgICAgMTI3Mzg1LCAxMjczODksIDEyNzM5MywgMTI3Mzk3LCAxMjc0MDEsIDEyNzQwNSwgMTI3NDA5LCAxMjc0MTMsIDEyNzQxNywgCisgICAgMTI3NDIxLCAxMjc0MjUsIDEyNzQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTMwMCwxMjQgKzIwNDU2LDIxMCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDkzMywgMTI0OTQxLCAKLSAgICAxMjQ5NDksIDEyNDk1OSwgMTI0OTY5LCAxMjQ5NzcsIDEyNDk4MywgMTI0OTkxLCAxMjQ5OTksIDEyNTAwOSwgMTI1MDIxLCAKLSAgICAxMjUwMzMsIDEyNTAzOSwgMTI1MDQ3LCAxMjUwNTMsIDEyNTA1OSwgMTI1MDY1LCAxMjUwNzEsIDEyNTA3NywgMTI1MDgzLCAKLSAgICAxMjUwODksIDEyNTA5NSwgMTI1MTAxLCAxMjUxMDcsIDEyNTExMywgMTI1MTIxLCAxMjUxMjksIDEyNTEzNSwgMTI1MTQxLCAKLSAgICAxMjUxNDcsIDEyNTE1MywgMTI1MTYxLCAxMjUxNjksIDEyNTE3OCwgMTI1MTg0LCAxMjUxOTIsIDEyNTE5OCwgMTI1MjA0LCAKLSAgICAxMjUyMTAsIDEyNTIxNiwgMTI1MjIyLCAxMjUyMzAsIDEyNTIzOCwgMTI1MjQ0LCAxMjUyNTAsIDEyNTI1NiwgMTI1MjYyLCAKLSAgICAxMjUyNjgsIDEyNTI3NCwgMTI1MjgwLCAxMjUyODYsIDEyNTI5MiwgMTI1Mjk4LCAxMjUzMDQsIDEyNTMxMCwgMTI1MzE2LCAKLSAgICAxMjUzMjIsIDEyNTMyOCwgMTI1MzM0LCAxMjUzNDAsIDEyNTM0NiwgMTI1MzUyLCAxMjUzNjAsIDEyNTM2NiwgMTI1MzcyLCAKLSAgICAxMjUzODIsIDEyNTM5MCwgMTI1Mzk2LCAxMjU0MDIsIDEyNTQwOCwgMTI1NDE0LCAxMjU0MjAsIDEyNTQyNiwgMTI1NDMyLCAKLSAgICAxMjU0MzgsIDEyNTQ0NCwgMTI1NDUwLCAxMjU0NTYsIDEyNTQ2MiwgMTI1NDY4LCAxMjU0NzQsIDEyNTQ4MCwgMTI1NDg2LCAKLSAgICAxMjU0OTIsIDEyNTQ5OCwgMTI1NTA0LCAxMjU1MTAsIDEyNTUxNiwgMTI1NTIyLCAxMjU1MzAsIDEyNTUzNiwgMTI1NTQ0LCAKLSAgICAxMjU1NTIsIDEyNTU2MCwgMTI1NTY2LCAxMjU1NzIsIDEyNTU3OCwgMTI1NTg0LCAxMjU1OTAsIDEyNTU5OCwgMTI1NjA4LCAKLSAgICAxMjU2MTYsIDEyNTYyNCwgMTI1NjMwLCAxMjU2MzYsIDEyNTY0NCwgMTI1NjUyLCAxMjU2NTgsIDEyNTY2NiwgMTI1Njc0LCAKLSAgICAxMjU2ODIsIDEyNTY4OCwgMTI1Njk0LCAxMjU3MDAsIDEyNTcwNiwgMTI1NzEyLCAxMjU3MTgsIDEyNTcyNiwgMTI1NzM0LCAKLSAgICAxMjU3NDAsIDEyNTc0NiwgMTI1NzUyLCAxMjU3NTgsIDEyNTc2NCwgMTI1NzcyLCAxMjU3NzgsIDEyNTc4NCwgMTI1NzkwLCAKLSAgICAxMjU3OTYsIDEyNTgwMiwgMTI1ODA4LCAxMjU4MTYsIDEyNTgyMiwgMTI1ODI4LCAxMjU4MzQsIDEyNTg0MCwgMTI1ODQ4LCAKLSAgICAxMjU4NTYsIDEyNTg2MiwgMTI1ODY4LCAxMjU4NzQsIDEyNTg3OSwgMTI1ODg1LCAxMjU4OTEsIDEyNTg5OCwgMTI1OTAzLCAKLSAgICAxMjU5MDgsIDEyNTkxMywgMTI1OTE4LCAxMjU5MjMsIDEyNTkyOCwgMTI1OTMzLCAxMjU5MzgsIDEyNTk0MywgMTI1OTUyLCAKLSAgICAxMjU5NTksIDEyNTk2NCwgMTI1OTY5LCAxMjU5NzQsIDEyNTk4MSwgMTI1OTg2LCAxMjU5OTEsIDEyNTk5NiwgMTI2MDAzLCAKLSAgICAxMjYwMDgsIDEyNjAxMywgMTI2MDE4LCAxMjYwMjMsIDEyNjAyOCwgMTI2MDMzLCAxMjYwMzgsIDEyNjA0MywgMTI2MDQ4LCAKLSAgICAxMjYwNTMsIDEyNjA1OCwgMTI2MDY1LCAxMjYwNzAsIDEyNjA3NywgMTI2MDgyLCAxMjYwODcsIDEyNjA5NCwgMTI2MDk5LCAKLSAgICAxMjYxMDQsIDEyNjEwOSwgMTI2MTE0LCAxMjYxMTksIDEyNjEyNCwgMTI2MTI5LCAxMjYxMzQsIDEyNjEzOSwgMTI2MTQ0LCAKLSAgICAxMjYxNDksIDEyNjE1NCwgMTI2MTU5LCAxMjYxNjQsIDEyNjE2OSwgMTI2MTc0LCAxMjYxNzksIDEyNjE4NCwgMTI2MTg5LCAKLSAgICAxMjYxOTYsIDEyNjIwMSwgMTI2MjA2LCAxMjYyMTEsIDEyNjIxNiwgMTI2MjIxLCAxMjYyMjYsIDEyNjIzMSwgMTI2MjM2LCAKLSAgICAxMjYyNDEsIDEyNjI0NiwgMTI2MjUxLCAxMjYyNTYsIDEyNjI2MSwgMTI2MjY4LCAxMjYyNzMsIDEyNjI3OCwgMTI2Mjg1LCAKLSAgICAxMjYyOTAsIDEyNjI5NSwgMTI2MzAwLCAxMjYzMDUsIDEyNjMxMCwgMTI2MzE1LCAxMjYzMjAsIDEyNjMyNSwgMTI2MzMwLCAKLSAgICAxMjYzMzUsIDEyNjM0MiwgMTI2MzQ3LCAxMjYzNTIsIDEyNjM1NywgMTI2MzYyLCAxMjYzNjcsIDEyNjM3NCwgMTI2MzgxLCAKLSAgICAxMjYzODYsIDEyNjM5MSwgMTI2Mzk2LCAxMjY0MDEsIDEyNjQwNiwgMTI2NDExLCAxMjY0MTYsIDEyNjQyMSwgMTI2NDI2LCAKLSAgICAxMjY0MzEsIDEyNjQzNiwgMTI2NDQxLCAxMjY0NDYsIDEyNjQ1MSwgMTI2NDU2LCAxMjY0NjEsIDEyNjQ2NiwgMTI2NDcxLCAKLSAgICAxMjY0NzYsIDEyNjQ4MSwgMTI2NDg2LCAxMjY0OTEsIDEyNjQ5NiwgMTI2NTAxLCAxMjY1MDYsIDEyNjUxMSwgMTI2NTE2LCAKLSAgICAxMjY1MjEsIDEyNjUyNiwgMTI2NTMxLCAxMjY1MzYsIDEyNjU0MSwgMTI2NTQ2LCAxMjY1NTEsIDEyNjU1NiwgMTI2NTYxLCAKLSAgICAxMjY1NjgsIDEyNjU3MywgMTI2NTc4LCAxMjY1ODMsIDEyNjU4OCwgMTI2NTkzLCAxMjY1OTgsIDEyNjYwMywgMTI2NjA4LCAKLSAgICAxMjY2MTMsIDEyNjYxOCwgMTI2NjIzLCAxMjY2MjgsIDEyNjYzMywgMTI2NjM4LCAxMjY2NDMsIDEyNjY0OCwgMTI2NjUzLCAKLSAgICAxMjY2NTgsIDEyNjY2MywgMTI2NjY4LCAxMjY2NzMsIDEyNjY3OCwgMTI2NjgzLCAxMjY2ODgsIDEyNjY5MywgMTI2Njk4LCAKLSAgICAxMjY3MDMsIDEyNjcwOCwgMTI2NzEzLCAxMjY3MTgsIDEyNjcyMywgMTI2NzI4LCAxMjY3MzMsIDEyNjczOCwgMTI2NzQzLCAKLSAgICAxMjY3NDgsIDEyNjc1MywgMTI2NzU4LCAxMjY3NjMsIDEyNjc2OCwgMTI2NzczLCAxMjY3NzgsIDEyNjc4MywgMTI2Nzg4LCAKLSAgICAxMjY3OTMsIDEyNjc5OCwgMTI2ODAzLCAxMjY4MDgsIDEyNjgxMywgMTI2ODE4LCAxMjY4MjMsIDEyNjgyOCwgMTI2ODMzLCAKLSAgICAxMjY4MzgsIDEyNjg0MywgMTI2ODQ4LCAxMjY4NTMsIDEyNjg1OCwgMTI2ODY1LCAxMjY4NzAsIDEyNjg3NSwgMTI2ODgwLCAKLSAgICAxMjY4ODUsIDEyNjg5MCwgMTI2ODk1LCAxMjY5MDAsIDEyNjkwNSwgMTI2OTEwLCAxMjY5MTUsIDEyNjkyMCwgMTI2OTI1LCAKLSAgICAxMjY5MzAsIDEyNjkzNSwgMTI2OTQwLCAxMjY5NDUsIDEyNjk1MCwgMTI2OTU1LCAxMjY5NjAsIDEyNjk2NSwgMTI2OTcwLCAKLSAgICAxMjY5NzcsIDEyNjk4MiwgMTI2OTg3LCAxMjY5OTQsIDEyNjk5OSwgMTI3MDA0LCAxMjcwMDksIDEyNzAxNCwgMTI3MDE5LCAKLSAgICAxMjcwMjQsIDEyNzAyOSwgMTI3MDM0LCAxMjcwMzksIDEyNzA0NCwgMTI3MDQ5LCAxMjcwNTQsIDEyNzA1OSwgMTI3MDY0LCAKLSAgICAxMjcwNjksIDEyNzA3NCwgMTI3MDc5LCAxMjcwODQsIDEyNzA4OSwgMTI3MDk0LCAxMjcwOTksIDEyNzEwNCwgMTI3MTA5LCAKLSAgICAxMjcxMTQsIDEyNzExOSwgMTI3MTI0LCAxMjcxMjksIDEyNzEzNCwgMTI3MTM5LCAxMjcxNDQsIDEyNzE0OSwgMTI3MTU0LCAKLSAgICAxMjcxNTksIDEyNzE2NCwgMTI3MTY5LCAxMjcxNzQsIDEyNzE3OSwgMTI3MTg0LCAxMjcxODksIDEyNzE5NCwgMTI3MTk5LCAKLSAgICAxMjcyMDQsIDEyNzIwOSwgMTI3MjE2LCAxMjcyMjEsIDEyNzIyNiwgMTI3MjMzLCAxMjcyNDAsIDEyNzI0NSwgMTI3MjUwLCAKLSAgICAxMjcyNTUsIDEyNzI2MCwgMTI3MjY1LCAxMjcyNzAsIDEyNzI3NSwgMTI3MjgwLCAxMjcyODUsIDEyNzI5MCwgMTI3Mjk1LCAKLSAgICAxMjczMDAsIDEyNzMwNSwgMTI3MzEwLCAxMjczMTUsIDEyNzMyMCwgMTI3MzI1LCAxMjczMzAsIDEyNzMzNSwgMTI3MzQwLCAKLSAgICAxMjczNDUsIDEyNzM1MCwgMTI3MzU1LCAxMjczNjAsIDEyNzM2NSwgMTI3MzcyLCAxMjczNzcsIDEyNzM4MiwgMTI3Mzg3LCAKLSAgICAxMjczOTIsIDEyNzM5NywgMTI3NDAyLCAxMjc0MDcsIDEyNzQxMiwgMTI3NDE3LCAxMjc0MjIsIDEyNzQyNywgMTI3NDMyLCAKLSAgICAxMjc0MzcsIDEyNzQ0MiwgMTI3NDQ3LCAxMjc0NTIsIDEyNzQ1NywgMTI3NDYyLCAxMjc0NjksIDEyNzQ3NCwgMTI3NDc5LCAKLSAgICAxMjc0ODQsIDEyNzQ4OSwgMTI3NDk0LCAxMjc0OTksIDEyNzUwNCwgMTI3NTEwLCAxMjc1MTUsIDEyNzUyMCwgMTI3NTI1LCAKLSAgICAxMjc1MzAsIDEyNzUzNSwgMTI3NTQwLCAxMjc1NDUsIDEyNzU1MCwgMTI3NTU3LCAxMjc1NjQsIDEyNzU2OSwgMTI3NTc0LCAKLSAgICAxMjc1NzgsIDEyNzU4MywgMTI3NTg3LCAxMjc1OTEsIDEyNzU5NiwgMTI3NjAzLCAxMjc2MDgsIDEyNzYxMywgMTI3NjIyLCAKLSAgICAxMjc2MjcsIDEyNzYzMiwgMTI3NjM3LCAxMjc2NDIsIDEyNzY0OSwgMTI3NjU2LCAxMjc2NjEsIDEyNzY2NiwgMTI3NjcxLCAKLSAgICAxMjc2NzYsIDEyNzY4MywgMTI3Njg4LCAxMjc2OTMsIDEyNzY5OCwgMTI3NzAzLCAxMjc3MDgsIDEyNzcxMywgMTI3NzE4LCAKLSAgICAxMjc3MjMsIDEyNzcyOCwgMTI3NzMzLCAxMjc3MzgsIDEyNzc0MywgMTI3NzUwLCAxMjc3NTUsIDEyNzc2MCwgMTI3NzY1LCAKLSAgICAxMjc3NzAsIDEyNzc3NSwgMTI3Nzc5LCAxMjc3ODQsIDEyNzc4OSwgMTI3Nzk0LCAxMjc3OTksIDEyNzgwNCwgMTI3ODA5LCAKLSAgICAxMjc4MTQsIDEyNzgxOSwgMTI3ODI0LCAxMjc4MzAsIDEyNzgzNiwgMTI3ODQyLCAxMjc4NDgsIDEyNzg1NCwgMTI3ODYwLCAKLSAgICAxMjc4NjYsIDEyNzg3MiwgMTI3ODc4LCAxMjc4ODQsIDEyNzg5MCwgMTI3ODk2LCAxMjc5MDIsIDEyNzkwOCwgMTI3OTE0LCAKKyAgICAwLCAxMjc0MzMsIDEyNzQ0MSwgMTI3NDQ5LCAxMjc0NTksIDEyNzQ2OSwgMTI3NDc3LCAxMjc0ODMsIDEyNzQ5MSwgCisgICAgMTI3NDk5LCAxMjc1MDksIDEyNzUyMSwgMTI3NTMzLCAxMjc1MzksIDEyNzU0NywgMTI3NTUzLCAxMjc1NTksIDEyNzU2NSwgCisgICAgMTI3NTcxLCAxMjc1NzcsIDEyNzU4MywgMTI3NTg5LCAxMjc1OTUsIDEyNzYwMSwgMTI3NjA3LCAxMjc2MTMsIDEyNzYyMSwgCisgICAgMTI3NjI5LCAxMjc2MzUsIDEyNzY0MSwgMTI3NjQ3LCAxMjc2NTMsIDEyNzY2MSwgMTI3NjY5LCAxMjc2NzgsIDEyNzY4NCwgCisgICAgMTI3NjkyLCAxMjc2OTgsIDEyNzcwNCwgMTI3NzEwLCAxMjc3MTYsIDEyNzcyMiwgMTI3NzMwLCAxMjc3MzgsIDEyNzc0NCwgCisgICAgMTI3NzUwLCAxMjc3NTYsIDEyNzc2MiwgMTI3NzY4LCAxMjc3NzQsIDEyNzc4MCwgMTI3Nzg2LCAxMjc3OTIsIDEyNzc5OCwgCisgICAgMTI3ODA0LCAxMjc4MTAsIDEyNzgxNiwgMTI3ODIyLCAxMjc4MjgsIDEyNzgzNCwgMTI3ODQwLCAxMjc4NDYsIDEyNzg1MiwgCisgICAgMTI3ODYwLCAxMjc4NjYsIDEyNzg3MiwgMTI3ODgyLCAxMjc4OTAsIDEyNzg5NiwgMTI3OTAyLCAxMjc5MDgsIDEyNzkxNCwgCiAgICAgMTI3OTIwLCAxMjc5MjYsIDEyNzkzMiwgMTI3OTM4LCAxMjc5NDQsIDEyNzk1MCwgMTI3OTU2LCAxMjc5NjIsIDEyNzk2OCwgCi0gICAgMTI3OTczLCAxMjc5NzksIDEyNzk4NSwgMTI3OTkxLCAxMjc5OTcsIDEyODAwMywgMTI4MDA5LCAxMjgwMTUsIDEyODAyMSwgCi0gICAgMTI4MDI3LCAxMjgwMzMsIDEyODAzOSwgMTI4MDQ1LCAxMjgwNTEsIDEyODA1NywgMTI4MDYzLCAxMjgwNjksIDEyODA3NSwgCi0gICAgMTI4MDgxLCAxMjgwODcsIDEyODA5MywgMTI4MDk4LCAxMjgxMDQsIDEyODExMCwgMTI4MTE2LCAxMjgxMjIsIDEyODEyOCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MTM0LCAxMjgxMzksIDEyODE0NCwgMTI4MTQ5LCAxMjgxNTQsIDEyODE1OSwgCi0gICAgMTI4MTY0LCAxMjgxNjgsIDEyODE3MywgMTI4MTc4LCAxMjgxODMsIDEyODE4OCwgMTI4MTkzLCAxMjgxOTgsIDEyODIwMywgCi0gICAgMTI4MjA4LCAxMjgyMTMsIDEyODIxNywgMTI4MjIyLCAxMjgyMjYsIDEyODIzMSwgMTI4MjM2LCAxMjgyNDEsIDEyODI0NiwgCi0gICAgMTI4MjUxLCAxMjgyNTUsIDEyODI2MCwgMTI4MjY1LCAxMjgyNzAsIDEyODI3NSwgMTI4MjgwLCAwLCAxMjgyODUsIAotICAgIDEyODI5MCwgMTI4Mjk0LCAxMjgyOTgsIDEyODMwMiwgMTI4MzA2LCAxMjgzMTAsIDEyODMxNCwgMTI4MzE5LCAxMjgzMjMsIAotICAgIDAsIDAsIDAsIDAsIDEyODMyOCwgMTI4MzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjc5NzQsIDEyNzk4MCwgMTI3OTg2LCAxMjc5OTIsIDEyNzk5OCwgMTI4MDA0LCAxMjgwMTAsIDEyODAxNiwgMTI4MDIyLCAKKyAgICAxMjgwMzAsIDEyODAzNiwgMTI4MDQ0LCAxMjgwNTIsIDEyODA2MCwgMTI4MDY2LCAxMjgwNzIsIDEyODA3OCwgMTI4MDg0LCAKKyAgICAxMjgwOTAsIDEyODA5OCwgMTI4MTA4LCAxMjgxMTYsIDEyODEyNCwgMTI4MTMwLCAxMjgxMzYsIDEyODE0NCwgMTI4MTUyLCAKKyAgICAxMjgxNTgsIDEyODE2NiwgMTI4MTc0LCAxMjgxODIsIDEyODE4OCwgMTI4MTk0LCAxMjgyMDAsIDEyODIwNiwgMTI4MjEyLCAKKyAgICAxMjgyMTgsIDEyODIyNiwgMTI4MjM0LCAxMjgyNDAsIDEyODI0NiwgMTI4MjUyLCAxMjgyNTgsIDEyODI2NCwgMTI4MjcyLCAKKyAgICAxMjgyNzgsIDEyODI4NCwgMTI4MjkwLCAxMjgyOTYsIDEyODMwMiwgMTI4MzA4LCAxMjgzMTYsIDEyODMyMiwgMTI4MzI4LCAKKyAgICAxMjgzMzQsIDEyODM0MCwgMTI4MzQ4LCAxMjgzNTYsIDEyODM2MiwgMTI4MzY4LCAxMjgzNzQsIDEyODM3OSwgMTI4Mzg1LCAKKyAgICAxMjgzOTEsIDEyODM5OCwgMTI4NDAzLCAxMjg0MDgsIDEyODQxMywgMTI4NDE4LCAxMjg0MjMsIDEyODQyOCwgMTI4NDMzLCAKKyAgICAxMjg0MzgsIDEyODQ0MywgMTI4NDUyLCAxMjg0NTksIDEyODQ2NCwgMTI4NDY5LCAxMjg0NzQsIDEyODQ4MSwgMTI4NDg2LCAKKyAgICAxMjg0OTEsIDEyODQ5NiwgMTI4NTAzLCAxMjg1MDgsIDEyODUxMywgMTI4NTE4LCAxMjg1MjMsIDEyODUyOCwgMTI4NTMzLCAKKyAgICAxMjg1MzgsIDEyODU0MywgMTI4NTQ4LCAxMjg1NTMsIDEyODU1OCwgMTI4NTY1LCAxMjg1NzAsIDEyODU3NywgMTI4NTgyLCAKKyAgICAxMjg1ODcsIDEyODU5NCwgMTI4NTk5LCAxMjg2MDQsIDEyODYwOSwgMTI4NjE0LCAxMjg2MTksIDEyODYyNCwgMTI4NjI5LCAKKyAgICAxMjg2MzQsIDEyODYzOSwgMTI4NjQ0LCAxMjg2NDksIDEyODY1NCwgMTI4NjU5LCAxMjg2NjQsIDEyODY2OSwgMTI4Njc0LCAKKyAgICAxMjg2NzksIDEyODY4NCwgMTI4Njg5LCAxMjg2OTYsIDEyODcwMSwgMTI4NzA2LCAxMjg3MTEsIDEyODcxNiwgMTI4NzIxLCAKKyAgICAxMjg3MjYsIDEyODczMSwgMTI4NzM2LCAxMjg3NDEsIDEyODc0NiwgMTI4NzUxLCAxMjg3NTYsIDEyODc2MSwgMTI4NzY4LCAKKyAgICAxMjg3NzMsIDEyODc3OCwgMTI4Nzg1LCAxMjg3OTAsIDEyODc5NSwgMTI4ODAwLCAxMjg4MDUsIDEyODgxMCwgMTI4ODE1LCAKKyAgICAxMjg4MjAsIDEyODgyNSwgMTI4ODMwLCAxMjg4MzUsIDEyODg0MiwgMTI4ODQ3LCAxMjg4NTIsIDEyODg1NywgMTI4ODYyLCAKKyAgICAxMjg4NjcsIDEyODg3NCwgMTI4ODgxLCAxMjg4ODYsIDEyODg5MSwgMTI4ODk2LCAxMjg5MDEsIDEyODkwNiwgMTI4OTExLCAKKyAgICAxMjg5MTYsIDEyODkyMSwgMTI4OTI2LCAxMjg5MzEsIDEyODkzNiwgMTI4OTQxLCAxMjg5NDYsIDEyODk1MSwgMTI4OTU2LCAKKyAgICAxMjg5NjEsIDEyODk2NiwgMTI4OTcxLCAxMjg5NzYsIDEyODk4MSwgMTI4OTg2LCAxMjg5OTEsIDEyODk5NiwgMTI5MDAxLCAKKyAgICAxMjkwMDYsIDEyOTAxMSwgMTI5MDE2LCAxMjkwMjEsIDEyOTAyNiwgMTI5MDMxLCAxMjkwMzYsIDEyOTA0MSwgMTI5MDQ2LCAKKyAgICAxMjkwNTEsIDEyOTA1NiwgMTI5MDYxLCAxMjkwNjgsIDEyOTA3MywgMTI5MDc4LCAxMjkwODMsIDEyOTA4OCwgMTI5MDkzLCAKKyAgICAxMjkwOTgsIDEyOTEwMywgMTI5MTA4LCAxMjkxMTMsIDEyOTExOCwgMTI5MTIzLCAxMjkxMjgsIDEyOTEzMywgMTI5MTM4LCAKKyAgICAxMjkxNDMsIDEyOTE0OCwgMTI5MTUzLCAxMjkxNTgsIDEyOTE2MywgMTI5MTY4LCAxMjkxNzMsIDEyOTE3OCwgMTI5MTgzLCAKKyAgICAxMjkxODgsIDEyOTE5MywgMTI5MTk4LCAxMjkyMDMsIDEyOTIwOCwgMTI5MjEzLCAxMjkyMTgsIDEyOTIyMywgMTI5MjI4LCAKKyAgICAxMjkyMzMsIDEyOTIzOCwgMTI5MjQzLCAxMjkyNDgsIDEyOTI1MywgMTI5MjU4LCAxMjkyNjMsIDEyOTI2OCwgMTI5MjczLCAKKyAgICAxMjkyNzgsIDEyOTI4MywgMTI5Mjg4LCAxMjkyOTMsIDEyOTI5OCwgMTI5MzAzLCAxMjkzMDgsIDEyOTMxMywgMTI5MzE4LCAKKyAgICAxMjkzMjMsIDEyOTMyOCwgMTI5MzMzLCAxMjkzMzgsIDEyOTM0MywgMTI5MzQ4LCAxMjkzNTMsIDEyOTM1OCwgMTI5MzY1LCAKKyAgICAxMjkzNzAsIDEyOTM3NSwgMTI5MzgwLCAxMjkzODUsIDEyOTM5MCwgMTI5Mzk1LCAxMjk0MDAsIDEyOTQwNSwgMTI5NDEwLCAKKyAgICAxMjk0MTUsIDEyOTQyMCwgMTI5NDI1LCAxMjk0MzAsIDEyOTQzNSwgMTI5NDQwLCAxMjk0NDUsIDEyOTQ1MCwgMTI5NDU1LCAKKyAgICAxMjk0NjAsIDEyOTQ2NSwgMTI5NDcwLCAxMjk0NzcsIDEyOTQ4MiwgMTI5NDg3LCAxMjk0OTQsIDEyOTQ5OSwgMTI5NTA0LCAKKyAgICAxMjk1MDksIDEyOTUxNCwgMTI5NTE5LCAxMjk1MjQsIDEyOTUyOSwgMTI5NTM0LCAxMjk1MzksIDEyOTU0NCwgMTI5NTQ5LCAKKyAgICAxMjk1NTQsIDEyOTU1OSwgMTI5NTY0LCAxMjk1NjksIDEyOTU3NCwgMTI5NTc5LCAxMjk1ODQsIDEyOTU4OSwgMTI5NTk0LCAKKyAgICAxMjk1OTksIDEyOTYwNCwgMTI5NjA5LCAxMjk2MTQsIDEyOTYxOSwgMTI5NjI0LCAxMjk2MjksIDEyOTYzNCwgMTI5NjM5LCAKKyAgICAxMjk2NDQsIDEyOTY0OSwgMTI5NjU0LCAxMjk2NTksIDEyOTY2NCwgMTI5NjY5LCAxMjk2NzQsIDEyOTY3OSwgMTI5Njg0LCAKKyAgICAxMjk2ODksIDEyOTY5NCwgMTI5Njk5LCAxMjk3MDQsIDEyOTcwOSwgMTI5NzE2LCAxMjk3MjEsIDEyOTcyNiwgMTI5NzMzLCAKKyAgICAxMjk3NDAsIDEyOTc0NSwgMTI5NzUwLCAxMjk3NTUsIDEyOTc2MCwgMTI5NzY1LCAxMjk3NzAsIDEyOTc3NSwgMTI5NzgwLCAKKyAgICAxMjk3ODUsIDEyOTc5MCwgMTI5Nzk1LCAxMjk4MDAsIDEyOTgwNSwgMTI5ODEwLCAxMjk4MTUsIDEyOTgyMCwgMTI5ODI1LCAKKyAgICAxMjk4MzAsIDEyOTgzNSwgMTI5ODQwLCAxMjk4NDUsIDEyOTg1MCwgMTI5ODU1LCAxMjk4NjAsIDEyOTg2NSwgMTI5ODcyLCAKKyAgICAxMjk4NzcsIDEyOTg4MiwgMTI5ODg3LCAxMjk4OTIsIDEyOTg5NywgMTI5OTAyLCAxMjk5MDcsIDEyOTkxMiwgMTI5OTE3LCAKKyAgICAxMjk5MjIsIDEyOTkyNywgMTI5OTMyLCAxMjk5MzcsIDEyOTk0MiwgMTI5OTQ3LCAxMjk5NTIsIDEyOTk1NywgMTI5OTYyLCAKKyAgICAxMjk5NjksIDEyOTk3NCwgMTI5OTc5LCAxMjk5ODQsIDEyOTk4OSwgMTI5OTk0LCAxMjk5OTksIDEzMDAwNCwgMTMwMDEwLCAKKyAgICAxMzAwMTUsIDEzMDAyMCwgMTMwMDI1LCAxMzAwMzAsIDEzMDAzNSwgMTMwMDQwLCAxMzAwNDUsIDEzMDA1MCwgMTMwMDU3LCAKKyAgICAxMzAwNjQsIDEzMDA2OSwgMTMwMDc0LCAxMzAwNzgsIDEzMDA4MywgMTMwMDg3LCAxMzAwOTEsIDEzMDA5NiwgMTMwMTAzLCAKKyAgICAxMzAxMDgsIDEzMDExMywgMTMwMTIyLCAxMzAxMjcsIDEzMDEzMiwgMTMwMTM3LCAxMzAxNDIsIDEzMDE0OSwgMTMwMTU2LCAKKyAgICAxMzAxNjEsIDEzMDE2NiwgMTMwMTcxLCAxMzAxNzYsIDEzMDE4MywgMTMwMTg4LCAxMzAxOTMsIDEzMDE5OCwgMTMwMjAzLCAKKyAgICAxMzAyMDgsIDEzMDIxMywgMTMwMjE4LCAxMzAyMjMsIDEzMDIyOCwgMTMwMjMzLCAxMzAyMzgsIDEzMDI0MywgMTMwMjUwLCAKKyAgICAxMzAyNTQsIDEzMDI1OSwgMTMwMjY0LCAxMzAyNjksIDEzMDI3NCwgMTMwMjc4LCAxMzAyODMsIDEzMDI4OCwgMTMwMjkzLCAKKyAgICAxMzAyOTgsIDEzMDMwMywgMTMwMzA4LCAxMzAzMTMsIDEzMDMxOCwgMTMwMzIzLCAxMzAzMjksIDEzMDMzNSwgMTMwMzQxLCAKKyAgICAxMzAzNDcsIDEzMDM1MywgMTMwMzU4LCAxMzAzNjQsIDEzMDM3MCwgMTMwMzc2LCAxMzAzODIsIDEzMDM4OCwgMTMwMzk0LCAKKyAgICAxMzA0MDAsIDEzMDQwNiwgMTMwNDEyLCAxMzA0MTgsIDEzMDQyNCwgMTMwNDMwLCAxMzA0MzYsIDEzMDQ0MiwgMTMwNDQ4LCAKKyAgICAxMzA0NTQsIDEzMDQ2MCwgMTMwNDY2LCAxMzA0NzEsIDEzMDQ3NywgMTMwNDgzLCAxMzA0ODksIDEzMDQ5NSwgMTMwNTAxLCAKKyAgICAxMzA1MDcsIDEzMDUxMywgMTMwNTE5LCAxMzA1MjUsIDEzMDUzMSwgMTMwNTM3LCAxMzA1NDMsIDEzMDU0OSwgMTMwNTU1LCAKKyAgICAxMzA1NjEsIDEzMDU2NywgMTMwNTczLCAxMzA1NzksIDEzMDU4NSwgMTMwNTkxLCAxMzA1OTYsIDEzMDYwMiwgMTMwNjA4LCAKKyAgICAxMzA2MTQsIDEzMDYyMCwgMTMwNjI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA2MzIsIDEzMDYzNywgMTMwNjQyLCAKKyAgICAxMzA2NDcsIDEzMDY1MiwgMTMwNjU3LCAxMzA2NjIsIDEzMDY2NiwgMTMwNjcxLCAxMzA2NzYsIDEzMDY4MSwgMTMwNjg2LCAKKyAgICAxMzA2OTEsIDEzMDY5NiwgMTMwNzAxLCAxMzA3MDYsIDEzMDcxMSwgMTMwNzE1LCAxMzA3MjAsIDEzMDcyNCwgMTMwNzI5LCAKKyAgICAxMzA3MzQsIDEzMDczOSwgMTMwNzQ0LCAxMzA3NDksIDEzMDc1MywgMTMwNzU4LCAxMzA3NjMsIDEzMDc2NywgMTMwNzcyLCAKKyAgICAxMzA3NzcsIDAsIDEzMDc4MiwgMTMwNzg3LCAxMzA3OTEsIDEzMDc5NSwgMTMwNzk5LCAxMzA4MDMsIDEzMDgwNywgCisgICAgMTMwODExLCAxMzA4MTYsIDEzMDgyMCwgMCwgMCwgMCwgMCwgMTMwODI1LCAxMzA4MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODMzNywgMTI4MzQ0LCAxMjgzNTAsIDEyODM1NywgMTI4MzY0LCAKLSAgICAxMjgzNzEsIDEyODM3OCwgMTI4Mzg1LCAxMjgzOTIsIDEyODM5OSwgMTI4NDA2LCAxMjg0MTMsIDEyODQyMCwgMTI4NDI3LCAKLSAgICAxMjg0MzQsIDEyODQ0MSwgMTI4NDQ4LCAxMjg0NTUsIDEyODQ2MSwgMTI4NDY4LCAxMjg0NzUsIDEyODQ4MiwgMTI4NDg4LCAKLSAgICAxMjg0OTUsIDEyODUwMSwgMTI4NTA3LCAxMjg1MTQsIDEyODUyMCwgMTI4NTI3LCAxMjg1MzMsIDAsIDAsIDEyODUzOSwgCi0gICAgMTI4NTQ3LCAxMjg1NTUsIDEyODU2NCwgMTI4NTczLCAxMjg1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyODU5MCwgMTI4NTk1LCAxMjg2MDAsIDEyODYwNSwgMTI4NjEwLCAxMjg2MTUsIDEyODYyMCwgMTI4NjI1LCAxMjg2MzAsIAotICAgIDEyODYzNSwgMTI4NjQwLCAxMjg2NDUsIDEyODY1MCwgMTI4NjU1LCAxMjg2NjAsIDEyODY2NSwgMTI4NjcwLCAxMjg2NzUsIAotICAgIDEyODY4MCwgMTI4Njg1LCAxMjg2OTAsIDEyODY5NSwgMTI4NzAwLCAxMjg3MDUsIDEyODcxMCwgMTI4NzE1LCAxMjg3MjAsIAotICAgIDEyODcyNSwgMTI4NzMwLCAxMjg3MzUsIDEyODc0MCwgMTI4NzQ1LCAxMjg3NTAsIDEyODc1NSwgMTI4NzYwLCAxMjg3NjUsIAotICAgIDEyODc3MCwgMTI4Nzc1LCAxMjg3ODAsIDEyODc4NSwgMTI4NzkwLCAxMjg3OTUsIDEyODgwMCwgMTI4ODA1LCAxMjg4MTAsIAotICAgIDEyODgxNSwgMTI4ODIwLCAxMjg4MjUsIDEyODgzMCwgMTI4ODM3LCAxMjg4NDQsIDEyODg1MSwgMTI4ODU4LCAxMjg4NjUsIAotICAgIDEyODg3MiwgMTI4ODc5LCAxMjg4ODYsIDEyODg5NSwgMTI4OTAyLCAxMjg5MDksIDEyODkxNiwgMTI4OTIzLCAxMjg5MzAsIAotICAgIDEyODkzNywgMTI4OTQ0LCAxMjg5NTEsIDEyODk1OCwgMTI4OTY1LCAxMjg5NzIsIDEyODk3NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTI4OTg2LCAxMjg5OTEsIDEyODk5NSwgMTI4OTk5LCAxMjkwMDMsIDEyOTAwNywgMTI5MDExLCAKLSAgICAxMjkwMTUsIDEyOTAyMCwgMTI5MDI0LCAwLCAxMjkwMjksIDEyOTAzNCwgMTI5MDM5LCAxMjkwNDYsIDEyOTA1MSwgCi0gICAgMTI5MDU4LCAxMjkwNjUsIDAsIDEyOTA3MCwgMTI5MDc3LCAxMjkwODIsIDEyOTA4NywgMTI5MDk0LCAxMjkxMDEsIAotICAgIDEyOTEwNiwgMTI5MTExLCAxMjkxMTYsIDEyOTEyMSwgMTI5MTI2LCAxMjkxMzMsIDEyOTE0MCwgMTI5MTQ1LCAxMjkxNTAsIAotICAgIDEyOTE1NSwgMTI5MTY4LCAxMjkxNzcsIDEyOTE4NCwgMTI5MTkzLCAxMjkyMDIsIDAsIDAsIDAsIDAsIDAsIDEyOTIxMSwgCi0gICAgMTI5MjE4LCAxMjkyMjUsIDEyOTIzMiwgMTI5MjM5LCAxMjkyNDYsIDEyOTI1MywgMTI5MjYwLCAxMjkyNjcsIDEyOTI3NCwgCi0gICAgMTI5MjgxLCAxMjkyODgsIDEyOTI5NSwgMTI5MzAyLCAxMjkzMDksIDEyOTMxNiwgMTI5MzIzLCAxMjkzMzAsIDEyOTMzNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwODM0LCAxMzA4NDEsIAorICAgIDEzMDg0NywgMTMwODU0LCAxMzA4NjEsIDEzMDg2OCwgMTMwODc1LCAxMzA4ODIsIDEzMDg4OSwgMTMwODk2LCAxMzA5MDMsIAorICAgIDEzMDkxMCwgMTMwOTE3LCAxMzA5MjQsIDEzMDkzMSwgMTMwOTM4LCAxMzA5NDUsIDEzMDk1MiwgMTMwOTU4LCAxMzA5NjUsIAorICAgIDEzMDk3MiwgMTMwOTc5LCAxMzA5ODUsIDEzMDk5MiwgMTMwOTk4LCAxMzEwMDQsIDEzMTAxMSwgMTMxMDE3LCAxMzEwMjQsIAorICAgIDEzMTAzMCwgMCwgMCwgMTMxMDM2LCAxMzEwNDQsIDEzMTA1MiwgMTMxMDYxLCAxMzEwNzAsIDEzMTA3OSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMxMDg3LCAxMzEwOTIsIDEzMTA5NywgMTMxMTAyLCAxMzExMDcsIDEzMTExMiwgMTMxMTE3LCAKKyAgICAxMzExMjIsIDEzMTEyNywgMTMxMTMyLCAxMzExMzcsIDEzMTE0MiwgMTMxMTQ3LCAxMzExNTIsIDEzMTE1NywgMTMxMTYyLCAKKyAgICAxMzExNjcsIDEzMTE3MiwgMTMxMTc3LCAxMzExODIsIDEzMTE4NywgMTMxMTkyLCAxMzExOTcsIDEzMTIwMiwgMTMxMjA3LCAKKyAgICAxMzEyMTIsIDEzMTIxNywgMTMxMjIyLCAxMzEyMjcsIDEzMTIzMiwgMTMxMjM3LCAxMzEyNDIsIDEzMTI0NywgMTMxMjUyLCAKKyAgICAxMzEyNTcsIDEzMTI2MiwgMTMxMjY3LCAxMzEyNzIsIDEzMTI3NywgMTMxMjgyLCAxMzEyODcsIDEzMTI5MiwgMTMxMjk3LCAKKyAgICAxMzEzMDIsIDEzMTMwNywgMTMxMzEyLCAxMzEzMTcsIDEzMTMyMiwgMTMxMzI3LCAxMzEzMzQsIDEzMTM0MSwgMTMxMzQ4LCAKKyAgICAxMzEzNTUsIDEzMTM2MiwgMTMxMzY5LCAxMzEzNzYsIDEzMTM4MywgMTMxMzkyLCAxMzEzOTksIDEzMTQwNiwgMTMxNDEzLCAKKyAgICAxMzE0MjAsIDEzMTQyNywgMTMxNDM0LCAxMzE0NDEsIDEzMTQ0OCwgMTMxNDU1LCAxMzE0NjIsIDEzMTQ2OSwgMTMxNDc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE0ODMsIDEzMTQ4OCwgMTMxNDkyLCAxMzE0OTYsIDEzMTUwMCwgCisgICAgMTMxNTA0LCAxMzE1MDgsIDEzMTUxMiwgMTMxNTE3LCAxMzE1MjEsIDAsIDEzMTUyNiwgMTMxNTMxLCAxMzE1MzYsIAorICAgIDEzMTU0MywgMTMxNTQ4LCAxMzE1NTUsIDEzMTU2MiwgMCwgMTMxNTY3LCAxMzE1NzQsIDEzMTU3OSwgMTMxNTg0LCAKKyAgICAxMzE1OTEsIDEzMTU5OCwgMTMxNjAzLCAxMzE2MDgsIDEzMTYxMywgMTMxNjE4LCAxMzE2MjMsIDEzMTYzMCwgMTMxNjM3LCAKKyAgICAxMzE2NDIsIDEzMTY0NywgMTMxNjUyLCAxMzE2NjUsIDEzMTY3NCwgMTMxNjgxLCAxMzE2OTAsIDEzMTY5OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTMxNzA4LCAxMzE3MTUsIDEzMTcyMiwgMTMxNzI5LCAxMzE3MzYsIDEzMTc0MywgMTMxNzUwLCAxMzE3NTcsIAorICAgIDEzMTc2NCwgMTMxNzcxLCAxMzE3NzgsIDEzMTc4NSwgMTMxNzkyLCAxMzE3OTksIDEzMTgwNiwgMTMxODEzLCAxMzE4MjAsIAorICAgIDEzMTgyNywgMTMxODM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE4NDEsIAorICAgIDEzMTg0NCwgMTMxODQ4LCAxMzE4NTIsIDEzMTg1NiwgMTMxODU5LCAxMzE4NjMsIDEzMTg2OCwgMTMxODcyLCAxMzE4NzYsIAorICAgIDEzMTg4MCwgMTMxODg0LCAxMzE4ODgsIDEzMTg5MywgMTMxODk4LCAxMzE5MDIsIDEzMTkwNiwgMTMxOTA5LCAxMzE5MTMsIAorICAgIDEzMTkxOCwgMTMxOTIzLCAxMzE5MjcsIDEzMTkzMSwgMTMxOTM0LCAxMzE5MzgsIDEzMTk0MiwgMTMxOTQ2LCAxMzE5NTAsIAorICAgIDEzMTk1NCwgMTMxOTU4LCAxMzE5NjIsIDEzMTk2NSwgMTMxOTY5LCAxMzE5NzMsIDEzMTk3NywgMTMxOTgxLCAxMzE5ODUsIAorICAgIDEzMTk4OSwgMTMxOTk1LCAxMzE5OTgsIDEzMjAwMiwgMTMyMDA2LCAxMzIwMTAsIDEzMjAxNCwgMTMyMDE4LCAxMzIwMjIsIAorICAgIDEzMjAyNiwgMTMyMDMwLCAxMzIwMzQsIDEzMjAzOSwgMTMyMDQ0LCAxMzIwNTAsIDEzMjA1NCwgMTMyMDU4LCAxMzIwNjIsIAorICAgIDEzMjA2NiwgMTMyMDcwLCAxMzIwNzQsIDEzMjA3OSwgMTMyMDgzLCAxMzIwODcsIDEzMjA5MSwgMTMyMDk1LCAxMzIwOTksIAorICAgIDEzMjEwNSwgMTMyMTA5LCAxMzIxMTMsIDEzMjExNywgMTMyMTIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzIxMjUsIDEzMjEyOSwgMTMyMTMzLCAxMzIxMzksIDEzMjE0NSwgMTMyMTQ5LCAxMzIxNTQsIDEzMjE1OSwgMTMyMTY0LCAKKyAgICAxMzIxNjksIDEzMjE3MywgMTMyMTc4LCAxMzIxODMsIDEzMjE4OCwgMTMyMTkyLCAxMzIxOTcsIDEzMjIwMiwgMTMyMjA3LCAKKyAgICAxMzIyMTEsIDEzMjIxNiwgMTMyMjIxLCAxMzIyMjYsIDEzMjIzMSwgMTMyMjM2LCAxMzIyNDEsIDEzMjI0NiwgMTMyMjUxLCAKKyAgICAxMzIyNTUsIDEzMjI2MCwgMTMyMjY1LCAxMzIyNzAsIDEzMjI3NSwgMTMyMjgwLCAxMzIyODUsIDEzMjI5MCwgMTMyMjk1LCAKKyAgICAxMzIzMDAsIDEzMjMwNSwgMTMyMzEwLCAxMzIzMTcsIDEzMjMyMiwgMTMyMzI5LCAxMzIzMzQsIDEzMjMzOSwgMTMyMzQ0LCAKKyAgICAxMzIzNDksIDEzMjM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyMzU5LCAKKyAgICAxMzIzNjMsIDEzMjM2OSwgMTMyMzcyLCAxMzIzNzUsIDEzMjM3OSwgMTMyMzgzLCAxMzIzODcsIDEzMjM5MSwgMTMyMzk1LCAKKyAgICAxMzIzOTksIDEzMjQwMywgMTMyNDA5LCAxMzI0MTUsIDEzMjQyMSwgMTMyNDI3LCAxMzI0MzMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTM0NCwgMTI5MzQ3LCAxMjkzNTEsIAotICAgIDEyOTM1NSwgMTI5MzU5LCAxMjkzNjIsIDEyOTM2NiwgMTI5MzcxLCAxMjkzNzUsIDEyOTM3OSwgMTI5MzgzLCAxMjkzODcsIAotICAgIDEyOTM5MSwgMTI5Mzk2LCAxMjk0MDEsIDEyOTQwNSwgMTI5NDA5LCAxMjk0MTMsIDEyOTQxNywgMTI5NDIyLCAxMjk0MjgsIAotICAgIDEyOTQzMiwgMTI5NDM2LCAxMjk0NDAsIDEyOTQ0NCwgMTI5NDQ4LCAxMjk0NTIsIDEyOTQ1NiwgMTI5NDYwLCAxMjk0NjQsIAotICAgIDEyOTQ2OCwgMTI5NDcxLCAxMjk0NzUsIDEyOTQ3OSwgMTI5NDgzLCAxMjk0ODcsIDEyOTQ5MSwgMTI5NDk1LCAxMjk1MDEsIAotICAgIDEyOTUwNCwgMTI5NTA4LCAxMjk1MTIsIDEyOTUxNiwgMTI5NTIwLCAxMjk1MjQsIDEyOTUyOCwgMTI5NTMyLCAxMjk1MzYsIAotICAgIDEyOTU0MCwgMTI5NTQ1LCAxMjk1NTAsIDEyOTU1NiwgMTI5NTYwLCAxMjk1NjQsIDEyOTU2OCwgMTI5NTcyLCAxMjk1NzYsIAotICAgIDEyOTU4MCwgMTI5NTg1LCAxMjk1ODksIDEyOTU5MywgMTI5NTk3LCAxMjk2MDEsIDEyOTYwNSwgMTI5NjExLCAxMjk2MTUsIAotICAgIDEyOTYxOSwgMTI5NjIzLCAxMjk2MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTYzMSwgMTI5NjM1LCAKLSAgICAxMjk2MzksIDEyOTY0NSwgMTI5NjUxLCAxMjk2NTUsIDEyOTY2MCwgMTI5NjY1LCAxMjk2NzAsIDEyOTY3NSwgMTI5Njc5LCAKLSAgICAxMjk2ODQsIDEyOTY4OSwgMTI5Njk0LCAxMjk2OTgsIDEyOTcwMywgMTI5NzA4LCAxMjk3MTMsIDEyOTcxNywgMTI5NzIyLCAKLSAgICAxMjk3MjcsIDEyOTczMiwgMTI5NzM3LCAxMjk3NDIsIDEyOTc0NywgMTI5NzUyLCAxMjk3NTcsIDEyOTc2MSwgMTI5NzY2LCAKLSAgICAxMjk3NzEsIDEyOTc3NiwgMTI5NzgxLCAxMjk3ODYsIDEyOTc5MSwgMTI5Nzk2LCAxMjk4MDEsIDEyOTgwNiwgMTI5ODExLCAKLSAgICAxMjk4MTYsIDEyOTgyMywgMTI5ODI4LCAxMjk4MzUsIDEyOTg0MCwgMTI5ODQ1LCAxMjk4NTAsIDEyOTg1NSwgMTI5ODYwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk4NjUsIDEyOTg2OSwgMTI5ODc1LCAKLSAgICAxMjk4NzgsIDEyOTg4MSwgMTI5ODg1LCAxMjk4ODksIDEyOTg5MywgMTI5ODk3LCAxMjk5MDEsIDEyOTkwNSwgMTI5OTA5LCAKLSAgICAxMjk5MTUsIDEyOTkyMSwgMTI5OTI3LCAxMjk5MzMsIDEyOTkzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzI0NDMsIDEzMjQ0NiwgCisgICAgMTMyNDQ5LCAxMzI0NTIsIDEzMjQ1NSwgMTMyNDU4LCAxMzI0NjEsIDEzMjQ2NCwgMTMyNDY3LCAxMzI0NzAsIDEzMjQ3MywgCisgICAgMTMyNDc2LCAxMzI0NzksIDEzMjQ4MiwgMTMyNDg1LCAxMzI0ODgsIDEzMjQ5MSwgMTMyNDk0LCAxMzI0OTcsIDEzMjUwMCwgCisgICAgMTMyNTAzLCAxMzI1MDYsIDEzMjUwOSwgMTMyNTEyLCAxMzI1MTUsIDEzMjUxOCwgMTMyNTIxLCAxMzI1MjQsIDEzMjUyNywgCisgICAgMTMyNTMwLCAxMzI1MzMsIDEzMjUzNiwgMTMyNTM5LCAxMzI1NDIsIDEzMjU0NSwgMTMyNTQ4LCAxMzI1NTEsIDEzMjU1NCwgCisgICAgMTMyNTU3LCAxMzI1NjAsIDEzMjU2MywgMTMyNTY2LCAxMzI1NjksIDEzMjU3MiwgMTMyNTc1LCAxMzI1NzgsIDEzMjU4MSwgCisgICAgMTMyNTg0LCAxMzI1ODcsIDEzMjU5MCwgMTMyNTkzLCAxMzI1OTYsIDEzMjU5OSwgMTMyNjAyLCAxMzI2MDUsIDEzMjYwOCwgCisgICAgMTMyNjExLCAxMzI2MTQsIDEzMjYxNywgMTMyNjIwLCAxMzI2MjMsIDEzMjYyNiwgMTMyNjI5LCAxMzI2MzIsIDEzMjYzNSwgCisgICAgMTMyNjM4LCAxMzI2NDEsIDEzMjY0NCwgMTMyNjQ3LCAxMzI2NTAsIDEzMjY1MywgMTMyNjU2LCAxMzI2NTksIDEzMjY2MiwgCisgICAgMTMyNjY1LCAxMzI2NjgsIDEzMjY3MSwgMTMyNjc0LCAxMzI2NzcsIDEzMjY4MCwgMTMyNjgzLCAxMzI2ODYsIDEzMjY4OSwgCisgICAgMTMyNjkyLCAxMzI2OTUsIDEzMjY5OCwgMTMyNzAxLCAxMzI3MDQsIDEzMjcwNywgMTMyNzEwLCAxMzI3MTMsIDEzMjcxNiwgCisgICAgMTMyNzE5LCAxMzI3MjIsIDEzMjcyNSwgMTMyNzI4LCAxMzI3MzEsIDEzMjczNCwgMTMyNzM3LCAxMzI3NDAsIDEzMjc0MywgCisgICAgMTMyNzQ2LCAxMzI3NDksIDEzMjc1MiwgMTMyNzU1LCAxMzI3NTgsIDEzMjc2MSwgMTMyNzY0LCAxMzI3NjcsIDEzMjc3MCwgCisgICAgMTMyNzczLCAxMzI3NzYsIDEzMjc3OSwgMTMyNzgyLCAxMzI3ODUsIDEzMjc4OCwgMTMyNzkxLCAxMzI3OTQsIDEzMjc5NywgCisgICAgMTMyODAwLCAxMzI4MDMsIDEzMjgwNiwgMTMyODA5LCAxMzI4MTIsIDEzMjgxNSwgMTMyODE4LCAxMzI4MjEsIDEzMjgyNCwgCisgICAgMTMyODI3LCAxMzI4MzAsIDEzMjgzMywgMTMyODM2LCAxMzI4MzksIDEzMjg0MiwgMTMyODQ1LCAxMzI4NDgsIDEzMjg1MSwgCisgICAgMTMyODU0LCAxMzI4NTcsIDEzMjg2MCwgMTMyODYzLCAxMzI4NjYsIDEzMjg2OSwgMTMyODcyLCAxMzI4NzUsIDEzMjg3OCwgCisgICAgMTMyODgxLCAxMzI4ODQsIDEzMjg4NywgMTMyODkwLCAxMzI4OTMsIDEzMjg5NiwgMTMyODk5LCAxMzI5MDIsIDEzMjkwNSwgCisgICAgMTMyOTA4LCAxMzI5MTEsIDEzMjkxNCwgMTMyOTE3LCAxMzI5MjAsIDEzMjkyMywgMTMyOTI2LCAxMzI5MjksIDEzMjkzMiwgCisgICAgMTMyOTM1LCAxMzI5MzgsIDEzMjk0MSwgMTMyOTQ0LCAxMzI5NDcsIDEzMjk1MCwgMTMyOTUzLCAxMzI5NTYsIDEzMjk1OSwgCisgICAgMTMyOTYyLCAxMzI5NjUsIDEzMjk2OCwgMTMyOTcxLCAxMzI5NzQsIDEzMjk3NywgMTMyOTgwLCAxMzI5ODMsIDEzMjk4NiwgCisgICAgMTMyOTg5LCAxMzI5OTIsIDEzMjk5NSwgMTMyOTk4LCAxMzMwMDEsIDEzMzAwNCwgMTMzMDA3LCAxMzMwMTAsIDEzMzAxMywgCisgICAgMTMzMDE2LCAxMzMwMTksIDEzMzAyMiwgMTMzMDI1LCAxMzMwMjgsIDEzMzAzMSwgMTMzMDM0LCAxMzMwMzcsIDEzMzA0MCwgCisgICAgMTMzMDQzLCAxMzMwNDYsIDEzMzA0OSwgMTMzMDUyLCAxMzMwNTUsIDEzMzA1OCwgMTMzMDYxLCAxMzMwNjQsIDEzMzA2NywgCisgICAgMTMzMDcwLCAxMzMwNzMsIDEzMzA3NiwgMTMzMDc5LCAxMzMwODIsIDEzMzA4NSwgMTMzMDg4LCAxMzMwOTEsIDEzMzA5NCwgCisgICAgMTMzMDk3LCAxMzMxMDAsIDEzMzEwMywgMTMzMTA2LCAxMzMxMDksIDEzMzExMiwgMTMzMTE1LCAxMzMxMTgsIDEzMzEyMSwgCisgICAgMTMzMTI0LCAxMzMxMjcsIDEzMzEzMCwgMTMzMTMzLCAxMzMxMzYsIDEzMzEzOSwgMTMzMTQyLCAxMzMxNDUsIDEzMzE0OCwgCisgICAgMTMzMTUxLCAxMzMxNTQsIDEzMzE1NywgMTMzMTYwLCAxMzMxNjMsIDEzMzE2NiwgMTMzMTY5LCAxMzMxNzIsIDEzMzE3NSwgCisgICAgMTMzMTc4LCAxMzMxODEsIDEzMzE4NCwgMTMzMTg3LCAxMzMxOTAsIDEzMzE5MywgMTMzMTk2LCAxMzMxOTksIDEzMzIwMiwgCisgICAgMTMzMjA1LCAxMzMyMDgsIDEzMzIxMSwgMTMzMjE0LCAxMzMyMTcsIDEzMzIyMCwgMTMzMjIzLCAxMzMyMjYsIDEzMzIyOSwgCisgICAgMTMzMjMyLCAxMzMyMzUsIDEzMzIzOCwgMTMzMjQxLCAxMzMyNDQsIDEzMzI0NywgMTMzMjUwLCAxMzMyNTMsIDEzMzI1NiwgCisgICAgMTMzMjU5LCAxMzMyNjIsIDEzMzI2NSwgMTMzMjY4LCAxMzMyNzEsIDEzMzI3NCwgMTMzMjc3LCAxMzMyODAsIDEzMzI4MywgCisgICAgMTMzMjg2LCAxMzMyODksIDEzMzI5MiwgMTMzMjk1LCAxMzMyOTgsIDEzMzMwMSwgMTMzMzA0LCAxMzMzMDcsIDEzMzMxMCwgCisgICAgMTMzMzEzLCAxMzMzMTYsIDEzMzMxOSwgMTMzMzIyLCAxMzMzMjUsIDEzMzMyOCwgMTMzMzMxLCAxMzMzMzQsIDEzMzMzNywgCisgICAgMTMzMzQwLCAxMzMzNDMsIDEzMzM0NiwgMTMzMzQ5LCAxMzMzNTIsIDEzMzM1NSwgMTMzMzU4LCAxMzMzNjEsIDEzMzM2NCwgCisgICAgMTMzMzY3LCAxMzMzNzAsIDEzMzM3MywgMTMzMzc2LCAxMzMzNzksIDEzMzM4MiwgMTMzMzg1LCAxMzMzODgsIDEzMzM5MSwgCisgICAgMTMzMzk0LCAxMzMzOTcsIDEzMzQwMCwgMTMzNDAzLCAxMzM0MDYsIDEzMzQwOSwgMTMzNDEyLCAxMzM0MTUsIDEzMzQxOCwgCisgICAgMTMzNDIxLCAxMzM0MjQsIDEzMzQyNywgMTMzNDMwLCAxMzM0MzMsIDEzMzQzNiwgMTMzNDM5LCAxMzM0NDIsIDEzMzQ0NSwgCisgICAgMTMzNDQ4LCAxMzM0NTEsIDEzMzQ1NCwgMTMzNDU3LCAxMzM0NjAsIDEzMzQ2MywgMTMzNDY2LCAxMzM0NjksIDEzMzQ3MiwgCisgICAgMTMzNDc1LCAxMzM0NzgsIDEzMzQ4MSwgMTMzNDg0LCAxMzM0ODcsIDEzMzQ5MCwgMTMzNDkzLCAxMzM0OTYsIDEzMzQ5OSwgCisgICAgMTMzNTAyLCAxMzM1MDUsIDEzMzUwOCwgMTMzNTExLCAxMzM1MTQsIDEzMzUxNywgMTMzNTIwLCAxMzM1MjMsIDEzMzUyNiwgCisgICAgMTMzNTI5LCAxMzM1MzIsIDEzMzUzNSwgMTMzNTM4LCAxMzM1NDEsIDEzMzU0NCwgMTMzNTQ3LCAxMzM1NTAsIDEzMzU1MywgCisgICAgMTMzNTU2LCAxMzM1NTksIDEzMzU2MiwgMTMzNTY1LCAxMzM1NjgsIDEzMzU3MSwgMTMzNTc0LCAxMzM1NzcsIDEzMzU4MCwgCisgICAgMTMzNTgzLCAxMzM1ODYsIDEzMzU4OSwgMTMzNTkyLCAxMzM1OTUsIDEzMzU5OCwgMTMzNjAxLCAxMzM2MDQsIDEzMzYwNywgCisgICAgMTMzNjEwLCAxMzM2MTMsIDEzMzYxNiwgMTMzNjE5LCAxMzM2MjIsIDEzMzYyNSwgMTMzNjI4LCAxMzM2MzEsIDEzMzYzNCwgCisgICAgMTMzNjM3LCAxMzM2NDAsIDEzMzY0MywgMTMzNjQ2LCAxMzM2NDksIDEzMzY1MiwgMTMzNjU1LCAxMzM2NTgsIDEzMzY2MSwgCisgICAgMTMzNjY0LCAxMzM2NjcsIDEzMzY3MCwgMTMzNjczLCAxMzM2NzYsIDEzMzY3OSwgMTMzNjgyLCAxMzM2ODUsIDEzMzY4OCwgCisgICAgMTMzNjkxLCAxMzM2OTQsIDEzMzY5NywgMTMzNzAwLCAxMzM3MDMsIDEzMzcwNiwgMTMzNzA5LCAxMzM3MTIsIDEzMzcxNSwgCisgICAgMTMzNzE4LCAxMzM3MjEsIDEzMzcyNCwgMTMzNzI3LCAxMzM3MzAsIDEzMzczMywgMTMzNzM2LCAxMzM3MzksIDEzMzc0MiwgCisgICAgMTMzNzQ1LCAxMzM3NDgsIDEzMzc1MSwgMTMzNzU0LCAxMzM3NTcsIDEzMzc2MCwgMTMzNzYzLCAxMzM3NjYsIDEzMzc2OSwgCisgICAgMTMzNzcyLCAxMzM3NzUsIDEzMzc3OCwgMTMzNzgxLCAxMzM3ODQsIDEzMzc4NywgMTMzNzkwLCAxMzM3OTMsIDEzMzc5NiwgCisgICAgMTMzNzk5LCAxMzM4MDIsIDEzMzgwNSwgMTMzODA4LCAxMzM4MTEsIDEzMzgxNCwgMTMzODE3LCAxMzM4MjAsIDEzMzgyMywgCisgICAgMTMzODI2LCAxMzM4MjksIDEzMzgzMiwgMTMzODM1LCAxMzM4MzgsIDEzMzg0MSwgMTMzODQ0LCAxMzM4NDcsIDEzMzg1MCwgCisgICAgMTMzODUzLCAxMzM4NTYsIDEzMzg1OSwgMTMzODYyLCAxMzM4NjUsIDEzMzg2OCwgMTMzODcxLCAxMzM4NzQsIDEzMzg3NywgCisgICAgMTMzODgwLCAxMzM4ODMsIDEzMzg4NiwgMTMzODg5LCAxMzM4OTIsIDEzMzg5NSwgMTMzODk4LCAxMzM5MDEsIDEzMzkwNCwgCisgICAgMTMzOTA3LCAxMzM5MTAsIDEzMzkxMywgMTMzOTE2LCAxMzM5MTksIDEzMzkyMiwgMTMzOTI1LCAxMzM5MjgsIDEzMzkzMSwgCisgICAgMTMzOTM0LCAxMzM5MzcsIDEzMzk0MCwgMTMzOTQzLCAxMzM5NDYsIDEzMzk0OSwgMTMzOTUyLCAxMzM5NTUsIDEzMzk1OCwgCisgICAgMTMzOTYxLCAxMzM5NjQsIDEzMzk2NywgMTMzOTcwLCAxMzM5NzMsIDEzMzk3NiwgMTMzOTc5LCAxMzM5ODIsIDEzMzk4NSwgCisgICAgMTMzOTg4LCAxMzM5OTEsIDEzMzk5NCwgMTMzOTk3LCAxMzQwMDAsIDEzNDAwMywgMTM0MDA2LCAxMzQwMDksIDEzNDAxMiwgCisgICAgMTM0MDE1LCAxMzQwMTgsIDEzNDAyMSwgMTM0MDI0LCAxMzQwMjcsIDEzNDAzMCwgMTM0MDMzLCAxMzQwMzYsIDEzNDAzOSwgCisgICAgMTM0MDQyLCAxMzQwNDUsIDEzNDA0OCwgMTM0MDUxLCAxMzQwNTQsIDEzNDA1NywgMTM0MDYwLCAxMzQwNjMsIDEzNDA2NiwgCisgICAgMTM0MDY5LCAxMzQwNzIsIDEzNDA3NSwgMTM0MDc4LCAxMzQwODEsIDEzNDA4NCwgMTM0MDg3LCAxMzQwOTAsIDEzNDA5MywgCisgICAgMTM0MDk2LCAxMzQwOTksIDEzNDEwMiwgMTM0MTA1LCAxMzQxMDgsIDEzNDExMSwgMTM0MTE0LCAxMzQxMTcsIDEzNDEyMCwgCisgICAgMTM0MTIzLCAxMzQxMjYsIDEzNDEyOSwgMTM0MTMyLCAxMzQxMzUsIDEzNDEzOCwgMTM0MTQxLCAxMzQxNDQsIDEzNDE0NywgCisgICAgMTM0MTUwLCAxMzQxNTMsIDEzNDE1NiwgMTM0MTU5LCAxMzQxNjIsIDEzNDE2NSwgMTM0MTY4LCAxMzQxNzEsIDEzNDE3NCwgCisgICAgMTM0MTc3LCAxMzQxODAsIDEzNDE4MywgMTM0MTg2LCAxMzQxODksIDEzNDE5MiwgMTM0MTk1LCAxMzQxOTgsIDEzNDIwMSwgCisgICAgMTM0MjA0LCAxMzQyMDcsIDEzNDIxMCwgMTM0MjEzLCAxMzQyMTYsIDEzNDIxOSwgMTM0MjIyLCAxMzQyMjUsIDEzNDIyOCwgCisgICAgMTM0MjMxLCAxMzQyMzQsIDEzNDIzNywgMTM0MjQwLCAxMzQyNDMsIDEzNDI0NiwgMTM0MjQ5LCAxMzQyNTIsIDEzNDI1NSwgCisgICAgMTM0MjU4LCAxMzQyNjEsIDEzNDI2NCwgMTM0MjY3LCAxMzQyNzAsIDEzNDI3MywgMTM0Mjc2LCAxMzQyNzksIDEzNDI4MiwgCisgICAgMTM0Mjg1LCAxMzQyODgsIDEzNDI5MSwgMTM0Mjk0LCAxMzQyOTcsIDEzNDMwMCwgMTM0MzAzLCAxMzQzMDYsIDEzNDMwOSwgCisgICAgMTM0MzEyLCAxMzQzMTUsIDEzNDMxOCwgMTM0MzIxLCAxMzQzMjQsIDEzNDMyNywgMTM0MzMwLCAxMzQzMzMsIDEzNDMzNiwgCisgICAgMTM0MzM5LCAxMzQzNDIsIDEzNDM0NSwgMTM0MzQ4LCAxMzQzNTEsIDEzNDM1NCwgMTM0MzU3LCAxMzQzNjAsIDEzNDM2MywgCisgICAgMTM0MzY2LCAxMzQzNjksIDEzNDM3MiwgMTM0Mzc1LCAxMzQzNzgsIDEzNDM4MSwgMTM0Mzg0LCAxMzQzODcsIDEzNDM5MCwgCisgICAgMTM0MzkzLCAxMzQzOTYsIDEzNDM5OSwgMTM0NDAyLCAxMzQ0MDUsIDEzNDQwOCwgMTM0NDExLCAxMzQ0MTQsIDEzNDQxNywgCisgICAgMTM0NDIwLCAxMzQ0MjMsIDEzNDQyNiwgMTM0NDI5LCAxMzQ0MzIsIDEzNDQzNSwgMTM0NDM4LCAxMzQ0NDEsIDEzNDQ0NCwgCisgICAgMTM0NDQ3LCAxMzQ0NTAsIDEzNDQ1MywgMTM0NDU2LCAxMzQ0NTksIDEzNDQ2MiwgMTM0NDY1LCAxMzQ0NjgsIDEzNDQ3MSwgCisgICAgMTM0NDc0LCAxMzQ0NzcsIDEzNDQ4MCwgMTM0NDgzLCAxMzQ0ODYsIDEzNDQ4OSwgMTM0NDkyLCAxMzQ0OTUsIDEzNDQ5OCwgCisgICAgMTM0NTAxLCAxMzQ1MDQsIDEzNDUwNywgMTM0NTEwLCAxMzQ1MTMsIDEzNDUxNiwgMTM0NTE5LCAxMzQ1MjIsIDEzNDUyNSwgCisgICAgMTM0NTI4LCAxMzQ1MzEsIDEzNDUzNCwgMTM0NTM3LCAxMzQ1NDAsIDEzNDU0MywgMTM0NTQ2LCAxMzQ1NDksIDEzNDU1MiwgCisgICAgMTM0NTU1LCAxMzQ1NTgsIDEzNDU2MSwgMTM0NTY0LCAxMzQ1NjcsIDEzNDU3MCwgMTM0NTczLCAxMzQ1NzYsIDEzNDU3OSwgCisgICAgMTM0NTgyLCAxMzQ1ODUsIDEzNDU4OCwgMTM0NTkxLCAxMzQ1OTQsIDEzNDU5NywgMTM0NjAwLCAxMzQ2MDMsIDEzNDYwNiwgCisgICAgMTM0NjA5LCAxMzQ2MTIsIDEzNDYxNSwgMTM0NjE4LCAxMzQ2MjEsIDEzNDYyNCwgMTM0NjI3LCAxMzQ2MzAsIDEzNDYzMywgCisgICAgMTM0NjM2LCAxMzQ2MzksIDEzNDY0MiwgMTM0NjQ1LCAxMzQ2NDgsIDEzNDY1MSwgMTM0NjU0LCAxMzQ2NTcsIDEzNDY2MCwgCisgICAgMTM0NjYzLCAxMzQ2NjYsIDEzNDY2OSwgMTM0NjcyLCAxMzQ2NzUsIDEzNDY3OCwgMTM0NjgxLCAxMzQ2ODQsIDEzNDY4NywgCisgICAgMTM0NjkwLCAxMzQ2OTMsIDEzNDY5NiwgMTM0Njk5LCAxMzQ3MDIsIDEzNDcwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM0NzA4LCAxMzQ3MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTk0NSwgMTI5OTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE5NDI2LDY1MCArMjA2NjgsNjgzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM0NzE5LCAxMzQ3MjMsIDEzNDcyNywgMTM0NzMxLCAxMzQ3MzUsIDEzNDczOSwgMTM0NzQzLCAxMzQ3NDYsIDEzNDc1MCwgCisgICAgMTM0NzU0LCAxMzQ3NTgsIDEzNDc2MiwgMTM0NzY1LCAxMzQ3NzEsIDEzNDc3NywgMTM0NzgzLCAxMzQ3ODksIDEzNDc5NSwgCisgICAgMTM0Nzk5LCAxMzQ4MDUsIDEzNDgwOSwgMTM0ODEzLCAxMzQ4MTksIDEzNDgyMywgMTM0ODI3LCAxMzQ4MzEsIDEzNDgzNSwgCisgICAgMTM0ODM5LCAxMzQ4NDMsIDEzNDg0NywgMTM0ODUzLCAxMzQ4NTksIDEzNDg2NSwgMTM0ODcxLCAxMzQ4NzgsIDEzNDg4NSwgCisgICAgMTM0ODkyLCAxMzQ5MDIsIDEzNDkwOSwgMTM0OTE2LCAxMzQ5MjIsIDEzNDkyOCwgMTM0OTM0LCAxMzQ5NDAsIDEzNDk0OCwgCisgICAgMTM0OTU2LCAxMzQ5NjQsIDEzNDk3MiwgMTM0OTgxLCAxMzQ5ODcsIDEzNDk5NSwgMTM1MDAxLCAxMzUwMDgsIDEzNTAxNCwgCisgICAgMTM1MDIxLCAxMzUwMjcsIDEzNTAzNSwgMTM1MDM5LCAxMzUwNDMsIDEzNTA0OCwgMTM1MDU0LCAxMzUwNjAsIDEzNTA2OCwgCisgICAgMTM1MDc2LCAxMzUwODIsIDEzNTA4OSwgMTM1MDkyLCAxMzUwOTgsIDEzNTEwMiwgMTM1MTA1LCAxMzUxMDksIDEzNTExMiwgCisgICAgMTM1MTE1LCAxMzUxMTksIDEzNTEyNCwgMTM1MTI4LCAxMzUxMzIsIDEzNTEzOCwgMTM1MTQzLCAxMzUxNDksIDEzNTE1MywgCisgICAgMTM1MTU3LCAxMzUxNjAsIDEzNTE2NCwgMTM1MTY4LCAxMzUxNzMsIDEzNTE3NywgMTM1MTgyLCAxMzUxODYsIDEzNTE5MSwgCisgICAgMTM1MTk1LCAxMzUxOTksIDEzNTIwMywgMTM1MjA3LCAxMzUyMTEsIDEzNTIxNSwgMTM1MjE5LCAxMzUyMjMsIDEzNTIyOCwgCisgICAgMTM1MjMzLCAxMzUyMzgsIDEzNTI0MywgMTM1MjQ5LCAxMzUyNTUsIDEzNTI2MSwgMTM1MjY3LCAxMzUyNzMsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzNTI3OCwgMTM1Mjg2LCAxMzUyOTUsIDEzNTMwMywgMTM1MzEwLCAxMzUzMTgsIDEzNTMyNSwgMTM1MzMyLCAKKyAgICAxMzUzNDEsIDEzNTM0OCwgMTM1MzU1LCAxMzUzNjIsIDEzNTM3MCwgMCwgMCwgMCwgMTM1Mzc4LCAxMzUzODMsIDEzNTM5MCwgCisgICAgMTM1Mzk2LCAxMzU0MDMsIDEzNTQwOSwgMTM1NDE1LCAxMzU0MjEsIDEzNTQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1NDMzLCAxMzU0MzgsIDEzNTQ0NSwgMTM1NDUxLCAxMzU0NTgsIDEzNTQ2NCwgMTM1NDcwLCAxMzU0NzYsIDEzNTQ4MiwgCisgICAgMTM1NDg4LCAwLCAwLCAxMzU0OTMsIDEzNTQ5OSwgMTM1NTA1LCAxMzU1MDgsIDEzNTUxNywgMTM1NTI0LCAxMzU1MzIsIAorICAgIDEzNTUzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTU2LCAxMjk5NjAsIDEyOTk2NCwgMTI5OTY4LCAxMjk5NzIsIDEyOTk3NiwgCi0gICAgMTI5OTgwLCAxMjk5ODMsIDEyOTk4NywgMTI5OTkxLCAxMjk5OTUsIDEyOTk5OSwgMTMwMDAyLCAxMzAwMDgsIDEzMDAxMywgCi0gICAgMTMwMDE5LCAxMzAwMjUsIDEzMDAzMCwgMTMwMDM0LCAxMzAwNDAsIDEzMDA0NCwgMTMwMDQ4LCAxMzAwNTQsIDEzMDA1OCwgCi0gICAgMTMwMDYyLCAxMzAwNjYsIDEzMDA3MCwgMTMwMDc0LCAxMzAwNzgsIDEzMDA4MSwgMTMwMDg3LCAxMzAwOTMsIDEzMDA5OSwgCi0gICAgMTMwMTA1LCAxMzAxMTIsIDEzMDExOSwgMTMwMTI2LCAxMzAxMzYsIDEzMDE0MywgMTMwMTUwLCAxMzAxNTUsIDEzMDE2MCwgCi0gICAgMTMwMTY1LCAxMzAxNzAsIDEzMDE3NywgMTMwMTg0LCAxMzAxOTEsIDEzMDE5OCwgMTMwMjA3LCAxMzAyMTMsIDEzMDIyMCwgCi0gICAgMTMwMjI2LCAxMzAyMzMsIDEzMDIzOSwgMTMwMjQ2LCAxMzAyNTEsIDEzMDI1OCwgMTMwMjYyLCAxMzAyNjYsIDEzMDI3MSwgCi0gICAgMTMwMjc3LCAxMzAyODMsIDEzMDI5MCwgMTMwMjk3LCAxMzAzMDMsIDEzMDMxMCwgMTMwMzEzLCAxMzAzMTksIDEzMDMyMywgCi0gICAgMTMwMzI2LCAxMzAzMzAsIDEzMDMzMywgMTMwMzM2LCAxMzAzNDAsIDEzMDM0NSwgMTMwMzQ5LCAxMzAzNTMsIDEzMDM1OSwgCi0gICAgMTMwMzY0LCAxMzAzNzAsIDEzMDM3NCwgMTMwMzc4LCAxMzAzODEsIDEzMDM4NSwgMTMwMzg5LCAxMzAzOTQsIDEzMDM5OCwgCi0gICAgMTMwNDAzLCAxMzA0MDcsIDEzMDQxMiwgMTMwNDE2LCAxMzA0MjAsIDEzMDQyNCwgMTMwNDI4LCAxMzA0MzIsIDEzMDQzNiwgCi0gICAgMTMwNDQwLCAxMzA0NDQsIDEzMDQ0OSwgMTMwNDU0LCAxMzA0NTksIDEzMDQ2NCwgMTMwNDcwLCAxMzA0NzYsIDEzMDQ4MiwgCi0gICAgMTMwNDg4LCAxMzA0OTQsIDAsIDAsIDAsIDAsIDAsIDEzMDQ5OSwgMTMwNTA3LCAxMzA1MTYsIDEzMDUyNCwgMTMwNTMxLCAKLSAgICAxMzA1MzksIDEzMDU0NiwgMTMwNTUzLCAxMzA1NjIsIDEzMDU2OSwgMTMwNTc2LCAxMzA1ODMsIDEzMDU5MSwgMCwgMCwgMCwgCi0gICAgMTMwNTk5LCAxMzA2MDQsIDEzMDYxMSwgMTMwNjE3LCAxMzA2MjQsIDEzMDYzMCwgMTMwNjM2LCAxMzA2NDIsIDEzMDY0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNjU0LCAxMzA2NTksIDEzMDY2NiwgMTMwNjcyLCAxMzA2NzksIDEzMDY4NSwgCi0gICAgMTMwNjkxLCAxMzA2OTcsIDEzMDcwMywgMTMwNzA5LCAwLCAwLCAxMzA3MTQsIDEzMDcyMCwgMTMwNzI2LCAxMzA3MjksIAotICAgIDEzMDczOCwgMTMwNzQ1LCAxMzA3NTMsIDEzMDc2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1NTQ2LCAKKyAgICAxMzU1NTEsIDEzNTU1NiwgMTM1NTYxLCAxMzU1NjgsIDEzNTU3NSwgMTM1NTgyLCAxMzU1ODksIDEzNTU5NCwgMTM1NTk5LCAKKyAgICAxMzU2MDQsIDEzNTYwOSwgMTM1NjE2LCAxMzU2MjEsIDEzNTYyOCwgMTM1NjM1LCAxMzU2NDAsIDEzNTY0NSwgMTM1NjUwLCAKKyAgICAxMzU2NTcsIDEzNTY2MiwgMTM1NjY3LCAxMzU2NzQsIDEzNTY4MSwgMTM1Njg2LCAxMzU2OTEsIDEzNTY5NiwgMTM1NzAzLCAKKyAgICAxMzU3MTAsIDEzNTcxNywgMTM1NzIyLCAxMzU3MjcsIDEzNTczNCwgMTM1NzQxLCAxMzU3NDgsIDEzNTc1NSwgMTM1NzYwLCAKKyAgICAxMzU3NjUsIDEzNTc3MCwgMTM1Nzc3LCAxMzU3ODIsIDEzNTc4NywgMTM1NzkyLCAxMzU3OTksIDEzNTgwOCwgMTM1ODE1LCAKKyAgICAxMzU4MjAsIDEzNTgyNSwgMTM1ODMwLCAxMzU4MzUsIDEzNTg0MCwgMTM1ODQ1LCAxMzU4NTQsIDEzNTg2MSwgMTM1ODY2LCAKKyAgICAxMzU4NzMsIDEzNTg4MCwgMTM1ODg1LCAxMzU4OTAsIDEzNTg5NSwgMTM1OTAyLCAxMzU5MDcsIDEzNTkxNCwgMTM1OTIxLCAKKyAgICAxMzU5MjYsIDEzNTkzMSwgMTM1OTM2LCAxMzU5NDMsIDEzNTk1MCwgMTM1OTU1LCAxMzU5NjAsIDEzNTk2NywgMTM1OTc0LCAKKyAgICAxMzU5ODEsIDEzNTk4NiwgMTM1OTkxLCAxMzU5OTYsIDEzNjAwMSwgMTM2MDA4LCAxMzYwMTcsIDEzNjAyNiwgMTM2MDMxLCAKKyAgICAxMzYwMzgsIDEzNjA0NywgMTM2MDUyLCAxMzYwNTcsIDEzNjA2MiwgMTM2MDY3LCAxMzYwNzQsIDEzNjA4MSwgMTM2MDg4LCAKKyAgICAxMzYwOTUsIDEzNjEwMCwgMTM2MTA1LCAxMzYxMTAsIDEzNjExNywgMTM2MTI0LCAxMzYxMzEsIDEzNjEzNiwgMTM2MTQxLCAKKyAgICAxMzYxNDgsIDEzNjE1MywgMTM2MTYwLCAxMzYxNjUsIDEzNjE3MiwgMTM2MTc3LCAxMzYxODQsIDEzNjE5MSwgMTM2MTk2LCAKKyAgICAxMzYyMDEsIDEzNjIwNiwgMTM2MjExLCAxMzYyMTYsIDEzNjIyMSwgMTM2MjI2LCAxMzYyMzEsIDEzNjIzNiwgMTM2MjQzLCAKKyAgICAxMzYyNTAsIDEzNjI1NywgMTM2MjY0LCAxMzYyNzEsIDEzNjI4MCwgMTM2Mjg1LCAxMzYyOTAsIDEzNjI5NywgMTM2MzA0LCAKKyAgICAxMzYzMDksIDEzNjMxNiwgMTM2MzIzLCAxMzYzMzAsIDEzNjMzNywgMTM2MzQ0LCAxMzYzNTEsIDEzNjM1NiwgMTM2MzYxLCAKKyAgICAxMzYzNjYsIDEzNjM3MSwgMTM2Mzc2LCAxMzYzODUsIDEzNjM5NCwgMTM2NDAzLCAxMzY0MTIsIDEzNjQyMSwgMTM2NDMwLCAKKyAgICAxMzY0MzksIDEzNjQ0OCwgMTM2NDUzLCAxMzY0NjQsIDEzNjQ3NSwgMTM2NDg0LCAxMzY0ODksIDEzNjQ5NCwgMTM2NDk5LCAKKyAgICAxMzY1MDQsIDEzNjUxMywgMTM2NTIwLCAxMzY1MjcsIDEzNjUzNCwgMTM2NTQxLCAxMzY1NDgsIDEzNjU1NSwgMTM2NTY0LCAKKyAgICAxMzY1NzMsIDEzNjU4NCwgMTM2NTkzLCAxMzY2MDQsIDEzNjYxMywgMTM2NjIwLCAxMzY2MjksIDEzNjY0MCwgMTM2NjQ5LCAKKyAgICAxMzY2NTgsIDEzNjY2NywgMTM2Njc2LCAxMzY2ODMsIDEzNjY5MCwgMTM2Njk3LCAxMzY3MDYsIDEzNjcxNSwgMTM2NzI2LCAKKyAgICAxMzY3MzUsIDEzNjc0NCwgMTM2NzU1LCAxMzY3NjAsIDEzNjc2NSwgMTM2Nzc2LCAxMzY3ODQsIDEzNjc5MywgMTM2ODAyLCAKKyAgICAxMzY4MTEsIDEzNjgyMiwgMTM2ODMxLCAxMzY4NDAsIDEzNjg1MSwgMTM2ODYyLCAxMzY4NzMsIDEzNjg4NCwgMTM2ODk1LCAKKyAgICAxMzY5MDYsIDEzNjkxMywgMTM2OTIwLCAxMzY5MjcsIDEzNjkzNCwgMTM2OTQ1LCAxMzY5NTQsIDEzNjk2MSwgMTM2OTY4LCAKKyAgICAxMzY5NzUsIDEzNjk4NiwgMTM2OTk3LCAxMzcwMDgsIDEzNzAxOSwgMTM3MDMwLCAxMzcwNDEsIDEzNzA1MiwgMTM3MDYzLCAKKyAgICAxMzcwNzAsIDEzNzA3NywgMTM3MDg2LCAxMzcwOTUsIDEzNzEwMiwgMTM3MTA5LCAxMzcxMTYsIDEzNzEyNSwgMTM3MTM0LCAKKyAgICAxMzcxNDMsIDEzNzE1MCwgMTM3MTU5LCAxMzcxNjgsIDEzNzE3NywgMTM3MTg0LCAxMzcxOTEsIDEzNzE5NiwgMTM3MjAyLCAKKyAgICAxMzcyMDksIDEzNzIxNiwgMTM3MjIzLCAxMzcyMzAsIDEzNzIzNywgMTM3MjQ0LCAxMzcyNTMsIDEzNzI2MiwgMTM3MjcxLCAKKyAgICAxMzcyODAsIDEzNzI4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM3Mjk2LCAxMzczMDIsIDEzNzMwNywgCisgICAgMTM3MzEyLCAxMzczMTksIDEzNzMyNSwgMTM3MzMxLCAxMzczMzcsIDEzNzM0MywgMTM3MzQ5LCAxMzczNTUsIDEzNzM2MSwgCisgICAgMTM3MzY1LCAxMzczNjksIDEzNzM3NSwgMTM3MzgxLCAxMzczODcsIDEzNzM5MSwgMTM3Mzk2LCAxMzc0MDEsIDEzNzQwNSwgCisgICAgMTM3NDA5LCAxMzc0MTIsIDEzNzQxOCwgMTM3NDI0LCAxMzc0MzAsIDEzNzQzNiwgMTM3NDQyLCAxMzc0NDgsIDEzNzQ1NCwgCisgICAgMTM3NDYwLCAxMzc0NjYsIDEzNzQ3NiwgMTM3NDg2LCAxMzc0OTIsIDEzNzQ5OCwgMTM3NTA4LCAxMzc1MTgsIDEzNzUyNCwgCisgICAgMCwgMCwgMTM3NTMwLCAxMzc1MzgsIDEzNzU0MywgMTM3NTQ4LCAxMzc1NTQsIDEzNzU2MCwgMTM3NTY2LCAxMzc1NzIsIAorICAgIDEzNzU3OCwgMTM3NTg0LCAxMzc1OTEsIDEzNzU5OCwgMTM3NjA0LCAxMzc2MTAsIDEzNzYxNiwgMTM3NjIyLCAxMzc2MjgsIAorICAgIDEzNzYzNCwgMTM3NjQwLCAxMzc2NDYsIDEzNzY1MSwgMTM3NjU3LCAxMzc2NjMsIDEzNzY2OSwgMTM3Njc1LCAxMzc2ODEsIAorICAgIDEzNzY5MCwgMTM3Njk2LCAxMzc3MDEsIDEzNzcwOSwgMTM3NzE2LCAxMzc3MjMsIDEzNzczMiwgMTM3NzQxLCAxMzc3NTAsIAorICAgIDEzNzc1OSwgMTM3NzY4LCAxMzc3NzcsIDEzNzc4NiwgMTM3Nzk1LCAxMzc4MDUsIDEzNzgxNSwgMTM3ODIzLCAxMzc4MzEsIAorICAgIDEzNzg0MCwgMTM3ODQ5LCAxMzc4NTUsIDEzNzg2MSwgMTM3ODY3LCAxMzc4NzMsIDEzNzg4MSwgMTM3ODg5LCAxMzc4OTMsIAorICAgIDEzNzg5OSwgMTM3OTA0LCAxMzc5MTAsIDEzNzkxNiwgMTM3OTIyLCAxMzc5MjgsIDEzNzkzNCwgMTM3OTQzLCAxMzc5NDgsIAorICAgIDEzNzk1NSwgMTM3OTYwLCAxMzc5NjUsIDEzNzk3MCwgMTM3OTc2LCAxMzc5ODIsIDEzNzk4OCwgMTM3OTk1LCAxMzgwMDAsIAorICAgIDEzODAwNSwgMTM4MDEwLCAxMzgwMTUsIDEzODAyMCwgMTM4MDI2LCAxMzgwMzIsIDEzODAzOCwgMTM4MDQ0LCAxMzgwNTAsIAorICAgIDEzODA1NiwgMTM4MDYyLCAxMzgwNjgsIDEzODA3MywgMTM4MDc4LCAxMzgwODMsIDEzODA4OCwgMTM4MDkzLCAxMzgwOTgsIAorICAgIDEzODEwMywgMTM4MTA4LCAxMzgxMTQsIDEzODEyMCwgMTM4MTI1LCAxMzgxMzAsIDEzODEzNSwgMTM4MTQwLCAxMzgxNDUsIAorICAgIDEzODE1MSwgMTM4MTU4LCAxMzgxNjIsIDEzODE2NiwgMTM4MTcwLCAxMzgxNzQsIDEzODE3OCwgMTM4MTgyLCAxMzgxODYsIAorICAgIDEzODE5MCwgMTM4MTk4LCAxMzgyMDgsIDEzODIxMiwgMTM4MjE2LCAxMzgyMjIsIDEzODIyOCwgMTM4MjM0LCAxMzgyNDAsIAorICAgIDEzODI0NiwgMTM4MjUyLCAxMzgyNTgsIDEzODI2NCwgMTM4MjcwLCAxMzgyNzYsIDEzODI4MiwgMTM4Mjg4LCAxMzgyOTQsIAorICAgIDEzODMwMCwgMTM4MzA0LCAxMzgzMDgsIDEzODMxNSwgMTM4MzIxLCAxMzgzMjcsIDEzODMzMywgMTM4MzM4LCAxMzgzNDUsIAorICAgIDEzODM1MCwgMTM4MzU2LCAxMzgzNjIsIDEzODM2OCwgMTM4Mzc0LCAxMzgzNzksIDEzODM4MywgMTM4Mzg5LCAxMzgzOTMsIAorICAgIDEzODM5NywgMTM4NDAxLCAxMzg0MDcsIDEzODQxMywgMTM4NDE3LCAxMzg0MjMsIDEzODQyOSwgMTM4NDM1LCAxMzg0NDEsIAorICAgIDEzODQ0NywgMTM4NDU1LCAxMzg0NjMsIDEzODQ2OSwgMTM4NDc1LCAxMzg0ODEsIDEzODQ4NywgMTM4NDk5LCAxMzg1MTEsIAorICAgIDEzODUyNSwgMTM4NTM3LCAxMzg1NDksIDEzODU2MywgMTM4NTc3LCAxMzg1OTEsIDEzODU5NSwgMTM4NjAzLCAxMzg2MTEsIAorICAgIDEzODYxNiwgMTM4NjIwLCAxMzg2MjQsIDEzODYyOCwgMTM4NjMyLCAxMzg2MzYsIDEzODY0MCwgMTM4NjQ0LCAxMzg2NTAsIAorICAgIDEzODY1NiwgMTM4NjYyLCAxMzg2NjgsIDEzODY3NiwgMTM4Njg1LCAxMzg2OTIsIDEzODY5OSwgMTM4NzA3LCAxMzg3MTQsIAorICAgIDEzODcyNiwgMTM4NzM4LCAxMzg3NTAsIDEzODc2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4NzY5LCAxMzg3NzYsIDEzODc4MywgMTM4NzkwLCAxMzg3OTcsIAorICAgIDEzODgwNCwgMTM4ODExLCAxMzg4MTgsIDEzODgyNSwgMTM4ODMyLCAxMzg4MzksIDEzODg0NiwgMTM4ODUzLCAxMzg4NjAsIAorICAgIDEzODg2NywgMTM4ODc0LCAxMzg4ODEsIDEzODg4OCwgMTM4ODk1LCAxMzg5MDIsIDEzODkwOSwgMTM4OTE2LCAxMzg5MjMsIAorICAgIDEzODkzMCwgMTM4OTM3LCAxMzg5NDQsIDEzODk1MSwgMTM4OTU4LCAxMzg5NjUsIDEzODk3MiwgMTM4OTc5LCAxMzg5ODYsIAorICAgIDEzODk5MywgMTM5MDAwLCAxMzkwMDcsIDEzOTAxNCwgMTM5MDIxLCAxMzkwMjgsIDEzOTAzNSwgMTM5MDQyLCAxMzkwNDksIAorICAgIDEzOTA1NiwgMTM5MDYzLCAxMzkwNzAsIDEzOTA3NywgMTM5MDg0LCAxMzkwOTEsIDEzOTA5OCwgMTM5MTA1LCAxMzkxMTIsIAorICAgIDEzOTExOSwgMTM5MTI2LCAxMzkxMzMsIDEzOTE0MCwgMTM5MTQ3LCAxMzkxNTQsIDEzOTE2MSwgMTM5MTY4LCAxMzkxNzUsIAorICAgIDEzOTE4MiwgMTM5MTg5LCAxMzkxOTYsIDEzOTIwMywgMTM5MjEwLCAxMzkyMTcsIDEzOTIyNCwgMTM5MjMxLCAxMzkyMzYsIAorICAgIDEzOTI0MSwgMTM5MjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzA3NjcsIDEzMDc3MiwgMTMwNzc3LCAxMzA3ODIsIDEzMDc4OSwgMTMwNzk2LCAxMzA4MDMsIAotICAgIDEzMDgxMCwgMTMwODE1LCAxMzA4MjAsIDEzMDgyNSwgMTMwODMwLCAxMzA4MzcsIDEzMDg0MiwgMTMwODQ5LCAxMzA4NTYsIAotICAgIDEzMDg2MSwgMTMwODY2LCAxMzA4NzEsIDEzMDg3OCwgMTMwODgzLCAxMzA4ODgsIDEzMDg5NSwgMTMwOTAyLCAxMzA5MDcsIAotICAgIDEzMDkxMiwgMTMwOTE3LCAxMzA5MjQsIDEzMDkzMSwgMTMwOTM4LCAxMzA5NDMsIDEzMDk0OCwgMTMwOTU1LCAxMzA5NjIsIAotICAgIDEzMDk2OSwgMTMwOTc2LCAxMzA5ODEsIDEzMDk4NiwgMTMwOTkxLCAxMzA5OTgsIDEzMTAwMywgMTMxMDA4LCAxMzEwMTMsIAotICAgIDEzMTAyMCwgMTMxMDI5LCAxMzEwMzYsIDEzMTA0MSwgMTMxMDQ2LCAxMzEwNTEsIDEzMTA1NiwgMTMxMDYxLCAxMzEwNjYsIAotICAgIDEzMTA3NSwgMTMxMDgyLCAxMzEwODcsIDEzMTA5NCwgMTMxMTAxLCAxMzExMDYsIDEzMTExMSwgMTMxMTE2LCAxMzExMjMsIAotICAgIDEzMTEyOCwgMTMxMTM1LCAxMzExNDIsIDEzMTE0NywgMTMxMTUyLCAxMzExNTcsIDEzMTE2NCwgMTMxMTcxLCAxMzExNzYsIAotICAgIDEzMTE4MSwgMTMxMTg4LCAxMzExOTUsIDEzMTIwMiwgMTMxMjA3LCAxMzEyMTIsIDEzMTIxNywgMTMxMjIyLCAxMzEyMjksIAotICAgIDEzMTIzOCwgMTMxMjQ3LCAxMzEyNTIsIDEzMTI1OSwgMTMxMjY4LCAxMzEyNzMsIDEzMTI3OCwgMTMxMjgzLCAxMzEyODgsIAotICAgIDEzMTI5NSwgMTMxMzAyLCAxMzEzMDksIDEzMTMxNiwgMTMxMzIxLCAxMzEzMjYsIDEzMTMzMSwgMTMxMzM4LCAxMzEzNDUsIAotICAgIDEzMTM1MiwgMTMxMzU3LCAxMzEzNjIsIDEzMTM2OSwgMTMxMzc0LCAxMzEzODEsIDEzMTM4NiwgMTMxMzkzLCAxMzEzOTgsIAotICAgIDEzMTQwNSwgMTMxNDEyLCAxMzE0MTcsIDEzMTQyMiwgMTMxNDI3LCAxMzE0MzIsIDEzMTQzNywgMTMxNDQyLCAxMzE0NDcsIAotICAgIDEzMTQ1MiwgMTMxNDU3LCAxMzE0NjQsIDEzMTQ3MSwgMTMxNDc4LCAxMzE0ODUsIDEzMTQ5MiwgMTMxNTAxLCAxMzE1MDYsIAotICAgIDEzMTUxMSwgMTMxNTE4LCAxMzE1MjUsIDEzMTUzMCwgMTMxNTM3LCAxMzE1NDQsIDEzMTU1MSwgMTMxNTU4LCAxMzE1NjUsIAotICAgIDEzMTU3MiwgMTMxNTc3LCAxMzE1ODIsIDEzMTU4NywgMTMxNTkyLCAxMzE1OTcsIDEzMTYwNiwgMTMxNjE1LCAxMzE2MjQsIAotICAgIDEzMTYzMywgMTMxNjQyLCAxMzE2NTEsIDEzMTY2MCwgMTMxNjY5LCAxMzE2NzQsIDEzMTY4NSwgMTMxNjk2LCAxMzE3MDUsIAotICAgIDEzMTcxMCwgMTMxNzE1LCAxMzE3MjAsIDEzMTcyNSwgMTMxNzM0LCAxMzE3NDEsIDEzMTc0OCwgMTMxNzU1LCAxMzE3NjIsIAotICAgIDEzMTc2OSwgMTMxNzc2LCAxMzE3ODUsIDEzMTc5NCwgMTMxODA1LCAxMzE4MTQsIDEzMTgyNSwgMTMxODM0LCAxMzE4NDEsIAotICAgIDEzMTg1MCwgMTMxODYxLCAxMzE4NzAsIDEzMTg3OSwgMTMxODg4LCAxMzE4OTcsIDEzMTkwNCwgMTMxOTExLCAxMzE5MTgsIAotICAgIDEzMTkyNywgMTMxOTM2LCAxMzE5NDcsIDEzMTk1NiwgMTMxOTY1LCAxMzE5NzYsIDEzMTk4MSwgMTMxOTg2LCAxMzE5OTcsIAotICAgIDEzMjAwNSwgMTMyMDE0LCAxMzIwMjMsIDEzMjAzMiwgMTMyMDQzLCAxMzIwNTIsIDEzMjA2MSwgMTMyMDcyLCAxMzIwODMsIAotICAgIDEzMjA5NCwgMTMyMTA1LCAxMzIxMTYsIDEzMjEyNywgMTMyMTM0LCAxMzIxNDEsIDEzMjE0OCwgMTMyMTU1LCAxMzIxNjYsIAotICAgIDEzMjE3NSwgMTMyMTgyLCAxMzIxODksIDEzMjE5NiwgMTMyMjA3LCAxMzIyMTgsIDEzMjIyOSwgMTMyMjQwLCAxMzIyNTEsIAotICAgIDEzMjI2MiwgMTMyMjczLCAxMzIyODQsIDEzMjI5MSwgMTMyMjk4LCAxMzIzMDcsIDEzMjMxNiwgMTMyMzIzLCAxMzIzMzAsIAotICAgIDEzMjMzNywgMTMyMzQ2LCAxMzIzNTUsIDEzMjM2NCwgMTMyMzcxLCAxMzIzODAsIDEzMjM4OSwgMTMyMzk4LCAxMzI0MDUsIAotICAgIDEzMjQxMiwgMTMyNDE3LCAxMzI0MjMsIDEzMjQzMCwgMTMyNDM3LCAxMzI0NDQsIDEzMjQ1MSwgMTMyNDU4LCAxMzI0NjUsIAotICAgIDEzMjQ3NCwgMTMyNDgzLCAxMzI0OTIsIDEzMjUwMSwgMTMyNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzI1MTcsIDEzMjUyMywgMTMyNTI4LCAxMzI1MzMsIDEzMjU0MCwgMTMyNTQ2LCAxMzI1NTIsIDEzMjU1OCwgMTMyNTY0LCAKLSAgICAxMzI1NzAsIDEzMjU3NiwgMTMyNTgyLCAxMzI1ODYsIDEzMjU5MCwgMTMyNTk2LCAxMzI2MDIsIDEzMjYwOCwgMTMyNjEyLCAKLSAgICAxMzI2MTcsIDEzMjYyMiwgMTMyNjI2LCAxMzI2MzAsIDEzMjYzMywgMTMyNjM5LCAxMzI2NDUsIDEzMjY1MSwgMTMyNjU3LCAKLSAgICAxMzI2NjMsIDEzMjY2OSwgMTMyNjc1LCAxMzI2ODEsIDEzMjY4NywgMTMyNjk3LCAxMzI3MDcsIDEzMjcxMywgMTMyNzE5LCAKLSAgICAxMzI3MjksIDEzMjczOSwgMTMyNzQ1LCAwLCAwLCAxMzI3NTEsIDEzMjc1OSwgMTMyNzY0LCAxMzI3NjksIDEzMjc3NSwgCi0gICAgMTMyNzgxLCAxMzI3ODcsIDEzMjc5MywgMTMyNzk5LCAxMzI4MDUsIDEzMjgxMiwgMTMyODE5LCAxMzI4MjUsIDEzMjgzMSwgCi0gICAgMTMyODM3LCAxMzI4NDMsIDEzMjg0OSwgMTMyODU1LCAxMzI4NjEsIDEzMjg2NywgMTMyODcyLCAxMzI4NzgsIDEzMjg4NCwgCi0gICAgMTMyODkwLCAxMzI4OTYsIDEzMjkwMiwgMTMyOTExLCAxMzI5MTcsIDEzMjkyMiwgMTMyOTMwLCAxMzI5MzcsIDEzMjk0NCwgCi0gICAgMTMyOTUzLCAxMzI5NjIsIDEzMjk3MSwgMTMyOTgwLCAxMzI5ODksIDEzMjk5OCwgMTMzMDA3LCAxMzMwMTYsIDEzMzAyNiwgCi0gICAgMTMzMDM2LCAxMzMwNDQsIDEzMzA1MiwgMTMzMDYxLCAxMzMwNzAsIDEzMzA3NiwgMTMzMDgyLCAxMzMwODgsIDEzMzA5NCwgCi0gICAgMTMzMTAyLCAxMzMxMTAsIDEzMzExNCwgMTMzMTIwLCAxMzMxMjUsIDEzMzEzMSwgMTMzMTM3LCAxMzMxNDMsIDEzMzE0OSwgCi0gICAgMTMzMTU1LCAxMzMxNjQsIDEzMzE2OSwgMTMzMTc2LCAxMzMxODEsIDEzMzE4NiwgMTMzMTkxLCAxMzMxOTcsIDEzMzIwMywgCi0gICAgMTMzMjA5LCAxMzMyMTYsIDEzMzIyMSwgMTMzMjI2LCAxMzMyMzEsIDEzMzIzNiwgMTMzMjQxLCAxMzMyNDcsIDEzMzI1MywgCi0gICAgMTMzMjU5LCAxMzMyNjUsIDEzMzI3MSwgMTMzMjc3LCAxMzMyODMsIDEzMzI4OSwgMTMzMjk0LCAxMzMyOTksIDEzMzMwNCwgCi0gICAgMTMzMzA5LCAxMzMzMTQsIDEzMzMxOSwgMTMzMzI0LCAxMzMzMjksIDEzMzMzNSwgMTMzMzQxLCAxMzMzNDYsIDEzMzM1MSwgCi0gICAgMTMzMzU2LCAxMzMzNjEsIDEzMzM2NiwgMTMzMzcyLCAxMzMzNzksIDEzMzM4MywgMTMzMzg3LCAxMzMzOTEsIDEzMzM5NSwgCi0gICAgMTMzMzk5LCAxMzM0MDMsIDEzMzQwNywgMTMzNDExLCAxMzM0MTksIDEzMzQyOSwgMTMzNDMzLCAxMzM0MzcsIDEzMzQ0MywgCi0gICAgMTMzNDQ5LCAxMzM0NTUsIDEzMzQ2MSwgMTMzNDY3LCAxMzM0NzMsIDEzMzQ3OSwgMTMzNDg1LCAxMzM0OTEsIDEzMzQ5NywgCi0gICAgMTMzNTAzLCAxMzM1MDksIDEzMzUxNSwgMTMzNTIxLCAxMzM1MjUsIDEzMzUyOSwgMTMzNTM2LCAxMzM1NDIsIDEzMzU0OCwgCi0gICAgMTMzNTU0LCAxMzM1NTksIDEzMzU2NiwgMTMzNTcxLCAxMzM1NzcsIDEzMzU4MywgMTMzNTg5LCAxMzM1OTUsIDEzMzYwMCwgCi0gICAgMTMzNjA0LCAxMzM2MTAsIDEzMzYxNCwgMTMzNjE4LCAxMzM2MjIsIDEzMzYyOCwgMTMzNjM0LCAxMzM2MzgsIDEzMzY0NCwgCi0gICAgMTMzNjUwLCAxMzM2NTYsIDEzMzY2MiwgMTMzNjY4LCAxMzM2NzYsIDEzMzY4NCwgMTMzNjkwLCAxMzM2OTYsIDEzMzcwMiwgCi0gICAgMTMzNzA4LCAxMzM3MjAsIDEzMzczMiwgMTMzNzQ2LCAxMzM3NTgsIDEzMzc3MCwgMTMzNzg0LCAxMzM3OTgsIDEzMzgxMiwgCi0gICAgMTMzODE2LCAxMzM4MjQsIDEzMzgzMiwgMTMzODM3LCAxMzM4NDEsIDEzMzg0NSwgMTMzODQ5LCAxMzM4NTMsIDEzMzg1NywgCi0gICAgMTMzODYxLCAxMzM4NjUsIDEzMzg3MSwgMTMzODc3LCAxMzM4ODMsIDEzMzg4OSwgMTMzODk3LCAxMzM5MDYsIDEzMzkxMywgCi0gICAgMTMzOTIwLCAxMzM5MjgsIDEzMzkzNSwgMTMzOTQ3LCAxMzM5NTksIDEzMzk3MSwgMTMzOTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzM5OTAsIDEzMzk5NywgCi0gICAgMTM0MDA0LCAxMzQwMTEsIDEzNDAxOCwgMTM0MDI1LCAxMzQwMzIsIDEzNDAzOSwgMTM0MDQ2LCAxMzQwNTMsIDEzNDA2MCwgCi0gICAgMTM0MDY3LCAxMzQwNzQsIDEzNDA4MSwgMTM0MDg4LCAxMzQwOTUsIDEzNDEwMiwgMTM0MTA5LCAxMzQxMTYsIDEzNDEyMywgCi0gICAgMTM0MTMwLCAxMzQxMzcsIDEzNDE0NCwgMTM0MTUxLCAxMzQxNTgsIDEzNDE2NSwgMTM0MTcyLCAxMzQxNzksIDEzNDE4NiwgCi0gICAgMTM0MTkzLCAxMzQyMDAsIDEzNDIwNywgMTM0MjE0LCAxMzQyMjEsIDEzNDIyOCwgMTM0MjM1LCAxMzQyNDIsIDEzNDI0OSwgCi0gICAgMTM0MjU2LCAxMzQyNjMsIDEzNDI3MCwgMTM0Mjc3LCAxMzQyODQsIDEzNDI5MSwgMTM0Mjk4LCAxMzQzMDUsIDEzNDMxMiwgCi0gICAgMTM0MzE5LCAxMzQzMjYsIDEzNDMzMywgMTM0MzQwLCAxMzQzNDcsIDEzNDM1NCwgMTM0MzYxLCAxMzQzNjgsIDEzNDM3NSwgCi0gICAgMTM0MzgyLCAxMzQzODksIDEzNDM5NiwgMTM0NDAzLCAxMzQ0MTAsIDEzNDQxNywgMTM0NDI0LCAxMzQ0MzEsIDEzNDQzOCwgCi0gICAgMTM0NDQ1LCAxMzQ0NTIsIDEzNDQ1NywgMTM0NDYyLCAxMzQ0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOTI1MCwgMTM5MjU1LCAxMzkyNjIsIDEzOTI2OSwgMTM5Mjc2LCAxMzkyODMsIDEzOTI4OCwgMTM5MjkzLCAxMzkzMDAsIAorICAgIDEzOTMwNSwgMTM5MzEwLCAxMzkzMTcsIDEzOTMyMiwgMTM5MzI3LCAxMzkzMzIsIDEzOTMzOSwgMTM5MzQ4LCAxMzkzNTMsIAorICAgIDEzOTM1OCwgMTM5MzYzLCAxMzkzNjgsIDEzOTM3MywgMTM5Mzc4LCAxMzkzODUsIDEzOTM5MCwgMTM5Mzk1LCAxMzk0MDAsIAorICAgIDEzOTQwNSwgMTM5NDEwLCAxMzk0MTUsIDEzOTQyMCwgMTM5NDI1LCAxMzk0MzAsIDEzOTQzNSwgMTM5NDQwLCAxMzk0NDUsIAorICAgIDEzOTQ1MSwgMTM5NDU2LCAxMzk0NjEsIDEzOTQ2NiwgMTM5NDcxLCAxMzk0NzYsIDEzOTQ4MSwgMTM5NDg2LCAxMzk0OTEsIAorICAgIDEzOTQ5NiwgMTM5NTA1LCAxMzk1MTAsIDEzOTUxOSwgMTM5NTI0LCAxMzk1MjksIDEzOTUzNCwgMTM5NTM5LCAxMzk1NDQsIAorICAgIDEzOTU0OSwgMTM5NTU0LCAxMzk1NjMsIDEzOTU2OCwgMTM5NTczLCAxMzk1NzgsIDEzOTU4MywgMTM5NTg4LCAxMzk1OTUsIAorICAgIDEzOTYwMCwgMTM5NjA3LCAxMzk2MTIsIDEzOTYxNywgMTM5NjIyLCAxMzk2MjcsIDEzOTYzMiwgMTM5NjM3LCAxMzk2NDIsIAorICAgIDEzOTY0NywgMTM5NjUyLCAxMzk2NTcsIDEzOTY2MiwgMTM5NjY3LCAxMzk2NzIsIDEzOTY3NywgMTM5NjgyLCAxMzk2ODcsIAorICAgIDEzOTY5MiwgMTM5Njk3LCAxMzk3MDIsIDEzOTcxMSwgMTM5NzE2LCAxMzk3MjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzOTcyNiwgMTM5NzM0LCAxMzk3NDIsIDEzOTc1MCwgMTM5NzU4LCAxMzk3NjYsIDEzOTc3NCwgMTM5NzgzLCAKKyAgICAxMzk3OTEsIDEzOTgwMCwgMTM5ODA4LCAxMzk4MTYsIDEzOTgyNCwgMTM5ODMyLCAxMzk4NDAsIDEzOTg0OCwgMTM5ODU3LCAKKyAgICAxMzk4NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDQ3MSwgMTM0NDc2LCAxMzQ0ODMsIDEzNDQ5MCwgMTM0NDk3LCAxMzQ1MDQsIAotICAgIDEzNDUwOSwgMTM0NTE0LCAxMzQ1MjEsIDEzNDUyNiwgMTM0NTMxLCAxMzQ1MzgsIDEzNDU0MywgMTM0NTQ4LCAxMzQ1NTMsIAotICAgIDEzNDU2MCwgMTM0NTY5LCAxMzQ1NzQsIDEzNDU3OSwgMTM0NTg0LCAxMzQ1ODksIDEzNDU5NCwgMTM0NTk5LCAxMzQ2MDYsIAotICAgIDEzNDYxMSwgMTM0NjE2LCAxMzQ2MjEsIDEzNDYyNiwgMTM0NjMxLCAxMzQ2MzYsIDEzNDY0MSwgMTM0NjQ2LCAxMzQ2NTEsIAotICAgIDEzNDY1NiwgMTM0NjYxLCAxMzQ2NjYsIDEzNDY3MiwgMTM0Njc3LCAxMzQ2ODIsIDEzNDY4NywgMTM0NjkyLCAxMzQ2OTcsIAotICAgIDEzNDcwMiwgMTM0NzA3LCAxMzQ3MTIsIDEzNDcxNywgMTM0NzI2LCAxMzQ3MzEsIDEzNDc0MCwgMTM0NzQ1LCAxMzQ3NTAsIAotICAgIDEzNDc1NSwgMTM0NzYwLCAxMzQ3NjUsIDEzNDc3MCwgMTM0Nzc1LCAxMzQ3ODQsIDEzNDc4OSwgMTM0Nzk0LCAxMzQ3OTksIAotICAgIDEzNDgwNCwgMTM0ODA5LCAxMzQ4MTYsIDEzNDgyMSwgMTM0ODI4LCAxMzQ4MzMsIDEzNDgzOCwgMTM0ODQzLCAxMzQ4NDgsIAotICAgIDEzNDg1MywgMTM0ODU4LCAxMzQ4NjMsIDEzNDg2OCwgMTM0ODczLCAxMzQ4NzgsIDEzNDg4MywgMTM0ODg4LCAxMzQ4OTMsIAotICAgIDEzNDg5OCwgMTM0OTAzLCAxMzQ5MDgsIDEzNDkxMywgMTM0OTE4LCAxMzQ5MjMsIDEzNDkzMiwgMTM0OTM3LCAxMzQ5NDIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDk0NywgMTM0OTU1LCAxMzQ5NjMsIDEzNDk3MSwgMTM0OTc5LCAKLSAgICAxMzQ5ODcsIDEzNDk5NSwgMTM1MDA0LCAxMzUwMTIsIDEzNTAyMSwgMTM1MDI5LCAxMzUwMzcsIDEzNTA0NSwgMTM1MDUzLCAKLSAgICAxMzUwNjEsIDEzNTA2OSwgMTM1MDc4LCAxMzUwODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOTg3NCwgMTM5ODc4LCAxMzk4ODMsIDEzOTg4OCwgMTM5ODkzLCAxMzk4OTcsIDEzOTkwMiwgMTM5OTA3LCAxMzk5MTIsIAorICAgIDEzOTkxNiwgMTM5OTIxLCAxMzk5MjYsIDEzOTkzMCwgMTM5OTM1LCAxMzk5NDAsIDEzOTk0NCwgMTM5OTQ5LCAxMzk5NTQsIAorICAgIDEzOTk1OCwgMTM5OTYzLCAxMzk5NjgsIDEzOTk3MiwgMTM5OTc3LCAxMzk5ODIsIDEzOTk4NywgMTM5OTkyLCAxMzk5OTcsIAorICAgIDE0MDAwMSwgMTQwMDA2LCAxNDAwMTEsIDE0MDAxNiwgMTQwMDIwLCAxNDAwMjUsIDE0MDAzMCwgMTQwMDM1LCAxNDAwMzksIAorICAgIDE0MDA0NCwgMTQwMDQ5LCAxNDAwNTMsIDE0MDA1OCwgMTQwMDYzLCAxNDAwNjcsIDE0MDA3MiwgMTQwMDc3LCAxNDAwODEsIAorICAgIDE0MDA4NiwgMTQwMDkxLCAxNDAwOTUsIDE0MDEwMCwgMTQwMTA1LCAxNDAxMTAsIDE0MDExNSwgMTQwMTIwLCAxNDAxMjQsIAorICAgIDE0MDEyOSwgMTQwMTM0LCAxNDAxMzksIDE0MDE0MywgMTQwMTQ4LCAxNDAxNTMsIDE0MDE1OCwgMTQwMTYyLCAxNDAxNjcsIAorICAgIDE0MDE3MiwgMTQwMTc2LCAxNDAxODEsIDE0MDE4NiwgMTQwMTkwLCAxNDAxOTUsIDE0MDIwMCwgMTQwMjA0LCAxNDAyMDksIAorICAgIDE0MDIxNCwgMTQwMjE4LCAxNDAyMjMsIDE0MDIyOCwgMTQwMjMzLCAxNDAyMzgsIDE0MDI0MywgMTQwMjQ3LCAxNDAyNTIsIAorICAgIDE0MDI1NywgMTQwMjYyLCAxNDAyNjYsIDE0MDI3MSwgMCwgMTQwMjc2LCAxNDAyODAsIDE0MDI4NSwgMTQwMjkwLCAKKyAgICAxNDAyOTQsIDE0MDI5OSwgMTQwMzA0LCAxNDAzMDgsIDE0MDMxMywgMTQwMzE4LCAxNDAzMjIsIDE0MDMyNywgMTQwMzMyLCAKKyAgICAxNDAzMzYsIDE0MDM0MSwgMTQwMzQ2LCAxNDAzNTEsIDE0MDM1NiwgMTQwMzYxLCAxNDAzNjYsIDE0MDM3MiwgMTQwMzc4LCAKKyAgICAxNDAzODQsIDE0MDM4OSwgMTQwMzk1LCAxNDA0MDEsIDE0MDQwNywgMTQwNDEyLCAxNDA0MTgsIDE0MDQyNCwgMTQwNDI5LCAKKyAgICAxNDA0MzUsIDE0MDQ0MSwgMTQwNDQ2LCAxNDA0NTIsIDE0MDQ1OCwgMTQwNDYzLCAxNDA0NjksIDE0MDQ3NSwgMTQwNDgwLCAKKyAgICAxNDA0ODYsIDE0MDQ5MiwgMTQwNDk4LCAxNDA1MDQsIDE0MDUxMCwgMTQwNTE1LCAxNDA1MjEsIDE0MDUyNywgMTQwNTMzLCAKKyAgICAxNDA1MzgsIDE0MDU0NCwgMTQwNTUwLCAxNDA1NTYsIDE0MDU2MSwgMTQwNTY3LCAxNDA1NzMsIDE0MDU3OCwgMTQwNTg0LCAKKyAgICAxNDA1OTAsIDE0MDU5NSwgMTQwNjAxLCAxNDA2MDcsIDE0MDYxMiwgMTQwNjE4LCAxNDA2MjQsIDE0MDYyOSwgMTQwNjM1LCAKKyAgICAxNDA2NDEsIDE0MDY0NywgMTQwNjUzLCAxNDA2NTksIDAsIDE0MDY2MywgMTQwNjY4LCAwLCAwLCAxNDA2NzMsIDAsIDAsIAorICAgIDE0MDY3OCwgMTQwNjgzLCAwLCAwLCAxNDA2ODgsIDE0MDY5MywgMTQwNjk3LCAxNDA3MDIsIDAsIDE0MDcwNywgMTQwNzEyLCAKKyAgICAxNDA3MTcsIDE0MDcyMSwgMTQwNzI2LCAxNDA3MzEsIDE0MDczNiwgMTQwNzQxLCAxNDA3NDYsIDE0MDc1MCwgMTQwNzU1LCAKKyAgICAxNDA3NjAsIDAsIDE0MDc2NSwgMCwgMTQwNzcwLCAxNDA3NzUsIDE0MDc3OSwgMTQwNzg0LCAxNDA3ODksIDE0MDc5MywgCisgICAgMTQwNzk4LCAwLCAxNDA4MDMsIDE0MDgwOCwgMTQwODEzLCAxNDA4MTcsIDE0MDgyMiwgMTQwODI3LCAxNDA4MzEsIAorICAgIDE0MDgzNiwgMTQwODQxLCAxNDA4NDYsIDE0MDg1MSwgMTQwODU2LCAxNDA4NjEsIDE0MDg2NywgMTQwODczLCAxNDA4NzksIAorICAgIDE0MDg4NCwgMTQwODkwLCAxNDA4OTYsIDE0MDkwMiwgMTQwOTA3LCAxNDA5MTMsIDE0MDkxOSwgMTQwOTI0LCAxNDA5MzAsIAorICAgIDE0MDkzNiwgMTQwOTQxLCAxNDA5NDcsIDE0MDk1MywgMTQwOTU4LCAxNDA5NjQsIDE0MDk3MCwgMTQwOTc1LCAxNDA5ODEsIAorICAgIDE0MDk4NywgMTQwOTkzLCAxNDA5OTksIDE0MTAwNSwgMTQxMDEwLCAxNDEwMTYsIDE0MTAyMiwgMTQxMDI4LCAxNDEwMzMsIAorICAgIDE0MTAzOSwgMTQxMDQ1LCAxNDEwNTEsIDE0MTA1NiwgMTQxMDYyLCAxNDEwNjgsIDE0MTA3MywgMTQxMDc5LCAxNDEwODUsIAorICAgIDE0MTA5MCwgMTQxMDk2LCAxNDExMDIsIDE0MTEwNywgMTQxMTEzLCAxNDExMTksIDE0MTEyNCwgMTQxMTMwLCAxNDExMzYsIAorICAgIDE0MTE0MiwgMTQxMTQ4LCAxNDExNTQsIDE0MTE1OCwgMCwgMTQxMTYzLCAxNDExNjgsIDE0MTE3MiwgMTQxMTc3LCAwLCAwLCAKKyAgICAxNDExODIsIDE0MTE4NywgMTQxMTkyLCAxNDExOTYsIDE0MTIwMSwgMTQxMjA2LCAxNDEyMTAsIDE0MTIxNSwgMCwgCisgICAgMTQxMjIwLCAxNDEyMjUsIDE0MTIzMCwgMTQxMjM0LCAxNDEyMzksIDE0MTI0NCwgMTQxMjQ5LCAwLCAxNDEyNTQsIAorICAgIDE0MTI1OCwgMTQxMjYzLCAxNDEyNjgsIDE0MTI3MywgMTQxMjc3LCAxNDEyODIsIDE0MTI4NywgMTQxMjkyLCAxNDEyOTYsIAorICAgIDE0MTMwMSwgMTQxMzA2LCAxNDEzMTAsIDE0MTMxNSwgMTQxMzIwLCAxNDEzMjQsIDE0MTMyOSwgMTQxMzM0LCAxNDEzMzgsIAorICAgIDE0MTM0MywgMTQxMzQ4LCAxNDEzNTIsIDE0MTM1NywgMTQxMzYyLCAxNDEzNjcsIDE0MTM3MiwgMTQxMzc3LCAxNDEzODEsIAorICAgIDAsIDE0MTM4NiwgMTQxMzkxLCAxNDEzOTUsIDE0MTQwMCwgMCwgMTQxNDA1LCAxNDE0MDksIDE0MTQxNCwgMTQxNDE5LCAKKyAgICAxNDE0MjMsIDAsIDE0MTQyOCwgMCwgMCwgMCwgMTQxNDMyLCAxNDE0MzcsIDE0MTQ0MiwgMTQxNDQ2LCAxNDE0NTEsIAorICAgIDE0MTQ1NiwgMTQxNDYxLCAwLCAxNDE0NjYsIDE0MTQ3MCwgMTQxNDc1LCAxNDE0ODAsIDE0MTQ4NSwgMTQxNDg5LCAKKyAgICAxNDE0OTQsIDE0MTQ5OSwgMTQxNTA0LCAxNDE1MDgsIDE0MTUxMywgMTQxNTE4LCAxNDE1MjIsIDE0MTUyNywgMTQxNTMyLCAKKyAgICAxNDE1MzYsIDE0MTU0MSwgMTQxNTQ2LCAxNDE1NTAsIDE0MTU1NSwgMTQxNTYwLCAxNDE1NjQsIDE0MTU2OSwgMTQxNTc0LCAKKyAgICAxNDE1NzksIDE0MTU4NCwgMTQxNTg5LCAxNDE1OTQsIDE0MTYwMCwgMTQxNjA2LCAxNDE2MTIsIDE0MTYxNywgMTQxNjIzLCAKKyAgICAxNDE2MjksIDE0MTYzNSwgMTQxNjQwLCAxNDE2NDYsIDE0MTY1MiwgMTQxNjU3LCAxNDE2NjMsIDE0MTY2OSwgMTQxNjc0LCAKKyAgICAxNDE2ODAsIDE0MTY4NiwgMTQxNjkxLCAxNDE2OTcsIDE0MTcwMywgMTQxNzA4LCAxNDE3MTQsIDE0MTcyMCwgMTQxNzI2LCAKKyAgICAxNDE3MzIsIDE0MTczOCwgMTQxNzQzLCAxNDE3NDksIDE0MTc1NSwgMTQxNzYxLCAxNDE3NjYsIDE0MTc3MiwgMTQxNzc4LCAKKyAgICAxNDE3ODQsIDE0MTc4OSwgMTQxNzk1LCAxNDE4MDEsIDE0MTgwNiwgMTQxODEyLCAxNDE4MTgsIDE0MTgyMywgMTQxODI5LCAKKyAgICAxNDE4MzUsIDE0MTg0MCwgMTQxODQ2LCAxNDE4NTIsIDE0MTg1NywgMTQxODYzLCAxNDE4NjksIDE0MTg3NSwgMTQxODgxLCAKKyAgICAxNDE4ODcsIDE0MTg5MSwgMTQxODk2LCAxNDE5MDEsIDE0MTkwNiwgMTQxOTEwLCAxNDE5MTUsIDE0MTkyMCwgMTQxOTI1LCAKKyAgICAxNDE5MjksIDE0MTkzNCwgMTQxOTM5LCAxNDE5NDMsIDE0MTk0OCwgMTQxOTUzLCAxNDE5NTcsIDE0MTk2MiwgMTQxOTY3LCAKKyAgICAxNDE5NzEsIDE0MTk3NiwgMTQxOTgxLCAxNDE5ODUsIDE0MTk5MCwgMTQxOTk1LCAxNDIwMDAsIDE0MjAwNSwgMTQyMDEwLCAKKyAgICAxNDIwMTQsIDE0MjAxOSwgMTQyMDI0LCAxNDIwMjksIDE0MjAzMywgMTQyMDM4LCAxNDIwNDMsIDE0MjA0OCwgMTQyMDUyLCAKKyAgICAxNDIwNTcsIDE0MjA2MiwgMTQyMDY2LCAxNDIwNzEsIDE0MjA3NiwgMTQyMDgwLCAxNDIwODUsIDE0MjA5MCwgMTQyMDk0LCAKKyAgICAxNDIwOTksIDE0MjEwNCwgMTQyMTA4LCAxNDIxMTMsIDE0MjExOCwgMTQyMTIzLCAxNDIxMjgsIDE0MjEzMywgMTQyMTM4LCAKKyAgICAxNDIxNDQsIDE0MjE1MCwgMTQyMTU2LCAxNDIxNjEsIDE0MjE2NywgMTQyMTczLCAxNDIxNzksIDE0MjE4NCwgMTQyMTkwLCAKKyAgICAxNDIxOTYsIDE0MjIwMSwgMTQyMjA3LCAxNDIyMTMsIDE0MjIxOCwgMTQyMjI0LCAxNDIyMzAsIDE0MjIzNSwgMTQyMjQxLCAKKyAgICAxNDIyNDcsIDE0MjI1MiwgMTQyMjU4LCAxNDIyNjQsIDE0MjI3MCwgMTQyMjc2LCAxNDIyODIsIDE0MjI4NywgMTQyMjkzLCAKKyAgICAxNDIyOTksIDE0MjMwNSwgMTQyMzEwLCAxNDIzMTYsIDE0MjMyMiwgMTQyMzI4LCAxNDIzMzMsIDE0MjMzOSwgMTQyMzQ1LCAKKyAgICAxNDIzNTAsIDE0MjM1NiwgMTQyMzYyLCAxNDIzNjcsIDE0MjM3MywgMTQyMzc5LCAxNDIzODQsIDE0MjM5MCwgMTQyMzk2LCAKKyAgICAxNDI0MDEsIDE0MjQwNywgMTQyNDEzLCAxNDI0MTksIDE0MjQyNSwgMTQyNDMxLCAxNDI0MzYsIDE0MjQ0MiwgMTQyNDQ4LCAKKyAgICAxNDI0NTQsIDE0MjQ1OSwgMTQyNDY1LCAxNDI0NzEsIDE0MjQ3NywgMTQyNDgyLCAxNDI0ODgsIDE0MjQ5NCwgMTQyNDk5LCAKKyAgICAxNDI1MDUsIDE0MjUxMSwgMTQyNTE2LCAxNDI1MjIsIDE0MjUyOCwgMTQyNTMzLCAxNDI1MzksIDE0MjU0NSwgMTQyNTUwLCAKKyAgICAxNDI1NTYsIDE0MjU2MiwgMTQyNTY4LCAxNDI1NzQsIDE0MjU4MCwgMTQyNTg1LCAxNDI1OTEsIDE0MjU5NywgMTQyNjAzLCAKKyAgICAxNDI2MDgsIDE0MjYxNCwgMTQyNjIwLCAxNDI2MjYsIDE0MjYzMSwgMTQyNjM3LCAxNDI2NDMsIDE0MjY0OCwgMTQyNjU0LCAKKyAgICAxNDI2NjAsIDE0MjY2NSwgMTQyNjcxLCAxNDI2NzcsIDE0MjY4MiwgMTQyNjg4LCAxNDI2OTQsIDE0MjY5OSwgMTQyNzA1LCAKKyAgICAxNDI3MTEsIDE0MjcxNywgMTQyNzIzLCAxNDI3MjksIDE0MjczNSwgMTQyNzQyLCAxNDI3NDksIDE0Mjc1NiwgMTQyNzYyLCAKKyAgICAxNDI3NjksIDE0Mjc3NiwgMTQyNzgzLCAxNDI3ODksIDE0Mjc5NiwgMTQyODAzLCAxNDI4MDksIDE0MjgxNiwgMTQyODIzLCAKKyAgICAxNDI4MjksIDE0MjgzNiwgMTQyODQzLCAxNDI4NDksIDE0Mjg1NiwgMTQyODYzLCAxNDI4NjksIDE0Mjg3NiwgMTQyODgzLCAKKyAgICAxNDI4OTAsIDE0Mjg5NywgMTQyOTA0LCAxNDI5MTAsIDE0MjkxNywgMTQyOTI0LCAxNDI5MzEsIDE0MjkzNywgMTQyOTQ0LCAKKyAgICAxNDI5NTEsIDE0Mjk1OCwgMTQyOTY0LCAxNDI5NzEsIDE0Mjk3OCwgMTQyOTg0LCAxNDI5OTEsIDE0Mjk5OCwgMTQzMDA0LCAKKyAgICAxNDMwMTEsIDE0MzAxOCwgMTQzMDI0LCAxNDMwMzEsIDE0MzAzOCwgMTQzMDQ0LCAxNDMwNTEsIDE0MzA1OCwgMTQzMDY1LCAKKyAgICAxNDMwNzIsIDE0MzA3OSwgMTQzMDg0LCAxNDMwOTAsIDE0MzA5NiwgMTQzMTAyLCAxNDMxMDcsIDE0MzExMywgMTQzMTE5LCAKKyAgICAxNDMxMjUsIDE0MzEzMCwgMTQzMTM2LCAxNDMxNDIsIDE0MzE0NywgMTQzMTUzLCAxNDMxNTksIDE0MzE2NCwgMTQzMTcwLCAKKyAgICAxNDMxNzYsIDE0MzE4MSwgMTQzMTg3LCAxNDMxOTMsIDE0MzE5OCwgMTQzMjA0LCAxNDMyMTAsIDE0MzIxNiwgMTQzMjIyLCAKKyAgICAxNDMyMjgsIDE0MzIzMywgMTQzMjM5LCAxNDMyNDUsIDE0MzI1MSwgMTQzMjU2LCAxNDMyNjIsIDE0MzI2OCwgMTQzMjc0LCAKKyAgICAxNDMyNzksIDE0MzI4NSwgMTQzMjkxLCAxNDMyOTYsIDE0MzMwMiwgMTQzMzA4LCAxNDMzMTMsIDE0MzMxOSwgMTQzMzI1LCAKKyAgICAxNDMzMzAsIDE0MzMzNiwgMTQzMzQyLCAxNDMzNDcsIDE0MzM1MywgMTQzMzU5LCAxNDMzNjUsIDE0MzM3MSwgMTQzMzc3LCAKKyAgICAxNDMzODMsIDAsIDAsIDE0MzM5MCwgMTQzMzk1LCAxNDM0MDAsIDE0MzQwNSwgMTQzNDEwLCAxNDM0MTUsIDE0MzQyMCwgCisgICAgMTQzNDI1LCAxNDM0MzAsIDE0MzQzNSwgMTQzNDQwLCAxNDM0NDUsIDE0MzQ1MCwgMTQzNDU1LCAxNDM0NjAsIDE0MzQ2NSwgCisgICAgMTQzNDcwLCAxNDM0NzUsIDE0MzQ4MSwgMTQzNDg2LCAxNDM0OTEsIDE0MzQ5NiwgMTQzNTAxLCAxNDM1MDYsIDE0MzUxMSwgCisgICAgMTQzNTE2LCAxNDM1MjAsIDE0MzUyNSwgMTQzNTMwLCAxNDM1MzUsIDE0MzU0MCwgMTQzNTQ1LCAxNDM1NTAsIDE0MzU1NSwgCisgICAgMTQzNTYwLCAxNDM1NjUsIDE0MzU3MCwgMTQzNTc1LCAxNDM1ODAsIDE0MzU4NSwgMTQzNTkwLCAxNDM1OTUsIDE0MzYwMCwgCisgICAgMTQzNjA1LCAxNDM2MTEsIDE0MzYxNiwgMTQzNjIxLCAxNDM2MjYsIDE0MzYzMSwgMTQzNjM2LCAxNDM2NDEsIDE0MzY0NiwgCisgICAgMTQzNjUyLCAxNDM2NTcsIDE0MzY2MiwgMTQzNjY3LCAxNDM2NzIsIDE0MzY3NywgMTQzNjgyLCAxNDM2ODcsIDE0MzY5MiwgCisgICAgMTQzNjk3LCAxNDM3MDIsIDE0MzcwNywgMTQzNzEyLCAxNDM3MTcsIDE0MzcyMiwgMTQzNzI3LCAxNDM3MzIsIDE0MzczNywgCisgICAgMTQzNzQyLCAxNDM3NDcsIDE0Mzc1MiwgMTQzNzU3LCAxNDM3NjIsIDE0Mzc2NywgMTQzNzczLCAxNDM3NzgsIDE0Mzc4MywgCisgICAgMTQzNzg4LCAxNDM3OTMsIDE0Mzc5OCwgMTQzODAzLCAxNDM4MDgsIDE0MzgxMiwgMTQzODE3LCAxNDM4MjIsIDE0MzgyNywgCisgICAgMTQzODMyLCAxNDM4MzcsIDE0Mzg0MiwgMTQzODQ3LCAxNDM4NTIsIDE0Mzg1NywgMTQzODYyLCAxNDM4NjcsIDE0Mzg3MiwgCisgICAgMTQzODc3LCAxNDM4ODIsIDE0Mzg4NywgMTQzODkyLCAxNDM4OTcsIDE0MzkwMywgMTQzOTA4LCAxNDM5MTMsIDE0MzkxOCwgCisgICAgMTQzOTIzLCAxNDM5MjgsIDE0MzkzMywgMTQzOTM4LCAxNDM5NDQsIDE0Mzk0OSwgMTQzOTU0LCAxNDM5NTksIDE0Mzk2NCwgCisgICAgMTQzOTY5LCAxNDM5NzQsIDE0Mzk4MCwgMTQzOTg2LCAxNDM5OTIsIDE0Mzk5OCwgMTQ0MDA0LCAxNDQwMTAsIDE0NDAxNiwgCisgICAgMTQ0MDIyLCAxNDQwMjgsIDE0NDAzNCwgMTQ0MDQwLCAxNDQwNDYsIDE0NDA1MiwgMTQ0MDU4LCAxNDQwNjQsIDE0NDA3MCwgCisgICAgMTQ0MDc2LCAxNDQwODMsIDE0NDA4OSwgMTQ0MDk1LCAxNDQxMDEsIDE0NDEwNywgMTQ0MTEzLCAxNDQxMTksIDE0NDEyNSwgCisgICAgMTQ0MTMwLCAxNDQxMzYsIDE0NDE0MiwgMTQ0MTQ4LCAxNDQxNTQsIDE0NDE2MCwgMTQ0MTY2LCAxNDQxNzIsIDE0NDE3OCwgCisgICAgMTQ0MTg0LCAxNDQxOTAsIDE0NDE5NiwgMTQ0MjAyLCAxNDQyMDgsIDE0NDIxNCwgMTQ0MjIwLCAxNDQyMjYsIDE0NDIzMiwgCisgICAgMTQ0MjM5LCAxNDQyNDUsIDE0NDI1MSwgMTQ0MjU3LCAxNDQyNjMsIDE0NDI2OSwgMTQ0Mjc1LCAxNDQyODEsIDE0NDI4OCwgCisgICAgMTQ0Mjk0LCAxNDQzMDAsIDE0NDMwNiwgMTQ0MzEyLCAxNDQzMTgsIDE0NDMyNCwgMTQ0MzMwLCAxNDQzMzYsIDE0NDM0MiwgCisgICAgMTQ0MzQ4LCAxNDQzNTQsIDE0NDM2MCwgMTQ0MzY2LCAxNDQzNzIsIDE0NDM3OCwgMTQ0Mzg0LCAxNDQzOTAsIDE0NDM5NiwgCisgICAgMTQ0NDAyLCAxNDQ0MDgsIDE0NDQxNCwgMTQ0NDIwLCAxNDQ0MjYsIDE0NDQzMywgMTQ0NDM5LCAxNDQ0NDUsIDE0NDQ1MSwgCisgICAgMTQ0NDU3LCAxNDQ0NjMsIDE0NDQ2OSwgMTQ0NDc1LCAxNDQ0ODAsIDE0NDQ4NiwgMTQ0NDkyLCAxNDQ0OTgsIDE0NDUwNCwgCisgICAgMTQ0NTEwLCAxNDQ1MTYsIDE0NDUyMiwgMTQ0NTI4LCAxNDQ1MzQsIDE0NDU0MCwgMTQ0NTQ2LCAxNDQ1NTIsIDE0NDU1OCwgCisgICAgMTQ0NTY0LCAxNDQ1NzAsIDE0NDU3NiwgMTQ0NTgyLCAxNDQ1ODksIDE0NDU5NSwgMTQ0NjAxLCAxNDQ2MDcsIDE0NDYxMywgCisgICAgMTQ0NjE5LCAxNDQ2MjUsIDE0NDYzMSwgMTQ0NjM4LCAxNDQ2NDQsIDE0NDY1MCwgMTQ0NjU2LCAxNDQ2NjIsIDE0NDY2OCwgCisgICAgMTQ0Njc0LCAxNDQ2ODEsIDE0NDY4OCwgMTQ0Njk1LCAxNDQ3MDIsIDE0NDcwOSwgMTQ0NzE2LCAxNDQ3MjMsIDE0NDczMCwgCisgICAgMTQ0NzM3LCAxNDQ3NDQsIDE0NDc1MSwgMTQ0NzU4LCAxNDQ3NjUsIDE0NDc3MiwgMTQ0Nzc5LCAxNDQ3ODYsIDE0NDc5MywgCisgICAgMTQ0ODAxLCAxNDQ4MDgsIDE0NDgxNSwgMTQ0ODIyLCAxNDQ4MjksIDE0NDgzNiwgMTQ0ODQzLCAxNDQ4NTAsIDE0NDg1NiwgCisgICAgMTQ0ODYzLCAxNDQ4NzAsIDE0NDg3NywgMTQ0ODg0LCAxNDQ4OTEsIDE0NDg5OCwgMTQ0OTA1LCAxNDQ5MTIsIDE0NDkxOSwgCisgICAgMTQ0OTI2LCAxNDQ5MzMsIDE0NDk0MCwgMTQ0OTQ3LCAxNDQ5NTQsIDE0NDk2MSwgMTQ0OTY4LCAxNDQ5NzUsIDE0NDk4MywgCisgICAgMTQ0OTkwLCAxNDQ5OTcsIDE0NTAwNCwgMTQ1MDExLCAxNDUwMTgsIDE0NTAyNSwgMTQ1MDMyLCAxNDUwNDAsIDE0NTA0NywgCisgICAgMTQ1MDU0LCAxNDUwNjEsIDE0NTA2OCwgMTQ1MDc1LCAxNDUwODIsIDE0NTA4NywgMCwgMCwgMTQ1MDkyLCAxNDUwOTcsIAorICAgIDE0NTEwMSwgMTQ1MTA1LCAxNDUxMDksIDE0NTExMywgMTQ1MTE3LCAxNDUxMjEsIDE0NTEyNiwgMTQ1MTMwLCAxNDUxMzUsIAorICAgIDE0NTE0MCwgMTQ1MTQ0LCAxNDUxNDgsIDE0NTE1MiwgMTQ1MTU2LCAxNDUxNjAsIDE0NTE2NCwgMTQ1MTY5LCAxNDUxNzMsIAorICAgIDE0NTE3OCwgMTQ1MTgzLCAxNDUxODcsIDE0NTE5MSwgMTQ1MTk1LCAxNDUxOTksIDE0NTIwMywgMTQ1MjA3LCAxNDUyMTIsIAorICAgIDE0NTIxNiwgMTQ1MjIxLCAxNDUyMjcsIDE0NTIzMiwgMTQ1MjM3LCAxNDUyNDIsIDE0NTI0NywgMTQ1MjUyLCAxNDUyNTcsIAorICAgIDE0NTI2MywgMTQ1MjY4LCAxNDUyNzQsIDE0NTI4MCwgMTQ1Mjg1LCAxNDUyOTAsIDE0NTI5NSwgMTQ1MzAwLCAxNDUzMDUsIAorICAgIDE0NTMxMCwgMTQ1MzE2LCAxNDUzMjEsIDE0NTMyNywgMTQ1MzMxLCAxNDUzMzYsIDE0NTM0MSwgMTQ1MzQ2LCAxNDUzNTEsIAorICAgIDE0NTM1NiwgMTQ1MzYxLCAxNDUzNjcsIDE0NTM3NSwgMTQ1MzgyLCAxNDUzODcsIDE0NTM5MiwgMTQ1Mzk5LCAxNDU0MDUsIAorICAgIDE0NTQxMCwgMTQ1NDE2LCAxNDU0MjIsIDE0NTQzMCwgMTQ1NDM2LCAxNDU0NDMsIDE0NTQ1MSwgMTQ1NDU3LCAxNDU0NjYsIAorICAgIDE0NTQ3NSwgMTQ1NDgzLCAxNDU0OTEsIDE0NTQ5NywgMTQ1NTA0LCAxNDU1MTIsIDE0NTUyMCwgMTQ1NTI2LCAxNDU1MzMsIAorICAgIDE0NTU0MiwgMTQ1NTUxLCAxNDU1NTgsIDE0NTU2OSwgMTQ1NTc5LCAxNDU1ODksIDE0NTU5OSwgMTQ1NjA5LCAxNDU2MTYsIAorICAgIDE0NTYyMywgMTQ1NjMwLCAxNDU2MzcsIDE0NTY0NiwgMTQ1NjU1LCAxNDU2NjYsIDE0NTY3NywgMTQ1Njg2LCAxNDU2OTUsIAorICAgIDE0NTcwNiwgMTQ1NzE1LCAxNDU3MjQsIDE0NTczNSwgMTQ1NzQ0LCAxNDU3NTMsIDE0NTc2MSwgMTQ1NzY5LCAxNDU3ODAsIAorICAgIDE0NTc5MSwgMTQ1Nzk5LCAxNDU4MDgsIDE0NTgxNywgMTQ1ODI0LCAxNDU4MzUsIDE0NTg0NiwgMTQ1ODU1LCAxNDU4NjQsIAorICAgIDE0NTg3MSwgMTQ1ODgwLCAxNDU4ODksIDE0NTg5OCwgMTQ1OTA5LCAxNDU5MTgsIDE0NTkyOCwgMTQ1OTM3LCAxNDU5NDYsIAorICAgIDE0NTk1NywgMTQ1OTcwLCAxNDU5ODUsIDE0NTk5NiwgMTQ2MDA5LCAxNDYwMjEsIDE0NjAzMCwgMTQ2MDQxLCAxNDYwNTIsIAorICAgIDE0NjA2MSwgMTQ2MDcyLCAxNDYwODYsIDE0NjEwMSwgMTQ2MTA0LCAxNDYxMTMsIDE0NjExOCwgMTQ2MTI0LCAxNDYxMzIsIAorICAgIDE0NjEzOCwgMTQ2MTQ0LCAxNDYxNTMsIDE0NjE2MCwgMTQ2MTcwLCAxNDYxODIsIDE0NjE4OSwgMTQ2MTkyLCAxNDYxOTgsIAorICAgIDE0NjIwNSwgMTQ2MjExLCAxNDYyMTYsIDE0NjIxOSwgMTQ2MjI0LCAxNDYyMjcsIDE0NjIzNCwgMTQ2MjQwLCAxNDYyNDgsIAorICAgIDE0NjI1NSwgMTQ2MjYyLCAxNDYyNjgsIDE0NjI3MywgMTQ2Mjc2LCAxNDYyNzksIDE0NjI4MiwgMTQ2Mjg4LCAxNDYyOTUsIAorICAgIDE0NjMwMSwgMTQ2MzA2LCAxNDYzMTMsIDE0NjMxNiwgMTQ2MzIxLCAxNDYzMjgsIDE0NjMzNCwgMTQ2MzQyLCAxNDYzNDksIAorICAgIDE0NjM1OSwgMTQ2MzY4LCAxNDYzNzEsIDE0NjM3NywgMTQ2Mzg0LCAxNDYzOTEsIDE0NjM5OCwgMTQ2NDAzLCAxNDY0MTEsIAorICAgIDE0NjQxOSwgMTQ2NDI4LCAxNDY0MzQsIDE0NjQ0MywgMTQ2NDUyLCAxNDY0NjEsIDE0NjQ2NywgMTQ2NDc2LCAxNDY0ODMsIAorICAgIDE0NjQ5MCwgMTQ2NDk3LCAxNDY1MDUsIDE0NjUxMSwgMTQ2NTE5LCAxNDY1MjUsIDE0NjUzMiwgMTQ2NTM5LCAxNDY1NDcsIAorICAgIDE0NjU1OCwgMTQ2NTY4LCAxNDY1NzQsIDE0NjU4MSwgMTQ2NTg4LCAxNDY1OTUsIDE0NjYwMSwgMTQ2NjA4LCAxNDY2MTUsIAorICAgIDE0NjYyMCwgMTQ2NjI3LCAxNDY2MzUsIDE0NjY0NCwgMTQ2NjUwLCAxNDY2NjIsIDE0NjY3MywgMTQ2Njc5LCAxNDY2ODcsIAorICAgIDE0NjY5MywgMTQ2NzAwLCAxNDY3MDcsIDE0NjcxNCwgMTQ2NzIwLCAxNDY3MjcsIDE0NjczNiwgMTQ2NzQyLCAxNDY3NDgsIAorICAgIDE0Njc1NSwgMTQ2NzYyLCAxNDY3NzAsIDE0Njc4MCwgMTQ2NzkwLCAxNDY4MDAsIDE0NjgxMCwgMTQ2ODE4LCAxNDY4MjYsIAorICAgIDE0NjgzNiwgMTQ2ODQ0LCAxNDY4NDksIDE0Njg1NCwgMTQ2ODU5LCAxNDY4NjUsIDE0Njg3MiwgMTQ2ODc5LCAxNDY4ODUsIAorICAgIDE0Njg5MSwgMTQ2ODk2LCAxNDY5MDMsIDE0NjkxMSwgMTQ2OTIxLCAxNDY5MjksIDE0NjkzNywgMTQ2OTQ3LCAxNDY5NTcsIAorICAgIDE0Njk2NSwgMTQ2OTc1LCAxNDY5ODUsIDE0Njk5NywgMTQ3MDA5LCAxNDcwMjEsIDE0NzAzMSwgMTQ3MDM3LCAxNDcwNDMsIAorICAgIDE0NzA1MCwgMTQ3MDU5LCAxNDcwNjgsIDE0NzA3NywgMTQ3MDg2LCAxNDcwOTYsIDE0NzEwNSwgMTQ3MTE0LCAxNDcxMjMsIAorICAgIDE0NzEyOCwgMTQ3MTM0LCAxNDcxNDMsIDE0NzE1MywgMTQ3MTYyLCAxNDcxNjgsIDE0NzE3NCwgMTQ3MTgxLCAxNDcxODgsIAorICAgIDE0NzE5NSwgMTQ3MjAxLCAxNDcyMDgsIDE0NzIxNSwgMTQ3MjIyLCAxNDcyMjgsIDE0NzIzMiwgMTQ3MjM3LCAxNDcyNDQsIAorICAgIDE0NzI1MSwgMTQ3MjU4LCAxNDcyNjMsIDE0NzI3MSwgMTQ3Mjc5LCAxNDcyODgsIDE0NzI5NiwgMTQ3MzAzLCAxNDczMTEsIAorICAgIDE0NzMyMCwgMTQ3MzMwLCAxNDczMzMsIDE0NzMzNywgMTQ3MzQyLCAxNDczNDcsIDE0NzM1MiwgMTQ3MzU3LCAxNDczNjIsIAorICAgIDE0NzM2NywgMTQ3MzcyLCAxNDczNzcsIDE0NzM4MiwgMTQ3Mzg3LCAxNDczOTIsIDE0NzM5NywgMTQ3NDAyLCAxNDc0MDcsIAorICAgIDE0NzQxMiwgMTQ3NDE3LCAxNDc0MjIsIDE0NzQyOSwgMTQ3NDM1LCAxNDc0NDIsIDE0NzQ0OCwgMTQ3NDUzLCAxNDc0NjAsIAorICAgIDE0NzQ2NiwgMTQ3NDczLCAxNDc0NzksIDE0NzQ4NCwgMTQ3NDkxLCAxNDc0OTgsIDE0NzUwNSwgMTQ3NTExLCAxNDc1MTcsIAorICAgIDE0NzUyNiwgMTQ3NTM1LCAxNDc1NDYsIDE0NzU1MywgMTQ3NTYwLCAxNDc1NjksIDE0NzU3OCwgMTQ3NTg3LCAxNDc1OTYsIAorICAgIDE0NzYwNSwgMTQ3NjExLCAxNDc2MTksIDE0NzYyNSwgMTQ3NjM1LCAxNDc2NDAsIDE0NzY0OSwgMTQ3NjU4LCAxNDc2NjUsIAorICAgIDE0NzY3NiwgMTQ3NjgzLCAxNDc2OTAsIDE0NzY5NywgMTQ3NzA0LCAxNDc3MTEsIDE0NzcxOCwgMTQ3NzI1LCAxNDc3MzIsIAorICAgIDE0NzczOSwgMTQ3NzQ2LCAxNDc3NTIsIDE0Nzc1OCwgMTQ3NzY0LCAxNDc3NzEsIDE0Nzc3OCwgMTQ3Nzg1LCAxNDc3OTIsIAorICAgIDE0Nzc5OSwgMTQ3ODA2LCAxNDc4MTMsIDE0NzgyMCwgMTQ3ODI3LCAxNDc4MzQsIDE0Nzg0MSwgMTQ3ODQ4LCAxNDc4NTMsIAorICAgIDE0Nzg2MiwgMTQ3ODcxLCAxNDc4ODAsIDE0Nzg4NywgMTQ3ODk0LCAxNDc5MDEsIDE0NzkwOCwgMTQ3OTE1LCAxNDc5MjIsIAorICAgIDE0NzkyOSwgMTQ3OTM2LCAxNDc5NDUsIDE0Nzk1NCwgMTQ3OTYzLCAxNDc5NzIsIDE0Nzk4MSwgMTQ3OTkwLCAxNDc5OTksIAorICAgIDE0ODAwOCwgMTQ4MDE3LCAxNDgwMjYsIDE0ODAzNSwgMTQ4MDQ0LCAxNDgwNTMsIDE0ODA1OSwgMTQ4MDY3LCAxNDgwNzMsIAorICAgIDE0ODA4MywgMTQ4MDg4LCAxNDgwOTcsIDE0ODEwNiwgMTQ4MTE1LCAxNDgxMjYsIDE0ODEzMSwgMTQ4MTM4LCAxNDgxNDUsIAorICAgIDE0ODE1MiwgMTQ4MTU3LCAxNDgxNjMsIDE0ODE2OSwgMTQ4MTc1LCAxNDgxODIsIDE0ODE4OSwgMTQ4MTk2LCAxNDgyMDMsIAorICAgIDE0ODIxMCwgMTQ4MjE3LCAxNDgyMjQsIDE0ODIzMSwgMTQ4MjM4LCAxNDgyNDUsIDE0ODI1MiwgMTQ4MjU5LCAxNDgyNjQsIAorICAgIDE0ODI3MywgMTQ4MjgyLCAxNDgyOTEsIDE0ODMwMCwgMTQ4MzA5LCAxNDgzMTgsIDE0ODMyNywgMTQ4MzM2LCAxNDgzNDcsIAorICAgIDE0ODM1OCwgMTQ4MzY1LCAxNDgzNzIsIDE0ODM3OSwgMTQ4Mzg2LCAxNDgzOTMsIDE0ODQwMCwgMTQ4NDA4LCAxNDg0MTgsIAorICAgIDE0ODQyOCwgMTQ4NDM4LCAxNDg0NDksIDE0ODQ2MCwgMTQ4NDcxLCAxNDg0ODAsIDE0ODQ4OSwgMTQ4NDk4LCAxNDg1MDMsIAorICAgIDE0ODUwOCwgMTQ4NTEzLCAxNDg1MTgsIDE0ODUyOSwgMTQ4NTQwLCAxNDg1NTEsIDE0ODU2MiwgMTQ4NTczLCAxNDg1ODMsIAorICAgIDE0ODU5NCwgMTQ4NjAzLCAxNDg2MTIsIDE0ODYyMSwgMTQ4NjMwLCAxNDg2MzksIDE0ODY0NywgMTQ4NjU2LCAxNDg2NjcsIAorICAgIDE0ODY3OCwgMTQ4Njg5LCAxNDg3MDAsIDE0ODcxMSwgMTQ4NzIzLCAxNDg3MzYsIDE0ODc0OCwgMTQ4NzYxLCAxNDg3NzMsIAorICAgIDE0ODc4NiwgMTQ4Nzk4LCAxNDg4MTEsIDE0ODgyMiwgMTQ4ODMzLCAxNDg4NDIsIDE0ODg1MCwgMTQ4ODU5LCAxNDg4NzAsIAorICAgIDE0ODg4MSwgMTQ4ODkzLCAxNDg5MDYsIDE0ODkyMCwgMTQ4OTM1LCAxNDg5NDcsIDE0ODk2MCwgMTQ4OTcyLCAxNDg5ODUsIAorICAgIDE0ODk5NiwgMTQ5MDA3LCAxNDkwMTYsIDE0OTAyNCwgMTQ5MDMzLCAxNDkwNDAsIDE0OTA0NywgMTQ5MDU0LCAxNDkwNjEsIAorICAgIDE0OTA2OCwgMTQ5MDc1LCAxNDkwODIsIDE0OTA4OSwgMTQ5MDk2LCAxNDkxMDMsIDE0OTEwOCwgMTQ5MTEzLCAxNDkxMTgsIAorICAgIDE0OTEyNSwgMTQ5MTM1LCAxNDkxNDYsIDE0OTE1NiwgMTQ5MTY3LCAxNDkxODEsIDE0OTE5NiwgMTQ5MjExLCAxNDkyMjUsIAorICAgIDE0OTI0MCwgMTQ5MjU1LCAxNDkyNjYsIDE0OTI3NywgMTQ5MjkwLCAxNDkzMDMsIDE0OTMxMiwgMTQ5MzIxLCAxNDkzMzQsIAorICAgIDE0OTM0NywgMTQ5MzU0LCAxNDkzNjEsIDE0OTM2NiwgMTQ5MzcxLCAxNDkzNzYsIDE0OTM4MSwgMTQ5Mzg2LCAxNDkzOTMsIAorICAgIDE0OTQwMiwgMTQ5NDA3LCAxNDk0MTAsIDE0OTQxNSwgMTQ5NDIyLCAxNDk0MjksIDE0OTQzNiwgMTQ5NDQzLCAxNDk0NTAsIAorICAgIDE0OTQ1NywgMTQ5NDcwLCAxNDk0ODQsIDE0OTQ5OSwgMTQ5NTA2LCAxNDk1MTMsIDE0OTUyMCwgMTQ5NTI5LCAxNDk1MzcsIAorICAgIDE0OTU0NSwgMTQ5NTU0LCAxNDk1NTksIDE0OTU2NCwgMTQ5NTY5LCAxNDk1NzQsIDE0OTU3OSwgMTQ5NTg0LCAxNDk1OTEsIAorICAgIDE0OTU5OCwgMTQ5NjA0LCAxNDk2MTEsIDE0OTYxNywgMTQ5NjI0LCAxNDk2MjksIDE0OTYzNCwgMTQ5NjM5LCAxNDk2NDQsIAorICAgIDE0OTY0OSwgMTQ5NjU2LCAxNDk2NjMsIDE0OTY2OCwgMTQ5Njc1LCAxNDk2ODIsIDE0OTY4NywgMTQ5NjkyLCAxNDk2OTcsIAorICAgIDE0OTcwMiwgMTQ5NzA3LCAxNDk3MTIsIDE0OTcxOSwgMTQ5NzI2LCAxNDk3MzMsIDE0OTczNiwgMTQ5NzQxLCAxNDk3NDYsIAorICAgIDE0OTc1MSwgMTQ5NzU2LCAxNDk3NjMsIDE0OTc3MCwgMTQ5Nzc4LCAxNDk3ODYsIDE0OTc5MSwgMTQ5Nzk2LCAxNDk4MDMsIAorICAgIDE0OTgxMCwgMTQ5ODE3LCAxNDk4MjIsIDE0OTgyOSwgMTQ5ODM2LCAxNDk4NDEsIDE0OTg0OCwgMTQ5ODU1LCAxNDk4NjEsIAorICAgIDE0OTg2NywgMTQ5ODczLCAxNDk4NzksIDE0OTg4NywgMTQ5ODk1LCAxNDk5MDEsIDE0OTkwOSwgMTQ5OTE3LCAxNDk5MjIsIAorICAgIDE0OTkyOSwgMTQ5OTM2LCAxNDk5NDEsIDE0OTk0OCwgMTQ5OTU1LCAxNDk5NjIsIDE0OTk3MCwgMTQ5OTc4LCAxNDk5ODMsIAorICAgIDE0OTk5MCwgMTQ5OTk3LCAxNTAwMDYsIDE1MDAxMywgMTUwMDIyLCAxNTAwMzMsIDE1MDA0MiwgMTUwMDUxLCAxNTAwNjAsIAorICAgIDE1MDA2OSwgMTUwMDcyLCAxNTAwNzcsIDE1MDA4NCwgMTUwMDkzLCAxNTAxMDAsIDE1MDEwOSwgMTUwMTE2LCAxNTAxMjEsIAorICAgIDE1MDEyNiwgMTUwMTI5LCAxNTAxMzIsIDE1MDEzNSwgMTUwMTQyLCAxNTAxNDksIDE1MDE1OCwgMTUwMTY3LCAxNTAxNzYsIAorICAgIDE1MDE4MywgMTUwMTkwLCAxNTAxOTUsIDE1MDIwOCwgMTUwMjEzLCAxNTAyMTgsIDE1MDIyMywgMTUwMjI4LCAxNTAyMzMsIAorICAgIDE1MDIzOCwgMTUwMjQzLCAxNTAyNDgsIDE1MDI1MSwgMTUwMjU2LCAxNTAyNjEsIDE1MDI2NiwgMTUwMjcxLCAxNTAyNzYsIAorICAgIDE1MDI4MywgMTUwMjg4LCAxNTAyOTUsIDE1MDI5OCwgMTUwMzAzLCAxNTAzMDYsIDE1MDMwOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMzEyLCAxNTAzMTcsIDE1MDMyMiwgMTUwMzI3LCAxNTAzMzIsIDAsIAorICAgIDE1MDMzNywgMTUwMzQyLCAxNTAzNDcsIDE1MDM1MiwgMTUwMzU3LCAxNTAzNjIsIDE1MDM2NywgMTUwMzcyLCAxNTAzNzcsIAorICAgIDE1MDM4MiwgMTUwMzg3LCAxNTAzOTIsIDE1MDM5NywgMTUwNDAyLCAxNTA0MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1MDQxMiwgMTUwNDE3LCAxNTA0MjIsIDE1MDQyNywgMTUwNDMyLCAxNTA0MzcsIDE1MDQ0MiwgMCwgMTUwNDQ3LCAKKyAgICAxNTA0NTIsIDE1MDQ1NywgMTUwNDYzLCAxNTA0NjcsIDE1MDQ3MiwgMTUwNDc3LCAxNTA0ODIsIDE1MDQ4NywgMTUwNDkyLCAKKyAgICAxNTA0OTcsIDE1MDUwMiwgMTUwNTA3LCAxNTA1MTIsIDE1MDUxNywgMTUwNTIyLCAxNTA1MjcsIDAsIDAsIDE1MDUzMiwgCisgICAgMTUwNTM3LCAxNTA1NDIsIDE1MDU0NywgMTUwNTUyLCAxNTA1NTcsIDE1MDU2MiwgMCwgMTUwNTY3LCAxNTA1NzIsIDAsIAorICAgIDE1MDU3OCwgMTUwNTgzLCAxNTA1OTEsIDE1MDU5OCwgMTUwNjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUwOTUsIDEzNTA5OSwgMTM1MTA0LCAxMzUxMDksIDEzNTExNCwgMTM1MTE4LCAKLSAgICAxMzUxMjMsIDEzNTEyOCwgMTM1MTMzLCAxMzUxMzcsIDEzNTE0MiwgMTM1MTQ3LCAxMzUxNTEsIDEzNTE1NiwgMTM1MTYxLCAKLSAgICAxMzUxNjUsIDEzNTE3MCwgMTM1MTc1LCAxMzUxNzksIDEzNTE4MywgMTM1MTg4LCAxMzUxOTIsIDEzNTE5NywgMTM1MjAyLCAKLSAgICAxMzUyMDcsIDEzNTIxMiwgMTM1MjE3LCAxMzUyMjEsIDEzNTIyNiwgMTM1MjMxLCAxMzUyMzYsIDEzNTI0MCwgMTM1MjQ1LCAKLSAgICAxMzUyNTAsIDEzNTI1NSwgMTM1MjU5LCAxMzUyNjQsIDEzNTI2OSwgMTM1MjczLCAxMzUyNzgsIDEzNTI4MywgMTM1Mjg3LCAKLSAgICAxMzUyOTIsIDEzNTI5NywgMTM1MzAxLCAxMzUzMDUsIDEzNTMxMCwgMTM1MzE0LCAxMzUzMTksIDEzNTMyNCwgMTM1MzI5LCAKLSAgICAxMzUzMzQsIDEzNTMzOSwgMTM1MzQzLCAxMzUzNDgsIDEzNTM1MywgMTM1MzU4LCAxMzUzNjIsIDEzNTM2NywgMTM1MzcyLCAKLSAgICAxMzUzNzcsIDEzNTM4MSwgMTM1Mzg2LCAxMzUzOTEsIDEzNTM5NSwgMTM1NDAwLCAxMzU0MDUsIDEzNTQwOSwgMTM1NDE0LCAKLSAgICAxMzU0MTksIDEzNTQyMywgMTM1NDI3LCAxMzU0MzIsIDEzNTQzNiwgMTM1NDQxLCAxMzU0NDYsIDEzNTQ1MSwgMTM1NDU2LCAKLSAgICAxMzU0NjEsIDEzNTQ2NSwgMTM1NDcwLCAxMzU0NzUsIDEzNTQ4MCwgMTM1NDg0LCAxMzU0ODksIDAsIDEzNTQ5NCwgCi0gICAgMTM1NDk4LCAxMzU1MDMsIDEzNTUwOCwgMTM1NTEyLCAxMzU1MTcsIDEzNTUyMiwgMTM1NTI2LCAxMzU1MzEsIDEzNTUzNiwgCi0gICAgMTM1NTQwLCAxMzU1NDQsIDEzNTU0OSwgMTM1NTUzLCAxMzU1NTgsIDEzNTU2MywgMTM1NTY4LCAxMzU1NzMsIDEzNTU3OCwgCi0gICAgMTM1NTgzLCAxMzU1ODksIDEzNTU5NSwgMTM1NjAxLCAxMzU2MDYsIDEzNTYxMiwgMTM1NjE4LCAxMzU2MjQsIDEzNTYyOSwgCi0gICAgMTM1NjM1LCAxMzU2NDEsIDEzNTY0NiwgMTM1NjUyLCAxMzU2NTgsIDEzNTY2MywgMTM1NjY5LCAxMzU2NzUsIDEzNTY4MCwgCi0gICAgMTM1Njg1LCAxMzU2OTEsIDEzNTY5NiwgMTM1NzAyLCAxMzU3MDgsIDEzNTcxNCwgMTM1NzIwLCAxMzU3MjYsIDEzNTczMSwgCi0gICAgMTM1NzM3LCAxMzU3NDMsIDEzNTc0OSwgMTM1NzU0LCAxMzU3NjAsIDEzNTc2NiwgMTM1NzcyLCAxMzU3NzcsIDEzNTc4MywgCi0gICAgMTM1Nzg5LCAxMzU3OTQsIDEzNTgwMCwgMTM1ODA2LCAxMzU4MTEsIDEzNTgxNywgMTM1ODIzLCAxMzU4MjgsIDEzNTgzMywgCi0gICAgMTM1ODM5LCAxMzU4NDQsIDEzNTg1MCwgMTM1ODU2LCAxMzU4NjIsIDEzNTg2OCwgMTM1ODc0LCAwLCAxMzU4NzgsIAotICAgIDEzNTg4MywgMCwgMCwgMTM1ODg4LCAwLCAwLCAxMzU4OTMsIDEzNTg5OCwgMCwgMCwgMTM1OTAzLCAxMzU5MDgsIDEzNTkxMiwgCi0gICAgMTM1OTE3LCAwLCAxMzU5MjIsIDEzNTkyNiwgMTM1OTMxLCAxMzU5MzUsIDEzNTk0MCwgMTM1OTQ1LCAxMzU5NTAsIAotICAgIDEzNTk1NSwgMTM1OTYwLCAxMzU5NjQsIDEzNTk2OSwgMTM1OTc0LCAwLCAxMzU5NzksIDAsIDEzNTk4NCwgMTM1OTg5LCAKLSAgICAxMzU5OTMsIDEzNTk5OCwgMTM2MDAzLCAxMzYwMDcsIDEzNjAxMiwgMCwgMTM2MDE3LCAxMzYwMjIsIDEzNjAyNywgCi0gICAgMTM2MDMxLCAxMzYwMzUsIDEzNjA0MCwgMTM2MDQ0LCAxMzYwNDksIDEzNjA1NCwgMTM2MDU5LCAxMzYwNjQsIDEzNjA2OSwgCi0gICAgMTM2MDc0LCAxMzYwODAsIDEzNjA4NiwgMTM2MDkyLCAxMzYwOTcsIDEzNjEwMywgMTM2MTA5LCAxMzYxMTUsIDEzNjEyMCwgCi0gICAgMTM2MTI2LCAxMzYxMzIsIDEzNjEzNywgMTM2MTQzLCAxMzYxNDksIDEzNjE1NCwgMTM2MTYwLCAxMzYxNjYsIDEzNjE3MSwgCi0gICAgMTM2MTc2LCAxMzYxODIsIDEzNjE4NywgMTM2MTkzLCAxMzYxOTksIDEzNjIwNSwgMTM2MjExLCAxMzYyMTcsIDEzNjIyMiwgCi0gICAgMTM2MjI4LCAxMzYyMzQsIDEzNjI0MCwgMTM2MjQ1LCAxMzYyNTEsIDEzNjI1NywgMTM2MjYzLCAxMzYyNjgsIDEzNjI3NCwgCi0gICAgMTM2MjgwLCAxMzYyODUsIDEzNjI5MSwgMTM2Mjk3LCAxMzYzMDIsIDEzNjMwOCwgMTM2MzE0LCAxMzYzMTksIDEzNjMyNCwgCi0gICAgMTM2MzMwLCAxMzYzMzUsIDEzNjM0MSwgMTM2MzQ3LCAxMzYzNTMsIDEzNjM1OSwgMTM2MzY1LCAxMzYzNjksIDAsIAotICAgIDEzNjM3NCwgMTM2Mzc5LCAxMzYzODMsIDEzNjM4OCwgMCwgMCwgMTM2MzkzLCAxMzYzOTgsIDEzNjQwMywgMTM2NDA3LCAKLSAgICAxMzY0MTIsIDEzNjQxNywgMTM2NDIxLCAxMzY0MjYsIDAsIDEzNjQzMSwgMTM2NDM1LCAxMzY0NDAsIDEzNjQ0NCwgCi0gICAgMTM2NDQ5LCAxMzY0NTQsIDEzNjQ1OSwgMCwgMTM2NDY0LCAxMzY0NjgsIDEzNjQ3MywgMTM2NDc4LCAxMzY0ODMsIAotICAgIDEzNjQ4NywgMTM2NDkyLCAxMzY0OTcsIDEzNjUwMiwgMTM2NTA2LCAxMzY1MTEsIDEzNjUxNiwgMTM2NTIwLCAxMzY1MjUsIAotICAgIDEzNjUzMCwgMTM2NTM0LCAxMzY1MzksIDEzNjU0NCwgMTM2NTQ4LCAxMzY1NTIsIDEzNjU1NywgMTM2NTYxLCAxMzY1NjYsIAotICAgIDEzNjU3MSwgMTM2NTc2LCAxMzY1ODEsIDEzNjU4NiwgMTM2NTkwLCAwLCAxMzY1OTUsIDEzNjYwMCwgMTM2NjA0LCAKLSAgICAxMzY2MDksIDAsIDEzNjYxNCwgMTM2NjE4LCAxMzY2MjMsIDEzNjYyOCwgMTM2NjMyLCAwLCAxMzY2MzcsIDAsIDAsIDAsIAotICAgIDEzNjY0MSwgMTM2NjQ1LCAxMzY2NTAsIDEzNjY1NCwgMTM2NjU5LCAxMzY2NjQsIDEzNjY2OSwgMCwgMTM2Njc0LCAKLSAgICAxMzY2NzgsIDEzNjY4MywgMTM2Njg4LCAxMzY2OTMsIDEzNjY5NywgMTM2NzAyLCAxMzY3MDcsIDEzNjcxMiwgMTM2NzE2LCAKLSAgICAxMzY3MjEsIDEzNjcyNiwgMTM2NzMwLCAxMzY3MzUsIDEzNjc0MCwgMTM2NzQ0LCAxMzY3NDksIDEzNjc1NCwgMTM2NzU4LCAKLSAgICAxMzY3NjIsIDEzNjc2NywgMTM2NzcxLCAxMzY3NzYsIDEzNjc4MSwgMTM2Nzg2LCAxMzY3OTEsIDEzNjc5NiwgMTM2ODAxLCAKLSAgICAxMzY4MDcsIDEzNjgxMywgMTM2ODE5LCAxMzY4MjQsIDEzNjgzMCwgMTM2ODM2LCAxMzY4NDIsIDEzNjg0NywgMTM2ODUzLCAKLSAgICAxMzY4NTksIDEzNjg2NCwgMTM2ODcwLCAxMzY4NzYsIDEzNjg4MSwgMTM2ODg3LCAxMzY4OTMsIDEzNjg5OCwgMTM2OTAzLCAKLSAgICAxMzY5MDksIDEzNjkxNCwgMTM2OTIwLCAxMzY5MjYsIDEzNjkzMiwgMTM2OTM4LCAxMzY5NDQsIDEzNjk0OSwgMTM2OTU1LCAKLSAgICAxMzY5NjEsIDEzNjk2NywgMTM2OTcyLCAxMzY5NzgsIDEzNjk4NCwgMTM2OTkwLCAxMzY5OTUsIDEzNzAwMSwgMTM3MDA3LCAKLSAgICAxMzcwMTIsIDEzNzAxOCwgMTM3MDI0LCAxMzcwMjksIDEzNzAzNSwgMTM3MDQxLCAxMzcwNDYsIDEzNzA1MSwgMTM3MDU3LCAKLSAgICAxMzcwNjIsIDEzNzA2OCwgMTM3MDc0LCAxMzcwODAsIDEzNzA4NiwgMTM3MDkyLCAxMzcwOTYsIDEzNzEwMSwgMTM3MTA2LCAKLSAgICAxMzcxMTEsIDEzNzExNSwgMTM3MTIwLCAxMzcxMjUsIDEzNzEzMCwgMTM3MTM0LCAxMzcxMzksIDEzNzE0NCwgMTM3MTQ4LCAKLSAgICAxMzcxNTMsIDEzNzE1OCwgMTM3MTYyLCAxMzcxNjcsIDEzNzE3MiwgMTM3MTc2LCAxMzcxODAsIDEzNzE4NSwgMTM3MTg5LCAKLSAgICAxMzcxOTQsIDEzNzE5OSwgMTM3MjA0LCAxMzcyMDksIDEzNzIxNCwgMTM3MjE4LCAxMzcyMjMsIDEzNzIyOCwgMTM3MjMzLCAKLSAgICAxMzcyMzcsIDEzNzI0MiwgMTM3MjQ3LCAxMzcyNTIsIDEzNzI1NiwgMTM3MjYxLCAxMzcyNjYsIDEzNzI3MCwgMTM3Mjc1LCAKLSAgICAxMzcyODAsIDEzNzI4NCwgMTM3Mjg5LCAxMzcyOTQsIDEzNzI5OCwgMTM3MzAyLCAxMzczMDcsIDEzNzMxMSwgMTM3MzE2LCAKLSAgICAxMzczMjEsIDEzNzMyNiwgMTM3MzMxLCAxMzczMzYsIDEzNzM0MSwgMTM3MzQ3LCAxMzczNTMsIDEzNzM1OSwgMTM3MzY0LCAKLSAgICAxMzczNzAsIDEzNzM3NiwgMTM3MzgyLCAxMzczODcsIDEzNzM5MywgMTM3Mzk5LCAxMzc0MDQsIDEzNzQxMCwgMTM3NDE2LCAKLSAgICAxMzc0MjEsIDEzNzQyNywgMTM3NDMzLCAxMzc0MzgsIDEzNzQ0MywgMTM3NDQ5LCAxMzc0NTQsIDEzNzQ2MCwgMTM3NDY2LCAKLSAgICAxMzc0NzIsIDEzNzQ3OCwgMTM3NDg0LCAxMzc0ODksIDEzNzQ5NSwgMTM3NTAxLCAxMzc1MDcsIDEzNzUxMiwgMTM3NTE4LCAKLSAgICAxMzc1MjQsIDEzNzUzMCwgMTM3NTM1LCAxMzc1NDEsIDEzNzU0NywgMTM3NTUyLCAxMzc1NTgsIDEzNzU2NCwgMTM3NTY5LCAKLSAgICAxMzc1NzUsIDEzNzU4MSwgMTM3NTg2LCAxMzc1OTEsIDEzNzU5NywgMTM3NjAyLCAxMzc2MDgsIDEzNzYxNCwgMTM3NjIwLCAKLSAgICAxMzc2MjYsIDEzNzYzMiwgMTM3NjM3LCAxMzc2NDMsIDEzNzY0OSwgMTM3NjU1LCAxMzc2NjAsIDEzNzY2NiwgMTM3NjcyLCAKLSAgICAxMzc2NzgsIDEzNzY4MywgMTM3Njg5LCAxMzc2OTUsIDEzNzcwMCwgMTM3NzA2LCAxMzc3MTIsIDEzNzcxNywgMTM3NzIzLCAKLSAgICAxMzc3MjksIDEzNzczNCwgMTM3NzM5LCAxMzc3NDUsIDEzNzc1MCwgMTM3NzU2LCAxMzc3NjIsIDEzNzc2OCwgMTM3Nzc0LCAKLSAgICAxMzc3ODAsIDEzNzc4NSwgMTM3NzkxLCAxMzc3OTcsIDEzNzgwMywgMTM3ODA4LCAxMzc4MTQsIDEzNzgyMCwgMTM3ODI2LCAKLSAgICAxMzc4MzEsIDEzNzgzNywgMTM3ODQzLCAxMzc4NDgsIDEzNzg1NCwgMTM3ODYwLCAxMzc4NjUsIDEzNzg3MSwgMTM3ODc3LCAKLSAgICAxMzc4ODIsIDEzNzg4NywgMTM3ODkzLCAxMzc4OTgsIDEzNzkwNCwgMTM3OTEwLCAxMzc5MTYsIDEzNzkyMiwgMTM3OTI4LCAKLSAgICAxMzc5MzQsIDEzNzk0MSwgMTM3OTQ4LCAxMzc5NTUsIDEzNzk2MSwgMTM3OTY4LCAxMzc5NzUsIDEzNzk4MiwgMTM3OTg4LCAKLSAgICAxMzc5OTUsIDEzODAwMiwgMTM4MDA4LCAxMzgwMTUsIDEzODAyMiwgMTM4MDI4LCAxMzgwMzUsIDEzODA0MiwgMTM4MDQ4LCAKLSAgICAxMzgwNTQsIDEzODA2MSwgMTM4MDY3LCAxMzgwNzQsIDEzODA4MSwgMTM4MDg4LCAxMzgwOTUsIDEzODEwMiwgMTM4MTA4LCAKLSAgICAxMzgxMTUsIDEzODEyMiwgMTM4MTI5LCAxMzgxMzUsIDEzODE0MiwgMTM4MTQ5LCAxMzgxNTYsIDEzODE2MiwgMTM4MTY5LCAKLSAgICAxMzgxNzYsIDEzODE4MiwgMTM4MTg5LCAxMzgxOTYsIDEzODIwMiwgMTM4MjA5LCAxMzgyMTYsIDEzODIyMiwgMTM4MjI4LCAKLSAgICAxMzgyMzUsIDEzODI0MSwgMTM4MjQ4LCAxMzgyNTUsIDEzODI2MiwgMTM4MjY5LCAxMzgyNzYsIDEzODI4MSwgMTM4Mjg3LCAKLSAgICAxMzgyOTMsIDEzODI5OSwgMTM4MzA0LCAxMzgzMTAsIDEzODMxNiwgMTM4MzIyLCAxMzgzMjcsIDEzODMzMywgMTM4MzM5LCAKLSAgICAxMzgzNDQsIDEzODM1MCwgMTM4MzU2LCAxMzgzNjEsIDEzODM2NywgMTM4MzczLCAxMzgzNzgsIDEzODM4MywgMTM4Mzg5LCAKLSAgICAxMzgzOTQsIDEzODQwMCwgMTM4NDA2LCAxMzg0MTIsIDEzODQxOCwgMTM4NDI0LCAxMzg0MjksIDEzODQzNSwgMTM4NDQxLCAKLSAgICAxMzg0NDcsIDEzODQ1MiwgMTM4NDU4LCAxMzg0NjQsIDEzODQ3MCwgMTM4NDc1LCAxMzg0ODEsIDEzODQ4NywgMTM4NDkyLCAKLSAgICAxMzg0OTgsIDEzODUwNCwgMTM4NTA5LCAxMzg1MTUsIDEzODUyMSwgMTM4NTI2LCAxMzg1MzEsIDEzODUzNywgMTM4NTQyLCAKLSAgICAxMzg1NDgsIDEzODU1NCwgMTM4NTYwLCAxMzg1NjYsIDEzODU3MiwgMTM4NTc4LCAwLCAwLCAxMzg1ODUsIDEzODU5MCwgCi0gICAgMTM4NTk1LCAxMzg2MDAsIDEzODYwNSwgMTM4NjEwLCAxMzg2MTUsIDEzODYyMCwgMTM4NjI1LCAxMzg2MzAsIDEzODYzNSwgCi0gICAgMTM4NjQwLCAxMzg2NDUsIDEzODY1MCwgMTM4NjU1LCAxMzg2NjAsIDEzODY2NSwgMTM4NjcwLCAxMzg2NzYsIDEzODY4MSwgCi0gICAgMTM4Njg2LCAxMzg2OTEsIDEzODY5NiwgMTM4NzAxLCAxMzg3MDYsIDEzODcxMSwgMTM4NzE1LCAxMzg3MjAsIDEzODcyNSwgCi0gICAgMTM4NzMwLCAxMzg3MzUsIDEzODc0MCwgMTM4NzQ1LCAxMzg3NTAsIDEzODc1NSwgMTM4NzYwLCAxMzg3NjUsIDEzODc3MCwgCi0gICAgMTM4Nzc1LCAxMzg3ODAsIDEzODc4NSwgMTM4NzkwLCAxMzg3OTUsIDEzODgwMCwgMTM4ODA2LCAxMzg4MTEsIDEzODgxNiwgCi0gICAgMTM4ODIxLCAxMzg4MjYsIDEzODgzMSwgMTM4ODM2LCAxMzg4NDEsIDEzODg0NywgMTM4ODUyLCAxMzg4NTcsIDEzODg2MiwgCi0gICAgMTM4ODY3LCAxMzg4NzIsIDEzODg3NywgMTM4ODgyLCAxMzg4ODcsIDEzODg5MiwgMTM4ODk3LCAxMzg5MDIsIDEzODkwNywgCi0gICAgMTM4OTEyLCAxMzg5MTcsIDEzODkyMiwgMTM4OTI3LCAxMzg5MzIsIDEzODkzNywgMTM4OTQyLCAxMzg5NDcsIDEzODk1MiwgCi0gICAgMTM4OTU3LCAxMzg5NjIsIDEzODk2OCwgMTM4OTczLCAxMzg5NzgsIDEzODk4MywgMTM4OTg4LCAxMzg5OTMsIDEzODk5OCwgCi0gICAgMTM5MDAzLCAxMzkwMDcsIDEzOTAxMiwgMTM5MDE3LCAxMzkwMjIsIDEzOTAyNywgMTM5MDMyLCAxMzkwMzcsIDEzOTA0MiwgCi0gICAgMTM5MDQ3LCAxMzkwNTIsIDEzOTA1NywgMTM5MDYyLCAxMzkwNjcsIDEzOTA3MiwgMTM5MDc3LCAxMzkwODIsIDEzOTA4NywgCi0gICAgMTM5MDkyLCAxMzkwOTgsIDEzOTEwMywgMTM5MTA4LCAxMzkxMTMsIDEzOTExOCwgMTM5MTIzLCAxMzkxMjgsIDEzOTEzMywgCi0gICAgMTM5MTM5LCAxMzkxNDQsIDEzOTE0OSwgMTM5MTU0LCAxMzkxNTksIDEzOTE2NCwgMTM5MTY5LCAxMzkxNzUsIDEzOTE4MSwgCi0gICAgMTM5MTg3LCAxMzkxOTMsIDEzOTE5OSwgMTM5MjA1LCAxMzkyMTEsIDEzOTIxNywgMTM5MjIzLCAxMzkyMjksIDEzOTIzNSwgCi0gICAgMTM5MjQxLCAxMzkyNDcsIDEzOTI1MywgMTM5MjU5LCAxMzkyNjUsIDEzOTI3MSwgMTM5Mjc4LCAxMzkyODQsIDEzOTI5MCwgCi0gICAgMTM5Mjk2LCAxMzkzMDIsIDEzOTMwOCwgMTM5MzE0LCAxMzkzMjAsIDEzOTMyNSwgMTM5MzMxLCAxMzkzMzcsIDEzOTM0MywgCi0gICAgMTM5MzQ5LCAxMzkzNTUsIDEzOTM2MSwgMTM5MzY3LCAxMzkzNzMsIDEzOTM3OSwgMTM5Mzg1LCAxMzkzOTEsIDEzOTM5NywgCi0gICAgMTM5NDAzLCAxMzk0MDksIDEzOTQxNSwgMTM5NDIxLCAxMzk0MjcsIDEzOTQzNCwgMTM5NDQwLCAxMzk0NDYsIDEzOTQ1MiwgCi0gICAgMTM5NDU4LCAxMzk0NjQsIDEzOTQ3MCwgMTM5NDc2LCAxMzk0ODMsIDEzOTQ4OSwgMTM5NDk1LCAxMzk1MDEsIDEzOTUwNywgCi0gICAgMTM5NTEzLCAxMzk1MTksIDEzOTUyNSwgMTM5NTMxLCAxMzk1MzcsIDEzOTU0MywgMTM5NTQ5LCAxMzk1NTUsIDEzOTU2MSwgCi0gICAgMTM5NTY3LCAxMzk1NzMsIDEzOTU3OSwgMTM5NTg1LCAxMzk1OTEsIDEzOTU5NywgMTM5NjAzLCAxMzk2MDksIDEzOTYxNSwgCi0gICAgMTM5NjIxLCAxMzk2MjgsIDEzOTYzNCwgMTM5NjQwLCAxMzk2NDYsIDEzOTY1MiwgMTM5NjU4LCAxMzk2NjQsIDEzOTY3MCwgCi0gICAgMTM5Njc1LCAxMzk2ODEsIDEzOTY4NywgMTM5NjkzLCAxMzk2OTksIDEzOTcwNSwgMTM5NzExLCAxMzk3MTcsIDEzOTcyMywgCi0gICAgMTM5NzI5LCAxMzk3MzUsIDEzOTc0MSwgMTM5NzQ3LCAxMzk3NTMsIDEzOTc1OSwgMTM5NzY1LCAxMzk3NzEsIDEzOTc3NywgCi0gICAgMTM5Nzg0LCAxMzk3OTAsIDEzOTc5NiwgMTM5ODAyLCAxMzk4MDgsIDEzOTgxNCwgMTM5ODIwLCAxMzk4MjYsIDEzOTgzMywgCi0gICAgMTM5ODM5LCAxMzk4NDUsIDEzOTg1MSwgMTM5ODU3LCAxMzk4NjMsIDEzOTg2OSwgMTM5ODc2LCAxMzk4ODMsIDEzOTg5MCwgCi0gICAgMTM5ODk3LCAxMzk5MDQsIDEzOTkxMSwgMTM5OTE4LCAxMzk5MjUsIDEzOTkzMiwgMTM5OTM5LCAxMzk5NDYsIDEzOTk1MywgCi0gICAgMTM5OTYwLCAxMzk5NjcsIDEzOTk3NCwgMTM5OTgxLCAxMzk5ODgsIDEzOTk5NiwgMTQwMDAzLCAxNDAwMTAsIDE0MDAxNywgCi0gICAgMTQwMDI0LCAxNDAwMzEsIDE0MDAzOCwgMTQwMDQ1LCAxNDAwNTEsIDE0MDA1OCwgMTQwMDY1LCAxNDAwNzIsIDE0MDA3OSwgCi0gICAgMTQwMDg2LCAxNDAwOTMsIDE0MDEwMCwgMTQwMTA3LCAxNDAxMTQsIDE0MDEyMSwgMTQwMTI4LCAxNDAxMzUsIDE0MDE0MiwgCi0gICAgMTQwMTQ5LCAxNDAxNTYsIDE0MDE2MywgMTQwMTcwLCAxNDAxNzgsIDE0MDE4NSwgMTQwMTkyLCAxNDAxOTksIDE0MDIwNiwgCi0gICAgMTQwMjEzLCAxNDAyMjAsIDE0MDIyNywgMTQwMjM1LCAxNDAyNDIsIDE0MDI0OSwgMTQwMjU2LCAxNDAyNjMsIDE0MDI3MCwgCi0gICAgMTQwMjc3LCAxNDAyODIsIDAsIDAsIDE0MDI4NywgMTQwMjkyLCAxNDAyOTYsIDE0MDMwMCwgMTQwMzA0LCAxNDAzMDgsIAotICAgIDE0MDMxMiwgMTQwMzE2LCAxNDAzMjEsIDE0MDMyNSwgMTQwMzMwLCAxNDAzMzUsIDE0MDMzOSwgMTQwMzQzLCAxNDAzNDcsIAotICAgIDE0MDM1MSwgMTQwMzU1LCAxNDAzNTksIDE0MDM2NCwgMTQwMzY4LCAxNDAzNzMsIDE0MDM3OCwgMTQwMzgyLCAxNDAzODYsIAotICAgIDE0MDM5MCwgMTQwMzk0LCAxNDAzOTgsIDE0MDQwMiwgMTQwNDA3LCAxNDA0MTEsIDE0MDQxNiwgMTQwNDIyLCAxNDA0MjcsIAotICAgIDE0MDQzMiwgMTQwNDM3LCAxNDA0NDIsIDE0MDQ0NywgMTQwNDUyLCAxNDA0NTgsIDE0MDQ2MywgMTQwNDY5LCAxNDA0NzUsIAotICAgIDE0MDQ4MCwgMTQwNDg1LCAxNDA0OTAsIDE0MDQ5NSwgMTQwNTAwLCAxNDA1MDUsIDE0MDUxMSwgMTQwNTE2LCAxNDA1MjIsIAotICAgIDE0MDUyNiwgMTQwNTMxLCAxNDA1MzYsIDE0MDU0MSwgMTQwNTQ2LCAxNDA1NTEsIDE0MDU1NiwgMTQwNTYyLCAxNDA1NzAsIAotICAgIDE0MDU3NywgMTQwNTgyLCAxNDA1ODcsIDE0MDU5NCwgMTQwNjAwLCAxNDA2MDUsIDE0MDYxMSwgMTQwNjE3LCAxNDA2MjUsIAotICAgIDE0MDYzMSwgMTQwNjM4LCAxNDA2NDYsIDE0MDY1MiwgMTQwNjYxLCAxNDA2NzAsIDE0MDY3OCwgMTQwNjg2LCAxNDA2OTIsIAotICAgIDE0MDY5OSwgMTQwNzA3LCAxNDA3MTUsIDE0MDcyMSwgMTQwNzI4LCAxNDA3MzcsIDE0MDc0NiwgMTQwNzUzLCAxNDA3NjQsIAotICAgIDE0MDc3NCwgMTQwNzg0LCAxNDA3OTQsIDE0MDgwNCwgMTQwODExLCAxNDA4MTgsIDE0MDgyNSwgMTQwODMyLCAxNDA4NDEsIAotICAgIDE0MDg1MCwgMTQwODYxLCAxNDA4NzIsIDE0MDg4MSwgMTQwODkwLCAxNDA5MDEsIDE0MDkxMCwgMTQwOTE5LCAxNDA5MzAsIAotICAgIDE0MDkzOSwgMTQwOTQ4LCAxNDA5NTYsIDE0MDk2NCwgMTQwOTc1LCAxNDA5ODYsIDE0MDk5NCwgMTQxMDAzLCAxNDEwMTIsIAotICAgIDE0MTAxOSwgMTQxMDMwLCAxNDEwNDEsIDE0MTA1MCwgMTQxMDU5LCAxNDEwNjYsIDE0MTA3NSwgMTQxMDg0LCAxNDEwOTMsIAotICAgIDE0MTEwNCwgMTQxMTEzLCAxNDExMjMsIDE0MTEzMiwgMTQxMTQxLCAxNDExNTIsIDE0MTE2NSwgMTQxMTgwLCAxNDExOTEsIAotICAgIDE0MTIwNCwgMTQxMjE2LCAxNDEyMjUsIDE0MTIzNiwgMTQxMjQ3LCAxNDEyNTYsIDE0MTI2NywgMTQxMjgxLCAxNDEyOTYsIAotICAgIDE0MTI5OSwgMTQxMzA4LCAxNDEzMTMsIDE0MTMxOSwgMTQxMzI3LCAxNDEzMzMsIDE0MTMzOSwgMTQxMzQ4LCAxNDEzNTUsIAotICAgIDE0MTM2NSwgMTQxMzc3LCAxNDEzODQsIDE0MTM4NywgMTQxMzkzLCAxNDE0MDAsIDE0MTQwNiwgMTQxNDExLCAxNDE0MTQsIAotICAgIDE0MTQxOSwgMTQxNDIyLCAxNDE0MjksIDE0MTQzNSwgMTQxNDQzLCAxNDE0NTAsIDE0MTQ1NywgMTQxNDYzLCAxNDE0NjgsIAotICAgIDE0MTQ3MSwgMTQxNDc0LCAxNDE0NzcsIDE0MTQ4MywgMTQxNDkwLCAxNDE0OTYsIDE0MTUwMSwgMTQxNTA4LCAxNDE1MTEsIAotICAgIDE0MTUxNiwgMTQxNTIzLCAxNDE1MjksIDE0MTUzNywgMTQxNTQ0LCAxNDE1NTQsIDE0MTU2MywgMTQxNTY2LCAxNDE1NzIsIAotICAgIDE0MTU3OSwgMTQxNTg2LCAxNDE1OTMsIDE0MTU5OCwgMTQxNjA2LCAxNDE2MTQsIDE0MTYyMywgMTQxNjI5LCAxNDE2MzgsIAotICAgIDE0MTY0NywgMTQxNjU2LCAxNDE2NjIsIDE0MTY3MSwgMTQxNjc4LCAxNDE2ODUsIDE0MTY5MiwgMTQxNzAwLCAxNDE3MDYsIAotICAgIDE0MTcxNCwgMTQxNzIwLCAxNDE3MjcsIDE0MTczNCwgMTQxNzQyLCAxNDE3NTMsIDE0MTc2MywgMTQxNzY5LCAxNDE3NzYsIAotICAgIDE0MTc4MywgMTQxNzkwLCAxNDE3OTYsIDE0MTgwMywgMTQxODEwLCAxNDE4MTUsIDE0MTgyMiwgMTQxODMwLCAxNDE4MzksIAotICAgIDE0MTg0NSwgMTQxODU3LCAxNDE4NjgsIDE0MTg3NCwgMTQxODgyLCAxNDE4ODgsIDE0MTg5NSwgMTQxOTAyLCAxNDE5MDksIAotICAgIDE0MTkxNSwgMTQxOTIyLCAxNDE5MzEsIDE0MTkzNywgMTQxOTQzLCAxNDE5NTAsIDE0MTk1NywgMTQxOTY1LCAxNDE5NzUsIAotICAgIDE0MTk4NSwgMTQxOTk1LCAxNDIwMDUsIDE0MjAxMywgMTQyMDIxLCAxNDIwMzEsIDE0MjAzOSwgMTQyMDQ0LCAxNDIwNDksIAotICAgIDE0MjA1NCwgMTQyMDYwLCAxNDIwNjcsIDE0MjA3NCwgMTQyMDgwLCAxNDIwODYsIDE0MjA5MSwgMTQyMDk4LCAxNDIxMDYsIAotICAgIDE0MjExNiwgMTQyMTI0LCAxNDIxMzIsIDE0MjE0MiwgMTQyMTUyLCAxNDIxNjAsIDE0MjE3MCwgMTQyMTgwLCAxNDIxOTIsIAotICAgIDE0MjIwNCwgMTQyMjE2LCAxNDIyMjYsIDE0MjIzMiwgMTQyMjM4LCAxNDIyNDUsIDE0MjI1NCwgMTQyMjYzLCAxNDIyNzIsIAotICAgIDE0MjI4MSwgMTQyMjkxLCAxNDIzMDAsIDE0MjMwOSwgMTQyMzE4LCAxNDIzMjMsIDE0MjMyOSwgMTQyMzM4LCAxNDIzNDgsIAotICAgIDE0MjM1NywgMTQyMzYzLCAxNDIzNjksIDE0MjM3NiwgMTQyMzgzLCAxNDIzOTAsIDE0MjM5NiwgMTQyNDAzLCAxNDI0MTAsIAotICAgIDE0MjQxNywgMTQyNDIzLCAxNDI0MjcsIDE0MjQzMiwgMTQyNDM5LCAxNDI0NDYsIDE0MjQ1MywgMTQyNDU4LCAxNDI0NjYsIAotICAgIDE0MjQ3NCwgMTQyNDgzLCAxNDI0OTEsIDE0MjQ5OCwgMTQyNTA2LCAxNDI1MTUsIDE0MjUyNSwgMTQyNTI4LCAxNDI1MzIsIAotICAgIDE0MjUzNywgMTQyNTQyLCAxNDI1NDcsIDE0MjU1MiwgMTQyNTU3LCAxNDI1NjIsIDE0MjU2NywgMTQyNTcyLCAxNDI1NzcsIAotICAgIDE0MjU4MiwgMTQyNTg3LCAxNDI1OTIsIDE0MjU5NywgMTQyNjAyLCAxNDI2MDcsIDE0MjYxMiwgMTQyNjE3LCAxNDI2MjQsIAotICAgIDE0MjYzMCwgMTQyNjM3LCAxNDI2NDMsIDE0MjY0OCwgMTQyNjU1LCAxNDI2NjEsIDE0MjY2OCwgMTQyNjc0LCAxNDI2NzksIAotICAgIDE0MjY4NiwgMTQyNjkzLCAxNDI3MDAsIDE0MjcwNiwgMTQyNzEyLCAxNDI3MjEsIDE0MjczMCwgMTQyNzQxLCAxNDI3NDgsIAotICAgIDE0Mjc1NSwgMTQyNzY0LCAxNDI3NzMsIDE0Mjc4MiwgMTQyNzkxLCAxNDI4MDAsIDE0MjgwNiwgMTQyODE0LCAxNDI4MjAsIAotICAgIDE0MjgzMCwgMTQyODM1LCAxNDI4NDQsIDE0Mjg1MywgMTQyODYwLCAxNDI4NzEsIDE0Mjg3OCwgMTQyODg1LCAxNDI4OTIsIAotICAgIDE0Mjg5OSwgMTQyOTA2LCAxNDI5MTMsIDE0MjkyMCwgMTQyOTI3LCAxNDI5MzQsIDE0Mjk0MSwgMTQyOTQ3LCAxNDI5NTMsIAotICAgIDE0Mjk1OSwgMTQyOTY2LCAxNDI5NzMsIDE0Mjk4MCwgMTQyOTg3LCAxNDI5OTQsIDE0MzAwMSwgMTQzMDA4LCAxNDMwMTUsIAotICAgIDE0MzAyMiwgMTQzMDI5LCAxNDMwMzYsIDE0MzA0MywgMTQzMDQ4LCAxNDMwNTcsIDE0MzA2NiwgMTQzMDc1LCAxNDMwODIsIAotICAgIDE0MzA4OSwgMTQzMDk2LCAxNDMxMDMsIDE0MzExMCwgMTQzMTE3LCAxNDMxMjQsIDE0MzEzMSwgMTQzMTQwLCAxNDMxNDksIAotICAgIDE0MzE1OCwgMTQzMTY3LCAxNDMxNzYsIDE0MzE4NSwgMTQzMTk0LCAxNDMyMDMsIDE0MzIxMiwgMTQzMjIxLCAxNDMyMzAsIAotICAgIDE0MzIzOSwgMTQzMjQ4LCAxNDMyNTQsIDE0MzI2MiwgMTQzMjY4LCAxNDMyNzgsIDE0MzI4MywgMTQzMjkyLCAxNDMzMDEsIAotICAgIDE0MzMxMCwgMTQzMzIxLCAxNDMzMjYsIDE0MzMzMywgMTQzMzQwLCAxNDMzNDcsIDE0MzM1MiwgMTQzMzU4LCAxNDMzNjQsIAotICAgIDE0MzM3MCwgMTQzMzc3LCAxNDMzODQsIDE0MzM5MSwgMTQzMzk4LCAxNDM0MDUsIDE0MzQxMiwgMTQzNDE5LCAxNDM0MjYsIAotICAgIDE0MzQzMywgMTQzNDQwLCAxNDM0NDcsIDE0MzQ1NCwgMTQzNDU5LCAxNDM0NjgsIDE0MzQ3NywgMTQzNDg2LCAxNDM0OTUsIAotICAgIDE0MzUwNCwgMTQzNTEzLCAxNDM1MjIsIDE0MzUzMSwgMTQzNTQyLCAxNDM1NTMsIDE0MzU2MCwgMTQzNTY3LCAxNDM1NzQsIAotICAgIDE0MzU4MSwgMTQzNTg4LCAxNDM1OTUsIDE0MzYwMywgMTQzNjEzLCAxNDM2MjMsIDE0MzYzMywgMTQzNjQ0LCAxNDM2NTUsIAotICAgIDE0MzY2NiwgMTQzNjc1LCAxNDM2ODQsIDE0MzY5MywgMTQzNjk4LCAxNDM3MDMsIDE0MzcwOCwgMTQzNzEzLCAxNDM3MjQsIAotICAgIDE0MzczNSwgMTQzNzQ2LCAxNDM3NTcsIDE0Mzc2OCwgMTQzNzc4LCAxNDM3ODksIDE0Mzc5OCwgMTQzODA3LCAxNDM4MTYsIAotICAgIDE0MzgyNSwgMTQzODM0LCAxNDM4NDIsIDE0Mzg1MSwgMTQzODYyLCAxNDM4NzMsIDE0Mzg4NCwgMTQzODk1LCAxNDM5MDYsIAotICAgIDE0MzkxOCwgMTQzOTMxLCAxNDM5NDMsIDE0Mzk1NiwgMTQzOTY4LCAxNDM5ODEsIDE0Mzk5MywgMTQ0MDA2LCAxNDQwMTcsIAotICAgIDE0NDAyOCwgMTQ0MDM3LCAxNDQwNDUsIDE0NDA1NCwgMTQ0MDY1LCAxNDQwNzYsIDE0NDA4OCwgMTQ0MTAxLCAxNDQxMTUsIAotICAgIDE0NDEzMCwgMTQ0MTQyLCAxNDQxNTUsIDE0NDE2NywgMTQ0MTgwLCAxNDQxOTEsIDE0NDIwMiwgMTQ0MjExLCAxNDQyMTksIAotICAgIDE0NDIyOCwgMTQ0MjM1LCAxNDQyNDIsIDE0NDI0OSwgMTQ0MjU2LCAxNDQyNjMsIDE0NDI3MCwgMTQ0Mjc3LCAxNDQyODQsIAotICAgIDE0NDI5MSwgMTQ0Mjk4LCAxNDQzMDMsIDE0NDMwOCwgMTQ0MzEzLCAxNDQzMjAsIDE0NDMzMCwgMTQ0MzQxLCAxNDQzNTEsIAotICAgIDE0NDM2MiwgMTQ0Mzc2LCAxNDQzOTEsIDE0NDQwNiwgMTQ0NDIwLCAxNDQ0MzUsIDE0NDQ1MCwgMTQ0NDYxLCAxNDQ0NzIsIAotICAgIDE0NDQ4NSwgMTQ0NDk4LCAxNDQ1MDcsIDE0NDUxNiwgMTQ0NTI5LCAxNDQ1NDIsIDE0NDU0OSwgMTQ0NTU2LCAxNDQ1NjEsIAotICAgIDE0NDU2NiwgMTQ0NTcxLCAxNDQ1NzYsIDE0NDU4MSwgMTQ0NTg4LCAxNDQ1OTcsIDE0NDYwMiwgMTQ0NjA1LCAxNDQ2MTAsIAotICAgIDE0NDYxNywgMTQ0NjI0LCAxNDQ2MzEsIDE0NDYzOCwgMTQ0NjQ1LCAxNDQ2NTIsIDE0NDY2NSwgMTQ0Njc5LCAxNDQ2OTQsIAotICAgIDE0NDcwMSwgMTQ0NzA4LCAxNDQ3MTUsIDE0NDcyNCwgMTQ0NzMyLCAxNDQ3NDAsIDE0NDc0OSwgMTQ0NzU0LCAxNDQ3NTksIAotICAgIDE0NDc2NCwgMTQ0NzY5LCAxNDQ3NzQsIDE0NDc3OSwgMTQ0Nzg2LCAxNDQ3OTMsIDE0NDc5OSwgMTQ0ODA2LCAxNDQ4MTIsIAotICAgIDE0NDgxOSwgMTQ0ODI0LCAxNDQ4MjksIDE0NDgzNCwgMTQ0ODM5LCAxNDQ4NDQsIDE0NDg1MSwgMTQ0ODU4LCAxNDQ4NjMsIAotICAgIDE0NDg3MCwgMTQ0ODc3LCAxNDQ4ODIsIDE0NDg4NywgMTQ0ODkyLCAxNDQ4OTcsIDE0NDkwMiwgMTQ0OTA3LCAxNDQ5MTQsIAotICAgIDE0NDkyMSwgMTQ0OTI4LCAxNDQ5MzEsIDE0NDkzNiwgMTQ0OTQxLCAxNDQ5NDYsIDE0NDk1MSwgMTQ0OTU4LCAxNDQ5NjUsIAotICAgIDE0NDk3MywgMTQ0OTgxLCAxNDQ5ODYsIDE0NDk5MSwgMTQ0OTk4LCAxNDUwMDUsIDE0NTAxMiwgMTQ1MDE3LCAxNDUwMjQsIAotICAgIDE0NTAzMSwgMTQ1MDM2LCAxNDUwNDMsIDE0NTA1MCwgMTQ1MDU2LCAxNDUwNjIsIDE0NTA2OCwgMTQ1MDc0LCAxNDUwODIsIAotICAgIDE0NTA5MCwgMTQ1MDk2LCAxNDUxMDQsIDE0NTExMiwgMTQ1MTE3LCAxNDUxMjQsIDE0NTEzMSwgMTQ1MTM2LCAxNDUxNDMsIAotICAgIDE0NTE1MCwgMTQ1MTU3LCAxNDUxNjUsIDE0NTE3MywgMTQ1MTc4LCAxNDUxODUsIDE0NTE5MiwgMTQ1MjAxLCAxNDUyMDgsIAotICAgIDE0NTIxNywgMTQ1MjI4LCAxNDUyMzcsIDE0NTI0NiwgMTQ1MjU1LCAxNDUyNjQsIDE0NTI2NywgMTQ1MjcyLCAxNDUyNzksIAotICAgIDE0NTI4OCwgMTQ1Mjk1LCAxNDUzMDQsIDE0NTMxMSwgMTQ1MzE2LCAxNDUzMjEsIDE0NTMyNCwgMTQ1MzI3LCAxNDUzMzAsIAotICAgIDE0NTMzNywgMTQ1MzQ0LCAxNDUzNTMsIDE0NTM2MiwgMTQ1MzcxLCAxNDUzNzgsIDE0NTM4NSwgMTQ1MzkwLCAxNDU0MDMsIAotICAgIDE0NTQwOCwgMTQ1NDEzLCAxNDU0MTgsIDE0NTQyMywgMTQ1NDI4LCAxNDU0MzMsIDE0NTQzOCwgMTQ1NDQzLCAxNDU0NDYsIAotICAgIDE0NTQ1MSwgMTQ1NDU2LCAxNDU0NjEsIDE0NTQ2NiwgMTQ1NDcxLCAxNDU0NzgsIDE0NTQ4MywgMTQ1NDkwLCAxNDU0OTMsIAotICAgIDE0NTQ5OCwgMTQ1NTAxLCAxNDU1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0NTUwNywgMTQ1NTEyLCAxNDU1MTcsIDE0NTUyMiwgMTQ1NTI3LCAwLCAxNDU1MzIsIDE0NTUzNywgMTQ1NTQyLCAKLSAgICAxNDU1NDcsIDE0NTU1MiwgMTQ1NTU3LCAxNDU1NjIsIDE0NTU2NywgMTQ1NTcyLCAxNDU1NzcsIDE0NTU4MiwgMTQ1NTg3LCAKLSAgICAxNDU1OTIsIDE0NTU5NywgMTQ1NjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU2MDcsIDE0NTYxNCwgMTQ1NjIwLCAKLSAgICAxNDU2MjcsIDE0NTYzNCwgMTQ1NjQxLCAxNDU2NDgsIDE0NTY1NSwgMTQ1NjYyLCAxNDU2NjksIDE0NTY3NiwgMTQ1NjgzLCAKLSAgICAxNDU2OTAsIDE0NTY5NywgMTQ1NzA0LCAxNDU3MTEsIDE0NTcxOCwgMTQ1NzI1LCAxNDU3MzIsIDE0NTczOSwgMTQ1NzQ2LCAKLSAgICAxNDU3NTMsIDE0NTc2MCwgMTQ1NzY3LCAxNDU3NzQsIDE0NTc4MSwgMTQ1Nzg4LCAxNDU3OTUsIDE0NTgwMiwgMTQ1ODA5LCAKLSAgICAxNDU4MTYsIDE0NTgyMywgMTQ1ODMwLCAxNDU4MzcsIDE0NTg0NCwgMTQ1ODUwLCAxNDU4NTYsIDE0NTg2MiwgMTQ1ODY5LCAKLSAgICAxNDU4NzUsIDE0NTg4MiwgMTQ1ODg4LCAxNDU4OTUsIDE0NTkwMiwgMTQ1OTA5LCAxNDU5MTYsIDE0NTkyMywgMTQ1OTMwLCAKLSAgICAxNDU5MzcsIDE0NTk0NCwgMTQ1OTUxLCAxNDU5NTgsIDE0NTk2NSwgMTQ1OTcyLCAxNDU5NzksIDE0NTk4NiwgMTQ1OTkzLCAKLSAgICAxNDYwMDAsIDE0NjAwNywgMTQ2MDE0LCAxNDYwMjEsIDE0NjAyOCwgMTQ2MDM2LCAxNDYwNDMsIDE0NjA1MCwgMTQ2MDU3LCAKLSAgICAxNDYwNjQsIDE0NjA3MSwgMTQ2MDc4LCAxNDYwODUsIDE0NjA5MiwgMTQ2MDk5LCAxNDYxMDYsIDE0NjExMywgMTQ2MTIwLCAKLSAgICAxNDYxMjYsIDE0NjEzMywgMTQ2MTQwLCAxNDYxNDcsIDE0NjE1NCwgMTQ2MTYxLCAxNDYxNjgsIDE0NjE3NSwgMTQ2MTgzLCAKLSAgICAxNDYxOTAsIDE0NjE5NiwgMTQ2MjAzLCAxNDYyMTAsIDE0NjIxNywgMTQ2MjI0LCAxNDYyMzEsIDE0NjIzOCwgMTQ2MjQ1LCAKLSAgICAxNDYyNTIsIDE0NjI1OSwgMTQ2MjY2LCAxNDYyNzMsIDE0NjI4MCwgMTQ2Mjg3LCAxNDYyOTQsIDE0NjMwMSwgMTQ2MzA4LCAKLSAgICAxNDYzMTUsIDE0NjMyMiwgMTQ2MzI5LCAxNDYzMzYsIDE0NjM0MiwgMTQ2MzQ5LCAxNDYzNTYsIDE0NjM2MywgMTQ2MzcwLCAKLSAgICAxNDYzNzcsIDE0NjM4NCwgMTQ2MzkxLCAxNDYzOTgsIDE0NjQwNSwgMTQ2NDEyLCAxNDY0MTksIDE0NjQyNiwgMTQ2NDMzLCAKLSAgICAxNDY0NDAsIDE0NjQ0NywgMTQ2NDU0LCAxNDY0NjEsIDE0NjQ2OCwgMTQ2NDc1LCAxNDY0ODIsIDE0NjQ4OSwgMTQ2NDk2LCAKLSAgICAxNDY1MDQsIDE0NjUxMiwgMTQ2NTIwLCAxNDY1MjcsIDE0NjUzNCwgMTQ2NTQxLCAxNDY1NDgsIDE0NjU1NSwgMTQ2NTYyLCAKLSAgICAxNDY1NjksIDE0NjU3NiwgMTQ2NTgzLCAxNDY1OTAsIDE0NjU5NiwgMTQ2NjAzLCAxNDY2MTAsIDE0NjYxNywgMTQ2NjI0LCAKLSAgICAxNDY2MzEsIDE0NjYzOCwgMTQ2NjQ1LCAxNDY2NTIsIDE0NjY1OSwgMTQ2NjY2LCAxNDY2NzMsIDE0NjY4MCwgMTQ2Njg3LCAKLSAgICAxNDY2OTQsIDE0NjcwMiwgMTQ2NzEwLCAxNDY3MTgsIDE0NjcyNSwgMTQ2NzMyLCAxNDY3MzksIDE0Njc0NiwgMTQ2NzUzLCAKLSAgICAxNDY3NjAsIDE0Njc2NywgMTQ2Nzc0LCAxNDY3ODEsIDE0Njc4OCwgMTQ2Nzk1LCAxNDY4MDIsIDE0NjgwOSwgMTQ2ODE2LCAKLSAgICAxNDY4MjMsIDE0NjgzMCwgMTQ2ODM3LCAxNDY4NDQsIDE0Njg1MSwgMTQ2ODU4LCAxNDY4NjUsIDE0Njg3MiwgMTQ2ODc5LCAKLSAgICAxNDY4ODYsIDE0Njg5MywgMTQ2OTAwLCAxNDY5MDcsIDE0NjkxNCwgMTQ2OTIxLCAxNDY5MjgsIDE0NjkzNSwgMTQ2OTQyLCAKLSAgICAxNDY5NDksIDE0Njk1NiwgMTQ2OTYzLCAxNDY5NzAsIDE0Njk3NywgMCwgMCwgMTQ2OTg0LCAxNDY5ODgsIDE0Njk5MiwgCi0gICAgMTQ2OTk2LCAxNDcwMDAsIDE0NzAwNCwgMTQ3MDA4LCAxNDcwMTMsIDE0NzAxNywgMTQ3MDIyLCAxNDcwMjgsIDE0NzAzNCwgCi0gICAgMTQ3MDQwLCAxNDcwNDYsIDE0NzA1NCwgMTQ3MDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDcwNjgsIDE0NzA3MiwgMTQ3MDc2LCAxNDcwODAsIDAsIDE0NzA4NCwgMTQ3MDg4LCAxNDcwOTIsIAotICAgIDE0NzA5NiwgMTQ3MTAwLCAxNDcxMDQsIDE0NzEwOCwgMTQ3MTEyLCAxNDcxMTYsIDE0NzEyMCwgMTQ3MTI0LCAxNDcxMjgsIAotICAgIDE0NzEzMiwgMTQ3MTM2LCAxNDcxNDAsIDE0NzE0NCwgMTQ3MTQ4LCAxNDcxNTIsIDE0NzE1NiwgMTQ3MTYwLCAxNDcxNjQsIAotICAgIDE0NzE2OCwgMTQ3MTcyLCAxNDcxNzYsIDE0NzE4MiwgMTQ3MTg4LCAxNDcxOTQsIDAsIDE0NzIwMCwgMTQ3MjA1LCAwLCAKLSAgICAxNDcyMTAsIDAsIDAsIDE0NzIxNSwgMCwgMTQ3MjIwLCAxNDcyMjUsIDE0NzIzMCwgMTQ3MjM1LCAxNDcyNDAsIDE0NzI0NSwgCi0gICAgMTQ3MjUwLCAxNDcyNTUsIDE0NzI2MCwgMTQ3MjY1LCAwLCAxNDcyNzAsIDE0NzI3NSwgMTQ3MjgwLCAxNDcyODUsIDAsIAotICAgIDE0NzI5MCwgMCwgMTQ3Mjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDczMDAsIDAsIDAsIDAsIDAsIDE0NzMwNiwgMCwgCi0gICAgMTQ3MzEyLCAwLCAxNDczMTgsIDAsIDE0NzMyNCwgMTQ3MzMwLCAxNDczMzYsIDAsIDE0NzM0MiwgMTQ3MzQ4LCAwLCAKLSAgICAxNDczNTQsIDAsIDAsIDE0NzM2MCwgMCwgMTQ3MzY2LCAwLCAxNDczNzIsIDAsIDE0NzM3OCwgMCwgMTQ3Mzg2LCAwLCAKLSAgICAxNDczOTQsIDE0NzQwMCwgMCwgMTQ3NDA2LCAwLCAwLCAxNDc0MTIsIDE0NzQxOCwgMTQ3NDI0LCAxNDc0MzAsIDAsIAotICAgIDE0NzQzNiwgMTQ3NDQyLCAxNDc0NDgsIDE0NzQ1NCwgMTQ3NDYwLCAxNDc0NjYsIDE0NzQ3MiwgMCwgMTQ3NDc4LCAKLSAgICAxNDc0ODQsIDE0NzQ5MCwgMTQ3NDk2LCAwLCAxNDc1MDIsIDE0NzUwOCwgMTQ3NTE0LCAxNDc1MjAsIDAsIDE0NzUyOCwgMCwgCi0gICAgMTQ3NTM2LCAxNDc1NDIsIDE0NzU0OCwgMTQ3NTU0LCAxNDc1NjAsIDE0NzU2NiwgMTQ3NTcyLCAxNDc1NzgsIDE0NzU4NCwgCi0gICAgMTQ3NTkwLCAwLCAxNDc1OTYsIDE0NzYwMiwgMTQ3NjA4LCAxNDc2MTQsIDE0NzYyMCwgMTQ3NjI2LCAxNDc2MzIsIAotICAgIDE0NzYzOCwgMTQ3NjQ0LCAxNDc2NTAsIDE0NzY1NiwgMTQ3NjYyLCAxNDc2NjgsIDE0NzY3NCwgMTQ3NjgwLCAxNDc2ODYsIAotICAgIDE0NzY5MiwgMCwgMCwgMCwgMCwgMCwgMTQ3Njk4LCAxNDc3MDMsIDE0NzcwOCwgMCwgMTQ3NzEzLCAxNDc3MTgsIDE0NzcyMywgCi0gICAgMTQ3NzI4LCAxNDc3MzMsIDAsIDE0NzczOCwgMTQ3NzQzLCAxNDc3NDgsIDE0Nzc1MywgMTQ3NzU4LCAxNDc3NjMsIAotICAgIDE0Nzc2OCwgMTQ3NzczLCAxNDc3NzgsIDE0Nzc4MywgMTQ3Nzg4LCAxNDc3OTMsIDE0Nzc5OCwgMTQ3ODAzLCAxNDc4MDgsIAotICAgIDE0NzgxMywgMTQ3ODE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MTIsIDE1MDYxOSwgMTUwNjI1LCAxNTA2MzIsIDE1MDYzOSwgCisgICAgMTUwNjQ2LCAxNTA2NTMsIDE1MDY2MCwgMTUwNjY3LCAxNTA2NzQsIDE1MDY4MSwgMTUwNjg4LCAxNTA2OTUsIDE1MDcwMiwgCisgICAgMTUwNzA5LCAxNTA3MTYsIDE1MDcyMywgMTUwNzMwLCAxNTA3MzcsIDE1MDc0NCwgMTUwNzUxLCAxNTA3NTgsIDE1MDc2NSwgCisgICAgMTUwNzcyLCAxNTA3NzksIDE1MDc4NiwgMTUwNzkzLCAxNTA4MDAsIDE1MDgwNywgMTUwODE0LCAxNTA4MjEsIDE1MDgyOCwgCisgICAgMTUwODM1LCAxNTA4NDIsIDE1MDg0OSwgMTUwODU1LCAxNTA4NjEsIDE1MDg2NywgMTUwODc0LCAxNTA4ODAsIDE1MDg4NywgCisgICAgMTUwODkzLCAxNTA5MDAsIDE1MDkwNywgMTUwOTE0LCAxNTA5MjEsIDE1MDkyOCwgMTUwOTM1LCAxNTA5NDIsIDE1MDk0OSwgCisgICAgMTUwOTU2LCAxNTA5NjMsIDE1MDk3MCwgMTUwOTc3LCAxNTA5ODQsIDE1MDk5MSwgMTUwOTk3LCAxNTEwMDQsIDE1MTAxMSwgCisgICAgMTUxMDE4LCAxNTEwMjUsIDE1MTAzMiwgMTUxMDQwLCAxNTEwNDcsIDE1MTA1NCwgMTUxMDYxLCAxNTEwNjgsIDE1MTA3NSwgCisgICAgMTUxMDgyLCAxNTEwODksIDE1MTA5NiwgMTUxMTAzLCAxNTExMTAsIDE1MTExNywgMTUxMTI0LCAxNTExMzAsIDE1MTEzNywgCisgICAgMTUxMTQ0LCAxNTExNTEsIDE1MTE1OCwgMTUxMTY1LCAxNTExNzIsIDE1MTE3OSwgMTUxMTg3LCAxNTExOTQsIDE1MTIwMCwgCisgICAgMTUxMjA3LCAxNTEyMTQsIDE1MTIyMSwgMTUxMjI4LCAxNTEyMzUsIDE1MTI0MiwgMTUxMjQ5LCAxNTEyNTYsIDE1MTI2MywgCisgICAgMTUxMjcwLCAxNTEyNzcsIDE1MTI4NCwgMTUxMjkxLCAxNTEyOTgsIDE1MTMwNSwgMTUxMzEyLCAxNTEzMTksIDE1MTMyNiwgCisgICAgMTUxMzMzLCAxNTEzNDAsIDE1MTM0NiwgMTUxMzUzLCAxNTEzNjAsIDE1MTM2NywgMTUxMzc0LCAxNTEzODEsIDE1MTM4OCwgCisgICAgMTUxMzk1LCAxNTE0MDIsIDE1MTQwOSwgMTUxNDE2LCAxNTE0MjMsIDE1MTQzMCwgMTUxNDM3LCAxNTE0NDQsIDE1MTQ1MSwgCisgICAgMTUxNDU4LCAxNTE0NjUsIDE1MTQ3MiwgMTUxNDc5LCAxNTE0ODYsIDE1MTQ5MywgMTUxNTAwLCAxNTE1MDgsIDE1MTUxNiwgCisgICAgMTUxNTI0LCAxNTE1MzEsIDE1MTUzOCwgMTUxNTQ1LCAxNTE1NTIsIDE1MTU1OSwgMTUxNTY2LCAxNTE1NzMsIDE1MTU4MCwgCisgICAgMTUxNTg3LCAxNTE1OTQsIDE1MTYwMCwgMTUxNjA3LCAxNTE2MTQsIDE1MTYyMSwgMTUxNjI4LCAxNTE2MzUsIDE1MTY0MiwgCisgICAgMTUxNjQ5LCAxNTE2NTYsIDE1MTY2MywgMTUxNjcwLCAxNTE2NzcsIDE1MTY4NCwgMTUxNjkxLCAxNTE2OTgsIDE1MTcwNiwgCisgICAgMTUxNzE0LCAxNTE3MjIsIDE1MTcyOSwgMTUxNzM2LCAxNTE3NDMsIDE1MTc1MCwgMTUxNzU3LCAxNTE3NjQsIDE1MTc3MSwgCisgICAgMTUxNzc4LCAxNTE3ODUsIDE1MTc5MiwgMTUxNzk5LCAxNTE4MDYsIDE1MTgxMywgMTUxODIwLCAxNTE4MjcsIDE1MTgzNCwgCisgICAgMTUxODQxLCAxNTE4NDgsIDE1MTg1NSwgMTUxODYyLCAxNTE4NjksIDE1MTg3NiwgMTUxODgzLCAxNTE4OTAsIDE1MTg5NywgCisgICAgMTUxOTA0LCAxNTE5MTEsIDE1MTkxOCwgMTUxOTI1LCAxNTE5MzIsIDE1MTkzOSwgMTUxOTQ2LCAxNTE5NTMsIDE1MTk2MCwgCisgICAgMTUxOTY3LCAxNTE5NzQsIDE1MTk4MSwgMCwgMCwgMTUxOTg4LCAxNTE5OTIsIDE1MTk5NiwgMTUyMDAwLCAxNTIwMDQsIAorICAgIDE1MjAwOCwgMTUyMDEyLCAxNTIwMTcsIDE1MjAyMSwgMTUyMDI2LCAxNTIwMzIsIDE1MjAzOCwgMTUyMDQ0LCAxNTIwNTAsIAorICAgIDE1MjA1OCwgMTUyMDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTIwNzIsIAorICAgIDE1MjA3OCwgMTUyMDg0LCAxNTIwOTAsIDE1MjA5NiwgMTUyMTAyLCAxNTIxMDgsIDE1MjExNCwgMTUyMTIwLCAxNTIxMjYsIAorICAgIDE1MjEzMSwgMTUyMTM3LCAxNTIxNDIsIDE1MjE0NywgMTUyMTUzLCAxNTIxNTksIDE1MjE2NSwgMTUyMTcxLCAxNTIxNzcsIAorICAgIDE1MjE4MiwgMTUyMTg3LCAxNTIxOTMsIDE1MjE5OSwgMTUyMjA0LCAxNTIyMTAsIDE1MjIxNiwgMTUyMjIyLCAxNTIyMjgsIAorICAgIDE1MjIzNCwgMTUyMjQwLCAxNTIyNDYsIDE1MjI1MiwgMTUyMjU4LCAxNTIyNjQsIDE1MjI3MCwgMTUyMjc2LCAxNTIyODIsIAorICAgIDE1MjI4OCwgMTUyMjk0LCAxNTIzMDAsIDE1MjMwNiwgMTUyMzEyLCAxNTIzMTgsIDE1MjMyNCwgMTUyMzI5LCAxNTIzMzUsIAorICAgIDE1MjM0MCwgMTUyMzQ1LCAxNTIzNTEsIDE1MjM1NywgMTUyMzYzLCAxNTIzNjksIDE1MjM3NSwgMTUyMzgwLCAxNTIzODUsIAorICAgIDE1MjM5MSwgMTUyMzk3LCAxNTI0MDIsIDE1MjQwOCwgMTUyNDE0LCAxNTI0MjAsIDE1MjQyNiwgMTUyNDMyLCAxNTI0MzgsIAorICAgIDE1MjQ0NCwgMTUyNDUwLCAxNTI0NTYsIDE1MjQ2MiwgMTUyNDY4LCAxNTI0NzQsIDE1MjQ3OSwgMTUyNDg0LCAxNTI0ODgsIAorICAgIDE1MjQ5MywgMTUyNTAwLCAwLCAwLCAwLCAwLCAwLCAxNTI1MDQsIDE1MjUwOSwgMTUyNTEzLCAxNTI1MTcsIDE1MjUyMSwgCisgICAgMTUyNTI1LCAxNTI1MjksIDE1MjUzMywgMTUyNTM4LCAxNTI1NDIsIDAsIDAsIDAsIDAsIDE1MjU0NywgMTUyNTUzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc4MjMsIDE0NzgzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQ3ODQxLCAxNDc4NDgsIDE0Nzg1NSwgMTQ3ODYyLCAxNDc4NjgsIDE0Nzg3NSwgMTQ3ODgyLCAKLSAgICAxNDc4ODgsIDE0Nzg5NSwgMTQ3OTAyLCAxNDc5MDksIDE0NzkxNywgMTQ3OTI1LCAxNDc5MzMsIDE0Nzk0MSwgMTQ3OTQ5LCAKLSAgICAxNDc5NTcsIDE0Nzk2NCwgMTQ3OTcxLCAxNDc5NzgsIDE0Nzk4NiwgMTQ3OTk0LCAxNDgwMDIsIDE0ODAxMCwgMTQ4MDE4LCAKLSAgICAxNDgwMjYsIDE0ODAzMywgMTQ4MDQwLCAxNDgwNDcsIDE0ODA1NSwgMTQ4MDYzLCAxNDgwNzEsIDE0ODA3OSwgMTQ4MDg3LCAKLSAgICAxNDgwOTUsIDE0ODEwMCwgMTQ4MTA1LCAxNDgxMTAsIDE0ODExNSwgMTQ4MTIwLCAxNDgxMjUsIDE0ODEzMCwgMTQ4MTM1LCAKLSAgICAxNDgxNDAsIDAsIDAsIDAsIDAsIDE0ODE0NSwgMTQ4MTUxLCAxNDgxNTUsIDE0ODE1OSwgMTQ4MTYzLCAxNDgxNjcsIAotICAgIDE0ODE3MSwgMTQ4MTc1LCAxNDgxNzksIDE0ODE4MywgMTQ4MTg3LCAxNDgxOTEsIDE0ODE5NSwgMTQ4MTk5LCAxNDgyMDMsIAotICAgIDE0ODIwNywgMTQ4MjExLCAxNDgyMTUsIDE0ODIxOSwgMTQ4MjIzLCAxNDgyMjcsIDE0ODIzMSwgMTQ4MjM1LCAxNDgyMzksIAotICAgIDE0ODI0MywgMTQ4MjQ3LCAxNDgyNTEsIDE0ODI1NSwgMTQ4MjU5LCAxNDgyNjMsIDE0ODI2NywgMTQ4MjcxLCAxNDgyNzUsIAotICAgIDE0ODI3OSwgMTQ4MjgzLCAxNDgyODcsIDE0ODI5MSwgMTQ4Mjk1LCAxNDgyOTksIDE0ODMwMywgMTQ4MzA3LCAxNDgzMTEsIAotICAgIDE0ODMxNSwgMTQ4MzE5LCAxNDgzMjMsIDE0ODMyNywgMTQ4MzMxLCAxNDgzMzUsIDE0ODMzOSwgMTQ4MzQzLCAxNDgzNDcsIAotICAgIDE0ODM1MiwgMTQ4MzU2LCAxNDgzNjAsIDE0ODM2NCwgMTQ4MzY4LCAxNDgzNzIsIDE0ODM3NiwgMTQ4MzgwLCAxNDgzODQsIAotICAgIDE0ODM4OCwgMTQ4MzkyLCAxNDgzOTYsIDE0ODQwMCwgMTQ4NDA0LCAxNDg0MDgsIDE0ODQxMiwgMTQ4NDE2LCAxNDg0MjAsIAotICAgIDE0ODQyNCwgMTQ4NDI4LCAxNDg0MzIsIDE0ODQzNiwgMTQ4NDQwLCAxNDg0NDQsIDE0ODQ0OCwgMTQ4NDUyLCAxNDg0NTYsIAotICAgIDE0ODQ2MCwgMTQ4NDY0LCAxNDg0NjgsIDE0ODQ3MiwgMTQ4NDc2LCAxNDg0ODAsIDE0ODQ4NCwgMTQ4NDg4LCAxNDg0OTIsIAotICAgIDE0ODQ5NiwgMTQ4NTAwLCAxNDg1MDQsIDE0ODUwOCwgMTQ4NTEyLCAxNDg1MTYsIDE0ODUyMCwgMTQ4NTI0LCAxNDg1MjgsIAotICAgIDE0ODUzMiwgMTQ4NTM2LCAxNDg1NDAsIDE0ODU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQ4NTQ4LCAxNDg1NTQsIDE0ODU2MywgMTQ4NTcxLCAxNDg1NzksIDE0ODU4OCwgMTQ4NTk3LCAxNDg2MDYsIDE0ODYxNSwgCi0gICAgMTQ4NjI0LCAxNDg2MzMsIDE0ODY0MiwgMTQ4NjUxLCAxNDg2NjAsIDE0ODY2OSwgMCwgMCwgMTQ4Njc4LCAxNDg2ODcsIAotICAgIDE0ODY5NSwgMTQ4NzAzLCAxNDg3MTIsIDE0ODcyMSwgMTQ4NzMwLCAxNDg3MzksIDE0ODc0OCwgMTQ4NzU3LCAxNDg3NjYsIAotICAgIDE0ODc3NSwgMTQ4Nzg0LCAxNDg3OTMsIDE0ODgwMiwgMCwgMTQ4ODEwLCAxNDg4MTksIDE0ODgyNywgMTQ4ODM1LCAKLSAgICAxNDg4NDQsIDE0ODg1MywgMTQ4ODYyLCAxNDg4NzEsIDE0ODg4MCwgMTQ4ODg5LCAxNDg4OTgsIDE0ODkwNywgMTQ4OTE2LCAKLSAgICAxNDg5MjUsIDE0ODkzNCwgMCwgMTQ4OTQxLCAxNDg5NTAsIDE0ODk1OCwgMTQ4OTY2LCAxNDg5NzUsIDE0ODk4NCwgCi0gICAgMTQ4OTkzLCAxNDkwMDIsIDE0OTAxMSwgMTQ5MDIwLCAxNDkwMjksIDE0OTAzOCwgMTQ5MDQ3LCAxNDkwNTYsIDE0OTA2NSwgCi0gICAgMTQ5MDcyLCAxNDkwNzgsIDE0OTA4NCwgMTQ5MDkwLCAxNDkwOTYsIDE0OTEwMiwgMTQ5MTA4LCAxNDkxMTQsIDE0OTEyMCwgCi0gICAgMTQ5MTI2LCAxNDkxMzIsIDE0OTEzOCwgMTQ5MTQ0LCAxNDkxNTAsIDE0OTE1NiwgMTQ5MTYyLCAxNDkxNjgsIDE0OTE3NCwgCi0gICAgMTQ5MTgwLCAxNDkxODYsIDE0OTE5MiwgMTQ5MTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDkyMDQsIAotICAgIDE0OTIxMSwgMTQ5MjE2LCAxNDkyMjAsIDE0OTIyNCwgMTQ5MjI4LCAxNDkyMzMsIDE0OTIzOCwgMTQ5MjQzLCAxNDkyNDgsIAotICAgIDE0OTI1MywgMTQ5MjU4LCAxNDkyNjUsIDAsIDAsIDAsIDE0OTI3MywgMTQ5Mjc4LCAxNDkyODQsIDE0OTI5MCwgMTQ5Mjk2LCAKLSAgICAxNDkzMDEsIDE0OTMwNywgMTQ5MzEzLCAxNDkzMTksIDE0OTMyNCwgMTQ5MzMwLCAxNDkzMzYsIDE0OTM0MSwgMTQ5MzQ3LCAKLSAgICAxNDkzNTMsIDE0OTM1OCwgMTQ5MzY0LCAxNDkzNzAsIDE0OTM3NSwgMTQ5MzgwLCAxNDkzODYsIDE0OTM5MSwgMTQ5Mzk3LCAKLSAgICAxNDk0MDMsIDE0OTQwOSwgMTQ5NDE1LCAxNDk0MjEsIDE0OTQzMSwgMTQ5NDM4LCAxNDk0NDQsIDE0OTQ0NywgMCwgCi0gICAgMTQ5NDUwLCAxNDk0NTUsIDE0OTQ2MSwgMTQ5NDY3LCAxNDk0NzMsIDE0OTQ3OCwgMTQ5NDg0LCAxNDk0OTAsIDE0OTQ5NiwgCi0gICAgMTQ5NTAxLCAxNDk1MDcsIDE0OTUxMywgMTQ5NTE4LCAxNDk1MjQsIDE0OTUzMCwgMTQ5NTM1LCAxNDk1NDEsIDE0OTU0NywgCi0gICAgMTQ5NTUyLCAxNDk1NTcsIDE0OTU2MywgMTQ5NTY4LCAxNDk1NzQsIDE0OTU4MCwgMTQ5NTg2LCAxNDk1OTIsIDE0OTU5OCwgCi0gICAgMTQ5NjAxLCAxNDk2MDQsIDE0OTYwNywgMTQ5NjEwLCAxNDk2MTMsIDE0OTYxNiwgMTQ5NjIyLCAxNDk2MjksIDE0OTYzNiwgCi0gICAgMTQ5NjQzLCAxNDk2NDksIDE0OTY1NiwgMTQ5NjYzLCAxNDk2NzAsIDE0OTY3NiwgMTQ5NjgzLCAxNDk2OTAsIDE0OTY5NiwgCi0gICAgMTQ5NzAzLCAxNDk3MTAsIDE0OTcxNiwgMTQ5NzIzLCAxNDk3MzAsIDE0OTczNiwgMTQ5NzQyLCAxNDk3NDksIDE0OTc1NSwgCi0gICAgMTQ5NzYyLCAxNDk3NjksIDE0OTc3NiwgMTQ5NzgzLCAxNDk3OTAsIDE0OTc5NSwgMCwgMCwgMCwgMCwgMTQ5ODAwLCAKLSAgICAxNDk4MDYsIDE0OTgxMywgMTQ5ODIwLCAxNDk4MjcsIDE0OTgzMywgMTQ5ODQwLCAxNDk4NDcsIDE0OTg1NCwgMTQ5ODYwLCAKLSAgICAxNDk4NjcsIDE0OTg3NCwgMTQ5ODgwLCAxNDk4ODcsIDE0OTg5NCwgMTQ5OTAwLCAxNDk5MDcsIDE0OTkxNCwgMTQ5OTIwLCAKLSAgICAxNDk5MjYsIDE0OTkzMywgMTQ5OTM5LCAxNDk5NDYsIDE0OTk1MywgMTQ5OTYwLCAxNDk5NjcsIDE0OTk3NCwgMTQ5OTgzLCAKLSAgICAxNDk5ODcsIDE0OTk5MCwgMTQ5OTk0LCAxNDk5OTgsIDE1MDAwMiwgMTUwMDA1LCAxNTAwMDgsIDE1MDAxMSwgMTUwMDE0LCAKLSAgICAxNTAwMTcsIDE1MDAyMCwgMTUwMDIzLCAxNTAwMjYsIDE1MDAyOSwgMTUwMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAwMzgsIDE1MDA0NSwgCi0gICAgMTUwMDUzLCAxNTAwNjEsIDE1MDA2OSwgMTUwMDc2LCAxNTAwODQsIDE1MDA5MiwgMTUwMTAwLCAxNTAxMDcsIDE1MDExNSwgCi0gICAgMTUwMTIzLCAxNTAxMzAsIDE1MDEzOCwgMTUwMTQ2LCAxNTAxNTMsIDE1MDE2MSwgMTUwMTY5LCAxNTAxNzYsIDE1MDE4MywgCi0gICAgMTUwMTkxLCAxNTAxOTgsIDE1MDIwNiwgMTUwMjE0LCAxNTAyMjIsIDE1MDIzMCwgMTUwMjM4LCAxNTAyNDIsIDE1MDI0NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMjUwLCAxNTAyNTYsIDE1MDI2MiwgMTUwMjY4LCAKLSAgICAxNTAyNzIsIDE1MDI3OCwgMTUwMjg0LCAxNTAyOTAsIDE1MDI5NiwgMTUwMzAyLCAxNTAzMDgsIDE1MDMxNCwgMTUwMzIwLCAKLSAgICAxNTAzMjYsIDE1MDMzMiwgMTUwMzM4LCAxNTAzNDQsIDE1MDM1MCwgMTUwMzU2LCAxNTAzNjIsIDE1MDM2OCwgMTUwMzc0LCAKLSAgICAxNTAzODAsIDE1MDM4NiwgMTUwMzkyLCAxNTAzOTgsIDE1MDQwNCwgMTUwNDEwLCAxNTA0MTYsIDE1MDQyMiwgMTUwNDI4LCAKLSAgICAxNTA0MzQsIDE1MDQ0MCwgMTUwNDQ2LCAxNTA0NTIsIDE1MDQ1OCwgMTUwNDY0LCAxNTA0NzAsIDE1MDQ3NiwgMTUwNDgyLCAKLSAgICAxNTA0ODgsIDE1MDQ5NCwgMTUwNTAwLCAwLCAwLCAwLCAwLCAwLCAxNTA1MDYsIDE1MDUxNywgMTUwNTI4LCAxNTA1MzksIAotICAgIDE1MDU1MCwgMTUwNTYxLCAxNTA1NzIsIDE1MDU4MywgMTUwNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MDUsIAotICAgIDE1MDYwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyNTU5LCAxNTI1NjMsIDE1MjU2NywgMTUyNTcxLCAKKyAgICAwLCAxNTI1NzUsIDE1MjU3OSwgMTUyNTgzLCAxNTI1ODcsIDE1MjU5MSwgMTUyNTk1LCAxNTI1OTksIDE1MjYwMywgCisgICAgMTUyNjA3LCAxNTI2MTEsIDE1MjYxNSwgMTUyNjE5LCAxNTI2MjMsIDE1MjYyNywgMTUyNjMxLCAxNTI2MzUsIDE1MjYzOSwgCisgICAgMTUyNjQzLCAxNTI2NDcsIDE1MjY1MSwgMTUyNjU1LCAxNTI2NTksIDE1MjY2MywgMTUyNjY3LCAxNTI2NzMsIDE1MjY3OSwgCisgICAgMTUyNjg1LCAwLCAxNTI2OTEsIDE1MjY5NiwgMCwgMTUyNzAxLCAwLCAwLCAxNTI3MDYsIDAsIDE1MjcxMSwgMTUyNzE2LCAKKyAgICAxNTI3MjEsIDE1MjcyNiwgMTUyNzMxLCAxNTI3MzYsIDE1Mjc0MSwgMTUyNzQ2LCAxNTI3NTEsIDE1Mjc1NiwgMCwgCisgICAgMTUyNzYxLCAxNTI3NjYsIDE1Mjc3MSwgMTUyNzc2LCAwLCAxNTI3ODEsIDAsIDE1Mjc4NiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUyNzkxLCAwLCAwLCAwLCAwLCAxNTI3OTcsIDAsIDE1MjgwMywgMCwgMTUyODA5LCAwLCAxNTI4MTUsIDE1MjgyMSwgCisgICAgMTUyODI3LCAwLCAxNTI4MzMsIDE1MjgzOSwgMCwgMTUyODQ1LCAwLCAwLCAxNTI4NTEsIDAsIDE1Mjg1NywgMCwgMTUyODYzLCAKKyAgICAwLCAxNTI4NjksIDAsIDE1Mjg3NywgMCwgMTUyODg1LCAxNTI4OTEsIDAsIDE1Mjg5NywgMCwgMCwgMTUyOTAzLCAxNTI5MDksIAorICAgIDE1MjkxNSwgMTUyOTIxLCAwLCAxNTI5MjcsIDE1MjkzMywgMTUyOTM5LCAxNTI5NDUsIDE1Mjk1MSwgMTUyOTU3LCAKKyAgICAxNTI5NjMsIDAsIDE1Mjk2OSwgMTUyOTc1LCAxNTI5ODEsIDE1Mjk4NywgMCwgMTUyOTkzLCAxNTI5OTksIDE1MzAwNSwgCisgICAgMTUzMDExLCAwLCAxNTMwMTksIDAsIDE1MzAyNywgMTUzMDMzLCAxNTMwMzksIDE1MzA0NSwgMTUzMDUxLCAxNTMwNTcsIAorICAgIDE1MzA2MywgMTUzMDY5LCAxNTMwNzUsIDE1MzA4MSwgMCwgMTUzMDg3LCAxNTMwOTMsIDE1MzA5OSwgMTUzMTA1LCAKKyAgICAxNTMxMTEsIDE1MzExNywgMTUzMTIzLCAxNTMxMjksIDE1MzEzNSwgMTUzMTQxLCAxNTMxNDcsIDE1MzE1MywgMTUzMTU5LCAKKyAgICAxNTMxNjUsIDE1MzE3MSwgMTUzMTc3LCAxNTMxODMsIDAsIDAsIDAsIDAsIDAsIDE1MzE4OSwgMTUzMTk0LCAxNTMxOTksIDAsIAorICAgIDE1MzIwNCwgMTUzMjA5LCAxNTMyMTQsIDE1MzIxOSwgMTUzMjI0LCAwLCAxNTMyMjksIDE1MzIzNCwgMTUzMjM5LCAKKyAgICAxNTMyNDQsIDE1MzI0OSwgMTUzMjU0LCAxNTMyNTksIDE1MzI2NCwgMTUzMjY5LCAxNTMyNzQsIDE1MzI3OSwgMTUzMjg0LCAKKyAgICAxNTMyODksIDE1MzI5NCwgMTUzMjk5LCAxNTMzMDQsIDE1MzMwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzE0LCAxNTMzMjQsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzMzMiwgMTUzMzM5LCAxNTMzNDYsIDE1MzM1MywgCisgICAgMTUzMzU5LCAxNTMzNjYsIDE1MzM3MywgMTUzMzc5LCAxNTMzODYsIDE1MzM5MywgMTUzNDAwLCAxNTM0MDgsIDE1MzQxNiwgCisgICAgMTUzNDI0LCAxNTM0MzIsIDE1MzQ0MCwgMTUzNDQ4LCAxNTM0NTUsIDE1MzQ2MiwgMTUzNDY5LCAxNTM0NzcsIDE1MzQ4NSwgCisgICAgMTUzNDkzLCAxNTM1MDEsIDE1MzUwOSwgMTUzNTE3LCAxNTM1MjQsIDE1MzUzMSwgMTUzNTM4LCAxNTM1NDYsIDE1MzU1NCwgCisgICAgMTUzNTYyLCAxNTM1NzAsIDE1MzU3OCwgMTUzNTg2LCAxNTM1OTEsIDE1MzU5NiwgMTUzNjAxLCAxNTM2MDYsIDE1MzYxMSwgCisgICAgMTUzNjE2LCAxNTM2MjEsIDE1MzYyNiwgMTUzNjMxLCAwLCAwLCAwLCAwLCAxNTM2MzYsIDE1MzY0MiwgMTUzNjQ2LCAKKyAgICAxNTM2NTAsIDE1MzY1NCwgMTUzNjU4LCAxNTM2NjIsIDE1MzY2NiwgMTUzNjcwLCAxNTM2NzQsIDE1MzY3OCwgMTUzNjgyLCAKKyAgICAxNTM2ODYsIDE1MzY5MCwgMTUzNjk0LCAxNTM2OTgsIDE1MzcwMiwgMTUzNzA2LCAxNTM3MTAsIDE1MzcxNCwgMTUzNzE4LCAKKyAgICAxNTM3MjIsIDE1MzcyNiwgMTUzNzMwLCAxNTM3MzQsIDE1MzczOCwgMTUzNzQyLCAxNTM3NDYsIDE1Mzc1MCwgMTUzNzU0LCAKKyAgICAxNTM3NTgsIDE1Mzc2MiwgMTUzNzY2LCAxNTM3NzAsIDE1Mzc3NCwgMTUzNzc4LCAxNTM3ODIsIDE1Mzc4NiwgMTUzNzkwLCAKKyAgICAxNTM3OTQsIDE1Mzc5OCwgMTUzODAyLCAxNTM4MDYsIDE1MzgxMCwgMTUzODE0LCAxNTM4MTgsIDE1MzgyMiwgMTUzODI2LCAKKyAgICAxNTM4MzAsIDE1MzgzNCwgMTUzODM4LCAxNTM4NDMsIDE1Mzg0NywgMTUzODUxLCAxNTM4NTUsIDE1Mzg1OSwgMTUzODYzLCAKKyAgICAxNTM4NjcsIDE1Mzg3MSwgMTUzODc1LCAxNTM4NzksIDE1Mzg4MywgMTUzODg3LCAxNTM4OTEsIDE1Mzg5NSwgMTUzODk5LCAKKyAgICAxNTM5MDMsIDE1MzkwNywgMTUzOTExLCAxNTM5MTUsIDE1MzkxOSwgMTUzOTIzLCAxNTM5MjcsIDE1MzkzMSwgMTUzOTM1LCAKKyAgICAxNTM5MzksIDE1Mzk0MywgMTUzOTQ3LCAxNTM5NTEsIDE1Mzk1NSwgMTUzOTU5LCAxNTM5NjMsIDE1Mzk2NywgMTUzOTcxLCAKKyAgICAxNTM5NzUsIDE1Mzk3OSwgMTUzOTgzLCAxNTM5ODcsIDE1Mzk5MSwgMTUzOTk1LCAxNTM5OTksIDE1NDAwMywgMTU0MDA3LCAKKyAgICAxNTQwMTEsIDE1NDAxNSwgMTU0MDE5LCAxNTQwMjMsIDE1NDAyNywgMTU0MDMxLCAxNTQwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NDAzOSwgMTU0MDQ1LCAxNTQwNTQsIDE1NDA2MiwgMTU0MDcwLCAxNTQwNzksIDE1NDA4OCwgCisgICAgMTU0MDk3LCAxNTQxMDYsIDE1NDExNSwgMTU0MTI0LCAxNTQxMzMsIDE1NDE0MiwgMTU0MTUxLCAxNTQxNjAsIDAsIDAsIAorICAgIDE1NDE2OSwgMTU0MTc4LCAxNTQxODYsIDE1NDE5NCwgMTU0MjAzLCAxNTQyMTIsIDE1NDIyMSwgMTU0MjMwLCAxNTQyMzksIAorICAgIDE1NDI0OCwgMTU0MjU3LCAxNTQyNjYsIDE1NDI3NSwgMTU0Mjg0LCAxNTQyOTMsIDAsIDE1NDMwMSwgMTU0MzEwLCAKKyAgICAxNTQzMTgsIDE1NDMyNiwgMTU0MzM1LCAxNTQzNDQsIDE1NDM1MywgMTU0MzYyLCAxNTQzNzEsIDE1NDM4MCwgMTU0Mzg5LCAKKyAgICAxNTQzOTgsIDE1NDQwNywgMTU0NDE2LCAxNTQ0MjUsIDAsIDE1NDQzMiwgMTU0NDQxLCAxNTQ0NDksIDE1NDQ1NywgCisgICAgMTU0NDY2LCAxNTQ0NzUsIDE1NDQ4NCwgMTU0NDkzLCAxNTQ1MDIsIDE1NDUxMSwgMTU0NTIwLCAxNTQ1MjksIDE1NDUzOCwgCisgICAgMTU0NTQ3LCAxNTQ1NTYsIDE1NDU2MywgMTU0NTY5LCAxNTQ1NzUsIDE1NDU4MSwgMTU0NTg3LCAxNTQ1OTMsIDE1NDU5OSwgCisgICAgMTU0NjA1LCAxNTQ2MTEsIDE1NDYxNywgMTU0NjIzLCAxNTQ2MjksIDE1NDYzNSwgMTU0NjQxLCAxNTQ2NDcsIDE1NDY1MywgCisgICAgMTU0NjU5LCAxNTQ2NjUsIDE1NDY3MSwgMTU0Njc3LCAxNTQ2ODMsIDE1NDY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTU0Njk1LCAxNTQ3MDIsIDE1NDcwNywgMTU0NzExLCAxNTQ3MTUsIDE1NDcxOSwgMTU0NzI0LCAxNTQ3MjksIAorICAgIDE1NDczNCwgMTU0NzM5LCAxNTQ3NDQsIDE1NDc0OSwgMTU0NzU2LCAwLCAwLCAwLCAxNTQ3NjQsIDE1NDc2OSwgMTU0Nzc1LCAKKyAgICAxNTQ3ODEsIDE1NDc4NywgMTU0NzkyLCAxNTQ3OTgsIDE1NDgwNCwgMTU0ODEwLCAxNTQ4MTUsIDE1NDgyMSwgMTU0ODI3LCAKKyAgICAxNTQ4MzIsIDE1NDgzOCwgMTU0ODQ0LCAxNTQ4NDksIDE1NDg1NSwgMTU0ODYxLCAxNTQ4NjYsIDE1NDg3MiwgMTU0ODc4LCAKKyAgICAxNTQ4ODMsIDE1NDg4OSwgMTU0ODk1LCAxNTQ5MDEsIDE1NDkwNywgMTU0OTEzLCAxNTQ5MjQsIDE1NDkzMSwgMTU0OTM3LCAKKyAgICAxNTQ5NDAsIDAsIDE1NDk0MywgMTU0OTQ4LCAxNTQ5NTQsIDE1NDk2MCwgMTU0OTY2LCAxNTQ5NzEsIDE1NDk3NywgCisgICAgMTU0OTgzLCAxNTQ5ODksIDE1NDk5NCwgMTU1MDAwLCAxNTUwMDYsIDE1NTAxMSwgMTU1MDE3LCAxNTUwMjMsIDE1NTAyOCwgCisgICAgMTU1MDM0LCAxNTUwNDAsIDE1NTA0NSwgMTU1MDUxLCAxNTUwNTcsIDE1NTA2MiwgMTU1MDY4LCAxNTUwNzQsIDE1NTA4MCwgCisgICAgMTU1MDg2LCAxNTUwOTIsIDE1NTA5NSwgMTU1MDk4LCAxNTUxMDEsIDE1NTEwNCwgMTU1MTA3LCAxNTUxMTAsIDE1NTExNiwgCisgICAgMTU1MTIzLCAxNTUxMzAsIDE1NTEzNywgMTU1MTQzLCAxNTUxNTAsIDE1NTE1NywgMTU1MTY0LCAxNTUxNzAsIDE1NTE3NywgCisgICAgMTU1MTg0LCAxNTUxOTAsIDE1NTE5NywgMTU1MjA0LCAxNTUyMTAsIDE1NTIxNywgMTU1MjI0LCAxNTUyMzAsIDE1NTIzNywgCisgICAgMTU1MjQ0LCAxNTUyNTAsIDE1NTI1NywgMTU1MjY0LCAxNTUyNzEsIDE1NTI3OCwgMTU1Mjg1LCAxNTUyOTAsIDAsIDAsIDAsIAorICAgIDAsIDE1NTI5NSwgMTU1MzAxLCAxNTUzMDgsIDE1NTMxNSwgMTU1MzIyLCAxNTUzMjgsIDE1NTMzNSwgMTU1MzQyLCAKKyAgICAxNTUzNDksIDE1NTM1NSwgMTU1MzYyLCAxNTUzNjksIDE1NTM3NSwgMTU1MzgyLCAxNTUzODksIDE1NTM5NSwgMTU1NDAyLCAKKyAgICAxNTU0MDksIDE1NTQxNSwgMTU1NDIyLCAxNTU0MjksIDE1NTQzNSwgMTU1NDQyLCAxNTU0NDksIDE1NTQ1NiwgMTU1NDYzLCAKKyAgICAxNTU0NzAsIDE1NTQ3OSwgMTU1NDgzLCAxNTU0ODYsIDE1NTQ5MCwgMTU1NDk0LCAxNTU0OTgsIDE1NTUwMSwgMTU1NTA0LCAKKyAgICAxNTU1MDcsIDE1NTUxMCwgMTU1NTEzLCAxNTU1MTYsIDE1NTUxOSwgMTU1NTIyLCAxNTU1MjUsIDE1NTUzMSwgMTU1NTM0LCAKKyAgICAxNTU1MzgsIDE1NTU0MywgMTU1NTQ3LCAxNTU1NTIsIDE1NTU1NywgMTU1NTYzLCAxNTU1NjksIDE1NTU3NSwgMTU1NTgwLCAKKyAgICAxNTU1ODgsIDE1NTU5NCwgMTU1NTk3LCAxNTU2MDAsIDE1NTYwMywgMTU1NjA2LCAxNTU2MDksIDE1NTYxMiwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTU1NjE1LCAxNTU2MjIsIDE1NTYzMCwgMTU1NjM4LCAxNTU2NDYsIDE1NTY1MywgMTU1NjYxLCAKKyAgICAxNTU2NjksIDE1NTY3NywgMTU1Njg0LCAxNTU2OTIsIDE1NTcwMCwgMTU1NzA3LCAxNTU3MTUsIDE1NTcyMywgMTU1NzMwLCAKKyAgICAxNTU3MzgsIDE1NTc0NiwgMTU1NzUzLCAxNTU3NjEsIDE1NTc2OSwgMTU1Nzc2LCAxNTU3ODQsIDE1NTc5MiwgMTU1ODAwLCAKKyAgICAxNTU4MDgsIDE1NTgxNiwgMTU1ODIwLCAxNTU4MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1NTgyOCwgMTU1ODM0LCAxNTU4NDAsIDE1NTg0NiwgMTU1ODUwLCAxNTU4NTYsIDE1NTg2MiwgMTU1ODY4LCAxNTU4NzQsIAorICAgIDE1NTg4MCwgMTU1ODg2LCAxNTU4OTIsIDE1NTg5OCwgMTU1OTA0LCAxNTU5MTAsIDE1NTkxNiwgMTU1OTIyLCAxNTU5MjgsIAorICAgIDE1NTkzNCwgMTU1OTQwLCAxNTU5NDYsIDE1NTk1MiwgMTU1OTU4LCAxNTU5NjQsIDE1NTk3MCwgMTU1OTc2LCAxNTU5ODIsIAorICAgIDE1NTk4OCwgMTU1OTk0LCAxNTYwMDAsIDE1NjAwNiwgMTU2MDEyLCAxNTYwMTgsIDE1NjAyNCwgMTU2MDMwLCAxNTYwMzYsIAorICAgIDE1NjA0MiwgMTU2MDQ4LCAxNTYwNTQsIDE1NjA2MCwgMTU2MDY2LCAxNTYwNzIsIDE1NjA3OCwgMTU2MDg0LCAwLCAwLCAwLCAKKyAgICAwLCAxNTYwOTAsIDE1NjEwMSwgMTU2MTEyLCAxNTYxMjMsIDE1NjEzNCwgMTU2MTQ1LCAxNTYxNTYsIDE1NjE2NywgCisgICAgMTU2MTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTYxODksIDE1NjE5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjEzLCAxNTA2MTUsIDE1MDYxNywgMTUwNjIxLCAxNTA2MjYsIDE1MDYzMSwgCi0gICAgMTUwNjMzLCAxNTA2MzksIDE1MDY0NCwgMTUwNjQ2LCAxNTA2NTIsIDE1MDY1NiwgMTUwNjU4LCAxNTA2NjIsIDE1MDY2OCwgCi0gICAgMTUwNjc0LCAxNTA2ODAsIDE1MDY4NSwgMTUwNjkwLCAxNTA2OTcsIDE1MDcwNCwgMTUwNzExLCAxNTA3MTYsIDE1MDcyMywgCi0gICAgMTUwNzMwLCAxNTA3MzcsIDE1MDc0MSwgMTUwNzQ4LCAxNTA3NTcsIDE1MDc2NiwgMTUwNzczLCAxNTA3NzgsIDE1MDc4MiwgCi0gICAgMTUwNzg2LCAxNTA3ODgsIDE1MDc5MSwgMTUwNzk0LCAxNTA4MDEsIDE1MDgwOCwgMTUwODE4LCAxNTA4MjMsIDE1MDgyOCwgCi0gICAgMTUwODMzLCAxNTA4MzgsIDE1MDg0MCwgMTUwODQ2LCAxNTA4NTAsIDE1MDg1MiwgMTUwODU0LCAxNTA4NTYsIDE1MDg1OCwgCi0gICAgMTUwODYyLCAxNTA4NjYsIDE1MDg3MCwgMTUwODcyLCAxNTA4NzYsIDE1MDg3OCwgMTUwODgyLCAxNTA4ODQsIDE1MDg4NiwgCi0gICAgMTUwODg4LCAxNTA4OTAsIDE1MDg5NSwgMTUwOTAwLCAxNTA5MDIsIDE1MDkwOCwgMTUwOTEyLCAxNTA5MTYsIDE1MDkyNCwgCi0gICAgMTUwOTI2LCAxNTA5MjgsIDE1MDkzMCwgMTUwOTMyLCAxNTA5MzQsIDE1MDkzNiwgMTUwOTM4LCAxNTA5NDAsIDE1MDk0MiwgCi0gICAgMTUwOTQ0LCAxNTA5NDgsIDE1MDk1MiwgMTUwOTU0LCAxNTA5NTYsIDE1MDk1OCwgMTUwOTYwLCAxNTA5NjIsIDE1MDk2NywgCi0gICAgMTUwOTczLCAxNTA5NzcsIDE1MDk4MSwgMTUwOTg1LCAxNTA5ODksIDE1MDk5NCwgMTUwOTk4LCAxNTEwMDAsIDE1MTAwMiwgCi0gICAgMTUxMDA2LCAxNTEwMTIsIDE1MTAxNCwgMTUxMDE2LCAxNTEwMTgsIDE1MTAyMiwgMTUxMDMxLCAxNTEwMzcsIDE1MTA0MSwgCi0gICAgMTUxMDQ1LCAxNTEwNDcsIDE1MTA0OSwgMTUxMDUyLCAxNTEwNTQsIDE1MTA1NiwgMTUxMDU4LCAxNTEwNjIsIDE1MTA2NCwgCi0gICAgMTUxMDY4LCAxNTEwNzMsIDE1MTA3NSwgMTUxMDgwLCAxNTEwODYsIDE1MTA5MywgMTUxMDk3LCAxNTExMDEsIDE1MTEwNSwgCi0gICAgMTUxMTA5LCAxNTExMTUsIDE1MTExOSwgMTUxMTI3LCAxNTExMzQsIDE1MTEzNiwgMTUxMTM4LCAxNTExNDIsIDE1MTE0NiwgCi0gICAgMTUxMTQ4LCAxNTExNTIsIDE1MTE1NiwgMTUxMTU4LCAxNTExNjIsIDE1MTE2NCwgMTUxMTY4LCAxNTExNzIsIDE1MTE3NiwgCi0gICAgMTUxMTgwLCAxNTExODQsIDE1MTE4OCwgMTUxMTkyLCAxNTExOTYsIDE1MTIwMiwgMTUxMjA2LCAxNTEyMTAsIDE1MTIyMSwgCi0gICAgMTUxMjI2LCAxNTEyMzAsIDE1MTIzNCwgMTUxMjQwLCAxNTEyNDQsIDE1MTI0OCwgMTUxMjUyLCAxNTEyNTksIDE1MTI2NiwgCi0gICAgMTUxMjcwLCAxNTEyNzQsIDE1MTI3OCwgMTUxMjgyLCAxNTEyODYsIDE1MTI5MywgMTUxMjk1LCAxNTEyOTksIDE1MTMwMSwgCi0gICAgMTUxMzAzLCAxNTEzMDcsIDE1MTMxMSwgMTUxMzE1LCAxNTEzMTcsIDE1MTMyMSwgMTUxMzI1LCAxNTEzMjksIDE1MTMzMywgCi0gICAgMTUxMzM3LCAxNTEzMzksIDE1MTM0MywgMTUxMzQ1LCAxNTEzNTEsIDE1MTM1NCwgMTUxMzU5LCAxNTEzNjEsIDE1MTM2MywgCi0gICAgMTUxMzY2LCAxNTEzNjgsIDE1MTM3MCwgMTUxMzczLCAxNTEzODAsIDE1MTM4NywgMTUxMzk0LCAxNTEzOTksIDE1MTQwMywgCi0gICAgMTUxNDA1LCAxNTE0MDcsIDE1MTQwOSwgMTUxNDEzLCAxNTE0MTUsIDE1MTQxOSwgMTUxNDIzLCAxNTE0MjcsIDE1MTQyOSwgCi0gICAgMTUxNDMzLCAxNTE0MzUsIDE1MTQzOSwgMTUxNDQzLCAxNTE0NTAsIDE1MTQ1MiwgMTUxNDYxLCAxNTE0NzAsIDE1MTQ3OSwgCi0gICAgMTUxNDg1LCAxNTE0ODcsIDE1MTQ5MiwgMTUxNDk2LCAxNTE1MDAsIDE1MTUwMiwgMTUxNTA4LCAxNTE1MTIsIDE1MTUxNCwgCi0gICAgMTUxNTE4LCAxNTE1MjIsIDE1MTUyNCwgMTUxNTI4LCAxNTE1MzMsIDE1MTUzNywgMTUxNTQzLCAxNTE1NDksIDE1MTU1MSwgCi0gICAgMTUxNTUzLCAxNTE1NTksIDE1MTU2MSwgMTUxNTY1LCAxNTE1NjksIDE1MTU3MSwgMTUxNTc1LCAxNTE1NzcsIDE1MTU4MSwgCi0gICAgMTUxNTg1LCAxNTE1ODksIDE1MTU5MiwgMTUxNTk1LCAxNTE2MDAsIDE1MTYwNSwgMTUxNjA3LCAxNTE2MTAsIDE1MTYxMiwgCi0gICAgMTUxNjE5LCAxNTE2MjMsIDE1MTYyNSwgMTUxNjMyLCAxNTE2MzksIDE1MTY0NiwgMTUxNjUzLCAxNTE2NjAsIDE1MTY2MiwgCi0gICAgMTUxNjY0LCAxNTE2NjYsIDE1MTY3MCwgMTUxNjcyLCAxNTE2NzQsIDE1MTY3NiwgMTUxNjc4LCAxNTE2ODAsIDE1MTY4MiwgCi0gICAgMTUxNjg0LCAxNTE2ODYsIDE1MTY4OCwgMTUxNjkwLCAxNTE2OTIsIDE1MTY5NCwgMTUxNjk2LCAxNTE2OTgsIDE1MTcwMCwgCi0gICAgMTUxNzAyLCAxNTE3MDQsIDE1MTcwNiwgMTUxNzA4LCAxNTE3MTAsIDE1MTcxMiwgMTUxNzE0LCAxNTE3MTgsIDE1MTcyMCwgCi0gICAgMTUxNzIyLCAxNTE3MjQsIDE1MTcyOCwgMTUxNzMwLCAxNTE3MzQsIDE1MTczNiwgMTUxNzM4LCAxNTE3NDIsIDE1MTc0NiwgCi0gICAgMTUxNzUyLCAxNTE3NTQsIDE1MTc1NiwgMTUxNzU4LCAxNTE3NjAsIDE1MTc2NCwgMTUxNzY4LCAxNTE3NzAsIDE1MTc3NCwgCi0gICAgMTUxNzc4LCAxNTE3ODIsIDE1MTc4NiwgMTUxNzkwLCAxNTE3OTQsIDE1MTc5OCwgMTUxODAyLCAxNTE4MDYsIDE1MTgxMCwgCi0gICAgMTUxODE0LCAxNTE4MTgsIDE1MTgyMiwgMTUxODI2LCAxNTE4MzAsIDE1MTgzNCwgMTUxODM4LCAxNTE4NDIsIDE1MTg0NCwgCi0gICAgMTUxODQ2LCAxNTE4NDgsIDE1MTg1MCwgMTUxODUyLCAxNTE4NTQsIDE1MTg1NiwgMTUxODY0LCAxNTE4NzIsIDE1MTg4MCwgCi0gICAgMTUxODg4LCAxNTE4OTMsIDE1MTg5OCwgMTUxOTAzLCAxNTE5MDcsIDE1MTkxMSwgMTUxOTE2LCAxNTE5MjAsIDE1MTkyMiwgCi0gICAgMTUxOTI2LCAxNTE5MjgsIDE1MTkzMCwgMTUxOTMyLCAxNTE5MzQsIDE1MTkzNiwgMTUxOTM4LCAxNTE5NDAsIDE1MTk0NCwgCi0gICAgMTUxOTQ2LCAxNTE5NDgsIDE1MTk1MCwgMTUxOTU0LCAxNTE5NTgsIDE1MTk2MiwgMTUxOTY2LCAxNTE5NzAsIDE1MTk3MiwgCi0gICAgMTUxOTc4LCAxNTE5ODQsIDE1MTk4NiwgMTUxOTg4LCAxNTE5OTAsIDE1MTk5MiwgMTUxOTk0LCAxNTIwMDMsIDE1MjAxMCwgCi0gICAgMTUyMDE3LCAxNTIwMjEsIDE1MjAyOCwgMTUyMDMzLCAxNTIwNDAsIDE1MjA0OSwgMTUyMDU0LCAxNTIwNTgsIDE1MjA2MiwgCi0gICAgMTUyMDY0LCAxNTIwNjgsIDE1MjA3MCwgMTUyMDc0LCAxNTIwNzgsIDE1MjA4MCwgMTUyMDg0LCAxNTIwODgsIDE1MjA5MiwgCi0gICAgMTUyMDk0LCAxNTIwOTYsIDE1MjEwMiwgMTUyMTA0LCAxNTIxMDYsIDE1MjEwOCwgMTUyMTEyLCAxNTIxMTYsIDE1MjExOCwgCi0gICAgMTUyMTIyLCAxNTIxMjQsIDE1MjEyNiwgMTUyMTI5LCAxNTIxMzMsIDE1MjEzNSwgMTUyMTM5LCAxNTIxNDEsIDE1MjE0MywgCi0gICAgMTUyMTQ4LCAxNTIxNTAsIDE1MjE1NCwgMTUyMTU4LCAxNTIxNjEsIDE1MjE2NSwgMTUyMTY5LCAxNTIxNzMsIDE1MjE3NywgCi0gICAgMTUyMTgxLCAxNTIxODUsIDE1MjE4OSwgMTUyMTk0LCAxNTIxOTgsIDE1MjIwMiwgMTUyMjExLCAxNTIyMTYsIDE1MjIxOSwgCi0gICAgMTUyMjIxLCAxNTIyMjQsIDE1MjIyNywgMTUyMjMyLCAxNTIyMzQsIDE1MjIzNywgMTUyMjQyLCAxNTIyNDYsIDE1MjI0OSwgCi0gICAgMTUyMjUzLCAxNTIyNTcsIDE1MjI2MCwgMTUyMjY1LCAxNTIyNjksIDE1MjI3MywgMTUyMjc3LCAxNTIyODEsIDE1MjI4NywgCi0gICAgMTUyMjkzLCAxNTIyOTksIDE1MjMwNSwgMTUyMzEwLCAxNTIzMjAsIDE1MjMyMiwgMTUyMzI2LCAxNTIzMjgsIDE1MjMzMCwgCi0gICAgMTUyMzM0LCAxNTIzMzgsIDE1MjM0MCwgMTUyMzQ0LCAxNTIzNDksIDE1MjM1NCwgMTUyMzYwLCAxNTIzNjIsIDE1MjM2NiwgCi0gICAgMTUyMzcwLCAxNTIzNzYsIDE1MjM4MiwgMTUyMzg2LCAxNTIzODgsIDE1MjM5MCwgMTUyMzk0LCAxNTIzOTYsIDE1MjQwMCwgCi0gICAgMTUyNDA0LCAxNTI0MDgsIDE1MjQxMCwgMTUyNDEyLCAxNTI0MTksIDE1MjQyMywgMTUyNDI2LCAxNTI0MzAsIDE1MjQzNCwgCi0gICAgMTUyNDM4LCAxNTI0NDAsIDE1MjQ0NCwgMTUyNDQ2LCAxNTI0NDgsIDE1MjQ1MiwgMTUyNDU0LCAxNTI0NTgsIDE1MjQ2MiwgCi0gICAgMTUyNDY4LCAxNTI0NzIsIDE1MjQ3NiwgMTUyNDgwLCAxNTI0ODIsIDE1MjQ4NSwgMTUyNDg5LCAxNTI0OTUsIDE1MjUwNCwgCi0gICAgMTUyNTEzLCAxNTI1MjEsIDE1MjUyOSwgMTUyNTMxLCAxNTI1MzUsIDE1MjUzNywgMTUyNTQxLCAxNTI1NTIsIDE1MjU1NiwgCi0gICAgMTUyNTYyLCAxNTI1NjgsIDE1MjU3MywgMTUyNTc1LCAxNTI1ODAsIDE1MjU4NCwgMTUyNTg2LCAxNTI1ODgsIDE1MjU5MCwgCi0gICAgMTUyNTk0LCAxNTI1OTgsIDE1MjYwMiwgMTUyNjA3LCAxNTI2MTcsIDE1MjYzMiwgMTUyNjQyLCAxNTI2NTIsIDE1MjY1NiwgCi0gICAgMTUyNjYwLCAxNTI2NjYsIDE1MjY2OCwgMTUyNjc2LCAxNTI2ODQsIDE1MjY4NiwgMTUyNjkwLCAxNTI2OTYsIDE1MjcwMiwgCi0gICAgMTUyNzA5LCAxNTI3MTYsIDE1MjcxOCwgMTUyNzIwLCAxNTI3MjMsIDE1MjcyNSwgMTUyNzMxLCAxNTI3MzMsIDE1MjczNiwgCi0gICAgMTUyNzQwLCAxNTI3NDYsIDE1Mjc1MiwgMTUyNzYzLCAxNTI3NjksIDE1Mjc3NSwgMTUyNzgzLCAxNTI3ODcsIDE1Mjc5NSwgCi0gICAgMTUyODAzLCAxNTI4MDksIDE1MjgxNSwgMTUyODIyLCAxNTI4MjQsIDE1MjgyOCwgMTUyODMwLCAxNTI4MzIsIDE1MjgzNywgCi0gICAgMTUyODM5LCAxNTI4NDEsIDE1Mjg0MywgMTUyODQ1LCAxNTI4NDksIDE1Mjg1OSwgMTUyODY1LCAxNTI4NjksIDE1Mjg3MywgCi0gICAgMTUyODc3LCAxNTI4ODMsIDE1Mjg4OSwgMTUyODk1LCAxNTI5MDEsIDE1MjkwNiwgMTUyOTExLCAxNTI5MTcsIDE1MjkyMywgCi0gICAgMTUyOTMwLCAxNTI5MzcsIDE1Mjk0NSwgMTUyOTUzLCAxNTI5NTgsIDE1Mjk2NiwgMTUyOTcwLCAxNTI5NzksIDE1Mjk4OCwgCi0gICAgMTUyOTk0LCAxNTI5OTgsIDE1MzAwMiwgMTUzMDA2LCAxNTMwMDksIDE1MzAxNCwgMTUzMDE2LCAxNTMwMTgsIDE1MzAyMCwgCi0gICAgMTUzMDI3LCAxNTMwMzIsIDE1MzAzOSwgMTUzMDQ2LCAxNTMwNTMsIDE1MzA2MSwgMTUzMDY5LCAxNTMwNzcsIDE1MzA4NSwgCi0gICAgMTUzMDkzLCAxNTMxMDEsIDE1MzEwOSwgMTUzMTE3LCAxNTMxMjUsIDE1MzEzMSwgMTUzMTM3LCAxNTMxNDMsIDE1MzE0OSwgCi0gICAgMTUzMTU1LCAxNTMxNjEsIDE1MzE2NywgMTUzMTczLCAxNTMxNzksIDE1MzE4NSwgMTUzMTkxLCAxNTMxOTcsIDE1MzIwMCwgCi0gICAgMTUzMjA5LCAxNTMyMTgsIDE1MzIyMCwgMTUzMjI3LCAxNTMyMzEsIDE1MzIzMywgMTUzMjM1LCAxNTMyMzksIDE1MzI0NSwgCi0gICAgMTUzMjQ5LCAxNTMyNTEsIDE1MzI2MSwgMTUzMjY3LCAxNTMyNzEsIDE1MzI3MywgMTUzMjc3LCAwLCAxNTMyNzksIAotICAgIDE1MzI4NiwgMTUzMjkzLCAxNTMzMDAsIDE1MzMwNSwgMTUzMzEwLCAxNTMzMTksIDE1MzMyNSwgMTUzMzMwLCAxNTMzMzQsIAotICAgIDE1MzMzOSwgMTUzMzQzLCAxNTMzNTAsIDE1MzM1NCwgMTUzMzU3LCAxNTMzNjIsIDE1MzM2OSwgMTUzMzc2LCAxNTMzODEsIAotICAgIDE1MzM4NiwgMTUzMzkxLCAxNTMzOTgsIDE1MzQwNywgMTUzNDE4LCAxNTM0MjQsIDE1MzQzMCwgMTUzNDM2LCAxNTM0NDYsIAotICAgIDE1MzQ2MSwgMTUzNDcwLCAxNTM0NzgsIDE1MzQ4NiwgMTUzNDk0LCAxNTM1MDIsIDE1MzUxMCwgMTUzNTE4LCAxNTM1MjYsIAotICAgIDE1MzUzNCwgMTUzNTQyLCAxNTM1NTAsIDE1MzU1OCwgMCwgMTUzNTY2LCAxNTM1NzAsIDE1MzU3NSwgMTUzNTgwLCAKLSAgICAxNTM1ODIsIDE1MzU4NiwgMTUzNTk1LCAxNTM2MDQsIDE1MzYxMiwgMTUzNjE2LCAxNTM2MjAsIDE1MzYyNSwgMTUzNjMwLCAKLSAgICAxNTM2MzUsIDE1MzYzNywgMTUzNjQyLCAxNTM2NDYsIDE1MzY0OCwgMTUzNjUyLCAxNTM2NTYsIDE1MzY2MiwgMTUzNjY3LCAKLSAgICAxNTM2NzUsIDE1MzY4MCwgMTUzNjg1LCAxNTM2OTAsIDE1MzY5NywgMTUzNzAwLCAxNTM3MDIsIDE1MzcwNSwgMTUzNzEwLCAKLSAgICAxNTM3MTYsIDE1MzcyMCwgMTUzNzI0LCAxNTM3MzAsIDE1MzczNiwgMTUzNzM4LCAxNTM3NDIsIDE1Mzc0NiwgMTUzNzUwLCAKLSAgICAxNTM3NTQsIDE1Mzc1OCwgMTUzNzYwLCAxNTM3NjIsIDE1Mzc2NCwgMTUzNzY2LCAxNTM3NzIsIDE1Mzc3OCwgMTUzNzgyLCAKLSAgICAxNTM3ODQsIDE1Mzc4NiwgMTUzNzg4LCAxNTM3OTcsIDE1MzgwMSwgMTUzODA4LCAxNTM4MTUsIDE1MzgxNywgMTUzODIwLCAKLSAgICAxNTM4MjQsIDE1MzgzMCwgMTUzODM0LCAxNTM4MzgsIDE1Mzg0MCwgMTUzODQ4LCAxNTM4NTIsIDE1Mzg1NiwgMTUzODYxLCAKLSAgICAxNTM4NjYsIDE1Mzg3MSwgMTUzODc2LCAxNTM4ODEsIDE1Mzg4NiwgMTUzODkxLCAxNTM4OTYsIDE1MzkwMSwgMTUzOTA2LCAKLSAgICAxNTM5MTAsIDE1MzkxNiwgMTUzOTIwLCAxNTM5MjYsIDE1MzkzMSwgMTUzOTM4LCAxNTM5NDQsIDE1Mzk1MiwgMTUzOTU2LCAKLSAgICAxNTM5NjMsIDE1Mzk2NywgMTUzOTcxLCAxNTM5NzUsIDE1Mzk4MCwgMTUzOTg1LCAxNTM5ODcsIDE1Mzk5MSwgMTU0MDAwLCAKLSAgICAxNTQwMDgsIDE1NDAxNiwgMTU0MDI5LCAxNTQwNDIsIDE1NDA1NSwgMTU0MDYyLCAxNTQwNjksIDE1NDA3MywgMTU0MDgyLCAKLSAgICAxNTQwOTAsIDE1NDA5NCwgMTU0MTAzLCAxNTQxMTAsIDE1NDExNCwgMTU0MTE4LCAxNTQxMjIsIDE1NDEyNiwgMTU0MTMzLCAKLSAgICAxNTQxMzcsIDE1NDE0MSwgMTU0MTQ1LCAxNTQxNDksIDE1NDE1NiwgMTU0MTY1LCAxNTQxNzQsIDE1NDE4MSwgMTU0MTkzLCAKLSAgICAxNTQyMDUsIDE1NDIwOSwgMTU0MjEzLCAxNTQyMTcsIDE1NDIyMSwgMTU0MjI1LCAxNTQyMjksIDE1NDIzNywgMTU0MjQ1LCAKLSAgICAxNTQyNTMsIDE1NDI1NywgMTU0MjYxLCAxNTQyNjUsIDE1NDI2OSwgMTU0MjczLCAxNTQyNzcsIDE1NDI4MywgMTU0Mjg5LCAKLSAgICAxNTQyOTMsIDE1NDMwNCwgMTU0MzEyLCAxNTQzMTYsIDE1NDMyMCwgMTU0MzI0LCAxNTQzMjgsIDE1NDMzNCwgMTU0MzQxLCAKLSAgICAxNTQzNTIsIDE1NDM2MiwgMTU0MzcyLCAxNTQzODMsIDE1NDM5MiwgMTU0NDAzLCAxNTQ0MDksIDE1NDQxNSwgMTU0NDIxLCAKLSAgICAxNTQ0MjcsIDE1NDQzMywgMTU0NDM3LCAxNTQ0NDQsIDE1NDQ1MywgMTU0NDYwLCAxNTQ0NjYsIDE1NDQ3MCwgMTU0NDc0LCAKLSAgICAxNTQ0NzgsIDE1NDQ4NywgMTU0NDk5LCAxNTQ1MDMsIDE1NDUxMCwgMTU0NTE3LCAxNTQ1MjQsIDE1NDUzMiwgMTU0NTM5LCAKLSAgICAxNTQ1NDcsIDE1NDU1NiwgMTU0NTY2LCAxNTQ1NzUsIDE1NDU4NSwgMTU0NTk0LCAxNTQ2MDQsIDE1NDYxMywgMTU0NjIzLCAKLSAgICAxNTQ2MzMsIDE1NDY0NCwgMTU0NjU0LCAxNTQ2NjUsIDE1NDY3MiwgMTU0NjgwLCAxNTQ2ODcsIDE1NDY5NSwgMTU0NzAzLCAKLSAgICAxNTQ3MTIsIDE1NDcyMCwgMTU0NzI5LCAxNTQ3MzYsIDE1NDc0OCwgMTU0NzU1LCAxNTQ3NjcsIDE1NDc3MCwgMTU0NzczLCAKLSAgICAxNTQ3NzYsIDE1NDc3OSwgMTU0Nzg1LCAxNTQ3OTIsIDE1NDc5OCwgMTU0ODA1LCAxNTQ4MTAsIDE1NDgxNiwgMTU0ODI4LCAKLSAgICAxNTQ4MzgsIDE1NDg0OSwgMTU0ODU0LCAxNTQ4NTksIDE1NDg2NSwgMTU0ODcwLCAxNTQ4NzcsIDE1NDg4MSwgMTU0ODg3LCAKLSAgICAxNTQ4ODksIDE1NDg5MSwgMTU0ODk1LCAxNTQ4OTksIDE1NDkwMywgMTU0OTEyLCAxNTQ5MTQsIDE1NDkxNiwgMTU0OTE5LCAKLSAgICAxNTQ5MjEsIDE1NDkyMywgMTU0OTI3LCAxNTQ5MjksIDE1NDkzMywgMTU0OTM1LCAxNTQ5MzksIDE1NDk0MSwgMTU0OTQzLCAKLSAgICAxNTQ5NDcsIDE1NDk1MSwgMTU0OTU3LCAxNTQ5NTksIDE1NDk2MywgMTU0OTY1LCAxNTQ5NjksIDE1NDk3MywgMTU0OTc3LCAKLSAgICAxNTQ5ODEsIDE1NDk4MywgMTU0OTg1LCAxNTQ5ODksIDE1NDk5MywgMTU0OTk3LCAxNTUwMDEsIDE1NTAwMywgMTU1MDA1LCAKLSAgICAxNTUwMDcsIDE1NTAxMywgMTU1MDE4LCAxNTUwMjEsIDE1NTAyOSwgMTU1MDM3LCAxNTUwMzksIDE1NTA0NCwgMTU1MDQ3LCAKLSAgICAxNTUwNTIsIDE1NTA2MywgMTU1MDcwLCAxNTUwNzUsIDE1NTA4MCwgMTU1MDgyLCAxNTUwODYsIDE1NTA4OCwgMTU1MDkyLCAKLSAgICAxNTUwOTQsIDE1NTA5OCwgMTU1MTAyLCAxNTUxMDUsIDE1NTEwOCwgMTU1MTEwLCAxNTUxMTMsIDE1NTExNSwgMTU1MTE5LCAKLSAgICAxNTUxMjEsIDE1NTEyMywgMTU1MTI1LCAxNTUxMjksIDE1NTEzMSwgMTU1MTM1LCAxNTUxMzgsIDE1NTE0NSwgMTU1MTQ4LCAKLSAgICAxNTUxNTMsIDE1NTE1NiwgMTU1MTU5LCAxNTUxNjQsIDE1NTE2OCwgMTU1MTcyLCAxNTUxNzYsIDE1NTE3OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1MTgzLCAxNTUxODgsIDE1NTE5MCwgMTU1MTk0LCAKLSAgICAxNTUxOTYsIDE1NTIwMCwgMTU1MjA0LCAxNTUyMTAsIDE1NTIxNCwgMTU1MjE5LCAxNTUyMjIsIDE1NTIyNiwgMTU1MjMwLCAKLSAgICAwLCAwLCAwLCAxNTUyMzQsIDE1NTIzNiwgMTU1MjQyLCAxNTUyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE1NTI1MCwgMTU1MjU1LCAxNTUyNjAsIDE1NTI2NSwgMTU1MjcwLCAxNTUyNzUsIDE1NTI4MCwgMTU1Mjg3LCAKLSAgICAxNTUyOTQsIDE1NTMwMSwgMTU1MzA4LCAxNTUzMTMsIDE1NTMxOCwgMTU1MzIzLCAxNTUzMjgsIDE1NTMzNSwgMTU1MzQxLCAKLSAgICAxNTUzNDgsIDE1NTM1NSwgMTU1MzYyLCAxNTUzNjcsIDE1NTM3MiwgMTU1Mzc3LCAxNTUzODIsIDE1NTM4NywgMTU1Mzk0LCAKLSAgICAxNTU0MDEsIDE1NTQwNiwgMTU1NDExLCAxNTU0MTgsIDE1NTQyNSwgMTU1NDMzLCAxNTU0NDEsIDE1NTQ0OCwgMTU1NDU1LCAKLSAgICAxNTU0NjMsIDE1NTQ3MSwgMTU1NDc5LCAxNTU0ODYsIDE1NTQ5NiwgMTU1NTA3LCAxNTU1MTIsIDE1NTUxOSwgMTU1NTI2LCAKLSAgICAxNTU1MzMsIDE1NTU0MSwgMTU1NTQ5LCAxNTU1NjAsIDE1NTU2OCwgMTU1NTc2LCAxNTU1ODQsIDE1NTU4OSwgMTU1NTk0LCAKLSAgICAxNTU1OTksIDE1NTYwNCwgMTU1NjA5LCAxNTU2MTQsIDE1NTYxOSwgMTU1NjI0LCAxNTU2MjksIDE1NTYzNCwgMTU1NjM5LCAKLSAgICAxNTU2NDQsIDE1NTY1MSwgMTU1NjU2LCAxNTU2NjEsIDE1NTY2OCwgMTU1NjczLCAxNTU2NzgsIDE1NTY4MywgMTU1Njg4LCAKLSAgICAxNTU2OTMsIDE1NTY5OCwgMTU1NzAzLCAxNTU3MDgsIDE1NTcxMywgMTU1NzE4LCAxNTU3MjMsIDE1NTcyOCwgMTU1NzM1LCAKLSAgICAxNTU3NDMsIDE1NTc0OCwgMTU1NzUzLCAxNTU3NjAsIDE1NTc2NSwgMTU1NzcwLCAxNTU3NzUsIDE1NTc4MiwgMTU1Nzg3LCAKLSAgICAxNTU3OTQsIDE1NTc5OSwgMTU1ODA2LCAxNTU4MTEsIDE1NTgyMCwgMTU1ODI5LCAxNTU4MzQsIDE1NTgzOSwgMTU1ODQ0LCAKLSAgICAxNTU4NDksIDE1NTg1NCwgMTU1ODU5LCAxNTU4NjQsIDE1NTg2OSwgMTU1ODc0LCAxNTU4NzksIDE1NTg4NCwgMTU1ODg5LCAKLSAgICAxNTU4OTQsIDE1NTkwMiwgMTU1OTEwLCAxNTU5MTUsIDE1NTkyMCwgMTU1OTI1LCAxNTU5MzAsIDE1NTkzNSwgMTU1OTQxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU5NDcsIDE1NTk1NSwgMTU1OTYzLCAxNTU5NzEsIAotICAgIDE1NTk3OSwgMTU1OTg1LCAxNTU5OTEsIDE1NTk5NSwgMTU1OTk5LCAxNTYwMDUsIDE1NjAxMSwgMTU2MDIwLCAxNTYwMjQsIAotICAgIDE1NjAyOSwgMTU2MDM1LCAxNTYwMzksIDE1NjA0NCwgMTU2MDQ4LCAxNTYwNTIsIDE1NjA1OCwgMTU2MDY0LCAxNTYwNzQsIAotICAgIDE1NjA4MywgMTU2MDg2LCAxNTYwOTEsIDE1NjA5NywgMTU2MTAzLCAxNTYxMTQsIDE1NjEyNCwgMTU2MTI4LCAxNTYxMzMsIAotICAgIDE1NjEzOSwgMTU2MTQ1LCAxNTYxNTQsIDE1NjE1OSwgMTU2MTYzLCAxNTYxNjgsIDE1NjE3MiwgMTU2MTc4LCAxNTYxODQsIAotICAgIDE1NjE5MCwgMTU2MTk0LCAxNTYxOTcsIDE1NjIwMSwgMTU2MjA0LCAxNTYyMDcsIDE1NjIxMiwgMTU2MjE3LCAxNTYyMjQsIAotICAgIDE1NjIzMiwgMTU2MjM5LCAxNTYyNDYsIDE1NjI1NSwgMTU2MjY0LCAxNTYyNzEsIDE1NjI3OSwgMTU2Mjg2LCAxNTYyOTMsIAotICAgIDE1NjMwMiwgMTU2MzExLCAxNTYzMTgsIDE1NjMyNiwgMTU2MzMzLCAxNTYzNDAsIDE1NjM0OSwgMTU2MzU2LCAxNTYzNjQsIAotICAgIDE1NjM3MCwgMTU2Mzc5LCAxNTYzODcsIDE1NjM5NiwgMTU2NDAzLCAxNTY0MTMsIDE1NjQyNCwgMTU2NDMyLCAxNTY0NDAsIAotICAgIDE1NjQ0OSwgMTU2NDU3LCAxNTY0NjUsIDE1NjQ3NCwgMTU2NDgyLCAxNTY0OTIsIDE1NjUwMSwgMTU2NTA5LCAxNTY1MTcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjUyNiwgMTU2NTM0LCAKLSAgICAxNTY1NDIsIDE1NjU1MCwgMTU2NTU4LCAxNTY1NjcsIDE1NjU3NiwgMTU2NTg1LCAxNTY1OTQsIDE1NjYwMywgMTU2NjEyLCAKLSAgICAxNTY2MjEsIDAsIDAsIDAsIDAsIDE1NjYzMCwgMTU2NjM4LCAxNTY2NDYsIDE1NjY1NCwgMTU2NjYyLCAxNTY2NjksIAotICAgIDE1NjY3NiwgMTU2NjgzLCAxNTY2OTAsIDE1NjY5OCwgMTU2NzA2LCAxNTY3MTQsIDE1NjcyMiwgMTU2NzMyLCAxNTY3NDIsIAotICAgIDE1Njc1MiwgMTU2NzYyLCAxNTY3NzEsIDE1Njc4MCwgMTU2Nzg5LCAxNTY3OTgsIDE1NjgwNywgMTU2ODE2LCAxNTY4MjUsIAotICAgIDE1NjgzNCwgMTU2ODQyLCAxNTY4NTAsIDE1Njg1OCwgMTU2ODY2LCAxNTY4NzQsIDE1Njg4MiwgMTU2ODkwLCAxNTY4OTgsIAotICAgIDE1NjkwOCwgMTU2OTE4LCAxNTY5MjgsIDE1NjkzOCwgMTU2OTQyLCAxNTY5NDYsIDE1Njk1MCwgMTU2OTU0LCAxNTY5NTcsIAotICAgIDE1Njk2MCwgMTU2OTYzLCAxNTY5NjYsIDE1Njk3MCwgMTU2OTc0LCAxNTY5NzgsIDE1Njk4MiwgMTU2OTg3LCAxNTY5OTIsIAotICAgIDE1Njk5NywgMTU3MDAyLCAxNTcwMDUsIDE1NzAwOCwgMTU3MDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTcwMTQsIAotICAgIDE1NzAxNywgMTU3MDIwLCAxNTcwMjMsIDE1NzAyNiwgMTU3MDMxLCAxNTcwMzYsIDE1NzA0MiwgMTU3MDQ4LCAxNTcwNTIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzA1NiwgMTU3MDYyLCAxNTcwNjgsIDE1NzA3NCwgMTU3MDgwLCAxNTcwODgsIDE1NzA5NiwgCi0gICAgMTU3MTA1LCAxNTcxMTQsIDE1NzExOSwgMTU3MTI0LCAxNTcxMjksIDE1NzEzNCwgMTU3MTQxLCAxNTcxNDgsIDE1NzE1NiwgCi0gICAgMTU3MTY0LCAxNTcxNzEsIDE1NzE3OCwgMTU3MTg1LCAxNTcxOTIsIDE1NzIwMSwgMTU3MjEwLCAxNTcyMjAsIDE1NzIzMCwgCi0gICAgMTU3MjM2LCAxNTcyNDIsIDE1NzI0OCwgMTU3MjU0LCAxNTcyNjIsIDE1NzI3MCwgMTU3Mjc5LCAxNTcyODgsIDE1NzI5NiwgCi0gICAgMTU3MzA0LCAxNTczMTIsIDE1NzMyMCwgMTU3MzMwLCAxNTczNDAsIDE1NzM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTU3MzYyLCAxNTczNjcsIDE1NzM3MiwgMTU3Mzc3LCAxNTczODIsIDE1NzM5MSwgMTU3NDAwLCAxNTc0MDksIDE1NzQxOCwgCi0gICAgMTU3NDI1LCAxNTc0MzIsIDE1NzQzOSwgMTU3NDQ2LCAxNTc0NTMsIDE1NzQ2MiwgMTU3NDcxLCAxNTc0ODAsIDE1NzQ4NSwgCi0gICAgMTU3NDkyLCAxNTc0OTksIDE1NzUwNiwgMTU3NTExLCAxNTc1MTYsIDE1NzUyMSwgMTU3NTI2LCAxNTc1MzMsIDE1NzU0MCwgCi0gICAgMTU3NTQ3LCAxNTc1NTQsIDE1NzU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NTcwLCAxNTc1NzQsIDE1NzU3OCwgMTU3NTgzLCAxNTc1ODcsIAotICAgIDE1NzU5MSwgMTU3NTk2LCAxNTc2MDAsIDE1NzYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2MTk5LCAKKyAgICAxNTYyMDEsIDE1NjIwMywgMTU2MjA3LCAxNTYyMTIsIDE1NjIxNywgMTU2MjE5LCAxNTYyMjUsIDE1NjIzMCwgMTU2MjMyLCAKKyAgICAxNTYyMzgsIDE1NjI0MiwgMTU2MjQ0LCAxNTYyNDgsIDE1NjI1NCwgMTU2MjYwLCAxNTYyNjYsIDE1NjI3MSwgMTU2Mjc2LCAKKyAgICAxNTYyODMsIDE1NjI5MCwgMTU2Mjk3LCAxNTYzMDIsIDE1NjMwOSwgMTU2MzE2LCAxNTYzMjMsIDE1NjMyNywgMTU2MzM0LCAKKyAgICAxNTYzNDMsIDE1NjM1MiwgMTU2MzU5LCAxNTYzNjQsIDE1NjM2OCwgMTU2MzcyLCAxNTYzNzQsIDE1NjM3NywgMTU2MzgwLCAKKyAgICAxNTYzODcsIDE1NjM5NCwgMTU2NDA0LCAxNTY0MDksIDE1NjQxNCwgMTU2NDE5LCAxNTY0MjQsIDE1NjQyNiwgMTU2NDMyLCAKKyAgICAxNTY0MzYsIDE1NjQzOCwgMTU2NDQwLCAxNTY0NDIsIDE1NjQ0NCwgMTU2NDQ4LCAxNTY0NTIsIDE1NjQ1NiwgMTU2NDU4LCAKKyAgICAxNTY0NjIsIDE1NjQ2NCwgMTU2NDY4LCAxNTY0NzAsIDE1NjQ3MiwgMTU2NDc0LCAxNTY0NzYsIDE1NjQ4MSwgMTU2NDg2LCAKKyAgICAxNTY0ODgsIDE1NjQ5NCwgMTU2NDk4LCAxNTY1MDIsIDE1NjUxMCwgMTU2NTEyLCAxNTY1MTQsIDE1NjUxNiwgMTU2NTE4LCAKKyAgICAxNTY1MjAsIDE1NjUyMiwgMTU2NTI0LCAxNTY1MjYsIDE1NjUyOCwgMTU2NTMwLCAxNTY1MzQsIDE1NjUzOCwgMTU2NTQwLCAKKyAgICAxNTY1NDIsIDE1NjU0NCwgMTU2NTQ2LCAxNTY1NDgsIDE1NjU1MywgMTU2NTU5LCAxNTY1NjMsIDE1NjU2NywgMTU2NTcxLCAKKyAgICAxNTY1NzUsIDE1NjU4MCwgMTU2NTg0LCAxNTY1ODYsIDE1NjU4OCwgMTU2NTkyLCAxNTY1OTgsIDE1NjYwMCwgMTU2NjAyLCAKKyAgICAxNTY2MDQsIDE1NjYwOCwgMTU2NjE3LCAxNTY2MjMsIDE1NjYyNywgMTU2NjMxLCAxNTY2MzMsIDE1NjYzNSwgMTU2NjM4LCAKKyAgICAxNTY2NDAsIDE1NjY0MiwgMTU2NjQ0LCAxNTY2NDgsIDE1NjY1MCwgMTU2NjU0LCAxNTY2NTksIDE1NjY2MSwgMTU2NjY2LCAKKyAgICAxNTY2NzIsIDE1NjY3OSwgMTU2NjgzLCAxNTY2ODcsIDE1NjY5MSwgMTU2Njk1LCAxNTY3MDEsIDE1NjcwNSwgMTU2NzEzLCAKKyAgICAxNTY3MjAsIDE1NjcyMiwgMTU2NzI0LCAxNTY3MjgsIDE1NjczMiwgMTU2NzM0LCAxNTY3MzgsIDE1Njc0MiwgMTU2NzQ0LCAKKyAgICAxNTY3NDgsIDE1Njc1MCwgMTU2NzU0LCAxNTY3NTgsIDE1Njc2MiwgMTU2NzY2LCAxNTY3NzAsIDE1Njc3NCwgMTU2Nzc4LCAKKyAgICAxNTY3ODIsIDE1Njc4OCwgMTU2NzkyLCAxNTY3OTYsIDE1NjgwNywgMTU2ODEyLCAxNTY4MTYsIDE1NjgyMCwgMTU2ODI2LCAKKyAgICAxNTY4MzAsIDE1NjgzNCwgMTU2ODM4LCAxNTY4NDUsIDE1Njg1MiwgMTU2ODU2LCAxNTY4NjAsIDE1Njg2NCwgMTU2ODY4LCAKKyAgICAxNTY4NzIsIDE1Njg3OSwgMTU2ODgxLCAxNTY4ODUsIDE1Njg4NywgMTU2ODg5LCAxNTY4OTMsIDE1Njg5NywgMTU2OTAxLCAKKyAgICAxNTY5MDMsIDE1NjkwNywgMTU2OTExLCAxNTY5MTUsIDE1NjkxOSwgMTU2OTIzLCAxNTY5MjUsIDE1NjkyOSwgMTU2OTMxLCAKKyAgICAxNTY5MzcsIDE1Njk0MCwgMTU2OTQ1LCAxNTY5NDcsIDE1Njk0OSwgMTU2OTUyLCAxNTY5NTQsIDE1Njk1NiwgMTU2OTU5LCAKKyAgICAxNTY5NjYsIDE1Njk3MywgMTU2OTgwLCAxNTY5ODUsIDE1Njk4OSwgMTU2OTkxLCAxNTY5OTMsIDE1Njk5NSwgMTU2OTk5LCAKKyAgICAxNTcwMDEsIDE1NzAwNSwgMTU3MDA5LCAxNTcwMTMsIDE1NzAxNSwgMTU3MDE5LCAxNTcwMjEsIDE1NzAyNSwgMTU3MDI5LCAKKyAgICAxNTcwMzYsIDE1NzAzOCwgMTU3MDQ3LCAxNTcwNTYsIDE1NzA2NSwgMTU3MDcxLCAxNTcwNzMsIDE1NzA3OCwgMTU3MDgyLCAKKyAgICAxNTcwODYsIDE1NzA4OCwgMTU3MDk0LCAxNTcwOTgsIDE1NzEwMCwgMTU3MTA0LCAxNTcxMDgsIDE1NzExMCwgMTU3MTE0LCAKKyAgICAxNTcxMTksIDE1NzEyMywgMTU3MTI5LCAxNTcxMzUsIDE1NzEzNywgMTU3MTM5LCAxNTcxNDUsIDE1NzE0NywgMTU3MTUxLCAKKyAgICAxNTcxNTUsIDE1NzE1NywgMTU3MTYxLCAxNTcxNjMsIDE1NzE2NywgMTU3MTcxLCAxNTcxNzUsIDE1NzE3OCwgMTU3MTgxLCAKKyAgICAxNTcxODYsIDE1NzE5MSwgMTU3MTkzLCAxNTcxOTYsIDE1NzE5OCwgMTU3MjA1LCAxNTcyMDksIDE1NzIxMSwgMTU3MjE4LCAKKyAgICAxNTcyMjUsIDE1NzIzMiwgMTU3MjM5LCAxNTcyNDYsIDE1NzI0OCwgMTU3MjUwLCAxNTcyNTIsIDE1NzI1NiwgMTU3MjU4LCAKKyAgICAxNTcyNjAsIDE1NzI2MiwgMTU3MjY0LCAxNTcyNjYsIDE1NzI2OCwgMTU3MjcwLCAxNTcyNzIsIDE1NzI3NCwgMTU3Mjc2LCAKKyAgICAxNTcyNzgsIDE1NzI4MCwgMTU3MjgyLCAxNTcyODQsIDE1NzI4NiwgMTU3Mjg4LCAxNTcyOTAsIDE1NzI5MiwgMTU3Mjk0LCAKKyAgICAxNTcyOTYsIDE1NzI5OCwgMTU3MzAwLCAxNTczMDQsIDE1NzMwNiwgMTU3MzA4LCAxNTczMTAsIDE1NzMxNCwgMTU3MzE2LCAKKyAgICAxNTczMjAsIDE1NzMyMiwgMTU3MzI0LCAxNTczMjgsIDE1NzMzMiwgMTU3MzM4LCAxNTczNDAsIDE1NzM0MiwgMTU3MzQ0LCAKKyAgICAxNTczNDYsIDE1NzM1MCwgMTU3MzU0LCAxNTczNTYsIDE1NzM2MCwgMTU3MzY0LCAxNTczNjgsIDE1NzM3MiwgMTU3Mzc2LCAKKyAgICAxNTczODAsIDE1NzM4NCwgMTU3Mzg4LCAxNTczOTIsIDE1NzM5NiwgMTU3NDAwLCAxNTc0MDQsIDE1NzQwOCwgMTU3NDEyLCAKKyAgICAxNTc0MTYsIDE1NzQyMCwgMTU3NDI0LCAxNTc0MjgsIDE1NzQzMCwgMTU3NDMyLCAxNTc0MzQsIDE1NzQzNiwgMTU3NDM4LCAKKyAgICAxNTc0NDAsIDE1NzQ0MiwgMTU3NDUwLCAxNTc0NTgsIDE1NzQ2NiwgMTU3NDc0LCAxNTc0NzksIDE1NzQ4NCwgMTU3NDg5LCAKKyAgICAxNTc0OTMsIDE1NzQ5NywgMTU3NTAyLCAxNTc1MDYsIDE1NzUwOCwgMTU3NTEyLCAxNTc1MTQsIDE1NzUxNiwgMTU3NTE4LCAKKyAgICAxNTc1MjAsIDE1NzUyMiwgMTU3NTI0LCAxNTc1MjYsIDE1NzUzMCwgMTU3NTMyLCAxNTc1MzQsIDE1NzUzNiwgMTU3NTQwLCAKKyAgICAxNTc1NDQsIDE1NzU0OCwgMTU3NTUyLCAxNTc1NTYsIDE1NzU1OCwgMTU3NTY0LCAxNTc1NzAsIDE1NzU3MiwgMTU3NTc0LCAKKyAgICAxNTc1NzYsIDE1NzU3OCwgMTU3NTgwLCAxNTc1ODksIDE1NzU5NiwgMTU3NjAzLCAxNTc2MDcsIDE1NzYxNCwgMTU3NjE5LCAKKyAgICAxNTc2MjYsIDE1NzYzNSwgMTU3NjQwLCAxNTc2NDQsIDE1NzY0OCwgMTU3NjUwLCAxNTc2NTQsIDE1NzY1NiwgMTU3NjYwLCAKKyAgICAxNTc2NjQsIDE1NzY2NiwgMTU3NjcwLCAxNTc2NzQsIDE1NzY3OCwgMTU3NjgwLCAxNTc2ODIsIDE1NzY4OCwgMTU3NjkwLCAKKyAgICAxNTc2OTIsIDE1NzY5NCwgMTU3Njk4LCAxNTc3MDIsIDE1NzcwNCwgMTU3NzA4LCAxNTc3MTAsIDE1NzcxMiwgMTU3NzE1LCAKKyAgICAxNTc3MTksIDE1NzcyMSwgMTU3NzI1LCAxNTc3MjcsIDE1NzcyOSwgMTU3NzM0LCAxNTc3MzYsIDE1Nzc0MCwgMTU3NzQ0LCAKKyAgICAxNTc3NDcsIDE1Nzc1MSwgMTU3NzU1LCAxNTc3NTksIDE1Nzc2MywgMTU3NzY3LCAxNTc3NzEsIDE1Nzc3NSwgMTU3NzgwLCAKKyAgICAxNTc3ODQsIDE1Nzc4OCwgMTU3Nzk3LCAxNTc4MDIsIDE1NzgwNSwgMTU3ODA3LCAxNTc4MTAsIDE1NzgxMywgMTU3ODE4LCAKKyAgICAxNTc4MjAsIDE1NzgyMywgMTU3ODI4LCAxNTc4MzIsIDE1NzgzNSwgMTU3ODM5LCAxNTc4NDMsIDE1Nzg0NiwgMTU3ODUxLCAKKyAgICAxNTc4NTUsIDE1Nzg1OSwgMTU3ODYzLCAxNTc4NjcsIDE1Nzg3MywgMTU3ODc5LCAxNTc4ODUsIDE1Nzg5MSwgMTU3ODk2LCAKKyAgICAxNTc5MDYsIDE1NzkwOCwgMTU3OTEyLCAxNTc5MTQsIDE1NzkxNiwgMTU3OTIwLCAxNTc5MjQsIDE1NzkyNiwgMTU3OTMwLCAKKyAgICAxNTc5MzUsIDE1Nzk0MCwgMTU3OTQ2LCAxNTc5NDgsIDE1Nzk1MiwgMTU3OTU2LCAxNTc5NjIsIDE1Nzk2OCwgMTU3OTcyLCAKKyAgICAxNTc5NzQsIDE1Nzk3NiwgMTU3OTgwLCAxNTc5ODIsIDE1Nzk4NiwgMTU3OTkwLCAxNTc5OTQsIDE1Nzk5NiwgMTU3OTk4LCAKKyAgICAxNTgwMDUsIDE1ODAwOSwgMTU4MDEyLCAxNTgwMTYsIDE1ODAyMCwgMTU4MDI0LCAxNTgwMjYsIDE1ODAzMCwgMTU4MDMyLCAKKyAgICAxNTgwMzQsIDE1ODAzOCwgMTU4MDQwLCAxNTgwNDQsIDE1ODA0OCwgMTU4MDU0LCAxNTgwNTgsIDE1ODA2MiwgMTU4MDY2LCAKKyAgICAxNTgwNjgsIDE1ODA3MSwgMTU4MDc1LCAxNTgwODEsIDE1ODA5MCwgMTU4MDk5LCAxNTgxMDcsIDE1ODExNSwgMTU4MTE3LCAKKyAgICAxNTgxMjEsIDE1ODEyMywgMTU4MTI3LCAxNTgxMzgsIDE1ODE0MiwgMTU4MTQ4LCAxNTgxNTQsIDE1ODE1OSwgMTU4MTYxLCAKKyAgICAxNTgxNjYsIDE1ODE3MCwgMTU4MTcyLCAxNTgxNzQsIDE1ODE3NiwgMTU4MTgwLCAxNTgxODQsIDE1ODE4OCwgMTU4MTkzLCAKKyAgICAxNTgyMDMsIDE1ODIxOCwgMTU4MjI4LCAxNTgyMzgsIDE1ODI0MiwgMTU4MjQ2LCAxNTgyNTIsIDE1ODI1NCwgMTU4MjYyLCAKKyAgICAxNTgyNzAsIDE1ODI3MiwgMTU4Mjc2LCAxNTgyODIsIDE1ODI4OCwgMTU4Mjk1LCAxNTgzMDIsIDE1ODMwNCwgMTU4MzA2LCAKKyAgICAxNTgzMDksIDE1ODMxMSwgMTU4MzE3LCAxNTgzMTksIDE1ODMyMiwgMTU4MzI2LCAxNTgzMzIsIDE1ODMzOCwgMTU4MzQ5LCAKKyAgICAxNTgzNTUsIDE1ODM2MSwgMTU4MzY5LCAxNTgzNzMsIDE1ODM4MSwgMTU4Mzg5LCAxNTgzOTUsIDE1ODQwMSwgMTU4NDA4LCAKKyAgICAxNTg0MTAsIDE1ODQxNCwgMTU4NDE2LCAxNTg0MTgsIDE1ODQyMywgMTU4NDI1LCAxNTg0MjcsIDE1ODQyOSwgMTU4NDMxLCAKKyAgICAxNTg0MzUsIDE1ODQ0NSwgMTU4NDUxLCAxNTg0NTUsIDE1ODQ1OSwgMTU4NDYzLCAxNTg0NjksIDE1ODQ3NSwgMTU4NDgxLCAKKyAgICAxNTg0ODcsIDE1ODQ5MiwgMTU4NDk3LCAxNTg1MDMsIDE1ODUwOSwgMTU4NTE2LCAxNTg1MjMsIDE1ODUzMSwgMTU4NTM5LCAKKyAgICAxNTg1NDQsIDE1ODU1MiwgMTU4NTU2LCAxNTg1NjUsIDE1ODU3NCwgMTU4NTgwLCAxNTg1ODQsIDE1ODU4OCwgMTU4NTkyLCAKKyAgICAxNTg1OTUsIDE1ODYwMCwgMTU4NjAyLCAxNTg2MDQsIDE1ODYwNiwgMTU4NjEzLCAxNTg2MTgsIDE1ODYyNSwgMTU4NjMyLCAKKyAgICAxNTg2MzksIDE1ODY0NywgMTU4NjU1LCAxNTg2NjMsIDE1ODY3MSwgMTU4Njc5LCAxNTg2ODcsIDE1ODY5NSwgMTU4NzAzLCAKKyAgICAxNTg3MTEsIDE1ODcxNywgMTU4NzIzLCAxNTg3MjksIDE1ODczNSwgMTU4NzQxLCAxNTg3NDcsIDE1ODc1MywgMTU4NzU5LCAKKyAgICAxNTg3NjUsIDE1ODc3MSwgMTU4Nzc3LCAxNTg3ODMsIDE1ODc4NiwgMTU4Nzk1LCAxNTg4MDQsIDE1ODgwNiwgMTU4ODEzLCAKKyAgICAxNTg4MTcsIDE1ODgxOSwgMTU4ODIxLCAxNTg4MjUsIDE1ODgzMSwgMTU4ODM1LCAxNTg4MzcsIDE1ODg0NywgMTU4ODUzLCAKKyAgICAxNTg4NTcsIDE1ODg1OSwgMTU4ODYzLCAxNTg4NjUsIDE1ODg2OSwgMTU4ODc2LCAxNTg4ODMsIDE1ODg5MCwgMTU4ODk1LCAKKyAgICAxNTg5MDAsIDE1ODkwOSwgMTU4OTE1LCAxNTg5MjAsIDE1ODkyNCwgMTU4OTI5LCAxNTg5MzMsIDE1ODk0MCwgMTU4OTQ0LCAKKyAgICAxNTg5NDcsIDE1ODk1MiwgMTU4OTU5LCAxNTg5NjYsIDE1ODk3MSwgMTU4OTc2LCAxNTg5ODEsIDE1ODk4OCwgMTU4OTk3LCAKKyAgICAxNTkwMDgsIDE1OTAxNCwgMTU5MDIwLCAxNTkwMjYsIDE1OTAzNiwgMTU5MDUxLCAxNTkwNjAsIDE1OTA2OCwgMTU5MDc2LCAKKyAgICAxNTkwODQsIDE1OTA5MiwgMTU5MTAwLCAxNTkxMDgsIDE1OTExNiwgMTU5MTI0LCAxNTkxMzIsIDE1OTE0MCwgMTU5MTQ4LCAKKyAgICAxNTkxNTYsIDE1OTE1OSwgMTU5MTYzLCAxNTkxNjgsIDE1OTE3MywgMTU5MTc1LCAxNTkxNzksIDE1OTE4OCwgMTU5MTk3LCAKKyAgICAxNTkyMDUsIDE1OTIwOSwgMTU5MjEzLCAxNTkyMTgsIDE1OTIyMywgMTU5MjI4LCAxNTkyMzAsIDE1OTIzNSwgMTU5MjM5LCAKKyAgICAxNTkyNDEsIDE1OTI0NSwgMTU5MjQ5LCAxNTkyNTUsIDE1OTI2MCwgMTU5MjY4LCAxNTkyNzMsIDE1OTI3OCwgMTU5MjgzLCAKKyAgICAxNTkyOTAsIDE1OTI5MywgMTU5Mjk1LCAxNTkyOTgsIDE1OTMwMywgMTU5MzA5LCAxNTkzMTMsIDE1OTMxNywgMTU5MzIzLCAKKyAgICAxNTkzMjksIDE1OTMzMSwgMTU5MzM1LCAxNTkzMzksIDE1OTM0MywgMTU5MzQ3LCAxNTkzNTEsIDE1OTM1MywgMTU5MzU1LCAKKyAgICAxNTkzNTcsIDE1OTM1OSwgMTU5MzY1LCAxNTkzNzEsIDE1OTM3NSwgMTU5Mzc3LCAxNTkzNzksIDE1OTM4MSwgMTU5MzkwLCAKKyAgICAxNTkzOTQsIDE1OTQwMSwgMTU5NDA4LCAxNTk0MTAsIDE1OTQxMywgMTU5NDE3LCAxNTk0MjMsIDE1OTQyNywgMTU5NDMxLCAKKyAgICAxNTk0MzMsIDE1OTQ0MSwgMTU5NDQ1LCAxNTk0NDksIDE1OTQ1NCwgMTU5NDU5LCAxNTk0NjQsIDE1OTQ2OSwgMTU5NDc0LCAKKyAgICAxNTk0NzksIDE1OTQ4NCwgMTU5NDg5LCAxNTk0OTQsIDE1OTQ5OSwgMTU5NTAzLCAxNTk1MDksIDE1OTUxMywgMTU5NTE5LCAKKyAgICAxNTk1MjQsIDE1OTUzMSwgMTU5NTM3LCAxNTk1NDUsIDE1OTU0OSwgMTU5NTU2LCAxNTk1NjAsIDE1OTU2NCwgMTU5NTY4LCAKKyAgICAxNTk1NzMsIDE1OTU3OCwgMTU5NTgwLCAxNTk1ODQsIDE1OTU5MywgMTU5NjAxLCAxNTk2MDksIDE1OTYyMiwgMTU5NjM1LCAKKyAgICAxNTk2NDgsIDE1OTY1NSwgMTU5NjYyLCAxNTk2NjYsIDE1OTY3NSwgMTU5NjgzLCAxNTk2ODcsIDE1OTY5NiwgMTU5NzAzLCAKKyAgICAxNTk3MDcsIDE1OTcxMSwgMTU5NzE1LCAxNTk3MTksIDE1OTcyNiwgMTU5NzMwLCAxNTk3MzQsIDE1OTczOCwgMTU5NzQyLCAKKyAgICAxNTk3NDksIDE1OTc1OCwgMTU5NzY3LCAxNTk3NzQsIDE1OTc4NiwgMTU5Nzk4LCAxNTk4MDIsIDE1OTgwNiwgMTU5ODEwLCAKKyAgICAxNTk4MTQsIDE1OTgxOCwgMTU5ODIyLCAxNTk4MzAsIDE1OTgzOCwgMTU5ODQ2LCAxNTk4NTAsIDE1OTg1NCwgMTU5ODU4LCAKKyAgICAxNTk4NjIsIDE1OTg2NiwgMTU5ODcwLCAxNTk4NzYsIDE1OTg4MiwgMTU5ODg2LCAxNTk4OTcsIDE1OTkwNSwgMTU5OTA5LCAKKyAgICAxNTk5MTMsIDE1OTkxNywgMTU5OTIxLCAxNTk5MjcsIDE1OTkzNCwgMTU5OTQ1LCAxNTk5NTUsIDE1OTk2NSwgMTU5OTc2LCAKKyAgICAxNTk5ODUsIDE1OTk5NiwgMTYwMDAyLCAxNjAwMDgsIDE2MDAxNCwgMTYwMDIwLCAxNjAwMjYsIDE2MDAzMCwgMTYwMDM3LCAKKyAgICAxNjAwNDYsIDE2MDA1MywgMTYwMDU5LCAxNjAwNjMsIDE2MDA2NywgMTYwMDcxLCAxNjAwODAsIDE2MDA5MiwgMTYwMDk2LCAKKyAgICAxNjAxMDMsIDE2MDExMCwgMTYwMTE3LCAxNjAxMjUsIDE2MDEzMiwgMTYwMTQwLCAxNjAxNDksIDE2MDE1OSwgMTYwMTY4LCAKKyAgICAxNjAxNzgsIDE2MDE4NywgMTYwMTk3LCAxNjAyMDYsIDE2MDIxNiwgMTYwMjI2LCAxNjAyMzcsIDE2MDI0NywgMTYwMjU4LCAKKyAgICAxNjAyNjUsIDE2MDI3MywgMTYwMjgwLCAxNjAyODgsIDE2MDI5NiwgMTYwMzA1LCAxNjAzMTMsIDE2MDMyMiwgMTYwMzI5LCAKKyAgICAxNjAzNDEsIDE2MDM0OCwgMTYwMzYwLCAxNjAzNjMsIDE2MDM2NiwgMTYwMzY5LCAxNjAzNzIsIDE2MDM3OCwgMTYwMzg1LCAKKyAgICAxNjAzOTEsIDE2MDM5OCwgMTYwNDAzLCAxNjA0MDksIDE2MDQyMSwgMTYwNDMxLCAxNjA0NDIsIDE2MDQ0NywgMTYwNDUyLCAKKyAgICAxNjA0NTgsIDE2MDQ2MywgMTYwNDcwLCAxNjA0NzQsIDE2MDQ4MCwgMTYwNDgyLCAxNjA0ODQsIDE2MDQ4OCwgMTYwNDkyLCAKKyAgICAxNjA0OTYsIDE2MDUwNSwgMTYwNTA3LCAxNjA1MDksIDE2MDUxMiwgMTYwNTE0LCAxNjA1MTYsIDE2MDUyMCwgMTYwNTIyLCAKKyAgICAxNjA1MjYsIDE2MDUyOCwgMTYwNTMyLCAxNjA1MzQsIDE2MDUzNiwgMTYwNTQwLCAxNjA1NDQsIDE2MDU1MCwgMTYwNTUyLCAKKyAgICAxNjA1NTYsIDE2MDU1OCwgMTYwNTYyLCAxNjA1NjYsIDE2MDU3MCwgMTYwNTc0LCAxNjA1NzYsIDE2MDU3OCwgMTYwNTgyLCAKKyAgICAxNjA1ODYsIDE2MDU5MCwgMTYwNTk0LCAxNjA1OTYsIDE2MDU5OCwgMTYwNjAwLCAxNjA2MDYsIDE2MDYxMSwgMTYwNjE0LCAKKyAgICAxNjA2MjIsIDE2MDYzMCwgMTYwNjMyLCAxNjA2MzcsIDE2MDY0MCwgMTYwNjQ1LCAxNjA2NTYsIDE2MDY2MywgMTYwNjY4LCAKKyAgICAxNjA2NzMsIDE2MDY3NSwgMTYwNjc5LCAxNjA2ODEsIDE2MDY4NSwgMTYwNjg3LCAxNjA2OTEsIDE2MDY5NSwgMTYwNjk4LCAKKyAgICAxNjA3MDEsIDE2MDcwMywgMTYwNzA2LCAxNjA3MDgsIDE2MDcxMiwgMTYwNzE0LCAxNjA3MTYsIDE2MDcxOCwgMTYwNzIyLCAKKyAgICAxNjA3MjQsIDE2MDcyOCwgMTYwNzMxLCAxNjA3MzgsIDE2MDc0MSwgMTYwNzQ2LCAxNjA3NDksIDE2MDc1MiwgMTYwNzU3LCAKKyAgICAxNjA3NjEsIDE2MDc2NSwgMTYwNzY5LCAxNjA3NzEsIDE2MDc3NiwgMTYwNzc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNjA3ODMsIDE2MDc4OCwgMTYwNzkwLCAxNjA3OTQsIDE2MDc5NiwgMTYwODAwLCAxNjA4MDQsIAorICAgIDE2MDgxMCwgMTYwODE0LCAxNjA4MTksIDE2MDgyMiwgMTYwODI2LCAxNjA4MzAsIDAsIDAsIDAsIDE2MDgzNCwgMTYwODM2LCAKKyAgICAxNjA4NDIsIDE2MDg0NiwgMTYwODUwLCAxNjA4NTIsIDE2MDg1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTYwODU4LCAxNjA4NjMsIDE2MDg2OCwgMTYwODczLCAxNjA4NzgsIDE2MDg4MywgMTYwODg4LCAxNjA4OTUsIDE2MDkwMiwgCisgICAgMTYwOTA5LCAxNjA5MTYsIDE2MDkyMSwgMTYwOTI2LCAxNjA5MzEsIDE2MDkzNiwgMTYwOTQzLCAxNjA5NDksIDE2MDk1NiwgCisgICAgMTYwOTYzLCAxNjA5NzAsIDE2MDk3NSwgMTYwOTgwLCAxNjA5ODUsIDE2MDk5MCwgMTYwOTk1LCAxNjEwMDIsIDE2MTAwOSwgCisgICAgMTYxMDE0LCAxNjEwMTksIDE2MTAyNiwgMTYxMDMzLCAxNjEwNDEsIDE2MTA0OSwgMTYxMDU2LCAxNjEwNjMsIDE2MTA3MSwgCisgICAgMTYxMDc5LCAxNjEwODcsIDE2MTA5NCwgMTYxMTA0LCAxNjExMTUsIDE2MTEyMCwgMTYxMTI3LCAxNjExMzQsIDE2MTE0MSwgCisgICAgMTYxMTQ5LCAxNjExNTcsIDE2MTE2OCwgMTYxMTc2LCAxNjExODQsIDE2MTE5MiwgMTYxMTk3LCAxNjEyMDIsIDE2MTIwNywgCisgICAgMTYxMjEyLCAxNjEyMTcsIDE2MTIyMiwgMTYxMjI3LCAxNjEyMzIsIDE2MTIzNywgMTYxMjQyLCAxNjEyNDcsIDE2MTI1MiwgCisgICAgMTYxMjU5LCAxNjEyNjQsIDE2MTI2OSwgMTYxMjc2LCAxNjEyODEsIDE2MTI4NiwgMTYxMjkxLCAxNjEyOTYsIDE2MTMwMSwgCisgICAgMTYxMzA2LCAxNjEzMTEsIDE2MTMxNiwgMTYxMzIxLCAxNjEzMjYsIDE2MTMzMSwgMTYxMzM2LCAxNjEzNDMsIDE2MTM1MSwgCisgICAgMTYxMzU2LCAxNjEzNjEsIDE2MTM2OCwgMTYxMzczLCAxNjEzNzgsIDE2MTM4MywgMTYxMzkwLCAxNjEzOTUsIDE2MTQwMiwgCisgICAgMTYxNDA3LCAxNjE0MTQsIDE2MTQxOSwgMTYxNDI4LCAxNjE0MzcsIDE2MTQ0MiwgMTYxNDQ3LCAxNjE0NTIsIDE2MTQ1NywgCisgICAgMTYxNDYyLCAxNjE0NjcsIDE2MTQ3MiwgMTYxNDc3LCAxNjE0ODIsIDE2MTQ4NywgMTYxNDkyLCAxNjE0OTcsIDE2MTUwMiwgCisgICAgMTYxNTEwLCAxNjE1MTgsIDE2MTUyMywgMTYxNTI4LCAxNjE1MzMsIDE2MTUzOCwgMTYxNTQzLCAxNjE1NDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MTU1NSwgMTYxNTYzLCAxNjE1NzEsIDE2MTU3OSwgMTYxNTg3LCAKKyAgICAxNjE1OTMsIDE2MTU5OSwgMTYxNjAzLCAxNjE2MDcsIDE2MTYxMywgMTYxNjE5LCAxNjE2MjgsIDE2MTYzMiwgMTYxNjM3LCAKKyAgICAxNjE2NDMsIDE2MTY0NywgMTYxNjUyLCAxNjE2NTYsIDE2MTY2MCwgMTYxNjY2LCAxNjE2NzIsIDE2MTY4MiwgMTYxNjkxLCAKKyAgICAxNjE2OTQsIDE2MTY5OSwgMTYxNzA1LCAxNjE3MTEsIDE2MTcyMiwgMTYxNzMyLCAxNjE3MzYsIDE2MTc0MSwgMTYxNzQ3LCAKKyAgICAxNjE3NTMsIDE2MTc2MiwgMTYxNzY3LCAxNjE3NzEsIDE2MTc3NiwgMTYxNzgwLCAxNjE3ODYsIDE2MTc5MiwgMTYxNzk4LCAKKyAgICAxNjE4MDIsIDE2MTgwNSwgMTYxODA5LCAxNjE4MTIsIDE2MTgxNSwgMTYxODIwLCAxNjE4MjUsIDE2MTgzMiwgMTYxODQwLCAKKyAgICAxNjE4NDcsIDE2MTg1NCwgMTYxODYzLCAxNjE4NzIsIDE2MTg3OSwgMTYxODg3LCAxNjE4OTQsIDE2MTkwMSwgMTYxOTEwLCAKKyAgICAxNjE5MTksIDE2MTkyNiwgMTYxOTM0LCAxNjE5NDEsIDE2MTk0OCwgMTYxOTU3LCAxNjE5NjQsIDE2MTk3MiwgMTYxOTc4LCAKKyAgICAxNjE5ODcsIDE2MTk5NSwgMTYyMDA0LCAxNjIwMTEsIDE2MjAyMSwgMTYyMDMyLCAxNjIwNDAsIDE2MjA0OCwgMTYyMDU3LCAKKyAgICAxNjIwNjUsIDE2MjA3MywgMTYyMDgyLCAxNjIwOTAsIDE2MjEwMCwgMTYyMTA5LCAxNjIxMTcsIDE2MjEyNSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYyMTM0LCAxNjIxNDIsIDE2MjE1MCwgCisgICAgMTYyMTU4LCAxNjIxNjYsIDE2MjE3NSwgMTYyMTg0LCAxNjIxOTMsIDE2MjIwMiwgMTYyMjExLCAxNjIyMjAsIDE2MjIyOSwgCisgICAgMCwgMCwgMCwgMCwgMTYyMjM4LCAxNjIyNDYsIDE2MjI1NCwgMTYyMjYyLCAxNjIyNzAsIDE2MjI3NywgMTYyMjg0LCAKKyAgICAxNjIyOTEsIDE2MjI5OCwgMTYyMzA2LCAxNjIzMTQsIDE2MjMyMiwgMTYyMzMwLCAxNjIzNDAsIDE2MjM1MCwgMTYyMzYwLCAKKyAgICAxNjIzNzAsIDE2MjM3OSwgMTYyMzg4LCAxNjIzOTcsIDE2MjQwNiwgMTYyNDE1LCAxNjI0MjQsIDE2MjQzMywgMTYyNDQyLCAKKyAgICAxNjI0NTAsIDE2MjQ1OCwgMTYyNDY2LCAxNjI0NzQsIDE2MjQ4MiwgMTYyNDkwLCAxNjI0OTgsIDE2MjUwNiwgMTYyNTE2LCAKKyAgICAxNjI1MjYsIDE2MjUzNiwgMTYyNTQ2LCAxNjI1NTAsIDE2MjU1NCwgMTYyNTU4LCAxNjI1NjIsIDE2MjU2NSwgMTYyNTY4LCAKKyAgICAxNjI1NzEsIDE2MjU3NCwgMTYyNTc4LCAxNjI1ODIsIDE2MjU4NiwgMTYyNTkwLCAxNjI1OTUsIDE2MjYwMCwgMTYyNjA1LCAKKyAgICAxNjI2MTAsIDE2MjYxMywgMTYyNjE2LCAxNjI2MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MjYyMiwgMTYyNjI1LCAKKyAgICAxNjI2MjgsIDE2MjYzMSwgMTYyNjM0LCAxNjI2MzksIDE2MjY0NCwgMTYyNjUwLCAxNjI2NTYsIDE2MjY2MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTYyNjY0LCAxNjI2NzAsIDE2MjY3NiwgMTYyNjgyLCAxNjI2ODgsIDE2MjY5NiwgMTYyNzA0LCAxNjI3MTMsIAorICAgIDE2MjcyMiwgMTYyNzI3LCAxNjI3MzIsIDE2MjczNywgMTYyNzQyLCAxNjI3NDksIDE2Mjc1NiwgMTYyNzY0LCAxNjI3NzIsIAorICAgIDE2Mjc3OSwgMTYyNzg2LCAxNjI3OTMsIDE2MjgwMCwgMTYyODA5LCAxNjI4MTgsIDE2MjgyOCwgMTYyODM4LCAxNjI4NDQsIAorICAgIDE2Mjg1MCwgMTYyODU2LCAxNjI4NjIsIDE2Mjg3MCwgMTYyODc4LCAxNjI4ODcsIDE2Mjg5NiwgMTYyOTA0LCAxNjI5MTIsIAorICAgIDE2MjkyMCwgMTYyOTI4LCAxNjI5MzgsIDE2Mjk0OCwgMTYyOTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjI5NzAsIAorICAgIDE2Mjk3NSwgMTYyOTgwLCAxNjI5ODUsIDE2Mjk5MCwgMTYyOTk5LCAxNjMwMDgsIDE2MzAxNywgMTYzMDI2LCAxNjMwMzMsIAorICAgIDE2MzA0MCwgMTYzMDQ3LCAxNjMwNTQsIDE2MzA2MSwgMTYzMDcwLCAxNjMwNzksIDE2MzA4OCwgMTYzMDkzLCAxNjMxMDAsIAorICAgIDE2MzEwNywgMTYzMTE0LCAxNjMxMTksIDE2MzEyNCwgMTYzMTI5LCAxNjMxMzQsIDE2MzE0MSwgMTYzMTQ4LCAxNjMxNTUsIAorICAgIDE2MzE2MiwgMTYzMTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc2MTAsIDE1NzYxMiwgCi0gICAgMTU3NjE2LCAxNTc2MTgsIDE1NzYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjI0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjMxNzgsIDE2MzE4MiwgMTYzMTg2LCAxNjMxOTEsIDE2MzE5NSwgMTYzMTk5LCAKKyAgICAxNjMyMDQsIDE2MzIwOCwgMTYzMjEyLCAxNjMyMTgsIDE2MzIyNCwgMTYzMjMxLCAxNjMyMzUsIDE2MzIzOSwgMTYzMjQxLCAKKyAgICAwLCAxNjMyNTEsIDE2MzI1OCwgMTYzMjYyLCAxNjMyNjYsIDE2MzI3NiwgMTYzMjgwLCAxNjMyODQsIDE2MzI4OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTYzMjkyLCAwLCAwLCAxNjMyOTYsIDE2MzI5OCwgMTYzMzAwLCAxNjMzMDYsIDE2MzMxMCwgCisgICAgMTYzMzEyLCAxNjMzMTgsIDE2MzMyMCwgMTYzMzIyLCAxNjMzMjYsIDE2MzMyOCwgMTYzMzMyLCAwLCAxNjMzMzQsIAorICAgIDE2MzMzOCwgMTYzMzQzLCAxNjMzNDcsIDE2MzM1MSwgMTYzMzUzLCAxNjMzNTcsIDE2MzM1OSwgMTYzMzY1LCAxNjMzNzEsIAorICAgIDE2MzM3NywgMTYzMzgxLCAwLCAwLCAwLCAwLCAxNjMzODcsIDE2MzM4OSwgMTYzMzkxLCAxNjMzOTMsIDE2MzM5NSwgCisgICAgMTYzMzk3LCAxNjMzOTksIDE2MzQwMywgMTYzNDA3LCAxNjM0MTQsIDE2MzQxOCwgMTYzNDIwLCAxNjM0MjUsIDE2MzQyNywgCisgICAgMTYzNDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjM0MzEsIDE2MzQzMywgMTYzNDM3LCAxNjM0MzksIDE2MzQ0MSwgCisgICAgMTYzNDQ1LCAxNjM0NDcsIDE2MzQ0OSwgMTYzNDUxLCAxNjM0NTMsIDE2MzQ1NSwgMTYzNDU5LCAxNjM0NjEsIDE2MzQ2MywgCisgICAgMTYzNDY1LCAxNjM0NjcsIDE2MzQ2OSwgMTYzNDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjM0NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzYyOCwgMTU3NjMyLCAxNTc2MzYsIDE1NzY0MCwgCi0gICAgMTU3NjQ0LCAxNTc2NDgsIDE1NzY1MiwgMTU3NjU2LCAxNTc2NjAsIDE1NzY2NCwgMTU3NjY4LCAxNTc2NzIsIDE1NzY3NiwgCi0gICAgMTU3NjgwLCAxNTc2ODQsIDE1NzY4OCwgMTU3NjkyLCAxNTc2OTYsIDE1NzcwMCwgMTU3NzA0LCAxNTc3MDgsIDE1NzcxMiwgCi0gICAgMTU3NzE2LCAxNTc3MjAsIDE1NzcyNCwgMTU3NzI4LCAxNTc3MzIsIDE1NzczNiwgMTU3NzQwLCAxNTc3NDQsIDE1Nzc0OCwgCi0gICAgMTU3NzUyLCAxNTc3NTYsIDE1Nzc2MCwgMTU3NzY0LCAxNTc3NjgsIDE1Nzc3MiwgMTU3Nzc2LCAxNTc3ODAsIDE1Nzc4NCwgCi0gICAgMTU3Nzg4LCAxNTc3OTIsIDE1Nzc5NiwgMTU3ODAwLCAxNTc4MDQsIDE1NzgwOCwgMTU3ODEyLCAxNTc4MTYsIDE1NzgyMCwgCi0gICAgMTU3ODI0LCAxNTc4MjgsIDE1NzgzMiwgMTU3ODM2LCAxNTc4NDAsIDE1Nzg0NCwgMTU3ODQ4LCAxNTc4NTIsIDE1Nzg1NiwgCi0gICAgMTU3ODYwLCAxNTc4NjQsIDE1Nzg2OCwgMTU3ODcyLCAxNTc4NzYsIDE1Nzg4MCwgMTU3ODg0LCAxNTc4ODgsIDE1Nzg5MiwgCi0gICAgMTU3ODk2LCAxNTc5MDAsIDE1NzkwNCwgMTU3OTA4LCAxNTc5MTIsIDE1NzkxNiwgMTU3OTIwLCAxNTc5MjQsIDE1NzkyOCwgCi0gICAgMTU3OTMyLCAxNTc5MzYsIDE1Nzk0MCwgMTU3OTQ0LCAxNTc5NDgsIDE1Nzk1MiwgMTU3OTU2LCAxNTc5NjAsIDE1Nzk2NCwgCi0gICAgMTU3OTY4LCAxNTc5NzIsIDE1Nzk3NiwgMTU3OTgwLCAxNTc5ODQsIDE1Nzk4OCwgMTU3OTkyLCAxNTc5OTYsIDE1ODAwMCwgCi0gICAgMTU4MDA0LCAxNTgwMDgsIDE1ODAxMiwgMTU4MDE2LCAxNTgwMjAsIDE1ODAyNCwgMTU4MDI4LCAxNTgwMzIsIDE1ODAzNiwgCi0gICAgMTU4MDQwLCAxNTgwNDQsIDE1ODA0OCwgMTU4MDUyLCAxNTgwNTYsIDE1ODA2MCwgMTU4MDY0LCAxNTgwNjgsIDE1ODA3MiwgCi0gICAgMTU4MDc2LCAxNTgwODAsIDE1ODA4NCwgMTU4MDg4LCAxNTgwOTIsIDE1ODA5NiwgMTU4MTAwLCAxNTgxMDQsIDE1ODEwOCwgCi0gICAgMTU4MTEyLCAxNTgxMTYsIDE1ODEyMCwgMTU4MTI0LCAxNTgxMjgsIDE1ODEzMiwgMTU4MTM2LCAxNTgxNDAsIDE1ODE0NCwgCi0gICAgMTU4MTQ4LCAxNTgxNTIsIDE1ODE1NiwgMTU4MTYwLCAxNTgxNjQsIDE1ODE2OCwgMTU4MTcyLCAxNTgxNzYsIDE1ODE4MCwgCi0gICAgMTU4MTg0LCAxNTgxODgsIDE1ODE5MiwgMTU4MTk2LCAxNTgyMDAsIDE1ODIwNCwgMTU4MjA4LCAxNTgyMTIsIDE1ODIxNiwgCi0gICAgMTU4MjIwLCAxNTgyMjQsIDE1ODIyOCwgMTU4MjMyLCAxNTgyMzYsIDE1ODI0MCwgMTU4MjQ0LCAxNTgyNDgsIDE1ODI1MiwgCi0gICAgMTU4MjU2LCAxNTgyNjAsIDE1ODI2NCwgMTU4MjY4LCAxNTgyNzIsIDE1ODI3NiwgMTU4MjgwLCAxNTgyODQsIDE1ODI4OCwgCi0gICAgMTU4MjkyLCAxNTgyOTYsIDE1ODMwMCwgMTU4MzA0LCAxNTgzMDgsIDE1ODMxMiwgMTU4MzE2LCAxNTgzMjAsIDE1ODMyNCwgCi0gICAgMTU4MzI4LCAxNTgzMzIsIDE1ODMzNiwgMTU4MzQwLCAxNTgzNDQsIDE1ODM0OCwgMTU4MzUyLCAxNTgzNTYsIDE1ODM2MCwgCi0gICAgMTU4MzY0LCAxNTgzNjgsIDE1ODM3MiwgMTU4Mzc2LCAxNTgzODAsIDE1ODM4NCwgMTU4Mzg4LCAxNTgzOTIsIDE1ODM5NiwgCi0gICAgMTU4NDAwLCAxNTg0MDQsIDE1ODQwOCwgMTU4NDEyLCAxNTg0MTYsIDE1ODQyMCwgMTU4NDI0LCAxNTg0MjgsIDE1ODQzMiwgCi0gICAgMTU4NDM2LCAxNTg0NDAsIDE1ODQ0NCwgMTU4NDQ4LCAxNTg0NTIsIDE1ODQ1NiwgMTU4NDYwLCAxNTg0NjQsIDE1ODQ2OCwgCi0gICAgMTU4NDcyLCAxNTg0NzYsIDE1ODQ4MCwgMTU4NDg0LCAxNTg0ODgsIDE1ODQ5MiwgMTU4NDk2LCAxNTg1MDAsIDE1ODUwNCwgCi0gICAgMTU4NTA4LCAxNTg1MTIsIDE1ODUxNiwgMTU4NTIwLCAxNTg1MjQsIDE1ODUyOCwgMTU4NTMyLCAxNTg1MzYsIDE1ODU0MCwgCi0gICAgMTU4NTQ0LCAxNTg1NDgsIDE1ODU1MiwgMTU4NTU2LCAxNTg1NjAsIDE1ODU2NCwgMTU4NTY4LCAxNTg1NzIsIDE1ODU3NiwgCi0gICAgMTU4NTgwLCAxNTg1ODQsIDE1ODU4OCwgMTU4NTkyLCAxNTg1OTYsIDE1ODYwMCwgMTU4NjA0LCAxNTg2MDgsIDE1ODYxMiwgCi0gICAgMTU4NjE2LCAxNTg2MjAsIDE1ODYyNCwgMTU4NjI4LCAxNTg2MzIsIDE1ODYzNiwgMTU4NjQwLCAxNTg2NDQsIDE1ODY0OCwgCi0gICAgMTU4NjUyLCAxNTg2NTYsIDE1ODY2MCwgMTU4NjY0LCAxNTg2NjgsIDE1ODY3MiwgMTU4Njc2LCAxNTg2ODAsIDE1ODY4NCwgCi0gICAgMTU4Njg4LCAxNTg2OTIsIDE1ODY5NiwgMTU4NzAwLCAxNTg3MDQsIDE1ODcwOCwgMTU4NzEyLCAxNTg3MTYsIDE1ODcyMCwgCi0gICAgMTU4NzI0LCAxNTg3MjgsIDE1ODczMiwgMTU4NzM2LCAxNTg3NDAsIDE1ODc0NCwgMTU4NzQ4LCAxNTg3NTIsIDE1ODc1NiwgCi0gICAgMTU4NzYwLCAxNTg3NjQsIDE1ODc2OCwgMTU4NzcyLCAxNTg3NzYsIDE1ODc4MCwgMTU4Nzg0LCAxNTg3ODgsIDE1ODc5MiwgCi0gICAgMTU4Nzk2LCAxNTg4MDAsIDE1ODgwNCwgMTU4ODA4LCAxNTg4MTIsIDE1ODgxNiwgMTU4ODIwLCAxNTg4MjQsIDE1ODgyOCwgCi0gICAgMTU4ODMyLCAxNTg4MzYsIDE1ODg0MCwgMTU4ODQ0LCAxNTg4NDgsIDE1ODg1MiwgMTU4ODU2LCAxNTg4NjAsIDE1ODg2NCwgCi0gICAgMTU4ODY4LCAxNTg4NzIsIDE1ODg3NiwgMTU4ODgwLCAxNTg4ODQsIDE1ODg4OCwgMTU4ODkyLCAxNTg4OTYsIDE1ODkwMCwgCi0gICAgMTU4OTA0LCAxNTg5MDgsIDE1ODkxMiwgMTU4OTE2LCAxNTg5MjAsIDE1ODkyNCwgMTU4OTI4LCAxNTg5MzIsIDE1ODkzNiwgCi0gICAgMTU4OTQwLCAxNTg5NDQsIDE1ODk0OCwgMTU4OTUyLCAxNTg5NTYsIDE1ODk2MCwgMTU4OTY0LCAxNTg5NjgsIDE1ODk3MiwgCi0gICAgMTU4OTc2LCAxNTg5ODAsIDE1ODk4NCwgMTU4OTg4LCAxNTg5OTIsIDE1ODk5NiwgMTU5MDAwLCAxNTkwMDQsIDE1OTAwOCwgCi0gICAgMTU5MDEyLCAxNTkwMTYsIDE1OTAyMCwgMTU5MDI0LCAxNTkwMjgsIDE1OTAzMiwgMTU5MDM2LCAxNTkwNDAsIDE1OTA0NCwgCi0gICAgMTU5MDQ4LCAxNTkwNTIsIDE1OTA1NiwgMTU5MDYwLCAxNTkwNjQsIDE1OTA2OCwgMTU5MDcyLCAxNTkwNzYsIDE1OTA4MCwgCi0gICAgMTU5MDg0LCAxNTkwODgsIDE1OTA5MiwgMTU5MDk2LCAxNTkxMDAsIDE1OTEwNCwgMTU5MTA4LCAxNTkxMTIsIDE1OTExNiwgCi0gICAgMTU5MTIwLCAxNTkxMjQsIDE1OTEyOCwgMTU5MTMyLCAxNTkxMzYsIDE1OTE0MCwgMTU5MTQ0LCAxNTkxNDgsIDE1OTE1MiwgCi0gICAgMTU5MTU2LCAxNTkxNjAsIDE1OTE2NCwgMTU5MTY4LCAxNTkxNzIsIDE1OTE3NiwgMTU5MTgwLCAxNTkxODQsIDE1OTE4OCwgCi0gICAgMTU5MTkyLCAxNTkxOTYsIDE1OTIwMCwgMTU5MjA0LCAxNTkyMDgsIDE1OTIxMiwgMTU5MjE2LCAxNTkyMjAsIDE1OTIyNCwgCi0gICAgMTU5MjI4LCAxNTkyMzIsIDE1OTIzNiwgMTU5MjQwLCAxNTkyNDQsIDE1OTI0OCwgMTU5MjUyLCAxNTkyNTYsIDE1OTI2MCwgCi0gICAgMTU5MjY0LCAxNTkyNjgsIDE1OTI3MiwgMTU5Mjc2LCAxNTkyODAsIDE1OTI4NCwgMTU5Mjg4LCAxNTkyOTIsIDE1OTI5NiwgCi0gICAgMTU5MzAwLCAxNTkzMDQsIDE1OTMwOCwgMTU5MzEyLCAxNTkzMTYsIDE1OTMyMCwgMTU5MzI0LCAxNTkzMjgsIDE1OTMzMiwgCi0gICAgMTU5MzM2LCAxNTkzNDAsIDE1OTM0NCwgMTU5MzQ4LCAxNTkzNTIsIDE1OTM1NiwgMTU5MzYwLCAxNTkzNjQsIDE1OTM2OCwgCi0gICAgMTU5MzcyLCAxNTkzNzYsIDE1OTM4MCwgMTU5Mzg0LCAxNTkzODgsIDE1OTM5MiwgMTU5Mzk2LCAxNTk0MDAsIDE1OTQwNCwgCi0gICAgMTU5NDA4LCAxNTk0MTIsIDE1OTQxNiwgMTU5NDIwLCAxNTk0MjQsIDE1OTQyOCwgMTU5NDMyLCAxNTk0MzYsIDE1OTQ0MCwgCi0gICAgMTU5NDQ0LCAxNTk0NDgsIDE1OTQ1MiwgMTU5NDU2LCAxNTk0NjAsIDE1OTQ2NCwgMTU5NDY4LCAxNTk0NzIsIDE1OTQ3NiwgCi0gICAgMTU5NDgwLCAxNTk0ODQsIDE1OTQ4OCwgMTU5NDkyLCAxNTk0OTYsIDE1OTUwMCwgMTU5NTA0LCAxNTk1MDgsIDE1OTUxMiwgCi0gICAgMTU5NTE2LCAxNTk1MjAsIDE1OTUyNCwgMTU5NTI4LCAxNTk1MzIsIDE1OTUzNiwgMTU5NTQwLCAxNTk1NDQsIDE1OTU0OCwgCi0gICAgMTU5NTUyLCAxNTk1NTYsIDE1OTU2MCwgMTU5NTY0LCAxNTk1NjgsIDE1OTU3MiwgMTU5NTc2LCAxNTk1ODAsIDE1OTU4NCwgCi0gICAgMTU5NTg4LCAxNTk1OTIsIDE1OTU5NiwgMTU5NjAwLCAxNTk2MDQsIDE1OTYwOCwgMTU5NjEyLCAxNTk2MTYsIDE1OTYyMCwgCi0gICAgMTU5NjI0LCAxNTk2MjgsIDE1OTYzMiwgMTU5NjM2LCAxNTk2NDAsIDE1OTY0NCwgMTU5NjQ4LCAxNTk2NTIsIDE1OTY1NiwgCi0gICAgMTU5NjYwLCAxNTk2NjQsIDE1OTY2OCwgMTU5NjcyLCAxNTk2NzYsIDE1OTY4MCwgMTU5Njg0LCAxNTk2ODgsIDE1OTY5MiwgCi0gICAgMTU5Njk2LCAxNTk3MDAsIDE1OTcwNCwgMTU5NzA4LCAxNTk3MTIsIDE1OTcxNiwgMTU5NzIwLCAxNTk3MjQsIDE1OTcyOCwgCi0gICAgMTU5NzMyLCAxNTk3MzYsIDE1OTc0MCwgMTU5NzQ0LCAxNTk3NDgsIDE1OTc1MiwgMTU5NzU2LCAxNTk3NjAsIDE1OTc2NCwgCi0gICAgMTU5NzY4LCAxNTk3NzIsIDE1OTc3NiwgMTU5NzgwLCAxNTk3ODQsIDE1OTc4OCwgMTU5NzkyLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNjM0NzcsIDE2MzQ4MSwgMTYzNDg1LCAxNjM0ODksIDE2MzQ5MywgMTYzNDk3LCAxNjM1MDEsIDE2MzUwNSwgCisgICAgMTYzNTA5LCAxNjM1MTMsIDE2MzUxNywgMTYzNTIxLCAxNjM1MjUsIDE2MzUyOSwgMTYzNTMzLCAxNjM1MzcsIDE2MzU0MSwgCisgICAgMTYzNTQ1LCAxNjM1NDksIDE2MzU1MywgMTYzNTU3LCAxNjM1NjEsIDE2MzU2NSwgMTYzNTY5LCAxNjM1NzMsIDE2MzU3NywgCisgICAgMTYzNTgxLCAxNjM1ODUsIDE2MzU4OSwgMTYzNTkzLCAxNjM1OTcsIDE2MzYwMSwgMTYzNjA1LCAxNjM2MDksIDE2MzYxMywgCisgICAgMTYzNjE3LCAxNjM2MjEsIDE2MzYyNSwgMTYzNjI5LCAxNjM2MzMsIDE2MzYzNywgMTYzNjQxLCAxNjM2NDUsIDE2MzY0OSwgCisgICAgMTYzNjUzLCAxNjM2NTcsIDE2MzY2MSwgMTYzNjY1LCAxNjM2NjksIDE2MzY3MywgMTYzNjc3LCAxNjM2ODEsIDE2MzY4NSwgCisgICAgMTYzNjg5LCAxNjM2OTMsIDE2MzY5NywgMTYzNzAxLCAxNjM3MDUsIDE2MzcwOSwgMTYzNzEzLCAxNjM3MTcsIDE2MzcyMSwgCisgICAgMTYzNzI1LCAxNjM3MjksIDE2MzczMywgMTYzNzM3LCAxNjM3NDEsIDE2Mzc0NSwgMTYzNzQ5LCAxNjM3NTMsIDE2Mzc1NywgCisgICAgMTYzNzYxLCAxNjM3NjUsIDE2Mzc2OSwgMTYzNzczLCAxNjM3NzcsIDE2Mzc4MSwgMTYzNzg1LCAxNjM3ODksIDE2Mzc5MywgCisgICAgMTYzNzk3LCAxNjM4MDEsIDE2MzgwNSwgMTYzODA5LCAxNjM4MTMsIDE2MzgxNywgMTYzODIxLCAxNjM4MjUsIDE2MzgyOSwgCisgICAgMTYzODMzLCAxNjM4MzcsIDE2Mzg0MSwgMTYzODQ1LCAxNjM4NDksIDE2Mzg1MywgMTYzODU3LCAxNjM4NjEsIDE2Mzg2NSwgCisgICAgMTYzODY5LCAxNjM4NzMsIDE2Mzg3NywgMTYzODgxLCAxNjM4ODUsIDE2Mzg4OSwgMTYzODkzLCAxNjM4OTcsIDE2MzkwMSwgCisgICAgMTYzOTA1LCAxNjM5MDksIDE2MzkxMywgMTYzOTE3LCAxNjM5MjEsIDE2MzkyNSwgMTYzOTI5LCAxNjM5MzMsIDE2MzkzNywgCisgICAgMTYzOTQxLCAxNjM5NDUsIDE2Mzk0OSwgMTYzOTUzLCAxNjM5NTcsIDE2Mzk2MSwgMTYzOTY1LCAxNjM5NjksIDE2Mzk3MywgCisgICAgMTYzOTc3LCAxNjM5ODEsIDE2Mzk4NSwgMTYzOTg5LCAxNjM5OTMsIDE2Mzk5NywgMTY0MDAxLCAxNjQwMDUsIDE2NDAwOSwgCisgICAgMTY0MDEzLCAxNjQwMTcsIDE2NDAyMSwgMTY0MDI1LCAxNjQwMjksIDE2NDAzMywgMTY0MDM3LCAxNjQwNDEsIDE2NDA0NSwgCisgICAgMTY0MDQ5LCAxNjQwNTMsIDE2NDA1NywgMTY0MDYxLCAxNjQwNjUsIDE2NDA2OSwgMTY0MDczLCAxNjQwNzcsIDE2NDA4MSwgCisgICAgMTY0MDg1LCAxNjQwODksIDE2NDA5MywgMTY0MDk3LCAxNjQxMDEsIDE2NDEwNSwgMTY0MTA5LCAxNjQxMTMsIDE2NDExNywgCisgICAgMTY0MTIxLCAxNjQxMjUsIDE2NDEyOSwgMTY0MTMzLCAxNjQxMzcsIDE2NDE0MSwgMTY0MTQ1LCAxNjQxNDksIDE2NDE1MywgCisgICAgMTY0MTU3LCAxNjQxNjEsIDE2NDE2NSwgMTY0MTY5LCAxNjQxNzMsIDE2NDE3NywgMTY0MTgxLCAxNjQxODUsIDE2NDE4OSwgCisgICAgMTY0MTkzLCAxNjQxOTcsIDE2NDIwMSwgMTY0MjA1LCAxNjQyMDksIDE2NDIxMywgMTY0MjE3LCAxNjQyMjEsIDE2NDIyNSwgCisgICAgMTY0MjI5LCAxNjQyMzMsIDE2NDIzNywgMTY0MjQxLCAxNjQyNDUsIDE2NDI0OSwgMTY0MjUzLCAxNjQyNTcsIDE2NDI2MSwgCisgICAgMTY0MjY1LCAxNjQyNjksIDE2NDI3MywgMTY0Mjc3LCAxNjQyODEsIDE2NDI4NSwgMTY0Mjg5LCAxNjQyOTMsIDE2NDI5NywgCisgICAgMTY0MzAxLCAxNjQzMDUsIDE2NDMwOSwgMTY0MzEzLCAxNjQzMTcsIDE2NDMyMSwgMTY0MzI1LCAxNjQzMjksIDE2NDMzMywgCisgICAgMTY0MzM3LCAxNjQzNDEsIDE2NDM0NSwgMTY0MzQ5LCAxNjQzNTMsIDE2NDM1NywgMTY0MzYxLCAxNjQzNjUsIDE2NDM2OSwgCisgICAgMTY0MzczLCAxNjQzNzcsIDE2NDM4MSwgMTY0Mzg1LCAxNjQzODksIDE2NDM5MywgMTY0Mzk3LCAxNjQ0MDEsIDE2NDQwNSwgCisgICAgMTY0NDA5LCAxNjQ0MTMsIDE2NDQxNywgMTY0NDIxLCAxNjQ0MjUsIDE2NDQyOSwgMTY0NDMzLCAxNjQ0MzcsIDE2NDQ0MSwgCisgICAgMTY0NDQ1LCAxNjQ0NDksIDE2NDQ1MywgMTY0NDU3LCAxNjQ0NjEsIDE2NDQ2NSwgMTY0NDY5LCAxNjQ0NzMsIDE2NDQ3NywgCisgICAgMTY0NDgxLCAxNjQ0ODUsIDE2NDQ4OSwgMTY0NDkzLCAxNjQ0OTcsIDE2NDUwMSwgMTY0NTA1LCAxNjQ1MDksIDE2NDUxMywgCisgICAgMTY0NTE3LCAxNjQ1MjEsIDE2NDUyNSwgMTY0NTI5LCAxNjQ1MzMsIDE2NDUzNywgMTY0NTQxLCAxNjQ1NDUsIDE2NDU0OSwgCisgICAgMTY0NTUzLCAxNjQ1NTcsIDE2NDU2MSwgMTY0NTY1LCAxNjQ1NjksIDE2NDU3MywgMTY0NTc3LCAxNjQ1ODEsIDE2NDU4NSwgCisgICAgMTY0NTg5LCAxNjQ1OTMsIDE2NDU5NywgMTY0NjAxLCAxNjQ2MDUsIDE2NDYwOSwgMTY0NjEzLCAxNjQ2MTcsIDE2NDYyMSwgCisgICAgMTY0NjI1LCAxNjQ2MjksIDE2NDYzMywgMTY0NjM3LCAxNjQ2NDEsIDE2NDY0NSwgMTY0NjQ5LCAxNjQ2NTMsIDE2NDY1NywgCisgICAgMTY0NjYxLCAxNjQ2NjUsIDE2NDY2OSwgMTY0NjczLCAxNjQ2NzcsIDE2NDY4MSwgMTY0Njg1LCAxNjQ2ODksIDE2NDY5MywgCisgICAgMTY0Njk3LCAxNjQ3MDEsIDE2NDcwNSwgMTY0NzA5LCAxNjQ3MTMsIDE2NDcxNywgMTY0NzIxLCAxNjQ3MjUsIDE2NDcyOSwgCisgICAgMTY0NzMzLCAxNjQ3MzcsIDE2NDc0MSwgMTY0NzQ1LCAxNjQ3NDksIDE2NDc1MywgMTY0NzU3LCAxNjQ3NjEsIDE2NDc2NSwgCisgICAgMTY0NzY5LCAxNjQ3NzMsIDE2NDc3NywgMTY0NzgxLCAxNjQ3ODUsIDE2NDc4OSwgMTY0NzkzLCAxNjQ3OTcsIDE2NDgwMSwgCisgICAgMTY0ODA1LCAxNjQ4MDksIDE2NDgxMywgMTY0ODE3LCAxNjQ4MjEsIDE2NDgyNSwgMTY0ODI5LCAxNjQ4MzMsIDE2NDgzNywgCisgICAgMTY0ODQxLCAxNjQ4NDUsIDE2NDg0OSwgMTY0ODUzLCAxNjQ4NTcsIDE2NDg2MSwgMTY0ODY1LCAxNjQ4NjksIDE2NDg3MywgCisgICAgMTY0ODc3LCAxNjQ4ODEsIDE2NDg4NSwgMTY0ODg5LCAxNjQ4OTMsIDE2NDg5NywgMTY0OTAxLCAxNjQ5MDUsIDE2NDkwOSwgCisgICAgMTY0OTEzLCAxNjQ5MTcsIDE2NDkyMSwgMTY0OTI1LCAxNjQ5MjksIDE2NDkzMywgMTY0OTM3LCAxNjQ5NDEsIDE2NDk0NSwgCisgICAgMTY0OTQ5LCAxNjQ5NTMsIDE2NDk1NywgMTY0OTYxLCAxNjQ5NjUsIDE2NDk2OSwgMTY0OTczLCAxNjQ5NzcsIDE2NDk4MSwgCisgICAgMTY0OTg1LCAxNjQ5ODksIDE2NDk5MywgMTY0OTk3LCAxNjUwMDEsIDE2NTAwNSwgMTY1MDA5LCAxNjUwMTMsIDE2NTAxNywgCisgICAgMTY1MDIxLCAxNjUwMjUsIDE2NTAyOSwgMTY1MDMzLCAxNjUwMzcsIDE2NTA0MSwgMTY1MDQ1LCAxNjUwNDksIDE2NTA1MywgCisgICAgMTY1MDU3LCAxNjUwNjEsIDE2NTA2NSwgMTY1MDY5LCAxNjUwNzMsIDE2NTA3NywgMTY1MDgxLCAxNjUwODUsIDE2NTA4OSwgCisgICAgMTY1MDkzLCAxNjUwOTcsIDE2NTEwMSwgMTY1MTA1LCAxNjUxMDksIDE2NTExMywgMTY1MTE3LCAxNjUxMjEsIDE2NTEyNSwgCisgICAgMTY1MTI5LCAxNjUxMzMsIDE2NTEzNywgMTY1MTQxLCAxNjUxNDUsIDE2NTE0OSwgMTY1MTUzLCAxNjUxNTcsIDE2NTE2MSwgCisgICAgMTY1MTY1LCAxNjUxNjksIDE2NTE3MywgMTY1MTc3LCAxNjUxODEsIDE2NTE4NSwgMTY1MTg5LCAxNjUxOTMsIDE2NTE5NywgCisgICAgMTY1MjAxLCAxNjUyMDUsIDE2NTIwOSwgMTY1MjEzLCAxNjUyMTcsIDE2NTIyMSwgMTY1MjI1LCAxNjUyMjksIDE2NTIzMywgCisgICAgMTY1MjM3LCAxNjUyNDEsIDE2NTI0NSwgMTY1MjQ5LCAxNjUyNTMsIDE2NTI1NywgMTY1MjYxLCAxNjUyNjUsIDE2NTI2OSwgCisgICAgMTY1MjczLCAxNjUyNzcsIDE2NTI4MSwgMTY1Mjg1LCAxNjUyODksIDE2NTI5MywgMTY1Mjk3LCAxNjUzMDEsIDE2NTMwNSwgCisgICAgMTY1MzA5LCAxNjUzMTMsIDE2NTMxNywgMTY1MzIxLCAxNjUzMjUsIDE2NTMyOSwgMTY1MzMzLCAxNjUzMzcsIDE2NTM0MSwgCisgICAgMTY1MzQ1LCAxNjUzNDksIDE2NTM1MywgMTY1MzU3LCAxNjUzNjEsIDE2NTM2NSwgMTY1MzY5LCAxNjUzNzMsIDE2NTM3NywgCisgICAgMTY1MzgxLCAxNjUzODUsIDE2NTM4OSwgMTY1MzkzLCAxNjUzOTcsIDE2NTQwMSwgMTY1NDA1LCAxNjU0MDksIDE2NTQxMywgCisgICAgMTY1NDE3LCAxNjU0MjEsIDE2NTQyNSwgMTY1NDI5LCAxNjU0MzMsIDE2NTQzNywgMTY1NDQxLCAxNjU0NDUsIDE2NTQ0OSwgCisgICAgMTY1NDUzLCAxNjU0NTcsIDE2NTQ2MSwgMTY1NDY1LCAxNjU0NjksIDE2NTQ3MywgMTY1NDc3LCAxNjU0ODEsIDE2NTQ4NSwgCisgICAgMTY1NDg5LCAxNjU0OTMsIDE2NTQ5NywgMTY1NTAxLCAxNjU1MDUsIDE2NTUwOSwgMTY1NTEzLCAxNjU1MTcsIDE2NTUyMSwgCisgICAgMTY1NTI1LCAxNjU1MjksIDE2NTUzMywgMTY1NTM3LCAxNjU1NDEsIDE2NTU0NSwgMTY1NTQ5LCAxNjU1NTMsIDE2NTU1NywgCisgICAgMTY1NTYxLCAxNjU1NjUsIDE2NTU2OSwgMTY1NTczLCAxNjU1NzcsIDE2NTU4MSwgMTY1NTg1LCAxNjU1ODksIDE2NTU5MywgCisgICAgMTY1NTk3LCAxNjU2MDEsIDE2NTYwNSwgMTY1NjA5LCAxNjU2MTMsIDE2NTYxNywgMTY1NjIxLCAxNjU2MjUsIDE2NTYyOSwgCisgICAgMTY1NjMzLCAxNjU2MzcsIDE2NTY0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0yMDA3OCwzMTg2ICsyMTM1MywzMjc5IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTU5Nzk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTk4MDAsIDE1OTgwMywgMTU5ODA3LCAxNTk4MTEsIAotICAgIDE1OTgxNCwgMTU5ODE4LCAxNTk4MjIsIDE1OTgyNSwgMTU5ODI4LCAxNTk4MzIsIDE1OTgzNiwgMTU5ODM5LCAxNTk4NDIsIAotICAgIDE1OTg0NSwgMTU5ODQ4LCAxNTk4NTMsIDE1OTg1NiwgMTU5ODYwLCAxNTk4NjMsIDE1OTg2NiwgMTU5ODY5LCAxNTk4NzIsIAotICAgIDE1OTg3NSwgMTU5ODc4LCAxNTk4ODIsIDE1OTg4NSwgMTU5ODg5LCAxNTk4OTIsIDE1OTg5NSwgMTU5ODk5LCAxNTk5MDMsIAotICAgIDE1OTkwNywgMTU5OTExLCAxNTk5MTYsIDE1OTkyMSwgMTU5OTI3LCAxNTk5MzMsIDE1OTkzOSwgMTU5OTQ0LCAxNTk5NTAsIAotICAgIDE1OTk1NiwgMTU5OTYyLCAxNTk5NjcsIDE1OTk3MywgMTU5OTc5LCAxNTk5ODQsIDE1OTk5MCwgMTU5OTk2LCAxNjAwMDEsIAotICAgIDE2MDAwNywgMTYwMDEzLCAxNjAwMTgsIDE2MDAyMywgMTYwMDI5LCAxNjAwMzQsIDE2MDA0MCwgMTYwMDQ2LCAxNjAwNTIsIAotICAgIDE2MDA1OCwgMTYwMDY0LCAxNjAwNjgsIDE2MDA3MywgMTYwMDc3LCAxNjAwODIsIDE2MDA4NiwgMTYwMDkxLCAxNjAwOTYsIAotICAgIDE2MDEwMiwgMTYwMTA4LCAxNjAxMTQsIDE2MDExOSwgMTYwMTI1LCAxNjAxMzEsIDE2MDEzNywgMTYwMTQyLCAxNjAxNDgsIAotICAgIDE2MDE1NCwgMTYwMTU5LCAxNjAxNjUsIDE2MDE3MSwgMTYwMTc2LCAxNjAxODIsIDE2MDE4OCwgMTYwMTkzLCAxNjAxOTgsIAotICAgIDE2MDIwNCwgMTYwMjA5LCAxNjAyMTUsIDE2MDIyMSwgMTYwMjI3LCAxNjAyMzMsIDE2MDIzOSwgMTYwMjQ0LCAxNjAyNDgsIAotICAgIDE2MDI1MywgMTYwMjU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjU2NDUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE2NTY0OSwgMTY1NjUyLCAxNjU2NTYsIDE2NTY2MCwgMTY1NjYzLCAxNjU2NjcsIDE2NTY3MSwgMTY1Njc0LCAKKyAgICAxNjU2NzcsIDE2NTY4MSwgMTY1Njg1LCAxNjU2ODgsIDE2NTY5MSwgMTY1Njk0LCAxNjU2OTcsIDE2NTcwMiwgMTY1NzA1LCAKKyAgICAxNjU3MDksIDE2NTcxMiwgMTY1NzE1LCAxNjU3MTgsIDE2NTcyMSwgMTY1NzI0LCAxNjU3MjcsIDE2NTczMSwgMTY1NzM0LCAKKyAgICAxNjU3MzgsIDE2NTc0MSwgMTY1NzQ0LCAxNjU3NDgsIDE2NTc1MiwgMTY1NzU2LCAxNjU3NjAsIDE2NTc2NSwgMTY1NzcwLCAKKyAgICAxNjU3NzYsIDE2NTc4MiwgMTY1Nzg4LCAxNjU3OTMsIDE2NTc5OSwgMTY1ODA1LCAxNjU4MTEsIDE2NTgxNiwgMTY1ODIyLCAKKyAgICAxNjU4MjgsIDE2NTgzMywgMTY1ODM5LCAxNjU4NDUsIDE2NTg1MCwgMTY1ODU2LCAxNjU4NjIsIDE2NTg2NywgMTY1ODczLCAKKyAgICAxNjU4NzksIDE2NTg4NCwgMTY1ODkwLCAxNjU4OTYsIDE2NTkwMiwgMTY1OTA4LCAxNjU5MTQsIDE2NTkxOCwgMTY1OTIzLCAKKyAgICAxNjU5MjcsIDE2NTkzMiwgMTY1OTM2LCAxNjU5NDEsIDE2NTk0NiwgMTY1OTUyLCAxNjU5NTgsIDE2NTk2NCwgMTY1OTY5LCAKKyAgICAxNjU5NzUsIDE2NTk4MSwgMTY1OTg3LCAxNjU5OTIsIDE2NTk5OCwgMTY2MDA0LCAxNjYwMDksIDE2NjAxNSwgMTY2MDIxLCAKKyAgICAxNjYwMjYsIDE2NjAzMiwgMTY2MDM4LCAxNjYwNDMsIDE2NjA0OSwgMTY2MDU1LCAxNjYwNjAsIDE2NjA2NiwgMTY2MDcyLCAKKyAgICAxNjYwNzgsIDE2NjA4NCwgMTY2MDkwLCAxNjYwOTUsIDE2NjA5OSwgMTY2MTA0LCAxNjYxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDI2MCwgMTYwMjYzLCAxNjAyNjYsIDE2MDI2OSwgCi0gICAgMTYwMjcyLCAxNjAyNzUsIDE2MDI3OCwgMTYwMjgxLCAxNjAyODQsIDE2MDI4NywgMTYwMjkwLCAxNjAyOTMsIDE2MDI5NiwgCi0gICAgMTYwMjk5LCAxNjAzMDIsIDE2MDMwNSwgMTYwMzA4LCAxNjAzMTEsIDE2MDMxNCwgMTYwMzE3LCAxNjAzMjAsIDE2MDMyMywgCi0gICAgMTYwMzI2LCAxNjAzMjksIDE2MDMzMiwgMTYwMzM1LCAxNjAzMzgsIDE2MDM0MSwgMTYwMzQ0LCAxNjAzNDcsIDE2MDM1MCwgCi0gICAgMTYwMzUzLCAxNjAzNTYsIDE2MDM1OSwgMTYwMzYyLCAxNjAzNjUsIDE2MDM2OCwgMTYwMzcxLCAxNjAzNzQsIDE2MDM3NywgCi0gICAgMTYwMzgwLCAxNjAzODMsIDE2MDM4NiwgMTYwMzg5LCAxNjAzOTIsIDE2MDM5NSwgMTYwMzk4LCAxNjA0MDEsIDE2MDQwNCwgCi0gICAgMTYwNDA3LCAxNjA0MTAsIDE2MDQxMywgMTYwNDE2LCAxNjA0MTksIDE2MDQyMiwgMTYwNDI1LCAxNjA0MjgsIDE2MDQzMSwgCi0gICAgMTYwNDM0LCAxNjA0MzcsIDE2MDQ0MCwgMTYwNDQzLCAxNjA0NDYsIDE2MDQ0OSwgMTYwNDUyLCAxNjA0NTUsIDE2MDQ1OCwgCi0gICAgMTYwNDYxLCAxNjA0NjQsIDE2MDQ2NywgMTYwNDcwLCAxNjA0NzMsIDE2MDQ3NiwgMTYwNDc5LCAxNjA0ODIsIDE2MDQ4NSwgCi0gICAgMTYwNDg4LCAxNjA0OTEsIDE2MDQ5NCwgMTYwNDk3LCAxNjA1MDAsIDE2MDUwMywgMTYwNTA2LCAxNjA1MDksIDE2MDUxMiwgCi0gICAgMTYwNTE1LCAxNjA1MTgsIDE2MDUyMSwgMTYwNTI0LCAxNjA1MjcsIDE2MDUzMCwgMTYwNTMzLCAxNjA1MzYsIDE2MDUzOSwgCi0gICAgMTYwNTQyLCAxNjA1NDUsIDE2MDU0OCwgMTYwNTUxLCAxNjA1NTQsIDE2MDU1NywgMTYwNTYwLCAxNjA1NjMsIDE2MDU2NiwgCi0gICAgMTYwNTY5LCAxNjA1NzIsIDE2MDU3NSwgMTYwNTc4LCAxNjA1ODEsIDE2MDU4NCwgMTYwNTg3LCAxNjA1OTAsIDE2MDU5MywgCi0gICAgMTYwNTk2LCAxNjA1OTksIDE2MDYwMiwgMTYwNjA1LCAxNjA2MDgsIDE2MDYxMSwgMTYwNjE0LCAxNjA2MTcsIDE2MDYyMCwgCi0gICAgMTYwNjIzLCAxNjA2MjYsIDE2MDYyOSwgMTYwNjMyLCAxNjA2MzUsIDE2MDYzOCwgMTYwNjQxLCAxNjA2NDQsIDE2MDY0NywgCi0gICAgMTYwNjUwLCAxNjA2NTMsIDE2MDY1NiwgMTYwNjU5LCAxNjA2NjIsIDE2MDY2NSwgMTYwNjY4LCAxNjA2NzEsIDE2MDY3NCwgCi0gICAgMTYwNjc3LCAxNjA2ODAsIDE2MDY4MywgMTYwNjg2LCAxNjA2ODksIDE2MDY5MiwgMTYwNjk1LCAxNjA2OTgsIDE2MDcwMSwgCi0gICAgMTYwNzA0LCAxNjA3MDcsIDE2MDcxMCwgMTYwNzEzLCAxNjA3MTYsIDE2MDcxOSwgMTYwNzIyLCAxNjA3MjUsIDE2MDcyOCwgCi0gICAgMTYwNzMxLCAxNjA3MzQsIDE2MDczNywgMTYwNzQwLCAxNjA3NDMsIDE2MDc0NiwgMTYwNzQ5LCAxNjA3NTIsIDE2MDc1NSwgCi0gICAgMTYwNzU4LCAxNjA3NjEsIDE2MDc2NCwgMTYwNzY3LCAxNjA3NzAsIDE2MDc3MywgMTYwNzc2LCAxNjA3NzksIDE2MDc4MiwgCi0gICAgMTYwNzg1LCAxNjA3ODgsIDE2MDc5MSwgMTYwNzk0LCAxNjA3OTcsIDE2MDgwMCwgMTYwODAzLCAxNjA4MDYsIDE2MDgwOSwgCi0gICAgMTYwODEyLCAxNjA4MTUsIDE2MDgxOCwgMTYwODIxLCAxNjA4MjQsIDE2MDgyNywgMTYwODMwLCAxNjA4MzMsIDE2MDgzNiwgCi0gICAgMTYwODM5LCAxNjA4NDIsIDE2MDg0NSwgMTYwODQ4LCAxNjA4NTEsIDE2MDg1NCwgMTYwODU3LCAxNjA4NjAsIDE2MDg2MywgCi0gICAgMTYwODY2LCAxNjA4NjksIDE2MDg3MiwgMTYwODc1LCAxNjA4NzgsIDE2MDg4MSwgMTYwODg0LCAxNjA4ODcsIDE2MDg5MCwgCi0gICAgMTYwODkzLCAxNjA4OTYsIDE2MDg5OSwgMTYwOTAyLCAxNjA5MDUsIDE2MDkwOCwgMTYwOTExLCAxNjA5MTQsIDE2MDkxNywgCi0gICAgMTYwOTIwLCAxNjA5MjMsIDE2MDkyNiwgMTYwOTI5LCAxNjA5MzIsIDE2MDkzNSwgMTYwOTM4LCAxNjA5NDEsIDE2MDk0NCwgCi0gICAgMTYwOTQ3LCAxNjA5NTAsIDE2MDk1MywgMTYwOTU2LCAxNjA5NTksIDE2MDk2MiwgMTYwOTY1LCAxNjA5NjgsIDE2MDk3MSwgCi0gICAgMTYwOTc0LCAxNjA5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDk4MCwgCi0gICAgMTYwOTgyLCAxNjA5ODQsIDE2MDk4OSwgMTYwOTkxLCAxNjA5OTYsIDE2MDk5OCwgMTYxMDAzLCAxNjEwMDUsIDE2MTAxMCwgCi0gICAgMTYxMDEyLCAxNjEwMTQsIDE2MTAxNiwgMTYxMDE4LCAxNjEwMjAsIDE2MTAyMiwgMTYxMDI0LCAxNjEwMjYsIDE2MTAyOCwgCi0gICAgMTYxMDMxLCAxNjEwMzUsIDE2MTAzNywgMTYxMDM5LCAxNjEwNDMsIDE2MTA0NywgMTYxMDUyLCAxNjEwNTQsIDE2MTA1NiwgCi0gICAgMTYxMDU4LCAxNjEwNjIsIDE2MTA2NSwgMTYxMDY3LCAxNjEwNzEsIDE2MTA3MywgMTYxMDc3LCAxNjEwNzksIDE2MTA4MywgCi0gICAgMTYxMDg2LCAxNjEwODgsIDE2MTA5MiwgMTYxMDk2LCAxNjEwOTgsIDE2MTEwNCwgMTYxMTA2LCAxNjExMTEsIDE2MTExMywgCi0gICAgMTYxMTE4LCAxNjExMjAsIDE2MTEyNSwgMTYxMTI3LCAxNjExMzIsIDE2MTEzNCwgMTYxMTM3LCAxNjExMzksIDE2MTE0MywgCi0gICAgMTYxMTQ1LCAxNjExNTIsIDE2MTE1NCwgMTYxMTU2LCAxNjExNTgsIDE2MTE2MywgMTYxMTY1LCAxNjExNjcsIDE2MTE2OSwgCi0gICAgMTYxMTcxLCAxNjExNzMsIDE2MTE3OCwgMTYxMTgyLCAxNjExODQsIDE2MTE4OSwgMTYxMTkzLCAxNjExOTUsIDE2MTIwMCwgCi0gICAgMTYxMjA0LCAxNjEyMDYsIDE2MTIxMSwgMTYxMjE1LCAxNjEyMTcsIDE2MTIxOSwgMTYxMjIxLCAxNjEyMjMsIDE2MTIyNywgCi0gICAgMTYxMjI5LCAxNjEyMzQsIDE2MTIzNiwgMTYxMjQyLCAxNjEyNDQsIDE2MTI1MCwgMTYxMjUyLCAxNjEyNTQsIDE2MTI1NiwgCi0gICAgMTYxMjYwLCAxNjEyNjIsIDE2MTI2OSwgMTYxMjcxLCAxNjEyNzgsIDE2MTI4MCwgMTYxMjg1LCAxNjEyOTEsIDE2MTI5MywgCi0gICAgMTYxMjk5LCAxNjEzMDYsIDE2MTMwOCwgMTYxMzE0LCAxNjEzMTksIDE2MTMyMSwgMTYxMzI3LCAxNjEzMzMsIDE2MTMzNSwgCi0gICAgMTYxMzQxLCAxNjEzNDcsIDE2MTM0OSwgMTYxMzU1LCAxNjEzNTksIDE2MTM2MSwgMTYxMzY2LCAxNjEzNjgsIDE2MTM3MCwgCi0gICAgMTYxMzc1LCAxNjEzNzcsIDE2MTM3OSwgMTYxMzg1LCAxNjEzODcsIDE2MTM5MiwgMTYxMzk2LCAxNjEzOTgsIDE2MTQwMywgCi0gICAgMTYxNDA3LCAxNjE0MDksIDE2MTQxNSwgMTYxNDE3LCAxNjE0MjEsIDE2MTQyMywgMTYxNDI3LCAxNjE0MjksIDE2MTQzNiwgCi0gICAgMTYxNDQzLCAxNjE0NDUsIDE2MTQ1MiwgMTYxNDU5LCAxNjE0NjEsIDE2MTQ2NiwgMTYxNDY4LCAxNjE0NzUsIDE2MTQ3NywgCi0gICAgMTYxNDgyLCAxNjE0ODQsIDE2MTQ5MCwgMTYxNDkyLCAxNjE0OTYsIDE2MTQ5OCwgMTYxNTA0LCAxNjE1MDYsIDE2MTUxMCwgCi0gICAgMTYxNTEyLCAxNjE1MTgsIDE2MTUyMCwgMTYxNTIyLCAxNjE1MjQsIDE2MTUyOSwgMTYxNTM0LCAxNjE1MzYsIDE2MTUzOCwgCi0gICAgMTYxNTQ4LCAxNjE1NTIsIDE2MTU1OSwgMTYxNTY2LCAxNjE1NzEsIDE2MTU3NiwgMTYxNTg4LCAxNjE1OTAsIDE2MTU5MiwgCi0gICAgMTYxNTk0LCAxNjE1OTYsIDE2MTU5OCwgMTYxNjAwLCAxNjE2MDIsIDE2MTYwNCwgMTYxNjA2LCAxNjE2MDgsIDE2MTYxMCwgCi0gICAgMTYxNjEyLCAxNjE2MTQsIDE2MTYxNiwgMTYxNjE4LCAxNjE2MjAsIDE2MTYyMiwgMTYxNjI0LCAxNjE2MjYsIDE2MTYyOCwgCi0gICAgMTYxNjMwLCAxNjE2MzYsIDE2MTY0MywgMTYxNjQ4LCAxNjE2NTYsIDE2MTY2NCwgMTYxNjY5LCAxNjE2ODAsIDE2MTY4MiwgCi0gICAgMTYxNjg0LCAxNjE2ODYsIDE2MTY4OCwgMTYxNjkwLCAxNjE2OTIsIDE2MTY5NCwgMTYxNjk2LCAxNjE2OTgsIDE2MTcwMCwgCi0gICAgMTYxNzAyLCAxNjE3MDQsIDE2MTcwNiwgMTYxNzA4LCAxNjE3MTAsIDE2MTcxMiwgMTYxNzE3LCAxNjE3MTksIDE2MTcyMSwgCi0gICAgMTYxNzI3LCAxNjE3MzksIDE2MTc1MCwgMTYxNzUyLCAxNjE3NTQsIDE2MTc1NiwgMTYxNzU4LCAxNjE3NjAsIDE2MTc2MiwgCi0gICAgMTYxNzY0LCAxNjE3NjYsIDE2MTc2OCwgMTYxNzcwLCAxNjE3NzIsIDE2MTc3NCwgMTYxNzc2LCAxNjE3NzgsIDE2MTc4MCwgCi0gICAgMTYxNzgyLCAxNjE3ODQsIDE2MTc4NiwgMTYxNzg4LCAxNjE3OTAsIDE2MTc5MiwgMTYxNzk0LCAxNjE3OTYsIDE2MTc5OCwgCi0gICAgMTYxODAwLCAxNjE4MDIsIDE2MTgwNCwgMTYxODA2LCAxNjE4MDgsIDE2MTgxMCwgMTYxODEyLCAxNjE4MTQsIDE2MTgxNiwgCi0gICAgMTYxODE4LCAxNjE4MjAsIDE2MTgyMiwgMTYxODI0LCAxNjE4MjYsIDE2MTgyOCwgMTYxODMwLCAxNjE4MzIsIDE2MTgzNCwgCi0gICAgMTYxODM2LCAxNjE4MzgsIDE2MTg0MCwgMTYxODQyLCAxNjE4NDQsIDE2MTg0NiwgMTYxODQ4LCAxNjE4NTAsIDE2MTg1MiwgCi0gICAgMTYxODU0LCAxNjE4NTYsIDE2MTg1OCwgMTYxODYwLCAxNjE4NjIsIDE2MTg2NCwgMTYxODY2LCAxNjE4NjgsIDE2MTg3MCwgCi0gICAgMTYxODcyLCAxNjE4NzQsIDE2MTg3NiwgMTYxODc4LCAxNjE4ODAsIDE2MTg4MiwgMTYxODg0LCAxNjE4ODYsIDE2MTg4OCwgCi0gICAgMTYxODkwLCAxNjE4OTIsIDE2MTg5NCwgMTYxODk2LCAxNjE4OTgsIDE2MTkwMCwgMTYxOTAyLCAxNjE5MDQsIDE2MTkwNiwgCi0gICAgMTYxOTA4LCAxNjE5MTAsIDE2MTkxMiwgMTYxOTE0LCAxNjE5MTYsIDE2MTkxOCwgMTYxOTIwLCAxNjE5MjIsIDE2MTkyNCwgCi0gICAgMTYxOTI2LCAxNjE5MjgsIDE2MTkzMCwgMTYxOTMyLCAxNjE5MzQsIDE2MTkzNiwgMTYxOTM4LCAxNjE5NDAsIDE2MTk0MiwgCi0gICAgMTYxOTQ0LCAxNjE5NDYsIDE2MTk0OCwgMTYxOTUwLCAxNjE5NTIsIDE2MTk1NCwgMTYxOTU2LCAxNjE5NTgsIDE2MTk2MCwgCi0gICAgMTYxOTYyLCAxNjE5NjQsIDE2MTk2NiwgMTYxOTY4LCAxNjE5NzAsIDE2MTk3MiwgMTYxOTc0LCAxNjE5NzYsIDE2MTk3OCwgCi0gICAgMTYxOTgwLCAxNjE5ODIsIDE2MTk4NCwgMTYxOTg2LCAxNjE5ODgsIDE2MTk5MCwgMTYxOTkyLCAxNjE5OTQsIDE2MTk5NiwgCi0gICAgMTYxOTk4LCAxNjIwMDAsIDE2MjAwMiwgMTYyMDA0LCAxNjIwMDYsIDE2MjAwOCwgMTYyMDEwLCAxNjIwMTIsIDE2MjAxNCwgCi0gICAgMTYyMDE2LCAxNjIwMTgsIDE2MjAyMCwgMTYyMDIyLCAxNjIwMjQsIDE2MjAyNiwgMTYyMDI4LCAxNjIwMzAsIDE2MjAzMiwgCi0gICAgMTYyMDM0LCAxNjIwMzYsIDE2MjAzOCwgMTYyMDQwLCAxNjIwNDIsIDE2MjA0NCwgMTYyMDQ2LCAxNjIwNDgsIDE2MjA1MCwgCi0gICAgMTYyMDUyLCAxNjIwNTQsIDE2MjA1NiwgMTYyMDU4LCAxNjIwNjAsIDE2MjA2MiwgMTYyMDY0LCAxNjIwNjYsIDE2MjA2OCwgCi0gICAgMTYyMDcwLCAxNjIwNzIsIDE2MjA3NCwgMTYyMDc2LCAxNjIwNzgsIDE2MjA4MCwgMTYyMDgyLCAxNjIwODQsIDE2MjA4NiwgCi0gICAgMTYyMDg4LCAxNjIwOTAsIDE2MjA5MiwgMTYyMDk0LCAxNjIwOTYsIDE2MjA5OCwgMTYyMTAwLCAxNjIxMDIsIDE2MjEwNCwgCi0gICAgMTYyMTA2LCAxNjIxMDgsIDE2MjExMCwgMTYyMTEyLCAxNjIxMTQsIDE2MjExNiwgMTYyMTE4LCAxNjIxMjAsIDE2MjEyMiwgCi0gICAgMTYyMTI0LCAxNjIxMjYsIDE2MjEyOCwgMTYyMTMwLCAxNjIxMzIsIDE2MjEzNCwgMTYyMTM2LCAxNjIxMzgsIDE2MjE0MCwgCi0gICAgMTYyMTQyLCAxNjIxNDQsIDE2MjE0NiwgMTYyMTQ4LCAxNjIxNTAsIDE2MjE1MiwgMTYyMTU0LCAxNjIxNTYsIDE2MjE1OCwgCi0gICAgMTYyMTYwLCAxNjIxNjIsIDE2MjE2NCwgMTYyMTY2LCAxNjIxNjgsIDE2MjE3MCwgMTYyMTcyLCAxNjIxNzQsIDE2MjE3NiwgCi0gICAgMTYyMTc4LCAxNjIxODAsIDE2MjE4MiwgMTYyMTg0LCAxNjIxODYsIDE2MjE4OCwgMTYyMTkwLCAxNjIxOTIsIDE2MjE5NCwgCi0gICAgMTYyMTk2LCAxNjIxOTgsIDE2MjIwMCwgMTYyMjAyLCAxNjIyMDQsIDE2MjIwNiwgMTYyMjA4LCAxNjIyMTAsIDE2MjIxMiwgCi0gICAgMTYyMjE0LCAxNjIyMTYsIDE2MjIxOCwgMTYyMjIwLCAxNjIyMjIsIDE2MjIyNCwgMTYyMjI2LCAxNjIyMjgsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE2MjIzMCwgMTYyMjQwLCAxNjIyNTAsIDE2MjI1OSwgMTYyMjY4LCAxNjIyODEsIDE2MjI5NCwgMTYyMzA2LCAKLSAgICAxNjIzMTgsIDE2MjMyOCwgMTYyMzM4LCAxNjIzNDgsIDE2MjM1OCwgMTYyMzY5LCAxNjIzODAsIDE2MjM5MCwgMTYyMzk5LCAKLSAgICAxNjI0MDgsIDE2MjQxNywgMTYyNDMwLCAxNjI0NDMsIDE2MjQ1NSwgMTYyNDY3LCAxNjI0NzcsIDE2MjQ4NywgMTYyNDk3LCAKLSAgICAxNjI1MDcsIDE2MjUxNiwgMTYyNTI1LCAxNjI1MzUsIDE2MjU0NSwgMTYyNTU0LCAxNjI1NjMsIDE2MjU3MywgMTYyNTgzLCAKLSAgICAxNjI1OTIsIDE2MjYwMSwgMTYyNjExLCAxNjI2MjEsIDE2MjYzMiwgMTYyNjQzLCAxNjI2NTMsIDE2MjY2NiwgMTYyNjc3LCAKLSAgICAxNjI2OTEsIDE2MjY5OSwgMTYyNzEwLCAxNjI3MTgsIDE2MjcyNiwgMTYyNzM0LCAxNjI3NDIsIDE2Mjc1MCwgMTYyNzU4LCAKLSAgICAxNjI3NjcsIDE2Mjc3NiwgMTYyNzg2LCAxNjI3OTYsIDE2MjgwNSwgMTYyODE0LCAxNjI4MjQsIDE2MjgzNCwgMTYyODQyLCAKLSAgICAxNjI4NTAsIDE2Mjg1NywgMTYyODY3LCAxNjI4NzYsIDE2Mjg4NCwgMTYyODkxLCAxNjI5MDEsIDE2MjkxMCwgMTYyOTIxLCAKLSAgICAxNjI5MzIsIDE2Mjk0NCwgMTYyOTU1LCAxNjI5NjUsIDE2Mjk3NiwgMTYyOTg2LCAxNjI5OTcsIDE2MzAwNSwgMTYzMDA5LCAKLSAgICAxNjMwMTMsIDE2MzAxNywgMTYzMDIxLCAxNjMwMjUsIDE2MzAyOSwgMTYzMDMzLCAxNjMwMzcsIDE2MzA0MSwgMTYzMDQ1LCAKLSAgICAxNjMwNDksIDE2MzA1MywgMTYzMDU2LCAxNjMwNTksIDE2MzA2MywgMTYzMDY3LCAxNjMwNzEsIDE2MzA3NSwgMTYzMDc5LCAKLSAgICAxNjMwODMsIDE2MzA4NywgMTYzMDkxLCAxNjMwOTQsIDE2MzA5OCwgMTYzMTAyLCAxNjMxMDYsIDE2MzExMCwgMTYzMTE0LCAKLSAgICAxNjMxMTgsIDE2MzEyMiwgMTYzMTI2LCAxNjMxMzAsIDE2MzEzNCwgMTYzMTM4LCAxNjMxNDIsIDE2MzE0NiwgMTYzMTUwLCAKLSAgICAxNjMxNTQsIDE2MzE1OCwgMTYzMTYyLCAxNjMxNjYsIDE2MzE3MCwgMTYzMTc0LCAxNjMxNzgsIDE2MzE4MiwgMTYzMTg2LCAKLSAgICAxNjMxOTAsIDE2MzE5NCwgMTYzMTk4LCAxNjMyMDIsIDE2MzIwNiwgMTYzMjEwLCAxNjMyMTQsIDE2MzIxOCwgMTYzMjIyLCAKLSAgICAxNjMyMjYsIDE2MzIzMCwgMTYzMjM0LCAxNjMyMzgsIDE2MzI0MiwgMTYzMjQ2LCAxNjMyNTAsIDE2MzI1NCwgMTYzMjU4LCAKLSAgICAxNjMyNjIsIDE2MzI2NiwgMTYzMjcwLCAxNjMyNzQsIDE2MzI3OCwgMTYzMjgyLCAxNjMyODYsIDE2MzI5MCwgMTYzMjk0LCAKLSAgICAxNjMyOTgsIDE2MzMwMiwgMTYzMzA2LCAxNjMzMTAsIDE2MzMxNCwgMTYzMzE4LCAxNjMzMjIsIDE2MzMyNiwgMTYzMzMwLCAKLSAgICAxNjMzMzQsIDE2MzMzOCwgMTYzMzQyLCAxNjMzNDYsIDE2MzM1MCwgMTYzMzU0LCAxNjMzNTgsIDE2MzM2MiwgMTYzMzY2LCAKLSAgICAxNjMzNzAsIDE2MzM3NCwgMTYzMzc4LCAxNjMzODIsIDE2MzM4NiwgMTYzMzkwLCAxNjMzOTQsIDE2MzM5OCwgMTYzNDAxLCAKLSAgICAxNjM0MDUsIDE2MzQwOSwgMTYzNDEzLCAxNjM0MTcsIDE2MzQyMSwgMTYzNDI1LCAxNjM0MjksIDE2MzQzMywgMTYzNDM3LCAKLSAgICAxNjM0NDEsIDE2MzQ0NSwgMTYzNDQ5LCAxNjM0NTMsIDE2MzQ1NywgMTYzNDYxLCAxNjM0NjUsIDE2MzQ2OSwgMTYzNDczLCAKLSAgICAxNjM0NzcsIDE2MzQ4MSwgMTYzNDg1LCAxNjM0ODksIDE2MzQ5MywgMTYzNDk3LCAxNjM1MDEsIDE2MzUwNSwgMTYzNTA5LCAKLSAgICAxNjM1MTMsIDE2MzUxNywgMTYzNTIxLCAxNjM1MjUsIDE2MzUyOSwgMTYzNTMzLCAxNjM1MzcsIDE2MzU0MSwgMTYzNTQ1LCAKLSAgICAxNjM1NDksIDE2MzU1MywgMTYzNTU3LCAxNjM1NjEsIDE2MzU2NSwgMTYzNTY5LCAxNjM1NzMsIDE2MzU3NywgMTYzNTgxLCAKLSAgICAxNjM1ODUsIDE2MzU4OSwgMTYzNTkzLCAxNjM1OTcsIDE2MzYwMSwgMTYzNjA1LCAxNjM2MDksIDE2MzYxMywgMTYzNjE3LCAKLSAgICAxNjM2MjEsIDE2MzYyNSwgMTYzNjI5LCAxNjM2MzMsIDE2MzYzNywgMTYzNjQxLCAxNjM2NDUsIDE2MzY0OSwgMTYzNjUzLCAKLSAgICAxNjM2NTcsIDE2MzY2MSwgMTYzNjY1LCAxNjM2NjksIDE2MzY3MywgMTYzNjc3LCAxNjM2ODEsIDE2MzY4NSwgMTYzNjg5LCAKLSAgICAxNjM2OTMsIDE2MzY5NywgMTYzNzAxLCAxNjM3MDUsIDE2MzcwOSwgMTYzNzEzLCAxNjM3MTcsIDE2MzcyMSwgMTYzNzI1LCAKLSAgICAxNjM3MjksIDE2MzczMywgMTYzNzM3LCAxNjM3NDEsIDE2Mzc0NSwgMTYzNzQ5LCAxNjM3NTMsIDE2Mzc1NywgMTYzNzYxLCAKLSAgICAxNjM3NjUsIDE2Mzc2OSwgMTYzNzczLCAxNjM3NzcsIDE2Mzc4MSwgMTYzNzg1LCAxNjM3ODksIDE2Mzc5MywgMTYzNzk3LCAKLSAgICAxNjM4MDEsIDE2MzgwNSwgMTYzODA5LCAxNjM4MTMsIDE2MzgxNywgMTYzODIxLCAxNjM4MjUsIDE2MzgyOSwgMTYzODMzLCAKLSAgICAxNjM4MzcsIDE2Mzg0MSwgMTYzODQ1LCAxNjM4NDksIDE2Mzg1MywgMTYzODU3LCAxNjM4NjEsIDE2Mzg2NSwgMTYzODY5LCAKLSAgICAxNjM4NzMsIDE2Mzg3NywgMTYzODgxLCAxNjM4ODUsIDE2Mzg4OSwgMTYzODkzLCAxNjM4OTcsIDE2MzkwMSwgMTYzOTA1LCAKLSAgICAxNjM5MDksIDE2MzkxMywgMTYzOTE3LCAxNjM5MjEsIDE2MzkyNSwgMTYzOTI5LCAxNjM5MzMsIDE2MzkzNywgMTYzOTQxLCAKLSAgICAxNjM5NDUsIDE2Mzk0OSwgMTYzOTUzLCAxNjM5NTcsIDE2Mzk2MSwgMTYzOTY1LCAxNjM5NjksIDE2Mzk3MywgMTYzOTc3LCAKLSAgICAxNjM5ODEsIDE2Mzk4NSwgMTYzOTg5LCAxNjM5OTMsIDE2Mzk5NywgMTY0MDAxLCAxNjQwMDUsIDE2NDAwOSwgMTY0MDEzLCAKLSAgICAxNjQwMTcsIDE2NDAyMSwgMTY0MDI1LCAxNjQwMjksIDE2NDAzMywgMTY0MDM3LCAxNjQwNDEsIDE2NDA0NSwgMTY0MDQ5LCAKLSAgICAxNjQwNTMsIDE2NDA1NywgMTY0MDYxLCAxNjQwNjUsIDE2NDA2OSwgMTY0MDczLCAxNjQwNzcsIDE2NDA4MSwgMTY0MDg1LCAKLSAgICAxNjQwODksIDE2NDA5MywgMTY0MDk3LCAxNjQxMDEsIDE2NDEwNSwgMTY0MTA5LCAxNjQxMTMsIDE2NDExNywgMTY0MTIxLCAKLSAgICAxNjQxMjUsIDE2NDEyOSwgMTY0MTMzLCAxNjQxMzcsIDE2NDE0MSwgMTY0MTQ1LCAxNjQxNDksIDE2NDE1MywgMTY0MTU3LCAKLSAgICAxNjQxNjEsIDE2NDE2NSwgMTY0MTcwLCAxNjQxNzUsIDE2NDE4MCwgMTY0MTg0LCAxNjQxOTAsIDE2NDE5NywgMTY0MjA0LCAKLSAgICAxNjQyMTEsIDE2NDIxOCwgMTY0MjI1LCAxNjQyMzIsIDE2NDIzOSwgMTY0MjQ2LCAxNjQyNTMsIDE2NDI2MCwgMTY0MjY3LCAKLSAgICAxNjQyNzQsIDE2NDI4MSwgMTY0Mjg4LCAxNjQyOTUsIDE2NDMwMiwgMTY0MzA4LCAxNjQzMTUsIDE2NDMyMiwgMTY0MzI5LCAKLSAgICAxNjQzMzYsIDE2NDM0MywgMTY0MzUwLCAxNjQzNTcsIDE2NDM2NCwgMTY0MzcxLCAxNjQzNzgsIDE2NDM4NSwgMTY0MzkyLCAKLSAgICAxNjQzOTksIDE2NDQwNiwgMTY0NDEyLCAxNjQ0MTksIDE2NDQyNiwgMTY0NDM1LCAxNjQ0NDQsIDE2NDQ1MywgMTY0NDYyLCAKLSAgICAxNjQ0NjcsIDE2NDQ3MiwgMTY0NDc4LCAxNjQ0ODQsIDE2NDQ5MCwgMTY0NDk2LCAxNjQ1MDIsIDE2NDUwOCwgMTY0NTE0LCAKLSAgICAxNjQ1MjAsIDE2NDUyNiwgMTY0NTMyLCAxNjQ1MzgsIDE2NDU0NCwgMTY0NTQ5LCAxNjQ1NTUsIDE2NDU2NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTY2MTExLCAxNjYxMTQsIDE2NjExNywgMTY2MTIwLCAxNjYxMjMsIDE2NjEyNiwgMTY2MTI5LCAxNjYxMzIsIAorICAgIDE2NjEzNSwgMTY2MTM4LCAxNjYxNDEsIDE2NjE0NCwgMTY2MTQ3LCAxNjYxNTAsIDE2NjE1MywgMTY2MTU2LCAxNjYxNTksIAorICAgIDE2NjE2MiwgMTY2MTY1LCAxNjYxNjgsIDE2NjE3MSwgMTY2MTc0LCAxNjYxNzcsIDE2NjE4MCwgMTY2MTgzLCAxNjYxODYsIAorICAgIDE2NjE4OSwgMTY2MTkyLCAxNjYxOTUsIDE2NjE5OCwgMTY2MjAxLCAxNjYyMDQsIDE2NjIwNywgMTY2MjEwLCAxNjYyMTMsIAorICAgIDE2NjIxNiwgMTY2MjE5LCAxNjYyMjIsIDE2NjIyNSwgMTY2MjI4LCAxNjYyMzEsIDE2NjIzNCwgMTY2MjM3LCAxNjYyNDAsIAorICAgIDE2NjI0MywgMTY2MjQ2LCAxNjYyNDksIDE2NjI1MiwgMTY2MjU1LCAxNjYyNTgsIDE2NjI2MSwgMTY2MjY0LCAxNjYyNjcsIAorICAgIDE2NjI3MCwgMTY2MjczLCAxNjYyNzYsIDE2NjI3OSwgMTY2MjgyLCAxNjYyODUsIDE2NjI4OCwgMTY2MjkxLCAxNjYyOTQsIAorICAgIDE2NjI5NywgMTY2MzAwLCAxNjYzMDMsIDE2NjMwNiwgMTY2MzA5LCAxNjYzMTIsIDE2NjMxNSwgMTY2MzE4LCAxNjYzMjEsIAorICAgIDE2NjMyNCwgMTY2MzI3LCAxNjYzMzAsIDE2NjMzMywgMTY2MzM2LCAxNjYzMzksIDE2NjM0MiwgMTY2MzQ1LCAxNjYzNDgsIAorICAgIDE2NjM1MSwgMTY2MzU0LCAxNjYzNTcsIDE2NjM2MCwgMTY2MzYzLCAxNjYzNjYsIDE2NjM2OSwgMTY2MzcyLCAxNjYzNzUsIAorICAgIDE2NjM3OCwgMTY2MzgxLCAxNjYzODQsIDE2NjM4NywgMTY2MzkwLCAxNjYzOTMsIDE2NjM5NiwgMTY2Mzk5LCAxNjY0MDIsIAorICAgIDE2NjQwNSwgMTY2NDA4LCAxNjY0MTEsIDE2NjQxNCwgMTY2NDE3LCAxNjY0MjAsIDE2NjQyMywgMTY2NDI2LCAxNjY0MjksIAorICAgIDE2NjQzMiwgMTY2NDM1LCAxNjY0MzgsIDE2NjQ0MSwgMTY2NDQ0LCAxNjY0NDcsIDE2NjQ1MCwgMTY2NDUzLCAxNjY0NTYsIAorICAgIDE2NjQ1OSwgMTY2NDYyLCAxNjY0NjUsIDE2NjQ2OCwgMTY2NDcxLCAxNjY0NzQsIDE2NjQ3NywgMTY2NDgwLCAxNjY0ODMsIAorICAgIDE2NjQ4NiwgMTY2NDg5LCAxNjY0OTIsIDE2NjQ5NSwgMTY2NDk4LCAxNjY1MDEsIDE2NjUwNCwgMTY2NTA3LCAxNjY1MTAsIAorICAgIDE2NjUxMywgMTY2NTE2LCAxNjY1MTksIDE2NjUyMiwgMTY2NTI1LCAxNjY1MjgsIDE2NjUzMSwgMTY2NTM0LCAxNjY1MzcsIAorICAgIDE2NjU0MCwgMTY2NTQzLCAxNjY1NDYsIDE2NjU0OSwgMTY2NTUyLCAxNjY1NTUsIDE2NjU1OCwgMTY2NTYxLCAxNjY1NjQsIAorICAgIDE2NjU2NywgMTY2NTcwLCAxNjY1NzMsIDE2NjU3NiwgMTY2NTc5LCAxNjY1ODIsIDE2NjU4NSwgMTY2NTg4LCAxNjY1OTEsIAorICAgIDE2NjU5NCwgMTY2NTk3LCAxNjY2MDAsIDE2NjYwMywgMTY2NjA2LCAxNjY2MDksIDE2NjYxMiwgMTY2NjE1LCAxNjY2MTgsIAorICAgIDE2NjYyMSwgMTY2NjI0LCAxNjY2MjcsIDE2NjYzMCwgMTY2NjMzLCAxNjY2MzYsIDE2NjYzOSwgMTY2NjQyLCAxNjY2NDUsIAorICAgIDE2NjY0OCwgMTY2NjUxLCAxNjY2NTQsIDE2NjY1NywgMTY2NjYwLCAxNjY2NjMsIDE2NjY2NiwgMTY2NjY5LCAxNjY2NzIsIAorICAgIDE2NjY3NSwgMTY2Njc4LCAxNjY2ODEsIDE2NjY4NCwgMTY2Njg3LCAxNjY2OTAsIDE2NjY5MywgMTY2Njk2LCAxNjY2OTksIAorICAgIDE2NjcwMiwgMTY2NzA1LCAxNjY3MDgsIDE2NjcxMSwgMTY2NzE0LCAxNjY3MTcsIDE2NjcyMCwgMTY2NzIzLCAxNjY3MjYsIAorICAgIDE2NjcyOSwgMTY2NzMyLCAxNjY3MzUsIDE2NjczOCwgMTY2NzQxLCAxNjY3NDQsIDE2Njc0NywgMTY2NzUwLCAxNjY3NTMsIAorICAgIDE2Njc1NiwgMTY2NzU5LCAxNjY3NjIsIDE2Njc2NSwgMTY2NzY4LCAxNjY3NzEsIDE2Njc3NCwgMTY2Nzc3LCAxNjY3ODAsIAorICAgIDE2Njc4MywgMTY2Nzg2LCAxNjY3ODksIDE2Njc5MiwgMTY2Nzk1LCAxNjY3OTgsIDE2NjgwMSwgMTY2ODA0LCAxNjY4MDcsIAorICAgIDE2NjgxMCwgMTY2ODEzLCAxNjY4MTYsIDE2NjgxOSwgMTY2ODIyLCAxNjY4MjUsIDE2NjgyOCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2ODMxLCAxNjY4MzMsIDE2NjgzNSwgMTY2ODQwLCAxNjY4NDIsIAorICAgIDE2Njg0NywgMTY2ODQ5LCAxNjY4NTQsIDE2Njg1NiwgMTY2ODYxLCAxNjY4NjMsIDE2Njg2NSwgMTY2ODY3LCAxNjY4NjksIAorICAgIDE2Njg3MSwgMTY2ODczLCAxNjY4NzUsIDE2Njg3NywgMTY2ODc5LCAxNjY4ODIsIDE2Njg4NiwgMTY2ODg4LCAxNjY4OTAsIAorICAgIDE2Njg5NCwgMTY2ODk4LCAxNjY5MDMsIDE2NjkwNSwgMTY2OTA3LCAxNjY5MDksIDE2NjkxMywgMTY2OTE2LCAxNjY5MTgsIAorICAgIDE2NjkyMiwgMTY2OTI0LCAxNjY5MjgsIDE2NjkzMCwgMTY2OTM0LCAxNjY5MzcsIDE2NjkzOSwgMTY2OTQzLCAxNjY5NDcsIAorICAgIDE2Njk0OSwgMTY2OTU1LCAxNjY5NTcsIDE2Njk2MiwgMTY2OTY0LCAxNjY5NjksIDE2Njk3MSwgMTY2OTc2LCAxNjY5NzgsIAorICAgIDE2Njk4MywgMTY2OTg1LCAxNjY5ODgsIDE2Njk5MCwgMTY2OTk0LCAxNjY5OTYsIDE2NzAwMywgMTY3MDA1LCAxNjcwMDcsIAorICAgIDE2NzAwOSwgMTY3MDE0LCAxNjcwMTYsIDE2NzAxOCwgMTY3MDIwLCAxNjcwMjIsIDE2NzAyNCwgMTY3MDI5LCAxNjcwMzMsIAorICAgIDE2NzAzNSwgMTY3MDQwLCAxNjcwNDQsIDE2NzA0NiwgMTY3MDUxLCAxNjcwNTUsIDE2NzA1NywgMTY3MDYyLCAxNjcwNjYsIAorICAgIDE2NzA2OCwgMTY3MDcwLCAxNjcwNzIsIDE2NzA3NCwgMTY3MDc4LCAxNjcwODAsIDE2NzA4NSwgMTY3MDg3LCAxNjcwOTMsIAorICAgIDE2NzA5NSwgMTY3MTAxLCAxNjcxMDMsIDE2NzEwNSwgMTY3MTA3LCAxNjcxMTEsIDE2NzExMywgMTY3MTIwLCAxNjcxMjIsIAorICAgIDE2NzEyOSwgMTY3MTMxLCAxNjcxMzYsIDE2NzE0MiwgMTY3MTQ0LCAxNjcxNTAsIDE2NzE1NywgMTY3MTU5LCAxNjcxNjUsIAorICAgIDE2NzE3MCwgMTY3MTcyLCAxNjcxNzgsIDE2NzE4NCwgMTY3MTg2LCAxNjcxOTIsIDE2NzE5OCwgMTY3MjAwLCAxNjcyMDYsIAorICAgIDE2NzIxMCwgMTY3MjEyLCAxNjcyMTcsIDE2NzIxOSwgMTY3MjIxLCAxNjcyMjYsIDE2NzIyOCwgMTY3MjMwLCAxNjcyMzYsIAorICAgIDE2NzIzOCwgMTY3MjQzLCAxNjcyNDcsIDE2NzI0OSwgMTY3MjU0LCAxNjcyNTgsIDE2NzI2MCwgMTY3MjY2LCAxNjcyNjgsIAorICAgIDE2NzI3MiwgMTY3Mjc0LCAxNjcyNzgsIDE2NzI4MCwgMTY3Mjg3LCAxNjcyOTQsIDE2NzI5NiwgMTY3MzAzLCAxNjczMTAsIAorICAgIDE2NzMxMiwgMTY3MzE3LCAxNjczMTksIDE2NzMyNiwgMTY3MzI4LCAxNjczMzMsIDE2NzMzNSwgMTY3MzQxLCAxNjczNDMsIAorICAgIDE2NzM0NywgMTY3MzQ5LCAxNjczNTUsIDE2NzM1NywgMTY3MzYxLCAxNjczNjMsIDE2NzM2OSwgMTY3MzcxLCAxNjczNzMsIAorICAgIDE2NzM3NSwgMTY3MzgwLCAxNjczODUsIDE2NzM4NywgMTY3Mzg5LCAxNjczOTksIDE2NzQwNCwgMTY3NDExLCAxNjc0MTgsIAorICAgIDE2NzQyMywgMTY3NDI4LCAxNjc0NDAsIDE2NzQ0MiwgMTY3NDQ0LCAxNjc0NDYsIDE2NzQ0OCwgMTY3NDUwLCAxNjc0NTIsIAorICAgIDE2NzQ1NCwgMTY3NDU2LCAxNjc0NTgsIDE2NzQ2MCwgMTY3NDYyLCAxNjc0NjQsIDE2NzQ2NiwgMTY3NDY4LCAxNjc0NzAsIAorICAgIDE2NzQ3MiwgMTY3NDc0LCAxNjc0NzYsIDE2NzQ3OCwgMTY3NDgwLCAxNjc0ODIsIDE2NzQ4OCwgMTY3NDk1LCAxNjc1MDAsIAorICAgIDE2NzUwOCwgMTY3NTE2LCAxNjc1MjEsIDE2NzUzMiwgMTY3NTM0LCAxNjc1MzYsIDE2NzUzOCwgMTY3NTQwLCAxNjc1NDIsIAorICAgIDE2NzU0NCwgMTY3NTQ2LCAxNjc1NDgsIDE2NzU1MCwgMTY3NTUyLCAxNjc1NTQsIDE2NzU1NiwgMTY3NTU4LCAxNjc1NjAsIAorICAgIDE2NzU2MiwgMTY3NTY0LCAxNjc1NjksIDE2NzU3MSwgMTY3NTczLCAxNjc1NzksIDE2NzU5MSwgMTY3NjAyLCAxNjc2MDQsIAorICAgIDE2NzYwNiwgMTY3NjA4LCAxNjc2MTAsIDE2NzYxMiwgMTY3NjE0LCAxNjc2MTYsIDE2NzYxOCwgMTY3NjIwLCAxNjc2MjIsIAorICAgIDE2NzYyNCwgMTY3NjI2LCAxNjc2MjgsIDE2NzYzMCwgMTY3NjMyLCAxNjc2MzQsIDE2NzYzNiwgMTY3NjM4LCAxNjc2NDAsIAorICAgIDE2NzY0MiwgMTY3NjQ0LCAxNjc2NDYsIDE2NzY0OCwgMTY3NjUwLCAxNjc2NTIsIDE2NzY1NCwgMTY3NjU2LCAxNjc2NTgsIAorICAgIDE2NzY2MCwgMTY3NjYyLCAxNjc2NjQsIDE2NzY2NiwgMTY3NjY4LCAxNjc2NzAsIDE2NzY3MiwgMTY3Njc0LCAxNjc2NzYsIAorICAgIDE2NzY3OCwgMTY3NjgwLCAxNjc2ODIsIDE2NzY4NCwgMTY3Njg2LCAxNjc2ODgsIDE2NzY5MCwgMTY3NjkyLCAxNjc2OTQsIAorICAgIDE2NzY5NiwgMTY3Njk4LCAxNjc3MDAsIDE2NzcwMiwgMTY3NzA0LCAxNjc3MDYsIDE2NzcwOCwgMTY3NzEwLCAxNjc3MTIsIAorICAgIDE2NzcxNCwgMTY3NzE2LCAxNjc3MTgsIDE2NzcyMCwgMTY3NzIyLCAxNjc3MjQsIDE2NzcyNiwgMTY3NzI4LCAxNjc3MzAsIAorICAgIDE2NzczMiwgMTY3NzM0LCAxNjc3MzYsIDE2NzczOCwgMTY3NzQwLCAxNjc3NDIsIDE2Nzc0NCwgMTY3NzQ2LCAxNjc3NDgsIAorICAgIDE2Nzc1MCwgMTY3NzUyLCAxNjc3NTQsIDE2Nzc1NiwgMTY3NzU4LCAxNjc3NjAsIDE2Nzc2MiwgMTY3NzY0LCAxNjc3NjYsIAorICAgIDE2Nzc2OCwgMTY3NzcwLCAxNjc3NzIsIDE2Nzc3NCwgMTY3Nzc2LCAxNjc3NzgsIDE2Nzc4MCwgMTY3NzgyLCAxNjc3ODQsIAorICAgIDE2Nzc4NiwgMTY3Nzg4LCAxNjc3OTAsIDE2Nzc5MiwgMTY3Nzk0LCAxNjc3OTYsIDE2Nzc5OCwgMTY3ODAwLCAxNjc4MDIsIAorICAgIDE2NzgwNCwgMTY3ODA2LCAxNjc4MDgsIDE2NzgxMCwgMTY3ODEyLCAxNjc4MTQsIDE2NzgxNiwgMTY3ODE4LCAxNjc4MjAsIAorICAgIDE2NzgyMiwgMTY3ODI0LCAxNjc4MjYsIDE2NzgyOCwgMTY3ODMwLCAxNjc4MzIsIDE2NzgzNCwgMTY3ODM2LCAxNjc4MzgsIAorICAgIDE2Nzg0MCwgMTY3ODQyLCAxNjc4NDQsIDE2Nzg0NiwgMTY3ODQ4LCAxNjc4NTAsIDE2Nzg1MiwgMTY3ODU0LCAxNjc4NTYsIAorICAgIDE2Nzg1OCwgMTY3ODYwLCAxNjc4NjIsIDE2Nzg2NCwgMTY3ODY2LCAxNjc4NjgsIDE2Nzg3MCwgMTY3ODcyLCAxNjc4NzQsIAorICAgIDE2Nzg3NiwgMTY3ODc4LCAxNjc4ODAsIDE2Nzg4MiwgMTY3ODg0LCAxNjc4ODYsIDE2Nzg4OCwgMTY3ODkwLCAxNjc4OTIsIAorICAgIDE2Nzg5NCwgMTY3ODk2LCAxNjc4OTgsIDE2NzkwMCwgMTY3OTAyLCAxNjc5MDQsIDE2NzkwNiwgMTY3OTA4LCAxNjc5MTAsIAorICAgIDE2NzkxMiwgMTY3OTE0LCAxNjc5MTYsIDE2NzkxOCwgMTY3OTIwLCAxNjc5MjIsIDE2NzkyNCwgMTY3OTI2LCAxNjc5MjgsIAorICAgIDE2NzkzMCwgMTY3OTMyLCAxNjc5MzQsIDE2NzkzNiwgMTY3OTM4LCAxNjc5NDAsIDE2Nzk0MiwgMTY3OTQ0LCAxNjc5NDYsIAorICAgIDE2Nzk0OCwgMTY3OTUwLCAxNjc5NTIsIDE2Nzk1NCwgMTY3OTU2LCAxNjc5NTgsIDE2Nzk2MCwgMTY3OTYyLCAxNjc5NjQsIAorICAgIDE2Nzk2NiwgMTY3OTY4LCAxNjc5NzAsIDE2Nzk3MiwgMTY3OTc0LCAxNjc5NzYsIDE2Nzk3OCwgMTY3OTgwLCAxNjc5ODIsIAorICAgIDE2Nzk4NCwgMTY3OTg2LCAxNjc5ODgsIDE2Nzk5MCwgMTY3OTkyLCAxNjc5OTQsIDE2Nzk5NiwgMTY3OTk4LCAxNjgwMDAsIAorICAgIDE2ODAwMiwgMTY4MDA0LCAxNjgwMDYsIDE2ODAwOCwgMTY4MDEwLCAxNjgwMTIsIDE2ODAxNCwgMTY4MDE2LCAxNjgwMTgsIAorICAgIDE2ODAyMCwgMTY4MDIyLCAxNjgwMjQsIDE2ODAyNiwgMTY4MDI4LCAxNjgwMzAsIDE2ODAzMiwgMTY4MDM0LCAxNjgwMzYsIAorICAgIDE2ODAzOCwgMTY4MDQwLCAxNjgwNDIsIDE2ODA0NCwgMTY4MDQ2LCAxNjgwNDgsIDE2ODA1MCwgMTY4MDUyLCAxNjgwNTQsIAorICAgIDE2ODA1NiwgMTY4MDU4LCAxNjgwNjAsIDE2ODA2MiwgMTY4MDY0LCAxNjgwNjYsIDE2ODA2OCwgMTY4MDcwLCAxNjgwNzIsIAorICAgIDE2ODA3NCwgMTY4MDc2LCAxNjgwNzgsIDE2ODA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4MDgyLCAxNjgwOTIsIDE2ODEwMiwgCisgICAgMTY4MTExLCAxNjgxMjAsIDE2ODEzMywgMTY4MTQ2LCAxNjgxNTgsIDE2ODE3MCwgMTY4MTgwLCAxNjgxOTAsIDE2ODIwMCwgCisgICAgMTY4MjEwLCAxNjgyMjEsIDE2ODIzMiwgMTY4MjQyLCAxNjgyNTEsIDE2ODI2MCwgMTY4MjY5LCAxNjgyODIsIDE2ODI5NSwgCisgICAgMTY4MzA3LCAxNjgzMTksIDE2ODMyOSwgMTY4MzM5LCAxNjgzNDksIDE2ODM1OSwgMTY4MzY4LCAxNjgzNzcsIDE2ODM4NywgCisgICAgMTY4Mzk3LCAxNjg0MDYsIDE2ODQxNSwgMTY4NDI1LCAxNjg0MzUsIDE2ODQ0NCwgMTY4NDUzLCAxNjg0NjMsIDE2ODQ3MywgCisgICAgMTY4NDg0LCAxNjg0OTUsIDE2ODUwNSwgMTY4NTE4LCAxNjg1MjksIDE2ODU0MywgMTY4NTUxLCAxNjg1NjIsIDE2ODU3MCwgCisgICAgMTY4NTc4LCAxNjg1ODYsIDE2ODU5NCwgMTY4NjAyLCAxNjg2MTAsIDE2ODYxOSwgMTY4NjI4LCAxNjg2MzgsIDE2ODY0OCwgCisgICAgMTY4NjU3LCAxNjg2NjYsIDE2ODY3NiwgMTY4Njg2LCAxNjg2OTQsIDE2ODcwMiwgMTY4NzA5LCAxNjg3MTksIDE2ODcyOCwgCisgICAgMTY4NzM2LCAxNjg3NDMsIDE2ODc1MywgMTY4NzYyLCAxNjg3NzMsIDE2ODc4NCwgMTY4Nzk2LCAxNjg4MDcsIDE2ODgxNywgCisgICAgMTY4ODI4LCAxNjg4MzgsIDE2ODg0OSwgMTY4ODU3LCAxNjg4NjEsIDE2ODg2NSwgMTY4ODY5LCAxNjg4NzMsIDE2ODg3NywgCisgICAgMTY4ODgxLCAxNjg4ODUsIDE2ODg4OSwgMTY4ODkzLCAxNjg4OTcsIDE2ODkwMSwgMTY4OTA1LCAxNjg5MDgsIDE2ODkxMSwgCisgICAgMTY4OTE1LCAxNjg5MTksIDE2ODkyMywgMTY4OTI3LCAxNjg5MzEsIDE2ODkzNSwgMTY4OTM5LCAxNjg5NDMsIDE2ODk0NywgCisgICAgMTY4OTUxLCAxNjg5NTUsIDE2ODk1OSwgMTY4OTYzLCAxNjg5NjcsIDE2ODk3MSwgMTY4OTc1LCAxNjg5NzksIDE2ODk4MywgCisgICAgMTY4OTg3LCAxNjg5OTEsIDE2ODk5NSwgMTY4OTk5LCAxNjkwMDMsIDE2OTAwNywgMTY5MDExLCAxNjkwMTUsIDE2OTAxOSwgCisgICAgMTY5MDIzLCAxNjkwMjcsIDE2OTAzMSwgMTY5MDM1LCAxNjkwMzksIDE2OTA0MywgMTY5MDQ3LCAxNjkwNTEsIDE2OTA1NSwgCisgICAgMTY5MDU5LCAxNjkwNjMsIDE2OTA2NywgMTY5MDcxLCAxNjkwNzUsIDE2OTA3OSwgMTY5MDgzLCAxNjkwODcsIDE2OTA5MSwgCisgICAgMTY5MDk1LCAxNjkwOTksIDE2OTEwMywgMTY5MTA3LCAxNjkxMTEsIDE2OTExNSwgMTY5MTE5LCAxNjkxMjMsIDE2OTEyNywgCisgICAgMTY5MTMxLCAxNjkxMzUsIDE2OTEzOSwgMTY5MTQzLCAxNjkxNDcsIDE2OTE1MSwgMTY5MTU1LCAxNjkxNTksIDE2OTE2MywgCisgICAgMTY5MTY3LCAxNjkxNzEsIDE2OTE3NSwgMTY5MTc5LCAxNjkxODMsIDE2OTE4NywgMTY5MTkxLCAxNjkxOTUsIDE2OTE5OSwgCisgICAgMTY5MjAzLCAxNjkyMDcsIDE2OTIxMSwgMTY5MjE1LCAxNjkyMTksIDE2OTIyMywgMTY5MjI3LCAxNjkyMzEsIDE2OTIzNSwgCisgICAgMTY5MjM5LCAxNjkyNDMsIDE2OTI0NywgMTY5MjUxLCAxNjkyNTQsIDE2OTI1OCwgMTY5MjYyLCAxNjkyNjYsIDE2OTI3MCwgCisgICAgMTY5Mjc0LCAxNjkyNzgsIDE2OTI4MiwgMTY5Mjg2LCAxNjkyOTAsIDE2OTI5NCwgMTY5Mjk4LCAxNjkzMDIsIDE2OTMwNiwgCisgICAgMTY5MzEwLCAxNjkzMTQsIDE2OTMxOCwgMTY5MzIyLCAxNjkzMjYsIDE2OTMzMCwgMTY5MzM0LCAxNjkzMzgsIDE2OTM0MiwgCisgICAgMTY5MzQ2LCAxNjkzNTAsIDE2OTM1NCwgMTY5MzU4LCAxNjkzNjIsIDE2OTM2NiwgMTY5MzcwLCAxNjkzNzQsIDE2OTM3OCwgCisgICAgMTY5MzgyLCAxNjkzODYsIDE2OTM5MCwgMTY5Mzk0LCAxNjkzOTgsIDE2OTQwMiwgMTY5NDA2LCAxNjk0MTAsIDE2OTQxNCwgCisgICAgMTY5NDE4LCAxNjk0MjIsIDE2OTQyNiwgMTY5NDMwLCAxNjk0MzQsIDE2OTQzOCwgMTY5NDQyLCAxNjk0NDYsIDE2OTQ1MCwgCisgICAgMTY5NDU0LCAxNjk0NTgsIDE2OTQ2MiwgMTY5NDY2LCAxNjk0NzAsIDE2OTQ3NCwgMTY5NDc4LCAxNjk0ODIsIDE2OTQ4NiwgCisgICAgMTY5NDkwLCAxNjk0OTQsIDE2OTQ5OCwgMTY5NTAyLCAxNjk1MDYsIDE2OTUxMCwgMTY5NTE0LCAxNjk1MTgsIDE2OTUyMiwgCisgICAgMTY5NTI2LCAxNjk1MzAsIDE2OTUzNCwgMTY5NTM4LCAxNjk1NDIsIDE2OTU0NiwgMTY5NTUwLCAxNjk1NTQsIDE2OTU1OCwgCisgICAgMTY5NTYyLCAxNjk1NjYsIDE2OTU3MCwgMTY5NTc0LCAxNjk1NzgsIDE2OTU4MiwgMTY5NTg2LCAxNjk1OTAsIDE2OTU5NCwgCisgICAgMTY5NTk4LCAxNjk2MDIsIDE2OTYwNiwgMTY5NjEwLCAxNjk2MTQsIDE2OTYxOCwgMTY5NjIyLCAxNjk2MjYsIDE2OTYzMCwgCisgICAgMTY5NjM0LCAxNjk2MzgsIDE2OTY0MiwgMTY5NjQ2LCAxNjk2NTAsIDE2OTY1NCwgMTY5NjU4LCAxNjk2NjIsIDE2OTY2NiwgCisgICAgMTY5NjcwLCAxNjk2NzQsIDE2OTY3OCwgMTY5NjgyLCAxNjk2ODYsIDE2OTY5MCwgMTY5Njk0LCAxNjk2OTgsIDE2OTcwMiwgCisgICAgMTY5NzA2LCAxNjk3MTAsIDE2OTcxNCwgMTY5NzE4LCAxNjk3MjIsIDE2OTcyNiwgMTY5NzMwLCAxNjk3MzQsIDE2OTczOCwgCisgICAgMTY5NzQyLCAxNjk3NDYsIDE2OTc1MCwgMTY5NzU0LCAxNjk3NTgsIDE2OTc2MiwgMTY5NzY2LCAxNjk3NzAsIDE2OTc3NCwgCisgICAgMTY5Nzc4LCAxNjk3ODIsIDE2OTc4NiwgMTY5NzkwLCAxNjk3OTQsIDE2OTc5OCwgMTY5ODAyLCAxNjk4MDYsIDE2OTgxMCwgCisgICAgMTY5ODE0LCAxNjk4MTgsIDE2OTgyMiwgMTY5ODI2LCAxNjk4MzAsIDE2OTgzNCwgMTY5ODM4LCAxNjk4NDIsIDE2OTg0NiwgCisgICAgMTY5ODUwLCAxNjk4NTQsIDE2OTg1OCwgMTY5ODYyLCAxNjk4NjYsIDE2OTg3MCwgMTY5ODc0LCAxNjk4NzgsIDE2OTg4MiwgCisgICAgMTY5ODg2LCAxNjk4OTAsIDE2OTg5NCwgMTY5ODk4LCAxNjk5MDIsIDE2OTkwNiwgMTY5OTEwLCAxNjk5MTQsIDE2OTkxOCwgCisgICAgMTY5OTIyLCAxNjk5MjYsIDE2OTkzMCwgMTY5OTM0LCAxNjk5MzgsIDE2OTk0MiwgMTY5OTQ2LCAxNjk5NTAsIDE2OTk1NCwgCisgICAgMTY5OTU4LCAxNjk5NjIsIDE2OTk2NiwgMTY5OTcwLCAxNjk5NzQsIDE2OTk3OCwgMTY5OTgyLCAxNjk5ODYsIDE2OTk5MCwgCisgICAgMTY5OTk0LCAxNjk5OTgsIDE3MDAwMiwgMTcwMDA2LCAxNzAwMTAsIDE3MDAxNCwgMTcwMDE4LCAxNzAwMjMsIDE3MDAyOCwgCisgICAgMTcwMDMzLCAxNzAwMzcsIDE3MDA0MywgMTcwMDUwLCAxNzAwNTcsIDE3MDA2NCwgMTcwMDcxLCAxNzAwNzgsIDE3MDA4NSwgCisgICAgMTcwMDkyLCAxNzAwOTksIDE3MDEwNiwgMTcwMTEzLCAxNzAxMjAsIDE3MDEyNywgMTcwMTM0LCAxNzAxNDAsIDE3MDE0NywgCisgICAgMTcwMTU0LCAxNzAxNjAsIDE3MDE2NywgMTcwMTc0LCAxNzAxODEsIDE3MDE4OCwgMTcwMTk1LCAxNzAyMDIsIDE3MDIwOSwgCisgICAgMTcwMjE2LCAxNzAyMjMsIDE3MDIzMCwgMTcwMjM3LCAxNzAyNDQsIDE3MDI1MSwgMTcwMjU4LCAxNzAyNjQsIDE3MDI3MCwgCisgICAgMTcwMjc3LCAxNzAyODYsIDE3MDI5NSwgMTcwMzA0LCAxNzAzMTMsIDE3MDMxOCwgMTcwMzIzLCAxNzAzMjksIDE3MDMzNSwgCisgICAgMTcwMzQxLCAxNzAzNDcsIDE3MDM1MywgMTcwMzU5LCAxNzAzNjUsIDE3MDM3MSwgMTcwMzc3LCAxNzAzODMsIDE3MDM4OSwgCisgICAgMTcwMzk1LCAxNzA0MDAsIDE3MDQwNiwgMTcwNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIG5hbWUtPmNvZGUgZGljdGlvbmFyeSAqLwogc3RhdGljIHVuc2lnbmVkIGludCBjb2RlX2hhc2hbXSA9IHsKLSAgICA3NDIyNCwgNDg1MSwgMTI1MTM4LCA3ODE1NiwgNzg0OTksIDcyMzkxLCA3OTI5LCA2NjkxMCwgMTk0NjgyLCAxMjc3NjYsIAorICAgIDc0MjI0LCA0ODUxLCAxMjUxMzgsIDc4MTU2LCA3ODQ5OSwgNzIzOTEsIDc5MjksIDg5OTksIDE5NDY4MiwgMTI3NzY2LCAKICAgICA3ODUwMCwgNjY0ODAsIDY0MDM4LCA0MjgzMywgNzQ1MjksIDEyMDY0LCA3MjM4NSwgNTk2LCA5ODM4MjEsIDY5ODUwLCAKLSAgICAxMzE5MiwgODY1MSwgMTIwMjE3LCAxMjY1NDIsIDEyMDIxOCwgMTI5OTUsIDY0ODY1LCAxMzczLCAxMTk4NTYsIDExMzc1MiwgCisgICAgMTMxOTIsIDg2NTEsIDEyMDIxNywgNjY3ODksIDEyMDIxOCwgMTI5OTUsIDY0ODY1LCAxMzczLCA3MDc0MCwgMTEzNzUyLCAKICAgICA1ODE2LCAxMTkwNjcsIDY0ODEwLCA0MjMxLCA2ODI1LCA0Mjg5NywgNDIzMywgNDIzNCwgNDIzMiwgMTIwODg5LCA3NDQxNSwgCi0gICAgMTIwMjEwLCA2Mzg0LCA3MDM1MSwgNzgxMDgsIDg4NTEsIDY3Njk4LCAxMjg1NTMsIDgyOTU0LCA0MTYwMSwgODg3NCwgCi0gICAgNzIzOTIsIDc3NDgsIDEyNTA4MywgMCwgMTI3MDI2LCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCA5MTg4LCA0MTYwMCwgMCwgCi0gICAgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDEyODYzNSwgNjM4MSwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAzNDA0LCAKLSAgICA5ODMwNzksIDcwNDg3LCA3MjQxMSwgMTc1OSwgMTIwODUzLCA0MTA3NiwgNjgzODMsIDY5OTcyLCAxMTkyMDUsIDY2NTc3LCAKLSAgICA5NDAxNCwgMTI3NzY0LCA2NTg1OSwgMCwgNzQwNCwgMCwgMCwgNjk5NzAsIDEyODM4NywgNjU5MDgsIDk4MzQsIDMwNTUsIAotICAgIDk4NTIsIDEyODM2MCwgNjUyODgsIDEyMTI5MSwgMTEzOTgsIDAsIDkyNDE3LCA5MzAxNiwgMTI4MzgwLCAxMjczMzcsIDYwMywgCi0gICAgNzQzOTgsIDQzNTQ4LCAwLCA3MTg2NSwgOTE3ODI0LCAzMzUwLCAxMjA4MTcsIDY0MzE4LCAxOTQ2OTgsIDc4MTIxLCAzMzkwLCAKLSAgICA3NDQ4MywgNDMyNjUsIDkyMzk5LCA5MTc4MzAsIDc4NTczLCAxMTg4MDMsIDE5MTksIDM0MDAsIDEyMDY1MSwgODMyOTYsIAotICAgIDExNjQ3LCA4MzI5OCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAKLSAgICAxMTI5NywgOTgzNjg4LCA5ODMxNTIsIDExOTY2LCA2NDEyOCwgNjYyODYsIDkzMDQyLCAxMjg4MzAsIDY0MTMyLCAxMDg2NywgCi0gICAgNjQxMzAsIDY0MTI5LCAxMjEyNTUsIDQzMzc0LCA5Nzc5LCAyNzY0LCA2NjAwMiwgMTAxNjcsIDk0NzEsIDgzNDU4LCAKLSAgICA2NjAyMSwgNzQ1MDksIDAsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCA2NTI4MiwgMjg0MywgNTM1NSwgNjg4NTgsIAotICAgIDk4MzM0MiwgNjk5NzEsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAxMTM3MjQsIDEyODg3MiwgMCwgMCwgNzIzOTMsIAotICAgIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIDEwNjgyLCA4MzMwMCwgMTA2MDIsIDgwMCwgNDI0OTksIDY2MTg2LCAKLSAgICAwLCAwLCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDc1MDA4LCA3NzkyOCwgNDM5MjksIAotICAgIDEwOTA2LCAxMzUzLCA2OTYwLCA4MzAzMiwgMTI4Nzc5LCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIDQyMjQ0LCAKLSAgICA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgNzA0NTUsIDcyMzg4LCA3NDYwNiwgNTg3LCA5MTc5MDcsIDgyOTcxLCAKLSAgICAwLCAwLCAwLCA3ODIxNCwgMjc1MCwgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCA3ODcwNywgMTIyMTMsIDgzMjkwLCAKLSAgICAyNzYwLCA4MzI4NCwgODMyODUsIDc4NzA4LCA4MzI4NywgNjQxNTYsIDY0MTU1LCA0MjQ5NiwgODMyODMsIDY0MTUxLCAKLSAgICA2NDE1MCwgMTI2NzksIDEwMDUzLCAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMTI1MDE2LCAwLCA0ODM5LCA2ODUyNywgCi0gICAgMCwgMTg3NCwgMTE5MDE2LCAxMjAwOTEsIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDAsIDEyNzUzMSwgOTI1MzQsIAotICAgIDcwMDcsIDc1OTAsIDY1NDQzLCA5MDM2LCA3ODg0NywgNjQxMjIsIDY2Mzg5LCA2NjYwOSwgMTIxMzQ3LCA2NDExNywgCi0gICAgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCAKLSAgICA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgOTI4OTUsIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgMCwgMTA0NTMsIAotICAgIDY0MTA0LCA3MTg4LCA3OTk3LCAwLCA3Mzg5LCA5ODMxNjEsIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAKLSAgICAxMjg1NDUsIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgMTIwODY0LCA3Mzg0MSwgODMzMzksIDgzMzQwLCAKLSAgICA5MDU2LCA2NDMxMywgNjE4OCwgNzQzNjAsIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgNjQwNjUsIDY0MDcyLCA2NDA3MSwgCi0gICAgNjMsIDcyMzMsIDkyMjEyLCA3MjQxNCwgNDE5MDQsIDY2MzksIDY0MDY0LCA5ODM3NzUsIDEyODM0NCwgMTIxMzg4LCAxMTc2LCAKLSAgICAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI3MDE5LCAxMjgxOTcsIDkyNzQ3LCAxMjA1MTksIDQyOTMxLCA2NjI0MiwgMTE0MTUsIAotICAgIDQzMzMsIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgMCwgMTIxMjcxLCA5ODM2NDksIDc3MTQsIDY2MjIyLCA2OTkwMiwgCisgICAgMTAwNDEzLCA2Mzg0LCA3MDM1MSwgNzgxMDgsIDg4NTEsIDY3Njk4LCAxMjg1NTMsIDgyOTU0LCA0MTYwMSwgODg3NCwgCisgICAgNzIzOTIsIDc3NDgsIDEyNTA4MywgMCwgMTI3MDI2LCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCA5MTg4LCA0MTYwMCwgCisgICAgOTgzOTgxLCAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMTI4NjM1LCA2MzgxLCAxMDA4NzIsIDY2Nzk3LCA2NTI0MCwgCisgICAgMTE5NTEsIDAsIDM0MDQsIDk4MzA3OSwgNzA0ODcsIDcyNDExLCAxNzU5LCAxMjA4NTMsIDQxMDc2LCA2ODM4MywgNjk5NzIsIAorICAgIDExOTIwNSwgNjY1NzcsIDk0MDE0LCAxMjc3NjQsIDY1ODU5LCAxMjUyNTMsIDc0MDQsIDEyNTI0OCwgMTI4MzA4LCA2OTk3MCwgCisgICAgMTIwNjQ4LCA2NTkwOCwgOTgzNCwgMzA1NSwgMjIzNCwgMTI4MzYwLCA2NTI4OCwgMTIxMjkxLCAxMTM5OCwgMCwgOTI0MTcsIAorICAgIDkzMDE2LCAxMjgzODAsIDEyNzMzNywgNjAzLCA3NDM5OCwgNDM1NDgsIDAsIDcxODY1LCAxMjkzNjYsIDMzNTAsIDEyMDgxNywgCisgICAgNjQzMTgsIDEyMDY5OSwgNzgxMjEsIDMzOTAsIDc0NDgzLCA0MzI2NSwgOTIzOTksIDkxNzgzMCwgNzg1NzMsIDExODgwMywgCisgICAgMTkxOSwgMzQwMCwgMTIwNjUxLCA4MzI5NiwgMTE2NDcsIDgzMjk4LCA2NjQ0NiwgNjQxNDEsIDg1NjIsIDIxMjEsIDY0MTM4LCAKKyAgICA0MDQzLCA4NzEyLCA2NDEzNCwgNjQxMzMsIDExMjk3LCA5ODM2ODgsIDk4MzE1MiwgMTE5NjYsIDY0MTI4LCA2NjI4NiwgCisgICAgOTMwNDIsIDEyODgzMCwgNjQxMzIsIDEwODY3LCA2NDEzMCwgNjQxMjksIDEyMTI1NSwgNDMzNzQsIDk3NzksIDI3NjQsIAorICAgIDY2MDAyLCAxMDE2NywgOTQ3MSwgODM0NTgsIDY2MDIxLCA3NDUwOSwgOTgzMzA4LCA1NDU3LCA1NDQwLCA4ODU3LCA5Mzk4MSwgCisgICAgNjUyODIsIDI4NDMsIDUzNTUsIDY4ODU4LCAxMDA1MzAsIDY5OTcxLCA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgCisgICAgMTAwNTI5LCAxMjg4NzIsIDAsIDk4MzkwNywgNzIzOTMsIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIDEwNjgyLCAKKyAgICA4MzMwMCwgMTA2MDIsIDgwMCwgNDI0OTksIDY2MTg2LCAwLCAxMjgxNDYsIDY0OTMwLCAxMTYzMSwgNjQxNDYsIDY0MTQ1LCAKKyAgICA2NDE0NCwgNzYyLCAxMzE3MiwgNzUwMDgsIDc3OTI4LCA0MzkyOSwgMTA5MDYsIDEzNTMsIDY5NjAsIDgzMDMyLCAxMDA0MjMsIAorICAgIDU4MjgsIDg3MjQsIDEyMjkxNiwgODkzMywgMTYwMSwgNDIyNDQsIDg1OCwgNzA4MCwgNjQxMDksIDY0MTA4LCA4MDkwLCAKKyAgICA3MDQ1NSwgNzIzODgsIDc0NjA2LCA1ODcsIDE5NDY0OSwgODI5NzEsIDk4MzgwOCwgMTI5MzQ1LCAxOTQ3OTUsIDc4MjE0LCAKKyAgICAyNzUwLCA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDc4NzA3LCAxMjIxMywgODMyOTAsIDI3NjAsIDgzMjg0LCA4MzI4NSwgCisgICAgNzc5MzQsIDgzMjg3LCA2NDE1NiwgNjQxNTUsIDQyNDk2LCA4MzI4MywgNjQxNTEsIDY0MTUwLCAxMjY3OSwgMTAwNTMsIAorICAgIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAxMjUwMTYsIDAsIDQ4MzksIDY4NTI3LCAxMjUwOTEsIDE4NzQsIDExOTAxNiwgCisgICAgMTIwMDkxLCA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAxMjAxODgsIDEyNzUzMSwgOTI1MzQsIDcwMDcsIDc1OTAsIAorICAgIDY1NDQzLCA5MDM2LCA3ODg0NywgNjQxMjIsIDY2Mzg5LCA2NjYwOSwgMTIxMzQ3LCA2NDExNywgNjQxMTYsIDYyODcsIAorICAgIDY0MTE0LCAyNzI1LCA2NDEyMCwgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCA2NTYwMSwgMTIzMjIsIAorICAgIDY0MTA2LCA2OTY0MCwgOTI4OTUsIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgOTgzNDgyLCAxMDQ1MywgNjQxMDQsIAorICAgIDcxODgsIDc5OTcsIDEyODYwMCwgNzM4OSwgOTgzMTYxLCA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgMTI4NTQ1LCAKKyAgICA0NDAxNywgMTE0MjksIDcxMzQ3LCAwLCA5ODMwNzcsIDEyMDg2NCwgNzM4NDEsIDgzMzM5LCA4MzM0MCwgOTA1NiwgNjQzMTMsIAorICAgIDYxODgsIDc0MzYwLCA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIDY0MDY1LCA2NDA3MiwgNjQwNzEsIDYzLCA3MjMzLCAKKyAgICA3NDk1MywgNzI0MTQsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzc1LCAxMjgzNDQsIDEyMTM4OCwgMTE3NiwgMTE4OTU5LCAKKyAgICAxMjc5MzAsIDgxNjIsIDEyNzAxOSwgMTI4MTk3LCA5Mjc0NywgMTIwNTE5LCA0MjkzMSwgNjYyNDIsIDExNDE1LCA0MzMzLCAKKyAgICA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDk4MzQwNSwgMTIxMjcxLCA5MTc5MDcsIDc3MTQsIDY2MjIyLCA2OTkwMiwgCiAgICAgNzc2OCwgNzI0MDMsIDQxOTksIDY0NzA4LCA2NTA2NCwgNzAxMTcsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCi0gICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDcxODc4LCAxMjY1NzAsIDEyMTI1NiwgCi0gICAgNjQ2MTUsIDQxOTE1LCAwLCAxMjA3NSwgNDIwNDEsIDE5NDgyNSwgNTE3NCwgOTgzMjE3LCAwLCAxMjc1NTcsIDMxMjMsIAotICAgIDEyNTEwMCwgMTI2ODUsIDExOTIxNiwgODQwOCwgNjQ3MDQsIDgzMzI4LCAwLCA5MjIzLCAwLCA0MTYxNiwgNjc5OTksIAotICAgIDczNzk3LCA4MzMyNywgMTExNiwgNzUwNjcsIDQzMDQ5LCA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAwLCA3NTAzMSwgCi0gICAgOTE3NjIyLCAxMjgxNjgsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIDkzMjIsIDgzMzM4LCA4MzMzMSwgNjQwOTUsIDY0MDk0LCAKLSAgICA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgNjcyNDksIDY2Mzk4LCAxMTQzNCwgNjQwODMsIAotICAgIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDgzMDMzLCA5OTI3LCA0MTMzNSwgNDExOCwgCi0gICAgMTc5NywgODMzMTIsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDgzMzA5LCAyOTgsIDgzMzAzLCA4MzMwNCwgODMzMDUsIDQyNjI3LCAKLSAgICAxMjUwMTEsIDMyLCA2MTg3LCA4MzAzNywgMTE0OTUsIDExNDU5LCAzNjY1LCA4MzAzNiwgNDI4NzEsIDAsIDE5OTIzLCAKLSAgICA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA4MzMxNCwgNzE0NDQsIDk4MzQ2OCwgCi0gICAgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCA4MzQ2MSwgNjgwNTMsIDgzNDA3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCAKLSAgICA2NTAxNCwgOTgzNDIyLCAxMjg0ODQsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAxMTg4NTEsIDgzMDM5LCAxMTg5MDQsIAotICAgIDEwMDczLCAxMjAyMDYsIDgzMDM4LCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgCi0gICAgMTI4OTE1LCAxMDIwNywgODc4OSwgOTMwNzAsIDEyMDMzOCwgOTI5NzMsIDEyODMyNSwgOTIzNCwgOTE3ODk1LCA2MTgyLCAKLSAgICA5ODM0NzUsIDY1MDU4LCAxMjAzMTksIDk4MzQ4MCwgNjgwNjQsIDkxNzgzMSwgNTQ3MSwgOTQ2MSwgNTU3MywgMTE4OTM2LCAKLSAgICA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDY2ODk0LCAxNjIyLCA3NzY3LCAxOTAwLCAKLSAgICA0MTMzOSwgMTE0NTgsIDExOTA2MSwgMCwgNjU4MSwgNTU3NiwgMTI4NjE4LCA0Mzg1NSwgNDEzMzcsIDAsIDQxNjMxLCAKLSAgICA4OTQ3LCA2ODM5MCwgNjk2ODMsIDQxNjk0LCA5ODM4NDgsIDcyMzk2LCA3OTA4LCAwLCAxMDQwOCwgNjU3OSwgOTE3ODcyLCAKLSAgICA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCA3MDAwNSwgMTIwNTA0LCAxOTQ4MjgsIDEyODk2MSwgNTA1OCwgCi0gICAgNDEwMTAsIDk5OTIsIDEyODI5OSwgNTA1NywgOTE3OTQxLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAKLSAgICAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgCi0gICAgMTI4MzIyLCAxMjg1MjksIDEyMTEzLCA0MjM2LCA0NzI3LCAxMjg0ODcsIDAsIDc2OTMsIDEwNzQ5LCAxMjAzMzIsIDc0ODgsIAotICAgIDU3NzMsIDk3OCwgMTI4MTM0LCA5ODM2OTksIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDcxODY0LCA2NjIwOSwgMTI3MjMzLCAKLSAgICA3NDEzNSwgOTc0OCwgOTgzOTU2LCAxMjc1MjQsIDAsIDk4MzMxNiwgMTk0Njc2LCAxOTQ2NzUsIDEyODA4MSwgMCwgCi0gICAgOTgzMzEzLCA5ODMzMDIsIDAsIDEyNzg2NSwgMCwgOTI3NzYsIDkzNDEsIDc4ODIxLCAyMzc5LCAxMTMyNSwgOTE3OTAyLCAKLSAgICA2NDY2OCwgNjc4NTQsIDgxMjUsIDEyMDU0NSwgNjc0MywgODMxNjQsIDkxNzk0MCwgMjM2OSwgODM0MDYsIDk4MzMyMywgCi0gICAgMTI3OTY2LCAxMTkyMzUsIDcxODY4LCA3MzkzNiwgNzAwOCwgNDM2NjAsIDEyMDM0NiwgMCwgNDM4NDEsIDIzNjcsIAotICAgIDEyNzgyNywgOTgzODU3LCAyNjQsIDIzNzUsIDgwNjAsIDYxOTQsIDExOTg1OCwgMTg0NCwgMTE5MDg0LCAxMjkwNDksIAotICAgIDYwMTksIDEyODk3NSwgMCwgNjk2MSwgMCwgNzA0MzUsIDY3MTcxLCA4ODAwLCAxMjczMzIsIDQyODYyLCA0NDYzLCA2NTU4MSwgCi0gICAgNjE5MiwgMTE5NjEwLCA0Mjc3MSwgMCwgOTIzMzMsIDcyNSwgNjUwNDIsIDkzMDE0LCAxMjA4MDAsIDc0OTQyLCAxMjg5MiwgCi0gICAgMCwgNjcxNDksIDc0ODk5LCA3MzkzMSwgMCwgMTIwNDk1LCAxMjcyNjEsIDEyMjI0LCA5ODMxMjgsIDEyOTA2MSwgNTA3NCwgCi0gICAgNTA3MywgMTIxMTY0LCA4OTgzLCAxMTg5ODEsIDc0NDkzLCA3MTIzMSwgNTA3MiwgNzQ1NDcsIDYxOTgsIDExNjE0LCAwLCAKLSAgICAxOTYsIDk4MzE1NCwgMCwgOTgzOTM2LCA0OTI5LCAxMjAzNDIsIDEyOTE0NSwgMCwgMTI3OTg3LCAxMjE0NTUsIDQyODQ3LCAKLSAgICA5Mjk1MywgMCwgNjc3NTQsIDQ5MzQsIDk4Mzk4MSwgNDEzMjMsIDk3NTgsIDAsIDkyMjg5LCA3MDE4MSwgNDI1ODQsIDAsIAotICAgIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgOTgzMDQyLCA2NDY2NywgMTI4MTksIDk4Mzg3MCwgNTA3MSwgCi0gICAgMTI3OTE1LCAzNjQyLCA2NzMzNCwgNTA3MCwgMTAwNDIsIDExMzgxMywgMzk4NywgNTA2OCwgOTgzNDYwLCA4OTA5LCAKLSAgICA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIDExODA2LCA0MzE2NywgNDUzMSwgMTI0NSwgOTEwNSwgNjY0NjMsIAotICAgIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAxMjEzNTksIDEyODAyOCwgMCwgNjQ3MDksIDgzMjY5LCAKLSAgICAxMjg4NTQsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAxMjcyMTgsIDAsIDk1MjYsIDQ5MjAsIAotICAgIDEyODYxNywgOTQ4LCAwLCAxMjAyMDgsIDQ5MzAsIDEyNzg1NywgOTIxNzUsIDEyMDI3NSwgNDkzMywgMTEzNzc5LCAKLSAgICAxMjEwNDksIDExODk4NSwgNDkyOCwgOTgzMTQ5LCA4MzUxNCwgNzQ3NzAsIDEyMDE5NCwgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgCi0gICAgMTk5MDgsIDEyNjM3LCAxMjc0ODUsIDgyOTk5LCA4NzUzLCAxNTA5LCAwLCA1NDY4LCA5NTExLCA0MzQ5MywgMTI3NDc3LCAKLSAgICAxNjcyLCA2MjA1LCAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIDkyNjk0LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgCi0gICAgMTI2NTc3LCA2ODMzNiwgNDE2MDcsIDEyMDExNSwgMTY3OSwgMTIwMTE2LCAxMjAxODAsIDkyNzYxLCAxMjc0NjIsIDcwMDUsIAotICAgIDQxNjA5LCA5NTgwLCA3MDQzMSwgNDAxLCA2OTk0OSwgNDM3NzksIDY5NjgsIDU3NjEsIDM0MiwgODU1MywgMTI3OTAwLCAKLSAgICA4MTQzLCAxMjcxMTUsIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgCi0gICAgMCwgNTA3NiwgMTI4NzAyLCA4Mjk5MSwgMCwgODI5NSwgNjg1LCA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMTI5MTgyLCAKLSAgICA5MjUyMywgNzE0MzUsIDcxMzgsIDEyMDU1MiwgNDM1MDQsIDE5NDYxMSwgNjY5MTQsIDY1Nzk0LCAxMjUyMCwgODA1OCwgCi0gICAgOTczMiwgOTI0ODAsIDUwODAsIDY0Nzc1LCA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCA5ODM2NTYsIDAsIDgwNzQsIAotICAgIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCA0NDMyLCAxMjEzMTMsIDUwMzMsIDEyMDM0MSwgMTIwODE4LCA0ODM2LCAzODg4LCAKLSAgICA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAxMjcyNjIsIDQzNzA0LCAxMjcyNjQsIDkyOTU3LCA2NzU4OCwgNjgwNjEsIDEyNDk4MywgCi0gICAgNzAzNjAsIDg4NTgsIDY0MDksIDc2NjMsIDEyMDI1MiwgMTI4MTAwLCAxMTkwMDcsIDAsIDY2MzIxLCA5NDA1MiwgMTI4MTQsIAotICAgIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIDYwOTQsIDc2NDEsIDQyNDQ1LCAxMjg3OTIsIDkyNDg3LCA0MjQwNiwgMTY3NiwgCi0gICAgNjczNjIsIDc0ODYyLCA2NzM2NSwgNTAzMCwgNjczNjQsIDExODgxMCwgMTk1MDA4LCA3Mzg2OSwgOTYyMiwgMTEzNzYzLCAKLSAgICA2OTk0NCwgNjc4NywgNjczNjEsIDk4MzI3MCwgMCwgNjgzMTksIDEwNTQ0LCAxMjkxOSwgNzE0ODQsIDcyMzk3LCAwLCAwLCAKLSAgICA2OTkwNiwgMTIwNzg5LCA5ODMwNDEsIDk0NywgNjc2OTUsIDY3MzY3LCAxMjg1MjgsIDEwOTY5LCA2NzIyOCwgNzYxMywgCi0gICAgOTI1NjIsIDExOTkzNiwgNDc5NSwgMTE5OTMwLCA3MDE4LCA3Mzc2LCAxMjAxODEsIDEyMDE5MiwgMTIwMjY4LCAwLCAKLSAgICA0MzU2NywgNzQwNTYsIDEyMDI2NiwgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgCi0gICAgNDM5NSwgNDM1MzgsIDExOTkyNiwgMTE5ODM0LCAxMTk5MjgsIDcyMTMsIDY4NDc2LCA3MjE0LCA3MjE1LCA1ODc5LCAKLSAgICA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIDEyMDE3MywgNjU1NDAsIDY3MzU5LCA2MjUsIDgxODcsIDQyODYxLCAxMTEzLCAKLSAgICA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIDgxNzksIDcwMTYzLCA2Nzg4NiwgOTMxNiwgMTA5ODAsIDI0ODksIDY1NjI0LCAKLSAgICA4MTUwLCAxMzU5LCA2NzY1MiwgNzA0NjQsIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAxMjA4NCwgCi0gICAgMTI3MzI0LCAxMjczMjEsIDc0NDEwLCAxMjczMTksIDEyNzMyMCwgMTI3MzE3LCAxMjEyODQsIDEyNzMxNSwgMTIyODMsIAotICAgIDE2MTYsIDM3OTUsIDY3NzMyLCA4Nzk1LCA2NjI0NSwgMCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAxMjgyODAsIAotICAgIDY3NzI0LCAzMjM5LCA2Njg5MywgMTI4ODE4LCAwLCA4NDMxLCAwLCA0MjE2NCwgNzEyMjksIDExNzc4LCAxMjYyMCwgNjgyNiwgCi0gICAgNzM3NzMsIDcwMTY5LCA1MDQwLCAxMjc5NjksIDAsIDY3MDk0LCA3ODQyMCwgMCwgNTAzOSwgOTgzMjQxLCA3ODQxOCwgMCwgCi0gICAgNTAzOCwgMCwgOTgzODYyLCAxMzE4NCwgNDM5NjAsIDEyMDkzMSwgNjQ2NDgsIDAsIDkzNTksIDc4NDE2LCA5MTc2MjMsIAotICAgIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDcwMTgyLCAzODYzLCA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAxMjc4MjIsIAotICAgIDQzMDksIDcxMjcsIDE5NDU2OSwgMCwgMTk0NTY4LCAxMzAxLCAwLCA0MjU4OSwgNTY5LCAxMjg4MDQsIDczODEzLCA3MTEsIAotICAgIDQzODksIDcxMzMsIDEyMDY0MywgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIAotICAgIDY3MjI0LCAxNTUwLCA4MjAxLCA3MDQ1MywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCA2NTc4NCwgNDM5NTcsIAotICAgIDY1MjY3LCAzNzU4LCAwLCA2NTc4MSwgNjQ3MzQsIDY3MjIyLCAyNDQwLCA0Mzk1NSwgNzA3ODcsIDg0NDksIDAsIDUwMDgsIAotICAgIDk4MzU3MiwgMjExOCwgMTI2NTA4LCAxMjEyMSwgODI1NSwgNTUxMiwgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIAotICAgIDIxMzMsIDExMTksIDEyMTI1MCwgMjExNCwgMjExNiwgMjQ1NSwgMTEzNzk4LCAyMTIyLCAyMTIzLCAyMTI0LCAyMTI1LCAKLSAgICAxMjc0ODYsIDg3MTQsIDk4MzgyMCwgMjExMywgMTk1MDQ5LCAyMTE1LCAxMjgxNzcsIDEyNzkwNywgNDM3MTMsIDUwNTIsIAotICAgIDY2MjIwLCA1ODIxLCA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCA0MjY0NywgNTA1MCwgMzAyLCAKLSAgICAzODgsIDQxMTE1LCA3MzUsIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIDkxMTcsIDk4MzE4MSwgMTIwMDMsIAotICAgIDU1MTMsIDUxMDksIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgMCwgNzg0NDcsIDI0NzAsIDc4NDM3LCAwLCAxOTI1LCAKLSAgICA3MTI1MSwgOTIyMzcsIDc0ODA3LCA5ODMwNjIsIDUwNDgsIDUwNDcsIDE5NDgzNywgOTgzMzgwLCA3NDIwMSwgOTIzMTMsIAotICAgIDE5NDgwMiwgNzQ0OTcsIDgyOTgyLCA4MDg5LCA2OTI5LCA2MzksIDgyOTgxLCA2ODE3OSwgNjQ0NDIsIDcwMTgwLCA4Mjk4NCwgCi0gICAgNDU5OSwgNDE0MDIsIDY2NzQsIDQzMzk3LCA0MzI5NCwgMTQ3NiwgNjQ4LCAwLCA2NTgxOSwgMzIzMywgMCwgNDE3ODIsIAotICAgIDY5NTEsIDk0MDE3LCAxMjkxOTcsIDM1MzAsIDk3NTAsIDEyODMxNywgMTIwOTkxLCA2NjU2LCA0MjYxOCwgNzAxNzUsIAotICAgIDUwNDYsIDg1MTIsIDY1ODU2LCA3NDI2MSwgODk2NywgMCwgNTA0NSwgNDIwMjYsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgCi0gICAgOTAwNiwgMTMxMjgsIDUwNDMsIDEyMTMzNSwgNzg1MywgNjc4MDgsIDc0MDA0LCA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIAotICAgIDEyODg4MywgMTE5MDcwLCA3MDE3NCwgNDE3NTAsIDM1ODYsIDY0NTA4LCA0MzE0OCwgMCwgMTI3OTcxLCAxMTk2MDYsIAotICAgIDY3OTgzLCAxMzI5NiwgNTE3LCAwLCAxMjg0NjcsIDE5NDk0NiwgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDEyMTMyNiwgCi0gICAgNzQ0NzgsIDEwNTMxLCA3Nzg0LCA0MTUyNiwgMTA4MjksIDczOTkxLCA4MDU3LCAxMTI2LCA3Mzg5NSwgMTk0ODU3LCAKLSAgICAxOTQ1OTEsIDAsIDM5MjUsIDQyNTEsIDgwNjksIDEwNTE3LCA3MTExMiwgNDg5LCA3MTExMCwgNDI1MCwgOTIyNjYsIAotICAgIDEyMDQ1MiwgNDMxNTEsIDk4MzE3OCwgOTI3MzgsIDY2MjAwLCAwLCAwLCAxMjUwMjYsIDc0Mjk4LCAxMjg4NzksIDk4MzQ3NiwgCi0gICAgODcxMSwgNjE4MywgODM0NDgsIDk4Mzk1MiwgNzI0MDIsIDEyMDQ0OCwgNzYyMywgMTE4OTI1LCA2NjM3NiwgOTIzNSwgCi0gICAgMTI3NjAsIDc0MTc2LCA2OTY2MiwgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgCi0gICAgMCwgMTI2NTk3LCAxMjA0MzQsIDE5NDg1MCwgNzcyNiwgMTk1MDk1LCAxOTkyMiwgMjY3LCAzMzkzLCA0MjE5OCwgMTM3MSwgCi0gICAgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgNDEwNzcsIDM0MDIsIAotICAgIDkwNTAsIDMzOTgsIDEyODQyNCwgOTgzMzUwLCAwLCAzMzkxLCA0MTA3NSwgMjQ3NiwgMCwgMTI4MDE3LCAwLCAxMDYyNSwgCi0gICAgMTI5MTA2LCAxMjc2NywgMTMwMTcsIDc4NzQzLCA2NDI2MSwgNjQ5MzQsIDcwMTUyLCAxMzAxNCwgMTMwMTMsIDEyMTE5OCwgCi0gICAgNjY3MywgMCwgMCwgMTIxMzI0LCAxMjQzOCwgMCwgOTgzMzQ0LCA4MzEwNiwgNzExMjgsIDEyMDA2MiwgOTA1MywgMTMwMTUsIAotICAgIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCA3NDk0OSwgNjY2MCwgNzg3NTgsIDkxNzc2MCwgNzQ4NjEsIDQyMjEyLCAKLSAgICAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgNjczNDMsIDEyMTQzNywgMTI5MDg2LCA0Mzg3NiwgOTI5NDEsIAotICAgIDY1NDQ4LCA3ODEwMCwgMTI5NDgsIDExOTAwMSwgMTI4NTk1LCA0Mzk0OSwgMTIwMDQ4LCA3ODA5OSwgMTI3MDg1LCAwLCAKLSAgICAxMjgzMjAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDk4MzYwNiwgNzg0NTgsIDY2NzI4LCAxODE2LCA0Mzk1MiwgNDI1MzMsIAotICAgIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCA0Mzk1MCwgNzgxMDUsIDQ5MDEsIDE4MjEsIDQzOTUxLCA1NzgsIDM2NTMsIAotICAgIDEyODk0NiwgNzkxLCA5MTYyLCA2OTc3LCA3NDE5NiwgNzg4ODksIDcwMTYwLCAwLCA3MzczMSwgODM1NCwgNDM1OTAsIAotICAgIDExOTMwMywgOTgzNDUxLCA3NTU3LCAxMTkxMDgsIDY3Mzc4LCA4MjM0LCA3MjQxLCAxMjg2MDgsIDExMzczNSwgMTE5MTY3LCAKLSAgICAxOTQ5OTYsIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAKLSAgICAxMjgyNzYsIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgCi0gICAgMjQ1MiwgNzgwODMsIDY3MjE3LCA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgMTI2NTY0LCA3MTMwMiwgNDQwOCwgNDEyMiwgCi0gICAgNjc3MiwgMTEwMzksIDg3MjMsIDY1ODk2LCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgNzE5MDQsIDI0MzgsIDY0ODU1LCAKLSAgICAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMCwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgMTE1MjEsIDc3MjMsIAotICAgIDEyODYzOSwgMCwgMCwgNDE5NTIsIDkzMDIzLCA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCA1MjAyLCAyNDA0LCA1MjY3LCAKLSAgICA0MjgyMywgMTEyOTEsIDE5OTE1LCA1Mjc3LCAxMjk2MywgNzAzMjAsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAxMjAzNDAsIAotICAgIDExODg3MywgMTI3MSwgOTgzNjQwLCAxMjkxMTIsIDY2MDI0LCA0MTQ4MiwgMzg2NCwgOTIwNCwgMCwgMzg3OSwgMCwgCi0gICAgMTI5NzgsIDQxNjYsIDQ1NzQsIDEyODExMSwgNzU2NywgNzQ1OSwgNzgxMjgsIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIAotICAgIDcwMTU0LCA1NzU5LCAxOTQ4NjksIDEyMTQxMywgNDEzODgsIDY0NDQ2LCA0MTM5MiwgNjQyODgsIDQxMzg3LCA2NzIwMSwgCi0gICAgODcwNiwgNTU1MiwgNjg4MzcsIDcwMCwgMCwgNTU1MywgMCwgNzA4OCwgNTM1NiwgNzQ5OSwgNjgwMDcsIDY2NTk2LCAKLSAgICA3NDA2NiwgNjcyNTEsIDEwMjYzLCA1NTU0LCAwLCAxMjM0NCwgMTAzMTEsIDc4MTEzLCA2NjY1LCAxMTExNSwgMTIxMDM1LCAKLSAgICA3NjE4LCA4NTE3LCAxMTQ1NSwgNzg0NDAsIDY0NjMyLCA2NDQ0NywgNTU1NSwgNzgwODgsIDc4MDkzLCA3ODA5MSwgMCwgCi0gICAgNDI4MDMsIDY1MDMzLCA5MTQzLCA2NjY4LCA2NzI4OCwgNjc5OTUsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIDY1MDM3LCA0NTc3LCAKLSAgICA2NDYyNCwgMCwgMCwgNzE5MTIsIDE5NDkwOCwgNDI2OSwgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDAsIAotICAgIDkyMjczLCA2NjU4MCwgNzc5OTIsIDY2NjgzLCAxMDU1NCwgMTE5MDA4LCAxMTkxMjEsIDY4MzIsIDUwOTgsIDkxNzc2OCwgCi0gICAgMTk0NjY4LCA3MDQwMywgNTA5NywgNDkzNSwgOTg0OCwgMTAzODEsIDAsIDY3Mjk2LCA5Mjg5NiwgMzY1MSwgMCwgNjcyOTQsIAotICAgIDcwODQ4LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAKLSAgICAxMjQ3LCAxMDAzNCwgMTIxMzQwLCA1MDk5LCA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMTE5OTUzLCA3ODM4LCAKLSAgICAwLCAxMjg2NTUsIDE5NTA0MCwgMTE5MTQyLCA5MDMxLCA3MDgyOSwgNzg0MjcsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIAotICAgIDE5NDkyMywgOTE1NCwgOTExOCwgMTI2NTQzLCAxMTk1ODYsIDI2NzYsIDIyNzcsIDEyODQyMiwgNjgyMzcsIDYxOTAsIAotICAgIDg1OTksIDEyNTExOCwgNjk5MTgsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIDcxOTAzLCAxMjEyOSwgCi0gICAgMTI2NjUxLCA4NDgxLCA4MzA2OCwgNjIwMiwgNjc3MTEsIDEwOTIwLCAxMTM3MjYsIDUyMDMsIDE5NTAzOSwgMTk1MDM4LCAKLSAgICA1MTA4LCA1MTA3LCA2NTgxOCwgNjYwMTksIDk3NjIsIDExMjA1LCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIDY2NTcsIAotICAgIDIwNywgMTIxMjA2LCA0Mjc1LCA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDY2ODE2LCA3ODc4NiwgNTEwMywgMTI3ODYxLCAKLSAgICA2NDM0OCwgNDEzNjgsIDQzOTc0LCA0ODgsIDY5ODExLCAwLCA3MTMzOSwgMTAxNTcsIDE5NDYxMiwgNDMwMzQsIDExNDM4LCAKLSAgICA2NDY3NCwgMCwgNzAxNTgsIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgCi0gICAgNTEwNSwgNjUyNjYsIDY5NzIwLCA2NDc2LCA1MTA0LCA5ODM3NDksIDMwNCwgMzE3NiwgNzg4NzEsIDcwMTQ5LCA5MzIsIAotICAgIDExMzY4MywgNjU2NywgMjM4LCA2OTY1NiwgNzg0MzIsIDE5NDU5NSwgMTk5MDUsIDQzODUwLCAxOTUwMTUsIDc4ODcwLCAKLSAgICA0MTA0NCwgNjc2NDAsIDY3MzAyLCA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIDEyNTUyLCAKLSAgICA5MzAzOSwgODgwMywgMzA5LCA2NjIyLCA4MTUxLCAxMDg1OCwgNzg3MDYsIDY3NjM2LCA3MDE3MSwgMTI1NjgsIDEyNzkxNywgCi0gICAgMTI1NTMsIDEwODE0LCA0MzI3NSwgNjk1MCwgOTcxMiwgNjg2ODAsIDQzOTcwLCAxMjY1MzUsIDY1MTY1LCA5MjcyNSwgMCwgCi0gICAgNjY0NjYsIDEyNDk4NiwgMTI3Nzg0LCAwLCA2NjcyNSwgNjE5MSwgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDQzNzYzLCAKKyAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgNzE4NzgsIDEwMDM3NywgMTIxMjU2LCAKKyAgICA2NDYxNSwgNDE5MTUsIDEwMDM3NSwgMTIwNzUsIDQyMDQxLCAxMjUwODQsIDUxNzQsIDk4MzIxNywgMTAwMzcyLCA3NDE4NiwgCisgICAgMzEyMywgMTI1MTAwLCAxMjY4NSwgMTE5MjE2LCA4NDA4LCA2NDcwNCwgODMzMjgsIDEyMjg5MSwgOTIyMywgMCwgNDE2MTYsIAorICAgIDY3OTk5LCA3Mzc5NywgODMzMjcsIDExMTYsIDc1MDY3LCA0MzA0OSwgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgCisgICAgOTgzODcxLCA3NTAzMSwgOTE3NjIyLCAxMjgxNjgsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIDkzMjIsIDgzMzM4LCA4MzMzMSwgCisgICAgNjQwOTUsIDY0MDk0LCA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgNjcyNDksIDY2Mzk4LCAKKyAgICAxMTQzNCwgNjQwODMsIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDgzMDMzLCAKKyAgICA5OTI3LCA0MTMzNSwgNDExOCwgMTc5NywgODMzMTIsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDc4NTkxLCAyOTgsIDgzMzAzLCAKKyAgICA4MzMwNCwgODMzMDUsIDQyNjI3LCAxMjUwMTEsIDMyLCA2MTg3LCA4MzAzNywgMTE0OTUsIDExNDU5LCAzNjY1LCA4MzAzNiwgCisgICAgNDI4NzEsIDExODkwMiwgMTk5MjMsIDc0MzM1LCAwLCAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIDQ0MTIsIDcyNDAsIAorICAgIDgzMzE0LCA3MTQ0NCwgMTE5MzIxLCA2NTc1OCwgMTI3NTAsIDQxODEsIDg1NDQsIDgzNDYxLCA2ODA1MywgODM0MDcsIAorICAgIDEyMDE5OCwgNjk4MDksIDYxODEsIDY1MDE0LCAxMDA3NTAsIDEyODQ4NCwgOTgzMTk2LCAzNjM5LCAxMTk1ODgsIDExODg1MSwgCisgICAgODMwMzksIDExODkwNCwgMTAwNzMsIDEyMDIwNiwgODMwMzgsIDEyNzE4NiwgNjg0MDksIDQyODQ0LCA3NDk4LCAxMDk4LCAKKyAgICA5MjU2NSwgMTIwMjA1LCA5MTc3NzMsIDEyODkxNSwgMTAyMDcsIDg3ODksIDkzMDcwLCAxMjAzMzgsIDkyOTczLCAxMjgzMjUsIAorICAgIDkyMzQsIDkxNzg5NSwgNjE4MiwgOTgzNDc1LCA2NTA1OCwgMTIwMzE5LCA5ODMyMTEsIDY4MDY0LCA5MTc4MzEsIDU0NzEsIAorICAgIDk0NjEsIDU1NzMsIDExODkzNiwgNTQ3MywgNDQsIDAsIDY2MjQ0LCA5NDA3MiwgMCwgNjYyMzgsIDEyODQ0LCA2Njg5NCwgCisgICAgMTYyMiwgNzc2NywgMTkwMCwgNDEzMzksIDExNDU4LCAxMTkwNjEsIDk4MzE4MywgNjU4MSwgNTU3NiwgMTI4NjE4LCAKKyAgICA0Mzg1NSwgNDEzMzcsIDk4Mzc3MiwgNDE2MzEsIDg5NDcsIDY4MzkwLCA2OTY4MywgNDE2OTQsIDkxNzc4NywgNzIzOTYsIAorICAgIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCAxMjc4OTAsIDY0NjE4LCAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDcwMDA1LCAKKyAgICAxMjA1MDQsIDE5NDgyOCwgNjY4MDIsIDUwNTgsIDQxMDEwLCA5OTkyLCAxMjgyOTksIDUwNTcsIDY5ODkyLCAwLCA3NDUzOCwgCisgICAgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCA3MTM2NSwgNzQ4NiwgCisgICAgNTA2MSwgNTA2MCwgNDIzNSwgMTI3ODc4LCAxMjgzMjIsIDEyODUyOSwgMTIxMTMsIDQyMzYsIDQ3MjcsIDEyODQ4NywgMCwgCisgICAgNzY5MywgMTA3NDksIDEyMDMzMiwgNzQ4OCwgNTc3MywgOTc4LCAxMjgxMzQsIDEyODY5MywgNDE2MTksIDEwMjM5LCAKKyAgICA2ODYxMSwgNzE4NjQsIDY2MjA5LCAxMjcyMzMsIDc0MTM1LCA5NzQ4LCAxMDAzODMsIDEyNzUyNCwgMTI1MjE4LCA5ODMzMTYsIAorICAgIDE5NDY3NiwgMTk0Njc1LCAxMjgwODEsIDcwNjgxLCAxMDAzODUsIDcyODExLCA4MzM1NCwgMTI3ODY1LCAxMjA5OTksIAorICAgIDkyNzc2LCA5MzQxLCA3ODgyMSwgMjM3OSwgMTEzMjUsIDEwMDM4NiwgNjQ2NjgsIDY3ODU0LCA4MTI1LCAxMjA1NDUsIAorICAgIDY3NDMsIDgzMTY0LCA5MTc5NDAsIDIzNjksIDgzNDA2LCA5ODMzMjMsIDEyNzk2NiwgMTAwNTQzLCA3MTg2OCwgNzM5MzYsIAorICAgIDcwMDgsIDQzNjYwLCAxMjAzNDYsIDAsIDQzODQxLCAyMzY3LCAxMjc4MjcsIDEyODI3NSwgMjY0LCAyMzc1LCA4MDYwLCAKKyAgICA2MTk0LCAxMTk4NTgsIDE4NDQsIDExOTA4NCwgMTI5MDQ5LCA2MDE5LCAxMjg5NzUsIDk4MzU1NywgNjk2MSwgMCwgNzA0MzUsIAorICAgIDY3MTcxLCA4ODAwLCAxMjczMzIsIDQyODYyLCA0NDYzLCA2NTU4MSwgNjE5MiwgMTAwNzQ0LCA0Mjc3MSwgMTI3OTgzLCAKKyAgICA5MjMzMywgNzI1LCA2NTA0MiwgOTMwMTQsIDEyMDgwMCwgNzQ5NDIsIDEyODkyLCAxMjUyMTIsIDY3MTQ5LCA3NDg5OSwgCisgICAgNzM5MzEsIDAsIDEyMDQ5NSwgMTI3MjYxLCAxMjIyNCwgOTgzMTI4LCAxMjkwNjEsIDUwNzQsIDUwNzMsIDEyMTE2NCwgCisgICAgODk4MywgMTE4OTgxLCA3NDQ5MywgNzA3MjMsIDUwNzIsIDc0NTQ3LCA2MTk4LCAxMTYxNCwgMTI1MjUxLCAxOTYsIAorICAgIDk4MzE1NCwgMTI4ODA1LCAxMjgyNjMsIDQ5MjksIDEyMDM0MiwgMTI5MTQ1LCAxMDA3OTQsIDEwMDc0NywgMTIxNDU1LCAKKyAgICA0Mjg0NywgOTI5NTMsIDAsIDY3NzU0LCA0OTM0LCAxMjgzMzgsIDQxMzIzLCA5NzU4LCAxMjgyMTEsIDkyMjg5LCA3MDE4MSwgCisgICAgNDI1ODQsIDAsIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgOTE3OTUyLCA2NDY2NywgMTI4MTksIAorICAgIDk4MzU5NywgNTA3MSwgMTI3OTE1LCAzNjQyLCA2NzMzNCwgNTA3MCwgMTAwNDIsIDExMzgxMywgMzk4NywgNTA2OCwgCisgICAgOTgzNDYwLCA4OTA5LCA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIDExODA2LCA0MzE2NywgNDUzMSwgCisgICAgMTI0NSwgOTEwNSwgNjY0NjMsIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAxMjEzNTksIDEyMTI2NywgCisgICAgMTI3OTcyLCA2NDcwOSwgODMyNjksIDEyODg1NCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIAorICAgIDEyNzIxOCwgOTgzMDU5LCA5NTI2LCA0OTIwLCAxMjg2MTcsIDk0OCwgMCwgNzA3MDYsIDQ5MzAsIDEyNzg1NywgOTIxNzUsIAorICAgIDExOTg4NiwgNDkzMywgMTEzNzc5LCAxMjEwNDksIDExODk4NSwgNDkyOCwgOTgzMTQ5LCA4MzUxNCwgNzQ3NzAsIDEyMDE5NCwgCisgICAgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgMTk5MDgsIDEyNjM3LCAxMjc0ODUsIDgyOTk5LCA4NzUzLCAxNTA5LCAxMjUyNjQsIAorICAgIDU0NjgsIDk1MTEsIDQzNDkzLCAxMjc0NzcsIDE2NzIsIDYyMDUsIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA3MDEwMywgCisgICAgOTI2OTQsIDc4NTU1LCAxMjc0NjgsIDczODYzLCAxMjY1NzcsIDY4MzM2LCA0MTYwNywgOTI2MjcsIDE2NzksIDEyMDExNiwgCisgICAgMTIwMTgwLCA3ODgzNywgMTI3NDYyLCA3MDA1LCA0MTYwOSwgOTU4MCwgNzA0MzEsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCAKKyAgICA1NzYxLCAzNDIsIDg1NTMsIDkyMjU2LCA4MTQzLCAxMjA5NzksIDExOTgzLCA3NDIwOCwgNjI0LCA3NDUwOCwgNDA1NywgCisgICAgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgMTIwMjUwLCA1MDc2LCAxMjg3MDIsIDgyOTkxLCAwLCA4Mjk1LCA2ODUsIAorICAgIDkwMjUsIDE1MjQsIDEyNjE4LCAwLCA1NTM5LCAxMDA5MDcsIDkyNTIzLCA3MTQzNSwgNzEzOCwgMTIwNTUyLCA0MzUwNCwgCisgICAgMTI1MTk3LCA2NjkxNCwgNjU3OTQsIDEyNTIwLCA4MDU4LCA5NzMyLCA5MjQ4MCwgNTA4MCwgNjQ3NzUsIDUwMzYsIDUwMzUsIAorICAgIDEwMDQyOSwgNDI2MDQsIDEwMDQyOCwgMCwgODA3NCwgMjc1LCAxMzI5MSwgMTkwNywgNzQzNzAsIDQ0MzIsIDEyMTMxMywgCisgICAgNTAzMywgMTIwMzQxLCAxMjA4MTgsIDQ4MzYsIDM4ODgsIDczNzkyLCAxMDcyOSwgNjQ1NDYsIDEyNzI2MiwgNDM3MDQsIAorICAgIDEyNzI2NCwgOTI5NTcsIDIyNzQsIDY4MDYxLCAxMDA0MjIsIDcwMzYwLCA4ODU4LCA2NDA5LCA3NjYzLCA3ODA2OSwgCisgICAgMTI4MTAwLCAxMTkwMDcsIDEwMDQyNCwgNjYzMjEsIDk0MDUyLCAxMjgxNCwgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgCisgICAgNjA5NCwgNzY0MSwgNDI0NDUsIDEyODc5MiwgOTI0ODcsIDQyNDA2LCAxNjc2LCA2NzM2MiwgNzQ4NjIsIDY3MzY1LCA1MDMwLCAKKyAgICA2NzM2NCwgMTE4ODEwLCAxOTUwMDgsIDczODY5LCA5NjIyLCAxMTM3NjMsIDY5OTQ0LCA2Nzg3LCA2NzM2MSwgMTk0OTMwLCAKKyAgICAwLCA2ODMxOSwgMTA1NDQsIDEyOTE5LCA3MTQ4NCwgNzIzOTcsIDk4MzY0MSwgMCwgNjk5MDYsIDEwMDg1NywgOTgzMDQxLCAKKyAgICA5NDcsIDY3Njk1LCA2NzM2NywgMTI4NTI4LCAxMDk2OSwgNjcyMjgsIDc2MTMsIDkyNTYyLCAxMTk5MzYsIDQ3OTUsIAorICAgIDEwMDQzMSwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIDEyMDI2OCwgMTIwMTg5LCA0MzU2NywgNzQwNTYsIDEyMDI2NiwgCisgICAgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgNDM5NSwgNDM1MzgsIDEwMDQzMywgCisgICAgMTAwODYwLCAxMTk5MjgsIDcyMTMsIDY4NDc2LCA3MjE0LCA3MjE1LCA1ODc5LCA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIAorICAgIDEyMDE3MywgNjU1NDAsIDY3MzU5LCA2MjUsIDgxODcsIDQyODYxLCAxMTEzLCA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIAorICAgIDgxNzksIDcwMTYzLCA2Nzg4NiwgOTMxNiwgMTA5ODAsIDI0ODksIDY1NjI0LCA4MTUwLCAxMzU5LCA2NzY1MiwgNzA0NjQsIAorICAgIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAxMjA4NCwgMTI3MzI0LCAxMjczMjEsIDc0NDEwLCAxMjczMTksIAorICAgIDEyNzMyMCwgMTI3MzE3LCAxMjEyODQsIDEyNzMxNSwgMTIyODMsIDE2MTYsIDM3OTUsIDY3NzMyLCA4Nzk1LCA2NjI0NSwgCisgICAgMTIwODM4LCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDEyODI4MCwgNjc3MjQsIDMyMzksIDY2ODkzLCAxMjg4MTgsIAorICAgIDE5NDYyNCwgODQzMSwgMCwgNDIxNjQsIDcxMjI5LCAxMTc3OCwgMTI2MjAsIDY4MjYsIDczNzczLCA3MDE2OSwgNTA0MCwgCisgICAgMTI3OTY5LCAwLCA2NzA5NCwgNzg0MjAsIDEyNzAzNiwgNTAzOSwgOTgzMjQxLCA3ODQxOCwgOTgzOTM2LCA1MDM4LCAKKyAgICA5MTc5OTAsIDk4Mzg2MiwgMTMxODQsIDQzOTYwLCA3MDY5NSwgNjQ2NDgsIDEyNjY0MSwgOTM1OSwgNzg0MTYsIDkxNzYyMywgCisgICAgMTI4NzcwLCA2NTE1NywgNjY2MiwgMTAwNjA0LCA3MDE4MiwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgCisgICAgMTI3ODIyLCA0MzA5LCA3MTI3LCAxMTg4NDEsIDEyOTA3NCwgMTk0NTY4LCAxMzAxLCAwLCA0MjU4OSwgNTY5LCAxMjg4MDQsIAorICAgIDczODEzLCA3MTEsIDQzODksIDcxMzMsIDEyMDY0MywgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTI4NDM2LCA0MTMzMSwgCisgICAgMTAwNiwgNzQyNDAsIDY3MjI0LCAxNTUwLCA4MjAxLCA3MDQ1MywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCAKKyAgICA2NTc4NCwgNDM5NTcsIDY1MjY3LCAzNzU4LCA5ODM4NDQsIDY1NzgxLCA2NDczNCwgNjcyMjIsIDI0NDAsIDQzOTU1LCAKKyAgICA3MDc4NywgODQ0OSwgOTgzNjg0LCA1MDA4LCA5ODM1NzIsIDIxMTgsIDEyMjg5NiwgMTIxMjEsIDgyNTUsIDU1MTIsIAorICAgIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAyMTMzLCAxMTE5LCAxMjEyNTAsIDIxMTQsIDIxMTYsIDI0NTUsIAorICAgIDExMzc5OCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgMTI3NDg2LCA4NzE0LCA5ODM4MjAsIDIxMTMsIDE5NTA0OSwgMjExNSwgCisgICAgMTI4MTc3LCAxMjc3NDgsIDQzNzEzLCA1MDUyLCA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCAKKyAgICA2NTc3MywgMTQyOSwgNDI2NDcsIDUwNTAsIDMwMiwgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgCisgICAgMTI3MjYsIDc0NTk0LCA5MTE3LCA5ODMxODEsIDEyMDAzLCA1NTEzLCA1MTA5LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIAorICAgIDAsIDc4NDQ3LCAyNDcwLCA3ODQzNywgMCwgMTkyNSwgNzEyNTEsIDkyMjM3LCA3NDgwNywgOTgzMDYyLCA1MDQ4LCA1MDQ3LCAKKyAgICAxOTQ4MzcsIDEyMTI3NSwgNzQyMDEsIDc4NzQzLCAxOTQ4MDIsIDc0NDk3LCA2NTkzMywgODA4OSwgNjkyOSwgNjM5LCAKKyAgICA4Mjk4MSwgNjgxNzksIDY0NDQyLCA3MDE4MCwgODI5ODQsIDQ1OTksIDQxNDAyLCA2Njc0LCA0MzM5NywgNDMyOTQsIDE0NzYsIAorICAgIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCA2OTUxLCA3NDMwNiwgMTI5MTk3LCAzNTMwLCA5NzUwLCAxMjgzMTcsIAorICAgIDEyMDk5MSwgNjY1NiwgNDI2MTgsIDcwMTc1LCA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDEwMDUxNiwgNTA0NSwgCisgICAgNDIwMjYsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgOTAwNiwgMTMxMjgsIDUwNDMsIDEyMTMzNSwgNzg1MywgNjc4MDgsIAorICAgIDc0MDA0LCA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIDEyODg4MywgMTE5MDcwLCA3MDE3NCwgNDE3NTAsIDM1ODYsIAorICAgIDY0NTA4LCA0MzE0OCwgMCwgMTI3OTcxLCAxMTk2MDYsIDY3OTgzLCAxMzI5NiwgNTE3LCA5ODM4NzgsIDEyNTAxNywgCisgICAgMTAwNTY1LCA0MTUyOCwgMTIzLCA2NTQ1NCwgMTI3MjE1LCAxMjEzMjYsIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIAorICAgIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDEwMDgwMywgMTk0NTkxLCA5ODMzNzksIDM5MjUsIDQyNTEsIAorICAgIDgwNjksIDEwNTE3LCA3MTExMiwgNDg5LCA3MTExMCwgNDI1MCwgOTIyNjYsIDEyMDQ1MiwgNDMxNTEsIDk4MzE3OCwgCisgICAgOTI3MzgsIDY2MjAwLCA5ODM2MjYsIDEyNzkwNSwgMTI1MDI2LCA3NDI5OCwgMTI4ODc5LCAxMjY2MjUsIDg3MTEsIDYxODMsIAorICAgIDgzNDQ4LCA5ODM5NTIsIDcyNDAyLCAxMjA0NDgsIDc2MjMsIDEwMDgwOSwgNjYzNzYsIDkyMzUsIDEyNzYwLCA3NDE3NiwgCisgICAgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIDk4Mzc5OSwgMTI2NTk3LCAKKyAgICAxMjA0MzQsIDExOTA1MiwgNzcyNiwgMTk1MDk1LCAxOTkyMiwgMjY3LCAzMzkzLCA0MjE5OCwgMTM3MSwgMTIyOTE5LCAKKyAgICA2OTIzMywgMjQ1OCwgMTAwNDM1LCA2MjAxLCAwLCA0MTA3NCwgNDI2NiwgMTA2NTIsIDQxNjEyLCA0MTA3NywgMzQwMiwgCisgICAgOTA1MCwgMzM5OCwgMTI4NDI0LCAxMjcwODMsIDE5NDg5NCwgMzM5MSwgNDEwNzUsIDI0NzYsIDEyOTEyOSwgNzQ5OTAsIDAsIAorICAgIDEwNjI1LCA3MDcxNSwgMTI3NjcsIDEzMDE3LCA3ODc0MSwgNjQyNjEsIDY0OTM0LCA3MDE1MiwgMTMwMTQsIDEzMDEzLCAKKyAgICAxMjExOTgsIDY2NzMsIDAsIDAsIDEyMTMyNCwgMTI0MzgsIDAsIDk4MzM0NCwgODMxMDYsIDcxMTI4LCAxMjAwNjIsIDkwNTMsIAorICAgIDEzMDE1LCA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgNzQ5NDksIDY2NjAsIDc4NzU4LCA5MTc3NjAsIDc0ODYxLCAKKyAgICA0MjIxMiwgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDY2ODA5LCAxMjE0MzcsIDEyOTA4NiwgNDM4NzYsIAorICAgIDkyOTQxLCA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDExOTkyNiwgNDM5NDksIDEyMDA0OCwgNzgwOTksIDEyNzA4NSwgCisgICAgMTI3OTY0LCAxMjgzMjAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDk4MzYwNiwgNzg0NTgsIDY2NzI4LCAxODE2LCAKKyAgICA0Mzk1MiwgNDI1MzMsIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCA0Mzk1MCwgNzgxMDUsIDQ5MDEsIDE4MjEsIDQzOTUxLCAKKyAgICA1NzgsIDM2NTMsIDEwMDQ3NiwgNzkxLCA5MTYyLCA2OTc3LCA3NDE5NiwgNzg4ODksIDcwMTYwLCAwLCA3MzczMSwgODM1NCwgCisgICAgNDM1OTAsIDExOTMwMywgOTgzNDUxLCA3NTU3LCAxMTkxMDgsIDY3Mzc4LCA4MjM0LCA3MjQxLCAxMjg2MDgsIDExMzczNSwgCisgICAgMTE5MTY3LCAxOTQ5OTYsIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA2NjgwNywgNjczLCAxOTQ4NjcsIAorICAgIDY0Mzk3LCAxMTkyMzUsIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxMTkzMjIsIDI0NDgsIDc4MDg1LCAxMDI2NywgCisgICAgODQyNCwgMjQ1MiwgNzgwODMsIDY3MjE3LCA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgMTI1MTE3LCA3MTMwMiwgNDQwOCwgCisgICAgNDEyMiwgNjc3MiwgMTEwMzksIDg3MjMsIDY1ODk2LCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgNzE5MDQsIDI0MzgsIAorICAgIDY0ODU1LCAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMTI5MTM2LCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAKKyAgICAxMTUyMSwgNzcyMywgMTI4NjM5LCAxMjUyNDIsIDAsIDQxOTUyLCA5MzAyMywgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgCisgICAgNTIwMiwgMjQwNCwgNTI2NywgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgMTI5NjMsIDcwMzIwLCA2MTg5LCA0MTI1LCAKKyAgICAxMzE0LCAxMjEzMywgMTIwMzQwLCAxMTg4NzMsIDEyNzEsIDk4MzU1NiwgMTI5MTEyLCA2NjAyNCwgNDE0ODIsIDI0MzQsIAorICAgIDkyMDQsIDkxNzU1OCwgMzg3OSwgMTk0ODY4LCAxMjk3OCwgNDE2NiwgNDU3NCwgMTI4MTExLCA3NTY3LCA3NDU5LCA3ODEyOCwgCisgICAgNDEzOTAsIDUzODQsIDQxODgyLCA2NzY0NywgNzAxNTQsIDU3NTksIDE5NDg2OSwgMTIxNDEzLCA0MTM4OCwgNjQ0NDYsIAorICAgIDQxMzkyLCA2NDI4OCwgNDEzODcsIDY3MjAxLCA4NzA2LCA1NTUyLCA2ODgzNywgNzAwLCAwLCA1NTUzLCAwLCA3MDg4LCAKKyAgICA1MzU2LCA3NDk5LCA2ODAwNywgNjY1OTYsIDc0MDY2LCA2NzI1MSwgMTAyNjMsIDU1NTQsIDAsIDEyMzQ0LCAxMDMxMSwgCisgICAgNzgxMTMsIDY2NjUsIDExMTE1LCAxMjEwMzUsIDc2MTgsIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCAKKyAgICA3ODA4OCwgNjY4MTAsIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIDY2NjgsIDY3Mjg4LCA2Nzk5NSwgMTk0OTg2LCAKKyAgICA2NTYsIDEyODU3NCwgNjUwMzcsIDQ1NzcsIDY0NjI0LCAxMjkzNTQsIDEyMDI2NCwgNzE5MTIsIDE5NDkwOCwgNDI2OSwgCisgICAgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDE5NTA4NSwgOTIyNzMsIDY2NTgwLCA3Nzk5MiwgNjY2ODMsIAorICAgIDEwNTU0LCAzNDE3LCAxMDEwNTcsIDY4MzIsIDUwOTgsIDkxNzc2OCwgMTk0NjY4LCA3MDQwMywgNTA5NywgNDkzNSwgOTg0OCwgCisgICAgMTAzODEsIDAsIDY3Mjk2LCA3Mjc5OCwgMzY1MSwgMCwgNjcyOTQsIDcwODQ4LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIAorICAgIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTIxMzQwLCA1MDk5LCA3ODM3MywgCisgICAgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMTE5OTUzLCA3ODM4LCA5ODM2NjksIDEyODY1NSwgMTk1MDQwLCAxMTkxNDIsIAorICAgIDkwMzEsIDcwODI5LCA3ODQyNywgOTA3OCwgODU0NSwgNjYzNTYsIDEyODc5OSwgMTk0OTIzLCA5MTU0LCA5MTE4LCAKKyAgICAxMjY1NDMsIDExOTU4NiwgMjY3NiwgMjI3NywgMTI4NDIyLCA2ODIzNywgNjE5MCwgODU5OSwgMTI1MTE4LCA2OTkxOCwgCisgICAgMTA3OTUsIDk4NTcsIDcwMTQsIDk4NTYsIDE5NTAzMywgNzE5MDMsIDEyMTI5LCAxMjY2NTEsIDg0ODEsIDgzMDY4LCA2MjAyLCAKKyAgICA2NzcxMSwgMTA5MjAsIDExMzcyNiwgNTIwMywgMTk1MDM5LCAxMjkzMjgsIDUxMDgsIDUxMDcsIDY1ODE4LCA2NjAxOSwgCisgICAgOTc2MiwgMTEyMDUsIDU1NDEsIDc0NzcyLCAwLCAxMjYxMywgNTI4NCwgNjY1NywgMjA3LCAxMjEyMDYsIDQyNzUsIDc0ODE5LCAKKyAgICA4NTQsIDY4MTQ3LCA3NDM4MSwgNjY4MTYsIDc4Nzg2LCA1MTAzLCAxMjc4NjEsIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgCisgICAgNjk4MTEsIDEwMDkxMSwgNzEzMzksIDEwMTU3LCAxOTQ2MTIsIDQzMDM0LCAxMTQzOCwgNjQ2NzQsIDAsIDcwMTU4LCAKKyAgICA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIDUxMDUsIDY1MjY2LCA2OTcyMCwgCisgICAgNjQ3NiwgNTEwNCwgMTk0NzM0LCAzMDQsIDMxNzYsIDc4ODcxLCA3MDE0OSwgOTMyLCAxMTM2ODMsIDY1NjcsIDIzOCwgCisgICAgNjk2NTYsIDc4NDMyLCAxOTQ1OTUsIDE5OTA1LCA0Mzg1MCwgMTk1MDE1LCA3ODg3MCwgNDEwNDQsIDY3NjQwLCA2NzMwMiwgCisgICAgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgOTMwMzksIDg4MDMsIDMwOSwgCisgICAgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgNzAxNzEsIDEyNTY4LCAxMjc5MTcsIDEyNTUzLCAxMDgxNCwgCisgICAgNDMyNzUsIDY5NTAsIDk3MTIsIDY4NjgwLCA0Mzk3MCwgMTI2NTM1LCA2NTE2NSwgOTI3MjUsIDk4MzgyMiwgNjY0NjYsIAorICAgIDEyNDk4NiwgMTI3Nzg0LCAxMjg1MzQsIDY2NzI1LCA2MTkxLCAxMTM1MSwgMTA0MzcsIDExMzE2LCA2NzYzNCwgNDM3NjMsIAogICAgIDAsIDQxNzU0LCA2NzYzNSwgOTM3MCwgMjcyMCwgMTk0NjAwLCA2ODQ2MiwgODIzMiwgMTE4ODE3LCAxMjEwNTYsIDMyMjIsIAotICAgIDEyMTQzOSwgMTIxMTM3LCAwLCA2NjY2MywgOTgzMDQ3LCA5MzA2NywgMTA4MzQsIDk4MzEyNywgMCwgNjU3MzIsIDk0MDk1LCAKLSAgICA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTIwNzM0LCA2NzMwOSwgNzc4MSwgNDEzODMsIDY0NTY4LCA2NzMxMSwgMTIwNzM4LCAKKyAgICAxMjE0MzksIDEyMTEzNywgMCwgNjY2NjMsIDEyNzkyOCwgOTMwNjcsIDEwODM0LCAxMjc1NDcsIDAsIDY1NzMyLCA5NDA5NSwgCisgICAgOTE3NTQ3LCA5MjY4MiwgNjc2NzksIDEwMTAyMSwgNjczMDksIDc3ODEsIDQxMzgzLCA2NDU2OCwgNjczMTEsIDEyMDczOCwgCiAgICAgMTIwNzcsIDc0NDMzLCA2NDU4NiwgOTE3NjIwLCA0MjM5NiwgNTUyNTUsIDM0NzUsIDY3MjYwLCAyNDc5LCA2NzMwNiwgCiAgICAgMzYzMiwgMTIwNzI4LCAxMDY5OCwgODM3NiwgMzY0OCwgNjcyNjMsIDc0ODQ0LCA2NzYzOSwgMzYzNiwgNjc4OTQsIDM2NTAsIAotICAgIDg4MzcsIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgNjg4MjYsIDM2NDAsIDEyNzE5MCwgCi0gICAgNDIzMjEsIDcyODQsIDkyODgwLCAxMTg5ODcsIDE5NDk1MCwgMTk0OTQ5LCA3NDExNSwgMTk0OTUxLCAxMjY2NDksIAotICAgIDE5NDk1MywgNDIwODAsIDI1MjksIDAsIDk4Mzc4NCwgNjYwMTAsIDQyMDgzLCA3NDk1MiwgNjgzOTgsIDE5NDk1NywgCi0gICAgNjc2MTksIDY2MzY3LCAxOTQ5NTgsIDk2MzQsIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgNDI5NSwgNjUyNjQsIDY4MDA2LCAKLSAgICAwLCA2NzgzNSwgMCwgNzg1LCA4MjM2LCAxMjg2NDcsIDkwMjcsIDY4MTYwLCA2NzYyMywgNjQzODMsIDEyMDI2NSwgOTI1LCAKLSAgICAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMTIwOTg4LCA0MTk4NCwgOTIxNywgMTI4MzcyLCA5MjUxMCwgOTIyMTgsIAotICAgIDkxODYsIDIwNjcsIDQwMTYsIDk4MzgwMywgMCwgMzgxLCAxMjkzNiwgMCwgNDIwNzcsIDkyOTg1LCA2OTg4MCwgNTE4NCwgCi0gICAgNDIwNzgsIDE5NDYwNywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIDY3NjMzLCAxMjEzMzQsIDEyNzEwNCwgCi0gICAgODEyLCAzNjE1LCA3MjQwMSwgNTE3OCwgNDQwMDAsIDkyNDM2LCA3ODgwNywgNTE4OCwgNzQyODcsIDY3NjI5LCAzNjA1LCAKLSAgICAxMDY5MiwgMTE2NiwgNjQ0MjksIDQyNjM5LCA5MjQsIDEyNzc5MywgNjc2MzEsIDQyNjE2LCAxMjA2NzAsIDI0NDIsIAotICAgIDEwNzAzLCA2NzMxNywgNjc2MzIsIDY3MzE2LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCA2NjcwOCwgNzM5MzMsIDY3NjI2LCAKLSAgICA0MjQwMSwgMTk0ODY1LCA2OTg3MiwgMTI3MzczLCA0MjI4OCwgMTI3NTEsIDc0OTA2LCA4NTQyLCAxMzE0NSwgMTk0OTYzLCAKLSAgICAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIDM4ODMsIDY0Mzg4LCA0MjQ3OSwgNzEyMjAsIDQxMTE3LCAwLCA5MjU4MCwgCi0gICAgMTI4NjI0LCA3NDkzOSwgNjc2MjQsIDEyNzk3NiwgMTI5MCwgMCwgNjU1ODUsIDI3MTUsIDgwNiwgNjUyMDgsIDQxODg0LCAKLSAgICA5MTc4ODMsIDEzMTgsIDY0NzMxLCA3ODAwNCwgMCwgMCwgNjYzMjUsIDM0NjUsIDI0MDUsIDkyNDAsIDk4Mzg1OCwgMTI3NTYsIAotICAgIDY1MjU5LCAwLCA5ODM3ODEsIDEyNzUyLCA1ODMzLCAxNDMyLCAxMTI0NiwgNDE4ODMsIDczOTEyLCA5Nzk5LCA5MTc4OTMsIAotICAgIDQxODg2LCAyNDgwLCAxMjc5MDYsIDIwNjIsIDY3MzI2LCA2NDk0LCA1NTM3LCA3ODY1NiwgMCwgMTk0NTg3LCAxMjQ5NjksIAotICAgIDEyMTEsIDAsIDEyMDk3MSwgNjcyNjksIDExODgzMiwgMTIzMTgsIDEyOTAyNCwgMTEzNzk2LCA2ODAwNSwgMTA2MjIsIAotICAgIDk4Mzc3OSwgMCwgNjg4MjEsIDY1NjYsIDcxMTk1LCAwLCA3Mzc4MCwgMTE5MTk2LCA2NDg2NCwgMCwgNzg2NjAsIDAsIAotICAgIDgyODQsIDEzMDgxLCAxMTkyMDYsIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA4MzAwMywgNDI2NSwgNjY0MiwgMzk3NywgCi0gICAgNzQxODYsIDQxNzc4LCA4MzYsIDkyOTQ3LCAyNDg4LCAxMjUwOTYsIDQ1ODIsIDAsIDcxNDI2LCA0MTc3NywgMTI5MjYsIAotICAgIDk4MzM3OSwgNzUyOCwgMTA1NTAsIDExMzc2MSwgOTI3MDYsIDk4Mzk1NSwgMTA5NjEsIDkzOTc3LCAxMzc0LCA2NDg3OCwgCi0gICAgMTE5MDE0LCA2NzcyMCwgNDIzODksIDQxMzc0LCAyMjg2LCA5MTc2MDQsIDc4NDkyLCA0MTM3NywgMTI3OTA5LCAxOTUwNDcsIAotICAgIDQwMCwgMTI1OTcsIDEyMDU4NiwgMTI4MDk3LCAxMjkwNzEsIDY2NjEsIDkxNzk2MSwgNjQ4MjcsIDAsIDczODE3LCAzOTAsIAotICAgIDAsIDcxMzAxLCAxMjcyOTIsIDM0NzMsIDc3MTgsIDExMzc1NSwgNjg4MTQsIDAsIDU1Mjg1LCA3Mzc4NCwgNjYzOTQsIDAsIAotICAgIDExOTY5LCAxMjA0NjEsIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTI1NTEsIDgwODAsIDcwMDYsIDAsIDExODkwMiwgCi0gICAgNjc1NywgNjQzNTEsIDE1NDQsIDY3MTU2LCA2NzY2LCA2NDY3NywgMTIwNzE2LCA2NzA4OCwgNjE0NiwgNzQwMzEsIDc3MSwgCi0gICAgMTIwNjgyLCAwLCAxMjgxMiwgMTMxNjgsIDQyMjcyLCAxMjIwMCwgNjY0MjMsIDc5MDQsIDAsIDk1MywgMTI5MTcsIAotICAgIDExOTU2MCwgMTIzMDAsIDY3MDg5LCAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc3MywgOTUyNCwgNzQ5MCwgMTEzODksIAotICAgIDc0ODksIDMzNzksIDAsIDc0ODcsIDE5NDYyNCwgNDcxLCA3NDg0LCA3NDgyLCA2NzUzLCA3NDgwLCA1NzY0LCA3NDc4LCAKLSAgICA3NDc3LCA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCA3NDcyLCAyNDc0LCA3NDcwLCA3NDY4LCAxMDIzMiwgMTA2MTUsIAotICAgIDEwMjEzLCAxMjcyODgsIDkyMzU3LCAxMDA0OSwgMTE4MzQsIDM1NDQsIDk4Mzc4NSwgNjAxNywgNjUzMTEsIDc0OTM1LCAKLSAgICAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDE5NDg4MiwgMTIwNTQ0LCAwLCAxMjc5NTAsIAotICAgIDkyNjYwLCA5ODMzNTYsIDc3ODg5LCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIDkyMzQxLCAxMjExMzMsIDIxMzksIDQyNTYsIAotICAgIDEyMDc3NiwgNzQzODAsIDQzODM2LCA0MjY3NSwgNDI2NTgsIDEyODQ1LCA2NjY2LCA3MDUwOCwgNjUxMzgsIDExOTM1NSwgCi0gICAgNjc4NjIsIDAsIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIDc0ODY1LCAxMjUxMzQsIDEyMDMyMSwgMTI3MjgzLCAKLSAgICA5ODMzOTYsIDcxODYsIDAsIDEyMDU1NSwgMCwgNDQ1LCAxMjA1NjYsIDY2ODQ5LCAxMjUxNDEsIDAsIDgzMzAsIDAsIDAsIAotICAgIDQyNzk3LCAxMTM3MzYsIDEyMDIxNSwgODMwMDEsIDM5MDIsIDAsIDE3NzAsIDQzOTU5LCAxMjUwNjcsIDE1NjAsIDQzOTU4LCAKLSAgICA5MjE2NywgNDU4NCwgNzM4NDMsIDAsIDExNzEyLCAxMDg2NiwgNjcwOTIsIDExMTgsIDcxMzM0LCA3NDg4OCwgMCwgMTA4MSwgCi0gICAgNzQzNiwgMTExNDcsIDcyNTIsIDcwMDkzLCA1OTk2LCA2OTkyMSwgNDkwMywgNjgxNDIsIDQxMzg2LCA1MTYyLCAxMTkxODksIAotICAgIDEzMzAsIDEyODYxMywgNzEzOSwgMCwgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgCi0gICAgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDAsIDk4Mzc0MSwgMTI3MTUsIDY4MDAyLCAxOTQ1NzYsIDgzMjU2LCAKLSAgICAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAxMTkxNTcsIDY4MDAwLCA3ODQ5MCwgMCwgMTI2OTg0LCA2ODAwMSwgOTMzNCwgCi0gICAgOTI3MDUsIDcwODAwLCA3MDEwMSwgNzk3NSwgMCwgNzc5NTcsIDAsIDQzNDk0LCA0ODg0LCA2NjU5NywgNjk3MzIsIDAsIAotICAgIDEyMTAxMCwgNjMxMywgNjU1MTMsIDY5ODU3LCAwLCAwLCAwLCAyMzQ1LCA0MzY5NywgNDYzLCAwLCAxMjc4OTAsIDY4MTc4LCAKLSAgICAzMTE3LCA1NDYwLCAxMjE0MjMsIDEyODcxNywgOTgzMzg5LCAwLCA0MjI3OSwgMTI3MTQyLCAxMjY1MDMsIDc4NDE1LCAKLSAgICA5ODMyMjgsIDY4NTI0LCA5ODMzODYsIDEzMjQ4LCAxMjUwMjcsIDk4Mzg0MywgNDM5NTYsIDEyODQxNSwgOTgzMTUzLCAKLSAgICAxMjEwMDksIDU2NjMsIDcxMTIwLCAxMjg0NzIsIDEyODk1OCwgMCwgMjQ4MiwgMTQ3MSwgMTk0NTgzLCAxMTM3NDcsIAotICAgIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCA3MTQyNywgMTIzNzQsIDEyMTM1NywgMTI3MDY3LCAwLCAxMTg4MjgsIAotICAgIDI0NjAsIDcxODgyLCAxMTk0NCwgMTIzNzYsIDkyMzQyLCA2NDY3OSwgOTI4OTMsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIAotICAgIDU4NzAsIDExMTIyLCAyMDI0LCAxMjcxODAsIDk4MzM5MSwgNzE4NzksIDUzOSwgMCwgMTIwMzAyLCA3MDEyMCwgMzg1MywgCi0gICAgNjUxODAsIDEyNzkyMywgMTIwNzk2LCAxMjAyNDUsIDkyMzI0LCAwLCA4NjU5LCAwLCAxMjQ3NCwgNjcyNDEsIDk1MDMsIAotICAgIDE5NDk2OSwgMjQ3OCwgMTIwMjQ4LCA0MTYyLCAwLCA0MjYwLCAxMjk1MywgNjk2MzMsIDgyOTY2LCAxMjQ3MCwgOTI2NDAsIAotICAgIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIDUwMDAsIDExMzY4NywgOTgzNTc5LCAxMjgxOTAsIAotICAgIDY5NjcyLCA4MjEzLCA0MzgyNCwgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIDE5NDk2NywgNzg4ODUsIDExOTI0MywgCi0gICAgNjgyMzUsIDEyMDU4MiwgNzg1NDcsIDExMzcwOSwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMTE5MDQ0LCAwLCA3Mzc5MSwgMCwgCi0gICAgODMwMzAsIDAsIDEyMTQ4MiwgMTE5MTIzLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIDgyNzUsIDM4OTMsIAotICAgIDc0OTAzLCAxMjA5MjcsIDEyMjEwLCA3MjIxLCA0MjE0NywgNzQ4NjgsIDc0NTUwLCA3MTIxNSwgNjQ3NDcsIDExODg0MSwgCi0gICAgMTI4MDg2LCAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCAKLSAgICA0MTk3MywgMzU5MSwgNDE5NjksIDgzMDA4LCAyNDUzLCAxMTg4OTksIDkyNjY2LCA2NDcwNSwgNzEwNjgsIDAsIDEwMzQ5LCAKLSAgICAxMDQxMywgNDM1OTEsIDQxOTYyLCAzMjAyLCA3NDM1MywgMTI5MTc1LCA4MzE2LCAxMjkxNzQsIDAsIDk0MDYwLCA2ODcsIAotICAgIDkzMDU1LCAxMjkwNzQsIDAsIDE4NDAsIDEyNzgwOSwgNjg2NzEsIDExMTIxLCA0ODgzLCAyODUsIDQ3MjMsIDExMTc1LCAKLSAgICA5MjY5MiwgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDAsIDQyMzIzLCA3NDY0MCwgCi0gICAgOTc0MywgMTIwMjMyLCAxMzEzNCwgOTMwNjUsIDEyODk1NiwgNjU5MzEsIDkyNTc5LCAxMjgzMjksIDQyNjM0LCA5ODMzNDUsIAotICAgIDQzNDM3LCAzMDgxLCAxMTQ2MywgMTIwMTU0LCAwLCAxOTUwMTMsIDEwNDQ1LCAxMjEzMjIsIDkyOTY5LCA2NjcxNywgMjYxNCwgCi0gICAgOTEyNSwgNzExMjUsIDE3MjksIDEyOTAzNCwgNzI0MjAsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAxMjQ5MjksIAotICAgIDY1MTk0LCA2NjIwMSwgMCwgNjY1NzgsIDUwMDEsIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgCi0gICAgNjM4NzksIDQ5NDMsIDUxNTAsIDczODg5LCA3Mzc2NCwgNDAzOSwgNjQzLCAzMDg2LCA5MjUzMywgNDI0NDgsIDQyMjk5LCAKLSAgICA1OCwgMTIwMDg0LCA5MTc5NTIsIDEyMDA4MywgNjM4NzMsIDg0OTEsIDAsIDAsIDk4MzYyMywgNDUzMCwgNDI0MDksIDcxMjYsIAotICAgIDE5NDU3NSwgMjcyMSwgMTIwMDczLCAxMTkwOTYsIDE5OTI5LCAxMTg5NDEsIDEyODc5NywgOTI5NzUsIDQyNDIsIDQyNjQsIAotICAgIDEyMDA3NywgMTIwNTMwLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCA5ODMxOTksIAotICAgIDk3NTQsIDExOTEwMiwgNDQzNywgNzM5NDgsIDEyNzA3NCwgOTgzMjQwLCA1NTI4MCwgNDIxNzQsIDEyNzk1NCwgNDI0MzAsIAotICAgIDAsIDk4MzQ1MiwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCA2ODMxNCwgNjY2NjcsIDExOTM1MSwgCi0gICAgMTk0OTgyLCAxMjExNzIsIDQyMjAwLCA0MjU2NiwgNzAwMDAsIDEyODkyOCwgNTA4OCwgNjk0OCwgMCwgODUyNCwgMTI1MDQwLCAKLSAgICAwLCAxMjM4NSwgMCwgNzQ5MjYsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIDY1MDM5LCA2NTAzOCwgMTIzOTIsIAotICAgIDY1MDM2LCA4MDY0LCAxMjc1NTgsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgNzc5OTksIDExNjYzLCAxNjY2LCAKLSAgICA0MjA5MSwgMTE5NjU3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMTI3ODk3LCA2Mzg5NiwgMTIwNjEsIAotICAgIDQyMDk2LCA0MzYyMSwgMzM2MiwgMTIzNzcsIDExOTkzNCwgOTgzODM0LCA2ODQ0OSwgNzQ2MSwgNzM5MDEsIDEyNDQsIDMzMSwgCi0gICAgNzM3ODYsIDEyNjgzLCAxMDY2MiwgMCwgODExMiwgMCwgNjU4NTIsIDc0NjI5LCAxMjM3OSwgMTI3MTA3LCA5MjkzMCwgCi0gICAgNDE5NjQsIDQyMjA4LCA2Mzg0MywgMjA4NCwgNDE5NjUsIDcwMDg5LCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIDY2NDEzLCAKLSAgICA0MTIyMCwgMTMwMzIsIDkyOTgwLCA1ODQsIDEyOTMzLCA0MzE3NywgMTIzNzMsIDY5ODU1LCAxMzAwMCwgMTM1MSwgMjkzNSwgCi0gICAgODY5OCwgMTI2NjUsIDAsIDE5MzAsIDAsIDc4MjI5LCAxMjQyNywgNjY1MTQsIDY5ODU5LCAxMzAzMSwgMCwgNjM5MDEsIDAsIAotICAgIDM2NTcsIDExOTYxMSwgNjUyMDIsIDYwMDAsIDExMzc4NiwgMTI0MjYsIDEyMTA1OCwgMTE5OTM1LCA0MTc0MCwgMTI0MjgsIAotICAgIDQxMjgzLCA0MTkxNiwgMTE5MjEwLCAxMjgzMTgsIDAsIDEyNDI5LCA2NzI3LCA5ODM5NDgsIDc1NjIsIDEyNTEyOSwgNTE3MCwgCi0gICAgOTgzOTE1LCA0MTc1NSwgNjc2LCAwLCA2NjcwNCwgNjY2NjQsIDk5NzgsIDY2NDkxLCAzNTM2LCAwLCA5NzUyLCA5MjM5NywgCi0gICAgNjE2MiwgNzgzMjAsIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgMzA3MiwgCi0gICAgOTE3ODI4LCA0MjIwNywgNzQ1NDksIDExNzk2LCA0MDk3MCwgNDE4MzAsIDEyNTAyMSwgNzAxNTEsIDgzMDgsIDkxNzc5NywgCi0gICAgNzA4MDcsIDExOTI1OCwgNjc4NjQsIDExMzY5NiwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjcyMzEsIDM0MSwgMjcyNywgCi0gICAgNDEyOSwgMzUzOSwgMCwgNjM4NjEsIDAsIDc5MTMsIDAsIDYzODU5LCA0MTMxLCA2Mzg2OCwgMTI5MDg1LCA2Mzg2NywgCisgICAgODgzNywgNjUyMjksIDE4NDMsIDQyMjgzLCA0MzI1MCwgNDE1NjIsIDkxMDAsIDc0NTQ4LCA2ODgyNiwgMzY0MCwgOTI0MTEsIAorICAgIDQyMzIxLCA3Mjg0LCA5Mjg4MCwgMTE4OTg3LCAxOTQ3ODMsIDEwMDg5NywgNzQxMTUsIDE5NDk1MSwgMTI1MTk5LCAKKyAgICAxOTQ5NTMsIDQyMDgwLCAyNTI5LCA5ODM5MDksIDk4MzQ3MSwgNjYwMTAsIDQyMDgzLCA3NDk1MiwgNjgzOTgsIDE5NDk1NywgCisgICAgNjc2MTksIDY2MzY3LCAxMDA4OTksIDk2MzQsIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgNDI5NSwgNjUyNjQsIDY4MDA2LCAKKyAgICAwLCA2NzgzNSwgMTAwOTAwLCA3ODUsIDgyMzYsIDEyODY0NywgOTAyNywgNjgxNjAsIDY3NjIzLCA2NDM4MywgMTIwMjY1LCAKKyAgICA5MjUsIDEyNzE1NiwgMCwgNDE5ODUsIDQxMDcxLCA5NTg2LCAxMjA5ODgsIDQxOTg0LCA5MjE3LCAxMjgzNzIsIDkyNTEwLCAKKyAgICA5MjIxOCwgOTE4NiwgMjA2NywgNDAxNiwgMTI4ODQ4LCAxMjkxODIsIDM4MSwgMTI5MzYsIDk4MzczNiwgNDIwNzcsIAorICAgIDkyOTg1LCA2OTg4MCwgNTE4NCwgNDIwNzgsIDE5NDYwNywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIAorICAgIDY3NjMzLCAxMjEzMzQsIDEyNzEwNCwgODEyLCAzNjE1LCA3MjQwMSwgNTE3OCwgNDQwMDAsIDkyNDM2LCA3ODgwNywgNTE4OCwgCisgICAgNzQyODcsIDY3NjI5LCAzNjA1LCAxMDY5MiwgMTE2NiwgNjQ0MjksIDQyNjM5LCA5MjQsIDEyNzc5MywgNjc2MzEsIDQyNjE2LCAKKyAgICAxMjA2NzAsIDI0NDIsIDEwNzAzLCA2NzMxNywgNjc2MzIsIDY3MzE2LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCA2NjcwOCwgCisgICAgNzM5MzMsIDY3NjI2LCA0MjQwMSwgMTk0ODY1LCA2OTg3MiwgMTI3MzczLCA0MjI4OCwgMTI3NTEsIDc0OTA2LCA4NTQyLCAKKyAgICAxMzE0NSwgMTk0OTYzLCAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIDM4ODMsIDY0Mzg4LCA0MjQ3OSwgNzEyMjAsIAorICAgIDQxMTE3LCAxMDA4OTMsIDkyNTgwLCAxMjg2MjQsIDc0OTM5LCA2NzYyNCwgMTI3OTc2LCAxMjkwLCAxMDA1OTEsIDY1NTg1LCAKKyAgICAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCA2NDczMSwgNzgwMDQsIDAsIDAsIDY2MzI1LCAzNDY1LCAKKyAgICAyNDA1LCA5MjQwLCA5ODM4NTgsIDEyNzU2LCA2NTI1OSwgMCwgOTgzNzgxLCAxMjc1MiwgNTgzMywgMTQzMiwgMTEyNDYsIAorICAgIDQxODgzLCA3MzkxMiwgOTc5OSwgOTE3ODkzLCA0MTg4NiwgMjQ4MCwgMTI3OTA2LCAyMDYyLCA2NzMyNiwgNjQ5NCwgNTUzNywgCisgICAgNzg2NTYsIDk4MzI3NSwgNzA2NjEsIDEyNDk2OSwgMTIxMSwgMCwgMTIwOTcxLCA2NzI2OSwgMTE4ODMyLCAxMjMxOCwgCisgICAgMTI5MDI0LCAxMTM3OTYsIDY4MDA1LCAxMDYyMiwgOTgzNzc5LCAwLCA2ODgyMSwgNjU2NiwgNzExOTUsIDAsIDczNzgwLCAKKyAgICAxMTkxOTYsIDY0ODY0LCAwLCA3ODY2MCwgMTI5MDUyLCA4Mjg0LCAxMzA4MSwgMTE5MjA2LCAzNTg5LCA0MjA1MSwgNDAzNSwgCisgICAgNjQ5MiwgODMwMDMsIDQyNjUsIDY2NDIsIDM5NzcsIDcyNzQzLCA0MTc3OCwgODM2LCA5Mjk0NywgMjQ4OCwgMTI1MDk2LCAKKyAgICA0NTgyLCAwLCA3MTQyNiwgNDE3NzcsIDEyOTI2LCA3MjcwOCwgNzUyOCwgMTA1NTAsIDExMzc2MSwgOTI3MDYsIDk4Mzk1NSwgCisgICAgMTA5NjEsIDkzOTc3LCAxMzc0LCA2NDg3OCwgMTE5MDE0LCA2NzcyMCwgNDIzODksIDIyNzMsIDIyODYsIDkxNzYwNCwgCisgICAgNzg0OTIsIDQxMzc3LCAxMjc5MDksIDE5NTA0NywgNDAwLCAxMjU5NywgMTAwNDgyLCAxMjgwOTcsIDEyOTA3MSwgNjY2MSwgCisgICAgOTE3OTYxLCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgMTE5NjE3LCA3MTMwMSwgMTI3MjkyLCAzNDczLCA3NzE4LCAxMTM3NTUsIAorICAgIDY2NzQyLCAxMjUxMzksIDU1Mjg1LCA3Mzc4NCwgNjYzOTQsIDAsIDExOTY5LCAxMjA0NjEsIDEyNzg0MSwgNjM2NSwgMTg4NywgCisgICAgNjc2MywgOTI1NTEsIDgwODAsIDcwMDYsIDAsIDkyNzYzLCA2NzU3LCA2NDM1MSwgMTU0NCwgNjcxNTYsIDY3NjYsIDY0Njc3LCAKKyAgICAxMjA3MTYsIDY3MDg4LCA2MTQ2LCA3NDAzMSwgNzcxLCAxMjA2ODIsIDE5NDY1MCwgMTI4MTIsIDEzMTY4LCA0MjI3MiwgCisgICAgMTIyMDAsIDY2NDIzLCA3OTA0LCAxMjg3MTUsIDk1MywgMTI5MTcsIDcyNzA0LCAxMjMwMCwgNjcwODksIDExNDkxLCA5NzI0LCAKKyAgICAxMDM0MSwgOTgzNzczLCA5NTI0LCA3NDkwLCAxMTM4OSwgNzQ4OSwgMzM3OSwgMTI4Nzc1LCA3NDg3LCA3MjcxNiwgNDcxLCAKKyAgICA3NDg0LCA3NDgyLCA2NzUzLCA3NDgwLCA1NzY0LCA3NDc4LCA3NDc3LCA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCA3NDcyLCAKKyAgICAyNDc0LCA3NDcwLCA3NDY4LCAxMDIzMiwgMTA2MTUsIDEwMjEzLCAxMjcyODgsIDkyMzU3LCAxMDA0OSwgMTE4MzQsIDM1NDQsIAorICAgIDk4MzM5MCwgNjAxNywgNjUzMTEsIDc0OTM1LCAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIAorICAgIDEwMDkzNiwgMTIwNTQ0LCAwLCAxMjc5NTAsIDkyNjYwLCA5ODMzNTYsIDc3ODg5LCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIAorICAgIDkyMzQxLCAxMjExMzMsIDIxMzksIDQyNTYsIDEyMDc3NiwgNzQzODAsIDQzODM2LCA0MjY3NSwgNDI2NTgsIDEyODQ1LCAKKyAgICA2NjY2LCA3MDUwOCwgNjUxMzgsIDExOTM1NSwgNjc4NjIsIDAsIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIAorICAgIDc0ODY1LCAxMjUxMzQsIDEyMDMyMSwgMTI3MjgzLCAxMjc4NzIsIDcxODYsIDcyNzUxLCAxMjA1NTUsIDcyNzYzLCA0NDUsIAorICAgIDExOTAyOCwgNjY4NDksIDEyNTAzMSwgOTE3ODQwLCA4MzMwLCAwLCAxMjUwMTgsIDQyNzk3LCAxMTM3MzYsIDEyMDIxNSwgCisgICAgODMwMDEsIDM5MDIsIDAsIDE3NzAsIDQzOTU5LCAxMDEwMzksIDE1NjAsIDQzOTU4LCA5MjE2NywgNDU4NCwgNzM4NDMsIAorICAgIDEyMjkxMSwgMTE3MTIsIDEwODY2LCA2NzA5MiwgMTExOCwgNzEzMzQsIDc0ODg4LCA5ODM0NzYsIDEwODEsIDc0MzYsIAorICAgIDExMTQ3LCA3MjUyLCA3MDA5MywgNTk5NiwgNjk5MjEsIDQ5MDMsIDY4MTQyLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAxMzMwLCAKKyAgICAxMjY2MDAsIDcxMzksIDAsIDEyMDQ3LCA3Njc1LCA5ODM4NDcsIDEyODc5NywgMTg0OCwgNDMzNCwgNjMyNCwgNDE5NzUsIAorICAgIDY0Nzc3LCAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAxMTM3OTUsIDcyODA3LCAxMjcxNSwgNjgwMDIsIDE5NDU3NiwgCisgICAgODMyNTYsIDIwMTgsIDY2NjcyLCA0MTk3OSwgNjY2ODUsIDExOTE1NywgNjgwMDAsIDc4NDkwLCAxMjkxNDAsIDEyNjk4NCwgCisgICAgNjgwMDEsIDkzMzQsIDkyNzA1LCA3MDgwMCwgNzAxMDEsIDc5NzUsIDEwMDkxMCwgNzc5NTcsIDkyMTQsIDQzNDk0LCA0ODg0LCAKKyAgICA2NjU5NywgNjk3MzIsIDAsIDkyOTU4LCA2MzEzLCA2NTUxMywgNjk4NTcsIDEwMDkwOCwgMTI3Nzk5LCAxMjg3NTcsIDIzNDUsIAorICAgIDQzNjk3LCA0NjMsIDAsIDEyMTI4MSwgNjgxNzgsIDMxMTcsIDU0NjAsIDEyMTQyMywgMTI3OTU1LCA5ODMzODksIDAsIAorICAgIDQyMjc5LCAxMjcxNDIsIDEyNjUwMywgNzg0MTUsIDk4MzIyOCwgODIyMSwgOTgzMzg2LCAxMzI0OCwgMTI1MDI3LCAKKyAgICA5ODM4NDMsIDQzOTU2LCAxMjg0MTUsIDEyOTA5MywgMTIxMDA5LCA1NjYzLCA3MTEyMCwgMTI4NDcyLCAxMjg5NTgsIAorICAgIDEyNzg1NCwgMjQ4MiwgMTQ3MSwgMTk0NTgzLCAxMTM3NDcsIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCA3MTQyNywgCisgICAgMTIzNzQsIDEyMTM1NywgMTI3MDY3LCAwLCAxMTg4MjgsIDI0NjAsIDcxODgyLCAxMTk0NCwgMTIzNzYsIDkyMzQyLCAKKyAgICA2NDY3OSwgOTI4OTMsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIDU4NzAsIDExMTIyLCAyMDI0LCAxMjcxODAsIDk4MzM5MSwgCisgICAgNzE4NzksIDUzOSwgMTAwOTMzLCAxMDA5MzIsIDcwMTIwLCAzODUzLCA2NTE4MCwgNzI3MzAsIDEwMDkzOSwgMTAwOTM4LCAKKyAgICA5MjMyNCwgOTgzNzQyLCA4NjU5LCAwLCAxMjQ3NCwgNjcyNDEsIDk1MDMsIDEwMDk0MSwgMjQ3OCwgMTAwOTQzLCA0MTYyLCAKKyAgICAxMDA5NDUsIDQyNjAsIDEyOTUzLCA2OTYzMywgODI5NjYsIDEyNDcwLCA5MjY0MCwgNzQxODksIDI3NDIsIDEyNDc2LCAKKyAgICAxMTc5OCwgMTA5NDYsIDEyNzMxMCwgNTAwMCwgMTEzNjg3LCA5ODM1NzksIDEyODE5MCwgNjk2NzIsIDgyMTMsIDQzODI0LCAKKyAgICA3NzcxLCA2MTYxLCA2ODAxOCwgNjcwOSwgOTIyNDksIDc4ODg1LCAxMTkyNDMsIDY4MjM1LCA4MzM4OCwgNzg1NDcsIAorICAgIDEwMDkyMSwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMTAwOTI1LCAxMDA5MjgsIDczNzkxLCAxMjAyMzgsIDgzMDMwLCAwLCAKKyAgICAxMjE0ODIsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCA3NDkwMywgCisgICAgMTIwOTI3LCAxMjIxMCwgNzIyMSwgNDIxNDcsIDc0ODY4LCA3NDU1MCwgNzEyMTUsIDY0NzQ3LCAxMDA5MTksIDEyODA4NiwgCisgICAgMTI1MTYsIDQ0NDQsIDAsIDkyMjcxLCA3NDUzNywgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgNDE5NzMsIAorICAgIDM1OTEsIDQxOTY5LCA4MzAwOCwgMjQ1MywgMTE4ODk5LCA5MjY2NiwgNjQ3MDUsIDcxMDY4LCAwLCAxMDM0OSwgMTA0MTMsIAorICAgIDQzNTkxLCA0MTk2MiwgMzIwMiwgNzQzNTMsIDEyOTE3NSwgODMxNiwgMTI5MTc0LCAwLCA5NDA2MCwgNjg3LCA5MzA1NSwgCisgICAgMTAwNzA1LCAwLCAxODQwLCAxMjEyMjQsIDY4NjcxLCAxMTEyMSwgNDg4MywgMjg1LCA0NzIzLCAxMTE3NSwgOTI2OTIsIAorICAgIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCA5MTc3NzAsIDQyMzIzLCA3NDY0MCwgOTc0MywgCisgICAgMTIwMjMyLCAxMzEzNCwgOTMwNjUsIDEyODk1NiwgNjU5MzEsIDkyNTc5LCAxMjgzMjksIDQyNjM0LCA5ODMzNDUsIDQzNDM3LCAKKyAgICAzMDgxLCAxMTQ2MywgMTIwMTU0LCAwLCAxOTQ1NjcsIDEwNDQ1LCAxMjEzMjIsIDkyOTY5LCA2NjcxNywgMjYxNCwgOTEyNSwgCisgICAgNzExMjUsIDE3MjksIDEyOTAzNCwgNzI0MjAsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAxMDA5MTUsIDY1MTk0LCAKKyAgICA2NjIwMSwgMTAwOTE2LCA2NjU3OCwgNTAwMSwgNDE4NzksIDc0NDI3LCA0MTIxLCA1MDAzLCA4ODQsIDY2NzAwLCA2Mzg3OSwgCisgICAgNDk0MywgNTE1MCwgNzM4ODksIDczNzY0LCA0MDM5LCA2NDMsIDMwODYsIDkyNTMzLCA0MjQ0OCwgNDIyOTksIDU4LCAKKyAgICAxMjAwODQsIDEwMDM1NSwgMTAxMDI2LCA2Mzg3MywgODQ5MSwgMTk0NjQzLCAxMDA4OTEsIDk4MzYyMywgNDUzMCwgNDI0MDksIAorICAgIDcxMjYsIDEwMDg5NCwgMjcyMSwgMTIwMDczLCAxMTkwOTYsIDE5OTI5LCAxMTg5NDEsIDEyNzMyNiwgOTI5NzUsIDQyNDIsIAorICAgIDQyNjQsIDEyMDA3NywgMTAwOTAyLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCAKKyAgICAxMjAyMjUsIDk3NTQsIDExOTEwMiwgNDQzNywgNzM5NDgsIDEyNzA3NCwgMTE5MTg2LCA1NTI4MCwgNDIxNzQsIDEyNzk1NCwgCisgICAgNDI0MzAsIDEyNzgzNSwgOTgzNDUyLCA0MjM1NSwgNjYwMjYsIDQzMDYsIDQxMzgwLCA2ODQzMiwgOTI1ODYsIDY4MzE0LCAKKyAgICA2NjY2NywgMTE5MzUxLCAxMDA2NzcsIDEyMTE3MiwgNDIyMDAsIDQyNTY2LCA3MDAwMCwgMTAwODgxLCA1MDg4LCA2OTQ4LCAKKyAgICAwLCA4NTI0LCA3MjczNiwgMCwgMTIzODUsIDkxNzg1NSwgNzQ5MjYsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIAorICAgIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAxMjc1NTgsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgCisgICAgNzc5OTksIDExNjYzLCAxNjY2LCA0MjA5MSwgNzQwNjcsIDEyMzgzLCA0MzY3MSwgNDIwOTIsIDY4NDE4LCA0Mjg5LCAKKyAgICAxMDA4ODUsIDYzODk2LCAxMjA2MSwgNDIwOTYsIDQzNjIxLCAzMzYyLCAxMjM3NywgMTE5OTM0LCAxMjg1ODYsIDY4NDQ5LCAKKyAgICA3NDYxLCA3MzkwMSwgMTI0NCwgMzMxLCA3Mzc4NiwgMTI2ODMsIDEwNjYyLCAxMjg3NzgsIDgxMTIsIDAsIDY1ODUyLCAKKyAgICA3NDYyOSwgMTIzNzksIDEyNzEwNywgOTI5MzAsIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCA3MDA4OSwgCisgICAgNjU4NjYsIDQzMjcsIDYzODQ4LCA2Mzg0MCwgNjY0MTMsIDQxMjIwLCAxMzAzMiwgOTI5ODAsIDU4NCwgMTI5MzMsIDQzMTc3LCAKKyAgICAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAyOTM1LCA4Njk4LCAxMjY2NSwgMTAwODc3LCAxOTMwLCAxMDA4NzksIAorICAgIDc4MjI5LCAxMjQyNywgNjY1MTQsIDY5ODU5LCAxMzAzMSwgMTAwNTcxLCA2MzkwMSwgMTAwNTg3LCAzNjU3LCAxMTk2MTEsIAorICAgIDY1MjAyLCA2MDAwLCAxMTM3ODYsIDEyNDI2LCAxMjEwNTgsIDc0MDEzLCA0MTc0MCwgMTI0MjgsIDQxMjgzLCA0MTkxNiwgCisgICAgMTE5MjEwLCAxMjgzMTgsIDAsIDEyNDI5LCA2NzI3LCAxMDA4NzMsIDc1NjIsIDEwMDg1MywgNTE3MCwgNzgyNDksIDQxNzU1LCAKKyAgICA2NzYsIDEwMDg1NiwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgODMwNDcsIDk3NTIsIDkyMzk3LCA2MTYyLCAKKyAgICA3ODMyMCwgNjkyMjgsIDEwMTEzLCA0MTgyOSwgNjU4ODYsIDUxNTksIDEyNDIyLCA0MTgzMiwgNDM5LCAzMDcyLCA5MTc4MjgsIAorICAgIDQyMjA3LCA3NDU0OSwgMTE3OTYsIDQwOTcwLCA0MTgzMCwgMTI1MDIxLCA3MDE1MSwgODMwOCwgMTAwNjk0LCA3MDgwNywgCisgICAgMTE5MjU4LCA2Nzg2NCwgMTEzNjk2LCA5MTc4MDAsIDEyMzM2LCA0MTM1LCA2NzIzMSwgMzQxLCAyNzI3LCA0MTI5LCAzNTM5LCAKKyAgICAxMDA4NjEsIDYzODYxLCA3MDY4MywgNzkxMywgMTAwNzY2LCA2Mzg1OSwgNDEzMSwgNjM4NjgsIDEwMDM2NiwgNjM4NjcsIAogICAgIDQxMzMsIDExMzcxLCAyMTAsIDQ2MDAsIDk4Mzg5NywgNzQ1NjAsIDQxMzcsIDgwODIsIDc4NTA2LCAxMTkwNjIsIDc4NTA0LCAKICAgICA2NzA0LCA0NTkxLCAxMjgwMjksIDQzODczLCAxMjA3NTMsIDk2ODAsIDEyOTM3LCAxMjA2MjMsIDU2MSwgMTIxNTksIDE5NSwgCiAgICAgNjgzMjEsIDQxNTAxLCAxOTQ1ODEsIDQyMDMxLCA1NzE5LCA3MTcyLCA0MjY4NywgODM2OCwgMTI4MzA2LCA0MTQ5OSwgCi0gICAgOTMwNjgsIDcxMDQ3LCA0MjI0MiwgNDE0OTgsIDkxNzc5NCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDY3MTgyLCAKKyAgICA5MzA2OCwgNzEwNDcsIDQyMjQyLCA0MTQ5OCwgMTI4MTc4LCA0MjAyNSwgNzg1NjUsIDY1ODA1LCA0MjQ2MywgNjcxODIsIAogICAgIDI5MjQsIDY3MTgzLCAxMjA1MTAsIDAsIDk4Mzk3MiwgOTI3NjYsIDczOTQxLCA2NzE4NiwgNDIzMzAsIDY3MTg3LCAzOTY5LCAKLSAgICAxMjE0MDUsIDAsIDcxNjksIDE5OTIsIDk2NTIsIDczOTc3LCA3MjQ2LCA0MjA4NiwgMTI2NjE1LCAyMjE5LCAxMjEzNDksIDAsIAotICAgIDEyODgwMSwgNjcxODAsIDEyNzU2OSwgMzI3LCAxMjEyNzcsIDkwNDIsIDkxNzc3NywgOTE3Nzc2LCA2NTE0OCwgMTI0MzMsIAotICAgIDkxNzc4MSwgMTIwMjIyLCA4MzEyOSwgMTI0MzEsIDg2NjgsIDEyNDM0LCA2NzE5NCwgMTEzODEyLCA1OTk5LCA3NTAxMywgCi0gICAgNzcxMiwgMTI0MzIsIDEyODI0MywgNDM2NTMsIDE3MjYsIDEwMTUsIDc0MDc5LCA4MjEyLCAxMjgwNjUsIDExMzc1NCwgCi0gICAgNDI0MjMsIDExOTA2NiwgMTk0NjEzLCA3MjM5OCwgNjY3MDksIDEyMTA2MSwgODgxMSwgOTI3LCA5MjUzMiwgMCwgMTI0MzYsIAotICAgIDEyMDA4NywgNDIwMjEsIDAsIDY3NjQ0LCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAwLCAxOTUwMTYsIDEyNzk3MiwgCi0gICAgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDEyODc0MCwgMjI5NiwgCi0gICAgMTI4OTMyLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgMTExNzgsIAotICAgIDkxNzU4NCwgNDE1MDMsIDEyNzQ3OCwgMTEyNjUsIDY4Mjk1LCAxMjA3NTYsIDE5NDkyMiwgNjcyODUsIDU2NjQsIDM5NzIsIAotICAgIDEyMDg5MSwgMTI4NTgzLCAxMjk0MDgsIDY3Mjg0LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIAotICAgIDExMjEwLCAxMjQxOCwgODU4NiwgMzg4MiwgODUzMiwgOTE3NzcxLCAxNTczLCA2ODA4MSwgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgCi0gICAgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTI2NDkxLCAxMjQxNCwgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIDExNDMsIAotICAgIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDkxNzU5NCwgMTE4ODg0LCA5MDIxLCAxMjA3ODMsIDExOTkzMSwgCi0gICAgMTE3MjQsIDEyNzc4NywgMCwgNzExMjIsIDEyNjYxOSwgMCwgOTgzNjYxLCA4MDI3LCAxMDk5NywgOTE3MSwgMTI3NDEsIAotICAgIDExNDAwLCA0Mzk0MywgMTk0Nzk5LCA2NjgzMywgMTI4MjM5LCA5ODM3MDcsIDkyNTU3LCA5Mzk3NiwgMTI3NTIzLCAKLSAgICAxMjAxOTAsIDEzMjQsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCA5ODM4NzMsIDc3MTUsIDM4ODEsIDQxNDg3LCAxMjExOCwgCi0gICAgNDI1MTQsIDY4NjUxLCAxMjgyMTAsIDEyODU5NCwgMzAwOSwgNDE0NzYsIDQxNDg5LCA2OTgyNSwgMzAwNywgMTQ0OCwgCi0gICAgMzAxOCwgMTk0ODA5LCAzODg5LCA4NTIxLCA1MDgzLCA1MDgyLCAxMTk4NTksIDc4MjU1LCA4NTE5LCAxMjEyMjYsIDMwMTQsIAotICAgIDUwODEsIDY1ODUzLCAxMjA3MTUsIDE5NDk5MiwgNjgwMTQsIDY5OTUxLCA1MDc5LCA2NDgwMiwgNDIyMTAsIDQ1OTcsIAotICAgIDY1NTMyLCAxMTgyOCwgMTIwMTg1LCAxMjM3MSwgMTExMDUsIDg0MDcsIDY3MTYzLCAxMDgwNSwgODUxOCwgMTA3NzksIAotICAgIDEyMDE4OCwgNzEzMDMsIDEyMTI0MCwgMTIzNjcsIDQyMTcwLCAwLCA2NzI5MCwgNjI5LCAxOTI0LCAxMjcwOTgsIDEyMDM3LCAKLSAgICA2NzE1OCwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgMTA2NDksIAotICAgIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgNTA3NSwgMTIxMTA5LCAxMjczMDAsIDY1MDc1LCAwLCAxMTAwNywgCi0gICAgNzA4NTEsIDY2NjU5LCA5MjYwNywgOTE3OTMzLCA2NjY4NCwgMTI4MDYzLCAzNDM0LCA0OTU0LCAxOTA0LCA5MjY3OSwgCi0gICAgNTI2NiwgMTI2OTgwLCA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgCi0gICAgMTk0OTI2LCA0NjEsIDk4MDMsIDQyMjgyLCA0NTA0LCAxNTA1LCAxMjc4OTMsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIAotICAgIDAsIDU1MjM2LCA5MjY1OSwgNjY0NjEsIDUxNzcsIDQxMzI0LCAxMjA1NSwgODcyMiwgMTIwODA1LCA0MTMyNywgOTgzNzMyLCAKLSAgICA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCA0MTMyNSwgNzQ5MzAsIDcyMSwgMTAxODIsIDkxMDgsIAotICAgIDcxMzExLCAwLCAxMTkxODUsIDQyMjI5LCA3NDk2MywgMTIxMDE0LCA1OTk4LCAwLCA0MjM1MywgNzQ4MjUsIDAsIDEyNTg3LCAKLSAgICA5NDEwNCwgNzg1NzEsIDc0ODg5LCA3MTMyOCwgMTI4OTU1LCA0MTU3NiwgNDIyMTUsIDc4NTcwLCA3NDAzNywgMCwgODU3OCwgCi0gICAgNTk5NSwgNzU3MywgNDE1NzUsIDc0Nzg5LCA3NDc1MiwgNjM5NDQsIDYzOTQ5LCA2NDc2NywgMjY3MCwgNDE2NywgMTk0Nzk2LCAKLSAgICAxMTcyMywgMCwgNzQxMjAsIDEyNjY0MiwgNjUwNzYsIDkzOCwgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgMCwgNjcxNzksIAotICAgIDY3MTY4LCAxMTc0MiwgMjQxOSwgNjcxNzcsIDExNDkzLCAxMjMzNCwgOTI0OTQsIDQxNTMsIDEyMzAyLCAxMDc5MywgNTI1MCwgCi0gICAgMTI0MDcsIDExOTc4LCA0NDA0LCA5MTg5LCAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIDY1ODA2LCA0Mzk5NywgMCwgCi0gICAgNDIwMDIsIDEyNDA0LCA2ODA5MiwgNzQ5MjgsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMTIwNTA3LCAKLSAgICA4NjEsIDY3Njk5LCA3NDg4MCwgNjgyOTcsIDk4MzgwNywgNDM3NTcsIDQzMzcwLCAxMjkyOTgsIDAsIDExOTU2LCAxMjQ5NjcsIAotICAgIDEyMTI2MywgNzA4MTUsIDk2MTYsIDY2MzEsIDkyMzM4LCAxMjgxNiwgNDM3NTksIDQyMjE4LCAxMjcxMCwgNjg2NzQsIAotICAgIDEyNzIxLCA0MTAxLCA2NjE4NSwgMCwgNTk5MiwgNzYxNiwgMTk1MDQ0LCAwLCAxMjU3NywgOTMwMTcsIDEyODI4OSwgODUzLCAKKyAgICAxMDEwNzIsIDk4Mzk2MSwgNzE2OSwgMTk5MiwgOTY1MiwgNzM5NzcsIDcyNDYsIDQyMDg2LCAxMjY2MTUsIDIyMTksIAorICAgIDEyMTM0OSwgMCwgMTI4ODAxLCA2NzE4MCwgMTI3NTY5LCAzMjcsIDEyMTI3NywgOTA0MiwgMTIwODQzLCA5MTc3NzYsIAorICAgIDY1MTQ4LCAxMjQzMywgOTE3NzgxLCAxMjAyMjIsIDc0MjA2LCAxMjQzMSwgODY2OCwgMTI0MzQsIDY3MTk0LCAxMTM4MTIsIAorICAgIDU5OTksIDc1MDEzLCA3NzEyLCAxMjQzMiwgMTIwODg1LCA0MzY1MywgMTcyNiwgMTAxNSwgNzQwNzksIDgyMTIsIDEyODA2NSwgCisgICAgMTEzNzU0LCA0MjQyMywgMTE5MDY2LCAxOTQ2MTMsIDcyMzk4LCA2NjcwOSwgMTIxMDYxLCA4ODExLCA5MjcsIDkyNTMyLCAKKyAgICA5ODM2MzcsIDEyNDM2LCAxMDEwNTYsIDQyMDIxLCAxOTQ2MTAsIDY3NjQ0LCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAKKyAgICAxMDEwNTgsIDE5NTAxNiwgMTAwNTY2LCA3ODE5NywgMTEzNDgsIDAsIDc4MDM3LCA5MTk0LCAxMDA4NzAsIDAsIDE5OTE0LCAKKyAgICAxMjE3OSwgMTAwNTY5LCAyMjk2LCAxMDA1OTYsIDYzODM2LCA2MzgzMiwgNzI3OTMsIDEwOTY3LCA2MzgxNiwgMjU5NCwgCisgICAgMzQ0NCwgNjM4MTcsIDExMTc4LCA5MTc1ODQsIDQxNTAzLCAxMjAwODcsIDExMjY1LCA2ODI5NSwgMTIwNzU2LCAxMDA2MDAsIAorICAgIDY3Mjg1LCA1NjY0LCAzOTcyLCAxMDA5ODUsIDEyODU4MywgMTI5NDA4LCA2NzI4NCwgMTI0MTYsIDkxNzc2NCwgMTE5NjA4LCAKKyAgICAxMDgxNiwgMTI3Mjg5LCAxMTIxMCwgMTI0MTgsIDg1ODYsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgNjgwODEsIAorICAgIDExOTg0NywgNDU5NiwgNjYzMzksIDEyNDE3LCA2NjAwMSwgNjUzNDMsIDEyNjQ5MSwgMTI0MTQsIDgyODcsIDY4MjE5LCAKKyAgICAxOTUwMTcsIDY4MTA4LCAxMTQzLCAxMTkxNjksIDExOTg0NiwgMTI0MTUsIDY2MjYsIDQyNzYzLCA5MTc1OTQsIDExODg4NCwgCisgICAgOTAyMSwgMTIwNzgzLCAxMTk5MzEsIDExNzI0LCAxMjc3ODcsIDEyMDE5MSwgNzExMjIsIDEyNjYxOSwgMCwgOTgzNjYxLCAKKyAgICA4MDI3LCAxMDk5NywgOTE3MSwgMTI3NDEsIDExNDAwLCA0Mzk0MywgMTAwNjc0LCA2NjgzMywgMTAwODA1LCAxMjc3NzksIAorICAgIDkyNTU3LCA5Mzk3NiwgMTE5ODQ0LCAxMjAxOTAsIDEzMjQsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAxMDEwNjIsIDc3MTUsIAorICAgIDIyNzEsIDQxNDg3LCAxMjExOCwgNDI1MTQsIDY4NjUxLCAxMjgyMTAsIDEyODU5NCwgMzAwOSwgNDE0NzYsIDQxNDg5LCAKKyAgICA2OTgyNSwgMzAwNywgMTQ0OCwgMzAxOCwgMTk0ODA3LCAzODg5LCA4NTIxLCA1MDgzLCA1MDgyLCAxMTk4NTksIDc4MjU1LCAKKyAgICA4NTE5LCA3MjcxMSwgMzAxNCwgNTA4MSwgNjU4NTMsIDEyMDcxNSwgMTk0OTkyLCA2ODAxNCwgNjk5NTEsIDUwNzksIAorICAgIDY0ODAyLCA0MjIxMCwgNDU5NywgNjU1MzIsIDExODI4LCAxMjAxODUsIDEyMzcxLCAxMTEwNSwgODQwNywgNjcxNjMsIAorICAgIDEwODA1LCA4NTE4LCAxMDc3OSwgMTAwODAxLCA3MTMwMywgMTIxMjQwLCAxMjM2NywgNDIxNzAsIDEyODIxNSwgNjcyOTAsIAorICAgIDYyOSwgMTkyNCwgMTI3MDk4LCAxMjAzNywgNjcxNTgsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCA2MzkzMywgNjk3MzUsIAorICAgIDEwMDg4OCwgMTIzNjksIDEwNjQ5LCA2Nzk4MSwgNTA3NywgMTIwMTc0LCAxMDg4MCwgNjM5MjcsIDUwNzUsIDEyMTEwOSwgCisgICAgMTI3MzAwLCA2NTA3NSwgMCwgMTEwMDcsIDcwODUxLCA2NjY1OSwgOTI2MDcsIDEwMDYwNywgNjY2ODQsIDEyODA2MywgCisgICAgMzQzNCwgNDk1NCwgMTkwNCwgOTI2NzksIDUyNjYsIDEyNjk4MCwgNTI3MiwgMTA0OTksIDQ1MDcsIDk1NzgsIDYzOTIzLCAKKyAgICAxMjAxNzcsIDc5NzksIDAsIDk4MzEsIDAsIDEyMDU4OSwgNDYxLCA5ODAzLCA0MjI4MiwgNDUwNCwgMTUwNSwgMTI3ODkzLCAKKyAgICA2MzI1LCA1Mjc2LCA0MzAyMSwgMTIwNDg4LCAwLCA1NTIzNiwgOTI2NTksIDY2NDYxLCA1MTc3LCA0MTMyNCwgMTIwNTUsIAorICAgIDg3MjIsIDEyMDgwNSwgNDEzMjcsIDEyOTMzMiwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIAorICAgIDc0OTMwLCA3MjEsIDEwMTgyLCA5MTA4LCA3MTMxMSwgMCwgMzQxOSwgNDIyMjksIDc0OTYzLCAxMDA2MjcsIDU5OTgsIDAsIAorICAgIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIDk0MTA0LCA3ODU3MSwgNzQ4ODksIDcxMzI4LCAxMDA2MjksIDQxNTc2LCA0MjIxNSwgCisgICAgNzg1NzAsIDc0MDM3LCAwLCA4NTc4LCA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIAorICAgIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIDExNzIzLCA5ODM0MzksIDc0MTIwLCAxMTkwMDAsIDY1MDc2LCA5MzgsIAorICAgIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIDk4MzI2MiwgNjcxNzksIDY3MTY4LCAxMTc0MiwgMjQxOSwgNjcxNzcsIAorICAgIDExNDkzLCAxMjMzNCwgOTI0OTQsIDQxNTMsIDEyMzAyLCAxMDc5MywgNTI1MCwgMTI0MDcsIDExOTc4LCA0NDA0LCA5MTg5LCAKKyAgICAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIDY1ODA2LCA0Mzk5NywgMTIyOTIyLCA0MjAwMiwgMTI0MDQsIDY4MDkyLCAKKyAgICA3NDkyOCwgNDk0MCwgMTI0MTAsIDc2ODMsIDExNjcsIDczNzI5LCA0OTgzLCAxMjA1MDcsIDg2MSwgNjc2OTksIDc0ODgwLCAKKyAgICA2ODI5NywgOTgzODA3LCA0Mzc1NywgNDMzNzAsIDEyOTI5OCwgMTI4MzA3LCAxMTk1NiwgMTI0OTY3LCAxMjEyNjMsIAorICAgIDcwODE1LCA5NjE2LCA2NjMxLCA5MjMzOCwgMTI4MTYsIDQzNzU5LCA0MjIxOCwgMTI3MTAsIDY4Njc0LCAxMjcyMSwgNDEwMSwgCisgICAgNjYxODUsIDk4MzI2OSwgNTk5MiwgNzYxNiwgMTk1MDQ0LCA5ODMzOTIsIDEyNTc3LCA5MzAxNywgMTAwODgwLCA4NTMsIAogICAgIDQyNjkzLCAxOTQ2NDcsIDExOTAyNywgOTgzMjg0LCA1MDE2LCA0MzUzNSwgNjM4OTMsIDQyODM1LCA5NDkxLCA5MTc5MTMsIAotICAgIDAsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgNjUwNjAsIDY2ODc1LCA5OTAwLCA3NzUwLCA5MTc5NDYsIAorICAgIDEwMDg3NSwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgNjY4NzUsIDk5MDAsIDc3NTAsIDkxNzk0NiwgCiAgICAgMTI3ODk2LCA3NDYxOSwgMTE5MjY1LCA5ODM1ODcsIDY0Nzc4LCAxMjU4NSwgMTA1NjUsIDEyODE1MSwgMTIxNzcsIAotICAgIDExOTg0MywgOTgzMjYwLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAorICAgIDExOTg0MywgMTE4ODkxLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI1MjQ1LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAogICAgIDc0NzY4LCA4OTcxLCA3ODU5MywgNDMxMTMsIDk3MDIsIDY2ODUyLCAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIAotICAgIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMTE5MDQwLCAxMzA1NCwgMTIzOTQsIDAsIDAsIDE5NDk1NCwgCi0gICAgMTMwNTMsIDExODk3NCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgNzg1ODMsIAotICAgIDkyNDMxLCAxMjEwMzcsIDEyNjY0NCwgMTk0OTE1LCA3MjY3LCAxMjc0NzksIDc0ODMzLCAxMjgxODEsIDU5OTMsIDI4MTksIAotICAgIDEyODc4OCwgMTI3MDYsIDcxMDYzLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgMCwgMTM2MywgOTgzNTgwLCAKLSAgICA0MjkyMywgNjM5MTAsIDYzOTk2LCAzMDc3LCAxMjAwMTgsIDAsIDE1MTIsIDY5OTI5LCAxMjU4OSwgNDE0NzksIDEyODMxMywgCi0gICAgNzEwNDgsIDQzMzM5LCA3Mzc3NiwgOTgzNiwgMTIwNzI3LCA5ODM5MDksIDQxNDgxLCA0MzMzNSwgNzgzMiwgNDIzNDMsIAotICAgIDMwOTAsIDQzMzM3LCA4MTcsIDE2NjQsIDE4NTAsIDgzMTc3LCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCA3NDkzMiwgCi0gICAgNzQwNDQsIDQyMzA3LCAxMjM4NiwgNDIzMDQsIDkxNzU1NSwgODM0MjgsIDEyMzg5LCAxMjEwNzksIDkyMzY2LCA0MTk5NiwgCi0gICAgMTE1MjYsIDYzOTg1LCA1ODY0LCAxMTQ3LCA0Mzg0OSwgNDI4ODcsIDE5ODcsIDkyNzE4LCA1NDgwLCA3ODU4LCAxMTY1MywgCi0gICAgNDExNiwgMTIzOTEsIDY2MTkzLCAxMjEzODMsIDQ5MzksIDEyMzg0LCAwLCAxMjc3NzgsIDQxNjg2LCA2MzkwNSwgMTE5NjAxLCAKLSAgICA3MDI4NSwgNjczOTgsIDEyODgyMCwgMTI2NDksIDEyMDAyMiwgMCwgODI0NywgNTA3LCA5MSwgMjA0MiwgMTIwNzc1LCAKLSAgICA0MzY0MywgMTIxNDQ1LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCAxMTk4MTMsIDc3NCwgMTE5ODI5LCA3Nzg0MCwgMTE5ODE1LCAKLSAgICA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCA5ODMxMDUsIDc4Mzc3LCA5ODMyMzcsIDkxNzYyOCwgCi0gICAgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCA5Njg3LCA0MTY4MSwgCi0gICAgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAwLCA3NTM0LCAKLSAgICAxMjIxOSwgMjIyNiwgNzA0OTksIDQyODEwLCAxMDQ5MiwgMTIxNTEwLCAxMjExNDgsIDEyMTUwOSwgNDMxMTksIDAsIAotICAgIDc4NTM3LCAxMjQwMywgMjUwMCwgNzAxNDUsIDgzMjQ2LCA0ODk5LCAxMjcyOSwgOTgzMzk5LCAxOTQ2MTksIDc0MTEzLCAKKyAgICA3NDE4NSwgOTI0ODEsIDkyNzEwLCAxMjM5NywgNzc4MjcsIDExOTA0MCwgMTMwNTQsIDEyMzk0LCA2NjE4MiwgMCwgCisgICAgMTk0OTM3LCAxMzA1MywgMTE4OTc0LCAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgNTAxMCwgMTY4MCwgMTA1MDcsIDc4NTkwLCAKKyAgICA3ODU4MywgOTI0MzEsIDEyMTAzNywgMTI2NjQ0LCAxOTQ5MTUsIDcyNjcsIDEyNzQ3OSwgNzQ4MzMsIDEyODE4MSwgNTk5MywgCisgICAgMjgxOSwgMTI4Nzg4LCAxMjcwNiwgNzEwNjMsIDE4OTMsIDcyNjYsIDYzOTE1LCA3MjY0LCA3MjY1LCA5ODM2NzMsIDEzNjMsIAorICAgIDk4MzU4MCwgNDI5MjMsIDEzMTA5LCA2Mzk5NiwgMzA3NywgMTIwMDE4LCAwLCAxNTEyLCA2OTkyOSwgMTI1ODksIDQxNDc5LCAKKyAgICAxMDEwMzEsIDcxMDQ4LCA0MzMzOSwgNzM3NzYsIDk4MzYsIDExOTYwNywgOTE3ODE3LCA0MTQ4MSwgNDMzMzUsIDc4MzIsIAorICAgIDQyMzQzLCAzMDkwLCA0MzMzNywgODE3LCAxNjY0LCAxODUwLCA4MzE3NywgMzA3OSwgMTEzNDAsIDQyNDA4LCA0MjQ0NywgCisgICAgNzQ5MzIsIDc0MDQ0LCA0MjMwNywgMTIzODYsIDQyMzA0LCA5MTc1NTUsIDgzNDI4LCAxMjM4OSwgMTIxMDc5LCA5MjM2NiwgCisgICAgNDE5OTYsIDExNTI2LCA2Mzk4NSwgNTg2NCwgMTE0NywgNDM4NDksIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgCisgICAgMTE2NTMsIDQxMTYsIDEyMzkxLCA2NjE5MywgMTIxMzgzLCA0OTM5LCAxMjM4NCwgMTIwMTg0LCAxMjc3NzgsIDQxNjg2LCAKKyAgICA2MzkwNSwgMTE5NjAxLCA3MDI4NSwgNjczOTgsIDEwMDg4NCwgMTI2NDksIDEyMDAyMiwgMCwgODI0NywgNTA3LCA5MSwgCisgICAgMjA0MiwgMTIwNzc1LCA0MzY0MywgMTIxNDQ1LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCA3MDY4MCwgNzc0LCAxMTk4MjksIAorICAgIDc3ODQwLCAxMTk4MTUsIDU5OTQsIDEyNTM5LCAwLCA3ODM3NSwgMTIwNTk3LCAxMTk4MzMsIDk4MzEwNSwgNzgzNzcsIAorICAgIDkxNzgyMywgOTE3NjI4LCA3NzE5LCA2MDI2LCAyNDg2LCAxMDEwMTksIDExOTgwOCwgMTYyLCAwLCA2NTIxOSwgNDEwNzMsIAorICAgIDk2ODcsIDQxNjgxLCA2MzA0LCAxMTk4MTIsIDY2MTk2LCAxMTkwODksIDUyNjIsIDAsIDU1MjMzLCAxMjY4MSwgNDIzNzksIAorICAgIDAsIDc1MzQsIDEyMjE5LCAyMjI2LCA3MDQ5OSwgNDI4MTAsIDEwNDkyLCAxMjE1MTAsIDEyMTE0OCwgMTIxNTA5LCA0MzExOSwgCisgICAgMCwgNzg1MzcsIDEyNDAzLCAyNTAwLCA3MDE0NSwgODMyNDYsIDQ4OTksIDEyNzI5LCA5ODMzOTksIDE5NDYxOSwgNzQxMTMsIAogICAgIDIzNDMsIDQxMDMsIDE5OTQ2LCA3NDExMiwgNzc4NTEsIDEzMTEyLCAxMjkwNDYsIDc0ODM0LCAxMjg1OSwgNzAwODcsIAogICAgIDEyMDE0OCwgNjYzNjksIDU4NjEsIDEyNzc1OCwgMTE5OTksIDEyNDAwLCA0MzY0MSwgMTI4MTgzLCAxMjY0NSwgNTE0NiwgCiAgICAgMTEzMjAsIDY4NDEwLCA2NzQ4LCA2NTA0MCwgMTk0Nzg2LCA2NDE4NCwgMTI5NzQsIDY0MTgzLCA2NzYxMywgMTIwNjQ1LCAKLSAgICA1MTQ3LCAxMjUwMTksIDAsIDc0NTI0LCAxMjgzNTYsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgCi0gICAgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgNzg2NjIsIDEyOTAyOSwgMTI4Mjk4LCA2NzI3NywgCi0gICAgMTAxMzgsIDY3MjM4LCAxMjg3ODUsIDg4OTcsIDEyMDIzNCwgMTQyMiwgODM1NywgNDEyNCwgNzc4NjIsIDY1ODM2LCAKLSAgICAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDAsIDEyMDkzMCwgMTEyMywgOTYzLCA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIAotICAgIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIDEyOTEyNiwgNDQwMiwgOTk3MCwgMTI0MDIsIAotICAgIDkzMDYyLCA0MjM5MiwgMTMwNSwgMTI0MDgsIDkyMzg0LCA0NDAwNywgMTI4NTYzLCAxMjcyMTYsIDQxNDY0LCAxMjQxMSwgCi0gICAgMTI5NjksIDY3MjY4LCA0MTQ2NSwgMTIxMDkyLCA4NTI4LCAxNTc1LCAwLCA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgCi0gICAgMTE5MTYzLCA3MDExOSwgOTA5MywgMTI4NTM1LCA2ODMzLCA5MjU3NCwgNjM5NTgsIDAsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCAKLSAgICA4Mjk2LCA2NzUwLCA2Njg1NSwgMTI4NDEwLCA5NTk0LCAxMjAzMDgsIDEyMDkzOCwgNDM1MjcsIDEyMTE5MiwgNzI3LCAKLSAgICA3NDE5MiwgOTMwNjAsIDU4MDUsIDAsIDY3MjYsIDAsIDQyMTc2LCAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIAotICAgIDk4MzIzNCwgMTIzNzIsIDEyMDY0MiwgMTIwMzA3LCA3MTIwOSwgOTIzNDMsIDk4Mzg3MiwgMTIzNjYsIDEwOTYzLCA2MDY2LCAKLSAgICAxMzI5LCAwLCAzMDUyLCA5MjIwLCAxMjEwNDUsIDY0NDc4LCAxOTQ3MDEsIDEwODAzLCA0MTMyLCAxMjAzMDYsIDY4NDc0LCAKLSAgICA5MjQ3MywgOTgzMjQ3LCAxMjA3MTIsIDc0ODM3LCAxMjAxNTUsIDE0OTksIDAsIDgwNTUsIDQyNzQwLCA2Mzk2NSwgCi0gICAgMTIwMzA1LCA2Mzk2MiwgNzQwNDIsIDg5MjQsIDQzMTIzLCA1OTg4LCAzNjYwLCA2Mzk2OSwgMTE3ODEsIDQyNzE4LCA4Nzg4LCAKLSAgICAxMzU3LCA2NDg1MSwgNjU3NDMsIDkyODk0LCA4Nzc0LCA3MDMzNywgMTI3MDg2LCA5OTQxLCAxMjAxNzIsIDkyNzQ4LCAKLSAgICAxOTMzLCA2OTY1NSwgOTU2NCwgMTIwMDE2LCA5MjQzNSwgNzM4NjYsIDAsIDEyMTI0MSwgMjQ4NywgNjc2MTQsIDMxMjEsIAotICAgIDE4MDQsIDMzMTEsIDY3NjE1LCA3MDA4MSwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgOTI3NjksIDEyMDAyMCwgMTk0NTk0LCAKLSAgICA2ODIwMCwgNjY3NSwgMTI4MTQ0LCAwLCA2NzU5MiwgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgOTEzMiwgMCwgNjQ2MTksIAotICAgIDUxMCwgNjQ2NjMsIDAsIDEyMTUwMCwgNDU2MSwgMjEwMSwgMTM5OCwgOTE3OTcyLCA5MjU1NCwgNzQwMzQsIDQxNTY5LCAKLSAgICA5MjY4NCwgMTE0MDYsIDgxNjcsIDEyMTI3LCAxMjA1MDUsIDg0MCwgOTgzMjgzLCA2OTk5MiwgNzEwMSwgNjk2NywgMCwgCi0gICAgMTk0ODk4LCA5Nzk2LCAxMjcwMDAsIDMzMywgNjk4OTEsIDAsIDgxNDQsIDIxMTcsIDAsIDEyMTE1NSwgMTI0MDYsIAotICAgIDkxNzk3MCwgMTk5MzEsIDY2Mzg4LCA2Njc4LCA3NzY5LCA5ODMxMjQsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCA0NzY0LCAKLSAgICA0MzEwMSwgOTk4MSwgMCwgNDA5ODYsIDQxMjcsIDY2NDg3LCA5ODM1NzYsIDQyMjAyLCAxMjc1NCwgMTk1MDIxLCA5ODMxOTEsIAotICAgIDAsIDk0MDk3LCA2NzU5NCwgMjA0OCwgMTI5NDQsIDQwNTAsIDY3NTk1LCA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTExODQsIAotICAgIDQ1MzMsIDEyNzIxMiwgNzQwMDMsIDY0OTAsIDAsIDEyMDM4LCAwLCAwLCA2ODIyNSwgNjU0NjEsIDk3OTgsIDY5NzA0LCAKLSAgICAxMjg5MTIsIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMTI1MTA3LCA5ODMzNTQsIDcwMjk2LCA2NDQ5LCA5NDk0LCAKLSAgICAxMjAzMTMsIDAsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDk4MzM0MSwgMCwgMzQzNiwgCi0gICAgMTE5OTczLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDQyNjE1LCA2NjQwNywgNjk5OTEsIDY3NTk4LCAwLCAwLCAwLCAKLSAgICA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAxOTQ5OTMsIDEyMTQ1OCwgMTI3ODU5LCA4NTAwLCA0MjIyMiwgMTIwMTQyLCAKLSAgICA3Mzc0MywgMTIwNDAwLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAwLCAxMjc4MzMsIDY3NjA2LCAxMTkwODMsIAotICAgIDEyMTA4MywgNDIyMTcsIDEzMTAyLCAwLCA2NjAwMywgNjY3MiwgMCwgMCwgNjY4ODAsIDc3OTEyLCA2Mzg0MSwgOTYxMywgCi0gICAgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCA2NDUyMCwgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgMTAyMjgsIDY0OTU3LCAKLSAgICAxMTI4MSwgMCwgMzgwNywgMTQ2OSwgNjY2NDAsIDY1MzgxLCA0MjE5NywgNDk4OCwgNDIzNzIsIDAsIDk1OTgsIDkwNCwgCi0gICAgMzUyLCA0MjIyNSwgMTQ1MSwgODA2MSwgODQ1MywgNDEzNCwgODM0ODUsIDY3MjIzLCA2NjU3NiwgMTI3OTE2LCAxMjc4MzEsIAotICAgIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjcyODksIDEyODQ2LCAxMjcyOTEsIDY4MDQwLCAxMTkxOSwgNjQ5NjIsIAotICAgIDEyNzA4MSwgNDM3MzksIDEyNzI4MSwgODUxMSwgOTQ2MCwgODIzLCAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIAotICAgIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgNDI3ODMsIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgCi0gICAgNzAzMzQsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCA5ODIxLCA2NDMwNCwgMTI3MzY5LCA1MTUyLCAxMTA0OCwgCi0gICAgNzUzMywgNjgzNjYsIDY0NDEwLCA5MjMwNSwgMCwgNDMyMywgNzAyNzYsIDkyNjY5LCA3MTMzMiwgMTIwMTU4LCA0MjU4NywgCi0gICAgNDIyMTQsIDQxMzk0LCAxMTE4OCwgNDc2MywgNDExMiwgMTE4OTM1LCAwLCA1MjYwLCA0MzE0MywgOTQwMzgsIDMyNiwgCi0gICAgMTIwMTMxLCA2ODQyMywgMTE5MjE4LCAxMDc3MSwgMjg3NiwgNzQwNzQsIDkyNTMwLCAxMjg0NjAsIDQxMzk4LCA3MzgyLCAKLSAgICA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgNDUzLCA0MTM5NiwgMTIwNTI0LCAxMzE1OSwgMTIxNDAsIDk1NzIsIDk4MzEzMiwgCi0gICAgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgMTI1MDY5LCAxMjUwMjAsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgCi0gICAgOTk3NywgMCwgMTIxMjgzLCA2NTc1OSwgMTA3NjUsIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIDQxMjYsIDAsIAotICAgIDk1MjEsIDk1ODksIDY0NzU1LCAwLCA2NDAyMCwgMTI2NjA0LCAxMDQ2NCwgMCwgOTI5NjgsIDE5NDYxMCwgNjQ1MTQsIAotICAgIDExNTI4LCA2NDAyNCwgMTI4MDcyLCA2NzksIDY0MDEzLCA5ODM1NTUsIDU4NTAsIDc1OCwgNzUzNiwgMTIwNTM4LCA5MjIzNCwgCi0gICAgNDE0NDEsIDEwNjkzLCA2NDAwNiwgNzUwNDQsIDY0MDA1LCA0MDU4LCAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDEyODE3NiwgCi0gICAgMTE5MDUwLCAwLCA5ODMwNjksIDExMzksIDQzMjk4LCA2NDAyNywgNjQwMjksIDg5NzAsIDAsIDk5MzQsIDEyODY4NSwgCi0gICAgMTA3NzQsIDY3MTA0LCA0MjIwMSwgMTI0MjEsIDEyODIxNiwgMTI3MDA2LCAxODUyLCAzMDU3LCA2NDA0NiwgNzM3NDQsIAotICAgIDY0MDM0LCA2NDAzOSwgNjgwNjUsIDAsIDk4MzY5MCwgOTI5MTMsIDkyMzIyLCA3NjQ1LCAxMjg1NCwgNzQzMzgsIDM0OTYsIAotICAgIDAsIDEyMTMyMywgMTEzNzEwLCA5MTAyLCA2MjcsIDEyNzc5NSwgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgCi0gICAgMTMzMDksIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgMTAxOCwgMTE4OTcwLCAxMjkwNzUsIDE5NDg5NywgCi0gICAgMTY4MiwgNDM4NjMsIDE5NDg5NiwgNDI3NTYsIDY3NjUsIDE5NDkwNiwgNjc3MTcsIDc0MzU4LCA3MzgxNCwgMTE0MTIsIAotICAgIDY3NjgsIDEwNzI4LCAxMTk5ODIsIDcxMzE2LCA3MTA5OSwgNDMzMTEsIDY0OTY2LCAxMTU3NywgMTI3ODMyLCA0MzA0MCwgCi0gICAgMTgzMywgMTE1NzYsIDcwMDU0LCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAxMTkzMzQsIDc1MzUsIAotICAgIDgwODUsIDQyNTI1LCAxMTk5NDQsIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAxMjA0ODksIDEyMDk5NywgCi0gICAgNjQ0ODMsIDY1NjkzLCA5ODM3MTEsIDk4MzQ5NSwgMTI4NjE1LCA2OTY5NSwgNDIyNDAsIDEyODU4NywgMTIxMzUyLCAKLSAgICA0Mjg2NCwgMTI2NDk4LCA0MzE2OCwgNDE4NjgsIDExODQsIDAsIDgxNSwgMTE0ODQsIDEyNzUzNSwgNjc4NDAsIDk4MzY1MSwgCi0gICAgMCwgNjYxOTcsIDk4MzQ3NCwgMTA5ODYsIDY0NjgzLCAxMjg1NDksIDEyODQ1NCwgMzQ1NSwgMTI2NTMwLCAwLCA5ODc5LCAwLCAKLSAgICAwLCA0MTU4LCA3MDMwNywgNjgxNjYsIDAsIDEyODA5MSwgMCwgMCwgNjk2NDUsIDMzMiwgMTE4ODA4LCA4MzM2OCwgNTE0MiwgCi0gICAgMjQwNywgNjk2NDMsIDQyMTk5LCAwLCA5MjQwNCwgNzQzNzMsIDgzMzcyLCA1NTIxNywgNzE0NTcsIDYzODcwLCA0MzE2MywgCi0gICAgMCwgMCwgMTI5ODUsIDQyODY3LCAxODM0LCAxMjAzODcsIDkyNDYxLCA2OTgxNywgMTA5NDAsIDY1MjQ5LCA3MDM4NSwgCi0gICAgODY2MiwgMTIwMzI0LCAwLCAyNjUyLCAxMjA1MjcsIDcxNjQsIDEwNzg0LCAxOTUwOTMsIDY3Njc0LCAwLCA4MzM1OSwgCi0gICAgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIDkxNzUwNSwgMTgyOCwgNzQ0NzQsIDEyMDAxOSwgNjgwNzgsIDg1MzEsIDEyNDk5LCAKLSAgICA2MjgwLCAxMjMyNCwgNzI0MzQsIDY1MjM4LCA2ODM3NCwgNDgzMiwgNjU1NzMsIDQzODUxLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIAotICAgIDEyNTAyLCA5MTYxLCAxMjg1NTUsIDE2MjAsIDExMjQ3LCAzNjAxLCAxMjEzMDEsIDgzMzUzLCA2NzI0NiwgNjA5LCAxMTU1NSwgCi0gICAgODM0NTYsIDEyNDk2LCAxMTk4MCwgNzQxODEsIDQzNDMsIDEyNTA1LCA4Mjk2MCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAKLSAgICAxMjgxMTQsIDYzNywgMCwgMTI4Njc4LCA0MjY3MSwgMCwgOTMwMzIsIDgzMDk1LCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgCi0gICAgMTI2OTYsIDEyODI1NiwgOTE3NjAwLCA5NDA2MiwgMTI5MjksIDAsIDcxMiwgMCwgNDE5NywgOTgzMjA2LCA0MjgxOCwgCi0gICAgMTI2NjMyLCA3MDMwNiwgMTIwNDkwLCA3MDMzMywgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMTE5OTEzLCA5MjQ5MSwgNjgwNzYsIAotICAgIDEyNjUxLCAxMjA5MTcsIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCAxOTQ2MzMsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAKLSAgICAxMTg4NDQsIDE5NDgyMywgMTI3MDg4LCAzNTUsIDk3MTksIDEyNzA4NywgMTMwNjYsIDY0Nzk2LCAxMjEwNzcsIDk4MzI5NywgCi0gICAgMTIwMzMsIDQyMTc4LCAxOTQ3NTQsIDY5NzYwLCA0MjU3MSwgOTI2MzUsIDExNDMwLCAwLCA3MDI5OSwgMTIxNTA4LCAKLSAgICAxMjQ5NTEsIDY4MzI0LCAzMTc4LCAxMjY0ODgsIDEyODYzMywgOTI3MDQsIDkxNzU2NiwgOTA4MCwgMTIwOTQzLCA2NzY5NywgCi0gICAgMTk1MTAxLCA2ODIwOSwgNzI0MTgsIDExMDgyLCA3MTQ4NSwgNTY5OSwgODMzNzMsIDY2MDAwLCA5NDg4LCA2NTE2NiwgCi0gICAgMTE5MTEyLCA3MDQ3NywgMTExNzAsIDY4NjYyLCAxMjgxMjAsIDcxMzEzLCAwLCA1MjY1LCA2OTIzNSwgODMzODQsIDExNDg3LCAKLSAgICA2Nzg1OCwgMTI0NjQsIDk4MzM2NSwgNDMwNDUsIDk4MzgzMSwgNzAzNDUsIDQzMzQ1LCA5ODMyNzYsIDEwNzcwLCAxMTg5OTQsIAotICAgIDY4MDcsIDQ2NSwgOTgyOSwgNjk5OTcsIDc0MzQ4LCAwLCA0MzM0NiwgODExNiwgNzk1LCAxMjAzNTIsIDcyNDEyLCAxMjQ2MiwgCi0gICAgMTA5MzAsIDEwODMxLCAxMjEzMjAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCA5MzA1NiwgODMwNDcsIDk4MzkzMywgMTI0NjgsIAotICAgIDg2MDcsIDEwMDgsIDExODk0OCwgMTAwOTIsIDEyNTEyMiwgMTI4ODUxLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAxNzY2LCAKLSAgICAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDExMjAyLCAxMjAyNDMsIDEyODM0NSwgMTMyMjMsIDc0OTM0LCA2NDU5NSwgCisgICAgNTE0NywgMTI1MDE5LCA5MTc2MjQsIDc0NTI0LCAxMjgzNTYsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgCisgICAgNDk3NiwgNjQxNzYsIDc0OTY2LCA2NzYxMCwgODI0MSwgOTgzOTAwLCA3Nzg2OCwgNDIwNiwgMTI3MzUyLCA3ODY2MiwgCisgICAgMTI5MDI5LCAxMjgyOTgsIDY3Mjc3LCAxMDEzOCwgNjcyMzgsIDEyODc4NSwgODg5NywgMTIwMjM0LCAxNDIyLCA4MzU3LCAKKyAgICA0MTI0LCA3Nzg2MiwgNjU4MzYsIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMTAwOTEyLCAxMjA5MzAsIDExMjMsIDk2MywgCisgICAgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCA3OTQ1LCAKKyAgICAxMjkxMjYsIDQ0MDIsIDk5NzAsIDEyNDAyLCA5MzA2MiwgNDIzOTIsIDEzMDUsIDEyNDA4LCA5MjM4NCwgNDQwMDcsIAorICAgIDEyODQ2NSwgMTI3MjE2LCA0MTQ2NCwgMTI0MTEsIDEyOTY5LCA2NzI2OCwgNDE0NjUsIDEyMTA5MiwgODUyOCwgMTU3NSwgMCwgCisgICAgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIDExOTE2MywgNzAxMTksIDkwOTMsIDEwMDYyMCwgNjgzMywgOTI1NzQsIDYzOTU4LCAKKyAgICAxMjA5MzEsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCA4Mjk2LCA2NzUwLCA2Njg1NSwgMTI4NDEwLCA5NTk0LCAxMjAzMDgsIAorICAgIDEyMDkzOCwgNDM1MjcsIDEwMDYxMSwgNzI3LCA3NDE5MiwgOTMwNjAsIDU4MDUsIDAsIDY3MjYsIDEyNzM4NywgNDIxNzYsIAorICAgIDEyMzcwLCAxMTY1NSwgMTE5MDk1LCAxMDU5MSwgMjI4MCwgOTgzMjM0LCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDcxMjA5LCAKKyAgICA5MjM0MywgOTgzODcyLCAxMjM2NiwgMTA5NjMsIDYwNjYsIDEzMjksIDAsIDMwNTIsIDkyMjAsIDEyMTA0NSwgNjQ0NzgsIAorICAgIDE5NDcwMSwgMTA4MDMsIDQxMzIsIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAxMDA4NzYsIDExODkyMywgNzQ4MzcsIDEyMDE1NSwgCisgICAgMTQ5OSwgMTIxMjk5LCA4MDU1LCA0Mjc0MCwgNjM5NjUsIDc0MzM4LCA2Mzk2MiwgNzQwNDIsIDg5MjQsIDQzMTIzLCA1OTg4LCAKKyAgICAzNjYwLCA2Mzk2OSwgMTE3ODEsIDQyNzE4LCA4Nzg4LCAxMzU3LCA2NDg1MSwgNjU3NDMsIDkyODk0LCA4Nzc0LCA3MDMzNywgCisgICAgMTI3MDg2LCA5OTQxLCAxMjAxNzIsIDkyNzQ4LCAxOTMzLCA2OTY1NSwgOTU2NCwgMTIwMDE2LCA5MjQzNSwgNzM4NjYsIAorICAgIDk4MzkzMiwgMTIxMjQxLCAyNDg3LCA2NzYxNCwgMzEyMSwgMTgwNCwgMzMxMSwgNjc2MTUsIDcwMDgxLCA3ODMwMiwgCisgICAgMTIyMjAsIDY3NjE2LCA5Mjc2OSwgMTIwMDIwLCAxOTQ1OTQsIDY4MjAwLCA2Njc1LCAxMjgxNDQsIDk4MzI4MiwgNjc1OTIsIAorICAgIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDk4MzcwOSwgNjQ2MTksIDUxMCwgNjQ2NjMsIDk0MDMzLCAxMjE1MDAsIAorICAgIDQ1NjEsIDIxMDEsIDEzOTgsIDE5NTA1MSwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgCisgICAgMTIwNTA1LCA4NDAsIDk4MzI4MywgNjk5OTIsIDcxMDEsIDY5NjcsIDAsIDE5NDg5OCwgOTc5NiwgMTI3MDAwLCAzMzMsIAorICAgIDY5ODkxLCAxMjcxNDUsIDgxNDQsIDIxMTcsIDAsIDcwNzEyLCAxMjQwNiwgOTE3OTcwLCAxOTkzMSwgNjYzODgsIDY2NzgsIAorICAgIDc3NjksIDk4MzEyNCwgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIDQ3NjQsIDQzMTAxLCA5OTgxLCA3NDE1NywgNDA5ODYsIAorICAgIDQxMjcsIDY2NDg3LCA5ODM1NzYsIDQyMjAyLCAxMjc1NCwgMTk1MDIxLCA5ODMxOTEsIDEwMDYyOCwgOTQwOTcsIDY3NTk0LCAKKyAgICAyMDQ4LCAxMjk0NCwgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMTE4NCwgNDUzMywgMTI3MjEyLCAKKyAgICA3NDAwMywgNjQ5MCwgOTgzODU3LCAxMjAzOCwgMCwgMCwgNjgyMjUsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgMTI4OTEyLCAKKyAgICAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDEyNTEwNywgOTgzMzU0LCA3MDI5NiwgNjQ0OSwgOTQ5NCwgMTIwMzEzLCAKKyAgICA3MDczOCwgNDMwOTgsIDQ4NDMsIDgxNDIsIDY0MTYwLCA0MDk4LCA2NDE3MCwgMTI4ODcxLCA5MTc2MjEsIDM0MzYsIAorICAgIDY2NzgwLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDQyNjE1LCA2NjQwNywgNjk5OTEsIDY3NTk4LCA5ODMzMzYsIAorICAgIDAsIDAsIDY1NTkxLCA0MTU4MSwgNjU5MTYsIDE0NTMsIDEyMTE4OSwgMTIxNDU4LCAxMjc4NTksIDg1MDAsIDQyMjIyLCAKKyAgICAxMDEwNDcsIDczNzQzLCAxMjAxNDMsIDQzMTcsIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDEwMDY5NywgMTI3ODMzLCA2NzYwNiwgCisgICAgMTE5MDgzLCAxMjEwODMsIDQyMjE3LCAxMzEwMiwgMTI4NzM2LCA2NjAwMywgNjY3MiwgMCwgMCwgNjY4ODAsIDc3OTEyLCAKKyAgICA2Mzg0MSwgOTYxMywgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCA2NDUyMCwgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgCisgICAgMTAyMjgsIDY0OTU3LCAxMTI4MSwgMTI4MzEyLCAzODA3LCAxNDY5LCA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCAKKyAgICA0MjM3MiwgNzI3ODYsIDk1OTgsIDkwNCwgMzUyLCA0MjIyNSwgMTQ1MSwgODA2MSwgODQ1MywgNDEzNCwgODM0ODUsIAorICAgIDY3MjIzLCA2NjU3NiwgMTI3OTE2LCAxMjc1NjgsIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjUyMzUsIDEyODQ2LCAKKyAgICAxMjcyOTEsIDY4MDQwLCAxMTkxOSwgNjQ5NjIsIDEwMDY5NSwgNDM3MzksIDEwMTA0MSwgODUxMSwgOTQ2MCwgODIzLCAKKyAgICAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgNDI3ODMsIAorICAgIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgNzAzMzQsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCAKKyAgICA5ODIxLCA2NDMwNCwgMTI3MzY5LCA1MTUyLCAxMTA0OCwgNzUzMywgNjgzNjYsIDY0NDEwLCA5MjMwNSwgMTI3ODUyLCAKKyAgICA0MzIzLCA3MDI3NiwgOTI2NjksIDcxMzMyLCAxMjAxNTgsIDQyNTg3LCA0MjIxNCwgNDEzOTQsIDExMTg4LCA0NzYzLCAKKyAgICA0MTEyLCAxMTg5MzUsIDAsIDUyNjAsIDQzMTQzLCA5NDAzOCwgMzI2LCAxMjAxMzEsIDY4NDIzLCAxMTkyMTgsIDEwNzcxLCAKKyAgICAyODc2LCA3NDA3NCwgOTI1MzAsIDEyODQ2MCwgNDEzOTgsIDczODIsIDk4MDIsIDEyNzA3NywgMTI3MDc2LCA0NTMsIAorICAgIDQxMzk2LCAxMjA1MjQsIDEzMTU5LCAxMjE0MCwgOTU3MiwgMTI5MDg1LCA3MDAzLCAxOTQ4ODMsIDQyMzM0LCA3NzA0LCAKKyAgICAxMjUwNjksIDEyNTAyMCwgNDMxNDQsIDQxMjMsIDg0OTQsIDQzMTQ2LCA5OTc3LCAwLCAxMjEyODMsIDY1NzU5LCAxMDc2NSwgCisgICAgNjQwNjEsIDQ0NjUsIDk4MDgsIDY0MDU2LCA2NTU4MiwgNDEyNiwgMCwgOTUyMSwgOTU4OSwgNjQ3NTUsIDEyNTIwMCwgCisgICAgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDE5NDk4MCwgOTI5NjgsIDcyODQ3LCA2NDUxNCwgMTE1MjgsIDY0MDI0LCAxMjgwNzIsIAorICAgIDY3OSwgNjQwMTMsIDEyOTMxNCwgNTg1MCwgNzU4LCA3NTM2LCAxMjA1MzgsIDkyMjM0LCA0MTQ0MSwgMTA2OTMsIDY0MDA2LCAKKyAgICA3NTA0NCwgNjQwMDUsIDQwNTgsIDExOTAxOSwgMTI2NDg3LCA2NDY2MCwgMTI4MTc2LCAxMTkwNTAsIDAsIDE5NTAyMywgCisgICAgMTEzOSwgNDMyOTgsIDY0MDI3LCA2NDAyOSwgODk3MCwgMCwgOTkzNCwgMTI4Njg1LCAxMDc3NCwgNjcxMDQsIDQyMjAxLCAKKyAgICAxMjQyMSwgMTE5MTA5LCAxMjUyNzAsIDE4NTIsIDMwNTcsIDY0MDQ2LCA3Mzc0NCwgNjQwMzQsIDY0MDM5LCA2ODA2NSwgCisgICAgMTI3MDc1LCA5ODM2OTAsIDcyNzczLCA5MjMyMiwgNzY0NSwgMTI4NTQsIDcyNzcyLCAzNDk2LCAwLCAxMjEzMjMsIAorICAgIDExMzcxMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIDEzMzA5LCAxMTU3MCwgCisgICAgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDkyOTEzLCAxMDE4LCAxMTg5NzAsIDEyOTA3NSwgMTk0ODk3LCAxNjgyLCA0Mzg2MywgCisgICAgMTk0ODk2LCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCA2NzcxNywgNzQzNTgsIDczODE0LCAxMTQxMiwgNjc2OCwgMTA3MjgsIAorICAgIDExOTk4MiwgNzEzMTYsIDcxMDk5LCA0MzMxMSwgNjQ5NjYsIDExNTc3LCAxMjc4MzIsIDQzMDQwLCAxODMzLCAxMTU3NiwgCisgICAgNzAwNTQsIDc0Nzc5LCAwLCAxODUsIDY1MDg1LCA3NDUzMywgNjQ3NTQsIDExOTMzNCwgNzUzNSwgODA4NSwgNDI1MjUsIAorICAgIDExOTk0NCwgOTc0OSwgNDE3MDEsIDYxMzEsIDE5NDksIDQxMTcsIDc4NDcsIDEyMDQ4OSwgMTIwOTk3LCA2NDQ4MywgCisgICAgNjU2OTMsIDk4MzcxMSwgMTI3MTIwLCA3NDI4OCwgNjk2OTUsIDQyMjQwLCAxMjg1ODcsIDEyMTM1MiwgNDI4NjQsIAorICAgIDEwMTAzNywgNDMxNjgsIDQxODY4LCAxMTg0LCAxMjEyODUsIDgxNSwgMTE0ODQsIDEyNzUzNSwgNjc4NDAsIDk4MzY1MSwgCisgICAgMTI5MzQwLCA2NjE5NywgOTgzNDc0LCAxMDk4NiwgNjQ2ODMsIDEyODU0OSwgMTI4NDU0LCAzNDU1LCAxMjY1MzAsIAorICAgIDExOTY2NCwgOTg3OSwgMCwgOTgzMjE1LCA0MTU4LCA3MDMwNywgNjgxNjYsIDAsIDEyODA5MSwgMTk0OTgyLCAwLCA2Njc5OSwgCisgICAgMzMyLCAxMTg4MDgsIDgzMzY4LCA1MTQyLCAyNDA3LCA2OTY0MywgNDIxOTksIDkyMzg2LCA5MjQwNCwgNzQzNzMsIDgzMzcyLCAKKyAgICA1NTIxNywgNzE0NTcsIDYzODcwLCA0MzE2MywgMCwgOTE3NzYzLCAxMjk4NSwgNDI4NjcsIDE4MzQsIDEyMDM4NywgOTI0NjEsIAorICAgIDY5ODE3LCAxMDk0MCwgNjUyNDksIDcwMzg1LCA4NjYyLCAxMjAzMjQsIDAsIDI2NTIsIDEyMDUyNywgNzE2NCwgMTA3ODQsIAorICAgIDE5NTA5MywgNjc2NzQsIDkxNzk0MiwgODMzNTksIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCA5MTc1MDUsIDE4MjgsIDc0NDc0LCAKKyAgICAxMjAwMTksIDY4MDc4LCA4NTMxLCAxMjQ5OSwgNjI4MCwgMTIzMjQsIDcyNDM0LCA2NTIzOCwgNjgzNzQsIDQ4MzIsIAorICAgIDY1NTczLCA0Mzg1MSwgNjI3OSwgMTI1MDgsIDEyOTA0LCAxMjUwMiwgOTE2MSwgMTI4NTU1LCAxNjIwLCAxMTI0NywgMzYwMSwgCisgICAgMTIxMzAxLCA4MzM1MywgNjcyNDYsIDYwOSwgMTE1NTUsIDgzNDU2LCAxMjQ5NiwgMTE5ODAsIDc0MTgxLCA0MzQzLCAKKyAgICAxMjUwNSwgODI5NjAsIDEyNzg2MywgMTI1MjU4LCAxMTM3NywgMjM5LCAxMjgxMTQsIDYzNywgMCwgMTI4Njc4LCA0MjY3MSwgCisgICAgMCwgOTMwMzIsIDgzMDk1LCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgNzI5OCwgMTI4MjU2LCA5MTc2MDAsIDk0MDYyLCAKKyAgICAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCA5ODMyMDYsIDQyODE4LCAxMjY2MzIsIDcwMzA2LCAxMjA0OTAsIDcwMzMzLCAKKyAgICAxMTkxMzcsIDE1MDYsIDQzNTYyLCAxMTk5MTMsIDkyNDkxLCA2ODA3NiwgMTI2NTEsIDEyMDkxNywgNjQ2MjgsIDc0NTE3LCAKKyAgICAxMjA1OCwgNzQwODQsIDE5NDYzMywgNzQ5NCwgMTI4NzgwLCA0OTI0LCA2NTU5MiwgMTE4ODQ0LCAxOTQ4MjMsIDEyNzA4OCwgCisgICAgMzU1LCA5NzE5LCA2Njc2MiwgMTMwNjYsIDY0Nzk2LCA3ODY2MywgOTgzMjk3LCAxMjAzMywgNDIxNzgsIDE5NDc1NCwgCisgICAgNjk3NjAsIDQyNTcxLCA5MjYzNSwgMTE0MzAsIDAsIDcwMjk5LCAxMjE1MDgsIDEyNDk1MSwgNjgzMjQsIDMxNzgsIAorICAgIDEyNjQ4OCwgMTI4NjMzLCA5MjcwNCwgOTE3NTY2LCA5MDgwLCAxMjA5NDMsIDY3Njk3LCAxOTUxMDEsIDY4MjA5LCA3MjQxOCwgCisgICAgMTEwODIsIDcxNDg1LCA1Njk5LCA4MzM3MywgNjYwMDAsIDk0ODgsIDY1MTY2LCAxMTkxMTIsIDcwNDc3LCAxMTE3MCwgCisgICAgNjg2NjIsIDEwMDUwNSwgNzEzMTMsIDAsIDUyNjUsIDY5MjM1LCA4MzM4NCwgMTE0ODcsIDY3ODU4LCAxMjQ2NCwgOTgzMzY1LCAKKyAgICA0MzA0NSwgOTgzMjAxLCA3MDM0NSwgNDMzNDUsIDEyMDY1NywgMTA3NzAsIDExODk5NCwgNjgwNywgNDY1LCA5ODI5LCAKKyAgICA2OTk5NywgNzQzNDgsIDEyMTQwMywgNDMzNDYsIDgxMTYsIDc5NSwgMTIwMzUyLCA3MjQxMiwgMTI0NjIsIDEwOTMwLCAKKyAgICAxMDgzMSwgMTIxMzIwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgOTMwNTYsIDEwMTEyLCA5ODM5MzMsIDEyNDY4LCA4NjA3LCAKKyAgICAxMDA4LCAxMTg5NDgsIDEwMDkyLCAxMjA1MzksIDEyODg1MSwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgMTc2NiwgMTEyODIsIAorICAgIDExOTk2LCAxODIwLCA0NTQ3LCAxMDA3MDksIDExMjAyLCAxMjAyNDMsIDEyODM0NSwgMTMyMjMsIDc0OTM0LCA2NDU5NSwgCiAgICAgMTI3Mjk0LCA4MzM3NCwgNjg0ODksIDQzNDUsIDEyNjE2LCA5MTc3ODQsIDEyODk0NywgOTgzMTU1LCA3NDQ2NywgMCwgCi0gICAgOTgzODE5LCAxMjgyOTEsIDUzODIsIDEyNzc3OSwgMCwgNjcyMzMsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIDE5OTIwLCAKLSAgICA2OTg5NywgNjY1MTAsIDM1OTAsIDE5NDgzNSwgMTEzMCwgOTE3NzY2LCAxMjA5NzcsIDQyMDE2LCAxMTgyMywgNDMwMjMsIAotICAgIDEyMTAwMiwgMTE4ODk2LCA3NzQyLCAxMjczNzQsIDEzMjgwLCA3MTMyMywgOTMyNiwgNzM4MjYsIDUzMTAsIDQzNTA5LCAKLSAgICA3ODU4NCwgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgNjQ3NTcsIDg1NjgsIDE5NDY4NCwgMTIwNDk2LCAKLSAgICA3MzgxNiwgODMwNjAsIDEyODQxOCwgNDI2NzAsIDAsIDExNjIxLCAxMjQ2MCwgMTMyNiwgMTIwNjMxLCA4MzM5MywgNDMwNjMsIAorICAgIDczOTU1LCAxMjgyOTEsIDUzODIsIDEyMTM5MCwgMCwgNjcyMzMsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIDE5OTIwLCA2OTg5NywgCisgICAgNjY1MTAsIDM1OTAsIDE5NDgzNSwgMTEzMCwgMTI4Njg5LCAxMjA5NzcsIDQyMDE2LCAxMTgyMywgNDMwMjMsIDEyMTAwMiwgCisgICAgMTE4ODk2LCA3NzQyLCAxMjczNzQsIDEzMjgwLCA3MTMyMywgOTMyNiwgNzM4MjYsIDUzMTAsIDQzNTA5LCA3ODU4NCwgCisgICAgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgNjQ3NTcsIDg1NjgsIDE5NDY4NCwgMTIwNDk2LCA3MzgxNiwgCisgICAgODMwNjAsIDEyODQxOCwgNDI2NzAsIDEyNzUzOSwgMTE2MjEsIDEyNDYwLCAxMzI2LCAxMjA2MzEsIDgzMzkzLCA0MzA2MywgCiAgICAgNDMyMzksIDY1Njc4LCAxOTQ4NDAsIDczOTE3LCA3ODQzLCA2OTc4MywgMTE2ODksIDU0MTAsIDU3ODMsIDEwNDY4LCA4NDAzLCAKICAgICA1NDAwLCAxMTU5NCwgMTIwNDA1LCA2ODMzMywgODMzOTAsIDEwNDkxLCA2OTg0MiwgNjQ0MTIsIDAsIDEyODAxMiwgNTU4NywgCiAgICAgNDI4NjUsIDY0NDA0LCA4MjY4LCA0OTIzLCA2NTA4NiwgODk4MSwgMTIzODIsIDQyMTMzLCAxMjA3NTUsIDk3MDYsIDY5NzM4LCAKLSAgICA3MDI5NCwgNjY2MTAsIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgODMzODgsIDQyNzY2LCA4MzM4NywgMjIxMCwgOTk4MywgCi0gICAgMTI4Njg5LCA5NDAwOSwgMCwgMCwgMCwgNzM5OCwgNDE1MTUsIDAsIDExODAyLCA4MDQxLCAxNDYxLCA5MTAsIDExOTEzMywgCi0gICAgMCwgNjc0OSwgMzY1OCwgOTM5NjQsIDEyMDUyNSwgMCwgNzYxNywgMTk0ODQxLCAxMjg4OCwgMTI3OTgzLCA2NzY2OCwgCi0gICAgMTMxNDMsIDAsIDkxOTMsIDExMDk3LCA1NzAzLCAxMjgyNDcsIDQxNTE3LCA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgCi0gICAgMCwgNjU4NjQsIDYyMywgNzgxLCA2NzAsIDEwNjYwLCA1NzY5LCA2MTMsIDc1NDMsIDEyMDI3OSwgNDc3LCA0MTA4MywgCi0gICAgOTI1MjEsIDAsIDU5MiwgMTU3OCwgMTI0NTksIDQzNDQ5LCAwLCAwLCA4MjI1LCAxMjExOTEsIDY1NCwgMTEzNDUsIDY1MywgCi0gICAgNjUyLCAwLCA2NDcsIDgzMjY2LCA2MzMsIDEyMDc0NCwgOTgzODA5LCAxMjY0NzIsIDEyNDgwLCA0MzI0MywgMTk0OTA5LCAKLSAgICAzOSwgMTI0ODcsIDEyMTI0NywgMTIwNTI5LCA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAxMTk2MDcsIDMxOTUsIDU1NTAsIAotICAgIDEyOTEyMSwgNzg5NywgMTI3MDg5LCAxMjAzLCA3NDM5NiwgMTgxMywgNjQ1NDQsIDQxMzExLCAxMjA5MCwgOTgzNjM0LCAKLSAgICAyODc3LCAxMjE1MTgsIDcwNDk2LCAxNjc1LCA2OTg0MCwgMCwgMCwgMTE5MDc4LCAxMDA3MCwgMTA1OTUsIDAsIDExOTA3NywgCi0gICAgMTk0Nzc3LCAxMjExNjIsIDY3MTcwLCAxMjA3OTAsIDExODc4NywgNDMyNDQsIDkyMjMzLCA5MTc4MzUsIDk4MzkxNiwgCi0gICAgMTE5NTYxLCA5ODMwNzgsIDE5NDkxNCwgMTk0OTIxLCAxMjgxNjAsIDk5MzksIDAsIDk4MzE1MSwgNzc4NjAsIDEyODk0OCwgCi0gICAgODM0NDAsIDI3MCwgMCwgMTA3MTQsIDExODk4MywgNzI0MzcsIDAsIDExOTk0MiwgMTE5MzM4LCA2NTM3MiwgNzM4MDMsIAotICAgIDc0MDM4LCA2ODI1MSwgNjI3MywgNjY2NzksIDM2NCwgOTU5NSwgNzE0NDAsIDAsIDAsIDcwNywgMTk0ODM5LCAxMjg0MDksIAotICAgIDkyODIsIDExMTYzLCAyMjQsIDEyODU4OCwgNjg2NzAsIDkzMzIsIDQ5NjYsIDY4Njc3LCAxOTQ1ODYsIDY4NjQ0LCAKLSAgICA5ODMxMzEsIDM4NDEsIDY3MzU3LCA2NzM0MSwgMTA3MzIsIDY4NjQwLCA4NTAsIDQ5NzIsIDEyNzE4MSwgMTI4OTAsIDI5MDksIAotICAgIDY4NjE5LCA0NDAwOCwgNjg2MjcsIDEyMDY5OSwgMTE1NDQsIDEwMjAzLCA5NjA4LCAwLCA5MTc5NDMsIDExOTYyLCAKLSAgICAxMjEzOTcsIDEyNTA3LCAxMTk2LCA2NzY4NCwgNjcxMDAsIDc3NywgMTIwMTg3LCA0Mzc1LCA2NTI3MSwgNjc2NzgsIDAsIAotICAgIDEyMTk4LCA5MTc4ODcsIDY0ODI0LCAxMTkzNDMsIDEyNzI0MywgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCA3MDA3MywgCi0gICAgMjcwNSwgMTI4NjgwLCA0MTUyMCwgMTk1MDk4LCAxMjAzNzksIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgNzQ1MjAsIAotICAgIDI3MDEsIDAsIDEyMDI0MCwgNTc2NywgMCwgMTk1MDE4LCA5ODA5LCA4MzUzLCA2Mzc0NywgNjY3MDEsIDYzNzcyLCAKLSAgICAxMjEyMzMsIDYzNzQ1LCAxNzQ4LCA2Mzc3MCwgMTIxNDE5LCAxMjEwNzgsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIDMwNjEsIAotICAgIDc4NjA5LCA2Mzc2NCwgNjM3ODcsIDkwNjcsIDYwOTYsIDAsIDc2OTQsIDAsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgCi0gICAgMTI3NzgxLCAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIDE1OTEsIDAsIDYzODYsIDYzNzgzLCAxMjA5OTAsIDEyNTA0MSwgCi0gICAgOTI1MzUsIDAsIDAsIDY4MjQ5LCA3NDU3NSwgMTI3MDEwLCA2NTcxOSwgMTMwODMsIDY0NTc0LCA2NTAxMiwgMTIxNDUyLCAKKyAgICA3MDI5NCwgNjY2MTAsIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgNzA3MDEsIDQyNzY2LCA4MzM4NywgMjIxMCwgOTk4MywgCisgICAgMTE5OTYzLCA5NDAwOSwgMTI5Mjk5LCAwLCAxMjg4MTAsIDczOTgsIDQxNTE1LCA5ODM4ODAsIDExODAyLCA4MDQxLCAxNDYxLCAKKyAgICA5MTAsIDExOTEzMywgOTgzMzI3LCA2NzQ5LCAzNjU4LCA5Mzk2NCwgMTIwNTI1LCAxMjczNjMsIDc2MTcsIDE5NDg0MSwgCisgICAgMTI4ODgsIDEwMDUwMSwgNjc2NjgsIDEzMTQzLCAxMjc5NzUsIDkxOTMsIDExMDk3LCA1NzAzLCAxMjgyNDcsIDQxNTE3LCAKKyAgICA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgOTgzNTkzLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgMTA2NjAsIDU3NjksIAorICAgIDYxMywgNzU0MywgMTAwNzg3LCA0NzcsIDQxMDgzLCA5MjUyMSwgMTk0NTkzLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgCisgICAgMTI4NjI4LCAwLCA4MjI1LCAxMjExOTEsIDY1NCwgMTEzNDUsIDY1MywgNjUyLCAwLCA2NDcsIDgzMjY2LCA2MzMsIAorICAgIDEyMDc0NCwgNzI3ODgsIDEyNjQ3MiwgMTI0ODAsIDQzMjQzLCAxOTQ5MDksIDM5LCAxMjQ4NywgMTIxMjQ3LCAxMjA1MjksIAorICAgIDc0MTk5LCAxMjQ4MiwgOTgzNzcwLCAxMjQ4OSwgMTAwOTE3LCAzMTk1LCA1NTUwLCAxMjgxNzIsIDc4OTcsIDEyNzA4OSwgCisgICAgMTIwMywgNzQzOTYsIDE4MTMsIDY0NTQ0LCA0MTMxMSwgMTIwOTAsIDk4MzYzNCwgMjg3NywgMTIxNTE4LCA3MDQ5NiwgCisgICAgMTY3NSwgNjk4NDAsIDAsIDAsIDExOTA3OCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIDE5NDc3NywgMTIxMTYyLCAKKyAgICA2NzE3MCwgMTIwNzkwLCAxMTg3ODcsIDQzMjQ0LCA5MjIzMywgOTE3ODM1LCAxMjUxOTMsIDExOTU2MSwgOTgzMDc4LCAKKyAgICAxOTQ5MTQsIDE5NDkyMSwgMTI4MTYwLCA5OTM5LCAxMjE1MTEsIDEyNTE5NSwgNzc4NjAsIDEyODk0OCwgODM0NDAsIDI3MCwgCisgICAgOTgzMzA5LCAxMDcxNCwgMTE4OTgzLCA3MjQzNywgMCwgMTE5OTQyLCAxMTkzMzgsIDY1MzcyLCA3MzgwMywgNzQwMzgsIAorICAgIDY4MjUxLCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCA3MTQ0MCwgMCwgMCwgNzA3LCAxMTk2NDksIDEwMDQwMCwgOTI4MiwgCisgICAgMTExNjMsIDIyNCwgNzI3OTksIDY4NjcwLCA5MzMyLCA0OTY2LCA2ODY3NywgNzA2NzQsIDY4NjQ0LCAxMjcyMTQsIDM4NDEsIAorICAgIDY3MzU3LCA2NzM0MSwgMTA3MzIsIDY4NjQwLCA4NTAsIDQ5NzIsIDEyNzE4MSwgMTI4OTAsIDI5MDksIDY4NjE5LCA0NDAwOCwgCisgICAgNjg2MjcsIDEwMTAyMywgMTE1NDQsIDEwMjAzLCA5NjA4LCAwLCA5MTc5NDMsIDExOTYyLCAxMjEzOTcsIDEyNTA3LCAxMTk2LCAKKyAgICA2NzY4NCwgNjcxMDAsIDc3NywgMTIwMTg3LCA0Mzc1LCA2NTI3MSwgNjc2NzgsIDEwMTAyNCwgMTIxOTgsIDkxNzg4NywgCisgICAgNjQ4MjQsIDExOTM0MywgMTI2NjA4LCA5NDU0LCA2Mzc3OCwgODY1OCwgNDI1MjgsIDcwMDczLCAyNzA1LCAxMjg2ODAsIAorICAgIDQxNTIwLCAxOTUwOTgsIDEyMDM3OSwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCA3NDUyMCwgMjcwMSwgOTgzMzMzLCAKKyAgICAxMjAyNDAsIDU3NjcsIDAsIDE5NTAxOCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgMTIxMjMzLCA2Mzc0NSwgCisgICAgMTc0OCwgNjM3NzAsIDEyMTQxOSwgMTIxMDc4LCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAzMDYxLCA3ODYwOSwgNjM3NjQsIAorICAgIDYzNzg3LCA5MDY3LCA2MDk2LCAwLCA3Njk0LCA5ODM3NzYsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgMTI3NzgxLCAKKyAgICAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIDE1OTEsIDEyNzE0MCwgNjM4NiwgNjM3ODMsIDEyMDk5MCwgMTI1MDQxLCA5MjUzNSwgCisgICAgMTIyODg0LCAwLCA2ODI0OSwgNzQ1NzUsIDEwMDk5NywgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIDEyMTQ1MiwgCiAgICAgMTY0MCwgMTI0OTUsIDY2NjkxLCA3NjI0LCAzMTM4LCAxMDk5NiwgMTExNzEsIDE5MjIsIDEyNzI3NSwgMTI0OTgsIDEwOTg3LCAKLSAgICA2OTkzNiwgNjk5MzksIDM4OTQsIDY1NTQzLCAxMjkxODMsIDE5NDg0MiwgMTI4MTEyLCA0OTMsIDAsIDQzMTk3LCAxNzE3LCAKLSAgICA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgNjQzMTUsIAotICAgIDkyMTcwLCAxMjcwMzksIDEyNDkzLCA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDgzNTE5LCA2NDkxMSwgODM1MjEsIAotICAgIDIwOTYsIDY1MTIwLCA4MzUxNiwgNzgyMTksIDgzMjcwLCA4Mzc4LCAxMTYzMiwgNjg4MzgsIDY2MjEzLCA2Mzg2NCwgCi0gICAgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgODUwNywgNjYyMzYsIDY2MjExLCA2NjIxOCwgCi0gICAgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDk4MzU1MiwgNzkwOSwgNjYyMzQsIDExNjA1LCA2Mzc1OSwgCi0gICAgMTI3MzA4LCA2NjIwOCwgNjczMzksIDEzMDAyLCA2MzgwMywgMjQ0LCAxMTU0MiwgMTI4OTgsIDEyNDk0LCA3Mzc2MSwgCi0gICAgMTI0OTIsIDEyNjY5LCA5NDA3MCwgMCwgNzQxNTMsIDEyMDMxMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIDEzMDQwLCAKLSAgICA5ODMzNjIsIDg2MTIsIDQ4ODUsIDc0MDUzLCAxMjc4MzAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgMjQ4LCAKLSAgICAxMjkwNjYsIDYzNzk3LCA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDAsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIDAsIDE4NzAsIAotICAgIDc4MDQwLCA0NzAsIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDcwMDI4LCA3ODAzNCwgNDU3OSwgNjkyMzIsIDAsIDEyNTExLCAKLSAgICA3NDQ1MywgMTI1MTQsIDAsIDcxMTMwLCA3MjM5LCA3MDAxLCA4NjIzLCA5NDAxMSwgMTI1MTM3LCAxMjgwNDgsIDczNzgsIAotICAgIDEyNTEyLCAxMTYxNSwgNjEwNCwgMCwgMTIwOTAwLCA2NTksIDYwOTgsIDAsIDEyMjM0LCA4MzUxMSwgNjczNTgsIDgzMTEsIAotICAgIDEyNTEwLCA3NjY5LCAxMzAzOSwgODM1MDksIDEyNTEzLCAxMDIwMiwgMTI0NzEsIDAsIDg3NDcsIDEyMTM4NSwgNzAxOTMsIAotICAgIDEyODM1NCwgMjMyMywgMCwgMjMxOSwgNzc5MTcsIDEyNDc3LCA3NzkxNiwgMjMxMSwgNzY2NiwgNDQxNSwgMjM3LCA2MjgxLCAKLSAgICAxMjcyODAsIDk4MzMxMSwgODMwMjAsIDIzMDksIDEzMTIsIDgxNzMsIDgzMDEzLCAxMjQ2OSwgODMwMTUsIDc4NTA1LCAKLSAgICA2NDMzNSwgMTA2MDksIDgzMDExLCA3ODAwNiwgOTM5NywgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIAotICAgIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDEyNzk5MCwgCi0gICAgNjU0NTEsIDgxODUsIDEyODkzMSwgMTk0ODQzLCA0MzAyNCwgNDMzMzYsIDY3NjU5LCAyMzEzLCAxMjgxNjcsIDc5NDgsIAotICAgIDkyMzYsIDc3OTQyLCAwLCAwLCAxMDU3MCwgNDM0NzMsIDYyODksIDEwNDg0LCA4MzAwNiwgODMwMDcsIDExOTk4LCAxMjA4MiwgCi0gICAgMTA5MjQsIDMxNDcsIDgzMDA0LCA2NjQwNiwgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIDkzODIsIDkzNzksIAotICAgIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc3OCwgOTM3MiwgMTI0NDQsIDc0MjU2LCAwLCAKLSAgICAxMzAxNiwgODIxMCwgMTIxMDYyLCA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgCi0gICAgMTIwNjMwLCA0MTU1LCAxMjEwOTAsIDEyMDcwNCwgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgMTEzODI2LCAKLSAgICAxMjcyMTcsIDk4MzIwMiwgOTkyMiwgNDMzMDksIDExMjExLCAxMjUyNSwgOTgzNDczLCAxMjAxNiwgNjU3NzAsIDk1NDgsIAotICAgIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMTk0Njg5LCAxMjcxOTEsIDExMDMwLCA0MzkxNiwgOTI1NjcsIDY1NjkxLCAKLSAgICA2Mzk5OCwgMTgxOSwgMTA0OTYsIDAsIDAsIDExOTkyMCwgMCwgMTI5MTQzLCAxMjEwNzIsIDEyNTA2LCA5ODM4MzgsIAotICAgIDExMTQ2LCA3MTQ3NywgMTI1MDAsIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgCi0gICAgMTEyMDgsIDEyMDIzNiwgNzgzOTUsIDc4Mzk0LCA3NDA2OSwgNzE0NDYsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMTM3MzIsIAotICAgIDExMDcsIDExMzc0NSwgOTA3NiwgODg2MiwgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgCi0gICAgNzQxNjUsIDc0NzgyLCA0MzQ5OSwgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgMTEzNjY0LCA0OTgsIAotICAgIDY0NDcxLCA3Nzk4NywgOTI5NzQsIDEyNTI5LCA4MDQyLCA0Mzg5OSwgMjM0NCwgMTI1MjgsIDgwMzEsIDI0MTQsIDc0NTA2LCAKLSAgICA2OTcxOSwgMzIzMSwgOTE3ODM2LCA2NDIyLCA2NjUxMiwgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIAotICAgIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIDc4NzM4LCA0MTQzMywgNDcxOSwgNDY5LCA5MTc4MTAsIDQzNjMsIDMzMTMsIAotICAgIDQxNDI4LCA3ODQwNywgMjAyMywgMTc3MiwgNzgyMjQsIDc4MjI1LCA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgCi0gICAgNzQyMzcsIDk5MjAsIDEyMjE1LCA4Mjk3OCwgNDkzMSwgMTk1MSwgMTI0OTcsIDExOTM2MywgOTYwNywgNzAzNjgsIDk2NjMsIAotICAgIDY2ODM4LCAxMTk2MzQsIDY1MDMsIDQxMTEwLCA5ODM0NjcsIDE0OTEsIDY2ODQ3LCAxMjkxNjksIDEyNzMwNCwgNDEwNjEsIAotICAgIDcwNDU0LCAxOTQ4MzgsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3MTE4MSwgNjY0NzYsIAotICAgIDQxMTA4LCA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMTI3MDAyLCA0MTY4NywgMCwgCi0gICAgMTIwNzE3LCAxMjc3NzYsIDk5NDAsIDEyNzI5OSwgNzY5MiwgOTgzODMzLCA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCAKLSAgICA2NTA4MywgNjgzOSwgOTgxNiwgMTI2NTE3LCAxMjUzMiwgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAKLSAgICAxMjAzNTEsIDEyNzI5OCwgNjQxMzksIDc4MjMxLCA2NDExLCAxMjkxMCwgNjc3MTAsIDY2NjQ0LCAxMzAyOCwgNjczNywgCi0gICAgMTI1MzcsIDAsIDQzNTA2LCA2NDEzNiwgMTI1MzYsIDIzNTAsIDEzMDI5LCA3ODIzMywgMTIwOTE0LCA0Mzg5NywgMTMwMzAsIAotICAgIDY3MDIsIDQ1MjcsIDcxMjUwLCAxMjUzOCwgMTI4ODEwLCA5ODM2NDUsIDY1NTk5LCA2NTcxNywgOTk2NiwgOTMwNDYsIAotICAgIDQ5NDgsIDEyNDg0LCA0MDMyLCAxMjExNzcsIDEyNjIzLCAwLCA2MjA3LCA5ODMyMjUsIDYxMTcsIDY1OTMwLCA4NDEyLCAKLSAgICAxMjcxODMsIDc0MzgsIDEyOTYsIDIzMjUsIDQxNTExLCAxMjEwMjAsIDEwMTQ5LCA3NDExOCwgMCwgMTIwMjMzLCAxMjQ4MSwgCi0gICAgMTIxMjgwLCAxMjQ4OCwgNjY3MTMsIDAsIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCA0MjYxOSwgNzM3NjYsIAotICAgIDExOTI0NCwgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgNjUwMzIsIDQxNTEzLCAxMjAyMDksIDExOTI3LCA2NjU4NCwgCi0gICAgNzg1NTksIDc4NTYwLCA3ODU1NywgNzE0NTksIDgzMDM0LCA2NzYwMywgODQ4LCA5ODY4LCA2NzIyMCwgNjQyNCwgNzg1NjgsIAotICAgIDY3MjI2LCA2OTkyMiwgNzAxOTAsIDc4NTYzLCA3ODU2NCwgMjM1MiwgNjcyMTksIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCAKLSAgICA2Nzk3MywgOTgzMTkzLCAxMzAyNiwgNjc2MiwgNzg1NzksIDcwMTkyLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIAotICAgIDgwOTksIDEyNzk4NCwgMCwgMTM0MywgOTE3OTk5LCAxMjA3ODQsIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAwLCA3MjQzNiwgCi0gICAgMTEzNzEzLCAxMTc0MSwgOTE3OTg2LCA3NTA0MywgOTIxNiwgODI2MywgMTEyNzksIDgzMDIzLCA4MzAyNCwgODMwMjUsIAotICAgIDEzMDIxLCA2NDQ5NCwgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCA5OTU2LCAwLCA0Mzk1NCwgCi0gICAgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIDc0MzQwLCAKLSAgICA2OTY4MSwgMCwgNDMwMDEsIDgwMjksIDAsIDAsIDk4Mzc4MCwgMzMzNSwgMTE5MzQxLCA5MjA5LCA5Nzc2LCAxMjA1MjYsIAotICAgIDE5NDc0OCwgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgCi0gICAgNzg1ODEsIDQxNTYsIDAsIDEyNzMyOSwgNjQyMSwgNzgwMzksIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCAKLSAgICA3NDU0MiwgMzMzNywgNDUzNywgNjc4OTUsIDExNzM2LCAwLCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCAKLSAgICA0MzkyNSwgMTMwNDYsIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgOTI3NDUsIDAsIAotICAgIDY4MTksIDEzMDQ5LCA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA2NTgyNywgMTMwNTAsIDk5MjQsIDE5NDc0NSwgNjUwNywgCisgICAgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMTI5MTgzLCAxOTQ4NDIsIDEyMDc5MywgNDkzLCAxMTg5MjUsIDQzMTk3LCAKKyAgICAxNzE3LCA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgCisgICAgNjQzMTUsIDkyMTcwLCAxMjcwMzksIDEyNDkzLCA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDgzNTE5LCA2NDkxMSwgCisgICAgODM1MjEsIDIwOTYsIDY1MTIwLCA4MzUxNiwgNzgyMTksIDgzMjcwLCA4Mzc4LCAxMTYzMiwgNjg4MzgsIDY2MjEzLCAKKyAgICA2Mzg2NCwgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgODUwNywgNjYyMzYsIDY2MjExLCAKKyAgICA2NjIxOCwgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDk4MzU1MiwgNzkwOSwgNjYyMzQsIDExNjA1LCAKKyAgICA2Mzc1OSwgMTI3MzA4LCA2NjIwOCwgNjczMzksIDEzMDAyLCA2MzgwMywgMjQ0LCAxMTU0MiwgMTI4OTgsIDEyNDk0LCAKKyAgICA3Mzc2MSwgMTI0OTIsIDEyNjY5LCA5NDA3MCwgMCwgNzQxNTMsIDEyMDMxMCwgMTI2NTEzLCAxMjA0NzIsIDQ4ODIsIAorICAgIDEzMDQwLCA5ODMzNjIsIDg2MTIsIDQ4ODUsIDc0MDUzLCAxMjc4MzAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgCisgICAgMjQ4LCAxMDEwMTgsIDYzNzkzLCA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDEwMTAxNywgNjM3NTYsIDQyNzg2LCA2NjY5MywgCisgICAgOTE3NTk4LCAxODcwLCA3ODA0MCwgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCA3MDAyOCwgNzgwMzQsIDQ1NzksIDY5MjMyLCAKKyAgICAwLCAxMjUxMSwgNzQ0NTMsIDEyNTE0LCA5ODM5NDcsIDcwNjU2LCA3MjM5LCA3MDAxLCA4NjIzLCA5NDAxMSwgMTI1MTM3LCAKKyAgICAxMjgwNDgsIDczNzgsIDEyNTEyLCAxMTYxNSwgNjEwNCwgMTAxMDExLCAxMjA5MDAsIDY1OSwgNjA5OCwgMTAwOTQ4LCAKKyAgICAxMjIzNCwgODM1MTEsIDY3MzU4LCA4MzExLCAxMjUxMCwgNzY2OSwgMTMwMzksIDgzNTA5LCAxMjUxMywgMTAyMDIsIAorICAgIDEyNDcxLCAwLCA4NzQ3LCAxMjEzODUsIDcwMTkzLCAxMDA5NDYsIDIzMjMsIDEyODE0NywgMjMxOSwgNzc5MTcsIDEyNDc3LCAKKyAgICA3NzkxNiwgMjMxMSwgNzY2NiwgNDQxNSwgMjM3LCA2MjgxLCAxMjcyODAsIDEwMDk0MCwgODMwMjAsIDIzMDksIDEzMTIsIAorICAgIDgxNzMsIDgzMDEzLCAxMjQ2OSwgODMwMTUsIDc4NTA1LCA2NDMzNSwgMTA2MDksIDgzMDExLCA3ODAwNiwgOTM5NywgCisgICAgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIAorICAgIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDEyNzk5MCwgNjU0NTEsIDgxODUsIDEyODkzMSwgMTk0ODQzLCA0MzAyNCwgCisgICAgNDMzMzYsIDY3NjU5LCAyMzEzLCA3NDQ0NiwgNzk0OCwgOTIzNiwgNzc5NDIsIDEyODg5OSwgMCwgMTA1NzAsIDQzNDczLCAKKyAgICA2Mjg5LCAxMDQ4NCwgODMwMDYsIDgzMDA3LCAxMTk5OCwgMTIwODIsIDEwOTI0LCAzMTQ3LCA4MzAwNCwgNjY0MDYsIAorICAgIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCAKKyAgICA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NzgsIDkzNzIsIDEyNDQ0LCA3NDI1NiwgMCwgMTMwMTYsIDgyMTAsIDEyMTA2MiwgCisgICAgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIDEyMDYzMCwgNDE1NSwgMTIxMDkwLCAKKyAgICAxMjA3MDQsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIDExMzgyNiwgMTI3MjE3LCA5ODMyMDIsIDk5MjIsIAorICAgIDQzMzA5LCAxMTIxMSwgMTI1MjUsIDE5NTAzNSwgMTIwMTYsIDY1NzcwLCA5NTQ4LCA2NzY2NSwgNDAzLCA3ODIzMCwgCisgICAgMTEwMjEsIDE5NDY4OSwgMTI1MjUwLCAxMTAzMCwgNDM5MTYsIDkyNTY3LCA2NTY5MSwgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAKKyAgICAxOTQ2NTcsIDExOTkyMCwgMCwgMTI5MTQzLCAxMjEwNzIsIDEyNTA2LCAxOTQ2MDUsIDExMTQ2LCA3MTQ3NywgMTI1MDAsIAorICAgIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgMTEyMDgsIDEyMDIzNiwgNzgzOTUsIAorICAgIDc4Mzk0LCA3NDA2OSwgNzE0NDYsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMTM3MzIsIDExMDcsIDExMzc0NSwgOTA3NiwgODg2MiwgCisgICAgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgNzQxNjUsIDc0NzgyLCA0MzQ5OSwgCisgICAgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgMTEzNjY0LCA0OTgsIDY0NDcxLCA3Nzk4NywgOTI5NzQsIAorICAgIDEyNTI5LCA4MDQyLCA0Mzg5OSwgMjM0NCwgMTI1MjgsIDgwMzEsIDI0MTQsIDc0NTA2LCA2OTcxOSwgMzIzMSwgMTk0NTY5LCAKKyAgICA2NDIyLCA2NjUxMiwgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIAorICAgIDc4NzM4LCA0MTQzMywgNDcxOSwgNDY5LCA5MTc4MTAsIDQzNjMsIDMzMTMsIDQxNDI4LCA3ODQwNywgMjAyMywgMTc3MiwgCisgICAgNzgyMjQsIDc4MjI1LCA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgNzQyMzcsIDk5MjAsIDEyMjE1LCA4Mjk3OCwgCisgICAgNDkzMSwgMTk1MSwgMTI0OTcsIDExOTM2MywgOTYwNywgNzAzNjgsIDk2NjMsIDY2ODM4LCAxMTk2MzQsIDY1MDMsIDQxMTEwLCAKKyAgICAxMjUyMzIsIDE0OTEsIDY2ODQ3LCAxMjkxNjksIDEyNzMwNCwgNDEwNjEsIDcwNDU0LCAxOTQ4MzgsIDEyMTAxNCwgNjUwMjYsIAorICAgIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3MTE4MSwgNjY0NzYsIDQxMTA4LCA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgCisgICAgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMTI3MDAyLCA0MTY4NywgMTI3Mzk4LCAxMjA3MTcsIDEyNzc3NiwgOTk0MCwgMTAwNDE5LCAKKyAgICA3NjkyLCAxMjA2ODAsIDgwMDgsIDQxMTMxLCAzMzAsIDg1NjYsIDY1MDgzLCA2ODM5LCA5ODE2LCAxMjY1MTcsIDEyNTMyLCAKKyAgICA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgNDMyMzUsIDEyMDM1MSwgMTI3Mjk4LCA2NDEzOSwgNzgyMzEsIDY0MTEsIAorICAgIDEyOTEwLCA2NzcxMCwgNjY2NDQsIDEzMDI4LCA2NzM3LCAxMjUzNywgMTAwNDE3LCA0MzUwNiwgNjQxMzYsIDEyNTM2LCAKKyAgICAyMzUwLCAxMzAyOSwgNzgyMzMsIDEyMDkxNCwgNDM4OTcsIDEzMDMwLCA2NzAyLCA0NTI3LCA3MTI1MCwgMTI1MzgsIAorICAgIDEwMDQxNiwgMTI5MzUyLCA2NTU5OSwgNjU3MTcsIDk5NjYsIDkzMDQ2LCA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTIxMTc3LCAKKyAgICAxMjYyMywgMTIwMjA3LCA2MjA3LCAxOTQ3MjYsIDYxMTcsIDY1OTMwLCA4NDEyLCAxMjcxODMsIDc0MzgsIDEyOTYsIDIzMjUsIAorICAgIDQxNTExLCAxMjEwMjAsIDEwMTQ5LCA3NDExOCwgMCwgMTE5NjI1LCAxMjQ4MSwgMTIxMjgwLCAxMjQ4OCwgNjY3MTMsIDAsIAorICAgIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCA0MjYxOSwgNzM3NjYsIDcyNzU3LCA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAKKyAgICA5ODM0NjUsIDY1MDMyLCA0MTUxMywgMTIwMjA5LCAxMTkyNywgNjY1ODQsIDc4NTU5LCA3ODU2MCwgNzg1NTcsIDcxNDU5LCAKKyAgICA4MzAzNCwgNjc2MDMsIDg0OCwgOTg2OCwgNjcyMjAsIDY0MjQsIDc4NTY4LCA2NzIyNiwgNjk5MjIsIDcwMTkwLCA3ODU2MywgCisgICAgNzg1NjQsIDIzNTIsIDY3MjE5LCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgNjc5NzMsIDk4MzE5MywgMTMwMjYsIDY3NjIsIAorICAgIDc4NTc5LCA3MDE5MiwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCA4MDk5LCAxMjc5ODQsIDEyOTM2NywgMTM0MywgCisgICAgMTI4NDM4LCAxMjA3ODQsIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAxMjAyMTAsIDcyNDM2LCAxMTM3MTMsIDExNzQxLCAKKyAgICAxMjkxOTYsIDc1MDQzLCA5MjE2LCA4MjYzLCAxMTI3OSwgODMwMjMsIDgzMDI0LCA4MzAyNSwgMTMwMjEsIDY0NDk0LCAKKyAgICAzMTM2LCAxOTQ3NTgsIDE5NDc1NywgMTk0NzYwLCAxMzAyMiwgNDI3MzcsIDk5NTYsIDEwMDc0NiwgNDM5NTQsIDc0NTUyLCAKKyAgICAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDc0NTgzLCA3NDM0MCwgNjk2ODEsIDAsIAorICAgIDQzMDAxLCA4MDI5LCAwLCA5ODM2MzksIDk4Mzc4MCwgMzMzNSwgMTE5MzQxLCA5MjA5LCA5Nzc2LCAxMjA1MjYsIDEyODQwNCwgCisgICAgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgNzg1ODEsIAorICAgIDQxNTYsIDAsIDEyNzMyOSwgNjQyMSwgNzgwMzksIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCA3NDU0MiwgCisgICAgMzMzNywgNDUzNywgNjc4OTUsIDExNzM2LCA5ODM3ODksIDY4NjA4LCA2NDgyLCA0MjE0LCA3Mzc5MCwgMTE5NDUsIDQzOTI1LCAKKyAgICAxMzA0NiwgODgzOCwgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIDEzMDQ3LCA5Mjc0NSwgMTI1MDQwLCAKKyAgICA2ODE5LCAxMzA0OSwgNjQ5OSwgOTIyNDMsIDEyNDI0LCA2ODYxNCwgNjU4MjcsIDEzMDUwLCA5OTI0LCAxMjgzNzgsIDY1MDcsIAogICAgIDEyNzkxOSwgOTQwNzMsIDEyODA2OSwgMzI3NywgODkyOSwgNDk0NywgNDEwNTUsIDAsIDE5NDcyMiwgMTk0NzIxLCAKICAgICAxOTQ3MjQsIDEzMDQ1LCA2NDYyNiwgNjYwMzQsIDc3NTEsIDE5NDcyNywgODM3MSwgMTIxMDM2LCAzOTk3LCAxMjgwNiwgCiAgICAgODc2OCwgMTMwNDQsIDAsIDEyNDIwLCA0MDI0LCAxMjgwMDAsIDQxMDU0LCAxMDc4LCA5NzU3LCA2OTczNiwgNDEwNTcsIAotICAgIDY4MzA3LCA5MTc4NDIsIDAsIDAsIDk4Mzc5MSwgOTIyMTAsIDkyNDExLCAxMjkzMDMsIDQxNDk2LCAwLCA5MTY1LCAxNTcyLCAKLSAgICAxMTkxMSwgMTI0OTkwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCAwLCA5NjQ2LCAzNzczLCA0MzE4MywgNjQwMSwgCi0gICAgNTgzMSwgMCwgMTIwODY1LCAxMzA0MywgODA1NiwgNzAxMDgsIDY1NjgxLCAyMDgsIDEyNzM4MiwgNDE1MTQsIDAsIAotICAgIDEyMTA0OCwgOTgzODg0LCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIDgyOTcyLCA4Mjk3MywgMzYwMywgCi0gICAgNDExMDksIDIzOTgsIDM1NDgsIDgyOTY5LCA4Mjk3MCwgMTE5OTMzLCA4Mjk2NCwgMzExNSwgOTkxOCwgMTI3ODIzLCA4Mjk0LCAKLSAgICA0MjkxMiwgMCwgMTI3Mjg3LCAxOTQ3MjYsIDQ4NzYsIDY1ODA0LCAwLCAwLCA0MzQ2OCwgMTIxMjIxLCA0MTU1OCwgNDE0NzEsIAotICAgIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgNzg2ODksIDMxNDMsIDE5NDY3NCwgNjcwMSwgCi0gICAgNDE1NTksIDE4OTYsIDY1MjE1LCAxMzA1MiwgMTk0NjgwLCA1NjY1LCA3ODU5NCwgMTE5MDcxLCA3MDI1LCA2Mzk3NCwgMCwgCi0gICAgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgMTIzMTAsIDU2NjIsIDQyMzgyLCAxNTY0LCA3MzkyNCwgMTEyMSwgCi0gICAgNzgzMTksIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgOTgzNTc4LCA2NDc1MiwgNDczMiwgMTk0NjY2LCAxMTU5NiwgNzgxNDIsIAotICAgIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgNjQyMCwgNDIwMjgsIDkyMjk0LCAxMDUwOSwgMjc5NSwgCi0gICAgNDkxMCwgMTI5MTkzLCA2OTIzMSwgNjQ3NTMsIDYyNzUsIDkzOTU3LCAxMTg4MzAsIDYzOTc4LCAxMTA0NCwgMzIyOSwgCi0gICAgNjQyMywgNDI3NzQsIDAsIDAsIDY4NTI2LCAxMjgyMywgMjMzMSwgMTI3Nzg4LCA3MDg1LCA2MTM3LCAwLCA3NTI0LCAKLSAgICAxMjA3MjEsIDkxNzgwOSwgODM0NiwgMTI4NDM4LCA4MzM4LCAxMjgzMTUsIDY1MDQzLCA3Nzk4MiwgODIyLCA3MDQxMiwgCi0gICAgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgODI5NTYsIDc4NjU1LCA2Njg4MiwgODI5NTksIDc4NDg0LCA0MTI2NSwgCi0gICAgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCA0Mzk2MiwgMTEyNzgsIDc4NjMyLCA3NDExMSwgMTI4MDk1LCAKLSAgICAxMjk0NiwgMTIxMDc2LCA3MTkyMSwgMTIwMzQ5LCA2Mjk0LCAzMTQ0LCAxMTM3MDYsIDEyNzk2NywgNjUwMTksIDc0MDc4LCAKLSAgICA3Mzk5MCwgNjUxMTEsIDk4Mzk2MCwgNzQ4LCA0MTA2NywgMjMzMCwgNTM1LCAzMTQ4LCAxMjM3NSwgNzg3OTksIDE5NDYyOSwgCi0gICAgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCA2Nzg2MywgMzU5MywgNzQwNzYsIDgyOTQ5LCAyMzQyLCA4Mjk1MSwgCi0gICAgODI5NDQsIDY1MjA2LCA0ODk0LCA4Mjk0NywgNDg5MCwgMTIxMDU5LCA2NDQzMywgNTgxLCA0ODkzLCA0MjkyOSwgNjU3MSwgCi0gICAgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3ODA0OSwgNjQ2NTEsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIAotICAgIDY5NzAyLCA5ODM5MzcsIDAsIDExMzc1LCA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDQyOTI4LCA0Mjg4MCwgCi0gICAgNDM1ODcsIDEyMTA5OCwgMCwgMCwgNzA0NjEsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgCi0gICAgNjU4NTQsIDQ4NzUsIDY1ODExLCA3NTAyNCwgMTIwMzg5LCA3MTg1NCwgOTM0NCwgODgyNiwgOTI5MTYsIDEyMDM5NSwgCi0gICAgMTMxMDQsIDY3ODI4LCAxMTk5NywgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgODMwOTYsIDY1Njk2LCA3MjQzMiwgMTIxNDEyLCAKLSAgICA2NjIxNywgMTIxMTkwLCA4MzM0LCA5Mjc1NSwgODMyMDcsIDM0NDksIDEyMTI2NCwgMTMxMDAsIDc4NDE0LCA3ODQxMywgCi0gICAgODMyMTYsIDY2NDA1LCA3MDQzMCwgODMwODksIDgzMjAzLCAxMjcyNTAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIAotICAgIDEyNzAxNCwgODMxOTgsIDY3ODI1LCA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgCi0gICAgODM1MTAsIDc4MDU0LCA0OTE3LCA3NDUxNiwgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDgzMTAwLCAyMzYxLCAKLSAgICA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCA3ODA3MSwgOTgzNTc1LCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgCi0gICAgNDA5NzcsIDEwOTYwLCA0MDk2MiwgODMwNSwgMTI1NzMsIDcxMTMxLCA0MDk4MCwgOTgzOTY0LCAxMzIwMiwgMTI3ODE2LCAKLSAgICAxMjU4MiwgNzgyODIsIDk4MzA0OCwgNjk4NTYsIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgCi0gICAgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCA3MDQwMSwgNzAwMzksIDAsIDcwNDYwLCA0OTEzLCA3MTA2MCwgMTI4NTYyLCAKLSAgICA3MTMzMywgNDIzMjYsIDEyMTExOSwgMTI3MjgsIDkyNjg1LCA0MjQ3OCwgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgCi0gICAgMTIwODI5LCA4MzA4MSwgMTI1ODgsIDg4MjEsIDYxNTMsIDI4NjcsIDgzMDg1LCA2NjMxMiwgNjk4LCA4MzA3NiwgODMwODcsIAotICAgIDEwMzU2LCA3MDAxNywgMTI4NTcwLCA2NTEsIDEyNjQxLCA4MzEzOCwgMTI1MDk4LCAxMjA3MTAsIDEyOTA2NCwgNDE1NTIsIAotICAgIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3NDkwNSwgMTI3NTE2LCA3ODQ2MSwgOTI5NjAsIDY2OTI3LCA2NDk0NSwgCi0gICAgNDcxNiwgNDMyNzcsIDEyMDkzMiwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDEyMDkyOCwgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIAotICAgIDEyMDY3NiwgODcwMywgNTQ2MiwgODMxOTUsIDgzMTg1LCAxMDEwMSwgMCwgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCAKLSAgICA4MzE4OSwgMCwgNjYyNTQsIDEyMDgyMSwgNjg0OTcsIDAsIDEyODY1NCwgMTEzNzk5LCA4MzE1OSwgNzQwNTAsIDQyNjUxLCAKLSAgICAxMjczNzEsIDAsIDAsIDgzMjI1LCA4MzIxOCwgMTIyNzgsIDc1MDExLCAxMjg0MDUsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAKLSAgICAxMjg5OSwgODMxNTUsIDAsIDI2OTksIDEyOTMwNCwgNzM4NDUsIDI5ODUsIDgzMTQ5LCA2ODY0OCwgODMxNDYsIDEyMTkyLCAKLSAgICAxMTkzMTQsIDAsIDY2NDg5LCA5ODI3LCAxMTkzMTAsIDg2MDksIDExOTMwOCwgNjc0MjYsIDExOTMwNiwgMTE0ODEsIAotICAgIDQxMjEwLCAxMTkzMDUsIDAsIDM1LCA3MDgzOCwgNjc0MzEsIDY2Njk0LCA2ODQ3OSwgNzg0NzcsIDY3NDI4LCA0MzU5NiwgCi0gICAgNjA5MCwgNjQyNTcsIDc4MTIsIDEwNTM0LCAwLCA3ODQ4NSwgNzM4NDgsIDY3OTc1LCA0MjcyLCA3ODMyMSwgNDA5NjcsIAotICAgIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgCi0gICAgNjgyMTYsIDE5NDg3MSwgMTIxMzkwLCA1MjQ0LCA0MTg5LCA5MjY5NywgNjc1OTYsIDEyNzUwNCwgNDE4OCwgMTg3OSwgCi0gICAgNzA0NjMsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDIyNzksIDEyNzEwMCwgOTE3ODI3LCA2NTU1NSwgMTI1NzQsIDAsIAotICAgIDkyNzQ5LCA5Mjc1MywgNzQ0OTAsIDEyNzA5OSwgMTE4MzgsIDc1MDAxLCAwLCAwLCA0MjY4MiwgMTI1NzgsIDEyNzIwLCAwLCAKLSAgICA0MTIyNywgMCwgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDY5OTUwLCA5MTc5NTAsIDcyNTEsIDAsIDEyMDM4MiwgMTE4ODUwLCAKKyAgICA2ODMwNywgOTE3ODQyLCAxMjc4OTcsIDAsIDk4Mzc5MSwgOTIyMTAsIDcyNzM1LCAxMjkzMDMsIDQxNDk2LCAxOTQ1NzQsIAorICAgIDkxNjUsIDE1NzIsIDExOTExLCAxMjQ5OTAsIDExODg0MiwgMjM0NiwgMTMyNzAsIDg5NTgsIDk4MzQxNiwgOTY0NiwgMzc3MywgCisgICAgNDMxODMsIDY0MDEsIDU4MzEsIDE5NDcyMywgMTIwODY1LCAxMzA0MywgODA1NiwgNzAxMDgsIDY1NjgxLCAyMDgsIAorICAgIDEyNzM4MiwgNDE1MTQsIDEyMTEyNCwgMTIxMDQ4LCA5ODM4ODQsIDEwNjk5LCA2NDA4LCA5MjIyNywgNzgyNSwgNTY2MSwgCisgICAgODI5NzIsIDgyOTczLCAzNjAzLCA0MTEwOSwgMjM5OCwgMzU0OCwgODI5NjksIDgyOTcwLCAxMTk5MzMsIDgyOTY0LCAzMTE1LCAKKyAgICA5OTE4LCA3MjcyMywgODI5NCwgNDI5MTIsIDE5NDc0NSwgMTI1MTg1LCAxMjY0ODMsIDQ4NzYsIDY1ODA0LCAwLCAxMDA1ODMsIAorICAgIDQzNDY4LCAxMjEyMjEsIDQxNTU4LCA0MTQ3MSwgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIDEzMDUxLCAKKyAgICA3ODY4OSwgMzE0MywgMTk0Njc0LCA2NzAxLCA0MTU1OSwgMTg5NiwgNjUyMTUsIDEzMDUyLCAxMTk5MzAsIDU2NjUsIAorICAgIDc4NTk0LCA4MzEyOSwgNzAyNSwgNjM5NzQsIDEwMDQ2NCwgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgCisgICAgMTIzMTAsIDU2NjIsIDQyMzgyLCAxNTY0LCA3MzkyNCwgMTEyMSwgNzgzMTksIDYzOTU5LCA5ODMxODQsIDk5NDIsIDEzMjMxLCAKKyAgICA5ODMyNTAsIDY0NzUyLCA0NzMyLCAxOTQ2NjYsIDExNTk2LCA3ODE0MiwgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgCisgICAgNjQ3NzIsIDQyMDI0LCA2NDIwLCA0MjAyOCwgOTIyOTQsIDEwNTA5LCAyNzk1LCA0OTEwLCAxMjkxOTMsIDY5MjMxLCAKKyAgICA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCA2NDIzLCA0Mjc3NCwgMTAwNDU1LCAwLCAKKyAgICA2ODUyNiwgMTI4MjMsIDIzMzEsIDEyNzc4OCwgNzA4NSwgNjEzNywgMCwgNzUyNCwgMTIwNzIxLCAxMTM3MDMsIDgzNDYsIAorICAgIDc4ODAyLCA4MzM4LCAxMjgzMTUsIDY1MDQzLCA3Nzk4MiwgODIyLCA3MDQxMiwgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgCisgICAgODI5NTYsIDc4NjU1LCA2Njg4MiwgODI5NTksIDc4NDg0LCA0MTI2NSwgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCAKKyAgICA0Mzk2MiwgMTEyNzgsIDc4NjMyLCA3NDExMSwgMTI4MDk1LCAxMjk0NiwgMTIxMDc2LCA3MTkyMSwgMTIwMzQ5LCA2Mjk0LCAKKyAgICAzMTQ0LCAxMTM3MDYsIDEyNzk2NywgNjUwMTksIDc0MDc4LCA3Mzk5MCwgNjUxMTEsIDkxNzk1NCwgNzQ4LCA0MTA2NywgCisgICAgMjMzMCwgNTM1LCAzMTQ4LCAxMjM3NSwgNzg3OTksIDEyOTMxMywgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCAKKyAgICA2Nzg2MywgMzU5MywgNzQwNzYsIDcyNzUwLCAyMzQyLCA4Mjk1MSwgODI5NDQsIDY1MjA2LCA0ODk0LCA4Mjk0NywgNDg5MCwgCisgICAgMTIxMDU5LCA2NDQzMywgNTgxLCA0ODkzLCA0MjkyOSwgNjU3MSwgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3MDczNSwgCisgICAgNjQ2NTEsIDc4MDQ3LCA5MTc4MDYsIDEwMTE5LCA2NDE1LCA0Mjg5MywgOTgzMDY4LCA2OTcwMiwgOTgzOTM3LCAwLCAKKyAgICAxMTM3NSwgNjQ3NDYsIDIzMzIsIDc4MDYzLCA0MTIsIDc4MDYxLCA0MjkyOCwgNDI4ODAsIDQzNTg3LCAxMjEwOTgsIDAsIDAsIAorICAgIDcwNDYxLCA2NTE5NywgNzgwNjYsIDEyMjAzLCA3ODA2NCwgNzgwNjUsIDg5MTMsIDY1ODU0LCA0ODc1LCA2NTgxMSwgCisgICAgNzUwMjQsIDEyMDM4OSwgNzE4NTQsIDkzNDQsIDg4MjYsIDkyOTE2LCAxMjAzOTUsIDEzMTA0LCA2NzgyOCwgMTE5OTcsIAorICAgIDEyMDM5MywgNzgwNzUsIDAsIDMxMzQsIDgzMDk2LCA2NTY5NiwgNzI0MzIsIDEwMDYzMSwgNjYyMTcsIDEyMTE5MCwgODMzNCwgCisgICAgOTI3NTUsIDgzMjA3LCAzNDQ5LCA4MzIxNCwgMTMxMDAsIDc4NDE0LCA3ODQxMywgODMyMTYsIDY2NDA1LCA3MDQzMCwgCisgICAgODMwODksIDgzMjAzLCAxMjcyNTAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIDEyNzAxNCwgNzA3MDksIDY3ODI1LCAKKyAgICA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgODM1MTAsIDc4MDU0LCA0OTE3LCA3MDY4NiwgCisgICAgNzI4MTYsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDgzMTAwLCAyMzYxLCA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCAKKyAgICA3ODA3MSwgMTk0NjkzLCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgNDA5NzcsIDEwOTYwLCA0MDk2MiwgODMwNSwgCisgICAgMTI1NzMsIDcxMTMxLCA0MDk4MCwgOTgzOTY0LCAxMzIwMiwgMTI3ODE2LCAxMjU4MiwgNzgyODIsIDk4MzA0OCwgNjk4NTYsIAorICAgIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCA3MDQwMSwgCisgICAgNzAwMzksIDAsIDcwNDYwLCA0OTEzLCA3MTA2MCwgMTI4NTYyLCA3MTMzMywgNDIzMjYsIDEyMTExOSwgMTI3MjgsIDkyNjg1LCAKKyAgICA0MjQ3OCwgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgMTAwNDgzLCA4MzA4MSwgMTI1ODgsIDg4MjEsIDYxNTMsIAorICAgIDI4NjcsIDgzMDg1LCA2NjMxMiwgNjk4LCA4MzA3NiwgODMwODcsIDEwMzU2LCA3MDAxNywgMTI4NTcwLCA2NTEsIDEyNjQxLCAKKyAgICA3MjgwOSwgMTI1MDk4LCAxMDA2MzksIDEyOTA2NCwgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3NDkwNSwgCisgICAgMTI3NTE2LCA3ODQ2MSwgOTI5NjAsIDY2OTI3LCA2NDk0NSwgNDcxNiwgNDMyNzcsIDcyNzQ1LCA3ODQ3NCwgMTIzNDAsIAorICAgIDEyMDU2OCwgNzA3MjEsIDcwNzE5LCA1NTI2NCwgNDEyMTEsIDEyMDY3NiwgODcwMywgNTQ2MiwgODMxOTUsIDgzMTg1LCAKKyAgICAxMDEwMSwgMTIwNDQxLCA3MDA0OSwgODQ3OSwgNDE1MSwgNDE5MzMsIDgzMTg5LCAwLCA2NjI1NCwgMTIwODIxLCA2ODQ5NywgCisgICAgMCwgMTI4NjU0LCAxMTM3OTksIDgzMTU5LCA3NDA1MCwgNDI2NTEsIDEyNzM3MSwgMCwgMCwgODMyMjUsIDgzMjE4LCAKKyAgICAxMjI3OCwgNzA3MTYsIDEyODQwNSwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIDEyODk5LCA4MzE1NSwgMCwgMjY5OSwgCisgICAgMTI5MzA0LCA3MjcxOCwgMjk4NSwgODMxNDksIDY4NjQ4LCA4MzE0NiwgMTIxOTIsIDExOTMxNCwgMTI5MDYyLCA2NjQ4OSwgCisgICAgOTgyNywgMTE5MzEwLCA4NjA5LCAxMTkzMDgsIDY3NDI2LCAxMTkzMDYsIDExNDgxLCA0MTIxMCwgMTE5MzA1LCAxMjUyMDcsIAorICAgIDM1LCA3MDgzOCwgNjc0MzEsIDY2Njk0LCA2ODQ3OSwgNzg0NzcsIDY3NDI4LCA0MzU5NiwgNjA5MCwgNjQyNTcsIDc4MTIsIAorICAgIDEwNTM0LCAwLCA3ODQ4NSwgNzM4NDgsIDY3OTc1LCA0MjcyLCA3ODMyMSwgNDA5NjcsIDQwOTY0LCAxMjQ5ODMsIDEyNzA0LCAKKyAgICA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgNjgyMTYsIDE5NDg3MSwgNzI3MzcsIDUyNDQsIAorICAgIDQxODksIDkyNjk3LCA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCA3MDQ2MywgOTY4LCAwLCA0Mzc0MywgOTgzNjg1LCAKKyAgICA4ODczLCAyMjc5LCAxMjcxMDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAxMjExMDMsIDkyNzQ5LCA5Mjc1MywgNzQ0OTAsIAorICAgIDEyNzA5OSwgMTE4MzgsIDY2Nzg3LCAwLCAxMjA2NjQsIDQyNjgyLCAxMjU3OCwgMTI3MjAsIDk4MzY5OCwgNDEyMjcsIAorICAgIDcyNzY1LCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgNjk5NTAsIDkxNzk1MCwgNzI1MSwgMTEzNzkyLCAxMjAzODIsIDExODg1MCwgCiAgICAgMTE5MTQxLCAxMjg0NjEsIDY2MDE1LCA2NzMzMiwgOTU5LCA4ODg1LCAxMjU2NCwgNjY0NTcsIDc4ODA4LCA5NDY5LCA5NjMyLCAKLSAgICA5MjIzMSwgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDEyODg0MiwgMCwgMTExMzIsIDMxMCwgMTIwOTI0LCA0MTI4MSwgMTA5NzYsIAotICAgIDAsIDcxMzI1LCAxMjgzNjQsIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgOTE3ODIzLCA5MDEyLCAxOTk1OCwgNzQ0MjAsIAotICAgIDY1MDg5LCAxMzIxNSwgMTI3MzAsIDY1MTYzLCA2NDI2MCwgMzc0LCA0MzE5NSwgODE2LCA5Mjc4MywgMCwgODMxOTEsIAotICAgIDQxOTM0LCA3NDY1LCA3NDYxNSwgOTI3NTIsIDEyNzg5NSwgNDcxNSwgNjEwMSwgNzEwODksIDQxOTM2LCA4Mjk2NywgNDg3OSwgCi0gICAgNDM5NjUsIDY1NDQ2LCAwLCAzMDcsIDEyNzE0NywgOTU4NSwgNTM3NCwgMTI3OTYyLCAxMjgwNTksIDAsIDEyOTE4OSwgCi0gICAgMTI2NjE4LCAxMjAzOTAsIDc0OTUzLCA2NTU2NywgMTIwNjE0LCAxOTI5LCAxMjA5ODQsIDEyMTQyLCAxOTQ2OTYsIDEyMjM2LCAKLSAgICA0MTQxOSwgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCA3NTAwMywgNTM3OCwgNzUwMDQsIDEyMDk1NywgNDE0MjEsIDc1MDA1LCAKLSAgICA0NDYyLCAwLCAxMjY1OTksIDEyODA5MiwgODIxLCAwLCAyNDk4LCA1ODAwLCAxMjAxNTcsIDY3NzU4LCAxNzYwLCAyNDIxLCAKLSAgICA0NDY5LCAyMzI0LCA4MjgsIDM2MTEsIDc4NDAwLCA3NTcsIDExODUsIDAsIDc4NzcwLCA0MzU5NywgMTA2MjgsIDc0ODA4LCAKLSAgICA2ODg0OSwgNzk5OSwgNDM5NzEsIDExMjE3LCAxMjEyMjQsIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgMCwgNjQzNzQsIAotICAgIDQzODAsIDEyODI4NCwgODMwNjEsIDk5ODIsIDY0MzI0LCA0MTI0MCwgODYyLCA2NDQ2OCwgNzg0NjIsIDE4MTAsIDM2NzMsIAotICAgIDUxMzcsIDE5NDYxNywgMCwgNzI3NywgNjU2MjIsIDY1MDY5LCA3NTY2LCA2NDY4OCwgNjcxNDMsIDE5NDU5MiwgNzQ5NTcsIAotICAgIDQzOTEyLCAxMjgzODUsIDQ3NDgsIDkyMjI4LCAxMjkxODUsIDE5NDYwMSwgNDIyNjAsIDU4NzEsIDExOTA3NSwgMTIxMjc4LCAKLSAgICA3NDU3NiwgNDQwMTksIDE5NDcyMCwgMTI4MTg5LCAzOTY3LCA3MTA5OCwgMTMxMzcsIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgCi0gICAgOTE3Nzg1LCA4NDEwLCA0NDU0LCA3MjMsIDgzMDg0LCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgNzUwMjIsIDc4MTksIAotICAgIDIzMjAsIDE5NDU4OSwgMzM5LCA0OTY4LCAxOTQ1OTAsIDEyMDM5OSwgODA3NSwgNTUyNzYsIDgzMDU3LCA4MDQ3LCAwLCAKLSAgICA3ODgyNywgMTI2MzQsIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAxMjQ5MzQsIDc0NDUyLCAKLSAgICA5ODM3NjMsIDE1ODQsIDY2NjQ1LCA2MDQ1LCA2NzI5LCAxMjA2NDAsIDY1MjE4LCAxMTU1OSwgMTk0OTgzLCA3ODA2MiwgCi0gICAgNzUzNywgMTI0OTkxLCAxMTM3MCwgMTI1MDkzLCAxMDMzMCwgNzg3OTgsIDEwMzk0LCA5MjIzNiwgNzQxOTQsIDAsIAotICAgIDEyNzkyOSwgOTc4MCwgMCwgMTExMTcsIDc0OTkzLCA3Nzk1MCwgNjcwOTEsIDcwNzQsIDkyNjQ4LCAxOTQ1NzksIDE5NDU4MiwgCi0gICAgMTE0MTQsIDY4NzgxLCAyNTMxLCAxMzAzNCwgMTI5MTU5LCAwLCA0MjExLCAxMjU5LCA3NTE3LCA3MDg2NiwgNzAxOTgsIAotICAgIDgzMTIyLCA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgODMxMjUsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAKLSAgICAxMjEyNTMsIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDc0MjkzLCA3NDUzMCwgNjQwOTgsIDY1NzkzLCAKLSAgICA0NTM1LCAxMjEyNjcsIDQyNzEsIDc4NDE3LCAxMjcwNTksIDY3NjksIDQxNDEwLCAxMjcyNTcsIDY0MjYyLCA2NzY3LCAKLSAgICA0MTQwNywgNjYyNzMsIDkxNzgxNiwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMjA4ODYsIDEyNjYwOCwgNzA4MzAsIDAsIAotICAgIDgzMjMyLCAwLCA2NzY3NSwgOTgzNjk0LCA4MzIzNCwgMTIxMjU0LCA2NDMzOCwgMjU2MywgMTMwMzMsIDI0NywgODMyMjksIAotICAgIDAsIDEyMzM4LCA0NjUxLCA2NzM1NSwgMTEyNzAsIDAsIDc0NjMwLCAxMTkzMywgNzAxMDcsIDAsIDQxOTAzLCA0MzQ0NywgCi0gICAgMTEwMDEsIDczODI3LCA0MjI1NSwgODMyNDMsIDgzMjM4LCA2OTgyMSwgNDE5MDUsIDY3MzUwLCAwLCAxMDc3NSwgOTc5MywgCi0gICAgNTAwOSwgMTI4Nzc0LCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCA2NDUyOSwgNDE0MDgsIDQyODUzLCAKLSAgICAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA2NzM0MiwgMTAyMzYsIDY1OTE4LCA0Mzc4MiwgCi0gICAgNzg3NjksIDc4MDYwLCA2NDUwNiwgNjk2NTIsIDExODkyMSwgNDc0NywgODMyNTEsIDY5ODQ0LCA0MzIwMCwgNTgzMiwgCi0gICAgNzEyMDgsIDgzMjUwLCA1MTQxLCA0MjYwMCwgNzE4NjYsIDQzMjAzLCAxMjcyMDgsIDEyMDEyOSwgNDMyODYsIDAsIAotICAgIDEyODIxMSwgNDM3NzgsIDc2NTcsIDQxMzA1LCA3MTEzMiwgNDM3ODEsIDExMzAzLCA2NTU0NywgMTI4NjA5LCA3MDMxLCAKLSAgICA4NTksIDEyODQ4OCwgODMyNjIsIDgzMjM3LCA2MDU5LCAxMjY5ODUsIDU1MjM1LCAxOTQ4MTcsIDg1MzUsIDEyODYzOCwgCi0gICAgNjUxOTYsIDEyNTA4NCwgNjYwMzIsIDExNDg4LCAxMjA0ODEsIDEyMDc4NiwgNDIyMzMsIDY0MTQwLCA5OTQ2LCA3NjY3LCAKLSAgICAxOTQ3OTIsIDExODIyLCAxMjg1OTEsIDExMTM1LCA5ODM2MDAsIDAsIDE3ODgsIDE1NzksIDEyMDQ4MiwgNzEyOTgsIDAsIAotICAgIDk4MzQ2MSwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgNzEwNjEsIDkyNTQ1LCAxMjg1LCA2NDg4MiwgNDEyNDIsIDcwMDg2LCAKLSAgICA4MzExMSwgMTI2NDAsIDgzMTEyLCA3NDAxLCAwLCAxMjYyNSwgNjgxOTgsIDAsIDcwMDgyLCAzOTQwLCA0MTU5NywgNDM3NTQsIAotICAgIDMzOTYsIDEyNjQyLCA4NjY1LCA5ODM2MTAsIDk4MzYwOSwgMTI2MzAsIDE2NTMsIDkxNzgxNSwgMTAxNTMsIDAsIDYxNjYsIAotICAgIDcwODI1LCAxMTg5ODksIDEyOTQwOSwgODgxNSwgNjY2NzMsIDY1MDQ2LCA5Mjg1LCA5MTMsIDQyMjU5LCAxMTE4MCwgCi0gICAgMTE5MzE4LCAyMTQyLCA2ODQ1NCwgNDI0ODUsIDk0MDEyLCA3ODc4LCA4MjExLCA0MjI5MywgNjQzNzcsIDEyMDQ3OCwgCi0gICAgOTI2NDMsIDEyMTExOCwgMTk0NjczLCAxMjAzMiwgMCwgOTcyNSwgOTgzNDkxLCA3ODQzMSwgNTI2MywgMTI4MTgsIDc4NDMwLCAKLSAgICA0MTkzOSwgMTAwMjIsIDY1Mzg3LCA3ODQxOSwgNDI3NzcsIDEwMTM5LCA5ODAsIDQzNjk4LCA2NTM4NiwgMjIwOCwgNjg4NDgsIAotICAgIDQzNzAxLCA0MzE5OCwgNzE4NCwgOTI1NDIsIDEyODQyMywgMTI4ODc1LCAxMDA4NSwgNzQ5NzksIDAsIDY3Mzk0LCA2NjM0LCAKLSAgICA5MjM3MywgMTI1MDg1LCA4MzQxMywgODA3MiwgMTE5MzIxLCA0MzcwMCwgMCwgODg3MiwgNzc4MywgOTE3OTkxLCAxMjM5OCwgCi0gICAgODIzNywgMCwgMCwgMTIzOTUsIDAsIDEyNjk3NywgNzQ4OTEsIDk5MTQsIDIyMTcsIDkyMzIzLCA3Mzk3NSwgNjM2NywgCi0gICAgNjM1MSwgNjY2ODgsIDkyNzQwLCA2ODc2NiwgMCwgNjQ3MzUsIDQxMjQzLCA5MjE5OSwgNzgwOCwgMTgyOSwgMTI2NTQxLCAKLSAgICA0MTkzNywgNDM1OCwgNDMyNzIsIDYzNTMsIDAsIDAsIDEyMDQyMiwgOTMwNDUsIDE3MTAsIDEyMDE0MCwgMCwgNjU2MDcsIAotICAgIDY3MjM0LCA0OSwgNjYyNywgMCwgNjI1OCwgMTA2ODMsIDc4NjcyLCA5NzQxLCA3ODMyOSwgNTY0OSwgNzg0NDEsIDQzNDQzLCAKLSAgICA2NDQxOCwgMTY0MywgNjUyMTMsIDg0MDUsIDM0NzAsIDY3MjQ0LCAxMzIxMywgNDI0NTIsIDc4MzMxLCA3ODAxMywgNzg0NDUsIAotICAgIDEyNTEyNCwgMTA3MiwgNzg0NTcsIDc4NDUyLCA3ODQ1NCwgNjU3NiwgNDE5ODgsIDQxMTMyLCA2NTY3NSwgMTA4MCwgCi0gICAgNzA4MjQsIDk4ODYsIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCA3MTA4MiwgMTI2MzIsIDEwODYsIDE4NjksIAotICAgIDc4Njg1LCA3NjgwLCAwLCA2NTQ1OCwgMTIwNzE0LCAxMjYzOSwgMzM4MCwgODEyMywgMTA5MSwgMTI2MzgsIDc5NzcsIAotICAgIDQ1MDEsIDQxMDk5LCAwLCA2NjMwOSwgMTIwMTQxLCA5Mjc1OCwgMTQ5NCwgMTEzNzE2LCAxMjY2MTMsIDAsIDExNjkzLCAKLSAgICA3MTI1NSwgMTA0OTQsIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAxMTM3MjcsIDAsIDAsIDc4NzcxLCA2NDU4MiwgMCwgCi0gICAgNzM3OTQsIDY3Mzk1LCA4MDIyLCAxMjA5ODksIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCA2Njg4MywgOTE3OTk0LCA5MzAzNSwgCi0gICAgNzUwMDcsIDU1NzAsIDE4ODEsIDcyMTAsIDEyMDQyNSwgMTAxMiwgNDM3NTIsIDAsIDEyMDcwOSwgNzIwOCwgNjY0NDIsIAorICAgIDkyMjMxLCA3NDc2MSwgNjQzMjMsIDEyNzMzNSwgNzQxMDIsIDIyNjYsIDExMTMyLCAzMTAsIDEyMDkyNCwgNDEyODEsIAorICAgIDEwOTc2LCAxMDEwNjksIDcxMzI1LCAxMjUyNzksIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMTAxMDg3LCA5MDEyLCAKKyAgICAxOTk1OCwgNzQ0MjAsIDY1MDg5LCAxMzIxNSwgMTI3MzAsIDY1MTYzLCA2NDI2MCwgMzc0LCA0MzE5NSwgODE2LCA5Mjc4MywgCisgICAgMCwgODMxOTEsIDQxOTM0LCA3NDY1LCA3NDYxNSwgOTI3NTIsIDcwNjY2LCA0NzE1LCA2MTAxLCA3MTA4OSwgNDE5MzYsIAorICAgIDgyOTY3LCA0ODc5LCA0Mzk2NSwgNjU0NDYsIDAsIDMwNywgMTI3MTQ3LCA5NTg1LCA1Mzc0LCAxMjc5NjIsIDEyODA1OSwgCisgICAgMTAwNDcyLCAxMjkxODksIDEwMDQ3MSwgMTIwMzkwLCA3MDcyNywgNjU1NjcsIDEwMDk2NCwgMTkyOSwgMTIwOTg0LCAKKyAgICAxMjE0MiwgMTk0Njk2LCAxMjIzNiwgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgNzUwMDMsIDUzNzgsIDc1MDA0LCAKKyAgICAxMjA5NTcsIDQxNDIxLCA3NTAwNSwgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMTI1MDMwLCAyNDk4LCA1ODAwLCAKKyAgICAxMDA4MzQsIDY3NzU4LCAxNzYwLCAyNDIxLCA0NDY5LCAyMzI0LCA4MjgsIDM2MTEsIDc4NDAwLCA3NTcsIDExODUsIAorICAgIDEyODI3NCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIDY4ODQ5LCA3OTk5LCA0Mzk3MSwgMTEyMTcsIDEwMDg0OSwgCisgICAgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCA2NDM3NCwgNDM4MCwgMTI4Mjg0LCA4MzA2MSwgOTk4MiwgNjQzMjQsIAorICAgIDQxMjQwLCA4NjIsIDY0NDY4LCA3ODQ2MiwgMTgxMCwgMzY3MywgNTEzNywgMTk0NjE3LCAxMjA0ODEsIDcyNzcsIDY1NjIyLCAKKyAgICA2NTA2OSwgNzU2NiwgNjQ2ODgsIDY3MTQzLCAxOTQ1OTIsIDc0OTU3LCA0MzkxMiwgMTAwODI1LCA0NzQ4LCA5MjIyOCwgCisgICAgMTAwODI2LCAxMDA4MjksIDQyMjYwLCA1ODcxLCAxMTkwNzUsIDEyMTI3OCwgNzQ1NzYsIDQ0MDE5LCAxOTQ3MjAsIAorICAgIDEyODE4OSwgMzk2NywgNzEwOTgsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIDkxNzc4NSwgODQxMCwgNDQ1NCwgCisgICAgNzIzLCA4MzA4NCwgOTY2LCA0NDQ5LCA5MjMzMCwgOTIyMzgsIDc1MDIyLCA3ODE5LCAyMzIwLCAxMjkzMTIsIDMzOSwgCisgICAgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCA4MzA1NywgODA0NywgMTk1MDUwLCA3ODgyNywgMTI2MzQsIAorICAgIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAxMjQ5MzQsIDc0NDUyLCAxMjA0ODIsIDE1ODQsIAorICAgIDY2NjQ1LCA2MDQ1LCA2NzI5LCA3ODQxNywgNjUyMTgsIDExNTU5LCAxOTQ5ODMsIDc4MDYyLCA3NTM3LCAxMjQ5OTEsIAorICAgIDExMzcwLCAxMjUwOTMsIDEwMzMwLCA3ODc5OCwgMTAzOTQsIDkyMjM2LCA3NDE5NCwgMTAwODA4LCAxMjc5MjksIDk3ODAsIAorICAgIDAsIDExMTE3LCA3NDk5MywgNzc5NTAsIDY3MDkxLCA3MDc0LCA5MjY0OCwgMTk0NTc5LCAxMDA0OTUsIDExNDE0LCA2ODc4MSwgCisgICAgMjUzMSwgMTMwMzQsIDEwMDgxOSwgMTI4NTIzLCA0MjExLCAxMjU5LCA3NTE3LCA3MDg2NiwgNzAxOTgsIDgzMTIyLCAKKyAgICA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgODMxMjUsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAxMDA0OTYsIAorICAgIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDc0MjkzLCA3NDUzMCwgNjQwOTgsIDY1NzkzLCA0NTM1LCAKKyAgICAxMDA0OTEsIDQyNzEsIDcyODgxLCAxMDA3OTgsIDY3NjksIDQxNDEwLCAxMDA3OTksIDY0MjYyLCA2NzY3LCA0MTQwNywgCisgICAgNjYyNzMsIDkxNzgxNiwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMDEwODYsIDcyODAzLCA3MDgzMCwgMCwgODMyMzIsIDAsIAorICAgIDY3Njc1LCA5ODM2OTQsIDgzMjM0LCAxMDA1MzQsIDY0MzM4LCAyNTYzLCAxMzAzMywgMjQ3LCA4MzIyOSwgMTAwNzkxLCAKKyAgICAxMjMzOCwgNDY1MSwgNjczNTUsIDExMjcwLCAwLCA3NDYzMCwgMTE5MzMsIDcwMTA3LCAwLCA0MTkwMywgNDM0NDcsIAorICAgIDExMDAxLCA3MzgyNywgNDIyNTUsIDgzMjQzLCA4MzIzOCwgNjk4MjEsIDQxOTA1LCA2NzM1MCwgMTAwODA2LCAxMDc3NSwgCisgICAgOTc5MywgNTAwOSwgMTI4Nzc0LCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCA2NDUyOSwgNDE0MDgsIAorICAgIDQyODUzLCAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA2NzM0MiwgMTAyMzYsIDY1OTE4LCAKKyAgICA0Mzc4MiwgNzg3NjksIDc4MDYwLCA2NDUwNiwgNjk2NTIsIDEwMDc4MSwgNDc0NywgODMyNTEsIDY5ODQ0LCA0MzIwMCwgCisgICAgNTgzMiwgNzEyMDgsIDgzMjUwLCA1MTQxLCA0MjYwMCwgNzE4NjYsIDQzMjAzLCAxMjcyMDgsIDEwMDU0MSwgNDMyODYsIAorICAgIDEyNjQ5NCwgMTIwNzg5LCA0Mzc3OCwgNzY1NywgNDEzMDUsIDcxMTMyLCA0Mzc4MSwgMTEzMDMsIDY1NTQ3LCAxMjg2MDksIAorICAgIDcwMzEsIDg1OSwgOTIzMTMsIDgzMjYyLCA4MzIzNywgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMTk0ODE3LCA4NTM1LCAKKyAgICAxMjg2MzgsIDY1MTk2LCAxMjI5MTAsIDY2MDMyLCAxMTQ4OCwgNzI4MzgsIDEwMDc4OCwgNDIyMzMsIDY0MTQwLCA5OTQ2LCAKKyAgICA3NjY3LCAxMDA1NDksIDExODIyLCAxMjgzNDksIDExMTM1LCA5ODM2MDAsIDAsIDE3ODgsIDE1NzksIDEwMDUwNywgNzEyOTgsIAorICAgIDAsIDkxNzUzNywgOTgzODM5LCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA3MTA2MSwgOTI1NDUsIDEyODUsIDY0ODgyLCA0MTI0MiwgCisgICAgNzAwODYsIDgzMTExLCAxMjY0MCwgODMxMTIsIDc0MDEsIDEwMDc2NywgMTI2MjUsIDY4MTk4LCA4MzE4NCwgNzAwODIsIAorICAgIDM5NDAsIDQxNTk3LCA3Mjk2LCAzMzk2LCAxMjY0MiwgODY2NSwgOTgzNjEwLCAxMjAyMDgsIDEyNjMwLCAxNjUzLCAKKyAgICAxMDA1NjcsIDEwMTUzLCAxMDA3NzcsIDYxNjYsIDcwODI1LCAxMTg5ODksIDEyOTQwOSwgODgxNSwgNjY2NzMsIDY1MDQ2LCAKKyAgICA5Mjg1LCA5MTMsIDQyMjU5LCAxMTE4MCwgMTE5MzE4LCAyMTQyLCA2ODQ1NCwgNDI0ODUsIDk0MDEyLCA3ODc4LCA4MjExLCAKKyAgICA0MjI5MywgNjQzNzcsIDEyMDQ3OCwgOTI2NDMsIDEyMTExOCwgMTk0NjczLCAxMjAzMiwgMTAwNzcxLCA5NzI1LCAxMDA3NzMsIAorICAgIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCA0Mjc3NywgMTAxMzksIDk4MCwgCisgICAgNDM2OTgsIDY1Mzg2LCAyMjA4LCA2ODg0OCwgNDM3MDEsIDQzMTk4LCA3MTg0LCA5MjU0MiwgMTI4NDIzLCAxMDA1MjcsIAorICAgIDEwMDg1LCA3NDk3OSwgMCwgNjczOTQsIDY2MzQsIDkyMzczLCAxMjUwODUsIDgzNDEzLCA4MDcyLCAxMDA3NTIsIDQzNzAwLCAKKyAgICAxMjgyMDIsIDczMDQsIDc3ODMsIDkxNzk5MSwgMTIzOTgsIDgyMzcsIDE5NDg5MywgMCwgMTIzOTUsIDEyMDI3OSwgCisgICAgMTI2OTc3LCA3NDg5MSwgOTkxNCwgMjIxNywgOTIzMjMsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgOTI3NDAsIDY4NzY2LCAKKyAgICA5ODM4NDgsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIDE4MjksIDEyNjU0MSwgNDE5MzcsIDQzNTgsIDQzMjcyLCAKKyAgICA2MzUzLCAwLCAwLCAxMjA0MjIsIDkzMDQ1LCAxNzEwLCAxMjAxNDAsIDAsIDY1NjA3LCA2NzIzNCwgNDksIDY2MjcsIAorICAgIDk4MzEyMCwgNjI1OCwgMTA2ODMsIDc4NjcyLCA5NzQxLCA3ODMyOSwgNTY0OSwgNzg0NDEsIDQzNDQzLCA2NDQxOCwgMTY0MywgCisgICAgNjUyMTMsIDg0MDUsIDM0NzAsIDY3MjQ0LCAxMzIxMywgNDI0NTIsIDc4MzMxLCA3ODAxMywgNzg0NDUsIDEyNTEyNCwgCisgICAgMTA3MiwgNzg0NTcsIDc4NDUyLCA3ODQ1NCwgNjU3NiwgNDE5ODgsIDQxMTMyLCA2NTY3NSwgMTA4MCwgNzA4MjQsIDk4ODYsIAorICAgIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCA3MTA4MiwgMTI2MzIsIDEwODYsIDE4NjksIDc4Njg1LCA3NjgwLCAKKyAgICAxMDEwOTMsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAxMjYzOCwgNzk3NywgNDUwMSwgNDEwOTksIAorICAgIDAsIDY2MzA5LCAxMjAxNDEsIDkyNzU4LCAxNDk0LCAxMTM3MTYsIDEyNjYxMywgMCwgMTE2OTMsIDcxMjU1LCAxMDQ5NCwgCisgICAgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDExMzcyNywgMTI4Nzg5LCAwLCA3ODc3MSwgNjQ1ODIsIDEwMTA5OCwgCisgICAgNzM3OTQsIDY3Mzk1LCA4MDIyLCAxMDEwOTksIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCA2Njg4MywgOTE3OTk0LCA5MzAzNSwgCisgICAgNzUwMDcsIDU1NzAsIDE4ODEsIDcyMTAsIDEyMDQyNSwgMTAxMiwgNDM3NTIsIDAsIDEwMTA5NCwgNzIwOCwgNjY0NDIsIAogICAgIDU1NjksIDE5NTAwNywgNDIzMzksIDkyOTk3LCA2MDYzLCA2Nzg4OCwgNjk5ODEsIDExOTU5NCwgNjA1MywgNjU2MDIsIDAsIAotICAgIDkyMjAxLCA2NDcyNywgOTE2MCwgNzAzMDEsIDAsIDkyOTA1LCA5MjE4MCwgMTA1MDMsIDcwMzg3LCAzNDIzLCAzODcwLCAKLSAgICA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCA5MjIwNCwgOTgzMTE2LCAwLCAKLSAgICA3NDk2MSwgNzgzMzMsIDEyMDExNywgMTIwMTE4LCAxMjAwOTksIDkyMzg1LCA2NTA4NywgNTU3MSwgMzY3NCwgOTc0MCwgCi0gICAgOTEyMSwgNTU2OCwgNzE0NjQsIDEyMDEwOCwgNDIwODUsIDEwMTA3LCA0MjE1OSwgNDI4NzAsIDExMzcwMCwgNTg5LCA3MDUwLCAKLSAgICA5ODM4MDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIDEyNjQ5NywgNzQwOTksIDQyNjQ1LCAKLSAgICA5MjMzMSwgMTIxMzU4LCA4NTgzLCAxMjExMjMsIDU4NDcsIDY5MjgsIDEyODA3NCwgMCwgMCwgMCwgMCwgNjY1OTIsIAotICAgIDEyMjA0LCA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgNDI1NjEsIDEyMDYyNiwgMTI5MTcwLCA2Njg1NCwgODEyMCwgNzAzMTEsIAotICAgIDE5NDU4NSwgMCwgNzAzMDgsIDQxMDYzLCAxMjA0MTcsIDEwNjY0LCAwLCA4MzY5LCAwLCA0NTUxLCAxOTQ5NjQsIDMzNjksIAotICAgIDc0OTcxLCAxMjEwOTQsIDk2NzMsIDY2MzM0LCA2NTU4MCwgMTA0NzgsIDExODk2MCwgMTI1MTcsIDU1NywgOTQ1NywgCi0gICAgMTIwMzQsIDY4NDk2LCA2MzU1LCAxMjUxOSwgNDEwMDQsIDAsIDc0OTM3LCA3NDA5NCwgOTE3ODg4LCAxMjUwNjAsIDc3OTcwLCAKLSAgICA5MjE3MSwgMTI3MjE5LCAxMjgxNzUsIDEyMTExLCAzOTI3LCAwLCAxMjUxNSwgMTQ3NCwgNjc4OTMsIDU0OTIsIDY5MjMsIAotICAgIDkyMjgxLCAxMDQ0MSwgNzM4MzYsIDAsIDQzOTkwLCA1NDkzLCAwLCA3NDMxOSwgMCwgNjY2MzUsIDEyMDE5LCAwLCAxNjE4LCAKLSAgICAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCAxMjY2MzYsIDU4NTMsIDEzMDYzLCAxMDM2MywgOTgzODk4LCAxMjk1NiwgCi0gICAgMTEzNjY2LCAxMjA3MjksIDExMzE0LCA5MTc1ODIsIDEyMDYwLCAxMjg2NDgsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMCwgCi0gICAgMTA1MTQsIDY1NTE3LCA3NDM5NSwgMjcwNywgODMwOSwgMCwgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCAKLSAgICA3ODM5NiwgNjgyNDcsIDI2OTUsIDQyMTcxLCA3MDgwOSwgNjgzMzQsIDAsIDY3NjE3LCAxMTg5NzEsIDAsIDI2OTMsIAotICAgIDEyMTI1LCAxMjc2NiwgMTIwNDA5LCAxMTY0LCAxMTM3MjksIDcwMjgzLCA0MTkxOCwgNzc4NDksIDY3MTUwLCA4Njg3LCAKLSAgICA2NjAwOSwgMTIxNzgsIDcwNTMsIDkyNTQwLCA3NDY5LCAwLCA1MjQ4LCAxMjIxOCwgNjk5ODgsIDY0MjcsIDQyODg0LCAKLSAgICA0MTEyMywgMTExNzYsIDAsIDQyODczLCA0MTEyNiwgOTk5MSwgNDExMjgsIDc0MzcxLCAxMjcwMzEsIDk4MzkzMiwgOTg3MywgCi0gICAgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAyMDUzLCA0Mjg0MywgNjU5MSwgOTM0MCwgMTI4ODQxLCAxNTg5LCAxMjg2OTEsIAotICAgIDI5NiwgNjc3MTIsIDc4ODUyLCAxMjE0MDksIDY3ODQxLCA3NDM3MCwgMTI4NTA0LCA4OTIyLCAxMjgwNjgsIDQzODI5LCAKLSAgICAxMjcwMCwgNzQ4MzYsIDAsIDEyNTc5LCAwLCAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgMTMyNjIsIDY1NTkwLCA1Mjk5LCAKLSAgICA3ODgzNywgMTE0NzMsIDU0NDksIDEyNTIsIDEyNzMyOCwgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIDUyOTUsIAotICAgIDkxNzU2OSwgNjgzMjAsIDEyMjMsIDE2NDIsIDE3NCwgNzgzOTksIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCA0MTQxMywgCi0gICAgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCA0MTQyNSwgNzQ1OTgsIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgODA3MCwgCi0gICAgNjE1MCwgNjYzNiwgNDM3MCwgMTI4NjE5LCAxMjkxNTgsIDc0MTc4LCA3NDU4NywgNzQxMTcsIDE5NTA5NCwgMCwgMTEzNzQ4LCAKLSAgICA0OTg2LCAxMjE4OSwgMTI3NTEyLCA2NzY0OCwgMTIwNDk5LCA5NDAwMSwgNDI1NywgMTIxMDQsIDcxMTc2LCA2MjIwLCAKLSAgICA5MDA0LCA2NTU2MSwgOTgzODgxLCA3Nzk0OSwgMCwgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIDgzNDUzLCA2OTY3OSwgNjk2ODQsIAotICAgIDk4OTAsIDc4NTYxLCAxMjk3MSwgNzg0NTMsIDkyNTU2LCA3Mzg5OCwgMTE5NzksIDcwMDUxLCA3MTg5NywgODM0NTEsIDAsIAotICAgIDk2MzUsIDEyNjAwLCA4ODcxLCA2NzM2NiwgNjg0OTEsIDAsIDY0NjksIDc0MjI3LCAxMTg5MDAsIDY1MzA0LCA0Njc5LCAKLSAgICAxMDIzMCwgNjQzMDAsIDY0ODY3LCAzNDI3LCA0MjQwLCA2NzM3NiwgNjczNzUsIDY3Mzc0LCA2NzM3MywgNDI5MTYsIAotICAgIDEyOTE1NSwgMTI4Mjc5LCA2NzM3NywgNzI4MiwgNzg3MjgsIDY1NzMzLCA0NDQ1LCA2NzM3MiwgNjczNzEsIDM0OTQsIAotICAgIDY3MzY5LCA2NTU1LCAxMjkxNDgsIDc3OTc2LCAwLCAwLCA3ODU2NiwgMCwgOTgzMTg5LCA2NTg5OCwgOTgzMjQ2LCA2NTMxMiwgCi0gICAgNTQ0NywgMCwgMTI4OTUsIDY1NTkzLCA0MDEwLCA4MzE1NCwgNDExMDYsIDc0MzU3LCA2NDQ0OCwgOTM5OTQsIDQxMTA1LCAKLSAgICA3NDExNCwgNjU4MjAsIDYyMzIsIDY4MjMzLCAxMjY2MjUsIDAsIDQzNjA4LCAxMTkwOTEsIDc4MTE4LCA2NTM4LCA0MzM1LCAKKyAgICA5MjIwMSwgNjQ3MjcsIDkxNjAsIDcwMzAxLCAxOTUwNzEsIDkyOTA1LCA5MjE4MCwgMTA1MDMsIDcwMzg3LCAzNDIzLCAKKyAgICAzODcwLCA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCA5MjIwNCwgCisgICAgOTgzMTE2LCAxMjEwODQsIDc0OTYxLCA3ODMzMywgMTE5MTMyLCAxMjAxMTgsIDEyMDA5OSwgOTIzODUsIDY1MDg3LCA1NTcxLCAKKyAgICAzNjc0LCA5NzQwLCA5MTIxLCA1NTY4LCA3MTQ2NCwgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgCisgICAgMTEzNzAwLCA1ODksIDcwNTAsIDk4MzgwMCwgNDMyODEsIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgCisgICAgMTI2NDk3LCA3NDA5OSwgNDI2NDUsIDkyMzMxLCAxMjEzNTgsIDg1ODMsIDEyMTEyMywgNTg0NywgNjkyOCwgMTI4MDc0LCAwLCAKKyAgICAwLCAwLCAwLCA2NjU5MiwgMTIyMDQsIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCAxMjkxNzAsIAorICAgIDY2ODU0LCA4MTIwLCA3MDMxMSwgMTI5MTU0LCAwLCA3MDMwOCwgNDEwNjMsIDEyMDQxNywgMTA2NjQsIDAsIDgzNjksIAorICAgIDEyODI3OCwgNDU1MSwgMTIyOTEyLCAzMzY5LCA3NDk3MSwgMTIxMDk0LCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAKKyAgICAxMTg5NjAsIDEyNTE3LCA1NTcsIDk0NTcsIDEyMDM0LCA2ODQ5NiwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCA3NDkzNywgCisgICAgNzQwOTQsIDEyNDk0OCwgMTAwNDc4LCA3Nzk3MCwgOTIxNzEsIDEyNzIxOSwgMTI1MjU0LCAxMjExMSwgMzkyNywgMTE5ODgwLCAKKyAgICAxMjUxNSwgMTQ3NCwgNjc4OTMsIDU0OTIsIDY5MjMsIDkyMjgxLCAxMDQ0MSwgNjY3OTgsIDk4MzgzMSwgNDM5OTAsIDU0OTMsIAorICAgIDk4MzYxOCwgNzExMzAsIDkxNzc2NiwgNjY2MzUsIDEyMDE5LCAwLCAxNjE4LCAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCAKKyAgICAxMjY2MzYsIDU4NTMsIDEzMDYzLCAxMDM2MywgOTgzODk4LCAxMjk1NiwgMTEzNjY2LCAxMjA3MjksIDExMzE0LCAxMjUyNzEsIAorICAgIDEyMDYwLCAxMjg2NDgsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMTk1MDk3LCAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCAKKyAgICA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgNDM0MjAsIDc4Mzk2LCA2ODI0NywgMjY5NSwgNDIxNzEsIAorICAgIDcwODA5LCA2ODMzNCwgOTgzNDQ0LCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAxMjEyNSwgMTI3NjYsIDEyMDQwOSwgMTE2NCwgCisgICAgMTEzNzI5LCA3MDI4MywgNDE5MTgsIDc3ODQ5LCA2NzE1MCwgODY4NywgNjYwMDksIDEyMTc4LCA3MDUzLCA5MjU0MCwgCisgICAgNzQ2OSwgNzI3OTUsIDUyNDgsIDEyMjE4LCA2OTk4OCwgNjQyNywgNDI4ODQsIDQxMTIzLCAxMTE3NiwgMCwgNDI4NzMsIAorICAgIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzA3MDMsIDEyNzAzMSwgMTI2NTA4LCA5ODczLCAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIAorICAgIDIwNTMsIDQyODQzLCA2NTkxLCA5MzQwLCAxMjg4NDEsIDE1ODksIDEyODY5MSwgMjk2LCA2NzcxMiwgNzg4NTIsIDEyMTQwOSwgCisgICAgNjc4NDEsIDcxMzE0LCAxMjg1MDQsIDg5MjIsIDEyODA2OCwgNDM4MjksIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIAorICAgIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAxMzI2MiwgNjU1OTAsIDUyOTksIDcwNzMyLCAxMTQ3MywgNTQ0OSwgMTI1MiwgCisgICAgMTI3MzI4LCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgNTI5NSwgOTE3NTY5LCA2ODMyMCwgMTIyMywgMTY0MiwgMTc0LCAKKyAgICA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIDQxNDEzLCAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCAKKyAgICA3NDU5OCwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCA2MTUwLCA2NjM2LCA0MzcwLCAxMjg2MTksIDEyOTE1OCwgCisgICAgNzQxNzgsIDc0NTg3LCA3NDExNywgMTk1MDk0LCAwLCAxMTM3NDgsIDQ5ODYsIDEyMTg5LCAxMTk1OTksIDY3NjQ4LCAKKyAgICAxMjA0OTksIDk0MDAxLCA0MjU3LCAxMjEwNCwgNzExNzYsIDYyMjAsIDkwMDQsIDY1NTYxLCA5ODM4ODEsIDc3OTQ5LCAwLCAKKyAgICA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgODM0NTMsIDY5Njc5LCA2OTY4NCwgOTg5MCwgNzg1NjEsIDEyOTcxLCA3ODQ1MywgCisgICAgOTI1NTYsIDczODk4LCAxMTk3OSwgNzAwNTEsIDcxODk3LCA4MzQ1MSwgMTI3MTg3LCA5NjM1LCAxMjYwMCwgODg3MSwgCisgICAgNjczNjYsIDY4NDkxLCAwLCA2NDY5LCA3NDIyNywgMTE4OTAwLCA2NTMwNCwgNDY3OSwgMTAyMzAsIDY0MzAwLCA2NDg2NywgCisgICAgMzQyNywgNDI0MCwgNjczNzYsIDY3Mzc1LCA2NzM3NCwgNjczNzMsIDQyOTE2LCAxMjkxNTUsIDEyNzQ4OSwgNjczNzcsIAorICAgIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgNjczNzIsIDY3MzcxLCAzNDk0LCA2NzM2OSwgMzQxNiwgMTI5MTQ4LCA3Nzk3NiwgCisgICAgMTk1MDEwLCA5ODMxOTIsIDc4NTY2LCAwLCAxMjcwNDcsIDY1ODk4LCA5ODMyNDYsIDY1MzEyLCA1NDQ3LCAxMDA4OTUsIAorICAgIDEyODk1LCA2NDM4MiwgNDAxMCwgODMxNTQsIDQxMTA2LCA3NDM1NywgNjQ0NDgsIDkzOTk0LCA0MTEwNSwgNzA2NzcsIAorICAgIDY1ODIwLCA2MjMyLCA2ODIzMywgMTAxMTA0LCAxMDExMDMsIDQzNjA4LCAxMDExMDUsIDc4MTE4LCA2NTM4LCA0MzM1LCAKICAgICA3ODM2NCwgMzk0MSwgNDExMjIsIDExMDYxLCA3ODM2MywgNjQ4OTIsIDkxMTMsIDE5NTQsIDEyMTU1LCA5ODM2NzQsIAotICAgIDQyODc4LCAxMTUwMCwgNjc0MDUsIDEyODE1MiwgNzQ1NzgsIDAsIDY1ODMyLCAxMjg2NjcsIDAsIDcwNzg5LCA2NzMzMywgCi0gICAgMTE5MjMwLCA0NTg2LCAwLCAzNTAsIDEwOTUxLCAwLCA1MDksIDY3MzM2LCA5ODM4NzksIDkyMzA3LCAwLCAwLCA1MTMzLCAKLSAgICA2NzM4MiwgMCwgOTUwMCwgMCwgNDk1NywgNjQ3NDEsIDI0MjIsIDIyMTIsIDk4MzA4MCwgNjczODEsIDY3MzgwLCAyNDk2LCAKLSAgICAxMTUxNiwgOTQ0LCA2NzgxNywgMzg5MCwgMTIxNjgsIDE0MzgsIDY3ODEzLCA2ODMzNSwgNzAwMDMsIDQxOTQ3LCAxMjIwLCAKLSAgICAxMjA4MjgsIDc0OTQ2LCA3MDg1NCwgNzQwNTgsIDE1NzEsIDQyNjMwLCA0MTk0OSwgNDI4MDUsIDgyNzAsIDk0MywgNTY0LCAKLSAgICAwLCAzMTIsIDQxOTgwLCA5ODM5NDQsIDEyODI5NSwgNzA3OTcsIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgCi0gICAgNjk1NCwgNzg2NTcsIDQxMTIwLCA2NTEyMSwgMTA4NjIsIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIAotICAgIDgyOTQ4LCAwLCAxOTA2LCAxMjExNjksIDExNTMyLCA3NDA3MywgMTI3MzM4LCAwLCAxOTg1LCA2Mjk2LCA5NTgyLCA3NTA3MSwgCi0gICAgNjQyODcsIDEyODQwNiwgNzgxMTUsIDExNDI4LCAxNzMwLCAyNDU3LCA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMCwgNjgwODgsIAotICAgIDc3MDMsIDg4NDAsIDgwMzUsIDEyMDcxMSwgMCwgOTIyMzAsIDk4MzM1NywgNjEyOSwgMTI4NDM3LCA3ODU4NiwgMTI4MjY4LCAKLSAgICAwLCA3ODc0LCA4NjgxLCAxMTkwOTIsIDExMjA2LCAxMzEzNiwgMCwgMCwgNzAxMDIsIDYzODg2LCA3MDQ1MCwgOTYwNSwgCi0gICAgNzEzMDgsIDEzMjIwLCA2NzM0OCwgNjczNTQsIDU1MTQsIDc0OTYwLCA5MjI4LCA2NzM0OSwgNjczNTYsIDY3MzQ2LCA1MjQwLCAKLSAgICA5ODExLCAxMDAxMiwgMzA5NiwgMCwgMCwgNzQ1MjYsIDY2Njc2LCA2NTg3MywgMCwgMTI4MTc5LCAwLCA5NTAxLCAxMjA4MzIsIAotICAgIDEyNzIsIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIDAsIDE0NjcsIDEwMTU4LCAxMDA0MCwgMCwgOTUxOSwgNjg3NTksIAotICAgIDcwMzEyLCAxOTUwODUsIDY4ODIwLCAxMjE5MywgNzA0MDAsIDEyNzI0MCwgMTIxMzczLCAwLCA5ODMzNTUsIDE5OTM1LCAKLSAgICAxMjA3MzMsIDkyMTYyLCA2ODgwMSwgMTI3OTU1LCA4MzEzMywgOTMwNTcsIDUyNzUsIDEyMDE5NSwgMTI4NjMyLCA4NjM3LCAKLSAgICA0MzY4MiwgMCwgMzc4OSwgNjM4ODAsIDExNDcxLCA0MzU1NCwgNjU4NjIsIDExNDc0LCA2NjMzMiwgNjY2MDMsIDY4Nzg0LCAKLSAgICAyNDI2LCAxMjA0MiwgOTIxOTQsIDk4MzkxMSwgOTUzNywgMzk2MSwgMTIxMTUsIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgCi0gICAgNTUyMjQsIDQ5ODEsIDc0NjQ0LCAwLCA0MTY0NiwgMTE2NjcsIDQyNjg2LCA3NDk5MSwgNDIzNjIsIDY0Njg2LCA0NDk5LCAKLSAgICA0MTY0OSwgNzU4OSwgMTI4Nzc2LCAwLCAzMjM3LCAwLCA2Njg5NSwgNjgyOTYsIDg1NDEsIDc4Mjk4LCA3MDAzNCwgNDE4NjYsIAotICAgIDAsIDk4MzgxNCwgOTQwNTYsIDExMTc0LCA2OTkyNCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCA0MTk0MCwgODI5OSwgCi0gICAgNDE5NDUsIDcxMzIsIDQxOTQxLCAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAxMjg2NzksIDQxNjk5LCAKLSAgICAxMDc2MiwgNDM3ODAsIDEyOTk5LCAxMTkyNDUsIDEyODQ5NCwgODEwNiwgNDEyOCwgMCwgNjI3NCwgNDQ5NCwgOTgzMDgyLCAKLSAgICA0MDEyLCAxMDM5NSwgOTgzNTkxLCA0MzYzMywgNjU0NDcsIDc4MjYwLCAxMjA5NzMsIDExMDA0LCA2OTUsIDczOSwgNjk2LCAKLSAgICA3NjExLCAxMjEwNzMsIDQyNzU1LCA3NDgwMiwgOTIyNywgNzUwNiwgNzUxMCwgNjk5MzcsIDY5MSwgNzM4LCA3NTExLCAKLSAgICA3NTEyLCA3NTE1LCAzODY4LCA2ODgsIDQxODQ3LCA2OTAsIDI1NDgsIDczNywgOTc0LCA4MDAzLCA3NDA2LCAxMjczNTMsIAotICAgIDEyMDE2NiwgMTI4Njg4LCAzOTg1LCA2NjQyNSwgNjU4NjAsIDQxODUxLCA3MDUxLCA2OTc3NywgNDY4MiwgNzE4NzMsIAotICAgIDEyODA5LCA2NDA2LCA0Njg1LCA5MjUwNSwgMTA4NzksIDEwMzQ3LCA0NjgwLCA2MzQxLCAwLCAzODUxLCA4MTMyLCA3NDMyNSwgCi0gICAgMTE5MjYzLCAxMjA4NTUsIDEyNzk0OCwgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAxOTQ4NTUsIDAsIDQyNjU3LCA3MTA3NSwgCi0gICAgNzY0MywgNDIzNzMsIDExNzE0LCA2NzU4NywgNDM1NjgsIDk4MzE3NSwgMTE3MTcsIDc2NTAsIDEwNTk0LCA2NDk1MSwgCi0gICAgNzY0NywgNzY0OSwgMTI4MTU1LCA3NjQ2LCAwLCA3ODA4MiwgOTY1MSwgMTI2NDc1LCAzODkxLCAxMjcyMDUsIDAsIDIzMzcsIAorICAgIDQyODc4LCAxMTUwMCwgNjc0MDUsIDEyODE1MiwgNzQ1NzgsIDAsIDY1ODMyLCAxMjY5NzgsIDAsIDcwNzg5LCA2NzMzMywgCisgICAgMTE5MjMwLCA0NTg2LCAxOTQ5MjIsIDM1MCwgMTA5NTEsIDEwMTA4MSwgNTA5LCA2NzMzNiwgMTAwOTA0LCA5MjMwNywgCisgICAgMTAwOTAzLCAwLCA1MTMzLCA2NzM4MiwgMTI4ODI3LCA5NTAwLCAxMDA5MDYsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCAKKyAgICA5ODMwODAsIDY3MzgxLCA2NzM4MCwgMjQ5NiwgMTE1MTYsIDk0NCwgNjc4MTcsIDM4OTAsIDEyMTY4LCAxNDM4LCA2NzgxMywgCisgICAgNjgzMzUsIDcwMDAzLCA0MTk0NywgMTIyMCwgMTIwODI4LCA3NDk0NiwgNzA4NTQsIDc0MDU4LCAxNTcxLCA0MjYzMCwgCisgICAgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgMCwgMzEyLCA0MTk4MCwgOTgzOTQ0LCAxMjgyOTUsIDcwNzk3LCA4ODc3LCAKKyAgICAyNjksIDQ0MjksIDYyNzIsIDk2MTcsIDE0NjAsIDY5NTQsIDc4NjU3LCA0MTEyMCwgNjUxMjEsIDEwODYyLCA2MDYwLCAKKyAgICA0MTExOSwgNDE0MTYsIDc0MzU1LCA0MTczLCAwLCA4Mjk0OCwgMCwgMTkwNiwgMTIxMTY5LCAxMTUzMiwgNzQwNzMsIAorICAgIDEwMTA2OCwgMTAxMDY3LCAxOTg1LCA2Mjk2LCA5NTgyLCA3NTA3MSwgNjQyODcsIDEyODQwNiwgNzA3MTcsIDExNDI4LCAKKyAgICAxNzMwLCAyNDU3LCA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMTAxMDc2LCA2ODA4OCwgNzcwMywgODg0MCwgODAzNSwgCisgICAgMTIwNzExLCAxOTQ2MDIsIDkyMjMwLCA5ODMzNTcsIDYxMjksIDEyNzA2NSwgNzg1ODYsIDEyODI2OCwgMTk0OTY1LCA3ODc0LCAKKyAgICA4NjgxLCA3MjgwMCwgMTEyMDYsIDEzMTM2LCAwLCAxMjkzMDUsIDcwMTAyLCA2Mzg4NiwgNzA0NTAsIDk2MDUsIDcxMzA4LCAKKyAgICAxMzIyMCwgNjczNDgsIDY3MzU0LCA1NTE0LCA3NDk2MCwgOTIyOCwgNjczNDksIDY3MzU2LCA2NzM0NiwgNTI0MCwgOTgxMSwgCisgICAgMTAwMTIsIDMwOTYsIDkxNzgwOSwgMCwgNzQ1MjYsIDY2Njc2LCA2NTg3MywgMTk0NjA4LCAxMjgxNzksIDEwMDkxOCwgCisgICAgOTUwMSwgMTIwMjc1LCAxMjcyLCA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAxMDA5MjAsIDE0NjcsIDEwMTU4LCAKKyAgICAxMDA0MCwgNzQwOTYsIDk1MTksIDY4NzU5LCA3MDMxMiwgMTAxMDUyLCA2ODgyMCwgMTIxOTMsIDcwNDAwLCAxMjcyNDAsIAorICAgIDEyMTM3MywgNzI4MTcsIDk4MzM1NSwgMTk5MzUsIDEyMDczMywgOTIxNjIsIDY4ODAxLCAxMDA2ODIsIDgzMTMzLCA5MzA1NywgCisgICAgNTI3NSwgMTAxMDYzLCAxMjg2MzIsIDg2MzcsIDQzNjgyLCAxMjg1NzYsIDM3ODksIDYzODgwLCAxMTQ3MSwgNDM1NTQsIAorICAgIDY1ODYyLCAxMTQ3NCwgNjYzMzIsIDY2NjAzLCA2ODc4NCwgMjQyNiwgMTIwNDIsIDkyMTk0LCAxMjExODcsIDk1MzcsIAorICAgIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIDU1MjI0LCA0OTgxLCA3NDY0NCwgMCwgNDE2NDYsIAorICAgIDExNjY3LCA0MjY4NiwgNzQ5OTEsIDQyMzYyLCA2NDY4NiwgNDQ5OSwgNDE2NDksIDc1ODksIDEyODc3NiwgMTI4MjcxLCAKKyAgICAzMjM3LCAwLCA2Njg5NSwgNjgyOTYsIDg1NDEsIDc4Mjk4LCA3MDAzNCwgNDE4NjYsIDAsIDEyNzUwOSwgOTQwNTYsIAorICAgIDExMTc0LCA2OTkyNCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCA0MTk0MCwgODI5OSwgNDE5NDUsIDcxMzIsIDQxOTQxLCAKKyAgICAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAxMjg2NzksIDQxNjk5LCAxMDc2MiwgNDM3ODAsIAorICAgIDEyOTk5LCAxMTkyNDUsIDcwNjg5LCA4MTA2LCA0MTI4LCA5ODM3NTEsIDYyNzQsIDQ0OTQsIDk4MzA4MiwgNDAxMiwgCisgICAgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIDY1NDQ3LCA3ODI2MCwgMTIwOTczLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgNzYxMSwgCisgICAgMTIxMDczLCA0Mjc1NSwgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgNzUxMiwgCisgICAgNzUxNSwgMzg2OCwgNjg4LCA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgMTI3MzUzLCAxMjAxNjYsIAorICAgIDEyODY4OCwgMzk4NSwgNjY0MjUsIDY1ODYwLCA0MTg1MSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDcxODczLCAxMjgwOSwgNjQwNiwgCisgICAgNDY4NSwgOTI1MDUsIDEwODc5LCAxMDM0NywgNDY4MCwgNjM0MSwgMTI1MjE3LCAzODUxLCA4MTMyLCA3NDMyNSwgMTE5MjYzLCAKKyAgICAxMjA4NTUsIDEyNzk0OCwgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAxOTQ4NTUsIDAsIDQyNjU3LCA3MTA3NSwgNzY0MywgCisgICAgNDIzNzMsIDExNzE0LCA2NzU4NywgNDM1NjgsIDk4MzE3NSwgMTE3MTcsIDc2NTAsIDEwNTk0LCA2NDk1MSwgNzY0NywgCisgICAgNzY0OSwgMTI4MTU1LCA3NjQ2LCAwLCA3ODA4MiwgOTY1MSwgMTI2NDc1LCAzODkxLCAxMjcyMDUsIDk4MzgwMywgMjMzNywgCiAgICAgMTczNSwgNzQzMjQsIDExMTM0LCAyMzYzLCAxMjEwMDgsIDkyNDQzLCA0MzU2MSwgNjc3MDYsIDEyODAzMiwgNzQxNDYsIAogICAgIDE4NjAsIDc0OTUsIDc1ODAsIDU4MTIsIDc0OTcsIDc1ODQsIDExOTE0MCwgMTI3ODUzLCA3ODc1MywgMTIwMzQ3LCA3NzI3LCAKLSAgICAwLCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIDc2OTAsIAotICAgIDAsIDEyNTMzLCA5ODM3OTYsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAxMjg0NDQsIDc0ODAwLCA3MTA1MSwgNjc5NzQsIAotICAgIDEwODU5LCAxMjg2NTAsIDk4MzgwMSwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCA5ODM1ODMsIDc0NTkyLCA4ODUwLCAKLSAgICA3NDI3NSwgOTIzOCwgMTA2MTcsIDY4MDYzLCA5MTc5MDksIDkyNjI1LCA5MTc4MDEsIDEyNzkxLCAwLCA5NDA2OSwgCi0gICAgMTI3ODQzLCA0NDQ3LCA3MTA2NSwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDk4MzQ0OSwgNzQ2MzksIDEyNzkwLCAKLSAgICA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAxMTkyMzksIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIAotICAgIDQxMzEwLCAxMjA3MzAsIDQxMzk5LCAwLCAwLCA1NTI1OCwgMCwgMTI2OTAsIDEyNzc2MywgMCwgNDM2NzIsIDEyNzg0MCwgCi0gICAgNDE2NTIsIDI5NzQsIDkwMTAsIDExMzE1LCA5ODM4MDgsIDI3OCwgMTIxMjA0LCA0MTQwNSwgNDM4NzEsIDAsIDEwMDc3LCAKLSAgICA2Mzg1MywgNzQ1NTcsIDQyNTg2LCAwLCAwLCA2MDAyLCA2NzMzNSwgNDM1NTMsIDExMTg5LCA2NzMzOCwgNjczMzcsIAotICAgIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDEyMDI2MywgMTIwOTQwLCA5NDA0MiwgODY0NiwgMTI4MjU3LCA3NzgyOSwgCi0gICAgNzEzNjAsIDAsIDY0MTMsIDY1NTAsIDExMzc1OSwgMTk0MCwgMjgwOSwgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAKLSAgICAxMDY3OCwgMTAwNDQsIDY4ODQxLCAxMjgxMjEsIDk4MzgxNiwgNjgyOTAsIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIAotICAgIDY2NjE0LCAwLCAwLCAwLCAxMDI5NywgMCwgMzc0MiwgNjczMzEsIDM5NTksIDAsIDEyMDQ2NiwgMCwgMjQ2NywgNjg4MDYsIAotICAgIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCA5ODMyMjAsIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCA5MjEwLCAKLSAgICAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAxMTU0MCwgNDM1NDYsIDY2OTIsIDY4MzcsIDQxMDYwLCAxMjgwMTgsIAotICAgIDQ2NjgsIDkwODMsIDAsIDAsIDc4MTQ0LCAxNTU5LCA2MzgzMSwgOTY3NywgNjczNDAsIDY3MzQ3LCA2NTI1NiwgNjczNDUsIAotICAgIDY3MzQ0LCA5ODMzNTIsIDk4MzI2NiwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIDEyODIzNiwgNjczNTIsIAotICAgIDY3MzUxLCA1NTE2LCAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNjczNTMsIDU0NCwgMTIwNDUsIDYyNzgsIDc0NjMyLCAKLSAgICA1NTE1LCAxMjkxODYsIDEyMDg4NCwgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDAsIDU1MTcsIDcwMTE2LCA3NDIyNSwgCi0gICAgNzQ4NDEsIDY3ODg0LCAxMjg0MTQsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDEyMDE5OSwgCi0gICAgMTE4ODgzLCA2Nzg3OSwgMTI3MTg4LCAxOTAyLCA2Nzg4NywgOTYzOCwgMTI5NzYsIDEyNjU0NiwgMTI0ODMsIDEyMzY4LCAKLSAgICA0MTc2OSwgNDI3MjYsIDQxNzY1LCA3MzYxLCA2NjY3LCA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCAKLSAgICA0MjY3NywgNjc4ODksIDkzMDQwLCAxMzExLCAxMjg5NDksIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAKLSAgICAxMjg4ODAsIDY5MTcsIDc4MTU1LCAxMjA4MzcsIDk0OSwgNzc4ODIsIDkxNzk2OCwgNjE0OCwgODYwNSwgNDIyNTMsIAotICAgIDc4MTc3LCA2NjkwNiwgMCwgNDI3MTUsIDcxNDMyLCA3MDI4MiwgOTgzMzczLCA2Mzg3MSwgMCwgNDE3OTYsIDEyNjksIAotICAgIDY1MzAsIDEyMTQxNCwgNjUwNTcsIDcwNDkzLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDY4Mjk5LCA0NDMxLCA0MzMxLCAKLSAgICA5ODM3MjksIDEyODY3NSwgNDE4MzQsIDUyNzksIDEyMTM2MiwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCA5Mjk1OSwgMCwgCi0gICAgNzgxNjUsIDY2MDM2LCA3MDE2NiwgMTIwOTM3LCA2NDI4LCA0MjI3MCwgOTgzNzI2LCA5ODM1OTYsIDQzMDU5LCA0MjY2NiwgCi0gICAgNTI1NiwgMTA2NywgMjU1LCAxMjEzMSwgMTI4NzQyLCA5NDkzLCA3NDk5MCwgNDEwMTQsIDExNzkzLCAxOTQ5MjAsIAotICAgIDEyMTE5NSwgNzQzOTQsIDQzNDYwLCAxMDY1MywgNDI3MjMsIDk4Mzg1NCwgMTE5NjMyLCA3MDQyNywgNjU2MCwgNzAxNiwgCi0gICAgNzQyNzQsIDY5OTg2LCA0MzU1NiwgMzkyOSwgNjc5NzcsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCA1MTM1LCAxMTgxMSwgCi0gICAgMTI3OTYsIDExOTUzLCAwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAKKyAgICA5ODM2NTgsIDg0OTgsIDY5ODE4LCA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIDEyNTM0LCAxMjEyNCwgCisgICAgNzY5MCwgMCwgMTI1MzMsIDk4Mzc5NiwgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDEyODQ0NCwgNzQ4MDAsIDcxMDUxLCAKKyAgICA2Nzk3NCwgMTA4NTksIDEyODY1MCwgOTgzODAxLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDk4MzU4MywgNzQ1OTIsIAorICAgIDg4NTAsIDc0Mjc1LCA5MjM4LCAxMDYxNywgNjgwNjMsIDkxNzkwOSwgOTI2MjUsIDkxNzgwMSwgMTI3OTEsIDEyODk3NiwgCisgICAgOTQwNjksIDEyNzg0MywgNDQ0NywgNzEwNjUsIDEyNzkzLCAxMjkwMCwgOTIzNzcsIDEwOTUwLCAxMDA4NzgsIDc0NjM5LCAKKyAgICAxMjc5MCwgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgMTE5MjM5LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIAorICAgIDEyMzE3LCA0MTMxMCwgMTAwODY1LCA0MTM5OSwgMTAwODIyLCAxMjY2NDksIDU1MjU4LCAwLCAxMjY5MCwgMTIwMDgzLCAwLCAKKyAgICA0MzY3MiwgMTI3ODQwLCA0MTY1MiwgMjk3NCwgOTAxMCwgMTEzMTUsIDExOTY1OCwgMjc4LCAxMjEyMDQsIDQxNDA1LCAKKyAgICA0Mzg3MSwgMTAwODY3LCAxMDA3NywgNjM4NTMsIDcwNjY3LCA0MjU4NiwgOTE3ODg2LCA3NDExNCwgNjAwMiwgNjczMzUsIAorICAgIDQzNTUzLCAxMTE4OSwgNjczMzgsIDY3MzM3LCAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAxMjAyNjMsIDEyMDk0MCwgCisgICAgOTQwNDIsIDg2NDYsIDEyODI1NywgNzc4MjksIDcxMzYwLCAwLCA2NDEzLCA2NTUwLCAxMTM3NTksIDE5NDAsIDI4MDksIAorICAgIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgMTA2NzgsIDEwMDQ0LCA2ODg0MSwgMTI4MTIxLCA5ODMzNTAsIDY4MjkwLCAKKyAgICA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCA2NjYxNCwgMCwgMTIyOTIxLCAxMjc5MTIsIDEwMjk3LCAxOTUwNTcsIAorICAgIDM3NDIsIDY3MzMxLCAzOTU5LCAwLCAxMjA0NjYsIDAsIDI0NjcsIDY4ODA2LCA2MDAzLCA2Mzg0NCwgNjY2MywgODA0MCwgCisgICAgOTgzMjIwLCA0Mzc1OCwgNDE4MiwgNzgxNzEsIDQ2NzYsIDEyMDUwMSwgOTIxMCwgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCAKKyAgICA5MjM2MSwgMTE1NDAsIDQzNTQ2LCA2NjkyLCA2ODM3LCA0MTA2MCwgMTAxMDk3LCA0NjY4LCA5MDgzLCA5ODMyNDQsIDAsIAorICAgIDc4MTQ0LCAxNTU5LCA2MzgzMSwgOTY3NywgNjczNDAsIDY3MzQ3LCA2NTI1NiwgNjczNDUsIDY3MzQ0LCA5ODMzNTIsIAorICAgIDk4MzI2NiwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIDEyMDI1OCwgNjczNTIsIDY3MzUxLCA1NTE2LCAKKyAgICAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNjczNTMsIDU0NCwgMTIwNDUsIDYyNzgsIDc0NjMyLCA1NTE1LCAxMjkxODYsIAorICAgIDEyMDg4NCwgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDEyMDU0MSwgNTUxNywgNzAxMTYsIDc0MjI1LCA3NDg0MSwgCisgICAgNjc4ODQsIDEyODQxNCwgNjc4OTAsIDY3ODg1LCA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMTIwMTk5LCAxMTg4ODMsIAorICAgIDY3ODc5LCAxMjE0NDgsIDE5MDIsIDY3ODg3LCA5NjM4LCAxMjk3NiwgNzQzOTQsIDEyNDgzLCAxMjM2OCwgNDE3NjksIAorICAgIDQyNzI2LCA0MTc2NSwgNzM2MSwgNjY2NywgNjc4NzQsIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgNDI2NzcsIAorICAgIDY3ODg5LCA5MzA0MCwgMTMxMSwgMTAwODgyLCA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgMTAwNjQzLCAKKyAgICA2OTE3LCA3ODE1NSwgMTIwODM3LCA5NDksIDc3ODgyLCA5MTc5NjgsIDYxNDgsIDg2MDUsIDQyMjUzLCA3ODE3NywgNjY5MDYsIAorICAgIDEwMDY0NCwgNDI3MTUsIDcxNDMyLCA3MDI4MiwgMTAwNjQ3LCA2Mzg3MSwgMTI4Mjk2LCA0MTc5NiwgMTI2OSwgNjUzMCwgCisgICAgMTAxMDQ5LCA2NTA1NywgNzA0OTMsIDUxNDQsIDEyMjIxLCA0MjcxNiwgNjgyOTksIDQ0MzEsIDQzMzEsIDEwMTA0NSwgCisgICAgMTI4Njc1LCA0MTgzNCwgNTI3OSwgMTIxMzYyLCAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDkyOTU5LCAwLCA3ODE2NSwgCisgICAgNjYwMzYsIDcwMTY2LCAxMDAzODcsIDY0MjgsIDQyMjcwLCA5ODM3MjYsIDk4MzE2MywgNDMwNTksIDQyNjY2LCA1MjU2LCAKKyAgICAxMDY3LCAyNTUsIDEyMTMxLCAxMjg3NDIsIDk0OTMsIDczODk0LCA0MTAxNCwgMTE3OTMsIDEyNjQ2NywgNzg3NDAsIAorICAgIDcwNzI4LCA0MzQ2MCwgMTA2NTMsIDQyNzIzLCAxMjUyMTYsIDEwMDY1OCwgNzA0MjcsIDY1NjAsIDcwMTYsIDc0Mjc0LCAKKyAgICA2OTk4NiwgNDM1NTYsIDM5MjksIDY3OTc3LCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIDEyNzk2LCAKKyAgICAxMTk1MywgMTI3MzgwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAKICAgICA0Mzg0NSwgNzQzMTUsIDc0MzYxLCA4MjUzLCA4ODE3LCAxMTM2LCA5MTc5MzEsIDQzNTYzLCA5MjIzMiwgMTI4OTE0LCAKLSAgICA2NjQxMCwgNzM5MiwgODIzMCwgOTM2NSwgNzExOTQsIDEyNzEwOSwgOTgzNjA3LCA2NjkxNSwgMTI4NDAyLCA0MDQxLCAwLCAKKyAgICA2NjQxMCwgNzM5MiwgODIzMCwgOTM2NSwgNzExOTQsIDEyNzEwOSwgMTk0ODc4LCA2NjkxNSwgMTI4NDAyLCA0MDQxLCAwLCAKICAgICAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgNDM4MzQsIDExOTg4NCwgNDQwMDQsIDcxNDIsIDExOTg4MSwgMTIzNTAsIAogICAgIDY1NTU0LCAxMTk4ODIsIDcxMzA1LCAxMTk4NzYsIDEyNzg1LCA2Mzg2MywgNDM3OTUsIDc3NzAsIDEwNzEyLCA2NDg1MywgCiAgICAgMTI2ODYsIDQzODMxLCA0MjM3NSwgNjU3ODAsIDEyNDk0NCwgNjYzNTIsIDEwNDcwLCA3MTExOSwgMTEwNTksIDEwNzkxLCAKLSAgICA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAxMjcyNTQsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIDEyMzMsIDAsIDQ0MDA5LCAKKyAgICA3MjcyNCwgNDUwLCAxMTkzMjgsIDEyNzI1NCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgMTIzMywgMCwgNDQwMDksIAogICAgIDc4Mjg0LCA2NjMzOCwgNjYzOTUsIDkxNzgzMiwgMTgzOSwgMTE4Nzk5LCA5ODMyMTksIDEwOTI3LCAxNzAxLCA5ODM2NjQsIAogICAgIDIzODgsIDQxNzQ5LCA0MTc2MSwgNTQ1MywgODM2MSwgMTE5ODY1LCA4OTUsIDU0NDQsIDQxNzYzLCA2NDg4OSwgNzE0MywgCi0gICAgOTI0OTMsIDc4Njc3LCA5ODMxMzcsIDkyNDI5LCA2OTk4MywgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDk4MzA0NCwgCi0gICAgMTI4MDEzLCA2NTgxMiwgMTIwNjc1LCA3MDAwMSwgNDE4MjQsIDY3OTg1LCAxMjAyMDMsIDkyNjAwLCAxMjcwNTMsIDQyNzAwLCAKLSAgICAxOTQ4MDUsIDEyNzk4MCwgMTk0ODA3LCA3ODY3NiwgOTIzNTYsIDE5NDgwOCwgMTI3ODQ0LCAwLCA0NDkzLCA0MzM2LCAKLSAgICAxMjkxNzEsIDIzMTQsIDQzNjAyLCA3ODgyNiwgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCA2NDYzOCwgNDIzMjcsIDQzNTI4LCAKKyAgICA5MjQ5MywgNzg2NzcsIDk4MzEzNywgOTI0MjksIDY5OTgzLCA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgMTk0ODQ5LCAKKyAgICAxMjUxODksIDY1ODEyLCAxMDA2MzMsIDcwMDAxLCA0MTgyNCwgNjc5ODUsIDEyMDIwMywgOTI2MDAsIDEyNzA1MywgNDI3MDAsIAorICAgIDE5NDgwNSwgMTI3NDAzLCAxMjgwNDAsIDc4Njc2LCA5MjM1NiwgMTk0ODA4LCAxMjc4NDQsIDAsIDQ0OTMsIDQzMzYsIAorICAgIDEyOTE3MSwgMjMxNCwgNDM2MDIsIDQxODA4LCAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIAogICAgIDQ0ODksIDY4NzUwLCAxMjUxMTYsIDE5NDc5MywgMTkxMiwgNDIzODUsIDEwMzA2LCAxMDM3MCwgMCwgMTk0NzYxLCA4ODY3LCAKICAgICAxMDI1MCwgMTAyNTgsIDI3MTIsIDE2MzUsIDcxMDY0LCAxNDEwLCA3ODc2MywgOTgzMjUyLCAxMTg4NzgsIDk4MzU2NywgCi0gICAgMTI4NzE1LCA5OTE5LCAxMjA1MjgsIDU1OSwgMTI4MTU3LCA0MTgyNSwgMTIxMjc0LCA3NDY0MSwgNDg5MiwgNzQwMTYsIAorICAgIDEwMDk4OCwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyMTI3NCwgNzQ2NDEsIDQ4OTIsIDc0MDE2LCAKICAgICAxMjE1MDIsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDEyNzE2NywgNzU5LCA2NTc0OSwgMjA3OSwgNjUyNDgsIAotICAgIDEyNzg4LCA2NDQ4NywgNjQ1NTIsIDkzMDYzLCAxMDIyMywgNDIwNjIsIDEyMTI3OSwgMCwgNzQyNDYsIDM2NjgsIDY1NzU0LCAKKyAgICAxMjc4OCwgNjQ0ODcsIDY0NTUyLCA5MzA2MywgMTAyMjMsIDQyMDYyLCAxMDA2NDAsIDAsIDc0MjQ2LCAzNjY4LCA2NTc1NCwgCiAgICAgNDM1NjAsIDEyMjI2LCA2Nzk5MSwgNjUxNDksIDIzNDAsIDQxOTU5LCA3MTQ2MywgMTk0Nzg1LCAxOTQ3ODgsIDQzNjE4LCAKLSAgICA2NTc0NywgMTA5MzcsIDI5NjIsIDAsIDIzMjEsIDM1ODcsIDY1NzQ1LCA2NzIzNiwgODkyMSwgOTk1MiwgMTI4OTQxLCAwLCAKLSAgICA0MjcxNCwgOTk1MSwgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCi0gICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyMDA2MSwgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDcxODk2LCA2ODIyMCwgMTI4MTQzLCAKKyAgICA2NTc0NywgMTA5MzcsIDI5NjIsIDEyMTE3MSwgMjMyMSwgMzU4NywgNjU3NDUsIDY3MjM2LCA4OTIxLCA5OTUyLCAxMjg5NDEsIAorICAgIDAsIDQyNzE0LCA5OTUxLCA0MzQwOSwgMTAwNjY4LCAyOTQ5LCA2NjAxMiwgMTk0NTgyLCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCAKKyAgICA0MTgyMCwgMjMwMCwgMjM5NSwgMTIwMDYxLCA5OTc2LCAxMDA5NzUsIDEyMDA1MCwgNzE4OTYsIDY4MjIwLCAxMjgxNDMsIAogICAgIDQyODA5LCA0MjgwNywgNzA3OTgsIDY2MjkwLCAxMDE5OCwgNDE1MCwgNjQzNzEsIDgzMTgsIDQxNzkwLCA2Nzk3NiwgCi0gICAgNDE4OTgsIDIzNjAsIDQxNzk0LCA5MTc5NDIsIDcwNzk2LCA5MjE2MywgOTMwMzMsIDAsIDI0MTgsIDk4MzA5OCwgMjQxMSwgCi0gICAgMTEzMzYsIDc5OSwgNjM4MjMsIDEwMjc2LCAxMDMwOCwgMTAzNzIsIDkxNzU0MSwgNDE3NzIsIDQyODEzLCAyMzE3LCAKKyAgICA0MTg5OCwgMjM2MCwgNDE3OTQsIDEwMDY2MywgNzA3OTYsIDkyMTYzLCA5MzAzMywgOTgzNjQ4LCAyNDE4LCA5ODMwOTgsIAorICAgIDI0MTEsIDExMzM2LCA3OTksIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCAxOTQ2MDQsIDQxNzcyLCA0MjgxMywgMjMxNywgCiAgICAgMTAyNjAsIDExODk4MCwgNTUyODQsIDc4Njg2LCAxMjcxNzcsIDEwMzg0LCAxOTQ3OTQsIDEyMTE0NywgMTI5MTExLCA3NzUzLCAKLSAgICAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDcwMTk5LCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgNjgwNjcsIAorICAgIDIzNTEsIDY2NTUsIDY0NDg5LCA2OTkzMSwgNzAxOTksIDc3ODcyLCA0NDQzLCA0Mjc3OSwgMjMwLCAxMjcwMTUsIDY4MDY3LCAKICAgICA0MzU0OSwgNDg1NSwgNDIxNTAsIDY1NzM5LCA1NDQxLCA0MTg5NiwgMTAyODgsIDEwMzIwLCAwLCA4NTUsIDcwNDYsIDYxMDksIAogICAgIDY1MDQ1LCA2MzgzOSwgNzgxOTgsIDIwNDksIDEwMDk4LCA5MTc3NzksIDc0MTQ1LCAxMjc5NDMsIDEwMjY0LCAxMDI4MCwgCi0gICAgOTE4NCwgMTAzNzYsIDcwMTMsIDQ0NjcsIDc4Njg0LCA5MTc1NTQsIDkyMjYwLCA0MTg4NywgMCwgNDg2MiwgOTczNSwgCisgICAgOTE4NCwgMTAzNzYsIDcwMTMsIDQ0NjcsIDc4Njg0LCA5MTc1NTQsIDkyMjYwLCA0MTg4NywgMTAxMDI1LCA0ODYyLCA5NzM1LCAKICAgICA2NTM3LCAxMjA1OTEsIDc0Mjg2LCAzOTE0LCA5MjE3OCwgNjg4MjMsIDkwNjUsIDEyOTYxLCAwLCAxMjA0NTYsIDkyMjUzLCAKLSAgICAxMjgyMDQsIDI4OSwgMTI4NzE0LCA0Njk0LCAxMTQyMCwgNDY5MCwgMCwgMTIwNTE0LCA5MTc5NzgsIDQ2OTMsIDczODkzLCAKLSAgICA0MjcyNCwgNjk5NzcsIDQ2ODgsIDEyMDQ1NCwgMTI4NTA3LCAwLCA2Nzk5NCwgODIzOCwgMzExMCwgMTIwMTYyLCAzNTY1LCAKLSAgICAxMjAxNjMsIDY1MjgsIDc4Mzg3LCA0MzAzNSwgNjk4OTgsIDIxOCwgOTgzODUwLCAxNTIwLCAwLCA0Nzg2LCA5ODMxNjgsIAotICAgIDQzMjI1LCA0NjAyLCA5MjQwMCwgNzgxNjcsIDEwMDg4LCA2NTQ4LCAxMjExNTcsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIAotICAgIDg4ODgsIDkyNzI0LCA3NDgxMiwgNjk3MDksIDk4Mzk2NywgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgMTIxNDM2LCAwLCAKLSAgICA5OTc1LCAxMTM3MDQsIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIDc4ODEwLCAwLCAwLCAKLSAgICA2Nzk4NywgMCwgMTI4ODI4LCAwLCA2Nzk4OSwgMTE5MDI5LCAxMDA2NSwgODIwNywgNzE5MDAsIDkyNjEzLCAxMjgwMTEsIAotICAgIDEyMTAyOCwgNjYyLCAxMjg3MjAsIDkyNDQsIDE5NDg2MywgODMxODMsIDExOTI2MSwgOTgzNDMwLCAwLCAxMjA5MDEsIAotICAgIDkxNzgzOCwgNDE5MjksIDAsIDcxMDg0LCA2NjY3NCwgNDE5MjYsIDY5OTk0LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgCi0gICAgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCA2NDc1LCAxOTUwMDQsIDgzNDc5LCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAKLSAgICAxMjg0ODYsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMTI4NDI1LCA5MTc5NDUsIDc0MDE1LCAxMTU4MiwgOTI3NjgsIAotICAgIDEyMjgxLCAxMjcwNDMsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIDEyNTAxNCwgMTk0ODYwLCAxMTc2NSwgNjUyNTgsIAotICAgIDEwMzY5LCAwLCAxNTg1LCA3MTkyLCAxMDI0OSwgNDIyLCAxNTAwLCAyMDM2LCA5ODYsIDE5NDg1OSwgNjQzOTQsIDU3ODEsIAotICAgIDU1OTksIDY0Mjk0LCAyNDk0LCAxMjA0NTAsIDQ4NjEsIDc0MDIxLCA2NDMzNCwgNzgyMDMsIDEyNzgwOCwgMCwgODM0NDQsIAotICAgIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCA3MTkwNywgMTIwNDEwLCAwLCAxMjA0NTMsIDY0ODIxLCA5NDc4LCAKLSAgICAyNTA4LCA5MjY4MywgMCwgMjAyLCAxMjgyNDYsIDc0MTMxLCAxMjQyLCA2NTUxNCwgMTIxMTcwLCA2Mzk0MCwgMTIxMzYzLCAKLSAgICA2NDUzMywgNzE4ODMsIDEyMDQ0NiwgNjc4NDIsIDExOTkwLCA5MjQwNSwgNjM5MzksIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgCi0gICAgNzg2NzEsIDY0ODI5LCA5MzAyMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCA5ODMzNjMsIDc0Mjk0LCA5ODM5MTQsIAotICAgIDY5MjM5LCAwLCA2Nzg3MSwgMTI5OTIsIDI3NTMsIDE5MzYsIDcwMDc4LCA2NzcwMSwgMjc1MSwgMTI2NjIsIDI3NjMsIAotICAgIDg5NTMsIDY0NzAxLCAxMDczMSwgMTI5MjIsIDcwNTIsIDkxNzgzOSwgNjY0MjQsIDYzOTkyLCAwLCA2MzkyMCwgNzQxMjgsIAotICAgIDI4NTYsIDExOTkxMCwgNDcsIDY5OTA4LCA3MTA1MywgNjU4NTgsIDE5NDgwNiwgMCwgNjc4MjksIDc4OTksIDAsIDg0MTcsIAotICAgIDQzNzk4LCA3MDcyLCA3NDE5NSwgMCwgNDAzMywgMTIxMjg5LCA0Mzk5MiwgMTIxMDgxLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAKLSAgICAxMjMyMCwgODM0ODQsIDEyMDg5NCwgMTk0NTYzLCAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDkzMDY0LCAwLCAwLCAKLSAgICAxMTg3OTgsIDEyOTEsIDc0ODI4LCAwLCAxMjA0MzUsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIDEyODE5OCwgCi0gICAgMTIxMjE2LCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIDgyNDYsIDEyODg3NCwgOTMwNjYsIDAsIDEyMDQzMywgMCwgCi0gICAgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIDk4MzA5MiwgMTk0OTQ4LCA5MTc4NjYsIAotICAgIDkxNzc4OCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgNzA3ODgsIDEzMjAsIAotICAgIDEyMTQ2MSwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIDExOTU5OCwgCi0gICAgOTgyMCwgMTE5ODkyLCAxMjE4NywgOTgzODQxLCA3MTA0MSwgNTk4NCwgMCwgNDMzMDgsIDQzOTMsIDY3NjUwLCA5ODMyMjcsIAotICAgIDAsIDc0ODIyLCAwLCA3NDgyNiwgNjQ3MzMsIDk4MzIxNCwgMTI3ODk4LCAzNDkxLCA2NzE0NiwgMTIxMTQyLCAxMjgyMTksIAotICAgIDM1MTQsIDY1NDg1LCA3MjQyOCwgNzQ5MiwgMTI4ODYwLCA3NDYwNSwgOTI0ODMsIDc1MTQsIDk4MzM2OSwgMTI2NTg1LCAKLSAgICAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCA2MzkyMSwgMTIxMTc4LCA2MzkyNSwgMTIwMTYxLCA3NjEwLCAyMTksIAotICAgIDEyODE1OCwgNzg3MjIsIDY5MiwgNDM1ODgsIDY4NDg1LCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIAotICAgIDkzOTkxLCAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCA2NjM5NiwgOTIzMDEsIAotICAgIDAsIDg4OTUsIDUyNTMsIDcwMDI1LCA1NDU4LCA5MTc2MjksIDI4NjYsIDEyOTA0NSwgMTI3ODYwLCAxMTA5OCwgNjg0MzMsIAotICAgIDY3MDAsIDEyMDQ4NCwgMCwgMTIwNTgzLCAxOTQ4MjQsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgNzA1OSwgOTgzNjc3LCAKLSAgICA2Mzk5NywgOTYwNCwgNzg3MDAsIDc0NDEsIDYzODI2LCA2Nzk3MCwgODM0MzUsIDY0MzkyLCA5MjYyNiwgOTgzNjg3LCAKLSAgICAyODQ0LCA3NDYxMCwgNDE5NzQsIDY3Mzk3LCAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCA5ODM4OTksIDMxMDQsIAotICAgIDE5NDczNCwgMCwgMTIxMzA0LCA5ODMyMzUsIDUzMDgsIDgzNDM0LCAyOTAsIDAsIDEyMTMzOCwgMjg2MiwgMjc5MiwgCi0gICAgMTk1MDg4LCA5Mjk2MywgNzc5ODQsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAKLSAgICAxODE0LCA3ODQ2NCwgMTAyNDAsIDY2Mjg1LCA3NDMwNSwgMTI4MzgyLCA3NDUyOCwgNjU5MDMsIDcxNDU0LCA0MjY0NiwgCi0gICAgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNDM1MTMsIDY0NDgyLCA5MjUyNCwgODE2MywgNjUyNzAsIDAsIDc3OTMyLCAwLCAKLSAgICA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCA3NTAzNywgMTI4MzQ5LCA0MzMyMywgMTIwNTEzLCAxMTk4OTcsIDkwNzEsIAorICAgIDEyODIwNCwgMjg5LCAxMDEwMjksIDQ2OTQsIDExNDIwLCA0NjkwLCAxMjI4OTksIDEwMDc4OSwgOTE3OTc4LCA0NjkzLCAKKyAgICA3Mzg5MywgNDI3MjQsIDY5OTc3LCA0Njg4LCAxMjA0NTQsIDEyODUwNywgOTgzODEzLCA2Nzk5NCwgODIzOCwgMzExMCwgCisgICAgMTIwMTYyLCAzNTY1LCAxMjAxNjMsIDY1MjgsIDc4Mzg3LCA0MzAzNSwgNjk4OTgsIDIxOCwgOTgzODUwLCAxNTIwLCAwLCAKKyAgICA0Nzg2LCA5ODMxNjgsIDQzMjI1LCA0NjAyLCA5MjQwMCwgNzgxNjcsIDEwMDg4LCA2NTQ4LCAxMjExNTcsIDEyMDE1NiwgCisgICAgNDM5NzgsIDg5ODgsIDg4ODgsIDY1NzI3LCA3NDgxMiwgNjk3MDksIDk4Mzk2NywgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgCisgICAgMTIxNDM2LCAwLCA5OTc1LCAxMTM3MDQsIDExOTkwMiwgNDY4OSwgODkzMiwgMTI1MjM4LCA2NTU2MCwgMTE5MjA5LCAKKyAgICA3NDQ0MSwgNzg4MTAsIDEyMjg4MSwgMTI4NzA3LCA2Nzk4NywgMCwgMTIxMDIxLCAwLCA2Nzk4OSwgMTE5MDI5LCAxMDA2NSwgCisgICAgODIwNywgNzE5MDAsIDkyNjEzLCAxMjgwMTEsIDEwMTA5MCwgNjYyLCAxMjUyMjEsIDkyNDQsIDE5NDg2MywgODMxODMsIAorICAgIDExOTI2MSwgOTgzNDMwLCA5MTc4ODksIDEyMDkwMSwgOTE3ODM4LCA0MTkyOSwgMCwgNzEwODQsIDY2Njc0LCA0MTkyNiwgCisgICAgNjk5OTQsIDEyMDQ0MywgMTA1MTMsIDY0NjM3LCAxOTQ4NjIsIDY4MDEzLCA1MiwgMTMxMTgsIDY0NzUsIDE5NTAwNCwgCisgICAgODM0NzksIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIDEyODQ4NiwgNjc5OTIsIDc0MDg1LCAwLCAzOTc4LCAxMjg0MjUsIAorICAgIDkxNzk0NSwgNzQwMTUsIDExNTgyLCA5Mjc2OCwgMTIyODEsIDEyNzA0MywgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgCisgICAgMTI1MDE0LCAxMjg4MDgsIDExNzY1LCA2NTI1OCwgMTAzNjksIDk4MzQ5OCwgMTU4NSwgNzE5MiwgMTAyNDksIDQyMiwgCisgICAgMTUwMCwgMjAzNiwgOTg2LCAxOTQ4NTksIDY0Mzk0LCA1NzgxLCA1NTk5LCA2NDI5NCwgMjQ5NCwgMTIwNDUwLCA0ODYxLCAKKyAgICA3NDAyMSwgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDcyODcxLCA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgCisgICAgNzE5MDcsIDEyMDQxMCwgMTAwNjcxLCAxMjA0NTMsIDY0ODIxLCA5NDc4LCAyNTA4LCA5MjY4MywgMCwgMjAyLCAxMjgyNDYsIAorICAgIDc0MTMxLCAxMjQyLCA2NTUxNCwgMTIxMTcwLCA2Mzk0MCwgMTIxMzYzLCA2NDUzMywgNzE4ODMsIDEyMDQ0NiwgNjc4NDIsIAorICAgIDExOTkwLCA5MjQwNSwgNjM5MzksIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgNzg2NzEsIDY0ODI5LCA5MzAyMCwgNjk0MywgCisgICAgOTE3OTM0LCA1ODU5LCA5ODM5ODAsIDI4NTgsIDk4MzM2MywgNjY3ODEsIDk4MzkxNCwgNjkyMzksIDk4MzM4MCwgNjc4NzEsIAorICAgIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgNjc3MDEsIDI3NTEsIDEyNjYyLCAyNzYzLCA4OTUzLCA2NDcwMSwgMTA3MzEsIAorICAgIDEyOTIyLCA3MDUyLCA5MTc4MzksIDY2NDI0LCA2Mzk5MiwgMCwgNjM5MjAsIDc0MTI4LCAyODU2LCAxMTk5MTAsIDQ3LCAKKyAgICA2OTkwOCwgNzEwNTMsIDY1ODU4LCAxMDA4NjMsIDEyOTAzMywgNjc4MjksIDc4OTksIDk4MzU3NSwgODQxNywgNDM3OTgsIAorICAgIDcwNzIsIDc0MTk1LCAwLCA0MDMzLCAxMjEyODksIDQzOTkyLCAxMjEwODEsIDk4MzMxNSwgMjEyLCA2NDYwMCwgMTkwMywgCisgICAgMTIzMjAsIDgzNDg0LCAxMjA4OTQsIDE5NDU2MywgMTAwOTc5LCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDkzMDY0LCAwLCAKKyAgICA5ODM3NTYsIDExODc5OCwgMTI5MSwgNzQ4MjgsIDAsIDEyMDQzNSwgOTUzMSwgMTMxNTUsIDg1MDUsIDY4Mzc5LCAxMjA2MiwgCisgICAgMTIxMjUzLCAxMjEyMTYsIDY1NDg3LCA5MjE4OSwgNDE4MzcsIDEyMDYxMSwgODI0NiwgMTI4ODc0LCA5MzA2NiwgMTAwNjgwLCAKKyAgICAxMjA0MzMsIDE5NDU3MCwgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMTIxNDMxLCA2NDQyNiwgCisgICAgOTgzMDkyLCAxOTQ5NDgsIDIyMzAsIDkxNzc4OCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDEwMDg2OSwgMTIwODU4LCAKKyAgICA5MjcxNSwgNzA3ODgsIDEzMjAsIDEyMTQ2MSwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCAKKyAgICA1OTg1LCA5MTc5MjgsIDExOTU5OCwgOTgyMCwgMTE5ODkyLCAxMjE4NywgOTgzODQxLCA3MTA0MSwgNTk4NCwgMCwgNDMzMDgsIAorICAgIDQzOTMsIDY3NjUwLCAxMTM3ODcsIDEyNzAxMywgNzQ4MjIsIDAsIDc0ODI2LCA2NDczMywgOTgzMjE0LCAxMjc4OTgsIAorICAgIDM0OTEsIDY3MTQ2LCAxMjExNDIsIDEyODIxOSwgMzUxNCwgNjU0ODUsIDcyNDI4LCA3NDkyLCAxMjg4NjAsIDc0NjA1LCAKKyAgICA3Mjc2OCwgNzUxNCwgOTgzMzY5LCAxMjY1ODUsIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDYzOTIxLCAxMjExNzgsIAorICAgIDYzOTI1LCAxMjAxNjEsIDc2MTAsIDIxOSwgMTI4MTU4LCA3ODcyMiwgNjkyLCA0MzU4OCwgNjg0ODUsIDQxNjM1LCA0MzI0MSwgCisgICAgOTY4OCwgNzE0NywgOTUzNSwgMTk0OTg5LCA5Mzk5MSwgOTgzOTQ1LCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCA5MTc5MTgsIAorICAgIDcxNDksIDc0NTMsIDExOTU2MCwgODAxMywgNjYzOTYsIDkyMzAxLCAwLCA4ODk1LCA1MjUzLCA3MDAyNSwgNTQ1OCwgCisgICAgMTk0NjUxLCAyODY2LCAxMTg4MDUsIDEyNzg2MCwgMTEwOTgsIDY4NDMzLCA2NzAwLCAxMjA0ODQsIDEyOTMwOCwgMTIwNTgzLCAKKyAgICAxOTQ4MjQsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgNzA1OSwgOTgzNjc3LCA2Mzk5NywgOTYwNCwgNzg3MDAsIDc0NDEsIAorICAgIDYzODI2LCA2Nzk3MCwgODM0MzUsIDY0MzkyLCA5MjYyNiwgOTgzNjg3LCAyODQ0LCA3NDYxMCwgNDE5NzQsIDY3Mzk3LCAKKyAgICAxMjEzOSwgNjc5NzEsIDEyNzE2NiwgOTgzODM0LCAzMzU4LCA2NTI5NSwgOTgzMjkyLCAzMTA0LCAxMDA3NzksIDAsIAorICAgIDEyMTMwNCwgOTgzMjM1LCA1MzA4LCA4MzQzNCwgMjkwLCAwLCAxMjEzMzgsIDI4NjIsIDI3OTIsIDkyNDgzLCA5Mjk2MywgCisgICAgNzc5ODQsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAxMDEwMDgsIDkxNzk3MSwgMTgxNCwgCisgICAgNzg0NjQsIDEwMjQwLCA2NjI4NSwgNzQzMDUsIDEyODM4MiwgNzQ1MjgsIDY1OTAzLCA3MTQ1NCwgNDI2NDYsIDc2MDYsIAorICAgIDI1OTEsIDI4MzcsIDQzNDEsIDQzNTEzLCA2NDQ4MiwgOTI1MjQsIDgxNjMsIDY1MjcwLCAxOTQ4MjUsIDc3OTMyLCAwLCAKKyAgICA5MTEyLCA3MjcyMSwgODYzLCA5NDkwLCA3NTAzNywgMTI4MDM3LCA0MzMyMywgMTIwNTEzLCAxMTk4OTcsIDkwNzEsIAogICAgIDY4MDU0LCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAxMjExMzYsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgOTI0MTUsIAogICAgIDY2NTg3LCAxMjQ5ODcsIDAsIDkyNDAxLCA0MzkyNywgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAxMjA5ODAsIDEwNjI5LCAKLSAgICAxMjc4NjksIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI3MjY3LCA5MjM5MSwgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgCi0gICAgNDM5NjksIDQzMTkzLCAxMDczNywgMzQ2MywgMTIwOTc1LCA5ODMzNTEsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgCi0gICAgNTgxMSwgMTIzNDUsIDcwNDksIDExODgxMSwgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgOTI5MzksIDAsIDAsIDEyODA0MSwgCi0gICAgNjc5MDMsIDY3NzM5LCAxMjYyLCAxMjAxNjUsIDY1NjEsIDE5OTM5LCAxMjg2NzMsIDAsIDEyNzMxOCwgMTE5OTA2LCAKLSAgICA3MDMwMCwgMCwgOTgzMDk3LCAwLCA5ODM2NjcsIDExOTkwNywgNjQ2MTIsIDExOTkxLCAxMjA2NTQsIDAsIDkyOTQzLCAKLSAgICAxNTAyLCA5MTc1NjgsIDEyNzk4OCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgODQzMCwgMCwgNzEyMjMsIAotICAgIDEyMDc1OCwgMCwgNzQwNTcsIDk2MDMsIDEyODA3OSwgNTI1NCwgMTIwNzQyLCA3NzI0LCA3NDM4OCwgNjgzNzUsIDEwNzk2LCAKLSAgICA1MTI5LCAwLCA3MDgxNiwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAxMTcyMSwgNzA4MDQsIAotICAgIDQ3OTgsIDEyMTQ2OCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCA2ODYxMCwgCi0gICAgNjg4MjQsIDY4NjI2LCA4OTQsIDMwMCwgMTIwODc1LCAxMjMwNiwgNjYyMzUsIDgwMDQsIDAsIDExOTU3NCwgMjU2MiwgCi0gICAgNzAxNTYsIDEyMDg1NiwgNDI1MDMsIDkyOTAwLCAxMTY1MiwgOTE3ODEzLCA5MTc3OTksIDExOTI0MSwgNjQ2OTksIAotICAgIDEyNjU2OSwgNTA5NiwgNTA5NSwgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgNzA4NzMsIDAsIAotICAgIDEzMTU2LCAxMjkwNTcsIDEwODMyLCA1MDkzLCAwLCA2OTg1MiwgNzI0MzAsIDUwOTIsIDEwNzA4LCAxMTMyNywgMCwgNTA5MSwgCi0gICAgMTc2LCAwLCA5MTUzLCA0MTA0LCA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAxMjI3MiwgOTgzMiwgMTE3NzcsIAotICAgIDcxMjk5LCA2NjgxNywgNDI4ODEsIDAsIDg5ODAsIDExODk4OCwgNjc4NjEsIDg4NDQsIDcyMDksIDAsIDAsIDQyNzgsIAotICAgIDEyODgwOSwgMCwgMTE5MTYwLCA3MDgyMSwgOTA3NCwgNDM0OCwgMCwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAKLSAgICAxNzg2LCA2NjEsIDEyODExNiwgMCwgOTE3OTI1LCA3NDQyMywgNzEzNDUsIDU4NiwgNzQ0MTQsIDY0MzU5LCAxMjY3LCAKLSAgICAxMjgyNjksIDY1NDY4LCAxOTQ5NjYsIDY1NzMxLCAwLCA3MjQwNSwgMzYyMSwgOTI5MzIsIDY2NjY2LCA2NDIxMSwgMCwgCi0gICAgNjU2MiwgMTI5MjgsIDE5NDkwNCwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAxMjc5NTMsIDcwMzQzLCAxNzE0LCA3NDQwNiwgCi0gICAgMTIwNzUxLCAwLCAxMjExMTMsIDk4Mzk3NiwgNjYyMjUsIDcwMTEwLCA3MDg2NywgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgCi0gICAgMTIwNjk0LCAxMjEwMjUsIDEwMjkxLCAxMDMyMywgMjgyNiwgMTEzODA5LCAxMjY1MTAsIDAsIDQyMDA4LCA5NzA4LCAKLSAgICA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCA5MjE2NCwgMTIyMDYsIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAKLSAgICA5Njg5LCA5ODM5NjksIDY1ODMzLCA3Nzg0OCwgMCwgMTc2NSwgMCwgMTI4NjIyLCA2NTU4OCwgOTIzNTAsIDk4MzI4MSwgMCwgCi0gICAgODQwMSwgOTgzOTI0LCA0MjAxNCwgMTI3MzA3LCA3MDMwLCAxMjA5NjksIDEwNDc5LCA2NDk1OSwgMjg1MiwgMCwgMTIxMjI1LCAKLSAgICAwLCA3MDgxOSwgMTI4NTg2LCA5MTc5NTEsIDY5NjMsIDEyNjcwNCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgMTAxNDcsIAotICAgIDEyOTM1LCAxMjc1NjgsIDEyNjQ4MywgMTIxMjgxLCAwLCAwLCA3ODc1NywgMCwgMTEzODE1LCAxMjEzMDIsIDAsIDk5OTQsIAotICAgIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgNzA4NCwgMjc2NSwgNzg0NjYsIDQzMzgyLCAKLSAgICAwLCAxMjA3MTksIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMTI3Nzk3LCAKLSAgICAwLCA3Nzk4OCwgMjYzLCAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCA3ODM4NSwgOTgzNzQyLCA3MDMxMywgMTI5MTQwLCAKLSAgICA2OTMxLCA2OTcyMiwgNDMyNjEsIDcxNzcsIDcwMTA1LCA5MjY1MiwgMCwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgCi0gICAgMTI2NTc1LCA2ODA2LCA2OTkyLCA0MjAxOSwgMCwgNDEyOTAsIDk4MzcxNiwgNzUwLCAwLCA3MTMwNCwgMTAxNjMsIDYzOTEzLCAKLSAgICA3MTMwMCwgNzAzMiwgNTk1NCwgNjQ5MzEsIDQzMTQsIDEyODYwMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCAKLSAgICA3Nzk5MywgNzA4MTgsIDEzMTY1LCA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyNTAwNSwgNDEzNzgsIAotICAgIDExMDA4LCA2OTM4LCA3MDAyNiwgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDcwODIzLCAxOTQ5OTAsIDk4MzYwNCwgCi0gICAgMzg5MiwgNjg2MzIsIDY5NjQyLCA2NzEyLCA2NjA0NSwgNDE0NzAsIDY0ODA1LCAwLCA5ODMyMTMsIDEyNjUxMSwgNjQ4MDEsIAotICAgIDEyNzgxOCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCAKLSAgICA1OTUyLCAxMjgxLCA0Mzc0NywgMCwgMTIxMzk5LCAxMDY3NywgNjA0LCA0MTA5NywgOTE4MiwgMTg1OSwgMCwgOTI2MDMsIAotICAgIDM0MjUsIDEyNzQ4OCwgMTI2NTIzLCAyODM2LCA5ODM3MzgsIDAsIDk3MDcsIDExMzcxOCwgNDMyMDIsIDAsIDAsIDY1MTk5LCAKLSAgICAxNzM4LCAxMjgzMTEsIDY3NzA3LCAyODMyLCA5MjcwMiwgOTY3MCwgMTExMDEsIDAsIDY2Mzc0LCA5MTc5NTYsIDExOTU1MiwgCi0gICAgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCA5ODMwODEsIDczNzUyLCA3MDMwNSwgNjQ4NzIsIDkyMzQwLCAxMzMxLCAwLCAwLCAKLSAgICAxMjEzNzcsIDEyNzA4LCA5MTc5NTQsIDUwOTAsIDUwODksIDEyNzk3NywgOTE3OTUzLCAxMTkxMDksIDAsIDcwODI2LCAzMTksIAotICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDAsIDUwODcsIDc0ODg2LCA3NjQwLCA5NiwgNTA4NiwgOTgzNTk3LCA5MjM3OSwgMCwgCi0gICAgNTA4NSwgNjQyODYsIDkyNjY1LCAxMTM3MTcsIDQxNDIyLCAxMTk2MTcsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDExOTA0MiwgCi0gICAgMCwgNTAxMSwgMCwgOTgzMzI5LCAxMjY1ODcsIDAsIDEyMDY5OCwgMTE4ODc0LCA2Njc3LCA3NjAxLCAwLCA1OTEsIDY0NDE5LCAKLSAgICAxMTg5NTMsIDkyMjYyLCAxMTg4OTUsIDcwNzk5LCA3MDA4NCwgMCwgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCAKLSAgICA3MTM0MywgNDUzNCwgNDEyNzAsIDEyODg3NiwgNjcxMzgsIDY1NTc0LCAxOTQ5NDcsIDkyMjQsIDY3MTQwLCAzNjcxLCAKLSAgICA4OTc2LCA2NzEzOSwgMCwgNDEyNzUsIDYzNzIsIDgyOTk3LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCA5MjM2OCwgCi0gICAgNDEyNzMsIDEyMTQ0OCwgNzQ1MzEsIDY3MjgsIDAsIDk3MTUsIDEyOTI5NywgODI1OCwgMTE3NTMsIDc0ODIwLCAwLCA5NjAyLCAKLSAgICAxMTg5MTksIDQyLCAxMTE5MSwgNDM2ODgsIDY4MjQzLCAwLCA3NDU4LCAwLCAwLCA2NTM4NSwgNjcxMzUsIDY3MTM0LCAKLSAgICAxMTk1OCwgMTExNjUsIDkxNzgyMiwgMTI1MDg3LCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAxOTUwNjQsIAotICAgIDY3MTMyLCA2NzEzMSwgNDI4NTgsIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIDk3MzcsIDEzMTA5LCAwLCA5NDY3LCAKLSAgICA1NTU4LCA4ODc4LCA0Mzg0NCwgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMCwgOTA4NiwgNjQ1NjYsIDk4MzE4NSwgCi0gICAgNjQ1ODQsIDc0MzcsIDc0NTQsIDEyNTk0LCA3Mzc0OSwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgCi0gICAgMTI1MDkyLCAzODA1LCAwLCA2NzEyOCwgNDQwMDEsIDQxMDA4LCAxMjgwNTIsIDYzMDcsIDE5OTQ5LCA2NzEyOSwgNzU0NCwgCi0gICAgMTI0OTg5LCA0MzQ2OSwgMTIxMDk1LCA5ODM3MzUsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDY3MTI0LCA3NjAyLCA2NDcyOSwgCi0gICAgMCwgNDM1MjEsIDAsIDQyMzAyLCA0MzcxMSwgNDM1MjMsIDQxNDQ3LCA1NTU5LCA2ODQ4MywgODcwNCwgMjM5NywgNTU1NiwgCi0gICAgMCwgMCwgMCwgOTAxMSwgOTYzMCwgMTExNjYsIDAsIDkzOTk4LCA1NTA2LCA5MjQ5OCwgMTkxMSwgNjY2NTIsIDY3Njg2LCAKKyAgICAxMDEwMDQsIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI3MjY3LCA5MjM5MSwgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgCisgICAgNDM5NjksIDQzMTkzLCAxMDczNywgMzQ2MywgNzI4NTgsIDE5NDc5MCwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCA1ODExLCAKKyAgICAxMjM0NSwgNzA0OSwgMTE4ODExLCA1MTk1LCAxOTUwODEsIDE5NDk1OCwgNjY2MzksIDkyOTM5LCA4MzE5MywgMTIxMDEwLCAKKyAgICAxMjgwNDEsIDY3OTAzLCA2NzczOSwgMTI2MiwgMTIwMTY1LCA2NTYxLCAxOTkzOSwgMTI4NjczLCAwLCAxMjczMTgsIAorICAgIDExOTkwNiwgNzAzMDAsIDAsIDk4MzA5NywgMCwgOTgzNjY3LCAxMTk5MDcsIDY0NjEyLCAxMTk5MSwgMTIwNjU0LCAKKyAgICA5MTc4NjYsIDkyOTQzLCAxNTAyLCA5MTc1NjgsIDEyNzk4OCwgOTEwNywgMTIyOTA0LCA1NzAyLCAzNjU1LCA2NzY2MSwgCisgICAgODQzMCwgMCwgNzEyMjMsIDEyMDc1OCwgMTE4OTYzLCA3NDA1NywgOTYwMywgMTI4MDc5LCA1MjU0LCAxMjA3NDIsIDc3MjQsIAorICAgIDc0Mzg4LCA2ODM3NSwgMTA3OTYsIDUxMjksIDAsIDcwODE2LCA1OTAsIDc1NzksIDU2MTQsIDU4OTMsIDkyMjgwLCAxMTcyMCwgCisgICAgOTI0OTYsIDExNzIxLCA3MDgwNCwgNDc5OCwgMTIxNDY4LCAxMTkzMTYsIDY2MDM4LCA0NzkzLCA2Nzg1MSwgMTE3MjYsIAorICAgIDEyNzU0MSwgNzQyMDQsIDY4NjEwLCA2ODgyNCwgNjg2MjYsIDg5NCwgMzAwLCAxMjA4NzUsIDEyMzA2LCA2NjIzNSwgODAwNCwgCisgICAgMTI3MTg5LCAxMTk1NzQsIDI1NjIsIDcwMTU2LCAxMjA4NTYsIDQyNTAzLCA5MjkwMCwgMTE2NTIsIDkxNzgxMywgOTE3Nzk5LCAKKyAgICAxMTkyNDEsIDY0Njk5LCAxMjY1NjksIDUwOTYsIDUwOTUsIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIAorICAgIDcwODczLCAwLCAxMzE1NiwgMTI5MDU3LCAxMDgzMiwgNTA5MywgMTk0ODM5LCA2OTg1MiwgNzI0MzAsIDUwOTIsIDEwNzA4LCAKKyAgICAxMTMyNywgMCwgNTA5MSwgMTc2LCAxMTM4MTAsIDkxNTMsIDQxMDQsIDc4NTk5LCA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIAorICAgIDEyMjcyLCA5ODMyLCAxMTc3NywgNzEyOTksIDY2ODE3LCA0Mjg4MSwgOTgzNzg1LCA4OTgwLCAxMTg5ODgsIDY3ODYxLCAKKyAgICA4ODQ0LCA3MjA5LCA5ODM3NDEsIDAsIDQyNzgsIDEyODgwOSwgMCwgMTE5MTYwLCA3MDgyMSwgOTA3NCwgNDM0OCwgCisgICAgOTE3ODcyLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIDE3ODYsIDY2MSwgMTI4MTE2LCA5MTc4NTcsIAorICAgIDkxNzkyNSwgNzQ0MjMsIDcxMzQ1LCA1ODYsIDc0NDE0LCA2NDM1OSwgMTI2NywgMTI4MjY5LCA2NTQ2OCwgMTI1MjM0LCAKKyAgICA2NTczMSwgOTgzODk5LCA3MjQwNSwgMzYyMSwgOTI5MzIsIDY2NjY2LCA2NDIxMSwgMTI5MzUxLCA2NTYyLCAxMjkyOCwgCisgICAgMTIxMzA2LCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDEyNzk1MywgNzAzNDMsIDE3MTQsIDc0NDA2LCAxMjA3NTEsIDAsIAorICAgIDEyMTExMywgMTI3Mzg5LCA2NjIyNSwgNzAxMTAsIDcwODY3LCA0MjY2MCwgMTE0MzYsIDIwNzAsIDY0LCAxMjA2OTQsIAorICAgIDEyMTAyNSwgMTAyOTEsIDEwMzIzLCAyODI2LCAxMDA1MjYsIDEyNjUxMCwgMTI3NTU3LCA0MjAwOCwgOTcwOCwgNDI3MTAsIAorICAgIDAsIDQyMDExLCA0MTk5OSwgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgOTY4OSwgCisgICAgOTgzOTY5LCA2NTgzMywgNzc4NDgsIDAsIDE3NjUsIDk4MzMwMSwgMTI4NjIyLCA2NTU4OCwgOTIzNTAsIDk4MzI4MSwgMCwgCisgICAgODQwMSwgOTgzOTI0LCA0MjAxNCwgMTI1MjMwLCA3MDMwLCAxMjA5NjksIDEwNDc5LCA2NDk1OSwgMjg1MiwgNzI3MjgsIAorICAgIDEyMTIyNSwgMCwgNzA4MTksIDExOTg4NywgMTI1MjI3LCA2OTYzLCAxMjY3MDQsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIAorICAgIDEwMTQ3LCAxMjkzNSwgMTI3NDAxLCAxMTkxODUsIDcyODEyLCA3MTI2NSwgMTI4Nzc5LCA3ODc1NywgMCwgMTEzODE1LCAKKyAgICAxMjEzMDIsIDEyMjg5MiwgOTk5NCwgMTI0NjcsIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCAKKyAgICA3MDg0LCAyNzY1LCA3ODQ2NiwgNDMzODIsIDk4MzgxNSwgMTIwNzE5LCAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIAorICAgIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDEyNzc5NywgMCwgNzc5ODgsIDI2MywgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgCisgICAgNzgzODUsIDEwMDY5MywgNzAzMTMsIDEyNzQ3NiwgNjkzMSwgNjk3MjIsIDQzMjYxLCA3MTc3LCA3MDEwNSwgOTI2NTIsIAorICAgIDExOTg5NSwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgMTI2NTc1LCA2ODA2LCA2OTkyLCA0MjAxOSwgMTk1MDU2LCAKKyAgICA0MTI5MCwgOTgzNzE2LCA3NTAsIDEyMTA4OCwgNzEzMDQsIDEwMTYzLCA2MzkxMywgNzEzMDAsIDcwMzIsIDU5NTQsIAorICAgIDY0OTMxLCA0MzE0LCAxMDA2MzYsIDE5OCwgNjg0NTMsIDczMCwgMTAwNjM1LCA2MzkwNywgNzc5OTMsIDcwODE4LCAxMzE2NSwgCisgICAgNzEwNywgNzQxNzEsIDQyODA0LCA2NzgsIDgyNDAsIDc4MDE1LCAxMjUwMDUsIDQxMzc4LCAxMTAwOCwgNjkzOCwgNzAwMjYsIAorICAgIDkyNjM3LCAyMDk3LCA2NjI0NiwgMTIwNTYwLCA3MDgyMywgMTk0OTkwLCA5ODM2MDQsIDM4OTIsIDY4NjMyLCA2OTY0MiwgCisgICAgNjcxMiwgNjYwNDUsIDQxNDcwLCA2NDgwNSwgMCwgOTgzMjEzLCAxMjY1MTEsIDY0ODAxLCAxMjc4MTgsIDQ5NywgMTIxMDAsIAorICAgIDU5NTMsIDkyNjY3LCA3Nzk2LCA2OTY2OSwgNDMyNTQsIDczODMxLCAxMjgyNDMsIDEwMjkzLCA1OTUyLCAxMjgxLCA0Mzc0NywgCisgICAgMCwgMTIxMzk5LCAxMDY3NywgNjA0LCA0MTA5NywgOTE4MiwgMTg1OSwgMCwgNzI4NTYsIDM0MjUsIDEyNzQ4OCwgNzI3MjUsIAorICAgIDI4MzYsIDk4MzczOCwgMCwgOTcwNywgNzA3NDIsIDQzMjAyLCAwLCAwLCA2NTE5OSwgMTczOCwgMTE5ODkxLCA2NzcwNywgCisgICAgMjgzMiwgOTI3MDIsIDk2NzAsIDExMTAxLCA5ODM3OTUsIDY2Mzc0LCAxMDA3MDQsIDExOTU1MiwgMjgyMiwgNjgxMjIsIAorICAgIDQ0MzYsIDkyNTE5LCA5ODMwODEsIDczNzUyLCA3MDMwNSwgNjQ4NzIsIDkyMzQwLCAxMzMxLCA5MTc5NTUsIDk4MzcwNiwgCisgICAgMTIxMzc3LCAxMjcwOCwgMTI5MzMzLCA1MDkwLCA1MDg5LCAxMjc5NzcsIDMyMDAsIDEwMDk4NCwgMCwgNzA4MjYsIDMxOSwgCisgICAgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgMCwgMTk0ODgxLCA1MDg3LCA3NDg4NiwgNzY0MCwgOTYsIDUwODYsIDEyNzc2MywgCisgICAgOTIzNzksIDAsIDUwODUsIDY0Mjg2LCA5MjY2NSwgMTEzNzE3LCA0MTQyMiwgMTAwNzEwLCAxMTk5MDEsIDQyMzU2LCAzNzcyLCAKKyAgICAxMTkwNDIsIDExOTkwOSwgNTAxMSwgMTk0ODgyLCAxOTQ3NDIsIDEyNjU4NywgMCwgMTIwNjk4LCAxMTg4NzQsIDY2NzcsIAorICAgIDc2MDEsIDE5NDcyNSwgNTkxLCA2NDQxOSwgMTE4OTUzLCA5MjI2MiwgMTE4ODk1LCA3MDc5OSwgNzAwODQsIDEyNTExMSwgCisgICAgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCA3MTM0MywgNDUzNCwgNDEyNzAsIDEyODg3NiwgNjcxMzgsIDY1NTc0LCAKKyAgICAxOTQ5NDcsIDkyMjQsIDY3MTQwLCAzNjcxLCA4OTc2LCA2NzEzOSwgMCwgNDEyNzUsIDYzNzIsIDgyOTk3LCA1NTI2MSwgCisgICAgNzk2MywgNjM3MSwgMCwgNTY4LCA5MjM2OCwgNDEyNzMsIDEyMDMyMiwgNzQ1MzEsIDY3MjgsIDk4MzYwOSwgOTcxNSwgCisgICAgMTIwOTc1LCA4MjU4LCAxMTc1MywgNzQ4MjAsIDk4Mzk2NSwgOTYwMiwgMTE4OTE5LCA0MiwgMTExOTEsIDQzNjg4LCAKKyAgICA2ODI0MywgMCwgNzQ1OCwgNzM5NzIsIDk4Mzk2MCwgNjUzODUsIDY3MTM1LCA2NzEzNCwgMTE5NTgsIDExMTY1LCAxOTQ2OTgsIAorICAgIDEyNTA4NywgNjI1NCwgNDI3MjEsIDY2MzM2LCA4MDQ1LCAxMTU1MCwgMTk1MDY0LCA2NzEzMiwgMTI2OTYsIDQyODU4LCAKKyAgICAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCA3MzAwLCAwLCA5NDY3LCA1NTU4LCA4ODc4LCA0Mzg0NCwgCisgICAgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMTAwNzYyLCA5MDg2LCA2NDU2NiwgOTgzMTg1LCA2NDU4NCwgNzQzNywgCisgICAgNzQ1NCwgMTI1OTQsIDczNzQ5LCA2ODM2MiwgNDU0NiwgNzczMSwgMCwgNzAwNDgsIDc0MjQzLCAxMjUwOTIsIDM4MDUsIDAsIAorICAgIDY3MTI4LCA0NDAwMSwgNDEwMDgsIDEyODA1MiwgNjMwNywgMTk5NDksIDY3MTI5LCA3NTQ0LCAxMjQ5ODksIDQzNDY5LCAKKyAgICAxMjEwOTUsIDk4MzczNSwgMTAxNTIsIDY0NDIyLCA2NTA5MSwgNjcxMjQsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgCisgICAgMTIwNzcyLCA0MjMwMiwgNDM3MTEsIDQzNTIzLCA0MTQ0NywgNTU1OSwgNjg0ODMsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIAorICAgIDY2ODAxLCA5MDExLCA5NjMwLCAxMTE2NiwgMCwgOTM5OTgsIDU1MDYsIDkyNDk4LCAxOTExLCA2NjY1MiwgNjc2ODYsIAogICAgIDk5NjEsIDg4NDUsIDY2Njk4LCA2ODMyNSwgMTA3OTIsIDg4ODksIDEyMTQwMiwgMjA5OCwgMCwgNjQ3NTEsIDcwMzA5LCAKLSAgICA2NjYyMiwgMTI2NjI2LCAwLCA3NDM2NCwgNjg4MTYsIDEyOTE1MiwgOTgzODA1LCA0MjkwOSwgNzU1MiwgNzAwOTIsIAotICAgIDE5NDU2NywgNjUzODQsIDcyMjMsIDQ1NTksIDkzMDE1LCAxOTU2LCA0MzEzOCwgNzAyNCwgNjU3MjgsIDQzNDkwLCAxMjEwLCAKLSAgICAxOTUwNzcsIDY1MTc1LCAxMDE4NCwgNDMxNDAsIDQzNjU0LCAwLCA5ODMyMzMsIDEyNTA0NSwgMzgsIDg1MzMsIDY2NjY5LCAKLSAgICAxMTkxMjQsIDk4MzI5NSwgOTgzNzkyLCAwLCA0MzU3LCAwLCA3MDI4OSwgOTE3ODYzLCA3NDIzMywgOTk2NywgNzg4ODQsIAotICAgIDQyODYwLCAxMTk4MzgsIDEwOTQxLCA2NTcyMSwgNjk2MiwgMCwgODMyNzksIDExMzgwOCwgMCwgMTEwMTQsIDEyMDEyNiwgCi0gICAgODk0MiwgMTIwMDAsIDY5MjI0LCA5MjI2NywgMTI4NTM2LCAxMTk3NCwgNjczNjMsIDQyNzcyLCA0MjY1MCwgMTE2NTAsIAotICAgIDUwMTMsIDkyNjYzLCA2ODgxMCwgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDExMTkzLCA5ODM3NzAsIDAsIAotICAgIDY0NzE0LCA3MTQ3OSwgNzA4MDIsIDEyMTYyLCAxMjEyMCwgNDM0NzYsIDk4Mzc2NiwgMTEwMjQsIDc0ODExLCA2NjIyOCwgCi0gICAgMTA1NjMsIDkyOTU0LCAxMjcxOTYsIDQzNTIyLCAyNDYyLCA5Mjk1NSwgMTgzNywgMTI1MDg2LCA2Mzk3MiwgNjk1NywgMCwgCi0gICAgMTEzODIwLCA0OTUyLCA2NTcxOCwgNjQ0MDUsIDU1MDQsIDY1NzIwLCA2NTcxNCwgNjU3MTUsIDY1NzE2LCAxMjgwMjYsIAotICAgIDc1MDE2LCAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgMTI3MjEzLCA4MTA3LCA2NzE1NCwgMTEyNywgNDU1LCAwLCAKLSAgICA2Mzk2OCwgMTI3ODM1LCAzNDgzLCAxMTk1OTMsIDE5ODksIDk4MzE3NiwgNjk2NzgsIDkxMDQsIDM1MDMsIDY1Mzc1LCAKLSAgICA2ODMwMCwgNjY5NCwgNDI2MzMsIDE4NjQsIDAsIDc0MzA2LCA0MTQ0NiwgMjU0MCwgNzczNiwgMTIxNDM0LCA3NDA2NCwgCisgICAgNjY2MjIsIDEyNjYyNiwgMCwgNzA3MjQsIDY4ODE2LCAxMjkxNTIsIDEyNDk1MywgNDI5MDksIDc1NTIsIDcwMDkyLCAKKyAgICAxMjc0OTAsIDY1Mzg0LCA3MjIzLCA0NTU5LCA5MzAxNSwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA0MzQ5MCwgMTIxMCwgCisgICAgMTk1MDc3LCA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgOTE3OTAyLCAxMjg1NTgsIDEyNTA0NSwgMzgsIDg1MzMsIAorICAgIDY2NjY5LCAxMTkxMjQsIDk4MzI5NSwgOTgzNzkyLCAwLCA0MzU3LCAwLCA3MDI4OSwgOTE3ODYzLCA3NDIzMywgOTk2NywgCisgICAgNzg4ODQsIDQyODYwLCAxMTkzMjMsIDEwOTQxLCA2NTcyMSwgNjk2MiwgMCwgODMyNzksIDExMzgwOCwgMCwgMTEwMTQsIAorICAgIDEyMDEyNiwgODk0MiwgMTIwMDAsIDY5MjI0LCA5MjI2NywgMTI4NTM2LCAxMTk3NCwgNjczNjMsIDQyNzcyLCA0MjY1MCwgCisgICAgMTE2NTAsIDUwMTMsIDkyNjYzLCA2ODgxMCwgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDExMTkzLCAxOTQ2NzcsIAorICAgIDcyNzU0LCA2NDcxNCwgNzE0NzksIDcwODAyLCAxMjE2MiwgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgCisgICAgNjYyMjgsIDEwNTYzLCA5Mjk1NCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgOTI5NTUsIDE4MzcsIDEyNTA4NiwgNjM5NzIsIAorICAgIDY5NTcsIDAsIDExMzgyMCwgNDk1MiwgNjU3MTgsIDY0NDA1LCA1NTA0LCA2NTcyMCwgNjU3MTQsIDY1NzE1LCA2NTcxNiwgCisgICAgNzI4NzcsIDc1MDE2LCAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgMTI3MjEzLCA4MTA3LCA2NzE1NCwgMTEyNywgNDU1LCAKKyAgICAwLCA2Mzk2OCwgNzI4NjAsIDM0ODMsIDExOTU5MywgMTk4OSwgOTgzMTc2LCA2OTY3OCwgOTEwNCwgMzUwMywgNjUzNzUsIAorICAgIDY4MzAwLCA2Njk0LCA0MjYzMywgMTg2NCwgMCwgNzI4MTAsIDQxNDQ2LCAyNTQwLCA3NzM2LCAxMjE0MzQsIDc0MDY0LCAKICAgICAxMjg2MDEsIDEwNTIxLCA3MDc4NiwgNDIxNzMsIDk3MDUsIDc0MTI0LCA4NjA0LCA2OTU1LCAxMDkxNiwgNDM2ODQsIDYxNDksIAogICAgIDM4ODcsIDE5OTU2LCAxNDExLCAyODI0LCAwLCAxMDEwNiwgMTI3ODYyLCAxNDAzLCAxMjUwNTMsIDEzNDcsIDk2MzEsIAotICAgIDc0NDQ0LCA5ODM3NTMsIDEyNzk5NywgOTI5NTEsIDc0ODk3LCA4NjQwLCAwLCAyNTgsIDE2NTQsIDAsIDAsIDk4MzQ3OSwgCi0gICAgNDMzMTQsIDAsIDAsIDQwNDIsIDExNDc4LCAyODczLCA2Mzk3NywgMTE1MjIsIDQxNjY4LCA4NTQ5LCAxMDg2MSwgMTIxMDUzLCAKLSAgICA2Mzk3NiwgNzAzNzcsIDY4NjIzLCA2NzA4MiwgNjcwODEsIDQxMzkxLCA2NzA4NCwgODM0NjUsIDM3NiwgNjk4NywgOTIyMSwgCi0gICAgMCwgMCwgODgyMywgMTI4Njk3LCAxMjk0MywgNjUxODUsIDQxODY5LCAxMjYxOSwgMTI4MDY3LCAxMDE1NCwgOTgzMDQzLCAKLSAgICA3NDQzOSwgMjAzOSwgMCwgNzQ0NiwgMTY4NCwgNjM5NzksIDEwOTc0LCA0NTgsIDEyMDYyMCwgODI5NTAsIDY5NzkxLCAKLSAgICAxMjcxNjEsIDExOTE2LCA2NTAxNiwgMCwgNjk2NzEsIDQyMTE1LCAxMjEwNTcsIDEyMjg4LCA3ODA1NywgNjcwODAsIDE0OTMsIAotICAgIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgNjYxMCwgNjAzMCwgODA1OSwgNzUwOCwgCi0gICAgMTMxMzEsIDY3MDc0LCA2NzA3MywgMTI4NTA2LCA4Nzk0LCA0MTI3OCwgNDE2MjksIDEyMTU0LCA3NTA3MywgNDEyNzcsIAotICAgIDY0NjU4LCA5ODM0NTYsIDY0MzgwLCA2NjI1LCA0MjkxMSwgMTk5MDQsIDAsIDEyMTMwNSwgNzExOTMsIDY1MzcxLCA3MDc4LCAKLSAgICAxMjg2OTksIDgzMywgMTI4MjI4LCA2MzY5LCAxOTQ4MTUsIDEwOTc5LCA0MTk1MywgOTgzMzcwLCA0MTQzNCwgNjA2MiwgMCwgCi0gICAgMCwgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgOTg0MiwgNjcyMCwgNjU3NDQsIDcxMjAwLCA5ODM1OTIsIDEyMTIyMywgCi0gICAgMTI2NTY3LCA3NDA1LCAxMDEwNSwgNjU4MTAsIDAsIDQxNjMyLCA3NDkzLCA1NTI5MCwgOTI4OTAsIDQxNjIyLCAwLCAwLCAKLSAgICAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAxOTk1NCwgOTgwNSwgNTk5MCwgOTAwLCAwLCA2Mzk1NywgMTE5NjM4LCAwLCAKLSAgICAzNjEyLCAwLCA2NDM3NiwgOTM5ODcsIDUzODksIDkyNTk3LCAwLCA2NTkzOCwgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgCi0gICAgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIDgzMjIyLCA4MzIyMywgNjk1NiwgNDQwMywgMTk5NjIsIDY1NTU5LCAzMjk5LCAKLSAgICAxMjEwMDUsIDE5NDkzOSwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIDc1OTgsIDU0NiwgNDI0NjksIAotICAgIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgNDMwNzcsIDYzOTUyLCA4NDI1LCAKLSAgICAzNjAyLCA4MzI4LCAxMTc2NCwgODMxOTksIDgzMjAwLCA2NTA2NSwgNDExODMsIDEyOTA3LCAxMDI3MSwgMTAyODcsIDY4NCwgCi0gICAgNDM1MjUsIDEyNzk5NiwgMjg1NCwgODMyMTQsIDQ1OTIsIDY1NzU1LCA4MzIxNywgNjcxMjAsIDExOTYzLCA0MzYyMCwgCi0gICAgNjcxMTcsIDc4MjQ5LCA2NzEyMywgNjcxMjIsIDY3MTIxLCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDY5Njc3LCAKLSAgICA2NzExNiwgODY0OCwgMTI4Mzc3LCA2NzQxLCA0MzA0NywgMTE5OTAwLCAxMzE4MCwgNzgwNzcsIDQxOCwgMTIwNjUzLCAKLSAgICA2NDQ5NSwgMTAyOTUsIDEwMzI3LCAxMDM5MSwgNDE3NTIsIDY2ODQ2LCA4NjQxLCA0MTQ0OSwgODMxOTQsIDc0MTAwLCAKLSAgICA4MzE4NiwgMTA5MTEsIDY5NDIsIDEyMDg3OSwgMTAyNCwgNDI4NDksIDQxNzUxLCA2OTc3NiwgODk0MSwgOTgzNTU2LCAKLSAgICA0NTU0LCA2Njg5MiwgOTAyMywgMTE2ODUsIDEyMTQ3NiwgOTkyOCwgNjcxMDksIDY2ODY1LCAxMTQzNywgNDM3NDEsIAotICAgIDY3MTEzLCA2NzExMiwgNjM5NjcsIDEyOTA1NiwgNDEyMDYsIDEyNjI0LCA5MDQ5LCA0MTE4NSwgNDMxNjYsIDEyMTI3NSwgCi0gICAgODE1OSwgOTI2MTksIDExNjg2LCA3MTQ3OCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMTI5MDkwLCA5MjE4MywgCi0gICAgNjQ1MjMsIDEwMzQzLCAxMDQwNywgOTI3NjQsIDY2NjcxLCAxMTQ2NiwgMCwgMTI4MDAzLCA0Mjg5MCwgNzQwMTMsIDEyMDUwLCAKLSAgICA2ODIwMSwgMjg2MCwgMCwgMTI3OTM0LCA3MDgyOCwgNDI3OTIsIDU3NDMsIDEwNDI0LCAxMjA2NSwgNDI4NzIsIDEyMTQwMSwgCi0gICAgNDM4NzUsIDY3MTAzLCA4ODc1LCAwLCA2NzEwMiwgNjcxMDUsIDc1MzEsIDEyODQ3LCAyNDEzLCAxMTg5MTcsIDY3NDA0LCAKLSAgICA5NjIsIDAsIDEyODU1LCA0MTE5NiwgNDI1NjQsIDEyNzk3NSwgMTU4MiwgOTgzNzE1LCA1NTA4LCAwLCAxMjA5MDQsIAotICAgIDc0NTg4LCAxMDgwMSwgNjk4NzYsIDkyMzU0LCAxMTkyMDcsIDcxNzMsIDQ5NiwgMTA0MzksIDQzMTMsIDY0NjA3LCA2OTYzOCwgCi0gICAgNzg2MCwgMTI4MDQ5LCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIDc5OCwgNjQ2OTQsIDEyODAxLCAKLSAgICA4NDA2LCAxMTUzLCA4MzI2MywgNjQ3ODgsIDgzMjY1LCA4MDU0LCA5MTc0LCA2NzA4NywgNjcwODYsIDk5NjQsIDY3MDk2LCAKLSAgICA0MTYxMSwgNDY0MiwgNjY1NzQsIDExNTU2LCA0MjUxMiwgMCwgNzg4NTcsIDQyMDg5LCA3NDYxMywgOTAwOCwgMCwgCi0gICAgMTI2NTkyLCAxOTUwOTYsIDQyMDc5LCA4MzI0OCwgNzc5MjQsIDQyNTEzLCA3NzkyNywgNDI4NDIsIDczOTg1LCA2NTI4NSwgCi0gICAgNjgzMzgsIDgzMjM5LCA4MzI0MCwgODMyNDEsIDgzMjQyLCA5ODM1OTAsIDExMzM1LCA2NDA2OSwgNDIwOTMsIDM5MjAsIAotICAgIDkxNzg2OSwgMCwgMTExMTAsIDgzMjU1LCA0NTgwLCA0MTk2NywgODMyNTgsIDY0Mzg0LCA4MzI1MiwgODMyNTMsIDMwMjEsIAotICAgIDQyMDA0LCA5ODMwOTYsIDgzMjQ5LCA0MjMxNywgNDE5OTgsIDAsIDY5NDYsIDE5NDc1NSwgOTI5NjcsIDEyODQ1NSwgCisgICAgNzQ0NDQsIDE5NDk0NiwgMTI3OTk3LCA5Mjk1MSwgNzQ4OTcsIDg2NDAsIDEwMDk3NiwgMjU4LCAxNjU0LCAwLCAwLCAKKyAgICA5ODM0NzksIDQzMzE0LCAxMjc5ODcsIDcwNjk5LCA0MDQyLCAxMTQ3OCwgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgCisgICAgODU0OSwgMTA4NjEsIDEyMTA1MywgNjM5NzYsIDcwMzc3LCA2ODYyMywgNjcwODIsIDY3MDgxLCA0MTM5MSwgNjcwODQsIAorICAgIDY3NTg4LCAzNzYsIDY5ODcsIDkyMjEsIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIAorICAgIDEyODA2NywgMTAxNTQsIDkxNzkyMSwgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgNDU4LCAKKyAgICA3MjgzMSwgODI5NTAsIDY5NzkxLCAxMjcxNjEsIDExOTE2LCA2NTAxNiwgMCwgNjk2NzEsIDQyMTE1LCAxMjEwNTcsIAorICAgIDEyMjg4LCA3ODA1NywgNjcwODAsIDE0OTMsIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgCisgICAgNjYxMCwgNjAzMCwgODA1OSwgNzUwOCwgMTMxMzEsIDY3MDc0LCA2NzA3MywgMTI4NTA2LCA4Nzk0LCA0MTI3OCwgNDE2MjksIAorICAgIDEyMTU0LCA3NTA3MywgNDEyNzcsIDY0NjU4LCAxMjgxMTIsIDY0MzgwLCA2NjI1LCA0MjkxMSwgMTk5MDQsIDAsIDEyMTMwNSwgCisgICAgNzExOTMsIDY1MzcxLCA3MDc4LCAxMjg2OTksIDgzMywgMTI4MjI4LCA2MzY5LCAxOTQ4MTUsIDEwOTc5LCA0MTk1MywgCisgICAgMTk0OTM1LCA0MTQzNCwgNjA2MiwgMCwgMCwgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgOTg0MiwgNjcyMCwgNjU3NDQsIAorICAgIDcxMjAwLCAxMjg2NDUsIDEyMTIyMywgMTIxMjQ1LCA3NDA1LCAxMDEwNSwgNjU4MTAsIDAsIDQxNjMyLCA3NDkzLCA1NTI5MCwgCisgICAgOTI4OTAsIDQxNjIyLCA3MDcwNCwgMCwgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgMTk5NTQsIDk4MDUsIDU5OTAsIAorICAgIDkwMCwgMTAwNzU3LCA2Mzk1NywgMTE5NjM4LCA5ODM5NzcsIDM2MTIsIDcwNjg3LCA2NDM3NiwgOTM5ODcsIDUzODksIAorICAgIDkyNTk3LCAwLCA2NTkzOCwgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIAorICAgIDgzMjIyLCA4MzIyMywgNjk1NiwgNDQwMywgMTk5NjIsIDY1NTU5LCAzMjk5LCA2NTY4NiwgMTI4NTYxLCAxMTkxMjcsIAorICAgIDkwMDIsIDk4MzQyMiwgNzQzNzIsIDc0MjM2LCA4NDc4LCA3NTk4LCA1NDYsIDQyNDY5LCA2NTU2OSwgMTkxOCwgOTU0MiwgCisgICAgNDcyLCA3NzE2LCAxMDMxOSwgMTAzODMsIDY5OTYsIDQzMDc3LCA2Mzk1MiwgODQyNSwgMzYwMiwgODMyOCwgMTE3NjQsIAorICAgIDgzMTk5LCA4MzIwMCwgNjUwNjUsIDQxMTgzLCAxMjkwNywgMTAyNzEsIDEwMjg3LCA2ODQsIDQzNTI1LCAxMDA1MzEsIAorICAgIDI4NTQsIDY2NzQ3LCA0NTkyLCA2NTc1NSwgODMyMTcsIDY3MTIwLCAxMTk2MywgNDM2MjAsIDY3MTE3LCA2NjczNiwgCisgICAgNjcxMjMsIDY3MTIyLCA2NzEyMSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCA2OTY3NywgNjcxMTYsIDg2NDgsIAorICAgIDEwMDk5NSwgNjc0MSwgNDMwNDcsIDEwMDQ2MCwgMTMxODAsIDc4MDc3LCA0MTgsIDY2NzU0LCA2NDQ5NSwgMTAyOTUsIAorICAgIDEwMzI3LCAxMDM5MSwgNDE3NTIsIDY2ODQ2LCA4NjQxLCA0MTQ0OSwgODMxOTQsIDc0MTAwLCA4MzE4NiwgMTA5MTEsIAorICAgIDY5NDIsIDEyMDg3OSwgMTAyNCwgNDI4NDksIDQxNzUxLCA2OTc3NiwgODk0MSwgMTAxMDMyLCA0NTU0LCA2Njg5MiwgOTAyMywgCisgICAgMTE2ODUsIDEyMTQ3NiwgOTkyOCwgNjcxMDksIDY2ODY1LCAxMTQzNywgNDM3NDEsIDY3MTEzLCA2NzExMiwgNjM5NjcsIAorICAgIDEyOTA1NiwgNDEyMDYsIDEyNjI0LCA5MDQ5LCA0MTE4NSwgNDMxNjYsIDEwMDg0MCwgODE1OSwgOTI2MTksIDExNjg2LCAKKyAgICA3MTQ3OCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMTI5MDkwLCA5MjE4MywgNjQ1MjMsIDEwMzQzLCAxMDQwNywgCisgICAgOTI3NjQsIDY2NjcxLCAxMTQ2NiwgMCwgMTAwODM3LCA0Mjg5MCwgNzI4NDQsIDIyNjEsIDY4MjAxLCAyODYwLCAwLCAKKyAgICAxMjc5MzQsIDcwODI4LCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMTIxNDAxLCA0Mzg3NSwgNjcxMDMsIAorICAgIDg4NzUsIDAsIDY3MTAyLCA2NzEwNSwgNzUzMSwgMTI4NDcsIDI0MTMsIDEwMDUyMiwgNjc0MDQsIDk2MiwgOTE3ODE0LCAKKyAgICAxMjg1NSwgNDExOTYsIDQyNTY0LCAxMDEwMDksIDE1ODIsIDEwMDg0MiwgNTUwOCwgMTAwNDkyLCAxMjA5MDQsIDc0NTg4LCAKKyAgICAxMDgwMSwgNjk4NzYsIDkyMzU0LCAxMTkyMDcsIDcxNzMsIDQ5NiwgMTA0MzksIDQzMTMsIDY0NjA3LCA2OTYzOCwgNzg2MCwgCisgICAgMTI4MDQ5LCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAKKyAgICAxMTUzLCA4MzI2MywgNjQ3ODgsIDgzMjY1LCA4MDU0LCA5MTc0LCA2NzA4NywgNjcwODYsIDk5NjQsIDY3MDk2LCA0MTYxMSwgCisgICAgNDY0MiwgNjY1NzQsIDExNTU2LCA0MjUxMiwgMCwgNzg4NTcsIDQyMDg5LCA3NDYxMywgOTAwOCwgMCwgMTAxMDI4LCAKKyAgICAxMDA0NjgsIDQyMDc5LCA4MzI0OCwgNzc5MjQsIDQyNTEzLCA3NzkyNywgNDI4NDIsIDczOTg1LCA2NTI4NSwgNjgzMzgsIAorICAgIDgzMjM5LCA4MzI0MCwgODMyNDEsIDgzMjQyLCA5ODM1OTAsIDExMzM1LCA2NDA2OSwgNDIwOTMsIDM5MjAsIDEwMDUwNCwgCisgICAgMTAwODUwLCAxMTExMCwgODMyNTUsIDQ1ODAsIDQxOTY3LCA4MzI1OCwgNjQzODQsIDgzMjUyLCA4MzI1MywgMzAyMSwgCisgICAgNDIwMDQsIDk4MzA5NiwgODMyNDksIDQyMzE3LCA0MTk5OCwgMTI4NzU2LCA2OTQ2LCAxOTQ3NTUsIDkyOTY3LCAxMjg0NTUsIAogICAgIDEyODE5MywgNjUyMDQsIDAsIDY4MTEzLCA0MjY5MCwgOTg4MCwgNDIwMTAsIDc0ODI0LCA2NDU4OSwgMTAxMTEsIDY0ODc1LCAKLSAgICAxMjc4ODAsIDY4MDM1LCA0Mzk5OCwgMTEzNjAsIDgzMjMzLCA3NDE4MiwgODMyMzUsIDgzMjI4LCA0MjE0OSwgODMyMzAsIAorICAgIDEyNzg4MCwgNjgwMzUsIDQzOTk4LCAxMTM2MCwgODMyMzMsIDc0MTgyLCA3MDY5MSwgODMyMjgsIDQyMTQ5LCA4MzIzMCwgCiAgICAgNjg1MDgsIDkxNzk5MywgNjQ5NDEsIDc3OTE5LCAxMjA0MjEsIDEyODA3NywgNzQ4ODUsIDU1MjQ3LCA0MTEwLCA2NjAwNSwgCiAgICAgNjk1OSwgMTA5MjksIDQyOTA3LCAxMjgwODAsIDY2NzAzLCA3NzkyMSwgODYxNywgNDE5ODIsIDYwMjUsIDY5MjQyLCAKLSAgICAxMjEwNjgsIDE5NDg1NCwgMTI1MTM5LCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM3OCwgMTAxMTcsIDk4MzE2OSwgCi0gICAgOTIyOTcsIDQxNjM2LCAxOTQ4ODksIDczNzM4LCAxMjA2ODEsIDgzMDEsIDAsIDAsIDE4NywgMTI4MjM3LCA2NTY2OSwgCi0gICAgMTI4MzM5LCA0OTYzLCAwLCA2ODc2NSwgMCwgODk2NCwgNjU2NzYsIDc3NzUsIDk4Mzg0OSwgNDE5NDgsIDEyNTAwMywgMCwgCi0gICAgODMyMzYsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAxMjA2MTYsIAotICAgIDQxNzY2LCA3NDk0OCwgNjU4ODIsIDc4ODQ5LCA0MTc2MCwgMTE4OSwgOTA1LCA0ODAsIDEwOTg1LCA0MTczMywgNjc4NTksIAotICAgIDk2MjksIDY3NDIsIDE3NDUsIDQzNjI1LCA3MzgzNSwgNzg4OCwgODM0MDUsIDM5ODAsIDcwMzczLCA0MjY1NiwgNDE1MDcsIAotICAgIDg4MDYsIDcwMjMsIDAsIDc0Mjc5LCA5NDQ3LCA3ODY1MSwgNzg2NywgNjkyMTgsIDYyMzYsIDEyNzE2MiwgMCwgMTA1MDUsIAotICAgIDEyNjYzOCwgMTI4NTEsIDgzNDg5LCAzNDgsIDU0NzQsIDEyMTM4MiwgMzEwMywgMCwgNDE3NTMsIDcxMTA5LCAxMjg2MDQsIAotICAgIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIDQxNzU2LCA0MzM0NywgNDI1NjAsIDUzOTEsIAotICAgIDQxNzQ2LCAxMTkxNDcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNjk5MzAsIDI2OTEsIDY4NzUyLCA2NTU1MywgNzkzMywgNTU2MiwgCi0gICAgNjk4MDAsIDEyODI2NSwgNDEyNjIsIDEyODE0NiwgNjQ0MjEsIDc0ODQ2LCA0MTI1MSwgMTI3MjQyLCAwLCAzOTc5LCAKLSAgICA3MTI0OCwgMTk0ODk5LCA2ODMzMSwgOTE3OTEyLCA2ODg0NywgOTgzNjk3LCA4MzM4MiwgNzQ2MzMsIDQxMjY2LCA2ODgzNiwgCi0gICAgNjY1NjYsIDEyODgzNiwgMTA1ODUsIDY1NzQxLCA0MTczNywgMjI3NSwgMjY2NiwgMTIxMjMyLCA0MTczOCwgODMxLCA0MTksIAotICAgIDEzMTI2LCAxMDcxNiwgODM0MDAsIDQyODIyLCAwLCA2NDM0LCA3NDg1NywgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCAKLSAgICA2OTkzMiwgOTE2LCA3NjksIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIDY0MzMsIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgCi0gICAgNDk5NCwgNDg3LCAxMjY1MzcsIDQ0OTcsIDM3NTQsIDgzMDcyLCA4MzEwNSwgOTAzOSwgMCwgNDE3NzYsIDAsIDg3MTYsIAotICAgIDE1OTUsIDQxNjE1LCAxMjEwMDEsIDAsIDc0MjYwLCA3NDg2MCwgNDI4NTQsIDQzMjE5LCA4MzMxMSwgMTIxMTA3LCAxMjE4NSwgCi0gICAgMTEzODEwLCA3MDA3MiwgNjgzNTUsIDY4MzU3LCA2ODQyMSwgNDI4NTYsIDg2MzQsIDAsIDExOTk4OCwgNDIwOSwgNzUwNTcsIAotICAgIDY4ODMyLCA2NTg3OSwgNDE1MzgsIDY1NjEyLCA2ODgyMiwgNjY5LCA1Njc5LCA2ODgxMywgNjg4MTUsIDY4ODExLCA2ODgxMiwgCi0gICAgNjg4MDQsIDU2NzgsIDExODIxLCA2ODgwMiwgNjcxMSwgNDYwLCAxMjE1MTMsIDAsIDk4MzQ2MywgNzAxMTQsIDEyMDc0NywgCi0gICAgMTk0NzE4LCAxMjE1MTksIDc4MDUwLCAxMTkwMjIsIDAsIDEyMTUxNSwgMTIxNTE0LCA3NzgyLCA5MDQ0LCA0OTc0LCAKLSAgICAxMTc2MCwgNzg0OTQsIDc1NzcsIDY1NzExLCA0MTkxMiwgMTIxNiwgMCwgMTI3MDE3LCA1NzkyLCAxMjY2NDMsIDEyODMxOSwgCi0gICAgNzg1MDEsIDAsIDI5MzMsIDEyMjQ0LCA5ODM3MDIsIDU2ODMsIDkxNzg5NiwgMTIwODk1LCA3ODExOSwgMTU0OSwgMCwgCi0gICAgOTgzMjIzLCAxMjAzOTgsIDU2ODIsIDYyMDYsIDg2NzAsIDEwMjU2LCA1NjgwLCA2OTkzNSwgMTAwMDEsIDY3MjM3LCAKLSAgICA2OTc2OCwgMTQ0OSwgMTAyNDEsIDc4MjkwLCAxMTk1ODcsIDE5NDg5MSwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgNzAzMzAsIAotICAgIDg1ODQsIDY4MDMwLCA1NTY3LCAyNzE3LCA4MzE3OSwgNzE0NDgsIDU1NjQsIDQyODg2LCA0MTkwOCwgNDI4ODIsIDU1NjUsIAotICAgIDkxNzYxMSwgMTIwODgxLCAwLCA2NTcwOCwgNjU3MDksIDU1NjYsIDY5ODAzLCA2NTcwNCwgNjU3MDUsIDExOTA0LCA0Mjg3NSwgCi0gICAgNDMzNzMsIDQyNTM5LCA1OTQyLCA4NDY4LCAxMjA1NjEsIDEwMzYxLCAxMDQyNSwgNjU2OTcsIDY1Njk4LCA2NTY5OSwgCi0gICAgNjgwNTIsIDY2NTk4LCAxMTA1OTIsIDY0NjY0LCAxMDY0NywgNzg3MDIsIDc4NzAzLCA3ODY5MCwgNDU3LCA3ODUwMiwgCi0gICAgNjU3MDEsIDE5MzQsIDQzMDA2LCA4MzI4MCwgODgwMiwgNzg3MTAsIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCAKLSAgICA3ODcxNiwgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCA2NTY5NCwgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMCwgMTE5NjEsIAotICAgIDc4NzI1LCA2Njg1MCwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgMTI3ODk5LCA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCAKKyAgICAxMjEwNjgsIDEyODk3OSwgMTIxMzk4LCA5MTc5NzksIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzc4LCAxMDExNywgNzA3MzMsIAorICAgIDkyMjk3LCA0MTYzNiwgMTk0ODg5LCA3MzczOCwgOTI3MjQsIDgzMDEsIDAsIDAsIDE4NywgMTI4MjM3LCA2NTY2OSwgCisgICAgMTI4MzM5LCA0OTYzLCAxMjc5OTYsIDY4NzY1LCAxMjgxOTgsIDg5NjQsIDY1Njc2LCA3Nzc1LCAxOTQ3NjMsIDQxOTQ4LCAKKyAgICAxMjUwMDMsIDAsIDgzMjM2LCA0MTk0MiwgNjU0NDksIDMxNjAsIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgCisgICAgMTIwNjE2LCA0MTc2NiwgNzQ5NDgsIDY1ODgyLCA3ODg0OSwgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIAorICAgIDY3ODU5LCA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgNzM4MzUsIDc4ODgsIDgzNDA1LCAzOTgwLCA3MDM3MywgNDI2NTYsIAorICAgIDQxNTA3LCA4ODA2LCA3MDIzLCA3MjczNCwgNzQyNzksIDk0NDcsIDcwNzAyLCA3ODY3LCA2OTIxOCwgNjIzNiwgMTI3MTYyLCAKKyAgICA5ODM2MDgsIDEwNTA1LCAxMjY2MzgsIDEyODUxLCA4MzQ4OSwgMzQ4LCA1NDc0LCAxMjEzODIsIDMxMDMsIDAsIDQxNzUzLCAKKyAgICA3MTEwOSwgMTI4NjA0LCAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCA0MTc1NiwgNDMzNDcsIAorICAgIDQyNTYwLCA1MzkxLCA0MTc0NiwgMTAwOTY3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAyNjkxLCA2ODc1MiwgCisgICAgNjU1NTMsIDc5MzMsIDU1NjIsIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMDA4MjMsIDY0NDIxLCA3NDg0NiwgNDEyNTEsIAorICAgIDEyNzI0MiwgMCwgMzk3OSwgNzEyNDgsIDEyOTQxNSwgNjgzMzEsIDkxNzkxMiwgNjg4NDcsIDk4MzY5NywgODMzODIsIAorICAgIDc0NjMzLCA0MTI2NiwgNjg4MzYsIDY2NTY2LCAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDIyNzUsIDI2NjYsIAorICAgIDEyMTIzMiwgNDE3MzgsIDgzMSwgNDE5LCAxMzEyNiwgMTA3MTYsIDgzNDAwLCA0MjgyMiwgMCwgNjQzNCwgNzQ4NTcsIAorICAgIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgNjk5MzIsIDkxNiwgNzY5LCA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCAKKyAgICA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIDQ5OTQsIDQ4NywgMTI2NTM3LCA0NDk3LCAzNzU0LCA4MzA3MiwgODMxMDUsIAorICAgIDkwMzksIDcwNjc4LCA0MTc3NiwgMTI3MzkxLCA4NzE2LCAxNTk1LCA0MTYxNSwgNzQ0MzEsIDEyODkwMiwgNzQyNjAsIAorICAgIDc0ODYwLCA0Mjg1NCwgNDMyMTksIDgzMzExLCAxMjExMDcsIDEyMTg1LCAxMTM3MjQsIDcwMDcyLCA2ODM1NSwgNjgzNTcsIAorICAgIDY4NDIxLCA0Mjg1NiwgODYzNCwgMCwgMTE5OTg4LCA0MjA5LCA3NTA1NywgNjg4MzIsIDY1ODc5LCA0MTUzOCwgNjU2MTIsIAorICAgIDY4ODIyLCA2NjksIDU2NzksIDY4ODEzLCA2ODgxNSwgNjg4MTEsIDY4ODEyLCA2ODgwNCwgNTY3OCwgMTE4MjEsIDY4ODAyLCAKKyAgICA2NzExLCA0NjAsIDEyMTUxMywgMCwgOTgzNDYzLCA3MDExNCwgMTIwNzQ3LCAxOTQ3MTgsIDEyMTUxOSwgNzgwNTAsIAorICAgIDExOTAyMiwgOTgzODI5LCAxMjE1MTUsIDEyMTUxNCwgNzc4MiwgOTA0NCwgNDk3NCwgMTE3NjAsIDc4NDk0LCA3NTc3LCAKKyAgICA2NTcxMSwgNDE5MTIsIDEyMTYsIDEyNTA4OCwgMTAwNDExLCA1NzkyLCAxMjEzNjQsIDEwMDM5MywgNzg1MDEsIDAsIDI5MzMsIAorICAgIDEyMjQ0LCA5ODM3MDIsIDU2ODMsIDEwMDM5MiwgMTAwMzk3LCA3ODExOSwgMTU0OSwgNzA2NzAsIDEwMDQxNSwgMTIwMzk4LCAKKyAgICA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCA2NzIzNywgNjk3NjgsIDE0NDksIDEwMjQxLCAKKyAgICA3ODI5MCwgNzA3MDgsIDE5NDg5MSwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgNzAzMzAsIDg1ODQsIDY4MDMwLCA1NTY3LCAKKyAgICAyNzE3LCA2ODgxNCwgNzE0NDgsIDU1NjQsIDQyODg2LCA0MTkwOCwgNDI4ODIsIDU1NjUsIDkxNzYxMSwgMTIwODgxLCAwLCAKKyAgICA2NTcwOCwgNjU3MDksIDU1NjYsIDY5ODAzLCA2NTcwNCwgNjU3MDUsIDExOTA0LCA0Mjg3NSwgNDMzNzMsIDQyNTM5LCAKKyAgICA1OTQyLCA4NDY4LCAxMDA3MjksIDEwMzYxLCAxMDQyNSwgNjU2OTcsIDY1Njk4LCA2NTY5OSwgNjgwNTIsIDY2NTk4LCAKKyAgICAxMDA2ODYsIDY0NjY0LCAxMDY0NywgNzg3MDIsIDc4NzAzLCA3ODY5MCwgNDU3LCA3ODUwMiwgNjU3MDEsIDE5MzQsIAorICAgIDQzMDA2LCA4MzI4MCwgODgwMiwgNzg3MTAsIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCA3ODcxNiwgCisgICAgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCA2NTY5NCwgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMTI4NTUyLCAxMTk2MSwgCisgICAgNzg3MjUsIDY2ODUwLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAxMTk4OTgsIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIAogICAgIDcxMzA5LCAwLCA5ODg5LCA2ODE4NCwgNDI4MDYsIDEyNTA2MSwgNzI1NiwgMCwgNjgwOTQsIDE2NjcsIDQyMTYxLCAKLSAgICAxMjA5ODEsIDQyNDI4LCAwLCA2OTM0LCAwLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAzNjEwLCAKKyAgICAxMDA5NTgsIDQyNDI4LCAwLCA2OTM0LCAxMDA3MDIsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIDM2MTAsIAogICAgIDY4NDIwLCA0MTc0OCwgNDk5NSwgOTU1LCA2NTkwNywgMTE5MjA4LCA1MzUwLCA2NDMzOSwgNzgzMDYsIDY0NTQ5LCAxMDg3NSwgCi0gICAgMTI1MDUyLCA1NDc3LCA2NTY5MiwgMCwgMTI4NTMyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgNjgyOTgsIDAsIDM4NzQsIDAsIAotICAgIDAsIDk4MzYxOSwgMTIwMzMxLCAxMjg3NzMsIDExMzY2NSwgNjU2MDMsIDgzMjcyLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAKLSAgICA5MjA3LCA0MjIzOSwgODUzNiwgNzg3NDAsIDc4MzI0LCA3ODcyNiwgNzQ0MzIsIDcyNCwgODMwNTgsIDE0NTUsIDc4NzQ5LCAKLSAgICA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCA0MTc1LCA3ODc0MSwgNDM2MTQsIDY5ODAxLCA5MzksIDc1MDIxLCA0MzUyMCwgCi0gICAgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDcwMTY4LCA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIAotICAgIDE5MCwgMTE5ODk5LCAxMjU5MywgMCwgODE4OCwgNjQ0MDgsIDAsIDQ0MTcsIDEyMTMwMywgOTIyNjEsIDYzNzAsIDEyNTEyOCwgCi0gICAgNzgyNywgNjg0NDEsIDY5NjUsIDEyODU4MSwgMTI4ODY4LCAxMzIwMSwgMTI4MjA1LCA2OTg5NiwgNzg4NjgsIDc0MzgyLCAKLSAgICAxMTg0MSwgNzkxOCwgNzM5ODgsIDAsIDExMzY2OCwgOTE3ODg0LCAxNzI4LCA5ODM3MDUsIDQzNzY0LCAxNzgsIDEyOTcyLCAKLSAgICA3NDYyMCwgMTEzNjcxLCA3MTEwMywgMTExNjgsIDk4MzM4MywgMTEzNjcyLCA3ODMyNywgNzUwNDIsIDY1NjkwLCA4MzgyLCAKLSAgICA3MTEwNywgMTE5MDU0LCAxOTQ5NjgsIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIDEyMTMyNywgNzQwNzAsIAotICAgIDEzMDY1LCA5OTIzLCAxMDgwNiwgMTk0NTk2LCAxMTc2MywgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDAsIDY5OTMsIAotICAgIDcxMDQ0LCAxMjEzMTIsIDgzMzMsIDEyMTMyOSwgMCwgMTEzOTAsIDAsIDc0NDY0LCAwLCA5MjMyMCwgNzQwODAsIDk4MzMxNywgCi0gICAgNjk5MTEsIDExOTEwLCA5MjU1OSwgODI3OCwgODk2MywgNDAzNCwgMTI4NTYwLCA5ODMxMTMsIDY1MzQ0LCAxMjA1MTcsIAotICAgIDQxNzQ3LCAwLCAxMjgxMTAsIDg2NzcsIDAsIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgCi0gICAgMTI3NDcsIDgzMDAsIDE5NDU2MiwgMTI0OTg0LCA3NDkxLCA4ODU2LCA3MTM2MSwgMCwgNDMxNTAsIDEyNzc2OCwgMTIwNDA0LCAKLSAgICA2NTM4OSwgMTIwNDAyLCAxMjA0MDMsIDEwODEzLCAyNTkyLCAxMjg1MywgNDMyNjksIDcyNjMsIDgzMzA4LCA2NTM2LCAKLSAgICAxMjAyMzgsIDcxODkxLCA2NTUxNiwgMTIzMjEsIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgCi0gICAgNjg0OTQsIDE1OTYsIDEyMDM4MywgNDE5OTQsIDY1ODAxLCAxMjg4MDgsIDY4MzgsIDM1NjEsIDExOTg2NywgMCwgMTA2MTMsIAotICAgIDY2OTcsIDEyODA1LCA0MTkyOCwgNDA5ODEsIDEwODA0LCA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIAorICAgIDEyNTA1MiwgNTQ3NywgNjU2OTIsIDk4MzI3NiwgMTE5MDkyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgNjgyOTgsIDEyMTE5NSwgCisgICAgMzg3NCwgMCwgMTI1MjA0LCAxMDA5OTQsIDEyMDMzMSwgMTAwOTkzLCAxMDA2NzMsIDY1NjAzLCA4MzI3MiwgNjU2ODcsIDAsIAorICAgIDQxMDM4LCA3NDAwOSwgOTIwNywgNDIyMzksIDg1MzYsIDcwNjcxLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDgzMDU4LCAKKyAgICAxNDU1LCA3ODc0OSwgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzgzMjMsIDQzNjE0LCA2OTgwMSwgOTM5LCAKKyAgICA3NTAyMSwgNDM1MjAsIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAxOTQ2NTgsIDcwMTY4LCA3ODc2NCwgNzg3NjAsIDEwNzg4LCAKKyAgICA2MDg4LCA3ODc1OSwgNzg3NTUsIDE5MCwgMTE5ODk5LCAxMjU5MywgMTAwNzM1LCA4MTg4LCA2NDQwOCwgMCwgNDQxNywgCisgICAgMTIxMzAzLCA5MjI2MSwgNjM3MCwgMTAwNDM2LCA3ODI3LCA2ODQ0MSwgNjk2NSwgMTI4NTgxLCAxMjg4NjgsIDEzMjAxLCAKKyAgICAxMDA0MzAsIDY5ODk2LCA3ODg2OCwgNzQzODIsIDExODQxLCA3OTE4LCA3Mjc0MiwgMTAxMDA2LCAxMTM2NjgsIDkxNzg4NCwgCisgICAgMTcyOCwgOTgzNzA1LCA0Mzc2NCwgMTc4LCAxMjk3MiwgNzQ2MjAsIDExMzY3MSwgNzExMDMsIDExMTY4LCA5ODMzODMsIAorICAgIDExMzY3MiwgNzgzMjcsIDc1MDQyLCA2NTY5MCwgODM4MiwgNzExMDcsIDExOTA1NCwgMTAwMzgxLCA5MjUyLCAxMDAzNzksIAorICAgIDQ2NTIsIDY4MzcxLCAxMDAzODIsIDEyMTMyNywgNzQwNzAsIDEzMDY1LCA5OTIzLCAxMDgwNiwgMTk0NTk2LCAxMTc2MywgCisgICAgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDEwMDM4OCwgNjk5MywgNzEwNDQsIDEyMTMxMiwgODMzMywgMTIxMzI5LCAwLCAKKyAgICAxMTM5MCwgOTgzMTM2LCA3NDQ2NCwgMTI3OTEwLCA5MjMyMCwgNzQwODAsIDEwMDQ0MiwgNjk5MTEsIDExOTEwLCA5MjU1OSwgCisgICAgODI3OCwgODk2MywgNDAzNCwgMTI4NTYwLCA5ODMxMTMsIDY1MzQ0LCAxMjA1MTcsIDQxNzQ3LCAxMjgzNDIsIDEyODExMCwgCisgICAgODY3NywgMTIwNTY0LCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIDEyNzQ3LCA4MzAwLCAKKyAgICAxOTQ1NjIsIDEyNDk4NCwgNzQ5MSwgODg1NiwgNzEzNjEsIDEyNzkxMywgNDMxNTAsIDEyNzc2OCwgMTIwNDA0LCA2NTM4OSwgCisgICAgNjY3NzksIDY2Nzc3LCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCA4MzMwOCwgNjUzNiwgMTAwOTYyLCAKKyAgICA3MTg5MSwgNjU1MTYsIDEyMzIxLCAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDIyMzcsIDEyMDI0NiwgOTU4OCwgNjg0OTQsIAorICAgIDE1OTYsIDEyMDM4MywgNDE5OTQsIDY1ODAxLCAxMDA4NzQsIDY4MzgsIDM1NjEsIDcyNzUzLCAwLCAxMDYxMywgNjY5NywgCisgICAgMTI4MDUsIDQxOTI4LCA0MDk4MSwgMTA4MDQsIDc4NDA5LCA1MDA2LCA2NDMyOCwgMTAwOTY2LCA5OTMxLCAwLCA4ODI1LCAKICAgICA3NDU1NSwgNjU5NDAsIDQzMjU5LCAxMjY1ODYsIDYxMDcsIDgzNDU1LCAxMTkxNzcsIDc3OTQxLCA3ODQwMSwgMTE5MjcwLCAKICAgICAxMTc4MywgMzM1LCAxMjAyMjcsIDY0Njg5LCA0MzgsIDQ1MTAsIDU3NjUsIDg3MjEsIDExOTU3MCwgMTE5MjI3LCA2MDkyLCAKLSAgICAxMjg0MCwgNDMxMTIsIDg4NzYsIDEyMDIzMSwgODA5NiwgMTAyODQsIDEyMDkzNSwgMCwgMCwgMTAzODAsIDg3MzMsIAotICAgIDEwMzE2LCA3MDEyMSwgNDE2MDIsIDkxNzU3NSwgOTIzMDgsIDc0ODMxLCA5Mzk4NCwgMCwgNjg0ODIsIDY1Mzk5LCAKLSAgICA5MTc4MjAsIDY0NTkxLCA0MjQwNSwgODM0NjYsIDEyMDgyMCwgODQzLCAxMTU0MSwgMTI4MzI2LCA3MDMyMSwgMjA2NSwgCi0gICAgNDE5MzUsIDc0NDk2LCA0MTkwMiwgMCwgOTgzMzA2LCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIDE5NTMsIDk1NzksIAotICAgIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA4MzQ2NCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAxMDcwMCwgODgwNSwgCi0gICAgMTc0MiwgMTEzNzIyLCA5MzMzLCA4MjAyLCA3MjM5OSwgMCwgOTgzMTk3LCAxMjcyNTIsIDAsIDczODgyLCA0OTksIAotICAgIDk4MzA0OSwgNDM0NjcsIDAsIDQzODE4LCA4MzQ4MiwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCA5ODMxMDMsIDAsIAotICAgIDExOTY3LCAxNzc1LCAxMjUwMDYsIDc1MDA5LCAxMTExOCwgMTIxMzkxLCAxMjgwMDksIDk0NTgsIDkyOTM1LCA2NDcwLCAKLSAgICA5MTgwLCAxMjAzODAsIDQzMTc2LCAxMjgzMDcsIDAsIDQyNzgyLCAwLCAxMjQ5OTksIDk4MzEzNSwgMTI4MzA5LCA3Mzg0OSwgCi0gICAgMTIwNjY5LCA5NDE0LCA3NDY0NywgNzM3ODIsIDczOTY5LCA1NjUsIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAKLSAgICAxOTQ4NzAsIDgyNTQsIDAsIDEwOTc1LCA0MzUxOCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgNDEwOCwgMzg4MCwgNzQyNDcsIAotICAgIDEyNzE1MywgMCwgOTIyNjMsIDkxNzk4MCwgNzUwNywgOTgzMTE4LCA0MzE0OSwgNzEwNTksIDY1MDMxLCA3OTYxLCAxNjM2LCAKLSAgICAwLCA2NTAyOSwgNjUwMjQsIDExOTA5OSwgMTI0NzMsIDY1MzQsIDEyMDYzMywgOTksIDk4LCA5NywgNjgyMjYsIDY3NTg0LCAKLSAgICA0MDQ5LCA3NDE2MywgMTI3MDY1LCA3MDkwLCA4MzI3NCwgNzg5MiwgMTI3MDY0LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgCi0gICAgNjU1NjIsIDY2NTk5LCA2NjcyMiwgMTk0OTU1LCA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDEyNzA2MiwgNzExOTEsIAotICAgIDEyNTk2LCA2NjU5NSwgNDIyNTgsIDQyNTcwLCA1NTkzLCAxMTkxNDgsIDEyMDUzNCwgOTI0MjUsIDEwMTAwLCA2MDYxLCAKLSAgICA2NDg1NCwgMTE5LCAxMTgsIDExNywgMTE2LCAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIAotICAgIDExNCwgMTEzLCAxMTIsIDEwMywgMTAyLCAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCAKLSAgICA0MTIxMiwgNjc3MTMsIDE1MzYsIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyMTA5MywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgCi0gICAgMTI3NDQsIDQ3NSwgMTIwMzk0LCAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDc4ODQyLCA3MzkyNiwgNjYyOTEsIDEwNjQ1LCAKLSAgICAxMjEyLCA2NTQzLCA5ODMzMDksIDgxMzQsIDQyOTM1LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCA5ODMyMjksIAotICAgIDcxODkyLCAxMjA5OTYsIDg5MjMsIDE2NDUsIDEyMDU5LCA2NjU4NSwgNzEyOTcsIDMxOTYsIDcyNDA0LCAxOTQ4MjcsIAotICAgIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgOTc4NywgNjczMywgOTg1OSwgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgMTg4MiwgCi0gICAgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgMTE0NTQsIDczOTExLCAxMTM3ODcsIDczODE5LCA0MTE2OSwgODkzOSwgNDEyNDUsIAotICAgIDEyODc3NSwgNDExNzAsIDE0NTQsIDExMzY5LCA2NDc3LCAxMjE1NywgMTIwODYxLCAwLCAwLCA0MTE3MiwgNzg1NSwgMCwgCi0gICAgNzE0NzIsIDEwNDgwLCA0MzI1OCwgMTI2NTk2LCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMxMCwgNjQ1LCAxMjY2MTYsIAotICAgIDc2MDksIDQwOTczLCA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgCi0gICAgNzM5ODIsIDEyMDUxOCwgODM0NzMsIDE5NTA4NiwgNDMzNjksIDk4MzE3NywgMTI4MTQwLCA2ODQxNSwgNzc4NjEsIDQ1MzgsIAotICAgIDkzOTc4LCA0MzE0MSwgOTgzNzY5LCA4Mjk3NiwgNzQyMTQsIDczODg2LCA2NzcwOSwgOTE3NTk5LCA3MTkxOCwgNDMwMDUsIAotICAgIDcxMTE0LCA5NTUyLCAwLCA3MDEyOSwgMTI5MTczLCAxMjk5NywgODM0NzcsIDAsIDEyODg5NywgMTk1MDMwLCAyMzgxLCAKLSAgICAxMjg4MywgMTA5OTQsIDEwNTI5LCA0MTkwNiwgMCwgNzQ2MTgsIDAsIDEyNDI1LCAxMDY2MSwgMTA4NTYsIDk2MTQsIDI0MjgsIAotICAgIDQxNDc4LCA4NTgyLCAxMDA2NCwgNzM5MzAsIDgyOTc3LCA3MDQzNywgMTIxMjUxLCA2NDg5NiwgMTE5MTYyLCAxOTUyLCAKLSAgICA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCAxMjg0NTAsIDExOTU2NiwgMTI4MDkzLCAxMjgwOCwgMTIxODMsIDYxNDUsIAotICAgIDc1MDIwLCA2NDkyOSwgNzQ5ODUsIDcxOTE2LCA3NDk4NCwgNDMxODYsIDQyNTA5LCAwLCAzOTIyLCA5MTg3LCA4MzI3NywgCi0gICAgODMyNzgsIDEwMTkxLCA4MzI3MSwgMTE3NTIsIDMzNTMsIDkzNTgsIDk4MzQ2MiwgNzEzNjYsIDY2NjgwLCAxMjAwOTAsIAotICAgIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCAxMjAwNDcsIDk4MzA1NiwgODM0NzAsIDEyMDA4MSwgMTE5MDUyLCAKLSAgICA0MTAyNywgMTIwMDg2LCA3MTQ0OSwgMTIwMDg4LCA3MzY2LCA3MDE5LCA3MDM3OCwgMCwgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIAotICAgIDY0NjU3LCA4NjU3LCA4MzQ3MiwgODU5NCwgMTIwMDY4LCAwLCA5ODM3ODksIDEyMDA2OSwgMTIwMDcyLCAxMjAwNzEsIDAsIAotICAgIDExMzcxMSwgNDMxNTQsIDQxMDI5LCAxMTk5NTYsIDExMzMyLCA2NTM4MCwgNzcyOCwgOTQwNzcsIDExMjk0LCAwLCA2NjY2NSwgCi0gICAgNzg1MSwgMCwgODM3NSwgODY5OSwgMTI3OTQ5LCA0MjUyNCwgNjg0MTksIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCAKLSAgICA3Mzg0MiwgOTgzODY0LCAxOTQ5MjksIDgwODgsIDEyODkzNywgNzQwMTIsIDY2NTYyLCAwLCA0NDM5LCA2OTI2LCA3MjQyMywgCi0gICAgMTI5MjQsIDEyODIyNywgNDIzNjksIDQzNTAsIDY1NDkxLCA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgCi0gICAgMTI3NDc2LCAxMTI5NiwgOTgzMjg1LCA5ODM0MDksIDAsIDY1ODI1LCA5NTc3LCA2ODE5OSwgOTgzMzkzLCA2NDY3MCwgCi0gICAgOTgzMTIxLCA3ODA1NiwgNjc5MywgMTEyOTUsIDcwNDA5LCA3ODA1MywgNzM4NzIsIDc4MDU1LCAxMTk5OTMsIDEwOTAyLCAwLCAKLSAgICAwLCA3ODA3MCwgMTEyMDAsIDEwNDcyLCAyOTk1LCAxMjE0MzgsIDEyMDEzOCwgNjQ2ODIsIDIzNzEsIDc4MDY5LCAxMTg4OTMsIAotICAgIDI1OSwgMTAwOSwgNzA0MDUsIDI0MDIsIDIzMzMsIDY0NDAsIDE5NDc0MSwgMTEzNzU3LCA2NTEyNSwgNDEyNDQsIDcwNDA3LCAKLSAgICAxMzI3MSwgOTEwMywgMjI3OCwgOTgzMTQ2LCAxOTQ3MjgsIDEyOTEyMCwgMCwgMTAyMTksIDc0OTY4LCAxOTQ3NDAsIDAsIAotICAgIDY3NzE4LCA0MzE3OCwgMTI3MDcwLCA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgMCwgOTQwNDksIDY3MzYsIDgzNDM5LCAKLSAgICA0MTQ5MiwgMTIwMDUsIDY5OTI3LCAxMjcwNjgsIDE4OTAsIDEyMDA1NiwgMCwgODM0NDMsIDAsIDcyOTMsIDc5OTEsIAotICAgIDc0MDUyLCAxMDU3OCwgMTIxMTQxLCA3ODA3NiwgMTI4NjIwLCA2NzM2OCwgNjk5MjgsIDcxODUwLCA3ODgwMCwgOTI2NTMsIAotICAgIDY0NDQ1LCA0MjY2OCwgNjYzNSwgMTI4MzA4LCA2MTY0LCA2NTE3MCwgNzQ5MzYsIDEyMTE4MiwgNzY3NiwgMTE2NjQsIDAsIAotICAgIDkzMDI1LCA2OTcwNywgOTMwMjIsIDExODgxMiwgMCwgNzEwOTYsIDEyODA0NSwgOTE3NSwgMTE5MjUsIDc4MDQ1LCA5MDg4LCAKLSAgICAxMTkxNDUsIDY0NTQ1LCAxMzk2LCAxMjA2NjQsIDc1NDYsIDM4NDcsIDcxMDg4LCA5MzAzNywgNDk4NSwgMTMyODgsIDY3MiwgCi0gICAgODA5OCwgNDMxOTYsIDE5NDc0NiwgMTIwNzIzLCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIDExNzcyLCAKLSAgICAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMTk0NzExLCAxMjgzNzEsIDEyNjIyLCAKLSAgICAxMjcyMzQsIDEyNDk0OCwgMCwgMTIxMjE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAwLCA3NDk2OSwgCi0gICAgNDI3MzEsIDY3OTcyLCA3NDk3MCwgNzEwNjYsIDk4MzIwMCwgMzA1MSwgNTg2MiwgNzgyMywgOTI0NzgsIDkyNzQ2LCAKLSAgICAxMjA0MTEsIDMyNTAsIDQzOTkxLCA2OTY4NywgNjY2NDksIDk1MTAsIDY2MjM3LCA5ODMzMDQsIDAsIDQxMDY2LCA2NDY3MywgCi0gICAgOTE3OTYzLCA5MjM4MSwgMTI4NjM2LCAzNTA1LCA4NzA3LCA3NDkyNSwgNjcyNSwgMTIwODAyLCAxMjEyOTYsIDc1MDQxLCAKLSAgICAzNDcxLCA2NjM5MSwgNTQ3OSwgODgyLCA2Njg2LCAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCA3NDYwOCwgCi0gICAgMTI1MDI5LCA4MzQzMywgMTIxMjM3LCAxMjA4NDUsIDAsIDgzNDMxLCAzMjI1LCA5MTc5OTYsIDQ0MzMsIDQxMTU2LCAKLSAgICA0Mzk3MywgNDMxNzMsIDE0NDMsIDQzODEsIDAsIDk4MzY0MiwgMTA5MjYsIDExNzU2LCAxMTc1NywgNjQ4NzksIDEyMTEwNiwgCi0gICAgNDI2NTQsIDEyNzg0OCwgMTMyMjcsIDEyMDMyMCwgMTAwMjEsIDUxNjAsIDEzODcsIDAsIDkyNjQ0LCA0MTQxOCwgMTI4OTMzLCAKLSAgICA2NTkxNCwgNjcyMSwgMjE3LCA5MTc5NTUsIDkxNzk2MCwgMTIxMDgyLCAxMDQ0MywgMTA3ODksIDQxMTU4LCAxMTkyNTcsIAotICAgIDQyNzQsIDExMTQzLCA0MTQ4MywgMCwgNDEyNTAsIDEyODkwNCwgNDIxNzksIDEyODM3NSwgNTkzMSwgMTE3NDQsIDExMjE1LCAKLSAgICA3NDQ0NiwgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCA5ODM0NTgsIAotICAgIDEyMDgxMywgNDM5NywgMTI4MDM3LCAxMjgzMzYsIDQxMjk2LCA5NTQ1LCA0MTI5MSwgMTIwODkzLCAwLCA0MTQ4NSwgMzUxMSwgCi0gICAgNDEyODIsIDU5MjMsIDEwNDAwLCAwLCAxMjA0OTMsIDc2MCwgMCwgMTIwODgsIDU3ODYsIDY4MjUyLCA0MjI1NiwgMTE5ODY5LCAKLSAgICA2NzE0NSwgNDE3LCA0MTQ3NCwgMTE5NTYyLCA0MTU2NSwgNzQ5NjUsIDU5MzQsIDc0NTcyLCA2NjU4MywgNzQ5MDQsIAotICAgIDY0ODc3LCAyMjg0LCA2NDQ4MSwgNzg2MTQsIDY2MDEzLCA0MTk1NiwgNDM0NTUsIDY3MjQwLCAxOTQ2NTYsIDAsIDAsIAotICAgIDQyMjczLCA1ODE5LCAwLCAxMjgwNTYsIDAsIDExOTEyOSwgOTgzMTAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCAKLSAgICA2NTc4NSwgMTIzNywgMTAyNzQsIDQ1NTIsIDExOTU3NiwgMTI4Mjg3LCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCAKLSAgICAzMzI5LCAwLCA0MjgxMSwgMTAzMTIsIDY5ODQ1LCAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMTE5MjQyLCAKLSAgICAxMjgxMDQsIDQzMTg1LCAwLCA0Mzk2LCAxOTUwNTEsIDExOTg4MCwgMTA3NjksIDk2NzYsIDExOTA0MSwgMCwgOTc1MywgCi0gICAgOTI3NjIsIDg5NDQsIDk4MzE2NCwgMCwgMTA0NzMsIDk4MzgyMywgMTIwNDcyLCA2MDcyLCA0MzAyNSwgMTAyOTksIAotICAgIDEyODQzNiwgNjg4NDUsIDEyMDYwOCwgNjYzMjYsIDY3NDEyLCA5Mjk1MiwgMCwgNDM4MTEsIDkzMzAsIDEyMDU5NiwgNzIyMiwgCisgICAgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIDgwOTYsIDEwMjg0LCAxMjA5MzUsIDEwMDk3MCwgNzA3MTMsIDEwMzgwLCAKKyAgICA4NzMzLCAxMDMxNiwgNzAxMjEsIDQxNjAyLCA5MTc1NzUsIDkyMzA4LCA3NDgzMSwgOTM5ODQsIDk4MzgzMCwgNjg0ODIsIAorICAgIDY1Mzk5LCA5MTc4MjAsIDY0NTkxLCA0MjQwNSwgODM0NjYsIDEyMDgyMCwgODQzLCAxMTU0MSwgMTAwODEwLCA3MDMyMSwgCisgICAgMjA2NSwgNDE5MzUsIDc0NDk2LCA0MTkwMiwgMTI1MDYwLCA5ODMzMDYsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgCisgICAgMTk1MywgOTU3OSwgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDgzNDY0LCA0MTI1NywgNDE5MDAsIDg2NzUsIAorICAgIDEwNzAwLCA4ODA1LCAxNzQyLCAxMTM3MjIsIDkzMzMsIDgyMDIsIDcyMzk5LCAxMjEwMjcsIDk4MzE5NywgMTEzODA5LCAKKyAgICAxMDA5ODksIDczODgyLCA0OTksIDk4MzA0OSwgNDM0NjcsIDE5NDkyNywgNDM4MTgsIDgzNDgyLCAxNzEyLCA1OTMyLCAKKyAgICA3Nzg0NSwgNDE3NjIsIDEyOTM3MiwgMCwgMTE5NjcsIDE3NzUsIDEyNTAwNiwgNzUwMDksIDExMTE4LCAxMjEzOTEsIAorICAgIDEwMDk4MiwgOTQ1OCwgOTI5MzUsIDY0NzAsIDkxODAsIDEyMDM4MCwgNDMxNzYsIDEwMDQxNCwgMTAwOTg2LCA0Mjc4MiwgCisgICAgMTAwNDQwLCAxMDEwMzYsIDEwMTAzNSwgMTAwNTgxLCA3Mzg0OSwgMTAxMDQwLCA5NDE0LCA3NDY0NywgNzM3ODIsIDczOTY5LCAKKyAgICA1NjUsIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAxMDEwNDQsIDgyNTQsIDEwMTA0NiwgMTA5NzUsIDQzNTE4LCAKKyAgICAxMDA5NTQsIDc0NzYzLCAxMDIyLCA0MTA4LCAzODgwLCA3NDI0NywgMTAwOTUxLCAxMDA5OTEsIDkyMjYzLCA5MTc5ODAsIAorICAgIDc1MDcsIDEwMDYzOCwgNDMxNDksIDcxMDU5LCA2NTAzMSwgNzk2MSwgMTYzNiwgMCwgNjUwMjksIDY1MDI0LCAxMTkwOTksIAorICAgIDEyNDczLCA2NTM0LCAxMjA2MzMsIDk5LCA5OCwgOTcsIDY4MjI2LCA2NzU4NCwgNDA0OSwgNzQxNjMsIDEwMDk1NSwgNzA5MCwgCisgICAgODMyNzQsIDc4OTIsIDEwMTAzMCwgMTA3NzcsIDkxNzgwMywgNjUzMTAsIDY1NTYyLCA2NjU5OSwgNjY3MjIsIDE5NDk1NSwgCisgICAgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAxMDA5NjAsIDcxMTkxLCAxMjU5NiwgNjY1OTUsIDQyMjU4LCA0MjU3MCwgCisgICAgNTU5MywgMTE5MTQ4LCAxMjA1MzQsIDkyNDI1LCAxMDEwMCwgNjA2MSwgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIDExNiwgCisgICAgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAxMTQsIDExMywgMTEyLCAxMDMsIDEwMiwgCisgICAgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgNDEyMTIsIDY3NzEzLCAxNTM2LCAKKyAgICA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjEwOTMsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIDEyNzQ0LCA0NzUsIDEyMDM5NCwgCisgICAgMTMyNjYsIDEyNzgxMywgMTAxMDczLCA3ODg0MiwgNzA1MDMsIDY2MjkxLCAxMDY0NSwgMTIxMiwgNjU0MywgMTI1MjIwLCAKKyAgICA4MTM0LCA0MjkzNSwgMjkxMywgNzM4NzAsIDEyNzExMywgMTg2NiwgOTgzMjI5LCA3MTg5MiwgMTIwOTk2LCA4OTIzLCAKKyAgICAxNjQ1LCAxMjA1OSwgNjY1ODUsIDcxMjk3LCAzMTk2LCA3MjQwNCwgMTk0NzMzLCA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIAorICAgIDk3ODcsIDY3MzMsIDk4NTksIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIDE4ODIsIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIAorICAgIDExNDU0LCA3MzkxMSwgMTAxMDIwLCA3MzgxOSwgNDExNjksIDg5MzksIDQxMjQ1LCA4MzQ2NSwgNDExNzAsIDE0NTQsIAorICAgIDExMzY5LCA2NDc3LCAxMjE1NywgMTIwODYxLCAwLCAwLCA0MTE3MiwgNzg1NSwgMTAwOTYxLCA3MTQ3MiwgMTA0ODAsIAorICAgIDQzMjU4LCAxMjY1OTYsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzEwLCA2NDUsIDEwMDk5MiwgNzYwOSwgNDA5NzMsIAorICAgIDY5OTQzLCA3MzgzMywgNjk5NDgsIDU4MjQsIDk4NCwgNzc5MTgsIDEwNjg4LCA1ODUxLCAxMDA4MzYsIDc3MjksIDczOTgyLCAKKyAgICAxMDEwMDEsIDgzNDczLCAxMDEwMDMsIDQzMzY5LCAxMDEwMDUsIDEwMDk3MywgNjg0MTUsIDc3ODYxLCA0NTM4LCA5Mzk3OCwgCisgICAgNDMxNDEsIDEwMDk3MiwgODI5NzYsIDc0MjE0LCA3Mzg4NiwgNjc3MDksIDkxNzU5OSwgNzE5MTgsIDQzMDA1LCA3MTExNCwgCisgICAgOTU1MiwgMCwgNzAxMjksIDEyOTE3MywgMTI5OTcsIDgzNDc3LCAxOTQ5NDMsIDEyODg5NywgMTAwNzM3LCAyMzgxLCAKKyAgICAxMjg4MywgMTA5OTQsIDEwNTI5LCA0MTkwNiwgMTAwOTgxLCA3NDYxOCwgMTAwOTgzLCAxMjQyNSwgMTA2NjEsIDEwODU2LCAKKyAgICA5NjE0LCAyNDI4LCA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCA4Mjk3NywgNzA0MzcsIDEyMTI1MSwgNjQ4OTYsIAorICAgIDEwMDk1NiwgMTk1MiwgOTIxODEsIDg0NTUsIDEwMDgyLCAxMTU3NSwgMTAwOTU3LCAxMTk1NjYsIDEwMDgxNywgMTI4MDgsIAorICAgIDEyMTgzLCA2MTQ1LCA3NTAyMCwgNjQ5MjksIDc0OTg1LCA3MTkxNiwgNzQ5ODQsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgCisgICAgOTE4NywgODMyNzcsIDgzMjc4LCAxMDE5MSwgODMyNzEsIDExNzUyLCAzMzUzLCA5MzU4LCAxMjg5ODAsIDcxMzY2LCAKKyAgICA2NjY4MCwgMTAwODEzLCA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgMTAwODEyLCAxMDA5NzcsIDgzNDcwLCAKKyAgICAxMjAwODEsIDEwMDk3MSwgNDEwMjcsIDEwMDgxMSwgNzE0NDksIDEyMDA4OCwgNzM2NiwgNzAxOSwgNzAzNzgsIDAsIAorICAgIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCA2NDY1NywgODY1NywgODM0NzIsIDg1OTQsIDEwMDk2OSwgMTAwOTY4LCAxMDA5NzgsIAorICAgIDEwMDgyMCwgMTAwOTE0LCAxMjAwNzEsIDAsIDExMzcxMSwgNDMxNTQsIDQxMDI5LCAxMTk5NTYsIDExMzMyLCA2NTM4MCwgCisgICAgNzcyOCwgOTQwNzcsIDExMjk0LCAxMDA5ODAsIDY2NjY1LCA3ODUxLCAwLCA4Mzc1LCA4Njk5LCAxMjEwOTcsIDQyNTI0LCAKKyAgICA2ODQxOSwgOTA4NSwgOTQwNDEsIDc1MDQsIDkzMjcsIDYxNjAsIDczODQyLCA5ODM4NjQsIDE5NDkyOSwgODA4OCwgNzA2OTgsIAorICAgIDc0MDEyLCA2NjU2MiwgMCwgNDQzOSwgNjkyNiwgNzI0MjMsIDEyOTI0LCAxMDA5NzQsIDQyMzY5LCA0MzUwLCA2NTQ5MSwgCisgICAgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIDEwMDk1OSwgMTEyOTYsIDk4MzI4NSwgOTgzNDA5LCAwLCAKKyAgICA2NTgyNSwgOTU3NywgNjgxOTksIDgyOTgyLCA2NDY3MCwgOTgzMTIxLCA3ODA1NiwgNjc5MywgMTEyOTUsIDcwNDA5LCAKKyAgICA3ODA1MywgNzM4NzIsIDc4MDU1LCAxMDA4MTUsIDEwOTAyLCAwLCAwLCA3ODA3MCwgMTEyMDAsIDEwNDcyLCAyOTk1LCAKKyAgICAxMDA5NTMsIDEyMDEzOCwgNjQ2ODIsIDIzNzEsIDcyNzIwLCAxMTg4OTMsIDI1OSwgMTAwOSwgNzA0MDUsIDI0MDIsIDIzMzMsIAorICAgIDY0NDAsIDEyNTI0NywgMTAwOTYzLCA2NTEyNSwgNDEyNDQsIDcwNDA3LCAxMzI3MSwgOTEwMywgMjI3OCwgOTgzMTQ2LCAKKyAgICAxOTQ3MjgsIDczMDEsIDk4MzY5MywgMTAyMTksIDc0OTY4LCAxOTQ3NDAsIDAsIDY3NzE4LCA0MzE3OCwgMTI3MDcwLCAKKyAgICA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgMTk0ODk1LCA5NDA0OSwgNjczNiwgODM0MzksIDQxNDkyLCAxMjAwNSwgCisgICAgNjk5MjcsIDEyNzA2OCwgMTg5MCwgMTIwMDU2LCA5ODMzMDIsIDgzNDQzLCA5ODMwNDQsIDcyOTMsIDc5OTEsIDc0MDUyLCAKKyAgICAxMDU3OCwgMTIxMTQxLCA3ODA3NiwgMTI4NjIwLCA2NzM2OCwgNjk5MjgsIDcxODUwLCA3ODgwMCwgOTI2NTMsIDY0NDQ1LCAKKyAgICA0MjY2OCwgNjYzNSwgMTAwNzkyLCA2MTY0LCA2NTE3MCwgNzQ5MzYsIDEyMTE4MiwgNzY3NiwgMTE2NjQsIDEyODY4NCwgCisgICAgOTMwMjUsIDY5NzA3LCA5MzAyMiwgMTE4ODEyLCA5ODMyMzMsIDcxMDk2LCAxMjgwNDUsIDkxNzUsIDExOTI1LCA3ODA0NSwgCisgICAgOTA4OCwgMTE5MTQ1LCA2NDU0NSwgMTM5NiwgMTIwMjIwLCA3NTQ2LCAzODQ3LCA3MTA4OCwgOTMwMzcsIDQ5ODUsIDEzMjg4LCAKKyAgICA2NzIsIDgwOTgsIDQzMTk2LCAxMDA3OTYsIDEyMDcyMywgMTI4MTI2LCA0MjY1NSwgNzQwNDMsIDY1MDcyLCAxNTc3LCAKKyAgICAxMTc3MiwgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDE5NDcxMSwgMTI4MzcxLCAKKyAgICAxMjYyMiwgMTI3MjM0LCAxMjA1NjYsIDE5NDc5OCwgMTIxMjE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAKKyAgICA5ODMzNTEsIDc0OTY5LCA0MjczMSwgNjc5NzIsIDc0OTcwLCA3MTA2NiwgOTgzMjAwLCAzMDUxLCA1ODYyLCA3ODIzLCAKKyAgICA5MjQ3OCwgOTI3NDYsIDEyMDQxMSwgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgOTUxMCwgNjYyMzcsIDk4MzMwNCwgCisgICAgMTk0NzQ4LCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTIzODEsIDEyODYzNiwgMzUwNSwgODcwNywgNzQ5MjUsIDY3MjUsIAorICAgIDEyMDgwMiwgMTIxMjk2LCA3NTA0MSwgMzQ3MSwgNjYzOTEsIDU0NzksIDg4MiwgNjY4NiwgMTE5NTg0LCAxMTYxMywgCisgICAgMTAxMTA2LCA0Mjc1NCwgNzQ2MDgsIDEyNTAyOSwgODM0MzMsIDEyMTIzNywgMTIwODQ1LCAwLCA4MzQzMSwgMzIyNSwgCisgICAgOTE3OTk2LCA0NDMzLCA0MTE1NiwgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAxMjc5NDksIDk4MzY0MiwgMTA5MjYsIAorICAgIDExNzU2LCAxMTc1NywgNjQ4NzksIDEyMTEwNiwgNDI2NTQsIDEyNzg0OCwgMTMyMjcsIDEyMDMyMCwgMTAwMjEsIDUxNjAsIAorICAgIDEzODcsIDk4MzczMCwgOTI2NDQsIDQxNDE4LCA2Njc0OSwgNjU5MTQsIDY3MjEsIDIxNywgNzI4MjksIDkxNzk2MCwgCisgICAgMTAwOTY1LCAxMDQ0MywgMTA3ODksIDQxMTU4LCAxMTkyNTcsIDQyNzQsIDExMTQzLCA0MTQ4MywgMCwgNDEyNTAsIAorICAgIDEyODU2MywgNDIxNzksIDEyODM3NSwgNTkzMSwgMTE3NDQsIDExMjE1LCA3MDY3NiwgNDEyNTIsIDY2NjgyLCA5ODM2ODAsIAorICAgIDExOTYzNywgNDEyNDksIDEzNjYsIDY0NjM1LCA2NTA0NywgMTI0NjYsIDc0MzE5LCAxMjA4MTMsIDQzOTcsIDEwMDQ0NSwgCisgICAgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyMDg5MywgMCwgNDE0ODUsIDM1MTEsIDQxMjgyLCA1OTIzLCAxMDQwMCwgCisgICAgMCwgMTIwNDkzLCA3NjAsIDEyNzE4OCwgMTIwODgsIDU3ODYsIDY4MjUyLCA0MjI1NiwgMTAwNDQ2LCA2NzE0NSwgNDE3LCAKKyAgICA0MTQ3NCwgMTE5NTYyLCA0MTU2NSwgNzQ5NjUsIDU5MzQsIDc0NTcyLCA2NjU4MywgNzQ5MDQsIDY0ODc3LCAyMjg0LCAKKyAgICA2NDQ4MSwgNzg2MTQsIDY2MDEzLCA0MTk1NiwgNDM0NTUsIDY3MjQwLCAxOTQ2NTYsIDAsIDEyNzE1MywgNDIyNzMsIDU4MTksIAorICAgIDAsIDEyODA1NiwgMCwgMTE5MTI5LCA5ODMxMDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIDY1Nzg1LCAxMjM3LCAKKyAgICAxMDI3NCwgNDU1MiwgMTE5NTc2LCAxMjgyODcsIDAsIDEzNzUsIDY2NzA1LCA0MzU3MywgNjUyNjAsIDMzMjksIDAsIAorICAgIDQyODExLCAxMDMxMiwgNjk4NDUsIDEyMDc5NCwgNzg0MCwgMCwgNDM2MzAsIDEwMjUyLCAxMTkyNDIsIDEyODEwNCwgCisgICAgNDMxODUsIDAsIDQzOTYsIDEwMDUzMiwgMTAwNTM1LCAxMDc2OSwgOTY3NiwgMTAwNTM2LCAxMDA1MzksIDk3NTMsIDkyNzYyLCAKKyAgICA4OTQ0LCA5ODMxNjQsIDEyMTQ1MCwgMTA0NzMsIDk4MzgyMywgMTAwNTQyLCA2MDcyLCA0MzAyNSwgMTAyOTksIDEwMDU0NiwgCisgICAgNjg4NDUsIDEwMDU0OCwgNjYzMjYsIDY3NDEyLCA5Mjk1MiwgNzI4MDgsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAogICAgIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIDEyNzkwMiwgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIAogICAgIDc0OTM4LCA0MzMyNCwgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCA2NDgwNiwgNDMxODAsIDc0OTY3LCA3NDE0LCA3NzkyOSwgCi0gICAgNDM5ODIsIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCA5ODM3MzEsIDg1MiwgMCwgMTIxNjAsIAotICAgIDgzNDkxLCAxMDIxMiwgNjU0MzUsIDEyOTA5MiwgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIAorICAgIDQzOTgyLCA3MDc0MSwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgMTYwMiwgMCwgNzEyNjcsIDg1MiwgMCwgMTIxNjAsIAorICAgIDgzNDkxLCAxMDIxMiwgNjU0MzUsIDEyNjYwMywgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIAogICAgIDExMDM1LCAxMDQxMSwgOTE3OTg4LCAxMDI1NSwgNjcxMCwgMTAyNzksIDQxOTQsIDEwMzc1LCA0Mzg1MywgMTI4NTk5LCAKICAgICA0MzE1LCAxMjY0NCwgODM0OTAsIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDY3NDA4LCAxMjg5NDUsIDExNTAxLCA0MTE3NywgCi0gICAgMTIxMTgwLCAxMjg4NjYsIDQzNDMxLCAxMjcwOTcsIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgOTgzMzU4LCA0MzMxMywgCi0gICAgMTIwMjMwLCA0MTE3NiwgMTI4NzgwLCA5OTQsIDk4MzA0NSwgODQ1MiwgNzc5NzMsIDczOTY2LCA2Njg5MCwgNzA4MTIsIAotICAgIDU5MjEsIDAsIDI1OTcsIDkyNDIzLCA1OTIyLCAxMTg5MDMsIDY2ODczLCA0MTg2LCA5MjUzMSwgMTE5OTY3LCAxMjcxMDUsIAotICAgIDY3MTgsIDEyNzAyOSwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyMTA0MCwgNDQxMywgOTIxOTYsIDQyMjY4LCAKLSAgICAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIDQzMTY5LCAKLSAgICAxMDE3NiwgMCwgNzQyLCA3NDg4MSwgMjg5MywgMTA3NzIsIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAxMTY4MiwgNjc1NiwgCi0gICAgMTI1MTA0LCAxMjExMjYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEyMDQ5NCwgMTE0MSwgNDI0MDcsIAotICAgIDc0MTcsIDcxOCwgNzU3MiwgOTczLCAxMTk1OTksIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIDQyMzMzLCAKLSAgICA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAxMjA4NDksIDEyMDIsIDAsIDk4MzkxMCwgCi0gICAgNjU4NjMsIDAsIDY4NDg0LCA5NDAxMywgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIAotICAgIDc4MDQyLCA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDkyNDIyLCAwLCA1NTIzNywgMTQzMSwgMTE5MTk0LCA2NjU2NSwgCi0gICAgMTA4MjEsIDAsIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIAotICAgIDcxMjI4LCA5MTc5ODIsIDEyOTE4OCwgMTc0MCwgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgCi0gICAgMTIwNjgsIDc4MTAyLCA3MTIyNiwgMTAxNDEsIDc0OTIyLCA2Mzc2MSwgODc4NSwgNDQ3NiwgNjUwNzEsIDYzNzYzLCAKLSAgICAxMjY1NSwgODkwNywgOTE0NywgNzgxMDYsIDc4MTAzLCA3ODEwNCwgMTIwODk4LCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgCi0gICAgNDE1NzIsIDEyNzk3OSwgMTI3MTYwLCA5ODM1NTQsIDQxNTczLCA4MzE2MCwgMzkzMSwgMTIwMjk1LCA3NDE0MywgODMxNTYsIAotICAgIDgzMTU3LCA4MzE1OCwgNzg0NjAsIDExOTgyLCAwLCA4MzA2NywgMTI4MzgxLCA5MjcxMiwgNjQ0ODQsIDExOTI2NiwgCi0gICAgNDExNjcsIDAsIDQxNzM1LCA5NDAxOSwgNzE3LCAxMDc1NCwgODMxNjgsIDgzMTY5LCA3MjQxMywgODMxNjMsIDYzNzY3LCAKLSAgICA4MzE2NSwgMTc4MCwgNjkzNiwgMCwgODMxNjEsIDgxOSwgMTA2MTEsIDk2OTQsIDEyNjk3OCwgNzE0NzQsIDAsIDEyNzg3MSwgCi0gICAgMTI5MDY5LCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAKLSAgICAzMzQ2LCA4MzM5LCAxMjgxNjUsIDEyODIwOCwgNTc1LCAyNjgsIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCAKLSAgICA2NTU2NSwgODMzNiwgNTkzNiwgNzI5MCwgNzgxMTcsIDgzMzcsIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDgzMTUxLCAKLSAgICA3ODEyMywgNjU0NjYsIDExMDkwLCA2OTUzLCAwLCA4MzM3NSwgNzQ5NzMsIDc4MTMyLCA1OTI2LCA2ODI1MCwgNzgxMzAsIAotICAgIDc4MTI2LCA3ODEyNywgNzgxMjQsIDc4MTI1LCA5MDM4LCA3ODg3LCA0MzQ1NiwgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgCi0gICAgOTgzNTU5LCA2NTc0MiwgMTI4NzQsIDExOTU5NywgMTE1OTAsIDAsIDc0MDQ4LCA2NzM3OSwgODU5NSwgOTgzNSwgOTE3OTQ3LCAKLSAgICA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDc0OTc1LCAxMjM4MSwgMzQ4OCwgNTkzMywgMTAwMzMsIAotICAgIDcxMTAxLCA2NjI0MSwgNjU1NzAsIDExOTE1NCwgMTIyOTcsIDcxMjEyLCAxOTU1LCAxMjc5NzAsIDUzNDksIDQyNTM4LCAwLCAKLSAgICAxMjQ5MzIsIDc0MTEsIDk0NjIsIDEyODE1MCwgMCwgMTI4NDY1LCA0MzkyMCwgNDI3MzYsIDEyMTAxNywgNTc1NiwgCi0gICAgMTI4MzI0LCA3NjM4LCA0MTY0MiwgNDI3NjQsIDk4MzcxNywgNDMxMDksIDc2MzcsIDU3NTIsIDExMjEzLCA4MzQ4MSwgCi0gICAgNzM4MzIsIDEyODgyNywgODM0ODYsIDEyODIzMSwgNzgzMzQsIDkxNzk1NywgNzYzNiwgNjUxNzEsIDkxMjQsIDk4MzIxMCwgCi0gICAgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCA5ODMyMjEsIDIwMjcsIDY2MjMwLCAxMDA4MCwgNzgxMzYsIDEwNDAzLCA3MDg2OSwgCi0gICAgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDExMTgzLCAxMjA0MzEsIDEyMDQzMCwgMCwgMTI4MzUxLCAxMjc0ODksIAotICAgIDEyNzEzOCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIDE5NDY0OCwgNDEyNzQsIDU3NzgsIDYzMDIsIAotICAgIDEyMTQzMiwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNjcyNDIsIDkzMDQxLCA5NDUyLCAxMjgxNTMsIDc0MzkzLCAxMTU1MiwgCi0gICAgMCwgMTI3ODU1LCAxMjgyMTcsIDY1MzkxLCAxMjg2MTQsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCA3ODY1OCwgCi0gICAgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgMTIwNDEyLCAKLSAgICA0MTI2NywgNDY0NiwgNjc3NTksIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIDc4MjcwLCAxMjc5ODIsIAotICAgIDk4MzE3MiwgNDM5NDgsIDE5NTEwMCwgNjg4NDAsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAxNjcxLCAxMjc4OTIsIAotICAgIDYwNjksIDkyMTksIDEyODU1OCwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIDExOTE0MywgMCwgCi0gICAgNzE0NjIsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAxMTk1NjcsIDY3NzA1LCAKLSAgICA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDk4MzYyOSwgMTI4NjExLCA4MzQ3NCwgMTAyMjksIAotICAgIDEwNjM1LCA4MjYsIDgzNDc1LCAxOTUwODIsIDEyNzAwMywgMTk1MDg0LCA3MTQ1NSwgNjQ4MywgOTIyMTEsIDE4MDgsIAotICAgIDc4NDgsIDExMzc4OCwgODEwMCwgNzgyMjcsIDcxMTk4LCA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCA3ODY2NSwgCi0gICAgNjc3MDQsIDk4MzkyMSwgMTEwMDMsIDk5MDQsIDgzNDEwLCA5ODM5MTksIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDkyOTkyLCAKLSAgICA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3MTA5MiwgMTAzMTMsIDgzNDA4LCA4MzUwMCwgNjQzMjAsIDEwMjY1LCAKLSAgICA2NzI1MiwgMTA5NjIsIDY2OTA0LCA0MzAwOCwgODk0NSwgNzg2ODMsIDEyMDk5NSwgNDEsIDE5NTA3MiwgMTc5MiwgCi0gICAgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDY4MjU0LCA5MjU0NCwgNzc5NTEsIDEyMDY2LCA2NzI1OCwgMzg1LCA0MTUyLCAyNTg1LCAKLSAgICAxMjc4MDQsIDExOTA2OCwgMzEyNiwgOTE3ODUyLCA3Mzk4MywgMTA5NTcsIDEyNzAzNywgMTExNjAsIDExOTExNiwgCi0gICAgMTI3ODczLCAxMzE1NywgMCwgMTI4MDI0LCAzNTcwLCAxMjkxODcsIDc0NDMsIDExODgwNCwgNDQwMDYsIDY5OTcsIDY4MDA0LCAKLSAgICAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCA5MTc5NzEsIDY1MjE2LCA3MDE5NiwgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIAotICAgIDEyODU0MywgNzgzOSwgOTI2MTIsIDc4ODA2LCA3NTA2NCwgOTY5MSwgNDQxMSwgNzg4MDIsIDEyMTIxOSwgMTIwODU0LCAKLSAgICA0MzQ0MiwgNjk4NTEsIDY1MjU0LCAxMDA2NiwgOTgzODg5LCA3MjQxOSwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAKLSAgICAxOTkzMiwgNjQ4MzEsIDAsIDExMzY4NCwgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDY1MDcwLCAxMTA1NiwgCi0gICAgOTgzNTc0LCAxMTk5MjUsIDk4MzA5OSwgNDExNjUsIDExMzI4LCAxMjQ1MCwgOTgzODExLCA0MTE2NiwgMCwgMTI0NTYsIAotICAgIDExOTkxNCwgMTcxLCA1OTQxLCAxMjQ1MiwgMTk0NzA5LCAxMjQ1OCwgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIAotICAgIDc0MTYyLCAxMTkzMjAsIDEyMDQ4MywgOTk2OSwgMTIwNzY3LCAxMjQ1NCwgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIAotICAgIDc4NDI0LCAzMjMwLCA2ODc3MywgOTgzNDk3LCA3NTAyNSwgNTIwOSwgMjk3LCA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIAotICAgIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIDc0MTU2LCA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIAotICAgIDc4ODkzLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgMTI3NTA1LCA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIAotICAgIDY5Nzk0LCAyNDk1LCA3NDkxMSwgNTg0NCwgNjgwMzEsIDExODgzOCwgMTI3OTQ3LCAxMjY1NCwgNDY2MywgMTg5OSwgCi0gICAgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgOTI5NzIsIDAsIDExOTAwMCwgODg5MiwgNzg4NzIsIDkyMzM5LCAKLSAgICA3MTIzMiwgOTgzMDczLCA1NzgyLCA0MjAsIDEyNzM0OCwgOTE3ODcxLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAxMjg1MzMsIAotICAgIDY0ODE0LCA2Mzc5NiwgNDM4NjEsIDAsIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAxMjg0NzksIDEyMTE0NCwgNjM3OTIsIAotICAgIDQ2NTksIDEyMDc4OCwgNzc5NzEsIDQzNjc2LCA3NDk0NCwgNjk2NzMsIDEyMTAyOSwgMTExMjksIDkyOTI5LCAzMjksIAotICAgIDc3OTY4LCA5MjcwNywgODM0OTYsIDczOTksIDAsIDQxMTg4LCAxMzI0NCwgNjc2OTIsIDQyMTY3LCA3NDM1LCA3ODE5MywgCi0gICAgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCAKLSAgICA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDY5Njc2LCAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIAotICAgIDU2MDMsIDAsIDQ0NzMsIDEyMTA4NSwgNzI0MjYsIDEyNDk0NywgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgMTI4NTQ4LCAKLSAgICAxMTkyMTMsIDUzNDcsIDY5ODAyLCA5MTc5NzMsIDczODY4LCA3MDg1MiwgMTA1ODgsIDAsIDAsIDYzNzU1LCAxMjgyNzEsIAotICAgIDUzNDMsIDc4NDIyLCAxMjA2NjEsIDQ1NTUsIDUzNDEsIDgzNDU5LCA3MDA3MSwgNzQ5MTYsIDUzNTEsIDc4Njc1LCA0MzEwNCwgCi0gICAgNjUyNDQsIDEyMTM2NSwgNjQ1NDEsIDQyNTE5LCA2ODEzNCwgMTI4OTE2LCAxMjY5ODYsIDc0NzY1LCAxMjg5NzksIAotICAgIDEyNzUxMCwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCAKLSAgICA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgCi0gICAgNjUzNTUsIDUzNDUsIDExMTAzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIAotICAgIDEyNjYzNSwgMjQyMywgNzQ1MTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDEyNjU3MywgMTI4NjcwLCA5ODM3ODcsIAotICAgIDAsIDY0NjA1LCAwLCA2ODA3NCwgOTgzOTc3LCA0OTE2LCAxMjg1NjgsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgCi0gICAgNjk3NzMsIDk3NzMsIDEzMTY3LCAxMjkxOCwgNDEwOTYsIDczOTgwLCA2OTI0NSwgNzgyNTQsIDgzNDUwLCAxMDY4NCwgMCwgCi0gICAgMTI1MDYzLCA5MjkwNiwgNzk0NiwgMTI1NDEsIDgxODIsIDY3NTg2LCA2OTc4MCwgMCwgMTI4MjA3LCAwLCA5ODM2NTQsIAotICAgIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDExODg1NCwgNjgwMTEsIDg4NDcsIDkyMzcxLCA2NTg3NiwgNTUzNSwgODMyOSwgCi0gICAgNzQ1OTAsIDEyNTAzNiwgOTI2MDksIDAsIDY2ODc0LCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIDEyMTIxMSwgNTYwNywgCi0gICAgNDEwODksIDEyODYyNiwgMCwgNzAyOTIsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIDg3NjQsIDEyMDQ1OSwgCi0gICAgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCA2NzI3MSwgNjUwMTEsIDQxMDkwLCAwLCA4MzQxNywgMTE4OCwgNzI1NCwgCi0gICAgMTEwMCwgMCwgNjcyNzAsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjcyODIsIDY3MjgxLCA2NzI4MCwgMzU3MiwgMTAwMjMsIAotICAgIDQ5NTksIDEzMDc5LCAwLCA2NzI3NSwgOTcyOSwgMTI1MTEwLCAxMjEwNDIsIDY3Mjc4LCA0MzM2MSwgMTI3MzU1LCA2NzI3NiwgCi0gICAgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgODMzOTIsIDgzMzY5LCA0MTQ1MSwgODMzNzAsIDExMDk1LCA4MjczLCAKLSAgICA3NDMyMiwgMzQ1MSwgNzAyOTEsIDk3MiwgNDE0NTMsIDY4MTY0LCAxMTkzMjcsIDczODgzLCA2ODAyMiwgNzM5NDUsIAotICAgIDgzMzYzLCAyMjg4LCAxOTk1NSwgOTUzOCwgODMzNjYsIDY5ODA3LCAwLCAxMjkwOTUsIDAsIDgzMzgxLCAxMTM5NiwgCi0gICAgODMzODUsIDExMDE5LCAwLCAxMjg0MTYsIDEyMTIwNSwgNjgwMjAsIDQxMDc4LCA3MTM2NSwgMjYxLCA1OTI3LCA3NzkxLCAKLSAgICAxMjg2ODEsIDczNjIsIDAsIDEwNjk2LCA3MDEyNCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCA5Mzk5NSwgMjgyLCAKLSAgICAxMTkxNzgsIDY0MzcsIDY4ODMwLCAxMjE0NTksIDk4MDEsIDY2Mzk5LCA3NDE3NywgMCwgOTE3OTU5LCAzNDc0LCA2NzI4NywgCi0gICAgMCwgNjcyODYsIDYwODEsIDgzNDY5LCA3ODg3NCwgNjcyODksIDY3MjgzLCA4MzQ3MSwgNzAwMDIsIDQyOTMwLCAwLCAKLSAgICA5MzAxMywgODc1MSwgMTE0OTksIDY3Mjk3LCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDY3Mjk4LCAxMjAyNzIsIAotICAgIDY4MDE3LCA5NjQyLCAxMDkxMiwgOTU4LCA2NzI5MywgMTEzODcsIDY3MjkxLCA0NjY2LCA3MDc5MiwgNDkxNSwgNjc3MTUsIAotICAgIDQ2NjksIDAsIDY4MDk5LCAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgNzUwNTMsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgCi0gICAgMCwgOTE3ODc1LCA4NjY0LCA5Njk3LCAzNjA2LCA4MzQ0NiwgOTgzOTc4LCA5MTc4NzQsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIAotICAgIDY3MzEyLCA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCAKLSAgICA0MjY2MSwgODM0MzgsIDEyMDI1NSwgMTIwMjU2LCAxMjMwMSwgNjc4MzYsIDY5ODIwLCA0MTEwMiwgNjQ0MjgsIDEyMDI2MiwgCi0gICAgNjY2MDIsIDEyMDI2NCwgMTAxNywgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgNzAzNDAsIDgzNDM3LCA4NjA4LCAKLSAgICA0Mjc4OSwgMTIwNjEzLCA4MzQzNiwgMCwgNzE5MDYsIDExMzA3LCA2NjcwNywgNjczMDEsIDY3MzAwLCAxMTc0NSwgNzkxOSwgCi0gICAgNjczMDQsIDE2NDEsIDAsIDAsIDg5NjYsIDEyODkwMCwgNzQ5MTksIDU5MDgsIDcxODcwLCA2Nzg1MywgNjc0NCwgNjczMTAsIAotICAgIDE2OTksIDY3MzA4LCA2NzMwNywgNjczMTQsIDY3MzEzLCA2MzA2LCAxMDE2OSwgNzEzMjQsIDExOTI1MSwgMTAwNjgsIAotICAgIDM3NjYsIDIzODksIDY3MzA1LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIDEzMTUzLCAwLCA0MjM4NiwgOTgzODE1LCAKLSAgICA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAxMDU0MSwgNTYyMiwgCi0gICAgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgOTE3ODM3LCA0MTQzNSwgNDM1MiwgNjczMjQsIAotICAgIDI0MzUsIDcxMjExLCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIDEyMDQ0NywgCi0gICAgMzc2OCwgNDE3NzQsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIDQ1NjQsIAotICAgIDExOTA0OSwgNzQ2MjMsIDc0MjcxLCA3Mzc1MywgODM3NCwgMTI3MjAxLCAwLCA2ODI5LCA1MjI1LCA2NjkwMSwgMTI3Mzg1LCAKLSAgICAwLCAwLCAxMTk2MTUsIDY3MzE5LCA2NzMxOCwgMzE2MiwgNDM1MDcsIDExNzcxLCA2NzMyMiwgNjczMjEsIDY3MzIwLCAKLSAgICA0MjYxNCwgNTM1MywgNTYyNSwgNzQxNzksIDY3MzE1LCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCA2NDI3NywgCi0gICAgNjk5NDIsIDY5NTIsIDY3MzI5LCA2NzMyOCwgNjczMjcsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgCi0gICAgMTA0NzEsIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgCi0gICAgMjQwMCwgNTYyNywgMTIwMDE3LCA2NzMzMCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAxMTM2OTMsIDIwMywgCi0gICAgNzQzNjUsIDAsIDAsIDY5OTg1LCA3ODM1MCwgMTEzNzAzLCA2NDM3OCwgNDIwNTQsIDEyODU3NSwgMCwgNTU0LCAxMTk2NDksIAotICAgIDExMzU4LCA3MTE3MiwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI1MTE0LCA3Mzg5MSwgODM0MjMsIDgzMDE5LCA1Njk0LCAKLSAgICA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMTIwOTYyLCA5MzAyOSwgNjk3NjQsIDAsIDAsIAotICAgIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCA5MTc1NjEsIDY3NzUzLCA0MzY1MSwgMTI5MTI5LCA2ODExOCwgNjgwOTMsIAotICAgIDExMjksIDEyNjU3NCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA3NTA1OCwgNjUyNTUsIDkzOTkyLCAKLSAgICAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0MTM2LCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgNzc1NiwgCi0gICAgMTIzNDIsIDEyMDY5NywgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCA4MTQ1LCAxMTY4LCAKLSAgICA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIAotICAgIDkxNzg1MCwgNDE0OTQsIDkyMzE2LCA0NjYwLCA2NzExNCwgMTA0MDUsIDEyNzE5NSwgNzg4MDMsIDAsIDEyOTE3NiwgCi0gICAgNDIwNDAsIDczOTE4LCAxMTk2MjcsIDc5NDQsIDQxNDU0LCAxMjYwNSwgMCwgNDIyMDUsIDQxNDU1LCAyMzYsIDY0MDUxLCAKLSAgICA3ODg2NywgODIxNCwgODM0MjEsIDExMzc4NCwgMTIwMDM3LCA0MTQ1NywgOTgzOTcwLCAxMTk1ODksIDE5NjksIDIzODQsIAotICAgIDgwOTcsIDEyODAxOSwgNzQxMywgNjgwMTIsIDc4MDI5LCA4NzY2LCA0Mzg2NCwgNzgwNzksIDU4NTQsIDEyNTAwMCwgCi0gICAgMTA1ODMsIDAsIDExOTk4OSwgMTI3NTU2LCAxMDQxNiwgNjgwNzAsIDM4NzIsIDgzNDI0LCA5ODM4MzksIDg0MjksIAotICAgIDEyMTIzMCwgMTE4ODA2LCAyODM4LCA2NDI5LCAwLCA4MzQyNiwgMCwgMTI4NDc4LCAwLCAxOTQ2MjAsIDk0MDA1LCAxMTA5NiwgCi0gICAgODM0MjIsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgNjc4MTksIDczNzQyLCA2NiwgCi0gICAgNjUsIDY4LCA2NywgNzAsIDY5LCA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgODIsIDgxLCA4NCwgCi0gICAgODMsIDg2LCA4NSwgODgsIDg3LCA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIDg1NTYsIAotICAgIDkxNzk3NSwgOTY1OSwgMCwgMCwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDEyNTAxNSwgNzgxODUsIDEyODk1OSwgCi0gICAgMCwgNzE0MzcsIDc4ODg2LCAwLCAwLCA3NDIyOSwgNjY1OTMsIDY0MzgsIDgzMzY0LCA5MTA5LCA3ODg4MiwgMTI4OSwgCi0gICAgNjQ1OTksIDExODkxNSwgNjgwMDksIDEyODMwMiwgNjU1MDcsIDI0NDcsIDExOTkxMSwgMTI4Njk0LCAxMjgwNDIsIAotICAgIDEyNjU0NSwgNjY1ODksIDAsIDYzMzQsIDEyODM2OSwgMCwgMTk5MzcsIDkxNzc5MywgMTMyMiwgOTIzNTksIDU2NzUsIDI1NCwgCi0gICAgMCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgNDIzMTIsIDAsIDE5NDY5MiwgNjk3MiwgNDI4MjYsIAotICAgIDc0NDA5LCA0MjQ2NCwgMTIwNTY3LCA2Njg5OSwgNjcxNTUsIDc0Nzk2LCA2NDQwMCwgNjQ2OTMsIDEyODgwNSwgNjc2ODcsIAotICAgIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCA0Mzg2NywgNDE5NzgsIDE0MTIsIAotICAgIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIDcxNDI4LCAxMjA3NDgsIDMxNDAsIAotICAgIDEyNzI3NiwgNzk2MCwgNDMyNzEsIDEyMTA5OSwgMTI1MTgsIDEwOTA5LCAxMjc1MDgsIDE0MjgsIDEyNDcyLCA2NzI1NCwgCi0gICAgNjcyNTMsIDc2OTksIDEyMzkzLCA2NzI1NywgMCwgNjcyNTYsIDY3MjU1LCA4MjIzLCAwLCA0MjYxLCAxMjE0NjAsIAotICAgIDEyMDkxMCwgNzQzMDgsIDk4MzgyNywgMTEzNzEyLCA2NzE1MywgOTgzNTcxLCAxMjgwNDYsIDQzNDE5LCA5ODM0NzEsIAotICAgIDY0NTU0LCAxMDU3NCwgMzg3OCwgNjc2OTEsIDQyMzUyLCAxNzUyLCA3Mzc4NSwgMTI4MTcxLCA0MjUwNiwgMTI4NTQxLCAKLSAgICAxMDE5OSwgOTE3ODY1LCAxMjUxNDIsIDY4MDIxLCA2NTkxOSwgMCwgNjY5NSwgNzIwLCAzMjQsIDAsIDEyOTAzNSwgNDM0MDYsIAotICAgIDk4MzczNiwgMTQ2NCwgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCA2ODA4MiwgNjQ0ODgsIDEyODk3NywgMTIwOTUxLCAKLSAgICA2NDA0MSwgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDEyMTQxNiwgNzg4NjMsIDAsIDEzMDIsIDY2Mjg4LCAKLSAgICA3ODg2MSwgMTE5MTM0LCAwLCA2NzE1MiwgNTIwNCwgNzQ3NzQsIDQzNDA0LCAxMTgzNSwgMTIwOTIzLCAzOTk1LCA2ODM2MCwgCi0gICAgNjU2MDgsIDM3MTQsIDkyMTkwLCAxMjAwMjYsIDY3MjYyLCAxMDk5OSwgMTE3NTAsIDY3MjU5LCA0MzI1MSwgNjcyNjQsIAotICAgIDQzMzAxLCAwLCAxMjA1NTcsIDgxMzAsIDg2NzIsIDEwODQ1LCAxMTk2NCwgMTIxMjY4LCAxMjgwMTQsIDkyMTczLCAwLCAKLSAgICA2ODQ1NSwgNDI4NjMsIDczODM5LCAxMjc1MjksIDAsIDY3NzAwLCA5MTc4MTIsIDExMzcwMSwgNDM2NDUsIDQ2OCwgNjEyLCAKLSAgICAwLCA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAwLCAxNjc0LCAwLCA1ODIzLCAxMjg2MjUsIDEyMjgwLCA3MDM2NywgNTQwLCAKLSAgICA3NDU2NCwgMTE5MDE3LCA2NjQyMiwgODQzMiwgNzg4NzMsIDExMDczLCAwLCA2NDMxNiwgMCwgMTIxMDcwLCA4MjAsIAorICAgIDEyMTE4MCwgMTI4ODY2LCA0MzQzMSwgMTI3MDk3LCA5MjQxMywgODcxNSwgOTgzMzk4LCA0MTE3OSwgOTgzMzU4LCA0MzMxMywgCisgICAgMTIwMjMwLCA0MTE3NiwgMTAxMDA3LCA5OTQsIDEwMDQ0OCwgODQ1MiwgNzc5NzMsIDczOTY2LCA2Njg5MCwgNzA4MTIsIAorICAgIDU5MjEsIDEwMDgwNCwgMjU5NywgNjY3NzYsIDU5MjIsIDExODkwMywgNjY4NzMsIDQxODYsIDkyNTMxLCA3Mzc0MSwgCisgICAgMTI3MTA1LCA2NzE4LCAxMjcwMjksIDQ0MDYsIDc0NjAxLCA4NDgwLCA5MTkyLCA5NzQ3LCAxMjEwNDAsIDQ0MTMsIDkyMTk2LCAKKyAgICA0MjI2OCwgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCAKKyAgICA0MzE2OSwgMTAxNzYsIDk4MzY0MCwgNzQyLCA3NDg4MSwgMjg5MywgMTA3NzIsIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAKKyAgICAxMTY4MiwgNjc1NiwgMTI1MTA0LCAxMjExMjYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEwMDUxNywgCisgICAgMTE0MSwgNDI0MDcsIDc0MTcsIDcxOCwgNzU3MiwgOTczLCAxMDA1MDAsIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIAorICAgIDEyNTA5OSwgODAxOCwgNDIzMzMsIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCA2NTM5MCwgMTAwNjcsIAorICAgIDEwMDg2OCwgMTIwMiwgMTAwNTU3LCAxMjgzNjQsIDY1ODYzLCAxMTkyNTAsIDY4NDg0LCA5NDAxMywgNzgxODIsIDY0NTQyLCAKKyAgICAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIDc4MDQyLCA2NzM4LCAxMjI4ODIsIDQzNjgxLCA2OTcyOCwgMjA1OSwgCisgICAgOTI0MjIsIDEwMDUwMiwgNTUyMzcsIDE0MzEsIDEwMDUwMywgNjY1NjUsIDEwODIxLCAxMDA1MDgsIDEyODA0LCAxMDA1MTAsIAorICAgIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIDcxMjI4LCAxOTQ2MjYsIDEyOTE4OCwgMTc0MCwgCisgICAgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgMTIwNjgsIDc4MTAyLCA3MTIyNiwgMTAxNDEsIDc0OTIyLCAKKyAgICA2Mzc2MSwgODc4NSwgNDQ3NiwgNjUwNzEsIDYzNzYzLCAxMjY1NSwgODkwNywgOTE0NywgNzgxMDYsIDc4MTAzLCA3ODEwNCwgCisgICAgMTIwODk4LCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgNDE1NzIsIDEyNzk3OSwgMTI3MTYwLCA5ODMxMjcsIDQxNTczLCAKKyAgICA4MzE2MCwgMzkzMSwgMTIwMjk1LCA3NDE0MywgODMxNTYsIDgzMTU3LCA4MzE1OCwgNzg0NjAsIDExOTgyLCA5ODM0ODMsIAorICAgIDgzMDY3LCAxMjgzODEsIDkyNzEyLCA2NDQ4NCwgMTE5MjY2LCA0MTE2NywgOTgzMzY2LCA0MTczNSwgOTQwMTksIDcxNywgCisgICAgMTA3NTQsIDcyNzQwLCA4MzE2OSwgNzI0MTMsIDgzMTYzLCA2Mzc2NywgODMxNjUsIDE3ODAsIDY5MzYsIDAsIDgzMTYxLCAKKyAgICA4MTksIDEwNjExLCA5Njk0LCAxMjUyMjgsIDcxNDc0LCAwLCAxMjc4NzEsIDEyOTA2OSwgODM0MywgODM0MiwgODM0NSwgCisgICAgODM0NCwgNjU3OCwgNzAwOSwgNzUyMywgNjkyMiwgODM0OCwgODM0NywgNzUyNSwgMzM0NiwgODMzOSwgMTI4MTY1LCAKKyAgICA3MjcwNSwgNTc1LCAyNjgsIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCA2NTU2NSwgODMzNiwgNTkzNiwgCisgICAgNzI5MCwgNzgxMTcsIDgzMzcsIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDgzMTUxLCA3ODEyMywgNjU0NjYsIDExMDkwLCAKKyAgICA2OTUzLCAxMjUyNDAsIDgzMzc1LCA3NDk3MywgNzgxMzIsIDU5MjYsIDY4MjUwLCA3ODEzMCwgNzgxMjYsIDc4MTI3LCAKKyAgICA3ODEyNCwgNzgxMjUsIDkwMzgsIDc4ODcsIDQzNDU2LCA3ODMwLCAxMTY1MSwgMTMwOTMsIDY0MDAyLCA5ODM1NTksIAorICAgIDY1NzQyLCAxMjg3NCwgMTAwNDczLCAxMTU5MCwgMTAwNDc1LCA3NDA0OCwgNjczNzksIDg1OTUsIDk4MzUsIDEwMDQ1NiwgCisgICAgNDM3MDMsIDEzMDk3LCAxMjcxOTcsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDc0OTc1LCAxMjM4MSwgMzQ4OCwgNTkzMywgCisgICAgMTAwMzMsIDcxMTAxLCA2NjI0MSwgNjU1NzAsIDc4MzM2LCAxMjI5NywgNzEyMTIsIDE5NTUsIDEyNzk3MCwgNTM0OSwgCisgICAgNDI1MzgsIDAsIDEyNDkzMiwgNzQxMSwgOTQ2MiwgMTI4MTUwLCAxMDA0NTMsIDEwMDQ1MiwgNDM5MjAsIDQyNzM2LCAKKyAgICA3MDc0NywgNTc1NiwgMTI4MzI0LCA3NjM4LCA0MTY0MiwgNDI3NjQsIDEyMDQ0NCwgNDMxMDksIDc2MzcsIDU3NTIsIAorICAgIDExMjEzLCA4MzQ4MSwgNzM4MzIsIDEwMDQ2MywgODM0ODYsIDEwMDQ2NSwgNzgzMzQsIDEyMTAzNCwgNzYzNiwgNjUxNzEsIAorICAgIDkxMjQsIDkxNzk1NywgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCA4MzQ4OCwgMjAyNywgNjYyMzAsIDEwMDgwLCA3ODEzNiwgCisgICAgMTA0MDMsIDcwODY5LCA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgMTExODMsIDEyMDQzMSwgMTIwNDMwLCA5ODMyMjMsIAorICAgIDEyODM1MSwgNzI4NDUsIDEyNzEzOCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIDE5NDY0OCwgCisgICAgNDEyNzQsIDU3NzgsIDYzMDIsIDEwMDM2NywgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNjcyNDIsIDkzMDQxLCA5NDUyLCAKKyAgICAxMjgxNTMsIDc0MzkzLCAxMTU1MiwgMCwgMTI3ODU1LCAxMjEzODAsIDY1MzkxLCAxMjg2MTQsIDEwMTcyLCA2NTQ1MywgCisgICAgNjM3ODksIDQxMjY0LCA3ODY1OCwgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCAKKyAgICA0MTI2OSwgMTIwNDEyLCA0MTI2NywgNDY0NiwgNjc3NTksIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIAorICAgIDc4MjcwLCAxMjc5ODIsIDk4MzE3MiwgNDM5NDgsIDE5NTEwMCwgNjg4NDAsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAKKyAgICAxNjcxLCAxMjc4OTIsIDYwNjksIDkyMTksIDEwMDQ2MSwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIAorICAgIDExOTE0MywgOTgzMzU5LCA3MTQ2MiwgOTQwNTAsIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIAorICAgIDExOTU2NywgNjc3MDUsIDkyNTYxLCA0MTQ2MiwgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgOTgzNjI5LCAKKyAgICAxMjc3NzAsIDgzNDc0LCAxMDIyOSwgMTA2MzUsIDgyNiwgODM0NzUsIDE5NTA4MiwgOTI2MDMsIDEyMTE0OSwgNzE0NTUsIAorICAgIDY0ODMsIDkyMjExLCAxODA4LCA3ODQ4LCAxMTM3ODgsIDgxMDAsIDc4MjI3LCA3MTE5OCwgNzg2NzAsIDEzMzAxLCA3ODY2NywgCisgICAgOTY2NywgNzg2NjUsIDY3NzA0LCA5ODM5MjEsIDExMDAzLCA5OTA0LCA4MzQxMCwgOTgzOTE5LCAxMjA2OTAsIDkxNDQsIAorICAgIDEwOTIxLCA5Mjk5MiwgNzg2ODAsIDk4NDAsIDY1MTMxLCA3ODY3OCwgNzEwOTIsIDEwMzEzLCA4MzQwOCwgODM1MDAsIAorICAgIDY0MzIwLCAxMDI2NSwgNjcyNTIsIDEwOTYyLCA2NjkwNCwgNDMwMDgsIDg5NDUsIDc4NjgzLCAxMjA5OTUsIDQxLCAKKyAgICAxOTQ4NjYsIDE3OTIsIDEyMDUxNSwgMTk1MDczLCA4NjU1LCA2ODI1NCwgOTI1NDQsIDc3OTUxLCAxMjA2NiwgNjcyNTgsIAorICAgIDM4NSwgNDE1MiwgMjU4NSwgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDkxNzg1MiwgNzM5ODMsIDEwOTU3LCAxMjcwMzcsIAorICAgIDExMTYwLCAxMTkxMTYsIDEyNzg3MywgMTMxNTcsIDk4MzY0NSwgMTI4MDI0LCAzNTcwLCAxMjkxODcsIDc0NDMsIDExODgwNCwgCisgICAgNDQwMDYsIDY5OTcsIDY4MDA0LCAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCAxOTUwNDYsIDY1MjE2LCA3MDE5NiwgCisgICAgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIDEyODU0MywgNzgzOSwgOTI2MTIsIDc4ODA2LCA3NTA2NCwgOTY5MSwgNDQxMSwgCisgICAgNzEyNzYsIDcyODM3LCAxMjA4NTQsIDQzNDQyLCA2OTg1MSwgNjUyNTQsIDEwMDY2LCAxMjI4OTcsIDcyNDE5LCAxMjE0MTEsIAorICAgIDEyMDg4NiwgMTMwNjEsIDgwMTYsIDc4Njg3LCAxOTkzMiwgNjQ4MzEsIDE5NDk3NSwgMTEzNjg0LCAxMjM5MCwgMTE5MTcxLCAKKyAgICAxNjM0LCA2ODExNSwgNjUwNzAsIDExMDU2LCA5ODM1NzQsIDExOTkyNSwgOTgzMDk5LCA0MTE2NSwgMTEzMjgsIDEyNDUwLCAKKyAgICA5ODM4MTEsIDQxMTY2LCA5Mzk3MSwgMTI0NTYsIDExOTE5NCwgMTcxLCA1OTQxLCAxMjQ1MiwgMTk0NzA5LCAxMjQ1OCwgCisgICAgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIDc0MTYyLCAxMTkzMjAsIDEyMDQ4MywgOTk2OSwgMTIwNzY3LCAxMjQ1NCwgCisgICAgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIDc4NDI0LCAzMjMwLCA2ODc3MywgMTI4NTk1LCA3NTAyNSwgNTIwOSwgMjk3LCAKKyAgICA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIDc0MTU2LCAKKyAgICA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIDc4ODkzLCA3NDgxNSwgMTA1MTIsIDAsIDcyODY2LCA3ODg3NSwgNzgwNDksIAorICAgIDcyODQxLCAyNTAzLCA3Mzc3OCwgMTc2MiwgNjk3OTQsIDI0OTUsIDc0OTExLCA1ODQ0LCA2ODAzMSwgMTE4ODM4LCAKKyAgICAxMjc5NDcsIDEyNjU0LCA0NjYzLCAxODk5LCA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCA5Mjk3MiwgCisgICAgMTIwNDI0LCA3MTI3MiwgODg5MiwgNzg4NzIsIDkyMzM5LCA3MTIzMiwgOTgzMDczLCA1NzgyLCA0MjAsIDEyNzM0OCwgCisgICAgOTE3ODcxLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAxOTQ5NjcsIDEyNTIyMywgNjQ4MTQsIDYzNzk2LCA0Mzg2MSwgMCwgCisgICAgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDEyODQ3OSwgMTIxMTQ0LCA2Mzc5MiwgNDY1OSwgMTIwNzg4LCA3Nzk3MSwgNDM2NzYsIAorICAgIDc0OTQ0LCA2OTY3MywgMTIxMDI5LCAxMTEyOSwgOTI5MjksIDMyOSwgNzc5NjgsIDkyNzA3LCA4MzQ5NiwgNzM5OSwgMCwgCisgICAgNDExODgsIDEzMjQ0LCA2NzY5MiwgNDIxNjcsIDc0MzUsIDc4MTkzLCA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAKKyAgICAxMTM2NSwgNDMxMjYsIDc3OTcyLCAxMjA4NjIsIDY1Njg0LCAwLCA1NjAxLCA2NTE5MiwgNDI3NjUsIDYzNzUyLCAwLCAKKyAgICA3OTg3LCA2OTY3NiwgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAKKyAgICAxMjEwODUsIDcyNDI2LCAxMjQ5NDcsIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDEyODU0OCwgNjY3NDEsIDUzNDcsIDY5ODAyLCAKKyAgICA5MTc5NzMsIDczODY4LCA3MDg1MiwgMTA1ODgsIDAsIDEyODQyMCwgNjM3NTUsIDEyNjY0MywgNTM0MywgNzg0MjIsIAorICAgIDEyMDY2MSwgNDU1NSwgNTM0MSwgODM0NTksIDcwMDcxLCA3NDkxNiwgNTM1MSwgNzg2NzUsIDQzMTA0LCA2NTI0NCwgCisgICAgMTIxMzY1LCA2NDU0MSwgNDI1MTksIDY4MTM0LCAxMjg5MTYsIDEyNjk4NiwgNzQ3NjUsIDY2Nzg1LCAxMjc1MTAsIDY2MzgsIAorICAgIDEyOTM2MywgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCA0MjE3MiwgCisgICAgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgNjUzNTUsIAorICAgIDUzNDUsIDExMTAzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIDEyNjYzNSwgMjQyMywgCisgICAgNzQ1MTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDEyNjU3MywgMTI4NjcwLCA5ODM3ODcsIDAsIDY0NjA1LCAwLCAKKyAgICA2ODA3NCwgMTI3MzA3LCA0OTE2LCAxMjg1NjgsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgNjk3NzMsIDk3NzMsIAorICAgIDEzMTY3LCAxMjkxOCwgNDEwOTYsIDczOTgwLCA2OTI0NSwgNzgyNTQsIDY2NzM3LCAxMDY4NCwgMTIyOTEzLCAxMjUwNjMsIAorICAgIDkyOTA2LCA3OTQ2LCAxMjU0MSwgODE4MiwgNjc1ODYsIDY5NzgwLCAxMjk0MjIsIDEyODIwNywgOTgzNjQ0LCAxMjg2MTMsIAorICAgIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDk4MzQ5MSwgMTE4ODU0LCA2ODAxMSwgODg0NywgOTIzNzEsIDY1ODc2LCA1NTM1LCAKKyAgICA4MzI5LCA3NDU5MCwgMTI1MDM2LCA5MjYwOSwgMCwgNjY4NzQsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgMTIxMjExLCAKKyAgICA1NjA3LCA0MTA4OSwgMTI4NjI2LCA5ODMzOTYsIDcwMjkyLCAyNjY1LCAxMTMwNCwgNDM3NTEsIDc0MjAwLCA0OTcwLCAKKyAgICA4NzY0LCAxMjA0NTksIDg5MzQsIDkyNzI2LCA0MTU2NiwgNDQ5MiwgNjcyNzEsIDY1MDExLCA0MTA5MCwgMCwgODM0MTcsIAorICAgIDExODgsIDcyNTQsIDExMDAsIDEyOTE4MCwgNjcyNzAsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjcyODIsIDY3MjgxLCA2NzI4MCwgCisgICAgMzU3MiwgMTAwMjMsIDQ5NTksIDEzMDc5LCAxMjQ5NzgsIDY3Mjc1LCA5NzI5LCAxMjUxMTAsIDEyMTA0MiwgNjcyNzgsIAorICAgIDQzMzYxLCAxMjczNTUsIDY3Mjc2LCAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIDEzMzA0LCA4MzM5MiwgODMzNjksIAorICAgIDQxNDUxLCA4MzM3MCwgMTEwOTUsIDgyNzMsIDc0MzIyLCAzNDUxLCA3MDI5MSwgOTcyLCA0MTQ1MywgNjgxNjQsIDExOTMyNywgCisgICAgNzM4ODMsIDY4MDIyLCA3Mzk0NSwgODMzNjMsIDIyODgsIDE5OTU1LCA5NTM4LCA4MzM2NiwgNjk4MDcsIDEyNTI0NiwgCisgICAgMTI5MDk1LCAwLCA4MzM4MSwgMTEzOTYsIDgzMzg1LCAxMTAxOSwgMTIxMjE4LCAxMjg0MTYsIDEyMTIwNSwgNjgwMjAsIAorICAgIDQxMDc4LCA2Njc1OCwgMjYxLCA1OTI3LCA3NzkxLCAxMjg2ODEsIDczNjIsIDEyNTI1NiwgMTA2OTYsIDcwMTI0LCA2MDczLCAKKyAgICA5ODM4LCAxMTg5MjAsIDkxNzg3OCwgNjA3NSwgOTM5OTUsIDI4MiwgMTE5MTc4LCA2NDM3LCA2ODgzMCwgMTIxNDU5LCAKKyAgICA5ODAxLCA2NjM5OSwgNzQxNzcsIDY2NzkxLCA5MTc5NTksIDM0NzQsIDY3Mjg3LCAwLCA2NzI4NiwgNjA4MSwgODM0NjksIAorICAgIDc4ODc0LCA2NzI4OSwgNjcyODMsIDgzNDcxLCA3MDAwMiwgNDI5MzAsIDEyOTQxMywgOTMwMTMsIDg3NTEsIDExNDk5LCAKKyAgICA2NzI5NywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCA2NzI5OCwgMTIwMjcyLCA2ODAxNywgOTY0MiwgMTA5MTIsIAorICAgIDk1OCwgNjcyOTMsIDExMzg3LCA2NzI5MSwgNDY2NiwgNzA3OTIsIDQ5MTUsIDY3NzE1LCA0NjY5LCAwLCA2ODA5OSwgCisgICAgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDc1MDUzLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIDc0MTczLCA5MTc4NzUsIAorICAgIDg2NjQsIDk2OTcsIDM2MDYsIDgzNDQ2LCA5ODM5NzgsIDkxNzg3NCwgNjQ4MTUsIDEwNjMsIDExOTA4OCwgNjczMTIsIAorICAgIDk3NzIsIDcyNTUsIDg4ODYsIDEzODksIDEwMDgzMywgMTIwMjU3LCAxMTkyMDIsIDEyMDI1OSwgMTI5NDEsIDQyNjYxLCAKKyAgICA4MzQzOCwgMTIwMjU1LCAxMDExMDEsIDEyMzAxLCA2NzgzNiwgNjk4MjAsIDQxMTAyLCA2NDQyOCwgMTIwMjYyLCA2NjYwMiwgCisgICAgNjY3ODgsIDEwMTcsIDY2NjAwLCA1MjMsIDUwNSwgMTQ0NywgNzQ0MzYsIDAsIDcwMzQwLCA2Njc5MywgODYwOCwgNDI3ODksIAorICAgIDcwODY4LCA4MzQzNiwgOTgzNDgwLCA3MTkwNiwgMTEzMDcsIDY2NzA3LCA2NzMwMSwgNjczMDAsIDExNzQ1LCA3OTE5LCAKKyAgICA2NzMwNCwgMTY0MSwgMTI2NTIzLCAwLCA4OTY2LCAxMjg5MDAsIDc0OTE5LCA1OTA4LCA3MTg3MCwgNjc4NTMsIDY3NDQsIAorICAgIDY3MzEwLCAxNjk5LCA2NzMwOCwgNjczMDcsIDY3MzE0LCA2NzMxMywgNjMwNiwgMTAxNjksIDcxMzI0LCAxMTkyNTEsIAorICAgIDEwMDY4LCAzNzY2LCAyMzg5LCA2NzMwNSwgMTIwNDU1LCA2NjExLCAyNTcsIDQzMTcwLCAxMzE1MywgMCwgNDIzODYsIAorICAgIDkxNzk3NCwgOTQzNiwgMjU5OSwgOTgzNzQ3LCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAxMDU0MSwgCisgICAgNTYyMiwgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgOTE3ODM3LCA0MTQzNSwgNDM1MiwgCisgICAgNjczMjQsIDI0MzUsIDcxMjExLCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIAorICAgIDEyMDQ0NywgMzc2OCwgNDE3NzQsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIAorICAgIDQ1NjQsIDEwMDQ3MCwgNzQ2MjMsIDc0MjcxLCA3Mzc1MywgODM3NCwgMTI3MjAxLCAwLCA2ODI5LCA1MjI1LCA2NjkwMSwgCisgICAgMTI3Mzg1LCAwLCAwLCAxMTk2MTUsIDY3MzE5LCA2NzMxOCwgMzE2MiwgNDM1MDcsIDExNzcxLCA2NzMyMiwgNjczMjEsIAorICAgIDY3MzIwLCA0MjYxNCwgNTM1MywgNTYyNSwgNzQxNzksIDY3MzE1LCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCAKKyAgICA2NDI3NywgNjk5NDIsIDY5NTIsIDY3MzI5LCA2NzMyOCwgNjczMjcsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgCisgICAgNTYzMiwgMTA0NzEsIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgCisgICAgNDc3MiwgMjQwMCwgNTYyNywgNzQzNjQsIDY3MzMwLCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDg3ODYsIDExMzY5MywgMjAzLCAKKyAgICA3NDM2NSwgMCwgMCwgNjk5ODUsIDc4MzUwLCAxMDEwNjUsIDY0Mzc4LCA0MjA1NCwgMTI4NTc1LCAxOTQ5OTMsIDU1NCwgCisgICAgODM0MjIsIDExMzU4LCA3MTE3MiwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI1MTE0LCA3Mzg5MSwgODM0MjMsIDgzMDE5LCAKKyAgICA1Njk0LCA3Njg5LCA2Njc4NCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMTIwOTYyLCA5MzAyOSwgNjk3NjQsIDAsIAorICAgIDEyMDYyNSwgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDkxNzU2MSwgNjc3NTMsIDQzNjUxLCAxMjc4MDEsIDY4MTE4LCAKKyAgICA2ODA5MywgMTEyOSwgNzI4NDYsIDEwMDcwNywgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA3NTA1OCwgNjUyNTUsIAorICAgIDkzOTkyLCAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0MTM2LCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgCisgICAgOTgzNjEyLCA3NzU2LCAxMjM0MiwgMTIwNjk3LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDcxMzE4LCA0NTYsIDcwMjYsIAorICAgIDgxNDUsIDExNjgsIDkyNTEsIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCAKKyAgICA2ODEyMSwgOTE3ODUwLCA0MTQ5NCwgOTIzMTYsIDQ2NjAsIDY3MTE0LCAxMDQwNSwgMTI3MTk1LCA3ODgwMywgMTAwNDM5LCAKKyAgICAxMjkxNzYsIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCA3OTQ0LCA0MTQ1NCwgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCAKKyAgICA2NDA1MSwgNzg4NjcsIDgyMTQsIDgzNDIxLCAxMTM3ODQsIDEyMDAzNywgNDE0NTcsIDk4MzQ4MSwgMTE5NTg5LCAxOTY5LCAKKyAgICAyMzg0LCA4MDk3LCAxMjgwMTksIDc0MTMsIDY4MDEyLCA3MjgyMCwgODc2NiwgNDM4NjQsIDcyODI0LCA1ODU0LCAxMjUwMDAsIAorICAgIDEwNTgzLCAwLCAxMTk5ODksIDcyODE5LCAxMDQxNiwgNjgwNzAsIDM4NzIsIDgzNDI0LCAxMjczOTksIDg0MjksIDEyMTIzMCwgCisgICAgMTE4ODA2LCAyODM4LCA2NDI5LCAxMjEwNzcsIDgzNDI2LCA3MjgzNSwgMTAwNDIwLCAwLCAxOTQ2MjAsIDk0MDA1LCAKKyAgICAxMTA5NiwgODM0MjAsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgNjc4MTksIAorICAgIDczNzQyLCA2NiwgNjUsIDY4LCA2NywgNzAsIDY5LCA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgCisgICAgODIsIDgxLCA4NCwgODMsIDg2LCA4NSwgODgsIDg3LCA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIAorICAgIDg1NTYsIDkxNzk3NSwgOTY1OSwgMCwgMTAwNzM2LCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMTI1MDE1LCAKKyAgICA2ODI4OCwgMTI4OTU5LCA5MTc5NzYsIDcxNDM3LCA3ODg4NiwgOTgzMjg4LCA5ODM0OTYsIDc0MjI5LCA2NjU5MywgNjQzOCwgCisgICAgODMzNjQsIDkxMDksIDc4ODgyLCAxMjg5LCA2NDU5OSwgMTE4OTE1LCA2ODAwOSwgMTI4MzAyLCA2NTUwNywgMjQ0NywgCisgICAgMTE5OTExLCAxMjg2OTQsIDEyODA0MiwgMTI2NTQ1LCA2NjU4OSwgOTgzODc1LCA2MzM0LCAxMjgzNjksIDkxNzkxOSwgCisgICAgMTk5MzcsIDkxNzc5MywgMTMyMiwgOTIzNTksIDU2NzUsIDI1NCwgMTI0OTY0LCAwLCA2OTY4NiwgNDI0MjUsIDg5MTgsIAorICAgIDY0MDAzLCA1NzE2LCA0MjMxMiwgMTIwMDkwLCAxMDA1NTIsIDY5NzIsIDQyODI2LCA3NDQwOSwgNDI0NjQsIDEyMDU2NywgCisgICAgNjY4OTksIDY3MTU1LCA3NDc5NiwgNjQ0MDAsIDY0NjkzLCAxMjg0MzcsIDY3Njg3LCA2NTQyOSwgOTUxNSwgNDQzNSwgCisgICAgOTgzMzY3LCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCA0Mzg2NywgNDE5NzgsIDE0MTIsIDQ1OTQsIDEzOTEsIAorICAgIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIDcxNDI4LCAxMjA3NDgsIDMxNDAsIDEyNzI3NiwgNzk2MCwgCisgICAgNDMyNzEsIDEyMTA5OSwgMTI1MTgsIDEwOTA5LCAxMjc1MDgsIDE0MjgsIDEyNDcyLCA2NzI1NCwgNjcyNTMsIDc2OTksIAorICAgIDEyMzkzLCA2NzI1NywgMCwgNjcyNTYsIDY3MjU1LCA4MjIzLCAwLCA0MjYxLCA3ODc4NCwgMTIwOTEwLCA3NDMwOCwgCisgICAgOTgzODI3LCAxMTM3MTIsIDY3MTUzLCAxMjUyNTIsIDcyNzQ0LCA0MzQxOSwgNzI3NDgsIDY0NTU0LCAxMDU3NCwgMzg3OCwgCisgICAgNjc2OTEsIDQyMzUyLCAxNzUyLCA3Mzc4NSwgMTI4MTcxLCA0MjUwNiwgMTI4NTQxLCAxMDE5OSwgOTE3ODY1LCAxMjUxNDIsIAorICAgIDY4MDIxLCA2NTkxOSwgMTI3MTAyLCA2Njk1LCA3MjAsIDMyNCwgMCwgMTI5MDM1LCA0MzQwNiwgMTI1MjY5LCAxNDY0LCAKKyAgICA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDY4MDgyLCA2NDQ4OCwgMTI4OTc3LCAxMjA5NTEsIDM0MjAsIDc0Nzg3LCAwLCAKKyAgICA3ODg2NSwgOTIyNTgsIDY1NTk3LCAxMjE0MTYsIDc4ODYzLCAwLCAxMzAyLCA2NjI4OCwgNzg4NjEsIDExOTEzNCwgCisgICAgMTIwMjc0LCA2NzE1MiwgNTIwNCwgNzQ3NzQsIDQzNDA0LCAxMTgzNSwgMTIwOTIzLCAzOTk1LCA2ODM2MCwgNjU2MDgsIAorICAgIDM3MTQsIDkyMTkwLCAxMjAwMjYsIDY3MjYyLCAxMDk5OSwgMTE3NTAsIDY3MjU5LCA0MzI1MSwgNjcyNjQsIDQzMzAxLCAwLCAKKyAgICAxMjA1NTcsIDgxMzAsIDg2NzIsIDEwODQ1LCAxMTk2NCwgMTIxMjY4LCAxMjgwMTQsIDkyMTczLCAxMjA3MTAsIDY4NDU1LCAKKyAgICA0Mjg2MywgNzM4MzksIDExOTkyOSwgMCwgNjc3MDAsIDkxNzgxMiwgMTEzNzAxLCA0MzY0NSwgNDY4LCA2MTIsIDAsIAorICAgIDY0NDAxLCA2NjQ0OCwgNjgzNzYsIDEyODIwOCwgMTY3NCwgOTE3NTgxLCA1ODIzLCAxMjg2MjUsIDEyMjgwLCA3MDM2NywgCisgICAgNTQwLCA3NDU2NCwgMTE5MDE3LCA2NjQyMiwgODQzMiwgNzg4NzMsIDExMDczLCAwLCA2NDMxNiwgMCwgMTIxMDAxLCA4MjAsIAogICAgIDQxNzQxLCA5ODM0NzcsIDEyMDY2NywgMTI0OTgxLCA2NDY4NCwgMTI2OTkyLCAzMzU5LCA3ODAwLCA2OTkzNCwgNjUxNzcsIAogICAgIDYyMjYsIDM1MywgMTIzOTYsIDEyMTE3NiwgMTE5NjEyLCA2NDc0MiwgMTI4NjgyLCA3ODg3OSwgOTgzNDc4LCAxMjc5MzgsIAotICAgIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3MDM1MiwgMTg4NCwgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgOTgzMTQyLCAKLSAgICAxMTk1LCA2NDg5OCwgNzkyNCwgMTE5ODcwLCA0MTE1MSwgMjAxMCwgNzE0MzAsIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIDAsIAotICAgIDQzNjAsIDEyMTAyMywgOTczOSwgMTI4NTUwLCA2OTkzMywgNzM5MjEsIDkxNzYzMSwgNDI1MjEsIDg1MzksIDEyODYwNiwgMCwgCi0gICAgMTE4OTg2LCAxMjcxNDgsIDQ3ODgsIDEyMTM0NSwgNjgwMjMsIDY1NzM0LCA5ODM0NTcsIDQzNzkwLCAxMjAyNzQsIDEzMDc1LCAKLSAgICA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgNDExMzYsIAotICAgIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExMzczMSwgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCA2NDg1OSwgCi0gICAgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDY3Mjk1LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgMTI3MDksIDY5ODYsIAotICAgIDkyMzY0LCA2ODAxNSwgMTIwNTMzLCA0MTM0OSwgNzAwMjEsIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgNzM4MDYsIDEwMjU0LCAKLSAgICAxMTM2ODEsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAxMjA4NzAsIDYwNywgMCwgNjgxODIsIDEyODg0NiwgMTI5MjMsIAotICAgIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCA4MjY1LCAxMjkxNDksIDc4NjM5LCA0MDk3NSwgCi0gICAgNTg0MCwgNDI4MzgsIDc0OTg3LCA0MDk3OCwgMTIxMzg2LCA5Mjk0NSwgMTI4MDIwLCAxMTk4MDksIDAsIDY2NDQ0LCAKLSAgICAxMDUzOCwgMTIwODEwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDEyOTEzMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCA5ODM1ODIsIAotICAgIDAsIDU2MTksIDY1ODIyLCAxMTM3NTEsIDExMzczOCwgNzQ1NSwgNzE0MjQsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAKLSAgICAxMDcyNywgNTYxNSwgMTIwODczLCAxMjA1NTEsIDQyMzgwLCA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIAotICAgIDExMzQ3LCAwLCAxMDI2LCA1NjIwLCAxOTQ4ODcsIDAsIDExMzUwLCA1NjE3LCAwLCA5MjI1LCA2NDYzOSwgMTI3MDczLCAKLSAgICA5MTQ1LCAxMjgwNjAsIDEzMzgsIDEyMDU4MSwgOTgzMTU4LCAxMjczOSwgNDYwMywgMzA4NCwgNzA0MDgsIDkyNDg0LCAKLSAgICA5ODU4LCA2MDM3LCA5ODM0NjUsIDM5NzQsIDc4MjEzLCAxMDI5MCwgOTgzNzA0LCAzMDgzLCAxMDMyMiwgMTI5MDQ4LCAKLSAgICAxMjkwMzAsIDc1MDM4LCA0MTAzNiwgNjY4OTcsIDAsIDQzMzIxLCA2NTYwNiwgMTI3MDcxLCA0MTAzMiwgNDIzODgsIDAsIAotICAgIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIDExOTEwNSwgMCwgNDA5NjAsIDE5NDkwNywgNjc3MjcsIDEyNTEwNiwgCi0gICAgMjIyMywgNjQ5NTIsIDEwNDAyLCAxMjgzNTgsIDEyNTA0OSwgOTIzMDQsIDEwNjAzLCAwLCA5ODM0MDMsIDcxNDM4LCAwLCAKLSAgICA2NzE0LCAxMDA4MywgMTI3MDY5LCAxMjEwMTksIDc4MzY3LCA2OTk3NiwgMCwgNDM4NzIsIDkwNzMsIDQyNTg1LCA2NDMwMiwgCi0gICAgMTA3MDQsIDY1MDMwLCA0Nzg3LCAxMjkwMzEsIDc0ODI5LCAwLCA2NTQyMywgMTIxMzA2LCAxMjgxMTgsIDk1NzAsIDU1MjYwLCAKLSAgICA5NTI1LCAyNjg5LCA5MTc2MjYsIDY1NDI2LCAxOTQ4NzIsIDkxNzYyNCwgNDM3NDAsIDEyMTE2MywgNDA5NjYsIDEyMDAwOSwgCi0gICAgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3MTQzMywgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIAotICAgIDQxOTU0LCA5MTc2MTUsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgCi0gICAgNDMzMjAsIDExOTE1OSwgNzM5NTUsIDkyMzE1LCA2NDY4LCA0MTk3NiwgOTcyMCwgNzQ5NjQsIDExMTc5LCA0MTk3MCwgCi0gICAgNjYyNTUsIDU4MzYsIDEyMzU4LCAwLCA0MzU1LCA5MDQ4LCAxMjE4MCwgNjUwMjcsIDY0NjgwLCAxMzAzOCwgNDM2OTksIDAsIAotICAgIDQxNDg4LCAxMjgwODcsIDg1MjcsIDE5NDkxNywgMTIzNjIsIDEyNDM1LCAxMjM2MCwgNDEwNTMsIDMyNjYsIDAsIDEyMzU2LCAKLSAgICA4NjE2LCA0MTQ2NiwgNDI5MjQsIDIyMjcsIDExNDUwLCA5ODM2OTEsIDM2MzgsIDEyMzU0LCA2NzI5OSwgMzIxNiwgODMwOTksIAotICAgIDIzNTgsIDgzMDkyLCA4NjMzLCA3MTIwMSwgOTgzNzQ1LCAxMTkxODIsIDY5MjQ0LCA4MzA5MCwgNzAzNzUsIDExNzU5LCAKLSAgICAxOTQ5MDMsIDYzNjgsIDc0ODIzLCA2NzMwMywgNDE0MjMsIDgwNzgsIDEwNTA0LCA4MzEwNCwgNDE2OTgsIDQyMjM3LCAKLSAgICA5ODM0NTQsIDcwMDIsIDgzMTAxLCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgNzE0NjcsIDQxMDUwLCA0MTQ3MywgCisgICAgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDcwMzUyLCAxODg0LCA5NDgxLCA0MjQxOCwgNzAwNTksIDQxMTU3LCAxOTUwNTgsIAorICAgIDExOTUsIDY0ODk4LCA3OTI0LCAxMTk4NzAsIDQxMTUxLCAyMDEwLCA3MTQzMCwgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgCisgICAgMTIwNzEyLCA0MzYwLCAxMjEwMjMsIDk3MzksIDEyODU1MCwgNjk5MzMsIDczOTIxLCA5MTc2MzEsIDQyNTIxLCA4NTM5LCAKKyAgICAxMjg2MDYsIDAsIDExODk4NiwgMTI3MTQ4LCA0Nzg4LCAxMjEzNDUsIDY4MDIzLCA2NTczNCwgOTgzNDU3LCA0Mzc5MCwgCisgICAgMTE5ODY5LCAxMzA3NSwgNzQ0MjksIDk0MDYzLCA2NDU2OSwgNDM1MzIsIDEwODM3LCAyNDkyLCA3Mjc2MiwgMTE4OTAxLCAKKyAgICA2ODYzNywgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExMzczMSwgNTEyOCwgNDAzOCwgNDExNDMsIAorICAgIDY1NjA0LCA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDY3Mjk1LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgCisgICAgMTI3MDksIDY5ODYsIDY2NzYxLCA2ODAxNSwgMTIwNTMzLCA0MTM0OSwgNzAwMjEsIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgCisgICAgNzM4MDYsIDEwMjU0LCAxMTM2ODEsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAxMjA4NzAsIDYwNywgOTgzNjIxLCAKKyAgICA2ODE4MiwgMTI4ODQ2LCAxMjkyMywgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIAorICAgIDEyOTE0OSwgNzg2MzksIDQwOTc1LCA1ODQwLCA0MjgzOCwgNzQ5ODcsIDQwOTc4LCA3ODE3NCwgOTI5NDUsIDEyODAyMCwgCisgICAgMTE5ODA5LCAxMjA4OTEsIDY2NDQ0LCAxMDUzOCwgMTIwODEwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDEyOTA5MSwgOTE3ODE1LCAKKyAgICAzNTI1LCA2ODI0LCAxMTg4ODYsIDk4MzU4MiwgMTE5ODM4LCA1NjE5LCA2NTgyMiwgMTEzNzUxLCAxMTM3MzgsIDc0NTUsIAorICAgIDcxNDI0LCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgMTA3MjcsIDU2MTUsIDEyMDg3MywgMTIwNTUxLCA0MjM4MCwgCisgICAgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAxMTM0NywgNzI3NjAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgCisgICAgMTEzNTAsIDU2MTcsIDcyOTksIDkyMjUsIDY0NjM5LCAxMjcwNzMsIDkxNDUsIDQxMzQ0LCAxMzM4LCAxMjA1ODEsIAorICAgIDk4MzE1OCwgMTI3MzksIDQ2MDMsIDMwODQsIDcwNDA4LCA5MjQ4NCwgOTg1OCwgNjAzNywgMTAwMzc2LCAzOTc0LCA3ODIxMywgCisgICAgMTAyOTAsIDk4MzcwNCwgMzA4MywgMTAzMjIsIDEyOTA0OCwgMTI5MDMwLCA3NTAzOCwgNDEwMzYsIDY2ODk3LCAxMDAzNzQsIAorICAgIDQzMzIxLCA2NTYwNiwgMTI3MDcxLCA0MTAzMiwgNDIzODgsIDEwMDYxOSwgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgCisgICAgMTE5MTA1LCA5MTc5NjksIDQwOTYwLCAxOTQ5MDcsIDY3NzI3LCAxMjUxMDYsIDIyMjMsIDY0OTUyLCAxMDQwMiwgMTE5MjEzLCAKKyAgICAxMjUwNDksIDkyMzA0LCAxMDYwMywgMCwgOTgzNDAzLCA3MTQzOCwgMTI4NTAwLCA2NzE0LCAxMDA4MywgMTI3MDY5LCAKKyAgICAxMjEwMTksIDc4MzY3LCA2OTk3NiwgOTgzNjU1LCA0Mzg3MiwgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIAorICAgIDQ3ODcsIDEyMTI3OSwgNzQ4MjksIDAsIDY1NDIzLCA3NDk4OCwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgOTUyNSwgMjY4OSwgCisgICAgOTE3NjI2LCA2NTQyNiwgMTk0ODcyLCA2Njc0MCwgNDM3NDAsIDEyMTE2MywgNDA5NjYsIDEyMDAwOSwgMTMyODYsIDM5OTgsIAorICAgIDQyNTk4LCA0MjU5NiwgNTAzLCA3MTQzMywgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIDQxOTU0LCAKKyAgICA5MTc2MTUsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgNDMzMjAsIAorICAgIDcyNzU2LCA2Njc1NywgOTIzMTUsIDY0NjgsIDQxOTc2LCA5NzIwLCA3NDk2NCwgMTExNzksIDQxOTcwLCA2NjI1NSwgNTgzNiwgCisgICAgMTIzNTgsIDEyOTQyMSwgNDM1NSwgOTA0OCwgMTIxODAsIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCA0MTQ4OCwgCisgICAgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAxMjQzNSwgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgODYxNiwgCisgICAgNDE0NjYsIDQyOTI0LCAyMjI3LCAxMTQ1MCwgMTIwNzM0LCAzNjM4LCAxMjM1NCwgNjcyOTksIDMyMTYsIDgzMDk5LCAyMzU4LCAKKyAgICA4MzA5MiwgODYzMywgNzEyMDEsIDk4Mzc0NSwgMTE5MTgyLCA2OTI0NCwgODMwOTAsIDcwMzc1LCAxMTc1OSwgMTk0OTAzLCAKKyAgICA2MzY4LCA3MjgzNCwgNjczMDMsIDQxNDIzLCA4MDc4LCAxMDUwNCwgODMxMDQsIDQxNjk4LCA0MjIzNywgOTgzNDU0LCAKKyAgICA3MDAyLCA4MzEwMSwgNDE0MzAsIDQyMjY3LCA0MTA1MSwgNDE0ODQsIDEyOTM2MiwgNzE0NjcsIDQxMDUwLCA4ODcyLCAKICAgICAxMDQ2NiwgMTMwOTksIDcxNDQ1LCA3MDM3MSwgMTIwODk3LCA2NDM1LCA3NDMzMSwgMTEzNjIsIDEyODk3MywgODMwODgsIAogICAgIDY1MzgyLCA5Mjc3MCwgNDE0MjAsIDgzMDgzLCAzNjI1LCA3NDkxNSwgNDE0MDksIDcxNDQxLCA2OTYzOSwgMjA0MSwgOTE3OCwgCi0gICAgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgNzQ5MjQsIDAsIDEyODU1NywgNDE0MjQsIDkxNzU5OCwgMTIwNTQ2LCAwLCAKLSAgICAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAwLCAxMjEwMiwgMTE5NjYyLCA0MTQwMSwgMCwgMTI3NTM4LCAwLCA3ODI1MSwgCi0gICAgMTI0OTQzLCA0MjI5MCwgMzI3NSwgOTI0NzIsIDQyMzI5LCA2ODg1MCwgNzQ5MDEsIDAsIDEyNzk1MSwgOTIzODgsIDY5NjQ5LCAKLSAgICAxMDk4OSwgNzQyMzQsIDExMzc4MSwgMTA1OTgsIDc0MTAsIDI2NjksIDkwMywgMCwgMjkyMCwgMCwgMTI3MjMyLCA3NDYwMywgCi0gICAgNjQ1MDQsIDE5OTI4LCAwLCAxMjg0MTEsIDM5MTcsIDk4MzExOSwgMTE3MzIsIDAsIDk4MzE4MCwgNDE0NDgsIDQxNDYxLCAKLSAgICAxMjg4MjMsIDAsIDExMzcyMSwgMTEzNzU4LCA4ODE5LCAxMjY2MywgMCwgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAKLSAgICAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCA4MzI5MywgMTIxMDA3LCA5MDk0LCA5ODM5MjYsIDExNzU4LCA2ODQyNSwgNzE4ODYsIAotICAgIDEwNjQsIDQyNDY3LCAxMjgwNDQsIDEwMTE1LCAxOTkyNCwgOTI3MTEsIDExMzY4MiwgNzg2MiwgNjQ1NTEsIDEzMjI0LCAKLSAgICA4NTE2LCA0MTg2MiwgNjY2NTAsIDc1NjEsIDc4NjE4LCA2OTc5MywgMTg3OCwgMCwgNzE0MzQsIDI5MTEsIDgzMDc0LCAKLSAgICA0MTE3OCwgNTQyNywgNjQ4MjMsIDgzMDYyLCA4MzA2NiwgMzc4NywgNDExNzQsIDgzMDU1LCA0MTQ1OCwgNjcxNDcsIAotICAgIDQxNDYzLCA0MjQxMywgMTEyOTIsIDI0MDYsIDc3NSwgMCwgNjU1ODQsIDY5OTIzLCA2MDc0LCA5NjE4LCA2ODA1NiwgCi0gICAgMTIxNDgwLCA0MzQ0MCwgNzQ1MzksIDE5NDkwMSwgNDE0MzYsIDM2NTYsIDkxNzgwNSwgMTIwNjAwLCA0MTQ1NiwgNjc2OTQsIAotICAgIDE1OTksIDExMzMzLCA4MzEzOSwgNjcwMywgODUxMywgODMxMzQsIDE2MTMsIDgzMTM2LCA2ODQ1NiwgMTI1OTgsIDgzMTMxLCAKLSAgICA4MzEzMiwgNzg3NDUsIDc0NTAwLCA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNjcxNDQsIDk5MDUsIAotICAgIDgzMTQ1LCA2NTczMCwgODMxNDcsIDEyMDM3NCwgODQyNywgODMxNDIsIDU1MjQ2LCAxMjAzNzYsIDQyODk1LCAxMTQ5NywgCi0gICAgNjQ2ODcsIDc0MDA4LCA0MjU5MiwgMzg3MSwgOTgzNTg0LCAxMjgzMDUsIDkxMTEsIDU3NDEsIDgzMzI1LCAxMjA5ODcsIAotICAgIDEyMDM2NiwgMTE5MTExLCAxMTE1MCwgMCwgMTIwMzY4LCAxMjg4NTUsIDExNjQ4LCA4MzEyNiwgODMxMjcsIDgzMTI4LCAKLSAgICA0MTU4NywgNzAzOTEsIDgzMTIzLCA3MTEwOCwgNDIxMTMsIDk4MzU4OCwgMTI3MTU1LCAxMjE3MiwgODMxMjEsIDcxNDQzLCAKLSAgICA2NTI5OCwgNjU3MjMsIDY4Mjg5LCA3Mzg3MSwgNjU3MjQsIDc5MjgsIDEyMDM1NCwgOTgzMDk1LCA0MTU5NSwgNzM3MzAsIAotICAgIDY0NjcxLCA0MjExOCwgNzM4MzAsIDY2MDQyLCAxMDM1NSwgOTgzMTEwLCA3ODc1LCA5ODM2NjksIDQxNTk4LCAzOTkzLCAKLSAgICAxMjEyNjksIDE1NDUsIDQwOTcxLCA1MzYsIDEyNzA3NSwgNDMwMjksIDAsIDEyMTAwMCwgNjUxNzMsIDY1Mjg2LCAwLCAKLSAgICA3MDMzMSwgMTk1MDEyLCAwLCA5NDA2NSwgMCwgNDEzNzUsIDU0MDIsIDgzMDM1LCAxMjgxOTIsIDE2ODcsIDEyMDUwMywgCi0gICAgOTE3ODE3LCAwLCA3ODE5NCwgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzM3NDcsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgCi0gICAgNzg3NTYsIDEyNzEwOCwgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgOTE3ODY3LCAwLCA4MjY2LCAKLSAgICA0MTAwNiwgNjU3MjIsIDgzMDQxLCAxMDcxMCwgNzQwNDUsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDgzMzEzLCAKLSAgICAxMjg3NzgsIDcxODg5LCA2Nzg1NywgMTIwNjg3LCAwLCA5Mjk1OCwgMTE3NTUsIDY2MzA1LCA2ODMzMiwgMCwgMTA5MTcsIAotICAgIDkzOTc5LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCA4MzExOSwgCi0gICAgODMxMjAsIDExNDEzLCAxMjY1ODMsIDgzMTE1LCA1MjgzLCAxNTg2LCA0OTc4LCA2ODA1MCwgMTk4NCwgMTE4MzAsIDQzODE5LCAKLSAgICA5MjI5MywgNDA5ODQsIDQyOTA0LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMTk0ODg4LCA0MTY2MywgOTgzMDkzLCAwLCAKLSAgICA2ODMxMywgOTIzNywgOTM4NSwgNDE2NDgsIDAsIDEyODk1MywgMjI5OSwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCAKLSAgICA0MTI4NywgOTI2MTAsIDAsIDcxOTE3LCA0MjIxOSwgNjgwODYsIDEyMDMyNywgNDE5ODcsIDQxNjc2LCA5ODMwNTksIAotICAgIDEyMDgyMywgMTI2NTUzLCA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDY3OTg4LCAKLSAgICAxMTQ1MSwgODI5OTUsIDc4ODU1LCA0MjYzMSwgMjM1OSwgNzE4OTAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIAotICAgIDEzMTMzLCA2NDM2OCwgMTI3MjcwLCAxMjA5MjUsIDY2MjcyLCAzOTcsIDQzNjIyLCA0MjEzOSwgOTU0NywgOTU5MCwgCi0gICAgMTI4MjM4LCAxNjE0LCA0MzY2MSwgNjQzNTYsIDY2MzA3LCA2NjUxLCAxMzU4LCAxMjA4NzEsIDQyOCwgOTYyMCwgMTQ2NiwgCi0gICAgNzgxMTIsIDEwOTgyLCAxMTM3ODUsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMTI3OTkzLCAwLCAwLCAKLSAgICA1ODA0LCAxMTk3NiwgODU1NCwgOTI3MjEsIDAsIDcwMTY3LCA5MDU3LCA0MjI5NCwgNDEyMTgsIDEyNTA5NywgMTIxMjkwLCAKLSAgICA3ODEzNywgMTg4MywgMTA5NTIsIDgwNDgsIDcwNDQzLCA0MTIyNSwgOTI2MjEsIDQyOTE1LCAxMjg2MTYsIDEyODUxMiwgCi0gICAgMTI4NjI5LCA0NDA3LCA3NDY0OCwgNjU4MDksIDExODM3LCAxOTQ4MjEsIDg0NDgsIDcxNDEsIDc0MTgzLCAxMjAzMzQsIAotICAgIDEyNjc1LCAxMjY1OSwgNzQ2MzQsIDQyMzYzLCAxMjA2MjQsIDY4MDc3LCA1NTI3MywgMTA3NjYsIDEyMDEyLCAyMzg2LCAKLSAgICA2NDczMiwgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgMTAyOTYsIDExOTE1OCwgNzE0MCwgMTA5NzcsIDEyNzM3OCwgCi0gICAgNDE2NCwgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIDg3MDksIDEyODI4MywgMTI2NDc3LCAxMjA2MzcsIDQyNDE5LCAKLSAgICA2NDc5OSwgNDIwNDcsIDAsIDE5NDgyMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIDk4Mzc2MCwgNzQzMDAsIDAsIAotICAgIDY4MDg3LCA3NDg0MCwgMTI2NDc0LCAwLCAxMjg3OTEsIDkyMjI0LCA4NzM2LCAxNDE0LCA0MjY0MywgOTY4MywgNDM0ODYsIAotICAgIDc0MzQ0LCAwLCAyNTM2LCA5ODM5NDEsIDY2MzMwLCAxMjEyMzgsIDAsIDAsIDAsIDAsIDAsIDE5NDgzMCwgNjYzMTcsIAotICAgIDY5OTQ1LCA2NjMxNSwgMjEwNiwgNjc4MDksIDExMjczLCAxMjA5ODYsIDQzMDA0LCA3NTQxLCA4Mjk4OCwgMCwgOTYxLCAKLSAgICA2NDMwNywgNjYzMjQsIDY0OTA2LCAxMjUwODAsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgOTgzMTMwLCA4OTEsIAotICAgIDEyMTA1LCAwLCA0MjYyNCwgMTI4MDIsIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgMTA5MzYsIDEyMDg3OCwgMCwgMCwgCi0gICAgMTk0ODI2LCA5MjY4OCwgMzU2NiwgMjMyMiwgMTIwMzcxLCA3MDgzMSwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAKLSAgICAzNTQ3LCAwLCAwLCAxMTM3NDYsIDk4MzQwMCwgNDMyMTYsIDYwODksIDc4NjgyLCA2ODQ5MCwgMTIwNTc4LCA0MTcwLCAKLSAgICAxMDI5LCAxMjc3NjEsIDEyNzAzNiwgMTE5MjI0LCA0MjM3NCwgMCwgNzQ0LCA5Mjg4MywgMTEzNzM5LCAwLCA2NTgyMywgCi0gICAgMTI3ODI2LCAxMTE4MiwgMzU1MSwgOTI5MzgsIDk4Mzg5MSwgNDYyMywgNTUyNjgsIDEyODczOCwgNDU5OCwgOTgzMTYyLCAKLSAgICA2NTEzNiwgMTI3MTM2LCAwLCAxMjgxNjksIDEwODUxLCAxMjA4NzYsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgCi0gICAgNzQ1NzksIDc4NjQ4LCAxMTk3MiwgNzg2NDYsIDc4NjQ3LCA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIAotICAgIDEyMDU4MCwgOTgzNjk2LCAxMjUxMzUsIDYxNzcsIDkwMjAsIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIAotICAgIDEyODAyNywgNjc2NzMsIDIyMTQsIDg3NTQsIDEyNzA1MSwgMTIwMjM3LCAyMTM3LCA0MzA4MSwgMTk0NjYzLCAxMTkxMTQsIAotICAgIDkxMzYsIDY2ODg5LCA0NDAxLCA0MTI4MCwgNzA4MDEsIDg5NzQsIDIzMDgsIDE5NDc1MCwgNzQxNDksIDEyODMyNywgMjMxOCwgCi0gICAgOTgzMTgzLCA2NjM2MSwgODE5OCwgNjU2MjYsIDY0MzYwLCAxMjYwMSwgNDI1MzYsIDQzOTMxLCAxMjA4MjcsIDQzOTMwLCAKLSAgICA5MjQ2MiwgNjk3MCwgNTQwNCwgNDMzMzIsIDM2NjcsIDc5MzYsIDEyOTI1LCAxMjY5ODksIDYzODUsIDEyODQ4MiwgCi0gICAgMTI4NDAzLCAxMTg5NDksIDEwODc0LCA2NTUwNSwgMTIwMDAyLCAxMjkxNTEsIDQyMDUzLCAyMDc1LCA0MjA1NywgMTEwODMsIAotICAgIDQyMDUyLCAwLCA2NzI2NiwgNjc2NTEsIDEyMTEwNCwgOTY2NSwgOTIzMDAsIDk4MzY2NiwgMTMxODEsIDkxNzYxNywgMCwgMCwgCi0gICAgNzAwODgsIDc0MTQ4LCAwLCA3MDQxOSwgMTIwMjI1LCAxMjAyMjksIDEyMDIyNCwgNzQxNzIsIDQxMTQ1LCA2NjQwNCwgCi0gICAgOTQwOTYsIDc0NDIyLCA0MTE0OCwgODY4MywgNzU5NCwgMTEzNjg2LCA3NTAzMywgMTE5MDkwLCAxMDg2OSwgNDM0NTgsIAotICAgIDQxMTQ2LCA5MjQwNywgMTE0NDEsIDEyMTQ1NiwgMzUxMiwgMTE5NjMzLCA5Mjk2NSwgODEwMywgNzgxNDAsIDEyMDg0NywgCi0gICAgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIDEyOTA1NSwgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgNzEzMTQsIDAsIDc4MTA5LCAKLSAgICAxMjkxNzcsIDE5OTQyLCA5ODMyNDQsIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAzMjcxLCA3MzgwNCwgNjQ3MTEsIDAsIAotICAgIDk0MDY0LCA5ODMwNzEsIDEyODY1MiwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgMCwgMzU5OSwgCi0gICAgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCA2NjY5NywgMCwgMTE2ODQsIDAsIDkyNDg2LCAKLSAgICA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDc0OTI3LCA0MjA0NiwgNzQxNTcsIDQwMzYsIDEyNjQ4MSwgMCwgCi0gICAgMTI4MjEzLCAxOTQ4NjEsIDgzMzU1LCAxMTk1NCwgNzAzNDgsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgOTI3MjIsIAotICAgIDAsIDAsIDEyNTExNywgMCwgOTE3NTQyLCA3MzgxMiwgODMwNTMsIDY1MzksIDkyOTQ4LCAxMjY2MDcsIDEyMDcwMiwgCi0gICAgOTIzOTAsIDAsIDEyMDQ5MiwgNDExOTAsIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIDQyOSwgOTE3OTc5LCAKLSAgICA3ODg5MSwgMCwgMTk0ODQ4LCA2NTc5MiwgMTI4NDA4LCA4MzI4MiwgNjQxNywgMTE4OTE4LCA3ODE3OCwgMCwgMTI4OTcwLCAKLSAgICAwLCAwLCA0OTE5LCAxMDU5MCwgMTI4NTU2LCA3NzU1LCAwLCA5Mjk0MiwgNjQ1NDgsIDEyMDUwNiwgMTYyMSwgMTAyMTQsIAotICAgIDY1MTI2LCA2ODI1MywgMTI3MDA0LCA5ODM2MTYsIDEyMTg4LCA5ODM2NjgsIDE2MTcsIDgwNTAsIDAsIDUwMTUsIDAsIAotICAgIDExOTE3NCwgNDI1OTAsIDcwMzU0LCAxNzU2LCA3ODE4MSwgMCwgNjU3NjgsIDYzNTIsIDQxODkyLCAwLCA3NTU1LCAxMzEwMywgCi0gICAgNTQwOCwgMjgxNywgMTIxNCwgNjk5MTksIDkyMzM1LCAxMjEyMDgsIDAsIDY4MjI0LCAxMjA4NzIsIDQxNzY0LCA3OTU3LCAKLSAgICA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAzNTU5LCA5ODM5MTgsIDU1Mjg2LCA3MDczLCA2NTg1MCwgMTIzMjcsIAotICAgIDcwODUzLCAxMTkwMjgsIDAsIDEyODEyMiwgMTI4NDQyLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAxOTQ4ODQsIDY4MzIyLCAKLSAgICA3MDA3OSwgODQ2MSwgNjc3MjEsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgCi0gICAgNDM4NDcsIDAsIDY4MSwgOTgzMjU0LCA3MDMsIDEyNzUxOCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCi0gICAgOTIyODgsIDcwNTE0LCA5ODM5MDAsIDgzMTc1LCA3MTQzNiwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMTI4OTY4LCA5MTc5ODksIAotICAgIDY1OTI4LCAwLCAxMjEzNjcsIDY1MDIxLCA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIAotICAgIDQyNzExLCAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIDk4OTUsIDE2NTUsIDcwMTMxLCA3NDU5MSwgNzg4MTUsIDc4ODE2LCAKLSAgICA2Njg4OCwgMCwgMCwgNzA1MTMsIDEwMDM5LCAxMjA0MjYsIDU2MjYsIDU2MjMsIDU3MTcsIDU3NzYsIDQzNDg4LCA4MzQ5NywgCi0gICAgNjY4ODUsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAxMjAxMTEsIDY3ODQ4LCAxMjgxMjgsIDk4MzU5NSwgCi0gICAgOTgzNDcyLCA4ODg3LCAxMjc1MjEsIDcyOTUsIDExMDMxLCA5ODMzMzYsIDQzMTU3LCAwLCA4OTQ2LCAxMDM0OCwgMTA0MTIsIAotICAgIDg3NTUsIDExOTE1MiwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCA3MDUxNSwgOTE3NjE2LCA4ODEwLCA3NDQ5OSwgCi0gICAgNjg2LCAwLCA3MTM2MiwgNDYxOSwgMTE4OTU0LCA2NjU0LCA3Mzc2OSwgNzQ0MjYsIDAsIDEyMDQwLCA2NTY4OSwgMTAxMjgsIAotICAgIDY1MTE4LCA2ODAyOSwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDEyODkwMiwgMjQwMSwgNjgxNDQsIDg3OTIsIDk4MzY0OCwgCi0gICAgNjgwNDQsIDY1NDU1LCAwLCA3NDMyOCwgMCwgNzQ1NjEsIDEyMDc2MywgMTI4ODYsIDEyMDk1MiwgNjY2MjQsIDEyNjU3OCwgCi0gICAgNDM1NTcsIDEwMzAwLCAxMDE2MSwgMTAzOTYsIDcxMjEwLCA3ODYwMiwgMTE4OTQ1LCA5OTg0LCA3Mzg1MSwgMzAxMCwgCi0gICAgNjQ0MSwgNzAzNDksIDE0NTgsIDQxNDc1LCA3MjQyOSwgOTM5NzUsIDEyNzkxMCwgMTE0NzksIDEyMTM1NSwgMTIwMzU2LCAKLSAgICA2MzUwLCAxMjg2NCwgNjk2NzQsIDcxNDczLCAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAxMjQ5NDYsIDQwNTIsIAotICAgIDExMzY3MywgNzYyNiwgMCwgMTIwOTA3LCAxMDQ1LCAwLCA1NjMxLCA0MTExMywgMTI3NTQ0LCAwLCA0MzcwNywgNzQxMjcsIAotICAgIDAsIDk4MzcxOCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIDk4MzE5NSwgMTI2NTYxLCA2OTIyMSwgMTAyNSwgCi0gICAgMTI3Mjc3LCA0MjYyNSwgNzAzMjUsIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAwLCAxNzc0LCAxNTIzLCAxMjEzMzAsIAotICAgIDY4MDU5LCA0MTQ0NSwgNzgyMzYsIDExMjA3LCA4NTY3LCA0MTQ0MiwgMzk4OCwgNzQ4NDMsIDc4MjM3LCAxMTg5MTAsIDAsIAotICAgIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgMTIxMjcyLCAwLCA0MzQ0NiwgMCwgNjY1MTMsIDYyNTYsIAotICAgIDkxNzgwNywgNTc5LCA1NTIxOCwgMTAyMDYsIDc4MTk1LCA2Mzc1LCAyNjczLCA5ODM4ODYsIDExODE0LCAwLCA0NDg4LCAKLSAgICAxMjg3MTYsIDEyMDU1NCwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgCi0gICAgMTI3ODQ5LCA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDEyNDk5OCwgNjE0LCA3MDM2MSwgCi0gICAgMTI3MjE1LCAxMjA2MTUsIDExOTYyMiwgNzgyNjIsIDEyNzI3MSwgMTI3MzIzLCAwLCA0MzEyMSwgMTI3MjExLCAxMjgzNjYsIAotICAgIDkyNTEzLCAxMDUwLCA3NTQ5LCAxMjEyNjAsIDgyOTk0LCA5MzE0LCA3MDM2NSwgOTI4OTgsIDY4MDM5LCAxMjcwNjEsIAotICAgIDEwMDU3LCA3MDQzNCwgMTI3MzEzLCAxMjg1NzcsIDY2NTA0LCAxMjA5NjMsIDgyOTkyLCAyMzA3LCAxMjg0NTYsIDY0MzMzLCAKLSAgICAxMjczMTIsIDEyODIzMCwgNzM4NzMsIDk4MzcxMCwgOTQwMzUsIDAsIDEyNzk3MywgMTI4NzA4LCA3MDQ0NiwgMTAzNjAsIAotICAgIDY3NDYsIDEyMDQ3MywgOTIyNDUsIDQ0MCwgMCwgMTMwODUsIDkyMzMsIDc0MjE2LCAwLCAxMjc3ODUsIDk5NTcsIDEyODI4NSwgCi0gICAgNjY0NDcsIDgwNDYsIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDEyMDQyNCwgMTUyMSwgCi0gICAgOTg5NiwgOTM5NjUsIDEwNDg3LCA2OTg3OCwgMTI1MjcsIDY4NzM3LCA3OTcwLCAxMjUwNzMsIDEyODY2MCwgMCwgNjU3NjksIAotICAgIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAxMjE0MjksIDAsIDUyMzcsIDY5NzE0LCA2ODc1NiwgMTAxMDMsIDUyNDcsIAotICAgIDQ3NjksIDEyOTMwMiwgMTE4OTc3LCAxMjg3MywgMjI4MywgOTI5MzEsIDAsIDMwMDgsIDQ4OTYsIDEyODEwMiwgMTIwODcsIAotICAgIDAsIDU1MjMxLCA0MTEwMywgOTIyNTYsIDY0NTY1LCA0NzczLCAxMjA4NDYsIDc4NTQ5LCA3MDA3NCwgNDc3MCwgNjY4OTEsIAotICAgIDkxNzU2NywgODczMSwgNjUzNzgsIDY2OTExLCAxMjA2MTksIDkxMjIsIDEyODAzMywgMTI2NjAwLCA0Nzc0LCAzMDE5LCAKLSAgICA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgNzg1NTYsIDAsIDEyMTMzMiwgNzQ3NzYsIDQyODEsIAotICAgIDQ3NjgsIDEyMDU3MiwgNDE1MzUsIDQwOTksIDkwMTcsIDY5OTkzLCA5ODM2OTIsIDc4MDk1LCAyMjI1LCA3ODA5NiwgCi0gICAgMTE4OTQ2LCAxMjEwOTcsIDAsIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAxMTM3NjQsIDY2ODcwLCAyMTM0LCAwLCAKLSAgICAxMDExNiwgOTg3NywgOTIzMjksIDEyODk2MCwgMCwgNzA5NSwgODM3OSwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAKLSAgICAyNDI3LCAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAxOTUwMDMsIDk5NjIsIDgyOTkwLCAxMjIyMywgMTI4NDg1LCA5MjQzMCwgCi0gICAgMTQzNCwgMTIwMjU0LCA1NjM3LCAxMTU3MywgMCwgMCwgMCwgMTk5NTEsIDgzMzg5LCA3NDQxOSwgMCwgMTk0Njg2LCAKLSAgICA1NTI4MywgMCwgNzAzNjMsIDc0NDM3LCAxMTU2LCA4NzQwLCA4MzI5NSwgMzc4MiwgNjQzMzEsIDAsIDQxMzcwLCAxMDE0LCAKLSAgICA4MjYxLCAxMjA5NTYsIDkxNzU5NiwgMTA4MzUsIDkxNzk2NiwgNjU1MzYsIDgzMjk0LCAxMjA0NjMsIDEyNTA1MSwgNzcwMiwgCi0gICAgMTE4ODI0LCAxMjg5NzYsIDQzMDEwLCA2NTc3OSwgNjU3ODMsIDExNTAsIDEwNTQ3LCA1NzAwLCAwLCAxMjA2MDMsIDY1MzgzLCAKLSAgICAyMzM5LCA0MjU5NCwgNTY5NywgMTE4Nzg4LCA3NTAxOCwgMTI4NTc2LCA3NDkyMywgNDIyNTcsIDU2OTYsIDkyNjc3LCAKLSAgICAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDcwMTgzLCA3NjM0LCA2NTE2NywgOTg0NSwgMCwgMCwgNTcwMSwgOTcyMiwgNDE0OTAsIAotICAgIDEyODcxOSwgMTQyNiwgNjgyMTcsIDk4MzYxNCwgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgNjc0MDMsIDc4MDY3LCAKLSAgICA0Mzg1OSwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIAotICAgIDY0NzEyLCAxMDc0NCwgNzg4ODcsIDk5MCwgNTY0NywgMCwgNzM4NywgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgCi0gICAgMTI4NzksIDExMDE4LCAxMjgzNjIsIDM5NDUsIDkyNTg5LCA5ODM0NjYsIDE5NDk4OSwgNzg4ODMsIDAsIDc4MjEyLCAKLSAgICAxMjc3NDYsIDEwMjAsIDczNzYzLCA5ODM4MzUsIDc4NzMxLCA1NjQ4LCA2NDc0OCwgMTIwOTIwLCA3ODczMywgMTAyMDUsIAotICAgIDM1NDUsIDk4MzU4NSwgNjk4NCwgMTI4MDA4LCA3NDA1MSwgMTI4OTAxLCA0MzI0MiwgMTIwNDU4LCAyNjY3LCAxMjgxNzMsIAotICAgIDEyNTAzNywgMCwgOTkxMSwgMCwgNjUwMjAsIDEwMDk3LCAxMTkxNjYsIDEyNzE0NSwgOTgzNjYyLCAxMTg4MzYsIDk4Mzc0OCwgCi0gICAgNzgyMDgsIDExNDAsIDc4NDI2LCAwLCAxMDE1OSwgMCwgMCwgODEyOCwgMTI4NjQ0LCA2ODMyNiwgMTk0OTExLCAxODE1LCAKLSAgICAxOTkxMCwgODkwLCAxMjQ5MzUsIDMyNjcsIDkyMjkxLCAwLCAxMDEyMywgMTIxMzk4LCA0NDEwLCAxMDQxLCAxMDU3NiwgCi0gICAgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDk4Mzc0NiwgMTI4MzQ3LCAwLCAwLCAxMjgwOTgsIDE5OTM4LCA2NTkwNiwgCi0gICAgMTI3ODE5LCA5MTc4MTEsIDAsIDMyOTgsIDUzNzUsIDEwMTQyLCAwLCA4MjE1LCA5MjYzMywgNjEzNCwgNDEyNDYsIDY0NDAyLCAKLSAgICA5ODMxNDcsIDY5ODk5LCAxOTQ5MzgsIDAsIDEyMTQyNiwgNDEzODIsIDkxNzkyNywgMTI4NjUzLCA1MTczLCA2NTM0OCwgCi0gICAgNTI3LCAxMjExNzQsIDExMzc4MiwgNzg0NjksIDEyODI1MCwgNzg3OTcsIDExOTE1LCAwLCAwLCAxMDA3MiwgMCwgNDI2OTUsIAotICAgIDIzMjksIDQyMjUwLCAwLCAxMTE4NywgNjk2NjcsIDEyMjQ1LCAxNTY4LCA5NDAzMywgODM0NjAsIDAsIDExMzcwNSwgCi0gICAgOTE3OTEwLCAxMTIwMSwgOTI3MDgsIDc0NzY5LCAxMjY0NzAsIDY3NjgwLCA5MDY5LCA2MTQ0LCAwLCAxMTk4NDAsIDczODIyLCAKLSAgICAwLCAxMjgwMTAsIDY0OTE3LCA0MTUyMSwgMTE4OTM0LCA0OTQsIDEzMjUwLCA5MjI1MCwgNjUwOTgsIDYzNjQsIDk1NiwgCi0gICAgMTEzNzkyLCAxMjgzMCwgMTA0NjIsIDczNzQwLCA3MzczNCwgMCwgMCwgOTgzNzM5LCA2NjQ0OSwgMTMyNjMsIDc0MjgxLCAKLSAgICA2OTIxNywgMTMxNzEsIDEyNzc5NiwgMTIwNTY0LCAwLCA2Mzg4NSwgMTI3MjUxLCAxMDQ0LCA0MTI3NiwgMTI4MzYzLCAwLCAKLSAgICAwLCA0MjA2OCwgMTE3OTUsIDEyNDk4NSwgMCwgMTI3MjAyLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIDExODI5LCAKLSAgICA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCA3MDMyOSwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCAxMjA3NjEsIDcwOTgsIAotICAgIDEyNTA3MSwgMCwgMTA1NywgNTY2LCA0MjY5NiwgMTI3MjM5LCAzMDE2LCA0MjI3NCwgNDM0NjQsIDY2NDkwLCAxMjkyMSwgCi0gICAgNjY1NzEsIDc4NDcyLCA3MTIwNywgMzAwNiwgNDYyMCwgMTI3MjM3LCA5ODMzMzAsIDAsIDAsIDY0NjU5LCAwLCAxMjc3NDksIAotICAgIDU1MjUzLCA2MzU3LCA2MzYyLCA4NjI2LCA3MTMzNywgMjIxNiwgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgCi0gICAgMCwgNjQ0NzcsIDkxNzg1MywgNDM4MTMsIDEwNTMsIDAsIDc4MjY5LCAwLCA5Mjk3NywgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCAKLSAgICA3NDM0OSwgNjY0NzksIDY3Njg5LCA2Njg3MSwgOTE3ODQ1LCA3MDMyNywgNDI0OTAsIDY4OSwgNjUwOCwgNDE2MywgNDIyOTgsIAotICAgIDg2MzksIDY2NjQxLCA0MjQ2LCAwLCA0MzUxNCwgMTIxMzAsIDk4MzMwOCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgNjY0ODEsIAotICAgIDEyNzg1MCwgOTgzMTQ0LCAxMjc4MjgsIDYzNTksIDAsIDQzNDcxLCA5ODM3NjgsIDAsIDgzMzQ1LCA3NTA2NSwgMCwgNjM1OCwgCi0gICAgNjM2MSwgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgNTgzMCwgMTI3NzczLCAKLSAgICA0MzY4NSwgNzQzMDcsIDAsIDQyOTEwLCA4MzMwMSwgODY5MywgNzg2MTEsIDExOTU2NSwgMTI4NjIxLCAxMjA0MTMsIAotICAgIDkyMTkyLCAxMjE0NTQsIDY1ODk0LCAxOTQ2OTQsIDAsIDY0Mjk2LCA5ODM2ODEsIDk4MzY0NCwgMTk0OTU5LCAxMTkxODcsIAotICAgIDIxMzUsIDExODM2LCAwLCAwLCA3ODg2OSwgNDIzMTMsIDU1NzksIDkyNDEyLCA3MDM4NCwgMTI5MTEzLCA0Mzg1NCwgCi0gICAgNzE5MTMsIDU1NzgsIDExODQwLCAxMjgxMTUsIDQyMDIzLCA2MjM0LCA1NjY5LCA5MjI3NSwgNzg2MjAsIDEyMTE3MSwgCi0gICAgNjg4MzMsIDkyMjU0LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIAotICAgIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCA2NTUxMiwgNjg3NzQsIDY1NzAyLCA2ODc3MCwgMTIwODAxLCA2NTI1MSwgCi0gICAgNjgyMjgsIDY1NzEwLCAxMjgzOTksIDEyODQyOSwgNjc2NzIsIDY4NzgzLCA1MzcwLCA3MDQ2NSwgMjkzMSwgMTYzOCwgCi0gICAgMTA5NjYsIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgNjk4NzksIDc0NTg1LCA4MTcyLCA0MjAxNywgOTI3NTYsIAotICAgIDEwODQ0LCAxMjEwMTYsIDEyODE5NSwgOTI0MjQsIDYzNzQsIDExOTk5OCwgMTIxMDc1LCAyODYsIDc4MDIzLCAxMDYyLCAwLCAKLSAgICAxMTk5OTksIDAsIDczOTUsIDEyNzc4MywgMTA3MCwgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAxOTQ2NDAsIDMwMTUsIAorICAgIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDc0OTI0LCA5MTc3NzcsIDEyODU1NywgNDE0MjQsIDExOTU2MywgMTIwNTQ2LCAKKyAgICA5ODM4ODgsIDEyODIxMiwgMCwgNDE0MTcsIDEyNjEsIDAsIDEyODI2MSwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDEyODkzMiwgCisgICAgMTI3NTM4LCAxMTM3NjcsIDc4MjUxLCAxMjQ5NDMsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDY4ODUwLCA3NDkwMSwgCisgICAgMTIxMDA1LCAxMjc5NTEsIDkyMzg4LCA2OTY0OSwgMTA5ODksIDc0MjM0LCAxMTM3ODEsIDEwNTk4LCA3NDEwLCAyNjY5LCAKKyAgICA5MDMsIDE5NTA5MSwgMjkyMCwgMCwgMTI3MjMyLCA3NDYwMywgNjQ1MDQsIDE5OTI4LCAwLCAxMjg0MTEsIDM5MTcsIAorICAgIDc4MTg1LCAxMTczMiwgMTI4NTEyLCA3Mjc5NywgNDE0NDgsIDQxNDYxLCAxMjg4MjMsIDAsIDExMzcyMSwgMTEzNzU4LCAKKyAgICA4ODE5LCAxMjY2MywgMCwgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCA4MzI5MywgCisgICAgMTIxMDA3LCA5MDk0LCA5MTc3OTQsIDExNzU4LCA2ODQyNSwgNzE4ODYsIDEwNjQsIDQyNDY3LCAxMjgwNDQsIDEwMTE1LCAKKyAgICAxOTkyNCwgOTI3MTEsIDExMzY4MiwgNzg2MiwgNjQ1NTEsIDEzMjI0LCA4NTE2LCA0MTg2MiwgNjY2NTAsIDc1NjEsIAorICAgIDc4NjE4LCA2OTc5MywgMTg3OCwgMTI4NjQxLCA3MTQzNCwgMjkxMSwgNzI3NTgsIDQxMTc4LCA1NDI3LCA2NDgyMywgCisgICAgNzg2MTUsIDgzMDY2LCAzNzg3LCA0MTE3NCwgODMwNTUsIDQxNDU4LCA2NzE0NywgNDE0NjMsIDQyNDEzLCAxMTI5MiwgCisgICAgMjQwNiwgNzc1LCAwLCA2NTU4NCwgNjk5MjMsIDYwNzQsIDk2MTgsIDY4MDU2LCAxMjE0ODAsIDQzNDQwLCA3NDUzOSwgCisgICAgMTk0OTAxLCA0MTQzNiwgMzY1NiwgOTE3ODA1LCAxMjA2MDAsIDQxNDU2LCA2NzY5NCwgMTU5OSwgMTEzMzMsIDgzMTM5LCAKKyAgICA2NzAzLCA4NTEzLCA4MzEzNCwgMTYxMywgODMxMzYsIDY4NDU2LCAxMjU5OCwgODMxMzEsIDgzMTMyLCA3ODc0NSwgNzQ1MDAsIAorICAgIDQxNDYwLCAxMDE0NSwgMTA1NDIsIDk5MzcsIDc4NzQ2LCA2NzE0NCwgOTkwNSwgODMxNDUsIDY1NzMwLCA4MzE0NywgCisgICAgMTIwMzc0LCA4NDI3LCA4MzE0MiwgNTUyNDYsIDEyMDM3NiwgNDI4OTUsIDExNDk3LCA2NDY4NywgNzQwMDgsIDQyNTkyLCAKKyAgICAzODcxLCA5ODM1ODQsIDEyODMwNSwgOTExMSwgNTc0MSwgODMzMjUsIDEyMDk4NywgMTIwMzY2LCAxMTkxMTEsIDExMTUwLCAKKyAgICAxOTQ4NzYsIDEyMDM2OCwgMTI4ODU1LCAxMTY0OCwgODMxMjYsIDgzMTI3LCA4MzEyOCwgNDE1ODcsIDcwMzkxLCA4MzEyMywgCisgICAgNzExMDgsIDQyMTEzLCA5MTc5NTYsIDEyNzE1NSwgMTIxNzIsIDgzMTIxLCA3MTQ0MywgNjUyOTgsIDY1NzIzLCA2ODI4OSwgCisgICAgNzM4NzEsIDY1NzI0LCA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCA2NDY3MSwgNDIxMTgsIDczODMwLCAKKyAgICA2NjA0MiwgMTAzNTUsIDEyMTUwMSwgNzg3NSwgMTAwMzkwLCA0MTU5OCwgMzk5MywgMTIxMjY5LCAxNTQ1LCA0MDk3MSwgCisgICAgNTM2LCA3Mjg3NCwgNDMwMjksIDAsIDEyMTAwMCwgNjUxNzMsIDY1Mjg2LCAxMjEyNTQsIDcwMzMxLCAxOTUwMTIsIDAsIAorICAgIDk0MDY1LCAwLCA0MTM3NSwgNTQwMiwgODMwMzUsIDEyODE5MiwgMTY4NywgMTIwNTAzLCAxMjg1NTksIDAsIDc4MTk0LCAKKyAgICA2NDMyNiwgNDA5NjksIDEwNTI2LCA3Mzc0NywgODMyMywgNDA5NjgsIDEzMzksIDExNzMxLCA3ODc1NiwgMTI3MTA4LCAKKyAgICA2NTQ2MCwgMTIyNDIsIDEyODUxMywgODAyMCwgMTA4NDMsIDExNTU0LCA5MTc4NjcsIDAsIDgyNjYsIDQxMDA2LCA2NTcyMiwgCisgICAgODMwNDEsIDEwNzEwLCA3NDA0NSwgMTE4OTQyLCA2NzY2NywgNjQ1NjcsIDExOTE1NSwgODMzMTMsIDcwNzI5LCA3MTg4OSwgCisgICAgNjc4NTcsIDEwMDU4MiwgMCwgOTI0MTgsIDExNzU1LCA2NjMwNSwgNjgzMzIsIDAsIDEwOTE3LCA5Mzk3OSwgMCwgMTEyNzIsIAorICAgIDIwNDAsIDQxMjQ3LCA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgODMxMTksIDgzMTIwLCAxMTQxMywgCisgICAgMTI2NTgzLCA4MzExNSwgNTI4MywgMTU4NiwgNDk3OCwgNjgwNTAsIDE5ODQsIDExODMwLCA0MzgxOSwgOTIyOTMsIDQwOTg0LCAKKyAgICA0MjkwNCwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDE5NDg4OCwgNDE2NjMsIDEyNzg5NSwgOTgzMDQ1LCA2ODMxMywgOTIzNywgCisgICAgOTM4NSwgNDE2NDgsIDAsIDEyODk1MywgMjI5OSwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCA0MTI4NywgOTI2MTAsIAorICAgIDk4MzI5OSwgNzE5MTcsIDQyMjE5LCA2ODA4NiwgMTIwMzI3LCA0MTk4NywgNDE2NzYsIDEyNTIxOSwgNzI4NDAsIDEyNjU1MywgCisgICAgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgMTE0NTEsIDgyOTk1LCAKKyAgICA3ODg1NSwgNDI2MzEsIDIzNTksIDcxODkwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAxMzEzMywgNjQzNjgsIAorICAgIDEyNzI3MCwgMTIwOTI1LCA2NjI3MiwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIDEyODIzOCwgMTYxNCwgCisgICAgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMTIwODcxLCA0MjgsIDk2MjAsIDE0NjYsIDc4MTEyLCAxMDk4MiwgCisgICAgMTEzNzg1LCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDEyNzk5MywgMCwgOTgzMTUxLCA1ODA0LCAKKyAgICAxMTk3NiwgODU1NCwgOTI3MjEsIDAsIDcwMTY3LCA5MDU3LCA0MjI5NCwgNDEyMTgsIDEyNTA5NywgMTIxMjkwLCA3ODEzNywgCisgICAgMTg4MywgMTA5NTIsIDgwNDgsIDcwNDQzLCA0MTIyNSwgOTI2MjEsIDQyOTE1LCAxMjg2MTYsIDEyODMxOSwgMTI4NjI5LCAKKyAgICA0NDA3LCA3NDY0OCwgNjU4MDksIDExODM3LCAxOTQ4MjEsIDg0NDgsIDcxNDEsIDc0MTgzLCAxMjAzMzQsIDEyNjc1LCAKKyAgICAxMjY1OSwgNzQ2MzQsIDQyMzYzLCAxMjA2MjQsIDY4MDc3LCA1NTI3MywgMTA3NjYsIDEyMDEyLCAyMzg2LCA2NDczMiwgCisgICAgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgMTAyOTYsIDExOTE1OCwgNzE0MCwgMTA5NzcsIDEyNzM3OCwgNDE2NCwgCisgICAgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIDg3MDksIDEyODI4MywgMTI2NDc3LCAxMjA2MzcsIDQyNDE5LCAKKyAgICA2NDc5OSwgNDIwNDcsIDEyOTQxNCwgMTk0ODIwLCA4NDcwLCAxMTgwNywgNjU4OTcsIDU3NywgMCwgMTI2NjE2LCA3NDMwMCwgCisgICAgMCwgNjgwODcsIDc0ODQwLCAxMjY0NzQsIDkxNzUzOSwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIDk2ODMsIAorICAgIDQzNDg2LCA3NDM0NCwgMCwgMjUzNiwgOTgzOTQxLCA2NjMzMCwgMTIxMjM4LCA3Mjg2OSwgMTIwNTYyLCAxMTk1NTgsIDAsIAorICAgIDAsIDEyNzgzMSwgNjYzMTcsIDY5OTQ1LCA2NjMxNSwgMjEwNiwgNjc4MDksIDExMjczLCAxMjA5ODYsIDQzMDA0LCA3NTQxLCAKKyAgICA4Mjk4OCwgMTk0NzM4LCA5NjEsIDY0MzA3LCA2NjMyNCwgNjQ5MDYsIDEyNTA4MCwgMzEwNiwgNjU5MTcsIDQxMjg0LCAKKyAgICAxNjk2LCA5ODMxMzAsIDg5MSwgMTIxMDUsIDAsIDQyNjI0LCAxMjgwMiwgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAKKyAgICAxMDkzNiwgMTE5MjU1LCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAzNTY2LCAyMzIyLCAxMjAzNzEsIDcwODMxLCAxMTQ0OSwgCisgICAgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIDM1NDcsIDk4MzcxNywgMCwgMTEzNzQ2LCA5ODM0MDAsIDQzMjE2LCA2MDg5LCAKKyAgICA3ODY4MiwgNjg0OTAsIDEyMDU3OCwgNDE3MCwgMTAyOSwgMTI3NzYxLCAxMDAzODQsIDExOTIyNCwgNDIzNzQsIDk4MzU3MSwgCisgICAgNzQ0LCA5Mjg4MywgMTEzNzM5LCAxOTQ5MjQsIDY1ODIzLCAxMjc4MjYsIDExMTgyLCAzNTUxLCA5MjkzOCwgOTgzODkxLCAKKyAgICA0NjIzLCA1NTI2OCwgMTI4NzM4LCA0NTk4LCA5ODMxNjIsIDY1MTM2LCAxMjcxMzYsIDAsIDEyODE2OSwgMTA4NTEsIAorICAgIDEyMDg3NiwgNjE3OSwgOTI2MDIsIDYxODAsIDAsIDExOTUyLCA3NDU3OSwgNzg2NDgsIDExOTcyLCA3ODY0NiwgNzg2NDcsIAorICAgIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgMTIwNTgwLCA5ODM2OTYsIDEyNTEzNSwgNjE3NywgOTAyMCwgCisgICAgNzg2NTIsIDc4NjUzLCA2MTc4LCAxMjAyNDksIDEyMDI0MiwgMTI4MDI3LCA2NzY3MywgMjIxNCwgODc1NCwgMTIyODk0LCAKKyAgICAxMDA2ODksIDIxMzcsIDQzMDgxLCAxOTQ2NjMsIDExOTExNCwgOTEzNiwgNjY4ODksIDQ0MDEsIDQxMjgwLCA3MDgwMSwgCisgICAgODk3NCwgMjMwOCwgMTk0NzUwLCA3NDE0OSwgMTAxMDUwLCAyMzE4LCAxMjA2OTMsIDY2MzYxLCA4MTk4LCA2NTYyNiwgCisgICAgNjQzNjAsIDEyNjAxLCA0MjUzNiwgNDM5MzEsIDEyMDgyNywgNDM5MzAsIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgCisgICAgMzY2NywgNzkzNiwgMTI5MjUsIDEyNjk4OSwgNjM4NSwgMTI4NDgyLCAxMjg0MDMsIDcyODYxLCAxMDg3NCwgNjU1MDUsIAorICAgIDEyMDAwMiwgNzI3ODUsIDQyMDUzLCAyMDc1LCA0MjA1NywgMTEwODMsIDQyMDUyLCAwLCA2NzI2NiwgNjc2NTEsIDEyMTEwNCwgCisgICAgOTY2NSwgOTIzMDAsIDk4MzY2NiwgMTMxODEsIDkxNzYxNywgMCwgMTI4OTM3LCA3MDA4OCwgNzQxNDgsIDAsIDcwNDE5LCAKKyAgICA3Mjg2OCwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgNjY0MDQsIDk0MDk2LCA3NDQyMiwgNDExNDgsIDg2ODMsIAorICAgIDc1OTQsIDExMzY4NiwgNzUwMzMsIDExOTA5MCwgMTA4NjksIDQzNDU4LCA0MTE0NiwgOTI0MDcsIDExNDQxLCAxMjE0NTYsIAorICAgIDM1MTIsIDExOTYzMywgOTI5NjUsIDgxMDMsIDc4MTQwLCAxMjA4NDcsIDY1MTg0LCAxMTc4MCwgNDE1NjMsIDQyNzk2LCAKKyAgICAxMjkwNTUsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDY2ODAzLCAwLCA3ODEwOSwgMTI5MTc3LCAxOTk0MiwgMTI2NjE4LCAKKyAgICAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAxMjA4MjQsIDk0MDY0LCA5ODMwNzEsIAorICAgIDEyODY1MiwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMTIwODU5LCAxMDk1LCAwLCAzNTk5LCAxMjc3NzQsIDAsIAorICAgIDEyODg2MSwgODUxNCwgMCwgOTE3NTc5LCAwLCA3NDM0NiwgNjY2OTcsIDEyODM4NSwgMTE2ODQsIDk4MzE0OCwgOTI0ODYsIAorICAgIDkxNzYwMywgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgNzQ5MjcsIDQyMDQ2LCA3Mjg2MiwgNDAzNiwgMTI2NDgxLCAKKyAgICAxMjkzNzMsIDEyODIxMywgMTk0ODYxLCA4MzM1NSwgMTE5NTQsIDcwMzQ4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIAorICAgIDkyNzIyLCAwLCAxMjcwNjIsIDcyODY1LCAxMDA4MTgsIDkxNzU0MiwgNzM4MTIsIDcyODc1LCA2NTM5LCA3MzgzNiwgCisgICAgMTI2NjA3LCAxMjA3MDIsIDkyMzkwLCAwLCAxMjA0OTIsIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCAKKyAgICA0MjksIDEyMjkwMywgNzg4OTEsIDEyNzg3NCwgMTk0ODQ4LCA2NTc5MiwgMTI4NDA4LCA4MzI4MiwgNjQxNywgMTE4OTE4LCAKKyAgICA3ODE3OCwgMCwgMTI4OTcwLCA2Njc4NiwgMCwgNDkxOSwgMTA1OTAsIDEyODA5MywgNzc1NSwgMCwgOTI5NDIsIDY0NTQ4LCAKKyAgICAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgNjgyNTMsIDEyMDY4OSwgOTgzNjE2LCAxMjE4OCwgOTgzNjY4LCAxNjE3LCAKKyAgICA4MDUwLCAxOTUwMzEsIDUwMTUsIDAsIDExOTE3NCwgNDI1OTAsIDcwMzU0LCAxNzU2LCA3ODE4MSwgOTgzOTEwLCA2NTc2OCwgCisgICAgNjM1MiwgNDE4OTIsIDEyNTE4NiwgNzU1NSwgMTMxMDMsIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgMTIxMjA4LCAKKyAgICAwLCA0MjkyNiwgMTIwODcyLCA0MTc2NCwgNzk1NywgODY4OSwgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMzU1OSwgCisgICAgMTE5MTYyLCA1NTI4NiwgNzA3MywgNjU4NTAsIDEyMzI3LCA3MDg1MywgMTEzNzIwLCAwLCAxMjgxMjIsIDcyNzYxLCAyMzQxLCAKKyAgICA4NDUwLCA4NDg0LCA4NDc0LCA3Mjg4NSwgNjgzMjIsIDcwMDc5LCA4NDYxLCA2NzcyMSwgMTIxNTMsIDEyNzk5LCAwLCAKKyAgICA0MzcwOSwgNDM3MDgsIDk0NTEsIDc1NzEsIDEzMDczLCA0Mzg0NywgMCwgNjgxLCA5ODMyNTQsIDcwMywgMTI3NTE4LCAKKyAgICAzMjcyLCA4NzgxLCAxMjg5NCwgNzAwNzcsIDExNzA5LCA5MjI4OCwgNzA1MTQsIDEyNzA1OSwgODMxNzUsIDcxNDM2LCAKKyAgICAxMTMzOCwgNzI3OTAsIDMyNzYsIDEyODk2OCwgMTIwMjMzLCA2NTkyOCwgMCwgMTIxMzY3LCA2NTAyMSwgNjQ3OTUsIAorICAgIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCA0MjcxMSwgMCwgOTgzNDkwLCA2ODQ3OCwgMTYzLCA1NzYsIAorICAgIDk4OTUsIDE2NTUsIDcwMTMxLCA3NDU5MSwgNzg4MTUsIDc4ODE2LCA2Njg4OCwgMCwgMCwgNzA1MTMsIDEwMDM5LCAKKyAgICAxMjA0MjYsIDU2MjYsIDU2MjMsIDU3MTcsIDU3NzYsIDQzNDg4LCA4MzQ5NywgNjY4ODUsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIAorICAgIDkyMzgyLCAwLCAwLCAxMjAxMTEsIDY3ODQ4LCAxMjczMDksIDk4MzU5NSwgOTgzNDcyLCA4ODg3LCAxMjc1MjEsIDcyOTUsIAorICAgIDExMDMxLCAxMjUyNTUsIDQzMTU3LCAxMDA0NTEsIDg5NDYsIDEwMzQ4LCAxMDQxMiwgODc1NSwgMTE5MTUyLCA2NzM0MywgCisgICAgNTcxOCwgMTMyMjEsIDk4MzM0MSwgOTgzMjc4LCA3ODEzNSwgNzA1MTUsIDkxNzYxNiwgODgxMCwgNzQ0OTksIDY4NiwgCisgICAgMTk0Nzc2LCA3MTM2MiwgNDYxOSwgMTE4OTU0LCA2NjU0LCA3Mzc2OSwgNzQ0MjYsIDEyNzUyMywgMTIwNDAsIDY1Njg5LCAKKyAgICAxMDEyOCwgNjUxMTgsIDY4MDI5LCAxMTkxNTEsIDc0MjA1LCA5MjY1MSwgMTI4MTM4LCAyNDAxLCA2ODE0NCwgODc5MiwgCisgICAgOTgzMTc5LCA2ODA0NCwgNjU0NTUsIDEyOTMxNSwgNzQzMjgsIDAsIDc0NTYxLCAxMjA3NjMsIDEyODg2LCAxMjA5NTIsIAorICAgIDY2NjI0LCAxMjY1NzgsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIDEwMzk2LCA3MTIxMCwgNzg2MDIsIDc4Nzc0LCA5OTg0LCAKKyAgICA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzAzNDksIDE0NTgsIDQxNDc1LCA3MjQyOSwgOTM5NzUsIDEwMDgxNCwgMTE0NzksIAorICAgIDEyMTM1NSwgMTIwMzU2LCA2MzUwLCAxMjg2NCwgNjk2NzQsIDcxNDczLCAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIAorICAgIDU1MjMwLCAxMDA0NTQsIDQwNTIsIDExMzY3MywgNzYyNiwgOTgzODkwLCAxMjA5MDcsIDEwNDUsIDE5NTA4NiwgNTYzMSwgCisgICAgNDExMTMsIDEyMDQ5NCwgMCwgNDM3MDcsIDc0MTI3LCAwLCA5ODM3MTgsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCAKKyAgICA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIDEyNzI3NywgNDI2MjUsIDcwMzI1LCA3ODA4NCwgNDE0NDMsIDEyOTEzMCwgCisgICAgMTI4MjA2LCAwLCAxNzc0LCAxNTIzLCAxMjEzMzAsIDY4MDU5LCA0MTQ0NSwgNzgyMzYsIDExMjA3LCA4NTY3LCA0MTQ0MiwgCisgICAgMzk4OCwgNzQ4NDMsIDc4MjM3LCAxMTg5MTAsIDk4MzA2NywgNjUyNzQsIDg1NjQsIDc4MTk5LCA3ODIzOCwgMTI3NTE1LCAKKyAgICAxMjEyNzIsIDAsIDQzNDQ2LCA5ODMzNDYsIDY2NTEzLCA2MjU2LCA5MTc4MDcsIDU3OSwgNTUyMTgsIDEwMjA2LCA3ODE5NSwgCisgICAgNjM3NSwgMjY3MywgOTgzODg2LCAxMTgxNCwgMCwgNDQ4OCwgMTI4NzE2LCAxMjA1NTQsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAKKyAgICAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIDQ0ODcsIDEyNzg0OSwgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIAorICAgIDc4MjU3LCA3MjAzLCAxMjQ5OTgsIDYxNCwgNzAzNjEsIDEyNjYzMywgMTIwNjE1LCAxMTk2MjIsIDc4MjYyLCAxMjcyNzEsIAorICAgIDEyNzMyMywgMCwgNDMxMjEsIDEyNzIxMSwgMTI3MDAzLCA5MjUxMywgMTA1MCwgNzU0OSwgMTIxMjYwLCA4Mjk5NCwgOTMxNCwgCisgICAgNzAzNjUsIDkyODk4LCA2ODAzOSwgMTI3MDYxLCAxMDA1NywgNzA0MzQsIDEyNzMxMywgMTI4NTc3LCA2NjUwNCwgMTIwOTYzLCAKKyAgICA4Mjk5MiwgMjMwNywgMTI4NDU2LCA2NDMzMywgMTI3MzEyLCAxMTk5MDAsIDczODczLCA5ODMxMjYsIDk0MDM1LCA5ODMwODMsIAorICAgIDEyNzk3MywgMTI4NzA4LCA3MDQ0NiwgMTAzNjAsIDY3NDYsIDEyMDQ3MywgOTIyNDUsIDQ0MCwgMTI4ODI2LCAxMzA4NSwgCisgICAgOTIzMywgNzQyMTYsIDk4MzU2NiwgMTAxMDg5LCA5OTU3LCAxMjUyMTMsIDY2NDQ3LCA4MDQ2LCA2NDk2MywgNjU3NzcsIAorICAgIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAxMDA0NjYsIDE1MjEsIDk4OTYsIDkzOTY1LCAxMDQ4NywgNjk4NzgsIAorICAgIDEyNTI3LCA2ODczNywgNzk3MCwgMTI1MDczLCAxMjg2NjAsIDczMDMsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgCisgICAgMTIxNDI5LCAwLCA1MjM3LCA2OTcxNCwgNjg3NTYsIDEwMTAzLCA1MjQ3LCA0NzY5LCAxMjkzMDIsIDExODk3NywgMTI4NzMsIAorICAgIDIyODMsIDkyOTMxLCAxMDA1MjUsIDMwMDgsIDQ4OTYsIDEyODEwMiwgMTIwODcsIDk4MzI0MCwgNTUyMzEsIDQxMTAzLCAKKyAgICA3NTAxMSwgNjQ1NjUsIDQ3NzMsIDEyMDg0NiwgNzg1NDksIDcwMDc0LCA0NzcwLCA2Njg5MSwgOTE3NTY3LCA4NzMxLCAKKyAgICA2NTM3OCwgNjY5MTEsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAxMTkwNzEsIDQ3NzQsIDMwMTksIDk5OTcsIDEyODM0LCAwLCAKKyAgICA5NDU2LCAxMDIxNSwgMTIwNTQ3LCAxMjA0MTMsIDc4NTU2LCAxMjY5OTAsIDEyMTMzMiwgNzQ3NzYsIDQyODEsIDQ3NjgsIAorICAgIDEyMDU3MiwgNDE1MzUsIDQwOTksIDkwMTcsIDY5OTkzLCA5ODM2OTIsIDc4MDk1LCAyMjI1LCA3ODA5NiwgMTE4OTQ2LCAKKyAgICAxMjAyNTIsIDAsIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAxMjg5MjYsIDExMzc2NCwgNjY4NzAsIDIxMzQsIDEyNzM4OCwgCisgICAgMTAxMTYsIDk4NzcsIDcwNjc5LCAxMjg5NjAsIDAsIDcwOTUsIDgzNzksIDc0MTE2LCA2Nzc4LCAxMjExNTUsIDc4MDkwLCAKKyAgICA4MjQzLCAyNDI3LCAxMjgxNDEsIDcwOTMsIDk4Mzg3OSwgMTE1ODUsIDE5NTAwMywgOTk2MiwgODI5OTAsIDEyMjIzLCAKKyAgICAxMjg0ODUsIDkyNDMwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgODMzODksIDc0NDE5LCAKKyAgICAxMjg1MzAsIDE5NDY4NiwgNTUyODMsIDAsIDcwMzYzLCA3NDQzNywgMTE1NiwgODc0MCwgODMyOTUsIDM3ODIsIDY0MzMxLCAKKyAgICAwLCA0MTM3MCwgMTAxNCwgODI2MSwgMTIwOTU2LCA5MTc1OTYsIDEwODM1LCAxMjUyMzksIDY1NTM2LCA4MzI5NCwgCisgICAgMTIwNDYzLCAxMjUwNTEsIDc3MDIsIDExODgyNCwgNzMwMiwgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIAorICAgIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCA1Njk3LCAxMTg3ODgsIDc1MDE4LCAxMjA0NzEsIDc0OTIzLCAKKyAgICA0MjI1NywgNTY5NiwgOTI2NzcsIDEyMDQ2NSwgMzg2MiwgOTY0MywgOTE3OTUxLCA3MDE4MywgNzYzNCwgNjUxNjcsIDk4NDUsIAorICAgIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCAxMjg3MTksIDE0MjYsIDY4MjE3LCAxMjg2NjgsIDY4NDQ3LCA0MjIwNCwgCisgICAgNTUyNzAsIDg1NzEsIDY3NDAzLCA3ODA2NywgNDM4NTksIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgCisgICAgMCwgMTAyODEsIDkxNzc5OCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAxMDc0NCwgNzg4ODcsIDk5MCwgNTY0NywgMCwgNzM4NywgCisgICAgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgMTI4NzksIDExMDE4LCAxMjgzNjIsIDM5NDUsIDkyNTg5LCA5ODM0NjYsIAorICAgIDcwNjY0LCA3ODg4MywgMTI4MTI4LCA3ODIxMiwgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgOTgzODM1LCA3ODczMSwgNTY0OCwgCisgICAgNjQ3NDgsIDEyMDkyMCwgNDIyMzYsIDEwMjA1LCAzNTQ1LCAxMjkxMjEsIDY5ODQsIDEyNzc3MSwgNzQwNTEsIDEyODkwMSwgCisgICAgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMTI4MTczLCAxMjUwMzcsIDE5NDc0NiwgOTkxMSwgMTIwNTkwLCA2NTAyMCwgMTAwOTcsIAorICAgIDExOTE2NiwgNzg2OTYsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIDc4MjA4LCAxMTQwLCA3ODQyNiwgMTI4MjA1LCAxMDE1OSwgCisgICAgMCwgMCwgODEyOCwgNzI4NTcsIDY4MzI2LCAxOTQ5MTEsIDE4MTUsIDE5OTEwLCA4OTAsIDEyNDkzNSwgMzI2NywgOTIyOTEsIAorICAgIDkxNzYyOSwgMTAxMjMsIDcyODgyLCA0NDEwLCAxMDQxLCAxMDU3NiwgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDk4Mzc0NiwgCisgICAgMTI4MzQ3LCA3Mjg4NCwgMCwgMTI4MDk4LCAxOTkzOCwgNjU5MDYsIDEyNzgxOSwgNzI4ODMsIDEyODg1OCwgMzI5OCwgCisgICAgNTM3NSwgMTAxNDIsIDEwMDQyMSwgODIxNSwgOTI2MzMsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgOTgzMTQ3LCA2OTg5OSwgCisgICAgMTk0OTM4LCA5ODM2MDIsIDEyMTQyNiwgNDEzODIsIDkxNzkyNiwgMTI4NjUzLCA1MTczLCA2NTM0OCwgNTI3LCAxMjExNzQsIAorICAgIDExMzc4MiwgNzg0NjksIDEyODI1MCwgNzg3OTcsIDExOTE1LCAxMjEzODYsIDAsIDEwMDcyLCAwLCA0MjY5NSwgMjMyOSwgCisgICAgNDIyNTAsIDAsIDExMTg3LCA2OTY2NywgMTIyNDUsIDE1NjgsIDY2ODA2LCA4MzQ2MCwgOTgzMTg5LCAxMTM3MDUsIAorICAgIDEyODUzMiwgMTEyMDEsIDkyNzA4LCA3NDc2OSwgMTI2NDcwLCA2NzY4MCwgOTA2OSwgNjE0NCwgMTIxMjQ2LCAxMTk4NDAsIAorICAgIDcwNzAwLCAxMjE0MzgsIDY2NzgzLCA2NDkxNywgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgOTIyNTAsIDY1MDk4LCAKKyAgICA2MzY0LCA5NTYsIDY2Nzk0LCAxMjgzMCwgMTA0NjIsIDczNzQwLCA3MzczNCwgMTI5MTA5LCAwLCA5ODM3MzksIDY2NDQ5LCAKKyAgICAxMzI2MywgNzQyODEsIDY5MjE3LCAxMzE3MSwgMTI3Nzk2LCA3MDcxNCwgMTAwOTQyLCA2Mzg4NSwgMTI3MjUxLCAxMDQ0LCAKKyAgICA0MTI3NiwgMTI4MzYzLCAwLCAwLCA0MjA2OCwgMTE3OTUsIDEyNDk4NSwgMCwgMTI3MjAyLCAwLCA0MjQ1MCwgMzkwNywgCisgICAgMTI0OTk1LCA2NDUyNiwgMTE4MjksIDY4MTk3LCAxMjI5NSwgMCwgMTE0NzUsIDcwMzI5LCAzMDIwLCAxMTUzNywgMCwgCisgICAgNjY0NDEsIDEyMDc2MSwgNzA5OCwgMTI1MDcxLCAwLCAxMDU3LCA1NjYsIDQyNjk2LCAxMjcyMzksIDMwMTYsIDQyMjc0LCAKKyAgICA0MzQ2NCwgNjY0OTAsIDEyOTIxLCA2NjU3MSwgNzg0NzIsIDcxMjA3LCAzMDA2LCA0NjIwLCAxMjcyMzcsIDk4MzMzMCwgCisgICAgMTIwMTA3LCAxMjkzNTAsIDY0NjU5LCA5MTc5MTcsIDEyNzc0OSwgNTUyNTMsIDYzNTcsIDYzNjIsIDg2MjYsIDcxMzM3LCAKKyAgICAyMjE2LCA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAwLCA2NDQ3NywgOTE3ODUzLCA0MzgxMywgMTA1MywgCisgICAgMTAwNDMyLCA3ODI2OSwgMTAwNDM0LCA5Mjk3NywgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCA3NDM0OSwgNjY0NzksIDY3Njg5LCAKKyAgICA2Njg3MSwgOTE3ODQ1LCA3MDMyNywgNDI0OTAsIDY4OSwgNjUwOCwgNDE2MywgNDIyOTgsIDg2MzksIDY2NjQxLCA0MjQ2LCAKKyAgICAxMDA0NDksIDQzNTE0LCAxMjEzMCwgMTAwNDUwLCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCA2NjQ4MSwgMTI3ODUwLCA5ODMxNDQsIAorICAgIDEyNzgyOCwgNjM1OSwgMCwgNDM0NzEsIDk4Mzc2OCwgMCwgODMzNDUsIDc1MDY1LCA5MTc5NTMsIDYzNTgsIDYzNjEsIAorICAgIDE5MjYsIDYzNTYsIDcyODU1LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDEwMDQyNSwgNDM2ODUsIAorICAgIDc0MzA3LCAxMDA0MjYsIDQyOTEwLCA4MzMwMSwgODY5MywgNzg2MTEsIDExOTU2NSwgMTI4NjIxLCAxMTk1ODcsIDkyMTkyLCAKKyAgICAxMjE0NTQsIDY1ODk0LCAxOTQ2OTQsIDAsIDY0Mjk2LCA5ODM2ODEsIDk4MzM5NCwgMTk0OTU5LCAxMTkxODcsIDIxMzUsIAorICAgIDExODM2LCAwLCAxMjkzNjEsIDc4ODY5LCA0MjMxMywgNTU3OSwgOTI0MTIsIDcwMzg0LCAxMjkxMTMsIDQzODU0LCA3MTkxMywgCisgICAgNTU3OCwgMTE4NDAsIDEyODExNSwgNDIwMjMsIDYyMzQsIDU2NjksIDkyMjc1LCA3ODYyMCwgMTAxMDM4LCA2ODgzMywgCisgICAgOTIyNTQsIDY4MjAyLCA1NTgzLCAwLCAwLCA0MjQyNiwgNTU4MCwgNDIyNzYsIDI5MjMsIDg5MiwgMjIyMCwgNDI0NjUsIAorICAgIDQxMzMwLCAxOTQ5NDUsIDU3OTUsIDY1NTEyLCA2ODc3NCwgNjU3MDIsIDY4NzcwLCAxMjA4MDEsIDY1MjUxLCA2ODIyOCwgCisgICAgNjU3MTAsIDEyODM5OSwgOTQxNzYsIDY3NjcyLCA2ODc4MywgNTM3MCwgNzA0NjUsIDI5MzEsIDE2MzgsIDEwOTY2LCAKKyAgICAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDY5ODc5LCA3NDU4NSwgODE3MiwgNDIwMTcsIDkyNzU2LCAxMDg0NCwgCisgICAgMTIxMDE2LCAxMjgxOTUsIDkyNDI0LCA2Mzc0LCA5MjYzNiwgMTAwNDM4LCAyODYsIDc4MDIzLCAxMDYyLCAwLCAxMTk5OTksIAorICAgIDEwMDQzNywgNzM5NSwgMTI3NzgzLCAxMDcwLCA2NDkwMCwgNzE1MywgNjA5NSwgNDE4NjUsIDEyODkyOCwgMzAxNSwgCiAgICAgNjg3NDMsIDY4NzQwLCA1MjExLCA2ODgwNSwgNjQwMCwgNjg3NDksIDY4NzQ4LCA2ODc2MCwgODE4OSwgMTEyNzYsIDY4NzU0LCAKICAgICA3MDI4NCwgMzcyLCAxMjg4MjksIDY4NzYxLCAxMTM3ODMsIDQyMTAyLCA0MTU4NSwgMTI3NzUxLCAwLCA0MjEwMSwgMjc2LCAKICAgICA3ODQwMiwgNjc0MjcsIDMzLCA2NzQyNSwgNjc0MjQsIDkwMDcsIDY3NDMwLCA0MTU4OCwgNjYwMzMsIDQyNywgMTA3NjMsIAotICAgIDExODgxOSwgNzA4NzIsIDEyNzg4NCwgOTgzOTQzLCAxMDMxLCA2MjU3LCA5MjQ4OSwgNDIxMDQsIDAsIDk4Mzk4MCwgMjMyOCwgCi0gICAgNjY4MzcsIDEwNzEsIDQyODk5LCAxMjUwODgsIDc0ODQ4LCAxMjA4NTcsIDExMzc5MywgMTk0OTgxLCAxMDQ3LCAwLCAKLSAgICAxOTQ5NDMsIDQyOTA4LCAxMjg0ODAsIDY5NzIzLCAxMDY1MSwgNzAzNTYsIDAsIDEyNTExMywgNzI0MzMsIDY2ODI5LCAKLSAgICA3MDgxNywgNTcxMSwgNDE2MzMsIDEyMDk4LCA2NTU3MSwgOTE2NiwgMCwgNTcxMCwgMTI4NTUxLCA2NzkwLCA2NTE2OCwgCi0gICAgMTMyMTYsIDk4MzE1MCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgNDE2MjMsIDE5NTAwMSwgNTcxNSwgNjk2NTQsIDcxOTE1LCAKLSAgICAwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIDAsIDg2NDMsIDY4NTI1LCAwLCAxMTg5MDYsIDI3NTcsIAotICAgIDExMDY3LCA5NzE4LCA2NjQxOSwgODkxMCwgMTA2ODksIDY0NzksIDAsIDAsIDcxMTczLCA3ODYwNywgOTE5NiwgNjk2NzAsIAotICAgIDEyNTA3MCwgMCwgMTI4MzM4LCAxMjAzMzUsIDExODkxMSwgMCwgOTQwNDMsIDEyOTE5NCwgMCwgMCwgMTIwMDEwLCA3Mzc5NSwgCi0gICAgODcwMSwgNjgxMzAsIDExOTYxNiwgMTIwNTIyLCAwLCA0MjQ3NywgMTk0OTk0LCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIAotICAgIDEyOTI5NiwgMCwgNjQ5NDYsIDEwOTkyLCAwLCA3NDU2NiwgNzAzMzYsIDExMzY4OCwgOTMxOCwgOTM5ODYsIDEzMjQ5LCAKLSAgICA0MjkwMiwgNzM4MDgsIDAsIDY1NDU3LCA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgCi0gICAgNzAzNjYsIDEyMDAwNSwgMTE5NTg1LCAxMjEyMTIsIDUwODQsIDEyMTE4OSwgMTIxMTM0LCA3NTA2MiwgMCwgNzMzLCAKLSAgICA3NDY0NiwgNzgwMTQsIDY4NzY3LCA3ODQzNSwgMTEyMDQsIDAsIDkyMTgsIDE3MzEsIDAsIDkyOTM3LCA3MTA3MCwgNjc5OTAsIAotICAgIDk4MzEyNSwgMCwgMCwgNzAzMjMsIDEyMTM3MSwgOTI0OTIsIDUxNTUsIDEyMDAwMCwgNTM1OCwgOTgzNzQ0LCAwLCAKLSAgICA5MTc3NjcsIDY0NDI0LCA3MTIzNiwgMzg0MCwgNjQzMTQsIDQxNDMyLCAxMjEzMTYsIDc4MzE1LCA2ODQzMCwgNjc5ODAsIAotICAgIDQzMjUzLCA2NTk0MywgMCwgMzM3MSwgMTA5ODgsIDEyNzk2MCwgODc3MSwgMTQ3OSwgMCwgMCwgMTEwOSwgMTE1ODAsIAotICAgIDQzNjU3LCA2NDYwMSwgMTIyMDUsIDkyNzgyLCAwLCA2NDUwNywgODg2OCwgMzk5LCA2Nzk3OCwgNzQ4NDIsIDk4MzI4NiwgCi0gICAgMTIxMzM2LCAxMjE0OSwgMTMwODgsIDU1MSwgMCwgMTAxNTYsIDEyMTE5LCA5MjU3MiwgMTE4OTE2LCAyNTQ0LCA2NTA3NCwgCi0gICAgMTE5MjExLCA5ODMyOTgsIDAsIDc4MDExLCAzNTEsIDY4NzY0LCAwLCAxMjg3MTMsIDU1MjI5LCAwLCA3NDI2OCwgNzgwMDgsIAotICAgIDEyODA5NCwgMCwgNDIzNzcsIDAsIDAsIDAsIDExMzc2NywgNzQzMjAsIDkwMTMsIDQwNTQsIDAsIDE5NDU4MCwgMTEzNzQwLCAKLSAgICAwLCA3Mzk2MCwgNTU4NSwgNjU4ODEsIDI1NDksIDc0NDY5LCA3NDQ1NywgMTExMDQsIDU1ODQsIDgzNTgsIDEyNjQ3MywgCi0gICAgNjQyMTUsIDY2ODY0LCAxMDkxOSwgNzA0ODAsIDc5ODAsIDEyNjYwMSwgMTEzNjk4LCAyMjE4LCA0MTgwMCwgNTU4OSwgCi0gICAgODI5ODMsIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDAsIDExMzU2LCAxMjExMjAsIDE5NDgzMywgNDM0NTIsIDY3MjQ1LCAKKyAgICAxMTg4MTksIDcwODcyLCAxMjc4ODQsIDEwMDk5MCwgMTAzMSwgNjI1NywgOTI0ODksIDQyMTA0LCAxMDAzOTYsIDEwMDM5NSwgCisgICAgMjMyOCwgNjY4MzcsIDEwNzEsIDQyODk5LCA3NDQxOCwgNzQ4NDgsIDEyMDg1NywgMTEzNzkzLCAxMDA0MDEsIDEwNDcsIAorICAgIDEwMDQwMywgMTAwNDAyLCA0MjkwOCwgMTAwNDA0LCA2OTcyMywgMTA2NTEsIDcwMzU2LCAxMDA0MDgsIDEyNTExMywgCisgICAgNzI0MzMsIDY2ODI5LCA3MDgxNywgNTcxMSwgNDE2MzMsIDEyMDk4LCA2NTU3MSwgOTE2NiwgMCwgNTcxMCwgMTI4NTUxLCAKKyAgICA2NzkwLCA2NTE2OCwgMTMyMTYsIDEwMDkzNSwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgNDE2MjMsIDE5NTAwMSwgNTcxNSwgCisgICAgNjk2NTQsIDcxOTE1LCA5ODM3MjAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMTAwMzg5LCA4NjQzLCAKKyAgICA2ODUyNSwgMCwgMTE4OTA2LCAyNzU3LCAxMTA2NywgOTcxOCwgNjY0MTksIDg5MTAsIDEwNjg5LCA2NDc5LCAxMjUxOTYsIAorICAgIDEyOTE3OCwgNzExNzMsIDc4NjA3LCA5MTk2LCA2OTY3MCwgMTI1MDcwLCAwLCAxMjUxODQsIDEyMDMzNSwgMTE4OTExLCAKKyAgICA0MTY0NSwgOTQwNDMsIDEyOTE5NCwgMTI3MDg3LCAxMjg0ODAsIDExMzc3MCwgNzM3OTUsIDg3MDEsIDY4MTMwLCAxMTk2MTYsIAorICAgIDEyMDUyMiwgNDM3NTQsIDQyNDc3LCAxMDA0NTksIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgMTI5Mjk2LCA3NDU1NywgCisgICAgNjQ5NDYsIDEwOTkyLCAwLCA3NDU2NiwgNzAzMzYsIDExMzY4OCwgOTMxOCwgOTM5ODYsIDEzMjQ5LCA0MjkwMiwgNzM4MDgsIAorICAgIDk4MzMzNSwgNjU0NTcsIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCA3MDM2NiwgCisgICAgMTIwMDA1LCAxMDAzNjksIDEwMDM2OCwgNTA4NCwgMTAwMzcwLCAxMjExMzQsIDc1MDYyLCA5ODM0NjIsIDczMywgNzQ2NDYsIAorICAgIDc4MDE0LCA2ODc2NywgNzg0MzUsIDExMjA0LCAwLCA5MjE4LCAxNzMxLCAxMDAzODAsIDkyOTM3LCA3MTA3MCwgNjc5OTAsIAorICAgIDk4MzEyNSwgOTgzMzcwLCAwLCA3MDMyMywgMTIxMzcxLCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCA1MzU4LCAxMjg1MTUsIAorICAgIDEyOTMxNiwgMTk0OTgxLCA2NDQyNCwgNzEyMzYsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMTIxMzE2LCA3ODMxNSwgNjg0MzAsIAorICAgIDY3OTgwLCA0MzI1MywgNjU5NDMsIDEwMDM3MywgMzM3MSwgMTA5ODgsIDEwMDM3OCwgODc3MSwgMTQ3OSwgMTAwMzU3LCAKKyAgICAxMDAzNjAsIDExMDksIDExNTgwLCA0MzY1NywgNjQ2MDEsIDEyMjA1LCA5Mjc4MiwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgCisgICAgNjc5NzgsIDc0ODQyLCA5ODMyODYsIDEyMTMzNiwgMTIxNDksIDEzMDg4LCA1NTEsIDE5NDk3MiwgMTAxNTYsIDEyMTE5LCAKKyAgICA5MjU3MiwgMTE4OTE2LCAyNTQ0LCA2NTA3NCwgMTE5MjExLCAxMDAzNTQsIDEwMDM1MywgNzgwMTEsIDM1MSwgNjg3NjQsIAorICAgIDkxNzk4MSwgMTI4NzEzLCA1NTIyOSwgMCwgNzQyNjgsIDY2NzkwLCAxMjczMjcsIDEwMDM2MSwgNDIzNzcsIDEwMDM2MywgCisgICAgMTAwMzYyLCAxMDAzNjUsIDEwMDM2NCwgNzQzMjAsIDkwMTMsIDQwNTQsIDAsIDE5NDU4MCwgMTEzNzQwLCAzNDQ3LCAKKyAgICA3Mzk2MCwgNTU4NSwgNjU4ODEsIDI1NDksIDc0NDY5LCA3NDQ1NywgMTExMDQsIDU1ODQsIDgzNTgsIDEyNjQ3MywgNjQyMTUsIAorICAgIDY2ODY0LCAxMDkxOSwgNzA0ODAsIDc5ODAsIDEwMDcyMywgMTEzNjk4LCAyMjE4LCA0MTgwMCwgNTU4OSwgODI5ODMsIAorICAgIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDc0NTIyLCAxMTM1NiwgMTIxMTIwLCAxMjgxNzUsIDQzNDUyLCA2NzI0NSwgCiAgICAgOTI5OTMsIDQyNTczLCA2Njg3OSwgODMzMjksIDY3ODEwLCA2OTc2NywgNzg3NTIsIDc0MzkyLCA4MTM1LCA2NDUwLCAKLSAgICAxMDA1NSwgNzc5OTYsIDExOTk0OCwgOTgzMTczLCAxMTkyMjUsIDU2NTcsIDAsIDk2MjYsIDEyMTQ1MywgNzc5OTQsIAotICAgIDEwMTc5LCA1NjU0LCAxMjkzOSwgOTI1NzMsIDEyMDc5OSwgNzE4NjAsIDAsIDU2NTIsIDEwOTQ1LCAxOTQ1OTksIDY2NDg2LCAKLSAgICAwLCAzNjYxLCA3ODYzLCAwLCA2ODA2OSwgOTgzNjc1LCA3MDMzMiwgMTI3MTk0LCA1NjU5LCAxOTQ2MDYsIDc4NjkyLCAKLSAgICA2NjcyOSwgNTY1NSwgOTgzNjI2LCA0MjE2OCwgMTIxMTMxLCAxMDU1LCA3MTE3MSwgNzE4ODgsIDY2MzEwLCA3NDAzMCwgCi0gICAgNzA1MTYsIDEyMTQ2LCA3MDM2MiwgNzM5NTYsIDExNjE4LCAwLCA0MjcyMCwgOTI5NDksIDEwMjcyLCAxMDMwNCwgMTAzNjgsIAotICAgIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgNzQ5NzgsIDY0ODcwLCA3NDE5MSwgMzQ2NywgNzEwNzMsIDc4ODEsIAotICAgIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIDAsIDcwMDM2LCAKLSAgICA2OTY5NiwgNjk3NjksIDY0NjU2LCA5MTc5OTUsIDAsIDkyNDA5LCA3MDA1NiwgNTY2NiwgNjUyMjcsIDUzMTgsIDYzOTk0LCAKLSAgICAxMTk1OTYsIDkwOTEsIDEwNzk4LCA3ODY2NCwgNzg1MDgsIDEwMTg2LCA5ODMyNjUsIDc3MzIsIDk4MzcyNCwgNjQ1NTYsIDAsIAotICAgIDk4Mzk3OSwgNTY2OCwgNzQ0NDUsIDc0OTgyLCA3NDY0NSwgNTY3MCwgMTEzNzk1LCAxMjcyOTcsIDExODIwLCAyOTkyLCAKLSAgICA3ODI2LCA1NjY3LCAxOTk1MiwgMTIwODA3LCA3NDk4MSwgMTI3NDksIDc0NTUxLCA2Nzc1NywgMCwgNjY0OTYsIDQzNjEsIAotICAgIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgMTI4Mjg2LCA5NDAwNCwgNzAzNTksIDAsIDM1NzEsIDEzMjQ3LCA1ODc0LCAKLSAgICA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgNDMxOTIsIDc0NjIxLCA3ODI2NSwgNTUzLCAxMTM3NjgsIAotICAgIDEyNzAxMiwgOTMwNTMsIDU4MjksIDAsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgMTk0OTE5LCAxMjc0NiwgMTI4NjcxLCA3MDMzOCwgCi0gICAgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDc0MjU5LCA5NDEwMiwgOTQwOTksIDY0OTA1LCA5NDEwNSwgOTUxMiwgOTQxMDMsIAotICAgIDEyNzQyLCA2NDQzLCA5ODM4MDYsIDAsIDkxMzUsIDEyODg2MywgNDE1NjQsIDEyMTUxNywgNTUyMTksIDEyODgzMiwgCi0gICAgOTgzODUxLCAxOTQ4NzcsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDAsIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAKLSAgICAxMjg5MDMsIDEyNDkzNiwgMTI4MzkwLCA4MzIxNSwgMjQyNSwgNjUxODIsIDEyODc2OSwgNDM2MzYsIDUyMjEsIDc4NDEwLCAKLSAgICAzMjgsIDEyMTAzMSwgNjg3MzYsIDY5ODE1LCA1NjM2LCAxMTk5MTcsIDUzMjksIDEyMTI5MywgNTYzOCwgODMxNjYsIDc5NDAsIAotICAgIDY0OTM4LCA0MzIyMywgNDM3NjAsIDU2MzUsIDMzNzMsIDI5ODYsIDc4MjkyLCA3NDIyMywgMzQzNywgNjg3NjMsIDYyMDMsIAotICAgIDQyNDcsIDcxMTY5LCAxMTkyMCwgODI3NCwgNjgyNDAsIDk4MzY1OCwgMTY1NywgNDE1NjEsIDY4Nzc4LCA3ODI5NSwgNTYzOSwgCi0gICAgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDk4MzY4NSwgNzExNzksIDQyMjI3LCA2ODMwMSwgODMzMjIsIDQxNjM3LCAKLSAgICA2Nzg3MiwgMTIxMTA1LCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTIwNzEzLCAxMTcwNSwgNTY0MiwgMCwgNTQ4NiwgCi0gICAgMCwgNDM1NiwgMTE3MTAsIDAsIDEyMDUxLCA2OTkzOCwgMCwgNTY0MSwgODI1OSwgMTI2OTk0LCAxMDU4LCAwLCA2NzYzMCwgCi0gICAgMCwgMTI4OTI3LCAxMTQ0LCA3ODc1MCwgMTI3MjkzLCA0MjIyOCwgOTgzNzE0LCA3Mzg5MCwgMTE4OTcyLCAxMjczNTIsIAotICAgIDI4MDAsIDgzMjA5LCA1NjQ1LCA2NDk2NCwgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAxMjEzNTYsIDU2MDgsIDY1ODkwLCAKLSAgICA0MzgwOCwgMTk0OTcyLCA2NzYyMSwgNjQ5MzIsIDkwMDAsIDcxMjA0LCA2NzIzNSwgOTI2NzMsIDE4NjUsIDEyODcwNiwgCi0gICAgNTYxMywgNjY0MDEsIDEyMTE0NSwgMCwgNTYxMCwgOTgzMjI2LCA3MTE5OSwgNjU4MjYsIDIwNjksIDAsIDEwNzg3LCAKLSAgICA0Mzk5OSwgMjk5NywgMTE5OTMyLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNTg3NSwgMjQxMiwgODMyMDYsIAotICAgIDgxODYsIDk4MDcsIDc0MjY5LCA2NjI5NCwgMTMxMzAsIDY1ODc0LCA3MTg1NSwgNTgwNywgMTEzNjc4LCAxMDAzMCwgNTMwNiwgCi0gICAgMTIzNjQsIDExODg2MywgOTI5NzAsIDExNzA0LCA4MzIwMiwgOTI1ODMsIDEwMjExLCAwLCAxMjA1NzksIDAsIDEyMTA2MywgCi0gICAgMTE3MDYsIDk3MTAsIDEyNTAyMiwgODI5ODUsIDEyMDY1NSwgNDEzLCA2NTYyMywgNzExOCwgODMxNjcsIDkxMzMsIDc0MjYyLCAKLSAgICA5MTc5NjQsIDEwNDIsIDEyNTA2OCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIDYxODUsIDY0Nzc2LCA0OTg0LCAxMjEyNjYsIAorICAgIDEwMDU1LCA3Nzk5NiwgMTAxMDMzLCA5ODMxNzMsIDExOTIyNSwgNTY1NywgMTAwNDQzLCA5NjI2LCAxMjE0NTMsIDc3OTk0LCAKKyAgICAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAxMjA3OTksIDcxODYwLCA5MTc5MzksIDU2NTIsIDEwOTQ1LCAxOTQ1OTksIAorICAgIDY2NDg2LCA5ODMzNjAsIDM2NjEsIDc4NjMsIDAsIDY4MDY5LCAxMDEwODQsIDcwMzMyLCAxMjcxOTQsIDU2NTksIDE5NDYwNiwgCisgICAgNzg2OTIsIDY2NzI5LCA1NjU1LCAxMjEwMTIsIDQyMTY4LCAxMjExMzEsIDEwNTUsIDcxMTcxLCA3MTg4OCwgNjYzMTAsIAorICAgIDc0MDMwLCA3MDUxNiwgMTIxNDYsIDcwMzYyLCA3Mzk1NiwgMTE2MTgsIDcyNzA5LCA0MjcyMCwgOTI5NDksIDEwMjcyLCAKKyAgICAxMDMwNCwgMTAzNjgsIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgNzQ5NzgsIDY0ODcwLCA3NDE5MSwgMzQ2NywgCisgICAgNzEwNzMsIDc4ODEsIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIAorICAgIDE5NDk3OCwgNzAwMzYsIDY5Njk2LCA2OTc2OSwgNjQ2NTYsIDkxNzk5NSwgMCwgOTI0MDksIDcwMDU2LCA1NjY2LCA2NTIyNywgCisgICAgNTMxOCwgNjM5OTQsIDExOTU5NiwgOTA5MSwgMTA3OTgsIDc4NjY0LCA3ODUwOCwgMTAxODYsIDk4MzI2NSwgNzczMiwgCisgICAgOTgzNzI0LCA2NDU1NiwgMCwgOTgzOTc5LCA1NjY4LCA3NDQ0NSwgNzQ5ODIsIDc0NjQ1LCA1NjcwLCAxMDA4MzAsIAorICAgIDEyNzI5NywgMTE4MjAsIDI5OTIsIDc4MjYsIDU2NjcsIDE5OTUyLCAxMjA4MDcsIDc0OTgxLCAxMjc0OSwgNzQ1NTEsIAorICAgIDY3NzU3LCAyMjYzLCA2NjQ5NiwgNDM2MSwgMTE5MjYwLCAxMzA2LCA5Mjg2LCAxNDk3LCAxMjgyODYsIDk0MDA0LCA3MDM1OSwgCisgICAgMCwgMzU3MSwgMTMyNDcsIDU4NzQsIDc5NzMsIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCA0MzE5MiwgNzQ2MjEsIAorICAgIDc4MjY1LCA1NTMsIDExMzc2OCwgMTI3MDEyLCA5MzA1MywgNTgyOSwgOTgzMjQ3LCA0NTg3LCA3ODI4NSwgNjU5MTIsIAorICAgIDE5NDkxOSwgMTI3NDYsIDcyODA2LCA3MDMzOCwgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDc0MjU5LCA5NDEwMiwgOTQwOTksIAorICAgIDY0OTA1LCA5NDEwNSwgOTUxMiwgOTQxMDMsIDEyNzQyLCA2NDQzLCA5ODM4MDYsIDAsIDkxMzUsIDEyODg2MywgNDE1NjQsIAorICAgIDEyMTUxNywgNTUyMTksIDEyODgzMiwgOTgzODUxLCAxMjgwMjYsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDExOTkxNCwgCisgICAgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDEyODkwMywgMTI0OTM2LCAxMjgzOTAsIDgzMjE1LCAyNDI1LCA2NTE4MiwgMTI4NzY5LCAKKyAgICA0MzYzNiwgNTIyMSwgNzg0MTAsIDMyOCwgMTIxMDMxLCA2ODczNiwgNjk4MTUsIDU2MzYsIDExOTkxNywgNTMyOSwgCisgICAgMTIxMjkzLCA1NjM4LCA4MzE2NiwgNzk0MCwgNjQ5MzgsIDQzMjIzLCA0Mzc2MCwgNTYzNSwgMzM3MywgMjk4NiwgNzgyOTIsIAorICAgIDc0MjIzLCAzNDM3LCA2ODc2MywgNjIwMywgNDI0NywgNzExNjksIDExOTIwLCA4Mjc0LCA2ODI0MCwgMTk0NzQxLCAxNjU3LCAKKyAgICA0MTU2MSwgNjg3NzgsIDc4Mjk1LCA1NjM5LCAyOTU0LCA1NjYwLCA1NjQwLCA3ODMwMywgMTIxNDIwLCA3MTE3OSwgNDIyMjcsIAorICAgIDY4MzAxLCA4MzE2OCwgNDE2MzcsIDY3ODcyLCAxMjExMDUsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMDA3MzEsIAorICAgIDExNzA1LCA1NjQyLCAxMDA3MzIsIDU0ODYsIDEwMDczNCwgNDM1NiwgMTE3MTAsIDEwMDczOSwgMTIwNTEsIDY5OTM4LCAKKyAgICAxMDA3NDAsIDU2NDEsIDgyNTksIDEyNjk5NCwgMTA1OCwgMCwgNjc2MzAsIDEwMTAxNiwgMTI4OTI3LCAxMTQ0LCA3ODc1MCwgCisgICAgMTI3MjkzLCA0MjIyOCwgOTgzNzE0LCA3Mzg5MCwgMTE4OTcyLCAxMDA1NTAsIDI4MDAsIDgzMjA5LCA1NjQ1LCA2NDk2NCwgCisgICAgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAxMjEzNTYsIDU2MDgsIDY1ODkwLCA0MzgwOCwgMTI4MzM1LCA2NzYyMSwgCisgICAgNjQ5MzIsIDkwMDAsIDcxMjA0LCA2NzIzNSwgOTI2NzMsIDE4NjUsIDEyODcwNiwgNTYxMywgNjY0MDEsIDEwMDcyMSwgCisgICAgMTAwNzI0LCA1NjEwLCAxMDA3MjYsIDcxMTk5LCA2NTgyNiwgMjA2OSwgMTAwNzMwLCAxMDc4NywgNDM5OTksIDI5OTcsIAorICAgIDExOTkzMiwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDU4NzUsIDI0MTIsIDgzMjA2LCA4MTg2LCA5ODA3LCAKKyAgICA3NDI2OSwgNjYyOTQsIDEzMTMwLCA2NTg3NCwgNzE4NTUsIDU4MDcsIDExMzY3OCwgMTAwMzAsIDUzMDYsIDEyMzY0LCAKKyAgICAxMTg4NjMsIDkyOTcwLCAxMTcwNCwgODMyMDIsIDkyNTgzLCAxMDIxMSwgMCwgMTIwNTc5LCAwLCAxMjEwNjMsIDExNzA2LCAKKyAgICA5NzEwLCAxMjUwMjIsIDgyOTg1LCAxMjA2NTUsIDQxMywgNjU2MjMsIDcxMTgsIDgzMTY3LCA5MTMzLCA3NDI2MiwgCisgICAgOTE3OTY0LCAxMDQyLCAxMjUwNjgsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgNDk4NCwgODMxOTgsIAogICAgIDcwOCwgMTEzOTEsIDAsIDEyMjQxLCA5MjcyMCwgODMzOTksIDEzMDgsIDEyMTI1OCwgMjUzNCwgODEwLCAxMjUwODksIAotICAgIDEyMDkzMywgMTI4MDE2LCA3MTg0OSwgNzE4NjksIDE5MTcsIDMwMDAsIDEyNTE0MCwgMTIwMTg0LCAxMjA3MzksIDIzNjQsIAorICAgIDEyMDkzMywgMTI4MDE2LCA3MTg0OSwgNzE4NjksIDE5MTcsIDMwMDAsIDEyNTE0MCwgNzA2OTQsIDEyMDczOSwgMjM2NCwgCiAgICAgNjYzODcsIDc0NDcwLCA2NjYxOCwgNjU2ODAsIDY2NDExLCAxMDAyNywgNzE4NDEsIDEyODE1NCwgMTIzMzcsIDc0MjgzLCAKICAgICAxMjczNjgsIDk4MzE2NywgMjk4MCwgNzU1LCA2OTc3NCwgOTMxLCAxMzEyNCwgNjgwNjgsIDYzNjMsIDI3NDgsIDEyMTAyMiwgCi0gICAgMCwgNjUwNDEsIDkyMjc2LCA0NDAxMSwgODczMCwgMTk0OTk3LCAxMjc4NTQsIDc4MzEyLCA3Mjc0LCAxMTkyNTAsIDkyOTg4LCAKLSAgICA3Mjc1LCA3ODMwNCwgOTM1LCAxMjcwNTIsIDY1ODQwLCAzNzcsIDQyMzI1LCAxMTY0OSwgMTI3MzYzLCA2NTI1MywgNjQzMDEsIAorICAgIDAsIDY1MDQxLCA5MjI3NiwgNDQwMTEsIDg3MzAsIDE5NDk5NywgMTAwNzExLCA3ODMxMiwgNzI3NCwgMTAwNzEyLCA5Mjk4OCwgCisgICAgNzI3NSwgNzgzMDQsIDkzNSwgMTAwNzE5LCA2NTg0MCwgMzc3LCA0MjMyNSwgMTE2NDksIDEwMDQ4OSwgNjUyNTMsIDY0MzAxLCAKICAgICAxMjg4MzUsIDc4MzA4LCA0MjM0MSwgNjUyODQsIDI0MTcsIDAsIDEyODg0LCAxOTkxMiwgNzkwNywgMTA3NjgsIDc4MzAwLCAKLSAgICAxOTQ5OTgsIDE5NDkxMiwgMTA2NzMsIDY4Nzc5LCA3MjQ4LCA2ODc4NiwgNDM1MTUsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAKLSAgICAxNjQ5LCA2Nzg3NiwgOTY0LCAxMjEwMzQsIDY2NDAzLCA3ODIyNiwgNjYzOTMsIDkyODk3LCA3MDM1NSwgNjY0MDksIDAsIAotICAgIDgzMzk4LCA0MzY4OSwgMTI3OTExLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgNjk5MDksIDQzNTQ3LCAKLSAgICA4MzAyOCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIDExNTY1LCA3OTQ5LCAwLCA2OTc1OSwgMTEzNDEsIDQyNDk0LCAKLSAgICAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDcwODEwLCA2NDc4LCA5ODk4LCA0MzY3MywgNjUyMzcsIDYyNDEsIAotICAgIDcxMDYsIDQ4NzcsIDEyOTEwOCwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgNDQwOSwgMCwgMCwgNjQ3OTgsIDcwODA1LCAKLSAgICA1MzQ2LCAxMjgyNDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCA2Njg1MSwgOTE3NiwgOTI4ODIsIDEyMTE1MywgNjUyMzEsIAotICAgIDY1ODg0LCAxMjY3OCwgNzg3NDgsIDExODkxMiwgMTEzNzgsIDQ0MDE4LCA0Mjc4NSwgMjQwOCwgMzI1MSwgMTEyMDMsIAotICAgIDk4MzE1OSwgNTY4NSwgMCwgMjQ2MSwgMTEwNTIsIDcwOTEsIDUzNDIsIDgzMTcsIDEyMTQ0NiwgNjgxNjMsIDUzNDAsIAotICAgIDEyMDU1OSwgMTI3ODIwLCA0MzYzNSwgNzM5MjgsIDEyNTAwMSwgNzEwNjksIDgzMzE4LCAwLCA4MzMxNywgNjU0ODIsIAotICAgIDEyMTM5NCwgOTE0MiwgMCwgNjg1MDYsIDAsIDEwOTM4LCAwLCAxMTg3OTAsIDExODIsIDI1NDIsIDQ4MjYsIDAsIDEyNjY0OCwgCi0gICAgNzI0MzgsIDUyOSwgODU4MCwgMTI3NDkwLCAwLCAxMDU4NiwgMTA3OTAsIDEwODM5LCA2NjAyMywgNDE1OTMsIDQxMjA3LCAKLSAgICA2ODc0NCwgOTgzODI1LCA0MTU5NCwgMjI1LCA0MjgyOCwgMCwgNjc4MjEsIDEyMTIwMCwgMTEzNzYsIDc0Mzc5LCAxMDcyMSwgCi0gICAgNjc2NjQsIDM0MzgsIDQyMDk3LCA2ODg2MiwgMTEwODQsIDMxOTQsIDQxODcwLCAyNjYsIDc4MzA1LCAxMjAxODMsIDQxODczLCAKLSAgICAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4MzksIDQxODcxLCA0MTMzOCwgMzczNCwgNzczNCwgCi0gICAgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAxMjc5MzcsIDk4MzIxNiwgNTE2MSwgMTA1NzIsIAotICAgIDkxNzU1OCwgNDI5MDYsIDAsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTIwNDA2LCA5ODM2NDMsIDEyNjYwNSwgMTExNjcsIAotICAgIDY5MjIwLCAxMjM1OSwgNDM0MjksIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDAsIDY4NjM1LCAxMDAzMSwgCi0gICAgMTEzNzY2LCA5ODcwLCA2NzcyNiwgODYyMCwgNjU4MjQsIDkxNzg1NSwgMTE5MzgsIDEyMTMwOCwgNzI4NSwgOTgzNTU3LCAKLSAgICAxMTk1NzcsIDQyNjc4LCA2Njg0MiwgNDM2NzcsIDQxNTgzLCAwLCA2NTc5OSwgOTI2MjMsIDAsIDEyOTE2OCwgMTI4MjY3LCAKLSAgICA3ODE2OSwgNjYxOTksIDAsIDM2MDksIDY4NjI0LCA3MDI4MCwgODMyLCAxMjA2OTMsIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCAKLSAgICA3ODQ3MSwgNjU3MDMsIDcxMjU2LCAxMjg1MTcsIDQyNzMyLCA1MTgwLCA5MjY5OSwgNDEzOTUsIDQxNTMwLCAxMTY5MSwgCi0gICAgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMTI3NzkwLCAxMjA1NDgsIDEyODY0NSwgNjM0OCwgMjQzLCAxMzIwMCwgMTIwMTYwLCAKLSAgICA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgNDM2ODcsIDAsIDkxNzg0NCwgNDI4NSwgCi0gICAgNjYxOTUsIDEyMTM3MCwgNDIzMCwgOTI4ODYsIDczNjcsIDQzMjU2LCA5MjM1MywgNzU2MywgNDIzNzYsIDk4MzI3MSwgCi0gICAgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAxMjg1NzgsIDAsIDc0ODU2LCA2NTg5MywgMTIyMDgsIDk5NzMsIDEyODM4NiwgCi0gICAgNjYzMTEsIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDAsIDcwMTU1LCA3ODYyMiwgNzAwNDcsIDEyNzI3MywgNjAyMiwgMTk1MDIzLCAKLSAgICAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIDE5NTAyMCwgMTI2ODIsIDEwMTYsIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIAotICAgIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDcwODU1LCAyMDc0LCAxMTM3NDIsIDc4MjgzLCAwLCAxMjQ1MywgNzA4NDcsIAotICAgIDk4MzgyNiwgNzQyNDEsIDEyNjU2OCwgNjc5MSwgMTI0NTcsIDc4MjY4LCAwLCA2NjI3OCwgMCwgNzgyNzksIDAsIDAsIAotICAgIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIDc4Mjc3LCAxMjQ0OSwgMTI4NTUyLCA3MTIyNCwgNDM4NjgsIAotICAgIDg3NTIsIDMxOTcsIDQ3MjAsIDEwMTY1LCAxMTM3NjUsIDExOTI0OSwgMTEzNzE1LCAxMTU5NSwgNjQ4OTMsIDExODkwNSwgCi0gICAgNDM0MzUsIDEyNDk2NCwgMTI1MDMwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAxMjA2NTAsIDU0OTQsIAotICAgIDQ2MzksIDEyNzU1OSwgMTk5MCwgMTExMDcsIDQ0OTgsIDc0MTY5LCA2NzczNiwgODMyNzMsIDEyNzI3MiwgNjk3MzQsIAotICAgIDI5NjAsIDczNzc5LCAwLCA4OTY5LCAxMjgxMTcsIDQzNDI0LCA3Mzk1OSwgMTI2NDY0LCAyOTUwLCAxMTk1NzksIDYyMTAsIAotICAgIDY1NzUzLCAzNzAsIDEyMTM2MCwgMCwgMCwgNDk1MywgMTk1MDA5LCAxMjEwNTQsIDExMzcwOCwgMCwgNjkyMzAsIDAsIAotICAgIDE5NTAxMCwgNjU2ODgsIDc0OTUxLCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgCi0gICAgMTA1NjYsIDEwMTQ0LCA2NjMzMywgODI1MiwgNzI5LCA2NjAxNiwgNzgyNTMsIDAsIDcxMzE3LCA2NDkyMywgMTIwNTcxLCAKLSAgICA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDAsIDkxNzc3NCwgNzQ5MTQsIDM3NjEsIDAsIAotICAgIDAsIDcwMDY4LCAxMjA0MDgsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgOTgzMjU2LCAxMjgzODksIDAsIDAsIDkwOCwgCi0gICAgMCwgODYxMSwgMTIxMzg0LCAwLCA3NDY0MiwgNDM2OTEsIDQxMTk3LCAwLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgNDE1ODYsIAotICAgIDEwNTI3LCA3MDQyNiwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgNzQ5MTcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIDc0ODgzLCAKLSAgICAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDAsIDAsIDc4NzY3LCA5ODMyNTksIDEyNzE2MywgNjgxOTMsIDM0NywgMCwgCi0gICAgOTE3NTQ0LCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNjgwNDYsIDEyMTQzLCAKLSAgICA2OTY1NywgNzg1MTIsIDEyODQ5MywgMTExNTMsIDQxODA0LCA3ODUyMywgMCwgNzg1MjUsIDAsIDEyODg1OSwgNDE1ODQsIAotICAgIDEwNjgxLCAwLCAxMjA5NzksIDczOTM4LCA3Mzc4MSwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCAKLSAgICA2NjM4NCwgOTUxOCwgNjYwOSwgMTA0MzQsIDcwODQ1LCAxMTMxOSwgMTA5NywgMTI4OTY0LCA5MTc1NjQsIDQxNzMwLCAKLSAgICAxMjkxODEsIDEyMTUwMSwgNzM4NDcsIDc0ODQ1LCA2NTE3MiwgNDE3MjgsIDQxNzIxLCAxOTQ3ODAsIDE5NDc2OSwgCi0gICAgMTIxNDk5LCA0MTIwMywgMTI3MDU2LCAxMzExMCwgNDE3MjYsIDE5NDg1NiwgNjcwNzcsIDEwMDAsIDY5NjUxLCAxMjc1MDksIAotICAgIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMTI1MDU5LCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIDQxMTM4LCA5ODM5NjgsIAotICAgIDY4MjEzLCA3ODAwMCwgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMTk5MDQsIDY3NjcxLCA1NTI0OCwgMTIyMzcsIAotICAgIDc4Nzg3LCA2NjMxNCwgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgNzkyNiwgMCwgCi0gICAgOTE3NjAxLCAxMjg4MzMsIDY0Mzk4LCA3MTEyNCwgMTE5OTcwLCAxMjMxMSwgMTE5MTgxLCA3ODc5NiwgNjg3NjgsIDc4Nzk0LCAKLSAgICA3ODc5NSwgNjg0MzQsIDc4NzkzLCA2NjY3MCwgMTEzNzk3LCAxMjg1NzksIDEyMjkwLCAxMjAxNjksIDEyOTA5MywgCi0gICAgMTE5ODczLCA0MjE0MiwgOTk2OCwgODIwNSwgMCwgNTEzMSwgMTEzNjk0LCA5NjI3LCA0MzY0NiwgNzg1NDIsIDc4NTM1LCAKLSAgICA5ODMyMTIsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIDExMzA4LCAKLSAgICAxMTk5OTUsIDk4MzQ5MywgMTEzNzAyLCA2NjgzNiwgNjUzMDUsIDY1MTAwLCA0MDMxLCA0Mjc5NCwgMTIwMDAzLCA3MDc1LCAKLSAgICA4MTU0LCAxMTk5ODUsIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAxMjAwMTQsIAotICAgIDEyMDAxNSwgNjA0MSwgMTIwNTIwLCA0MTg5OSwgOTgzMjg4LCA4MDAyLCAxMjgzNjcsIDQzNjQsIDczNzMyLCA5ODM1NzAsIAotICAgIDY0MzMyLCAxMjA5NzYsIDc4MTMsIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDY4MjQ2LCA3Mjc5LCAKLSAgICAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAxMjExNTIsIDEyMTM4MSwgOTY2MCwgOTE3OTI5LCAxMzAxMiwgNDU3MSwgCi0gICAgOTE3NTg4LCAwLCAxMTg5NDAsIDEyMDc4LCAyOTcwLCAxMjkxMjIsIDEwOTMzLCAwLCA3Nzg3MCwgMTIxMjQzLCA3Nzg0MSwgCi0gICAgMCwgNDE1OTksIDcwMTU5LCAxMjEzNDIsIDEyMDg4NSwgMTI5NTAsIDkyMTYwLCAzNDg2LCA5ODM5NzMsIDc4MzExLCA0MjM5LCAKLSAgICAxMjgwNzMsIDEyNzc5OSwgNjY1MTEsIDY4MDY2LCAyNjM3LCA2NDYyOSwgODQ2MCwgNjY4MzQsIDg0NzYsIDk4Mzk3NSwgMCwgCi0gICAgNjgzMTIsIDc4NDg5LCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIDEyMjg5LCAwLCA0MzE2LCAwLCAxMzExOSwgCi0gICAgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDkyNzc3LCA3Mzg2NCwgOTgzMjAzLCA0MTczNCwgODIwNiwgNzQwODEsIDkxNjMsIAotICAgIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgOTI1NDYsIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCAKLSAgICA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgNjY4NTMsIDczOTYzLCA0MTg1NSwgNDE4NjcsIAotICAgIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIDcxMTUsIDY2MDMwLCA3MzkzMiwgNTQ5OCwgCi0gICAgNjM4NzYsIDQxNTM2LCAwLCA2ODIwNCwgOTI1ODcsIDM0NTksIDg5OTcsIDE5NDcxOSwgOTI3MTQsIDAsIDEyNzc4MiwgCi0gICAgOTI1MTIsIDAsIDY2Mzc3LCA2OTc4MSwgMCwgMTI0OTcyLCA3ODUxMSwgMzE2MSwgMjk1LCA3MTI1NywgMCwgOTIyMjMsIAotICAgIDEyMTMyOCwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNTAxLCA2ODIxMCwgMzk3MSwgOTgzOTU5LCAKLSAgICA3MDA2MywgMjk1MiwgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgNjgwOTUsIDY2NywgMTIzMzIsIAotICAgIDYzODg3LCA2MDg2LCA0MTcyMiwgMCwgNTE3MiwgMCwgOTgzMjgwLCA0MTU5LCA5ODM1NjIsIDAsIDk4MTUsIDYzODg0LCAKLSAgICAxOTkzNCwgNjM4ODIsIDQxMTk4LCA4NTU1LCA2Mzg3OCwgNjM4NzcsIDQyNDYwLCA2MDUwLCA0MjcwOCwgNjM4ODEsIAotICAgIDYzODcyLCAxMjA5NDEsIDQyNDIxLCAxOTUwMzUsIDQxNzIzLCA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCAKLSAgICA0MTkxMywgNjM4NTIsIDY2ODY5LCAxMjg5NzEsIDQyMzQ4LCA3Mzg5MiwgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTAxLCAKLSAgICA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAxMjg2MzcsIDYzODQ2LCAyOTcyLCAxMjkzMiwgNzI2MiwgNjk5NjgsIDYzODQ5LCAKLSAgICA2Mzg0OCwgNjM4NDcsIDExMzc0OSwgNjU3MCwgODMwMiwgNzI1OSwgNjM4NDIsIDQxNzgsIDEwNzQ2LCA3MjUwLCAxMzIxNCwgCi0gICAgMTAwNDEsIDgxMDUsIDYzODkyLCAxMjc3ODAsIDY5OTY5LCAxMTA1LCA0MTgwLCAxMjc3ODYsIDEyMDk0LCA5NDk3LCAwLCAKLSAgICA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgOTk4NywgMCwgOTI3MzksIDE2NzgsIDEzMjc0LCA1NTIsIAotICAgIDExODgzNCwgNDQwMTAsIDEwNzg1LCAwLCAxMTE5MiwgNDU1NywgNzQ0NTksIDkxNTksIDEwMTcxLCAxMzEyNSwgNjM4NjAsIAotICAgIDU1NDAsIDYzODU4LCA2Mzg2NSwgMjgxLCAxMzI0MiwgNjM4NjIsIDc0MTU0LCAwLCA1NTM2LCA2NTU2OCwgOTU3NCwgMTM4OCwgCi0gICAgNzE5MDIsIDAsIDEwNzcsIDE5NTAwMCwgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCA5MTc3ODksIDAsIDQyNzczLCAKLSAgICAxMjEzMzEsIDAsIDAsIDExOTIyMCwgMTIwOTEyLCAzNjYzLCAxMjcwMjcsIDExMTIsIDcwMzM1LCA4Njg2LCAxMjY2MTEsIAotICAgIDUzMzQsIDY1MDgxLCA0MzI0OSwgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDEyNTAxNywgNjUwOSwgMCwgNTMyNywgNzg3NzYsIAotICAgIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCAKLSAgICA2Mzg2NiwgNzg2MjYsIDE5MTUsIDQ4NDYsIDY3NzU1LCA2NjM3MSwgMTE4OTg0LCA0MjEwNSwgMjk5MCwgMTIwMTI4LCA4MDUsIAotICAgIDY5MjM4LCA2NDQzOCwgMTIwNzAsIDg3NjAsIDExMTcsIDExMzc1MCwgMTIyMTIsIDEyMDEyMywgNjUxNzQsIDQyMzU3LCAKLSAgICA2MzgzNSwgNjM4MzQsIDk4Mzk0NywgNzgyNDAsIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDk4Mzg1MywgNzAxNzMsIDYzODMzLCAKLSAgICA2MDQyLCA2NjM2MCwgODA4MywgMTI4MTY2LCA5ODM3MzMsIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODM5MDQsIAotICAgIDUyMjcsIDkwNDcsIDYzODIyLCA3NDc5NywgNjA5MSwgMCwgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgMTE5NTc4LCA2MzgxMiwgCi0gICAgNjM4MTEsIDYzODEwLCA2MzgwOSwgMjI4OSwgNjM4MTUsIDYzODE0LCA2MzgxMywgNjA0NywgMTU5NywgMTIwMTQzLCA3ODAsIAotICAgIDIwNiwgNzAxMjYsIDQ5MzYsIDY1MTQ3LCA4MTY4LCA2MzkzMCwgMjA3NiwgMTA5MywgOTg4MiwgNjM5MzQsIDIwODIsIAotICAgIDYzOTMyLCA3NTA1MCwgNjM5MjksIDM1NDYsIDE2MDUsIDc3OTM0LCA5ODA2LCA0MzQ3MiwgNzc5MzMsIDg0MDAsIDExMzQzLCAKLSAgICAyMDg2LCAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgMCwgNDYxOCwgNDIyMDksIDExMTM3LCAxMzE2OSwgNTI5MCwgCi0gICAgMjA4OSwgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAxMDg0LCAxMDg1LCA2MzgyOSwgMTA4MywgMTAxMzEsIAotICAgIDcyODMsIDAsIDYzOTcwLCAxMjExNjUsIDEwOTIsIDQ3NTQsIDcyNzMsIDUyNTIsIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAKLSAgICAxMjg5MjAsIDc0MDgsIDExODA5LCA4MzIyMCwgMTIxMTgxLCAwLCAyOTY1LCA3MjU4LCA4ODA4LCA2NjU3MiwgMTA4OSwgCi0gICAgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMTExMDYsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCA3NDQ5NCwgCi0gICAgMTI0NjMsIDI5OTQsIDEyNTEzNiwgMTE4ODI3LCA2ODUyMiwgOTY2NCwgNzA4MzQsIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIAotICAgIDc0MzQzLCA2NzM3MCwgMCwgNjYwLCAxMDEyNywgNjY2LCA5MDIyLCA1NTMyLCA0MzY2NywgNTUzMywgMTI1ODAsIDc4NTA3LCAKLSAgICA2MTE4LCAyMjIsIDk3OSwgMzg4NCwgOTgzMzk0LCA3NDE1MSwgODMyMjcsIDY1MDIsIDk4Mzg1NSwgMTEwODUsIDEyMTI2MSwgCi0gICAgNjM5NTEsIDEyNDY1LCA5MTc4NjIsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCAKLSAgICA2Mzk0OCwgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIAotICAgIDk0MDc2LCAxMjEwODYsIDkyNDY0LCAxMjA0NDQsIDY5NzMwLCA4MDEsIDQzMTY1LCAxNjkwLCA2MzkxOSwgNjM5MTgsIAotICAgIDYzOTE3LCAxMzI3NywgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIDIwNTQsIDIzMzQsIDc4NTE1LCA2MzkxNiwgNTQ4MywgCi0gICAgNjM5MTQsIDY5NzM3LCA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAyNTM5LCAxMjAxMDIsIDQzOTgwLCA1NDg1LCAwLCAKLSAgICA0MjY5NywgOTA2MSwgNTUzNCwgMTA2NzIsIDQ1MDIsIDY4MDU3LCAyNTMsIDAsIDY4MjA4LCAxMjA0MzksIDkyMDMsIAotICAgIDc0MjMxLCAwLCAxMTUzMCwgNjg2MzQsIDY4NjY4LCAxMjEyNDIsIDExMTI3LCAwLCAxMDQ3NCwgNDM0MjYsIDEzMjU3LCAKLSAgICA0MjM1NCwgMTI4MDk5LCA5ODM2OTgsIDcwMDQ0LCAxOTUwNjUsIDAsIDg0MTMsIDY2ODQxLCAwLCA1NjkzLCA3MjcyLCAwLCAKLSAgICAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgMTk1MDYzLCAwLCAwLCAwLCAxMjY2MzksIDEyMDA5NywgMCwgOTQwNzgsIAotICAgIDY2ODQwLCAxMjcxNjUsIDY2NjA4LCAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIDc4MzQ3LCA3MjcwLCAwLCA2NjYwNiwgCi0gICAgNjYyOCwgMTA3NiwgNzQzMywgMTQzNiwgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIAotICAgIDYzOTA2LCAxNTk4LCA2MzkwNCwgNzExODcsIDcwMzkzLCA0MTcyOSwgNDQyMywgMTMwNywgMTEzNjkyLCAxMDUxNSwgCi0gICAgNDE1ODksIDEyODY5OCwgMTI4OTE4LCA2MjE4LCA5MjkxNywgMTQzMCwgMCwgMTI2NTEzLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCAKLSAgICA3NjE5LCAzMjU1LCAzNDkzLCA3NDAzMiwgMTE1NDksIDEwNzM1LCA0MTc0MywgNzM5MzcsIDY4MDEsIDk4MzYzMywgNDUxOCwgCi0gICAgMTA5OTAsIDY1MDczLCA1MTY3LCA0NDgxLCAzNzcxLCA2NzA5MywgMjcxMCwgOTgzNTkzLCA2NjI3NywgNDE3MjQsIDY3NzE2LCAKLSAgICA0MzA3MywgNDE2OTAsIDEyNDc5LCA5ODM2MzUsIDgzODAsIDEyMTA3MSwgNzE4NTIsIDcwMDQ2LCAxNjI4LCAxMjEyMjksIAotICAgIDEyODgxNywgMTI5MDY3LCA2NTI2MiwgNjMzMywgMTA3ODMsIDExMTcyLCAxMjE0NzMsIDYzODU1LCA3MDg0MCwgMTEzNjc5LCAKLSAgICAwLCA1MzM5LCA3NDMyMywgMTIwOTQ2LCAxMzAwNCwgNjY4NDMsIDQ0NTcsIDAsIDEyNzc1NiwgMTk0ODE4LCAxMjcxMTYsIAotICAgIDU2ODQsIDg2NzgsIDEwOTE0LCA0MzYzMiwgNTY4OSwgNjU4MDcsIDcwODE0LCA2ODQ2NCwgMTI2MzMsIDEyODcwLCA2OTcwNSwgCi0gICAgNjUxODMsIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAxMTkwNzYsIDc0MjUxLCAwLCAxMjA2NDcsIDEyODkzMCwgCi0gICAgNTAsIDEwNTU4LCA5ODcxLCA0MjYxMiwgNDM2NTUsIDc0NDAzLCA5ODM4MTgsIDc0Mjg0LCA2NjQ2OCwgNjY5MDUsIDEzMjU5LCAKLSAgICA0NDQ4LCAxMTkxNTAsIDEyMTQwNiwgODMzNDksIDcwMDQzLCAxMzIxLCAwLCAxMDY0MCwgMTE1MzksIDExNTEsIDEyMTE4NiwgCi0gICAgOTE3NjA3LCAxMjQ5NTgsIDEyNzA3OSwgNzExMDYsIDEyNzg1MiwgMCwgMCwgOTgzMDc1LCAxMjUwMSwgNjQ2MDQsIAotICAgIDEyODY1NywgMTE1MjcsIDExODg3MCwgODgxMiwgOTgzNzA2LCAxMTUzOCwgODY3MywgMTI2NTAsIDExMDIwLCAwLCA2NjQ2NywgCi0gICAgMjEwNSwgODA4NywgNzgxNjMsIDY5NjMyLCA5ODk0LCAxMjcxMzcsIDEyNzg1NiwgNjk5OTUsIDQ2MzYsIDU1MjYyLCAKLSAgICA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCA5ODM2OTUsIDExMzc4MCwgMCwgMTE4OTY4LCAxMjI3NywgMTIxMjM5LCAKLSAgICAxMTk5NSwgOTI1NTMsIDEyMTAwNiwgMTIxNTgsIDcwMTcwLCA4NzQxLCAxMDE5NywgNjg3ODAsIDkyNDI2LCAxMjEyODUsIAotICAgIDY1MzEsIDgzMDUxLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDkyOTM2LCA5ODM2NTAsIDE4NzMsIDEwODcsIDEyNDk2NiwgMCwgCi0gICAgNzQyODAsIDc4NTI3LCA2NjQzOSwgNDMyMTgsIDk4MzEyMywgMTk0NzE2LCA3MjM3LCAxMjUwNCwgNzExMTMsIDEyNjU1OSwgCi0gICAgMTI4NzQ4LCAxMjA4ODcsIDk0ODksIDAsIDcwODQzLCA0Mzg0LCA3NDIyMCwgNjM4NDUsIDIwNTgsIDY5NzQxLCAxMzI5NSwgCi0gICAgNDMxOTEsIDEyODAzMCwgMTI4NTcxLCAxMTU0LCAzODU3LCAxMjA1LCAwLCAwLCA2MDU1LCAxMjk1OCwgMTIwNzA2LCAKLSAgICA3NDE2OCwgMTI4Mzg4LCA3MDg0NiwgNDQyMSwgMTA1OTIsIDAsIDQ5NSwgNjY0MDAsIDQxNzEyLCA3OTgzLCA3MDgzMywgCi0gICAgOTM5OTcsIDk4MzMzMiwgNjM0NywgNzg3MTUsIDc2NTQsIDQxNzEwLCA0MTk2LCAwLCA0MzcsIDQxNzA5LCA3Mzc3MiwgCi0gICAgNzA4MzIsIDAsIDk0NjUsIDEzMjkwLCAxMTkxODAsIDQ5OTcsIDY0MzA2LCAxMjEzMDksIDAsIDQ5OTksIDE5NDY0MiwgCi0gICAgNjc0MDEsIDEyNjU4MiwgNDcxMSwgMTIwNzY5LCAxMjA2MDIsIDI3MzksIDAsIDgwNDQsIDc0MzEzLCAxOTQ2NDMsIDQxNzg5LCAKLSAgICAxMjgxNDIsIDEwODA5LCA2NjI3OSwgMCwgMCwgMTc3OSwgNjYwMCwgNjYwMSwgNDE1NDMsIDUzMjUsIDY0MiwgNjQxODcsIAotICAgIDEzMDU4LCAxMjA0NDksIDEyODc1LCA5ODM4MDQsIDkyMTg2LCAxMzIyOSwgNzE4NDUsIDEwNTc1LCA0MzM5OSwgMTk0NTc3LCAKLSAgICAwLCA0MTc5MSwgMTEwNCwgMCwgOTgzNzI1LCAxMDY1NSwgOTgzMzM0LCA5ODM1NjEsIDEyMDE2NCwgMCwgMTA4MiwgCi0gICAgMTIxMDI0LCA4NDI4LCA2NTY5LCAwLCAwLCA3ODUzNCwgNjk4NDksIDY3ODMsIDE5NDY3MSwgMTI5OTMsIDgwNDksIDQxNTQ4LCAKLSAgICA0NDAyMSwgNjQ1OCwgNjQ3MjgsIDEyODg4MiwgNDc2MSwgNjM4MjgsIDQ3NjYsIDY0NjIzLCAxMjczLCA0MzQwNywgCi0gICAgMTIwNjc3LCAxMTg4NzYsIDE5NTA0NSwgNjkxMiwgMTMxMywgNjMyMiwgMTA0ODMsIDEyODYyNywgNDE1NDUsIDEyNjQ2NSwgCi0gICAgOTI0NDksIDAsIDExMjE2LCAxMjEzMDcsIDAsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgMCwgODUwMywgNTEyMiwgNDE1MjcsIAotICAgIDcxOTEwLCA2NjMyMCwgNzAxNjEsIDc0OTA3LCAwLCAwLCA0MTUzNywgNjY0NTMsIDgzMDMsIDgyODIsIDExODE3LCA3Mzg1NywgCi0gICAgMTAwMDMsIDczODU5LCA2NTkwNCwgNzM2MywgMTY4NiwgMCwgNzAxMTUsIDExNDY3LCAzNjY0LCA2NTkyMSwgNjQyOTksIAotICAgIDEyNDkzOSwgMTI4NDYyLCAxMjgwMDEsIDQzMjQsIDEyNiwgNDIyNDYsIDc1MDMwLCA2OTk4NCwgNjc3MjUsIDY1OTI2LCAKLSAgICA3NzQ0LCA2ODg1OSwgNzQyNzcsIDY2MjgzLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAwLCA2NTYwMCwgCi0gICAgMTYzMywgMCwgMTI2NjE0LCA0NzYyLCAxMTAzLCA3MDgyNywgNzAxNTcsIDQ3NjUsIDk4MzQ5NCwgMTMwNzgsIDAsIDQ3NjAsIAotICAgIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIDExMDIsIDE5NDY1MiwgNDIyMzYsIDEyODg2NywgMTI3MDcyLCAxMTU0NiwgCi0gICAgNzQ3OTQsIDMzNywgMTIxMTk2LCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIDAsIDc1MDQ3LCA0NzA3LCA2ODIwNiwgCi0gICAgMTAxNDMsIDc4ODMsIDEyMTQ0NCwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgMTMwMTAsIDY5Nzk2LCA4MzA0LCA5Mjk4MiwgCi0gICAgMTk0Njg4LCAxMTk1NzUsIDIyOTMsIDcwMTk1LCA2NjY1NCwgMTI5MDc3LCA5MjY3NiwgMCwgMTMwMDgsIDEyMTE5NCwgCi0gICAgNDM4NSwgMTI4NzM2LCAxMzAxMSwgMTI1MDA0LCA5MjU2OSwgMTE5MTYxLCAxMzAwOSwgMTYwLCAyNjc3LCA3MDM4OCwgCi0gICAgOTgzMjgyLCA0MTc5MywgNjU3NjMsIDc0MjIxLCA3MDc5MCwgNDE3OTIsIDQyNzcwLCA5NDA1NCwgNjU3NjIsIDExODgyOSwgCi0gICAgNDM4MjEsIDU3MDksIDEyODI5NiwgNzEwNzYsIDQzODE2LCA5ODMwODcsIDk4Mzg5NiwgMTA3OSwgMzg2NywgNTcwOCwgMCwgCi0gICAgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCA1NzA1LCA4NzkxLCA0MDA1LCAxMjEwOTEsIDEwMjM3LCAxMDk5MSwgMTI4ODE2LCAKLSAgICA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIDEzMTcwLCAxMjU0MCwgMTI5MTc4LCA0MjYwNSwgMTIwNzY1LCAxMjY2MTcsIAotICAgIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCA2ODA1OCwgNzQ4NjcsIDY3NzMwLCAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCAKLSAgICA5MTc1OTEsIDkxNzU0MCwgOTE3NTkzLCAzMzQwLCA3NDAxNywgOTE3NTg2LCAxMjA5OTQsIDEyOTE0MSwgMTIwNTQxLCAKLSAgICAxMDYwNSwgMTMwOSwgNjM5NjYsIDEyMDc0MywgMTc1NCwgOTIyMjYsIDEzMjQ2LCA4NjQsIDk4MzE3MSwgMTE4OTI2LCAKLSAgICA4OTcyLCAxMTk5MTgsIDc4NDksIDEyMDA5MiwgODMxMzAsIDEzMjQwLCAxOTUwNjgsIDUxOTIsIDQzMzgsIDY3OTgyLCAKLSAgICAxMDk0OCwgNjY4MjUsIDEzMTk5LCA5MjU3NSwgMTIzNiwgMTMyMDgsIDEzMjYxLCAxMzE4OSwgMTMxODgsIDkzOTkzLCAKLSAgICA3MTg0NywgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIAotICAgIDYzNzgwLCA2Mzc3OSwgMTU4MywgMTE5OTIzLCAxMzI2MCwgNDU1MCwgMTIwNTk4LCA2NDIwNSwgMTI5MTA3LCA3MTA3MSwgCi0gICAgNDE1MjIsIDQxNTIzLCA2ODUyMywgOTgzNzcyLCAxMTg5MjMsIDExMzU0LCA5NDA3MSwgMCwgNDI3OTUsIDAsIDExOTE5NSwgCi0gICAgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIDQ0NzksIDExNzgsIDY1NTg2LCAKLSAgICA2ODMxMSwgNjY2ODEsIDExOTE5MywgNDYwMSwgMCwgMTI3ODg1LCA5ODM3NjUsIDY2ODI4LCAxMjg5NzIsIDEyNzgzOSwgCi0gICAgNzQ1ODAsIDY4MDksIDYzNzg2LCA2MDMxLCA2NzQwMiwgNjM3OTEsIDYzNzkwLCAxMTQ1LCA2Mzc4OCwgNzkxMCwgNjM3ODUsIAotICAgIDQzMTUzLCA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAwLCA2NDcxMCwgMTA3NDcsIDEyNSwgCi0gICAgMTIwODAzLCA2NDg5MCwgOTgzMDY0LCAxMjczNzYsIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgMTA3NCwgMTMyNTgsIDk1MzYsIAotICAgIDcxMDU2LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIDQzMTQ1LCAxMjIxNywgNjM3NTQsIDQxNTMyLCAxMzQ5LCA2Mzc1MCwgCi0gICAgNjM3NDksIDEyOTAyNSwgMCwgMTI3OTI4LCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgCi0gICAgNjM4MDUsIDYzODA0LCAxMTE0MCwgNjM4MDEsIDQxMDgyLCA4MTQwLCA2Mzc5OCwgNjI2MCwgMCwgMTI4MzkxLCA5NDA3NCwgCi0gICAgNjM3OTMsIDExOTg4LCAzODk4LCA5MjI0NiwgMTAyMDEsIDEyMjM4LCA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgCi0gICAgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCA5ODMzMzEsIDQyMjAzLCA3OTUwLCAzMTI0LCAKLSAgICA2Mzc3MSwgNDI3ODcsIDQzODYsIDExMTQ4LCA2OTczLCAyNzkzLCAxMjQ3NSwgMTI5MTgwLCA3NTA1NiwgNjM3NjksIDk1MzAsIAotICAgIDEyMTI0OCwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMTEzNjc0LCA2NDgwMywgCi0gICAgMCwgODc0MiwgMTk1MDI5LCAxMTA1MywgMTI4Nzk2LCA2Mzc0NCwgMTI4MTA3LCAxMjg5NDIsIDc1ODgsIDYzNzQ4LCAxNjkzLCAKLSAgICA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCA0MjA2MywgMTA5MCwgNjg4MDMsIDEyMDc3OCwgMTE2NjUsIDc0MTMzLCAKLSAgICA0NTU4LCA2NTY4NSwgOTUyMywgOTgzNDUzLCA2Mzg1NywgNzEyMTYsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIAotICAgIDYzNzczLCAxMzE5MSwgMTIxNzAsIDM1MDAsIDMxMzksIDY4MDcxLCAzMTcwLCAxMjQ4NSwgNDM4OTEsIDEwODcyLCA0Mzg5MiwgCi0gICAgMTMwMDYsIDQzOTMzLCAxMjAwNzQsIDAsIDk0MSwgMCwgMTI5MDc5LCAxMjA5NjcsIDY1NTQxLCAxMTA2MywgMCwgODIyOCwgCi0gICAgMCwgNDIwNjUsIDEyODM2OCwgNDM4ODksIDk0MDM5LCAxMjkyOTksIDkyNDU1LCA3Mzg2LCAwLCA2NDQ0NCwgNzAyOTUsIAotICAgIDExOTg2MywgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCA4MzQwOSwgMCwgMCwgMTAwMjUsIDY5OTE1LCAyOTE4LCA2NjgyMCwgCi0gICAgNjUzMDAsIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCA5ODM2MjAsIDEyNzgyOSwgNjUzOTMsIAotICAgIDEyMDU5MiwgNzQxMzgsIDgzNTA1LCA5Mjc1MSwgNzUwMTksIDc0MTM5LCA3ODc3NywgNjUzOTQsIDExNTQ4LCA1MjcwLCAKLSAgICA5ODMyMzgsIDY1Mzk2LCA3NDk5OCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDc1MDEyLCAwLCAxMDg4OCwgCi0gICAgMTIwOTM0LCA2NTI0MiwgMCwgMzMzMCwgMCwgMCwgNjgzNDAsIDAsIDAsIDcxMjAyLCAzMzA0LCA0Mjc1MywgOTI1ODgsIAotICAgIDcwMjk4LCA3NDY0MywgMTYyNywgMCwgMTI3NzY1LCAxOTQ3MzUsIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIDAsIAotICAgIDQzMDk0LCA3MDAyMywgNDM2NTAsIDk0MDM3LCA2ODMxNywgOTAzNSwgMTExNDEsIDkxNzk3NywgMTI4MDA1LCAwLCA5MjIwNywgCi0gICAgNjgxMjUsIDc0ODk4LCAxNjQsIDY4MzA5LCA5NDA2NywgOTQwMDAsIDY5NTgsIDAsIDQzMTE2LCA2NzcxOSwgNzAwMTksIAotICAgIDEzMjQ1LCAwLCA2ODgwOCwgNjY4MTgsIDAsIDcwMDMxLCAxMTA5OSwgMTI2NjYsIDEzMTc1LCAxMzIwNywgMTIwNDE0LCAKLSAgICA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCAwLCA2NTUwOSwgMTI5MTkyLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIDMxODAsIAotICAgIDEyNTEwMiwgNjM4MDgsIDkwNTQsIDk3MSwgMTMwNjIsIDcxMDkwLCAwLCA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgCi0gICAgOTgzMzIxLCA3ODE0NiwgOTI2MTEsIDAsIDcwMjA0LCAwLCAxMDA0NSwgMTI4ODIsIDEzMjc1LCAyMzAzLCAxMTA1NywgCi0gICAgOTE3OTc2LCAxMzI3NiwgMTI1MTMzLCA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAxMjY0NzksIDEyNzkwNCwgMTIxMjAzLCAKLSAgICAxMjIyOSwgMTE2ODAsIDkyOTU2LCA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAxOTUwODksIDAsIDEwNDc2LCAzODU4LCAKLSAgICA2NDE3NSwgMzkzMiwgNjQ5NTgsIDEyMDQzMiwgOTgzNjc4LCA3Mzk4OSwgNjgxOTIsIDAsIDY5ODQ3LCAzNjksIDc0OTA4LCAKLSAgICA0MTc4NCwgMTE5MTc1LCA2NDE2MywgNzc5OTcsIDAsIDkyNjQ1LCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIAotICAgIDEyODYzMSwgNDE3ODEsIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIDkyNjA4LCAwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCAKLSAgICA1Nzg4LCA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAwLCA0Mzg4LCAxOTQ5MTMsIDc0NiwgCi0gICAgMTE4ODI2LCA3NDc4MywgMCwgMTIwMTgsIDY1Mjk0LCAxMjc1NDUsIDE5NDkyNSwgNjg4MzUsIDk4MzQ4OCwgNDQyMiwgCi0gICAgNDcwOCwgMzc5OSwgNzQyOTIsIDExOTM1NywgMTIxMTQ2LCA3NDQzMCwgMCwgMTE3MDAsIDQzNzQsIDEyMDM3NywgMTIxMTUxLCAKLSAgICAxMzY0LCAwLCA4MDM4LCAxMjA4ODMsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCA3MDQyNSwgNjczNSwgNzM5NzksIDEzMTc0LCAKKyAgICAxOTQ5OTgsIDEwMDkyOSwgMTA2NzMsIDY4Nzc5LCA3MjQ4LCA2ODc4NiwgNDM1MTUsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAKKyAgICAxNjQ5LCA2Nzg3NiwgOTY0LCAxMDA2OTYsIDY2NDAzLCA3ODIyNiwgNjYzOTMsIDkyODk3LCA3MDM1NSwgNjY0MDksIAorICAgIDk4MzQ4NCwgODMzOTgsIDQzNjg5LCAxMDA3MDEsIDEzMTQyLCA3ODgxMiwgNDI0MTUsIDY2NTc1LCA0NTQyLCA2OTkwOSwgCisgICAgNDM1NDcsIDgzMDI4LCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgMTE1NjUsIDc5NDksIDEyNzU0NSwgNjk3NTksIAorICAgIDExMzQxLCA0MjQ5NCwgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA3MDgxMCwgNjQ3OCwgOTg5OCwgCisgICAgNDEwMzksIDY1MjM3LCA2MjQxLCA3MTA2LCA0ODc3LCAxMDA2ODEsIDYyMzgsIDEwMDY4MywgMTA1NDgsIDEwMDY4NSwgCisgICAgNDQwOSwgMTAwNjg3LCAxMDA2OTAsIDY0Nzk4LCA3MDgwNSwgNTM0NiwgMTI4MjQwLCA5NDA0NywgNjIzNywgNDg3NCwgCisgICAgNjY4NTEsIDkxNzYsIDkyODgyLCAxMjExNTMsIDY1MjMxLCA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCAKKyAgICA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDExMjAzLCA5ODMxNTksIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCAKKyAgICA1MzQyLCA4MzE3LCAxMjE0NDYsIDY4MTYzLCA1MzQwLCAxMjA1NTksIDEyNTIwNiwgNDM2MzUsIDczOTI4LCAxMjUwMDEsIAorICAgIDcxMDY5LCA4MzMxOCwgMCwgODMzMTcsIDY1NDgyLCAxMjEzOTQsIDkxNDIsIDk4MzE3NywgNjg1MDYsIDE5NTA4NCwgCisgICAgMTA5MzgsIDAsIDExODc5MCwgMTE4MiwgMjU0MiwgNDgyNiwgMCwgMTI2NjQ4LCA3MjQzOCwgNTI5LCA4NTgwLCA2Njc2OSwgCisgICAgMTI1MDU4LCAxMDU4NiwgMTA3OTAsIDEwODM5LCA2NjAyMywgNDE1OTMsIDQxMjA3LCA2ODc0NCwgMTIwNjIwLCA0MTU5NCwgCisgICAgMjI1LCA0MjgyOCwgOTgzNjMyLCA2NzgyMSwgMTIxMjAwLCAxMTM3NiwgNzI3MjksIDEwNzIxLCA2NzY2NCwgMzQzOCwgCisgICAgNDIwOTcsIDY4ODYyLCAxMTA4NCwgMzE5NCwgNDE4NzAsIDI2NiwgNzgzMDUsIDEyMDE4MywgNDE4NzMsIDcxMjcxLCAKKyAgICAxMTMyNCwgMTIwNTMxLCA5ODM5NzYsIDg0MjAsIDY0OTE4LCAxMjg4MzksIDQxODcxLCA0MTMzOCwgMzczNCwgNzczNCwgCisgICAgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAxMDA2NzIsIDEwMDY3NSwgNTE2MSwgMTA1NzIsIAorICAgIDEwMDY3NiwgNDI5MDYsIDEwMDY3OCwgNjQzNDksIDcyODcsIDQyMTYyLCAxMDA2NjAsIDk4MzYxMywgMTI2NjA1LCAxMTE2NywgCisgICAgNjkyMjAsIDEyMzU5LCA0MzQyOSwgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMTk0Njk1LCA2ODYzNSwgCisgICAgMTAwMzEsIDExMzc2NiwgOTg3MCwgNjc3MjYsIDg2MjAsIDY1ODI0LCAxMDA2NTEsIDExOTM4LCAxMDA2NTMsIDcyODUsIAorICAgIDEwMDY1NSwgMTAwNjU0LCA0MjY3OCwgNjY4NDIsIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCA3MDY5MywgCisgICAgMTI4MTMxLCAxMjgyNjcsIDc4MTY5LCA2NjE5OSwgMTAwNjY0LCAzNjA5LCA2ODYyNCwgNzAyODAsIDgzMiwgMTAwNjY3LCAKKyAgICAxMjA3NzAsIDc4NDczLCA2NjAwNywgNzg0NzEsIDY1NzAzLCA3MTI1NiwgMTI4NTE3LCA0MjczMiwgNTE4MCwgOTI2OTksIAorICAgIDQxMzk1LCA0MTUzMCwgMTE2OTEsIDY0NzczLCA5MjIxNCwgNzQwMDIsIDEyNzc5MCwgMTIwNTQ4LCAxMjg0NzgsIDYzNDgsIAorICAgIDI0MywgMTMyMDAsIDEyMDE2MCwgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIDQzNjg3LCAKKyAgICAxMjA4ODAsIDkxNzg0NCwgNDI4NSwgNjYxOTUsIDEyMTM3MCwgNDIzMCwgOTI4ODYsIDczNjcsIDQzMjU2LCA5MjM1MywgCisgICAgNzU2MywgNDIzNzYsIDk4MzI3MSwgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAxMjg1NzgsIDAsIDc0ODU2LCA2NTg5MywgCisgICAgMTIyMDgsIDk5NzMsIDEyODM4NiwgNjYzMTEsIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDEyNTIwNSwgNzAxNTUsIDc4NjIyLCAKKyAgICA3MDA0NywgMTI3MjczLCA2MDIyLCAxMDA0ODUsIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgMTk1MDIwLCAxMjY4MiwgMTAxNiwgCisgICAgNDExMDcsIDAsIDQxMTIxLCAzODg1LCA5MiwgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgNzA4NTUsIDIwNzQsIDExMzc0MiwgCisgICAgNzgyODMsIDEyODczNywgMTI0NTMsIDcwODQ3LCA5ODM4MjYsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCA3ODI2OCwgCisgICAgMCwgNjYyNzgsIDk4MzYzMywgNzgyNzksIDAsIDEyNzkzMiwgOTIzNTgsIDY2NjM3LCA3OTk1LCA4NzU5LCA0MzQyMSwgCisgICAgNzgyNzcsIDEyNDQ5LCAxMjI5MDgsIDcxMjI0LCA0Mzg2OCwgODc1MiwgMzE5NywgNDcyMCwgMTAxNjUsIDExMzc2NSwgCisgICAgMTE5MjQ5LCAxMTM3MTUsIDExNTk1LCA2NDg5MywgMTE4OTA1LCA0MzQzNSwgODMzMDksIDEyMTQxNCwgNDk5MywgMTI5MzYwLCAKKyAgICA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAxMjA2NTAsIDU0OTQsIDQ2MzksIDcwNjY4LCAxOTkwLCAxMTEwNywgNDQ5OCwgCisgICAgNzQxNjksIDY3NzM2LCA3MDY1OCwgMTI3MjcyLCA2OTczNCwgMjk2MCwgNzM3NzksIDE5NTA3NiwgODk2OSwgMTI4MTE3LCAKKyAgICA0MzQyNCwgNzM5NTksIDEyNjQ2NCwgMjk1MCwgMTE5NTc5LCA2MjEwLCA2NTc1MywgMzcwLCAxMjEzNjAsIDk4MzY1NCwgCisgICAgMTIwOTI4LCA0OTUzLCAxOTUwMDksIDEyMTA1NCwgMTEzNzA4LCAxMjI4ODgsIDY5MjMwLCAwLCAxMjI5MDAsIDY1Njg4LCAKKyAgICA3NDk1MSwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIDEwNTY2LCAxMDE0NCwgNjYzMzMsIAorICAgIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCA3MTMxNywgNjQ5MjMsIDY2NzQ0LCA0MzY2OSwgOTAzMiwgNzgyNjMsIAorICAgIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDk4Mzg3MywgOTE3Nzc0LCA3NDkxNCwgMzc2MSwgMCwgMCwgNzAwNjgsIAorICAgIDEyMDQwOCwgMTI5MTIsIDExOTAxMiwgMzg1MCwgMTI4MTkxLCAxMjcyODIsIDEyODM4OSwgMCwgOTgzMzQyLCA5MDgsIDAsIAorICAgIDg2MTEsIDEwMTA3NCwgOTgzNjk5LCA3NDY0MiwgNDM2OTEsIDQxMTk3LCAxMjg4MTIsIDg5NzgsIDEyMDU0MCwgMTE5MTM1LCAKKyAgICA0MTU4NiwgMTA1MjcsIDcwNDI2LCA5MTc4NDgsIDM4NDgsIDc4NzM5LCA3NDkxNywgMTI3NTM2LCA2NTI0MSwgNTMzNiwgCisgICAgNzQ4ODMsIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMTI4Mzk1LCAwLCA3ODc2NywgMTE5NjI2LCAxMDA5MjIsIDY4MTkzLCAKKyAgICAzNDcsIDAsIDkxNzU0NCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzI3OTIsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDY4MDQ2LCAKKyAgICAxMjE0MywgNjk2NTcsIDc4NTEyLCAxMjg0OTMsIDExMTUzLCA0MTgwNCwgNzg1MjMsIDExOTE2OCwgNzg1MjUsIDAsIAorICAgIDEyODg1OSwgNDE1ODQsIDEwNjgxLCAwLCAxMjAwOTQsIDczOTM4LCA3Mzc4MSwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgCisgICAgMTI1MDM4LCA2NjMwNiwgNjQ3MTUsIDY2Mzg0LCA5NTE4LCA2NjA5LCAxMDQzNCwgNzA4NDUsIDExMzE5LCAxMDk3LCAKKyAgICAxMjg5NjQsIDkxNzU2NCwgNDE3MzAsIDEyOTE4MSwgOTI1MTIsIDczODQ3LCA3NDg0NSwgNjUxNzIsIDQxNzI4LCA0MTcyMSwgCisgICAgMTk0NzgwLCAxOTQ3NjksIDEyMTQ5OSwgNDEyMDMsIDEyNzA1NiwgMTMxMTAsIDQxNzI2LCAxMjkwNzIsIDY3MDc3LCAxMDAwLCAKKyAgICA2OTY1MSwgODM1MjAsIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMTI1MDU5LCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIAorICAgIDQxMTM4LCA5ODM5NjgsIDY4MjEzLCA3ODAwMCwgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMTk5MDQsIDY3NjcxLCAKKyAgICA1NTI0OCwgMTIyMzcsIDc4Nzg3LCA2NjMxNCwgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgCisgICAgNzkyNiwgMCwgOTE3NjAxLCAxMjg4MzMsIDY0Mzk4LCA3MTEyNCwgNzEyNzQsIDEyMzExLCAxMTkxODEsIDc4Nzk2LCAKKyAgICA2ODc2OCwgNzg3OTQsIDc4Nzk1LCA2ODQzNCwgNzg3OTMsIDY2NjcwLCAxMTM3OTcsIDEyODU3OSwgMTIyOTAsIDEyMDE2OSwgCisgICAgMTI4MjMzLCAxMTk4NzMsIDM5MzcsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDExMzY5NCwgOTYyNywgNDM2NDYsIDc4NTQyLCAKKyAgICA3ODUzNSwgOTgzMjEyLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAKKyAgICAxMTMwOCwgMTE5OTk1LCA5ODM0OTMsIDExMzcwMiwgNjY4MzYsIDY1MzA1LCA2NTEwMCwgNDAzMSwgNDI3OTQsIDEyMDAwMywgCisgICAgNzA3NSwgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgCisgICAgMTIwMDE0LCAxMjAwMTUsIDYwNDEsIDEyMDUyMCwgNDE4OTksIDk4MzI4NywgODAwMiwgMTI4MzY3LCA0MzY0LCA3MzczMiwgCisgICAgOTgzNTcwLCA2NDMzMiwgMTIwOTc2LCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCAKKyAgICA2ODI0NiwgNzI3OSwgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMTAxMDgwLCAxMjEzODEsIDk2NjAsIDkxNzkyOSwgCisgICAgMTMwMTIsIDQ1NzEsIDEyODMzMSwgMCwgMTE4OTQwLCAxMjA3OCwgMjk3MCwgMTI5MTIyLCAxMDkzMywgMCwgNzc4NzAsIAorICAgIDEyMTI0MywgNzc4NDEsIDEwMDM1OCwgNDE1OTksIDcwMTU5LCAxMjEzNDIsIDEwMDcwNiwgMTI5NTAsIDkyMTYwLCAzNDg2LCAKKyAgICA5ODM5NzMsIDY2NzgyLCA0MjM5LCAxMjgwNzMsIDEyNjU5MiwgNjY1MTEsIDY4MDY2LCAyNjM3LCA2NDYyOSwgODQ2MCwgCisgICAgNjY4MzQsIDg0NzYsIDk4Mzk3NSwgOTE3OTg5LCA2ODMxMiwgNzg0ODksIDY1NjczLCAxMDE5LCA3ODQ5NSwgNDE0OCwgMCwgCisgICAgMTIyODksIDAsIDQzMTYsIDAsIDEzMTE5LCA4NDg4LCA1NDEyLCA2NjI0MywgOTkzNSwgOTI3NzcsIDczODY0LCA5ODMyMDMsIAorICAgIDQxNzM0LCA4MjA2LCA3NDA4MSwgOTE2MywgMzI4NiwgOTA3MiwgNTg2NywgMTMzMDIsIDc2MjIsIDcxMjAsIDQxNzM2LCAKKyAgICA5MjU0NiwgNDE3MzEsIDAsIDc0MDAsIDU0MTYsIDY4NjYzLCAxMTg5MjQsIDEwODE3LCAwLCA0MTUzOSwgMTI3Mjg0LCAKKyAgICA2Njg1MywgNzM5NjMsIDQxODU1LCA0MTg2NywgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgCisgICAgNzExNSwgNjYwMzAsIDczOTMyLCA1NDk4LCA2Mzg3NiwgNDE1MzYsIDkxNzU4NywgNjY3MzgsIDkyNTg3LCAzNDU5LCA4OTk3LCAKKyAgICAxOTQ3MTksIDkyNzE0LCAxMjcyMzgsIDEzMDYwLCA3ODMwMSwgMCwgNjYzNzcsIDY5NzgxLCAxMjAxNTksIDEyNDk3MiwgCisgICAgNzg1MTEsIDMxNjEsIDI5NSwgNzEyNTcsIDAsIDkyMjIzLCAxMjEzMjgsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIAorICAgIDYzOTAyLCA0MzUwMSwgNjgyMTAsIDM5NzEsIDk4Mzk1OSwgNzAwNjMsIDI5NTIsIDc4NzY1LCAxMTAzOCwgMTA5MDEsIAorICAgIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDY4MDk1LCA2NjcsIDEyMzMyLCA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIAorICAgIDk4MzI4MCwgNDE1OSwgOTgzNTYyLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgNjM4NzgsIAorICAgIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMTIwOTQxLCA0MjQyMSwgMTI5MzM1LCA0MTcyMywgCisgICAgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgNDE5MTMsIDYzODUyLCA2Njg2OSwgMTI4OTcxLCA0MjM0OCwgCisgICAgNzM4OTIsIDY3NTIsIDQ0NiwgNDE5MTEsIDEyNzkwMSwgNjM4NTEsIDYzODUwLCA0MTkxMCwgMTI4NjM3LCA2Mzg0NiwgCisgICAgMjk3MiwgMTI5MzIsIDcyNjIsIDY5OTY4LCA2Mzg0OSwgNDEzODQsIDYzODQ3LCAxMTM3NDksIDY1NzAsIDgzMDIsIDcyNTksIAorICAgIDYzODQyLCA0MTc4LCAxMDc0NiwgNzI1MCwgMTMyMTQsIDEwMDQxLCA4MTA1LCA2Mzg5MiwgMTI3NzgwLCA2OTk2OSwgMTEwNSwgCisgICAgNDE4MCwgMTI3Nzg2LCAxMjA5NCwgOTQ5NywgMTI4Mzk2LCA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgCisgICAgOTk4NywgMCwgOTI3MzksIDE2NzgsIDEzMjc0LCA1NTIsIDExODgzNCwgNDQwMTAsIDEwNzg1LCAwLCAxMTE5MiwgNDU1NywgCisgICAgNzQ0NTksIDkxNTksIDEwMTcxLCAxMzEyNSwgNjM4NjAsIDU1NDAsIDYzODU4LCA2Mzg2NSwgMjgxLCAxMzI0MiwgNjM4NjIsIAorICAgIDc0MTU0LCAxMjgzODcsIDU1MzYsIDY1NTY4LCA5NTc0LCAxMzg4LCA3MTkwMiwgOTgzOTE1LCAxMDc3LCAxOTUwMDAsIAorICAgIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgOTE3NTQ5LCA5MTc3ODksIDAsIDQyNzczLCAxMjEzMzEsIDAsIDAsIDExOTIyMCwgCisgICAgMTIwOTEyLCAzNjYzLCAxMjcwMjcsIDExMTIsIDcwMzM1LCA4Njg2LCAxMjY2MTEsIDUzMzQsIDY1MDgxLCA0MzI0OSwgCisgICAgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDkyNTE1LCA2NTA5LCAxMjAxMTcsIDUzMjcsIDc4Nzc2LCAxOTkwNywgNjM4NjksIAorICAgIDM0NzgsIDc1ODMsIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDQzNzQ2LCA3Mzc0OCwgNjM4NjYsIDc4NjI2LCAKKyAgICAxOTE1LCA0ODQ2LCA2Nzc1NSwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCA2OTIzOCwgNjQ0MzgsIAorICAgIDEyMDcwLCA4NzYwLCAxMTE3LCAxMTM3NTAsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgNjM4MzUsIDYzODM0LCAKKyAgICA5ODM1OTIsIDc4MjQwLCAxMjIyNSwgNjM4MzgsIDYzODM3LCAxMDA0NTgsIDcwMTczLCA2MzgzMywgNjA0MiwgNjYzNjAsIAorICAgIDgwODMsIDEyODE2NiwgOTgzNzMzLCA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzMzMyLCA1MjI3LCA5MDQ3LCAKKyAgICA2MzgyMiwgNzQ3OTcsIDYwOTEsIDk4MzMyMiwgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgMTE5NTc4LCA2MzgxMiwgNjM4MTEsIAorICAgIDYzODEwLCA2MzgwOSwgMjI4OSwgNjM4MTUsIDYzODE0LCA2MzgxMywgNjA0NywgMTU5NywgNzg4NzYsIDc4MCwgMjA2LCAKKyAgICA3MDEyNiwgNDkzNiwgNjUxNDcsIDgxNjgsIDYzOTMwLCAyMDc2LCAxMDkzLCA5ODgyLCA2MzkzNCwgMjA4MiwgNjM5MzIsIAorICAgIDc1MDUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgNjY4MTEsIDk4MDYsIDQzNDcyLCA3NzkzMywgODQwMCwgMTEzNDMsIDIwODYsIAorICAgIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCA3Mjc5MSwgNDYxOCwgNDIyMDksIDExMTM3LCAxMzE2OSwgNTI5MCwgMjA4OSwgCisgICAgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAxMDg0LCAxMDg1LCA2MzgyOSwgMTA4MywgMTAxMzEsIDcyODMsIAorICAgIDEyMDEwOSwgNjM5NzAsIDEyMTE2NSwgMTA5MiwgNDc1NCwgNzI3MywgNTI1MiwgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIAorICAgIDEyODkyMCwgNzQwOCwgMTE4MDksIDgzMjIwLCAxMjExODEsIDE5NDcxNiwgMjk2NSwgNzI1OCwgODgwOCwgNjY1NzIsIAorICAgIDEwODksIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDExMTA2LCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgOTgzODQ5LCAKKyAgICA3NDQ5NCwgMTI0NjMsIDI5OTQsIDEyNTEzNiwgMTE4ODI3LCA2ODUyMiwgOTY2NCwgNzA4MzQsIDc3OTQwLCA2Nzg5MiwgCisgICAgNzc5MzgsIDc0MzQzLCA2NzM3MCwgNzI3MTQsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIAorICAgIDEyNTgwLCA3ODUwNywgNjExOCwgMjIyLCA5NzksIDM4ODQsIDk4MzMxOSwgNzI3MDYsIDgzMjI3LCA2NTAyLCA5ODM3NjIsIAorICAgIDExMDg1LCAxMjEyNjEsIDYzOTUxLCAxMjQ2NSwgOTE3ODYyLCAwLCAxMjg3ODIsIDYzOTQ2LCAxNzA3LCA2MzkyNCwgCisgICAgMTI0NjEsIDYzOTUwLCA2Mzg5NywgNjM5NDgsIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgNjM5NDMsIDYzOTQyLCA2NDY4NSwgCisgICAgNjM4OTUsIDY1ODM4LCAyMjc2LCA3Nzc2LCA5NDA3NiwgMTIxMDg2LCA5MjQ2NCwgNjY3OTIsIDY5NzMwLCA4MDEsIDQzMTY1LCAKKyAgICAxNjkwLCA2MzkxOSwgNjM5MTgsIDYzOTE3LCAxMzI3NywgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIDIwNTQsIDIzMzQsIAorICAgIDY2ODAwLCA2MzkxNiwgNTQ4MywgNjM5MTQsIDY5NzM3LCA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAyNTM5LCAKKyAgICAxMjAxMDIsIDQzOTgwLCA1NDg1LCAxOTQ4NzMsIDQyNjk3LCA5MDYxLCA1NTM0LCAxMDY3MiwgNDUwMiwgNjgwNTcsIDI1MywgCisgICAgMCwgNjgyMDgsIDEyMDQzOSwgOTIwMywgNzQyMzEsIDEwMDcwOCwgMTE1MzAsIDY4NjM0LCA2ODY2OCwgMTIxMjQyLCAKKyAgICAxMTEyNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgNDIzNTQsIDEyODA5OSwgMTIwMTA2LCA3MDA0NCwgMTI3MTEwLCAKKyAgICA2NjgwOCwgODQxMywgNjY4NDEsIDAsIDU2OTMsIDcyNzIsIDEyOTMwNywgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzQzNTAsIAorICAgIDE5NTA2MywgMCwgMCwgMCwgMTEzNjY1LCAxMjAwOTcsIDEyNzk2MCwgOTQwNzgsIDY2ODQwLCAxMjcxNjUsIDY2NjA4LCAKKyAgICAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIDc4MzQ3LCA3MjcwLCAwLCA2NjYwNiwgNjYyOCwgMTA3NiwgNzQzMywgMTQzNiwgCisgICAgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIDYzOTA2LCAxNTk4LCA2MzkwNCwgCisgICAgNzExODcsIDcwMzkzLCA0MTcyOSwgNDQyMywgMTMwNywgMTEzNjkyLCAxMDUxNSwgNDE1ODksIDEyODY5OCwgMTI4OTE4LCAKKyAgICA2MjE4LCA5MjkxNywgMTQzMCwgMCwgMTAwNzAwLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCA3NjE5LCAzMjU1LCAzNDkzLCAKKyAgICA3NDAzMiwgMTE1NDksIDEwNzM1LCA0MTc0MywgNzM5MzcsIDY4MDEsIDEwMDc0MywgNDUxOCwgMTA5OTAsIDY1MDczLCAKKyAgICA1MTY3LCA0NDgxLCAzNzcxLCA2NzA5MywgMjcxMCwgOTE3ODQ3LCA2NjI3NywgNDE3MjQsIDY3NzE2LCA0MzA3MywgNDE2OTAsIAorICAgIDEyNDc5LCA5ODM2MzUsIDgzODAsIDEyMTA3MSwgNzE4NTIsIDcwMDQ2LCAxNjI4LCAxMjEyMjksIDEyODgxNywgMTI5MDY3LCAKKyAgICA2NTI2MiwgNjMzMywgMTA3ODMsIDExMTcyLCAxMjE0NzMsIDYzODU1LCA3MDg0MCwgMTEzNjc5LCAwLCA1MzM5LCA3NDMyMywgCisgICAgMTIwOTQ2LCAxMzAwNCwgNjY4NDMsIDQ0NTcsIDEwMDkwMSwgMTI3NzU2LCAxOTQ4MTgsIDEyNzExNiwgNTY4NCwgODY3OCwgCisgICAgMTA5MTQsIDQzNjMyLCA1Njg5LCA2NTgwNywgNzA4MTQsIDY4NDY0LCAxMjYzMywgMTI4NzAsIDY5NzA1LCA2NTE4MywgCisgICAgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDExOTA3NiwgNzQyNTEsIDEyODkwOCwgMTIwNjQ3LCAxMjg5MzAsIDUwLCAKKyAgICAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCA3NDQwMywgOTgzODE4LCA3NDI4NCwgNjY0NjgsIDY2OTA1LCAxMzI1OSwgCisgICAgNDQ0OCwgMTE5MTUwLCAxMjE0MDYsIDgzMzQ5LCA3MDA0MywgMTMyMSwgMTAwOTg3LCAxMDY0MCwgMTE1MzksIDExNTEsIAorICAgIDEyMTE4NiwgOTE3NjA3LCAxMjQ5NTgsIDEyNzA3OSwgNzExMDYsIDExODk0OSwgMCwgOTgzOTIwLCA5ODMwNzUsIDEyNTAxLCAKKyAgICA2NDYwNCwgMTI4NjU3LCAxMTUyNywgMTE4ODcwLCA4ODEyLCAxMjUxNDEsIDExNTM4LCA4NjczLCAxMjY1MCwgMTEwMjAsIDAsIAorICAgIDY2NDY3LCAyMTA1LCA4MDg3LCA3MjcxMiwgNjk2MzIsIDk4OTQsIDEyNzEzNywgMTI3ODU2LCA2OTk5NSwgNDYzNiwgCisgICAgNTUyNjIsIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDk4MzY5NSwgMTEzNzgwLCA5ODM0NTYsIDExODk2OCwgCisgICAgMTIyNzcsIDEyMTIzOSwgMTE5OTUsIDkyNTUzLCAxMjA2NzUsIDEyMTU4LCA3MDE3MCwgODc0MSwgMTAxOTcsIDY4NzgwLCAKKyAgICA5MjQyNiwgMTE5NjEwLCA2NTMxLCA4MzA1MSwgMTI3ODQ2LCA0NzMsIDQzNDE1LCA5MjkzNiwgMTI0OTQ5LCAxODczLCAKKyAgICAxMDg3LCAxMjQ5NjYsIDcxMjc1LCA3NDI4MCwgNzg1MjcsIDY2NDM5LCA0MzIxOCwgOTgzMTIzLCAxMjc3OTIsIDcyMzcsIAorICAgIDEyNTA0LCA3MTExMywgMTI2NTU5LCAxMjg3NDgsIDEyMDg4NywgOTQ4OSwgMTIwMDY5LCA3MDg0MywgNDM4NCwgNzQyMjAsIAorICAgIDYzODQ1LCAyMDU4LCA2OTc0MSwgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDEyODU3MSwgMTE1NCwgMzg1NywgMTIwNSwgCisgICAgMTI4OTU1LCAwLCA2MDU1LCAxMjk1OCwgMTIwNzA2LCA3NDE2OCwgMTI4Mzg4LCA3MDg0NiwgNDQyMSwgMTA1OTIsIDAsIAorICAgIDQ5NSwgNjY0MDAsIDQxNzEyLCA3OTgzLCA3MDgzMywgOTM5OTcsIDcwNjk2LCA2MzQ3LCA3ODcxNSwgNzY1NCwgNDE3MTAsIAorICAgIDQxOTYsIDE5NDcwNCwgNDM3LCA0MTcwOSwgNzM3NzIsIDcwODMyLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCAKKyAgICA2NDMwNiwgMTIxMzA5LCAwLCA0OTk5LCAxOTQ2NDIsIDY3NDAxLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMTAwNDY5LCAKKyAgICAyNzM5LCAwLCA4MDQ0LCA3NDMxMywgMTI4MjMwLCA0MTc4OSwgMTI4MTQyLCAxMDgwOSwgNjYyNzksIDEyODc0MCwgMCwgCisgICAgMTc3OSwgNjYwMCwgNjYwMSwgNDE1NDMsIDUzMjUsIDY0MiwgNjQxODcsIDEzMDU4LCAxMjA0NDksIDEyODc1LCA5ODM4MDQsIAorICAgIDkyMTg2LCAxMzIyOSwgNzE4NDUsIDEwNTc1LCA0MzM5OSwgMTAwNDY3LCAwLCA0MTc5MSwgMTEwNCwgMTI3OTIyLCAKKyAgICA5ODM3MjUsIDEwNjU1LCA5ODMzMzQsIDk4MzU2MSwgMTIwMTY0LCA2Mzk2MCwgMTA4MiwgMTIxMDI0LCA4NDI4LCA2NTY5LCAKKyAgICAxMjg0MjksIDAsIDc4NTM0LCA2OTg0OSwgNjc4MywgMTk0NjcxLCAxMjk5MywgODA0OSwgNDE1NDgsIDQ0MDIxLCA2NDU4LCAKKyAgICA2NDcyOCwgMTI4ODgyLCA0NzYxLCA2MzgyOCwgNDc2NiwgNjQ2MjMsIDEyNzMsIDQzNDA3LCAxMjA2NzcsIDExODg3NiwgCisgICAgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgMTI4NjI3LCA0MTU0NSwgMTI2NDY1LCA5MjQ0OSwgMTI1MjA5LCAKKyAgICAxMTIxNiwgMTIxMzA3LCAxOTQ4NTEsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgOTgzMjI1LCA4NTAzLCA1MTIyLCA0MTUyNywgCisgICAgNzE5MTAsIDY2MzIwLCA3MDE2MSwgNzQ5MDcsIDE5NDg1NiwgMCwgNDE1MzcsIDY2NDUzLCA4MzAzLCA4MjgyLCAxMTgxNywgCisgICAgNzM4NTcsIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDEyMjkyMCwgNzAxMTUsIDExNDY3LCAzNjY0LCAKKyAgICA2NTkyMSwgNjQyOTksIDEyNDkzOSwgMTI4NDYyLCAxMjgwMDEsIDQzMjQsIDEyNiwgNDIyNDYsIDc1MDMwLCA2OTk4NCwgCisgICAgNjc3MjUsIDY1OTI2LCA3NzQ0LCA2ODg1OSwgNzQyNzcsIDY2MjgzLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAKKyAgICAwLCA2NTYwMCwgMTYzMywgMTI4MzAxLCAxMjY2MTQsIDQ3NjIsIDExMDMsIDcwODI3LCA3MDE1NywgNDc2NSwgOTgzNDk0LCAKKyAgICAxMzA3OCwgOTgzMjcwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAxOTQ2NTIsIDY1NTUsIAorICAgIDEyODg2NywgMTI3MDcyLCAxMTU0NiwgNzQ3OTQsIDMzNywgMTIxMTk2LCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIAorICAgIDk4Mzg1NiwgNzUwNDcsIDQ3MDcsIDY4MjA2LCAxMDE0MywgNzg4MywgMTIxNDQ0LCA3ODgwLCA0NTIyLCA4NjQ1LCA1NzA0LCAKKyAgICAxMzAxMCwgNjk3OTYsIDgzMDQsIDkyOTgyLCAxOTQ2ODgsIDExOTU3NSwgMjI5MywgNzAxOTUsIDY2NjU0LCAxMjkwNzcsIAorICAgIDkyNjc2LCAwLCAxMzAwOCwgMTIxMTk0LCA0Mzg1LCAxMDA0NjIsIDEzMDExLCAxMjUwMDQsIDkyNTY5LCAxMTkxNjEsIAorICAgIDEzMDA5LCAxNjAsIDI2NzcsIDcwMzg4LCAxMjc3ODUsIDQxNzkzLCA2NTc2MywgNzQyMjEsIDcwNzkwLCA0MTc5MiwgCisgICAgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCA0MzgyMSwgNTcwOSwgMTI1MjIyLCA3MTA3NiwgNDM4MTYsIDk4MzA4NywgCisgICAgMTk1MDA1LCAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIDQwMDUsIAorICAgIDEyMTA5MSwgMTAyMzcsIDEwOTkxLCAxMjg4MTYsIDQzNDU5LCA5MTczLCAxMjExNTIsIDEyMTIxOSwgMTMxNzAsIDEyNTQwLCAKKyAgICAxMjUyMzMsIDQyNjA1LCAxMjA3NjUsIDEyNjYxNywgNjg2NDcsIDkxNzU3MiwgMTAwNTgsIDY4MDU4LCA3NDg2NywgNjc3MzAsIAorICAgIDEyNzA3OCwgMzMzOSwgMTE0NDgsIDExMDYsIDkxNzU5MSwgOTE3NTQwLCAxMjgzMTEsIDMzNDAsIDc0MDE3LCA5MTc1ODYsIAorICAgIDEyMDk5NCwgMTI5MTQxLCA5Mjk3OSwgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgCisgICAgODY0LCA5MTc1ODIsIDExODkyNiwgODk3MiwgMTAwNDQ0LCA3ODQ5LCAxMjAwOTIsIDgzMTMwLCAxMzI0MCwgMTk1MDY4LCAKKyAgICA1MTkyLCA0MzM4LCA2Nzk4MiwgMTA5NDgsIDY2ODI1LCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIAorICAgIDEzMTg4LCA5Mzk5MywgNzE4NDcsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgCisgICAgNjM3ODIsIDYzNzgxLCA2Mzc4MCwgNjM3NzksIDE1ODMsIDExOTkyMywgMTMyNjAsIDQ1NTAsIDEyMDU5OCwgNjQyMDUsIAorICAgIDEyOTEwNywgNzEwNzEsIDQxNTIyLCA0MTUyMywgNjg1MjMsIDEyOTEwOCwgNjY3NTksIDExMzU0LCA5NDA3MSwgMCwgCisgICAgNDI3OTUsIDEyODA2MSwgMTE5MTk1LCAxMTM5NCwgMTk0NjQ2LCAxMzIzNiwgMTMyNzIsIDEzMTk0LCAxMzM0LCA2OTkyNiwgCisgICAgNDQ3OSwgMTE3OCwgNjU1ODYsIDY4MzExLCA2NjY4MSwgMTE5MTkzLCA0NjAxLCAwLCAxMjc4ODUsIDE5NTAzOCwgNjY4MjgsIAorICAgIDEyODk3MiwgMTI3ODM5LCA3NDU4MCwgNjgwOSwgNjM3ODYsIDYwMzEsIDY3NDAyLCA2Mzc5MSwgNjM3OTAsIDExNDUsIAorICAgIDYzNzg4LCA3OTEwLCA2Mzc4NSwgNDMxNTMsIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIDEyNTEyMiwgCisgICAgNjQ3MTAsIDEwNzQ3LCAxMjUsIDEyMDgwMywgNjQ4OTAsIDY2ODA1LCAxMjczNzYsIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgCisgICAgMTA3NCwgMTMyNTgsIDk1MzYsIDcxMDU2LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIDQzMTQ1LCAxMjIxNywgNjM3NTQsIAorICAgIDQxNTMyLCAxMzQ5LCA2Mzc1MCwgNjM3NDksIDEyOTAyNSwgMTI4NzczLCAxMDEwMTQsIDYzNzUzLCA2MzgwMiwgNDEwODQsIAorICAgIDcyNzg0LCA2ODEzMywgNDE5MzAsIDYzODA1LCA2MzgwNCwgMTExNDAsIDYzODAxLCA0MTA4MiwgODE0MCwgNjM3OTgsIAorICAgIDYyNjAsIDc4ODI2LCAxMjgzOTEsIDY2NzY1LCAxMTQzOSwgMTE5ODgsIDM4OTgsIDkyMjQ2LCAxMDIwMSwgMTIyMzgsIAorICAgIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIAorICAgIDk4MzMzMSwgNDIyMDMsIDc5NTAsIDMxMjQsIDYzNzcxLCA0Mjc4NywgNDM4NiwgMTExNDgsIDY5NzMsIDI3OTMsIDEyNDc1LCAKKyAgICAxMjUyNDEsIDc1MDU2LCA2Mzc2OSwgOTUzMCwgMTIxMjQ4LCAxMjIzMiwgMTMxMzUsIDg1OTYsIDU2ODEsIDYzNzYyLCAKKyAgICA0NTk1LCA2Mzc2MCwgNzkyLCAxMTM2NzQsIDY0ODAzLCAxMDA1MTIsIDg3NDIsIDE5NTAyOSwgMTEwNTMsIDEyODc5NiwgCisgICAgNjM3NDQsIDEyODEwNywgMTI4OTQyLCA3NTg4LCA2Mzc0OCwgMTY5MywgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgCisgICAgNDIwNjMsIDEwOTAsIDY4ODAzLCAxMjA3NzgsIDExNjY1LCA3NDEzMywgNDU1OCwgNjU2ODUsIDk1MjMsIDE5NTA1MywgCisgICAgNjM4NTcsIDcxMjE2LCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCA2Mzc3MywgMTMxOTEsIDEyMTcwLCAzNTAwLCAKKyAgICAzMTM5LCA2ODA3MSwgMzE3MCwgMTI0ODUsIDQzODkxLCAxMDg3MiwgNDM4OTIsIDEzMDA2LCA0MzkzMywgMTIwMDc0LCAKKyAgICAxMDA2NTAsIDk0MSwgMCwgMTI5MDc5LCAxMjA5NjcsIDY1NTQxLCAxMTA2MywgOTgzMTk4LCA4MjI4LCA3Mzk4OCwgNDIwNjUsIAorICAgIDEyMjg5MywgNDM4ODksIDk0MDM5LCAxMjcwNDEsIDkyNDU1LCA3Mzg2LCAwLCA2NDQ0NCwgNzAyOTUsIDExOTg2MywgCisgICAgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCA4MzQwOSwgMCwgMCwgMTAwMjUsIDY5OTE1LCAyOTE4LCA2NjgyMCwgNjUzMDAsIAorICAgIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCA5ODM2MjAsIDEyNzgyOSwgNjUzOTMsIDEyMDU5MiwgCisgICAgNzQxMzgsIDgzNTA1LCA5Mjc1MSwgNzUwMTksIDc0MTM5LCA3ODc3NywgNjUzOTQsIDExNTQ4LCA1MjcwLCAxMjgxNDksIAorICAgIDY1Mzk2LCA3NDk5OCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDc1MDEyLCAxMjAxNTcsIDEwODg4LCAxMjA5MzQsIAorICAgIDY1MjQyLCAwLCAzMzMwLCAxMjk0MTcsIDAsIDY4MzQwLCAxMjQ5MzEsIDk4MzYwNSwgNzEyMDIsIDMzMDQsIDQyNzUzLCAKKyAgICA5MjU4OCwgNzAyOTgsIDc0NjQzLCAxNjI3LCAxMjkxMjAsIDEyNzc2NSwgMTk0NzM1LCA1MzcxLCAxMzExNiwgOTgzNzc3LCAKKyAgICAxODI2LCAxMTg3OTQsIDk4MzQ5NywgNDMwOTQsIDcwMDIzLCA0MzY1MCwgOTQwMzcsIDY4MzE3LCA5MDM1LCAxMTE0MSwgCisgICAgOTE3OTc3LCAxMjgwMDUsIDAsIDcyNzMzLCA2ODEyNSwgNzQ4OTgsIDE2NCwgNjgzMDksIDk0MDY3LCA5NDAwMCwgNjk1OCwgCisgICAgMTAwNjM0LCA0MzExNiwgNjc3MTksIDcwMDE5LCAxMzI0NSwgMTAwNjM3LCA2ODgwOCwgNjY4MTgsIDEyODAwOSwgNzAwMzEsIAorICAgIDExMDk5LCAxMjY2NiwgMTMxNzUsIDEzMjA3LCAxMjA0MTQsIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDk4MzQ3MywgCisgICAgNjU1MDksIDEyOTE5MiwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAxMjUxMDIsIDYzODA4LCA5MDU0LCA5NzEsIAorICAgIDEzMDYyLCA3MTA5MCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIDk4MzMyMSwgNzgxNDYsIDkyNjExLCAwLCAKKyAgICA3MDIwNCwgMTI1MTI5LCAxMDA0NSwgMTI4ODIsIDEzMjc1LCAyMzAzLCAxMTA1NywgMTI0OTk0LCAxMzI3NiwgMTI1MTMzLCAKKyAgICA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAxMjY0NzksIDEyNzkwNCwgMTE5MDkxLCAxMjIyOSwgMTE2ODAsIDkyOTU2LCAKKyAgICA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAxOTUwODksIDk4MzQ5NSwgMTA0NzYsIDM4NTgsIDY0MTc1LCAzOTMyLCA2NDk1OCwgCisgICAgMTIwNDMyLCA5ODM2NzgsIDczOTg5LCA2ODE5MiwgMCwgNjk4NDcsIDM2OSwgNzQ5MDgsIDQxNzg0LCAxMTkxNzUsIDY0MTYzLCAKKyAgICA3Nzk5NywgNzI3MDcsIDkyNjQ1LCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIDEyODYzMSwgNDE3ODEsIAorICAgIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIDkyNjA4LCA5ODM4NzAsIDQwNCwgMTI4MjEsIDM3NDEsIDAsIDU3ODgsIAorICAgIDgwOTIsIDY4MjEyLCA0MTIyMiwgMTgzMSwgNjYwMjAsIDM5ODIsIDAsIDQzODgsIDE5NDkxMywgNzQ2LCAxMTg4MjYsIAorICAgIDc0NzgzLCAwLCAxMjAxOCwgNjUyOTQsIDEyNDk0NiwgMTk0OTI1LCA2ODgzNSwgOTgzNDg4LCA0NDIyLCA0NzA4LCAzNzk5LCAKKyAgICA3NDI5MiwgMTE5MzU3LCAxMjExNDYsIDc0NDMwLCAwLCAxMTcwMCwgNDM3NCwgMTIwMzc3LCAxMjExNTEsIDEzNjQsIAorICAgIDk4MzMxNywgODAzOCwgMTIwODgzLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgNzA0MjUsIDY3MzUsIDczOTc5LCAxMzE3NCwgCiAgICAgNzM5NjgsIDEzMjI1LCAxOTQ5MDIsIDY5ODA4LCA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgNzE0NzYsIDQyODU1LCAxMTg4NTYsIAotICAgIDQyODY2LCAwLCAwLCAxMjc5ODYsIDY2NDM4LCA0MTc4NSwgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgMTE5MzU0LCAKLSAgICA5ODM5MjAsIDk4MzU2OCwgMTI4ODcxLCAxMjc4MjEsIDY3Njg1LCAxMjgwNjIsIDEyOTY1LCAzODQsIDY0NTEyLCAxMDQwNCwgCi0gICAgMTAzNDAsIDExOTM1MiwgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCA5ODMyNDUsIAotICAgIDEyMTE0OSwgNDEzNzMsIDY4NDg2LCAxMjMwMywgMTI4NDc2LCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIAotICAgIDExNjU2LCAwLCAxMjA3MDMsIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCA5MjczNywgMTA5NiwgNDM4NTIsIAotICAgIDEyMTQzMywgNDI2ODgsIDEyNDQxLCAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCA5MjkwMiwgODAzMiwgCi0gICAgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMTI2NjQ2LCAxMTkxMDEsIDEyMTE1NiwgNjQ4ODQsIDkyOTA5LCAxMTkzNDUsIDg1OTcsIAotICAgIDcxMTAwLCAxMjkwNjIsIDk4NjQsIDAsIDEyMDc4NSwgMTE5ODc0LCA5NDEwNywgMTMxOTUsIDQxNDUyLCA2NDk2MSwgNzcyMiwgCi0gICAgMCwgMTA0NTksIDExOTg3OCwgMTI0OTQ5LCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIDQxNTMzLCA2NjMzNywgMTI4NjYzLCAKLSAgICA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNjc4NTYsIDAsIDQzNjM4LCA3ODUzNiwgMTIxMTg3LCA2MjYxLCAKLSAgICAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgMTMyOTIsIDEzMjA2LCAxMjUwNjQsIAotICAgIDkxNzc5NSwgMjkyNSwgNzM4MDksIDEzMDU2LCA5MjkxNCwgMTMyMTIsIDQzMjM4LCAxMjEzOTYsIDEzMTkwLCAxMzE4NywgCi0gICAgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDEyMTA4OSwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgMTY5NCwgODIxNiwgNzEzNjksIAotICAgIDY3NzAsIDQzMzMxLCAwLCA2NTYyMCwgOTgzNzI4LCA0MzU0NCwgMTI2NDY2LCAwLCA0MTQ0NCwgNjU2MjEsIDY5OTU1LCAKLSAgICA5MTk3LCA1MjQ2LCAxMTkxMDYsIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEyMDMyMiwgMTIzMTQsIDY1NjE2LCA1MjM4LCAKLSAgICA0MzgyNSwgNzEwODUsIDExOTMzNywgNTIzNiwgNDA5NzksIDk4MzE0MCwgNzE4NzQsIDgyODYsIDEyODUzNywgMzkzNiwgCi0gICAgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDY5NzM5LCAxMzIzNSwgODg0MiwgNDEyNDgsIDAsIDQzNzksIDEzMjM5LCAxMjY5MiwgCi0gICAgNzk2OSwgMTI3MjY2LCA3MjE5LCA3MTg3NSwgMTI4MjUxLCAxMjA1MDksIDkyOTA3LCA2NjIyNCwgNzM0LCAyOTc5LCAKLSAgICAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgNDE0NzcsIDExOTI1NiwgNzExOTIsIAotICAgIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIAotICAgIDExMTM2LCA3MTg3NiwgMTE1MDYsIDEyODM5NSwgNDI4NDEsIDEzMjY3LCAxMjg0MjEsIDAsIDQxNzc1LCAwLCA3MTMwLCAKLSAgICA0MTc3MywgMCwgMTA2NjMsIDcwMTMwLCAwLCA5ODM5NzQsIDYxNTEsIDEyMTEwLCA0MjY3MywgNjU1NzIsIDY1MjkzLCAKLSAgICA2NTI1MCwgMTMyNjUsIDEzMjY0LCA2NDUxOCwgMCwgNjEwMCwgMTI3OTY0LCA5MjY0NywgNTgwOCwgNjU5MjIsIDY3ODE0LCAKLSAgICAxMjk2NywgNjYwNDEsIDU2MTIsIDQ1ODMsIDcwMDA0LCA0MzM4NiwgNjgwOTcsIDY0NTc1LCAxMjY2MzcsIDExOTY1LCAKLSAgICAxOTQ5MzAsIDY4MzU4LCA3MTQ4MywgNjk3ODksIDQyNjUzLCA4MzE4MSwgNjgxMDIsIDk2OTgsIDc4MTQsIDcxMDQ1LCAKLSAgICAxMTk2NTEsIDEyODUxNCwgMCwgNDE5MjEsIDExODg1OCwgOTc1NiwgNjk4NSwgNjY0MTgsIDY2NjIxLCA3NDIxOSwgNjY0MTIsIAotICAgIDEyODgyMiwgMTE4OTk3LCA4MDEyLCA1Njc0LCAxMjM1MywgNjY0MjEsIDEyMzYxLCA1Njc3LCA1NTg4LCA5MjM0OCwgCi0gICAgNDE5MjUsIDEyODEyNCwgNDE5MjAsIDU2NzMsIDgzMTEzLCA1Njc2LCA0MTkyMywgMTI2OTQsIDExODk3OCwgNTY3MiwgCi0gICAgMTI5NCwgMCwgNzgwNTksIDk4Mzk2MiwgNDI1MTEsIDE3MjcsIDEyMDcyNSwgNDI0MzYsIDEyMTQwMCwgMTIxMTgzLCAwLCAKLSAgICA3NDIyMiwgODcxOCwgMzU1MCwgNzM2LCAxMDI2OCwgNDUwNSwgNTg3MywgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAKLSAgICAxMjkwMzIsIDkyODg5LCA1ODQxLCA1ODM3LCA1NTIzNCwgMTk0ODY0LCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgCi0gICAgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgNTg2NSwgOTMwMDksIDc5NTYsIDU5OCwgMCwgNjQ2NDksIAotICAgIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAxMjAwNDEsIDk4MzI1NywgODM0NzgsIDk4MzkyOSwgODMxODQsIDAsIDg0NywgCi0gICAgMTI4MjQyLCA5NTI5LCA4MzAxOCwgNjY2NTcsIDY5ODAsIDc4NDgzLCA0MzUxMCwgNzgxMjIsIDkyMjE5LCAwLCA2NzQxMSwgCi0gICAgNzg0ODYsIDgzMDE3LCAxMjcyNjAsIDEyMDAzOSwgNDI2ODMsIDcxODQ4LCA5ODMwNTUsIDcxMTQsIDEyNjUyMSwgMCwgCi0gICAgNDMxOTAsIDY1NDYzLCAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCA3NTA1OSwgCi0gICAgMTk5NjMsIDU2OTgsIDE5NDc2OCwgOTgzMjcyLCA5MjkzMywgNzE4ODcsIDU2NDQsIDEwMjkyLCA2NTU0NiwgNjk3MjcsIAotICAgIDY4MTQxLCA4MzcyLCAwLCA2NTExNiwgMCwgNzAzMDQsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgCi0gICAgMTA1NjgsIDAsIDk4MzYxOCwgMjg2OSwgOTE3ODQzLCA0MTAxNSwgNzQ0NzMsIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCAKLSAgICA0MTgwMiwgOTgzNjUyLCA0MjYwOCwgNzg0NjgsIDk4ODQsIDQ3NTksIDczNzY4LCAxMjAyOTYsIDEwMjY2LCA0MTM1OSwgCi0gICAgMTE3MCwgNDMzNjUsIDY5ODEwLCA3MzkwOCwgMTYwOSwgOTAyLCA5Mjc3MywgNjM5MzYsIDgzMjQ3LCAxMTY2MSwgODEyMiwgCi0gICAgNTgxOCwgODMyNDUsIDAsIDM4NjEsIDk1NDAsIDExMDI4LCAyNTU0LCA1MTU4LCA1NzE0LCAyMjEzLCA5ODM5NjYsIDAsIAotICAgIDgwNywgNDMwNzksIDc4MDkyLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgMTIwODYzLCA0MjE1NSwgOTgzMzE5LCA0MTM1NiwgCi0gICAgNzQxMTAsIDExODgwMSwgNzEwNDMsIDEyMDA4MCwgODY3NiwgOTgzMjkzLCA5NDAwMiwgNTU4MiwgNDUxLCA2Mzk0MSwgCisgICAgNDI4NjYsIDEwMTA3NywgMCwgMTI3OTg2LCA2NjQzOCwgNDE3ODUsIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIAorICAgIDExOTM1NCwgMTk0OTQwLCA5ODM1NjgsIDEyNzI1MywgMTI3ODIxLCA2NzY4NSwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgCisgICAgMTA0MDQsIDEwMzQwLCA0MTQ3MywgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCAKKyAgICA5ODMyNDUsIDcwNjg0LCA0MTM3MywgNjg0ODYsIDEyMzAzLCAxMjg0NzYsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCAKKyAgICA0MTM3MSwgMTE2NTYsIDk4MzY5MSwgMTIwNzAzLCAxMTk4ODMsIDEyODYxLCA0Mzk4LCA4NTQzLCA2NTYxOCwgOTI3MzcsIAorICAgIDEwOTYsIDQzODUyLCAxMjE0MzMsIDQyNjg4LCAxMjQ0MSwgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgCisgICAgOTI5MDIsIDgwMzIsIDEzMjQzLCAxMzIzNywgMTI3MTksIDEyNjY0NiwgMTE5MTAxLCAxMjExNTYsIDY0ODg0LCA5MjkwOSwgCisgICAgMTE5MzQ1LCA4NTk3LCA3MTEwMCwgMTI3NTU5LCA5ODY0LCA5ODM5NDMsIDEyMDc4NSwgMTE5ODc0LCA5NDEwNywgMTMxOTUsIAorICAgIDQxNDUyLCA2NDk2MSwgNzcyMiwgMCwgMTA0NTksIDExOTg3OCwgNzI4MzAsIDExOTg3OSwgNjY1OTAsIDEyODEyMywgCisgICAgNDE1MzMsIDY2MzM3LCAxMjg2NjMsIDkyMTg0LCA5ODM4NjAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDY3ODU2LCAwLCAKKyAgICA0MzYzOCwgNzg1MzYsIDcyNzE5LCA2MjYxLCAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgCisgICAgMTMyOTIsIDEzMjA2LCAxMjUwNjQsIDkxNzc5NSwgMjkyNSwgNzM4MDksIDEzMDU2LCA5MjkxNCwgMTMyMTIsIDQzMjM4LCAKKyAgICAxMjEzOTYsIDEzMTkwLCAxMzE4NywgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDEyMTA4OSwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgCisgICAgMTY5NCwgODIxNiwgNzEzNjksIDY3NzAsIDQzMzMxLCAwLCA2NTYyMCwgMTk0NjI5LCA0MzU0NCwgMTAwNDQxLCAwLCAKKyAgICA0MTQ0NCwgNjU2MjEsIDY5OTU1LCA5MTk3LCA1MjQ2LCAxMTkxMDYsIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEwMDkyNCwgCisgICAgMTIzMTQsIDY1NjE2LCA1MjM4LCA0MzgyNSwgNzEwODUsIDExOTMzNywgNTIzNiwgNDA5NzksIDk4MzE0MCwgNzE4NzQsIAorICAgIDgyODYsIDEyMTI5MiwgMzkzNiwgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDY5NzM5LCAxMzIzNSwgODg0MiwgNDEyNDgsIAorICAgIDEwMDQ5MCwgNDM3OSwgMTMyMzksIDEyNjkyLCA3OTY5LCAxMjcyNjYsIDcyMTksIDcxODc1LCAxMjgyNTEsIDEyMDUwOSwgCisgICAgOTI5MDcsIDY2MjI0LCA3MzQsIDI5NzksIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIDY2NjMxLCAKKyAgICA0MTQ3NywgMTE5MjU2LCA3MTE5MiwgNzQ1MTEsIDQxNzcwLCAxNjcwLCA2NDQyLCAxMjAzMTcsIDQyNDQ2LCA1Mzc5LCAKKyAgICAxMjAzMTgsIDQxMTYzLCA3NDgzMiwgMTExMzYsIDcxODc2LCAxMTUwNiwgNjU5MzQsIDQyODQxLCAxMzI2NywgMTI4NDIxLCAKKyAgICAxMjQ5ODgsIDQxNzc1LCAwLCA3MTMwLCA0MTc3MywgOTE3ODg4LCAxMDY2MywgNzAxMzAsIDEyNTIyNSwgOTgzOTc0LCAKKyAgICA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIAorICAgIDEwMDQ5MywgOTI2NDcsIDU4MDgsIDY1OTIyLCA2NzgxNCwgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCA3MDAwNCwgCisgICAgNDMzODYsIDY4MDk3LCA2NDU3NSwgMTI2NjM3LCAxMTk2NSwgNzA3MjAsIDY4MzU4LCA3MTQ4MywgNjk3ODksIDQyNjUzLCAKKyAgICA4MzE4MSwgNjgxMDIsIDk2OTgsIDc4MTQsIDcxMDQ1LCAxMTk2NTEsIDEyODUxNCwgOTE3OTE1LCA0MTkyMSwgMTE4ODU4LCAKKyAgICA5NzU2LCA2OTg1LCA2NjQxOCwgNjY2MjEsIDc0MjE5LCA2NjQxMiwgMTI4ODIyLCA3MDcxOCwgODAxMiwgNTY3NCwgMTIzNTMsIAorICAgIDY2NDIxLCAxMjM2MSwgNTY3NywgNTU4OCwgOTIzNDgsIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCA4MzExMywgNTY3NiwgCisgICAgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIDEyOTQsIDEyMDg3OCwgNzgwNTksIDk4Mzk2MiwgNDI1MTEsIDE3MjcsIAorICAgIDEyMDcyNSwgNDI0MzYsIDEwMDQ5NywgMTIxMTgzLCAwLCA3NDIyMiwgODcxOCwgMzU1MCwgNzM2LCAxMDI2OCwgNDUwNSwgCisgICAgNTg3MywgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAxMjAwODYsIDkyODg5LCA1ODQxLCA1ODM3LCA1NTIzNCwgMTk0ODY0LCAKKyAgICAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgOTgzODQwLCAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIDU3OTcsIDQxMDExLCAKKyAgICA1ODY1LCA5MzAwOSwgNzk1NiwgNTk4LCA5ODMyNjAsIDY0NjQ5LCA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgCisgICAgMTIwMDQxLCA5ODMyNTcsIDgzNDc4LCA5ODM5MjksIDcxMjY2LCA5MTc2MTgsIDg0NywgMTI1MDY1LCA5NTI5LCA4MzAxOCwgCisgICAgNjY2NTcsIDY5ODAsIDc4NDgzLCA0MzUxMCwgNzgxMjIsIDkyMjE5LCAwLCA2NzQxMSwgNzg0ODYsIDgzMDE3LCAxMjcyNjAsIAorICAgIDEyMDAzOSwgNDI2ODMsIDcxODQ4LCAxMDEwOTUsIDcxMTQsIDEyNjUyMSwgMCwgNDMxOTAsIDY1NDYzLCAxNTU0LCA3MDY1NywgCisgICAgNDI2MTEsIDQyNTYzLCAxMDEwNzEsIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCA3NTA1OSwgMTk5NjMsIDU2OTgsIAorICAgIDE5NDc2OCwgMTIwNzMwLCA5MjkzMywgNzE4ODcsIDU2NDQsIDEwMjkyLCA2NTU0NiwgNjk3MjcsIDY4MTQxLCA4MzcyLCAKKyAgICAxMDA4MDAsIDY1MTE2LCAwLCA3MDMwNCwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgOTQxMDAsIDQxMDEzLCAxMDU2OCwgCisgICAgOTE3NTY1LCAxMjc0MDAsIDI4NjksIDkxNzg0MywgNDEwMTUsIDc0NDczLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgNDE4MDIsIAorICAgIDk4MzY1MiwgNDI2MDgsIDc4NDY4LCA5ODg0LCA0NzU5LCA3Mzc2OCwgMTIwMjk2LCAxMDI2NiwgNDEzNTksIDExNzAsIAorICAgIDQzMzY1LCA2OTgxMCwgNzM5MDgsIDE2MDksIDkwMiwgOTI3NzMsIDYzOTM2LCA4MzI0NywgMTE2NjEsIDgxMjIsIDU4MTgsIAorICAgIDgzMjQ1LCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgOTgzOTY2LCAxMjEwMjgsIDgwNywgCisgICAgNDMwNzksIDc4MDkyLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgMTIwODYzLCA0MjE1NSwgMTI4OTUxLCA0MTM1NiwgCisgICAgNzQxMTAsIDExODgwMSwgNzEwNDMsIDEyMDA4MCwgODY3NiwgMTAwNTE5LCA5NDAwMiwgNTU4MiwgNDUxLCA2Mzk0MSwgCiAgICAgNTc5OCwgOTM0OSwgNDIwMTgsIDEyNzg1OCwgMTI4NTIxLCA3ODY4MSwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgCi0gICAgMTI4ODUzLCA3NDkzMywgNzAzNDIsIDExMDA1LCAxOTQ2OTksIDY2NjU2LCA2NjA0NCwgMTk0NjM2LCAxMjAwNzksIAotICAgIDEyODc5MywgMCwgNDMzOTMsIDEwMDk0LCA3MDE2NCwgMTE1MjksIDEwODU3LCA5Mjk0NCwgNjY0MzYsIDY1NDYsIDkzLCAKLSAgICA4MTAyLCA2NzMyMywgNjg0MDUsIDAsIDE5NDcxNCwgODE3MSwgMTE4ODg4LCAxMTkwOTcsIDgyOTk2LCA5MTc1NDMsIDM4MywgCi0gICAgNzE1NCwgNDE2NTYsIDQzNDk1LCA5NDA0MCwgNjcxNjIsIDUxODcsIDcxMjk2LCA3MTA4NiwgMTEyODYsIDY4NjIwLCAKLSAgICA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDEyNzM3NywgNDEwMDUsIDk4MzgxMCwgMCwgMTI4NDcxLCA4MjkyLCAxMjUxMDgsIAotICAgIDQ5ODAsIDg4NjAsIDcxMDU0LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAxOTQ3MDUsIDc0OTEyLCAxMjc5NzQsIAotICAgIDEwNjMxLCAxMTI0NCwgNzk3MiwgNjgwNDIsIDc4Nzg1LCAwLCA3OTAwLCAxMjg1OTAsIDExMzA5LCAzODA2LCA0MTk4LCAKLSAgICA0MjcyNSwgMCwgNjc2NTYsIDk5OTUsIDAsIDkyNTUyLCAwLCAxMjkzMSwgMTIxMTEwLCA0MjY4NCwgNzQyODUsIDIwODgsIAotICAgIDY0MjEzLCA2NDM2NiwgNjUxNTYsIDg4MTQsIDQyMjM4LCA3NDc3MSwgMTI3OTIwLCAxOTQ3MTMsIDEyODM2LCAwLCAKLSAgICAxMTM4MDAsIDc0MzQyLCA4NTkzLCAwLCAwLCA2ODQ0NSwgMTMyNTUsIDEyMTMzMywgMTI4ODQzLCA3NDY0LCAwLCA2NTg2NSwgCi0gICAgMCwgMTk0NjUwLCAxMjcxNDQsIDkyMzk1LCA5MzQyLCAxMjA0NjQsIDcwMzc2LCA2NDUxNiwgMCwgNzg3OTIsIDEwMTI5LCAKLSAgICA0MTAwNywgNzQzNzUsIDk4MzcwMSwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgODM1MDEsIDAsIDgzMjU3LCA2OTcyNCwgNDA5OTIsIAotICAgIDkyMjY0LCAxMTkxMzYsIDY4NjUzLCA0MzU1OCwgNTUyMiwgNzUwMjYsIDYxLCAxMjA5NTksIDc0MTA1LCAzNjMzLCAKLSAgICAxMjAwODIsIDY1MTYyLCA0MTIzNCwgMTIwODksIDc4MjgxLCA5NzcxLCA4MzI4MSwgMTMyNTEsIDEyODcwMSwgMCwgNjI2MiwgCi0gICAgMjc4NCwgNDI3NDMsIDcxMDc4LCA4MTI2LCA2NjQ4MywgMCwgMCwgNDQxLCA0MjYyMSwgMCwgMCwgNDEwMDIsIDQwOTk5LCAKLSAgICAxMTk2MjMsIDQzMjY2LCA3MTA4LCAxOTQ3NzksIDEwODkwLCA3NDQ4MSwgNjU4MzQsIDgzMjQsIDExODk0NCwgNjQ0MTcsIAotICAgIDc0ODE3LCAxMjc0NjUsIDY0NzM3LCA3NDg1MywgOTgzNjU5LCA4OTMwLCA2NjY3OCwgNjcyMTYsIDExOTMsIDEwMDU2LCAKLSAgICAxODAwLCAxMzI1MywgMTMyNTIsIDc4MjksIDEyMDk5MiwgMTIxMTc1LCA3NzQzLCA4MzUwMiwgMTI0OTk2LCA3NzkwNCwgCi0gICAgNzc5MTMsIDc3OTA1LCA5MDM0LCA2MDM5LCAxMjkxMzksIDEwMDc1LCAwLCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgCi0gICAgMCwgMCwgMTk0NjM3LCA0MjgxNSwgOTI5ODQsIDQxOTY2LCAwLCAxMjc0NzEsIDAsIDExNzkyLCA0MzA2NCwgNDEwMjUsIAotICAgIDkxMSwgNzUzOSwgMCwgNDA5NjMsIDEyMDMzOSwgNjUxNTksIDY0MzkwLCAwLCA5ODMxNjAsIDU1MjAsIDExNjYyLCAKLSAgICAxMjc0NzMsIDY1MzMwLCA0MjgxMiwgOTgzMjE1LCAwLCAxMjMyNiwgNzEwODEsIDE5NDYzOCwgNDI4MDgsIDEyODMzNywgCi0gICAgOTM0OCwgNjQ5MDEsIDk4Mzg2MSwgOTgzODkyLCAxMjEwNTAsIDY2ODM5LCAwLCAwLCAxMjEwMDQsIDQzNzAyLCA5ODMxNDgsIAotICAgIDU4NTcsIDY1MzQyLCA5MjcyNywgMTE5MTIwLCA4MzUwMywgODY0NCwgMTIxMjI3LCA4MzMzMiwgMTExODYsIDc0Mjk2LCAKLSAgICA0MTkwOSwgMCwgNjY5MDAsIDI3OTEsIDY5NjYzLCAxODkxLCA2OTgyNCwgNjYzOTcsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCAKLSAgICA4NzYxLCAxMjk0MiwgNTc0OCwgOTI3MTMsIDEwNzczLCA3MDg2OCwgODMxNzQsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCAKLSAgICA4NTIwLCAxMzE0NiwgMTI3MDk2LCA2MzkzMSwgODMyNzUsIDY1OTAyLCAyODgyLCA4MzMzNCwgMCwgMTI4NDMsIDQ1MjAsIAotICAgIDEyMDM0NSwgOTI0NTksIDAsIDk4MzY2MCwgMCwgNzM4NjAsIDgzMzM1LCAwLCA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAKLSAgICA3MDg3MSwgMCwgOTE3ODY0LCA0MzY3OSwgMTIxMDI2LCA2NTExNywgOTIyNzAsIDAsIDEwNDI3LCAxMjE1MDYsIDM4NDQsIAotICAgIDY4NDIsIDk3NTUsIDExMTAsIDY2MTIsIDEyMjIyLCA5MzAzMCwgMTI4Nzg5LCA5ODM2MzgsIDkyOTI4LCA3ODMsIDE5NDkzNSwgCisgICAgMTI4ODUzLCA3NDkzMywgNzAzNDIsIDExMDA1LCAxOTQ2OTksIDY2NjU2LCA2NjA0NCwgMTk0NTg2LCAxMjAwNzksIAorICAgIDEyNzI0OSwgMTIwNzk3LCA0MzM5MywgMTAwOTQsIDcwMTY0LCAxMTUyOSwgMTA4NTcsIDkyOTQ0LCA2NjQzNiwgNjU0NiwgCisgICAgOTMsIDgxMDIsIDY3MzIzLCA2ODQwNSwgMCwgMTk0NzE0LCA4MTcxLCAxMTg4ODgsIDExOTA5NywgODI5OTYsIDkxNzU0MywgCisgICAgMzgzLCA3MTU0LCA0MTY1NiwgNDM0OTUsIDk0MDQwLCA2NzE2MiwgNTE4NywgNzEyOTYsIDcxMDg2LCAxMTI4NiwgNjg2MjAsIAorICAgIDY0MjE3LCAwLCA1MjMyLCAwLCA0MTAwOSwgMTI3Mzc3LCA0MTAwNSwgOTgzODEwLCA0MzIwNSwgMTIwODI5LCA4MjkyLCAKKyAgICAxMjUxMDgsIDQ5ODAsIDg4NjAsIDcxMDU0LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAxOTQ3MDUsIDc0OTEyLCAKKyAgICAxMjc5NzQsIDEwNjMxLCAxMTI0NCwgNzk3MiwgNjgwNDIsIDc4Nzg1LCAwLCA3OTAwLCAxMjg1OTAsIDExMzA5LCAzODA2LCAKKyAgICA0MTk4LCA0MjcyNSwgOTgzMzExLCA2NzY1NiwgOTk5NSwgMTIwMDcyLCA5MjU1MiwgMCwgMTI5MzEsIDEyMTExMCwgNDI2ODQsIAorICAgIDc0Mjg1LCAyMDg4LCA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDEyNzkyMCwgMTk0NzEzLCAKKyAgICAxMjgzNiwgMTI1MjE0LCAxMTM4MDAsIDc0MzQyLCA4NTkzLCAxMjA2NDAsIDAsIDY4NDQ1LCAxMzI1NSwgMTIxMzMzLCAKKyAgICAxMjg4NDMsIDc0NjQsIDEwMTA2NiwgNjU4NjUsIDAsIDEyODUzNSwgMTI3MTQ0LCA5MjM5NSwgOTM0MiwgMTIwNDY0LCAKKyAgICA3MDM3NiwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgNDEwMDcsIDc0Mzc1LCA5ODM3MDEsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIAorICAgIDgzNTAxLCAwLCA4MzI1NywgNjk3MjQsIDQwOTkyLCA5MjI2NCwgMTE5MTM2LCA2ODY1MywgNDM1NTgsIDU1MjIsIDc1MDI2LCAKKyAgICA2MSwgMTIwOTU5LCA3NDEwNSwgMzYzMywgMTIwMDgyLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgODMyODEsIAorICAgIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIDI3ODQsIDQyNzQzLCA3MTA3OCwgODEyNiwgNjY0ODMsIDAsIDE5NDY2MiwgNDQxLCAKKyAgICA0MjYyMSwgNzA2NjAsIDAsIDQxMDAyLCA0MDk5OSwgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgNzQ0ODEsIAorICAgIDY1ODM0LCA4MzI0LCAxMTg5NDQsIDY0NDE3LCA3NDgxNywgMTI3NDY1LCA2NDczNywgNzQ4NTMsIDk4MzY1OSwgODkzMCwgCisgICAgNjY2NzgsIDY3MjE2LCAxMTkzLCAxMDA1NiwgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAxMjA5OTIsIDEyMTE3NSwgCisgICAgNzc0MywgODM1MDIsIDEyNDk5NiwgNzc5MDQsIDc3OTEzLCA3NzkwNSwgOTAzNCwgNjAzOSwgMTI5MTM5LCAxMDA3NSwgCisgICAgOTgzNzY1LCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgMCwgMCwgMTk0NjM3LCA0MjgxNSwgOTI5ODQsIDQxOTY2LCAwLCAKKyAgICAxMjc0NzEsIDEyNTE4OCwgMTE3OTIsIDQzMDY0LCA0MTAyNSwgOTExLCA3NTM5LCA5ODM0ODcsIDQwOTYzLCAxMDA0NDcsIAorICAgIDY1MTU5LCA2NDM5MCwgMCwgOTgzMTYwLCA1NTIwLCAxMTY2MiwgMTI3NDczLCA2NTMzMCwgNDI4MTIsIDExOTkxMiwgCisgICAgMTI2NjQ3LCAxMjMyNiwgNzEwODEsIDE5NDYzOCwgNDI4MDgsIDEyODMzNywgOTM0OCwgNjQ5MDEsIDk4Mzg2MSwgOTgzODkyLCAKKyAgICAxMjEwNTAsIDY2ODM5LCAwLCAwLCAxMjEwMDQsIDQzNzAyLCAxMDA4MDcsIDU4NTcsIDY1MzQyLCA5MjcyNywgMTE5MTIwLCAKKyAgICA4MzUwMywgODY0NCwgMTIxMjI3LCA4MzMzMiwgMTExODYsIDc0Mjk2LCA0MTkwOSwgMCwgNjY5MDAsIDI3OTEsIDY5NjYzLCAKKyAgICAxODkxLCA2OTgyNCwgNjYzOTcsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCA4NzYxLCAxMjk0MiwgNTc0OCwgOTI3MTMsIAorICAgIDEwNzczLCA3MDIwNiwgODMxNzQsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCA4NTIwLCAxMzE0NiwgNzI4MDUsIDYzOTMxLCAKKyAgICA4MzI3NSwgNjU5MDIsIDI4ODIsIDgzMzM0LCAxMjgyODUsIDEyODQzLCA0NTIwLCAxMjAzNDUsIDkyNDU5LCAxMjkwOTIsIAorICAgIDk4MzY2MCwgMTIwMDY4LCA3Mzg2MCwgODMzMzUsIDEyODI4OSwgNjQzNDUsIDk4MzU1NCwgOTIwMSwgMTI4MzE0LCA3MDg3MSwgCisgICAgOTgzODA5LCA5MTc4NjQsIDQzNjc5LCAxMjEwMjYsIDY1MTE3LCA5MjI3MCwgOTgzNjM2LCAxMDQyNywgMTIxNTA2LCAzODQ0LCAKKyAgICA2ODQyLCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgOTMwMzAsIDEwMTA1MSwgOTgzNjM4LCA5MjkyOCwgNzgzLCAxMTk1NzcsIAogICAgIDkyMTg1LCAxMjcyMjEsIDczODU1LCA2ODAzMiwgNjUwNTYsIDM2MjAsIDQxMTgwLCA2ODM3OCwgNDU1NiwgNjc4MzksIAogICAgIDY4NDgwLCAxOTQ5MzMsIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCA2NzgyMywgMCwgMTI3NTI3LCAKLSAgICA5MTc3LCA4OTAyLCA5Mzk1OCwgOTgzOSwgMTIwNzAwLCAxMjg5MSwgOTgzNzU1LCA5ODM2MzYsIDYzOTk5LCAyMDE2LCAKKyAgICA5MTc3LCA4OTAyLCA5Mzk1OCwgOTgzOSwgMTIwNzAwLCAxMjg5MSwgOTgzNzU1LCA5ODMyMzksIDYzOTk5LCAyMDE2LCAKICAgICA0MTkxNywgOTc4OCwgNjM5MjgsIDY3Njk2LCAxODYyLCA2NTgwMCwgOTE1NSwgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgCiAgICAgODU3OSwgNDE5MTQsIDc5ODEsIDAsIDY2MDE3LCA0NTA4LCA2NDg4MywgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDEyMDgzNCwgCiAgICAgNjQ1OTIsIDc0Mjc2LCA2NzY4OCwgNjc4NCwgNzg3ODgsIDY4MTgxLCAwLCA3MTIxOCwgMTEzODIxLCA2NjM2NiwgMTIxNDcsIAogICAgIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgMTI0OTc2LCA2NDI4OSwgNjUyODksIDc4MTUxLCA2NjY1OCwgNzE5MzUsIDY0NTA5LCAKICAgICA3ODE1MiwgMTEzNjk3LCAxMjY1MDUsIDExMDUxLCAxOTQ5MjgsIDAsIDExMzU1LCA2NTg4NSwgMTIxMzE5LCAxMjc5NDEsIAotICAgIDQxMjE0LCAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDEyNjYwOSwgNDA0MCwgCi0gICAgMTIwNTcwLCA2MTY3LCA3NDUxOSwgNjM5MjIsIDY1OTQsIDk4Mzc0MCwgMCwgMCwgMzYyNCwgNDMwMzYsIDEyOTQ3MiwgCi0gICAgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgNDE5NTUsIDEyNjk5MCwgNjM5OTMsIDEwNDQwLCA5NjExLCA2NTYwNSwgCi0gICAgNjgwMywgMTIwOTY4LCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCAKLSAgICA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCA0Mjc0MiwgOTUxNywgMTE1MTgsIDgzMjkyLCAKLSAgICA3ODc5MCwgOTgzMzgxLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIDYzOTYwLCA5NTkxLCA0NTE2LCAKLSAgICAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgOTIzMjUsIDAsIDY4MDc5LCAKLSAgICAxMjEzNDQsIDExMzk3LCAyODgwLCA3MDgwNiwgOTE3ODI5LCAyODcyLCAwLCA4MzMyMSwgMzQ5OCwgNDM3OCwgOTE3NTM5LCAKLSAgICA0MjcwLCAwLCA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCA1MjMwLCAxOTQ5OTEsIDAsIDk4MzA0MCwgMTk0OTEwLCAKLSAgICAxMjEzOTIsIDgxNjEsIDM5MywgMTIwMTMsIDAsIDk4MzE5OCwgMTE5MTAzLCA0MTUsIDYzOTY0LCA2Mzk2MywgNDIzNDUsIAotICAgIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgNzEwNTgsIDYzOTYxLCA0NDcyLCA5ODMyOTksIDAsIDc4MTU5LCAKLSAgICA2OTY5OSwgMTI3MzAxLCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgNzY5MSwgMTAzMzEsIDYzODMwLCAKLSAgICAxMTk2MjUsIDQyOTIyLCA0MjEwMywgODYyOCwgOTgxMywgNzg2NTQsIDQyNDUzLCAxNjA0LCA5NTY1LCAxMDUzOSwgNjk3MDEsIAotICAgIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDEyOTE5NiwgODQ1NywgNDIzMDEsIDExMzcyLCA2NDg3MywgMTE5OTIsIDAsIDAsIAotICAgIDYzOTgwLCAxMTgwMSwgMzYyMiwgMTk1MDkyLCA2NDMzNiwgMTIwMTcsIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIAotICAgIDE5NjYsIDQzNjI4LCA5ODM5MDgsIDk4MzI5NCwgODMyNjcsIDEyMTA1MiwgNjM5NzEsIDQzNDcsIDQ0MTYsIDQyMDk4LCAKLSAgICAxMTAwOSwgMTA2OTQsIDYzOTczLCA0MDIsIDkyMjEzLCAxMzE0NywgMTI4NjkyLCA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCAKLSAgICA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCA5ODMxNTcsIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgODMzMjMsIDE5NDY3MCwgCi0gICAgMTIwODM2LCA5MjM1MSwgNzQ4MTMsIDc0NDI1LCAxMTI5OSwgMTU2MSwgMTE4ODgxLCA5MjMxOCwgNjQ5NDIsIDkzMDIxLCAKLSAgICAxOTQ3MzMsIDcwNDExLCA3ODcxOCwgMTIxMTQwLCA3NDMwMSwgNjg4MjUsIDExMjgwLCAxMjg0ODksIDY5Nzg0LCA3NDA2MCwgCi0gICAgMTI4MzkyLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCA2NTAxOCwgNjY1MTYsIDU0MDksIDEyNzM3OSwgMTI0OTg4LCA3NDAyLCAKLSAgICA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMCwgNjY2MTYsIDY2ODMyLCA5Mjk2NiwgMTIwODUyLCA1NDA1LCAKLSAgICAxMjc4NzUsIDY0ODY2LCAxMjA5NjUsIDExOTU4MywgMTE5MTIyLCA3ODc4NCwgNzQyNDgsIDExMzMwLCAxOTQ3MjMsIAotICAgIDY0NjkwLCAzMjU0LCA5ODMxNjYsIDEyODk0NCwgOTI2OTYsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCAxMjkxMjcsIDY1MDc3LCAKLSAgICAxMjkwNTksIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIDExNTIwLCA1NjExLCA4MzAyMSwgMzM3NywgMCwgMCwgCi0gICAgNzQzNTQsIDE5NDU3OCwgNzgyMjgsIDk4MzcyMiwgOTgzNzYyLCA0MjY5MSwgMTI3ODg2LCAxMjA5NDgsIDY4MDkxLCAKLSAgICAxMjg0MDQsIDc1MDIzLCAxMzc5LCAyNDYsIDc0NjQ5LCA5ODM3NjEsIDM3ODgsIDkyNTIwLCAxMTA0MSwgNjcyMDIsIAotICAgIDY2MzA0LCAwLCAxMjEyMTMsIDg5MTcsIDQyNDAzLCAzMDEsIDAsIDEyODUwMCwgMTI3MDQ2LCAwLCAwLCAxMTM4MjIsIAotICAgIDEwNjU2LCAxMjUwNDIsIDY1MjE0LCA5Mjk4NywgNDI1NjcsIDkyMjE3LCAxMzE2MywgOTgzMjA0LCAxMjA4MzEsIDc0NTk3LCAKLSAgICAzMTgyLCAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgMTk0NTc0LCAxMTQ0MywgOTgzNjAzLCAKLSAgICA2NjMxOSwgNjg0MSwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDExOTExNywgNzQ0ODUsIAotICAgIDQyNDQyLCA2NTQ3MCwgOTgzOTA3LCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDY5OTgyLCA3MDUwNSwgOTgyOCwgCi0gICAgMCwgNDM1MDUsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIAotICAgIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAwLCA2ODMxNSwgMCwgMCwgNzQwNDEsIDgzMTQ0LCA3MDA0NSwgNDM1MzksIDU0MTEsIAotICAgIDQyMTk2LCAwLCAwLCAwLCA5MTUwLCA2NjgzMSwgNDIzOTMsIDEzMDg2LCAxMzEwLCA2Njg0OCwgOTMzNywgMTIwNTIsIAotICAgIDEwNjQzLCA1NTI3MSwgMTI4OTUxLCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgNjU2MTEsIDgzMzE2LCAKLSAgICAxOTQ4MjIsIDE5NDc1NiwgNzQzMTAsIDY1NTQsIDk0MDU5LCAxMTkxNCwgNTQ1MiwgMCwgMCwgOTI3NzIsIDAsIDkxNzg4MCwgCi0gICAgMTk0NjgxLCA5MjU2MCwgMjcxMywgMTE5NTY0LCA5NjUwLCA0MzMzMCwgMTIxMDMzLCAxMjg1MDUsIDE0MDYsIDEyNTAwNywgCi0gICAgNDI5MjUsIDc0NjM4LCAxOTQ1OTMsIDY2MjU2LCA0MTQzLCAxMjgxMzYsIDE5NDc2MiwgNjU3NDgsIDQxNDEsIDk2ODIsIAotICAgIDY1Mjg3LCAxNTA4LCAxMjcwMTMsIDg3NzksIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgNDE0NSwgCi0gICAgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCA0MjkzMiwgNDM0MDMsIDAsIDAsIAotICAgIDE5NDc4MywgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDk4MzIwNSwgMTI5NTUsIDEwNTk2LCAyODg4LCA4MzE5MCwgMCwgCi0gICAgMTIxMzU0LCA5NjU3LCA5MDE5LCAxMjExNTQsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgNjczMjUsIDY4Njc5LCAKLSAgICA0MzU1MiwgNzUwMSwgNjMyOCwgMTk0OTYwLCAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIAotICAgIDY4MzgxLCAwLCAwLCA4OTg2LCA0MzgzOCwgMTA2MzIsIDExOTM0LCAxMTQ1MiwgMTMzMiwgMCwgMTk0OTcwLCAxMjY2NDcsIAotICAgIDAsIDExODg4NywgMTc5MSwgNTE5MSwgOTI4OCwgNjQ4MjIsIDI4OTIsIDgzMTkyLCA0MzM5NCwgNTU1LCAwLCAwLCA2NjY0NiwgCi0gICAgMTI4OTgwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzQwNTUsIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgCi0gICAgNDE5MjcsIDEwNTgyLCAxMjA0NTcsIDE3ODQsIDEzNjEsIDEyMDkyMSwgMTIxNTE2LCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAKLSAgICAxMzE1OCwgOTIxNjYsIDcyMTEsIDcxODg0LCA5MzcxLCA3Mzk3MywgMTI4NDQxLCA2ODI4LCAxNjI1LCA3NjY0LCAxMjg3NjgsIAotICAgIDEzNDIsIDY4NDQwLCA2NDE3MSwgOTI2NDIsIDEwOTAzLCA5ODM0OTYsIDAsIDkyNTI3LCAwLCA3MDQzOCwgNDQ4MiwgCi0gICAgNDE2MDYsIDEyODkzNCwgMTI1MDMzLCAxMjE0NzUsIDAsIDY0MzgxLCA5ODM5NDAsIDE5NDk3NCwgMTk1MDkwLCA0MjI0NSwgCi0gICAgMTI2NDY3LCA0MTk3MiwgMCwgNDQ0LCA5ODM0MzksIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgMCwgCi0gICAgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDAsIDcwMTc3LCAxMjA4MzAsIDAsIDExOTcsIDEyODI4MiwgMTE0OSwgNjgzMTYsIDAsIAotICAgIDk4MzI1OCwgNDA5OTAsIDQzNzY1LCAxMjEyNjIsIDM0OTIsIDkxNzkwNiwgMTE4Nzg0LCAxMjkwMjYsIDAsIDk4MzU2NiwgCi0gICAgMTI4MzgsIDY3MjA4LCAxOTk0OCwgNDE2NzcsIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCA5ODMyNjEsIDExOTA1OSwgCi0gICAgMTIwMzYsIDQxMzA5LCAxMjgxNjEsIDAsIDgxNTIsIDAsIDQxNTUwLCAxMjIyNywgOTgzNjEzLCAwLCAxMjgyOCwgMTI3NTExLCAKLSAgICA3NTAxNSwgMTIwOTY0LCAxMjA3MDgsIDAsIDAsIDEwMzg2LCA3NTA2OCwgMTE5OTU1LCAxMjczMDMsIDkyNjgwLCA5ODMxMzQsIAotICAgIDY4MTU0LCAxMjc4NzYsIDE3NDMsIDAsIDAsIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCA3MDA1MiwgCi0gICAgNjQ0MzksIDEyODg2NCwgNjgwNjIsIDkyNjg2LCA5ODM4NzUsIDAsIDQzODY2LCAxMjg4ODEsIDAsIDMzOTUsIDkzNjIsIAotICAgIDEwODc4LCA0MzI2MCwgMCwgNzgzNjIsIDY0ODMwLCAwLCAxMjUwNDYsIDQxMDkxLCAzNDI2LCAxMzQ0LCA4ODcwLCAKLSAgICAxMjExMDAsIDcxMzQ0LCA0NzM1LCAxMTExMSwgNjExOSwgMTI4MjIsIDQyNjk5LCAwLCA5ODM4MjQsIDc0ODE4LCAxNDIzLCAKLSAgICAxMjg5MjMsIDQyNjM3LCA0MTA4MCwgMCwgMTIwMzksIDEwNTU5LCAxMjg2MzQsIDExODg5MiwgMCwgOTQ3MiwgNjc3MzQsIAotICAgIDExOTI5LCAxMjY1NTcsIDcxNzAsIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCA3MTQ3NSwgMCwgOTI1MDEsIAotICAgIDEyNTA4MSwgNzgwNDYsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNiwgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgCi0gICAgNjg0MTQsIDc0NjE0LCA0MzYxOSwgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgMTE3NzYsIDc1NTgsIDcwMTA5LCAKLSAgICA2NTYyNywgMCwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCAwLCA5ODMwOTQsIDAsIDExOTAyMywgNjUzNjUsIDczODc3LCAKLSAgICA2NTYyOCwgNzgwMTksIDExOTI3MiwgODMxMTgsIDQxNzA4LCAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAKLSAgICAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMTI1MDU3LCA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCAKLSAgICA0MzA3OCwgMTI3Nzg5LCAxMTg4MDksIDY3MjMyLCAxMDg5OSwgNjU0NjksIDcwMTI1LCAwLCAwLCAyNDEwLCA5OTMsIAotICAgIDgzMTE3LCAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIDAsIDExOTI1MywgMTI0OTYzLCA3MTEwLCA3NDQ2MiwgCi0gICAgMjA2NiwgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDY4ODYzLCA0MjI0LCAxMzM2LCA0MTUxOCwgMTIxMzExLCAKLSAgICAwLCAwLCAwLCA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIDExOTE1MywgMTIwNDQxLCAyNzIsIAotICAgIDQyNjMsIDg3OTMsIDk4Mzg1NiwgMCwgNDE1MDIsIDEyODEzMywgOTgzLCAxMjU0OSwgMTI0OTQwLCAwLCAxMTkwLCA0MTA5LCAKLSAgICAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgOTU0NCwgNDM0ODEsIDAsIDEyMDkyNiwgNzAwMjcsIDIwOTksIDUxMjAsIAotICAgIDI0MDksIDc3OTksIDAsIDc0NDI0LCAwLCAxMjEwNDEsIDQ3MzEsIDkyMjc5LCA2NjYyOSwgMTI4MTI3LCA5MjUyNSwgMTI1NSwgCi0gICAgNDE0OSwgOTI0NywgNzQ5NzcsIDk5MTMsIDk4MzgyOCwgMTIxMTAxLCA2NDkxNCwgOTE3Nzg3LCA2NTEwMSwgMTEzNzE0LCAKLSAgICAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAxMDg0MiwgNDEzNTQsIDQyMTIzLCA0MzA5NywgCi0gICAgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCA5MTc5MDAsIDgxODAsIDEyNTA1NSwgMCwgOTk3MiwgNzM4NjUsIAotICAgIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgOTI0NjUsIDAsIDkzOTYwLCA5ODMzMjQsIDEyNjU4MSwgMTA2OTUsIDAsIAotICAgIDc1NDAsIDAsIDg4MSwgNzg1NywgNjA2NywgNjUxNjQsIDAsIDkxNzg5NywgMTI5MTM0LCAxMzMxMSwgNjg0MDMsIDQxODU3LCAKLSAgICA2NDMyMSwgODM1OSwgODMyODYsIDEyNjg5LCA5ODMzMTIsIDExMjQ1LCAxMjgxMDUsIDk4MzMxNCwgNzE4NTksIDY4MTgzLCAKLSAgICA5ODM0MTUsIDE5NDgyOSwgMTI4NywgNTQzNiwgMCwgNzEwOTcsIDc0MTQyLCA5MjMyOCwgNzQxNTIsIDcwMjA1LCA2MDUxLCAKLSAgICAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCA4Mjk2MiwgMTI4OTA4LCA5MzA0MywgMTIxMDEzLCAwLCAzNjUyLCAxMDUzNywgCi0gICAgMTIwMjgyLCAxMjc2LCAxMjA0NDAsIDY1NDksIDI3OSwgNzM3NDUsIDAsIDEyODY2NCwgODMyNDQsIDE0ODksIDAsIDAsIDAsIAotICAgIDM4OTksIDEwMDcsIDQyMTI0LCA0MzgyOCwgNDIxMjIsIDkyMzM3LCA5MjM2NywgMCwgMTE5ODUsIDEzNDUsIDc4NjAwLCAKLSAgICAxMTk4MzIsIDkxNzU2MywgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgNzg2MTAsIDEyOTEzMSwgNjQzMCwgNzg2MDgsIAotICAgIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMTI4NDgxLCAKLSAgICAxMjEyNzAsIDAsIDc1MDI3LCA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3ODYxNSwgNzg2MTYsIDIyOTcsIDAsIAotICAgIDczODM3LCAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIDgzMTUyLCA5OTMzLCA3NDAxMSwgCi0gICAgNjY1MTUsIDc2NywgNTUyNCwgNzAyOCwgMCwgOTIxNjgsIDExOTgyNywgMTE5ODE3LCA5Mjk1MCwgNzg2MzMsIDEwODk2LCAwLCAKLSAgICAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCAxMjgzNDIsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyNDM0LCA5NDAxOCwgCi0gICAgMTE4ODIzLCA2NTM1MywgMCwgNDYzMSwgMTE4OTk2LCAwLCA2NDA3LCAxMTM3MzcsIDYzMzgsIDQzMjE0LCAwLCA3NTcwLCAwLCAKLSAgICAzMTkyLCAxMjAzMzAsIDg0MTQsIDk4MzM5MiwgOTM5ODMsIDE5NTA0MywgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAKLSAgICAzMTcxLCA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgCi0gICAgNzAwNjYsIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAKLSAgICAxMDk0NCwgNDEyMDgsIDk4MzcxMywgNDExNjgsIDgxNzgsIDc0ODU5LCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCAKLSAgICA3ODYzNiwgNjgwNCwgNzA0NzUsIDE5NDcsIDkxNzU3OSwgMCwgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgCi0gICAgNzQ3OTgsIDkxODEsIDY1MzU5LCAxMjUwNjUsIDgwMTcsIDExOTgzMSwgNjUwOTYsIDY2NzIwLCA2ODIyMywgNDM0NzUsIAotICAgIDkxNzU0OCwgNDkwOSwgMTIxMjYsIDEyNzU0MCwgMTIwNjk2LCA0OTA0LCA5Mjk2MSwgNDM1MDMsIDEzNjUsIDkyNTMsIAotICAgIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMTI3NzcyLCAwLCAwLCA4MzE3MywgNjY4NDUsIDY0NDE1LCAxMjA1MDAsIDgzMTcyLCAKLSAgICA1Mzk4LCAxMjUwMzUsIDEyNzM4NiwgOTM5NTMsIDEyNzM2MiwgOTgzNzgyLCAxMTkwMTUsIDgzMTcxLCAxMjcwMDcsIDk0NzYsIAotICAgIDk4Mzg4NywgMTIwNjk1LCAxMjc2MywgMTI2NjAzLCAzNjI5LCAxMjA4NDQsIDEzMDA1LCAxMTE4MSwgMzYyOCwgMCwgMCwgCi0gICAgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCA2NDgwOSwgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAKLSAgICAxMjAzNzIsIDY0NjY1LCA0MzA4NiwgOTExNCwgNDM4NzAsIDQyNTgzLCA5MzE1LCA0ODIyLCA0OTA2LCAzODUyLCAyODQ3LCAKLSAgICAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgMTE0MTAsIDEwOTY0LCAwLCA0MzIyMiwgMTI2NDYsIAotICAgIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCA3NTA0NiwgNjAxOCwgNjgyOTMsIDEyNTAxMCwgMTIyNzYsIDExOTExMCwgCi0gICAgNjgzNzIsIDEyODI1NSwgOTIyNTksIDcxODkzLCAwLCAxMTk4MjgsIDEwNDY3LCAwLCAyNDQzLCAxMDkxOCwgNzgyMTcsIAotICAgIDc3OTQ3LCAxMDAxLCA5MjQxLCAxOTI3LCAwLCAxMjQ5NDIsIDczOTg3LCAxMjc4ODIsIDcxODk1LCA5MzAxMiwgNzk5MiwgCi0gICAgNzc5NDMsIDQzOTM5LCAxMjg2NywgMTI4NjQ5LCA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIAotICAgIDY1ODU3LCAxMjgzNjEsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMTIxMjUyLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAKLSAgICAxMTg0MiwgMCwgNzEwNzIsIDEyMTQ2MiwgMCwgNTEzNiwgMTk2OCwgMTI4OTA2LCAxMjY2MjcsIDEzMzcsIDY0OTY3LCAKLSAgICAxNjI5LCAwLCA3OTYsIDY2NTA2LCAwLCA3NDEyMywgMTI4NzcsIDEyMDY0OSwgNDIzMTQsIDQzMzg4LCA0MzgyNiwgNDM5NDQsIAotICAgIDYxMjAsIDQ3OCwgNjUxNTEsIDY4MTI4LCAxMjgxNDcsIDQzMDgyLCA2MDE2LCAwLCA0MjI4NCwgNzE4OTQsIDQyNzYsIAotICAgIDEyMDYsIDM2MTksIDQxNjM4LCA2OTY5MSwgMzg0MywgMTIwMTEsIDg4NTMsIDMzNjEsIDAsIDQ5MCwgMTA3MTUsIDc1NzgsIAotICAgIDY4Mzg0LCA5Mjc1NCwgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNjgyNDUsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgCi0gICAgNzg1MjIsIDc4NCwgNDIzOTcsIDMzNCwgMTIxMDg0LCA0MjQxNiwgNjUzNTYsIDY1MjczLCA0MzkzNywgNjk2NjYsIDQ0NDIsIAotICAgIDEwMzY0LCA0MzkzNSwgNzc4LCA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCA2OTkwNywgNDM5MzIsIDExMTAyLCAKLSAgICAyOTE1LCAxMTUwMiwgNDEwMjIsIDQxNzAyLCAxMDMwOSwgMTI3MDM1LCA3NTAzMiwgMTIwMjczLCA2OTc1LCAwLCA1NDE1LCAKLSAgICAxMjE3NiwgOTgzNzA5LCA3NDE5MywgMzQ2MiwgNDM5NDAsIDQyNjI5LCA3ODY5MSwgNzExNzUsIDQzOTQyLCAxMjcyNTYsIAotICAgIDk3NTksIDEyNzI1NSwgNzAwNTcsIDEyMTQ0MiwgODExNCwgNzg2OTgsIDc4Njk3LCA3ODY5NiwgNzg2OTUsIDg3MTAsIAotICAgIDQyNDk1LCAxMTg5NTYsIDcwMTg5LCA0MDUxLCAxMDQ2MCwgNDMzNjQsIDcxMjA2LCAxMzU2LCAxMjE2MSwgNDI3MTMsIAotICAgIDEyODg1NywgMTI3MjY4LCAxNjE5LCA5NzAzLCA0MzE1MiwgNDI0ODksIDQyMTEyLCA2NDQzNiwgMTg3NSwgMTA4MDgsIAotICAgIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCA5ODMyMjQsIAotICAgIDU1NzUsIDk2NzUsIDcxMTI5LCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3OSwgOTI5NzksIDQzMjM2LCAzMzgyLCAKLSAgICA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAxMTM4MTQsIDExMjY5LCAxMDE1MSwgNzM3NTksIDQzMTAwLCAKLSAgICA2OTg4OCwgNjU1MDgsIDk4MzE0MywgMCwgMTIxNDUxLCA4OTM1LCA3ODIzNCwgMCwgOTgzNzU3LCAwLCA2MTYsIDc0NzUzLCAKLSAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgNzQ2MzEsIDEyNjU1MSwgMTI0OTkyLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIAorICAgIDQxMjE0LCAxMjkzMzEsIDEyMjk5LCAxMDEwNzUsIDc1MDAsIDQ1MDYsIDc3NzMsIDAsIDAsIDk5NjMsIDY4NjQ5LCAKKyAgICAxMjY2MDksIDQwNDAsIDEyMDU3MCwgNjE2NywgNzQ1MTksIDYzOTIyLCA2NTk0LCA5ODM3NDAsIDExMzczNCwgMTI3ODk5LCAKKyAgICAzNjI0LCA0MzAzNiwgMTI5NDcyLCA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCA0MTk1NSwgMTEwNTkyLCA2Mzk5MywgCisgICAgMTA0NDAsIDk2MTEsIDY1NjA1LCA2ODAzLCAxMjA5NjgsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIDkyNjQxLCAzNDM1LCAKKyAgICA3ODE2NCwgNDM4MTQsIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIDQyNzQyLCA5NTE3LCAKKyAgICAxMTUxOCwgODMyOTIsIDc4NzkwLCA5ODMzODEsIDY3OTkzLCA2Mzk1NiwgNDI0NTgsIDYzOTU0LCA2Mzk1MywgMTI1MDMsIAorICAgIDk1OTEsIDQ1MTYsIDEwMjE3LCA2ODM3MCwgMTE0NjksIDY5Njk3LCA0MjMwNiwgMjcyMywgMTE4OTQ3LCAwLCA5MjMyNSwgCisgICAgMTI1MDY3LCA2ODA3OSwgMTIxMzQ0LCAxMTM5NywgMjg4MCwgNzA4MDYsIDkxNzgyOSwgMjg3MiwgMCwgODMzMjEsIDM0OTgsIAorICAgIDQzNzgsIDEyODc0MywgNDI3MCwgMCwgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgNTIzMCwgMTk0OTkxLCAwLCAKKyAgICA4MzMyMiwgMTI2NjEyLCAxMjEzOTIsIDgxNjEsIDM5MywgMTIwMTMsIDk4MzIyMSwgMTAwNTA5LCAxMTkxMDMsIDQxNSwgCisgICAgNjM5NjQsIDYzOTYzLCA0MjM0NSwgOTIzMTAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAyOTI3LCA3MTA1OCwgNjM5NjEsIAorICAgIDQ0NzIsIDEwMTA1NCwgMCwgNzgxNTksIDY5Njk5LCAxMDEwNTUsIDQyMzQwLCA0NzU2LCAxMjgwNzgsIDcwODEsIDEwNzMwLCAKKyAgICA3NjkxLCAxMDMzMSwgNjM4MzAsIDgzNDUwLCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDc4NjU0LCA0MjQ1MywgMTYwNCwgCisgICAgOTU2NSwgMTA1MzksIDY5NzAxLCA2NTc2NCwgNDE0MTUsIDY1NzY3LCAxMDA1MDYsIDg0NTcsIDQyMzAxLCAxMTM3MiwgCisgICAgNjQ4NzMsIDExOTkyLCAxOTQ4NzQsIDEyOTMwNiwgNjM5ODAsIDExODAxLCAzNjIyLCAxMjg5MDQsIDY0MzM2LCAxMjAxNywgCisgICAgMTA0NjMsIDYzOTgxLCA0OTY3LCA2NDE4OSwgMTk2NiwgNDM2MjgsIDcyNzk0LCAxMDEwNjAsIDgzMjY3LCAxMjEwNTIsIAorICAgIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgMTEwMDksIDEwNjk0LCA2Mzk3MywgNDAyLCA5MjIxMywgMTMxNDcsIDEyODY5MiwgCisgICAgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgOTgzMTU3LCAxMTMwMiwgNjI1OSwgCisgICAgNDMzOTUsIDk4MzM3MywgODMzMjMsIDEyODM1OCwgMTIwODM2LCA5MjM1MSwgNzQ4MTMsIDc0NDI1LCAxMTI5OSwgMTU2MSwgCisgICAgMTE4ODgxLCA5MjMxOCwgNjQ5NDIsIDkzMDIxLCAxMjcwNDksIDcwNDExLCA3ODcxOCwgMTAwOTMwLCA3NDMwMSwgNjg4MjUsIAorICAgIDExMjgwLCAxMjg0ODksIDY5Nzg0LCA3NDA2MCwgMTI4MzkyLCAxOTQ5ODgsIDcyNzUyLCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIAorICAgIDY2NTE2LCA1NDA5LCAxMjczNzksIDExOTA1NywgNzQwMiwgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDEwMTA1MywgCisgICAgNjY2MTYsIDY2ODMyLCA5Mjk2NiwgMTIwODUyLCA1NDA1LCAxMjc4NzUsIDY0ODY2LCAxMjA5NjUsIDExOTU4MywgMTE5MTIyLCAKKyAgICAyMjM1LCA3NDI0OCwgMTEzMzAsIDEyOTEyMywgNjQ2OTAsIDMyNTQsIDk4MzE2NiwgMTI4OTQ0LCA5MjY5NiwgNDIzOTAsIAorICAgIDQzNjc4LCAxMDEwMDAsIDEyOTEyNywgNjUwNzcsIDEyOTA1OSwgNjM4OCwgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgCisgICAgMTE1MjAsIDU2MTEsIDgzMDIxLCAzMzc3LCAwLCA5ODM4NDUsIDc0MzU0LCAxOTQ1NzgsIDc4MjI4LCA5ODM3MjIsIAorICAgIDEyODM2OCwgNDI2OTEsIDEyNzg4NiwgMTIwOTQ4LCA2ODA5MSwgMTIxMTY2LCA3NTAyMywgMTM3OSwgMjQ2LCA3NDY0OSwgCisgICAgOTgzNzYxLCAzNzg4LCA5MjUyMCwgMTEwNDEsIDY3MjAyLCA2NjMwNCwgMCwgMTIxMjEzLCA4OTE3LCA0MjQwMywgMzAxLCAKKyAgICAxMTk5MzUsIDExOTgyNiwgMTI3MDQ2LCAwLCAwLCAxMTM4MjIsIDEwNjU2LCAxMjUwNDIsIDY1MjE0LCA5Mjk4NywgNDI1NjcsIAorICAgIDkyMjE3LCAxMzE2MywgOTgzMjA0LCAxMjA4MzEsIDc0NTk3LCAzMTgyLCA5ODM2MDcsIDk4MzkyNiwgMCwgNjUwMzQsIAorICAgIDY1ODg5LCA0MjE2OSwgNDc1NSwgNzQyNDQsIDc0NjMxLCAxMTQ0MywgOTgzNjAzLCA2NjMxOSwgNjg0MSwgNjA4LCA2MDAsIAorICAgIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDExOTExNywgNzQ0ODUsIDQyNDQyLCA2NTQ3MCwgMTAwNTM4LCAKKyAgICA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDY5OTgyLCA3MDUwNSwgOTgyOCwgNzgzMTEsIDQzNTA1LCA0MjI4MCwgCisgICAgMCwgOTM1MSwgNzc3OCwgNjQzNzksIDc0OTYsIDQyNDMxLCA2OTE2LCAxMjA4LCAwLCAxMTk2MzEsIDExMDAyLCA0MjQ3MCwgCisgICAgMTI4OTEzLCA2ODMxNSwgOTgzODM4LCAxMjExNTksIDc0MDQxLCA4MzE0NCwgNzAwNDUsIDQzNTM5LCA1NDExLCA0MjE5NiwgCisgICAgMCwgMCwgMTI4OTQ5LCA5MTUwLCA2NjgzMSwgNDIzOTMsIDEzMDg2LCAxMzEwLCA2Njg0OCwgOTMzNywgMTIwNTIsIDEwNjQzLCAKKyAgICA1NTI3MSwgNzI3MjcsIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgODMzMTYsIDE5NDgyMiwgCisgICAgMTAwNzMzLCA3NDMxMCwgNjU1NCwgODMwNTMsIDExOTE0LCA1NDUyLCA5ODM2NDksIDAsIDkyNzcyLCAxMjc1NDQsIAorICAgIDkxNzg4MCwgMTk0NjgxLCA5MjU2MCwgMjcxMywgMTE5NTY0LCA5NjUwLCA0MzMzMCwgMTIxMDMzLCAxMjg1MDUsIDE0MDYsIAorICAgIDEyNTAwNywgNDI5MjUsIDc0NjM4LCAxMjUxOTAsIDY2MjU2LCA0MTQzLCAxMjgxMzYsIDE5NDc2MiwgNjU3NDgsIDQxNDEsIAorICAgIDk2ODIsIDY1Mjg3LCAxNTA4LCAxMDA1MzMsIDg3NzksIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgCisgICAgNDE0NSwgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCA0MjkzMiwgNDM0MDMsIAorICAgIDEwMDYyMywgMTAwNjIyLCAxMDA2MjUsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCA3MjczMSwgMTI5NTUsIDEwNTk2LCAKKyAgICAyODg4LCA4MzE5MCwgMCwgMTIxMzU0LCA5NjU3LCA5MDE5LCAxMjExNTQsIDAsIDI4NzgsIDUzOTAsIDEwMDY5OCwgCisgICAgMTk0OTYxLCA2NzMyNSwgNjg2NzksIDQzNTUyLCA3NTAxLCA2MzI4LCAxOTQ5NjAsIDEwNDI5LCAxMDM2NSwgOTgzNjMxLCAKKyAgICAxMjgyMTYsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIDY4MzgxLCAwLCAxMDA1NzUsIDg5ODYsIDQzODM4LCAxMDYzMiwgCisgICAgMTE5MzQsIDExNDUyLCAxMzMyLCAxMjA3MDksIDE5NDk3MCwgMTIwNjAyLCAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIAorICAgIDY0ODIyLCAyODkyLCA4MzE5MiwgNDMzOTQsIDU1NSwgMTI5NDE4LCAxMjg0NzQsIDY2NjQ2LCAxMjgzMjcsIDExOTAwMiwgCisgICAgMTMxNTEsIDc0NTEyLCA3Mjg5LCA3MjczOSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCA0MTkyNywgMTA1ODIsIAorICAgIDEyMDQ1NywgMTc4NCwgMTM2MSwgMTIwOTIxLCAxMjE1MTYsIDc5MDUsIDAsIDY0ODY4LCAxMjg4MTMsIDEzMTU4LCA5MjE2NiwgCisgICAgNzIxMSwgNzE4ODQsIDkzNzEsIDczOTczLCAxMjg0NDEsIDY4MjgsIDE2MjUsIDc2NjQsIDEyNzgwOSwgMTM0MiwgNjg0NDAsIAorICAgIDY0MTcxLCA5MjY0MiwgMTA5MDMsIDk4MzQ0OSwgOTE3ODE4LCA5MjUyNywgMTI5Mzc0LCA3MDQzOCwgNDQ4MiwgNDE2MDYsIAorICAgIDEyODkzNCwgMTI1MDMzLCAxMjE0NzUsIDk4Mzg1NCwgNjQzODEsIDEwMDU0MCwgMTk0OTc0LCAxMDA2MTIsIDQyMjQ1LCAKKyAgICAxMDA2MTQsIDQxOTcyLCAxMDA2MTYsIDQ0NCwgMTAwNjE4LCA5MTI3LCA2NjY4NywgNjY2MTksIDEyNjQ4OSwgNzgwMjUsIAorICAgIDEyNjYwNiwgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDEyOTEzMiwgNzAxNzcsIDEyMDgzMCwgOTgzNDUwLCAxMTk3LCAKKyAgICAxMjgyODIsIDExNDksIDY4MzE2LCAxMjgwMTAsIDk4MzI1OCwgNDA5OTAsIDQzNzY1LCAxMjEyNjIsIDM0OTIsIDkxNzkwNiwgCisgICAgMTE4Nzg0LCAxMjkwMjYsIDEyOTM0NiwgMTAwNTkyLCAxMjgzOCwgNjcyMDgsIDE5OTQ4LCA0MTY3NywgMzA5OSwgMTAwNTk4LCAKKyAgICAxMDA1OTcsIDQxMDg3LCAxMDA1OTksIDAsIDk4MzI2MSwgMTE5MDU5LCAxMjAzNiwgNDEzMDksIDEyNTIxMCwgMTAwNjAzLCAKKyAgICA4MTUyLCAxMDA2MDUsIDQxNTUwLCAxMjIyNywgMTAwNTQ1LCAxMDA2MDksIDEyODI4LCAxMjc1MTEsIDc1MDE1LCAxMjA5NjQsIAorICAgIDEyMDcwOCwgMCwgMTk0NjExLCAxMDM4NiwgNzUwNjgsIDExOTk1NSwgMTI3MzAzLCA5MjY4MCwgOTgzMTM0LCA2ODE1NCwgCisgICAgMTI3ODc2LCAxNzQzLCAxOTQ4NjAsIDAsIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCA3MDA1MiwgNjQ0MzksIAorICAgIDEyODg2NCwgNjgwNjIsIDkyNjg2LCAxMDA1ODUsIDEwMDU4NCwgNDM4NjYsIDEwMDU4NiwgMTAwNTg5LCAzMzk1LCA5MzYyLCAKKyAgICAxMDg3OCwgNDMyNjAsIDAsIDc4MzYyLCA2NDgzMCwgMTAwODY2LCAxMjUwNDYsIDQxMDkxLCAzNDI2LCAxMzQ0LCA4ODcwLCAKKyAgICAxMjExMDAsIDcxMzQ0LCA0NzM1LCAxMTExMSwgNjExOSwgMTI4MjIsIDQyNjk5LCAxMjA3NDUsIDk4MzgyNCwgNzQ4MTgsIAorICAgIDE0MjMsIDEyODkyMywgNDI2MzcsIDQxMDgwLCA5ODMyMTAsIDEyMDM5LCAxMDU1OSwgMTI4NjM0LCAxMTg4OTIsIDE5NDkxMCwgCisgICAgOTQ3MiwgNjc3MzQsIDExOTI5LCAxMjY1NTcsIDcxNzAsIDk1OTYsIDYxMzAsIDEyNTI2OCwgNDM2MjksIDExNTc5LCAKKyAgICA3MTQ3NSwgMCwgOTI1MDEsIDEyNTA4MSwgNzgwNDYsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNiwgNDMyMzQsIAorICAgIDY2MDA4LCAxMjYyNywgMCwgNjg0MTQsIDc0NjE0LCA0MzYxOSwgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgCisgICAgMTE3NzYsIDc1NTgsIDcwMTA5LCA2NTYyNywgNzI4NzYsIDEwNzE4LCAxMzE1NCwgMzQ2MSwgOTEzOSwgNzQ5NDcsIAorICAgIDk4MzA5NCwgMCwgMTE5MDIzLCA2NTM2NSwgNzM4NzcsIDY1NjI4LCA3ODAxOSwgMTE5MjcyLCA4MzExOCwgNDE3MDgsIAorICAgIDEyODYwLCAyNjQxLCAxMjA2OSwgMTA4MzgsIDU0MDMsIDEwMzUyLCA3MDA4NSwgMTAwNjEsIDQzMjM3LCAxMjUwNTcsIAorICAgIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIDQzMDc4LCAxMjc3ODksIDExODgwOSwgNjcyMzIsIDEwODk5LCAKKyAgICA2NTQ2OSwgNzAxMjUsIDEwMDU3NCwgMTAwNTczLCAyNDEwLCA5OTMsIDgzMTE3LCAxMDA1NzcsIDEwMDU4MCwgNzg2OTMsIAorICAgIDEwMDU2MCwgMTAwNTU5LCA3MjMyLCAwLCAxMTkyNTMsIDEyNDk2MywgNzExMCwgNzQ0NjIsIDIwNjYsIDEwNDg5LCA0MjE2NiwgCisgICAgNDM0NjMsIDEwNjU5LCAzNjAwLCA2ODg2MywgNDIyNCwgMTMzNiwgNDE1MTgsIDEyMTMxMSwgMCwgOTE3NTg5LCA5ODM3OTQsIAorICAgIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMTAwNTUzLCAxMDA1NTYsIDEwMDU1NSwgMTAwNTU4LCAyNzIsIAorICAgIDQyNjMsIDg3OTMsIDk4MzM4NSwgMCwgNDE1MDIsIDEyODEzMywgOTgzLCAxMjU0OSwgMTAwNTYzLCAxMDA1NjIsIDExOTAsIAorICAgIDQxMDksIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCA5NTQ0LCA0MzQ4MSwgMCwgMTIwOTI2LCA3MDAyNywgMjA5OSwgCisgICAgNTEyMCwgMjQwOSwgNzc5OSwgOTgzOTU0LCA3NDQyNCwgOTgzODk2LCAxMjEwNDEsIDQ3MzEsIDkyMjc5LCA2NjYyOSwgCisgICAgMTI4MTI3LCA5MjUyNSwgMTI1NSwgNDE0OSwgOTI0NywgNzQ5NzcsIDk5MTMsIDk4MzgyOCwgMTAxMDI3LCA2NDkxNCwgCisgICAgMTI1MDAyLCA2NTEwMSwgMTEzNzE0LCAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcwOTYsIDY2NjI1LCAxMDg0MiwgCisgICAgNDEzNTQsIDQyMTIzLCA0MzA5NywgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCA5MTc5MDAsIDgxODAsIAorICAgIDEyNTA1NSwgOTgzOTEyLCA5OTcyLCA3Mzg2NSwgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCA5MjQ2NSwgMCwgOTM5NjAsIAorICAgIDk4MzMyNCwgNzQwNTUsIDEwNjk1LCAxMjkwNTgsIDc1NDAsIDAsIDg4MSwgNzg1NywgNjA2NywgNjUxNjQsIDkxNzk0OSwgCisgICAgOTE3ODk3LCAxMjgzMjYsIDEzMzExLCA2ODQwMywgNDE4NTcsIDY0MzIxLCA4MzU5LCA4MzI4NiwgMTI2ODksIDk4MzMxMiwgCisgICAgMTEyNDUsIDEyODEwNSwgOTgzMzE0LCA3MTg1OSwgNjgxODMsIDk4MzQxNSwgMTk0ODI5LCAxMjg3LCA1NDM2LCA5ODMwNjUsIAorICAgIDcxMDk3LCA3NDE0MiwgOTIzMjgsIDc0MTUyLCA3MDIwNSwgNjA1MSwgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgCisgICAgODI5NjIsIDEyNzM5NywgOTMwNDMsIDEyMTAxMywgMCwgMzY1MiwgMTA1MzcsIDEyMDI4MiwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAKKyAgICAyNzksIDczNzQ1LCAxMjc4MjMsIDEyODY2NCwgODMyNDQsIDE0ODksIDEyMDYyMiwgMCwgMCwgMzg5OSwgMTAwNywgNDIxMjQsIAorICAgIDQzODI4LCA0MjEyMiwgOTIzMzcsIDkyMzY3LCAxMjUxODcsIDExOTg1LCAxMzQ1LCA3ODYwMCwgMTE5ODMyLCA5MTc1NjMsIAorICAgIDg5NTYsIDQzMDgzLCA5NDA1NywgNDIxMzgsIDc4NjEwLCAxMjkxMzEsIDY0MzAsIDc4NjA4LCA3ODYwNCwgNzg2MDUsIAorICAgIDYyODUsIDc4NjAzLCA3ODYxMiwgNzg2MTMsIDY1OTQyLCA0OTIsIDg2ODUsIDEyODQ4MSwgMTIxMjcwLCAwLCA3NTAyNywgCisgICAgNDM3MTIsIDI1ODIsIDExNDcwLCA2NDUzOCwgNzQ0NCwgNzI4NjMsIDc4NjE2LCAyMjk3LCAxMjkzNDEsIDczODM3LCAKKyAgICAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIDgzMTUyLCA5OTMzLCA3NDAxMSwgNjY1MTUsIAorICAgIDc2NywgNTUyNCwgNzAyOCwgMTk1MDY1LCA5MjE2OCwgMTE5ODI3LCAxMTk4MTcsIDkyOTUwLCA3ODYzMywgMTA4OTYsIAorICAgIDYzOTEwLCAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCA3MDczMSwgMCwgNjUzNDAsIDExODk3OSwgNDE1NTEsIDIyNjIsIAorICAgIDk0MDE4LCAxMTg4MjMsIDY1MzUzLCAxMDA0NzksIDQ2MzEsIDExODk5NiwgMTk1MDI3LCA2NDA3LCAxMTM3MzcsIDYzMzgsIAorICAgIDQzMjE0LCAxMjcxNjMsIDc1NzAsIDEyMTAxNywgMzE5MiwgMTIwMzMwLCA4NDE0LCA5ODMzODgsIDkzOTgzLCAxOTUwNDMsIAorICAgIDAsIDAsIDkxNjQsIDY2NjEyLCA5Mzk1OSwgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgNTUyMTYsIDg2NTQsIAorICAgIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIDcwMDY2LCA2OTI0MSwgOTU5OSwgNzg2MjksIDQzMDg0LCA3ODYyNywgCisgICAgNzg2MjgsIDc4NjI1LCAyMzk5LCA2OTY5MywgODk5NCwgMTA5NDQsIDQxMjA4LCA5ODM3MTMsIDQxMTY4LCA4MTc4LCAKKyAgICA3NDg1OSwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgNzg2MzYsIDY4MDQsIDcwNDc1LCAxOTQ3LCA3Mjc3MCwgMCwgCisgICAgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgNzQ3OTgsIDkxODEsIDY1MzU5LCA3MjcyMiwgODAxNywgCisgICAgMTE5ODMxLCA2NTA5NiwgNjY3MjAsIDY4MjIzLCA0MzQ3NSwgOTE3NTQ4LCA0OTA5LCAxMjEyNiwgMTI3NTQwLCAxMDEwMTUsIAorICAgIDQ5MDQsIDkyOTYxLCA0MzUwMywgMTM2NSwgOTI1MywgNDI3NTcsIDQzNDM2LCA3NDYyLCAxMjc3NzIsIDAsIDAsIDgzMTczLCAKKyAgICA2Njg0NSwgNjQ0MTUsIDEyMDUwMCwgODMxNzIsIDUzOTgsIDEyNTAzNSwgMTI3Mzg2LCA5Mzk1MywgMTI3MzYyLCA5ODM3ODIsIAorICAgIDExOTAxNSwgODMxNzEsIDEyNzAwNywgOTQ3NiwgOTgzMDY2LCAxMjA2OTUsIDEyNzYzLCAxMDA1MjMsIDM2MjksIDEyMDg0NCwgCisgICAgMTMwMDUsIDExMTgxLCAzNjI4LCAxMTk4MzQsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIAorICAgIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMTIwMzcyLCA2NDY2NSwgNDMwODYsIDkxMTQsIDQzODcwLCA0MjU4MywgCisgICAgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIAorICAgIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgNzUwNDYsIDYwMTgsIAorICAgIDY4MjkzLCAxMjUwMTAsIDEyMjc2LCAxMTkxMTAsIDY4MzcyLCAxMjgyNTUsIDkyMjU5LCA3MTg5MywgMTE5ODEzLCAKKyAgICAxMTk4MjgsIDEwNDY3LCA5ODM4MTQsIDI0NDMsIDEwOTE4LCA3ODIxNywgNzc5NDcsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIAorICAgIDEyNDk0MiwgNzM5ODcsIDEyNzg4MiwgNzE4OTUsIDkzMDEyLCA3OTkyLCA3Nzk0MywgNDM5MzksIDEyODY3LCAxMjg2NDksIAorICAgIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIDUxOCwgNjU4NTcsIDEyODM2MSwgMTI4Njc0LCAxMzIwNCwgCisgICAgNDM4NywgODU3LCAxMjEyNTIsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIDExODQyLCAwLCA3MTA3MiwgMTIxNDYyLCAwLCAKKyAgICA1MTM2LCAxOTY4LCAxMjg5MDYsIDEyNjYyNywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIDc5NiwgNjY1MDYsIDEyODQ0MiwgCisgICAgNzQxMjMsIDEyODc3LCAxMjA2NDksIDQyMzE0LCA0MzM4OCwgNDM4MjYsIDQzOTQ0LCA2MTIwLCA0NzgsIDY1MTUxLCAKKyAgICA2ODEyOCwgMTE5MDQ0LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDcxODk0LCA0Mjc2LCAxMjA2LCAzNjE5LCA0MTYzOCwgCisgICAgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCA4MzE3OSwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDkyNzU0LCAKKyAgICA2NTM1MCwgMTA1MzAsIDEyMzQ4LCA4NjUzLCA2ODI0NSwgNDI0MzUsIDYxNTQsIDk1NTEsIDY1MzU0LCA3ODUyMiwgNzg0LCAKKyAgICA0MjM5NywgMzM0LCA3MjczMiwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNDM5MzcsIDY5NjY2LCA0NDQyLCAxMDM2NCwgNDM5MzUsIAorICAgIDc3OCwgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDQzOTMyLCAxMTEwMiwgMjkxNSwgMTE1MDIsIAorICAgIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzUwMzIsIDEyMDI3MywgNjk3NSwgMTI4NzkzLCA1NDE1LCAxMjE3NiwgCisgICAgMTIwNjUzLCA3NDE5MywgMzQ2MiwgNDM5NDAsIDQyNjI5LCA3ODY5MSwgNzExNzUsIDQzOTQyLCAxMjcyNTYsIDk3NTksIAorICAgIDEyNzI1NSwgNzAwNTcsIDEyMTQ0MiwgODExNCwgNzg2OTgsIDc4Njk3LCA3NDgyMywgNzg2OTUsIDg3MTAsIDQyNDk1LCAKKyAgICAxMTg5NTYsIDcwMTg5LCA0MDUxLCAxMDQ2MCwgNDMzNjQsIDcxMjA2LCAxMzU2LCAxMjE2MSwgNDI3MTMsIDEyODg1NywgCisgICAgMTI3MjY4LCAxNjE5LCA5NzAzLCA0MzE1MiwgNDI0ODksIDQyMTEyLCA2NDQzNiwgMTg3NSwgMTA4MDgsIDQyMTA5LCAKKyAgICAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCA5ODMyMjQsIDU1NzUsIAorICAgIDk2NzUsIDcxMTI5LCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3OSwgNjU1OTMsIDQzMjM2LCAzMzgyLCA0MjQ0OSwgCisgICAgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAxMDA0MDksIDExMjY5LCAxMDE1MSwgNzM3NTksIDQzMTAwLCA2OTg4OCwgCisgICAgNjU1MDgsIDEyOTQxMSwgMCwgMTIxNDUxLCA4OTM1LCA3ODIzNCwgMTI5MzM3LCAxMjA0NTEsIDAsIDYxNiwgNzQ3NTMsIAorICAgIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCAyMjM2LCAxMjY1NTEsIDEyNDk5MiwgNjA0OCwgNzQ0NjAsIDQyMTEwLCAKICAgICA3Mzk2NSwgMTA4NzAsIDg1NTcsIDExMDU0LCA2ODY2NCwgNzUwNTEsIDk2ODEsIDQ0NzUsIDY3NDI5LCA0MTE0MiwgMjEwMCwgCi0gICAgMTI1MDI0LCAxMjA3MzEsIDYwMzUsIDczNzk2LCA3NjUxLCA2ODQ2LCA2NDQ0MywgOTgzOTU3LCA5ODMyOTYsIDkxNzk4NywgCisgICAgMTI1MDI0LCAxMjA3MzEsIDYwMzUsIDczNzk2LCA3NjUxLCA2ODQ2LCA2NDQ0MywgOTgzOTU3LCAxOTQ5NDEsIDkxNzk4NywgCiAgICAgMCwgMTE4OTY2LCA3NDE0NCwgNDA5OTcsIDY4NDg4LCAxMDM5MiwgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDcxMTgyLCAKLSAgICA5ODAwLCA4OTc5LCAwLCAxMzMwNywgNDEwMDAsIDAsIDUxMTQsIDY0ODcsIDMzODYsIDEyOTA5NCwgMTAzNDQsIDAsIDUxMTUsIAotICAgIDUzOTQsIDQzMjQ2LCA3ODI0MywgNTExMywgNjY1MDUsIDQxMjAwLCAxMjg1ODIsIDQ0MjUsIDE5NDY2OSwgMCwgMCwgCi0gICAgNDMwNzQsIDczNzk5LCAxMjkwNzYsIDc4MTQ3LCA1MTEyLCAxMjE3MywgNzg1NDUsIDEyODc3MSwgNjY4MjQsIDY1MzM4LCAKLSAgICA5ODM2NzYsIDAsIDExOTU4MiwgNDQ3NCwgMTI4OTM2LCA0MzA5MywgNDM5NjQsIDE1ODcsIDAsIDEyNzM3MiwgNjQ0NzUsIAotICAgIDExOTIxNywgMTM2OSwgOTgzNjcyLCA5OTU5LCA3OTI3LCA0Mzk2MywgNDU2MCwgMTIwNzkzLCA2NzgxMSwgOTIyNzcsIAotICAgIDk4MzYyMSwgNjQ5NDgsIDQ0MzAsIDQzOTYxLCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCA4MTk0LCA2NTQ2MiwgCi0gICAgMTA2MjYsIDEwOTY1LCAxMjA5MDUsIDg4OTMsIDk4MzMwMywgMTI1NDIsIDAsIDY1MzQxLCA2NzcwMywgNjU4MjksIDc5MjUsIAotICAgIDExOTgyMiwgMTA0NzUsIDExMzgyNSwgMTI3MDExLCAxMzUyLCAxMTA2OSwgNzcwNywgMTI3NTYwLCAxMjY0ODYsIDY1Mjc5LCAKLSAgICAxMjcxMDIsIDY4MjA3LCA3NDk1NiwgNzA5OSwgNjA0MCwgNjc2ODEsIDEwMDcxLCA3ODU1NCwgOTMzNiwgNDM3NTAsIAotICAgIDEyMTA3NCwgODg5OSwgNzc5OCwgNjQ0NzQsIDY0MjU5LCA2OTg3MywgNjUxODgsIDc4MjAsIDQzMDE4LCAxMjcwODIsIAotICAgIDEyODg5OCwgNzc0NiwgMTQ5MiwgNzg1NTEsIDEwODg0LCA3NTA3NSwgNjY4NjYsIDUxMjcsIDExMjg1LCA0MjUwMSwgNTQ5NSwgCi0gICAgNDI3MywgNDMwOTUsIDQxNDI2LCAxMDg0OSwgNTczMCwgMjk5OSwgNjM0MiwgNjg2MzYsIDc0MzA0LCAzNzEsIDY0MzczLCAKLSAgICA2MDIzLCAxNjksIDU0OTcsIDExNzA4LCA3NTAyOCwgMTI4NjAzLCA2MzIzLCAxMjkwNjUsIDgyMjQsIDEyODQxNywgODkzOCwgCi0gICAgNjA0MywgMTI3MzgsIDEyMDY3MSwgOTgzMDc2LCA1MzIxLCA2ODY0NSwgMTk0Nzk4LCAxMjAyNTEsIDI1ODksIDc0MzMyLCAKLSAgICAxNjg5LCA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDkyOTQwLCAxMTkwNSwgOTgzNjE1LCAwLCAxMjg1MTYsIDEyODE2MywgCi0gICAgNzQ1MTMsIDYwNDksIDAsIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCA5ODM4MjIsIDE1MDMsIDc4MzM2LCAxMjcxNzMsIAotICAgIDcxMzEyLCA1NzMxLCAxMzgxLCAyMzg3LCAxMjY2MTAsIDcwODA4LCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAKLSAgICAwLCA5NjAxLCAyODc5LCA5NjY4LCA5NzY2LCAwLCA1NzI5LCAxMjkxMTAsIDcxMjMwLCA2MDM2LCA2NDg4MSwgNDAyNiwgCi0gICAgOTM2MSwgMTI3MDkxLCAyODg3LCA3MDM4OSwgMzUyNiwgNjI5OCwgMTE5ODUxLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgCi0gICAgMTE4OTY0LCA4NTcyLCA2MDIxLCA3Nzg5NiwgMTI4Mjg4LCA3MTE3NCwgNDMxNTUsIDAsIDcxMTk3LCAzMTQ2LCAxMDk1OSwgCi0gICAgOTQ4MywgODMyMTksIDc3ODkzLCAxMDk4MSwgMTY2LCA5MTc4NDEsIDg2MzUsIDkxNzg0MCwgMTA2MjMsIDQwOCwgMTE5MDU4LCAKLSAgICAxMjc1MDcsIDEzMjk4LCAxMjcyNTMsIDc0MjYsIDQxNjQxLCAxMjcxNywgOTgzNzk1LCA3NjA3LCAxMDYzOSwgNDMzOTYsIAotICAgIDEyOTMwMCwgMTE5MDg5LCA0MTY0MywgNzQxMzQsIDk4MzA1NCwgODcxMywgNDE2NDAsIDEwMjIxLCA0MTY0NSwgNjYyOTMsIAotICAgIDY2NDUsIDY0NiwgNjY3MjYsIDY2NzExLCA0MjEyOSwgNjgyNTUsIDc3OTAxLCAzNDcyLCA4Njk3LCAwLCAxMjA5MzYsIAotICAgIDEyMTA2OSwgMCwgMTE4ODU5LCAwLCA1ODA5LCAxOTUwLCAxMTkzNTYsIDkyNDMyLCA2ODMzOSwgMTI4OTQzLCA0MjEzNiwgCi0gICAgMTIxNDQwLCAwLCAwLCAwLCAzMjQ3LCA5MjQwMiwgNjUwMTcsIDEyODc5NCwgNjg0MjgsIDY2NjY4LCAwLCAxMjExMTIsIAotICAgIDEwOTgzLCAwLCAxMjg3ODcsIDAsIDQxNTY3LCAxMTk4NTIsIDAsIDAsIDc4NDQ2LCAxMTk4NTMsIDEyNzkyMiwgMCwgODI4NSwgCi0gICAgMTI2NTE2LCA0NTA5LCAxMjEwNDMsIDY2NDcxLCAxMjIxNiwgMTI4ODA2LCA0MDk4OCwgODMyMjEsIDc0ODA5LCA0MTcyNywgCi0gICAgMCwgNDI4NDgsIDIzOTYsIDEyODA4MywgMTk0ODkyLCA3NDAxOCwgOTE3NTM4LCA2NDk0MCwgNzAyNywgMzg4NiwgMCwgCisgICAgOTgwMCwgODk3OSwgMTE5MTU2LCAxMzMwNywgNDEwMDAsIDAsIDUxMTQsIDY0ODcsIDMzODYsIDcwNzMwLCAxMDM0NCwgCisgICAgMTI1MDMyLCA1MTE1LCA1Mzk0LCA0MzI0NiwgNzgyNDMsIDUxMTMsIDY2NTA1LCA0MTIwMCwgMTI4NTgyLCA0NDI1LCAKKyAgICAxOTQ2NjksIDEwMDQwNSwgMCwgNDMwNzQsIDczNzk5LCAxMjkwNzYsIDc4MTQ3LCA1MTEyLCAxMjE3MywgMzQ0NiwgCisgICAgMTI4NzcxLCA2NjgyNCwgNjUzMzgsIDEyODk2OSwgMCwgMTE5NTgyLCA0NDc0LCAxMjg5MzYsIDQzMDkzLCA2MjgyLCAxNTg3LCAKKyAgICAwLCAxMDA1NTQsIDY0NDc1LCAxMTkyMTcsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgNDM5NjMsIDQ1NjAsIDY2OTEwLCAKKyAgICA2NzgxMSwgOTIyNzcsIDEyMDYxNCwgNjQ5NDgsIDQ0MzAsIDQzOTYxLCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCAKKyAgICA4MTk0LCA2NTQ2MiwgMTA2MjYsIDEwOTY1LCAxMjA5MDUsIDg4OTMsIDk4MzMwMywgMTI1NDIsIDE5NDg1NywgNjUzNDEsIAorICAgIDY3NzAzLCA2NTgyOSwgNzkyNSwgMTE5ODIyLCAxMDQ3NSwgMTEzODI1LCAxMjcwMTEsIDEzNTIsIDExMDY5LCA3NzA3LCAKKyAgICAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIDEwMDQwNywgNjgyMDcsIDc0OTU2LCA3MDk5LCA2MDQwLCA2NzY4MSwgMTAwNzEsIAorICAgIDc4NTU0LCA5MzM2LCA0Mzc1MCwgMTIxMDc0LCA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDY5ODczLCA2NTE4OCwgNzgyMCwgCisgICAgNDMwMTgsIDEwMDQxMCwgMTI4ODk4LCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIDc1MDc1LCA2Njg2NiwgNTEyNywgCisgICAgMTEyODUsIDQyNTAxLCA1NDk1LCA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgCisgICAgNzQzMDQsIDM3MSwgNjQzNzMsIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDc1MDI4LCAxMjg2MDMsIDYzMjMsIDEyOTA2NSwgCisgICAgODIyNCwgMTI4NDE3LCA4OTM4LCA2MDQzLCAxMjczOCwgMTIwNjcxLCA5ODMwNzYsIDUzMjEsIDY4NjQ1LCA2NTUzLCAKKyAgICAxMjAyNTEsIDI1ODksIDc0MzMyLCAxNjg5LCA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDkyOTQwLCAxMTkwNSwgCisgICAgOTgzNjE1LCAwLCAxMjg1MTYsIDEyNzAxNywgNzQ1MTMsIDYwNDksIDEyODIzOSwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIAorICAgIDEyODEyMCwgMTUwMywgNzI3NjksIDEyNzE3MywgNzEzMTIsIDU3MzEsIDEzODEsIDIzODcsIDEyNjYxMCwgNzA4MDgsIAorICAgIDgyODksIDY0NTI1LCA2NTgxNywgMjg4MSwgNDMxNDIsIDAsIDk2MDEsIDI4NzksIDk2NjgsIDk3NjYsIDAsIDU3MjksIAorICAgIDEyOTExMCwgNzEyMzAsIDYwMzYsIDY0ODgxLCA0MDI2LCA5MzYxLCAxMjcwOTEsIDI4ODcsIDcwMzg5LCAzNTI2LCA2Mjk4LCAKKyAgICAxMTk4NTEsIDc3ODk3LCAxMjAwOTUsIDc4NTE5LCAxMTg5NjQsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDcxMTc0LCAKKyAgICA0MzE1NSwgOTgzODE2LCA3MTE5NywgMzE0NiwgMTA5NTksIDk0ODMsIDgzMjE5LCA3Nzg5MywgMTA5ODEsIDE2NiwgCisgICAgOTE3ODQxLCA4NjM1LCAxMjg3MTQsIDEwNjIzLCA0MDgsIDEwMDQ4MCwgMTI3NTA3LCAxMzI5OCwgMTI2NTE4LCA3NDI2LCAKKyAgICA0MTY0MSwgMTI3MTcsIDEyMDY1OCwgNzYwNywgMTA2MzksIDQzMzk2LCAxMjkzMDAsIDExOTA1MywgNDE2NDMsIDc0MTM0LCAKKyAgICA5ODMwNTQsIDg3MTMsIDQxNjQwLCAxMDIyMSwgOTg1MiwgNjYyOTMsIDY2NDUsIDY0NiwgNjY3MjYsIDY2NzExLCA0MjEyOSwgCisgICAgNjgyNTUsIDc3OTAxLCAzNDcyLCA4Njk3LCAwLCAxMjA5MzYsIDEyMTA2OSwgMTI5MTY4LCAxMTg4NTksIDEyNTIwMywgCisgICAgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNjgzMzksIDEyODk0MywgNDIxMzYsIDEyMTQ0MCwgMCwgMCwgMCwgMzI0NywgCisgICAgOTI0MDIsIDY1MDE3LCAxMjg3OTQsIDY4NDI4LCA2NjY2OCwgMTk0ODg0LCAxMjExMTIsIDEwOTgzLCA5MTc3NjcsIAorICAgIDEyODcwMCwgMCwgNDE1NjcsIDExOTg1MiwgMCwgMCwgNzg0NDYsIDExOTg1MywgMTI3OTA3LCAwLCA4Mjg1LCAxMjY1MTYsIAorICAgIDQ1MDksIDEyMTA0MywgNjY0NzEsIDEyMjE2LCAxMjg4MDYsIDQwOTg4LCA4MzIyMSwgNzQ4MDksIDQxNzI3LCA5MTc4MjUsIAorICAgIDQyODQ4LCAyMzk2LCAxMjgwODMsIDE5NDg5MiwgNzQwMTgsIDkxNzUzOCwgNjQ5NDAsIDcwMjcsIDM4ODYsIDk4MzI1OSwgCiAgICAgNDI0NTcsIDkyODg4LCA4MzI5OSwgOTk2LCA2ODEyMywgOTQwNTgsIDQyNDksIDkyNDEwLCA2OTY1MCwgMTE3MDcsIDgyMjIsIAotICAgIDczODI1LCA3OTM5LCA3MTIxMywgOTI0NjAsIDEyNzgwMSwgMTIxNDA4LCAxMjgzNTksIDg1MzQsIDY5ODUzLCA0MDk4MywgMCwgCi0gICAgMTIxNDIxLCAwLCA3MjAxLCAxMjU2MSwgMTIwODY2LCA0MjM3MSwgMTI1NTgsIDE1NDAsIDkxNzU0OSwgMTAwNTIsIDQwOTgyLCAKLSAgICAxMTk4NDEsIDAsIDE0ODgsIDcxMTc3LCAwLCAxOTQ4MzEsIDkxNzU1OSwgMTI4NDAxLCAwLCAxNTYzLCAxMjgwMzQsIDk2MTksIAotICAgIDEyMDg0MCwgOTE3OTA1LCAxMjA5NTQsIDEyNzg3MiwgNzEzNjMsIDM1NjAsIDc3OTcsIDYwNzAsIDEwMDA2LCAxMjg5MjIsIAotICAgIDI5MjIsIDYwODIsIDcwMTQ3LCA2NTAwOSwgOTgzOTQyLCAxMjU2NywgNjY3MTIsIDAsIDQxNDEyLCAxMjgxMzEsIDExOTU5MSwgCi0gICAgMzYwNywgOTIwMCwgMTAwNDYsIDk2MTIsIDQyMTUzLCA4MjE4LCA5NDg1LCAwLCAyMDMyLCA3ODM1NCwgODM0NjIsIAotICAgIDExOTEzMSwgMCwgMCwgNjc4MjYsIDQzMDg1LCA2MDU3LCA1MDgsIDkzOTY4LCA5Mjk4OSwgNjc5NjgsIDAsIDkyMTk4LCAwLCAKLSAgICAxMjg4MzEsIDYzOCwgNjA4MywgMTE5MDcyLCAxMjQ5NTAsIDAsIDIzMDUsIDc4MzQ4LCA2ODA5NiwgOTE3NzcyLCA2MDU2LCAKLSAgICA2NjU5LCA2Nzk2OSwgOTgzMjkwLCA2MDg1LCAwLCAwLCAzOTE1LCA0MTYzNCwgMCwgNDE2MzksIDYzOTEyLCAxMTk0MSwgCi0gICAgOTgzNzgzLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDQzNzUzLCAzMjQ5LCAxNzY4LCA5Mzk4MiwgMTIzMjgsIDUwMSwgCi0gICAgOTM5ODUsIDEwNjAxLCAwLCA1ODMsIDAsIDQxOTc3LCAwLCA2NjAwNCwgNjY0MTYsIDY1MDUsIDc0MDEwLCA5ODMyNTAsIAotICAgIDEzMDY0LCA1NTI2NywgMTE5MTEzLCA2NTAwLCA1NTI2LCA2NTA0OSwgMCwgMTI5OTAsIDAsIDkyMzc2LCAxMjc0NSwgOTY3OCwgCi0gICAgMTIxMTA4LCAxMjA1ODcsIDk4NjksIDgzMTUwLCAxNzcxLCAxMjg5NjUsIDg5MzYsIDkyOTY0LCAwLCA0MjA4LCA3ODM0MSwgCi0gICAgNzg1NjcsIDc4MzQyLCA2Nzc0MiwgOTgzMjA4LCA3NDEwMSwgMTI4NjA1LCAxMTc2MiwgMCwgNzAwOTYsIDY4MzUsIDY4MDEwLCAKLSAgICA2NjQ3NSwgMTIwMjYwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAxMTk4MzAsIDUwNjksIDczNzM2LCA1MDI4LCA5ODk3LCAKLSAgICA5Mjc3NCwgNzM3MzksIDUwMjYsIDk4MzI1NSwgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCAKLSAgICA0MTkwMSwgNzQ3OTAsIDc4MTM4LCAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCAKLSAgICA2ODQyNCwgNDEwNzAsIDc3OTAzLCA3NjU4LCAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgCi0gICAgMTcxNiwgOTgzNjc5LCAxMDYwMCwgNzg1NTgsIDYyMCwgNDEwMDEsIDYwMjgsIDcwNDQ1LCA0Mjg5MiwgMCwgNzExMTYsIAotICAgIDUwMjQsIDc0OTQ1LCA0MTAwMywgNjgxMzcsIDUwMjUsIDY5ODkyLCA5ODMyMDksIDc1MDM5LCAxMTg4ODUsIDEyNzk1NiwgCisgICAgNzM4MjUsIDc5MzksIDcxMjEzLCA5MjQ2MCwgNzI3NDcsIDY3MTMxLCAxMjgzNTksIDg1MzQsIDY5ODUzLCA0MDk4MywgMCwgCisgICAgMTIxNDIxLCAwLCA3MjAxLCAxMjU2MSwgMTIwODY2LCA0MjM3MSwgMTE4NDQsIDE1NDAsIDE5NDgyNywgMTAwNTIsIDQwOTgyLCAKKyAgICAxMTk4NDEsIDAsIDE0ODgsIDcxMTc3LCAwLCAxOTQ4MzEsIDkxNzU1OSwgMTI4NDAxLCAxOTQ5MjAsIDE1NjMsIDEyODAzNCwgCisgICAgOTYxOSwgMTIwODQwLCAxMjk0MTYsIDEyMDk1NCwgMTIxNDYwLCA3MTM2MywgMzU2MCwgNzc5NywgNjA3MCwgMTAwMDYsIAorICAgIDEyODkyMiwgMjkyMiwgNjA4MiwgNzAxNDcsIDY1MDA5LCA5ODM5NDIsIDEyNTY3LCA2NjcxMiwgMCwgNDE0MTIsIDc4NjUxLCAKKyAgICAxMTk1OTEsIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCA0MjE1MywgODIxOCwgOTQ4NSwgNjY3NjQsIDIwMzIsIDc4MzU0LCAKKyAgICA4MzQ2MiwgMTE5MTMxLCAwLCAwLCA2NzgyNiwgNDMwODUsIDYwNTcsIDUwOCwgOTM5NjgsIDkyOTg5LCA2Nzk2OCwgCisgICAgOTE3OTQxLCA5MjE5OCwgMCwgMTI4ODMxLCA2MzgsIDYwODMsIDExOTA3MiwgMTI0OTUwLCA3MDE0NCwgMjMwNSwgNzgzNDgsIAorICAgIDY4MDk2LCA5MTc3NzIsIDYwNTYsIDY2NTksIDY3OTY5LCA5ODMyOTAsIDYwODUsIDAsIDAsIDM5MTUsIDQxNjM0LCAKKyAgICAxMjgyMjcsIDQxNjM5LCA2MzkxMiwgMTE5NDEsIDk4Mzc4MywgNDAyOCwgMTc4NywgNDIxODAsIDQzMDk2LCA0Mzc1MywgCisgICAgMzI0OSwgMTc2OCwgOTM5ODIsIDEyMzI4LCA1MDEsIDkzOTg1LCAxMDYwMSwgOTgzMjk0LCA1ODMsIDExOTM1MiwgNDE5NzcsIAorICAgIDAsIDY2MDA0LCA2NjQxNiwgNjUwNSwgNzQwMTAsIDkxNzgzMywgMTMwNjQsIDU1MjY3LCAxMTkxMTMsIDY1MDAsIDU1MjYsIAorICAgIDY1MDQ5LCAxMjgwMjgsIDEyOTkwLCA5ODM5MDEsIDkyMzc2LCAxMjc0NSwgOTY3OCwgMTIxMTA4LCAxMjA1ODcsIDk4NjksIAorICAgIDgzMTUwLCAxNzcxLCAxMjg5NjUsIDg5MzYsIDkyOTY0LCAxMjUyNzMsIDQyMDgsIDc4MzQxLCA3ODU2NywgNzgzNDIsIAorICAgIDY3NzQyLCA5ODMyMDgsIDc0MTAxLCAxMjg2MDUsIDExNzYyLCAxMjkzMTcsIDcwMDk2LCA2ODM1LCA2ODAxMCwgNjY0NzUsIAorICAgIDEyMDI2MCwgNTAyNywgNzgxNzIsIDEyODg3OCwgMTE5ODMwLCA1MDY5LCA3MzczNiwgNTAyOCwgOTg5NywgOTI3NzQsIAorICAgIDczNzM5LCA1MDI2LCA5ODMyNTUsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgNDE5MDEsIAorICAgIDc0NzkwLCA3ODEzOCwgMTE5MzYxLCA5ODM1NjQsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgNjg0MjQsIAorICAgIDQxMDcwLCA3NzkwMywgNzY1OCwgMzQ0MCwgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIDE3MTYsIAorICAgIDk4MzY3OSwgMTA2MDAsIDc4NTU4LCA2MjAsIDQxMDAxLCA2MDI4LCA3MDQ0NSwgNDI4OTIsIDk4MzMxMywgNzExMTYsIAorICAgIDUwMjQsIDc0OTQ1LCA0MTAwMywgNjgxMzcsIDUwMjUsIDcyOTcsIDkxNzgyNCwgNzUwMzksIDExODg4NSwgMTI3OTU2LCAKICAgICA2NTU1NywgMCwgNzQ1NDEsIDEyODkyNCwgMTE1OTksIDEyODIwOSwgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgMTE1OTcsIAogICAgIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzAyNzMsIDExNTY5LCA2NTI3NSwgODkwNiwgNDM5NDUsIDU3NTUsIDI2MzYsIAogICAgIDcxMjAzLCAxMDgxNSwgMTE2MTksIDIzMDEsIDQxNTQwLCA3ODE1LCAxMTYxNiwgNjk3OSwgMTIwODAsIDc3MjEsIDExNjA0LCAKLSAgICA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCA5MTc3NjMsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCA2Njg4NiwgCi0gICAgNjQxMzEsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCAKLSAgICA0MzYwNiwgNzExODUsIDY4Mzk3LCA2NjM3MCwgNzQyODIsIDQyMzM1LCA2OTc4NiwgNzI0MjEsIDgyOTk4LCA3NTM4LCAKLSAgICA1MzE1LCA4MzM2NywgNDI0OTEsIDkyOTAxLCA0MjA2MSwgMTI4MDAyLCA0NTc2LCAwLCA2ODQxNywgNDM4MDksIDQyNzcsIDAsIAotICAgIDM1NjMsIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIDExMzM3LCA3ODIwOSwgMTIwMjQ0LCA2Mzk4OSwgCi0gICAgMzk1OCwgMTIxMzIsIDE4NDksIDAsIDk5MjEsIDQyNDUxLCA0MjUzLCA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgCi0gICAgNDExNjAsIDEyMTQ4MSwgMzYxOCwgNzgzMzgsIDE5NDkyNCwgNDMzMDAsIDUxNTYsIDkyNjI5LCA3MDM1MCwgOTI5LCA2ODI3LCAKLSAgICA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAyMjE1LCA0MTY2MiwgOTQwMTAsIDExOTI2MiwgMCwgCi0gICAgMTI4ODI0LCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MzQsIDQyNTc4LCA3MTA0OSwgNDE2NjEsIDc4MzUxLCAKLSAgICA0MzI2NywgOTM1NiwgMCwgMTk0ODgwLCA5ODM0MDEsIDEyODYsIDEwMTY2LCA5ODMxMTcsIDAsIDY0NzA3LCAxMjg5MjUsIAotICAgIDQyNDc2LCA3NzMwLCAxMTE1NiwgMTI4NTIyLCA0MjQ4MywgMTI5MDgzLCA3NDk0MCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgCi0gICAgNDMzNTksIDAsIDY2NDEsIDUyNSwgNDE2MjcsIDkxNzkyMywgODc2MywgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgCi0gICAgNjUyMjUsIDgzMjEsIDQyNTA0LCA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIDQzNzcsIDg1NTksIDEyODMyMSwgODU4NywgCi0gICAgMTIxMzE4LCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCAKLSAgICA4MzE1MywgMTEzNzQsIDc4MDQzLCAxMDg4OSwgNDM0NjEsIDc3NTcsIDQyNDYyLCAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgCi0gICAgMjcxOCwgNDE2OCwgNDM5MDQsIDEzMzA4LCAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIDQzOTAyLCA3Nzk0OCwgMzYzLCAKLSAgICAxMTAxNSwgNDM5MDMsIDc3OTQ0LCA0Mzg1NywgODMwNDksIDY2NjkyLCAxMjA4MjYsIDAsIDY2NDkyLCA2NTkzLCA2NDYyNSwgCi0gICAgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDAsIDEwMDEzLCA2NDQzNCwgNzUwMTAsIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDY0MzgyLCAKLSAgICAxMjgzMywgNzc4MzAsIDAsIDEyOTcsIDQxNjMwLCA2MzAsIDEyMDk2MCwgOTgzOTIzLCAxMjA3NzQsIDcwMTY1LCAxMDQzLCAKLSAgICA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjQ5NDUsIDMxMywgMTIxNDgzLCA0MTg4MSwgMTk0NjU4LCA0MjMxMSwgNzQ0NSwgCi0gICAgNDM5MDYsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCAKLSAgICA5NDIyLCA0Mzg5NCwgNjY0OTUsIDY5OTkwLCA5ODM4ODUsIDkyOTkwLCA0MTcxOCwgMTA3MDcsIDE2MDMsIDk4MzcwMywgCi0gICAgMTE5MDAzLCAwLCA2MzEsIDc3OTUyLCA2OTcwMywgMTMxNjEsIDY1MjcyLCA3MTA2NywgMTA1NDYsIDc0MjEwLCA3ODEwMSwgCi0gICAgMTE2MDAsIDc3OTYxLCAyNzk3LCA0MzkyNCwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgCi0gICAgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgMTI3NTI4LCAxMTE5OCwgNjY4MjEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgNjYzNjQsIAotICAgIDQyNDMzLCA3Nzk2NCwgNzYwMywgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCA4MjQ0LCAKLSAgICAzNjIsIDkyNDM5LCA0Mzg5MCwgODAzNywgNDM3NzcsIDExNTM1LCAxMjY1MzksIDQzODkzLCA1MTg1LCA3MTY1LCA1NTIxLCAKLSAgICAxMDMzNCwgMjA5MywgNzEzMjksIDEwMzAyLCAxMjUxMzEsIDEwMTA0LCAxMDI3LCA1MTgxLCAxMjg0MzUsIDUxMTcsIAotICAgIDEwNTIzLCAxNDQ2LCA0MjMyMCwgNjg0NSwgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgCi0gICAgNDI4OTgsIDM0MDUsIDAsIDE5NDY0NCwgNTUyMywgNDM5MTUsIDQyNjIwLCA5MjQ0NywgNzQ5NDMsIDk1NDksIDAsIDEwNTQ5LCAKLSAgICA0MzkyMywgOTY2MSwgNDI5MzMsIDc0ODg0LCA3NzkxMCwgNzgwNjgsIDQzOTIxLCAwLCA3MTE4NCwgOTgzMDcwLCA0MTk5MSwgCi0gICAgOTgzODkzLCAwLCA3NjMwLCA5ODQ2LCA3Njg0LCAxMDM1MCwgMTI4NDUzLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCAKLSAgICA3Nzk4MCwgNjY0ODUsIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA0MzkwOSwgNzQ0MzgsIDEyMzMwLCAxMjgyNzIsIDAsIAotICAgIDQyNDE3LCA0MjM4MywgNjY2MzAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNDM5MDgsIDc0NDQzLCAxMjc4OTQsIDEwMjA5LCAKLSAgICA4MzEzLCA0MTk1LCA3NDQzNSwgMTMxNiwgNjY2OTAsIDc1MDcyLCA2MzMyLCA2NDg5NCwgOTgzMTU2LCA2NTg3MSwgNjcyNTAsIAotICAgIDE3MzYsIDk4MzY4NCwgMzkwMSwgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODI0MSwgNjkzLCA5MTMwLCAKLSAgICAzMTQsIDY0MTQ5LCA0MjQyMCwgMTE5NDksIDEyNzIwMCwgMTIwMTUyLCAxMTAyNiwgMTIwNTE2LCA1MzMyLCA2OTQwLCAKLSAgICA2NDE1NCwgMTI2MzUsIDEyNDk4MCwgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDgzMzA3LCA3ODg0MCwgNzEzNjgsIAotICAgIDEyODI0LCA0MzkxMSwgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgCi0gICAgNjQ1NjAsIDM3NTcsIDAsIDAsIDc0MzAyLCA2NTg2OSwgNzM3NjAsIDI1NjksIDc0OTc2LCAyMzI2LCA2NTc0MCwgMjU2NSwgCi0gICAgNDI0NTksIDc1OTYsIDc5MjEsIDk4Mzg2OCwgNzM4NjIsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCA5MjYyMiwgCi0gICAgNDA0NCwgOTI2NDYsIDQzOTUzLCAxMjIzMywgOTgzODcxLCAxMDIzLCA0NzQsIDE5NDk0MCwgMTE5ODE4LCAwLCAwLCAKKyAgICA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCAxMjY0NjYsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCA2Njg4NiwgCisgICAgNjQxMzEsIDY2MTYsIDEyMDc5NiwgMTE4ODc1LCAxMDk1MywgMzkxLCA5ODMxMDMsIDY5Nzg1LCA0ODIsIDQyMjk2LCAKKyAgICAxMTU4OCwgMTI4NTkxLCA0MzYwNiwgNzExODUsIDY4Mzk3LCA2NjM3MCwgNzQyODIsIDQyMzM1LCA2OTc4NiwgMTIwNTAsIAorICAgIDgyOTk4LCA3NTM4LCA1MzE1LCA4MzM2NywgNDI0OTEsIDkyOTAxLCA0MjA2MSwgMTI4MDAyLCA0NTc2LCAwLCA2ODQxNywgCisgICAgNDM4MDksIDQyNzcsIDAsIDM1NjMsIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIDExMzM3LCAKKyAgICA3ODIwOSwgMTIwMjQ0LCA2Mzk4OSwgMzk1OCwgMTIxMzIsIDE4NDksIDEyNzMzOCwgOTkyMSwgNDI0NTEsIDQyNTMsIAorICAgIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCA0MTE2MCwgMTIxNDgxLCAzNjE4LCA3ODMzOCwgOTM5NTYsIDQzMzAwLCAKKyAgICA1MTU2LCA5MjYyOSwgNzAzNTAsIDkyOSwgNjgyNywgNDIwMzUsIDQyNDM3LCAxNTU1LCA2Nzg0NywgODY5MSwgNjY0MzUsIAorICAgIDIyMTUsIDQxNjYyLCA5NDAxMCwgMTE5MjYyLCAwLCAxMjg4MjQsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIDk4MzczNCwgCisgICAgNDI1NzgsIDcxMDQ5LCA0MTY2MSwgNzgzNTEsIDQzMjY3LCA5MzU2LCAwLCAxOTQ4ODAsIDk4MzQwMSwgMTI4NiwgMTAxNjYsIAorICAgIDk4MzExNywgMCwgNjQ3MDcsIDEyODkyNSwgNDI0NzYsIDc3MzAsIDExMTU2LCAxMjg1MjIsIDQyNDgzLCAxMjkwODMsIAorICAgIDc0OTQwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCA0MzM1OSwgNzI4MjcsIDY2NDEsIDUyNSwgNDE2MjcsIDkxNzkyMywgODc2MywgCisgICAgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgNjUyMjUsIDgzMjEsIDQyNTA0LCA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIAorICAgIDQzNzcsIDg1NTksIDEyODMyMSwgODU4NywgMTIxMzE4LCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgMTU3NiwgCisgICAgNzczNSwgOTIzOTgsIDAsIDczODQwLCA4MzE1MywgMTEzNzQsIDc4MDQzLCAxMDg4OSwgNDM0NjEsIDc3NTcsIDQyNDYyLCAKKyAgICAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgMjcxOCwgNDE2OCwgNDM5MDQsIDEzMzA4LCAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIAorICAgIDQzOTAyLCA3Nzk0OCwgMzYzLCAxMTAxNSwgNDM5MDMsIDc3OTQ0LCA0Mzg1NywgODMwNDksIDY2NjkyLCAxMjA4MjYsIDAsIAorICAgIDY2NDkyLCA2NTkzLCA2NDYyNSwgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDExMzc5NCwgMTAwMTMsIDY0NDM0LCA3NTAxMCwgCisgICAgMTI3MDk1LCA5NDkyLCAxMTc4MiwgOTIxMiwgMTI4MzMsIDc3ODMwLCA3MDY5MiwgMTI5NywgNDE2MzAsIDYzMCwgMTIwOTYwLCAKKyAgICA5ODM5MjMsIDEyMDc3NCwgNzAxNjUsIDEwNDMsIDQzNjUyLCA2NjIyMywgMTAwOTAsIDEyNTI0OSwgMTI0OTQ1LCAzMTMsIAorICAgIDEyMTQ4MywgNDE4ODEsIDE5NDU3NSwgNDIzMTEsIDc0NDUsIDQzOTA2LCA1NzUwLCAxMDc1OSwgOTQxOSwgNTUyMjIsIAorICAgIDk0MDUsIDExMjY4LCA0MjkxOSwgOTM5OCwgODUyNiwgOTM5OSwgOTQyMiwgNDM4OTQsIDY2NDk1LCA2OTk5MCwgOTgzODg1LCAKKyAgICA5Mjk5MCwgNDE3MTgsIDEwNzA3LCAxNjAzLCA5ODM3MDMsIDExOTAwMywgMTAxMDYxLCA2MzEsIDc3OTUyLCA2OTcwMywgCisgICAgMTMxNjEsIDY1MjcyLCA3MTA2NywgMTA1NDYsIDc0MjEwLCA3ODEwMSwgMTE2MDAsIDc3OTYxLCAyNzk3LCA0MzkyNCwgCisgICAgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgCisgICAgMTI3NTI4LCAxMTE5OCwgNjY4MjEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgNjYzNjQsIDQyNDMzLCA3Nzk2NCwgNzYwMywgCisgICAgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCA4MjQ0LCAzNjIsIDkyNDM5LCA0Mzg5MCwgCisgICAgODAzNywgNDM3NzcsIDExNTM1LCAxMjY1MzksIDQzODkzLCA1MTg1LCA3MTY1LCA1NTIxLCAxMDMzNCwgMjA5MywgNzEzMjksIAorICAgIDEwMzAyLCAxMjUxMzEsIDEwMTA0LCAxMDI3LCA1MTgxLCAxMjg0MzUsIDUxMTcsIDEwNTIzLCAxNDQ2LCA0MjMyMCwgNjg0NSwgCisgICAgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgNDI4OTgsIDM0MDUsIDAsIDE5NDY0NCwgCisgICAgNTUyMywgNDM5MTUsIDQyNjIwLCA5MjQ0NywgNzQ5NDMsIDk1NDksIDAsIDEwNTQ5LCA0MzkyMywgOTY2MSwgNDI5MzMsIAorICAgIDc0ODg0LCA3NzkxMCwgNzgwNjgsIDQzOTIxLCAwLCA3MTE4NCwgOTgzMDcwLCA0MTk5MSwgMTI5MzY5LCAwLCA3NjMwLCAKKyAgICA5ODQ2LCA3Njg0LCAxMDM1MCwgMTI4NDUzLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCA3Nzk4MCwgNjY0ODUsIAorICAgIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA0MzkwOSwgNzQ0MzgsIDEyMzMwLCAxMjgyNzIsIDAsIDQyNDE3LCA0MjM4MywgCisgICAgNjY2MzAsIDM0MDcsIDYyOTMsIDAsIDY2MjUyLCA0MzkwOCwgNzQ0NDMsIDEyNzg5NCwgMTAyMDksIDgzMTMsIDQxOTUsIAorICAgIDc0NDM1LCAxMzE2LCA2NjY5MCwgNzUwNzIsIDYzMzIsIDY0ODk0LCA5ODMxNTYsIDY1ODcxLCA2NzI1MCwgMTczNiwgCisgICAgMTIxMDA2LCAzOTAxLCAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4MjQxLCA2OTMsIDkxMzAsIDMxNCwgCisgICAgNjQxNDksIDQyNDIwLCAxMTk0OSwgMTI3MjAwLCAxMjAxNTIsIDExMDI2LCAxMjA1MTYsIDUzMzIsIDY5NDAsIDY0MTU0LCAKKyAgICAxMjYzNSwgMTI0OTgwLCA0MjcwNiwgMTc1MSwgMjczLCA4MTY1LCAxMzE2NiwgODMzMDcsIDc4ODQwLCA3MTM2OCwgMTI4MjQsIAorICAgIDQzOTExLCA0NTI4LCA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCA2NDU2MCwgCisgICAgMzc1NywgMCwgOTQwNTksIDc0MzAyLCA2NTg2OSwgNzM3NjAsIDI1NjksIDc0OTc2LCAyMzI2LCA2NTc0MCwgMjU2NSwgCisgICAgNDI0NTksIDc1OTYsIDc5MjEsIDEyNjU2NywgNzM4NjIsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCA5MjYyMiwgCisgICAgNDA0NCwgOTI2NDYsIDQzOTUzLCAxMjIzMywgMTEzODE0LCAxMDIzLCA0NzQsIDEyNTI3MiwgMTE5ODE4LCA5ODM3NDQsIDAsIAogICAgIDQyNDg3LCA2NTU1NiwgMTIxMTY4LCAxMjc4NjYsIDQyMjk1LCAxMjgyMDMsIDEyMTQ3NCwgNzEzMjIsIDkyNTE4LCAyMjIyLCAKLSAgICA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDAsIDE4NTgsIDk4MzQ1NSwgMCwgNTUyNTEsIDEwMTE4LCAKLSAgICAzMTMzLCAxMjc3NzEsIDcxODU3LCAxMjEyMDEsIDk2MTAsIDgwNjgsIDgxOTcsIDkxNzU0NSwgNjk5LCAwLCA0MTY2NSwgCi0gICAgNTg2OCwgMTI4NzEwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgMCwgMTkyMywgCi0gICAgNjU1ODMsIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCA3ODEyOSwgNjg3NTEsIDAsIDY0NjQsIDcwMzYsIDI5OTYsIAotICAgIDE5MzcsIDk4Mzc1MSwgNjg0ODEsIDQxODM1LCA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDc3OTY1LCAxMTk4MzcsIDExMDE3LCAKLSAgICAxMjA2MDEsIDAsIDI5MywgNzc5NjYsIDkyMTY5LCA2NDc5MSwgNDE4MjcsIDQyNDY2LCA0MzQyMiwgMTA1NzksIDg1NjAsIAotICAgIDcxMzUwLCA2NTQxMywgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAxOTQxLCAzOTAwLCAxMjg5NjcsIDE3MTMsIDc3OTY5LCAKLSAgICAxMjEyOTIsIDczOTU3LCAxMTQwNywgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIDY0MTA1LCAxMjA1NjUsIDQyNDgxLCAKLSAgICAxMTcxNiwgNjY0NzMsIDcxNzksIDQyMjg5LCAxMjUwOTUsIDY0MTAzLCA5NjksIDAsIDkzNTIsIDcxNDgxLCA2MTY1LCAKLSAgICA2NDEwMCwgOTE3ODE5LCA2NjMyLCA3Mzg2MSwgNDI0MDIsIDc0MzI3LCA3ODA2LCAxMTM3NjIsIDg5MTQsIDY2OTA4LCAKLSAgICAxMjQ5NTQsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgNjc4NDksIDU3NDYsIDY2NDA4LCAKLSAgICAwLCA2NDQxNiwgNDI0MjIsIDgzNTA2LCA5ODMwNDYsIDcwODIsIDczNzc1LCAzMzgsIDUwNTksIDEyMTM2OSwgODM1MjQsIAotICAgIDQyMzI4LCAxMDc2NywgMTI4ODYyLCA4MTE1LCA4MzQ1NCwgNzQ3NTgsIDAsIDgyMjcsIDIwNzMsIDEyMTgsIDkxNzc5MCwgCi0gICAgOTgzMjMwLCA2NTg0OCwgOTI4ODQsIDgzNTE3LCA2OTg2MywgMTI4MzI4LCAxMjY5ODcsIDQ0ODYsIDEyODA4MiwgOTE3Nzk2LCAKLSAgICAwLCAxMDkyNSwgMCwgODM1MTUsIDgzNTA3LCAxMjQ5NTIsIDQyMzA5LCAxMDI1NywgNjUxOTEsIDEwMjczLCA3NjY4LCAKLSAgICAxMDMwNSwgNDI0NjEsIDc0ODgyLCA0MjM0OSwgODgzMiwgNzgwNTEsIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCAKLSAgICA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgNjk4NzQsIDc3OTQsIDExOTIxNCwgNDI0MjksIDYzNzcsIDQyMzE2LCAxMTkwMjYsIAotICAgIDM2NjksIDM5NjgsIDQyNDY4LCA3MTMxOSwgNjk2NTgsIDAsIDY1NDAyLCAxMTk1ODEsIDE5NDk3MywgMTI4NzQ3LCA2NDkzMywgCi0gICAgMTk0NjI3LCA0MTk2MCwgNjY5OSwgNDI5MDMsIDEyODc1NSwgMTI1MDEzLCA2ODIzLCA0MjM5MSwgMTU4OCwgNDM1MDIsIAotICAgIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgNzEzMTUsIDEyODMzNSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgCi0gICAgNDI0ODAsIDkxNzk0OSwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgNDM5NzUsIDcyNDI3LCAwLCAxMTM4MTYsIDY0NCwgNjU1MDAsIAotICAgIDQxNjU3LCAxMDc3OCwgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNjYyOTYsIAotICAgIDAsIDAsIDQxNTU0LCAwLCA4MjIwLCAxMjg0MzIsIDQxNTU3LCAwLCAxMjg5MzgsIDExMDcwLCAxMTkyMjEsIDUxNTcsIAotICAgIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCA3Mzg4OCwgCi0gICAgNzQzNzcsIDExMDI5LCA2NjY1MSwgOTgzMDY4LCAxMjg0OTIsIDExODkzMCwgNjQ1MjcsIDEyMTM5NSwgNzg3NywgMTI3MjMsIAotICAgIDk4Mzc5OCwgNjg3NzYsIDEyMDA5NiwgNzQ2MDIsIDk5NTUsIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgCi0gICAgMTIxOTAsIDEyMzE5LCA3ODYzMCwgMCwgNzg2MzEsIDk1MDIsIDY1NDI3LCAxMjUwNDgsIDY1NDI0LCAxMjYwNywgMTIwOTY2LCAKLSAgICA5NzM0LCA2NTQyNSwgMCwgMTIxNDMxLCAxMjczNTcsIDc0ODkwLCA3ODgzNiwgMTAxMTIsIDEwODI3LCAxOTQ2MzUsIDk4NjYsIAotICAgIDc0NTI3LCA2NjY3NSwgMTE4ODY3LCA4NjI1LCA2NDM0NiwgMTEyOTAsIDEwNDc3LCA2NzczOCwgODYzNiwgOTgzOTI3LCAKLSAgICA4MzE1LCA2NTQ0NCwgOTgzNzkzLCAxOTUwMTEsIDc0NTk1LCA2MTUyLCA3ODgyMCwgNzM5NDcsIDY2MjksIDEyNTA1NiwgCi0gICAgMTIwMTcxLCAwLCA3NDU4OSwgNDM5OTMsIDEyODM0NiwgNjk3OTAsIDY0NDM1LCA2NDk1NSwgNDM2OTAsIDExMDQ2LCAKLSAgICAxMTQ5MCwgNDI3MzAsIDQ0ODUsIDcxMTI2LCAxMjgxOTQsIDY0OTI2LCAwLCA5ODMxMzMsIDQzODMwLCA1ODY5LCAxMjQzNywgCi0gICAgNDI3MjgsIDAsIDcwNDAsIDM1ODgsIDAsIDEyODI1LCAxMjExNTgsIDAsIDEyNzI1LCA3NDA5MiwgMTI3MTA2LCA3ODYzNCwgCisgICAgNjY0OTksIDEyOTMzNiwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDk4MzIyNiwgMTg1OCwgOTgzNDU1LCAwLCAKKyAgICA1NTI1MSwgMTAxMTgsIDMxMzMsIDEyNjQ5OCwgNzE4NTcsIDEyMTIwMSwgOTYxMCwgODA2OCwgODE5NywgOTE3NTQ1LCA2OTksIAorICAgIDAsIDQxNjY1LCA1ODY4LCAxMjg3MTAsIDkyNjk1LCA0MjE4MiwgNzU4MSwgMTk5NDAsIDQzNjY4LCA0MTY2NywgMTI4MDU3LCAKKyAgICAwLCAxOTIzLCA2NTU4MywgNjU4MDIsIDkzOTcwLCA2NDU5NywgNDM0NDQsIDc4MTI5LCA2ODc1MSwgOTE3ODM2LCA2NDY0LCAKKyAgICA3MDM2LCAyOTk2LCAxOTM3LCAxMjcwNTAsIDY4NDgxLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCA3Nzk2NSwgCisgICAgMTE5ODM3LCAxMTAxNywgMTIwNjAxLCA5ODMxNjksIDI5MywgNzc5NjYsIDkyMTY5LCA2NDc5MSwgNDE4MjcsIDQyNDY2LCAKKyAgICA0MzQyMiwgMTA1NzksIDg1NjAsIDcxMzUwLCA2NTQxMywgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAxOTQxLCAzOTAwLCAKKyAgICAxMjg5NjcsIDE3MTMsIDc3OTY5LCA5NDAxNywgNzM5NTcsIDExNDA3LCA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgCisgICAgNjQxMDUsIDEyMDU2NSwgNDI0ODEsIDExNzE2LCA2NjQ3MywgNzE3OSwgNDIyODksIDEyNTA5NSwgNjQxMDMsIDk2OSwgMCwgCisgICAgOTM1MiwgNzE0ODEsIDYxNjUsIDY0MTAwLCA5MTc4MTksIDY2MzIsIDcyODI4LCA0MjQwMiwgNzQzMjcsIDc4MDYsIAorICAgIDExMzc2MiwgODkxNCwgNjY5MDgsIDEyNDk1NCwgMzE4MywgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCAKKyAgICA2Nzg0OSwgNTc0NiwgNjY0MDgsIDEyNzQwMiwgNjQ0MTYsIDQyNDIyLCA4MzUwNiwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgCisgICAgMzM4LCA1MDU5LCAxMjEzNjksIDgzNTI0LCA0MjMyOCwgMTA3NjcsIDEyODg2MiwgODExNSwgODM0NTQsIDc0NzU4LCAwLCAKKyAgICA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIDk4MzIzMCwgNjU4NDgsIDkyODg0LCA4MzUxNywgNjk4NjMsIDEyODMyOCwgCisgICAgMTI2OTg3LCA0NDg2LCAxMTk5NzMsIDkxNzc5NiwgMCwgMTA5MjUsIDAsIDgzNTE1LCA4MzUwNywgMTI0OTUyLCA0MjMwOSwgCisgICAgMTAyNTcsIDY1MTkxLCAxMDI3MywgNzY2OCwgMTAzMDUsIDQyNDYxLCA3NDg4MiwgNDIzNDksIDg4MzIsIDc4MDUxLCAKKyAgICA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAxMTkyMTQsIAorICAgIDQyNDI5LCA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAxMjgxNzAsIAorICAgIDY1NDAyLCAxMTk1ODEsIDE5NDk3MywgMTI4NzQ3LCA2NDkzMywgMTk0NjI3LCA0MTk2MCwgNjY5OSwgNDI5MDMsIDEyODc1NSwgCisgICAgMTI1MDEzLCA2ODIzLCA0MjM5MSwgMTU4OCwgNDM1MDIsIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgNzEzMTUsIAorICAgIDEyMTE0NSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgNDI0ODAsIDEyOTAzMSwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgCisgICAgNDM5NzUsIDcyNDI3LCAwLCAxMTM4MTYsIDY0NCwgNjU1MDAsIDQxNjU3LCAxMDc3OCwgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAKKyAgICAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNjYyOTYsIDAsIDAsIDQxNTU0LCAwLCA4MjIwLCAxMjg0MzIsIDQxNTU3LCAKKyAgICA5ODM4ODIsIDEyODkzOCwgMTEwNzAsIDExOTIyMSwgNTE1NywgNDAyMCwgNzM4NTgsIDQxNTU1LCA5NTE0LCA2NDgxOCwgCisgICAgNjUxMDMsIDY0NjQxLCA2NDMwMywgNzgxMzEsIDc1MjAsIDczODg4LCA3NDM3NywgMTEwMjksIDY2NjUxLCAxMjczNDYsIAorICAgIDEyODQ5MiwgMTE4OTMwLCA2NDUyNywgMTIxMzk1LCA3ODc3LCAxMjcyMywgOTgzNzk4LCA2ODc3NiwgMTIwMDk2LCA3Mzk1NCwgCisgICAgOTk1NSwgMTE5NTU3LCA0MDU1LCA0MjgxNywgMCwgNjUyMTIsIDExNzE1LCAxMjE5MCwgMTIzMTksIDc4NjMwLCA3MTI3MCwgCisgICAgNzg2MzEsIDk1MDIsIDY1NDI3LCAxMjUwNDgsIDY1NDI0LCAxMjYwNywgMTIwOTY2LCA5NzM0LCA2NTQyNSwgOTIyMDcsIAorICAgIDc4ODM0LCAxMjczNTcsIDc0ODkwLCA3MjgyMiwgMzQ0OCwgMTA4MjcsIDE5NDYzNSwgOTg2NiwgNzQ1MjcsIDY2Njc1LCAKKyAgICAxMTg4NjcsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgMTA0NzcsIDY3NzM4LCA4NjM2LCA5ODM5MjcsIDgzMTUsIDY1NDQ0LCAKKyAgICA5ODM3OTMsIDE5NTAxMSwgNzQ1OTUsIDYxNTIsIDc4ODIwLCA3Mzk0NywgNjYyOSwgMTI1MDU2LCAxMjAxNzEsIDAsIAorICAgIDc0NTg5LCA0Mzk5MywgMTI4MzQ2LCA2OTc5MCwgNjQ0MzUsIDY0OTU1LCA0MzY5MCwgMTEwNDYsIDExNDkwLCA0MjczMCwgCisgICAgNDQ4NSwgNzExMjYsIDEyNjU4OCwgNjQ5MjYsIDEyMDE2OCwgOTgzMTMzLCA0MzgzMCwgNTg2OSwgMTI0MzcsIDQyNzI4LCAwLCAKKyAgICA3MDQwLCAzNTg4LCA2Mzc5NywgMTI4MjUsIDEyMTE1OCwgNzI4NjQsIDEyNzI1LCA3NDA5MiwgMTI3MTA2LCA3ODYzNCwgCiAgICAgMjIzLCA3ODYzNSwgNjk2NzUsIDEyMDExOSwgNDI0NDQsIDEyODQ0OSwgNjQ0OTksIDY1MjQ1LCAxMjkxMDQsIDExNzEsIAogICAgIDEyODgwMiwgNjk3MTcsIDEyMDExMywgMTgwNSwgODc3MiwgNDM4MjAsIDAsIDk5MzAsIDY1MjQ3LCA3ODYxOSwgNzQ5NTQsIAogICAgIDIzMzgsIDEyMDAzMiwgMTE4ODUzLCAwLCA0MjY3NiwgMCwgNjQ4MDAsIDEzMDkyLCAxMTE4NSwgNjgxMjYsIDEyMTMsIAogICAgIDEyODQxOSwgNjQwNzUsIDc5NywgNjQwNzQsIDg3MzQsIDQyMTIsIDgzMDA1LCA2NDM4NywgNDExNSwgNzEzMzEsIDUwMDUsIAogICAgIDY0MDcwLCA2NDA3MywgMTA2NzksIDgzMDAwLCA3Nzk1NCwgOTQwMiwgNjQyNzYsIDQyNiwgODMzNTgsIDgzMDEwLCA4MjUxLCAKLSAgICAxMDEzNiwgNjU0MzYsIDAsIDIxMjAsIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgNzA3OTUsIDEwNzAxLCAxNzY0LCAzMTAxLCAKLSAgICAxMjc4MTUsIDEyODU4LCAxMjAxNTksIDEyMDEwMSwgMTEzNzMsIDYzNzgsIDcxMDkzLCAxMjAxMDMsIDg2NjMsIDkzMTIsIAotICAgIDQxNjQ0LCA0NTM5LCAyMTI5LCA3MDc4NSwgOTIyMiwgMTIxNDc5LCAxMTg5MDcsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgCi0gICAgMTI4NTE1LCAxMjcyNCwgNjYzNTcsIDQyMzMxLCA2NDkzNSwgMCwgMCwgMTI5MywgNzk0NywgMjEzMiwgOTgzNzY3LCAKLSAgICA3MTg1OCwgNzI0NDAsIDI0NTQsIDQyNzE3LCAzNjEzLCAxMjg4MzcsIDcxMTE3LCAwLCA2NTg4OCwgODgxNiwgMTA5NzgsIAotICAgIDEwODQwLCAwLCAxMDY2OCwgMTEzNzIzLCA0MzA4NywgMTI1OTUsIDEyMDMwNCwgOTgzMTE0LCA4ODIyLCAwLCAxMTU3LCAKLSAgICA2NDkwMywgODYzOCwgMTI3MjY1LCA5MTc4ODYsIDEyNzkwNSwgMCwgNjk4NDgsIDgyMzUsIDEyMDMxNiwgNDQwNSwgMTAwODYsIAotICAgIDEyMDI0NywgMTExMjgsIDY5MjE2LCAxMjEwNjUsIDY1NDMwLCA3MTMyMSwgNjA3OSwgNjgxNywgMTA3NjQsIDEyMDMxNCwgCi0gICAgNjQyOTEsIDEyMDMxNSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMTk0NTcyLCAxOTkxLCA3ODgyLCAKLSAgICA0MjI1NCwgMTI4OTU0LCA0MTcwMCwgNTMwLCAwLCAxMDQyOCwgMTE5MzM1LCAxMjAwMiwgMTE5MzM2LCA1NzQyLCA0MzA3NiwgCi0gICAgNDY5MiwgNjQ2MzAsIDQxODIzLCA0MDA3LCA1MDA0LCA3NDAzMywgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAxMjAzMjUsIAotICAgIDY2MzczLCA5ODMyNDksIDEyODc0NiwgNjQ5MDgsIDkyNjkxLCA2MzExLCA5MzAxOSwgMTIwMDQsIDExOTE5MiwgMTIwNDksIAotICAgIDQzMTA4LCAxMjAzMjYsIDcxMDgzLCA0MTcwNSwgOTIxODgsIDY1OTgsIDEyMTI5OCwgNjU5OSwgNjY4MjIsIDkzMDMxLCAKLSAgICA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMTIxMDU1LCA2NTk3LCA5NDEyLCA4MzQwLCAxMTgyNCwgNjQ3NDUsIDIyODEsIAotICAgIDY5OTA0LCAxMjg0OTUsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgOTMwNTksIDgzMTE0LCAyMzM2LCAKLSAgICA5ODM5MDMsIDAsIDY3MTY5LCAxMjA0NDIsIDEyNzA5MiwgMTkyMSwgMTA5NDcsIDE5OTI3LCA3MDM5MCwgNjU0MDYsIAotICAgIDk4MzQ2NCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIDEwOTU2LCA0MjI4NSwgNDE2NzQsIAotICAgIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDEyNDk1NywgNTc3NCwgODMyNSwgNjk4NjQsIDY1NDAzLCA5ODMwODksIAotICAgIDE4NTQsIDEwNzk0LCA5MzA1NCwgNjc2NjAsIDY5ODQ2LCAxOTQ3NjUsIDc4MzU5LCA1MjgwLCAwLCA0MzQ0LCAxMjkwNSwgCi0gICAgNjU0MzMsIDYwNzYsIDY0NzkzLCA0MTYxMCwgNzY4LCAxMjA3NCwgNDQyLCAwLCA2ODE2MiwgNjQwODEsIDEyOTM0LCAKLSAgICA0MTY4MiwgNjU0MzIsIDQxNjkzLCAwLCA2MDcxLCA2NTQzNCwgMTI3NDY3LCA0ODA0LCA0MDUzLCAwLCAxMjc0NjksIAotICAgIDE5NDY1MywgNDE2OTYsIDQ2NywgNjk4MjMsIDEyNzQ2MywgNjk3OTcsIDEyMTQwMywgMTIxMjk0LCA4NDIxLCAxMjc0NzIsIAotICAgIDY5NjgyLCA0MzcwNSwgNTAyLCA3NTAyOSwgNjU0MzEsIDExOTA1NiwgNjk5NTQsIDEyMDQzLCAxMzAzLCAzMTYsIDczNjQsIAotICAgIDIwMjksIDIxMzYsIDExOTI0NiwgMTE1MzMsIDY0MzY1LCA0MzQ4MCwgOTI2MzksIDQ4NjAsIDcwMzcyLCAxMjc4NzcsIAotICAgIDQyNDg4LCA3MDMzOSwgOTU4MywgMTI4ODQ5LCA1NTQ2LCA4MDE5LCA3Mzg1NiwgOTgzODQwLCAxMjQ5NjAsIDEyMDgzOSwgCi0gICAgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCA3NTAzNCwgNjM3NTEsIDEyMTM3LCA1NTQ4LCA3Nzk4NSwgMCwgCi0gICAgNjU3MjcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCA2NTQ1MiwgMCwgMTEzMDEsIDExMjE0LCA2NTk1MiwgNzgwMTAsIAotICAgIDk4NzQsIDc4MDA3LCA5ODMxMTUsIDEzMTksIDMwNTAsIDY1NDEwLCA2NzM5OSwgOTI2MDYsIDc4MDE2LCA3ODAxNywgCi0gICAgNDI4MzAsIDQzOTk2LCA2NjcxNiwgODMwNTAsIDQ2OTEsIDkyMjQyLCA5MzQ1LCA2MjEsIDgzNTEyLCAxMjgyMjIsIDAsIAotICAgIDY1NDExLCAwLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCA3Mzg5OSwgNzgwMjQsIDk0NzQsIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAKLSAgICAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIDcxMDQyLCA3OTIzLCAzNzE2LCA5MjM2MywgOTk5NiwgODUwOCwgMTI3Nzk0LCAKLSAgICA3MDEyLCA4MTk1LCAxMjc4MzQsIDk1NjYsIDAsIDM3MjIsIDk4MzM3NCwgNDE3MDcsIDg0OTMsIDU0NSwgOTU3NSwgNDEzNzksIAotICAgIDEwMDUwLCAxMjcxOCwgNjk4NTQsIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAxMjg5NzgsIDU1MjgyLCAKLSAgICA5MTE5LCAyNzg3LCA3OTIwLCA3MDA5MSwgNDAyMSwgMjAxMiwgNzk4NSwgMCwgMTE5NjYzLCA5MTc3OTIsIDAsIDc4MDIxLCAKLSAgICA3ODAyMiwgNDEwLCA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCA3NDg5NSwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCAKLSAgICA2NDM5NiwgMTAxMjYsIDEyMTE2LCA0MTY3MywgMTIwMzcwLCAxMTQyMiwgNzE4NDYsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCAKLSAgICA2ODQxMiwgNDEzNDUsIDEyMDM2MiwgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIAotICAgIDIxMDQsIDY0ODU4LCAzNjEsIDEyMDM1NywgODQ1LCA5MjE3NCwgNDE1NjAsIDExOTcwLCA0NTYyLCAxMjg0NzMsIDI5MjYsIAotICAgIDY4NDk1LCA0NTY5LCA3NDEzMCwgMTI4NjU5LCA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTE4ODkxLCAKLSAgICA2NTYyOSwgMCwgMTk0ODU4LCA3NDg1NCwgMCwgNzA0NjYsIDY3MzkyLCA2NjM4NSwgNzE0MzksIDYyOTEsIDAsIDY4NDg3LCAKLSAgICA0MTY2OSwgNzA5NCwgMTIxMDUxLCAwLCAxMjA5OTksIDc0MDU0LCAxMjc3NTQsIDEyODkxNywgMCwgODM5LCAxMjEzMTUsIAotICAgIDc2OTUsIDg3NjksIDY1MjQ2LCA0ODI5LCA2Nzc1NiwgNDg1OSwgNjQ0NjcsIDAsIDgzNTI1LCAxMTg5OTgsIDcyMDYsIAotICAgIDExOTYzNiwgNjY0NywgNDM5ODYsIDgzNTE4LCA2OTc2NiwgMTk0NjY0LCA2NDc2NCwgNDIxMCwgMTI4MzAwLCAxMjc5MzYsIAotICAgIDgwNCwgODM1MjAsIDAsIDEyMjk4LCA3MDM0NCwgNjY2NTMsIDEyNjk4MywgNjQ5MjQsIDEwMDkxLCA2NzIwMCwgOTQ2OCwgCisgICAgMTAxMzYsIDY1NDM2LCAxMDA4NjIsIDIxMjAsIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgNzA3OTUsIDEwNzAxLCAxNzY0LCAKKyAgICAzMTAxLCAxMjUxOTIsIDEyODU4LCA3NDc2NywgMTIwMTAxLCAxMTM3MywgNjM3OCwgNzEwOTMsIDEyMDEwMywgODY2MywgCisgICAgOTMxMiwgNDE2NDQsIDQ1MzksIDIxMjksIDcwNzg1LCA5MjIyLCAxMjE0NzksIDExODkwNywgNDI1OSwgOTA5MiwgNzQ1NjcsIAorICAgIDQxOTYxLCAxMjEzNjEsIDEyNzI0LCA2NjM1NywgNDIzMzEsIDY0OTM1LCA3Mjg2NywgMTIwNTgyLCAxMjkzLCA3OTQ3LCAKKyAgICAyMTMyLCA5ODM3NjcsIDcxODU4LCA3MjQ0MCwgMjQ1NCwgNDI3MTcsIDM2MTMsIDEyODgzNywgNzExMTcsIDAsIDY1ODg4LCAKKyAgICA4ODE2LCAxMDk3OCwgMTA4NDAsIDAsIDEwNjY4LCA3MjgyNiwgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDk4MzExNCwgODgyMiwgCisgICAgMCwgMTE1NywgNjQ5MDMsIDg2MzgsIDEyNzI2NSwgMTI5MTA2LCAxMjA2NjksIDEwMDM5OSwgNjk4NDgsIDgyMzUsIAorICAgIDEyMDMxNiwgNDQwNSwgMTAwODYsIDEyMDI0NywgMTExMjgsIDY5MjE2LCAxMjEwNjUsIDY1NDMwLCA3MTMyMSwgNjA3OSwgCisgICAgNjgxNywgMTA3NjQsIDEyMDMxNCwgNjQyOTEsIDEyMDMxNSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgCisgICAgMTU1OCwgMTk0NTcyLCAxOTkxLCA3ODgyLCA0MjI1NCwgMTI4OTU0LCA0MTcwMCwgNTMwLCAwLCAxMDQyOCwgMTE5MzM1LCAKKyAgICAxMjAwMiwgMTE5MzM2LCA1NzQyLCA0MzA3NiwgNDY5MiwgNjQ2MzAsIDQxODIzLCA0MDA3LCA1MDA0LCA3NDAzMywgNzg5NiwgCisgICAgNzUxLCA2NTk1LCA2NTk2LCAxMjAzMjUsIDY2MzczLCAxMjkwNjYsIDEyODc0NiwgNjQ5MDgsIDkyNjkxLCA2MzExLCAKKyAgICA5MzAxOSwgMTIwMDQsIDExOTE5MiwgMTIwNDksIDQzMTA4LCAxMjAzMjYsIDcxMDgzLCA0MTcwNSwgOTIxODgsIDY1OTgsIAorICAgIDEyMTI5OCwgNjU5OSwgNjY4MjIsIDkzMDMxLCA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMTIxMDU1LCA2NTk3LCA5NDEyLCAKKyAgICA4MzQwLCAxMTgyNCwgNjQ3NDUsIDIyODEsIDY5OTA0LCAxMjg0OTUsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgCisgICAgOTMwNTksIDgzMTE0LCAyMzM2LCA5ODM5MDMsIDAsIDY3MTY5LCAxMjA0NDIsIDEyNzA5MiwgMTkyMSwgMTA5NDcsIDE5OTI3LCAKKyAgICA3MDM5MCwgNjU0MDYsIDk4MzQ2NCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIDEwOTU2LCAKKyAgICA0MjI4NSwgNDE2NzQsIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDEyNDk1NywgNTc3NCwgODMyNSwgNjk4NjQsIAorICAgIDY1NDAzLCA5ODMwODksIDE4NTQsIDEwNzk0LCA5MzA1NCwgNjc2NjAsIDY5ODQ2LCAxOTQ3NjUsIDc4MzU5LCA1MjgwLCAwLCAKKyAgICA0MzQ0LCAxMjkwNSwgNjU0MzMsIDYwNzYsIDY0NzkzLCA0MTYxMCwgNzY4LCAxMjA3NCwgNDQyLCAwLCA2ODE2MiwgNjQwODEsIAorICAgIDEyOTM0LCA0MTY4MiwgNjU0MzIsIDQxNjkzLCA5ODM0MzQsIDYwNzEsIDY1NDM0LCAxMTkwMDgsIDQ4MDQsIDQwNTMsIAorICAgIDEyMDIzNywgMTI3NDY5LCAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAxMjAwNDMsIDEyMTI5NCwgCisgICAgODQyMSwgMTI3NDcyLCA2OTY4MiwgNDM3MDUsIDUwMiwgNzUwMjksIDY1NDMxLCAxMTkwNTYsIDY5OTU0LCAxMjA0MywgCisgICAgMTMwMywgMzE2LCA3MzY0LCAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgNDM0ODAsIDkyNjM5LCA0ODYwLCAKKyAgICA3MDM3MiwgMTI3ODc3LCA0MjQ4OCwgNzAzMzksIDk1ODMsIDEyODg0OSwgNTU0NiwgODAxOSwgNzM4NTYsIDEyODE5NCwgCisgICAgMTI0OTYwLCAxMjA4MzksIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgNzUwMzQsIDYzNzUxLCAxMjEzNywgCisgICAgNTU0OCwgNzc5ODUsIDk4MzU1NSwgMTAwMDcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCA2NTQ1MiwgMTAwMzkxLCAKKyAgICAxMTMwMSwgMTEyMTQsIDY1OTUyLCA3ODAxMCwgOTg3NCwgNzgwMDcsIDE5NDczMiwgMTMxOSwgMzA1MCwgNjU0MTAsIAorICAgIDY3Mzk5LCA5MjYwNiwgNzgwMTYsIDc4MDE3LCA0MjgzMCwgNDM5OTYsIDY2NzE2LCA4MzA1MCwgNDY5MSwgOTIyNDIsIAorICAgIDkzNDUsIDYyMSwgODM1MTIsIDEyODIyMiwgMTIyODg5LCA2NTQxMSwgOTE3NTQxLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCAKKyAgICA3Mzg5OSwgNzgwMjQsIDk0NzQsIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIAorICAgIDcxMDQyLCA3OTIzLCAzNzE2LCA5MjM2MywgOTk5NiwgODUwOCwgMTI3Nzk0LCA3MDEyLCA4MTk1LCAxMjc4MzQsIDk1NjYsIAorICAgIDExOTg2NywgMzcyMiwgOTgzMzc0LCA0MTcwNywgODQ5MywgNTQ1LCA5NTc1LCA0MTM3OSwgMTAwNTAsIDEyNzE4LCA2OTg1NCwgCisgICAgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDEyODk3OCwgNTUyODIsIDkxMTksIDI3ODcsIDc5MjAsIDcwMDkxLCAKKyAgICA0MDIxLCAyMDEyLCA3OTg1LCA3ODA5MywgMTE5NjYzLCA5MTc3OTIsIDk4Mzk1MSwgNzgwMjEsIDc4MDIyLCA0MTAsIAorICAgIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDc0ODk1LCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIDY0Mzk2LCAxMDEyNiwgCisgICAgMTIxMTYsIDQxNjczLCA2ODUyNCwgMTE0MjIsIDcxODQ2LCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgNjg0MTIsIDQxMzQ1LCAKKyAgICAxMjAzNjIsIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAyMTA0LCA2NDg1OCwgCisgICAgMzYxLCAxMjAzNTcsIDg0NSwgOTIxNzQsIDQxNTYwLCAxMTk3MCwgNDU2MiwgMTI4NDczLCAyOTI2LCA2ODQ5NSwgNDU2OSwgCisgICAgNzQxMzAsIDEyODY1OSwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDEwMDkwOSwgNjU2MjksIDAsIAorICAgIDE5NDg1OCwgNzQ4NTQsIDY2NzUwLCA3MDQ2NiwgNjczOTIsIDY2Mzg1LCA3MTQzOSwgNjI5MSwgMCwgNjg0ODcsIDQxNjY5LCAKKyAgICA3MDk0LCAxMjEwNTEsIDEyMTQwOCwgMTE5MDQxLCA3NDA1NCwgMTI3NzU0LCAxMjg5MTcsIDAsIDgzOSwgMTIxMzE1LCAKKyAgICA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgNjc3NTYsIDQ4NTksIDY0NDY3LCA5ODM0NjEsIDgzNTI1LCAxMTg5OTgsIDcyMDYsIAorICAgIDExOTYzNiwgNjY0NywgNDM5ODYsIDcyNzM4LCA2OTc2NiwgMTk0NjY0LCA2NDc2NCwgNDIxMCwgMTI4MzAwLCAxMjc5MzYsIAorICAgIDgwNCwgNjY3NDYsIDAsIDEyMjk4LCA3MDM0NCwgNjY2NTMsIDEyNjk4MywgNjQ5MjQsIDEwMDkxLCA2NzIwMCwgOTQ2OCwgCiAgICAgNjcyMDYsIDY3MjA1LCA2NzIwNCwgNjcyMDMsIDkyNTAzLCAxMjgzOSwgNjQ2NjksIDkyMjAyLCA3MTg1MSwgMTI3OSwgCi0gICAgMTQyNSwgNjIyNCwgMTE5MjI5LCAxMTA0OSwgMTI3MTIzLCA3MTQ4MCwgNDI2NDksIDg0ODIsIDkyNDQwLCAwLCA1MDMyLCAKLSAgICA2NzIwOSwgMTE5NDAsIDY3MjA3LCA2NjQsIDEyMDQzNywgNTAzNCwgOTI0OTUsIDcwMjAwLCAxMjc1MjUsIDQyNzAyLCAKLSAgICA3MDE5NCwgOTMwNjEsIDEzMjk0LCA2Nzg3MywgNjQ4NjksIDYwMzIsIDY3MjE4LCA5MTE1LCA3NDMwLCA3NzgzNywgNzAxOTEsIAotICAgIDEyMDgxOSwgNjgzODcsIDEyMDE2OCwgNzM5MTMsIDEyMDE3MCwgNDExNjEsIDU1MTgsIDQxNzQsIDEwOTkzLCA0MTE2MiwgCi0gICAgNzc4MzYsIDY0NTI4LCAxMTY5LCA0MzQsIDQxNDM3LCAxOTA1LCA2MDM0LCA0MTE2NCwgNjQ3NDQsIDk1MjgsIDY3NzQxLCAKLSAgICAxMjg4MDAsIDUyNCwgMCwgNzQwMjksIDc4OCwgNzQwMjcsIDE5NDY2NywgNzE4ODEsIDAsIDE2NjMsIDEwNDE5LCA0MjkwMSwgCi0gICAgNDI2MzYsIDY3MjExLCA2NzIxMCwgMTI5MTQ3LCAxMjA2NTYsIDY3MjE1LCA2NzIxNCwgNjcyMTMsIDY3MjEyLCAwLCAKLSAgICA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAwLCAxMTkxMDcsIDQzNjEyLCA2NDM0NCwgMTk0NzMyLCAwLCAxMDg1NSwgCi0gICAgNTQ0NSwgOTM1NSwgNjcyMjEsIDY1MTk4LCA3MzkxLCA4OTg5LCAyMjEsIDY1Njg2LCA5ODM4NzQsIDExOTIzOCwgODAxMCwgCi0gICAgNzE5MSwgNDk2MiwgNjk3NzIsIDg4NTUsIDc0NjEyLCA3MDgyMCwgNjQ0NjksIDkyNTkyLCAxMDU1NSwgNjcyMjcsIDQzMzMzLCAKLSAgICA2NzIyNSwgMTI4NDgzLCAxMjA0MjcsIDEwNDUxLCA2NzIyOSwgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgOTk0NywgCi0gICAgMTIwMTQ5LCA3ODMxNywgMzg3MywgODM2NywgNzc4NDIsIDEyMDE0NiwgNDM0MzMsIDQzNjQ5LCAxMTk4NywgODMzNDMsIAotICAgIDk4MzU4MSwgMTEwMTAsIDExMTY0LCA3NDA1OSwgNzQwNjIsIDYyMTcsIDU4OTYsIDQzODQ2LCA3NjgyLCA3NDA0OSwgMTQ2MiwgCi0gICAgMTAyMzUsIDAsIDAsIDk4MzMyNSwgNDM0NDEsIDEyNzkyNCwgMTI3Nzc3LCA0MjU5NSwgMTI2NjQxLCA3NDQwMiwgMTE4ODYwLCAKLSAgICA3ODY2MSwgMTIwNDE5LCA5MjQ5NywgNjYyODcsIDEyMDQyMCwgOTIzNzgsIDEyMDU0OSwgMTE5MDgyLCA2NDI5NSwgCi0gICAgMTIwNDE4LCAwLCA2NDc2NSwgNzM5MjMsIDgzMjEwLCAxMjA2NjIsIDY5OTIwLCAxOTQ3MDIsIDYyMTYsIDY3MjMwLCAKLSAgICAxMDc1NSwgOTQ1NSwgMTExNTUsIDgxMjQsIDEyNzA0MiwgOTQ3MCwgNjk0NCwgMTIxMTI1LCAwLCA2OTY4MCwgMjgyOCwgMCwgCi0gICAgNTMxLCA0MjYzOCwgMTk0ODA0LCA5MTc4NTYsIDEyMDk2MSwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIAotICAgIDEyMDM2NSwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIDc4NTYyLCAxOTkzNiwgNzgzMywgMTIwNjkxLCAxMjA4NTAsIDQyNTk5LCAKLSAgICA0MjU5NywgNDI3MDksIDY4ODI5LCAxMjUwMTIsIDAsIDg1MzcsIDEyNzMwNiwgMCwgOTM1NCwgMTIxMjQ0LCAxMjEzNDgsIAotICAgIDQxMTk5LCAxMDEyMSwgMjAyOCwgNzQ5NTAsIDEyMDI1MywgNjk3MTUsIDEyODUyNSwgMzA2MiwgMCwgNzQ0NDcsIDEyNjA4LCAKLSAgICA5ODM2NTcsIDY2NDQwLCA3NTQ1LCA5NzAwLCAxMTk0OCwgOTIyMDUsIDEyMDc3NywgMTIwNTAyLCA0MTE1NSwgNjgzMDYsIAotICAgIDc0MDcxLCAwLCA5ODM0NTksIDEyNzEzLCAxMjc1MTksIDcwNDAyLCAwLCA3ODc3MiwgMTEzNzcwLCAxNzM0LCAwLCA3ODE0MSwgCi0gICAgMTI3MDQwLCA2NDU5NCwgMjQ1NiwgMjMxLCA2ODIyNywgNzQxNjcsIDU0MiwgOTE3OTgxLCAxMTg3ODYsIDk4Mzg1OSwgCi0gICAgMTk0Nzk3LCAxMjMwLCAxMjUwMTgsIDEyMTM0MywgMzU5NywgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgCi0gICAgNjc3MzcsIDgzNTIsIDc4NDM2LCA1Njg3LCAxMjcwMTgsIDY0NTE1LCAxMjEzNzgsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCAKLSAgICA3ODQzNCwgOTcwNCwgMCwgMTk0NTczLCA3MDA4MCwgNzEzMzgsIDAsIDg2NjAsIDEyNjQ3OCwgMCwgMTI4NTY5LCA3ODc3MywgCi0gICAgNzQ0ODIsIDQ0ODMsIDE3MDksIDY5NzIxLCA5OTA5LCA2MDgwLCAxOTQ4NTEsIDEyMDM1OCwgMTc0NiwgMTMxNSwgODY2NywgCi0gICAgOTgzMTAxLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCA0NDgwLCAxMTI2NiwgMTIxMTE0LCAxMjI2LCA2OTMwLCAKLSAgICA2Nzk3OSwgMTk1MDE5LCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgNjgzMDIsIDc0Nzg1LCA2OTg3NSwgMCwgMTIxNDc4LCAKKyAgICAxNDI1LCA2MjI0LCAxMTkyMjksIDExMDQ5LCAxMjcxMjMsIDcxNDgwLCA0MjY0OSwgODQ4MiwgOTI0NDAsIDk4MzcxMCwgCisgICAgNTAzMiwgNjcyMDksIDExOTQwLCA2NzIwNywgNjY0LCAxMjA0MzcsIDUwMzQsIDkyNDk1LCA3MDIwMCwgMTIyOTAxLCAKKyAgICA0MjcwMiwgNzAxOTQsIDkzMDYxLCAxMzI5NCwgNjc4NzMsIDY0ODY5LCA2MDMyLCA2NzIxOCwgOTExNSwgNzQzMCwgNzc4MzcsIAorICAgIDcwMTkxLCAxMjA4MTksIDY4Mzg3LCAxMDA2NDUsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCA1NTE4LCA0MTc0LCAxMDk5MywgCisgICAgNDExNjIsIDc3ODM2LCA2NDUyOCwgMTE2OSwgNDM0LCA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCAKKyAgICA2Nzc0MSwgMTI4ODAwLCA1MjQsIDEyODY2NywgNzQwMjksIDc4OCwgNzQwMjcsIDE5NDY2NywgNzE4ODEsIDEyMDM3MCwgCisgICAgMTY2MywgMTA0MTksIDQyOTAxLCA0MjYzNiwgNjcyMTEsIDY3MjEwLCAxMjkxNDcsIDEyMDY1NiwgNjcyMTUsIDY3MjE0LCAKKyAgICA2NzIxMywgNjcyMTIsIDEyODgyOCwgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMTk0OTA0LCAxMTkxMDcsIDQzNjEyLCAKKyAgICA2NDM0NCwgMTI5MzcwLCAwLCAxMDg1NSwgNTQ0NSwgOTM1NSwgNjcyMjEsIDY1MTk4LCA3MzkxLCA4OTg5LCAyMjEsIAorICAgIDQzNjczLCA5ODM4NzQsIDExOTIzOCwgODAxMCwgNzE5MSwgNDk2MiwgNjk3NzIsIDg4NTUsIDc0NjEyLCA3MDgyMCwgCisgICAgNjQ0NjksIDkyNTkyLCAxMDU1NSwgNjcyMjcsIDQzMzMzLCA2NzIyNSwgMTI4NDgzLCAxMjA0MjcsIDEwNDUxLCA2NzIyOSwgCisgICAgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgOTk0NywgMTIwMTQ5LCA3ODMxNywgMzg3MywgODM2NywgNzc4NDIsIAorICAgIDEyMDE0NiwgNDM0MzMsIDQzNjQ5LCAxMTk4NywgODMzNDMsIDk4MzU4MSwgMTEwMTAsIDExMTY0LCA3NDA1OSwgNzQwNjIsIAorICAgIDYyMTcsIDU4OTYsIDQzODQ2LCA3NjgyLCA3NDA0OSwgMTQ2MiwgMTAyMzUsIDk4MzkxOCwgMCwgOTgzMzI1LCA0MzQ0MSwgCisgICAgMTI3OTI0LCAxMjc3NzcsIDQyNTk1LCA3MjgwNCwgNzQ0MDIsIDExODg2MCwgNzg2NjEsIDEyMDQxOSwgOTI0OTcsIDY2Mjg3LCAKKyAgICAxMjA0MjAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCA4MzIxMCwgCisgICAgMTIwNjYyLCA2OTkyMCwgMTI1Mjc4LCA2MjE2LCA2NzIzMCwgMTA3NTUsIDk0NTUsIDExMTU1LCA4MTI0LCAxMjcwNDIsIAorICAgIDk0NzAsIDY5NDQsIDEyMTEyNSwgOTE3OTgyLCA2OTY4MCwgMjgyOCwgMCwgNTMxLCA0MjYzOCwgMTk0ODA0LCA5MTc4NTYsIAorICAgIDEyMDk2MSwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIDEyMDM2NSwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIAorICAgIDc4NTYyLCAxOTkzNiwgNzgzMywgMTIwNjkxLCAxMjA4NTAsIDQyNTk5LCA0MjU5NywgNDI3MDksIDY4ODI5LCAxMjUwMTIsIAorICAgIDAsIDg1MzcsIDEyNzMwNiwgOTgzNzI5LCA5MzU0LCAxMjEyNDQsIDEyMTM0OCwgNDExOTksIDEwMTIxLCAyMDI4LCA3NDk1MCwgCisgICAgMTIwMjUzLCA2OTcxNSwgMTI4NTI1LCAzMDYyLCA5ODM2NjMsIDc0NDQ3LCAxMjYwOCwgOTgzNjU3LCA2NjQ0MCwgNzU0NSwgCisgICAgOTcwMCwgMTE5NDgsIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDY4MzA2LCA3NDA3MSwgMTI4NzIyLCA5MjM3MiwgCisgICAgMTI3MTMsIDEyNzUxOSwgNzA0MDIsIDAsIDc4NzcyLCAxMTM3MDksIDE3MzQsIDAsIDc4MTQxLCAxMjcwNDAsIDY0NTk0LCAKKyAgICAyNDU2LCAyMzEsIDY4MjI3LCA3NDE2NywgNTQyLCAxMjA1ODYsIDEwMDg1MSwgOTgzODU5LCAxOTQ3OTcsIDEyMzAsIAorICAgIDczODQ1LCAxMjEzNDMsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIDY3NzM3LCA4MzUyLCA3ODQzNiwgCisgICAgNTY4NywgMTI3MDE4LCA2NDUxNSwgMTIxMzc4LCAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgNzg0MzQsIDk3MDQsIDk4MzU4NSwgCisgICAgMTk0NTczLCA3MDA4MCwgNzEzMzgsIDEyMDU3NSwgODY2MCwgMTI2NDc4LCAxMjcwMTAsIDEyODQ2NywgNzg3NzMsIDc0NDgyLCAKKyAgICA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgNjA4MCwgMTI4MTY3LCAxMjAzNTgsIDE3NDYsIDEzMTUsIDg2NjcsIDk4MzEwMSwgCisgICAgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMTE4Nzg2LCA0NDgwLCAxMTI2NiwgMTIxMTE0LCAxMjI2LCA2OTMwLCA2Nzk3OSwgCisgICAgMTk1MDE5LCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgNjgzMDIsIDc0Nzg1LCA2OTg3NSwgMTIwODQ5LCAxMjE0NzgsIAogICAgIDQxNTAwLCAwLCAzMTEsIDExNDUzLCA2MjIxLCAxMDYwOCwgNjQ5NDMsIDY3NjgyLCAxMDg3NywgMTE4ODY4LCA2NDg4NSwgCi0gICAgNzQyNzIsIDAsIDE5NDY3MiwgMTI4NTU5LCAxMjA3MzYsIDc0MzEyLCAzNDUsIDEyNDkzMywgNzQ0NTYsIDY0NjA2LCA5OTE3LCAKLSAgICAwLCA3NDg1NSwgNTAzNywgMTE5OTEyLCAxNzc2LCA4NDIyLCAxMjg5MzUsIDExODgxNCwgNDE1MDgsIDQxMjAxLCAzMjMsIAotICAgIDQzMzI4LCAwLCA0MjY5OCwgMTI5NSwgMTk0ODUzLCA0NjI1LCA3Nzg1NSwgNDYzMCwgMTMxMTcsIDgzMDAyLCAxMjg3NzIsIAotICAgIDY1MTIzLCAxMTI5MywgMjY2OCwgMTEyODgsIDAsIDQyNjQwLCA2NTY2NiwgMjUxOSwgOTIzNjksIDY1NDIwLCA5MjQ3OSwgMCwgCi0gICAgNDI1MiwgNTA0OSwgNDI2NTksIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgOTgzOTQ5LCA2NTQxOSwgMCwgCi0gICAgMTI4NDk2LCA2NDksIDY1NDIxLCAwLCA2NjcwMiwgOTgzNzIxLCAxMjY3MCwgMTAxMywgMCwgNjQ5MTksIDcwNSwgMCwgCi0gICAgNjU0MjIsIDEyNzgwMywgMTE4MywgMTI2NTE5LCA3MDE3LCA0Mjg1MiwgOTE3ODI2LCA4MTU3LCA5NzM2LCA2NDUwMywgCi0gICAgNjU0MTgsIDEyOTA1MCwgOTgzODc4LCA3NDAzNSwgMTk0OTE4LCAxMTkxMywgNzM4NzQsIDY2OTYsIDEyMDkxNiwgODkyMCwgCi0gICAgMTE5Mjk4LCAxMjg0MjYsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCA2NjIyNywgMCwgNDE4NCwgMTE5ODI1LCAxMjg1OTgsIAotICAgIDEwMTc3LCA3Mzc3NywgMTg1NywgMTk0NjU3LCA0NjI2LCA4NDY0LCA4NDcyLCA2ODg0NCwgNDYyOSwgODQ5OSwgNzQ2MjcsIAotICAgIDc4MzIyLCA0NjI0LCA3ODE4LCAxMTg4NjEsIDEyODEwOCwgMCwgNzgwNSwgMTI4NzU0LCA5NDAwNywgNjkzNSwgOTIyOTIsIAotICAgIDc4MzI1LCA3ODMyNiwgNzgzMjMsIDQzMzI3LCA0Mzk4OSwgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCAKLSAgICA4NDk2LCA4MzQ5OSwgNzQ1ODIsIDc1MDUyLCA3ODMzOSwgOTU0MywgNjc4NjAsIDc4MzMyLCA3NzgzMiwgNjU4NDksIAotICAgIDc3ODMxLCA5ODM5NjEsIDE5NDY0OSwgMTI0NTEsIDc0Mzc2LCA4Njg0LCAxMjgzMDEsIDYxMDIsIDAsIDUyOTgsIDkxNzg0NywgCi0gICAgNTI5NCwgMCwgODMwMTYsIDY4MDQzLCAxOTUwNjIsIDk5NDksIDgzMDE0LCA0MzYxNywgMTE5MjE1LCAwLCAxMjA3MywgMCwgCi0gICAgMTI4NjQ2LCA3Nzg2MywgMTMxMDgsIDEyMDYxNywgMTE0MzksIDQxNDY4LCA4MzAxMiwgMCwgNTI5MiwgNTUyNzIsIAotICAgIDk4Mzg4MywgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc3LCAxMjQ1NSwgMTc5MywgMTI0OTgyLCAwLCA3NTAzNiwgNjY0MywgCi0gICAgOTI0NzcsIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgNzg4MzUsIDEzMjE5LCA5NTY5LCAxMjkwNDEsIAotICAgIDc0MzgzLCAwLCA3NDE5NywgMTI5MDg5LCA1NTAwLCA4ODEzLCAwLCAxMjg2MTIsIDY4ODYwLCA1MzIyLCAxMjA5NDQsIAotICAgIDc4MzQwLCA0MzYzMSwgNTMyNCwgNjY0NDMsIDM3ODQsIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCAxMzI4MiwgCi0gICAgMzM2MCwgNzgzNDQsIDExNTIzLCAwLCA5MjQ4OCwgOTkyNiwgNzE5NywgMTI4MjQ4LCA2ODQyOSwgNDI4OTQsIDQxODIxLCAKLSAgICAxMjQ5LCA3ODM2MCwgNzgzNjEsIDc4MzU2LCA3ODM1OCwgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCAKLSAgICA0MzE2MiwgNDE4MTUsIDQxMTUwLCAxMjg5MTEsIDEwNTcxLCAxMDA5NiwgNjcxNjEsIDY3MTYwLCA2NzE1OSwgNjk0NywgCi0gICAgNDExNTIsIDg4NywgOTI0OSwgNjU2NSwgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDY3MTU3LCA5Mzk2NiwgNjY3MCwgCi0gICAgNjcxNzUsIDY3MTc0LCAwLCA0MzA5MiwgNDMzMjUsIDY3MTc4LCAxMDE2OCwgNjcxNzYsIDk3ODEsIDY4MjQ4LCA5MTkwLCAKLSAgICAxMjg0OTcsIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgCi0gICAgMTI5MTMyLCA3MjQwOSwgNzgyNTYsIDcyNDA4LCA3ODM1MiwgMCwgNzUwNjMsIDAsIDAsIDEzNzgsIDk1MDksIDE5NDYzNCwgCi0gICAgOTI5OTYsIDcyNDA3LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDcyNDA2LCA5MjM1NSwgOTE3ODkwLCA3ODM2NSwgODc4NywgCi0gICAgNjcxODksIDE5NDYxNiwgNDE2MTgsIDE5NDYxNSwgNzgyNjEsIDEyNzM4NCwgMCwgNjQ2NTIsIDEyMTIyMiwgMTIxMDEyLCAwLCAKLSAgICA3ODM2NiwgNDIwODgsIDcxMDQwLCAxOTUwNjEsIDcxNzYsIDQzNzU2LCAxMDEzNywgNjEyMSwgMTA5OTUsIDc4MjU5LCAKLSAgICA3MTA1MCwgODExOSwgNjQ4NzQsIDcxMDUyLCA3ODE3NCwgMTI4NjkwLCAxMjg2MzAsIDc0NTI1LCAwLCAwLCAxMjkzMCwgCisgICAgNzQyNzIsIDEyODA3NiwgMTk0NjcyLCAxMjEyMDIsIDEwMDY1MiwgNzQzMTIsIDM0NSwgMTI0OTMzLCA3NDQ1NiwgNjQ2MDYsIAorICAgIDk5MTcsIDEyNTI0NCwgNzQ4NTUsIDUwMzcsIDEwMDk5OCwgMTc3NiwgODQyMiwgMTI4OTM1LCAxMTg4MTQsIDQxNTA4LCAKKyAgICA0MTIwMSwgMzIzLCA0MzMyOCwgOTE3ODQ5LCA0MjY5OCwgMTI5NSwgMTk0ODUzLCA0NjI1LCA3Nzg1NSwgNDYzMCwgMTMxMTcsIAorICAgIDgzMDAyLCAxMjg3NzIsIDY1MTIzLCAxMTI5MywgMjY2OCwgMTEyODgsIDAsIDQyNjQwLCA2NTY2NiwgMjUxOSwgOTIzNjksIAorICAgIDY1NDIwLCA5MjQ3OSwgMTI3MTkxLCA0MjUyLCA1MDQ5LCA0MjY1OSwgMTE5MDExLCA3MDYsIDc3NTQsIDEwODU0LCA4NzM4LCAKKyAgICAxMjkzMTgsIDY1NDE5LCAwLCAxMjg0OTYsIDY0OSwgNjU0MjEsIDEyMjg4MCwgNjY3MDIsIDk4MzcyMSwgMTI2NzAsIDEwMTMsIAorICAgIDcwNzA3LCA2NDkxOSwgNzA1LCA3MjgyNSwgNjU0MjIsIDEyNzgwMywgMTE4MywgMTI2NTE5LCA3MDE3LCA0Mjg1MiwgCisgICAgOTE3ODI2LCA4MTU3LCA5NzM2LCA2NDUwMywgNjU0MTgsIDEyOTA1MCwgMTI4MDkwLCA3NDAzNSwgNzg4MzYsIDExOTEzLCAKKyAgICA3Mzg3NCwgNjY5NiwgMTIwOTE2LCA4OTIwLCAxMTkyOTgsIDEyODQyNiwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIAorICAgIDY2MjI3LCA5ODMyNzIsIDQxODQsIDExOTgyNSwgMTI4NTk4LCAxMDE3NywgNzM3NzcsIDE4NTcsIDEyNzc3MywgNDYyNiwgCisgICAgODQ2NCwgODQ3MiwgNjg4NDQsIDQ2MjksIDg0OTksIDc0NjI3LCA3ODMyMiwgNDYyNCwgNzgxOCwgMTE4ODYxLCAxMjgxMDgsIAorICAgIDAsIDc4MDUsIDEyODc1NCwgOTQwMDcsIDY5MzUsIDkyMjkyLCA3ODMyNSwgNzgzMjYsIDc4MDc5LCA0MzMyNywgNDM5ODksIAorICAgIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgODQ5NiwgODM0OTksIDc0NTgyLCA3MDY5MCwgNzgzMzksIAorICAgIDk1NDMsIDY3ODYwLCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCA3NzgzMSwgMTI4NjE1LCAxMDA0MTIsIDEyNDUxLCA3NDM3NiwgCisgICAgODY4NCwgMTAwNTE1LCA2MTAyLCAxMjgwNDYsIDUyOTgsIDEyODcyMSwgNTI5NCwgODMyMzUsIDgzMDE2LCA2ODA0MywgCisgICAgMTk0ODk5LCA5OTQ5LCA4MzAxNCwgNDM2MTcsIDExOTIxNSwgMTI3MDMwLCAxMjA3MywgMTIwNzM2LCAxMjgwMTcsIDc3ODYzLCAKKyAgICAxMzEwOCwgNzEyMzEsIDIyNjAsIDQxNDY4LCA4MzAxMiwgMCwgNTI5MiwgNTUyNzIsIDk4Mzg4MywgMTkzOSwgNTMwMiwgCisgICAgMzk3MCwgMTI5MzQ4LCAxMjQ1NSwgMTc5MywgMTI0OTgyLCAwLCA3NTAzNiwgNjY0MywgOTI0NzcsIDY1MjYzLCAwLCAKKyAgICA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgNzg4MzUsIDEzMjE5LCA5NTY5LCAxMjkwNDEsIDc0MzgzLCAwLCA3NDE5NywgCisgICAgMTI5MDg5LCA1NTAwLCA4ODEzLCA5ODM0MTQsIDEyODYxMiwgNjg4NjAsIDUzMjIsIDEyMDk0NCwgNzgzNDAsIDQzNjMxLCAKKyAgICA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDEzMjgyLCAzMzYwLCA3ODM0NCwgCisgICAgMjIzMSwgNzI3MjYsIDkyNDg4LCA5OTI2LCA3MTk3LCAxMjgyNDgsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIDEyNDksIDc4MzYwLCAKKyAgICA3ODM2MSwgNzgzNTYsIDc4MzU4LCA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIDQzMTYyLCA0MTgxNSwgCisgICAgNDExNTAsIDEyODkxMSwgMTA1NzEsIDEwMDk2LCA2NzE2MSwgNjcxNjAsIDY3MTU5LCA2OTQ3LCA0MTE1MiwgODg3LCA5MjQ5LCAKKyAgICA2NTY1LCA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNjcxNTcsIDkzOTY2LCA2NjcwLCA2NzE3NSwgNjcxNzQsIDAsIAorICAgIDQzMDkyLCA0MzMyNSwgNjcxNzgsIDEwMTY4LCA2NzE3NiwgOTc4MSwgNjgyNDgsIDkxOTAsIDEyMDk4MSwgOTY2NiwgODI2OSwgCisgICAgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCAxMjg1NTYsIDcyNDA5LCA3ODI1NiwgCisgICAgNzI0MDgsIDc4MzUyLCA5MjIxMiwgNzUwNjMsIDcyODM5LCAwLCAxMzc4LCA5NTA5LCAxOTQ2MzQsIDkyOTk2LCA3MjQwNywgCisgICAgMzA2NiwgOTIyMjAsIDIyNzAsIDcyNDA2LCA5MjM1NSwgOTE3ODkwLCA3ODM2NSwgODc4NywgNjcxODksIDcyODE4LCAKKyAgICA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTI3Mzg0LCAwLCA2NDY1MiwgMTIxMjIyLCA3MjgzMywgMTI1MjI2LCA3ODM2NiwgCisgICAgNDIwODgsIDcxMDQwLCAxOTUwNjEsIDcxNzYsIDQzNzU2LCAxMDEzNywgNjEyMSwgMTA5OTUsIDc4MjU5LCA3MTA1MCwgCisgICAgODExOSwgNjQ4NzQsIDcxMDUyLCA0Mzk2NCwgMTI4NjkwLCAxMjg2MzAsIDc0NTI1LCA3Mjg0MywgMTAwNzgzLCAxMjkzMCwgCiAgICAgMTM5NCwgNzQ1MTQsIDEyODQxMywgNzQ1MTUsIDk4MzcyNywgNjcxODQsIDI5OTgsIDk1MjcsIDY3MTgxLCA2NTE5MCwgCiAgICAgMTI5NzcsIDQyMDkwLCA2NzE4NSwgOTgzNjQ3LCAxMTkxMDAsIDQxMjM2LCA5MjIzNSwgNDIwMDUsIDQyMDAzLCA0MTIzNywgCiAgICAgNTg0OCwgNjcxOTMsIDY3MTkyLCAzNjcwLCA2NzE5MCwgNjcxOTcsIDY3MTk2LCA2NzE5NSwgNzg5MCwgMTI4MDcwLCAKLSAgICAxMTI5OCwgNDMzMTUsIDk4MzMxNSwgNjIyOSwgMTU5MywgMCwgMTI1MTIwLCA2MTksIDQ2MzUsIDY1MDgwLCAxMjcxNTgsIAorICAgIDExMjk4LCA0MzMxNSwgNzc4NzEsIDYyMjksIDE1OTMsIDAsIDEyNTEyMCwgNjE5LCA0NjM1LCA2NTA4MCwgMTI3MTU4LCAKICAgICAxMjE5NCwgNDEyMCwgNjUzMzcsIDY1MzM2LCAxMjg0MDcsIDExODA4LCA2NzE5OSwgNjcxOTgsIDkzNjYsIDQyNzkwLCAKICAgICA0MjAwNiwgMTE5MTE1LCA2NTMyNywgNjUzMjYsIDY1MzI1LCAxMDc1NywgMTUwNywgNDIyMTYsIDY1MzIxLCA2NTMyMCwgCiAgICAgNDM5NDcsIDY1MzM0LCA0Mzk0NiwgNjUzMzIsIDY1MzMxLCA0MjA1OSwgNjUzMjksIDQyNjg5LCA5MjQyNywgOTEyOCwgCi0gICAgOTQwNDUsIDQyMDczLCA2Nzg1LCA2NDU5MCwgOTgzODMwLCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIAotICAgIDY1MzE0LCA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDEyMDg2MiwgNjU2MDksIDQxMjQxLCA3OTAzLCA0MTIzOSwgCi0gICAgNDM1MzMsIDc4NDU5LCA3MTg5LCAwLCAwLCA0Mzk0MSwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgOTEzMSwgNjYyOTIsIAotICAgIDQ2MTUsIDEyNjk1LCAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgMCwgMTIxMzUxLCA1NjIsIDEyMTY5LCAKLSAgICA2NTkwLCA2OTc2MiwgNjY0NTUsIDY0NzM4LCAzMjE5LCA2ODY1NCwgMTIxMDk2LCAxMjgyODEsIDEwMzcsIDEyODY3NywgCi0gICAgMjAyNSwgMTI4MjYzLCAxMzA5OCwgNzg0NDIsIDEwNjM3LCA0NTY4LCA1NDksIDE1NzAsIDQzODM5LCAyODM1LCA4MzA1MiwgCi0gICAgMTA2MjQsIDQzNjIzLCAxMTA3MiwgODMwNDUsIDEyODUyMywgODMwNDYsIDEyNjA2LCA3ODQzMywgMjgyNSwgODMwNDgsIAotICAgIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIDczNjUsIDgzMDQzLCAxMjA1OTMsIDEzMDcxLCAxMjEyODgsIDQ1MiwgCi0gICAgNDEwNDksIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCA3NDU5NiwgMTE0NjUsIDUyMTIsIDkxNzkxNywgNjQ3MDMsIAotICAgIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgNDEwNDcsIDE2NjgsIDExOTg0OSwgMTIxMTUwLCAKLSAgICAxMjgyNzUsIDExODcsIDk4MzM4NywgNDI2MjgsIDc4NTc1LCA4Mjk1MywgNzE4NjMsIDgyOTU1LCAzMjQwLCAxMjg1MTgsIAotICAgIDEyMTUxLCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIDgxNjYsIDAsIDExODkzMiwgMCwgNjY4MjcsIDE2MjMsIDY1Mjk3LCAKLSAgICAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgMTI3Mjk1LCAxNTQxLCA2NTA0OCwgMTkwOSwgODg2NCwgMCwgNjY0MDIsIAotICAgIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDcwNDc2LCA5MjI5NiwgNDIzNywgOTI1NzYsIDEwMzUsIDY1ODE1LCA2ODA4MywgCi0gICAgMzU2NywgNzAxLCA2NTkzNiwgMzQ4OSwgMTIwODk5LCA3MDQ2MiwgNzAxNzIsIDExNDAzLCAwLCAwLCA4Mjk4NiwgMzc5NiwgCi0gICAgNjgwMCwgNzA0NzIsIDM5OTQsIDExNDIxLCA3NDYxMSwgMTk1MDc2LCAxOTUwNzgsIDY4MDM2LCAwLCAwLCA2NDg1NywgCi0gICAgODM1MDgsIDI4NTUsIDc0NDE4LCA2NjMwOCwgNDE2MjEsIDY4MjE0LCA4MzUxMywgMTI3ODE3LCAxMDY1NCwgODI5NDUsIAotICAgIDExOTIyNiwgMTIxNjQsIDMyNDYsIDc5MDYsIDQzOTcyLCA2NTg0NywgNzE4MiwgMCwgMTMwMjQsIDY2Mjc2LCA3NDI3MCwgCi0gICAgODMwNjksIDEyNTA5MCwgMTIxMTE1LCAwLCAxNDk2LCA3NDcsIDAsIDk0MiwgMjM3OCwgNDMxMzYsIDgzMDMxLCA4NDY2LCAKLSAgICA4MzA3NSwgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgMTE2MTcsIDc0NjM3LCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIAotICAgIDEyNjUwMCwgNjQ2MzQsIDkyMzYyLCA3MDIwMiwgMTE2MTIsIDkzMDA4LCA2NzYwMCwgMjM3NCwgOTQwNjYsIDg0NzUsIAotICAgIDExNjA5LCA2NjMxMywgOTI1NjgsIDAsIDUyODYsIDExOTI5NywgODMwNTksIDk4MzI1MywgNjQ5MjUsIDEyMDI4MywgCi0gICAgMTI3MjA0LCAxMTg5ODIsIDcxOTA1LCA3NzA1LCAxMTk0MiwgMTEzMDUsIDEyNzIwMywgMzMwOSwgODI5NzksIDkyMDYsIAotICAgIDgyOTgwLCAxMTM4MjQsIDY4MDIsIDcwMzUzLCA0MTY1MywgMTI4MCwgMTI0MSwgNzE2OCwgMTIwOTYsIDAsIDY2NjE1LCAKLSAgICA0MjU2NSwgNDE2NTEsIDAsIDkxNzYyNywgODMwNDIsIDQxNjUwLCA2NjUwNywgNjY0NzAsIDc0NDcyLCAxMjkxNCwgNDE0OTEsIAotICAgIDQzOTAxLCA5NDEwNiwgNjA3OCwgOTk1NCwgNzg4MjIsIDE0NzUsIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgCi0gICAgNDEwNjIsIDAsIDExMzY4MCwgMzI1NiwgMTAxODksIDQyMDc2LCA0MzI1MiwgNzg4MjMsIDY4MDg5LCA4NzI3LCAxMjA5MjIsIAotICAgIDY1ODc1LCAwLCAwLCAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDEyMDkwNiwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIAotICAgIDkwMTUsIDcxMzUxLCAwLCAzNjM1LCA2NDMzNywgOTI3NTksIDEyNTA1NCwgMCwgNzE5NSwgODMzNDYsIDIwMDcsIDY0NDMxLCAKLSAgICAxOTUwNzUsIDAsIDkyMTk3LCAxMjcwOTAsIDYzNSwgMCwgMTI5MDgyLCA2NTYxMywgNzc5MDksIDkyNDIwLCA3Mzk5NywgCi0gICAgMTI4NTEwLCAxMjE0NTcsIDQzOTA1LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTI3NzcwLCA0MTc2LCA3MDA1MCwgMjAzNCwgCi0gICAgNzg0MjMsIDExMTU0LCA2NTg5MSwgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODU0NCwgNzg1OTYsIDE5NDYwMiwgMzY0OSwgCi0gICAgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgMzYzNCwgMTIwMjkxLCA3MTg4NSwgNjc2NzcsIDEyMDEyNCwgNzg2NiwgNzUwNDUsIAotICAgIDExNDAyLCA0MjE0NiwgOTQwMzIsIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgCi0gICAgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAxMTU5LCA3MTE4MywgNjk3MjksIDAsIDEyMDc5NywgNzE3OCwgMTIwODUxLCAKLSAgICA5ODM4MzYsIDQxNjgwLCAxMjg0NjksIDgzMDk4LCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAKLSAgICAxMjg0OTAsIDY3ODc3LCAxOTQ1NjEsIDEyOTg5LCA2NjQ3NCwgOTM2OCwgMTI4NDgsIDE2MjQsIDQzMjcwLCAwLCA3NDI3OCwgCi0gICAgMTA4MTgsIDgzMDkxLCA5OTUzLCAxOTQ4OTUsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIAotICAgIDYxNjksIDEyODcxLCAxNTUxLCAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgOTE3OTI0LCA2Nzg3NSwgCi0gICAgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTI1MDc5LCA4MzM1NCwgNjgzNjQsIDEyMDc3OSwgNDg5MSwgMCwgMTA2NDEsIDAsIAotICAgIDczNzQ2LCAxMjA5NDUsIDY4MzUyLCAwLCA3Mzc4NywgMTI4ODU4LCAxMjcwOTQsIDcxOTksIDExMTMxLCAwLCAwLCAwLCAKLSAgICA5ODM4NTIsIDEyNjk3OSwgNDI2ODUsIDQyNjc5LCAxOTMsIDc4Nzg5LCAwLCAwLCA0MjY2NywgMCwgNTI3MSwgNjgzMjMsIAotICAgIDkyNTE3LCA4MzM1NiwgMTM2MiwgMTMyOTcsIDAsIDcxODgwLCAwLCA5ODMzMzMsIDczNzg5LCAwLCA2NjU4LCA0NDI2LCAwLCAKLSAgICA2NjgzMCwgOTgzODQyLCA4MzEwMywgNzI3NiwgNDIxNjMsIDUyMjAsIDAsIDc4NjIxLCA2NzgyMiwgMjQxNiwgMzMxMCwgCi0gICAgNDI3MDMsIDgzMTA3LCAzNzksIDAsIDQzNzU1LCA3MDUwNCwgNDM2NDcsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIAotICAgIDQ1NDksIDE5NDczOCwgMCwgNzEyNTMsIDcwNzg0LCAxMDgwNywgOTU1OCwgOTMwMjcsIDAsIDg1MTUsIDg2ODgsIDEyODY2LCAKLSAgICA2NTMwOCwgMzI5NCwgODMxNDMsIDg1MjksIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCA4MzE0OCwgOTI0NTgsIAotICAgIDczNzU3LCA2NjQ1NiwgNDIzNTksIDEyODQzOSwgMjAzMSwgOTgzODkwLCA3MjAyLCAxMjgyMzIsIDEyNjc2LCA0MjcyOSwgCi0gICAgNzQ3NzcsIDMyMTUsIDEyMDk4MiwgNzcxMCwgMTYxMCwgNzM4MDEsIDEyODgwNywgMCwgNjU2ODIsIDAsIDQzOTE3LCAKLSAgICA2NTkyNCwgOTk3NCwgMjI4LCA0MzkyMiwgMTUwMSwgMTI3OTk0LCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMTE4OTI3LCAKLSAgICA0Mjk5OSwgMTcyNSwgNjU1MzMsIDgxOTYsIDc0NzYsIDc0Mzk5LCAwLCA2Njg2OCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgCi0gICAgNzQ4MywgNDM4OTgsIDAsIDgxMDQsIDcwMTI4LCA3NDc0LCA0MzkxNCwgODMwODAsIDEyNjUwNywgMTA0MTQsIDEzMDAxLCAKLSAgICA4MTQxLCA5ODMyMzksIDQyNTM3LCAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCA2ODA1LCA4NjMxLCAyNTQ1LCA0MjkzNCwgCi0gICAgMTI3MTY2LCAwLCA3NDE5MCwgMTI4NDc3LCA3MDQxMCwgOTgzNzg2LCA0Mjc2MiwgMTk0NzA4LCA0MjkxNCwgMTY1MCwgMjYyLCAKLSAgICAxNjM3LCAxMjg1MDIsIDc5MDEsIDMyMzgsIDgzMDI2LCA0MTg2MSwgMCwgMTIwMjExLCA2NTE1OCwgMTA4NjAsIDc0OTU5LCAKLSAgICA0MzY1OCwgNzUyNywgODMwODYsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDkzOTg5LCAxMjc3NTMsIDExOTgxMCwgCi0gICAgNzE5NCwgNTI5MSwgMCwgNDM2NjYsIDEzMTI5LCAxMjg2ODQsIDkwODQsIDEyMTAzOSwgODczNywgOTgzMTY1LCAxMjg4MSwgCi0gICAgNzUwNjYsIDEyOTA2LCA5NjM5LCA3OTEyLCAyNjIwLCA5ODM4ODIsIDM1NjQsIDAsIDY5OTc4LCAxNzksIDQzNjQ0LCAKLSAgICA3NTA0OSwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDEyOTA0MiwgNzAzNDcsIDExOTAwOSwgMjg1MCwgODA4NCwgCi0gICAgOTgzMDg1LCA3Mzg1MCwgMjgwMSwgOTIyODQsIDQyMDY5LCAxMTk4MzksIDc0NzU0LCA4MzUyMiwgNDIwNzIsIDkyNzM2LCAKLSAgICAxMTk4NDIsIDEwMzk4LCA4MzM4NiwgODM1MjMsIDgzNzcsIDExOTMxMiwgODI0NSwgNjg0MDEsIDMxNTgsIDkyMzk2LCAKLSAgICAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDkyNDcwLCAyOTIsIDExMTE5LCAxMTk4NDUsIDExOTg0NCwgMzIyMSwgMTc2MywgCi0gICAgOTI0NjMsIDQ2MTIsIDY3NzI5LCAxMTk4NTAsIDcyNTMsIDcwNDU2LCA2ODM5MSwgNzUwMDIsIDEwNzgyLCAzNjM3LCAKLSAgICAxMjk5NiwgNDM1NDIsIDExMzY3NiwgNjQ1NzgsIDgzNDQ5LCAzMjI4LCA2OTYzNiwgODc4MywgOTgzNjMyLCAxMTk2MTQsIAorICAgIDk0MDQ1LCA0MjA3MywgNjc4NSwgNjQ1OTAsIDk4MzEzNSwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKKyAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAxMDAzNTksIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIAorICAgIDQzNTMzLCA3ODQ1OSwgNzE4OSwgMTAwNDE4LCA5ODMyMjcsIDQzOTQxLCAxMjM1NywgNDI4MDIsIDc4NDUwLCA4NDg3LCAKKyAgICA5MTMxLCA2NjI5MiwgNDYxNSwgMTI2OTUsIDEyNzc1MiwgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCA5ODM4ODcsIAorICAgIDEyMTM1MSwgNTYyLCAxMjE2OSwgNjU5MCwgNjk3NjIsIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDEyMTA5NiwgCisgICAgMTI4MjgxLCAxMDM3LCAxMjg2NzcsIDIwMjUsIDExOTE1OSwgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCAKKyAgICA0MzgzOSwgMjgzNSwgODMwNTIsIDEwNjI0LCA0MzYyMywgMTEwNzIsIDgzMDQ1LCAxMjA1NjEsIDgzMDQ2LCAxMjYwNiwgCisgICAgNzg0MzMsIDI4MjUsIDgzMDQ4LCAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCA3MzY1LCA4MzA0MywgMTIwNTkzLCAKKyAgICAxMzA3MSwgMTIxMjg4LCA0NTIsIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCAKKyAgICAxMTg5NDUsIDY0NzAzLCAxMTkxOTEsIDQyMzA4LCA3MTgxLCAxMjgyNzYsIDQxMzMyLCAwLCAxMjMzMywgNDEwNDcsIDE2NjgsIAorICAgIDExOTg0OSwgMTIxMTUwLCAxMjcyOTUsIDExODcsIDEyODg3NSwgNDI2MjgsIDc4NTc1LCA4Mjk1MywgNzE4NjMsIDgyOTU1LCAKKyAgICAzMjQwLCAxMjg1MTgsIDkyMTMsIDAsIDExNTkxLCA0MTA2NSwgNTMyMywgODE2NiwgNzA3MzksIDExODkzMiwgMTI3MTExLCAKKyAgICA2NjgyNywgMTYyMywgNjUyOTcsIDEyODg1NiwgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAxMjcwODEsIDE1NDEsIDY1MDQ4LCAKKyAgICAxOTA5LCA4ODY0LCAwLCA2NjQwMiwgMTA3MzYsIDkyNTA4LCAxMTU3MSwgNzYxNSwgNzA0NzYsIDkyMjk2LCA0MjM3LCAKKyAgICA5MjU3NiwgMTAzNSwgNjU4MTUsIDY4MDgzLCAzNTY3LCA3MDEsIDY1OTM2LCAzNDg5LCAxMjA4OTksIDcwNDYyLCA3MDE3MiwgCisgICAgMTE0MDMsIDAsIDAsIDgyOTg2LCAzNzk2LCA2ODAwLCA3MDQ3MiwgMzk5NCwgMTE0MjEsIDc0NjExLCAxMjc5MTEsIAorICAgIDE5NTA3OCwgNjgwMzYsIDcwNjU5LCAwLCA2NDg1NywgODM1MDgsIDI4NTUsIDcwNjk3LCA2NjMwOCwgNDE2MjEsIDY4MjE0LCAKKyAgICA4MzUxMywgMTI3ODE3LCAxMDY1NCwgODI5NDUsIDExOTIyNiwgMTIxNjQsIDMyNDYsIDc5MDYsIDQzOTcyLCA2NTg0NywgCisgICAgNzE4MiwgMCwgMTMwMjQsIDY2Mjc2LCA3NDI3MCwgODMwNjksIDEyNTA5MCwgMTIxMTE1LCAwLCAxNDk2LCA3NDcsIAorICAgIDkxNzk5OSwgOTQyLCAyMzc4LCA0MzEzNiwgODMwMzEsIDg0NjYsIDgzMDc0LCA5MzIwLCA4MDAxLCAxMjMyLCA4MTM5LCAKKyAgICAxMTYxNywgNzQ2MzcsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgMTI2NTAwLCA2NDYzNCwgOTIzNjIsIDcwMjAyLCAxMTYxMiwgCisgICAgOTMwMDgsIDY3NjAwLCAyMzc0LCA5NDA2NiwgODQ3NSwgMTE2MDksIDY2MzEzLCA5MjU2OCwgMCwgNTI4NiwgMTE5Mjk3LCAKKyAgICA4MzA1OSwgOTgzMjUzLCA2NDkyNSwgMTIwMjgzLCAxMjcyMDQsIDExODk4MiwgNzE5MDUsIDc3MDUsIDExOTQyLCAxMTMwNSwgCisgICAgMTI3MjAzLCAzMzA5LCA4Mjk3OSwgOTIwNiwgODI5ODAsIDExMzgyNCwgNjgwMiwgNzAzNTMsIDQxNjUzLCAxMjgwLCAxMjQxLCAKKyAgICA3MTY4LCAxMjA5NiwgMCwgNjY2MTUsIDQyNTY1LCA0MTY1MSwgOTgzODY5LCA5MTc2MjcsIDgzMDQyLCA0MTY1MCwgNjY1MDcsIAorICAgIDY2NDcwLCA3NDQ3MiwgMTI5MTQsIDQxNDkxLCA0MzkwMSwgOTQxMDYsIDYwNzgsIDk5NTQsIDc4ODIyLCAxNDc1LCAKKyAgICAxMTkyNDcsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIDQxMDYyLCAwLCAxMTM2ODAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgCisgICAgNDMyNTIsIDc4ODIzLCA2ODA4OSwgODcyNywgMTIwOTIyLCA2NTg3NSwgOTE3OTE2LCAxMjkzNDksIDEyNzc2MiwgMTA1NjIsIAorICAgIDc0MjE1LCA0MzA2NSwgMTIwOTA2LCAwLCAzMjQ4LCA3NDI5NywgMzI2MSwgOTAxNSwgNzEzNTEsIDExMzcxOCwgMzYzNSwgCisgICAgNjQzMzcsIDkyNzU5LCAxMjUwNTQsIDAsIDcxOTUsIDgzMzQ2LCAyMDA3LCA2NDQzMSwgMTk1MDc1LCAxOTQ2NzAsIDkyMTk3LCAKKyAgICAxMjcwOTAsIDYzNSwgOTgzMTE4LCAxMjkwODIsIDY1NjEzLCA3NzkwOSwgOTI0MjAsIDczOTk3LCAxMjc5ODAsIDEyMTQ1NywgCisgICAgNDM5MDUsIDc5ODQsIDg2MDAsIDc0NDM0LCAxMjEwNDcsIDQxNzYsIDcwMDUwLCAyMDM0LCA3ODQyMywgMTExNTQsIDY1ODkxLCAKKyAgICAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4NTQ0LCA3ODU5NiwgMTI5MDk0LCAzNjQ5LCAxMzE0OSwgNDIxNDUsIDQyNzk4LCAKKyAgICAzNjM0LCAxMjAyOTEsIDcxODg1LCA2NzY3NywgMTIwMTI0LCA3ODY2LCA3NTA0NSwgMTE0MDIsIDQyMTQ2LCA5NDAzMiwgCisgICAgNzQyMzgsIDQyNjY0LCAyODQ5LCAxMjcwMzQsIDAsIDc5MzgsIDEyOTYwLCAxNzYxLCAxMTgxMiwgNjUzNzksIDY4Mzg2LCAKKyAgICAxMjgxODUsIDExNTksIDcxMTgzLCA2OTcyOSwgMCwgNjY3NjgsIDcxNzgsIDEyMDg1MSwgOTgzODM2LCA0MTY4MCwgCisgICAgMTI4NDY5LCA4MzA5OCwgMTE1MzQsIDE1MTQsIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgMTI4NDkwLCA2Nzg3NywgCisgICAgMTk0NTYxLCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIDEwODE4LCA4MzA5MSwgCisgICAgOTk1MywgMTI4MDA4LCA3ODQyMSwgMTE5NCwgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCA2MTY5LCAxMjg3MSwgCisgICAgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIDQyNzUyLCAxMTkwMjUsIDkxNzkyNCwgNjc4NzUsIDEyMDMwMSwgMzQ5NSwgCisgICAgNjY2NDgsIDEyNTA3OSwgNzg3MDgsIDY4MzY0LCAxMjA3NzksIDQ4OTEsIDkxNzkzMywgMTA2NDEsIDEyNTI2NSwgNzM3NDYsIAorICAgIDEyMDk0NSwgNjgzNTIsIDAsIDczNzg3LCAxMjAxOTUsIDEyNzA5NCwgNzE5OSwgMTExMzEsIDEyMDYxNywgMTk0NzAwLCAwLCAKKyAgICA5ODM4NTIsIDEyNjk3OSwgNDI2ODUsIDQyNjc5LCAxOTMsIDc4Nzg5LCAwLCAwLCA0MjY2NywgOTgzODY4LCA1MjcxLCAKKyAgICA2ODMyMywgOTI1MTcsIDgzMzU2LCAxMzYyLCAxMzI5NywgMTE4ODYyLCA3MTg4MCwgMTk1MDkwLCAxOTQ5NjksIDczNzg5LCAKKyAgICAxMjA5ODksIDY2NTgsIDQ0MjYsIDEyNzA5MywgNjY4MzAsIDk4Mzg0MiwgODMxMDMsIDcyNzYsIDQyMTYzLCA1MjIwLCAKKyAgICAxMDA2NzAsIDc4NjIxLCA2NzgyMiwgMjQxNiwgMzMxMCwgNDI3MDMsIDgzMTA3LCAzNzksIDEyOTE1OSwgNDM3NTUsIAorICAgIDcwNTA0LCA0MzY0NywgMzIyMywgNjU0OTIsIDEyODQsIDE5NDc3MSwgNDU0OSwgMTE1MjMsIDAsIDcxMjUzLCA3MDc4NCwgCisgICAgMTA4MDcsIDk1NTgsIDkzMDI3LCAxMjgwMDMsIDg1MTUsIDg2ODgsIDEyODY2LCA2NTMwOCwgMzI5NCwgODMxNDMsIDg1MjksIAorICAgIDEyODEwMSwgNDMzODUsIDc1NjQsIDkxNzk4NiwgNDMzMjksIDgzMTQ4LCA5MjQ1OCwgNzM3NTcsIDY2NDU2LCA0MjM1OSwgCisgICAgMTI4NDM5LCAyMDMxLCAxMjczOTQsIDcyMDIsIDEyODIzMiwgMTI2NzYsIDQyNzI5LCA3NDc3NywgMzIxNSwgMTIwOTgyLCAKKyAgICA3NzEwLCAxNjEwLCA3MzgwMSwgMTI4ODA3LCAwLCA2NTY4MiwgMCwgNDM5MTcsIDY1OTI0LCA5OTc0LCAyMjgsIDQzOTIyLCAKKyAgICAxNTAxLCAxMjc1MTIsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAxMTg5MjcsIDQyOTk5LCAxNzI1LCA2NTUzMywgODE5NiwgCisgICAgNzQ3NiwgNzQzOTksIDAsIDY2ODY4LCA3MTUyLCA4NTAyLCA1NzYyLCAxOTY3LCA3NDgzLCA0Mzg5OCwgMCwgODEwNCwgCisgICAgNzAxMjgsIDc0NzQsIDQzOTE0LCA4MzA4MCwgMTI2NTA3LCAxMDQxNCwgMTMwMDEsIDgxNDEsIDE5NDk0OSwgNDI1MzcsIAorICAgIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIDY4MDUsIDg2MzEsIDI1NDUsIDQyOTM0LCA5MjIwMywgMTI1MjExLCA3NDE5MCwgCisgICAgMTI4NDc3LCA3MDQxMCwgOTgzNzg2LCA0Mjc2MiwgMTk0NzA4LCA0MjkxNCwgMTY1MCwgMjYyLCAxNjM3LCAxMjg1MDIsIAorICAgIDc5MDEsIDMyMzgsIDgzMDI2LCA0MTg2MSwgOTgzNzYzLCAxMjAyMTEsIDY1MTU4LCAxMDg2MCwgNzQ5NTksIDQzNjU4LCAKKyAgICA3NTI3LCA4MzA4NiwgNDMzMTksIDY0MTksIDAsIDQ1LCAxMjgwNjAsIDY0NTg4LCA5Mzk4OSwgMTI3NzUzLCAxMTk4MTAsIAorICAgIDcxOTQsIDUyOTEsIDEwMDM5OCwgNDM2NjYsIDEzMTI5LCAxMjY2MzksIDkwODQsIDcyNzE3LCA4NzM3LCA5ODMxNjUsIAorICAgIDEyODgxLCA3NTA2NiwgMTI5MDYsIDk2MzksIDc5MTIsIDI2MjAsIDE5NDgzMCwgMzU2NCwgMTI3MzkzLCA2OTk3OCwgMTc5LCAKKyAgICA0MzY0NCwgNzUwNDksIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAxMjkwNDIsIDcwMzQ3LCAxMTkwMDksIDI4NTAsIAorICAgIDgwODQsIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgODM1MjIsIDQyMDcyLCAKKyAgICA5MjczNiwgMTE5ODQyLCAxMDM5OCwgODMzODYsIDgzNTIzLCA4Mzc3LCAxMTkzMTIsIDgyNDUsIDY4NDAxLCAzMTU4LCAKKyAgICA5MjM5NiwgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCA5MjQ3MCwgMjkyLCAxMTExOSwgMTE5ODQ1LCA3MjcxNSwgMzIyMSwgCisgICAgMTc2MywgOTI0NjMsIDQ2MTIsIDY3NzI5LCAxMTk4NTAsIDcyNTMsIDcwNDU2LCA2ODM5MSwgNzUwMDIsIDEwNzgyLCAzNjM3LCAKKyAgICAxMjk5NiwgNDM1NDIsIDExMzY3NiwgNjQ1NzgsIDgzNDQ5LCAzMjI4LCA2OTYzNiwgODc4MywgOTgzMDkzLCAxMTk2MTQsIAogICAgIDI3MzEsIDAsIDEyMDgzMywgNzg1ODUsIDQxMDIsIDc2OTYsIDczODc4LCAxMjE0MTcsIDEyODEzMiwgNzA4MTMsIDQzMzE2LCAKICAgICA0MTc3LCAxMTI4MywgOTA4OSwgMTIwOTE4LCA3Mzk5NiwgMTIxMTExLCA2NDUwMCwgNDM2NzQsIDAsIDY0OTQ3LCAxODU2LCAKLSAgICAwLCAwLCA2Mzc5LCA5MTc4MDQsIDExMTQyLCAxMjcxNzYsIDMyMDgsIDEyOTc1LCA3NDc3NSwgMTI3MzgwLCA5ODM5MzEsIAotICAgIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDEyNDk2MiwgOTgzNjgzLCAyMDMzLCA3ODU3NywgNzg1NzYsIDgyOTY1LCA1NTI1NCwgCi0gICAgNzc0MCwgODI5NzQsIDcwNDQ4LCAxMjY1NTUsIDczOTY0LCA2ODUwNSwgOTM5ODgsIDY3NjEyLCA2NTY3NCwgMTI4MjQ0LCAKLSAgICA5NDExMCwgNDE2ODksIDAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgMTE3OTAsIDc0MDE5LCAxMjg1MjAsIDEyODA2NiwgCi0gICAgMTI4MDMxLCA4NTYxLCA0NTczLCAxMjEzNzUsIDUzMjYsIDkyNTcxLCAxMjA2MDUsIDcyMzAsIDgyNTcsIDEyMTQxNSwgCi0gICAgODc3OCwgNDE2ODgsIDAsIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCA0MzUxMSwgNzYyOCwgNjUwOTIsIDczOTAzLCAKLSAgICA2NDM1NSwgMTEzNDIsIDEyODU2MSwgMCwgOTgzNDM0LCAxMjgyMjYsIDEyNzAwMSwgMCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgCi0gICAgOTY3LCA5ODMzMzUsIDEyMDk4NSwgMTE5NDYsIDk4MzYwMiwgMzI1NywgMTI3MjA5LCAxMjMwNywgMTg0NSwgMTI5MDcyLCAKLSAgICA0MzUyNiwgMCwgMTE5NTczLCAxODg2LCA0MjM0MiwgMTAwODksIDg3MCwgNzY0OCwgMzQ5OSwgNzY2MiwgNzY1MiwgODc2LCAKLSAgICA4NzEsIDg3NywgNzY2NSwgODc4LCA0MjAxNSwgODc5LCA0MzY5MiwgNDU2MywgMCwgOTE3ODkyLCA3NTkxLCA2NTg4NywgCi0gICAgODY3LCA5NTIwLCA4NzIsIDc2NTYsIDg2OCwgODczLCA3NjQyLCA3NjU5LCA4NjksIDg3NCwgNzY0NCwgMTIwNjc0LCA4NzUsIAotICAgIDc5MCwgMTI4MzAzLCAxMTg5MzgsIDE5NTA1MywgOTMwMzgsIDY2MTgyLCAxOTQ2MjMsIDU0MjksIDE5NTA1NSwgNjYxODAsIAotICAgIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCA5ODMyOTEsIDEyNzIxNCwgNDIwNjcsIDAsIDU0MzMsIDEwNjU3LCA3OTExLCAKLSAgICAxMjUxMTksIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAKLSAgICAxMjUwOTQsIDY3NjM3LCAxMjcyODYsIDk2NzksIDc0MTIyLCA5Mjk3OCwgOTE3NTg1LCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIAotICAgIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMTI3MjYzLCAxODUxLCAxMjQ5OTUsIDgzMzIwLCAxMTkwOCwgMCwgOTM2MCwgCi0gICAgMTE4ODk3LCAxMjA4NzQsIDQyNzc2LCA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDExMTEyLCAwLCA5MjMyMSwgNDMzMTgsIAotICAgIDkyMzAyLCA4ODA5LCA2OTg4MSwgMCwgMTI2NTE4LCAxMjA2MDQsIDk4MzA1MiwgOTgzMjc3LCA5ODM0MzMsIDEyODQxMiwgMCwgCi0gICAgMTIwNTc3LCA3NDI3LCA5OTU4LCA0NTg4LCA0MzY4MCwgMCwgNzQ0ODQsIDEyNzE4NSwgMjQzMywgMTI4NjAyLCA2OTk3MywgCi0gICAgMzM1MiwgNzQzNjMsIDEyODY2OCwgMTIxMzQxLCA3OTMsIDc0NDA0LCAxMTE5NywgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIAotICAgIDY5OTc5LCA4MjA4LCA2ODMwOCwgNDE2OTUsIDE2NDcsIDExODg3NywgNzA4NDEsIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCAKLSAgICAxOTQ2MjgsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgNjg3NDIsIDEyMDU5NCwgNzQwODYsIDY4Nzc3LCA3MDE3OSwgCi0gICAgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCA5MTc2MDUsIDE5NDY1NCwgCi0gICAgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAxMjY2MTIsIDY3NzIzLCAyODQwLCA5ODM5MDUsIDc4ODI5LCA5ODM5MzksIAotICAgIDY2ODg3LCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDEyMTE2MSwgMTI4MDUxLCAxMjk5MSwgMTI0OTcxLCAyNjUxLCAKLSAgICA2ODAxNiwgOTgzMjY3LCAxMjczMjYsIDEyNTAzOCwgNzA4MzUsIDAsIDcwODQ0LCA0MzY0OCwgMTIwODEyLCA5MTc4MzMsIAotICAgIDQzMzIyLCA5MjY2MiwgMCwgMCwgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgNzQ1MiwgMzI4NSwgCi0gICAgNzQ4OTQsIDExMTUyLCA5MjkwMywgNjU2MTAsIDIzOTEsIDkyOTA4LCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCAKLSAgICA2MTAsIDQyODAwLCA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIAotICAgIDEyODM0MCwgMTI4MjY2LCA2NDc0OSwgNjc4NTAsIDIxMDcsIDEyODI5MCwgNzQyNDksIDQ2MDUsIDEyODE3NCwgOTgzMTkyLCAKLSAgICA0MzM3MiwgNjU5NDUsIDEyNzI0OSwgMTExMTMsIDExOTU5MCwgMCwgMCwgNzA0OTUsIDk4NywgNjkyNywgMTE1NzIsIAotICAgIDQyMjYxLCAxMTQ2NCwgMzM2NSwgOTk3MSwgMCwgOTgzOTUxLCAxMjgyOTcsIDAsIDc4NzYyLCAxMjc4NjcsIDEyMTM2OCwgCi0gICAgMTEzMzQsIDQzMzI2LCAxMjYwOSwgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCA0NjI3LCAxMTkyNjksIDUyMDgsIDAsIAotICAgIDcwMDkwLCAxMDMzMiwgMjQyNCwgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgNjk2NDcsIDczODk0LCAxMjg4NTIsIAotICAgIDU0MzIsIDY0OTY1LCA1NTI3LCA0MjMxNSwgMTA1MTYsIDc3OTAsIDU1MjgsIDEyODgzOCwgNDIxNDAsIDEyMDI4MSwgMCwgCi0gICAgOTgzNzc3LCA0MzU0NSwgOTg4NywgMTIxNDc3LCA0MDAwLCA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIDMyMDYsIDEyMDI3OCwgCi0gICAgNzg4NCwgMCwgMTI4NTY2LCA3NDkxMCwgMTI4NjY2LCAyMTEsIDI1MDksIDkyOTA0LCA3MDgyMiwgNjg2NzIsIDMyMjAsIAotICAgIDQyMjM1LCA3ODQ4MCwgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCAwLCA3MDQ4LCA0NTkwLCAxMjcyNTgsIAotICAgIDU4NTIsIDAsIDc4NDgyLCAxMjcyNTksIDE3MDgsIDAsIDc4NDgxLCAyNjIzLCAxMTk0MywgMTI4NzAwLCA2OTIyNiwgCi0gICAgNjk5NzQsIDQ2OTgsIDY2NTA5LCAxMDY2LCAxMTk5MjEsIDQ3MDEsIDk4Mzg3NiwgMTIwMjg1LCA3MDQ0NywgOTQxMTEsIAotICAgIDgyNjcsIDAsIDE0MjEsIDY2NDI2LCA3NTE2LCAxMjc1NTIsIDI2MjUsIDk4MzY0MSwgODAzNCwgNzQzMDksIDAsIDM2MzEsIAotICAgIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDAsIDk4MzA2NSwgMCwgNDMzODQsIDEyNjYwLCAxMjg2OTMsIDEyODI3MCwgMCwgCi0gICAgNzQ4NTAsIDQxMDY5LCA3MDE4NSwgMTI4MTU2LCAxMjA5OSwgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgNzk5MCwgOTgzNDg5LCAKLSAgICAzOTkwLCAxMjUwNTAsIDk4MzI2NCwgNjYzNjgsIDUwMTcsIDY0OTU2LCA3MDcxLCAwLCA3MDQ1NywgMTAzMCwgMTE4ODAwLCAKLSAgICA5MjU2MywgOTUxMywgNDEwNTksIDkzNTcsIDc0OTg4LCAxNzczLCA3NzkzOSwgMTIwMzUwLCAxMjQ5NjEsIDYzMzksIDc3NDUsIAotICAgIDk4NDQsIDEyNzIyMCwgNjQ2NTAsIDk0LCAxODgwLCA3NDc2NiwgMTEzNzE5LCA4OTA4LCA5ODMyMjIsIDEyODcwNywgCi0gICAgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDY4NzY5LCAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzYsIDAsIDE3NTcsIAotICAgIDY5NjQsIDQ2OTYsIDAsIDEyMDMzMywgNjQ3ODUsIDczOTQsIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAKLSAgICAxOTQ3MDcsIDEyMDM0NCwgNDM5ODgsIDcwNDIzLCA4NjEwLCA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgCi0gICAgNjk4OTQsIDQzMTcxLCAxNDU5LCAxMjgyMjQsIDY1MjQzLCA3ODYzOCwgMTk5NTMsIDEyOTA3OCwgMTUwNCwgNzAwNjQsIDAsIAotICAgIDEyOTEzLCA3NDIwNiwgNzUyOSwgMTI4NzQ1LCAxMjc4NjgsIDcwMjAzLCAxMjA3ODIsIDQxMTMsIDEyMDkyOSwgMjM3MiwgCi0gICAgMzM2LCAwLCA3NTA5LCAxMjE1MiwgMTk0ODg1LCA2ODIsIDc2NTUsIDQxNTA1LCAwLCA2NDc0MywgMTA1OTMsIDE3MDMsIAotICAgIDkyNDY3LCA3NzkxMSwgODAzMywgNjk5NTMsIDAsIDk4MTAsIDEyNzI2OSwgMTIwMDEzLCAxMjk3MCwgMCwgNDIzNTEsIAotICAgIDEwMTA5LCA3NDUzNSwgNzQwNjgsIDc0OTIxLCAwLCA5MjY5MCwgMCwgNjUwNjgsIDc0MjkxLCAxOTY1LCA3MDY5LCA0MzMxMiwgCi0gICAgMCwgNzM4ODcsIDExMTMwLCAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDExMTQ1LCAxMjExMTcsIDc0MjM5LCAKLSAgICA0MTMxNywgOTI2MTQsIDIwOTEsIDc0NTQ1LCAyMDkwLCA2OTkxMiwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDExMTYxLCAKLSAgICAxMDQ5OCwgMjA4MywgNzc4ODgsIDcxMTk2LCAwLCAxMTkyMzYsIDYzNCwgMTI0OTcwLCA5MjI5MCwgMTk0ODg2LCA2OTc3OSwgCi0gICAgNDE2NSwgODc0NiwgMTk1MDQ4LCA5NjU0LCAxMjg1NiwgNjkyNCwgNzY2MCwgNzA2NiwgMTk0NjkzLCA3MDQxNSwgMTI4MTM1LCAKLSAgICA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCA0MTAzOSwgMTI3NDgzLCAxMjQ5NjUsIDY4MCwgMjMwMiwgMTI4MjAwLCAKLSAgICAxMTgxLCA3MDU2LCAzMTc0LCA2NzI0OCwgMCwgOTI2NjgsIDY1NjY1LCAxMjczNzUsIDExMzc3NiwgNjkyMCwgMCwgOTIyOTUsIAotICAgIDEyNjYwNiwgMTE4OTY1LCA2ODMxOCwgNjQ2NDQsIDEyNjk4MSwgNzQxMTksIDY4MjM4LCA0MTAyOCwgNzQwMjUsIDYyMzEsIAorICAgIDEwMDU3MiwgMTI3ODEyLCA2Mzc5LCA5MTc4MDQsIDExMTQyLCAxMjcxNzYsIDMyMDgsIDEyOTc1LCA3NDc3NSwgMTE5MTIxLCAKKyAgICA5ODM5MzEsIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDEyNDk2MiwgOTgzMzI5LCAyMDMzLCA3ODU3NywgNzg1NzYsIAorICAgIDgyOTY1LCA1NTI1NCwgNzc0MCwgODI5NzQsIDcwNDQ4LCAxMjY1NTUsIDczOTY0LCA2ODUwNSwgOTM5ODgsIDY3NjEyLCAKKyAgICA2NTY3NCwgMTI3NTUyLCA5NDExMCwgNDE2ODksIDk4MzQxMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAxMTc5MCwgNzQwMTksIAorICAgIDEyODUyMCwgMTI4MDY2LCAxMjgwMzEsIDg1NjEsIDQ1NzMsIDEyMTM3NSwgNTMyNiwgOTI1NzEsIDEyMDYwNSwgNzIzMCwgCisgICAgODI1NywgMTIxNDE1LCA4Nzc4LCA0MTY4OCwgMCwgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDQzNTExLCA3NjI4LCAKKyAgICA2NTA5MiwgNzM5MDMsIDY0MzU1LCAxMTM0MiwgMTAwNTc5LCA5ODM3MzIsIDE5NDkzOSwgMTI4MjI2LCAxMjcwMDEsIAorICAgIDEyNzk0NCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgOTY3LCAxMDA0ODEsIDEyMDk4NSwgMTE5NDYsIDEyOTAzMiwgMzI1NywgCisgICAgMTI3MjA5LCAxMjMwNywgMTg0NSwgMTAwNTc4LCA0MzUyNiwgOTgzMDg0LCAxMTk1NzMsIDE4ODYsIDQyMzQyLCAxMDA4OSwgCisgICAgODcwLCA3NjQ4LCAzNDk5LCA3NjYyLCA3NjUyLCA4NzYsIDg3MSwgODc3LCA3NjY1LCA4NzgsIDQyMDE1LCA4NzksIDQzNjkyLCAKKyAgICA0NTYzLCA5ODMyNDksIDkxNzg5MiwgNzU5MSwgNjU4ODcsIDg2NywgOTUyMCwgODcyLCA3NjU2LCA4NjgsIDg3MywgNzY0MiwgCisgICAgNzY1OSwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCA3OTAsIDEyMTA4MiwgMTE4OTM4LCAxMDA0MjcsIDkzMDM4LCAKKyAgICA2NjE3NywgMTk0NjIzLCA1NDI5LCAxOTUwNTUsIDY2MTgwLCAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgMTk0OTY2LCAxMTkyNDQsIAorICAgIDQyMDY3LCAxMTk5OTMsIDU0MzMsIDEwNjU3LCA3OTExLCAxMjUxMTksIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCAKKyAgICA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAxMjUwOTQsIDY3NjM3LCAxMjcyODYsIDk2NzksIDc0MTIyLCAKKyAgICA5Mjk3OCwgOTE3NTg1LCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMTI3MjYzLCAKKyAgICAxODUxLCAxMjA4MjMsIDgzMzIwLCAxMTkwOCwgMCwgOTM2MCwgMTE4ODk3LCAxMjA4NzQsIDQyNzc2LCA2NjE4NywgMTI4MzcsIAorICAgIDg4MjksIDc3MTEsIDExMTEyLCAxMjg3ODcsIDkyMzIxLCA0MzMxOCwgOTIzMDIsIDg4MDksIDY5ODgxLCAxMjg1NjQsIAorICAgIDEyNTIyOSwgMTIwNjA0LCA5ODMwNTIsIDk4MzIzOCwgOTgzNDMzLCAxMjg0MTIsIDAsIDEyMDU3NywgNzQyNywgOTk1OCwgCisgICAgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxMjcxODUsIDI0MzMsIDEyODYwMiwgNjk5NzMsIDMzNTIsIDc0MzYzLCAxMjY2MDEsIAorICAgIDEyMTM0MSwgNzkzLCA3NDQwNCwgMTExOTcsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCA2OTk3OSwgODIwOCwgNjgzMDgsIAorICAgIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDcwODQxLCA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgMTI4Mzc3LCAxMjc5ODksIAorICAgIDQxMzc2LCAxMTk5NzgsIDY4NzQyLCAxMjA1OTQsIDc0MDg2LCA2ODc3NywgNzAxNzksIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAKKyAgICAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgMTI1NCwgMTk1MDA2LCAxOTQ2NTQsIDkzOTY3LCA5MTc2MDIsIDY1MjI4LCAKKyAgICA3ODIyMSwgNzI3NDYsIDY3NzIzLCAyODQwLCAxMjg4NDIsIDc4ODI5LCA5ODM5MzksIDY2ODg3LCAzMjQ1LCA5MDY4LCAKKyAgICA2ODE5NCwgNjQ3MjUsIDEyMTE2MSwgMTI4MDUxLCAxMjk5MSwgMTI0OTcxLCAyNjUxLCA2ODAxNiwgOTgzMjY3LCA3Mjg3MywgCisgICAgMTAwNjAxLCA3MDgzNSwgMCwgNzA4NDQsIDQzNjQ4LCAxMjA4MTIsIDE5NDg1NCwgNDMzMjIsIDkyNjYyLCAwLCAwLCAKKyAgICA2NDM3MiwgOTI2OTgsIDMyMjYsIDY1NSwgNzUyLCA3NDU3LCA3NDU2LCA3NDUyLCAzMjg1LCA3NDg5NCwgMTExNTIsIAorICAgIDkyOTAzLCA2NTYxMCwgMjM5MSwgOTI5MDgsIDkyMjQ4LCA2NzEsIDI1MCwgNzQzNCwgNjE4LCA2NjgsIDYxMCwgNDI4MDAsIAorICAgIDc0MzEsIDExNTIsIDQyODAxLCA2NDAsIDEyMDY2NiwgNzQ0OCwgNzQzOSwgNjI4LCAzOTA1LCA3MzgxMCwgMTI4MzQwLCAKKyAgICAxMDA3NDEsIDY0NzQ5LCA2Nzg1MCwgMjEwNywgMTI4MjkwLCA3NDI0OSwgNDYwNSwgMTI4MTc0LCAxMDA3NDUsIDQzMzcyLCAKKyAgICA2NTk0NSwgNzI3MTAsIDExMTEzLCAxMTk1OTAsIDAsIDEwMDc0OSwgNzA0OTUsIDk4NywgNjkyNywgMTE1NzIsIDQyMjYxLCAKKyAgICAxMTQ2NCwgMzM2NSwgOTk3MSwgNzA2NzMsIDEyNzk0MiwgMTI4Mjk3LCAwLCA3ODc2MiwgMTI3ODY3LCAxMjEzNjgsIAorICAgIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgMTE5MjY5LCA1MjA4LCAKKyAgICAxMTM2OTAsIDcwMDkwLCAxMDMzMiwgMjQyNCwgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgNjk2NDcsIDQyMTQyLCAKKyAgICAxMjg4NTIsIDU0MzIsIDY0OTY1LCA1NTI3LCA0MjMxNSwgMTA1MTYsIDc3OTAsIDU1MjgsIDEyODgzOCwgNDIxNDAsIAorICAgIDEyMDI4MSwgMCwgMTk1MDg4LCA0MzU0NSwgOTg4NywgMTIxNDc3LCA0MDAwLCA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIAorICAgIDMyMDYsIDEyMDI3OCwgNzg4NCwgMCwgMTI4NTY2LCA3NDkxMCwgMTI4NjY2LCAyMTEsIDI1MDksIDkyOTA0LCA3MDgyMiwgCisgICAgNjg2NzIsIDMyMjAsIDQyMjM1LCA3ODQ4MCwgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCA5ODM4MzMsIDcwNDgsIAorICAgIDQ1OTAsIDEyNzI1OCwgNTg1MiwgOTgzODE5LCA3ODQ4MiwgMTI3MjU5LCAxNzA4LCAwLCA3ODQ4MSwgMjYyMywgMTE5NDMsIAorICAgIDEyMTE0MCwgNjkyMjYsIDY5OTc0LCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCAxMDA1NjQsIDEyMDI4NSwgCisgICAgNzA0NDcsIDk0MTExLCA4MjY3LCAwLCAxNDIxLCA2NjQyNiwgNzUxNiwgMTIwNDA2LCAyNjI1LCAxMjgyNDIsIDgwMzQsIAorICAgIDc0MzA5LCAxOTQ3MTUsIDM2MzEsIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDEyNzAzMiwgMTIwNjEzLCA5ODM1NzgsIAorICAgIDQzMzg0LCAxMjY2MCwgMTIyODgzLCAxMjgyNzAsIDAsIDc0ODUwLCA0MTA2OSwgNzAxODUsIDEyODE1NiwgMTIwOTksIAorICAgIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDk4MzQ4OSwgMzk5MCwgMTI1MDUwLCA5ODMyNjQsIDY2MzY4LCA1MDE3LCAKKyAgICA2NDk1NiwgNzA3MSwgMCwgNzA0NTcsIDEwMzAsIDExODgwMCwgOTI1NjMsIDk1MTMsIDQxMDU5LCA5MzU3LCA3MDY3NSwgCisgICAgMTc3MywgNzc5MzksIDEyMDM1MCwgMTI0OTYxLCA2MzM5LCA3NzQ1LCA5ODQ0LCAxMjcyMjAsIDY0NjUwLCA5NCwgMTg4MCwgCisgICAgNzQ3NjYsIDExMzcxOSwgODkwOCwgOTgzMjIyLCAxMjgyMzYsIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCA2ODc2OSwgCisgICAgMTI2NTcyLCA0MTMwNywgODczMiwgMTIwMzM2LCAxMDA2NjksIDE3NTcsIDY5NjQsIDQ2OTYsIDAsIDEyMDMzMywgNjQ3ODUsIAorICAgIDczOTQsIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAxOTQ3MDcsIDEyMDM0NCwgNDM5ODgsIDcwNDIzLCA4NjEwLCAKKyAgICA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgNjk4OTQsIDQzMTcxLCAxNDU5LCAxMjgyMjQsIDY1MjQzLCAKKyAgICA3ODYzOCwgMTk5NTMsIDEyOTA3OCwgMTUwNCwgNzAwNjQsIDcyNDIxLCAxMjkxMywgNzA3MjIsIDc1MjksIDEyMDYwOCwgCisgICAgMTI3ODY4LCA3MDIwMywgMTIwNzgyLCA0MTEzLCAxMjA5MjksIDIzNzIsIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDE5NDg4NSwgCisgICAgNjgyLCA3NjU1LCA0MTUwNSwgOTgzNzUzLCA2NDc0MywgMTA1OTMsIDE3MDMsIDkyNDY3LCA3NzkxMSwgODAzMywgNjk5NTMsIAorICAgIDAsIDk4MTAsIDEyNzI2OSwgMTIwMDEzLCAxMjk3MCwgOTgzMjA1LCA0MjM1MSwgMTAxMDksIDc0NTM1LCA3NDA2OCwgCisgICAgNzQ5MjEsIDAsIDkyNjkwLCAxMjI4ODYsIDY1MDY4LCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIDAsIDczODg3LCAKKyAgICAxMTEzMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAxMTE0NSwgMTIxMTE3LCA3NDIzOSwgNDEzMTcsIAorICAgIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgNjk5MTIsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAxMTE2MSwgMTA0OTgsIAorICAgIDIwODMsIDc3ODg4LCA3MTE5NiwgMCwgMTE5MjM2LCA2MzQsIDEyNDk3MCwgOTIyOTAsIDE5NDg4NiwgNjk3NzksIDQxNjUsIAorICAgIDg3NDYsIDE5NTA0OCwgOTY1NCwgMTI4NTYsIDY5MjQsIDc2NjAsIDcwNjYsIDEyNzA1MSwgNzA0MTUsIDEyODEzNSwgCisgICAgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgMjIzMywgMTI3NDgzLCAxMjQ5NjUsIDY4MCwgMjMwMiwgMTI4MjAwLCAxMTgxLCAKKyAgICA3MDU2LCAzMTc0LCA2NzI0OCwgOTgzMTcxLCA5MjY2OCwgNjU2NjUsIDEwMDU5NCwgMTEzNzc2LCA2OTIwLCAwLCA5MjI5NSwgCisgICAgNzA2NzIsIDExODk2NSwgNjgzMTgsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCA2ODIzOCwgNDEwMjgsIDc0MDI1LCA2MjMxLCAKICAgICAyNjEzLCA2NTMwMiwgNDA5ODksIDY4MjM5LCA2ODIzMCwgNjgyMzQsIDQyNzYwLCAwLCA0Mzg5NiwgMCwgNDA5ODcsIDQ2NjcsIAotICAgIDAsIDcxODQzLCA4ODI4LCA3Nzk5NSwgNzA1MDYsIDEyNDYsIDQ3NDYsIDEyODUwMSwgMTI4NTA4LCAxMTAyMSwgNDc0OSwgCi0gICAgOTI2NzUsIDkxNzg4MiwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgMjQyLCAwLCAxNTY2LCA4MjE3LCAxMjcyMTAsIDY0NjUzLCAKLSAgICA3ODM4NiwgNzQ2MTcsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIDUzMTMsIDk1MSwgNzQ1NjgsIDkyOTgzLCA5ODM4NjcsIDc2MDQsIAotICAgIDk4MzI5MiwgNDAwOSwgNzAyNzcsIDcxODQ0LCAxMjA1NjIsIDAsIDk4MzcyMCwgNjQ4NjAsIDExOTEzOCwgMTE5MDY5LCAwLCAKLSAgICAxMjczNzAsIDQwNDgsIDk4MzU5OCwgODMwMDksIDcwMDI0LCAxNjQ2LCA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIAotICAgIDEyOTA0NywgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIAotICAgIDI5NzUsIDc0NDQyLCA5ODIyLCA5ODM5MzUsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIDExODg0MCwgMCwgOTE3NTYyLCA3ODI5OSwgCi0gICAgMzM5OSwgOTg1MSwgOTE3NjA5LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMTI3NzY3LCAwLCA3MTg0MiwgCi0gICAgNzAxNzgsIDkyMzE0LCAwLCAxNzc3LCA5MTUxLCAxMTM3LCA2Njg2NywgNzQ5LCA0MjM2NiwgNzA0NDQsIDUzODUsIDcwNzkxLCAKLSAgICA3MjQzNSwgNzAxMjcsIDgzMzc3LCA1OTg5LCAxMjg5MDUsIDc0NjM2LCAxMjA4NDgsIDAsIDQxNjg1LCA2OTIyMywgMCwgCi0gICAgOTc2OSwgNDE2ODQsIDE5NDczNywgNTE5LCAxMTkyMzEsIDExNzQwLCA1NzY2LCAwLCAwLCAyNjAwLCA4ODQ4LCA3MDQxNiwgCi0gICAgNDEyOTcsIDAsIDM2NjYsIDcwNDIwLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCAKLSAgICA2NTU4LCAxMjcxNDksIDEyODA2NCwgNjk3NjUsIDkyNzc1LCAyNTIsIDAsIDQxMzAyLCAxMTkzNTAsIDgzNTA0LCAxMTg4MzksIAotICAgIDY5NzYzLCA2ODc2MiwgMTE3MjksIDg3MTksIDkwNjAsIDEyOTA5MSwgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMTI5NDEwLCAKLSAgICAxMTg3OTIsIDExNzM0LCA5MzAxMSwgMTE3MzAsIDExMzc0MSwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAKLSAgICAxMTcyOCwgNDM1NzIsIDk4MzEzOSwgMCwgNzc2NCwgNjg3NDEsIDExMDk0LCAxMjA4MjUsIDAsIDQzNDg5LCA0MjgyLCAKLSAgICA4Mjk4LCAwLCAwLCA3MDMyOCwgMTk0OTg2LCA3MDMyNCwgNjQ0NDksIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDY1NTg3LCAKLSAgICA3MDQ0MiwgNjU2NzAsIDk4Mzk2MywgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCA5ODM4NjksIDcwMzI2LCAwLCAKLSAgICA3MTQ2MCwgMTIwNzY0LCA3MDMyMiwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCA3MDA1MywgOTgzNzEyLCAzNjQ3LCAKLSAgICAxMjAyMDcsIDI2MDIsIDEyODM0MSwgMTIxMTAzLCAxMjUwNDMsIDQxMTM1LCA4MzQ5OCwgMCwgMTIxMzI1LCA2NDYzMSwgCi0gICAgMTcyLCA0OTcxLCA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgNzc5MjYsIDc1OTcsIDEwNTI4LCAKLSAgICA3NTA1NCwgMCwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgOTgzOTcxLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgCisgICAgMTIxMjEyLCA3MTg0MywgODgyOCwgNzc5OTUsIDcwNTA2LCAxMjQ2LCA0NzQ2LCAxMjg1MDEsIDEyODUwOCwgMjI2OSwgCisgICAgNDc0OSwgOTI2NzUsIDkxNzg4MiwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgMjQyLCAxMDA1OTUsIDE1NjYsIDgyMTcsIAorICAgIDEyNzIxMCwgNjQ2NTMsIDc4Mzg2LCA3NDYxNywgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgOTUxLCA3NDU2OCwgCisgICAgOTI5ODMsIDk4Mzg2NywgNzYwNCwgMTI4MjY2LCA0MDA5LCA3MDI3NywgNzE4NDQsIDEyMDExNSwgMTI2NjQyLCA5NDA3NCwgCisgICAgNjQ4NjAsIDEwMDU1MSwgMTE5MDY5LCAwLCAxMjczNzAsIDQwNDgsIDk4MzU5OCwgODMwMDksIDcwMDI0LCAxNjQ2LCAKKyAgICA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIDEyOTA0NywgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCAKKyAgICA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIDI5NzUsIDc0NDQyLCA5ODIyLCA5ODM5MzUsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIAorICAgIDExODg0MCwgOTgzNzI4LCA5MTc1NjIsIDc4Mjk5LCAzMzk5LCA5ODUxLCA5MTc2MDksIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAKKyAgICAxMjcwNTIsIDY3ODksIDEyNzc2NywgMCwgNzE4NDIsIDcwMTc4LCA5MjMxNCwgMCwgMTc3NywgOTE1MSwgMTEzNywgNjY4NjcsIAorICAgIDc0OSwgNDIzNjYsIDcwNDQ0LCA1Mzg1LCA3MDc5MSwgNzI0MzUsIDcwMTI3LCA4MzM3NywgNTk4OSwgMTI4OTA1LCA3NDYzNiwgCisgICAgMTIwODQ4LCAwLCA0MTY4NSwgNjkyMjMsIDAsIDk3NjksIDQxNjg0LCAxOTQ3MzcsIDUxOSwgMTE5MjMxLCAxMTc0MCwgCisgICAgNTc2NiwgMCwgMCwgMjYwMCwgODg0OCwgNzA0MTYsIDQxMjk3LCAwLCAzNjY2LCA3MDQyMCwgNDEzMDAsIDc0NDY4LCAKKyAgICA2NTE2MCwgMCwgNjk2ODgsIDY5NzcxLCA3NDQ3OSwgMCwgNjU1OCwgMTI3MTQ5LCAxMjgwNjQsIDY5NzY1LCA5Mjc3NSwgCisgICAgMjUyLCA5ODMxNDIsIDQxMzAyLCAxMDAzNzEsIDgzNTA0LCAxMTg4MzksIDY5NzYzLCA2ODc2MiwgMTE3MjksIDg3MTksIAorICAgIDkwNjAsIDEyNTA3NywgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMTI5NDEwLCAxMTg3OTIsIDExNzM0LCA5MzAxMSwgMTE3MzAsIAorICAgIDExMzc0MSwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAxMTcyOCwgNDM1NzIsIDk4MzEzOSwgMTI5NDEyLCAKKyAgICA3NzY0LCA2ODc0MSwgMTEwOTQsIDEyMDgyNSwgOTgzNzU4LCA0MzQ4OSwgNDI4MiwgODI5OCwgMCwgMCwgNzAzMjgsIAorICAgIDExMzY5MSwgNzAzMjQsIDY0NDQ5LCAwLCAxMjY2NTAsIDYzODU0LCA4NDU2LCA2NTU4NywgNzA0NDIsIDY1NjcwLCAKKyAgICA5ODMxODAsIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgMTAxMTAyLCA3MDMyNiwgMCwgNzE0NjAsIDEyMDc2NCwgCisgICAgNzAzMjIsIDEwMDE5LCA3NDc2MiwgMCwgMzQ1OCwgNDM2NSwgNzAwNTMsIDk4MzcxMiwgMzY0NywgODM0MzcsIDI2MDIsIAorICAgIDEyODM0MSwgMTAwNzE3LCAxMjUwNDMsIDQxMTM1LCA4MzQ5OCwgMTIwODE1LCAxMjEzMjUsIDY0NjMxLCAxNzIsIDQ5NzEsIAorICAgIDQxMjE5LCA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgMTI2NDc2LCA3NzkyNiwgNzU5NywgMTA1MjgsIDc1MDU0LCAKKyAgICAxMjE0MDUsIDM3MzIsIDczOTEwLCAxOTQ1ODgsIDUzNDQsIDk4Mzk3MSwgNDMzNjYsIDQzMzYzLCA5MDYyLCAxMTkyNTIsIAogICAgIDEyMTQ0MSwgOTI1MjgsIDAsIDY0NDc5LCA5MjMyLCA5MjU5NiwgODMzMzAsIDExMzcwNywgMTk0NzEyLCAxMDkwMCwgCiAgICAgNDE1MzEsIDEyNjMsIDM3MjAsIDEyMDQ4LCA3NDA3NSwgNjQyOTIsIDQxNTI0LCA3MjI3LCAxMTk2MzUsIDYwOTksIDQxNTM0LCAKLSAgICAwLCAxMjczNTQsIDEyNzM0NSwgMjk5LCA4MzAyMiwgODUyNSwgMTI3MzQ3LCAzNTI0LCA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgCi0gICAgOTI1NjQsIDMwNzUsIDY3ODY3LCA5NDA1MywgMCwgNjYzNjIsIDAsIDY0MzUzLCA3MDQ0MCwgMCwgNTg0NSwgMTIxMzEwLCAwLCAKLSAgICAxMjExODUsIDI1ODEsIDgyMDAsIDY1MTE0LCA2ODQ2MCwgOTgzNjkzLCA0MzI4MywgNTU1MSwgMCwgMTIwNzM1LCA5ODMyMDEsIAotICAgIDYzNDAsIDExODg1NSwgMTIxMDI3LCA3ODEzNCwgODY4MCwgNzIwNCwgNzAwNjUsIDI1ODgsIDI5MTQsIDcwMTEsIDU1MjgxLCAKLSAgICAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDExOTU2MywgNzM3NzQsIDEwOTEzLCA4MzExNiwgOTgzMDg2LCA4NjY2LCAKLSAgICA2NzUsIDQyNDkzLCAxMjEyOTcsIDQzNTcxLCAwLCA2MjE5LCAxMjg1ODQsIDk5ODAsIDQxMjMyLCAxMDkyOCwgMCwgNDExNTMsIAotICAgIDQxMjI5LCAxMTg5NjcsIDAsIDM3MzgsIDk0MDE2LCA5ODMyNDMsIDEyNzExLCAzMTgxLCA2NjIxMiwgNzQyODksIDY4NDcyLCAKLSAgICA0Mjg1NywgODI2MiwgOTMwMzYsIDAsIDc0NDc2LCAwLCA0MjM0NywgMTIwOTIsIDk2MTUsIDcyMzQsIDc0MDQ3LCA5ODMwODgsIAotICAgIDEyODEzNywgNDM3NDQsIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIDQzOTgzLCA3NDUwNywgCi0gICAgOTgzMTI2LCA3NDQ2MSwgMzIxOCwgMTIwNDcxLCA3NDI5MCwgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCA4NTY5LCAxMTQwNCwgCi0gICAgMTE5MzIsIDczNzI4LCAzMjE0LCAxMTIxMiwgMTIwNDY4LCAxMjEyOCwgMzIwNywgNjU0ODYsIDc4NzI5LCAxOTAxLCAKLSAgICA3ODcyNywgNjU2NjcsIDEyMDQ2MCwgNzQyNSwgMzIwNSwgNjgwMDMsIDc4NzM3LCA3ODczNiwgNzg3MzUsIDQzMzgzLCAKLSAgICA2OTk0MCwgNjU0NTksIDI2MDYsIDc4NzMwLCA3Mzg5NywgMTI5MDQzLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIDExOTY2MSwgCi0gICAgMCwgMCwgODMxNzgsIDEyMDczNywgMTIwOTUzLCAxOTQ3NzMsIDk4MzMyMiwgMzc4LCAyNjEwLCA5ODMzMjgsIDY1MDc5LCAKLSAgICA5ODMzMjcsIDY1Njk1LCAxMjEyMjAsIDM3LCA3MDY4LCAwLCAxMjA0ODAsIDY4MjM2LCAzMjA5LCAxMjA0NzcsIDEyMDgzNSwgCi0gICAgMTA2MzgsIDk3NjgsIDY5OTUyLCAxMTk5MDksIDcxNDg2LCA5MjIyNSwgOTgzOTUzLCA5ODMzNDAsIDAsIDQzODQwLCAwLCAwLCAKLSAgICA1MjMzLCA5ODMzMzcsIDY0NzkyLCA3MTIzMywgMTI4MjIzLCAxMjY2MzMsIDEyODkxOSwgNzA2MCwgOTg0NywgMTIwMTQ0LCAKLSAgICAxNjg1LCA1OTUsIDgzMTk3LCA3MDQyOCwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDAsIDEwMDA0LCAxMjY5OTcsIDAsIAotICAgIDY1NDEsIDQzODM3LCA3MTQ2NSwgMTIxMDMwLCAzMjQzLCA5MDE0LCA1NjA2LCAxMjUwMzIsIDUzOCwgNjQ2MjAsIDU2MDIsIAotICAgIDg0NjcsIDc0MzkxLCA2NTQ3LCA3MTQ2NiwgODIwMywgNjY0MjAsIDY4MjQxLCA4NDU4LCA2NTIxMSwgODQ5NSwgOTIzMTEsIAotICAgIDEyNzQ4MSwgOTE3NTUyLCA3NzksIDc4MzE0LCA2NDM2NywgMjQ2NSwgNjk5MDEsIDgxOTMsIDU1Mjc5LCA5NzMwLCA5MjgwLCAKLSAgICAxMjA5MTMsIDcwNjUsIDc0MTU1LCA0MzQ2LCAxMTM2OTAsIDczNzk4LCA1MDQsIDEyNTExNSwgOTI0MTQsIDg5ODIsIDAsIAotICAgIDEyMTQ3MSwgMTE5MTcwLCA3ODIsIDEyOTAyOCwgMTA4ODMsIDEyODQ0NiwgMTk0ODUyLCA3MzIsIDM3MzcsIDEyMTE4OCwgCi0gICAgMTU0OCwgNjg2NTAsIDkyNTA3LCAxODMyLCA1NjA0LCA1NzM1LCA0MTE0MSwgMTE5MDIwLCA0Mzc2LCA5ODMzNzIsIDExNzg3LCAKLSAgICAzNzQ1LCA5MTc4NjgsIDExOTg4NSwgNDI4ODgsIDY1NzEyLCAxMjc5MTMsIDM4NjksIDExOTM3LCA1NzI1LCAxMjc1MzksIAotICAgIDE3ODMsIDc0MTYsIDU3MjgsIDAsIDEyODQ1NywgMTE5NTU0LCAxMTkxOCwgNjY1NjcsIDU3MjQsIDEyNzk2NSwgNTcyNywgCi0gICAgNzg1MjEsIDEyMTEyMSwgMCwgNzY0LCAwLCAxMjEwMTEsIDQzNTMxLCAxMTM2NzAsIDkwMzMsIDEyNzE4MiwgNDI1MzIsIAotICAgIDYyMjMsIDExMDQyLCAxMjA3NDksIDExNDIzLCA3NDg1MiwgMTE5ODYxLCA2ODMwMywgNDM0NjUsIDAsIDc0NzY3LCA2NTU5LCAKLSAgICA2NDU1NywgNzEzNDgsIDkyNjQ5LCAxMjA2NDgsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAxMjg3MTEsIDQzMzc3LCAKLSAgICA5MjI4MiwgNzEzNDYsIDE0NzgsIDk3ODMsIDExODI1LCAyNjA3LCA2NDc0MCwgMTEzNjg5LCA3NzM5LCA3NDU0MywgCi0gICAgOTE3NzY1LCA2NzM5MywgMCwgNjEzMiwgMCwgNjM3NjUsIDEyODM5NiwgNzAwNTgsIDQxMTQ0LCA3MTg5OSwgOTI0MzgsIAotICAgIDQzNTM3LCA2NzYxLCAxMDA5MywgNDM2OSwgOTE3NzkxLCAxMjgzOTQsIDE5NDc3NiwgODgyMCwgMzk0NywgMCwgNjUyOTksIAotICAgIDExNTE1LCA1MjYsIDEyODEwMywgNDEyOTUsIDE5NDYwMywgMTI1MDAyLCAxOTQ5MzIsIDExMzY5MSwgNzY4OCwgOTE3Nzg2LCAKLSAgICA3Njg2LCA4Mjg4LCAxMTgxNSwgOTgzMTg4LCAxMjE0MTEsIDk4MzM4NCwgMTU0MywgMzcxMywgNDEyMjEsIDEyNDIzLCAKLSAgICA0MjI4MSwgNzg1NDQsIDc0MDI0LCAxMjI5MywgOTgzNjgwLCA2NDM1NywgMTE3OTQsIDQyMDgyLCAxMjgxMjUsIDE3MzcsIAotICAgIDg5ODcsIDQyMDgxLCAwLCA3MjA1LCA4MzI2NCwgOTMzNSwgMTI4NTAsIDExOTE3MywgNjU1MywgNzA1NSwgNjgwNDEsIAotICAgIDgyNzcsIDAsIDY3NzUxLCA1NDc1LCA3NDc5NSwgNjc4MCwgNjUwNjcsIDAsIDEzMjcsIDExNjAsIDQyMDg0LCA5Mzk2MywgCi0gICAgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMTI5MDcwLCA5ODM4NjUsIDY4MTc2LCA1ODYzLCAzMTM3LCAwLCA0MTQ3LCAKLSAgICA5ODMxNzAsIDQxMjE2LCA3ODQ0LCAyNjE2LCA3MDE5NywgNjg0NjEsIDY1MjM0LCA2ODM0MSwgMTMwNzYsIDMxMzUsIAotICAgIDk4MzI4OSwgNzgxNDMsIDExOTEzOSwgMzE0MiwgOTI0NTEsIDk0MDY4LCAxMDgxOSwgMTE5NTgwLCAxMDE4MywgNzQ2MzUsIAotICAgIDI2MDgsIDE0NzAsIDczOTY3LCA5NDAwOCwgNjIyNywgMTIxMjU3LCA4MzI2OCwgNjUyMzYsIDkxNzg3OCwgNjE2MywgCi0gICAgOTgzNTU4LCAxMTM3MjgsIDEyNzMxNCwgMTI4MTM4LCA5ODMyMzYsIDg2MDMsIDEyNzk1OSwgMTE5ODY2LCAzMzA2LCAKLSAgICAxMDg3NiwgNDMzOTIsIDgzMTg3LCAxMjc5MzEsIDU3NTEsIDEyNzUxNywgNjIyMiwgMCwgMTI3NDY2LCAxMjA4NiwgNzQwMywgCi0gICAgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAxMTk5MDMsIDAsIDI1NzAsIAotICAgIDcwMjEsIDc0OTAyLCAxOTQ3NDIsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCA2OTc0LCA5Mjc1MCwgMCwgOTgzMjExLCA1MDAyLCAKLSAgICA5ODM1NjMsIDQxMjg2LCA2OTk0NiwgNzQ0NjUsIDcxMDc0LCA0MzU4NSwgMTEzNzIwLCA2NTUxLCA5ODMzNzUsIDEyODIyOSwgCi0gICAgOTgzMjc0LCA0MTI4OSwgMTI1MTMwLCA3MTA4MCwgMTI3OTU4LCA4OTc3LCA2MDIsIDEyMDgxNCwgMCwgMTI4MzUwLCAKLSAgICAxMjg2NjEsIDE5NDg5MCwgOTgzMzc3LCA0MTI3OSwgMCwgMCwgOTQxMDgsIDExMDgxLCA0MzYxNSwgMCwgMCwgMTI3ODg4LCAKLSAgICA5ODM2MTIsIDEyNzI3LCA0Mzg5NSwgMCwgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIAotICAgIDc4MzEsIDk4MzgyOSwgMTk0NTcxLCAwLCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgCi0gICAgMjU5NiwgNDM1ODQsIDEyMDk4MywgMTMxMTMsIDAsIDEyNzc1NywgMjM5MywgNzA1OCwgOTA4NywgNzQwNjcsIDY4NjczLCAKLSAgICA0MTU3NCwgNzgzMzcsIDcwNDk4LCA0MjkwMCwgNjM3NiwgMCwgMCwgMCwgMCwgOTg1NCwgMTI3NzQ4LCA2NDY5NiwgNzM4NzksIAotICAgIDEyODIyMCwgMTIwNzUyLCA2OTk0LCAwLCAxNzIwLCAwLCAwLCAwLCA2NTI5LCA3MDYzLCA5ODMxNzksIDM3NTEsIDkxMjAsIAotICAgIDk4MzQ4NywgNjgwMzgsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgMTMxNTIsIDY1NTcsIDEyNDMwLCA4MTM3LCA5NDA5OCwgCi0gICAgNjc3NTIsIDcwODUwLCAxMTkwNTcsIDI0NSwgMTIxMDY2LCAxMTQ1NiwgNDEyMzMsIDcwNzAsIDAsIDk0MDQ2LCA2MTM2LCAKLSAgICA2ODMwNCwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIDk4MDQsIDExODk2MywgNDMyLCAzNTk1LCAxMjcwMTUsIAotICAgIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDk4MzEzNiwgMCwgMTI4Mjc0LCAwLCAxMTk2NTgsIDEyODE4NCwgMCwgMCwgCi0gICAgNzc4OTQsIDg3OTcsIDAsIDkwNTIsIDY0ODg4LCA3MTY3LCAyMzU2LCA5NSwgNzQ3ODQsIDEwNTgwLCAwLCA0MjI4NiwgCi0gICAgNzExMjMsIDY0NjQwLCA2OTk5OSwgOTQxMDksIDEyMDg3NywgNzQxMzcsIDcwMDM1LCAxMDA2MywgMTI2NTIsIDEyMTk5LCAKLSAgICA3NDYyMiwgNDM0OTIsIDI1NjYsIDExOTcxLCA5ODM3MzcsIDEyMDg4MiwgMTA2NSwgMCwgMTI3MDA1LCA0MzQwMCwgMjU3NiwgCi0gICAgNjY2OTYsIDY2ODE5LCA4MzMzMywgNDM2MDQsIDEyNzg5MSwgMCwgMzIwMSwgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIAotICAgIDQzMjE1LCA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDcwMzEwLCA0MzM5OCwgMjU4MCwgMTk1MDI1LCAKLSAgICA0MTM0MSwgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCA3MDAyMCwgMTI3ODcwLCAzNzMzLCAxMTM0NiwgMCwgCi0gICAgMTIwNTQsIDAsIDc0MDk4LCA0MjgyNywgMTk1MDc0LCAxMzA5MSwgMCwgMTI4NTgwLCAwLCA5MTc5MTUsIDEyNzk2MSwgCi0gICAgMTI3MDI1LCAxMjgzMzQsIDc0ODIxLCA3MTEwNCwgNjYyOTUsIDY4MDM3LCAwLCAxMjExMTYsIDEzMDkwLCA2NjY0MywgMCwgCi0gICAgMTI3MCwgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgNjY4OTgsIDY0NzYxLCAwLCAKLSAgICA0MTAyMSwgODUxMCwgNDI0MzIsIDExOTg5OCwgMTE5MzE3LCAxOTQ3ODIsIDE5NDY0MSwgNjQ0OTYsIDc0MTA5LCA3MDAzMCwgCi0gICAgOTkxNSwgOTgzMDgzLCA5ODMyMTgsIDcwNjEsIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgCi0gICAgNDIzMTksIDEzMDgyLCA3ODExNCwgNzA2NywgNjgyMjEsIDEyNzg4MSwgMTI3MzgzLCAxMjcxNzEsIDAsIDEyMDc0NSwgCi0gICAgNzQyMDksIDkwMjksIDQzNTQzLCA3MDgzNiwgMjM1MywgNjMwOCwgMTI5MTU0LCA3NDc5MiwgMjYxMSwgMTE5MTg2LCAKLSAgICA2Njg4MSwgMTI3MjQxLCA2NTA2MywgNDM2NjQsIDkyMzE5LCA2NjYyNywgOTI5MTIsIDQ0ODQsIDg1MDksIDExODk3NiwgCi0gICAgMTEwNjYsIDY1MjMzLCAxMjcxNDYsIDQxMjI0LCA0MTAxNywgMTI4MTQ5LCAzNzQ3LCAxMDUyMiwgMCwgMTk0ODc2LCAxNjkxLCAKLSAgICA0MTIyNiwgNzQ5NjIsIDEyMTA3LCA3MTAwLCAxMDkwNSwgNjUwMTAsIDEyMTI5OSwgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgCi0gICAgOTgzMzQzLCA5MzA1OCwgNzQ3ODEsIDEzMTIxLCAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMTIwOTQ5LCAKLSAgICAxMjEwMzIsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAxMTg5NTAsIDEyNzkzMywgNjU2NjgsIDkyMjU3LCA2NjE4LCAKLSAgICAzNTYyLCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCA3ODExMCwgNzEyMywgNzAwMzgsIDU3ODUsIDkxOTgsIDk3NjQsIAotICAgIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgMTI4MjU4LCAxOTUwMjcsIDAsIDAsIAotICAgIDEzMTIyLCAwLCAxOTEsIDcwMDYwLCA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgNjQ4NTAsIDQxMDcyLCAKLSAgICA0MTU3OCwgOTgzMTA0LCA0MTU3NywgMCwgMTAwMDIsIDEyMTM2NCwgNjUzMywgNzM4MDIsIDQxNTcwLCA5MTc5MTksIDY4MywgCi0gICAgMzk2LCA0MTU4MCwgNjgxNDYsIDk4MzA2NywgMTI5MDEsIDQzMDU4LCAwLCAzNDMsIDcxMjksIDQyNjgwLCA0MTM2MCwgCi0gICAgNzgxNTQsIDk4MzM5NywgNDc0MywgNjk5ODcsIDAsIDc0MDQwLCA3NDEwOCwgODc0MywgMTcyNCwgMTQzMywgMTE5MzIyLCAKLSAgICAxMjg2NjUsIDM3MzksIDYyNjMsIDcxMzQ5LCAxMjg4MTEsIDM5NjQsIDY1OTIsIDEyMTQyNCwgNjgyODgsIDY2MDQwLCAKKyAgICAwLCAxMjczNTQsIDEyNzM0NSwgMjk5LCA4MzAyMiwgODUyNSwgMTI3MzQ3LCAzNTI0LCAxMjg3MTcsIDg4MzEsIDEyNzM0OSwgCisgICAgOTI1NjQsIDMwNzUsIDY3ODY3LCA5NDA1MywgMCwgNjYzNjIsIDAsIDY0MzUzLCA3MDQ0MCwgOTgzOTcwLCA1ODQ1LCAKKyAgICAxMjEzMTAsIDEyNzkzNywgMTIxMTg1LCAyNTgxLCA4MjAwLCA2NTExNCwgNjg0NjAsIDc0ODU4LCA0MzI4MywgNTU1MSwgMCwgCisgICAgMTIwNzM1LCAxMjk0MjMsIDYzNDAsIDExODg1NSwgMTAwNjAyLCA3ODEzNCwgODY4MCwgNzIwNCwgNzAwNjUsIDI1ODgsIAorICAgIDI5MTQsIDcwMTEsIDU1MjgxLCAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDEwMDg1MiwgNzM3NzQsIDEwOTEzLCAKKyAgICA4MzExNiwgOTgzMDg2LCA4NjY2LCA2NzUsIDQyNDkzLCAxMjEyOTcsIDQzNTcxLCAwLCA2MjE5LCAxMjg1ODQsIDk5ODAsIAorICAgIDQxMjMyLCAxMDkyOCwgMCwgNDExNTMsIDQxMjI5LCAxMTg5NjcsIDAsIDM3MzgsIDk0MDE2LCA5ODMyNDMsIDEyNzExLCAKKyAgICAzMTgxLCA2NjIxMiwgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgOTMwMzYsIDk4MzY3NiwgNzQ0NzYsIDAsIDQyMzQ3LCAKKyAgICAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIDEyODc2OCwgMTI4MTM3LCA0Mzc0NCwgMTAwNjEwLCAwLCA3Mzg0NiwgMjkzNCwgCisgICAgMTI3MjIsIDEyMDc2MiwgOTIyLCA0Mzk4MywgNzQ1MDcsIDk4MzExMCwgNzQ0NjEsIDMyMTgsIDEwMTAwMiwgNzQyOTAsIAorICAgIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgODU2OSwgMTE0MDQsIDExOTMyLCA3MzcyOCwgMzIxNCwgMTEyMTIsIDEyMDQ2OCwgCisgICAgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgNzg3MjcsIDY1NjY3LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDY4MDAzLCAKKyAgICA3ODczNywgNzg3MzYsIDc4NzM1LCA0MzM4MywgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgNzM4OTcsIDEyOTA0MywgCisgICAgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAxMTk2NjEsIDk4Mzg1MywgOTgzODkzLCA4MzE3OCwgMTAwNzI4LCAxMjA5NTMsIAorICAgIDE5NDc3MywgMTk0NjAxLCAzNzgsIDI2MTAsIDk4MzMyOCwgNjUwNzksIDE5NDg3OSwgNjU2OTUsIDEyMTIyMCwgMzcsIAorICAgIDcwNjgsIDAsIDEyMDQ4MCwgNjgyMzYsIDMyMDksIDEyMDQ3NywgMTIwODM1LCAxMDYzOCwgOTc2OCwgNjk5NTIsIDEwMDYyMSwgCisgICAgNzE0ODYsIDkyMjI1LCAxMjg0OTQsIDk4MzM0MCwgMTAwOTA1LCA0Mzg0MCwgMCwgMTAxMDk2LCA1MjMzLCAxMDA2MjQsIAorICAgIDY0NzkyLCA3MTIzMywgMTI4MjIzLCAxMDA2MjYsIDEyODkxOSwgNzA2MCwgOTg0NywgMTIwMTQ0LCAxNjg1LCA1OTUsIAorICAgIDgzMTk3LCA3MDQyOCwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDkyOTQ4LCAxMDAwNCwgMTI2OTk3LCAwLCA2NTQxLCAKKyAgICA0MzgzNywgNzE0NjUsIDEyMTAzMCwgMzI0MywgOTAxNCwgNTYwNiwgMTE5NTg1LCA1MzgsIDY0NjIwLCA1NjAyLCA4NDY3LCAKKyAgICA3NDM5MSwgNjU0NywgNzE0NjYsIDgyMDMsIDY2NDIwLCA2ODI0MSwgODQ1OCwgNjUyMTEsIDg0OTUsIDkyMzExLCAxMjc0ODEsIAorICAgIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgMTIwOTEzLCAKKyAgICA3MDY1LCA3NDE1NSwgNDM0NiwgMTAwNTcwLCA3Mzc5OCwgNTA0LCAxMjUxMTUsIDkyNDE0LCA4OTgyLCAwLCAxMjE0NzEsIAorICAgIDExOTE3MCwgNzgyLCAxMjkwMjgsIDEwODgzLCAxMjg0NDYsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjExODgsIDE1NDgsIAorICAgIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgOTgzMzcyLCAxMTc4NywgMzc0NSwgCisgICAgOTE3ODY4LCAxMTk4ODUsIDQyODg4LCA2NTcxMiwgMTAwNjA2LCAzODY5LCAxMTkzNywgNTcyNSwgMTAwNjA4LCAxNzgzLCAKKyAgICA3NDE2LCA1NzI4LCAxMjg1NjksIDEyODQ1NywgMTE5NTU0LCAxMTkxOCwgNjY1NjcsIDU3MjQsIDEyNzk2NSwgNTcyNywgCisgICAgNzg1MjEsIDEyMTEyMSwgMTI4NDg4LCA3NjQsIDAsIDEyMTAxMSwgNDM1MzEsIDExMzY3MCwgOTAzMywgMTI3MTgyLCAKKyAgICA0MjUzMiwgNjIyMywgMTEwNDIsIDEyMDc0OSwgMTE0MjMsIDc0ODUyLCAxMTk4NjEsIDY4MzAzLCA0MzQ2NSwgMTk0ODE5LCAKKyAgICA3Mjg1NCwgNjU1OSwgNjQ1NTcsIDcxMzQ4LCA5MjY0OSwgNjY3NjMsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAKKyAgICAxMjg3MTEsIDQzMzc3LCA5MjI4MiwgNzEzNDYsIDE0NzgsIDk3ODMsIDExODI1LCAyNjA3LCA2NDc0MCwgMTEzNjg5LCAKKyAgICA3NzM5LCA3NDU0MywgOTE3NzY1LCA2NzM5MywgMTAwNTg4LCA2MTMyLCAwLCA2Mzc2NSwgMTAwNTkwLCA3MDA1OCwgNDExNDQsIAorICAgIDcxODk5LCA5MjQzOCwgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDcwNjgyLCAxMDA1NjEsIDg4MjAsIAorICAgIDM5NDcsIDEyMjg5OCwgNjUyOTksIDExNTE1LCA1MjYsIDEyODEwMywgNDEyOTUsIDE5NDYwMywgMTAwOTMxLCAxOTQ5MzIsIAorICAgIDc4MzkzLCA3Njg4LCA5MTc3ODYsIDc2ODYsIDgyODgsIDExODE1LCA5ODMxODgsIDEwMDkzNCwgOTgzMzg0LCAxNTQzLCAKKyAgICAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA3ODU0NCwgNzQwMjQsIDEyMjkzLCAxOTQ1ODksIDY0MzU3LCAxMTc5NCwgCisgICAgNDIwODIsIDcwNzQ0LCAxNzM3LCA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgODMyNjQsIDkzMzUsIDEyODUwLCAxMTkxNzMsIAorICAgIDIyNzIsIDcwNTUsIDY4MDQxLCA4Mjc3LCAwLCA2Nzc1MSwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDY1MDY3LCAwLCAxMzI3LCAKKyAgICAxMTYwLCA0MjA4NCwgOTM5NjMsIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDEyOTA3MCwgMTAwNjE3LCA2ODE3NiwgCisgICAgNTg2MywgMzEzNywgMCwgNDE0NywgOTgzMTcwLCA0MTIxNiwgNzg0NCwgMjYxNiwgNzAxOTcsIDY4NDYxLCA2NTIzNCwgCisgICAgNjgzNDEsIDEzMDc2LCAzMTM1LCA5ODMyODksIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIAorICAgIDExOTU4MCwgMTAxODMsIDc0NjM1LCAyNjA4LCAxNDcwLCA3Mzk2NywgOTQwMDgsIDYyMjcsIDEyMTI1NywgODMyNjgsIAorICAgIDY1MjM2LCAxMjAyNTYsIDYxNjMsIDEyOTI5NywgMTEzNzI4LCAxMjczMTQsIDczODIyLCA5ODMyMzYsIDg2MDMsIDEyNzk1OSwgCisgICAgMTE5ODY2LCAzMzA2LCAxMDg3NiwgNDMzOTIsIDgzMTg3LCAxMjc5MzEsIDU3NTEsIDEyNzUxNywgNjIyMiwgMTAwNzE2LCAKKyAgICAxMjc0NjYsIDEyMDg2LCA3NDAzLCAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDk4MzMwNywgCisgICAgODg4MiwgMTE5OTAzLCA3ODUxOCwgMjU3MCwgNzAyMSwgNzQ5MDIsIDEyODg4MCwgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIAorICAgIDY5NzQsIDkyNzUwLCAxMjczOTYsIDEwMDkyMywgNTAwMiwgOTgzNTYzLCA0MTI4NiwgNjk5NDYsIDc0NDY1LCA3MTA3NCwgCisgICAgNDM1ODUsIDEwMDkyNywgNjU1MSwgOTgzMzc1LCAxMjgyMjksIDk4MzA0NywgNDEyODksIDEyNTEzMCwgNzEwODAsIAorICAgIDEwMDUyMSwgODk3NywgNjAyLCAxMjA4MTQsIDEwMDYzMCwgMTI4MzUwLCAxMjg2NjEsIDE5NDg5MCwgOTgzMzc3LCA0MTI3OSwgCisgICAgMCwgMCwgOTQxMDgsIDExMDgxLCA0MzYxNSwgMCwgMTAxMDIyLCAxMjc4ODgsIDE5NDk5NCwgMTI3MjcsIDQzODk1LCAwLCAKKyAgICA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIDEyNzU1NiwgOTYzMywgMTA4ODYsIDQzNTkyLCA3ODMxLCA2Njc1MSwgCisgICAgMTk0NTcxLCAxMjI4ODUsIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCA5ODM4OTUsIAorICAgIDI1OTYsIDQzNTg0LCAxMjA5ODMsIDEzMTEzLCA5ODM3MzEsIDEyNzc1NywgMjM5MywgNzA1OCwgOTA4NywgNDEzNiwgCisgICAgNjg2NzMsIDQxNTc0LCA3ODMzNywgNzA0OTgsIDQyOTAwLCA2Mzc2LCAwLCAxOTQ5MTIsIDEyNzgyMCwgMCwgOTg1NCwgCisgICAgMTAxMDg4LCA2NDY5NiwgNzM4NzksIDEyODIyMCwgMTIwNzUyLCA2OTk0LCAwLCAxNzIwLCA5MTc3OTcsIDAsIDAsIDY1MjksIAorICAgIDcwNjMsIDExODkxNywgMzc1MSwgOTEyMCwgMTk0NjI4LCA2ODAzOCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgCisgICAgNjU1NywgMTI0MzAsIDgxMzcsIDk0MDk4LCA2Nzc1MiwgNzA4NTAsIDEwMDgzMiwgMjQ1LCAxMDA4MzEsIDExNDU2LCAKKyAgICA0MTIzMywgNzA3MCwgNzEyNjQsIDk0MDQ2LCA2MTM2LCA2ODMwNCwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIAorICAgIDk4MDQsIDEwMDY0MiwgNDMyLCAzNTk1LCAxMDA3ODQsIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDEwMDY0NiwgMTAwNjQxLCAKKyAgICAxMDA2NDksIDk4Mzk0OSwgMTAwNjQ4LCAxMjgxODQsIDEwMDc4NiwgMTk0NTg3LCA3Nzg5NCwgODc5NywgOTgzOTU2LCAKKyAgICA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIDc0Nzg0LCAxMDU4MCwgMTAwODQ1LCA0MjI4NiwgNzExMjMsIDY0NjQwLCAKKyAgICA2OTk5OSwgOTQxMDksIDEyMDg3NywgNzQxMzcsIDcwMDM1LCAxMDA2MywgMTI2NTIsIDEyMTk5LCA3NDYyMiwgNDM0OTIsIAorICAgIDI1NjYsIDExOTcxLCA5ODM3MzcsIDEyMDg4MiwgMTA2NSwgMTIwNzY4LCAxMjcwMDUsIDQzNDAwLCAyNTc2LCA2NjY5NiwgCisgICAgNjY4MTksIDgzMzMzLCA0MzYwNCwgMTI3ODkxLCAwLCAzMjAxLCA1MTQsIDc0NTAyLCA3MDAzMiwgMjkyMSwgNDMyMTUsIAorICAgIDY0NDkzLCA1NzcyLCAxMjk2OCwgNzAwNTUsIDE5NDk0NCwgNzAzMTAsIDQzMzk4LCAyNTgwLCAxMjg0OTcsIDQxMzQxLCAKKyAgICA0MTIyMywgNjU2NCwgMTQ2MywgNDEzNDIsIDE5NTA5MiwgNTI5MywgNzAwMjAsIDEyNzg3MCwgMzczMywgMTEzNDYsIDAsIAorICAgIDEyMDU0LCAxMDA4MjQsIDc0MDk4LCA0MjgyNywgMTk1MDc0LCAxMzA5MSwgMCwgMTI4NTgwLCAxMDA4MjEsIDEwMDgyOCwgCisgICAgMTI3OTYxLCAxMjcwMjUsIDEyODMzNCwgNzQ4MjEsIDcxMTA0LCA2NjI5NSwgNjgwMzcsIDk4MzkwNSwgMTIxMTE2LCAKKyAgICAxMzA5MCwgNjY2NDMsIDEyODgyMCwgMTI3MCwgMTEzMiwgNDIzNjAsIDE5NDk2OCwgNjY3NTIsIDY2NjU1LCA0MjU2OSwgCisgICAgMTIwNTcxLCA2Njg5OCwgNjQ3NjEsIDEwMDc3NiwgNDEwMjEsIDg1MTAsIDQyNDMyLCAxMDA3NzgsIDExOTMxNywgMTk0NzgyLCAKKyAgICAxOTQ2NDEsIDY0NDk2LCA3NDEwOSwgNzAwMzAsIDk5MTUsIDY5Nzk4LCA5ODMyMTgsIDcwNjEsIDQxMzM2LCAzODU0LCAKKyAgICA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgNDIzMTksIDEzMDgyLCA3ODExNCwgNzA2NywgNjgyMjEsIDEyNzg4MSwgCisgICAgMTI3MzgzLCAxMjcxNzEsIDEyMTIwNywgMTAwNzY1LCA3NDIwOSwgOTAyOSwgNDM1NDMsIDcwODM2LCAyMzUzLCA2MzA4LCAKKyAgICA3MDY2MiwgNzQ3OTIsIDI2MTEsIDEwMDc2OCwgNjY4ODEsIDEyNzI0MSwgNjUwNjMsIDQzNjY0LCA5MjMxOSwgNjY2MjcsIAorICAgIDkyOTEyLCA0NDg0LCA4NTA5LCAxMTg5NzYsIDExMDY2LCA2NTIzMywgMTI3MTQ2LCA0MTIyNCwgNDEwMTcsIDEyMDUxNCwgCisgICAgMzc0NywgMTA1MjIsIDkxNzgxMSwgMTE5OTcwLCAxNjkxLCA0MTIyNiwgNzQ5NjIsIDEyMTA3LCA3MTAwLCAxMDkwNSwgCisgICAgNjUwMTAsIDc0NjAyLCA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCA5ODMzNDMsIDkzMDU4LCA3NDc4MSwgMTMxMjEsIAorICAgIDEyMDAzNiwgMCwgMTIwMTAsIDEyODU3MywgMTI4MjIxLCAxMjA5NDksIDEyMTAzMiwgOTgzMTMyLCAxMjcxOTMsIDY1ODE2LCAKKyAgICA2ODExMSwgMTE4OTUwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgMzU2MiwgNjYzNjUsIDAsIDQyMjM0LCAxMjY0OCwgCisgICAgNzgxMTAsIDcxMjMsIDcwMDM4LCA1Nzg1LCA5MTk4LCA5NzY0LCA0MTMxNiwgNjU4NzcsIDczODMsIDEzMjMwLCA0MTI5OSwgCisgICAgMCwgOTgzMTUwLCA2ODM2NSwgMTI4MjU4LCAxOTUwMjYsIDk4MzQwMiwgMCwgMTMxMjIsIDEyNzU0NiwgMTkxLCA3MDA2MCwgCisgICAgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIDY0ODUwLCA0MTA3MiwgNDE1NzgsIDk4MzEwNCwgNDE1NzcsIAorICAgIDk4MzM3MSwgMTAwMDIsIDEwMDc1NCwgNjUzMywgNzM4MDIsIDQxNTcwLCAxMDA3NTYsIDY4MywgMzk2LCA0MTU4MCwgCisgICAgNjgxNDYsIDEyNzgxNSwgMTI5MDEsIDQzMDU4LCAxMDA3NjAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCA3ODE1NCwgCisgICAgMTI3MDgyLCA0NzQzLCA2OTk4NywgMTAwNzYxLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDEwMDc1MSwgCisgICAgMTI4NjY1LCAzNzM5LCA2MjYzLCA3MTM0OSwgMTI4ODExLCAzOTY0LCA2NTkyLCAxMjA3MDEsIDY1MTA4LCA2NjA0MCwgCiAgICAgODI5NDYsIDQyNTY4LCA2OTgwNiwgMTI4MTEzLCAxNzc4LCAzOTU2LCAxMjg0NDMsIDQyMDcwLCA2NTYzLCA0MzA3NSwgCi0gICAgOTAxOCwgOTQwMDYsIDk4MzM5OCwgMTIwNjcsIDQxMzEyLCA5Mjc2MywgNTU0NywgODkxNiwgMTIwODY5LCAxMjg5NTAsIAorICAgIDkwMTgsIDk0MDA2LCAxMjE0MjQsIDEyMDY3LCA0MTMxMiwgOTI3NjEsIDU1NDcsIDg5MTYsIDEyMDg2OSwgMTI4OTUwLCAKICAgICA4MTc1LCA5NDAzNCwgMjg0LCA4MTA4LCA5MzQsIDEyODAzOSwgNzQwMDEsIDE3MywgNjY0NjAsIDcxNzQsIDkyNzAzLCAKLSAgICAxMTg4MjIsIDE3NTAsIDEyODY4NiwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg4OCwgOTIyOTgsIDAsIDU4ODksIDEyODc5NSwgCi0gICAgNzE4MCwgMCwgNjcxMjcsIDAsIDY3MTI2LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgCi0gICAgMjU4MywgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCAwLCA5MTc2MzAsIDM4NTUsIDE5NDgxMCwgMTE3NjcsIAotICAgIDEyNzk5OCwgMCwgNzQyOTUsIDE5NDY1MSwgMCwgOTI0MTYsIDM5NzUsIDY3MTI1LCA3NDA4NywgNzQ5ODksIDEyNjcyLCAKLSAgICAzNzk4LCAyNzAzLCAxOTQ2MDgsIDAsIDIxMDksIDk3NzQsIDEyNzUsIDAsIDk4Mzc1MCwgNDEwOTUsIDM5NjIsIDY4MjQyLCAKLSAgICAyOTMyLCA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgNzQ1MzYsIDEyNzE4OSwgNzM5OTQsIDczOTkyLCAxNDY4LCAxMjAwMzMsIAotICAgIDk4MzA1NywgNDE4MDMsIDEyNzk5OSwgNDE4NDYsIDEyNzI0NCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgCi0gICAgMzIyNCwgMTEzNzM0LCA5Mjc0MSwgNjYyODEsIDQyNTMxLCA3NDU5MywgMTUxMCwgMTI4Mzg0LCA4MjU2LCAwLCAxMTM5MywgCi0gICAgMCwgODg3OSwgMTI4MDc1LCA5MjQ3NCwgODc3MCwgNzI0MTYsIDEyMDgxMSwgNzI0MTUsIDE5MTAsIDg2NzEsIDc4Mzc0LCAKLSAgICA0MjgzLCA2ODg0MiwgMTIwODI0LCA2ODM2MSwgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNiwgMTI4MjQxLCAwLCA3MjM5NCwgCi0gICAgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAKLSAgICA3NDQ3NSwgOTgzNDQ0LCAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCAKLSAgICA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMTE5MTQ0LCAxMjg0NDcsIDkyMzQ3LCAxOTUwNjYsIAotICAgIDQxMzUwLCA5MTI5LCA5ODM0NDgsIDAsIDIyOTQsIDY0NTAxLCA2ODAzNCwgODMzMjYsIDEwNDgxLCAwLCA3MDAyMiwgNzE3MSwgCi0gICAgMCwgMzQwLCA3MTEwNSwgOTM5NzIsIDY3MzYwLCAwLCA5MjIwMCwgMTI4MjQ5LCAxMjQ5NzksIDY3NjQsIDEyNzQ4NywgCi0gICAgMTI4MzkzLCAwLCA5MjUwOSwgMTI4OTYyLCA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAxMTkwNzMsIDMyMTAsIDAsIAotICAgIDAsIDExODc5NSwgODI5NTgsIDk0MTAxLCAxMjc0ODQsIDkxNzYxOSwgMTE5MTQ5LCAwLCAxMDA0MywgMTIxMjE1LCAxMTg2LCAKKyAgICAxMTg4MjIsIDE3NTAsIDEyODY4NiwgNDM5NCwgNjgzNjgsIDE4MDcsIDc4NTQ1LCA5MjI5OCwgMTAxMDgyLCA1ODg5LCAKKyAgICAxMjg3OTUsIDcxODAsIDEwMTA4MywgNjcxMjcsIDEwMTA5MSwgNjcxMjYsIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgCisgICAgNzg5MSwgNDIyNDMsIDQyMTYwLCAyNTgzLCA0NTEyLCAxMTkzNjAsIDY1MjMwLCAxMjgxMDksIDk4MzQ2NywgOTE3NjMwLCAKKyAgICAzODU1LCAxOTQ4MTAsIDExNzY3LCAxMjc5OTgsIDk4MzU4OSwgNzQyOTUsIDE5NDU3NywgMTAwNzk3LCA5MjQxNiwgMzk3NSwgCisgICAgNjcxMjUsIDc0MDg3LCA3NDk4OSwgMTI2NzIsIDM3OTgsIDI3MDMsIDEwMDc5MywgMCwgMjEwOSwgOTc3NCwgMTI3NSwgCisgICAgMTk0OTY0LCA5ODM3NTAsIDQxMDk1LCAzOTYyLCA2ODI0MiwgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDc0NTM2LCAKKyAgICAxMDA5NDcsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMTIwMDMzLCA5ODMwNTcsIDQxODAzLCAxMjc5OTksIDQxODQ2LCAxMjcyNDQsIAorICAgIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDEwMDc1NSwgOTI3NDEsIDY2MjgxLCA0MjUzMSwgCisgICAgNzQ1OTMsIDE1MTAsIDEyODM4NCwgODI1NiwgOTgzMDQzLCAxMTM5MywgMCwgODg3OSwgMTI4MDc1LCA5MjQ3NCwgODc3MCwgCisgICAgNzI0MTYsIDEyMDgxMSwgNzI0MTUsIDE5MTAsIDg2NzEsIDc4Mzc0LCA0MjgzLCA2ODg0MiwgNzI3ODcsIDY4MzYxLCAKKyAgICA3ODMxOCwgMjY1NCwgNzg5MywgMTI5MTUxLCAxMjgyNDEsIDEwMDgwMiwgNzIzOTQsIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIAorICAgIDQ1ODEsIDg0MTEsIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgNzQ0NzUsIDk4MzE0MywgMCwgMTczMywgCisgICAgNDM5MiwgMjU2OCwgMTA3ODYsIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMTI4NjQ0LCA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgCisgICAgMTAwNzkwLCA3MTg1LCA3OTY1LCAxMTkxNDQsIDEyODQ0NywgOTIzNDcsIDE5NTA2NiwgNDEzNTAsIDkxMjksIDk4MzQ0OCwgCisgICAgOTgzNjE5LCAyMjk0LCA2NDUwMSwgNjgwMzQsIDgzMzI2LCAxMDQ4MSwgMCwgNzAwMjIsIDcxNzEsIDAsIDM0MCwgNzExMDUsIAorICAgIDkzOTcyLCA2NzM2MCwgMTk0OTQyLCA5MjIwMCwgMTI4MjQ5LCAxMjQ5NzksIDY3NjQsIDEyMDgwNCwgMTI4MzkzLCAwLCAKKyAgICA5MjUwOSwgMTI4OTYyLCA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAxMTkwNzMsIDMyMTAsIDAsIDEwMDYzMiwgCisgICAgMTE4Nzk1LCA4Mjk1OCwgOTQxMDEsIDEyNzQ4NCwgOTE3NjE5LCAxMTkxNDksIDczOTI2LCAxMDA0MywgMTIxMjE1LCAxMTg2LCAKICAgICA0MTU3MSwgNjk5OSwgNjE3LCA5NDY0LCAxMjUxMjMsIDM2NzUsIDUyMDcsIDY1MDYyLCA1MjEzLCA3NDYxNiwgMjYxNywgCi0gICAgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIDEyMDUzNSwgMCwgODYzMCwgMTIxMjA5LCAwLCA1NTk2LCA1NTQ1LCA3Mjg4LCAKLSAgICAyNTg2LCA2NDg4NywgMTE5ODI2LCA1MjE3LCA3MTMzNiwgMTI4Njg3LCA5MTc2MTQsIDEyMTAzOCwgNjQyOTMsIDY4MDk4LCAKLSAgICAyNjM1LCA5Mjc2MCwgODMxMzcsIDk4Mzg0NiwgMCwgOTI3NDIsIDc4MzUsIDcwMDQwLCAxMjA3MDcsIDE5NDk4OCwgOTIyODUsIAotICAgIDY0NTU4LCAxMjcxMjIsIDEyMTQyNSwgNjcwODMsIDY3MDg1LCA3MDA5OSwgNzExMTgsIDU3ODQsIDk4MzEwMiwgMTk1MDUwLCAKLSAgICA5ODM4MTIsIDcwMDMzLCA0MDExLCAxOTQ1NjUsIDY4MTAxLCAxMjQ5NzgsIDc4NjQsIDQyNTQsIDY1MDk1LCA5ODM0OTgsIAotICAgIDU2MDAsIDM5MDMsIDEyNzA4MywgMTA0NDcsIDU1OTgsIDEyMDcsIDEyMDUyMSwgNjY2ODksIDM1MDEsIDQyNTgyLCA0MzYwMCwgCi0gICAgMTI5MDU0LCAxMjcxMDMsIDExMjQsIDU1OTcsIDE5NDc3OCwgMTk0NzcyLCA5MzIxLCA5ODM0ODYsIDc1MDQwLCA5ODM0ODQsIAotICAgIDY3NDAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIDk2NzEsIDExMjUsIDQzOTksIDY4Nzc1LCA2NjI3NCwgOTgzNDkwLCA3NjMxLCAKLSAgICA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIDU0OTEsIDExODc5NywgODkzNywgNDMwNDQsIDI2MDQsIDc0MTg3LCA1NDkwLCAKLSAgICA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCA2MzAwLCAxMjcxMjEsIDcxMjIsIDk4MzA5MCwgNDM5MCwgNDU0LCAKLSAgICA0MTM5NywgMCwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgCi0gICAgMTE5MTg0LCAzNzQ2LCAxMTAxNiwgNjU3NTIsIDkyNzU3LCAwLCA0MzQyMywgMTI4NjgzLCAxMTk4OSwgMTE4ODg5LCAKLSAgICAxMjc3OTEsIDEyNzk5NSwgNzgyOTYsIDAsIDgyNDksIDEyODE3MiwgMTExMDksIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgCi0gICAgNTEzLCAxMjcxMTgsIDY1ODYsIDg2NTYsIDEyOTMwMSwgNjk3OTIsIDY1MDA4LCAxOTQ1OTcsIDcxMTExLCA3ODM4MywgCi0gICAgMTk0Nzk1LCAxMjc0NzQsIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDE5NDU4NCwgNjM3OTksIDc4NjM3LCAxMjY0NywgOTE3NjA2LCAKLSAgICAxMjgwNDMsIDY5ODkzLCAxMDM2LCA2ODA5MCwgOTI0MTksIDE3MjMsIDY4MjE1LCA3NDIxNywgMCwgNDE1NzksIDI0NDQsIAotICAgIDEyMDcyMiwgMTA3MDUsIDczODc2LCAxOTUwNTQsIDc0NDg2LCA5ODM0NjksIDc0MCwgMTE5MjIyLCAxOTQ5NzgsIDE5NDk4NCwgCi0gICAgMCwgNDIzOCwgMTEwNzEsIDk0NTksIDQzOTM2LCA0MzkzOCwgNzgxMzksIDE5NDk4NSwgODEyMSwgMTA0MzgsIDc0NDg3LCAKLSAgICA0MjU3NCwgMTMyODUsIDQzOTY3LCAxMTkwNywgNDM5MjgsIDU2OTAsIDkyMjU1LCA1MTE2LCAwLCA0MzE4MSwgMTMwOTUsIAotICAgIDc3OTI1LCA0MzkyNiwgNjQ0OTgsIDAsIDk1MDYsIDY5NzgsIDcwMTc2LCA3NDkzMSwgMCwgMTEzNzQzLCA3ODM3OSwgCi0gICAgNDM5MzQsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCA3MTA1NSwgMTIwNjIxLCAwLCAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCAKLSAgICA3ODM3OCwgMTE5NjAwLCA1MjIzLCAxMzA0LCAwLCA4MzUyNiwgNTIyNiwgMTI2MDIsIDk0MDQ0LCA1ODgwLCA5MzI5LCAKLSAgICA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIDY5MjI5LCA5Njc0LCA1Njk1LCAKLSAgICA0MTcxMSwgNjQ2MjcsIDE5OTA5LCA3MTA3NywgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIDY4MTM4LCA5ODM0NDMsIAotICAgIDQyODE2LCA5NDAzNiwgNjUxNDAsIDY4MDI4LCA4MzA5MywgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgCi0gICAgODMwOTQsIDk4MzQ0NywgNjg4MjcsIDUyOTYsIDk4MzQ0NiwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgNzQ4NTgsIAotICAgIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDk4MzY4NiwgNzA4NzAsIDEyMTIyLCAKLSAgICAxMTk2MDIsIDQzOTc2LCAxOTQ5MzcsIDE3ODUsIDY5OTI1LCA2ODYyMiwgNjUxNTMsIDY4ODA5LCA1MTM4LCA5ODM2MzcsIAotICAgIDcxOTIyLCAxMTg4NjksIDAsIDQ1NDAsIDQxMTgxLCA5MTc5MjAsIDYyMDAsIDAsIDUxMzQsIDY5OTgwLCAzMjIsIDQ2NDMsIAotICAgIDUxMzIsIDEyMTE4NCwgNjM4OSwgMTIwOTk4LCA1MTQzLCA4MzIwNSwgODc5MCwgMTIwOTExLCAxMjAxMjEsIDEyODY5NSwgCi0gICAgNzExNjgsIDg4NjksIDY5OTE2LCA5MzA2OSwgNDIwNjAsIDcxMzI2LCA5NjQ4LCA4MzEwOSwgNzExNzAsIDEwMjcwLCAKLSAgICAxMDI4NiwgMTAzMTgsIDEwMzgyLCA0MzUyOSwgNjY0NzcsIDE5NDgwMCwgMTI4NTM0LCA3NDE3MCwgMCwgMzIzNCwgNDM4MzUsIAotICAgIDkxNzgxOCwgNzAxMTEsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCA2ODIzMSwgNzQ0ODksIDk2OTUsIAotICAgIDcyNDM5LCA1MjAxLCA3NTA2MSwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAwLCAxOTQ5OTksIDY1MjY4LCA3NjYxLCAwLCAKKyAgICA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAxMjEyMDksIDE5NDc3MCwgNTU5NiwgNTU0NSwgCisgICAgNzI4OCwgMjU4NiwgNjQ4ODcsIDEwMDg5NiwgNTIxNywgNzEzMzYsIDEyODY4NywgMTAwODk4LCAxMjEwMzgsIDY0MjkzLCAKKyAgICA2ODA5OCwgMjYzNSwgOTI3NjAsIDgzMTM3LCA5ODM4NDYsIDAsIDkyNzQyLCA3ODM1LCA3MDA0MCwgMTIwNzA3LCAxOTQ5NTAsIAorICAgIDkyMjg1LCA2NDU1OCwgMTI3MTIyLCAxMjE0MjUsIDY3MDgzLCA2NzA4NSwgNzAwOTksIDcxMTE4LCA1Nzg0LCA5ODMxMDIsIAorICAgIDEwMDg1NCwgOTgzODEyLCA3MDAzMywgNDAxMSwgMTk0NTY1LCA2ODEwMSwgMTAwODU5LCA3ODY0LCA0MjU0LCA2NTA5NSwgCisgICAgMTIwMDE3LCA1NjAwLCAzOTAzLCAxMDA4OTIsIDEwNDQ3LCA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCAKKyAgICA0MjU4MiwgNDM2MDAsIDEyOTA1NCwgMTAwOTEzLCAxMTI0LCA1NTk3LCAxOTQ3NzgsIDE5NDc3MiwgOTMyMSwgOTgzNDg2LCAKKyAgICA3NTA0MCwgOTE3OTcyLCA2NzQwMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCA5NjcxLCAxMTI1LCA0Mzk5LCA2ODc3NSwgNjYyNzQsIAorICAgIDkyMTY1LCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDEyMDMzOSwgNTQ5MSwgMTE4Nzk3LCA4OTM3LCA0MzA0NCwgMjYwNCwgCisgICAgNzQxODcsIDU0OTAsIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIDYzMDAsIDEyNzEyMSwgNzEyMiwgOTgzMDkwLCAKKyAgICA0MzkwLCA0NTQsIDQxMzk3LCA5ODMwNTUsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgNzIwNywgCisgICAgMTI1MDYyLCA2NTkwMSwgMjM5NCwgMjU3NSwgMTE5MTg0LCAzNzQ2LCAxMTAxNiwgNjU3NTIsIDkyNzU3LCAwLCA0MzQyMywgCisgICAgMTI4NjgzLCAxMTk4OSwgMTE4ODg5LCAxMjc3OTEsIDEyNzk5NSwgNzgyOTYsIDY4MjI0LCA4MjQ5LCAyMjMyLCAxMTEwOSwgCisgICAgNzg1MzEsIDY2NDAsIDc0ODA2LCAyNTk4LCA1MTMsIDEwMDcxNCwgNjU4NiwgODY1NiwgMTI5MzAxLCA2OTc5MiwgNjUwMDgsIAorICAgIDE5NDU5NywgNzExMTEsIDc4MzgzLCAxMjcyNTIsIDEyNzQ3NCwgNjY3NTUsIDY4NDc1LCA5Mzk3MywgNzI4NTksIDYzNzk5LCAKKyAgICA3ODYzNywgMTI2NDcsIDkxNzYwNiwgMTI4MDQzLCA2OTg5MywgMTAzNiwgNjgwOTAsIDkyNDE5LCAxNzIzLCA2ODIxNSwgCisgICAgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAxMjA3MjIsIDEwNzA1LCA3Mzg3NiwgMTk1MDU0LCA3NDQ4NiwgOTgzNDY5LCA3NDAsIAorICAgIDExOTIyMiwgMTIwMzA1LCAxOTQ5ODQsIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA0MzkzNiwgNDM5MzgsIDc4MTM5LCAKKyAgICAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgNDI1NzQsIDEzMjg1LCA0Mzk2NywgMTE5MDcsIDQzOTI4LCA1NjkwLCAKKyAgICA5MjI1NSwgNTExNiwgMTI4MDEzLCA0MzE4MSwgMTMwOTUsIDc3OTI1LCA0MzkyNiwgNjQ0OTgsIDAsIDk1MDYsIDY5NzgsIAorICAgIDcwMTc2LCA3NDkzMSwgMCwgMTEzNzQzLCA3ODM3OSwgNDM5MzQsIDEyNzg0NSwgMTEyMiwgMzE3LCAxOTQ4NzAsIDcxMDU1LCAKKyAgICAxMjA2MjEsIDAsIDE5MjAsIDEyOTMzOSwgMTAxNzMsIDgyNywgMTI1MjM2LCAwLCA3ODM3OCwgMTE5NjAwLCA1MjIzLCAKKyAgICAxMzA0LCAwLCA4MzUyNiwgNTIyNiwgMTI2MDIsIDk0MDQ0LCA1ODgwLCA5MzI5LCA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgCisgICAgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIDY5MjI5LCA5Njc0LCA1Njk1LCA0MTcxMSwgNjQ2MjcsIDE5OTA5LCA3MTA3NywgCisgICAgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIDY4MTM4LCA5ODM0NDMsIDQyODE2LCA5NDAzNiwgNjUxNDAsIDY4MDI4LCAKKyAgICA4MzA5MywgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgODMwOTQsIDk4MzQ0NywgNjg4MjcsIDUyOTYsIAorICAgIDk4MzQ0NiwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgNzI4NDIsIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIAorICAgIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDk4MzY4NiwgNzA4NzAsIDEyMTIyLCAxMTk2MDIsIDQzOTc2LCAxMjUxOTQsIDE3ODUsIAorICAgIDY5OTI1LCA2ODYyMiwgNjUxNTMsIDY4ODA5LCA1MTM4LCAxMjk0MjAsIDcxOTIyLCAxMTg4NjksIDEwMDg4MywgNDU0MCwgCisgICAgNDExODEsIDkxNzkyMCwgNjIwMCwgODI5NDksIDUxMzQsIDY5OTgwLCAzMjIsIDQ2NDMsIDUxMzIsIDEyMTE4NCwgNjM4OSwgCisgICAgMTIwOTk4LCA1MTQzLCA4MzIwNSwgODc5MCwgMTIwOTExLCAxMjAxMjEsIDEyODY5NSwgNzExNjgsIDg4NjksIDY5OTE2LCAKKyAgICA5MzA2OSwgNDIwNjAsIDcxMzI2LCA5NjQ4LCA4MzEwOSwgNzExNzAsIDEwMjcwLCAxMDI4NiwgMTAzMTgsIDEwMzgyLCAKKyAgICA0MzUyOSwgNjY0NzcsIDE5NDgwMCwgMTI1MjMxLCA3NDE3MCwgMCwgMzIzNCwgNDM4MzUsIDEwMDg4NiwgNzAxMTEsIAorICAgIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCA2ODIzMSwgNzQ0ODksIDk2OTUsIDcyNDM5LCA1MjAxLCAKKyAgICA3NTA2MSwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAxMjc4NjksIDE5NDk5OSwgNjUyNjgsIDc2NjEsIDEyMTMwOCwgCiAgICAgMTIwOTA5LCAxMTAyNywgMTI4NTk2LCAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIDE3NDksIDc4ODkwLCAKLSAgICA2NzExNSwgOTgzNjcwLCAzMjAsIDAsIDg2NDcsIDgzMDU0LCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIAotICAgIDEyNzM1NiwgMTE4ODk0LCA2NjQ3OCwgNDk2MCwgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIDU0MTgsIAorICAgIDY2NzY2LCA5ODM2NzAsIDMyMCwgMCwgODY0NywgODMwNTQsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgOTkyNSwgCisgICAgMTI3MzU2LCAxMTg4OTQsIDY2NDc4LCA0OTYwLCA1NTQ5LCAxMjczNTksIDEwMDk5NiwgODQ4NSwgNDY3MSwgNTQxOCwgCiAgICAgMTI3MzUwLCAzMzUxLCAxMjA4OTIsIDEyNzM1MSwgMTA2MTAsIDU0MTQsIDMwNjQsIDYyMTIsIDQyODYsIDU0MjEsIAogICAgIDEyNzM0NCwgOTU1NCwgNjgwNTEsIDk0MDQ4LCA2Njg5NiwgNjY1MywgODMwNDQsIDgzMTAyLCA2NDUxMCwgNjIxMywgCi0gICAgMTI4ODUsIDAsIDExOTA0NSwgNjQ3MjAsIDkxNzg3MywgMTIwNzU5LCA3Mzc0MSwgMTI2MDMsIDcxMzEsIDExMTA4LCA0NTY2LCAKLSAgICA3NTE4LCA5MzE3LCAzODAxLCAxMDM0MiwgMTA0MDYsIDEyNDkzOCwgMTE5MjU5LCA0MjU3NiwgMCwgNTIwMCwgOTI5NDYsIAotICAgIDEyMTQzNSwgOTgzODk1LCA5MTgzLCAxMjczNjEsIDc0NDU4LCA2NjI4MiwgMzk1LCA1NDgyLCA1MTk4LCA0MzQ5LCAxMDM5MCwgCi0gICAgNzQyMDIsIDUxOTYsIDQzMjI0LCA2MTEzLCA0MjAwOSwgNTIwNSwgMTI4MzgzLCA0MzMwNywgNzAyOTcsIDExODk3MywgCi0gICAgNzA0NjcsIDEyMTM0LCAxMjExNjcsIDAsIDExODg0MywgOTEyNiwgNDM1LCA5ODM2MjQsIDEyMDE0LCAxMDM3NywgODA5MywgCi0gICAgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMTI1MDc1LCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAxMjczMDksIAotICAgIDU3MzgsIDEyMDA4OSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCA4MzM3OCwgNjgxMTIsIDc4NzIsIDg1ODEsIAotICAgIDAsIDEyNjAsIDMxNDksIDUzNTksIDEyMDEzNCwgNzQ5NTUsIDc5MTQsIDUzNTcsIDcxMTkwLCA3NDMzOSwgMjYyNCwgNTM2NCwgCi0gICAgOTgzNjA4LCAxMTQzMSwgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDY3MTA3LCA3ODI5MywgNDIyNzEsIDc4Mjg5LCAKLSAgICA0MjkxNywgNjcxMTEsIDEyOTE3OSwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgyOTEsIDc4Mzg0LCAxMTgzMiwgCi0gICAgNzgzODIsIDc4MzgxLCA3ODM4MCwgNjk4NjEsIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIDMyMzIsIDczODI0LCAKLSAgICA3NDU4MSwgNzgwODcsIDAsIDcxMjA1LCA0MTg4OSwgOTI0NTMsIDEyOTE0NCwgMTE2MSwgNDE4OTUsIDc0MTAzLCA5NzAxLCAKLSAgICA4NjIyLCAxMjUwMjUsIDAsIDY4NzcyLCAxMjA1ODgsIDUwMTIsIDcxNDUzLCA0MTM2MiwgNjk4NjIsIDY4NTA3LCAxMTkyMSwgCi0gICAgMCwgMTE3NjksIDY4NzgyLCA2ODYwOSwgNDEzNjQsIDEyMDk0NywgNzQyMjgsIDQxMzUyLCA0MTM2MSwgOTE3OTAzLCAKLSAgICA0MTM2NiwgMCwgMzM1NiwgMTE2MTEsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgODE5OSwgNzgzODksIDExOTYxOCwgCi0gICAgNjc3LCAxMTk5MTYsIDkxNzg3NiwgNzE0ODIsIDEyNzE2OSwgNjg3NDcsIDAsIDY4NzM4LCAzMzQ5LCA3NDEyNSwgNzAyMiwgCi0gICAgODkyNywgNDczOSwgOTI1OTksIDU4MDIsIDE5NDg3NCwgODYxNSwgMCwgMTI4MDU4LCA0OTEsIDc0NDAxLCAxMDE5MCwgCi0gICAgNjg3NTUsIDY1ODM3LCA2ODgwMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCA3NTg2LCA0MjMwNSwgCi0gICAgMTA4NTIsIDAsIDQyNjQ4LCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAKLSAgICAxMjg2MTAsIDY4NzUzLCA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgNDE4NzgsIAotICAgIDc0ODQ5LCA3NDk0NywgNzI0MjQsIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgCi0gICAgODkwNSwgNDEzNiwgNDg3MSwgNzgyODcsIDEyMDY2MywgOTgzMywgMCwgMTEzNzMwLCAxMTI4LCA2NTkyMCwgOTE3ODc5LCAKLSAgICA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAzNjYyLCA5NDEzLCAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCAKLSAgICA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCA1MTY1LCA1MTI2LCA0MTM4NSwgOTgzOTM4LCA0MTM4OSwgCi0gICAgMTI3OTYzLCA4OTU1LCAzMzc0LCA5NDAwLCA5NDAxLCA3MTE5LCA5NDAzLCA5NDA0LCAzNTA3LCA5NDA2LCA3NjI5LCAKLSAgICA5ODM2MTcsIDE5OTI1LCA0MjY2OSwgNjg0NjMsIDE4MywgNDM5ODUsIDI2MzEsIDcwODExLCAxMDYyNywgNDExMzAsIAotICAgIDcxMDc5LCAzOTk2LCAwLCA3MTQ0MiwgMTI4OTEzLCAxMTkzMTMsIDExOTMwNywgNzg3NjgsIDY1ODAsIDQzMzIsIDY0ODI1LCAKLSAgICA2NjMyOSwgMTA3MjYsIDY2Njg2LCA0MTEyNSwgNTg5OSwgNDEzNjUsIDEyNzIwNiwgMTIwODUsIDY2OTAyLCA1NzQsIAotICAgIDEyNjcwNSwgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjU5MzIsIDQxMzIyLCA0MjIxMSwgNTQ0MiwgNDE5MCwgCi0gICAgNzc4MzQsIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDY4ODE3LCA3NzgzOCwgNzcwOCwgNzQ3NTksIDIyMjgsIAotICAgIDY1ODY3LCAxMDM0NSwgMTA0MDksIDQxOTEsIDEyMDM3OCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKLSAgICAyMDYwLCAxMjExOTMsIDcxMTEsIDExNzg4LCA2NTM3NiwgNjgxMjksIDEwNDE1LCA3NDEwMiwgOTgzNjI1LCAyMDUsIAotICAgIDgzMDQwLCAxMDM1MSwgNjcxNTEsIDAsIDk4NjIsIDY1ODgsIDQzMjU3LCA2NDY5NywgNzM5OTgsIDQxMzU1LCA1NTA1LCAKLSAgICA3NDk2NiwgNTUwMywgODAyMSwgMTI4MDM1LCA3MTI1LCA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIDU1MDcsIDEyMDQ0LCAKLSAgICA5MjYzNiwgMCwgMTAwMjYsIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgNTQ3NiwgODk5MSwgNjYzMjIsIAotICAgIDY5Nzc4LCAxMTEzMywgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCAxMjkwNTIsIDI2NzUsIDU1OTUsIDc4NDExLCAKLSAgICA0Mzc2MiwgNDM2NywgMTI3OTEyLCA5MTc3ODIsIDU0NzgsIDU5MDQsIDU1OTQsIDAsIDc0MTUwLCA3MjkxLCA1NTkwLCAKLSAgICA0Mzc2MSwgMTMwNjcsIDExODkwOSwgNzUwNjksIDk4MzEwOCwgOTczMSwgNjk3MzEsIDY0NjMzLCA3Nzg1NywgNzc4NTQsIAotICAgIDcxMjE3LCA3Nzg1MiwgNzEyMjcsIDc3ODUwLCAxMDc1MCwgNDM3MTQsIDc3ODU4LCA3MTM3LCAwLCA2NjkwOSwgMTI4ODcsIAotICAgIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgCi0gICAgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMTI5MDgwLCA1ODk0LCA3MDA2OSwgCi0gICAgMTI4NjcyLCA0MTE3MSwgOTI1MTEsIDcwMzU4LCAxMzIzLCAxMzE2MiwgMTIwNTk5LCAzMzM0LCAxMjg3MDQsIDkyNzA5LCAKLSAgICA3Nzg4MSwgNjYwMjIsIDAsIDY5NzcwLCAxNjUxLCAxMjAzNjQsIDg4NjEsIDAsIDAsIDExNDIsIDk4MzExMiwgODI3MSwgMCwgCi0gICAgOTgzMDU4LCAxMjY2NDUsIDEyOTAzLCA3ODQwNiwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMTI4OTEwLCAKLSAgICAxOTQ3ODcsIDEyOTIwLCAxOTQ1NjAsIDcwNDk3LCAxOTQ2ODcsIDY2NjQyLCAxMjc3LCA2Njg3NiwgNzg3MSwgNjcxMDYsIAotICAgIDcxNDg3LCA3ODg1MywgMTI5MDY4LCA3ODg1NCwgMTIwMzYwLCA5ODM0OTIsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgCi0gICAgNDM4NTYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCA5ODM2MjcsIDc4ODU2LCA3ODQ0OCwgNzc4NzksIDQ5NzMsIDg3ODQsIAotICAgIDc3ODc3LCA3NDgwNCwgNzc4NzQsIDc3ODY5LCA3Nzg3MSwgNDI0NDAsIDcxMjI1LCA0MzExOCwgMTE5ODc1LCA0MjM2NCwgCi0gICAgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIDEwMzQ2LCAxMDQxMCwgNzg4NTksIDkyNDMsIDI0NjQsIDc0MjYzLCA2MTA4LCAKLSAgICAzMzcyLCAwLCA2MjQ3LCA0MzExNywgNzAzNjQsIDcxMjEsIDc0MTY2LCAxMjQ5NzMsIDEyMDM1NSwgOTI1MzcsIDE5NDg0NiwgCi0gICAgMTE5ODc3LCAxOTUwMzQsIDcwMzU3LCAxMTk5MjIsIDAsIDY3MTE5LCAzMzU0LCAxOTUwMzcsIDQxOTIsIDkyODksIAotICAgIDExODk5OSwgNDExOTEsIDM4NzYsIDAsIDcwMDY3LCAxMjA2NjAsIDQzNjk2LCA0MzM4MCwgMCwgOTgzMDkxLCA5ODM5NjUsIAotICAgIDk4Mzc1OCwgMTE2MDMsIDk4Mzk1NCwgNzUwNzQsIDY1ODksIDEyODU2NCwgODI5NzUsIDEyMDk5MywgNjc4MTIsIDk4MzcwMCwgCi0gICAgMCwgMTI5MDg3LCA0MjU3MiwgMTI4MjY0LCAxMDYzMCwgNzQ4MjcsIDE5NjMsIDExNjIyLCAxMTg4ODIsIDExNjU0LCAKLSAgICAxMjEyODcsIDc1NTAsIDEwNjg2LCA1OTAzLCA2NzA5OCwgNzgwMDksIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAKLSAgICAzMzY2LCAxMDM5OSwgOTE3OTM4LCA1NTQyLCAxMTAxMywgMTI3OTI3LCA3MTA2MiwgMTk0Njc3LCA3MTQ2MSwgNjcwOTAsIAotICAgIDY5MjUsIDAsIDAsIDkyODkyLCA3MTg1NiwgMTE1NjgsIDk4MzY3MywgNDMzNjcsIDY0NTc5LCA5MTc5MzAsIDc4NTIsIAotICAgIDExMTM4LCAwLCA2NzU0LCA2MzEyLCA3Nzk1NiwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgMTIyOTYsIAotICAgIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAxMjkxNDYsIDk4MzYwNSwgCi0gICAgOTUzMiwgNjYzNTUsIDExOTI2NCwgNjgwNzMsIDExMzY5NSwgNjQzNDMsIDE5NTAzMiwgOTI3NDQsIDE5NTAzMSwgMCwgCi0gICAgMTk0ODQ3LCAxOTUwNTcsIDExNDQ1LCA2ODI5NCwgMjExMiwgMTI4NzQxLCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIAotICAgIDk1MDcsIDEwMjEwLCA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIAotICAgIDAsIDEyMDI3NiwgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgCi0gICAgNzg5NCwgNDM5MSwgNjgxMzksIDEyMTA2NCwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIAotICAgIDkyNDMzLCAzNTU4LCAxMjkxOTAsIDM5MTMsIDcwNDI5LCAxMjEzNzYsIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCAKLSAgICA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDk4MzEyMiwgOTE3NTg3LCA4MjIxLCA3ODMwNywgNDE4NjQsIDAsIDAsIAotICAgIDY3MDc1LCA3MTIxOSwgMTY3LCA5ODM5MDYsIDc4MzAxLCA5ODM2NTMsIDc0MjExLCA0MTg5NywgNjcwNzIsIDAsIDkxNzU4MywgCi0gICAgMTI3MTQwLCA2NzA3NiwgMjQ5MywgMCwgMTEzNzc4LCAxMjEyNDUsIDc4MTA3LCA2NDM1NCwgMCwgODc3NywgMTI3OTQwLCAKLSAgICA0MDYsIDg4ODQsIDIzODUsIDc4MjEwLCA5MjQ1MCwgOTE3NTkwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgMTIxMTQsIDAsIAotICAgIDEyODU5NywgNjQ5MzYsIDE5NDY5NSwgMTE5MjY3LCAxMjA2MjksIDEwNTYxLCAxMjg5NDAsIDgzNjUsIDEyMDUzOSwgCi0gICAgOTgzNzc0LCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDEyODg5NiwgODMxNzYsIDc4MzQsIDc0MTU5LCAwLCAKLSAgICA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1NzcsIDE2MzksIDEyMDg0MiwgMCwgNzA4MDMsIDYzMjcsIDY3MjQsIAotICAgIDEyNDk1MywgNjYzNTQsIDkyNTY2LCA2OTkxMCwgNDgxNywgMTEwODcsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIDk2MDAsIAotICAgIDExMDIyLCAwLCAwLCAwLCA5ODM1OTksIDAsIDczOTU0LCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgCi0gICAgMTI4NzgxLCAxMjM0MywgNjU3LCA2NzExMCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCAKLSAgICA5Mjg5MSwgMTk0OTQ1LCA4MzA1NiwgNDQ1NiwgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDkzMDQ0LCAKLSAgICAxMjk0MTEsIDY1NTUwLCAyNjAsIDQ4MTYsIDY3NjU4LCAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgODMxODIsIDQ4MTgsIAotICAgIDEyOTA1OCwgNDE0MDMsIDExOTk3NywgNzI0MjIsIDEyODQ1OCwgNDE0MDYsIDQzMjczLCA3NDE2MCwgNjk4MDUsIDczOTM5LCAKLSAgICA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAxMTk5ODAsIDQ0NTEsIDEzMDg3LCAwLCAxMTI4NCwgCi0gICAgMTE5OTg3LCA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCA3MDA3MCwgMzM3NSwgMTI4NDQ4LCA1OTAwLCAKLSAgICA5Mzk5MCwgNzg4OSwgMjcyMiwgNDIyNjIsIDk4MzQ4MSwgMCwgNjcwNzgsIDEyODQ1MSwgMjI4MiwgMTIxNDIyLCAxMjc4MTAsIAotICAgIDExNDAxLCA2NzA3OSwgMCwgNjg0NTksIDEyNTAyOCwgOTgzMTQxLCAwLCA3MDE1MCwgNjU0MzgsIDAsIDcyODAsIDEyNzg4NywgCi0gICAgNjgwNTUsIDcwMTQ2LCA0ODY4LCA4Mjk3LCAxMTk5NjYsIDcwMTQ4LCAxMjUwMDgsIDEyODc0NCwgNDMxNjEsIDcwMTQ0LCAKLSAgICA5MjM2MCwgMCwgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCA3MDE4NiwgMTIxMzUsIDU3MzIsIDQ0NjQsIDE5NTA4MywgCi0gICAgNzEzMzAsIDk3NywgNDQ1OCwgNDM4MjcsIDkyOTcxLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTIxMjI4LCAxMzk1LCAKLSAgICA2NDI3OSwgMCwgOTIyNDAsIDEyMTE3OSwgNzg2LCAxMjY5OTUsIDQzMTc0LCA2NDM0MCwgODMwNzcsIDE5NDc2NywgNzM5NzEsIAotICAgIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIDY1MDI1LCAwLCAwLCAwLCA5Mzk1NiwgOTgzOTE3LCA2ODQ0NCwgMCwgCi0gICAgOTI0MzcsIDEyNDkyOCwgOTI1NDksIDEwMjA0LCA5MjY1NiwgODMwNzgsIDExOTI3MSwgMTI4NDMxLCAxMzk5LCAxMjE0NjMsIAotICAgIDY1MjE3LCAxMjE0NjUsIDg4NTIsIDEyMDgwOCwgMjQxLCAxMjE0NjksIDQ5MDcsIDEyODQyNywgOTgzNjM5LCA3OTMyLCAKLSAgICA5NzI3LCAxMjg0NjMsIDc0MjU1LCA4NzQ4LCAwLCAxMjg0MjgsIDk4MzYzMSwgMCwgNDI3ODAsIDU1MjYzLCAxMTM2NzcsIAotICAgIDk4MzU2MCwgNDIxNywgOTMwMzQsIDg2NTAsIDEyNzk5MSwgMTIwNjczLCAxMjgyMTUsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAKLSAgICAzOTY1LCAxMTkxMTksIDY3MTksIDEyODAwNywgMTMzMDAsIDc4NDM5LCA5Mzk3MSwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIAotICAgIDY2Mjg5LCAxMjA5MDIsIDczODE1LCA0NDIwLCA5ODMxMjAsIDY0MTAsIDc3NjAsIDAsIDcwNDY4LCAxMjg3NTIsIDEyMDY4NCwgCi0gICAgMTIxMjQ2LCA3Mjk0LCAxMjgyMTgsIDQzODY5LCAxMjA4NTksIDkwNjYsIDEyMTMyMSwgMTE5OTMsIDQzMTg4LCAyNjI2LCAKLSAgICA3NzYyLCA5ODM4NjYsIDExODgzMSwgOTI4OTksIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDcwMjkwLCA3ODUxNiwgCi0gICAgNjkxOSwgODYxOSwgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjA1MzcsIDE1NDIsIDkyMzAzLCAKLSAgICAxMjg4MTksIDAsIDEyNzMyNywgMTIxMTk5LCA3NDMxMSwgNzg0OTcsIDAsIDEwMTgxLCAxMjQ5MzcsIDQzNjI0LCAxMjkwNjAsIAotICAgIDc3NzksIDkxNzU1MSwgMTAxOTUsIDk0NzksIDYwMjksIDEyODM3NCwgOTIyNjgsIDIyMjQsIDAsIDY1NTc3LCA4OTkzLCAKLSAgICA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgMTI3MDMwLCA3Njk3LCA2OTIzNywgNjk3ODcsIDIwMzAsIDcwMTA2LCAKLSAgICA2MDI3LCA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMCwgNzAzODYsIDEyNzkwMywgOTgzMzM5LCA5ODMzMzgsIDI3MzUsIAotICAgIDQyODMxLCA3NzkzNSwgNzA0MzksIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDcwNDMzLCA3Mzk0NiwgMCwgMTk0NzAzLCAwLCAKKyAgICAxMjg4NSwgMTI3Mzc1LCAxMTkwNDUsIDY0NzIwLCA5MTc4NzMsIDEyMDc1OSwgNzA3MzcsIDEyNjAzLCA3MTMxLCAxMTEwOCwgCisgICAgNDU2NiwgNzUxOCwgOTMxNywgMzgwMSwgMTAzNDIsIDEwNDA2LCAxMjQ5MzgsIDExOTI1OSwgNDI1NzYsIDEyNTIzNywgCisgICAgNTIwMCwgOTI5NDYsIDEyMTQzNSwgOTgzNjgzLCA5MTgzLCAxMjczNjEsIDc0NDU4LCA2NjI4MiwgMzk1LCA1NDgyLCA1MTk4LCAKKyAgICA0MzQ5LCAxMDM5MCwgNzQyMDIsIDUxOTYsIDQzMjI0LCA2MTEzLCA0MjAwOSwgNTIwNSwgMTI4MzgzLCA0MzMwNywgNzAyOTcsIAorICAgIDExODk3MywgNzA0NjcsIDEyMTM0LCAxMjExNjcsIDAsIDExODg0MywgOTEyNiwgNDM1LCA5ODM2MjQsIDEyMDE0LCAxMDM3NywgCisgICAgODA5MywgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMTI1MDc1LCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAKKyAgICAxMjA5MzIsIDU3MzgsIDEyMDA4OSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCA4MzM3OCwgNjgxMTIsIDc4NzIsIAorICAgIDg1ODEsIDk4Mzc3MSwgMTI2MCwgMzE0OSwgNTM1OSwgMTIwMTM0LCA3NDk1NSwgNzkxNCwgNTM1NywgNzExOTAsIDc0MzM5LCAKKyAgICAyNjI0LCA1MzY0LCAxMjg4ODEsIDExNDMxLCAxMDA2NTksIDkxMDEsIDExMDU4LCA3ODI4OCwgNjcxMDcsIDc4MjkzLCAKKyAgICA0MjI3MSwgNzgyODksIDQyOTE3LCA2NzExMSwgMTI5MTc5LCA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODI5MSwgCisgICAgNzgzODQsIDExODMyLCA3ODM4MiwgNzgzODEsIDc4MzgwLCA2OTg2MSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgCisgICAgMzIzMiwgNzM4MjQsIDc0NTgxLCA3ODA4NywgOTgzODE3LCA3MTIwNSwgNDE4ODksIDkyNDUzLCAxMjkxNDQsIDExNjEsIAorICAgIDQxODk1LCA3NDEwMywgOTcwMSwgODYyMiwgMTI1MDI1LCAwLCA2ODc3MiwgMTIwNTg4LCA1MDEyLCA3MTQ1MywgNDEzNjIsIAorICAgIDY5ODYyLCA2ODUwNywgMTE5MjEsIDAsIDExNzY5LCA2ODc4MiwgNjg2MDksIDQxMzY0LCAxMjA5NDcsIDc0MjI4LCA0MTM1MiwgCisgICAgNDEzNjEsIDkxNzkwMywgNDEzNjYsIDE5NDgwOSwgMzM1NiwgMTE2MTEsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgCisgICAgODE5OSwgNzgzODksIDExOTYxOCwgNjc3LCAxMTk5MTYsIDkxNzg3NiwgNzE0ODIsIDEyNzE2OSwgNjg3NDcsIDAsIDY4NzM4LCAKKyAgICAzMzQ5LCA3NDEyNSwgNzAyMiwgODkyNywgNDczOSwgOTI1OTksIDU4MDIsIDEyMDA0NywgODYxNSwgMCwgMTI4MDU4LCA0OTEsIAorICAgIDc0NDAxLCAxMDE5MCwgNjg3NTUsIDY1ODM3LCA2ODgwMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCAKKyAgICA3NTg2LCA0MjMwNSwgMTA4NTIsIDkxNzU4MCwgNDI2NDgsIDQ2MDYsIDY4NDQ4LCA5MDk1LCA3NzQxLCAxMjY4NCwgNDE4ODUsIAorICAgIDEwNDYsIDcxMjQsIDEyODYxMCwgNjg3NTMsIDU4MTUsIDUxNzEsIDY1NTM5LCA2ODYxMiwgNjkzMiwgNzQyNjcsIDQyMzk0LCAKKyAgICA0MTg3OCwgNzQ4NDksIDcyNzg5LCA3MjQyNCwgNTE2OSwgMTE5MzUsIDAsIDAsIDMxNzUsIDEyMDgyMiwgMTUzNywgCisgICAgMTE5MDQ5LCA1MTc2LCA4OTA1LCAyMjY3LCA0ODcxLCA3ODI4NywgMTIwNjYzLCA5ODMzLCAxOTQ4NTAsIDExMzczMCwgCisgICAgMTEyOCwgNjU5MjAsIDkxNzg3OSwgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgMzY2MiwgOTQxMywgCisgICAgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgNTE2NSwgNTEyNiwgCisgICAgNDEzODUsIDE5NDg0NCwgNDEzODksIDEyNzk2MywgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgOTQwNCwgCisgICAgMzUwNywgOTQwNiwgNzYyOSwgOTgzNjE3LCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCA3MDgxMSwgCisgICAgMTA2MjcsIDQxMTMwLCA3MTA3OSwgMzk5NiwgMCwgNzE0NDIsIDEwMDg2NCwgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCAKKyAgICA0MzMyLCA2NDgyNSwgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCAxMjcyMDYsIDEyMDg1LCAKKyAgICA2NjkwMiwgNTc0LCAxMjY3MDUsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY1OTMyLCA0MTMyMiwgNDIyMTEsIAorICAgIDU0NDIsIDQxOTAsIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA2ODgxNywgNzc4MzgsIDc3MDgsIAorICAgIDc0NzU5LCAyMjI4LCA2NTg2NywgMTAzNDUsIDEwNDA5LCA0MTkxLCAxMjAzNzgsIDc3ODQ0LCA3MzgwMCwgNDIxODEsIAorICAgIDc3ODQzLCA3NzgzOSwgMjA2MCwgMTIxMTkzLCA3MTExLCAxMTc4OCwgNjUzNzYsIDY4MTI5LCAxMDQxNSwgNzI3NDEsIAorICAgIDE5NTAyNSwgMjA1LCA4MzA0MCwgMTAzNTEsIDY3MTUxLCAwLCA5ODYyLCA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCAKKyAgICA0MTM1NSwgNTUwNSwgNzA3MzYsIDU1MDMsIDgwMjEsIDEyODAzNSwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCAKKyAgICA1NTA3LCAxMjA0NCwgOTIzNjQsIDEwMDc0MiwgMTAwMjYsIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgCisgICAgNTQ3NiwgODk5MSwgNjYzMjIsIDY5Nzc4LCAxMTEzMywgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCA3NDUxNiwgCisgICAgMjY3NSwgNTU5NSwgNzg0MTEsIDQzNzYyLCA0MzY3LCA4MzUxOCwgOTE3NzgyLCA1NDc4LCA1OTA0LCA1NTk0LCAwLCAKKyAgICA3NDE1MCwgNzI5MSwgNTU5MCwgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDc1MDY5LCA5ODMxMDgsIDk3MzEsIDY5NzMxLCAKKyAgICA2NDYzMywgNzc4NTcsIDc3ODU0LCA3MTIxNywgNzc4NTIsIDcxMjI3LCA3Nzg1MCwgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgCisgICAgNzEzNywgMCwgNjY5MDksIDEyODg3LCAxMDU1MSwgMTk0NTY0LCA3Nzg2NiwgNzc4NjcsIDc3ODY0LCA3Nzg2NSwgOTkyOSwgCisgICAgNTE5OSwgOTkzNiwgMTEyMCwgNDIzODcsIDAsIDE0NDQsIDk0ODYsIDc1NTQsIDY1ODM5LCA1NTI1MiwgNzI4MzIsIDE0NDIsIAorICAgIDEyOTA4MCwgNTg5NCwgNzAwNjksIDEyODY3MiwgNDExNzEsIDkyNTExLCA3MDM1OCwgMTMyMywgMTMxNjIsIDEyMDU5OSwgCisgICAgMzMzNCwgMTI4NzA0LCA5MjcwOSwgNzc4ODEsIDY2MDIyLCA3MDcwNSwgNjk3NzAsIDE2NTEsIDEyMDM2NCwgODg2MSwgMCwgCisgICAgOTE3NTg4LCAxMTQyLCA5ODMxMTIsIDgyNzEsIDAsIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgNzg0MDYsIDQwMDIsIDQzNjI2LCAKKyAgICAxMDQ0MiwgMTA2NzYsIDMzNDQsIDEyODkxMCwgMTk0Nzg3LCAxMjkyMCwgMTk0NTYwLCA3MDQ5NywgMTk0Njg3LCA2NjY0MiwgCisgICAgMTI3NywgNjY4NzYsIDc4NzEsIDY3MTA2LCA3MTQ4NywgNzg4NTMsIDEyOTA2OCwgNzg4NTQsIDEyMDM2MCwgOTgzNDkyLCAKKyAgICAxMTc4NCwgMCwgNzgwMTIsIDQ3MDAsIDQzODU2LCA3ODg1OCwgMTIwMzU5LCAxMTAxMiwgOTgzNjI3LCA3ODg1NiwgNzg0NDgsIAorICAgIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNjY3NDMsIDQyNDQwLCA3MTIyNSwgCisgICAgNDMxMTgsIDExOTg3NSwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCAKKyAgICA5MjQzLCAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMTIyODkwLCA2MjQ3LCA0MzExNywgNzAzNjQsIDcxMjEsIDc0MTY2LCAKKyAgICAxMjQ5NzMsIDEyMDM1NSwgOTI1MzcsIDE5NDg0NiwgMTE5ODc3LCAxOTUwMzQsIDcwMzU3LCAxMTk5MjIsIDAsIDY3MTE5LCAKKyAgICAzMzU0LCAxOTUwMzcsIDQxOTIsIDkyODksIDExODk5OSwgNDExOTEsIDM4NzYsIDAsIDcwMDY3LCAxMjA2NjAsIDQzNjk2LCAKKyAgICA0MzM4MCwgOTgzNjI1LCA5ODMwOTEsIDEyOTM0MiwgMTI4NDUwLCAxMTYwMywgMTI5MzQ3LCA3NTA3NCwgNjU4OSwgCisgICAgMTI3MzYwLCA4Mjk3NSwgMTIwOTkzLCA2NzgxMiwgMTI3MTkwLCAxOTQ2ODAsIDEyOTA4NywgNDI1NzIsIDEyODI2NCwgCisgICAgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTE4ODgyLCAxMTY1NCwgMTIxMjg3LCA3NTUwLCAxMDY4NiwgNTkwMywgCisgICAgNjcwOTgsIDc4MDA5LCA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgMzM2NiwgMTAzOTksIDkxNzkzOCwgNTU0MiwgCisgICAgMTEwMTMsIDEyNzkyNywgNzEwNjIsIDEyNTIyNCwgNzE0NjEsIDY3MDkwLCA2OTI1LCA5ODMyNzQsIDAsIDkyODkyLCAKKyAgICA3MTg1NiwgMTE1NjgsIDk4MzEzMSwgNDMzNjcsIDY0NTc5LCA5MTc5MzAsIDc4NTIsIDExMTM4LCAwLCA2NzU0LCA2MzEyLCAKKyAgICA3Nzk1NiwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIAorICAgIDExMDUwLCAxMDk4NCwgOTIyMDgsIDk4MzIxNiwgOTE3ODIyLCA5MjE4MiwgMTI5MTQ2LCAxOTQ2MzYsIDk1MzIsIDY2MzU1LCAKKyAgICAxMTkyNjQsIDY4MDczLCAxMTM2OTUsIDY0MzQzLCAxOTUwMzIsIDkyNzQ0LCAxMjcyNDMsIDAsIDE5NDg0NywgNzg4MzgsIAorICAgIDExNDQ1LCA2ODI5NCwgMjExMiwgMTI4NzQxLCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIDk1MDcsIDEwMjEwLCAKKyAgICA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3Mjg1MCwgOTYyNCwgMTE1NDUsIDAsIDEyMDI3NiwgCisgICAgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgNzg5NCwgCisgICAgNDM5MSwgNjgxMzksIDEyMTA2NCwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIDkyNDMzLCAKKyAgICAzNTU4LCAxMjkxOTAsIDM5MTMsIDcwNDI5LCAxMjEzNzYsIDc4MjM1LCA3MDQ0LCAxMjY1LCAxOTQ2NjAsIDYzMDksIDcwNDUsIAorICAgIDcxNzUsIDcwNDcsIDc4MjM5LCAxMTc5MSwgOTgzMTIyLCAxOTQ1ODQsIDM4ODEsIDc4MzA3LCA0MTg2NCwgMTI3Mzk1LCAKKyAgICAxMjUyMDgsIDY3MDc1LCA3MTIxOSwgMTY3LCAxMjExMDEsIDcyNzU1LCA5ODM2NTMsIDc0MjExLCA0MTg5NywgNjcwNzIsIDAsIAorICAgIDkxNzU4MywgNjY3NDUsIDY3MDc2LCAyNDkzLCAwLCAxMTM3NzgsIDEyMDUzMCwgNzgxMDcsIDY0MzU0LCA5MTc1OTMsIAorICAgIDg3NzcsIDEyNzk0MCwgNDA2LCA4ODg0LCAyMzg1LCA3ODIxMCwgOTI0NTAsIDkxNzU5MCwgOTE3NTczLCA0MzAzMCwgCisgICAgNDIwMjcsIDEyMTE0LCAwLCAxMjg1OTcsIDY0OTM2LCAxMDA3NjMsIDExOTI2NywgMzQyMSwgMTA1NjEsIDEyODk0MCwgCisgICAgODM2NSwgNzQyOTQsIDk4Mzc3NCwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAxMjg4OTYsIDgzMTc2LCA3ODM0LCAKKyAgICA3NDE1OSwgMCwgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTc3LCAxNjM5LCAxMjA4NDIsIDk4MzU4NiwgNzA4MDMsIAorICAgIDYzMjcsIDY3MjQsIDcxMjY5LCA2NjM1NCwgOTI1NjYsIDY5OTEwLCA0ODE3LCAxMTA4NywgMTk0NzU5LCA5MjUzNiwgNzA0MywgCisgICAgOTYwMCwgMTEwMjIsIDEyODQyNywgMTI5MzQ0LCAxMjgzNTQsIDk4MzU5OSwgOTgzMjA5LCA2Njc3MSwgNzU0OCwgNjQ3OTQsIAorICAgIDQyMDUwLCAxMjI5MSwgNTUyODksIDEyODc4MSwgMTIzNDMsIDY1NywgNjcxMTAsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCAKKyAgICA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgOTI4OTEsIDEyNzM3MiwgODMwNTYsIDQ0NTYsIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgCisgICAgMTI3NTIwLCAwLCA5MzA0NCwgMTI4NDMwLCA2NTU1MCwgMjYwLCA0ODE2LCA2NzY1OCwgMTA2ODcsIDEyOTMxOSwgNDgyMSwgCisgICAgNDQ2NiwgMCwgODMxODIsIDQ4MTgsIDEyNTI1NywgNDE0MDMsIDExOTk3NywgNzI0MjIsIDEyODQ1OCwgNDE0MDYsIDQzMjczLCAKKyAgICA3NDE2MCwgNjk4MDUsIDczOTM5LCA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAxMTk5ODAsIDQ0NTEsIAorICAgIDEzMDg3LCAwLCAxMTI4NCwgMTE5OTg3LCA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCA3MDA3MCwgMzM3NSwgCisgICAgMTI4NDQ4LCA1OTAwLCA5Mzk5MCwgNzg4OSwgMjcyMiwgNDIyNjIsIDEyODMxMywgMCwgNjcwNzgsIDEyODQ1MSwgMjI4MiwgCisgICAgMTIxNDIyLCAxMjc4MTAsIDExNDAxLCA2NzA3OSwgMCwgNjg0NTksIDEyNTAyOCwgOTgzMTQxLCAwLCA3MDE1MCwgNjU0MzgsIAorICAgIDk4Mzc2MCwgNzI4MCwgMTI3ODg3LCA2ODA1NSwgNzAxNDYsIDQ4NjgsIDgyOTcsIDExOTk2NiwgNzAxNDgsIDEyNTAwOCwgCisgICAgMTI4NzQ0LCA0MzE2MSwgNjY3MzksIDkyMzYwLCAxOTUwNzAsIDUxODIsIDE5NDY5MiwgMTIwNTQyLCA3Mjc2NCwgMTI4NTg4LCAKKyAgICA0MjI2LCA3MDE4NiwgMTIxMzUsIDU3MzIsIDQ0NjQsIDE5NTA4MywgNzEzMzAsIDk3NywgNDQ1OCwgNDM4MjcsIDkyOTcxLCAKKyAgICA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMTIxNDY2LCAxMjEyMjgsIDEzOTUsIDY0Mjc5LCAwLCA5MjI0MCwgMTIxMTc5LCA3ODYsIAorICAgIDEyNjk5NSwgNDMxNzQsIDY0MzQwLCA4MzA3NywgMTk0NzY3LCA3Mzk3MSwgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgCisgICAgNjUwMjUsIDAsIDk4MzQ2OCwgMTI4MzAzLCA3NDE1MSwgOTgzOTE3LCA2ODQ0NCwgMCwgOTI0MzcsIDEyNDkyOCwgOTI1NDksIAorICAgIDEwMjA0LCA5MjY1NiwgODMwNzgsIDExOTI3MSwgMTI4NDMxLCAxMzk5LCAxMjE0NjMsIDY1MjE3LCAxMjE0NjUsIDg4NTIsIAorICAgIDEyMDgwOCwgMjQxLCAxMjE0NjksIDQ5MDcsIDEyODE2MSwgOTE3OTI3LCA3OTMyLCA5NzI3LCAxMjg0NjMsIDc0MjU1LCAKKyAgICA4NzQ4LCAwLCAxMjg0MjgsIDEyODY0NiwgMCwgNDI3ODAsIDU1MjYzLCAxMTM2NzcsIDExOTg1NiwgNDIxNywgOTMwMzQsIAorICAgIDg2NTAsIDEyNzk5MSwgMTIwNjczLCA3Mjg3OCwgNjk5MDAsIDExODg3MiwgNDMwOTksIDM5NjUsIDExOTExOSwgNjcxOSwgCisgICAgMTI4MDA3LCAxMzMwMCwgNzg0MzksIDcyODM2LCA0MzA1NywgNjY1ODgsIDExODk5MSwgNjYyODksIDEyMDkwMiwgNzM4MTUsIAorICAgIDQ0MjAsIDEyODUzMywgNjQxMCwgNzc2MCwgMTAwOTk5LCA3MDQ2OCwgMTI4NzUyLCAxMjA2ODQsIDEwMDUyOCwgNzI5NCwgCisgICAgMTI4MjE4LCA0Mzg2OSwgNjgyMDQsIDkwNjYsIDEyMTMyMSwgMTE5OTMsIDQzMTg4LCAyNjI2LCA3NzYyLCA5ODM4NjYsIAorICAgIDExODgzMSwgOTI4OTksIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDcwMjkwLCA3ODUxNiwgNjkxOSwgODYxOSwgCisgICAgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjA1MzcsIDE1NDIsIDkyMzAzLCAxMjg4MTksIDAsIAorICAgIDEyNDk0MCwgMTIxMTk5LCA3NDMxMSwgNzg0OTcsIDEyMTQxMiwgMTAxODEsIDEyNDkzNywgNDM2MjQsIDEyOTA2MCwgNzc3OSwgCisgICAgOTE3NTUxLCAxMDE5NSwgOTQ3OSwgNjAyOSwgMTI4Mzc0LCA5MjI2OCwgMjIyNCwgMTAxMDc5LCA2NTU3NywgODk5MywgCisgICAgNjYzNTgsIDAsIDQyMzc4LCAzMzY4LCA2MDYsIDY2ODA0LCA3Njk3LCA2OTIzNywgNjk3ODcsIDIwMzAsIDcwMTA2LCA2MDI3LCAKKyAgICA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMTIwNjI5LCA3MDM4NiwgMTI3OTAzLCA5ODMzMzksIDk4MzMzOCwgMjczNSwgNDI4MzEsIAorICAgIDc3OTM1LCA3MDQzOSwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMTI5MzY0LCA3MDQzMywgNzM5NDYsIDAsIDE5NDcwMywgMCwgCiAgICAgNjgxNDAsIDk4MzkyOCwgOTU3NiwgNzAyODgsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgCiAgICAgMTI3MDYzLCA3NzA5LCA0MTExMiwgMTE5ODY4LCA2NjU2MCwgODM4MSwgNDU3MiwgMTI4NzYsIDY2NTYxLCAxMjg5MjEsIAotICAgIDY3NTgsIDY2MDMxLCAxNjE1LCA1ODU1LCA4MDksIDEyNzExNywgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCAKLSAgICAxMjg5MjksIDcwMTAwLCAxMjg2MDcsIDcyNjAsIDk4MzMyNiwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCAKLSAgICA2NTI1NywgNzQ5MDksIDY4NjE2LCAxMjA2MDcsIDkzNDcsIDgzMzYwLCA2NTMyLCAwLCA5MTc5MTgsIDEyMDg2MCwgCi0gICAgMTI3MDYwLCA2NTgyOCwgMTIwMDA2LCAyODMsIDY4NjY1LCA3ODgxMywgNTMyLCA3ODY2MywgNzg4MTcsIDEyODAyMSwgCi0gICAgMTIwNjA5LCAwLCAzMzcwLCA5MTc4ODEsIDExMzYxLCA1NDQzLCA3MTQzMSwgODE1MywgNzM3NjcsIDAsIDEwNzQxLCAKLSAgICAxMjE1MDMsIDIyOTgsIDAsIDEyNTAzOSwgNjU0OTUsIDY0NzA2LCA5ODMzMjAsIDQzMzQ0LCA5ODMzMTgsIDcxNDQsIDk0NjYsIAotICAgIDc4ODY2LCA5ODI0LCA2NzE0MiwgMTI4OTYzLCA2NzEzMywgNjcxMzAsIDkxNSwgNDM0MjUsIDY3MjkyLCA0Mzg2NSwgCi0gICAgNjgyMzIsIDk4MzExMSwgMTIwODg4LCA0MzI2NCwgNjcxMzYsIDY3MTM3LCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCAKLSAgICA2ODE2MSwgNjQ1NTAsIDUxODYsIDczNjAsIDEyNzgzNywgNzA0NTEsIDEyMTA4LCAxMjA2NDQsIDY1MTI0LCA0MzEyNywgCi0gICAgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMTI4MTc4LCAxMjA5MTksIDExNDg1LCAKLSAgICA2MTAzLCA5MjQ2OCwgOTgzMzA3LCAxMTcxOCwgOTgzMzA1LCAxMjg4OSwgOTI2NTcsIDEyNTAzNCwgMTIwNjM1LCAxMjcxNTcsIAotICAgIDEyMTEyOCwgNTUyNDUsIDEyODcwOSwgMTYzMCwgODMwMjcsIDY1NDgzLCAxMjA2MzQsIDEyNTY1LCAwLCA2NTQ3NiwgCi0gICAgNzAzNjksIDk4MzA3MiwgODMwMjksIDkyODMsIDc3MDAsIDkxNzUzNywgOTY5MCwgNjU0OTksIDAsIDY0NTkzLCA1MTIsIAotICAgIDMzNzYsIDY4MDgwLCAwLCAxMjgyNTMsIDc3ODkyLCA2MzIsIDEyOTQwLCA3Nzg5MSwgNDI1MjksIDc4NTg3LCAxOTQ2MDQsIAotICAgIDU5NTcsIDExMDU5MywgODkyNiwgOTgzMzAxLCA5ODMzMDAsIDEyODI3MywgMTA3NDUsIDEwMTc0LCA3Mzc5LCA2NDU4MSwgCi0gICAgNTM4NiwgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAxMjA3NzMsIDk0MDU1LCA5ODEyLCAwLCAKLSAgICA0NDYwLCA3ODc5MSwgMTI0OTU2LCA3MTMwNywgMTI4MDM4LCAwLCAxMjExMzUsIDEyNzE3NCwgNjQyNzgsIDkyMzcwLCAKLSAgICA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDcwMTIyLCAxODAxLCAxMjgzNSwgNzQ4NDcsIDEyMDg2NywgNzM4MjMsIAotICAgIDgzMTEwLCA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIDY2Mjk5LCAKLSAgICA5ODMyODcsIDcxNDQ3LCAxMjEwNiwgMTIwOTcyLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgCi0gICAgMjk1MSwgOTUyMiwgNjc4MTYsIDc4MjY2LCA2NjYwNCwgOTgzODYwLCAzMzg0LCA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIAotICAgIDc3ODk5LCA3NzkwMCwgODQ1MSwgODMzMjQsIDAsIDAsIDY2NDU4LCAxMjg5NTcsIDEyODg3MCwgNzQ4OTYsIDAsIDI5MDgsIAotICAgIDAsIDExMTc3LCA2NDkwMiwgNDI0MywgOTI0NTQsIDEyMjM5LCAxMjEwMDMsIDEyNDk1OSwgNDQ0MSwgMCwgODI5NjgsIAotICAgIDczOTQwLCA2NDM1MiwgMTI3NTEzLCAxMjUwMzEsIDQxMSwgOTgzMjc1LCA5MTk5LCA5ODMyNzMsIDQwNTYsIDExODk5MiwgCi0gICAgNDE4OTAsIDEyODU5MiwgMjczMCwgNDE2MDQsIDEyODM1NSwgNTQyOCwgMTk0NzQzLCAzMzY0LCA0MjI2NSwgNjQ0MzcsIAotICAgIDEyNzkzNSwgMTE4ODE2LCA3MTQ1OCwgOTY4NCwgMjE2LCA3MTM2NywgMTQwMSwgMTI4MDUzLCA0NDAxMiwgOTI2MjgsIAotICAgIDcxNDU2LCA5MjU4NSwgOTE1OCwgNjY4NzgsIDExMTI2LCA1NzY4LCAwLCA5ODM3NTksIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCAKLSAgICA2NTg5NSwgMTI1MDc2LCAxMjEzODAsIDMzMzgsIDczOTM1LCA1NzIsIDcwNDEsIDI3MzYsIDY3NjA1LCAxMjc1NDMsIAotICAgIDkzOTYyLCAyNzk0LCA4ODA3LCA2NDQ5MSwgNzc4NDcsIDU0MzgsIDUyMjIsIDUzODEsIDQzMTE0LCAwLCA1MTkzLCA1MTI1LCAKLSAgICA1NDU2LCA1NTA5LCA3Nzg0NiwgMTk0NzQ3LCA5NTM0LCAxMjkxMDksIDEyOTA0MCwgMCwgMzQzMCwgMCwgNDI5MDUsIAotICAgIDc4NzE3LCA3NDkyOSwgOTgxLCAxMjkxODQsIDQzMzAsIDczOTI5LCAxMjA1MzYsIDE4MjQsIDEwOTA4LCAxMjY1MDYsIAotICAgIDcwMzQsIDQxNjgzLCA2NDYxNywgMCwgNzM3NTQsIDM5NTcsIDY0MzU4LCA2NDU0NywgMTI4MjU5LCA2NzQsIDYzOTkxLCAKLSAgICA5ODMyNTEsIDI5NDYsIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCA4MzY0LCA1MTIzLCAxMTk2MjgsIAotICAgIDUyODEsIDU0NjksIDUxMjEsIDc3OTg5LCAxMTg5OTMsIDAsIDUxMzAsIDgzMTgwLCAxMjgzNTcsIDc3OTkwLCAwLCAKLSAgICAxMjA3MjYsIDEyMjEsIDI3MzMsIDExNzQ2LCA3Nzk5MSwgNTIxNiwgMTE5MjY4LCAwLCAxMjg0NzUsIDkyMTg3LCAzNDY4LCAKLSAgICA3MDMzLCA5MjMwLCA1OTM5LCAxMjgzOTcsIDAsIDU4MDMsIDcxODY3LCA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCAKLSAgICA2NDYxMywgMTAzODUsIDQxNzA2LCAwLCAwLCA5MTc5MzksIDAsIDExNzM5LCA3Nzk4NiwgNDE5ODEsIDkyNzQzLCA1OTM4LCAKLSAgICAwLCA0Mzc2NiwgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgNzM4NTIsIDEyNDk5NCwgMTMwNTcsIDAsIDEyNjk3NiwgCi0gICAgMTI5MDgxLCAxMDAwOSwgMCwgNDE3MDMsIDEyMDk1MCwgMTIxNjUsIDEyOTE5MSwgMCwgOTg4NSwgMCwgODA3NywgOTI2MjAsIAotICAgIDEyNzkwOCwgMTIxMDQ0LCAxOTQ5OTUsIDAsIDkyNDU3LCAxMjkxMzgsIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIAotICAgIDQ5ODcsIDY0NTE5LCAxMjEyNjUsIDEyNTA3OCwgMCwgMTk0ODEzLCAxMjg1NzQsIDEwOTcwLCAxMTczMywgMCwgMTIwNzkyLCAKLSAgICAxMjY0OTAsIDE5OTQ0LCA3NDM1NiwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgMjcyNCwgCi0gICAgMTI4ODk5LCAwLCAxMjMxMywgMTExNTEsIDUxNSwgMTE5OTQ3LCA0Mjc5MSwgNjM5ODcsIDc4Mjg2LCAxMTk5NDMsIAotICAgIDExOTk0MCwgMTE5OTQxLCAxMTk5MzgsIDk3NzUsIDQwNDYsIDQ1ODksIDQ1MjEsIDY4NjI5LCA5MTQxLCA5MTc5MDQsIAotICAgIDc4ODUwLCAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMTIwODQxLCAwLCAxMjUwNjIsIDk4MzQ0MSwgMTIwODQzLCAKLSAgICA2MTg0LCA4NjA2LCAzMzAzLCA0MTM3MiwgMTE3ODYsIDk0NzMsIDY2MjAzLCA2NjE3NywgOTI0NDYsIDExNTkzLCA0MzAwNywgCi0gICAgNDQ3OCwgNjYxNzgsIDAsIDAsIDI3NDQsIDAsIDQ0NzcsIDc4MjY3LCA4MTQsIDQyMDY2LCA2NjE4MywgNjYyMDQsIDQzNzg2LCAKLSAgICAxMTk5NjEsIDY2MTk4LCA0MTg4MCwgNjYxODgsIDExNjIzLCA3ODE0OCwgMTE5NTUsIDY2MTkwLCA2NjE5MSwgNDExMTEsIAotICAgIDY2MTg5LCA3Mzc4OCwgNzc4OCwgNDg0NywgOTgzNDI4LCAxMjc3NTksIDAsIDEyODQzMywgMjIyMSwgMTU4MSwgNjUzNSwgCisgICAgNjc1OCwgNjYwMzEsIDE2MTUsIDU4NTUsIDgwOSwgMTI3MTE3LCA5MjI4MywgNzI4NTMsIDEyODAwNCwgNTc5OSwgMTI4OTI5LCAKKyAgICA3MDEwMCwgMTI4NjA3LCA3MjYwLCA5ODMzMjYsIDQzMDMxLCA2NDQyNSwgNjUxMjgsIDc4ODE5LCA2NDM4NiwgNjUyNTcsIAorICAgIDc0OTA5LCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCA4MzM2MCwgNjUzMiwgMCwgMTk1MDYyLCAxMjA4NjAsIDEyNzA2MCwgCisgICAgNjU4MjgsIDEyMDAwNiwgMjgzLCA2ODY2NSwgNzg4MTMsIDUzMiwgNzg2NDIsIDc4ODE3LCAxMjgwMjEsIDEyMDYwOSwgMCwgCisgICAgMzM3MCwgOTE3ODgxLCAxMTM2MSwgNTQ0MywgNzE0MzEsIDgxNTMsIDczNzY3LCAwLCAxMDc0MSwgMTIxNTAzLCAyMjk4LCAwLCAKKyAgICAxMjUwMzksIDY1NDk1LCA2NDcwNiwgOTgzMzIwLCA0MzM0NCwgOTgzMzE4LCA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgCisgICAgNjcxNDIsIDEyODk2MywgNjcxMzMsIDY3MTMwLCA5MTUsIDQzNDI1LCA2NzI5MiwgNDM4NjUsIDY4MjMyLCA5ODMxMTEsIAorICAgIDEyMDg4OCwgNDMyNjQsIDY3MTM2LCA2NzEzNywgMCwgNDMwMzgsIDc4ODY0LCA2NzMwLCA3ODg2MiwgNjgxNjEsIDY0NTUwLCAKKyAgICA1MTg2LCA3MzYwLCAxMjc4MzcsIDcwNDUxLCAxMjEwOCwgMTIwNjQ0LCA2NTEyNCwgNDMxMjcsIDY2MDQzLCAwLCA2MzI2LCAKKyAgICA0MzEwNywgNzc4MjYsIDAsIDQyNTYyLCAwLCAxMjg4MjEsIDEyMDMyOCwgMTIwOTE5LCAxMTQ4NSwgNjEwMywgOTI0NjgsIAorICAgIDEyMTA3NSwgMTE3MTgsIDk4MzMwNSwgMTI4ODksIDkyNjU3LCAxMjUwMzQsIDEyMDYzNSwgMTAxMDcwLCAxMjExMjgsIAorICAgIDU1MjQ1LCAxMjg3MDksIDE2MzAsIDgzMDI3LCA2NTQ4MywgMTIwNjM0LCAxMjU2NSwgMCwgNjU0NzYsIDcwMzY5LCAKKyAgICA5ODMwNzIsIDgzMDI5LCA5MjgzLCA3NzAwLCAxMjExOTIsIDk2OTAsIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAzMzc2LCAKKyAgICA2ODA4MCwgMCwgMTI4MjUzLCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIDQyNTI5LCA3ODU4NywgMTAxMDc4LCA1OTU3LCAKKyAgICAxMTA1OTMsIDg5MjYsIDE5NTA3MiwgOTgzMzAwLCAxMjgyNzMsIDEwNzQ1LCAxMDE3NCwgNzM3OSwgNjQ1ODEsIDUzODYsIAorICAgIDEyMDY4NiwgMTE3MTMsIDEwNjMzLCA2OTcwOCwgNTA1NiwgMTAwNjc5LCAxMjc4MjQsIDEyMTUxLCAxMjA3NzMsIDk0MDU1LCAKKyAgICA5ODEyLCAwLCA0NDYwLCA3ODc5MSwgMTI0OTU2LCA3MTMwNywgMTI4MDM4LCAwLCAxMjExMzUsIDEyNzE3NCwgNjQyNzgsIAorICAgIDkyMzcwLCA0MzQ2NiwgMCwgNjY3NjAsIDY0Mzg5LCAyOTUzLCA3MDEyMiwgMTgwMSwgMTI4MzUsIDc0ODQ3LCAxMjA4NjcsIAorICAgIDczODIzLCA4MzExMCwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA2NjI5OSwgCisgICAgMTk0Nzc1LCA3MTQ0NywgMTIxMDYsIDEyMDk3MiwgNzQyMDcsIDE3NTUsIDEwNDgyLCAxMjg2MywgNzc4OTgsIDExNjMsIAorICAgIDI5NTEsIDk1MjIsIDY3ODE2LCA3ODI2NiwgNjY2MDQsIDEwMTA1OSwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCAKKyAgICA3Nzg5OSwgNzc5MDAsIDg0NTEsIDgzMzI0LCAwLCAwLCA2NjQ1OCwgMTI4OTU3LCAxMjczMDEsIDc0ODk2LCAwLCAyOTA4LCAKKyAgICA5ODM1NTgsIDExMTc3LCA2NDkwMiwgNDI0MywgOTI0NTQsIDEyMjM5LCAxMjEwMDMsIDEyNDk1OSwgNDQ0MSwgMTI0OTI5LCAKKyAgICA4Mjk2OCwgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDEyMTA2NiwgNDExLCAxMjc1MjUsIDkxOTksIDk4MzI3MywgNDA1NiwgCisgICAgMTE4OTkyLCA0MTg5MCwgMTI4NTkyLCAyNzMwLCA0MTYwNCwgMTI4MzU1LCA1NDI4LCAxOTQ3NDMsIDMzNjQsIDQyMjY1LCAKKyAgICA2NDQzNywgMTI3OTM1LCAxMTg4MTYsIDcxNDU4LCA5Njg0LCAyMTYsIDcxMzY3LCAxNDAxLCAxMjgwNTMsIDQ0MDEyLCAKKyAgICA5MjYyOCwgNzE0NTYsIDkyNTg1LCA5MTU4LCA2Njg3OCwgMTExMjYsIDU3NjgsIDEwMTA2NCwgOTgzNzU5LCAwLCA0ODQsIAorICAgIDE5NDczOSwgMCwgMCwgNjU4OTUsIDEyNTA3NiwgMTAwNTI0LCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgCisgICAgMTI3NTQzLCA5Mzk2MiwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMTI4NzA1LCAKKyAgICA1MTkzLCA1MTI1LCA1NDU2LCA1NTA5LCA3Nzg0NiwgMTk0NzQ3LCA5NTM0LCA2Njc2NywgMTI5MDQwLCAxMTk5NjcsIDM0MzAsIAorICAgIDk4MzM5NywgNDI5MDUsIDc4NzE3LCA3NDkyOSwgOTgxLCAxMjkxODQsIDQzMzAsIDczOTI5LCAxMjA1MzYsIDE4MjQsIAorICAgIDEwOTA4LCAxMjY1MDYsIDcwMzQsIDQxNjgzLCA2NDYxNywgMTE5MTM4LCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAKKyAgICAxMjgyNTksIDY3NCwgNjM5OTEsIDk4MzI1MSwgMjk0NiwgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIAorICAgIDgzNjQsIDUxMjMsIDExOTYyOCwgNTI4MSwgNTQ2OSwgNTEyMSwgNzc5ODksIDExODk5MywgMCwgNTEzMCwgODMxODAsIAorICAgIDEyODM1NywgNzc5OTAsIDAsIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAxMTkyNjgsIDAsIAorICAgIDEyODQ3NSwgOTIxODcsIDM0NjgsIDcwMzMsIDkyMzAsIDU5MzksIDEyODM5NywgMTIwMDEwLCA1ODAzLCA3MTg2NywgCisgICAgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgNjQ2MTMsIDEwMzg1LCA0MTcwNiwgMCwgMCwgNjcxMTUsIDY2NzUzLCAKKyAgICAxMTczOSwgNzc5ODYsIDQxOTgxLCA5Mjc0MywgNTkzOCwgMCwgNDM3NjYsIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIAorICAgIDczODUyLCAxMDA2ODQsIDEzMDU3LCA5ODMyNzcsIDEyNjk3NiwgMTI5MDgxLCAxMDAwOSwgOTE3OTA1LCA0MTcwMywgCisgICAgMTIwOTUwLCAxMjE2NSwgMTI5MTkxLCA5ODM3NTcsIDk4ODUsIDE5NDgxNCwgODA3NywgOTI2MjAsIDEyNzkwOCwgMTIxMDQ0LCAKKyAgICAxOTQ5OTUsIDAsIDkyNDU3LCAxMjkxMzgsIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAKKyAgICAxMjEyNjUsIDEyNTA3OCwgMTI5MTg1LCAxOTQ4MTMsIDEyNDk5OSwgMTA5NzAsIDExNzMzLCAwLCAxMjA3OTIsIDEyNjQ5MCwgCisgICAgMTk5NDQsIDc0MzU2LCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAyNzI0LCAxMDA4ODksIAorICAgIDEyNzM5MCwgMTIzMTMsIDExMTUxLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCA3ODI4NiwgMTE5OTQzLCAxMTk5NDAsIAorICAgIDExOTk0MSwgMTAwODkwLCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgOTE0MSwgOTE3OTA0LCA3ODg1MCwgMjc0MSwgCisgICAgNjQzOTksIDYxOTcsIDEzNzAsIDk4Mzk0OCwgMTIwODQxLCAwLCAxMDA4ODcsIDk4MzQ0MSwgNzEyNzMsIDYxODQsIDg2MDYsIAorICAgIDMzMDMsIDQxMzcyLCAxMTc4NiwgOTQ3MywgNjYyMDMsIDM0MjIsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAKKyAgICAwLCAwLCAyNzQ0LCAwLCA0NDc3LCA3ODI2NywgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgMTE5OTYxLCAKKyAgICA2NjE5OCwgNDE4ODAsIDY2MTg4LCAxMTYyMywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCA2NjE4OSwgCisgICAgNzM3ODgsIDc3ODgsIDQ4NDcsIDEyODM2NiwgMTI3NzU5LCA3MDcyNSwgMTI4NDMzLCAyMjIxLCAxNTgxLCA2NTM1LCAKICAgICA3ODE2MSwgMTI5NTQsIDQzMCwgNzgxNjAsIDU1MjU5LCA3Mzk0NCwgMTI4MDM2LCA1Mjc4LCA0OTQ1LCA0Mjg4MywgNDk1MCwgCiAgICAgOTgzNDQwLCA2ODYyNSwgOTgzNDM4LCA3MjY5LCAxMjg0OTksIDU5NjQsIDEyOTA4LCAxMjQ5OTcsIDAsIDc0NzY0LCAKLSAgICA0MzUxMiwgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQzMSwgNDQzLCA5ODM0MjksIDQ5NDQsIDU0NjcsIDExOTYwMywgCi0gICAgNzA4NjUsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgMCwgNDIxMywgMCwgNDEzMDMsIDkxNzU1NiwgMTk0OTMxLCAxMTk5NjIsIAotICAgIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgMTI4Njc2LCAxMjA5MSwgCi0gICAgNjcxMTgsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgNjUwNTksIDQzODYwLCAKLSAgICA2NzM5LCA2Njg0NCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgNjc3MDIsIDQ2NzcsIDEyNjg4LCAKLSAgICAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIDc4MTY2LCA0Njc0LCAKLSAgICA0NTQ4LCA0NDAwNSwgNzEwODcsIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIDE4NTUsIDEyNzQ3NSwgCi0gICAgNjg2NjksIDExODk5MCwgOTI0NDUsIDEyNzU1NCwgMTI2NjMwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgMTE3OTcsIAotICAgIDk4MzQxOSwgMTI4MTU5LCA5MjAyLCA0NjU0LCA2ODQwLCA5ODM0MTYsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIDQ2NDksIAotICAgIDY1MjA5LCAxMjE1MTIsIDEyMTUxMSwgNDY0OCwgNDMwODAsIDc1MDcwLCAxMjE1MDcsIDk4MzQwNiwgNjI0NiwgNjQ5NTAsIAotICAgIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDcwMjg3LCA3NDYyNCwgNDMxODcsIDg2NjksIAotICAgIDEyMDY1OSwgNjgyMSwgNjUwOTMsIDk4MzU2NSwgNzg4ODEsIDI3MTYsIDk4MzQxMiwgOTgzMDYwLCA3MDUwMywgMTk0OTUyLCAKLSAgICA2ODM2OSwgMTIwMDU0LCAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNjgzNiwgOTgzNDIzLCAwLCAKLSAgICA0NjYyLCA3ODAzMywgNzgwMzIsIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAxOTQ5NjIsIDQ2NTYsIAotICAgIDEwMTMwLCA2ODQ1MCwgNzgxMSwgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgCi0gICAgNDY2MSwgNDI0MzQsIDk4MzQxMywgMTI4NzM3LCAxMTE5MCwgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgCi0gICAgNDg2NywgMTExMDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgMTk0OTU2LCA5NzQ0LCA3ODg2MCwgNzYwNSwgNDYyMiwgMTE5NjU2LCAKLSAgICA0Mzg4OCwgNzAzMDMsIDk4MzM5NSwgNjk5MDUsIDY3MTg4LCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIDY4ODMxLCAKLSAgICAxMjg4MCwgNjUzMDcsIDQ2MTcsIDY4NzU3LCA5ODMzODgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgMTA0MjMsIDEwMzU5LCAKLSAgICA5ODMzODIsIDU5NTgsIDAsIDk4MzQzNSwgNDIxNSwgOTc4OSwgMTE5NjE5LCA0MzIxLCA0NjIxLCAxOTUwMjgsIDQxMzEzLCAKLSAgICA1MjIsIDUzNjgsIDExMTM5LCA2NTgwMywgMTI4NTQ2LCA1MzY2LCAxMjIwMSwgNTM3MiwgMTIxMDYwLCAxMTk5NDksIAotICAgIDE5NDk3NSwgNzcyMCwgNzM5MCwgMjY5NiwgOTgzNDAyLCAwLCA0NjM4LCA5ODM0MDcsIDE3OTAsIDc4MjQyLCA1OTY1LCAKLSAgICA2NDM2MywgNjY1NjksIDY4NjQ2LCA2ODQ3NywgNTM3NiwgMTgzNSwgNTMzNSwgMTIxNTA1LCAxMjgwODksIDQ2MzMsIDAsIAotICAgIDY4MTE5LCAxMTgwLCA0NjMyLCA2NzE5MSwgNTM4NywgNTMzMywgMCwgMTI1MTMyLCA0MjA5NCwgNTMzMSwgNDYzNCwgCi0gICAgMTE5MjgsIDk4MzU5NCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgNDM1MDAsIDEyNjgsIDY1MDk3LCAKLSAgICA0MjM2MSwgMCwgMCwgNzM4NTMsIDE0MjcsIDEyODQ0MCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAKLSAgICA5ODMzNzYsIDE2MDgsIDI3MzgsIDEyNTA2NiwgMTA0NTUsIDQ3NTMsIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgCi0gICAgNzQzODQsIDY2NjExLCA2ODM3NywgNjI0OCwgOTgzMzY0LCA2NzgxNSwgNzg4NzgsIDQyMzE4LCA5MjU4MiwgNTIyOSwgCi0gICAgNDc1NywgMCwgMTI2NTc2LCAyNzI4LCA0NzUyLCA2NDU2MywgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMTI4OTI2LCAKLSAgICAxMDcxMywgNzE2NiwgMCwgMjYyMiwgNzQ2MCwgODMxMjQsIDY3MTAxLCAxMjY0OTUsIDg5NTQsIDc0NzYwLCA2NTE4OSwgCi0gICAgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgNTU3NywgMTI4OTY2LCAwLCAKLSAgICAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIAotICAgIDAsIDU1MjUsIDUzMzAsIDUzMTksIDY4MjkyLCAxMjczMTEsIDY1MDY2LCA0NDAwMywgNjg0MzcsIDk4MzQ4MiwgNDM4NDMsIAotICAgIDEyMDQ5OCwgMTI3ODUxLCA0MzkxOCwgNzQ4NTEsIDc0MDIyLCA5ODM0MjQsIDY0NjA5LCA2ODY0MywgNjc0MTAsIDEyODU5MywgCi0gICAgNTcyMSwgNzQ4OTIsIDU1MTksIDg2MzIsIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA3ODc3OCwgMTY5MiwgCi0gICAgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMjQyLCA1Mjg3LCA1MzA5LCAKLSAgICA1Mjg1LCA2ODM4OSwgNTk2MSwgNDY0NywgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCAxMjA0NzksIAotICAgIDk4MzM0OCwgOTIwOCwgNDYwOCwgNDM5NjYsIDQxMTI0LCA1MTkwLCA2NzYyOCwgNjY4MjYsIDY4MTQ1LCA3MDg2LCAwLCAKLSAgICA2Nzk5OCwgNjc2MjAsIDkzMDQ3LCAyNzM0LCAxMTA3NCwgMCwgNjc2MjcsIDQzNTkzLCAwLCA2NzYyNSwgNTk2MCwgNjc3MjIsIAotICAgIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCAKLSAgICA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCA0MzkwMCwgNDEyNTYsIDc0MTMyLCA2Nzc0MCwgCi0gICAgMCwgNzExNzgsIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCAwLCA0ODY1LCAKLSAgICAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCA3MTkzLCA2NzA5NywgMTI4ODQ0LCA1NzM5LCA0MTAyNCwgCi0gICAgNDg2NiwgOTgzODgwLCA3MzkwNCwgMTIxNDIwLCA0ODY5LCAxMjA1NjMsIDEyOTE3MiwgNDIyMywgMTI4MjAxLCA2NjUwLCAKLSAgICAxMjY1MDksIDAsIDEyMDIxMiwgMTE5ODcyLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIAotICAgIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDgzMTkzLCA2MjQ1LCA2ODY1MiwgCi0gICAgMjczMiwgNDI3MzQsIDc0NSwgNjgwNDUsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDEyOTEzNiwgNjg2MzEsIDQyNzc1LCAKKyAgICA0MzUxMiwgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQzMSwgNDQzLCAxMjI5MDIsIDQ5NDQsIDU0NjcsIDExOTYwMywgCisgICAgNzA4NjUsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgOTgzMTE5LCA0MjEzLCAwLCA0MTMwMywgOTE3NTU2LCAxOTQ5MzEsIAorICAgIDExOTk2MiwgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCA0MTMwNCwgODI0LCAKKyAgICAxMjg2NzYsIDEyMDkxLCA2NzExOCwgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIDExOTgyMCwgMTE5ODE5LCAKKyAgICA2NTA1OSwgNDM4NjAsIDY3MzksIDY2ODQ0LCA1NDgxLCAzNDkwLCAxMTk5LCAxMTk4MTEsIDgzNTYsIDY5OTQ3LCA2NzcwMiwgCisgICAgNDY3NywgMTI2ODgsIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgCisgICAgNzgxNjYsIDQ2NzQsIDQ1NDgsIDQ0MDA1LCA3MTA4NywgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIDEyNzAyNCwgCisgICAgMTg1NSwgMTI3NDc1LCA2ODY2OSwgMTE4OTkwLCA5MjQ0NSwgMTI3NTU0LCAxMjY2MzAsIDEyNzMzOSwgMTE5NjUyLCAyNzQ1LCAKKyAgICAxMTc5NywgOTgzNDE5LCAxMjgxNTksIDkyMDIsIDQ2NTQsIDY4NDAsIDEyMjkwOSwgNjg2MzgsIDczOTkzLCAxMDUyNSwgCisgICAgNDY0OSwgNjUyMDksIDEyMTUxMiwgMTIwMjQ1LCA0NjQ4LCA0MzA4MCwgNzUwNzAsIDEyMTUwNywgOTgzNDA2LCA2MjQ2LCAKKyAgICA2NDk1MCwgNzgyOCwgNDY1MCwgNjc3NywgNjc3NiwgNjc3NSwgNDY1MywgNzgyMiwgNzAyODcsIDc0NjI0LCA0MzE4NywgCisgICAgODY2OSwgMTIwNjU5LCA2ODIxLCA2NTA5MywgOTgzNTY1LCA3ODg4MSwgMjcxNiwgOTgzNDEyLCA5ODMwNjAsIDY2NzU2LCAKKyAgICAxOTQ5NTIsIDY4MzY5LCAxMjAwNTQsIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA2ODM2LCAKKyAgICA5ODM0MjMsIDk4MzQyMSwgNDY2MiwgNzgwMzMsIDc4MDMyLCA5MTQ5LCA5MTQ2LCA1OTksIDIwODEsIDc4MDMxLCA3ODAzMCwgCisgICAgMTk0OTYyLCA0NjU2LCAxMDEzMCwgNjg0NTAsIDc4MTEsIDQwOTk0LCAxOTQ3MDIsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIAorICAgIDU3MTMsIDU4MTQsIDQ2NjEsIDQyNDM0LCA5ODM0MTMsIDExODk5NywgMTExOTAsIDY0OTA0LCA5MDI2LCAxMDgzMywgCisgICAgNzQ4NjQsIDc1NDcsIDQ4NjcsIDExMTAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIDE5NDk1NiwgOTc0NCwgNzg4NjAsIDc2MDUsIAorICAgIDQ2MjIsIDExOTY1NiwgNDM4ODgsIDcwMzAzLCA5ODMzOTUsIDY5OTA1LCA2NzE4OCwgOTA0NSwgNzg4ODgsIDQyMjUsIAorICAgIDE5OTI2LCA2ODgzMSwgMTI4ODAsIDY1MzA3LCA0NjE3LCA2ODc1NywgNzgwMDgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgCisgICAgMTA0MjMsIDEwMzU5LCA5ODMzODIsIDU5NTgsIDAsIDk4MzQzNSwgNDIxNSwgOTc4OSwgMTE5NjE5LCA0MzIxLCA0NjIxLCAKKyAgICAxOTUwMjgsIDQxMzEzLCA1MjIsIDUzNjgsIDExMTM5LCA2NTgwMywgMTI4NTQ2LCA1MzY2LCAxMjIwMSwgNTM3MiwgCisgICAgMTIxMDYwLCAxMTk5NDgsIDEyNzA2NCwgNzcyMCwgNzM5MCwgMjY5NiwgMTE5NjU3LCA5ODMxMTUsIDQ2MzgsIDk4MzQwNywgCisgICAgMTc5MCwgNzgyNDIsIDU5NjUsIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDY4NDc3LCA1Mzc2LCAxODM1LCA1MzM1LCAxMjE1MDUsIAorICAgIDEyODA4OSwgNDYzMywgOTgzNDE4LCA2ODExOSwgMTE4MCwgNDYzMiwgNjcxOTEsIDUzODcsIDUzMzMsIDAsIDEyNTEzMiwgCisgICAgNDIwOTQsIDUzMzEsIDQ2MzQsIDExOTI4LCAxMDA5NTIsIDUzMzgsIDQ2MzcsIDEyMTA3MCwgNTk3MSwgNDI0MTQsIDQzNTAwLCAKKyAgICAxMjY4LCA2NTA5NywgNDIzNjEsIDEyODUxMCwgOTE3NjA1LCA3Mzg1MywgMTQyNywgMTI4NDQwLCAwLCA1OTcwLCAzNDMxLCAKKyAgICA5ODM0MTcsIDEwMzU4LCAxMDQyMiwgNDc1OCwgOTgzMzc2LCAxNjA4LCAyNzM4LCAxMjUwNjYsIDEwNDU1LCA0NzUzLCAKKyAgICA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIDc0Mzg0LCA2NjYxMSwgNjgzNzcsIDYyNDgsIDk4MzM2NCwgNjc4MTUsIAorICAgIDc4ODc4LCA0MjMxOCwgOTI1ODIsIDUyMjksIDQ3NTcsIDEyNTIxNSwgMTI2NTc2LCAyNzI4LCA0NzUyLCA2NDU2MywgCisgICAgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMTI3NDg3LCAxMDcxMywgNzE2NiwgMCwgMjYyMiwgNzQ2MCwgODMxMjQsIDY3MTAxLCAKKyAgICAxMjY0OTUsIDg5NTQsIDc0NzYwLCA2NTE4OSwgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCAKKyAgICA2NTEzOSwgNTU3NywgMTI4OTY2LCA5ODMwODgsIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCA1MzE2LCAKKyAgICA5MTc4NzcsIDUzMTQsIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAxMjcwMDYsIDU1MjUsIDUzMzAsIDUzMTksIDY4MjkyLCAKKyAgICAxMjczMTEsIDY1MDY2LCA0NDAwMywgNjg0MzcsIDEyNzI5OSwgNDM4NDMsIDEyMDQ5OCwgMTI3ODUxLCA0MzkxOCwgNzQ4NTEsIAorICAgIDc0MDIyLCA5ODM0MjQsIDY0NjA5LCA2ODY0MywgNjc0MTAsIDEyODU5MywgNTcyMSwgNzQ4OTIsIDU1MTksIDg2MzIsIAorICAgIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA3ODc3OCwgMTY5MiwgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgCisgICAgNzUwNTIsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDk4MzI0MiwgNTI4NywgNTMwOSwgNTI4NSwgNjgzODksIDU5NjEsIAorICAgIDQ2NDcsIDU2LCA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgMTIwNDc5LCA5ODMzNDgsIDkyMDgsIDQ2MDgsIAorICAgIDQzOTY2LCA0MTEyNCwgNTE5MCwgNjc2MjgsIDY2ODI2LCA2ODE0NSwgNzA4NiwgMjI2NSwgNjc5OTgsIDY3NjIwLCA5MzA0NywgCisgICAgMjczNCwgMTEwNzQsIDAsIDY3NjI3LCA0MzU5MywgMTI4NzU4LCA2NzYyNSwgNTk2MCwgNjc3MjIsIDg5OTIsIDQyNTkzLCAKKyAgICAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCA0MjUwOCwgNzQ0MiwgCisgICAgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCA0MzkwMCwgNDEyNTYsIDc0MTMyLCA2Nzc0MCwgMTI5MzA5LCAKKyAgICA3MTE3OCwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIDEyODA0NywgNDMyOTEsIDM3NjcsIDU3MzcsIDkxNzg5NiwgCisgICAgNDg2NSwgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgNzE5MywgNjcwOTcsIDEyODg0NCwgNTczOSwgCisgICAgNDEwMjQsIDQ4NjYsIDk4Mzg1NSwgNzM5MDQsIDcwNzI2LCA0ODY5LCAxMjA1NjMsIDEyOTE3MiwgNDIyMywgMTI4MjAxLCAKKyAgICA2NjUwLCAxMjY1MDksIDAsIDEyMDIxMiwgMTE5ODcyLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIAorICAgIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDcyODIxLCA2MjQ1LCA2ODY1MiwgCisgICAgMjczMiwgNDI3MzQsIDc0NSwgNjgwNDUsIDEyODkzMywgOTIxOTUsIDQ3NzcsIDc4MjEsIDEyODg3MCwgNjg2MzEsIDQyNzc1LCAKICAgICAxOTQ2NjEsIDEyODQ0NSwgMTIwNjc5LCAzMDk3LCAxMjA5MDgsIDU5NjYsIDEyMTE5NywgNDc3OCwgMTI2NDY5LCAxMDg2MywgCiAgICAgMTI3NTA2LCA0NzgxLCA5Mjk4NiwgNjQ0MDcsIDEyODUwMywgMTI4MzIzLCA4NTc3LCA3MTIyMSwgNjgxOTYsIDQzMjg1LCAKLSAgICAxMDIxNiwgNDc4MiwgOTgzNDg1LCA5ODM0MTEsIDEyMDc1NywgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgCi0gICAgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAxMjkxMjgsIDEzMTc2LCA2ODM2MywgMTA0MjYsIDY3MjQ3LCA3MTA5MSwgCisgICAgMTAyMTYsIDQ3ODIsIDk4MzQ4NSwgOTgzNDExLCAxMjA3NTcsIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDEyNzExOCwgCisgICAgMCwgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAxMjkxMjgsIDEzMTc2LCA2ODM2MywgMTA0MjYsIDY3MjQ3LCA3MTA5MSwgCiAgICAgMTAzNjIsIDE5NDcwNiwgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIDQzMjc4LCA0MjYzNSwgMCwgMTI3MjA3LCAKLSAgICA1OTYzLCA5MTc5MjYsIDk4MzQ4MywgMCwgNDg1MCwgNzM5MDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCA0ODU0LCAKKyAgICA1OTYzLCAxMjA3ODYsIDEyNTIwMSwgMCwgNDg1MCwgNzM5MDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCA0ODU0LCAKICAgICAxMjc5MTgsIDUxNjQsIDczODA3LCAxMzUwLCA1MTI0LCA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgOTI0NzEsIAotICAgIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDEyMTI3MywgNDEyNjgsIDQ4NDgsIDI1MzAsIDc0OTQxLCAyMDY4LCAxOTY0LCAwLCAKLSAgICA3Mzc2MiwgMTA0NTgsIDk4MzQxNywgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDEyMTEwMiwgNjgyMTEsIDgzMjIsIAotICAgIDQ3OTcsIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDI2LCAzMDMsIDc0NjI1LCAKLSAgICA2ODIyOSwgOTgzNDI3LCAyNDM3LCA3ODY1OSwgNDIyMSwgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCA3NDA5NSwgCi0gICAgNDMyOTIsIDAsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMTk0NjIyLCA3MDQzNiwgMTE4OTI5LCAyNDUxLCAyNzE0LCAxMTkzMjYsIAotICAgIDAsIDQzMzc5LCA0OTM3LCA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIDExNzIyLCA5MjQ4LCA5MjU1NSwgCi0gICAgNDI4NzksIDExNzI1LCA5MTc5NjksIDAsIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCA2NDkzNywgMTE5MjMzLCA5MTQwLCAKLSAgICAxNDA4LCA1MjYxLCA0NjA3LCAxOTQ3MTUsIDE4MSwgOTgzNDMyLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgCi0gICAgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDk4MzYwMSwgNjg0NCwgNDk2NCwgNTI2NCwgNjQxNzgsIDY0MTc3LCAxMjk3OSwgCi0gICAgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIDY0MTc5LCA5NDgyLCA0ODczLCA0MTIzMSwgMTgyMiwgNDI1MjYsIAotICAgIDEyNzk4OSwgMTI3NTgsIDM4NjUsIDE5NDY2MCwgMTIxMTI5LCAxMDUwMCwgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIAotICAgIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIDU0NjMsIDEyODExOSwgMzEyNSwgOTU2NywgMCwgCi0gICAgNDg3OCwgNTQ1OSwgNDYwNCwgMTE5NjUwLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgMTE0OTQsIDEyNjQ5MiwgOTU2MywgCi0gICAgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDY4NTIxLCA3ODcxNCwgNjQxOTEsIDY0MTkwLCA4ODk4LCA2NDE4OCwgCi0gICAgMTI5MTUzLCA0MTAzMCwgNzQyMjYsIDc4NzEzLCA3NDYwMCwgNzQ5OTQsIDkxNzgzNCwgMCwgNzg4MDUsIDQxMDMxLCAKLSAgICA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzI2OSwgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIDcwNzksIDU4NTYsIAotICAgIDY3ODM4LCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIDExOTAxMCwgMTA1NjQsIDc3NjMsIAotICAgIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIDY0MjA3LCAxMDI3NSwgODkyNSwgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgCi0gICAgNzc5NzksIDAsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgCi0gICAgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIDY1MjIzLCA5OTQzLCA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgCi0gICAgMTIyMzEsIDQyNjUyLCA2NDE3NCwgNjQxNzMsIDc4MTg5LCA4NDYsIDc4MTg2LCA5OTY1LCA3NDQ5NSwgODM0OTIsIDgzNDkzLCAKLSAgICA4MzQ5NCwgMjU0MywgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCA5MjE3NiwgCi0gICAgNjQxNjksIDY0MTY4LCA2NDk0OSwgMTA5NzIsIDEwMjUxLCAxMDI0NywgNDI3NjgsIDcxNSwgMjI5NSwgNDMyOTksIDk0NTMsIAotICAgIDUzNDgsIDEwOTQzLCA2NjM5MCwgMCwgMTEzNTIsIDU1MCwgOTkxMCwgMTI1MTI3LCAwLCA2NjU3OSwgMTE1NTEsIDEyODQ2NCwgCi0gICAgMTk1MDgwLCA5NTA0LCA3MTg3LCA4Mjk1NywgMTAzNzMsIDk4MzQxOCwgMTIwMzc1LCAxMDI2MSwgMTAyNTMsIDY0MDQsIAotICAgIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIDY1MjIyLCA2OTk4LCA3ODE4MCwgNzE0MjksIDMxMjgsIDQ3ODksIDUwNjcsIAotICAgIDUwNjYsIDExODg0OSwgNDc4NCwgMCwgODgyNywgMTE0NiwgNTA2NSwgNjk4OTAsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIAotICAgIDQzNDEyLCA1MDY0LCAyNDMxLCAwLCA5NDUwLCAxODA5LCAwLCA3ODIwMCwgNzgyMDEsIDUwNjIsIDEyNjQsIDY0ODE3LCAKLSAgICAxMzI1NCwgMTE2OTcsIDEyNjU5OCwgOTc4NSwgNjQ3MTYsIDAsIDM5MzMsIDc0NTU5LCA0NzQwLCA3OTU0LCAwLCAxMjUwMjMsIAotICAgIDQyNjA5LCAxMTk4NTUsIDc0MTc1LCA2NjkxMiwgMTI3MDE2LCAwLCAxMjEzMDAsIDQyMTMwLCAxMjEwNDYsIDUxNTEsIAotICAgIDEyMTM0NiwgODM0ODgsIDAsIDkzOTgwLCA5MTc4MDIsIDc2MjAsIDM4MDAsIDY1MTIyLCA4MzQ4NywgODM0ODAsIDgzNTUsIAorICAgIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDEyMTI3MywgNDEyNjgsIDQ4NDgsIDI1MzAsIDc0OTQxLCAyMDY4LCAxOTY0LCAKKyAgICAxMjgyMTcsIDczNzYyLCAxMDQ1OCwgMTI4MTI1LCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMTIxMTAyLCA2ODIxMSwgCisgICAgODMyMiwgNDc5NywgNTc1MywgMCwgMjY5NCwgNDc5MiwgMTI4MTYzLCAyNDM5LCA2NTEwNCwgNjk4MDQsIDk4MzQyNiwgMzAzLCAKKyAgICA3NDYyNSwgNjgyMjksIDk4MzQyMCwgMjQzNywgNzg2NTksIDQyMjEsIDQ4NDQsIDkyMjE2LCA5ODM4MDUsIDAsIDAsIAorICAgIDcwMDQyLCA3NDA5NSwgNDMyOTIsIDk4MzY1NiwgMjQ0MSwgMTA3MzksIDY1MDkwLCAxOTQ2MjIsIDcwNDM2LCAxMTg5MjksIAorICAgIDI0NTEsIDI3MTQsIDExOTMyNiwgMCwgNDMzNzksIDQ5MzcsIDQzMzc2LCA3NTMsIDU4NDksIDEwNTk3LCA0MzA4OSwgCisgICAgMTE3MjIsIDkyNDgsIDkyNTU1LCA0Mjg3OSwgMTE3MjUsIDEyMDY4NywgMCwgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIAorICAgIDY0OTM3LCAxMTkyMzMsIDkxNDAsIDE0MDgsIDUyNjEsIDQ2MDcsIDEyOTM1MywgMTgxLCA5ODM0MzIsIDQ5NDIsIDk1MzksIAorICAgIDQ5MzgsIDAsIDY1MjAxLCA1MjU5LCA5MzY5LCA2NDE4NSwgNDE0MiwgNTI1NywgOTgzNjAxLCA2ODQ0LCA0OTY0LCA1MjY0LCAKKyAgICA2NDE3OCwgNjQxNzcsIDEyOTc5LCA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgNjQxNzksIDk0ODIsIDQ4NzMsIAorICAgIDQxMjMxLCAxODIyLCA0MjUyNiwgOTIzNDQsIDEyNzU4LCAzODY1LCAxMjI5MTgsIDEyMTEyOSwgMTA1MDAsIDAsIDExOTAyNCwgCisgICAgNzgwMjgsIDc4MDAzLCA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCA1NDYzLCAxMjgxMTksIAorICAgIDMxMjUsIDk1NjcsIDk4MzI5MSwgNDg3OCwgNTQ1OSwgNDYwNCwgMTE5NjUwLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgCisgICAgMTE0OTQsIDEyNjQ5MiwgOTU2MywgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDY4NTIxLCA3ODcxNCwgNjQxOTEsIAorICAgIDY0MTkwLCA4ODk4LCA2NDE4OCwgMTI5MTUzLCA0MTAzMCwgNzQyMjYsIDc4NzEzLCA3NDYwMCwgNzQ5OTQsIDkxNzgzNCwgMCwgCisgICAgNzg4MDUsIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDEyNjU4MSwgNzg1MzksIDczOTE5LCAxMDU3MywgCisgICAgNDE3NDQsIDcwNzksIDU4NTYsIDY3ODM4LCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIAorICAgIDExOTAxMCwgMTA1NjQsIDc3NjMsIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIDY0MjA3LCAxMDI3NSwgODkyNSwgCisgICAgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgNzc5NzksIDcyODAyLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCAKKyAgICA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgCisgICAgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIDEyMjMxLCA0MjY1MiwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCAKKyAgICA3ODE4NiwgOTk2NSwgNzQ0OTUsIDgzNDkyLCA4MzQ5MywgODM0OTQsIDI1NDMsIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgCisgICAgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIDY0MTY5LCA2NDE2OCwgNjQ5NDksIDEwOTcyLCAxMDI1MSwgCisgICAgMTAyNDcsIDQyNzY4LCA3MTUsIDIyOTUsIDQzMjk5LCA5NDUzLCA1MzQ4LCAxMDk0MywgNjYzOTAsIDAsIDExMzUyLCA1NTAsIAorICAgIDk5MTAsIDEyNTEyNywgMCwgNjY1NzksIDExNTUxLCAxMjg0NjQsIDE5NTA4MCwgOTUwNCwgNzE4NywgODI5NTcsIDEwMzczLCAKKyAgICA5ODMxNTMsIDEyMDM3NSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCA2NTIyMiwgCisgICAgNjk5OCwgNzgxODAsIDcxNDI5LCAzMTI4LCA0Nzg5LCA1MDY3LCA1MDY2LCAxMTg4NDksIDQ3ODQsIDEyODM5NCwgODgyNywgCisgICAgMTE0NiwgNTA2NSwgNjk4OTAsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIDQzNDEyLCA1MDY0LCAyNDMxLCAxOTQ5MjYsIDk0NTAsIAorICAgIDE4MDksIDk4MzU4OCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgMTMyNTQsIDExNjk3LCAxMjY1OTgsIAorICAgIDk3ODUsIDY0NzE2LCAxMjgyNzksIDM5MzMsIDc0NTU5LCA0NzQwLCA3OTU0LCAxMjg3MzksIDEwMTEwMCwgNDI2MDksIAorICAgIDExOTg1NSwgNzQxNzUsIDY2OTEyLCAxMjcwMTYsIDAsIDEyMTMwMCwgNDIxMzAsIDEyMTA0NiwgNTE1MSwgMTIxMzQ2LCAKKyAgICA3MDc0MywgOTgzNzE1LCA5Mzk4MCwgOTE3ODAyLCA3NjIwLCAzODAwLCA2NTEyMiwgODM0ODcsIDgzNDgwLCA4MzU1LCAKICAgICA3ODU0LCA4MzQ4MywgOTU0LCA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgMTA3MTEsIAotICAgIDQ1OTMsIDgyOTkzLCAxMjA1ODQsIDk4MzQxMCwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgOTgzNDE0LCAwLCA3ODY0MiwgCi0gICAgNjQ3NTksIDEzMjUsIDUxNjYsIDk4ODgsIDEyNzgwMCwgNTE0OCwgNDI4MzQsIDAsIDc4MjA1LCA3ODIwNiwgNDM3ODcsIAotICAgIDc4MjA0LCA0MzkxMywgMzExOSwgOTE3ODE0LCAwLCAzMDYwLCA2NDEzNSwgOTk4NiwgNzQ5OTYsIDc3ODc2LCA2MzYsIAotICAgIDExNjk4LCA4MzQ3NiwgODI5NjEsIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCA4ODYzLCAKLSAgICA3MDIwMSwgMTE5OTYwLCAxNDc3LCA0MzI4OSwgNjg0OTIsIDY3MTY0LCA4NjE4LCA5ODM0MDQsIDk5MDgsIDc0OTcyLCAwLCAKLSAgICAwLCAzOTM3LCAxMjMxMiwgMCwgOTgzNDA1LCAwLCA2NDc4MSwgOTEyLCA2MzQ5LCA0NTM2LCA5Mzk1NCwgNzQ1MzIsIAotICAgIDEyNjU5NCwgNjI0NCwgOTIyMDksIDcxMzQxLCAzOTM1LCAxMjA2NjUsIDEyODk2OSwgMCwgMTE5NTAsIDUzOTIsIDQyMjQ4LCAKLSAgICA2NTEyOSwgNjg2NTYsIDUzOTcsIDEyODMxMCwgMTIwNDYsIDEyNTk5LCA2NzQwNywgMTI4MjYxLCA1Mzk1LCAwLCA1MzkzLCAKLSAgICAzNTQsIDY4NjE1LCA3Nzg1MywgNzQzNjYsIDEyMTQwNCwgMCwgNDIwMzksIDExMzgxNywgMCwgNjQxNDIsIDYyNiwgMCwgCi0gICAgNTg5NSwgMCwgNDM5MTAsIDU3ODAsIDAsIDEwMjIwLCAxMjEzMzcsIDQzOTA3LCA3MTEyMSwgNDMyOTcsIDcwMTg4LCA0MzExLCAKLSAgICA0NjQ0LCA4ODE4LCA3ODE1OCwgMTI4MTg2LCAxMjg4NjksIDcxNDUsIDM5MTgsIDY2NDUyLCAzNzk3LCAxNjQ0LCA5MjM0NiwgCi0gICAgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIDExOTk0NSwgNjgxMzEsIDQxNDYsIDExOTk1NywgCi0gICAgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDk0MDIwLCA2MjQ5LCA0MjExNywgNjg4MjgsIDkyMjA2LCAxMjgwMjMsIDExOTI1NSwgCi0gICAgNzQwNDYsIDQzNzQ1LCA0OTExLCA5ODgsIDcxMTgwLCAwLCA5ODM0NzAsIDQzMDYxLCA3MDU0LCA2NDE0NywgOTgzODQ3LCAKLSAgICA2NDkyMCwgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDcwODQ5LCAxMTk4MSwgMTIyMDIsIDE5NTA4NywgMTEwMzIsIAotICAgIDY3NjU0LCA2MDkzLCAxMTYwOCwgOTc1LCA2NjQxNSwgNjU4NDMsIDE3MCwgMCwgNjcyMzksIDQxNjksIDAsIDQxODU5LCAKLSAgICA2MDU4LCAxMjA0MDEsIDEzMjAzLCAxMjA2NTcsIDcwNTA3LCAxMjUwOTEsIDY4NjU3LCA5ODE4LCAxMDE3OCwgMTAzMjQsIAotICAgIDQyMTA2LCA1ODk4LCA3NDU0MCwgNDczOCwgNDE4NTYsIDcwNjIsIDEyNzEyMCwgNDczNywgMTE3NzksIDQ3NDIsIDgzNDI1LCAKLSAgICA2ODc1OCwgNjgzNDIsIDgzNDIwLCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDgzNDE4LCA4MzQxOSwgNjc3MzEsIAotICAgIDUzMDAsIDQ3NDEsIDQyMTA4LCAxMjcwNTcsIDY0MTU5LCA0NzM2LCA2NDE0OCwgOTI2MzQsIDg0OSwgOTIxOTEsIDc4NDkxLCAKLSAgICA0MzI4OCwgMCwgNjY2MjAsIDEyNzUzMywgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzY4LCAKLSAgICA3ODc2LCA2ODEzMiwgNjYyODAsIDM5MjgsIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAxMjA4OTAsIDQ4NDIsIAotICAgIDEyMDUzLCAxMjgxMjksIDY4NzQ2LCA0ODQxLCAwLCA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgMTQ5MCwgODM0MTEsIAotICAgIDgzNDEyLCAxMjY1MTIsIDQwOTcyLCA1MjQ1LCA3MDc5NCwgMTAxMTQsIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgCi0gICAgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCA0ODI1LCA2OTI0MCwgMTIxNDQzLCAKLSAgICA2ODY1NSwgMCwgOTgzMzkwLCAwLCAwLCA2ODYyOCwgOTgzMzQ5LCA5ODUwLCAxMTg5MzcsIDM2NywgMTQ3MiwgOTE3ODU5LCAKLSAgICA2Njg3LCAxMjc0LCAxOTUwMjIsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAxMTAyMywgCi0gICAgMTE5NTU5LCA0ODMwLCA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCA4MzI5NywgNzg2NjksIDY0MTAxLCAwLCAxMjg0MzQsIAotICAgIDQ4MjQsIDEwNjE0LCAxMTk2NTksIDEyNjk5MywgMTg4OCwgMTk2MCwgNzg2MSwgODM0MTYsIDc4NTI0LCA0MTgzNiwgCi0gICAgNDMwMTIsIDYwNTIsIDYwNjQsIDU0LCA0MzAwOSwgMTIyMTQsIDgzMjYwLCA2MjExLCAxMjAzODYsIDM1OCwgNDE5OTcsIAotICAgIDQxODMzLCAxMTQ0MiwgMTA3NTgsIDY1Nzc0LCAxMTM4MjMsIDEyMDM4NCwgNjQxMTUsIDkyMjIxLCA3MDAxOCwgOTgzNjExLCAKLSAgICA5ODM3MDgsIDExOTA1MywgMCwgMTI3NjUsIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAxMjY1ODAsIDQwMTcsIDEyODI3LCAKLSAgICA1MjQxLCAxMjAzOTIsIDAsIDQxMTE4LCAzOTI0LCA5ODM4OTQsIDExMzY2LCAxMjkwODQsIDAsIDAsIDgzNDAxLCA0MTExNiwgCisgICAgNDU5MywgODI5OTMsIDEyMDU4NCwgMTI4NjY5LCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAxMjc1MDUsIDk4MzU5NCwgCisgICAgNjY3OTUsIDY0NzU5LCAxMzI1LCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIAorICAgIDQzNzg3LCA3ODIwNCwgNDM5MTMsIDMxMTksIDEyNzI1NywgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDc0OTk2LCA3Nzg3NiwgCisgICAgNjM2LCAxMTY5OCwgODM0NzYsIDgyOTYxLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgCisgICAgODg2MywgNzAyMDEsIDExOTk2MCwgMTQ3NywgNDMyODksIDY4NDkyLCA2NzE2NCwgODYxOCwgOTgzNDA0LCA5OTA4LCAKKyAgICA3NDk3MiwgMCwgMTE5MTQ3LCAzNDE0LCAxMjMxMiwgMTIwODMyLCAxMjA3MjcsIDEyMTI2NCwgNjQ3ODEsIDkxMiwgNjM0OSwgCisgICAgNDUzNiwgOTM5NTQsIDc0NTMyLCAxMjY1OTQsIDYyNDQsIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCAxMjgzMTYsIDAsIAorICAgIDExOTUwLCA1MzkyLCA0MjI0OCwgNjUxMjksIDY4NjU2LCA1Mzk3LCAxMjgzMTAsIDEyMDQ2LCAxMjU5OSwgNjc0MDcsIAorICAgIDEyNjU0MiwgNTM5NSwgNzI4NzAsIDUzOTMsIDM1NCwgNjg2MTUsIDc3ODUzLCA3NDM2NiwgMTIxNDA0LCAxMjEyNjYsIAorICAgIDQyMDM5LCAxMTM4MTcsIDEyODY3MSwgNjQxNDIsIDYyNiwgMTI4MjQ0LCA1ODk1LCA5ODM1NzMsIDQzOTEwLCA1NzgwLCAwLCAKKyAgICAxMDIyMCwgMTIxMzM3LCA0MzkwNywgNzExMjEsIDQzMjk3LCA3MDE4OCwgNDMxMSwgNDY0NCwgODgxOCwgNzgxNTgsIAorICAgIDEyODE4NiwgMTI4ODY5LCA3MTQ1LCAzOTE4LCA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCAKKyAgICA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDcwNjY5LCAKKyAgICA2NzY2OSwgOTQwMjAsIDYyNDksIDQyMTE3LCA2ODgyOCwgOTIyMDYsIDEyODAyMywgMTAxMDQ4LCA3NDA0NiwgNDM3NDUsIAorICAgIDQ5MTEsIDk4OCwgNzExODAsIDk4MzMzNywgOTgzNDcwLCA0MzA2MSwgNzA1NCwgNjQxNDcsIDEwMTA0MiwgNjQ5MjAsIAorICAgIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCA3MDg0OSwgMTE5ODEsIDEyMjAyLCAxOTUwODcsIDExMDMyLCA2NzY1NCwgCisgICAgNjA5MywgMTE2MDgsIDk3NSwgNjY0MTUsIDY1ODQzLCAxNzAsIDAsIDY3MjM5LCA0MTY5LCAxMTk5MzgsIDQxODU5LCA2MDU4LCAKKyAgICAxMjA0MDEsIDEzMjAzLCAxMjA0MDIsIDcwNTA3LCAxMjA0MDMsIDY4NjU3LCA5ODE4LCAxMDE3OCwgMTAzMjQsIDQyMTA2LCAKKyAgICA1ODk4LCA3NDU0MCwgNDczOCwgNDE4NTYsIDcwNjIsIDEyMDE0MiwgNDczNywgMTE3NzksIDQ3NDIsIDgzNDI1LCA2ODc1OCwgCisgICAgNjgzNDIsIDQxMzc0LCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDgzNDE4LCA4MzQxOSwgNjc3MzEsIDUzMDAsIAorICAgIDQ3NDEsIDQyMTA4LCAxMjcwNTcsIDY0MTU5LCA0NzM2LCA2NDE0OCwgOTI2MzQsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgCisgICAgMCwgNjY2MjAsIDEyNzUzMywgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzY4LCA3ODc2LCAKKyAgICA2ODEzMiwgNjYyODAsIDM5MjgsIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAxMjA4OTAsIDQ4NDIsIDEyMDUzLCAKKyAgICAxMjgxMjksIDY4NzQ2LCA0ODQxLCAxMjkzMzQsIDQxNzEsIDEyMDA4LCA2MjUxLCAzOTIzLCAxNDkwLCA4MzQxMSwgODM0MTIsIAorICAgIDEyNjUxMiwgNDA5NzIsIDUyNDUsIDcwNzk0LCAxMDExNCwgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCA0MDk3NCwgCisgICAgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCA3Mjg1MSwgNDgyNSwgNjkyNDAsIDEyMTQ0MywgNjg2NTUsIDAsIAorICAgIDEyODUzNywgMCwgMCwgNjg2MjgsIDk4MzM0OSwgOTg1MCwgMTE4OTM3LCAzNjcsIDE0NzIsIDkxNzg1OSwgNjY4NywgMTI3NCwgCisgICAgMTk1MDIyLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgMTEwMjMsIDExOTU1OSwgNDgzMCwgCisgICAgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgODMyOTcsIDc4NjY5LCA2NDEwMSwgMCwgMTI4NDM0LCA0ODI0LCAxMDYxNCwgCisgICAgMTE5NjU5LCAxMjY5OTMsIDE4ODgsIDE5NjAsIDc4NjEsIDgzNDE2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCA2MDUyLCA2MDY0LCAKKyAgICA1NCwgNDMwMDksIDEyMjE0LCA4MzI2MCwgNjIxMSwgMTIwMzg2LCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIDEwNzU4LCAKKyAgICA2NTc3NCwgMTEzODIzLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDk4MzYxMSwgOTgzNzA4LCA5MjQwOCwgCisgICAgMTI4MDgyLCAxMjc2NSwgNjQxMTgsIDEyNjk5OCwgMTI5NjIsIDExOTYzMiwgMTI2NTgwLCA0MDE3LCAxMjgyNywgNTI0MSwgCisgICAgMTIwMzkyLCAxMjc5MDAsIDQxMTE4LCAzOTI0LCA5ODM4OTQsIDExMzY2LCAxMjkwODQsIDAsIDAsIDgzNDAxLCA0MTExNiwgCiAgICAgODM0MDMsIDgzNDA0LCA4MzM5NywgMTEzNjMsIDEyMDU3LCAxMTkxNywgMTU2NywgNzQwMDAsIDQ3MjEsIDgzMzk2LCAKLSAgICA2NjIwMiwgODk1NywgNDEzOSwgNzA1MTIsIDAsIDk4MzA3NCwgMCwgMCwgMTI3NDAsIDEyMTQ3MCwgNDcyMiwgNjgxNiwgCi0gICAgMTI0OTc0LCAxMjc1OSwgNDcyNSwgNjcwOTksIDQ3MjYsIDgzNDY3LCA4MzQ2OCwgOTgzNjIyLCA3MDAyOSwgODM0NjMsIAotICAgIDc0OTEzLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDY3NjkwLCA4MDUyLCA0NzYsIDAsIDc0ODkzLCAxMjgyOTQsIDY0MjEyLCAKLSAgICA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAxMjc1NTMsIDEyNTEyMSwgCi0gICAgNDE4NDMsIDg3MjAsIDM5MDgsIDE0NTIsIDEzMTExLCA5ODM0MjEsIDY0MDY3LCA5MjI4NywgODU1MiwgNjQxMTMsIDQxODQ1LCAKLSAgICAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIDExOTA4NSwgODMzMDIsIAotICAgIDkxNzYxMCwgNzkzNSwgMjQyMCwgMCwgMTExNCwgNzgxMjAsIDY3NTg1LCA3MDEwNCwgNzA0MzIsIDgzNDQ3LCA3NDkyMCwgCi0gICAgMzkzOCwgMTIwMDU3LCA2NTQxNywgNjQ3MTcsIDEyMDA2MCwgNzE5MjAsIDY1NDE1LCA2Njg4NCwgNjI5MiwgNjUzMDMsIAotICAgIDc5NTUsIDY0NTIsIDQ3MTMsIDEyODE5NiwgNjYyNDksIDkxNzg4NSwgMTk0NzY2LCAxMjkwNzMsIDY1MTUyLCA3MTksIAotICAgIDEyMDA0NCwgNzg2MjMsIDEyMDA0MiwgNjcxMywgNDUzMiwgNjU0MTIsIDY5ODIyLCAxMDg2OCwgNDcxNywgMjM0OSwgNTkwMiwgCi0gICAgNjY0NTAsIDQ3MTIsIDc1MDU1LCA5MTc4OTksIDY1NDAwLCA2NTQxNiwgODE1NSwgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgCi0gICAgMCwgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAxOTQ3ODksIDAsIDExMzc1NiwgMCwgNjU0MTQsIDY0NTQsIDEyMjksIAotICAgIDgzNDU3LCA2NjQzNywgNjYwMjUsIDc4Njk5LCA4MzQ1MiwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgMTI5MTM3LCAKLSAgICA3ODY5NCwgMTIxMTczLCAxMjg3NzcsIDkxNzg1OCwgNjU0MDUsIDY4MTU5LCAxMjg5MywgNzg2MTcsIDUzNjUsIDQ1NDUsIAotICAgIDg5MDEsIDkyNDIxLCAxMTk1NTUsIDQ4MTMsIDEyODI2MiwgMTk0NzI5LCA1OTI1LCA0ODA4LCA2NDMzMCwgMTI4NDAwLCAKLSAgICA2NTQ3NSwgODM0MzIsIDY4MjQ0LCA0ODE0LCA4MzQyNywgNDgxMCwgODM0MjksIDgzNDMwLCA2NDkyOCwgMTA1NDMsIAotICAgIDcxMjQ5LCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgODM0NDIsIDY0NTYsIDczODIwLCA4MzQ0NSwgNjY5MSwgCi0gICAgNDIxOTMsIDY2Mjg0LCA4MzQ0MSwgMCwgNjgzMzcsIDAsIDQzODU4LCA0MzgzMiwgMTE4ODIwLCA5NzUxLCA2NTQwNywgCi0gICAgMTI4MDg1LCAxMTc3MCwgMzkxOSwgMTIwNzI0LCAwLCA2NTA2MSwgOTgzOTQ1LCA5MTc4OTQsIDEyOTE0MiwgMTIyMzUsIAotICAgIDEyODU3MiwgOTI3MDEsIDEyMTA4NywgNjQwOTIsIDY4NzM5LCA2NDA4MCwgMTI5MDYzLCA2NDA5MCwgOTgzNTg2LCA2OTkxMywgCi0gICAgMTAxNjIsIDEwMzEwLCAxMjEyMTAsIDg0NTQsIDEyMTM4NywgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCAKLSAgICA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCA3ODExNiwgMCwgMTIxMjk1LCAxOTUwMjQsIDkyMTkzLCA4ODk2LCAwLCAKLSAgICAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDc0OTk3LCAxMjczMjUsIDk4MzQzNiwgMTE5MjAyLCAxMTkyMDMsIDEyNTI2LCAKLSAgICA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAxMjg0NTIsIDQ1MjksIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIAotICAgIDExOTE5OSwgNjk2OTIsIDEyOTEyNCwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMTI4OTc0LCA3ODc2MSwgMjI5MSwgMTI5MDIsIAotICAgIDAsIDQyODkxLCA2NjMyNywgNzA1MDIsIDkxNzg1NywgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgMTI4NjI4LCA0MTkzLCAKLSAgICA2NjgyMywgNDI0MSwgMTI5MTk1LCA3OTk4LCA4MzI3NiwgMCwgMTI3MDA5LCAxMjY2NDAsIDIzMTYsIDExODgyMSwgMCwgCi0gICAgOTgzOTM0LCAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMTI4MTQ4LCA1MzczLCAxMjg3OTgsIDcwMzcwLCAzNzYyLCAKLSAgICAxMDAxNSwgMTIwNjcyLCAxMTkyMzIsIDEyNTEwOSwgNDE1OTAsIDAsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCA5MTc4OTgsIAotICAgIDQyMDM3LCAwLCAzOTA2LCAxMjM0OSwgNzQ3OTMsIDgzMjYsIDEyNzMzMywgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIAotICAgIDM3NzksIDk4MzE5NCwgNDM2MTMsIDcwMTMyLCAwLCA4MzI4OCwgNzgzMzUsIDgzMjg5LCAwLCAyODAsIDc0NTU4LCAKLSAgICAxMjEzNTMsIDY3Mzk2LCAxMzA3MiwgMTg5NCwgODMyOTEsIDY3NzM1LCA2NTQ3OCwgNDMzMTAsIDcyMzEsIDAsIDExNzczLCAKLSAgICAwLCAxMTkxNjUsIDExMTQ0LCA5MTc3NzgsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgCi0gICAgNzE4NzcsIDEyODY2OSwgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCA5ODMwNjYsIAotICAgIDUzNjcsIDg3NTYsIDEyNzE0MywgMTE5MTgzLCA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgNTIxOCwgCi0gICAgNjk2ODUsIDk4Mzc1NiwgMCwgMTEzNzk0LCA0NDAyMCwgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIAotICAgIDIyOTAsIDcxMDU3LCAxMTk2MjQsIDE0NjUsIDEwODUwLCAzOTQzLCAwLCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMTE5MzMzLCAKLSAgICA2NzE0OCwgNTM1MiwgMTEzNzUzLCAwLCA4ODM5LCA0MTMxNCwgNzM4NCwgNzc4NSwgNDEyMDQsIDEyNzMyMiwgNDEyMDksIAotICAgIDY5NjM3LCA5MjI0MSwgNDM2MDcsIDcxMjU0LCAwLCA1NDIwLCAzODk3LCAxMDEzNCwgMTIwMzgxLCA3NDQxNywgNDAxOCwgCi0gICAgNzE1MCwgNjgxMjcsIDcxNDI1LCAwLCAxMjE0MjcsIDEyNzg2NCwgMTI3NTI2LCAyNTYxLCA2ODYyMSwgMzU0MiwgNzE0OCwgCisgICAgNjYyMDIsIDg5NTcsIDQxMzksIDcwNTEyLCAxMjcxMTUsIDk4MzA3NCwgMCwgMTIyOTA3LCAxMjc0MCwgMTIxNDcwLCA0NzIyLCAKKyAgICA2ODE2LCAxMjQ5NzQsIDEyNzU5LCA0NzI1LCA2NzA5OSwgNDcyNiwgODM0NjcsIDgzNDY4LCA5ODM2MjIsIDcwMDI5LCAKKyAgICA4MzQ2MywgNzQ5MTMsIDEyNzU1LCAxMjc2MiwgNDAxNSwgNjc2OTAsIDgwNTIsIDQ3NiwgMCwgNzQ4OTMsIDEyODI5NCwgCisgICAgNjQyMTIsIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDQ0MDAyLCA2NDIxNCwgMTY1NiwgNDE4MzEsIDEyNzU1MywgCisgICAgMTI1MTIxLCA0MTg0MywgODcyMCwgMzkwOCwgMTQ1MiwgMTMxMTEsIDE5NTA5NiwgNjQwNjcsIDkyMjg3LCA4NTUyLCAKKyAgICA2NDExMywgNDE4NDUsIDM4NDksIDc4NzMyLCA2NjIzMiwgOTc3OCwgMTIwMDY2LCA1ODkxLCA3MDY0LCA1NSwgOTk0OCwgCisgICAgMTE5MDg1LCA4MzMwMiwgOTE3NjEwLCA3OTM1LCAyNDIwLCA3Mzg2MSwgMTExNCwgNzgxMjAsIDY3NTg1LCA3MDEwNCwgCisgICAgNzA0MzIsIDgzNDQ3LCA3NDkyMCwgMzkzOCwgMTIwMDU3LCA2NTQxNywgNjQ3MTcsIDEyMDA2MCwgNzE5MjAsIDY1NDE1LCAKKyAgICA2Njg4NCwgNjI5MiwgNjUzMDMsIDc5NTUsIDY0NTIsIDQ3MTMsIDEyODE5NiwgNjYyNDksIDkxNzg4NSwgMTk0NzY2LCAKKyAgICAxMjkwNzMsIDY1MTUyLCA3MTksIDEyMDA0NCwgNzg2MjMsIDEyMDA0MiwgNjcxMywgNDUzMiwgNjU0MTIsIDY5ODIyLCAKKyAgICAxMDg2OCwgNDcxNywgMjM0OSwgNTkwMiwgNjY0NTAsIDQ3MTIsIDc1MDU1LCA5MTc4OTksIDY1NDAwLCA2NTQxNiwgODE1NSwgCisgICAgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgOTgzMjkzLCA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDE5NDc4OSwgCisgICAgMTIxMjI2LCAxMTM3NTYsIDk4MzQ1OCwgNjU0MTQsIDY0NTQsIDEyMjksIDgzNDU3LCA2NjQzNywgNjYwMjUsIDc4Njk5LCAKKyAgICA4MzQ1MiwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgMTI5MTM3LCA3ODY5NCwgMTIxMTczLCAxMjg3NzcsIDkxNzg1OCwgCisgICAgNjU0MDUsIDY4MTU5LCAxMjg5MywgNzg2MTcsIDUzNjUsIDQ1NDUsIDg5MDEsIDkyNDIxLCAxMTk1NTUsIDQ4MTMsIAorICAgIDEyODI2MiwgMTk0NzI5LCA1OTI1LCA0ODA4LCA2NDMzMCwgMTI4NDAwLCA2NTQ3NSwgODM0MzIsIDY4MjQ0LCA0ODE0LCAKKyAgICA4MzQyNywgNDgxMCwgODM0MjksIDgzNDMwLCA2NDkyOCwgMTA1NDMsIDcxMjQ5LCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgCisgICAgOTIzMjksIDgzNDQyLCA2NDU2LCA3MzgyMCwgODM0NDUsIDY2OTEsIDQyMTkzLCA2NjI4NCwgODM0NDEsIDAsIDY4MzM3LCAwLCAKKyAgICA0Mzg1OCwgNDM4MzIsIDExODgyMCwgOTc1MSwgNjU0MDcsIDEyODA4NSwgMTE3NzAsIDM5MTksIDEyMDcyNCwgOTgzNTk2LCAKKyAgICA2NTA2MSwgNzgxMTUsIDkxNzg5NCwgMTI5MTQyLCAxMjIzNSwgMTI4NTcyLCA5MjcwMSwgMTIxMDg3LCA2NDA5MiwgNjg3MzksIAorICAgIDY0MDgwLCAxMjkwNjMsIDY0MDkwLCAxMjUyNjcsIDY5OTEzLCAxMDE2MiwgMTAzMTAsIDEyMTIxMCwgODQ1NCwgMTIxMzg3LCAKKyAgICA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIDAsIDQ3ODAsIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIDc4MTE2LCAKKyAgICAwLCAxMjEyOTUsIDE5NTAyNCwgOTIxOTMsIDg4OTYsIDAsIDM3NSwgNjk3NiwgNjY1ODIsIDExOTAwNSwgNzQ5OTcsIAorICAgIDEyNzMyNSwgOTgzNDM2LCAxMTM3NTcsIDExOTIwMywgMTI1MjYsIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIAorICAgIDEyODQ1MiwgNDUyOSwgMTE5MjAwLCAxMTkyMDEsIDExOTE5OCwgMTE5MTk5LCA2OTY5MiwgMTI5MTI0LCA2OTY5OCwgCisgICAgMTMxNTAsIDY0NDkyLCAxMjg5NzQsIDc4NzYxLCAyMjkxLCAxMjkwMiwgMTI4MTQwLCA0Mjg5MSwgNjYzMjcsIDcwNTAyLCAKKyAgICAxMjk0MjUsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIDEwMDU3NiwgNDE5MywgNjY4MjMsIDQyNDEsIDEyOTE5NSwgCisgICAgNzk5OCwgODMyNzYsIDAsIDEyNzAwOSwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIDk4MzkzNCwgMTI3NDc4LCA2NDI5NywgCisgICAgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMTI4MTQ4LCA1MzczLCAxMjg3OTgsIDcwMzcwLCAzNzYyLCAxMDAxNSwgMTIwNjcyLCAKKyAgICAxMTkyMzIsIDEyNTEwOSwgNDE1OTAsIDk4Mzg2NSwgNzAwOTgsIDM3ODAsIDc0ODUsIDU3NzksIDkxNzg5OCwgNDIwMzcsIDAsIAorICAgIDM5MDYsIDEyMzQ5LCA3NDc5MywgODMyNiwgMTI3MzMzLCA2NTQ5OCwgMzc2MywgNjk4MywgNTYxOCwgMCwgMzc3OSwgCisgICAgOTgzMTk0LCA0MzYxMywgNzAxMzIsIDAsIDgzMjg4LCA3ODMzNSwgODMyODksIDEyOTQxOSwgMjgwLCA3NDU1OCwgMTIxMzUzLCAKKyAgICA2NzM5NiwgMTMwNzIsIDE4OTQsIDgzMjkxLCA2NzczNSwgNjU0NzgsIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgMTIxMzE0LCAKKyAgICAxMTkxNjUsIDExMTQ0LCA5MTc3NzgsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgNzE4NzcsIAorICAgIDcyODg2LCA0NDcwLCAxMTgyNiwgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDExOTk0OSwgNTM2NywgODc1NiwgCisgICAgMTI3MTQzLCAxMTkxODMsIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCA1MjE4LCA2OTY4NSwgMTk0OTE4LCAwLCAKKyAgICAxMDA3ODAsIDQ0MDIwLCA2ODA4LCA0MTMxOSwgMTMwMCwgMTA2NTAsIDQxNjkyLCA2NDUwNSwgMjI5MCwgNzEwNTcsIAorICAgIDExOTYyNCwgMTQ2NSwgMTA4NTAsIDM5NDMsIDEyNzUzNywgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDExOTMzMywgNjcxNDgsIAorICAgIDUzNTIsIDExMzc1MywgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIDQxMjA0LCAxMjczMjIsIDQxMjA5LCA2OTYzNywgCisgICAgOTIyNDEsIDQzNjA3LCA3MTI1NCwgODM0NDQsIDU0MjAsIDM4OTcsIDEwMTM0LCAxMjAzODEsIDc0NDE3LCA0MDE4LCA3MTUwLCAKKyAgICA2ODEyNywgNzE0MjUsIDcwNjg4LCAxMjE0MjcsIDEyNzg2NCwgMTI3NTI2LCAyNTYxLCA2ODYyMSwgMzU0MiwgNzE0OCwgCiAgICAgMTIwNzYsIDc5NTEsIDY4MTUyLCAxMTg4NTcsIDUzMDMsIDYyNzYsIDE3MDYsIDEyMDc1MCwgNzg3NTEsIDcxNDYsIAotICAgIDk4MzY4MiwgNjUxNTAsIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDAsIDEwNTA2LCAKLSAgICA5ODM0MzcsIDY5NjQxLCAxMDc1MywgMTA4MzAsIDExOTMzOSwgNjE1LCA2NDQ5MCwgNzU3NCwgNzQwODIsIDc3OTIyLCAwLCAKLSAgICAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIDAsIDEyMTIzMSwgNjc5OTYsIDIwMjAsIDEyODc5MCwgNDAyMiwgCi0gICAgMTI4NzgzLCAxMjA3MDEsIDc3OTIzLCAxMjY1OTMsIDQxNjkxLCAwLCA3NTA2MCwgNzQzMjksIDAsIDY0NjIyLCA5MDcwLCAwLCAKLSAgICA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgOTgzODEzLCA3MDAwLCAzOTA0LCA5ODM2MjgsIAotICAgIDczNzM3LCAxMjUxMDUsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyNzM2MCwgNzM5NywgMTE4ODA3LCAKLSAgICA5MTc4OTEsIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMCwgMzc3NywgNjg0NTgsIDExMzcyNSwgOTYzNiwgMCwgMTA3MzgsIAotICAgIDY5NjM0LCA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCA5ODM3MjMsIDY0NDA5LCAzNTk2LCAKLSAgICAxMjkwNDQsIDEyODA5MCwgOTc2MywgMTIwMjgwLCA3NDYwOSwgMTIzNDcsIDEyNCwgMTI5ODEsIDQxMTI3LCAyMDkyLCAKLSAgICA5MjY4NywgMCwgMTI3NTU1LCAxOTQ2MzIsIDEwODIwLCA0Mzk4NywgMCwgMTI4OTA3LCAxNzY5LCA0MTcxNSwgMjQ2MywgCi0gICAgNzEyMTQsIDgzMDcwLCAxMjc3MCwgNzEyMjIsIDE1MzgsIDkyNjE3LCA0MzEyNCwgMTk0NjE0LCAxOTUwNTgsIDc3OTUsIAotICAgIDEyMDMwMCwgMTI5MDUzLCA0ODI4LCAxMjU4LCAxMjc4MDIsIDIwMDYsIDAsIDEyMTEzMCwgOTQ5OCwgMTI3MDMyLCAKLSAgICAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIDEyMDI4NywgMTIwMjg2LCAyNjUwLCAKLSAgICA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCA1NTIyOCwgMTE3NzQsIDQxMDE2LCAKLSAgICA5ODMyNjIsIDY4Njc1LCAxMjgwNTQsIDE1MTEsIDkzMjQsIDc4MjExLCAxMDUxOSwgNjYzMzEsIDM0NTQsIDE5OTMwLCAwLCAKLSAgICA0MTAxOSwgMTI3OTQ0LCAwLCA2NTI5MiwgNjgyMiwgMTI4NjIsIDAsIDAsIDQyMTQzLCA0MTgyOCwgNzgyMDcsIDY1NTMxLCAKLSAgICA3MDg2NCwgMTE4ODc5LCA1NTIyMywgMCwgMTI4MDcxLCA0MTgyNiwgODg2NSwgNjQwMiwgMTEzODI3LCAxMzI3OSwgNzkxNywgCi0gICAgNzQ3NTUsIDkxNzk0OCwgNzczMywgOTgzNDA4LCA0OTk4LCA2ODQ5MywgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAxOTQ3OTAsIAotICAgIDE5NTA1NiwgNzAwNjEsIDQwMTMsIDEyODcxOCwgMTA4ODEsIDAsIDk4MzE2MywgMCwgNzQ3ODgsIDIwMTQsIDI0MzIsIAotICAgIDcxOTAxLCA5NzY1LCAxOTUwNTIsIDAsIDkxNzg1NCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIDAsIAotICAgIDAsIDExOTMxNSwgMjAxNSwgMTIxMDg4LCA5Mjc2NSwgNzE4NDAsIDY2MzE4LCA0MzIzMywgOTE3OTkyLCA0MjUxNywgCi0gICAgNjgwNjAsIDAsIDAsIDEyNjk4LCA4MDk0LCAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgNDM0OTcsIDEyNjU2LCA2NjMzNSwgCi0gICAgMTE5MzUzLCA2NzI3OSwgMTY2NSwgNzE4NTMsIDQ4MzMsIDkxNzk4NSwgNzExODgsIDEyNzM2NywgMTIxNDY0LCAxODksIAotICAgIDEyNjExLCAwLCA5ODM0MjAsIDI4NTksIDQ4MzgsIDk4MzkzMCwgNDgzNCwgNjUwNzgsIDAsIDkyOTkxLCA0ODM3LCA2NzQxMywgCi0gICAgNzcwLCA5MjY3MSwgODExLCA3MDA2MiwgNDEwNDIsIDgzMDczLCA0MTMxOCwgNjQ0MjcsIDczOTk5LCA2NzY5MywgNzg4NDgsIAotICAgIDM4OTUsIDkyNjE1LCA3NDM0MSwgMzk3NiwgMTI4NDY2LCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDc4NDg4LCAwLCAKLSAgICA0MzQ5NiwgMCwgMTIxMDE1LCA0MzY4NiwgNzg4NDYsIDQxODc3LCA5ODM3NDMsIDI4NzEsIDY0NjE0LCA2ODg0MywgOTk5LCAKLSAgICA5ODM4NDQsIDYzNDUsIDQxODc2LCAyNjYzLCAyMDE3LCAxMjEyMzQsIDY3ODI0LCAxMTA0MCwgMTAxNTAsIDEyMDY3OCwgCi0gICAgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgCi0gICAgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAxMjU2NiwgMTI1NjksIDEyNTU0LCA4MzM0NCwgMTA4MTIsIDc4ODUxLCAwLCAKLSAgICA4MzM0MiwgMzA3OCwgMTQwMiwgMCwgODMzNDgsIDAsIDEyNTA3MiwgMTE5MjQ4LCAzOTQsIDMwODgsIDgzMzQ3LCA5MjE3MiwgCisgICAgOTgzNjgyLCA2NTE1MCwgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMTI3Mjg3LCAxMDUwNiwgCisgICAgOTgzNDM3LCA2OTY0MSwgMTA3NTMsIDEwODMwLCAxMTkzMzksIDYxNSwgNjQ0OTAsIDc1NzQsIDc0MDgyLCA3NzkyMiwgCisgICAgOTgzMjk4LCAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIDEyODMwOSwgMTIxMjMxLCA2Nzk5NiwgMjAyMCwgMTI4NzkwLCAKKyAgICA0MDIyLCAxMjg3ODMsIDEwMDc0OCwgNzc5MjMsIDEyNjU5MywgNDE2OTEsIDAsIDc1MDYwLCA3NDMyOSwgMCwgNjQ2MjIsIAorICAgIDkwNzAsIDk4Mzg3NiwgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDEyNTE5MSwgNzAwMCwgMzkwNCwgCisgICAgOTgzNjI4LCA3MzczNywgMTI1MTA1LCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjA1MTgsIDczOTcsIAorICAgIDExODgwNywgOTE3ODkxLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDEyODUwOSwgMzc3NywgNjg0NTgsIDExMzcyNSwgCisgICAgOTYzNiwgMCwgMTA3MzgsIDY5NjM0LCA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCAKKyAgICA5ODM3MjMsIDY0NDA5LCAzNTk2LCAxMjkwNDQsIDEyMDg5NSwgOTc2MywgMTIwMjgwLCA3NDYwOSwgMTIzNDcsIDEyNCwgCisgICAgMTI5ODEsIDQxMTI3LCAyMDkyLCA5MjY4NywgMCwgMTI3NTU1LCAxOTQ2MzIsIDEwODIwLCA0Mzk4NywgMCwgMTI4OTA3LCAKKyAgICAxNzY5LCA0MTcxNSwgMjQ2MywgNzEyMTQsIDgzMDcwLCAxMjc3MCwgNzEyMjIsIDE1MzgsIDkyNjE3LCA0MzEyNCwgCisgICAgMTk0NjE0LCAxOTQ1ODUsIDc3OTUsIDEyMDMwMCwgMTI5MDUzLCA0ODI4LCAxMjU4LCAxMjc4MDIsIDIwMDYsIDEwMTAzNCwgCisgICAgMTIxMTMwLCA5NDk4LCAxMDA0OTQsIDEyNzAzMywgMTIwMjg5LCAxMjAyODgsIDM5MzksIDEyMDI5MCwgODg0NiwgODk0MywgCisgICAgMTIwMjg3LCAxMjAyODYsIDI2NTAsIDQ0OTEsIDE5NjEsIDQyNjAyLCAxMTUyNSwgMTIwMjkyLCAxOTU5LCAxMjAyOTQsIAorICAgIDU1MjI4LCAxMTc3NCwgNDEwMTYsIDkxNzk0NCwgNjg2NzUsIDEyODA1NCwgMTUxMSwgOTMyNCwgNzgyMTEsIDEwNTE5LCAKKyAgICA2NjMzMSwgMzQ1NCwgMTk5MzAsIDc4MTYzLCA0MTAxOSwgMTI2NTQ2LCA5ODM2NzEsIDY1MjkyLCA2ODIyLCAxMjg2MiwgCisgICAgOTgzNzA3LCAwLCA0MjE0MywgNDE4MjgsIDc4MjA3LCA2NTUzMSwgNzA4NjQsIDExODg3OSwgNTUyMjMsIDAsIDEyODA3MSwgCisgICAgNDE4MjYsIDg4NjUsIDY0MDIsIDExMzgyNywgMTMyNzksIDc5MTcsIDc0NzU1LCA5MTc5NDgsIDc3MzMsIDk4MzQwOCwgCisgICAgNDk5OCwgNjg0OTMsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMTI3OTIzLCA4MzA3NSwgNzAwNjEsIDQwMTMsIDEyODcxOCwgCisgICAgMTA4ODEsIDAsIDEyOTA0NSwgMTI1MjY2LCA3NDc4OCwgMjAxNCwgMjQzMiwgNzE5MDEsIDk3NjUsIDE5NTA1MiwgMCwgCisgICAgOTE3ODU0LCAxOTUwNTksIDc4MzU3LCA2NTI4MSwgMTI3ODI1LCAxMDk0OSwgMCwgMCwgMTE5MzE1LCAyMDE1LCAxMDA4NzEsIAorICAgIDkyNzY1LCA3MTg0MCwgNjYzMTgsIDQzMjMzLCA5MTc5OTIsIDQyNTE3LCA2ODA2MCwgOTgzNjE0LCA5ODM5MDQsIDEyNjk4LCAKKyAgICA4MDk0LCAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgNDM0OTcsIDEyNjU2LCA2NjMzNSwgMTE5MzUzLCA2NzI3OSwgMTY2NSwgCisgICAgNzE4NTMsIDQ4MzMsIDkxNzk4NSwgNzExODgsIDEyNzM2NywgMTIxNDY0LCAxODksIDEyNjExLCAwLCAxMjgwOTQsIDI4NTksIAorICAgIDQ4MzgsIDk4MzkzMCwgNDgzNCwgNjUwNzgsIDAsIDkyOTkxLCA0ODM3LCA2NzQxMywgNzcwLCA5MjY3MSwgODExLCA3MDA2MiwgCisgICAgNDEwNDIsIDgzMDczLCA0MTMxOCwgNjQ0MjcsIDczOTk5LCA2NzY5MywgNzg4NDgsIDM4OTUsIDkyNjE1LCA3NDM0MSwgCisgICAgMzk3NiwgMTI4NDY2LCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDc4NDg4LCAwLCA0MzQ5NiwgOTgzMDY5LCAxMjEwMTUsIAorICAgIDQzNjg2LCA3ODg0NiwgNDE4NzcsIDk4Mzc0MywgMjg3MSwgNjQ2MTQsIDY4ODQzLCA5OTksIDEyNTE5OCwgNjM0NSwgCisgICAgNDE4NzYsIDI2NjMsIDIwMTcsIDEyMTIzNCwgNjc4MjQsIDExMDQwLCAxMDE1MCwgMTIwNjc4LCA2NDMwOCwgMTUyMiwgNTk3LCAKKyAgICA0Nzc1LCAxMjU1NSwgMTI1NzEsIDEyNTUwLCAxMjU4MywgMTI1NjAsIDIwMTksIDEyNTU2LCAxMjU4NCwgMzA5MiwgCisgICAgOTgzODMyLCAxMjU2MiwgNDc4MywgMTI1NjYsIDEyNTY5LCAxMjU1NCwgODMzNDQsIDEwODEyLCA3ODg1MSwgMTI2NTc0LCAKKyAgICA4MzM0MiwgMzA3OCwgMTQwMiwgMCwgODMzNDgsIDAsIDEyNTA3MiwgNzQzNzEsIDM5NCwgMzA4OCwgODMzNDcsIDkyMTcyLCAKICAgICA5MTc5NjUsIDM5OTEsIDY0MzkxLCA4MzM0MSwgMTI4NTI0LCA0MjQsIDY2MzI4LCAxOTk5LCA2OTY1OSwgNzM5MTQsIDAsIAotICAgIDEyNzUzNCwgNjY5MDMsIDEyODQ2OCwgNDIyMzEsIDIyMDksIDEyNTEwMywgMCwgMCwgNDE4NDAsIDY2OTEzLCAyMzc3LCAKKyAgICAxMjUxMjgsIDY2OTAzLCAxMjg0NjgsIDQyMjMxLCAyMjA5LCAxMjUxMDMsIDAsIDAsIDQxODQwLCA2NjkxMywgMjM3NywgCiAgICAgMTI5OCwgNjQwMTEsIDEyNTcyLCAxMTMxOCwgMTI1NTcsIDEyNTU5LCAxMjU3MCwgNzQ3OSwgMTAwMywgMjM3MywgOTQ0NiwgCi0gICAgNzQ4MSwgOTQ0OCwgNDgsIDk4MzA4NCwgOTQ4MCwgNDgxLCAwLCA5NDM4LCA5NDM5LCA5NDQwLCA5NDQxLCA4NDY1LCA5NDQzLCAKLSAgICA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCA5NDM0LCA5NDM1LCAzOTg0LCA5NDM3LCAxMjkxMzUsIAorICAgIDc0ODEsIDk0NDgsIDQ4LCA3ODAyOSwgOTQ4MCwgNDgxLCAxMDA2MTUsIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIAorICAgIDk0NDMsIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDEyOTEzNSwgCiAgICAgOTI5MzQsIDk0MjQsIDk0MjUsIDk0MjYsIDk0MjcsIDk0MjgsIDk0MjksIDY0NzU4LCAyMzYyLCA5NjU1LCAxMjgwNTAsIAogICAgIDIwMDQsIDkwOTYsIDk3ODIsIDcwODQyLCA5MTcyLCA4MzA3MSwgMTk5NjUsIDAsIDU5NTUsIDY3NjY2LCAxMTA4LCAwLCAKLSAgICA3NDc3MywgNzgyNzEsIDEyODkwOSwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMCwgOTIxNjUsIDEzOTIsIAotICAgIDk4MzgxNywgMTIwODM4LCAxMjczNjQsIDEwNjA2LCA4MDY1LCAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMTI3MjM4LCAKLSAgICAxMjg3MzksIDY0NTI0LCA5MjQxOCwgNDAxOSwgMCwgMTI1MDgyLCA0MzI4MCwgODIxOSwgNjg0MDIsIDE4MTIsIDExOTk2MywgCi0gICAgMTIxMDY3LCAxMjg0MzAsIDEyMDkzOSwgNDI0MTAsIDc0NDQ4LCAxMTkxMzIsIDYwNTQsIDEwNjk3LCAzMTY5LCA0MjI5NywgCi0gICAgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAxMjg4NDgsIDEyODEzOSwgOTgzMjYzLCA2ODY3OCwgNzQ5ODYsIDk4Mzc5MCwgCi0gICAgMTA0OSwgNDM1MTcsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgNjQ3NjAsIAotICAgIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAzNiwgMCwgCi0gICAgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgMTIxMzg5LCAyMDA5LCAwLCAxMjc5ODUsIDc0MjQ1LCAKLSAgICA5NjQwLCAxMTk5NTEsIDAsIDY5ODk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCA5ODMwNTAsIDY0MzYxLCAxMjkwODgsIAotICAgIDE4MiwgNjY0MTQsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgMzY2LCAwLCA5ODkyLCA1OTY5LCAxMTc1NCwgCi0gICAgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCAKLSAgICA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMTI0OTc3LCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgNjEyOCwgCi0gICAgMTEzODExLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAxMjUwNTgsIDY1NTA2LCA5ODM5MTIsIDY1ODYxLCA3NDA4MywgNjY4NzIsIAotICAgIDk5MzIsIDQzNTE2LCA4MzA2MywgODMwNjUsIDgzMDY0LCA5ODE3LCAwLCA3MTIzNCwgMCwgMTIxMTcsIDY2NTg2LCA0MTgzLCAKLSAgICAxMDU0MCwgNjYyNTAsIDkwNjMsIDEyNzA0NSwgMTI4NTQ3LCAxMTk5NTQsIDExMzY4NSwgMTI4OTcsIDM3OTIsIDIwMTEsIAotICAgIDEyMTQxOCwgNjA2NSwgNDMxNjAsIDEyODM3OSwgMTIwNTk1LCA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCA0MTgxOCwgCi0gICAgNDExODcsIDExNjU5LCA3OTIyLCAxMjYxNCwgMjAwNSwgODUyMywgNzgwMDIsIDEyMDAzNSwgNzUxMywgMTg2MywgNDcxMCwgCi0gICAgMCwgNTk1NiwgNzYyMSwgNzgwMDUsIDkyNjI0LCA0NzA1LCA3MTYsIDc0OTE4LCAwLCA0NzA0LCAxMjAwNDAsIDkzMDI0LCAKLSAgICA0MjI0MSwgMTYxLCA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCA3NDA3NywgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgCi0gICAgMTE5MDY1LCA0MzI5MywgNjg3NzEsIDk4MzE5MCwgMTE5MTY0LCAxMjAzMjgsIDgzMzE5LCAxMDE4NywgMTcwMCwgMTE5MjIzLCAKLSAgICA4MzMxNSwgMCwgNzQ5ODAsIDQwMDQsIDkxNzU5NSwgMTA5NjgsIDQzMjk2LCAxMjgzMzEsIDg1MDYsIDExMzc0NCwgCi0gICAgMTk0ODEyLCAxMjY5OTYsIDEwMDUsIDkzNywgNzgyMTYsIDQ3MzQsIDI4NzAsIDEyMTM1MCwgNzgyMTgsIDk4MzEwOSwgCi0gICAgNzQ2MywgNDcyOSwgMCwgMjM1LCAxMzg0LCA0NzI4LCA3NDg4NywgNzA0OTQsIDkyNDkwLCA3NDQ0OSwgODEwOSwgNDMxMDUsIAotICAgIDEyODYyMywgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCA5MjU0OCwgMCwgNDI1MjcsIDEyOTExLCAKLSAgICA0MzQyNywgMTM4MywgODU2NSwgMjQ2OSwgMTIwMDI0LCA2NjkwLCA2MTU2LCA2ODExNywgNDM0MzksIDc5OTMsIDQyODgsIAotICAgIDEyMDQxNiwgMjY3NCwgMTMyMzgsIDExOTIyLCAwLCA5MjUyOSwgMzUxMCwgMTMyMzQsIDk4MzgzMiwgMTIwNDA3LCA1NjA1LCAKKyAgICA3NDc3MywgNzgyNzEsIDEyODkwOSwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMTI5MzY1LCA4MzA2MiwgCisgICAgMTM5MiwgMTI3NzgyLCAxMjA2OTYsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIDcwNzEwLCAxMDM1MywgMTA0MTcsIDEwMDYxMywgCisgICAgMTI1MDIzLCA2NDUyNCwgNzA3MTEsIDQwMTksIDEwMDk1MCwgMTI1MDgyLCA0MzI4MCwgODIxOSwgNjg0MDIsIDE4MTIsIAorICAgIDEwMDk0OSwgMTIxMDY3LCAxMDA5NDQsIDEyMDkzOSwgNDI0MTAsIDc0NDQ4LCAxMDEwODUsIDYwNTQsIDEwNjk3LCAzMTY5LCAKKyAgICA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAxMjgyMzEsIDEyODEzOSwgOTgzMjYzLCA2ODY3OCwgNzQ5ODYsIAorICAgIDk4Mzc5MCwgMTA0OSwgNDM1MTcsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgCisgICAgNjQ3NjAsIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAKKyAgICAzNiwgMCwgNTE1MywgNDE4MDUsIDExOTE1MywgNzM3MzUsIDc2MywgOTIxMSwgNjQ5MTAsIDEyMTM4OSwgMjAwOSwgMCwgCisgICAgMTI3OTg1LCA3NDI0NSwgOTY0MCwgMTE5OTUxLCAxMjczMTYsIDY5ODk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCAKKyAgICA5ODMwNTAsIDY0MzYxLCAxMjkwODgsIDE4MiwgNjY0MTQsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgCisgICAgMzY2LCAwLCA5ODkyLCA1OTY5LCAxMTc1NCwgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAKKyAgICAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMTI0OTc3LCA0MjI1MSwgCisgICAgOTgzOTYzLCA0MjUzNCwgNjUxNzksIDExMjg3LCA2MTI4LCAxMTM4MTEsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDEwMTA5MiwgCisgICAgNjU1MDYsIDExOTI0OCwgNjU4NjEsIDc0MDgzLCA2Njg3MiwgOTkzMiwgNDM1MTYsIDgzMDYzLCA4MzA2NSwgODMwNjQsIAorICAgIDk4MTcsIDEwMDkzNywgNzEyMzQsIDcwNzQ5LCAxMjExNywgNjY1ODYsIDQxODMsIDEwNTQwLCA2NjI1MCwgOTA2MywgCisgICAgMTI3MDQ1LCAxMjg1NDcsIDExOTk1NCwgMTEzNjg1LCAxMjg5NywgMzc5MiwgMjAxMSwgMTIxNDE4LCA2MDY1LCA0MzE2MCwgCisgICAgMTI4Mzc5LCAxMjA1OTUsIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIDQxODE4LCA0MTE4NywgMTE2NTksIDc5MjIsIAorICAgIDEyNjE0LCAyMDA1LCA4NTIzLCA3Mjg1MiwgMTIwMDM1LCA3NTEzLCAxODYzLCA0NzEwLCAxMjAwMzAsIDU5NTYsIDc2MjEsIAorICAgIDc4MDA1LCA5MjYyNCwgNDcwNSwgNzE2LCA3NDkxOCwgOTgzNDUzLCA0NzA0LCAxMjAwNDAsIDkzMDI0LCA0MjI0MSwgMTYxLCAKKyAgICA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCA3NDA3NywgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgMTE5MDY1LCAKKyAgICA0MzI5MywgNjg3NzEsIDE5NTAzMCwgMTE5MTY0LCAxMDA3NzAsIDgzMzE5LCAxMDE4NywgMTcwMCwgMTE5MjIzLCA4MzMxNSwgCisgICAgMCwgNzQ5ODAsIDQwMDQsIDkxNzU5NSwgMTA5NjgsIDQzMjk2LCA3MjgyMywgODUwNiwgMTEzNzQ0LCAxOTQ4MTIsIAorICAgIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgMjg3MCwgMTIxMzUwLCA3ODIxOCwgOTgzMTA5LCA3NDYzLCA0NzI5LCAKKyAgICA5ODMzOTMsIDIzNSwgMTM4NCwgNDcyOCwgNzQ4ODcsIDcwNDk0LCA5MjQ5MCwgNzQ0NDksIDgxMDksIDQzMTA1LCAxMjg2MjMsIAorICAgIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgOTI1NDgsIDAsIDQyNTI3LCAxMjkxMSwgNDM0MjcsIAorICAgIDEzODMsIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAxMjA0MTYsIAorICAgIDI2NzQsIDEzMjM4LCAxMTkyMiwgMTI4NDA5LCA5MjUyOSwgMzUxMCwgMTMyMzQsIDEyOTM2OCwgMTIwNDA3LCA1NjA1LCAKICAgICA0MjA5NSwgMTEzNjQsIDkyMjg2LCAxMzgwLCA2NTYxNywgMTExNjIsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAxMjAzMDksIAogICAgIDY3NzA4LCA5NDk1LCAxMTkzNDYsIDEyNzE1NCwgNTk1OSwgNjc5ODQsIDczOTc2LCA2NjI3NSwgNDMzNzEsIDY5NDEsIAogICAgIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCA4Mjk1MiwgNDc3OSwgCiAgICAgOTgzOTIyLCAzNzE5LCA0MDA2LCA5ODM1NjksIDE5OTU3LCA3MTE4NiwgMjAyMSwgMTE5MzMyLCA0Mzg3NywgODMxNDAsIAogICAgIDQzMDI4LCA2NTQ5MywgNDE4MzgsIDM4NzUsIDU5NjIsIDY0MzQxLCA5MjYxNiwgOTgxNCwgNDM0NTcsIDU4MjcsIDMzMTQsIAotICAgIDc3ODcsIDcxMTg5LCA2NTQ5NCwgNjgxNTMsIDEyNjk5MSwgMTk0Njk3LCAxMjA2MzYsIDY0NTMxLCAxMjA2OTIsIDE5NDYyNiwgCi0gICAgMTI4NzUzLCA5ODM5NTgsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDk4Mzc5NCwgOTc0MiwgNTIxLCAwLCAxMDgwMCwgCi0gICAgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCAwLCAwLCAxMTkwMTgsIDEwNTk5LCAKLSAgICAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIDY3MjYxLCAxMDA3NCwgNzg1NDgsIAotICAgIDkzOTk5LCAzNzY5LCAwLCAwLCAxMjg3MDMsIDk4MzEwNywgOTU3MywgOTE3OTk4LCA2NTI5MCwgODg0OSwgMTE5MjU0LCAKLSAgICA2NTg1NSwgNjUxMTIsIDE3OTYsIDcxMDQ2LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDgzMTM1LCA3Mzg4LCAKLSAgICAxMDYyMSwgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDkyMjAzLCA5MjkxNSwgMTI2NjEsIDc2MDgsIAotICAgIDEwMzU0LCAxMDQxOCwgNDI0MTEsIDIwMjIsIDAsIDE0MDksIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAKLSAgICAxMzkwLCA3MDE4NCwgMTk0NzA0LCA0MjEsIDQzNTM2LCA1ODQ2LCAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIAotICAgIDc2MDAsIDc0NDAwLCA2NjAzNSwgMTk1MDkxLCAwLCA2NTg1MSwgNDI2MDcsIDEyNDk1NSwgOTI0MDMsIDMxNjgsIDY3NzMzLCAKLSAgICA0MjEzNCwgMTE4MzEsIDIzNzAsIDI4NDYsIDkyNjA1LCAxMjgwODQsIDAsIDEyMDEzMiwgMTI3NzQ1LCAxODM2LCAwLCAKLSAgICAxMjEyMDcsIDkyNTU4LCAzNzQwLCA2OTg0MywgNjI5MCwgNjUzNzQsIDEyMDQ1MSwgMjM5MCwgMzk0NCwgNjY2MjgsIAotICAgIDExOTAwNiwgMCwgNjEzNSwgMzExOCwgNzQyNjUsIDExOTA5MywgODMzMTAsIDc3OTc1LCAwLCA4MTI3LCA4OTc1LCA2NDczOSwgCi0gICAgNzk0MywgMTI0OTY4LCAxMTkyMzQsIDEwNjE4LCAyNTg0LCAwLCAwLCAxMjgyMjUsIDk5OTgsIDEyMDU3MywgODMzMDYsIDAsIAotICAgIDEyNzc1MCwgNDM1MDgsIDYyMDQsIDEyNzA0NCwgMTIxMzc0LCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzAwNzUsIAotICAgIDEyMDEzMCwgNDI2NywgMTYzMSwgNDIyMDYsIDc3OTgzLCAxMjgwMTUsIDE5NTA0NiwgNjU3MDAsIDY2Mzg2LCAwLCA2NDY0NSwgCi0gICAgMCwgOTI4ODcsIDEyNjU4OCwgMTI1ODYsIDAsIDkyNDIsIDEyMDEwMCwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIAotICAgIDk4Mzc5NywgNzc5MywgNzgyNzUsIDkzMjgsIDExOTEwNCwgNzgzOTMsIDEyNjA0LCA5Mjg4NSwgNjYxNSwgMjI4NSwgCi0gICAgOTIzNDQsIDM5ODYsIDQ0MDI1LCAwLCA4OTEyLCA2NDU1NSwgNzQwOSwgOTIyNDcsIDk4MzM2MCwgOTU0MSwgNzgyNzYsIAotICAgIDExMzY2OSwgMTEyNzUsIDg1NDAsIDExNDk4LCAxMjA4NjgsIDk4MzM1OSwgNDEwNDAsIDI0NTksIDEyNzMwMiwgMTMwNjAsIAotICAgIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAwLCA3NzkzMSwgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgCi0gICAgMzc2NSwgOTI4ODEsIDkxNzYxMiwgMTYwNiwgMTIwMzQ4LCA5MjI5OSwgMzA5MywgNjg0MzYsIDEyODA0MCwgOTgzMDYxLCAKLSAgICAxMTk2MTMsIDAsIDAsIDQzMTIsIDc0MDkxLCAxMjAzMzcsIDc0OTgzLCAxMTkyMywgNDAyMywgNjgzOTksIDU3NjMsIAotICAgIDk0MDE1LCA0ODI3LCAxMDg5NCwgMTI4MTAsIDY0NDA2LCAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgCi0gICAgNjY2NjAsIDI0OTksIDY3MTY3LCA2NzE2NiwgMTE4ODM3LCAxMTk3MywgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIAotICAgIDQyNzU4LCAxMjE5NiwgNDI4MzcsIDQyMjI2LCAxMTkzMTksIDEyNzk5MiwgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAKLSAgICAzMTIwLCA5Nzk3LCAwLCAwLCAxMTA4NiwgMTAzODksIDEyNjQ4NSwgMTI4Nzg0LCA0ODk1LCA2NTM1OCwgMTI0OTQxLCAKLSAgICA0MzU5LCA1ODUsIDIzODMsIDM1MDksIDcwMDM3LCA0ODYsIDQyOTAsIDU3NTgsIDEyNzU0NiwgMTIxMTYwLCA5ODMxMDYsIAotICAgIDcwMDQsIDExMzY2NywgNjU4ODAsIDEyNjUxNCwgMTE5MDQ4LCAyMzgwLCAxMTM4MCwgOTgzODYzLCA5Mzk5NiwgMjM3NiwgCi0gICAgNzg4NDEsIDgzNDAyLCAwLCA1MTk3LCA3MDgzOSwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTE5NjA0LCAKLSAgICA3MDgzNywgMTIwMDQ1LCAwLCAxMjg1NTQsIDAsIDkxNzg0NiwgMCwgMCwgMCwgNzQxODgsIDcxMzQyLCA3ODQ1NSwgNzUwNDgsIAotICAgIDExMzY3NSwgNzQ5MDAsIDEyMDA0NiwgMTI3NTQyLCAxMjAwNDksIDk4MzM2NiwgMTg0NywgMTIwOTc4LCAxMDMzOSwgCi0gICAgOTgzMzY3LCA0MjM4NCwgMTIxMzc5LCA0MjI3LCA3NDE1OCwgMCwgNzQ0OTgsIDQzMDMyLCAxMjExMjQsIDQyMzY1LCAwLCAKLSAgICAxMjY3MSwgMTEzODQsIDEyMDA1OSwgNzQyNjQsIDEyMDA1OCwgNjQ3OTcsIDk4MzM0NywgNTgyMCwgOTgzMzQ2LCAxMjAwNTIsIAorICAgIDc3ODcsIDcxMTg5LCA2NTQ5NCwgNjgxNTMsIDEyNjk5MSwgMTk0Njk3LCAxMjA2MzYsIDY0NTMxLCAxMjA2OTIsIDcyODc5LCAKKyAgICAxMjg3NTMsIDk4Mzk1OCwgNjYzMTYsIDY1NDY3LCA1NzcxLCA0MTI5OCwgODMxMzgsIDk3NDIsIDUyMSwgOTgzOTExLCAKKyAgICAxMDgwMCwgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCA5ODM5MDgsIDY0MDQxLCAKKyAgICAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIAorICAgIDY3MjYxLCAxMDA3NCwgNzg1NDgsIDkzOTk5LCAzNzY5LCAxMjc5NTgsIDAsIDEyODcwMywgOTgzMTA3LCA5NTczLCAKKyAgICA5MTc5OTgsIDY1MjkwLCA4ODQ5LCAxMTkyNTQsIDY1ODU1LCA2NTExMiwgMTc5NiwgNzEwNDYsIDk4MzQyOCwgNjk2NjUsIAorICAgIDgxNjQsIDQxMzAxLCAzNTAyLCA4MzEzNSwgNzM4OCwgMTA2MjEsIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCAKKyAgICA3Mjc0OSwgOTI5MTUsIDEyNjYxLCA3NjA4LCAxMDM1NCwgMTA0MTgsIDQyNDExLCAyMDIyLCA5ODM0MjksIDE0MDksIAorICAgIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAxMzkwLCA3MDE4NCwgNzg1MTUsIDQyMSwgNDM1MzYsIDU4NDYsIAorICAgIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgNzYwMCwgNzQ0MDAsIDY2MDM1LCAxOTQ3OTksIDAsIDY1ODUxLCAKKyAgICA0MjYwNywgMTI0OTU1LCA5MjQwMywgMzE2OCwgNjc3MzMsIDQyMTM0LCAxMTgzMSwgMjM3MCwgMjg0NiwgOTI2MDUsIAorICAgIDEyODA4NCwgMCwgMTIwMTMyLCAxMjc3NDUsIDE4MzYsIDAsIDEwMDc4MiwgOTI1NTgsIDM3NDAsIDY5ODQzLCA2MjkwLCAKKyAgICA2NTM3NCwgMTAwNzg1LCAyMzkwLCAzOTQ0LCA2NjYyOCwgMTE5MDA2LCA5ODM5MTYsIDYxMzUsIDMxMTgsIDc0MjY1LCAKKyAgICAxMTkwOTMsIDgzMzEwLCA3Nzk3NSwgOTgzODg5LCA4MTI3LCA4OTc1LCA2NDczOSwgNzk0MywgMTI0OTY4LCAxMTkyMzQsIAorICAgIDEwNjE4LCAyNTg0LCAwLCAwLCAxMjgyMjUsIDk5OTgsIDEyMDU3MywgODMzMDYsIDAsIDEyNzc1MCwgNDM1MDgsIDYyMDQsIAorICAgIDEyNzA0NCwgMTIxMzc0LCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzAwNzUsIDEyMDEzMCwgNDI2NywgMTYzMSwgCisgICAgNDIyMDYsIDc3OTgzLCAxMjgwMTUsIDE5NDc1MywgNjU3MDAsIDY2Mzg2LCAwLCA2NDY0NSwgMCwgOTI4ODcsIDExOTE1NCwgCisgICAgMTI1ODYsIDAsIDkyNDIsIDEyMDEwMCwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIDk4Mzc5NywgNzc5MywgNzgyNzUsIAorICAgIDkzMjgsIDExOTEwNCwgNzA2ODUsIDEyNjA0LCA5Mjg4NSwgNjYxNSwgMjI4NSwgNjY3OTYsIDM5ODYsIDQ0MDI1LCAwLCAKKyAgICA4OTEyLCA2NDU1NSwgNzQwOSwgOTIyNDcsIDk4MzE5MCwgOTU0MSwgNzgyNzYsIDExMzY2OSwgMTEyNzUsIDg1NDAsIAorICAgIDExNDk4LCAxMjA4NjgsIDEyODU0MCwgNDEwNDAsIDI0NTksIDEyNzMwMiwgMTI1NTgsIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAKKyAgICAwLCA3NzkzMSwgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgMzc2NSwgOTI4ODEsIDkxNzYxMiwgCisgICAgMTYwNiwgMTIwMzQ4LCA5MjI5OSwgMzA5MywgNjg0MzYsIDEwMDcxOCwgOTgzMDYxLCAxMTk2MTMsIDk4MzkzOCwgMTk0NzU2LCAKKyAgICA0MzEyLCA3NDA5MSwgMTIwMzM3LCA3NDk4MywgMTE5MjMsIDQwMjMsIDY4Mzk5LCA1NzYzLCA5NDAxNSwgNDgyNywgMTA4OTQsIAorICAgIDEyODEwLCA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIDY2NjYwLCAyNDk5LCA2NzE2NywgCisgICAgNjcxNjYsIDExODgzNywgMTE5NzMsIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCA0Mjc1OCwgMTIxOTYsIDQyODM3LCAKKyAgICA0MjIyNiwgMTE5MzE5LCAxMjc5OTIsIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgMzEyMCwgOTc5NywgMCwgMCwgCisgICAgMTEwODYsIDEwMzg5LCAxMjY0ODUsIDEyODc4NCwgNDg5NSwgNjUzNTgsIDEyNDk0MSwgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCAKKyAgICA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMDA3NzUsIDEyMTE2MCwgOTgzMTA2LCA3MDA0LCAxMTM2NjcsIDY1ODgwLCAKKyAgICAxMjY1MTQsIDExOTA0OCwgMjM4MCwgMTEzODAsIDk4Mzg2MywgOTM5OTYsIDIzNzYsIDc4ODQxLCA4MzQwMiwgOTgzMjU2LCAKKyAgICA1MTk3LCA3MDgzOSwgMTIwMjQ4LCAxMjcwNDgsIDIzNjYsIDEwMDcxMywgMTE5NjA0LCA3MDgzNywgMTIwMDQ1LCAwLCAKKyAgICAxMjg1NTQsIDAsIDkxNzg0NiwgMTAwNzE1LCAwLCAwLCA3NDE4OCwgNzEzNDIsIDc4NDU1LCA3NTA0OCwgMTEzNjc1LCAKKyAgICA3NDkwMCwgMTIwMDQ2LCAxMjc1NDIsIDEyMDA0OSwgMTAwNzc0LCAxODQ3LCAxMjA5NzgsIDEwMzM5LCAxMDA3NzIsIAorICAgIDQyMzg0LCAxMjEzNzksIDQyMjcsIDc0MTU4LCAwLCA3NDQ5OCwgNDMwMzIsIDEwMDkyNiwgNDIzNjUsIDE5NDgzMywgCisgICAgMTI2NzEsIDExMzg0LCAxMjAwNTksIDc0MjY0LCAxMjAwNTgsIDY0Nzk3LCA5ODMzNDcsIDU4MjAsIDEyODAxOCwgMTIwMDUyLCAKICAgICAxMjAwNjUsIDEyODgyNSwgMTIwMDY0LCAxMjAwNTMsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgMTIwMDYzLCAxMjEyODYsIAogICAgIDczNzcsIDEyMDA1MSwgNDE3OTksIDY1NTMwLCAxNzExLCAxMjk4NCwgNDMwMzksIDMxMTQsIDYyNTUsIDEyMTEzMiwgCi0gICAgNjg2NjAsIDAsIDEwODUzLCA5MjYsIDk4MzM3MSwgNzQxODQsIDEyMDkxNSwgMTIwMDU1LCAxMTkzMDEsIDQzMTc1LCAwLCAKLSAgICA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAxMTk2MDUsIDUyMCwgNDIwMCwgCi0gICAgMTI2OTksIDgzMzEsIDcwMTE4LCAzMDkxLCA0MTAzNCwgNjYyOTgsIDcwMjkzLCA4MzYwLCA5ODM0NDUsIDc4MDQ0LCAzMjEsIAotICAgIDQyMjksIDY0NTQzLCAxMjg0NzAsIDY1NTYzLCAxOTQ4NzMsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAxMjE0MjgsIAotICAgIDkxOTUsIDkyMzg2LCAxODYxLCAwLCA3MzczMywgOTE3NzgwLCA2ODgzOSwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIAotICAgIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgNzA3OTMsIDczODY3LCAxMjk3MywgNzUwMTQsIDc0NzU3LCAxMjc1MTQsIAotICAgIDQxNjU4LCAxMjgzNzYsIDEyMTIzNSwgNTc2MCwgMTEzNjk5LCA3NDMsIDQ0MTQsIDEyMDc2NiwgMCwgNDI2MzIsIDEyNzIzNiwgCi0gICAgNjUxNjEsIDczODk2LCAxMjg1ODksIDAsIDE0MDUsIDExOTA2MywgNDMyMjAsIDQzMzQxLCAwLCAxOTkxOSwgNzAyNzgsIAotICAgIDY0NTMyLCA2NTM2NywgNDM3MTAsIDExMTk5LCAxMjUwNzcsIDM1MTMsIDcxMTE1LCA3MDM0MSwgNDMzNDIsIDExOTA2NCwgCi0gICAgNjU1MjksIDY1MzY0LCA4MzIwOCwgODMxNzAsIDY0ODUsIDEzOTcsIDE5NDc4MSwgNDE5ODYsIDkyNjc4LCA4MzIwNCwgCi0gICAgODMyMTIsIDc0MDk3LCA4MzIxMywgNzQ3MSwgMTIwNzksIDY3OTk3LCA2ODQzLCA0MzI4NywgOTIzMTcsIDAsIDY3NDA2LCAKLSAgICAxMjAyMzksIDE5NDY3OCwgNzE5MTQsIDEwOTksIDEwNDkwLCA4MzIwMSwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMTI4OTUyLCAKLSAgICA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAxOTQ2MDksIDY1Njc5LCA2NDU3MywgNjQ4OTcsIDQyMywgCi0gICAgMTgxOCwgNjUxNDQsIDgyOTYzLCA4MjcyLCAxMjc4MTIsIDE5OTExLCA0MjE4LCAzMDg3LCA2NDk2MCwgMTIxNDQ3LCAKLSAgICA0MzU2NCwgMCwgOTgzMTgyLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAKLSAgICA3MTIzNSwgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAxOTQ3MzAsIDEyODMzMywgMjY1LCA0MTc5NSwgNjQ2NjYsIDc0NjI4LCAKLSAgICA0MzUzMCwgMjc1MiwgMTI3MzY1LCAxMjg0NTksIDEyNjQ4MiwgNTksIDk4MzY3MSwgMTIxNDEwLCAxMTE0OSwgNzgwNzQsIAotICAgIDc3ODczLCA0MTgxMCwgODMxNjIsIDcwMTAsIDAsIDQxODA5LCA0MTQ5NSwgMTE5MzY0LCA1ODc3LCA0MjI1MiwgNDIyMTMsIAotICAgIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA0Mzg0OCwgMTMxMjcsIDEyMDA2NywgOTgzOTQ2LCA3NDM5NywgCi0gICAgMTIwMjM1LCAxMjg2NDEsIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDc1MDE3LCAyMTAzLCAxMDM4NywgNDQ1MywgCi0gICAgNDMyNzYsIDkxNzc4MywgMTExNjksIDEyODkzOSwgNjQ4MSwgNDEyMTMsIDAsIDAsIDEyOTEzMywgMTE5OTI5LCA0MTk4MywgCi0gICAgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgOTI5OTUsIDQ2MiwgNjgxMTAsIDEwNDkzLCAxMjE0NDksIDgxMjksIDkyOTk0LCAKLSAgICAxMjgzNjUsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMCwgCi0gICAgMTE5MDEzLCA0MzM0MCwgMTExMjMsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMTI5MDUxLCAxMTQyNiwgNzc4ODcsIDE2ODEsIAotICAgIDExODc4OSwgMTIwNCwgMzc1NSwgNjQ2NjEsIDcyMzUsIDEwMTcwLCAzOTY2LCA4OTExLCAwLCA0MTg0MSwgNDMzMzgsIDAsIAotICAgIDExOTMyMywgNTcyNiwgNjQ5MTUsIDQyMTc1LCA5ODM5MTMsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAyODUxLCA0MzAxNywgCi0gICAgOTgzNTg5LCAxMjA4OTYsIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAKLSAgICA5MTc1ODksIDkyMzY1LCAxMjgyMDIsIDY0OTIyLCAwLCA4MTkwLCAxMjA4MywgMCwgODMxNDEsIDY1MDYsIDY0MzEyLCAKLSAgICA3NDM3NCwgMjM2OCwgOTgzMTg3LCA0NDE5LCAxMjEyNTksIDExOTEyNSwgMzQzOSwgMTgyNSwgMTE5MiwgMTIwMTA2LCAKLSAgICA4ODkxLCAzMDgwLCAxMjAyMjgsIDIzNDcsIDU0MzAsIDEyMDEwNywgODk5MCwgMjg0OCwgOTI5ODEsIDEyMTM3MiwgNzM5NDIsIAotICAgIDI0OSwgMCwgMCwgMCwgMTIwNjU4LCAxMTkzMjQsIDEyODcxMiwgODg4MywgMTE5ODYwLCA3MjgsIDExMTczLCA5OTUsIDAsIAotICAgIDEyMTA0NywgNjQ4MjYsIDEyNDkzMSwgOTE3Nzk4LCAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAKLSAgICAxOTQ4MTQsIDY3NzE0LCAxMjExMiwgNjcyNzIsIDY3MjY1LCA2NzI3MywgNjcyNzQsIDEyMzM1LCAxMjAxMDQsIDY4MDE5LCAKLSAgICAzNDQzLCAzMTI5LCA2NzI2NywgMjEwMiwgNjU0NDUsIDc4MjU4LCA2NDg5MSwgMCwgNzcyNSwgNjUxMDgsIDExMTIwLCAKLSAgICA5MjA1LCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAxMjg1MTksIDQxODk0LCAwLCA2Mjc3LCA0MTY3MiwgNDE4OTMsIAotICAgIDEwMDEwLCAxMjczODEsIDM1NDAsIDEyMTQ1MCwgODM1LCA3MTM0MCwgNjk4MTYsIDExOTg1NCwgNzQ0MDgsIDAsIDY3MTA4LCAKLSAgICA1NDI2LCA0MjU4LCA4MzE4OCwgMTIwODU4LCA1NDI0LCA5MjMwNiwgODI4MywgMTI3OTc4LCA1NDM0LCA4MzE5NiwgCi0gICAgMTI5MDI3LCAxOTkxNywgMTE0MDgsIDAsIDExOTQ3LCAxMjgzMzAsIDE0MDQsIDMwOTUsIDExNDMyLCAxMjExMjIsIDM0NjQsIAotICAgIDY0ODYsIDQ4MTksIDEyODIzMywgMTI5MTIzLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIAotICAgIDEyODUzOSwgNDMxLCA2NzgyMCwgMCwgMTI4MTgyLCAxMjgwOTYsIDY4MTY3LCA5ODM2NjMsIDEzMDk2LCAxMjg2NDMsIAotICAgIDEyMTAxOCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCAKLSAgICA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCA1ODc4LCA5ODM3OTksIAotICAgIDAsIDAsIDAsIDY0ODQsIDI1NDEsIDY2MDM5LCAxMTM3NzcsIDc4MTU3LCA5MjcyMywgMzU0OSwgMTk1MDY3LCA5MTEwLCAKLSAgICAxMTk2NjUsIDI3NDMsIDAsIDQzMjkwLCAxMjg1ODUsIDkwOTcsIDE5NTAyNiwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgCi0gICAgNDI3MDcsIDg1NzMsIDEyMDkwMywgMTI2NDk0LCAwLCA3MTEwMiwgNDI2OTQsIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIAotICAgIDEyNTExMSwgNTg3MiwgNjQ5NSwgMTI5MTI1LCAwLCAwLCA5MjU0MywgNjcxNzMsIDY3MTcyLCAxMjg0OSwgMzk1MywgMTg5NywgCi0gICAgOTMwNzEsIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMTE5MDg3LCA2ODQ3MywgCi0gICAgNzQxMDQsIDUyMjgsIDExOTgzNSwgNzg2OCwgNDMxODQsIDAsIDEyMDk1NSwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgCi0gICAgOTE3NTUzLCAxMTYyLCA3NDk5NSwgMjY3MSwgMTI4NTY3LCAxMjcxOTgsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCAKLSAgICA3MzgxMSwgOTgzNTczLCAxOTUwMDUsIDExODkyOCwgNjgwODUsIDE5OTIxLCA3MzgyMSwgMTE0MjQsIDE5NTAwMiwgNDU2NywgCi0gICAgNDE4OTEsIDAsIDk4Mzc4OCwgNTUyNDksIDQ4MjAsIDY1MjM5LCAxOTQ2NjIsIDAsIDE5NDY2NSwgNDMwNDIsIDExOTIxMiwgCi0gICAgMTM3NywgMTI4NjksIDQ4OTcsIDQyODIxLCA5MjUwLCA3MDI3MiwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAKLSAgICAxOTQ5NDEsIDQzMjgyLCA4ODMzLCA2OTk5OCwgMCwgNjUwNCwgNzg0MDgsIDEyMTE2NiwgMTA3MTksIDcwMjc1LCAxODk4LCAKLSAgICAxNDEzLCA0MjQ0MywgMCwgODAyLCAxMjE0MSwgMTIxMTM4LCA4MzA5NywgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCAKLSAgICA5MTY5LCA4MzgsIDY4ODE5LCA2ODgwNywgODQ0LCA1MDE0LCA2NjI5NywgMjU2LCA2ODgxOCwgOTk5MCwgMTI4Mzk4LCAKLSAgICA0MjczOSwgOTE3ODUxLCA3NTQyLCA2NTQ2NCwgOTcyNiwgODMyMjQsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIAotICAgIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIDExNzYxLCAxMjEzMTQsIDgzMjI2LCA0MTA5NCwgMCwgNzc5NTgsIDE5NDg5MywgCi0gICAgNzg0MDMsIDkyNjg5LCA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTIwOTQyLCA2NzA5NSwgMTIwNDkxLCAxMTgxNiwgNjg4NDYsIAotICAgIDU3MzMsIDI5MzAsIDcwMjc0LCAxMjcxNzksIDQxMDk4LCA5Mjc3MSwgNDEwOTMsIDY4ODM0LCA2NjYyNiwgNTg4LCA5NzYwLCAKLSAgICAxMjUwOTksIDE5NDcxNywgMTIzOCwgMjAwLCA5ODMyMDcsIDE2NjAsIDczOTE2LCAwLCA2NzE0MSwgNzQzNjIsIDAsIAotICAgIDkyNDg1LCAxMjQ5MzAsIDAsIDc0OTk5LCAzMzk0LCAxOTQ4OTQsIDEyMDY2OCwgMCwgNjk5OTYsIDEyNzM1OCwgNjYyMTksIAorICAgIDY4NjYwLCAwLCAxMDg1MywgOTI2LCA5ODMyOTYsIDc0MTg0LCAxMjA5MTUsIDEyMDA1NSwgMTE5MzAxLCA0MzE3NSwgCisgICAgMTI3MTAzLCA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTAwNDk4LCAxMTk2MDUsIDUyMCwgCisgICAgNDIwMCwgMTI2OTksIDgzMzEsIDcwMTE4LCAzMDkxLCA0MTAzNCwgNjYyOTgsIDcwMjkzLCA4MzYwLCA5ODM0NDUsIDc4MDQ0LCAKKyAgICAzMjEsIDQyMjksIDY0NTQzLCAxMjg0NzAsIDY1NTYzLCAxMDA3NjQsIDEyOTMxMCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAKKyAgICAxMjE0MjgsIDkxOTUsIDcyNzY3LCAxODYxLCA5ODMwNTYsIDczNzMzLCA5MTc3ODAsIDY4ODM5LCA0MzA0MSwgMCwgNDM3OTQsIAorICAgIDEwMDc2OSwgMzg1OSwgMTIxODEsIDQxNjYwLCA4MjA5LCA3MDc5MywgNzM4NjcsIDEyOTczLCA3NTAxNCwgNzQ3NTcsIAorICAgIDEyNzUxNCwgNDE2NTgsIDEyODM3NiwgMTIxMjM1LCA1NzYwLCAxMTM2OTksIDc0MywgNDQxNCwgMTIwNzY2LCAwLCA0MjYzMiwgCisgICAgMTI3MjM2LCA2NTE2MSwgNzM4OTYsIDEyODU4OSwgMTAwNTkzLCAxNDA1LCAxMTkwNjMsIDQzMjIwLCA0MzM0MSwgMTk0NzkyLCAKKyAgICAxOTkxOSwgNzAyNzgsIDY0NTMyLCA2NTM2NywgNDM3MTAsIDExMTk5LCAxMjE0MDAsIDM1MTMsIDcxMTE1LCA3MDM0MSwgCisgICAgNDMzNDIsIDExOTA2NCwgNjU1MjksIDY1MzY0LCA4MzIwOCwgODMxNzAsIDY0ODUsIDEzOTcsIDE5NDc4MSwgNDE5ODYsIAorICAgIDkyNjc4LCA4MzIwNCwgODMyMTIsIDc0MDk3LCA4MzIxMywgNzQ3MSwgMTIwNzksIDY3OTk3LCA2ODQzLCA0MzI4NywgCisgICAgOTIzMTcsIDAsIDY3NDA2LCAxMjAyMzksIDE5NDY3OCwgNzE5MTQsIDEwOTksIDEwNDkwLCA4MzIwMSwgMTA1MDEsIDY1MTgxLCAKKyAgICA3NDQ2MywgMTI4OTUyLCA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAxOTQ2MDksIDY1Njc5LCAKKyAgICA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDgyOTYzLCA4MjcyLCAxMjEyMDMsIDE5OTExLCA0MjE4LCAzMDg3LCAKKyAgICA2NDk2MCwgMTIxNDQ3LCA0MzU2NCwgOTgzNzQ5LCA5ODMxODIsIDk1ODQsIDEwNDY1LCA5ODM5MDIsIDc0MzU5LCAxMjYyNiwgCisgICAgOTEwNiwgOTgzMDY0LCA0MjY0MiwgNzEyMzUsIDY0NzUwLCA5MzkwLCAxMjA3MzcsIDQxNzk3LCAxOTQ3MzAsIDEyODMzMywgCisgICAgMjY1LCA0MTc5NSwgNjQ2NjYsIDc0NjI4LCA0MzUzMCwgMjc1MiwgMTI3MzY1LCAxMjg0NTksIDEyNjQ4MiwgNTksIAorICAgIDk4MzQyNywgMTIxNDEwLCAxMTE0OSwgNzgwNzQsIDc3ODczLCA0MTgxMCwgODMxNjIsIDcwMTAsIDAsIDQxODA5LCA0MTQ5NSwgCisgICAgMTE5MzY0LCA1ODc3LCA0MjI1MiwgNDIyMTMsIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA0Mzg0OCwgMTMxMjcsIAorICAgIDEyMDA2NywgOTgzOTQ2LCA3NDM5NywgMTIwMjM1LCAxMDA4MzUsIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDc1MDE3LCAKKyAgICAyMTAzLCAxMDM4NywgNDQ1MywgNDMyNzYsIDkxNzc4MywgMTExNjksIDEyODkzOSwgNjQ4MSwgNDEyMTMsIDAsIDEwMDgzOSwgCisgICAgMTI5MTMzLCAxMDA4MzgsIDQxOTgzLCA3NDE5OCwgNjYxNywgOTExNiwgMTE5NjU0LCA5Mjk5NSwgNDYyLCA2ODExMCwgCisgICAgMTA0OTMsIDEyMTQ0OSwgODEyOSwgOTI5OTQsIDEyODM2NSwgNzQ0NzEsIDY2NDQsIDExNjU4LCAwLCAxMjgyNDUsIDM0NTIsIAorICAgIDExOTA2LCA5NTgxLCAxMzg1LCAzMDk4LCAxMDA0NTcsIDExOTAxMywgNDMzNDAsIDExMTIzLCA0MTAzMywgNjQ5MywgCisgICAgNDI2MjYsIDAsIDEyOTA1MSwgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAKKyAgICAxMDE3MCwgMzk2NiwgODkxMSwgMTAxMDEzLCA0MTg0MSwgNDMzMzgsIDE5NDk1NCwgMTAwODQ4LCA1NzI2LCA2NDkxNSwgCisgICAgNDIxNzUsIDk4MzkxMywgMCwgNDE0OTcsIDY1MDQ0LCAxMDA4NDQsIDI4NTEsIDQzMDE3LCAxMDA0ODQsIDEyMDg5NiwgCisgICAgNDM3MywgNzgwNTgsIDAsIDk1ODcsIDE3ODksIDY2NzEsIDEyODg0MCwgMzEwMCwgMCwgNjUzNjAsIDEwMTAxMiwgOTIzNjUsIAorICAgIDEyMDkzNywgNjQ5MjIsIDEwMDQ4NiwgODE5MCwgMTIwODMsIDAsIDgzMTQxLCA2NTA2LCA2NDMxMiwgNzQzNzQsIDIzNjgsIAorICAgIDk4MzE4NywgNDQxOSwgMTIxMjU5LCAxMTkxMjUsIDM0MzksIDE4MjUsIDExOTIsIDEwMDQ4OCwgODg5MSwgMzA4MCwgCisgICAgMTIwMjI4LCAyMzQ3LCA1NDMwLCAxMDA0ODcsIDg5OTAsIDI4NDgsIDkyOTgxLCAxMjEzNzIsIDczOTQyLCAyNDksIAorICAgIDk4MzA0MCwgOTE3ODY5LCA5ODM4MjUsIDc0ODE0LCAxMTkzMjQsIDEyODcxMiwgODg4MywgMTE5ODYwLCA3MjgsIDExMTczLCAKKyAgICA5OTUsIDAsIDEwMDY1NywgNjQ4MjYsIDEwMDY1NiwgMTI5MzcxLCAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIAorICAgIDEyOTEzNCwgMTIyNzMsIDEyOTE1NiwgNjc3MTQsIDEyMTEyLCA2NzI3MiwgNjcyNjUsIDY3MjczLCA2NzI3NCwgMTIzMzUsIAorICAgIDEyMDEwNCwgNjgwMTksIDM0NDMsIDMxMjksIDY3MjY3LCAyMTAyLCA2NTQ0NSwgNzgyNTgsIDY0ODkxLCAxOTUwNjksIAorICAgIDc3MjUsIDExODQzLCAxMTEyMCwgOTIwNSwgODYyNCwgNjkyNDYsIDEyNDQ2LCA0MzI5NSwgMTI4NTE5LCA0MTg5NCwgMCwgCisgICAgNjI3NywgNDE2NzIsIDQxODkzLCAxMDAxMCwgMTI3MzgxLCAzNTQwLCAxMDA4MjcsIDgzNSwgNzEzNDAsIDY5ODE2LCAKKyAgICAxMTk4NTQsIDc0NDA4LCAwLCA2NzEwOCwgNTQyNiwgNDI1OCwgODMxODgsIDEwMDc1OCwgNTQyNCwgOTIzMDYsIDgyODMsIAorICAgIDEyNzk3OCwgNTQzNCwgODMxOTYsIDEyOTAyNywgMTk5MTcsIDExNDA4LCAxMjczOTIsIDExOTQ3LCAxMjgzMzAsIDE0MDQsIAorICAgIDMwOTUsIDExNDMyLCAxMjExMjIsIDM0NjQsIDY0ODYsIDQ4MTksIDEwMDc1OSwgMTI3NDA0LCA1NzAsIDgwOTUsIDM2NzIsIAorICAgIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDEyODUzOSwgNDMxLCA2NzgyMCwgNzgwODAsIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgCisgICAgOTgzNDU5LCAxMzA5NiwgMTI4NjQzLCAxMjEwMTgsIDQzNDA4LCA5NTE2LCAxMjg1MzgsIDUyNjgsIDQyMjMwLCA0MjIyMCwgCisgICAgMCwgNDQ1MCwgMTIwNTExLCAxMTU0NywgNDM0MTcsIDEyODU0MiwgMzU2LCAzNDc3LCAyMjcsIDEwNDg4LCA2ODIwMywgMzgyLCAKKyAgICAxMTQxOCwgMTIwNjgxLCA1ODc4LCA5MTc4NjAsIDAsIDAsIDE5NDg3NywgNjQ4NCwgMjU0MSwgNjYwMzksIDExMzc3NywgCisgICAgNzgxNTcsIDkyNzIzLCAzNTQ5LCAxOTUwNjcsIDkxMTAsIDExOTY2NSwgMjc0MywgMTIxNDMyLCA0MzI5MCwgMTI4NTg1LCAKKyAgICA5MDk3LCA3NDM3OSwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDEyMDkwMywgMTAwNjY2LCAwLCAKKyAgICA3MTEwMiwgNDI2OTQsIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIDEwMDY2MiwgNTg3MiwgNjQ5NSwgMTI5MTI1LCAKKyAgICAxMjc0NjcsIDAsIDkyNTQzLCA2NzE3MywgNjcxNzIsIDEyODQ5LCAzOTUzLCAxODk3LCA5MzA3MSwgNjUwOTQsIDExOTk0LCAKKyAgICA0MzM5LCA3NDU1NiwgOTI2NTQsIDY3ODQzLCAxMjg5NDYsIDAsIDExOTA4NywgNjg0NzMsIDY2Nzc4LCA1MjI4LCAxMTk4MzUsIAorICAgIDc4NjgsIDQzMTg0LCAwLCAxMjA5NTUsIDczOTg2LCA0MzQzOCwgMCwgNDMwMjIsIDkxNzU1MywgMTE2MiwgNzQ5OTUsIAorICAgIDI2NzEsIDEyODU2NywgMTI3MTk4LCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDkxNzk0NywgMTEzNzIzLCAKKyAgICAxMTg5MjgsIDY4MDg1LCAxOTkyMSwgNzM4MjEsIDExNDI0LCAxOTUwMDIsIDQ1NjcsIDQxODkxLCAxMjcwMDQsIDk4Mzc4OCwgCisgICAgNTUyNDksIDQ4MjAsIDY1MjM5LCAxMjkzMzgsIDAsIDEwMTA0MywgNDMwNDIsIDExOTIxMiwgMTM3NywgMTI4NjksIDQ4OTcsIAorICAgIDQyODIxLCA5MjUwLCA3MDI3MiwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAxMjg2MTEsIDQzMjgyLCAKKyAgICA4ODMzLCA2OTk5OCwgMCwgNjUwNCwgNzg0MDgsIDEwMDY4OCwgMTA3MTksIDcwMjc1LCAxODk4LCAxNDEzLCA0MjQ0MywgCisgICAgOTgzMzg3LCA4MDIsIDEyMTQxLCAxMjExMzgsIDgzMDk3LCA2NjQ4LCAxMDY3MSwgMjUyOCwgNzI4ODAsIDY0Nzg5LCA5MTY5LCAKKyAgICA4MzgsIDY4ODE5LCA2ODgwNywgODQ0LCA1MDE0LCA2NjI5NywgMjU2LCA2ODgxOCwgOTk5MCwgMTI4Mzk4LCA0MjczOSwgCisgICAgOTE3ODUxLCA3NTQyLCA2NTQ2NCwgOTcyNiwgODMyMjQsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIDY2NTczLCAwLCAKKyAgICA3ODcyNCwgNzg3MTIsIDExNzYxLCA3MDY2NSwgODMyMjYsIDQxMDk0LCAwLCA3Nzk1OCwgMTE5OTE4LCA3ODQwMywgOTI2ODksIAorICAgIDYxOTYsIDY5NDUsIDkzOTY5LCAxMjA5NDIsIDY3MDk1LCAxMjA0OTEsIDExODE2LCA2ODg0NiwgNTczMywgMjkzMCwgCisgICAgNzAyNzQsIDEyNzE3OSwgNDEwOTgsIDkyNzcxLCA0MTA5MywgNjg4MzQsIDY2NjI2LCA1ODgsIDk3NjAsIDEwMDU2OCwgCisgICAgMTk0NzE3LCAxMjM4LCAyMDAsIDk4MzIwNywgMTY2MCwgNzM5MTYsIDAsIDY3MTQxLCA3NDM2MiwgOTgzNzg0LCA5MjQ4NSwgCisgICAgMTI0OTMwLCAwLCA3NDk5OSwgMzM5NCwgNzA3MzQsIDEyMDY2OCwgMTAwNDc3LCA2OTk5NiwgMTI3MzU4LCA2NjIxOSwgCiAgICAgNzI0MjUsIDQzMjg0LCA2ODA3MiwgNzgxNywgMTg0MSwgMTEwNTUsIDY2ODM1LCAxOTQ5NzksIDc0NjA3LCAxNjY5LCAKLSAgICAxMDc3NiwgNzQ1MzQsIDc3MDEsIDE5NDk4MCwgOTgzNDUwLCA3NDk5MiwgMTczMiwgNDAzMCwgOTgzNDQyLCAzOTYzLCAKLSAgICA2NTMzNSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgNjUzMzMsIDY1MzI0LCA5MTQsIDY1MzIzLCA4MDcxLCAzNTM4LCA5ODM4NDUsIAotICAgIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCA3MTkwOCwgMTIwMDksIDEyMzk5LCAxMjEyMTcsIAotICAgIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgODk2MCwgMCwgNzAxMjMsIAotICAgIDY1MzE3LCA3Nzg4MCwgMCwgNTg3NiwgNzAzNzQsIDEyMzA0LCAwLCAwLCA2NTMxNSwgOTI2NzAsIDEyODUxMSwgNzE4NjIsIAotICAgIDAsIDEyNzk1NywgMTE5NjIxLCAxMTExNCwgNzE5MDksIDEyNDQ3LCA2NDQ4NiwgMTIxMjM2LCAxMjY1NjIsIDk4MzEyOSwgMCwgCi0gICAgMTIxMzkzLCA5ODM4MDIsIDQyNzY3LCAxMDkxNSwgOTgzMTc0LCAxMjAwNywgNDM2OTUsIDY4MDMzLCAxMTk3NSwgMTk0ODc4LCAKLSAgICAwLCA5MjYwNCwgMjU1NSwgODYyOSwgMTI4NjQwLCA0MTEzMywgNDE4NzIsIDQzNzA2LCA0NDk2LCAxOTQ4NzksIDgzMTA4LCAKLSAgICAxMjAyNDEsIDEyODE2NCwgMCwgMCwgOTgzNTUzLCA2NDczMCwgNzAwNDEsIDY2NzE0LCA2ODIyMiwgMCwgNzAwNzYsIAotICAgIDY1NTk2LCA2NzgzNywgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAxMjc4NCwgNzc5MiwgMTM5MywgNzgxOTEsIDExMTU3LCAKLSAgICA3NDM4NiwgMTI3Mjc0LCA4MjMzLCAxMjgyMCwgOTgzNzMwLCA2NjgzLCAxMjUxMTIsIDM0NDIsIDEyMTQ0LCAyODQxLCAKLSAgICAxMjU0MywgMCwgMTQ3MywgNDI4MjAsIDY0MzI5LCAxMjA4ODAsIDY3MjQzLCA2ODY0MiwgNjQ4OCwgMzU3LCAxMDQ4LCAKLSAgICA0MTEwMCwgNzI0MTcsIDQxMTA0LCA5NDAwMywgMzQwNiwgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCA5ODMzODUsIDQ0MzQsIAotICAgIDEwNjksIDE5NDc4NCwgMTE4ODYyLCA2NTczNywgMTIxMjAyLCAxMjg3MDUsIDAsIDgzMjExLCA5NjkzLCA0MTk0MywgCi0gICAgNjgzMDUsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIDk4MzM1MywgMTA1OSwgOTc5MCwgODk5NSwgMTE5OTc0LCAKLSAgICA5MTc3NzAsIDY1OTM3LCA3ODU3MiwgNDE3NTgsIDEwNjQ2LCAxMjExNTksIDExODgzMywgOTIzNzIsIDcwNDI0LCA3NDgzMCwgCi0gICAgNzg1NjksIDEyNzQzLCA5ODM2ODksIDY0ODAsIDkxNzc2MSwgNDE3NzksIDQyNTgwLCA2NjYwMSwgMTIyMDcsIDc3ODk1LCAKLSAgICA2MzM1LCA0MzkxOSwgMTEzMTIsIDY0ODA3LCA5Mjk2MiwgNjk5ODksIDQxNzY3LCAxMTk2MjksIDk4Mzc2NCwgNDMwMjAsIAotICAgIDc0OTc0LCAzOTU1LCA3NDI1NCwgMTIwNjMyLCA5ODM3NTQsIDkxNzg2MSwgNzAxODcsIDY5OTc1LCA5NzcwLCA5MjQ2LCAKLSAgICAxMjIzMCwgMTI1MDQ3LCAxMjkxMDUsIDc4NTgwLCAxMDQ0OCwgNDE3ODMsIDQxNzg2LCAxMjcwOTMsIDEyNzk3LCAyNzU1LCAKLSAgICA2NDU3MSwgNzg1NzgsIDE5NDkyNywgNDg1NywgOTgzNTc3LCA0NDI4LCAxMjc5NCwgNzM3NTUsIDEyODA2MSwgNzg1NzQsIDAsIAotICAgIDExMTE2LCA0Mzg0MiwgNTc0NywgNzg4MjUsIDcwNDcxLCA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCA0MzgxMiwgCi0gICAgNDIxNDQsIDY1MDE1LCAwLCA1NjMsIDAsIDEyOTQxMiwgMTI3OTgsIDExMjcxLCA1NywgOTI3MTcsIDgzNDk1LCA5MTc4NjAsIAotICAgIDExOTA0MywgOTE3NjE4LCA5NDA1MSwgNDMxMzcsIDY5NCwgOTgzNzE5LCA5ODc2LCAwLCAxMTkxNjgsIDAsIDcwMzkyLCAKLSAgICA2NDUzNywgMTI3OTE0LCAyNzcsIDc0Mzg1LCA3MjI5LCAxMjc2MSwgOTgzMTQ1LCA3NDQ2NiwgMTMwMjUsIDY0ODExLCAKLSAgICA4NzU3LCA3ODgyNCwgNzgxODgsIDE1NzQsIDczODEsIDAsIDI1MjUsIDQ4NTIsIDU3NDksIDY4NDY1LCAxMzAyNywgNDI4MjQsIAotICAgIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAxMjkxNTYsIDY5NzI1LCA5MDU1LCAKLSAgICA0MTg1MywgNDg1OCwgNzUwMDAsIDkxNzk5MCwgNDM2LCA0NzcxLCA5MTc5MzYsIDI3ODYsIDkzMDI4LCA0ODU2LCA4MDUxLCAKLSAgICA5MjUwMCwgMTE5NjA5LCA3MTMyNywgOTY0NCwgNzExMzMsIDEyNTAwOSwgMTI4ODczLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIAotICAgIDY4MDg0LCA5ODMzNjEsIDczOTA2LCA2NzQwOSwgMTI3MTE0LCA5MTc5MTYsIDEwMjM0LCA1ODQzLCAxMTkzOSwgNzAzNDYsIAotICAgIDQyMTU3LCAwLCAzMTU3LCAxOTQ2NTksIDY4MzkzLCA3NTAzNSwgMzUwNCwgNzA0MjIsIDAsIDEwODIyLCA1MTQ5LCA2NjAyOSwgCi0gICAgMTAyMjYsIDY1MTQyLCAxMjgwMjUsIDM1OTQsIDQyNDI0LCAxMjQ5OTMsIDQwLCAxMjY1NywgOTgzNjY1LCAwLCAzODYsIAotICAgIDEyMTQ2NywgODgzNCwgMTIwOTc0LCAxMjgxNSwgNDM1NzQsIDEyMTQzMCwgNzM5MDcsIDEyNzc5MiwgNzAxMTMsIDcyMjAsIAotICAgIDExODM5LCAxMjExNDMsIDc0MzE2LCAxOTQ3NTIsIDY1MzIyLCA0MzA0LCA3NDUwMywgODE2MCwgNzQzMTQsIDE5NDc1MywgCi0gICAgMTIxMjc2LCAwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTIxMTM5LCAxMzMwMywgNzA0MDYsIDkyMzkyLCAKLSAgICAxMjg0NzQsIDc1OTksIDEyNzgsIDQzNjE2LCAxMzI2OSwgMTI3ODA1LCAxMjcxMTAsIDc0Mzg3LCA3ODE3OSwgNzg1OTgsIAotICAgIDc0NDkyLCA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxOTQ3NjMsIDc4NTkyLCA2ODc0NSwgMjY3MiwgCi0gICAgMzczNSwgMTI3NDcwLCAxMzEzOCwgNDIyNjYsIDk0ODQsIDEwNzI0LCA0MTIwMiwgNzEzNjQsIDEyODM3MCwgNDM3NDIsIAotICAgIDEyODM3MywgOTQ4NywgMTE5OTU5LCA2ODc4NSwgMzg0MiwgNzE5MTEsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgCi0gICAgMTE5MzQ0LCAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDY2NzIxLCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAotICAgIDcwMDA2LCAxOTQ2OTAsIDEyNzUzNywgMzYwNCwgMTIwNjgzLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCA0MjUwNywgCi0gICAgMTk2MiwgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDEyMTAyMSwgMjA3MiwgOTIzMTIsIDY5OTUsIDc0MTczLCA1NDM3LCAKLSAgICA3NDE3NCwgMTA2NjksIDg3MDIsIDc5NjQsIDkyMzUyLCA5ODM3NzYsIDE5OSwgNjgwNzUsIDQxMDUsIDE5NDg0NSwgCi0gICAgMTI3OTQyLCA3NTAwNiwgMTk0NzEwLCA2NzgxOCwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ3OCwgMTk1MDcwLCAKLSAgICA2NDcyLCA2NTgxNCwgNzE5MTksIDEyMTIxOCwgNDcyNCwgMTI4NDkxLCAxOTUwNDEsIDkxOTEsIDE5NDY0NSwgNjQ0MzIsIAotICAgIDEyMDI3MCwgODI5ODcsIDExOTE5MCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIDAsIDY2ODAsIDE5NTA0MiwgOTgzNDI1LCAKLSAgICA3MTg3MiwgNjY3OSwgNzQ0MTIsIDkyMjUxLCAxOTQ4NjYsIDc0NDIxLCAxMTM4MiwgMTI4MjU0LCA0Mzg2MiwgNzg1OTEsIAotICAgIDExMzczMywgMTk0Njc5LCAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAKLSAgICAxMjgyNTIsIDQzODc0LCA2NTQ0MiwgNjgwNDcsIDY5NzMzLCA5OTg5LCA0MzI0OCwgNjYyNDgsIDE5NDgxNiwgMCwgMTEzMjEsIAotICAgIDEyODg0NSwgMTIwODA5LCAxOTQ4MTksIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCA5MzAxMCwgNzM5MjcsIAotICAgIDkyNDQ0LCAxMjczMzYsIDY1NzQ2LCAxMTg3OTYsIDY5ODg5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgMTIxMzM5LCAKLSAgICAxNjc3LCA5MTc1OTIsIDgyOTg5LCAxMjY1OTAsIDgzNDE1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgCi0gICAgMTAxNjAsIDAsIDEyOTE1MCwgNzU4NSwgNjUxNjksIDIwNTIsIDQzMDgsIDgzNDE0LCA0MzAwMCwgNzUwNSwgNTQzLCAKLSAgICA2NDkxNiwgNjQ3MzYsIDExODgzNSwgMCwgNjQ2NTUsIDk4MzA1MywgMTE4OTIyLCAyMDY0LCAwLCA0MzE1OCwgNzkwMiwgCi0gICAgOTgzMjMxLCA2NTI2NSwgMTk0NjM5LCAxMjEwODAsIDEyNzE3MCwgMTI3MDQxLCAxMjgwMDYsIDkyNTUwLCA5ODMxODYsIAotICAgIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDc0Mzc4LCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDgzMjMxLCA3MjM4OSwgCi0gICAgODMwNzksIDUwNiwgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCAxMjE0MDcsIAotICAgIDg4NDEsIDk4Mzc0NywgNTE2LCA5Mzk3NCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCAKLSAgICA3NDMzMywgMTIwMTgyLCAxMTgyNywgNjcxNjUsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCA2Nzk4NiwgCi0gICAgNjU4NCwgNzc0OSwgMTEwMzcsIDEyODc0MywgMTc1OCwgMTE5MDc0LCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIAotICAgIDE5MzUsIDExNTE3LCAxMjAxOTMsIDEyMDE5NiwgODMwODIsIDE5MzEsIDEyMDE4OSwgNzQ4MzksIDEyMDE5MSwgMTIxNywgCi0gICAgNjQ3MDIsIDEyNjQzLCA4MjUsIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDc4ODM0LCA5MTM4LCA3ODgzMSwgCi0gICAgNzg4MzMsIDEyNjMxLCA3MTg3MSwgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMTI3MTk5LCAxMTMxMywgCi0gICAgMTk0ODAzLCAzNDAzLCA5ODM2NTUsIDEyMDI3MSwgNjQzNjQsIDkyMjY5LCAxMjEyODIsIDcyNDMxLCA4OTk4LCAxMjk4OCwgCi0gICAgMTE5OTgzLCA5MTUyLCA5MjE2MSwgMCwgMTI2NDg0LCA2NzU4OSwgNDE4NTAsIDY0MjkwLCAzNDMzLCA5MjM5MywgMTI2MTUsIAotICAgIDE1OTQsIDQyMTkyLCA2OTE0LCA2NjM5MiwgMCwgMTE5NTY5LCA3NDU2NSwgNDEzNTMsIDY3NjAyLCA2NzYxMSwgNDMzNywgMCwgCi0gICAgMTI3Mjk2LCA5MTgsIDY1MDM1LCA0MTM1MSwgNzY4MSwgMTk0OTAwLCA0MjU3NywgNDEzOTMsIDEyNjY4LCA3MjM5NSwgCi0gICAgMjQ3NywgMTI3Mjg1LCAxMjEyNDksIDExODg4MCwgMCwgNjc2MDQsIDY3NjgzLCAxMjcyMzUsIDU3MywgMTI3MjgyLCAKLSAgICAxMjA1NDMsIDExNDE3LCA5MjY2MSwgMTE5ODE0LCAxMTkzMDksIDY3NTk5LCAwLCA3MjQxMCwgNjc2MDcsIDExNDgyLCAwLCAKLSAgICAzOTgxLCAzMzU3LCAwLCA0MjIyMywgNDIwNywgMTI4OCwgNzg1MDMsIDc4ODM5LCA2NzcyOCwgNzc5MDcsIDExNTg5LCAKKyAgICAxMDc3NiwgNzQ1MzQsIDc3MDEsIDE5NDk3NiwgMTAwNDc0LCA3NDk5MiwgMTczMiwgNDAzMCwgOTgzNDQyLCAzOTYzLCAKKyAgICA2NTMzNSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgNjUzMzMsIDY1MzI0LCA5MTQsIDY1MzIzLCA4MDcxLCAzNTM4LCAxOTUwMTMsIAorICAgIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDk4Mzk1MywgMTE4MTksIDcxOTA4LCAxMjAwOSwgMTIzOTksIAorICAgIDEyMTIxNywgNjc4NTIsIDY1NTM3LCA3ODAwMiwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgODk2MCwgMCwgCisgICAgNzAxMjMsIDY1MzE3LCA3Nzg4MCwgOTgzMTk5LCA1ODc2LCA3MDM3NCwgMTIzMDQsIDEyOTM1NSwgMCwgNjUzMTUsIDkyNjcwLCAKKyAgICAxMjg1MTEsIDcxODYyLCAwLCAxMjc5NTcsIDExOTYyMSwgMTExMTQsIDcxOTA5LCAxMjQ0NywgNjQ0ODYsIDEyMTIzNiwgCisgICAgMTI2NTYyLCA5ODMxMjksIDAsIDEyMTM5MywgOTgzODAyLCA0Mjc2NywgMTA5MTUsIDk4MzE3NCwgMTIwMDcsIDQzNjk1LCAKKyAgICA2ODAzMywgMTE5NzUsIDEwMTAxMCwgMTI4NzQ1LCA5MjYwNCwgMjU1NSwgODYyOSwgMTI4NjQwLCA0MTEzMywgNDE4NzIsIAorICAgIDQzNzA2LCA0NDk2LCAxMDA2OTIsIDgzMTA4LCAxMjAyNDEsIDEyODE2NCwgMTAwNjkxLCAwLCA5ODM1NTMsIDY0NzMwLCAKKyAgICA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgNjU1OTYsIDY3ODM3LCAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIAorICAgIDEyNzg0LCA3NzkyLCAxMzkzLCA3ODE5MSwgMTExNTcsIDc0Mzg2LCAxMjcyNzQsIDgyMzMsIDEyODIwLCAxMDA4NDcsIAorICAgIDY2ODMsIDEyNTExMiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAxMDA2OTksIDE0NzMsIDQyODIwLCA2NDMyOSwgCisgICAgMTAwODE2LCA2NzI0MywgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDcyNDE3LCA0MTEwNCwgOTQwMDMsIDM0MDYsIAorICAgIDEwNTQsIDcxMzIwLCAxMDQwLCA2NTQ1MCwgMTEzNzY5LCA0NDM0LCAxMDY5LCAxOTQ3ODQsIDEwMDcwMywgNjU3MzcsIAorICAgIDEyMDEyOSwgMTIwMzAyLCAwLCA4MzIxMSwgOTY5MywgNDE5NDMsIDY4MzA1LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAKKyAgICA5ODMzNTMsIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgOTE3NzY5LCA2NTkzNywgNzg1NzIsIDQxNzU4LCAxMDY0NiwgCisgICAgMTAwNjY1LCAxMTg4MzMsIDIyNjgsIDcwNDI0LCA3NDgzMCwgNzg1NjksIDEyNzQzLCA5ODM2ODksIDY0ODAsIDkxNzc2MSwgCisgICAgNDE3NzksIDQyNTgwLCA2NjYwMSwgMTIyMDcsIDc3ODk1LCA2MzM1LCA0MzkxOSwgMTEzMTIsIDY0ODA3LCA5Mjk2MiwgCisgICAgNjk5ODksIDQxNzY3LCAxMTk2MjksIDk4Mzc2NCwgNDMwMjAsIDc0OTc0LCAzOTU1LCA3NDI1NCwgMTIwNjMyLCA5ODM3NTQsIAorICAgIDkxNzg2MSwgNzAxODcsIDY5OTc1LCA5NzcwLCA5MjQ2LCAxMjIzMCwgMTI1MDQ3LCAxMjkxMDUsIDc4NTgwLCAxMDQ0OCwgCisgICAgNDE3ODMsIDQxNzg2LCA3MDY2MywgMTI3OTcsIDI3NTUsIDY0NTcxLCA3ODU3OCwgMTI3OTk0LCA0ODU3LCA5ODM1NzcsIAorICAgIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgMTAwNzIyLCA3ODU3NCwgMCwgMTExMTYsIDQzODQyLCA1NzQ3LCA3ODgyNSwgNzA0NzEsIAorICAgIDc5NzgsIDQxMDkyLCA3NDU3MSwgMCwgMTE5MjQsIDQzODEyLCA0MjE0NCwgNjUwMTUsIDEwMDcyNSwgNTYzLCAwLCAKKyAgICAxMDA3OTUsIDEyNzk4LCAxMTI3MSwgNTcsIDkyNzE3LCA4MzQ5NSwgMTAwNzI3LCAxMTkwNDMsIDcxMjY4LCA5NDA1MSwgCisgICAgNDMxMzcsIDY5NCwgOTgzNzE5LCA5ODc2LCAxMjg3MjAsIDgzMjczLCAwLCA3MDM5MiwgNjQ1MzcsIDEyNzkxNCwgMjc3LCAKKyAgICA3NDM4NSwgNzIyOSwgMTI3NjEsIDk4MzE0NSwgNzQ0NjYsIDEzMDI1LCA2NDgxMSwgODc1NywgNzg4MjQsIDc4MTg4LCAKKyAgICAxNTc0LCA3MzgxLCAxOTQ2MTYsIDI1MjUsIDQ4NTIsIDU3NDksIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgCisgICAgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAxMDA2NjEsIDY5NzI1LCA5MDU1LCA0MTg1MywgNDg1OCwgCisgICAgNzUwMDAsIDkyODk2LCA0MzYsIDQ3NzEsIDkxNzkzNiwgMjc4NiwgOTMwMjgsIDQ4NTYsIDgwNTEsIDkyNTAwLCAxMTk2MDksIAorICAgIDcxMzI3LCA5NjQ0LCA3MTEzMywgMTI1MDA5LCAxMjg4NzMsIDE5NDkxNiwgMTIwNzMyLCA2NjcxMCwgNjgwODQsIDk4MzM2MSwgCisgICAgNzM5MDYsIDY3NDA5LCAxMjcxMTQsIDkxNzYxNCwgMTAyMzQsIDU4NDMsIDExOTM5LCA3MDM0NiwgNDIxNTcsIDAsIDMxNTcsIAorICAgIDE5NDY1OSwgNjgzOTMsIDc1MDM1LCAzNTA0LCA3MDQyMiwgOTgzMDQyLCAxMDgyMiwgNTE0OSwgNjYwMjksIDEwMjI2LCAKKyAgICA2NTE0MiwgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTI0OTkzLCA0MCwgMTI2NTcsIDk4MzY2NSwgMCwgMzg2LCAxMjE0NjcsIAorICAgIDg4MzQsIDEyMDk3NCwgMTI4MTUsIDQzNTc0LCAxMjE0MzAsIDczOTA3LCAxMDA1MTMsIDcwMTEzLCA3MjIwLCAxMTgzOSwgCisgICAgMTIxMTQzLCA3NDMxNiwgMTk0NzUyLCA2NTMyMiwgNDMwNCwgNzQ1MDMsIDgxNjAsIDc0MzE0LCAxMDA1MTEsIDEyMTI3NiwgCisgICAgOTgzOTQwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTIxMTM5LCAxMzMwMywgNzA0MDYsIDkyMzkyLCAxMjEzODQsIAorICAgIDc1OTksIDEyNzgsIDQzNjE2LCAxMzI2OSwgMTI3ODA1LCA5MjQyMywgNzQzODcsIDc4MTc5LCA3ODU5OCwgNzQ0OTIsIAorICAgIDYwOTcsIDc1NjgsIDg3ODAsIDQ5ODIsIDEyNzQ2NCwgNzQ1MDEsIDEwMDcyMCwgNzg1OTIsIDY4NzQ1LCAyNjcyLCAzNzM1LCAKKyAgICAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMTI4MzcwLCA0Mzc0MiwgMTI4MzczLCAKKyAgICA5NDg3LCAxMTk5NTksIDY4Nzg1LCAzODQyLCA3MTkxMSwgNzg2NjgsIDEyNDQyLCA2MTkzLCA5NzkxLCAxMTkzNDQsIAorICAgIDEwMDUyMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA2NjcyMSwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAKKyAgICA3MDAwNiwgMTk0NjkwLCAxMDA1MTgsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgNDI1MDcsIAorICAgIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAxMTk1OTcsIDIwNzIsIDkyMzEyLCA2OTk1LCA3MjgwMSwgNTQzNywgCisgICAgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgMTAwNTE0LCAxOTksIDY4MDc1LCA0MTA1LCAxOTQ4NDUsIDM4NjQsIAorICAgIDc1MDA2LCAxOTQ3MTAsIDY3ODE4LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDc4LCAxMjg0NzEsIDY0NzIsIAorICAgIDY1ODE0LCA3MTkxOSwgMTAwODU1LCA0NzI0LCAxMjg0OTEsIDE5NTA0MSwgOTE5MSwgMTk0NjQ1LCA2NDQzMiwgMTIwMjcwLCAKKyAgICA4Mjk4NywgMTE5MTkwLCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMTk0NjQwLCA2NjgwLCAxOTUwNDIsIDk4MzQyNSwgNzE4NzIsIAorICAgIDY2NzksIDc0NDEyLCA5MjI1MSwgMTE5MzUwLCA3NDQyMSwgMTEzODIsIDEyODI1NCwgNDM4NjIsIDc1MDAxLCAxMTM3MzMsIAorICAgIDE5NDY3OSwgMTk0ODMyLCA2NjgxLCAxMjc0ODIsIDEyNjkzLCAxOTQ4MzYsIDQyNzI3LCA3ODE5NiwgMTI4MjUyLCA0Mzg3NCwgCisgICAgNjU0NDIsIDY4MDQ3LCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDEyNzUzNCwgMTEzMjEsIDEyODg0NSwgCisgICAgMTIwODA5LCAxMjI4OTUsIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCA5MzAxMCwgNzM5MjcsIDkyNDQ0LCAKKyAgICAxMjczMzYsIDY1NzQ2LCAxMTg3OTYsIDY5ODg5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgMTIxMzM5LCAxNjc3LCAKKyAgICA5MTc1OTIsIDgyOTg5LCAxMjY1OTAsIDgzNDE1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgMTAxNjAsIDAsIAorICAgIDEyOTE1MCwgNzU4NSwgNjUxNjksIDIwNTIsIDQzMDgsIDgzNDE0LCA0MzAwMCwgNzUwNSwgNTQzLCA2NDkxNiwgNjQ3MzYsIAorICAgIDExODgzNSwgMTk0NjY1LCA2NDY1NSwgOTgzMDUzLCAxMTg5MjIsIDIwNjQsIDkxNzk2NiwgNDMxNTgsIDc5MDIsIDk4MzIzMSwgCisgICAgNjUyNjUsIDE5NDYzOSwgMTIxMDgwLCAxMjcxNzAsIDEyMjkxNSwgMTI4MDA2LCA5MjU1MCwgOTgzMTg2LCAxMjk5NCwgCisgICAgOTI3MjgsIDEwODI4LCA3NDM3OCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCA4MzIzMSwgNzIzODksIDgzMDc5LCA1MDYsIAorICAgIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgMTIxNDA3LCA4ODQxLCA2Njc3MCwgCisgICAgNTE2LCA5Mzk3NCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCA3NDMzMywgMTIwMTgyLCAKKyAgICAxMTgyNywgNjcxNjUsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCA2Nzk4NiwgNjU4NCwgNzc0OSwgCisgICAgMTEwMzcsIDEyNzE1NywgMTc1OCwgMTE5MDc0LCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIDE5MzUsIDExNTE3LCAKKyAgICAxMjAxOTMsIDEyMDE5NiwgODMwODIsIDE5MzEsIDEwMDQ5OSwgNzQ4MzksIDc0MTA0LCAxMjE3LCA2NDcwMiwgMTI2NDMsIAorICAgIDgyNSwgMTI3ODM4LCAxOTQ5MDUsIDEyMjk0LCA5MjQyOCwgNjY3NDgsIDkxMzgsIDc4ODMxLCA3ODgzMywgMTI2MzEsIAorICAgIDcxODcxLCAxMTA4MCwgNzQ1NTQsIDY0MDAwLCA1NTkxLCAxMjM5LCAxMjcxOTksIDExMzEzLCAxOTQ4MDMsIDM0MDMsIAorICAgIDEyNjU2NCwgMTIwMjcxLCA2NDM2NCwgOTIyNjksIDEyMTI4MiwgNzI0MzEsIDg5OTgsIDEyOTg4LCAxMTk5ODMsIDkxNTIsIAorICAgIDkyMTYxLCAwLCAxMjY0ODQsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIDM0MzMsIDkyMzkzLCAxMjYxNSwgMTU5NCwgNDIxOTIsIAorICAgIDY5MTQsIDY2MzkyLCAxMjUyMDIsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIDEyNzI5NiwgCisgICAgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIDQxMzkzLCAxMjY2OCwgNzIzOTUsIDI0NzcsIAorICAgIDEyNzI4NSwgMTIxMjQ5LCAxMTg4ODAsIDAsIDY3NjA0LCA2NzY4MywgMTI3MjM1LCA1NzMsIDEyNzI4MSwgMTIwNTQzLCAKKyAgICAxMTQxNywgOTI2NjEsIDExOTgxNCwgMTE5MzA5LCA2NzU5OSwgMCwgNzI0MTAsIDY3NjA3LCAxMTQ4MiwgMTI4OTYxLCAKKyAgICAzOTgxLCAzMzU3LCAxMjcxNjQsIDQyMjIzLCA0MjA3LCAxMjg4LCA3ODUwMywgNzg4MzksIDY3NzI4LCA3NzkwNywgMTE1ODksIAogICAgIDQyMTk1LCA3NDQ3NywgMTE5OTk3LCAxMjcxNzgsIDY0NjAyLCA2NzYxOCwgOTI1MzksIDEyMTM2NiwgNDI3ODgsIDY4NDE2LCAKLSAgICA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY2OTA3LCA5NzE3LCAxMTkzMTEsIDAsIDk5NywgMCwgMCwgOTI1NzcsIAotICAgIDAsIDExNDQwLCAxMTM3OSwgNDIwMDAsIDEzMTM5LCA0MjIyMSwgNjUwMTMsIDEyNjk5OSwgMTI3NzYwLCA3MjM5MCwgMCwgCi0gICAgMTE5MjI4LCAxMjAzNSwgMCwgMjgxOCwgMCwgNzQ0MTEsIDczNzkzLCA5ODMyNzgsIDQxNzIsIDcxMjUyLCAxMTk5OTIsIAotICAgIDgzNzMsIDEwODczLCAxMjE5NywgMTI1MDc0LCAxOTUwMTQsIDkyMjY1LCA2OTcwNiwgMTI4NTQwLCA2ODM0LCA3NDM0NywgCi0gICAgNzQ5NTgsIDEyOTAzMywgMTI2OTgyLCA3NDU2MywgNjQ4MjgsIDExNDE5LCAxOTQ4NjgsIDc2NiwgMTI1NywgMTk0NTk4LCAKLSAgICAxMTg4NDUsIDExMzgxLCAzMjY1LCA2NjYxNywgMzI3NCwgMTI2NjI5LCA4MzI1NCwgNzE4NjEsIDk4Mzk1MCwgNzQ1MjIsIAotICAgIDQxOTg5LCAxMjEzMTcsIDAsIDExMzc2OSwgMzI2MywgOTE3OTIyLCA2NTY3MiwgNjkyNDMsIDMyNzAsIDY0NTM5LCAxMTQ4OSwgCi0gICAgOTE3OTExLCAwLCAwLCA3MTEyNywgOTUwNSwgNjU1MTgsIDEyODQ5OCwgNzU2LCAxOTQ2MDUsIDAsIDAsIDE5NDYyMSwgCi0gICAgNzI2MSwgOTI1NDcsIDE4NiwgMCwgMTE5MTU2LCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAxMjk0OSwgNjQ4NTYsIAotICAgIDEyODAwLCA5ODM5MDEsIDc0MjAzLCA2NDcxOCwgMTE1MDcsIDc4NjczLCA5MjQzNCwgNzQ2MjYsIDExMzc2MCwgMTE1NzgsIAotICAgIDk4MzgzNywgMTE5Mjk2LCAxMjA5NzAsIDEyMTEyNywgMTI1MTAxLCAwLCA3MDA4MywgOTI1NCwgNjY4NzcsIDE3OTQsIAotICAgIDY4MzEwLCA2NDUyMSwgNTYyNCwgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIAotICAgIDk0MDYxLCA2ODY1OSwgMTIwMjEzLCAxMjAyMTQsIDE4NzIsIDY2NTA4LCAxMjA0NjcsIDQxMDc5LCAxMDc0OCwgNTUwMiwgCi0gICAgMTE5MzMwLCA0NDUyLCAxMjgwODgsIDk4Mzc3MSwgOTI1MjYsIDQ1MTEsIDEyMDk1OCwgOTgzODc3LCA2NDY3OCwgMTE0MjUsIAotICAgIDAsIDQzMjQ1LCAxMjMxLCA2ODg2MSwgNjk5MDMsIDAsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCA4Njk0LCAKLSAgICA5NTQ2LCAwLCAxMjgzMzIsIDcwNDIxLCAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgCi0gICAgMTE5NjI2LCA3ODIwMiwgNjQwNTgsIDg3OTksIDQyMTMxLCAxMjg2NjIsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIAotICAgIDgzNywgMTA1NjcsIDcyMzg0LCA0MzEwMywgMCwgMTIwNzU0LCAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgCi0gICAgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgNjQwNDUsIDY0MDQ0LCA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAKLSAgICAxMDM0LCAzMzkyLCA4MzMzNiwgNDMwOTEsIDY0MDMzLCA2NDAzMiwgNDI3MzUsIDQzNDk4LCA2NDAzNywgNjQwMzYsIAotICAgIDY0MDM1LCA0MjkxLCAxMjkxNTcsIDY0MDE1LCA2NDAxNCwgNjQ2ODEsIDgzMzk0LCA4MzM5NSwgNzgxNDUsIDcxODk4LCAKLSAgICA0MzA5MCwgODMzOTEsIDM0NzYsIDg5NzMsIDY0MDEyLCA0MjQ3MywgNjQwMTAsIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgCi0gICAgNjQ1MTcsIDc4MTUzLCAyNTM4LCA2NDAwOSwgMjA0LCAwLCA0ODAyLCA0MTExLCA4MjM5LCA5MDk4LCA0ODA1LCA2NDAwMSwgCi0gICAgNjQwNTcsIDc4ODUsIDcyNDcsIDY0MDU0LCA5ODMyNjgsIDAsIDQ3NjcsIDkzNDMsIDY0MDQ5LCA2NDA0OCwgMTIwMDM0LCAKLSAgICAxMTMzLCA2NDA1MywgNjQwNTIsIDQzNDUzLCA2NDA1MCwgNDEzNDAsIDExODk3NSwgODMyNjEsIDEwMDA1LCAxMjMyOSwgCi0gICAgNDEzMzMsIDgzMjU5LCA4NDg5LCAxOTQyLCA5MTc5MjEsIDE5NDgzNCwgNDI1MjAsIDY1NTEwLCAxMjUwNDQsIDY4MjkxLCAKLSAgICAxMDc2MCwgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDEyNzc5OCwgNjQwMjUsIDkxNjcsIDQyMTUxLCAKLSAgICA3ODI0NCwgOTgzMjMyLCAyMDI2LCA2NDAxOSwgNjQwMTgsIDY0MDE3LCA2NDAxNiwgMTI3NjgsIDEyMTM2MSwgNzU4MiwgCi0gICAgNzgyNTIsIDc4MjQ4LCA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAxMjA3OTEsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIAotICAgIDc3OTIwLCA3NTMyLCA0MTQxNCwgNzg1MjAsIDMxNzksIDc4NTE4LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgCi0gICAgNzQ0NTQsIDEwNzUxLCA5MDUxLCAxMjA3MjAsIDY3MDgsIDEwNTM1LCAxMTg5NTUsIDY4MjE4LCA1NTI3NCwgMjAwOCwgCi0gICAgNjQwMzEsIDY0MDMwLCAyOTQsIDQxODc0LCA4MzM4MywgNjQ3OTAsIDY1OTI5LCA4MzM3NiwgODMzMzcsIDgzMzc5LCAKLSAgICA4MzM4MCwgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTk0ODQ0LCAwLCA0MzUxLCA2MzQzLCA0MzI0NywgMTE5ODg4LCAKLSAgICA3MDE1MywgMTE5ODg2LCAxMTk4OTEsIDcyMzg3LCAxMTk4ODksIDExNDMzLCAxMTk4OTUsIDExOTg5NiwgMTk0NjU1LCAKLSAgICA3ODAxLCA2NTU3OCwgODMzNjEsIDEyOTE1LCA0Mzk2OCwgMzI5NywgOTY5OSwgODMzNTcsIDExMzUsIDgzMzUwLCA4MzM1MSwgCi0gICAgODMzNTIsIDE5OTUsIDY3MjIsIDk4MzkyNSwgMTI4ODE1LCAyNTUyLCA0MTU0NiwgNjAsIDY4Mzk0LCA4NjQ5LCA0MTU0OSwgCi0gICAgNzg0OTYsIDcyMzg2LCA4MzM3MSwgNjY4MiwgODMzNjUsIDc4Njc5LCA0MzgzMywgNDE1NDcsIDk4MzYzMCwgMjAxMywgCi0gICAgODMzNjIsIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIAotICAgIDExOTkwOCwgOTEzNywgNzE1NSwgODk5OSwgOTE3OTAxLCA3ODUzMywgMzQ2NiwgMCwgMTIxNDY2LCAxOTk2LCAwLCAzNDUzLCAKLSAgICA2MjgyLCAwLCAyMDAyLCAyMDAwLCAxMjAxNzUsIDUzNywgOTI5NzYsIDQxNzksIDY1MTE5LCAxOTk4LCAxMjA3NDYsIDE4NDIsIAotICAgIDAsIDkyNjc0LCA5NjI4LCA2ODQ0NiwgMTIwODEsIDk4MjYsIDY0NTAyLCAxNzY3LCAwLCA5ODMyNDgsIDEyMDAwMSwgCi0gICAgMTIwMjAxLCA5ODM2NDYsIDEyNDk3NSwgMTI3OTUyLCAzMDU5LCA0NDAyNCwgMTIwMjA0LCA0MzQ5MSwgOTI2OTMsIDAsIAotICAgIDEyMTQ3MiwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgNDMxODksIDAsIDM1OTIsIDEwMDc4LCAwLCA3ODE2MiwgCi0gICAgMTE5NTU4LCA4NTkyLCA2NTg3MCwgNjY0MTcsIDc0NTA0LCAxMDc0MiwgNzI0MDAsIDQyOTE4LCAxOTk0LCA5MjgxLCAzMjk2LCAKLSAgICAxMjg2NSwgMTk5NywgMTg5NSwgCisgICAgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2NjkwNywgOTcxNywgMTE5MzExLCAxMDA3MzgsIDk5NywgMTE5OTk4LCAKKyAgICA5MTc5MTAsIDkyNTc3LCAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIAorICAgIDEyNzc2MCwgNzIzOTAsIDEyMDcxMywgMTE5MjI4LCAxMjAzNSwgOTgzOTA2LCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIAorICAgIDEyOTQyNCwgNDE3MiwgNzEyNTIsIDExOTk5MiwgODM3MywgMTA4NzMsIDEyMTk3LCAxMjUwNzQsIDE5NTAxNCwgOTIyNjUsIAorICAgIDY5NzA2LCAxMDA4NTgsIDY4MzQsIDc0MzQ3LCA3NDk1OCwgNjk2NDUsIDEyNjk4MiwgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgCisgICAgMTI2NTcwLCA3NjYsIDEyNTcsIDE5NDU5OCwgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIDMyNzQsIDEyNjYyOSwgCisgICAgODMyNTQsIDcxODYxLCA5ODM5NTAsIDcyNzk2LCA0MTk4OSwgMTIxMzE3LCAxOTQ4MDYsIDM0MTgsIDMyNjMsIDkxNzkyMiwgCisgICAgNjU2NzIsIDY5MjQzLCAzMjcwLCA2NDUzOSwgMTE0ODksIDkxNzkxMSwgMCwgMCwgNzExMjcsIDk1MDUsIDY1NTE4LCAKKyAgICAxMjg0OTgsIDc1NiwgMTIwNDAwLCAxMjUyNDMsIDk4MzcwMCwgMTk0NjIxLCA3MjYxLCA5MjU0NywgMTg2LCA5ODM3NjksIAorICAgIDcyNzcxLCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAxMjk0OSwgNjQ4NTYsIDEyODAwLCAxMjc1MjksIDc0MjAzLCAKKyAgICA2NDcxOCwgMTE1MDcsIDc4NjczLCA5MjQzNCwgNzQ2MjYsIDExMzc2MCwgMTE1NzgsIDk4MzgzNywgMTE5Mjk2LCAxMjA5NzAsIAorICAgIDEyMTEyNywgMTI1MTAxLCAwLCA3MDA4MywgOTI1NCwgNjY4NzcsIDE3OTQsIDY4MzEwLCA2NDUyMSwgNTYyNCwgNzI3NjYsIAorICAgIDEyMDIyMSwgMTE5OTU4LCAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgOTQwNjEsIDY4NjU5LCAxMjAyMTMsIDEyMDIxNCwgCisgICAgMTg3MiwgNjY1MDgsIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAxMTkzMzAsIDQ0NTIsIDEyODA4OCwgOTgzNTYwLCAKKyAgICA5MjUyNiwgNDUxMSwgMTIwOTU4LCA5ODM4NzcsIDY0Njc4LCAxMTQyNSwgMCwgNDMyNDUsIDEyMzEsIDY4ODYxLCA2OTkwMywgCisgICAgOTgzNjQzLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgOTU0NiwgOTgzMjM3LCAxMjgzMzIsIAorICAgIDcwNDIxLCAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgMTE5MDU4LCA3ODIwMiwgNjQwNTgsIAorICAgIDg3OTksIDQyMTMxLCAxMjg2NjIsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIDgzNywgMTA1NjcsIDcyMzg0LCA0MzEwMywgCisgICAgMTAwMzUyLCAxMjA3NTQsIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDQzNzQ5LCAxMDc1NiwgNjQwNDcsIDQyNjA2LCAKKyAgICA2NDA0NSwgNjQwNDQsIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxMDAzNTYsIDEwMzQsIDMzOTIsIDgzMzM2LCAKKyAgICA0MzA5MSwgNjQwMzMsIDY0MDMyLCA0MjczNSwgNDM0OTgsIDY0MDM3LCA2NDAzNiwgNjQwMzUsIDQyOTEsIDEyOTE1NywgCisgICAgNjQwMTUsIDY0MDE0LCA2NDY4MSwgODMzOTQsIDgzMzk1LCA3ODE0NSwgNzE4OTgsIDQzMDkwLCA4MzM5MSwgMzQ3NiwgCisgICAgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIAorICAgIDY0MDA5LCAyMDQsIDEwMDg0MSwgNDgwMiwgNDExMSwgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIDY0MDU3LCA3ODg1LCAKKyAgICA3MjQ3LCA2NDA1NCwgOTgzMjY4LCAxMTg5MjEsIDQ3NjcsIDkzNDMsIDY0MDQ5LCA2NDA0OCwgMTIwMDM0LCAxMTMzLCAKKyAgICA2NDA1MywgNjQwNTIsIDQzNDUzLCA2NDA1MCwgNDEzNDAsIDExODk3NSwgODMyNjEsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIAorICAgIDgzMjU5LCA4NDg5LCAxOTQyLCAxMDA4NDMsIDE5NDgzNCwgNDI1MjAsIDY1NTEwLCAxMjUwNDQsIDY4MjkxLCAxMDc2MCwgCisgICAgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDEyNzc5OCwgNjQwMjUsIDkxNjcsIDQyMTUxLCA3ODI0NCwgCisgICAgOTgzMjMyLCAyMDI2LCA2NDAxOSwgNjQwMTgsIDY0MDE3LCA2NDAxNiwgMTI3NjgsIDEwMDUzNywgNzU4MiwgNzgyNTIsIAorICAgIDc4MjQ4LCA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAxMjA3OTEsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIDc3OTIwLCAKKyAgICA3NTMyLCA0MTQxNCwgNzg1MjAsIDMxNzksIDcwNzQ1LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgNzQ0NTQsIAorICAgIDEwNzUxLCA5MDUxLCAxMjA3MjAsIDY3MDgsIDEwNTM1LCAxMTg5NTUsIDY4MjE4LCA1NTI3NCwgMjAwOCwgNjQwMzEsIAorICAgIDY0MDMwLCAyOTQsIDQxODc0LCA4MzM4MywgNjQ3OTAsIDY1OTI5LCA4MzM3NiwgODMzMzcsIDgzMzc5LCA4MzM4MCwgCisgICAgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTAwNDA2LCA5ODM2NTAsIDQzNTEsIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIAorICAgIDcwMTUzLCAxMDA3NTMsIDc4NzMzLCA3MjM4NywgMTE5ODg5LCAxMTQzMywgMTAwNTQ0LCAxMTk4OTYsIDE5NDY1NSwgNzgwMSwgCisgICAgNjU1NzgsIDgzMzYxLCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDgzMzU3LCAxMTM1LCA4MzM1MCwgODMzNTEsIDgzMzUyLCAKKyAgICAxOTk1LCA2NzIyLCA5ODM5MjUsIDEyODgxNSwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIDc4NDk2LCAKKyAgICA3MjM4NiwgODMzNzEsIDY2ODIsIDgzMzY1LCA3ODY3OSwgNDM4MzMsIDQxNTQ3LCA5ODM2MzAsIDIwMTMsIDgzMzYyLCAKKyAgICA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAxMTk5MDgsIDkxMzcsIAorICAgIDcxNTUsIDIyNjQsIDkxNzkwMSwgNzg1MzMsIDM0NjYsIDE5NDk4NywgMTIxMDM5LCAxOTk2LCA5ODM2NzUsIDM0NTMsIAorICAgIDM0MTIsIDAsIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCA5Mjk3NiwgNDE3OSwgNjUxMTksIDE5OTgsIDEyMDc0NiwgMTg0MiwgCisgICAgMCwgOTI2NzQsIDk2MjgsIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDM0MTMsIDk4MzI0OCwgMTIwMDAxLCAKKyAgICAxMjAyMDEsIDk4MzY0NiwgMTI0OTc1LCAxMjc5NTIsIDMwNTksIDQ0MDI0LCAxMjAyMDQsIDQzNDkxLCA5MjY5MywgCisgICAgMTAwNTQ3LCAxMjE0NzIsIDkyNDUyLCA0MTAwLCA5MjAsIDE4MTEsIDEzNTUsIDQzMTg5LCAwLCAzNTkyLCAxMDA3OCwgCisgICAgMTAwMzk0LCA3ODE2MiwgMTAwODQ2LCA4NTkyLCA2NTg3MCwgNjY0MTcsIDc0NTA0LCAxMDc0MiwgNzI0MDAsIDQyOTE4LCAKKyAgICAxOTk0LCA5MjgxLCAzMjk2LCAxMjg2NSwgMTk5NywgMTg5NSwgCiB9OwogCiAjZGVmaW5lIGNvZGVfbWFnaWMgNDcKZGlmZiAtLWdpdCBhL01vZHVsZXMvd2lucmVwYXJzZS5oIGIvTW9kdWxlcy93aW5yZXBhcnNlLmgKaW5kZXggNjZmNzc3NS4uMjgwNDljOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy93aW5yZXBhcnNlLmgKKysrIGIvTW9kdWxlcy93aW5yZXBhcnNlLmgKQEAgLTIsNyArMiw3IEBACiAjZGVmaW5lIFB5X1dJTlJFUEFSU0VfSAogCiAjaWZkZWYgTVNfV0lORE9XUwotI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0xMCw5ICsxMCwxMCBAQAogCiAvKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSB3YXMgY29waWVkIGZyb20KICAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9mZjU1MjAxMi5hc3B4IGFzIHRoZSByZXF1aXJlZAotICAgaW5jbHVkZSBkb2Vzbid0IHNlZW0gdG8gYmUgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCi0gICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuICovCi10eXBlZGVmIHN0cnVjdCBfUkVQQVJTRV9EQVRBX0JVRkZFUiB7CisgICBpbmNsdWRlIGttXG50aWZzLmggaXNuJ3QgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCisgICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuIFVzZSB1bmlxdWUgbmFtZXMgdG8gYXZvaWQgY29uZmxpY3Rpbmcgd2l0aAorICAgdGhlIHN0cnVjdHVyZSBhcyBkZWZpbmVkIGJ5IE1pbiBHVy4gKi8KK3R5cGVkZWYgc3RydWN0IHsKICAgICBVTE9ORyBSZXBhcnNlVGFnOwogICAgIFVTSE9SVCBSZXBhcnNlRGF0YUxlbmd0aDsKICAgICBVU0hPUlQgUmVzZXJ2ZWQ7CkBAIC0zOCwxMSArMzksMTEgQEAKICAgICAgICAgICAgIFVDSEFSICBEYXRhQnVmZmVyWzFdOwogICAgICAgICB9IEdlbmVyaWNSZXBhcnNlQnVmZmVyOwogICAgIH07Ci19IFJFUEFSU0VfREFUQV9CVUZGRVIsICpQUkVQQVJTRV9EQVRBX0JVRkZFUjsKK30gX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIsICpfUHlfUFJFUEFSU0VfREFUQV9CVUZGRVI7CiAKLSNkZWZpbmUgUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSAgRklFTERfT0ZGU0VUKFJFUEFSU0VfREFUQV9CVUZGRVIsXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1JlcGFyc2VCdWZmZXIpCi0jZGVmaW5lIE1BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFICAoIDE2ICogMTAyNCApCisjZGVmaW5lIF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFIFwKKyAgICBGSUVMRF9PRkZTRVQoX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIsIEdlbmVyaWNSZXBhcnNlQnVmZmVyKQorI2RlZmluZSBfUHlfTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkUgICggMTYgKiAxMDI0ICkKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4bGltaXRlZC5jIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwppbmRleCA0MGMxNzYwLi5jMWE5YmU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3h4bGltaXRlZC5jCisrKyBiL01vZHVsZXMveHhsaW1pdGVkLmMKQEAgLTg5LDcgKzg5LDcgQEAKIH0KIAogc3RhdGljIGludAotWHhvX3NldGF0dHIoWHhvT2JqZWN0ICpzZWxmLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKK1h4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCiB7CiAgICAgaWYgKHNlbGYtPnhfYXR0ciA9PSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPnhfYXR0ciA9IFB5RGljdF9OZXcoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMveHhtb2R1bGUuYyBiL01vZHVsZXMveHhtb2R1bGUuYwppbmRleCA4NTIzMGQ5Li4wNzY0NDA3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3h4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy94eG1vZHVsZS5jCkBAIC03Niw3ICs3Niw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLVh4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCitYeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChzZWxmLT54X2F0dHIgPT0gTlVMTCkgewogICAgICAgICBzZWxmLT54X2F0dHIgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWJtb2R1bGUuYyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCmluZGV4IGZjY2I2MTYuLmNmZTdmODggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYm1vZHVsZS5jCisrKyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCkBAIC01Nyw3ICs1Nyw3IEBACiB9IGNvbXBvYmplY3Q7CiAKIHN0YXRpYyB2b2lkCi16bGliX2Vycm9yKHpfc3RyZWFtIHpzdCwgaW50IGVyciwgY2hhciAqbXNnKQoremxpYl9lcnJvcih6X3N0cmVhbSB6c3QsIGludCBlcnIsIGNvbnN0IGNoYXIgKm1zZykKIHsKICAgICBjb25zdCBjaGFyICp6bXNnID0gWl9OVUxMOwogICAgIC8qIEluIGNhc2Ugb2YgYSB2ZXJzaW9uIG1pc21hdGNoLCB6c3QubXNnIHdvbid0IGJlIGluaXRpYWxpemVkLgpAQCAtMTk5LDE4ICsxOTksMTggQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHpsaWIuY29tcHJlc3MKIAotICAgIGJ5dGVzOiBQeV9idWZmZXIKKyAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgQmluYXJ5IGRhdGEgdG8gYmUgY29tcHJlc3NlZC4KLSAgICBsZXZlbDogaW50KGNfZGVmYXVsdD0iWl9ERUZBVUxUX0NPTVBSRVNTSU9OIikgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT04KLSAgICAgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOS4KICAgICAvCisgICAgbGV2ZWw6IGludChjX2RlZmF1bHQ9IlpfREVGQVVMVF9DT01QUkVTU0lPTiIpID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OCisgICAgICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkgb3IgLTEuCiAKIFJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpieXRlcywgaW50IGxldmVsKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFlNjRjMmMzMDc2MzIxYTAgaW5wdXQ9YmUzYWJlOTkzNGJkYTRiM10qLworemxpYl9jb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IGxldmVsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4MDkwNmQ3M2Y2Mjk0YzggaW5wdXQ9NjM4ZDU0YjYzMTVkYmVkM10qLwogewogICAgIFB5T2JqZWN0ICpSZXRWYWwgPSBOVUxMOwogICAgIEJ5dGUgKmlidWY7CkBAIC0yMTgsOCArMjE4LDggQEAKICAgICBpbnQgZXJyLCBmbHVzaDsKICAgICB6X3N0cmVhbSB6c3Q7CiAKLSAgICBpYnVmID0gYnl0ZXMtPmJ1ZjsKLSAgICBpYnVmbGVuID0gYnl0ZXMtPmxlbjsKKyAgICBpYnVmID0gZGF0YS0+YnVmOworICAgIGlidWZsZW4gPSBkYXRhLT5sZW47CiAKICAgICB6c3Qub3BhcXVlID0gTlVMTDsKICAgICB6c3QuemFsbG9jID0gUHlabGliX01hbGxvYzsKQEAgLTMxOCwxMSArMzE4LDExIEBACiAKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgQ29tcHJlc3NlZCBkYXRhLgorICAgIC8KICAgICB3Yml0czogaW50KGNfZGVmYXVsdD0iTUFYX1dCSVRTIikgPSBNQVhfV0JJVFMKICAgICAgICAgVGhlIHdpbmRvdyBidWZmZXIgc2l6ZSBhbmQgY29udGFpbmVyIGZvcm1hdC4KICAgICBidWZzaXplOiBzc2l6ZV90KGNfZGVmYXVsdD0iREVGX0JVRl9TSVpFIikgPSBERUZfQlVGX1NJWkUKICAgICAgICAgVGhlIGluaXRpYWwgb3V0cHV0IGJ1ZmZlciBzaXplLgotICAgIC8KIAogUmV0dXJucyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTMzMCw3ICszMzAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfZGVjb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHdiaXRzLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZzaXplKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3YzdlMzUxMTFkYzhjNDIgaW5wdXQ9YzEzZGQyYzU2OTZjZDE3Zl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3YzdlMzUxMTFkYzhjNDIgaW5wdXQ9MjE5NjA5MzYyMDhlOWE1Yl0qLwogewogICAgIFB5T2JqZWN0ICpSZXRWYWwgPSBOVUxMOwogICAgIEJ5dGUgKmlidWY7CkBAIC03MjEsOSArNzIxLDkgQEAKICAgICAgICAgICAgIG5ld19kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuZXdfc2l6ZSk7CiAgICAgICAgICAgICBpZiAobmV3X2RhdGEgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpLAorICAgICAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19kYXRhKSwKICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT51bnVzZWRfZGF0YSksIG9sZF9zaXplKTsKLSAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSkgKyBvbGRfc2l6ZSwKKyAgICAgICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSkgKyBvbGRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT56c3QubmV4dF9pbiwgbGVmdF9zaXplKTsKICAgICAgICAgICAgIFB5X1NFVFJFRihzZWxmLT51bnVzZWRfZGF0YSwgbmV3X2RhdGEpOwogICAgICAgICAgICAgc2VsZi0+enN0LmF2YWlsX2luID0gMDsKQEAgLTc1MCwxMSArNzUwLDExIEBACiAKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgVGhlIGJpbmFyeSBkYXRhIHRvIGRlY29tcHJlc3MuCisgICAgLwogICAgIG1heF9sZW5ndGg6IHNzaXplX3QgPSAwCiAgICAgICAgIFRoZSBtYXhpbXVtIGFsbG93YWJsZSBsZW5ndGggb2YgdGhlIGRlY29tcHJlc3NlZCBkYXRhLgogICAgICAgICBVbmNvbnN1bWVkIGlucHV0IGRhdGEgd2lsbCBiZSBzdG9yZWQgaW4KICAgICAgICAgdGhlIHVuY29uc3VtZWRfdGFpbCBhdHRyaWJ1dGUuCi0gICAgLwogCiBSZXR1cm4gYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIHZlcnNpb24gb2YgdGhlIGRhdGEuCiAKQEAgLTc2Niw3ICs3NjYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU1MTczYzc0ZTcxMDM1MiBpbnB1dD1kNmRlOWI1M2M0NTY2YjhhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU1MTczYzc0ZTcxMDM1MiBpbnB1dD1iODVhMjEyYTAxMmI3NzBhXSovCiB7CiAgICAgaW50IGVyciA9IFpfT0s7CiAgICAgUHlfc3NpemVfdCBpYnVmbGVuLCBvYnVmbGVuID0gREVGX0JVRl9TSVpFLCBoYXJkX2xpbWl0OwpAQCAtMTMzMyw3ICsxMzMzLDcgQEAKICJ6bGliIGxpYnJhcnksIHdoaWNoIGlzIGJhc2VkIG9uIEdOVSB6aXAuXG4iCiAiXG4iCiAiYWRsZXIzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYW4gQWRsZXItMzIgY2hlY2tzdW0uXG4iCi0iY29tcHJlc3Moc3RyaW5nWywgbGV2ZWxdKSAtLSBDb21wcmVzcyBzdHJpbmcsIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgaW4gMC05LlxuIgorImNvbXByZXNzKGRhdGFbLCBsZXZlbF0pIC0tIENvbXByZXNzIGRhdGEsIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgMC05IG9yIC0xLlxuIgogImNvbXByZXNzb2JqKFtsZXZlbFssIC4uLl1dKSAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKICJjcmMzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYSBDUkMtMzIgY2hlY2tzdW0uXG4iCiAiZGVjb21wcmVzcyhzdHJpbmcsW3diaXRzXSxbYnVmc2l6ZV0pIC0tIERlY29tcHJlc3NlcyBhIGNvbXByZXNzZWQgc3RyaW5nLlxuIgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9hYnN0cmFjdC5jIGIvT2JqZWN0cy9hYnN0cmFjdC5jCmluZGV4IDg4MjA1YmQuLjc0N2VkYTAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYWJzdHJhY3QuYworKysgYi9PYmplY3RzL2Fic3RyYWN0LmMKQEAgLTMyLDggKzMyLDEwIEBACiB7CiAgICAgUHlPYmplY3QgKnY7CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICB2ID0gKFB5T2JqZWN0ICopby0+b2JfdHlwZTsKICAgICBQeV9JTkNSRUYodik7CiAgICAgcmV0dXJuIHY7CkBAIC0xMzcsMTIgKzEzOSwxNiBAQAogewogICAgIFB5TWFwcGluZ01ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IGtleSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwga2V5ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZzsKLSAgICBpZiAobSAmJiBtLT5tcF9zdWJzY3JpcHQpCi0gICAgICAgIHJldHVybiBtLT5tcF9zdWJzY3JpcHQobywga2V5KTsKKyAgICBpZiAobSAmJiBtLT5tcF9zdWJzY3JpcHQpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBtLT5tcF9zdWJzY3JpcHQobywga2V5KTsKKyAgICAgICAgYXNzZXJ0KChpdGVtICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOworICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CiAKICAgICBpZiAoby0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2UpIHsKICAgICAgICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgewpAQCAtNjY5LDEzICs2NzUsMzEgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBfUHlfSURFTlRJRklFUihfX2Zvcm1hdF9fKTsKIAorICAgIGlmIChmb3JtYXRfc3BlYyAhPSBOVUxMICYmICFQeVVuaWNvZGVfQ2hlY2soZm9ybWF0X3NwZWMpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGb3JtYXQgc3BlY2lmaWVyIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShmb3JtYXRfc3BlYyktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBGYXN0IHBhdGggZm9yIGNvbW1vbiB0eXBlcy4gKi8KKyAgICBpZiAoZm9ybWF0X3NwZWMgPT0gTlVMTCB8fCBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykgPT0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgICAgICAgICByZXR1cm4gb2JqOworICAgICAgICB9CisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKG9iaik7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBJZiBubyBmb3JtYXRfc3BlYyBpcyBwcm92aWRlZCwgdXNlIGFuIGVtcHR5IHN0cmluZyAqLwogICAgIGlmIChmb3JtYXRfc3BlYyA9PSBOVUxMKSB7CiAgICAgICAgIGVtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICAgICAgZm9ybWF0X3NwZWMgPSBlbXB0eTsKICAgICB9CiAKLSAgICAvKiBGaW5kIHRoZSAodW5ib3VuZCEpIF9fZm9ybWF0X18gbWV0aG9kIChhIGJvcnJvd2VkIHJlZmVyZW5jZSkgKi8KKyAgICAvKiBGaW5kIHRoZSAodW5ib3VuZCEpIF9fZm9ybWF0X18gbWV0aG9kICovCiAgICAgbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgJlB5SWRfX19mb3JtYXRfXyk7CiAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCkBAIC0xMTIyLDggKzExNDYsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX25lZ2F0aXZlKQogICAgICAgICByZXR1cm4gKCptLT5uYl9uZWdhdGl2ZSkobyk7CkBAIC0xMTM2LDggKzExNjIsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX3Bvc2l0aXZlKQogICAgICAgICByZXR1cm4gKCptLT5uYl9wb3NpdGl2ZSkobyk7CkBAIC0xMTUwLDggKzExNzgsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX2ludmVydCkKICAgICAgICAgcmV0dXJuICgqbS0+bmJfaW52ZXJ0KShvKTsKQEAgLTExNjQsOCArMTE5NCwxMCBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfYWJzb2x1dGUpCiAgICAgICAgIHJldHVybiBtLT5uYl9hYnNvbHV0ZShvKTsKQEAgLTExODEsOCArMTIxMywxMCBAQAogUHlOdW1iZXJfSW5kZXgoUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaWYgKGl0ZW0gPT0gTlVMTCkKKyAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgaWYgKFB5TG9uZ19DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgICAgIHJldHVybiBpdGVtOwpAQCAtMTI2NSw0MiArMTI5OSw1NSBAQAogUHlPYmplY3QgKgogUHlOdW1iZXJfTG9uZyhQeU9iamVjdCAqbykKIHsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKICAgICBQeU9iamVjdCAqdHJ1bmNfZnVuYzsKICAgICBQeV9idWZmZXIgdmlldzsKICAgICBfUHlfSURFTlRJRklFUihfX3RydW5jX18pOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG8pKSB7CiAgICAgICAgIFB5X0lOQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIG87CiAgICAgfQogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfaW50KSB7IC8qIFRoaXMgc2hvdWxkIGluY2x1ZGUgc3ViY2xhc3NlcyBvZiBpbnQgKi8KLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KG8pOworICAgICAgICByZXN1bHQgPSAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludChvKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmICFQeUxvbmdfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIHRydW5jX2Z1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX3RydW5jX18pOwogICAgIGlmICh0cnVuY19mdW5jKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0cnVuY2F0ZWQgPSBQeUV2YWxfQ2FsbE9iamVjdCh0cnVuY19mdW5jLCBOVUxMKTsKLSAgICAgICAgUHlPYmplY3QgKmludF9pbnN0YW5jZTsKKyAgICAgICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3QodHJ1bmNfZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRih0cnVuY19mdW5jKTsKLSAgICAgICAgaWYgKHRydW5jYXRlZCA9PSBOVUxMIHx8IFB5TG9uZ19DaGVjayh0cnVuY2F0ZWQpKQotICAgICAgICAgICAgcmV0dXJuIHRydW5jYXRlZDsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8IFB5TG9uZ19DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogICAgICAgICAvKiBfX3RydW5jX18gaXMgc3BlY2lmaWVkIHRvIHJldHVybiBhbiBJbnRlZ3JhbCB0eXBlLAogICAgICAgICAgICBidXQgaW50KCkgbmVlZHMgdG8gcmV0dXJuIGFuIGludC4gKi8KLSAgICAgICAgbSA9IHRydW5jYXRlZC0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOworICAgICAgICBtID0gcmVzdWx0LT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgICAgIGlmIChtID09IE5VTEwgfHwgbS0+bmJfaW50ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgIl9fdHJ1bmNfXyByZXR1cm5lZCBub24tSW50ZWdyYWwgKHR5cGUgJS4yMDBzKSIsCi0gICAgICAgICAgICAgICAgdHJ1bmNhdGVkLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0cnVuY2F0ZWQpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGludF9pbnN0YW5jZSA9IChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KHRydW5jYXRlZCk7Ci0gICAgICAgIFB5X0RFQ1JFRih0cnVuY2F0ZWQpOwotICAgICAgICByZXR1cm4gaW50X2luc3RhbmNlOworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludChyZXN1bHQpKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmICFQeUxvbmdfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMjIsNyArMTM2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShvKSwgMTApOwogCiAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvLCAmdmlldywgUHlCVUZfU0lNUExFKSA9PSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQsICpieXRlczsKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzOwogCiAgICAgICAgIC8qIENvcHkgdG8gTlVMLXRlcm1pbmF0ZWQgYnVmZmVyLiAqLwogICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKil2aWV3LmJ1Ziwgdmlldy5sZW4pOwpAQCAtMTM0NiwyMyArMTM5Myw0MyBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKworICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QobykpIHsKKyAgICAgICAgUHlfSU5DUkVGKG8pOworICAgICAgICByZXR1cm4gbzsKKyAgICB9CiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9mbG9hdCkgeyAvKiBUaGlzIHNob3VsZCBpbmNsdWRlIHN1YmNsYXNzZXMgb2YgZmxvYXQgKi8KICAgICAgICAgUHlPYmplY3QgKnJlcyA9IG0tPm5iX2Zsb2F0KG8pOwotICAgICAgICBpZiAocmVzICYmICFQeUZsb2F0X0NoZWNrKHJlcykpIHsKKyAgICAgICAgZG91YmxlIHZhbDsKKyAgICAgICAgaWYgKCFyZXMgfHwgUHlGbG9hdF9DaGVja0V4YWN0KHJlcykpIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUZsb2F0X0NoZWNrKHJlcykpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICJfX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuMjAwcykiLAotICAgICAgICAgICAgICByZXMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgby0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgLyogSXNzdWUgIzI2OTgzOiB3YXJuIGlmICdyZXMnIG5vdCBvZiBleGFjdCB0eXBlIGZsb2F0LiAqLworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpLiAgIgorICAgICAgICAgICAgICAgICJUaGUgYWJpbGl0eSB0byByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQgIgorICAgICAgICAgICAgICAgICJpcyBkZXByZWNhdGVkLCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uIiwKKyAgICAgICAgICAgICAgICBvLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHZhbCA9IFB5RmxvYXRfQVNfRE9VQkxFKHJlcyk7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHZhbCk7CiAgICAgfQogICAgIGlmIChQeUZsb2F0X0NoZWNrKG8pKSB7IC8qIEEgZmxvYXQgc3ViY2xhc3Mgd2l0aCBuYl9mbG9hdCA9PSBOVUxMICovCi0gICAgICAgIFB5RmxvYXRPYmplY3QgKnBvID0gKFB5RmxvYXRPYmplY3QgKilvOwotICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHBvLT5vYl9mdmFsKTsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShQeUZsb2F0X0FTX0RPVUJMRShvKSk7CiAgICAgfQogICAgIHJldHVybiBQeUZsb2F0X0Zyb21TdHJpbmcobyk7CiB9CkBAIC0xNDMwLDggKzE0OTcsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpCisgICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gcy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfY29uY2F0KQpAQCAtMTQ1NCw4ICsxNTIyLDkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9yZXBlYXQpCkBAIC0xNDgzLDggKzE1NTIsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpCisgICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gcy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfaW5wbGFjZV9jb25jYXQpCkBAIC0xNTA3LDggKzE1NzcsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2lucGxhY2VfcmVwZWF0KQpAQCAtMTUzNiwxNiArMTYwNywxOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCkKKyAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IHMtPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2l0ZW0pIHsKICAgICAgICAgaWYgKGkgPCAwKSB7CiAgICAgICAgICAgICBpZiAobS0+c3FfbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsID0gKCptLT5zcV9sZW5ndGgpKHMpOwotICAgICAgICAgICAgICAgIGlmIChsIDwgMCkKKyAgICAgICAgICAgICAgICBpZiAobCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaSArPSBsOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTYwLDcgKzE2MzQsOSBAQAogewogICAgIFB5TWFwcGluZ01ldGhvZHMgKm1wOwogCi0gICAgaWYgKCFzKSByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIGlmICghcykgeworICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG1wID0gcy0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZzsKICAgICBpZiAobXAgJiYgbXAtPm1wX3N1YnNjcmlwdCkgewpAQCAtMTY4Nyw4ICsxNzYzLDkgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGo7CiAKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICAvKiBTcGVjaWFsLWNhc2UgdGhlIGNvbW1vbiB0dXBsZSBhbmQgbGlzdCBjYXNlcywgZm9yIGVmZmljaWVuY3kuICovCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdCh2KSkgewpAQCAtMTc2OCw4ICsxODQ1LDkgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OyAgLyogcmVzdWx0IGxpc3QgKi8KICAgICBQeU9iamVjdCAqcnY7ICAgICAgICAgIC8qIHJldHVybiB2YWx1ZSBmcm9tIFB5TGlzdF9FeHRlbmQgKi8KIAotICAgIGlmICh2ID09IE5VTEwpCisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpAQCAtMTc4OSw4ICsxODY3LDkgQEAKIHsKICAgICBQeU9iamVjdCAqaXQ7CiAKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QodikgfHwgUHlUdXBsZV9DaGVja0V4YWN0KHYpKSB7CiAgICAgICAgIFB5X0lOQ1JFRih2KTsKQEAgLTE5NzMsOCArMjA1Miw5IEBACiB7CiAgICAgUHlPYmplY3QgKm9rZXksICpyOwogCi0gICAgaWYgKGtleSA9PSBOVUxMKQorICAgIGlmIChrZXkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG9rZXkgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhrZXkpOwogICAgIGlmIChva2V5ID09IE5VTEwpCkBAIC0yMTQzLDcgKzIyMjMsNyBAQAogfQogCiBQeU9iamVjdCAqCi1QeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCitQeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICB0ZXJuYXJ5ZnVuYyBjYWxsOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CkBAIC0yMTUyLDYgKzIyMzIsOCBAQAogICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCiAgICAgICAgY2FsbGVyIGxvc2VzIGl0cyBleGNlcHRpb24gKi8KICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOwogCiAgICAgY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGw7CiAgICAgaWYgKGNhbGwgPT0gTlVMTCkgewpAQCAtMjE2MywxMDggKzIyNDUsMzQzIEBACiAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGNhbGxpbmcgYSBQeXRob24gb2JqZWN0IikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCBhcmcsIGt3KTsKKyAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIGFyZ3MsIGt3YXJncyk7CiAKICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKIAogICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCByZXN1bHQsIE5VTEwpOwogfQogCitQeU9iamVjdCoKK19QeVN0YWNrX0FzVHVwbGUoUHlPYmplY3QgKipzdGFjaywgUHlfc3NpemVfdCBuYXJncykKK3sKKyAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhcmdzID0gUHlUdXBsZV9OZXcobmFyZ3MpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBuYXJnczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gc3RhY2tbaV07CisgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCBpLCBpdGVtKTsKKyAgICB9CisKKyAgICByZXR1cm4gYXJnczsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHRlcm5hcnlmdW5jIGNhbGw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICAvKiBfUHlPYmplY3RfRmFzdENhbGxEaWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwKKyAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQorICAgICAgIGNhbGxlciBsb3NlcyBpdHMgZXhjZXB0aW9uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKworICAgIGFzc2VydChmdW5jICE9IE5VTEwpOworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQobmFyZ3MgPT0gMCB8fCBhcmdzICE9IE5VTEwpOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CisKKyAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgY2FsbGluZyBhIFB5dGhvbiBvYmplY3QiKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICByZXN1bHQgPSBfUHlGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgYXJncywgbmFyZ3MsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJlc3VsdCA9IF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgYXJncywgbmFyZ3MsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdHVwbGU7CisKKyAgICAgICAgLyogU2xvdy1wYXRoOiBidWlsZCBhIHRlbXBvcmFyeSB0dXBsZSAqLworICAgICAgICBjYWxsID0gZnVuYy0+b2JfdHlwZS0+dHBfY2FsbDsKKyAgICAgICAgaWYgKGNhbGwgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgY2FsbGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgdHVwbGUgPSBfUHlTdGFja19Bc1R1cGxlKGFyZ3MsIG5hcmdzKTsKKyAgICAgICAgaWYgKHR1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqY2FsbCkoZnVuYywgdHVwbGUsIGt3YXJncyk7CisgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzdWx0LCBOVUxMKTsKKyAgICB9CisKK2V4aXQ6CisgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBQb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUgb2JqIGZvbGxvd2VkIGFyZ3MuICovCitQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbOF07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IGFyZ2NvdW50OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CisKKyAgICBhcmdjb3VudCA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgaWYgKGFyZ2NvdW50ICsgMSA8PSAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spKSB7CisgICAgICAgIHN0YWNrID0gc21hbGxfc3RhY2s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IFB5TWVtX01hbGxvYygoYXJnY291bnQgKyAxKSAqIHNpemVvZihQeU9iamVjdCAqKSk7CisgICAgICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiB1c2UgYm9ycm93ZWQgcmVmZXJlbmNlcyAqLworICAgIHN0YWNrWzBdID0gb2JqOworICAgIG1lbWNweSgmc3RhY2tbMV0sCisgICAgICAgICAgICAgICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApLAorICAgICAgICAgICAgICBhcmdjb3VudCAqIHNpemVvZihQeU9iamVjdCAqKSk7CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjaywgYXJnY291bnQgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK19QeVN0YWNrX0FzRGljdChQeU9iamVjdCAqKnZhbHVlcywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBQeU9iamVjdCAqa3dkaWN0OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoa3dkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG5rd2FyZ3M7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gKnZhbHVlcysrOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSk7CisgICAgICAgIGFzc2VydChQeURpY3RfR2V0SXRlbShrd2RpY3QsIGtleSkgPT0gTlVMTCk7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShrd2RpY3QsIGtleSwgdmFsdWUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBrd2RpY3Q7Cit9CisKK1B5T2JqZWN0ICoqCitfUHlTdGFja19VbnBhY2tEaWN0KFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3YXJncywKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX2t3bmFtZXMsIFB5T2JqZWN0ICpmdW5jKQoreworICAgIFB5T2JqZWN0ICoqc3RhY2ssICoqa3dzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3M7CisgICAgUHlfc3NpemVfdCBwb3MsIGk7CisgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOworICAgIFB5T2JqZWN0ICprd25hbWVzOworCisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2tFeGFjdChrd2FyZ3MpKTsKKworICAgIG5rd2FyZ3MgPSAoa3dhcmdzICE9IE5VTEwpID8gUHlEaWN0X1NpemUoa3dhcmdzKSA6IDA7CisgICAgaWYgKCFua3dhcmdzKSB7CisgICAgICAgICpwX2t3bmFtZXMgPSBOVUxMOworICAgICAgICByZXR1cm4gYXJnczsKKyAgICB9CisKKyAgICBpZiAoKHNpemVfdCluYXJncyA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHN0YWNrWzBdKSAtIChzaXplX3Qpbmt3YXJncykgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzdGFjayA9IFB5TWVtX01hbGxvYygobmFyZ3MgKyBua3dhcmdzKSAqIHNpemVvZihzdGFja1swXSkpOworICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGt3bmFtZXMgPSBQeVR1cGxlX05ldyhua3dhcmdzKTsKKyAgICBpZiAoa3duYW1lcyA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDb3B5IHBvc2l0aW9uIGFyZ3VtZW50cyAoYm9ycm93ZWQgcmVmZXJlbmNlcykgKi8KKyAgICBtZW1jcHkoc3RhY2ssIGFyZ3MsIG5hcmdzICogc2l6ZW9mKHN0YWNrWzBdKSk7CisKKyAgICBrd3N0YWNrID0gc3RhY2sgKyBuYXJnczsKKyAgICBwb3MgPSBpID0gMDsKKyAgICAvKiBUaGlzIGxvb3AgZG9lc24ndCBzdXBwb3J0IGxvb2t1cCBmdW5jdGlvbiBtdXRhdGluZyB0aGUgZGljdGlvbmFyeQorICAgICAgIHRvIGNoYW5nZSBpdHMgc2l6ZS4gSXQncyBhIGRlbGliZXJhdGUgY2hvaWNlIGZvciBzcGVlZCwgdGhpcyBmdW5jdGlvbiBpcworICAgICAgIGNhbGxlZCBpbiB0aGUgcGVyZm9ybWFuY2UgY3JpdGljYWwgaG90IGNvZGUuICovCisgICAgd2hpbGUgKFB5RGljdF9OZXh0KGt3YXJncywgJnBvcywgJmtleSwgJnZhbHVlKSkgeworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrd25hbWVzLCBpLCBrZXkpOworICAgICAgICAvKiBUaGUgc3RhY2sgY29udGFpbnMgYm9ycm93ZWQgcmVmZXJlbmNlcyAqLworICAgICAgICBrd3N0YWNrW2ldID0gdmFsdWU7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAqcF9rd25hbWVzID0ga3duYW1lczsKKyAgICByZXR1cm4gc3RhY2s7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9GYXN0Q2FsbEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKmt3ZGljdCwgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworCisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlOiB0aGVzZSBhcmUgaW1wbGVtZW50ZWQgaW4gUHl0aG9uL2NldmFsLmMgYW5kCisgICAgICAgX1B5QXJnX1BhcnNlU3RhY2soKS4gKi8KKworICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgfQorCisgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJldHVybiBfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgIH0KKworICAgIGlmIChua3dhcmdzID4gMCkgeworICAgICAgICBrd2RpY3QgPSBfUHlTdGFja19Bc0RpY3Qoc3RhY2sgKyBuYXJncywga3duYW1lcyk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGt3ZGljdCA9IE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgbmFyZ3MsIGt3ZGljdCk7CisgICAgUHlfWERFQ1JFRihrd2RpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCoKIGNhbGxfZnVuY3Rpb25fdGFpbChQeU9iamVjdCAqY2FsbGFibGUsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXR2YWw7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChhcmdzICE9IE5VTEwpOwogCiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphOwotCi0gICAgICAgIGEgPSBQeVR1cGxlX05ldygxKTsKLSAgICAgICAgaWYgKGEgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhLCAwLCBhcmdzKTsKLSAgICAgICAgYXJncyA9IGE7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsQXJnMShjYWxsYWJsZSwgYXJncyk7CiAgICAgfQotICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOworICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKKyAgICB9CiAKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeU9iamVjdCAqY2FsbGFibGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwotCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwotICAgICAgICB2YV9lbmQodmEpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIGlmICghZm9ybWF0IHx8ICEqZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGNhbGxhYmxlKTsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOworICAgIHZhX2VuZCh2YSk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUKFB5T2JqZWN0ICpjYWxsYWJsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqYXJncywgKnJlc3VsdDsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0KLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKLSAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7Ci0gICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOwotICAgICAgICB2YV9lbmQodmEpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKIAotICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIGlmICghZm9ybWF0IHx8ICEqZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGNhbGxhYmxlKTsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKKyAgICB2YV9lbmQodmEpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gY2FsbF9mdW5jdGlvbl90YWlsKGNhbGxhYmxlLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgogY2FsbG1ldGhvZChQeU9iamVjdCogZnVuYywgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhLCBpbnQgaXNfc2l6ZV90KQogewotICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OworCisgICAgYXNzZXJ0KGZ1bmMgIT0gTlVMTCk7CiAKICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZnVuYykpIHsKICAgICAgICAgdHlwZV9lcnJvcigiYXR0cmlidXRlIG9mIHR5cGUgJyUuMjAwcycgaXMgbm90IGNhbGxhYmxlIiwgZnVuYyk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIGlmIChpc19zaXplX3QpCi0gICAgICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKKyAgICBpZiAoIWZvcm1hdCB8fCAhKmZvcm1hdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAKLSAgICByZXR2YWwgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoZnVuYywgYXJncyk7CisgICAgaWYgKGlzX3NpemVfdCkgeworICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7CisgICAgfQorICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gIGV4aXQ6Ci0gICAgLyogYXJncyBnZXRzIGNvbnN1bWVkIGluIGNhbGxfZnVuY3Rpb25fdGFpbCAqLwotICAgIFB5X1hERUNSRUYoZnVuYyk7Ci0KLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJlc3VsdCA9IGNhbGxfZnVuY3Rpb25fdGFpbChmdW5jLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgpAQCAtMjI3NCw4ICsyNTkxLDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCkBAIC0yMjg0LDYgKzI2MDIsNyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMCk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjI5NSw4ICsyNjE0LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCkBAIC0yMzA1LDYgKzI2MjUsNyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMCk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjMxNiw4ICsyNjM3LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKIAotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobywgbmFtZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKQEAgLTIzMjUsNiArMjY0Nyw3IEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yMzM2LDggKzI2NTksOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CkBAIC0yMzQ2LDM5ICsyNjcwLDYzIEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotb2JqYXJnc19ta3R1cGxlKHZhX2xpc3QgdmEpCitzdGF0aWMgUHlPYmplY3QgKioKK29iamFyZ3NfbWtzdGFjayhQeU9iamVjdCAqKnNtYWxsX3N0YWNrLCBQeV9zc2l6ZV90IHNtYWxsX3N0YWNrX3NpemUsCisgICAgICAgICAgICAgICAgdmFfbGlzdCB2YSwgUHlfc3NpemVfdCAqcF9uYXJncykKIHsKLSAgICBpbnQgaSwgbiA9IDA7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIHZhX2xpc3QgY291bnR2YTsKLSAgICBQeU9iamVjdCAqcmVzdWx0LCAqdG1wOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CiAKLSAgICAgICAgUHlfVkFfQ09QWShjb3VudHZhLCB2YSk7CisgICAgLyogQ291bnQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgKi8KKyAgICB2YV9jb3B5KGNvdW50dmEsIHZhKTsKIAotICAgIHdoaWxlICgoKFB5T2JqZWN0ICopdmFfYXJnKGNvdW50dmEsIFB5T2JqZWN0ICopKSAhPSBOVUxMKQotICAgICAgICArK247Ci0gICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobik7Ci0gICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIG4gPiAwKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgICAgIHRtcCA9IChQeU9iamVjdCAqKXZhX2FyZyh2YSwgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgdG1wKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgIG4gPSAwOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFB5T2JqZWN0ICphcmcgPSB2YV9hcmcoY291bnR2YSwgUHlPYmplY3QgKik7CisgICAgICAgIGlmIChhcmcgPT0gTlVMTCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbisrOworICAgIH0KKyAgICAqcF9uYXJncyA9IG47CisKKyAgICAvKiBDb3B5IGFyZ3VtZW50cyAqLworICAgIGlmIChuIDw9IHNtYWxsX3N0YWNrX3NpemUpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKG4gKiBzaXplb2Yoc3RhY2tbMF0pKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIHZhX2VuZChjb3VudHZhKTsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICBzdGFja1tpXSA9IHZhX2FyZyh2YSwgUHlPYmplY3QgKik7CisgICAgfQorICAgIHZhX2VuZChjb3VudHZhKTsKKyAgICByZXR1cm4gc3RhY2s7CiB9CiAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgUHlPYmplY3QgKm5hbWUsIC4uLikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbNV07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgdmFfbGlzdCB2YXJnczsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBjYWxsYWJsZSA9IFB5T2JqZWN0X0dldEF0dHIoY2FsbGFibGUsIG5hbWUpOwogICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQpAQCAtMjM4NiwyOCArMjczNCwzNiBAQAogCiAgICAgLyogY291bnQgdGhlIGFyZ3MgKi8KICAgICB2YV9zdGFydCh2YXJncywgbmFtZSk7Ci0gICAgYXJncyA9IG9iamFyZ3NfbWt0dXBsZSh2YXJncyk7CisgICAgc3RhY2sgPSBvYmphcmdzX21rc3RhY2soc21hbGxfc3RhY2ssIFB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZ3MsICZuYXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogCi0gICAgcmV0dXJuIHRtcDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGFibGUsIHN0YWNrLCBuYXJncyk7CisgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgogX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUsIC4uLikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbNV07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgdmFfbGlzdCB2YXJnczsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBjYWxsYWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2FsbGFibGUsIG5hbWUpOwogICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQpAQCAtMjQxNSwzOCArMjc3MSw1MSBAQAogCiAgICAgLyogY291bnQgdGhlIGFyZ3MgKi8KICAgICB2YV9zdGFydCh2YXJncywgbmFtZSk7Ci0gICAgYXJncyA9IG9iamFyZ3NfbWt0dXBsZSh2YXJncyk7CisgICAgc3RhY2sgPSBvYmphcmdzX21rc3RhY2soc21hbGxfc3RhY2ssIFB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZ3MsICZuYXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogCi0gICAgcmV0dXJuIHRtcDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGFibGUsIHN0YWNrLCBuYXJncyk7CisgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhQeU9iamVjdCAqY2FsbGFibGUsIC4uLikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbNV07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgdmFfbGlzdCB2YXJnczsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgLyogY291bnQgdGhlIGFyZ3MgKi8KICAgICB2YV9zdGFydCh2YXJncywgY2FsbGFibGUpOwotICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHN0YWNrID0gb2JqYXJnc19ta3N0YWNrKHNtYWxsX3N0YWNrLCBQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmdzLCAmbmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQogCi0gICAgcmV0dXJuIHRtcDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGFibGUsIHN0YWNrLCBuYXJncyk7CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKaW5kZXggNmQ0YzZhMS4uYzZkMDcwNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYworKysgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCkBAIC0yNzgsMzEgKzI3OCw2IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mb3JtYXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpieXRlc19pbiwgKmJ5dGVzX291dCwgKnJlczsKLSAgICBjaGFyICpieXRlc3RyaW5nOwotCi0gICAgaWYgKHNlbGYgPT0gTlVMTCB8fCAhUHlCeXRlQXJyYXlfQ2hlY2soc2VsZikgfHwgYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgYnl0ZXN0cmluZyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBieXRlc19pbiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhieXRlc3RyaW5nKTsKLSAgICBpZiAoYnl0ZXNfaW4gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnl0ZXNfb3V0ID0gX1B5Qnl0ZXNfRm9ybWF0KGJ5dGVzX2luLCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYnl0ZXNfaW4pOwotICAgIGlmIChieXRlc19vdXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChieXRlc19vdXQpOwotICAgIFB5X0RFQ1JFRihieXRlc19vdXQpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIHJlczsKLX0KLQogLyogRnVuY3Rpb25zIHN0dWZmZWQgaW50byB0aGUgdHlwZSBvYmplY3QgKi8KIAogc3RhdGljIFB5X3NzaXplX3QKQEAgLTgyMCwxNyArNzk1LDE1IEBACiAgICAgfQogCiAgICAgLyogSXMgaXQgYW4gaW50PyAqLwotICAgIGNvdW50ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7Ci0gICAgaWYgKGNvdW50ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgaWYgKFB5SW5kZXhfQ2hlY2soYXJnKSkgeworICAgICAgICBjb3VudCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAoY291bnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBlbHNlIGlmIChjb3VudCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGVsc2UgeworICAgICAgICB9CisgICAgICAgIGlmIChjb3VudCA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgICAgICBpZiAoY291bnQgPiAwKSB7CiAgICAgICAgICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIGNvdW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xMTE5LDE2MSArMTA5MiwyNyBAQAogI2luY2x1ZGUgInN0cmluZ2xpYi90cmFuc21vZ3JpZnkuaCIKIAogCi0vKiBUaGUgZm9sbG93aW5nIFB5X0xPQ0FMX0lOTElORSBhbmQgUHlfTE9DQUwgZnVuY3Rpb25zCi13ZXJlIGNvcGllZCBmcm9tIHRoZSBvbGQgY2hhciogc3R5bGUgc3RyaW5nIG9iamVjdC4gKi8KLQotLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KLSNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKLSAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgZGlyKQotewotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgY2hhciBieXRlOwotICAgIFB5X2J1ZmZlciBzdWJidWY7Ci0gICAgY29uc3QgY2hhciAqc3ViOwotICAgIFB5X3NzaXplX3QgbGVuLCBzdWJfbGVuOwotICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwotICAgIFB5X3NzaXplX3QgcmVzOwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJmaW5kL3JmaW5kL2luZGV4L3JpbmRleCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsICZzdWJvYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gLTI7Ci0KLSAgICBpZiAoc3Vib2JqKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmc3ViYnVmLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTI7Ci0KLSAgICAgICAgc3ViID0gc3ViYnVmLmJ1ZjsKLSAgICAgICAgc3ViX2xlbiA9IHN1YmJ1Zi5sZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdWIgPSAmYnl0ZTsKLSAgICAgICAgc3ViX2xlbiA9IDE7Ci0gICAgfQotICAgIGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQotICAgICAgICByZXMgPSAtMTsKLSAgICBlbHNlIGlmIChzdWJfbGVuID09IDEKLSNpZm5kZWYgSEFWRV9NRU1SQ0hSCi0gICAgICAgICAgICAmJiBkaXIgPiAwCi0jZW5kaWYKLSAgICApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSAqc3ViOwotICAgICAgICBpbnQgbW9kZSA9IChkaXIgPiAwKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOwotICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIoCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZikgKyBzdGFydCwgZW5kIC0gc3RhcnQsCi0gICAgICAgICAgICBuZWVkbGUsIG5lZWRsZSwgbW9kZSk7Ci0gICAgICAgIGlmIChyZXMgPj0gMCkKLSAgICAgICAgICAgIHJlcyArPSBzdGFydDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChkaXIgPiAwKQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCi0gICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgfQotCi0gICAgaWYgKHN1Ym9iaikKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLVB5RG9jX1NUUlZBUihmaW5kX19kb2NfXywKLSJCLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCi1zdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKLWFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKLVxuXAotUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZmluZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfZmluZChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotUHlEb2NfU1RSVkFSKGNvdW50X19kb2NfXywKLSJCLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic2VjdGlvbiBzdWIgaW5cblwKLWJ5dGVzIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZFxuXAotYXMgaW4gc2xpY2Ugbm90YXRpb24uIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfY291bnQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpzdWJfb2JqOwotICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKLSAgICBQeV9zc2l6ZV90IHN1Yl9sZW47Ci0gICAgY2hhciBieXRlOwotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLQotICAgIFB5X2J1ZmZlciB2c3ViOwotICAgIFB5T2JqZWN0ICpjb3VudF9vYmo7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImNvdW50IiwgYXJncywgJnN1Yl9vYmosICZieXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzdWJfb2JqKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3ViX29iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIHN1YiA9IHZzdWIuYnVmOwotICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdWIgPSAmYnl0ZTsKLSAgICAgICAgc3ViX2xlbiA9IDE7Ci0gICAgfQotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwotCi0gICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAotICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQotICAgICAgICApOwotCi0gICAgaWYgKHN1Yl9vYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOwotCi0gICAgcmV0dXJuIGNvdW50X29iajsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvdW50KFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuY2xlYXIKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgYnl0ZWFycmF5LgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2NsZWFyX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODVjMmZlNmFlZGUwOTU2YyBpbnB1dD1lNTI0ZmQzMzBhYmNkYzE4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODVjMmZlNmFlZGUwOTU2YyBpbnB1dD1lZDZlZGFlOWRlNDQ3YWM0XSovCiB7CiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCAwKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTI4MywyNTMgKzExMjIsNzIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5jb3B5CiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXR1cm4gYSBjb3B5IG9mIEIuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfY29weV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY4Y2ZiY2ZlZDQ4NGMxMzIgaW5wdXQ9NmQ1ZDI5NzVhYTBmMzNmM10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY4Y2ZiY2ZlZDQ4NGMxMzIgaW5wdXQ9NjU5N2IwYzAxYmNjYWE5ZV0qLwogewogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShQeUJ5dGVBcnJheV9BU19TVFJJTkcoKFB5T2JqZWN0ICopc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKIH0KIAotUHlEb2NfU1RSVkFSKGluZGV4X19kb2NfXywKLSJCLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1MaWtlIEIuZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnNlY3Rpb24gaXMgbm90IGZvdW5kLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2luZGV4KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19pbmRleChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIocmZpbmRfX2RvY19fLAotIkIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JmaW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yZmluZChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIocmluZGV4X19kb2NfXywKLSJCLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLnJmaW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmluZGV4KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yaW5kZXgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQogc3RhdGljIGludAogYnl0ZWFycmF5X2NvbnRhaW5zKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIFB5X3NzaXplX3QgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIFB5RXhjX1ZhbHVlRXJyb3IpOwotICAgIGlmIChpdmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfYnVmZmVyIHZhcmc7Ci0gICAgICAgIFB5X3NzaXplX3QgcG9zOwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcG9zID0gc3RyaW5nbGliX2ZpbmQoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeV9TSVpFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJnLmJ1ZiwgdmFyZy5sZW4sIDApOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKLSAgICAgICAgcmV0dXJuIHBvcyA+PSAwOwotICAgIH0KLSAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+PSAyNTYpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1lbWNocihQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIChpbnQpIGl2YWwsIFB5X1NJWkUoc2VsZikpICE9IE5VTEw7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb250YWlucyhQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmcpOwogfQogCi0KLS8qIE1hdGNoZXMgdGhlIGVuZCAoZGlyZWN0aW9uID49IDApIG9yIHN0YXJ0IChkaXJlY3Rpb24gPCAwKSBvZiBzZWxmCi0gKiBhZ2FpbnN0IHN1YnN0ciwgdXNpbmcgdGhlIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzLiBSZXR1cm5zCi0gKiAtMSBvbiBlcnJvciwgMCBpZiBub3QgZm91bmQgYW5kIDEgaWYgZm91bmQuCi0gKi8KLVB5X0xPQ0FMKGludCkKLV9ieXRlYXJyYXlfdGFpbG1hdGNoKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKLXsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotICAgIGNvbnN0IGNoYXIqIHN0cjsKLSAgICBQeV9idWZmZXIgdnN1YnN0cjsKLSAgICBpbnQgcnYgPSAwOwotCi0gICAgc3RyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJzdHIsICZ2c3Vic3RyLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0KLSAgICBpZiAoZGlyZWN0aW9uIDwgMCkgewotICAgICAgICAvKiBzdGFydHN3aXRoICovCi0gICAgICAgIGlmIChzdGFydCt2c3Vic3RyLmxlbiA+IGxlbikgewotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogZW5kc3dpdGggKi8KLSAgICAgICAgaWYgKGVuZC1zdGFydCA8IHZzdWJzdHIubGVuIHx8IHN0YXJ0ID4gbGVuKSB7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZW5kLXZzdWJzdHIubGVuID4gc3RhcnQpCi0gICAgICAgICAgICBzdGFydCA9IGVuZCAtIHZzdWJzdHIubGVuOwotICAgIH0KLSAgICBpZiAoZW5kLXN0YXJ0ID49IHZzdWJzdHIubGVuKQotICAgICAgICBydiA9ICEgbWVtY21wKHN0citzdGFydCwgdnN1YnN0ci5idWYsIHZzdWJzdHIubGVuKTsKLQotZG9uZToKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3Vic3RyKTsKLSAgICByZXR1cm4gcnY7Ci19Ci0KLQotUHlEb2NfU1RSVkFSKHN0YXJ0c3dpdGhfX2RvY19fLAotIkIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCi1cblwKLVJldHVybiBUcnVlIGlmIEIgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1wcmVmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc3RhcnRzd2l0aChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJzdGFydHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVhcnJheV90YWlsbWF0Y2goc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCAtMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3N0YXJ0c3dpdGgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLVB5RG9jX1NUUlZBUihlbmRzd2l0aF9fZG9jX18sCi0iQi5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCi1cblwKLVJldHVybiBUcnVlIGlmIEIgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCi1XaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1XaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAotc3VmZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2VuZHN3aXRoKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoImVuZHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVhcnJheV90YWlsbWF0Y2goc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCArMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIGJ5dGVzLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19lbmRzd2l0aChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkudHJhbnNsYXRlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHRhYmxlOiBvYmplY3QKICAgICAgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4KLSAgICBbCi0gICAgZGVsZXRlY2hhcnM6IG9iamVjdAotICAgIF0KICAgICAvCisgICAgZGVsZXRlIGFzIGRlbGV0ZWNoYXJzOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKIAogUmV0dXJuIGEgY29weSB3aXRoIGVhY2ggY2hhcmFjdGVyIG1hcHBlZCBieSB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiAKLUFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQuCitBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC4KIFRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyb3VwX3JpZ2h0XzEsIFB5T2JqZWN0ICpkZWxldGVjaGFycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYmViYzg2YTlhMWZmMDgzIGlucHV0PWI3NDlhZDg1ZjQ4NjA4MjRdKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjZhOGYwMWMyYTc0ZTQ0NiBpbnB1dD1jZmZmOTU2ZDRkMTI3YTliXSovCiB7CiAgICAgY2hhciAqaW5wdXQsICpvdXRwdXQ7CiAgICAgY29uc3QgY2hhciAqdGFibGVfY2hhcnM7CkBAIC0xNTcyLDcgKzEyMzAsNyBAQAogICAgIHJlc3VsdCA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgaW5sZW4pOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwotICAgIG91dHB1dF9zdGFydCA9IG91dHB1dCA9IFB5Qnl0ZUFycmF5X0FzU3RyaW5nKHJlc3VsdCk7CisgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7CiAgICAgaW5wdXQgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoaW5wdXRfb2JqKTsKIAogICAgIGlmICh2ZGVsLmxlbiA9PSAwICYmIHRhYmxlX2NoYXJzICE9IE5VTEwpIHsKQEAgLTE1OTgsOCArMTI1Niw3IEBACiAgICAgZm9yIChpID0gaW5sZW47IC0taSA+PSAwOyApIHsKICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCppbnB1dCsrKTsKICAgICAgICAgaWYgKHRyYW5zX3RhYmxlW2NdICE9IC0xKQotICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCpvdXRwdXQrKyA9IChjaGFyKXRyYW5zX3RhYmxlW2NdKSA9PSBjKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICpvdXRwdXQrKyA9IChjaGFyKXRyYW5zX3RhYmxlW2NdOwogICAgIH0KICAgICAvKiBGaXggdGhlIHNpemUgb2YgdGhlIHJlc3VsdGluZyBzdHJpbmcgKi8KICAgICBpZiAoaW5sZW4gPiAwKQpAQCAtMTY0Miw0OTMgKzEyOTksNiBAQAogfQogCiAKLS8qIGZpbmQgYW5kIGNvdW50IGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MgKi8KLQotI2RlZmluZSBmaW5kY2hhcih0YXJnZXQsIHRhcmdldF9sZW4sIGMpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChjaGFyICopbWVtY2hyKChjb25zdCB2b2lkICopKHRhcmdldCksIGMsIHRhcmdldF9sZW4pKQotCi0KLS8qIEJ5dGVzIG9wcyBtdXN0IHJldHVybiBhIHN0cmluZywgY3JlYXRlIGEgY29weSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJldHVybl9zZWxmKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotewotICAgIC8qIGFsd2F5cyByZXR1cm4gYSBuZXcgYnl0ZWFycmF5ICovCi0gICAgcmV0dXJuIChQeUJ5dGVBcnJheU9iamVjdCAqKVB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKAotICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLAotICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwotfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWNvdW50Y2hhcihjb25zdCBjaGFyICp0YXJnZXQsIFB5X3NzaXplX3QgdGFyZ2V0X2xlbiwgY2hhciBjLCBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIFB5X3NzaXplX3QgY291bnQ9MDsKLSAgICBjb25zdCBjaGFyICpzdGFydD10YXJnZXQ7Ci0gICAgY29uc3QgY2hhciAqZW5kPXRhcmdldCt0YXJnZXRfbGVuOwotCi0gICAgd2hpbGUgKCAoc3RhcnQ9ZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgYykpICE9IE5VTEwgKSB7Ci0gICAgICAgIGNvdW50Kys7Ci0gICAgICAgIGlmIChjb3VudCA+PSBtYXhjb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdGFydCArPSAxOwotICAgIH0KLSAgICByZXR1cm4gY291bnQ7Ci19Ci0KLQotLyogQWxnb3JpdGhtcyBmb3IgZGlmZmVyZW50IGNhc2VzIG9mIHN0cmluZyByZXBsYWNlbWVudCAqLwotCi0vKiBsZW4oc2VsZik+PTEsIGZyb209IiIsIGxlbih0byk+PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9pbnRlcmxlYXZlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBpOwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXI7Ci0gICAgICAgY291bnQgPSBtaW4obWF4Y291bnQsIHNlbGZfbGVuICsgMSkgKi8KLSAgICBpZiAobWF4Y291bnQgPD0gc2VsZl9sZW4pCi0gICAgICAgIGNvdW50ID0gbWF4Y291bnQ7Ci0gICAgZWxzZQotICAgICAgICAvKiBDYW4ndCBvdmVyZmxvdzogc2VsZl9sZW4gKyAxIDw9IG1heGNvdW50IDw9IFBZX1NTSVpFX1RfTUFYLiAqLwotICAgICAgICBjb3VudCA9IHNlbGZfbGVuICsgMTsKLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47ICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsKLQotICAgIGlmICghIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAvKiBUT0RPOiBzcGVjaWFsIGNhc2Ugc2luZ2xlIGNoYXJhY3Rlciwgd2hpY2ggZG9lc24ndCBuZWVkIG1lbWNweSAqLwotCi0gICAgLyogTGF5IHRoZSBmaXJzdCBvbmUgZG93biAoZ3VhcmFudGVlZCB0aGlzIHdpbGwgb2NjdXIpICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICBjb3VudCAtPSAxOwotCi0gICAgZm9yIChpPTA7IGk8Y291bnQ7IGkrKykgewotICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgfQotCi0gICAgLyogQ29weSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuLWkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogU3BlY2lhbCBjYXNlIGZvciBkZWxldGluZyBhIHNpbmdsZSBjaGFyYWN0ZXIgKi8KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSBjb3VudDsgIC8qIGZyb21fbGVuID09IDEgKi8KLSAgICBhc3NlcnQocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgdG89IiIsIG1heGNvdW50Pj0xICovCi0KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSAoY291bnQgKiBmcm9tX2xlbik7Ci0gICAgYXNzZXJ0IChyZXN1bHRfbGVuPj0wKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0ICsgb2Zmc2V0OwotCi0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotCi0gICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgIH0KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPT0xLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgY2hhciB0b19jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3MsICpzdGFydCwgKmVuZCwgKm5leHQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbjsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgLyogVGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBuZXh0ID0gZmluZGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jKTsKLQotICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGJ5dGVzICovCi0gICAgcmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKLQotICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCi0gICAgc3RhcnQgPSAgcmVzdWx0X3MgKyAobmV4dC1zZWxmX3MpOwotICAgICpzdGFydCA9IHRvX2M7Ci0gICAgc3RhcnQrKzsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICpuZXh0ID0gdG9fYzsKLSAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqcmVzdWx0X3MsICpzdGFydCwgKmVuZDsKLSAgICBjaGFyICpzZWxmX3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgb2Zmc2V0OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IGJ5dGVzIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgaWYgKG9mZnNldCA9PSAtMSkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIG9mZnNldDsKLSAgICBQeV9NRU1DUFkoc3RhcnQsIHRvX3MsIGZyb21fbGVuKTsKLSAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKCAtLW1heGNvdW50ID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldD09LTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHN0YXJ0K29mZnNldCwgdG9fcywgZnJvbV9sZW4pOwotICAgICAgICBzdGFydCArPSBvZmZzZXQrZnJvbV9sZW47Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiB1c2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IGFuZCBuZXcsIGhlbmNlIHRoZSAiLTEiICovCi0gICAgLyogICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tMSkgICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIDEgPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIDEpOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLQotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbikgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuIC0gZnJvbV9sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIGZyb21fbGVuKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBzdGFydCtvZmZzZXQ7Ci0gICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7Ci0gICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ICs9IGZyb21fbGVuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCtmcm9tX2xlbjsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGlmIChtYXhjb3VudCA8IDApIHsKLSAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKLSAgICB9IGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAobWF4Y291bnQgPT0gMCB8fAotICAgICAgICAoZnJvbV9sZW4gPT0gMCAmJiB0b19sZW4gPT0gMCkpIHsKLSAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogSGFuZGxlIHplcm8tbGVuZ3RoIHNwZWNpYWwgY2FzZXMgKi8KLQotICAgIGlmIChmcm9tX2xlbiA9PSAwKSB7Ci0gICAgICAgIC8qIGluc2VydCB0aGUgJ3RvJyBieXRlcyBldmVyeXdoZXJlLiAgICovCi0gICAgICAgIC8qICAgID4+PiAiUHl0aG9uIi5yZXBsYWNlKCIiLCAiLiIpICAgICAqLwotICAgICAgICAvKiAgICAnLlAueS50Lmguby5uLicgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2VfaW50ZXJsZWF2ZShzZWxmLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9Ci0KLSAgICAvKiBFeGNlcHQgZm9yICIiLnJlcGxhY2UoIiIsICJBIikgPT0gIkEiIHRoZXJlIGlzIG5vIHdheSBiZXlvbmQgdGhpcyAqLwotICAgIC8qIHBvaW50IGZvciBhbiBlbXB0eSBzZWxmIGJ5dGVzIHRvIGdlbmVyYXRlIGEgbm9uLWVtcHR5IGJ5dGVzICovCi0gICAgLyogU3BlY2lhbCBjYXNlIHNvIHRoZSByZW1haW5pbmcgY29kZSBhbHdheXMgZ2V0cyBhIG5vbi1lbXB0eSBieXRlcyAqLwotICAgIGlmIChQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAodG9fbGVuID09IDApIHsKLSAgICAgICAgLyogZGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiAnZnJvbScgYnl0ZXMgKi8KLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKAotICAgICAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogSGFuZGxlIHNwZWNpYWwgY2FzZSB3aGVyZSBib3RoIGJ5dGVzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gdG9fbGVuKSB7Ci0gICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKAotICAgICAgICAgICAgICAgICAgICBzZWxmLAotICAgICAgICAgICAgICAgICAgICBmcm9tX3NbMF0sCi0gICAgICAgICAgICAgICAgICAgIHRvX3NbMF0sCi0gICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIE90aGVyd2lzZSB1c2UgdGhlIG1vcmUgZ2VuZXJpYyBhbGdvcml0aG1zICovCi0gICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihzZWxmLCBmcm9tX3NbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogbGVuKCdmcm9tJyk+PTIsIGxlbigndG8nKT49MSAqLwotICAgICAgICByZXR1cm4gcmVwbGFjZV9zdWJzdHJpbmcoc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgfQotfQotCi0KIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5yZXBsYWNlCiAKQEAgLTIxNTAsOSArMTMyMCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqbmV3LCBQeV9zc2l6ZV90IGNvdW50KQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQzOTg4NGM0ZGM1OTQxMmEgaW5wdXQ9YWEzNzlkOTg4NjM3YzdmYl0qLwogewotICAgIHJldHVybiAoUHlPYmplY3QgKilyZXBsYWNlKChQeUJ5dGVBcnJheU9iamVjdCAqKSBzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC0+YnVmLCBvbGQtPmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKKyAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2UoKFB5T2JqZWN0ICopc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilvbGQtPmJ1Ziwgb2xkLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTIyMDAsNyArMTM3MCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucGFydGl0aW9uCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHNlcDogb2JqZWN0CiAgICAgLwogCkBAIC0yMjE2LDcgKzEzODUsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3BhcnRpdGlvbihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NWQyNTI1ZGRkMzVmOTU3IGlucHV0PTdkN2ZlMzdiMTY5NmQ1MDZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NWQyNTI1ZGRkMzVmOTU3IGlucHV0PTg2Zjg5MjIzODkyYjcwYjVdKi8KIHsKICAgICBQeU9iamVjdCAqYnl0ZXNlcCwgKnJlc3VsdDsKIApAQCAtMjIzOCw3ICsxNDA3LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5ycGFydGl0aW9uCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHNlcDogb2JqZWN0CiAgICAgLwogCkBAIC0yMjU0LDcgKzE0MjIsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JwYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXApCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDQwZGUzYzk0MjYxMTVlOCBpbnB1dD05YjhjZDU0MGMxYjc1ODUzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDQwZGUzYzk0MjYxMTVlOCBpbnB1dD01ZjQwOTRmMmRlODdjOGYzXSovCiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzZXAsICpyZXN1bHQ7CiAKQEAgLTIzMTIsMTQgKzE0ODAsMTIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5yZXZlcnNlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdmFsdWVzIGluIEIgaW4gcGxhY2UuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmNzYxNmYyOWFiMzA5ZDMgaW5wdXQ9NzkzM2E0OTliODU5N2JkMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmNzYxNmYyOWFiMzA5ZDMgaW5wdXQ9NTQzMzU2MzE5ZmM3ODU1N10qLwogewogICAgIGNoYXIgc3dhcCwgKmhlYWQsICp0YWlsOwogICAgIFB5X3NzaXplX3QgaSwgaiwgbiA9IFB5X1NJWkUoc2VsZik7CkBAIC0yMzQ4LDcgKzE1MTQsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Lmluc2VydAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpbmRleDogUHlfc3NpemVfdAogICAgICAgICBUaGUgaW5kZXggd2hlcmUgdGhlIHZhbHVlIGlzIHRvIGJlIGluc2VydGVkLgogICAgIGl0ZW06IGJ5dGVzdmFsdWUKQEAgLTIzNjAsNyArMTUyNSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgsIGludCBpdGVtKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2Yzc3NWE3MGU3YjA3YjcgaW5wdXQ9ODMzNzY2ODM2YmEzMGUxZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2Yzc3NWE3MGU3YjA3YjcgaW5wdXQ9YjJiNWQwN2U5ZGU2YzA3MF0qLwogewogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CiAgICAgY2hhciAqYnVmOwpAQCAtMjM5MCw3ICsxNTU1LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5hcHBlbmQKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgaXRlbTogYnl0ZXN2YWx1ZQogICAgICAgICBUaGUgaXRlbSB0byBiZSBhcHBlbmRlZC4KICAgICAvCkBAIC0yNDAwLDcgKzE1NjQsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2FwcGVuZF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgaXRlbSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMTU0ZTE5ZWQxODg2Y2I2IGlucHV0PWFlNTZlYTg3MzgwNDA3Y2NdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMTU0ZTE5ZWQxODg2Y2I2IGlucHV0PTIwZDZiZWMzZDEzNDA1OTNdKi8KIHsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwogCkBAIC0yNDIwLDcgKzE1ODQsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmV4dGVuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpdGVyYWJsZV9vZl9pbnRzOiBvYmplY3QKICAgICAgICAgVGhlIGl0ZXJhYmxlIG9mIGl0ZW1zIHRvIGFwcGVuZC4KICAgICAvCkBAIC0yNDMwLDcgKzE1OTMsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2V4dGVuZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlX29mX2ludHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgxNTVkYmUyNDkxNzBiMSBpbnB1dD1jZTgzYTVkNzViNzBkODUwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgxNTVkYmUyNDkxNzBiMSBpbnB1dD1jNjE3YjNhOTMyNDliYTI4XSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbSwgKmJ5dGVhcnJheV9vYmo7CiAgICAgUHlfc3NpemVfdCBidWZfc2l6ZSA9IDAsIGxlbiA9IDA7CkBAIC0yNTE1LDcgKzE2NzgsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnBvcAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpbmRleDogUHlfc3NpemVfdCA9IC0xCiAgICAgICAgIFRoZSBpbmRleCBmcm9tIHdoZXJlIHRvIHJlbW92ZSB0aGUgaXRlbS4KICAgICAgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZW1vdmUgdGhlIGxhc3QgaXRlbS4KQEAgLTI1MjgsNyArMTY5MCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcG9wX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBjY2Q0MDFmODAyMWRhOCBpbnB1dD0wNzk3ZTZjMGNhOWQ1YTg1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBjY2Q0MDFmODAyMWRhOCBpbnB1dD0zNTkxZGYyZDA2YzBkMjM3XSovCiB7CiAgICAgaW50IHZhbHVlOwogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CkBAIC0yNTYwLDcgKzE3MjIsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJlbW92ZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICB2YWx1ZTogYnl0ZXN2YWx1ZQogICAgICAgICBUaGUgdmFsdWUgdG8gcmVtb3ZlLgogICAgIC8KQEAgLTI1NzAsMjAgKzE3MzEsMjAgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZW1vdmVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHZhbHVlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NTllMzc4NjY3MDljMTMgaW5wdXQ9NDc1NjBiMTFmZDg1NmMyNF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NTllMzc4NjY3MDljMTMgaW5wdXQ9MTIxODMxMjQwY2Q1MWRkZl0qLwogewotICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CisgICAgUHlfc3NpemVfdCB3aGVyZSwgbiA9IFB5X1NJWkUoc2VsZik7CiAgICAgY2hhciAqYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIGNoYXIgKndoZXJlID0gbWVtY2hyKGJ1ZiwgdmFsdWUsIG4pOwogCi0gICAgaWYgKCF3aGVyZSkgeworICAgIHdoZXJlID0gc3RyaW5nbGliX2ZpbmRfY2hhcihidWYsIG4sIHZhbHVlKTsKKyAgICBpZiAod2hlcmUgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidmFsdWUgbm90IGZvdW5kIGluIGJ5dGVhcnJheSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKCFfY2FucmVzaXplKHNlbGYpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG1lbW1vdmUod2hlcmUsIHdoZXJlICsgMSwgYnVmICsgbiAtIHdoZXJlKTsKKyAgICBtZW1tb3ZlKGJ1ZiArIHdoZXJlLCBidWYgKyB3aGVyZSArIDEsIG4gLSB3aGVyZSk7CiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBuIC0gMSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjU5Myw4ICsxNzU0LDggQEAKIC8qIFhYWCBUaGVzZSB0d28gaGVscGVycyBjb3VsZCBiZSBvcHRpbWl6ZWQgaWYgYXJnc2l6ZSA9PSAxICovCiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1sc3RyaXBfaGVscGVyKGNoYXIgKm15cHRyLCBQeV9zc2l6ZV90IG15c2l6ZSwKLSAgICAgICAgICAgICAgdm9pZCAqYXJncHRyLCBQeV9zc2l6ZV90IGFyZ3NpemUpCitsc3RyaXBfaGVscGVyKGNvbnN0IGNoYXIgKm15cHRyLCBQeV9zc2l6ZV90IG15c2l6ZSwKKyAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYXJncHRyLCBQeV9zc2l6ZV90IGFyZ3NpemUpCiB7CiAgICAgUHlfc3NpemVfdCBpID0gMDsKICAgICB3aGlsZSAoaSA8IG15c2l6ZSAmJiBtZW1jaHIoYXJncHRyLCAodW5zaWduZWQgY2hhcikgbXlwdHJbaV0sIGFyZ3NpemUpKQpAQCAtMjYwMyw4ICsxNzY0LDggQEAKIH0KIAogc3RhdGljIFB5X3NzaXplX3QKLXJzdHJpcF9oZWxwZXIoY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAotICAgICAgICAgICAgICB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKK3JzdHJpcF9oZWxwZXIoY29uc3QgY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAorICAgICAgICAgICAgICBjb25zdCB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKIHsKICAgICBQeV9zc2l6ZV90IGkgPSBteXNpemUgLSAxOwogICAgIHdoaWxlIChpID49IDAgJiYgbWVtY2hyKGFyZ3B0ciwgKHVuc2lnbmVkIGNoYXIpIG15cHRyW2ldLCBhcmdzaXplKSkKQEAgLTI4MDUsMjcgKzE5NjYsMTAgQEAKICAgICAgICAgKTsKIH0KIAotc3RhdGljIGludAotaGV4X2RpZ2l0X3RvX2ludChQeV9VQ1M0IGMpCi17Ci0gICAgaWYgKGMgPj0gMTI4KQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgIHJldHVybiBjIC0gJzAnOwotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlfSVNVUFBFUihjKSkKLSAgICAgICAgICAgIGMgPSBQeV9UT0xPV0VSKGMpOwotICAgICAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICByZXR1cm4gYyAtICdhJyArIDEwOwotICAgIH0KLSAgICByZXR1cm4gLTE7Ci19Ci0KIC8qW2NsaW5pYyBpbnB1dF0KIEBjbGFzc21ldGhvZAogYnl0ZWFycmF5LmZyb21oZXgKIAotICAgIGNsczogc2VsZih0eXBlPSJQeU9iamVjdCoiKQogICAgIHN0cmluZzogdW5pY29kZQogICAgIC8KIApAQCAtMjgzNiw1MSArMTk4MCwxNSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeU9iamVjdCpjbHMsIFB5T2JqZWN0ICpzdHJpbmcpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGYzZGE2MDEyOWIzNzAwYyBpbnB1dD05MDdiYmQyZDM0ZDkzNjdhXSovCitieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZjBmMGI2ZDMwZmIzYmEwIGlucHV0PWYwMzNhMTZkMWZiMjFmNDhdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3Ynl0ZXM7Ci0gICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgaGV4bGVuLCBieXRlc2xlbiwgaSwgajsKLSAgICBpbnQgdG9wLCBib3Q7Ci0gICAgdm9pZCAqZGF0YTsKLSAgICB1bnNpZ25lZCBpbnQga2luZDsKLQotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSk7Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKLSAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOwotCi0gICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KLSAgICBuZXdieXRlcyA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKLSAgICBpZiAoIW5ld2J5dGVzKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcobmV3Ynl0ZXMpOwotICAgIGZvciAoaSA9IGogPSAwOyBpIDwgaGV4bGVuOyBpICs9IDIpIHsKLSAgICAgICAgLyogc2tpcCBvdmVyIHNwYWNlcyBpbiB0aGUgaW5wdXQgKi8KLSAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09ICcgJykKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGkgPj0gaGV4bGVuKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRvcCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkpOwotICAgICAgICBpZiAodG9wID09IC0xIHx8IGJvdCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1oZXhhZGVjaW1hbCBudW1iZXIgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGkpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBidWZbaisrXSA9ICh0b3AgPDwgNCkgKyBib3Q7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeUJ5dGVzX0Zyb21IZXgoc3RyaW5nLCB0eXBlID09ICZQeUJ5dGVBcnJheV9UeXBlKTsKKyAgICBpZiAodHlwZSAhPSAmUHlCeXRlQXJyYXlfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKChQeU9iamVjdCAqKXR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCBOVUxMKSk7CiAgICAgfQotICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUobmV3Ynl0ZXMsIGopIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXR1cm4gbmV3Ynl0ZXM7Ci0KLSAgZXJyb3I6Ci0gICAgUHlfREVDUkVGKG5ld2J5dGVzKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeURvY19TVFJWQVIoaGV4X19kb2NfXywKQEAgLTI5MzUsMTQgKzIwNDMsMTIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5fX3JlZHVjZV9fIGFzIGJ5dGVhcnJheV9yZWR1Y2UKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmVkdWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJiZjMwNDA4NjQ2NGNhYiBpbnB1dD1mYmIwN2RlNGQxMDJhMDNhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJiZjMwNDA4NjQ2NGNhYiBpbnB1dD00NGI1NzM3YWRhNjJkZDNmXSovCiB7CiAgICAgcmV0dXJuIF9jb21tb25fcmVkdWNlKHNlbGYsIDIpOwogfQpAQCAtMjk1MCw3ICsyMDU2LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5fX3JlZHVjZV9leF9fIGFzIGJ5dGVhcnJheV9yZWR1Y2VfZXgKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgcHJvdG86IGludCA9IDAKICAgICAvCiAKQEAgLTI5NTksNyArMjA2NCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBwcm90bykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmVhYzMzMzc3MTk3NTIwIGlucHV0PTBlMDkxYTQyY2E2ZGJkOTFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmVhYzMzMzc3MTk3NTIwIGlucHV0PWYxMjliYzFhMWFhMTUxZWVdKi8KIHsKICAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgcHJvdG8pOwogfQpAQCAtMjk2NywxNCArMjA3MiwxMiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Ll9fc2l6ZW9mX18gYXMgYnl0ZWFycmF5X3NpemVvZgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgYnl0ZWFycmF5IG9iamVjdCBpbiBtZW1vcnksIGluIGJ5dGVzLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3NpemVvZl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczOGFiZGQxNzk1MWM0MjcgaW5wdXQ9NmIyM2QzMDUzNjJiNDYyYl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczOGFiZGQxNzk1MWM0MjcgaW5wdXQ9ZTI3MzIwZmQ5OGE0YmM1YV0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwogCkBAIC0zMDE1LDE5ICsyMTE4LDIyIEBACiAgICAgQllURUFSUkFZX0FQUEVORF9NRVRIT0RERUYKICAgICB7ImNhcGl0YWxpemUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NhcGl0YWxpemUsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfY2FwaXRhbGl6ZV9fZG9jX199LAotICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCisgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBfUHlfY2VudGVyX19kb2NfX30sCiAgICAgQllURUFSUkFZX0NMRUFSX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9DT1BZX01FVEhPRERFRgotICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCisgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY291bnQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NvdW50X19kb2NfX30sCiAgICAgQllURUFSUkFZX0RFQ09ERV9NRVRIT0RERUYKLSAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLCBlbmRzd2l0aF9fZG9jX199LAorICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2VuZHN3aXRoLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9lbmRzd2l0aF9fZG9jX199LAogICAgIHsiZXhwYW5kdGFicyIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfZXhwYW5kdGFicywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgZXhwYW5kdGFic19fZG9jX199LAorICAgICBfUHlfZXhwYW5kdGFic19fZG9jX199LAogICAgIEJZVEVBUlJBWV9FWFRFTkRfTUVUSE9EREVGCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9maW5kLCBNRVRIX1ZBUkFSR1MsIGZpbmRfX2RvY19ffSwKKyAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2ZpbmQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2ZpbmRfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfRlJPTUhFWF9NRVRIT0RERUYKICAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaGV4LCBNRVRIX05PQVJHUywgaGV4X19kb2NfX30sCi0gICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaW5kZXgsIE1FVEhfVkFSQVJHUywgaW5kZXhfX2RvY19ffSwKKyAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9pbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfaW5kZXhfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfSU5TRVJUX01FVEhPRERFRgogICAgIHsiaXNhbG51bSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbG51bSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc2FsbnVtX19kb2NfX30sCkBAIC0zMDQ0LDcgKzIxNTAsNyBAQAogICAgIHsiaXN1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXN1cHBlciwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc3VwcGVyX19kb2NfX30sCiAgICAgQllURUFSUkFZX0pPSU5fTUVUSE9EREVGCi0gICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgbGp1c3RfX2RvY19ffSwKKyAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfbGp1c3RfX2RvY19ffSwKICAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAogICAgIEJZVEVBUlJBWV9MU1RSSVBfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX01BS0VUUkFOU19NRVRIT0RERUYKQEAgLTMwNTMsMjMgKzIxNTksMjMgQEAKICAgICBCWVRFQVJSQVlfUkVNT1ZFX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SRVBMQUNFX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SRVZFUlNFX01FVEhPRERFRgotICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JmaW5kLCBNRVRIX1ZBUkFSR1MsIHJmaW5kX19kb2NfX30sCi0gICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JpbmRleCwgTUVUSF9WQVJBUkdTLCByaW5kZXhfX2RvY19ffSwKLSAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAorICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JmaW5kLCBNRVRIX1ZBUkFSR1MsIF9QeV9yZmluZF9fZG9jX199LAorICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yaW5kZXgsIE1FVEhfVkFSQVJHUywgX1B5X3JpbmRleF9fZG9jX199LAorICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIF9QeV9yanVzdF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9SUEFSVElUSU9OX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SU1BMSVRfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JTVFJJUF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfU1BMSVRfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MgLAotICAgICBzdGFydHN3aXRoX19kb2NfX30sCisgICAgIF9QeV9zdGFydHN3aXRoX19kb2NfX30sCiAgICAgQllURUFSUkFZX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfVFJBTlNMQVRFX01FVEhPRERFRgogICAgIHsidXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3VwcGVyLCBNRVRIX05PQVJHUywgX1B5X3VwcGVyX19kb2NfX30sCi0gICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgemZpbGxfX2RvY19ffSwKKyAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCBfUHlfemZpbGxfX2RvY19ffSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTMwNzgsNyArMjE4NCw3IEBACiB7CiAgICAgaWYgKCFQeUJ5dGVBcnJheV9DaGVjayh2KSkKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwotICAgIHJldHVybiBieXRlYXJyYXlfZm9ybWF0KChQeUJ5dGVBcnJheU9iamVjdCAqKXYsIHcpOworICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXRFeChQeUJ5dGVBcnJheV9BU19TVFJJTkcodiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHYpLCB3LCAxKTsKIH0KIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlYXJyYXlfYXNfbnVtYmVyID0gewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMgYi9PYmplY3RzL2J5dGVzX21ldGhvZHMuYwppbmRleCBhMjk5OTE1Li5kNWM0ZmU2IDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVzX21ldGhvZHMuYworKysgYi9PYmplY3RzL2J5dGVzX21ldGhvZHMuYwpAQCAtMSwzICsxLDQgQEAKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKIApAQCAtMjc3LDcgKzI3OCw3IEBACiBjaGFyYWN0ZXJzLCBhbGwgcmVtYWluaW5nIGNhc2VkIGNoYXJhY3RlcnMgaGF2ZSBsb3dlcmNhc2UuIik7CiAKIHZvaWQKLV9QeV9ieXRlc190aXRsZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQorX1B5X2J5dGVzX3RpdGxlKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGludCBwcmV2aW91c19pc19jYXNlZCA9IDA7CkBAIC0zMDYsNyArMzA3LDcgQEAKIGFuZCB0aGUgcmVzdCBsb3dlci1jYXNlZC4iKTsKIAogdm9pZAotX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKK19QeV9ieXRlc19jYXBpdGFsaXplKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgUHlfc3NpemVfdCBpOwogCkBAIC0zMzYsNyArMzM3LDcgQEAKIHRvIGxvd2VyY2FzZSBBU0NJSSBhbmQgdmljZSB2ZXJzYS4iKTsKIAogdm9pZAotX1B5X2J5dGVzX3N3YXBjYXNlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCitfUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKQEAgLTM4NywzICszODgsNDI3IEBACiAKICAgICByZXR1cm4gcmVzOwogfQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgc3RyaW5nbGliXyMjRgorI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiBjaGFyCisjZGVmaW5lIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAxCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisKKy8qCitXcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdoZXRoZXIgdGhlCitmaXJzdCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGluIHJhbmdlKDAsIDI1NikuCisKK0lmIHRoaXMgaXMgdGhlIGNhc2UsIHdyaXRlcyB0aGUgaW50ZWdlciB2YWx1ZSB0byB0aGUgYnl0ZSBwYXJhbWV0ZXIKK2FuZCBzZXRzIHN1Ym9iaiB0byBOVUxMLiBPdGhlcndpc2UsIHNldHMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHN1Ym9iagorYW5kIGRvZXNuJ3QgdG91Y2ggYnl0ZS4gVGhlIG90aGVyIHBhcmFtZXRlcnMgYXJlIHNpbWlsYXIgdG8gdGhvc2Ugb2YKK3N0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkuCisqLworCitQeV9MT0NBTF9JTkxJTkUoaW50KQorcGFyc2VfYXJnc19maW5kc19ieXRlKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vib2JqLCBjaGFyICpieXRlLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCit7CisgICAgUHlPYmplY3QgKnRtcF9zdWJvYmo7CisgICAgUHlfc3NpemVfdCBpdmFsOworICAgIFB5T2JqZWN0ICplcnI7CisKKyAgICBpZighc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghUHlOdW1iZXJfQ2hlY2sodG1wX3N1Ym9iaikpIHsKKyAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QodG1wX3N1Ym9iaiwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgaWYgKGl2YWwgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gUHlFcnJfT2NjdXJyZWQoKTsKKyAgICAgICAgaWYgKGVyciAmJiAhUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKGVyciwgUHlFeGNfT3ZlcmZsb3dFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAqc3Vib2JqID0gTlVMTDsKKyAgICAqYnl0ZSA9IChjaGFyKWl2YWw7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCisjZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCisgICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorZmluZF9pbnRlcm5hbChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywgaW50IGRpcikKK3sKKyAgICBQeU9iamVjdCAqc3Vib2JqOworICAgIGNoYXIgYnl0ZTsKKyAgICBQeV9idWZmZXIgc3ViYnVmOworICAgIGNvbnN0IGNoYXIgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5X3NzaXplX3QgcmVzOworCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX2J5dGUoZnVuY3Rpb25fbmFtZSwgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Vib2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKKyAgICAgICAgcmV0dXJuIC0yOworCisgICAgaWYgKHN1Ym9iaikgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnN1YmJ1ZiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIC0yOworCisgICAgICAgIHN1YiA9IHN1YmJ1Zi5idWY7CisgICAgICAgIHN1Yl9sZW4gPSBzdWJidWYubGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKKyAgICAgICAgcmVzID0gLTE7CisgICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxKSB7CisgICAgICAgIGlmIChkaXIgPiAwKQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfY2hhcigKKyAgICAgICAgICAgICAgICBzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgKnN1Yik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9jaGFyKAorICAgICAgICAgICAgICAgIHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAqc3ViKTsKKyAgICAgICAgaWYgKHJlcyA+PSAwKQorICAgICAgICAgICAgcmVzICs9IHN0YXJ0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGRpciA+IDApCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCisgICAgICAgICAgICAgICAgc3RyLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICBpZiAoc3Vib2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJidWYpOworCisgICAgcmV0dXJuIHJlczsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfZmluZF9fZG9jX18sCisiQi5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAorc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCithcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCitcblwKK1JldHVybiAtMSBvbiBmYWlsdXJlLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJmaW5kIiwgYXJncywgKzEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfaW5kZXhfX2RvY19fLAorIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK0xpa2UgQi5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19pbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJpbmRleCIsIGFyZ3MsICsxKTsKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3JmaW5kX19kb2NfXywKKyJCLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCxcblwKK3N1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbFxuXAorYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAorXG5cCitSZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX3JmaW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgInJmaW5kIiwgYXJncywgLTEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfcmluZGV4X19kb2NfXywKKyJCLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorTGlrZSBCLnJmaW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19yaW5kZXgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBmaW5kX2ludGVybmFsKHN0ciwgbGVuLCAicmluZGV4IiwgYXJncywgLTEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfY291bnRfX2RvY19fLAorIkIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK1JldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzZWN0aW9uIHN1YiBpblxuXAorYnl0ZXMgQltzdGFydDplbmRdLiAgT3B0aW9uYWwgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkXG5cCithcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2NvdW50KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzdWJfb2JqOworICAgIGNvbnN0IGNoYXIgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgY2hhciBieXRlOworICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKworICAgIFB5X2J1ZmZlciB2c3ViOworICAgIFB5T2JqZWN0ICpjb3VudF9vYmo7CisKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJfb2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc3ViX29iaikgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Yl9vYmosICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7CisKKyAgICBjb3VudF9vYmogPSBQeUxvbmdfRnJvbVNzaXplX3QoCisgICAgICAgIHN0cmluZ2xpYl9jb3VudChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgUFlfU1NJWkVfVF9NQVgpCisgICAgICAgICk7CisKKyAgICBpZiAoc3ViX29iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1Yik7CisKKyAgICByZXR1cm4gY291bnRfb2JqOworfQorCitpbnQKK19QeV9ieXRlc19jb250YWlucyhjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5X3NzaXplX3QgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIE5VTEwpOworICAgIGlmIChpdmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfYnVmZmVyIHZhcmc7CisgICAgICAgIFB5X3NzaXplX3QgcG9zOworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcG9zID0gc3RyaW5nbGliX2ZpbmQoc3RyLCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmcuYnVmLCB2YXJnLmxlbiwgMCk7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOworICAgICAgICByZXR1cm4gcG9zID49IDA7CisgICAgfQorICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID49IDI1NikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gbWVtY2hyKHN0ciwgKGludCkgaXZhbCwgbGVuKSAhPSBOVUxMOworfQorCisKKy8qIE1hdGNoZXMgdGhlIGVuZCAoZGlyZWN0aW9uID49IDApIG9yIHN0YXJ0IChkaXJlY3Rpb24gPCAwKSBvZiB0aGUgYnVmZmVyCisgKiBhZ2FpbnN0IHN1YnN0ciwgdXNpbmcgdGhlIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzLiBSZXR1cm5zCisgKiAtMSBvbiBlcnJvciwgMCBpZiBub3QgZm91bmQgYW5kIDEgaWYgZm91bmQuCisgKi8KK3N0YXRpYyBpbnQKK3RhaWxtYXRjaChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqc3Vic3RyLAorICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQoreworICAgIFB5X2J1ZmZlciBzdWJfdmlldyA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICpzdWI7CisgICAgUHlfc3NpemVfdCBzbGVuOworCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3Vic3RyKSkgeworICAgICAgICBzdWIgPSBQeUJ5dGVzX0FTX1NUUklORyhzdWJzdHIpOworICAgICAgICBzbGVuID0gUHlCeXRlc19HRVRfU0laRShzdWJzdHIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJzdHIsICZzdWJfdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBzdWIgPSBzdWJfdmlldy5idWY7CisgICAgICAgIHNsZW4gPSBzdWJfdmlldy5sZW47CisgICAgfQorCisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKworICAgIGlmIChkaXJlY3Rpb24gPCAwKSB7CisgICAgICAgIC8qIHN0YXJ0c3dpdGggKi8KKyAgICAgICAgaWYgKHN0YXJ0ICsgc2xlbiA+IGxlbikKKyAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogZW5kc3dpdGggKi8KKyAgICAgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc2xlbiB8fCBzdGFydCA+IGxlbikKKyAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7CisKKyAgICAgICAgaWYgKGVuZCAtIHNsZW4gPiBzdGFydCkKKyAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gc2xlbjsKKyAgICB9CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc2xlbikKKyAgICAgICAgZ290byBub3Rmb3VuZDsKKyAgICBpZiAobWVtY21wKHN0ciArIHN0YXJ0LCBzdWIsIHNsZW4pICE9IDApCisgICAgICAgIGdvdG8gbm90Zm91bmQ7CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJfdmlldyk7CisgICAgcmV0dXJuIDE7CisKK25vdGZvdW5kOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19QeV9ieXRlc190YWlsbWF0Y2goY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCit7CisgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CisgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKyAgICBQeU9iamVjdCAqc3Vib2JqOworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZzdWJvYmosICZzdGFydCwgJmVuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzdHIsIGxlbiwgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBsZW4sIHN1Ym9iaiwgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyBvciBhIHR1cGxlIG9mIGJ5dGVzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9zdGFydHN3aXRoX19kb2NfXywKKyJCLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAorXG5cCitSZXR1cm4gVHJ1ZSBpZiBCIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCitXaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCitXaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAorcHJlZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfc3RhcnRzd2l0aChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX1B5X2J5dGVzX3RhaWxtYXRjaChzdHIsIGxlbiwgInN0YXJ0c3dpdGgiLCBhcmdzLCAtMSk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2VuZHN3aXRoX19kb2NfXywKKyJCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKK1xuXAorUmV0dXJuIFRydWUgaWYgQiBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKK1dpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKK1dpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCitzdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19lbmRzd2l0aChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX1B5X2J5dGVzX3RhaWxtYXRjaChzdHIsIGxlbiwgImVuZHN3aXRoIiwgYXJncywgKzEpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9leHBhbmR0YWJzX19kb2NfXywKKyJCLmV4cGFuZHRhYnModGFic2l6ZT04KSAtPiBjb3B5IG9mIEJcblwKK1xuXAorUmV0dXJuIGEgY29weSBvZiBCIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgZXhwYW5kZWQgdXNpbmcgc3BhY2VzLlxuXAorSWYgdGFic2l6ZSBpcyBub3QgZ2l2ZW4sIGEgdGFiIHNpemUgb2YgOCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2xqdXN0X19kb2NfXywKKyJCLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJSZXR1cm4gQiBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKKyJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3JqdXN0X19kb2NfXywKKyJCLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJSZXR1cm4gQiByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiBQYWRkaW5nIGlzXG4iCisiZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2NlbnRlcl9fZG9jX18sCisiQi5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlJldHVybiBCIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gIFBhZGRpbmcgaXNcbiIKKyJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3pmaWxsX19kb2NfXywKKyJCLnpmaWxsKHdpZHRoKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJQYWQgYSBudW1lcmljIHN0cmluZyBCIHdpdGggemVyb3Mgb24gdGhlIGxlZnQsIHRvIGZpbGwgYSBmaWVsZFxuIgorIm9mIHRoZSBzcGVjaWZpZWQgd2lkdGguICBCIGlzIG5ldmVyIHRydW5jYXRlZC4iKTsKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlc29iamVjdC5jIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCmluZGV4IDM5MzQzMjguLjU5OGY2YTEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNvYmplY3QuYworKysgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKQEAgLTksOSArOSw5IEBACiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAKIC8qW2NsaW5pYyBpbnB1dF0KLWNsYXNzIGJ5dGVzICJQeUJ5dGVzT2JqZWN0KiIgIiZQeUJ5dGVzX1R5cGUiCitjbGFzcyBieXRlcyAiUHlCeXRlc09iamVjdCAqIiAiJlB5Qnl0ZXNfVHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTFhMWQ5MTAyYWZjMWIwMGNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTdhMjM4Zjk2NWQ2NDg5MmJdKi8KIAogI2luY2x1ZGUgImNsaW5pYy9ieXRlc29iamVjdC5jLmgiCiAKQEAgLTMwLDYgKzMwLDEwIEBACiAqLwogI2RlZmluZSBQeUJ5dGVzT2JqZWN0X1NJWkUgKG9mZnNldG9mKFB5Qnl0ZXNPYmplY3QsIG9iX3N2YWwpICsgMSkKIAorLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIF9QeUJ5dGVzV3JpdGVyX0dldFNpemUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnN0cik7CisKIC8qCiAgICBGb3IgUHlCeXRlc19Gcm9tU3RyaW5nKCksIHRoZSBwYXJhbWV0ZXIgYHN0cicgcG9pbnRzIHRvIGEgbnVsbC10ZXJtaW5hdGVkCiAgICBzdHJpbmcgY29udGFpbmluZyBleGFjdGx5IGBzaXplJyBieXRlcy4KQEAgLTExNiw3ICsxMjAsNyBAQAogICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKIAotICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKTsKKyAgICBtZW1jcHkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSk7CiAgICAgLyogc2hhcmUgc2hvcnQgc3RyaW5ncyAqLwogICAgIGlmIChzaXplID09IDEpIHsKICAgICAgICAgY2hhcmFjdGVyc1sqc3RyICYgVUNIQVJfTUFYXSA9IG9wOwpAQCAtMTU5LDcgKzE2Myw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICh2b2lkKVB5T2JqZWN0X0lOSVRfVkFSKG9wLCAmUHlCeXRlc19UeXBlLCBzaXplKTsKICAgICBvcC0+b2Jfc2hhc2ggPSAtMTsKLSAgICBQeV9NRU1DUFkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSsxKTsKKyAgICBtZW1jcHkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSsxKTsKICAgICAvKiBzaGFyZSBzaG9ydCBzdHJpbmdzICovCiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBudWxsc3RyaW5nID0gb3A7CkBAIC0xNzQsMTkwICsxNzgsMTg0IEBACiBQeU9iamVjdCAqCiBQeUJ5dGVzX0Zyb21Gb3JtYXRWKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKIHsKLSAgICB2YV9saXN0IGNvdW50OwotICAgIFB5X3NzaXplX3QgbiA9IDA7Ci0gICAgY29uc3QgY2hhciogZjsKICAgICBjaGFyICpzOwotICAgIFB5T2JqZWN0KiBzdHJpbmc7CisgICAgY29uc3QgY2hhciAqZjsKKyAgICBjb25zdCBjaGFyICpwOworICAgIFB5X3NzaXplX3QgcHJlYzsKKyAgICBpbnQgbG9uZ2ZsYWc7CisgICAgaW50IHNpemVfdGZsYWc7CisgICAgLyogTG9uZ2VzdCA2NC1iaXQgZm9ybWF0dGVkIG51bWJlcnM6CisgICAgICAgLSAiMTg0NDY3NDQwNzM3MDk1NTE2MTVcMCIgKDIxIGJ5dGVzKQorICAgICAgIC0gIi05MjIzMzcyMDM2ODU0Nzc1ODA4XDAiICgyMSBieXRlcykKKyAgICAgICBEZWNpbWFsIHRha2VzIHRoZSBtb3N0IHNwYWNlIChpdCBpc24ndCBlbm91Z2ggZm9yIG9jdGFsLikKIAotICAgIFB5X1ZBX0NPUFkoY291bnQsIHZhcmdzKTsKLSAgICAvKiBzdGVwIDE6IGZpZ3VyZSBvdXQgaG93IGxhcmdlIGEgYnVmZmVyIHdlIG5lZWQgKi8KLSAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKLSAgICAgICAgaWYgKCpmID09ICclJykgewotICAgICAgICAgICAgY29uc3QgY2hhciogcCA9IGY7Ci0gICAgICAgICAgICB3aGlsZSAoKisrZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKmYpKQotICAgICAgICAgICAgICAgIDsKKyAgICAgICBMb25nZXN0IDY0LWJpdCBwb2ludGVyIHJlcHJlc2VudGF0aW9uOgorICAgICAgICIweGZmZmZmZmZmZmZmZmZmZmZcMCIgKDE5IGJ5dGVzKS4gKi8KKyAgICBjaGFyIGJ1ZmZlclsyMV07CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCi0gICAgICAgICAgICAvKiBza2lwIHRoZSAnbCcgb3IgJ3onIGluIHslbGQsICV6ZCwgJWx1LCAlenV9IHNpbmNlCi0gICAgICAgICAgICAgKiB0aGV5IGRvbid0IGFmZmVjdCB0aGUgYW1vdW50IG9mIHNwYWNlIHdlIHJlc2VydmUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICgoKmYgPT0gJ2wnIHx8ICpmID09ICd6JykgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKQotICAgICAgICAgICAgICAgICsrZjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCi0gICAgICAgICAgICBzd2l0Y2ggKCpmKSB7Ci0gICAgICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgYyA9IHZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICBpZiAoYyA8IDAgfHwgYyA+IDI1NSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUJ5dGVzX0Zyb21Gb3JtYXRWKCk6ICVjIGZvcm1hdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0cyBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAyNTVdIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdkJzogY2FzZSAndSc6IGNhc2UgJ2knOiBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIC8qIDIwIGJ5dGVzIGlzIGVub3VnaCB0byBob2xkIGEgNjQtYml0Ci0gICAgICAgICAgICAgICAgICAgaW50ZWdlci4gIERlY2ltYWwgdGFrZXMgdGhlIG1vc3Qgc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgVGhpcyBpc24ndCBlbm91Z2ggZm9yIG9jdGFsLiAqLwotICAgICAgICAgICAgICAgIG4gKz0gMjA7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICBzID0gdmFfYXJnKGNvdW50LCBjaGFyKik7Ci0gICAgICAgICAgICAgICAgbiArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIC8qIG1heGltdW0gNjQtYml0IHBvaW50ZXIgcmVwcmVzZW50YXRpb246Ci0gICAgICAgICAgICAgICAgICogMHhmZmZmZmZmZmZmZmZmZmZmCi0gICAgICAgICAgICAgICAgICogc28gMTkgY2hhcmFjdGVycyBpcyBlbm91Z2guCi0gICAgICAgICAgICAgICAgICogWFhYIEkgY291bnQgMTggLS0gd2hhdCdzIHRoZSBleHRyYSBmb3I/Ci0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgbiArPSAxOTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgLyogaWYgd2Ugc3R1bWJsZSB1cG9uIGFuIHVua25vd24KLSAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nIGNvZGUsIGNvcHkgdGhlIHJlc3Qgb2YKLSAgICAgICAgICAgICAgICAgICB0aGUgZm9ybWF0IHN0cmluZyB0byB0aGUgb3V0cHV0Ci0gICAgICAgICAgICAgICAgICAgc3RyaW5nLiAod2UgY2Fubm90IGp1c3Qgc2tpcCB0aGUKLSAgICAgICAgICAgICAgICAgICBjb2RlLCBzaW5jZSB0aGVyZSdzIG5vIHdheSB0byBrbm93Ci0gICAgICAgICAgICAgICAgICAgd2hhdCdzIGluIHRoZSBhcmd1bWVudCBsaXN0KSAqLwotICAgICAgICAgICAgICAgIG4gKz0gc3RybGVuKHApOwotICAgICAgICAgICAgICAgIGdvdG8gZXhwYW5kOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG4rKzsKLSAgICB9Ci0gZXhwYW5kOgotICAgIC8qIHN0ZXAgMjogZmlsbCB0aGUgYnVmZmVyICovCi0gICAgLyogU2luY2Ugd2UndmUgYW5hbHl6ZWQgaG93IG11Y2ggc3BhY2Ugd2UgbmVlZCBmb3IgdGhlIHdvcnN0IGNhc2UsCi0gICAgICAgdXNlIHNwcmludGYgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgc2xvd2VyIFB5T1Nfc25wcmludGYuICovCi0gICAgc3RyaW5nID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuKTsKLSAgICBpZiAoIXN0cmluZykKKyAgICBzID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc3RybGVuKGZvcm1hdCkpOworICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCi0gICAgcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoc3RyaW5nKTsKKyNkZWZpbmUgV1JJVEVfQllURVMoc3RyKSBcCisgICAgZG8geyBcCisgICAgICAgIHMgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHMsIChzdHIpLCBzdHJsZW4oc3RyKSk7IFwKKyAgICAgICAgaWYgKHMgPT0gTlVMTCkgXAorICAgICAgICAgICAgZ290byBlcnJvcjsgXAorICAgIH0gd2hpbGUgKDApCiAKICAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKLSAgICAgICAgaWYgKCpmID09ICclJykgewotICAgICAgICAgICAgY29uc3QgY2hhciogcCA9IGYrKzsKKyAgICAgICAgaWYgKCpmICE9ICclJykgeworICAgICAgICAgICAgKnMrKyA9ICpmOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBwID0gZisrOworCisgICAgICAgIC8qIGlnbm9yZSB0aGUgd2lkdGggKGV4OiAxMCBpbiAiJTEwcyIpICovCisgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCpmKSkKKyAgICAgICAgICAgIGYrKzsKKworICAgICAgICAvKiBwYXJzZSB0aGUgcHJlY2lzaW9uIChleDogMTAgaW4gIiUuMTBzIikgKi8KKyAgICAgICAgcHJlYyA9IDA7CisgICAgICAgIGlmICgqZiA9PSAnLicpIHsKKyAgICAgICAgICAgIGYrKzsKKyAgICAgICAgICAgIGZvciAoOyBQeV9JU0RJR0lUKCpmKTsgZisrKSB7CisgICAgICAgICAgICAgICAgcHJlYyA9IChwcmVjICogMTApICsgKCpmIC0gJzAnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlICgqZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKmYpKQorICAgICAgICAgICAgZisrOworCisgICAgICAgIC8qIGhhbmRsZSB0aGUgbG9uZyBmbGFnICgnbCcpLCBidXQgb25seSBmb3IgJWxkIGFuZCAlbHUuCisgICAgICAgICAgIG90aGVycyBjYW4gYmUgYWRkZWQgd2hlbiBuZWNlc3NhcnkuICovCisgICAgICAgIGxvbmdmbGFnID0gMDsKKyAgICAgICAgaWYgKCpmID09ICdsJyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7CisgICAgICAgICAgICBsb25nZmxhZyA9IDE7CisgICAgICAgICAgICArK2Y7CisgICAgICAgIH0KKworICAgICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnICgneicpLiAqLworICAgICAgICBzaXplX3RmbGFnID0gMDsKKyAgICAgICAgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7CisgICAgICAgICAgICBzaXplX3RmbGFnID0gMTsKKyAgICAgICAgICAgICsrZjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHN1YnRyYWN0IGJ5dGVzIHByZWFsbG9jYXRlZCBmb3IgdGhlIGZvcm1hdCBzdHJpbmcKKyAgICAgICAgICAgKGV4OiAyIGZvciAiJXMiKSAqLworICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gKGYgLSBwICsgMSk7CisKKyAgICAgICAgc3dpdGNoICgqZikgeworICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGMgPSB2YV9hcmcodmFyZ3MsIGludCk7CisgICAgICAgICAgICBpZiAoYyA8IDAgfHwgYyA+IDI1NSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlCeXRlc19Gcm9tRm9ybWF0VigpOiAlYyBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0cyBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAyNTVdIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSsrOworICAgICAgICAgICAgKnMrKyA9ICh1bnNpZ25lZCBjaGFyKWM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxkIiwgdmFfYXJnKHZhcmdzLCBsb25nKSk7CisgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAiZCIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgUHlfc3NpemVfdCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWQiLCB2YV9hcmcodmFyZ3MsIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWx1IiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBsb25nKSk7CisgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgc2l6ZV90KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIldSIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgdW5zaWduZWQgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVpIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJXgiLCB2YV9hcmcodmFyZ3MsIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICB7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICBpbnQgbG9uZ2ZsYWcgPSAwOwotICAgICAgICAgICAgaW50IHNpemVfdGZsYWcgPSAwOwotICAgICAgICAgICAgLyogcGFyc2UgdGhlIHdpZHRoLnByZWNpc2lvbiBwYXJ0ICh3ZSdyZSBvbmx5Ci0gICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluIHRoZSBwcmVjaXNpb24gdmFsdWUsIGlmIGFueSkgKi8KLSAgICAgICAgICAgIG4gPSAwOwotICAgICAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKmYpKQotICAgICAgICAgICAgICAgIG4gPSAobioxMCkgKyAqZisrIC0gJzAnOwotICAgICAgICAgICAgaWYgKCpmID09ICcuJykgewotICAgICAgICAgICAgICAgIGYrKzsKLSAgICAgICAgICAgICAgICBuID0gMDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgqZikpCi0gICAgICAgICAgICAgICAgICAgIG4gPSAobioxMCkgKyAqZisrIC0gJzAnOworCisgICAgICAgICAgICBwID0gdmFfYXJnKHZhcmdzLCBjb25zdCBjaGFyKik7CisgICAgICAgICAgICBpID0gc3RybGVuKHApOworICAgICAgICAgICAgaWYgKHByZWMgPiAwICYmIGkgPiBwcmVjKQorICAgICAgICAgICAgICAgIGkgPSBwcmVjOworICAgICAgICAgICAgcyA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcywgcCwgaSk7CisgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlcCIsIHZhX2FyZyh2YXJncywgdm9pZCopKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIC8qICVwIGlzIGlsbC1kZWZpbmVkOiAgZW5zdXJlIGxlYWRpbmcgMHguICovCisgICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdYJykKKyAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7CisgICAgICAgICAgICBlbHNlIGlmIChidWZmZXJbMV0gIT0gJ3gnKSB7CisgICAgICAgICAgICAgICAgbWVtbW92ZShidWZmZXIrMiwgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSsxKTsKKyAgICAgICAgICAgICAgICBidWZmZXJbMF0gPSAnMCc7CisgICAgICAgICAgICAgICAgYnVmZmVyWzFdID0gJ3gnOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUgKCpmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgqZikpCi0gICAgICAgICAgICAgICAgZisrOwotICAgICAgICAgICAgLyogaGFuZGxlIHRoZSBsb25nIGZsYWcsIGJ1dCBvbmx5IGZvciAlbGQgYW5kICVsdS4KLSAgICAgICAgICAgICAgIG90aGVycyBjYW4gYmUgYWRkZWQgd2hlbiBuZWNlc3NhcnkuICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ2wnICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKLSAgICAgICAgICAgICAgICBsb25nZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZy4gKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgIHNpemVfdGZsYWcgPSAxOwotICAgICAgICAgICAgICAgICsrZjsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICclJzoKKyAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSsrOworICAgICAgICAgICAgKnMrKyA9ICclJzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoKmYgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIGZpeCBtaW5fc2l6ZSBpZiB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUrKzsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3dpdGNoICgqZikgewotICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IGMgPSB2YV9hcmcodmFyZ3MsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogYyBoYXMgYmVlbiBjaGVja2VkIGZvciBvdmVyZmxvdyBpbiB0aGUgZmlyc3Qgc3RlcCAqLwotICAgICAgICAgICAgICAgICpzKysgPSAodW5zaWduZWQgY2hhciljOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlbGQiLCB2YV9hcmcodmFyZ3MsIGxvbmcpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgUHlfc3NpemVfdCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJWQiLCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlbHUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBsb25nKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHNpemVfdCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJXUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVpIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgIHNwcmludGYocywgIiV4IiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgIHAgPSB2YV9hcmcodmFyZ3MsIGNoYXIqKTsKLSAgICAgICAgICAgICAgICBpID0gc3RybGVuKHApOwotICAgICAgICAgICAgICAgIGlmIChuID4gMCAmJiBpID4gbikKLSAgICAgICAgICAgICAgICAgICAgaSA9IG47Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHMsIHAsIGkpOwotICAgICAgICAgICAgICAgIHMgKz0gaTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVwIiwgdmFfYXJnKHZhcmdzLCB2b2lkKikpOwotICAgICAgICAgICAgICAgIC8qICVwIGlzIGlsbC1kZWZpbmVkOiAgZW5zdXJlIGxlYWRpbmcgMHguICovCi0gICAgICAgICAgICAgICAgaWYgKHNbMV0gPT0gJ1gnKQotICAgICAgICAgICAgICAgICAgICBzWzFdID0gJ3gnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMV0gIT0gJ3gnKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lbW1vdmUocysyLCBzLCBzdHJsZW4ocykrMSk7Ci0gICAgICAgICAgICAgICAgICAgIHNbMF0gPSAnMCc7Ci0gICAgICAgICAgICAgICAgICAgIHNbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgKnMrKyA9ICclJzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgc3RyY3B5KHMsIHApOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGdvdG8gZW5kOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICpzKysgPSAqZjsKKyAgICAgICAgICAgIC8qIGludmFsaWQgZm9ybWF0IHN0cmluZzogY29weSB1bmZvcm1hdHRlZCBzdHJpbmcgYW5kIGV4aXQgKi8KKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKHApOworICAgICAgICAgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzKTsKKyAgICAgICAgfQogICAgIH0KIAotIGVuZDoKLSAgICBfUHlCeXRlc19SZXNpemUoJnN0cmluZywgcyAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHN0cmluZykpOwotICAgIHJldHVybiBzdHJpbmc7CisjdW5kZWYgV1JJVEVfQllURVMKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcyk7CisKKyBlcnJvcjoKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeU9iamVjdCAqCkBAIC00MDksMTIgKzQwNywxNCBAQAogCiAvKiBSZXR1cm5zIGEgbmV3IHJlZmVyZW5jZSB0byBhIFB5Qnl0ZXMgb2JqZWN0LCBvciBOVUxMIG9uIGZhaWx1cmUuICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUpCitzdGF0aWMgY2hhcioKK2Zvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSwKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9yZXN1bHQsIF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKIHsKICAgICBjaGFyICpwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgZG91YmxlIHg7CisgICAgc2l6ZV90IGxlbjsKIAogICAgIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwogICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtNDMxLDkgKzQzMSwyMiBAQAogCiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwLCBzdHJsZW4ocCkpOworCisgICAgbGVuID0gc3RybGVuKHApOworICAgIGlmICh3cml0ZXIgIT0gTlVMTCkgeworICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBsZW4pOworICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbWVtY3B5KHN0ciwgcCwgbGVuKTsKKyAgICAgICAgUHlNZW1fRnJlZShwKTsKKyAgICAgICAgc3RyICs9IGxlbjsKKyAgICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHAsIGxlbik7CiAgICAgUHlNZW1fRnJlZShwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgICpwX3Jlc3VsdCA9IHJlc3VsdDsKKyAgICByZXR1cm4gc3RyOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDczLDExICs0ODYsMTEgQEAKIHN0YXRpYyBpbnQKIGJ5dGVfY29udmVydGVyKFB5T2JqZWN0ICphcmcsIGNoYXIgKnApCiB7Ci0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSAmJiBQeUJ5dGVzX1NpemUoYXJnKSA9PSAxKSB7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSAmJiBQeUJ5dGVzX0dFVF9TSVpFKGFyZykgPT0gMSkgewogICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZylbMF07CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X1NpemUoYXJnKSA9PSAxKSB7CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYXJnKSAmJiBQeUJ5dGVBcnJheV9HRVRfU0laRShhcmcpID09IDEpIHsKICAgICAgICAgKnAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoYXJnKVswXTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtNTU3LDM2ICs1NzAsMzYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotLyogZm10JSh2MSx2MiwuLi4pIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBzcHJpbnRmKGZtdCwgdjEsIHYyLCAuLi4pCi0KLSAgIEZPUk1BVEJVRkxFTiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgaW4gd2hpY2ggdGhlIGludHMgJgotICAgY2hhcnMgYXJlIGZvcm1hdHRlZC4gWFhYIFRoaXMgaXMgYSBtYWdpYyBudW1iZXIuIEVhY2ggZm9ybWF0dGluZwotICAgcm91dGluZSBkb2VzIGJvdW5kcyBjaGVja2luZyB0byBlbnN1cmUgbm8gb3ZlcmZsb3csIGJ1dCBhIGJldHRlcgotICAgc29sdXRpb24gbWF5IGJlIHRvIG1hbGxvYyBhIGJ1ZmZlciBvZiBhcHByb3ByaWF0ZSBzaXplIGZvciBlYWNoCi0gICBmb3JtYXQuIEZvciBub3csIHRoZSBjdXJyZW50IHNvbHV0aW9uIGlzIHN1ZmZpY2llbnQuCi0qLwotI2RlZmluZSBGT1JNQVRCVUZMRU4gKHNpemVfdCkxMjAKKy8qIGZtdCUodjEsdjIsLi4uKSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gc3ByaW50ZihmbXQsIHYxLCB2MiwgLi4uKSAqLwogCiBQeU9iamVjdCAqCi1fUHlCeXRlc19Gb3JtYXQoUHlPYmplY3QgKmZvcm1hdCwgUHlPYmplY3QgKmFyZ3MpCitfUHlCeXRlc19Gb3JtYXRFeChjb25zdCBjaGFyICpmb3JtYXQsIFB5X3NzaXplX3QgZm9ybWF0X2xlbiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBpbnQgdXNlX2J5dGVhcnJheSkKIHsKLSAgICBjaGFyICpmbXQsICpyZXM7CisgICAgY29uc3QgY2hhciAqZm10OworICAgIGNoYXIgKnJlczsKICAgICBQeV9zc2l6ZV90IGFyZ2xlbiwgYXJnaWR4OwotICAgIFB5X3NzaXplX3QgcmVzbGVuLCByZXNjbnQsIGZtdGNudDsKKyAgICBQeV9zc2l6ZV90IGZtdGNudDsKICAgICBpbnQgYXJnc19vd25lZCA9IDA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7Ci0gICAgaWYgKGZvcm1hdCA9PSBOVUxMIHx8ICFQeUJ5dGVzX0NoZWNrKGZvcm1hdCkgfHwgYXJncyA9PSBOVUxMKSB7CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOworCisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGZvcm1hdCk7Ci0gICAgZm10Y250ID0gUHlCeXRlc19HRVRfU0laRShmb3JtYXQpOwotICAgIHJlc2xlbiA9IHJlc2NudCA9IGZtdGNudCArIDEwMDsKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgcmVzbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgZm10ID0gZm9ybWF0OworICAgIGZtdGNudCA9IGZvcm1hdF9sZW47CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHdyaXRlci51c2VfYnl0ZWFycmF5ID0gdXNlX2J5dGVhcnJheTsKKworICAgIHJlcyA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGZtdGNudCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CisgICAgaWYgKCF1c2VfYnl0ZWFycmF5KQorICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKKwogICAgIGlmIChQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIGFyZ2xlbiA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CiAgICAgICAgIGFyZ2lkeCA9IDA7CkBAIC02MDAsMTggKzYxMywyMyBAQAogICAgICAgICAhUHlCeXRlQXJyYXlfQ2hlY2soYXJncykpIHsKICAgICAgICAgICAgIGRpY3QgPSBhcmdzOwogICAgIH0KKwogICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CiAgICAgICAgIGlmICgqZm10ICE9ICclJykgewotICAgICAgICAgICAgaWYgKC0tcmVzY250IDwgMCkgewotICAgICAgICAgICAgICAgIHJlc2NudCA9IGZtdGNudCArIDEwMDsKLSAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OwotICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgcmVzID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICArIHJlc2xlbiAtIHJlc2NudDsKLSAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpyZXMrKyA9ICpmbXQrKzsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgY2hhciAqcG9zOworCisgICAgICAgICAgICBwb3MgPSBzdHJjaHIoZm10ICsgMSwgJyUnKTsKKyAgICAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBsZW4gPSBwb3MgLSBmbXQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGVuID0gZm9ybWF0X2xlbiAtIChmbXQgLSBmb3JtYXQpOworICAgICAgICAgICAgYXNzZXJ0KGxlbiAhPSAwKTsKKworICAgICAgICAgICAgbWVtY3B5KHJlcywgZm10LCBsZW4pOworICAgICAgICAgICAgcmVzICs9IGxlbjsKKyAgICAgICAgICAgIGZtdCArPSBsZW47CisgICAgICAgICAgICBmbXRjbnQgLT0gKGxlbiAtIDEpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogR290IGEgZm9ybWF0IHNwZWNpZmllciAqLwpAQCAtNjI2LDEwICs2NDQsMTQgQEAKICAgICAgICAgICAgIGludCBzaWduOwogICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4gPSAwOwogICAgICAgICAgICAgY2hhciBvbmVjaGFyOyAvKiBGb3IgYnl0ZV9jb252ZXJ0ZXIoKSAqLworICAgICAgICAgICAgUHlfc3NpemVfdCBhbGxvYzsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgY2hhciAqYmVmb3JlOworI2VuZGlmCiAKICAgICAgICAgICAgIGZtdCsrOwogICAgICAgICAgICAgaWYgKCpmbXQgPT0gJygnKSB7Ci0gICAgICAgICAgICAgICAgY2hhciAqa2V5c3RhcnQ7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqa2V5c3RhcnQ7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrZXlsZW47CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKICAgICAgICAgICAgICAgICBpbnQgcGNvdW50ID0gMTsKQEAgLTY3Myw2ICs2OTUsOCBAQAogICAgICAgICAgICAgICAgIGFyZ2xlbiA9IC0xOwogICAgICAgICAgICAgICAgIGFyZ2lkeCA9IC0yOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYXJzZSBmbGFncy4gRXhhbXBsZTogIiUraSIgPT4gZmxhZ3M9Rl9TSUdOLiAqLwogICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGMgPSAqZm10KyspIHsKICAgICAgICAgICAgICAgICBjYXNlICctJzogZmxhZ3MgfD0gRl9MSlVTVDsgY29udGludWU7CkBAIC02ODMsNiArNzA3LDggQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhcnNlIHdpZHRoLiBFeGFtcGxlOiAiJTEwcyIgPT4gd2lkdGg9MTAgKi8KICAgICAgICAgICAgIGlmIChjID09ICcqJykgewogICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTcxNyw2ICs3NDMsOCBAQAogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHdpZHRoKjEwICsgKGMgLSAnMCcpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFyc2UgcHJlY2lzaW9uLiBFeGFtcGxlOiAiJS4zZiIgPT4gcHJlYz0zICovCiAgICAgICAgICAgICBpZiAoYyA9PSAnLicpIHsKICAgICAgICAgICAgICAgICBwcmVjID0gMDsKICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKQEAgLTc3MSwxMyArNzk5LDE5IEBACiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZtdGNudCA8IDApIHsKKyAgICAgICAgICAgICAgICAvKiBsYXN0IHdyaXRlcjogZGlzYWJsZSB3cml0ZXIgb3ZlcmFsbG9jYXRpb24gKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMDsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc2lnbiA9IDA7CiAgICAgICAgICAgICBmaWxsID0gJyAnOwogICAgICAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICBwYnVmID0gIiUiOwotICAgICAgICAgICAgICAgIGxlbiA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgKnJlcysrID0gJyUnOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgICAgICAvLyAlciBpcyBvbmx5IGZvciAyLzMgY29kZTsgMyBvbmx5IGNvZGUgc2hvdWxkIHVzZSAlYQogICAgICAgICAgICAgY2FzZSAnYSc6CkBAIC03OTAsNiArODI0LDcgQEAKICAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCiAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgIC8vICVzIGlzIG9ubHkgZm9yIDIvMyBjb2RlOyAzIG9ubHkgY29kZSBzaG91bGQgdXNlICViCiAgICAgICAgICAgICBjYXNlICdiJzoKQEAgLTc5OSwxMiArODM0LDQ5IEBACiAgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQogICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdpJzoKICAgICAgICAgICAgIGNhc2UgJ2QnOgogICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICBjYXNlICdvJzoKICAgICAgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHYpCisgICAgICAgICAgICAgICAgICAgICYmIHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgYyAhPSAnWCcpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaW50IGFsdGVybmF0ZSA9IGZsYWdzICYgRl9BTFQ7CisgICAgICAgICAgICAgICAgICAgIGludCBiYXNlOworCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChjKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICIndHlwZScgbm90IGluIFtkaXVveFhdIik7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDEwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gMjsgLyogc2l6ZSBwcmVhbGxvY2F0ZWQgZm9yICIlZCIgKi8KKyAgICAgICAgICAgICAgICAgICAgcmVzID0gX1B5TG9uZ19Gb3JtYXRCeXRlc1dyaXRlcigmd3JpdGVyLCByZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwgYmFzZSwgYWx0ZXJuYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdGxvbmcodiwgZmxhZ3MsIHByZWMsIGMpOwogICAgICAgICAgICAgICAgIGlmICghdGVtcCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTgxNSwxNCArODg3LDI1IEBACiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQogICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgIGNhc2UgJ0UnOgogICAgICAgICAgICAgY2FzZSAnZic6CiAgICAgICAgICAgICBjYXNlICdGJzoKICAgICAgICAgICAgIGNhc2UgJ2cnOgogICAgICAgICAgICAgY2FzZSAnRyc6Ci0gICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjKTsKLSAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgICAgICYmICEoZmxhZ3MgJiAoRl9TSUdOIHwgRl9CTEFOSykpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAyOyAvKiBzaXplIHByZWFsbG9jYXRlZCBmb3IgIiVmIiAqLworICAgICAgICAgICAgICAgICAgICByZXMgPSBmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYywgTlVMTCwgJndyaXRlciwgcmVzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYywgJnRlbXAsIE5VTEwsIHJlcykpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgcGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHRlbXApOwogICAgICAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodGVtcCk7CkBAIC04MzAsMjEgKzkxMywyOCBAQAogICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgICAgICAgcGJ1ZiA9ICZvbmVjaGFyOwogICAgICAgICAgICAgICAgIGxlbiA9IGJ5dGVfY29udmVydGVyKHYsICZvbmVjaGFyKTsKICAgICAgICAgICAgICAgICBpZiAoIWxlbikKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IG9uZWNoYXI7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBmb3JtYXQgY2hhcmFjdGVyICclYycgKDB4JXgpICIKICAgICAgICAgICAgICAgICAgICJhdCBpbmRleCAlemQiLAogICAgICAgICAgICAgICAgICAgYywgYywKLSAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShmbXQgLSAxIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKGZvcm1hdCkpKTsKKyAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShmbXQgLSAxIC0gZm9ybWF0KSk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKHNpZ24pIHsKICAgICAgICAgICAgICAgICBpZiAoKnBidWYgPT0gJy0nIHx8ICpwYnVmID09ICcrJykgewogICAgICAgICAgICAgICAgICAgICBzaWduID0gKnBidWYrKzsKQEAgLTg1OSwyOSArOTQ5LDMxIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAod2lkdGggPCBsZW4pCiAgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47Ci0gICAgICAgICAgICBpZiAocmVzY250IC0gKHNpZ24gIT0gMCkgPCB3aWR0aCkgewotICAgICAgICAgICAgICAgIHJlc2xlbiAtPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgcmVzY250ID0gd2lkdGggKyBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAocmVzbGVuIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSkgewotICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICArIHJlc2xlbiAtIHJlc2NudDsKKworICAgICAgICAgICAgYWxsb2MgPSB3aWR0aDsKKyAgICAgICAgICAgIGlmIChzaWduICE9IDAgJiYgbGVuID09IHdpZHRoKQorICAgICAgICAgICAgICAgIGFsbG9jKys7CisgICAgICAgICAgICAvKiAyOiBzaXplIHByZWFsbG9jYXRlZCBmb3IgJXMgKi8KKyAgICAgICAgICAgIGlmIChhbGxvYyA+IDIpIHsKKyAgICAgICAgICAgICAgICByZXMgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHJlcywgYWxsb2MgLSAyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIGJlZm9yZSA9IHJlczsKKyNlbmRpZgorCisgICAgICAgICAgICAvKiBXcml0ZSB0aGUgc2lnbiBpZiBuZWVkZWQgKi8KICAgICAgICAgICAgIGlmIChzaWduKSB7CiAgICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKQogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOwotICAgICAgICAgICAgICAgIHJlc2NudC0tOwogICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikKICAgICAgICAgICAgICAgICAgICAgd2lkdGgtLTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogV3JpdGUgdGhlIG51bWVyaWMgcHJlZml4IGZvciAieCIsICJYIiBhbmQgIm8iIGZvcm1hdHMKKyAgICAgICAgICAgICAgIGlmIHRoZSBhbHRlcm5hdGUgZm9ybSBpcyB1c2VkLgorICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHdyaXRlICIweCIgZm9yIHRoZSAiJSN4IiBmb3JtYXQuICovCiAgICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICd4JyB8fCBjID09ICdYJykpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlswXSA9PSAnMCcpOwogICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOwpAQCAtODg5LDE4ICs5ODEsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzY250IC09IDI7CiAgICAgICAgICAgICAgICAgd2lkdGggLT0gMjsKICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKQogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDA7CiAgICAgICAgICAgICAgICAgbGVuIC09IDI7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhZCBsZWZ0IHdpdGggdGhlIGZpbGwgY2hhcmFjdGVyIGlmIG5lZWRlZCAqLwogICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuICYmICEoZmxhZ3MgJiBGX0xKVVNUKSkgewotICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IGZpbGw7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoLS13aWR0aCA+IGxlbik7CisgICAgICAgICAgICAgICAgbWVtc2V0KHJlcywgZmlsbCwgd2lkdGggLSBsZW4pOworICAgICAgICAgICAgICAgIHJlcyArPSAod2lkdGggLSBsZW4pOworICAgICAgICAgICAgICAgIHdpZHRoID0gbGVuOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiBwYWRkaW5nIHdpdGggc3BhY2VzOiB3cml0ZSBzaWduIGlmIG5lZWRlZCBhbmQvb3IgbnVtZXJpYworICAgICAgICAgICAgICAgcHJlZml4IGlmIHRoZSBhbHRlcm5hdGUgZm9ybSBpcyB1c2VkICovCiAgICAgICAgICAgICBpZiAoZmlsbCA9PSAnICcpIHsKICAgICAgICAgICAgICAgICBpZiAoc2lnbikKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKQEAgLTkxMiwxMyArMTAwNywxNyBAQAogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXMsIHBidWYsIGxlbik7CisKKyAgICAgICAgICAgIC8qIENvcHkgYnl0ZXMgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXMsIHBidWYsIGxlbik7CiAgICAgICAgICAgICByZXMgKz0gbGVuOwotICAgICAgICAgICAgcmVzY250IC09IGxlbjsKLSAgICAgICAgICAgIHdoaWxlICgtLXdpZHRoID49IGxlbikgewotICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgICAgICpyZXMrKyA9ICcgJzsKKworICAgICAgICAgICAgLyogUGFkIHJpZ2h0IHdpdGggdGhlIGZpbGwgY2hhcmFjdGVyIGlmIG5lZWRlZCAqLworICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKSB7CisgICAgICAgICAgICAgICAgbWVtc2V0KHJlcywgJyAnLCB3aWR0aCAtIGxlbik7CisgICAgICAgICAgICAgICAgcmVzICs9ICh3aWR0aCAtIGxlbik7CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChkaWN0ICYmIChhcmdpZHggPCBhcmdsZW4pICYmIGMgIT0gJyUnKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKQEAgLTkyNiwyMiArMTAyNSwzMSBAQAogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworCisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIC8qIGNoZWNrIHRoYXQgd2UgY29tcHV0ZWQgdGhlIGV4YWN0IHNpemUgZm9yIHRoaXMgd3JpdGUgKi8KKyAgICAgICAgICAgIGFzc2VydCgocmVzIC0gYmVmb3JlKSA9PSBhbGxvYyk7CisjZW5kaWYKICAgICAgICAgfSAvKiAnJScgKi8KKworICAgICAgICAvKiBJZiBvdmVyYWxsb2NhdGlvbiB3YXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0IGl0IHdhcyB0aGUgbGFzdAorICAgICAgICAgICB3cml0ZS4gT3RoZXJ3aXNlLCB3ZSBtaXNzZWQgYW4gb3B0aW1pemF0aW9uICovCisgICAgICAgIGFzc2VydCh3cml0ZXIub3ZlcmFsbG9jYXRlIHx8IGZtdGNudCA8IDAgfHwgdXNlX2J5dGVhcnJheSk7CiAgICAgfSAvKiB1bnRpbCBlbmQgKi8KKwogICAgIGlmIChhcmdpZHggPCBhcmdsZW4gJiYgIWRpY3QpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisKICAgICBpZiAoYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgfQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuIC0gcmVzY250KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHJlcyk7CiAKICBlcnJvcjoKLSAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9CkBAIC05NjEsNiArMTA2OSw0MiBAQAogICAgdGhlIHN0cmluZyBpcyBVVEYtOCBlbmNvZGVkIGFuZCBzaG91bGQgYmUgcmUtZW5jb2RlZCBpbiB0aGUKICAgIHNwZWNpZmllZCBlbmNvZGluZy4gICovCiAKK3N0YXRpYyBjaGFyICoKK19QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZShjb25zdCBjaGFyICoqcywgY29uc3QgY2hhciAqZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgY29uc3QgY2hhciAqcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnApCit7CisgICAgUHlPYmplY3QgKnUsICp3OworICAgIGNvbnN0IGNoYXIqIHQ7CisKKyAgICB0ID0gKnM7CisgICAgLyogRGVjb2RlIG5vbi1BU0NJSSBieXRlcyBhcyBVVEYtOC4gKi8KKyAgICB3aGlsZSAodCA8IGVuZCAmJiAoKnQgJiAweDgwKSkKKyAgICAgICAgdCsrOworICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOCgqcywgdCAtICpzLCBlcnJvcnMpOworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogUmVjb2RlIHRoZW0gaW4gdGFyZ2V0IGVuY29kaW5nLiAqLworICAgIHcgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsIHJlY29kZV9lbmNvZGluZywgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodSk7CisgICAgaWYgICh3ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHcpKTsKKworICAgIC8qIEFwcGVuZCBieXRlcyB0byBvdXRwdXQgYnVmZmVyLiAqLworICAgIHdyaXRlci0+bWluX3NpemUtLTsgICAvKiBzdWJ0cmFjdCAxIHByZWFsbG9jYXRlZCBieXRlICovCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMod3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUodykpOworICAgIFB5X0RFQ1JFRih3KTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICpzID0gdDsKKyAgICByZXR1cm4gcDsKK30KKwogUHlPYmplY3QgKlB5Qnl0ZXNfRGVjb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCkBAIC05NjgsNTQgKzExMTIsNDIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVjb2RlX2VuY29kaW5nKQogewogICAgIGludCBjOwotICAgIGNoYXIgKnAsICpidWY7CisgICAgY2hhciAqcDsKICAgICBjb25zdCBjaGFyICplbmQ7Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgUHlfc3NpemVfdCBuZXdsZW4gPSByZWNvZGVfZW5jb2RpbmcgPyA0KmxlbjpsZW47Ci0gICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBuZXdsZW4pOwotICAgIGlmICh2ID09IE5VTEwpCisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOworCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKworICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBsZW4pOworICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHAgPSBidWYgPSBQeUJ5dGVzX0FzU3RyaW5nKHYpOworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOworCiAgICAgZW5kID0gcyArIGxlbjsKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewogICAgICAgICAgIG5vbl9lc2M6Ci0gICAgICAgICAgICBpZiAocmVjb2RlX2VuY29kaW5nICYmICgqcyAmIDB4ODApKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnUsICp3OwotICAgICAgICAgICAgICAgIGNoYXIgKnI7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogdDsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJuOwotICAgICAgICAgICAgICAgIHQgPSBzOwotICAgICAgICAgICAgICAgIC8qIERlY29kZSBub24tQVNDSUkgYnl0ZXMgYXMgVVRGLTguICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKHQgPCBlbmQgJiYgKCp0ICYgMHg4MCkpIHQrKzsKLSAgICAgICAgICAgICAgICB1ID0gUHlVbmljb2RlX0RlY29kZVVURjgocywgdCAtIHMsIGVycm9ycyk7Ci0gICAgICAgICAgICAgICAgaWYoIXUpIGdvdG8gZmFpbGVkOwotCi0gICAgICAgICAgICAgICAgLyogUmVjb2RlIHRoZW0gaW4gdGFyZ2V0IGVuY29kaW5nLiAqLwotICAgICAgICAgICAgICAgIHcgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICB1LCByZWNvZGVfZW5jb2RpbmcsIGVycm9ycyk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICAgICAgICAgIGlmICghdykgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotCi0gICAgICAgICAgICAgICAgLyogQXBwZW5kIGJ5dGVzIHRvIG91dHB1dCBidWZmZXIuICovCi0gICAgICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sodykpOwotICAgICAgICAgICAgICAgIHIgPSBQeUJ5dGVzX0FTX1NUUklORyh3KTsKLSAgICAgICAgICAgICAgICBybiA9IFB5Qnl0ZXNfR0VUX1NJWkUodyk7Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIHIsIHJuKTsKLSAgICAgICAgICAgICAgICBwICs9IHJuOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgICAgICBzID0gdDsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIShyZWNvZGVfZW5jb2RpbmcgJiYgKCpzICYgMHg4MCkpKSB7CiAgICAgICAgICAgICAgICAgKnArKyA9ICpzKys7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBub24tQVNDSUkgY2hhcmFjdGVyIGFuZCBuZWVkIHRvIHJlY29kZSAqLworICAgICAgICAgICAgICAgIHAgPSBfUHlCeXRlc19EZWNvZGVFc2NhcGVSZWNvZGUoJnMsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlciwgcCk7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorCiAgICAgICAgIHMrKzsKLSAgICAgICAgaWYgKHM9PWVuZCkgeworICAgICAgICBpZiAocyA9PSBlbmQpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUcmFpbGluZyBcXCBpbiBzdHJpbmciKTsKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICB9CisKICAgICAgICAgc3dpdGNoICgqcysrKSB7CiAgICAgICAgIC8qIFhYWCBUaGlzIGFzc3VtZXMgQVNDSUkhICovCiAgICAgICAgIGNhc2UgJ1xuJzogYnJlYWs7CkBAIC0xMDQwLDI4ICsxMTcyLDE4IEBACiAgICAgICAgICAgICAqcCsrID0gYzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgIGlmIChzKzEgPCBlbmQgJiYgUHlfSVNYRElHSVQoc1swXSkgJiYgUHlfSVNYRElHSVQoc1sxXSkpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeCA9IDA7Ci0gICAgICAgICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCpzKTsKLSAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgIHggPSBjIC0gJzAnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFB5X0lTTE9XRVIoYykpCi0gICAgICAgICAgICAgICAgICAgIHggPSAxMCArIGMgLSAnYSc7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB4ID0gMTAgKyBjIC0gJ0EnOwotICAgICAgICAgICAgICAgIHggPSB4IDw8IDQ7Ci0gICAgICAgICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCpzKTsKLSAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgIHggKz0gYyAtICcwJzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChQeV9JU0xPV0VSKGMpKQotICAgICAgICAgICAgICAgICAgICB4ICs9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ0EnOwotICAgICAgICAgICAgICAgICpwKysgPSB4OwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKHMrMSA8IGVuZCkgeworICAgICAgICAgICAgICAgIGludCBkaWdpdDEsIGRpZ2l0MjsKKyAgICAgICAgICAgICAgICBkaWdpdDEgPSBfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soc1swXSldOworICAgICAgICAgICAgICAgIGRpZ2l0MiA9IF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSyhzWzFdKV07CisgICAgICAgICAgICAgICAgaWYgKGRpZ2l0MSA8IDE2ICYmIGRpZ2l0MiA8IDE2KSB7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAodW5zaWduZWQgY2hhcikoKGRpZ2l0MSA8PCA0KSArIGRpZ2l0Mik7CisgICAgICAgICAgICAgICAgICAgIHMgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogaW52YWxpZCBoZXhhZGVjaW1hbCBkaWdpdHMgKi8KKwogICAgICAgICAgICAgaWYgKCFlcnJvcnMgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgXFx4IGVzY2FwZSBhdCBwb3NpdGlvbiAlZCIsCkBAIC0xMDgzLDE4ICsxMjA1LDIwIEBACiAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiBQeV9JU1hESUdJVChzWzBdKSkKICAgICAgICAgICAgICAgICBzKys7IC8qIGFuZCBhIGhleGRpZ2l0ICovCiAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLCAiaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgJ1xcJWMnIiwgKigtLXMpKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgIHMtLTsKICAgICAgICAgICAgIGdvdG8gbm9uX2VzYzsgLyogYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB1bmVzY2FwZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGLTggYnl0ZXMgbWF5IGZvbGxvdy4gKi8KICAgICAgICAgfQogICAgIH0KLSAgICBpZiAocC1idWYgPCBuZXdsZW4pCi0gICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmdiwgcCAtIGJ1Zik7Ci0gICAgcmV0dXJuIHY7CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHApOworCiAgIGZhaWxlZDoKLSAgICBQeV9ERUNSRUYodik7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMTM0OSwxMiArMTQ3MywxMiBAQAogICAgIH0KICAgICBpID0gMDsKICAgICBpZiAoaSA8IHNpemUpIHsKLSAgICAgICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsLCBhLT5vYl9zdmFsLCBQeV9TSVpFKGEpKTsKKyAgICAgICAgbWVtY3B5KG9wLT5vYl9zdmFsLCBhLT5vYl9zdmFsLCBQeV9TSVpFKGEpKTsKICAgICAgICAgaSA9IFB5X1NJWkUoYSk7CiAgICAgfQogICAgIHdoaWxlIChpIDwgc2l6ZSkgewogICAgICAgICBqID0gKGkgPD0gc2l6ZS1pKSAgPyAgaSAgOiAgc2l6ZS1pOwotICAgICAgICBQeV9NRU1DUFkob3AtPm9iX3N2YWwraSwgb3AtPm9iX3N2YWwsIGopOworICAgICAgICBtZW1jcHkob3AtPm9iX3N2YWwraSwgb3AtPm9iX3N2YWwsIGopOwogICAgICAgICBpICs9IGo7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKikgb3A7CkBAIC0xMzYzLDI0ICsxNDg3LDcgQEAKIHN0YXRpYyBpbnQKIGJ5dGVzX2NvbnRhaW5zKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIFB5X3NzaXplX3QgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIFB5RXhjX1ZhbHVlRXJyb3IpOwotICAgIGlmIChpdmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfYnVmZmVyIHZhcmc7Ci0gICAgICAgIFB5X3NzaXplX3QgcG9zOwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcG9zID0gc3RyaW5nbGliX2ZpbmQoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5X1NJWkUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmcuYnVmLCB2YXJnLmxlbiwgMCk7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOwotICAgICAgICByZXR1cm4gcG9zID49IDA7Ci0gICAgfQotICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID49IDI1NikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWVtY2hyKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAoaW50KSBpdmFsLCBQeV9TSVpFKHNlbGYpKSAhPSBOVUxMOworICAgIHJldHVybiBfUHlfYnl0ZXNfY29udGFpbnMoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMzkzLDcgKzE1MDAsNyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKHVuc2lnbmVkIGNoYXIpYS0+b2Jfc3ZhbFtpXSk7CiB9CiAKLVB5X0xPQ0FMKGludCkKK3N0YXRpYyBpbnQKIGJ5dGVzX2NvbXBhcmVfZXEoUHlCeXRlc09iamVjdCAqYSwgUHlCeXRlc09iamVjdCAqYikKIHsKICAgICBpbnQgY21wOwpAQCAtMTYyNyw4ICsxNzM0LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThiZGU0NGRhY2IzNmVmMmUgaW5wdXQ9OGI4MDliMzkwNzRhYmJmYV0qLworYnl0ZXNfc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyMTI2YjU4NDRjMWQ4ZWYgaW5wdXQ9OGI4MDliMzkwNzRhYmJmYV0qLwogewogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKSwgbjsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CkBAIC0xNjUyLDcgKzE3NTksNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMucGFydGl0aW9uCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgc2VwOiBQeV9idWZmZXIKICAgICAvCiAKQEAgLTE2NjgsNyArMTc3NCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19wYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNTMyYjM5MmExN2ZmNjk1IGlucHV0PWJjODU1ZGM2M2NhOTQ5ZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNTMyYjM5MmExN2ZmNjk1IGlucHV0PTYxY2NhOTU1MTk0MDYwOTldKi8KIHsKICAgICByZXR1cm4gc3RyaW5nbGliX3BhcnRpdGlvbigKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwKQEAgLTE2ODAsNyArMTc4Niw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5ycGFydGl0aW9uCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgc2VwOiBQeV9idWZmZXIKICAgICAvCiAKQEAgLTE2OTYsNyArMTgwMSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19ycGFydGl0aW9uX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpzZXApCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTkxYjExNGNiYjAyOGU1MCBpbnB1dD02NTg4ZmZmMjYyYTkxNzBlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTkxYjExNGNiYjAyOGU1MCBpbnB1dD02N2Y2ODllNjNhNjJkNDc4XSovCiB7CiAgICAgcmV0dXJuIHN0cmluZ2xpYl9ycGFydGl0aW9uKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLApAQCAtMTcxNCw4ICsxODE5LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JzcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYjY1NzBiOTc3OTExZDg4IGlucHV0PTBmODZjOWYyOGY3ZDdiN2JdKi8KK2J5dGVzX3JzcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmE2OThkOWVhMDFlMWM4ZiBpbnB1dD0wZjg2YzlmMjhmN2Q3YjdiXSovCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKQEAgLTE3NTMsOCArMTg1OCw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19qb2luKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlX29mX2J5dGVzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYzNGFmZjE0NzY0ZmY5OTcgaW5wdXQ9N2ZlMzc3Yjk1YmQ1NDlkMl0qLworYnl0ZXNfam9pbihQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTA0NmYzNzlmNjI2ZjZmOCBpbnB1dD03ZmUzNzdiOTViZDU0OWQyXSovCiB7CiAgICAgcmV0dXJuIHN0cmluZ2xpYl9ieXRlc19qb2luKChQeU9iamVjdCopc2VsZiwgaXRlcmFibGVfb2ZfYnl0ZXMpOwogfQpAQCAtMTc2NywxNTggKzE4NzIsMzAgQEAKICAgICByZXR1cm4gYnl0ZXNfam9pbigoUHlCeXRlc09iamVjdCopc2VwLCB4KTsKIH0KIAotLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KLSNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKLSAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZWxzZSBpZiAoZW5kIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKHN0YXJ0IDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1ieXRlc19maW5kX2ludGVybmFsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgZGlyKQotewotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgY2hhciBieXRlOwotICAgIFB5X2J1ZmZlciBzdWJidWY7Ci0gICAgY29uc3QgY2hhciAqc3ViOwotICAgIFB5X3NzaXplX3QgbGVuLCBzdWJfbGVuOwotICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwotICAgIFB5X3NzaXplX3QgcmVzOwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJmaW5kL3JmaW5kL2luZGV4L3JpbmRleCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsICZzdWJvYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gLTI7Ci0KLSAgICBpZiAoc3Vib2JqKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmc3ViYnVmLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTI7Ci0KLSAgICAgICAgc3ViID0gc3ViYnVmLmJ1ZjsKLSAgICAgICAgc3ViX2xlbiA9IHN1YmJ1Zi5sZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdWIgPSAmYnl0ZTsKLSAgICAgICAgc3ViX2xlbiA9IDE7Ci0gICAgfQotICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOwotICAgIGlmIChlbmQgLSBzdGFydCA8IHN1Yl9sZW4pCi0gICAgICAgIHJlcyA9IC0xOwotICAgIGVsc2UgaWYgKHN1Yl9sZW4gPT0gMQotI2lmbmRlZiBIQVZFX01FTVJDSFIKLSAgICAgICAgICAgICYmIGRpciA+IDAKLSNlbmRpZgotICAgICkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9ICpzdWI7Ci0gICAgICAgIGludCBtb2RlID0gKGRpciA+IDApID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7Ci0gICAgICAgIHJlcyA9IHN0cmluZ2xpYl9mYXN0c2VhcmNoX21lbWNocl8xY2hhcigKLSAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAotICAgICAgICAgICAgbmVlZGxlLCBuZWVkbGUsIG1vZGUpOwotICAgICAgICBpZiAocmVzID49IDApCi0gICAgICAgICAgICByZXMgKz0gc3RhcnQ7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZGlyID4gMCkKLSAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAotICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCi0gICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCi0gICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICB9Ci0KLSAgICBpZiAoc3Vib2JqKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJidWYpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotCi1QeURvY19TVFJWQVIoZmluZF9fZG9jX18sCi0iQi5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnN0cmluZyBzdWIgaXMgZm91bmQsXG5cCi1zdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydDplbmRdLiAgT3B0aW9uYWxcblwKLWFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKLVxuXAotUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19maW5kKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZXNfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKGluZGV4X19kb2NfXywKLSJCLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1MaWtlIEIuZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19pbmRleChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVzX2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Vic3RyaW5nIG5vdCBmb3VuZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfaW5kZXgoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAKLVB5RG9jX1NUUlZBUihyZmluZF9fZG9jX18sCi0iQi5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic3RyaW5nIHN1YiBpcyBmb3VuZCxcblwKLXN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbFxuXAotYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAotXG5cCi1SZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JmaW5kKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZXNfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfcmZpbmQoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAKLVB5RG9jX1NUUlZBUihyaW5kZXhfX2RvY19fLAotIkIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1MaWtlIEIucmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90IGZvdW5kLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcmluZGV4KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZXNfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzdHJpbmcgbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yaW5kZXgoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAKQEAgLTIwMDUsNyArMTk4Miw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5zdHJpcAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCiAgICAgLwogCkBAIC0yMDE2LDcgKzE5OTIsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzdjMjI4ZDNiZDEwNGExYiBpbnB1dD0zN2RhYTVmYWQxMzk1ZDk1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzdjMjI4ZDNiZDEwNGExYiBpbnB1dD04YTM1NDY0MGU0ZTBiM2VmXSovCiB7CiAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIEJPVEhTVFJJUCwgYnl0ZXMpOwogfQpAQCAtMjAyNCw3ICsyMDAwLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLmxzdHJpcAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCiAgICAgLwogCkBAIC0yMDM1LDcgKzIwMTAsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfbHN0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI4NjAyZTU4NmY1MjRlODIgaW5wdXQ9ODg4MTFiMDlkZmJjMjk4OF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI4NjAyZTU4NmY1MjRlODIgaW5wdXQ9OWJhZmY0Mzk4YzNmNjg1N10qLwogewogICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBMRUZUU1RSSVAsIGJ5dGVzKTsKIH0KQEAgLTIwNDMsNyArMjAxOCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5yc3RyaXAKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBieXRlczogb2JqZWN0ID0gTm9uZQogICAgIC8KIApAQCAtMjA1NCw4MSArMjAyOCwzNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcnN0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU0N2UzODE1Yzk1NDQ3ZGEgaW5wdXQ9OGY5M2M5Y2QzNjFmMDE0MF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU0N2UzODE1Yzk1NDQ3ZGEgaW5wdXQ9Yjc4YWY0NDVjNzI3ZTMyYl0qLwogewogICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBSSUdIVFNUUklQLCBieXRlcyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKGNvdW50X19kb2NfXywKLSJCLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nIHN1YiBpblxuXAotc3RyaW5nIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZFxuXAotYXMgaW4gc2xpY2Ugbm90YXRpb24uIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19jb3VudChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqc3ViX29iajsKLSAgICBjb25zdCBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKLSAgICBQeV9zc2l6ZV90IHN1Yl9sZW47Ci0gICAgY2hhciBieXRlOwotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLQotICAgIFB5X2J1ZmZlciB2c3ViOwotICAgIFB5T2JqZWN0ICpjb3VudF9vYmo7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImNvdW50IiwgYXJncywgJnN1Yl9vYmosICZieXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzdWJfb2JqKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3ViX29iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIHN1YiA9IHZzdWIuYnVmOwotICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdWIgPSAmYnl0ZTsKLSAgICAgICAgc3ViX2xlbiA9IDE7Ci0gICAgfQotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlCeXRlc19HRVRfU0laRShzZWxmKSk7Ci0KLSAgICBjb3VudF9vYmogPSBQeUxvbmdfRnJvbVNzaXplX3QoCi0gICAgICAgIHN0cmluZ2xpYl9jb3VudChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgUFlfU1NJWkVfVF9NQVgpCi0gICAgICAgICk7Ci0KLSAgICBpZiAoc3ViX29iaikKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1Yik7Ci0KLSAgICByZXR1cm4gY291bnRfb2JqOworICAgIHJldHVybiBfUHlfYnl0ZXNfY291bnQoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnRyYW5zbGF0ZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIHRhYmxlOiBvYmplY3QKICAgICAgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4KLSAgICBbCi0gICAgZGVsZXRlY2hhcnM6IG9iamVjdAotICAgIF0KICAgICAvCisgICAgZGVsZXRlIGFzIGRlbGV0ZWNoYXJzOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKIAogUmV0dXJuIGEgY29weSB3aXRoIGVhY2ggY2hhcmFjdGVyIG1hcHBlZCBieSB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiAKLUFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQuCitBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC4KIFRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfdHJhbnNsYXRlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLCBpbnQgZ3JvdXBfcmlnaHRfMSwKK2J5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzNkZjg1MGViNTBiZjhkIGlucHV0PWQ4ZmE1NTE5ZDdjYzRiZTddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00M2JlMzQzN2YxOTU2MjExIGlucHV0PTBlY2RmMTU5ZjY1NDIzM2NdKi8KIHsKICAgICBjaGFyICppbnB1dCwgKm91dHB1dDsKICAgICBQeV9idWZmZXIgdGFibGVfdmlldyA9IHtOVUxMLCBOVUxMfTsKQEAgLTIxODksNyArMjExOSw3IEBACiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnRhYmxlX3ZpZXcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlc19Bc1N0cmluZyhyZXN1bHQpOworICAgIG91dHB1dF9zdGFydCA9IG91dHB1dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CiAgICAgaW5wdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhpbnB1dF9vYmopOwogCiAgICAgaWYgKGRlbGxlbiA9PSAwICYmIHRhYmxlX2NoYXJzICE9IE5VTEwpIHsKQEAgLTIyNjUsNDk4ICsyMTk1LDYgQEAKICAgICByZXR1cm4gX1B5X2J5dGVzX21ha2V0cmFucyhmcm0sIHRvKTsKIH0KIAotLyogZmluZCBhbmQgY291bnQgY2hhcmFjdGVycyBhbmQgc3Vic3RyaW5ncyAqLwotCi0jZGVmaW5lIGZpbmRjaGFyKHRhcmdldCwgdGFyZ2V0X2xlbiwgYykgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKGNoYXIgKiltZW1jaHIoKGNvbnN0IHZvaWQgKikodGFyZ2V0KSwgYywgdGFyZ2V0X2xlbikpCi0KLS8qIFN0cmluZyBvcHMgbXVzdCByZXR1cm4gYSBzdHJpbmcuICAqLwotLyogSWYgdGhlIG9iamVjdCBpcyBzdWJjbGFzcyBvZiBzdHJpbmcsIGNyZWF0ZSBhIGNvcHkgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJldHVybl9zZWxmKFB5Qnl0ZXNPYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBzZWxmOwotICAgIH0KLSAgICByZXR1cm4gKFB5Qnl0ZXNPYmplY3QgKilQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKAotICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwKLSAgICAgICAgUHlCeXRlc19HRVRfU0laRShzZWxmKSk7Ci19Ci0KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotY291bnRjaGFyKGNvbnN0IGNoYXIgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRfbGVuLCBjaGFyIGMsIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgUHlfc3NpemVfdCBjb3VudD0wOwotICAgIGNvbnN0IGNoYXIgKnN0YXJ0PXRhcmdldDsKLSAgICBjb25zdCBjaGFyICplbmQ9dGFyZ2V0K3RhcmdldF9sZW47Ci0KLSAgICB3aGlsZSAoIChzdGFydD1maW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBjKSkgIT0gTlVMTCApIHsKLSAgICAgICAgY291bnQrKzsKLSAgICAgICAgaWYgKGNvdW50ID49IG1heGNvdW50KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN0YXJ0ICs9IDE7Ci0gICAgfQotICAgIHJldHVybiBjb3VudDsKLX0KLQotCi0vKiBBbGdvcml0aG1zIGZvciBkaWZmZXJlbnQgY2FzZXMgb2Ygc3RyaW5nIHJlcGxhY2VtZW50ICovCi0KLS8qIGxlbihzZWxmKT49MSwgZnJvbT0iIiwgbGVuKHRvKT49MSwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2VfaW50ZXJsZWF2ZShQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBpOwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIC8qIDEgYXQgdGhlIGVuZCBwbHVzIDEgYWZ0ZXIgZXZlcnkgY2hhcmFjdGVyOwotICAgICAgIGNvdW50ID0gbWluKG1heGNvdW50LCBzZWxmX2xlbiArIDEpICovCi0gICAgaWYgKG1heGNvdW50IDw9IHNlbGZfbGVuKQotICAgICAgICBjb3VudCA9IG1heGNvdW50OwotICAgIGVsc2UKLSAgICAgICAgLyogQ2FuJ3Qgb3ZlcmZsb3c6IHNlbGZfbGVuICsgMSA8PSBtYXhjb3VudCA8PSBQWV9TU0laRV9UX01BWC4gKi8KLSAgICAgICAgY291bnQgPSBzZWxmX2xlbiArIDE7Ci0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAvKiAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOyAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlbWVudCBieXRlcyBhcmUgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOwotCi0gICAgaWYgKCEgKHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgLyogVE9ETzogc3BlY2lhbCBjYXNlIHNpbmdsZSBjaGFyYWN0ZXIsIHdoaWNoIGRvZXNuJ3QgbmVlZCBtZW1jcHkgKi8KLQotICAgIC8qIExheSB0aGUgZmlyc3Qgb25lIGRvd24gKGd1YXJhbnRlZWQgdGhpcyB3aWxsIG9jY3VyKSAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgY291bnQgLT0gMTsKLQotICAgIGZvciAoaT0wOyBpPGNvdW50OyBpKyspIHsKLSAgICAgICAgKnJlc3VsdF9zKysgPSAqc2VsZl9zKys7Ci0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgIH0KLQotICAgIC8qIENvcHkgdGhlIHJlc3Qgb2YgdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbi1pKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIFNwZWNpYWwgY2FzZSBmb3IgZGVsZXRpbmcgYSBzaW5nbGUgY2hhcmFjdGVyICovCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgdG89IiIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7Ci0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIGNvdW50OyAgLyogZnJvbV9sZW4gPT0gMSAqLwotICAgIGFzc2VydChyZXN1bHRfbGVuPj0wKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLQotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpIHsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLQotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIChjb3VudCAqIGZyb21fbGVuKTsKLSAgICBhc3NlcnQgKHJlc3VsdF9sZW4+PTApOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0ICsgb2Zmc2V0OwotCi0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotCi0gICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgIH0KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPT0xLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIGNoYXIgdG9fYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zLCAqc3RhcnQsICplbmQsICpuZXh0OwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW47Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgLyogVGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgbmV4dCA9IGZpbmRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYyk7Ci0KLSAgICBpZiAobmV4dCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgc3RyaW5nICovCi0gICAgcmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmX2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKLQotICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCi0gICAgc3RhcnQgPSAgcmVzdWx0X3MgKyAobmV4dC1zZWxmX3MpOwotICAgICpzdGFydCA9IHRvX2M7Ci0gICAgc3RhcnQrKzsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICpuZXh0ID0gdG9fYzsKLSAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnJlc3VsdF9zLCAqc3RhcnQsICplbmQ7Ci0gICAgY2hhciAqc2VsZl9zOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIG9mZnNldDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KLQotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICBpZiAob2Zmc2V0ID09IC0xKSB7Ci0gICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgc3RyaW5nICovCi0gICAgcmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmX2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKLQotICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCi0gICAgc3RhcnQgPSAgcmVzdWx0X3MgKyBvZmZzZXQ7Ci0gICAgUHlfTUVNQ1BZKHN0YXJ0LCB0b19zLCBmcm9tX2xlbik7Ci0gICAgc3RhcnQgKz0gZnJvbV9sZW47Ci0gICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKLQotICAgIHdoaWxlICggLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQ9PS0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X01FTUNQWShzdGFydCtvZmZzZXQsIHRvX3MsIGZyb21fbGVuKTsKLSAgICAgICAgc3RhcnQgKz0gb2Zmc2V0K2Zyb21fbGVuOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIHVzZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgYW5kIG5ldywgaGVuY2UgdGhlICItMSIgKi8KLSAgICAvKiAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi0xKSAgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuIC0gMSA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50IGJ5dGVzIGFyZSB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gMSk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7Ci0gICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ICs9IDE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9zdWJzdHJpbmcoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkgewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotCi0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgLyogICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLWZyb21fbGVuKSAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gLSBmcm9tX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50IGJ5dGVzIGFyZSB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLWZyb21fbGVuKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBzdGFydCtvZmZzZXQ7Ci0gICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7Ci0gICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ICs9IGZyb21fbGVuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCtmcm9tX2xlbjsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgaWYgKG1heGNvdW50IDwgMCkgewotICAgICAgICBtYXhjb3VudCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIH0gZWxzZSBpZiAobWF4Y291bnQgPT0gMCB8fCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmIChtYXhjb3VudCA9PSAwIHx8Ci0gICAgICAgIChmcm9tX2xlbiA9PSAwICYmIHRvX2xlbiA9PSAwKSkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogSGFuZGxlIHplcm8tbGVuZ3RoIHNwZWNpYWwgY2FzZXMgKi8KLQotICAgIGlmIChmcm9tX2xlbiA9PSAwKSB7Ci0gICAgICAgIC8qIGluc2VydCB0aGUgJ3RvJyBzdHJpbmcgZXZlcnl3aGVyZS4gICAqLwotICAgICAgICAvKiAgICA+Pj4gIlB5dGhvbiIucmVwbGFjZSgiIiwgIi4iKSAgICAgKi8KLSAgICAgICAgLyogICAgJy5QLnkudC5oLm8ubi4nICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgIHJldHVybiByZXBsYWNlX2ludGVybGVhdmUoc2VsZiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgfQotCi0gICAgLyogRXhjZXB0IGZvciAiIi5yZXBsYWNlKCIiLCAiQSIpID09ICJBIiB0aGVyZSBpcyBubyB3YXkgYmV5b25kIHRoaXMgKi8KLSAgICAvKiBwb2ludCBmb3IgYW4gZW1wdHkgc2VsZiBzdHJpbmcgdG8gZ2VuZXJhdGUgYSBub24tZW1wdHkgc3RyaW5nICovCi0gICAgLyogU3BlY2lhbCBjYXNlIHNvIHRoZSByZW1haW5pbmcgY29kZSBhbHdheXMgZ2V0cyBhIG5vbi1lbXB0eSBzdHJpbmcgKi8KLSAgICBpZiAoUHlCeXRlc19HRVRfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAodG9fbGVuID09IDApIHsKLSAgICAgICAgLyogZGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiAnZnJvbScgc3RyaW5nICovCi0gICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcigKLSAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoc2VsZiwgZnJvbV9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX2xlbiwgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogSGFuZGxlIHNwZWNpYWwgY2FzZSB3aGVyZSBib3RoIHN0cmluZ3MgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKi8KLQotICAgIGlmIChmcm9tX2xlbiA9PSB0b19sZW4pIHsKLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoCi0gICAgICAgICAgICAgICAgc2VsZiwKLSAgICAgICAgICAgICAgICBmcm9tX3NbMF0sCi0gICAgICAgICAgICAgICAgdG9fc1swXSwKLSAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoCi0gICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLAotICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIE90aGVyd2lzZSB1c2UgdGhlIG1vcmUgZ2VuZXJpYyBhbGdvcml0aG1zICovCi0gICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihzZWxmLCBmcm9tX3NbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogbGVuKCdmcm9tJyk+PTIsIGxlbigndG8nKT49MSAqLwotICAgICAgICByZXR1cm4gcmVwbGFjZV9zdWJzdHJpbmcoc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgIH0KLX0KLQogCiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5yZXBsYWNlCkBAIC0yNzc1LDE1NiArMjIxMywyOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAorYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQwM2RjOWQ3YTgzYzVhMWQgaW5wdXQ9YjJmYmJmMGJmMDRkZThlNV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5NGZhNTg4YjZiOWMxMDQgaW5wdXQ9YjJmYmJmMGJmMDRkZThlNV0qLwogewotICAgIHJldHVybiAoUHlPYmplY3QgKilyZXBsYWNlKChQeUJ5dGVzT2JqZWN0ICopIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilvbGQtPmJ1Ziwgb2xkLT5sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKKyAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2UoKFB5T2JqZWN0ICopc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilvbGQtPmJ1Ziwgb2xkLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CiB9CiAKIC8qKiBFbmQgREFMS0UgKiovCiAKLS8qIE1hdGNoZXMgdGhlIGVuZCAoZGlyZWN0aW9uID49IDApIG9yIHN0YXJ0IChkaXJlY3Rpb24gPCAwKSBvZiBzZWxmCi0gKiBhZ2FpbnN0IHN1YnN0ciwgdXNpbmcgdGhlIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzLiBSZXR1cm5zCi0gKiAtMSBvbiBlcnJvciwgMCBpZiBub3QgZm91bmQgYW5kIDEgaWYgZm91bmQuCi0gKi8KLVB5X0xPQ0FMKGludCkKLV9ieXRlc190YWlsbWF0Y2goUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YnN0ciwgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQotewotICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLSAgICBQeV9zc2l6ZV90IHNsZW47Ci0gICAgUHlfYnVmZmVyIHN1Yl92aWV3ID0ge05VTEwsIE5VTEx9OwotICAgIGNvbnN0IGNoYXIqIHN1YjsKLSAgICBjb25zdCBjaGFyKiBzdHI7Ci0KLSAgICBpZiAoUHlCeXRlc19DaGVjayhzdWJzdHIpKSB7Ci0gICAgICAgIHN1YiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHN1YnN0cik7Ci0gICAgICAgIHNsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHN1YnN0cik7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1YnN0ciwgJnN1Yl92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHN1YiA9IHN1Yl92aWV3LmJ1ZjsKLSAgICAgICAgc2xlbiA9IHN1Yl92aWV3LmxlbjsKLSAgICB9Ci0gICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOwotCi0gICAgaWYgKGRpcmVjdGlvbiA8IDApIHsKLSAgICAgICAgLyogc3RhcnRzd2l0aCAqLwotICAgICAgICBpZiAoc3RhcnQrc2xlbiA+IGxlbikKLSAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogZW5kc3dpdGggKi8KLSAgICAgICAgaWYgKGVuZC1zdGFydCA8IHNsZW4gfHwgc3RhcnQgPiBsZW4pCi0gICAgICAgICAgICBnb3RvIG5vdGZvdW5kOwotCi0gICAgICAgIGlmIChlbmQtc2xlbiA+IHN0YXJ0KQotICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSBzbGVuOwotICAgIH0KLSAgICBpZiAoZW5kLXN0YXJ0IDwgc2xlbikKLSAgICAgICAgZ290byBub3Rmb3VuZDsKLSAgICBpZiAobWVtY21wKHN0citzdGFydCwgc3ViLCBzbGVuKSAhPSAwKQotICAgICAgICBnb3RvIG5vdGZvdW5kOwotCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViX3ZpZXcpOwotICAgIHJldHVybiAxOwotCi1ub3Rmb3VuZDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJfdmlldyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLQotUHlEb2NfU1RSVkFSKHN0YXJ0c3dpdGhfX2RvY19fLAotIkIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCi1cblwKLVJldHVybiBUcnVlIGlmIEIgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1wcmVmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19zdGFydHN3aXRoKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBpbnQgcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygic3RhcnRzd2l0aCIsIGFyZ3MsICZzdWJvYmosICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IF9ieXRlc190YWlsbWF0Y2goc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgLTEpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICB9Ci0gICAgcmVzdWx0ID0gX2J5dGVzX3RhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3N0YXJ0c3dpdGgoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KLVB5RG9jX1NUUlZBUihlbmRzd2l0aF9fZG9jX18sCi0iQi5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCi1cblwKLVJldHVybiBUcnVlIGlmIEIgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCi1XaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1XaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAotc3VmZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfZW5kc3dpdGgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJlbmRzd2l0aCIsIGFyZ3MsICZzdWJvYmosICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IF9ieXRlc190YWlsbWF0Y2goc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgKzEpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICB9Ci0gICAgcmVzdWx0ID0gX2J5dGVzX3RhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIGJ5dGVzLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19lbmRzd2l0aChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIApAQCAtMjk0NCw5ICsyMjU0LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCitieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZDIwMTZmZjhlMGJiMTc2IGlucHV0PTk1ODE3NDc2OWQyYTQwY2FdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NjQ5YTUzZGRlMjdiMzE0IGlucHV0PTk1ODE3NDc2OWQyYTQwY2FdKi8KIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KChQeU9iamVjdCopc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiB9CkBAIC0yOTY0LDggKzIyNzQsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgaW50IGtlZXBlbmRzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5NWMzNTk4Zjc4MzNjYWQgaW5wdXQ9N2Y0YWFjNjcxNDRmOTk0NF0qLworYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGludCBrZWVwZW5kcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNDg0MTQ5YTVkODgwZmZiIGlucHV0PTdmNGFhYzY3MTQ0Zjk5NDRdKi8KIHsKICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0bGluZXMoCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLApAQCAtMjk3MywyMiArMjI4Myw2IEBACiAgICAgICAgICk7CiB9CiAKLXN0YXRpYyBpbnQKLWhleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQotewotICAgIGlmIChjID49IDEyOCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeV9JU0RJR0lUKGMpKQotICAgICAgICByZXR1cm4gYyAtICcwJzsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5X0lTVVBQRVIoYykpCi0gICAgICAgICAgICBjID0gUHlfVE9MT1dFUihjKTsKLSAgICAgICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgICAgICAgcmV0dXJuIGMgLSAnYScgKyAxMDsKLSAgICB9Ci0gICAgcmV0dXJuIC0xOwotfQotCiAvKltjbGluaWMgaW5wdXRdCiBAY2xhc3NtZXRob2QKIGJ5dGVzLmZyb21oZXgKQEAgLTMwMDYsNDcgKzIzMDAsODggQEAKIGJ5dGVzX2Zyb21oZXhfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpzdHJpbmcpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDk3M2FjYzYzNjYxYmIyZSBpbnB1dD1iZjRkMWMzNjE2NzBhY2QzXSovCiB7Ci0gICAgUHlPYmplY3QgKm5ld3N0cmluZzsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5Qnl0ZXNfRnJvbUhleChzdHJpbmcsIDApOworICAgIGlmICh0eXBlICE9ICZQeUJ5dGVzX1R5cGUgJiYgcmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygoUHlPYmplY3QgKil0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwgTlVMTCkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21IZXgoUHlPYmplY3QgKnN0cmluZywgaW50IHVzZV9ieXRlYXJyYXkpCit7CiAgICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgaGV4bGVuLCBieXRlc2xlbiwgaSwgajsKLSAgICBpbnQgdG9wLCBib3Q7Ci0gICAgdm9pZCAqZGF0YTsKLSAgICB1bnNpZ25lZCBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGhleGxlbiwgaW52YWxpZF9jaGFyOworICAgIHVuc2lnbmVkIGludCB0b3AsIGJvdDsKKyAgICBQeV9VQ1MxICpzdHIsICplbmQ7CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOworCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICB3cml0ZXIudXNlX2J5dGVhcnJheSA9IHVzZV9ieXRlYXJyYXk7CiAKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHN0cmluZykpOwogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CiAgICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKIAotICAgIGJ5dGVzbGVuID0gaGV4bGVuLzI7IC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCi0gICAgbmV3c3RyaW5nID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2xlbik7Ci0gICAgaWYgKCFuZXdzdHJpbmcpCisgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoc3RyaW5nKSkgeworICAgICAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKKyAgICAgICAgdW5zaWduZWQgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgLyogc2VhcmNoIGZvciB0aGUgZmlyc3Qgbm9uLUFTQ0lJIGNoYXJhY3RlciAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaGV4bGVuOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSA+PSAxMjgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaW52YWxpZF9jaGFyID0gaTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoc3RyaW5nKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgc3RyID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKTsKKworICAgIC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCisgICAgYnVmID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgaGV4bGVuIC8gMik7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXdzdHJpbmcpOwotICAgIGZvciAoaSA9IGogPSAwOyBpIDwgaGV4bGVuOyBpICs9IDIpIHsKKworICAgIGVuZCA9IHN0ciArIGhleGxlbjsKKyAgICB3aGlsZSAoc3RyIDwgZW5kKSB7CiAgICAgICAgIC8qIHNraXAgb3ZlciBzcGFjZXMgaW4gdGhlIGlucHV0ICovCi0gICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSA9PSAnICcpCi0gICAgICAgICAgICBpKys7Ci0gICAgICAgIGlmIChpID49IGhleGxlbikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB0b3AgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKLSAgICAgICAgYm90ID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKzEpKTsKLSAgICAgICAgaWYgKHRvcCA9PSAtMSB8fCBib3QgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJub24taGV4YWRlY2ltYWwgbnVtYmVyIGZvdW5kIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbWhleCgpIGFyZyBhdCBwb3NpdGlvbiAlemQiLCBpKTsKKyAgICAgICAgaWYgKCpzdHIgPT0gJyAnKSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgc3RyKys7CisgICAgICAgICAgICB9IHdoaWxlICgqc3RyID09ICcgJyk7CisgICAgICAgICAgICBpZiAoc3RyID49IGVuZCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRvcCA9IF9QeUxvbmdfRGlnaXRWYWx1ZVsqc3RyXTsKKyAgICAgICAgaWYgKHRvcCA+PSAxNikgeworICAgICAgICAgICAgaW52YWxpZF9jaGFyID0gc3RyIC0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLSAgICAgICAgYnVmW2orK10gPSAodG9wIDw8IDQpICsgYm90OworICAgICAgICBzdHIrKzsKKworICAgICAgICBib3QgPSBfUHlMb25nX0RpZ2l0VmFsdWVbKnN0cl07CisgICAgICAgIGlmIChib3QgPj0gMTYpIHsKKyAgICAgICAgICAgIGludmFsaWRfY2hhciA9IHN0ciAtIFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHN0cisrOworCisgICAgICAgICpidWYrKyA9ICh1bnNpZ25lZCBjaGFyKSgodG9wIDw8IDQpICsgYm90KTsKICAgICB9Ci0gICAgaWYgKGogIT0gYnl0ZXNsZW4gJiYgX1B5Qnl0ZXNfUmVzaXplKCZuZXdzdHJpbmcsIGopIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXR1cm4gbmV3c3RyaW5nOworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBidWYpOwogCiAgIGVycm9yOgotICAgIFB5X1hERUNSRUYobmV3c3RyaW5nKTsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm5vbi1oZXhhZGVjaW1hbCBudW1iZXIgZm91bmQgaW4gIgorICAgICAgICAgICAgICAgICAiZnJvbWhleCgpIGFyZyBhdCBwb3NpdGlvbiAlemQiLCBpbnZhbGlkX2NoYXIpOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTMwNzYsMTcgKzI0MTEsMjAgQEAKICAgICB7Il9fZ2V0bmV3YXJnc19fIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2dldG5ld2FyZ3MsICBNRVRIX05PQVJHU30sCiAgICAgeyJjYXBpdGFsaXplIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jYXBpdGFsaXplLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2NhcGl0YWxpemVfX2RvY19ffSwKLSAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIGNlbnRlcl9fZG9jX199LAotICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfY291bnQsIE1FVEhfVkFSQVJHUywgY291bnRfX2RvY19ffSwKKyAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9jZW50ZXJfX2RvY19ffSwKKyAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2NvdW50LCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9jb3VudF9fZG9jX199LAogICAgIEJZVEVTX0RFQ09ERV9NRVRIT0RERUYKICAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2VuZHN3aXRoLCBNRVRIX1ZBUkFSR1MsCi0gICAgIGVuZHN3aXRoX19kb2NfX30sCisgICAgIF9QeV9lbmRzd2l0aF9fZG9jX199LAogICAgIHsiZXhwYW5kdGFicyIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfZXhwYW5kdGFicywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgZXhwYW5kdGFic19fZG9jX199LAotICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19maW5kLCBNRVRIX1ZBUkFSR1MsIGZpbmRfX2RvY19ffSwKKyAgICAgX1B5X2V4cGFuZHRhYnNfX2RvY19ffSwKKyAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZmluZCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfZmluZF9fZG9jX199LAogICAgIEJZVEVTX0ZST01IRVhfTUVUSE9EREVGCiAgICAgeyJoZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfaGV4LCBNRVRIX05PQVJHUywgaGV4X19kb2NfX30sCi0gICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19pbmRleCwgTUVUSF9WQVJBUkdTLCBpbmRleF9fZG9jX199LAorICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfaW5kZXgsIE1FVEhfVkFSQVJHUywgX1B5X2luZGV4X19kb2NfX30sCiAgICAgeyJpc2FsbnVtIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FsbnVtLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzYWxudW1fX2RvY19ffSwKICAgICB7ImlzYWxwaGEiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxwaGEsIE1FVEhfTk9BUkdTLApAQCAtMzEwMiwzOCArMjQ0MCw0MCBAQAogICAgIHsiaXN1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXN1cHBlciwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc3VwcGVyX19kb2NfX30sCiAgICAgQllURVNfSk9JTl9NRVRIT0RERUYKLSAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBsanVzdF9fZG9jX199LAorICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIF9QeV9sanVzdF9fZG9jX199LAogICAgIHsibG93ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xvd2VyLCBNRVRIX05PQVJHUywgX1B5X2xvd2VyX19kb2NfX30sCiAgICAgQllURVNfTFNUUklQX01FVEhPRERFRgogICAgIEJZVEVTX01BS0VUUkFOU19NRVRIT0RERUYKICAgICBCWVRFU19QQVJUSVRJT05fTUVUSE9EREVGCiAgICAgQllURVNfUkVQTEFDRV9NRVRIT0RERUYKLSAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JmaW5kLCBNRVRIX1ZBUkFSR1MsIHJmaW5kX19kb2NfX30sCi0gICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIHJpbmRleF9fZG9jX199LAotICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCisgICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19yZmluZCwgTUVUSF9WQVJBUkdTLCBfUHlfcmZpbmRfX2RvY19ffSwKKyAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19yaW5kZXgsIE1FVEhfVkFSQVJHUywgX1B5X3JpbmRleF9fZG9jX199LAorICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIF9QeV9yanVzdF9fZG9jX199LAogICAgIEJZVEVTX1JQQVJUSVRJT05fTUVUSE9EREVGCiAgICAgQllURVNfUlNQTElUX01FVEhPRERFRgogICAgIEJZVEVTX1JTVFJJUF9NRVRIT0RERUYKICAgICBCWVRFU19TUExJVF9NRVRIT0RERUYKICAgICBCWVRFU19TUExJVExJTkVTX01FVEhPRERFRgogICAgIHsic3RhcnRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlc19zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MsCi0gICAgIHN0YXJ0c3dpdGhfX2RvY19ffSwKKyAgICAgX1B5X3N0YXJ0c3dpdGhfX2RvY19ffSwKICAgICBCWVRFU19TVFJJUF9NRVRIT0RERUYKICAgICB7InN3YXBjYXNlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9zd2FwY2FzZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9zd2FwY2FzZV9fZG9jX199LAogICAgIHsidGl0bGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3RpdGxlLCBNRVRIX05PQVJHUywgX1B5X3RpdGxlX19kb2NfX30sCiAgICAgQllURVNfVFJBTlNMQVRFX01FVEhPRERFRgogICAgIHsidXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3VwcGVyLCBNRVRIX05PQVJHUywgX1B5X3VwcGVyX19kb2NfX30sCi0gICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgemZpbGxfX2RvY19ffSwKKyAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCBfUHlfemZpbGxfX2RvY19ffSwKICAgICB7TlVMTCwgICAgIE5VTEx9ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfbW9kKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKK2J5dGVzX21vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sodikpCisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHNlbGYpKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKLSAgICByZXR1cm4gX1B5Qnl0ZXNfRm9ybWF0KHYsIHcpOworICAgIH0KKyAgICByZXR1cm4gX1B5Qnl0ZXNfRm9ybWF0RXgoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgMCk7CiB9CiAKIHN0YXRpYyBQeU51bWJlck1ldGhvZHMgYnl0ZXNfYXNfbnVtYmVyID0gewpAQCAtMzIyMiwxNyArMjU2MiwxNSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgLyogSXMgaXQgYW4gaW50ZWdlcj8gKi8KLSAgICBzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KHgsIFB5RXhjX092ZXJmbG93RXJyb3IpOwotICAgIGlmIChzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgaWYgKFB5SW5kZXhfQ2hlY2soeCkpIHsKKyAgICAgICAgc2l6ZSA9IFB5TnVtYmVyX0FzU3NpemVfdCh4LCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UgeworICAgICAgICB9CisgICAgICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgbmV3ID0gX1B5Qnl0ZXNfRnJvbVNpemUoc2l6ZSwgMSk7CiAgICAgICAgIGlmIChuZXcgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzI0MiwxMDggKzI1ODAsOTMgQEAKICAgICByZXR1cm4gUHlCeXRlc19Gcm9tT2JqZWN0KHgpOwogfQogCi1QeU9iamVjdCAqCi1QeUJ5dGVzX0Zyb21PYmplY3QoUHlPYmplY3QgKngpCitzdGF0aWMgUHlPYmplY3QqCitfUHlCeXRlc19Gcm9tQnVmZmVyKFB5T2JqZWN0ICp4KQogewotICAgIFB5T2JqZWN0ICpuZXcsICppdDsKKyAgICBQeU9iamVjdCAqbmV3OworICAgIFB5X2J1ZmZlciB2aWV3OworCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih4LCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgdmlldy5sZW4pOworICAgIGlmICghbmV3KQorICAgICAgICBnb3RvIGZhaWw7CisgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cygoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsLAorICAgICAgICAgICAgICAgICZ2aWV3LCB2aWV3LmxlbiwgJ0MnKSA8IDApCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICByZXR1cm4gbmV3OworCitmYWlsOgorICAgIFB5X1hERUNSRUYobmV3KTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworI2RlZmluZSBfUHlCeXRlc19GUk9NX0xJU1RfQk9EWSh4LCBHRVRfSVRFTSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5T2JqZWN0ICpieXRlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9zc2l6ZV90IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfc3NpemVfdCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNoYXIgKnN0cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeU9iamVjdCAqaXRlbTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0ciA9ICgoUHlCeXRlc09iamVjdCAqKWJ5dGVzKS0+b2Jfc3ZhbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5X1NJWkUoeCk7IGkrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpdGVtID0gR0VUX0lURU0oKHgpLCBpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgTlVMTCk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPj0gMjU2KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpIHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBieXRlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCitzdGF0aWMgUHlPYmplY3QqCitfUHlCeXRlc19Gcm9tTGlzdChQeU9iamVjdCAqeCkKK3sKKyAgICBfUHlCeXRlc19GUk9NX0xJU1RfQk9EWSh4LCBQeUxpc3RfR0VUX0lURU0pOworfQorCitzdGF0aWMgUHlPYmplY3QqCitfUHlCeXRlc19Gcm9tVHVwbGUoUHlPYmplY3QgKngpCit7CisgICAgX1B5Qnl0ZXNfRlJPTV9MSVNUX0JPRFkoeCwgUHlUdXBsZV9HRVRfSVRFTSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlCeXRlc19Gcm9tSXRlcmF0b3IoUHlPYmplY3QgKml0LCBQeU9iamVjdCAqeCkKK3sKKyAgICBjaGFyICpzdHI7CiAgICAgUHlfc3NpemVfdCBpLCBzaXplOwotCi0gICAgaWYgKHggPT0gTlVMTCkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdCh4KSkgewotICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgIHJldHVybiB4OwotICAgIH0KLQotICAgIC8qIFVzZSB0aGUgbW9kZXJuIGJ1ZmZlciBpbnRlcmZhY2UgKi8KLSAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoeCkpIHsKLSAgICAgICAgUHlfYnVmZmVyIHZpZXc7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoeCwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHZpZXcubGVuKTsKLSAgICAgICAgaWYgKCFuZXcpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGlmIChQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmlldywgdmlldy5sZW4sICdDJykgPCAwKQotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKLSAgICAgICAgcmV0dXJuIG5ldzsKLSAgICAgIGZhaWw6Ci0gICAgICAgIFB5X1hERUNSRUYobmV3KTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHgpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgdW5pY29kZSBvYmplY3QgdG8gYnl0ZXMiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKFB5TGlzdF9DaGVja0V4YWN0KHgpKSB7Ci0gICAgICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgUHlfU0laRSh4KSk7Ci0gICAgICAgIGlmIChuZXcgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRSh4KTsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KAotICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTSh4LCBpKSwgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3OwotICAgIH0KLSAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHgpKSB7Ci0gICAgICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgUHlfU0laRSh4KSk7Ci0gICAgICAgIGlmIChuZXcgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRSh4KTsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KAotICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oeCwgaSksIFB5RXhjX1ZhbHVlRXJyb3IpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPj0gMjU2KSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWxbaV0gPSAoY2hhcikgdmFsdWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldzsKLSAgICB9CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgLyogRm9yIGl0ZXJhdG9yIHZlcnNpb24sIGNyZWF0ZSBhIHN0cmluZyBvYmplY3QgYW5kIHJlc2l6ZSBhcyBuZWVkZWQgKi8KICAgICBzaXplID0gUHlPYmplY3RfTGVuZ3RoSGludCh4LCA2NCk7CiAgICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgLyogQWxsb2NhdGUgYW4gZXh0cmEgYnl0ZSB0byBwcmV2ZW50IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKSBmcm9tCi0gICAgICAgcmV0dXJuaW5nIGEgc2hhcmVkIGVtcHR5IGJ5dGVzIHN0cmluZy4gVGhpcyByZXF1aXJlZCBiZWNhdXNlIHdlCi0gICAgICAgd2FudCB0byBjYWxsIF9QeUJ5dGVzX1Jlc2l6ZSgpIHRoZSByZXR1cm5lZCBvYmplY3QsIHdoaWNoIHdlIGNhbgotICAgICAgIG9ubHkgZG8gb24gYnl0ZXMgb2JqZWN0cyB3aXRoIHJlZmNvdW50ID09IDEuICovCi0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgc2l6ZSA9IDE7Ci0gICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKLSAgICBpZiAobmV3ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzc2VydChQeV9SRUZDTlQobmV3KSA9PSAxKTsKIAotICAgIC8qIEdldCB0aGUgaXRlcmF0b3IgKi8KLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoeCk7Ci0gICAgaWYgKGl0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7CisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOworICAgIHNpemUgPSB3cml0ZXIuYWxsb2NhdGVkOwogCiAgICAgLyogUnVuIHRoZSBpdGVyYXRvciB0byBleGhhdXN0aW9uICovCiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKQEAgLTMzNTksNyArMjY4Miw3IEBACiAgICAgICAgIH0KIAogICAgICAgICAvKiBJbnRlcnByZXQgaXQgYXMgYW4gaW50IChfX2luZGV4X18pICovCi0gICAgICAgIHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIFB5RXhjX1ZhbHVlRXJyb3IpOworICAgICAgICB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0zMzczLDIxICsyNjk2LDU4IEBACiAKICAgICAgICAgLyogQXBwZW5kIHRoZSBieXRlICovCiAgICAgICAgIGlmIChpID49IHNpemUpIHsKLSAgICAgICAgICAgIHNpemUgPSAyICogc2l6ZSArIDE7Ci0gICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZuZXcsIHNpemUpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKCZ3cml0ZXIsIHN0ciwgc2l6ZSsxKTsKKyAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHNpemUgPSB3cml0ZXIuYWxsb2NhdGVkOwogICAgICAgICB9Ci0gICAgICAgICgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWxbaV0gPSAoY2hhcikgdmFsdWU7CisgICAgICAgICpzdHIrKyA9IChjaGFyKSB2YWx1ZTsKICAgICB9Ci0gICAgX1B5Qnl0ZXNfUmVzaXplKCZuZXcsIGkpOwogCi0gICAgLyogQ2xlYW4gdXAgYW5kIHJldHVybiBzdWNjZXNzICovCi0gICAgUHlfREVDUkVGKGl0KTsKLSAgICByZXR1cm4gbmV3OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgc3RyKTsKIAogICBlcnJvcjoKLSAgICBQeV9YREVDUkVGKGl0KTsKLSAgICBQeV9YREVDUkVGKG5ldyk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlPYmplY3QgKgorUHlCeXRlc19Gcm9tT2JqZWN0KFB5T2JqZWN0ICp4KQoreworICAgIFB5T2JqZWN0ICppdCwgKnJlc3VsdDsKKworICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeUJ5dGVzX0NoZWNrRXhhY3QoeCkpIHsKKyAgICAgICAgUHlfSU5DUkVGKHgpOworICAgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICAvKiBVc2UgdGhlIG1vZGVybiBidWZmZXIgaW50ZXJmYWNlICovCisgICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbUJ1ZmZlcih4KTsKKworICAgIGlmIChQeUxpc3RfQ2hlY2tFeGFjdCh4KSkKKyAgICAgICAgcmV0dXJuIF9QeUJ5dGVzX0Zyb21MaXN0KHgpOworCisgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdCh4KSkKKyAgICAgICAgcmV0dXJuIF9QeUJ5dGVzX0Zyb21UdXBsZSh4KTsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHgpKSB7CisgICAgICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih4KTsKKyAgICAgICAgaWYgKGl0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IF9QeUJ5dGVzX0Zyb21JdGVyYXRvcihpdCwgeCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCAnJS4yMDBzJyBvYmplY3QgdG8gYnl0ZXMiLAorICAgICAgICAgICAgICAgICB4LT5vYl90eXBlLT50cF9uYW1lKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMzQwNSw3ICsyNzY1LDcgQEAKICAgICBuID0gUHlCeXRlc19HRVRfU0laRSh0bXApOwogICAgIHBuZXcgPSB0eXBlLT50cF9hbGxvYyh0eXBlLCBuKTsKICAgICBpZiAocG5ldyAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhwbmV3KSwKKyAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKHBuZXcpLAogICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcodG1wKSwgbisxKTsKICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopcG5ldyktPm9iX3NoYXNoID0KICAgICAgICAgICAgICgoUHlCeXRlc09iamVjdCAqKXRtcCktPm9iX3NoYXNoOwpAQCAtMzc0NywzICszMTA3LDI4MiBAQAogICAgIF9QeU9iamVjdF9HQ19UUkFDSyhpdCk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OwogfQorCisKKy8qIF9QeUJ5dGVzV3JpdGVyIEFQSSAqLworCisjaWZkZWYgTVNfV0lORE9XUworICAgLyogT24gV2luZG93cywgb3ZlcmFsbG9jYXRlIGJ5IDUwJSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KKyMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDIKKyNlbHNlCisgICAvKiBPbiBMaW51eCwgb3ZlcmFsbG9jYXRlIGJ5IDI1JSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KKyMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDQKKyNlbmRpZgorCit2b2lkCitfUHlCeXRlc1dyaXRlcl9Jbml0KF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpCit7CisgICAgLyogU2V0IGFsbCBhdHRyaWJ1dGVzIGJlZm9yZSBzbWFsbF9idWZmZXIgdG8gMCAqLworICAgIG1lbXNldCh3cml0ZXIsIDAsIG9mZnNldG9mKF9QeUJ5dGVzV3JpdGVyLCBzbWFsbF9idWZmZXIpKTsKKyNpZmRlZiBQeV9ERUJVRworICAgIG1lbXNldCh3cml0ZXItPnNtYWxsX2J1ZmZlciwgMHhDQiwgc2l6ZW9mKHdyaXRlci0+c21hbGxfYnVmZmVyKSk7CisjZW5kaWYKK30KKwordm9pZAorX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyKQoreworICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKK30KKworUHlfTE9DQUxfSU5MSU5FKGNoYXIqKQorX1B5Qnl0ZXNXcml0ZXJfQXNTdHJpbmcoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcikKK3sKKyAgICBpZiAod3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyKSB7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKyAgICAgICAgcmV0dXJuIHdyaXRlci0+c21hbGxfYnVmZmVyOworICAgIH0KKyAgICBlbHNlIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyICE9IE5VTEwpOworICAgICAgICByZXR1cm4gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHdyaXRlci0+YnVmZmVyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciAhPSBOVUxMKTsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfQVNfU1RSSU5HKHdyaXRlci0+YnVmZmVyKTsKKyAgICB9Cit9CisKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIpCit7CisgICAgY2hhciAqc3RhcnQgPSBfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyh3cml0ZXIpOworICAgIGFzc2VydChzdHIgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHN0ciA+PSBzdGFydCk7CisgICAgYXNzZXJ0KHN0ciAtIHN0YXJ0IDw9IHdyaXRlci0+YWxsb2NhdGVkKTsKKyAgICByZXR1cm4gc3RyIC0gc3RhcnQ7Cit9CisKK1B5X0xPQ0FMX0lOTElORSh2b2lkKQorX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIpCit7CisjaWZkZWYgUHlfREVCVUcKKyAgICBjaGFyICpzdGFydCwgKmVuZDsKKworICAgIGlmICh3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyID09IE5VTEwpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyICE9IE5VTEwpOworICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZUFycmF5X0NoZWNrRXhhY3Qod3JpdGVyLT5idWZmZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2tFeGFjdCh3cml0ZXItPmJ1ZmZlcikpOworICAgICAgICBhc3NlcnQoUHlfUkVGQ05UKHdyaXRlci0+YnVmZmVyKSA9PSAxKTsKKyAgICB9CisKKyAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgIC8qIGJ5dGVhcnJheSBoYXMgaXRzIG93biBvdmVyYWxsb2NhdGlvbiBhbGdvcml0aG0sCisgICAgICAgICAgIHdyaXRlciBvdmVyYWxsb2NhdGlvbiBtdXN0IGJlIGRpc2FibGVkICovCisgICAgICAgIGFzc2VydCghd3JpdGVyLT5vdmVyYWxsb2NhdGUpOworICAgIH0KKworICAgIGFzc2VydCgwIDw9IHdyaXRlci0+YWxsb2NhdGVkKTsKKyAgICBhc3NlcnQoMCA8PSB3cml0ZXItPm1pbl9zaXplICYmIHdyaXRlci0+bWluX3NpemUgPD0gd3JpdGVyLT5hbGxvY2F0ZWQpOworICAgIC8qIHRoZSBsYXN0IGJ5dGUgbXVzdCBhbHdheXMgYmUgbnVsbCAqLworICAgIHN0YXJ0ID0gX1B5Qnl0ZXNXcml0ZXJfQXNTdHJpbmcod3JpdGVyKTsKKyAgICBhc3NlcnQoc3RhcnRbd3JpdGVyLT5hbGxvY2F0ZWRdID09IDApOworCisgICAgZW5kID0gc3RhcnQgKyB3cml0ZXItPmFsbG9jYXRlZDsKKyAgICBhc3NlcnQoc3RyICE9IE5VTEwpOworICAgIGFzc2VydChzdGFydCA8PSBzdHIgJiYgc3RyIDw9IGVuZCk7CisjZW5kaWYKK30KKwordm9pZCoKK19QeUJ5dGVzV3JpdGVyX1Jlc2l6ZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCB2b2lkICpzdHIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZCwgcG9zOworCisgICAgX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXIsIHN0cik7CisgICAgYXNzZXJ0KHdyaXRlci0+YWxsb2NhdGVkIDwgc2l6ZSk7CisKKyAgICBhbGxvY2F0ZWQgPSBzaXplOworICAgIGlmICh3cml0ZXItPm92ZXJhbGxvY2F0ZQorICAgICAgICAmJiBhbGxvY2F0ZWQgPD0gKFBZX1NTSVpFX1RfTUFYIC0gYWxsb2NhdGVkIC8gT1ZFUkFMTE9DQVRFX0ZBQ1RPUikpIHsKKyAgICAgICAgLyogb3ZlcmFsbG9jYXRlIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcmVhbGxvYygpICovCisgICAgICAgIGFsbG9jYXRlZCArPSBhbGxvY2F0ZWQgLyBPVkVSQUxMT0NBVEVfRkFDVE9SOworICAgIH0KKworICAgIHBvcyA9IF9QeUJ5dGVzV3JpdGVyX0dldFNpemUod3JpdGVyLCBzdHIpOworICAgIGlmICghd3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyKSB7CisgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUod3JpdGVyLT5idWZmZXIsIGFsbG9jYXRlZCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIC8qIHdyaXRlci0+YWxsb2NhdGVkIGNhbiBiZSBzbWFsbGVyIHRoYW4gd3JpdGVyLT5idWZmZXItPm9iX2FsbG9jLAorICAgICAgICAgICAgICAgYnV0IHdlIGNhbm5vdCB1c2Ugb2JfYWxsb2MgYmVjYXVzZSBieXRlcyBtYXkgbmVlZCB0byBiZSBtb3ZlZAorICAgICAgICAgICAgICAgdG8gdXNlIHRoZSB3aG9sZSBidWZmZXIuIGJ5dGVhcnJheSB1c2VzIGFuIGludGVybmFsIG9wdGltaXphdGlvbgorICAgICAgICAgICAgICAgdG8gYXZvaWQgbW92aW5nIG9yIGNvcHlpbmcgYnl0ZXMgd2hlbiBieXRlcyBhcmUgcmVtb3ZlZCBhdCB0aGUKKyAgICAgICAgICAgICAgIGJlZ2lubmluZyAoZXg6IGRlbCBieXRlYXJyYXlbOjFdKS4gKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJndyaXRlci0+YnVmZmVyLCBhbGxvY2F0ZWQpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGNvbnZlcnQgZnJvbSBzdGFjayBidWZmZXIgdG8gYnl0ZXMgb2JqZWN0IGJ1ZmZlciAqLworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgPT0gTlVMTCk7CisKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkKKyAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYWxsb2NhdGVkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGFsbG9jYXRlZCk7CisgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBpZiAocG9zICE9IDApIHsKKyAgICAgICAgICAgIGNoYXIgKmRlc3Q7CisgICAgICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KQorICAgICAgICAgICAgICAgIGRlc3QgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRlc3QgPSBQeUJ5dGVzX0FTX1NUUklORyh3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPnNtYWxsX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICBwb3MpOworICAgICAgICB9CisKKyAgICAgICAgd3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyID0gMDsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICBtZW1zZXQod3JpdGVyLT5zbWFsbF9idWZmZXIsIDB4REIsIHNpemVvZih3cml0ZXItPnNtYWxsX2J1ZmZlcikpOworI2VuZGlmCisgICAgfQorICAgIHdyaXRlci0+YWxsb2NhdGVkID0gYWxsb2NhdGVkOworCisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfQXNTdHJpbmcod3JpdGVyKSArIHBvczsKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKyAgICByZXR1cm4gc3RyOworCitlcnJvcjoKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKHdyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnN0ciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5X3NzaXplX3QgbmV3X21pbl9zaXplOworCisgICAgX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXIsIHN0cik7CisgICAgYXNzZXJ0KHNpemUgPj0gMCk7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8gKi8KKyAgICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisKKyAgICBpZiAod3JpdGVyLT5taW5fc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gc2l6ZSkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKHdyaXRlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuZXdfbWluX3NpemUgPSB3cml0ZXItPm1pbl9zaXplICsgc2l6ZTsKKworICAgIGlmIChuZXdfbWluX3NpemUgPiB3cml0ZXItPmFsbG9jYXRlZCkKKyAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKHdyaXRlciwgc3RyLCBuZXdfbWluX3NpemUpOworCisgICAgd3JpdGVyLT5taW5fc2l6ZSA9IG5ld19taW5fc2l6ZTsKKyAgICByZXR1cm4gc3RyOworfQorCisvKiBBbGxvY2F0ZSB0aGUgYnVmZmVyIHRvIHdyaXRlIHNpemUgYnl0ZXMuCisgICBSZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiBidWZmZXIgZGF0YS4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCit2b2lkKgorX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIC8qIGVuc3VyZSB0aGF0IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCkgaXMgb25seSBjYWxsZWQgb25jZSAqLworICAgIGFzc2VydCh3cml0ZXItPm1pbl9zaXplID09IDAgJiYgd3JpdGVyLT5idWZmZXIgPT0gTlVMTCk7CisgICAgYXNzZXJ0KHNpemUgPj0gMCk7CisKKyAgICB3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIgPSAxOworI2lmZGVmIFB5X0RFQlVHCisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpIC0gMTsKKyAgICAvKiBJbiBkZWJ1ZyBtb2RlLCBkb24ndCB1c2UgdGhlIGZ1bGwgc21hbGwgYnVmZmVyIGJlY2F1c2UgaXQgaXMgbGVzcworICAgICAgIGVmZmljaWVudCB0aGFuIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyB0byBkZXRlY3QgYnVmZmVyIHVuZGVyZmxvdworICAgICAgIGFuZCBidWZmZXIgb3ZlcmZsb3cuIFVzZSAxMCBieXRlcyBvZiB0aGUgc21hbGwgYnVmZmVyIHRvIHRlc3QgYWxzbworICAgICAgIGNvZGUgdXNpbmcgdGhlIHNtYWxsZXIgYnVmZmVyIGluIGRlYnVnIG1vZGUuCisKKyAgICAgICBEb24ndCBtb2RpZnkgdGhlIF9QeUJ5dGVzV3JpdGVyIHN0cnVjdHVyZSAodXNlIGEgc2hvcnRlciBzbWFsbCBidWZmZXIpCisgICAgICAgaW4gZGVidWcgbW9kZSB0byBhbHNvIGJlIGFibGUgdG8gZGV0ZWN0IHN0YWNrIG92ZXJmbG93IHdoZW4gcnVubmluZworICAgICAgIHRlc3RzIGluIGRlYnVnIG1vZGUuIFRoZSBfUHlCeXRlc1dyaXRlciBpcyBsYXJnZSAobW9yZSB0aGFuIDUxMiBieXRlcyksCisgICAgICAgaWYgUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCkgaXMgbm90IHVzZWQgaW4gZGVlcCBDIGNhbGxiYWNrLCB3ZSBtYXkgaGl0IGEKKyAgICAgICBzdGFjayBvdmVyZmxvdy4gKi8KKyAgICB3cml0ZXItPmFsbG9jYXRlZCA9IFB5X01JTih3cml0ZXItPmFsbG9jYXRlZCwgMTApOworICAgIC8qIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3koKSByZXF1aXJlcyB0aGUgbGFzdCBieXRlIHRvIGJlIDAsCisgICAgICAgdG8gZGV0ZWN0IGJ1ZmZlciBvdmVyZmxvdyAqLworICAgIHdyaXRlci0+c21hbGxfYnVmZmVyW3dyaXRlci0+YWxsb2NhdGVkXSA9IDA7CisjZWxzZQorICAgIHdyaXRlci0+YWxsb2NhdGVkID0gc2l6ZW9mKHdyaXRlci0+c21hbGxfYnVmZmVyKTsKKyNlbmRpZgorICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgd3JpdGVyLT5zbWFsbF9idWZmZXIsIHNpemUpOworfQorCitQeU9iamVjdCAqCitfUHlCeXRlc1dyaXRlcl9GaW5pc2goX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgdm9pZCAqc3RyKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXIsIHN0cik7CisKKyAgICBzaXplID0gX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZSh3cml0ZXIsIHN0cik7CisgICAgaWYgKHNpemUgPT0gMCAmJiAhd3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgLyogR2V0IHRoZSBlbXB0eSBieXRlIHN0cmluZyBzaW5nbGV0b24gKi8KKyAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICB9CisgICAgZWxzZSBpZiAod3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyKSB7CisgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKHdyaXRlci0+c21hbGxfYnVmZmVyLCBzaXplKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUod3JpdGVyLT5zbWFsbF9idWZmZXIsIHNpemUpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSB3cml0ZXItPmJ1ZmZlcjsKKyAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBOVUxMOworCisgICAgICAgIGlmIChzaXplICE9IHdyaXRlci0+YWxsb2NhdGVkKSB7CisgICAgICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZShyZXN1bHQsIHNpemUpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHNpemUpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChyZXN1bHQgPT0gTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkKgorX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCB2b2lkICpwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ5dGVzLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgY2hhciAqc3RyID0gKGNoYXIgKilwdHI7CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbWVtY3B5KHN0ciwgYnl0ZXMsIHNpemUpOworICAgIHN0ciArPSBzaXplOworCisgICAgcmV0dXJuIHN0cjsKK30KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xhc3NvYmplY3QuYyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwppbmRleCA1ZThhYzU5Li5iMGVkMDIzIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCkBAIC0zMDIsMzQgKzMwMiwxOSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbWV0aG9kX2NhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmcsIFB5T2JqZWN0ICprdykKK21ldGhvZF9jYWxsKFB5T2JqZWN0ICptZXRob2QsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpzZWxmID0gUHlNZXRob2RfR0VUX1NFTEYoZnVuYyk7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmM7CiAKLSAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKGZ1bmMpOworICAgIHNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihtZXRob2QpOwogICAgIGlmIChzZWxmID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlfc3NpemVfdCBhcmdjb3VudCA9IFB5VHVwbGVfU2l6ZShhcmcpOwotICAgICAgICBQeU9iamVjdCAqbmV3YXJnID0gUHlUdXBsZV9OZXcoYXJnY291bnQgKyAxKTsKLSAgICAgICAgaW50IGk7Ci0gICAgICAgIGlmIChuZXdhcmcgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJnLCAwLCBzZWxmKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2NvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HRVRfSVRFTShhcmcsIGkpOwotICAgICAgICAgICAgUHlfWElOQ1JFRih2KTsKLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJnLCBpKzEsIHYpOwotICAgICAgICB9Ci0gICAgICAgIGFyZyA9IG5ld2FyZzsKLSAgICB9Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbCgoUHlPYmplY3QgKilmdW5jLCBhcmcsIGt3KTsKLSAgICBQeV9ERUNSRUYoYXJnKTsKLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgZnVuYyA9IFB5TWV0aG9kX0dFVF9GVU5DVElPTihtZXRob2QpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsX1ByZXBlbmQoZnVuYywgc2VsZiwgYXJncywga3dhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oCmluZGV4IGU4N2EyMjEuLmM3NWFjYjcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaApAQCAtMzksNDUgKzM5LDM4IEBACiB9CiAKIFB5RG9jX1NUUlZBUihieXRlYXJyYXlfdHJhbnNsYXRlX19kb2NfXywKLSJ0cmFuc2xhdGUodGFibGUsIFtkZWxldGVjaGFyc10pXG4iCisidHJhbnNsYXRlKCRzZWxmLCB0YWJsZSwgLywgZGVsZXRlPWJcJ1wnKVxuIgorIi0tXG4iCisiXG4iCiAiUmV0dXJuIGEgY29weSB3aXRoIGVhY2ggY2hhcmFjdGVyIG1hcHBlZCBieSB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuXG4iCiAiXG4iCiAiICB0YWJsZVxuIgogIiAgICBUcmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LlxuIgogIlxuIgotIkFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQuXG4iCisiQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGUgYXJlIHJlbW92ZWQuXG4iCiAiVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuIik7CiAKICNkZWZpbmUgQllURUFSUkFZX1RSQU5TTEFURV9NRVRIT0RERUYgICAgXAotICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV90cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX199LAorICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV90cmFuc2xhdGUsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV90cmFuc2xhdGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBncm91cF9yaWdodF8xLCBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOworICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfdHJhbnNsYXRlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV90cmFuc2xhdGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgImRlbGV0ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98Tzp0cmFuc2xhdGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0YWJsZTsKLSAgICBpbnQgZ3JvdXBfcmlnaHRfMSA9IDA7CiAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzID0gTlVMTDsKIAotICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dHJhbnNsYXRlIiwgJnRhYmxlKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzp0cmFuc2xhdGUiLCAmdGFibGUsICZkZWxldGVjaGFycykpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJieXRlYXJyYXkudHJhbnNsYXRlIHJlcXVpcmVzIDEgdG8gMiBhcmd1bWVudHMiKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnRhYmxlLCAmZGVsZXRlY2hhcnMpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9Ci0gICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKHNlbGYsIHRhYmxlLCBncm91cF9yaWdodF8xLCBkZWxldGVjaGFycyk7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKHNlbGYsIHRhYmxlLCBkZWxldGVjaGFycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKQEAgLTEwOCwxNyArMTAxLDIwIEBACiAgICAgUHlfYnVmZmVyIHRvID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOm1ha2V0cmFucyIsCi0gICAgICAgICZmcm0sICZ0bykpCisgICAgICAgICZmcm0sICZ0bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfbWFrZXRyYW5zX2ltcGwoJmZybSwgJnRvKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcm0gKi8KLSAgICBpZiAoZnJtLm9iaikKKyAgICBpZiAoZnJtLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZybSk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIHRvICovCi0gICAgaWYgKHRvLm9iaikKKyAgICBpZiAodG8ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdG8pOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNTIsMTcgKzE0OCwyMCBAQAogICAgIFB5X3NzaXplX3QgY291bnQgPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KnxuOnJlcGxhY2UiLAotICAgICAgICAmb2xkLCAmbmV3LCAmY291bnQpKQorICAgICAgICAmb2xkLCAmbmV3LCAmY291bnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlcGxhY2VfaW1wbChzZWxmLCAmb2xkLCAmbmV3LCBjb3VudCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3Igb2xkICovCi0gICAgaWYgKG9sZC5vYmopCisgICAgaWYgKG9sZC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvbGQpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciBuZXcgKi8KLSAgICBpZiAobmV3Lm9iaikKKyAgICBpZiAobmV3Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm5ldyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE4MiwyMyArMTgxLDI1IEBACiAiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuIik7CiAKICNkZWZpbmUgQllURUFSUkFZX1NQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfc3BsaXRfX2RvY19ffSwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X3NwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc3BsaXRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9zcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbjpzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3NwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CiAKIGV4aXQ6CkBAIC0yNTQsMjMgKzI1NSwyNSBAQAogIlNwbGl0dGluZyBpcyBkb25lIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJ5dGVhcnJheSBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuIik7CiAKICNkZWZpbmUgQllURUFSUkFZX1JTUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfcnNwbGl0X19kb2NfX30sCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X3JzcGxpdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JzcGxpdF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLAogICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JzcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKIAogZXhpdDoKQEAgLTMyMCw4ICszMjMsOSBAQAogICAgIGludCBpdGVtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTyY6aW5zZXJ0IiwKLSAgICAgICAgJmluZGV4LCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpCisgICAgICAgICZpbmRleCwgX2dldGJ5dGV2YWx1ZSwgJml0ZW0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2luc2VydF9pbXBsKHNlbGYsIGluZGV4LCBpdGVtKTsKIAogZXhpdDoKQEAgLTM0OSw4ICszNTMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBpdGVtOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphcHBlbmQiLCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphcHBlbmQiLCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfYXBwZW5kX2ltcGwoc2VsZiwgaXRlbSk7CiAKIGV4aXQ6CkBAIC0zOTQsOCArMzk5LDkgQEAKICAgICBQeV9zc2l6ZV90IGluZGV4ID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsCi0gICAgICAgICZpbmRleCkpCisgICAgICAgICZpbmRleCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcG9wX2ltcGwoc2VsZiwgaW5kZXgpOwogCiBleGl0OgpAQCAtNDIzLDggKzQyOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpyZW1vdmUiLCBfZ2V0Ynl0ZXZhbHVlLCAmdmFsdWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6cmVtb3ZlIiwgX2dldGJ5dGV2YWx1ZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yZW1vdmVfaW1wbChzZWxmLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NTMsOCArNDYwLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTQ4Myw4ICs0OTEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibHN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9sc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC01MTMsOCArNTIyLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcnN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtNTM3LDIzICs1NDcsMjUgQEAKICIgICAgY2FuIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9kZWNvZGUsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV9kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9kZWNvZGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9kZWNvZGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X2RlY29kZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxzczpkZWNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHNzOmRlY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9kZWNvZGVfaW1wbChzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTU4MywyMSArNTk1LDIzIEBACiAidHJ1ZS4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfU1BMSVRMSU5FU19NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfX30sCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdGxpbmVzLCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfc3BsaXRsaW5lc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3NwbGl0bGluZXNfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IGtlZXBlbmRzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9zcGxpdGxpbmVzKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9zcGxpdGxpbmVzKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2VlcGVuZHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBrZWVwZW5kcyA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgX2tleXdvcmRzLAotICAgICAgICAma2VlcGVuZHMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAma2VlcGVuZHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3NwbGl0bGluZXNfaW1wbChzZWxmLCBrZWVwZW5kcyk7CiAKIGV4aXQ6CkBAIC02MTcsMTcgKzYzMSwxOCBAQAogICAgIHsiZnJvbWhleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZnJvbWhleCwgTUVUSF9PfE1FVEhfQ0xBU1MsIGJ5dGVhcnJheV9mcm9taGV4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5T2JqZWN0KmNscywgUHlPYmplY3QgKnN0cmluZyk7CitieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZnJvbWhleChQeVR5cGVPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZykKK2J5dGVhcnJheV9mcm9taGV4KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfZnJvbWhleF9pbXBsKChQeU9iamVjdCopY2xzLCBzdHJpbmcpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfZnJvbWhleF9pbXBsKHR5cGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKQEAgLTY3MCw4ICs2ODUsOSBAQAogICAgIGludCBwcm90byA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLAotICAgICAgICAmcHJvdG8pKQorICAgICAgICAmcHJvdG8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlZHVjZV9leF9pbXBsKHNlbGYsIHByb3RvKTsKIAogZXhpdDoKQEAgLTY5NSw0ICs3MTEsNCBAQAogewogICAgIHJldHVybiBieXRlYXJyYXlfc2l6ZW9mX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTY2YzE1ZmYyMmM1ZTI0MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjI1MzQyYTY4MDM5MWI5YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKaW5kZXggNWExYTVlOS4uYTExZWJkMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCisrKyBiL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaApAQCAtMTcsMjIgKzE3LDI0IEBACiAiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuIik7CiAKICNkZWZpbmUgQllURVNfU1BMSVRfTUVUSE9EREVGICAgIFwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfc3BsaXRfX2RvY19ffSwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlc19zcGxpdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOworYnl0ZXNfc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlc19zcGxpdChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246c3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtNjQsMTQgKzY2LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIHNlcCA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cGFydGl0aW9uIiwgJnNlcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpwYXJ0aXRpb24iLCAmc2VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3BhcnRpdGlvbl9pbXBsKHNlbGYsICZzZXApOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHNlcCAqLwotICAgIGlmIChzZXAub2JqKQorICAgIGlmIChzZXAub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VwKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTAxLDE0ICsxMDUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpycGFydGl0aW9uIiwgJnNlcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpycGFydGl0aW9uIiwgJnNlcCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19ycGFydGl0aW9uX2ltcGwoc2VsZiwgJnNlcCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3Igc2VwICovCi0gICAgaWYgKHNlcC5vYmopCisgICAgaWYgKHNlcC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMzAsMjIgKzEzNiwyNCBAQAogIlNwbGl0dGluZyBpcyBkb25lIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJ5dGVzIGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4iKTsKIAogI2RlZmluZSBCWVRFU19SU1BMSVRfTUVUSE9EREVGICAgIFwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19yc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlc19yc3BsaXRfX2RvY19ffSwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19yc3BsaXQsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX3JzcGxpdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KTsKK2J5dGVzX3JzcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnNwbGl0KFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbjpyc3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpyc3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19yc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKIAogZXhpdDoKQEAgLTE4OSw4ICsxOTcsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC0yMTksOCArMjI4LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImxzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19sc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC0yNDksOCArMjU5LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19yc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC0yNTgsNDUgKzI2OSwzOCBAQAogfQogCiBQeURvY19TVFJWQVIoYnl0ZXNfdHJhbnNsYXRlX19kb2NfXywKLSJ0cmFuc2xhdGUodGFibGUsIFtkZWxldGVjaGFyc10pXG4iCisidHJhbnNsYXRlKCRzZWxmLCB0YWJsZSwgLywgZGVsZXRlPWJcJ1wnKVxuIgorIi0tXG4iCisiXG4iCiAiUmV0dXJuIGEgY29weSB3aXRoIGVhY2ggY2hhcmFjdGVyIG1hcHBlZCBieSB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuXG4iCiAiXG4iCiAiICB0YWJsZVxuIgogIiAgICBUcmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LlxuIgogIlxuIgotIkFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQuXG4iCisiQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGUgYXJlIHJlbW92ZWQuXG4iCiAiVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuIik7CiAKICNkZWZpbmUgQllURVNfVFJBTlNMQVRFX01FVEhPRERFRiAgICBcCi0gICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfdHJhbnNsYXRlLCBNRVRIX1ZBUkFSR1MsIGJ5dGVzX3RyYW5zbGF0ZV9fZG9jX199LAorICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3RyYW5zbGF0ZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZXNfdHJhbnNsYXRlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsIGludCBncm91cF9yaWdodF8xLAorYnl0ZXNfdHJhbnNsYXRlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3RyYW5zbGF0ZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3RyYW5zbGF0ZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJkZWxldGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE86dHJhbnNsYXRlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdGFibGU7Ci0gICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOwogICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycyA9IE5VTEw7CiAKLSAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnRyYW5zbGF0ZSIsICZ0YWJsZSkpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086dHJhbnNsYXRlIiwgJnRhYmxlLCAmZGVsZXRlY2hhcnMpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZXMudHJhbnNsYXRlIHJlcXVpcmVzIDEgdG8gMiBhcmd1bWVudHMiKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnRhYmxlLCAmZGVsZXRlY2hhcnMpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9Ci0gICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc190cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZGVsZXRlY2hhcnMpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CkBAIC0zMjcsMTcgKzMzMSwyMCBAQAogICAgIFB5X2J1ZmZlciB0byA9IHtOVUxMLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjptYWtldHJhbnMiLAotICAgICAgICAmZnJtLCAmdG8pKQorICAgICAgICAmZnJtLCAmdG8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfbWFrZXRyYW5zX2ltcGwoJmZybSwgJnRvKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcm0gKi8KLSAgICBpZiAoZnJtLm9iaikKKyAgICBpZiAoZnJtLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZybSk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIHRvICovCi0gICAgaWYgKHRvLm9iaikKKyAgICBpZiAodG8ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdG8pOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNTksMTEgKzM2NiwxMSBAQAogICAgIHsicmVwbGFjZSIsIChQeUNGdW5jdGlvbilieXRlc19yZXBsYWNlLCBNRVRIX1ZBUkFSR1MsIGJ5dGVzX3JlcGxhY2VfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKK2J5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCiAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjb3VudCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yZXBsYWNlKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19yZXBsYWNlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07CkBAIC0zNzEsMTcgKzM3OCwyMCBAQAogICAgIFB5X3NzaXplX3QgY291bnQgPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KnxuOnJlcGxhY2UiLAotICAgICAgICAmb2xkLCAmbmV3LCAmY291bnQpKQorICAgICAgICAmb2xkLCAmbmV3LCAmY291bnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcmVwbGFjZV9pbXBsKHNlbGYsICZvbGQsICZuZXcsIGNvdW50KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBvbGQgKi8KLSAgICBpZiAob2xkLm9iaikKKyAgICBpZiAob2xkLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIG5ldyAqLwotICAgIGlmIChuZXcub2JqKQorICAgIGlmIChuZXcub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDAyLDIzICs0MTIsMjUgQEAKICIgICAgY2FuIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIpOwogCiAjZGVmaW5lIEJZVEVTX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZXNfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfZGVjb2RlKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlc19kZWNvZGUoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxzczpkZWNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHNzOmRlY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtNDM1LDIxICs0NDcsMjMgQEAKICJ0cnVlLiIpOwogCiAjZGVmaW5lIEJZVEVTX1NQTElUTElORVNfTUVUSE9EREVGICAgIFwKLSAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3NwbGl0bGluZXNfX2RvY19ffSwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXRsaW5lcywgTUVUSF9GQVNUQ0FMTCwgYnl0ZXNfc3BsaXRsaW5lc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgaW50IGtlZXBlbmRzKTsKK2J5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXRsaW5lcyhQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZXNfc3BsaXRsaW5lcyhQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2VlcGVuZHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBrZWVwZW5kcyA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgX2tleXdvcmRzLAotICAgICAgICAma2VlcGVuZHMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAma2VlcGVuZHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfc3BsaXRsaW5lc19pbXBsKHNlbGYsIGtlZXBlbmRzKTsKIAogZXhpdDoKQEAgLTQ3NywxMSArNDkxLDEyIEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2Zyb21oZXhfaW1wbCh0eXBlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQwY2U4ZjI1ZDdlMThmNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmRjM2M5M2NmZDJkYzQ0MCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oCmluZGV4IDUyODhiOWEuLmQwY2RmYzMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oCisrKyBiL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oCkBAIC0yMyw4ICsyMyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJmcm9ta2V5cyIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZpdGVyYWJsZSwgJnZhbHVlKSkKKyAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZGljdF9mcm9ta2V5c19pbXBsKHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOSw0ICs0MCw0IEBACiAKICNkZWZpbmUgRElDVF9fX0NPTlRBSU5TX19fTUVUSE9EREVGICAgIFwKICAgICB7Il9fY29udGFpbnNfXyIsIChQeUNGdW5jdGlvbilkaWN0X19fY29udGFpbnNfXywgTUVUSF9PfE1FVEhfQ09FWElTVCwgZGljdF9fX2NvbnRhaW5zX19fX2RvY19ffSwKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZTc0ZDY3NjMzMmZkYmE2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MjYzMjYxMDllM2Q5ODM5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL3VuaWNvZGVvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmgKaW5kZXggZDQyYTcwMC4uODkxZTkwYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmgKQEAgLTMxLDExICszMSwxMiBAQAogICAgIFB5T2JqZWN0ICp6ID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xVVTptYWtldHJhbnMiLAotICAgICAgICAmeCwgJnksICZ6KSkKKyAgICAgICAgJngsICZ5LCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlX21ha2V0cmFuc19pbXBsKHgsIHksIHopOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTRhZmZkZmY1YjJkYWZmNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGE4NmRkMTA4ZDkyZDEwNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NvZGVvYmplY3QuYyBiL09iamVjdHMvY29kZW9iamVjdC5jCmluZGV4IDlkZjg3YjAuLmI2ZTViZDMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY29kZW9iamVjdC5jCisrKyBiL09iamVjdHMvY29kZW9iamVjdC5jCkBAIC0xLDMgKzEsNSBAQAorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKwogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImNvZGUuaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKQEAgLTUsNiArNywxMiBAQAogI2RlZmluZSBOQU1FX0NIQVJTIFwKICAgICAiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgogCisvKiBIb2xkZXIgZm9yIGNvX2V4dHJhIGluZm9ybWF0aW9uICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlfc3NpemVfdCBjZV9zaXplOworICAgIHZvaWQgKipjZV9leHRyYXM7Cit9IF9QeUNvZGVPYmplY3RFeHRyYTsKKwogLyogYWxsX25hbWVfY2hhcnMocyk6IHRydWUgaWZmIGFsbCBjaGFycyBpbiBzIGFyZSB2YWxpZCBOQU1FX0NIQVJTICovCiAKIHN0YXRpYyBpbnQKQEAgLTEzNCw3ICsxNDIsNyBAQAogICAgICAgICBQeV9zc2l6ZV90IHRvdGFsX2FyZ3MgPSBhcmdjb3VudCArIGt3b25seWFyZ2NvdW50ICsKICAgICAgICAgICAgICgoZmxhZ3MgJiBDT19WQVJBUkdTKSAhPSAwKSArICgoZmxhZ3MgJiBDT19WQVJLRVlXT1JEUykgIT0gMCk7CiAgICAgICAgIFB5X3NzaXplX3QgYWxsb2Nfc2l6ZSA9IHNpemVvZih1bnNpZ25lZCBjaGFyKSAqIG5fY2VsbHZhcnM7Ci0gICAgICAgIGludCB1c2VkX2NlbGwyYXJnID0gMDsKKyAgICAgICAgYm9vbCB1c2VkX2NlbGwyYXJnID0gZmFsc2U7CiAgICAgICAgIGNlbGwyYXJnID0gUHlNZW1fTUFMTE9DKGFsbG9jX3NpemUpOwogICAgICAgICBpZiAoY2VsbDJhcmcgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQ3LDcgKzE1NSw3IEBACiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZyA9IFB5VHVwbGVfR0VUX0lURU0odmFybmFtZXMsIGopOwogICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NvbXBhcmUoY2VsbCwgYXJnKSkgewogICAgICAgICAgICAgICAgICAgICBjZWxsMmFyZ1tpXSA9IGo7Ci0gICAgICAgICAgICAgICAgICAgIHVzZWRfY2VsbDJhcmcgPSAxOworICAgICAgICAgICAgICAgICAgICB1c2VkX2NlbGwyYXJnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTkwLDYgKzE5OCw3IEBACiAgICAgY28tPmNvX2xub3RhYiA9IGxub3RhYjsKICAgICBjby0+Y29fem9tYmllZnJhbWUgPSBOVUxMOwogICAgIGNvLT5jb193ZWFrcmVmbGlzdCA9IE5VTEw7CisgICAgY28tPmNvX2V4dHJhID0gTlVMTDsKICAgICByZXR1cm4gY287CiB9CiAKQEAgLTM5OSw2ICs0MDgsMjEgQEAKIHN0YXRpYyB2b2lkCiBjb2RlX2RlYWxsb2MoUHlDb2RlT2JqZWN0ICpjbykKIHsKKyAgICBpZiAoY28tPmNvX2V4dHJhICE9IE5VTEwpIHsKKyAgICAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyAgICAgICAgX1B5Q29kZU9iamVjdEV4dHJhICpjb19leHRyYSA9IGNvLT5jb19leHRyYTsKKworICAgICAgICBmb3IgKFB5X3NzaXplX3QgaSA9IDA7IGkgPCBjb19leHRyYS0+Y2Vfc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBmcmVlZnVuYyBmcmVlX2V4dHJhID0gdHN0YXRlLT5jb19leHRyYV9mcmVlZnVuY3NbaV07CisKKyAgICAgICAgICAgIGlmIChmcmVlX2V4dHJhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBmcmVlX2V4dHJhKGNvX2V4dHJhLT5jZV9leHRyYXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUHlNZW1fRlJFRShjby0+Y29fZXh0cmEpOworICAgIH0KKwogICAgIFB5X1hERUNSRUYoY28tPmNvX2NvZGUpOwogICAgIFB5X1hERUNSRUYoY28tPmNvX2NvbnN0cyk7CiAgICAgUHlfWERFQ1JFRihjby0+Y29fbmFtZXMpOwpAQCAtNzMyLDcgKzc1Niw4IEBACiAgICAgICAgIGFkZHIgKz0gKnArKzsKICAgICAgICAgaWYgKGFkZHIgPiBhZGRycSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBsaW5lICs9ICpwKys7CisgICAgICAgIGxpbmUgKz0gKHNpZ25lZCBjaGFyKSpwOworICAgICAgICBwKys7CiAgICAgfQogICAgIHJldHVybiBsaW5lOwogfQpAQCAtNzY3LDE3ICs3OTIsMTkgQEAKICAgICAgICAgaWYgKGFkZHIgKyAqcCA+IGxhc3RpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGFkZHIgKz0gKnArKzsKLSAgICAgICAgaWYgKCpwKQorICAgICAgICBpZiAoKHNpZ25lZCBjaGFyKSpwKQogICAgICAgICAgICAgYm91bmRzLT5hcF9sb3dlciA9IGFkZHI7Ci0gICAgICAgIGxpbmUgKz0gKnArKzsKKyAgICAgICAgbGluZSArPSAoc2lnbmVkIGNoYXIpKnA7CisgICAgICAgIHArKzsKICAgICAgICAgLS1zaXplOwogICAgIH0KIAogICAgIGlmIChzaXplID4gMCkgewogICAgICAgICB3aGlsZSAoLS1zaXplID49IDApIHsKICAgICAgICAgICAgIGFkZHIgKz0gKnArKzsKLSAgICAgICAgICAgIGlmICgqcCsrKQorICAgICAgICAgICAgaWYgKChzaWduZWQgY2hhcikqcCkKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHArKzsKICAgICAgICAgfQogICAgICAgICBib3VuZHMtPmFwX3VwcGVyID0gYWRkcjsKICAgICB9CkBAIC03ODcsMyArODE0LDgwIEBACiAKICAgICByZXR1cm4gbGluZTsKIH0KKworCitpbnQKK19QeUNvZGVfR2V0RXh0cmEoUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgaW5kZXgsIHZvaWQgKipleHRyYSkKK3sKKyAgICBhc3NlcnQoKmV4dHJhID09IE5VTEwpOworCisgICAgaWYgKCFQeUNvZGVfQ2hlY2soY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeUNvZGVPYmplY3QgKm8gPSAoUHlDb2RlT2JqZWN0KikgY29kZTsKKyAgICBfUHlDb2RlT2JqZWN0RXh0cmEgKmNvX2V4dHJhID0gKF9QeUNvZGVPYmplY3RFeHRyYSopIG8tPmNvX2V4dHJhOworCisKKyAgICBpZiAoY29fZXh0cmEgPT0gTlVMTCB8fCBjb19leHRyYS0+Y2Vfc2l6ZSA8PSBpbmRleCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAqZXh0cmEgPSBjb19leHRyYS0+Y2VfZXh0cmFzW2luZGV4XTsKKyAgICByZXR1cm4gMDsKK30KKworCitpbnQKK19QeUNvZGVfU2V0RXh0cmEoUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgaW5kZXgsIHZvaWQgKmV4dHJhKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisKKyAgICBpZiAoIVB5Q29kZV9DaGVjayhjb2RlKSB8fCBpbmRleCA8IDAgfHwKKyAgICAgICAgICAgIGluZGV4ID49IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5Q29kZU9iamVjdCAqbyA9IChQeUNvZGVPYmplY3QqKSBjb2RlOworICAgIF9QeUNvZGVPYmplY3RFeHRyYSAqY29fZXh0cmEgPSAoX1B5Q29kZU9iamVjdEV4dHJhICopIG8tPmNvX2V4dHJhOworCisgICAgaWYgKGNvX2V4dHJhID09IE5VTEwpIHsKKyAgICAgICAgby0+Y29fZXh0cmEgPSAoX1B5Q29kZU9iamVjdEV4dHJhKikgUHlNZW1fTWFsbG9jKAorICAgICAgICAgICAgc2l6ZW9mKF9QeUNvZGVPYmplY3RFeHRyYSkpOworICAgICAgICBpZiAoby0+Y29fZXh0cmEgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGNvX2V4dHJhID0gKF9QeUNvZGVPYmplY3RFeHRyYSAqKSBvLT5jb19leHRyYTsKKworICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzID0gUHlNZW1fTWFsbG9jKAorICAgICAgICAgICAgdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50ICogc2l6ZW9mKHZvaWQqKSk7CisgICAgICAgIGlmIChjb19leHRyYS0+Y2VfZXh0cmFzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGNvX2V4dHJhLT5jZV9zaXplID0gdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50OworCisgICAgICAgIGZvciAoUHlfc3NpemVfdCBpID0gMDsgaSA8IGNvX2V4dHJhLT5jZV9zaXplOyBpKyspIHsKKyAgICAgICAgICAgIGNvX2V4dHJhLT5jZV9leHRyYXNbaV0gPSBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGNvX2V4dHJhLT5jZV9zaXplIDw9IGluZGV4KSB7CisgICAgICAgIGNvX2V4dHJhLT5jZV9leHRyYXMgPSBQeU1lbV9SZWFsbG9jKAorICAgICAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhcywgdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50ICogc2l6ZW9mKHZvaWQqKSk7CisKKyAgICAgICAgaWYgKGNvX2V4dHJhLT5jZV9leHRyYXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgY29fZXh0cmEtPmNlX3NpemUgPSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQ7CisKKyAgICAgICAgZm9yIChQeV9zc2l6ZV90IGkgPSBjb19leHRyYS0+Y2Vfc2l6ZTsgaSA8IGNvX2V4dHJhLT5jZV9zaXplOyBpKyspIHsKKyAgICAgICAgICAgIGNvX2V4dHJhLT5jZV9leHRyYXNbaV0gPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgY29fZXh0cmEtPmNlX2V4dHJhc1tpbmRleF0gPSBleHRyYTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL09iamVjdHMvY29tcGxleG9iamVjdC5jIGIvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKaW5kZXggZDgyYzVlYi4uMzFlMTI3OCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKQEAgLTc1OSwyOSArNzU5LDEyIEBACiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgotY29tcGxleF9zdWJ0eXBlX2Zyb21fc3RyaW5nKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYpCitjb21wbGV4X2Zyb21fc3RyaW5nX2lubmVyKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuLCB2b2lkICp0eXBlKQogewotICAgIGNvbnN0IGNoYXIgKnMsICpzdGFydDsKLSAgICBjaGFyICplbmQ7CiAgICAgZG91YmxlIHg9MC4wLCB5PTAuMCwgejsKICAgICBpbnQgZ290X2JyYWNrZXQ9MDsKLSAgICBQeU9iamVjdCAqc19idWZmZXIgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgbGVuOwotCi0gICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBzX2J1ZmZlciA9IF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSh2KTsKLSAgICAgICAgaWYgKHNfYnVmZmVyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHNfYnVmZmVyLCAmbGVuKTsKLSAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImNvbXBsZXgoKSBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgbnVtYmVyLCBub3QgJyUuMjAwcyciLAotICAgICAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBjb25zdCBjaGFyICpzdGFydDsKKyAgICBjaGFyICplbmQ7CiAKICAgICAvKiBwb3NpdGlvbiBvbiBmaXJzdCBub25ibGFuayAqLwogICAgIHN0YXJ0ID0gczsKQEAgLTgyMiw3ICs4MDUsNyBAQAogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19WYWx1ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGVuZCAhPSBzKSB7CiAgICAgICAgIC8qIGFsbCA0IGZvcm1zIHN0YXJ0aW5nIHdpdGggPGZsb2F0PiBsYW5kIGhlcmUgKi8KQEAgLTgzNSw3ICs4MTgsNyBAQAogICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1ZhbHVlRXJyb3IpKQogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZW5kICE9IHMpCiAgICAgICAgICAgICAgICAgLyogPGZsb2F0PjxzaWduZWQtZmxvYXQ+aiAqLwpAQCAtODkwLDE4ICs4NzMsNDYgQEAKICAgICBpZiAocy1zdGFydCAhPSBsZW4pCiAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7CiAKLSAgICBQeV9YREVDUkVGKHNfYnVmZmVyKTsKLSAgICByZXR1cm4gY29tcGxleF9zdWJ0eXBlX2Zyb21fZG91Ymxlcyh0eXBlLCB4LCB5KTsKKyAgICByZXR1cm4gY29tcGxleF9zdWJ0eXBlX2Zyb21fZG91YmxlcygoUHlUeXBlT2JqZWN0ICopdHlwZSwgeCwgeSk7CiAKICAgcGFyc2VfZXJyb3I6CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJjb21wbGV4KCkgYXJnIGlzIGEgbWFsZm9ybWVkIHN0cmluZyIpOwotICBlcnJvcjoKLSAgICBQeV9YREVDUkVGKHNfYnVmZmVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2NvbXBsZXhfc3VidHlwZV9mcm9tX3N0cmluZyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2KQoreworICAgIGNvbnN0IGNoYXIgKnM7CisgICAgUHlPYmplY3QgKnNfYnVmZmVyID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7CisgICAgICAgIHNfYnVmZmVyID0gX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHYpOworICAgICAgICBpZiAoc19idWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHNfYnVmZmVyLCAmbGVuKTsKKyAgICAgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNvbXBsZXgoKSBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgbnVtYmVyLCBub3QgJyUuMjAwcyciLAorICAgICAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeV9zdHJpbmdfdG9fbnVtYmVyX3dpdGhfdW5kZXJzY29yZXMocywgbGVuLCAiY29tcGxleCIsIHYsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV4X2Zyb21fc3RyaW5nX2lubmVyKTsKKyAgZXhpdDoKKyAgICBQeV9ERUNSRUYoc19idWZmZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBjb21wbGV4X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqciwgKmksICp0bXA7CmRpZmYgLS1naXQgYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMgYi9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKaW5kZXggZGE2OGUzYi4uMDc2ZTc0MSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kZXNjcm9iamVjdC5jCisrKyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwpAQCAtMjIsNyArMjIsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGVzY3JfcmVwcihQeURlc2NyT2JqZWN0ICpkZXNjciwgY2hhciAqZm9ybWF0KQorZGVzY3JfcmVwcihQeURlc2NyT2JqZWN0ICpkZXNjciwgY29uc3QgY2hhciAqZm9ybWF0KQogewogICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKICAgICBpZiAoZGVzY3ItPmRfbmFtZSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhkZXNjci0+ZF9uYW1lKSkKQEAgLTIxMyw3ICsyMTMsNyBAQAogbWV0aG9kZGVzY3JfY2FsbChQeU1ldGhvZERlc2NyT2JqZWN0ICpkZXNjciwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5X3NzaXplX3QgYXJnYzsKLSAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0LCAqKnN0YWNrOwogCiAgICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFjY2VwdGFibGUgYXMgJ3NlbGYnICovCiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwpAQCAtMjQyLDEzICsyNDIsOCBAQAogICAgIGZ1bmMgPSBQeUNGdW5jdGlvbl9OZXdFeChkZXNjci0+ZF9tZXRob2QsIHNlbGYsIE5VTEwpOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIGFyZ2MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoZnVuYywgYXJncywga3dkcyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgYXJnYyAtIDEsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjU4LDcgKzI1Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlfc3NpemVfdCBhcmdjOwotICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQsICoqc3RhY2s7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYWNjZXB0YWJsZSBhcyAnc2VsZicgKi8KICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CkBAIC0yOTUsMTQgKzI5MCw5IEBACiAgICAgZnVuYyA9IFB5Q0Z1bmN0aW9uX05ld0V4KGRlc2NyLT5kX21ldGhvZCwgc2VsZiwgTlVMTCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgYXJnYyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhmdW5jLCBhcmdzLCBrd2RzKTsKKyAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIGFyZ2MgLSAxLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTMxMCw3ICszMDAsNyBAQAogd3JhcHBlcmRlc2NyX2NhbGwoUHlXcmFwcGVyRGVzY3JPYmplY3QgKmRlc2NyLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlfc3NpemVfdCBhcmdjOwotICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQsICoqc3RhY2s7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYWNjZXB0YWJsZSBhcyAnc2VsZicgKi8KICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CkBAIC0zMzksMTMgKzMyOSw5IEBACiAgICAgZnVuYyA9IFB5V3JhcHBlcl9OZXcoKFB5T2JqZWN0ICopZGVzY3IsIHNlbGYpOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIGFyZ2MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoZnVuYywgYXJncywga3dkcyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOworCisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBhcmdjIC0gMSwga3dkcyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMDMzLDcgKzEwMTksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHdyYXBwZXJfcmljaGNvbXBhcmUoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ApCiB7Ci0gICAgUHlfaW50cHRyX3QgcmVzdWx0OworICAgIGludHB0cl90IHJlc3VsdDsKICAgICBQeU9iamVjdCAqdjsKICAgICBQeVdyYXBwZXJEZXNjck9iamVjdCAqYV9kZXNjciwgKmJfZGVzY3I7CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZGljdC1jb21tb24uaCBiL09iamVjdHMvZGljdC1jb21tb24uaAppbmRleCAyOTEyZWI5Li5jZTllZGFiIDEwMDY0NAotLS0gYS9PYmplY3RzL2RpY3QtY29tbW9uLmgKKysrIGIvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCkBAIC04LDE1ICs4LDY5IEBACiAgICAgUHlPYmplY3QgKm1lX3ZhbHVlOyAvKiBUaGlzIGZpZWxkIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgY29tYmluZWQgdGFibGVzICovCiB9IFB5RGljdEtleUVudHJ5OwogCi10eXBlZGVmIFB5RGljdEtleUVudHJ5ICooKmRpY3RfbG9va3VwX2Z1bmMpCi0oUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworLyogZGljdF9sb29rdXBfZnVuYygpIHJldHVybnMgaW5kZXggb2YgZW50cnkgd2hpY2ggY2FuIGJlIHVzZWQgbGlrZSBES19FTlRSSUVTKGRrKVtpbmRleF0uCisgKiAtMSB3aGVuIG5vIGVudHJ5IGZvdW5kLCAtMyB3aGVuIGNvbXBhcmUgcmFpc2VzIGVycm9yLgorICovCit0eXBlZGVmIFB5X3NzaXplX3QgKCpkaWN0X2xvb2t1cF9mdW5jKQorKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorIFB5X3NzaXplX3QgKmhhc2hwb3MpOwogCisjZGVmaW5lIERLSVhfRU1QVFkgKC0xKQorI2RlZmluZSBES0lYX0RVTU1ZICgtMikgIC8qIFVzZWQgaW50ZXJuYWxseSAqLworI2RlZmluZSBES0lYX0VSUk9SICgtMykKKworLyogU2VlIGRpY3RvYmplY3QuYyBmb3IgYWN0dWFsIGxheW91dCBvZiBEaWN0S2V5c09iamVjdCAqLwogc3RydWN0IF9kaWN0a2V5c29iamVjdCB7CiAgICAgUHlfc3NpemVfdCBka19yZWZjbnQ7CisKKyAgICAvKiBTaXplIG9mIHRoZSBoYXNoIHRhYmxlIChka19pbmRpY2VzKS4gSXQgbXVzdCBiZSBhIHBvd2VyIG9mIDIuICovCiAgICAgUHlfc3NpemVfdCBka19zaXplOworCisgICAgLyogRnVuY3Rpb24gdG8gbG9va3VwIGluIHRoZSBoYXNoIHRhYmxlIChka19pbmRpY2VzKToKKworICAgICAgIC0gbG9va2RpY3QoKTogZ2VuZXJhbC1wdXJwb3NlLCBhbmQgbWF5IHJldHVybiBES0lYX0VSUk9SIGlmIChhbmQKKyAgICAgICAgIG9ubHkgaWYpIGEgY29tcGFyaXNvbiByYWlzZXMgYW4gZXhjZXB0aW9uLgorCisgICAgICAgLSBsb29rZGljdF91bmljb2RlKCk6IHNwZWNpYWxpemVkIHRvIFVuaWNvZGUgc3RyaW5nIGtleXMsIGNvbXBhcmlzb24gb2YKKyAgICAgICAgIHdoaWNoIGNhbiBuZXZlciByYWlzZSBhbiBleGNlcHRpb247IHRoYXQgZnVuY3Rpb24gY2FuIG5ldmVyIHJldHVybgorICAgICAgICAgREtJWF9FUlJPUi4KKworICAgICAgIC0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KCk6IHNpbWlsYXIgdG8gbG9va2RpY3RfdW5pY29kZSgpIGJ1dCBmdXJ0aGVyCisgICAgICAgICBzcGVjaWFsaXplZCBmb3IgVW5pY29kZSBzdHJpbmcga2V5cyB0aGF0IGNhbm5vdCBiZSB0aGUgPGR1bW15PiB2YWx1ZS4KKworICAgICAgIC0gbG9va2RpY3Rfc3BsaXQoKTogVmVyc2lvbiBvZiBsb29rZGljdCgpIGZvciBzcGxpdCB0YWJsZXMuICovCiAgICAgZGljdF9sb29rdXBfZnVuYyBka19sb29rdXA7CisKKyAgICAvKiBOdW1iZXIgb2YgdXNhYmxlIGVudHJpZXMgaW4gZGtfZW50cmllcy4gKi8KICAgICBQeV9zc2l6ZV90IGRrX3VzYWJsZTsKLSAgICBQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzWzFdOworCisgICAgLyogTnVtYmVyIG9mIHVzZWQgZW50cmllcyBpbiBka19lbnRyaWVzLiAqLworICAgIFB5X3NzaXplX3QgZGtfbmVudHJpZXM7CisKKyAgICAvKiBBY3R1YWwgaGFzaCB0YWJsZSBvZiBka19zaXplIGVudHJpZXMuIEl0IGhvbGRzIGluZGljZXMgaW4gZGtfZW50cmllcywKKyAgICAgICBvciBES0lYX0VNUFRZKC0xKSBvciBES0lYX0RVTU1ZKC0yKS4KKworICAgICAgIEluZGljZXMgbXVzdCBiZTogMCA8PSBpbmRpY2UgPCBVU0FCTEVfRlJBQ1RJT04oZGtfc2l6ZSkuCisKKyAgICAgICBUaGUgc2l6ZSBpbiBieXRlcyBvZiBhbiBpbmRpY2UgZGVwZW5kcyBvbiBka19zaXplOgorCisgICAgICAgLSAxIGJ5dGUgaWYgZGtfc2l6ZSA8PSAweGZmIChjaGFyKikKKyAgICAgICAtIDIgYnl0ZXMgaWYgZGtfc2l6ZSA8PSAweGZmZmYgKGludDE2X3QqKQorICAgICAgIC0gNCBieXRlcyBpZiBka19zaXplIDw9IDB4ZmZmZmZmZmYgKGludDMyX3QqKQorICAgICAgIC0gOCBieXRlcyBvdGhlcndpc2UgKGludDY0X3QqKQorCisgICAgICAgRHluYW1pY2FsbHkgc2l6ZWQsIDggaXMgbWluaW11bS4gKi8KKyAgICB1bmlvbiB7CisgICAgICAgIGludDhfdCBhc18xWzhdOworICAgICAgICBpbnQxNl90IGFzXzJbNF07CisgICAgICAgIGludDMyX3QgYXNfNFsyXTsKKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorICAgICAgICBpbnQ2NF90IGFzXzhbMV07CisjZW5kaWYKKyAgICB9IGRrX2luZGljZXM7CisKKyAgICAvKiAiUHlEaWN0S2V5RW50cnkgZGtfZW50cmllc1tka191c2FibGVdOyIgYXJyYXkgZm9sbG93czoKKyAgICAgICBzZWUgdGhlIERLX0VOVFJJRVMoKSBtYWNybyAqLwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3RvYmplY3QuYyBiL09iamVjdHMvZGljdG9iamVjdC5jCmluZGV4IGU3OWFiMzYuLmRhMDYxYWEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdG9iamVjdC5jCisrKyBiL09iamVjdHMvZGljdG9iamVjdC5jCkBAIC0xLDQgKzEsMyBAQAotCiAvKiBEaWN0aW9uYXJ5IG9iamVjdCBpbXBsZW1lbnRhdGlvbiB1c2luZyBhIGhhc2ggdGFibGUgKi8KIAogLyogVGhlIGRpc3RyaWJ1dGlvbiBpbmNsdWRlcyBhIHNlcGFyYXRlIGZpbGUsIE9iamVjdHMvZGljdG5vdGVzLnR4dCwKQEAgLTcsNjggKzYsMTEyIEBACiAgICB0dW5pbmcgZGljdGlvbmFyaWVzLCBhbmQgc2V2ZXJhbCBpZGVhcyBmb3IgcG9zc2libGUgb3B0aW1pemF0aW9ucy4KICovCiAKKy8qIFB5RGljdEtleXNPYmplY3QKKworVGhpcyBpbXBsZW1lbnRzIHRoZSBkaWN0aW9uYXJ5J3MgaGFzaHRhYmxlLgorCitBcyBvZiBQeXRob24gMy42LCB0aGlzIGlzIGNvbXBhY3QgYW5kIG9yZGVyZWQuIEJhc2ljIGlkZWEgaXMgZGVzY3JpYmVkIGhlcmUuCitodHRwczovL21vcmVweXB5LmJsb2dzcG90LmNvbS8yMDE1LzAxL2Zhc3Rlci1tb3JlLW1lbW9yeS1lZmZpY2llbnQtYW5kLW1vcmUuaHRtbAorCitsYXlvdXQ6CisKKystLS0tLS0tLS0tLS0tLS0rCit8IGRrX3JlZmNudCAgICAgfAorfCBka19zaXplICAgICAgIHwKK3wgZGtfbG9va3VwICAgICB8Cit8IGRrX3VzYWJsZSAgICAgfAorfCBka19uZW50cmllcyAgIHwKKystLS0tLS0tLS0tLS0tLS0rCit8IGRrX2luZGljZXMgICAgfAorfCAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0rCit8IGRrX2VudHJpZXMgICAgfAorfCAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0rCisKK2RrX2luZGljZXMgaXMgYWN0dWFsIGhhc2h0YWJsZS4gIEl0IGhvbGRzIGluZGV4IGluIGVudHJpZXMsIG9yIERLSVhfRU1QVFkoLTEpCitvciBES0lYX0RVTU1ZKC0yKS4KK1NpemUgb2YgaW5kaWNlcyBpcyBka19zaXplLiAgVHlwZSBvZiBlYWNoIGluZGV4IGluIGluZGljZXMgaXMgdmFyeSBvbiBka19zaXplOgorCisqIGludDggIGZvciAgICAgICAgICBka19zaXplIDw9IDEyOAorKiBpbnQxNiBmb3IgMjU2ICAgPD0gZGtfc2l6ZSA8PSAyKioxNQorKiBpbnQzMiBmb3IgMioqMTYgPD0gZGtfc2l6ZSA8PSAyKiozMQorKiBpbnQ2NCBmb3IgMioqMzIgPD0gZGtfc2l6ZQorCitka19lbnRyaWVzIGlzIGFycmF5IG9mIFB5RGljdEtleUVudHJ5LiAgSXQncyBzaXplIGlzIFVTQUJMRV9GUkFDVElPTihka19zaXplKS4KK0RLX0VOVFJJRVMoZGspIGNhbiBiZSB1c2VkIHRvIGdldCBwb2ludGVyIHRvIGVudHJpZXMuCisKK05PVEU6IFNpbmNlIG5lZ2F0aXZlIHZhbHVlIGlzIHVzZWQgZm9yIERLSVhfRU1QVFkgYW5kIERLSVhfRFVNTVksIHR5cGUgb2YKK2RrX2luZGljZXMgZW50cnkgaXMgc2lnbmVkIGludGVnZXIgYW5kIGludDE2IGlzIHVzZWQgZm9yIHRhYmxlIHdoaWNoCitka19zaXplID09IDI1Ni4KKyovCisKIAogLyoKLVRoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIHNsb3RzIGluIHRoZSB0YWJsZToKLQotMS4gVW51c2VkLiAgbWVfa2V5ID09IG1lX3ZhbHVlID09IE5VTEwKLSAgIERvZXMgbm90IGhvbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyIG5vdyBhbmQgbmV2ZXIgZGlkLiAgVW51c2VkIGNhbgotICAgdHJhbnNpdGlvbiB0byBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoCi0gICBtZV9rZXkgaXMgTlVMTCwgYW5kIGlzIGVhY2ggc2xvdCdzIGluaXRpYWwgc3RhdGUuCi0KLTIuIEFjdGl2ZS4gIG1lX2tleSAhPSBOVUxMIGFuZCBtZV9rZXkgIT0gZHVtbXkgYW5kIG1lX3ZhbHVlICE9IE5VTEwKLSAgIEhvbGRzIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpci4gIEFjdGl2ZSBjYW4gdHJhbnNpdGlvbiB0byBEdW1teSBvcgotICAgUGVuZGluZyB1cG9uIGtleSBkZWxldGlvbiAoZm9yIGNvbWJpbmVkIGFuZCBzcGxpdCB0YWJsZXMgcmVzcGVjdGl2ZWx5KS4KLSAgIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaCBtZV92YWx1ZSAhPSBOVUxMLgotCi0zLiBEdW1teS4gIG1lX2tleSA9PSBkdW1teSBhbmQgbWVfdmFsdWUgPT0gTlVMTAotICAgUHJldmlvdXNseSBoZWxkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciwgYnV0IHRoYXQgd2FzIGRlbGV0ZWQgYW5kIGFuCi0gICBhY3RpdmUgcGFpciBoYXMgbm90IHlldCBvdmVyd3JpdHRlbiB0aGUgc2xvdC4gIER1bW15IGNhbiB0cmFuc2l0aW9uIHRvCi0gICBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgRHVtbXkgc2xvdHMgY2Fubm90IGJlIG1hZGUgVW51c2VkIGFnYWluCi0gICAoY2Fubm90IGhhdmUgbWVfa2V5IHNldCB0byBOVUxMKSwgZWxzZSB0aGUgcHJvYmUgc2VxdWVuY2UgaW4gY2FzZSBvZgotICAgY29sbGlzaW9uIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGtub3cgdGhleSB3ZXJlIG9uY2UgYWN0aXZlLgotCi00LiBQZW5kaW5nLiBOb3QgeWV0IGluc2VydGVkIG9yIGRlbGV0ZWQgZnJvbSBhIHNwbGl0LXRhYmxlLgotICAga2V5ICE9IE5VTEwsIGtleSAhPSBkdW1teSBhbmQgdmFsdWUgPT0gTlVMTAotCiBUaGUgRGljdE9iamVjdCBjYW4gYmUgaW4gb25lIG9mIHR3byBmb3Jtcy4KKwogRWl0aGVyOgogICBBIGNvbWJpbmVkIHRhYmxlOgogICAgIG1hX3ZhbHVlcyA9PSBOVUxMLCBka19yZWZjbnQgPT0gMS4KICAgICBWYWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbWVfdmFsdWUgZmllbGQgb2YgdGhlIFB5RGljdEtleXNPYmplY3QuCi0gICAgU2xvdCBraW5kIDQgaXMgbm90IGFsbG93ZWQgaS5lLgotICAgICAgICBrZXkgIT0gTlVMTCwga2V5ICE9IGR1bW15IGFuZCB2YWx1ZSA9PSBOVUxMIGlzIGlsbGVnYWwuCiBPcjoKICAgQSBzcGxpdCB0YWJsZToKICAgICBtYV92YWx1ZXMgIT0gTlVMTCwgZGtfcmVmY250ID49IDEKICAgICBWYWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbWFfdmFsdWVzIGFycmF5LgotICAgIE9ubHkgc3RyaW5nICh1bmljb2RlKSBrZXlzIGFyZSBhbGxvd2VkLCBubyA8ZHVtbXk+IGtleXMgYXJlIHByZXNlbnQuCisgICAgT25seSBzdHJpbmcgKHVuaWNvZGUpIGtleXMgYXJlIGFsbG93ZWQuCisgICAgQWxsIGRpY3RzIHNoYXJpbmcgc2FtZSBrZXkgbXVzdCBoYXZlIHNhbWUgaW5zZXJ0aW9uIG9yZGVyLgogCi1Ob3RlOiAucG9waXRlbSgpIGFidXNlcyB0aGUgbWVfaGFzaCBmaWVsZCBvZiBhbiBVbnVzZWQgb3IgRHVtbXkgc2xvdCB0bwotaG9sZCBhIHNlYXJjaCBmaW5nZXIuICBUaGUgbWVfaGFzaCBmaWVsZCBvZiBVbnVzZWQgb3IgRHVtbXkgc2xvdHMgaGFzIG5vCi1tZWFuaW5nIG90aGVyd2lzZS4gQXMgYSBjb25zZXF1ZW5jZSBvZiB0aGlzIHBvcGl0ZW0gYWx3YXlzIGNvbnZlcnRzIHRoZSBkaWN0Ci10byB0aGUgY29tYmluZWQtdGFibGUgZm9ybS4KK1RoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIHNsb3RzIGluIHRoZSB0YWJsZSAoc2xvdCBpcyBpbmRleCwgYW5kCitES19FTlRSSUVTKGtleXMpW2luZGV4XSBpZiBpbmRleCA+PSAwKToKKworMS4gVW51c2VkLiAgaW5kZXggPT0gREtJWF9FTVBUWQorICAgRG9lcyBub3QgaG9sZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIgbm93IGFuZCBuZXZlciBkaWQuICBVbnVzZWQgY2FuCisgICB0cmFuc2l0aW9uIHRvIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBUaGlzIGlzIGVhY2ggc2xvdCdzIGluaXRpYWwgc3RhdGUuCisKKzIuIEFjdGl2ZS4gIGluZGV4ID49IDAsIG1lX2tleSAhPSBOVUxMIGFuZCBtZV92YWx1ZSAhPSBOVUxMCisgICBIb2xkcyBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIuICBBY3RpdmUgY2FuIHRyYW5zaXRpb24gdG8gRHVtbXkgb3IKKyAgIFBlbmRpbmcgdXBvbiBrZXkgZGVsZXRpb24gKGZvciBjb21iaW5lZCBhbmQgc3BsaXQgdGFibGVzIHJlc3BlY3RpdmVseSkuCisgICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggbWVfdmFsdWUgIT0gTlVMTC4KKworMy4gRHVtbXkuICBpbmRleCA9PSBES0lYX0RVTU1ZICAoY29tYmluZWQgb25seSkKKyAgIFByZXZpb3VzbHkgaGVsZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIsIGJ1dCB0aGF0IHdhcyBkZWxldGVkIGFuZCBhbgorICAgYWN0aXZlIHBhaXIgaGFzIG5vdCB5ZXQgb3ZlcndyaXR0ZW4gdGhlIHNsb3QuICBEdW1teSBjYW4gdHJhbnNpdGlvbiB0bworICAgQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIER1bW15IHNsb3RzIGNhbm5vdCBiZSBtYWRlIFVudXNlZCBhZ2FpbgorICAgZWxzZSB0aGUgcHJvYmUgc2VxdWVuY2UgaW4gY2FzZSBvZiBjb2xsaXNpb24gd291bGQgaGF2ZSBubyB3YXkgdG8ga25vdworICAgdGhleSB3ZXJlIG9uY2UgYWN0aXZlLgorCis0LiBQZW5kaW5nLiBpbmRleCA+PSAwLCBrZXkgIT0gTlVMTCwgYW5kIHZhbHVlID09IE5VTEwgIChzcGxpdCBvbmx5KQorICAgTm90IHlldCBpbnNlcnRlZCBpbiBzcGxpdC10YWJsZS4KICovCiAKLS8qIFB5RGljdF9NSU5TSVpFX1NQTElUIGlzIHRoZSBtaW5pbXVtIHNpemUgb2YgYSBzcGxpdCBkaWN0aW9uYXJ5LgotICogSXQgbXVzdCBiZSBhIHBvd2VyIG9mIDIsIGFuZCBhdCBsZWFzdCA0LgotICogUmVzaXppbmcgb2Ygc3BsaXQgZGljdGlvbmFyaWVzIGlzIHZlcnkgcmFyZSwgc28gdGhlIHNhdmluZyBtZW1vcnkgaXMgbW9yZQotICogaW1wb3J0YW50IHRoYW4gdGhlIGNvc3Qgb2YgcmVzaXppbmcuCi0gKi8KLSNkZWZpbmUgUHlEaWN0X01JTlNJWkVfU1BMSVQgNAorLyoKK1ByZXNlcnZpbmcgaW5zZXJ0aW9uIG9yZGVyCiAKLS8qIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEIGlzIHRoZSBzdGFydGluZyBzaXplIGZvciBhbnkgbmV3LCBub24tc3BsaXQgZGljdC4KK0l0J3Mgc2ltcGxlIGZvciBjb21iaW5lZCB0YWJsZS4gIFNpbmNlIGRrX2VudHJpZXMgaXMgbW9zdGx5IGFwcGVuZCBvbmx5LCB3ZSBjYW4KK2dldCBpbnNlcnRpb24gb3JkZXIgYnkganVzdCBpdGVyYXRpbmcgZGtfZW50cmllcy4KKworT25lIGV4Y2VwdGlvbiBpcyAucG9waXRlbSgpLiAgSXQgcmVtb3ZlcyBsYXN0IGl0ZW0gaW4gZGtfZW50cmllcyBhbmQgZGVjcmVtZW50Citka19uZW50cmllcyB0byBhY2hpZXZlIGFtb3J0aXplZCBPKDEpLiAgU2luY2UgdGhlcmUgYXJlIERLSVhfRFVNTVkgcmVtYWlucyBpbgorZGtfaW5kaWNlcywgd2UgY2FuJ3QgaW5jcmVtZW50IGRrX3VzYWJsZSBldmVuIHRob3VnaCBka19uZW50cmllcyBpcworZGVjcmVtZW50ZWQuCisKK0luIHNwbGl0IHRhYmxlLCBpbnNlcnRpbmcgaW50byBwZW5kaW5nIGVudHJ5IGlzIGFsbG93ZWQgb25seSBmb3IgZGtfZW50cmllc1tpeF0KK3doZXJlIGl4ID09IG1wLT5tYV91c2VkLiBJbnNlcnRpbmcgaW50byBvdGhlciBpbmRleCBhbmQgZGVsZXRpbmcgaXRlbSBjYXVzZQorY29udmVydGluZyB0aGUgZGljdCB0byB0aGUgY29tYmluZWQgdGFibGUuCisqLworCisvKiBQeURpY3RfTUlOU0laRSBpcyB0aGUgc3RhcnRpbmcgc2l6ZSBmb3IgYW55IG5ldyBkaWN0LgogICogOCBhbGxvd3MgZGljdHMgd2l0aCBubyBtb3JlIHRoYW4gNSBhY3RpdmUgZW50cmllczsgZXhwZXJpbWVudHMgc3VnZ2VzdGVkCiAgKiB0aGlzIHN1ZmZpY2VzIGZvciB0aGUgbWFqb3JpdHkgb2YgZGljdHMgKGNvbnNpc3RpbmcgbW9zdGx5IG9mIHVzdWFsbHktc21hbGwKICAqIGRpY3RzIGNyZWF0ZWQgdG8gcGFzcyBrZXl3b3JkIGFyZ3VtZW50cykuCiAgKiBNYWtpbmcgdGhpcyA4LCByYXRoZXIgdGhhbiA0IHJlZHVjZXMgdGhlIG51bWJlciBvZiByZXNpemVzIGZvciBtb3N0CiAgKiBkaWN0aW9uYXJpZXMsIHdpdGhvdXQgYW55IHNpZ25pZmljYW50IGV4dHJhIG1lbW9yeSB1c2UuCiAgKi8KLSNkZWZpbmUgUHlEaWN0X01JTlNJWkVfQ09NQklORUQgOAorI2RlZmluZSBQeURpY3RfTUlOU0laRSA4CiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJkaWN0LWNvbW1vbi5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIiAgICAvKiB0byBnZXQgdW5pY29kZV9lcSgpICovCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGNsYXNzIGRpY3QgIlB5RGljdE9iamVjdCAqIiAiJlB5RGljdF9UeXBlIgpAQCAtMTc3LDQxICsyMjAsMzggQEAKIAogKi8KIAotLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzCi0gKiBUaGlzIGNvdWxkIGJlIGFueSB1bmlxdWUgb2JqZWN0LAotICogdXNlIGEgY3VzdG9tIHR5cGUgaW4gb3JkZXIgdG8gbWluaW1pc2UgY291cGxpbmcuCi0qLwotc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3Q7Ci0KLSNkZWZpbmUgZHVtbXkgKCZfZHVtbXlfc3RydWN0KQotCi0jaWZkZWYgUHlfUkVGX0RFQlVHCi1QeU9iamVjdCAqCi1fUHlEaWN0X0R1bW15KHZvaWQpCi17Ci0gICAgcmV0dXJuIGR1bW15OwotfQotI2VuZGlmCi0KIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdCBsb29rZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKTsKK3N0YXRpYyBQeV9zc2l6ZV90IGxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QgbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcyk7CiAKIHN0YXRpYyBpbnQgZGljdHJlc2l6ZShQeURpY3RPYmplY3QgKm1wLCBQeV9zc2l6ZV90IG1pbnVzZWQpOwogCi0vKiBEaWN0aW9uYXJ5IHJldXNlIHNjaGVtZSB0byBzYXZlIGNhbGxzIHRvIG1hbGxvYywgZnJlZSwgYW5kIG1lbXNldCAqLworLypHbG9iYWwgY291bnRlciB1c2VkIHRvIHNldCBtYV92ZXJzaW9uX3RhZyBmaWVsZCBvZiBkaWN0aW9uYXJ5LgorICogSXQgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIHRoYXQgYSBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgYW5kIGVhY2gKKyAqIHRpbWUgdGhhdCBhIGRpY3Rpb25hcnkgaXMgbW9kaWZpZWQuICovCitzdGF0aWMgdWludDY0X3QgcHlkaWN0X2dsb2JhbF92ZXJzaW9uID0gMDsKKworI2RlZmluZSBESUNUX05FWFRfVkVSU0lPTigpICgrK3B5ZGljdF9nbG9iYWxfdmVyc2lvbikKKworLyogRGljdGlvbmFyeSByZXVzZSBzY2hlbWUgdG8gc2F2ZSBjYWxscyB0byBtYWxsb2MgYW5kIGZyZWUgKi8KICNpZm5kZWYgUHlEaWN0X01BWEZSRUVMSVNUCiAjZGVmaW5lIFB5RGljdF9NQVhGUkVFTElTVCA4MAogI2VuZGlmCiBzdGF0aWMgUHlEaWN0T2JqZWN0ICpmcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKIHN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqa2V5c19mcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgbnVtZnJlZWtleXMgPSAwOwogCiAjaW5jbHVkZSAiY2xpbmljL2RpY3RvYmplY3QuYy5oIgogCkBAIC0yMTksMTIgKzI1OSwxNSBAQAogUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeURpY3RPYmplY3QgKm9wOwotICAgIGludCByZXQgPSBudW1mcmVlOworICAgIGludCByZXQgPSBudW1mcmVlICsgbnVtZnJlZWtleXM7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHdoaWxlIChudW1mcmVla2V5cykgeworICAgICAgICBQeU9iamVjdF9GUkVFKGtleXNfZnJlZV9saXN0Wy0tbnVtZnJlZWtleXNdKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMjQzLDQwICsyODYsMTE2IEBACiAgICAgUHlEaWN0X0NsZWFyRnJlZUxpc3QoKTsKIH0KIAorI2RlZmluZSBES19TSVpFKGRrKSAoKGRrKS0+ZGtfc2l6ZSkKKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorI2RlZmluZSBES19JWFNJWkUoZGspICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKERLX1NJWkUoZGspIDw9IDB4ZmYgPyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgMSA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZiA/ICAgICAgICAgICAgXAorICAgICAgICAgICAgMiA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZmZmZmYgPyAgICBcCisgICAgICAgICAgICAgICAgNCA6IHNpemVvZihpbnQ2NF90KSkKKyNlbHNlCisjZGVmaW5lIERLX0lYU0laRShkaykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoREtfU0laRShkaykgPD0gMHhmZiA/ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAxIDogREtfU0laRShkaykgPD0gMHhmZmZmID8gICAgICAgICAgICBcCisgICAgICAgICAgICAyIDogc2l6ZW9mKGludDMyX3QpKQorI2VuZGlmCisjZGVmaW5lIERLX0VOVFJJRVMoZGspIFwKKyAgICAoKFB5RGljdEtleUVudHJ5KikoJihkayktPmRrX2luZGljZXMuYXNfMVtES19TSVpFKGRrKSAqIERLX0lYU0laRShkayldKSkKKwogI2RlZmluZSBES19ERUJVR19JTkNSRUYgX1B5X0lOQ19SRUZUT1RBTCBfUHlfUkVGX0RFQlVHX0NPTU1BCiAjZGVmaW5lIERLX0RFQlVHX0RFQ1JFRiBfUHlfREVDX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKIAogI2RlZmluZSBES19JTkNSRUYoZGspIChES19ERUJVR19JTkNSRUYgKysoZGspLT5ka19yZWZjbnQpCiAjZGVmaW5lIERLX0RFQ1JFRihkaykgaWYgKERLX0RFQlVHX0RFQ1JFRiAoLS0oZGspLT5ka19yZWZjbnQpID09IDApIGZyZWVfa2V5c19vYmplY3QoZGspCi0jZGVmaW5lIERLX1NJWkUoZGspICgoZGspLT5ka19zaXplKQogI2RlZmluZSBES19NQVNLKGRrKSAoKChkayktPmRrX3NpemUpLTEpCiAjZGVmaW5lIElTX1BPV0VSX09GXzIoeCkgKCgoeCkgJiAoeC0xKSkgPT0gMCkKIAorLyogbG9va3VwIGluZGljZXMuICByZXR1cm5zIERLSVhfRU1QVFksIERLSVhfRFVNTVksIG9yIGl4ID49MCAqLworc3RhdGljIGlubGluZSBQeV9zc2l6ZV90Citka19nZXRfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqa2V5cywgUHlfc3NpemVfdCBpKQoreworICAgIFB5X3NzaXplX3QgcyA9IERLX1NJWkUoa2V5cyk7CisgICAgUHlfc3NpemVfdCBpeDsKKworICAgIGlmIChzIDw9IDB4ZmYpIHsKKyAgICAgICAgaW50OF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18xOworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorICAgIGVsc2UgaWYgKHMgPD0gMHhmZmZmKSB7CisgICAgICAgIGludDE2X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzI7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICBlbHNlIGlmIChzID4gMHhmZmZmZmZmZikgeworICAgICAgICBpbnQ2NF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc184OworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIGludDMyX3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzQ7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisgICAgYXNzZXJ0KGl4ID49IERLSVhfRFVNTVkpOworICAgIHJldHVybiBpeDsKK30KKworLyogd3JpdGUgdG8gaW5kaWNlcy4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZGtfc2V0X2luZGV4KFB5RGljdEtleXNPYmplY3QgKmtleXMsIFB5X3NzaXplX3QgaSwgUHlfc3NpemVfdCBpeCkKK3sKKyAgICBQeV9zc2l6ZV90IHMgPSBES19TSVpFKGtleXMpOworCisgICAgYXNzZXJ0KGl4ID49IERLSVhfRFVNTVkpOworCisgICAgaWYgKHMgPD0gMHhmZikgeworICAgICAgICBpbnQ4X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzE7CisgICAgICAgIGFzc2VydChpeCA8PSAweDdmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKWl4OworICAgIH0KKyAgICBlbHNlIGlmIChzIDw9IDB4ZmZmZikgeworICAgICAgICBpbnQxNl90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18yOworICAgICAgICBhc3NlcnQoaXggPD0gMHg3ZmZmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChpbnQxNl90KWl4OworICAgIH0KKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorICAgIGVsc2UgaWYgKHMgPiAweGZmZmZmZmZmKSB7CisgICAgICAgIGludDY0X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzg7CisgICAgICAgIGluZGljZXNbaV0gPSBpeDsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgaW50MzJfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfNDsKKyAgICAgICAgYXNzZXJ0KGl4IDw9IDB4N2ZmZmZmZmYpOworICAgICAgICBpbmRpY2VzW2ldID0gKGludDMyX3QpaXg7CisgICAgfQorfQorCisKIC8qIFVTQUJMRV9GUkFDVElPTiBpcyB0aGUgbWF4aW11bSBkaWN0aW9uYXJ5IGxvYWQuCi0gKiBDdXJyZW50bHkgc2V0IHRvICgybisxKS8zLiBJbmNyZWFzaW5nIHRoaXMgcmF0aW8gbWFrZXMgZGljdGlvbmFyaWVzIG1vcmUKLSAqIGRlbnNlIHJlc3VsdGluZyBpbiBtb3JlIGNvbGxpc2lvbnMuICBEZWNyZWFzaW5nIGl0IGltcHJvdmVzIHNwYXJzZW5lc3MKLSAqIGF0IHRoZSBleHBlbnNlIG9mIHNwcmVhZGluZyBlbnRyaWVzIG92ZXIgbW9yZSBjYWNoZSBsaW5lcyBhbmQgYXQgdGhlCi0gKiBjb3N0IG9mIHRvdGFsIG1lbW9yeSBjb25zdW1lZC4KKyAqIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZSBkZW5zZSByZXN1bHRpbmcgaW4gbW9yZQorICogY29sbGlzaW9ucy4gIERlY3JlYXNpbmcgaXQgaW1wcm92ZXMgc3BhcnNlbmVzcyBhdCB0aGUgZXhwZW5zZSBvZiBzcHJlYWRpbmcKKyAqIGluZGljZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUgY29zdCBvZiB0b3RhbCBtZW1vcnkgY29uc3VtZWQuCiAgKgogICogVVNBQkxFX0ZSQUNUSU9OIG11c3Qgb2JleSB0aGUgZm9sbG93aW5nOgogICogICAgICgwIDwgVVNBQkxFX0ZSQUNUSU9OKG4pIDwgbikgZm9yIGFsbCBuID49IDIKICAqCi0gKiBVU0FCTEVfRlJBQ1RJT04gc2hvdWxkIGJlIHZlcnkgcXVpY2sgdG8gY2FsY3VsYXRlLgotICogRnJhY3Rpb25zIGFyb3VuZCA1LzggdG8gMi8zIHNlZW0gdG8gd29yayB3ZWxsIGluIHByYWN0aWNlLgorICogVVNBQkxFX0ZSQUNUSU9OIHNob3VsZCBiZSBxdWljayB0byBjYWxjdWxhdGUuCisgKiBGcmFjdGlvbnMgYXJvdW5kIDEvMiB0byAyLzMgc2VlbSB0byB3b3JrIHdlbGwgaW4gcHJhY3RpY2UuCiAgKi8KKyNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKG4pIDw8IDEpLzMpCiAKLS8qIFVzZSAoMm4rMSkvMyByYXRoZXIgdGhhbiAybiszIGJlY2F1c2U6IGl0IG1ha2VzIG5vIGRpZmZlcmVuY2UgZm9yCi0gKiBjb21iaW5lZCB0YWJsZXMgKHRoZSB0d28gZnJhY3Rpb25zIHJvdW5kIHRvIHRoZSBzYW1lIG51bWJlciBuIDwgKSwKLSAqIGJ1dCAyKjQvMyBpcyAyIHdoZXJlYXMgKDIqNCsxKS8zIGlzIDMgd2hpY2ggcG90ZW50aWFsbHkgc2F2ZXMgcXVpdGUKLSAqIGEgbG90IG9mIHNwYWNlIGZvciBzbWFsbCwgc3BsaXQgdGFibGVzICovCi0jZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKCgobikgPDwgMSkrMSkvMykKKy8qIEVTVElNQVRFX1NJWkUgaXMgcmV2ZXJzZSBmdW5jdGlvbiBvZiBVU0FCTEVfRlJBQ1RJT04uCisgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlc2VydmUgZW5vdWdoIHNpemUgdG8gaW5zZXJ0IG4gZW50cmllcyB3aXRob3V0CisgKiByZXNpemluZy4KKyAqLworI2RlZmluZSBFU1RJTUFURV9TSVpFKG4pICAoKChuKSozKSA+PiAxKQogCi0vKiBBbHRlcm5hdGl2ZSBmcmFjdGlvbiB0aGF0IGlzIG90aGVyd2lzZSBjbG9zZSBlbm91Z2ggdG8gKDJuKzEpLzMgdG8gbWFrZQorLyogQWx0ZXJuYXRpdmUgZnJhY3Rpb24gdGhhdCBpcyBvdGhlcndpc2UgY2xvc2UgZW5vdWdoIHRvIDJuLzMgdG8gbWFrZQogICogbGl0dGxlIGRpZmZlcmVuY2UuIDggKiAyLzMgPT0gOCAqIDUvOCA9PSA1LiAxNiAqIDIvMyA9PSAxNiAqIDUvOCA9PSAxMC4KICAqIDMyICogMi8zID0gMjEsIDMyICogNS84ID0gMjAuCiAgKiBJdHMgYWR2YW50YWdlIGlzIHRoYXQgaXQgaXMgZmFzdGVyIHRvIGNvbXB1dGUgb24gbWFjaGluZXMgd2l0aCBzbG93IGRpdmlzaW9uLgogICogI2RlZmluZSBVU0FCTEVfRlJBQ1RJT04obikgKCgobikgPj4gMSkgKyAoKG4pID4+IDIpIC0gKChuKSA+PiAzKSkKLSovCisgKi8KIAogLyogR1JPV1RIX1JBVEUuIEdyb3d0aCByYXRlIHVwb24gaGl0dGluZyBtYXhpbXVtIGxvYWQuCiAgKiBDdXJyZW50bHkgc2V0IHRvIHVzZWQqMiArIGNhcGFjaXR5LzIuCkBAIC0zMDAsNjEgKzQxOSwxNTUgQEAKICAqICh3aGljaCBjYW5ub3QgZmFpbCBhbmQgdGh1cyBjYW4gZG8gbm8gYWxsb2NhdGlvbikuCiAgKi8KIHN0YXRpYyBQeURpY3RLZXlzT2JqZWN0IGVtcHR5X2tleXNfc3RydWN0ID0gewotICAgICAgICAyLCAvKiBka19yZWZjbnQgMSBmb3IgdGhpcyBzdHJ1Y3QsIDEgZm9yIGR1bW15X3N0cnVjdCAqLworICAgICAgICAxLCAvKiBka19yZWZjbnQgKi8KICAgICAgICAgMSwgLyogZGtfc2l6ZSAqLwogICAgICAgICBsb29rZGljdF9zcGxpdCwgLyogZGtfbG9va3VwICovCiAgICAgICAgIDAsIC8qIGRrX3VzYWJsZSAoaW1tdXRhYmxlKSAqLwotICAgICAgICB7Ci0gICAgICAgICAgICB7IDAsIDAsIDAgfSAvKiBka19lbnRyaWVzIChlbXB0eSkgKi8KLSAgICAgICAgfQorICAgICAgICAwLCAvKiBka19uZW50cmllcyAqLworICAgICAgICAuZGtfaW5kaWNlcyA9IHsgLmFzXzEgPSB7REtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERLSVhfRU1QVFksIERLSVhfRU1QVFksIERLSVhfRU1QVFksIERLSVhfRU1QVFl9fSwKIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqZW1wdHlfdmFsdWVzWzFdID0geyBOVUxMIH07CiAKICNkZWZpbmUgUHlfRU1QVFlfS0VZUyAmZW1wdHlfa2V5c19zdHJ1Y3QKIAorLyogVW5jb21tZW50IHRvIGNoZWNrIHRoZSBkaWN0IGNvbnRlbnQgaW4gX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KCkgKi8KKy8qICNkZWZpbmUgREVCVUdfUFlESUNUICovCisKKworI2lmZGVmIFB5X0RFQlVHCitzdGF0aWMgaW50CitfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koUHlEaWN0T2JqZWN0ICptcCkKK3sKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbXAtPm1hX2tleXM7CisgICAgaW50IHNwbGl0dGVkID0gX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKTsKKyAgICBQeV9zc2l6ZV90IHVzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihrZXlzLT5ka19zaXplKTsKKyNpZmRlZiBERUJVR19QWURJQ1QKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9IERLX0VOVFJJRVMoa2V5cyk7CisgICAgUHlfc3NpemVfdCBpOworI2VuZGlmCisKKyAgICBhc3NlcnQoMCA8PSBtcC0+bWFfdXNlZCAmJiBtcC0+bWFfdXNlZCA8PSB1c2FibGUpOworICAgIGFzc2VydChJU19QT1dFUl9PRl8yKGtleXMtPmRrX3NpemUpKTsKKyAgICBhc3NlcnQoMCA8PSBrZXlzLT5ka191c2FibGUKKyAgICAgICAgICAgJiYga2V5cy0+ZGtfdXNhYmxlIDw9IHVzYWJsZSk7CisgICAgYXNzZXJ0KDAgPD0ga2V5cy0+ZGtfbmVudHJpZXMKKyAgICAgICAgICAgJiYga2V5cy0+ZGtfbmVudHJpZXMgPD0gdXNhYmxlKTsKKyAgICBhc3NlcnQoa2V5cy0+ZGtfdXNhYmxlICsga2V5cy0+ZGtfbmVudHJpZXMgPD0gdXNhYmxlKTsKKworICAgIGlmICghc3BsaXR0ZWQpIHsKKyAgICAgICAgLyogY29tYmluZWQgdGFibGUgKi8KKyAgICAgICAgYXNzZXJ0KGtleXMtPmRrX3JlZmNudCA9PSAxKTsKKyAgICB9CisKKyNpZmRlZiBERUJVR19QWURJQ1QKKyAgICBmb3IgKGk9MDsgaSA8IGtleXMtPmRrX3NpemU7IGkrKykgeworICAgICAgICBQeV9zc2l6ZV90IGl4ID0gZGtfZ2V0X2luZGV4KGtleXMsIGkpOworICAgICAgICBhc3NlcnQoREtJWF9EVU1NWSA8PSBpeCAmJiBpeCA8PSB1c2FibGUpOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgdXNhYmxlOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5ID0gJmVudHJpZXNbaV07CisgICAgICAgIFB5T2JqZWN0ICprZXkgPSBlbnRyeS0+bWVfa2V5OworCisgICAgICAgIGlmIChrZXkgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKKyAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKWtleSktPmhhc2g7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGhhc2ggIT0gLTEpOworICAgICAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfaGFzaCA9PSBoYXNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIHRlc3RfZGljdCBmYWlscyBpZiBQeU9iamVjdF9IYXNoKCkgaXMgY2FsbGVkIGFnYWluICovCisgICAgICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5tZV9oYXNoICE9IC0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc3BsaXR0ZWQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX3ZhbHVlICE9IE5VTEwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHNwbGl0dGVkKSB7CisgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX3ZhbHVlID09IE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNwbGl0dGVkKSB7CisgICAgICAgIC8qIHNwbGl0dGVkIHRhYmxlICovCisgICAgICAgIGZvciAoaT0wOyBpIDwgbXAtPm1hX3VzZWQ7IGkrKykgeworICAgICAgICAgICAgYXNzZXJ0KG1wLT5tYV92YWx1ZXNbaV0gIT0gTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiAxOworfQorI2VuZGlmCisKKwogc3RhdGljIFB5RGljdEtleXNPYmplY3QgKm5ld19rZXlzX29iamVjdChQeV9zc2l6ZV90IHNpemUpCiB7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqZGs7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDA7CisgICAgUHlfc3NpemVfdCBlcywgdXNhYmxlOwogCi0gICAgYXNzZXJ0KHNpemUgPj0gUHlEaWN0X01JTlNJWkVfU1BMSVQpOworICAgIGFzc2VydChzaXplID49IFB5RGljdF9NSU5TSVpFKTsKICAgICBhc3NlcnQoSVNfUE9XRVJfT0ZfMihzaXplKSk7Ci0gICAgZGsgPSBQeU1lbV9NQUxMT0Moc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsKLSAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlEaWN0S2V5RW50cnkpICogKHNpemUtMSkpOwotICAgIGlmIChkayA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworCisgICAgdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKHNpemUpOworICAgIGlmIChzaXplIDw9IDB4ZmYpIHsKKyAgICAgICAgZXMgPSAxOworICAgIH0KKyAgICBlbHNlIGlmIChzaXplIDw9IDB4ZmZmZikgeworICAgICAgICBlcyA9IDI7CisgICAgfQorI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisgICAgZWxzZSBpZiAoc2l6ZSA8PSAweGZmZmZmZmZmKSB7CisgICAgICAgIGVzID0gNDsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgZXMgPSBzaXplb2YoUHlfc3NpemVfdCk7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gUHlEaWN0X01JTlNJWkUgJiYgbnVtZnJlZWtleXMgPiAwKSB7CisgICAgICAgIGRrID0ga2V5c19mcmVlX2xpc3RbLS1udW1mcmVla2V5c107CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkayA9IFB5T2JqZWN0X01BTExPQyhzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBQeV9NRU1CRVJfU0laRShQeURpY3RLZXlzT2JqZWN0LCBka19pbmRpY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGVzICogc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOworICAgICAgICBpZiAoZGsgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQogICAgIERLX0RFQlVHX0lOQ1JFRiBkay0+ZGtfcmVmY250ID0gMTsKICAgICBkay0+ZGtfc2l6ZSA9IHNpemU7Ci0gICAgZGstPmRrX3VzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihzaXplKTsKLSAgICBlcDAgPSAmZGstPmRrX2VudHJpZXNbMF07Ci0gICAgLyogSGFzaCB2YWx1ZSBvZiBzbG90IDAgaXMgdXNlZCBieSBwb3BpdGVtLCBzbyBpdCBtdXN0IGJlIGluaXRpYWxpemVkICovCi0gICAgZXAwLT5tZV9oYXNoID0gMDsKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIGVwMFtpXS5tZV9rZXkgPSBOVUxMOwotICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBOVUxMOwotICAgIH0KKyAgICBkay0+ZGtfdXNhYmxlID0gdXNhYmxlOwogICAgIGRrLT5ka19sb29rdXAgPSBsb29rZGljdF91bmljb2RlX25vZHVtbXk7CisgICAgZGstPmRrX25lbnRyaWVzID0gMDsKKyAgICBtZW1zZXQoJmRrLT5ka19pbmRpY2VzLmFzXzFbMF0sIDB4ZmYsIGVzICogc2l6ZSk7CisgICAgbWVtc2V0KERLX0VOVFJJRVMoZGspLCAwLCBzaXplb2YoUHlEaWN0S2V5RW50cnkpICogdXNhYmxlKTsKICAgICByZXR1cm4gZGs7CiB9CiAKIHN0YXRpYyB2b2lkCiBmcmVlX2tleXNfb2JqZWN0KFB5RGljdEtleXNPYmplY3QgKmtleXMpCiB7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSAma2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9IERLX0VOVFJJRVMoa2V5cyk7CiAgICAgUHlfc3NpemVfdCBpLCBuOwotICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKGtleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgZm9yIChpID0gMCwgbiA9IGtleXMtPmRrX25lbnRyaWVzOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV9rZXkpOwogICAgICAgICBQeV9YREVDUkVGKGVudHJpZXNbaV0ubWVfdmFsdWUpOwogICAgIH0KLSAgICBQeU1lbV9GUkVFKGtleXMpOworICAgIGlmIChrZXlzLT5ka19zaXplID09IFB5RGljdF9NSU5TSVpFICYmIG51bWZyZWVrZXlzIDwgUHlEaWN0X01BWEZSRUVMSVNUKSB7CisgICAgICAgIGtleXNfZnJlZV9saXN0W251bWZyZWVrZXlzKytdID0ga2V5czsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBQeU9iamVjdF9GUkVFKGtleXMpOwogfQogCiAjZGVmaW5lIG5ld192YWx1ZXMoc2l6ZSkgUHlNZW1fTkVXKFB5T2JqZWN0ICosIHNpemUpCi0KICNkZWZpbmUgZnJlZV92YWx1ZXModmFsdWVzKSBQeU1lbV9GUkVFKHZhbHVlcykKIAogLyogQ29uc3VtZXMgYSByZWZlcmVuY2UgdG8gdGhlIGtleXMgb2JqZWN0ICovCkBAIC0zODAsNiArNTkzLDggQEAKICAgICBtcC0+bWFfa2V5cyA9IGtleXM7CiAgICAgbXAtPm1hX3ZhbHVlcyA9IHZhbHVlczsKICAgICBtcC0+bWFfdXNlZCA9IDA7CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1wOwogfQogCkBAIC0zOTAsNyArNjA1LDcgQEAKICAgICBQeU9iamVjdCAqKnZhbHVlczsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7CiAKLSAgICBzaXplID0gREtfU0laRShrZXlzKTsKKyAgICBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUoa2V5cykpOwogICAgIHZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CiAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CiAgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKQEAgLTQwNSwxMiArNjIwLDQzIEBACiBQeU9iamVjdCAqCiBQeURpY3RfTmV3KHZvaWQpCiB7Ci0gICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9DT01CSU5FRCk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGtleXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIG5ld19kaWN0KGtleXMsIE5VTEwpOwogfQogCisvKiBTZWFyY2ggaW5kZXggb2YgaGFzaCB0YWJsZSBmcm9tIG9mZnNldCBvZiBlbnRyeSB0YWJsZSAqLworc3RhdGljIFB5X3NzaXplX3QKK2xvb2tkaWN0X2luZGV4KFB5RGljdEtleXNPYmplY3QgKmssIFB5X2hhc2hfdCBoYXNoLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIHNpemVfdCBpLCBwZXJ0dXJiOworICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhrKTsKKyAgICBQeV9zc2l6ZV90IGl4OworCisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CisgICAgaXggPSBka19nZXRfaW5kZXgoaywgaSk7CisgICAgaWYgKGl4ID09IGluZGV4KSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICB9CisKKyAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKKyAgICAgICAgaSA9IG1hc2sgJiAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChrLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IGluZGV4KSB7CisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIHJldHVybiBES0lYX0VSUk9SOworfQorCiAvKgogVGhlIGJhc2ljIGxvb2t1cCBmdW5jdGlvbiB1c2VkIGJ5IGFsbCBvcGVyYXRpb25zLgogVGhpcyBpcyBiYXNlZCBvbiBBbGdvcml0aG0gRCBmcm9tIEtudXRoIFZvbC4gMywgU2VjLiA2LjQuCkBAIC00MjYsNTIgKzY3Miw2NCBAQAogY29udHJpYnV0aW9ucyBieSBSZWltZXIgQmVocmVuZHMsIEp5cmtpIEFsYWt1aWphbGEsIFZsYWRpbWlyIE1hcmFuZ296b3YgYW5kCiBDaHJpc3RpYW4gVGlzbWVyLgogCi1sb29rZGljdCgpIGlzIGdlbmVyYWwtcHVycG9zZSwgYW5kIG1heSByZXR1cm4gTlVMTCBpZiAoYW5kIG9ubHkgaWYpIGEKLWNvbXBhcmlzb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiAodGhpcyB3YXMgbmV3IGluIFB5dGhvbiAyLjUpLgorbG9va2RpY3QoKSBpcyBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIERLSVhfRVJST1IgaWYgKGFuZCBvbmx5IGlmKSBhCitjb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24uCiBsb29rZGljdF91bmljb2RlKCkgYmVsb3cgaXMgc3BlY2lhbGl6ZWQgdG8gc3RyaW5nIGtleXMsIGNvbXBhcmlzb24gb2Ygd2hpY2ggY2FuCi1uZXZlciByYWlzZSBhbiBleGNlcHRpb247IHRoYXQgZnVuY3Rpb24gY2FuIG5ldmVyIHJldHVybiBOVUxMLgorbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gREtJWF9FUlJPUi4KIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSBpcyBmdXJ0aGVyIHNwZWNpYWxpemVkIGZvciBzdHJpbmcga2V5cyB0aGF0IGNhbm5vdCBiZQogdGhlIDxkdW1teT4gdmFsdWUuCi1Gb3IgYm90aCwgd2hlbiB0aGUga2V5IGlzbid0IGZvdW5kIGEgUHlEaWN0RW50cnkqIGlzIHJldHVybmVkCi13aGVyZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBmb3VuZCwgKnZhbHVlX2FkZHIgcG9pbnRzIHRvIHRoZSBtYXRjaGluZyB2YWx1ZQotc2xvdC4KK0ZvciBib3RoLCB3aGVuIHRoZSBrZXkgaXNuJ3QgZm91bmQgYSBES0lYX0VNUFRZIGlzIHJldHVybmVkLiBoYXNocG9zIHJldHVybnMKK3doZXJlIHRoZSBrZXkgaW5kZXggc2hvdWxkIGJlIGluc2VydGVkLgogKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsIFB5X3NzaXplX3QgKmhhc2hwb3MpCiB7Ci0gICAgc2l6ZV90IGk7Ci0gICAgc2l6ZV90IHBlcnR1cmI7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmZyZWVzbG90OwotICAgIHNpemVfdCBtYXNrOwotICAgIFB5RGljdEtleUVudHJ5ICplcDA7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIHNpemVfdCBpLCBwZXJ0dXJiLCBtYXNrOworICAgIFB5X3NzaXplX3QgaXgsIGZyZWVzbG90OwogICAgIGludCBjbXA7CisgICAgUHlEaWN0S2V5c09iamVjdCAqZGs7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCwgKmVwOwogICAgIFB5T2JqZWN0ICpzdGFydGtleTsKIAogdG9wOgotICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBlcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgZGsgPSBtcC0+bWFfa2V5czsKKyAgICBtYXNrID0gREtfTUFTSyhkayk7CisgICAgZXAwID0gREtfRU5UUklFUyhkayk7CiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpIHsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICByZXR1cm4gZXA7CisKKyAgICBpeCA9IGRrX2dldF9pbmRleChkaywgaSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkpCi0gICAgICAgIGZyZWVzbG90ID0gZXA7CisgICAgaWYgKGl4ID09IERLSVhfRFVNTVkpIHsKKyAgICAgICAgZnJlZXNsb3QgPSBpOworICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICByZXR1cm4gaXg7CisgICAgICAgIH0KICAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgIHN0YXJ0a2V5ID0gZXAtPm1lX2tleTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGlmIChjbXAgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaWYgKGVwMCA9PSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllcyAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIERLSVhfRVJST1I7CisgICAgICAgICAgICBpZiAoZGsgPT0gbXAtPm1hX2tleXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgewogICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkBAIC00NzksNDAgKzczNyw0OSBAQAogICAgICAgICAgICAgICAgIGdvdG8gdG9wOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGZyZWVzbG90ID0gTlVMTDsKKyAgICAgICAgZnJlZXNsb3QgPSAtMTsKICAgICB9CiAKLSAgICAvKiBJbiB0aGUgbG9vcCwgbWVfa2V5ID09IGR1bW15IGlzIGJ5IGZhciAoZmFjdG9yIG9mIDEwMHMpIHRoZQotICAgICAgIGxlYXN0IGxpa2VseSBvdXRjb21lLCBzbyB0ZXN0IGZvciB0aGF0IGxhc3QuICovCiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZmcmVlc2xvdC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90OworICAgICAgICBpID0gKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKSAmIG1hc2s7CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KGRrLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IChmcmVlc2xvdCA9PSAtMSkgPyAoUHlfc3NpemVfdClpIDogZnJlZXNsb3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGl4ID09IERLSVhfRFVNTVkpIHsKKyAgICAgICAgICAgIGlmIChmcmVlc2xvdCA9PSAtMSkKKyAgICAgICAgICAgICAgICBmcmVlc2xvdCA9IGk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBlcCA9ICZlcDBbaXhdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMKTsKICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5KSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpIHsKKyAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgIHN0YXJ0a2V5ID0gZXAtPm1lX2tleTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGlmIChjbXAgPCAwKSB7CiAgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiBES0lYX0VSUk9SOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVwMCA9PSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllcyAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7CisgICAgICAgICAgICBpZiAoZGsgPT0gbXAtPm1hX2tleXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgewogICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewpAQCAtNTIwLDcyICs3ODcsNzkgQEAKICAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCiAgICAgcmV0dXJuIDA7CiB9CiAKIC8qIFNwZWNpYWxpemVkIHZlcnNpb24gZm9yIHN0cmluZy1vbmx5IGtleXMgKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsIFB5X3NzaXplX3QgKmhhc2hwb3MpCiB7Ci0gICAgc2l6ZV90IGk7Ci0gICAgc2l6ZV90IHBlcnR1cmI7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmZyZWVzbG90OworICAgIHNpemVfdCBpLCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeCwgZnJlZXNsb3Q7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyA9PSBOVUxMKTsKICAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCiAgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCiAgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCiAgICAgICAgdGhhdCBoZXJlLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7Ci0gICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKKyAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIsIGhhc2hwb3MpOwogICAgIH0KICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSkgewotICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkpCi0gICAgICAgIGZyZWVzbG90ID0gZXA7CisgICAgaWYgKGl4ID09IERLSVhfRFVNTVkpIHsKKyAgICAgICAgZnJlZXNsb3QgPSBpOworICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSB7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkKKyAgICAgICAgICAgIHx8IChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOwogICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGZyZWVzbG90ID0gTlVMTDsKKyAgICAgICAgZnJlZXNsb3QgPSAtMTsKICAgICB9CiAKLSAgICAvKiBJbiB0aGUgbG9vcCwgbWVfa2V5ID09IGR1bW15IGlzIGJ5IGZhciAoZmFjdG9yIG9mIDEwMHMpIHRoZQotICAgICAgIGxlYXN0IGxpa2VseSBvdXRjb21lLCBzbyB0ZXN0IGZvciB0aGF0IGxhc3QuICovCiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZmcmVlc2xvdC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90OworICAgICAgICBpID0gbWFzayAmICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSk7CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IChmcmVlc2xvdCA9PSAtMSkgPyAoUHlfc3NpemVfdClpIDogZnJlZXNsb3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IC0xKQorICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkKLSAgICAgICAgICAgIHx8IChlcC0+bWVfaGFzaCA9PSBoYXNoCi0gICAgICAgICAgICAmJiBlcC0+bWVfa2V5ICE9IGR1bW15Ci0gICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICB8fCAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCiAgICAgcmV0dXJuIDA7CkBAIC01OTMsNDAgKzg2Nyw2MiBAQAogCiAvKiBGYXN0ZXIgdmVyc2lvbiBvZiBsb29rZGljdF91bmljb2RlIHdoZW4gaXQgaXMga25vd24gdGhhdCBubyA8ZHVtbXk+IGtleXMKICAqIHdpbGwgYmUgcHJlc2VudC4gKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKLSAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKKyAgICBzaXplX3QgaSwgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyA9PSBOVUxMKTsKICAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCiAgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCiAgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCiAgICAgICAgdGhhdCBoZXJlLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7Ci0gICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKKyAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIsIGhhc2hwb3MpOwogICAgIH0KICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAorICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgfQorICAgIGVwID0gJmVwMFtpeF07CisgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKICAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOwogICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgcmV0dXJuIGl4OwogICAgIH0KICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICBpID0gbWFzayAmICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSk7CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICAgICAgYXNzZXJ0IChpeCAhPSBES0lYX0RVTU1ZKTsKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgICAgIH0KKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSB8fAogICAgICAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KICAgICB9CiAgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLwpAQCAtNjM4LDM5ICs5MzQsNjEgQEAKICAqIFNwbGl0IHRhYmxlcyBvbmx5IGNvbnRhaW4gdW5pY29kZSBrZXlzIGFuZCBubyBkdW1teSBrZXlzLAogICogc28gYWxnb3JpdGhtIGlzIHRoZSBzYW1lIGFzIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teS4KICAqLwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK3N0YXRpYyBQeV9zc2l6ZV90CiBsb29rZGljdF9zcGxpdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKLSAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKKyAgICBzaXplX3QgaSwgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICAvKiBtcCBtdXN0IHNwbGl0IHRhYmxlICovCisgICAgYXNzZXJ0KG1wLT5tYV92YWx1ZXMgIT0gTlVMTCk7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7Ci0gICAgICAgIGVwID0gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkcik7Ci0gICAgICAgIC8qIGxvb2tkaWN0IGV4cGVjdHMgYSBjb21iaW5lZC10YWJsZSwgc28gZml4IHZhbHVlX2FkZHIgKi8KLSAgICAgICAgaSA9IGVwIC0gZXAwOwotICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2ldOwotICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIGl4ID0gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkciwgaGFzaHBvcyk7CisgICAgICAgIGlmIChpeCA+PSAwKSB7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaXg7CiAgICAgfQorCiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICB9CisgICAgYXNzZXJ0KGl4ID49IDApOworICAgIGVwID0gJmVwMFtpeF07CisgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5IHx8CiAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgcmV0dXJuIGl4OwogICAgIH0KICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICBpID0gbWFzayAmICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSk7CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KGl4ID49IDApOworICAgICAgICBlcCA9ICZlcDBbaXhdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5IHx8CiAgICAgICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2kgJiBtYXNrXTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpeF07CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KICAgICB9CiAgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLwpAQCAtNzA3LDI3ICsxMDI1LDI3IEBACiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKICAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIFB5X3NzaXplX3QgaSwgbnVtZW50cmllczsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwOwogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChvcCkgfHwgIV9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG9wKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopIG9wOwotICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBudW1lbnRyaWVzID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWVudHJpZXM7IGkrKykgewogICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IG1wLT5tYV92YWx1ZXNbaV0pID09IE5VTEwpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIGFzc2VydCghX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKAotICAgICAgICAgICAgICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXkpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIV9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRChlcDBbaV0ubWVfa2V5KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1lbnRyaWVzOyBpKyspIHsKICAgICAgICAgICAgIGlmICgodmFsdWUgPSBlcDBbaV0ubWVfdmFsdWUpID09IE5VTEwpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKHZhbHVlKSB8fApAQCAtNzM5LDMzICsxMDU3LDM0IEBACiB9CiAKIC8qIEludGVybmFsIGZ1bmN0aW9uIHRvIGZpbmQgc2xvdCBmb3IgYW4gaXRlbSBmcm9tIGl0cyBoYXNoCi0gKiB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGtleSBpcyBub3QgcHJlc2VudCBpbiB0aGUgZGljdC4KLSAqLwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKLWZpbmRfZW1wdHlfc2xvdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQotewotICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwotICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGtleSBpcyBub3QgcHJlc2VudCBpbiB0aGUgZGljdC4KIAorICAgVGhlIGRpY3QgbXVzdCBiZSBjb21iaW5lZC4gKi8KK3N0YXRpYyB2b2lkCitmaW5kX2VtcHR5X3Nsb3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKK3sKKyAgICBzaXplX3QgaSwgcGVydHVyYjsKKyAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisKKyAgICBhc3NlcnQoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgIGFzc2VydChoYXNocG9zICE9IE5VTEwpOwogICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpCiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKICAgICBpID0gaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyBpeCAhPSBES0lYX0VNUFRZOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CiAgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkgJiBtYXNrKTsKICAgICB9CisgICAgZXAgPSAmZXAwW21wLT5tYV9rZXlzLT5ka19uZW50cmllc107CisgICAgKmhhc2hwb3MgPSBpICYgbWFzazsKICAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOwotICAgIGlmIChtcC0+bWFfdmFsdWVzKQotICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2kgJiBtYXNrXTsKLSAgICBlbHNlCi0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICByZXR1cm4gZXA7CisgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogfQogCiBzdGF0aWMgaW50CkBAIC03ODQsNTggKzExMDMsODggQEAKIHsKICAgICBQeU9iamVjdCAqb2xkX3ZhbHVlOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7Ci0gICAgYXNzZXJ0KGtleSAhPSBkdW1teSk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwOworICAgIFB5X3NzaXplX3QgaGFzaHBvcywgaXg7CiAKICAgICBpZiAobXAtPm1hX3ZhbHVlcyAhPSBOVUxMICYmICFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CiAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgZXAgPSBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkgeworICAgIGl4ID0gbXAtPm1hX2tleXMtPmRrX2xvb2t1cChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIHZhbHVlKTsKLSAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAob2xkX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KTsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7IC8qIHdoaWNoICoqQ0FOKiogcmUtZW50ZXIgKHNlZSBpc3N1ZSAjMjI2NTMpICovCisKKyAgICAvKiBXaGVuIGluc2VydGlvbiBvcmRlciBpcyBkaWZmZXJlbnQgZnJvbSBzaGFyZWQga2V5LCB3ZSBjYW4ndCBzaGFyZQorICAgICAqIHRoZSBrZXkgYW55bW9yZS4gIENvbnZlcnQgdGhpcyBpbnN0YW5jZSB0byBjb21iaW5lIHRhYmxlLgorICAgICAqLworICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApICYmCisgICAgICAgICgoaXggPj0gMCAmJiAqdmFsdWVfYWRkciA9PSBOVUxMICYmIG1wLT5tYV91c2VkICE9IGl4KSB8fAorICAgICAgICAgKGl4ID09IERLSVhfRU1QVFkgJiYgbXAtPm1hX3VzZWQgIT0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzKSkpIHsKKyAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgaXggPSBES0lYX0VNUFRZOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7Ci0gICAgICAgICAgICAgICAgLyogTmVlZCB0byByZXNpemUuICovCi0gICAgICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlcCA9IGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAvKiBJbnNlcnQgaW50byBuZXcgc2xvdC4gKi8KKyAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgPD0gMCkgeworICAgICAgICAgICAgLyogTmVlZCB0byByZXNpemUuICovCisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07Ci0gICAgICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA+PSAwKTsKLSAgICAgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7Ci0gICAgICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CisgICAgICAgICAgICBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgfQorICAgICAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgZXAgPSAmZXAwW21wLT5tYV9rZXlzLT5ka19uZW50cmllc107CisgICAgICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcywgbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzKTsKKyAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7CisgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgICAgIGFzc2VydCAobXAtPm1hX3ZhbHVlc1ttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdID09IE5VTEwpOworICAgICAgICAgICAgbXAtPm1hX3ZhbHVlc1ttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdID0gdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7Ci0gICAgICAgICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkdW1teSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGFzc2VydChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVwLT5tZV92YWx1ZSA9IHZhbHVlOwogICAgICAgICB9CiAgICAgICAgIG1wLT5tYV91c2VkKys7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7Ci0gICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgZXAtPm1lX2tleSAhPSBkdW1teSk7CisgICAgICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzKys7CisgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlID49IDApOworICAgICAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKworICAgIGFzc2VydCh2YWx1ZV9hZGRyICE9IE5VTEwpOworCisgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgaWYgKG9sZF92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7CisgICAgICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKKworICAgICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsgLyogd2hpY2ggKipDQU4qKiByZS1lbnRlciAoc2VlIGlzc3VlICMyMjY1MykgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogcGVuZGluZyBzdGF0ZSAqLworICAgIGFzc2VydChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKTsKKyAgICBhc3NlcnQoaXggPT0gbXAtPm1hX3VzZWQpOworICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7CisgICAgbXAtPm1hX3VzZWQrKzsKKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtODUzLDI1ICsxMjAyLDI1IEBACiBpbnNlcnRkaWN0X2NsZWFuKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgc2l6ZV90IGk7Ci0gICAgc2l6ZV90IHBlcnR1cmI7CisgICAgc2l6ZV90IGksIHBlcnR1cmI7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqayA9IG1wLT5tYV9rZXlzOwogICAgIHNpemVfdCBtYXNrID0gKHNpemVfdClES19TSVpFKGspLTE7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZrLT5ka19lbnRyaWVzWzBdOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAKICAgICBhc3NlcnQoay0+ZGtfbG9va3VwICE9IE5VTEwpOwogICAgIGFzc2VydCh2YWx1ZSAhPSBOVUxMKTsKICAgICBhc3NlcnQoa2V5ICE9IE5VTEwpOwotICAgIGFzc2VydChrZXkgIT0gZHVtbXkpOwogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8IGstPmRrX2xvb2t1cCA9PSBsb29rZGljdCk7CiAgICAgaSA9IGhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyBlcC0+bWVfa2V5ICE9IE5VTEw7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOworICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGRrX2dldF9pbmRleChrLCBpKSAhPSBES0lYX0VNUFRZOworICAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgICAgICBpID0gbWFzayAmICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSk7CiAgICAgfQorICAgIGVwID0gJmVwMFtrLT5ka19uZW50cmllc107CiAgICAgYXNzZXJ0KGVwLT5tZV92YWx1ZSA9PSBOVUxMKTsKKyAgICBka19zZXRfaW5kZXgoaywgaSwgay0+ZGtfbmVudHJpZXMpOworICAgIGstPmRrX25lbnRyaWVzKys7CiAgICAgZXAtPm1lX2tleSA9IGtleTsKICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CiAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7CkBAIC04OTAsMTMgKzEyMzksMTMgQEAKIHN0YXRpYyBpbnQKIGRpY3RyZXNpemUoUHlEaWN0T2JqZWN0ICptcCwgUHlfc3NpemVfdCBtaW51c2VkKQogewotICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIG5ld3NpemU7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqb2xka2V5czsKICAgICBQeU9iamVjdCAqKm9sZHZhbHVlczsKLSAgICBQeV9zc2l6ZV90IGksIG9sZHNpemU7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKIAotLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCi0gICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7CisgICAgLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCisgICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkU7CiAgICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7CiAgICAgICAgICBuZXdzaXplIDw8PSAxKQogICAgICAgICA7CkBAIC05MTQsNTQgKzEyNjMsNDEgQEAKICAgICB9CiAgICAgaWYgKG9sZGtleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkKICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OwotICAgIG9sZHNpemUgPSBES19TSVpFKG9sZGtleXMpOwogICAgIG1wLT5tYV92YWx1ZXMgPSBOVUxMOwotICAgIC8qIElmIGVtcHR5IHRoZW4gbm90aGluZyB0byBjb3B5IHNvIGp1c3QgcmV0dXJuICovCi0gICAgaWYgKG9sZHNpemUgPT0gMSkgewotICAgICAgICBhc3NlcnQob2xka2V5cyA9PSBQeV9FTVBUWV9LRVlTKTsKLSAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgZXAwID0gREtfRU5UUklFUyhvbGRrZXlzKTsKICAgICAvKiBNYWluIGxvb3AgYmVsb3cgYXNzdW1lcyB3ZSBjYW4gdHJhbnNmZXIgcmVmY291bnQgdG8gbmV3IGtleXMKICAgICAgKiBhbmQgdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gbWVfdmFsdWUuCiAgICAgICogSW5jcmVtZW50IHJlZi1jb3VudHMgYW5kIGNvcHkgdmFsdWVzIGhlcmUgdG8gY29tcGVuc2F0ZQogICAgICAqIFRoaXMgKHJlc2l6aW5nIGEgc3BsaXQgdGFibGUpIHNob3VsZCBiZSByZWxhdGl2ZWx5IHJhcmUgKi8KICAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xka2V5cy0+ZGtfbmVudHJpZXM7IGkrKykgewogICAgICAgICAgICAgaWYgKG9sZHZhbHVlc1tpXSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKLSAgICAgICAgICAgICAgICBvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlID0gb2xkdmFsdWVzW2ldOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihlcDBbaV0ubWVfa2V5KTsKKyAgICAgICAgICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBvbGR2YWx1ZXNbaV07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgLyogTWFpbiBsb29wICovCi0gICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgewotICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmb2xka2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgb2xka2V5cy0+ZGtfbmVudHJpZXM7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmZXAwW2ldOwogICAgICAgICBpZiAoZXAtPm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IGR1bW15KTsKICAgICAgICAgICAgIGluc2VydGRpY3RfY2xlYW4obXAsIGVwLT5tZV9rZXksIGVwLT5tZV9oYXNoLCBlcC0+bWVfdmFsdWUpOwogICAgICAgICB9CiAgICAgfQogICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUgLT0gbXAtPm1hX3VzZWQ7CiAgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7CiAgICAgICAgIC8qIE5VTEwgb3V0IG1lX3ZhbHVlIHNsb3QgaW4gb2xka2V5cywgaW4gY2FzZSBpdCB3YXMgc2hhcmVkICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspCi0gICAgICAgICAgICBvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlID0gTlVMTDsKLSAgICAgICAgYXNzZXJ0KG9sZHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpOwotICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xka2V5cy0+ZGtfbmVudHJpZXM7IGkrKykKKyAgICAgICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7CiAgICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICAgICAgaWYgKG9sZHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpIHsKKyAgICAgICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19sb29rdXAgIT0gbG9va2RpY3Rfc3BsaXQpOwotICAgICAgICBpZiAob2xka2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSkgewotICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZvbGRrZXlzLT5ka19lbnRyaWVzWzBdOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChlcDBbaV0ubWVfa2V5ID09IGR1bW15KQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19yZWZjbnQgPT0gMSk7Ci0gICAgICAgIERLX0RFQlVHX0RFQ1JFRiBQeU1lbV9GUkVFKG9sZGtleXMpOworICAgICAgICBES19ERUJVR19ERUNSRUYgUHlPYmplY3RfRlJFRShvbGRrZXlzKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC05OTEsOCArMTMyNyw4IEBACiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KTsKICAgICAgICAgLyogQ29weSB2YWx1ZXMgaW50byBhIG5ldyBhcnJheSAqLwotICAgICAgICBlcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgICAgIHNpemUgPSBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShtcC0+bWFfa2V5cykpOwogICAgICAgICB2YWx1ZXMgPSBuZXdfdmFsdWVzKHNpemUpOwogICAgICAgICBpZiAodmFsdWVzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwKQEAgLTEwMTUsNyArMTM1MSw3IEBACiB7CiAgICAgUHlfc3NpemVfdCBuZXdzaXplOwogICAgIFB5RGljdEtleXNPYmplY3QgKm5ld19rZXlzOwotICAgIGZvciAobmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEOworICAgIGZvciAobmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFOwogICAgICAgICAgbmV3c2l6ZSA8PSBtaW51c2VkICYmIG5ld3NpemUgPiAwOwogICAgICAgICAgbmV3c2l6ZSA8PD0gMSkKICAgICAgICAgOwpAQCAtMTAzOSw4ICsxMzc1LDggQEAKIFB5RGljdF9HZXRJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKQEAgLTEwNjYsMTUgKzE0MDIsMTUgQEAKICAgICAgICAgLyogcHJlc2VydmUgdGhlIGV4aXN0aW5nIGV4Y2VwdGlvbiAqLwogICAgICAgICBQeU9iamVjdCAqZXJyX3R5cGUsICplcnJfdmFsdWUsICplcnJfdGI7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZlcnJfdHlwZSwgJmVycl92YWx1ZSwgJmVycl90Yik7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOwogICAgICAgICAvKiBpZ25vcmUgZXJyb3JzICovCiAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyX3R5cGUsIGVycl92YWx1ZSwgZXJyX3RiKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpCisgICAgICAgIGlmIChpeCA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpIHsKKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgICAgICBpZiAoaXggPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTEwODUsOCArMTQyMSw4IEBACiBQeU9iamVjdCAqCiBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCkBAIC0xMTAzLDE1ICsxNDM5LDE1IEBACiAgICAgICAgIC8qIHByZXNlcnZlIHRoZSBleGlzdGluZyBleGNlcHRpb24gKi8KICAgICAgICAgUHlPYmplY3QgKmVycl90eXBlLCAqZXJyX3ZhbHVlLCAqZXJyX3RiOwogICAgICAgICBQeUVycl9GZXRjaCgmZXJyX3R5cGUsICZlcnJfdmFsdWUsICZlcnJfdGIpOwotICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKICAgICAgICAgLyogaWdub3JlIGVycm9ycyAqLwogICAgICAgICBQeUVycl9SZXN0b3JlKGVycl90eXBlLCBlcnJfdmFsdWUsIGVycl90Yik7Ci0gICAgICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICBpZiAoZXAgPT0gTlVMTCkgeworICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTExMjYsOSArMTQ2Miw5IEBACiBQeU9iamVjdCAqCiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBQeURpY3RPYmplY3QqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgewpAQCAtMTE0NCw4ICsxNDgwLDggQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4IDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQpAQCAtMTE2MCwzOSArMTQ5Niw0MCBAQAogICAgIHJldHVybiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihkcCwga3YpOwogfQogCi0vKiBGYXN0IHZlcnNpb24gb2YgZ2xvYmFsIHZhbHVlIGxvb2t1cC4KKy8qIEZhc3QgdmVyc2lvbiBvZiBnbG9iYWwgdmFsdWUgbG9va3VwIChMT0FEX0dMT0JBTCkuCiAgKiBMb29rdXAgaW4gZ2xvYmFscywgdGhlbiBidWlsdGlucy4KKyAqCisgKiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkIChleDogY29tcHV0aW5nIHRoZQorICoga2V5IGhhc2ggZmFpbGVkLCBrZXkgY29tcGFyaXNvbiBmYWlsZWQsIC4uLikuIFJldHVybiBOVUxMIGlmIHRoZSBrZXkgZG9lc24ndAorICogZXhpc3QuIFJldHVybiB0aGUgdmFsdWUgaWYgdGhlIGtleSBleGlzdHMuCiAgKi8KIFB5T2JqZWN0ICoKIF9QeURpY3RfTG9hZEdsb2JhbChQeURpY3RPYmplY3QgKmdsb2JhbHMsIFB5RGljdE9iamVjdCAqYnVpbHRpbnMsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgUHlPYmplY3QgKng7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwotICAgICAgICBQeV9oYXNoX3QgaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKWtleSktPmhhc2g7Ci0gICAgICAgIGlmIChoYXNoICE9IC0xKSB7Ci0gICAgICAgICAgICBQeURpY3RLZXlFbnRyeSAqZTsKLSAgICAgICAgICAgIGUgPSBnbG9iYWxzLT5tYV9rZXlzLT5ka19sb29rdXAoZ2xvYmFscywga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ID0gKnZhbHVlX2FkZHI7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAgZSA9IGJ1aWx0aW5zLT5tYV9rZXlzLT5ka19sb29rdXAoYnVpbHRpbnMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9ICp2YWx1ZV9hZGRyOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KKyAgICBQeV9zc2l6ZV90IGl4OworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkKKyAgICB7CisgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHggPSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilnbG9iYWxzLCBrZXkpOwotICAgIGlmICh4ICE9IE5VTEwpCi0gICAgICAgIHJldHVybiB4OwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorCisgICAgLyogbmFtZXNwYWNlIDE6IGdsb2JhbHMgKi8KKyAgICBpeCA9IGdsb2JhbHMtPm1hX2tleXMtPmRrX2xvb2t1cChnbG9iYWxzLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKWJ1aWx0aW5zLCBrZXkpOworICAgIGlmIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpCisgICAgICAgIHJldHVybiAqdmFsdWVfYWRkcjsKKworICAgIC8qIG5hbWVzcGFjZSAyOiBidWlsdGlucyAqLworICAgIGl4ID0gYnVpbHRpbnMtPm1hX2tleXMtPmRrX2xvb2t1cChidWlsdGlucywga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4IDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQogCiAvKiBDQVVUSU9OOiBQeURpY3RfU2V0SXRlbSgpIG11c3QgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgcmVzaXplIHRoZQpAQCAtMTI0NywxNiArMTU4NCw4IEBACiBpbnQKIFB5RGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKLSAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKLSAgICBQeU9iamVjdCAqb2xkX2tleSwgKm9sZF92YWx1ZTsKLSAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKLSAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgYXNzZXJ0KGtleSk7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CiAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CkBAIC0xMjY0LDMxICsxNTkzLDE0IEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoKnZhbHVlX2FkZHIgPT0gTlVMTCkgewotICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKLSAgICAqdmFsdWVfYWRkciA9IE5VTEw7Ci0gICAgbXAtPm1hX3VzZWQtLTsKLSAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOwotICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2gob3AsIGtleSwgaGFzaCk7CiB9CiAKIGludAogX1B5RGljdF9EZWxJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogeworICAgIFB5X3NzaXplX3QgaGFzaHBvcywgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKm9sZF9rZXksICpvbGRfdmFsdWU7CkBAIC0xMzAxLDI0ICsxNjEzLDM4IEBACiAgICAgYXNzZXJ0KGtleSk7CiAgICAgYXNzZXJ0KGhhc2ggIT0gLTEpOwogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKCp2YWx1ZV9hZGRyID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CiAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGFzc2VydChka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGhhc2hwb3MpID09IGl4KTsKKworICAgIC8vIFNwbGl0IHRhYmxlIGRvZXNuJ3QgYWxsb3cgZGVsZXRpb24uICBDb21iaW5lIGl0LgorICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBES19TSVpFKG1wLT5tYV9rZXlzKSkpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgfQorCiAgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgYXNzZXJ0KG9sZF92YWx1ZSAhPSBOVUxMKTsKICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgfQorICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgZXAgPSAmREtfRU5UUklFUyhtcC0+bWFfa2V5cylbaXhdOworICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcywgREtJWF9EVU1NWSk7CisgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OworICAgIGVwLT5tZV9rZXkgPSBOVUxMOworICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsKKworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTM0Miw5ICsxNjY4LDEwIEBACiAgICAgbXAtPm1hX2tleXMgPSBQeV9FTVBUWV9LRVlTOwogICAgIG1wLT5tYV92YWx1ZXMgPSBlbXB0eV92YWx1ZXM7CiAgICAgbXAtPm1hX3VzZWQgPSAwOworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CiAgICAgLyogLi4udGhlbiBjbGVhciB0aGUga2V5cyBhbmQgdmFsdWVzICovCiAgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7Ci0gICAgICAgIG4gPSBES19TSVpFKG9sZGtleXMpOworICAgICAgICBuID0gb2xka2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgICBQeV9DTEVBUihvbGR2YWx1ZXNbaV0pOwogICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOwpAQCAtMTM1NCwzOCArMTY4MSw0MiBAQAogICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19yZWZjbnQgPT0gMSk7CiAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOwogICAgIH0KKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiB9CiAKIC8qIFJldHVybnMgLTEgaWYgbm8gbW9yZSBpdGVtcyAob3Igb3AgaXMgbm90IGEgZGljdCksCiAgKiBpbmRleCBvZiBpdGVtIG90aGVyd2lzZS4gU3RvcmVzIHZhbHVlIGluIHB2YWx1ZQogICovCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK3N0YXRpYyBpbmxpbmUgUHlfc3NpemVfdAogZGljdF9uZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqKnB2YWx1ZSkKIHsKLSAgICBQeV9zc2l6ZV90IG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IG47CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKLQorICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyID0gTlVMTDsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOworCisgICAgbiA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykgewotICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICBmb3IgKDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV92YWx1ZXNbaV07CisgICAgICAgICAgICBpZiAoKnZhbHVlX3B0ciAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgZm9yICg7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIHZhbHVlX3B0ciA9ICZlcDBbaV0ubWVfdmFsdWU7CisgICAgICAgICAgICBpZiAoKnZhbHVlX3B0ciAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQotICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgewotICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwotICAgICAgICBpKys7Ci0gICAgfQotICAgIGlmIChpID4gbWFzaykKKyAgICBpZiAoaSA+PSBuKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKHB2YWx1ZSkKICAgICAgICAgKnB2YWx1ZSA9ICp2YWx1ZV9wdHI7CkBAIC0xNDEwLDE0ICsxNzQxLDE0IEBACiBpbnQKIFB5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LCBQeU9iamVjdCAqKnB2YWx1ZSkKIHsKLSAgICBQeURpY3RPYmplY3QgKm1wOworICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0KilvcDsKICAgICBQeV9zc2l6ZV90IGkgPSBkaWN0X25leHQob3AsICpwcG9zLCBwdmFsdWUpOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CiAgICAgKnBwb3MgPSBpKzE7CiAgICAgaWYgKHBrZXkpCi0gICAgICAgICpwa2V5ID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OworICAgICAgICAqcGtleSA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpW2ldLm1lX2tleTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMTQyOSwxNCArMTc2MCwxNiBAQAogICAgICAgICAgICAgIFB5T2JqZWN0ICoqcHZhbHVlLCBQeV9oYXNoX3QgKnBoYXNoKQogewogICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKICAgICBQeV9zc2l6ZV90IGkgPSBkaWN0X25leHQob3AsICpwcG9zLCBwdmFsdWUpOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisgICAgZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAgICAgKnBwb3MgPSBpKzE7Ci0gICAgKnBoYXNoID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfaGFzaDsKKyAgICAqcGhhc2ggPSBlcDBbaV0ubWVfaGFzaDsKICAgICBpZiAocGtleSkKLSAgICAgICAgKnBrZXkgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CisgICAgICAgICpwa2V5ID0gZXAwW2ldLm1lX2tleTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMTQ0NSw2ICsxNzc4LDcgQEAKIF9QeURpY3RfUG9wKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICpkZWZsdCkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGl4LCBoYXNocG9zOwogICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OwogICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CkBAIC0xNDYzLDExICsxNzk3LDEwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAob2xkX3ZhbHVlID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChkZWZsdCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmx0KTsKICAgICAgICAgICAgIHJldHVybiBkZWZsdDsKQEAgLTE0NzUsMTUgKzE4MDgsMjkgQEAKICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKworICAgIC8vIFNwbGl0IHRhYmxlIGRvZXNuJ3QgYWxsb3cgZGVsZXRpb24uICBDb21iaW5lIGl0LgorICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBES19TSVpFKG1wLT5tYV9rZXlzKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIGFzc2VydChpeCA+PSAwKTsKKyAgICB9CisKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBhc3NlcnQob2xkX3ZhbHVlICE9IE5VTEwpOwogICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgewotICAgICAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7Ci0gICAgICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgICAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKLSAgICB9CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICBka19zZXRfaW5kZXgobXAtPm1hX2tleXMsIGhhc2hwb3MsIERLSVhfRFVNTVkpOworICAgIGVwID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2l4XTsKKyAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CisgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7CisgICAgZXAtPm1lX2tleSA9IE5VTEw7CisgICAgUHlfREVDUkVGKG9sZF9rZXkpOworCisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiBvbGRfdmFsdWU7CiB9CiAKQEAgLTE1MDgsNyArMTg1NSw3IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7CiAKLSAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBQeV9TSVpFKGl0ZXJhYmxlKSkpIHsKKyAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBFU1RJTUFURV9TSVpFKFB5X1NJWkUoaXRlcmFibGUpKSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0xNTI3LDcgKzE4NzQsNyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOwogCi0gICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgUHlTZXRfR0VUX1NJWkUoaXRlcmFibGUpKSkgeworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIEVTVElNQVRFX1NJWkUoUHlTZXRfR0VUX1NJWkUoaXRlcmFibGUpKSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0xNTg3LDcgKzE5MzQsNyBAQAogICAgIFB5X1RSQVNIQ0FOX1NBRkVfQkVHSU4obXApCiAgICAgaWYgKHZhbHVlcyAhPSBOVUxMKSB7CiAgICAgICAgIGlmICh2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbHVlc1tpXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmcmVlX3ZhbHVlcyh2YWx1ZXMpOwpAQCAtMTY5OSw4ICsyMDQ2LDggQEAKIGRpY3Rfc3Vic2NyaXB0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpCiB7CiAgICAgUHlPYmplY3QgKnY7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CkBAIC0xNzA5LDExICsyMDU2LDEwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG1wKSkgewogICAgICAgICAgICAgLyogTG9vayB1cCBfX21pc3NpbmdfXyBtZXRob2QgaWYgd2UncmUgYSBzdWJjbGFzcy4gKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICptaXNzaW5nLCAqcmVzOwpAQCAtMTczMSw4ICsyMDc3LDggQEAKICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICB2ID0gKnZhbHVlX2FkZHI7CisgICAgUHlfSU5DUkVGKHYpOwogICAgIHJldHVybiB2OwogfQogCkBAIC0xNzcyLDggKzIxMTgsOCBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQotICAgIGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBlcCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIHNpemUgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKICAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwpAQCAtMTgwMCw2ICsyMTQ2LDcgQEAKIHsKICAgICBQeU9iamVjdCAqdjsKICAgICBQeV9zc2l6ZV90IGksIGo7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgbiwgb2Zmc2V0OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCkBAIC0xODE1LDEzICsyMTYyLDE0IEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgc2l6ZSA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykgewogICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWU7CisgICAgICAgIHZhbHVlX3B0ciA9ICZlcFswXS5tZV92YWx1ZTsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKICAgICB9CiAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBzaXplOyBpKyspIHsKQEAgLTE4NzIsOCArMjIyMCw4IEBACiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQogICAgIC8qIE5vdGhpbmcgd2UgZG8gYmVsb3cgbWFrZXMgYW55IGZ1bmN0aW9uIGNhbGxzLiAqLwotICAgIGVwID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXM7Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgc2l6ZSA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykgewogICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CkBAIC0xOTE3LDcgKzIyNjUsOCBAQAogfQogCiBzdGF0aWMgaW50Ci1kaWN0X3VwZGF0ZV9jb21tb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcywgY2hhciAqbWV0aG5hbWUpCitkaWN0X3VwZGF0ZV9jb21tb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRobmFtZSkKIHsKICAgICBQeU9iamVjdCAqYXJnID0gTlVMTDsKICAgICBpbnQgcmVzdWx0ID0gMDsKQEAgLTIwMTksNiArMjM2OCw3IEBACiAgICAgfQogCiAgICAgaSA9IDA7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeSgoUHlEaWN0T2JqZWN0ICopZCkpOwogICAgIGdvdG8gUmV0dXJuOwogRmFpbDoKICAgICBQeV9YREVDUkVGKGl0ZW0pOwpAQCAtMjAzMCwxNyArMjM4MCwxMyBAQAogfQogCiBpbnQKLVB5RGljdF9VcGRhdGUoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiKQotewotICAgIHJldHVybiBQeURpY3RfTWVyZ2UoYSwgYiwgMSk7Ci19Ci0KLWludAotUHlEaWN0X01lcmdlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQorZGljdF9tZXJnZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wLCAqb3RoZXI7CiAgICAgUHlfc3NpemVfdCBpLCBuOwotICAgIFB5RGljdEtleUVudHJ5ICplbnRyeTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cnksICplcDA7CisKKyAgICBhc3NlcnQoMCA8PSBvdmVycmlkZSAmJiBvdmVycmlkZSA8PSAyKTsKIAogICAgIC8qIFdlIGFjY2VwdCBmb3IgdGhlIGFyZ3VtZW50IGVpdGhlciBhIGNvbmNyZXRlIGRpY3Rpb25hcnkgb2JqZWN0LAogICAgICAqIG9yIGFuIGFic3RyYWN0ICJtYXBwaW5nIiBvYmplY3QuICBGb3IgdGhlIGZvcm1lciwgd2UgY2FuIGRvCkBAIC0yMDcwLDEwICsyNDE2LDExIEBACiAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlICogMyA8IG90aGVyLT5tYV91c2VkICogMikKICAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCAobXAtPm1hX3VzZWQgKyBvdGhlci0+bWFfdXNlZCkqMikgIT0gMCkKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUob3RoZXItPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMob3RoZXItPm1hX2tleXMpOworICAgICAgICBmb3IgKGkgPSAwLCBuID0gb3RoZXItPm1hX2tleXMtPmRrX25lbnRyaWVzOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CiAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICAgICAgICAgIGVudHJ5ID0gJm90aGVyLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldOworICAgICAgICAgICAgZW50cnkgPSAmZXAwW2ldOwogICAgICAgICAgICAga2V5ID0gZW50cnktPm1lX2tleTsKICAgICAgICAgICAgIGhhc2ggPSBlbnRyeS0+bWVfaGFzaDsKICAgICAgICAgICAgIGlmIChvdGhlci0+bWFfdmFsdWVzKQpAQCAtMjA4NSwxNCArMjQzMiwyMCBAQAogICAgICAgICAgICAgICAgIGludCBlcnIgPSAwOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlIHx8IFB5RGljdF9HZXRJdGVtKGEsIGtleSkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBpZiAob3ZlcnJpZGUgPT0gMSB8fCBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKGEsIGtleSwgaGFzaCkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZXJyID0gaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob3ZlcnJpZGUgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKIAotICAgICAgICAgICAgICAgIGlmIChuICE9IERLX1NJWkUob3RoZXItPm1hX2tleXMpKSB7CisgICAgICAgICAgICAgICAgaWYgKG4gIT0gb3RoZXItPm1hX2tleXMtPmRrX25lbnRyaWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdCBtdXRhdGVkIGR1cmluZyB1cGRhdGUiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjEyMSw3ICsyNDc0LDEzIEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgZm9yIChrZXkgPSBQeUl0ZXJfTmV4dChpdGVyKTsga2V5OyBrZXkgPSBQeUl0ZXJfTmV4dChpdGVyKSkgewotICAgICAgICAgICAgaWYgKCFvdmVycmlkZSAmJiBQeURpY3RfR2V0SXRlbShhLCBrZXkpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChvdmVycmlkZSAhPSAxICYmIFB5RGljdF9HZXRJdGVtKGEsIGtleSkgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmIChvdmVycmlkZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMjE0NCw5ICsyNTAzLDI5IEBACiAgICAgICAgICAgICAvKiBJdGVyYXRvciBjb21wbGV0ZWQsIHZpYSBlcnJvciAqLwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KChQeURpY3RPYmplY3QgKilhKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK2ludAorUHlEaWN0X1VwZGF0ZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIpCit7CisgICAgcmV0dXJuIGRpY3RfbWVyZ2UoYSwgYiwgMSk7Cit9CisKK2ludAorUHlEaWN0X01lcmdlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQoreworICAgIC8qIFhYWCBEZXByZWNhdGUgb3ZlcnJpZGUgbm90IGluICgwLCAxKS4gKi8KKyAgICByZXR1cm4gZGljdF9tZXJnZShhLCBiLCBvdmVycmlkZSAhPSAwKTsKK30KKworaW50CitfUHlEaWN0X01lcmdlRXgoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ZlcnJpZGUpCit7CisgICAgcmV0dXJuIGRpY3RfbWVyZ2UoYSwgYiwgb3ZlcnJpZGUpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9jb3B5KFB5RGljdE9iamVjdCAqbXApCiB7CkBAIC0yMTY3LDcgKzI1NDYsOSBAQAogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW87CiAgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKICAgICAgICAgUHlEaWN0T2JqZWN0ICpzcGxpdF9jb3B5OwotICAgICAgICBQeU9iamVjdCAqKm5ld3ZhbHVlcyA9IG5ld192YWx1ZXMoREtfU0laRShtcC0+bWFfa2V5cykpOworICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShtcC0+bWFfa2V5cykpOworICAgICAgICBQeU9iamVjdCAqKm5ld3ZhbHVlczsKKyAgICAgICAgbmV3dmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICAgICAgaWYgKG5ld3ZhbHVlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHNwbGl0X2NvcHkgPSBQeU9iamVjdF9HQ19OZXcoUHlEaWN0T2JqZWN0LCAmUHlEaWN0X1R5cGUpOwpAQCAtMjE3OSw3ICsyNTYwLDcgQEAKICAgICAgICAgc3BsaXRfY29weS0+bWFfa2V5cyA9IG1wLT5tYV9rZXlzOwogICAgICAgICBzcGxpdF9jb3B5LT5tYV91c2VkID0gbXAtPm1hX3VzZWQ7CiAgICAgICAgIERLX0lOQ1JFRihtcC0+bWFfa2V5cyk7Ci0gICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwLCBuID0gc2l6ZTsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXTsKICAgICAgICAgICAgIFB5X1hJTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgc3BsaXRfY29weS0+bWFfdmFsdWVzW2ldID0gdmFsdWU7CkBAIC0yMjUwLDggKzI2MzEsOCBAQAogICAgICAgICAvKiBjYW4ndCBiZSBlcXVhbCBpZiAjIG9mIGVudHJpZXMgZGlmZmVyICovCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIFNhbWUgIyBvZiBlbnRyaWVzIC0tIGNoZWNrIGFsbCBvZiAnZW0uICBFeGl0IGVhcmx5IG9uIGFueSBkaWZmLiAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBES19TSVpFKGEtPm1hX2tleXMpOyBpKyspIHsKLSAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJmEtPm1hX2tleXMtPmRrX2VudHJpZXNbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGEtPm1hX2tleXMtPmRrX25lbnRyaWVzOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJkRLX0VOVFJJRVMoYS0+bWFfa2V5cylbaV07CiAgICAgICAgIFB5T2JqZWN0ICphdmFsOwogICAgICAgICBpZiAoYS0+bWFfdmFsdWVzKQogICAgICAgICAgICAgYXZhbCA9IGEtPm1hX3ZhbHVlc1tpXTsKQEAgLTIyNjgsNyArMjY0OSw3IEBACiAgICAgICAgICAgICAvKiBkaXR0byBmb3Iga2V5ICovCiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgIC8qIHJldXNlIHRoZSBrbm93biBoYXNoIHZhbHVlICovCi0gICAgICAgICAgICBpZiAoKGItPm1hX2tleXMtPmRrX2xvb2t1cCkoYiwga2V5LCBlcC0+bWVfaGFzaCwgJnZhZGRyKSA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKChiLT5tYV9rZXlzLT5ka19sb29rdXApKGIsIGtleSwgZXAtPm1lX2hhc2gsICZ2YWRkciwgTlVMTCkgPCAwKQogICAgICAgICAgICAgICAgIGJ2YWwgPSBOVUxMOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJ2YWwgPSAqdmFkZHI7CkBAIC0yMzI2LDcgKzI3MDcsNyBAQAogewogICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAgPSBzZWxmOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMjMzNSwxMCArMjcxNiwxMiBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKCp2YWx1ZV9hZGRyICE9IE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICBQeV9SRVRVUk5fVFJVRTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIzNDgsNyArMjczMSw3IEBACiAgICAgUHlPYmplY3QgKmZhaWxvYmogPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImdldCIsIDEsIDIsICZrZXksICZmYWlsb2JqKSkKQEAgLTIzNjAsMTIgKzI3NDMsMTMgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKHZhbCA9PSBOVUxMKQorICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpCiAgICAgICAgIHZhbCA9IGZhaWxvYmo7CisgICAgZWxzZQorICAgICAgICB2YWwgPSAqdmFsdWVfYWRkcjsKICAgICBQeV9JTkNSRUYodmFsKTsKICAgICByZXR1cm4gdmFsOwogfQpAQCAtMjM3Niw2ICsyNzYwLDcgQEAKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKWQ7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCkBAIC0yMzg5LDI2ICsyNzc0LDQwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2YWwgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAodmFsID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CisgICAgICAgIHZhbCA9IGRlZmF1bHRvYmo7CiAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKICAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLwotICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKKyAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOwogICAgICAgICB9CisgICAgICAgIGl4ID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdG9iaik7CiAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCBkZWZhdWx0b2JqKTsKKyAgICAgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBpeCk7CisgICAgICAgIGVwID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2l4XTsKICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwotICAgICAgICAqdmFsdWVfYWRkciA9IGRlZmF1bHRvYmo7Ci0gICAgICAgIHZhbCA9IGRlZmF1bHRvYmo7CisgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgICAgICBtcC0+bWFfdmFsdWVzW2l4XSA9IHZhbDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVwLT5tZV92YWx1ZSA9IHZhbDsKKyAgICAgICAgfQogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcysrOwogICAgICAgICBtcC0+bWFfdXNlZCsrOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgICAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWwgPSAqdmFsdWVfYWRkcjsKICAgICB9CiAgICAgcmV0dXJuIHZhbDsKIH0KQEAgLTI0NDgsMTEgKzI4NDcsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3BvcGl0ZW0oUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICBQeV9oYXNoX3QgaSA9IDA7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwLCAqZXA7CiAgICAgUHlPYmplY3QgKnJlczsKIAotCiAgICAgLyogQWxsb2NhdGUgdGhlIHJlc3VsdCB0dXBsZSBiZWZvcmUgY2hlY2tpbmcgdGhlIHNpemUuICBCZWxpZXZlIGl0CiAgICAgICogb3Igbm90LCB0aGlzIGFsbG9jYXRpb24gY291bGQgdHJpZ2dlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiB3aGljaAogICAgICAqIGNvdWxkIGVtcHR5IHRoZSBkaWN0LCBzbyBpZiB3ZSBjaGVja2VkIHRoZSBzaXplIGZpcnN0IGFuZCB0aGF0CkBAIC0yNDc5LDYxICsyODc3LDU4IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgIC8qIFNldCBlcCB0byAidGhlIGZpcnN0IiBkaWN0IGVudHJ5IHdpdGggYSB2YWx1ZS4gIFdlIGFidXNlIHRoZSBoYXNoCi0gICAgICogZmllbGQgb2Ygc2xvdCAwIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyOgotICAgICAqIElmIHNsb3QgMCBoYXMgYSB2YWx1ZSwgdXNlIHNsb3QgMC4KLSAgICAgKiBFbHNlIHNsb3QgMCBpcyBiZWluZyB1c2VkIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyLAotICAgICAqIGFuZCB3ZSB1c2UgaXRzIGhhc2ggdmFsdWUgYXMgdGhlIGZpcnN0IGluZGV4IHRvIGxvb2suCi0gICAgICovCi0gICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgICAgICBpID0gZXAtPm1lX2hhc2g7Ci0gICAgICAgIC8qIFRoZSBoYXNoIGZpZWxkIG1heSBiZSBhIHJlYWwgaGFzaCB2YWx1ZSwgb3IgaXQgbWF5IGJlIGEKLSAgICAgICAgICogbGVnaXQgc2VhcmNoIGZpbmdlciwgb3IgaXQgbWF5IGJlIGEgb25jZS1sZWdpdCBzZWFyY2gKLSAgICAgICAgICogZmluZ2VyIHRoYXQncyBvdXQgb2YgYm91bmRzIG5vdyBiZWNhdXNlIGl0IHdyYXBwZWQgYXJvdW5kCi0gICAgICAgICAqIG9yIHRoZSB0YWJsZSBzaHJ1bmsgLS0gc2ltcGx5IG1ha2Ugc3VyZSBpdCdzIGluIGJvdW5kcyBub3cuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoaSA+IG1hc2sgfHwgaSA8IDEpCi0gICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0pLT5tZV92YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgICAgICAgICAgaSA9IDE7Ci0gICAgICAgIH0KKworICAgIC8qIFBvcCBsYXN0IGl0ZW0gKi8KKyAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBpID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzIC0gMTsKKyAgICB3aGlsZSAoaSA+PSAwICYmIGVwMFtpXS5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIGktLTsKICAgICB9CisgICAgYXNzZXJ0KGkgPj0gMCk7CisKKyAgICBlcCA9ICZlcDBbaV07CisgICAgaiA9IGxvb2tkaWN0X2luZGV4KG1wLT5tYV9rZXlzLCBlcC0+bWVfaGFzaCwgaSk7CisgICAgYXNzZXJ0KGogPj0gMCk7CisgICAgYXNzZXJ0KGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaikgPT0gaSk7CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBqLCBES0lYX0RVTU1ZKTsKKwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzLCAwLCBlcC0+bWVfa2V5KTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMSwgZXAtPm1lX3ZhbHVlKTsKLSAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKICAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOworICAgIC8qIFdlIGNhbid0IGRrX3VzYWJsZSsrIHNpbmNlIHRoZXJlIGlzIERLSVhfRFVNTVkgaW4gaW5kaWNlcyAqLworICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyA9IGk7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfaGFzaCA9IGkgKyAxOyAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbnQKIGRpY3RfdHJhdmVyc2UoUHlPYmplY3QgKm9wLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBpZiAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgREtfU0laRShtcC0+bWFfa2V5cyk7IGkrKykgewotICAgICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbXAtPm1hX2tleXM7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSBES19FTlRSSUVTKGtleXMpOworICAgIFB5X3NzaXplX3QgaSwgbiA9IGtleXMtPmRrX25lbnRyaWVzOworCisgICAgaWYgKGtleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZW50cmllc1tpXS5tZV92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfVklTSVQoZW50cmllc1tpXS5tZV92YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfVklTSVQoZW50cmllc1tpXS5tZV9rZXkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV92YWx1ZXNbaV0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfdmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjU1MiwyMyArMjk0NywzMSBAQAogUHlfc3NpemVfdAogX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICBQeV9zc2l6ZV90IHNpemUsIHJlczsKKyAgICBQeV9zc2l6ZV90IHNpemUsIHVzYWJsZSwgcmVzOwogCiAgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIHVzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihzaXplKTsKKwogICAgIHJlcyA9IF9QeU9iamVjdF9TSVpFKFB5X1RZUEUobXApKTsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykKLSAgICAgICAgcmVzICs9IHNpemUgKiBzaXplb2YoUHlPYmplY3QqKTsKKyAgICAgICAgcmVzICs9IHVzYWJsZSAqIHNpemVvZihQeU9iamVjdCopOwogICAgIC8qIElmIHRoZSBkaWN0aW9uYXJ5IGlzIHNwbGl0LCB0aGUga2V5cyBwb3J0aW9uIGlzIGFjY291bnRlZC1mb3IKICAgICAgICBpbiB0aGUgdHlwZSBvYmplY3QuICovCiAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19yZWZjbnQgPT0gMSkKLSAgICAgICAgcmVzICs9IHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArIChzaXplLTEpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICAgICAgcmVzICs9IChzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICAgICAgKyBES19JWFNJWkUobXAtPm1hX2tleXMpICogc2l6ZQorICAgICAgICAgICAgICAgICsgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIHVzYWJsZSk7CiAgICAgcmV0dXJuIHJlczsKIH0KIAogUHlfc3NpemVfdAogX1B5RGljdF9LZXlzU2l6ZShQeURpY3RLZXlzT2JqZWN0ICprZXlzKQogewotICAgIHJldHVybiBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoREtfU0laRShrZXlzKS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgcmV0dXJuIChzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgIC0gUHlfTUVNQkVSX1NJWkUoUHlEaWN0S2V5c09iamVjdCwgZGtfaW5kaWNlcykKKyAgICAgICAgICAgICsgREtfSVhTSVpFKGtleXMpICogREtfU0laRShrZXlzKQorICAgICAgICAgICAgKyBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShrZXlzKSkgKiBzaXplb2YoUHlEaWN0S2V5RW50cnkpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI2NTUsOCArMzA1OCw4IEBACiBQeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CkBAIC0yNjY1LDggKzMwNjgsMTAgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICByZXR1cm4gKGVwID09IE5VTEwpID8gLTEgOiAoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiAvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9Db250YWlucyB1c2VkIHdoZW4gdGhlIGhhc2ggdmFsdWUgaXMgYWxyZWFkeSBrbm93biAqLwpAQCAtMjY3NCwxMSArMzA3OSwxMyBAQAogX1B5RGljdF9Db250YWlucyhQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKyAgICBQeV9zc2l6ZV90IGl4OwogCi0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIHJldHVybiAoZXAgPT0gTlVMTCkgPyAtMSA6ICgqdmFsdWVfYWRkciAhPSBOVUxMKTsKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gKGl4ICE9IERLSVhfRU1QVFkgJiYgKnZhbHVlX2FkZHIgIT0gTlVMTCk7CiB9CiAKIC8qIEhhY2sgdG8gaW1wbGVtZW50ICJrZXkgaW4gZGljdCIgKi8KQEAgLTI3MTIsMTEgKzMxMTksMTMgQEAKICAgICAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soZCk7CiAKICAgICBkLT5tYV91c2VkID0gMDsKLSAgICBkLT5tYV9rZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKTsKKyAgICBkLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgZC0+bWFfa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGQtPm1hX2tleXMgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KGQpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMjk0MCw3ICszMzQ5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHRrZXkoZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBpLCBuLCBvZmZzZXQ7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqazsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKICAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKQEAgLTI5NjUsMTkgKzMzNzQsMTkgQEAKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmstPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIHZhbHVlX3B0ciA9ICZES19FTlRSSUVTKGspW2ldLm1lX3ZhbHVlOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwogICAgIH0KLSAgICBtYXNrID0gREtfU0laRShrKS0xOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgbiA9IGstPmRrX25lbnRyaWVzIC0gMTsKKyAgICB3aGlsZSAoaSA8PSBuICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgewogICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwogICAgICAgICBpKys7CiAgICAgfQogICAgIGRpLT5kaV9wb3MgPSBpKzE7Ci0gICAgaWYgKGkgPiBtYXNrKQorICAgIGlmIChpID4gbikKICAgICAgICAgZ290byBmYWlsOwogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBrLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKKyAgICBrZXkgPSBES19FTlRSSUVTKGspW2ldLm1lX2tleTsKICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICByZXR1cm4ga2V5OwogCkBAIC0zMDIzLDcgKzM0MzIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dHZhbHVlKGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBpLCBuLCBvZmZzZXQ7CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKQEAgLTMwMzksMjEgKzM0NDgsMjEgQEAKICAgICB9CiAKICAgICBpID0gZGktPmRpX3BvczsKLSAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOwotICAgIGlmIChpIDwgMCB8fCBpID4gbWFzaykKKyAgICBuID0gZC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMgLSAxOworICAgIGlmIChpIDwgMCB8fCBpID4gbikKICAgICAgICAgZ290byBmYWlsOwogICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKICAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIHZhbHVlX3B0ciA9ICZES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldLm1lX3ZhbHVlOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwogICAgIH0KLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgIHdoaWxlIChpIDw9IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CiAgICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGkgPiBtYXNrKQorICAgICAgICBpZiAoaSA+IG4pCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogICAgIGRpLT5kaV9wb3MgPSBpKzE7CkBAIC0zMTA0LDcgKzM1MTMsNyBAQAogc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dGl0ZW0oZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKnJlc3VsdCA9IGRpLT5kaV9yZXN1bHQ7Ci0gICAgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBpLCBuLCBvZmZzZXQ7CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKQEAgLTMxMjIsMjEgKzM1MzEsMjEgQEAKICAgICBpID0gZGktPmRpX3BvczsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKLSAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOworICAgIG4gPSBkLT5tYV9rZXlzLT5ka19uZW50cmllcyAtIDE7CiAgICAgaWYgKGQtPm1hX3ZhbHVlcykgewogICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKKyAgICAgICAgdmFsdWVfcHRyID0gJkRLX0VOVFJJRVMoZC0+bWFfa2V5cylbaV0ubWVfdmFsdWU7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CiAgICAgfQotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgd2hpbGUgKGkgPD0gbiAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKICAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKICAgICAgICAgaSsrOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKKyAgICBpZiAoaSA+IG4pCiAgICAgICAgIGdvdG8gZmFpbDsKIAogICAgIGlmIChyZXN1bHQtPm9iX3JlZmNudCA9PSAxKSB7CkBAIC0zMTQ5LDcgKzM1NTgsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKKyAgICBrZXkgPSBES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldLm1lX2tleTsKICAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKQEAgLTM3ODksNyArNDE5OCw3IEBACiBQeURpY3RLZXlzT2JqZWN0ICoKIF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKHZvaWQpCiB7Ci0gICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGtleXMgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0zODI1LDcgKzQyMzQsNyBAQAogCiBpbnQKIF9QeU9iamVjdERpY3RfU2V0SXRlbShQeVR5cGVPYmplY3QgKnRwLCBQeU9iamVjdCAqKmRpY3RwdHIsCi0gICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIGludCByZXM7CkBAIC0zODU0LDcgKzQyNjMsOCBAQAogICAgICAgICAgICAgICAgIC8qIEVpdGhlciB1cGRhdGUgdHAtPmh0X2NhY2hlZF9rZXlzIG9yIGRlbGV0ZSBpdCAqLwogICAgICAgICAgICAgICAgIGlmIChjYWNoZWQtPmRrX3JlZmNudCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IG1ha2Vfa2V5c19zaGFyZWQoZGljdCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIERLX0RFQ1JFRihjYWNoZWQpOwpAQCAtMzg4NCw1MCArNDI5NCwzIEBACiB7CiAgICAgREtfREVDUkVGKGtleXMpOwogfQotCi0KLS8qIEFSR1NVU0VEICovCi1zdGF0aWMgUHlPYmplY3QgKgotZHVtbXlfcmVwcihQeU9iamVjdCAqb3ApCi17Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8ZHVtbXkga2V5PiIpOwotfQotCi0vKiBBUkdVU0VEICovCi1zdGF0aWMgdm9pZAotZHVtbXlfZGVhbGxvYyhQeU9iamVjdCogaWdub3JlKQotewotICAgIC8qIFRoaXMgc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQsIGJ1dCB3ZSBhbHNvIGRvbid0IHdhbnQgdG8gU0VHViBpZgotICAgICAqIHdlIGFjY2lkZW50YWxseSBkZWNyZWYgZHVtbXkta2V5IG91dCBvZiBleGlzdGVuY2UuCi0gICAgICovCi0gICAgUHlfRmF0YWxFcnJvcigiZGVhbGxvY2F0aW5nIDxkdW1teSBrZXk+Iik7Ci19Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgUHlEaWN0RHVtbXlfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQotICAgICI8ZHVtbXkga2V5PiB0eXBlIiwKLSAgICAwLAotICAgIDAsCi0gICAgZHVtbXlfZGVhbGxvYywgICAgICAvKnRwX2RlYWxsb2MqLyAvKm5ldmVyIGNhbGxlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgZHVtbXlfcmVwciwgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyp0cF9mbGFncyAqLwotfTsKLQotc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3QgPSB7Ci0gIF9QeU9iamVjdF9FWFRSQV9JTklUCi0gIDIsICZQeURpY3REdW1teV9UeXBlCi19OwotCmRpZmYgLS1naXQgYS9PYmplY3RzL2VudW1vYmplY3QuYyBiL09iamVjdHMvZW51bW9iamVjdC5jCmluZGV4IGM0NThjZmUuLmRhZTE2NmQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZW51bW9iamVjdC5jCisrKyBiL09iamVjdHMvZW51bW9iamVjdC5jCkBAIC0yNTAsNiArMjUwLDEzIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV2ZXJzZWRfbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHNlcSwgJlB5SWRfX19yZXZlcnNlZF9fKTsKKyAgICBpZiAocmV2ZXJzZWRfbWV0aCA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXZlcnNlZF9tZXRoKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IHJldmVyc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZXEpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChyZXZlcnNlZF9tZXRoICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MocmV2ZXJzZWRfbWV0aCwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXZlcnNlZF9tZXRoKTsKQEAgLTI1OSw4ICsyNjYsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhzZXEpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgdG8gcmV2ZXJzZWQoKSBtdXN0IGJlIGEgc2VxdWVuY2UiKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IHJldmVyc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZXEpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IDk4MWVhZDIuLmY2M2YwNmEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC01OSwxNSArNTksMTEgQEAKIHN0YXRpYyBpbnQKIEJhc2VFeGNlcHRpb25faW5pdChQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcyhQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgdG1wID0gc2VsZi0+YXJnczsKLSAgICBzZWxmLT5hcmdzID0gYXJnczsKLSAgICBQeV9JTkNSRUYoc2VsZi0+YXJncyk7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X0lOQ1JFRihhcmdzKTsKKyAgICBQeV9YU0VUUkVGKHNlbGYtPmFyZ3MsIGFyZ3MpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMzQsNyArMjMwLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIFB5X1hJTkNSRUYodGIpOworICAgIFB5X0lOQ1JFRih0Yik7CiAgICAgUHlfWFNFVFJFRihzZWxmLT50cmFjZWJhY2ssIHRiKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTMyOCwxMSArMzI0LDEwIEBACiAKIC8qIFN0ZWFscyBhIHJlZmVyZW5jZSB0byBjYXVzZSAqLwogdm9pZAotUHlFeGNlcHRpb25fU2V0Q2F1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjYXVzZSkgewotICAgIFB5T2JqZWN0ICpvbGRfY2F1c2UgPSAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZTsKLSAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZSA9IGNhdXNlOworUHlFeGNlcHRpb25fU2V0Q2F1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjYXVzZSkKK3sKICAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5zdXBwcmVzc19jb250ZXh0ID0gMTsKLSAgICBQeV9YREVDUkVGKG9sZF9jYXVzZSk7CisgICAgUHlfWFNFVFJFRigoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZSwgY2F1c2UpOwogfQogCiBQeU9iamVjdCAqCkBAIC0zNDQsMTAgKzMzOSw5IEBACiAKIC8qIFN0ZWFscyBhIHJlZmVyZW5jZSB0byBjb250ZXh0ICovCiB2b2lkCi1QeUV4Y2VwdGlvbl9TZXRDb250ZXh0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY29udGV4dCkgewotICAgIFB5T2JqZWN0ICpvbGRfY29udGV4dCA9ICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNvbnRleHQ7Ci0gICAgKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y29udGV4dCA9IGNvbnRleHQ7Ci0gICAgUHlfWERFQ1JFRihvbGRfY29udGV4dCk7CitQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeV9YU0VUUkVGKCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNvbnRleHQsIGNvbnRleHQpOwogfQogCiAKQEAgLTcxNCw2ICs3MDgsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUuIik7CiAKIC8qCisgKiAgICBNb2R1bGVOb3RGb3VuZEVycm9yIGV4dGVuZHMgSW1wb3J0RXJyb3IKKyAqLworCitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfSW1wb3J0RXJyb3IsIE1vZHVsZU5vdEZvdW5kRXJyb3IsIEltcG9ydEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbm90IGZvdW5kLiIpOworCisvKgogICogICAgT1NFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgogICovCiAKQEAgLTk5Myw3ICs5OTQsNyBAQAogICAgIHJldHVybiAwOwogCiBlcnJvcjoKLSAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTEwNzMsOCArMTA3NCw3IEBACiAgICAgfQogICAgIGlmIChzZWxmLT5teWVycm5vICYmIHNlbGYtPnN0cmVycm9yKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIltFcnJubyAlU10gJVMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bXllcnJubyA/IHNlbGYtPm15ZXJybm86IFB5X05vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm15ZXJybm8sIHNlbGYtPnN0cmVycm9yKTsKICAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9zdHIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOwogfQogCkBAIC0yNDc4LDYgKzI0NzgsNyBAQAogICAgIFBSRV9JTklUKFN5c3RlbUV4aXQpCiAgICAgUFJFX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUFJFX0lOSVQoSW1wb3J0RXJyb3IpCisgICAgUFJFX0lOSVQoTW9kdWxlTm90Rm91bmRFcnJvcikKICAgICBQUkVfSU5JVChPU0Vycm9yKQogICAgIFBSRV9JTklUKEVPRkVycm9yKQogICAgIFBSRV9JTklUKFJ1bnRpbWVFcnJvcikKQEAgLTI1NTAsNiArMjU1MSw3IEBACiAgICAgUE9TVF9JTklUKFN5c3RlbUV4aXQpCiAgICAgUE9TVF9JTklUKEtleWJvYXJkSW50ZXJydXB0KQogICAgIFBPU1RfSU5JVChJbXBvcnRFcnJvcikKKyAgICBQT1NUX0lOSVQoTW9kdWxlTm90Rm91bmRFcnJvcikKICAgICBQT1NUX0lOSVQoT1NFcnJvcikKICAgICBJTklUX0FMSUFTKEVudmlyb25tZW50RXJyb3IsIE9TRXJyb3IpCiAgICAgSU5JVF9BTElBUyhJT0Vycm9yLCBPU0Vycm9yKQpAQCAtMjYxMiw3ICsyNjE0LDkgQEAKICAgICBBRERfRVJSTk8oQmxvY2tpbmdJT0Vycm9yLCBFV09VTERCTE9DSyk7CiAgICAgUE9TVF9JTklUKEJyb2tlblBpcGVFcnJvcik7CiAgICAgQUREX0VSUk5PKEJyb2tlblBpcGVFcnJvciwgRVBJUEUpOworI2lmZGVmIEVTSFVURE9XTgogICAgIEFERF9FUlJOTyhCcm9rZW5QaXBlRXJyb3IsIEVTSFVURE9XTik7CisjZW5kaWYKICAgICBQT1NUX0lOSVQoQ2hpbGRQcm9jZXNzRXJyb3IpOwogICAgIEFERF9FUlJOTyhDaGlsZFByb2Nlc3NFcnJvciwgRUNISUxEKTsKICAgICBQT1NUX0lOSVQoQ29ubmVjdGlvbkFib3J0ZWRFcnJvcik7CmRpZmYgLS1naXQgYS9PYmplY3RzL2ZpbGVvYmplY3QuYyBiL09iamVjdHMvZmlsZW9iamVjdC5jCmluZGV4IDIzNGQwN2UuLmY0NDI0MTggMTAwNjQ0Ci0tLSBhL09iamVjdHMvZmlsZW9iamVjdC5jCisrKyBiL09iamVjdHMvZmlsZW9iamVjdC5jCkBAIC0xMjcsNyArMTI3LDcgQEAKIGludAogUHlGaWxlX1dyaXRlT2JqZWN0KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqZiwgaW50IGZsYWdzKQogewotICAgIFB5T2JqZWN0ICp3cml0ZXIsICp2YWx1ZSwgKmFyZ3MsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKndyaXRlciwgKnZhbHVlLCAqcmVzdWx0OwogICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKIAogICAgIGlmIChmID09IE5VTEwpIHsKQEAgLTE0NiwxNCArMTQ2LDcgQEAKICAgICAgICAgUHlfREVDUkVGKHdyaXRlcik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICBQeV9ERUNSRUYod3JpdGVyKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdCh3cml0ZXIsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbEFyZzEod3JpdGVyLCB2YWx1ZSk7CiAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICBQeV9ERUNSRUYod3JpdGVyKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCmRpZmYgLS1naXQgYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKaW5kZXggZDkyYmVjMy4uMGYzNzYxOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jCisrKyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwpAQCAtMTI0LDExICsxMjQsNDMgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZmxvYXRfZnJvbV9zdHJpbmdfaW5uZXIoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4sIHZvaWQgKm9iaikKK3sKKyAgICBkb3VibGUgeDsKKyAgICBjb25zdCBjaGFyICplbmQ7CisgICAgY29uc3QgY2hhciAqbGFzdCA9IHMgKyBsZW47CisgICAgLyogc3RyaXAgc3BhY2UgKi8KKyAgICB3aGlsZSAocyA8IGxhc3QgJiYgUHlfSVNTUEFDRSgqcykpIHsKKyAgICAgICAgcysrOworICAgIH0KKworICAgIHdoaWxlIChzIDwgbGFzdCAtIDEgJiYgUHlfSVNTUEFDRShsYXN0Wy0xXSkpIHsKKyAgICAgICAgbGFzdC0tOworICAgIH0KKworICAgIC8qIFdlIGRvbid0IGNhcmUgYWJvdXQgb3ZlcmZsb3cgb3IgdW5kZXJmbG93LiAgSWYgdGhlIHBsYXRmb3JtCisgICAgICogc3VwcG9ydHMgdGhlbSwgaW5maW5pdGllcyBhbmQgc2lnbmVkIHplcm9lcyAob24gdW5kZXJmbG93KSBhcmUKKyAgICAgKiBmaW5lLiAqLworICAgIHggPSBQeU9TX3N0cmluZ190b19kb3VibGUocywgKGNoYXIgKiopJmVuZCwgTlVMTCk7CisgICAgaWYgKGVuZCAhPSBsYXN0KSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byBmbG9hdDogIgorICAgICAgICAgICAgICAgICAgICAgIiVSIiwgb2JqKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh4KTsKKyAgICB9Cit9CisKIFB5T2JqZWN0ICoKIFB5RmxvYXRfRnJvbVN0cmluZyhQeU9iamVjdCAqdikKIHsKLSAgICBjb25zdCBjaGFyICpzLCAqbGFzdCwgKmVuZDsKLSAgICBkb3VibGUgeDsKKyAgICBjb25zdCBjaGFyICpzOwogICAgIFB5T2JqZWN0ICpzX2J1ZmZlciA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlfYnVmZmVyIHZpZXcgPSB7TlVMTCwgTlVMTH07CkBAIC0xNjksMjcgKzIwMSw4IEBACiAgICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGxhc3QgPSBzICsgbGVuOwotICAgIC8qIHN0cmlwIHNwYWNlICovCi0gICAgd2hpbGUgKHMgPCBsYXN0ICYmIFB5X0lTU1BBQ0UoKnMpKQotICAgICAgICBzKys7Ci0gICAgd2hpbGUgKHMgPCBsYXN0IC0gMSAmJiBQeV9JU1NQQUNFKGxhc3RbLTFdKSkKLSAgICAgICAgbGFzdC0tOwotICAgIC8qIFdlIGRvbid0IGNhcmUgYWJvdXQgb3ZlcmZsb3cgb3IgdW5kZXJmbG93LiAgSWYgdGhlIHBsYXRmb3JtCi0gICAgICogc3VwcG9ydHMgdGhlbSwgaW5maW5pdGllcyBhbmQgc2lnbmVkIHplcm9lcyAob24gdW5kZXJmbG93KSBhcmUKLSAgICAgKiBmaW5lLiAqLwotICAgIHggPSBQeU9TX3N0cmluZ190b19kb3VibGUocywgKGNoYXIgKiopJmVuZCwgTlVMTCk7Ci0gICAgaWYgKGVuZCAhPSBsYXN0KSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byBmbG9hdDogIgotICAgICAgICAgICAgICAgICAgICAgIiVSIiwgdik7Ci0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgfQotICAgIGVsc2UgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHgpOwotCisgICAgcmVzdWx0ID0gX1B5X3N0cmluZ190b19udW1iZXJfd2l0aF91bmRlcnNjb3JlcyhzLCBsZW4sICJmbG9hdCIsIHYsIHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdF9mcm9tX3N0cmluZ19pbm5lcik7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgUHlfWERFQ1JFRihzX2J1ZmZlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIxNSwzNSArMjI4LDQ5IEBACiBQeUZsb2F0X0FzRG91YmxlKFB5T2JqZWN0ICpvcCkKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm5iOwotICAgIFB5RmxvYXRPYmplY3QgKmZvOworICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgZG91YmxlIHZhbDsKIAotICAgIGlmIChvcCAmJiBQeUZsb2F0X0NoZWNrKG9wKSkKLSAgICAgICAgcmV0dXJuIFB5RmxvYXRfQVNfRE9VQkxFKChQeUZsb2F0T2JqZWN0Kikgb3ApOwotCiAgICAgaWYgKG9wID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmICgobmIgPSBQeV9UWVBFKG9wKS0+dHBfYXNfbnVtYmVyKSA9PSBOVUxMIHx8IG5iLT5uYl9mbG9hdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhIGZsb2F0IGlzIHJlcXVpcmVkIik7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sob3ApKSB7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0FTX0RPVUJMRShvcCk7CisgICAgfQorCisgICAgbmIgPSBQeV9UWVBFKG9wKS0+dHBfYXNfbnVtYmVyOworICAgIGlmIChuYiA9PSBOVUxMIHx8IG5iLT5uYl9mbG9hdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJtdXN0IGJlIHJlYWwgbnVtYmVyLCBub3QgJS41MHMiLAorICAgICAgICAgICAgICAgICAgICAgb3AtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgZm8gPSAoUHlGbG9hdE9iamVjdCopICgqbmItPm5iX2Zsb2F0KSAob3ApOwotICAgIGlmIChmbyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKCFQeUZsb2F0X0NoZWNrKGZvKSkgewotICAgICAgICBQeV9ERUNSRUYoZm8pOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm5iX2Zsb2F0IHNob3VsZCByZXR1cm4gZmxvYXQgb2JqZWN0Iik7CisgICAgcmVzID0gKCpuYi0+bmJfZmxvYXQpIChvcCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgaWYgKCFQeUZsb2F0X0NoZWNrRXhhY3QocmVzKSkgeworICAgICAgICBpZiAoIVB5RmxvYXRfQ2hlY2socmVzKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJS41MHMuX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjUwcykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKS4gICIKKyAgICAgICAgICAgICAgICAiVGhlIGFiaWxpdHkgdG8gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgc3RyaWN0IHN1YmNsYXNzIG9mIGZsb2F0ICIKKyAgICAgICAgICAgICAgICAiaXMgZGVwcmVjYXRlZCwgYW5kIG1heSBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLiIsCisgICAgICAgICAgICAgICAgb3AtPm9iX3R5cGUtPnRwX25hbWUsIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQogCi0gICAgdmFsID0gUHlGbG9hdF9BU19ET1VCTEUoZm8pOwotICAgIFB5X0RFQ1JFRihmbyk7Ci0KKyAgICB2YWwgPSBQeUZsb2F0X0FTX0RPVUJMRShyZXMpOworICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTExOTUsNyArMTIyMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmxvYXRfZnJvbWhleChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJnKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHRfYXNfZmxvYXQsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBkb3VibGUgeDsKICAgICBsb25nIGV4cCwgdG9wX2V4cCwgbHNiLCBrZXlfZGlnaXQ7CiAgICAgY2hhciAqcywgKmNvZWZmX3N0YXJ0LCAqc19zdG9yZSwgKmNvZWZmX2VuZCwgKmV4cF9zdGFydCwgKnNfZW5kOwpAQCAtMTQxMCwxMSArMTQzNywxMCBAQAogICAgICAgICBzKys7CiAgICAgaWYgKHMgIT0gc19lbmQpCiAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgcmVzdWx0X2FzX2Zsb2F0ID0gUHlfQnVpbGRWYWx1ZSgiKGQpIiwgbmVnYXRlID8gLXggOiB4KTsKLSAgICBpZiAocmVzdWx0X2FzX2Zsb2F0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoY2xzLCByZXN1bHRfYXNfZmxvYXQpOwotICAgIFB5X0RFQ1JFRihyZXN1bHRfYXNfZmxvYXQpOworICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZShuZWdhdGUgPyAteCA6IHgpOworICAgIGlmIChjbHMgIT0gKFB5T2JqZWN0ICopJlB5RmxvYXRfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGNscywgcmVzdWx0LCBOVUxMKSk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiAKICAgb3ZlcmZsb3dfZXJyb3I6CkBAIC0xNDUxLDI5ICsxNDc3LDIzIEBACiAgICAgaW50IGV4cG9uZW50OwogICAgIGludCBpOwogCi0gICAgUHlPYmplY3QgKnByZXY7CiAgICAgUHlPYmplY3QgKnB5X2V4cG9uZW50ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbnVtZXJhdG9yID0gTlVMTDsKICAgICBQeU9iamVjdCAqZGVub21pbmF0b3IgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHRfcGFpciA9IE5VTEw7CiAgICAgUHlOdW1iZXJNZXRob2RzICpsb25nX21ldGhvZHMgPSBQeUxvbmdfVHlwZS50cF9hc19udW1iZXI7CiAKLSNkZWZpbmUgSU5QTEFDRV9VUERBVEUob2JqLCBjYWxsKSBcCi0gICAgcHJldiA9IG9iajsgXAotICAgIG9iaiA9IGNhbGw7IFwKLSAgICBQeV9ERUNSRUYocHJldik7IFwKLQogICAgIENPTlZFUlRfVE9fRE9VQkxFKHYsIHNlbGYpOwogCiAgICAgaWYgKFB5X0lTX0lORklOSVRZKHNlbGYpKSB7Ci0gICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgaW5maW5pdHkgdG8gZmxvYXQuYXNfaW50ZWdlcl9yYXRpby4iKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlfSVNfTkFOKHNlbGYpKSB7Ci0gICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgTmFOIHRvIGZsb2F0LmFzX2ludGVnZXJfcmF0aW8uIik7Ci0gICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiYXNfaW50ZWdlcl9yYXRpbyIsIGdvdG8gZXJyb3IpOwpAQCAtMTQ4OSwyOSArMTUwOSwzMSBAQAogICAgICAgIHRvIGJlIHRydW5jYXRlZCBieSBQeUxvbmdfRnJvbURvdWJsZSgpLiAqLwogCiAgICAgbnVtZXJhdG9yID0gUHlMb25nX0Zyb21Eb3VibGUoZmxvYXRfcGFydCk7Ci0gICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSBnb3RvIGVycm9yOworICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBweV9leHBvbmVudCA9IFB5TG9uZ19Gcm9tTG9uZyhQeV9BQlMoZXhwb25lbnQpKTsKKyAgICBpZiAocHlfZXhwb25lbnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIGZvbGQgaW4gMioqZXhwb25lbnQgKi8KLSAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKLSAgICBweV9leHBvbmVudCA9IFB5TG9uZ19Gcm9tTG9uZyhsYWJzKChsb25nKWV4cG9uZW50KSk7Ci0gICAgaWYgKHB5X2V4cG9uZW50ID09IE5VTEwpIGdvdG8gZXJyb3I7Ci0gICAgSU5QTEFDRV9VUERBVEUocHlfZXhwb25lbnQsCi0gICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9sc2hpZnQoZGVub21pbmF0b3IsIHB5X2V4cG9uZW50KSk7Ci0gICAgaWYgKHB5X2V4cG9uZW50ID09IE5VTEwpIGdvdG8gZXJyb3I7CiAgICAgaWYgKGV4cG9uZW50ID4gMCkgewotICAgICAgICBJTlBMQUNFX1VQREFURShudW1lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbXVsdGlwbHkobnVtZXJhdG9yLCBweV9leHBvbmVudCkpOwotICAgICAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIGdvdG8gZXJyb3I7CisgICAgICAgIFB5X1NFVFJFRihudW1lcmF0b3IsCisgICAgICAgICAgICAgICAgICBsb25nX21ldGhvZHMtPm5iX2xzaGlmdChudW1lcmF0b3IsIHB5X2V4cG9uZW50KSk7CisgICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYoZGVub21pbmF0b3IpOwotICAgICAgICBkZW5vbWluYXRvciA9IHB5X2V4cG9uZW50OwotICAgICAgICBweV9leHBvbmVudCA9IE5VTEw7CisgICAgICAgIFB5X1NFVFJFRihkZW5vbWluYXRvciwKKyAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbHNoaWZ0KGRlbm9taW5hdG9yLCBweV9leHBvbmVudCkpOworICAgICAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgcmVzdWx0X3BhaXIgPSBQeVR1cGxlX1BhY2soMiwgbnVtZXJhdG9yLCBkZW5vbWluYXRvcik7CiAKLSN1bmRlZiBJTlBMQUNFX1VQREFURQogZXJyb3I6CiAgICAgUHlfWERFQ1JFRihweV9leHBvbmVudCk7CiAgICAgUHlfWERFQ1JFRihkZW5vbWluYXRvcik7CkBAIC0xOTY2LDggKzE5ODgsMTIwIEBACiAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBfUHlGbG9hdF97UGFjayxVbnBhY2t9ezQsOH0uICBTZWUgZmxvYXRvYmplY3QuaC4KKyAqIF9QeUZsb2F0X3tQYWNrLFVucGFja317Miw0LDh9LiAgU2VlIGZsb2F0b2JqZWN0LmguCisgKiBUbyBtYXRjaCB0aGUgTlBZX0hBTEZfUk9VTkRfVElFU19UT19FVkVOIGJlaGF2aW9yIGluOgorICogaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L2Jsb2IvbWFzdGVyL251bXB5L2NvcmUvc3JjL25weW1hdGgvaGFsZmZsb2F0LmMKKyAqIFdlIHVzZToKKyAqICAgICAgIGJpdHMgPSAodW5zaWduZWQgc2hvcnQpZjsgICAgTm90ZSB0aGUgdHJ1bmNhdGlvbgorICogICAgICAgaWYgKChmIC0gYml0cyA+IDAuNSkgfHwgKGYgLSBiaXRzID09IDAuNSAmJiBiaXRzICUgMikpIHsKKyAqICAgICAgICAgICBiaXRzKys7CisgKiAgICAgICB9CiAgKi8KKworaW50CitfUHlGbG9hdF9QYWNrMihkb3VibGUgeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKQoreworICAgIHVuc2lnbmVkIGNoYXIgc2lnbjsKKyAgICBpbnQgZTsKKyAgICBkb3VibGUgZjsKKyAgICB1bnNpZ25lZCBzaG9ydCBiaXRzOworICAgIGludCBpbmNyID0gMTsKKworICAgIGlmICh4ID09IDAuMCkgeworICAgICAgICBzaWduID0gKGNvcHlzaWduKDEuMCwgeCkgPT0gLTEuMCk7CisgICAgICAgIGUgPSAwOworICAgICAgICBiaXRzID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfSVNfSU5GSU5JVFkoeCkpIHsKKyAgICAgICAgc2lnbiA9ICh4IDwgMC4wKTsKKyAgICAgICAgZSA9IDB4MWY7CisgICAgICAgIGJpdHMgPSAwOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9JU19OQU4oeCkpIHsKKyAgICAgICAgLyogVGhlcmUgYXJlIDIwNDYgZGlzdGluY3QgaGFsZi1wcmVjaXNpb24gTmFOcyAoMTAyMiBzaWduYWxpbmcgYW5kCisgICAgICAgICAgIDEwMjQgcXVpZXQpLCBidXQgdGhlcmUgYXJlIG9ubHkgdHdvIHF1aWV0IE5hTnMgdGhhdCBkb24ndCBhcmlzZSBieQorICAgICAgICAgICBxdWlldGluZyBhIHNpZ25hbGluZyBOYU47IHdlIGdldCB0aG9zZSBieSBzZXR0aW5nIHRoZSB0b3Btb3N0IGJpdAorICAgICAgICAgICBvZiB0aGUgZnJhY3Rpb24gZmllbGQgYW5kIGNsZWFyaW5nIGFsbCBvdGhlciBmcmFjdGlvbiBiaXRzLiBXZQorICAgICAgICAgICBjaG9vc2UgdGhlIG9uZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzaWduLiAqLworICAgICAgICBzaWduID0gKGNvcHlzaWduKDEuMCwgeCkgPT0gLTEuMCk7CisgICAgICAgIGUgPSAweDFmOworICAgICAgICBiaXRzID0gNTEyOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc2lnbiA9ICh4IDwgMC4wKTsKKyAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgIHggPSAteDsKKyAgICAgICAgfQorCisgICAgICAgIGYgPSBmcmV4cCh4LCAmZSk7CisgICAgICAgIGlmIChmIDwgMC41IHx8IGYgPj0gMS4wKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZXhwKCkgcmVzdWx0IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgLyogTm9ybWFsaXplIGYgdG8gYmUgaW4gdGhlIHJhbmdlIFsxLjAsIDIuMCkgKi8KKyAgICAgICAgZiAqPSAyLjA7CisgICAgICAgIGUtLTsKKworICAgICAgICBpZiAoZSA+PSAxNikgeworICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlIDwgLTI1KSB7CisgICAgICAgICAgICAvKiB8eHwgPCAyKiotMjUuIFVuZGVyZmxvdyB0byB6ZXJvLiAqLworICAgICAgICAgICAgZiA9IDAuMDsKKyAgICAgICAgICAgIGUgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGUgPCAtMTQpIHsKKyAgICAgICAgICAgIC8qIHx4fCA8IDIqKi0xNC4gR3JhZHVhbCB1bmRlcmZsb3cgKi8KKyAgICAgICAgICAgIGYgPSBsZGV4cChmLCAxNCArIGUpOworICAgICAgICAgICAgZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiBpZiAoIShlID09IDAgJiYgZiA9PSAwLjApKSAqLyB7CisgICAgICAgICAgICBlICs9IDE1OworICAgICAgICAgICAgZiAtPSAxLjA7IC8qIEdldCByaWQgb2YgbGVhZGluZyAxICovCisgICAgICAgIH0KKworICAgICAgICBmICo9IDEwMjQuMDsgLyogMioqMTAgKi8KKyAgICAgICAgLyogUm91bmQgdG8gZXZlbiAqLworICAgICAgICBiaXRzID0gKHVuc2lnbmVkIHNob3J0KWY7IC8qIE5vdGUgdGhlIHRydW5jYXRpb24gKi8KKyAgICAgICAgYXNzZXJ0KGJpdHMgPCAxMDI0KTsKKyAgICAgICAgYXNzZXJ0KGUgPCAzMSk7CisgICAgICAgIGlmICgoZiAtIGJpdHMgPiAwLjUpIHx8ICgoZiAtIGJpdHMgPT0gMC41KSAmJiAoYml0cyAlIDIgPT0gMSkpKSB7CisgICAgICAgICAgICArK2JpdHM7CisgICAgICAgICAgICBpZiAoYml0cyA9PSAxMDI0KSB7CisgICAgICAgICAgICAgICAgLyogVGhlIGNhcnJ5IHByb3BhZ2F0ZWQgb3V0IG9mIGEgc3RyaW5nIG9mIDEwIDEgYml0cy4gKi8KKyAgICAgICAgICAgICAgICBiaXRzID0gMDsKKyAgICAgICAgICAgICAgICArK2U7CisgICAgICAgICAgICAgICAgaWYgKGUgPT0gMzEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBiaXRzIHw9IChlIDw8IDEwKSB8IChzaWduIDw8IDE1KTsKKworICAgIC8qIFdyaXRlIG91dCByZXN1bHQuICovCisgICAgaWYgKGxlKSB7CisgICAgICAgIHAgKz0gMTsKKyAgICAgICAgaW5jciA9IC0xOworICAgIH0KKworICAgIC8qIEZpcnN0IGJ5dGUgKi8KKyAgICAqcCA9ICh1bnNpZ25lZCBjaGFyKSgoYml0cyA+PiA4KSAmIDB4RkYpOworICAgIHAgKz0gaW5jcjsKKworICAgIC8qIFNlY29uZCBieXRlICovCisgICAgKnAgPSAodW5zaWduZWQgY2hhcikoYml0cyAmIDB4RkYpOworCisgICAgcmV0dXJuIDA7CisKKyAgT3ZlcmZsb3c6CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJmbG9hdCB0b28gbGFyZ2UgdG8gcGFjayB3aXRoIGUgZm9ybWF0Iik7CisgICAgcmV0dXJuIC0xOworfQorCiBpbnQKIF9QeUZsb2F0X1BhY2s0KGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpCiB7CkBAIC0yMjAzLDYgKzIzMzcsNzYgQEAKIH0KIAogZG91YmxlCitfUHlGbG9hdF9VbnBhY2syKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIHNpZ247CisgICAgaW50IGU7CisgICAgdW5zaWduZWQgaW50IGY7CisgICAgZG91YmxlIHg7CisgICAgaW50IGluY3IgPSAxOworCisgICAgaWYgKGxlKSB7CisgICAgICAgIHAgKz0gMTsKKyAgICAgICAgaW5jciA9IC0xOworICAgIH0KKworICAgIC8qIEZpcnN0IGJ5dGUgKi8KKyAgICBzaWduID0gKCpwID4+IDcpICYgMTsKKyAgICBlID0gKCpwICYgMHg3QykgPj4gMjsKKyAgICBmID0gKCpwICYgMHgwMykgPDwgODsKKyAgICBwICs9IGluY3I7CisKKyAgICAvKiBTZWNvbmQgYnl0ZSAqLworICAgIGYgfD0gKnA7CisKKyAgICBpZiAoZSA9PSAweDFmKSB7CisjaWZkZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUgorICAgICAgICBpZiAoZiA9PSAwKSB7CisgICAgICAgICAgICAvKiBJbmZpbml0eSAqLworICAgICAgICAgICAgcmV0dXJuIHNpZ24gPyAtUHlfSFVHRV9WQUwgOiBQeV9IVUdFX1ZBTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIE5hTiAqLworI2lmZGVmIFB5X05BTgorICAgICAgICAgICAgcmV0dXJuIHNpZ24gPyAtUHlfTkFOIDogUHlfTkFOOworI2Vsc2UKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjYW4ndCB1bnBhY2sgSUVFRSA3NTQgTmFOICIKKyAgICAgICAgICAgICAgICAib24gcGxhdGZvcm0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IE5hTnMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyNlbmRpZiAgLyogI2lmZGVmIFB5X05BTiAqLworICAgICAgICB9CisjZWxzZQorICAgICAgICBpZiAoZiA9PSAwKSB7CisgICAgICAgICAgICAvKiBJbmZpbml0eSAqLworICAgICAgICAgICAgcmV0dXJuIF9QeV9kZ19pbmZpbml0eShzaWduKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIE5hTiAqLworICAgICAgICAgICAgcmV0dXJuIF9QeV9kZ19zdGRuYW4oc2lnbik7CisgICAgICAgIH0KKyNlbmRpZiAgLyogI2lmZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIgKi8KKyAgICB9CisKKyAgICB4ID0gKGRvdWJsZSlmIC8gMTAyNC4wOworCisgICAgaWYgKGUgPT0gMCkgeworICAgICAgICBlID0gLTE0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgeCArPSAxLjA7CisgICAgICAgIGUgLT0gMTU7CisgICAgfQorICAgIHggPSBsZGV4cCh4LCBlKTsKKworICAgIGlmIChzaWduKQorICAgICAgICB4ID0gLXg7CisKKyAgICByZXR1cm4geDsKK30KKworZG91YmxlCiBfUHlGbG9hdF9VbnBhY2s0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKIHsKICAgICBpZiAoZmxvYXRfZm9ybWF0ID09IHVua25vd25fZm9ybWF0KSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKaW5kZXggOWFhZGQ2MS4uNjJmOWYzNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jCisrKyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwpAQCAtMTM3LDcgKzEzNyw3IEBACiAgICAgICAgIG5ld19sYXN0aSA9IC0xOwogICAgICAgICBmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8IGxub3RhYl9sZW47IG9mZnNldCArPSAyKSB7CiAgICAgICAgICAgICBhZGRyICs9IGxub3RhYltvZmZzZXRdOwotICAgICAgICAgICAgbGluZSArPSBsbm90YWJbb2Zmc2V0KzFdOworICAgICAgICAgICAgbGluZSArPSAoc2lnbmVkIGNoYXIpbG5vdGFiW29mZnNldCsxXTsKICAgICAgICAgICAgIGlmIChsaW5lID49IG5ld19saW5lbm8pIHsKICAgICAgICAgICAgICAgICBuZXdfbGFzdGkgPSBhZGRyOwogICAgICAgICAgICAgICAgIG5ld19saW5lbm8gPSBsaW5lOwpAQCAtMTg5LDcgKzE4OSw3IEBACiAgICAgbWVtc2V0KGJsb2Nrc3RhY2ssICdcMCcsIHNpemVvZihibG9ja3N0YWNrKSk7CiAgICAgbWVtc2V0KGluX2ZpbmFsbHksICdcMCcsIHNpemVvZihpbl9maW5hbGx5KSk7CiAgICAgYmxvY2tzdGFja190b3AgPSAwOwotICAgIGZvciAoYWRkciA9IDA7IGFkZHIgPCBjb2RlX2xlbjsgYWRkcisrKSB7CisgICAgZm9yIChhZGRyID0gMDsgYWRkciA8IGNvZGVfbGVuOyBhZGRyICs9IHNpemVvZihfUHlfQ09ERVVOSVQpKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgb3AgPSBjb2RlW2FkZHJdOwogICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgICAgIGNhc2UgU0VUVVBfTE9PUDoKQEAgLTI1MSwxMCArMjUxLDYgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBpZiAob3AgPj0gSEFWRV9BUkdVTUVOVCkgewotICAgICAgICAgICAgYWRkciArPSAyOwotICAgICAgICB9CiAgICAgfQogCiAgICAgLyogVmVyaWZ5IHRoYXQgdGhlIGJsb2Nrc3RhY2sgdHJhY2tpbmcgY29kZSBkaWRuJ3QgZ2V0IGxvc3QuICovCkBAIC0yNzcsNyArMjczLDcgQEAKICAgICAgKiBjYW4gdGVsbCB3aGV0aGVyIHRoZSBqdW1wIGdvZXMgaW50byBhbnkgYmxvY2tzIHdpdGhvdXQgY29taW5nIG91dAogICAgICAqIGFnYWluIC0gaW4gdGhhdCBjYXNlIHdlIHJhaXNlIGFuIGV4Y2VwdGlvbiBiZWxvdy4gKi8KICAgICBkZWx0YV9pYmxvY2sgPSAwOwotICAgIGZvciAoYWRkciA9IG1pbl9hZGRyOyBhZGRyIDwgbWF4X2FkZHI7IGFkZHIrKykgeworICAgIGZvciAoYWRkciA9IG1pbl9hZGRyOyBhZGRyIDwgbWF4X2FkZHI7IGFkZHIgKz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBvcCA9IGNvZGVbYWRkcl07CiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTRVRVUF9MT09QOgpAQCAtMjk0LDEwICsyOTAsNiBAQAogICAgICAgICB9CiAKICAgICAgICAgbWluX2RlbHRhX2libG9jayA9IFB5X01JTihtaW5fZGVsdGFfaWJsb2NrLCBkZWx0YV9pYmxvY2spOwotCi0gICAgICAgIGlmIChvcCA+PSBIQVZFX0FSR1VNRU5UKSB7Ci0gICAgICAgICAgICBhZGRyICs9IDI7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvKiBEZXJpdmUgdGhlIGFic29sdXRlIGlibG9jayB2YWx1ZXMgZnJvbSB0aGUgZGVsdGFzLiAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mdW5jb2JqZWN0LmMgYi9PYmplY3RzL2Z1bmNvYmplY3QuYwppbmRleCA0Y2Q2NTkwLi42OWNkOTczIDEwMDY0NAotLS0gYS9PYmplY3RzL2Z1bmNvYmplY3QuYworKysgYi9PYmplY3RzL2Z1bmNvYmplY3QuYwpAQCAtMjQ5LDcgKzI0OSw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9jb2RlKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKICAgICBQeV9zc2l6ZV90IG5mcmVlLCBuY2xvc3VyZTsKIAogICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZi5mdW5jX2NvZGUgb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCkBAIC0yNzAsMTAgKzI2OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICBuY2xvc3VyZSwgbmZyZWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2NvZGU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19jb2RlID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19jb2RlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI4Nyw4ICsyODQsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuZnVuY19uYW1lIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC0yOTYsMTAgKzI5MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfbmFtZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX25hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX25hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzEzLDggKzMwNiw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9xdWFsbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuX19xdWFsbmFtZV9fIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC0zMjIsMTAgKzMxMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX3F1YWxuYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfcXVhbG5hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX3F1YWxuYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM0Myw4ICszMzIsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfZGVmYXVsdHMoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTGVnYWwgdG8gZGVsIGYuZnVuY19kZWZhdWx0cy4KICAgICAgKiBDYW4gb25seSBzZXQgZnVuY19kZWZhdWx0cyB0byBOVUxMIG9yIGEgdHVwbGUuICovCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCkBAIC0zNTQsMTAgKzM0MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19kZWZhdWx0c19fIG11c3QgYmUgc2V0IHRvIGEgdHVwbGUgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfZGVmYXVsdHM7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfZGVmYXVsdHMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19kZWZhdWx0cywgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzUsOCArMzYwLDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X2t3ZGVmYXVsdHMoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCiAgICAgICAgIHZhbHVlID0gTlVMTDsKICAgICAvKiBMZWdhbCB0byBkZWwgZi5mdW5jX2t3ZGVmYXVsdHMuCkBAIC0zODYsMTAgKzM2OSw4IEBACiAgICAgICAgICAgICAiX19rd2RlZmF1bHRzX18gbXVzdCBiZSBzZXQgdG8gYSBkaWN0IG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2t3ZGVmYXVsdHM7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfa3dkZWZhdWx0cyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2t3ZGVmYXVsdHMsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDA4LDggKzM4OSw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9hbm5vdGF0aW9ucyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKICAgICAgICAgdmFsdWUgPSBOVUxMOwogICAgIC8qIExlZ2FsIHRvIGRlbCBmLmZ1bmNfYW5ub3RhdGlvbnMuCkBAIC00MjAsMTAgKzM5OSw4IEBACiAgICAgICAgICAgICAiX19hbm5vdGF0aW9uc19fIG11c3QgYmUgc2V0IHRvIGEgZGljdCBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19hbm5vdGF0aW9uczsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19hbm5vdGF0aW9ucyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2Fubm90YXRpb25zLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IDkxNzJlNmEuLjdhMWU5ZmQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtNSw3ICs1LDE1IEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCiAKLXN0YXRpYyBQeU9iamVjdCAqZ2VuX2Nsb3NlKFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKTsKK3N0YXRpYyBQeU9iamVjdCAqZ2VuX2Nsb3NlKFB5R2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICphc3luY19nZW5fYXNlbmRfbmV3KFB5QXN5bmNHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jX2dlbl9hdGhyb3dfbmV3KFB5QXN5bmNHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CisKK3N0YXRpYyBjaGFyICpOT05fSU5JVF9DT1JPX01TRyA9ICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBjb3JvdXRpbmUiOworCitzdGF0aWMgY2hhciAqQVNZTkNfR0VOX0lHTk9SRURfRVhJVF9NU0cgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzeW5jIGdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOwogCiBzdGF0aWMgaW50CiBnZW5fdHJhdmVyc2UoUHlHZW5PYmplY3QgKmdlbiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCkBAIC0yOCw2ICszNiwyNiBAQAogICAgICAgICAvKiBHZW5lcmF0b3IgaXNuJ3QgcGF1c2VkLCBzbyBubyBuZWVkIHRvIGNsb3NlICovCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3Qoc2VsZikpIHsKKyAgICAgICAgUHlBc3luY0dlbk9iamVjdCAqYWdlbiA9IChQeUFzeW5jR2VuT2JqZWN0KilzZWxmOworICAgICAgICBQeU9iamVjdCAqZmluYWxpemVyID0gYWdlbi0+YWdfZmluYWxpemVyOworICAgICAgICBpZiAoZmluYWxpemVyICYmICFhZ2VuLT5hZ19jbG9zZWQpIHsKKyAgICAgICAgICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmaW5hbGl6ZXIsIHNlbGYsIE5VTEwpOworCisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoc2VsZik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCiAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CiAKQEAgLTc0LDYgKzEwMiwxMiBAQAogICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgLyogcmVzdXJyZWN0ZWQuICA6KCAqLwogCiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgIC8qIFdlIGhhdmUgdG8gaGFuZGxlIHRoaXMgY2FzZSBmb3IgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMKKyAgICAgICAgICAgcmlnaHQgaGVyZSwgYmVjYXVzZSB0aGlzIGNvZGUgaGFzIHRvIGJlIGJldHdlZW4gVU5UUkFDSworICAgICAgICAgICBhbmQgR0NfRGVsLiAqLworICAgICAgICBQeV9DTEVBUigoKFB5QXN5bmNHZW5PYmplY3QqKWdlbiktPmFnX2ZpbmFsaXplcik7CisgICAgfQogICAgIGlmIChnZW4tPmdpX2ZyYW1lICE9IE5VTEwpIHsKICAgICAgICAgZ2VuLT5naV9mcmFtZS0+Zl9nZW4gPSBOVUxMOwogICAgICAgICBQeV9DTEVBUihnZW4tPmdpX2ZyYW1lKTsKQEAgLTg0LDYgKzExOCwzMyBAQAogICAgIFB5T2JqZWN0X0dDX0RlbChnZW4pOwogfQogCitzdGF0aWMgdm9pZAorZ2VuX2NoYWluX3J1bnRpbWVfZXJyb3IoY29uc3QgY2hhciAqbXNnKQoreworICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp2YWwyLCAqdGI7CisKKyAgICAvKiBUT0RPOiBUaGlzIGFib3V0IHJld3JpdGluZyB1c2luZyBfUHlFcnJfQ2hhaW5FeGNlcHRpb25zLiAqLworCisgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKyAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbCwgJnRiKTsKKyAgICBpZiAodGIgIT0gTlVMTCkgeworICAgICAgICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sodmFsLCB0Yik7CisgICAgfQorCisgICAgUHlfREVDUkVGKGV4Yyk7CisgICAgUHlfWERFQ1JFRih0Yik7CisKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtc2cpOworICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwyLCAmdGIpOworICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsMiwgJnRiKTsKKworICAgIFB5X0lOQ1JFRih2YWwpOworICAgIFB5RXhjZXB0aW9uX1NldENhdXNlKHZhbDIsIHZhbCk7CisgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWwyLCB2YWwpOworCisgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbDIsIHRiKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGdlbl9zZW5kX2V4KFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmcsIGludCBleGMsIGludCBjbG9zaW5nKQogewpAQCAtOTMsOCArMTU0LDEyIEBACiAKICAgICBpZiAoZ2VuLT5naV9ydW5uaW5nKSB7CiAgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgYWxyZWFkeSBleGVjdXRpbmciOwotICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKICAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgYWxyZWFkeSBleGVjdXRpbmciOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICBtc2cgPSAiYXN5bmMgZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIjsKKyAgICAgICAgfQogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgbXNnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTA2LDEwICsxNzEsMTYgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgImNhbm5vdCByZXVzZSBhbHJlYWR5IGF3YWl0ZWQgY29yb3V0aW5lIik7Ci0gICAgICAgIH0gZWxzZSBpZiAoYXJnICYmICFleGMpIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChhcmcgJiYgIWV4YykgewogICAgICAgICAgICAgLyogYGdlbmAgaXMgYW4gZXhoYXVzdGVkIGdlbmVyYXRvcjoKICAgICAgICAgICAgICAgIG9ubHkgc2V0IGV4Y2VwdGlvbiBpZiBjYWxsZWQgZnJvbSBzZW5kKCkuICovCi0gICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICAgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMTgsOSArMTg5LDEzIEBACiAgICAgICAgIGlmIChhcmcgJiYgYXJnICE9IFB5X05vbmUpIHsKICAgICAgICAgICAgIGNoYXIgKm1zZyA9ICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBnZW5lcmF0b3IiOwotICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgICAgIG1zZyA9IE5PTl9JTklUX0NPUk9fTVNHOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKICAgICAgICAgICAgICAgICBtc2cgPSAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKLSAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGNvcm91dGluZSI7CisgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBhc3luYyBnZW5lcmF0b3IiOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbXNnKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xNTIsMTAgKzIyNywyMCBAQAogICAgIGlmIChyZXN1bHQgJiYgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgLyogRGVsYXkgZXhjZXB0aW9uIGluc3RhbnRpYXRpb24gaWYgd2UgY2FuICovCi0gICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOwotICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICplID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19TdG9wSXRlcmF0aW9uLCByZXN1bHQsIE5VTEwpOworCisgICAgICAgICAgICAvKiBBc3luYyBnZW5lcmF0b3JzIGNhbm5vdCByZXR1cm4gYW55dGhpbmcgYnV0IE5vbmUgKi8KKyAgICAgICAgICAgIGFzc2VydCghUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpOworCiAgICAgICAgICAgICBpZiAoZSAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N0b3BJdGVyYXRpb24sIGUpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlKTsKQEAgLTE2NywzNCArMjUyLDQ0IEBACiAgICAgICAgIC8qIENoZWNrIGZvciBfX2Z1dHVyZV9fIGdlbmVyYXRvcl9zdG9wIGFuZCBjb25kaXRpb25hbGx5IHR1cm4KICAgICAgICAgICogYSBsZWFraW5nIFN0b3BJdGVyYXRpb24gaW50byBSdW50aW1lRXJyb3IgKHdpdGggaXRzIGNhdXNlCiAgICAgICAgICAqIHNldCBhcHByb3ByaWF0ZWx5KS4gKi8KLSAgICAgICAgaWYgKCgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fZmxhZ3MgJgotICAgICAgICAgICAgICAoQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIHwgQ09fQ09ST1VUSU5FIHwgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKSkKKworICAgICAgICBjb25zdCBpbnQgY2hlY2tfc3RvcF9pdGVyX2Vycm9yX2ZsYWdzID0gQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX0NPUk9VVElORSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19JVEVSQUJMRV9DT1JPVVRJTkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fQVNZTkNfR0VORVJBVE9SOworCisgICAgICAgIGlmIChnZW4tPmdpX2NvZGUgIT0gTlVMTCAmJgorICAgICAgICAgICAgKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19mbGFncyAmCisgICAgICAgICAgICAgICAgY2hlY2tfc3RvcF9pdGVyX2Vycm9yX2ZsYWdzKQogICAgICAgICB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdmFsMiwgKnRiOwotICAgICAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7Ci0gICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgICAgIC8qIGBnZW5gIGlzIGVpdGhlcjoKKyAgICAgICAgICAgICAgICAgICogYSBnZW5lcmF0b3Igd2l0aCBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgZmxhZzsKKyAgICAgICAgICAgICAgICAgICogYSBjb3JvdXRpbmU7CisgICAgICAgICAgICAgICAgICAqIGEgZ2VuZXJhdG9yIHdpdGggQ09fSVRFUkFCTEVfQ09ST1VUSU5FIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgKGRlY29yYXRlZCB3aXRoIHR5cGVzLmNvcm91dGluZSBkZWNvcmF0b3IpOworICAgICAgICAgICAgICAgICAgKiBhbiBhc3luYyBnZW5lcmF0b3IuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnID0gImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7CisgICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgcmFpc2VkIFN0b3BJdGVyYXRpb24iOwotICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICAgICAgaWYgKHRiICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOwotICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1zZyk7Ci0gICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKLSAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsMiwgJnRiKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih2YWwpOwotICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q2F1c2UodmFsMiwgdmFsKTsKLSAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENvbnRleHQodmFsMiwgdmFsKTsKLSAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pIHsKKyAgICAgICAgICAgICAgICBtc2cgPSAiYXN5bmMgZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFJhaXNlIGEgUnVudGltZUVycm9yICovCisgICAgICAgICAgICBnZW5fY2hhaW5fcnVudGltZV9lcnJvcihtc2cpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogYGdlbmAgaXMgYW4gb3JkaW5hcnkgZ2VuZXJhdG9yIHdpdGhvdXQKKyAgICAgICAgICAgICAgIENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCBmbGFnLgorICAgICAgICAgICAgKi8KKwogICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOwogCiAgICAgICAgICAgICAvKiBQb3AgdGhlIGV4Y2VwdGlvbiBiZWZvcmUgaXNzdWluZyBhIHdhcm5pbmcuICovCiAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwogCi0gICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciAnJS41MFMnIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgLyogV2FybmluZyB3YXMgY29udmVydGVkIHRvIGFuIGVycm9yLiAqLwpAQCAtMjA3LDYgKzMwMiwxNSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pICYmICFyZXN1bHQgJiYKKyAgICAgICAgICAgICBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbikpCisgICAgeworICAgICAgICAvKiBjb2RlIGluIGBnZW5gIHJhaXNlZCBhIFN0b3BBc3luY0l0ZXJhdGlvbiBlcnJvcjoKKyAgICAgICAgICAgcmFpc2UgYSBSdW50aW1lRXJyb3IuCisgICAgICAgICovCisgICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9ICJhc3luYyBnZW5lcmF0b3IgcmFpc2VkIFN0b3BBc3luY0l0ZXJhdGlvbiI7CisgICAgICAgIGdlbl9jaGFpbl9ydW50aW1lX2Vycm9yKG1zZyk7CisgICAgfQogCiAgICAgaWYgKCFyZXN1bHQgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CiAgICAgICAgIC8qIGdlbmVyYXRvciBjYW4ndCBiZSByZXJ1biwgc28gcmVsZWFzZSB0aGUgZnJhbWUgKi8KQEAgLTI1MywxOCArMzU3LDIwIEBACiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOwogCi0gICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpIHx8IFB5Q29yb19DaGVja0V4YWN0KHlmKSkgewogICAgICAgICByZXR2YWwgPSBnZW5fY2xvc2UoKFB5R2VuT2JqZWN0ICopeWYsIE5VTEwpOwogICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0ICptZXRoID0gX1B5T2JqZWN0X0dldEF0dHJJZCh5ZiwgJlB5SWRfY2xvc2UpOwogICAgICAgICBpZiAobWV0aCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSh5Zik7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKG1ldGgsICIiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTm9BcmcobWV0aCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobWV0aCk7CiAgICAgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjg0LDcgKzM5MCw3IEBACiAgICAgICAgIFB5T2JqZWN0ICpieXRlY29kZSA9IGYtPmZfY29kZS0+Y29fY29kZTsKICAgICAgICAgdW5zaWduZWQgY2hhciAqY29kZSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcoYnl0ZWNvZGUpOwogCi0gICAgICAgIGlmIChjb2RlW2YtPmZfbGFzdGkgKyAxXSAhPSBZSUVMRF9GUk9NKQorICAgICAgICBpZiAoY29kZVtmLT5mX2xhc3RpICsgc2l6ZW9mKF9QeV9DT0RFVU5JVCldICE9IFlJRUxEX0ZST00pCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgeWYgPSBmLT5mX3N0YWNrdG9wWy0xXTsKICAgICAgICAgUHlfSU5DUkVGKHlmKTsKQEAgLTMxMSw4ICs0MTcsMTEgQEAKICAgICByZXR2YWwgPSBnZW5fc2VuZF9leChnZW4sIFB5X05vbmUsIDEsIDEpOwogICAgIGlmIChyZXR2YWwpIHsKICAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOwotICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKICAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgaWdub3JlZCBHZW5lcmF0b3JFeGl0IjsKKyAgICAgICAgfSBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgbXNnID0gQVNZTkNfR0VOX0lHTk9SRURfRVhJVF9NU0c7CisgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1zZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzMyLDIxICs0NDEsMjIgQEAKIHJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWdlbl90aHJvdyhQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKK19nZW5fdGhyb3coUHlHZW5PYmplY3QgKmdlbiwgaW50IGNsb3NlX29uX2dlbmV4aXQsCisgICAgICAgICAgIFB5T2JqZWN0ICp0eXAsIFB5T2JqZWN0ICp2YWwsIFB5T2JqZWN0ICp0YikKIHsKLSAgICBQeU9iamVjdCAqdHlwOwotICAgIFB5T2JqZWN0ICp0YiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnlmID0gX1B5R2VuX3lmKGdlbik7CiAgICAgX1B5X0lERU5USUZJRVIodGhyb3cpOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidGhyb3ciLCAxLCAzLCAmdHlwLCAmdmFsLCAmdGIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICh5ZikgewogICAgICAgICBQeU9iamVjdCAqcmV0OwogICAgICAgICBpbnQgZXJyOwotICAgICAgICBpZiAoUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKHR5cCwgUHlFeGNfR2VuZXJhdG9yRXhpdCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyh0eXAsIFB5RXhjX0dlbmVyYXRvckV4aXQpICYmCisgICAgICAgICAgICBjbG9zZV9vbl9nZW5leGl0CisgICAgICAgICkgeworICAgICAgICAgICAgLyogQXN5bmNocm9ub3VzIGdlbmVyYXRvcnMgKnNob3VsZCBub3QqIGJlIGNsb3NlZCByaWdodCBhd2F5LgorICAgICAgICAgICAgICAgV2UgaGF2ZSB0byBhbGxvdyBzb21lIGF3YWl0cyB0byB3b3JrIGl0IHRocm91Z2gsIGhlbmNlIHRoZQorICAgICAgICAgICAgICAgYGNsb3NlX29uX2dlbmV4aXRgIHBhcmFtZXRlciBoZXJlLgorICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDE7CiAgICAgICAgICAgICBlcnIgPSBnZW5fY2xvc2VfaXRlcih5Zik7CiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOwpAQCAtMzU1LDExICs0NjUsMTYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxLCAwKTsKICAgICAgICAgICAgIGdvdG8gdGhyb3dfaGVyZTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikpIHsKKyAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpIHx8IFB5Q29yb19DaGVja0V4YWN0KHlmKSkgeworICAgICAgICAgICAgLyogYHlmYCBpcyBhIGdlbmVyYXRvciBvciBhIGNvcm91dGluZS4gKi8KICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDE7Ci0gICAgICAgICAgICByZXQgPSBnZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopeWYsIGFyZ3MpOworICAgICAgICAgICAgLyogQ2xvc2UgdGhlIGdlbmVyYXRvciB0aGF0IHdlIGFyZSBjdXJyZW50bHkgaXRlcmF0aW5nIHdpdGgKKyAgICAgICAgICAgICAgICd5aWVsZCBmcm9tJyBvciBhd2FpdGluZyBvbiB3aXRoICdhd2FpdCcuICovCisgICAgICAgICAgICByZXQgPSBfZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKXlmLCBjbG9zZV9vbl9nZW5leGl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXAsIHZhbCwgdGIpOwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGB5ZmAgaXMgYW4gaXRlcmF0b3Igb3IgYSBjb3JvdXRpbmUtbGlrZSBvYmplY3QuICovCiAgICAgICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX3Rocm93KTsKICAgICAgICAgICAgIGlmIChtZXRoID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CkBAIC0zNzEsNyArNDg2LDcgQEAKICAgICAgICAgICAgICAgICBnb3RvIHRocm93X2hlcmU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOwotICAgICAgICAgICAgcmV0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChtZXRoLCBhcmdzKTsKKyAgICAgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobWV0aCwgdHlwLCB2YWwsIHRiLCBOVUxMKTsKICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CiAgICAgICAgICAgICBQeV9ERUNSRUYobWV0aCk7CiAgICAgICAgIH0KQEAgLTM4Myw3ICs0OTgsNyBAQAogICAgICAgICAgICAgYXNzZXJ0KHJldCA9PSB5Zik7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKICAgICAgICAgICAgIC8qIFRlcm1pbmF0aW9uIHJlcGV0aXRpb24gb2YgWUlFTERfRlJPTSAqLwotICAgICAgICAgICAgZ2VuLT5naV9mcmFtZS0+Zl9sYXN0aSsrOworICAgICAgICAgICAgZ2VuLT5naV9mcmFtZS0+Zl9sYXN0aSArPSBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgIGlmIChfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoJnZhbCkgPT0gMCkgewogICAgICAgICAgICAgICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwLCAwKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsKTsKQEAgLTQ1NCw2ICs1NjksMjEgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgorZ2VuX3Rocm93KFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICp0eXA7CisgICAgUHlPYmplY3QgKnRiID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRocm93IiwgMSwgMywgJnR5cCwgJnZhbCwgJnRiKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gX2dlbl90aHJvdyhnZW4sIDEsIHR5cCwgdmFsLCB0Yik7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKIGdlbl9pdGVybmV4dChQeUdlbk9iamVjdCAqZ2VuKQogewogICAgIHJldHVybiBnZW5fc2VuZF9leChnZW4sIE5VTEwsIDAsIDApOwpAQCAtNTI2LDggKzY1Niw2IEBACiBzdGF0aWMgaW50CiBnZW5fc2V0X25hbWUoUHlHZW5PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZ2VuLmdpX25hbWUgb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCiAgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCiAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTUzNSwxMCArNjYzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX25hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+Z2lfbmFtZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5naV9uYW1lID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+Z2lfbmFtZSwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC01NTIsOCArNjc4LDYgQEAKIHN0YXRpYyBpbnQKIGdlbl9zZXRfcXVhbG5hbWUoUHlHZW5PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZ2VuLl9fcXVhbG5hbWVfXyBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKICAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewpAQCAtNTYxLDEwICs2ODUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fcXVhbG5hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+Z2lfcXVhbG5hbWU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+Z2lfcXVhbG5hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5naV9xdWFsbmFtZSwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMDA1LDIxICsxMTI3LDIxIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKmF3X2FpdGVyOworICAgIFB5T2JqZWN0ICphZ3NfYWl0ZXI7CiB9IFB5QUl0ZXJXcmFwcGVyOwogCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhaXRlcl93cmFwcGVyX2l0ZXJuZXh0KFB5QUl0ZXJXcmFwcGVyICphdykKIHsKLSAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgYXctPmF3X2FpdGVyKTsKKyAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgYXctPmFnc19haXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQKIGFpdGVyX3dyYXBwZXJfdHJhdmVyc2UoUHlBSXRlcldyYXBwZXIgKmF3LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9WSVNJVCgoUHlPYmplY3QgKilhdy0+YXdfYWl0ZXIpOworICAgIFB5X1ZJU0lUKChQeU9iamVjdCAqKWF3LT5hZ3NfYWl0ZXIpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMDI3LDcgKzExNDksNyBAQAogYWl0ZXJfd3JhcHBlcl9kZWFsbG9jKFB5QUl0ZXJXcmFwcGVyICphdykKIHsKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSygoUHlPYmplY3QgKilhdyk7Ci0gICAgUHlfQ0xFQVIoYXctPmF3X2FpdGVyKTsKKyAgICBQeV9DTEVBUihhdy0+YWdzX2FpdGVyKTsKICAgICBQeU9iamVjdF9HQ19EZWwoYXcpOwogfQogCkBAIC0xMDg5LDcgKzEyMTEsODE3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9JTkNSRUYoYWl0ZXIpOwotICAgIGF3LT5hd19haXRlciA9IGFpdGVyOworICAgIGF3LT5hZ3NfYWl0ZXIgPSBhaXRlcjsKICAgICBfUHlPYmplY3RfR0NfVFJBQ0soYXcpOwogICAgIHJldHVybiAoUHlPYmplY3QgKilhdzsKIH0KKworCisvKiA9PT09PT09PT0gQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMgPT09PT09PT09ICovCisKKwordHlwZWRlZiBlbnVtIHsKKyAgICBBV0FJVEFCTEVfU1RBVEVfSU5JVCwgICAvKiBuZXcgYXdhaXRhYmxlLCBoYXMgbm90IHlldCBiZWVuIGl0ZXJhdGVkICovCisgICAgQVdBSVRBQkxFX1NUQVRFX0lURVIsICAgLyogYmVpbmcgaXRlcmF0ZWQgKi8KKyAgICBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VELCAvKiBjbG9zZWQgKi8KK30gQXdhaXRhYmxlU3RhdGU7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeUFzeW5jR2VuT2JqZWN0ICphZ3NfZ2VuOworCisgICAgLyogQ2FuIGJlIE5VTEwsIHdoZW4gaW4gdGhlIF9fYW5leHRfXygpIG1vZGUKKyAgICAgICAoZXF1aXZhbGVudCBvZiAiYXNlbmQoTm9uZSkiKSAqLworICAgIFB5T2JqZWN0ICphZ3Nfc2VuZHZhbDsKKworICAgIEF3YWl0YWJsZVN0YXRlIGFnc19zdGF0ZTsKK30gUHlBc3luY0dlbkFTZW5kOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlBc3luY0dlbk9iamVjdCAqYWd0X2dlbjsKKworICAgIC8qIENhbiBiZSBOVUxMLCB3aGVuIGluIHRoZSAiYWNsb3NlKCkiIG1vZGUKKyAgICAgICAoZXF1aXZhbGVudCBvZiAiYXRocm93KEdlbmVyYXRvckV4aXQpIikgKi8KKyAgICBQeU9iamVjdCAqYWd0X2FyZ3M7CisKKyAgICBBd2FpdGFibGVTdGF0ZSBhZ3Rfc3RhdGU7Cit9IFB5QXN5bmNHZW5BVGhyb3c7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqYWd3X3ZhbDsKK30gX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWU7CisKKworI2lmbmRlZiBfUHlBc3luY0dlbl9NQVhGUkVFTElTVAorI2RlZmluZSBfUHlBc3luY0dlbl9NQVhGUkVFTElTVCA4MAorI2VuZGlmCisKKy8qIEZyZWVsaXN0cyBib29zdCBwZXJmb3JtYW5jZSA2LTEwJTsgdGhleSBhbHNvIHJlZHVjZSBtZW1vcnkKKyAgIGZyYWdtZW50YXRpb24sIGFzIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlIGFuZCBQeUFzeW5jR2VuQVNlbmQKKyAgIGFyZSBzaG9ydC1saXZpbmcgb2JqZWN0cyB0aGF0IGFyZSBpbnN0YW50aWF0ZWQgZm9yIGV2ZXJ5CisgICBfX2FuZXh0X18gY2FsbC4KKyovCisKK3N0YXRpYyBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqYWdfdmFsdWVfZnJlZWxpc3RbX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1RdOworc3RhdGljIGludCBhZ192YWx1ZV9mcmVlbGlzdF9mcmVlID0gMDsKKworc3RhdGljIFB5QXN5bmNHZW5BU2VuZCAqYWdfYXNlbmRfZnJlZWxpc3RbX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1RdOworc3RhdGljIGludCBhZ19hc2VuZF9mcmVlbGlzdF9mcmVlID0gMDsKKworI2RlZmluZSBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KG8pIFwKKyAgICAgICAgICAgICAgICAgICAgKFB5X1RZUEUobykgPT0gJl9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX1R5cGUpCisKKyNkZWZpbmUgUHlBc3luY0dlbkFTZW5kX0NoZWNrRXhhY3QobykgXAorICAgICAgICAgICAgICAgICAgICAoUHlfVFlQRShvKSA9PSAmX1B5QXN5bmNHZW5BU2VuZF9UeXBlKQorCisKK3N0YXRpYyBpbnQKK2FzeW5jX2dlbl90cmF2ZXJzZShQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGdlbi0+YWdfZmluYWxpemVyKTsKKyAgICByZXR1cm4gZ2VuX3RyYXZlcnNlKChQeUdlbk9iamVjdCopZ2VuLCB2aXNpdCwgYXJnKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX3JlcHIoUHlBc3luY0dlbk9iamVjdCAqbykKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxhc3luY19nZW5lcmF0b3Igb2JqZWN0ICVTIGF0ICVwPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8tPmFnX3F1YWxuYW1lLCBvKTsKK30KKworCitzdGF0aWMgaW50Cithc3luY19nZW5faW5pdF9ob29rcyhQeUFzeW5jR2VuT2JqZWN0ICpvKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqZmluYWxpemVyOworICAgIFB5T2JqZWN0ICpmaXJzdGl0ZXI7CisKKyAgICBpZiAoby0+YWdfaG9va3NfaW5pdGVkKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG8tPmFnX2hvb2tzX2luaXRlZCA9IDE7CisKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgZmluYWxpemVyID0gdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyOworICAgIGlmIChmaW5hbGl6ZXIpIHsKKyAgICAgICAgUHlfSU5DUkVGKGZpbmFsaXplcik7CisgICAgICAgIG8tPmFnX2ZpbmFsaXplciA9IGZpbmFsaXplcjsKKyAgICB9CisKKyAgICBmaXJzdGl0ZXIgPSB0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXI7CisgICAgaWYgKGZpcnN0aXRlcikgeworICAgICAgICBQeU9iamVjdCAqcmVzOworCisgICAgICAgIFB5X0lOQ1JFRihmaXJzdGl0ZXIpOworICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZmlyc3RpdGVyLCAiTyIsIG8pOworICAgICAgICBQeV9ERUNSRUYoZmlyc3RpdGVyKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FuZXh0KFB5QXN5bmNHZW5PYmplY3QgKm8pCit7CisgICAgaWYgKGFzeW5jX2dlbl9pbml0X2hvb2tzKG8pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXN5bmNfZ2VuX2FzZW5kX25ldyhvLCBOVUxMKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kKFB5QXN5bmNHZW5PYmplY3QgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGFzeW5jX2dlbl9pbml0X2hvb2tzKG8pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXN5bmNfZ2VuX2FzZW5kX25ldyhvLCBhcmcpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYWNsb3NlKFB5QXN5bmNHZW5PYmplY3QgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGFzeW5jX2dlbl9pbml0X2hvb2tzKG8pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXN5bmNfZ2VuX2F0aHJvd19uZXcobywgTlVMTCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93KFB5QXN5bmNHZW5PYmplY3QgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hdGhyb3dfbmV3KG8sIGFyZ3MpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBhc3luY19nZW5fZ2V0c2V0bGlzdFtdID0geworICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfbmFtZSwgKHNldHRlcilnZW5fc2V0X25hbWUsCisgICAgIFB5RG9jX1NUUigibmFtZSBvZiB0aGUgYXN5bmMgZ2VuZXJhdG9yIil9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X3F1YWxuYW1lLCAoc2V0dGVyKWdlbl9zZXRfcXVhbG5hbWUsCisgICAgIFB5RG9jX1NUUigicXVhbGlmaWVkIG5hbWUgb2YgdGhlIGFzeW5jIGdlbmVyYXRvciIpfSwKKyAgICB7ImFnX2F3YWl0IiwgKGdldHRlciljb3JvX2dldF9jcl9hd2FpdCwgTlVMTCwKKyAgICAgUHlEb2NfU1RSKCJvYmplY3QgYmVpbmcgYXdhaXRlZCBvbiwgb3IgTm9uZSIpfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeU1lbWJlckRlZiBhc3luY19nZW5fbWVtYmVybGlzdFtdID0geworICAgIHsiYWdfZnJhbWUiLCAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ19mcmFtZSksICAgUkVBRE9OTFl9LAorICAgIHsiYWdfcnVubmluZyIsIFRfQk9PTCwgICBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ19ydW5uaW5nKSwgUkVBRE9OTFl9LAorICAgIHsiYWdfY29kZSIsICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ19jb2RlKSwgICAgUkVBRE9OTFl9LAorICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCit9OworCitQeURvY19TVFJWQVIoYXN5bmNfYWNsb3NlX2RvYywKKyJhY2xvc2UoKSAtPiByYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBnZW5lcmF0b3IuIik7CisKK1B5RG9jX1NUUlZBUihhc3luY19hc2VuZF9kb2MsCisiYXNlbmQodikgLT4gc2VuZCAndicgaW4gZ2VuZXJhdG9yLiIpOworCitQeURvY19TVFJWQVIoYXN5bmNfYXRocm93X2RvYywKKyJhdGhyb3codHlwWyx2YWxbLHRiXV0pIC0+IHJhaXNlIGV4Y2VwdGlvbiBpbiBnZW5lcmF0b3IuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBhc3luY19nZW5fbWV0aG9kc1tdID0geworICAgIHsiYXNlbmQiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kLCBNRVRIX08sIGFzeW5jX2FzZW5kX2RvY30sCisgICAgeyJhdGhyb3ciLChQeUNGdW5jdGlvbilhc3luY19nZW5fYXRocm93LCBNRVRIX1ZBUkFSR1MsIGFzeW5jX2F0aHJvd19kb2N9LAorICAgIHsiYWNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hY2xvc2UsIE1FVEhfTk9BUkdTLCBhc3luY19hY2xvc2VfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBhc3luY19nZW5fYXNfYXN5bmMgPSB7CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAodW5hcnlmdW5jKWFzeW5jX2dlbl9hbmV4dCAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCisKK1B5VHlwZU9iamVjdCBQeUFzeW5jR2VuX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiYXN5bmNfZ2VuZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlBc3luY0dlbk9iamVjdCksICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZ2VuX2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgICZhc3luY19nZW5fYXNfYXN5bmMsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAocmVwcmZ1bmMpYXN5bmNfZ2VuX3JlcHIsICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAorICAgICAgICBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYXN5bmNfZ2VuX3RyYXZlcnNlLCAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKFB5QXN5bmNHZW5PYmplY3QsIGFnX3dlYWtyZWZsaXN0KSwgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYXN5bmNfZ2VuX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgYXN5bmNfZ2VuX21lbWJlcmxpc3QsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgYXN5bmNfZ2VuX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgX1B5R2VuX0ZpbmFsaXplLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLworfTsKKworCitQeU9iamVjdCAqCitQeUFzeW5jR2VuX05ldyhQeUZyYW1lT2JqZWN0ICpmLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQoreworICAgIFB5QXN5bmNHZW5PYmplY3QgKm87CisgICAgbyA9IChQeUFzeW5jR2VuT2JqZWN0ICopZ2VuX25ld193aXRoX3F1YWxuYW1lKAorICAgICAgICAmUHlBc3luY0dlbl9UeXBlLCBmLCBuYW1lLCBxdWFsbmFtZSk7CisgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgby0+YWdfZmluYWxpemVyID0gTlVMTDsKKyAgICBvLT5hZ19jbG9zZWQgPSAwOworICAgIG8tPmFnX2hvb2tzX2luaXRlZCA9IDA7CisgICAgcmV0dXJuIChQeU9iamVjdCopbzsKK30KKworCitpbnQKK1B5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHModm9pZCkKK3sKKyAgICBpbnQgcmV0ID0gYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSArIGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWU7CisKKyAgICB3aGlsZSAoYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSkgeworICAgICAgICBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqbzsKKyAgICAgICAgbyA9IGFnX3ZhbHVlX2ZyZWVsaXN0Wy0tYWdfdmFsdWVfZnJlZWxpc3RfZnJlZV07CisgICAgICAgIGFzc2VydChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KG8pKTsKKyAgICAgICAgUHlPYmplY3RfRGVsKG8pOworICAgIH0KKworICAgIHdoaWxlIChhZ19hc2VuZF9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIFB5QXN5bmNHZW5BU2VuZCAqbzsKKyAgICAgICAgbyA9IGFnX2FzZW5kX2ZyZWVsaXN0Wy0tYWdfYXNlbmRfZnJlZWxpc3RfZnJlZV07CisgICAgICAgIGFzc2VydChQeV9UWVBFKG8pID09ICZfUHlBc3luY0dlbkFTZW5kX1R5cGUpOworICAgICAgICBQeU9iamVjdF9EZWwobyk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZAorUHlBc3luY0dlbl9GaW5pKHZvaWQpCit7CisgICAgUHlBc3luY0dlbl9DbGVhckZyZWVMaXN0cygpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fdW53cmFwX3ZhbHVlKFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKnJlc3VsdCkKK3sKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pCisgICAgICAgICAgICB8fCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpCisgICAgICAgICkgeworICAgICAgICAgICAgZ2VuLT5hZ19jbG9zZWQgPSAxOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmVzdWx0KSkgeworICAgICAgICAvKiBhc3luYyB5aWVsZCAqLworICAgICAgICBQeU9iamVjdCAqZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCisgICAgICAgICAgICBQeUV4Y19TdG9wSXRlcmF0aW9uLAorICAgICAgICAgICAgKChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSopcmVzdWx0KS0+YWd3X3ZhbCwKKyAgICAgICAgICAgIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgaWYgKGUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N0b3BJdGVyYXRpb24sIGUpOworICAgICAgICBQeV9ERUNSRUYoZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyogLS0tLS0tLS0tLSBBc3luYyBHZW5lcmF0b3IgQVNlbmQgQXdhaXRhYmxlIC0tLS0tLS0tLS0tLSAqLworCisKK3N0YXRpYyB2b2lkCithc3luY19nZW5fYXNlbmRfZGVhbGxvYyhQeUFzeW5jR2VuQVNlbmQgKm8pCit7CisgICAgUHlfQ0xFQVIoby0+YWdzX2dlbik7CisgICAgUHlfQ0xFQVIoby0+YWdzX3NlbmR2YWwpOworICAgIGlmIChhZ19hc2VuZF9mcmVlbGlzdF9mcmVlIDwgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QpIHsKKyAgICAgICAgYXNzZXJ0KFB5QXN5bmNHZW5BU2VuZF9DaGVja0V4YWN0KG8pKTsKKyAgICAgICAgYWdfYXNlbmRfZnJlZWxpc3RbYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSsrXSA9IG87CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3RfRGVsKG8pOworICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX3NlbmQoUHlBc3luY0dlbkFTZW5kICpvLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoby0+YWdzX3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG8tPmFnc19zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfSU5JVCkgeworICAgICAgICBpZiAoYXJnID09IE5VTEwgfHwgYXJnID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGFyZyA9IG8tPmFnc19zZW5kdmFsOworICAgICAgICB9CisgICAgICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9JVEVSOworICAgIH0KKworICAgIHJlc3VsdCA9IGdlbl9zZW5kX2V4KChQeUdlbk9iamVjdCopby0+YWdzX2dlbiwgYXJnLCAwLCAwKTsKKyAgICByZXN1bHQgPSBhc3luY19nZW5fdW53cmFwX3ZhbHVlKG8tPmFnc19nZW4sIHJlc3VsdCk7CisKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgby0+YWdzX3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmRfaXRlcm5leHQoUHlBc3luY0dlbkFTZW5kICpvKQoreworICAgIHJldHVybiBhc3luY19nZW5fYXNlbmRfc2VuZChvLCBOVUxMKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX3Rocm93KFB5QXN5bmNHZW5BU2VuZCAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmIChvLT5hZ3Nfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCkgeworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBnZW5fdGhyb3coKFB5R2VuT2JqZWN0KilvLT5hZ3NfZ2VuLCBhcmdzKTsKKyAgICByZXN1bHQgPSBhc3luY19nZW5fdW53cmFwX3ZhbHVlKG8tPmFnc19nZW4sIHJlc3VsdCk7CisKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgby0+YWdzX3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmRfY2xvc2UoUHlBc3luY0dlbkFTZW5kICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBhc3luY19nZW5fYXNlbmRfbWV0aG9kc1tdID0geworICAgIHsic2VuZCIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXNlbmRfc2VuZCwgTUVUSF9PLCBzZW5kX2RvY30sCisgICAgeyJ0aHJvdyIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXNlbmRfdGhyb3csIE1FVEhfVkFSQVJHUywgdGhyb3dfZG9jfSwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hc2VuZF9jbG9zZSwgTUVUSF9OT0FSR1MsIGNsb3NlX2RvY30sCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworCitzdGF0aWMgUHlBc3luY01ldGhvZHMgYXN5bmNfZ2VuX2FzZW5kX2FzX2FzeW5jID0geworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FpdGVyICovCisgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworCitQeVR5cGVPYmplY3QgX1B5QXN5bmNHZW5BU2VuZF9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvcl9hc2VuZCIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5QXN5bmNHZW5BU2VuZCksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWFzeW5jX2dlbl9hc2VuZF9kZWFsbG9jLCAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAmYXN5bmNfZ2VuX2FzZW5kX2FzX2FzeW5jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpYXN5bmNfZ2VuX2FzZW5kX2l0ZXJuZXh0LCAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBhc3luY19nZW5fYXNlbmRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF9uZXcoUHlBc3luY0dlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqc2VuZHZhbCkKK3sKKyAgICBQeUFzeW5jR2VuQVNlbmQgKm87CisgICAgaWYgKGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUpIHsKKyAgICAgICAgYWdfYXNlbmRfZnJlZWxpc3RfZnJlZS0tOworICAgICAgICBvID0gYWdfYXNlbmRfZnJlZWxpc3RbYWdfYXNlbmRfZnJlZWxpc3RfZnJlZV07CisgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0ICopbyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbyA9IFB5T2JqZWN0X05ldyhQeUFzeW5jR2VuQVNlbmQsICZfUHlBc3luY0dlbkFTZW5kX1R5cGUpOworICAgICAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0lOQ1JFRihnZW4pOworICAgIG8tPmFnc19nZW4gPSBnZW47CisKKyAgICBQeV9YSU5DUkVGKHNlbmR2YWwpOworICAgIG8tPmFnc19zZW5kdmFsID0gc2VuZHZhbDsKKworICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9JTklUOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CisKKworLyogLS0tLS0tLS0tLSBBc3luYyBHZW5lcmF0b3IgVmFsdWUgV3JhcHBlciAtLS0tLS0tLS0tLS0gKi8KKworCitzdGF0aWMgdm9pZAorYXN5bmNfZ2VuX3dyYXBwZWRfdmFsX2RlYWxsb2MoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgKm8pCit7CisgICAgUHlfQ0xFQVIoby0+YWd3X3ZhbCk7CisgICAgaWYgKGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUgPCBfUHlBc3luY0dlbl9NQVhGUkVFTElTVCkgeworICAgICAgICBhc3NlcnQoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIGFnX3ZhbHVlX2ZyZWVsaXN0W2FnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUrK10gPSBvOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0X0RlbChvKTsKKyAgICB9Cit9CisKKworUHlUeXBlT2JqZWN0IF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiYXN5bmNfZ2VuZXJhdG9yX3dyYXBwZWRfdmFsdWUiLCAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUpLCAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpYXN5bmNfZ2VuX3dyYXBwZWRfdmFsX2RlYWxsb2MsICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCitQeU9iamVjdCAqCitfUHlBc3luY0dlblZhbHVlV3JhcHBlck5ldyhQeU9iamVjdCAqdmFsKQoreworICAgIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICpvOworICAgIGFzc2VydCh2YWwpOworCisgICAgaWYgKGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUpIHsKKyAgICAgICAgYWdfdmFsdWVfZnJlZWxpc3RfZnJlZS0tOworICAgICAgICBvID0gYWdfdmFsdWVfZnJlZWxpc3RbYWdfdmFsdWVfZnJlZWxpc3RfZnJlZV07CisgICAgICAgIGFzc2VydChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KG8pKTsKKyAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QqKW8pOworICAgIH0gZWxzZSB7CisgICAgICAgIG8gPSBQeU9iamVjdF9OZXcoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUsICZfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlKTsKKyAgICAgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgby0+YWd3X3ZhbCA9IHZhbDsKKyAgICBQeV9JTkNSRUYodmFsKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilvOworfQorCisKKy8qIC0tLS0tLS0tLS0gQXN5bmMgR2VuZXJhdG9yIEFUaHJvdyBhd2FpdGFibGUgLS0tLS0tLS0tLS0tICovCisKKworc3RhdGljIHZvaWQKK2FzeW5jX2dlbl9hdGhyb3dfZGVhbGxvYyhQeUFzeW5jR2VuQVRocm93ICpvKQoreworICAgIFB5X0NMRUFSKG8tPmFndF9nZW4pOworICAgIFB5X0NMRUFSKG8tPmFndF9hcmdzKTsKKyAgICBQeU9iamVjdF9EZWwobyk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfc2VuZChQeUFzeW5jR2VuQVRocm93ICpvLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5R2VuT2JqZWN0ICpnZW4gPSAoUHlHZW5PYmplY3QqKW8tPmFndF9nZW47CisgICAgUHlGcmFtZU9iamVjdCAqZiA9IGdlbi0+Z2lfZnJhbWU7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIGlmIChmID09IE5VTEwgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMIHx8CisgICAgICAgICAgICBvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCkgeworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoby0+YWd0X3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9JTklUKSB7CisgICAgICAgIGlmIChvLT5hZ3RfZ2VuLT5hZ19jbG9zZWQpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhcmcgIT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgTk9OX0lOSVRfQ09ST19NU0cpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBvLT5hZ3Rfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSVRFUjsKKworICAgICAgICBpZiAoby0+YWd0X2FyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogYWNsb3NlKCkgbW9kZSAqLworICAgICAgICAgICAgby0+YWd0X2dlbi0+YWdfY2xvc2VkID0gMTsKKworICAgICAgICAgICAgcmV0dmFsID0gX2dlbl90aHJvdygoUHlHZW5PYmplY3QgKilnZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAvKiBEbyBub3QgY2xvc2UgZ2VuZXJhdG9yIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0dlbmVyYXRvckV4aXQgaXMgcGFzc2VkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0dlbmVyYXRvckV4aXQsIE5VTEwsIE5VTEwpOworCisgICAgICAgICAgICBpZiAocmV0dmFsICYmIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmV0dmFsKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgICAgIGdvdG8geWllbGRfY2xvc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdHlwOworICAgICAgICAgICAgUHlPYmplY3QgKnRiID0gTlVMTDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOworCisgICAgICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKG8tPmFndF9hcmdzLCAiYXRocm93IiwgMSwgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR5cCwgJnZhbCwgJnRiKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR2YWwgPSBfZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKWdlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIC8qIERvIG5vdCBjbG9zZSBnZW5lcmF0b3Igd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfR2VuZXJhdG9yRXhpdCBpcyBwYXNzZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwLCB2YWwsIHRiKTsKKyAgICAgICAgICAgIHJldHZhbCA9IGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWd0X2dlbiwgcmV0dmFsKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gY2hlY2tfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICB9CisKKyAgICBhc3NlcnQoby0+YWd0X3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9JVEVSKTsKKworICAgIHJldHZhbCA9IGdlbl9zZW5kX2V4KChQeUdlbk9iamVjdCAqKWdlbiwgYXJnLCAwLCAwKTsKKyAgICBpZiAoby0+YWd0X2FyZ3MpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWd0X2dlbiwgcmV0dmFsKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBhY2xvc2UoKSBtb2RlICovCisgICAgICAgIGlmIChyZXR2YWwpIHsKKyAgICAgICAgICAgIGlmIChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KHJldHZhbCkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgICAgICBnb3RvIHlpZWxkX2Nsb3NlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGdvdG8gY2hlY2tfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKK3lpZWxkX2Nsb3NlOgorICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLCBBU1lOQ19HRU5fSUdOT1JFRF9FWElUX01TRyk7CisgICAgcmV0dXJuIE5VTEw7CisKK2NoZWNrX2Vycm9yOgorICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbikKKyAgICAgICAgfHwgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19HZW5lcmF0b3JFeGl0KQorICAgICkgeworICAgICAgICBvLT5hZ3Rfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEOworICAgICAgICBQeUVycl9DbGVhcigpOyAgICAgICAgICAvKiBpZ25vcmUgdGhlc2UgZXJyb3JzICovCisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93X3Rocm93KFB5QXN5bmNHZW5BVGhyb3cgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR2YWw7CisKKyAgICBpZiAoby0+YWd0X3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9JTklUKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIE5PTl9JTklUX0NPUk9fTVNHKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHZhbCA9IGdlbl90aHJvdygoUHlHZW5PYmplY3QqKW8tPmFndF9nZW4sIGFyZ3MpOworICAgIGlmIChvLT5hZ3RfYXJncykgeworICAgICAgICByZXR1cm4gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3RfZ2VuLCByZXR2YWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGFjbG9zZSgpIG1vZGUgKi8KKyAgICAgICAgaWYgKHJldHZhbCAmJiBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KHJldHZhbCkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgQVNZTkNfR0VOX0lHTk9SRURfRVhJVF9NU0cpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICB9Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfaXRlcm5leHQoUHlBc3luY0dlbkFUaHJvdyAqbykKK3sKKyAgICByZXR1cm4gYXN5bmNfZ2VuX2F0aHJvd19zZW5kKG8sIFB5X05vbmUpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93X2Nsb3NlKFB5QXN5bmNHZW5BVGhyb3cgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIG8tPmFndF9zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIGFzeW5jX2dlbl9hdGhyb3dfbWV0aG9kc1tdID0geworICAgIHsic2VuZCIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXRocm93X3NlbmQsIE1FVEhfTywgc2VuZF9kb2N9LAorICAgIHsidGhyb3ciLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2F0aHJvd190aHJvdywgTUVUSF9WQVJBUkdTLCB0aHJvd19kb2N9LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2F0aHJvd19jbG9zZSwgTUVUSF9OT0FSR1MsIGNsb3NlX2RvY30sCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworCitzdGF0aWMgUHlBc3luY01ldGhvZHMgYXN5bmNfZ2VuX2F0aHJvd19hc19hc3luYyA9IHsKKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2F3YWl0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKKworUHlUeXBlT2JqZWN0IF9QeUFzeW5jR2VuQVRocm93X1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiYXN5bmNfZ2VuZXJhdG9yX2F0aHJvdyIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlBc3luY0dlbkFUaHJvdyksICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpYXN5bmNfZ2VuX2F0aHJvd19kZWFsbG9jLCAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgICZhc3luY19nZW5fYXRocm93X2FzX2FzeW5jLCAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYylhc3luY19nZW5fYXRocm93X2l0ZXJuZXh0LCAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGFzeW5jX2dlbl9hdGhyb3dfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd19uZXcoUHlBc3luY0dlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeUFzeW5jR2VuQVRocm93ICpvOworICAgIG8gPSBQeU9iamVjdF9OZXcoUHlBc3luY0dlbkFUaHJvdywgJl9QeUFzeW5jR2VuQVRocm93X1R5cGUpOworICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG8tPmFndF9nZW4gPSBnZW47CisgICAgby0+YWd0X2FyZ3MgPSBhcmdzOworICAgIG8tPmFndF9zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9JTklUOworICAgIFB5X0lOQ1JFRihnZW4pOworICAgIFB5X1hJTkNSRUYoYXJncyk7CisgICAgcmV0dXJuIChQeU9iamVjdCopbzsKK30KZGlmZiAtLWdpdCBhL09iamVjdHMvaXRlcm9iamVjdC5jIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKaW5kZXggYWIyOWZmOC4uNzViMmZjYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKQEAgLTIwOCwzMCArMjA4LDMyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogY2FsbGl0ZXJfaXRlcm5leHQoY2FsbGl0ZXJvYmplY3QgKml0KQogewotICAgIGlmIChpdC0+aXRfY2FsbGFibGUgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoaXQtPml0X2NhbGxhYmxlLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGludCBvazsKLSAgICAgICAgICAgIG9rID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0LT5pdF9zZW50aW5lbCwgcmVzdWx0LCBQeV9FUSk7Ci0gICAgICAgICAgICBpZiAob2sgPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvKiBDb21tb24gY2FzZSwgZmFzdCBwYXRoICovCi0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIGlmIChvayA+IDApIHsKLSAgICAgICAgICAgICAgICBQeV9DTEVBUihpdC0+aXRfY2FsbGFibGUpOwotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9zZW50aW5lbCk7Ci0gICAgICAgICAgICB9CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmIChpdC0+aXRfY2FsbGFibGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGl0LT5pdF9jYWxsYWJsZSk7CisgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIGludCBvazsKKworICAgICAgICBvayA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdC0+aXRfc2VudGluZWwsIHJlc3VsdCwgUHlfRVEpOworICAgICAgICBpZiAob2sgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsgLyogQ29tbW9uIGNhc2UsIGZhc3QgcGF0aCAqLwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIGlmIChvayA+IDApIHsKICAgICAgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9jYWxsYWJsZSk7CiAgICAgICAgICAgICBQeV9DTEVBUihpdC0+aXRfc2VudGluZWwpOwogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgUHlfQ0xFQVIoaXQtPml0X2NhbGxhYmxlKTsKKyAgICAgICAgUHlfQ0xFQVIoaXQtPml0X3NlbnRpbmVsKTsKKyAgICB9CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvbGlzdG9iamVjdC5jIGIvT2JqZWN0cy9saXN0b2JqZWN0LmMKaW5kZXggODE1YTFiOS4uZGNkN2I1ZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9saXN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9saXN0b2JqZWN0LmMKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICBuZXdfYWxsb2NhdGVkID0gKG5ld3NpemUgPj4gMykgKyAobmV3c2l6ZSA8IDkgPyAzIDogNik7CiAKICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgIGlmIChuZXdfYWxsb2NhdGVkID4gUFlfU0laRV9NQVggLSBuZXdzaXplKSB7CisgICAgaWYgKG5ld19hbGxvY2F0ZWQgPiBTSVpFX01BWCAtIG5ld3NpemUpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0gZWxzZSB7CkBAIC01OSw3ICs1OSw3IEBACiAgICAgaWYgKG5ld3NpemUgPT0gMCkKICAgICAgICAgbmV3X2FsbG9jYXRlZCA9IDA7CiAgICAgaXRlbXMgPSBzZWxmLT5vYl9pdGVtOwotICAgIGlmIChuZXdfYWxsb2NhdGVkIDw9IChQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSkpCisgICAgaWYgKG5ld19hbGxvY2F0ZWQgPD0gKFNJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKSkKICAgICAgICAgUHlNZW1fUkVTSVpFKGl0ZW1zLCBQeU9iamVjdCAqLCBuZXdfYWxsb2NhdGVkKTsKICAgICBlbHNlCiAgICAgICAgIGl0ZW1zID0gTlVMTDsKQEAgLTgyLDYgKzgyLDE2IEBACiBzdGF0aWMgdm9pZAogc2hvd19hbGxvYyh2b2lkKQogeworICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKnZhbHVlOworICAgIF9QeV9JREVOVElGSUVSKHNob3dhbGxvY2NvdW50KTsKKworICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtSWQoeG9wdGlvbnMsICZQeUlkX3Nob3dhbGxvY2NvdW50KTsKKyAgICBpZiAodmFsdWUgIT0gUHlfVHJ1ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZnByaW50ZihzdGRlcnIsICJMaXN0IGFsbG9jYXRpb25zOiAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLAogICAgICAgICBjb3VudF9hbGxvYyk7CiAgICAgZnByaW50ZihzdGRlcnIsICJMaXN0IHJldXNlIHRocm91Z2ggZnJlZWxpc3Q6ICUiIFBZX0ZPUk1BVF9TSVpFX1QKQEAgLTEzMCw3ICsxNDAsNiBAQAogUHlMaXN0X05ldyhQeV9zc2l6ZV90IHNpemUpCiB7CiAgICAgUHlMaXN0T2JqZWN0ICpvcDsKLSAgICBzaXplX3QgbmJ5dGVzOwogI2lmZGVmIFNIT1dfQUxMT0NfQ09VTlQKICAgICBzdGF0aWMgaW50IGluaXRpYWxpemVkID0gMDsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CkBAIC0xNDMsMTEgKzE1Miw2IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93IHdpdGhvdXQgYW4gYWN0dWFsIG92ZXJmbG93LAotICAgICAqICB3aGljaCBjYW4gY2F1c2UgY29tcGlsZXIgdG8gb3B0aW1pc2Ugb3V0ICovCi0gICAgaWYgKChzaXplX3Qpc2l6ZSA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICBuYnl0ZXMgPSBzaXplICogc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIGlmIChudW1mcmVlKSB7CiAgICAgICAgIG51bWZyZWUtLTsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbbnVtZnJlZV07CkBAIC0xNjYsMTIgKzE3MCwxMSBAQAogICAgIGlmIChzaXplIDw9IDApCiAgICAgICAgIG9wLT5vYl9pdGVtID0gTlVMTDsKICAgICBlbHNlIHsKLSAgICAgICAgb3AtPm9iX2l0ZW0gPSAoUHlPYmplY3QgKiopIFB5TWVtX01BTExPQyhuYnl0ZXMpOworICAgICAgICBvcC0+b2JfaXRlbSA9IChQeU9iamVjdCAqKikgUHlNZW1fQ2FsbG9jKHNpemUsIHNpemVvZihQeU9iamVjdCAqKSk7CiAgICAgICAgIGlmIChvcC0+b2JfaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob3ApOwogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIH0KLSAgICAgICAgbWVtc2V0KG9wLT5vYl9pdGVtLCAwLCBuYnl0ZXMpOwogICAgIH0KICAgICBQeV9TSVpFKG9wKSA9IHNpemU7CiAgICAgb3AtPmFsbG9jYXRlZCA9IHNpemU7CkBAIC0yMTYsNyArMjE5LDYgQEAKIFB5TGlzdF9TZXRJdGVtKFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCBpLAogICAgICAgICAgICAgICAgUHlPYmplY3QgKm5ld2l0ZW0pCiB7Ci0gICAgUHlPYmplY3QgKm9sZGl0ZW07CiAgICAgUHlPYmplY3QgKipwOwogICAgIGlmICghUHlMaXN0X0NoZWNrKG9wKSkgewogICAgICAgICBQeV9YREVDUkVGKG5ld2l0ZW0pOwpAQCAtMjMwLDkgKzIzMiw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgcCA9ICgoUHlMaXN0T2JqZWN0ICopb3ApIC0+IG9iX2l0ZW0gKyBpOwotICAgIG9sZGl0ZW0gPSAqcDsKLSAgICAqcCA9IG5ld2l0ZW07Ci0gICAgUHlfWERFQ1JFRihvbGRpdGVtKTsKKyAgICBQeV9YU0VUUkVGKCpwLCBuZXdpdGVtKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjUxLDcgKzI1MSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbisxKSA9PSAtMSkKKyAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbisxKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmICh3aGVyZSA8IDApIHsKQEAgLTI5MSw3ICsyOTEsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG4rMSkgPT0gLTEpCisgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG4rMSkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBQeV9JTkNSRUYodik7CkBAIC00ODEsOSArNDgxLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2RlZmluZSBiICgoUHlMaXN0T2JqZWN0ICopYmIpCi0gICAgc2l6ZSA9IFB5X1NJWkUoYSkgKyBQeV9TSVpFKGIpOwotICAgIGlmIChzaXplIDwgMCkKKyAgICBpZiAoUHlfU0laRShhKSA+IFBZX1NTSVpFX1RfTUFYIC0gUHlfU0laRShiKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgc2l6ZSA9IFB5X1NJWkUoYSkgKyBQeV9TSVpFKGIpOwogICAgIG5wID0gKFB5TGlzdE9iamVjdCAqKSBQeUxpc3RfTmV3KHNpemUpOwogICAgIGlmIChucCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzE0LDcgKzcxNCw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KIAotICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBzaXplKm4pID09IC0xKQorICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBzaXplKm4pIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBwID0gc2l6ZTsKQEAgLTczMyw3ICs3MzMsNiBAQAogc3RhdGljIGludAogbGlzdF9hc3NfaXRlbShQeUxpc3RPYmplY3QgKmEsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpCiB7Ci0gICAgUHlPYmplY3QgKm9sZF92YWx1ZTsKICAgICBpZiAoaSA8IDAgfHwgaSA+PSBQeV9TSVpFKGEpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgYXNzaWdubWVudCBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKQEAgLTc0Miw5ICs3NDEsNyBAQAogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBsaXN0X2Fzc19zbGljZShhLCBpLCBpKzEsIHYpOwogICAgIFB5X0lOQ1JFRih2KTsKLSAgICBvbGRfdmFsdWUgPSBhLT5vYl9pdGVtW2ldOwotICAgIGEtPm9iX2l0ZW1baV0gPSB2OwotICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOworICAgIFB5X1NFVFJFRihhLT5vYl9pdGVtW2ldLCB2KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtODA3LDcgKzgwNCw3IEBACiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICAgICAgfQogICAgICAgICBtID0gUHlfU0laRShzZWxmKTsKLSAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG0gKyBuKSA9PSAtMSkgeworICAgICAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbSArIG4pIDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTgzNSwyMyArODMyLDI1IEBACiAKICAgICAvKiBHdWVzcyBhIHJlc3VsdCBsaXN0IHNpemUuICovCiAgICAgbiA9IFB5T2JqZWN0X0xlbmd0aEhpbnQoYiwgOCk7Ci0gICAgaWYgKG4gPT0gLTEpIHsKKyAgICBpZiAobiA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG0gPSBQeV9TSVpFKHNlbGYpOwotICAgIG1uID0gbSArIG47Ci0gICAgaWYgKG1uID49IG0pIHsKKyAgICBpZiAobSA+IFBZX1NTSVpFX1RfTUFYIC0gbikgeworICAgICAgICAvKiBtICsgbiBvdmVyZmxvd2VkOyBvbiB0aGUgY2hhbmNlIHRoYXQgbiBsaWVkLCBhbmQgdGhlcmUgcmVhbGx5CisgICAgICAgICAqIGlzIGVub3VnaCByb29tLCBpZ25vcmUgaXQuICBJZiBuIHdhcyB0ZWxsaW5nIHRoZSB0cnV0aCwgd2UnbGwKKyAgICAgICAgICogZXZlbnR1YWxseSBydW4gb3V0IG9mIG1lbW9yeSBkdXJpbmcgdGhlIGxvb3AuCisgICAgICAgICAqLworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbW4gPSBtICsgbjsKICAgICAgICAgLyogTWFrZSByb29tLiAqLwotICAgICAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbW4pID09IC0xKQorICAgICAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbW4pIDwgMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIC8qIE1ha2UgdGhlIGxpc3Qgc2FuZSBhZ2Fpbi4gKi8KICAgICAgICAgUHlfU0laRShzZWxmKSA9IG07CiAgICAgfQotICAgIC8qIEVsc2UgbSArIG4gb3ZlcmZsb3dlZDsgb24gdGhlIGNoYW5jZSB0aGF0IG4gbGllZCwgYW5kIHRoZXJlIHJlYWxseQotICAgICAqIGlzIGVub3VnaCByb29tLCBpZ25vcmUgaXQuICBJZiBuIHdhcyB0ZWxsaW5nIHRoZSB0cnV0aCwgd2UnbGwKLSAgICAgKiBldmVudHVhbGx5IHJ1biBvdXQgb2YgbWVtb3J5IGR1cmluZyB0aGUgbG9vcC4KLSAgICAgKi8KIAogICAgIC8qIFJ1biBpdGVyYXRvciB0byBleGhhdXN0aW9uLiAqLwogICAgIGZvciAoOzspIHsKQEAgLTI1MDAsOSArMjQ5OSw2IEBACiAgICAgICAgICAgICAgICAgc3RlcCA9IC1zdGVwOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhc3NlcnQoKHNpemVfdClzbGljZWxlbmd0aCA8PQotICAgICAgICAgICAgICAgICAgIFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0KikpOwotCiAgICAgICAgICAgICBnYXJiYWdlID0gKFB5T2JqZWN0KiopCiAgICAgICAgICAgICAgICAgUHlNZW1fTUFMTE9DKHNsaWNlbGVuZ3RoKnNpemVvZihQeU9iamVjdCopKTsKICAgICAgICAgICAgIGlmICghZ2FyYmFnZSkgewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9saXN0c29ydC50eHQgYi9PYmplY3RzL2xpc3Rzb3J0LnR4dAppbmRleCAxNTJhMjcwLi4xN2QyNzk3IDEwMDY0NAotLS0gYS9PYmplY3RzL2xpc3Rzb3J0LnR4dAorKysgYi9PYmplY3RzL2xpc3Rzb3J0LnR4dApAQCAtNDg2LDcgKzQ4Niw3IEBACiBJIGZpcnN0IGxlYXJuZWQgYWJvdXQgdGhlIGdhbGxvcGluZyBzdHJhdGVneSBpbiBhIHJlbGF0ZWQgY29udGV4dDsgc2VlOgogCiAgICAgIkFkYXB0aXZlIFNldCBJbnRlcnNlY3Rpb25zLCBVbmlvbnMsIGFuZCBEaWZmZXJlbmNlcyIgKDIwMDApCi0gICAgRXJpayBELiBEZW1haW5lLCBBbGVqYW5kcm8gTPNwZXotT3J0aXosIEouIElhbiBNdW5ybworICAgIEVyaWsgRC4gRGVtYWluZSwgQWxlamFuZHJvIEzDs3Blei1PcnRpeiwgSi4gSWFuIE11bnJvCiAKIGFuZCBpdHMgZm9sbG93dXAocykuICBBbiBlYXJsaWVyIHBhcGVyIGNhbGxlZCB0aGUgc2FtZSBzdHJhdGVneQogImV4cG9uZW50aWFsIHNlYXJjaCI6CmRpZmYgLS1naXQgYS9PYmplY3RzL2xub3RhYl9ub3Rlcy50eHQgYi9PYmplY3RzL2xub3RhYl9ub3Rlcy50eHQKaW5kZXggZDI0N2VkZC4uNTE1Mzc1NyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0CisrKyBiL09iamVjdHMvbG5vdGFiX25vdGVzLnR4dApAQCAtMTIsNDIgKzEyLDQ3IEBACiAgICAgICAgIDAJCSAgICAxCiAgICAgICAgIDYJCSAgICAyCiAgICAgICAgNTAJCSAgICA3Ci0gICAgICAzNTAgICAgICAgICAgICAgICAgIDMwNwotICAgICAgMzYxICAgICAgICAgICAgICAgICAzMDgKKyAgICAgIDM1MCAgICAgICAgICAgICAgICAgMjA3CisgICAgICAzNjEgICAgICAgICAgICAgICAgIDIwOAogCiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlc2UgbnVtYmVycyBsaXRlcmFsbHksIHdlIGNvbXByZXNzIHRoZSBsaXN0IGJ5IHN0b3Jpbmcgb25seQotdGhlIGluY3JlbWVudHMgZnJvbSBvbmUgcm93IHRvIHRoZSBuZXh0LiAgQ29uY2VwdHVhbGx5LCB0aGUgc3RvcmVkIGxpc3QgbWlnaHQKK3RoZSBkaWZmZXJlbmNlIGZyb20gb25lIHJvdyB0byB0aGUgbmV4dC4gIENvbmNlcHR1YWxseSwgdGhlIHN0b3JlZCBsaXN0IG1pZ2h0CiBsb29rIGxpa2U6CiAKLSAgICAwLCAxLCAgNiwgMSwgIDQ0LCA1LCAgMzAwLCAzMDAsICAxMSwgMQorICAgIDAsIDEsICA2LCAxLCAgNDQsIDUsICAzMDAsIDIwMCwgIDExLCAxCiAKLVRoZSBhYm92ZSBkb2Vzbid0IHJlYWxseSB3b3JrLCBidXQgaXQncyBhIHN0YXJ0LiBOb3RlIHRoYXQgYW4gdW5zaWduZWQgYnl0ZQotY2FuJ3QgaG9sZCBuZWdhdGl2ZSB2YWx1ZXMsIG9yIHZhbHVlcyBsYXJnZXIgdGhhbiAyNTUsIGFuZCB0aGUgYWJvdmUgZXhhbXBsZQotY29udGFpbnMgdHdvIHN1Y2ggdmFsdWVzLiBTbyB3ZSBtYWtlIHR3byB0d2Vha3M6CitUaGUgYWJvdmUgZG9lc24ndCByZWFsbHkgd29yaywgYnV0IGl0J3MgYSBzdGFydC4gQW4gdW5zaWduZWQgYnl0ZSAoYnl0ZSBjb2RlCitvZmZzZXQpIGNhbid0IGhvbGQgbmVnYXRpdmUgdmFsdWVzLCBvciB2YWx1ZXMgbGFyZ2VyIHRoYW4gMjU1LCBhIHNpZ25lZCBieXRlCisobGluZSBudW1iZXIpIGNhbid0IGhvbGQgdmFsdWVzIGxhcmdlciB0aGFuIDEyNyBvciBsZXNzIHRoYW4gLTEyOCwgYW5kIHRoZQorYWJvdmUgZXhhbXBsZSBjb250YWlucyB0d28gc3VjaCB2YWx1ZXMuIFNvIHdlIG1ha2UgdHdvIHR3ZWFrczoKIAotIChhKSB0aGVyZSdzIGEgZGVlcCBhc3N1bXB0aW9uIHRoYXQgYnl0ZSBjb2RlIG9mZnNldHMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcKLSBsaW5lICNzIGJvdGggaW5jcmVhc2UgbW9ub3RvbmljYWxseSwgYW5kCi0gKGIpIGlmIGF0IGxlYXN0IG9uZSBjb2x1bW4ganVtcHMgYnkgbW9yZSB0aGFuIDI1NSBmcm9tIG9uZSByb3cgdG8gdGhlIG5leHQsCi0gbW9yZSB0aGFuIG9uZSBwYWlyIGlzIHdyaXR0ZW4gdG8gdGhlIHRhYmxlLiBJbiBjYXNlICNiLCB0aGVyZSdzIG5vIHdheSB0byBrbm93Ci0gZnJvbSBsb29raW5nIGF0IHRoZSB0YWJsZSBsYXRlciBob3cgbWFueSB3ZXJlIHdyaXR0ZW4uICBUaGF0J3MgdGhlIGRlbGljYXRlCi0gcGFydC4gIEEgdXNlciBvZiBjb19sbm90YWIgZGVzaXJpbmcgdG8gZmluZCB0aGUgc291cmNlIGxpbmUgbnVtYmVyCi0gY29ycmVzcG9uZGluZyB0byBhIGJ5dGVjb2RlIGFkZHJlc3MgQSBzaG91bGQgZG8gc29tZXRoaW5nIGxpa2UgdGhpcworIChhKSB0aGVyZSdzIGEgZGVlcCBhc3N1bXB0aW9uIHRoYXQgYnl0ZSBjb2RlIG9mZnNldHMgaW5jcmVhc2UgbW9ub3RvbmljYWxseSwKKyBhbmQKKyAoYikgaWYgYnl0ZSBjb2RlIG9mZnNldCBqdW1wcyBieSBtb3JlIHRoYW4gMjU1IGZyb20gb25lIHJvdyB0byB0aGUgbmV4dCwgb3IgaWYKKyBzb3VyY2UgY29kZSBsaW5lIG51bWJlciBqdW1wcyBieSBtb3JlIHRoYW4gMTI3IG9yIGxlc3MgdGhhbiAtMTI4IGZyb20gb25lIHJvdworIHRvIHRoZSBuZXh0LCBtb3JlIHRoYW4gb25lIHBhaXIgaXMgd3JpdHRlbiB0byB0aGUgdGFibGUuIEluIGNhc2UgI2IsCisgdGhlcmUncyBubyB3YXkgdG8ga25vdyBmcm9tIGxvb2tpbmcgYXQgdGhlIHRhYmxlIGxhdGVyIGhvdyBtYW55IHdlcmUgd3JpdHRlbi4KKyBUaGF0J3MgdGhlIGRlbGljYXRlIHBhcnQuICBBIHVzZXIgb2YgY29fbG5vdGFiIGRlc2lyaW5nIHRvIGZpbmQgdGhlIHNvdXJjZQorIGxpbmUgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gYSBieXRlY29kZSBhZGRyZXNzIEEgc2hvdWxkIGRvIHNvbWV0aGluZyBsaWtlCisgdGhpczoKIAogICAgIGxpbmVubyA9IGFkZHIgPSAwCiAgICAgZm9yIGFkZHJfaW5jciwgbGluZV9pbmNyIGluIGNvX2xub3RhYjoKICAgICAgICAgYWRkciArPSBhZGRyX2luY3IKICAgICAgICAgaWYgYWRkciA+IEE6CiAgICAgICAgICAgICByZXR1cm4gbGluZW5vCisgICAgICAgIGlmIGxpbmVfaW5jciA+PSAweDgwOgorICAgICAgICAgICAgbGluZV9pbmNyIC09IDB4MTAwCiAgICAgICAgIGxpbmVubyArPSBsaW5lX2luY3IKIAogKEluIEMsIHRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgUHlDb2RlX0FkZHIyTGluZSgpLikgIEluIG9yZGVyIGZvciB0aGlzIHRvIHdvcmssCiB3aGVuIHRoZSBhZGRyIGZpZWxkIGluY3JlbWVudHMgYnkgbW9yZSB0aGFuIDI1NSwgdGhlIGxpbmUgIyBpbmNyZW1lbnQgaW4gZWFjaAogcGFpciBnZW5lcmF0ZWQgbXVzdCBiZSAwIHVudGlsIHRoZSByZW1haW5pbmcgYWRkciBpbmNyZW1lbnQgaXMgPCAyNTYuICBTbywgaW4KIHRoZSBleGFtcGxlIGFib3ZlLCBhc3NlbWJsZV9sbm90YWIgaW4gY29tcGlsZS5jIHNob3VsZCBub3QgKGFzIHdhcyBhY3R1YWxseSBkb25lCi11bnRpbCAyLjIpIGV4cGFuZCAzMDAsIDMwMCB0bwordW50aWwgMi4yKSBleHBhbmQgMzAwLCAyMDAgdG8KICAgICAyNTUsIDI1NSwgNDUsIDQ1LAogYnV0IHRvCi0gICAgMjU1LCAwLCA0NSwgMjU1LCAwLCA0NS4KKyAgICAyNTUsIDAsIDQ1LCAxMjgsIDAsIDcyLgogCiBUaGUgYWJvdmUgaXMgc3VmZmljaWVudCB0byByZWNvbnN0cnVjdCBsaW5lIG51bWJlcnMgZm9yIHRyYWNlYmFja3MsIGJ1dCBub3QgZm9yCiBsaW5lIHRyYWNpbmcuICBUcmFjaW5nIGlzIGhhbmRsZWQgYnkgUHlDb2RlX0NoZWNrTGluZU51bWJlcigpIGluIGNvZGVvYmplY3QuYwpAQCAtOTAsMTYgKzk1LDE2IEBACiAgICAgICAgICAgICAgIDYgUE9QX0pVTVBfSUZfRkFMU0UgICAgICAgMTcKIAogICAzICAgICAgICAgICA5IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgIDEyIFBSSU5UX0lURU0gICAgICAgICAgCisgICAgICAgICAgICAgMTIgUFJJTlRfSVRFTQogCi0gIDQgICAgICAgICAgMTMgQlJFQUtfTE9PUCAgICAgICAgICAKKyAgNCAgICAgICAgICAxMyBCUkVBS19MT09QCiAgICAgICAgICAgICAgMTQgSlVNUF9BQlNPTFVURSAgICAgICAgICAgIDMKLSAgICAgICAgPj4gICAxNyBQT1BfQkxPQ0sgICAgICAgICAgIAorICAgICAgICA+PiAgIDE3IFBPUF9CTE9DSwogCiAgIDYgICAgICAgICAgMTggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDIpCi0gICAgICAgICAgICAgMjEgUFJJTlRfSVRFTSAgICAgICAgICAKKyAgICAgICAgICAgICAyMSBQUklOVF9JVEVNCiAgICAgICAgID4+ICAgMjIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgMjUgUkVUVVJOX1ZBTFVFICAgICAgICAKKyAgICAgICAgICAgICAyNSBSRVRVUk5fVkFMVUUKIAogSWYgJ2EnIGlzIGZhbHNlLCBleGVjdXRpb24gd2lsbCBqdW1wIHRvIHRoZSBQT1BfQkxPQ0sgaW5zdHJ1Y3Rpb24gYXQgb2Zmc2V0IDE3CiBhbmQgdGhlIGNvX2xub3RhYiB3aWxsIGNsYWltIHRoYXQgZXhlY3V0aW9uIGhhcyBtb3ZlZCB0byBsaW5lIDQsIHdoaWNoIGlzIHdyb25nLgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9sb25nb2JqZWN0LmMgYi9PYmplY3RzL2xvbmdvYmplY3QuYwppbmRleCAwY2M4NTBlLi5hNDUzMjQxIDEwMDY0NAotLS0gYS9PYmplY3RzL2xvbmdvYmplY3QuYworKysgYi9PYmplY3RzL2xvbmdvYmplY3QuYwpAQCAtNzIyLDcgKzcyMiw3IEBACiAgICAgYXNzZXJ0KG5kaWdpdHMgPT0gMCB8fCB2LT5vYl9kaWdpdFtuZGlnaXRzIC0gMV0gIT0gMCk7CiAgICAgaWYgKG5kaWdpdHMgPiAwKSB7CiAgICAgICAgIGRpZ2l0IG1zZCA9IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXTsKLSAgICAgICAgaWYgKChzaXplX3QpKG5kaWdpdHMgLSAxKSA+IFBZX1NJWkVfTUFYIC8gKHNpemVfdClQeUxvbmdfU0hJRlQpCisgICAgICAgIGlmICgoc2l6ZV90KShuZGlnaXRzIC0gMSkgPiBTSVpFX01BWCAvIChzaXplX3QpUHlMb25nX1NISUZUKQogICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKICAgICAgICAgcmVzdWx0ID0gKHNpemVfdCkobmRpZ2l0cyAtIDEpICogKHNpemVfdClQeUxvbmdfU0hJRlQ7CiAgICAgICAgIGRvIHsKQEAgLTk5MCwxNiArOTkwLDEzIEBACiBQeUxvbmdfRnJvbVZvaWRQdHIodm9pZCAqcCkKIHsKICNpZiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKShQeV91aW50cHRyX3QpcCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKSh1aW50cHRyX3QpcCk7CiAjZWxzZQogCi0jaWZuZGVmIEhBVkVfTE9OR19MT05HCi0jICAgZXJyb3IgIlB5TG9uZ19Gcm9tVm9pZFB0cjogc2l6ZW9mKHZvaWQqKSA+IHNpemVvZihsb25nKSwgYnV0IG5vIGxvbmcgbG9uZyIKLSNlbmRpZgogI2lmIFNJWkVPRl9MT05HX0xPTkcgPCBTSVpFT0ZfVk9JRF9QCi0jICAgZXJyb3IgIlB5TG9uZ19Gcm9tVm9pZFB0cjogc2l6ZW9mKFBZX0xPTkdfTE9ORykgPCBzaXplb2Yodm9pZCopIgorIyAgIGVycm9yICJQeUxvbmdfRnJvbVZvaWRQdHI6IHNpemVvZihsb25nIGxvbmcpIDwgc2l6ZW9mKHZvaWQqKSIKICNlbmRpZgotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoUHlfdWludHB0cl90KXApOworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKHVuc2lnbmVkIGxvbmcgbG9uZykodWludHB0cl90KXApOwogI2VuZGlmIC8qIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcgKi8KIAogfQpAQCAtMTAxOCwxMyArMTAxNSwxMCBAQAogICAgICAgICB4ID0gUHlMb25nX0FzVW5zaWduZWRMb25nKHZ2KTsKICNlbHNlCiAKLSNpZm5kZWYgSEFWRV9MT05HX0xPTkcKLSMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKHZvaWQqKSA+IHNpemVvZihsb25nKSwgYnV0IG5vIGxvbmcgbG9uZyIKLSNlbmRpZgogI2lmIFNJWkVPRl9MT05HX0xPTkcgPCBTSVpFT0ZfVk9JRF9QCi0jICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZihQWV9MT05HX0xPTkcpIDwgc2l6ZW9mKHZvaWQqKSIKKyMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKGxvbmcgbG9uZykgPCBzaXplb2Yodm9pZCopIgogI2VuZGlmCi0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHg7CiAKICAgICBpZiAoUHlMb25nX0NoZWNrKHZ2KSAmJiBfUHlMb25nX1NpZ24odnYpIDwgMCkKICAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmdMb25nKHZ2KTsKQEAgLTEwMzgsMjIgKzEwMzIsMjAgQEAKICAgICByZXR1cm4gKHZvaWQgKil4OwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQotLyogSW5pdGlhbCBQWV9MT05HX0xPTkcgc3VwcG9ydCBieSBDaHJpcyBIZXJib3J0aCAoY2hyaXNoQHFueC5jb20pLCBsYXRlcgorLyogSW5pdGlhbCBsb25nIGxvbmcgc3VwcG9ydCBieSBDaHJpcyBIZXJib3J0aCAoY2hyaXNoQHFueC5jb20pLCBsYXRlcgogICogcmV3cml0dGVuIHRvIHVzZSB0aGUgbmV3ZXIgUHlMb25nX3tBcyxGcm9tfUJ5dGVBcnJheSBBUEkuCiAgKi8KIAotI2RlZmluZSBQWV9BQlNfTExPTkdfTUlOICgwLSh1bnNpZ25lZCBQWV9MT05HX0xPTkcpUFlfTExPTkdfTUlOKQorI2RlZmluZSBQWV9BQlNfTExPTkdfTUlOICgwLSh1bnNpZ25lZCBsb25nIGxvbmcpUFlfTExPTkdfTUlOKQogCi0vKiBDcmVhdGUgYSBuZXcgaW50IG9iamVjdCBmcm9tIGEgQyBQWV9MT05HX0xPTkcgaW50LiAqLworLyogQ3JlYXRlIGEgbmV3IGludCBvYmplY3QgZnJvbSBhIEMgbG9uZyBsb25nIGludC4gKi8KIAogUHlPYmplY3QgKgotUHlMb25nX0Zyb21Mb25nTG9uZyhQWV9MT05HX0xPTkcgaXZhbCkKK1B5TG9uZ19Gcm9tTG9uZ0xvbmcobG9uZyBsb25nIGl2YWwpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBhYnNfaXZhbDsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdDsgIC8qIHVuc2lnbmVkIHNvID4+IGRvZXNuJ3QgcHJvcGFnYXRlIHNpZ24gYml0ICovCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGFic19pdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0OyAgLyogdW5zaWduZWQgc28gPj4gZG9lc24ndCBwcm9wYWdhdGUgc2lnbiBiaXQgKi8KICAgICBpbnQgbmRpZ2l0cyA9IDA7CiAgICAgaW50IG5lZ2F0aXZlID0gMDsKIApAQCAtMTA2MSwxMSArMTA1MywxMSBAQAogICAgIGlmIChpdmFsIDwgMCkgewogICAgICAgICAvKiBhdm9pZCBzaWduZWQgb3ZlcmZsb3cgb24gbmVnYXRpb247ICBzZWUgY29tbWVudHMKICAgICAgICAgICAgaW4gUHlMb25nX0Zyb21Mb25nIGFib3ZlLiAqLwotICAgICAgICBhYnNfaXZhbCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpKC0xLWl2YWwpICsgMTsKKyAgICAgICAgYWJzX2l2YWwgPSAodW5zaWduZWQgbG9uZyBsb25nKSgtMS1pdmFsKSArIDE7CiAgICAgICAgIG5lZ2F0aXZlID0gMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGFic19pdmFsID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylpdmFsOworICAgICAgICBhYnNfaXZhbCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpaXZhbDsKICAgICB9CiAKICAgICAvKiBDb3VudCB0aGUgbnVtYmVyIG9mIFB5dGhvbiBkaWdpdHMuCkBAIC0xMDkwLDE5ICsxMDgyLDE5IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CiB9CiAKLS8qIENyZWF0ZSBhIG5ldyBpbnQgb2JqZWN0IGZyb20gYSBDIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpbnQuICovCisvKiBDcmVhdGUgYSBuZXcgaW50IG9iamVjdCBmcm9tIGEgQyB1bnNpZ25lZCBsb25nIGxvbmcgaW50LiAqLwogCiBQeU9iamVjdCAqCi1QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgUFlfTE9OR19MT05HIGl2YWwpCitQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgbG9uZyBsb25nIGl2YWwpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB0OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0OwogICAgIGludCBuZGlnaXRzID0gMDsKIAogICAgIGlmIChpdmFsIDwgUHlMb25nX0JBU0UpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpaXZhbCk7CiAgICAgLyogQ291bnQgdGhlIG51bWJlciBvZiBQeXRob24gZGlnaXRzLiAqLwotICAgIHQgPSAodW5zaWduZWQgUFlfTE9OR19MT05HKWl2YWw7CisgICAgdCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpaXZhbDsKICAgICB3aGlsZSAodCkgewogICAgICAgICArK25kaWdpdHM7CiAgICAgICAgIHQgPj49IFB5TG9uZ19TSElGVDsKQEAgLTExOTEsMTEgKzExODMsMTEgQEAKIC8qIEdldCBhIEMgbG9uZyBsb25nIGludCBmcm9tIGFuIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbgogICAgX19pbnRfXyBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCiAKLVBZX0xPTkdfTE9ORworbG9uZyBsb25nCiBQeUxvbmdfQXNMb25nTG9uZyhQeU9iamVjdCAqdnYpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp2OwotICAgIFBZX0xPTkdfTE9ORyBieXRlczsKKyAgICBsb25nIGxvbmcgYnl0ZXM7CiAgICAgaW50IHJlczsKICAgICBpbnQgZG9fZGVjcmVmID0gMDsgLyogaWYgbmJfaW50IHdhcyBjYWxsZWQgKi8KIApAQCAtMTIzMywzMCArMTIyNSwzMCBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfQogCi0gICAgLyogUGxhbiA5IGNhbid0IGhhbmRsZSBQWV9MT05HX0xPTkcgaW4gPyA6IGV4cHJlc3Npb25zICovCisgICAgLyogUGxhbiA5IGNhbid0IGhhbmRsZSBsb25nIGxvbmcgaW4gPyA6IGV4cHJlc3Npb25zICovCiAgICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiAoUFlfTE9OR19MT05HKS0xOworICAgICAgICByZXR1cm4gKGxvbmcgbG9uZyktMTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBieXRlczsKIH0KIAotLyogR2V0IGEgQyB1bnNpZ25lZCBQWV9MT05HX0xPTkcgaW50IGZyb20gYW4gaW50IG9iamVjdC4KKy8qIEdldCBhIEMgdW5zaWduZWQgbG9uZyBsb25nIGludCBmcm9tIGFuIGludCBvYmplY3QuCiAgICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCiAKLXVuc2lnbmVkIFBZX0xPTkdfTE9ORwordW5zaWduZWQgbG9uZyBsb25nCiBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICp2dikKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGJ5dGVzOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlczsKICAgICBpbnQgcmVzOwogCiAgICAgaWYgKHZ2ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZyktMTsKICAgICB9CiAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodnYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7Ci0gICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZyktMTsKICAgICB9CiAKICAgICB2ID0gKFB5TG9uZ09iamVjdCopdnY7CkBAIC0xMjY4LDkgKzEyNjAsOSBAQAogICAgIHJlcyA9IF9QeUxvbmdfQXNCeXRlQXJyYXkoKFB5TG9uZ09iamVjdCAqKXZ2LCAodW5zaWduZWQgY2hhciAqKSZieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJWkVPRl9MT05HX0xPTkcsIFBZX0xJVFRMRV9FTkRJQU4sIDApOwogCi0gICAgLyogUGxhbiA5IGNhbid0IGhhbmRsZSBQWV9MT05HX0xPTkcgaW4gPyA6IGV4cHJlc3Npb25zICovCisgICAgLyogUGxhbiA5IGNhbid0IGhhbmRsZSBsb25nIGxvbmcgaW4gPyA6IGV4cHJlc3Npb25zICovCiAgICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKXJlczsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpcmVzOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGJ5dGVzOwogfQpAQCAtMTI3OCwxMSArMTI3MCwxMSBAQAogLyogR2V0IGEgQyB1bnNpZ25lZCBsb25nIGludCBmcm9tIGFuIGludCBvYmplY3QsIGlnbm9yaW5nIHRoZSBoaWdoIGJpdHMuCiAgICBSZXR1cm5zIC0xIGFuZCBzZXRzIGFuIGVycm9yIGNvbmRpdGlvbiBpZiBhbiBlcnJvciBvY2N1cnMuICovCiAKLXN0YXRpYyB1bnNpZ25lZCBQWV9MT05HX0xPTkcKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcKIF9QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqdnYpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIFB5X3NzaXplX3QgaTsKICAgICBpbnQgc2lnbjsKIApAQCAtMTMwOCwxMSArMTMwMCwxMSBAQAogICAgIHJldHVybiB4ICogc2lnbjsKIH0KIAotdW5zaWduZWQgUFlfTE9OR19MT05HCit1bnNpZ25lZCBsb25nIGxvbmcKIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICpvcCkKIHsKICAgICBQeUxvbmdPYmplY3QgKmxvOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKIAogICAgIGlmIChvcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwpAQCAtMTMyNSw3ICsxMzE3LDcgQEAKIAogICAgIGxvID0gX1B5TG9uZ19Gcm9tTmJJbnQob3ApOwogICAgIGlmIChsbyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpLTE7CiAKICAgICB2YWwgPSBfUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soKFB5T2JqZWN0ICopbG8pOwogICAgIFB5X0RFQ1JFRihsbyk7CkBAIC0xMzQyLDEzICsxMzM0LDEzIEBACiAgICBJbiB0aGlzIGNhc2UgKm92ZXJmbG93IHdpbGwgYmUgMC4KICovCiAKLVBZX0xPTkdfTE9ORworbG9uZyBsb25nCiBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICp2diwgaW50ICpvdmVyZmxvdykKIHsKICAgICAvKiBUaGlzIHZlcnNpb24gYnkgVGltIFBldGVycyAqLwogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeCwgcHJldjsKLSAgICBQWV9MT05HX0xPTkcgcmVzOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4LCBwcmV2OworICAgIGxvbmcgbG9uZyByZXM7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGludCBzaWduOwogICAgIGludCBkb19kZWNyZWYgPSAwOyAvKiBpZiBuYl9pbnQgd2FzIGNhbGxlZCAqLwpAQCAtMTQwMCw4ICsxMzkyLDggQEAKICAgICAgICAgLyogSGF2ZW4ndCBsb3N0IGFueSBiaXRzLCBidXQgY2FzdGluZyB0byBsb25nIHJlcXVpcmVzIGV4dHJhCiAgICAgICAgICAqIGNhcmUgKHNlZSBjb21tZW50IGFib3ZlKS4KICAgICAgICAgICovCi0gICAgICAgIGlmICh4IDw9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpUFlfTExPTkdfTUFYKSB7Ci0gICAgICAgICAgICByZXMgPSAoUFlfTE9OR19MT05HKXggKiBzaWduOworICAgICAgICBpZiAoeCA8PSAodW5zaWduZWQgbG9uZyBsb25nKVBZX0xMT05HX01BWCkgeworICAgICAgICAgICAgcmVzID0gKGxvbmcgbG9uZyl4ICogc2lnbjsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChzaWduIDwgMCAmJiB4ID09IFBZX0FCU19MTE9OR19NSU4pIHsKICAgICAgICAgICAgIHJlcyA9IFBZX0xMT05HX01JTjsKQEAgLTE0MTgsOCArMTQxMCw2IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCi0KICNkZWZpbmUgQ0hFQ0tfQklOT1Aodix3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpIHx8ICFQeUxvbmdfQ2hlY2sodykpICAgICAgIFwKQEAgLTE1ODMsMTMgKzE1NzMsMTYgQEAKIHN0YXRpYyBpbnQKIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoUHlPYmplY3QgKmFhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5Qnl0ZXNXcml0ZXIgKmJ5dGVzX3dyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmJ5dGVzX3N0cikKIHsKICAgICBQeUxvbmdPYmplY3QgKnNjcmF0Y2gsICphOwotICAgIFB5T2JqZWN0ICpzdHI7CisgICAgUHlPYmplY3QgKnN0ciA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzaXplLCBzdHJsZW4sIHNpemVfYSwgaSwgajsKICAgICBkaWdpdCAqcG91dCwgKnBpbiwgcmVtLCB0ZW5wb3c7CiAgICAgaW50IG5lZ2F0aXZlOworICAgIGludCBkOwogICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKIAogICAgIGEgPSAoUHlMb25nT2JqZWN0ICopYWE7CkBAIC0xNjA3LDE1ICsxNjAwLDE3IEBACiAKICAgICAgICBCdXQgbG9nMihhKSA8IHNpemVfYSAqIFB5TG9uZ19TSElGVCwgYW5kCiAgICAgICAgbG9nMihfUHlMb25nX0RFQ0lNQUxfQkFTRSkgPSBsb2cyKDEwKSAqIF9QeUxvbmdfREVDSU1BTF9TSElGVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gMy4zICogX1B5TG9uZ19ERUNJTUFMX1NISUZUCisKKyAgICAgICAgIHNpemVfYSAqIFB5TG9uZ19TSElGVCAvICgzLjMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpID0KKyAgICAgICAgICAgICBzaXplX2EgKyBzaXplX2EgLyBkIDwgc2l6ZV9hICsgc2l6ZV9hIC8gZmxvb3IoZCksCisgICAgICAgd2hlcmUgZCA9ICgzLjMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpIC8KKyAgICAgICAgICAgICAgICAgKFB5TG9uZ19TSElGVCAtIDMuMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCkKICAgICAqLwotICAgIGlmIChzaXplX2EgPiBQWV9TU0laRV9UX01BWCAvIFB5TG9uZ19TSElGVCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgdG9vIGxhcmdlIHRvIGZvcm1hdCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIHRoZSBleHByZXNzaW9uIHNpemVfYSAqIFB5TG9uZ19TSElGVCBpcyBub3cgc2FmZSBmcm9tIG92ZXJmbG93ICovCi0gICAgc2l6ZSA9IDEgKyBzaXplX2EgKiBQeUxvbmdfU0hJRlQgLyAoMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCk7CisgICAgZCA9ICgzMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCkgLworICAgICAgICAoMTAgKiBQeUxvbmdfU0hJRlQgLSAzMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCk7CisgICAgYXNzZXJ0KHNpemVfYSA8IFBZX1NTSVpFX1RfTUFYLzIpOworICAgIHNpemUgPSAxICsgc2l6ZV9hICsgc2l6ZV9hIC8gZDsKICAgICBzY3JhdGNoID0gX1B5TG9uZ19OZXcoc2l6ZSk7CiAgICAgaWYgKHNjcmF0Y2ggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTY2Myw3ICsxNjU4LDEzIEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAga2luZCA9IHdyaXRlci0+a2luZDsKLSAgICAgICAgc3RyID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgICpieXRlc19zdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKGJ5dGVzX3dyaXRlciwgKmJ5dGVzX3N0ciwgc3RybGVuKTsKKyAgICAgICAgaWYgKCpieXRlc19zdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBzdHIgPSBQeVVuaWNvZGVfTmV3KHN0cmxlbiwgJzknKTsKQEAgLTE2NzQsMTMgKzE2NzUsOCBAQAogICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKICAgICB9CiAKLSNkZWZpbmUgV1JJVEVfRElHSVRTKFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFdSSVRFX0RJR0lUUyhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zICsgc3RybGVuOyBcCi0gICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQShzdHIpICsgc3RybGVuOyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIC8qIHBvdXRbMF0gdGhyb3VnaCBwb3V0W3NpemUtMl0gY29udHJpYnV0ZSBleGFjdGx5ICAgICAgICAgICAgXAogICAgICAgICAgICBfUHlMb25nX0RFQ0lNQUxfU0hJRlQgZGlnaXRzIGVhY2ggKi8gICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgZm9yIChpPTA7IGkgPCBzaXplIC0gMTsgaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNzAwLDYgKzE2OTYsMTYgQEAKICAgICAgICAgLyogYW5kIHNpZ24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChuZWdhdGl2ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgKi0tcCA9ICctJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIFdSSVRFX1VOSUNPREVfRElHSVRTKFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zICsgc3RybGVuOyBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQShzdHIpICsgc3RybGVuOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFdSSVRFX0RJR0lUUyhwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgLyogY2hlY2sgd2UndmUgY291bnRlZCBjb3JyZWN0bHkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTcwOSwyNSArMTcxNSwzNCBAQAogICAgIH0gd2hpbGUgKDApCiAKICAgICAvKiBmaWxsIHRoZSBzdHJpbmcgcmlnaHQtdG8tbGVmdCAqLwotICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICBjaGFyICpwID0gKmJ5dGVzX3N0ciArIHN0cmxlbjsKKyAgICAgICAgV1JJVEVfRElHSVRTKHApOworICAgICAgICBhc3NlcnQocCA9PSAqYnl0ZXNfc3RyKTsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewogICAgICAgICBQeV9VQ1MxICpwOwotICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMSk7CisgICAgICAgIFdSSVRFX1VOSUNPREVfRElHSVRTKFB5X1VDUzEpOwogICAgIH0KICAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CiAgICAgICAgIFB5X1VDUzIgKnA7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MyKTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTMik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeV9VQ1M0ICpwOwogICAgICAgICBhc3NlcnQgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOwotICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTNCk7CisgICAgICAgIFdSSVRFX1VOSUNPREVfRElHSVRTKFB5X1VDUzQpOwogICAgIH0KICN1bmRlZiBXUklURV9ESUdJVFMKKyN1bmRlZiBXUklURV9VTklDT0RFX0RJR0lUUwogCiAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwogICAgIGlmICh3cml0ZXIpIHsKICAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3RybGVuOwogICAgIH0KKyAgICBlbHNlIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgKCpieXRlc19zdHIpICs9IHN0cmxlbjsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc3RyLCAxKSk7CiAgICAgICAgICpwX291dHB1dCA9IChQeU9iamVjdCAqKXN0cjsKQEAgLTE3MzksNyArMTc1NCw3IEBACiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nKFB5T2JqZWN0ICphYSkKIHsKICAgICBQeU9iamVjdCAqdjsKLSAgICBpZiAobG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChhYSwgJnYsIE5VTEwpID09IC0xKQorICAgIGlmIChsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKGFhLCAmdiwgTlVMTCwgTlVMTCwgTlVMTCkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiB2OwogfQpAQCAtMTc1MSwxMCArMTc2NiwxMSBAQAogCiBzdGF0aWMgaW50CiBsb25nX2Zvcm1hdF9iaW5hcnkoUHlPYmplY3QgKmFhLCBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSwKLSAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX291dHB1dCwgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgIF9QeUJ5dGVzV3JpdGVyICpieXRlc193cml0ZXIsIGNoYXIgKipieXRlc19zdHIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICphID0gKFB5TG9uZ09iamVjdCAqKWFhOwotICAgIFB5T2JqZWN0ICp2OworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHN6OwogICAgIFB5X3NzaXplX3Qgc2l6ZV9hOwogICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKQEAgLTE4MTEsNyArMTgyNywxMSBAQAogICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3osICd4JykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGtpbmQgPSB3cml0ZXItPmtpbmQ7Ci0gICAgICAgIHYgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgKmJ5dGVzX3N0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoYnl0ZXNfd3JpdGVyLCAqYnl0ZXNfc3RyLCBzeik7CisgICAgICAgIGlmICgqYnl0ZXNfc3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICB2ID0gUHlVbmljb2RlX05ldyhzeiwgJ3gnKTsKQEAgLTE4MjAsMTMgKzE4NDAsOCBAQAogICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodik7CiAgICAgfQogCi0jZGVmaW5lIFdSSVRFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFdSSVRFX0RJR0lUUyhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zICsgc3o7IFwKLSAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikgKyBzejsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHNpemVfYSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICotLXAgPSAnMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE4NjEsMzAgKzE4NzYsNTAgQEAKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKG5lZ2F0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIFdSSVRFX1VOSUNPREVfRElHSVRTKFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zICsgc3o7IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikgKyBzejsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgV1JJVEVfRElHSVRTKHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGFzc2VydChwID09ICgoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MpKTsgXAogICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgYXNzZXJ0KHAgPT0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpKTsgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKLSAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgY2hhciAqcCA9ICpieXRlc19zdHIgKyBzejsKKyAgICAgICAgV1JJVEVfRElHSVRTKHApOworICAgICAgICBhc3NlcnQocCA9PSAqYnl0ZXNfc3RyKTsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewogICAgICAgICBQeV9VQ1MxICpwOwotICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMSk7CisgICAgICAgIFdSSVRFX1VOSUNPREVfRElHSVRTKFB5X1VDUzEpOwogICAgIH0KICAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CiAgICAgICAgIFB5X1VDUzIgKnA7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MyKTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTMik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeV9VQ1M0ICpwOwogICAgICAgICBhc3NlcnQgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOwotICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTNCk7CisgICAgICAgIFdSSVRFX1VOSUNPREVfRElHSVRTKFB5X1VDUzQpOwogICAgIH0KICN1bmRlZiBXUklURV9ESUdJVFMKKyN1bmRlZiBXUklURV9VTklDT0RFX0RJR0lUUwogCiAgICAgaWYgKHdyaXRlcikgewogICAgICAgICB3cml0ZXItPnBvcyArPSBzejsKICAgICB9CisgICAgZWxzZSBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgICgqYnl0ZXNfc3RyKSArPSBzejsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodiwgMSkpOwogICAgICAgICAqcF9vdXRwdXQgPSB2OwpAQCAtMTg5OCw5ICsxOTMzLDkgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGludCBlcnI7CiAgICAgaWYgKGJhc2UgPT0gMTApCi0gICAgICAgIGVyciA9IGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCAmc3RyLCBOVUxMKTsKKyAgICAgICAgZXJyID0gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosICZzdHIsIE5VTEwsIE5VTEwsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgZXJyID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgMSwgJnN0ciwgTlVMTCk7CisgICAgICAgIGVyciA9IGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIDEsICZzdHIsIE5VTEwsIE5VTEwsIE5VTEwpOwogICAgIGlmIChlcnIgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBzdHI7CkBAIC0xOTEyLDkgKzE5NDcsMzEgQEAKICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlLCBpbnQgYWx0ZXJuYXRlKQogewogICAgIGlmIChiYXNlID09IDEwKQotICAgICAgICByZXR1cm4gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosIE5VTEwsIHdyaXRlcik7CisgICAgICAgIHJldHVybiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCBhbHRlcm5hdGUsIE5VTEwsIHdyaXRlcik7CisgICAgICAgIHJldHVybiBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCBhbHRlcm5hdGUsIE5VTEwsIHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKK30KKworY2hhcioKK19QeUxvbmdfRm9ybWF0Qnl0ZXNXcml0ZXIoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSkKK3sKKyAgICBjaGFyICpzdHIyOworICAgIGludCByZXM7CisgICAgc3RyMiA9IHN0cjsKKyAgICBpZiAoYmFzZSA9PSAxMCkKKyAgICAgICAgcmVzID0gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLCAmc3RyMik7CisgICAgZWxzZQorICAgICAgICByZXMgPSBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCBhbHRlcm5hdGUsIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIsICZzdHIyKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KHN0cjIgIT0gTlVMTCk7CisgICAgcmV0dXJuIHN0cjI7CiB9CiAKIC8qIFRhYmxlIG9mIGRpZ2l0IHZhbHVlcyBmb3IgOC1iaXQgc3RyaW5nIC0+IGludGVnZXIgY29udmVyc2lvbi4KQEAgLTE5NDgsMTIgKzIwMDUsMTggQEAKICAqIG5vbi1kaWdpdCAod2hpY2ggbWF5IGJlICpzdHIhKS4gIEEgbm9ybWFsaXplZCBpbnQgaXMgcmV0dXJuZWQuCiAgKiBUaGUgcG9pbnQgdG8gdGhpcyByb3V0aW5lIGlzIHRoYXQgaXQgdGFrZXMgdGltZSBsaW5lYXIgaW4gdGhlIG51bWJlciBvZgogICogc3RyaW5nIGNoYXJhY3RlcnMuCisgKgorICogUmV0dXJuIHZhbHVlczoKKyAqICAgLTEgb24gc3ludGF4IGVycm9yIChleGNlcHRpb24gbmVlZHMgdG8gYmUgc2V0LCAqcmVzIGlzIHVudG91Y2hlZCkKKyAqICAgMCBlbHNlIChleGNlcHRpb24gbWF5IGJlIHNldCwgaW4gdGhhdCBjYXNlICpyZXMgaXMgc2V0IHRvIE5VTEwpCiAgKi8KLXN0YXRpYyBQeUxvbmdPYmplY3QgKgotbG9uZ19mcm9tX2JpbmFyeV9iYXNlKGNvbnN0IGNoYXIgKipzdHIsIGludCBiYXNlKQorc3RhdGljIGludAorbG9uZ19mcm9tX2JpbmFyeV9iYXNlKGNvbnN0IGNoYXIgKipzdHIsIGludCBiYXNlLCBQeUxvbmdPYmplY3QgKipyZXMpCiB7CiAgICAgY29uc3QgY2hhciAqcCA9ICpzdHI7CiAgICAgY29uc3QgY2hhciAqc3RhcnQgPSBwOworICAgIGNoYXIgcHJldiA9IDA7CisgICAgaW50IGRpZ2l0cyA9IDA7CiAgICAgaW50IGJpdHNfcGVyX2NoYXI7CiAgICAgUHlfc3NpemVfdCBuOwogICAgIFB5TG9uZ09iamVjdCAqejsKQEAgLTE5NjMsMjMgKzIwMjYsNDMgQEAKIAogICAgIGFzc2VydChiYXNlID49IDIgJiYgYmFzZSA8PSAzMiAmJiAoYmFzZSAmIChiYXNlIC0gMSkpID09IDApOwogICAgIG4gPSBiYXNlOwotICAgIGZvciAoYml0c19wZXJfY2hhciA9IC0xOyBuOyArK2JpdHNfcGVyX2NoYXIpCisgICAgZm9yIChiaXRzX3Blcl9jaGFyID0gLTE7IG47ICsrYml0c19wZXJfY2hhcikgewogICAgICAgICBuID4+PSAxOwotICAgIC8qIG4gPC0gdG90YWwgIyBvZiBiaXRzIG5lZWRlZCwgd2hpbGUgc2V0dGluZyBwIHRvIGVuZC1vZi1zdHJpbmcgKi8KLSAgICB3aGlsZSAoX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpwKV0gPCBiYXNlKQorICAgIH0KKyAgICAvKiBjb3VudCBkaWdpdHMgYW5kIHNldCBwIHRvIGVuZC1vZi1zdHJpbmcgKi8KKyAgICB3aGlsZSAoX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpwKV0gPCBiYXNlIHx8ICpwID09ICdfJykgeworICAgICAgICBpZiAoKnAgPT0gJ18nKSB7CisgICAgICAgICAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAqc3RyID0gcCAtIDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKytkaWdpdHM7CisgICAgICAgIH0KKyAgICAgICAgcHJldiA9ICpwOwogICAgICAgICArK3A7CisgICAgfQorICAgIGlmIChwcmV2ID09ICdfJykgeworICAgICAgICAvKiBUcmFpbGluZyB1bmRlcnNjb3JlIG5vdCBhbGxvd2VkLiAqLworICAgICAgICAqc3RyID0gcCAtIDE7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKICAgICAqc3RyID0gcDsKICAgICAvKiBuIDwtICMgb2YgUHl0aG9uIGRpZ2l0cyBuZWVkZWQsID0gY2VpbGluZyhuL1B5TG9uZ19TSElGVCkuICovCi0gICAgbiA9IChwIC0gc3RhcnQpICogYml0c19wZXJfY2hhciArIFB5TG9uZ19TSElGVCAtIDE7CisgICAgbiA9IGRpZ2l0cyAqIGJpdHNfcGVyX2NoYXIgKyBQeUxvbmdfU0hJRlQgLSAxOwogICAgIGlmIChuIC8gYml0c19wZXJfY2hhciA8IHAgLSBzdGFydCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgc3RyaW5nIHRvbyBsYXJnZSB0byBjb252ZXJ0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAqcmVzID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIG4gPSBuIC8gUHlMb25nX1NISUZUOwogICAgIHogPSBfUHlMb25nX05ldyhuKTsKLSAgICBpZiAoeiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoeiA9PSBOVUxMKSB7CisgICAgICAgICpyZXMgPSBOVUxMOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgLyogUmVhZCBzdHJpbmcgZnJvbSByaWdodCwgYW5kIGZpbGwgaW4gaW50IGZyb20gbGVmdDsgaS5lLiwKICAgICAgKiBmcm9tIGxlYXN0IHRvIG1vc3Qgc2lnbmlmaWNhbnQgaW4gYm90aC4KICAgICAgKi8KQEAgLTE5ODcsNyArMjA3MCwxMSBAQAogICAgIGJpdHNfaW5fYWNjdW0gPSAwOwogICAgIHBkaWdpdCA9IHotPm9iX2RpZ2l0OwogICAgIHdoaWxlICgtLXAgPj0gc3RhcnQpIHsKLSAgICAgICAgaW50IGsgPSAoaW50KV9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqcCldOworICAgICAgICBpbnQgazsKKyAgICAgICAgaWYgKCpwID09ICdfJykgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgayA9IChpbnQpX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpwKV07CiAgICAgICAgIGFzc2VydChrID49IDAgJiYgayA8IGJhc2UpOwogICAgICAgICBhY2N1bSB8PSAodHdvZGlnaXRzKWsgPDwgYml0c19pbl9hY2N1bTsKICAgICAgICAgYml0c19pbl9hY2N1bSArPSBiaXRzX3Blcl9jaGFyOwpAQCAtMjAwNiw3ICsyMDkzLDggQEAKICAgICB9CiAgICAgd2hpbGUgKHBkaWdpdCAtIHotPm9iX2RpZ2l0IDwgbikKICAgICAgICAgKnBkaWdpdCsrID0gMDsKLSAgICByZXR1cm4gbG9uZ19ub3JtYWxpemUoeik7CisgICAgKnJlcyA9IGxvbmdfbm9ybWFsaXplKHopOworICAgIHJldHVybiAwOwogfQogCiAvKiBQYXJzZXMgYW4gaW50IGZyb20gYSBieXRlc3RyaW5nLiBMZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHdpbGwgYmUKQEAgLTIwMzEsMjMgKzIxMTksMjkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQoKSBhcmcgMiBtdXN0IGJlID49IDIgYW5kIDw9IDM2Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB3aGlsZSAoKnN0ciAhPSAnXDAnICYmIFB5X0lTU1BBQ0UoUHlfQ0hBUk1BU0soKnN0cikpKQorICAgIHdoaWxlICgqc3RyICE9ICdcMCcgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqc3RyKSkpIHsKICAgICAgICAgc3RyKys7Ci0gICAgaWYgKCpzdHIgPT0gJysnKQorICAgIH0KKyAgICBpZiAoKnN0ciA9PSAnKycpIHsKICAgICAgICAgKytzdHI7CisgICAgfQogICAgIGVsc2UgaWYgKCpzdHIgPT0gJy0nKSB7CiAgICAgICAgICsrc3RyOwogICAgICAgICBzaWduID0gLTE7CiAgICAgfQogICAgIGlmIChiYXNlID09IDApIHsKLSAgICAgICAgaWYgKHN0clswXSAhPSAnMCcpCisgICAgICAgIGlmIChzdHJbMF0gIT0gJzAnKSB7CiAgICAgICAgICAgICBiYXNlID0gMTA7Ci0gICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAneCcgfHwgc3RyWzFdID09ICdYJykKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ3gnIHx8IHN0clsxXSA9PSAnWCcpIHsKICAgICAgICAgICAgIGJhc2UgPSAxNjsKLSAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICdvJyB8fCBzdHJbMV0gPT0gJ08nKQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAnbycgfHwgc3RyWzFdID09ICdPJykgewogICAgICAgICAgICAgYmFzZSA9IDg7Ci0gICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAnYicgfHwgc3RyWzFdID09ICdCJykKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ2InIHx8IHN0clsxXSA9PSAnQicpIHsKICAgICAgICAgICAgIGJhc2UgPSAyOworICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogIm9sZCIgKEMtc3R5bGUpIG9jdGFsIGxpdGVyYWwsIG5vdyBpbnZhbGlkLgogICAgICAgICAgICAgICAgaXQgbWlnaHQgc3RpbGwgYmUgemVybyB0aG91Z2ggKi8KQEAgLTIwNTgsMTIgKzIxNTIsMjYgQEAKICAgICBpZiAoc3RyWzBdID09ICcwJyAmJgogICAgICAgICAoKGJhc2UgPT0gMTYgJiYgKHN0clsxXSA9PSAneCcgfHwgc3RyWzFdID09ICdYJykpIHx8CiAgICAgICAgICAoYmFzZSA9PSA4ICAmJiAoc3RyWzFdID09ICdvJyB8fCBzdHJbMV0gPT0gJ08nKSkgfHwKLSAgICAgICAgIChiYXNlID09IDIgICYmIChzdHJbMV0gPT0gJ2InIHx8IHN0clsxXSA9PSAnQicpKSkpCisgICAgICAgICAoYmFzZSA9PSAyICAmJiAoc3RyWzFdID09ICdiJyB8fCBzdHJbMV0gPT0gJ0InKSkpKSB7CiAgICAgICAgIHN0ciArPSAyOworICAgICAgICAvKiBPbmUgdW5kZXJzY29yZSBhbGxvd2VkIGhlcmUuICovCisgICAgICAgIGlmICgqc3RyID09ICdfJykgeworICAgICAgICAgICAgKytzdHI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHN0clswXSA9PSAnXycpIHsKKwkgICAgLyogTWF5IG5vdCBzdGFydCB3aXRoIHVuZGVyc2NvcmVzLiAqLworCSAgICBnb3RvIG9uRXJyb3I7CisgICAgfQogCiAgICAgc3RhcnQgPSBzdHI7Ci0gICAgaWYgKChiYXNlICYgKGJhc2UgLSAxKSkgPT0gMCkKLSAgICAgICAgeiA9IGxvbmdfZnJvbV9iaW5hcnlfYmFzZSgmc3RyLCBiYXNlKTsKKyAgICBpZiAoKGJhc2UgJiAoYmFzZSAtIDEpKSA9PSAwKSB7CisgICAgICAgIGludCByZXMgPSBsb25nX2Zyb21fYmluYXJ5X2Jhc2UoJnN0ciwgYmFzZSwgJnopOworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgLyogU3ludGF4IGVycm9yLiAqLworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisgICAgfQogICAgIGVsc2UgewogLyoqKgogQmluYXJ5IGJhc2VzIGNhbiBiZSBjb252ZXJ0ZWQgaW4gdGltZSBsaW5lYXIgaW4gdGhlIG51bWJlciBvZiBkaWdpdHMsIGJlY2F1c2UKQEAgLTIxNTIsMTEgKzIyNjAsMTMgQEAKICoqKi8KICAgICAgICAgdHdvZGlnaXRzIGM7ICAgICAgICAgICAvKiBjdXJyZW50IGlucHV0IGNoYXJhY3RlciAqLwogICAgICAgICBQeV9zc2l6ZV90IHNpemVfejsKKyAgICAgICAgaW50IGRpZ2l0cyA9IDA7CiAgICAgICAgIGludCBpOwogICAgICAgICBpbnQgY29udndpZHRoOwogICAgICAgICB0d29kaWdpdHMgY29udm11bHRtYXgsIGNvbnZtdWx0OwogICAgICAgICBkaWdpdCAqcHosICpwenN0b3A7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHNjYW47CisgICAgICAgIGNvbnN0IGNoYXIgKnNjYW4sICpsYXN0ZGlnaXQ7CisgICAgICAgIGNoYXIgcHJldiA9IDA7CiAKICAgICAgICAgc3RhdGljIGRvdWJsZSBsb2dfYmFzZV9CQVNFWzM3XSA9IHswLjBlMCx9OwogICAgICAgICBzdGF0aWMgaW50IGNvbnZ3aWR0aF9iYXNlWzM3XSA9IHswLH07CkBAIC0yMTcwLDggKzIyODAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coKGRvdWJsZSlQeUxvbmdfQkFTRSkpOwogICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgIHR3b2RpZ2l0cyBuZXh0ID0gY29udm1heCAqIGJhc2U7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHQgPiBQeUxvbmdfQkFTRSkKKyAgICAgICAgICAgICAgICBpZiAobmV4dCA+IFB5TG9uZ19CQVNFKSB7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb252bWF4ID0gbmV4dDsKICAgICAgICAgICAgICAgICArK2k7CiAgICAgICAgICAgICB9CkBAIC0yMTgyLDIxICsyMjkzLDQzIEBACiAKICAgICAgICAgLyogRmluZCBsZW5ndGggb2YgdGhlIHN0cmluZyBvZiBudW1lcmljIGNoYXJhY3RlcnMuICovCiAgICAgICAgIHNjYW4gPSBzdHI7Ci0gICAgICAgIHdoaWxlIChfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnNjYW4pXSA8IGJhc2UpCisgICAgICAgIGxhc3RkaWdpdCA9IHN0cjsKKworICAgICAgICB3aGlsZSAoX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpzY2FuKV0gPCBiYXNlIHx8ICpzY2FuID09ICdfJykgeworICAgICAgICAgICAgaWYgKCpzY2FuID09ICdfJykgeworICAgICAgICAgICAgICAgIGlmIChwcmV2ID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICAvKiBPbmx5IG9uZSB1bmRlcnNjb3JlIGFsbG93ZWQuICovCisgICAgICAgICAgICAgICAgICAgIHN0ciA9IGxhc3RkaWdpdCArIDE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICArK2RpZ2l0czsKKyAgICAgICAgICAgICAgICBsYXN0ZGlnaXQgPSBzY2FuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldiA9ICpzY2FuOwogICAgICAgICAgICAgKytzY2FuOworICAgICAgICB9CisgICAgICAgIGlmIChwcmV2ID09ICdfJykgeworICAgICAgICAgICAgLyogVHJhaWxpbmcgdW5kZXJzY29yZSBub3QgYWxsb3dlZC4gKi8KKyAgICAgICAgICAgIC8qIFNldCBlcnJvciBwb2ludGVyIHRvIGZpcnN0IHVuZGVyc2NvcmUuICovCisgICAgICAgICAgICBzdHIgPSBsYXN0ZGlnaXQgKyAxOworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CiAKICAgICAgICAgLyogQ3JlYXRlIGFuIGludCBvYmplY3QgdGhhdCBjYW4gY29udGFpbiB0aGUgbGFyZ2VzdCBwb3NzaWJsZQogICAgICAgICAgKiBpbnRlZ2VyIHdpdGggdGhpcyBiYXNlIGFuZCBsZW5ndGguICBOb3RlIHRoYXQgdGhlcmUncyBubwogICAgICAgICAgKiBuZWVkIHRvIGluaXRpYWxpemUgei0+b2JfZGlnaXQgLS0gbm8gc2xvdCBpcyByZWFkIHVwIGJlZm9yZQogICAgICAgICAgKiBiZWluZyBzdG9yZWQgaW50by4KICAgICAgICAgICovCi0gICAgICAgIHNpemVfeiA9IChQeV9zc2l6ZV90KSgoc2NhbiAtIHN0cikgKiBsb2dfYmFzZV9CQVNFW2Jhc2VdKSArIDE7CisgICAgICAgIHNpemVfeiA9IChQeV9zc2l6ZV90KShkaWdpdHMgKiBsb2dfYmFzZV9CQVNFW2Jhc2VdKSArIDE7CiAgICAgICAgIC8qIFVuY29tbWVudCBuZXh0IGxpbmUgdG8gdGVzdCBleGNlZWRpbmdseSByYXJlIGNvcHkgY29kZSAqLwogICAgICAgICAvKiBzaXplX3ogPSAxOyAqLwogICAgICAgICBhc3NlcnQoc2l6ZV96ID4gMCk7CiAgICAgICAgIHogPSBfUHlMb25nX05ldyhzaXplX3opOwotICAgICAgICBpZiAoeiA9PSBOVUxMKQorICAgICAgICBpZiAoeiA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBQeV9TSVpFKHopID0gMDsKIAogICAgICAgICAvKiBgY29udndpZHRoYCBjb25zZWN1dGl2ZSBpbnB1dCBkaWdpdHMgYXJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUKQEAgLTIyMDcsOSArMjM0MCwxNyBAQAogCiAgICAgICAgIC8qIFdvcmsgOy0pICovCiAgICAgICAgIHdoaWxlIChzdHIgPCBzY2FuKSB7CisgICAgICAgICAgICBpZiAoKnN0ciA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICBzdHIrKzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIGdyYWIgdXAgdG8gY29udndpZHRoIGRpZ2l0cyBmcm9tIHRoZSBpbnB1dCBzdHJpbmcgKi8KICAgICAgICAgICAgIGMgPSAoZGlnaXQpX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpzdHIrKyldOwotICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IGNvbnZ3aWR0aCAmJiBzdHIgIT0gc2NhbjsgKytpLCArK3N0cikgeworICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IGNvbnZ3aWR0aCAmJiBzdHIgIT0gc2NhbjsgKytzdHIpIHsKKyAgICAgICAgICAgICAgICBpZiAoKnN0ciA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICBjID0gKHR3b2RpZ2l0cykoYyAqICBiYXNlICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludClfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnN0cildKTsKICAgICAgICAgICAgICAgICBhc3NlcnQoYyA8IFB5TG9uZ19CQVNFKTsKQEAgLTIyMjEsOCArMjM2Miw5IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmIChpICE9IGNvbnZ3aWR0aCkgewogICAgICAgICAgICAgICAgIGNvbnZtdWx0ID0gYmFzZTsKLSAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPiAxOyAtLWkpCisgICAgICAgICAgICAgICAgZm9yICggOyBpID4gMTsgLS1pKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnZtdWx0ICo9IGJhc2U7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvKiBNdWx0aXBseSB6IGJ5IGNvbnZtdWx0LCBhbmQgYWRkIGMuICovCkBAIC0yMjYwLDQxICsyNDAyLDUxIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHogPT0gTlVMTCkKKyAgICBpZiAoeiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoZXJyb3JfaWZfbm9uemVybykgewogICAgICAgICAvKiByZXNldCB0aGUgYmFzZSB0byAwLCBlbHNlIHRoZSBleGNlcHRpb24gbWVzc2FnZQogICAgICAgICAgICBkb2Vzbid0IG1ha2UgdG9vIG11Y2ggc2Vuc2UgKi8KICAgICAgICAgYmFzZSA9IDA7Ci0gICAgICAgIGlmIChQeV9TSVpFKHopICE9IDApCisgICAgICAgIGlmIChQeV9TSVpFKHopICE9IDApIHsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQogICAgICAgICAvKiB0aGVyZSBtaWdodCBzdGlsbCBiZSBvdGhlciBwcm9ibGVtcywgdGhlcmVmb3JlIGJhc2UKICAgICAgICAgICAgcmVtYWlucyB6ZXJvIGhlcmUgZm9yIHRoZSBzYW1lIHJlYXNvbiAqLwogICAgIH0KLSAgICBpZiAoc3RyID09IHN0YXJ0KQorICAgIGlmIChzdHIgPT0gc3RhcnQpIHsKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChzaWduIDwgMCkKKyAgICB9CisgICAgaWYgKHNpZ24gPCAwKSB7CiAgICAgICAgIFB5X1NJWkUoeikgPSAtKFB5X1NJWkUoeikpOwotICAgIHdoaWxlICgqc3RyICYmIFB5X0lTU1BBQ0UoUHlfQ0hBUk1BU0soKnN0cikpKQorICAgIH0KKyAgICB3aGlsZSAoKnN0ciAmJiBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpzdHIpKSkgewogICAgICAgICBzdHIrKzsKLSAgICBpZiAoKnN0ciAhPSAnXDAnKQorICAgIH0KKyAgICBpZiAoKnN0ciAhPSAnXDAnKSB7CiAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CiAgICAgbG9uZ19ub3JtYWxpemUoeik7CiAgICAgeiA9IG1heWJlX3NtYWxsX2xvbmcoeik7Ci0gICAgaWYgKHogPT0gTlVMTCkKKyAgICBpZiAoeiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChwZW5kICE9IE5VTEwpCisgICAgfQorICAgIGlmIChwZW5kICE9IE5VTEwpIHsKICAgICAgICAgKnBlbmQgPSAoY2hhciAqKXN0cjsKKyAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSB6OwogCiAgIG9uRXJyb3I6Ci0gICAgaWYgKHBlbmQgIT0gTlVMTCkKKyAgICBpZiAocGVuZCAhPSBOVUxMKSB7CiAgICAgICAgICpwZW5kID0gKGNoYXIgKilzdHI7CisgICAgfQogICAgIFB5X1hERUNSRUYoeik7CiAgICAgc2xlbiA9IHN0cmxlbihvcmlnX3N0cikgPCAyMDAgPyBzdHJsZW4ob3JpZ19zdHIpIDogMjAwOwogICAgIHN0cm9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShvcmlnX3N0ciwgc2xlbik7Ci0gICAgaWYgKHN0cm9iaiA9PSBOVUxMKQorICAgIGlmIChzdHJvYmogPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxpdGVyYWwgZm9yIGludCgpIHdpdGggYmFzZSAlZDogJS4yMDBSIiwKICAgICAgICAgICAgICAgICAgYmFzZSwgc3Ryb2JqKTsKQEAgLTIzOTUsOCArMjU0NywxMSBAQAogICAgICAgICAqcGRpdiA9IChQeUxvbmdPYmplY3QqKVB5TG9uZ19Gcm9tTG9uZygwKTsKICAgICAgICAgaWYgKCpwZGl2ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIFB5X0lOQ1JFRihhKTsKLSAgICAgICAgKnByZW0gPSAoUHlMb25nT2JqZWN0ICopIGE7CisgICAgICAgICpwcmVtID0gKFB5TG9uZ09iamVjdCAqKWxvbmdfbG9uZygoUHlPYmplY3QgKilhKTsKKyAgICAgICAgaWYgKCpwcmVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKCpwZGl2KTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKHNpemVfYiA9PSAxKSB7CkBAIC0yNzA2LDYgKzI4NjEsMTMgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKTsKICAgICAgICAgcmV0dXJuIC0xLjA7CiAgICAgfQorICAgIGlmIChQeV9BQlMoUHlfU0laRSh2KSkgPD0gMSkgeworICAgICAgICAvKiBGYXN0IHBhdGg7IHNpbmdsZSBkaWdpdCBsb25nICgzMSBiaXRzKSB3aWxsIGNhc3Qgc2FmZWx5CisgICAgICAgICAgIHRvIGRvdWJsZS4gIFRoaXMgaW1wcm92ZXMgcGVyZm9ybWFuY2Ugb2YgRlAvbG9uZyBvcGVyYXRpb25zCisgICAgICAgICAgIGJ5IDIwJS4KKyAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIChkb3VibGUpTUVESVVNX1ZBTFVFKChQeUxvbmdPYmplY3QgKil2KTsKKyAgICB9CiAgICAgeCA9IF9QeUxvbmdfRnJleHAoKFB5TG9uZ09iamVjdCAqKXYsICZleHBvbmVudCk7CiAgICAgaWYgKCh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgfHwgZXhwb25lbnQgPiBEQkxfTUFYX0VYUCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKQEAgLTI5MzAsOSArMzA5Miw3IEBACiAgICAgfQogICAgIGFzc2VydChib3Jyb3cgPT0gMCk7CiAgICAgaWYgKHNpZ24gPCAwKSB7Ci0gICAgICAgIF9QeUxvbmdfTmVnYXRlKCZ6KTsKLSAgICAgICAgaWYgKHogPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9TSVpFKHopID0gLVB5X1NJWkUoeik7CiAgICAgfQogICAgIHJldHVybiBsb25nX25vcm1hbGl6ZSh6KTsKIH0KQEAgLTI5NTIsOCArMzExMiwxNCBAQAogICAgIGlmIChQeV9TSVpFKGEpIDwgMCkgewogICAgICAgICBpZiAoUHlfU0laRShiKSA8IDApIHsKICAgICAgICAgICAgIHogPSB4X2FkZChhLCBiKTsKLSAgICAgICAgICAgIGlmICh6ICE9IE5VTEwgJiYgUHlfU0laRSh6KSAhPSAwKQorICAgICAgICAgICAgaWYgKHogIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qIHhfYWRkIHJlY2VpdmVkIGF0IGxlYXN0IG9uZSBtdWx0aXBsZS1kaWdpdCBpbnQsCisgICAgICAgICAgICAgICAgICAgYW5kIHRodXMgeiBtdXN0IGJlIGEgbXVsdGlwbGUtZGlnaXQgaW50LgorICAgICAgICAgICAgICAgICAgIFRoYXQgYWxzbyBtZWFucyB6IGlzIG5vdCBhbiBlbGVtZW50IG9mCisgICAgICAgICAgICAgICAgICAgc21hbGxfaW50cywgc28gbmVnYXRpbmcgaXQgaW4tcGxhY2UgaXMgc2FmZS4gKi8KKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlfUkVGQ05UKHopID09IDEpOwogICAgICAgICAgICAgICAgIFB5X1NJWkUoeikgPSAtKFB5X1NJWkUoeikpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHogPSB4X3N1YihiLCBhKTsKQEAgLTI5ODQsOCArMzE1MCwxMCBAQAogICAgICAgICAgICAgeiA9IHhfc3ViKGEsIGIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB6ID0geF9hZGQoYSwgYik7Ci0gICAgICAgIGlmICh6ICE9IE5VTEwgJiYgUHlfU0laRSh6KSAhPSAwKQorICAgICAgICBpZiAoeiAhPSBOVUxMKSB7CisgICAgICAgICAgICBhc3NlcnQoUHlfU0laRSh6KSA9PSAwIHx8IFB5X1JFRkNOVCh6KSA9PSAxKTsKICAgICAgICAgICAgIFB5X1NJWkUoeikgPSAtKFB5X1NJWkUoeikpOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoUHlfU0laRShiKSA8IDApCkBAIC0zNDA5LDE3ICszNTc3LDcgQEAKICAgICAvKiBmYXN0IHBhdGggZm9yIHNpbmdsZS1kaWdpdCBtdWx0aXBsaWNhdGlvbiAqLwogICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPD0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPD0gMSkgewogICAgICAgICBzdHdvZGlnaXRzIHYgPSAoc3R3b2RpZ2l0cykoTUVESVVNX1ZBTFVFKGEpKSAqIE1FRElVTV9WQUxVRShiKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXYpOwotI2Vsc2UKLSAgICAgICAgLyogaWYgd2UgZG9uJ3QgaGF2ZSBsb25nIGxvbmcgdGhlbiB3ZSdyZSBhbG1vc3QgY2VydGFpbmx5Ci0gICAgICAgICAgIHVzaW5nIDE1LWJpdCBkaWdpdHMsIHNvIHYgd2lsbCBmaXQgaW4gYSBsb25nLiAgSW4gdGhlCi0gICAgICAgICAgIHVubGlrZWx5IGV2ZW50IHRoYXQgd2UncmUgdXNpbmcgMzAtYml0IGRpZ2l0cyBvbiBhIHBsYXRmb3JtCi0gICAgICAgICAgIHdpdGhvdXQgbG9uZyBsb25nLCBhIGxhcmdlIHYgd2lsbCBqdXN0IGNhdXNlIHVzIHRvIGZhbGwKLSAgICAgICAgICAgdGhyb3VnaCB0byB0aGUgZ2VuZXJhbCBtdWx0aXBsaWNhdGlvbiBjb2RlIGJlbG93LiAqLwotICAgICAgICBpZiAodiA+PSBMT05HX01JTiAmJiB2IDw9IExPTkdfTUFYKQotICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl2KTsKLSNlbmRpZgorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXYpOwogICAgIH0KIAogICAgIHogPSBrX211bChhLCBiKTsKQEAgLTM0MzIsNiArMzU5MCw1MiBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKil6OwogfQogCisvKiBGYXN0IG1vZHVsbyBkaXZpc2lvbiBmb3Igc2luZ2xlLWRpZ2l0IGxvbmdzLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2Zhc3RfbW9kKFB5TG9uZ09iamVjdCAqYSwgUHlMb25nT2JqZWN0ICpiKQoreworICAgIHNkaWdpdCBsZWZ0ID0gYS0+b2JfZGlnaXRbMF07CisgICAgc2RpZ2l0IHJpZ2h0ID0gYi0+b2JfZGlnaXRbMF07CisgICAgc2RpZ2l0IG1vZDsKKworICAgIGFzc2VydChQeV9BQlMoUHlfU0laRShhKSkgPT0gMSk7CisgICAgYXNzZXJ0KFB5X0FCUyhQeV9TSVpFKGIpKSA9PSAxKTsKKworICAgIGlmIChQeV9TSVpFKGEpID09IFB5X1NJWkUoYikpIHsKKyAgICAgICAgLyogJ2EnIGFuZCAnYicgaGF2ZSB0aGUgc2FtZSBzaWduLiAqLworICAgICAgICBtb2QgPSBsZWZ0ICUgcmlnaHQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBFaXRoZXIgJ2EnIG9yICdiJyBpcyBuZWdhdGl2ZS4gKi8KKyAgICAgICAgbW9kID0gcmlnaHQgLSAxIC0gKGxlZnQgLSAxKSAlIHJpZ2h0OworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobW9kICogKHNkaWdpdClQeV9TSVpFKGIpKTsKK30KKworLyogRmFzdCBmbG9vciBkaXZpc2lvbiBmb3Igc2luZ2xlLWRpZ2l0IGxvbmdzLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2Zhc3RfZmxvb3JfZGl2KFB5TG9uZ09iamVjdCAqYSwgUHlMb25nT2JqZWN0ICpiKQoreworICAgIHNkaWdpdCBsZWZ0ID0gYS0+b2JfZGlnaXRbMF07CisgICAgc2RpZ2l0IHJpZ2h0ID0gYi0+b2JfZGlnaXRbMF07CisgICAgc2RpZ2l0IGRpdjsKKworICAgIGFzc2VydChQeV9BQlMoUHlfU0laRShhKSkgPT0gMSk7CisgICAgYXNzZXJ0KFB5X0FCUyhQeV9TSVpFKGIpKSA9PSAxKTsKKworICAgIGlmIChQeV9TSVpFKGEpID09IFB5X1NJWkUoYikpIHsKKyAgICAgICAgLyogJ2EnIGFuZCAnYicgaGF2ZSB0aGUgc2FtZSBzaWduLiAqLworICAgICAgICBkaXYgPSBsZWZ0IC8gcmlnaHQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBFaXRoZXIgJ2EnIG9yICdiJyBpcyBuZWdhdGl2ZS4gKi8KKyAgICAgICAgZGl2ID0gLTEgLSAobGVmdCAtIDEpIC8gcmlnaHQ7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhkaXYpOworfQorCiAvKiBUaGUgLyBhbmQgJSBvcGVyYXRvcnMgYXJlIG5vdyBkZWZpbmVkIGluIHRlcm1zIG9mIGRpdm1vZCgpLgogICAgVGhlIGV4cHJlc3Npb24gYSBtb2QgYiBoYXMgdGhlIHZhbHVlIGEgLSBiKmZsb29yKGEvYikuCiAgICBUaGUgbG9uZ19kaXZyZW0gZnVuY3Rpb24gZ2l2ZXMgdGhlIHJlbWFpbmRlciBhZnRlciBkaXZpc2lvbiBvZgpAQCAtMzQ1OSw2ICszNjYzLDMwIEBACiB7CiAgICAgUHlMb25nT2JqZWN0ICpkaXYsICptb2Q7CiAKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUodikpID09IDEgJiYgUHlfQUJTKFB5X1NJWkUodykpID09IDEpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoIGZvciBzaW5nbGUtZGlnaXQgbG9uZ3MgKi8KKyAgICAgICAgZGl2ID0gTlVMTDsKKyAgICAgICAgaWYgKHBkaXYgIT0gTlVMTCkgeworICAgICAgICAgICAgZGl2ID0gKFB5TG9uZ09iamVjdCAqKWZhc3RfZmxvb3JfZGl2KHYsIHcpOworICAgICAgICAgICAgaWYgKGRpdiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChwbW9kICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1vZCA9IChQeUxvbmdPYmplY3QgKilmYXN0X21vZCh2LCB3KTsKKyAgICAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZGl2KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcG1vZCA9IG1vZDsKKyAgICAgICAgfQorICAgICAgICBpZiAocGRpdiAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBXZSBvbmx5IHdhbnQgdG8gc2V0IGAqcGRpdmAgd2hlbiBgKnBtb2RgIGlzCisgICAgICAgICAgICAgICBzZXQgc3VjY2Vzc2Z1bGx5LiAqLworICAgICAgICAgICAgKnBkaXYgPSBkaXY7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmIChsb25nX2RpdnJlbSh2LCB3LCAmZGl2LCAmbW9kKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoKFB5X1NJWkUobW9kKSA8IDAgJiYgUHlfU0laRSh3KSA+IDApIHx8CkBAIC0zNTAzLDYgKzM3MzEsMTEgQEAKICAgICBQeUxvbmdPYmplY3QgKmRpdjsKIAogICAgIENIRUNLX0JJTk9QKGEsIGIpOworCisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKGEpKSA9PSAxICYmIFB5X0FCUyhQeV9TSVpFKGIpKSA9PSAxKSB7CisgICAgICAgIHJldHVybiBmYXN0X2Zsb29yX2RpdigoUHlMb25nT2JqZWN0KilhLCAoUHlMb25nT2JqZWN0KiliKTsKKyAgICB9CisKICAgICBpZiAobF9kaXZtb2QoKFB5TG9uZ09iamVjdCopYSwgKFB5TG9uZ09iamVjdCopYiwgJmRpdiwgTlVMTCkgPCAwKQogICAgICAgICBkaXYgPSBOVUxMOwogICAgIHJldHVybiAoUHlPYmplY3QgKilkaXY7CkBAIC0zNzQyLDkgKzM5NzUsOSBAQAogICAgIC8qIFJvdW5kIGJ5IGRpcmVjdGx5IG1vZGlmeWluZyB0aGUgbG93IGRpZ2l0IG9mIHguICovCiAgICAgbWFzayA9IChkaWdpdCkxIDw8IChleHRyYV9iaXRzIC0gMSk7CiAgICAgbG93ID0geC0+b2JfZGlnaXRbMF0gfCBpbmV4YWN0OwotICAgIGlmIChsb3cgJiBtYXNrICYmIGxvdyAmICgzKm1hc2stMSkpCisgICAgaWYgKChsb3cgJiBtYXNrKSAmJiAobG93ICYgKDNVKm1hc2stMVUpKSkKICAgICAgICAgbG93ICs9IG1hc2s7Ci0gICAgeC0+b2JfZGlnaXRbMF0gPSBsb3cgJiB+KG1hc2stMVUpOworICAgIHgtPm9iX2RpZ2l0WzBdID0gbG93ICYgfigyVSptYXNrLTFVKTsKIAogICAgIC8qIENvbnZlcnQgeCB0byBhIGRvdWJsZSBkeDsgdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICovCiAgICAgZHggPSB4LT5vYl9kaWdpdFstLXhfc2l6ZV07CkBAIC0zNzc4LDYgKzQwMTEsMTAgQEAKIAogICAgIENIRUNLX0JJTk9QKGEsIGIpOwogCisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKGEpKSA9PSAxICYmIFB5X0FCUyhQeV9TSVpFKGIpKSA9PSAxKSB7CisgICAgICAgIHJldHVybiBmYXN0X21vZCgoUHlMb25nT2JqZWN0KilhLCAoUHlMb25nT2JqZWN0KiliKTsKKyAgICB9CisKICAgICBpZiAobF9kaXZtb2QoKFB5TG9uZ09iamVjdCopYSwgKFB5TG9uZ09iamVjdCopYiwgTlVMTCwgJm1vZCkgPCAwKQogICAgICAgICBtb2QgPSBOVUxMOwogICAgIHJldHVybiAoUHlPYmplY3QgKiltb2Q7CkBAIC00MDEyLDggKzQyNDksMTAgQEAKICAgICBQeV9ERUNSRUYodyk7CiAgICAgaWYgKHggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfU0laRSh4KSA9IC0oUHlfU0laRSh4KSk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKW1heWJlX3NtYWxsX2xvbmcoeCk7CisgICAgX1B5TG9uZ19OZWdhdGUoJngpOworICAgIC8qIE5vIG5lZWQgZm9yIG1heWJlX3NtYWxsX2xvbmcgaGVyZSwgc2luY2UgYW55IHNtYWxsCisgICAgICAgbG9uZ3Mgd2lsbCBoYXZlIGJlZW4gY2F1Z2h0IGluIHRoZSBQeV9TSVpFIDw9IDEgZmFzdCBwYXRoLiAqLworICAgIHJldHVybiAoUHlPYmplY3QgKil4OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDExOCw2ICs0MzU3LDExIEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgc2hpZnQgY291bnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCisgICAgaWYgKFB5X1NJWkUoYSkgPT0gMCkgeworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOworICAgIH0KKwogICAgIC8qIHdvcmRzaGlmdCwgcmVtc2hpZnQgPSBkaXZtb2Qoc2hpZnRieSwgUHlMb25nX1NISUZUKSAqLwogICAgIHdvcmRzaGlmdCA9IHNoaWZ0YnkgLyBQeUxvbmdfU0hJRlQ7CiAgICAgcmVtc2hpZnQgID0gc2hpZnRieSAtIHdvcmRzaGlmdCAqIFB5TG9uZ19TSElGVDsKQEAgLTQ1MDIsNyArNDc0Niw3IEBACiAgICAgLyogYSBmaXRzIGludG8gYSBsb25nLCBzbyBiIG11c3QgdG9vICovCiAgICAgeCA9IFB5TG9uZ19Bc0xvbmcoKFB5T2JqZWN0ICopYSk7CiAgICAgeSA9IFB5TG9uZ19Bc0xvbmcoKFB5T2JqZWN0ICopYik7Ci0jZWxpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgJiYgUFlfTExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKKyNlbGlmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCiAgICAgeCA9IFB5TG9uZ19Bc0xvbmdMb25nKChQeU9iamVjdCAqKWEpOwogICAgIHkgPSBQeUxvbmdfQXNMb25nTG9uZygoUHlPYmplY3QgKiliKTsKICNlbHNlCkBAIC00NTIxLDcgKzQ3NjUsNyBAQAogICAgIH0KICNpZiBMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh4KTsKLSNlbGlmIGRlZmluZWQoUFlfTE9OR19MT05HKSAmJiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAorI2VsaWYgUFlfTExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh4KTsKICNlbHNlCiAjIGVycm9yICJfUHlMb25nX0dDRCIKZGlmZiAtLWdpdCBhL09iamVjdHMvbWVtb3J5b2JqZWN0LmMgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCmluZGV4IDEwMTYyY2IuLjQyOGQ4M2MgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tZW1vcnlvYmplY3QuYwpAQCAtNTcsNyArNTcsNyBAQAogICAgIH0KIAogCi1QeV9MT0NBTF9JTkxJTkUoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqKQorc3RhdGljIGlubGluZSBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICoKIG1idWZfYWxsb2Modm9pZCkKIHsKICAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOwpAQCAtMjQzLDcgKzI0Myw3IEBACiAjZGVmaW5lIEhBVkVfU1VCT0ZGU0VUU19JTl9MQVNUX0RJTSh2aWV3KSBcCiAgICAgKHZpZXctPnN1Ym9mZnNldHMgJiYgdmlldy0+c3Vib2Zmc2V0c1tkZXN0LT5uZGltLTFdID49IDApCiAKLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW5saW5lIGludAogbGFzdF9kaW1faXNfY29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIGFzc2VydChkZXN0LT5uZGltID4gMCAmJiBzcmMtPm5kaW0gPiAwKTsKQEAgLTI1OSw3ICsyNTksNyBAQAogICAgYXNzaWdubWVudHMsIHdoZXJlIHRoZSBsdmFsdWUgaXMgYWxyZWFkeSBrbm93biB0byBoYXZlIGEgc2luZ2xlIGNoYXJhY3RlcgogICAgZm9ybWF0LiBUaGlzIGlzIGEgcGVyZm9ybWFuY2UgaGFjayB0aGF0IGNvdWxkIGJlIHJld3JpdHRlbiAoaWYgcHJvcGVybHkKICAgIGJlbmNobWFya2VkKS4gKi8KLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW5saW5lIGludAogZXF1aXZfZm9ybWF0KGNvbnN0IFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCiB7CiAgICAgY29uc3QgY2hhciAqZGZtdCwgKnNmbXQ7CkBAIC0yNzksNyArMjc5LDcgQEAKIC8qIFR3byBzaGFwZXMgYXJlIGVxdWl2YWxlbnQgaWYgdGhleSBhcmUgZWl0aGVyIGVxdWFsIG9yIGlkZW50aWNhbCB1cAogICAgdG8gYSB6ZXJvIGVsZW1lbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24uIEZvciBleGFtcGxlLCBpbiBOdW1QeSBhcnJheXMKICAgIHRoZSBzaGFwZXMgWzEsIDAsIDVdIGFuZCBbMSwgMCwgN10gYXJlIGVxdWl2YWxlbnQuICovCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIGVxdWl2X3NoYXBlKGNvbnN0IFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCiB7CiAgICAgaW50IGk7CkBAIC00MzgsNyArNDM4LDcgQEAKIH0KIAogLyogSW5pdGlhbGl6ZSBzdHJpZGVzIGZvciBhIEMtY29udGlndW91cyBhcnJheS4gKi8KLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X3N0cmlkZXNfZnJvbV9zaGFwZShQeV9idWZmZXIgKnZpZXcpCiB7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtNDUxLDcgKzQ1MSw3IEBACiB9CiAKIC8qIEluaXRpYWxpemUgc3RyaWRlcyBmb3IgYSBGb3J0cmFuLWNvbnRpZ3VvdXMgYXJyYXkuICovCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9mb3J0cmFuX3N0cmlkZXNfZnJvbV9zaGFwZShQeV9idWZmZXIgKnZpZXcpCiB7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtNTEzLDcgKzUxMyw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogSW5pdGlhbGl6ZSB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVkIHdpdGggdGhlIG1hbmFnZWQgYnVmZmVyLiAqLwotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfc2hhcmVkX3ZhbHVlcyhQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIGRlc3QtPm9iaiA9IHNyYy0+b2JqOwpAQCAtNTUzLDcgKzU1Myw3IEBACiAgICAgfQogfQogCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9zdWJvZmZzZXRzKFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCiB7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtNTY3LDcgKzU2Nyw3IEBACiB9CiAKIC8qIGxlbiA9IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgKi8KLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X2xlbihQeV9idWZmZXIgKnZpZXcpCiB7CiAgICAgUHlfc3NpemVfdCBpLCBsZW47CkBAIC02MTQsNyArNjE0LDcgQEAKIAogLyogQWxsb2NhdGUgYSBuZXcgbWVtb3J5dmlldyBhbmQgcGVyZm9ybSBiYXNpYyBpbml0aWFsaXphdGlvbi4gTmV3IG1lbW9yeXZpZXdzCiAgICBhcmUgZXhjbHVzaXZlbHkgY3JlYXRlZCB0aHJvdWdoIHRoZSBtYnVmX2FkZCBmdW5jdGlvbnMuICovCi1QeV9MT0NBTF9JTkxJTkUoUHlNZW1vcnlWaWV3T2JqZWN0ICopCitzdGF0aWMgaW5saW5lIFB5TWVtb3J5Vmlld09iamVjdCAqCiBtZW1vcnlfYWxsb2MoaW50IG5kaW0pCiB7CiAgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdjsKQEAgLTEwOTksNyArMTA5OSw3IEBACiAKICNkZWZpbmUgSVNfQllURV9GT1JNQVQoZikgKGYgPT0gJ2InIHx8IGYgPT0gJ0InIHx8IGYgPT0gJ2MnKQogCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK3N0YXRpYyBpbmxpbmUgUHlfc3NpemVfdAogZ2V0X25hdGl2ZV9mbXRjaGFyKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqZm10KQogewogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOwpAQCAtMTExMSwxNyArMTExMSwxMSBAQAogICAgIGNhc2UgJ2gnOiBjYXNlICdIJzogc2l6ZSA9IHNpemVvZihzaG9ydCk7IGJyZWFrOwogICAgIGNhc2UgJ2knOiBjYXNlICdJJzogc2l6ZSA9IHNpemVvZihpbnQpOyBicmVhazsKICAgICBjYXNlICdsJzogY2FzZSAnTCc6IHNpemUgPSBzaXplb2YobG9uZyk7IGJyZWFrOwotICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGNhc2UgJ3EnOiBjYXNlICdRJzogc2l6ZSA9IHNpemVvZihQWV9MT05HX0xPTkcpOyBicmVhazsKLSAgICAjZW5kaWYKKyAgICBjYXNlICdxJzogY2FzZSAnUSc6IHNpemUgPSBzaXplb2YobG9uZyBsb25nKTsgYnJlYWs7CiAgICAgY2FzZSAnbic6IGNhc2UgJ04nOiBzaXplID0gc2l6ZW9mKFB5X3NzaXplX3QpOyBicmVhazsKICAgICBjYXNlICdmJzogc2l6ZSA9IHNpemVvZihmbG9hdCk7IGJyZWFrOwogICAgIGNhc2UgJ2QnOiBzaXplID0gc2l6ZW9mKGRvdWJsZSk7IGJyZWFrOwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgY2FzZSAnPyc6IHNpemUgPSBzaXplb2YoX0Jvb2wpOyBicmVhazsKLSAgICAjZWxzZQotICAgIGNhc2UgJz8nOiBzaXplID0gc2l6ZW9mKGNoYXIpOyBicmVhazsKLSAgICAjZW5kaWYKICAgICBjYXNlICdQJzogc2l6ZSA9IHNpemVvZih2b2lkICopOyBicmVhazsKICAgICB9CiAKQEAgLTExMzMsNyArMTEyNyw3IEBACiAgICAgcmV0dXJuIC0xOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoY2hhciAqKQorc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoKIGdldF9uYXRpdmVfZm10c3RyKGNvbnN0IGNoYXIgKmZtdCkKIHsKICAgICBpbnQgYXQgPSAwOwpAQCAtMTE1OCwxOSArMTE1MiwxMyBAQAogICAgIGNhc2UgJ0knOiBSRVRVUk4oIkkiKTsKICAgICBjYXNlICdsJzogUkVUVVJOKCJsIik7CiAgICAgY2FzZSAnTCc6IFJFVFVSTigiTCIpOwotICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIGNhc2UgJ3EnOiBSRVRVUk4oInEiKTsKICAgICBjYXNlICdRJzogUkVUVVJOKCJRIik7Ci0gICAgI2VuZGlmCiAgICAgY2FzZSAnbic6IFJFVFVSTigibiIpOwogICAgIGNhc2UgJ04nOiBSRVRVUk4oIk4iKTsKICAgICBjYXNlICdmJzogUkVUVVJOKCJmIik7CiAgICAgY2FzZSAnZCc6IFJFVFVSTigiZCIpOwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgY2FzZSAnPyc6IFJFVFVSTigiPyIpOwotICAgICNlbHNlCi0gICAgY2FzZSAnPyc6IFJFVFVSTigiPyIpOwotICAgICNlbmRpZgogICAgIGNhc2UgJ1AnOiBSRVRVUk4oIlAiKTsKICAgICB9CiAKQEAgLTEyMjEsNyArMTIwOSw3IEBACiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAgIHZpZXctPmZvcm1hdCA9IGdldF9uYXRpdmVfZm10c3RyKFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpZm10KSk7CisgICAgdmlldy0+Zm9ybWF0ID0gKGNoYXIgKilnZXRfbmF0aXZlX2ZtdHN0cihQeUJ5dGVzX0FTX1NUUklORyhhc2NpaWZtdCkpOwogICAgIGlmICh2aWV3LT5mb3JtYXQgPT0gTlVMTCkgewogICAgICAgICAvKiBOT1RfUkVBQ0hFRDogZ2V0X25hdGl2ZV9mbXRjaGFyKCkgYWxyZWFkeSB2YWxpZGF0ZXMgdGhlIGZvcm1hdC4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKQEAgLTE1ODEsMTIgKzE1NjksMTEgQEAKICAgICByZXR1cm4gbHU7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotc3RhdGljIFBZX0xPTkdfTE9ORworc3RhdGljIGxvbmcgbG9uZwogcHlsb25nX2FzX2xsZChQeU9iamVjdCAqaXRlbSkKIHsKICAgICBQeU9iamVjdCAqdG1wOwotICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisgICAgbG9uZyBsb25nIGxsZDsKIAogICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOwogICAgIGlmICh0bXAgPT0gTlVMTCkKQEAgLTE1OTcsMjEgKzE1ODQsMjAgQEAKICAgICByZXR1cm4gbGxkOwogfQogCi1zdGF0aWMgdW5zaWduZWQgUFlfTE9OR19MT05HCitzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nCiBweWxvbmdfYXNfbGx1KFB5T2JqZWN0ICppdGVtKQogewogICAgIFB5T2JqZWN0ICp0bXA7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGxsdTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGx1OwogCiAgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpLTE7CiAKICAgICBsbHUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHRtcCk7CiAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgcmV0dXJuIGxsdTsKIH0KLSNlbmRpZgogCiBzdGF0aWMgUHlfc3NpemVfdAogcHlsb25nX2FzX3pkKFB5T2JqZWN0ICppdGVtKQpAQCAtMTY1NiwxMyArMTY0MiwxMyBAQAogLyogVW5wYWNrIGEgc2luZ2xlIGl0ZW0uICdmbXQnIGNhbiBiZSBhbnkgbmF0aXZlIGZvcm1hdCBjaGFyYWN0ZXIgaW4gc3RydWN0CiAgICBtb2R1bGUgc3ludGF4LiBUaGlzIGZ1bmN0aW9uIGlzIHZlcnkgc2Vuc2l0aXZlIHRvIHNtYWxsIGNoYW5nZXMuIFdpdGggdGhpcwogICAgbGF5b3V0IGdjYyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBhIGZhc3QganVtcCB0YWJsZS4gKi8KLVB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQorc3RhdGljIGlubGluZSBQeU9iamVjdCAqCiB1bnBhY2tfc2luZ2xlKGNvbnN0IGNoYXIgKnB0ciwgY29uc3QgY2hhciAqZm10KQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGxsdTsKICAgICB1bnNpZ25lZCBsb25nIGx1OwogICAgIHNpemVfdCB6dTsKLSAgICBQWV9MT05HX0xPTkcgbGxkOworICAgIGxvbmcgbG9uZyBsbGQ7CiAgICAgbG9uZyBsZDsKICAgICBQeV9zc2l6ZV90IHpkOwogICAgIGRvdWJsZSBkOwpAQCAtMTY3OSwxMSArMTY2NSw3IEBACiAgICAgY2FzZSAnbCc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgbG9uZyk7IGdvdG8gY29udmVydF9sZDsKIAogICAgIC8qIGJvb2xlYW4gKi8KLSAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAogICAgIGNhc2UgJz8nOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIF9Cb29sKTsgZ290byBjb252ZXJ0X2Jvb2w7Ci0gICAgI2Vsc2UKLSAgICBjYXNlICc/JzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBjaGFyKTsgZ290byBjb252ZXJ0X2Jvb2w7Ci0gICAgI2VuZGlmCiAKICAgICAvKiB1bnNpZ25lZCBpbnRlZ2VycyAqLwogICAgIGNhc2UgJ0gnOiBVTlBBQ0tfU0lOR0xFKGx1LCBwdHIsIHVuc2lnbmVkIHNob3J0KTsgZ290byBjb252ZXJ0X2x1OwpAQCAtMTY5MSwxMCArMTY3Myw4IEBACiAgICAgY2FzZSAnTCc6IFVOUEFDS19TSU5HTEUobHUsIHB0ciwgdW5zaWduZWQgbG9uZyk7IGdvdG8gY29udmVydF9sdTsKIAogICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdxJzogVU5QQUNLX1NJTkdMRShsbGQsIHB0ciwgUFlfTE9OR19MT05HKTsgZ290byBjb252ZXJ0X2xsZDsKLSAgICBjYXNlICdRJzogVU5QQUNLX1NJTkdMRShsbHUsIHB0ciwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsgZ290byBjb252ZXJ0X2xsdTsKLSAgICAjZW5kaWYKKyAgICBjYXNlICdxJzogVU5QQUNLX1NJTkdMRShsbGQsIHB0ciwgbG9uZyBsb25nKTsgZ290byBjb252ZXJ0X2xsZDsKKyAgICBjYXNlICdRJzogVU5QQUNLX1NJTkdMRShsbHUsIHB0ciwgdW5zaWduZWQgbG9uZyBsb25nKTsgZ290byBjb252ZXJ0X2xsdTsKIAogICAgIC8qIHNzaXplX3QgYW5kIHNpemVfdCAqLwogICAgIGNhc2UgJ24nOiBVTlBBQ0tfU0lOR0xFKHpkLCBwdHIsIFB5X3NzaXplX3QpOyBnb3RvIGNvbnZlcnRfemQ7CkBAIC0xNzU1LDEwICsxNzM1LDEwIEBACiBzdGF0aWMgaW50CiBwYWNrX3NpbmdsZShjaGFyICpwdHIsIFB5T2JqZWN0ICppdGVtLCBjb25zdCBjaGFyICpmbXQpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGxsdTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGx1OwogICAgIHVuc2lnbmVkIGxvbmcgbHU7CiAgICAgc2l6ZV90IHp1OwotICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisgICAgbG9uZyBsb25nIGxsZDsKICAgICBsb25nIGxkOwogICAgIFB5X3NzaXplX3QgemQ7CiAgICAgZG91YmxlIGQ7CkBAIC0xODA2LDIwICsxNzg2LDE4IEBACiAgICAgICAgIGJyZWFrOwogCiAgICAgLyogbmF0aXZlIDY0LWJpdCAqLwotICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIGNhc2UgJ3EnOgogICAgICAgICBsbGQgPSBweWxvbmdfYXNfbGxkKGl0ZW0pOwogICAgICAgICBpZiAobGxkID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKLSAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbGQsIFBZX0xPTkdfTE9ORyk7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGxkLCBsb25nIGxvbmcpOwogICAgICAgICBicmVhazsKICAgICBjYXNlICdRJzoKICAgICAgICAgbGx1ID0gcHlsb25nX2FzX2xsdShpdGVtKTsKLSAgICAgICAgaWYgKGxsdSA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmIChsbHUgPT0gKHVuc2lnbmVkIGxvbmcgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7Ci0gICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGx1LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOworICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsdSwgdW5zaWduZWQgbG9uZyBsb25nKTsKICAgICAgICAgYnJlYWs7Ci0gICAgI2VuZGlmCiAKICAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KICAgICBjYXNlICduJzoKQEAgLTE4NTMsMTEgKzE4MzEsNyBAQAogICAgICAgICBsZCA9IFB5T2JqZWN0X0lzVHJ1ZShpdGVtKTsKICAgICAgICAgaWYgKGxkIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsgLyogcHJlc2VydmUgb3JpZ2luYWwgZXJyb3IgKi8KLSAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAogICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxkLCBfQm9vbCk7Ci0gICAgI2Vsc2UKLSAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgY2hhcik7Ci0gICAgI2VuZGlmCiAgICAgICAgICBicmVhazsKIAogICAgIC8qIGJ5dGVzIG9iamVjdCAqLwpAQCAtMjAyNCw3ICsxOTk4LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBhbGxvdyBleHBsaWNpdCBmb3JtIG9mIG5hdGl2ZSBmb3JtYXQgKi8KLVB5X0xPQ0FMX0lOTElORShjb25zdCBjaGFyICopCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKgogYWRqdXN0X2ZtdChjb25zdCBQeV9idWZmZXIgKnZpZXcpCiB7CiAgICAgY29uc3QgY2hhciAqZm10OwpAQCAtMjMwNiw3ICsyMjgwLDcgQEAKICAgICByZXR1cm4gdW5wYWNrX3NpbmdsZShwdHIsIGZtdCk7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW5saW5lIGludAogaW5pdF9zbGljZShQeV9idWZmZXIgKmJhc2UsIFB5T2JqZWN0ICprZXksIGludCBkaW0pCiB7CiAgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGg7CkBAIC0yNjI4LDcgKzI2MDIsNyBAQAogICAgICAgICBlcXVhbCA9ICh4ID09IHkpOyAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiB1bnBhY2tfY21wKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKnEsIGNoYXIgZm10LAogICAgICAgICAgICBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja19wLCBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja19xKQogewpAQCAtMjY0NCwxMSArMjYxOCw3IEBACiAgICAgY2FzZSAnbCc6IENNUF9TSU5HTEUocCwgcSwgbG9uZyk7IHJldHVybiBlcXVhbDsKIAogICAgIC8qIGJvb2xlYW4gKi8KLSAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAogICAgIGNhc2UgJz8nOiBDTVBfU0lOR0xFKHAsIHEsIF9Cb29sKTsgcmV0dXJuIGVxdWFsOwotICAgICNlbHNlCi0gICAgY2FzZSAnPyc6IENNUF9TSU5HTEUocCwgcSwgY2hhcik7IHJldHVybiBlcXVhbDsKLSAgICAjZW5kaWYKIAogICAgIC8qIHVuc2lnbmVkIGludGVnZXJzICovCiAgICAgY2FzZSAnSCc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgc2hvcnQpOyByZXR1cm4gZXF1YWw7CkBAIC0yNjU2LDEwICsyNjI2LDggQEAKICAgICBjYXNlICdMJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBsb25nKTsgcmV0dXJuIGVxdWFsOwogCiAgICAgLyogbmF0aXZlIDY0LWJpdCAqLwotICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGNhc2UgJ3EnOiBDTVBfU0lOR0xFKHAsIHEsIFBZX0xPTkdfTE9ORyk7IHJldHVybiBlcXVhbDsKLSAgICBjYXNlICdRJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOyByZXR1cm4gZXF1YWw7Ci0gICAgI2VuZGlmCisgICAgY2FzZSAncSc6IENNUF9TSU5HTEUocCwgcSwgbG9uZyBsb25nKTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ1EnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIGxvbmcgbG9uZyk7IHJldHVybiBlcXVhbDsKIAogICAgIC8qIHNzaXplX3QgYW5kIHNpemVfdCAqLwogICAgIGNhc2UgJ24nOiBDTVBfU0lOR0xFKHAsIHEsIFB5X3NzaXplX3QpOyByZXR1cm4gZXF1YWw7CmRpZmYgLS1naXQgYS9PYmplY3RzL21ldGhvZG9iamVjdC5jIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwppbmRleCA5NDYzNTdmLi5jMjAwMWYwIDEwMDY0NAotLS0gYS9PYmplY3RzL21ldGhvZG9iamVjdC5jCisrKyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKQEAgLTk3LDYgKzk3LDExIEBACiAgICAgaWYgKGZsYWdzID09IChNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTKSkgewogICAgICAgICByZXMgPSAoKihQeUNGdW5jdGlvbldpdGhLZXl3b3JkcyltZXRoKShzZWxmLCBhcmdzLCBrd2RzKTsKICAgICB9CisgICAgZWxzZSBpZiAoZmxhZ3MgPT0gTUVUSF9GQVNUQ0FMTCkgeworICAgICAgICBQeU9iamVjdCAqKnN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CisgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICByZXMgPSBfUHlDRnVuY3Rpb25fRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBuYXJncywga3dkcyk7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoa3dkcyAhPSBOVUxMICYmIFB5RGljdF9TaXplKGt3ZHMpICE9IDApIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCkBAIC0xNDUsNiArMTUwLDE1MyBAQAogICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCByZXMsIE5VTEwpOwogfQogCitQeU9iamVjdCAqCitfUHlDRnVuY3Rpb25fRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jX29iaiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5Q0Z1bmN0aW9uT2JqZWN0ICpmdW5jID0gKFB5Q0Z1bmN0aW9uT2JqZWN0KilmdW5jX29iajsKKyAgICBQeUNGdW5jdGlvbiBtZXRoID0gUHlDRnVuY3Rpb25fR0VUX0ZVTkNUSU9OKGZ1bmMpOworICAgIFB5T2JqZWN0ICpzZWxmID0gUHlDRnVuY3Rpb25fR0VUX1NFTEYoZnVuYyk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBpbnQgZmxhZ3M7CisKKyAgICBhc3NlcnQoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpOworICAgIGFzc2VydChmdW5jICE9IE5VTEwpOworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQobmFyZ3MgPT0gMCB8fCBhcmdzICE9IE5VTEwpOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CisKKyAgICAvKiBfUHlDRnVuY3Rpb25fRmFzdENhbGxEaWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwKKyAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQorICAgICAgIGNhbGxlciBsb3NlcyBpdHMgZXhjZXB0aW9uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKworICAgIGZsYWdzID0gUHlDRnVuY3Rpb25fR0VUX0ZMQUdTKGZ1bmMpICYgfihNRVRIX0NMQVNTIHwgTUVUSF9TVEFUSUMgfCBNRVRIX0NPRVhJU1QpOworCisgICAgc3dpdGNoIChmbGFncykKKyAgICB7CisgICAgY2FzZSBNRVRIX05PQVJHUzoKKyAgICAgICAgaWYgKGt3YXJncyAhPSBOVUxMICYmIFB5RGljdF9TaXplKGt3YXJncykgIT0gMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiUuMjAwcygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5hcmdzICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIG5vIGFyZ3VtZW50cyAoJXpkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSwgbmFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSAoKm1ldGgpIChzZWxmLCBOVUxMKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1FVEhfTzoKKyAgICAgICAgaWYgKGt3YXJncyAhPSBOVUxMICYmIFB5RGljdF9TaXplKGt3YXJncykgIT0gMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiUuMjAwcygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5hcmdzICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50ICglemQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICBmdW5jLT5tX21sLT5tbF9uYW1lLCBuYXJncyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqbWV0aCkgKHNlbGYsIGFyZ3NbMF0pOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTUVUSF9WQVJBUkdTOgorICAgIGNhc2UgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUzoKKyAgICB7CisgICAgICAgIC8qIFNsb3ctcGF0aDogY3JlYXRlIGEgdGVtcG9yYXJ5IHR1cGxlICovCisgICAgICAgIFB5T2JqZWN0ICp0dXBsZTsKKworICAgICAgICBpZiAoIShmbGFncyAmIE1FVEhfS0VZV09SRFMpICYmIGt3YXJncyAhPSBOVUxMICYmIFB5RGljdF9TaXplKGt3YXJncykgIT0gMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICB0dXBsZSA9IF9QeVN0YWNrX0FzVHVwbGUoYXJncywgbmFyZ3MpOworICAgICAgICBpZiAodHVwbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmxhZ3MgJiBNRVRIX0tFWVdPUkRTKSB7CisgICAgICAgICAgICByZXN1bHQgPSAoKihQeUNGdW5jdGlvbldpdGhLZXl3b3JkcyltZXRoKSAoc2VsZiwgdHVwbGUsIGt3YXJncyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSAoKm1ldGgpIChzZWxmLCB0dXBsZSk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBNRVRIX0ZBU1RDQUxMOgorICAgIHsKKyAgICAgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICAgICAgUHlPYmplY3QgKmt3bmFtZXM7CisgICAgICAgIF9QeUNGdW5jdGlvbkZhc3QgZmFzdG1ldGggPSAoX1B5Q0Z1bmN0aW9uRmFzdCltZXRoOworCisgICAgICAgIHN0YWNrID0gX1B5U3RhY2tfVW5wYWNrRGljdChhcmdzLCBuYXJncywga3dhcmdzLCAma3duYW1lcywgZnVuY19vYmopOworICAgICAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSAoKmZhc3RtZXRoKSAoc2VsZiwgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgaWYgKHN0YWNrICE9IGFyZ3MpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgICAgICB9CisgICAgICAgIFB5X1hERUNSRUYoa3duYW1lcyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJCYWQgY2FsbCBmbGFncyBpbiBQeUNGdW5jdGlvbl9DYWxsLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiTUVUSF9PTERBUkdTIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQhIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmNfb2JqLCByZXN1bHQsIE5VTEwpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlPYmplY3QgKgorX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqa3dkaWN0LCAqcmVzdWx0OworICAgIFB5X3NzaXplX3Qgbmt3YXJncyA9IChrd25hbWVzID09IE5VTEwpID8gMCA6IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisKKyAgICBhc3NlcnQoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpOworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQoa3duYW1lcyA9PSBOVUxMIHx8IFB5VHVwbGVfQ2hlY2tFeGFjdChrd25hbWVzKSk7CisgICAgYXNzZXJ0KChuYXJncyA9PSAwICYmIG5rd2FyZ3MgPT0gMCkgfHwgc3RhY2sgIT0gTlVMTCk7CisgICAgLyoga3duYW1lcyBtdXN0IG9ubHkgY29udGFpbnMgc3RyIHN0cmluZ3MsIG5vIHN1YmNsYXNzLCBhbmQgYWxsIGtleXMgbXVzdAorICAgICAgIGJlIHVuaXF1ZSAqLworCisgICAgaWYgKG5rd2FyZ3MgPiAwKSB7CisgICAgICAgIGt3ZGljdCA9IF9QeVN0YWNrX0FzRGljdChzdGFjayArIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAga3dkaWN0ID0gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlDRnVuY3Rpb25fRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBuYXJncywga3dkaWN0KTsKKyAgICBQeV9YREVDUkVGKGt3ZGljdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogLyogTWV0aG9kcyAodGhlIHN0YW5kYXJkIGJ1aWx0LWluIG1ldGhvZHMsIHRoYXQgaXMpICovCiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9PYmplY3RzL21vZHVsZW9iamVjdC5jIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwppbmRleCBhYzA3NjQyLi5kY2FlMWM0IDEwMDY0NAotLS0gYS9PYmplY3RzL21vZHVsZW9iamVjdC5jCisrKyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKQEAgLTM4MCw3ICszODAsNyBAQAogICAgIGZvciAoY3VyX3Nsb3QgPSBkZWYtPm1fc2xvdHM7IGN1cl9zbG90ICYmIGN1cl9zbG90LT5zbG90OyBjdXJfc2xvdCsrKSB7CiAgICAgICAgIHN3aXRjaCAoY3VyX3Nsb3QtPnNsb3QpIHsKICAgICAgICAgICAgIGNhc2UgUHlfbW9kX2NyZWF0ZToKLSAgICAgICAgICAgICAgICAvKiBoYW5kbGVkIGluIFB5TW9kdWxlX0NyZWF0ZUZyb21TbG90cyAqLworICAgICAgICAgICAgICAgIC8qIGhhbmRsZWQgaW4gUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyICovCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFB5X21vZF9leGVjOgogICAgICAgICAgICAgICAgIHJldCA9ICgoaW50ICgqKShQeU9iamVjdCAqKSljdXJfc2xvdC0+dmFsdWUpKG1vZHVsZSk7CkBAIC00NTAsOCArNDUwLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGQgPSAoKFB5TW9kdWxlT2JqZWN0ICopbSkgLT4gbWRfZGljdDsKLSAgICBpZiAoZCA9PSBOVUxMKQotICAgICAgICAoKFB5TW9kdWxlT2JqZWN0ICopbSkgLT4gbWRfZGljdCA9IGQgPSBQeURpY3RfTmV3KCk7CisgICAgYXNzZXJ0KGQgIT0gTlVMTCk7CiAgICAgcmV0dXJuIGQ7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMgYi9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jCmluZGV4IDNkMjdhOTUuLjBiYjMwNjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYwpAQCAtMSw0ICsxLDQgQEAKLS8qIG5hbWVzcGFjZSBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KKy8vIG5hbWVzcGFjZSBvYmplY3QgaW1wbGVtZW50YXRpb24KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgpAQCAtMTYsNyArMTYsNyBAQAogfTsKIAogCi0vKiBNZXRob2RzICovCisvLyBNZXRob2RzCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBuYW1lc3BhY2VfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQpAQCAtNDAsNyArNDAsNyBAQAogc3RhdGljIGludAogbmFtZXNwYWNlX2luaXQoX1B5TmFtZXNwYWNlT2JqZWN0ICpucywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIC8qIGlnbm9yZSBhcmdzIGlmIGl0J3MgTlVMTCBvciBlbXB0eSAqLworICAgIC8vIGlnbm9yZSBhcmdzIGlmIGl0J3MgTlVMTCBvciBlbXB0eQogICAgIGlmIChhcmdzICE9IE5VTEwpIHsKICAgICAgICAgUHlfc3NpemVfdCBhcmdjb3VudCA9IFB5T2JqZWN0X1NpemUoYXJncyk7CiAgICAgICAgIGlmIChhcmdjb3VudCA8IDApCkBAIC0xOTEsNyArMTkxLDcgQEAKIHN0YXRpYyBQeU1ldGhvZERlZiBuYW1lc3BhY2VfbWV0aG9kc1tdID0gewogICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbiluYW1lc3BhY2VfcmVkdWNlLCBNRVRIX05PQVJHUywKICAgICAgbmFtZXNwYWNlX3JlZHVjZV9fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgIE5VTEx9ICAvKiBzZW50aW5lbCAqLworICAgIHtOVUxMLCAgICAgICAgIE5VTEx9ICAvLyBzZW50aW5lbAogfTsKIAogCmRpZmYgLS1naXQgYS9PYmplY3RzL29iamVjdC5jIGIvT2JqZWN0cy9vYmplY3QuYwppbmRleCA4MDI0ODg5Li5lMDhmOWE5IDEwMDY0NAotLS0gYS9PYmplY3RzL29iamVjdC5jCisrKyBiL09iamVjdHMvb2JqZWN0LmMKQEAgLTIyLDEyICsyMiw2IEBACiB7CiAgICAgUHlPYmplY3QgKm87CiAgICAgUHlfc3NpemVfdCB0b3RhbCA9IF9QeV9SZWZUb3RhbDsKLSAgICAvKiBpZ25vcmUgdGhlIHJlZmVyZW5jZXMgdG8gdGhlIGR1bW15IG9iamVjdCBvZiB0aGUgZGljdHMgYW5kIHNldHMKLSAgICAgICBiZWNhdXNlIHRoZXkgYXJlIG5vdCByZWxpYWJsZSBhbmQgbm90IHVzZWZ1bCAobm93IHRoYXQgdGhlCi0gICAgICAgaGFzaCB0YWJsZSBjb2RlIGlzIHdlbGwtdGVzdGVkKSAqLwotICAgIG8gPSBfUHlEaWN0X0R1bW15KCk7Ci0gICAgaWYgKG8gIT0gTlVMTCkKLSAgICAgICAgdG90YWwgLT0gby0+b2JfcmVmY250OwogICAgIG8gPSBfUHlTZXRfRHVtbXk7CiAgICAgaWYgKG8gIT0gTlVMTCkKICAgICAgICAgdG90YWwgLT0gby0+b2JfcmVmY250OwpAQCAtMTA5LDYgKzEwMywxNSBAQAogZHVtcF9jb3VudHMoRklMRSogZikKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwOworICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKnZhbHVlOworICAgIF9QeV9JREVOVElGSUVSKHNob3dhbGxvY2NvdW50KTsKKworICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtSWQoeG9wdGlvbnMsICZQeUlkX3Nob3dhbGxvY2NvdW50KTsKKyAgICBpZiAodmFsdWUgIT0gUHlfVHJ1ZSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yICh0cCA9IHR5cGVfbGlzdDsgdHA7IHRwID0gdHAtPnRwX25leHQpCiAgICAgICAgIGZwcmludGYoZiwgIiVzIGFsbG9jJ2Q6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQsICIKQEAgLTY0NCw3ICs2NDcsNyBAQAogLyogTWFwIHJpY2ggY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gdGhlaXIgc3dhcHBlZCB2ZXJzaW9uLCBlLmcuIExUIDwtLT4gR1QgKi8KIGludCBfUHlfU3dhcHBlZE9wW10gPSB7UHlfR1QsIFB5X0dFLCBQeV9FUSwgUHlfTkUsIFB5X0xULCBQeV9MRX07CiAKLXN0YXRpYyBjaGFyICpvcHN0cmluZ3NbXSA9IHsiPCIsICI8PSIsICI9PSIsICIhPSIsICI+IiwgIj49In07CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG9wc3RyaW5nc1tdID0geyI8IiwgIjw9IiwgIj09IiwgIiE9IiwgIj4iLCAiPj0ifTsKIAogLyogUGVyZm9ybSBhIHJpY2ggY29tcGFyaXNvbiwgcmFpc2luZyBUeXBlRXJyb3Igd2hlbiB0aGUgcmVxdWVzdGVkIGNvbXBhcmlzb24KICAgIG9wZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQuICovCkBAIC02ODYsMTEgKzY4OSwxMCBAQAogICAgICAgICByZXMgPSAodiAhPSB3KSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgLyogWFhYIFNwZWNpYWwtY2FzZSBOb25lIHNvIGl0IGRvZXNuJ3Qgc2hvdyBhcyBOb25lVHlwZSgpICovCiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAidW5vcmRlcmFibGUgdHlwZXM6ICUuMTAwcygpICVzICUuMTAwcygpIiwKLSAgICAgICAgICAgICAgICAgICAgIHYtPm9iX3R5cGUtPnRwX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiJyVzJyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICclLjEwMHMnIGFuZCAnJS4xMDBzJyIsCiAgICAgICAgICAgICAgICAgICAgICBvcHN0cmluZ3Nbb3BdLAorICAgICAgICAgICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIHctPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMDQxLDggKzEwNDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgbmFtZS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICBQeV9JTkNSRUYobmFtZSk7CiAKICAgICBpZiAodHAtPnRwX2RpY3QgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KHRwKSA8IDApCkBAIC0xMDUwLDEwICsxMDUxLDEwIEBACiAgICAgfQogCiAgICAgZGVzY3IgPSBfUHlUeXBlX0xvb2t1cCh0cCwgbmFtZSk7Ci0gICAgUHlfWElOQ1JFRihkZXNjcik7CiAKICAgICBmID0gTlVMTDsKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZGVzY3IpOwogICAgICAgICBmID0gZGVzY3ItPm9iX3R5cGUtPnRwX2Rlc2NyX2dldDsKICAgICAgICAgaWYgKGYgIT0gTlVMTCAmJiBQeURlc2NyX0lzRGF0YShkZXNjcikpIHsKICAgICAgICAgICAgIHJlcyA9IGYoZGVzY3IsIG9iaiwgKFB5T2JqZWN0ICopb2JqLT5vYl90eXBlKTsKQEAgLTEwNzMsOCArMTA3NCw5IEBACiAgICAgICAgICAgICAgICAgaWYgKHRzaXplIDwgMCkKICAgICAgICAgICAgICAgICAgICAgdHNpemUgPSAtdHNpemU7CiAgICAgICAgICAgICAgICAgc2l6ZSA9IF9QeU9iamVjdF9WQVJfU0laRSh0cCwgdHNpemUpOworICAgICAgICAgICAgICAgIGFzc2VydChzaXplIDw9IFBZX1NTSVpFX1RfTUFYKTsKIAotICAgICAgICAgICAgICAgIGRpY3RvZmZzZXQgKz0gKGxvbmcpc2l6ZTsKKyAgICAgICAgICAgICAgICBkaWN0b2Zmc2V0ICs9IChQeV9zc2l6ZV90KXNpemU7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGRpY3RvZmZzZXQgPiAwKTsKICAgICAgICAgICAgICAgICBhc3NlcnQoZGljdG9mZnNldCAlIFNJWkVPRl9WT0lEX1AgPT0gMCk7CiAgICAgICAgICAgICB9CkBAIC0xMTQyLDEyICsxMTQ0LDExIEBACiAgICAgUHlfSU5DUkVGKG5hbWUpOwogCiAgICAgZGVzY3IgPSBfUHlUeXBlX0xvb2t1cCh0cCwgbmFtZSk7Ci0gICAgUHlfWElOQ1JFRihkZXNjcik7CiAKLSAgICBmID0gTlVMTDsKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZGVzY3IpOwogICAgICAgICBmID0gZGVzY3ItPm9iX3R5cGUtPnRwX2Rlc2NyX3NldDsKLSAgICAgICAgaWYgKGYgIT0gTlVMTCAmJiBQeURlc2NyX0lzRGF0YShkZXNjcikpIHsKKyAgICAgICAgaWYgKGYgIT0gTlVMTCkgewogICAgICAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCB2YWx1ZSk7CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KQEAgLTExNTUsNDAgKzExNTYsMzIgQEAKIAogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7Ci0gICAgICAgIGlmIChkaWN0cHRyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdERpY3RfU2V0SXRlbShQeV9UWVBFKG9iaiksIGRpY3RwdHIsIG5hbWUsIHZhbHVlKTsKLSAgICAgICAgICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CisgICAgICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChkZXNjciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMTAwcycgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVVJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjUwcycgb2JqZWN0IGF0dHJpYnV0ZSAnJVUnIGlzIHJlYWQtb25seSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQorICAgICAgICByZXMgPSBfUHlPYmplY3REaWN0X1NldEl0ZW0odHAsIGRpY3RwdHIsIG5hbWUsIHZhbHVlKTsKICAgICB9Ci0gICAgaWYgKGRpY3QgIT0gTlVMTCkgeworICAgIGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoZGljdCk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQogICAgICAgICAgICAgcmVzID0gUHlEaWN0X0RlbEl0ZW0oZGljdCwgbmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKGRpY3QsIG5hbWUsIHZhbHVlKTsKICAgICAgICAgUHlfREVDUkVGKGRpY3QpOwotICAgICAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKICAgICB9CisgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CiAKLSAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHJlcyA9IGYoZGVzY3IsIG9iaiwgdmFsdWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgaWYgKGRlc2NyID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclVSciLAotICAgICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgICAgICAiJyUuNTBzJyBvYmplY3QgYXR0cmlidXRlICclVScgaXMgcmVhZC1vbmx5IiwKLSAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwogICBkb25lOgogICAgIFB5X1hERUNSRUYoZGVzY3IpOwogICAgIFB5X0RFQ1JFRihuYW1lKTsKQEAgLTEyMDQsNyArMTE5Nyw3IEBACiBpbnQKIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKKyAgICBQeU9iamVjdCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOwogICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGhhcyBubyBfX2RpY3RfXyIpOwpAQCAtMTIyMCwxMCArMTIxMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAibm90IGEgJyUuMjAwcyciLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZGljdCA9ICpkaWN0cHRyOwotICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgICpkaWN0cHRyID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X1hTRVRSRUYoKmRpY3RwdHIsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYm1hbGxvYy5jIGIvT2JqZWN0cy9vYm1hbGxvYy5jCmluZGV4IDdjYzg4OWYuLmExMTQyZjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JtYWxsb2MuYworKysgYi9PYmplY3RzL29ibWFsbG9jLmMKQEAgLTEsMzEgKzEsNDIgQEAKICNpbmNsdWRlICJQeXRob24uaCIKIAorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKworCisvKiBEZWZpbmVkIGluIHRyYWNlbWFsbG9jLmMgKi8KK2V4dGVybiB2b2lkIF9QeU1lbV9EdW1wVHJhY2ViYWNrKGludCBmZCwgY29uc3Qgdm9pZCAqcHRyKTsKKworCiAvKiBQeXRob24ncyBtYWxsb2Mgd3JhcHBlcnMgKHNlZSBweW1lbS5oKSAqLwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcgICAvKiBXSVRIX1BZTUFMTE9DICYmIFBZTUFMTE9DX0RFQlVHICovCisjdW5kZWYgIHVpbnQKKyNkZWZpbmUgdWludCAgICB1bnNpZ25lZCBpbnQgICAgLyogYXNzdW1pbmcgPj0gMTYgYml0cyAqLworCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmF3TWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z1Jhd0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CitzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmF3UmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQgX1B5TWVtX0RlYnVnUmF3RnJlZSh2b2lkICpjdHgsIHZvaWQgKnApOworCiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOwogc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7Ci1zdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQgX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApOwogCiBzdGF0aWMgdm9pZCBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcyhjb25zdCB2b2lkICpwKTsKIHN0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhjaGFyIGFwaV9pZCwgY29uc3Qgdm9pZCAqcCk7Ci0jZW5kaWYKIAogI2lmIGRlZmluZWQoX19oYXNfZmVhdHVyZSkgIC8qIENsYW5nICovCiAgI2lmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpICAvKiBpcyBBU0FOIGVuYWJsZWQ/ICovCiAgICNkZWZpbmUgQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTIFwKLSAgICAgICAgX19hdHRyaWJ1dGVfXygobm9fYWRkcmVzc19zYWZldHlfYW5hbHlzaXMpKSBcCi0gICAgICAgIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCisgICAgICAgIF9fYXR0cmlidXRlX18oKG5vX2FkZHJlc3Nfc2FmZXR5X2FuYWx5c2lzKSkKICAjZWxzZQogICAjZGVmaW5lIEFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUwogICNlbmRpZgogI2Vsc2UKICAjaWYgZGVmaW5lZChfX1NBTklUSVpFX0FERFJFU1NfXykgIC8qIEdDQyA0LjgueCwgaXMgQVNBTiBlbmFibGVkPyAqLwogICAjZGVmaW5lIEFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUyBcCi0gICAgICAgIF9fYXR0cmlidXRlX18oKG5vX2FkZHJlc3Nfc2FmZXR5X2FuYWx5c2lzKSkgXAotICAgICAgICBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorICAgICAgICBfX2F0dHJpYnV0ZV9fKChub19hZGRyZXNzX3NhZmV0eV9hbmFseXNpcykpCiAgI2Vsc2UKICAgI2RlZmluZSBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKICAjZW5kaWYKQEAgLTE0NSw5ICsxNTYsOCBAQAogI2Vsc2UKICMgIGRlZmluZSBQWU9CSl9GVU5DUyBQWVJBV19GVU5DUwogI2VuZGlmCi0jZGVmaW5lIFBZTUVNX0ZVTkNTIFBZUkFXX0ZVTkNTCisjZGVmaW5lIFBZTUVNX0ZVTkNTIFBZT0JKX0ZVTkNTCiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIFdlIHRhZyBlYWNoIGJsb2NrIHdpdGggYW4gQVBJIElEIGluIG9yZGVyIHRvIHRhZyBBUEkgdmlvbGF0aW9ucyAqLwogICAgIGNoYXIgYXBpX2lkOwpAQCAtMTYzLDE5ICsxNzMsMjEgQEAKICAgICB7J28nLCB7TlVMTCwgUFlPQkpfRlVOQ1N9fQogICAgIH07CiAKLSNkZWZpbmUgUFlEQkdfRlVOQ1MgX1B5TWVtX0RlYnVnTWFsbG9jLCBfUHlNZW1fRGVidWdDYWxsb2MsIF9QeU1lbV9EZWJ1Z1JlYWxsb2MsIF9QeU1lbV9EZWJ1Z0ZyZWUKLSNlbmRpZgorI2RlZmluZSBQWVJBV0RCR19GVU5DUyBcCisgICAgX1B5TWVtX0RlYnVnUmF3TWFsbG9jLCBfUHlNZW1fRGVidWdSYXdDYWxsb2MsIF9QeU1lbV9EZWJ1Z1Jhd1JlYWxsb2MsIF9QeU1lbV9EZWJ1Z1Jhd0ZyZWUKKyNkZWZpbmUgUFlEQkdfRlVOQ1MgXAorICAgIF9QeU1lbV9EZWJ1Z01hbGxvYywgX1B5TWVtX0RlYnVnQ2FsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCiAKIHN0YXRpYyBQeU1lbUFsbG9jYXRvckV4IF9QeU1lbV9SYXcgPSB7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICAmX1B5TWVtX0RlYnVnLnJhdywgUFlEQkdfRlVOQ1MKKyNpZmRlZiBQeV9ERUJVRworICAgICZfUHlNZW1fRGVidWcucmF3LCBQWVJBV0RCR19GVU5DUwogI2Vsc2UKICAgICBOVUxMLCBQWVJBV19GVU5DUwogI2VuZGlmCiAgICAgfTsKIAogc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5TWVtID0gewotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCisjaWZkZWYgUHlfREVCVUcKICAgICAmX1B5TWVtX0RlYnVnLm1lbSwgUFlEQkdfRlVOQ1MKICNlbHNlCiAgICAgTlVMTCwgUFlNRU1fRlVOQ1MKQEAgLTE4MywxNiArMTk1LDc2IEBACiAgICAgfTsKIAogc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5T2JqZWN0ID0gewotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCisjaWZkZWYgUHlfREVCVUcKICAgICAmX1B5TWVtX0RlYnVnLm9iaiwgUFlEQkdfRlVOQ1MKICNlbHNlCiAgICAgTlVMTCwgUFlPQkpfRlVOQ1MKICNlbmRpZgogICAgIH07CiAKK2ludAorX1B5TWVtX1NldHVwQWxsb2NhdG9ycyhjb25zdCBjaGFyICpvcHQpCit7CisgICAgaWYgKG9wdCA9PSBOVUxMIHx8ICpvcHQgPT0gJ1wwJykgeworICAgICAgICAvKiBQWVRIT05NQUxMT0MgaXMgZW1wdHkgb3IgaXMgbm90IHNldCBvciBpZ25vcmVkICgtRS8tSSBjb21tYW5kIGxpbmUKKyAgICAgICAgICAgb3B0aW9ucyk6IHVzZSBkZWZhdWx0IGFsbG9jYXRvcnMgKi8KKyNpZmRlZiBQeV9ERUJVRworIyAgaWZkZWYgV0lUSF9QWU1BTExPQworICAgICAgICBvcHQgPSAicHltYWxsb2NfZGVidWciOworIyAgZWxzZQorICAgICAgICBvcHQgPSAibWFsbG9jX2RlYnVnIjsKKyMgIGVuZGlmCisjZWxzZQorICAgLyogIVB5X0RFQlVHICovCisjICBpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgICAgIG9wdCA9ICJweW1hbGxvYyI7CisjICBlbHNlCisgICAgICAgIG9wdCA9ICJtYWxsb2MiOworIyAgZW5kaWYKKyNlbmRpZgorICAgIH0KKworICAgIGlmIChzdHJjbXAob3B0LCAiZGVidWciKSA9PSAwKSB7CisgICAgICAgIFB5TWVtX1NldHVwRGVidWdIb29rcygpOworICAgIH0KKyAgICBlbHNlIGlmIChzdHJjbXAob3B0LCAibWFsbG9jIikgPT0gMCB8fCBzdHJjbXAob3B0LCAibWFsbG9jX2RlYnVnIikgPT0gMCkKKyAgICB7CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2MgPSB7TlVMTCwgUFlSQVdfRlVOQ1N9OworCisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJmFsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9PQkosICZhbGxvYyk7CisKKyAgICAgICAgaWYgKHN0cmNtcChvcHQsICJtYWxsb2NfZGVidWciKSA9PSAwKQorICAgICAgICAgICAgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKCk7CisgICAgfQorI2lmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICBlbHNlIGlmIChzdHJjbXAob3B0LCAicHltYWxsb2MiKSA9PSAwCisgICAgICAgICAgICAgfHwgc3RyY21wKG9wdCwgInB5bWFsbG9jX2RlYnVnIikgPT0gMCkKKyAgICB7CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggcmF3X2FsbG9jID0ge05VTEwsIFBZUkFXX0ZVTkNTfTsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCBtZW1fYWxsb2MgPSB7TlVMTCwgUFlNRU1fRlVOQ1N9OworICAgICAgICBQeU1lbUFsbG9jYXRvckV4IG9ial9hbGxvYyA9IHtOVUxMLCBQWU9CSl9GVU5DU307CisKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZyYXdfYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJm1lbV9hbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmb2JqX2FsbG9jKTsKKworICAgICAgICBpZiAoc3RyY21wKG9wdCwgInB5bWFsbG9jX2RlYnVnIikgPT0gMCkKKyAgICAgICAgICAgIFB5TWVtX1NldHVwRGVidWdIb29rcygpOworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICAvKiB1bmtub3duIGFsbG9jYXRvciAqLworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiAjdW5kZWYgUFlSQVdfRlVOQ1MKICN1bmRlZiBQWU1FTV9GVU5DUwogI3VuZGVmIFBZT0JKX0ZVTkNTCisjdW5kZWYgUFlSQVdEQkdfRlVOQ1MKICN1bmRlZiBQWURCR19GVU5DUwogCiBzdGF0aWMgUHlPYmplY3RBcmVuYUFsbG9jYXRvciBfUHlPYmplY3RfQXJlbmEgPSB7TlVMTCwKQEAgLTIwNSwyMyArMjc3LDQ2IEBACiAjZW5kaWYKICAgICB9OwogCisjaWZkZWYgV0lUSF9QWU1BTExPQworc3RhdGljIGludAorX1B5TWVtX0RlYnVnRW5hYmxlZCh2b2lkKQoreworICAgIHJldHVybiAoX1B5T2JqZWN0Lm1hbGxvYyA9PSBfUHlNZW1fRGVidWdNYWxsb2MpOworfQorCitpbnQKK19QeU1lbV9QeW1hbGxvY0VuYWJsZWQodm9pZCkKK3sKKyAgICBpZiAoX1B5TWVtX0RlYnVnRW5hYmxlZCgpKSB7CisgICAgICAgIHJldHVybiAoX1B5TWVtX0RlYnVnLm9iai5hbGxvYy5tYWxsb2MgPT0gX1B5T2JqZWN0X01hbGxvYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gKF9QeU9iamVjdC5tYWxsb2MgPT0gX1B5T2JqZWN0X01hbGxvYyk7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQKIFB5TWVtX1NldHVwRGVidWdIb29rcyh2b2lkKQogewotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgUHlNZW1BbGxvY2F0b3JFeCBhbGxvYzsKIAorICAgIGFsbG9jLm1hbGxvYyA9IF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYzsKKyAgICBhbGxvYy5jYWxsb2MgPSBfUHlNZW1fRGVidWdSYXdDYWxsb2M7CisgICAgYWxsb2MucmVhbGxvYyA9IF9QeU1lbV9EZWJ1Z1Jhd1JlYWxsb2M7CisgICAgYWxsb2MuZnJlZSA9IF9QeU1lbV9EZWJ1Z1Jhd0ZyZWU7CisKKyAgICBpZiAoX1B5TWVtX1Jhdy5tYWxsb2MgIT0gX1B5TWVtX0RlYnVnUmF3TWFsbG9jKSB7CisgICAgICAgIGFsbG9jLmN0eCA9ICZfUHlNZW1fRGVidWcucmF3OworICAgICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJl9QeU1lbV9EZWJ1Zy5yYXcuYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJmFsbG9jKTsKKyAgICB9CisKICAgICBhbGxvYy5tYWxsb2MgPSBfUHlNZW1fRGVidWdNYWxsb2M7CiAgICAgYWxsb2MuY2FsbG9jID0gX1B5TWVtX0RlYnVnQ2FsbG9jOwogICAgIGFsbG9jLnJlYWxsb2MgPSBfUHlNZW1fRGVidWdSZWFsbG9jOwogICAgIGFsbG9jLmZyZWUgPSBfUHlNZW1fRGVidWdGcmVlOwogCi0gICAgaWYgKF9QeU1lbV9SYXcubWFsbG9jICE9IF9QeU1lbV9EZWJ1Z01hbGxvYykgewotICAgICAgICBhbGxvYy5jdHggPSAmX1B5TWVtX0RlYnVnLnJhdzsKLSAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZfUHlNZW1fRGVidWcucmF3LmFsbG9jKTsKLSAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZhbGxvYyk7Ci0gICAgfQotCiAgICAgaWYgKF9QeU1lbS5tYWxsb2MgIT0gX1B5TWVtX0RlYnVnTWFsbG9jKSB7CiAgICAgICAgIGFsbG9jLmN0eCA9ICZfUHlNZW1fRGVidWcubWVtOwogICAgICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJl9QeU1lbV9EZWJ1Zy5tZW0uYWxsb2MpOwpAQCAtMjMzLDcgKzMyOCw2IEBACiAgICAgICAgIFB5TWVtX0dldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmX1B5TWVtX0RlYnVnLm9iai5hbGxvYyk7CiAgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmYWxsb2MpOwogICAgIH0KLSNlbmRpZgogfQogCiB2b2lkCkBAIC0yNjQsNyArMzU4LDYgQEAKICAgICBjYXNlIFBZTUVNX0RPTUFJTl9PQko6IF9QeU9iamVjdCA9ICphbGxvY2F0b3I7IGJyZWFrOwogICAgIC8qIGlnbm9yZSB1bmtub3duIGRvbWFpbiAqLwogICAgIH0KLQogfQogCiB2b2lkCkBAIC02NDIsMjQgKzczNSw4IEBACiAjZGVmaW5lIFNJTVBMRUxPQ0tfTE9DSyhsb2NrKSAgIC8qIGFjcXVpcmUgcmVsZWFzZWQgbG9jayAqLwogI2RlZmluZSBTSU1QTEVMT0NLX1VOTE9DSyhsb2NrKSAvKiByZWxlYXNlIGFjcXVpcmVkIGxvY2sgKi8KIAotLyoKLSAqIEJhc2ljIHR5cGVzCi0gKiBJIGRvbid0IGNhcmUgaWYgdGhlc2UgYXJlIGRlZmluZWQgaW4gPHN5cy90eXBlcy5oPiBvciBlbHNld2hlcmUuIEF4aW9tLgotICovCi0jdW5kZWYgIHVjaGFyCi0jZGVmaW5lIHVjaGFyICAgdW5zaWduZWQgY2hhciAgIC8qIGFzc3VtaW5nID09IDggYml0cyAgKi8KLQotI3VuZGVmICB1aW50Ci0jZGVmaW5lIHVpbnQgICAgdW5zaWduZWQgaW50ICAgIC8qIGFzc3VtaW5nID49IDE2IGJpdHMgKi8KLQotI3VuZGVmICB1bG9uZwotI2RlZmluZSB1bG9uZyAgIHVuc2lnbmVkIGxvbmcgICAvKiBhc3N1bWluZyA+PSAzMiBiaXRzICovCi0KLSN1bmRlZiB1cHRyCi0jZGVmaW5lIHVwdHIgICAgUHlfdWludHB0cl90Ci0KIC8qIFdoZW4geW91IHNheSBtZW1vcnksIG15IG1pbmQgcmVhc29ucyBpbiB0ZXJtcyBvZiAocG9pbnRlcnMgdG8pIGJsb2NrcyAqLwotdHlwZWRlZiB1Y2hhciBibG9jazsKK3R5cGVkZWYgdWludDhfdCBibG9jazsKIAogLyogUG9vbCBmb3Igc21hbGwgYmxvY2tzLiAqLwogc3RydWN0IHBvb2xfaGVhZGVyIHsKQEAgLTY4Myw3ICs3NjAsNyBAQAogICAgICAqIGhlcmUgdG8gbWFyayBhbiBhcmVuYV9vYmplY3QgdGhhdCBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gYW4KICAgICAgKiBhbGxvY2F0ZWQgYXJlbmEuCiAgICAgICovCi0gICAgdXB0ciBhZGRyZXNzOworICAgIHVpbnRwdHJfdCBhZGRyZXNzOwogCiAgICAgLyogUG9vbC1hbGlnbmVkIHBvaW50ZXIgdG8gdGhlIG5leHQgcG9vbCB0byBiZSBjYXJ2ZWQgb2ZmLiAqLwogICAgIGJsb2NrKiBwb29sX2FkZHJlc3M7CkBAIC04MzQsNyArOTExLDcgQEAKIHRoZSBwcmV2cG9vbCBtZW1iZXIuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAKLSNkZWZpbmUgUFRBKHgpICAoKHBvb2xwICkoKHVjaGFyICopJih1c2VkcG9vbHNbMiooeCldKSAtIDIqc2l6ZW9mKGJsb2NrICopKSkKKyNkZWZpbmUgUFRBKHgpICAoKHBvb2xwICkoKHVpbnQ4X3QgKikmKHVzZWRwb29sc1syKih4KV0pIC0gMipzaXplb2YoYmxvY2sgKikpKQogI2RlZmluZSBQVCh4KSAgIFBUQSh4KSwgUFRBKHgpCiAKIHN0YXRpYyBwb29scCB1c2VkcG9vbHNbMiAqICgoTkJfU01BTExfU0laRV9DTEFTU0VTICsgNykgLyA4KSAqIDhdID0gewpAQCAtOTQ5LDExICsxMDI2LDE1IEBACiAgICAgc3RydWN0IGFyZW5hX29iamVjdCogYXJlbmFvYmo7CiAgICAgdWludCBleGNlc3M7ICAgICAgICAvKiBudW1iZXIgb2YgYnl0ZXMgYWJvdmUgcG9vbCBhbGlnbm1lbnQgKi8KICAgICB2b2lkICphZGRyZXNzOworICAgIHN0YXRpYyBpbnQgZGVidWdfc3RhdHMgPSAtMTsKIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKKyAgICBpZiAoZGVidWdfc3RhdHMgPT0gLTEpIHsKKyAgICAgICAgY2hhciAqb3B0ID0gUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpOworICAgICAgICBkZWJ1Z19zdGF0cyA9IChvcHQgIT0gTlVMTCAmJiAqb3B0ICE9ICdcMCcpOworICAgIH0KKyAgICBpZiAoZGVidWdfc3RhdHMpCiAgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7Ci0jZW5kaWYKKwogICAgIGlmICh1bnVzZWRfYXJlbmFfb2JqZWN0cyA9PSBOVUxMKSB7CiAgICAgICAgIHVpbnQgaTsKICAgICAgICAgdWludCBudW1hcmVuYXM7CkBAIC05NjYsNyArMTA0Nyw3IEBACiAgICAgICAgIGlmIChudW1hcmVuYXMgPD0gbWF4YXJlbmFzKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIG92ZXJmbG93ICovCiAjaWYgU0laRU9GX1NJWkVfVCA8PSBTSVpFT0ZfSU5UCi0gICAgICAgIGlmIChudW1hcmVuYXMgPiBQWV9TSVpFX01BWCAvIHNpemVvZigqYXJlbmFzKSkKKyAgICAgICAgaWYgKG51bWFyZW5hcyA+IFNJWkVfTUFYIC8gc2l6ZW9mKCphcmVuYXMpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIG92ZXJmbG93ICovCiAjZW5kaWYKICAgICAgICAgbmJ5dGVzID0gbnVtYXJlbmFzICogc2l6ZW9mKCphcmVuYXMpOwpAQCAtMTAxMCw3ICsxMDkxLDcgQEAKICAgICAgICAgdW51c2VkX2FyZW5hX29iamVjdHMgPSBhcmVuYW9iajsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGFyZW5hb2JqLT5hZGRyZXNzID0gKHVwdHIpYWRkcmVzczsKKyAgICBhcmVuYW9iai0+YWRkcmVzcyA9ICh1aW50cHRyX3QpYWRkcmVzczsKIAogICAgICsrbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkOwogICAgICsrbnRpbWVzX2FyZW5hX2FsbG9jYXRlZDsKQEAgLTEwMzMsMTMgKzExMTQsMTMgQEAKIH0KIAogLyoKLVB5X0FERFJFU1NfSU5fUkFOR0UoUCwgUE9PTCkKK2FkZHJlc3NfaW5fcmFuZ2UoUCwgUE9PTCkKIAogUmV0dXJuIHRydWUgaWYgYW5kIG9ubHkgaWYgUCBpcyBhbiBhZGRyZXNzIHRoYXQgd2FzIGFsbG9jYXRlZCBieSBweW1hbGxvYy4KIFBPT0wgbXVzdCBiZSB0aGUgcG9vbCBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBQLCBpLmUuLCBQT09MID0gUE9PTF9BRERSKFApCiAodGhlIGNhbGxlciBpcyBhc2tlZCB0byBjb21wdXRlIHRoaXMgYmVjYXVzZSB0aGUgbWFjcm8gZXhwYW5kcyBQT09MIG1vcmUgdGhhbgogb25jZSwgYW5kIGZvciBlZmZpY2llbmN5IGl0J3MgYmVzdCBmb3IgdGhlIGNhbGxlciB0byBhc3NpZ24gUE9PTF9BRERSKFApIHRvIGEKLXZhcmlhYmxlIGFuZCBwYXNzIHRoZSBsYXR0ZXIgdG8gdGhlIG1hY3JvOyBiZWNhdXNlIFB5X0FERFJFU1NfSU5fUkFOR0UgaXMKK3ZhcmlhYmxlIGFuZCBwYXNzIHRoZSBsYXR0ZXIgdG8gdGhlIG1hY3JvOyBiZWNhdXNlIGFkZHJlc3NfaW5fcmFuZ2UgaXMKIGNhbGxlZCBvbiBldmVyeSBhbGxvYy9yZWFsbG9jL2ZyZWUsIG1pY3JvLWVmZmljaWVuY3kgaXMgaW1wb3J0YW50IGhlcmUpLgogCiBUcmlja3k6ICBMZXQgQiBiZSB0aGUgYXJlbmEgYmFzZSBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbCwgQiA9CkBAIC0xMDY0LDcgKzExNDUsNyBAQAogc3RvcmVzLCBldGMpLCBQT09MIGlzIHRoZSBjb3JyZWN0IGFkZHJlc3Mgb2YgUCdzIHBvb2wsIEFPLmFkZHJlc3MgaXMgdGhlCiBjb3JyZWN0IGJhc2UgYWRkcmVzcyBvZiB0aGUgcG9vbCdzIGFyZW5hLCBhbmQgUCBtdXN0IGJlIHdpdGhpbiBBUkVOQV9TSVpFIG9mCiBBTy5hZGRyZXNzLiAgSW4gYWRkaXRpb24sIEFPLmFkZHJlc3MgaXMgbm90IDAgKG5vIGFyZW5hIGNhbiBzdGFydCBhdCBhZGRyZXNzIDAKLShOVUxMKSkuICBUaGVyZWZvcmUgUHlfQUREUkVTU19JTl9SQU5HRSBjb3JyZWN0bHkgcmVwb3J0cyB0aGF0IG9ibWFsbG9jCisoTlVMTCkpLiAgVGhlcmVmb3JlIGFkZHJlc3NfaW5fcmFuZ2UgY29ycmVjdGx5IHJlcG9ydHMgdGhhdCBvYm1hbGxvYwogY29udHJvbHMgUC4KIAogTm93IHN1cHBvc2Ugb2JtYWxsb2MgZG9lcyBub3QgY29udHJvbCBQIChlLmcuLCBQIHdhcyBvYnRhaW5lZCB2aWEgYSBkaXJlY3QKQEAgLTExMDUsNTEgKzExODYsMjEgQEAKIG9ibWFsbG9jIGluIGEgc21hbGwgY29uc3RhbnQgdGltZSwgaW5kZXBlbmRlbnQgb2YgdGhlIG51bWJlciBvZiBhcmVuYXMKIG9ibWFsbG9jIGNvbnRyb2xzLiAgU2luY2UgdGhpcyB0ZXN0IGlzIG5lZWRlZCBhdCBldmVyeSBlbnRyeSBwb2ludCwgaXQncwogZXh0cmVtZWx5IGRlc2lyYWJsZSB0aGF0IGl0IGJlIHRoaXMgZmFzdC4KLQotU2luY2UgUHlfQUREUkVTU19JTl9SQU5HRSBtYXkgYmUgcmVhZGluZyBmcm9tIG1lbW9yeSB3aGljaCB3YXMgbm90IGFsbG9jYXRlZAotYnkgUHl0aG9uLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCAoUE9PTCktPmFyZW5haW5kZXggaXMgcmVhZCBvbmx5IG9uY2UsIGFzCi1hbm90aGVyIHRocmVhZCBtYXkgYmUgY29uY3VycmVudGx5IG1vZGlmeWluZyB0aGUgdmFsdWUgd2l0aG91dCBob2xkaW5nIHRoZQotR0lMLiAgVG8gYWNjb21wbGlzaCB0aGlzLCB0aGUgYXJlbmFpbmRleF90ZW1wIHZhcmlhYmxlIGlzIHVzZWQgdG8gc3RvcmUKLShQT09MKS0+YXJlbmFpbmRleCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBQeV9BRERSRVNTX0lOX1JBTkdFIG1hY3JvJ3MKLWV4ZWN1dGlvbi4gIFRoZSBjYWxsZXIgb2YgdGhlIG1hY3JvIGlzIHJlc3BvbnNpYmxlIGZvciBkZWNsYXJpbmcgdGhpcwotdmFyaWFibGUuCiAqLwotI2RlZmluZSBQeV9BRERSRVNTX0lOX1JBTkdFKFAsIFBPT0wpICAgICAgICAgICAgICAgICAgICBcCi0gICAgKChhcmVuYWluZGV4X3RlbXAgPSAoUE9PTCktPmFyZW5haW5kZXgpIDwgbWF4YXJlbmFzICYmICAgICAgICAgICAgICBcCi0gICAgICh1cHRyKShQKSAtIGFyZW5hc1thcmVuYWluZGV4X3RlbXBdLmFkZHJlc3MgPCAodXB0cilBUkVOQV9TSVpFICYmIFwKLSAgICAgYXJlbmFzW2FyZW5haW5kZXhfdGVtcF0uYWRkcmVzcyAhPSAwKQogCi0KLS8qIFRoaXMgaXMgb25seSB1c2VmdWwgd2hlbiBydW5uaW5nIG1lbW9yeSBkZWJ1Z2dlcnMgc3VjaCBhcwotICogUHVyaWZ5IG9yIFZhbGdyaW5kLiAgVW5jb21tZW50IHRvIHVzZS4KLSAqCi0jZGVmaW5lIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgotICovCi0KLSNpZmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKLQotLyogUHlfQUREUkVTU19JTl9SQU5HRSBtYXkgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJ5IGRlc2lnbgotICogVGhpcyBsZWFkcyB0byB0aG91c2FuZHMgb2Ygc3B1cmlvdXMgd2FybmluZ3Mgd2hlbiB1c2luZwotICogUHVyaWZ5IG9yIFZhbGdyaW5kLiAgQnkgbWFraW5nIGEgZnVuY3Rpb24sIHdlIGNhbiBlYXNpbHkKLSAqIHN1cHByZXNzIHRoZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBpbiB0aGlzIG9uZSBmdW5jdGlvbi4KLSAqIFNvIHdlIHdvbid0IGlnbm9yZSByZWFsIGVycm9ycyBlbHNld2hlcmUuCi0gKgotICogRGlzYWJsZSB0aGUgbWFjcm8gYW5kIHVzZSBhIGZ1bmN0aW9uLgotICovCi0KLSN1bmRlZiBQeV9BRERSRVNTX0lOX1JBTkdFCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAxKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChfX0dOVUNfXyA+PSA0KSkKLSNkZWZpbmUgUHlfTk9fSU5MSU5FIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpCi0jZWxzZQotI2RlZmluZSBQeV9OT19JTkxJTkUKLSNlbmRpZgotCi0vKiBEb24ndCBtYWtlIHN0YXRpYywgdG8gdHJ5IHRvIGVuc3VyZSB0aGlzIGlzbid0IGlubGluZWQuICovCi1pbnQgUHlfQUREUkVTU19JTl9SQU5HRSh2b2lkICpQLCBwb29scCBwb29sKSBQeV9OT19JTkxJTkU7Ci0jdW5kZWYgUHlfTk9fSU5MSU5FCi0jZW5kaWYKK3N0YXRpYyBib29sIEFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUworYWRkcmVzc19pbl9yYW5nZSh2b2lkICpwLCBwb29scCBwb29sKQoreworICAgIC8vIFNpbmNlIGFkZHJlc3NfaW5fcmFuZ2UgbWF5IGJlIHJlYWRpbmcgZnJvbSBtZW1vcnkgd2hpY2ggd2FzIG5vdCBhbGxvY2F0ZWQKKyAgICAvLyBieSBQeXRob24sIGl0IGlzIGltcG9ydGFudCB0aGF0IHBvb2wtPmFyZW5haW5kZXggaXMgcmVhZCBvbmx5IG9uY2UsIGFzCisgICAgLy8gYW5vdGhlciB0aHJlYWQgbWF5IGJlIGNvbmN1cnJlbnRseSBtb2RpZnlpbmcgdGhlIHZhbHVlIHdpdGhvdXQgaG9sZGluZworICAgIC8vIHRoZSBHSUwuIFRoZSBmb2xsb3dpbmcgZGFuY2UgZm9yY2VzIHRoZSBjb21waWxlciB0byByZWFkIHBvb2wtPmFyZW5haW5kZXgKKyAgICAvLyBvbmx5IG9uY2UuCisgICAgdWludCBhcmVuYWluZGV4ID0gKigodm9sYXRpbGUgdWludCAqKSZwb29sLT5hcmVuYWluZGV4KTsKKyAgICByZXR1cm4gYXJlbmFpbmRleCA8IG1heGFyZW5hcyAmJgorICAgICAgICAodWludHB0cl90KXAgLSBhcmVuYXNbYXJlbmFpbmRleF0uYWRkcmVzcyA8IEFSRU5BX1NJWkUgJiYKKyAgICAgICAgYXJlbmFzW2FyZW5haW5kZXhdLmFkZHJlc3MgIT0gMDsKK30KIAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAKQEAgLTEzOTQsNyArMTQ0NSw2IEBACiAKIC8qIGZyZWUgKi8KIAotQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCiBzdGF0aWMgdm9pZAogX1B5T2JqZWN0X0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKQogewpAQCAtMTQwMiw5ICsxNDUyLDYgQEAKICAgICBibG9jayAqbGFzdGZyZWU7CiAgICAgcG9vbHAgbmV4dCwgcHJldjsKICAgICB1aW50IHNpemU7Ci0jaWZuZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgotICAgIHVpbnQgYXJlbmFpbmRleF90ZW1wOwotI2VuZGlmCiAKICAgICBpZiAocCA9PSBOVUxMKSAgICAgIC8qIGZyZWUoTlVMTCkgaGFzIG5vIGVmZmVjdCAqLwogICAgICAgICByZXR1cm47CkBAIC0xNDE3LDcgKzE0NjQsNyBAQAogI2VuZGlmCiAKICAgICBwb29sID0gUE9PTF9BRERSKHApOwotICAgIGlmIChQeV9BRERSRVNTX0lOX1JBTkdFKHAsIHBvb2wpKSB7CisgICAgaWYgKGFkZHJlc3NfaW5fcmFuZ2UocCwgcG9vbCkpIHsKICAgICAgICAgLyogV2UgYWxsb2NhdGVkIHRoaXMgYWRkcmVzcy4gKi8KICAgICAgICAgTE9DSygpOwogICAgICAgICAvKiBMaW5rIHAgdG8gdGhlIHN0YXJ0IG9mIHRoZSBwb29sJ3MgZnJlZWJsb2NrIGxpc3QuICBTaW5jZQpAQCAtMTYyMywxNiArMTY3MCwxMiBAQAogICogcmV0dXJuIGEgbm9uLU5VTEwgcmVzdWx0LgogICovCiAKLUFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUwogc3RhdGljIHZvaWQgKgogX1B5T2JqZWN0X1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKQogewogICAgIHZvaWQgKmJwOwogICAgIHBvb2xwIHBvb2w7CiAgICAgc2l6ZV90IHNpemU7Ci0jaWZuZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgotICAgIHVpbnQgYXJlbmFpbmRleF90ZW1wOwotI2VuZGlmCiAKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0FsbG9jKDAsIGN0eCwgMSwgbmJ5dGVzKTsKQEAgLTE2NDQsNyArMTY4Nyw3IEBACiAjZW5kaWYKIAogICAgIHBvb2wgPSBQT09MX0FERFIocCk7Ci0gICAgaWYgKFB5X0FERFJFU1NfSU5fUkFOR0UocCwgcG9vbCkpIHsKKyAgICBpZiAoYWRkcmVzc19pbl9yYW5nZShwLCBwb29sKSkgewogICAgICAgICAvKiBXZSdyZSBpbiBjaGFyZ2Ugb2YgdGhpcyBibG9jayAqLwogICAgICAgICBzaXplID0gSU5ERVgyU0laRShwb29sLT5zemlkeCk7CiAgICAgICAgIGlmIChuYnl0ZXMgPD0gc2l6ZSkgewpAQCAtMTcwOSw3ICsxNzUyLDcgQEAKIAogI2VuZGlmIC8qIFdJVEhfUFlNQUxMT0MgKi8KIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCisKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogLyogQSB4LXBsYXRmb3JtIGRlYnVnZ2luZyBhbGxvY2F0b3IuICBUaGlzIGRvZXNuJ3QgbWFuYWdlIG1lbW9yeSBkaXJlY3RseSwKICAqIGl0IHdyYXBzIGEgcmVhbCBhbGxvY2F0b3IsIGFkZGluZyBleHRyYSBkZWJ1Z2dpbmcgaW5mbyB0byB0aGUgbWVtb3J5IGJsb2Nrcy4KQEAgLTE3NDMsNyArMTc4Niw3IEBACiBzdGF0aWMgc2l6ZV90CiByZWFkX3NpemVfdChjb25zdCB2b2lkICpwKQogewotICAgIGNvbnN0IHVjaGFyICpxID0gKGNvbnN0IHVjaGFyICopcDsKKyAgICBjb25zdCB1aW50OF90ICpxID0gKGNvbnN0IHVpbnQ4X3QgKilwOwogICAgIHNpemVfdCByZXN1bHQgPSAqcSsrOwogICAgIGludCBpOwogCkBAIC0xNzU4LDQwICsxODAxLDE1IEBACiBzdGF0aWMgdm9pZAogd3JpdGVfc2l6ZV90KHZvaWQgKnAsIHNpemVfdCBuKQogewotICAgIHVjaGFyICpxID0gKHVjaGFyICopcCArIFNTVCAtIDE7CisgICAgdWludDhfdCAqcSA9ICh1aW50OF90ICopcCArIFNTVCAtIDE7CiAgICAgaW50IGk7CiAKICAgICBmb3IgKGkgPSBTU1Q7IC0taSA+PSAwOyAtLXEpIHsKLSAgICAgICAgKnEgPSAodWNoYXIpKG4gJiAweGZmKTsKKyAgICAgICAgKnEgPSAodWludDhfdCkobiAmIDB4ZmYpOwogICAgICAgICBuID4+PSA4OwogICAgIH0KIH0KIAotI2lmZGVmIFB5X0RFQlVHCi0vKiBJcyB0YXJnZXQgaW4gdGhlIGxpc3Q/ICBUaGUgbGlzdCBpcyB0cmF2ZXJzZWQgdmlhIHRoZSBuZXh0cG9vbCBwb2ludGVycy4KLSAqIFRoZSBsaXN0IG1heSBiZSBOVUxMLXRlcm1pbmF0ZWQsIG9yIGNpcmN1bGFyLiAgUmV0dXJuIDEgaWYgdGFyZ2V0IGlzIGluCi0gKiBsaXN0LCBlbHNlIDAuCi0gKi8KLXN0YXRpYyBpbnQKLXBvb2xfaXNfaW5fbGlzdChjb25zdCBwb29scCB0YXJnZXQsIHBvb2xwIGxpc3QpCi17Ci0gICAgcG9vbHAgb3JpZ2xpc3QgPSBsaXN0OwotICAgIGFzc2VydCh0YXJnZXQgIT0gTlVMTCk7Ci0gICAgaWYgKGxpc3QgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgZG8gewotICAgICAgICBpZiAodGFyZ2V0ID09IGxpc3QpCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgbGlzdCA9IGxpc3QtPm5leHRwb29sOwotICAgIH0gd2hpbGUgKGxpc3QgIT0gTlVMTCAmJiBsaXN0ICE9IG9yaWdsaXN0KTsKLSAgICByZXR1cm4gMDsKLX0KLQotI2Vsc2UKLSNkZWZpbmUgcG9vbF9pc19pbl9saXN0KFgsIFkpIDEKLQotI2VuZGlmICAvKiBQeV9ERUJVRyAqLwotCiAvKiBMZXQgUyA9IHNpemVvZihzaXplX3QpLiAgVGhlIGRlYnVnIG1hbGxvYyBhc2tzIGZvciA0KlMgZXh0cmEgYnl0ZXMgYW5kCiAgICBmaWxscyB0aGVtIHdpdGggdXNlZnVsIHN0dWZmLCBoZXJlIGNhbGxpbmcgdGhlIHVuZGVybHlpbmcgbWFsbG9jJ3MgcmVzdWx0IHA6CiAKQEAgLTE4MTksMTEgKzE4MzcsMTEgQEAKICovCiAKIHN0YXRpYyB2b2lkICoKLV9QeU1lbV9EZWJ1Z0FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCitfUHlNZW1fRGVidWdSYXdBbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQogewogICAgIGRlYnVnX2FsbG9jX2FwaV90ICphcGkgPSAoZGVidWdfYWxsb2NfYXBpX3QgKiljdHg7Ci0gICAgdWNoYXIgKnA7ICAgICAgICAgICAvKiBiYXNlIGFkZHJlc3Mgb2YgbWFsbG9jJ2VkIGJsb2NrICovCi0gICAgdWNoYXIgKnRhaWw7ICAgICAgICAvKiBwICsgMipTU1QgKyBuYnl0ZXMgPT0gcG9pbnRlciB0byB0YWlsIHBhZCBieXRlcyAqLworICAgIHVpbnQ4X3QgKnA7ICAgICAgICAgICAvKiBiYXNlIGFkZHJlc3Mgb2YgbWFsbG9jJ2VkIGJsb2NrICovCisgICAgdWludDhfdCAqdGFpbDsgICAgICAgIC8qIHAgKyAyKlNTVCArIG5ieXRlcyA9PSBwb2ludGVyIHRvIHRhaWwgcGFkIGJ5dGVzICovCiAgICAgc2l6ZV90IHRvdGFsOyAgICAgICAvKiBuYnl0ZXMgKyA0KlNTVCAqLwogCiAgICAgYnVtcHNlcmlhbG5vKCk7CkBAIC0xODMzLDE1ICsxODUxLDE1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHVzZV9jYWxsb2MpCi0gICAgICAgIHAgPSAodWNoYXIgKilhcGktPmFsbG9jLmNhbGxvYyhhcGktPmFsbG9jLmN0eCwgMSwgdG90YWwpOworICAgICAgICBwID0gKHVpbnQ4X3QgKilhcGktPmFsbG9jLmNhbGxvYyhhcGktPmFsbG9jLmN0eCwgMSwgdG90YWwpOwogICAgIGVsc2UKLSAgICAgICAgcCA9ICh1Y2hhciAqKWFwaS0+YWxsb2MubWFsbG9jKGFwaS0+YWxsb2MuY3R4LCB0b3RhbCk7CisgICAgICAgIHAgPSAodWludDhfdCAqKWFwaS0+YWxsb2MubWFsbG9jKGFwaS0+YWxsb2MuY3R4LCB0b3RhbCk7CiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBhdCBwLCB3cml0ZSBzaXplIChTU1QgYnl0ZXMpLCBpZCAoMSBieXRlKSwgcGFkIChTU1QtMSBieXRlcykgKi8KICAgICB3cml0ZV9zaXplX3QocCwgbmJ5dGVzKTsKLSAgICBwW1NTVF0gPSAodWNoYXIpYXBpLT5hcGlfaWQ7CisgICAgcFtTU1RdID0gKHVpbnQ4X3QpYXBpLT5hcGlfaWQ7CiAgICAgbWVtc2V0KHAgKyBTU1QgKyAxLCBGT1JCSURERU5CWVRFLCBTU1QtMSk7CiAKICAgICBpZiAobmJ5dGVzID4gMCAmJiAhdXNlX2NhbGxvYykKQEAgLTE4NTYsMTggKzE4NzQsMTggQEAKIH0KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z1Jhd01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3QWxsb2MoMCwgY3R4LCBuYnl0ZXMpOwogfQogCiBzdGF0aWMgdm9pZCAqCi1fUHlNZW1fRGVidWdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCitfUHlNZW1fRGVidWdSYXdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgc2l6ZV90IG5ieXRlczsKICAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU1NJWkVfVF9NQVggLyBlbHNpemUpOwogICAgIG5ieXRlcyA9IG5lbGVtICogZWxzaXplOwotICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygxLCBjdHgsIG5ieXRlcyk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd0FsbG9jKDEsIGN0eCwgbmJ5dGVzKTsKIH0KIAogLyogVGhlIGRlYnVnIGZyZWUgZmlyc3QgY2hlY2tzIHRoZSAyKlNTVCBieXRlcyBvbiBlYWNoIGVuZCBmb3Igc2FuaXR5IChpbgpAQCAtMTg3NiwxMCArMTg5NCwxMCBAQAogICAgVGhlbiBjYWxscyB0aGUgdW5kZXJseWluZyBmcmVlLgogKi8KIHN0YXRpYyB2b2lkCi1fUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCkKK19QeU1lbV9EZWJ1Z1Jhd0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKQogewogICAgIGRlYnVnX2FsbG9jX2FwaV90ICphcGkgPSAoZGVidWdfYWxsb2NfYXBpX3QgKiljdHg7Ci0gICAgdWNoYXIgKnEgPSAodWNoYXIgKilwIC0gMipTU1Q7ICAvKiBhZGRyZXNzIHJldHVybmVkIGZyb20gbWFsbG9jICovCisgICAgdWludDhfdCAqcSA9ICh1aW50OF90ICopcCAtIDIqU1NUOyAgLyogYWRkcmVzcyByZXR1cm5lZCBmcm9tIG1hbGxvYyAqLwogICAgIHNpemVfdCBuYnl0ZXM7CiAKICAgICBpZiAocCA9PSBOVUxMKQpAQCAtMTg5MywxNyArMTkxMSwxNyBAQAogfQogCiBzdGF0aWMgdm9pZCAqCi1fUHlNZW1fRGVidWdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z1Jhd1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKQogewogICAgIGRlYnVnX2FsbG9jX2FwaV90ICphcGkgPSAoZGVidWdfYWxsb2NfYXBpX3QgKiljdHg7Ci0gICAgdWNoYXIgKnEgPSAodWNoYXIgKilwLCAqb2xkcTsKLSAgICB1Y2hhciAqdGFpbDsKKyAgICB1aW50OF90ICpxID0gKHVpbnQ4X3QgKilwLCAqb2xkcTsKKyAgICB1aW50OF90ICp0YWlsOwogICAgIHNpemVfdCB0b3RhbDsgICAgICAgLyogbmJ5dGVzICsgNCpTU1QgKi8KICAgICBzaXplX3Qgb3JpZ2luYWxfbmJ5dGVzOwogICAgIGludCBpOwogCiAgICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKIAogICAgIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhhcGktPmFwaV9pZCwgcCk7CiAgICAgYnVtcHNlcmlhbG5vKCk7CkBAIC0xOTE4LDcgKzE5MzYsNyBAQAogICAgICAqIGJ1dCB3ZSBsaXZlIHdpdGggdGhhdC4KICAgICAgKi8KICAgICBvbGRxID0gcTsKLSAgICBxID0gKHVjaGFyICopYXBpLT5hbGxvYy5yZWFsbG9jKGFwaS0+YWxsb2MuY3R4LCBxIC0gMipTU1QsIHRvdGFsKTsKKyAgICBxID0gKHVpbnQ4X3QgKilhcGktPmFsbG9jLnJlYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHEgLSAyKlNTVCwgdG90YWwpOwogICAgIGlmIChxID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xOTI4LDcgKzE5NDYsNyBAQAogICAgIH0KIAogICAgIHdyaXRlX3NpemVfdChxLCBuYnl0ZXMpOwotICAgIGFzc2VydChxW1NTVF0gPT0gKHVjaGFyKWFwaS0+YXBpX2lkKTsKKyAgICBhc3NlcnQocVtTU1RdID09ICh1aW50OF90KWFwaS0+YXBpX2lkKTsKICAgICBmb3IgKGkgPSAxOyBpIDwgU1NUOyArK2kpCiAgICAgICAgIGFzc2VydChxW1NTVCArIGldID09IEZPUkJJRERFTkJZVEUpOwogICAgIHEgKz0gMipTU1Q7CkBAIC0xOTQ2LDYgKzE5NjQsNDQgQEAKICAgICByZXR1cm4gcTsKIH0KIAorc3RhdGljIHZvaWQKK19QeU1lbV9EZWJ1Z0NoZWNrR0lMKHZvaWQpCit7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoIVB5R0lMU3RhdGVfQ2hlY2soKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgY2FsbGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAid2l0aG91dCBob2xkaW5nIHRoZSBHSUwiKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQoreworICAgIF9QeU1lbV9EZWJ1Z0NoZWNrR0lMKCk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYyhjdHgsIG5ieXRlcyk7Cit9CisKK3N0YXRpYyB2b2lkICoKK19QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICBfUHlNZW1fRGVidWdDaGVja0dJTCgpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdDYWxsb2MoY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKworc3RhdGljIHZvaWQKK19QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpCit7CisgICAgX1B5TWVtX0RlYnVnQ2hlY2tHSUwoKTsKKyAgICBfUHlNZW1fRGVidWdSYXdGcmVlKGN0eCwgcHRyKTsKK30KKworc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICBfUHlNZW1fRGVidWdDaGVja0dJTCgpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdSZWFsbG9jKGN0eCwgcHRyLCBuYnl0ZXMpOworfQorCiAvKiBDaGVjayB0aGUgZm9yYmlkZGVuIGJ5dGVzIG9uIGJvdGggZW5kcyBvZiB0aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgcC4KICAqIElmIGFueXRoaW5nIGlzIHdyb25nLCBwcmludCBpbmZvIHRvIHN0ZGVyciB2aWEgX1B5T2JqZWN0X0RlYnVnRHVtcEFkZHJlc3MsCiAgKiBhbmQgY2FsbCBQeV9GYXRhbEVycm9yIHRvIGtpbGwgdGhlIHByb2dyYW0uCkBAIC0xOTU0LDExICsyMDEwLDExIEBACiBzdGF0aWMgdm9pZAogX1B5TWVtX0RlYnVnQ2hlY2tBZGRyZXNzKGNoYXIgYXBpLCBjb25zdCB2b2lkICpwKQogewotICAgIGNvbnN0IHVjaGFyICpxID0gKGNvbnN0IHVjaGFyICopcDsKKyAgICBjb25zdCB1aW50OF90ICpxID0gKGNvbnN0IHVpbnQ4X3QgKilwOwogICAgIGNoYXIgbXNnYnVmWzY0XTsKICAgICBjaGFyICptc2c7CiAgICAgc2l6ZV90IG5ieXRlczsKLSAgICBjb25zdCB1Y2hhciAqdGFpbDsKKyAgICBjb25zdCB1aW50OF90ICp0YWlsOwogICAgIGludCBpOwogICAgIGNoYXIgaWQ7CiAKQEAgLTIwMDcsOCArMjA2Myw4IEBACiBzdGF0aWMgdm9pZAogX1B5T2JqZWN0X0RlYnVnRHVtcEFkZHJlc3MoY29uc3Qgdm9pZCAqcCkKIHsKLSAgICBjb25zdCB1Y2hhciAqcSA9IChjb25zdCB1Y2hhciAqKXA7Ci0gICAgY29uc3QgdWNoYXIgKnRhaWw7CisgICAgY29uc3QgdWludDhfdCAqcSA9IChjb25zdCB1aW50OF90ICopcDsKKyAgICBjb25zdCB1aW50OF90ICp0YWlsOwogICAgIHNpemVfdCBuYnl0ZXMsIHNlcmlhbDsKICAgICBpbnQgaTsKICAgICBpbnQgb2s7CkBAIC0yMDQxLDcgKzIwOTcsNyBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm5vdCBhbGwgRk9SQklEREVOQllURSAoMHglMDJ4KTpcbiIsCiAgICAgICAgICAgICBGT1JCSURERU5CWVRFKTsKICAgICAgICAgZm9yIChpID0gU1NULTE7IGkgPj0gMTsgLS1pKSB7Ci0gICAgICAgICAgICBjb25zdCB1Y2hhciBieXRlID0gKihxLWkpOworICAgICAgICAgICAgY29uc3QgdWludDhfdCBieXRlID0gKihxLWkpOwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAgICAgIGF0IHAtJWQ6IDB4JTAyeCIsIGksIGJ5dGUpOwogICAgICAgICAgICAgaWYgKGJ5dGUgIT0gRk9SQklEREVOQllURSkKICAgICAgICAgICAgICAgICBmcHV0cygiICoqKiBPVUNIIiwgc3RkZXJyKTsKQEAgLTIwNjksNyArMjEyNSw3IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAibm90IGFsbCBGT1JCSURERU5CWVRFICgweCUwMngpOlxuIiwKICAgICAgICAgICAgICAgICBGT1JCSURERU5CWVRFKTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IFNTVDsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCB1Y2hhciBieXRlID0gdGFpbFtpXTsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYnl0ZSA9IHRhaWxbaV07CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAgYXQgdGFpbCslZDogMHglMDJ4IiwKICAgICAgICAgICAgICAgICAgICAgaSwgYnl0ZSk7CiAgICAgICAgICAgICBpZiAoYnl0ZSAhPSBGT1JCSURERU5CWVRFKQpAQCAtMjEwNCw5ICsyMTYwLDEyIEBACiAgICAgICAgIH0KICAgICAgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKICAgICB9CisgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKworICAgIGZmbHVzaChzdGRlcnIpOworICAgIF9QeU1lbV9EdW1wVHJhY2ViYWNrKGZpbGVubyhzdGRlcnIpLCBwKTsKIH0KIAotI2VuZGlmICAvKiBQWU1BTExPQ19ERUJVRyAqLwogCiBzdGF0aWMgc2l6ZV90CiBwcmludG9uZShGSUxFICpvdXQsIGNvbnN0IGNoYXIqIG1zZywgc2l6ZV90IHZhbHVlKQpAQCAtMjE1OCw4ICsyMjE3LDMwIEBACiAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCBidWYyLCBudW1fYmxvY2tzICogc2l6ZW9mX2Jsb2NrKTsKIH0KIAorCiAjaWZkZWYgV0lUSF9QWU1BTExPQwogCisjaWZkZWYgUHlfREVCVUcKKy8qIElzIHRhcmdldCBpbiB0aGUgbGlzdD8gIFRoZSBsaXN0IGlzIHRyYXZlcnNlZCB2aWEgdGhlIG5leHRwb29sIHBvaW50ZXJzLgorICogVGhlIGxpc3QgbWF5IGJlIE5VTEwtdGVybWluYXRlZCwgb3IgY2lyY3VsYXIuICBSZXR1cm4gMSBpZiB0YXJnZXQgaXMgaW4KKyAqIGxpc3QsIGVsc2UgMC4KKyAqLworc3RhdGljIGludAorcG9vbF9pc19pbl9saXN0KGNvbnN0IHBvb2xwIHRhcmdldCwgcG9vbHAgbGlzdCkKK3sKKyAgICBwb29scCBvcmlnbGlzdCA9IGxpc3Q7CisgICAgYXNzZXJ0KHRhcmdldCAhPSBOVUxMKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKyAgICBkbyB7CisgICAgICAgIGlmICh0YXJnZXQgPT0gbGlzdCkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBsaXN0ID0gbGlzdC0+bmV4dHBvb2w7CisgICAgfSB3aGlsZSAobGlzdCAhPSBOVUxMICYmIGxpc3QgIT0gb3JpZ2xpc3QpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIC8qIFByaW50IHN1bW1hcnkgaW5mbyB0byAib3V0IiBhYm91dCB0aGUgc3RhdGUgb2YgcHltYWxsb2MncyBzdHJ1Y3R1cmVzLgogICogSW4gUHlfREVCVUcgbW9kZSwgYWxzbyBwZXJmb3JtIHNvbWUgZXhwZW5zaXZlIGludGVybmFsIGNvbnNpc3RlbmN5CiAgKiBjaGVja3MuCkBAIC0yMjA2LDM0ICsyMjg3LDM1IEBACiAgICAgICovCiAgICAgZm9yIChpID0gMDsgaSA8IG1heGFyZW5hczsgKytpKSB7CiAgICAgICAgIHVpbnQgajsKLSAgICAgICAgdXB0ciBiYXNlID0gYXJlbmFzW2ldLmFkZHJlc3M7CisgICAgICAgIHVpbnRwdHJfdCBiYXNlID0gYXJlbmFzW2ldLmFkZHJlc3M7CiAKICAgICAgICAgLyogU2tpcCBhcmVuYXMgd2hpY2ggYXJlIG5vdCBhbGxvY2F0ZWQuICovCi0gICAgICAgIGlmIChhcmVuYXNbaV0uYWRkcmVzcyA9PSAodXB0cilOVUxMKQorICAgICAgICBpZiAoYXJlbmFzW2ldLmFkZHJlc3MgPT0gKHVpbnRwdHJfdClOVUxMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG5hcmVuYXMgKz0gMTsKIAogICAgICAgICBudW1mcmVlcG9vbHMgKz0gYXJlbmFzW2ldLm5mcmVlcG9vbHM7CiAKICAgICAgICAgLyogcm91bmQgdXAgdG8gcG9vbCBhbGlnbm1lbnQgKi8KLSAgICAgICAgaWYgKGJhc2UgJiAodXB0cilQT09MX1NJWkVfTUFTSykgeworICAgICAgICBpZiAoYmFzZSAmICh1aW50cHRyX3QpUE9PTF9TSVpFX01BU0spIHsKICAgICAgICAgICAgIGFyZW5hX2FsaWdubWVudCArPSBQT09MX1NJWkU7Ci0gICAgICAgICAgICBiYXNlICY9IH4odXB0cilQT09MX1NJWkVfTUFTSzsKKyAgICAgICAgICAgIGJhc2UgJj0gfih1aW50cHRyX3QpUE9PTF9TSVpFX01BU0s7CiAgICAgICAgICAgICBiYXNlICs9IFBPT0xfU0laRTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIHZpc2l0IGV2ZXJ5IHBvb2wgaW4gdGhlIGFyZW5hICovCi0gICAgICAgIGFzc2VydChiYXNlIDw9ICh1cHRyKSBhcmVuYXNbaV0ucG9vbF9hZGRyZXNzKTsKLSAgICAgICAgZm9yIChqID0gMDsKLSAgICAgICAgICAgICAgICAgICAgYmFzZSA8ICh1cHRyKSBhcmVuYXNbaV0ucG9vbF9hZGRyZXNzOwotICAgICAgICAgICAgICAgICAgICArK2osIGJhc2UgKz0gUE9PTF9TSVpFKSB7CisgICAgICAgIGFzc2VydChiYXNlIDw9ICh1aW50cHRyX3QpIGFyZW5hc1tpXS5wb29sX2FkZHJlc3MpOworICAgICAgICBmb3IgKGogPSAwOyBiYXNlIDwgKHVpbnRwdHJfdCkgYXJlbmFzW2ldLnBvb2xfYWRkcmVzczsKKyAgICAgICAgICAgICArK2osIGJhc2UgKz0gUE9PTF9TSVpFKSB7CiAgICAgICAgICAgICBwb29scCBwID0gKHBvb2xwKWJhc2U7CiAgICAgICAgICAgICBjb25zdCB1aW50IHN6ID0gcC0+c3ppZHg7CiAgICAgICAgICAgICB1aW50IGZyZWVibG9ja3M7CiAKICAgICAgICAgICAgIGlmIChwLT5yZWYuY291bnQgPT0gMCkgewogICAgICAgICAgICAgICAgIC8qIGN1cnJlbnRseSB1bnVzZWQgKi8KKyNpZmRlZiBQeV9ERUJVRwogICAgICAgICAgICAgICAgIGFzc2VydChwb29sX2lzX2luX2xpc3QocCwgYXJlbmFzW2ldLmZyZWVwb29scykpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICArK251bXBvb2xzW3N6XTsKQEAgLTIyNzMsOSArMjM1NSw4IEBACiAgICAgICAgIHF1YW50aXphdGlvbiArPSBwICogKChQT09MX1NJWkUgLSBQT09MX09WRVJIRUFEKSAlIHNpemUpOwogICAgIH0KICAgICBmcHV0YygnXG4nLCBvdXQpOwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyB0aW1lcyBvYmplY3QgbWFsbG9jIGNhbGxlZCIsIHNlcmlhbG5vKTsKLSNlbmRpZgorICAgIGlmIChfUHlNZW1fRGVidWdFbmFibGVkKCkpCisgICAgICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgdGltZXMgb2JqZWN0IG1hbGxvYyBjYWxsZWQiLCBzZXJpYWxubyk7CiAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgYWxsb2NhdGVkIHRvdGFsIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCk7CiAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgcmVjbGFpbWVkIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCAtIG5hcmVuYXMpOwogICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGhpZ2h3YXRlciBtYXJrIiwgbmFyZW5hc19oaWdod2F0ZXIpOwpAQCAtMjMwMiwxOCArMjM4MywzIEBACiB9CiAKICNlbmRpZiAvKiAjaWZkZWYgV0lUSF9QWU1BTExPQyAqLwotCi0jaWZkZWYgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCi0vKiBNYWtlIHRoaXMgZnVuY3Rpb24gbGFzdCBzbyBnY2Mgd29uJ3QgaW5saW5lIGl0IHNpbmNlIHRoZSBkZWZpbml0aW9uIGlzCi0gKiBhZnRlciB0aGUgcmVmZXJlbmNlLgotICovCi1pbnQKLVB5X0FERFJFU1NfSU5fUkFOR0Uodm9pZCAqUCwgcG9vbHAgcG9vbCkKLXsKLSAgICB1aW50IGFyZW5haW5kZXhfdGVtcCA9IHBvb2wtPmFyZW5haW5kZXg7Ci0KLSAgICByZXR1cm4gYXJlbmFpbmRleF90ZW1wIDwgbWF4YXJlbmFzICYmCi0gICAgICAgICAgICh1cHRyKVAgLSBhcmVuYXNbYXJlbmFpbmRleF90ZW1wXS5hZGRyZXNzIDwgKHVwdHIpQVJFTkFfU0laRSAmJgotICAgICAgICAgICBhcmVuYXNbYXJlbmFpbmRleF90ZW1wXS5hZGRyZXNzICE9IDA7Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvb2RpY3RvYmplY3QuYyBiL09iamVjdHMvb2RpY3RvYmplY3QuYwppbmRleCBhNjk2M2Q3Li4yMmIxZjFkIDEwMDY0NAotLS0gYS9PYmplY3RzL29kaWN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9vZGljdG9iamVjdC5jCkBAIC0zOSw3ICszOSw3IEBACiAgICBfX2dldGl0ZW1fXygpLCBnZXQoKSwgZXRjLiBhY2NvcmRpbmdseS4KIAogVGhlIGFwcHJvYWNoIHdpdGggdGhlIGxlYXN0IHBlcmZvcm1hbmNlIGltcGFjdCAodGltZSBhbmQgc3BhY2UpIGlzICMyLAotbWlycm9yaW5nIHRoZSBrZXkgb3JkZXIgb2YgZGljdCdzIGRrX2VudGllcyB3aXRoIGFuIGFycmF5IG9mIG5vZGUgcG9pbnRlcnMuCittaXJyb3JpbmcgdGhlIGtleSBvcmRlciBvZiBkaWN0J3MgZGtfZW50cmllcyB3aXRoIGFuIGFycmF5IG9mIG5vZGUgcG9pbnRlcnMuCiBXaGlsZSBsb29rZGljdCgpIGFuZCBmcmllbmRzIChka19sb29rdXApIGRvbid0IGdpdmUgdXMgdGhlIGluZGV4IGludG8gdGhlCiBhcnJheSwgd2UgbWFrZSB1c2Ugb2YgcG9pbnRlciBhcml0aG1ldGljIHRvIGdldCB0aGF0IGluZGV4LiAgQW4gYWx0ZXJuYXRpdmUKIHdvdWxkIGJlIHRvIHJlZmFjdG9yIGxvb2tkaWN0KCkgdG8gcHJvdmlkZSB0aGUgaW5kZXgsIGV4cGxpY2l0bHkgZXhwb3NpbmcKQEAgLTUzNiwxNCArNTM2LDE3IEBACiBfb2RpY3RfZ2V0X2luZGV4X3JhdyhQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyID0gTlVMTDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzOworICAgIFB5X3NzaXplX3QgaXg7CiAKLSAgICBlcCA9IChrZXlzLT5ka19sb29rdXApKChQeURpY3RPYmplY3QgKilvZCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAoa2V5cy0+ZGtfbG9va3VwKSgoUHlEaWN0T2JqZWN0ICopb2QsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIHJldHVybiBrZXlzLT5ka19uZW50cmllczsgIC8qIGluZGV4IG9mIG5ldyBlbnRyeSAqLworICAgIH0KKyAgICBpZiAoaXggPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgLyogV2UgdXNlIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBnZXQgdGhlIGVudHJ5J3MgaW5kZXggaW50byB0aGUgdGFibGUuICovCi0gICAgcmV0dXJuIGVwIC0ga2V5cy0+ZGtfZW50cmllczsKKyAgICByZXR1cm4gaXg7CiB9CiAKIC8qIFJlcGxhY2Ugb2QtPm9kX2Zhc3Rfbm9kZXMgd2l0aCBhIG5ldyB0YWJsZSBtYXRjaGluZyB0aGUgc2l6ZSBvZiBkaWN0J3MuICovCkBAIC01NjUsNyArNTY4LDcgQEAKICAgICAvKiBDb3B5IHRoZSBjdXJyZW50IG5vZGVzIGludG8gdGhlIHRhYmxlLiAqLwogICAgIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSB7CiAgICAgICAgIGkgPSBfb2RpY3RfZ2V0X2luZGV4X3JhdyhvZCwgX29kaWN0bm9kZV9LRVkobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29kaWN0bm9kZV9IQVNIKG5vZGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSk7CiAgICAgICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgUHlNZW1fRlJFRShmYXN0X25vZGVzKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE0MjQsMTQgKzE0MjcsMTMgQEAKICAqIE9yZGVyZWREaWN0IG1lbWJlcnMKICAqLwogCi0vKiB0cF9tZW1iZXJzICovCisvKiB0cF9nZXRzZXQgKi8KIAotc3RhdGljIFB5TWVtYmVyRGVmIG9kaWN0X21lbWJlcnNbXSA9IHsKLSAgICB7Il9fZGljdF9fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5T0RpY3RPYmplY3QsIG9kX2luc3RfZGljdCksIFJFQURPTkxZfSwKLSAgICB7MH0KK3N0YXRpYyBQeUdldFNldERlZiBvZGljdF9nZXRzZXRbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKKyAgICB7TlVMTH0KIH07CiAKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogT3JkZXJlZERpY3QgdHlwZSBzbG90IG1ldGhvZHMKICAqLwpAQCAtMTQ2Myw3ICsxNDY1LDcgQEAKICAgICArK3RzdGF0ZS0+dHJhc2hfZGVsZXRlX25lc3Rpbmc7CiAKICAgICBQeV9UUkFTSENBTl9TQUZFX0VORChzZWxmKQotfTsKK30KIAogLyogdHBfcmVwciAqLwogCkBAIC0xNTQwLDcgKzE1NDIsNyBAQAogICAgIFB5X1hERUNSRUYocGllY2VzKTsKICAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgcmV0dXJuIHJlc3VsdDsKLX07Cit9CiAKIC8qIHRwX2RvYyAqLwogCkBAIC0xNjEyLDcgKzE2MTQsNyBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9Ci19OworfQogCiAvKiB0cF9pdGVyICovCiAKQEAgLTE2MjAsNyArMTYyMiw3IEBACiBvZGljdF9pdGVyKFB5T0RpY3RPYmplY3QgKm9kKQogewogICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KG9kLCBfb2RpY3RfSVRFUl9LRVlTKTsKLX07Cit9CiAKIC8qIHRwX2luaXQgKi8KIApAQCAtMTY0NiwyNyArMTY0OCwxOSBAQAogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotfTsKK30KIAogLyogdHBfbmV3ICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvZGljdF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlPRGljdE9iamVjdCAqb2Q7CiAKLSAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgb2QgPSAoUHlPRGljdE9iamVjdCAqKVB5RGljdF9UeXBlLnRwX25ldyh0eXBlLCBhcmdzLCBrd2RzKTsKLSAgICBpZiAob2QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgaWYgKG9kID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIG9kLT5vZF9pbnN0X2RpY3QgPSBkaWN0OwogICAgIC8qIHR5cGUgY29uc3RydWN0b3IgZmlsbHMgdGhlIG1lbW9yeSB3aXRoIHplcm9zIChzZWUKICAgICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jKCkpLCB0aGVyZSBpcyBubyBuZWVkIHRvIHNldCB0aGVtIHRvIHplcm8gYWdhaW4gKi8KICAgICBpZiAoX29kaWN0X3Jlc2l6ZShvZCkgPCAwKSB7CkBAIC0xNzA4LDggKzE3MDIsOCBAQAogICAgIChnZXRpdGVyZnVuYylvZGljdF9pdGVyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBvZGljdF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICBvZGljdF9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIG9kaWN0X2dldHNldCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgJlB5RGljdF9UeXBlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KQEAgLTE3MjksNyArMTcyMyw3IEBACiBQeU9iamVjdCAqCiBQeU9EaWN0X05ldyh2b2lkKSB7CiAgICAgcmV0dXJuIG9kaWN0X25ldygmUHlPRGljdF9UeXBlLCBOVUxMLCBOVUxMKTsKLX07Cit9CiAKIHN0YXRpYyBpbnQKIF9QeU9EaWN0X1NldEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlLApAQCAtMTc0Nyw3ICsxNzQxLDcgQEAKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzOwotfTsKK30KIAogaW50CiBQeU9EaWN0X1NldEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCkBAIC0xNzU2LDcgKzE3NTAsNyBAQAogICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIF9QeU9EaWN0X1NldEl0ZW1fS25vd25IYXNoKG9kLCBrZXksIHZhbHVlLCBoYXNoKTsKLX07Cit9CiAKIGludAogUHlPRGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSkKQEAgLTE3NjksNyArMTc2Myw3IEBACiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gX1B5RGljdF9EZWxJdGVtX0tub3duSGFzaChvZCwga2V5LCBoYXNoKTsKLX07Cit9CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjM2Miw4ICsyMzU2LDcgQEAKICAgICAgICAgUHlPYmplY3QgKm90aGVyID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsgIC8qIGJvcnJvd2VkIHJlZmVyZW5jZSAqLwogICAgICAgICBhc3NlcnQob3RoZXIgIT0gTlVMTCk7CiAgICAgICAgIFB5X0lOQ1JFRihvdGhlcik7Ci0gICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikgfHwKLSAgICAgICAgICAgIF9QeU9iamVjdF9IYXNBdHRySWQob3RoZXIsICZQeUlkX2l0ZW1zKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgaWYgUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtczsKICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpCiAgICAgICAgICAgICAgICAgaXRlbXMgPSBQeURpY3RfSXRlbXMob3RoZXIpOwpAQCAtMjQwNiw2ICsyMzk5LDIwIEBACiAgICAgICAgICAgICBpZiAocmVzICE9IDAgfHwgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG90aGVyLCAmUHlJZF9pdGVtcykpIHsgIC8qIG5ldmVyIGZhaWxzICovCisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXM7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKQorICAgICAgICAgICAgICAgIGl0ZW1zID0gUHlEaWN0X0l0ZW1zKG90aGVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3RoZXIsICZQeUlkX2l0ZW1zLCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcik7CisgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBpdGVtcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBvdGhlcik7CiAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9yYW5nZW9iamVjdC5jIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCmluZGV4IDI4OGJlNGYuLmU3YzM3MDkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvcmFuZ2VvYmplY3QuYworKysgYi9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKQEAgLTYsNyArNiw3IEBACiAvKiBTdXBwb3J0IG9iamVjdHMgd2hvc2UgbGVuZ3RoIGlzID4gUFlfU1NJWkVfVF9NQVguCiAKICAgIFRoaXMgY291bGQgYmUgc3BlZCB1cCBmb3Igc21hbGwgUHlMb25ncyBpZiB0aGV5IGZpdCBpbiBhIFB5X3NzaXplX3QuCi0gICBUaGlzIG9ubHkgbWF0dGVycyBvbiBXaW42NC4gIFRob3VnaCB3ZSBjb3VsZCB1c2UgUFlfTE9OR19MT05HIHdoaWNoCisgICBUaGlzIG9ubHkgbWF0dGVycyBvbiBXaW42NC4gIFRob3VnaCB3ZSBjb3VsZCB1c2UgbG9uZyBsb25nIHdoaWNoCiAgICB3b3VsZCBwcmVzdW1hYmx5IGhlbHAgcGVyZi4KICovCiAKQEAgLTI5LDE3ICsyOSwxMCBAQAogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDEpOwogCiAgICAgc3RlcCA9IFB5TnVtYmVyX0luZGV4KHN0ZXApOwotICAgIGlmIChzdGVwKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaXN0ZXAgPSBQeU51bWJlcl9Bc1NzaXplX3Qoc3RlcCwgTlVMTCk7Ci0gICAgICAgIGlmIChpc3RlcCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAvKiBJZ25vcmUgT3ZlcmZsb3dFcnJvciwgd2Uga25vdyB0aGUgdmFsdWUgaXNuJ3QgMC4gKi8KLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXN0ZXAgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInJhbmdlKCkgYXJnIDMgbXVzdCBub3QgYmUgemVybyIpOwotICAgICAgICAgICAgUHlfQ0xFQVIoc3RlcCk7Ci0gICAgICAgIH0KKyAgICBpZiAoc3RlcCAmJiBfUHlMb25nX1NpZ24oc3RlcCkgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyYW5nZSgpIGFyZyAzIG11c3Qgbm90IGJlIHplcm8iKTsKKyAgICAgICAgUHlfQ0xFQVIoc3RlcCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0ZXA7CkBAIC0xMjksOSArMTIyLDkgQEAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvYmo7CiAKICAgICAvKiBGYWlsZWQgdG8gY3JlYXRlIG9iamVjdCwgcmVsZWFzZSBhdHRyaWJ1dGVzICovCi0gICAgUHlfWERFQ1JFRihzdGFydCk7Ci0gICAgUHlfWERFQ1JFRihzdG9wKTsKLSAgICBQeV9YREVDUkVGKHN0ZXApOworICAgIFB5X0RFQ1JFRihzdGFydCk7CisgICAgUHlfREVDUkVGKHN0b3ApOworICAgIFB5X0RFQ1JFRihzdGVwKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMTk2LDcgKzE4OSw3IEBACiAgICAgLyogaWYgKGxvID49IGhpKSwgcmV0dXJuIGxlbmd0aCBvZiAwLiAqLwogICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wobG8sIGhpLCBQeV9HRSk7CiAgICAgaWYgKGNtcF9yZXN1bHQgIT0gMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0ZXApOworICAgICAgICBQeV9ERUNSRUYoc3RlcCk7CiAgICAgICAgIGlmIChjbXBfcmVzdWx0IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwpAQCAtMjI1LDkgKzIxOCw5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIAogICBGYWlsOgorICAgIFB5X0RFQ1JFRihzdGVwKTsKICAgICBQeV9YREVDUkVGKHRtcDIpOwogICAgIFB5X1hERUNSRUYoZGlmZik7Ci0gICAgUHlfWERFQ1JFRihzdGVwKTsKICAgICBQeV9YREVDUkVGKHRtcDEpOwogICAgIFB5X1hERUNSRUYob25lKTsKICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL09iamVjdHMvc2V0b2JqZWN0LmMgYi9PYmplY3RzL3NldG9iamVjdC5jCmluZGV4IDRlZjY5MmQuLjU4NDYwNDUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc2V0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9zZXRvYmplY3QuYwpAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCi0jaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCiAKIC8qIE9iamVjdCB1c2VkIGFzIGR1bW15IGtleSB0byBmaWxsIGRlbGV0ZWQgZW50cmllcyAqLwogc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3Q7CkBAIC00OCwxOSArNDcsMjAgQEAKIHN0YXRpYyBzZXRlbnRyeSAqCiBzZXRfbG9va2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewotICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKLSAgICBzZXRlbnRyeSAqZnJlZXNsb3QgPSBOVUxMOworICAgIHNldGVudHJ5ICp0YWJsZTsKICAgICBzZXRlbnRyeSAqZW50cnk7Ci0gICAgc2l6ZV90IHBlcnR1cmIgPSBoYXNoOworICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gc28tPm1hc2s7CiAgICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOyAvKiBVbnNpZ25lZCBmb3IgZGVmaW5lZCBvdmVyZmxvdyBiZWhhdmlvciAqLwogICAgIHNpemVfdCBqOwogICAgIGludCBjbXA7CiAKLSAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKKyAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CiAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIGVudHJ5OwogCisgICAgcGVydHVyYiA9IGhhc2g7CisKICAgICB3aGlsZSAoMSkgewogICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKQEAgLTcwLDggKzcwLDkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhcnRrZXkpCiAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQotICAgICAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoc3RhcnRrZXksIGtleSkpCisgICAgICAgICAgICAgICAgJiYgX1B5VW5pY29kZV9FUShzdGFydGtleSwga2V5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICB0YWJsZSA9IHNvLT50YWJsZTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKQEAgLTgzLDE0ICs4NCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgIG1hc2sgPSBzby0+bWFzazsgICAgICAgICAgICAgICAgIC8qIGhlbHAgYXZvaWQgYSByZWdpc3RlciBzcGlsbCAqLwogICAgICAgICB9Ci0gICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSAtMSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKIAogICAgICAgICBpZiAoaSArIExJTkVBUl9QUk9CRVMgPD0gbWFzaykgewogICAgICAgICAgICAgZm9yIChqID0gMCA7IGogPCBMSU5FQVJfUFJPQkVTIDsgaisrKSB7CiAgICAgICAgICAgICAgICAgZW50cnkrKzsKLSAgICAgICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IDAgJiYgZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKQEAgLTk4LDggKzk3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIF9QeVVuaWNvZGVfRVEoc3RhcnRrZXksIGtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlID0gc28tPnRhYmxlOwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwpAQCAtMTExLDcgKzExMSwxMDQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSAoaSAqIDUgKyAxICsgcGVydHVyYikgJiBtYXNrOworCisgICAgICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKKyAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgc2V0X3RhYmxlX3Jlc2l6ZShQeVNldE9iamVjdCAqLCBQeV9zc2l6ZV90KTsKKworc3RhdGljIGludAorc2V0X2FkZF9lbnRyeShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQoreworICAgIHNldGVudHJ5ICp0YWJsZTsKKyAgICBzZXRlbnRyeSAqZnJlZXNsb3Q7CisgICAgc2V0ZW50cnkgKmVudHJ5OworICAgIHNpemVfdCBwZXJ0dXJiOworICAgIHNpemVfdCBtYXNrOworICAgIHNpemVfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IgKi8KKyAgICBzaXplX3QgajsKKyAgICBpbnQgY21wOworCisgICAgLyogUHJlLWluY3JlbWVudCBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCBhcmJpdHJhcnkgY29kZSBpbiB0aGUgcmljaAorICAgICAgIGNvbXBhcmlzb24gZnJvbSBkZWFsbG9jYXRpbmcgdGhlIGtleSBqdXN0IGJlZm9yZSB0aGUgaW5zZXJ0aW9uLiAqLworICAgIFB5X0lOQ1JFRihrZXkpOworCisgIHJlc3RhcnQ6CisKKyAgICBtYXNrID0gc28tPm1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CisKKyAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CisgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgZ290byBmb3VuZF91bnVzZWQ7CisKKyAgICBmcmVlc2xvdCA9IE5VTEw7CisgICAgcGVydHVyYiA9IGhhc2g7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIC8qIHN0YXJ0a2V5IGNhbm5vdCBiZSBhIGR1bW15IGJlY2F1c2UgdGhlIGR1bW15IGhhc2ggZmllbGQgaXMgLTEgKi8KKyAgICAgICAgICAgIGFzc2VydChzdGFydGtleSAhPSBkdW1teSk7CisgICAgICAgICAgICBpZiAoc3RhcnRrZXkgPT0ga2V5KQorICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkKKyAgICAgICAgICAgICAgICAmJiBfUHlVbmljb2RlX0VRKHN0YXJ0a2V5LCBrZXkpKQorICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgdGFibGUgPSBzby0+dGFibGU7CisgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaWtlbHkgKi8KKyAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gY29tcGFyaXNvbl9lcnJvcjsKKyAgICAgICAgICAgIC8qIENvbnRpbnVpbmcgdGhlIHNlYXJjaCBmcm9tIHRoZSBjdXJyZW50IGVudHJ5IG9ubHkgbWFrZXMKKyAgICAgICAgICAgICAgIHNlbnNlIGlmIHRoZSB0YWJsZSBhbmQgZW50cnkgYXJlIHVuY2hhbmdlZDsgb3RoZXJ3aXNlLAorICAgICAgICAgICAgICAgd2UgaGF2ZSB0byByZXN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZyAqLworICAgICAgICAgICAgaWYgKHRhYmxlICE9IHNvLT50YWJsZSB8fCBlbnRyeS0+a2V5ICE9IHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKKyAgICAgICAgICAgIG1hc2sgPSBzby0+bWFzazsgICAgICAgICAgICAgICAgIC8qIGhlbHAgYXZvaWQgYSByZWdpc3RlciBzcGlsbCAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCisgICAgICAgICAgICBmcmVlc2xvdCA9IGVudHJ5OworCisgICAgICAgIGlmIChpICsgTElORUFSX1BST0JFUyA8PSBtYXNrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwIDsgaiA8IExJTkVBUl9QUk9CRVMgOyBqKyspIHsKKyAgICAgICAgICAgICAgICBlbnRyeSsrOworICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSAwICYmIGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF91bnVzZWRfb3JfZHVtbXk7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0a2V5ID09IGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhcnRrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBfUHlVbmljb2RlX0VRKHN0YXJ0a2V5LCBrZXkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlID0gc28tPnRhYmxlOworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gY29tcGFyaXNvbl9lcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlICE9IHNvLT50YWJsZSB8fCBlbnRyeS0+a2V5ICE9IHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtYXNrID0gc28tPm1hc2s7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gZW50cnk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExOSwyOSArMjE2LDUxIEBACiAgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CiAgICAgICAgIGkgPSAoaSAqIDUgKyAxICsgcGVydHVyYikgJiBtYXNrOwogCi0gICAgICAgIGVudHJ5ID0gJnRhYmxlW2ldOworICAgICAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CiAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICBnb3RvIGZvdW5kX3VudXNlZF9vcl9kdW1teTsKICAgICB9Ci0gIGZvdW5kX251bGw6Ci0gICAgcmV0dXJuIGZyZWVzbG90ID09IE5VTEwgPyBlbnRyeSA6IGZyZWVzbG90OworCisgIGZvdW5kX3VudXNlZF9vcl9kdW1teToKKyAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgZ290byBmb3VuZF91bnVzZWQ7CisgICAgc28tPnVzZWQrKzsKKyAgICBmcmVlc2xvdC0+a2V5ID0ga2V5OworICAgIGZyZWVzbG90LT5oYXNoID0gaGFzaDsKKyAgICByZXR1cm4gMDsKKworICBmb3VuZF91bnVzZWQ6CisgICAgc28tPmZpbGwrKzsKKyAgICBzby0+dXNlZCsrOworICAgIGVudHJ5LT5rZXkgPSBrZXk7CisgICAgZW50cnktPmhhc2ggPSBoYXNoOworICAgIGlmICgoc2l6ZV90KXNvLT5maWxsKjMgPCBtYXNrKjIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZCk7CisKKyAgZm91bmRfYWN0aXZlOgorICAgIFB5X0RFQ1JFRihrZXkpOworICAgIHJldHVybiAwOworCisgIGNvbXBhcmlzb25fZXJyb3I6CisgICAgUHlfREVDUkVGKGtleSk7CisgICAgcmV0dXJuIC0xOwogfQogCiAvKgogSW50ZXJuYWwgcm91dGluZSB1c2VkIGJ5IHNldF90YWJsZV9yZXNpemUoKSB0byBpbnNlcnQgYW4gaXRlbSB3aGljaCBpcwoga25vd24gdG8gYmUgYWJzZW50IGZyb20gdGhlIHNldC4gIFRoaXMgcm91dGluZSBhbHNvIGFzc3VtZXMgdGhhdAogdGhlIHNldCBjb250YWlucyBubyBkZWxldGVkIGVudHJpZXMuICBCZXNpZGVzIHRoZSBwZXJmb3JtYW5jZSBiZW5lZml0LAotdXNpbmcgc2V0X2luc2VydF9jbGVhbigpIGluIHNldF90YWJsZV9yZXNpemUoKSBpcyBkYW5nZXJvdXMgKFNGIGJ1ZyAjMTQ1NjIwOSkuCi1Ob3RlIHRoYXQgbm8gcmVmY291bnRzIGFyZSBjaGFuZ2VkIGJ5IHRoaXMgcm91dGluZTsgaWYgbmVlZGVkLCB0aGUgY2FsbGVyCi1pcyByZXNwb25zaWJsZSBmb3IgaW5jcmVmJ2luZyBga2V5YC4KK3RoZXJlIGlzIGFsc28gc2FmZXR5IGJlbmVmaXQgc2luY2UgdXNpbmcgc2V0X2FkZF9lbnRyeSgpIHJpc2tzIG1ha2luZworYSBjYWxsYmFjayBpbiB0aGUgbWlkZGxlIG9mIGEgc2V0X3RhYmxlX3Jlc2l6ZSgpLCBzZWUgaXNzdWUgMTQ1NjIwOS4KK1RoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRoZSBrZXkncyByZWZlcmVuY2UgY291bnQgYW5kCit0aGUgc2V0b2JqZWN0J3MgZmlsbCBhbmQgdXNlZCBmaWVsZHMuCiAqLwogc3RhdGljIHZvaWQKLXNldF9pbnNlcnRfY2xlYW4oUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKK3NldF9pbnNlcnRfY2xlYW4oc2V0ZW50cnkgKnRhYmxlLCBzaXplX3QgbWFzaywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7Ci0gICAgc2V0ZW50cnkgKnRhYmxlID0gc28tPnRhYmxlOwogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBzaXplX3QgcGVydHVyYiA9IGhhc2g7Ci0gICAgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KXNvLT5tYXNrOwogICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoICYgbWFzazsKICAgICBzaXplX3QgajsKIApAQCAtMTYyLDQ1ICsyODEsMTEgQEAKICAgZm91bmRfbnVsbDoKICAgICBlbnRyeS0+a2V5ID0ga2V5OwogICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKLSAgICBzby0+ZmlsbCsrOwotICAgIHNvLT51c2VkKys7CiB9CiAKIC8qID09PT09PT09IEVuZCBsb2dpYyBmb3IgcHJvYmluZyB0aGUgaGFzaCB0YWJsZSA9PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKLQotLyoKLUludGVybmFsIHJvdXRpbmUgdG8gaW5zZXJ0IGEgbmV3IGtleSBpbnRvIHRoZSB0YWJsZS4KLVVzZWQgYnkgdGhlIHB1YmxpYyBpbnNlcnQgcm91dGluZS4KLUVhdHMgYSByZWZlcmVuY2UgdG8ga2V5LgotKi8KLXN0YXRpYyBpbnQKLXNldF9pbnNlcnRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCi17Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwotCi0gICAgZW50cnkgPSBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICBpZiAoZW50cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpIHsKLSAgICAgICAgLyogVU5VU0VEICovCi0gICAgICAgIGVudHJ5LT5rZXkgPSBrZXk7Ci0gICAgICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKLSAgICAgICAgc28tPmZpbGwrKzsKLSAgICAgICAgc28tPnVzZWQrKzsKLSAgICB9IGVsc2UgaWYgKGVudHJ5LT5rZXkgPT0gZHVtbXkpIHsKLSAgICAgICAgLyogRFVNTVkgKi8KLSAgICAgICAgZW50cnktPmtleSA9IGtleTsKLSAgICAgICAgZW50cnktPmhhc2ggPSBoYXNoOwotICAgICAgICBzby0+dXNlZCsrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIEFDVElWRSAqLwotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIC8qCiBSZXN0cnVjdHVyZSB0aGUgdGFibGUgYnkgYWxsb2NhdGluZyBhIG5ldyB0YWJsZSBhbmQgcmVpbnNlcnRpbmcgYWxsCiBrZXlzIGFnYWluLiAgV2hlbiBlbnRyaWVzIGhhdmUgYmVlbiBkZWxldGVkLCB0aGUgbmV3IHRhYmxlIG1heQpAQCAtMjEzLDEwICsyOTgsMTMgQEAKICAgICBzZXRlbnRyeSAqb2xkdGFibGUsICpuZXd0YWJsZSwgKmVudHJ5OwogICAgIFB5X3NzaXplX3Qgb2xkZmlsbCA9IHNvLT5maWxsOwogICAgIFB5X3NzaXplX3Qgb2xkdXNlZCA9IHNvLT51c2VkOworICAgIFB5X3NzaXplX3Qgb2xkbWFzayA9IHNvLT5tYXNrOworICAgIHNpemVfdCBuZXdtYXNrOwogICAgIGludCBpc19vbGR0YWJsZV9tYWxsb2NlZDsKICAgICBzZXRlbnRyeSBzbWFsbF9jb3B5W1B5U2V0X01JTlNJWkVdOwogCiAgICAgYXNzZXJ0KG1pbnVzZWQgPj0gMCk7CisgICAgbWludXNlZCA9IChtaW51c2VkID4gNTAwMDApID8gbWludXNlZCAqIDIgOiBtaW51c2VkICogNDsKIAogICAgIC8qIEZpbmQgdGhlIHNtYWxsZXN0IHRhYmxlIHNpemUgPiBtaW51c2VkLiAqLwogICAgIC8qIFhYWCBzcGVlZC11cCB3aXRoIGludHJpbnNpY3MgKi8KQEAgLTI2NCwyNSArMzUyLDI0IEBACiAgICAgLyogTWFrZSB0aGUgc2V0IGVtcHR5LCB1c2luZyB0aGUgbmV3IHRhYmxlLiAqLwogICAgIGFzc2VydChuZXd0YWJsZSAhPSBvbGR0YWJsZSk7CiAgICAgbWVtc2V0KG5ld3RhYmxlLCAwLCBzaXplb2Yoc2V0ZW50cnkpICogbmV3c2l6ZSk7Ci0gICAgc28tPmZpbGwgPSAwOwotICAgIHNvLT51c2VkID0gMDsKKyAgICBzby0+ZmlsbCA9IG9sZHVzZWQ7CisgICAgc28tPnVzZWQgPSBvbGR1c2VkOwogICAgIHNvLT5tYXNrID0gbmV3c2l6ZSAtIDE7CiAgICAgc28tPnRhYmxlID0gbmV3dGFibGU7CiAKICAgICAvKiBDb3B5IHRoZSBkYXRhIG92ZXI7IHRoaXMgaXMgcmVmY291bnQtbmV1dHJhbCBmb3IgYWN0aXZlIGVudHJpZXM7CiAgICAgICAgZHVtbXkgZW50cmllcyBhcmVuJ3QgY29waWVkIG92ZXIsIG9mIGNvdXJzZSAqLworICAgIG5ld21hc2sgPSAoc2l6ZV90KXNvLT5tYXNrOwogICAgIGlmIChvbGRmaWxsID09IG9sZHVzZWQpIHsKLSAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBvbGR1c2VkID4gMDsgZW50cnkrKykgeworICAgICAgICBmb3IgKGVudHJ5ID0gb2xkdGFibGU7IGVudHJ5IDw9IG9sZHRhYmxlICsgb2xkbWFzazsgZW50cnkrKykgewogICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIG9sZHVzZWQtLTsKLSAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihuZXd0YWJsZSwgbmV3bWFzaywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBvbGR1c2VkID4gMDsgZW50cnkrKykgeworICAgICAgICBmb3IgKGVudHJ5ID0gb2xkdGFibGU7IGVudHJ5IDw9IG9sZHRhYmxlICsgb2xkbWFzazsgZW50cnkrKykgewogICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gTlVMTCAmJiBlbnRyeS0+a2V5ICE9IGR1bW15KSB7Ci0gICAgICAgICAgICAgICAgb2xkdXNlZC0tOwotICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKG5ld3RhYmxlLCBuZXdtYXNrLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTIsNTcgKzM3OSwzMCBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBDQVVUSU9OOiBzZXRfYWRkX2tleS9lbnRyeSgpIG11c3QgZ3VhcmFudGVlIGl0IHdvbid0IHJlc2l6ZSB0aGUgdGFibGUgKi8KLQogc3RhdGljIGludAotc2V0X2FkZF9lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKK3NldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewotICAgIFB5X3NzaXplX3Qgbl91c2VkOwotICAgIFB5T2JqZWN0ICprZXkgPSBlbnRyeS0+a2V5OwotICAgIFB5X2hhc2hfdCBoYXNoID0gZW50cnktPmhhc2g7CisgICAgc2V0ZW50cnkgKmVudHJ5OwogCi0gICAgYXNzZXJ0KHNvLT5maWxsIDw9IHNvLT5tYXNrKTsgIC8qIGF0IGxlYXN0IG9uZSBlbXB0eSBzbG90ICovCi0gICAgbl91c2VkID0gc28tPnVzZWQ7Ci0gICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIGhhc2gpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICghKHNvLT51c2VkID4gbl91c2VkICYmIHNvLT5maWxsKjMgPj0gKHNvLT5tYXNrKzEpKjIpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQ+NTAwMDAgPyBzby0+dXNlZCoyIDogc28tPnVzZWQqNCk7Ci19Ci0KLXN0YXRpYyBpbnQKLXNldF9hZGRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKLXsKLSAgICBzZXRlbnRyeSBlbnRyeTsKLSAgICBQeV9oYXNoX3QgaGFzaDsKLQotICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewotICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotICAgICAgICBpZiAoaGFzaCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZW50cnkua2V5ID0ga2V5OwotICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgIHJldHVybiBzZXRfYWRkX2VudHJ5KHNvLCAmZW50cnkpOworICAgIGVudHJ5ID0gc2V0X2xvb2trZXkoc28sIGtleSwgaGFzaCk7CisgICAgaWYgKGVudHJ5ICE9IE5VTEwpCisgICAgICAgIHJldHVybiBlbnRyeS0+a2V5ICE9IE5VTEw7CisgICAgcmV0dXJuIC0xOwogfQogCiAjZGVmaW5lIERJU0NBUkRfTk9URk9VTkQgMAogI2RlZmluZSBESVNDQVJEX0ZPVU5EIDEKIAogc3RhdGljIGludAotc2V0X2Rpc2NhcmRfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBzZXRlbnRyeSAqb2xkZW50cnkpCitzZXRfZGlzY2FyZF9lbnRyeShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBQeU9iamVjdCAqb2xkX2tleTsKIAotICAgIGVudHJ5ID0gc2V0X2xvb2trZXkoc28sIG9sZGVudHJ5LT5rZXksIG9sZGVudHJ5LT5oYXNoKTsKKyAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOwogICAgIGlmIChlbnRyeSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCAgfHwgIGVudHJ5LT5rZXkgPT0gZHVtbXkpCisgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIERJU0NBUkRfTk9URk9VTkQ7CiAgICAgb2xkX2tleSA9IGVudHJ5LT5rZXk7CiAgICAgZW50cnktPmtleSA9IGR1bW15OwpAQCAtMzUzLDIyICs0MTMsNDUgQEAKIH0KIAogc3RhdGljIGludAotc2V0X2Rpc2NhcmRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKK3NldF9hZGRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKIHsKLSAgICBzZXRlbnRyeSBlbnRyeTsKICAgICBQeV9oYXNoX3QgaGFzaDsKIAotICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKLQogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAogICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZW50cnkua2V5ID0ga2V5OwotICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgIHJldHVybiBzZXRfZGlzY2FyZF9lbnRyeShzbywgJmVudHJ5KTsKKyAgICByZXR1cm4gc2V0X2FkZF9lbnRyeShzbywga2V5LCBoYXNoKTsKK30KKworc3RhdGljIGludAorc2V0X2NvbnRhaW5zX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfaGFzaF90IGhhc2g7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBzZXRfY29udGFpbnNfZW50cnkoc28sIGtleSwgaGFzaCk7Cit9CisKK3N0YXRpYyBpbnQKK3NldF9kaXNjYXJkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfaGFzaF90IGhhc2g7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBzZXRfZGlzY2FyZF9lbnRyeShzbywga2V5LCBoYXNoKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQ0OSwyMCArNTMyLDIyIEBACiB7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3QgbWFzazsKLSAgICBzZXRlbnRyeSAqdGFibGU7CisgICAgc2V0ZW50cnkgKmVudHJ5OwogCiAgICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwogICAgIGkgPSAqcG9zX3B0cjsKICAgICBhc3NlcnQoaSA+PSAwKTsKLSAgICB0YWJsZSA9IHNvLT50YWJsZTsKICAgICBtYXNrID0gc28tPm1hc2s7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAodGFibGVbaV0ua2V5ID09IE5VTEwgfHwgdGFibGVbaV0ua2V5ID09IGR1bW15KSkKKyAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CisgICAgd2hpbGUgKGkgPD0gbWFzayAmJiAoZW50cnktPmtleSA9PSBOVUxMIHx8IGVudHJ5LT5rZXkgPT0gZHVtbXkpKSB7CiAgICAgICAgIGkrKzsKKyAgICAgICAgZW50cnkrKzsKKyAgICB9CiAgICAgKnBvc19wdHIgPSBpKzE7CiAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICByZXR1cm4gMDsKLSAgICBhc3NlcnQodGFibGVbaV0ua2V5ICE9IE5VTEwpOwotICAgICplbnRyeV9wdHIgPSAmdGFibGVbaV07CisgICAgYXNzZXJ0KGVudHJ5ICE9IE5VTEwpOworICAgICplbnRyeV9wdHIgPSBlbnRyeTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtNTYwLDggKzY0NSw4IEBACiAgICAgICogaW5jcmVtZW50YWxseSByZXNpemluZyBhcyB3ZSBpbnNlcnQgbmV3IGtleXMuICBFeHBlY3QKICAgICAgKiB0aGF0IHRoZXJlIHdpbGwgYmUgbm8gKG9yIGZldykgb3ZlcmxhcHBpbmcga2V5cy4KICAgICAgKi8KLSAgICBpZiAoKHNvLT5maWxsICsgb3RoZXItPnVzZWQpKjMgPj0gKHNvLT5tYXNrKzEpKjIpIHsKLSAgICAgICBpZiAoc2V0X3RhYmxlX3Jlc2l6ZShzbywgKHNvLT51c2VkICsgb3RoZXItPnVzZWQpKjIpICE9IDApCisgICAgaWYgKChzby0+ZmlsbCArIG90aGVyLT51c2VkKSozID49IHNvLT5tYXNrKjIpIHsKKyAgICAgICBpZiAoc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQgKyBvdGhlci0+dXNlZCkgIT0gMCkKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzb19lbnRyeSA9IHNvLT50YWJsZTsKQEAgLTU4NiwxMSArNjcxLDE1IEBACiAKICAgICAvKiBJZiBvdXIgdGFibGUgaXMgZW1wdHksIHdlIGNhbiB1c2Ugc2V0X2luc2VydF9jbGVhbigpICovCiAgICAgaWYgKHNvLT5maWxsID09IDApIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8PSBvdGhlci0+bWFzazsgaSsrLCBvdGhlcl9lbnRyeSsrKSB7CisgICAgICAgIHNldGVudHJ5ICpuZXd0YWJsZSA9IHNvLT50YWJsZTsKKyAgICAgICAgc2l6ZV90IG5ld21hc2sgPSAoc2l6ZV90KXNvLT5tYXNrOworICAgICAgICBzby0+ZmlsbCA9IG90aGVyLT51c2VkOworICAgICAgICBzby0+dXNlZCA9IG90aGVyLT51c2VkOworICAgICAgICBmb3IgKGkgPSBvdGhlci0+bWFzayArIDE7IGkgPiAwIDsgaS0tLCBvdGhlcl9lbnRyeSsrKSB7CiAgICAgICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OwogICAgICAgICAgICAgaWYgKGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teSkgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGtleSwgb3RoZXJfZW50cnktPmhhc2gpOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4obmV3dGFibGUsIG5ld21hc2ssIGtleSwgb3RoZXJfZW50cnktPmhhc2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtNjAxLDQ2ICs2OTAsMTMgQEAKICAgICAgICAgb3RoZXJfZW50cnkgPSAmb3RoZXItPnRhYmxlW2ldOwogICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OwogICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKLXNldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKLXsKLSAgICBQeU9iamVjdCAqa2V5OwotICAgIHNldGVudHJ5ICpsdV9lbnRyeTsKLQotICAgIGx1X2VudHJ5ID0gc2V0X2xvb2trZXkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKLSAgICBpZiAobHVfZW50cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGtleSA9IGx1X2VudHJ5LT5rZXk7Ci0gICAgcmV0dXJuIGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teTsKLX0KLQotc3RhdGljIGludAotc2V0X2NvbnRhaW5zX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCi17Ci0gICAgc2V0ZW50cnkgZW50cnk7Ci0gICAgUHlfaGFzaF90IGhhc2g7Ci0KLSAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKLSAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICByZXR1cm4gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCAmZW50cnkpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3BvcChQeVNldE9iamVjdCAqc28pCiB7CkBAIC02ODIsNDMgKzczOCw2NCBAQAogICAgIHJldHVybiAwOwogfQogCisvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaCB2YWx1ZXMuCisgICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgdXNlIGNhc2VzIGhhdmUgbWFueSBjb21iaW5hdGlvbnMgb2YgYQorICAgc21hbGwgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggbmVhcmJ5IGhhc2hlcyBzbyB0aGF0IG1hbnkgZGlzdGluY3QKKyAgIGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5IGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KKworc3RhdGljIFB5X3VoYXNoX3QKK19zaHVmZmxlX2JpdHMoUHlfdWhhc2hfdCBoKQoreworICAgIHJldHVybiAoKGggXiA4OTg2OTc0N1VMKSBeIChoIDw8IDE2KSkgKiAzNjQ0Nzk4MTY3VUw7Cit9CisKKy8qIE1vc3Qgb2YgdGhlIGNvbnN0YW50cyBpbiB0aGlzIGhhc2ggYWxnb3JpdGhtIGFyZSByYW5kb21seSBjaG9zZW4KKyAgIGxhcmdlIHByaW1lcyB3aXRoICJpbnRlcmVzdGluZyBiaXQgcGF0dGVybnMiIGFuZCB0aGF0IHBhc3NlZCB0ZXN0cworICAgZm9yIGdvb2QgY29sbGlzaW9uIHN0YXRpc3RpY3Mgb24gYSB2YXJpZXR5IG9mIHByb2JsZW1hdGljIGRhdGFzZXRzCisgICBpbmNsdWRpbmcgcG93ZXJzZXRzIGFuZCBncmFwaCBzdHJ1Y3R1cmVzIChzdWNoIGFzIERhdmlkIEVwcHN0ZWluJ3MKKyAgIGdyYXBoIHJlY2lwZXMgaW4gTGliL3Rlc3QvdGVzdF9zZXQucHkpICovCisKIHN0YXRpYyBQeV9oYXNoX3QKIGZyb3plbnNldF9oYXNoKFB5T2JqZWN0ICpzZWxmKQogewotICAgIC8qIE1vc3Qgb2YgdGhlIGNvbnN0YW50cyBpbiB0aGlzIGhhc2ggYWxnb3JpdGhtIGFyZSByYW5kb21seSBjaG9vc2VuCi0gICAgICAgbGFyZ2UgcHJpbWVzIHdpdGggImludGVyZXN0aW5nIGJpdCBwYXR0ZXJucyIgYW5kIHRoYXQgcGFzc2VkCi0gICAgICAgdGVzdHMgZm9yIGdvb2QgY29sbGlzaW9uIHN0YXRpc3RpY3Mgb24gYSB2YXJpZXR5IG9mIHByb2JsZW1hdGljCi0gICAgICAgZGF0YXNldHMgc3VjaCBhczoKLQotICAgICAgICAgIHBzID0gW10KLSAgICAgICAgICBmb3IgciBpbiByYW5nZSgyMSk6Ci0gICAgICAgICAgICAgIHBzICs9IGl0ZXJ0b29scy5jb21iaW5hdGlvbnMocmFuZ2UoMjApLCByKQotICAgICAgICAgIG51bV9kaXN0aW5jdF9oYXNoZXMgPSBsZW4oe2hhc2goZnJvemVuc2V0KHMpKSBmb3IgcyBpbiBwc30pCi0KLSAgICAqLwogICAgIFB5U2V0T2JqZWN0ICpzbyA9IChQeVNldE9iamVjdCAqKXNlbGY7Ci0gICAgUHlfdWhhc2hfdCBoLCBoYXNoID0gMTkyNzg2ODIzN1VMOworICAgIFB5X3VoYXNoX3QgaGFzaCA9IDA7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIFB5X3NzaXplX3QgcG9zID0gMDsKIAogICAgIGlmIChzby0+aGFzaCAhPSAtMSkKICAgICAgICAgcmV0dXJuIHNvLT5oYXNoOwogCi0gICAgaGFzaCAqPSAoUHlfdWhhc2hfdClQeVNldF9HRVRfU0laRShzZWxmKSArIDE7Ci0gICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIC8qIFdvcmsgdG8gaW5jcmVhc2UgdGhlIGJpdCBkaXNwZXJzaW9uIGZvciBjbG9zZWx5IHNwYWNlZCBoYXNoCi0gICAgICAgICAgIHZhbHVlcy4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55Ci0gICAgICAgICAgIGNvbWJpbmF0aW9ucyBvZiBhIHNtYWxsIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIG5lYXJieQotICAgICAgICAgICBoYXNoZXMgc28gdGhhdCBtYW55IGRpc3RpbmN0IGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5Ci0gICAgICAgICAgIGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KLSAgICAgICAgaCA9IGVudHJ5LT5oYXNoOwotICAgICAgICBoYXNoIF49ICgoaCBeIDg5ODY5NzQ3VUwpIF4gKGggPDwgMTYpKSAqIDM2NDQ3OTgxNjdVTDsKLSAgICB9Ci0gICAgLyogTWFrZSB0aGUgZmluYWwgcmVzdWx0IHNwcmVhZC1vdXQgaW4gYSBkaWZmZXJlbnQgcGF0dGVybgotICAgICAgIHRoYW4gdGhlIGFsZ29yaXRobSBmb3IgdHVwbGVzIG9yIG90aGVyIHB5dGhvbiBvYmplY3RzLiAqLworICAgIC8qIFhvci1pbiBzaHVmZmxlZCBiaXRzIGZyb20gZXZlcnkgZW50cnkncyBoYXNoIGZpZWxkIGJlY2F1c2UgeG9yIGlzCisgICAgICAgY29tbXV0YXRpdmUgYW5kIGEgZnJvemVuc2V0IGhhc2ggc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIG9yZGVyLgorCisgICAgICAgRm9yIHNwZWVkLCBpbmNsdWRlIG51bGwgZW50cmllcyBhbmQgZHVtbXkgZW50cmllcyBhbmQgdGhlbgorICAgICAgIHN1YnRyYWN0IG91dCB0aGVpciBlZmZlY3QgYWZ0ZXJ3YXJkcyBzbyB0aGF0IHRoZSBmaW5hbCBoYXNoCisgICAgICAgZGVwZW5kcyBvbmx5IG9uIGFjdGl2ZSBlbnRyaWVzLiAgVGhpcyBhbGxvd3MgdGhlIGNvZGUgdG8gYmUKKyAgICAgICB2ZWN0b3JpemVkIGJ5IHRoZSBjb21waWxlciBhbmQgaXQgc2F2ZXMgdGhlIHVucHJlZGljdGFibGUKKyAgICAgICBicmFuY2hlcyB0aGF0IHdvdWxkIGFyaXNlIHdoZW4gdHJ5aW5nIHRvIGV4Y2x1ZGUgbnVsbCBhbmQgZHVtbXkKKyAgICAgICBlbnRyaWVzIG9uIGV2ZXJ5IGl0ZXJhdGlvbi4gKi8KKworICAgIGZvciAoZW50cnkgPSBzby0+dGFibGU7IGVudHJ5IDw9ICZzby0+dGFibGVbc28tPm1hc2tdOyBlbnRyeSsrKQorICAgICAgICBoYXNoIF49IF9zaHVmZmxlX2JpdHMoZW50cnktPmhhc2gpOworCisgICAgLyogUmVtb3ZlIHRoZSBlZmZlY3Qgb2YgYW4gb2RkIG51bWJlciBvZiBOVUxMIGVudHJpZXMgKi8KKyAgICBpZiAoKHNvLT5tYXNrICsgMSAtIHNvLT5maWxsKSAmIDEpCisgICAgICAgIGhhc2ggXj0gX3NodWZmbGVfYml0cygwKTsKKworICAgIC8qIFJlbW92ZSB0aGUgZWZmZWN0IG9mIGFuIG9kZCBudW1iZXIgb2YgZHVtbXkgZW50cmllcyAqLworICAgIGlmICgoc28tPmZpbGwgLSBzby0+dXNlZCkgJiAxKQorICAgICAgICBoYXNoIF49IF9zaHVmZmxlX2JpdHMoLTEpOworCisgICAgLyogRmFjdG9yIGluIHRoZSBudW1iZXIgb2YgYWN0aXZlIGVudHJpZXMgKi8KKyAgICBoYXNoIF49ICgoUHlfdWhhc2hfdClQeVNldF9HRVRfU0laRShzZWxmKSArIDEpICogMTkyNzg2ODIzN1VMOworCisgICAgLyogRGlzcGVyc2UgcGF0dGVybnMgYXJpc2luZyBpbiBuZXN0ZWQgZnJvemVuc2V0cyAqLwogICAgIGhhc2ggPSBoYXNoICogNjkwNjlVICsgOTA3MTMzOTIzVUw7CisKKyAgICAvKiAtMSBpcyByZXNlcnZlZCBhcyBhbiBlcnJvciBjb2RlICovCiAgICAgaWYgKGhhc2ggPT0gKFB5X3VoYXNoX3QpLTEpCiAgICAgICAgIGhhc2ggPSA1OTA5MjM3MTNVTDsKKwogICAgIHNvLT5oYXNoID0gaGFzaDsKICAgICByZXR1cm4gaGFzaDsKIH0KQEAgLTg2NSw3ICs5NDIsNyBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKXNldGl0ZXJfdHJhdmVyc2UsICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtOTEwLDE4ICs5ODcsMTQgQEAKICAgICAgICAgKiBpbmNyZW1lbnRhbGx5IHJlc2l6aW5nIGFzIHdlIGluc2VydCBuZXcga2V5cy4gIEV4cGVjdAogICAgICAgICAqIHRoYXQgdGhlcmUgd2lsbCBiZSBubyAob3IgZmV3KSBvdmVybGFwcGluZyBrZXlzLgogICAgICAgICAqLwotICAgICAgICBpZiAoZGljdHNpemUgPT0gLTEpCisgICAgICAgIGlmIChkaWN0c2l6ZSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmICgoc28tPmZpbGwgKyBkaWN0c2l6ZSkqMyA+PSAoc28tPm1hc2srMSkqMikgewotICAgICAgICAgICAgaWYgKHNldF90YWJsZV9yZXNpemUoc28sIChzby0+dXNlZCArIGRpY3RzaXplKSoyKSAhPSAwKQorICAgICAgICBpZiAoKHNvLT5maWxsICsgZGljdHNpemUpKjMgPj0gc28tPm1hc2sqMikgeworICAgICAgICAgICAgaWYgKHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkICsgZGljdHNpemUpICE9IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChfUHlEaWN0X05leHQob3RoZXIsICZwb3MsICZrZXksICZ2YWx1ZSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICBzZXRlbnRyeSBhbl9lbnRyeTsKLQotICAgICAgICAgICAgYW5fZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgICAgICAgICBhbl9lbnRyeS5rZXkgPSBrZXk7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSkKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIGhhc2gpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTk3MCw5ICsxMDQzLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYWtlX25ld19zZXQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqaXRlcmFibGUpCiB7Ci0gICAgUHlTZXRPYmplY3QgKnNvID0gTlVMTDsKKyAgICBQeVNldE9iamVjdCAqc287CiAKLSAgICAvKiBjcmVhdGUgUHlTZXRPYmplY3Qgc3RydWN0dXJlICovCiAgICAgc28gPSAoUHlTZXRPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc28gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMDE1LDcgKzEwODcsOCBAQAogewogICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IE5VTEwsICpyZXN1bHQ7CiAKLSAgICBpZiAodHlwZSA9PSAmUHlGcm96ZW5TZXRfVHlwZSAmJiAhX1B5QXJnX05vS2V5d29yZHMoImZyb3plbnNldCgpIiwga3dkcykpCisgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiB0eXBlID09ICZQeUZyb3plblNldF9UeXBlCisgICAgICAgICYmICFfUHlBcmdfTm9LZXl3b3JkcygiZnJvemVuc2V0KCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsIHR5cGUtPnRwX25hbWUsIDAsIDEsICZpdGVyYWJsZSkpCkBAIC0xMDQyLDI0ICsxMTE1LDkgQEAKICAgICByZXR1cm4gZW1wdHlmcm96ZW5zZXQ7CiB9CiAKLWludAotUHlTZXRfQ2xlYXJGcmVlTGlzdCh2b2lkKQotewotICAgIHJldHVybiAwOwotfQotCi12b2lkCi1QeVNldF9GaW5pKHZvaWQpCi17Ci0gICAgUHlfQ0xFQVIoZW1wdHlmcm96ZW5zZXQpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBpZiAodHlwZSA9PSAmUHlTZXRfVHlwZSAmJiAhX1B5QXJnX05vS2V5d29yZHMoInNldCgpIiwga3dkcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIG1ha2VfbmV3X3NldCh0eXBlLCBOVUxMKTsKIH0KIApAQCAtMTIwMSw2ICsxMjU5LDggQEAKIHsKICAgICBQeVNldE9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICprZXksICppdCwgKnRtcDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpCiAgICAgICAgIHJldHVybiBzZXRfY29weShzbyk7CkBAIC0xMjIwLDEzICsxMjgwLDE1IEBACiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoc2V0X25leHQoKFB5U2V0T2JqZWN0ICopb3RoZXIsICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgZW50cnkpOwotICAgICAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgICAgICBrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGtleSwgaGFzaCk7CisgICAgICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocnYpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsIGVudHJ5KSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTI0MiwzMiArMTMwNCwxNSBAQAogICAgIH0KIAogICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGludCBydjsKLSAgICAgICAgc2V0ZW50cnkgZW50cnk7Ci0gICAgICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotCi0gICAgICAgIGlmIChoYXNoID09IC0xKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgICAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCAmZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywga2V5LCBoYXNoKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlmIChydikgewotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCAmZW50cnkpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwga2V5LCBoYXNoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgIH0KQEAgLTEyNzcsNiArMTMyMiwxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKGl0KTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzNjMsNiArMTQxMyw3IEBACiBzZXRfaXNkaXNqb2ludChQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKICAgICBQeU9iamVjdCAqa2V5LCAqaXQsICp0bXA7CisgICAgaW50IHJ2OwogCiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKSB7CiAgICAgICAgIGlmIChQeVNldF9HRVRfU0laRShzbykgPT0gMCkKQEAgLTEzODEsOCArMTQzMiw4IEBACiAgICAgICAgICAgICBvdGhlciA9IHRtcDsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoc2V0X25leHQoKFB5U2V0T2JqZWN0ICopb3RoZXIsICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgZW50cnkpOwotICAgICAgICAgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgIGlmIChydiA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBpZiAocnYpCiAgICAgICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMTM5NSw4ICsxNDQ2LDYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICBpbnQgcnY7Ci0gICAgICAgIHNldGVudHJ5IGVudHJ5OwogICAgICAgICBQeV9oYXNoX3QgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKIAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkgewpAQCAtMTQwNCwxMSArMTQ1Myw5IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sICZlbnRyeSk7CisgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBrZXksIGhhc2gpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTQyOSw2ICsxNDc2LDEwIEBACiBzdGF0aWMgaW50CiBzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7CisgICAgaWYgKFB5U2V0X0dFVF9TSVpFKHNvKSA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgcmV0dXJuIHNldF9jbGVhcl9pbnRlcm5hbChzbyk7CiAKQEAgLTE0MzcsNyArMTQ4OCw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKIAogICAgICAgICB3aGlsZSAoc2V0X25leHQoKFB5U2V0T2JqZWN0ICopb3RoZXIsICZwb3MsICZlbnRyeSkpCi0gICAgICAgICAgICBpZiAoc2V0X2Rpc2NhcmRfZW50cnkoc28sIGVudHJ5KSA9PSAtMSkKKyAgICAgICAgICAgIGlmIChzZXRfZGlzY2FyZF9lbnRyeShzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlPYmplY3QgKmtleSwgKml0OwpAQCAtMTQ0Niw3ICsxNDk3LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKHNldF9kaXNjYXJkX2tleShzbywga2V5KSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKHNldF9kaXNjYXJkX2tleShzbywga2V5KSA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE0NTcsMTAgKzE1MDgsMTAgQEAKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIC8qIElmIG1vcmUgdGhhbiAxLzUgYXJlIGR1bW1pZXMsIHRoZW4gcmVzaXplIHRoZW0gYXdheS4gKi8KLSAgICBpZiAoKHNvLT5maWxsIC0gc28tPnVzZWQpICogNSA8IHNvLT5tYXNrKQorICAgIC8qIElmIG1vcmUgdGhhbiAxLzR0aCBhcmUgZHVtbWllcywgdGhlbiByZXNpemUgdGhlbSBhd2F5LiAqLworICAgIGlmICgoc2l6ZV90KShzby0+ZmlsbCAtIHNvLT51c2VkKSA8PSAoc2l6ZV90KXNvLT5tYXNrIC8gNCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkPjUwMDAwID8gc28tPnVzZWQqMiA6IHNvLT51c2VkKjQpOworICAgIHJldHVybiBzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNDg3LDcgKzE1MzgsNyBAQAogICAgIHJlc3VsdCA9IHNldF9jb3B5KHNvKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoKFB5U2V0T2JqZWN0ICopIHJlc3VsdCwgb3RoZXIpICE9IC0xKQorICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoKFB5U2V0T2JqZWN0ICopIHJlc3VsdCwgb3RoZXIpID09IDApCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDk3LDggKzE1NDgsMTUgQEAKIHNldF9kaWZmZXJlbmNlKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIGludCBydjsKKworICAgIGlmIChQeVNldF9HRVRfU0laRShzbykgPT0gMCkgeworICAgICAgICByZXR1cm4gc2V0X2NvcHkoc28pOworICAgIH0KIAogICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpICAmJiAhUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKSB7CiAgICAgICAgIHJldHVybiBzZXRfY29weV9hbmRfZGlmZmVyZW5jZShzbywgb3RoZXIpOwpAQCAtMTUxNiwxNyArMTU3NCwxNSBAQAogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkgewogICAgICAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgICAgIHNldGVudHJ5IGVudHJ5Y29weTsKLSAgICAgICAgICAgIGludCBydjsKLSAgICAgICAgICAgIGVudHJ5Y29weS5oYXNoID0gZW50cnktPmhhc2g7Ci0gICAgICAgICAgICBlbnRyeWNvcHkua2V5ID0gZW50cnktPmtleTsKLSAgICAgICAgICAgIHJ2ID0gX1B5RGljdF9Db250YWlucyhvdGhlciwgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICAgICAgICAgIHJ2ID0gX1B5RGljdF9Db250YWlucyhvdGhlciwga2V5LCBoYXNoKTsKICAgICAgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsICZlbnRyeWNvcHkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNTM3LDEzICsxNTkzLDE1IEBACiAKICAgICAvKiBJdGVyYXRlIG92ZXIgc28sIGNoZWNraW5nIGZvciBjb21tb24gZWxlbWVudHMgaW4gb3RoZXIuICovCiAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwgZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwga2V5LCBoYXNoKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoIXJ2KSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGVudHJ5KSkgeworICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0xNjA1LDI5ICsxNjYzLDI0IEBACiAgICAgUHlTZXRPYmplY3QgKm90aGVyc2V0OwogICAgIFB5T2JqZWN0ICprZXk7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIHNldGVudHJ5ICplbnRyeTsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpCiAgICAgICAgIHJldHVybiBzZXRfY2xlYXIoc28pOwogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkgewogICAgICAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgICAgIGludCBydjsKLSAgICAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgICAgIHdoaWxlIChfUHlEaWN0X05leHQob3RoZXIsICZwb3MsICZrZXksICZ2YWx1ZSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICBzZXRlbnRyeSBhbl9lbnRyeTsKLQogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBhbl9lbnRyeS5oYXNoID0gaGFzaDsKLSAgICAgICAgICAgIGFuX2VudHJ5LmtleSA9IGtleTsKLQotICAgICAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywgJmFuX2VudHJ5KTsKLSAgICAgICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywga2V5LCBoYXNoKTsKKyAgICAgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChydiA9PSBESVNDQVJEX05PVEZPVU5EKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sICZhbl9lbnRyeSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTY0NywxMyArMTcwMCwxNSBAQAogICAgIH0KIAogICAgIHdoaWxlIChzZXRfbmV4dChvdGhlcnNldCwgJnBvcywgJmVudHJ5KSkgewotICAgICAgICBpbnQgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywgZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICBydiA9IHNldF9kaXNjYXJkX2VudHJ5KHNvLCBrZXksIGhhc2gpOworICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXJzZXQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBlbnRyeSkpIHsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyc2V0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE3MTUsNiArMTc3MCw3IEBACiB7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewogICAgICAgICBQeU9iamVjdCAqdG1wLCAqcmVzdWx0OwpAQCAtMTcyOSw4ICsxNzg1LDggQEAKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogCiAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIGludCBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwgZW50cnkpOwotICAgICAgICBpZiAocnYgPT0gLTEpCisgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KChQeVNldE9iamVjdCAqKW90aGVyLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgIGlmIChydiA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCFydikKICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKQEAgLTE4MjEsNyArMTg3Nyw3IEBACiAgICAgaW50IHJ2OwogCiAgICAgcnYgPSBzZXRfY29udGFpbnNfa2V5KHNvLCBrZXkpOwotICAgIGlmIChydiA9PSAtMSkgeworICAgIGlmIChydiA8IDApIHsKICAgICAgICAgaWYgKCFQeVNldF9DaGVjayhrZXkpIHx8ICFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xODQwLDcgKzE4OTYsNyBAQAogICAgIGxvbmcgcmVzdWx0OwogCiAgICAgcmVzdWx0ID0gc2V0X2NvbnRhaW5zKHNvLCBrZXkpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgaWYgKHJlc3VsdCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKIH0KQEAgLTE4NTQsNyArMTkxMCw3IEBACiAgICAgaW50IHJ2OwogCiAgICAgcnYgPSBzZXRfZGlzY2FyZF9rZXkoc28sIGtleSk7Ci0gICAgaWYgKHJ2ID09IC0xKSB7CisgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICBpZiAoIVB5U2V0X0NoZWNrKGtleSkgfHwgIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTg2Myw3ICsxOTE5LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBydiA9IHNldF9kaXNjYXJkX2tleShzbywgdG1wa2V5KTsKICAgICAgICAgUHlfREVDUkVGKHRtcGtleSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkKKyAgICAgICAgaWYgKHJ2IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTg4Niw3ICsxOTQyLDcgQEAKICAgICBpbnQgcnY7CiAKICAgICBydiA9IHNldF9kaXNjYXJkX2tleShzbywga2V5KTsKLSAgICBpZiAocnYgPT0gLTEpIHsKKyAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgIGlmICghUHlTZXRfQ2hlY2soa2V5KSB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xODk1LDcgKzE5NTEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfa2V5KHNvLCB0bXBrZXkpOwogICAgICAgICBQeV9ERUNSRUYodG1wa2V5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICBpZiAocnYgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTk0OSwxMyArMjAwNSwxMiBAQAogewogICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNlbGYpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5U2V0X0NoZWNrKHNlbGYpICYmICFfUHlBcmdfTm9LZXl3b3Jkcygic2V0KCkiLCBrd2RzKSkKKyAgICBpZiAoa3dkcyAhPSBOVUxMICYmICFfUHlBcmdfTm9LZXl3b3Jkcygic2V0KCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgMCwgMSwgJml0ZXJhYmxlKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHNldF9jbGVhcl9pbnRlcm5hbChzZWxmKTsKKyAgICBpZiAoc2VsZi0+ZmlsbCkKKyAgICAgICAgc2V0X2NsZWFyX2ludGVybmFsKHNlbGYpOwogICAgIHNlbGYtPmhhc2ggPSAtMTsKICAgICBpZiAoaXRlcmFibGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTIyLDcgKzIxNzcsNyBAQAogICAgICBjb3B5X2RvY30sCiAgICAgeyJkaWZmZXJlbmNlIiwgICAgICAoUHlDRnVuY3Rpb24pc2V0X2RpZmZlcmVuY2VfbXVsdGksICAgICAgTUVUSF9WQVJBUkdTLAogICAgICBkaWZmZXJlbmNlX2RvY30sCi0gICAgeyJpbnRlcnNlY3Rpb24iLChQeUNGdW5jdGlvbilzZXRfaW50ZXJzZWN0aW9uX211bHRpLCAgICAgICAgTUVUSF9WQVJBUkdTLAorICAgIHsiaW50ZXJzZWN0aW9uIiwgICAgKFB5Q0Z1bmN0aW9uKXNldF9pbnRlcnNlY3Rpb25fbXVsdGksICAgIE1FVEhfVkFSQVJHUywKICAgICAgaW50ZXJzZWN0aW9uX2RvY30sCiAgICAgeyJpc2Rpc2pvaW50IiwgICAgICAoUHlDRnVuY3Rpb24pc2V0X2lzZGlzam9pbnQsICAgIE1FVEhfTywKICAgICAgaXNkaXNqb2ludF9kb2N9LApAQCAtMjE5Myw3ICsyMjQ4LDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKXNldF90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KXNldF9jbGVhcl9pbnRlcm5hbCwgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgKHJpY2hjbXBmdW5jKXNldF9yaWNoY29tcGFyZSwgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihQeVNldE9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoUHlTZXRPYmplY3QsIHdlYWtyZWZsaXN0KSwgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAoZ2V0aXRlcmZ1bmMpc2V0X2l0ZXIsICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBmcm96ZW5zZXRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCkBAIC0yMjc3LDYgKzIzMzIsMTggQEAKIH0KIAogaW50CitQeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQKK1B5U2V0X0Zpbmkodm9pZCkKK3sKKyAgICBQeV9DTEVBUihlbXB0eWZyb3plbnNldCk7Cit9CisKK2ludAogX1B5U2V0X05leHRFbnRyeShQeU9iamVjdCAqc2V0LCBQeV9zc2l6ZV90ICpwb3MsIFB5T2JqZWN0ICoqa2V5LCBQeV9oYXNoX3QgKmhhc2gpCiB7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmggYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaAppbmRleCAwZmM2YjU4Li5hOWQwYTM0IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaApAQCAtMSw2ICsxLDggQEAKIC8qIHN0cmluZ2xpYjogY29kZWMgaW1wbGVtZW50YXRpb25zICovCiAKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorI2lmICFTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyBlcnJvciAiY29kZWNzLmggaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKKyNlbmRpZgogCiAvKiBNYXNrIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBhIEMgJ2xvbmcnIGNvbnRhaW5zIGEKICAgIG5vbi1BU0NJSSwgVVRGOC1lbmNvZGVkIGNoYXIuICovCkBAIC0yNjMsNDkgKzI2NSwzMyBAQAogI2RlZmluZSBNQVhfU0hPUlRfVU5JQ0hBUlMgMzAwICAvKiBsYXJnZXN0IHNpemUgd2UnbGwgZG8gb24gdGhlIHN0YWNrICovCiAKICAgICBQeV9zc2l6ZV90IGk7ICAgICAgICAgICAgICAgIC8qIGluZGV4IGludG8gcyBvZiBuZXh0IGlucHV0IGJ5dGUgKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgIC8qIHJlc3VsdCBzdHJpbmcgb2JqZWN0ICovCiAgICAgY2hhciAqcDsgICAgICAgICAgICAgICAgICAgICAvKiBuZXh0IGZyZWUgYnl0ZSBpbiBvdXRwdXQgYnVmZmVyICovCi0gICAgUHlfc3NpemVfdCBuYWxsb2NhdGVkOyAgICAgIC8qIG51bWJlciBvZiByZXN1bHQgYnl0ZXMgYWxsb2NhdGVkICovCi0gICAgUHlfc3NpemVfdCBubmVlZGVkOyAgICAgICAgICAgIC8qIG51bWJlciBvZiByZXN1bHQgYnl0ZXMgbmVlZGVkICovCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcCA9IE5VTEw7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOwogI2VuZGlmCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKICAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSAyOwotICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogMl07CiAjZWxpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMgogICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDM7Ci0gICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiAzXTsKICNlbHNlIC8qICBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gNCAqLwogICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDQ7Ci0gICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiA0XTsKICNlbmRpZgorICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGFzc2VydChzaXplID49IDApOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKLSAgICBpZiAoc2l6ZSA8PSBNQVhfU0hPUlRfVU5JQ0hBUlMpIHsKLSAgICAgICAgLyogV3JpdGUgaW50byB0aGUgc3RhY2sgYnVmZmVyOyBuYWxsb2NhdGVkIGNhbid0IG92ZXJmbG93LgotICAgICAgICAgKiBBdCB0aGUgZW5kLCB3ZSdsbCBhbGxvY2F0ZSBleGFjdGx5IGFzIG11Y2ggaGVhcCBzcGFjZSBhcyBpdAotICAgICAgICAgKiB0dXJucyBvdXQgd2UgbmVlZC4KLSAgICAgICAgICovCi0gICAgICAgIG5hbGxvY2F0ZWQgPSBQeV9TQUZFX0RPV05DQVNUKHNpemVvZihzdGFja2J1ZiksIHNpemVfdCwgaW50KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsgICAvKiB3aWxsIGFsbG9jYXRlIGFmdGVyIHdlJ3JlIGRvbmUgKi8KLSAgICAgICAgcCA9IHN0YWNrYnVmOworICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBtYXhfY2hhcl9zaXplKSB7CisgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gbWF4X2NoYXJfc2l6ZSkgewotICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogT3ZlcmFsbG9jYXRlIG9uIHRoZSBoZWFwLCBhbmQgZ2l2ZSB0aGUgZXhjZXNzIGJhY2sgYXQgdGhlIGVuZC4gKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IHNpemUgKiBtYXhfY2hhcl9zaXplOwotICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5hbGxvY2F0ZWQpOwotICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgfQorCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUgKiBtYXhfY2hhcl9zaXplKTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOykgewogICAgICAgICBQeV9VQ1M0IGNoID0gZGF0YVtpKytdOwpAQCAtMzI2LDcyICszMTIsMTE5IEBACiAgICAgICAgIH0KICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCiAgICAgICAgIGVsc2UgaWYgKFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSkgewotICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIGssIHN0YXJ0cG9zOwotICAgICAgICAgICAgc3RhcnRwb3MgPSBpLTE7Ci0gICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKLSAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAotICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4Yywgc3RhcnRwb3MsIHN0YXJ0cG9zKzEsICZuZXdwb3MpOwotICAgICAgICAgICAgaWYgKCFyZXApCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkKLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOwotCi0gICAgICAgICAgICBpZiAocmVwc2l6ZSA+IG1heF9jaGFyX3NpemUpIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldDsKLQotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIHN0YWNrYnVmOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAobmFsbG9jYXRlZCA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSArIG1heF9jaGFyX3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuYWxsb2NhdGVkICs9IHJlcHNpemUgLSBtYXhfY2hhcl9zaXplOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5hbGxvY2F0ZWQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIHN0YWNrYnVmLCBvZmZzZXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIG9mZnNldDsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIGVuZHBvcywgbmV3cG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBrOworICAgICAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pIHsKKyAgICAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgewotICAgICAgICAgICAgICAgIGNoYXIgKnByZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXApOwotICAgICAgICAgICAgICAgIGZvcihrID0gcmVwc2l6ZTsgayA+IDA7IGstLSkKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICpwcmVwKys7Ci0gICAgICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewotICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQgcmVwa2luZDsKLSAgICAgICAgICAgICAgICB2b2lkICpyZXBkYXRhOworICAgICAgICAgICAgc3RhcnRwb3MgPSBpLTE7CisgICAgICAgICAgICBlbmRwb3MgPSBzdGFydHBvcysxOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKKyAgICAgICAgICAgIHdoaWxlICgoZW5kcG9zIDwgc2l6ZSkgJiYgUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoZGF0YVtlbmRwb3NdKSkKKyAgICAgICAgICAgICAgICBlbmRwb3MrKzsKKworICAgICAgICAgICAgLyogT25seSBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciBpZiBpdCdzIG5vdCB0aGUgbGFzdCB3cml0ZSAqLworICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IChlbmRwb3MgPCBzaXplKTsKKworICAgICAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgICAgICAgICBtZW1zZXQocCwgJz8nLCBlbmRwb3MgLSBzdGFydHBvcyk7CisgICAgICAgICAgICAgICAgcCArPSAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCB0aGUgaWdub3JlIGhhbmRsZXIgKi8KKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTOgorICAgICAgICAgICAgICAgIGZvciAoaz1zdGFydHBvczsgazxlbmRwb3M7IGsrKykgeworICAgICAgICAgICAgICAgICAgICBjaCA9IGRhdGFba107CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhlMCB8IChjaCA+PiAxMikpOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0JBQ0tTTEFTSFJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IG1heF9jaGFyX3NpemUgKiAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIHAgPSBiYWNrc2xhc2hyZXBsYWNlKCZ3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcyk7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICByZXBraW5kID0gUHlVbmljb2RlX0tJTkQocmVwKTsKLSAgICAgICAgICAgICAgICByZXBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVwKTsKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgZm9yKGs9MDsgazxyZXBzaXplOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQocmVwa2luZCwgcmVwZGF0YSwgayk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgweDgwIDw9IGMpIHsKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOgorICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSBtYXhfY2hhcl9zaXplICogKGVuZHBvcyAtIHN0YXJ0cG9zKTsKKyAgICAgICAgICAgICAgICBwID0geG1sY2hhcnJlZnJlcGxhY2UoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcyk7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CisgICAgICAgICAgICAgICAgZm9yIChrPXN0YXJ0cG9zOyBrPGVuZHBvczsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gZGF0YVtrXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoMHhEQzgwIDw9IGNoICYmIGNoIDw9IDB4RENGRikpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKShjaCAmIDB4ZmYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoayA+PSBlbmRwb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgaSArPSAoZW5kcG9zIC0gc3RhcnRwb3MgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXJ0cG9zID0gazsKKyAgICAgICAgICAgICAgICBhc3NlcnQoc3RhcnRwb3MgPCBlbmRwb3MpOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCB0aGUgZGVmYXVsdCBoYW5kbGVyICovCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9yX2hhbmRsZXJfb2JqLCAidXRmLTgiLCAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIsCisgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4Yywgc3RhcnRwb3MsIGVuZHBvcywgJm5ld3Bvcyk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gbWF4X2NoYXJfc2l6ZTsKKworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXApKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHJlcCBpcyB1bmljb2RlICovCisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHJlcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgInV0Zi04IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS0xLCBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpYzsKKworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVwKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgICAgICAgICAgICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKHJlcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCkpOwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVwKTsKKworICAgICAgICAgICAgICAgIGkgPSBuZXdwb3M7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9DTEVBUihyZXApOworCisgICAgICAgICAgICAvKiBJZiBvdmVyYWxsb2NhdGlvbiB3YXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0IGl0IHdhcyB0aGUgbGFzdAorICAgICAgICAgICAgICAgd3JpdGUuIE90aGVyd2lzZSwgd2UgbWlzc2VkIGFuIG9wdGltaXphdGlvbiAqLworICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5vdmVyYWxsb2NhdGUgfHwgaSA9PSBzaXplKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMgpAQCAtNDE2LDMxICs0NDksMTggQEAKICNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxICovCiAgICAgfQogCi0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFRoaXMgd2FzIHN0YWNrIGFsbG9jYXRlZC4gKi8KLSAgICAgICAgbm5lZWRlZCA9IHAgLSBzdGFja2J1ZjsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3RhY2tidWYsIG5uZWVkZWQpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogQ3V0IGJhY2sgdG8gc2l6ZSBhY3R1YWxseSBuZWVkZWQuICovCi0gICAgICAgIG5uZWVkZWQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBubmVlZGVkKTsKLSAgICB9Ci0KICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBwKTsKIAogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKICBlcnJvcjoKICAgICBQeV9YREVDUkVGKHJlcCk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgogCkBAIC04MDYsNSArODI2LDMgQEAKICN1bmRlZiBTV0FCNAogCiAjZW5kaWYKLQotI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9jdHlwZS5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY3R5cGUuaAppbmRleCA3MzljZjNkLi5mMDU0NjI1IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9jdHlwZS5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2N0eXBlLmgKQEAgLTEsNSArMSw2IEBACi0vKiBOT1RFOiB0aGlzIEFQSSBpcyAtT05MWS0gZm9yIHVzZSB3aXRoIHNpbmdsZSBieXRlIGNoYXJhY3RlciBzdHJpbmdzLiAqLwotLyogRG8gbm90IHVzZSBpdCB3aXRoIFVuaWNvZGUuICovCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgImN0eXBlLmggb25seSBjb21wYXRpYmxlIHdpdGggYnl0ZS13aXNlIHN0cmluZ3MiCisjZW5kaWYKIAogI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCmluZGV4IGNkYTY4ZTcuLjk4MTY1YWQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKQEAgLTMyLDUyICszMiw5OCBAQAogI2RlZmluZSBTVFJJTkdMSUJfQkxPT00obWFzaywgY2gpICAgICBcCiAgICAgKChtYXNrICYgICgxVUwgPDwgKChjaCkgJiAoU1RSSU5HTElCX0JMT09NX1dJRFRIIC0xKSkpKSkKIAorUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitTVFJJTkdMSUIoZmluZF9jaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLCBTVFJJTkdMSUJfQ0hBUiBjaCkKK3sKKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcCwgKmU7CisKKyAgICBwID0gczsKKyAgICBlID0gcyArIG47CisgICAgaWYgKG4gPiAxMCkgeworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgICAgIHAgPSBtZW1jaHIocywgY2gsIG4pOworICAgICAgICBpZiAocCAhPSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgICAgIHJldHVybiAtMTsKKyNlbHNlCisgICAgICAgIC8qIHVzZSBtZW1jaHIgaWYgd2UgY2FuIGNob29zZSBhIG5lZWRsZSB3aXRob3V0IHR3byBtYW55IGxpa2VseQorICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KKyAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSBjaCAmIDB4ZmY7CisgICAgICAgIC8qIElmIGxvb2tpbmcgZm9yIGEgbXVsdGlwbGUgb2YgMjU2LCB3ZSdkIGhhdmUgdG9vCisgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgorICAgICAgICAgICBhbmQgVUNTNCByZXByZXNlbnRhdGlvbnMuICovCisgICAgICAgIGlmIChuZWVkbGUgIT0gMCkgeworICAgICAgICAgICAgd2hpbGUgKHAgPCBlKSB7CisgICAgICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtY2hyKHAsIG5lZWRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUgLSBwKSAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOworICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIHAgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICAgICAgaWYgKCpwID09IGNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLworICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIHdoaWxlIChwIDwgZSkgeworICAgICAgICBpZiAoKnAgPT0gY2gpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgcCsrOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiBjaCwgdW5zaWduZWQgY2hhciBuZWVkbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2RlKQorU1RSSU5HTElCKHJmaW5kX2NoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sIFNUUklOR0xJQl9DSEFSIGNoKQogewotICAgIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKSB7Ci0gICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwdHIgPSBzOwotICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZSA9IHMgKyBuOwotICAgICAgICB3aGlsZSAocHRyIDwgZSkgewotICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtY2hyKChjb25zdCB2b2lkICopIHB0ciwgbmVlZGxlLCAoZSAtIHB0cikgKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBwdHIgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIGlmIChzaXplb2YoU1RSSU5HTElCX0NIQVIpID09IDEgfHwgKnB0ciA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gKHB0ciAtIHMpOwotICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KLSAgICAgICAgICAgIHB0cisrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnA7CiAjaWZkZWYgSEFWRV9NRU1SQ0hSCiAgICAgLyogbWVtcmNocigpIGlzIGEgR05VIGV4dGVuc2lvbiwgYXZhaWxhYmxlIHNpbmNlIGdsaWJjIDIuMS45MS4KICAgICAgICBpdCBkb2Vzbid0IHNlZW0gYXMgb3B0aW1pemVkIGFzIG1lbWNocigpLCBidXQgaXMgc3RpbGwgcXVpdGUKLSAgICAgICBmYXN0ZXIgdGhhbiBvdXIgaGFuZC13cml0dGVuIGxvb3AgaW4gRkFTVFNFQVJDSCBiZWxvdyAqLwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRkFTVF9SU0VBUkNIKSB7Ci0gICAgICAgIHdoaWxlIChuID4gMCkgewotICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmZvdW5kOwotICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtcmNocigoY29uc3Qgdm9pZCAqKSBzLCBuZWVkbGUsIG4gKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBmb3VuZCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKSBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICAgICAgbiA9IGZvdW5kIC0gczsKLSAgICAgICAgICAgIGlmIChzaXplb2YoU1RSSU5HTElCX0NIQVIpID09IDEgfHwgKmZvdW5kID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotI2VuZGlmCi0gICAgZWxzZSB7Ci0gICAgICAgIGFzc2VydCgwKTsgLyogU2hvdWxkIG5ldmVyIGdldCBoZXJlICovCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICAgICBmYXN0ZXIgdGhhbiBvdXIgaGFuZC13cml0dGVuIGxvb3AgYmVsb3cgKi8KIAotI3VuZGVmIERPX01FTUNIUgorICAgIGlmIChuID4gMTApIHsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorICAgICAgICBwID0gbWVtcmNocihzLCBjaCwgbik7CisgICAgICAgIGlmIChwICE9IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgcmV0dXJuIC0xOworI2Vsc2UKKyAgICAgICAgLyogdXNlIG1lbXJjaHIgaWYgd2UgY2FuIGNob29zZSBhIG5lZWRsZSB3aXRob3V0IHR3byBtYW55IGxpa2VseQorICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KKyAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSBjaCAmIDB4ZmY7CisgICAgICAgIC8qIElmIGxvb2tpbmcgZm9yIGEgbXVsdGlwbGUgb2YgMjU2LCB3ZSdkIGhhdmUgdG9vCisgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgorICAgICAgICAgICBhbmQgVUNTNCByZXByZXNlbnRhdGlvbnMuICovCisgICAgICAgIGlmIChuZWVkbGUgIT0gMCkgeworICAgICAgICAgICAgd2hpbGUgKG4gPiAwKSB7CisgICAgICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtcmNocihzLCBuZWVkbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgcCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgICAgICBuID0gcCAtIHM7CisgICAgICAgICAgICAgICAgaWYgKCpwID09IGNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisjZW5kaWYgIC8qIEhBVkVfTUVNUkNIUiAqLworICAgIHAgPSBzICsgbjsKKyAgICB3aGlsZSAocCA+IHMpIHsKKyAgICAgICAgcC0tOworICAgICAgICBpZiAoKnAgPT0gY2gpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICB9CisgICAgcmV0dXJuIC0xOwogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKQEAgLTk5LDI1ICsxNDUsMTEgQEAKICAgICAgICAgaWYgKG0gPD0gMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgLyogdXNlIHNwZWNpYWwgY2FzZSBmb3IgMS1jaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgICAgICBpZiAobiA+IDEwICYmIChtb2RlID09IEZBU1RfU0VBUkNICi0jaWZkZWYgSEFWRV9NRU1SQ0hSCi0gICAgICAgICAgICAgICAgICAgIHx8IG1vZGUgPT0gRkFTVF9SU0VBUkNICi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgKSkgewotICAgICAgICAgICAgLyogdXNlIG1lbWNociBpZiB3ZSBjYW4gY2hvb3NlIGEgbmVlZGxlIHdpdGhvdXQgdHdvIG1hbnkgbGlrZWx5Ci0gICAgICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlOwotICAgICAgICAgICAgbmVlZGxlID0gcFswXSAmIDB4ZmY7Ci0jaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQotICAgICAgICAgICAgLyogSWYgbG9va2luZyBmb3IgYSBtdWx0aXBsZSBvZiAyNTYsIHdlJ2QgaGF2ZSB0b28KLSAgICAgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgotICAgICAgICAgICAgICAgYW5kIFVDUzQgcmVwcmVzZW50YXRpb25zLiAqLwotICAgICAgICAgICAgaWYgKG5lZWRsZSAhPSAwKQotI2VuZGlmCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikKLSAgICAgICAgICAgICAgICAgICAgICAgKHMsIG4sIHBbMF0sIG5lZWRsZSwgbW9kZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1vZGUgPT0gRkFTVF9DT1VOVCkgeworICAgICAgICBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkKKyAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUIoZmluZF9jaGFyKShzLCBuLCBwWzBdKTsKKyAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBGQVNUX1JTRUFSQ0gpCisgICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCKHJmaW5kX2NoYXIpKHMsIG4sIHBbMF0pOworICAgICAgICBlbHNlIHsgIC8qIEZBU1RfQ09VTlQgKi8KICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgICAgICAgaWYgKHNbaV0gPT0gcFswXSkgewogICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwpAQCAtMTI1LDE0ICsxNTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heGNvdW50OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgfSBlbHNlIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICAgICAgICAgIGlmIChzW2ldID09IHBbMF0pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICB9IGVsc2UgeyAgICAvKiBGQVNUX1JTRUFSQ0ggKi8KLSAgICAgICAgICAgIGZvciAoaSA9IG4gLSAxOyBpID4gLTE7IGktLSkKLSAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PSBwWzBdKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCmluZGV4IDE0ODE1ZjYuLjUwOWI5MjkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKQEAgLTExNyw4NSArMTE3LDMgQEAKIH0KIAogI3VuZGVmIEZPUk1BVF9CVUZGRVJfU0laRQotCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLQotLyoKLVdyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBlbnN1cmVzIHRoYXQgdGhlCi1maXJzdCBhcmd1bWVudCBpcyBhIHVuaWNvZGUgb2JqZWN0LgotCi1Ob3RlIHRoYXQgd2UgcmVjZWl2ZSBhIHBvaW50ZXIgdG8gdGhlIHBvaW50ZXIgb2YgdGhlIHN1YnN0cmluZyBvYmplY3QsCi1zbyB3aGVuIHdlIGNyZWF0ZSB0aGF0IG9iamVjdCBpbiB0aGlzIGZ1bmN0aW9uIHdlIGRvbid0IERFQ1JFRiBpdCwKLWJlY2F1c2UgaXQgY29udGludWVzIGxpdmluZyBpbiB0aGUgY2FsbGVyIGZ1bmN0aW9ucyAodGhvc2UgZnVuY3Rpb25zLAotYWZ0ZXIgZmluaXNoaW5nIHVzaW5nIHRoZSBzdWJzdHJpbmcsIG11c3QgREVDUkVGIGl0KS4KLSovCi0KLVB5X0xPQ0FMX0lOTElORShpbnQpCi1TVFJJTkdMSUIocGFyc2VfYXJnc19maW5kc191bmljb2RlKShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQotewotICAgIFB5T2JqZWN0ICp0bXBfc3Vic3RyaW5nOwotCi0gICAgaWYoU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKSB7Ci0gICAgICAgIHRtcF9zdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdCh0bXBfc3Vic3RyaW5nKTsKLSAgICAgICAgaWYgKCF0bXBfc3Vic3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICpzdWJzdHJpbmcgPSB0bXBfc3Vic3RyaW5nOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbHNlIC8qICFTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwotCi0vKgotV3JhcHMgc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKSBhbmQgYWRkaXRpb25hbGx5IGNoZWNrcyB3aGV0aGVyIHRoZQotZmlyc3QgYXJndW1lbnQgaXMgYW4gaW50ZWdlciBpbiByYW5nZSgwLCAyNTYpLgotCi1JZiB0aGlzIGlzIHRoZSBjYXNlLCB3cml0ZXMgdGhlIGludGVnZXIgdmFsdWUgdG8gdGhlIGJ5dGUgcGFyYW1ldGVyCi1hbmQgc2V0cyBzdWJvYmogdG8gTlVMTC4gT3RoZXJ3aXNlLCBzZXRzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzdWJvYmoKLWFuZCBkb2Vzbid0IHRvdWNoIGJ5dGUuIFRoZSBvdGhlciBwYXJhbWV0ZXJzIGFyZSBzaW1pbGFyIHRvIHRob3NlIG9mCi1zdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpLgotKi8KLQotUHlfTE9DQUxfSU5MSU5FKGludCkKLVNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzX2J5dGUpKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJvYmosIGNoYXIgKmJ5dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQotewotICAgIFB5T2JqZWN0ICp0bXBfc3Vib2JqOwotICAgIFB5X3NzaXplX3QgaXZhbDsKLSAgICBQeU9iamVjdCAqZXJyOwotCi0gICAgaWYoIVNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzKShmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1Ym9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghUHlOdW1iZXJfQ2hlY2sodG1wX3N1Ym9iaikpIHsKLSAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QodG1wX3N1Ym9iaiwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7Ci0gICAgaWYgKGl2YWwgPT0gLTEpIHsKLSAgICAgICAgZXJyID0gUHlFcnJfT2NjdXJyZWQoKTsKLSAgICAgICAgaWYgKGVyciAmJiAhUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKGVyciwgUHlFeGNfT3ZlcmZsb3dFcnJvcikpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPiAyNTUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAqc3Vib2JqID0gTlVMTDsKLSAgICAqYnl0ZSA9IChjaGFyKWl2YWw7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLSNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oCmluZGV4IGViM2ZlODguLjhjY2JjMzAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmgKQEAgLTEsNiArMSw4IEBACiAvKiBGaW5kaW5nIHRoZSBvcHRpbWFsIHdpZHRoIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpbiBhIGJ1ZmZlciAqLwogCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyNpZiAhU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgImZpbmRfbWF4X2NoYXIuaCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgorI2VuZGlmCiAKIC8qIE1hc2sgdG8gcXVpY2tseSBjaGVjayB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQogICAgbm9uLUFTQ0lJLCBVVEY4LWVuY29kZWQgY2hhci4gKi8KQEAgLTEyOSw1ICsxMzEsNCBAQAogI3VuZGVmIE1BWF9DSEFSX1VDUzQKIAogI2VuZGlmIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxICovCi0jZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oCmluZGV4IGNiZjgxYmUuLjZmMzE0ZTEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9qb2luLmgKQEAgLTEsNiArMSw2IEBACiAvKiBzdHJpbmdsaWI6IGJ5dGVzIGpvaW5pbmcgaW1wbGVtZW50YXRpb24gKi8KIAotI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAhPSAxCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKICNlcnJvciBqb2luLmggb25seSBjb21wYXRpYmxlIHdpdGggYnl0ZS13aXNlIHN0cmluZ3MKICNlbmRpZgogCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5idWZzOyBpKyspIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbiA9IGJ1ZmZlcnNbaV0ubGVuOwogICAgICAgICAgICAgY2hhciAqcSA9IGJ1ZmZlcnNbaV0uYnVmOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIHEsIG4pOworICAgICAgICAgICAgbWVtY3B5KHAsIHEsIG4pOwogICAgICAgICAgICAgcCArPSBuOwogICAgICAgICB9CiAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTExNiwxMiArMTE2LDEyIEBACiAgICAgICAgIFB5X3NzaXplX3QgbjsKICAgICAgICAgY2hhciAqcTsKICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLCBzZXBzdHIsIHNlcGxlbik7CisgICAgICAgICAgICBtZW1jcHkocCwgc2Vwc3RyLCBzZXBsZW4pOwogICAgICAgICAgICAgcCArPSBzZXBsZW47CiAgICAgICAgIH0KICAgICAgICAgbiA9IGJ1ZmZlcnNbaV0ubGVuOwogICAgICAgICBxID0gYnVmZmVyc1tpXS5idWY7Ci0gICAgICAgIFB5X01FTUNQWShwLCBxLCBuKTsKKyAgICAgICAgbWVtY3B5KHAsIHEsIG4pOwogICAgICAgICBwICs9IG47CiAgICAgfQogICAgIGdvdG8gZG9uZTsKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCBiL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaAppbmRleCA2ZTJmMDczLi5kZjUwMWVkIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCkBAIC0yLDggKzIsOCBAQAogCiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAKLSNpZm5kZWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSMgICBlcnJvciAibG9jYWxldXRpbCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgorI2lmICFTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyAgIGVycm9yICJsb2NhbGV1dGlsLmggaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaCBiL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCmluZGV4IGI1NTliNTMuLmEzMTQ1NzIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oCkBAIC0xLDE0ICsxLDIxIEBACi0vKiBOT1RFOiB0aGlzIEFQSSBpcyAtT05MWS0gZm9yIHVzZSB3aXRoIHNpbmdsZSBieXRlIGNoYXJhY3RlciBzdHJpbmdzLiAqLwotLyogRG8gbm90IHVzZSBpdCB3aXRoIFVuaWNvZGUuICovCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgInRyYW5zbW9ncmlmeS5oIG9ubHkgY29tcGF0aWJsZSB3aXRoIGJ5dGUtd2lzZSBzdHJpbmdzIgorI2VuZGlmCiAKIC8qIHRoZSBtb3JlIGNvbXBsaWNhdGVkIG1ldGhvZHMuICBwYXJ0cyBvZiB0aGVzZSBzaG91bGQgYmUgcHVsbGVkIG91dCBpbnRvIHRoZQogICAgc2hhcmVkIGNvZGUgaW4gYnl0ZXNfbWV0aG9kcy5jIHRvIGN1dCBkb3duIG9uIGR1cGxpY2F0ZSBjb2RlIGJsb2F0LiAgKi8KIAotUHlEb2NfU1RSVkFSKGV4cGFuZHRhYnNfX2RvY19fLAotIkIuZXhwYW5kdGFicyh0YWJzaXplPTgpIC0+IGNvcHkgb2YgQlxuXAotXG5cCi1SZXR1cm4gYSBjb3B5IG9mIEIgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSBleHBhbmRlZCB1c2luZyBzcGFjZXMuXG5cCi1JZiB0YWJzaXplIGlzIG5vdCBnaXZlbiwgYSB0YWIgc2l6ZSBvZiA4IGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4iKTsKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgorcmV0dXJuX3NlbGYoUHlPYmplY3QgKnNlbGYpCit7CisjaWYgIVNUUklOR0xJQl9NVVRBQkxFCisgICAgaWYgKFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgeworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiBzZWxmOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOworfQogCiBzdGF0aWMgUHlPYmplY3QqCiBzdHJpbmdsaWJfZXhwYW5kdGFicyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQpAQCAtODMsNyArOTAsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgogcGFkKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGxlZnQsIFB5X3NzaXplX3QgcmlnaHQsIGNoYXIgZmlsbCkKIHsKICAgICBQeU9iamVjdCAqdTsKQEAgLTkzLDM5ICsxMDAsMjUgQEAKICAgICBpZiAocmlnaHQgPCAwKQogICAgICAgICByaWdodCA9IDA7CiAKLSAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDAgJiYgU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Ci0jZW5kaWYgLyogU1RSSU5HTElCX01VVEFCTEUgKi8KKyAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDApIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAotICAgIHUgPSBTVFJJTkdMSUJfTkVXKE5VTEwsCi0JCQkJICAgbGVmdCArIFNUUklOR0xJQl9MRU4oc2VsZikgKyByaWdodCk7CisgICAgdSA9IFNUUklOR0xJQl9ORVcoTlVMTCwgbGVmdCArIFNUUklOR0xJQl9MRU4oc2VsZikgKyByaWdodCk7CiAgICAgaWYgKHUpIHsKICAgICAgICAgaWYgKGxlZnQpCiAgICAgICAgICAgICBtZW1zZXQoU1RSSU5HTElCX1NUUih1KSwgZmlsbCwgbGVmdCk7Ci0gICAgICAgIFB5X01FTUNQWShTVFJJTkdMSUJfU1RSKHUpICsgbGVmdCwKLQkgICAgICAgU1RSSU5HTElCX1NUUihzZWxmKSwKLQkgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKSk7CisgICAgICAgIG1lbWNweShTVFJJTkdMSUJfU1RSKHUpICsgbGVmdCwKKyAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIoc2VsZiksCisgICAgICAgICAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKICAgICAgICAgaWYgKHJpZ2h0KQogICAgICAgICAgICAgbWVtc2V0KFNUUklOR0xJQl9TVFIodSkgKyBsZWZ0ICsgU1RSSU5HTElCX0xFTihzZWxmKSwKLQkJICAgZmlsbCwgcmlnaHQpOworICAgICAgICAgICAgICAgICAgIGZpbGwsIHJpZ2h0KTsKICAgICB9CiAKICAgICByZXR1cm4gdTsKIH0KIAotUHlEb2NfU1RSVkFSKGxqdXN0X19kb2NfXywKLSJCLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKLSJcbiIKLSJSZXR1cm4gQiBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKLSJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdsaWJfbGp1c3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTM1LDI3ICsxMjgsMTQgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58YzpsanVzdCIsICZ3aWR0aCwgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCAmJiBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSNlbmRpZgorICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICByZXR1cm4gcGFkKHNlbGYsIDAsIHdpZHRoIC0gU1RSSU5HTElCX0xFTihzZWxmKSwgZmlsbGNoYXIpOwogfQogCiAKLVB5RG9jX1NUUlZBUihyanVzdF9fZG9jX18sCi0iQi5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCi0iXG4iCi0iUmV0dXJuIEIgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gUGFkZGluZyBpc1xuIgotImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKSIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5nbGliX3JqdXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE2NSwyNyArMTQ1LDE0IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGM6cmp1c3QiLCAmd2lkdGgsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGggJiYgU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0jZW5kaWYKKyAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhZChzZWxmLCB3aWR0aCAtIFNUUklOR0xJQl9MRU4oc2VsZiksIDAsIGZpbGxjaGFyKTsKIH0KIAogCi1QeURvY19TVFJWQVIoY2VudGVyX19kb2NfXywKLSJCLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCi0iXG4iCi0iUmV0dXJuIEIgY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiAgUGFkZGluZyBpc1xuIgotImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHN0cmluZ2xpYl9jZW50ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTk2LDE1ICsxNjMsOCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxjOmNlbnRlciIsICZ3aWR0aCwgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCAmJiBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSNlbmRpZgorICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICBtYXJnID0gd2lkdGggLSBTVFJJTkdMSUJfTEVOKHNlbGYpOwpAQCAtMjEzLDEyICsxNzMsNiBAQAogICAgIHJldHVybiBwYWQoc2VsZiwgbGVmdCwgbWFyZyAtIGxlZnQsIGZpbGxjaGFyKTsKIH0KIAotUHlEb2NfU1RSVkFSKHpmaWxsX19kb2NfXywKLSJCLnpmaWxsKHdpZHRoKSAtPiBjb3B5IG9mIEJcbiIKLSJcbiIKLSJQYWQgYSBudW1lcmljIHN0cmluZyBCIHdpdGggemVyb3Mgb24gdGhlIGxlZnQsIHRvIGZpbGwgYSBmaWVsZFxuIgotIm9mIHRoZSBzcGVjaWZpZWQgd2lkdGguICBCIGlzIG5ldmVyIHRydW5jYXRlZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHN0cmluZ2xpYl96ZmlsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0yMzEsMjEgKzE4NSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGgpIHsKLSAgICAgICAgaWYgKFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVygKLSAgICAgICAgICAgICAgICBTVFJJTkdMSUJfU1RSKHNlbGYpLAotICAgICAgICAgICAgICAgIFNUUklOR0xJQl9MRU4oc2VsZikKLSAgICAgICAgICAgICk7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICBmaWxsID0gd2lkdGggLSBTVFJJTkdMSUJfTEVOKHNlbGYpOwpAQCAtMjYyLDUgKzIwMiw1MDAgQEAKICAgICAgICAgcFtmaWxsXSA9ICcwJzsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgczsKKyAgICByZXR1cm4gczsKIH0KKworCisvKiBmaW5kIGFuZCBjb3VudCBjaGFyYWN0ZXJzIGFuZCBzdWJzdHJpbmdzICovCisKKyNkZWZpbmUgZmluZGNoYXIodGFyZ2V0LCB0YXJnZXRfbGVuLCBjKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgoY2hhciAqKW1lbWNocigoY29uc3Qgdm9pZCAqKSh0YXJnZXQpLCBjLCB0YXJnZXRfbGVuKSkKKworCitzdGF0aWMgUHlfc3NpemVfdAorY291bnRjaGFyKGNvbnN0IGNoYXIgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRfbGVuLCBjaGFyIGMsCisgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKKyAgICBjb25zdCBjaGFyICpzdGFydCA9IHRhcmdldDsKKyAgICBjb25zdCBjaGFyICplbmQgPSB0YXJnZXQgKyB0YXJnZXRfbGVuOworCisgICAgd2hpbGUgKChzdGFydCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQgLSBzdGFydCwgYykpICE9IE5VTEwpIHsKKyAgICAgICAgY291bnQrKzsKKyAgICAgICAgaWYgKGNvdW50ID49IG1heGNvdW50KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0YXJ0ICs9IDE7CisgICAgfQorICAgIHJldHVybiBjb3VudDsKK30KKworCisvKiBBbGdvcml0aG1zIGZvciBkaWZmZXJlbnQgY2FzZXMgb2Ygc3RyaW5nIHJlcGxhY2VtZW50ICovCisKKy8qIGxlbihzZWxmKT49MSwgZnJvbT0iIiwgbGVuKHRvKT49MSwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9pbnRlcmxlYXZlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3M7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50LCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICAvKiAxIGF0IHRoZSBlbmQgcGx1cyAxIGFmdGVyIGV2ZXJ5IGNoYXJhY3RlcjsKKyAgICAgICBjb3VudCA9IG1pbihtYXhjb3VudCwgc2VsZl9sZW4gKyAxKSAqLworICAgIGlmIChtYXhjb3VudCA8PSBzZWxmX2xlbikgeworICAgICAgICBjb3VudCA9IG1heGNvdW50OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogQ2FuJ3Qgb3ZlcmZsb3c6IHNlbGZfbGVuICsgMSA8PSBtYXhjb3VudCA8PSBQWV9TU0laRV9UX01BWC4gKi8KKyAgICAgICAgY291bnQgPSBzZWxmX2xlbiArIDE7CisgICAgfQorCisgICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCisgICAgLyogICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsgKi8KKyAgICBhc3NlcnQoY291bnQgPiAwKTsKKyAgICBpZiAodG9fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBieXRlcyBhcmUgdG9vIGxvbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBpZiAodG9fbGVuID4gMSkgeworICAgICAgICAvKiBMYXkgdGhlIGZpcnN0IG9uZSBkb3duIChndWFyYW50ZWVkIHRoaXMgd2lsbCBvY2N1cikgKi8KKyAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgIGNvdW50IC09IDE7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHRfc1swXSA9IHRvX3NbMF07CisgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgY291bnQgLT0gMTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOworICAgICAgICAgICAgcmVzdWx0X3NbMF0gPSB0b19zWzBdOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQ29weSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCisgICAgbWVtY3B5KHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuIC0gaSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBTcGVjaWFsIGNhc2UgZm9yIGRlbGV0aW5nIGEgc2luZ2xlIGNoYXJhY3RlciAqLworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIHRvPSIiLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqc3RhcnQsICpuZXh0LCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisKKyAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gY291bnQ7ICAvKiBmcm9tX2xlbiA9PSAxICovCisgICAgYXNzZXJ0KHJlc3VsdF9sZW4+PTApOworCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgc3RhcnQgPSBzZWxmX3M7CisgICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47CisgICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7CisgICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kIC0gc3RhcnQsIGZyb21fYyk7CisgICAgICAgIGlmIChuZXh0ID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgbmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgIHN0YXJ0ID0gbmV4dCArIDE7CisgICAgfQorICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICpzdGFydCwgKm5leHQsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworCisgICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgIC8qIG5vIG1hdGNoZXMgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIChjb3VudCAqIGZyb21fbGVuKTsKKyAgICBhc3NlcnQgKHJlc3VsdF9sZW4+PTApOworCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgc3RhcnQgPSBzZWxmX3M7CisgICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47CisgICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7CisgICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbmV4dCA9IHN0YXJ0ICsgb2Zmc2V0OworCisgICAgICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIG5leHQgLSBzdGFydCk7CisKKyAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgIHN0YXJ0ID0gbmV4dCArIGZyb21fbGVuOworICAgIH0KKyAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk9PTEsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIGNoYXIgdG9fYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3MsICpzdGFydCwgKm5leHQ7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgLyogVGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICBuZXh0ID0gZmluZGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jKTsKKworICAgIGlmIChuZXh0ID09IE5VTEwpIHsKKyAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGJ5dGVzICovCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCBzZWxmX2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKyAgICBtZW1jcHkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOworCisgICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KKyAgICBzdGFydCA9ICByZXN1bHRfcyArIChuZXh0IC0gc2VsZl9zKTsKKyAgICAqc3RhcnQgPSB0b19jOworICAgIHN0YXJ0Kys7CisgICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKKworICAgIHdoaWxlICgtLW1heGNvdW50ID4gMCkgeworICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZCAtIHN0YXJ0LCBmcm9tX2MpOworICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICpuZXh0ID0gdG9fYzsKKyAgICAgICAgc3RhcnQgPSBuZXh0ICsgMTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zLCAqc3RhcnQ7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICAvKiBUaGUgcmVzdWx0IGJ5dGVzIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLworCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzZWxmX3MsIHNlbGZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgaWYgKG9mZnNldCA9PSAtMSkgeworICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHNlbGZfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworICAgIG1lbWNweShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7CisKKyAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLworICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgb2Zmc2V0OworICAgIG1lbWNweShzdGFydCwgdG9fcywgZnJvbV9sZW4pOworICAgIHN0YXJ0ICs9IGZyb21fbGVuOworICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47CisKKyAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7CisgICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbWVtY3B5KHN0YXJ0ICsgb2Zmc2V0LCB0b19zLCBmcm9tX2xlbik7CisgICAgICAgIHN0YXJ0ICs9IG9mZnNldCArIGZyb21fbGVuOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICpzdGFydCwgKm5leHQsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIHVzZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgYW5kIG5ldywgaGVuY2UgdGhlICItMSIgKi8KKyAgICAvKiAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi0xKSAgKi8KKyAgICBhc3NlcnQoY291bnQgPiAwKTsKKyAgICBpZiAodG9fbGVuIC0gMSA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gMSk7CisKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBzdGFydCA9IHNlbGZfczsKKyAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKyAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQgLSBzdGFydCwgZnJvbV9jKTsKKyAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7CisgICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ICs9IDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIG5leHQgLSBzdGFydCk7CisgICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCArIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgYnl0ZXMgKi8KKyAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9zdWJzdHJpbmcoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqc3RhcnQsICpuZXh0LCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KKyAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCisgICAgYXNzZXJ0KGNvdW50ID4gMCk7CisgICAgaWYgKHRvX2xlbiAtIGZyb21fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJyZXBsYWNlIGJ5dGVzIGlzIHRvbyBsb25nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSBmcm9tX2xlbik7CisKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBzdGFydCA9IHNlbGZfczsKKyAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKyAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7CisgICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7CisgICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ICs9IGZyb21fbGVuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0IC0gc3RhcnQpOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgICAgICBzdGFydCA9IG5leHQgKyBmcm9tX2xlbjsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLworICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGlmIChtYXhjb3VudCA8IDApIHsKKyAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKKyAgICB9IGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgU1RSSU5HTElCX0xFTihzZWxmKSA9PSAwKSB7CisgICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIEhhbmRsZSB6ZXJvLWxlbmd0aCBzcGVjaWFsIGNhc2VzICovCisgICAgaWYgKGZyb21fbGVuID09IDApIHsKKyAgICAgICAgaWYgKHRvX2xlbiA9PSAwKSB7CisgICAgICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCisgICAgICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgICAgIH0KKyAgICAgICAgLyogaW5zZXJ0IHRoZSAndG8nIGJ5dGVzIGV2ZXJ5d2hlcmUuICAgICovCisgICAgICAgIC8qICAgID4+PiBiIlB5dGhvbiIucmVwbGFjZShiIiIsIGIiLiIpICAqLworICAgICAgICAvKiAgICBiJy5QLnkudC5oLm8ubi4nICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX2ludGVybGVhdmUoc2VsZiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7CisgICAgfQorCisgICAgLyogRXhjZXB0IGZvciBiIiIucmVwbGFjZShiIiIsIGIiQSIpID09IGIiQSIgdGhlcmUgaXMgbm8gd2F5IGJleW9uZCB0aGlzICovCisgICAgLyogcG9pbnQgZm9yIGFuIGVtcHR5IHNlbGYgYnl0ZXMgdG8gZ2VuZXJhdGUgYSBub24tZW1wdHkgYnl0ZXMgKi8KKyAgICAvKiBTcGVjaWFsIGNhc2Ugc28gdGhlIHJlbWFpbmluZyBjb2RlIGFsd2F5cyBnZXRzIGEgbm9uLWVtcHR5IGJ5dGVzICovCisgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPT0gMCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgaWYgKHRvX2xlbiA9PSAwKSB7CisgICAgICAgIC8qIGRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgJ2Zyb20nIGJ5dGVzICovCisgICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoCisgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCBtYXhjb3VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2VfZGVsZXRlX3N1YnN0cmluZygKKyAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCBtYXhjb3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGJvdGggYnl0ZXMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKi8KKworICAgIGlmIChmcm9tX2xlbiA9PSB0b19sZW4pIHsKKyAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgdG9fc1swXSwgbWF4Y291bnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIE90aGVyd2lzZSB1c2UgdGhlIG1vcmUgZ2VuZXJpYyBhbGdvcml0aG1zICovCisgICAgaWYgKGZyb21fbGVuID09IDEpIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoCisgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGxlbignZnJvbScpPj0yLCBsZW4oJ3RvJyk+PTEgKi8KKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3N1YnN0cmluZygKKyAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOworICAgIH0KK30KKworI3VuZGVmIGZpbmRjaGFyCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaAppbmRleCBiZTA5YjVmLi4xNGZhMjhlIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKQEAgLTY3LDcgKzY3LDcgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzdHItPnN0ciwgc3RyLT5zdGFydCwgc3RyLT5lbmQpOwogfQogCi0vKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KKy8qIHJldHVybiBhIG5ldyBzdHJpbmcuICBpZiBzdHItPnN0ciBpcyBOVUxMLCByZXR1cm4gYSBuZXcgZW1wdHkgc3RyaW5nICovCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKIFN1YlN0cmluZ19uZXdfb2JqZWN0X29yX2VtcHR5KFN1YlN0cmluZyAqc3RyKQogewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJ1Y3RzZXEuYyBiL09iamVjdHMvc3RydWN0c2VxLmMKaW5kZXggNjY0MzQ0Yi4uZTMxNWNiYSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJ1Y3RzZXEuYworKysgYi9PYmplY3RzL3N0cnVjdHNlcS5jCkBAIC00LDkgKzQsOSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCi1zdGF0aWMgY2hhciB2aXNpYmxlX2xlbmd0aF9rZXlbXSA9ICJuX3NlcXVlbmNlX2ZpZWxkcyI7Ci1zdGF0aWMgY2hhciByZWFsX2xlbmd0aF9rZXlbXSA9ICJuX2ZpZWxkcyI7Ci1zdGF0aWMgY2hhciB1bm5hbWVkX2ZpZWxkc19rZXlbXSA9ICJuX3VubmFtZWRfZmllbGRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHZpc2libGVfbGVuZ3RoX2tleVtdID0gIm5fc2VxdWVuY2VfZmllbGRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHJlYWxfbGVuZ3RoX2tleVtdID0gIm5fZmllbGRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHVubmFtZWRfZmllbGRzX2tleVtdID0gIm5fdW5uYW1lZF9maWVsZHMiOwogCiAvKiBGaWVsZHMgd2l0aCB0aGlzIG5hbWUgaGF2ZSBvbmx5IGEgZmllbGQgaW5kZXgsIG5vdCBhIGZpZWxkIG5hbWUuCiAgICBUaGV5IGFyZSBvbmx5IGFsbG93ZWQgZm9yIGluZGljZXMgPCBuX3Zpc2libGVfZmllbGRzLiAqLwpAQCAtMTYsMTQgKzE2LDE0IEBACiBfUHlfSURFTlRJRklFUihuX3VubmFtZWRfZmllbGRzKTsKIAogI2RlZmluZSBWSVNJQkxFX1NJWkUob3ApIFB5X1NJWkUob3ApCi0jZGVmaW5lIFZJU0lCTEVfU0laRV9UUCh0cCkgUHlMb25nX0FzTG9uZyggXAorI2RlZmluZSBWSVNJQkxFX1NJWkVfVFAodHApIFB5TG9uZ19Bc1NzaXplX3QoIFwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEaWN0X0dldEl0ZW1JZCgodHApLT50cF9kaWN0LCAmUHlJZF9uX3NlcXVlbmNlX2ZpZWxkcykpCiAKLSNkZWZpbmUgUkVBTF9TSVpFX1RQKHRwKSBQeUxvbmdfQXNMb25nKCBcCisjZGVmaW5lIFJFQUxfU0laRV9UUCh0cCkgUHlMb25nX0FzU3NpemVfdCggXAogICAgICAgICAgICAgICAgICAgICAgIF9QeURpY3RfR2V0SXRlbUlkKCh0cCktPnRwX2RpY3QsICZQeUlkX25fZmllbGRzKSkKICNkZWZpbmUgUkVBTF9TSVpFKG9wKSBSRUFMX1NJWkVfVFAoUHlfVFlQRShvcCkpCiAKLSNkZWZpbmUgVU5OQU1FRF9GSUVMRFNfVFAodHApIFB5TG9uZ19Bc0xvbmcoIFwKKyNkZWZpbmUgVU5OQU1FRF9GSUVMRFNfVFAodHApIFB5TG9uZ19Bc1NzaXplX3QoIFwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEaWN0X0dldEl0ZW1JZCgodHApLT50cF9kaWN0LCAmUHlJZF9uX3VubmFtZWRfZmllbGRzKSkKICNkZWZpbmUgVU5OQU1FRF9GSUVMRFMob3ApIFVOTkFNRURfRklFTERTX1RQKFB5X1RZUEUob3ApKQogCkBAIC0xNjQsNyArMTY0LDggQEAKICNkZWZpbmUgVFlQRV9NQVhTSVpFIDEwMAogCiAgICAgUHlUeXBlT2JqZWN0ICp0eXAgPSBQeV9UWVBFKG9iaik7Ci0gICAgaW50IGksIHJlbW92ZWxhc3QgPSAwOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQgcmVtb3ZlbGFzdCA9IDA7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgY2hhciBidWZbUkVQUl9CVUZGRVJfU0laRV07CiAgICAgY2hhciAqZW5kb2ZidWYsICpwYnVmID0gYnVmOwpAQCAtMjM2LDggKzIzNyw3IEBACiAgICAgUHlPYmplY3QqIHR1cCA9IE5VTEw7CiAgICAgUHlPYmplY3QqIGRpY3QgPSBOVUxMOwogICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgUHlfc3NpemVfdCBuX2ZpZWxkcywgbl92aXNpYmxlX2ZpZWxkcywgbl91bm5hbWVkX2ZpZWxkczsKLSAgICBpbnQgaTsKKyAgICBQeV9zc2l6ZV90IG5fZmllbGRzLCBuX3Zpc2libGVfZmllbGRzLCBuX3VubmFtZWRfZmllbGRzLCBpOwogCiAgICAgbl9maWVsZHMgPSBSRUFMX1NJWkUoc2VsZik7CiAgICAgbl92aXNpYmxlX2ZpZWxkcyA9IFZJU0lCTEVfU0laRShzZWxmKTsKQEAgLTMyNSw3ICszMjUsNyBAQAogewogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5TWVtYmVyRGVmKiBtZW1iZXJzOwotICAgIGludCBuX21lbWJlcnMsIG5fdW5uYW1lZF9tZW1iZXJzLCBpLCBrOworICAgIFB5X3NzaXplX3Qgbl9tZW1iZXJzLCBuX3VubmFtZWRfbWVtYmVycywgaSwgazsKICAgICBQeU9iamVjdCAqdjsKIAogI2lmZGVmIFB5X1RSQUNFX1JFRlMKQEAgLTM3Myw5ICszNzMsOSBAQAogICAgIFB5X0lOQ1JFRih0eXBlKTsKIAogICAgIGRpY3QgPSB0eXBlLT50cF9kaWN0OwotI2RlZmluZSBTRVRfRElDVF9GUk9NX0lOVChrZXksIHZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgU0VUX0RJQ1RfRlJPTV9TSVpFKGtleSwgdmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKSB2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tU3NpemVfdCh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICh2ID09IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsIGtleSwgdikgPCAwKSB7ICAgICAgICAgICBcCkBAIC0zODUsOSArMzg1LDkgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAotICAgIFNFVF9ESUNUX0ZST01fSU5UKHZpc2libGVfbGVuZ3RoX2tleSwgZGVzYy0+bl9pbl9zZXF1ZW5jZSk7Ci0gICAgU0VUX0RJQ1RfRlJPTV9JTlQocmVhbF9sZW5ndGhfa2V5LCBuX21lbWJlcnMpOwotICAgIFNFVF9ESUNUX0ZST01fSU5UKHVubmFtZWRfZmllbGRzX2tleSwgbl91bm5hbWVkX21lbWJlcnMpOworICAgIFNFVF9ESUNUX0ZST01fU0laRSh2aXNpYmxlX2xlbmd0aF9rZXksIGRlc2MtPm5faW5fc2VxdWVuY2UpOworICAgIFNFVF9ESUNUX0ZST01fU0laRShyZWFsX2xlbmd0aF9rZXksIG5fbWVtYmVycyk7CisgICAgU0VUX0RJQ1RfRlJPTV9TSVpFKHVubmFtZWRfZmllbGRzX2tleSwgbl91bm5hbWVkX21lbWJlcnMpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKaW5kZXggNzkyMGZlYy4uYzBmZjQ5OSAxMDA2NDQKLS0tIGEvT2JqZWN0cy90dXBsZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwpAQCAtMzYsNiArMzYsMTYgQEAKIHN0YXRpYyB2b2lkCiBzaG93X3RyYWNrKHZvaWQpCiB7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd2FsbG9jY291bnQpOworCisgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgIGlmICh4b3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgdmFsdWUgPSBfUHlEaWN0X0dldEl0ZW1JZCh4b3B0aW9ucywgJlB5SWRfc2hvd2FsbG9jY291bnQpOworICAgIGlmICh2YWx1ZSAhPSBQeV9UcnVlKQorICAgICAgICByZXR1cm47CisKICAgICBmcHJpbnRmKHN0ZGVyciwgIlR1cGxlcyBjcmVhdGVkOiAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLAogICAgICAgICBjb3VudF90cmFja2VkICsgY291bnRfdW50cmFja2VkKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlR1cGxlcyB0cmFja2VkIGJ5IHRoZSBHQzogJSIgUFlfRk9STUFUX1NJWkVfVApAQCAtMTQ5LDcgKzE1OSw2IEBACiBpbnQKIFB5VHVwbGVfU2V0SXRlbShQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKm5ld2l0ZW0pCiB7Ci0gICAgUHlPYmplY3QgKm9sZGl0ZW07CiAgICAgUHlPYmplY3QgKipwOwogICAgIGlmICghUHlUdXBsZV9DaGVjayhvcCkgfHwgb3AtPm9iX3JlZmNudCAhPSAxKSB7CiAgICAgICAgIFB5X1hERUNSRUYobmV3aXRlbSk7CkBAIC0xNjMsOSArMTcyLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBwID0gKChQeVR1cGxlT2JqZWN0ICopb3ApIC0+IG9iX2l0ZW0gKyBpOwotICAgIG9sZGl0ZW0gPSAqcDsKLSAgICAqcCA9IG5ld2l0ZW07Ci0gICAgUHlfWERFQ1JFRihvbGRpdGVtKTsKKyAgICBQeV9YU0VUUkVGKCpwLCBuZXdpdGVtKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDQ2LDkgKzQ1Myw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNkZWZpbmUgYiAoKFB5VHVwbGVPYmplY3QgKiliYikKLSAgICBzaXplID0gUHlfU0laRShhKSArIFB5X1NJWkUoYik7Ci0gICAgaWYgKHNpemUgPCAwKQorICAgIGlmIChQeV9TSVpFKGEpID4gUFlfU1NJWkVfVF9NQVggLSBQeV9TSVpFKGIpKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBzaXplID0gUHlfU0laRShhKSArIFB5X1NJWkUoYik7CiAgICAgbnAgPSAoUHlUdXBsZU9iamVjdCAqKSBQeVR1cGxlX05ldyhzaXplKTsKICAgICBpZiAobnAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZW9iamVjdC5jIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKaW5kZXggZTcxYjNmOC4uY2IyNTFkZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKQEAgLTUzLDEwICs1MywxMiBAQAogX1B5X0lERU5USUZJRVIoX19nZXRhdHRyaWJ1dGVfXyk7CiBfUHlfSURFTlRJRklFUihfX2dldGl0ZW1fXyk7CiBfUHlfSURFTlRJRklFUihfX2hhc2hfXyk7CitfUHlfSURFTlRJRklFUihfX2luaXRfc3ViY2xhc3NfXyk7CiBfUHlfSURFTlRJRklFUihfX2xlbl9fKTsKIF9QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOwogX1B5X0lERU5USUZJRVIoX19uYW1lX18pOwogX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CitfUHlfSURFTlRJRklFUihfX3NldF9uYW1lX18pOwogX1B5X0lERU5USUZJRVIoX19zZXRpdGVtX18pOwogX1B5X0lERU5USUZJRVIoYnVpbHRpbnMpOwogCkBAIC00NTIsMjcgKzQ1NCwzMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHR5cGVfbW9kdWxlKFB5VHlwZU9iamVjdCAqdHlwZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBjaGFyICpzOworICAgIFB5T2JqZWN0ICptb2Q7CiAKICAgICBpZiAodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSB7Ci0gICAgICAgIFB5T2JqZWN0ICptb2QgPSBfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fKTsKLSAgICAgICAgaWYgKCFtb2QpIHsKKyAgICAgICAgbW9kID0gX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXyk7CisgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAiX19tb2R1bGVfXyIpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeV9YSU5DUkVGKG1vZCk7Ci0gICAgICAgIHJldHVybiBtb2Q7CisgICAgICAgIFB5X0lOQ1JFRihtb2QpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgICAgIHMgPSBzdHJyY2hyKHR5cGUtPnRwX25hbWUsICcuJyk7Ci0gICAgICAgIGlmIChzICE9IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICBjb25zdCBjaGFyICpzID0gc3RycmNocih0eXBlLT50cF9uYW1lLCAnLicpOworICAgICAgICBpZiAocyAhPSBOVUxMKSB7CisgICAgICAgICAgICBtb2QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCiAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgKFB5X3NzaXplX3QpKHMgLSB0eXBlLT50cF9uYW1lKSk7Ci0gICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9idWlsdGlucyk7Ci0gICAgICAgIFB5X1hJTkNSRUYobmFtZSk7Ci0gICAgICAgIHJldHVybiBuYW1lOworICAgICAgICAgICAgaWYgKG1vZCAhPSBOVUxMKQorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZtb2QpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW9kID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfYnVpbHRpbnMpOworICAgICAgICAgICAgUHlfWElOQ1JFRihtb2QpOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBtb2Q7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTUwMCw3ICs1MDUsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBtZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X1hJTkNSRUYobW9kKTsKKyAgICBQeV9JTkNSRUYobW9kKTsKICAgICByZXR1cm4gbW9kOwogfQogCkBAIC01NDcsOCArNTUyLDggQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCAqYmVzdF9iYXNlKFB5T2JqZWN0ICopOwogc3RhdGljIGludCBtcm9faW50ZXJuYWwoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICoqKTsKLVB5X0xPQ0FMX0lOTElORShpbnQpIHR5cGVfaXNfc3VidHlwZV9iYXNlX2NoYWluKFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKik7Ci1zdGF0aWMgaW50IGNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqLCBjaGFyICopOworc3RhdGljIGludCB0eXBlX2lzX3N1YnR5cGVfYmFzZV9jaGFpbihQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICopOworc3RhdGljIGludCBjb21wYXRpYmxlX2Zvcl9hc3NpZ25tZW50KFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKiwgY29uc3QgY2hhciAqKTsKIHN0YXRpYyBpbnQgYWRkX3N1YmNsYXNzKFB5VHlwZU9iamVjdCosIFB5VHlwZU9iamVjdCopOwogc3RhdGljIGludCBhZGRfYWxsX3N1YmNsYXNzZXMoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYmFzZXMpOwogc3RhdGljIHZvaWQgcmVtb3ZlX3N1YmNsYXNzKFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKik7CkBAIC04ODgsMjUgKzg5MywzMyBAQAogI2VuZGlmCiAKICAgICBvYmogPSB0eXBlLT50cF9uZXcodHlwZSwgYXJncywga3dkcyk7Ci0gICAgaWYgKG9iaiAhPSBOVUxMKSB7Ci0gICAgICAgIC8qIFVnbHkgZXhjZXB0aW9uOiB3aGVuIHRoZSBjYWxsIHdhcyB0eXBlKHNvbWV0aGluZyksCi0gICAgICAgICAgIGRvbid0IGNhbGwgdHBfaW5pdCBvbiB0aGUgcmVzdWx0LiAqLwotICAgICAgICBpZiAodHlwZSA9PSAmUHlUeXBlX1R5cGUgJiYKLSAgICAgICAgICAgIFB5VHVwbGVfQ2hlY2soYXJncykgJiYgUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAxICYmCi0gICAgICAgICAgICAoa3dkcyA9PSBOVUxMIHx8Ci0gICAgICAgICAgICAgKFB5RGljdF9DaGVjayhrd2RzKSAmJiBQeURpY3RfU2l6ZShrd2RzKSA9PSAwKSkpCi0gICAgICAgICAgICByZXR1cm4gb2JqOwotICAgICAgICAvKiBJZiB0aGUgcmV0dXJuZWQgb2JqZWN0IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiB0eXBlLAotICAgICAgICAgICBpdCB3b24ndCBiZSBpbml0aWFsaXplZC4gKi8KLSAgICAgICAgaWYgKCFQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob2JqKSwgdHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gb2JqOwotICAgICAgICB0eXBlID0gUHlfVFlQRShvYmopOwotICAgICAgICBpZiAodHlwZS0+dHBfaW5pdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpbnQgcmVzID0gdHlwZS0+dHBfaW5pdChvYmosIGFyZ3MsIGt3ZHMpOwotICAgICAgICAgICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYob2JqKTsKLSAgICAgICAgICAgICAgICBvYmogPSBOVUxMOwotICAgICAgICAgICAgfQorICAgIG9iaiA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KChQeU9iamVjdCopdHlwZSwgb2JqLCBOVUxMKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogVWdseSBleGNlcHRpb246IHdoZW4gdGhlIGNhbGwgd2FzIHR5cGUoc29tZXRoaW5nKSwKKyAgICAgICBkb24ndCBjYWxsIHRwX2luaXQgb24gdGhlIHJlc3VsdC4gKi8KKyAgICBpZiAodHlwZSA9PSAmUHlUeXBlX1R5cGUgJiYKKyAgICAgICAgUHlUdXBsZV9DaGVjayhhcmdzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEgJiYKKyAgICAgICAgKGt3ZHMgPT0gTlVMTCB8fAorICAgICAgICAgKFB5RGljdF9DaGVjayhrd2RzKSAmJiBQeURpY3RfU2l6ZShrd2RzKSA9PSAwKSkpCisgICAgICAgIHJldHVybiBvYmo7CisKKyAgICAvKiBJZiB0aGUgcmV0dXJuZWQgb2JqZWN0IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiB0eXBlLAorICAgICAgIGl0IHdvbid0IGJlIGluaXRpYWxpemVkLiAqLworICAgIGlmICghUHlUeXBlX0lzU3VidHlwZShQeV9UWVBFKG9iaiksIHR5cGUpKQorICAgICAgICByZXR1cm4gb2JqOworCisgICAgdHlwZSA9IFB5X1RZUEUob2JqKTsKKyAgICBpZiAodHlwZS0+dHBfaW5pdCAhPSBOVUxMKSB7CisgICAgICAgIGludCByZXMgPSB0eXBlLT50cF9pbml0KG9iaiwgYXJncywga3dkcyk7CisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2JqKTsKKyAgICAgICAgICAgIG9iaiA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBvYmo7CkBAIC0xMzI0LDcgKzEzMzcsNyBAQAogCiAvKiB0eXBlIHRlc3Qgd2l0aCBzdWJjbGFzc2luZyBzdXBwb3J0ICovCiAKLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW50CiB0eXBlX2lzX3N1YnR5cGVfYmFzZV9jaGFpbihQeVR5cGVPYmplY3QgKmEsIFB5VHlwZU9iamVjdCAqYikKIHsKICAgICBkbyB7CkBAIC0xNDEyLDM2ICsxNDI1LDM4IEBACiAgICBhcyBsb29rdXBfbWV0aG9kIHRvIGNhY2hlIHRoZSBpbnRlcm5lZCBuYW1lIHN0cmluZyBvYmplY3QuICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX21ldGhvZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21ldGhvZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwotICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTCwgKnJldHZhbDsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIHZhX2VuZCh2YSk7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZWlkLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpCisgICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7CisgICAgICAgIFB5T2JqZWN0ICphcmdzOworCisgICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICB2YV9lbmQodmEpOwogCi0gICAgdmFfZW5kKHZhKTsKKyAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwogCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOwogICAgIH0KIAotICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKLSAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKIAogICAgIHJldHVybiByZXR2YWw7CkBAIC0xNDUwLDM2ICsxNDY1LDM4IEBACiAvKiBDbG9uZSBvZiBjYWxsX21ldGhvZCgpIHRoYXQgcmV0dXJucyBOb3RJbXBsZW1lbnRlZCB3aGVuIHRoZSBsb29rdXAgZmFpbHMuICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX21heWJlKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKK2NhbGxfbWF5YmUoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpmdW5jID0gMCwgKnJldHZhbDsKLSAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEwsICpyZXR2YWw7CiAKICAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWVpZCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICB2YV9lbmQodmEpOwogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkKKyAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKKyAgICAgICAgUHlPYmplY3QgKmFyZ3M7CisKKyAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgIHZhX2VuZCh2YSk7CiAKLSAgICB2YV9lbmQodmEpOworICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgfQogCi0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogCiAgICAgcmV0dXJuIHJldHZhbDsKQEAgLTE1MzEsNyArMTU0OCw2IEBACiAgICAgUHlPYmplY3QgKm5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19uYW1lX18pOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlfWERFQ1JFRihuYW1lKTsKICAgICAgICAgbmFtZSA9IFB5T2JqZWN0X1JlcHIoY2xzKTsKICAgICB9CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkKQEAgLTIwMjUsNiArMjA0MSw4IEBACiBzdGF0aWMgaW50IG9iamVjdF9pbml0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCB1cGRhdGVfc2xvdChQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgdm9pZCBmaXh1cF9zbG90X2Rpc3BhdGNoZXJzKFB5VHlwZU9iamVjdCAqKTsKK3N0YXRpYyBpbnQgc2V0X25hbWVzKFB5VHlwZU9iamVjdCAqKTsKK3N0YXRpYyBpbnQgaW5pdF9zdWJjbGFzcyhQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIC8qCiAgKiBIZWxwZXJzIGZvciAgX19kaWN0X18gZGVzY3JpcHRvci4gIFdlIGRvbid0IHdhbnQgdG8gZXhwb3NlIHRoZSBkaWN0cwpAQCAtMjA4OSw3ICsyMTA3LDcgQEAKIHN0YXRpYyBpbnQKIHN1YnR5cGVfc2V0ZGljdChQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0cjsKKyAgICBQeU9iamVjdCAqKmRpY3RwdHI7CiAgICAgUHlUeXBlT2JqZWN0ICpiYXNlOwogCiAgICAgYmFzZSA9IGdldF9idWlsdGluX2Jhc2Vfd2l0aF9kaWN0KFB5X1RZUEUob2JqKSk7CkBAIC0yMTIwLDEwICsyMTM4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICJub3QgYSAnJS4yMDBzJyIsIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBkaWN0ID0gKmRpY3RwdHI7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgKmRpY3RwdHIgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIFB5X1hTRVRSRUYoKmRpY3RwdHIsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjIwMiw3ICsyMjE4LDggQEAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrd2RzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3ZHMpKTsKIAotICAgIGlmIChrd2RzICE9IE5VTEwgJiYgUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpICE9IDApIHsKKyAgICBpZiAoa3dkcyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykgJiYgUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAxICYmCisgICAgICAgIFB5RGljdF9DaGVjayhrd2RzKSAmJiBQeURpY3RfU2l6ZShrd2RzKSAhPSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZS5fX2luaXRfXygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzIik7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTIyNjksOCArMjI4Niw3IEBACiB0eXBlX25ldyhQeVR5cGVPYmplY3QgKm1ldGF0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKm5hbWUsICpiYXNlcyA9IE5VTEwsICpvcmlnX2RpY3QsICpkaWN0ID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im5hbWUiLCAiYmFzZXMiLCAiZGljdCIsIDB9OwotICAgIFB5T2JqZWN0ICpxdWFsbmFtZSwgKnNsb3RzID0gTlVMTCwgKnRtcCwgKm5ld3Nsb3RzOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSwgKnNsb3RzID0gTlVMTCwgKnRtcCwgKm5ld3Nsb3RzLCAqY2VsbDsKICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBOVUxMLCAqYmFzZSwgKnRtcHR5cGUsICp3aW5uZXI7CiAgICAgUHlIZWFwVHlwZU9iamVjdCAqZXQ7CiAgICAgUHlNZW1iZXJEZWYgKm1wOwpAQCAtMjI3OCwxNiArMjI5NCwxOSBAQAogICAgIGludCBqLCBtYXlfYWRkX2RpY3QsIG1heV9hZGRfd2VhaywgYWRkX2RpY3QsIGFkZF93ZWFrOwogICAgIF9QeV9JREVOVElGSUVSKF9fcXVhbG5hbWVfXyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19zbG90c19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2NsYXNzY2VsbF9fKTsKIAogICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgYXNzZXJ0KGt3ZHMgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dkcykpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlOiB0eXBlKHgpIHNob3VsZCByZXR1cm4geC0+b2JfdHlwZSAqLwotICAgIHsKKyAgICAvKiBXZSBvbmx5IHdhbnQgdHlwZSBpdHNlbGYgdG8gYWNjZXB0IHRoZSBvbmUtYXJndW1lbnQgZm9ybSAoIzI3MTU3KQorICAgICAgIE5vdGU6IFdlIGRvbid0IGNhbGwgUHlUeXBlX0NoZWNrRXhhY3QgYXMgdGhhdCBhbHNvIGFsbG93cyBzdWJjbGFzc2VzICovCisgICAgaWYgKG1ldGF0eXBlID09ICZQeVR5cGVfVHlwZSkgewogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKICAgICAgICAgY29uc3QgUHlfc3NpemVfdCBua3dkcyA9IGt3ZHMgPT0gTlVMTCA/IDAgOiBQeURpY3RfU2l6ZShrd2RzKTsKIAotICAgICAgICBpZiAoUHlUeXBlX0NoZWNrRXhhY3QobWV0YXR5cGUpICYmIG5hcmdzID09IDEgJiYgbmt3ZHMgPT0gMCkgeworICAgICAgICBpZiAobmFyZ3MgPT0gMSAmJiBua3dkcyA9PSAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqeCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfVFlQRSh4KSk7CiAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIFB5X1RZUEUoeCk7CkBAIC0yMjk2LDcgKzIzMTUsNyBAQAogICAgICAgICAvKiBTRiBidWcgNDc1MzI3IC0tIGlmIHRoYXQgZGlkbid0IHRyaWdnZXIsIHdlIG5lZWQgMwogICAgICAgICAgICBhcmd1bWVudHMuIGJ1dCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgYmVsb3cgbWF5IGdpdmUKICAgICAgICAgICAgYSBtc2cgc2F5aW5nIHR5cGUoKSBuZWVkcyBleGFjdGx5IDMuICovCi0gICAgICAgIGlmIChuYXJncyArIG5rd2RzICE9IDMpIHsKKyAgICAgICAgaWYgKG5hcmdzICE9IDMpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUoKSB0YWtlcyAxIG9yIDMgYXJndW1lbnRzIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzMDQsMTAgKzIzMjMsOCBAQAogICAgIH0KIAogICAgIC8qIENoZWNrIGFyZ3VtZW50czogKG5hbWUsIGJhc2VzLCBkaWN0KSAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJVTyFPITp0eXBlIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVR1cGxlX1R5cGUsICZiYXNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEaWN0X1R5cGUsICZvcmlnX2RpY3QpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVU8hTyE6dHlwZS5fX25ld19fIiwgJm5hbWUsICZQeVR1cGxlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZiYXNlcywgJlB5RGljdF9UeXBlLCAmb3JpZ19kaWN0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBEZXRlcm1pbmUgdGhlIHByb3BlciBtZXRhdHlwZSB0byBkZWFsIHdpdGggdGhpczogKi8KQEAgLTI1NDQsNyArMjU2MSw3IEBACiAgICAgfQogICAgIGV0LT5odF9xdWFsbmFtZSA9IHF1YWxuYW1lID8gcXVhbG5hbWUgOiBldC0+aHRfbmFtZTsKICAgICBQeV9JTkNSRUYoZXQtPmh0X3F1YWxuYW1lKTsKLSAgICBpZiAocXVhbG5hbWUgIT0gTlVMTCAmJiBQeURpY3RfRGVsSXRlbShkaWN0LCBQeUlkX19fcXVhbG5hbWVfXy5vYmplY3QpIDwgMCkKKyAgICBpZiAocXVhbG5hbWUgIT0gTlVMTCAmJiBfUHlEaWN0X0RlbEl0ZW1JZChkaWN0LCAmUHlJZF9fX3F1YWxuYW1lX18pIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIFNldCB0cF9kb2MgdG8gYSBjb3B5IG9mIGRpY3RbJ19fZG9jX18nXSwgaWYgdGhlIGxhdHRlciBpcyB0aGVyZQpAQCAtMjU4Nyw2ICsyNjA0LDIwIEBACiAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KIAorICAgIC8qIFNwZWNpYWwtY2FzZSBfX2luaXRfc3ViY2xhc3NfXzogaWYgaXQncyBhIHBsYWluIGZ1bmN0aW9uLAorICAgICAgIG1ha2UgaXQgYSBjbGFzc21ldGhvZCAqLworICAgIHRtcCA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19faW5pdF9zdWJjbGFzc19fKTsKKyAgICBpZiAodG1wICE9IE5VTEwgJiYgUHlGdW5jdGlvbl9DaGVjayh0bXApKSB7CisgICAgICAgIHRtcCA9IFB5Q2xhc3NNZXRob2RfTmV3KHRtcCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2luaXRfc3ViY2xhc3NfXywgdG1wKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICB9CisKICAgICAvKiBBZGQgZGVzY3JpcHRvcnMgZm9yIGN1c3RvbSBzbG90cyBmcm9tIF9fc2xvdHNfXywgb3IgZm9yIF9fZGljdF9fICovCiAgICAgbXAgPSBQeUhlYXBUeXBlX0dFVF9NRU1CRVJTKGV0KTsKICAgICBzbG90b2Zmc2V0ID0gYmFzZS0+dHBfYmFzaWNzaXplOwpAQCAtMjY1Niw2ICsyNjg3LDE0IEBACiAgICAgZWxzZQogICAgICAgICB0eXBlLT50cF9mcmVlID0gUHlPYmplY3RfRGVsOwogCisgICAgLyogc3RvcmUgdHlwZSBpbiBjbGFzcycgY2VsbCAqLworICAgIGNlbGwgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2NsYXNzY2VsbF9fKTsKKyAgICBpZiAoY2VsbCAhPSBOVUxMICYmIFB5Q2VsbF9DaGVjayhjZWxsKSkgeworICAgICAgICBQeUNlbGxfU2V0KGNlbGwsIChQeU9iamVjdCAqKSB0eXBlKTsKKyAgICAgICAgX1B5RGljdF9EZWxJdGVtSWQoZGljdCwgJlB5SWRfX19jbGFzc2NlbGxfXyk7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorCiAgICAgLyogSW5pdGlhbGl6ZSB0aGUgcmVzdCAqLwogICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjY2Nyw2ICsyNzA2LDEyIEBACiAgICAgICAgIGV0LT5odF9jYWNoZWRfa2V5cyA9IF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKCk7CiAgICAgfQogCisgICAgaWYgKHNldF9uYW1lcyh0eXBlKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBpZiAoaW5pdF9zdWJjbGFzcyh0eXBlLCBrd2RzKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXR5cGU7CiAKQEAgLTI2NzgsNyArMjcyMyw3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBzaG9ydCBzbG90b2Zmc2V0c1tdID0geworc3RhdGljIGNvbnN0IHNob3J0IHNsb3RvZmZzZXRzW10gPSB7CiAgICAgLTEsIC8qIGludmFsaWQgc2xvdCAqLwogI2luY2x1ZGUgInR5cGVzbG90cy5pbmMiCiB9OwpAQCAtMzU5Nyw3ICszNjQyLDcgQEAKIH0KIAogc3RhdGljIGludAotY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QqIG9sZHRvLCBQeVR5cGVPYmplY3QqIG5ld3RvLCBjaGFyKiBhdHRyKQorY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QqIG9sZHRvLCBQeVR5cGVPYmplY3QqIG5ld3RvLCBjb25zdCBjaGFyKiBhdHRyKQogewogICAgIFB5VHlwZU9iamVjdCAqbmV3YmFzZSwgKm9sZGJhc2U7CiAKQEAgLTM3NzMsNyArMzgxOCw3IEBACiAgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydChjb3B5cmVnX3N0cik7CiB9CiAKLVB5X0xPQ0FMKFB5T2JqZWN0ICopCitzdGF0aWMgUHlPYmplY3QgKgogX1B5VHlwZV9HZXRTbG90TmFtZXMoUHlUeXBlT2JqZWN0ICpjbHMpCiB7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CkBAIC0zODI2LDcgKzM4NzEsNyBAQAogICAgIHJldHVybiBzbG90bmFtZXM7CiB9CiAKLVB5X0xPQ0FMKFB5T2JqZWN0ICopCitzdGF0aWMgUHlPYmplY3QgKgogX1B5T2JqZWN0X0dldFN0YXRlKFB5T2JqZWN0ICpvYmosIGludCByZXF1aXJlZCkKIHsKICAgICBQeU9iamVjdCAqc3RhdGU7CkBAIC0zODczLDYgKzM5MTgsMjQgQEAKICAgICAgICAgfQogCiAgICAgICAgIGFzc2VydChzbG90bmFtZXMgPT0gUHlfTm9uZSB8fCBQeUxpc3RfQ2hlY2soc2xvdG5hbWVzKSk7CisgICAgICAgIGlmIChyZXF1aXJlZCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBiYXNpY3NpemUgPSBQeUJhc2VPYmplY3RfVHlwZS50cF9iYXNpY3NpemU7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF9kaWN0b2Zmc2V0KQorICAgICAgICAgICAgICAgIGJhc2ljc2l6ZSArPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF93ZWFrbGlzdG9mZnNldCkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaWYgKHNsb3RuYW1lcyAhPSBQeV9Ob25lKQorICAgICAgICAgICAgICAgIGJhc2ljc2l6ZSArPSBzaXplb2YoUHlPYmplY3QgKikgKiBQeV9TSVpFKHNsb3RuYW1lcyk7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF9iYXNpY3NpemUgPiBiYXNpY3NpemUpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2xvdG5hbWVzKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBwaWNrbGUgJS4yMDBzIG9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKHNsb3RuYW1lcyAhPSBQeV9Ob25lICYmIFB5X1NJWkUoc2xvdG5hbWVzKSA+IDApIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzbG90czsKICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2xvdG5hbWVzX3NpemUsIGk7CkBAIC0zOTI3LDcgKzM5OTAsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvKiBJZiB3ZSBmb3VuZCBzb21lIHNsb3QgYXR0cmlidXRlcywgcGFjayB0aGVtIGluIGEgdHVwbGUgYWxvbmcKLSAgICAgICAgICAgICAgIHRoZSBvcmdpbmFsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LiAqLworICAgICAgICAgICAgICAgdGhlIG9yaWdpbmFsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LiAqLwogICAgICAgICAgICAgaWYgKFB5RGljdF9TaXplKHNsb3RzKSA+IDApIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhdGUyOwogCkBAIC0zOTU0LDcgKzQwMTcsNyBAQAogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogX1B5T2JqZWN0X0dldE5ld0FyZ3VtZW50cyhQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqKmFyZ3MsIFB5T2JqZWN0ICoqa3dhcmdzKQogewogICAgIFB5T2JqZWN0ICpnZXRuZXdhcmdzLCAqZ2V0bmV3YXJnc19leDsKQEAgLTQwNTAsNyArNDExMyw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLVB5X0xPQ0FMKGludCkKK3N0YXRpYyBpbnQKIF9QeU9iamVjdF9HZXRJdGVtc0l0ZXIoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKipsaXN0aXRlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZGljdGl0ZW1zKQogewpAQCAtNDA5Niw3ICs0MTU5LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXJlZHVjZV9uZXdvYmooUHlPYmplY3QgKm9iaiwgaW50IHByb3RvKQorcmVkdWNlX25ld29iaihQeU9iamVjdCAqb2JqKQogewogICAgIFB5T2JqZWN0ICphcmdzID0gTlVMTCwgKmt3YXJncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CkBAIC00MTQ5LDcgKzQyMTIsNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgfQotICAgIGVsc2UgaWYgKHByb3RvID49IDQpIHsKKyAgICBlbHNlIGlmIChhcmdzICE9IE5VTEwpIHsKICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfZXhfXyk7CiAKICAgICAgICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9leF9fKTsKQEAgLTQxNjgsMTMgKzQyMzEsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IHVzZSBwcm90b2NvbCA0IG9yIGdyZWF0ZXIgdG8gY29weSB0aGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Q7IHNpbmNlIF9fZ2V0bmV3YXJnc19leF9fIHJldHVybmVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50cy4iKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAvKiBhcmdzID09IE5VTEwgKi8KICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7Ci0gICAgICAgIFB5X0RFQ1JFRihjb3B5cmVnKTsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNDIyMiw3ICs0MjgxLDcgQEAKICAgICBQeU9iamVjdCAqY29weXJlZywgKnJlczsKIAogICAgIGlmIChwcm90byA+PSAyKQotICAgICAgICByZXR1cm4gcmVkdWNlX25ld29iaihzZWxmLCBwcm90byk7CisgICAgICAgIHJldHVybiByZWR1Y2VfbmV3b2JqKHNlbGYpOwogCiAgICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7CiAgICAgaWYgKCFjb3B5cmVnKQpAQCAtNDMwNCw2ICs0MzYzLDE4IEBACiAiTm90SW1wbGVtZW50ZWQsIHRoZSBub3JtYWwgYWxnb3JpdGhtIGlzIHVzZWQuICBPdGhlcndpc2UsIGl0XG4iCiAib3ZlcnJpZGVzIHRoZSBub3JtYWwgYWxnb3JpdGhtIChhbmQgdGhlIG91dGNvbWUgaXMgY2FjaGVkKS5cbiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorb2JqZWN0X2luaXRfc3ViY2xhc3MoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKG9iamVjdF9pbml0X3N1YmNsYXNzX2RvYywKKyJUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhIGNsYXNzIGlzIHN1YmNsYXNzZWQuXG4iCisiXG4iCisiVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RoaW5nLiBJdCBtYXkgYmVcbiIKKyJvdmVycmlkZGVuIHRvIGV4dGVuZCBzdWJjbGFzc2VzLlxuIik7CisKIC8qCiAgICBmcm9tIFBFUCAzMTAxLCB0aGlzIGNvZGUgaW1wbGVtZW50czoKIApAQCAtNDQwOCw2ICs0NDc5LDggQEAKICAgICAgUHlEb2NfU1RSKCJoZWxwZXIgZm9yIHBpY2tsZSIpfSwKICAgICB7Il9fc3ViY2xhc3Nob29rX18iLCBvYmplY3Rfc3ViY2xhc3Nob29rLCBNRVRIX0NMQVNTIHwgTUVUSF9WQVJBUkdTLAogICAgICBvYmplY3Rfc3ViY2xhc3Nob29rX2RvY30sCisgICAgeyJfX2luaXRfc3ViY2xhc3NfXyIsIG9iamVjdF9pbml0X3N1YmNsYXNzLCBNRVRIX0NMQVNTIHwgTUVUSF9OT0FSR1MsCisgICAgIG9iamVjdF9pbml0X3N1YmNsYXNzX2RvY30sCiAgICAgeyJfX2Zvcm1hdF9fIiwgb2JqZWN0X2Zvcm1hdCwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoImRlZmF1bHQgb2JqZWN0IGZvcm1hdHRlciIpfSwKICAgICB7Il9fc2l6ZW9mX18iLCBvYmplY3Rfc2l6ZW9mLCBNRVRIX05PQVJHUywKQEAgLTUzNTMsNyArNTQyNiw3IEBACiAvKiBIZWxwZXIgdG8gY2hlY2sgZm9yIG9iamVjdC5fX3NldGF0dHJfXyBvciBfX2RlbGF0dHJfXyBhcHBsaWVkIHRvIGEgdHlwZS4KICAgIFRoaXMgaXMgY2FsbGVkIHRoZSBDYXJsbyBWZXJyZSBoYWNrIGFmdGVyIGl0cyBkaXNjb3ZlcmVyLiAqLwogc3RhdGljIGludAotaGFja2NoZWNrKFB5T2JqZWN0ICpzZWxmLCBzZXRhdHRyb2Z1bmMgZnVuYywgY2hhciAqd2hhdCkKK2hhY2tjaGVjayhQeU9iamVjdCAqc2VsZiwgc2V0YXR0cm9mdW5jIGZ1bmMsIGNvbnN0IGNoYXIgKndoYXQpCiB7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKICAgICB3aGlsZSAodHlwZSAmJiB0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpCkBAIC01NjQwLDcgKzU3MTMsNyBAQAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYpIFwKIHsgXAogICAgIF9QeV9zdGF0aWNfc3RyaW5nKGlkLCBPUFNUUik7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCkiKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsIE5VTEwpOyBcCiB9CiAKICNkZWZpbmUgU0xPVDEoRlVOQ05BTUUsIE9QU1RSLCBBUkcxVFlQRSwgQVJHQ09ERVMpIFwKQEAgLTU3MzMsNyArNTgwNiw3IEBACiBzdGF0aWMgUHlfc3NpemVfdAogc2xvdF9zcV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKnJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbGVuX18sICIoKSIpOworICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2xlbl9fLCBOVUxMKTsKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkKQEAgLTU3NTQsMzggKzU4MjcsMzkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3NxX2l0ZW0oUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaSkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MgPSBOVUxMLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIGRlc2NyZ2V0ZnVuYyBmOwogCiAgICAgZnVuYyA9IF9QeVR5cGVfTG9va3VwSWQoUHlfVFlQRShzZWxmKSwgJlB5SWRfX19nZXRpdGVtX18pOwotICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKChmID0gUHlfVFlQRShmdW5jKS0+dHBfZGVzY3JfZ2V0KSA9PSBOVUxMKQotICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZ1bmMgPSBmKGZ1bmMsIHNlbGYsIChQeU9iamVjdCAqKShQeV9UWVBFKHNlbGYpKSk7Ci0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaXZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChpKTsKLSAgICAgICAgaWYgKGl2YWwgIT0gTlVMTCkgewotICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgICAgICAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgaXZhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKKyAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpnZXRpdGVtX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBnZXRpdGVtX3N0cik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgIFB5X1hERUNSRUYoaXZhbCk7Ci0gICAgUHlfWERFQ1JFRihmdW5jKTsKKworICAgIGYgPSBQeV9UWVBFKGZ1bmMpLT50cF9kZXNjcl9nZXQ7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmdW5jID0gZihmdW5jLCBzZWxmLCAoUHlPYmplY3QgKikoUHlfVFlQRShzZWxmKSkpOworICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGl2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSk7CisgICAgaWYgKGl2YWwgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBpdmFsKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgUHlfREVDUkVGKGl2YWwpOworICAgIHJldHVybiByZXR2YWw7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNTgwNywxOSArNTg4MSwyMCBAQAogc3RhdGljIGludAogc2xvdF9zcV9jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzLCAqYXJnczsKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKICAgICBpbnQgcmVzdWx0ID0gLTE7CiAgICAgX1B5X0lERU5USUZJRVIoX19jb250YWluc19fKTsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19jb250YWluc19fKTsKKyAgICBpZiAoZnVuYyA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGEgY29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICByZXMgPSBOVUxMOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIH0KKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIHZhbHVlKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtNTg5MCw0NCArNTk2NSw1NCBAQAogc3RhdGljIGludAogc2xvdF9uYl9ib29sKFB5T2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJnczsKLSAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlPYmplY3QgKmZ1bmMsICp2YWx1ZTsKKyAgICBpbnQgcmVzdWx0OwogICAgIGludCB1c2luZ19sZW4gPSAwOwogICAgIF9QeV9JREVOVElGSUVSKF9fYm9vbF9fKTsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19ib29sX18pOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fbGVuX18pOwotICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX09jY3VycmVkKCkgPyAtMSA6IDE7CisgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KICAgICAgICAgdXNpbmdfbGVuID0gMTsKICAgICB9Ci0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgIGlmIChhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIGlmICh0ZW1wICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmICh1c2luZ19sZW4pIHsKLSAgICAgICAgICAgICAgICAvKiBlbmZvcmNlZCBieSBzbG90X25iX2xlbiAqLwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZW1wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKFB5Qm9vbF9DaGVjayh0ZW1wKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZW1wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Jvb2xfXyBzaG91bGQgcmV0dXJuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2wsIHJldHVybmVkICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh0ZW1wKS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7Ci0gICAgICAgIH0KKworICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKworICAgIGlmICh1c2luZ19sZW4pIHsKKyAgICAgICAgLyogYm9vbCB0eXBlIGVuZm9yY2VkIGJ5IHNsb3RfbmJfbGVuICovCisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qm9vbF9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiX19ib29sX18gc2hvdWxkIHJldHVybiAiCisgICAgICAgICAgICAgICAgICAgICAiYm9vbCwgcmV0dXJuZWQgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOworICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgcmV0dXJuIC0xOwogfQogCiAKQEAgLTU5MzUsNyArNjAyMCw3IEBACiBzbG90X25iX2luZGV4KFB5T2JqZWN0ICpzZWxmKQogewogICAgIF9QeV9JREVOVElGSUVSKF9faW5kZXhfXyk7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faW5kZXhfXywgIigpIik7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faW5kZXhfXywgTlVMTCk7CiB9CiAKIApAQCAtNjE3MiwyMCArNjI1NywxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJncywgKnJlczsKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZuYW1lX29wW29wXSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgb3RoZXIpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJlcyA9IE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICB9CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIG90aGVyKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTYxOTcsMTYgKzYyNzYsMjAgQEAKICAgICBfUHlfSURFTlRJRklFUihfX2l0ZXJfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2l0ZXJfXyk7CisgICAgaWYgKGZ1bmMgPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqYXJnczsKLSAgICAgICAgYXJncyA9IHJlcyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBpZiAoYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICB9CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CisKICAgICBQeUVycl9DbGVhcigpOwogICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CkBAIC02MjIzLDcgKzYzMDYsNyBAQAogc2xvdF90cF9pdGVybmV4dChQeU9iamVjdCAqc2VsZikKIHsKICAgICBfUHlfSURFTlRJRklFUihfX25leHRfXyk7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbmV4dF9fLCAiKCkiKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19uZXh0X18sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjI5MiwyOSArNjM3NSwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpmdW5jOwotICAgIFB5T2JqZWN0ICpuZXdhcmdzLCAqeDsKLSAgICBQeV9zc2l6ZV90IGksIG47CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXN1bHQ7CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKil0eXBlLCAmUHlJZF9fX25ld19fKTsKLSAgICBpZiAoZnVuYyA9PSBOVUxMKQorICAgIGlmIChmdW5jID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwotICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhuKzEpOwotICAgIGlmIChuZXdhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRih0eXBlKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIChQeU9iamVjdCAqKXR5cGUpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgeCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCBpKzEsIHgpOwogICAgIH0KLSAgICB4ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBuZXdhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYobmV3YXJncyk7CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKGZ1bmMsIChQeU9iamVjdCAqKXR5cGUsIGFyZ3MsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICByZXR1cm4geDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgdm9pZApAQCAtNjkxNyw2ICs2OTg3LDU5IEBACiAgICAgfQogfQogCisvKiBDYWxsIF9fc2V0X25hbWVfXyBvbiBhbGwgZGVzY3JpcHRvcnMgaW4gYSBuZXdseSBnZW5lcmF0ZWQgdHlwZSAqLworc3RhdGljIGludAorc2V0X25hbWVzKFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpzZXRfbmFtZSwgKnRtcDsKKyAgICBQeV9zc2l6ZV90IGkgPSAwOworCisgICAgd2hpbGUgKFB5RGljdF9OZXh0KHR5cGUtPnRwX2RpY3QsICZpLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgIHNldF9uYW1lID0gbG9va3VwX21heWJlKHZhbHVlLCAmUHlJZF9fX3NldF9uYW1lX18pOworICAgICAgICBpZiAoc2V0X25hbWUgIT0gTlVMTCkgeworICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzZXRfbmFtZSwgdHlwZSwga2V5LCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZXRfbmFtZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENhbGwgX19pbml0X3N1YmNsYXNzX18gb24gdGhlIHBhcmVudCBvZiBhIG5ld2x5IGdlbmVyYXRlZCB0eXBlICovCitzdGF0aWMgaW50Citpbml0X3N1YmNsYXNzKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnN1cGVyLCAqZnVuYywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqYXJnc1syXSA9IHsoUHlPYmplY3QgKil0eXBlLCAoUHlPYmplY3QgKil0eXBlfTsKKworICAgIHN1cGVyID0gX1B5T2JqZWN0X0Zhc3RDYWxsKChQeU9iamVjdCAqKSZQeVN1cGVyX1R5cGUsIGFyZ3MsIDIpOworICAgIGlmIChzdXBlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChzdXBlciwgJlB5SWRfX19pbml0X3N1YmNsYXNzX18pOworICAgIFB5X0RFQ1JFRihzdXBlcik7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIE5VTEwsIDAsIGt3ZHMpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiAwOworfQorCiAvKiByZWN1cnNlX2Rvd25fc3ViY2xhc3NlcygpIGFuZCB1cGRhdGVfc3ViY2xhc3NlcygpIGFyZSBtdXR1YWxseQogICAgcmVjdXJzaXZlIGZ1bmN0aW9ucyB0byBjYWxsIGEgY2FsbGJhY2sgZm9yIGFsbCBzdWJjbGFzc2VzLAogICAgYnV0IHJlZnJhaW5pbmcgZnJvbSByZWN1cnNpbmcgaW50byBzdWJjbGFzc2VzIHRoYXQgZGVmaW5lICduYW1lJy4gKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKaW5kZXggMTc2ZWMxMy4uMjk4Y2QyMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJ1Y25oYXNoLmgiCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTE2Miw2ICsxNjMsMTQgQEAKICAgICAgICAgICAgICpfdG8rKyA9ICh0b190eXBlKSAqX2l0ZXIrKzsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgorI2Vsc2UKKyAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAorI2VuZGlmCisKIC8qIFRoaXMgZGljdGlvbmFyeSBob2xkcyBhbGwgaW50ZXJuZWQgdW5pY29kZSBzdHJpbmdzLiAgTm90ZSB0aGF0IHJlZmVyZW5jZXMKICAgIHRvIHN0cmluZ3MgaW4gdGhpcyBkaWN0aW9uYXJ5IGFyZSAqbm90KiBjb3VudGVkIGluIHRoZSBzdHJpbmcncyBvYl9yZWZjbnQuCiAgICBXaGVuIHRoZSBpbnRlcm5lZCBzdHJpbmcgcmVhY2hlcyBhIHJlZmNudCBvZiAwIHRoZSBzdHJpbmcgZGVhbGxvY2F0aW9uCkBAIC0xOTUsNyArMjA0LDcgQEAKICAgICB9IHdoaWxlICgwKQogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfVUNTNCBjaCk7CiAKIC8qIExpc3Qgb2Ygc3RhdGljIHN0cmluZ3MuICovCkBAIC0yNjMsNyArMjcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKIAogLyogU2FtZSBmb3IgbGluZWJyZWFrcyAqLwotc3RhdGljIHVuc2lnbmVkIGNoYXIgYXNjaWlfbGluZWJyZWFrW10gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaV9saW5lYnJlYWtbXSA9IHsKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogLyogICAgICAgICAweDAwMEEsICogTElORSBGRUVEICovCiAvKiAgICAgICAgIDB4MDAwQiwgKiBMSU5FIFRBQlVMQVRJT04gKi8KQEAgLTI5Miw2ICszMDEsNDUgQEAKIAogI2luY2x1ZGUgImNsaW5pYy91bmljb2Rlb2JqZWN0LmMuaCIKIAordHlwZWRlZiBlbnVtIHsKKyAgICBfUHlfRVJST1JfVU5LTk9XTj0wLAorICAgIF9QeV9FUlJPUl9TVFJJQ1QsCisgICAgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRSwKKyAgICBfUHlfRVJST1JfUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfSUdOT1JFLAorICAgIF9QeV9FUlJPUl9CQUNLU0xBU0hSRVBMQUNFLAorICAgIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTLAorICAgIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfT1RIRVIKK30gX1B5X2Vycm9yX2hhbmRsZXI7CisKK3N0YXRpYyBfUHlfZXJyb3JfaGFuZGxlcgorZ2V0X2Vycm9yX2hhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NUUklDVDsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVlc2NhcGUiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfUkVQTEFDRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfSUdOT1JFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgImJhY2tzbGFzaHJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVwYXNzIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NVUlJPR0FURVBBU1M7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U7CisgICAgfQorICAgIHJldHVybiBfUHlfRVJST1JfT1RIRVI7Cit9CisKIC8qIFRoZSBtYXggdW5pY29kZSB2YWx1ZSBpcyBhbHdheXMgMHgxMEZGRkYgd2hpbGUgdXNpbmcgdGhlIFBFUC0zOTMgQVBJLgogICAgVGhpcyBmdW5jdGlvbiBpcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9sZCBBUEkuICovCiBQeV9VTklDT0RFCkBAIC01MjEsNiArNTY5LDEyOSBAQAogICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Db3B5KHVuaWNvZGUpOwogfQogCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgImJhY2tzbGFzaHJlcGxhY2UiIGVycm9yIGhhbmRsZXIgZm9yIDgtYml0IGVuY29kaW5nczoKKyAgIEFTQ0lJLCBMYXRpbjEsIFVURi04LCBldGMuICovCitzdGF0aWMgY2hhcioKK2JhY2tzbGFzaHJlcGxhY2UoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBjb2xsc3RhcnQsIFB5X3NzaXplX3QgY29sbGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgUHlfVUNTNCBjaDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisKKyAgICBzaXplID0gMDsKKyAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBQeV9zc2l6ZV90IGluY3I7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoIDwgMHgxMDApCisgICAgICAgICAgICBpbmNyID0gMisyOworICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApCisgICAgICAgICAgICBpbmNyID0gMis0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICBpbmNyID0gMis4OworICAgICAgICB9CisgICAgICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLSBpbmNyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZSArPSBpbmNyOworICAgIH0KKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAqc3RyKysgPSAnXFwnOworICAgICAgICBpZiAoY2ggPj0gMHgwMDAxMDAwMCkgeworICAgICAgICAgICAgKnN0cisrID0gJ1UnOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MjgpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4yNCkmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjIwKSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MTYpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4xMikmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjgpJjB4Zl07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHgxMDApIHsKKyAgICAgICAgICAgICpzdHIrKyA9ICd1JzsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjEyKSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+OCkmMHhmXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAqc3RyKysgPSAneCc7CisgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjQpJjB4Zl07CisgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1tjaCYweGZdOworICAgIH0KKyAgICByZXR1cm4gc3RyOworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgInhtbGNoYXJyZWZyZXBsYWNlIiBlcnJvciBoYW5kbGVyIGZvciA4LWJpdCBlbmNvZGluZ3M6CisgICBBU0NJSSwgTGF0aW4xLCBVVEYtOCwgZXRjLiAqLworc3RhdGljIGNoYXIqCit4bWxjaGFycmVmcmVwbGFjZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBjb2xsc3RhcnQsIFB5X3NzaXplX3QgY29sbGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgUHlfVUNTNCBjaDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisKKyAgICBzaXplID0gMDsKKyAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBQeV9zc2l6ZV90IGluY3I7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoIDwgMTApCisgICAgICAgICAgICBpbmNyID0gMisxKzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwKQorICAgICAgICAgICAgaW5jciA9IDIrMisxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDApCisgICAgICAgICAgICBpbmNyID0gMiszKzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDApCisgICAgICAgICAgICBpbmNyID0gMis0KzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNSsxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMDApCisgICAgICAgICAgICBpbmNyID0gMis2KzE7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgICAgIGluY3IgPSAyKzcrMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBhIFB5dGhvbiBzdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNpemUgKz0gaW5jcjsKKyAgICB9CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CisgICAgfQorICAgIHJldHVybiBzdHI7Cit9CisKIC8qIC0tLSBCbG9vbSBGaWx0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIHN0dWZmIHRvIGltcGxlbWVudCBzaW1wbGUgImJsb29tIGZpbHRlcnMiIGZvciBVbmljb2RlIGNoYXJhY3RlcnMuCkBAIC01NDksNyArNzIwLDcgQEAKICAgICAoKGNoKSA8IDEyOFUgPyBhc2NpaV9saW5lYnJlYWtbKGNoKV0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKEJMT09NKGJsb29tX2xpbmVicmVhaywgKGNoKSkgJiYgUHlfVU5JQ09ERV9JU0xJTkVCUkVBSyhjaCkpKQogCi1QeV9MT0NBTF9JTkxJTkUoQkxPT01fTUFTSykKK3N0YXRpYyBpbmxpbmUgQkxPT01fTUFTSwogbWFrZV9ibG9vbV9tYXNrKGludCBraW5kLCB2b2lkKiBwdHIsIFB5X3NzaXplX3QgbGVuKQogewogI2RlZmluZSBCTE9PTV9VUERBVEUoVFlQRSwgTUFTSywgUFRSLCBMRU4pICAgICAgICAgICAgIFwKQEAgLTU4Nyw2ICs3NTgsMTggQEAKICN1bmRlZiBCTE9PTV9VUERBVEUKIH0KIAorc3RhdGljIGludAorZW5zdXJlX3VuaWNvZGUoUHlPYmplY3QgKm9iaikKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBzdHIsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gUHlVbmljb2RlX1JFQURZKG9iaik7Cit9CisKIC8qIENvbXBpbGF0aW9uIG9mIHRlbXBsYXRlZCByb3V0aW5lcyAqLwogCiAjaW5jbHVkZSAic3RyaW5nbGliL2FzY2lpbGliLmgiCkBAIC02NDMsMzEgKzgyNiwzMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpeHVwKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0ICgqZml4ZmN0KShQeU9iamVjdCAqcykpOwogCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgZmluZGNoYXIoY29uc3Qgdm9pZCAqcywgaW50IGtpbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitzdGF0aWMgaW5saW5lIFB5X3NzaXplX3QKK2ZpbmRjaGFyKGNvbnN0IHZvaWQgKnMsIGludCBraW5kLAorICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAorICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICBpbnQgbW9kZSA9IChkaXJlY3Rpb24gPT0gMSkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKLQogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFB5X1VDUzEgY2gxID0gKFB5X1VDUzEpIGNoOwotICAgICAgICAgICAgaWYgKGNoMSA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9mYXN0c2VhcmNoKChQeV9VQ1MxICopIHMsIHNpemUsICZjaDEsIDEsIDAsIG1vZGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQorICAgICAgICBpZiAoKFB5X1VDUzEpIGNoICE9IGNoKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX2ZpbmRfY2hhcigoUHlfVUNTMSAqKSBzLCBzaXplLCAoUHlfVUNTMSkgY2gpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9yZmluZF9jaGFyKChQeV9VQ1MxICopIHMsIHNpemUsIChQeV9VQ1MxKSBjaCk7CiAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKLSAgICAgICAgewotICAgICAgICAgICAgUHlfVUNTMiBjaDIgPSAoUHlfVUNTMikgY2g7Ci0gICAgICAgICAgICBpZiAoY2gyID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVybiB1Y3MybGliX2Zhc3RzZWFyY2goKFB5X1VDUzIgKikgcywgc2l6ZSwgJmNoMiwgMSwgMCwgbW9kZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CisgICAgICAgIGlmICgoUHlfVUNTMikgY2ggIT0gY2gpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwKQorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfZmluZF9jaGFyKChQeV9VQ1MyICopIHMsIHNpemUsIChQeV9VQ1MyKSBjaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3MybGliX3JmaW5kX2NoYXIoKFB5X1VDUzIgKikgcywgc2l6ZSwgKFB5X1VDUzIpIGNoKTsKICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgotICAgICAgICByZXR1cm4gdWNzNGxpYl9mYXN0c2VhcmNoKChQeV9VQ1M0ICopIHMsIHNpemUsICZjaCwgMSwgMCwgbW9kZSk7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwKQorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfZmluZF9jaGFyKChQeV9VQ1M0ICopIHMsIHNpemUsIGNoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfcmZpbmRfY2hhcigoUHlfVUNTNCAqKSBzLCBzaXplLCBjaCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYXNzZXJ0KDApOwogICAgICAgICByZXR1cm4gLTE7CkBAIC04NjUsNyArMTA0OCw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgY29weV9sZW5ndGggPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOwogICAgICAgICBjb3B5X2xlbmd0aCA9IFB5X01JTihjb3B5X2xlbmd0aCwgbGVuZ3RoKTsKLSAgICAgICAgUHlfTUVNQ1BZKF9QeVVuaWNvZGVfV1NUUih3KSwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLAorICAgICAgICBtZW1jcHkoX1B5VW5pY29kZV9XU1RSKHcpLCBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksCiAgICAgICAgICAgICAgICAgICBjb3B5X2xlbmd0aCAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIHJldHVybiB3OwogICAgIH0KQEAgLTEyNTIsNyArMTQzNSw3IEBACiAgICAgICAgICAgICBpZiAobWF4X2NoYXIgPj0gMTI4KQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBQeV9NRU1DUFkoKGNoYXIqKXRvX2RhdGEgKyB0b19raW5kICogdG9fc3RhcnQsCisgICAgICAgIG1lbWNweSgoY2hhciopdG9fZGF0YSArIHRvX2tpbmQgKiB0b19zdGFydCwKICAgICAgICAgICAgICAgICAgIChjaGFyKilmcm9tX2RhdGEgKyBmcm9tX2tpbmQgKiBmcm9tX3N0YXJ0LAogICAgICAgICAgICAgICAgICAgdG9fa2luZCAqIGhvd19tYW55KTsKICAgICB9CkBAIC0xODQxLDcgKzIwMjQsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgogI2lmIFB5X1VOSUNPREVfU0laRSA9PSAyCi0gICAgICAgIFB5X01FTUNQWShQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDIpOworICAgICAgICBtZW1jcHkoUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiAyKTsKICNlbHNlCiAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VTklDT0RFLCBQeV9VQ1MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LCB1ICsgc2l6ZSwgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSkpOwpAQCAtMTg1NCw3ICsyMDM3LDcgQEAKICAgICAgICAgdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQodSwgdSArIHNpemUsIHVuaWNvZGUpOwogI2Vsc2UKICAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDApOwotICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiA0KTsKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogNCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE5NTYsNyArMjEzOSw3IEBACiAgICAgfQogfQogCi1QeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK3N0YXRpYyBpbmxpbmUgUHlfVUNTNAogYWxpZ25fbWF4Y2hhcihQeV9VQ1M0IG1heGNoYXIpCiB7CiAgICAgaWYgKG1heGNoYXIgPD0gMTI3KQpAQCAtMjE2NSw3ICsyMzQ4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKGNvcHkpID09IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKIAotICAgIFB5X01FTUNQWShQeVVuaWNvZGVfREFUQShjb3B5KSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgbWVtY3B5KFB5VW5pY29kZV9EQVRBKGNvcHkpLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKICAgICAgICAgICAgICAgbGVuZ3RoICogUHlVbmljb2RlX0tJTkQodW5pY29kZSkpOwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koY29weSwgMSkpOwogICAgIHJldHVybiBjb3B5OwpAQCAtMjI3MSw3ICsyNDU0LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKLSAgICAgICAgUHlfTUVNQ1BZKHRhcmdldCwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgbWVtY3B5KHRhcmdldCwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKICAgICB9CiAgICAgaWYgKGNvcHlfbnVsbCkKICAgICAgICAgdGFyZ2V0W2xlbl0gPSAwOwpAQCAtMjQ1NCwxMyArMjYzNywxMSBAQAogICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOwogICAgICAgICAgICAgKytmOwogICAgICAgICB9Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgZWxzZSBpZiAoZlsxXSA9PSAnbCcgJiYKICAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnIHx8IGZbMl0gPT0gJ2knKSkgewogICAgICAgICAgICAgbG9uZ2xvbmdmbGFnID0gMTsKICAgICAgICAgICAgIGYgKz0gMjsKICAgICAgICAgfQotI2VuZGlmCiAgICAgfQogICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcuICovCiAgICAgZWxzZSBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JyB8fCBmWzFdID09ICdpJykpIHsKQEAgLTI0OTgsMTEgKzI2NzksOSBAQAogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWx1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX0xPTkdfTE9ORyAidSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxsdSIsCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBsb25nIGxvbmcpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHNpemVfdCkpOwpAQCAtMjUxNywxMSArMjY5Niw5IEBACiAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgbG9uZykpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfTE9OR19MT05HICJpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGxpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIGxvbmcgbG9uZykpOwogICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKICAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUHlfc3NpemVfdCkpOwpAQCAtMjY5Nyw5ICsyODc0LDggQEAKICAgICB3cml0ZXIubWluX2xlbmd0aCA9IHN0cmxlbihmb3JtYXQpICsgMTAwOwogICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCi0gICAgLyogdmFfbGlzdCBtYXkgYmUgYW4gYXJyYXkgKG9mIDEgaXRlbSkgb24gc29tZSBwbGF0Zm9ybXMgKGV4OiBBTUQ2NCkuCi0gICAgICAgQ29weSBpdCB0byBiZSBhYmxlIHRvIHBhc3MgYSByZWZlcmVuY2UgdG8gYSBzdWJmdW5jdGlvbi4gKi8KLSAgICBQeV9WQV9DT1BZKHZhcmdzMiwgdmFyZ3MpOworICAgIC8vIENvcHkgdmFyYWdzIHRvIGJlIGFibGUgdG8gcGFzcyBhIHJlZmVyZW5jZSB0byBhIHN1YmZ1bmN0aW9uLgorICAgIHZhX2NvcHkodmFyZ3MyLCB2YXJncyk7CiAKICAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyApIHsKICAgICAgICAgaWYgKCpmID09ICclJykgewpAQCAtMjcxNSw2ICsyODkxLDcgQEAKICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBjaGFyKSpwID4gMTI3KSB7CisgICAgICAgICAgICAgICAgICAgIHZhX2VuZCh2YXJnczIpOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweCUwMngiLApAQCAtMjczNSw5ICsyOTEyLDExIEBACiAgICAgICAgICAgICBmID0gcDsKICAgICAgICAgfQogICAgIH0KKyAgICB2YV9lbmQodmFyZ3MyKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgZmFpbDoKKyAgICB2YV9lbmQodmFyZ3MyKTsKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC0yNzg2LDcgKzI5NjUsNyBAQAogICAgICAgICAgICAgc2l6ZSA9IHJlcyArIDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcyA9IHNpemU7Ci0gICAgICAgIFB5X01FTUNQWSh3LCB3c3RyLCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgbWVtY3B5KHcsIHdzdHIsIHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KICAgICBlbHNlCkBAIC0yOTAzLDcgKzMwODIsNyBAQAogICAgIC8qIFJldHJpZXZlIGEgYnl0ZXMgYnVmZmVyIHZpZXcgdGhyb3VnaCB0aGUgUEVQIDMxMTggYnVmZmVyIGludGVyZmFjZSAqLwogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmYnVmZmVyLCBQeUJVRl9TSU1QTEUpIDwgMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNvZXJjaW5nIHRvIHN0cjogbmVlZCBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAlLjgwcyBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAiZGVjb2RpbmcgdG8gc3RyOiBuZWVkIGEgYnl0ZXMtbGlrZSBvYmplY3QsICUuODBzIGZvdW5kIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI5MTgsOSArMzA5Nyw5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLS8qIENvbnZlcnQgZW5jb2RpbmcgdG8gbG93ZXIgY2FzZSBhbmQgcmVwbGFjZSAnXycgd2l0aCAnLScgaW4gb3JkZXIgdG8KLSAgIGNhdGNoIGUuZy4gVVRGXzguIFJldHVybiAwIG9uIGVycm9yIChlbmNvZGluZyBpcyBsb25nZXIgdGhhbiBsb3dlcl9sZW4tMSksCi0gICAxIG9uIHN1Y2Nlc3MuICovCisvKiBOb3JtYWxpemUgYW4gZW5jb2RpbmcgbmFtZTogQyBpbXBsZW1lbnRhdGlvbiBvZgorICAgZW5jb2RpbmdzLm5vcm1hbGl6ZV9lbmNvZGluZygpLiBSZXR1cm4gMSBvbiBzdWNjZXNzLCBvciAwIG9uIGVycm9yIChlbmNvZGluZworICAgaXMgbG9uZ2VyIHRoYW4gbG93ZXJfbGVuLTEpLiAqLwogaW50CiBfUHlfbm9ybWFsaXplX2VuY29kaW5nKGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpsb3dlciwKQEAgLTI5MjksMzAgKzMxMDgsMzkgQEAKICAgICBjb25zdCBjaGFyICplOwogICAgIGNoYXIgKmw7CiAgICAgY2hhciAqbF9lbmQ7CisgICAgaW50IHB1bmN0OwogCi0gICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKLSAgICAgICAgLyogNiA9PSBzdHJsZW4oInV0Zi04IikgKyAxICovCi0gICAgICAgIGlmIChsb3dlcl9sZW4gPCA2KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHN0cmNweShsb3dlciwgInV0Zi04Iik7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KKyAgICBhc3NlcnQoZW5jb2RpbmcgIT0gTlVMTCk7CisKICAgICBlID0gZW5jb2Rpbmc7CiAgICAgbCA9IGxvd2VyOwogICAgIGxfZW5kID0gJmxvd2VyW2xvd2VyX2xlbiAtIDFdOwotICAgIHdoaWxlICgqZSkgewotICAgICAgICBpZiAobCA9PSBsX2VuZCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoUHlfSVNVUFBFUigqZSkpIHsKLSAgICAgICAgICAgICpsKysgPSBQeV9UT0xPV0VSKCplKyspOworICAgIHB1bmN0ID0gMDsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBjaGFyIGMgPSAqZTsKKyAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKmUgPT0gJ18nKSB7Ci0gICAgICAgICAgICAqbCsrID0gJy0nOwotICAgICAgICAgICAgZSsrOworCisgICAgICAgIGlmIChQeV9JU0FMTlVNKGMpIHx8IGMgPT0gJy4nKSB7CisgICAgICAgICAgICBpZiAocHVuY3QgJiYgbCAhPSBsb3dlcikgeworICAgICAgICAgICAgICAgIGlmIChsID09IGxfZW5kKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAqbCsrID0gJ18nOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVuY3QgPSAwOworCisgICAgICAgICAgICBpZiAobCA9PSBsX2VuZCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKmwrKyA9IFB5X1RPTE9XRVIoYyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAqbCsrID0gKmUrKzsKKyAgICAgICAgICAgIHB1bmN0ID0gMTsKICAgICAgICAgfQorCisgICAgICAgIGUrKzsKICAgICB9CiAgICAgKmwgPSAnXDAnOwogICAgIHJldHVybiAxOwpAQCAtMjk2NiwyOCArMzE1NCw1MSBAQAogewogICAgIFB5T2JqZWN0ICpidWZmZXIgPSBOVUxMLCAqdW5pY29kZTsKICAgICBQeV9idWZmZXIgaW5mbzsKLSAgICBjaGFyIGxvd2VyWzExXTsgIC8qIEVub3VnaCBmb3IgYW55IGVuY29kaW5nIHNob3J0Y3V0ICovCisgICAgY2hhciBidWZsb3dlclsxMV07ICAgLyogc3RybGVuKCJpc28tODg1OS0xXDAiKSA9PSAxMSwgbG9uZ2VzdCBzaG9ydGN1dCAqLworCisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKKyAgICB9CiAKICAgICAvKiBTaG9ydGN1dHMgZm9yIGNvbW1vbiBkZWZhdWx0IGVuY29kaW5ncyAqLwotICAgIGlmIChfUHlfbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBsb3dlciwgc2l6ZW9mKGxvd2VyKSkpIHsKLSAgICAgICAgaWYgKChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApIHx8Ci0gICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAidXRmOCIpID09IDApKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKLSAgICAgICAgZWxzZSBpZiAoKHN0cmNtcChsb3dlciwgImxhdGluLTEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzby04ODU5LTEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvODg1OS0xIikgPT0gMCkpCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBzaXplLCBlcnJvcnMpOwotI2lmZGVmIEhBVkVfTUJDUwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDUyhzLCBzaXplLCBlcnJvcnMpOwotI2VuZGlmCi0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlQVNDSUkocywgc2l6ZSwgZXJyb3JzKTsKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAidXRmLTE2IikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYocywgc2l6ZSwgZXJyb3JzLCAwKTsKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAidXRmLTMyIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMzIocywgc2l6ZSwgZXJyb3JzLCAwKTsKKyAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgYnVmbG93ZXIsIHNpemVvZihidWZsb3dlcikpKSB7CisgICAgICAgIGNoYXIgKmxvd2VyID0gYnVmbG93ZXI7CisKKyAgICAgICAgLyogRmFzdCBwYXRocyAqLworICAgICAgICBpZiAobG93ZXJbMF0gPT0gJ3UnICYmIGxvd2VyWzFdID09ICd0JyAmJiBsb3dlclsyXSA9PSAnZicpIHsKKyAgICAgICAgICAgIGxvd2VyICs9IDM7CisgICAgICAgICAgICBpZiAoKmxvd2VyID09ICdfJykgeworICAgICAgICAgICAgICAgIC8qIE1hdGNoICJ1dGY4IiBhbmQgInV0Zl84IiAqLworICAgICAgICAgICAgICAgIGxvd2VyKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChsb3dlclswXSA9PSAnOCcgJiYgbG93ZXJbMV0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb3dlclswXSA9PSAnMScgJiYgbG93ZXJbMV0gPT0gJzYnICYmIGxvd2VyWzJdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjE2KHMsIHNpemUsIGVycm9ycywgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb3dlclswXSA9PSAnMycgJiYgbG93ZXJbMV0gPT0gJzInICYmIGxvd2VyWzJdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjMyKHMsIHNpemUsIGVycm9ycywgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwCisgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAidXNfYXNjaWkiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVBU0NJSShzLCBzaXplLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDUyhzLCBzaXplLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICNlbmRpZgorICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMAorICAgICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAibGF0aW5fMSIpID09IDAKKyAgICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgImlzb184ODU5XzEiKSA9PSAwCisgICAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJpc284ODU5XzEiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIERlY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCkBAIC0zMTY3LDI0ICszMzc4LDIyIEBACiBzdGF0aWMgaW50CiBsb2NhbGVfZXJyb3JfaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsIGludCAqc3Vycm9nYXRlZXNjYXBlKQogewotICAgIGlmIChlcnJvcnMgPT0gTlVMTCkgeworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikKKyAgICB7CisgICAgY2FzZSBfUHlfRVJST1JfU1RSSUNUOgogICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMDsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSB7Ci0gICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAwOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVlc2NhcGUiKSA9PSAwKSB7CisgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgogICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAib25seSAnc3RyaWN0JyBhbmQgJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlcnMgIgorICAgICAgICAgICAgICAgICAgICAgImFyZSBzdXBwb3J0ZWQsIG5vdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICJvbmx5ICdzdHJpY3QnIGFuZCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVycyAiCi0gICAgICAgICAgICAgICAgICJhcmUgc3VwcG9ydGVkLCBub3QgJyVzJyIsCi0gICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0gICAgcmV0dXJuIC0xOwogfQogCiBQeU9iamVjdCAqCkBAIC0zMzAwLDEwICszNTA5LDggQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0jaWZkZWYgSEFWRV9NQkNTCi0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIE5VTEwpOwotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogI2Vsc2UKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICAvKiBCb290c3RyYXAgY2hlY2s6IGlmIHRoZSBmaWxlc3lzdGVtIGNvZGVjIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgd2UKQEAgLTMzMTgsMTAgKzM1MjUsMTAgQEAKICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyAmJiBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodW5pY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxvY2FsZSh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKHVuaWNvZGUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTMzMzIsMzQgKzM1MzksNTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwotICAgIGNoYXIgbG93ZXJbMTFdOyAgLyogRW5vdWdoIGZvciBhbnkgZW5jb2Rpbmcgc2hvcnRjdXQgKi8KKyAgICBjaGFyIGJ1Zmxvd2VyWzExXTsgICAvKiBzdHJsZW4oImlzb184ODU5XzFcMCIpID09IDExLCBsb25nZXN0IHNob3J0Y3V0ICovCiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICB9CisKICAgICAvKiBTaG9ydGN1dHMgZm9yIGNvbW1vbiBkZWZhdWx0IGVuY29kaW5ncyAqLwotICAgIGlmIChfUHlfbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBsb3dlciwgc2l6ZW9mKGxvd2VyKSkpIHsKLSAgICAgICAgaWYgKChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApIHx8Ci0gICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAidXRmOCIpID09IDApKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIE5VTEwpOwotICAgICAgICAgICAgZWxzZQorICAgIGlmIChfUHlfbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBidWZsb3dlciwgc2l6ZW9mKGJ1Zmxvd2VyKSkpIHsKKyAgICAgICAgY2hhciAqbG93ZXIgPSBidWZsb3dlcjsKKworICAgICAgICAvKiBGYXN0IHBhdGhzICovCisgICAgICAgIGlmIChsb3dlclswXSA9PSAndScgJiYgbG93ZXJbMV0gPT0gJ3QnICYmIGxvd2VyWzJdID09ICdmJykgeworICAgICAgICAgICAgbG93ZXIgKz0gMzsKKyAgICAgICAgICAgIGlmICgqbG93ZXIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgLyogTWF0Y2ggInV0ZjgiIGFuZCAidXRmXzgiICovCisgICAgICAgICAgICAgICAgbG93ZXIrKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxvd2VyWzBdID09ICc4JyAmJiBsb3dlclsxXSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb3dlclswXSA9PSAnMScgJiYgbG93ZXJbMV0gPT0gJzYnICYmIGxvd2VyWzJdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYxNih1bmljb2RlLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzMnICYmIGxvd2VyWzFdID09ICcyJyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIodW5pY29kZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgoc3RyY21wKGxvd2VyLCAibGF0aW4tMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvLTg4NTktMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc284ODU5LTEiKSA9PSAwKSkKLSAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7Ci0jaWZkZWYgSEFWRV9NQkNTCi0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMAorICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgInVzX2FzY2lpIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChsb3dlciwgImxhdGluXzEiKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICBzdHJjbXAobG93ZXIsICJpc29fODg1OV8xIikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGxvd2VyLCAiaXNvODg1OV8xIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICAvKiBFbmNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwpAQCAtMzU4NCwxMCArMzgxMyw4IEBACiBQeU9iamVjdCoKIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgTlVMTCk7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIiwgTlVMTCk7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMsIE5VTEwpOwogI2Vsc2UKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICAvKiBCb290c3RyYXAgY2hlY2s6IGlmIHRoZSBmaWxlc3lzdGVtIGNvZGVjIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgd2UKQEAgLTM2MDAsMTIgKzM4MjcsMjQgQEAKICAgICAgICBjYW5ub3Qgb25seSByZWx5IG9uIGl0OiBjaGVjayBhbHNvIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCBmb3IKICAgICAgICBzdWJpbnRlcnByZXRlcnMuICovCiAgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkKSB7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlKHMsIHNpemUsCisgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeVVuaWNvZGVfRGVjb2RlKHMsIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgaWYgKCFyZXMgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IpKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZmlsZXN5c3RlbSBwYXRoIGJ5dGVzIHdlcmUgbm90IGNvcnJlY3RseSBlbmNvZGVkIHdpdGggJyVzJy4gIiBcCisgICAgICAgICAgICAgICAgIlBsZWFzZSByZXBvcnQgdGhpcyBhdCBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjc3ODEiLAorICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOworICAgICAgICAgICAgX1B5RXJyX0NoYWluRXhjZXB0aW9ucyhleGMsIHZhbCwgdGIpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShzLCBzaXplLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0zNjE0LDYgKzM4NTMsNyBAQAogaW50CiBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoUHlPYmplY3QqIGFyZywgdm9pZCogYWRkcikKIHsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm91dHB1dCA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIHZvaWQgKmRhdGE7CkBAIC0zNjIyLDI0ICszODYyLDIyIEBACiAgICAgICAgICooUHlPYmplY3QqKilhZGRyID0gTlVMTDsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykpIHsKLSAgICAgICAgb3V0cHV0ID0gYXJnOwotICAgICAgICBQeV9JTkNSRUYob3V0cHV0KTsKKyAgICBwYXRoID0gUHlPU19GU1BhdGgoYXJnKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgYXJnID0gUHlVbmljb2RlX0Zyb21PYmplY3QoYXJnKTsKLSAgICAgICAgaWYgKCFhcmcpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmcpOwotICAgICAgICBQeV9ERUNSRUYoYXJnKTsKLSAgICAgICAgaWYgKCFvdXRwdXQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG91dHB1dCkpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kZXIgZmFpbGVkIHRvIHJldHVybiBieXRlcyIpOworICAgIGlmIChQeUJ5dGVzX0NoZWNrKHBhdGgpKSB7CisgICAgICAgIG91dHB1dCA9IHBhdGg7CisgICAgfQorICAgIGVsc2UgeyAgLy8gUHlPU19GU1BhdGgoKSBndWFyYW50ZWVzIGl0cyByZXR1cm5lZCB2YWx1ZSBpcyBieXRlcyBvciBzdHIuCisgICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICAgICAgaWYgKCFvdXRwdXQpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CisgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKG91dHB1dCkpOwogICAgIH0KKwogICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG91dHB1dCk7CiAgICAgZGF0YSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG91dHB1dCk7CiAgICAgaWYgKChzaXplX3Qpc2l6ZSAhPSBzdHJsZW4oZGF0YSkpIHsKQEAgLTM2NTUsMzYgKzM4OTMsNjAgQEAKIGludAogUHlVbmljb2RlX0ZTRGVjb2RlcihQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQogeworICAgIGludCBpc19idWZmZXIgPSAwOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKICAgICBQeU9iamVjdCAqb3V0cHV0ID0gTlVMTDsKICAgICBpZiAoYXJnID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKCooUHlPYmplY3QqKilhZGRyKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPT0gLTEpCisKKyAgICBpc19idWZmZXIgPSBQeU9iamVjdF9DaGVja0J1ZmZlcihhcmcpOworICAgIGlmICghaXNfYnVmZmVyKSB7CisgICAgICAgIHBhdGggPSBQeU9TX0ZTUGF0aChhcmcpOworICAgICAgICBpZiAocGF0aCA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgb3V0cHV0ID0gYXJnOwotICAgICAgICBQeV9JTkNSRUYob3V0cHV0KTsKKyAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcihhcmcpKSB7Ci0gICAgICAgIGFyZyA9IFB5Qnl0ZXNfRnJvbU9iamVjdChhcmcpOwotICAgICAgICBpZiAoIWFyZykKKyAgICBlbHNlIHsKKyAgICAgICAgcGF0aCA9IGFyZzsKKyAgICAgICAgUHlfSU5DUkVGKGFyZyk7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwYXRoKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHBhdGgpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoUHlCeXRlc19BU19TVFJJTkcoYXJnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShhcmcpKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZyk7Ci0gICAgICAgIGlmICghb3V0cHV0KQorICAgICAgICB9CisgICAgICAgIG91dHB1dCA9IHBhdGg7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2socGF0aCkgfHwgaXNfYnVmZmVyKSB7CisgICAgICAgIFB5T2JqZWN0ICpwYXRoX2J5dGVzID0gTlVMTDsKKworICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2socGF0aCkgJiYKKyAgICAgICAgICAgIFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgInBhdGggc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9zLlBhdGhMaWtlLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgIFB5X1RZUEUoYXJnKS0+dHBfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob3V0cHV0KSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZGVjb2RlciBmYWlsZWQgdG8gcmV0dXJuIHVuaWNvZGUiKTsKKyAgICAgICAgfQorICAgICAgICBwYXRoX2J5dGVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KHBhdGgpOworICAgICAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgICAgIGlmICghcGF0aF9ieXRlcykgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoUHlCeXRlc19BU19TVFJJTkcocGF0aF9ieXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocGF0aF9ieXRlcykpOworICAgICAgICBQeV9ERUNSRUYocGF0aF9ieXRlcyk7CisgICAgICAgIGlmICghb3V0cHV0KSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJwYXRoIHNob3VsZCBiZSBzdHJpbmcgb3IgYnl0ZXMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgInBhdGggc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9zLlBhdGhMaWtlLCBub3QgJS4yMDBzIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoYXJnKS0+dHBfbmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob3V0cHV0KSA9PSAtMSkgewpAQCAtMzcxNiw3ICszOTc4LDcgQEAKIAogICAgIGlmIChQeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9PSBOVUxMKSB7CiAgICAgICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkodW5pY29kZSkpOwotICAgICAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsICJzdHJpY3QiKTsKKyAgICAgICAgYnl0ZXMgPSBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKICAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpICsgMSk7CkBAIC0zNzI2LDcgKzM5ODgsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOwotICAgICAgICBQeV9NRU1DUFkoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAorICAgICAgICBtZW1jcHkoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAogICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAogICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSArIDEpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwpAQCAtMzk2Niw3ICs0MjI4LDcgQEAKICAgICBQeV9DTEVBUigqZXhjZXB0aW9uT2JqZWN0KTsKIH0KIAotI2lmZGVmIEhBVkVfTUJDUworI2lmZGVmIE1TX1dJTkRPV1MKIC8qIGVycm9yIGhhbmRsaW5nIGNhbGxiYWNrIGhlbHBlcjoKICAgIGJ1aWxkIGFyZ3VtZW50cywgY2FsbCB0aGUgY2FsbGJhY2sgYW5kIGNoZWNrIHRoZSBhcmd1bWVudHMsCiAgICBpZiBubyBleGNlcHRpb24gb2NjdXJyZWQsIGNvcHkgdGhlIHJlcGxhY2VtZW50IHRvIHRoZSBvdXRwdXQKQEAgLTM5ODIsNyArNDI0NCw3IEBACiAgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCiAgICAgUHlPYmplY3QgKipvdXRwdXQsIFB5X3NzaXplX3QgKm91dHBvcykKIHsKLSAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCiAgICAgUHlPYmplY3QgKnJlc3R1cGxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7CkBAIC00MDgwLDcgKzQzNDIsNyBAQAogICAgIFB5X1hERUNSRUYocmVzdHVwbGUpOwogICAgIHJldHVybiAtMTsKIH0KLSNlbmRpZiAgIC8qIEhBVkVfTUJDUyAqLworI2VuZGlmICAgLyogTVNfV0lORE9XUyAqLwogCiBzdGF0aWMgaW50CiB1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCkBAIC00MDkwLDcgKzQzNTIsNyBAQAogICAgIFB5X3NzaXplX3QgKmVuZGlucG9zLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwgY29uc3QgY2hhciAqKmlucHRyLAogICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciAvKiBQeU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zICovKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeU9iamVjdCAqcmVzdHVwbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsKQEAgLTQ2OTYsOCArNDk1OCw5IEBACiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgY29uc3QgY2hhciAqZXJybXNnID0gIiI7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIGlmIChjb25zdW1lZCkKQEAgLTQ3MjIsNiArNDk4NSw3IEBACiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKICAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgaW50IGtpbmQgPSB3cml0ZXIua2luZDsKKwogICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh3cml0ZXIuYnVmZmVyKSkKICAgICAgICAgICAgICAgICBjaCA9IGFzY2lpbGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsIHdyaXRlci5kYXRhLCAmd3JpdGVyLnBvcyk7CkBAIC00NzYwLDI0ICs1MDI0LDU2IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICJ1dGYtOCIsIGVycm1zZywKLSAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAmd3JpdGVyKSkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpIHsKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgorICAgICAgICAgICAgcyArPSAoZW5kaW5wb3MgLSBzdGFydGlucG9zKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgMHhmZmZkKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgcyArPSAoZW5kaW5wb3MgLSBzdGFydGlucG9zKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgmd3JpdGVyLCBQeVVuaWNvZGVfMkJZVEVfS0lORCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGZvciAoaT1zdGFydGlucG9zOyBpPGVuZGlucG9zOyBpKyspIHsKKyAgICAgICAgICAgICAgICBjaCA9IChQeV9VQ1M0KSh1bnNpZ25lZCBjaGFyKShzdGFydHNbaV0pOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoICsgMHhkYzAwKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzICs9IChlbmRpbnBvcyAtIHN0YXJ0aW5wb3MpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosCisgICAgICAgICAgICAgICAgICAgICJ1dGYtOCIsIGVycm1zZywKKyAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQogICAgIH0KIAogRW5kOgogICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgKmNvbnN1bWVkID0gcyAtIHN0YXJ0czsKIAotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiBvbkVycm9yOgotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNTA2OSw3ICs1MzY1LDcgQEAKICAgICBjb25zdCB2b2lkICpkYXRhOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICp2OwotICAgIFBZX1VJTlQzMl9UICpvdXQ7CisgICAgdWludDMyX3QgKm91dDsKICNpZiBQWV9MSVRUTEVfRU5ESUFOCiAgICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IGJ5dGVvcmRlciA8PSAwOwogI2Vsc2UKQEAgLTUxMDAsNyArNTM5Niw3IEBACiAKICAgICAvKiBvdXRwdXQgYnVmZmVyIGlzIDQtYnl0ZXMgYWxpZ25lZCAqLwogICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyh2KSwgNCkpOwotICAgIG91dCA9IChQWV9VSU5UMzJfVCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgIG91dCA9ICh1aW50MzJfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgIGlmIChieXRlb3JkZXIgPT0gMCkKICAgICAgICAgKm91dCsrID0gMHhGRUZGOwogICAgIGlmIChsZW4gPT0gMCkKQEAgLTUxNjYsNyArNTQ2Miw3IEBACiAKICAgICAgICAgLyogZm91ciBieXRlcyBhcmUgcmVzZXJ2ZWQgZm9yIGVhY2ggc3Vycm9nYXRlICovCiAgICAgICAgIGlmIChtb3JldW5pdHMgPiAxKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9IG91dCAtIChQWV9VSU5UMzJfVCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgICAgICAgICAgUHlfc3NpemVfdCBvdXRwb3MgPSBvdXQgLSAodWludDMyX3QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbW9yZWJ5dGVzID0gNCAqIChtb3JldW5pdHMgLSAxKTsKICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHYpID4gUFlfU1NJWkVfVF9NQVggLSBtb3JlYnl0ZXMpIHsKICAgICAgICAgICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCkBAIC01MTc1LDExICs1NDcxLDExIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZ2LCBQeUJ5dGVzX0dFVF9TSVpFKHYpICsgbW9yZWJ5dGVzKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIG91dCA9IChQWV9VSU5UMzJfVCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpICsgb3V0cG9zOworICAgICAgICAgICAgb3V0ID0gKHVpbnQzMl90KikgUHlCeXRlc19BU19TVFJJTkcodikgKyBvdXRwb3M7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7Ci0gICAgICAgICAgICBQeV9NRU1DUFkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCByZXBzaXplKTsKKyAgICAgICAgICAgIG1lbWNweShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOwogICAgICAgICAgICAgb3V0ICs9IG1vcmV1bml0czsKICAgICAgICAgfSBlbHNlIC8qIHJlcCBpcyB1bmljb2RlICovIHsKICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZXApID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKQEAgLTU0MzAsMzYgKzU3MjYsNDUgQEAKICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkgewogICAgICAgICBjb25zdCBQeV9VQ1M0ICppbiA9IChjb25zdCBQeV9VQ1M0ICopZGF0YTsKICAgICAgICAgY29uc3QgUHlfVUNTNCAqZW5kID0gaW4gKyBsZW47Ci0gICAgICAgIHdoaWxlIChpbiA8IGVuZCkKLSAgICAgICAgICAgIGlmICgqaW4rKyA+PSAweDEwMDAwKQorICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgIGlmICgqaW4rKyA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgcGFpcnMrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyAyIC0gcGFpcnMgLSAoYnl0ZW9yZGVyID09IDApKQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIgLSBwYWlycyAtIChieXRlb3JkZXIgPT0gMCkpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQogICAgIG5zaXplID0gbGVuICsgcGFpcnMgKyAoYnl0ZW9yZGVyID09IDApOwogICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5zaXplICogMik7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIC8qIG91dHB1dCBidWZmZXIgaXMgMi1ieXRlcyBhbGlnbmVkICovCiAgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKFB5Qnl0ZXNfQVNfU1RSSU5HKHYpLCAyKSk7CiAgICAgb3V0ID0gKHVuc2lnbmVkIHNob3J0ICopUHlCeXRlc19BU19TVFJJTkcodik7Ci0gICAgaWYgKGJ5dGVvcmRlciA9PSAwKQorICAgIGlmIChieXRlb3JkZXIgPT0gMCkgewogICAgICAgICAqb3V0KysgPSAweEZFRkY7Ci0gICAgaWYgKGxlbiA9PSAwKQorICAgIH0KKyAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgZ290byBkb25lOworICAgIH0KIAogICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIHVjczFsaWJfdXRmMTZfZW5jb2RlKChjb25zdCBQeV9VQ1MxICopZGF0YSwgbGVuLCAmb3V0LCBuYXRpdmVfb3JkZXJpbmcpOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCi0gICAgaWYgKGJ5dGVvcmRlciA8IDApCisgICAgaWYgKGJ5dGVvcmRlciA8IDApIHsKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTE2LWxlIjsKLSAgICBlbHNlIGlmIChieXRlb3JkZXIgPiAwKQorICAgIH0KKyAgICBlbHNlIGlmIChieXRlb3JkZXIgPiAwKSB7CiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0xNi1iZSI7Ci0gICAgZWxzZQorICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTE2IjsKKyAgICB9CiAKICAgICBwb3MgPSAwOwogICAgIHdoaWxlIChwb3MgPCBsZW4pIHsKQEAgLTU1MjIsNyArNTgyNyw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7Ci0gICAgICAgICAgICBQeV9NRU1DUFkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCByZXBzaXplKTsKKyAgICAgICAgICAgIG1lbWNweShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOwogICAgICAgICAgICAgb3V0ICs9IG1vcmV1bml0czsKICAgICAgICAgfSBlbHNlIC8qIHJlcCBpcyB1bmljb2RlICovIHsKICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZXApID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKQEAgLTU1NzUsNjEgKzU4ODAsNiBAQAogCiAvKiAtLS0gVW5pY29kZSBFc2NhcGUgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotLyogSGVscGVyIGZ1bmN0aW9uIGZvciBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZSwgZGV0ZXJtaW5lcwotICAgaWYgYWxsIHRoZSBlc2NhcGVzIGluIHRoZSBzdHJpbmcgbWFrZSBpdCBzdGlsbCBhIHZhbGlkIEFTQ0lJIHN0cmluZy4KLSAgIFJldHVybnMgLTEgaWYgYW55IGVzY2FwZXMgd2VyZSBmb3VuZCB3aGljaCBjYXVzZSB0aGUgc3RyaW5nIHRvCi0gICBwb3Agb3V0IG9mIEFTQ0lJIHJhbmdlLiAgT3RoZXJ3aXNlIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUKLSAgIHJlcXVpcmVkIGJ1ZmZlciB0byBob2xkIHRoZSBzdHJpbmcuCi0gICAqLwotc3RhdGljIFB5X3NzaXplX3QKLWxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZyhjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCi17Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopczsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbmQgPSBwICsgc2l6ZTsKLSAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IDA7Ci0KLSAgICBpZiAoc2l6ZSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGZvciAoOyBwIDwgZW5kOyArK3ApIHsKLSAgICAgICAgaWYgKCpwID4gMTI3KSB7Ci0gICAgICAgICAgICAvKiBOb24tQVNDSUkgKi8KLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgqcCAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAvKiBOb3JtYWwgY2hhcmFjdGVyICovCi0gICAgICAgICAgICArK2xlbmd0aDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8qIEJhY2tzbGFzaC1lc2NhcGUsIGNoZWNrIG5leHQgY2hhciAqLwotICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgLyogRXNjYXBlIHNlcXVlbmNlIHJlYWNoZXMgdGlsbCBlbmQgb2Ygc3RyaW5nIG9yCi0gICAgICAgICAgICAgICBub24tQVNDSUkgZm9sbG93LXVwLiAqLwotICAgICAgICAgICAgaWYgKHAgPj0gZW5kIHx8ICpwID4gMTI3KQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIHN3aXRjaCAoKnApIHsKLSAgICAgICAgICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgICAgICAgICAvKiBiYWNrc2xhc2ggKyBcbiByZXN1bHQgaW4gemVybyBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ1wnJzogY2FzZSAnXCInOgotICAgICAgICAgICAgY2FzZSAnYic6IGNhc2UgJ2YnOiBjYXNlICd0JzoKLSAgICAgICAgICAgIGNhc2UgJ24nOiBjYXNlICdyJzogY2FzZSAndic6IGNhc2UgJ2EnOgotICAgICAgICAgICAgICAgICsrbGVuZ3RoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6Ci0gICAgICAgICAgICBjYXNlICc0JzogY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzoKLSAgICAgICAgICAgIGNhc2UgJ3gnOiBjYXNlICd1JzogY2FzZSAnVSc6IGNhc2UgJ04nOgotICAgICAgICAgICAgICAgIC8qIHRoZXNlIGRvIG5vdCBndWFyYW50ZWUgQVNDSUkgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgLyogY291bnQgdGhlIGJhY2tzbGFzaCArIHRoZSBvdGhlciBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgICAgICBsZW5ndGggKz0gMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCiBzdGF0aWMgX1B5VW5pY29kZV9OYW1lX0NBUEkgKnVjbmhhc2hfQ0FQSSA9IE5VTEw7CiAKIFB5T2JqZWN0ICoKQEAgLTU2MzgsMjE4ICs1ODg4LDIxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwotICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgY29uc3QgY2hhciAqZW5kOwotICAgIGNoYXIqIG1lc3NhZ2U7Ci0gICAgUHlfVUNTNCBjaHIgPSAweGZmZmZmZmZmOyAvKiBpbiBjYXNlICdnZXRjb2RlJyBtZXNzZXMgdXAgKi8KICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKIAotICAgIGxlbiA9IGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZyhzLCBzaXplKTsKLSAgICBpZiAobGVuID09IDApCisgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKLQotICAgIC8qIEFmdGVyIGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZygpIHRoZXJlIGFyZSB0d28gYWx0ZXJuYXRpdmVzLAotICAgICAgIGVpdGhlciB0aGUgc3RyaW5nIGlzIHB1cmUgQVNDSUkgd2l0aCBuYW1lZCBlc2NhcGVzIGxpa2UgXG4sIGV0Yy4KLSAgICAgICBhbmQgd2UgZGV0ZXJtaW5lZCBpdCdzIGV4YWN0IHNpemUgKGNvbW1vbiBjYXNlKQotICAgICAgIG9yIGl0IGNvbnRhaW5zIFx4LCBcdSwgLi4uIGVzY2FwZSBzZXF1ZW5jZXMuICB0aGVuIHdlIGNyZWF0ZSBhCi0gICAgICAgbGVnYWN5IHdjaGFyIHN0cmluZyBhbmQgcmVzaXplIGl0IGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4gKi8KKyAgICB9CisgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKKyAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQorICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLgorICAgICAgIChidXQgaWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMgYSBsb25nIHJlcGxhY2VtZW50IHN0cmluZworICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KICAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7Ci0gICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBsZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZwotICAgICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQotICAgICAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KLSAgICAgICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCi0gICAgICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KLSAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHNpemUsIDEyNykgPCAwKSB7CisgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAgICAgZW5kID0gcyArIHNpemU7Ci0KICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIFB5X1VDUzQgeDsKLSAgICAgICAgaW50IGRpZ2l0czsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOworICAgICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOworICAgICAgICBjb25zdCBjaGFyICptZXNzYWdlOworCisjZGVmaW5lIFdSSVRFX0FTQ0lJX0NIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IDEyNyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCBjaCk7ICBcCisgICAgICAgICAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgV1JJVEVfQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAoY2ggPD0gd3JpdGVyLm1heGNoYXIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCBjaCk7IFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCBjaCkgPCAwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gd2hpbGUoMCkKIAogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgIHggPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAoYyAhPSAnXFwnKSB7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CisgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzIC0gMTsKICAgICAgICAgLyogXCAtIEVzY2FwZXMgKi8KLSAgICAgICAgcysrOwotICAgICAgICBjID0gKnMrKzsKLSAgICAgICAgaWYgKHMgPiBlbmQpCi0gICAgICAgICAgICBjID0gJ1wwJzsgLyogSW52YWxpZCBhZnRlciBcICovCisgICAgICAgIGlmIChzID49IGVuZCkgeworICAgICAgICAgICAgbWVzc2FnZSA9ICJcXCBhdCBlbmQgb2Ygc3RyaW5nIjsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOwogCisgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOwogICAgICAgICBzd2l0Y2ggKGMpIHsKIAogICAgICAgICAgICAgLyogXHggZXNjYXBlcyAqLwotI2RlZmluZSBXUklURUNIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCAoY2gpKSA8IDApICAgIFwKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gd2hpbGUoMCkKLQotICAgICAgICBjYXNlICdcbic6IGJyZWFrOwotICAgICAgICBjYXNlICdcXCc6IFdSSVRFQ0hBUignXFwnKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1wnJzogV1JJVEVDSEFSKCdcJycpOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCInOiBXUklURUNIQVIoJ1wiJyk7IGJyZWFrOwotICAgICAgICBjYXNlICdiJzogV1JJVEVDSEFSKCdcYicpOyBicmVhazsKKyAgICAgICAgY2FzZSAnXG4nOiBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXFwnOiBXUklURV9BU0NJSV9DSEFSKCdcXCcpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXCcnOiBXUklURV9BU0NJSV9DSEFSKCdcJycpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXCInOiBXUklURV9BU0NJSV9DSEFSKCdcIicpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnYic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xiJyk7IGNvbnRpbnVlOwogICAgICAgICAvKiBGRiAqLwotICAgICAgICBjYXNlICdmJzogV1JJVEVDSEFSKCdcMDE0Jyk7IGJyZWFrOwotICAgICAgICBjYXNlICd0JzogV1JJVEVDSEFSKCdcdCcpOyBicmVhazsKLSAgICAgICAgY2FzZSAnbic6IFdSSVRFQ0hBUignXG4nKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3InOiBXUklURUNIQVIoJ1xyJyk7IGJyZWFrOworICAgICAgICBjYXNlICdmJzogV1JJVEVfQVNDSUlfQ0hBUignXDAxNCcpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAndCc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1x0Jyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICduJzogV1JJVEVfQVNDSUlfQ0hBUignXG4nKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ3InOiBXUklURV9BU0NJSV9DSEFSKCdccicpOyBjb250aW51ZTsKICAgICAgICAgLyogVlQgKi8KLSAgICAgICAgY2FzZSAndic6IFdSSVRFQ0hBUignXDAxMycpOyBicmVhazsKKyAgICAgICAgY2FzZSAndic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wwMTMnKTsgY29udGludWU7CiAgICAgICAgIC8qIEJFTCwgbm90IGNsYXNzaWMgQyAqLwotICAgICAgICBjYXNlICdhJzogV1JJVEVDSEFSKCdcMDA3Jyk7IGJyZWFrOworICAgICAgICBjYXNlICdhJzogV1JJVEVfQVNDSUlfQ0hBUignXDAwNycpOyBjb250aW51ZTsKIAogICAgICAgICAgICAgLyogXE9PTyAob2N0YWwpIGVzY2FwZXMgKi8KICAgICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6CiAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgotICAgICAgICAgICAgeCA9IHNbLTFdIC0gJzAnOworICAgICAgICAgICAgY2ggPSBjIC0gJzAnOwogICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykgewotICAgICAgICAgICAgICAgIHggPSAoeDw8MykgKyAqcysrIC0gJzAnOwotICAgICAgICAgICAgICAgIGlmIChzIDwgZW5kICYmICcwJyA8PSAqcyAmJiAqcyA8PSAnNycpCi0gICAgICAgICAgICAgICAgICAgIHggPSAoeDw8MykgKyAqcysrIC0gJzAnOworICAgICAgICAgICAgICAgIGNoID0gKGNoPDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykgeworICAgICAgICAgICAgICAgICAgICBjaCA9IChjaDw8MykgKyAqcysrIC0gJzAnOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFdSSVRFQ0hBUih4KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgLyogaGV4IGVzY2FwZXMgKi8KICAgICAgICAgICAgIC8qIFx4WFggKi8KICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICBkaWdpdHMgPSAyOworICAgICAgICAgICAgY291bnQgPSAyOwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx4WFggZXNjYXBlIjsKICAgICAgICAgICAgIGdvdG8gaGV4ZXNjYXBlOwogCiAgICAgICAgICAgICAvKiBcdVhYWFggKi8KICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICBkaWdpdHMgPSA0OworICAgICAgICAgICAgY291bnQgPSA0OwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx1WFhYWCBlc2NhcGUiOwogICAgICAgICAgICAgZ290byBoZXhlc2NhcGU7CiAKICAgICAgICAgICAgIC8qIFxVWFhYWFhYWFggKi8KICAgICAgICAgY2FzZSAnVSc6Ci0gICAgICAgICAgICBkaWdpdHMgPSA4OworICAgICAgICAgICAgY291bnQgPSA4OwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFxVWFhYWFhYWFggZXNjYXBlIjsKICAgICAgICAgaGV4ZXNjYXBlOgotICAgICAgICAgICAgY2hyID0gMDsKLSAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgZGlnaXRzKSB7Ci0gICAgICAgICAgICAgICAgLyogY291bnQgb25seSBoZXggZGlnaXRzICovCi0gICAgICAgICAgICAgICAgZm9yICg7IHMgPCBlbmQ7ICsrcykgewotICAgICAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICg7IGRpZ2l0cy0tOyArK3MpIHsKKyAgICAgICAgICAgIGZvciAoY2ggPSAwOyBjb3VudCAmJiBzIDwgZW5kOyArK3MsIC0tY291bnQpIHsKICAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBjaHIgPSAoY2hyPDw0KSAmIH4weEY7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgICAgICAgICAgICAgICBjaHIgKz0gYyAtICcwJzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgICAgICAgICAgY2hyICs9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNociArPSAxMCArIGMgLSAnQSc7CisgICAgICAgICAgICAgICAgY2ggPDw9IDQ7CisgICAgICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAnMCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ2EnIC0gMTApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICdBJyAmJiBjIDw9ICdGJykgeworICAgICAgICAgICAgICAgICAgICBjaCArPSBjIC0gKCdBJyAtIDEwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaHIgPT0gMHhmZmZmZmZmZiAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIC8qIF9kZWNvZGluZ19lcnJvciB3aWxsIGhhdmUgYWxyZWFkeSB3cml0dGVuIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgdGFyZ2V0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RvcmU6Ci0gICAgICAgICAgICAvKiB3aGVuIHdlIGdldCBoZXJlLCBjaHIgaXMgYSAzMi1iaXQgdW5pY29kZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiaWxsZWdhbCBVbmljb2RlIGNoYXJhY3RlciI7Ci0gICAgICAgICAgICBpZiAoY2hyID4gTUFYX1VOSUNPREUpCisgICAgICAgICAgICBpZiAoY291bnQpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgV1JJVEVDSEFSKGNocik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogd2hlbiB3ZSBnZXQgaGVyZSwgY2ggaXMgYSAzMi1iaXQgdW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgIGlmIChjaCA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJpbGxlZ2FsIFVuaWNvZGUgY2hhcmFjdGVyIjsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvKiBcTntuYW1lfSAqLwogICAgICAgICBjYXNlICdOJzoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAibWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIjsKICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIGxvYWQgdGhlIHVuaWNvZGUgZGF0YSBtb2R1bGUgKi8KICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlRGF0YV9DQVBTVUxFX05BTUUsIDEpOwotICAgICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byB1Y25oYXNoRXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1VuaWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcXE4gZXNjYXBlcyBub3Qgc3VwcG9ydGVkIChjYW4ndCBsb2FkIHVuaWNvZGVkYXRhIG1vZHVsZSkiCisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtZXNzYWdlID0gIm1hbGZvcm1lZCBcXE4gY2hhcmFjdGVyIGVzY2FwZSI7CiAgICAgICAgICAgICBpZiAoKnMgPT0gJ3snKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQgPSBzKzE7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQgPSArK3M7CisgICAgICAgICAgICAgICAgc2l6ZV90IG5hbWVsZW47CiAgICAgICAgICAgICAgICAgLyogbG9vayBmb3IgdGhlIGNsb3NpbmcgYnJhY2UgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoKnMgIT0gJ30nICYmIHMgPCBlbmQpCisgICAgICAgICAgICAgICAgd2hpbGUgKHMgPCBlbmQgJiYgKnMgIT0gJ30nKQogICAgICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgaWYgKHMgPiBzdGFydCAmJiBzIDwgZW5kICYmICpzID09ICd9JykgeworICAgICAgICAgICAgICAgIG5hbWVsZW4gPSBzIC0gc3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKG5hbWVsZW4gJiYgcyA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICAvKiBmb3VuZCBhIG5hbWUuICBsb29rIGl0IHVwIGluIHRoZSB1bmljb2RlIGRhdGFiYXNlICovCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAidW5rbm93biBVbmljb2RlIGNoYXJhY3RlciBuYW1lIjsKICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBpZiAocyAtIHN0YXJ0IC0gMSA8PSBJTlRfTUFYICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpKHMtc3RhcnQtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNociwgMCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0b3JlOworICAgICAgICAgICAgICAgICAgICBjaCA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLworICAgICAgICAgICAgICAgICAgICBpZiAobmFtZWxlbiA8PSBJTlRfTUFYICYmCisgICAgICAgICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpbmFtZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2gsIDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gInVua25vd24gVW5pY29kZSBjaGFyYWN0ZXIgbmFtZSI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKHMgPiBlbmQpIHsKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gIlxcIGF0IGVuZCBvZiBzdHJpbmciOwotICAgICAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgV1JJVEVDSEFSKCdcXCcpOwotICAgICAgICAgICAgICAgIFdSSVRFQ0hBUigodW5zaWduZWQgY2hhcilzWy0xXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAnXFwlYyciLCBjKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgV1JJVEVfQVNDSUlfQ0hBUignXFwnKTsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoYyk7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBjb250aW51ZTsKIAogICAgICAgZXJyb3I6CiAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7CisgICAgICAgIHdyaXRlci5taW5fbGVuZ3RoID0gZW5kIC0gcyArIHdyaXRlci5wb3M7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAmd3JpdGVyKSkKKyAgICAgICAgICAgICAgICAmd3JpdGVyKSkgewogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHdyaXRlci5taW5fbGVuZ3RoLCAxMjcpIDwgMCkgeworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisKKyN1bmRlZiBXUklURV9BU0NJSV9DSEFSCisjdW5kZWYgV1JJVEVfQ0hBUgogICAgIH0KLSN1bmRlZiBXUklURUNIQVIKIAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCi0gIHVjbmhhc2hFcnJvcjoKLSAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgIFB5RXhjX1VuaWNvZGVFcnJvciwKLSAgICAgICAgIlxcTiBlc2NhcGVzIG5vdCBzdXBwb3J0ZWQgKGNhbid0IGxvYWQgdW5pY29kZWRhdGEgbW9kdWxlKSIKLSAgICAgICAgKTsKLSAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gTlVMTDsKLQogICBvbkVycm9yOgogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CkBAIC01ODcwLDkgKzYxMTcsOSBAQAogICAgIFB5X3NzaXplX3QgaSwgbGVuOwogICAgIFB5T2JqZWN0ICpyZXByOwogICAgIGNoYXIgKnA7Ci0gICAgaW50IGtpbmQ7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOwogICAgIHZvaWQgKmRhdGE7Ci0gICAgUHlfc3NpemVfdCBleHBhbmRzaXplID0gMDsKKyAgICBQeV9zc2l6ZV90IGV4cGFuZHNpemU7CiAKICAgICAvKiBJbml0aWFsIGFsbG9jYXRpb24gaXMgYmFzZWQgb24gdGhlIGxvbmdlc3QtcG9zc2libGUgY2hhcmFjdGVyCiAgICAgICAgZXNjYXBlLgpAQCAtNTg4Niw2MCArNjEzMyw3MSBAQAogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDQ7IGJyZWFrOwotICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA2OyBicmVhazsKLSAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiBleHBhbmRzaXplID0gMTA7IGJyZWFrOwogICAgIH0KIAotICAgIGlmIChsZW4gPT0gMCkKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgfQogCi0gICAgaWYgKGxlbiA+IChQWV9TU0laRV9UX01BWCAtIDIgLSAxKSAvIGV4cGFuZHNpemUpCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICAvKiA0IGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCAxMCBieXRlcywgMiBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgNgorICAgICAgIGJ5dGVzLCBhbmQgMSBieXRlIGNoYXJhY3RlcnMgNC4gKi8KKyAgICBleHBhbmRzaXplID0ga2luZCAqIDIgKyAyOworICAgIGlmIChsZW4gPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBleHBhbmRzaXplKmxlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7Ci0gICAgaWYgKHJlcHIgPT0gTlVMTCkKKyAgICB9CisgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMiArIGV4cGFuZHNpemUgKiBsZW4gKyAxKTsKKyAgICBpZiAocmVwciA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKLQogICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKLSAgICAgICAgLyogRXNjYXBlIGJhY2tzbGFzaGVzICovCi0gICAgICAgIGlmIChjaCA9PSAnXFwnKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICAvKiBVKzAwMDAtVSswMGZmIHJhbmdlICovCisgICAgICAgIGlmIChjaCA8IDB4MTAwKSB7CisgICAgICAgICAgICBpZiAoY2ggPj0gJyAnICYmIGNoIDwgMTI3KSB7CisgICAgICAgICAgICAgICAgaWYgKGNoICE9ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogQ29weSBwcmludGFibGUgVVMgQVNDSUkgYXMtaXMgKi8KKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogRXNjYXBlIGJhY2tzbGFzaGVzICovCisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAKLSAgICAgICAgLyogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAweHh4eHh4JyAqLwotICAgICAgICBlbHNlIGlmIChjaCA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHQnKSB7CisgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgKnArKyA9ICd0JzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ24nOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xyJykgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAncic7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAyNTYpIHsKKyAgICAgICAgICAgIC8qIE1hcCBub24tcHJpbnRhYmxlIFVTIEFTQ0lJIGFuZCA4LWJpdCBjaGFyYWN0ZXJzIHRvICdceEhIJyAqLworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgKnArKyA9ICd4JzsKKyAgICAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CisgICAgICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogVSswMDAwLVUrMDBmZiByYW5nZTogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdUhISEgnICovCisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkgeworICAgICAgICAgICAgLyogVSswMTAwLVUrZmZmZiAqLwogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ3UnOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDBGXTsKQEAgLTU5NDcsMzcgKzYyMDUsMjggQEAKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOwogICAgICAgICB9CisgICAgICAgIC8qIFUrMDEwMDAwLVUrMTBmZmZmIHJhbmdlOiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDBISEhISEgnICovCisgICAgICAgIGVsc2UgewogCi0gICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCi0gICAgICAgIGVsc2UgaWYgKGNoID09ICdcdCcpIHsKKyAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCB0d28gZGlnaXRzIGFyZSB6ZXJvICovCisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUgJiYgTUFYX1VOSUNPREUgPD0gMHgxMGZmZmYpOwogICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3QnOworICAgICAgICAgICAgKnArKyA9ICdVJzsKKyAgICAgICAgICAgICpwKysgPSAnMCc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xuJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ24nOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICdyJzsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIE1hcCBub24tcHJpbnRhYmxlIFVTIEFTQ0lJIHRvICdceGhoJyAqLwotICAgICAgICBlbHNlIGlmIChjaCA8ICcgJyB8fCBjaCA+PSAweDdGKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgfQogCiAgICAgYXNzZXJ0KHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSA+IDApOwotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcHIsIHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSkgPCAwKQorICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcHIsIHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSkgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gcmVwcjsKIH0KIApAQCAtNTk4Nyw4ICs2MjM2LDEwIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOwotICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyh0bXApOwogICAgIFB5X0RFQ1JFRih0bXApOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02MDAyLDk1ICs2MjUzLDEwNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwotICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgY29uc3QgY2hhciAqZW5kOwotICAgIGNvbnN0IGNoYXIgKmJzOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgaWYgKHNpemUgPT0gMCkKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOworICAgIH0KIAogICAgIC8qIEVzY2FwZWQgc3RyaW5ncyB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nCiAgICAgICAgVW5pY29kZSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggc2l6ZSBoZXJlIGFuZCB0aGVuIHJlZHVjZSB0aGUKICAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4gKEJ1dCBkZWNvZGluZyBlcnJvcgogICAgICAgIGhhbmRsZXIgbWlnaHQgaGF2ZSB0byByZXNpemUgdGhlIHN0cmluZykgKi8KICAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7Ci0gICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBzaXplLCAxMjcpIDwgMCkgeworICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQogCiAgICAgZW5kID0gcyArIHNpemU7CiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBQeV9VQ1M0IHg7Ci0gICAgICAgIGludCBpOworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAodW5zaWduZWQgY2hhcikgKnMrKzsKKyAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgaW50IGNvdW50OworICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CisgICAgICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CisgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2U7CisKKyNkZWZpbmUgV1JJVEVfQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAoY2ggPD0gd3JpdGVyLm1heGNoYXIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCBjaCk7IFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCBjaCkgPCAwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gd2hpbGUoMCkKIAogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgIHggPSAodW5zaWduZWQgY2hhcikqcysrOwotICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGlmIChjICE9ICdcXCcgfHwgcyA+PSBlbmQpIHsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoYyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAKLSAgICAgICAgLyogXHUtZXNjYXBlcyBhcmUgb25seSBpbnRlcnByZXRlZCBpZmYgdGhlIG51bWJlciBvZiBsZWFkaW5nCi0gICAgICAgICAgIGJhY2tzbGFzaGVzIGlmIG9kZCAqLwotICAgICAgICBicyA9IHM7Ci0gICAgICAgIGZvciAoO3MgPCBlbmQ7KSB7Ci0gICAgICAgICAgICBpZiAoKnMgIT0gJ1xcJykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHggPSAodW5zaWduZWQgY2hhcikqcysrOwotICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikgKnMrKzsKKyAgICAgICAgaWYgKGMgPT0gJ3UnKSB7CisgICAgICAgICAgICBjb3VudCA9IDQ7CisgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXHVYWFhYIGVzY2FwZSI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCgocyAtIGJzKSAmIDEpID09IDAgfHwKLSAgICAgICAgICAgIHMgPj0gZW5kIHx8Ci0gICAgICAgICAgICAoKnMgIT0gJ3UnICYmICpzICE9ICdVJykpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIHdyaXRlci5wb3MtLTsKLSAgICAgICAgY291bnQgPSAqcz09J3UnID8gNCA6IDg7Ci0gICAgICAgIHMrKzsKLQotICAgICAgICAvKiBcdVhYWFggd2l0aCA0IGhleCBkaWdpdHMsIFxVeHh4eHh4eHggd2l0aCA4ICovCi0gICAgICAgIGZvciAoeCA9IDAsIGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytzKSB7Ci0gICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICBpZiAoIVB5X0lTWERJR0lUKGMpKSB7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgInJhd3VuaWNvZGVlc2NhcGUiLCAidHJ1bmNhdGVkIFxcdVhYWFgiLAotICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIGdvdG8gbmV4dEJ5dGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ID0gKHg8PDQpICYgfjB4RjsKLSAgICAgICAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykKLSAgICAgICAgICAgICAgICB4ICs9IGMgLSAnMCc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgICAgICB4ICs9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB4ICs9IDEwICsgYyAtICdBJzsKLSAgICAgICAgfQotICAgICAgICBpZiAoeCA8PSBNQVhfVU5JQ09ERSkgewotICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1UnKSB7CisgICAgICAgICAgICBjb3VudCA9IDg7CisgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXFVYWFhYWFhYWCBlc2NhcGUiOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgInJhd3VuaWNvZGVlc2NhcGUiLCAiXFxVeHh4eHh4eHggb3V0IG9mIHJhbmdlIiwKLSAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCAnXFwnKTsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoYyk7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgbmV4dEJ5dGU6Ci0gICAgICAgIDsKKyAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHMgLSAyOworCisgICAgICAgIC8qIFx1SEhISCB3aXRoIDQgaGV4IGRpZ2l0cywgXFUwMEhISEhISCB3aXRoIDggKi8KKyAgICAgICAgZm9yIChjaCA9IDA7IGNvdW50ICYmIHMgPCBlbmQ7ICsrcywgLS1jb3VudCkgeworICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOworICAgICAgICAgICAgY2ggPDw9IDQ7CisgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBjaCArPSBjIC0gJzAnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpIHsKKyAgICAgICAgICAgICAgICBjaCArPSBjIC0gKCdhJyAtIDEwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0YnKSB7CisgICAgICAgICAgICAgICAgY2ggKz0gYyAtICgnQScgLSAxMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWNvdW50KSB7CisgICAgICAgICAgICBpZiAoY2ggPD0gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lc3NhZ2UgPSAiXFxVeHh4eHh4eHggb3V0IG9mIHJhbmdlIjsKKyAgICAgICAgfQorCisgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7CisgICAgICAgIHdyaXRlci5taW5fbGVuZ3RoID0gZW5kIC0gcyArIHdyaXRlci5wb3M7CisgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCisgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKKyAgICAgICAgICAgICAgICAmd3JpdGVyKSkgeworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgd3JpdGVyLm1pbl9sZW5ndGgsIDEyNykgPCAwKSB7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKworI3VuZGVmIFdSSVRFX0NIQVIKICAgICB9CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKQEAgLTYxMDEsNiArNjM2NCw3IEBACiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gTlVMTDsKKwogfQogCiAKQEAgLTYxMDksNyArNjM3Myw2IEBACiB7CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKLSAgICBjaGFyICpxOwogICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSwgcG9zOwogICAgIGludCBraW5kOwogICAgIHZvaWQgKmRhdGE7CkBAIC02MTE5LDQzICs2MzgyLDQxIEBACiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZGF0YSwgbGVuKTsKKyAgICB9CisKICAgICAvKiA0IGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCAxMCBieXRlcywgMiBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgNgogICAgICAgIGJ5dGVzLCBhbmQgMSBieXRlIGNoYXJhY3RlcnMgNC4gKi8KICAgICBleHBhbmRzaXplID0ga2luZCAqIDIgKyAyOwogCi0gICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkKKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCisgICAgfQogICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBsZW4pOwotICAgIGlmIChyZXByID09IE5VTEwpCisgICAgaWYgKHJlcHIgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobGVuID09IDApCisgICAgfQorICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICByZXR1cm4gcmVwcjsKKyAgICB9CiAKLSAgICBwID0gcSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOworICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8IGxlbjsgcG9zKyspIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7Ci0gICAgICAgIC8qIE1hcCAzMi1iaXQgY2hhcmFjdGVycyB0byAnXFV4eHh4eHh4eCcgKi8KLSAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKLSAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CisKKyAgICAgICAgLyogVSswMDAwLVUrMDBmZiByYW5nZTogQ29weSA4LWJpdCBjaGFyYWN0ZXJzIGFzLWlzICovCisgICAgICAgIGlmIChjaCA8IDB4MTAwKSB7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwogICAgICAgICB9Ci0gICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLwotICAgICAgICBlbHNlIGlmIChjaCA+PSAyNTYpIHsKKyAgICAgICAgLyogVSswMDAwLVUrMDBmZiByYW5nZTogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdUhISEgnICovCisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkgewogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ3UnOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKQEAgLTYxNjMsMTQgKzY0MjQsMjYgQEAKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KLSAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKKyAgICAgICAgLyogVSswMTAwMDAtVSsxMGZmZmYgcmFuZ2U6IE1hcCAzMi1iaXQgY2hhcmFjdGVycyB0byAnXFUwMEhISEhISCcgKi8KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUgJiYgTUFYX1VOSUNPREUgPD0gMHgxMGZmZmYpOworICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAqcCsrID0gJ1UnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSAnMCc7CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICB9CiAgICAgfQogCi0gICAgYXNzZXJ0KHAgPiBxKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gcSkgPCAwKQorICAgIGFzc2VydChwID4gUHlCeXRlc19BU19TVFJJTkcocmVwcikpOworICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcHIsIHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSkgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gcmVwcjsKIH0KIApAQCAtNjM0OCw3ICs2NjIxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbmV3cG9zKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPbjtlbmNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIvYnl0ZXMsIGludCkgdHVwbGUiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICphcmdwYXJzZSA9ICJPbjtlbmNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIvYnl0ZXMsIGludCkgdHVwbGUiOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICBQeU9iamVjdCAqcmVzdW5pY29kZTsKQEAgLTY0MDIsMjUgKzY2NzUsMjIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX2VuY29kZV91Y3MxKFB5T2JqZWN0ICp1bmljb2RlLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsaW1pdCkKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVUNTNCBsaW1pdCkKIHsKICAgICAvKiBpbnB1dCBzdGF0ZSAqLwogICAgIFB5X3NzaXplX3QgcG9zPTAsIHNpemU7CiAgICAgaW50IGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKLSAgICAvKiBvdXRwdXQgb2JqZWN0ICovCi0gICAgUHlPYmplY3QgKnJlczsKICAgICAvKiBwb2ludGVyIGludG8gdGhlIG91dHB1dCAqLwogICAgIGNoYXIgKnN0cjsKLSAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwotICAgIFB5X3NzaXplX3QgcmVzc2l6ZTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IChsaW1pdCA9PSAyNTYpID8gImxhdGluLTEiIDogImFzY2lpIjsKICAgICBjb25zdCBjaGFyICpyZWFzb24gPSAobGltaXQgPT0gMjU2KSA/ICJvcmRpbmFsIG5vdCBpbiByYW5nZSgyNTYpIiA6ICJvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpIjsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIC8qIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgdXNlZCBmb3IgY2FjaGluZyBzdHJpbmcgY29tcGFyaXNvbnMKLSAgICAgKiAtMT1ub3QgaW5pdGlhbGl6ZWQsIDA9dW5rbm93biwgMT1zdHJpY3QsIDI9cmVwbGFjZSwgMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOworICAgIFB5T2JqZWN0ICpyZXAgPSBOVUxMOworICAgIC8qIG91dHB1dCBvYmplY3QgKi8KKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY0MzEsMTg2ICs2NzAxLDE1NyBAQAogICAgICAgIHJlcGxhY2VtZW50cywgaWYgd2UgbmVlZCBtb3JlLCB3ZSdsbCByZXNpemUgKi8KICAgICBpZiAoc2l6ZSA9PSAwKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKLSAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgIHJlc3NpemUgPSBzaXplOwogCiAgICAgd2hpbGUgKHBvcyA8IHNpemUpIHsKLSAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7CiAKICAgICAgICAgLyogY2FuIHdlIGVuY29kZSB0aGlzPyAqLwotICAgICAgICBpZiAoYzxsaW1pdCkgeworICAgICAgICBpZiAoY2ggPCBsaW1pdCkgewogICAgICAgICAgICAgLyogbm8gb3ZlcmZsb3cgY2hlY2ssIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBzcGFjZSBpcyBlbm91Z2ggKi8KLSAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKWM7CisgICAgICAgICAgICAqc3RyKysgPSAoY2hhciljaDsKICAgICAgICAgICAgICsrcG9zOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemU7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcmVwdW5pY29kZTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSwgbmV3cG9zLCByZXNwb3MsIGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvcywgaTsKICAgICAgICAgICAgIC8qIHN0YXJ0cG9zIGZvciBjb2xsZWN0aW5nIHVuZW5jb2RhYmxlIGNoYXJzICovCiAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydCA9IHBvczsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbGVuZCA9IHBvczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbGVuZCA9IGNvbGxzdGFydCArIDE7CiAgICAgICAgICAgICAvKiBmaW5kIGFsbCB1bmVjb2RhYmxlIGNoYXJhY3RlcnMgKi8KKwogICAgICAgICAgICAgd2hpbGUgKChjb2xsZW5kIDwgc2l6ZSkgJiYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGNvbGxlbmQpID49IGxpbWl0KSkKICAgICAgICAgICAgICAgICArK2NvbGxlbmQ7CisKKyAgICAgICAgICAgIC8qIE9ubHkgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgaWYgaXQncyBub3QgdGhlIGxhc3Qgd3JpdGUgKi8KKyAgICAgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAoY29sbGVuZCA8IHNpemUpOworCiAgICAgICAgICAgICAvKiBjYWNoZSBjYWxsYmFjayBuYW1lIGxvb2t1cCAoaWYgbm90IGRvbmUgeWV0LCBpLmUuIGl0J3MgdGhlIGZpcnN0IGVycm9yKSAqLwotICAgICAgICAgICAgaWYgKGtub3duX2Vycm9ySGFuZGxlcj09LTEpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGVycm9ycz09TlVMTCkgfHwgKCFzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAxOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAyOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDM7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSA0OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN3aXRjaCAoa25vd25fZXJyb3JIYW5kbGVyKSB7Ci0gICAgICAgICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLworICAgICAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICAgICAgICAgZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikgeworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfU1RSSUNUOgogICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCwgcmVhc29uKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoY29sbHN0YXJ0KysgPCBjb2xsZW5kKQotICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAnPyc7IC8qIGZhbGwgdGhyb3VnaCAqLwotICAgICAgICAgICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgICAgICAgICBtZW1zZXQoc3RyLCAnPycsIGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIHN0ciArPSAoY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoIGlnbm9yZSBlcnJvciBoYW5kbGVyICovCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CiAgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvczsKLSAgICAgICAgICAgICAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLwotICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaW5jcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoIDwgMTApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMisxKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrMisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMiszKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMis0KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNSsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMis2KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzcrMTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gUFlfU1NJWkVfVF9NQVggLSBpbmNyKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplICs9IGluY3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIChzaXplIC0gY29sbGVuZCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplICs9IHNpemUgLSBjb2xsZW5kOwotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiByZXNzaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXNzaXplIDw9IFBZX1NTSVpFX1RfTUFYLzIgJiYgcmVxdWlyZWRzaXplIDwgMipyZXNzaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipyZXNzaXplOwotICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXMsIHJlcXVpcmVkc2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcykgKyByZXNwb3M7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3NpemUgPSByZXF1aXJlZHNpemU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICovCi0gICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCAmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOwotICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwgfHwgKFB5VW5pY29kZV9DaGVjayhyZXB1bmljb2RlKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkpCisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0JBQ0tTTEFTSFJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IChjb2xsZW5kIC0gY29sbHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBzdHIgPSBiYWNrc2xhc2hyZXBsYWNlKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCk7CisgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwdW5pY29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogRGlyZWN0bHkgY29weSBieXRlcyByZXN1bHQgdG8gb3V0cHV0LiAqLwotICAgICAgICAgICAgICAgICAgICByZXBzaXplID0gUHlCeXRlc19TaXplKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVwc2l6ZSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1ha2Ugcm9vbSBmb3IgYWxsIGFkZGl0aW9uYWwgYnl0ZXMuICovCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3NpemUgPiBQWV9TU0laRV9UX01BWCAtIHJlcHNpemUgLSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXMsIHJlc3NpemUrcmVwc2l6ZS0xKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSByZXBzaXplLTE7CisgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IChjb2xsZW5kIC0gY29sbHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBzdHIgPSB4bWxjaGFycmVmcmVwbGFjZSgmd3JpdGVyLCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgY29sbHN0YXJ0LCBjb2xsZW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CisgICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA8IDB4ZGM4MCB8fCAweGRjZmYgPCBjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogTm90IGEgVVRGLThiIHN1cnJvZ2F0ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHN0ciwgUHlCeXRlc19Bc1N0cmluZyhyZXB1bmljb2RlKSwgcmVwc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSByZXBzaXplOwotICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXdwb3M7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpKGNoIC0gMHhkYzAwKTsKKyAgICAgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpID49IGNvbGxlbmQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBuZWVkIG1vcmUgc3BhY2U/IChhdCBsZWFzdCBlbm91Z2ggZm9yIHdoYXQgd2UKLSAgICAgICAgICAgICAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLCBzbwotICAgICAgICAgICAgICAgICAgIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UgZm9yIGVuY29kYWJsZSBjaGFyYWN0ZXJzKSAqLwotICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvczsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSByZXBzaXplOwotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIChzaXplIC0gY29sbGVuZCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplICs9IHNpemUgLSBjb2xsZW5kOwotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiByZXNzaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXNzaXplIDw9IFBZX1NTSVpFX1RfTUFYLzIgJiYgcmVxdWlyZWRzaXplIDwgMipyZXNzaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipyZXNzaXplOwotICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXMsIHJlcXVpcmVkc2l6ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBjb2xsc3RhcnQgPSBwb3M7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGNvbGxzdGFydCAhPSBjb2xsZW5kKTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsYmFjayB0byBnZW5lcmFsIGVycm9yIGhhbmRsaW5nICovCisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgJmV4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOworICAgICAgICAgICAgICAgIGlmIChyZXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IDE7CisKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIERpcmVjdGx5IGNvcHkgYnl0ZXMgcmVzdWx0IHRvIG91dHB1dC4gKi8KKyAgICAgICAgICAgICAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHJlcCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKSArIHJlc3BvczsKLSAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgdGhlcmUgaXMgYW55dGhpbmcgdW5lbmNvZGFibGUgaW4gdGhlIHJlcGxhY2VtZW50Ci0gICAgICAgICAgICAgICAgICAgYW5kIGNvcHkgaXQgdG8gdGhlIG91dHB1dCAqLwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IHJlcHNpemUtLT4wOyArK2ksICsrc3RyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcHVuaWNvZGUsIGkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYyA+PSBsaW1pdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLCBwb3MrMSwgcmVhc29uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhyZXApKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcCkgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkocmVwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoOiBhbGwgY2hhcmFjdGVycyBhcmUgc21hbGxlciB0aGFuIGxpbWl0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQobGltaXQgPj0gMTI4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZXApID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShyZXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAqc3RyID0gKGNoYXIpYzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOworCisgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHN0ciwgcmVwc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiB0aGVyZSBpcyBhbnl0aGluZyB1bmVuY29kYWJsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50IGFuZCBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IHJlcHNpemUtLT4wOyArK2ksICsrc3RyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcCwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID49IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLCBwb3MrMSwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RyID0gKGNoYXIpY2g7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUihyZXApOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiBvdmVyYWxsb2NhdGlvbiB3YXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0IGl0IHdhcyB0aGUgbGFzdAorICAgICAgICAgICAgICAgd3JpdGUuIE90aGVyd2lzZSwgd2UgbWlzc2VkIGFuIG9wdGltaXphdGlvbiAqLworICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5vdmVyYWxsb2NhdGUgfHwgcG9zID09IHNpemUpOwogICAgICAgICB9CiAgICAgfQotICAgIC8qIFJlc2l6ZSBpZiB3ZSBhbGxvY2F0ZWQgdG8gbXVjaCAqLwotICAgIHNpemUgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgIGlmIChzaXplIDwgcmVzc2l6ZSkgeyAvKiBJZiB0aGlzIGZhbGxzIHJlcyB3aWxsIGJlIE5VTEwgKi8KLSAgICAgICAgYXNzZXJ0KHNpemUgPj0gMCk7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgc2l6ZSkgPCAwKQotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgIH0KIAotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIHJlczsKLQotICBvdmVyZmxvdzoKLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBhIFB5dGhvbiBzdHJpbmciKTsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHN0cik7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHJlcyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYocmVwKTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTY2NzAsOCArNjkxMSw5IEBACiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKICAgICBjb25zdCBjaGFyICplOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOwogCiAgICAgaWYgKHNpemUgPT0gMCkKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CkBAIC02NzAwLDEyICs2OTQyLDQyIEBACiAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLnBvcywgYyk7CiAgICAgICAgICAgICB3cml0ZXIucG9zKys7CiAgICAgICAgICAgICArK3M7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKKworICAgICAgICAvKiBieXRlIG91dHNpemUgcmFuZ2UgMHgwMC4uMHg3ZjogY2FsbCB0aGUgZXJyb3IgaGFuZGxlciAqLworCisgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9VTktOT1dOKQorICAgICAgICAgICAgZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisKKyAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKQorICAgICAgICB7CisgICAgICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CisgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgICAgIC8qIEZhc3QtcGF0aDogdGhlIGVycm9yIGhhbmRsZXIgb25seSB3cml0ZXMgb25lIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgIGJ1dCB3ZSBtYXkgc3dpdGNoIHRvIFVDUzIgYXQgdGhlIGZpcnN0IHdyaXRlICovCisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgmd3JpdGVyLCBQeVVuaWNvZGVfMkJZVEVfS0lORCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGtpbmQgPSB3cml0ZXIua2luZDsKKyAgICAgICAgICAgIGRhdGEgPSB3cml0ZXIuZGF0YTsKKworICAgICAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1JFUExBQ0UpCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIHdyaXRlci5wb3MsIDB4ZmZmZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIHdyaXRlci5wb3MsIGMgKyAweGRjMDApOworICAgICAgICAgICAgd3JpdGVyLnBvcysrOworICAgICAgICAgICAgKytzOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgorICAgICAgICAgICAgKytzOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAotICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9yX2hhbmRsZXJfb2JqLAogICAgICAgICAgICAgICAgICAgICAiYXNjaWkiLCAib3JkaW5hbCBub3QgaW4gcmFuZ2UoMTI4KSIsCiAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKICAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCkBAIC02NzE0LDEzICs2OTg2LDEzIEBACiAgICAgICAgICAgICBkYXRhID0gd3JpdGVyLmRhdGE7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgb25FcnJvcjoKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTY3NjMsNyArNzAzNSw3IEBACiAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBOVUxMKTsKIH0KIAotI2lmZGVmIEhBVkVfTUJDUworI2lmZGVmIE1TX1dJTkRPV1MKIAogLyogLS0tIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTY3NzUsNyArNzA0Nyw3IEBACiAjICBkZWZpbmUgV0NfRVJSX0lOVkFMSURfQ0hBUlMgMHgwMDgwCiAjZW5kaWYKIAotc3RhdGljIGNoYXIqCitzdGF0aWMgY29uc3QgY2hhcioKIGNvZGVfcGFnZV9uYW1lKFVJTlQgY29kZV9wYWdlLCBQeU9iamVjdCAqKm9iaikKIHsKICAgICAqb2JqID0gTlVMTDsKQEAgLTY4ODMsNyArNzE1NSw3IEBACiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7Ci0gICAgY2hhciAqZW5jb2Rpbmc7CisgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAgICAgRFdPUkQgZXJyOwogICAgIGludCByZXQgPSAtMTsKIApAQCAtNzExOSw3ICs3MzkxLDYgQEAKICAgICBCT09MIHVzZWREZWZhdWx0Q2hhciA9IEZBTFNFOwogICAgIEJPT0wgKnB1c2VkRGVmYXVsdENoYXIgPSAmdXNlZERlZmF1bHRDaGFyOwogICAgIGludCBvdXRzaXplOwotICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIHdjaGFyX3QgKnA7CiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZW5jb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UsIE5VTEwpOwpAQCAtNzIyOCw3ICs3NDk5LDcgQEAKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICBQeU9iamVjdCAqZW5jb2Rpbmdfb2JqID0gTlVMTDsKLSAgICBjaGFyICplbmNvZGluZzsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZzsKICAgICBQeV9zc2l6ZV90IG5ld3BvcywgbmV3b3V0c2l6ZTsKICAgICBQeU9iamVjdCAqcmVwOwogICAgIGludCByZXQgPSAtMTsKQEAgLTc0ODMsNyArNzc1NCw3IEBACiAKICN1bmRlZiBORUVEX1JFVFJZCiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC04MDg2LDcgKzgzNTcsNyBAQAogY2hhcm1hcF9lbmNvZGluZ19lcnJvcigKICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqaW5wb3MsIFB5T2JqZWN0ICptYXBwaW5nLAogICAgIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgIGludCAqa25vd25fZXJyb3JIYW5kbGVyLCBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwgY29uc3QgY2hhciAqZXJyb3JzLAorICAgIF9QeV9lcnJvcl9oYW5kbGVyICplcnJvcl9oYW5kbGVyLCBQeU9iamVjdCAqKmVycm9yX2hhbmRsZXJfb2JqLCBjb25zdCBjaGFyICplcnJvcnMsCiAgICAgUHlPYmplY3QgKipyZXMsIFB5X3NzaXplX3QgKnJlc3BvcykKIHsKICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7IC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwpAQCAtODEzMywyMyArODQwNCwxNSBAQAogICAgIH0KICAgICAvKiBjYWNoZSBjYWxsYmFjayBuYW1lIGxvb2t1cAogICAgICAqIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCi0gICAgaWYgKCprbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7Ci0gICAgICAgIGlmICgoZXJyb3JzPT1OVUxMKSB8fCAoIXN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSkpCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gMTsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikpCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gMjsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAzOwotICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInhtbGNoYXJyZWZyZXBsYWNlIikpCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gNDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDA7Ci0gICAgfQotICAgIHN3aXRjaCAoKmtub3duX2Vycm9ySGFuZGxlcikgewotICAgIGNhc2UgMTogLyogc3RyaWN0ICovCisgICAgaWYgKCplcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9VTktOT1dOKQorICAgICAgICAqZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisKKyAgICBzd2l0Y2ggKCplcnJvcl9oYW5kbGVyKSB7CisgICAgY2FzZSBfUHlfRVJST1JfU1RSSUNUOgogICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLworCisgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKICAgICAgICAgZm9yIChjb2xscG9zID0gY29sbHN0YXJ0cG9zOyBjb2xscG9zPGNvbGxlbmRwb3M7ICsrY29sbHBvcykgewogICAgICAgICAgICAgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KCc/JywgbWFwcGluZywgcmVzLCByZXNwb3MpOwogICAgICAgICAgICAgaWYgKHg9PWVuY19FWENFUFRJT04pIHsKQEAgLTgxNjEsMTAgKzg0MjQsMTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLworICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKICAgICAgICAgKmlucG9zID0gY29sbGVuZHBvczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0OiAvKiB4bWxjaGFycmVmcmVwbGFjZSAqLworCisgICAgY2FzZSBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U6CiAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KICAgICAgICAgZm9yIChjb2xscG9zID0gY29sbHN0YXJ0cG9zOyBjb2xscG9zIDwgY29sbGVuZHBvczsgKytjb2xscG9zKSB7CiAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsyKzI5KzErMV07CkBAIC04MTgyLDggKzg0NDYsOSBAQAogICAgICAgICB9CiAgICAgICAgICppbnBvcyA9IGNvbGxlbmRwb3M7CiAgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgZXJyb3JIYW5kbGVyLAorICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCBlcnJvcl9oYW5kbGVyX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsIGV4Y2VwdGlvbk9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgJm5ld3Bvcyk7CiAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCkBAIC04MjQ2LDEyICs4NTExLDkgQEAKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KICAgICBQeV9zc2l6ZV90IHJlc3BvcyA9IDA7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICAvKiB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIGlzIHVzZWQgZm9yIGNhY2hpbmcgc3RyaW5nIGNvbXBhcmlzb25zCi0gICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsCi0gICAgICogMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOwogICAgIHZvaWQgKmRhdGE7CiAgICAgaW50IGtpbmQ7CiAKQEAgLTgyODIsNyArODU0NCw3IEBACiAgICAgICAgIGlmICh4PT1lbmNfRkFJTEVEKSB7IC8qIHVuZW5jb2RhYmxlIGNoYXJhY3RlciAqLwogICAgICAgICAgICAgaWYgKGNoYXJtYXBfZW5jb2RpbmdfZXJyb3IodW5pY29kZSwgJmlucG9zLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrbm93bl9lcnJvckhhbmRsZXIsICZlcnJvckhhbmRsZXIsIGVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcl9oYW5kbGVyLCAmZXJyb3JfaGFuZGxlcl9vYmosIGVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXMsICZyZXNwb3MpKSB7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQpAQCAtODI5OCwxMyArODU2MCwxMyBAQAogICAgICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICByZXR1cm4gcmVzOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRihyZXMpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTgzNzEsNyArODYzMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKLSAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO3RyYW5zbGF0aW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3BhcnNlID0gIk8hbjt0cmFuc2xhdGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCiAgICAgUHlfc3NpemVfdCBpX25ld3BvczsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CkBAIC04NjI4LDcgKzg4OTAsNyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLVB5T2JqZWN0ICoKK3N0YXRpYyBQeU9iamVjdCAqCiBfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoUHlPYmplY3QgKmlucHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKQEAgLTg2NTcsMTAgKzg5MTksOCBAQAogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpbnB1dCk7CiAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKIAotICAgIGlmIChzaXplID09IDApIHsKLSAgICAgICAgUHlfSU5DUkVGKGlucHV0KTsKLSAgICAgICAgcmV0dXJuIGlucHV0OwotICAgIH0KKyAgICBpZiAoc2l6ZSA9PSAwKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PYmplY3QoaW5wdXQpOwogCiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSAxOjEgdHJhbnNsYXRpb24gd2l0aG91dAogICAgICAgIHJlcGxhY2VtZW50cywgaWYgd2UgbmVlZCBtb3JlLCB3ZSdsbCByZXNpemUgKi8KQEAgLTg3NzEsMTQgKzkwMzEsOSBAQAogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKTsKIH0KIAogc3RhdGljIFB5X1VDUzQKQEAgLTg5NjAsOSArOTIxNSwxMCBAQAogICAgIH0KIAogc3RhdGljIFB5X3NzaXplX3QKLWFueV9maW5kX3NsaWNlKGludCBkaXJlY3Rpb24sIFB5T2JqZWN0KiBzMSwgUHlPYmplY3QqIHMyLAorYW55X2ZpbmRfc2xpY2UoUHlPYmplY3QqIHMxLCBQeU9iamVjdCogczIsCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKQEAgLTkxMzEsNTQgKzkzODcsMzUgQEAKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCkKIHsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLSAgICBQeU9iamVjdCogc3RyX29iajsKLSAgICBQeU9iamVjdCogc3ViX29iajsKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKCFzdHJfb2JqKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzdWJzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHN1Yl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJzdHIpOwotICAgIGlmICghc3ViX29iaikgewotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJfb2JqKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKLSAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwotICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViX29iaik7Ci0gICAgaWYgKGtpbmQxIDwga2luZDIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogCi0gICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOwotICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJfb2JqKTsKKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyKTsKICAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KIAotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViX29iaik7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cik7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7Ci0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJfb2JqLCBraW5kMSk7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHIsIGtpbmQxKTsKICAgICAgICAgaWYgKCFidWYyKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgotICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cl9vYmopICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJfb2JqKSkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHIpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJzdHIpKQogICAgICAgICAgICAgcmVzdWx0ID0gYXNjaWlsaWJfY291bnQoCiAgICAgICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKICAgICAgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWApAQCAtOTIwNSwxNiArOTQ0MiwxMSBAQAogICAgICAgICBhc3NlcnQoMCk7IHJlc3VsdCA9IDA7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLQogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiAgIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKICAgICByZXR1cm4gLTE7CkBAIC05MjIyLDM1ICs5NDU0LDE1IEBACiAKIFB5X3NzaXplX3QKIFB5VW5pY29kZV9GaW5kKFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICBQeU9iamVjdCAqc3ViLAorICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmICghc3RyKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzdWJzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIC0yOwotICAgIHN1YiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Yik7Ci0gICAgaWYgKCFzdWIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiAtMjsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWIpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIC0yOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKGRpcmVjdGlvbiwKLSAgICAgICAgc3RyLCBzdWIsIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKLQotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIFB5X0RFQ1JFRihzdWIpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYW55X2ZpbmRfc2xpY2Uoc3RyLCBzdWJzdHIsIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiB9CiAKIFB5X3NzaXplX3QKQEAgLTkzNTMsMjIgKzk1NjUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCiAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc3Vic3RyKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBzdWJzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJzdHIpOwotICAgIGlmIChzdWJzdHIgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KIAotICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzdHIsIHN1YnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICBQeV9ERUNSRUYoc3Vic3RyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiB0YWlsbWF0Y2goc3RyLCBzdWJzdHIsIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiB9CiAKIC8qIEFwcGx5IGZpeGZjdCBmaWx0ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0IHNlbGYgYW5kIHJldHVybiBhCkBAIC05NjcwLDIwICs5ODcwLDEwIEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfSm9pbihQeU9iamVjdCAqc2VwYXJhdG9yLCBQeU9iamVjdCAqc2VxKQogewotICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgc2VwbGVuOwotICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCi0gICAgUHlPYmplY3QgKmZzZXE7ICAgICAgICAgIC8qIFB5U2VxdWVuY2VfRmFzdChzZXEpICovCi0gICAgUHlfc3NpemVfdCBzZXFsZW47ICAgICAgIC8qIGxlbihmc2VxKSAtLSBudW1iZXIgb2YgaXRlbXMgaW4gc2VxdWVuY2UgKi8KKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICpmc2VxOworICAgIFB5X3NzaXplX3Qgc2VxbGVuOwogICAgIFB5T2JqZWN0ICoqaXRlbXM7Ci0gICAgUHlPYmplY3QgKml0ZW07Ci0gICAgUHlfc3NpemVfdCBzeiwgaSwgcmVzX29mZnNldDsKLSAgICBQeV9VQ1M0IG1heGNoYXI7Ci0gICAgUHlfVUNTNCBpdGVtX21heGNoYXI7Ci0gICAgaW50IHVzZV9tZW1jcHk7Ci0gICAgdW5zaWduZWQgY2hhciAqcmVzX2RhdGEgPSBOVUxMLCAqc2VwX2RhdGEgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpsYXN0X29iajsKLSAgICB1bnNpZ25lZCBpbnQga2luZCA9IDA7CiAKICAgICBmc2VxID0gUHlTZXF1ZW5jZV9GYXN0KHNlcSwgImNhbiBvbmx5IGpvaW4gYW4gaXRlcmFibGUiKTsKICAgICBpZiAoZnNlcSA9PSBOVUxMKSB7CkBAIC05Njk0LDIxICs5ODg0LDM5IEBACiAgICAgICogc28gd2UgYXJlIHN1cmUgdGhhdCBmc2VxIHdvbid0IGJlIG11dGF0ZWQuCiAgICAgICovCiAKKyAgICBpdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9JVEVNUyhmc2VxKTsKICAgICBzZXFsZW4gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZnNlcSk7CisgICAgcmVzID0gX1B5VW5pY29kZV9Kb2luQXJyYXkoc2VwYXJhdG9yLCBpdGVtcywgc2VxbGVuKTsKKyAgICBQeV9ERUNSRUYoZnNlcSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlPYmplY3QgKgorX1B5VW5pY29kZV9Kb2luQXJyYXkoUHlPYmplY3QgKnNlcGFyYXRvciwgUHlPYmplY3QgKippdGVtcywgUHlfc3NpemVfdCBzZXFsZW4pCit7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7IC8qIHRoZSByZXN1bHQgKi8KKyAgICBQeU9iamVjdCAqc2VwID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHNlcGxlbjsKKyAgICBQeU9iamVjdCAqaXRlbTsKKyAgICBQeV9zc2l6ZV90IHN6LCBpLCByZXNfb2Zmc2V0OworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBQeV9VQ1M0IGl0ZW1fbWF4Y2hhcjsKKyAgICBpbnQgdXNlX21lbWNweTsKKyAgICB1bnNpZ25lZCBjaGFyICpyZXNfZGF0YSA9IE5VTEwsICpzZXBfZGF0YSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxhc3Rfb2JqOworICAgIHVuc2lnbmVkIGludCBraW5kID0gMDsKKwogICAgIC8qIElmIGVtcHR5IHNlcXVlbmNlLCByZXR1cm4gdSIiLiAqLwogICAgIGlmIChzZXFsZW4gPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwogICAgIH0KIAogICAgIC8qIElmIHNpbmdsZXRvbiBzZXF1ZW5jZSB3aXRoIGFuIGV4YWN0IFVuaWNvZGUsIHJldHVybiB0aGF0LiAqLwogICAgIGxhc3Rfb2JqID0gTlVMTDsKLSAgICBpdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9JVEVNUyhmc2VxKTsKICAgICBpZiAoc2VxbGVuID09IDEpIHsKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGl0ZW1zWzBdKSkgewogICAgICAgICAgICAgcmVzID0gaXRlbXNbMF07CiAgICAgICAgICAgICBQeV9JTkNSRUYocmVzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KICAgICAgICAgc2VwbGVuID0gMDsKQEAgLTk4MDYsNyArMTAwMTQsNyBAQAogCiAgICAgICAgICAgICAvKiBDb3B5IGl0ZW0sIGFuZCBtYXliZSB0aGUgc2VwYXJhdG9yLiAqLwogICAgICAgICAgICAgaWYgKGkgJiYgc2VwbGVuICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocmVzX2RhdGEsCisgICAgICAgICAgICAgICAgbWVtY3B5KHJlc19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCAqIHNlcGxlbik7CiAgICAgICAgICAgICAgICAgcmVzX2RhdGEgKz0ga2luZCAqIHNlcGxlbjsKQEAgLTk4MTQsNyArMTAwMjIsNyBAQAogCiAgICAgICAgICAgICBpdGVtbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaXRlbSk7CiAgICAgICAgICAgICBpZiAoaXRlbWxlbiAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc19kYXRhLAorICAgICAgICAgICAgICAgIG1lbWNweShyZXNfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoaXRlbSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBpdGVtbGVuKTsKICAgICAgICAgICAgICAgICByZXNfZGF0YSArPSBraW5kICogaXRlbWxlbjsKQEAgLTk4NDMsMTMgKzEwMDUxLDExIEBACiAgICAgICAgIGFzc2VydChyZXNfb2Zmc2V0ID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcykpOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihmc2VxKTsKICAgICBQeV9YREVDUkVGKHNlcCk7CiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKICAgICByZXR1cm4gcmVzOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKGZzZXEpOwogICAgIFB5X1hERUNSRUYoc2VwKTsKICAgICBQeV9YREVDUkVGKHJlcyk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC05OTc0LDEzICsxMDE4MCw4IEBACiB7CiAgICAgUHlPYmplY3QgKmxpc3Q7CiAKLSAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJpbmcpOwotICAgIGlmIChzdHJpbmcgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyaW5nKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzdHJpbmcpKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKQEAgLTEwMDA3LDcgKzEwMjA4LDYgQEAKICAgICAgICAgYXNzZXJ0KDApOwogICAgICAgICBsaXN0ID0gMDsKICAgICB9Ci0gICAgUHlfREVDUkVGKHN0cmluZyk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKQEAgLTEwNTY4LDI4ICsxMDc2OCwyNyBAQAogfQogCiAKLS8qIEFyZ3VtZW50IGNvbnZlcnRlci4gIENvZXJjZXMgdG8gYSBzaW5nbGUgdW5pY29kZSBjaGFyYWN0ZXIgKi8KKy8qIEFyZ3VtZW50IGNvbnZlcnRlci4gQWNjZXB0cyBhIHNpbmdsZSBVbmljb2RlIGNoYXJhY3Rlci4gKi8KIAogc3RhdGljIGludAogY29udmVydF91YyhQeU9iamVjdCAqb2JqLCB2b2lkICphZGRyKQogewogICAgIFB5X1VDUzQgKmZpbGxjaGFybG9jID0gKFB5X1VDUzQgKilhZGRyOwotICAgIFB5T2JqZWN0ICp1bmlvYmo7CiAKLSAgICB1bmlvYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOwotICAgIGlmICh1bmlvYmogPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBjYW5ub3QgYmUgY29udmVydGVkIHRvIFVuaWNvZGUiKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIG11c3QgYmUgYSB1bmljb2RlIGNoYXJhY3RlciwgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjEwMHMiLCBQeV9UWVBFKG9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaW9iaikgIT0gMSkgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA8IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopICE9IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgbXVzdCBiZSBleGFjdGx5IG9uZSBjaGFyYWN0ZXIgbG9uZyIpOwotICAgICAgICBQeV9ERUNSRUYodW5pb2JqKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgICpmaWxsY2hhcmxvYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pb2JqLCAwKTsKLSAgICBQeV9ERUNSRUYodW5pb2JqKTsKKyAgICAqZmlsbGNoYXJsb2MgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iaiwgMCk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTEwNzM5LDcgKzEwOTM4LDcgQEAKICN1bmRlZiBDT01QQVJFCiB9CiAKLVB5X0xPQ0FMKGludCkKK3N0YXRpYyBpbnQKIHVuaWNvZGVfY29tcGFyZV9lcShQeU9iamVjdCAqc3RyMSwgUHlPYmplY3QgKnN0cjIpCiB7CiAgICAgaW50IGtpbmQ7CkBAIC0xMDkwNSw1OSArMTExMDQsNDkgQEAKIH0KIAogaW50Ci1QeVVuaWNvZGVfQ29udGFpbnMoUHlPYmplY3QgKmNvbnRhaW5lciwgUHlPYmplY3QgKmVsZW1lbnQpCitfUHlVbmljb2RlX0VRKFB5T2JqZWN0ICphYSwgUHlPYmplY3QgKmJiKQogewotICAgIFB5T2JqZWN0ICpzdHIsICpzdWI7CisgICAgcmV0dXJuIHVuaWNvZGVfZXEoYWEsIGJiKTsKK30KKworaW50CitQeVVuaWNvZGVfQ29udGFpbnMoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0cikKK3sKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBpbnQgcmVzdWx0OwogCi0gICAgLyogQ29lcmNlIHRoZSB0d28gYXJndW1lbnRzICovCi0gICAgc3ViID0gUHlVbmljb2RlX0Zyb21PYmplY3QoZWxlbWVudCk7Ci0gICAgaWYgKCFzdWIpIHsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJzdHIpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJ2luIDxzdHJpbmc+JyByZXF1aXJlcyBzdHJpbmcgYXMgbGVmdCBvcGVyYW5kLCBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAiJ2luIDxzdHJpbmc+JyByZXF1aXJlcyBzdHJpbmcgYXMgbGVmdCBvcGVyYW5kLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChjb250YWluZXIpOwotICAgIGlmICghc3RyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKLSAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yik7Ci0gICAgaWYgKGtpbmQxIDwga2luZDIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwotICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWIpOwotICAgIGlmIChsZW4xIDwgbGVuMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cik7CisgICAgaWYgKGxlbjEgPCBsZW4yKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cik7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cik7CiAgICAgaWYgKGxlbjIgPT0gMSkgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZDIsIGJ1ZjIsIDApOwogICAgICAgICByZXN1bHQgPSBmaW5kY2hhcigoY29uc3QgY2hhciAqKWJ1ZjEsIGtpbmQxLCBsZW4xLCBjaCwgMSkgIT0gLTE7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7Ci0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWIsIGtpbmQxKTsKLSAgICAgICAgaWYgKCFidWYyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKQEAgLTEwOTc1LDkgKzExMTY0LDYgQEAKICAgICAgICAgYXNzZXJ0KDApOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIFB5X0RFQ1JFRihzdWIpOwotCiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCkBAIC0xMDk4OSw1NiArMTExNzUsNDAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Db25jYXQoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBQeU9iamVjdCAqdSA9IE5VTEwsICp2ID0gTlVMTCwgKnc7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeV9VQ1M0IG1heGNoYXIsIG1heGNoYXIyOwotICAgIFB5X3NzaXplX3QgdV9sZW4sIHZfbGVuLCBuZXdfbGVuOworICAgIFB5X3NzaXplX3QgbGVmdF9sZW4sIHJpZ2h0X2xlbiwgbmV3X2xlbjsKIAotICAgIC8qIENvZXJjZSB0aGUgdHdvIGFyZ3VtZW50cyAqLwotICAgIHUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChsZWZ0KTsKLSAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgdiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHJpZ2h0KTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgaWYgKGVuc3VyZV91bmljb2RlKGxlZnQpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShyaWdodCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFNob3J0Y3V0cyAqLwotICAgIGlmICh2ID09IHVuaWNvZGVfZW1wdHkpIHsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICByZXR1cm4gdTsKLSAgICB9Ci0gICAgaWYgKHUgPT0gdW5pY29kZV9lbXB0eSkgewotICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KKyAgICBpZiAobGVmdCA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PYmplY3QocmlnaHQpOworICAgIGlmIChyaWdodCA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PYmplY3QobGVmdCk7CiAKLSAgICB1X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpOwotICAgIHZfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodik7Ci0gICAgaWYgKHVfbGVuID4gUFlfU1NJWkVfVF9NQVggLSB2X2xlbikgeworICAgIGxlZnRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobGVmdCk7CisgICAgcmlnaHRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmlnaHQpOworICAgIGlmIChsZWZ0X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC0gcmlnaHRfbGVuKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgYXJlIHRvbyBsYXJnZSB0byBjb25jYXQiKTsKLSAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbmV3X2xlbiA9IHVfbGVuICsgdl9sZW47CisgICAgbmV3X2xlbiA9IGxlZnRfbGVuICsgcmlnaHRfbGVuOwogCi0gICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1KTsKLSAgICBtYXhjaGFyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh2KTsKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGxlZnQpOworICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHJpZ2h0KTsKICAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIG1heGNoYXIyKTsKIAogICAgIC8qIENvbmNhdCB0aGUgdHdvIFVuaWNvZGUgc3RyaW5ncyAqLwotICAgIHcgPSBQeVVuaWNvZGVfTmV3KG5ld19sZW4sIG1heGNoYXIpOwotICAgIGlmICh3ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3LCAwLCB1LCAwLCB1X2xlbik7Ci0gICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModywgdV9sZW4sIHYsIDAsIHZfbGVuKTsKLSAgICBQeV9ERUNSRUYodSk7Ci0gICAgUHlfREVDUkVGKHYpOwotICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodywgMSkpOwotICAgIHJldHVybiB3OwotCi0gIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRih1KTsKLSAgICBQeV9YREVDUkVGKHYpOwotICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9OZXcobmV3X2xlbiwgbWF4Y2hhcik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXN1bHQsIDAsIGxlZnQsIDAsIGxlZnRfbGVuKTsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXN1bHQsIGxlZnRfbGVuLCByaWdodCwgMCwgcmlnaHRfbGVuKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlc3VsdCwgMSkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQKQEAgLTExMTI5LDYgKzExMjk5LDI1IEBACiAgICAgUHlfWERFQ1JFRihyaWdodCk7CiB9CiAKKy8qCitXcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgZW5zdXJlcyB0aGF0IHRoZQorZmlyc3QgYXJndW1lbnQgaXMgYSB1bmljb2RlIG9iamVjdC4KKyovCisKK3N0YXRpYyBpbmxpbmUgaW50CitwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vic3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCit7CisgICAgaWYoc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgc3Vic3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKSB7CisgICAgICAgIGlmIChlbnN1cmVfdW5pY29kZSgqc3Vic3RyaW5nKSA8IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBQeURvY19TVFJWQVIoY291bnRfX2RvY19fLAogICAgICAgICAgICAgICJTLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAogXG5cCkBAIC0xMTE0NywzMSArMTEzMzYsMjYgQEAKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGlyZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImNvdW50IiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiY291bnQiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOwotICAgIGlmIChraW5kMSA8IGtpbmQyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSA8IGtpbmQyKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwotICAgIH0KKwogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKICAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7Ci0gICAgfQorCiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewogICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kMSk7Ci0gICAgICAgIGlmICghYnVmMikgewotICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIGlmICghYnVmMikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgfQogICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgpAQCAtMTEyMDEsOCArMTEzODUsNiBAQAogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTEzMzYsMjIgKzExNTE4LDEzIEBACiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJmaW5kIiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiZmluZCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwotCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2Uoc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAxKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE0MjQsMjIgKzExNTk3LDEzIEBACiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImluZGV4IiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKDEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIDEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTk1Myw3ICsxMjExNyw3IEBACiAjZGVmaW5lIEJPVEhTVFJJUCAyCiAKIC8qIEFycmF5cyBpbmRleGVkIGJ5IGFib3ZlICovCi1zdGF0aWMgY29uc3QgY2hhciAqc3RyaXBmb3JtYXRbXSA9IHsifE86bHN0cmlwIiwgInxPOnJzdHJpcCIsICJ8TzpzdHJpcCJ9Oworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzdHJpcGZvcm1hdFtdID0geyJ8Tzpsc3RyaXAiLCAifE86cnN0cmlwIiwgInxPOnN0cmlwIn07CiAKICNkZWZpbmUgU1RSSVBOQU1FKGkpIChzdHJpcGZvcm1hdFtpXSszKQogCkBAIC0xMjIzNCwxMSArMTIzOTgsMTEgQEAKICAgICAgICAgUHlfc3NpemVfdCBkb25lID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKICAgICAgICAgY29uc3QgUHlfc3NpemVfdCBjaGFyX3NpemUgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgICAgICBjaGFyICp0byA9IChjaGFyICopIFB5VW5pY29kZV9EQVRBKHUpOwotICAgICAgICBQeV9NRU1DUFkodG8sIFB5VW5pY29kZV9EQVRBKHN0ciksCisgICAgICAgIG1lbWNweSh0bywgUHlVbmljb2RlX0RBVEEoc3RyKSwKICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgKiBjaGFyX3NpemUpOwogICAgICAgICB3aGlsZSAoZG9uZSA8IG5jaGFycykgewogICAgICAgICAgICAgbiA9IChkb25lIDw9IG5jaGFycy1kb25lKSA/IGRvbmUgOiBuY2hhcnMtZG9uZTsKLSAgICAgICAgICAgIFB5X01FTUNQWSh0byArIChkb25lICogY2hhcl9zaXplKSwgdG8sIG4gKiBjaGFyX3NpemUpOworICAgICAgICAgICAgbWVtY3B5KHRvICsgKGRvbmUgKiBjaGFyX3NpemUpLCB0bywgbiAqIGNoYXJfc2l6ZSk7CiAgICAgICAgICAgICBkb25lICs9IG47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjI0OCw0MCArMTI0MTIsMTUgQEAKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJvYmosCi0gICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbG9iaiwKK1B5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxzdHIsCiAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewotICAgIFB5T2JqZWN0ICpzZWxmOwotICAgIFB5T2JqZWN0ICpzdHIxOwotICAgIFB5T2JqZWN0ICpzdHIyOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKLSAgICBpZiAoc2VsZiA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzdWJzdHIpIDwgMCB8fAorICAgICAgICAgICAgZW5zdXJlX3VuaWNvZGUocmVwbHN0cikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIxID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKLSAgICBpZiAoc3RyMSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cjIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChyZXBsb2JqKTsKLSAgICBpZiAoc3RyMiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fAotICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMSkgPT0gLTEgfHwKLSAgICAgICAgUHlVbmljb2RlX1JFQURZKHN0cjIpID09IC0xKQotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7Ci0gICAgUHlfREVDUkVGKHNlbGYpOwotICAgIFB5X0RFQ1JFRihzdHIxKTsKLSAgICBQeV9ERUNSRUYoc3RyMik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVwbGFjZShzdHIsIHN1YnN0ciwgcmVwbHN0ciwgbWF4Y291bnQpOwogfQogCiBQeURvY19TVFJWQVIocmVwbGFjZV9fZG9jX18sCkBAIC0xMjI5NywyOCArMTI0MzYsMTIgQEAKICAgICBQeU9iamVjdCAqc3RyMTsKICAgICBQeU9iamVjdCAqc3RyMjsKICAgICBQeV9zc2l6ZV90IG1heGNvdW50ID0gLTE7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpyZXBsYWNlIiwgJnN0cjEsICZzdHIyLCAmbWF4Y291bnQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVVV8bjpyZXBsYWNlIiwgJnN0cjEsICZzdHIyLCAmbWF4Y291bnQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIxID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyMSk7Ci0gICAgaWYgKHN0cjEgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjIpOwotICAgIGlmIChzdHIyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKLQotICAgIFB5X0RFQ1JFRihzdHIxKTsKLSAgICBQeV9ERUNSRUYoc3RyMik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjUwMywyMiArMTI2MjYsMTMgQEAKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJmaW5kIiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgicmZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTI1NDAsMjIgKzEyNjU0LDEzIEBACiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTI1OTUsMjQgKzEyNzAwLDEwIEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfU3BsaXQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHMgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzKTsKLSAgICBpZiAocyA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzKSA8IDAgfHwgKHNlcCAhPSBOVUxMICYmIGVuc3VyZV91bmljb2RlKHNlcCkgPCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNlcCAhPSBOVUxMKSB7Ci0gICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcCk7Ci0gICAgICAgIGlmIChzZXAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICByZXN1bHQgPSBzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKLQotICAgIFB5X0RFQ1JFRihzKTsKLSAgICBQeV9YREVDUkVGKHNlcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCkBAIC0xMjYzNywzNSArMTI3MjgsMjYgQEAKIAogICAgIGlmIChzdWJzdHJpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIE5VTEwsIG1heGNvdW50KTsKLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX1BhcnRpdGlvbihQeU9iamVjdCAqc3RyX2luLCBQeU9iamVjdCAqc2VwX2luKQorUHlVbmljb2RlX1BhcnRpdGlvbihQeU9iamVjdCAqc3RyX29iaiwgUHlPYmplY3QgKnNlcF9vYmopCiB7Ci0gICAgUHlPYmplY3QqIHN0cl9vYmo7Ci0gICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwotICAgIGlmICghc3RyX29iaikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyX29iaikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHNlcF9vYmopIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc2VwX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcF9pbik7Ci0gICAgaWYgKCFzZXBfb2JqKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VwX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7CkBAIC0xMjY3OSw4ICsxMjc2MSw2IEBACiAgICAgICAgICAgICBvdXQgPSBQeVR1cGxlX1BhY2soMywgc3RyX29iaiwgdW5pY29kZV9lbXB0eSwgdW5pY29kZV9lbXB0eSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZV9lbXB0eSk7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgfQogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKQEAgLTEyNjg4LDcgKzEyNzY4LDcgQEAKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQxKTsKICAgICAgICAgaWYgKCFidWYyKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewpAQCAtMTI3MDksMzkgKzEyNzg5LDIzIEBACiAgICAgICAgIG91dCA9IDA7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OwotICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKIAogUHlPYmplY3QgKgotUHlVbmljb2RlX1JQYXJ0aXRpb24oUHlPYmplY3QgKnN0cl9pbiwgUHlPYmplY3QgKnNlcF9pbikKK1B5VW5pY29kZV9SUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfb2JqLCBQeU9iamVjdCAqc2VwX29iaikKIHsKLSAgICBQeU9iamVjdCogc3RyX29iajsKLSAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OwogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7Ci0gICAgaWYgKCFzdHJfb2JqKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHJfb2JqKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc2VwX29iaikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzZXBfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwX2luKTsKLSAgICBpZiAoIXNlcF9vYmopIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7CkBAIC0xMjc1NSw4ICsxMjgxOSw2IEBACiAgICAgICAgICAgICBvdXQgPSBQeVR1cGxlX1BhY2soMywgdW5pY29kZV9lbXB0eSwgdW5pY29kZV9lbXB0eSwgc3RyX29iaik7CiAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZV9lbXB0eSk7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgfQogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKQEAgLTEyNzY0LDcgKzEyODI2LDcgQEAKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQxKTsKICAgICAgICAgaWYgKCFidWYyKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewpAQCAtMTI3ODUsMTggKzEyODQ3LDEwIEBACiAgICAgICAgIG91dCA9IDA7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OwotICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5RG9jX1NUUlZBUihwYXJ0aXRpb25fX2RvY19fLApAQCAtMTI4MjgsMjQgKzEyODgyLDEwIEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfUlNwbGl0KFB5T2JqZWN0ICpzLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzID0gUHlVbmljb2RlX0Zyb21PYmplY3Qocyk7Ci0gICAgaWYgKHMgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUocykgPCAwIHx8IChzZXAgIT0gTlVMTCAmJiBlbnN1cmVfdW5pY29kZShzZXApIDwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXAgIT0gTlVMTCkgewotICAgICAgICBzZXAgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzZXApOwotICAgICAgICBpZiAoc2VwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gcnNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwotCi0gICAgUHlfREVDUkVGKHMpOwotICAgIFB5X1hERUNSRUYoc2VwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLApAQCAtMTI4NzAsMTAgKzEyOTEwLDE0IEBACiAKICAgICBpZiAoc3Vic3RyaW5nID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgTlVMTCwgbWF4Y291bnQpOwotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQogICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9SU3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyaW5nKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdGxpbmVzX19kb2NfXywKQEAgLTEzMTU0LDExICsxMzE5OCwxNSBAQAogICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7Ci0gICAgICAgICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCisgICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSk7CisgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR1cGxlIGZvciBzdGFydHN3aXRoIG11c3Qgb25seSBjb250YWluIHN0ciwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyaW5nKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBpZiAocmVzdWx0KSB7CkBAIC0xMzE2OCwxNSArMTMyMTYsMTMgQEAKICAgICAgICAgLyogbm90aGluZyBtYXRjaGVkICovCiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICB9Ci0gICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKLSAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1Ym9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCisgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBzdHIsIG5vdCAlLjEwMHMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsIC0xKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CkBAIC0xMzIwNiwxMiArMTMyNTIsMTUgQEAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdCgKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOwotICAgICAgICAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQorICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpOworICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0dXBsZSBmb3IgZW5kc3dpdGggbXVzdCBvbmx5IGNvbnRhaW4gc3RyLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsICsxKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKQEAgLTEzMjIwLDYxICsxMzI2OSw2NyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICB9Ci0gICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKLSAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICUuMTAwcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCArMSk7Ci0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgKzEpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKLSAgICBpZiAoIXdyaXRlci0+cmVhZG9ubHkpCisgICAgd3JpdGVyLT5tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHdyaXRlci0+YnVmZmVyKTsKKyAgICB3cml0ZXItPmRhdGEgPSBQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcik7CisKKyAgICBpZiAoIXdyaXRlci0+cmVhZG9ubHkpIHsKKyAgICAgICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX0tJTkQod3JpdGVyLT5idWZmZXIpOwogICAgICAgICB3cml0ZXItPnNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh3cml0ZXItPmJ1ZmZlcik7CisgICAgfQogICAgIGVsc2UgeworICAgICAgICAvKiB1c2UgYSB2YWx1ZSBzbWFsbGVyIHRoYW4gUHlVbmljb2RlXzFCWVRFX0tJTkQoKSBzbworICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCkgd2lsbCBjb3B5IHRoZSBidWZmZXIuICovCisgICAgICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9XQ0hBUl9LSU5EOworICAgICAgICBhc3NlcnQod3JpdGVyLT5raW5kIDw9IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKwogICAgICAgICAvKiBDb3B5LW9uLXdyaXRlIG1vZGU6IHNldCBidWZmZXIgc2l6ZSB0byAwIHNvCiAgICAgICAgICAqIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgpIHdpbGwgY29weSAoYW5kIGVubGFyZ2UpIHRoZSBidWZmZXIgb24KICAgICAgICAgICogbmV4dCB3cml0ZS4gKi8KICAgICAgICAgd3JpdGVyLT5zaXplID0gMDsKICAgICB9Ci0gICAgd3JpdGVyLT5tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHdyaXRlci0+YnVmZmVyKTsKLSAgICB3cml0ZXItPmRhdGEgPSBQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcik7Ci0gICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX0tJTkQod3JpdGVyLT5idWZmZXIpOwogfQogCiB2b2lkCiBfUHlVbmljb2RlV3JpdGVyX0luaXQoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIG1lbXNldCh3cml0ZXIsIDAsIHNpemVvZigqd3JpdGVyKSk7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICB3cml0ZXItPmtpbmQgPSA1OyAgICAvKiBpbnZhbGlkIGtpbmQgKi8KLSNlbmRpZgorCisgICAgLyogQVNDSUkgaXMgdGhlIGJhcmUgbWluaW11bSAqLwogICAgIHdyaXRlci0+bWluX2NoYXIgPSAxMjc7CisKKyAgICAvKiB1c2UgYSB2YWx1ZSBzbWFsbGVyIHRoYW4gUHlVbmljb2RlXzFCWVRFX0tJTkQoKSBzbworICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoKSB3aWxsIGNvcHkgdGhlIGJ1ZmZlci4gKi8KKyAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfV0NIQVJfS0lORDsKKyAgICBhc3NlcnQod3JpdGVyLT5raW5kIDw9IFB5VW5pY29kZV8xQllURV9LSU5EKTsKIH0KIAogaW50CiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCBtYXhjaGFyKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgIC8qIE9uIFdpbmRvd3MsIG92ZXJhbGxvY2F0ZSBieSA1MCUgaXMgdGhlIGJlc3QgZmFjdG9yICovCi0jICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiAyCi0jZWxzZQotICAgLyogT24gTGludXgsIG92ZXJhbGxvY2F0ZSBieSAyNSUgaXMgdGhlIGJlc3QgZmFjdG9yICovCi0jICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiA0Ci0jZW5kaWYKICAgICBQeV9zc2l6ZV90IG5ld2xlbjsKICAgICBQeU9iamVjdCAqbmV3YnVmZmVyOwogCi0gICAgYXNzZXJ0KGxlbmd0aCA+IDApOworICAgIGFzc2VydChtYXhjaGFyIDw9IE1BWF9VTklDT0RFKTsKKworICAgIC8qIGVuc3VyZSB0aGF0IHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUgbWFjcm8gd2FzIHVzZWQgKi8KKyAgICBhc3NlcnQoKG1heGNoYXIgPiB3cml0ZXItPm1heGNoYXIgJiYgbGVuZ3RoID49IDApCisgICAgICAgICAgIHx8IGxlbmd0aCA+IDApOwogCiAgICAgaWYgKGxlbmd0aCA+IFBZX1NTSVpFX1RfTUFYIC0gd3JpdGVyLT5wb3MpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTEzMzQwLDkgKzEzMzk1LDMyIEBACiAjdW5kZWYgT1ZFUkFMTE9DQVRFX0ZBQ1RPUgogfQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQoraW50CitfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZCkKK3sKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCBtYWNybyB3YXMgdXNlZCAqLworICAgIGFzc2VydCh3cml0ZXItPmtpbmQgPCBraW5kKTsKKworICAgIHN3aXRjaCAoa2luZCkKKyAgICB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogbWF4Y2hhciA9IDB4ZmY7IGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IG1heGNoYXIgPSAweGZmZmY7IGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6IG1heGNoYXIgPSAweDEwZmZmZjsgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDAgJiYgImludmFsaWQga2luZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKHdyaXRlciwgMCwgbWF4Y2hhcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CiBfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X1VDUzQgY2gpCiB7CisgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgMSwgY2gpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXItPmtpbmQsIHdyaXRlci0+ZGF0YSwgd3JpdGVyLT5wb3MsIGNoKTsKQEAgLTEzNDU1LDcgKzEzNTMzLDcgQEAKICAgICAgICAgY29uc3QgUHlfVUNTMSAqc3RyID0gKGNvbnN0IFB5X1VDUzEgKilhc2NpaTsKICAgICAgICAgUHlfVUNTMSAqZGF0YSA9IHdyaXRlci0+ZGF0YTsKIAotICAgICAgICBQeV9NRU1DUFkoZGF0YSArIHdyaXRlci0+cG9zLCBzdHIsIGxlbik7CisgICAgICAgIG1lbWNweShkYXRhICsgd3JpdGVyLT5wb3MsIHN0ciwgbGVuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CkBAIC0xMzUxMCwxNyArMTM1ODgsMjYgQEAKICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPT0gd3JpdGVyLT5wb3MpOwogICAgICAgICByZXR1cm4gc3RyOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpICE9IHdyaXRlci0+cG9zKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7Ci0gICAgICAgIG5ld2J1ZmZlciA9IHJlc2l6ZV9jb21wYWN0KHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcyk7Ci0gICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBuZXdidWZmZXI7CisgICAgaWYgKHdyaXRlci0+cG9zID09IDApIHsKKyAgICAgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworCisgICAgICAgIC8qIEdldCB0aGUgZW1wdHkgVW5pY29kZSBzdHJpbmcgc2luZ2xldG9uICgnJykgKi8KKyAgICAgICAgX1B5X0lOQ1JFRl9VTklDT0RFX0VNUFRZKCk7CisgICAgICAgIHN0ciAgPSB1bmljb2RlX2VtcHR5OwogICAgIH0KLSAgICBzdHIgPSB3cml0ZXItPmJ1ZmZlcjsKLSAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisgICAgZWxzZSB7CisgICAgICAgIHN0ciA9IHdyaXRlci0+YnVmZmVyOworICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgIT0gd3JpdGVyLT5wb3MpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdHIyOworICAgICAgICAgICAgc3RyMiA9IHJlc2l6ZV9jb21wYWN0KHN0ciwgd3JpdGVyLT5wb3MpOworICAgICAgICAgICAgaWYgKHN0cjIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHN0ciA9IHN0cjI7CisgICAgICAgIH0KKyAgICB9CisKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkpOwogICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF9yZWFkeShzdHIpOwogfQpAQCAtMTQ2NjEsMTMgKzE0NzQ4LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGN0eC5mbXRzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChmb3JtYXQpOwotICAgIGlmIChjdHguZm10c3RyID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKGZvcm1hdCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKGN0eC5mbXRzdHIpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihjdHguZm10c3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorCisgICAgY3R4LmZtdHN0ciA9IGZvcm1hdDsKICAgICBjdHguZm10ZGF0YSA9IFB5VW5pY29kZV9EQVRBKGN0eC5mbXRzdHIpOwogICAgIGN0eC5mbXRraW5kID0gUHlVbmljb2RlX0tJTkQoY3R4LmZtdHN0cik7CiAgICAgY3R4LmZtdGNudCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGN0eC5mbXRzdHIpOwpAQCAtMTQ3MjcsMTEgKzE0ODExLDkgQEAKICAgICBpZiAoY3R4LmFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGN0eC5hcmdzKTsKICAgICB9Ci0gICAgUHlfREVDUkVGKGN0eC5mbXRzdHIpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmY3R4LndyaXRlcik7CiAKICAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoY3R4LmZtdHN0cik7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZjdHgud3JpdGVyKTsKICAgICBpZiAoY3R4LmFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGN0eC5hcmdzKTsKQEAgLTE0ODQ4LDcgKzE0OTMwLDcgQEAKICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHNlbGYpID0gKHdjaGFyX3QgKilkYXRhOwogICAgIH0KIAotICAgIFB5X01FTUNQWShkYXRhLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICBtZW1jcHkoZGF0YSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCiAgICAgICAgICAgICAgIGtpbmQgKiAobGVuZ3RoICsgMSkpOwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc2VsZiwgMSkpOwogI2lmZGVmIFB5X0RFQlVHCkBAIC0xNTAwOSwyNiArMTUwOTEsMTggQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBJdCBtaWdodCBiZSB0aGF0IHRoZSBHZXRJdGVtIGNhbGwgZmFpbHMgZXZlbgotICAgICAgIHRob3VnaCB0aGUga2V5IGlzIHByZXNlbnQgaW4gdGhlIGRpY3Rpb25hcnksCi0gICAgICAgbmFtZWx5IHdoZW4gdGhpcyBoYXBwZW5zIGR1cmluZyBhIHN0YWNrIG92ZXJmbG93LiAqLwogICAgIFB5X0FMTE9XX1JFQ1VSU0lPTgotICAgIHQgPSBQeURpY3RfR2V0SXRlbShpbnRlcm5lZCwgcyk7CisgICAgdCA9IFB5RGljdF9TZXREZWZhdWx0KGludGVybmVkLCBzLCBzKTsKICAgICBQeV9FTkRfQUxMT1dfUkVDVVJTSU9OCi0KLSAgICBpZiAodCkgeworICAgIGlmICh0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodCAhPSBzKSB7CiAgICAgICAgIFB5X0lOQ1JFRih0KTsKICAgICAgICAgUHlfU0VUUkVGKCpwLCB0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDE7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtKGludGVybmVkLCBzLCBzKSA8IDApIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAwOwogICAgIC8qIFRoZSB0d28gcmVmZXJlbmNlcyBpbiBpbnRlcm5lZCBhcmUgbm90IGNvdW50ZWQgYnkgcmVmY250LgogICAgICAgIFRoZSBkZWFsbG9jYXRvciB3aWxsIHRha2UgY2FyZSBvZiB0aGlzICovCiAgICAgUHlfUkVGQ05UKHMpIC09IDI7CmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmggYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKaW5kZXggN2M3ODBiNi4uMzlhZjkyMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCisrKyBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaApAQCAtMjQ0LDEwOSArMjQ0LDExOSBAQAogICAgIHsxNjc3NzU2MiwgMTc4MjYxMzYsIDE2Nzc3NTYyLCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc3NTY1LCAxNzgyNjEzOSwgMTY3Nzc1NjUsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMzg0MH0sCisgICAgezAsIDAsIDAsIDAsIDAsIDU4ODh9LAorICAgIHsxNjc3NzU2OCwgMTc4MjYxNDIsIDE2Nzc3NTY4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTcxLCAxNzgyNjE0NSwgMTY3Nzc1NzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NzQsIDE3ODI2MTQ4LCAxNjc3NzU3NCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU3NywgMTc4MjYxNTEsIDE2Nzc3NTc3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTgwLCAxNzgyNjE1NCwgMTY3Nzc1ODAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODMsIDE3ODI2MTU3LCAxNjc3NzU4MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU4NiwgMTc4MjYxNjAsIDE2Nzc3NTg2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTg5LCAxNzgyNjE2MywgMTY3Nzc1ODksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1OTIsIDE3ODI2MTY2LCAxNjc3NzU5MiwgMCwgMCwgMjYzNzd9LAogICAgIHszNTMzMiwgMCwgMzUzMzIsIDAsIDAsIDk5OTN9LAogICAgIHszODE0LCAwLCAzODE0LCAwLCAwLCA5OTkzfSwKLSAgICB7MzM1NTQ3ODUsIDE4ODc0NzE4LCAzMzU1NDc4NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc5MCwgMTg4NzQ3MjMsIDMzNTU0NzkwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0Nzk1LCAxODg3NDcyOCwgMzM1NTQ3OTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4MDAsIDE4ODc0NzMzLCAzMzU1NDgwMCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDgwNSwgMTg4NzQ3MzgsIDMzNTU0ODA1LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc3NTkzLCAxNzgyNjE2NywgMTY3Nzc1OTMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3Nzc1OTcsIDE4ODc0NzQ2LCAxNjc3NzU5NywgMCwgMCwgMjY0OTd9LAorICAgIHszMzU1NDgxMiwgMTg4NzQ3NDUsIDMzNTU0ODEyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODE3LCAxODg3NDc1MCwgMzM1NTQ4MTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MjIsIDE4ODc0NzU1LCAzMzU1NDgyMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgyNywgMTg4NzQ3NjAsIDMzNTU0ODI3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODMyLCAxODg3NDc2NSwgMzM1NTQ4MzIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc2MjAsIDE3ODI2MTk0LCAxNjc3NzYyMCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzYyNCwgMTg4NzQ3NzMsIDE2Nzc3NjI0LCAwLCAwLCAyNjQ5N30sCiAgICAgezgsIDAsIDgsIDAsIDAsIDk5OTN9LAogICAgIHswLCAtOCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NDgxNywgMTg4NzQ3NTAsIDMzNTU0ODE3LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMDM5LCAxOTkyMzMzMSwgNTAzMzIwMzksIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIwNDYsIDE5OTIzMzM4LCA1MDMzMjA0NiwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjA1MywgMTk5MjMzNDUsIDUwMzMyMDUzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODQ0LCAxODg3NDc3NywgMzM1NTQ4NDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwNjYsIDE5OTIzMzU4LCA1MDMzMjA2NiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA3MywgMTk5MjMzNjUsIDUwMzMyMDczLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDgwLCAxOTkyMzM3MiwgNTAzMzIwODAsIDAsIDAsIDI2Mzc3fSwKICAgICB7NzQsIDAsIDc0LCAwLCAwLCA5OTkzfSwKICAgICB7ODYsIDAsIDg2LCAwLCAwLCA5OTkzfSwKICAgICB7MTAwLCAwLCAxMDAsIDAsIDAsIDk5OTN9LAogICAgIHsxMjgsIDAsIDEyOCwgMCwgMCwgOTk5M30sCiAgICAgezExMiwgMCwgMTEyLCAwLCAwLCA5OTkzfSwKICAgICB7MTI2LCAwLCAxMjYsIDAsIDAsIDk5OTN9LAotICAgIHszMzU1NDg0MywgMTg4NzQ3NzYsIDE2Nzc3NjI5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODQ5LCAxODg3NDc4MiwgMTY3Nzc2MzUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NTUsIDE4ODc0Nzg4LCAxNjc3NzY0MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg2MSwgMTg4NzQ3OTQsIDE2Nzc3NjQ3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODY3LCAxODg3NDgwMCwgMTY3Nzc2NTMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NzMsIDE4ODc0ODA2LCAxNjc3NzY1OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg3OSwgMTg4NzQ4MTIsIDE2Nzc3NjY1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODg1LCAxODg3NDgxOCwgMTY3Nzc2NzEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4OTEsIDE4ODc0ODI0LCAxNjc3NzY3NywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDg5NywgMTg4NzQ4MzAsIDE2Nzc3NjgzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTAzLCAxODg3NDgzNiwgMTY3Nzc2ODksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MDksIDE4ODc0ODQyLCAxNjc3NzY5NSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkxNSwgMTg4NzQ4NDgsIDE2Nzc3NzAxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTIxLCAxODg3NDg1NCwgMTY3Nzc3MDcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MjcsIDE4ODc0ODYwLCAxNjc3NzcxMywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkzMywgMTg4NzQ4NjYsIDE2Nzc3NzE5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTM5LCAxODg3NDg3MiwgMTY3Nzc3MjUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NDUsIDE4ODc0ODc4LCAxNjc3NzczMSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk1MSwgMTg4NzQ4ODQsIDE2Nzc3NzM3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTU3LCAxODg3NDg5MCwgMTY3Nzc3NDMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NjMsIDE4ODc0ODk2LCAxNjc3Nzc0OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk2OSwgMTg4NzQ5MDIsIDE2Nzc3NzU1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTc1LCAxODg3NDkwOCwgMTY3Nzc3NjEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5ODEsIDE4ODc0OTE0LCAxNjc3Nzc2NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk4NywgMTg4NzQ5MjAsIDE2Nzc3NzczLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTkzLCAxODg3NDkyNiwgMTY3Nzc3NzksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5OTksIDE4ODc0OTMyLCAxNjc3Nzc4NSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAwNSwgMTg4NzQ5MzgsIDE2Nzc3NzkxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDExLCAxODg3NDk0NCwgMTY3Nzc3OTcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMTcsIDE4ODc0OTUwLCAxNjc3NzgwMywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAyMywgMTg4NzQ5NTYsIDE2Nzc3ODA5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDI5LCAxODg3NDk2MiwgMTY3Nzc4MTUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMzUsIDE4ODc0OTY4LCAxNjc3NzgyMSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA0MSwgMTg4NzQ5NzQsIDE2Nzc3ODI3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDQ3LCAxODg3NDk4MCwgMTY3Nzc4MzMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNTMsIDE4ODc0OTg2LCAxNjc3NzgzOSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA1OSwgMTg4NzQ5OTIsIDE2Nzc3ODQ1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDY1LCAxODg3NDk5OCwgMTY3Nzc4NTEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNzEsIDE4ODc1MDA0LCAxNjc3Nzg1NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA3NywgMTg4NzUwMTAsIDE2Nzc3ODYzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDgzLCAxODg3NTAxNiwgMTY3Nzc4NjksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwODksIDE4ODc1MDIyLCAxNjc3Nzg3NSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTA5NSwgMTg4NzUwMjgsIDE2Nzc3ODgxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTAxLCAxODg3NTAzNCwgMTY3Nzc4ODcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMDcsIDE4ODc1MDQwLCAxNjc3Nzg5MywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTExMywgMTg4NzUwNDYsIDE2Nzc3ODk5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTE5LCAxODg3NTA1MiwgMTY3Nzc5MDUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMjUsIDE4ODc1MDU4LCAxNjc3NzkxMSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEzMSwgMTg4NzUwNjQsIDMzNTU1MTMzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTM4LCAxODg3NTA3MSwgMTY3Nzc5MjQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxNDQsIDE4ODc1MDc3LCAzMzU1NTE0NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE1MSwgMTg4NzUwODQsIDMzNTU1MTUxLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMzczLCAxOTkyMzY2NSwgNTAzMzIzNzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NzAsIDE4ODc0ODAzLCAxNjc3NzY1NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg3NiwgMTg4NzQ4MDksIDE2Nzc3NjYyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODgyLCAxODg3NDgxNSwgMTY3Nzc2NjgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4ODgsIDE4ODc0ODIxLCAxNjc3NzY3NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg5NCwgMTg4NzQ4MjcsIDE2Nzc3NjgwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTAwLCAxODg3NDgzMywgMTY3Nzc2ODYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MDYsIDE4ODc0ODM5LCAxNjc3NzY5MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkxMiwgMTg4NzQ4NDUsIDE2Nzc3Njk4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTE4LCAxODg3NDg1MSwgMTY3Nzc3MDQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MjQsIDE4ODc0ODU3LCAxNjc3NzcxMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkzMCwgMTg4NzQ4NjMsIDE2Nzc3NzE2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTM2LCAxODg3NDg2OSwgMTY3Nzc3MjIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NDIsIDE4ODc0ODc1LCAxNjc3NzcyOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk0OCwgMTg4NzQ4ODEsIDE2Nzc3NzM0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTU0LCAxODg3NDg4NywgMTY3Nzc3NDAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NjAsIDE4ODc0ODkzLCAxNjc3Nzc0NiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk2NiwgMTg4NzQ4OTksIDE2Nzc3NzUyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTcyLCAxODg3NDkwNSwgMTY3Nzc3NTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NzgsIDE4ODc0OTExLCAxNjc3Nzc2NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk4NCwgMTg4NzQ5MTcsIDE2Nzc3NzcwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTkwLCAxODg3NDkyMywgMTY3Nzc3NzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5OTYsIDE4ODc0OTI5LCAxNjc3Nzc4MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAwMiwgMTg4NzQ5MzUsIDE2Nzc3Nzg4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDA4LCAxODg3NDk0MSwgMTY3Nzc3OTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMTQsIDE4ODc0OTQ3LCAxNjc3NzgwMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAyMCwgMTg4NzQ5NTMsIDE2Nzc3ODA2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDI2LCAxODg3NDk1OSwgMTY3Nzc4MTIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMzIsIDE4ODc0OTY1LCAxNjc3NzgxOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAzOCwgMTg4NzQ5NzEsIDE2Nzc3ODI0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDQ0LCAxODg3NDk3NywgMTY3Nzc4MzAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNTAsIDE4ODc0OTgzLCAxNjc3NzgzNiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA1NiwgMTg4NzQ5ODksIDE2Nzc3ODQyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDYyLCAxODg3NDk5NSwgMTY3Nzc4NDgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNjgsIDE4ODc1MDAxLCAxNjc3Nzg1NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA3NCwgMTg4NzUwMDcsIDE2Nzc3ODYwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDgwLCAxODg3NTAxMywgMTY3Nzc4NjYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwODYsIDE4ODc1MDE5LCAxNjc3Nzg3MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA5MiwgMTg4NzUwMjUsIDE2Nzc3ODc4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDk4LCAxODg3NTAzMSwgMTY3Nzc4ODQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMDQsIDE4ODc1MDM3LCAxNjc3Nzg5MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTExMCwgMTg4NzUwNDMsIDE2Nzc3ODk2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTE2LCAxODg3NTA0OSwgMTY3Nzc5MDIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMjIsIDE4ODc1MDU1LCAxNjc3NzkwOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEyOCwgMTg4NzUwNjEsIDE2Nzc3OTE0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTM0LCAxODg3NTA2NywgMTY3Nzc5MjAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNDAsIDE4ODc1MDczLCAxNjc3NzkyNiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE0NiwgMTg4NzUwNzksIDE2Nzc3OTMyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTUyLCAxODg3NTA4NSwgMTY3Nzc5MzgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNTgsIDE4ODc1MDkxLCAzMzU1NTE2MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE2NSwgMTg4NzUwOTgsIDE2Nzc3OTUxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTcxLCAxODg3NTEwNCwgMzM1NTUxNzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNzgsIDE4ODc1MTExLCAzMzU1NTE3OCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQwMCwgMTk5MjM2OTIsIDUwMzMyNDAzLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC03NCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTE2NiwgMTg4NzUwOTksIDE2Nzc3OTUyLCAwLCAwLCAyNjQzM30sCi0gICAgezE2Nzc3OTU1LCAxNzgyNjUyOSwgMTY3Nzc5NTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxNzUsIDE4ODc1MTA4LCAzMzU1NTE3NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE4MiwgMTg4NzUxMTUsIDE2Nzc3OTY4LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTg4LCAxODg3NTEyMSwgMzM1NTUxOTAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxOTUsIDE4ODc1MTI4LCAzMzU1NTE5NSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQxNywgMTk5MjM3MDksIDUwMzMyNDIwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTkzLCAxODg3NTEyNiwgMTY3Nzc5NzksIDAsIDAsIDI2NDMzfSwKKyAgICB7MTY3Nzc5ODIsIDE3ODI2NTU2LCAxNjc3Nzk4MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIwMiwgMTg4NzUxMzUsIDMzNTU1MjA0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjA5LCAxODg3NTE0MiwgMTY3Nzc5OTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMTUsIDE4ODc1MTQ4LCAzMzU1NTIxNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIyMiwgMTg4NzUxNTUsIDMzNTU1MjIyLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDQ0LCAxOTkyMzczNiwgNTAzMzI0NDcsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTg2LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MjEwLCAxODg3NTE0MywgMTY3Nzc5OTYsIDAsIDAsIDI2NDMzfSwKLSAgICB7NTAzMzI0MzMsIDE5OTIzNzI1LCA1MDMzMjQzMywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQ0MCwgMTk5MjM3MzIsIDUwMzMyNDQwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjMwLCAxODg3NTE2MywgMzM1NTUyMzAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0NTIsIDE5OTIzNzQ0LCA1MDMzMjQ1MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIzNywgMTg4NzUxNzAsIDE2Nzc4MDIzLCAwLCAwLCAyNjQzM30sCisgICAgezUwMzMyNDYwLCAxOTkyMzc1MiwgNTAzMzI0NjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NjcsIDE5OTIzNzU5LCA1MDMzMjQ2NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI1NywgMTg4NzUxOTAsIDMzNTU1MjU3LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDc5LCAxOTkyMzc3MSwgNTAzMzI0NzksIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTEwMCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHs1MDMzMjQ1OSwgMTk5MjM3NTEsIDUwMzMyNDU5LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDY2LCAxOTkyMzc1OCwgNTAzMzI0NjYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyNTYsIDE4ODc1MTg5LCAzMzU1NTI1NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI2MSwgMTg4NzUxOTQsIDMzNTU1MjYxLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDgzLCAxOTkyMzc3NSwgNTAzMzI0ODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0ODYsIDE5OTIzNzc4LCA1MDMzMjQ4NiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ5MywgMTk5MjM3ODUsIDUwMzMyNDkzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjgzLCAxODg3NTIxNiwgMzM1NTUyODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyODgsIDE4ODc1MjIxLCAzMzU1NTI4OCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjUxMCwgMTk5MjM4MDIsIDUwMzMyNTEwLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMTIsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUyNzMsIDE4ODc1MjA2LCAzMzU1NTI3NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI4MCwgMTg4NzUyMTMsIDE2Nzc4MDY2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1Mjg2LCAxODg3NTIxOSwgMzM1NTUyODgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyOTMsIDE4ODc1MjI2LCAzMzU1NTI5MywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjUxNSwgMTk5MjM4MDcsIDUwMzMyNTE4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzAwLCAxODg3NTIzMywgMzM1NTUzMDIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMDcsIDE4ODc1MjQwLCAxNjc3ODA5MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTMxMywgMTg4NzUyNDYsIDMzNTU1MzE1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzIwLCAxODg3NTI1MywgMzM1NTUzMjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI1NDIsIDE5OTIzODM0LCA1MDMzMjU0NSwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTI4LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIC0xMjYsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUzMDgsIDE4ODc1MjQxLCAxNjc3ODA5NCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTMzNSwgMTg4NzUyNjgsIDE2Nzc4MTIxLCAwLCAwLCAyNjQzM30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDMwNzZ9LAogICAgIHswLCAwLCAwLCAwLCA0LCAzMDc2fSwKICAgICB7MCwgMCwgMCwgMCwgNSwgMzA3Nn0sCkBAIC0zODgsMTUgKzM5OCw2IEBACiAgICAgezAsIC00MjI2MSwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCA5MjgsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7LTkyOCwgMCwgLTkyOCwgMCwgMCwgOTk5M30sCi0gICAgezE2Nzc4MDk3LCAxNzgyNjY3MSwgMTY3NzgwOTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDAsIDE3ODI2Njc0LCAxNjc3ODEwMCwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwMywgMTc4MjY2NzcsIDE2Nzc4MTAzLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTA2LCAxNzgyNjY4MCwgMTY3NzgxMDYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDksIDE3ODI2NjgzLCAxNjc3ODEwOSwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODExMiwgMTc4MjY2ODYsIDE2Nzc4MTEyLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTE1LCAxNzgyNjY4OSwgMTY3NzgxMTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMTgsIDE3ODI2NjkyLCAxNjc3ODExOCwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEyMSwgMTc4MjY2OTUsIDE2Nzc4MTIxLCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MTI0LCAxNzgyNjY5OCwgMTY3NzgxMjQsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgxMjcsIDE3ODI2NzAxLCAxNjc3ODEyNywgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODEzMCwgMTc4MjY3MDQsIDE2Nzc4MTMwLCAwLCAwLCAyNjM3N30sCkBAIC00NjgsMjIgKzQ2OSwzMyBAQAogICAgIHsxNjc3ODMyOCwgMTc4MjY5MDIsIDE2Nzc4MzI4LCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MzMxLCAxNzgyNjkwNSwgMTY3NzgzMzEsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgzMzQsIDE3ODI2OTA4LCAxNjc3ODMzNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTU1NCwgMTg4NzU0ODcsIDMzNTU1NTU2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NTYxLCAxODg3NTQ5NCwgMzM1NTU1NjMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU1NjgsIDE4ODc1NTAxLCAzMzU1NTU3MCwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjc5MiwgMTk5MjQwODQsIDUwMzMyNzk1LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyODAyLCAxOTkyNDA5NCwgNTAzMzI4MDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMzcsIDE3ODI2OTExLCAxNjc3ODMzNywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0MCwgMTc4MjY5MTQsIDE2Nzc4MzQwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQzLCAxNzgyNjkxNywgMTY3NzgzNDMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNDYsIDE3ODI2OTIwLCAxNjc3ODM0NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0OSwgMTc4MjY5MjMsIDE2Nzc4MzQ5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzUyLCAxNzgyNjkyNiwgMTY3NzgzNTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNTUsIDE3ODI2OTI5LCAxNjc3ODM1NSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM1OCwgMTc4MjY5MzIsIDE2Nzc4MzU4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzYxLCAxNzgyNjkzNSwgMTY3NzgzNjEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU1ODEsIDE4ODc1NTE0LCAzMzU1NTU4MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTU4OCwgMTg4NzU1MjEsIDMzNTU1NTkwLCAwLCAwLCAyNjM3N30sCiAgICAgezMzNTU1NTk1LCAxODg3NTUyOCwgMzM1NTU1OTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MDIsIDE4ODc1NTM1LCAzMzU1NTYwNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYwOSwgMTg4NzU1NDIsIDMzNTU1NjExLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjE2LCAxODg3NTU0OSwgMzM1NTU2MTgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MjMsIDE4ODc1NTU2LCAzMzU1NTYyNSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYzMCwgMTg4NzU1NjMsIDMzNTU1NjMyLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjM3LCAxODg3NTU3MCwgMzM1NTU2MzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI4MTksIDE5OTI0MTExLCA1MDMzMjgyMiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjgyOSwgMTk5MjQxMjEsIDUwMzMyODMyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjIyLCAxODg3NTU1NSwgMzM1NTU2MjQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MjksIDE4ODc1NTYyLCAzMzU1NTYzMSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYzNiwgMTg4NzU1NjksIDMzNTU1NjM4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjQzLCAxODg3NTU3NiwgMzM1NTU2NDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NTAsIDE4ODc1NTgzLCAzMzU1NTY1MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTY1NywgMTg4NzU1OTAsIDMzNTU1NjU5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjY0LCAxODg3NTU5NywgMzM1NTU2NjYsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTAyNX0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDU2MzN9LAogICAgIHswLCA0MCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHstNDAsIDAsIC00MCwgMCwgMCwgOTk5M30sCisgICAgezAsIDM0LCAwLCAwLCAwLCAxMDExM30sCisgICAgey0zNCwgMCwgLTM0LCAwLCAwLCA5OTkzfSwKICAgICB7MCwgMCwgMCwgMCwgMCwgOTM0NH0sCiB9OwogCkBAIC04NDAsNiArODUyLDMzIEBACiAgICAgNTExNywKICAgICA1MTA5LAogICAgIDUxMDksCisgICAgNzI5NiwKKyAgICAxMDc0LAorICAgIDEwNDIsCisgICAgNzI5NywKKyAgICAxMDc2LAorICAgIDEwNDQsCisgICAgNzI5OCwKKyAgICAxMDg2LAorICAgIDEwNTQsCisgICAgNzI5OSwKKyAgICAxMDg5LAorICAgIDEwNTcsCisgICAgNzMwMCwKKyAgICAxMDkwLAorICAgIDEwNTgsCisgICAgNzMwMSwKKyAgICAxMDkwLAorICAgIDEwNTgsCisgICAgNzMwMiwKKyAgICAxMDk4LAorICAgIDEwNjYsCisgICAgNzMwMywKKyAgICAxMTIzLAorICAgIDExMjIsCisgICAgNzMwNCwKKyAgICA0MjU3MSwKKyAgICA0MjU3MCwKICAgICA3ODMwLAogICAgIDEwNCwKICAgICA4MTcsCkBAIC0xNzM2LDY5ICsxNzc1LDY4IEBACiAgICAgMTMxLCAxMzIsIDEzMywgMTM0LCAzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAKICAgICAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDE0NSwgMzQsIDM0LCAxNTIsIDE0NSwgMTUzLCAxNTQsIDE1NSwgCiAgICAgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNDUsIDE0NSwgMTYzLCAxNDUsIDE0NSwgMTQ1LCAxNjQsIAotICAgIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE0NSwgMTQ1LCAxNzEsIDE0NSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAKLSAgICAxNDUsIDE0NSwgMTc2LCAxNDUsIDE0NSwgMTQ1LCAxNzcsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE3OCwgMTc5LCAzNCwgMTgwLCAxNDUsIDE0NSwgCisgICAgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTQ1LCAxNzEsIDE3MiwgMTQ1LCAxNzMsIDE3NCwgMTc1LCAxNzYsIAorICAgIDE0NSwgMTQ1LCAxNzcsIDE0NSwgMTQ1LCAxNDUsIDE3OCwgMTQ1LCAxNDUsIDE3OSwgMTgwLCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTgxLCAxODIsIDM0LCAxODMsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTgxLCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTg0LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODIsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTgzLCAxODQsIDE4NSwgMTg2LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxODcsIDE4OCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTg2LCAxODcsIDE4OCwgMTg5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxOTAsIDE5MSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTIsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMTkzLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTk0LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTk1LCAxOTYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTg5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTkwLCAxOTEsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCA2NCwgMTkyLCAKLSAgICAxOTMsIDE5NCwgMTk1LCAxNDUsIDE5NiwgMTQ1LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgNjQsIAotICAgIDY0LCA2NCwgNjQsIDIwNSwgMjA2LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMzQsIDIwNywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyMDgsIAotICAgIDIwOSwgMTQ1LCAxNDUsIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAxNDUsIDY0LCAyMTUsIDY0LCA2NCwgMjE2LCAyMTcsIAotICAgIDY0LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMjIzLCAyMjQsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIyNSwgMjI2LCAyMjcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg3LCAyMjgsIDM0LCAyMjksIDIzMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAxNDUsIDY0LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDE0NSwgMjAxLCAxNDUsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIAorICAgIDIwOCwgMjA5LCA2NCwgNjQsIDY0LCA2NCwgMjEwLCAyMTEsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMjEyLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMjEzLCAyMTQsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDIxNSwgMjE2LCAxNDUsIDE0NSwgMjE3LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDE0NSwgNjQsIDIyMiwgNjQsIAorICAgIDY0LCA2NCwgNjQsIDY0LCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIzMCwgMjMxLCAyMzIsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg3LCAyMzMsIDM0LCAyMzQsIDIzNSwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMjMyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzYsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAyMzMsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDIzOCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM5LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzUsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM2LCAzNCwgMjM3LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMjQwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDI0MSwgMzQsIDI0MiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzOCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjQzLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMzEsIDM0LCAzNCwgMjM5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMzYsIDM0LCAzNCwgMjQ0LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKQEAgLTIyMDEsOCArMjIzOSw4IEBACiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjQwLCAxNDUsIDI0MSwgMjQyLCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyNDUsIDE0NSwgCisgICAgMjQ2LCAyNDcsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIApAQCAtMjIzOCw3ICsyMjc2LDcgQEAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIApAQCAtMjI3NCw3ICsyMzEyLDcgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDI0MywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDgsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIApAQCAtMjMxMSw3ICsyMzQ5LDcgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDI0MywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMjM0Nyw3ICsyMzg1LDcgQEAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDY1LCAKICAgICAzMCwgMzEsIDY2LCA2NywgNjgsIDY4LCAzMCwgMzEsIDY5LCA3MCwgNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDIwLCA3NywgNzcsIDIwLCA3OCwgMjAsIDc5LCA4MCwgMjAsIDIwLCAKLSAgICAyMCwgNzcsIDgxLCAyMCwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgODYsIDIwLCA4NywgODgsIDIwLCAyMCwgODYsIDIwLCAKKyAgICAyMCwgNzcsIDgxLCAyMCwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgODYsIDg0LCA4NywgODgsIDIwLCAyMCwgODYsIDIwLCAKICAgICA4OSwgOTAsIDIwLCAyMCwgOTEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5MiwgMjAsIDIwLCA5MywgMjAsIDIwLCAKICAgICA5MywgMjAsIDIwLCAyMCwgOTQsIDkzLCA5NSwgOTYsIDk2LCA5NywgMjAsIDIwLCAyMCwgMjAsIDIwLCA5OCwgMjAsIDU1LCAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk5LCAxMDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCkBAIC0yNDM1LDE1MiArMjQ3MywxNTIgQEAKICAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgNTUsIDE4LCAxOCwgMTgsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgNSwgNSwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCi0gICAgMTUsIDE2LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAKLSAgICAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMTgsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMjUsIDE4LCAxOCwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDI1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgMTAyLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgCi0gICAgMjUsIDAsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAKLSAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAotICAgIDI1LCAyNSwgMTgsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIAorICAgIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCAKKyAgICA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIAotICAgIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgCi0gICAgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMCwgMjUsIDE4LCAxOCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMTgsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDI1LCA1NSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAxOCwgMTgsIDAsIDE4LCAxOCwgMjUsIDI1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgCi0gICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNTUsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDE4LCAKKyAgICAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIAorICAgIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgMjUsIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDUsIDU1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDE4LCAKKyAgICAxOCwgMCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKLSAgICAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIAotICAgIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAKLSAgICAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgNTUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDE4LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDEwMiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKLSAgICAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAKLSAgICA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCA1NSwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAxMDIsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAKLSAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAyNSwgNSwgMjUsIDUsIDI1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMTAyLCAwLCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgCisgICAgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKKyAgICAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgMTgsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMTM5LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAKLSAgICAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIAotICAgIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgMTgsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIAotICAgIDEzOSwgMCwgMCwgMCwgMCwgMCwgMTM5LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTAyLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MCwgMTQxLCAxNDIsIAotICAgIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAKLSAgICAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgCi0gICAgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIAotICAgIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAKLSAgICAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgCi0gICAgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIAotICAgIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywgMjM0LCAwLCAwLCAyMzUsIDIzNiwgCi0gICAgMjM3LCAyMzgsIDIzOSwgMjQwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIAorICAgIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAKKyAgICAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgCisgICAgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIAorICAgIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAKKyAgICAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgCisgICAgMjMxLCAyMzIsIDIzMywgMjM0LCAwLCAwLCAyMzUsIDIzNiwgMjM3LCAyMzgsIDIzOSwgMjQwLCAwLCAwLCA1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjU5MywxMDkgKzI2MzEsMTEwIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDI0MSwgMjQxLCAyNDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAyNSwgMjUsIDI1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAKKyAgICAyNDEsIDI0MSwgMjQxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgCi0gICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAyNSwgMjUsIDI1LCAyMSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCA1NSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjEsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI0MiwgMjQyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAKLSAgICAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIAorICAgIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgCisgICAgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCAxNDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAxOCwgMTgsIDI1LCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAwLCAwLCA1LCA1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAKKyAgICAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDEwMiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgNSwgMjQzLCAyNDQsIAorICAgIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCi0gICAgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAyNDIsIDIwLCAKLSAgICAyMCwgMjAsIDI0MywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAyNTIsIDIwLCAyMCwgMjAsIDI1MywgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCkBAIC0yNzA0LDQ5ICsyNzQzLDQ5IEBACiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMjQ0LCAyNDUsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjAsIDIwLCAyNTAsIDIwLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjAsIDIwLCAyNjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIAotICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMCwgMCwgMjUyLCAyNTIsIDI1MiwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMCwgMCwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MiwgMjUyLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDAsIAotICAgIDAsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDAsIDAsIDI1MywgMjUxLCAyNTQsIDI1MSwgMjU1LCAyNTEsIDI1NiwgCi0gICAgMjUxLCAwLCAyNTIsIDAsIDI1MiwgMCwgMjUyLCAwLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgCi0gICAgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjU3LCAyNTcsIDI1OCwgMjU4LCAyNTgsIAotICAgIDI1OCwgMjU5LCAyNTksIDI2MCwgMjYwLCAyNjEsIDI2MSwgMjYyLCAyNjIsIDAsIDAsIDI2MywgMjY0LCAyNjUsIDI2NiwgCi0gICAgMjY3LCAyNjgsIDI2OSwgMjcwLCAyNzEsIDI3MiwgMjczLCAyNzQsIDI3NSwgMjc2LCAyNzcsIDI3OCwgMjc5LCAyODAsIAotICAgIDI4MSwgMjgyLCAyODMsIDI4NCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDI5MCwgMjkxLCAyOTIsIDI5MywgMjk0LCAKLSAgICAyOTUsIDI5NiwgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNSwgMzA2LCAzMDcsIDMwOCwgCi0gICAgMzA5LCAzMTAsIDI1MSwgMjUxLCAzMTEsIDMxMiwgMzEzLCAwLCAzMTQsIDMxNSwgMjUyLCAyNTIsIDMxNiwgMzE2LCAzMTcsIAotICAgIDYsIDMxOCwgNiwgNiwgNiwgMzE5LCAzMjAsIDMyMSwgMCwgMzIyLCAzMjMsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI1LCA2LCAKLSAgICA2LCA2LCAyNTEsIDI1MSwgMzI2LCAzMjcsIDAsIDAsIDMyOCwgMzI5LCAyNTIsIDI1MiwgMzMwLCAzMzAsIDAsIDYsIDYsIDYsIAotICAgIDI1MSwgMjUxLCAzMzEsIDMzMiwgMzMzLCAxMjYsIDMzNCwgMzM1LCAyNTIsIDI1MiwgMzM2LCAzMzYsIDEzMCwgNiwgNiwgNiwgCi0gICAgMCwgMCwgMzM3LCAzMzgsIDMzOSwgMCwgMzQwLCAzNDEsIDM0MiwgMzQyLCAzNDMsIDM0MywgMzQ0LCA2LCA2LCAwLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIAotICAgIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMzQ1LCAxMDEsIAotICAgIDAsIDAsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDUsIDUsIDUsIDUsIDUsIDEwMSwgMzQ1LCAyNiwgMjIsIDIzLCAKLSAgICAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCA1LCA1LCA1LCA1LCA1LCAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMzEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMCwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMCwgMCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDAsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDAsIDAsIDI2MywgMjYxLCAyNjQsIDI2MSwgMjY1LCAyNjEsIDI2NiwgMjYxLCAwLCAKKyAgICAyNjIsIDAsIDI2MiwgMCwgMjYyLCAwLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAKKyAgICAyNjksIDI3MCwgMjcwLCAyNzEsIDI3MSwgMjcyLCAyNzIsIDAsIDAsIDI3MywgMjc0LCAyNzUsIDI3NiwgMjc3LCAyNzgsIAorICAgIDI3OSwgMjgwLCAyODEsIDI4MiwgMjgzLCAyODQsIDI4NSwgMjg2LCAyODcsIDI4OCwgMjg5LCAyOTAsIDI5MSwgMjkyLCAKKyAgICAyOTMsIDI5NCwgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDUsIDMwNiwgCisgICAgMzA3LCAzMDgsIDMwOSwgMzEwLCAzMTEsIDMxMiwgMzEzLCAzMTQsIDMxNSwgMzE2LCAzMTcsIDMxOCwgMzE5LCAzMjAsIAorICAgIDI2MSwgMjYxLCAzMjEsIDMyMiwgMzIzLCAwLCAzMjQsIDMyNSwgMjYyLCAyNjIsIDMyNiwgMzI2LCAzMjcsIDYsIDMyOCwgNiwgCisgICAgNiwgNiwgMzI5LCAzMzAsIDMzMSwgMCwgMzMyLCAzMzMsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM1LCA2LCA2LCA2LCAyNjEsIAorICAgIDI2MSwgMzM2LCAzMzcsIDAsIDAsIDMzOCwgMzM5LCAyNjIsIDI2MiwgMzQwLCAzNDAsIDAsIDYsIDYsIDYsIDI2MSwgMjYxLCAKKyAgICAzNDEsIDM0MiwgMzQzLCAxMjYsIDM0NCwgMzQ1LCAyNjIsIDI2MiwgMzQ2LCAzNDYsIDEzMCwgNiwgNiwgNiwgMCwgMCwgCisgICAgMzQ3LCAzNDgsIDM0OSwgMCwgMzUwLCAzNTEsIDM1MiwgMzUyLCAzNTMsIDM1MywgMzU0LCA2LCA2LCAwLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDYsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMzU1LCAxMDEsIDAsIAorICAgIDAsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDUsIDUsIDUsIDUsIDUsIDEwMSwgMzU1LCAyNiwgMjIsIDIzLCAKKyAgICAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCA1LCA1LCA1LCA1LCA1LCAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCA2LCA2LCAyNSwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNSwgNSwgMTIwLCA1LCA1LCA1LCA1LCAxMjAsIDUsIDUsIDIwLCAxMjAsIDEyMCwgMTIwLCAyMCwgMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDIwLCA1LCAxMjAsIDUsIDUsIDM1MiwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDEyMCwgNSwgMzUzLCA1LCAxMjAsIDUsIDM1NCwgMzU1LCAxMjAsIDEyMCwgMzUyLCAyMCwgMTIwLCAxMjAsIDM1NiwgMTIwLCAKKyAgICAxMjAsIDIwLCA1LCAxMjAsIDUsIDUsIDM2MiwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDEyMCwgNSwgMzYzLCA1LCAxMjAsIDUsIDM2NCwgMzY1LCAxMjAsIDEyMCwgMzYyLCAyMCwgMTIwLCAxMjAsIDM2NiwgMTIwLCAKICAgICAyMCwgNTUsIDU1LCA1NSwgNTUsIDIwLCA1LCA1LCAyMCwgMjAsIDEyMCwgMTIwLCA1LCA1LCA1LCA1LCA1LCAxMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCA1LCA1LCA1LCA1LCAzNTcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIAotICAgIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAKLSAgICAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMjQxLCAyNDEsIDI0MSwgMzAsIDMxLCAyNDEsIDI0MSwgCisgICAgMjAsIDIwLCAyMCwgNSwgNSwgNSwgNSwgMzY3LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAKKyAgICAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgCisgICAgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDI0MSwgMjQxLCAyNDEsIDMwLCAzMSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0yNzYyLDI4ICsyODAxLDI4IEBACiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAKLSAgICAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgCi0gICAgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM1NiwgCisgICAgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIAorICAgIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKICAgICAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgCi0gICAgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIAotICAgIDM2MCwgMzYwLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAKLSAgICAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgCi0gICAgMzQ1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgCi0gICAgMzQ5LCAzNTAsIDM1MSwgMjcsIDM0NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAKKyAgICAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgCisgICAgMzcwLCAzNzAsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIAorICAgIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAKKyAgICAzNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAKKyAgICAzNTksIDM2MCwgMzYxLCAyNywgMzU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjYsIDIyLCAKLSAgICAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgCi0gICAgMzUwLCAzNTEsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjYsIDIyLCAKKyAgICAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgCisgICAgMzYwLCAzNjEsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTI4MDUsMTggKzI4NDQsMTggQEAKICAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCiAgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAogICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAwLCAKLSAgICAzMCwgMzEsIDM2MiwgMzYzLCAzNjQsIDM2NSwgMzY2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNjcsIDM2OCwgMzY5LCAKLSAgICAzNzAsIDIwLCAzMCwgMzEsIDIwLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDM3MSwgMzcxLCAzMCwgCisgICAgMzAsIDMxLCAzNzIsIDM3MywgMzc0LCAzNzUsIDM3NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzc3LCAzNzgsIDM3OSwgCisgICAgMzgwLCAyMCwgMzAsIDMxLCAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAzODEsIDM4MSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCA1LCA1LCA1LCA1LCA1LCA1LCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMjUsIDI1LCAyNSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMzcyLCAzNzIsIDM3MiwgCi0gICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIAotICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAKLSAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgMzcyLCAwLCAwLCA1NSwgCisgICAgMjUsIDI1LCAyNSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMzgyLCAzODIsIDM4MiwgCisgICAgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIAorICAgIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAKKyAgICAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDAsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMzgyLCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yODI5LDggKzI4NjgsOCBAQAogICAgIDU1LCA1NSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNzMsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM4MywgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0yODgyLDE0ICsyOTIxLDE0IEBACiAgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yODk4LDcgKzI5MzcsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTA4LDcgKzI5NDcsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTE2LDQ3ICsyOTU1LDQ3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzc0LCAKLSAgICA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM4NCwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgMzc0LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgMzg0LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5NjQsNyArMzAwMyw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5NzMsMTQgKzMwMTIsMTQgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5ODgsOCArMzAyNyw4IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDM3NCwgMzc0LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzODQsIDM4NCwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMwMDIsMTEgKzMwNDEsMTEgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDE0LDEwICszMDUzLDEwIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAyNSw3ICszMDY0LDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAzMyw0MCArMzA3Miw0MCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzEwNiwyNiArMzE0NSwyNiBAQAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDEwMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzc1LCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTAyLCA2LCA2LCAzMCwgMzEsIDM3NiwgMjAsIDU1LCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzODUsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMDIsIDYsIDYsIDMwLCAzMSwgMzg2LCAyMCwgNTUsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzc3LCAzNzgsIDM3OSwgMzgwLCAwLCAwLCAzODEsIDM4MiwgMzgzLCAzODQsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzg3LCAzODgsIDM4OSwgMzkwLCAzODcsIDAsIDM5MSwgMzkyLCAzOTMsIAorICAgIDM5NCwgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxMDEsIDEwMSwgCi0gICAgMjAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgMTAxLCAxMDEsIDIwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDE4LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1NSwgNSwgNTUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgCiAgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgCkBAIC0zMTU4LDE0ICszMTk3LDE0IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDM4NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDYsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg2LCAzODcsIDM4OCwgMzg5LCAzOTAsIAotICAgIDM5MSwgMzkyLCAzOTMsIDM5NCwgMzk1LCAzOTYsIDM5NywgMzk4LCAzOTksIDQwMCwgNDAxLCA0MDIsIDQwMywgNDA0LCAKLSAgICA0MDUsIDQwNiwgNDA3LCA0MDgsIDQwOSwgNDEwLCA0MTEsIDQxMiwgNDEzLCA0MTQsIDQxNSwgNDE2LCA0MTcsIDQxOCwgCi0gICAgNDE5LCA0MjAsIDQyMSwgNDIyLCA0MjMsIDQyNCwgNDI1LCA0MjYsIDQyNywgNDI4LCA0MjksIDQzMCwgNDMxLCA0MzIsIAotICAgIDQzMywgNDM0LCA0MzUsIDQzNiwgNDM3LCA0MzgsIDQzOSwgNDQwLCA0NDEsIDQ0MiwgNDQzLCA0NDQsIDQ0NSwgNDQ2LCAKLSAgICA0NDcsIDQ0OCwgNDQ5LCA0NTAsIDQ1MSwgNDUyLCA0NTMsIDQ1NCwgNDU1LCA0NTYsIDQ1NywgNDU4LCA0NTksIDQ2MCwgCi0gICAgNDYxLCA0NjIsIDQ2MywgNDY0LCA0NjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDIwLCAyMCwgMzk1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNiwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTYsIDM5NywgMzk4LCAzOTksIDQwMCwgCisgICAgNDAxLCA0MDIsIDQwMywgNDA0LCA0MDUsIDQwNiwgNDA3LCA0MDgsIDQwOSwgNDEwLCA0MTEsIDQxMiwgNDEzLCA0MTQsIAorICAgIDQxNSwgNDE2LCA0MTcsIDQxOCwgNDE5LCA0MjAsIDQyMSwgNDIyLCA0MjMsIDQyNCwgNDI1LCA0MjYsIDQyNywgNDI4LCAKKyAgICA0MjksIDQzMCwgNDMxLCA0MzIsIDQzMywgNDM0LCA0MzUsIDQzNiwgNDM3LCA0MzgsIDQzOSwgNDQwLCA0NDEsIDQ0MiwgCisgICAgNDQzLCA0NDQsIDQ0NSwgNDQ2LCA0NDcsIDQ0OCwgNDQ5LCA0NTAsIDQ1MSwgNDUyLCA0NTMsIDQ1NCwgNDU1LCA0NTYsIAorICAgIDQ1NywgNDU4LCA0NTksIDQ2MCwgNDYxLCA0NjIsIDQ2MywgNDY0LCA0NjUsIDQ2NiwgNDY3LCA0NjgsIDQ2OSwgNDcwLCAKKyAgICA0NzEsIDQ3MiwgNDczLCA0NzQsIDQ3NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDUsIDE4LCAyNSwgMCwgMCwgNywgCiAgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMTg2LDE1ICszMjI1LDE1IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMyMDgsOSArMzI0Nyw5IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY2LCA0NjcsIDQ2OCwgNDY5LCAKLSAgICA0NzAsIDQ3MSwgNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDQ3NCwgNDc1LCA0NzYsIAotICAgIDQ3NywgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc2LCA0NzcsIDQ3OCwgNDc5LCAKKyAgICA0ODAsIDQ4MSwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODMsIDQ4NCwgNDg1LCA0ODYsIAorICAgIDQ4NywgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMyMjcsNyArMzI2Niw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgNDc4LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ4OCwgNDg4LCA0ODgsIDQ4OCwgNDg4LCA0ODgsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzI0MiwxMyArMzI4MSwxMyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0NzgsIDQ3OCwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ4OCwgNDg4LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAxOCwgNSwgNSwgNiwgMCwgNSwgNiwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCAwLCA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDU1LCAKKyAgICA0ODgsIDU1LCA0ODgsIDU1LCA0ODgsIDAsIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzI2NCw3ICszMzAzLDcgQEAKICAgICA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA0NzksIDQ3OSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDQ4OSwgNDg5LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgMCwgNSwgCkBAIC0zMjkwLDcgKzMzMjksNyBAQAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTMzMjAsMjk3ICszMzU5LDMzMiBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgwLCA0ODAsIAotICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCAKLSAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgCi0gICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAotICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKLSAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCi0gICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCAwLCAwLCAwLCAwLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI3LCAyNywgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDU1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI2LCAyMiwgMjMsIDM0NiwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgCi0gICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAwLCAxOCwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIAotICAgIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCi0gICAgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIAotICAgIDI1LCAyNSwgNSwgNSwgMjEsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCi0gICAgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNSwgCi0gICAgNTUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDI1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIAotICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIAotICAgIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMCwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgMCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDU1LCA1NSwgCi0gICAgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMCwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI3LCAyNywgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIAorICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNiwgMjIsIDIzLCAzNTYsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgNSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMjUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgMTgsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAKKyAgICAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCisgICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDU1LCA1LCA1NSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAxOCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDI1LCA1NSwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMCwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgCisgICAgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMTgsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDUsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgNTUsIDU1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgCisgICAgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgNTUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMDIsIDEwMiwgCisgICAgMTAyLCAxMDIsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAogICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCisgICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNSwgMjUsIDI1LCA1LCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1LCAyNSwgMjUsIDUsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMzcwMCwyMTggKzM3NzQsMjIxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgCisgICAgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIAorICAgIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCAKKyAgICA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgCisgICAgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIAorICAgIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCisgICAgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM0NSwgMzQ1LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDAsIDAsIDAsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NSwgMzU1LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgCisgICAgMzYxLCAyNywgMjcsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA1LCA1LCA1LCA1LCA1LCA1LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNSwgNSwgMCwgMCwgMCwgMCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA1LCA1LCA1LCA1LCA1LCA1LCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNSwgNSwgMCwgMCwgMCwgMCwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDYsIDYsIDYsIDYsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDM3NCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIApAQCAtMzkyNCwxMyArNDAwMSwxMyBAQAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAogfTsKIAogLyogUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBhcyBkb3VibGUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycwpAQCAtMzk5NiwxMSArNDA3MywxMyBAQAogICAgIGNhc2UgMHgxMTEzNjoKICAgICBjYXNlIDB4MTExRDA6CiAgICAgY2FzZSAweDExMkYwOgorICAgIGNhc2UgMHgxMTQ1MDoKICAgICBjYXNlIDB4MTE0RDA6CiAgICAgY2FzZSAweDExNjUwOgogICAgIGNhc2UgMHgxMTZDMDoKICAgICBjYXNlIDB4MTE3MzA6CiAgICAgY2FzZSAweDExOEUwOgorICAgIGNhc2UgMHgxMUM1MDoKICAgICBjYXNlIDB4MTZBNjA6CiAgICAgY2FzZSAweDE2QjUwOgogICAgIGNhc2UgMHgxRDdDRToKQEAgLTQwMDgsNiArNDA4Nyw3IEBACiAgICAgY2FzZSAweDFEN0UyOgogICAgIGNhc2UgMHgxRDdFQzoKICAgICBjYXNlIDB4MUQ3RjY6CisgICAgY2FzZSAweDFFOTUwOgogICAgIGNhc2UgMHgxRjEwMDoKICAgICBjYXNlIDB4MUYxMDE6CiAgICAgY2FzZSAweDFGMTBCOgpAQCAtNDEwOCwxMSArNDE4OCwxNCBAQAogICAgIGNhc2UgMHgxMTFEMToKICAgICBjYXNlIDB4MTExRTE6CiAgICAgY2FzZSAweDExMkYxOgorICAgIGNhc2UgMHgxMTQ1MToKICAgICBjYXNlIDB4MTE0RDE6CiAgICAgY2FzZSAweDExNjUxOgogICAgIGNhc2UgMHgxMTZDMToKICAgICBjYXNlIDB4MTE3MzE6CiAgICAgY2FzZSAweDExOEUxOgorICAgIGNhc2UgMHgxMUM1MToKKyAgICBjYXNlIDB4MTFDNUE6CiAgICAgY2FzZSAweDEyNDE1OgogICAgIGNhc2UgMHgxMjQxRToKICAgICBjYXNlIDB4MTI0MkM6CkBAIC00MTI4LDE3ICs0MjExLDIyIEBACiAgICAgY2FzZSAweDFEN0VEOgogICAgIGNhc2UgMHgxRDdGNzoKICAgICBjYXNlIDB4MUU4Qzc6CisgICAgY2FzZSAweDFFOTUxOgogICAgIGNhc2UgMHgxRjEwMjoKICAgICBjYXNlIDB4MjA5MkE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjA7CisgICAgY2FzZSAweDBENUM6CiAgICAgY2FzZSAweDIxNTI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTAuMDsKICAgICBjYXNlIDB4MTA5RjY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTIuMDsKICAgICBjYXNlIDB4MDlGNDoKICAgICBjYXNlIDB4MEI3NToKKyAgICBjYXNlIDB4MEQ3NjoKICAgICBjYXNlIDB4QTgzMzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xNi4wOworICAgIGNhc2UgMHgwRDU4OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzE2MC4wOwogICAgIGNhc2UgMHgwMEJEOgogICAgIGNhc2UgMHgwQjczOgogICAgIGNhc2UgMHgwRDc0OgpAQCAtNDE1Miw2ICs0MjQwLDggQEAKICAgICBjYXNlIDB4MTBFN0I6CiAgICAgY2FzZSAweDEyNDY0OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzIuMDsKKyAgICBjYXNlIDB4MEQ1QjoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8yMC4wOwogICAgIGNhc2UgMHgyMTUzOgogICAgIGNhc2UgMHgxMEU3RDoKICAgICBjYXNlIDB4MTI0NUE6CkBAIC00MTcwLDYgKzQyNjAsOSBAQAogICAgIGNhc2UgMHgxMjQ2MjoKICAgICBjYXNlIDB4MTI0NjM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNC4wOworICAgIGNhc2UgMHgwRDU5OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzQwLjA7CisgICAgY2FzZSAweDBENUU6CiAgICAgY2FzZSAweDIxNTU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNS4wOwogICAgIGNhc2UgMHgyMTU5OgpAQCAtNDE3OSw2ICs0MjcyLDcgQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC83LjA7CiAgICAgY2FzZSAweDA5RjU6CiAgICAgY2FzZSAweDBCNzY6CisgICAgY2FzZSAweDBENzc6CiAgICAgY2FzZSAweDIxNUI6CiAgICAgY2FzZSAweEE4MzQ6CiAgICAgY2FzZSAweDEyNDVGOgpAQCAtNDIzNiw2ICs0MzMwLDcgQEAKICAgICBjYXNlIDB4MTExRUE6CiAgICAgY2FzZSAweDExNzNBOgogICAgIGNhc2UgMHgxMThFQToKKyAgICBjYXNlIDB4MTFDNjM6CiAgICAgY2FzZSAweDE2QjVCOgogICAgIGNhc2UgMHgxRDM2OToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwLjA7CkBAIC00MjY5LDYgKzQzNjQsNyBAQAogICAgIGNhc2UgMHgxMEU3MjoKICAgICBjYXNlIDB4MTEwNjQ6CiAgICAgY2FzZSAweDExMUYzOgorICAgIGNhc2UgMHgxMUM2QzoKICAgICBjYXNlIDB4MTZCNUM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAuMDsKICAgICBjYXNlIDB4MEJGMjoKQEAgLTQ0NzAsMTEgKzQ1NjYsMTQgQEAKICAgICBjYXNlIDB4MTExRDI6CiAgICAgY2FzZSAweDExMUUyOgogICAgIGNhc2UgMHgxMTJGMjoKKyAgICBjYXNlIDB4MTE0NTI6CiAgICAgY2FzZSAweDExNEQyOgogICAgIGNhc2UgMHgxMTY1MjoKICAgICBjYXNlIDB4MTE2QzI6CiAgICAgY2FzZSAweDExNzMyOgogICAgIGNhc2UgMHgxMThFMjoKKyAgICBjYXNlIDB4MTFDNTI6CisgICAgY2FzZSAweDExQzVCOgogICAgIGNhc2UgMHgxMjQwMDoKICAgICBjYXNlIDB4MTI0MTY6CiAgICAgY2FzZSAweDEyNDFGOgpAQCAtNDQ5NCw2ICs0NTkzLDcgQEAKICAgICBjYXNlIDB4MUQ3RUU6CiAgICAgY2FzZSAweDFEN0Y4OgogICAgIGNhc2UgMHgxRThDODoKKyAgICBjYXNlIDB4MUU5NTI6CiAgICAgY2FzZSAweDFGMTAzOgogICAgIGNhc2UgMHgyMjM5MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIuMDsKQEAgLTQ1MzcsNiArNDYzNyw3IEBACiAgICAgY2FzZSAweDExMUVCOgogICAgIGNhc2UgMHgxMTczQjoKICAgICBjYXNlIDB4MTE4RUI6CisgICAgY2FzZSAweDExQzY0OgogICAgIGNhc2UgMHgxRDM2QToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIwLjA7CiAgICAgY2FzZSAweDEwMTFBOgpAQCAtNDY1NywxMSArNDc1OCwxNCBAQAogICAgIGNhc2UgMHgxMTFEMzoKICAgICBjYXNlIDB4MTExRTM6CiAgICAgY2FzZSAweDExMkYzOgorICAgIGNhc2UgMHgxMTQ1MzoKICAgICBjYXNlIDB4MTE0RDM6CiAgICAgY2FzZSAweDExNjUzOgogICAgIGNhc2UgMHgxMTZDMzoKICAgICBjYXNlIDB4MTE3MzM6CiAgICAgY2FzZSAweDExOEUzOgorICAgIGNhc2UgMHgxMUM1MzoKKyAgICBjYXNlIDB4MTFDNUM6CiAgICAgY2FzZSAweDEyNDAxOgogICAgIGNhc2UgMHgxMjQwODoKICAgICBjYXNlIDB4MTI0MTc6CkBAIC00Njg2LDYgKzQ3OTAsNyBAQAogICAgIGNhc2UgMHgxRDdFRjoKICAgICBjYXNlIDB4MUQ3Rjk6CiAgICAgY2FzZSAweDFFOEM5OgorICAgIGNhc2UgMHgxRTk1MzoKICAgICBjYXNlIDB4MUYxMDQ6CiAgICAgY2FzZSAweDIwQUZEOgogICAgIGNhc2UgMHgyMEIxOToKQEAgLTQ2OTYsMTAgKzQ4MDEsMTMgQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8xMi4wOwogICAgIGNhc2UgMHgwOUY2OgogICAgIGNhc2UgMHgwQjc3OgorICAgIGNhc2UgMHgwRDc4OgogICAgIGNhc2UgMHhBODM1OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzE2LjA7CiAgICAgY2FzZSAweDBGMkI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMi4wOworICAgIGNhc2UgMHgwRDVEOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzIwLjA7CiAgICAgY2FzZSAweDAwQkU6CiAgICAgY2FzZSAweDA5Rjg6CiAgICAgY2FzZSAweDBCNzQ6CkBAIC00NzExLDYgKzQ4MTksOCBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzUuMDsKICAgICBjYXNlIDB4MjE1QzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC84LjA7CisgICAgY2FzZSAweDBENUE6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvODAuMDsKICAgICBjYXNlIDB4MTM3NDoKICAgICBjYXNlIDB4MzAzQToKICAgICBjYXNlIDB4MzI0QToKQEAgLTQ3MjQsNiArNDgzNCw3IEBACiAgICAgY2FzZSAweDExMDVEOgogICAgIGNhc2UgMHgxMTFFQzoKICAgICBjYXNlIDB4MTE4RUM6CisgICAgY2FzZSAweDExQzY1OgogICAgIGNhc2UgMHgxRDM2QjoKICAgICBjYXNlIDB4MjA5ODM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzMC4wOwpAQCAtNDgzNiwxMSArNDk0NywxNCBAQAogICAgIGNhc2UgMHgxMTFENDoKICAgICBjYXNlIDB4MTExRTQ6CiAgICAgY2FzZSAweDExMkY0OgorICAgIGNhc2UgMHgxMTQ1NDoKICAgICBjYXNlIDB4MTE0RDQ6CiAgICAgY2FzZSAweDExNjU0OgogICAgIGNhc2UgMHgxMTZDNDoKICAgICBjYXNlIDB4MTE3MzQ6CiAgICAgY2FzZSAweDExOEU0OgorICAgIGNhc2UgMHgxMUM1NDoKKyAgICBjYXNlIDB4MTFDNUQ6CiAgICAgY2FzZSAweDEyNDAyOgogICAgIGNhc2UgMHgxMjQwOToKICAgICBjYXNlIDB4MTI0MEY6CkBAIC00ODY2LDYgKzQ5ODAsNyBAQAogICAgIGNhc2UgMHgxRDdGMDoKICAgICBjYXNlIDB4MUQ3RkE6CiAgICAgY2FzZSAweDFFOENBOgorICAgIGNhc2UgMHgxRTk1NDoKICAgICBjYXNlIDB4MUYxMDU6CiAgICAgY2FzZSAweDIwMDY0OgogICAgIGNhc2UgMHgyMDBFMjoKQEAgLTQ4ODYsNiArNTAwMSw3IEBACiAgICAgY2FzZSAweDExMDVFOgogICAgIGNhc2UgMHgxMTFFRDoKICAgICBjYXNlIDB4MTE4RUQ6CisgICAgY2FzZSAweDExQzY2OgogICAgIGNhc2UgMHgxMjQ2NzoKICAgICBjYXNlIDB4MUQzNkM6CiAgICAgY2FzZSAweDIwOThDOgpAQCAtNTAwNSwxMSArNTEyMSwxNCBAQAogICAgIGNhc2UgMHgxMTFENToKICAgICBjYXNlIDB4MTExRTU6CiAgICAgY2FzZSAweDExMkY1OgorICAgIGNhc2UgMHgxMTQ1NToKICAgICBjYXNlIDB4MTE0RDU6CiAgICAgY2FzZSAweDExNjU1OgogICAgIGNhc2UgMHgxMTZDNToKICAgICBjYXNlIDB4MTE3MzU6CiAgICAgY2FzZSAweDExOEU1OgorICAgIGNhc2UgMHgxMUM1NToKKyAgICBjYXNlIDB4MTFDNUU6CiAgICAgY2FzZSAweDEyNDAzOgogICAgIGNhc2UgMHgxMjQwQToKICAgICBjYXNlIDB4MTI0MTA6CkBAIC01MDMxLDYgKzUxNTAsNyBAQAogICAgIGNhc2UgMHgxRDdGMToKICAgICBjYXNlIDB4MUQ3RkI6CiAgICAgY2FzZSAweDFFOENCOgorICAgIGNhc2UgMHgxRTk1NToKICAgICBjYXNlIDB4MUYxMDY6CiAgICAgY2FzZSAweDIwMTIxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNS4wOwpAQCAtNTA2Nyw2ICs1MTg3LDcgQEAKICAgICBjYXNlIDB4MTEwNUY6CiAgICAgY2FzZSAweDExMUVFOgogICAgIGNhc2UgMHgxMThFRToKKyAgICBjYXNlIDB4MTFDNjc6CiAgICAgY2FzZSAweDEyNDY4OgogICAgIGNhc2UgMHgxRDM2RDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDUwLjA7CkBAIC01MTcyLDExICs1MjkzLDE0IEBACiAgICAgY2FzZSAweDExMUQ2OgogICAgIGNhc2UgMHgxMTFFNjoKICAgICBjYXNlIDB4MTEyRjY6CisgICAgY2FzZSAweDExNDU2OgogICAgIGNhc2UgMHgxMTRENjoKICAgICBjYXNlIDB4MTE2NTY6CiAgICAgY2FzZSAweDExNkM2OgogICAgIGNhc2UgMHgxMTczNjoKICAgICBjYXNlIDB4MTE4RTY6CisgICAgY2FzZSAweDExQzU2OgorICAgIGNhc2UgMHgxMUM1RjoKICAgICBjYXNlIDB4MTI0MDQ6CiAgICAgY2FzZSAweDEyNDBCOgogICAgIGNhc2UgMHgxMjQxMToKQEAgLTUxOTQsNiArNTMxOCw3IEBACiAgICAgY2FzZSAweDFEN0YyOgogICAgIGNhc2UgMHgxRDdGQzoKICAgICBjYXNlIDB4MUU4Q0M6CisgICAgY2FzZSAweDFFOTU2OgogICAgIGNhc2UgMHgxRjEwNzoKICAgICBjYXNlIDB4MjBBRUE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2LjA7CkBAIC01MjA4LDYgKzUzMzMsNyBAQAogICAgIGNhc2UgMHgxMTA2MDoKICAgICBjYXNlIDB4MTExRUY6CiAgICAgY2FzZSAweDExOEVGOgorICAgIGNhc2UgMHgxMUM2ODoKICAgICBjYXNlIDB4MUQzNkU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2MC4wOwogICAgIGNhc2UgMHgxMDExRToKQEAgLTUyOTMsMTEgKzU0MTksMTQgQEAKICAgICBjYXNlIDB4MTExRDc6CiAgICAgY2FzZSAweDExMUU3OgogICAgIGNhc2UgMHgxMTJGNzoKKyAgICBjYXNlIDB4MTE0NTc6CiAgICAgY2FzZSAweDExNEQ3OgogICAgIGNhc2UgMHgxMTY1NzoKICAgICBjYXNlIDB4MTE2Qzc6CiAgICAgY2FzZSAweDExNzM3OgogICAgIGNhc2UgMHgxMThFNzoKKyAgICBjYXNlIDB4MTFDNTc6CisgICAgY2FzZSAweDExQzYwOgogICAgIGNhc2UgMHgxMjQwNToKICAgICBjYXNlIDB4MTI0MEM6CiAgICAgY2FzZSAweDEyNDEyOgpAQCAtNTMxNiw2ICs1NDQ1LDcgQEAKICAgICBjYXNlIDB4MUQ3RjM6CiAgICAgY2FzZSAweDFEN0ZEOgogICAgIGNhc2UgMHgxRThDRDoKKyAgICBjYXNlIDB4MUU5NTc6CiAgICAgY2FzZSAweDFGMTA4OgogICAgIGNhc2UgMHgyMDAwMToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcuMDsKQEAgLTUzMzQsNiArNTQ2NCw3IEBACiAgICAgY2FzZSAweDExMDYxOgogICAgIGNhc2UgMHgxMTFGMDoKICAgICBjYXNlIDB4MTE4RjA6CisgICAgY2FzZSAweDExQzY5OgogICAgIGNhc2UgMHgxRDM2RjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcwLjA7CiAgICAgY2FzZSAweDEwMTFGOgpAQCAtNTQxNywxMSArNTU0OCwxNCBAQAogICAgIGNhc2UgMHgxMTFEODoKICAgICBjYXNlIDB4MTExRTg6CiAgICAgY2FzZSAweDExMkY4OgorICAgIGNhc2UgMHgxMTQ1ODoKICAgICBjYXNlIDB4MTE0RDg6CiAgICAgY2FzZSAweDExNjU4OgogICAgIGNhc2UgMHgxMTZDODoKICAgICBjYXNlIDB4MTE3Mzg6CiAgICAgY2FzZSAweDExOEU4OgorICAgIGNhc2UgMHgxMUM1ODoKKyAgICBjYXNlIDB4MTFDNjE6CiAgICAgY2FzZSAweDEyNDA2OgogICAgIGNhc2UgMHgxMjQwRDoKICAgICBjYXNlIDB4MTI0MTM6CkBAIC01NDM5LDYgKzU1NzMsNyBAQAogICAgIGNhc2UgMHgxRDdGNDoKICAgICBjYXNlIDB4MUQ3RkU6CiAgICAgY2FzZSAweDFFOENFOgorICAgIGNhc2UgMHgxRTk1ODoKICAgICBjYXNlIDB4MUYxMDk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4LjA7CiAgICAgY2FzZSAweDEwOUZEOgpAQCAtNTQ1MSw2ICs1NTg2LDcgQEAKICAgICBjYXNlIDB4MTEwNjI6CiAgICAgY2FzZSAweDExMUYxOgogICAgIGNhc2UgMHgxMThGMToKKyAgICBjYXNlIDB4MTFDNkE6CiAgICAgY2FzZSAweDFEMzcwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgODAuMDsKICAgICBjYXNlIDB4MTAxMjA6CkBAIC01NTM1LDExICs1NjcxLDE0IEBACiAgICAgY2FzZSAweDExMUQ5OgogICAgIGNhc2UgMHgxMTFFOToKICAgICBjYXNlIDB4MTEyRjk6CisgICAgY2FzZSAweDExNDU5OgogICAgIGNhc2UgMHgxMTREOToKICAgICBjYXNlIDB4MTE2NTk6CiAgICAgY2FzZSAweDExNkM5OgogICAgIGNhc2UgMHgxMTczOToKICAgICBjYXNlIDB4MTE4RTk6CisgICAgY2FzZSAweDExQzU5OgorICAgIGNhc2UgMHgxMUM2MjoKICAgICBjYXNlIDB4MTI0MDc6CiAgICAgY2FzZSAweDEyNDBFOgogICAgIGNhc2UgMHgxMjQxNDoKQEAgLTU1NTksNiArNTY5OCw3IEBACiAgICAgY2FzZSAweDFEN0Y1OgogICAgIGNhc2UgMHgxRDdGRjoKICAgICBjYXNlIDB4MUU4Q0Y6CisgICAgY2FzZSAweDFFOTU5OgogICAgIGNhc2UgMHgxRjEwQToKICAgICBjYXNlIDB4MkY4OTA6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA5LjA7CkBAIC01NTc0LDYgKzU3MTQsNyBAQAogICAgIGNhc2UgMHgxMTA2MzoKICAgICBjYXNlIDB4MTExRjI6CiAgICAgY2FzZSAweDExOEYyOgorICAgIGNhc2UgMHgxMUM2QjoKICAgICBjYXNlIDB4MUQzNzE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA5MC4wOwogICAgIGNhc2UgMHgxMDEyMToKZGlmZiAtLWdpdCBhL09iamVjdHMvd2Vha3JlZm9iamVjdC5jIGIvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKaW5kZXggN2U2ZjM2NC4uYWI2YjIzNSAxMDA2NDQKLS0tIGEvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKKysrIGIvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKQEAgLTI2NSw3ICsyNjUsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXJzZV93ZWFrcmVmX2luaXRfYXJncyhjaGFyICpmdW5jbmFtZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCitwYXJzZV93ZWFrcmVmX2luaXRfYXJncyhjb25zdCBjaGFyICpmdW5jbmFtZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm9icCwgUHlPYmplY3QgKipjYWxsYmFja3ApCiB7CiAgICAgcmV0dXJuIFB5QXJnX1VucGFja1R1cGxlKGFyZ3MsIGZ1bmNuYW1lLCAxLCAyLCBvYnAsIGNhbGxiYWNrcCk7CkBAIC00NTMsNyArNDUzLDcgQEAKICAgICBtZXRob2QoUHlPYmplY3QgKnByb3h5KSB7IFwKICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKHNwZWNpYWwpOyBcCiAgICAgICAgICAgICBVTldSQVAocHJveHkpOyBcCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJveHksICZQeUlkXyMjc3BlY2lhbCwgIiIpOyBcCisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJveHksICZQeUlkXyMjc3BlY2lhbCwgTlVMTCk7IFwKICAgICAgICAgfQogCiAKZGlmZiAtLWdpdCBhL1BDL19tc2kuYyBiL1BDL19tc2kuYwppbmRleCA5ZTdlMzZkLi43ODliMDRmIDEwMDY0NAotLS0gYS9QQy9fbXNpLmMKKysrIGIvUEMvX21zaS5jCkBAIC0xMDQ2LDEyICsxMDQ2LDEyIEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURURJUkVDVCIsIChpbnQpTVNJREJPUEVOX0NSRUFURURJUkVDVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEUiLCAoaW50KU1TSURCT1BFTl9DUkVBVEUpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fRElSRUNUIiwgKGludClNU0lEQk9QRU5fRElSRUNUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1JFQURPTkxZIiwgKGludClNU0lEQk9QRU5fUkVBRE9OTFkpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fVFJBTlNBQ1QiLCAoaW50KU1TSURCT1BFTl9UUkFOU0FDVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9QQVRDSEZJTEUiLCAoaW50KU1TSURCT1BFTl9QQVRDSEZJTEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fQ1JFQVRFRElSRUNUIiwgKGxvbmcpTVNJREJPUEVOX0NSRUFURURJUkVDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEUiLCAobG9uZylNU0lEQk9QRU5fQ1JFQVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0RJUkVDVCIsIChsb25nKU1TSURCT1BFTl9ESVJFQ1QpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUkVBRE9OTFkiLCAobG9uZylNU0lEQk9QRU5fUkVBRE9OTFkpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fVFJBTlNBQ1QiLCAobG9uZylNU0lEQk9QRU5fVFJBTlNBQ1QpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUEFUQ0hGSUxFIiwgKGxvbmcpTVNJREJPUEVOX1BBVENIRklMRSk7CiAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lDT0xJTkZPX05BTUVTKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lDT0xJTkZPX1RZUEVTKTsKZGlmZiAtLWdpdCBhL1BDL190ZXN0Y29uc29sZS5jIGIvUEMvX3Rlc3Rjb25zb2xlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM5MzY3OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL190ZXN0Y29uc29sZS5jCkBAIC0wLDAgKzEsMTMxIEBACisKKy8qIFRlc3RpbmcgbW9kdWxlIGZvciBtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbiBvZiBleHRlbnNpb24gbW9kdWxlcyAoUEVQIDQ4OSkKKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKyNpZmRlZiBNU19XSU5ET1dTCisKKyNpbmNsdWRlICIuLlxtb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCIKKworI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyAvKiBUaGUgZnVsbCBkZWZpbml0aW9uIGlzIGluIGlvbW9kdWxlLiBXZSByZXByb2R1Y2UKKyBlbm91Z2ggaGVyZSB0byBnZXQgdGhlIGhhbmRsZSwgd2hpY2ggaXMgYWxsIHdlIHdhbnQuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIEhBTkRMRSBoYW5kbGU7Cit9IHdpbmNvbnNvbGVpbzsKKworCitzdGF0aWMgaW50IGV4ZWNmdW5jKFB5T2JqZWN0ICptKQoreworICAgIHJldHVybiAwOworfQorCitQeU1vZHVsZURlZl9TbG90IHRlc3Rjb25zb2xlX3Nsb3RzW10gPSB7CisgICAge1B5X21vZF9leGVjLCBleGVjZnVuY30sCisgICAgezAsIE5VTEx9LAorfTsKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF90ZXN0Y29uc29sZQorCitfdGVzdGNvbnNvbGUud3JpdGVfaW5wdXQKKyAgICBmaWxlOiBvYmplY3QKKyAgICBzOiBQeUJ5dGVzT2JqZWN0CisKK1dyaXRlcyBVVEYtMTYtTEUgZW5jb2RlZCBieXRlcyB0byB0aGUgY29uc29sZSBhcyBpZiB0eXBlZCBieSBhIHVzZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNPYmplY3QgKnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDhmOTU2M2RiMzRhZWRiMyBpbnB1dD00Yzc3NGYyZDA1NzcwYmM2XSovCit7CisgICAgSU5QVVRfUkVDT1JEICpyZWMgPSBOVUxMOworICAgIAorICAgIGlmICghUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKGZpbGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCByYXcgY29uc29sZSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgY29uc3Qgd2NoYXJfdCAqcCA9IChjb25zdCB3Y2hhcl90ICopUHlCeXRlc19BU19TVFJJTkcocyk7CisgICAgRFdPUkQgc2l6ZSA9IChEV09SRClQeUJ5dGVzX0dFVF9TSVpFKHMpIC8gc2l6ZW9mKHdjaGFyX3QpOworCisgICAgcmVjID0gKElOUFVUX1JFQ09SRCopUHlNZW1fTWFsbG9jKHNpemVvZihJTlBVVF9SRUNPUkQpICogc2l6ZSk7CisgICAgaWYgKCFyZWMpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgbWVtc2V0KHJlYywgMCwgc2l6ZW9mKElOUFVUX1JFQ09SRCkgKiBzaXplKTsKKyAgICAKKyAgICBJTlBVVF9SRUNPUkQgKnByZWMgPSByZWM7CisgICAgZm9yIChEV09SRCBpID0gMDsgaSA8IHNpemU7ICsraSwgKytwLCArK3ByZWMpIHsKKyAgICAgICAgcHJlYy0+RXZlbnRUeXBlID0gS0VZX0VWRU5UOworICAgICAgICBwcmVjLT5FdmVudC5LZXlFdmVudC5iS2V5RG93biA9IFRSVUU7CisgICAgICAgIHByZWMtPkV2ZW50LktleUV2ZW50LndSZXBlYXRDb3VudCA9IDEwOworICAgICAgICBwcmVjLT5FdmVudC5LZXlFdmVudC51Q2hhci5Vbmljb2RlQ2hhciA9ICpwOworICAgIH0KKworICAgIEhBTkRMRSBoSW5wdXQgPSAoKHdpbmNvbnNvbGVpbyopZmlsZSktPmhhbmRsZTsKKyAgICBEV09SRCB0b3RhbCA9IDA7CisgICAgd2hpbGUgKHRvdGFsIDwgc2l6ZSkgeworICAgICAgICBEV09SRCB3cm90ZTsKKyAgICAgICAgaWYgKCFXcml0ZUNvbnNvbGVJbnB1dFcoaElucHV0LCAmcmVjW3RvdGFsXSwgKHNpemUgLSB0b3RhbCksICZ3cm90ZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICB0b3RhbCArPSB3cm90ZTsKKyAgICB9CisKKyAgICBQeU1lbV9GcmVlKCh2b2lkKilyZWMpOworICAgIAorICAgIFB5X1JFVFVSTl9OT05FOworZXJyb3I6CisgICAgaWYgKHJlYykKKyAgICAgICAgUHlNZW1fRnJlZSgodm9pZCopcmVjKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX3Rlc3Rjb25zb2xlLnJlYWRfb3V0cHV0CisgICAgZmlsZTogb2JqZWN0CisKK1JlYWRzIGEgc3RyIGZyb20gdGhlIGNvbnNvbGUgYXMgd3JpdHRlbiB0byBzdGRvdXQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NzYzMTBkODFhNzNlNmQyIGlucHV0PWIzNTIxZjY0YjFiNTU4ZTNdKi8KK3sKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2luY2x1ZGUgImNsaW5pY1xfdGVzdGNvbnNvbGUuYy5oIgorCitQeU1ldGhvZERlZiB0ZXN0Y29uc29sZV9tZXRob2RzW10gPSB7CisgICAgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRgorICAgIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiB0ZXN0Y29uc29sZV9kZWYgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULCAgICAgICAgICAgICAgICAgICAgICAvKiBtX2Jhc2UgKi8KKyAgICAiX3Rlc3Rjb25zb2xlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgIFB5RG9jX1NUUigiVGVzdCBtb2R1bGUgZm9yIHRoZSBXaW5kb3dzIGNvbnNvbGUiKSwgLyogbV9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIHRlc3Rjb25zb2xlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgdGVzdGNvbnNvbGVfc2xvdHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3Nsb3RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2NsZWFyICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3Rjb25zb2xlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZ0ZXN0Y29uc29sZV9kZWYpOworfQorCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMgYi9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYwppbmRleCA2MGJlZTMwLi5mZDk3N2Y1IDEwMDY0NAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYworKysgYi9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYwpAQCAtNzE4LDcgKzcxOCw3IEBACiAgKiAxIGlmIHRoZSBQeXRob24tZGxsIGRvZXMgbm90IGV4cG9ydCB0aGUgZnVuY3Rpb25zIHdlIG5lZWQKICAqIDIgaWYgbm8gaW5zdGFsbC1zY3JpcHQgaXMgc3BlY2lmaWVkIGluIHBhdGhuYW1lCiAgKiAzIGlmIHRoZSBpbnN0YWxsLXNjcmlwdCBmaWxlIGNvdWxkIG5vdCBiZSBvcGVuZWQKLSAqIHRoZSByZXR1cm4gdmFsdWUgb2YgUHlSdW5fU2ltcGxlU3RyaW5nKCkgb3RoZXJ3aXNlLAorICogdGhlIHJldHVybiB2YWx1ZSBvZiBQeVJ1bl9TaW1wbGVTdHJpbmcoKSBvciBQeV9GaW5hbGl6ZUV4KCkgb3RoZXJ3aXNlLAogICogd2hpY2ggaXMgMCBpZiBldmVyeXRoaW5nIGlzIG9rLCAtMSBpZiBhbiBleGNlcHRpb24gaGFkIG9jY3VycmVkCiAgKiBpbiB0aGUgaW5zdGFsbC1zY3JpcHQuCiAgKi8KQEAgLTczMSw3ICs3MzEsNyBAQAogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0luaXRpYWxpemUsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeVN5c19TZXRBcmd2LCAoaW50LCB3Y2hhcl90ICoqKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeVJ1bl9TaW1wbGVTdHJpbmcsIChjaGFyICopKTsKLSAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9GaW5hbGl6ZSwgKHZvaWQpKTsKKyAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5X0ZpbmFsaXplRXgsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgUHlPYmplY3QgKiwgUHlfQnVpbGRWYWx1ZSwgKGNoYXIgKiwgLi4uKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgUHlPYmplY3QgKiwgUHlDRnVuY3Rpb25fTmV3LAogICAgICAgICAgICAgIChQeU1ldGhvZERlZiAqLCBQeU9iamVjdCAqKSk7CkBAIC03MzksNyArNzM5LDcgQEAKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeUVycl9Gb3JtYXQsIChQeU9iamVjdCAqLCBjaGFyICopKTsKIAogICAgIGlmICghUHlfSW5pdGlhbGl6ZSB8fCAhUHlTeXNfU2V0QXJndgotICAgICAgICB8fCAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeV9GaW5hbGl6ZSkKKyAgICAgICAgfHwgIVB5UnVuX1NpbXBsZVN0cmluZyB8fCAhUHlfRmluYWxpemVFeCkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICBpZiAoIVB5X0J1aWxkVmFsdWUgfHwgIVB5QXJnX1BhcnNlVHVwbGUgfHwgIVB5RXJyX0Zvcm1hdCkKQEAgLTc4Niw3ICs3ODYsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQogCiAgICAgY2xvc2UoZmgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC04NDgsMTEgKzg1MCwxMSBAQAogICAgIGludCByYzsKICAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9Jbml0aWFsaXplLCAodm9pZCkpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X1NldFByb2dyYW1OYW1lLCAod2NoYXJfdCAqKSk7Ci0gICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfRmluYWxpemUsICh2b2lkKSk7CisgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeV9GaW5hbGl6ZUV4LCAodm9pZCkpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIGludCwgUHlSdW5fU2ltcGxlU3RyaW5nLCAoY2hhciAqKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlFcnJfUHJpbnQsICh2b2lkKSk7CiAKLSAgICBpZiAoIVB5X0luaXRpYWxpemUgfHwgIVB5X1NldFByb2dyYW1OYW1lIHx8ICFQeV9GaW5hbGl6ZSB8fAorICAgIGlmICghUHlfSW5pdGlhbGl6ZSB8fCAhUHlfU2V0UHJvZ3JhbU5hbWUgfHwgIVB5X0ZpbmFsaXplRXggfHwKICAgICAgICAgIVB5UnVuX1NpbXBsZVN0cmluZyB8fCAhUHlFcnJfUHJpbnQpCiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtODYyLDcgKzg2NCw5IEBACiAgICAgcmMgPSBQeVJ1bl9TaW1wbGVTdHJpbmcoc2NyaXB0KTsKICAgICBpZiAocmMpCiAgICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByYyA9IC0xOworICAgIH0KICAgICByZXR1cm4gcmM7CiB9CiAKZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy9fdGVzdGNvbnNvbGUuYy5oIGIvUEMvY2xpbmljL190ZXN0Y29uc29sZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4NjBjZgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2NsaW5pYy9fdGVzdGNvbnNvbGUuYy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfX2RvY19fLAorIndyaXRlX2lucHV0KCRtb2R1bGUsIC8sIGZpbGUsIHMpXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZXMgVVRGLTE2LUxFIGVuY29kZWQgYnl0ZXMgdG8gdGhlIGNvbnNvbGUgYXMgaWYgdHlwZWQgYnkgYSB1c2VyLiIpOworCisjZGVmaW5lIF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGVfaW5wdXQiLCAoUHlDRnVuY3Rpb24pX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0LCBNRVRIX0ZBU1RDQUxMLCBfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc09iamVjdCAqcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgInMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPUzp3cml0ZV9pbnB1dCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgUHlCeXRlc09iamVjdCAqczsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJnMpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0X2ltcGwobW9kdWxlLCBmaWxlLCBzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X19kb2NfXywKKyJyZWFkX291dHB1dCgkbW9kdWxlLCAvLCBmaWxlKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZHMgYSBzdHIgZnJvbSB0aGUgY29uc29sZSBhcyB3cml0dGVuIHRvIHN0ZG91dC4iKTsKKworI2RlZmluZSBfVEVTVENPTlNPTEVfUkVBRF9PVVRQVVRfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRfb3V0cHV0IiwgKFB5Q0Z1bmN0aW9uKV90ZXN0Y29uc29sZV9yZWFkX291dHB1dCwgTUVUSF9GQVNUQ0FMTCwgX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpyZWFkX291dHB1dCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmZpbGU7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZpbGUpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X2ltcGwobW9kdWxlLCBmaWxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWZuZGVmIF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfVEVTVENPTlNPTEVfV1JJVEVfSU5QVVRfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfVEVTVENPTlNPTEVfUkVBRF9PVVRQVVRfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNhOGRjMGM0MjE4MDdjNDEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmggYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaAppbmRleCBlN2E3MmM0Li42OTM1Y2FkIDEwMDY0NAotLS0gYS9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaAorKysgYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaApAQCAtNTEsOCArNTEsOSBAQAogICAgIGxvbmcgbmJ5dGVzOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWw6bG9ja2luZyIsCi0gICAgICAgICZmZCwgJm1vZGUsICZuYnl0ZXMpKQorICAgICAgICAmZmQsICZtb2RlLCAmbmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9sb2NraW5nX2ltcGwobW9kdWxlLCBmZCwgbW9kZSwgbmJ5dGVzKTsKIAogZXhpdDoKQEAgLTg1LDExICs4NiwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2V0bW9kZSIsCi0gICAgICAgICZmZCwgJmZsYWdzKSkKKyAgICAgICAgJmZkLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9zZXRtb2RlX2ltcGwobW9kdWxlLCBmZCwgZmxhZ3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMTAsMjIgKzExMywyNCBAQAogICAgIHsib3Blbl9vc2ZoYW5kbGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X29wZW5fb3NmaGFuZGxlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9vcGVuX29zZmhhbmRsZV9fZG9jX199LAogCiBzdGF0aWMgbG9uZwotbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpOworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogbXN2Y3J0X29wZW5fb3NmaGFuZGxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnRwdHJfdCBoYW5kbGU7CiAgICAgaW50IGZsYWdzOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIl9QeV9QQVJTRV9JTlRQVFIiaTpvcGVuX29zZmhhbmRsZSIsCi0gICAgICAgICZoYW5kbGUsICZmbGFncykpCisgICAgICAgICZoYW5kbGUsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGZsYWdzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTQzLDcgKzE0OCw3IEBACiAjZGVmaW5lIE1TVkNSVF9HRVRfT1NGSEFORExFX01FVEhPRERFRiAgICBcCiAgICAgeyJnZXRfb3NmaGFuZGxlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9nZXRfb3NmaGFuZGxlLCBNRVRIX08sIG1zdmNydF9nZXRfb3NmaGFuZGxlX19kb2NfX30sCiAKLXN0YXRpYyBQeV9pbnRwdHJfdAorc3RhdGljIGludHB0cl90CiBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNTEsMTMgKzE1NiwxNSBAQAogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmZDsKLSAgICBQeV9pbnRwdHJfdCBfcmV0dXJuX3ZhbHVlOworICAgIGludHB0cl90IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9vc2ZoYW5kbGUiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVm9pZFB0cigodm9pZCAqKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTgzLDggKzE5MCw5IEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9rYmhpdF9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMxMSw4ICszMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNoYXIgY2hhcl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzpwdXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6cHV0Y2giLCAmY2hhcl92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfcHV0Y2hfaW1wbChtb2R1bGUsIGNoYXJfdmFsdWUpOwogCiBleGl0OgpAQCAtMzM3LDggKzM0Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHVuaWNvZGVfY2hhcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpwdXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6cHV0d2NoIiwgJnVuaWNvZGVfY2hhcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfcHV0d2NoX2ltcGwobW9kdWxlLCB1bmljb2RlX2NoYXIpOwogCiBleGl0OgpAQCAtMzY3LDggKzM3Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY2hhciBjaGFyX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnVuZ2V0Y2giLCAmY2hhcl92YWx1ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnVuZ2V0Y2giLCAmY2hhcl92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTMsOCArNDA0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdW5pY29kZV9jaGFyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnVuZ2V0d2NoIiwgJnVuaWNvZGVfY2hhcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnVuZ2V0d2NoIiwgJnVuaWNvZGVfY2hhcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CiAKIGV4aXQ6CkBAIC00MjYsMTEgKzQzOCwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Q3J0U2V0UmVwb3J0RmlsZSIsCi0gICAgICAgICZ0eXBlLCAmZmlsZSkpCisgICAgICAgICZ0eXBlLCAmZmlsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X0NydFNldFJlcG9ydEZpbGVfaW1wbChtb2R1bGUsIHR5cGUsIGZpbGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NjQsMTEgKzQ3OCwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Q3J0U2V0UmVwb3J0TW9kZSIsCi0gICAgICAgICZ0eXBlLCAmbW9kZSkpCisgICAgICAgICZ0eXBlLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X0NydFNldFJlcG9ydE1vZGVfaW1wbChtb2R1bGUsIHR5cGUsIG1vZGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MDAsMTEgKzUxNiwxMyBAQAogICAgIGludCBtb2RlOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRfZXJyb3JfbW9kZSIsICZtb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c2V0X2Vycm9yX21vZGUiLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3NldF9lcnJvcl9tb2RlX2ltcGwobW9kdWxlLCBtb2RlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTMxLDggKzU0OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IG1vZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6U2V0RXJyb3JNb2RlIiwgJm1vZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpTZXRFcnJvck1vZGUiLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfU2V0RXJyb3JNb2RlX2ltcGwobW9kdWxlLCBtb2RlKTsKIAogZXhpdDoKQEAgLTU1MCw0ICs1NjksNCBAQAogI2lmbmRlZiBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTc5NGM1MjBkNmFlODg3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZTA0ZTJiNTBlZWY4YjYzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy93aW5yZWcuYy5oIGIvUEMvY2xpbmljL3dpbnJlZy5jLmgKaW5kZXggZjZhZTJjMC4uYzdkNWI5ZSAxMDA2NDQKLS0tIGEvUEMvY2xpbmljL3dpbnJlZy5jLmgKKysrIGIvUEMvY2xpbmljL3dpbnJlZy5jLmgKQEAgLTc3LDI0ICs3NywyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgV0lOUkVHX0hLRVlUWVBFX19fRVhJVF9fX01FVEhPRERFRiAgICBcCi0gICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbil3aW5yZWdfSEtFWVR5cGVfX19leGl0X18sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19fX2RvY19ffSwKKyAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXywgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpleGNfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfSEtFWVR5cGVfX19leGl0X18oUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZXhjX3R5cGUiLCAiZXhjX3ZhbHVlIiwgInRyYWNlYmFjayIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImV4Y190eXBlIiwgImV4Y192YWx1ZSIsICJ0cmFjZWJhY2siLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPT086X19leGl0X18iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpleGNfdHlwZTsKICAgICBQeU9iamVjdCAqZXhjX3ZhbHVlOwogICAgIFB5T2JqZWN0ICp0cmFjZWJhY2s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT086X19leGl0X18iLCBfa2V5d29yZHMsCi0gICAgICAgICZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJnRyYWNlYmFjaykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJnRyYWNlYmFjaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOwogCiBleGl0OgpAQCAtMTQ3LDExICsxNDksMTMgQEAKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpPJjpDb25uZWN0UmVnaXN0cnkiLAotICAgICAgICAmY29tcHV0ZXJfbmFtZSwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICAgICAgJmNvbXB1dGVyX25hbWUsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0Nvbm5lY3RSZWdpc3RyeV9pbXBsKG1vZHVsZSwgY29tcHV0ZXJfbmFtZSwga2V5KTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xOTIsMTEgKzE5NiwxMyBAQAogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOkNyZWF0ZUtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ3JlYXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIyOSwyOSArMjM1LDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX0NSRUFURUtFWUVYX01FVEhPRERFRiAgICBcCi0gICAgeyJDcmVhdGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfQ3JlYXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfQ3JlYXRlS2V5RXhfX2RvY19ffSwKKyAgICB7IkNyZWF0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0NyZWF0ZUtleUV4X19kb2NfX30sCiAKIHN0YXRpYyBIS0VZCiB3aW5yZWdfQ3JlYXRlS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfQ3JlYXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfQ3JlYXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpDcmVhdGVLZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV1JJVEU7CiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOkNyZWF0ZUtleUV4IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yOTAsOCArMjk5LDkgQEAKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnU6RGVsZXRlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0RlbGV0ZUtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5KTsKIAogZXhpdDoKQEAgLTMyNCwyNSArMzM0LDI3IEBACiAiT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX0RFTEVURUtFWUVYX01FVEhPRERFRiAgICBcCi0gICAgeyJEZWxldGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGVsZXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19ffSwKKyAgICB7IkRlbGV0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVLZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0RlbGV0ZUtleUV4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgIFJFR1NBTSBhY2Nlc3MsIGludCByZXNlcnZlZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfRGVsZXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfRGVsZXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mdXxpaTpEZWxldGVLZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1dPVzY0XzY0S0VZOwogICAgIGludCByZXNlcnZlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnV8aWk6RGVsZXRlS2V5RXgiLCBfa2V5d29yZHMsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZhY2Nlc3MsICZyZXNlcnZlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZhY2Nlc3MsICZyZXNlcnZlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgYWNjZXNzLCByZXNlcnZlZCk7CiAKIGV4aXQ6CkBAIC0zNzQsOCArMzg2LDkgQEAKICAgICBQeV9VTklDT0RFICp2YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOkRlbGV0ZVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDExLDggKzQyNCw5IEBACiAgICAgaW50IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6RW51bUtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VudW1LZXlfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOwogCiBleGl0OgpAQCAtNDU3LDggKzQ3MSw5IEBACiAgICAgaW50IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6RW51bVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW51bVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIGluZGV4KTsKIAogZXhpdDoKQEAgLTQ4Myw4ICs0OTgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X1VOSUNPREUgKnN0cmluZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidTpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCAmc3RyaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInU6RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzX2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgpAQCAtNTIyLDggKzUzOCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkZsdXNoS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkZsdXNoS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19GbHVzaEtleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTU3NCw4ICs1OTEsOSBAQAogICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1dTpMb2FkS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmZpbGVfbmFtZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZmaWxlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0xvYWRLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgZmlsZV9uYW1lKTsKIAogZXhpdDoKQEAgLTYwMiwyOSArNjIwLDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX09QRU5LRVlfTUVUSE9EREVGICAgIFwKLSAgICB7Ik9wZW5LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleV9fZG9jX199LAorICAgIHsiT3BlbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleSwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX09wZW5LZXlfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19PcGVuS2V5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCiAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfT3BlbktleShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19PcGVuS2V5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJlp8aWk6T3BlbktleSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfUkVBRDsKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6T3BlbktleSIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02NTEsMjkgKzY3MiwzMiBAQAogIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiAjZGVmaW5lIFdJTlJFR19PUEVOS0VZRVhfTUVUSE9EREVGICAgIFwKLSAgICB7Ik9wZW5LZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleUV4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX09wZW5LZXlFeF9fZG9jX199LAorICAgIHsiT3BlbktleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5RXgsIE1FVEhfRkFTVENBTEwsIHdpbnJlZ19PcGVuS2V5RXhfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19PcGVuS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX09wZW5LZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19PcGVuS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpPcGVuS2V5RXgiLCBfa2V5d29yZHMsIDB9OwogICAgIEhLRVkga2V5OwogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAgICAgaW50IHJlc2VydmVkID0gMDsKICAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1JFQUQ7CiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOk9wZW5LZXlFeCIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTcwNyw4ICs3MzEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeUluZm9LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlJbmZvS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeUluZm9LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC03NDksOCArNzc0LDkgQEAKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6UXVlcnlWYWx1ZSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwogCiBleGl0OgpAQCAtNzg3LDggKzgxMyw5IEBACiAgICAgUHlfVU5JQ09ERSAqbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOlF1ZXJ5VmFsdWVFeCIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJm5hbWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVZhbHVlRXhfaW1wbChtb2R1bGUsIGtleSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC04MzAsOCArODU3LDkgQEAKICAgICBQeV9VTklDT0RFICpmaWxlX25hbWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mdTpTYXZlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmZmlsZV9uYW1lKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmZmlsZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19TYXZlS2V5X2ltcGwobW9kdWxlLCBrZXksIGZpbGVfbmFtZSk7CiAKIGV4aXQ6CkBAIC04ODMsOCArOTExLDkgQEAKICAgICBQeV9zc2l6ZV9jbGVhbl90IHZhbHVlX2xlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaa3UjOlNldFZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnR5cGUsICZ2YWx1ZSwgJnZhbHVlX2xlbmd0aCkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZ0eXBlLCAmdmFsdWUsICZ2YWx1ZV9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NldFZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHR5cGUsIHZhbHVlLCB2YWx1ZV9sZW5ndGgpOwogCiBleGl0OgpAQCAtOTA3LDcgKzkzNiw3IEBACiAiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEsIG9uZSBvZjpcbiIKICIgICAgUkVHX0JJTkFSWSAtLSBCaW5hcnkgZGF0YSBpbiBhbnkgZm9ybS5cbiIKICIgICAgUkVHX0RXT1JEIC0tIEEgMzItYml0IG51bWJlci5cbiIKLSIgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LlxuIgorIiAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gUkVHX0RXT1JEXG4iCiAiICAgIFJFR19EV09SRF9CSUdfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBiaWctZW5kaWFuIGZvcm1hdC5cbiIKICIgICAgUkVHX0VYUEFORF9TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdGhhdCBjb250YWlucyB1bmV4cGFuZGVkXG4iCiAiICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGZvciBleGFtcGxlLFxuIgpAQCAtOTE3LDYgKzk0Niw4IEBACiAiICAgICAgICAgICAgICAgICAgICBieSB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzXG4iCiAiICAgICAgICAgICAgICAgICAgICB0aGlzIHRlcm1pbmF0aW9uIGF1dG9tYXRpY2FsbHkuXG4iCiAiICAgIFJFR19OT05FIC0tIE5vIGRlZmluZWQgdmFsdWUgdHlwZS5cbiIKKyIgICAgUkVHX1FXT1JEIC0tIEEgNjQtYml0IG51bWJlci5cbiIKKyIgICAgUkVHX1FXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSA2NC1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIFJFR19RV09SRC5cbiIKICIgICAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuXG4iCiAiICAgIFJFR19TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcuXG4iCiAiICB2YWx1ZVxuIgpAQCAtOTUwLDggKzk4MSw5IEBACiAgICAgUHlPYmplY3QgKnZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlpPa086U2V0VmFsdWVFeCIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlX25hbWUsICZyZXNlcnZlZCwgJnR5cGUsICZ2YWx1ZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlX25hbWUsICZyZXNlcnZlZCwgJnR5cGUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZV9uYW1lLCByZXNlcnZlZCwgdHlwZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtOTg1LDggKzEwMTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpEaXNhYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpEaXNhYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC0xMDE4LDggKzEwNTEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpFbmFibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkVuYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VuYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC0xMDQ5LDExICsxMDgzLDEyIEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5UmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5UmVmbGVjdGlvbktleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdiODk0MGEyM2Y2MDVkZGMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE2ZGQwNmJlNmUxNGI4NmUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL3dpbnNvdW5kLmMuaCBiL1BDL2NsaW5pYy93aW5zb3VuZC5jLmgKaW5kZXggYjAwYjQ0Mi4uNTJkMjViMiAxMDA2NDQKLS0tIGEvUEMvY2xpbmljL3dpbnNvdW5kLmMuaAorKysgYi9QQy9jbGluaWMvd2luc291bmQuYy5oCkBAIC0zLDcgKzMsNyBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBQeURvY19TVFJWQVIod2luc291bmRfUGxheVNvdW5kX19kb2NfXywKLSJQbGF5U291bmQoJG1vZHVsZSwgc291bmQsIGZsYWdzLCAvKVxuIgorIlBsYXlTb3VuZCgkbW9kdWxlLCAvLCBzb3VuZCwgZmxhZ3MpXG4iCiAiLS1cbiIKICJcbiIKICJBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIFBsYXlTb3VuZCBBUEkuXG4iCkBAIC0xNCwyMSArMTQsMjQgQEAKICIgICAgRmxhZyB2YWx1ZXMsIG9yZWQgdG9nZXRoZXIuICBTZWUgbW9kdWxlIGRvY3VtZW50YXRpb24uIik7CiAKICNkZWZpbmUgV0lOU09VTkRfUExBWVNPVU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJQbGF5U291bmQiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfUGxheVNvdW5kLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX1BsYXlTb3VuZF9fZG9jX199LAorICAgIHsiUGxheVNvdW5kIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX1BsYXlTb3VuZCwgTUVUSF9GQVNUQ0FMTCwgd2luc291bmRfUGxheVNvdW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpzb3VuZCwgaW50IGZsYWdzKTsKK3dpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VuZCwgaW50IGZsYWdzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX1BsYXlTb3VuZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX1BsYXlTb3VuZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKnNvdW5kOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNvdW5kIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT2k6UGxheVNvdW5kIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqc291bmQ7CiAgICAgaW50IGZsYWdzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaaTpQbGF5U291bmQiLAotICAgICAgICAmc291bmQsICZmbGFncykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzb3VuZCwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKG1vZHVsZSwgc291bmQsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTM2LDcgKzM5LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHdpbnNvdW5kX0JlZXBfX2RvY19fLAotIkJlZXAoJG1vZHVsZSwgZnJlcXVlbmN5LCBkdXJhdGlvbiwgLylcbiIKKyJCZWVwKCRtb2R1bGUsIC8sIGZyZXF1ZW5jeSwgZHVyYXRpb24pXG4iCiAiLS1cbiIKICJcbiIKICJBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJLlxuIgpAQCAtNDgsMjEgKzUxLDI0IEBACiAiICAgIEhvdyBsb25nIHRoZSBzb3VuZCBzaG91bGQgcGxheSwgaW4gbWlsbGlzZWNvbmRzLiIpOwogCiAjZGVmaW5lIFdJTlNPVU5EX0JFRVBfTUVUSE9EREVGICAgIFwKLSAgICB7IkJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9CZWVwX19kb2NfX30sCisgICAgeyJCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX0JlZXAsIE1FVEhfRkFTVENBTEwsIHdpbnNvdW5kX0JlZXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnNvdW5kX0JlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZnJlcXVlbmN5LCBpbnQgZHVyYXRpb24pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX0JlZXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmcmVxdWVuY3kiLCAiZHVyYXRpb24iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaTpCZWVwIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZnJlcXVlbmN5OwogICAgIGludCBkdXJhdGlvbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6QmVlcCIsCi0gICAgICAgICZmcmVxdWVuY3ksICZkdXJhdGlvbikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmcmVxdWVuY3ksICZkdXJhdGlvbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9CZWVwX2ltcGwobW9kdWxlLCBmcmVxdWVuY3ksIGR1cmF0aW9uKTsKIAogZXhpdDoKQEAgLTcwLDcgKzc2LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfXywKLSJNZXNzYWdlQmVlcCgkbW9kdWxlLCB4PU1CX09LLCAvKVxuIgorIk1lc3NhZ2VCZWVwKCRtb2R1bGUsIC8sIHR5cGU9TUJfT0spXG4iCiAiLS1cbiIKICJcbiIKICJDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAoeCkuXG4iCkBAIC03OCwyMyArODQsMjYgQEAKICJ4IGRlZmF1bHRzIHRvIE1CX09LLiIpOwogCiAjZGVmaW5lIFdJTlNPVU5EX01FU1NBR0VCRUVQX01FVEhPRERFRiAgICBcCi0gICAgeyJNZXNzYWdlQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9NZXNzYWdlQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9NZXNzYWdlQmVlcF9fZG9jX199LAorICAgIHsiTWVzc2FnZUJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfTWVzc2FnZUJlZXAsIE1FVEhfRkFTVENBTEwsIHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB4KTsKK3dpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHR5cGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfTWVzc2FnZUJlZXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit3aW5zb3VuZF9NZXNzYWdlQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGludCB4ID0gTUJfT0s7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidHlwZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpOk1lc3NhZ2VCZWVwIiwgX2tleXdvcmRzLCAwfTsKKyAgICBpbnQgdHlwZSA9IE1CX09LOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpNZXNzYWdlQmVlcCIsCi0gICAgICAgICZ4KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnR5cGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKG1vZHVsZSwgeCk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwobW9kdWxlLCB0eXBlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMwYjI5MGRhZjIzMzBkYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJmZTE2YjJiOGI0OTBjYjEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY29uZmlnLmMgYi9QQy9jb25maWcuYwppbmRleCA2NmJmNDU4Li40M2Q5ZTIwIDEwMDY0NAotLS0gYS9QQy9jb25maWcuYworKysgYi9QQy9jb25maWcuYwpAQCAtMjMsNiArMjMsOCBAQAogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTEodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhMjU2KHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTUxMih2b2lkKTsKK2V4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGEzKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2JsYWtlMih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X3RpbWUodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fdGhyZWFkKHZvaWQpOwogI2lmZGVmIFdJTjMyCkBAIC05Niw2ICs5OCw4IEBACiAgICAgeyJfc2hhMSIsIFB5SW5pdF9fc2hhMX0sCiAgICAgeyJfc2hhMjU2IiwgUHlJbml0X19zaGEyNTZ9LAogICAgIHsiX3NoYTUxMiIsIFB5SW5pdF9fc2hhNTEyfSwKKyAgICB7Il9zaGEzIiwgUHlJbml0X19zaGEzfSwKKyAgICB7Il9ibGFrZTIiLCBQeUluaXRfX2JsYWtlMn0sCiAgICAgeyJ0aW1lIiwgUHlJbml0X3RpbWV9LAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgeyJfdGhyZWFkIiwgUHlJbml0X190aHJlYWR9LApkaWZmIC0tZ2l0IGEvUEMvZ2V0cGF0aHAuYyBiL1BDL2dldHBhdGhwLmMKaW5kZXggYzdkZGYxZS4uMzFmOTczZSAxMDA2NDQKLS0tIGEvUEMvZ2V0cGF0aHAuYworKysgYi9QQy9nZXRwYXRocC5jCkBAIC02LDcgKzYsOSBAQAogICAgUEFUSCBSVUxFUyBGT1IgV0lORE9XUzoKICAgIFRoaXMgZGVzY3JpYmVzIGhvdyBzeXMucGF0aCBpcyBmb3JtZWQgb24gV2luZG93cy4gIEl0IGRlc2NyaWJlcyB0aGUKICAgIGZ1bmN0aW9uYWxpdHksIG5vdCB0aGUgaW1wbGVtZW50YXRpb24gKGllLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlc2UKLSAgIGFyZSBhY3R1YWxseSBmZXRjaGVkIGlzIGRpZmZlcmVudCkKKyAgIGFyZSBhY3R1YWxseSBmZXRjaGVkIGlzIGRpZmZlcmVudCkuIFRoZSBwcmVzZW5jZSBvZiBhIHB5dGhvbi5fcHRoIG9yCisgICBweXRob25YWS5fcHRoIGZpbGUgYWxvbmdzaWRlIHRoZSBwcm9ncmFtIG92ZXJyaWRlcyB0aGVzZSBydWxlcyAtIHNlZQorICAgYmVsb3cuCiAKICAgICogUHl0aG9uIGFsd2F5cyBhZGRzIGFuIGVtcHR5IGVudHJ5IGF0IHRoZSBzdGFydCwgd2hpY2ggY29ycmVzcG9uZHMKICAgICAgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgpAQCAtMjMsOSArMjUsOSBAQAogCiAgICAqIFdlIGF0dGVtcHQgdG8gbG9jYXRlIHRoZSAiUHl0aG9uIEhvbWUiIC0gaWYgdGhlIFBZVEhPTkhPTUUgZW52IHZhcgogICAgICBpcyBzZXQsIHdlIGJlbGlldmUgaXQuICBPdGhlcndpc2UsIHdlIHVzZSB0aGUgcGF0aCBvZiBvdXIgaG9zdCAuRVhFJ3MKLSAgICAgdG8gdHJ5IGFuZCBsb2NhdGUgb3VyICJsYW5kbWFyayIgKGxpYlxcb3MucHkpIGFuZCBkZWR1Y2Ugb3VyIGhvbWUuCisgICAgIHRvIHRyeSBhbmQgbG9jYXRlIG9uZSBvZiBvdXIgImxhbmRtYXJrcyIgYW5kIGRlZHVjZSBvdXIgaG9tZS4KICAgICAgLSBJZiB3ZSBETyBoYXZlIGEgUHl0aG9uIEhvbWU6IFRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMgKExpYiwKLSAgICAgICBwbGF0LXdpbiwgZXRjKSBhcmUgYmFzZWQgb24gdGhlIFB5dGhvbiBIb21lCisgICAgICAgRExMcywgZXRjKSBhcmUgYmFzZWQgb24gdGhlIFB5dGhvbiBIb21lCiAgICAgIC0gSWYgd2UgRE8gTk9UIGhhdmUgYSBQeXRob24gSG9tZSwgdGhlIGNvcmUgUHl0aG9uIFBhdGggaXMKICAgICAgICBsb2FkZWQgZnJvbSB0aGUgcmVnaXN0cnkuICBUaGlzIGlzIHRoZSBtYWluIFB5dGhvblBhdGgga2V5LAogICAgICAgIGFuZCBib3RoIEhLTE0gYW5kIEhLQ1UgYXJlIGNvbWJpbmVkIHRvIGZvcm0gdGhlIHBhdGgpCkBAIC0zMyw3ICszNSwyMyBAQAogICAgKiBJZmYgLSB3ZSBjYW4gbm90IGxvY2F0ZSB0aGUgUHl0aG9uIEhvbWUsIGhhdmUgbm90IGhhZCBhIFBZVEhPTlBBVEgKICAgICAgc3BlY2lmaWVkLCBhbmQgY2FuJ3QgbG9jYXRlIGFueSBSZWdpc3RyeSBlbnRyaWVzIChpZSwgd2UgaGF2ZSBfbm90aGluZ18KICAgICAgd2UgY2FuIGFzc3VtZSBpcyBhIGdvb2QgcGF0aCksIGEgZGVmYXVsdCBwYXRoIHdpdGggcmVsYXRpdmUgZW50cmllcyBpcwotICAgICB1c2VkIChlZy4gLlxMaWI7LlxwbGF0LXdpbiwgZXRjKQorICAgICB1c2VkIChlZy4gLlxMaWI7LlxETExzLCBldGMpCisKKworICAgSWYgYSAnLl9wdGgnIGZpbGUgZXhpc3RzIGFkamFjZW50IHRvIHRoZSBleGVjdXRhYmxlIHdpdGggdGhlIHNhbWUgYmFzZSBuYW1lCisgICAoZS5nLiBweXRob24uX3B0aCBhZGphY2VudCB0byBweXRob24uZXhlKSBvciBhZGphY2VudCB0byB0aGUgc2hhcmVkIGxpYnJhcnkKKyAgIChlLmcuIHB5dGhvbjM2Ll9wdGggYWRqYWNlbnQgdG8gcHl0aG9uMzYuZGxsKSwgaXQgaXMgdXNlZCBpbiBwcmVmZXJlbmNlIHRvCisgICB0aGUgYWJvdmUgcHJvY2Vzcy4gVGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZQorICAgZXhlY3V0YWJsZS4gVGhlIHBhdGggZmlsZSBtdXN0IGNvbnRhaW4gYSBsaXN0IG9mIHBhdGhzIHRvIGFkZCB0byBzeXMucGF0aCwKKyAgIG9uZSBwZXIgbGluZS4gRWFjaCBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgIEJsYW5rIGxpbmVzIGFuZCBjb21tZW50cyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIHBlcm1pdHRlZC4KKworICAgSW4gdGhlIHByZXNlbmNlIG9mIHRoaXMgLl9wdGggZmlsZSwgbm8gb3RoZXIgcGF0aHMgYXJlIGFkZGVkIHRvIHRoZSBzZWFyY2gKKyAgIHBhdGgsIHRoZSByZWdpc3RyeSBmaW5kZXIgaXMgbm90IGVuYWJsZWQsIHNpdGUucHkgaXMgbm90IGltcG9ydGVkIGFuZAorICAgaXNvbGF0ZWQgbW9kZSBpcyBlbmFibGVkLiBUaGUgc2l0ZSBwYWNrYWdlIGNhbiBiZSBlbmFibGVkIGJ5IGluY2x1ZGluZyBhCisgICBsaW5lIHJlYWRpbmcgImltcG9ydCBzaXRlIjsgbm8gb3RoZXIgaW1wb3J0cyBhcmUgcmVjb2duaXplZC4gQW55IGludmFsaWQKKyAgIGVudHJ5IChvdGhlciB0aGFuIGRpcmVjdG9yaWVzIHRoYXQgZG8gbm90IGV4aXN0KSB3aWxsIHJlc3VsdCBpbiBpbW1lZGlhdGUKKyAgIHRlcm1pbmF0aW9uIG9mIHRoZSBwcm9ncmFtLgogCiAKICAgVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6CkBAIC01Miw3ICs3MCwxMSBAQAogICAgIHNvbWUgZGVmYXVsdCwgYnV0IHJlbGF0aXZlLCBwYXRocy4KIAogICAqIEFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiBjYW4gdXNlIFB5X1NldFBhdGgoKSB0byBvdmVycmlkZSBhbGwgb2YKLSAgICB0aGVzZSBhdXRob21hdGljIHBhdGggY29tcHV0YXRpb25zLgorICAgIHRoZXNlIGF1dG9tYXRpYyBwYXRoIGNvbXB1dGF0aW9ucy4KKworICAqIEFuIGluc3RhbGwgb2YgUHl0aG9uIGNhbiBmdWxseSBzcGVjaWZ5IHRoZSBjb250ZW50cyBvZiBzeXMucGF0aCB1c2luZworICAgIGVpdGhlciBhICdFWEVOQU1FLl9wdGgnIG9yICdETExOQU1FLl9wdGgnIGZpbGUsIG9wdGlvbmFsbHkgaW5jbHVkaW5nCisgICAgImltcG9ydCBzaXRlIiB0byBlbmFibGUgdGhlIHNpdGUgbW9kdWxlLgogCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTYxLDEwICs4MywxMyBAQAogI2luY2x1ZGUgIm9zZGVmcy5oIgogI2luY2x1ZGUgPHdjaGFyLmg+CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0jaW5jbHVkZSA8d2luZG93cy5oPgorI2lmbmRlZiBNU19XSU5ET1dTCisjZXJyb3IgZ2V0cGF0aHAuYyBzaG91bGQgb25seSBiZSBidWlsdCBvbiBXaW5kb3dzCiAjZW5kaWYKIAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxTaGx3YXBpLmg+CisKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYgLyogSEFWRV9TWVNfVFlQRVNfSCAqLwpAQCAtMTIyLDYgKzE0NywzMyBAQAogICAgIGRpcltpXSA9ICdcMCc7CiB9CiAKK3N0YXRpYyBpbnQKK2NoYW5nZV9leHQod2NoYXJfdCAqZGVzdCwgY29uc3Qgd2NoYXJfdCAqc3JjLCBjb25zdCB3Y2hhcl90ICpleHQpCit7CisgICAgc2l6ZV90IHNyY19sZW4gPSB3Y3NubGVuX3Moc3JjLCBNQVhQQVRITEVOKzEpOworICAgIHNpemVfdCBpID0gc3JjX2xlbjsKKyAgICBpZiAoaSA+PSBNQVhQQVRITEVOKzEpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgcmVkdWNlKCkiKTsKKworICAgIHdoaWxlIChpID4gMCAmJiBzcmNbaV0gIT0gJy4nICYmICFpc19zZXAoc3JjW2ldKSkKKyAgICAgICAgLS1pOworCisgICAgaWYgKGkgPT0gMCkgeworICAgICAgICBkZXN0WzBdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChpc19zZXAoc3JjW2ldKSkKKyAgICAgICAgaSA9IHNyY19sZW47CisKKyAgICBpZiAod2NzbmNweV9zKGRlc3QsIE1BWFBBVEhMRU4rMSwgc3JjLCBpKSB8fAorICAgICAgICB3Y3NjYXRfcyhkZXN0LCBNQVhQQVRITEVOKzEsIGV4dCkpIHsKKyAgICAgICAgZGVzdFswXSA9ICdcMCc7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KIAogc3RhdGljIGludAogZXhpc3RzKHdjaGFyX3QgKmZpbGVuYW1lKQpAQCAtMTM1LDcgKzE4Nyw3IEBACiBzdGF0aWMgaW50CiBpc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSwgaW50IHVwZGF0ZV9maWxlbmFtZSkgLyogSXMgbW9kdWxlIC0tIGNoZWNrIGZvciAucHljLy5weW8gdG9vICovCiB7Ci0gICAgaW50IG47CisgICAgc2l6ZV90IG47CiAKICAgICBpZiAoZXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIDE7CkBAIC0xNjMsMjQgKzIxNSwzMCBAQAogICAgdGhhbiBNQVhQQVRITEVOIGNoYXJhY3RlcnMgYXQgZXhpdC4gIElmIHN0dWZmIGlzIHRvbyBsb25nLCBvbmx5IGFzIG11Y2ggb2YKICAgIHN0dWZmIGFzIGZpdHMgd2lsbCBiZSBhcHBlbmRlZC4KICovCisKK3N0YXRpYyBpbnQgX1BhdGhDY2hDb21iaW5lRXhfSW5pdGlhbGl6ZWQgPSAwOwordHlwZWRlZiBIUkVTVUxUKF9fc3RkY2FsbCAqUFBhdGhDY2hDb21iaW5lRXgpKFBXU1RSIHBzelBhdGhPdXQsIHNpemVfdCBjY2hQYXRoT3V0LCBQQ1dTVFIgcHN6UGF0aEluLCBQQ1dTVFIgcHN6TW9yZSwgdW5zaWduZWQgbG9uZyBkd0ZsYWdzKTsKK3N0YXRpYyBQUGF0aENjaENvbWJpbmVFeCBfUGF0aENjaENvbWJpbmVFeDsKKwogc3RhdGljIHZvaWQKIGpvaW4od2NoYXJfdCAqYnVmZmVyLCBjb25zdCB3Y2hhcl90ICpzdHVmZikKIHsKLSAgICBzaXplX3QgbjsKLSAgICBpZiAoaXNfc2VwKHN0dWZmWzBdKSB8fAotICAgICAgICAod2Nzbmxlbl9zKHN0dWZmLCA0KSA+PSAzICYmIHN0dWZmWzFdID09ICc6JyAmJiBpc19zZXAoc3R1ZmZbMl0pKSkgewotICAgICAgICBpZiAod2NzY3B5X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChfUGF0aENjaENvbWJpbmVFeF9Jbml0aWFsaXplZCA9PSAwKSB7CisgICAgICAgIEhNT0RVTEUgcGF0aGFwaSA9IExvYWRMaWJyYXJ5VyhMImFwaS1tcy13aW4tY29yZS1wYXRoLWwxLTEtMC5kbGwiKTsKKyAgICAgICAgaWYgKHBhdGhhcGkpCisgICAgICAgICAgICBfUGF0aENjaENvbWJpbmVFeCA9IChQUGF0aENjaENvbWJpbmVFeClHZXRQcm9jQWRkcmVzcyhwYXRoYXBpLCAiUGF0aENjaENvbWJpbmVFeCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBfUGF0aENjaENvbWJpbmVFeCA9IE5VTEw7CisgICAgICAgIF9QYXRoQ2NoQ29tYmluZUV4X0luaXRpYWxpemVkID0gMTsKICAgICB9CiAKLSAgICBuID0gd2Nzbmxlbl9zKGJ1ZmZlciwgTUFYUEFUSExFTisxKTsKLSAgICBpZiAobiA+IDAgJiYgIWlzX3NlcChidWZmZXJbbiAtIDFdKSAmJiBuIDwgTUFYUEFUSExFTikgewotICAgICAgICBidWZmZXJbbl0gPSBTRVA7Ci0gICAgICAgIGJ1ZmZlcltuICsgMV0gPSAnXDAnOworICAgIGlmIChfUGF0aENjaENvbWJpbmVFeCkgeworICAgICAgICBpZiAoRkFJTEVEKF9QYXRoQ2NoQ29tYmluZUV4KGJ1ZmZlciwgTUFYUEFUSExFTisxLCBidWZmZXIsIHN0dWZmLCAwKSkpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghUGF0aENvbWJpbmVXKGJ1ZmZlciwgYnVmZmVyLCBzdHVmZikpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwogICAgIH0KLSAgICBpZiAod2NzY2F0X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwogfQogCiAvKiBnb3RsYW5kbWFyayBvbmx5IGNhbGxlZCBieSBzZWFyY2hfZm9yX3ByZWZpeCwgd2hpY2ggZW5zdXJlcwpAQCAtMTg4LDcgKzI0Niw3IEBACiAgICAnbGFuZG1hcmsnIGNhbiBub3Qgb3ZlcmZsb3cgcHJlZml4IGlmIHRvbyBsb25nLgogKi8KIHN0YXRpYyBpbnQKLWdvdGxhbmRtYXJrKHdjaGFyX3QgKmxhbmRtYXJrKQorZ290bGFuZG1hcmsoY29uc3Qgd2NoYXJfdCAqbGFuZG1hcmspCiB7CiAgICAgaW50IG9rOwogICAgIFB5X3NzaXplX3QgbiA9IHdjc25sZW5fcyhwcmVmaXgsIE1BWFBBVEhMRU4pOwpAQCAtMjAyLDcgKzI2MCw3IEBACiAvKiBhc3N1bWVzIGFyZ3YwX3BhdGggaXMgTUFYUEFUSExFTisxIGJ5dGVzIGxvbmcsIGFscmVhZHkgXDAgdGVybSdkLgogICAgYXNzdW1wdGlvbiBwcm92aWRlZCBieSBvbmx5IGNhbGxlciwgY2FsY3VsYXRlX3BhdGgoKSAqLwogc3RhdGljIGludAotc2VhcmNoX2Zvcl9wcmVmaXgod2NoYXJfdCAqYXJndjBfcGF0aCwgd2NoYXJfdCAqbGFuZG1hcmspCitzZWFyY2hfZm9yX3ByZWZpeCh3Y2hhcl90ICphcmd2MF9wYXRoLCBjb25zdCB3Y2hhcl90ICpsYW5kbWFyaykKIHsKICAgICAvKiBTZWFyY2ggZnJvbSBhcmd2MF9wYXRoLCB1bnRpbCBsYW5kbWFyayBpcyBmb3VuZCAqLwogICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTiArIDEsIGFyZ3YwX3BhdGgpOwpAQCAtMjE0LDcgKzI3Miw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBNU19XSU5ET1dTCiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAogCiAvKiBhIHN0cmluZyBsb2FkZWQgZnJvbSB0aGUgRExMIGF0IHN0YXJ0dXAuKi8KQEAgLTM2OSw3ICs0MjYsNiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAjZW5kaWYgLyogUHlfRU5BQkxFX1NIQVJFRCAqLwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogc3RhdGljIHZvaWQKIGdldF9wcm9ncGF0aCh2b2lkKQpAQCAtMzc4LDcgKzQzNCw2IEBACiAgICAgd2NoYXJfdCAqcGF0aCA9IF93Z2V0ZW52KEwiUEFUSCIpOwogICAgIHdjaGFyX3QgKnByb2cgPSBQeV9HZXRQcm9ncmFtTmFtZSgpOwogCi0jaWZkZWYgTVNfV0lORE9XUwogI2lmZGVmIFB5X0VOQUJMRV9TSEFSRUQKICAgICBleHRlcm4gSEFORExFIFB5V2luX0RMTGhNb2R1bGU7CiAgICAgLyogc3RhdGljIGluaXQgb2YgcHJvZ3BhdGggZW5zdXJlcyBmaW5hbCBjaGFyIHJlbWFpbnMgXDAgKi8KQEAgLTM5MCw3ICs0NDUsNiBAQAogI2VuZGlmCiAgICAgaWYgKEdldE1vZHVsZUZpbGVOYW1lVyhOVUxMLCBwcm9ncGF0aCwgTUFYUEFUSExFTikpCiAgICAgICAgIHJldHVybjsKLSNlbmRpZgogICAgIGlmIChwcm9nID09IE5VTEwgfHwgKnByb2cgPT0gJ1wwJykKICAgICAgICAgcHJvZyA9IEwicHl0aG9uIjsKIApAQCAtNDgzLDYgKzUzNyw4MSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbnQKK3JlYWRfcHRoX2ZpbGUoY29uc3Qgd2NoYXJfdCAqcGF0aCwgd2NoYXJfdCAqcHJlZml4LCBpbnQgKmlzb2xhdGVkLCBpbnQgKm5vc2l0ZSkKK3sKKyAgICBGSUxFICpzcF9maWxlID0gX1B5X3dmb3BlbihwYXRoLCBMInIiKTsKKyAgICBpZiAoc3BfZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICB3Y3NjcHlfcyhwcmVmaXgsIE1BWFBBVEhMRU4rMSwgcGF0aCk7CisgICAgcmVkdWNlKHByZWZpeCk7CisgICAgKmlzb2xhdGVkID0gMTsKKyAgICAqbm9zaXRlID0gMTsKKworICAgIHNpemVfdCBidWZzaXogPSBNQVhQQVRITEVOOworICAgIHNpemVfdCBwcmVmaXhsZW4gPSB3Y3NsZW4ocHJlZml4KTsKKworICAgIHdjaGFyX3QgKmJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdNYWxsb2MoYnVmc2l6ICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBidWZbMF0gPSAnXDAnOworCisgICAgd2hpbGUgKCFmZW9mKHNwX2ZpbGUpKSB7CisgICAgICAgIGNoYXIgbGluZVtNQVhQQVRITEVOICsgMV07CisgICAgICAgIGNoYXIgKnAgPSBmZ2V0cyhsaW5lLCBNQVhQQVRITEVOICsgMSwgc3BfZmlsZSk7CisgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoKnAgPT0gJ1wwJyB8fCAqcCA9PSAnIycpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgd2hpbGUgKCorK3ApIHsKKyAgICAgICAgICAgIGlmICgqcCA9PSAnXHInIHx8ICpwID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAqcCA9ICdcMCc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RyY21wKGxpbmUsICJpbXBvcnQgc2l0ZSIpID09IDApIHsKKyAgICAgICAgICAgICpub3NpdGUgPSAwOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0gZWxzZSBpZiAoc3RybmNtcChsaW5lLCAiaW1wb3J0ICIsIDcpID09IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIm9ubHkgJ2ltcG9ydCBzaXRlJyBpcyBzdXBwb3J0ZWQgaW4gLl9wdGggZmlsZSIpOworICAgICAgICB9CisKKyAgICAgICAgRFdPUkQgd24gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGxpbmUsIC0xLCBOVUxMLCAwKTsKKyAgICAgICAgd2NoYXJfdCAqd2xpbmUgPSAod2NoYXJfdCopUHlNZW1fUmF3TWFsbG9jKCh3biArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgd24gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGxpbmUsIC0xLCB3bGluZSwgd24gKyAxKTsKKyAgICAgICAgd2xpbmVbd25dID0gJ1wwJzsKKworICAgICAgICB3aGlsZSAod24gKyBwcmVmaXhsZW4gKyA0ID4gYnVmc2l6KSB7CisgICAgICAgICAgICBidWZzaXogKz0gTUFYUEFUSExFTjsKKyAgICAgICAgICAgIGJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdSZWFsbG9jKGJ1ZiwgKGJ1ZnNpeiArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICghYnVmKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3bGluZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChidWZbMF0pCisgICAgICAgICAgICB3Y3NjYXRfcyhidWYsIGJ1ZnNpeiwgTCI7Iik7CisKKyAgICAgICAgd2NoYXJfdCAqYiA9ICZidWZbd2NzbGVuKGJ1ZildOworICAgICAgICB3Y3NjYXRfcyhidWYsIGJ1ZnNpeiwgcHJlZml4KTsKKyAgICAgICAgam9pbihiLCB3bGluZSk7CisKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3bGluZSk7CisgICAgfQorCisgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gYnVmOworCisgICAgZmNsb3NlKHNwX2ZpbGUpOworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CisgICAgZmNsb3NlKHNwX2ZpbGUpOworICAgIHJldHVybiAtMTsKK30KKworCiBzdGF0aWMgdm9pZAogY2FsY3VsYXRlX3BhdGgodm9pZCkKIHsKQEAgLTQ5MiwzMiArNjIxLDMzIEBACiAgICAgd2NoYXJfdCAqcHl0aG9uaG9tZSA9IFB5X0dldFB5dGhvbkhvbWUoKTsKICAgICB3Y2hhcl90ICplbnZwYXRoID0gTlVMTDsKIAotI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpbnQgc2tpcGhvbWUsIHNraXBkZWZhdWx0OwogICAgIHdjaGFyX3QgKm1hY2hpbmVwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90ICp1c2VycGF0aCA9IE5VTEw7CiAgICAgd2NoYXJfdCB6aXBfcGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGludCBhcHBsb2NhbCA9IDA7CiAKICAgICBpZiAoIVB5X0lnbm9yZUVudmlyb25tZW50RmxhZykgewogICAgICAgICBlbnZwYXRoID0gX3dnZXRlbnYoTCJQWVRIT05QQVRIIik7CiAgICAgfQotI2Vsc2UKLSAgICBjaGFyICpfZW52cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOwotICAgIHdjaGFyX3Qgd2VudnBhdGhbTUFYUEFUSExFTisxXTsKLSAgICBpZiAoX2VudnBhdGgpIHsKLSAgICAgICAgc2l6ZV90IHIgPSBtYnN0b3djcyh3ZW52cGF0aCwgX2VudnBhdGgsIE1BWFBBVEhMRU4rMSk7Ci0gICAgICAgIGVudnBhdGggPSB3ZW52cGF0aDsKLSAgICAgICAgaWYgKHIgPT0gKHNpemVfdCktMSB8fCByID49IE1BWFBBVEhMRU4pCi0gICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKLSAgICB9Ci0jZW5kaWYKIAogICAgIGdldF9wcm9ncGF0aCgpOwogICAgIC8qIHByb2dwYXRoIGd1YXJhbnRlZWQgXDAgdGVybWluYXRlZCBpbiBNQVhQQVRIKzEgYnl0ZXMuICovCiAgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCBwcm9ncGF0aCk7CiAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOwogCisgICAgLyogU2VhcmNoIGZvciBhIHN5cy5wYXRoIGZpbGUgKi8KKyAgICB7CisgICAgICAgIHdjaGFyX3Qgc3BidWZmZXJbTUFYUEFUSExFTisxXTsKKworICAgICAgICBpZiAoKGRsbHBhdGhbMF0gJiYgIWNoYW5nZV9leHQoc3BidWZmZXIsIGRsbHBhdGgsIEwiLl9wdGgiKSAmJiBleGlzdHMoc3BidWZmZXIpKSB8fAorICAgICAgICAgICAgKHByb2dwYXRoWzBdICYmICFjaGFuZ2VfZXh0KHNwYnVmZmVyLCBwcm9ncGF0aCwgTCIuX3B0aCIpICYmIGV4aXN0cyhzcGJ1ZmZlcikpKSB7CisKKyAgICAgICAgICAgIGlmICghcmVhZF9wdGhfZmlsZShzcGJ1ZmZlciwgcHJlZml4LCAmUHlfSXNvbGF0ZWRGbGFnLCAmUHlfTm9TaXRlRmxhZykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBTZWFyY2ggZm9yIGFuIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgZmlyc3QgaW4gdGhlCiAgICAgICAgZXhlY3V0YWJsZSdzIGRpcmVjdG9yeSBhbmQgdGhlbiBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KICAgICAgICBJZiBmb3VuZCwgb3BlbiBpdCBmb3IgdXNlIHdoZW4gc2VhcmNoaW5nIGZvciBwcmVmaXhlcy4KQEAgLTU0MywxNyArNjczLDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZW52X2ZpbGUgIT0gTlVMTCkgewotICAgICAgICAgICAgLyogTG9vayBmb3IgYW4gJ2FwcGxvY2FsJyB2YXJpYWJsZSBhbmQsIGlmIHRydWUsIGlnbm9yZSBhbGwgcmVnaXN0cnkKLSAgICAgICAgICAgICAqIGtleXMgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcywgYnV0IHJldGFpbiB0aGUgZGVmYXVsdCBwYXRocwotICAgICAgICAgICAgICogKERMTHMsIExpYikgYW5kIHRoZSB6aXAgZmlsZS4gU2V0dGluZyBweXRob25ob21lIGhlcmUgc3VwcHJlc3NlcwotICAgICAgICAgICAgICogdGhlIHNlYXJjaCBmb3IgTEFORE1BUksgYmVsb3cgYW5kIG92ZXJyaWRlcyAlUFlUSE9OSE9NRSUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChmaW5kX2Vudl9jb25maWdfdmFsdWUoZW52X2ZpbGUsIEwiYXBwbG9jYWwiLCB0bXBidWZmZXIpICYmCi0gICAgICAgICAgICAgICAgKGFwcGxvY2FsID0gKHdjc2ljbXAodG1wYnVmZmVyLCBMInRydWUiKSA9PSAwKSkpIHsKLSAgICAgICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKLSAgICAgICAgICAgICAgICBweXRob25ob21lID0gYXJndjBfcGF0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICAgICAgLyogTG9vayBmb3IgYSAnaG9tZScgdmFyaWFibGUgYW5kIHNldCBhcmd2MF9wYXRoIHRvIGl0LCBpZiBmb3VuZCAqLwogICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJob21lIiwgdG1wYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIHdjc2NweV9zKGFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSwgdG1wYnVmZmVyKTsKQEAgLTU2Myw4ICs2ODIsMTUgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCisgICAgY2hhbmdlX2V4dCh6aXBfcGF0aCwgZGxscGF0aFswXSA/IGRsbHBhdGggOiBwcm9ncGF0aCwgTCIuemlwIik7CisKICAgICBpZiAocHl0aG9uaG9tZSA9PSBOVUxMIHx8ICpweXRob25ob21lID09ICdcMCcpIHsKLSAgICAgICAgaWYgKHNlYXJjaF9mb3JfcHJlZml4KGFyZ3YwX3BhdGgsIExBTkRNQVJLKSkKKyAgICAgICAgaWYgKHppcF9wYXRoWzBdICYmIGV4aXN0cyh6aXBfcGF0aCkpIHsKKyAgICAgICAgICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTisxLCB6aXBfcGF0aCk7CisgICAgICAgICAgICByZWR1Y2UocHJlZml4KTsKKyAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBwcmVmaXg7CisgICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgTEFORE1BUkspKQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IHByZWZpeDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IE5VTEw7CkBAIC01NzYsMzAgKzcwMiwxNSBAQAogICAgICAgICBlbnZwYXRoID0gTlVMTDsKIAogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCi0gICAgaWYgKHdjc2NweV9zKHppcF9wYXRoLCBNQVhQQVRITEVOKzEsIGRsbHBhdGhbMF0gPyBkbGxwYXRoIDogcHJvZ3BhdGgpKQotICAgICAgICAvKiBleGNlZWRlZCBidWZmZXIgbGVuZ3RoIC0gaWdub3JlIHppcF9wYXRoICovCi0gICAgICAgIHppcF9wYXRoWzBdID0gJ1wwJzsKLSAgICBlbHNlIHsKLSAgICAgICAgd2NoYXJfdCAqZG90ID0gd2NzcmNocih6aXBfcGF0aCwgJy4nKTsKLSAgICAgICAgaWYgKCFkb3QgfHwgd2NzY3B5X3MoZG90LCBNQVhQQVRITEVOKzEgLSAoZG90IC0gemlwX3BhdGgpLCBMIi56aXAiKSkKLSAgICAgICAgICAgIC8qIGV4Y2VlZGVkIGJ1ZmZlciBsZW5ndGggLSBpZ25vcmUgemlwX3BhdGggKi8KLSAgICAgICAgICAgIHppcF9wYXRoWzBdID0gTCdcMCc7Ci0gICAgfQotCiAgICAgc2tpcGhvbWUgPSBweXRob25ob21lPT1OVUxMID8gMCA6IDE7CiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAotICAgIGlmICghYXBwbG9jYWwpIHsKLSAgICAgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOwotICAgICAgICB1c2VycGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9DVVJSRU5UX1VTRVIsIHNraXBob21lKTsKLSAgICB9CisgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOworICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgc2tpcGhvbWUpOwogI2VuZGlmCiAgICAgLyogV2Ugb25seSB1c2UgdGhlIGRlZmF1bHQgcmVsYXRpdmUgUFlUSE9OUEFUSCBpZiB3ZSBoYXZlbnQKICAgICAgICBhbnl0aGluZyBiZXR0ZXIgdG8gdXNlISAqLwogICAgIHNraXBkZWZhdWx0ID0gZW52cGF0aCE9TlVMTCB8fCBweXRob25ob21lIT1OVUxMIHx8IFwKICAgICAgICAgICAgICAgICAgIG1hY2hpbmVwYXRoIT1OVUxMIHx8IHVzZXJwYXRoIT1OVUxMOwotI2VuZGlmCiAKICAgICAvKiBXZSBuZWVkIHRvIGNvbnN0cnVjdCBhIHBhdGggZnJvbSB0aGUgZm9sbG93aW5nIHBhcnRzLgogICAgICAgICgxKSB0aGUgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaWYgc2V0OwpAQCAtNjEyLDcgKzcyMyw2IEBACiAgICAgICAgRXh0cmEgcnVsZXM6CiAgICAgICAgLSBJZiBQWVRIT05IT01FIGlzIHNldCAoaW4gYW55IHdheSkgaXRlbSAoMykgaXMgaWdub3JlZC4KICAgICAgICAtIElmIHJlZ2lzdHJ5IHZhbHVlcyBhcmUgdXNlZCwgKDQpIGFuZCAoNSkgYXJlIGlnbm9yZWQuCi0gICAgICAgLSBJZiBhcHBsb2NhbCBpcyBzZXQsICgxKSwgKDMpLCBhbmQgcmVnaXN0cnkgdmFsdWVzIGFyZSBpZ25vcmVkCiAgICAgKi8KIAogICAgIC8qIENhbGN1bGF0ZSBzaXplIG9mIHJldHVybiBidWZmZXIgKi8KQEAgLTYyOSwxMyArNzM5LDExIEBACiAgICAgICAgIGJ1ZnN6ID0gMDsKICAgICBidWZzeiArPSB3Y3NsZW4oUFlUSE9OUEFUSCkgKyAxOwogICAgIGJ1ZnN6ICs9IHdjc2xlbihhcmd2MF9wYXRoKSArIDE7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICghYXBwbG9jYWwgJiYgdXNlcnBhdGgpCisgICAgaWYgKHVzZXJwYXRoKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4odXNlcnBhdGgpICsgMTsKLSAgICBpZiAoIWFwcGxvY2FsICYmIG1hY2hpbmVwYXRoKQorICAgIGlmIChtYWNoaW5lcGF0aCkKICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKG1hY2hpbmVwYXRoKSArIDE7CiAgICAgYnVmc3ogKz0gd2NzbGVuKHppcF9wYXRoKSArIDE7Ci0jZW5kaWYKICAgICBpZiAoZW52cGF0aCAhPSBOVUxMKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4oZW52cGF0aCkgKyAxOwogCkBAIC02NTEsMTAgKzc1OSw4IEBACiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzaW5nIGRlZmF1bHQgc3RhdGljIHBhdGguXG4iKTsKICAgICAgICAgICAgIG1vZHVsZV9zZWFyY2hfcGF0aCA9IFBZVEhPTlBBVEg7CiAgICAgICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobWFjaGluZXBhdGgpOwogICAgICAgICBQeU1lbV9SYXdGcmVlKHVzZXJwYXRoKTsKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY2NCw3ICs3NzAsNiBAQAogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHppcF9wYXRoWzBdKSB7CiAgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIHppcF9wYXRoKSkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwpAQCAtNjkyLDE1ICs3OTcsNyBAQAogICAgICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIGlmIChweXRob25ob21lID09IE5VTEwpIHsKLSAgICAgICAgd2NzY3B5KGJ1ZiwgUFlUSE9OUEFUSCk7Ci0gICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKLSAgICAgICAgKmJ1ZisrID0gREVMSU07Ci0gICAgfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAgICB3Y2hhcl90ICpwID0gUFlUSE9OUEFUSDsKICAgICAgICAgd2NoYXJfdCAqcTsKICAgICAgICAgc2l6ZV90IG47CmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5pY25zIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWE5MTdmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5pY28gYi9QQy9pY29ucy9sYXVuY2hlci5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRlM2M2OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5zdmcgYi9QQy9pY29ucy9sYXVuY2hlci5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU5MGIwZAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uZ3JhcGgtbGlnaHRncmV5e2ZpbGw6I2RmZGZkZn0uc3Qwe2ZpbGw6IzAwNzhkN30uc3Qxe2ZpbGw6I2ZmZn0uc3Qye2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0M3tmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA1SDVWM2gyNXYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTI5Ljk3MiAyNi45NzJINS4wMjlWNWguOTQydjIxLjAyOGgyMy4wNTdWNWguOTQzdjIxLjk3MnoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1vdXQiIGQ9Ik0yOSA1djIxSDZWNWgyM3oiLz48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTI5LjE0MSA0bC40MjkuNDI5LS4xNC4xNDItLjQzLS40My0uNDMuNDMtLjE0LS4xNDIuNDI5LS40MjktLjQyOS0uNDI5LjE0MS0uMTQyLjQyOS40My40My0uNDMuMTQxLjE0Mi0uNDMuNDI5ek0yNy42IDMuNGgtMS4ydjEuMmgxLjJWMy40em0tMSAuMmguOHYuOGgtLjh2LS44em0tMS4xMzkuOGgtMXYuMmgxdi0uMnoiLz48cGF0aCBjbGFzcz0iZ3JhcGgtbGlnaHRncmV5IiBkPSJNNiA1aDIzdjJINnoiLz48L2c+PGcgaWQ9Imljb25GZyI+PHBhdGggY2xhc3M9InN0MCIgZD0iTTQuNSAyM3Y2Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExLjQyOSAxMy4wMTlhMTkuODggMTkuODggMCAwIDAgLjA3MS0xLjY0NWMwLTQuMjIzLTEuMzI5LTguMTY1LTMuNTU2LTEwLjU0NUw3LjE3IDBINS44M2wtLjc3NC44MjlDMi44MjkgMy4yMDkgMS41IDcuMTUxIDEuNSAxMS4zNzRjMCAuNDUzLjAyMy45LjA1MyAxLjM0NUMuODg3IDEzLjQ3Mi4zNTcgMTQuNDM4IDAgMTUuNTMzdjYuNjAzTC4yMjkgMjNIM3Y3aDJ2Mmgzdi0xaDJ2LThoMi43NzJsLjM5NC0xLjQ4OGMuMjIyLS44NDIuMzM1LTEuNzE0LjMzNS0yLjU5Mi0uMDAxLTIuNDE5LS44MDMtNC41MzQtMi4wNzItNS45MDF6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTYuNSAyMnY5TTguNSAyM3Y3Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTUgMjlINHYtNmgxdjZ6bTItNkg2djhoMXYtOHptMiAwSDh2N2gxdi03eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTEwLjM4MSAxMy4zOGMuMDctLjY1OC4xMTktMS4zMjUuMTE5LTIuMDA2IDAtMy45NzUtMS4yMjktNy42NjItMy4yODYtOS44NjJMNi41Ljc0OGwtLjcxNC43NjNDMy43MjkgMy43MTIgMi41IDcuMzk5IDIuNSAxMS4zNzRjMCAuNjgxLjA0OSAxLjM0OC4xMTkgMi4wMDZDMS4zMzkgMTQuNTIxLjUgMTYuNTUyLjUgMTguOTJjMCAuNzkzLjEwMiAxLjU3OC4zMDIgMi4zMzZMLjk5OSAyMmgxLjk2NmwuMDcyLS45MjJjLjA4MS0xLjA0Ni40NzEtMS45NjYuOTkzLTIuNTAzLjQ4NyAxLjAxOSAxLjA3IDEuOTI5IDEuNzU2IDIuNjYyTDYuNSAyMmwuNzE0LS43NjNjLjY4Ni0uNzMzIDEuMjY5LTEuNjQzIDEuNzU2LTIuNjYyLjUyMi41MzcuOTEyIDEuNDU3Ljk5MyAyLjUwM2wuMDcyLjkyMmgxLjk2NmwuMTk3LS43NDRjLjItLjc1OC4zMDItMS41NDMuMzAyLTIuMzM2IDAtMi4zNjgtLjgzOS00LjM5OS0yLjExOS01LjU0eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTMuNjE5IDE3LjYxNWMtLjg1NC42NzItMS40NjQgMS45MTMtMS41NzkgMy4zODVoLS4yNzJhOC4xODQgOC4xODQgMCAwIDEtLjI2OC0yLjA4YzAtMS43MjIuNTA1LTMuMjU5IDEuMjk3LTQuMjcyLjE4NyAxLjA1LjQ2NSAyLjA0NS44MjIgMi45Njd6bTYuNTg1LTIuOTY3YTE2LjE0NSAxNi4xNDUgMCAwIDEtLjgyMiAyLjk2N2MuODU0LjY3MSAxLjQ2NCAxLjkxMyAxLjU3OSAzLjM4NWguMjcyYTguMTg0IDguMTg0IDAgMCAwIC4yNjgtMi4wOGMtLjAwMS0xLjcyMi0uNTA2LTMuMjU5LTEuMjk3LTQuMjcyek0zLjUgMTEuMzc0YzAgMy44MzcgMS4xOTggNy4yIDMgOS4xMjggMS44MDItMS45MjcgMy01LjI5MSAzLTkuMTI4cy0xLjE5OC03LjItMy05LjEyOGMtMS44MDIgMS45MjgtMyA1LjI5MS0zIDkuMTI4eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik03LjUgN2ExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNTk2IDIzLjk2MWMtLjM1IDEuMDUzLTEuMDAxIDMuMDE1LTMuMjQ3IDMuMDE1aC0xLjN2MS4zMzdjMCAuOTA1LS4zOTIgMi41MzctMy4wMjEgMy4yOThhOS4yMTMgOS4yMTMgMCAwIDEtMi41OS4zOWMtLjgzIDAtMS42NjgtLjEyOC0yLjU2NC0uMzkyLTEuOTE4LS41NjMtMy4wMTctMS43NjUtMy4wMTctMy4yOTZ2LTEuMzM3aC0xLjE1NWMtMS42OTggMC0yLjk0My0xLjEyOS0zLjQxNi0zLjA5OC0uNDY5LTEuOTQ2LS40NjktMy4xOTUgMC01LjE0MS40NTEtMS44ODEgMS45Ni0zLjA5OCAzLjg0NS0zLjA5OGguNzI2di0xLjMzN2MwLTIuMDA1LjkwNS0yLjk4MiAzLjEyNi0zLjM3NC43MjktLjEzIDEuNTQ5LS4yIDIuMzY3LS4yMDNoLjAwNGMuOTI1IDAgMS43NjEuMDY3IDIuNTYuMjAxIDEuODE2LjMwMyAzLjEzNCAxLjcyMyAzLjEzNCAzLjM3NnYxLjMzN2gxLjNjMS4xNDIgMCAyLjYzNi41MzYgMy4yNyAzLjA5Mi41MTYgMi4wNzMuNTEgMy42MzctLjAyMiA1LjIzeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjIwNSIgeTE9Ii0yODguNjY4IiB4Mj0iNTQwLjkwMiIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfN18iIGNsYXNzPSJzdDIiIGQ9Ik0yMS4zNTQgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDcgMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzkgMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NiAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg2LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMTMiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS40NTQiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzdfIiBjbGFzcz0ic3QzIiBkPSJNMjYuNjIzIDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NmgtNC41OTN2LS41ODRIMjguMzQ4YzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5pY25zIGIvUEMvaWNvbnMvcHkuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGM0ZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHkuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5pY28gYi9QQy9pY29ucy9weS5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ4YTc5YgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5LmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5zdmcgYi9QQy9pY29ucy9weS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkyNGU4MwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5LnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi12c28tYmd7ZmlsbDojNjU2NTY1fS5pY29uLXZzby1saWdodGdyZXl7ZmlsbDojYmZiZmJmfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTI2IDguMDA5VjI5SDdWM2gxNC4wNTNMMjYgOC4wMDl6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjEuNDcxIDJINnYyOGgyMVY3LjU5OUwyMS40NzEgMnpNMjEgM2guMDUzbDQuOTM5IDVIMjFWM3ptNSAyNkg3VjNoMTN2Nmg2djIweiIvPjwvZz48cGF0aCBjbGFzcz0iaWNvbi12c28tbGlnaHRncmV5IiBkPSJNMTcgN0g5VjZoOHYxem0wIDJIOXYxaDhWOXptNyAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXoiIGlkPSJpY29uRmciLz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjY2IDI0LjA2M0MzMS4zMTIgMjUuMTE2IDMwLjY2MSAyNyAyOC40MTMgMjdIMjd2MS4zMTNjMCAuOTA1LS4zMzUgMi41MzctMi45NjUgMy4yOTgtLjkwNC4yNjEtMS42OTQuMzg5LTIuNTMxLjM4OS0uODMgMC0xLjYzLS4xMjgtMi41MjYtLjM5MkMxNy4wNjEgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjMyYy0xLjY5OSAwLTIuOTQ0LTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODY2LTIuODQ1IDMuMDg3LTMuMjM4LjcyNy0uMTI4IDEuNTA2LS4wNjUgMi4zMjctLjA2NWguMDAzYy45MjEgMCAxLjcwMy0uMDcgMi41MDQuMDY0IDEuODE4LjMwMiAzLjA3OSAxLjU4NSAzLjA3OSAzLjIzOVYxNmgxLjQxM2MxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTktLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4zMiIgeTE9Ii0yODguNjY4IiB4Mj0iNTQxLjAxNyIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfMl8iIGNsYXNzPSJzdDAiIGQ9Ik0yMS40MTkgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NyAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg3LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMjQ1IiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNTY5IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF8yXyIgY2xhc3M9InN0MSIgZD0iTTI2LjY4NyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZIMjEuNTJ2LS41ODRIMjguNDEyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4MyAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzljMC0uNDg0LjM4OC0uODc0Ljg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuaWNucyBiL1BDL2ljb25zL3B5Yy5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZGE5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWMuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuaWNvIGIvUEMvaWNvbnMvcHljLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGRkZTgxCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHljLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuc3ZnIGIvUEMvaWNvbnMvcHljLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzNlOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHljLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12cy1iZ3tmaWxsOiM0MjQyNDJ9Lmljb24tdnMtZ3JlZW57ZmlsbDojMzkzfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLWJnIiBkPSJNMjEuMDUzIDNIN3YyNmgxOVY4LjAwOXoiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0yMS40NzEgMkg2djI4aDIxVjcuNTk5TDIxLjQ3MSAyek0yMSAzaC4wNTNsNC45MzkgNUgyMVYzem01IDI2SDdWM2gxM3Y2aDZ2MjB6Ii8+PC9nPjxwYXRoIGNsYXNzPSJpY29uLXZzLWdyZWVuIiBkPSJNMTAgMTZIOXYtMWgxdjF6bTEuMDExIDVIOXYxaDIuMDMyYTguMzY4IDguMzY4IDAgMCAxLS4wMjEtMXpNMTQgMTBoMlY5aC0ydjF6bS0zLTRIOXYxaDJWNnptMCA2SDl2MWgydi0xem0yLTNIOXYxaDRWOXptNC0zdjFoMVY2aC0xem0tMyA2aC0ydjFoMnYtMXptMS02aC0ydjFoMlY2em0tNCAxMGgxdi0xaC0xdjF6bTQtNHYxaDJ2LTFoLTJ6bS0yIDRoM3YtMWgtM3Yxem0tNCAydjFoM3YtMUg5em0wIDZ2MWgzdi0xSDl6IiBpZD0iaWNvbkZnIi8+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS42NiAyNC4wNjNDMzEuMzEyIDI1LjExNiAzMC42NjEgMjcgMjguNDEzIDI3SDI3djEuMzEzYzAgLjkwNS0uMzM1IDIuNTM3LTIuOTY1IDMuMjk4LS45MDQuMjYxLTEuNjk0LjM4OS0yLjUzMS4zODktLjgzIDAtMS42My0uMTI4LTIuNTI2LS4zOTJDMTcuMDYxIDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjIzMmMtMS42OTkgMC0yLjk0NC0xLjE0MS0zLjQxNi0zLjExLS40NjktMS45NDYtLjQ2OS0zLjAyMSAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2LTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1Ljg2Ni0yLjg0NSAzLjA4Ny0zLjIzOC43MjctLjEyOCAxLjUwNi0uMDY1IDIuMzI3LS4wNjVoLjAwM2MuOTIxIDAgMS43MDMtLjA3IDIuNTA0LjA2NCAxLjgxOC4zMDIgMy4wNzkgMS41ODUgMy4wNzkgMy4yMzlWMTZoMS40MTNjMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU4LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMzIiIHkxPSItMjg4LjY2OCIgeDI9IjU0MS4wMTciIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzRfIiBjbGFzcz0ic3QwIiBkPSJNMjEuNDE5IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA4IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc4IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODcgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ny0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjI0NSIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjU2OSIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfNF8iIGNsYXNzPSJzdDEiIGQ9Ik0yNi42ODcgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2SDIxLjUydi0uNTg0SDI4LjQxMmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODMgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5YzAtLjQ4NC4zODgtLjg3NC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLmljbnMgYi9QQy9pY29ucy9weWQuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDNkMjRlCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHlkLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLmljbyBiL1BDL2ljb25zL3B5ZC5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2Y2I2MAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5ZC5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLnN2ZyBiL1BDL2ljb25zL3B5ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlZmY2YQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5ZC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi1mMTItaG92ZXItYmd7ZmlsbDojZDllYmY3fS5pY29uLWYxMi1sdGdyZXktZGlzYWJsZWR7ZmlsbDojYWJhYmFjfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6IzljYTJhN30uc3Qxe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MntmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTIxLjA1MyAzSDd2MjZoMTlWOC4wMDl6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjEuNDcxIDJINnYyOGgyMVY3LjU5OUwyMS40NzEgMnpNMjEgM2guMDUzbDQuOTM5IDVIMjFWM3ptNSAyNkg3VjNoMTN2Nmg2djIweiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTMuNzg0IDE3LjcwNWMtMS4yOTYgMC0yLjM1LTEuMDU0LTIuMzUtMi4zNXMxLjA1NC0yLjM1IDIuMzUtMi4zNSAyLjM1IDEuMDU0IDIuMzUgMi4zNS0xLjA1NCAyLjM1LTIuMzUgMi4zNXptMC00LjVjLTEuMTg2IDAtMi4xNS45NjQtMi4xNSAyLjE1cy45NjQgMi4xNTEgMi4xNSAyLjE1MSAyLjE1LS45NjUgMi4xNS0yLjE1MS0uOTY0LTIuMTUtMi4xNS0yLjE1eiIvPjxwYXRoIGNsYXNzPSJpY29uLWYxMi1ob3Zlci1iZyIgZD0iTTE4LjA1IDE2LjEyMmMuMDE2LS4wNjkuMDMxLS4xMzkuMDQzLS4yMDlsMS4zNzYtLjYxOC0uMTAzLTEuMDE1LTEuNDctLjMzYy0uMDI1LS4wNjgtLjA1Ni0uMTM0LS4wODYtLjE5OWwtLjAyNi0uMDU2Ljg5Mi0xLjIzNi0uNTk1LS44MjctMS40NS40NTNjLS4wNjktLjA2MS0uMTQxLS4xMTgtLjIxMy0uMTc1bC4xNTEtMS41MTEtLjkyOS0uNDE4LTEuMDMyIDEuMTIxLS4wNTYtLjAxM2EzLjA4OSAzLjA4OSAwIDAgMC0uMjE3LS4wNDVsLS42MTgtMS4zNzQtMS4wMTUuMTA0LS4zMjkgMS40NzJjLS4wNDkuMDE5LS4wOTYuMDQtLjE0My4wNjNsLS4wNTYuMDI1LTEuMjI1LS45MDctLjgzNS41ODYuNDM1IDEuNDU3Yy0uMDYuMDY3LS4xMjMuMTM4LS4xODIuMjEybC0xLjUwNi0uMTcyLS40MjkuOTI1TDkuNTQgMTQuNDhsLS4wMDUuMDI0YTQuMTI3IDQuMTI3IDAgMCAwLS4wNTEuMjQ2bC0xLjM4Ny42MDYuMDkyIDEuMDE1IDEuNDYzLjM0NmMuMDI0LjA2Ny4wNTUuMTMyLjA4NC4xOTRsLjAzLjA2Ny0uODYgMS4xNy0uMDQyLjA1OS41ODguODMyIDEuNDU2LS40NGMuMDcuMDYzLjEzOC4xMjIuMjA5LjE3OGwtLjE2NyAxLjUwOC45MjYuNDI3TDEyLjkyIDE5LjZsLjA0OC4wMWMuMDc0LjAxNy4xNDkuMDM0LjIyNi4wNDZsLjYwOSAxLjM4NSAxLjAxNS0uMDk1LjM0Mi0xLjQ2NmMuMDc1LS4wMjcuMTQ3LS4wNjEuMjE2LS4wOTNsLjA2Ny0uMDMxIDEuMjM1Ljg5Mi44MjctLjU5NS0uNDUyLTEuNDVjLjA2Mi0uMDcxLjEyLS4xNDIuMTc2LS4yMTVsMS41MTIuMTUxLjQxOC0uOTI5LTEuMTIyLTEuMDMzLjAxMy0uMDU1em0tNC4yNjYgMS41ODNjLTEuMjk2IDAtMi4zNS0xLjA1NC0yLjM1LTIuMzVzMS4wNTQtMi4zNSAyLjM1LTIuMzUgMi4zNSAxLjA1NCAyLjM1IDIuMzUtMS4wNTQgMi4zNS0yLjM1IDIuMzV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWx0Z3JleS1kaXNhYmxlZCIgZD0iTTEzLjgwMyAyMS4wNGwtLjYwOS0xLjM4NGEzLjA4IDMuMDggMCAwIDEtLjIzNi0uMDQ4bC0uMDM4LS4wMDgtMS4wNDMgMS4xMTEtLjkyNS0uNDI3LjE2Ny0xLjUwN2E0LjAxMyA0LjAxMyAwIDAgMS0uMjA5LS4xNzlsLTEuNDU2LjQzOS0uNTg4LS44MzIuOTAyLTEuMjI4LS4wMzMtLjA3MmMtLjAyOC0uMDYxLS4wNTgtLjEyNC0uMDgyLS4xOWwtMS40NjMtLjM0NC0uMDkxLTEuMDE1IDEuMzg3LS42MDVjLjAxMi0uMDc4LjAzLS4xNTQuMDQ3LS4yMzFsLjAwOS0uMDM5LTEuMTA5LTEuMDQ1LjQyOC0uOTI1IDEuNTA3LjE3Yy4wNTgtLjA3Mi4xMTgtLjE0LjE4My0uMjExbC0uNDM1LTEuNDU4LjgzNC0uNTg1IDEuMjI1LjkwNy4wNTItLjAyNGMuMDQ4LS4wMjIuMDk3LS4wNDQuMTQ3LS4wNjNsLjMyOS0xLjQ3MyAxLjAxNC0uMTA0LjYyIDEuMzc1YTIuMzg5IDIuMzg5IDAgMCAxIC4yNzEuMDU4bDEuMDMyLTEuMTIyLjkzLjQxOC0uMTUzIDEuNTExYy4wNzMuMDU1LjE0My4xMTMuMjE0LjE3NGwxLjQ1LS40NTMuNTk1LjgyNy0uODkyIDEuMjM2YS44LjggMCAwIDEgLjAyNC4wNTNjLjAzLjA2NC4wNjIuMTMxLjA4Ny4yMDFsMS40NzEuMzMyLjEwMyAxLjAxNC0xLjM3Ni42MThjLS4wMTIuMDcxLS4wMjcuMTQtLjA0My4yMDhsLS4wMTQuMDU4IDEuMTIyIDEuMDMzLS40MTkuOTI5LTEuNTExLS4xNTJhMy44NTEgMy44NTEgMCAwIDEtLjE3Ni4yMTVsLjQ1MiAxLjQ1LS44MjcuNTk1LTEuMjM2LS44OTItLjA3LjAzMmEyLjk0IDIuOTQgMCAwIDEtLjIxMi4wOTJsLS4zNDEgMS40NjUtMS4wMTUuMDk1em0tLjk1MS0xLjY2bC4xNTEuMDMzYy4wODkuMDIxLjE3OS4wNDIuMjcyLjA1M2wuMDU2LjAwNy41OTcgMS4zNTQuNzI4LS4wNjcuMzMzLTEuNDM1LjA1NC0uMDE4Yy4wODMtLjAyNS4xNjEtLjA2Mi4yNDQtLjEwMS4wNDItLjAyLjA4NC0uMDM5LjEyNy0uMDU3bC4wNTItLjAyMiAxLjIxMS44NzQuNTkzLS40MjctLjQ0Mi0xLjQyMS4wMzgtLjA0M2MuMDg1LS4wOTQuMTYzLS4xODguMjM2LS4yODhsLjAzMy0uMDQ2IDEuNDguMTUuMy0uNjY3LTEuMDk5LTEuMDEyLjAxMi0uMDU1LjAyNS0uMTE3Yy4wMTktLjA4LjAzNy0uMTYuMDQ3LS4yNDRsLjAwNy0uMDU2IDEuMzQ4LS42MDUtLjA3My0uNzI4LTEuNDQxLS4zMjQtLjAxOC0uMDU1Yy0uMDI1LS4wODEtLjA2MS0uMTU3LS4wOTYtLjIzM2EyLjE0NSAyLjE0NSAwIDAgMS0uMDUtLjEwOWwtLjAyMi0uMDUyLjg3NC0xLjIxMi0uNDI3LS41OTMtMS40Mi40NDMtLjA0Mi0uMDM4YTMuODk2IDMuODk2IDAgMCAwLS4yODgtLjIzNUwxNi4yMDcgMTJsLjE0OS0xLjQ4LS42NjctLjMtMS4wMTIgMS4xLS4wNTYtLjAxMWMtLjA0LS4wMDgtLjA4LS4wMTgtLjExOS0uMDI3LS4wODItLjAxOS0uMTYyLS4wMzgtLjI0Ni0uMDQ4bC0uMDU2LS4wMDUtLjYwNy0xLjM0Ni0uNzI3LjA3NC0uMzIzIDEuNDQxLS4wNTQuMDE4Yy0uMDYzLjAyLS4xMjEuMDQ3LS4xOC4wNzQtLjAzNy4wMTctLjA3My4wMzQtLjExMS4wNDlsLS4wNTIuMDIyLTEuMi0uODktLjU5OS40Mi40MjYgMS40MjktLjAzOC4wNDJhNC4wNyA0LjA3IDAgMCAwLS4yNDQuMjg0bC0uMDM0LjA0NS0xLjQ3Ni0uMTY3LS4zMDcuNjYzIDEuMDg2IDEuMDI0LS4wMzQuMTUxYy0uMDIuMDg5LS4wNDEuMTc3LS4wNTIuMjY5bC0uMDA3LjA1Ni0xLjM1OC41OTMuMDY2LjcyOCAxLjQzMS4zMzcuMDE3LjA1NWMuMDI0LjA3Ny4wNTguMTQ4LjA5MS4yMi4wMjEuMDQzLjA0MS4wODYuMDU5LjEzMWwuMDIyLjA1Mi0uODg1IDEuMjAzLjQyMi41OTggMS40MjYtLjQzMi4wNDIuMDM4Yy4wODMuMDc1LjE3OS4xNjMuMjgyLjI0bC4wNDUuMDM1LS4xNjMgMS40NzYuNjY0LjMwNiAxLjAyNC0xLjA4N3pNMjAuOTE4IDIyLjk3MmExLjM1IDEuMzUgMCAxIDEgLjAwMS0yLjY5OSAxLjM1IDEuMzUgMCAwIDEtLjAwMSAyLjY5OXptMC0yLjVjLS42MzQgMC0xLjE1LjUxNy0xLjE1IDEuMTVzLjUxNyAxLjE1IDEuMTUgMS4xNSAxLjE1LS41MTcgMS4xNS0xLjE1LS41MTYtMS4xNS0xLjE1LTEuMTV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWhvdmVyLWJnIiBkPSJNMjQuOTAxIDIyLjAyOHYtLjgxMmwtMS4yNjktLjQyM2EyLjc0NyAyLjc0NyAwIDAgMC0uMjEtLjUwNWwuNTk5LTEuMTk2LS41NzQtLjU3NC0xLjE5Ni41OTlhMi44MSAyLjgxIDAgMCAwLS41MDUtLjIwOWwtLjQyMy0xLjI2OGgtLjgxMWwtLjQyMyAxLjI2OGEyLjgxIDIuODEgMCAwIDAtLjUwNS4yMDlsLTEuMTk3LS41OTktLjU3My41NzQuNTk5IDEuMTk2YTIuNzQ3IDIuNzQ3IDAgMCAwLS4yMS41MDVsLTEuMjY4LjQyM3YuODEybDEuMjY4LjQyMmMuMDU0LjE3NS4xMjQuMzQ1LjIxLjUwNmwtLjU5OSAxLjE5Ni41NzMuNTc0IDEuMTk3LS42Yy4xNjEuMDg3LjMzMS4xNTcuNTA1LjIxbC40MjMgMS4yNjloLjgxMWwuNDIzLTEuMjY5Yy4xNzQtLjA1My4zNDMtLjEyMy41MDUtLjIxbDEuMTk2LjYuNTc0LS41NzQtLjU5OS0xLjE5NmMuMDg2LS4xNjEuMTU2LS4zMzEuMjEtLjUwNmwxLjI2OS0uNDIyem0tMy45ODMuOTQzYy0uNzQ0IDAtMS4zNS0uNjA2LTEuMzUtMS4zNSAwLS43NDQuNjA1LTEuMzUgMS4zNS0xLjM1Ljc0NCAwIDEuMzUuNjA1IDEuMzUgMS4zNSAwIC43NDUtLjYwNiAxLjM1LTEuMzUgMS4zNXoiLz48cGF0aCBjbGFzcz0iaWNvbi1mMTItbHRncmV5LWRpc2FibGVkIiBkPSJNMjEuMzIzIDI1LjYwNGgtLjgxMWwtLjQyMy0xLjI2OWEyLjgxNCAyLjgxNCAwIDAgMS0uNTA1LS4yMDlsLTEuMTk3LjU5OS0uNTczLS41NzQuNTk5LTEuMTk2YTIuNzQ3IDIuNzQ3IDAgMCAxLS4yMS0uNTA1bC0xLjI2OS0uNDIzdi0uODEybDEuMjY5LS40MjJjLjA1NC0uMTc1LjEyNC0uMzQ1LjIxLS41MDZsLS41OTktMS4xOTYuNTczLS41NzMgMS4xOTcuNTk5Yy4xNjEtLjA4Ny4zMzEtLjE1Ny41MDUtLjIxbC40MjMtMS4yNjloLjgxMWwuNDIzIDEuMjY5Yy4xNzQuMDUzLjM0NC4xMjMuNTA1LjIxbDEuMTk2LS41OTkuNTc0LjU3My0uNTk5IDEuMTk2Yy4wODYuMTYxLjE1Ni4zMzEuMjEuNTA2bDEuMjY5LjQyMnYuODEybC0xLjI2OS40MjNhMi43NDcgMi43NDcgMCAwIDEtLjIxLjUwNWwuNTk5IDEuMTk2LS41NzQuNTc0LTEuMTk2LS41OTlhMi44MTQgMi44MTQgMCAwIDEtLjUwNS4yMDlsLS40MjMgMS4yNjl6bS0uNjY2LS4xOTloLjUyMWwuNDExLTEuMjMyLjA1MS0uMDE1Yy4xOTMtLjA1NC4zODItLjEzMi41Ni0uMjMxbC4wNDYtLjAyNiAxLjE2Mi41ODEuMzY5LS4zNjktLjU4LTEuMTYyLjAyNi0uMDQ2Yy4wOTktLjE3OC4xNzctLjM2Ni4yMzItLjU2bC4wMTQtLjA1MSAxLjIzMi0uNDExdi0uNTIzbC0xLjIzMi0uNDEtLjAxNC0uMDUxYTIuODEgMi44MSAwIDAgMC0uMjMyLS41NjFsLS4wMjYtLjA0Ni41OC0xLjE2Mi0uMzY5LS4zNjgtMS4xNjIuNTgtLjA0Ni0uMDI2YTIuNjI3IDIuNjI3IDAgMCAwLS41Ni0uMjMybC0uMDUtLjAxNC0uNDExLTEuMjMyaC0uNTIxbC0uNDExIDEuMjMyLS4wNTEuMDE0YTIuNzU4IDIuNzU4IDAgMCAwLS41Ni4yMzJsLS4wNDYuMDI2LTEuMTYzLS41OC0uMzY4LjM2OC41OCAxLjE2Mi0uMDI2LjA0NmEyLjY3NSAyLjY3NSAwIDAgMC0uMjMyLjU2MWwtLjAxNC4wNTEtMS4yMzIuNDF2LjUyMmwxLjIzMi40MTEuMDE0LjA1MWMuMDU2LjE5My4xMzQuMzgyLjIzMi41NmwuMDI2LjA0Ni0uNTggMS4xNjIuMzY4LjM2OSAxLjE2My0uNTgxLjA0Ni4wMjZjLjE3OC4xLjM2Ni4xNzguNTYuMjMxbC4wNTEuMDE1LjQxIDEuMjMzeiIvPjwvZz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjY2IDI0LjA2M0MzMS4zMTIgMjUuMTE2IDMwLjY2MSAyNyAyOC40MTMgMjdIMjd2MS4zMTNjMCAuOTA1LS4zMzUgMi41MzctMi45NjUgMy4yOTgtLjkwNC4yNjEtMS42OTQuMzg5LTIuNTMxLjM4OS0uODMgMC0xLjYzLS4xMjgtMi41MjYtLjM5MkMxNy4wNjEgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjMyYy0xLjY5OSAwLTIuOTQ0LTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODY2LTIuODQ1IDMuMDg3LTMuMjM4LjcyNy0uMTI4IDEuNTA2LS4wNjUgMi4zMjctLjA2NWguMDAzYy45MjEgMCAxLjcwMy0uMDcgMi41MDQuMDY0IDEuODE4LjMwMiAzLjA3OSAxLjU4NSAzLjA3OSAzLjIzOVYxNmgxLjQxM2MxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTgtLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4zMiIgeTE9Ii0yODguNjY4IiB4Mj0iNTQxLjAxNyIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfNV8iIGNsYXNzPSJzdDEiIGQ9Ik0yMS40MTkgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NyAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg3LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMjQ1IiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNTY5IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF81XyIgY2xhc3M9InN0MiIgZD0iTTI2LjY4NyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZIMjEuNTJ2LS41ODRIMjguNDEyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4MyAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzljMC0uNDg0LjM4OC0uODc0Ljg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uaWNucyBiL1BDL2ljb25zL3B5dGhvbi5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNTNlMDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob24uaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uaWNvIGIvUEMvaWNvbnMvcHl0aG9uLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGEzOGVmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9uLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uc3ZnIGIvUEMvaWNvbnMvcHl0aG9uLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjNlNWEzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9uLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdmlzdWFsc3R1ZGlvLW9ubGluZXtmaWxsOiMwMDdhY2N9Lmljb24tdnMtYmd7ZmlsbDojNDI0MjQyfS5pY29uLXZzLWdyZWVue2ZpbGw6IzM5M30uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA0SDJWMmgyOHYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTI5IDR2MjFIM1Y0SDJ2MjJoMjhWNHoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1iZyIgZD0iTTEwIDRIM3YyMWgyNlY0eiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTI5LjE0MSAzbC40MjkuNDI5LS4xNC4xNDItLjQzLS40My0uNDMuNDMtLjE0LS4xNDIuNDI5LS40MjktLjQyOS0uNDI5LjE0MS0uMTQyLjQyOS40My40My0uNDMuMTQxLjE0Mi0uNDMuNDI5ek0yNy42IDIuNGgtMS4ydjEuMmgxLjJWMi40em0tMSAuMmguOHYuOGgtLjh2LS44em0tMS4xMzkuOGgtMXYuMmgxdi0uMnoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1ncmVlbiIgZD0iTTE2IDE0SDV2LTFoMTEuMDMxYy0uMDE0LjA0NC0uMDMxIDEtLjAzMSAxem0tNC01SDV2MWg3Vjl6bS03IDh2MWg4di0xSDV6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNTk2IDI0LjA2M0MzMS4yNDYgMjUuMTE2IDMwLjU5NSAyNyAyOC4zNDkgMjdIMjd2MS4zMTNjMCAuOTA1LS4zNjggMi41MzctMi45OTYgMy4yOTgtLjkwNC4yNjEtMS43MjguMzg5LTIuNTY2LjM4OS0uODMgMC0xLjU5Ny0uMTI4LTIuNDkyLS4zOTJDMTcuMDI5IDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjI5N2MtMS42OTggMC0yLjk0My0xLjE0MS0zLjQxNi0zLjExLS40NjktMS45NDYtLjQ2OS0zLjAyMSAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2LTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1LjgzNC0yLjg0NSAzLjA1NC0zLjIzOC43MjgtLjEyOCAxLjQ3NC0uMDY1IDIuMjk2LS4wNjVoLjAwM2MuOTIxIDAgMS43MzUtLjA3IDIuNTM3LjA2NCAxLjgxNi4zMDMgMy4xMSAxLjU4NSAzLjExIDMuMjRWMTZoMS4zNDljMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU4LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF8zXyIgY2xhc3M9InN0MCIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwNyAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OSAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfM18iIGNsYXNzPSJzdDEiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NGg2Ljg5MmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODQgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5Ljg3Ljg3IDAgMCAxIC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5pY25zIGIvUEMvaWNvbnMvcHl0aG9udy5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNTRjZjgKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob253LmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5pY28gYi9QQy9pY29ucy9weXRob253LmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTk1ZDQzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9udy5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5zdmcgYi9QQy9pY29ucy9weXRob253LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2IyNjA3Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9udy5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uZ3JhcGgtbGlnaHRncmV5e2ZpbGw6I2RmZGZkZn0uc3Qwe2ZpbGw6I2Y2ZjZmNn0uc3Qxe2ZpbGw6IzY1NjU2NX0uc3Qye2ZpbGw6I2JmYmZiZn0uc3Qze2ZpbGw6I2ZmZn0uc3Q0e2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0NXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJncmFwaC1saWdodGdyZXkiIGQ9Ik0yOSA3SDNWNWgyNnYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA1SDJWM2gyOHYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMjkuMTQxIDRsLjQyOS40MjktLjE0LjE0Mi0uNDMtLjQzLS40My40My0uMTQtLjE0Mi40MjktLjQyOS0uNDI5LS40MjkuMTQxLS4xNDIuNDI5LjQzLjQzLS40My4xNDEuMTQyLS40My40Mjl6TTI3LjYgMy40aC0xLjJ2MS4yaDEuMlYzLjR6bS0xIC4yaC44di44aC0uOHYtLjh6bS0xLjEzOS44aC0xdi4yaDF2LS4yeiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zIDdoMjZ2MTlIM3oiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjkgNXYyMUgzVjVIMnYyMmgyOFY1eiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik00IDUuNzVoMnYuNUg0eiIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTIgMTFINXYtMWg3djF6bS03IDd2MWgxMXYtMUg1em0wLTR2MWgxMXYtMUg1eiIgaWQ9Imljb25GZyIvPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0zMS42MTggMTguOTEyQzMwLjk4NCAxNi4zNTYgMjkuNDkgMTYgMjguMzQ5IDE2SDI3di0xLjY5N2MwLTEuNjU0LTEuMjk0LTIuOTM3LTMuMTEtMy4yNC0uODAyLS4xMzMtMS42MTctLjA2My0yLjUzNy0uMDYzaC0uMDAzYy0uODIxIDAtMS41NjgtLjA2My0yLjI5NS4wNjUtMi4yMjEuMzkzLTMuMDU1IDEuMjMzLTMuMDU1IDMuMjM4VjE2aC0uODY4Yy0xLjg4NSAwLTMuMzk0IDEuMDQyLTMuODQ1IDIuOTI0LS40NjkgMS45NDYtLjQ2OSAzLjAyMiAwIDQuOTY3QzExLjc2IDI1Ljg1OSAxMy4wMDUgMjcgMTQuNzAzIDI3SDE2djEuMzEzYzAgMS41MzEgMS4wMjkgMi43MzIgMi45NDYgMy4yOTYuODk2LjI2MyAxLjY2Mi4zOTEgMi40OTIuMzkxLjgzOCAwIDEuNjYxLS4xMjggMi41NjUtLjM5QzI2LjYzMiAzMC44NSAyNyAyOS4yMTggMjcgMjguMzEzVjI3aDEuMzQ5YzIuMjQ2IDAgMi44OTctMS44ODQgMy4yNDctMi45MzcuNTMyLTEuNTkyLjUzOC0zLjA3OS4wMjItNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF82XyIgY2xhc3M9InN0NCIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwNyAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OCAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfNl8iIGNsYXNzPSJzdDUiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NGg2Ljg5MmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODQgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5Ljg3Ljg3IDAgMCAxIC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuaWNucyBiL1BDL2ljb25zL3NldHVwLmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwZTZiMAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3NldHVwLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuaWNvIGIvUEMvaWNvbnMvc2V0dXAuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDM2NGIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9zZXR1cC5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuc3ZnIGIvUEMvaWNvbnMvc2V0dXAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9zZXR1cC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZpc3VhbHN0dWRpby1vbmxpbmV7ZmlsbDojMDA3YWNjfS5pY29uLWRpc2FibGVkLWdyZXl7ZmlsbDojODQ4NDg0fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6I2YwZWZmMX0uc3Qxe2ZpbGw6IzQyNDI0Mn0uc3Qye2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0M3tmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOCA4djEwSDFWOGgxN3ptLTEuMTkxIDE1LjU3MmExLjAwNCAxLjAwNCAwIDAgMC0uOTAzLS41NzJIMi45MDdjLS4zODUgMC0uNzQuMjI1LS45MDMuNTcyTC44ODYgMjUuOTI4QS43NDguNzQ4IDAgMCAwIDEuNTYzIDI3SDE3LjI1YS43NDguNzQ4IDAgMCAwIC42NzctMS4wNzJsLTEuMTE4LTIuMzU2eiIvPjxwYXRoIGNsYXNzPSJpY29uLWRpc2FibGVkLWdyZXkiIGQ9Ik0xNy45MjcgMjUuOTI5bC0xLjExOC0yLjM1NmExLjAwMyAxLjAwMyAwIDAgMC0uOTAzLS41NzNIMi45MDdjLS4zODUgMC0uNzQuMjI1LS45MDMuNTcyTC44ODYgMjUuOTI4QS43NDguNzQ4IDAgMCAwIDEuNTYzIDI3SDE3LjI1YS43NDcuNzQ3IDAgMCAwIC42MzMtLjM0OS43NDYuNzQ2IDAgMCAwIC4wNDQtLjcyMnpNMS45NTkgMjZsLjk0OS0yaDEyLjk5OGwuOTQ5IDJIMS45NTl6TTYgMjJ2LTFoM3YtMmgxdjJoM3YxSDZ6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTAgN3YxMmgxOVY3SDB6bTE4IDExSDFWOGgxN3YxMHoiLz48L2c+PGcgaWQ9Imljb25GZyI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0xMiA2VjBIN3Y2SDIuNzU1TDkuNSAxMy40OTUgMTYuMjQ1IDZ6Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTggNGgzdjNoM2wtNC41IDVMNSA3aDNWNHptMy0ySDh2MWgzVjJ6bTAtMkg4djFoM1YweiIvPjwvZz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjU5NiAyNC4wNjNDMzEuMjQ2IDI1LjExNiAzMC41OTUgMjcgMjguMzQ5IDI3SDI3djEuMzEzYzAgLjkwNS0uMzY4IDIuNTM3LTIuOTk3IDMuMjk4LS45MDMuMjYxLTEuNzI3LjM4OS0yLjU2NS4zODktLjgzIDAtMS41OTctLjEyOC0yLjQ5My0uMzkyQzE3LjAyOSAzMS4wNDUgMTYgMjkuODQ0IDE2IDI4LjMxM1YyN2gtMS4yOTZjLTEuNjk4IDAtMi45NDQtMS4xNDEtMy40MTctMy4xMS0uNDY5LTEuOTQ0LS40NjktMy4wMiAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2MS0yLjkyMyAzLjg0NS0yLjkyM0gxNnYtMS42OTdjMC0yLjAwNS44MzQtMi44NDUgMy4wNTQtMy4yMzguNzI4LS4xMjggMS40NzQtLjA2NSAyLjI5Ni0uMDY1aC4wMDNjLjkyMSAwIDEuNzM1LS4wNyAyLjUzNy4wNjQgMS44MTYuMzAzIDMuMTEgMS41ODUgMy4xMSAzLjI0VjE2aDEuMzQ5YzEuMTQyIDAgMi42MzYuMzU2IDMuMjcgMi45MTIuNTE1IDIuMDcyLjUwOSAzLjU1OS0uMDIzIDUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjIwNSIgeTE9Ii0yODguNjY4IiB4Mj0iNTQwLjkwMiIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfOV8iIGNsYXNzPSJzdDIiIGQ9Ik0yMS4zNTQgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzkgMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NiAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg2LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMTMiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS40NTQiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzlfIiBjbGFzcz0ic3QzIiBkPSJNMjYuNjIzIDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NmgtNC41OTN2LS41ODRIMjguMzQ4YzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5jIGIvUEMvbGF1bmNoZXIuYwppbmRleCA0MGQ0Y2I1Li5kMTFkZjQzIDEwMDY0NAotLS0gYS9QQy9sYXVuY2hlci5jCisrKyBiL1BDL2xhdW5jaGVyLmMKQEAgLTk4LDcgKzk4LDcgQEAKICAgICBNZXNzYWdlQm94KE5VTEwsIG1lc3NhZ2UsIFRFWFQoIlB5dGhvbiBMYXVuY2hlciBpcyBzb3JyeSB0byBzYXkgLi4uIiksCiAgICAgICAgICAgICAgICBNQl9PSyk7CiAjZW5kaWYKLSAgICBFeGl0UHJvY2VzcyhyYyk7CisgICAgZXhpdChyYyk7CiB9CiAKIC8qCkBAIC00NjUsNyArNDY1LDcgQEAKIH0KIAogc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgotbG9jYXRlX3B5dGhvbih3Y2hhcl90ICogd2FudGVkX3ZlcikKK2xvY2F0ZV9weXRob24od2NoYXJfdCAqIHdhbnRlZF92ZXIsIEJPT0wgZnJvbV9zaGViYW5nKQogewogICAgIHN0YXRpYyB3Y2hhcl90IGNvbmZpZ19rZXkgW10gPSB7IEwicHl0aG9uWCIgfTsKICAgICBzdGF0aWMgd2NoYXJfdCAqIGxhc3RfY2hhciA9ICZjb25maWdfa2V5W3NpemVvZihjb25maWdfa2V5KSAvCkBAIC00OTcsMTAgKzQ5NywxNyBAQAogICAgICAgICBjb25maWd1cmVkX3ZhbHVlID0gZ2V0X2NvbmZpZ3VyZWRfdmFsdWUoY29uZmlnX2tleSk7CiAgICAgICAgIGlmIChjb25maWd1cmVkX3ZhbHVlKQogICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihjb25maWd1cmVkX3ZhbHVlKTsKKyAgICAgICAgLyogTm90IGZvdW5kIGEgdmFsdWUgeWV0IC0gdHJ5IGJ5IG1ham9yIHZlcnNpb24uCisgICAgICAgICAqIElmIHdlJ3JlIGxvb2tpbmcgZm9yIGFuIGludGVycHJldGVyIHNwZWNpZmllZCBpbiBhIHNoZWJhbmcgbGluZSwKKyAgICAgICAgICogd2Ugd2FudCB0byB0cnkgUHl0aG9uIDIgZmlyc3QsIHRoZW4gUHl0aG9uIDMgKGZvciBVbml4IGFuZCBiYWNrd2FyZAorICAgICAgICAgKiBjb21wYXRpYmlsaXR5KS4gSWYgd2UncmUgYmVpbmcgY2FsbGVkIGludGVyYWN0aXZlbHksIGFzc3VtZSB0aGUgdXNlcgorICAgICAgICAgKiB3YW50cyB0aGUgbGF0ZXN0IHZlcnNpb24gYXZhaWxhYmxlLCBzbyB0cnkgUHl0aG9uIDMgZmlyc3QsIHRoZW4KKyAgICAgICAgICogUHl0aG9uIDIuCisgICAgICAgICAqLwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKEwiMiIpOworICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihmcm9tX3NoZWJhbmcgPyBMIjIiIDogTCIzIik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIzIik7CisgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKGZyb21fc2hlYmFuZyA/IEwiMyIgOiBMIjIiKTsKICAgICAgICAgZGVidWcoTCJzZWFyY2ggZm9yIGRlZmF1bHQgUHl0aG9uIGZvdW5kICIpOwogICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICBkZWJ1ZyhMInZlcnNpb24gJWxzIGF0ICclbHMnXG4iLApAQCAtNjU1LDcgKzY2Miw3IEBACiAgICAgaWYgKCFvaykKICAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiRmFpbGVkIHRvIGdldCBleGl0IGNvZGUgb2YgcHJvY2VzcyIpOwogICAgIGRlYnVnKEwiY2hpbGQgcHJvY2VzcyBleGl0IGNvZGU6ICVkXG4iLCByYyk7Ci0gICAgRXhpdFByb2Nlc3MocmMpOworICAgIGV4aXQocmMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTA4Miw3ICsxMDg5LDcgQEAKICAgICB7IDMxOTAsIDMyMzAsIEwiMy4zIiB9LAogICAgIHsgMzI1MCwgMzMxMCwgTCIzLjQiIH0sCiAgICAgeyAzMzIwLCAzMzUxLCBMIjMuNSIgfSwKLSAgICB7IDMzNjAsIDMzNjEsIEwiMy42IiB9LAorICAgIHsgMzM2MCwgMzM3OSwgTCIzLjYiIH0sCiAgICAgeyAwIH0KIH07CiAKQEAgLTEwOTQsNyArMTEwMSw3IEBACiAKICAgICBmb3IgKG1wID0gbWFnaWNfdmFsdWVzOyBtcC0+bWluOyBtcCsrKSB7CiAgICAgICAgIGlmICgobWFnaWMgPj0gbXAtPm1pbikgJiYgKG1hZ2ljIDw9IG1wLT5tYXgpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBsb2NhdGVfcHl0aG9uKG1wLT52ZXJzaW9uKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxvY2F0ZV9weXRob24obXAtPnZlcnNpb24sIEZBTFNFKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTExNCw3ICsxMTIxLDcgQEAKICAqLwogICAgIEZJTEUgKiBmcDsKICAgICBlcnJub190IHJjID0gX3dmb3Blbl9zKCZmcCwgKmFyZ3YsIEwicmIiKTsKLSAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcltCVUZTSVpFXTsKKyAgICBjaGFyIGJ1ZmZlcltCVUZTSVpFXTsKICAgICB3Y2hhcl90IHNoZWJhbmdfbGluZVtCVUZTSVpFICsgMV07CiAgICAgc2l6ZV90IHJlYWQ7CiAgICAgY2hhciAqcDsKQEAgLTExMzYsNyArMTE0Myw4IEBACiAgICAgICAgIGZjbG9zZShmcCk7CiAKICAgICAgICAgaWYgKChyZWFkID49IDQpICYmIChidWZmZXJbM10gPT0gJ1xuJykgJiYgKGJ1ZmZlclsyXSA9PSAnXHInKSkgewotICAgICAgICAgICAgaXAgPSBmaW5kX2J5X21hZ2ljKChidWZmZXJbMV0gPDwgOCB8IGJ1ZmZlclswXSkgJiAweEZGRkYpOworICAgICAgICAgICAgaXAgPSBmaW5kX2J5X21hZ2ljKCgoKHVuc2lnbmVkIGNoYXIpYnVmZmVyWzFdKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpYnVmZmVyWzBdKSAmIDB4RkZGRik7CiAgICAgICAgICAgICBpZiAoaXAgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGRlYnVnKEwic2NyaXB0IGZpbGUgaXMgY29tcGlsZWQgYWdhaW5zdCBQeXRob24gJWxzXG4iLAogICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uKTsKQEAgLTEyNzgsNyArMTI4Niw3IEBACiBmb2xsb3dlZCBieSBhIHZhbGlkIHZlcnNpb24gc3BlY2lmaWVyLlxuUGxlYXNlIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0RPIGNvdWxkIGNhbGwgdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQsIFRSVUUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uIFwKICglbHMpIGlzIG5vdCBpbnN0YWxsZWQiLCBjb21tYW5kKTsKQEAgLTEzNjIsNiArMTM3MCw3IEBACiAgICAgd2NoYXJfdCAqIGF2WzJdOwogI2VuZGlmCiAKKyAgICBzZXR2YnVmKHN0ZGVyciwgKGNoYXIgKilOVUxMLCBfSU9OQkYsIDApOwogICAgIHdwID0gZ2V0X2VudihMIlBZTEFVTkNIX0RFQlVHIik7CiAgICAgaWYgKCh3cCAhPSBOVUxMKSAmJiAoKndwICE9IEwnXDAnKSkKICAgICAgICAgbG9nX2ZwID0gc3RkZXJyOwpAQCAtMTQ4Myw3ICsxNDkyLDcgQEAKICAgICAgICAgcGxlbiA9IHdjc2xlbihwKTsKICAgICAgICAgdmFsaWQgPSAoKnAgPT0gTCctJykgJiYgdmFsaWRhdGVfdmVyc2lvbigmcFsxXSk7CiAgICAgICAgIGlmICh2YWxpZCkgewotICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKCZwWzFdKTsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbigmcFsxXSwgRkFMU0UpOwogICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiAoJWxzKSBub3QgXAogaW5zdGFsbGVkIiwgJnBbMV0pOwpAQCAtMTUxMCw3ICsxNTE5LDcgQEAKIAogICAgICAgICAvKiBJZiB3ZSBkaWRuJ3QgZmluZCBvbmUsIGxvb2sgZm9yIHRoZSBkZWZhdWx0IFB5dGhvbiAqLwogICAgICAgICBpZiAoZXhlY3V0YWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oTCIiKTsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihMIiIsIEZBTFNFKTsKICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJDYW4ndCBmaW5kIGEgZGVmYXVsdCBQeXRob24uIik7CiAgICAgICAgICAgICBleGVjdXRhYmxlID0gaXAtPmV4ZWN1dGFibGU7CmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5pY28gYi9QQy9sYXVuY2hlci5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZDdkNTcuLjAwMDAwMDAKLS0tIGEvUEMvbGF1bmNoZXIuaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvbXN2Y3J0bW9kdWxlLmMgYi9QQy9tc3ZjcnRtb2R1bGUuYwppbmRleCBiMDczOWQwLi5jOWQxZTZjIDEwMDY0NAotLS0gYS9QQy9tc3ZjcnRtb2R1bGUuYworKysgYi9QQy9tc3ZjcnRtb2R1bGUuYwpAQCAtMzMsMTIgKzMzLDEyIEBACiAjZW5kaWYKIAogLypbcHl0aG9uIGlucHV0XQotY2xhc3MgUHlfaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCitjbGFzcyBpbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnRwdHJfdCcKICAgICBmb3JtYXRfdW5pdCA9ICciX1B5X1BBUlNFX0lOVFBUUiInCiAKIGNsYXNzIGhhbmRsZV9yZXR1cm5fY29udmVydGVyKGxvbmdfcmV0dXJuX2NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKKyAgICB0eXBlID0gJ2ludHB0cl90JwogICAgIGNhc3QgPSAnKHZvaWQgKiknCiAgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbVZvaWRQdHInCiAKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCiAgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKF9yZXR1cm5fdmFsdWUpO1xuJykKIFtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTZhNTRmYzRlNzNkMGIzNjddKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWI1OWYxNjYzZGJhMTE5OTddKi8KIAogLypbY2xpbmljIGlucHV0XQogbW9kdWxlIG1zdmNydApAQCAtMTQ4LDcgKzE0OCw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUgLT4gbG9uZwogCi0gICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIGhhbmRsZTogaW50cHRyX3QKICAgICBmbGFnczogaW50CiAgICAgLwogCkBAIC0xNjAsOCArMTYwLDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIGxvbmcKLW1zdmNydF9vcGVuX29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSwgaW50IGZsYWdzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJmNjVlNDIyMjQzYTM5ZjkgaW5wdXQ9NGQ4NTE2ZWQzMmRiOGY2NV0qLworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2VkZTg3MWJmOTM5ZDZlMyBpbnB1dD1jYjIxMDhiYmVhODQ1MTRlXSovCiB7CiAgICAgaW50IGZkOwogCkBAIC0xODMsMjIgKzE4MywxNyBAQAogUmFpc2VzIElPRXJyb3IgaWYgZmQgaXMgbm90IHJlY29nbml6ZWQuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLXN0YXRpYyBQeV9pbnRwdHJfdAorc3RhdGljIGludHB0cl90CiBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYWM0NzY0MzMzOGMwYmFhIGlucHV0PWM3ZDE4ZDAyYzgwMTdlYzFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03Y2U3NjFkZDBkZTJiNTAzIGlucHV0PWM3ZDE4ZDAyYzgwMTdlYzFdKi8KIHsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGUgPSAtMTsKKyAgICBpbnRwdHJfdCBoYW5kbGUgPSAtMTsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgfQotICAgIGVsc2UgewogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICAgICAgaGFuZGxlID0gX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIGhhbmRsZSA9IF9nZXRfb3NmaGFuZGxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAotICAgICAgICBpZiAoaGFuZGxlID09IC0xKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgIH0KKyAgICBpZiAoaGFuZGxlID09IC0xKQorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKICAgICByZXR1cm4gaGFuZGxlOwogfQpAQCAtNTQwLDcgKzUzNSw2IEBACiAjZW5kaWYKIAogICAgIC8qIGNvbnN0YW50cyBmb3IgdGhlIGNydCB2ZXJzaW9ucyAqLwotICAgICh2b2lkKXN0OwogI2lmZGVmIF9WQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTgogICAgIHN0ID0gUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIlZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTik7CkBAIC01NjYsNiArNTYwLDggQEAKICAgICBzdCA9IFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQ1JUX0FTU0VNQkxZX1ZFUlNJT04iLCB2ZXJzaW9uKTsKICAgICBpZiAoc3QgPCAwKSByZXR1cm4gTlVMTDsKICNlbmRpZgorICAgIC8qIG1ha2UgY29tcGlsZXIgd2FybmluZyBxdWlldCBpZiBzdCBpcyB1bnVzZWQgKi8KKyAgICAodm9pZClzdDsKIAogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvUEMvcHkuaWNvIGIvUEMvcHkuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzU3YWVmLi4wMDAwMDAwCi0tLSBhL1BDL3B5LmljbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL3B5Yy5pY28gYi9QQy9weWMuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2JkMmIxLi4wMDAwMDAwCi0tLSBhL1BDL3B5Yy5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9weWNvbi5pY28gYi9QQy9weWNvbi5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYjYyOWUuLjAwMDAwMDAKLS0tIGEvUEMvcHljb24uaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvcHljb25maWcuaCBiL1BDL3B5Y29uZmlnLmgKaW5kZXggYWM0ZjhmMi4uNjRlN2FlYyAxMDA2NDQKLS0tIGEvUEMvcHljb25maWcuaAorKysgYi9QQy9weWNvbmZpZy5oCkBAIC0xNCw3ICsxNCw2IEBACiBNU19XSU42NCAtIENvZGUgc3BlY2lmaWMgdG8gdGhlIE1TIFdpbjY0IEFQSQogTVNfV0lOMzIgLSBDb2RlIHNwZWNpZmljIHRvIHRoZSBNUyBXaW4zMiAoYW5kIFdpbjY0KSBBUEkgKG9ic29sZXRlLCB0aGlzIGNvdmVycyBhbGwgc3VwcG9ydGVkIEFQSXMpCiBNU19XSU5ET1dTIC0gQ29kZSBzcGVjaWZpYyB0byBXaW5kb3dzLCBidXQgYWxsIHZlcnNpb25zLgotTVNfV0lOQ0UgLSBDb2RlIHNwZWNpZmljIHRvIFdpbmRvd3MgQ0UKIFB5X0VOQUJMRV9TSEFSRUQgLSBDb2RlIGlmIHRoZSBQeXRob24gY29yZSBpcyBidWlsdCBhcyBhIERMTC4KIAogQWxzbyBub3RlIHRoYXQgbmVpdGhlciAiX01fSVg4NiIgb3IgIl9NU0NfVkVSIiBzaG91bGQgYmUgdXNlZCBmb3IKQEAgLTMwLDEwICsyOSw2IEBACiAKICovCiAKLSNpZmRlZiBfV0lOMzJfV0NFCi0jZGVmaW5lIE1TX1dJTkNFCi0jZW5kaWYKLQogLyogRGVwcmVjYXRlZCBVU0VfRExfRVhQT1JUIG1hY3JvIC0gcGxlYXNlIHVzZSBQeV9CVUlMRF9DT1JFICovCiAjaWZkZWYgVVNFX0RMX0VYUE9SVAogIwlkZWZpbmUgUHlfQlVJTERfQ09SRQpAQCAtNTMsOCArNDgsNiBAQAogI2RlZmluZSBfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIDEKICNlbmRpZgogCi0vKiBXaW5kb3dzIENFIGRvZXMgbm90IGhhdmUgdGhlc2UgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9JT19ICiAjZGVmaW5lIEhBVkVfU1lTX1VUSU1FX0gKICNkZWZpbmUgSEFWRV9URU1QTkFNCkBAIC02MiwxMSArNTUsOCBAQAogI2RlZmluZSBIQVZFX1RNUE5BTQogI2RlZmluZSBIQVZFX0NMT0NLCiAjZGVmaW5lIEhBVkVfU1RSRVJST1IKLSNlbmRpZgogCi0jaWZkZWYgSEFWRV9JT19ICiAjaW5jbHVkZSA8aW8uaD4KLSNlbmRpZgogCiAjZGVmaW5lIEhBVkVfSFlQT1QKICNkZWZpbmUgSEFWRV9TVFJGVElNRQpAQCAtODYsMTcgKzc2LDYgQEAKICNkZWZpbmUgVVNFX1NPQ0tFVAogI2VuZGlmCiAKLS8qIENFNiBkb2Vzbid0IGhhdmUgc3RyZHVwKCkgYnV0IF9zdHJkdXAoKS4gQXNzdW1lIHRoZSBzYW1lIGZvciBlYXJsaWVyIHZlcnNpb25zLiAqLwotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi0jICBpbmNsdWRlIDxzdGRsaWIuaD4KLSMgIGRlZmluZSBzdHJkdXAgX3N0cmR1cAotI2VuZGlmCi0KLSNpZmRlZiBNU19XSU5DRQotLyogV2luZG93cyBDRSBkb2VzIG5vdCBzdXBwb3J0IGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwotI2RlZmluZSBnZXRlbnYodikgKE5VTEwpCi0jZGVmaW5lIGVudmlyb24gKE5VTEwpCi0jZW5kaWYKIAogLyogQ29tcGlsZXIgc3BlY2lmaWMgZGVmaW5lcyAqLwogCkBAIC0yODYsNyArMjY1LDYgQEAKICNlbmRpZgogCiAvKiA2NCBiaXQgaW50cyBhcmUgdXN1YWxseSBzcGVsdCBfX2ludDY0IHVubGVzcyBjb21waWxlciBoYXMgb3ZlcnJpZGRlbiAqLwotI2RlZmluZSBIQVZFX0xPTkdfTE9ORyAxCiAjaWZuZGVmIFBZX0xPTkdfTE9ORwogIwlkZWZpbmUgUFlfTE9OR19MT05HIF9faW50NjQKICMJZGVmaW5lIFBZX0xMT05HX01BWCBfSTY0X01BWApAQCAtMzEyLDExICsyOTAsMTEgQEAKIAkJCXRoZWlyIE1ha2VmaWxlIChvdGhlciBjb21waWxlcnMgYXJlIGdlbmVyYWxseQogCQkJdGFrZW4gY2FyZSBvZiBieSBkaXN0dXRpbHMuKSAqLwogIwkJCWlmIGRlZmluZWQoX0RFQlVHKQotIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM1X2QubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNl9kLmxpYiIpCiAjCQkJZWxpZiBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQogIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMubGliIikKICMJCQllbHNlCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzUubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNi5saWIiKQogIwkJCWVuZGlmIC8qIF9ERUJVRyAqLwogIwkJZW5kaWYgLyogX01TQ19WRVIgKi8KICMJZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLwpAQCAtMzg3LDM5ICszNjUsMTAgQEAKIAogLyogZGVmaW5lIHNpZ25lZCBhbmQgdW5zaWduZWQgZXhhY3Qtd2lkdGggMzItYml0IGFuZCA2NC1iaXQgdHlwZXMsIHVzZWQgaW4gdGhlCiAgICBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gaW50ZWdlcnMuICovCi0jaWZuZGVmIFBZX1VJTlQzMl9UCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci0jZGVmaW5lIEhBVkVfVUlOVDMyX1QgMQotI2RlZmluZSBQWV9VSU5UMzJfVCB1bnNpZ25lZCBpbnQKLSNlbGlmIFNJWkVPRl9MT05HID09IDQKLSNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxCi0jZGVmaW5lIFBZX1VJTlQzMl9UIHVuc2lnbmVkIGxvbmcKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgUFlfVUlOVDY0X1QKLSNpZiBTSVpFT0ZfTE9OR19MT05HID09IDgKLSNkZWZpbmUgSEFWRV9VSU5UNjRfVCAxCi0jZGVmaW5lIFBZX1VJTlQ2NF9UIHVuc2lnbmVkIFBZX0xPTkdfTE9ORwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBQWV9JTlQzMl9UCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZGVmaW5lIFBZX0lOVDMyX1QgaW50Ci0jZWxpZiBTSVpFT0ZfTE9ORyA9PSA0Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZGVmaW5lIFBZX0lOVDMyX1QgbG9uZwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBQWV9JTlQ2NF9UCi0jaWYgU0laRU9GX0xPTkdfTE9ORyA9PSA4Ci0jZGVmaW5lIEhBVkVfSU5UNjRfVCAxCi0jZGVmaW5lIFBZX0lOVDY0X1QgUFlfTE9OR19MT05HCi0jZW5kaWYKLSNlbmRpZgorI2RlZmluZSBQWV9VSU5UMzJfVCB1aW50MzJfdAorI2RlZmluZSBQWV9VSU5UNjRfVCB1aW50NjRfdAorI2RlZmluZSBQWV9JTlQzMl9UIGludDMyX3QKKyNkZWZpbmUgUFlfSU5UNjRfVCBpbnQ2NF90CiAKIC8qIEZhaXJseSBzdGFuZGFyZCBmcm9tIGhlcmUhICovCiAKQEAgLTQ0OCwxNCArMzk3LDEwIEBACiAvKiAjZGVmaW5lIGNvbnN0ICAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGNvbmlvLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0NPTklPX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0RJUkVDVF9IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZGlyZW50LmguICAqLwogLyogI2RlZmluZSBESVJFTlQgMSAqLwpAQCAtNTI4LDkgKzQ3Myw3IEBACiAvKiAjZGVmaW5lIEhBVkVfQUxUWk9ORSAqLwogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHB1dGVudiBmdW5jdGlvbi4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfUFVURU5WCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgc3VwcG9ydHMgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwogI2RlZmluZSBIQVZFX1BST1RPVFlQRVMKQEAgLTU1OCw5ICs1MDEsNyBAQAogI2RlZmluZSBIQVZFX0RZTkFNSUNfTE9BRElORwogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZnRpbWUuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0ZUSU1FCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIGdldHBlZXJuYW1lLiAgKi8KICNkZWZpbmUgSEFWRV9HRVRQRUVSTkFNRQpAQCAtNTY5LDkgKzUxMCw3IEBACiAvKiAjdW5kZWYgSEFWRV9HRVRQR1JQICovCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBnZXRwaWQuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0dFVFBJRAotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBnZXR0aW1lb2ZkYXkuICAqLwogLyogI3VuZGVmIEhBVkVfR0VUVElNRU9GREFZICovCkBAIC02MzMsMTQgKzU3MiwxMCBAQAogI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2NzY29sbCcgZnVuY3Rpb24uICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfV0NTQ09MTCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3Y3N4ZnJtJyBmdW5jdGlvbi4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9XQ1NYRlJNIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgdGhlIHpsaWIgbGlicmFyeSBoYXMgaW5mbGF0ZUNvcHkgKi8KICNkZWZpbmUgSEFWRV9aTElCX0NPUFkgMQpAQCAtNjQ5LDI0ICs1ODQsMTYgQEAKIC8qICN1bmRlZiBIQVZFX0RMRkNOX0ggKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlcnJuby5oPiBoZWFkZXIgZmlsZS4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9FUlJOT19IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfRkNOVExfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwcm9jZXNzLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1BST0NFU1NfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzaWduYWwuaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU0lHTkFMX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGFyZy5oPiBwcm90b3R5cGVzLiAgKi8KICNkZWZpbmUgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwpAQCAtNjg0LDkgKzYxMSw3IEBACiAvKiAjZGVmaW5lIEhBVkVfU1lTX1NFTEVDVF9IIDEgKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWUuaD4gaGVhZGVyIGZpbGUuICAqLwogLyogI2RlZmluZSBIQVZFX1NZU19USU1FX0ggMSAqLwpAQCAtNjk1LDkgKzYyMCw3IEBACiAvKiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVTX0ggMSAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91bi5oPiBoZWFkZXIgZmlsZS4gICovCiAvKiAjZGVmaW5lIEhBVkVfU1lTX1VOX0ggMSAqLwpAQCAtNzIwLDYgKzY0Myw5IEBACiAvKiBUaGUgc2l6ZSBvZiBgd2NoYXJfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX1dDSEFSX1QgMgogCisvKiBUaGUgc2l6ZSBvZiBgX0Jvb2wnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9fQk9PTCAxCisKIC8qIFRoZSBzaXplIG9mIGBwaWRfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX1BJRF9UIFNJWkVPRl9JTlQKIApkaWZmIC0tZ2l0IGEvUEMvcHlsYXVuY2hlci5yYyBiL1BDL3B5bGF1bmNoZXIucmMKaW5kZXggYThkYjBhOC4uM2RhMzQ0NSAxMDA2NDQKLS0tIGEvUEMvcHlsYXVuY2hlci5yYworKysgYi9QQy9weWxhdW5jaGVyLnJjCkBAIC03LDkgKzcsMTMgQEAKICNpbmNsdWRlIDx3aW51c2VyLmg+CiAxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCiAKLTEgSUNPTiBESVNDQVJEQUJMRSAibGF1bmNoZXIuaWNvIiAKLTIgSUNPTiBESVNDQVJEQUJMRSAicHkuaWNvIiAKLTMgSUNPTiBESVNDQVJEQUJMRSAicHljLmljbyIgCisxIElDT04gRElTQ0FSREFCTEUgImljb25zXGxhdW5jaGVyLmljbyIgCisyIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5LmljbyIgCiszIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5Yy5pY28iIAorNCBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweWQuaWNvIiAKKzUgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9uLmljbyIKKzYgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9udy5pY28iCis3IElDT04gRElTQ0FSREFCTEUgImljb25zXHNldHVwLmljbyIgCiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLwpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uLm1hbmlmZXN0IGIvUEMvcHl0aG9uLm1hbmlmZXN0CmluZGV4IGQ2ZTRiYmEuLjRlNzNkNjAgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbi5tYW5pZmVzdAorKysgYi9QQy9weXRob24ubWFuaWZlc3QKQEAgLTE2LDEwICsxNiwxNSBAQAogICAgICAgPHN1cHBvcnRlZE9TIElkPSJ7OGUwZjdhMTItYmZiMy00ZmU4LWI5YTUtNDhmZDUwYTE1YTlhfSIvPgogICAgIDwvYXBwbGljYXRpb24+IAogICA8L2NvbXBhdGliaWxpdHk+CisgIDxhcHBsaWNhdGlvbiB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTphc20udjMiPgorICAgIDx3aW5kb3dzU2V0dGluZ3M+CisgICAgICA8bG9uZ1BhdGhBd2FyZSB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9TTUkvMjAxNi9XaW5kb3dzU2V0dGluZ3MiPnRydWU8L2xvbmdQYXRoQXdhcmU+CisgICAgPC93aW5kb3dzU2V0dGluZ3M+CisgIDwvYXBwbGljYXRpb24+CiAgIDxkZXBlbmRlbmN5PgogICAgIDxkZXBlbmRlbnRBc3NlbWJseT4KICAgICAgIDxhc3NlbWJseUlkZW50aXR5IHR5cGU9IndpbjMyIiBuYW1lPSJNaWNyb3NvZnQuV2luZG93cy5Db21tb24tQ29udHJvbHMiCiAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPSI2LjAuMC4wIiBwcm9jZXNzb3JBcmNoaXRlY3R1cmU9IioiIHB1YmxpY0tleVRva2VuPSI2NTk1YjY0MTQ0Y2NmMWRmIiBsYW5ndWFnZT0iKiIgLz4KICAgICA8L2RlcGVuZGVudEFzc2VtYmx5PgogICA8L2RlcGVuZGVuY3k+Ci08L2Fzc2VtYmx5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvYXNzZW1ibHk+CmRpZmYgLS1naXQgYS9QQy9weXRob24zLmRlZiBiL1BDL3B5dGhvbjMuZGVmCmluZGV4IDg4YzA3NDIuLmU4ZDJkOGMgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMuZGVmCisrKyBiL1BDL3B5dGhvbjMuZGVmCkBAIC0yLDcxMiArMiw3MTMgQEAKIDsgSXQgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nIHB5dGhvbjNkbGwudmN4cHJvagogTElCUkFSWQkicHl0aG9uMyIKIEVYUE9SVFMKLSAgUHlBcmdfUGFyc2U9cHl0aG9uMzUuUHlBcmdfUGFyc2UKLSAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzUuUHlBcmdfVW5wYWNrVHVwbGUKLSAgUHlBcmdfVmFQYXJzZT1weXRob24zNS5QeUFyZ19WYVBhcnNlCi0gIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM1LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNS5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKLSAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzUuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQotICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzUuUHlCb29sX0Zyb21Mb25nCi0gIFB5Qm9vbF9UeXBlPXB5dGhvbjM1LlB5Qm9vbF9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzUuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNS5QeUJ5dGVBcnJheV9Bc1N0cmluZwotICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzUuUHlCeXRlQXJyYXlfQ29uY2F0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAotICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfUmVzaXplCi0gIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfU2l6ZQotICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQotICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZXNfQXNTdHJpbmcKLSAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzUuUHlCeXRlc19Db25jYXQKLSAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzUuUHlCeXRlc19Db25jYXRBbmREZWwKLSAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlCeXRlc19EZWNvZGVFc2NhcGUKLSAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdAotICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKLSAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbU9iamVjdAotICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nCi0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzUuUHlCeXRlc19SZXByCi0gIFB5Qnl0ZXNfU2l6ZT1weXRob24zNS5QeUJ5dGVzX1NpemUKLSAgUHlCeXRlc19UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNfVHlwZSBEQVRBCi0gIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzUuUHlDRnVuY3Rpb25fQ2FsbAotICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKLSAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLSAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KLSAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRTZWxmCi0gIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNS5QeUNGdW5jdGlvbl9OZXcKLSAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzUuUHlDRnVuY3Rpb25fTmV3RXgKLSAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNS5QeUNGdW5jdGlvbl9UeXBlIERBVEEKLSAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzUuUHlDYWxsSXRlcl9OZXcKLSAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM1LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCi0gIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzUuUHlDYWxsYWJsZV9DaGVjawotICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNS5QeUNhcHN1bGVfR2V0Q29udGV4dAotICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNS5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNS5QeUNhcHN1bGVfR2V0TmFtZQotICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNS5QeUNhcHN1bGVfR2V0UG9pbnRlcgotICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9JbXBvcnQKLSAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzUuUHlDYXBzdWxlX0lzVmFsaWQKLSAgUHlDYXBzdWxlX05ldz1weXRob24zNS5QeUNhcHN1bGVfTmV3Ci0gIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXROYW1lCi0gIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM1LlB5Q2Fwc3VsZV9UeXBlIERBVEEKLSAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzUuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM1LlB5Q29kZWNfRGVjb2RlCi0gIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0RlY29kZXIKLSAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzUuUHlDb2RlY19FbmNvZGUKLSAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfRW5jb2RlcgotICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNS5QeUNvZGVjX0lnbm9yZUVycm9ycwotICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgotICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgotICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzUuUHlDb2RlY19Lbm93bkVuY29kaW5nCi0gIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzUuUHlDb2RlY19Mb29rdXBFcnJvcgotICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXIKLSAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgotICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19SZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtUmVhZGVyCi0gIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtV3JpdGVyCi0gIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfU3RyaWN0RXJyb3JzCi0gIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycwotICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzUuUHlDb21wbGV4X0Zyb21Eb3VibGVzCi0gIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzUuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQotICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjM1LlB5Q29tcGxleF9SZWFsQXNEb3VibGUKLSAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzUuUHlDb21wbGV4X1R5cGUgREFUQQotICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjM1LlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKLSAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzUuUHlEZXNjcl9OZXdHZXRTZXQKLSAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZW1iZXIKLSAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZXRob2QKLSAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zNS5QeURpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zNS5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKLSAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjM1LlB5RGljdEtleXNfVHlwZSBEQVRBCi0gIFB5RGljdFByb3h5X05ldz1weXRob24zNS5QeURpY3RQcm94eV9OZXcKLSAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zNS5QeURpY3RQcm94eV9UeXBlIERBVEEKLSAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzUuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQotICBQeURpY3RfQ2xlYXI9cHl0aG9uMzUuUHlEaWN0X0NsZWFyCi0gIFB5RGljdF9Db250YWlucz1weXRob24zNS5QeURpY3RfQ29udGFpbnMKLSAgUHlEaWN0X0NvcHk9cHl0aG9uMzUuUHlEaWN0X0NvcHkKLSAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW0KLSAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW0KLSAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKLSAgUHlEaWN0X0l0ZW1zPXB5dGhvbjM1LlB5RGljdF9JdGVtcwotICBQeURpY3RfS2V5cz1weXRob24zNS5QeURpY3RfS2V5cwotICBQeURpY3RfTWVyZ2U9cHl0aG9uMzUuUHlEaWN0X01lcmdlCi0gIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjM1LlB5RGljdF9NZXJnZUZyb21TZXEyCi0gIFB5RGljdF9OZXc9cHl0aG9uMzUuUHlEaWN0X05ldwotICBQeURpY3RfTmV4dD1weXRob24zNS5QeURpY3RfTmV4dAotICBQeURpY3RfU2V0SXRlbT1weXRob24zNS5QeURpY3RfU2V0SXRlbQotICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfU2V0SXRlbVN0cmluZwotICBQeURpY3RfU2l6ZT1weXRob24zNS5QeURpY3RfU2l6ZQotICBQeURpY3RfVHlwZT1weXRob24zNS5QeURpY3RfVHlwZSBEQVRBCi0gIFB5RGljdF9VcGRhdGU9cHl0aG9uMzUuUHlEaWN0X1VwZGF0ZQotICBQeURpY3RfVmFsdWVzPXB5dGhvbjM1LlB5RGljdF9WYWx1ZXMKLSAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjM1LlB5RWxsaXBzaXNfVHlwZSBEQVRBCi0gIFB5RW51bV9UeXBlPXB5dGhvbjM1LlB5RW51bV9UeXBlIERBVEEKLSAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzUuUHlFcnJfQmFkQXJndW1lbnQKLSAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM1LlB5RXJyX0JhZEludGVybmFsQ2FsbAotICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzUuUHlFcnJfQ2hlY2tTaWduYWxzCi0gIFB5RXJyX0NsZWFyPXB5dGhvbjM1LlB5RXJyX0NsZWFyCi0gIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzUuUHlFcnJfRGlzcGxheQotICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfRmV0Y2g9cHl0aG9uMzUuUHlFcnJfRmV0Y2gKLSAgUHlFcnJfRm9ybWF0PXB5dGhvbjM1LlB5RXJyX0Zvcm1hdAotICBQeUVycl9Gb3JtYXRWPXB5dGhvbjM1LlB5RXJyX0Zvcm1hdFYKLSAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uCi0gIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYwotICBQeUVycl9Ob01lbW9yeT1weXRob24zNS5QeUVycl9Ob01lbW9yeQotICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCi0gIFB5RXJyX09jY3VycmVkPXB5dGhvbjM1LlB5RXJyX09jY3VycmVkCi0gIFB5RXJyX1ByaW50PXB5dGhvbjM1LlB5RXJyX1ByaW50Ci0gIFB5RXJyX1ByaW50RXg9cHl0aG9uMzUuUHlFcnJfUHJpbnRFeAotICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zNS5QeUVycl9Qcm9ncmFtVGV4dAotICBQeUVycl9SZXN0b3JlPXB5dGhvbjM1LlB5RXJyX1Jlc3RvcmUKLSAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJubwotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKLSAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM1LlB5RXJyX1NldEludGVycnVwdAotICBQeUVycl9TZXROb25lPXB5dGhvbjM1LlB5RXJyX1NldE5vbmUKLSAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldE9iamVjdAotICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzUuUHlFcnJfU2V0U3RyaW5nCi0gIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM1LlB5RXJyX1N5bnRheExvY2F0aW9uCi0gIFB5RXJyX1dhcm5FeD1weXRob24zNS5QeUVycl9XYXJuRXgKLSAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjM1LlB5RXJyX1dhcm5FeHBsaWNpdAotICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjM1LlB5RXJyX1dhcm5Gb3JtYXQKLSAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjM1LlB5RXJyX1dyaXRlVW5yYWlzYWJsZQotICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzUuUHlFdmFsX0FjcXVpcmVMb2NrCi0gIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9BY3F1aXJlVGhyZWFkCi0gIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzUuUHlFdmFsX0NhbGxGdW5jdGlvbgotICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zNS5QeUV2YWxfQ2FsbE1ldGhvZAotICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zNS5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwotICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzUuUHlFdmFsX0V2YWxDb2RlCi0gIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjM1LlB5RXZhbF9FdmFsQ29kZUV4Ci0gIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZQotICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZUV4Ci0gIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zNS5QeUV2YWxfR2V0QnVpbHRpbnMKLSAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zNS5QeUV2YWxfR2V0Q2FsbFN0YXRzCi0gIFB5RXZhbF9HZXRGcmFtZT1weXRob24zNS5QeUV2YWxfR2V0RnJhbWUKLSAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjM1LlB5RXZhbF9HZXRGdW5jRGVzYwotICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzUuUHlFdmFsX0dldEZ1bmNOYW1lCi0gIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjM1LlB5RXZhbF9HZXRHbG9iYWxzCi0gIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzUuUHlFdmFsX0dldExvY2FscwotICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzUuUHlFdmFsX0luaXRUaHJlYWRzCi0gIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjM1LlB5RXZhbF9SZUluaXRUaHJlYWRzCi0gIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zNS5QeUV2YWxfUmVsZWFzZUxvY2sKLSAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1JlbGVhc2VUaHJlYWQKLSAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKLSAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1NhdmVUaHJlYWQKLSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zNS5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCi0gIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zNS5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQotICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zNS5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjM1LlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKLSAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zNS5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzUuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQotICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKLSAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX0VPRkVycm9yPXB5dGhvbjM1LlB5RXhjX0VPRkVycm9yIERBVEEKLSAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zNS5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKLSAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXhjX0V4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zNS5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQotICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQotICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjM1LlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQotICBQeUV4Y19JT0Vycm9yPXB5dGhvbjM1LlB5RXhjX0lPRXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zNS5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCi0gIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZXhFcnJvciBEQVRBCi0gIFB5RXhjX0tleUVycm9yPXB5dGhvbjM1LlB5RXhjX0tleUVycm9yIERBVEEKLSAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzUuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQotICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zNS5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX05hbWVFcnJvcj1weXRob24zNS5QeUV4Y19OYW1lRXJyb3IgREFUQQotICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjM1LlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQotICBQeUV4Y19PU0Vycm9yPXB5dGhvbjM1LlB5RXhjX09TRXJyb3IgREFUQQotICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjM1LlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQotICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzUuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzUuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzUuUHlFeGNfUnVudGltZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQotICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjM1LlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQotICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zNS5QeUV4Y19TeW50YXhFcnJvciBEQVRBCi0gIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCi0gIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjM1LlB5RXhjX1N5c3RlbUVycm9yIERBVEEKLSAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zNS5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKLSAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzUuUHlFeGNfVGFiRXJyb3IgREFUQQotICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVHlwZUVycm9yIERBVEEKLSAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQotICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zNS5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCi0gIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVmFsdWVFcnJvciBEQVRBCi0gIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfV2FybmluZyBEQVRBCi0gIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM1LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKLSAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKLSAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKLSAgUHlGaWxlX0Zyb21GZD1weXRob24zNS5QeUZpbGVfRnJvbUZkCi0gIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM1LlB5RmlsZV9HZXRMaW5lCi0gIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNS5QeUZpbGVfV3JpdGVPYmplY3QKLSAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM1LlB5RmlsZV9Xcml0ZVN0cmluZwotICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM1LlB5RmlsdGVyX1R5cGUgREFUQQotICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfQXNEb3VibGUKLSAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfRnJvbURvdWJsZQotICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlGbG9hdF9Gcm9tU3RyaW5nCi0gIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNS5QeUZsb2F0X0dldEluZm8KLSAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzUuUHlGbG9hdF9HZXRNYXgKLSAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzUuUHlGbG9hdF9HZXRNaW4KLSAgUHlGbG9hdF9UeXBlPXB5dGhvbjM1LlB5RmxvYXRfVHlwZSBEQVRBCi0gIFB5RnJvemVuU2V0X05ldz1weXRob24zNS5QeUZyb3plblNldF9OZXcKLSAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNS5QeUZyb3plblNldF9UeXBlIERBVEEKLSAgUHlHQ19Db2xsZWN0PXB5dGhvbjM1LlB5R0NfQ29sbGVjdAotICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNS5QeUdJTFN0YXRlX0Vuc3VyZQotICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNS5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQotICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzUuUHlHSUxTdGF0ZV9SZWxlYXNlCi0gIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNS5QeUdldFNldERlc2NyX1R5cGUgREFUQQotICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfQWRkTW9kdWxlCi0gIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzUuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgotICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjM1LlB5SW1wb3J0X0NsZWFudXAKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4Ci0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKLSAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNUYWcKLSAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zNS5QeUltcG9ydF9HZXRNb2R1bGVEaWN0Ci0gIFB5SW1wb3J0X0ltcG9ydD1weXRob24zNS5QeUltcG9ydF9JbXBvcnQKLSAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jawotICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKLSAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX05ldwotICBQeUl0ZXJfTmV4dD1weXRob24zNS5QeUl0ZXJfTmV4dAotICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzUuUHlMaXN0SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjM1LlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzUuUHlMaXN0X0FwcGVuZAotICBQeUxpc3RfQXNUdXBsZT1weXRob24zNS5QeUxpc3RfQXNUdXBsZQotICBQeUxpc3RfR2V0SXRlbT1weXRob24zNS5QeUxpc3RfR2V0SXRlbQotICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzUuUHlMaXN0X0dldFNsaWNlCi0gIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzUuUHlMaXN0X0luc2VydAotICBQeUxpc3RfTmV3PXB5dGhvbjM1LlB5TGlzdF9OZXcKLSAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzUuUHlMaXN0X1JldmVyc2UKLSAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzUuUHlMaXN0X1NldEl0ZW0KLSAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjM1LlB5TGlzdF9TZXRTbGljZQotICBQeUxpc3RfU2l6ZT1weXRob24zNS5QeUxpc3RfU2l6ZQotICBQeUxpc3RfU29ydD1weXRob24zNS5QeUxpc3RfU29ydAotICBQeUxpc3RfVHlwZT1weXRob24zNS5QeUxpc3RfVHlwZSBEQVRBCi0gIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjM1LlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjM1LlB5TG9uZ19Bc0RvdWJsZQotICBQeUxvbmdfQXNMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmcKLSAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zNS5QeUxvbmdfQXNMb25nTG9uZwotICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NpemVfdAotICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NzaXplX3QKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCi0gIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzUuUHlMb25nX0FzVm9pZFB0cgotICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zNS5QeUxvbmdfRnJvbURvdWJsZQotICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nCi0gIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nTG9uZwotICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zNS5QeUxvbmdfRnJvbVNpemVfdAotICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzUuUHlMb25nX0Zyb21Tc2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tU3RyaW5nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVm9pZFB0cgotICBQeUxvbmdfR2V0SW5mbz1weXRob24zNS5QeUxvbmdfR2V0SW5mbwotICBQeUxvbmdfVHlwZT1weXRob24zNS5QeUxvbmdfVHlwZSBEQVRBCi0gIFB5TWFwX1R5cGU9cHl0aG9uMzUuUHlNYXBfVHlwZSBEQVRBCi0gIFB5TWFwcGluZ19DaGVjaz1weXRob24zNS5QeU1hcHBpbmdfQ2hlY2sKLSAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zNS5QeU1hcHBpbmdfSGFzS2V5Ci0gIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0hhc0tleVN0cmluZwotICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzUuUHlNYXBwaW5nX0l0ZW1zCi0gIFB5TWFwcGluZ19LZXlzPXB5dGhvbjM1LlB5TWFwcGluZ19LZXlzCi0gIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzUuUHlNYXBwaW5nX0xlbmd0aAotICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfU2l6ZT1weXRob24zNS5QeU1hcHBpbmdfU2l6ZQotICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjM1LlB5TWFwcGluZ19WYWx1ZXMKLSAgUHlNZW1fRnJlZT1weXRob24zNS5QeU1lbV9GcmVlCi0gIFB5TWVtX01hbGxvYz1weXRob24zNS5QeU1lbV9NYWxsb2MKLSAgUHlNZW1fUmVhbGxvYz1weXRob24zNS5QeU1lbV9SZWFsbG9jCi0gIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNS5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQotICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNS5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAotICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNS5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cwotICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNS5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCi0gIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNS5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNS5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAotICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzUuUHlNb2R1bGVfQWRkT2JqZWN0Ci0gIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM1LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50Ci0gIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzUuUHlNb2R1bGVfQ3JlYXRlMgotICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGVmCi0gIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGljdAotICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZQotICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAotICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM1LlB5TW9kdWxlX0dldE5hbWUKLSAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0U3RhdGUKLSAgUHlNb2R1bGVfTmV3PXB5dGhvbjM1LlB5TW9kdWxlX05ldwotICBQeU1vZHVsZV9UeXBlPXB5dGhvbjM1LlB5TW9kdWxlX1R5cGUgREFUQQotICBQeU1vZHVsZURlZl9Jbml0PXB5dGhvbjM1LlB5TW9kdWxlRGVmX0luaXQKLSAgUHlNb2R1bGVEZWZfVHlwZT1weXRob24zNS5QeU1vZHVsZURlZl9UeXBlIERBVEEKLSAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zNS5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKLSAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzUuUHlOdW1iZXJfQWJzb2x1dGUKLSAgUHlOdW1iZXJfQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0FkZAotICBQeU51bWJlcl9BbmQ9cHl0aG9uMzUuUHlOdW1iZXJfQW5kCi0gIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zNS5QeU51bWJlcl9Bc1NzaXplX3QKLSAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzUuUHlOdW1iZXJfQ2hlY2sKLSAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjM1LlB5TnVtYmVyX0Rpdm1vZAotICBQeU51bWJlcl9GbG9hdD1weXRob24zNS5QeU51bWJlcl9GbG9hdAotICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9GbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VBZGQKLSAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlQW5kCi0gIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTHNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKLSAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VPcgotICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCi0gIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgotICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAotICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQotICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VYb3IKLSAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzUuUHlOdW1iZXJfSW5kZXgKLSAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM1LlB5TnVtYmVyX0ludmVydAotICBQeU51bWJlcl9Mb25nPXB5dGhvbjM1LlB5TnVtYmVyX0xvbmcKLSAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0xzaGlmdAotICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9NdWx0aXBseQotICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNS5QeU51bWJlcl9OZWdhdGl2ZQotICBQeU51bWJlcl9Pcj1weXRob24zNS5QeU51bWJlcl9PcgotICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNS5QeU51bWJlcl9Qb3NpdGl2ZQotICBQeU51bWJlcl9Qb3dlcj1weXRob24zNS5QeU51bWJlcl9Qb3dlcgotICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfUmVtYWluZGVyCi0gIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNS5QeU51bWJlcl9Sc2hpZnQKLSAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzUuUHlOdW1iZXJfU3VidHJhY3QKLSAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM1LlB5TnVtYmVyX1RvQmFzZQotICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX1RydWVEaXZpZGUKLSAgUHlOdW1iZXJfWG9yPXB5dGhvbjM1LlB5TnVtYmVyX1hvcgotICBQeU9TX0FmdGVyRm9yaz1weXRob24zNS5QeU9TX0FmdGVyRm9yawotICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjM1LlB5T1NfSW5pdEludGVycnVwdHMKLSAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzUuUHlPU19JbnB1dEhvb2sgREFUQQotICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjM1LlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKLSAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zNS5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKLSAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjM1LlB5T1NfZG91YmxlX3RvX3N0cmluZwotICBQeU9TX2dldHNpZz1weXRob24zNS5QeU9TX2dldHNpZwotICBQeU9TX215c3RyaWNtcD1weXRob24zNS5QeU9TX215c3RyaWNtcAotICBQeU9TX215c3RybmljbXA9cHl0aG9uMzUuUHlPU19teXN0cm5pY21wCi0gIFB5T1Nfc2V0c2lnPXB5dGhvbjM1LlB5T1Nfc2V0c2lnCi0gIFB5T1Nfc25wcmludGY9cHl0aG9uMzUuUHlPU19zbnByaW50ZgotICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzUuUHlPU19zdHJpbmdfdG9fZG91YmxlCi0gIFB5T1Nfc3RydG9sPXB5dGhvbjM1LlB5T1Nfc3RydG9sCi0gIFB5T1Nfc3RydG91bD1weXRob24zNS5QeU9TX3N0cnRvdWwKLSAgUHlPU192c25wcmludGY9cHl0aG9uMzUuUHlPU192c25wcmludGYKLSAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzUuUHlPYmplY3RfQVNDSUkKLSAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgotICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjM1LlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKLSAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKLSAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzUuUHlPYmplY3RfQnl0ZXMKLSAgUHlPYmplY3RfQ2FsbD1weXRob24zNS5QeU9iamVjdF9DYWxsCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb24KLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE1ldGhvZAotICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncwotICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxPYmplY3QKLSAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM1LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKLSAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNS5QeU9iamVjdF9EZWxJdGVtCi0gIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfRGVsSXRlbVN0cmluZwotICBQeU9iamVjdF9EaXI9cHl0aG9uMzUuUHlPYmplY3RfRGlyCi0gIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNS5QeU9iamVjdF9Gb3JtYXQKLSAgUHlPYmplY3RfRnJlZT1weXRob24zNS5QeU9iamVjdF9GcmVlCi0gIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNS5QeU9iamVjdF9HQ19EZWwKLSAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzUuUHlPYmplY3RfR0NfVHJhY2sKLSAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNS5QeU9iamVjdF9HQ19VblRyYWNrCi0gIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCi0gIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNS5QeU9iamVjdF9HZXRJdGVtCi0gIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzUuUHlPYmplY3RfR2V0SXRlcgotICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0hhc0F0dHIKLSAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzUuUHlPYmplY3RfSGFzaAotICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzUuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCi0gIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzUuUHlPYmplY3RfSW5pdAotICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM1LlB5T2JqZWN0X0luaXRWYXIKLSAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNS5QeU9iamVjdF9Jc0luc3RhbmNlCi0gIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzUuUHlPYmplY3RfSXNTdWJjbGFzcwotICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzUuUHlPYmplY3RfSXNUcnVlCi0gIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNS5QeU9iamVjdF9MZW5ndGgKLSAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM1LlB5T2JqZWN0X01hbGxvYwotICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzUuUHlPYmplY3RfTm90Ci0gIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzUuUHlPYmplY3RfUmVhbGxvYwotICBQeU9iamVjdF9SZXByPXB5dGhvbjM1LlB5T2JqZWN0X1JlcHIKLSAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlPYmplY3RfUmljaENvbXBhcmUKLSAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM1LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAotICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNS5QeU9iamVjdF9TZWxmSXRlcgotICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X1NldEF0dHIKLSAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfU2V0SXRlbQotICBQeU9iamVjdF9TaXplPXB5dGhvbjM1LlB5T2JqZWN0X1NpemUKLSAgUHlPYmplY3RfU3RyPXB5dGhvbjM1LlB5T2JqZWN0X1N0cgotICBQeU9iamVjdF9UeXBlPXB5dGhvbjM1LlB5T2JqZWN0X1R5cGUgREFUQQotICBQeU9EaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlPRGljdF9EZWxJdGVtCi0gIFB5T0RpY3RfTmV3PXB5dGhvbjM1LlB5T0RpY3RfTmV3Ci0gIFB5T0RpY3RfU2V0SXRlbT1weXRob24zNS5QeU9EaWN0X1NldEl0ZW0KLSAgUHlPRGljdF9UeXBlPXB5dGhvbjM1LlB5T0RpY3RfVHlwZSBEQVRBCi0gIFB5T0RpY3RJdGVtc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlPRGljdEl0ZXJfVHlwZT1weXRob24zNS5QeU9EaWN0SXRlcl9UeXBlIERBVEEKLSAgUHlPRGljdEtleXNfVHlwZT1weXRob24zNS5QeU9EaWN0S2V5c19UeXBlIERBVEEKLSAgUHlPRGljdFZhbHVlc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RWYWx1ZXNfVHlwZSBEQVRBCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjM1LlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzUuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncwotICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzUuUHlQcm9wZXJ0eV9UeXBlIERBVEEKLSAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zNS5QeVJhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlSYW5nZV9UeXBlPXB5dGhvbjM1LlB5UmFuZ2VfVHlwZSBEQVRBCi0gIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zNS5QeVJldmVyc2VkX1R5cGUgREFUQQotICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjM1LlB5U2VxSXRlcl9OZXcKLSAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXFJdGVyX1R5cGUgREFUQQotICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjM1LlB5U2VxdWVuY2VfQ2hlY2sKLSAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db25jYXQKLSAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zNS5QeVNlcXVlbmNlX0NvbnRhaW5zCi0gIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db3VudAotICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxJdGVtCi0gIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxTbGljZQotICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzUuUHlTZXF1ZW5jZV9GYXN0Ci0gIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX0dldFNsaWNlCi0gIFB5U2VxdWVuY2VfSW49cHl0aG9uMzUuUHlTZXF1ZW5jZV9JbgotICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0Ci0gIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zNS5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKLSAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zNS5QeVNlcXVlbmNlX0luZGV4Ci0gIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjM1LlB5U2VxdWVuY2VfTGVuZ3RoCi0gIFB5U2VxdWVuY2VfTGlzdD1weXRob24zNS5QeVNlcXVlbmNlX0xpc3QKLSAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9SZXBlYXQKLSAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0SXRlbQotICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2l6ZQotICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjM1LlB5U2VxdWVuY2VfVHVwbGUKLSAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXRJdGVyX1R5cGUgREFUQQotICBQeVNldF9BZGQ9cHl0aG9uMzUuUHlTZXRfQWRkCi0gIFB5U2V0X0NsZWFyPXB5dGhvbjM1LlB5U2V0X0NsZWFyCi0gIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjM1LlB5U2V0X0NvbnRhaW5zCi0gIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzUuUHlTZXRfRGlzY2FyZAotICBQeVNldF9OZXc9cHl0aG9uMzUuUHlTZXRfTmV3Ci0gIFB5U2V0X1BvcD1weXRob24zNS5QeVNldF9Qb3AKLSAgUHlTZXRfU2l6ZT1weXRob24zNS5QeVNldF9TaXplCi0gIFB5U2V0X1R5cGU9cHl0aG9uMzUuUHlTZXRfVHlwZSBEQVRBCi0gIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zNS5QeVNsaWNlX0dldEluZGljZXMKLSAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzUuUHlTbGljZV9HZXRJbmRpY2VzRXgKLSAgUHlTbGljZV9OZXc9cHl0aG9uMzUuUHlTbGljZV9OZXcKLSAgUHlTbGljZV9UeXBlPXB5dGhvbjM1LlB5U2xpY2VfVHlwZSBEQVRBCi0gIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zNS5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQotICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9GaW5kTW9kdWxlCi0gIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfQWRkTW9kdWxlCi0gIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfUmVtb3ZlTW9kdWxlCi0gIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQotICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U3VwZXJfVHlwZT1weXRob24zNS5QeVN1cGVyX1R5cGUgREFUQQotICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjM1LlB5U3lzX0FkZFdhcm5PcHRpb24KLSAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzUuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKLSAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjM1LlB5U3lzX0Zvcm1hdFN0ZGVycgotICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzUuUHlTeXNfRm9ybWF0U3Rkb3V0Ci0gIFB5U3lzX0dldE9iamVjdD1weXRob24zNS5QeVN5c19HZXRPYmplY3QKLSAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzUuUHlTeXNfSGFzV2Fybk9wdGlvbnMKLSAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zNS5QeVN5c19SZXNldFdhcm5PcHRpb25zCi0gIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzUuUHlTeXNfU2V0QXJndgotICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzUuUHlTeXNfU2V0QXJndkV4Ci0gIFB5U3lzX1NldE9iamVjdD1weXRob24zNS5QeVN5c19TZXRPYmplY3QKLSAgUHlTeXNfU2V0UGF0aD1weXRob24zNS5QeVN5c19TZXRQYXRoCi0gIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjM1LlB5U3lzX1dyaXRlU3RkZXJyCi0gIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjM1LlB5U3lzX1dyaXRlU3Rkb3V0Ci0gIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9DbGVhcgotICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zNS5QeVRocmVhZFN0YXRlX0RlbGV0ZQotICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50Ci0gIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfR2V0Ci0gIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zNS5QeVRocmVhZFN0YXRlX0dldERpY3QKLSAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9OZXcKLSAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zNS5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCi0gIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zNS5QeVRocmVhZFN0YXRlX1N3YXAKLSAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zNS5QeVRyYWNlQmFja19IZXJlCi0gIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjM1LlB5VHJhY2VCYWNrX1ByaW50Ci0gIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzUuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCi0gIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzUuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zNS5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKLSAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjM1LlB5VHVwbGVfR2V0SXRlbQotICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjM1LlB5VHVwbGVfR2V0U2xpY2UKLSAgUHlUdXBsZV9OZXc9cHl0aG9uMzUuUHlUdXBsZV9OZXcKLSAgUHlUdXBsZV9QYWNrPXB5dGhvbjM1LlB5VHVwbGVfUGFjawotICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzUuUHlUdXBsZV9TZXRJdGVtCi0gIFB5VHVwbGVfU2l6ZT1weXRob24zNS5QeVR1cGxlX1NpemUKLSAgUHlUdXBsZV9UeXBlPXB5dGhvbjM1LlB5VHVwbGVfVHlwZSBEQVRBCi0gIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjM1LlB5VHlwZV9DbGVhckNhY2hlCi0gIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zNS5QeVR5cGVfRnJvbVNwZWMKLSAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjM1LlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcwotICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjM1LlB5VHlwZV9HZW5lcmljQWxsb2MKLSAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzUuUHlUeXBlX0dlbmVyaWNOZXcKLSAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjM1LlB5VHlwZV9HZXRGbGFncwotICBQeVR5cGVfR2V0U2xvdD1weXRob24zNS5QeVR5cGVfR2V0U2xvdAotICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjM1LlB5VHlwZV9Jc1N1YnR5cGUKLSAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjM1LlB5VHlwZV9Nb2RpZmllZAotICBQeVR5cGVfUmVhZHk9cHl0aG9uMzUuUHlUeXBlX1JlYWR5Ci0gIFB5VHlwZV9UeXBlPXB5dGhvbjM1LlB5VHlwZV9UeXBlIERBVEEKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zNS5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zNS5QeVVuaWNvZGVfQXBwZW5kCi0gIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzUuUHlVbmljb2RlX0FwcGVuZEFuZERlbAotICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcKLSAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZwotICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zNS5QeVVuaWNvZGVfQXNXaWRlQ2hhcgotICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zNS5QeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdAotICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zNS5QeVVuaWNvZGVfQ29tcGFyZQotICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjM1LlB5VW5pY29kZV9Db25jYXQKLSAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjM1LlB5VW5pY29kZV9Db250YWlucwotICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzUuUHlVbmljb2RlX0NvdW50Ci0gIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZQotICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUFTQ0lJCi0gIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVDaGFybWFwCi0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVMYXRpbjEKLSAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYxNgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjMyCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY4Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTQ29udmVydGVyCi0gIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTRGVjb2RlcgotICBQeVVuaWNvZGVfRmluZD1weXRob24zNS5QeVVuaWNvZGVfRmluZAotICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjM1LlB5VW5pY29kZV9Gb3JtYXQKLSAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbUZvcm1hdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21Gb3JtYXRWCi0gIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zNS5QeVVuaWNvZGVfRnJvbU9yZGluYWwKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21TdHJpbmcKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIKLSAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9HZXRTaXplCi0gIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzUuUHlVbmljb2RlX0lzSWRlbnRpZmllcgotICBQeVVuaWNvZGVfSm9pbj1weXRob24zNS5QeVVuaWNvZGVfSm9pbgotICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjM1LlB5VW5pY29kZV9QYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzUuUHlVbmljb2RlX1JQYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zNS5QeVVuaWNvZGVfUlNwbGl0Ci0gIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9SZXBsYWNlCi0gIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzUuUHlVbmljb2RlX1Jlc2l6ZQotICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlVbmljb2RlX1JpY2hDb21wYXJlCi0gIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzUuUHlVbmljb2RlX1NwbGl0Ci0gIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjM1LlB5VW5pY29kZV9TcGxpdGxpbmVzCi0gIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzUuUHlVbmljb2RlX1RhaWxtYXRjaAotICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM1LlB5VW5pY29kZV9UcmFuc2xhdGUKLSAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzUuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLSAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjcKLSAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCi0gIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZwotICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCi0gIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCi0gIFB5VW5pY29kZV9UeXBlPXB5dGhvbjM1LlB5VW5pY29kZV9UeXBlIERBVEEKLSAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNS5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKLSAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdQcm94eQotICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdSZWYKLSAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zNS5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlXcmFwcGVyX05ldz1weXRob24zNS5QeVdyYXBwZXJfTmV3Ci0gIFB5WmlwX1R5cGU9cHl0aG9uMzUuUHlaaXBfVHlwZSBEQVRBCi0gIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjM1LlB5X0FkZFBlbmRpbmdDYWxsCi0gIFB5X0F0RXhpdD1weXRob24zNS5QeV9BdEV4aXQKLSAgUHlfQnVpbGRWYWx1ZT1weXRob24zNS5QeV9CdWlsZFZhbHVlCi0gIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzUuUHlfQ29tcGlsZVN0cmluZwotICBQeV9EZWNSZWY9cHl0aG9uMzUuUHlfRGVjUmVmCi0gIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjM1LlB5X0VuZEludGVycHJldGVyCi0gIFB5X0V4aXQ9cHl0aG9uMzUuUHlfRXhpdAotICBQeV9GYXRhbEVycm9yPXB5dGhvbjM1LlB5X0ZhdGFsRXJyb3IKLSAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfRmluYWxpemU9cHl0aG9uMzUuUHlfRmluYWxpemUKLSAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjM1LlB5X0dldEJ1aWxkSW5mbwotICBQeV9HZXRDb21waWxlcj1weXRob24zNS5QeV9HZXRDb21waWxlcgotICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzUuUHlfR2V0Q29weXJpZ2h0Ci0gIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzUuUHlfR2V0RXhlY1ByZWZpeAotICBQeV9HZXRQYXRoPXB5dGhvbjM1LlB5X0dldFBhdGgKLSAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzUuUHlfR2V0UGxhdGZvcm0KLSAgUHlfR2V0UHJlZml4PXB5dGhvbjM1LlB5X0dldFByZWZpeAotICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzUuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCi0gIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjM1LlB5X0dldFByb2dyYW1OYW1lCi0gIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzUuUHlfR2V0UHl0aG9uSG9tZQotICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zNS5QeV9HZXRSZWN1cnNpb25MaW1pdAotICBQeV9HZXRWZXJzaW9uPXB5dGhvbjM1LlB5X0dldFZlcnNpb24KLSAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfSW5jUmVmPXB5dGhvbjM1LlB5X0luY1JlZgotICBQeV9Jbml0aWFsaXplPXB5dGhvbjM1LlB5X0luaXRpYWxpemUKLSAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjM1LlB5X0luaXRpYWxpemVFeAotICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjM1LlB5X0lzSW5pdGlhbGl6ZWQKLSAgUHlfTWFpbj1weXRob24zNS5QeV9NYWluCi0gIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzUuUHlfTWFrZVBlbmRpbmdDYWxscwotICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zNS5QeV9OZXdJbnRlcnByZXRlcgotICBQeV9SZXByRW50ZXI9cHl0aG9uMzUuUHlfUmVwckVudGVyCi0gIFB5X1JlcHJMZWF2ZT1weXRob24zNS5QeV9SZXByTGVhdmUKLSAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfU2V0UHJvZ3JhbU5hbWUKLSAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9TZXRQeXRob25Ib21lCi0gIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X1NldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjM1LlB5X1N5bXRhYmxlU3RyaW5nCi0gIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zNS5QeV9WYUJ1aWxkVmFsdWUKLSAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNS5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzUuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAotICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zNS5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAotICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19NYWxsb2MKLSAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zNS5fUHlPYmplY3RfR0NfTmV3Ci0gIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX05ld1ZhcgotICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19SZXNpemUKLSAgX1B5T2JqZWN0X05ldz1weXRob24zNS5fUHlPYmplY3RfTmV3Ci0gIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X05ld1ZhcgotICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzUuX1B5U3RhdGVfQWRkTW9kdWxlCi0gIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzUuX1B5VGhyZWFkU3RhdGVfSW5pdAotICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zNS5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYwotICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKLSAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQotICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zNS5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAotICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjM1Ll9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KLSAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zNS5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKLSAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQotICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjM1Ll9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKLSAgX1B5X0RlYWxsb2M9cHl0aG9uMzUuX1B5X0RlYWxsb2MKLSAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjM1Ll9QeV9FbGxpcHNpc09iamVjdCBEQVRBCi0gIF9QeV9GYWxzZVN0cnVjdD1weXRob24zNS5fUHlfRmFsc2VTdHJ1Y3QgREFUQQotICBfUHlfTm9uZVN0cnVjdD1weXRob24zNS5fUHlfTm9uZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zNS5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQotICBfUHlfU3dhcHBlZE9wPXB5dGhvbjM1Ll9QeV9Td2FwcGVkT3AgREFUQQotICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zNS5fUHlfVHJ1ZVN0cnVjdCBEQVRBCi0gIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAotICBfUHlBcmdfUGFyc2VfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfVmFQYXJzZV9TaXplVAotICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9CdWlsZFZhbHVlX1NpemVUCisgIFB5QXJnX1BhcnNlPXB5dGhvbjM2LlB5QXJnX1BhcnNlCisgIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzYuUHlBcmdfUGFyc2VUdXBsZQorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzYuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjM2LlB5QXJnX1VucGFja1R1cGxlCisgIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzYuUHlBcmdfVmFQYXJzZQorICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNi5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzYuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCisgIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjM2LlB5QmFzZU9iamVjdF9UeXBlIERBVEEKKyAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjM2LlB5Qm9vbF9Gcm9tTG9uZworICBQeUJvb2xfVHlwZT1weXRob24zNi5QeUJvb2xfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjM2LlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzYuUHlCeXRlQXJyYXlfQXNTdHJpbmcKKyAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjM2LlB5Qnl0ZUFycmF5X0NvbmNhdAorICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjM2LlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKKyAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1Jlc2l6ZQorICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1NpemUKKyAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zNi5QeUJ5dGVBcnJheV9UeXBlIERBVEEKKyAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zNi5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zNi5QeUJ5dGVzX0FzU3RyaW5nCisgIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjM2LlB5Qnl0ZXNfQ29uY2F0CisgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjM2LlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCisgIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjM2LlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCisgIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zNi5QeUJ5dGVzX0Zyb21Gb3JtYXQKKyAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zNi5QeUJ5dGVzX0Zyb21Gb3JtYXRWCisgIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zNi5QeUJ5dGVzX0Zyb21PYmplY3QKKyAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbVN0cmluZworICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19SZXByPXB5dGhvbjM2LlB5Qnl0ZXNfUmVwcgorICBQeUJ5dGVzX1NpemU9cHl0aG9uMzYuUHlCeXRlc19TaXplCisgIFB5Qnl0ZXNfVHlwZT1weXRob24zNi5QeUJ5dGVzX1R5cGUgREFUQQorICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0NhbGwKKyAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zNi5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0CisgIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0dldEZsYWdzCisgIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCisgIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzYuUHlDRnVuY3Rpb25fR2V0U2VsZgorICBQeUNGdW5jdGlvbl9OZXc9cHl0aG9uMzYuUHlDRnVuY3Rpb25fTmV3CisgIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX05ld0V4CisgIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzYuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCisgIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjM2LlB5Q2FsbEl0ZXJfTmV3CisgIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zNi5QeUNhbGxJdGVyX1R5cGUgREFUQQorICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjM2LlB5Q2FsbGFibGVfQ2hlY2sKKyAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzYuUHlDYXBzdWxlX0dldENvbnRleHQKKyAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzYuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKKyAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzYuUHlDYXBzdWxlX0dldE5hbWUKKyAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzYuUHlDYXBzdWxlX0dldFBvaW50ZXIKKyAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zNi5QeUNhcHN1bGVfSW1wb3J0CisgIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjM2LlB5Q2Fwc3VsZV9Jc1ZhbGlkCisgIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzYuUHlDYXBzdWxlX05ldworICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zNi5QeUNhcHN1bGVfU2V0Q29udGV4dAorICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zNi5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zNi5QeUNhcHN1bGVfU2V0TmFtZQorICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zNi5QeUNhcHN1bGVfU2V0UG9pbnRlcgorICBQeUNhcHN1bGVfVHlwZT1weXRob24zNi5QeUNhcHN1bGVfVHlwZSBEQVRBCisgIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM2LlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycworICBQeUNvZGVjX0RlY29kZT1weXRob24zNi5QeUNvZGVjX0RlY29kZQorICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzYuUHlDb2RlY19EZWNvZGVyCisgIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjM2LlB5Q29kZWNfRW5jb2RlCisgIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zNi5QeUNvZGVjX0VuY29kZXIKKyAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19JZ25vcmVFcnJvcnMKKyAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzYuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKKyAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzYuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKKyAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjM2LlB5Q29kZWNfS25vd25FbmNvZGluZworICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjM2LlB5Q29kZWNfTG9va3VwRXJyb3IKKyAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zNi5QeUNvZGVjX1JlZ2lzdGVyCisgIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zNi5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKKyAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfUmVwbGFjZUVycm9ycworICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zNi5QeUNvZGVjX1N0cmVhbVJlYWRlcgorICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zNi5QeUNvZGVjX1N0cmVhbVdyaXRlcgorICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zNi5QeUNvZGVjX1N0cmljdEVycm9ycworICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKKyAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjM2LlB5Q29tcGxleF9Gcm9tRG91YmxlcworICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjM2LlB5Q29tcGxleF9JbWFnQXNEb3VibGUKKyAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zNi5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCisgIFB5Q29tcGxleF9UeXBlPXB5dGhvbjM2LlB5Q29tcGxleF9UeXBlIERBVEEKKyAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zNi5QeURlc2NyX05ld0NsYXNzTWV0aG9kCisgIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjM2LlB5RGVzY3JfTmV3R2V0U2V0CisgIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjM2LlB5RGVzY3JfTmV3TWVtYmVyCisgIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjM2LlB5RGVzY3JfTmV3TWV0aG9kCisgIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zNi5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQorICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zNi5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCisgIFB5RGljdEtleXNfVHlwZT1weXRob24zNi5QeURpY3RLZXlzX1R5cGUgREFUQQorICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzYuUHlEaWN0UHJveHlfTmV3CisgIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzYuUHlEaWN0UHJveHlfVHlwZSBEQVRBCisgIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjM2LlB5RGljdFZhbHVlc19UeXBlIERBVEEKKyAgUHlEaWN0X0NsZWFyPXB5dGhvbjM2LlB5RGljdF9DbGVhcgorICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzYuUHlEaWN0X0NvbnRhaW5zCisgIFB5RGljdF9Db3B5PXB5dGhvbjM2LlB5RGljdF9Db3B5CisgIFB5RGljdF9EZWxJdGVtPXB5dGhvbjM2LlB5RGljdF9EZWxJdGVtCisgIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9EZWxJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtCisgIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCisgIFB5RGljdF9JdGVtcz1weXRob24zNi5QeURpY3RfSXRlbXMKKyAgUHlEaWN0X0tleXM9cHl0aG9uMzYuUHlEaWN0X0tleXMKKyAgUHlEaWN0X01lcmdlPXB5dGhvbjM2LlB5RGljdF9NZXJnZQorICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zNi5QeURpY3RfTWVyZ2VGcm9tU2VxMgorICBQeURpY3RfTmV3PXB5dGhvbjM2LlB5RGljdF9OZXcKKyAgUHlEaWN0X05leHQ9cHl0aG9uMzYuUHlEaWN0X05leHQKKyAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzYuUHlEaWN0X1NldEl0ZW0KKyAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlEaWN0X1NldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X1NpemU9cHl0aG9uMzYuUHlEaWN0X1NpemUKKyAgUHlEaWN0X1R5cGU9cHl0aG9uMzYuUHlEaWN0X1R5cGUgREFUQQorICBQeURpY3RfVXBkYXRlPXB5dGhvbjM2LlB5RGljdF9VcGRhdGUKKyAgUHlEaWN0X1ZhbHVlcz1weXRob24zNi5QeURpY3RfVmFsdWVzCisgIFB5RWxsaXBzaXNfVHlwZT1weXRob24zNi5QeUVsbGlwc2lzX1R5cGUgREFUQQorICBQeUVudW1fVHlwZT1weXRob24zNi5QeUVudW1fVHlwZSBEQVRBCisgIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjM2LlB5RXJyX0JhZEFyZ3VtZW50CisgIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNi5QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjM2LlB5RXJyX0NoZWNrU2lnbmFscworICBQeUVycl9DbGVhcj1weXRob24zNi5QeUVycl9DbGVhcgorICBQeUVycl9EaXNwbGF5PXB5dGhvbjM2LlB5RXJyX0Rpc3BsYXkKKyAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNi5QeUVycl9FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX0ZldGNoPXB5dGhvbjM2LlB5RXJyX0ZldGNoCisgIFB5RXJyX0Zvcm1hdD1weXRob24zNi5QeUVycl9Gb3JtYXQKKyAgUHlFcnJfRm9ybWF0Vj1weXRob24zNi5QeUVycl9Gb3JtYXRWCisgIFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNi5QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfTmV3RXhjZXB0aW9uPXB5dGhvbjM2LlB5RXJyX05ld0V4Y2VwdGlvbgorICBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jPXB5dGhvbjM2LlB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKKyAgUHlFcnJfTm9NZW1vcnk9cHl0aG9uMzYuUHlFcnJfTm9NZW1vcnkKKyAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uPXB5dGhvbjM2LlB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgorICBQeUVycl9PY2N1cnJlZD1weXRob24zNi5QeUVycl9PY2N1cnJlZAorICBQeUVycl9QcmludD1weXRob24zNi5QeUVycl9QcmludAorICBQeUVycl9QcmludEV4PXB5dGhvbjM2LlB5RXJyX1ByaW50RXgKKyAgUHlFcnJfUHJvZ3JhbVRleHQ9cHl0aG9uMzYuUHlFcnJfUHJvZ3JhbVRleHQKKyAgUHlFcnJfUmVzdG9yZT1weXRob24zNi5QeUVycl9SZXN0b3JlCisgIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zNi5QeUVycl9TZXRGcm9tRXJybm8KKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjM2LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQorICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzYuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0CisgIFB5RXJyX1NldEludGVycnVwdD1weXRob24zNi5QeUVycl9TZXRJbnRlcnJ1cHQKKyAgUHlFcnJfU2V0Tm9uZT1weXRob24zNi5QeUVycl9TZXROb25lCisgIFB5RXJyX1NldE9iamVjdD1weXRob24zNi5QeUVycl9TZXRPYmplY3QKKyAgUHlFcnJfU2V0U3RyaW5nPXB5dGhvbjM2LlB5RXJyX1NldFN0cmluZworICBQeUVycl9TeW50YXhMb2NhdGlvbj1weXRob24zNi5QeUVycl9TeW50YXhMb2NhdGlvbgorICBQeUVycl9XYXJuRXg9cHl0aG9uMzYuUHlFcnJfV2FybkV4CisgIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zNi5QeUVycl9XYXJuRXhwbGljaXQKKyAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zNi5QeUVycl9XYXJuRm9ybWF0CisgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zNi5QeUVycl9Xcml0ZVVucmFpc2FibGUKKyAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjM2LlB5RXZhbF9BY3F1aXJlTG9jaworICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zNi5QeUV2YWxfQWNxdWlyZVRocmVhZAorICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM2LlB5RXZhbF9DYWxsRnVuY3Rpb24KKyAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzYuUHlFdmFsX0NhbGxNZXRob2QKKyAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzYuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKKyAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjM2LlB5RXZhbF9FdmFsQ29kZQorICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zNi5QeUV2YWxfRXZhbENvZGVFeAorICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjM2LlB5RXZhbF9FdmFsRnJhbWUKKyAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjM2LlB5RXZhbF9FdmFsRnJhbWVFeAorICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzYuUHlFdmFsX0dldEJ1aWx0aW5zCisgIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzYuUHlFdmFsX0dldENhbGxTdGF0cworICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzYuUHlFdmFsX0dldEZyYW1lCisgIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zNi5QeUV2YWxfR2V0RnVuY0Rlc2MKKyAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjM2LlB5RXZhbF9HZXRGdW5jTmFtZQorICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zNi5QeUV2YWxfR2V0R2xvYmFscworICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjM2LlB5RXZhbF9HZXRMb2NhbHMKKyAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjM2LlB5RXZhbF9Jbml0VGhyZWFkcworICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zNi5QeUV2YWxfUmVJbml0VGhyZWFkcworICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzYuUHlFdmFsX1JlbGVhc2VMb2NrCisgIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9SZWxlYXNlVGhyZWFkCisgIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9SZXN0b3JlVGhyZWFkCisgIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9TYXZlVGhyZWFkCisgIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzYuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAorICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKKyAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQorICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zNi5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCisgIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzYuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0J1ZmZlckVycm9yPXB5dGhvbjM2LlB5RXhjX0J1ZmZlckVycm9yIERBVEEKKyAgUHlFeGNfQnl0ZXNXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0J5dGVzV2FybmluZyBEQVRBCisgIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNi5QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19FT0ZFcnJvcj1weXRob24zNi5QeUV4Y19FT0ZFcnJvciBEQVRBCisgIFB5RXhjX0Vudmlyb25tZW50RXJyb3I9cHl0aG9uMzYuUHlFeGNfRW52aXJvbm1lbnRFcnJvciBEQVRBCisgIFB5RXhjX0V4Y2VwdGlvbj1weXRob24zNi5QeUV4Y19FeGNlcHRpb24gREFUQQorICBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I9cHl0aG9uMzYuUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIERBVEEKKyAgUHlFeGNfRnV0dXJlV2FybmluZz1weXRob24zNi5QeUV4Y19GdXR1cmVXYXJuaW5nIERBVEEKKyAgUHlFeGNfR2VuZXJhdG9yRXhpdD1weXRob24zNi5QeUV4Y19HZW5lcmF0b3JFeGl0IERBVEEKKyAgUHlFeGNfSU9FcnJvcj1weXRob24zNi5QeUV4Y19JT0Vycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0RXJyb3I9cHl0aG9uMzYuUHlFeGNfSW1wb3J0RXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0ltcG9ydFdhcm5pbmcgREFUQQorICBQeUV4Y19JbmRlbnRhdGlvbkVycm9yPXB5dGhvbjM2LlB5RXhjX0luZGVudGF0aW9uRXJyb3IgREFUQQorICBQeUV4Y19JbmRleEVycm9yPXB5dGhvbjM2LlB5RXhjX0luZGV4RXJyb3IgREFUQQorICBQeUV4Y19LZXlFcnJvcj1weXRob24zNi5QeUV4Y19LZXlFcnJvciBEQVRBCisgIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjM2LlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKKyAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzYuUHlFeGNfTG9va3VwRXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zNi5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9ySW5zdD1weXRob24zNi5QeUV4Y19NZW1vcnlFcnJvckluc3QgREFUQQorICBQeUV4Y19OYW1lRXJyb3I9cHl0aG9uMzYuUHlFeGNfTmFtZUVycm9yIERBVEEKKyAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zNi5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKKyAgUHlFeGNfT1NFcnJvcj1weXRob24zNi5QeUV4Y19PU0Vycm9yIERBVEEKKyAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zNi5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKKyAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNi5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0PXB5dGhvbjM2LlB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCBEQVRBCisgIFB5RXhjX1JlZmVyZW5jZUVycm9yPXB5dGhvbjM2LlB5RXhjX1JlZmVyZW5jZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZUVycm9yPXB5dGhvbjM2LlB5RXhjX1J1bnRpbWVFcnJvciBEQVRBCisgIFB5RXhjX1J1bnRpbWVXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1J1bnRpbWVXYXJuaW5nIERBVEEKKyAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zNi5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKKyAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzYuUHlFeGNfU3ludGF4RXJyb3IgREFUQQorICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQorICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zNi5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCisgIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzYuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCisgIFB5RXhjX1RhYkVycm9yPXB5dGhvbjM2LlB5RXhjX1RhYkVycm9yIERBVEEKKyAgUHlFeGNfVHlwZUVycm9yPXB5dGhvbjM2LlB5RXhjX1R5cGVFcnJvciBEQVRBCisgIFB5RXhjX1VuYm91bmRMb2NhbEVycm9yPXB5dGhvbjM2LlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZURlY29kZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcj1weXRob24zNi5QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5pY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVXYXJuaW5nIERBVEEKKyAgUHlFeGNfVXNlcldhcm5pbmc9cHl0aG9uMzYuUHlFeGNfVXNlcldhcm5pbmcgREFUQQorICBQeUV4Y19WYWx1ZUVycm9yPXB5dGhvbjM2LlB5RXhjX1ZhbHVlRXJyb3IgREFUQQorICBQeUV4Y19XYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1dhcm5pbmcgREFUQQorICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcj1weXRob24zNi5QeUV4Y19aZXJvRGl2aXNpb25FcnJvciBEQVRBCisgIFB5RXhjZXB0aW9uX0dldENhdXNlPXB5dGhvbjM2LlB5RXhjZXB0aW9uX0dldENhdXNlCisgIFB5RXhjZXB0aW9uX0dldENvbnRleHQ9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2s9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCisgIFB5RXhjZXB0aW9uX1NldENhdXNlPXB5dGhvbjM2LlB5RXhjZXB0aW9uX1NldENhdXNlCisgIFB5RXhjZXB0aW9uX1NldENvbnRleHQ9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2s9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCisgIFB5RmlsZV9Gcm9tRmQ9cHl0aG9uMzYuUHlGaWxlX0Zyb21GZAorICBQeUZpbGVfR2V0TGluZT1weXRob24zNi5QeUZpbGVfR2V0TGluZQorICBQeUZpbGVfV3JpdGVPYmplY3Q9cHl0aG9uMzYuUHlGaWxlX1dyaXRlT2JqZWN0CisgIFB5RmlsZV9Xcml0ZVN0cmluZz1weXRob24zNi5QeUZpbGVfV3JpdGVTdHJpbmcKKyAgUHlGaWx0ZXJfVHlwZT1weXRob24zNi5QeUZpbHRlcl9UeXBlIERBVEEKKyAgUHlGbG9hdF9Bc0RvdWJsZT1weXRob24zNi5QeUZsb2F0X0FzRG91YmxlCisgIFB5RmxvYXRfRnJvbURvdWJsZT1weXRob24zNi5QeUZsb2F0X0Zyb21Eb3VibGUKKyAgUHlGbG9hdF9Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5RmxvYXRfRnJvbVN0cmluZworICBQeUZsb2F0X0dldEluZm89cHl0aG9uMzYuUHlGbG9hdF9HZXRJbmZvCisgIFB5RmxvYXRfR2V0TWF4PXB5dGhvbjM2LlB5RmxvYXRfR2V0TWF4CisgIFB5RmxvYXRfR2V0TWluPXB5dGhvbjM2LlB5RmxvYXRfR2V0TWluCisgIFB5RmxvYXRfVHlwZT1weXRob24zNi5QeUZsb2F0X1R5cGUgREFUQQorICBQeUZyb3plblNldF9OZXc9cHl0aG9uMzYuUHlGcm96ZW5TZXRfTmV3CisgIFB5RnJvemVuU2V0X1R5cGU9cHl0aG9uMzYuUHlGcm96ZW5TZXRfVHlwZSBEQVRBCisgIFB5R0NfQ29sbGVjdD1weXRob24zNi5QeUdDX0NvbGxlY3QKKyAgUHlHSUxTdGF0ZV9FbnN1cmU9cHl0aG9uMzYuUHlHSUxTdGF0ZV9FbnN1cmUKKyAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGU9cHl0aG9uMzYuUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKKyAgUHlHSUxTdGF0ZV9SZWxlYXNlPXB5dGhvbjM2LlB5R0lMU3RhdGVfUmVsZWFzZQorICBQeUdldFNldERlc2NyX1R5cGU9cHl0aG9uMzYuUHlHZXRTZXREZXNjcl9UeXBlIERBVEEKKyAgUHlJbXBvcnRfQWRkTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0FkZE1vZHVsZQorICBQeUltcG9ydF9BcHBlbmRJbml0dGFiPXB5dGhvbjM2LlB5SW1wb3J0X0FwcGVuZEluaXR0YWIKKyAgUHlJbXBvcnRfQ2xlYW51cD1weXRob24zNi5QeUltcG9ydF9DbGVhbnVwCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXg9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCisgIFB5SW1wb3J0X0dldEltcG9ydGVyPXB5dGhvbjM2LlB5SW1wb3J0X0dldEltcG9ydGVyCisgIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyPXB5dGhvbjM2LlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCisgIFB5SW1wb3J0X0dldE1hZ2ljVGFnPXB5dGhvbjM2LlB5SW1wb3J0X0dldE1hZ2ljVGFnCisgIFB5SW1wb3J0X0dldE1vZHVsZURpY3Q9cHl0aG9uMzYuUHlJbXBvcnRfR2V0TW9kdWxlRGljdAorICBQeUltcG9ydF9JbXBvcnQ9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0CisgIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZT1weXRob24zNi5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zNi5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKKyAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X1JlbG9hZE1vZHVsZQorICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQorICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjM2LlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKKyAgUHlJdGVyX05leHQ9cHl0aG9uMzYuUHlJdGVyX05leHQKKyAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjM2LlB5TGlzdEl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zNi5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQorICBQeUxpc3RfQXBwZW5kPXB5dGhvbjM2LlB5TGlzdF9BcHBlbmQKKyAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzYuUHlMaXN0X0FzVHVwbGUKKyAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzYuUHlMaXN0X0dldEl0ZW0KKyAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjM2LlB5TGlzdF9HZXRTbGljZQorICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjM2LlB5TGlzdF9JbnNlcnQKKyAgUHlMaXN0X05ldz1weXRob24zNi5QeUxpc3RfTmV3CisgIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjM2LlB5TGlzdF9SZXZlcnNlCisgIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjM2LlB5TGlzdF9TZXRJdGVtCisgIFB5TGlzdF9TZXRTbGljZT1weXRob24zNi5QeUxpc3RfU2V0U2xpY2UKKyAgUHlMaXN0X1NpemU9cHl0aG9uMzYuUHlMaXN0X1NpemUKKyAgUHlMaXN0X1NvcnQ9cHl0aG9uMzYuUHlMaXN0X1NvcnQKKyAgUHlMaXN0X1R5cGU9cHl0aG9uMzYuUHlMaXN0X1R5cGUgREFUQQorICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zNi5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zNi5QeUxvbmdfQXNEb3VibGUKKyAgUHlMb25nX0FzTG9uZz1weXRob24zNi5QeUxvbmdfQXNMb25nCisgIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zNi5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0FzTG9uZ0xvbmcKKyAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zNi5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc1NpemVfdD1weXRob24zNi5QeUxvbmdfQXNTaXplX3QKKyAgUHlMb25nX0FzU3NpemVfdD1weXRob24zNi5QeUxvbmdfQXNTc2l6ZV90CisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjM2LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzYuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaworICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjM2LlB5TG9uZ19Bc1ZvaWRQdHIKKyAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzYuUHlMb25nX0Zyb21Eb3VibGUKKyAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tTG9uZworICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzYuUHlMb25nX0Zyb21TaXplX3QKKyAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjM2LlB5TG9uZ19Gcm9tU3NpemVfdAorICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zNi5QeUxvbmdfRnJvbVN0cmluZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zNi5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zNi5QeUxvbmdfRnJvbVZvaWRQdHIKKyAgUHlMb25nX0dldEluZm89cHl0aG9uMzYuUHlMb25nX0dldEluZm8KKyAgUHlMb25nX1R5cGU9cHl0aG9uMzYuUHlMb25nX1R5cGUgREFUQQorICBQeU1hcF9UeXBlPXB5dGhvbjM2LlB5TWFwX1R5cGUgREFUQQorICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzYuUHlNYXBwaW5nX0NoZWNrCisgIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzYuUHlNYXBwaW5nX0hhc0tleQorICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKKyAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjM2LlB5TWFwcGluZ19JdGVtcworICBQeU1hcHBpbmdfS2V5cz1weXRob24zNi5QeU1hcHBpbmdfS2V5cworICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjM2LlB5TWFwcGluZ19MZW5ndGgKKyAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzYuUHlNYXBwaW5nX1NpemUKKyAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zNi5QeU1hcHBpbmdfVmFsdWVzCisgIFB5TWVtX0ZyZWU9cHl0aG9uMzYuUHlNZW1fRnJlZQorICBQeU1lbV9NYWxsb2M9cHl0aG9uMzYuUHlNZW1fTWFsbG9jCisgIFB5TWVtX1JlYWxsb2M9cHl0aG9uMzYuUHlNZW1fUmVhbGxvYworICBQeU1lbWJlckRlc2NyX1R5cGU9cHl0aG9uMzYuUHlNZW1iZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Q9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKKyAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXM9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKKyAgUHlNZW1vcnlWaWV3X1R5cGU9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X1R5cGUgREFUQQorICBQeU1ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzYuUHlNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQ9cHl0aG9uMzYuUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKKyAgUHlNb2R1bGVfQWRkT2JqZWN0PXB5dGhvbjM2LlB5TW9kdWxlX0FkZE9iamVjdAorICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudD1weXRob24zNi5QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAorICBQeU1vZHVsZV9DcmVhdGUyPXB5dGhvbjM2LlB5TW9kdWxlX0NyZWF0ZTIKKyAgUHlNb2R1bGVfR2V0RGVmPXB5dGhvbjM2LlB5TW9kdWxlX0dldERlZgorICBQeU1vZHVsZV9HZXREaWN0PXB5dGhvbjM2LlB5TW9kdWxlX0dldERpY3QKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWU9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RmlsZW5hbWUKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3Q9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKKyAgUHlNb2R1bGVfR2V0TmFtZT1weXRob24zNi5QeU1vZHVsZV9HZXROYW1lCisgIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjM2LlB5TW9kdWxlX0dldFN0YXRlCisgIFB5TW9kdWxlX05ldz1weXRob24zNi5QeU1vZHVsZV9OZXcKKyAgUHlNb2R1bGVfVHlwZT1weXRob24zNi5QeU1vZHVsZV9UeXBlIERBVEEKKyAgUHlNb2R1bGVEZWZfSW5pdD1weXRob24zNi5QeU1vZHVsZURlZl9Jbml0CisgIFB5TW9kdWxlRGVmX1R5cGU9cHl0aG9uMzYuUHlNb2R1bGVEZWZfVHlwZSBEQVRBCisgIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzYuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCisgIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjM2LlB5TnVtYmVyX0Fic29sdXRlCisgIFB5TnVtYmVyX0FkZD1weXRob24zNi5QeU51bWJlcl9BZGQKKyAgUHlOdW1iZXJfQW5kPXB5dGhvbjM2LlB5TnVtYmVyX0FuZAorICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzYuUHlOdW1iZXJfQXNTc2l6ZV90CisgIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjM2LlB5TnVtYmVyX0NoZWNrCisgIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zNi5QeU51bWJlcl9EaXZtb2QKKyAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzYuUHlOdW1iZXJfRmxvYXQKKyAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlQWRkCisgIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUFuZAorICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAorICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5CisgIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zNi5QeU51bWJlcl9JblBsYWNlT3IKKyAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VQb3dlcgorICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlUnNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKKyAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zNi5QeU51bWJlcl9JblBsYWNlWG9yCisgIFB5TnVtYmVyX0luZGV4PXB5dGhvbjM2LlB5TnVtYmVyX0luZGV4CisgIFB5TnVtYmVyX0ludmVydD1weXRob24zNi5QeU51bWJlcl9JbnZlcnQKKyAgUHlOdW1iZXJfTG9uZz1weXRob24zNi5QeU51bWJlcl9Mb25nCisgIFB5TnVtYmVyX0xzaGlmdD1weXRob24zNi5QeU51bWJlcl9Mc2hpZnQKKyAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzYuUHlOdW1iZXJfTXVsdGlwbHkKKyAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzYuUHlOdW1iZXJfTmVnYXRpdmUKKyAgUHlOdW1iZXJfT3I9cHl0aG9uMzYuUHlOdW1iZXJfT3IKKyAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzYuUHlOdW1iZXJfUG9zaXRpdmUKKyAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzYuUHlOdW1iZXJfUG93ZXIKKyAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjM2LlB5TnVtYmVyX1JlbWFpbmRlcgorICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfUnNoaWZ0CisgIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjM2LlB5TnVtYmVyX1N1YnRyYWN0CisgIFB5TnVtYmVyX1RvQmFzZT1weXRob24zNi5QeU51bWJlcl9Ub0Jhc2UKKyAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zNi5QeU51bWJlcl9UcnVlRGl2aWRlCisgIFB5TnVtYmVyX1hvcj1weXRob24zNi5QeU51bWJlcl9Yb3IKKyAgUHlPU19BZnRlckZvcms9cHl0aG9uMzYuUHlPU19BZnRlckZvcmsKKyAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zNi5QeU9TX0luaXRJbnRlcnJ1cHRzCisgIFB5T1NfSW5wdXRIb29rPXB5dGhvbjM2LlB5T1NfSW5wdXRIb29rIERBVEEKKyAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zNi5QeU9TX0ludGVycnVwdE9jY3VycmVkCisgIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzYuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCisgIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zNi5QeU9TX2RvdWJsZV90b19zdHJpbmcKKyAgUHlPU19nZXRzaWc9cHl0aG9uMzYuUHlPU19nZXRzaWcKKyAgUHlPU19teXN0cmljbXA9cHl0aG9uMzYuUHlPU19teXN0cmljbXAKKyAgUHlPU19teXN0cm5pY21wPXB5dGhvbjM2LlB5T1NfbXlzdHJuaWNtcAorICBQeU9TX3NldHNpZz1weXRob24zNi5QeU9TX3NldHNpZworICBQeU9TX3NucHJpbnRmPXB5dGhvbjM2LlB5T1Nfc25wcmludGYKKyAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjM2LlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQorICBQeU9TX3N0cnRvbD1weXRob24zNi5QeU9TX3N0cnRvbAorICBQeU9TX3N0cnRvdWw9cHl0aG9uMzYuUHlPU19zdHJ0b3VsCisgIFB5T1NfdnNucHJpbnRmPXB5dGhvbjM2LlB5T1NfdnNucHJpbnRmCisgIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjM2LlB5T2JqZWN0X0FTQ0lJCisgIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKKyAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zNi5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCisgIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCisgIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjM2LlB5T2JqZWN0X0J5dGVzCisgIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbAorICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzYuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncworICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjM2LlB5T2JqZWN0X0NhbGxNZXRob2QKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zNi5QeU9iamVjdF9DYWxsT2JqZWN0CisgIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zNi5QeU9iamVjdF9DbGVhcldlYWtSZWZzCisgIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfRGVsSXRlbQorICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM2LlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlPYmplY3RfRGlyPXB5dGhvbjM2LlB5T2JqZWN0X0RpcgorICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzYuUHlPYmplY3RfRm9ybWF0CisgIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzYuUHlPYmplY3RfRnJlZQorICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzYuUHlPYmplY3RfR0NfRGVsCisgIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjM2LlB5T2JqZWN0X0dDX1RyYWNrCisgIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzYuUHlPYmplY3RfR0NfVW5UcmFjaworICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgorICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0dldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zNi5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfR2V0SXRlbQorICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjM2LlB5T2JqZWN0X0dldEl0ZXIKKyAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zNi5QeU9iamVjdF9IYXNBdHRyCisgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfSGFzQXR0clN0cmluZworICBQeU9iamVjdF9IYXNoPXB5dGhvbjM2LlB5T2JqZWN0X0hhc2gKKyAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjM2LlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAorICBQeU9iamVjdF9Jbml0PXB5dGhvbjM2LlB5T2JqZWN0X0luaXQKKyAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zNi5QeU9iamVjdF9Jbml0VmFyCisgIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzYuUHlPYmplY3RfSXNJbnN0YW5jZQorICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjM2LlB5T2JqZWN0X0lzU3ViY2xhc3MKKyAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjM2LlB5T2JqZWN0X0lzVHJ1ZQorICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzYuUHlPYmplY3RfTGVuZ3RoCisgIFB5T2JqZWN0X01hbGxvYz1weXRob24zNi5QeU9iamVjdF9NYWxsb2MKKyAgUHlPYmplY3RfTm90PXB5dGhvbjM2LlB5T2JqZWN0X05vdAorICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjM2LlB5T2JqZWN0X1JlYWxsb2MKKyAgUHlPYmplY3RfUmVwcj1weXRob24zNi5QeU9iamVjdF9SZXByCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjM2LlB5T2JqZWN0X1JpY2hDb21wYXJlCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zNi5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKKyAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzYuUHlPYmplY3RfU2VsZkl0ZXIKKyAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9TZXRBdHRyCisgIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfU2V0QXR0clN0cmluZworICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjM2LlB5T2JqZWN0X1NldEl0ZW0KKyAgUHlPYmplY3RfU2l6ZT1weXRob24zNi5QeU9iamVjdF9TaXplCisgIFB5T2JqZWN0X1N0cj1weXRob24zNi5QeU9iamVjdF9TdHIKKyAgUHlPYmplY3RfVHlwZT1weXRob24zNi5QeU9iamVjdF9UeXBlIERBVEEKKyAgUHlPRGljdF9EZWxJdGVtPXB5dGhvbjM2LlB5T0RpY3RfRGVsSXRlbQorICBQeU9EaWN0X05ldz1weXRob24zNi5QeU9EaWN0X05ldworICBQeU9EaWN0X1NldEl0ZW09cHl0aG9uMzYuUHlPRGljdF9TZXRJdGVtCisgIFB5T0RpY3RfVHlwZT1weXRob24zNi5QeU9EaWN0X1R5cGUgREFUQQorICBQeU9EaWN0SXRlbXNfVHlwZT1weXRob24zNi5QeU9EaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5T0RpY3RJdGVyX1R5cGU9cHl0aG9uMzYuUHlPRGljdEl0ZXJfVHlwZSBEQVRBCisgIFB5T0RpY3RLZXlzX1R5cGU9cHl0aG9uMzYuUHlPRGljdEtleXNfVHlwZSBEQVRBCisgIFB5T0RpY3RWYWx1ZXNfVHlwZT1weXRob24zNi5QeU9EaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncz1weXRob24zNi5QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncworICBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzPXB5dGhvbjM2LlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKKyAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjM2LlB5UHJvcGVydHlfVHlwZSBEQVRBCisgIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzYuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5UmFuZ2VfVHlwZT1weXRob24zNi5QeVJhbmdlX1R5cGUgREFUQQorICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzYuUHlSZXZlcnNlZF9UeXBlIERBVEEKKyAgUHlTZXFJdGVyX05ldz1weXRob24zNi5QeVNlcUl0ZXJfTmV3CisgIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjM2LlB5U2VxSXRlcl9UeXBlIERBVEEKKyAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zNi5QeVNlcXVlbmNlX0NoZWNrCisgIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjM2LlB5U2VxdWVuY2VfQ29uY2F0CisgIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzYuUHlTZXF1ZW5jZV9Db250YWlucworICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjM2LlB5U2VxdWVuY2VfQ291bnQKKyAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjM2LlB5U2VxdWVuY2VfRGVsSXRlbQorICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjM2LlB5U2VxdWVuY2VfRGVsU2xpY2UKKyAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjM2LlB5U2VxdWVuY2VfRmFzdAorICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzYuUHlTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzYuUHlTZXF1ZW5jZV9HZXRTbGljZQorICBQeVNlcXVlbmNlX0luPXB5dGhvbjM2LlB5U2VxdWVuY2VfSW4KKyAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjM2LlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAorICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0CisgIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JbmRleAorICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zNi5QeVNlcXVlbmNlX0xlbmd0aAorICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzYuUHlTZXF1ZW5jZV9MaXN0CisgIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjM2LlB5U2VxdWVuY2VfUmVwZWF0CisgIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNi5QeVNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zNi5QeVNlcXVlbmNlX1NldFNsaWNlCisgIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zNi5QeVNlcXVlbmNlX1NpemUKKyAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zNi5QeVNlcXVlbmNlX1R1cGxlCisgIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjM2LlB5U2V0SXRlcl9UeXBlIERBVEEKKyAgUHlTZXRfQWRkPXB5dGhvbjM2LlB5U2V0X0FkZAorICBQeVNldF9DbGVhcj1weXRob24zNi5QeVNldF9DbGVhcgorICBQeVNldF9Db250YWlucz1weXRob24zNi5QeVNldF9Db250YWlucworICBQeVNldF9EaXNjYXJkPXB5dGhvbjM2LlB5U2V0X0Rpc2NhcmQKKyAgUHlTZXRfTmV3PXB5dGhvbjM2LlB5U2V0X05ldworICBQeVNldF9Qb3A9cHl0aG9uMzYuUHlTZXRfUG9wCisgIFB5U2V0X1NpemU9cHl0aG9uMzYuUHlTZXRfU2l6ZQorICBQeVNldF9UeXBlPXB5dGhvbjM2LlB5U2V0X1R5cGUgREFUQQorICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzYuUHlTbGljZV9HZXRJbmRpY2VzCisgIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjM2LlB5U2xpY2VfR2V0SW5kaWNlc0V4CisgIFB5U2xpY2VfTmV3PXB5dGhvbjM2LlB5U2xpY2VfTmV3CisgIFB5U2xpY2VfVHlwZT1weXRob24zNi5QeVNsaWNlX1R5cGUgREFUQQorICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzYuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKKyAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjM2LlB5U3RhdGVfRmluZE1vZHVsZQorICBQeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNi5QeVN0YXRlX0FkZE1vZHVsZQorICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zNi5QeVN0YXRlX1JlbW92ZU1vZHVsZQorICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzYuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfTmV3CisgIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zNi5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQorICBQeVN1cGVyX1R5cGU9cHl0aG9uMzYuUHlTdXBlcl9UeXBlIERBVEEKKyAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zNi5QeVN5c19BZGRXYXJuT3B0aW9uCisgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjM2LlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCisgIFB5U3lzX0Zvcm1hdFN0ZGVycj1weXRob24zNi5QeVN5c19Gb3JtYXRTdGRlcnIKKyAgUHlTeXNfRm9ybWF0U3Rkb3V0PXB5dGhvbjM2LlB5U3lzX0Zvcm1hdFN0ZG91dAorICBQeVN5c19HZXRPYmplY3Q9cHl0aG9uMzYuUHlTeXNfR2V0T2JqZWN0CisgIFB5U3lzX0hhc1dhcm5PcHRpb25zPXB5dGhvbjM2LlB5U3lzX0hhc1dhcm5PcHRpb25zCisgIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnM9cHl0aG9uMzYuUHlTeXNfUmVzZXRXYXJuT3B0aW9ucworICBQeVN5c19TZXRBcmd2PXB5dGhvbjM2LlB5U3lzX1NldEFyZ3YKKyAgUHlTeXNfU2V0QXJndkV4PXB5dGhvbjM2LlB5U3lzX1NldEFyZ3ZFeAorICBQeVN5c19TZXRPYmplY3Q9cHl0aG9uMzYuUHlTeXNfU2V0T2JqZWN0CisgIFB5U3lzX1NldFBhdGg9cHl0aG9uMzYuUHlTeXNfU2V0UGF0aAorICBQeVN5c19Xcml0ZVN0ZGVycj1weXRob24zNi5QeVN5c19Xcml0ZVN0ZGVycgorICBQeVN5c19Xcml0ZVN0ZG91dD1weXRob24zNi5QeVN5c19Xcml0ZVN0ZG91dAorICBQeVRocmVhZFN0YXRlX0NsZWFyPXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfQ2xlYXIKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGU9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9EZWxldGUKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAorICBQeVRocmVhZFN0YXRlX0dldD1weXRob24zNi5QeVRocmVhZFN0YXRlX0dldAorICBQeVRocmVhZFN0YXRlX0dldERpY3Q9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9HZXREaWN0CisgIFB5VGhyZWFkU3RhdGVfTmV3PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfTmV3CisgIFB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGM9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YworICBQeVRocmVhZFN0YXRlX1N3YXA9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9Td2FwCisgIFB5VHJhY2VCYWNrX0hlcmU9cHl0aG9uMzYuUHlUcmFjZUJhY2tfSGVyZQorICBQeVRyYWNlQmFja19QcmludD1weXRob24zNi5QeVRyYWNlQmFja19QcmludAorICBQeVRyYWNlQmFja19UeXBlPXB5dGhvbjM2LlB5VHJhY2VCYWNrX1R5cGUgREFUQQorICBQeVR1cGxlSXRlcl9UeXBlPXB5dGhvbjM2LlB5VHVwbGVJdGVyX1R5cGUgREFUQQorICBQeVR1cGxlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzYuUHlUdXBsZV9DbGVhckZyZWVMaXN0CisgIFB5VHVwbGVfR2V0SXRlbT1weXRob24zNi5QeVR1cGxlX0dldEl0ZW0KKyAgUHlUdXBsZV9HZXRTbGljZT1weXRob24zNi5QeVR1cGxlX0dldFNsaWNlCisgIFB5VHVwbGVfTmV3PXB5dGhvbjM2LlB5VHVwbGVfTmV3CisgIFB5VHVwbGVfUGFjaz1weXRob24zNi5QeVR1cGxlX1BhY2sKKyAgUHlUdXBsZV9TZXRJdGVtPXB5dGhvbjM2LlB5VHVwbGVfU2V0SXRlbQorICBQeVR1cGxlX1NpemU9cHl0aG9uMzYuUHlUdXBsZV9TaXplCisgIFB5VHVwbGVfVHlwZT1weXRob24zNi5QeVR1cGxlX1R5cGUgREFUQQorICBQeVR5cGVfQ2xlYXJDYWNoZT1weXRob24zNi5QeVR5cGVfQ2xlYXJDYWNoZQorICBQeVR5cGVfRnJvbVNwZWM9cHl0aG9uMzYuUHlUeXBlX0Zyb21TcGVjCisgIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcz1weXRob24zNi5QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKKyAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zNi5QeVR5cGVfR2VuZXJpY0FsbG9jCisgIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjM2LlB5VHlwZV9HZW5lcmljTmV3CisgIFB5VHlwZV9HZXRGbGFncz1weXRob24zNi5QeVR5cGVfR2V0RmxhZ3MKKyAgUHlUeXBlX0dldFNsb3Q9cHl0aG9uMzYuUHlUeXBlX0dldFNsb3QKKyAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zNi5QeVR5cGVfSXNTdWJ0eXBlCisgIFB5VHlwZV9Nb2RpZmllZD1weXRob24zNi5QeVR5cGVfTW9kaWZpZWQKKyAgUHlUeXBlX1JlYWR5PXB5dGhvbjM2LlB5VHlwZV9SZWFkeQorICBQeVR5cGVfVHlwZT1weXRob24zNi5QeVR5cGVfVHlwZSBEQVRBCisgIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzYuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzYuUHlVbmljb2RlX0FwcGVuZAorICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsPXB5dGhvbjM2LlB5VW5pY29kZV9BcHBlbmRBbmREZWwKKyAgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nCisgIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZT1weXRob24zNi5QeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nCisgIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcKKyAgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVVRGOFN0cmluZworICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzYuUHlVbmljb2RlX0FzV2lkZUNoYXIKKyAgUHlVbmljb2RlX0NsZWFyRnJlZWxpc3Q9cHl0aG9uMzYuUHlVbmljb2RlX0NsZWFyRnJlZWxpc3QKKyAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzYuUHlVbmljb2RlX0NvbXBhcmUKKyAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zNi5QeVVuaWNvZGVfQ29uY2F0CisgIFB5VW5pY29kZV9Db250YWlucz1weXRob24zNi5QeVVuaWNvZGVfQ29udGFpbnMKKyAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjM2LlB5VW5pY29kZV9Db3VudAorICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGUKKyAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVBU0NJSQorICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKKyAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlTGF0aW4xCisgIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNj1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMTYKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYzMgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGOAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0ZTQ29udmVydGVyPXB5dGhvbjM2LlB5VW5pY29kZV9GU0NvbnZlcnRlcgorICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjM2LlB5VW5pY29kZV9GU0RlY29kZXIKKyAgUHlVbmljb2RlX0ZpbmQ9cHl0aG9uMzYuUHlVbmljb2RlX0ZpbmQKKyAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zNi5QeVVuaWNvZGVfRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tRm9ybWF0VgorICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbU9iamVjdAorICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21PcmRpbmFsCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNi5QeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zNi5QeVVuaWNvZGVfRnJvbVdpZGVDaGFyCisgIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zNi5QeVVuaWNvZGVfR2V0U2l6ZQorICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjM2LlB5VW5pY29kZV9Jc0lkZW50aWZpZXIKKyAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzYuUHlVbmljb2RlX0pvaW4KKyAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zNi5QeVVuaWNvZGVfUGFydGl0aW9uCisgIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjM2LlB5VW5pY29kZV9SUGFydGl0aW9uCisgIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzYuUHlVbmljb2RlX1JTcGxpdAorICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zNi5QeVVuaWNvZGVfUmVwbGFjZQorICBQeVVuaWNvZGVfUmVzaXplPXB5dGhvbjM2LlB5VW5pY29kZV9SZXNpemUKKyAgUHlVbmljb2RlX1JpY2hDb21wYXJlPXB5dGhvbjM2LlB5VW5pY29kZV9SaWNoQ29tcGFyZQorICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX1NwbGl0PXB5dGhvbjM2LlB5VW5pY29kZV9TcGxpdAorICBQeVVuaWNvZGVfU3BsaXRsaW5lcz1weXRob24zNi5QeVVuaWNvZGVfU3BsaXRsaW5lcworICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjM2LlB5VW5pY29kZV9UYWlsbWF0Y2gKKyAgUHlVbmljb2RlX1RyYW5zbGF0ZT1weXRob24zNi5QeVVuaWNvZGVfVHJhbnNsYXRlCisgIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwPXB5dGhvbjM2LlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCisgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY3CisgIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjM2LlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKKyAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjM2LlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAorICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zNi5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQorICBQeVVuaWNvZGVfVHlwZT1weXRob24zNi5QeVVuaWNvZGVfVHlwZSBEQVRBCisgIFB5V2Vha3JlZl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlXZWFrcmVmX0dldE9iamVjdCBEQVRBCisgIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zNi5QeVdlYWtyZWZfTmV3UHJveHkKKyAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zNi5QeVdlYWtyZWZfTmV3UmVmCisgIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzYuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCisgIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzYuUHlXcmFwcGVyX05ldworICBQeVppcF9UeXBlPXB5dGhvbjM2LlB5WmlwX1R5cGUgREFUQQorICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zNi5QeV9BZGRQZW5kaW5nQ2FsbAorICBQeV9BdEV4aXQ9cHl0aG9uMzYuUHlfQXRFeGl0CisgIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzYuUHlfQnVpbGRWYWx1ZQorICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjM2LlB5X0NvbXBpbGVTdHJpbmcKKyAgUHlfRGVjUmVmPXB5dGhvbjM2LlB5X0RlY1JlZgorICBQeV9FbmRJbnRlcnByZXRlcj1weXRob24zNi5QeV9FbmRJbnRlcnByZXRlcgorICBQeV9FeGl0PXB5dGhvbjM2LlB5X0V4aXQKKyAgUHlfRmF0YWxFcnJvcj1weXRob24zNi5QeV9GYXRhbEVycm9yCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0ZpbmFsaXplPXB5dGhvbjM2LlB5X0ZpbmFsaXplCisgIFB5X0ZpbmFsaXplRXg9cHl0aG9uMzYuUHlfRmluYWxpemVFeAorICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzYuUHlfR2V0QnVpbGRJbmZvCisgIFB5X0dldENvbXBpbGVyPXB5dGhvbjM2LlB5X0dldENvbXBpbGVyCisgIFB5X0dldENvcHlyaWdodD1weXRob24zNi5QeV9HZXRDb3B5cmlnaHQKKyAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNi5QeV9HZXRFeGVjUHJlZml4CisgIFB5X0dldFBhdGg9cHl0aG9uMzYuUHlfR2V0UGF0aAorICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNi5QeV9HZXRQbGF0Zm9ybQorICBQeV9HZXRQcmVmaXg9cHl0aG9uMzYuUHlfR2V0UHJlZml4CisgIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNi5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKKyAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzYuUHlfR2V0UHJvZ3JhbU5hbWUKKyAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNi5QeV9HZXRQeXRob25Ib21lCisgIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM2LlB5X0dldFJlY3Vyc2lvbkxpbWl0CisgIFB5X0dldFZlcnNpb249cHl0aG9uMzYuUHlfR2V0VmVyc2lvbgorICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9JbmNSZWY9cHl0aG9uMzYuUHlfSW5jUmVmCisgIFB5X0luaXRpYWxpemU9cHl0aG9uMzYuUHlfSW5pdGlhbGl6ZQorICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzYuUHlfSW5pdGlhbGl6ZUV4CisgIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzYuUHlfSXNJbml0aWFsaXplZAorICBQeV9NYWluPXB5dGhvbjM2LlB5X01haW4KKyAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNi5QeV9NYWtlUGVuZGluZ0NhbGxzCisgIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM2LlB5X05ld0ludGVycHJldGVyCisgIFB5X1JlcHJFbnRlcj1weXRob24zNi5QeV9SZXByRW50ZXIKKyAgUHlfUmVwckxlYXZlPXB5dGhvbjM2LlB5X1JlcHJMZWF2ZQorICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zNi5QeV9TZXRQcm9ncmFtTmFtZQorICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjM2LlB5X1NldFB5dGhvbkhvbWUKKyAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzYuUHlfU2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzYuUHlfU3ltdGFibGVTdHJpbmcKKyAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjM2LlB5X1ZhQnVpbGRWYWx1ZQorICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM2Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNi5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCisgIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM2Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisgIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX01hbGxvYworICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM2Ll9QeU9iamVjdF9HQ19OZXcKKyAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNi5fUHlPYmplY3RfR0NfTmV3VmFyCisgIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX1Jlc2l6ZQorICBfUHlPYmplY3RfTmV3PXB5dGhvbjM2Ll9QeU9iamVjdF9OZXcKKyAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNi5fUHlPYmplY3RfTmV3VmFyCisgIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNi5fUHlTdGF0ZV9BZGRNb2R1bGUKKyAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNi5fUHlUaHJlYWRTdGF0ZV9Jbml0CisgIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM2Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCisgIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNi5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQorICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNi5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCisgIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM2Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0CisgIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzYuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgorICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjM2Ll9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zNi5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zNi5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNi5fUHlfQnVpbGRWYWx1ZV9TaXplVAorICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zNi5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCisgIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzYuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAorICBfUHlfRGVhbGxvYz1weXRob24zNi5fUHlfRGVhbGxvYworICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzYuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKKyAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjM2Ll9QeV9GYWxzZVN0cnVjdCBEQVRBCisgIF9QeV9Ob25lU3RydWN0PXB5dGhvbjM2Ll9QeV9Ob25lU3RydWN0IERBVEEKKyAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjM2Ll9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCisgIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzYuX1B5X1N3YXBwZWRPcCBEQVRBCisgIF9QeV9UcnVlU3RydWN0PXB5dGhvbjM2Ll9QeV9UcnVlU3RydWN0IERBVEEKKyAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNi5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCisgIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzYuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19WYVBhcnNlX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNi5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzYuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9leGUucmMgYi9QQy9weXRob25fZXhlLnJjCmluZGV4IDkxNzg1YTEuLmFlMGIwMjkgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbl9leGUucmMKKysrIGIvUEMvcHl0aG9uX2V4ZS5yYwpAQCAtNyw3ICs3LDcgQEAKICNpbmNsdWRlIDx3aW51c2VyLmg+CiAxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCiAKLTEgSUNPTiBESVNDQVJEQUJMRSAicHljb24uaWNvIiAKKzEgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9uLmljbyIgCiAKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbndfZXhlLnJjIGIvUEMvcHl0aG9ud19leGUucmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiZjM1OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL3B5dGhvbndfZXhlLnJjCkBAIC0wLDAgKzEsNDkgQEAKKy8vIFJlc291cmNlIHNjcmlwdCBmb3IgUHl0aG9uIGNvbnNvbGUgRVhFcy4KKworI2luY2x1ZGUgInB5dGhvbl92ZXJfcmMuaCIKKworLy8gSW5jbHVkZSB0aGUgbWFuaWZlc3QgZmlsZSB0aGF0IGluZGljYXRlcyB3ZSBzdXBwb3J0IGFsbAorLy8gY3VycmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgorI2luY2x1ZGUgPHdpbnVzZXIuaD4KKzEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKKworMSBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob253LmljbyIgCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBWZXJzaW9uCisvLworCitWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KKyBGSUxFVkVSU0lPTiBQWVZFUlNJT042NAorIFBST0RVQ1RWRVJTSU9OIFBZVkVSU0lPTjY0CisgRklMRUZMQUdTTUFTSyAweDNmTAorI2lmZGVmIF9ERUJVRworIEZJTEVGTEFHUyBWU19GRl9ERUJVRworI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9TIFZPU19fV0lORE9XUzMyCisgRklMRVRZUEUgVkZUX0FQUAorIEZJTEVTVUJUWVBFIDB4MEwKK0JFR0lOCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIEJMT0NLICIwMDAwMDRiMCIKKyAgICAgICAgQkVHSU4KKyAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsIFBZVEhPTl9DT01QQU5ZICJcMCIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uXDAiCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gQXBwbGljYXRpb25cMCIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsIFBZVEhPTl9DT1BZUklHSFQgIlwwIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHl0aG9udyIgUFlUSE9OX0RFQlVHX0VYVCAiLmV4ZVwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvblwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgRU5ECisgICAgRU5ECisgICAgQkxPQ0sgIlZhckZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4MCwgMTIwMAorICAgIEVORAorRU5ECmRpZmYgLS1naXQgYS9QQy90ZXN0cHkucHkgYi9QQy90ZXN0cHkucHkKaW5kZXggNGVmM2Q0Zi4uNzA5ZjM1YyAxMDA2NDQKLS0tIGEvUEMvdGVzdHB5LnB5CisrKyBiL1BDL3Rlc3RweS5weQpAQCAtMjYsNSArMjYsNSBAQAogICAgICAgICAgICAgIyBBZGQgdGhlICJ0ZXN0IiBkaXJlY3RvcnkgdG8gUFlUSE9OUEFUSC4KICAgICAgICAgICAgIHN5cy5wYXRoID0gc3lzLnBhdGggKyBbdGVzdF0KIAotaW1wb3J0IHJlZ3J0ZXN0ICMgU3RhbmRhcmQgUHl0aG9uIHRlc3Rlci4KLXJlZ3J0ZXN0Lm1haW4oKQoraW1wb3J0IGxpYnJlZ3J0ZXN0ICMgU3RhbmRhcmQgUHl0aG9uIHRlc3Rlci4KK2xpYnJlZ3J0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvUEMvd2lucmVnLmMgYi9QQy93aW5yZWcuYwppbmRleCBmMDhkOWE0Li45NTI0ODM4IDEwMDY0NAotLS0gYS9QQy93aW5yZWcuYworKysgYi9QQy93aW5yZWcuYwpAQCAtNTQ5LDcgKzU0OSw3IEBACiAgICAgICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSAmJiAhUHlMb25nX0NoZWNrKHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKERXT1JELCAxKTsKLSAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7CisgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCl7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICB9CkBAIC01NjMsNiArNTYzLDI0IEBACiAgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmZCwgc2l6ZW9mKERXT1JEKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRUdfUVdPUkQ6CisgICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgIVB5TG9uZ19DaGVjayh2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhEV09SRDY0LCAxKTsKKyAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IHNpemVvZihEV09SRDY0KTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICAgICAgRFdPUkQ2NCB6ZXJvID0gMDsKKyAgICAgICAgICAgICAgICBtZW1jcHkoKnJldERhdGFCdWYsICZ6ZXJvLCBzaXplb2YoRFdPUkQ2NCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgRFdPUkQ2NCBkID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmZCwgc2l6ZW9mKERXT1JENjQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgogICAgICAgICAgICAgewpAQCAtNjE5LDcgKzYzNyw3IEBACiAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gc2l6ZSArIDI7CiAgICAgICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplKTsKLSAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgIH0KQEAgLTY2NSw3ICs2ODMsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKGNoYXIsIHZpZXcubGVuKTsKLSAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTY5MCw3ICs3MDgsMTMgQEAKICAgICAgICAgICAgIGlmIChyZXREYXRhU2l6ZSA9PSAwKQogICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKDApOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCooaW50ICopcmV0RGF0YUJ1Zik7CisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKihEV09SRCAqKXJldERhdGFCdWYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUkVHX1FXT1JEOgorICAgICAgICAgICAgaWYgKHJldERhdGFTaXplID09IDApCisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKDApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKERXT1JENjQgKilyZXREYXRhQnVmKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgpAQCAtMTU5OSw3ICsxNjIzLDcgQEAKICAgICAgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSwgb25lIG9mOgogICAgICAgICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLgogICAgICAgICBSRUdfRFdPUkQgLS0gQSAzMi1iaXQgbnVtYmVyLgotICAgICAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuCisgICAgICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfRFdPUkQKICAgICAgICAgUkVHX0RXT1JEX0JJR19FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGJpZy1lbmRpYW4gZm9ybWF0LgogICAgICAgICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsCkBAIC0xNjA5LDYgKzE2MzMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnkgdHdvIG51bGwgY2hhcmFjdGVycy4gIE5vdGUgdGhhdCBQeXRob24gaGFuZGxlcwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB0ZXJtaW5hdGlvbiBhdXRvbWF0aWNhbGx5LgogICAgICAgICBSRUdfTk9ORSAtLSBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCisgICAgICAgIFJFR19RV09SRCAtLSBBIDY0LWJpdCBudW1iZXIuCisgICAgICAgIFJFR19RV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgNjQtYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfUVdPUkQuCiAgICAgICAgIFJFR19SRVNPVVJDRV9MSVNUIC0tIEEgZGV2aWNlLWRyaXZlciByZXNvdXJjZSBsaXN0LgogICAgICAgICBSRUdfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgogICAgIHZhbHVlOiBvYmplY3QKQEAgLTE2MzEsNyArMTY1Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2lucmVnX1NldFZhbHVlRXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqdmFsdWVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc2VydmVkLCBEV09SRCB0eXBlLCBQeU9iamVjdCAqdmFsdWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg4Yzg0MjZiNmMwMGVjNyBpbnB1dD1mMWIxNmNiY2MzZWQ0MTAxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg4Yzg0MjZiNmMwMGVjNyBpbnB1dD05MDBhOWUzOTkwYmZiMTk2XSovCiB7CiAgICAgQllURSAqZGF0YTsKICAgICBEV09SRCBsZW47CkBAIC0xOTE4LDYgKzE5NDQsOCBAQAogICAgIEFERF9JTlQoUkVHX0RXT1JEKTsKICAgICBBRERfSU5UKFJFR19EV09SRF9MSVRUTEVfRU5ESUFOKTsKICAgICBBRERfSU5UKFJFR19EV09SRF9CSUdfRU5ESUFOKTsKKyAgICBBRERfSU5UKFJFR19RV09SRCk7CisgICAgQUREX0lOVChSRUdfUVdPUkRfTElUVExFX0VORElBTik7CiAgICAgQUREX0lOVChSRUdfTElOSyk7CiAgICAgQUREX0lOVChSRUdfTVVMVElfU1opOwogICAgIEFERF9JTlQoUkVHX1JFU09VUkNFX0xJU1QpOwpkaWZmIC0tZ2l0IGEvUEMvd2luc291bmQuYyBiL1BDL3dpbnNvdW5kLmMKaW5kZXggNmI3OWQyMy4uN2ZlZWJjYiAxMDA2NDQKLS0tIGEvUEMvd2luc291bmQuYworKysgYi9QQy93aW5zb3VuZC5jCkBAIC01Miw3ICs1Miw3IEBACiAiU05EX05PV0FJVCAtIFJldHVybiBpbW1lZGlhdGVseSBpZiB0aGUgc291bmQgZHJpdmVyIGlzIGJ1c3lcbiIgLy8gV2l0aG91dCBhbnkgZXJyb3JzCiAiXG4iCiAiQmVlcChmcmVxdWVuY3ksIGR1cmF0aW9uKSAtIE1ha2UgYSBiZWVwIHRocm91Z2ggdGhlIFBDIHNwZWFrZXIuXG4iCi0iTWVzc2FnZUJlZXAoeCkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CisiTWVzc2FnZUJlZXAodHlwZSkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CiAKIC8qW2NsaW5pYyBpbnB1dF0KIG1vZHVsZSB3aW5zb3VuZApAQCAtNjQsMzIgKzY0LDU4IEBACiAvKltjbGluaWMgaW5wdXRdCiB3aW5zb3VuZC5QbGF5U291bmQKIAotICAgIHNvdW5kOiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgc291bmQ6IG9iamVjdAogICAgICAgICBUaGUgc291bmQgdG8gcGxheTsgYSBmaWxlbmFtZSwgZGF0YSwgb3IgTm9uZS4KICAgICBmbGFnczogaW50CiAgICAgICAgIEZsYWcgdmFsdWVzLCBvcmVkIHRvZ2V0aGVyLiAgU2VlIG1vZHVsZSBkb2N1bWVudGF0aW9uLgotICAgIC8KIAogQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBQbGF5U291bmQgQVBJLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfVU5JQ09ERSAqc291bmQsIGludCBmbGFncykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzI0YjNhMmI0MzY4Mzc4IGlucHV0PTM0MTFiMWI3YzFmMzZkOTNdKi8KK3dpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VuZCwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ5YTBmZDE2YTM3MmViZWIgaW5wdXQ9YzYzZTFmMmQ4NDhkYTJmMl0qLwogewogICAgIGludCBvazsKKyAgICB3Y2hhcl90ICp3c291bmQ7CisgICAgUHlfYnVmZmVyIHZpZXcgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMgJiYgZmxhZ3MgJiBTTkRfTUVNT1JZKSB7Ci0gICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KLSAgICAgICAgICAgIHByZXZlbnQgU05EX0xPT1AgZnJvbSBtZW1vcnkuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvdW5kID09IFB5X05vbmUpIHsKKyAgICAgICAgd3NvdW5kID0gTlVMTDsKKyAgICB9IGVsc2UgaWYgKGZsYWdzICYgU05EX01FTU9SWSkgeworICAgICAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMpIHsKKyAgICAgICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KKyAgICAgICAgICAgICAgICBwcmV2ZW50IFNORF9MT09QIGZyb20gbWVtb3J5LiAqLworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc291bmQsICZ2aWV3LCBQeUJVRl9TSU1QTEUpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgd3NvdW5kID0gKHdjaGFyX3QgKil2aWV3LmJ1ZjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzb3VuZCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIidzb3VuZCcgbXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc291bmQpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHdzb3VuZCA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHNvdW5kLCBOVUxMKTsKKyAgICAgICAgaWYgKHdzb3VuZCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KIAorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG9rID0gUGxheVNvdW5kVyhzb3VuZCwgTlVMTCwgZmxhZ3MpOworICAgIG9rID0gUGxheVNvdW5kVyh3c291bmQsIE5VTEwsIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmICh2aWV3Lm9iaikgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICB9IGVsc2UgaWYgKHNvdW5kICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlNZW1fRnJlZSh3c291bmQpOworICAgIH0KICAgICBpZiAoIW9rKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJGYWlsZWQgdG8gcGxheSBzb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNSwxNCArMTMxLDEzIEBACiAgICAgICAgIE11c3QgYmUgaW4gdGhlIHJhbmdlIDM3IHRocm91Z2ggMzIsNzY3LgogICAgIGR1cmF0aW9uOiBpbnQKICAgICAgICAgSG93IGxvbmcgdGhlIHNvdW5kIHNob3VsZCBwbGF5LCBpbiBtaWxsaXNlY29uZHMuCi0gICAgLwogCiBBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogd2luc291bmRfQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzIzODJlNTJlZTliMmZiIGlucHV0PTYyOGE5OWQyZGRmNzM3OThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzIzODJlNTJlZTliMmZiIGlucHV0PTQwZTM2MGNmYTAwYTVjZjBdKi8KIHsKICAgICBCT09MIG9rOwogCkBAIC0xMzYsOCArMTYxLDcgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHdpbnNvdW5kLk1lc3NhZ2VCZWVwCiAKLSAgICB4OiBpbnQoY19kZWZhdWx0PSJNQl9PSyIpID0gTUJfT0sKLSAgICAvCisgICAgdHlwZTogaW50KGNfZGVmYXVsdD0iTUJfT0siKSA9IE1CX09LCiAKIENhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS4KIApAQCAtMTQ1LDEwICsxNjksMjAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWFkODllNGQ4ZDMwYTk1NyBpbnB1dD1hNzc2YzhhODVjOTg1M2Y2XSovCit3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB0eXBlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEyMDg3NTQ1NTEyMTEyMWYgaW5wdXQ9ZGIxODVmNzQxYWUyMTQwMV0qLwogewotICAgIE1lc3NhZ2VCZWVwKHgpOworICAgIEJPT0wgb2s7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgb2sgPSBNZXNzYWdlQmVlcCh0eXBlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFvaykgeworICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19SdW50aW1lRXJyb3IsIDApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApkaWZmIC0tZ2l0IGEvUENidWlsZC9fbHptYS52Y3hwcm9qIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCmluZGV4IDFmMDY5NmRhLi43ZWMyNjkyIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19sem1hLnZjeHByb2oKKysrIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCkBAIC02MSwxMyArNjEsMTEgQEAKICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilzcmMvbGlibHptYS9hcGk7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICdXaW4zMiciPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcyBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJbWFnZUhhc1NhZmVFeGNlcHRpb25IYW5kbGVycz5mYWxzZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKE91dERpcikvbGlibHptYSQoUHlEZWJ1Z0V4dCkubGliPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtODEsOCArNzksMTIgQEAKICAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgogICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibGlibHptYS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxMjcyODI1MC0xNmVDLTRkYzYtOTRkNy1lMjFkZDg4OTQ3Zjh9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CiAgIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ogYi9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNTFjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qCkBAIC0wLDAgKzEsODMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X3Rlc3Rjb25zb2xlPC9Sb290TmFtZXNwYWNlPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXF90ZXN0Y29uc29sZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzI1MTAxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdG11bHRpcGhhc2UuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQgYi9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MmMzODIuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9idWlsZF9wZ28uYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1AZWNobyBvZmYNCi1lY2hvLkRlcHJlY2F0aW9uV2FybmluZzoNCi1lY2hvLiAgICBUaGlzIHNjcmlwdCBpcyBkZXByZWNhdGVkLCB1c2UgYGJ1aWxkLmJhdCAtLXBnb2AgaW5zdGVhZC4NCi1lY2hvLg0KLQ0KLWNhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtLXBnbyAlKg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQgYi9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CmluZGV4IDliMmEwODQuLjkxYTJhNmQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKKysrIGIvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdApAQCAtNTUsMTEgKzU1LDExIEBACiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnppcDItMS4wLjYNCiBpZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgbmFzbS0yLjExLjA2DQogaWYgTk9UICIlSW5jbHVkZVNTTCUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgIG9wZW5zc2wtMS4wLjJoDQotc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbGl0ZS0zLjguMTEuMA0KLWlmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0Y2wtY29yZS04LjYuNC4yDQotaWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRrLTguNi40LjINCitzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlLTMuMTQuMS4wDQoraWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRjbC1jb3JlLTguNi42LjANCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGstOC42LjYuMA0KIGlmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0aXgtOC40LjMuNg0KLXNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ei01LjAuNQ0KK3NldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ei01LjIuMg0KIA0KIGZvciAlJWUgaW4gKCVsaWJyYXJpZXMlKSBkbyAoDQogICAgIGlmIGV4aXN0ICUlZSAoDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9saWJsem1hLnZjeHByb2ogYi9QQ2J1aWxkL2xpYmx6bWEudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTFmOWJkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9saWJsem1hLnZjeHByb2oKQEAgLTAsMCArMSwyMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsxMjcyODI1MC0xNkVDLTREQzYtOTRENy1FMjFERDg4OTQ3Rjh9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5saWJsem1hPC9Sb290TmFtZXNwYWNlPgorICAgIDxTdXBwb3J0UEdPPnRydWU8L1N1cHBvcnRQR08+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKworICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7SEFWRV9DT05GSUdfSDtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKXdpbmRvd3M7JChsem1hRGlyKXNyYy9saWJsem1hL2NvbW1vbjskKGx6bWFEaXIpc3JjL2NvbW1vbjskKGx6bWFEaXIpc3JjL2xpYmx6bWEvYXBpOyQobHptYURpcilzcmMvbGlibHptYS9jaGVjazskKGx6bWFEaXIpc3JjL2xpYmx6bWEvZGVsdGE7JChsem1hRGlyKXNyYy9saWJsem1hL2x6OyQobHptYURpcilzcmMvbGlibHptYS9sem1hOyQobHptYURpcilzcmMvbGlibHptYS9yYW5nZWNvZGVyOyQobHptYURpcilzcmMvbGlibHptYS9zaW1wbGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9jcHVjb3Jlcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX3BoeXNtZW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjaGVjay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzMyX2Zhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmMzMl90YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X2Zhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmM2NF90YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXHNoYTI1Ni5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxhbG9uZV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGFsb25lX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYXV0b19kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2J1ZmZlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2J1ZmZlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19oZWFkZXJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19oZWFkZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja191dGlsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGNvbW1vbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X2J1ZmZlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfZGVjb2Rlcl9tZW11c2FnZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9lbmNvZGVyX21lbXVzYWdlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfcHJlc2V0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9idWZmZXJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2NvbW1vbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZmxhZ3NfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZmxhZ3NfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxoYXJkd2FyZV9jcHV0aHJlYWRzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGhhcmR3YXJlX3BoeXNtZW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXhfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleF9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2hhc2guYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cb3V0cXVldWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2J1ZmZlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9idWZmZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZW5jb2Rlcl9tdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZmxhZ3NfY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHZsaV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHZsaV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHZsaV9zaXplLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGZhc3Rwb3NfdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXJfb3B0aW11bV9mYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXJfb3B0aW11bV9ub3JtYWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9wcmVzZXRzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9lbmNvZGVyX21mLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFccmFuZ2Vjb2RlclxwcmljZV90YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxhcm0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcYXJtdGh1bWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcaWE2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxwb3dlcnBjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzcGFyYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVx4ODYuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblxteXRocmVhZC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cc3lzZGVmcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2NvbmZpZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2NwdWNvcmVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfaW50ZWdlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX3BoeXNtZW0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGJhc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxiY2ouaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxibG9jay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGNoZWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcY29udGFpbmVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcZGVsdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxmaWx0ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxoYXJkd2FyZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGluZGV4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcaW5kZXhfaGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGx6bWExMi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXHN0cmVhbV9mbGFncy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXHZlcnNpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVx2bGkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjaGVjay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzMyX3RhYmxlX2JlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfdGFibGVfbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmM2NF90YWJsZV9iZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X3RhYmxlX2xlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjX21hY3Jvcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxhbG9uZV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2J1ZmZlcl9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxjb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9wcmVzZXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleF9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXG1lbWNtcGxlbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxvdXRxdWV1ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZmxhZ3NfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9wcml2YXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxmYXN0cG9zLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hMl9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hMl9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9wcml2YXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9lbmNvZGVyX2hhc2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9lbmNvZGVyX2hhc2hfdGFibGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHByaWNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFccmFuZ2Vjb2RlclxyYW5nZV9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHJhbmdlX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHJhbmdlX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2NvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9wcml2YXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpd2luZG93c1xjb25maWcuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL29wZW5zc2wucHJvcHMgYi9QQ2J1aWxkL29wZW5zc2wucHJvcHMKaW5kZXggZTM1YzBkOS4uMGRlNGU0MyAxMDA2NDQKLS0tIGEvUENidWlsZC9vcGVuc3NsLnByb3BzCisrKyBiL1BDYnVpbGQvb3BlbnNzbC5wcm9wcwpAQCAtMTksNiArMTksNyBAQAogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX1RIUkVBRFMiIC8+CiAgICAgPCEtLSA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9TWVNOQU1FX1dJTjMyIiAvPiAtLT4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9JQTMyX1NTRTIiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX0dGMm0iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTFfQVNNIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJTSEEyNTZfQVNNIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJTSEE1MTJfQVNNIiAvPgpAQCAtMzgsNyArMzksNiBAQAogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX0RZTkFNSUNfRU5HSU5FIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPgotICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9HRjJtIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9QQVJUX1dPUkRTIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9NT05UIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJSTUQxNjBfQVNNIiAvPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnByb2ogYi9QQ2J1aWxkL3BjYnVpbGQucHJvagppbmRleCBjMzIwNDM0Li5lMjZiYzcwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3BjYnVpbGQucHJvagorKysgYi9QQ2J1aWxkL3BjYnVpbGQucHJvagpAQCAtNjEsNyArNjEsNyBAQAogICAgIDxFeHRlbnNpb25Nb2R1bGVzIEluY2x1ZGU9IkAoRXh0ZXJuYWxNb2R1bGVzLT4nJShJZGVudGl0eSknKSIgQ29uZGl0aW9uPSIkKEluY2x1ZGVFeHRlcm5hbHMpIiAvPgogICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJAKEV4dGVuc2lvbk1vZHVsZXMtPiclKElkZW50aXR5KS52Y3hwcm9qJykiIENvbmRpdGlvbj0iJChJbmNsdWRlRXh0ZW5zaW9ucykiIC8+CiAgICAgPCEtLSBUZXN0IG1vZHVsZXMgLS0+Ci0gICAgPFRlc3RNb2R1bGVzIEluY2x1ZGU9Il9jdHlwZXNfdGVzdDtfdGVzdGJ1ZmZlcjtfdGVzdGNhcGk7X3Rlc3RlbWJlZDtfdGVzdGltcG9ydG11bHRpcGxlO190ZXN0bXVsdGlwaGFzZSIgLz4KKyAgICA8VGVzdE1vZHVsZXMgSW5jbHVkZT0iX2N0eXBlc190ZXN0O190ZXN0YnVmZmVyO190ZXN0Y2FwaTtfdGVzdGVtYmVkO190ZXN0aW1wb3J0bXVsdGlwbGU7X3Rlc3RtdWx0aXBoYXNlO190ZXN0Y29uc29sZSIgLz4KICAgICA8VGVzdE1vZHVsZXMgSW5jbHVkZT0ieHhsaW1pdGVkIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnUmVsZWFzZSciIC8+CiAgICAgPFByb2plY3RzIEluY2x1ZGU9IkAoVGVzdE1vZHVsZXMtPiclKElkZW50aXR5KS52Y3hwcm9qJykiIENvbmRpdGlvbj0iJChJbmNsdWRlVGVzdHMpIj4KICAgICAgIDwhLS0gRGlzYWJsZSBwYXJhbGxlbCBidWlsZCBmb3IgdGVzdCBtb2R1bGVzIC0tPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnNsbiBiL1BDYnVpbGQvcGNidWlsZC5zbG4KaW5kZXggNDJhNGQyYi4uN2FkZDUxZSAxMDA2NDQKLS0tIGEvUENidWlsZC9wY2J1aWxkLnNsbgorKysgYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCkBAIC05Miw2ICs5Miw4IEBACiBFbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXNoZWxsZXh0IiwgInB5c2hlbGxleHQudmN4cHJvaiIsICJ7MEY2RUU0QTQtQzc1Ri00NTc4LUI0QjMtMkQ2NEY0QjlCNzgyfSINCiBFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGNvbnNvbGUiLCAiX3Rlc3Rjb25zb2xlLnZjeHByb2oiLCAie0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0iDQorRW5kUHJvamVjdA0KIEdsb2JhbA0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KIAkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KQEAgLTcwOCw2ICs3MTAsMjIgQEAKIAkJezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJRW5kR2xvYmFsU2VjdGlvbg0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KIAkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdAppbmRleCAxYmU3M2U2Li4yZjQxYWU4IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdAorKysgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdApAQCAtMywxMCArMywxMCBAQAogICBpZiAiJTEiIEVRVSAiRGVidWciICgNCiAgICAgc2hpZnQNCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzVfZC5kbGwgZXhpdCAxDQorICAgIGlmIG5vdCBleGlzdCBweXRob24zNl9kLmRsbCBleGl0IDENCiAgICkgRUxTRSAoDQogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob24uZXhlDQotICAgIGlmIG5vdCBleGlzdCBweXRob24zNS5kbGwgZXhpdCAxDQorICAgIGlmIG5vdCBleGlzdCBweXRob24zNi5kbGwgZXhpdCAxDQogICApDQogKQ0KICVIT1NUX1BZVEhPTiUgIiV+ZHAwcHJlcGFyZV9zc2wucHkiICUxDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXByb2plY3QucHJvcHMgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwppbmRleCBkMWFjOTk4Li41NDNiNGNhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcworKysgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwpAQCAtNyw3ICs3LDYgQEAKICAgICA8T3V0RGlyIENvbmRpdGlvbj0iIUhhc1RyYWlsaW5nU2xhc2goJChPdXREaXIpKSI+JChPdXREaXIpXDwvT3V0RGlyPgogICAgIDxQeV9JbnREaXIgQ29uZGl0aW9uPSInJChQeV9JbnREaXIpJyA9PSAnJyI+JChNU0J1aWxkVGhpc0ZpbGVEaXJlY3Rvcnkpb2JqXDwvUHlfSW50RGlyPgogICAgIDxJbnREaXI+JChQeV9JbnREaXIpXCQoQXJjaE5hbWUpXyQoQ29uZmlndXJhdGlvbilcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj4kKFB5X0ludERpcilcJChBcmNoTmFtZSlfUEdPXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoVGFyZ2V0TmFtZSknID09ICcnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZT4kKFRhcmdldE5hbWUpJChQeURlYnVnRXh0KTwvVGFyZ2V0TmFtZT4KICAgICA8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnByb3BzIGIvUENidWlsZC9weXRob24ucHJvcHMKaW5kZXggZWU3MDIxMC4uMmI5YjkwMyAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24ucHJvcHMKKysrIGIvUENidWlsZC9weXRob24ucHJvcHMKQEAgLTI1LDcgKzI1LDYgQEAKICAgICAtLT4KICAgICA8QXJjaE5hbWUgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICcnIGFuZCAkKFBsYXRmb3JtKSA9PSAneDY0JyI+YW1kNjQ8L0FyY2hOYW1lPgogICAgIDxBcmNoTmFtZSBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJyciPndpbjMyPC9BcmNoTmFtZT4KLSAgICA8QXJjaE5hbWUgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIG9yICQoQ29uZmlndXJhdGlvbikgPT0gJ1BHVXBkYXRlJyI+JChBcmNoTmFtZSktcGdvPC9BcmNoTmFtZT4KICAgICAKICAgICA8IS0tIFJvb3QgZGlyZWN0b3J5IG9mIHRoZSByZXBvc2l0b3J5IC0tPgogICAgIDxQeVNvdXJjZVBhdGggQ29uZGl0aW9uPSInJChQeVNvdXJjZVBhdGgpJyA9PSAnJyI+JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGdWxsUGF0aCgkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcLi5cKSk8L1B5U291cmNlUGF0aD4KQEAgLTQzLDkgKzQyLDkgQEAKICAgICAKICAgICA8IS0tIERpcmVjdG9yaWVzIG9mIGV4dGVybmFsIHByb2plY3RzLiB0Y2x0ayBpcyBoYW5kbGVkIGluIHRjbHRrLnByb3BzIC0tPgogICAgIDxFeHRlcm5hbHNEaXI+JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGdWxsUGF0aChgJChQeVNvdXJjZVBhdGgpZXh0ZXJuYWxzXGApKTwvRXh0ZXJuYWxzRGlyPgotICAgIDxzcWxpdGUzRGlyPiQoRXh0ZXJuYWxzRGlyKXNxbGl0ZS0zLjguMTEuMFw8L3NxbGl0ZTNEaXI+CisgICAgPHNxbGl0ZTNEaXI+JChFeHRlcm5hbHNEaXIpc3FsaXRlLTMuMTQuMS4wXDwvc3FsaXRlM0Rpcj4KICAgICA8YnoyRGlyPiQoRXh0ZXJuYWxzRGlyKWJ6aXAyLTEuMC42XDwvYnoyRGlyPgotICAgIDxsem1hRGlyPiQoRXh0ZXJuYWxzRGlyKXh6LTUuMC41XDwvbHptYURpcj4KKyAgICA8bHptYURpcj4kKEV4dGVybmFsc0Rpcil4ei01LjIuMlw8L2x6bWFEaXI+CiAgICAgPG9wZW5zc2xEaXI+JChFeHRlcm5hbHNEaXIpb3BlbnNzbC0xLjAuMmhcPC9vcGVuc3NsRGlyPgogICAgIDxvcGVuc3NsSW5jbHVkZURpcj4kKG9wZW5zc2xEaXIpaW5jbHVkZTMyPC9vcGVuc3NsSW5jbHVkZURpcj4KICAgICA8b3BlbnNzbEluY2x1ZGVEaXIgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICdhbWQ2NCciPiQob3BlbnNzbERpcilpbmNsdWRlNjQ8L29wZW5zc2xJbmNsdWRlRGlyPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagppbmRleCBlNWU5NmFkLi43NjljNjQzIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagpAQCAtMSw0ICsxLDQgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtNU19ETExfSUQ9IiQoU3lzV2luVmVyKSI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7c2hsd2FwaS5saWI7d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgpAQCAtMTI0LDYgKzEyNCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9kaWN0b2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9wY29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc2RlZnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Ntb2R1bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwZ2VuLmgiIC8+CkBAIC0yMDksOSArMjEwLDEzIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY29uZHZhci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGltcG9ydGRsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cdGhyZWFkX250LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cd29yZGNvZGVfaGVscGVycy5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMmJfaW1wbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMnNfaW1wbC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3N2LmMiIC8+CkBAIC0yMjMsNiArMjI4LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX21hdGguYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3BpY2tsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zaGEzXHNoYTNtb2R1bGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NyZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3RhdC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3RydWN0LmMiIC8+CkBAIC0yNjQsNiArMjcwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x3aW5jb25zb2xlaW8uYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIiAvPgpAQCAtMzQ5LDYgKzM1Niw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY2V2YWwuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb2RlY3MuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb21waWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHRyYWNlX3N0dWJzLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHluYW1pY19hbm5vdGF0aW9ucy5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR5bmxvYWRfd2luLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZXJyb3JzLmMiIC8+CkBAIC00MTYsNCArNDI0LDQgQEAKICAgPFRhcmdldCBOYW1lPSJfV2FybkFib3V0VG9vbHNldCIgQmVmb3JlVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBDb25kaXRpb249IiQoUGxhdGZvcm1Ub29sc2V0KSAhPSAndjE0MCciPgogICAgIDxXYXJuaW5nIFRleHQ9IlRvb2xzZXQgJChQbGF0Zm9ybVRvb2xzZXQpIGlzIG5vdCB1c2VkIGZvciBvZmZpY2lhbCBidWlsZHMuIFlvdXIgYnVpbGQgbWF5IGhhdmUgZXJyb3JzIG9yIGluY29tcGF0aWJpbGl0aWVzLiIgLz4KICAgPC9UYXJnZXQ+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODM3YjczNi4uNWViNDI3NSAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xLDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJJbmNsdWRlIj4KQEAgLTE3Nyw2ICsxNzcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc2RlZnMuaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Ntb2R1bGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTQyMCw2ICs0MjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRocmVhZF9udC5oIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cd29yZGNvZGVfaGVscGVycy5oIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY29uZHZhci5oIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00NDMsNiArNDQ5LDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2JsYWtlMlxibGFrZTJtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2JsYWtlMlxibGFrZTJiX2ltcGwuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2JsYWtlMlxibGFrZTJzX2ltcGwuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDc2LDYgKzQ5MSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NoYTNcc2hhM21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3JlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC01ODcsNiArNjA1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHRleHRpby5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHdpbmNvbnNvbGVpby5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTgyNyw2ICs4NDgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbXBpbGUuYyI+CiAgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR0cmFjZV9zdHVicy5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHluYW1pY19hbm5vdGF0aW9ucy5jIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05ODAsNCArMTAwNCw0IEBACiAgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qIGIvUENidWlsZC9weXRob253LnZjeHByb2oKaW5kZXggY2FlZDFlOC4uZTQwZjY2YyAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob253LnZjeHByb2oKKysrIGIvUENidWlsZC9weXRob253LnZjeHByb2oKQEAgLTYyLDcgKzYyLDcgQEAKICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiIC8+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob253X2V4ZS5yYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xXaW5NYWluLmMiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3JlYWRtZS50eHQgYi9QQ2J1aWxkL3JlYWRtZS50eHQKaW5kZXggZDQ1ZWIyNy4uMzRjMmVmZSAxMDA2NDQKLS0tIGEvUENidWlsZC9yZWFkbWUudHh0CisrKyBiL1BDYnVpbGQvcmVhZG1lLnR4dApAQCAtNDgsNyArNDgsNyBAQAogICAgIFVzZWQgdG8gYnVpbGQgUHl0aG9uIHdpdGggZXh0cmEgZGVidWdnaW5nIGNhcGFiaWxpdGllcywgZXF1aXZhbGVudA0KICAgICB0byB1c2luZyAuL2NvbmZpZ3VyZSAtLXdpdGgtcHlkZWJ1ZyBvbiBVTklYLiAgQWxsIGJpbmFyaWVzIGJ1aWx0DQogICAgIHVzaW5nIHRoaXMgY29uZmlndXJhdGlvbiBoYXZlICJfZCIgYWRkZWQgdG8gdGhlaXIgbmFtZToNCi0gICAgcHl0aG9uMzVfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uICBCb3RoIHRoZQ0KKyAgICBweXRob24zNl9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQogICAgIGJ1aWxkIGFuZCBydCAocnVuIHRlc3QpIGJhdGNoIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFjY2VwdCBhIC1kDQogICAgIG9wdGlvbiBmb3IgZGVidWcgYnVpbGRzLiAgSWYgeW91IGFyZSBidWlsZGluZyBQeXRob24gdG8gaGVscCB3aXRoDQogICAgIGRldmVsb3BtZW50IG9mIENQeXRob24sIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHVzZSB0aGlzIGNvbmZpZ3VyYXRpb24uDQpAQCAtMjA0LDExICsyMDQsMTEgQEAKICAgICBmdW5jdGlvbmFsaXR5IHRvIF9zc2wgb3IgX2hhc2hsaWIuIFRoZXkgd2lsbCBub3QgY2xlYW4gdXAgdGhlaXIgb3V0cHV0DQogICAgIHdpdGggdGhlIG5vcm1hbCBDbGVhbiB0YXJnZXQ7IENsZWFuQWxsIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuDQogX3NxbGl0ZTMNCi0gICAgV3JhcHMgU1FMaXRlIDMuOC4xMS4wLCB3aGljaCBpcyBpdHNlbGYgYnVpbHQgYnkgc3FsaXRlMy52Y3hwcm9qDQorICAgIFdyYXBzIFNRTGl0ZSAzLjE0LjEuMCwgd2hpY2ggaXMgaXRzZWxmIGJ1aWx0IGJ5IHNxbGl0ZTMudmN4cHJvag0KICAgICBIb21lcGFnZToNCiAgICAgICAgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8NCiBfdGtpbnRlcg0KLSAgICBXcmFwcyB2ZXJzaW9uIDguNi40IG9mIHRoZSBUayB3aW5kb3dpbmcgc3lzdGVtLg0KKyAgICBXcmFwcyB2ZXJzaW9uIDguNi42IG9mIHRoZSBUayB3aW5kb3dpbmcgc3lzdGVtLg0KICAgICBIb21lcGFnZToNCiAgICAgICAgIGh0dHA6Ly93d3cudGNsLnRrLw0KIA0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcnQuYmF0IGIvUENidWlsZC9ydC5iYXQKaW5kZXggMmQ5M2I4MC4uN2Q0ZDA3MSAxMDA2NDQKLS0tIGEvUENidWlsZC9ydC5iYXQKKysrIGIvUENidWlsZC9ydC5iYXQKQEAgLTQyLDcgKzQyLDcgQEAKIGlmIE5PVCAiJTEiPT0iIiAoc2V0IHJlZ3J0ZXN0YXJncz0lcmVncnRlc3RhcmdzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogDQogc2V0IGV4ZT0lcHJlZml4JXB5dGhvbiVzdWZmaXglLmV4ZQ0KLXNldCBjbWQ9IiVleGUlIiAlZGFzaE8lIC1XZCAtRSAtYmIgIiVwY2J1aWxkJS4uXGxpYlx0ZXN0XHJlZ3J0ZXN0LnB5IiAlcmVncnRlc3RhcmdzJQ0KK3NldCBjbWQ9IiVleGUlIiAlZGFzaE8lIC1XZCAtRSAtYmIgLW0gdGVzdCAlcmVncnRlc3RhcmdzJQ0KIGlmIGRlZmluZWQgcW1vZGUgZ290byBRbW9kZQ0KIA0KIGVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKaW5kZXggYzg0MWM1YS4uNGY1YjE5NiAxMDA2NDQKLS0tIGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKKysrIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKQEAgLTY2LDcgKzY2LDcgQEAKICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5TUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+U1FMSVRFX0VOQUJMRV9GVFM0O1NRTElURV9FTkFCTEVfRlRTNTtTUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8V2FybmluZ0xldmVsPkxldmVsMTwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC04Niw0ICs4Niw0IEBACiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC90Y2x0ay5wcm9wcyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKaW5kZXggMTFkYmZmYi4uNTdiYjk4YSAxMDA2NDQKLS0tIGEvUENidWlsZC90Y2x0ay5wcm9wcworKysgYi9QQ2J1aWxkL3RjbHRrLnByb3BzCkBAIC00LDggKzQsOCBAQAogICA8UHJvcGVydHlHcm91cD4KICAgICA8VGNsTWFqb3JWZXJzaW9uPjg8L1RjbE1ham9yVmVyc2lvbj4KICAgICA8VGNsTWlub3JWZXJzaW9uPjY8L1RjbE1pbm9yVmVyc2lvbj4KLSAgICA8VGNsUGF0Y2hMZXZlbD40PC9UY2xQYXRjaExldmVsPgotICAgIDxUY2xSZXZpc2lvbj4yPC9UY2xSZXZpc2lvbj4KKyAgICA8VGNsUGF0Y2hMZXZlbD42PC9UY2xQYXRjaExldmVsPgorICAgIDxUY2xSZXZpc2lvbj4wPC9UY2xSZXZpc2lvbj4KICAgICA8VGtNYWpvclZlcnNpb24+JChUY2xNYWpvclZlcnNpb24pPC9Ua01ham9yVmVyc2lvbj4KICAgICA8VGtNaW5vclZlcnNpb24+JChUY2xNaW5vclZlcnNpb24pPC9Ua01pbm9yVmVyc2lvbj4KICAgICA8VGtQYXRjaExldmVsPiQoVGNsUGF0Y2hMZXZlbCk8L1RrUGF0Y2hMZXZlbD4KQEAgLTQyLDQgKzQyLDQgQEAKICAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFBsYXRmb3JtVG9vbHNldCkgPT0gJ3YxMTAnIj4kKEJ1aWxkRGlyVG9wKV9WQzExPC9CdWlsZERpclRvcD4KICAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFBsYXRmb3JtVG9vbHNldCkgPT0gJ3YxMDAnIj4kKEJ1aWxkRGlyVG9wKV9WQzEwPC9CdWlsZERpclRvcD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ogYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCmluZGV4IDAxNDRmYTkuLjlkYmRjNzcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKKysrIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagpAQCAtNjIsNyArNjIsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7UHlfTElNSVRFRF9BUEk9MHgwMzA1MDAwMDwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7UHlfTElNSVRFRF9BUEk9MHgwMzA2MDAwMDwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgpkaWZmIC0tZ2l0IGEvUGFyc2VyL1B5dGhvbi5hc2RsIGIvUGFyc2VyL1B5dGhvbi5hc2RsCmluZGV4IGNkMDgzMmQuLmY0NzBhZDEgMTAwNjQ0Ci0tLSBhL1BhcnNlci9QeXRob24uYXNkbAorKysgYi9QYXJzZXIvUHl0aG9uLmFzZGwKQEAgLTEsNCArMSw4IEBACi0tLSBBU0RMJ3Mgc2l4IGJ1aWx0aW4gdHlwZXMgYXJlIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBieXRlcywgb2JqZWN0LCBzaW5nbGV0b24KKy0tIEFTREwncyA3IGJ1aWx0aW4gdHlwZXMgYXJlOgorLS0gaWRlbnRpZmllciwgaW50LCBzdHJpbmcsIGJ5dGVzLCBvYmplY3QsIHNpbmdsZXRvbiwgY29uc3RhbnQKKy0tCistLSBzaW5nbGV0b246IE5vbmUsIFRydWUgb3IgRmFsc2UKKy0tIGNvbnN0YW50IGNhbiBiZSBOb25lLCB3aGVyZWFzIE5vbmUgbWVhbnMgIm5vIHZhbHVlIiBmb3Igb2JqZWN0LgogCiBtb2R1bGUgUHl0aG9uCiB7CkBAIC0yNCw2ICsyOCw4IEBACiAgICAgICAgICAgfCBEZWxldGUoZXhwciogdGFyZ2V0cykKICAgICAgICAgICB8IEFzc2lnbihleHByKiB0YXJnZXRzLCBleHByIHZhbHVlKQogICAgICAgICAgIHwgQXVnQXNzaWduKGV4cHIgdGFyZ2V0LCBvcGVyYXRvciBvcCwgZXhwciB2YWx1ZSkKKyAgICAgICAgICAtLSAnc2ltcGxlJyBpbmRpY2F0ZXMgdGhhdCB3ZSBhbm5vdGF0ZSBzaW1wbGUgbmFtZSB3aXRob3V0IHBhcmVucworICAgICAgICAgIHwgQW5uQXNzaWduKGV4cHIgdGFyZ2V0LCBleHByIGFubm90YXRpb24sIGV4cHI/IHZhbHVlLCBpbnQgc2ltcGxlKQogCiAgICAgICAgICAgLS0gdXNlICdvcmVsc2UnIGJlY2F1c2UgZWxzZSBpcyBhIGtleXdvcmQgaW4gdGFyZ2V0IGxhbmd1YWdlcwogICAgICAgICAgIHwgRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKQEAgLTcxLDkgKzc3LDEyIEBACiAgICAgICAgICB8IENhbGwoZXhwciBmdW5jLCBleHByKiBhcmdzLCBrZXl3b3JkKiBrZXl3b3JkcykKICAgICAgICAgIHwgTnVtKG9iamVjdCBuKSAtLSBhIG51bWJlciBhcyBhIFB5T2JqZWN0LgogICAgICAgICAgfCBTdHIoc3RyaW5nIHMpIC0tIG5lZWQgdG8gc3BlY2lmeSByYXcsIHVuaWNvZGUsIGV0Yz8KKyAgICAgICAgIHwgRm9ybWF0dGVkVmFsdWUoZXhwciB2YWx1ZSwgaW50PyBjb252ZXJzaW9uLCBleHByPyBmb3JtYXRfc3BlYykKKyAgICAgICAgIHwgSm9pbmVkU3RyKGV4cHIqIHZhbHVlcykKICAgICAgICAgIHwgQnl0ZXMoYnl0ZXMgcykKICAgICAgICAgIHwgTmFtZUNvbnN0YW50KHNpbmdsZXRvbiB2YWx1ZSkKICAgICAgICAgIHwgRWxsaXBzaXMKKyAgICAgICAgIHwgQ29uc3RhbnQoY29uc3RhbnQgdmFsdWUpCiAKICAgICAgICAgIC0tIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjYW4gYXBwZWFyIGluIGFzc2lnbm1lbnQgY29udGV4dAogICAgICAgICAgfCBBdHRyaWJ1dGUoZXhwciB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHQgY3R4KQpAQCAtMTAxLDcgKzExMCw3IEBACiAKICAgICBjbXBvcCA9IEVxIHwgTm90RXEgfCBMdCB8IEx0RSB8IEd0IHwgR3RFIHwgSXMgfCBJc05vdCB8IEluIHwgTm90SW4KIAotICAgIGNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzKQorICAgIGNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzLCBpbnQgaXNfYXN5bmMpCiAKICAgICBleGNlcHRoYW5kbGVyID0gRXhjZXB0SGFuZGxlcihleHByPyB0eXBlLCBpZGVudGlmaWVyPyBuYW1lLCBzdG10KiBib2R5KQogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsLnB5IGIvUGFyc2VyL2FzZGwucHkKaW5kZXggMTIxY2RhYi4uNjJmNWMxOSAxMDA2NDQKLS0tIGEvUGFyc2VyL2FzZGwucHkKKysrIGIvUGFyc2VyL2FzZGwucHkKQEAgLTMzLDcgKzMzLDggQEAKICMgU2VlIHRoZSBFQk5GIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWNhbCBjb25uZWN0aW9uCiAjIGJldHdlZW4gdGhlIHZhcmlvdXMgbm9kZSB0eXBlcy4KIAotYnVpbHRpbl90eXBlcyA9IHsnaWRlbnRpZmllcicsICdzdHJpbmcnLCAnYnl0ZXMnLCAnaW50JywgJ29iamVjdCcsICdzaW5nbGV0b24nfQorYnVpbHRpbl90eXBlcyA9IHsnaWRlbnRpZmllcicsICdzdHJpbmcnLCAnYnl0ZXMnLCAnaW50JywgJ29iamVjdCcsICdzaW5nbGV0b24nLAorICAgICAgICAgICAgICAgICAnY29uc3RhbnQnfQogCiBjbGFzcyBBU1Q6CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGxfYy5weSBiL1BhcnNlci9hc2RsX2MucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBmMzhjMjUzLi4xN2M4NTE3Ci0tLSBhL1BhcnNlci9hc2RsX2MucHkKKysrIGIvUGFyc2VyL2FzZGxfYy5weQpAQCAtODM0LDYgKzgzNCw3IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopbzsKIH0KICNkZWZpbmUgYXN0Mm9ial9zaW5nbGV0b24gYXN0Mm9ial9vYmplY3QKKyNkZWZpbmUgYXN0Mm9ial9jb25zdGFudCBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdApAQCAtODcxLDYgKzg3MiwxOSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG9iajJhc3RfY29uc3RhbnQoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgIGlmIChvYmopIHsKKyAgICAgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYXJlbmEsIG9iaikgPCAwKSB7CisgICAgICAgICAgICAqb3V0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYob2JqKTsKKyAgICB9CisgICAgKm91dCA9IG9iajsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X2lkZW50aWZpZXIoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSAmJiBvYmogIT0gUHlfTm9uZSkgewpAQCAtOTA2LDcgKzkyMCw3IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGkgPSAoaW50KVB5TG9uZ19Bc0xvbmcob2JqKTsKKyAgICBpID0gX1B5TG9uZ19Bc0ludChvYmopOwogICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAxOwogICAgICpvdXQgPSBpOwpkaWZmIC0tZ2l0IGEvUGFyc2VyL2dyYW1tYXIuYyBiL1BhcnNlci9ncmFtbWFyLmMKaW5kZXggYjU5ODI5NC4uNzVmZDViOSAxMDA2NDQKLS0tIGEvUGFyc2VyL2dyYW1tYXIuYworKysgYi9QYXJzZXIvZ3JhbW1hci5jCkBAIC0yOCw2ICsyOCwyMyBAQAogICAgIHJldHVybiBnOwogfQogCit2b2lkCitmcmVlZ3JhbW1hcihncmFtbWFyICpnKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBnLT5nX25kZmFzOyBpKyspIHsKKyAgICAgICAgZnJlZShnLT5nX2RmYVtpXS5kX25hbWUpOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGctPmdfZGZhW2ldLmRfbnN0YXRlczsgaisrKQorICAgICAgICAgICAgUHlPYmplY3RfRlJFRShnLT5nX2RmYVtpXS5kX3N0YXRlW2pdLnNfYXJjKTsKKyAgICAgICAgUHlPYmplY3RfRlJFRShnLT5nX2RmYVtpXS5kX3N0YXRlKTsKKyAgICB9CisgICAgUHlPYmplY3RfRlJFRShnLT5nX2RmYSk7CisgICAgZm9yIChpID0gMDsgaSA8IGctPmdfbGwubGxfbmxhYmVsczsgaSsrKQorICAgICAgICBmcmVlKGctPmdfbGwubGxfbGFiZWxbaV0ubGJfc3RyKTsKKyAgICBQeU9iamVjdF9GUkVFKGctPmdfbGwubGxfbGFiZWwpOworICAgIFB5T2JqZWN0X0ZSRUUoZyk7Cit9CisKIGRmYSAqCiBhZGRkZmEoZ3JhbW1hciAqZywgaW50IHR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpCiB7CkBAIC02Myw3ICs4MCw3IEBACiAgICAgcy0+c191cHBlciA9IDA7CiAgICAgcy0+c19hY2NlbCA9IE5VTEw7CiAgICAgcy0+c19hY2NlcHQgPSAwOwotICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKHMgLSBkLT5kX3N0YXRlLCBQeV9pbnRwdHJfdCwgaW50KTsKKyAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChzIC0gZC0+ZF9zdGF0ZSwgaW50cHRyX3QsIGludCk7CiB9CiAKIHZvaWQKQEAgLTEwNSw3ICsxMjIsNyBAQAogICAgIGlmIChQeV9EZWJ1Z0ZsYWcpCiAgICAgICAgIHByaW50ZigiTGFiZWwgQCAlOHAsICVkOiAlc1xuIiwgbGwsIGxsLT5sbF9ubGFiZWxzLAogICAgICAgICAgICAgICAgUHlHcmFtbWFyX0xhYmVsUmVwcihsYikpOwotICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKGxiIC0gbGwtPmxsX2xhYmVsLCBQeV9pbnRwdHJfdCwgaW50KTsKKyAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChsYiAtIGxsLT5sbF9sYWJlbCwgaW50cHRyX3QsIGludCk7CiB9CiAKIC8qIFNhbWUsIGJ1dCByYXRoZXIgZGllcyB0aGFuIGFkZHMgKi8KQEAgLTEyMiw3ICsxMzksMTMgQEAKICAgICB9CiAgICAgZnByaW50ZihzdGRlcnIsICJMYWJlbCAlZC8nJXMnIG5vdCBmb3VuZFxuIiwgdHlwZSwgc3RyKTsKICAgICBQeV9GYXRhbEVycm9yKCJncmFtbWFyLmM6ZmluZGxhYmVsKCkiKTsKKworICAgIC8qIFB5X0ZhdGFsRXJyb3IoKSBpcyBkZWNsYXJlZCB3aXRoIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpLgorICAgICAgIEdDQyBlbWl0cyBhIHdhcm5pbmcgd2l0aG91dCAicmV0dXJuIDA7IiAoY29tcGlsZXIgYnVnISksIGJ1dCBDbGFuZyBpcworICAgICAgIHNtYXJ0ZXIgYW5kIGVtaXRzIGEgd2FybmluZyBvbiB0aGUgcmV0dXJuLi4uICovCisjaWZuZGVmIF9fY2xhbmdfXwogICAgIHJldHVybiAwOyAvKiBNYWtlIGdjYyAtV2FsbCBoYXBweSAqLworI2VuZGlmCiB9CiAKIC8qIEZvcndhcmQgKi8KZGlmZiAtLWdpdCBhL1BhcnNlci9teXJlYWRsaW5lLmMgYi9QYXJzZXIvbXlyZWFkbGluZS5jCmluZGV4IDI4YzdiNmQuLmE4ZjIzYjcgMTAwNjQ0Ci0tLSBhL1BhcnNlci9teXJlYWRsaW5lLmMKKysrIGIvUGFyc2VyL215cmVhZGxpbmUuYwpAQCAtNDEsMTAgKzQxLDcgQEAKICAgICAgICAgICAgICh2b2lkKShQeU9TX0lucHV0SG9vaykoKTsKICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICBjbGVhcmVycihmcCk7Ci0gICAgICAgIGlmIChfUHlWZXJpZnlfZmQoZmlsZW5vKGZwKSkpCi0gICAgICAgICAgICBwID0gZmdldHMoYnVmLCBsZW4sIGZwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcCA9IE5VTEw7CisgICAgICAgIHAgPSBmZ2V0cyhidWYsIGxlbiwgZnApOwogICAgICAgICBpZiAocCAhPSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIDA7IC8qIE5vIGVycm9yICovCiAgICAgICAgIGVyciA9IGVycm5vOwpAQCAtMTAxLDYgKzk4LDEwMCBAQAogICAgIC8qIE5PVFJFQUNIRUQgKi8KIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKy8qIFJlYWRsaW5lIGltcGxlbWVudGF0aW9uIHVzaW5nIFJlYWRDb25zb2xlVyAqLworCitleHRlcm4gY2hhciBfZ2V0X2NvbnNvbGVfdHlwZShIQU5ETEUgaGFuZGxlKTsKKworY2hhciAqCitfUHlPU19XaW5kb3dzQ29uc29sZVJlYWRsaW5lKEhBTkRMRSBoU3RkSW4pCit7CisgICAgc3RhdGljIHdjaGFyX3Qgd2J1Zl9sb2NhbFsxMDI0ICogMTZdOworICAgIGNvbnN0IERXT1JEIGNodW5rX3NpemUgPSAxMDI0OworCisgICAgRFdPUkQgbl9yZWFkLCB0b3RhbF9yZWFkLCB3YnVmbGVuLCB1OGxlbjsKKyAgICB3Y2hhcl90ICp3YnVmOworICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CisgICAgaW50IGVyciA9IDA7CisKKyAgICBuX3JlYWQgPSAwOworICAgIHRvdGFsX3JlYWQgPSAwOworICAgIHdidWYgPSB3YnVmX2xvY2FsOworICAgIHdidWZsZW4gPSBzaXplb2Yod2J1Zl9sb2NhbCkgLyBzaXplb2Yod2J1Zl9sb2NhbFswXSkgLSAxOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmICghUmVhZENvbnNvbGVXKGhTdGRJbiwgJndidWZbdG90YWxfcmVhZF0sIHdidWZsZW4gLSB0b3RhbF9yZWFkLCAmbl9yZWFkLCBOVUxMKSkgeworICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5fcmVhZCA9PSAwKSB7CisgICAgICAgICAgICBpbnQgczsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgaWYgKGVyciAhPSBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRCkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBlcnIgPSAwOworICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgICAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdEV4KGhJbnRlcnJ1cHRFdmVudCwgMTAwLCBGQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgPT0gV0FJVF9PQkpFQ1RfMCkgeworICAgICAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICAgICAgICAgIFB5RXZhbF9SZXN0b3JlVGhyZWFkKF9QeU9TX1JlYWRsaW5lVFN0YXRlKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHMgPSBQeUVycl9DaGVja1NpZ25hbHMoKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICAgICAgICAgIFB5RXZhbF9TYXZlVGhyZWFkKCk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAocyA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdG90YWxfcmVhZCArPSBuX3JlYWQ7CisgICAgICAgIGlmICh0b3RhbF9yZWFkID09IDAgfHwgd2J1Zlt0b3RhbF9yZWFkIC0gMV0gPT0gTCdcbicpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHdidWZsZW4gKz0gY2h1bmtfc2l6ZTsKKyAgICAgICAgaWYgKHdidWYgPT0gd2J1Zl9sb2NhbCkgeworICAgICAgICAgICAgd2J1Zlt0b3RhbF9yZWFkXSA9ICdcMCc7CisgICAgICAgICAgICB3YnVmID0gKHdjaGFyX3QqKVB5TWVtX1Jhd01hbGxvYyh3YnVmbGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICh3YnVmKQorICAgICAgICAgICAgICAgIHdjc2NweV9zKHdidWYsIHdidWZsZW4sIHdidWZfbG9jYWwpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdidWYgPSAod2NoYXJfdCopUHlNZW1fUmF3UmVhbGxvYyh3YnVmLCB3YnVmbGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICB9CisKKyAgICBpZiAod2J1ZlswXSA9PSAnXHgxYScpIHsKKyAgICAgICAgYnVmID0gUHlNZW1fUmF3TWFsbG9jKDEpOworICAgICAgICBpZiAoYnVmKQorICAgICAgICAgICAgYnVmWzBdID0gJ1wwJzsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHU4bGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCB0b3RhbF9yZWFkLCBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICBidWYgPSBQeU1lbV9SYXdNYWxsb2ModThsZW4gKyAxKTsKKyAgICB1OGxlbiA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgdG90YWxfcmVhZCwgYnVmLCB1OGxlbiwgTlVMTCwgTlVMTCk7CisgICAgYnVmW3U4bGVuXSA9ICdcMCc7CisKK2V4aXQ6CisgICAgaWYgKHdidWYgIT0gd2J1Zl9sb2NhbCkKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3YnVmKTsKKworICAgIGlmIChlcnIpIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBQeUV2YWxfUmVzdG9yZVRocmVhZChfUHlPU19SZWFkbGluZVRTdGF0ZSk7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBQeUV2YWxfU2F2ZVRocmVhZCgpOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIGJ1ZjsKK30KKworI2VuZGlmCisKIAogLyogUmVhZGxpbmUgaW1wbGVtZW50YXRpb24gdXNpbmcgZmdldHMoKSAqLwogCkBAIC0xMTAsNiArMjAxLDI1IEBACiAgICAgc2l6ZV90IG47CiAgICAgY2hhciAqcCwgKnByOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICghUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyAmJiBzeXNfc3RkaW4gPT0gc3RkaW4pIHsKKyAgICAgICAgSEFORExFIGhTdGRJbjsKKworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIGhTdGRJbiA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZW5vKHN5c19zdGRpbikpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisgICAgICAgIGlmIChfZ2V0X2NvbnNvbGVfdHlwZShoU3RkSW4pID09ICdyJykgeworICAgICAgICAgICAgZmZsdXNoKHN5c19zdGRvdXQpOworICAgICAgICAgICAgaWYgKHByb21wdCkKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgcHJvbXB0KTsKKyAgICAgICAgICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgICAgICAgY2xlYXJlcnIoc3lzX3N0ZGluKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlPU19XaW5kb3dzQ29uc29sZVJlYWRsaW5lKGhTdGRJbik7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIG4gPSAxMDA7CiAgICAgcCA9IChjaGFyICopUHlNZW1fUmF3TWFsbG9jKG4pOwogICAgIGlmIChwID09IE5VTEwpCmRpZmYgLS1naXQgYS9QYXJzZXIvbm9kZS5jIGIvUGFyc2VyL25vZGUuYwppbmRleCAwMDEwMzI0Li4yNDBkMjkwIDEwMDY0NAotLS0gYS9QYXJzZXIvbm9kZS5jCisrKyBiL1BhcnNlci9ub2RlLmMKQEAgLTkxLDcgKzkxLDcgQEAKICAgICBpZiAoY3VycmVudF9jYXBhY2l0eSA8IDAgfHwgcmVxdWlyZWRfY2FwYWNpdHkgPCAwKQogICAgICAgICByZXR1cm4gRV9PVkVSRkxPVzsKICAgICBpZiAoY3VycmVudF9jYXBhY2l0eSA8IHJlcXVpcmVkX2NhcGFjaXR5KSB7Ci0gICAgICAgIGlmICgoc2l6ZV90KXJlcXVpcmVkX2NhcGFjaXR5ID4gUFlfU0laRV9NQVggLyBzaXplb2Yobm9kZSkpIHsKKyAgICAgICAgaWYgKChzaXplX3QpcmVxdWlyZWRfY2FwYWNpdHkgPiBTSVpFX01BWCAvIHNpemVvZihub2RlKSkgewogICAgICAgICAgICAgcmV0dXJuIEVfTk9NRU07CiAgICAgICAgIH0KICAgICAgICAgbiA9IG4xLT5uX2NoaWxkOwpkaWZmIC0tZ2l0IGEvUGFyc2VyL3BhcnNlci5jIGIvUGFyc2VyL3BhcnNlci5jCmluZGV4IDU2ZWM1MTQuLjQxMDcyYzQgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wYXJzZXIuYworKysgYi9QYXJzZXIvcGFyc2VyLmMKQEAgLTE0MCwyMSArMTQwLDIwIEBACiAgICAgaW50IG4gPSBnLT5nX2xsLmxsX25sYWJlbHM7CiAKICAgICBpZiAodHlwZSA9PSBOQU1FKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdHI7CiAgICAgICAgIGxhYmVsICpsID0gZy0+Z19sbC5sbF9sYWJlbDsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGZvciAoaSA9IG47IGkgPiAwOyBpLS0sIGwrKykgewogICAgICAgICAgICAgaWYgKGwtPmxiX3R5cGUgIT0gTkFNRSB8fCBsLT5sYl9zdHIgPT0gTlVMTCB8fAotICAgICAgICAgICAgICAgIGwtPmxiX3N0clswXSAhPSBzWzBdIHx8Ci0gICAgICAgICAgICAgICAgc3RyY21wKGwtPmxiX3N0ciwgcykgIT0gMCkKKyAgICAgICAgICAgICAgICBsLT5sYl9zdHJbMF0gIT0gc3RyWzBdIHx8CisgICAgICAgICAgICAgICAgc3RyY21wKGwtPmxiX3N0ciwgc3RyKSAhPSAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogI2lmZGVmIFBZX1BBUlNFUl9SRVFVSVJFU19GVVRVUkVfS0VZV09SRAogI2lmIDAKICAgICAgICAgICAgIC8qIExlYXZpbmcgdGhpcyBpbiBhcyBhbiBleGFtcGxlICovCiAgICAgICAgICAgICBpZiAoIShwcy0+cF9mbGFncyAmIENPX0ZVVFVSRV9XSVRIX1NUQVRFTUVOVCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc1swXSA9PSAndycgJiYgc3RyY21wKHMsICJ3aXRoIikgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAoc3RyWzBdID09ICd3JyAmJiBzdHJjbXAoc3RyLCAid2l0aCIpID09IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBub3QgYSBrZXl3b3JkIHlldCAqLwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMF0gPT0gJ2EnICYmIHN0cmNtcChzLCAiYXMiKSA9PSAwKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0clswXSA9PSAnYScgJiYgc3RyY21wKHN0ciwgImFzIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIG5vdCBhIGtleXdvcmQgeWV0ICovCiAgICAgICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXRvay5jIGIvUGFyc2VyL3BhcnNldG9rLmMKaW5kZXggNjI5ZGVlNS4uMWY0NjdkNiAxMDA2NDQKLS0tIGEvUGFyc2VyL3BhcnNldG9rLmMKKysrIGIvUGFyc2VyL3BhcnNldG9rLmMKQEAgLTE2MSwxMCArMTYxLDEwIEBACiAKICNpZmRlZiBQWV9QQVJTRVJfUkVRVUlSRVNfRlVUVVJFX0tFWVdPUkQKICNpZiAwCi1zdGF0aWMgY2hhciB3aXRoX21zZ1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHdpdGhfbXNnW10gPQogIiVzOiVkOiBXYXJuaW5nOiAnd2l0aCcgd2lsbCBiZWNvbWUgYSByZXNlcnZlZCBrZXl3b3JkIGluIFB5dGhvbiAyLjZcbiI7CiAKLXN0YXRpYyBjaGFyIGFzX21zZ1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGFzX21zZ1tdID0KICIlczolZDogV2FybmluZzogJ2FzJyB3aWxsIGJlY29tZSBhIHJlc2VydmVkIGtleXdvcmQgaW4gUHl0aG9uIDIuNlxuIjsKIAogc3RhdGljIHZvaWQKQEAgLTI1NSw3ICsyNTUsNyBAQAogI2VuZGlmCiAgICAgICAgIGlmIChhID49IHRvay0+bGluZV9zdGFydCkKICAgICAgICAgICAgIGNvbF9vZmZzZXQgPSBQeV9TQUZFX0RPV05DQVNUKGEgLSB0b2stPmxpbmVfc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9pbnRwdHJfdCwgaW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHB0cl90LCBpbnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2xfb2Zmc2V0ID0gLTE7CiAKZGlmZiAtLWdpdCBhL1BhcnNlci9wZ2VuLmMgYi9QYXJzZXIvcGdlbi5jCmluZGV4IGYzMDMxYWUuLjY0NTFhMWQgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VuLmMKKysrIGIvUGFyc2VyL3BnZW4uYwpAQCAtMTE3LDYgKzExNywxNiBAQAogICAgIHJldHVybiBncjsKIH0KIAorc3RhdGljIHZvaWQKK2ZyZWVuZmFncmFtbWFyKG5mYWdyYW1tYXIgKmdyKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ3ItPmdyX25uZmFzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3RfRlJFRShnci0+Z3JfbmZhW2ldLT5uZl9zdGF0ZSk7CisgICAgfQorICAgIFB5T2JqZWN0X0ZSRUUoZ3ItPmdyX25mYSk7CisgICAgUHlPYmplY3RfRlJFRShncik7Cit9CisKIHN0YXRpYyBuZmEgKgogYWRkbmZhKG5mYWdyYW1tYXIgKmdyLCBjaGFyICpuYW1lKQogewpAQCAtMTM0LDcgKzE0NCw3IEBACiAKICNpZmRlZiBQeV9ERUJVRwogCi1zdGF0aWMgY2hhciBSRVFORk1UW10gPSAibWV0YWNvbXBpbGU6IGxlc3MgdGhhbiAlZCBjaGlsZHJlblxuIjsKK3N0YXRpYyBjb25zdCBjaGFyIFJFUU5GTVRbXSA9ICJtZXRhY29tcGlsZTogbGVzcyB0aGFuICVkIGNoaWxkcmVuXG4iOwogCiAjZGVmaW5lIFJFUU4oaSwgY291bnQpIGRvIHsgXAogICAgIGlmIChpIDwgY291bnQpIHsgXApAQCAtMzc5LDcgKzM4OSw3IEBACiAKIC8qIEZvcndhcmQgKi8KIHN0YXRpYyB2b2lkIHByaW50c3NkZmEoaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSwgaW50IG5iaXRzLAotICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjaGFyICptc2cpOworICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjb25zdCBjaGFyICptc2cpOwogc3RhdGljIHZvaWQgc2ltcGxpZnkoaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSk7CiBzdGF0aWMgdm9pZCBjb252ZXJ0KGRmYSAqZCwgaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSk7CiAKQEAgLTQ4OCwxMyArNDk4LDE3IEBACiAKICAgICBjb252ZXJ0KGQsIHh4X25zdGF0ZXMsIHh4X3N0YXRlKTsKIAotICAgIC8qIFhYWCBjbGVhbnVwICovCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB4eF9uc3RhdGVzOyBpKyspIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB4eF9zdGF0ZVtpXS5zc19uYXJjczsgaisrKQorICAgICAgICAgICAgZGVsYml0c2V0KHh4X3N0YXRlW2ldLnNzX2FyY1tqXS5zYV9iaXRzZXQpOworICAgICAgICBQeU9iamVjdF9GUkVFKHh4X3N0YXRlW2ldLnNzX2FyYyk7CisgICAgfQogICAgIFB5T2JqZWN0X0ZSRUUoeHhfc3RhdGUpOwogfQogCiBzdGF0aWMgdm9pZAogcHJpbnRzc2RmYShpbnQgeHhfbnN0YXRlcywgc3Nfc3RhdGUgKnh4X3N0YXRlLCBpbnQgbmJpdHMsCi0gICAgICAgICAgIGxhYmVsbGlzdCAqbGwsIGNoYXIgKm1zZykKKyAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY29uc3QgY2hhciAqbXNnKQogewogICAgIGludCBpLCBpYml0LCBpYXJjOwogICAgIHNzX3N0YXRlICp5eTsKQEAgLTY2OSw3ICs2ODMsNyBAQAogICAgIGcgPSBtYWtldGFibGVzKGdyKTsKICAgICB0cmFuc2xhdGVsYWJlbHMoZyk7CiAgICAgYWRkZmlyc3RzZXRzKGcpOwotICAgIFB5T2JqZWN0X0ZSRUUoZ3IpOworICAgIGZyZWVuZmFncmFtbWFyKGdyKTsKICAgICByZXR1cm4gZzsKIH0KIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3BnZW5tYWluLmMgYi9QYXJzZXIvcGdlbm1haW4uYwppbmRleCAwZjA1NWQ2Li5lMzg2MjQ4IDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbm1haW4uYworKysgYi9QYXJzZXIvcGdlbm1haW4uYwpAQCAtMjcsNyArMjcsNyBAQAogaW50IFB5X0lnbm9yZUVudmlyb25tZW50RmxhZzsKIAogLyogRm9yd2FyZCAqLwotZ3JhbW1hciAqZ2V0Z3JhbW1hcihjaGFyICpmaWxlbmFtZSk7CitncmFtbWFyICpnZXRncmFtbWFyKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIAogdm9pZCBQeV9FeGl0KGludCkgX1B5X05PX1JFVFVSTjsKIApAQCAtMzcsNiArMzcsMTUgQEAKICAgICBleGl0KHN0cyk7CiB9CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorLyogTmVlZGVkIGJ5IG9ibWFsbG9jLmMgKi8KK2ludCBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpCit7IHJldHVybiAxOyB9CisjZW5kaWYKKwordm9pZCBfUHlNZW1fRHVtcFRyYWNlYmFjayhpbnQgZmQsIGNvbnN0IHZvaWQgKnB0cikKK3t9CisKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CkBAIC03MSwxMiArODAsMTMgQEAKICAgICAgICAgcHJpbnRmKCJXcml0aW5nICVzIC4uLlxuIiwgZ3JhbWluaXRfaCk7CiAgICAgcHJpbnRub250ZXJtaW5hbHMoZywgZnApOwogICAgIGZjbG9zZShmcCk7CisgICAgZnJlZWdyYW1tYXIoZyk7CiAgICAgUHlfRXhpdCgwKTsKICAgICByZXR1cm4gMDsgLyogTWFrZSBnY2MgLVdhbGwgaGFwcHkgKi8KIH0KIAogZ3JhbW1hciAqCi1nZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKQorZ2V0Z3JhbW1hcihjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKICAgICBGSUxFICpmcDsKICAgICBub2RlICpuOwpkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5jIGIvUGFyc2VyL3Rva2VuaXplci5jCmluZGV4IDYxMmNiMjMuLjgzMTcyOTMgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuYworKysgYi9QYXJzZXIvdG9rZW5pemVyLmMKQEAgLTIwMiw4ICsyMDIsOCBAQAogfQogCiAKLXN0YXRpYyBjaGFyICoKLWdldF9ub3JtYWxfbmFtZShjaGFyICpzKSAgICAgICAgLyogZm9yIHV0Zi04IGFuZCBsYXRpbi0xICovCitzdGF0aWMgY29uc3QgY2hhciAqCitnZXRfbm9ybWFsX25hbWUoY29uc3QgY2hhciAqcykgIC8qIGZvciB1dGYtOCBhbmQgbGF0aW4tMSAqLwogewogICAgIGNoYXIgYnVmWzEzXTsKICAgICBpbnQgaTsKQEAgLTI2NCw3ICsyNjQsNyBAQAogCiAgICAgICAgICAgICBpZiAoYmVnaW4gPCB0KSB7CiAgICAgICAgICAgICAgICAgY2hhciogciA9IG5ld19zdHJpbmcoYmVnaW4sIHQgLSBiZWdpbiwgdG9rKTsKLSAgICAgICAgICAgICAgICBjaGFyKiBxOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHE7CiAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICBxID0gZ2V0X25vcm1hbF9uYW1lKHIpOwpAQCAtMTMzNSw2ICsxMzM1LDI4IEBACiB9CiAjZW5kaWYKIAorc3RhdGljIGludAordG9rX2RlY2ltYWxfdGFpbChzdHJ1Y3QgdG9rX3N0YXRlICp0b2spCit7CisgICAgaW50IGM7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICBpZiAoYyAhPSAnXycpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGM7Cit9CisKIC8qIEdldCBuZXh0IHRva2VuLCBhZnRlciBzcGFjZSBzdHJpcHBpbmcgZXRjLiAqLwogCiBzdGF0aWMgaW50CkBAIC0xMzU1LDE3ICsxMzc3LDIwIEBACiAgICAgICAgIHRvay0+YXRib2wgPSAwOwogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnICcpCisgICAgICAgICAgICBpZiAoYyA9PSAnICcpIHsKICAgICAgICAgICAgICAgICBjb2wrKywgYWx0Y29sKys7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdcdCcpIHsKICAgICAgICAgICAgICAgICBjb2wgPSAoY29sL3Rvay0+dGFic2l6ZSArIDEpICogdG9rLT50YWJzaXplOwogICAgICAgICAgICAgICAgIGFsdGNvbCA9IChhbHRjb2wvdG9rLT5hbHR0YWJzaXplICsgMSkKICAgICAgICAgICAgICAgICAgICAgKiB0b2stPmFsdHRhYnNpemU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcMDE0JykgLyogQ29udHJvbC1MIChmb3JtZmVlZCkgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wwMTQnKSAgey8qIENvbnRyb2wtTCAoZm9ybWZlZWQpICovCiAgICAgICAgICAgICAgICAgY29sID0gYWx0Y29sID0gMDsgLyogRm9yIEVtYWNzIHVzZXJzICovCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CiAgICAgICAgIGlmIChjID09ICcjJyB8fCBjID09ICdcbicpIHsKQEAgLTEzNzQsMTAgKzEzOTksMTIgQEAKICAgICAgICAgICAgICAgIG5vdCBwYXNzZWQgdG8gdGhlIHBhcnNlciBhcyBORVdMSU5FIHRva2VucywKICAgICAgICAgICAgICAgIGV4Y2VwdCAqdG90YWxseSogZW1wdHkgbGluZXMgaW4gaW50ZXJhY3RpdmUKICAgICAgICAgICAgICAgIG1vZGUsIHdoaWNoIHNpZ25hbCB0aGUgZW5kIG9mIGEgY29tbWFuZCBncm91cC4gKi8KLSAgICAgICAgICAgIGlmIChjb2wgPT0gMCAmJiBjID09ICdcbicgJiYgdG9rLT5wcm9tcHQgIT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChjb2wgPT0gMCAmJiBjID09ICdcbicgJiYgdG9rLT5wcm9tcHQgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGJsYW5rbGluZSA9IDA7IC8qIExldCBpdCB0aHJvdWdoICovCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBibGFua2xpbmUgPSAxOyAvKiBJZ25vcmUgY29tcGxldGVseSAqLworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogV2UgY2FuJ3QganVtcCBiYWNrIHJpZ2h0IGhlcmUgc2luY2Ugd2Ugc3RpbGwKICAgICAgICAgICAgICAgIG1heSBuZWVkIHRvIHNraXAgdG8gdGhlIGVuZCBvZiBhIGNvbW1lbnQgKi8KICAgICAgICAgfQpAQCAtMTM4NSw4ICsxNDEyLDkgQEAKICAgICAgICAgICAgIGlmIChjb2wgPT0gdG9rLT5pbmRzdGFja1t0b2stPmluZGVudF0pIHsKICAgICAgICAgICAgICAgICAvKiBObyBjaGFuZ2UgKi8KICAgICAgICAgICAgICAgICBpZiAoYWx0Y29sICE9IHRvay0+YWx0aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjb2wgPiB0b2stPmluZHN0YWNrW3Rvay0+aW5kZW50XSkgewpAQCAtMTM5Nyw4ICsxNDI1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChhbHRjb2wgPD0gdG9rLT5hbHRpbmRzdGFja1t0b2stPmluZGVudF0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0b2stPnBlbmRpbisrOwogICAgICAgICAgICAgICAgIHRvay0+aW5kc3RhY2tbKyt0b2stPmluZGVudF0gPSBjb2w7CkBAIC0xNDE3LDggKzE0NDYsOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGFsdGNvbCAhPSB0b2stPmFsdGluZHN0YWNrW3Rvay0+aW5kZW50XSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNDY0LDkgKzE0OTQsMTEgQEAKICAgICB0b2stPnN0YXJ0ID0gdG9rLT5jdXIgLSAxOwogCiAgICAgLyogU2tpcCBjb21tZW50ICovCi0gICAgaWYgKGMgPT0gJyMnKQotICAgICAgICB3aGlsZSAoYyAhPSBFT0YgJiYgYyAhPSAnXG4nKQorICAgIGlmIChjID09ICcjJykgeworICAgICAgICB3aGlsZSAoYyAhPSBFT0YgJiYgYyAhPSAnXG4nKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICAvKiBDaGVjayBmb3IgRU9GIGFuZCBlcnJvcnMgbm93ICovCiAgICAgaWYgKGMgPT0gRU9GKSB7CkBAIC0xNDc3LDMxICsxNTA5LDQxIEBACiAgICAgbm9uYXNjaWkgPSAwOwogICAgIGlmIChpc19wb3RlbnRpYWxfaWRlbnRpZmllcl9zdGFydChjKSkgewogICAgICAgICAvKiBQcm9jZXNzIGIiIiwgciIiLCB1IiIsIGJyIiIgYW5kIHJiIiIgKi8KLSAgICAgICAgaW50IHNhd19iID0gMCwgc2F3X3IgPSAwLCBzYXdfdSA9IDA7CisgICAgICAgIGludCBzYXdfYiA9IDAsIHNhd19yID0gMCwgc2F3X3UgPSAwLCBzYXdfZiA9IDA7CiAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICBpZiAoIShzYXdfYiB8fCBzYXdfdSkgJiYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSkKKyAgICAgICAgICAgIGlmICghKHNhd19iIHx8IHNhd191IHx8IHNhd19mKSAmJiAoYyA9PSAnYicgfHwgYyA9PSAnQicpKQogICAgICAgICAgICAgICAgIHNhd19iID0gMTsKICAgICAgICAgICAgIC8qIFNpbmNlIHRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGxpdGVyYWwgd2UgZG9uJ3QKICAgICAgICAgICAgICAgIHdhbnQgdG8gc3VwcG9ydCBpdCBpbiBhcmJpdHJhcnkgb3JkZXIgbGlrZSBieXRlIGxpdGVyYWxzLiAqLwotICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfYiB8fCBzYXdfdSB8fCBzYXdfcikgJiYgKGMgPT0gJ3UnIHx8IGMgPT0gJ1UnKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2IgfHwgc2F3X3UgfHwgc2F3X3IgfHwgc2F3X2YpCisgICAgICAgICAgICAgICAgICAgICAmJiAoYyA9PSAndSd8fCBjID09ICdVJykpIHsKICAgICAgICAgICAgICAgICBzYXdfdSA9IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiB1ciIiIGFuZCBydSIiIGFyZSBub3Qgc3VwcG9ydGVkICovCi0gICAgICAgICAgICBlbHNlIGlmICghKHNhd19yIHx8IHNhd191KSAmJiAoYyA9PSAncicgfHwgYyA9PSAnUicpKQorICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfciB8fCBzYXdfdSkgJiYgKGMgPT0gJ3InIHx8IGMgPT0gJ1InKSkgewogICAgICAgICAgICAgICAgIHNhd19yID0gMTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2YgfHwgc2F3X2IgfHwgc2F3X3UpICYmIChjID09ICdmJyB8fCBjID09ICdGJykpIHsKKyAgICAgICAgICAgICAgICBzYXdfZiA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICciJyB8fCBjID09ICdcJycpCisgICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICAgICAgZ290byBsZXR0ZXJfcXVvdGU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGlzX3BvdGVudGlhbF9pZGVudGlmaWVyX2NoYXIoYykpIHsKLSAgICAgICAgICAgIGlmIChjID49IDEyOCkKKyAgICAgICAgICAgIGlmIChjID49IDEyOCkgewogICAgICAgICAgICAgICAgIG5vbmFzY2lpID0gMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgIGlmIChub25hc2NpaSAmJiAhdmVyaWZ5X2lkZW50aWZpZXIodG9rKSkKKyAgICAgICAgaWYgKG5vbmFzY2lpICYmICF2ZXJpZnlfaWRlbnRpZmllcih0b2spKSB7CiAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgfQogICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyOwogCkBAIC0xNTEwLDEwICsxNTUyLDEyIEBACiAgICAgICAgICAgICAvKiBDdXJyZW50IHRva2VuIGxlbmd0aCBpcyA1LiAqLwogICAgICAgICAgICAgaWYgKHRvay0+YXN5bmNfZGVmKSB7CiAgICAgICAgICAgICAgICAgLyogV2UncmUgaW5zaWRlIGFuICdhc3luYyBkZWYnIGZ1bmN0aW9uLiAqLwotICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhc3luYyIsIDUpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFTWU5DOwotICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImF3YWl0IiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXdhaXQiLCA1KSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBV0FJVDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkgewogICAgICAgICAgICAgICAgIC8qIFRoZSBjdXJyZW50IHRva2VuIGlzICdhc3luYycuCkBAIC0xNTQ2LDggKzE1OTAsOSBAQAogICAgIC8qIE5ld2xpbmUgKi8KICAgICBpZiAoYyA9PSAnXG4nKSB7CiAgICAgICAgIHRvay0+YXRib2wgPSAxOwotICAgICAgICBpZiAoYmxhbmtsaW5lIHx8IHRvay0+bGV2ZWwgPiAwKQorICAgICAgICBpZiAoYmxhbmtsaW5lIHx8IHRvay0+bGV2ZWwgPiAwKSB7CiAgICAgICAgICAgICBnb3RvIG5leHRsaW5lOworICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXIgLSAxOyAvKiBMZWF2ZSAnXG4nIG91dCBvZiB0aGUgc3RyaW5nICovCiAgICAgICAgIHRvay0+Y29udF9saW5lID0gMDsKQEAgLTE1NzAsMTEgKzE2MTUsMTMgQEAKICAgICAgICAgICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVMTElQU0lTOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCAnLicpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwogICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKQEAgLTE1ODcsNjQgKzE2MzQsOTQgQEAKICAgICAgICAgaWYgKGMgPT0gJzAnKSB7CiAgICAgICAgICAgICAvKiBIZXgsIG9jdGFsIG9yIGJpbmFyeSAtLSBtYXliZS4gKi8KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICcuJykKLSAgICAgICAgICAgICAgICBnb3RvIGZyYWN0aW9uOwotICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQotICAgICAgICAgICAgICAgIGdvdG8gaW1hZ2luYXJ5OwogICAgICAgICAgICAgaWYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSB7Ci0KICAgICAgICAgICAgICAgICAvKiBIZXggKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdChjKSkgewotICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwotICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB9IHdoaWxlIChpc3hkaWdpdChjKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzeGRpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICdfJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdvJyB8fCBjID09ICdPJykgewogICAgICAgICAgICAgICAgIC8qIE9jdGFsICovCiAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPj0gJzgnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKCcwJyA8PSBjICYmIGMgPCAnOCcpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID49ICc4JykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoJzAnIDw9IGMgJiYgYyA8ICc4Jyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnYicgfHwgYyA9PSAnQicpIHsKICAgICAgICAgICAgICAgICAvKiBCaW5hcnkgKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnICYmIGMgIT0gJzEnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJzAnIHx8IGMgPT0gJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnICYmIGMgIT0gJzEnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICcwJyB8fCBjID09ICcxJyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IG5vbnplcm8gPSAwOwogICAgICAgICAgICAgICAgIC8qIG1heWJlIG9sZC1zdHlsZSBvY3RhbDsgYyBpcyBmaXJzdCBjaGFyIG9mIGl0ICovCiAgICAgICAgICAgICAgICAgLyogaW4gYW55IGNhc2UsIGFsbG93ICcwJyBhcyBhIGxpdGVyYWwgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoYyA9PSAnMCcpCi0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXNkaWdpdChjKSkgewotICAgICAgICAgICAgICAgICAgICBub256ZXJvID0gMTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjICE9ICcwJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnLicpCisgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9uemVybyA9IDE7CisgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfZGVjaW1hbF90YWlsKHRvayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZnJhY3Rpb247Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhwb25lbnQ7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnaicgfHwgYyA9PSAnSicpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW1hZ2luYXJ5OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChub256ZXJvKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE9sZC1zdHlsZSBvY3RhbDogbm93IGRpc2FsbG93ZWQuICovCiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CiAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CkBAIC0xNjUzLDE3ICsxNzMwLDIyIEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBEZWNpbWFsICovCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgfSB3aGlsZSAoaXNkaWdpdChjKSk7CisgICAgICAgICAgICBjID0gdG9rX2RlY2ltYWxfdGFpbCh0b2spOworICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgfQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIEFjY2VwdCBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqLwogICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIGZyYWN0aW9uOgogICAgICAgICAgICAgICAgICAgICAvKiBGcmFjdGlvbiAqLwotICAgICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGU7CkBAIC0xNjg1LDE0ICsxNzY3LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVU1CRVI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChpc2RpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQorICAgICAgICAgICAgICAgIGlmIChjID09ICdqJyB8fCBjID09ICdKJykgewogICAgICAgICAgICAgICAgICAgICAvKiBJbWFnaW5hcnkgcGFydCAqLwogICAgICAgICBpbWFnaW5hcnk6CiAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwpAQCAtMTcxMiwyMiArMTc5NiwyNyBAQAogICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSkKKyAgICAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICAgICAgcXVvdGVfc2l6ZSA9IDM7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSA9IDE7ICAgICAvKiBlbXB0eSBzdHJpbmcgZm91bmQgKi8KKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoYyAhPSBxdW90ZSkKKyAgICAgICAgaWYgKGMgIT0gcXVvdGUpIHsKICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIEdldCByZXN0IG9mIHN0cmluZyAqLwogICAgICAgICB3aGlsZSAoZW5kX3F1b3RlX3NpemUgIT0gcXVvdGVfc2l6ZSkgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgaWYgKGMgPT0gRU9GKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHF1b3RlX3NpemUgPT0gMykKKyAgICAgICAgICAgICAgICBpZiAocXVvdGVfc2l6ZSA9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfRU9GUzsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX0VPTFM7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRvay0+Y3VyID0gdG9rLT5pbnA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICB9CkBAIC0xNzM2LDEyICsxODI1LDE0IEBACiAgICAgICAgICAgICAgICAgdG9rLT5jdXIgPSB0b2stPmlucDsKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjID09IHF1b3RlKQorICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUpIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSArPSAxOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZW5kX3F1b3RlX3NpemUgPSAwOwotICAgICAgICAgICAgICAgIGlmIChjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOyAgLyogc2tpcCBlc2NhcGVkIGNoYXIgKi8KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIHRva19uZXh0Yyh0b2spOyAgLyogc2tpcCBlc2NhcGVkIGNoYXIgKi8KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTc3MSw3ICsxODYyLDggQEAKICAgICAgICAgICAgIGludCB0b2tlbjMgPSBQeVRva2VuX1RocmVlQ2hhcnMoYywgYzIsIGMzKTsKICAgICAgICAgICAgIGlmICh0b2tlbjMgIT0gT1ApIHsKICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuMzsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYzMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwpkaWZmIC0tZ2l0IGEvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyBiL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKaW5kZXggMDc5Mzk4NC4uMTA2OTk2NiAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworKysgYi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCkBAIC01OCw3ICs1OCw3IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IGZzdGF0ICclcydcbiIsIGlucGF0aCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIHRleHRfc2l6ZSA9IHN0YXR1cy5zdF9zaXplOworICAgIHRleHRfc2l6ZSA9IChzaXplX3Qpc3RhdHVzLnN0X3NpemU7CiAgICAgdGV4dCA9IChjaGFyICopIG1hbGxvYyh0ZXh0X3NpemUgKyAxKTsKICAgICBpZiAodGV4dCA9PSBOVUxMKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IGFsbG9jYXRlICVsZCBieXRlc1xuIiwgKGxvbmcpIHRleHRfc2l6ZSk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMgYi9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKaW5kZXggYWI2YThjNy4uMzk2ODM5OSAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCisrKyBiL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwpAQCAtNDEsNyArNDEsNyBAQAogI2VuZGlmCiAgICAgaW50IGksIGo7CiAKLSAgICBmb3IgKGk9MDsgaTwzOyBpKyspIHsKKyAgICBmb3IgKGk9MDsgaTwxNTsgaSsrKSB7CiAgICAgICAgIHByaW50ZigiLS0tIFBhc3MgJWQgLS0tXG4iLCBpKTsKICAgICAgICAgX3Rlc3RlbWJlZF9QeV9Jbml0aWFsaXplKCk7CiAgICAgICAgIG1haW5zdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9weXRob24uYyBiL1Byb2dyYW1zL3B5dGhvbi5jCmluZGV4IDM3YjEwYjguLmE3YWZiYzcgMTAwNjQ0Ci0tLSBhL1Byb2dyYW1zL3B5dGhvbi5jCisrKyBiL1Byb2dyYW1zL3B5dGhvbi5jCkBAIC0yNCw2ICsyNCw5IEBACiAgICAgaW50IGksIHJlczsKICAgICBjaGFyICpvbGRsb2M7CiAKKyAgICAvKiBGb3JjZSBtYWxsb2MoKSBhbGxvY2F0b3IgdG8gYm9vdHN0cmFwIFB5dGhvbiAqLworICAgICh2b2lkKV9QeU1lbV9TZXR1cEFsbG9jYXRvcnMoIm1hbGxvYyIpOworCiAgICAgYXJndl9jb3B5ID0gKHdjaGFyX3QgKiopUHlNZW1fUmF3TWFsbG9jKHNpemVvZih3Y2hhcl90KikgKiAoYXJnYysxKSk7CiAgICAgYXJndl9jb3B5MiA9ICh3Y2hhcl90ICoqKVB5TWVtX1Jhd01hbGxvYyhzaXplb2Yod2NoYXJfdCopICogKGFyZ2MrMSkpOwogICAgIGlmICghYXJndl9jb3B5IHx8ICFhcmd2X2NvcHkyKSB7CkBAIC02Miw3ICs2NSwxMyBAQAogCiAgICAgc2V0bG9jYWxlKExDX0FMTCwgb2xkbG9jKTsKICAgICBQeU1lbV9SYXdGcmVlKG9sZGxvYyk7CisKICAgICByZXMgPSBQeV9NYWluKGFyZ2MsIGFyZ3ZfY29weSk7CisKKyAgICAvKiBGb3JjZSBhZ2FpbiBtYWxsb2MoKSBhbGxvY2F0b3IgdG8gcmVsZWFzZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgIGJlZm9yZSBQeV9NYWluKCkgKi8KKyAgICAodm9pZClfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKCJtYWxsb2MiKTsKKwogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgUHlNZW1fUmF3RnJlZShhcmd2X2NvcHkyW2ldKTsKICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vUHl0aG9uLWFzdC5jIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwppbmRleCBlZGZjYmFkLi5mMTBlMzE1IDEwMDY0NAotLS0gYS9QeXRob24vUHl0aG9uLWFzdC5jCisrKyBiL1B5dGhvbi9QeXRob24tYXN0LmMKQEAgLTg2LDYgKzg2LDE1IEBACiAgICAgIm9wIiwKICAgICAidmFsdWUiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkFubkFzc2lnbl90eXBlOworX1B5X0lERU5USUZJRVIoYW5ub3RhdGlvbik7CitfUHlfSURFTlRJRklFUihzaW1wbGUpOworc3RhdGljIGNoYXIgKkFubkFzc2lnbl9maWVsZHNbXT17CisgICAgInRhcmdldCIsCisgICAgImFubm90YXRpb24iLAorICAgICJ2YWx1ZSIsCisgICAgInNpbXBsZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRm9yX3R5cGU7CiBfUHlfSURFTlRJRklFUihpdGVyKTsKIF9QeV9JREVOVElGSUVSKG9yZWxzZSk7CkBAIC0yODUsNiArMjk0LDE4IEBACiBzdGF0aWMgY2hhciAqU3RyX2ZpZWxkc1tdPXsKICAgICAicyIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqRm9ybWF0dGVkVmFsdWVfdHlwZTsKK19QeV9JREVOVElGSUVSKGNvbnZlcnNpb24pOworX1B5X0lERU5USUZJRVIoZm9ybWF0X3NwZWMpOworc3RhdGljIGNoYXIgKkZvcm1hdHRlZFZhbHVlX2ZpZWxkc1tdPXsKKyAgICAidmFsdWUiLAorICAgICJjb252ZXJzaW9uIiwKKyAgICAiZm9ybWF0X3NwZWMiLAorfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkpvaW5lZFN0cl90eXBlOworc3RhdGljIGNoYXIgKkpvaW5lZFN0cl9maWVsZHNbXT17CisgICAgInZhbHVlcyIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQnl0ZXNfdHlwZTsKIHN0YXRpYyBjaGFyICpCeXRlc19maWVsZHNbXT17CiAgICAgInMiLApAQCAtMjk0LDYgKzMxNSwxMCBAQAogICAgICJ2YWx1ZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRWxsaXBzaXNfdHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkNvbnN0YW50X3R5cGU7CitzdGF0aWMgY2hhciAqQ29uc3RhbnRfZmllbGRzW109eworICAgICJ2YWx1ZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQXR0cmlidXRlX3R5cGU7CiBfUHlfSURFTlRJRklFUihhdHRyKTsKIF9QeV9JREVOVElGSUVSKGN0eCk7CkBAIC00MTAsMTAgKzQzNSwxMiBAQAogc3RhdGljIFB5VHlwZU9iamVjdCAqY29tcHJlaGVuc2lvbl90eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2NvbXByZWhlbnNpb24odm9pZCopOwogX1B5X0lERU5USUZJRVIoaWZzKTsKK19QeV9JREVOVElGSUVSKGlzX2FzeW5jKTsKIHN0YXRpYyBjaGFyICpjb21wcmVoZW5zaW9uX2ZpZWxkc1tdPXsKICAgICAidGFyZ2V0IiwKICAgICAiaXRlciIsCiAgICAgImlmcyIsCisgICAgImlzX2FzeW5jIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpleGNlcHRoYW5kbGVyX3R5cGU7CiBzdGF0aWMgY2hhciAqZXhjZXB0aGFuZGxlcl9hdHRyaWJ1dGVzW10gPSB7CkBAIC00NTAsNyArNDc3LDYgQEAKICAgICAiY29sX29mZnNldCIsCiB9OwogX1B5X0lERU5USUZJRVIoYXJnKTsKLV9QeV9JREVOVElGSUVSKGFubm90YXRpb24pOwogc3RhdGljIGNoYXIgKmFyZ19maWVsZHNbXT17CiAgICAgImFyZyIsCiAgICAgImFubm90YXRpb24iLApAQCAtNjk3LDYgKzcyMyw3IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopbzsKIH0KICNkZWZpbmUgYXN0Mm9ial9zaW5nbGV0b24gYXN0Mm9ial9vYmplY3QKKyNkZWZpbmUgYXN0Mm9ial9jb25zdGFudCBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdApAQCAtNzM0LDYgKzc2MSwxOSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG9iajJhc3RfY29uc3RhbnQoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgIGlmIChvYmopIHsKKyAgICAgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYXJlbmEsIG9iaikgPCAwKSB7CisgICAgICAgICAgICAqb3V0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYob2JqKTsKKyAgICB9CisgICAgKm91dCA9IG9iajsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X2lkZW50aWZpZXIoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSAmJiBvYmogIT0gUHlfTm9uZSkgewpAQCAtNzY5LDcgKzgwOSw3IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGkgPSAoaW50KVB5TG9uZ19Bc0xvbmcob2JqKTsKKyAgICBpID0gX1B5TG9uZ19Bc0ludChvYmopOwogICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAxOwogICAgICpvdXQgPSBpOwpAQCAtODQzLDYgKzg4Myw4IEBACiAgICAgaWYgKCFBc3NpZ25fdHlwZSkgcmV0dXJuIDA7CiAgICAgQXVnQXNzaWduX3R5cGUgPSBtYWtlX3R5cGUoIkF1Z0Fzc2lnbiIsIHN0bXRfdHlwZSwgQXVnQXNzaWduX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFBdWdBc3NpZ25fdHlwZSkgcmV0dXJuIDA7CisgICAgQW5uQXNzaWduX3R5cGUgPSBtYWtlX3R5cGUoIkFubkFzc2lnbiIsIHN0bXRfdHlwZSwgQW5uQXNzaWduX2ZpZWxkcywgNCk7CisgICAgaWYgKCFBbm5Bc3NpZ25fdHlwZSkgcmV0dXJuIDA7CiAgICAgRm9yX3R5cGUgPSBtYWtlX3R5cGUoIkZvciIsIHN0bXRfdHlwZSwgRm9yX2ZpZWxkcywgNCk7CiAgICAgaWYgKCFGb3JfdHlwZSkgcmV0dXJuIDA7CiAgICAgQXN5bmNGb3JfdHlwZSA9IG1ha2VfdHlwZSgiQXN5bmNGb3IiLCBzdG10X3R5cGUsIEFzeW5jRm9yX2ZpZWxkcywgNCk7CkBAIC05MTcsNiArOTU5LDExIEBACiAgICAgaWYgKCFOdW1fdHlwZSkgcmV0dXJuIDA7CiAgICAgU3RyX3R5cGUgPSBtYWtlX3R5cGUoIlN0ciIsIGV4cHJfdHlwZSwgU3RyX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFTdHJfdHlwZSkgcmV0dXJuIDA7CisgICAgRm9ybWF0dGVkVmFsdWVfdHlwZSA9IG1ha2VfdHlwZSgiRm9ybWF0dGVkVmFsdWUiLCBleHByX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZV9maWVsZHMsIDMpOworICAgIGlmICghRm9ybWF0dGVkVmFsdWVfdHlwZSkgcmV0dXJuIDA7CisgICAgSm9pbmVkU3RyX3R5cGUgPSBtYWtlX3R5cGUoIkpvaW5lZFN0ciIsIGV4cHJfdHlwZSwgSm9pbmVkU3RyX2ZpZWxkcywgMSk7CisgICAgaWYgKCFKb2luZWRTdHJfdHlwZSkgcmV0dXJuIDA7CiAgICAgQnl0ZXNfdHlwZSA9IG1ha2VfdHlwZSgiQnl0ZXMiLCBleHByX3R5cGUsIEJ5dGVzX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFCeXRlc190eXBlKSByZXR1cm4gMDsKICAgICBOYW1lQ29uc3RhbnRfdHlwZSA9IG1ha2VfdHlwZSgiTmFtZUNvbnN0YW50IiwgZXhwcl90eXBlLApAQCAtOTI0LDYgKzk3MSw4IEBACiAgICAgaWYgKCFOYW1lQ29uc3RhbnRfdHlwZSkgcmV0dXJuIDA7CiAgICAgRWxsaXBzaXNfdHlwZSA9IG1ha2VfdHlwZSgiRWxsaXBzaXMiLCBleHByX3R5cGUsIE5VTEwsIDApOwogICAgIGlmICghRWxsaXBzaXNfdHlwZSkgcmV0dXJuIDA7CisgICAgQ29uc3RhbnRfdHlwZSA9IG1ha2VfdHlwZSgiQ29uc3RhbnQiLCBleHByX3R5cGUsIENvbnN0YW50X2ZpZWxkcywgMSk7CisgICAgaWYgKCFDb25zdGFudF90eXBlKSByZXR1cm4gMDsKICAgICBBdHRyaWJ1dGVfdHlwZSA9IG1ha2VfdHlwZSgiQXR0cmlidXRlIiwgZXhwcl90eXBlLCBBdHRyaWJ1dGVfZmllbGRzLCAzKTsKICAgICBpZiAoIUF0dHJpYnV0ZV90eXBlKSByZXR1cm4gMDsKICAgICBTdWJzY3JpcHRfdHlwZSA9IG1ha2VfdHlwZSgiU3Vic2NyaXB0IiwgZXhwcl90eXBlLCBTdWJzY3JpcHRfZmllbGRzLCAzKTsKQEAgLTExMDEsNyArMTE1MCw3IEBACiAgICAgTm90SW5fc2luZ2xldG9uID0gUHlUeXBlX0dlbmVyaWNOZXcoTm90SW5fdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKCFOb3RJbl9zaW5nbGV0b24pIHJldHVybiAwOwogICAgIGNvbXByZWhlbnNpb25fdHlwZSA9IG1ha2VfdHlwZSgiY29tcHJlaGVuc2lvbiIsICZBU1RfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2lvbl9maWVsZHMsIDMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uX2ZpZWxkcywgNCk7CiAgICAgaWYgKCFjb21wcmVoZW5zaW9uX3R5cGUpIHJldHVybiAwOwogICAgIGlmICghYWRkX2F0dHJpYnV0ZXMoY29tcHJlaGVuc2lvbl90eXBlLCBOVUxMLCAwKSkgcmV0dXJuIDA7CiAgICAgZXhjZXB0aGFuZGxlcl90eXBlID0gbWFrZV90eXBlKCJleGNlcHRoYW5kbGVyIiwgJkFTVF90eXBlLCBOVUxMLCAwKTsKQEAgLTEzNzAsNiArMTQxOSwzNCBAQAogfQogCiBzdG10X3R5CitBbm5Bc3NpZ24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgYW5ub3RhdGlvbiwgZXhwcl90eSB2YWx1ZSwgaW50IHNpbXBsZSwgaW50CisgICAgICAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgc3RtdF90eSBwOworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHRhcmdldCBpcyByZXF1aXJlZCBmb3IgQW5uQXNzaWduIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIWFubm90YXRpb24pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgYW5ub3RhdGlvbiBpcyByZXF1aXJlZCBmb3IgQW5uQXNzaWduIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IEFubkFzc2lnbl9raW5kOworICAgIHAtPnYuQW5uQXNzaWduLnRhcmdldCA9IHRhcmdldDsKKyAgICBwLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uID0gYW5ub3RhdGlvbjsKKyAgICBwLT52LkFubkFzc2lnbi52YWx1ZSA9IHZhbHVlOworICAgIHAtPnYuQW5uQXNzaWduLnNpbXBsZSA9IHNpbXBsZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK3N0bXRfdHkKIEZvcihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogb3JlbHNlLCBpbnQKICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKQEAgLTIwNjMsNiArMjE0MCw0MiBAQAogfQogCiBleHByX3R5CitGb3JtYXR0ZWRWYWx1ZShleHByX3R5IHZhbHVlLCBpbnQgY29udmVyc2lvbiwgZXhwcl90eSBmb3JtYXRfc3BlYywgaW50IGxpbmVubywKKyAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBleHByX3R5IHA7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgRm9ybWF0dGVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gRm9ybWF0dGVkVmFsdWVfa2luZDsKKyAgICBwLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlID0gdmFsdWU7CisgICAgcC0+di5Gb3JtYXR0ZWRWYWx1ZS5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKKyAgICBwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjID0gZm9ybWF0X3NwZWM7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitleHByX3R5CitKb2luZWRTdHIoYXNkbF9zZXEgKiB2YWx1ZXMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBleHByX3R5IHA7CisgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBKb2luZWRTdHJfa2luZDsKKyAgICBwLT52LkpvaW5lZFN0ci52YWx1ZXMgPSB2YWx1ZXM7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitleHByX3R5CiBCeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgZXhwcl90eSBwOwpAQCAtMjExNCw2ICsyMjI3LDI1IEBACiB9CiAKIGV4cHJfdHkKK0NvbnN0YW50KGNvbnN0YW50IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgZXhwcl90eSBwOworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgdmFsdWUgaXMgcmVxdWlyZWQgZm9yIENvbnN0YW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKGV4cHJfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IENvbnN0YW50X2tpbmQ7CisgICAgcC0+di5Db25zdGFudC52YWx1ZSA9IHZhbHVlOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQogQXR0cmlidXRlKGV4cHJfdHkgdmFsdWUsIGlkZW50aWZpZXIgYXR0ciwgZXhwcl9jb250ZXh0X3R5IGN0eCwgaW50IGxpbmVubywgaW50CiAgICAgICAgICAgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CkBAIC0yMzE1LDcgKzI0NDcsOCBAQAogfQogCiBjb21wcmVoZW5zaW9uX3R5Ci1jb21wcmVoZW5zaW9uKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogaWZzLCBQeUFyZW5hICphcmVuYSkKK2NvbXByZWhlbnNpb24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBpZnMsIGludCBpc19hc3luYywKKyAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgY29tcHJlaGVuc2lvbl90eSBwOwogICAgIGlmICghdGFyZ2V0KSB7CkBAIC0yMzM0LDYgKzI0NjcsNyBAQAogICAgIHAtPnRhcmdldCA9IHRhcmdldDsKICAgICBwLT5pdGVyID0gaXRlcjsKICAgICBwLT5pZnMgPSBpZnM7CisgICAgcC0+aXNfYXN5bmMgPSBpc19hc3luYzsKICAgICByZXR1cm4gcDsKIH0KIApAQCAtMjY0OCw2ICsyNzgyLDMwIEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbm5Bc3NpZ25fa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQW5uQXNzaWduX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQW5uQXNzaWduLnRhcmdldCk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldCwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQW5uQXNzaWduLmFubm90YXRpb24pOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hbm5vdGF0aW9uLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bbm5Bc3NpZ24udmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+di5Bbm5Bc3NpZ24uc2ltcGxlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc2ltcGxlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb3Jfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoRm9yX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0zMTY0LDYgKzMzMjIsMzQgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEZvcm1hdHRlZFZhbHVlX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRm9ybWF0dGVkVmFsdWUudmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+di5Gb3JtYXR0ZWRWYWx1ZS5jb252ZXJzaW9uKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29udmVyc2lvbiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9mb3JtYXRfc3BlYywgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEpvaW5lZFN0cl90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkpvaW5lZFN0ci52YWx1ZXMsIGFzdDJvYmpfZXhwcik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlcywgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQnl0ZXNfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQnl0ZXNfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTMxODYsNiArMzM3MiwxNSBAQAogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhFbGxpcHNpc190eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KENvbnN0YW50X3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9jb25zdGFudChvLT52LkNvbnN0YW50LnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhBdHRyaWJ1dGVfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTM1MzEsNiArMzcyNiwxMSBAQAogICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaWZzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5pc19hc3luYyk7CisgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pc19hc3luYywgdmFsdWUpID09IC0xKQorICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIHJldHVybiByZXN1bHQ7CiBmYWlsZWQ6CiAgICAgUHlfWERFQ1JFRih2YWx1ZSk7CkBAIC00NDA2LDYgKzQ2MDYsNjQgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQW5uQXNzaWduX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBleHByX3R5IHRhcmdldDsKKyAgICAgICAgZXhwcl90eSBhbm5vdGF0aW9uOworICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICBpbnQgc2ltcGxlOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0YXJnZXQsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0XCIgbWlzc2luZyBmcm9tIEFubkFzc2lnbiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hbm5vdGF0aW9uKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hbm5vdGF0aW9uKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYW5ub3RhdGlvbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhbm5vdGF0aW9uXCIgbWlzc2luZyBmcm9tIEFubkFzc2lnbiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX3ZhbHVlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3NpbXBsZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc2ltcGxlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZzaW1wbGUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwic2ltcGxlXCIgbWlzc2luZyBmcm9tIEFubkFzc2lnbiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEFubkFzc2lnbih0YXJnZXQsIGFubm90YXRpb24sIHZhbHVlLCBzaW1wbGUsIGxpbmVubywgY29sX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUZvcl90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTYwMjUsNiArNjI4Myw4NiBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilGb3JtYXR0ZWRWYWx1ZV90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgaW50IGNvbnZlcnNpb247CisgICAgICAgIGV4cHJfdHkgZm9ybWF0X3NwZWM7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBGb3JtYXR0ZWRWYWx1ZSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2NvbnZlcnNpb24pKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbnZlcnNpb24pOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmNvbnZlcnNpb24sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29udmVyc2lvbiA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2Zvcm1hdF9zcGVjKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9mb3JtYXRfc3BlYyk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmZvcm1hdF9zcGVjLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvcm1hdF9zcGVjID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gRm9ybWF0dGVkVmFsdWUodmFsdWUsIGNvbnZlcnNpb24sIGZvcm1hdF9zcGVjLCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUpvaW5lZFN0cl90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgYXNkbF9zZXEqIHZhbHVlczsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlcykpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSm9pbmVkU3RyIGZpZWxkIFwidmFsdWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIHZhbHVlcyA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAodmFsdWVzID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHZhbHVlcywgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlc1wiIG1pc3NpbmcgZnJvbSBKb2luZWRTdHIiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBKb2luZWRTdHIodmFsdWVzLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQnl0ZXNfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02MDc5LDYgKzY0MTcsMjggQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQ29uc3RhbnRfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGNvbnN0YW50IHZhbHVlOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2NvbnN0YW50KHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIENvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQ29uc3RhbnQodmFsdWUsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBdHRyaWJ1dGVfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02Nzk1LDYgKzcxNTUsNyBAQAogICAgIGV4cHJfdHkgdGFyZ2V0OwogICAgIGV4cHJfdHkgaXRlcjsKICAgICBhc2RsX3NlcSogaWZzOworICAgIGludCBpc19hc3luYzsKIAogICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgewogICAgICAgICBpbnQgcmVzOwpAQCAtNjg0Miw3ICs3MjAzLDE4IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImlmc1wiIG1pc3NpbmcgZnJvbSBjb21wcmVoZW5zaW9uIik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICAqb3V0ID0gY29tcHJlaGVuc2lvbih0YXJnZXQsIGl0ZXIsIGlmcywgYXJlbmEpOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXNfYXN5bmMpKSB7CisgICAgICAgIGludCByZXM7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pc19hc3luYyk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmlzX2FzeW5jLCBhcmVuYSk7CisgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXNfYXN5bmNcIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgKm91dCA9IGNvbXByZWhlbnNpb24odGFyZ2V0LCBpdGVyLCBpZnMsIGlzX2FzeW5jLCBhcmVuYSk7CiAgICAgcmV0dXJuIDA7CiBmYWlsZWQ6CiAgICAgUHlfWERFQ1JFRih0bXApOwpAQCAtNzI4Niw2ICs3NjU4LDggQEAKICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkF1Z0Fzc2lnbiIsIChQeU9iamVjdCopQXVnQXNzaWduX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBbm5Bc3NpZ24iLCAoUHlPYmplY3QqKUFubkFzc2lnbl90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRm9yIiwgKFB5T2JqZWN0KilGb3JfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFzeW5jRm9yIiwgKFB5T2JqZWN0KilBc3luY0Zvcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzM0NiwxMiArNzcyMCwxOCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ2FsbCIsIChQeU9iamVjdCopQ2FsbF90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTnVtIiwgKFB5T2JqZWN0KilOdW1fdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlN0ciIsIChQeU9iamVjdCopU3RyX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGb3JtYXR0ZWRWYWx1ZSIsCisgICAgICAgIChQeU9iamVjdCopRm9ybWF0dGVkVmFsdWVfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkpvaW5lZFN0ciIsIChQeU9iamVjdCopSm9pbmVkU3RyX3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJCeXRlcyIsIChQeU9iamVjdCopQnl0ZXNfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk5hbWVDb25zdGFudCIsIChQeU9iamVjdCopTmFtZUNvbnN0YW50X3R5cGUpIDwKICAgICAgICAgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJFbGxpcHNpcyIsIChQeU9iamVjdCopRWxsaXBzaXNfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNvbnN0YW50IiwgKFB5T2JqZWN0KilDb25zdGFudF90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXR0cmlidXRlIiwgKFB5T2JqZWN0KilBdHRyaWJ1dGVfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlN1YnNjcmlwdCIsIChQeU9iamVjdCopU3Vic2NyaXB0X3R5cGUpIDwgMCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9fd2FybmluZ3MuYyBiL1B5dGhvbi9fd2FybmluZ3MuYwppbmRleCA5NzhiYWQxLi40MGY1YzhlIDEwMDY0NAotLS0gYS9QeXRob24vX3dhcm5pbmdzLmMKKysrIGIvUHl0aG9uL193YXJuaW5ncy5jCkBAIC00MCwxMiArNDAsMTEgQEAKICAgIEEgTlVMTCByZXR1cm4gdmFsdWUgY2FuIG1lYW4gZmFsc2Ugb3IgYW4gZXJyb3IuCiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWdldF93YXJuaW5nc19hdHRyKGNvbnN0IGNoYXIgKmF0dHIpCitnZXRfd2FybmluZ3NfYXR0cihjb25zdCBjaGFyICphdHRyLCBpbnQgdHJ5X2ltcG9ydCkKIHsKICAgICBzdGF0aWMgUHlPYmplY3QgKndhcm5pbmdzX3N0ciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFsbF9tb2R1bGVzOwotICAgIFB5T2JqZWN0ICp3YXJuaW5nc19tb2R1bGU7Ci0gICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqd2FybmluZ3NfbW9kdWxlLCAqb2JqOwogCiAgICAgaWYgKHdhcm5pbmdzX3N0ciA9PSBOVUxMKSB7CiAgICAgICAgIHdhcm5pbmdzX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJ3YXJuaW5ncyIpOwpAQCAtNTMsMTUgKzUyLDM0IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhbGxfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICByZXN1bHQgPSBQeURpY3RfQ29udGFpbnMoYWxsX21vZHVsZXMsIHdhcm5pbmdzX3N0cik7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSB8fCByZXN1bHQgPT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB3YXJuaW5nc19tb2R1bGUgPSBQeURpY3RfR2V0SXRlbShhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKSkKKyAgICAvKiBkb24ndCB0cnkgdG8gaW1wb3J0IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgUHl0aG9uIGZpbmFsbGl6YXRpb24gKi8KKyAgICBpZiAodHJ5X2ltcG9ydCAmJiBfUHlfRmluYWxpemluZyA9PSBOVUxMKSB7CisgICAgICAgIHdhcm5pbmdzX21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydCh3YXJuaW5nc19zdHIpOworICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIEZhbGxiYWNrIHRvIHRoZSBDIGltcGxlbWVudGF0aW9uIGlmIHdlIGNhbm5vdCBnZXQKKyAgICAgICAgICAgICAgIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gKi8KKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlPYmplY3RfR2V0QXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhbGxfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKKworICAgICAgICB3YXJuaW5nc19tb2R1bGUgPSBQeURpY3RfR2V0SXRlbShhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKKyAgICAgICAgaWYgKHdhcm5pbmdzX21vZHVsZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgUHlfSU5DUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgfQorCisgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHdhcm5pbmdzX21vZHVsZSwgYXR0cikpIHsKKyAgICAgICAgUHlfREVDUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKTsKKyAgICBQeV9ERUNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICByZXR1cm4gb2JqOwogfQogCiAKQEAgLTcwLDcgKzg4LDcgQEAKIHsKICAgICBQeU9iamVjdCAqcmVnaXN0cnk7CiAKLSAgICByZWdpc3RyeSA9IGdldF93YXJuaW5nc19hdHRyKCJvbmNlcmVnaXN0cnkiKTsKKyAgICByZWdpc3RyeSA9IGdldF93YXJuaW5nc19hdHRyKCJvbmNlcmVnaXN0cnkiLCAwKTsKICAgICBpZiAocmVnaXN0cnkgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtODcsNyArMTA1LDcgQEAKIHsKICAgICBQeU9iamVjdCAqZGVmYXVsdF9hY3Rpb247CiAKLSAgICBkZWZhdWx0X2FjdGlvbiA9IGdldF93YXJuaW5nc19hdHRyKCJkZWZhdWx0YWN0aW9uIik7CisgICAgZGVmYXVsdF9hY3Rpb24gPSBnZXRfd2FybmluZ3NfYXR0cigiZGVmYXVsdGFjdGlvbiIsIDApOwogICAgIGlmIChkZWZhdWx0X2FjdGlvbiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMCw3ICsxMjgsNyBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqd2FybmluZ3NfZmlsdGVyczsKIAotICAgIHdhcm5pbmdzX2ZpbHRlcnMgPSBnZXRfd2FybmluZ3NfYXR0cigiZmlsdGVycyIpOworICAgIHdhcm5pbmdzX2ZpbHRlcnMgPSBnZXRfd2FybmluZ3NfYXR0cigiZmlsdGVycyIsIDApOwogICAgIGlmICh3YXJuaW5nc19maWx0ZXJzID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI4Nyw4ICszMDUsOCBAQAogfQogCiBzdGF0aWMgdm9pZAotc2hvd193YXJuaW5nKFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKnRleHQsIFB5T2JqZWN0Ci0gICAgICAgICAgICAgICAgKmNhdGVnb3J5LCBQeU9iamVjdCAqc291cmNlbGluZSkKK3Nob3dfd2FybmluZyhQeU9iamVjdCAqZmlsZW5hbWUsIGludCBsaW5lbm8sIFB5T2JqZWN0ICp0ZXh0LAorICAgICAgICAgICAgIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUpCiB7CiAgICAgUHlPYmplY3QgKmZfc3RkZXJyOwogICAgIFB5T2JqZWN0ICpuYW1lOwpAQCAtMzU5LDEwICszNzcsNjQgQEAKICAgICBQeUVycl9DbGVhcigpOwogfQogCitzdGF0aWMgaW50CitjYWxsX3Nob3dfd2FybmluZyhQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICp0ZXh0LCBQeU9iamVjdCAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKmxpbmVub19vYmosCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlbGluZSwgUHlPYmplY3QgKnNvdXJjZSkKK3sKKyAgICBQeU9iamVjdCAqc2hvd19mbiwgKm1zZywgKnJlcywgKndhcm5tc2dfY2xzID0gTlVMTDsKKworICAgIC8qIElmIHRoZSBzb3VyY2UgcGFyYW1ldGVyIGlzIHNldCwgdHJ5IHRvIGdldCB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgorICAgICAgIFRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gaXMgYWJsZSB0byBsb2cgdGhlIHRyYWNlYmFjayB3aGVyZSB0aGUgc291cmNlCisgICAgICAgd2FzIGFsbG9jYXRlZCwgd2hlcmVhcyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBkb2VzbnQuICovCisgICAgc2hvd19mbiA9IGdldF93YXJuaW5nc19hdHRyKCJfc2hvd3dhcm5tc2ciLCBzb3VyY2UgIT0gTlVMTCk7CisgICAgaWYgKHNob3dfZm4gPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc2hvd193YXJuaW5nKGZpbGVuYW1lLCBsaW5lbm8sIHRleHQsIGNhdGVnb3J5LCBzb3VyY2VsaW5lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHNob3dfZm4pKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIndhcm5pbmdzLl9zaG93d2Fybm1zZygpIG11c3QgYmUgc2V0IHRvIGEgY2FsbGFibGUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICB3YXJubXNnX2NscyA9IGdldF93YXJuaW5nc19hdHRyKCJXYXJuaW5nTWVzc2FnZSIsIDApOworICAgIGlmICh3YXJubXNnX2NscyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgd2FybmluZ3MuV2FybmluZ01lc3NhZ2UiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBtc2cgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHdhcm5tc2dfY2xzLCBtZXNzYWdlLCBjYXRlZ29yeSwKKyAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm9fb2JqLCBQeV9Ob25lLCBQeV9Ob25lLCBzb3VyY2UsCisgICAgICAgICAgICBOVUxMKTsKKyAgICBQeV9ERUNSRUYod2Fybm1zZ19jbHMpOworICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2hvd19mbiwgbXNnLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoc2hvd19mbik7CisgICAgUHlfREVDUkVGKG1zZyk7CisKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHNob3dfZm4pOworICAgIHJldHVybiAtMTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5fZXhwbGljaXQoUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqbWVzc2FnZSwKICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLAotICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcmVnaXN0cnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lKQorICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcmVnaXN0cnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lLAorICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlKQogewogICAgIFB5T2JqZWN0ICprZXkgPSBOVUxMLCAqdGV4dCA9IE5VTEwsICpyZXN1bHQgPSBOVUxMLCAqbGluZW5vX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKml0ZW0gPSBOVUxMOwpAQCAtNDcwLDMxICs1NDIsOSBAQAogICAgIGlmIChyYyA9PSAxKSAgLyogQWxyZWFkeSB3YXJuZWQgZm9yIHRoaXMgbW9kdWxlLiAqLwogICAgICAgICBnb3RvIHJldHVybl9ub25lOwogICAgIGlmIChyYyA9PSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpzaG93X2Z4biA9IGdldF93YXJuaW5nc19hdHRyKCJzaG93d2FybmluZyIpOwotICAgICAgICBpZiAoc2hvd19meG4gPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICAgICAgc2hvd193YXJuaW5nKGZpbGVuYW1lLCBsaW5lbm8sIHRleHQsIGNhdGVnb3J5LCBzb3VyY2VsaW5lKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICAgICAgICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhzaG93X2Z4bikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FybmluZ3Muc2hvd3dhcm5pbmcoKSBtdXN0IGJlIHNldCB0byBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHNob3dfZnhuKTsKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2hvd19meG4sIG1lc3NhZ2UsIGNhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVub19vYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzaG93X2Z4bik7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHJlcyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9CisgICAgICAgIGlmIChjYWxsX3Nob3dfd2FybmluZyhjYXRlZ29yeSwgdGV4dCwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVub19vYmosIHNvdXJjZWxpbmUsIHNvdXJjZSkgPCAwKQorICAgICAgICAgICAgZ290byBjbGVhbnVwOwogICAgIH0KICAgICBlbHNlIC8qIGlmIChyYyA9PSAtMSkgKi8KICAgICAgICAgZ290byBjbGVhbnVwOwpAQCAtNzM4LDcgKzc4OCw4IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kb193YXJuKFB5T2JqZWN0ICptZXNzYWdlLCBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwpCitkb193YXJuKFB5T2JqZWN0ICptZXNzYWdlLCBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCAqbW9kdWxlLCAqcmVnaXN0cnksICpyZXM7CiAgICAgaW50IGxpbmVubzsKQEAgLTc0Nyw3ICs3OTgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwgcmVnaXN0cnksCi0gICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHNvdXJjZSk7CiAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKICAgICBQeV9ERUNSRUYocmVnaXN0cnkpOwogICAgIFB5X0RFQ1JFRihtb2R1bGUpOwpAQCAtNzU3LDI1ICs4MDgsMjcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3YXJuaW5nc193YXJuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3X2xpc3RbXSA9IHsgIm1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAic3RhY2tsZXZlbCIsIDAgfTsKLSAgICBQeU9iamVjdCAqbWVzc2FnZSwgKmNhdGVnb3J5ID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dfbGlzdFtdID0geyJtZXNzYWdlIiwgImNhdGVnb3J5IiwgInN0YWNrbGV2ZWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICptZXNzYWdlLCAqY2F0ZWdvcnkgPSBOVUxMLCAqc291cmNlID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9uOndhcm4iLCBrd19saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZXNzYWdlLCAmY2F0ZWdvcnksICZzdGFja19sZXZlbCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T25POndhcm4iLCBrd19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZXNzYWdlLCAmY2F0ZWdvcnksICZzdGFja19sZXZlbCwgJnNvdXJjZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgY2F0ZWdvcnkgPSBnZXRfY2F0ZWdvcnkobWVzc2FnZSwgY2F0ZWdvcnkpOwogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwpOworICAgIHJldHVybiBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCwgc291cmNlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5pbmdzX3dhcm5fZXhwbGljaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBzdGF0aWMgY2hhciAqa3dkX2xpc3RbXSA9IHsibWVzc2FnZSIsICJjYXRlZ29yeSIsICJmaWxlbmFtZSIsICJsaW5lbm8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlIiwgInJlZ2lzdHJ5IiwgIm1vZHVsZV9nbG9iYWxzIiwgMH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUiLCAicmVnaXN0cnkiLCAibW9kdWxlX2dsb2JhbHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiwgMH07CiAgICAgUHlPYmplY3QgKm1lc3NhZ2U7CiAgICAgUHlPYmplY3QgKmNhdGVnb3J5OwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKQEAgLTc4MywxMCArODM2LDExIEBACiAgICAgUHlPYmplY3QgKm1vZHVsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlZ2lzdHJ5ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbW9kdWxlX2dsb2JhbHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzb3VyY2VvYmogPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PVWl8T09POndhcm5fZXhwbGljaXQiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT1VpfE9PT086d2Fybl9leHBsaWNpdCIsCiAgICAgICAgICAgICAgICAga3dkX2xpc3QsICZtZXNzYWdlLCAmY2F0ZWdvcnksICZmaWxlbmFtZSwgJmxpbmVubywgJm1vZHVsZSwKLSAgICAgICAgICAgICAgICAmcmVnaXN0cnksICZtb2R1bGVfZ2xvYmFscykpCisgICAgICAgICAgICAgICAgJnJlZ2lzdHJ5LCAmbW9kdWxlX2dsb2JhbHMsICZzb3VyY2VvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChtb2R1bGVfZ2xvYmFscykgewpAQCAtODQyLDE0ICs4OTYsMTQgQEAKIAogICAgICAgICAvKiBIYW5kbGUgdGhlIHdhcm5pbmcuICovCiAgICAgICAgIHJldHVybmVkID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIHNvdXJjZV9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBzb3VyY2VfbGluZSwgc291cmNlb2JqKTsKICAgICAgICAgUHlfREVDUkVGKHNvdXJjZV9saXN0KTsKICAgICAgICAgcmV0dXJuIHJldHVybmVkOwogICAgIH0KIAogIHN0YW5kYXJkX2NhbGw6CiAgICAgcmV0dXJuIHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIE5VTEwsIHNvdXJjZW9iaik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04NjQsMTQgKzkxOCwxNCBAQAogCiBzdGF0aWMgaW50CiB3YXJuX3VuaWNvZGUoUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqbWVzc2FnZSwKLSAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsKQorICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICBjYXRlZ29yeSA9IFB5RXhjX1J1bnRpbWVXYXJuaW5nOwogCi0gICAgcmVzID0gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwpOworICAgIHJlcyA9IGRvX3dhcm4obWVzc2FnZSwgY2F0ZWdvcnksIHN0YWNrX2xldmVsLCBzb3VyY2UpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtODc5LDEyICs5MzMsMjggQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorX1B5RXJyX1dhcm5Gb3JtYXRWKFB5T2JqZWN0ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhdGVnb3J5LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKK3sKKyAgICBQeU9iamVjdCAqbWVzc2FnZTsKKyAgICBpbnQgcmVzOworCisgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKKyAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXMgPSB3YXJuX3VuaWNvZGUoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrX2xldmVsLCBzb3VyY2UpOworICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKKyAgICByZXR1cm4gcmVzOworfQorCiBpbnQKIFB5RXJyX1dhcm5Gb3JtYXQoUHlPYmplY3QgKmNhdGVnb3J5LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKLSAgICBpbnQgcmV0OwotICAgIFB5T2JqZWN0ICptZXNzYWdlOworICAgIGludCByZXM7CiAgICAgdmFfbGlzdCB2YXJnczsKIAogI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKQEAgLTg5MiwyNSArOTYyLDM4IEBACiAjZWxzZQogICAgIHZhX3N0YXJ0KHZhcmdzKTsKICNlbmRpZgotICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7Ci0gICAgaWYgKG1lc3NhZ2UgIT0gTlVMTCkgewotICAgICAgICByZXQgPSB3YXJuX3VuaWNvZGUoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrX2xldmVsKTsKLSAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldCA9IC0xOworICAgIHJlcyA9IF9QeUVycl9XYXJuRm9ybWF0VihOVUxMLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwsIGZvcm1hdCwgdmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmVzOwogfQogCiBpbnQKK1B5RXJyX1Jlc291cmNlV2FybmluZyhQeU9iamVjdCAqc291cmNlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIGludCByZXM7CisgICAgdmFfbGlzdCB2YXJnczsKKworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgZm9ybWF0KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCisgICAgcmVzID0gX1B5RXJyX1dhcm5Gb3JtYXRWKHNvdXJjZSwgUHlFeGNfUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja19sZXZlbCwgZm9ybWF0LCB2YXJncyk7CisgICAgdmFfZW5kKHZhcmdzKTsKKyAgICByZXR1cm4gcmVzOworfQorCisKK2ludAogUHlFcnJfV2FybkV4KFB5T2JqZWN0ICpjYXRlZ29yeSwgY29uc3QgY2hhciAqdGV4dCwgUHlfc3NpemVfdCBzdGFja19sZXZlbCkKIHsKICAgICBpbnQgcmV0OwogICAgIFB5T2JqZWN0ICptZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcodGV4dCk7CiAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwpOworICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwsIE5VTEwpOwogICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtOTIxLDcgKzEwMDQsNyBAQAogI3VuZGVmIFB5RXJyX1dhcm4KIAogUHlBUElfRlVOQyhpbnQpCi1QeUVycl9XYXJuKFB5T2JqZWN0ICpjYXRlZ29yeSwgY2hhciAqdGV4dCkKK1B5RXJyX1dhcm4oUHlPYmplY3QgKmNhdGVnb3J5LCBjb25zdCBjaGFyICp0ZXh0KQogewogICAgIHJldHVybiBQeUVycl9XYXJuRXgoY2F0ZWdvcnksIHRleHQsIDEpOwogfQpAQCAtOTM2LDcgKzEwMTksNyBAQAogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICBjYXRlZ29yeSA9IFB5RXhjX1J1bnRpbWVXYXJuaW5nOwogICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgcmVnaXN0cnksIE5VTEwsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMTAwMCw3ICsxMDgzLDcgQEAKICAgICBpZiAobWVzc2FnZSAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc2RsLmMgYi9QeXRob24vYXNkbC5jCmluZGV4IGRmMzg3YjIuLmMyMTEwNzggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc2RsLmMKKysrIGIvUHl0aG9uL2FzZGwuYwpAQCAtOSwxNCArOSwxNCBAQAogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCiAgICAgaWYgKHNpemUgPCAwIHx8Ci0gICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgeworICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFNJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CiAKICAgICAvKiBjaGVjayBpZiBzaXplIGNhbiBiZSBhZGRlZCBzYWZlbHkgKi8KLSAgICBpZiAobiA+IFBZX1NJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgeworICAgIGlmIChuID4gU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQwLDE0ICs0MCwxNCBAQAogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCiAgICAgaWYgKHNpemUgPCAwIHx8Ci0gICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgeworICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFNJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKIAogICAgIC8qIGNoZWNrIGlmIHNpemUgY2FuIGJlIGFkZGVkIHNhZmVseSAqLwotICAgIGlmIChuID4gUFlfU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CisgICAgaWYgKG4gPiBTSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzdC5jIGIvUHl0aG9uL2FzdC5jCmluZGV4IDZkYTMzZjcuLjc2ZGFmNmYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc3QuYworKysgYi9QeXRob24vYXN0LmMKQEAgLTEzMiw2ICsxMzIsNTIgQEAKIH0KIAogc3RhdGljIGludAordmFsaWRhdGVfY29uc3RhbnQoUHlPYmplY3QgKnZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lIHx8IHZhbHVlID09IFB5X0VsbGlwc2lzKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5RmxvYXRfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5Q29tcGxleF9DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlCb29sX0NoZWNrKHZhbHVlKQorICAgICAgICAgICAgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QodmFsdWUpCisgICAgICAgICAgICB8fCBQeUJ5dGVzX0NoZWNrRXhhY3QodmFsdWUpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QodmFsdWUpIHx8IFB5RnJvemVuU2V0X0NoZWNrRXhhY3QodmFsdWUpKSB7CisgICAgICAgIFB5T2JqZWN0ICppdDsKKworICAgICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIodmFsdWUpOworICAgICAgICBpZiAoaXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5SXRlcl9OZXh0KGl0KTsKKyAgICAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfY29uc3RhbnQoaXRlbSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CiB2YWxpZGF0ZV9leHByKGV4cHJfdHkgZXhwLCBleHByX2NvbnRleHRfdHkgY3R4KQogewogICAgIGludCBjaGVja19jdHggPSAxOwpAQCAtMjQwLDYgKzI4NiwxNCBAQAogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5mdW5jLCBMb2FkKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoZXhwLT52LkNhbGwuYXJncywgTG9hZCwgMCkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKGV4cC0+di5DYWxsLmtleXdvcmRzKTsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIGlmICghdmFsaWRhdGVfY29uc3RhbnQoZXhwLT52LkNvbnN0YW50LnZhbHVlKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGFuIGludmFsaWQgdHlwZSBpbiBDb25zdGFudDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZXhwLT52LkNvbnN0YW50LnZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIE51bV9raW5kOiB7CiAgICAgICAgIFB5T2JqZWN0ICpuID0gZXhwLT52Lk51bS5uOwogICAgICAgICBpZiAoIVB5TG9uZ19DaGVja0V4YWN0KG4pICYmICFQeUZsb2F0X0NoZWNrRXhhY3QobikgJiYKQEAgLTI1Nyw2ICszMTEsMTQgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMTsKICAgICB9CisgICAgY2FzZSBKb2luZWRTdHJfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5Kb2luZWRTdHIudmFsdWVzLCBMb2FkLCAwKTsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIGlmICh2YWxpZGF0ZV9leHByKGV4cC0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSwgTG9hZCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoZXhwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjLCBMb2FkKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgY2FzZSBCeXRlc19raW5kOiB7CiAgICAgICAgIFB5T2JqZWN0ICpiID0gZXhwLT52LkJ5dGVzLnM7CiAgICAgICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KGIpKSB7CkBAIC0zMzUsNiArMzk3LDE3IEBACiAgICAgY2FzZSBBdWdBc3NpZ25fa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udGFyZ2V0LCBTdG9yZSkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udmFsdWUsIExvYWQpOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIGlmIChzdG10LT52LkFubkFzc2lnbi50YXJnZXQtPmtpbmQgIT0gTmFtZV9raW5kICYmCisgICAgICAgICAgICBzdG10LT52LkFubkFzc2lnbi5zaW1wbGUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFubkFzc2lnbiB3aXRoIHNpbXBsZSBub24tTmFtZSB0YXJnZXQiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLnRhcmdldCwgU3RvcmUpICYmCisgICAgICAgICAgICAgICAoIXN0bXQtPnYuQW5uQXNzaWduLnZhbHVlIHx8CisgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkFubkFzc2lnbi52YWx1ZSwgTG9hZCkpICYmCisgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLmFubm90YXRpb24sIExvYWQpOwogICAgIGNhc2UgRm9yX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLnRhcmdldCwgU3RvcmUpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLml0ZXIsIExvYWQpICYmCkBAIC00MTMsOCArNDg2LDggQEAKICAgICBjYXNlIEltcG9ydF9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0Lm5hbWVzLCAibmFtZXMiLCAiSW1wb3J0Iik7CiAgICAgY2FzZSBJbXBvcnRGcm9tX2tpbmQ6Ci0gICAgICAgIGlmIChzdG10LT52LkltcG9ydEZyb20ubGV2ZWwgPCAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbXBvcnRGcm9tIGxldmVsIGxlc3MgdGhhbiAtMSIpOworICAgICAgICBpZiAoc3RtdC0+di5JbXBvcnRGcm9tLmxldmVsIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJOZWdhdGl2ZSBJbXBvcnRGcm9tIGxldmVsIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0RnJvbS5uYW1lcywgIm5hbWVzIiwgIkltcG9ydEZyb20iKTsKQEAgLTUxMiw4ICs1ODUsNyBAQAogCiAvKiBEYXRhIHN0cnVjdHVyZSB1c2VkIGludGVybmFsbHkgKi8KIHN0cnVjdCBjb21waWxpbmcgewotICAgIGNoYXIgKmNfZW5jb2Rpbmc7IC8qIHNvdXJjZSBlbmNvZGluZyAqLwotICAgIFB5QXJlbmEgKmNfYXJlbmE7IC8qIGFyZW5hIGZvciBhbGxvY2F0aW5nIG1lbWVvcnkgKi8KKyAgICBQeUFyZW5hICpjX2FyZW5hOyAvKiBBcmVuYSBmb3IgYWxsb2NhdGluZyBtZW1vcnkuICovCiAgICAgUHlPYmplY3QgKmNfZmlsZW5hbWU7IC8qIGZpbGVuYW1lICovCiAgICAgUHlPYmplY3QgKmNfbm9ybWFsaXplOyAvKiBOb3JtYWxpemF0aW9uIGZ1bmN0aW9uIGZyb20gdW5pY29kZWRhdGEuICovCiAgICAgUHlPYmplY3QgKmNfbm9ybWFsaXplX2FyZ3M7IC8qIE5vcm1hbGl6YXRpb24gYXJndW1lbnQgdHVwbGUuICovCkBAIC01MzUsOSArNjA3LDcgQEAKIHN0YXRpYyBleHByX3R5IGFzdF9mb3JfY2FsbChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKiwgZXhwcl90eSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqcGFyc2VudW1iZXIoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBjaGFyICopOwotc3RhdGljIFB5T2JqZWN0ICpwYXJzZXN0cihzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlKTsKLXN0YXRpYyBQeU9iamVjdCAqcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYnl0ZXNtb2RlKTsKK3N0YXRpYyBleHByX3R5IHBhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4pOwogCiAjZGVmaW5lIENPTVBfR0VORVhQICAgMAogI2RlZmluZSBDT01QX0xJU1RDT01QIDEKQEAgLTcwMSwyMyArNzcxLDExIEBACiAgICAgYy5jX2FyZW5hID0gYXJlbmE7CiAgICAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCiAgICAgYy5jX2ZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgYy5jX25vcm1hbGl6ZSA9IGMuY19ub3JtYWxpemVfYXJncyA9IE5VTEw7Ci0gICAgaWYgKGZsYWdzICYmIGZsYWdzLT5jZl9mbGFncyAmIFB5Q0ZfU09VUkNFX0lTX1VURjgpIHsKLSAgICAgICAgYy5jX2VuY29kaW5nID0gInV0Zi04IjsKLSAgICAgICAgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkgewotI2lmIDAKLSAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZW5jb2RpbmcgZGVjbGFyYXRpb24gaW4gVW5pY29kZSBzdHJpbmciKTsKLSAgICAgICAgICAgIGdvdG8gb3V0OwotI2VuZGlmCi0gICAgICAgICAgICBuID0gQ0hJTEQobiwgMCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkgewotICAgICAgICBjLmNfZW5jb2RpbmcgPSBTVFIobik7CisgICAgYy5jX25vcm1hbGl6ZSA9IE5VTEw7CisgICAgYy5jX25vcm1hbGl6ZV9hcmdzID0gTlVMTDsKKworICAgIGlmIChUWVBFKG4pID09IGVuY29kaW5nX2RlY2wpCiAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBQRVAgMzEyMCAqLwotICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwotICAgIH0KIAogICAgIGsgPSAwOwogICAgIHN3aXRjaCAoVFlQRShuKSkgewpAQCAtODY0LDcgKzkyMiw3IEBACiAgICAgfQogfQogCi1zdGF0aWMgY29uc3QgY2hhciogRk9SQklEREVOW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IEZPUkJJRERFTltdID0gewogICAgICJOb25lIiwKICAgICAiVHJ1ZSIsCiAgICAgIkZhbHNlIiwKQEAgLTg4MCw4ICs5MzgsMjggQEAKICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAiYXN5bmMiKSA9PSAwIHx8CisgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJhd2FpdCIpID09IDApCisgICAgeworICAgICAgICBQeU9iamVjdCAqbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKAorICAgICAgICAgICAgIidhc3luYycgYW5kICdhd2FpdCcgd2lsbCBiZWNvbWUgcmVzZXJ2ZWQga2V5d29yZHMiCisgICAgICAgICAgICAiIGluIFB5dGhvbiAzLjciKTsKKyAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICBjLT5jX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgIE5VTEwpIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKGZ1bGxfY2hlY2tzKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKipwOworICAgICAgICBjb25zdCBjaGFyICogY29uc3QgKnA7CiAgICAgICAgIGZvciAocCA9IEZPUkJJRERFTjsgKnA7IHArKykgewogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICpwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKQEAgLTk0MywxMyArMTAyMSw4IEBACiAgICAgICAgICAgICBzID0gZS0+di5MaXN0LmVsdHM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUdXBsZV9raW5kOgotICAgICAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihlLT52LlR1cGxlLmVsdHMpKSAgewotICAgICAgICAgICAgICAgIGUtPnYuVHVwbGUuY3R4ID0gY3R4OwotICAgICAgICAgICAgICAgIHMgPSBlLT52LlR1cGxlLmVsdHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBleHByX25hbWUgPSAiKCkiOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZS0+di5UdXBsZS5jdHggPSBjdHg7CisgICAgICAgICAgICBzID0gZS0+di5UdXBsZS5lbHRzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGFtYmRhX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGFtYmRhIjsKQEAgLTk4Niw2ICsxMDU5LDggQEAKICAgICAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgY2FzZSBTdHJfa2luZDoKICAgICAgICAgY2FzZSBCeXRlc19raW5kOgorICAgICAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGl0ZXJhbCI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKQEAgLTEyNTksMTYgKzEzMzQsMjAgQEAKICAgICAgICBhbmQgdmFyYXJnc2xpc3QgKGxhbWJkYSBkZWZpbml0aW9uKS4KIAogICAgICAgIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCi0gICAgICAgdHlwZWRhcmdzbGlzdDogKCh0ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICAgICAgICAgICAoJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXQotICAgICAgICAgICB8ICcqKicgdGZwZGVmKQotICAgICAgICAgICB8IHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKKyAgICAgICB0eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAgICAgICAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICAgICAgfCAnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICB8ICcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB0ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKionIHRmcGRlZiBbJywnXSkKICAgICAgICB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICAgICAgIHZhcmFyZ3NsaXN0OiAoKHZmcGRlZiBbJz0nIHRlc3RdICcsJykqCi0gICAgICAgICAgICgnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqICBbJywnICcqKicgdmZwZGVmXQotICAgICAgICAgICB8ICcqKicgdmZwZGVmKQotICAgICAgICAgICB8IHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKKyAgICAgICB2YXJhcmdzbGlzdDogKHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgICAgICAgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ10KKyAgICAgICApCiAgICAgICAgdmZwZGVmOiBOQU1FCisKICAgICAqLwogICAgIGludCBpLCBqLCBrLCBucG9zYXJncyA9IDAsIG5rd29ubHlhcmdzID0gMDsKICAgICBpbnQgbnBvc2RlZmF1bHRzID0gMCwgZm91bmRfZGVmYXVsdCA9IDA7CkBAIC0xMzcwLDcgKzE0NDksOCBAQAogICAgICAgICAgICAgICAgIGkgKz0gMjsgLyogdGhlIG5hbWUgYW5kIHRoZSBjb21tYSAqLwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTVEFSOgotICAgICAgICAgICAgICAgIGlmIChpKzEgPj0gTkNIKG4pKSB7CisgICAgICAgICAgICAgICAgaWYgKGkrMSA+PSBOQ0gobikgfHwKKyAgICAgICAgICAgICAgICAgICAgKGkrMiA9PSBOQ0gobikgJiYgVFlQRShDSElMRChuLCBpKzEpKSA9PSBDT01NQSkpIHsKICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKG4sIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkIGFyZ3VtZW50cyBtdXN0IGZvbGxvdyBiYXJlICoiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNjg3LDE0ICsxNzY3LDIxIEBACiBjb3VudF9jb21wX2ZvcnMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBpbnQgbl9mb3JzID0gMDsKKyAgICBpbnQgaXNfYXN5bmM7CiAKICAgY291bnRfY29tcF9mb3I6CisgICAgaXNfYXN5bmMgPSAwOwogICAgIG5fZm9ycysrOwogICAgIFJFUShuLCBjb21wX2Zvcik7Ci0gICAgaWYgKE5DSChuKSA9PSA1KQotICAgICAgICBuID0gQ0hJTEQobiwgNCk7Ci0gICAgZWxzZQorICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBBU1lOQykgeworICAgICAgICBpc19hc3luYyA9IDE7CisgICAgfQorICAgIGlmIChOQ0gobikgPT0gKDUgKyBpc19hc3luYykpIHsKKyAgICAgICAgbiA9IENISUxEKG4sIDQgKyBpc19hc3luYyk7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICByZXR1cm4gbl9mb3JzOworICAgIH0KICAgY291bnRfY29tcF9pdGVyOgogICAgIFJFUShuLCBjb21wX2l0ZXIpOwogICAgIG4gPSBDSElMRChuLCAwKTsKQEAgLTE3NTcsMTQgKzE4NDQsMTkgQEAKICAgICAgICAgYXNkbF9zZXEgKnQ7CiAgICAgICAgIGV4cHJfdHkgZXhwcmVzc2lvbiwgZmlyc3Q7CiAgICAgICAgIG5vZGUgKmZvcl9jaDsKKyAgICAgICAgaW50IGlzX2FzeW5jID0gMDsKIAogICAgICAgICBSRVEobiwgY29tcF9mb3IpOwogCi0gICAgICAgIGZvcl9jaCA9IENISUxEKG4sIDEpOworICAgICAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gQVNZTkMpIHsKKyAgICAgICAgICAgIGlzX2FzeW5jID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcl9jaCA9IENISUxEKG4sIDEgKyBpc19hc3luYyk7CiAgICAgICAgIHQgPSBhc3RfZm9yX2V4cHJsaXN0KGMsIGZvcl9jaCwgU3RvcmUpOwogICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAzKSk7CisgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgMyArIGlzX2FzeW5jKSk7CiAgICAgICAgIGlmICghZXhwcmVzc2lvbikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNzcyLDE5ICsxODY0LDIwIEBACiAgICAgICAgICAgICh4IGZvciB4LCBpbiAuLi4pIGhhcyAxIGVsZW1lbnQgaW4gdCwgYnV0IHN0aWxsIHJlcXVpcmVzIGEgVHVwbGUuICovCiAgICAgICAgIGZpcnN0ID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKHQsIDApOwogICAgICAgICBpZiAoTkNIKGZvcl9jaCkgPT0gMSkKLSAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKGZpcnN0LCBleHByZXNzaW9uLCBOVUxMLCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKGZpcnN0LCBleHByZXNzaW9uLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYXN5bmMsIGMtPmNfYXJlbmEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihUdXBsZSh0LCBTdG9yZSwgZmlyc3QtPmxpbmVubywgZmlyc3QtPmNvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiwgTlVMTCwgYy0+Y19hcmVuYSk7CisgICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihUdXBsZSh0LCBTdG9yZSwgZmlyc3QtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LT5jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24sIE5VTEwsIGlzX2FzeW5jLCBjLT5jX2FyZW5hKTsKICAgICAgICAgaWYgKCFjb21wKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgaWYgKE5DSChuKSA9PSA1KSB7CisgICAgICAgIGlmIChOQ0gobikgPT0gKDUgKyBpc19hc3luYykpIHsKICAgICAgICAgICAgIGludCBqLCBuX2lmczsKICAgICAgICAgICAgIGFzZGxfc2VxICppZnM7CiAKLSAgICAgICAgICAgIG4gPSBDSElMRChuLCA0KTsKKyAgICAgICAgICAgIG4gPSBDSElMRChuLCA0ICsgaXNfYXN5bmMpOwogICAgICAgICAgICAgbl9pZnMgPSBjb3VudF9jb21wX2lmcyhjLCBuKTsKICAgICAgICAgICAgIGlmIChuX2lmcyA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE5OTMsNyArMjA4Niw2IEBACiAgICAgICAgfCAnLi4uJyB8ICdOb25lJyB8ICdUcnVlJyB8ICdGYWxzZScKICAgICAqLwogICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgMCk7Ci0gICAgaW50IGJ5dGVzbW9kZSA9IDA7CiAKICAgICBzd2l0Y2ggKFRZUEUoY2gpKSB7CiAgICAgY2FzZSBOQU1FOiB7CkBAIC0yMDE1LDcgKzIxMDcsNyBAQAogICAgICAgICByZXR1cm4gTmFtZShuYW1lLCBMb2FkLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7Ci0gICAgICAgIFB5T2JqZWN0ICpzdHIgPSBwYXJzZXN0cnBsdXMoYywgbiwgJmJ5dGVzbW9kZSk7CisgICAgICAgIGV4cHJfdHkgc3RyID0gcGFyc2VzdHJwbHVzKGMsIG4pOwogICAgICAgICBpZiAoIXN0cikgewogICAgICAgICAgICAgY29uc3QgY2hhciAqZXJydHlwZSA9IE5VTEw7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19Vbmljb2RlRXJyb3IpKQpAQCAtMjAzMiw2ICsyMTI0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiKCVzKSAlcyIsIGVycnR5cGUsIHMpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIoJXMpIHVua25vd24gZXJyb3IiLCBlcnJ0eXBlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sIGJ1Zik7CkBAIC0yMDQxLDE0ICsyMTM0LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHN0cikgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChieXRlc21vZGUpCi0gICAgICAgICAgICByZXR1cm4gQnl0ZXMoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBTdHIoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIFB5T2JqZWN0ICpweW51bSA9IHBhcnNlbnVtYmVyKGMsIFNUUihjaCkpOwpAQCAtMjgwNSw4ICsyODkxLDkgQEAKIGFzdF9mb3JfZXhwcl9zdG10KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgUkVRKG4sIGV4cHJfc3RtdCk7Ci0gICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkKLSAgICAgICAgICAgICAgICB8ICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3QpKSopCisgICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGFubmFzc2lnbiB8IGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorICAgICAgIGFubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogICAgICAgIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnIHRlc3R8c3Rhcl9leHByKSogWycsJ10KICAgICAgICBhdWdhc3NpZ246ICcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JwogICAgICAgICAgICAgICAgIHwgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScKQEAgLTI4NTgsNiArMjk0NSw3NiBAQAogCiAgICAgICAgIHJldHVybiBBdWdBc3NpZ24oZXhwcjEsIG5ld29wZXJhdG9yLCBleHByMiwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIH0KKyAgICBlbHNlIGlmIChUWVBFKENISUxEKG4sIDEpKSA9PSBhbm5hc3NpZ24pIHsKKyAgICAgICAgZXhwcl90eSBleHByMSwgZXhwcjIsIGV4cHIzOworICAgICAgICBub2RlICpjaCA9IENISUxEKG4sIDApOworICAgICAgICBub2RlICpkZWVwLCAqYW5uID0gQ0hJTEQobiwgMSk7CisgICAgICAgIGludCBzaW1wbGUgPSAxOworCisgICAgICAgIC8qIHdlIGtlZXAgdHJhY2sgb2YgcGFyZW5zIHRvIHF1YWxpZnkgKHgpIGFzIGV4cHJlc3Npb24gbm90IG5hbWUgKi8KKyAgICAgICAgZGVlcCA9IGNoOworICAgICAgICB3aGlsZSAoTkNIKGRlZXApID09IDEpIHsKKyAgICAgICAgICAgIGRlZXAgPSBDSElMRChkZWVwLCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoTkNIKGRlZXApID4gMCAmJiBUWVBFKENISUxEKGRlZXAsIDApKSA9PSBMUEFSKSB7CisgICAgICAgICAgICBzaW1wbGUgPSAwOworICAgICAgICB9CisgICAgICAgIGV4cHIxID0gYXN0X2Zvcl90ZXN0bGlzdChjLCBjaCk7CisgICAgICAgIGlmICghZXhwcjEpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoZXhwcjEtPmtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgTmFtZV9raW5kOgorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBleHByMS0+di5OYW1lLmlkLCBuLCAwKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuTmFtZS5jdHggPSBTdG9yZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGV4cHIxLT52LkF0dHJpYnV0ZS5hdHRyLCBuLCAxKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuQXR0cmlidXRlLmN0eCA9IFN0b3JlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKKyAgICAgICAgICAgICAgICBleHByMS0+di5TdWJzY3JpcHQuY3R4ID0gU3RvcmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIExpc3Rfa2luZDoKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IHNpbmdsZSB0YXJnZXQgKG5vdCBsaXN0KSBjYW4gYmUgYW5ub3RhdGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBjYXNlIFR1cGxlX2tpbmQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBzaW5nbGUgdGFyZ2V0IChub3QgdHVwbGUpIGNhbiBiZSBhbm5vdGF0ZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCB0YXJnZXQgZm9yIGFubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChleHByMS0+a2luZCAhPSBOYW1lX2tpbmQpIHsKKyAgICAgICAgICAgIHNpbXBsZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgY2ggPSBDSElMRChhbm4sIDEpOworICAgICAgICBleHByMiA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CisgICAgICAgIGlmICghZXhwcjIpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChOQ0goYW5uKSA9PSAyKSB7CisgICAgICAgICAgICByZXR1cm4gQW5uQXNzaWduKGV4cHIxLCBleHByMiwgTlVMTCwgc2ltcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaCA9IENISUxEKGFubiwgMyk7CisgICAgICAgICAgICBleHByMyA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CisgICAgICAgICAgICBpZiAoIWV4cHIzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gQW5uQXNzaWduKGV4cHIxLCBleHByMiwgZXhwcjMsIHNpbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICB9CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBpbnQgaTsKICAgICAgICAgYXNkbF9zZXEgKnRhcmdldHM7CkBAIC0yOTkyLDkgKzMxNDksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGZsb3dfc3RtdDogJWQiLCBUWVBFKGNoKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJ1bmhhbmRsZWQgZmxvdyBzdGF0ZW1lbnQiKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGFsaWFzX3R5CkBAIC0zMjA4LDE0ICszMzYyLDE0IEBACiAgICAgICAgICAgICBhbGlhc190eSBpbXBvcnRfYWxpYXMgPSBhbGlhc19mb3JfaW1wb3J0X25hbWUoYywgbiwgMSk7CiAgICAgICAgICAgICBpZiAoIWltcG9ydF9hbGlhcykKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgMCwgaW1wb3J0X2FsaWFzKTsKKyAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCAwLCBpbXBvcnRfYWxpYXMpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSArPSAyKSB7CiAgICAgICAgICAgICAgICAgYWxpYXNfdHkgaW1wb3J0X2FsaWFzID0gYWxpYXNfZm9yX2ltcG9ydF9uYW1lKGMsIENISUxEKG4sIGkpLCAxKTsKICAgICAgICAgICAgICAgICBpZiAoIWltcG9ydF9hbGlhcykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCBpIC8gMiwgaW1wb3J0X2FsaWFzKTsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgaSAvIDIsIGltcG9ydF9hbGlhcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1vZCAhPSBOVUxMKQpAQCAtMzg4MSw3ICs0MDM1LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBhcnNlbnVtYmVyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMpCitwYXJzZW51bWJlcl9yYXcoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcykKIHsKICAgICBjb25zdCBjaGFyICplbmQ7CiAgICAgbG9uZyB4OwpAQCAtMzkyNCw2ICs0MDc4LDMxIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitwYXJzZW51bWJlcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzKQoreworICAgIGNoYXIgKmR1cCwgKmVuZDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGFzc2VydChzICE9IE5VTEwpOworCisgICAgaWYgKHN0cmNocihzLCAnXycpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlbnVtYmVyX3JhdyhjLCBzKTsKKyAgICB9CisgICAgLyogQ3JlYXRlIGEgZHVwbGljYXRlIHdpdGhvdXQgdW5kZXJzY29yZXMuICovCisgICAgZHVwID0gUHlNZW1fTWFsbG9jKHN0cmxlbihzKSArIDEpOworICAgIGVuZCA9IGR1cDsKKyAgICBmb3IgKDsgKnM7IHMrKykgeworICAgICAgICBpZiAoKnMgIT0gJ18nKSB7CisgICAgICAgICAgICAqZW5kKysgPSAqczsKKyAgICAgICAgfQorICAgIH0KKyAgICAqZW5kID0gJ1wwJzsKKyAgICByZXMgPSBwYXJzZW51bWJlcl9yYXcoYywgZHVwKTsKKyAgICBQeU1lbV9GcmVlKGR1cCk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRlY29kZV91dGY4KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKipzUHRyLCBjb25zdCBjaGFyICplbmQpCiB7CiAgICAgY29uc3QgY2hhciAqcywgKnQ7CkBAIC0zOTM1LDg0ICs0MTE0LDg2MiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGVjb2RlX3VuaWNvZGUoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgaW50IHJhd21vZGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKQorZGVjb2RlX3VuaWNvZGVfd2l0aF9lc2NhcGVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiB7CiAgICAgUHlPYmplY3QgKnYsICp1OwogICAgIGNoYXIgKmJ1ZjsKICAgICBjaGFyICpwOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKIAotICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIHUgPSBOVUxMOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgICAgIGlmIChsZW4gPiBQWV9TSVpFX01BWCAvIDYpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogIsOkIiAoMiBieXRlcykgbWF5IGJlY29tZSAiXFUwMDAwMDBFNCIgKDEwIGJ5dGVzKSwgb3IgMTo1Ci0gICAgICAgICAgICJcw6QiICgzIGJ5dGVzKSBtYXkgYmVjb21lICJcdTAwNWNcVTAwMDAwMEU0IiAoMTYgYnl0ZXMpLCBvciB+MTo2ICovCi0gICAgICAgIHUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuICogNik7Ci0gICAgICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodSk7Ci0gICAgICAgIGVuZCA9IHMgKyBsZW47Ci0gICAgICAgIHdoaWxlIChzIDwgZW5kKSB7Ci0gICAgICAgICAgICBpZiAoKnMgPT0gJ1xcJykgewotICAgICAgICAgICAgICAgICpwKysgPSAqcysrOwotICAgICAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyY3B5KHAsICJ1MDA1YyIpOwotICAgICAgICAgICAgICAgICAgICBwICs9IDU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCpzICYgMHg4MCkgeyAvKiBYWFggaW5lZmZpY2llbnQgKi8KLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdzsKLSAgICAgICAgICAgICAgICBpbnQga2luZDsKLSAgICAgICAgICAgICAgICB2b2lkICpkYXRhOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBpOwotICAgICAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kKTsKLSAgICAgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh3KTsKLSAgICAgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodyk7Ci0gICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodyk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocCwgIlxcVSUwOHgiLCBjaHIpOwotICAgICAgICAgICAgICAgICAgICBwICs9IDEwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBTaG91bGQgYmUgaW1wb3NzaWJsZSB0byBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgIGFzc2VydChwIC0gYnVmIDw9IFB5X1NJWkUodSkpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICpzKys7CisgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICBpZiAobGVuID4gU0laRV9NQVggLyA2KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiAiw6QiICgyIGJ5dGVzKSBtYXkgYmVjb21lICJcVTAwMDAwMEU0IiAoMTAgYnl0ZXMpLCBvciAxOjUKKyAgICAgICAiXMOkIiAoMyBieXRlcykgbWF5IGJlY29tZSAiXHUwMDVjXFUwMDAwMDBFNCIgKDE2IGJ5dGVzKSwgb3IgfjE6NiAqLworICAgIHUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuICogNik7CisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodSk7CisgICAgZW5kID0gcyArIGxlbjsKKyAgICB3aGlsZSAocyA8IGVuZCkgeworICAgICAgICBpZiAoKnMgPT0gJ1xcJykgeworICAgICAgICAgICAgKnArKyA9ICpzKys7CisgICAgICAgICAgICBpZiAoKnMgJiAweDgwKSB7CisgICAgICAgICAgICAgICAgc3RyY3B5KHAsICJ1MDA1YyIpOworICAgICAgICAgICAgICAgIHAgKz0gNTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBsZW4gPSBwIC0gYnVmOwotICAgICAgICBzID0gYnVmOworICAgICAgICBpZiAoKnMgJiAweDgwKSB7IC8qIFhYWCBpbmVmZmljaWVudCAqLworICAgICAgICAgICAgUHlPYmplY3QgKnc7CisgICAgICAgICAgICBpbnQga2luZDsKKyAgICAgICAgICAgIHZvaWQgKmRhdGE7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKKyAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kKTsKKyAgICAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodyk7CisgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodyk7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh3KTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgc3ByaW50ZihwLCAiXFxVJTA4eCIsIGNocik7CisgICAgICAgICAgICAgICAgcCArPSAxMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIG92ZXJmbG93ICovCisgICAgICAgICAgICBhc3NlcnQocCAtIGJ1ZiA8PSBQeV9TSVpFKHUpKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpwKysgPSAqcysrOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChyYXdtb2RlKQotICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUocywgbGVuLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShzLCBsZW4sIE5VTEwpOworICAgIGxlbiA9IHAgLSBidWY7CisgICAgcyA9IGJ1ZjsKKworICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShzLCBsZW4sIE5VTEwpOwogICAgIFB5X1hERUNSRUYodSk7CiAgICAgcmV0dXJuIHY7CiB9CiAKLS8qIHMgaXMgYSBQeXRob24gc3RyaW5nIGxpdGVyYWwsIGluY2x1ZGluZyB0aGUgYnJhY2tldGluZyBxdW90ZSBjaGFyYWN0ZXJzLAotICogYW5kIHIgJi9vciBiIHByZWZpeGVzIChpZiBhbnkpLCBhbmQgZW1iZWRkZWQgZXNjYXBlIHNlcXVlbmNlcyAoaWYgYW55KS4KLSAqIHBhcnNlc3RyIHBhcnNlcyBpdCwgYW5kIHJldHVybnMgdGhlIGRlY29kZWQgUHl0aG9uIHN0cmluZyBvYmplY3QuCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1wYXJzZXN0cihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgKmJ5dGVzbW9kZSkKKy8qIENvbXBpbGUgdGhpcyBleHByZXNzaW9uIGluIHRvIGFuIGV4cHJfdHkuICBBZGQgcGFyZW5zIGFyb3VuZCB0aGUKKyAgIGV4cHJlc3Npb24sIGluIG9yZGVyIHRvIGFsbG93IGxlYWRpbmcgc3BhY2VzIGluIHRoZSBleHByZXNzaW9uLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfY29tcGlsZV9leHByKGNvbnN0IGNoYXIgKmV4cHJfc3RhcnQsIGNvbnN0IGNoYXIgKmV4cHJfZW5kLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKKworeworICAgIGludCBhbGxfd2hpdGVzcGFjZSA9IDE7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7CisgICAgbW9kX3R5IG1vZDsKKyAgICBjaGFyICpzdHI7CisgICAgUHlPYmplY3QgKm87CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KGV4cHJfZW5kID49IGV4cHJfc3RhcnQpOworICAgIGFzc2VydCgqKGV4cHJfc3RhcnQtMSkgPT0gJ3snKTsKKyAgICBhc3NlcnQoKmV4cHJfZW5kID09ICd9JyB8fCAqZXhwcl9lbmQgPT0gJyEnIHx8ICpleHByX2VuZCA9PSAnOicpOworCisgICAgLyogV2Uga25vdyB0aGVyZSBhcmUgbm8gZXNjYXBlcyBoZXJlLCBiZWNhdXNlIGJhY2tzbGFzaGVzIGFyZSBub3QgYWxsb3dlZCwKKyAgICAgICBhbmQgd2Uga25vdyBpdCdzIHV0Zi04IGVuY29kZWQgKHBlciBQRVAgMjYzKS4gIEJ1dCwgaW4gb3JkZXIgdG8gY2hlY2sKKyAgICAgICB0aGF0IGVhY2ggY2hhciBpcyBub3Qgd2hpdGVzcGFjZSwgd2UgbmVlZCB0byBkZWNvZGUgaXQgdG8gdW5pY29kZS4KKyAgICAgICBXaGljaCBpcyB1bmZvcnR1bmF0ZSwgYnV0IHN1Y2ggaXMgbGlmZS4gKi8KKworICAgIC8qIElmIHRoZSBzdWJzdHJpbmcgaXMgYWxsIHdoaXRlc3BhY2UsIGl0J3MgYW4gZXJyb3IuICBXZSBuZWVkIHRvIGNhdGNoCisgICAgICAgdGhpcyBoZXJlLCBhbmQgbm90IHdoZW4gd2UgY2FsbCBQeVBhcnNlcl9BU1RGcm9tU3RyaW5nLCBiZWNhdXNlIHR1cm5pbmcKKyAgICAgICB0aGUgZXhwcmVzc2lvbiAnJyBpbiB0byAnKCknIHdvdWxkIGdvIGZyb20gYmVpbmcgaW52YWxpZCB0byB2YWxpZC4gKi8KKyAgICAvKiBOb3RlIHRoYXQgdGhpcyBjb2RlIHNheXMgYW4gZW1wdHkgc3RyaW5nIGlzIGFsbCB3aGl0ZXNwYWNlLiAgVGhhdCdzCisgICAgICAgaW1wb3J0YW50LiAgVGhlcmUncyBhIHRlc3QgZm9yIGl0OiBmJ3t9Jy4gKi8KKyAgICBvID0gUHlVbmljb2RlX0RlY29kZVVURjgoZXhwcl9zdGFydCwgZXhwcl9lbmQtZXhwcl9zdGFydCwgTlVMTCk7CisgICAgaWYgKG8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobyk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG8pOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShvKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKSB7CisgICAgICAgICAgICBhbGxfd2hpdGVzcGFjZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9ERUNSRUYobyk7CisgICAgaWYgKGFsbF93aGl0ZXNwYWNlKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGVtcHR5IGV4cHJlc3Npb24gbm90IGFsbG93ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogUmV1c2UgbGVuIHRvIGJlIHRoZSBsZW5ndGggb2YgdGhlIHV0Zi04IGlucHV0IHN0cmluZy4gKi8KKyAgICBsZW4gPSBleHByX2VuZCAtIGV4cHJfc3RhcnQ7CisgICAgLyogQWxsb2NhdGUgMyBleHRyYSBieXRlczogb3BlbiBwYXJlbiwgY2xvc2UgcGFyZW4sIG51bGwgYnl0ZS4gKi8KKyAgICBzdHIgPSBQeU1lbV9SYXdNYWxsb2MobGVuICsgMyk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0clswXSA9ICcoJzsKKyAgICBtZW1jcHkoc3RyKzEsIGV4cHJfc3RhcnQsIGxlbik7CisgICAgc3RyW2xlbisxXSA9ICcpJzsKKyAgICBzdHJbbGVuKzJdID0gMDsKKworICAgIGNmLmNmX2ZsYWdzID0gUHlDRl9PTkxZX0FTVDsKKyAgICBtb2QgPSBQeVBhcnNlcl9BU1RGcm9tU3RyaW5nKHN0ciwgIjxmc3RyaW5nPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ldmFsX2lucHV0LCAmY2YsIGMtPmNfYXJlbmEpOworICAgIFB5TWVtX1Jhd0ZyZWUoc3RyKTsKKyAgICBpZiAoIW1vZCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIG1vZC0+di5FeHByZXNzaW9uLmJvZHk7Cit9CisKKy8qIFJldHVybiAtMSBvbiBlcnJvci4KKworICAgUmV0dXJuIDAgaWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsaXRlcmFsLgorCisgICBSZXR1cm4gMSBpZiB3ZSBoYXZlbid0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbGl0ZXJhbCwgYnV0IHdlIHdhbnQKKyAgIHRoZSBjYWxsZXIgdG8gcHJvY2VzcyB0aGUgbGl0ZXJhbCB1cCB0byB0aGlzIHBvaW50LiBVc2VkIGZvcgorICAgZG91YmxlZCBicmFjZXMuCisqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2xpdGVyYWwoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipsaXRlcmFsLCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIC8qIEdldCBhbnkgbGl0ZXJhbCBzdHJpbmcuIEl0IGVuZHMgd2hlbiB3ZSBoaXQgYW4gdW4tZG91YmxlZCBsZWZ0CisgICAgICAgYnJhY2UgKHdoaWNoIGlzbid0IHBhcnQgb2YgYSB1bmljb2RlIG5hbWUgZXNjYXBlIHN1Y2ggYXMKKyAgICAgICAiXE57RVVMRVIgQ09OU1RBTlR9IiksIG9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gKi8KKworICAgIGNvbnN0IGNoYXIgKmxpdGVyYWxfc3RhcnQgPSAqc3RyOworICAgIGNvbnN0IGNoYXIgKmxpdGVyYWxfZW5kOworICAgIGludCBpbl9uYW1lZF9lc2NhcGUgPSAwOworICAgIGludCByZXN1bHQgPSAwOworCisgICAgYXNzZXJ0KCpsaXRlcmFsID09IE5VTEwpOworICAgIGZvciAoOyAqc3RyIDwgZW5kOyAoKnN0cikrKykgeworICAgICAgICBjaGFyIGNoID0gKipzdHI7CisgICAgICAgIGlmICghaW5fbmFtZWRfZXNjYXBlICYmIGNoID09ICd7JyAmJiAoKnN0ciktbGl0ZXJhbF9zdGFydCA+PSAyICYmCisgICAgICAgICAgICAqKCpzdHItMikgPT0gJ1xcJyAmJiAqKCpzdHItMSkgPT0gJ04nKSB7CisgICAgICAgICAgICBpbl9uYW1lZF9lc2NhcGUgPSAxOworICAgICAgICB9IGVsc2UgaWYgKGluX25hbWVkX2VzY2FwZSAmJiBjaCA9PSAnfScpIHsKKyAgICAgICAgICAgIGluX25hbWVkX2VzY2FwZSA9IDA7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ3snIHx8IGNoID09ICd9JykgeworICAgICAgICAgICAgLyogQ2hlY2sgZm9yIGRvdWJsZWQgYnJhY2VzLCBidXQgb25seSBhdCB0aGUgdG9wIGxldmVsLiBJZgorICAgICAgICAgICAgICAgd2UgY2hlY2tlZCBhdCBldmVyeSBsZXZlbCwgdGhlbiBmJ3swOnszfX0nIHdvdWxkIGZhaWwKKyAgICAgICAgICAgICAgIHdpdGggdGhlIHR3byBjbG9zaW5nIGJyYWNlcy4gKi8KKyAgICAgICAgICAgIGlmIChyZWN1cnNlX2x2bCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKCpzdHIrMSA8IGVuZCAmJiAqKCpzdHIrMSkgPT0gY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogV2UncmUgZ29pbmcgdG8gdGVsbCB0aGUgY2FsbGVyIHRoYXQgdGhlIGxpdGVyYWwgZW5kcworICAgICAgICAgICAgICAgICAgICAgICBoZXJlLCBidXQgdGhhdCB0aGV5IHNob3VsZCBjb250aW51ZSBzY2FubmluZy4gQnV0IGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgc2tpcCBvdmVyIHRoZSBzZWNvbmQgYnJhY2Ugd2hlbiB3ZSByZXN1bWUgc2Nhbm5pbmcuICovCisgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfZW5kID0gKnN0cisxOworICAgICAgICAgICAgICAgICAgICAqc3RyICs9IDI7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBXaGVyZSBhIHNpbmdsZSAneycgaXMgdGhlIHN0YXJ0IG9mIGEgbmV3IGV4cHJlc3Npb24sIGEKKyAgICAgICAgICAgICAgICAgICBzaW5nbGUgJ30nIGlzIG5vdCBhbGxvd2VkLiAqLworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnfScpIHsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogV2UncmUgZWl0aGVyIGF0IGEgJ3snLCB3aGljaCBtZWFucyB3ZSdyZSBzdGFydGluZyBhbm90aGVyCisgICAgICAgICAgICAgICBleHByZXNzaW9uOyBvciBhICd9Jywgd2hpY2ggbWVhbnMgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGlzCisgICAgICAgICAgICAgICBmLXN0cmluZyAoZm9yIGEgbmVzdGVkIGZvcm1hdF9zcGVjKS4gKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGxpdGVyYWxfZW5kID0gKnN0cjsKKyAgICBhc3NlcnQoKnN0ciA8PSBlbmQpOworICAgIGFzc2VydCgqc3RyID09IGVuZCB8fCAqKnN0ciA9PSAneycgfHwgKipzdHIgPT0gJ30nKTsKK2RvbmU6CisgICAgaWYgKGxpdGVyYWxfc3RhcnQgIT0gbGl0ZXJhbF9lbmQpIHsKKyAgICAgICAgaWYgKHJhdykKKyAgICAgICAgICAgICpsaXRlcmFsID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChsaXRlcmFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfZW5kLWxpdGVyYWxfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpsaXRlcmFsID0gZGVjb2RlX3VuaWNvZGVfd2l0aF9lc2NhcGVzKGMsIGxpdGVyYWxfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2VuZC1saXRlcmFsX3N0YXJ0KTsKKyAgICAgICAgaWYgKCEqbGl0ZXJhbCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBiZWNhdXNlIHBhcnNpbmcgaXMgcmVjdXJzaXZlLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfcGFyc2UoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pOworCisvKiBQYXJzZSB0aGUgZi1zdHJpbmcgYXQgKnN0ciwgZW5kaW5nIGF0IGVuZC4gIFdlIGtub3cgKnN0ciBzdGFydHMgYW4KKyAgIGV4cHJlc3Npb24gKHNvIGl0IG11c3QgYmUgYSAneycpLiBSZXR1cm5zIHRoZSBGb3JtYXR0ZWRWYWx1ZSBub2RlLAorICAgd2hpY2ggaW5jbHVkZXMgdGhlIGV4cHJlc3Npb24sIGNvbnZlcnNpb24gY2hhcmFjdGVyLCBhbmQKKyAgIGZvcm1hdF9zcGVjIGV4cHJlc3Npb24uCisKKyAgIE5vdGUgdGhhdCBJIGRvbid0IGRvIGEgcGVyZmVjdCBqb2IgaGVyZTogSSBkb24ndCBtYWtlIHN1cmUgdGhhdCBhCisgICBjbG9zaW5nIGJyYWNlIGRvZXNuJ3QgbWF0Y2ggYW4gb3BlbmluZyBwYXJlbiwgZm9yIGV4YW1wbGUuIEl0CisgICBkb2Vzbid0IG5lZWQgdG8gZXJyb3Igb24gYWxsIGludmFsaWQgZXhwcmVzc2lvbnMsIGp1c3QgY29ycmVjdGx5CisgICBmaW5kIHRoZSBlbmQgb2YgYWxsIHZhbGlkIG9uZXMuIEFueSBlcnJvcnMgaW5zaWRlIHRoZSBleHByZXNzaW9uCisgICB3aWxsIGJlIGNhdWdodCB3aGVuIHdlIHBhcnNlIGl0IGxhdGVyLiAqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2V4cHIoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICBleHByX3R5ICpleHByZXNzaW9uLCBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIC8qIFJldHVybiAtMSBvbiBlcnJvciwgZWxzZSAwLiAqLworCisgICAgY29uc3QgY2hhciAqZXhwcl9zdGFydDsKKyAgICBjb25zdCBjaGFyICpleHByX2VuZDsKKyAgICBleHByX3R5IHNpbXBsZV9leHByZXNzaW9uOworICAgIGV4cHJfdHkgZm9ybWF0X3NwZWMgPSBOVUxMOyAvKiBPcHRpb25hbCBmb3JtYXQgc3BlY2lmaWVyLiAqLworICAgIGludCBjb252ZXJzaW9uID0gLTE7IC8qIFRoZSBjb252ZXJzaW9uIGNoYXIuIC0xIGlmIG5vdCBzcGVjaWZpZWQuICovCisKKyAgICAvKiAwIGlmIHdlJ3JlIG5vdCBpbiBhIHN0cmluZywgZWxzZSB0aGUgcXVvdGUgY2hhciB3ZSdyZSB0cnlpbmcgdG8KKyAgICAgICBtYXRjaCAoc2luZ2xlIG9yIGRvdWJsZSBxdW90ZSkuICovCisgICAgY2hhciBxdW90ZV9jaGFyID0gMDsKKworICAgIC8qIElmIHdlJ3JlIGluc2lkZSBhIHN0cmluZywgMT1ub3JtYWwsIDM9dHJpcGxlLXF1b3RlZC4gKi8KKyAgICBpbnQgc3RyaW5nX3R5cGUgPSAwOworCisgICAgLyogS2VlcCB0cmFjayBvZiBuZXN0aW5nIGxldmVsIGZvciBicmFjZXMvcGFyZW5zL2JyYWNrZXRzIGluCisgICAgICAgZXhwcmVzc2lvbnMuICovCisgICAgUHlfc3NpemVfdCBuZXN0ZWRfZGVwdGggPSAwOworCisgICAgLyogQ2FuIG9ubHkgbmVzdCBvbmUgbGV2ZWwgZGVlcC4gKi8KKyAgICBpZiAocmVjdXJzZV9sdmwgPj0gMikgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBleHByZXNzaW9ucyBuZXN0ZWQgdG9vIGRlZXBseSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogVGhlIGZpcnN0IGNoYXIgbXVzdCBiZSBhIGxlZnQgYnJhY2UsIG9yIHdlIHdvdWxkbid0IGhhdmUgZ290dGVuCisgICAgICAgaGVyZS4gU2tpcCBvdmVyIGl0LiAqLworICAgIGFzc2VydCgqKnN0ciA9PSAneycpOworICAgICpzdHIgKz0gMTsKKworICAgIGV4cHJfc3RhcnQgPSAqc3RyOworICAgIGZvciAoOyAqc3RyIDwgZW5kOyAoKnN0cikrKykgeworICAgICAgICBjaGFyIGNoOworCisgICAgICAgIC8qIExvb3AgaW52YXJpYW50cy4gKi8KKyAgICAgICAgYXNzZXJ0KG5lc3RlZF9kZXB0aCA+PSAwKTsKKyAgICAgICAgYXNzZXJ0KCpzdHIgPj0gZXhwcl9zdGFydCAmJiAqc3RyIDwgZW5kKTsKKyAgICAgICAgaWYgKHF1b3RlX2NoYXIpCisgICAgICAgICAgICBhc3NlcnQoc3RyaW5nX3R5cGUgPT0gMSB8fCBzdHJpbmdfdHlwZSA9PSAzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KHN0cmluZ190eXBlID09IDApOworCisgICAgICAgIGNoID0gKipzdHI7CisgICAgICAgIC8qIE5vd2hlcmUgaW5zaWRlIGFuIGV4cHJlc3Npb24gaXMgYSBiYWNrc2xhc2ggYWxsb3dlZC4gKi8KKyAgICAgICAgaWYgKGNoID09ICdcXCcpIHsKKyAgICAgICAgICAgIC8qIEVycm9yOiBjYW4ndCBpbmNsdWRlIGEgYmFja3NsYXNoIGNoYXJhY3RlciwgaW5zaWRlCisgICAgICAgICAgICAgICBwYXJlbnMgb3Igc3RyaW5ncyBvciBub3QuICovCisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nIGV4cHJlc3Npb24gcGFydCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBpbmNsdWRlIGEgYmFja3NsYXNoIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHF1b3RlX2NoYXIpIHsKKyAgICAgICAgICAgIC8qIFdlJ3JlIGluc2lkZSBhIHN0cmluZy4gU2VlIGlmIHdlJ3JlIGF0IHRoZSBlbmQuICovCisgICAgICAgICAgICAvKiBUaGlzIGNvZGUgbmVlZHMgdG8gaW1wbGVtZW50IHRoZSBzYW1lIG5vbi1lcnJvciBsb2dpYworICAgICAgICAgICAgICAgYXMgdG9rX2dldCBmcm9tIHRva2VuaXplci5jLCBhdCB0aGUgbGV0dGVyX3F1b3RlCisgICAgICAgICAgICAgICBsYWJlbC4gVG8gYWN0dWFsbHkgc2hhcmUgdGhhdCBjb2RlIHdvdWxkIGJlIGEKKyAgICAgICAgICAgICAgIG5pZ2h0bWFyZS4gQnV0LCBpdCdzIHVubGlrZWx5IHRvIGNoYW5nZSBhbmQgaXMgc21hbGwsCisgICAgICAgICAgICAgICBzbyBkdXBsaWNhdGUgaXQgaGVyZS4gTm90ZSB3ZSBkb24ndCBuZWVkIHRvIGNhdGNoIGFsbAorICAgICAgICAgICAgICAgb2YgdGhlIGVycm9ycywgc2luY2UgdGhleSdsbCBiZSBjYXVnaHQgd2hlbiBwYXJzaW5nIHRoZQorICAgICAgICAgICAgICAgZXhwcmVzc2lvbi4gV2UganVzdCBuZWVkIHRvIG1hdGNoIHRoZSBub24tZXJyb3IKKyAgICAgICAgICAgICAgIGNhc2VzLiBUaHVzIHdlIGNhbiBpZ25vcmUgXG4gaW4gc2luZ2xlLXF1b3RlZCBzdHJpbmdzLAorICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUuIE9yIG5vbi10ZXJtaW5hdGVkIHN0cmluZ3MuICovCisgICAgICAgICAgICBpZiAoY2ggPT0gcXVvdGVfY2hhcikgeworICAgICAgICAgICAgICAgIC8qIERvZXMgdGhpcyBtYXRjaCB0aGUgc3RyaW5nX3R5cGUgKHNpbmdsZSBvciB0cmlwbGUKKyAgICAgICAgICAgICAgICAgICBxdW90ZWQpPyAqLworICAgICAgICAgICAgICAgIGlmIChzdHJpbmdfdHlwZSA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgqc3RyKzIgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoICYmICooKnN0cisyKSA9PSBjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogV2UncmUgYXQgdGhlIGVuZCBvZiBhIHRyaXBsZSBxdW90ZWQgc3RyaW5nLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciArPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfY2hhciA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGF0IHRoZSBlbmQgb2YgYSBub3JtYWwgc3RyaW5nLiAqLworICAgICAgICAgICAgICAgICAgICBxdW90ZV9jaGFyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAwOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1wnJyB8fCBjaCA9PSAnIicpIHsKKyAgICAgICAgICAgIC8qIElzIHRoaXMgYSB0cmlwbGUgcXVvdGVkIHN0cmluZz8gKi8KKyAgICAgICAgICAgIGlmICgqc3RyKzIgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoICYmICooKnN0cisyKSA9PSBjaCkgeworICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMzsKKyAgICAgICAgICAgICAgICAqc3RyICs9IDI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIFN0YXJ0IG9mIGEgbm9ybWFsIHN0cmluZy4gKi8KKyAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBTdGFydCBsb29raW5nIGZvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovCisgICAgICAgICAgICBxdW90ZV9jaGFyID0gY2g7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1snIHx8IGNoID09ICd7JyB8fCBjaCA9PSAnKCcpIHsKKyAgICAgICAgICAgIG5lc3RlZF9kZXB0aCsrOworICAgICAgICB9IGVsc2UgaWYgKG5lc3RlZF9kZXB0aCAhPSAwICYmCisgICAgICAgICAgICAgICAgICAgKGNoID09ICddJyB8fCBjaCA9PSAnfScgfHwgY2ggPT0gJyknKSkgeworICAgICAgICAgICAgbmVzdGVkX2RlcHRoLS07CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJyMnKSB7CisgICAgICAgICAgICAvKiBFcnJvcjogY2FuJ3QgaW5jbHVkZSBhIGNvbW1lbnQgY2hhcmFjdGVyLCBpbnNpZGUgcGFyZW5zCisgICAgICAgICAgICAgICBvciBub3QuICovCisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nIGV4cHJlc3Npb24gcGFydCBjYW5ub3QgaW5jbHVkZSAnIyciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXN0ZWRfZGVwdGggPT0gMCAmJgorICAgICAgICAgICAgICAgICAgIChjaCA9PSAnIScgfHwgY2ggPT0gJzonIHx8IGNoID09ICd9JykpIHsKKyAgICAgICAgICAgIC8qIEZpcnN0LCB0ZXN0IGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mICIhPSIuIFNpbmNlICc9JyBpcworICAgICAgICAgICAgICAgbm90IGFuIGFsbG93ZWQgY29udmVyc2lvbiBjaGFyYWN0ZXIsIG5vdGhpbmcgaXMgbG9zdCBpbgorICAgICAgICAgICAgICAgdGhpcyB0ZXN0LiAqLworICAgICAgICAgICAgaWYgKGNoID09ICchJyAmJiAqc3RyKzEgPCBlbmQgJiYgKigqc3RyKzEpID09ICc9JykgeworICAgICAgICAgICAgICAgIC8qIFRoaXMgaXNuJ3QgYSBjb252ZXJzaW9uIGNoYXJhY3RlciwganVzdCBjb250aW51ZS4gKi8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIE5vcm1hbCB3YXkgb3V0IG9mIHRoaXMgbG9vcC4gKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogSnVzdCBjb25zdW1lIHRoaXMgY2hhciBhbmQgbG9vcCBhcm91bmQuICovCisgICAgICAgIH0KKyAgICB9CisgICAgZXhwcl9lbmQgPSAqc3RyOworICAgIC8qIElmIHdlIGxlYXZlIHRoaXMgbG9vcCBpbiBhIHN0cmluZyBvciB3aXRoIG1pc21hdGNoZWQgcGFyZW5zLCB3ZQorICAgICAgIGRvbid0IGNhcmUuIFdlJ2xsIGdldCBhIHN5bnRheCBlcnJvciB3aGVuIGNvbXBpbGluZyB0aGUKKyAgICAgICBleHByZXNzaW9uLiBCdXQsIHdlIGNhbiBwcm9kdWNlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UsIHNvCisgICAgICAgbGV0J3MganVzdCBkbyB0aGF0LiovCisgICAgaWYgKHF1b3RlX2NoYXIpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChuZXN0ZWRfZGVwdGgpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogbWlzbWF0Y2hlZCAnKCcsICd7Jywgb3IgJ1snIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoKnN0ciA+PSBlbmQpCisgICAgICAgIGdvdG8gdW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOworCisgICAgLyogQ29tcGlsZSB0aGUgZXhwcmVzc2lvbiBhcyBzb29uIGFzIHBvc3NpYmxlLCBzbyB3ZSBzaG93IGVycm9ycworICAgICAgIHJlbGF0ZWQgdG8gdGhlIGV4cHJlc3Npb24gYmVmb3JlIGVycm9ycyByZWxhdGVkIHRvIHRoZQorICAgICAgIGNvbnZlcnNpb24gb3IgZm9ybWF0X3NwZWMuICovCisgICAgc2ltcGxlX2V4cHJlc3Npb24gPSBmc3RyaW5nX2NvbXBpbGVfZXhwcihleHByX3N0YXJ0LCBleHByX2VuZCwgYywgbik7CisgICAgaWYgKCFzaW1wbGVfZXhwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogQ2hlY2sgZm9yIGEgY29udmVyc2lvbiBjaGFyLCBpZiBwcmVzZW50LiAqLworICAgIGlmICgqKnN0ciA9PSAnIScpIHsKKyAgICAgICAgKnN0ciArPSAxOworICAgICAgICBpZiAoKnN0ciA+PSBlbmQpCisgICAgICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKworICAgICAgICBjb252ZXJzaW9uID0gKipzdHI7CisgICAgICAgICpzdHIgKz0gMTsKKworICAgICAgICAvKiBWYWxpZGF0ZSB0aGUgY29udmVyc2lvbi4gKi8KKyAgICAgICAgaWYgKCEoY29udmVyc2lvbiA9PSAncycgfHwgY29udmVyc2lvbiA9PSAncicKKyAgICAgICAgICAgICAgfHwgY29udmVyc2lvbiA9PSAnYScpKSB7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBpbnZhbGlkIGNvbnZlcnNpb24gY2hhcmFjdGVyOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICdzJywgJ3InLCBvciAnYSciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENoZWNrIGZvciB0aGUgZm9ybWF0IHNwZWMsIGlmIHByZXNlbnQuICovCisgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKyAgICBpZiAoKipzdHIgPT0gJzonKSB7CisgICAgICAgICpzdHIgKz0gMTsKKyAgICAgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAgICAgLyogUGFyc2UgdGhlIGZvcm1hdCBzcGVjLiAqLworICAgICAgICBmb3JtYXRfc3BlYyA9IGZzdHJpbmdfcGFyc2Uoc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwrMSwgYywgbik7CisgICAgICAgIGlmICghZm9ybWF0X3NwZWMpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCpzdHIgPj0gZW5kIHx8ICoqc3RyICE9ICd9JykKKyAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAvKiBXZSdyZSBhdCBhIHJpZ2h0IGJyYWNlLiBDb25zdW1lIGl0LiAqLworICAgIGFzc2VydCgqc3RyIDwgZW5kKTsKKyAgICBhc3NlcnQoKipzdHIgPT0gJ30nKTsKKyAgICAqc3RyICs9IDE7CisKKyAgICAvKiBBbmQgbm93IGNyZWF0ZSB0aGUgRm9ybWF0dGVkVmFsdWUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhpcworICAgICAgIGVudGlyZSBleHByZXNzaW9uIHdpdGggdGhlIGNvbnZlcnNpb24gYW5kIGZvcm1hdCBzcGVjLiAqLworICAgICpleHByZXNzaW9uID0gRm9ybWF0dGVkVmFsdWUoc2ltcGxlX2V4cHJlc3Npb24sIGNvbnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlYywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKKyAgICBpZiAoISpleHByZXNzaW9uKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKKwordW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOgorICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qIFJldHVybiAtMSBvbiBlcnJvci4KKworICAgUmV0dXJuIDAgaWYgd2UgaGF2ZSBhIGxpdGVyYWwgKHBvc3NpYmxlIHplcm8gbGVuZ3RoKSBhbmQgYW4KKyAgIGV4cHJlc3Npb24gKHplcm8gbGVuZ3RoIGlmIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KKworICAgUmV0dXJuIDEgaWYgd2UgaGF2ZSBhIGxpdGVyYWwsIGJ1dCBubyBleHByZXNzaW9uLCBhbmQgd2Ugd2FudCB0aGUKKyAgIGNhbGxlciB0byBjYWxsIHVzIGFnYWluLiBUaGlzIGlzIHVzZWQgdG8gZGVhbCB3aXRoIGRvdWJsZWQKKyAgIGJyYWNlcy4KKworICAgV2hlbiBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHN0cmluZyAnYXt7YnswfWMnLCB0aGlzIGZ1bmN0aW9uCisgICB3aWxsIHJldHVybjoKKworICAgMS4gdGhlIGxpdGVyYWwgJ2F7JyB3aXRoIG5vIGV4cHJlc3Npb24sIGFuZCBhIHJldHVybiB2YWx1ZQorICAgICAgb2YgMS4gRGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHRoZXJlJ3Mgbm8gZXhwcmVzc2lvbiwgdGhlIHJldHVybgorICAgICAgdmFsdWUgb2YgMSBtZWFucyB3ZSdyZSBub3QgZmluaXNoZWQgeWV0LgorCisgICAyLiB0aGUgbGl0ZXJhbCAnYicgYW5kIHRoZSBleHByZXNzaW9uICcwJywgd2l0aCBhIHJldHVybiB2YWx1ZSBvZgorICAgICAgMC4gVGhlIGZhY3QgdGhhdCB0aGVyZSdzIGFuIGV4cHJlc3Npb24gbWVhbnMgd2UncmUgbm90IGZpbmlzaGVkLgorCisgICAzLiBsaXRlcmFsICdjJyB3aXRoIG5vIGV4cHJlc3Npb24gYW5kIGEgcmV0dXJuIHZhbHVlIG9mIDAuIFRoZQorICAgICAgY29tYmluYXRpb24gb2YgdGhlIHJldHVybiB2YWx1ZSBvZiAwIHdpdGggbm8gZXhwcmVzc2lvbiBtZWFucworICAgICAgd2UncmUgZmluaXNoZWQuCisqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2xpdGVyYWxfYW5kX2V4cHIoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlY3Vyc2VfbHZsLCBQeU9iamVjdCAqKmxpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5ICpleHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBpbnQgcmVzdWx0OworCisgICAgYXNzZXJ0KCpsaXRlcmFsID09IE5VTEwgJiYgKmV4cHJlc3Npb24gPT0gTlVMTCk7CisKKyAgICAvKiBHZXQgYW55IGxpdGVyYWwgc3RyaW5nLiAqLworICAgIHJlc3VsdCA9IGZzdHJpbmdfZmluZF9saXRlcmFsKHN0ciwgZW5kLCByYXcsIGxpdGVyYWwsIHJlY3Vyc2VfbHZsLCBjLCBuKTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGFzc2VydChyZXN1bHQgPT0gMCB8fCByZXN1bHQgPT0gMSk7CisKKyAgICBpZiAocmVzdWx0ID09IDEpCisgICAgICAgIC8qIFdlIGhhdmUgYSBsaXRlcmFsLCBidXQgZG9uJ3QgbG9vayBhdCB0aGUgZXhwcmVzc2lvbi4gKi8KKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoKnN0ciA+PSBlbmQgfHwgKipzdHIgPT0gJ30nKQorICAgICAgICAvKiBXZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgdGhlIGVuZCBvZiBhIG5lc3RlZAorICAgICAgICAgICBmLXN0cmluZzogbm8gZXhwcmVzc2lvbi4gVGhlIHRvcC1sZXZlbCBlcnJvciBjYXNlIHdoZXJlIHdlCisgICAgICAgICAgIGV4cGVjdCB0byBiZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYnV0IHdlJ3JlIGF0IGEgJ30nIGlzCisgICAgICAgICAgIGhhbmRsZWQgbGF0ZXIuICovCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogV2UgbXVzdCBub3cgYmUgdGhlIHN0YXJ0IG9mIGFuIGV4cHJlc3Npb24sIG9uIGEgJ3snLiAqLworICAgIGFzc2VydCgqKnN0ciA9PSAneycpOworCisgICAgaWYgKGZzdHJpbmdfZmluZF9leHByKHN0ciwgZW5kLCByYXcsIHJlY3Vyc2VfbHZsLCBleHByZXNzaW9uLCBjLCBuKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoKmxpdGVyYWwpOworICAgIHJldHVybiAtMTsKK30KKworI2RlZmluZSBFWFBSTElTVF9OX0NBQ0hFRCAgNjQKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIEluY3JlbWVudGFsbHkgYnVpbGQgYW4gYXJyYXkgb2YgZXhwcl90eSwgc28gYmUgdXNlZCBpbiBhbgorICAgICAgIGFzZGxfc2VxLiBDYWNoZSBzb21lIHNtYWxsIGJ1dCByZWFzb25hYmx5IHNpemVkIG51bWJlciBvZgorICAgICAgIGV4cHJfdHkncywgYW5kIHRoZW4gYWZ0ZXIgdGhhdCBzdGFydCBkeW5hbWljYWxseSBhbGxvY2F0aW5nLAorICAgICAgIGRvdWJsaW5nIHRoZSBudW1iZXIgYWxsb2NhdGVkIGVhY2ggdGltZS4gTm90ZSB0aGF0IHRoZSBmLXN0cmluZworICAgICAgIGYnezB9YXsxfScgY29udGFpbnMgMyBleHByX3R5J3M6IDIgRm9ybWF0dGVkVmFsdWUncywgYW5kIG9uZQorICAgICAgIFN0ciBmb3IgdGhlIGxpdGVyYWwgJ2EnLiBTbyB5b3UgYWRkIGV4cHJfdHkncyBhYm91dCB0d2ljZSBhcworICAgICAgIGZhc3QgYXMgeW91IGFkZCBleHJlc3Npb25zIGluIGFuIGYtc3RyaW5nLiAqLworCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7ICAvKiBOdW1iZXIgd2UndmUgYWxsb2NhdGVkLiAqLworICAgIFB5X3NzaXplX3Qgc2l6ZTsgICAgICAgLyogTnVtYmVyIHdlJ3ZlIHVzZWQuICovCisgICAgZXhwcl90eSAgICAqcDsgICAgICAgICAvKiBQb2ludGVyIHRvIHRoZSBtZW1vcnkgd2UncmUgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nLiBXaWxsIHBvaW50IHRvICdkYXRhJyB1bnRpbCB3ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgZHluYW1pY2FsbHkgYWxsb2NhdGluZy4gKi8KKyAgICBleHByX3R5ICAgIGRhdGFbRVhQUkxJU1RfTl9DQUNIRURdOworfSBFeHByTGlzdDsKKworI2lmZGVmIE5ERUJVRworI2RlZmluZSBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpCisjZWxzZQorc3RhdGljIHZvaWQKK0V4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMoRXhwckxpc3QgKmwpCit7CisgICAgLyogQ2hlY2sgb3VyIGludmFyaWFudHMuIE1ha2Ugc3VyZSB0aGlzIG9iamVjdCBpcyAibGl2ZSIsIGFuZAorICAgICAgIGhhc24ndCBiZWVuIGRlYWxsb2NhdGVkLiAqLworICAgIGFzc2VydChsLT5zaXplID49IDApOworICAgIGFzc2VydChsLT5wICE9IE5VTEwpOworICAgIGlmIChsLT5zaXplIDw9IEVYUFJMSVNUX05fQ0FDSEVEKQorICAgICAgICBhc3NlcnQobC0+ZGF0YSA9PSBsLT5wKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZAorRXhwckxpc3RfSW5pdChFeHByTGlzdCAqbCkKK3sKKyAgICBsLT5hbGxvY2F0ZWQgPSBFWFBSTElTVF9OX0NBQ0hFRDsKKyAgICBsLT5zaXplID0gMDsKKworICAgIC8qIFVudGlsIHdlIHN0YXJ0IGFsbG9jYXRpbmcgZHluYW1pY2FsbHksIHAgcG9pbnRzIHRvIGRhdGEuICovCisgICAgbC0+cCA9IGwtPmRhdGE7CisKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworfQorCitzdGF0aWMgaW50CitFeHByTGlzdF9BcHBlbmQoRXhwckxpc3QgKmwsIGV4cHJfdHkgZXhwKQoreworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMobCk7CisgICAgaWYgKGwtPnNpemUgPj0gbC0+YWxsb2NhdGVkKSB7CisgICAgICAgIC8qIFdlIG5lZWQgdG8gYWxsb2MgKG9yIHJlYWxsb2MpIHRoZSBtZW1vcnkuICovCisgICAgICAgIFB5X3NzaXplX3QgbmV3X3NpemUgPSBsLT5hbGxvY2F0ZWQgKiAyOworCisgICAgICAgIC8qIFNlZSBpZiB3ZSd2ZSBldmVyIGFsbG9jYXRlZCBhbnl0aGluZyBkeW5hbWljYWxseS4gKi8KKyAgICAgICAgaWYgKGwtPnAgPT0gbC0+ZGF0YSkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgLyogV2UncmUgc3RpbGwgdXNpbmcgdGhlIGNhY2hlZCBkYXRhLiBTd2l0Y2ggdG8KKyAgICAgICAgICAgICAgIGFsbG9jLWluZy4gKi8KKyAgICAgICAgICAgIGwtPnAgPSBQeU1lbV9SYXdNYWxsb2Moc2l6ZW9mKGV4cHJfdHkpICogbmV3X3NpemUpOworICAgICAgICAgICAgaWYgKCFsLT5wKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIC8qIENvcHkgdGhlIGNhY2hlZCBkYXRhIGludG8gdGhlIG5ldyBidWZmZXIuICovCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbC0+c2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIGwtPnBbaV0gPSBsLT5kYXRhW2ldOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogSnVzdCByZWFsbG9jLiAqLworICAgICAgICAgICAgZXhwcl90eSAqdG1wID0gUHlNZW1fUmF3UmVhbGxvYyhsLT5wLCBzaXplb2YoZXhwcl90eSkgKiBuZXdfc2l6ZSk7CisgICAgICAgICAgICBpZiAoIXRtcCkgeworICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobC0+cCk7CisgICAgICAgICAgICAgICAgbC0+cCA9IE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbC0+cCA9IHRtcDsKKyAgICAgICAgfQorCisgICAgICAgIGwtPmFsbG9jYXRlZCA9IG5ld19zaXplOworICAgICAgICBhc3NlcnQobC0+YWxsb2NhdGVkID09IDIgKiBsLT5zaXplKTsKKyAgICB9CisKKyAgICBsLT5wW2wtPnNpemUrK10gPSBleHA7CisKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorRXhwckxpc3RfRGVhbGxvYyhFeHByTGlzdCAqbCkKK3sKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworCisgICAgLyogSWYgdGhlcmUncyBiZWVuIGFuIGVycm9yLCBvciB3ZSd2ZSBuZXZlciBkeW5hbWljYWxseSBhbGxvY2F0ZWQsCisgICAgICAgZG8gbm90aGluZy4gKi8KKyAgICBpZiAoIWwtPnAgfHwgbC0+cCA9PSBsLT5kYXRhKSB7CisgICAgICAgIC8qIERvIG5vdGhpbmcuICovCisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2UgaGF2ZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQuIEZyZWUgdGhlIG1lbW9yeS4gKi8KKyAgICAgICAgUHlNZW1fUmF3RnJlZShsLT5wKTsKKyAgICB9CisgICAgbC0+cCA9IE5VTEw7CisgICAgbC0+c2l6ZSA9IC0xOworfQorCitzdGF0aWMgYXNkbF9zZXEgKgorRXhwckxpc3RfRmluaXNoKEV4cHJMaXN0ICpsLCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBhc2RsX3NlcSAqc2VxOworCisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKKworICAgIC8qIEFsbG9jYXRlIHRoZSBhc2RsX3NlcSBhbmQgY29weSB0aGUgZXhwcmVzc2lvbnMgaW4gdG8gaXQuICovCisgICAgc2VxID0gX1B5X2FzZGxfc2VxX25ldyhsLT5zaXplLCBhcmVuYSk7CisgICAgaWYgKHNlcSkgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsLT5zaXplOyBpKyspCisgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc2VxLCBpLCBsLT5wW2ldKTsKKyAgICB9CisgICAgRXhwckxpc3RfRGVhbGxvYyhsKTsKKyAgICByZXR1cm4gc2VxOworfQorCisvKiBUaGUgRnN0cmluZ1BhcnNlciBpcyBkZXNpZ25lZCB0byBhZGQgYSBtaXggb2Ygc3RyaW5ncyBhbmQKKyAgIGYtc3RyaW5ncywgYW5kIGNvbmNhdCB0aGVtIHRvZ2V0aGVyIGFzIG5lZWRlZC4gVWx0aW1hdGVseSwgaXQKKyAgIGdlbmVyYXRlcyBhbiBleHByX3R5LiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpsYXN0X3N0cjsKKyAgICBFeHByTGlzdCBleHByX2xpc3Q7Cit9IEZzdHJpbmdQYXJzZXI7CisKKyNpZmRlZiBOREVCVUcKKyNkZWZpbmUgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKQorI2Vsc2UKK3N0YXRpYyB2b2lkCitGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoRnN0cmluZ1BhcnNlciAqc3RhdGUpCit7CisgICAgaWYgKHN0YXRlLT5sYXN0X3N0cikKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXRlLT5sYXN0X3N0cikpOworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMoJnN0YXRlLT5leHByX2xpc3QpOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkCitGc3RyaW5nUGFyc2VyX0luaXQoRnN0cmluZ1BhcnNlciAqc3RhdGUpCit7CisgICAgc3RhdGUtPmxhc3Rfc3RyID0gTlVMTDsKKyAgICBFeHByTGlzdF9Jbml0KCZzdGF0ZS0+ZXhwcl9saXN0KTsKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworfQorCitzdGF0aWMgdm9pZAorRnN0cmluZ1BhcnNlcl9EZWFsbG9jKEZzdHJpbmdQYXJzZXIgKnN0YXRlKQoreworICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisKKyAgICBQeV9YREVDUkVGKHN0YXRlLT5sYXN0X3N0cik7CisgICAgRXhwckxpc3RfRGVhbGxvYygmc3RhdGUtPmV4cHJfbGlzdCk7Cit9CisKKy8qIE1ha2UgYSBTdHIgbm9kZSwgYnV0IGRlY3JlZiB0aGUgUHlVbmljb2RlIG9iamVjdCBiZWluZyBhZGRlZC4gKi8KK3N0YXRpYyBleHByX3R5CittYWtlX3N0cl9ub2RlX2FuZF9kZWwoUHlPYmplY3QgKipzdHIsIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUqIG4pCit7CisgICAgUHlPYmplY3QgKnMgPSAqc3RyOworICAgICpzdHIgPSBOVUxMOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSk7CisgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgcykgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBTdHIocywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworfQorCisvKiBBZGQgYSBub24tZi1zdHJpbmcgKHRoYXQgaXMsIGEgcmVndWxhciBsaXRlcmFsIHN0cmluZykuIHN0ciBpcworICAgZGVjcmVmJ2QuICovCitzdGF0aWMgaW50CitGc3RyaW5nUGFyc2VyX0NvbmNhdEFuZERlbChGc3RyaW5nUGFyc2VyICpzdGF0ZSwgUHlPYmplY3QgKnN0cikKK3sKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KHN0cikpOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPT0gMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgLyogV2UgZGlkbid0IGhhdmUgYSBzdHJpbmcgYmVmb3JlLCBzbyBqdXN0IHJlbWVtYmVyIHRoaXMgb25lLiAqLworICAgICAgICBzdGF0ZS0+bGFzdF9zdHIgPSBzdHI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogQ29uY2F0ZW5hdGUgdGhpcyB3aXRoIHRoZSBwcmV2aW91cyBzdHJpbmcuICovCisgICAgICAgIFB5VW5pY29kZV9BcHBlbmRBbmREZWwoJnN0YXRlLT5sYXN0X3N0ciwgc3RyKTsKKyAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFBhcnNlIGFuIGYtc3RyaW5nLiBUaGUgZi1zdHJpbmcgaXMgaW4gKnN0ciB0byBlbmQsIHdpdGggbm8KKyAgICdmJyBvciBxdW90ZXMuICovCitzdGF0aWMgaW50CitGc3RyaW5nUGFyc2VyX0NvbmNhdEZzdHJpbmcoRnN0cmluZ1BhcnNlciAqc3RhdGUsIGNvbnN0IGNoYXIgKipzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgLyogUGFyc2UgdGhlIGYtc3RyaW5nLiAqLworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFB5T2JqZWN0ICpsaXRlcmFsID0gTlVMTDsKKyAgICAgICAgZXhwcl90eSBleHByZXNzaW9uID0gTlVMTDsKKworICAgICAgICAvKiBJZiB0aGVyZSdzIGEgemVybyBsZW5ndGggbGl0ZXJhbCBpbiBmcm9udCBvZiB0aGUKKyAgICAgICAgICAgZXhwcmVzc2lvbiwgbGl0ZXJhbCB3aWxsIGJlIE5VTEwuIElmIHdlJ3JlIGF0IHRoZSBlbmQgb2YKKyAgICAgICAgICAgdGhlIGYtc3RyaW5nLCBleHByZXNzaW9uIHdpbGwgYmUgTlVMTCAodW5sZXNzIHJlc3VsdCA9PSAxLAorICAgICAgICAgICBzZWUgYmVsb3cpLiAqLworICAgICAgICBpbnQgcmVzdWx0ID0gZnN0cmluZ19maW5kX2xpdGVyYWxfYW5kX2V4cHIoc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGl0ZXJhbCwgJmV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLCBuKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgLyogQWRkIHRoZSBsaXRlcmFsLCBpZiBhbnkuICovCisgICAgICAgIGlmICghbGl0ZXJhbCkgeworICAgICAgICAgICAgLyogRG8gbm90aGluZy4gSnVzdCBsZWF2ZSBsYXN0X3N0ciBhbG9uZSAoYW5kIHBvc3NpYmx5CisgICAgICAgICAgICAgICBOVUxMKS4gKi8KKyAgICAgICAgfSBlbHNlIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgICAgICBzdGF0ZS0+bGFzdF9zdHIgPSBsaXRlcmFsOworICAgICAgICAgICAgbGl0ZXJhbCA9IE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBXZSBoYXZlIGEgbGl0ZXJhbCwgY29uY2F0ZW5hdGUgaXQuICovCisgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0dFVF9MRU5HVEgobGl0ZXJhbCkgIT0gMCk7CisgICAgICAgICAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoc3RhdGUsIGxpdGVyYWwpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBsaXRlcmFsID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoIXN0YXRlLT5sYXN0X3N0ciB8fAorICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RhdGUtPmxhc3Rfc3RyKSAhPSAwKTsKKworICAgICAgICAvKiBXZSd2ZSBkZWFsdCB3aXRoIHRoZSBsaXRlcmFsIG5vdy4gSXQgY2FuJ3QgYmUgbGVha2VkIG9uIGZ1cnRoZXIKKyAgICAgICAgICAgZXJyb3JzLiAqLworICAgICAgICBhc3NlcnQobGl0ZXJhbCA9PSBOVUxMKTsKKworICAgICAgICAvKiBTZWUgaWYgd2Ugc2hvdWxkIGp1c3QgbG9vcCBhcm91bmQgdG8gZ2V0IHRoZSBuZXh0IGxpdGVyYWwKKyAgICAgICAgICAgYW5kIGV4cHJlc3Npb24sIHdoaWxlIGlnbm9yaW5nIHRoZSBleHByZXNzaW9uIHRoaXMKKyAgICAgICAgICAgdGltZS4gVGhpcyBpcyB1c2VkIGZvciB1bi1kb3VibGluZyBicmFjZXMsIGFzIGFuCisgICAgICAgICAgIG9wdGltaXphdGlvbi4gKi8KKyAgICAgICAgaWYgKHJlc3VsdCA9PSAxKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoaXMgZi1zdHJpbmcuICovCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBXZSBrbm93IHdlIGhhdmUgYW4gZXhwcmVzc2lvbi4gQ29udmVydCBhbnkgZXhpc3Rpbmcgc3RyaW5nCisgICAgICAgICAgIHRvIGEgU3RyIG5vZGUuICovCisgICAgICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgICAgICAvKiBEbyBub3RoaW5nLiBObyBwcmV2aW91cyBsaXRlcmFsLiAqLworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogQ29udmVydCB0aGUgZXhpc3RpbmcgbGFzdF9zdHIgbGl0ZXJhbCB0byBhIFN0ciBub2RlLiAqLworICAgICAgICAgICAgZXhwcl90eSBzdHIgPSBtYWtlX3N0cl9ub2RlX2FuZF9kZWwoJnN0YXRlLT5sYXN0X3N0ciwgYywgbik7CisgICAgICAgICAgICBpZiAoIXN0ciB8fCBFeHByTGlzdF9BcHBlbmQoJnN0YXRlLT5leHByX2xpc3QsIHN0cikgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChFeHByTGlzdF9BcHBlbmQoJnN0YXRlLT5leHByX2xpc3QsIGV4cHJlc3Npb24pIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBJZiByZWN1cnNlX2x2bCBpcyB6ZXJvLCB0aGVuIHdlIG11c3QgYmUgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICBzdHJpbmcuIE90aGVyd2lzZSwgd2UgbXVzdCBiZSBhdCBhIHJpZ2h0IGJyYWNlLiAqLworCisgICAgaWYgKHJlY3Vyc2VfbHZsID09IDAgJiYgKnN0ciA8IGVuZC0xKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IHVuZXhwZWN0ZWQgZW5kIG9mIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChyZWN1cnNlX2x2bCAhPSAwICYmICoqc3RyICE9ICd9JykgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworICAgIHJldHVybiAwOworfQorCisvKiBDb252ZXJ0IHRoZSBwYXJ0aWFsIHN0YXRlIHJlZmxlY3RlZCBpbiBsYXN0X3N0ciBhbmQgZXhwcl9saXN0IHRvIGFuCisgICBleHByX3R5LiBUaGUgZXhwcl90eSBjYW4gYmUgYSBTdHIsIG9yIGEgSm9pbmVkU3RyLiAqLworc3RhdGljIGV4cHJfdHkKK0ZzdHJpbmdQYXJzZXJfRmluaXNoKEZzdHJpbmdQYXJzZXIgKnN0YXRlLCBzdHJ1Y3QgY29tcGlsaW5nICpjLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBhc2RsX3NlcSAqc2VxOworCisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKworICAgIC8qIElmIHdlJ3JlIGp1c3QgYSBjb25zdGFudCBzdHJpbmcgd2l0aCBubyBleHByZXNzaW9ucywgcmV0dXJuCisgICAgICAgdGhhdC4gKi8KKyAgICBpZihzdGF0ZS0+ZXhwcl9saXN0LnNpemUgPT0gMCkgeworICAgICAgICBpZiAoIXN0YXRlLT5sYXN0X3N0cikgeworICAgICAgICAgICAgLyogQ3JlYXRlIGEgemVybyBsZW5ndGggc3RyaW5nLiAqLworICAgICAgICAgICAgc3RhdGUtPmxhc3Rfc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgICAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWFrZV9zdHJfbm9kZV9hbmRfZGVsKCZzdGF0ZS0+bGFzdF9zdHIsIGMsIG4pOworICAgIH0KKworICAgIC8qIENyZWF0ZSBhIFN0ciBub2RlIG91dCBvZiBsYXN0X3N0ciwgaWYgbmVlZGVkLiBJdCB3aWxsIGJlIHRoZQorICAgICAgIGxhc3Qgbm9kZSBpbiBvdXIgZXhwcmVzc2lvbiBsaXN0LiAqLworICAgIGlmIChzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgZXhwcl90eSBzdHIgPSBtYWtlX3N0cl9ub2RlX2FuZF9kZWwoJnN0YXRlLT5sYXN0X3N0ciwgYywgbik7CisgICAgICAgIGlmICghc3RyIHx8IEV4cHJMaXN0X0FwcGVuZCgmc3RhdGUtPmV4cHJfbGlzdCwgc3RyKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAvKiBUaGlzIGhhcyBhbHJlYWR5IGJlZW4gZnJlZWQuICovCisgICAgYXNzZXJ0KHN0YXRlLT5sYXN0X3N0ciA9PSBOVUxMKTsKKworICAgIHNlcSA9IEV4cHJMaXN0X0ZpbmlzaCgmc3RhdGUtPmV4cHJfbGlzdCwgYy0+Y19hcmVuYSk7CisgICAgaWYgKCFzZXEpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBJZiB0aGVyZSdzIG9ubHkgb25lIGV4cHJlc3Npb24sIHJldHVybiBpdC4gT3RoZXJ3aXNlLCB3ZSBuZWVkCisgICAgICAgdG8gam9pbiB0aGVtIHRvZ2V0aGVyLiAqLworICAgIGlmIChzZXEtPnNpemUgPT0gMSkKKyAgICAgICAgcmV0dXJuIHNlcS0+ZWxlbWVudHNbMF07CisKKyAgICByZXR1cm4gSm9pbmVkU3RyKHNlcSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworCitlcnJvcjoKKyAgICBGc3RyaW5nUGFyc2VyX0RlYWxsb2Moc3RhdGUpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBHaXZlbiBhbiBmLXN0cmluZyAod2l0aCBubyAnZicgb3IgcXVvdGVzKSB0aGF0J3MgaW4gKnN0ciBhbmQgZW5kcworICAgYXQgZW5kLCBwYXJzZSBpdCBpbnRvIGFuIGV4cHJfdHkuICBSZXR1cm4gTlVMTCBvbiBlcnJvci4gIEFkanVzdAorICAgc3RyIHRvIHBvaW50IHBhc3QgdGhlIHBhcnNlZCBwb3J0aW9uLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfcGFyc2UoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgRnN0cmluZ1BhcnNlciBzdGF0ZTsKKworICAgIEZzdHJpbmdQYXJzZXJfSW5pdCgmc3RhdGUpOworICAgIGlmIChGc3RyaW5nUGFyc2VyX0NvbmNhdEZzdHJpbmcoJnN0YXRlLCBzdHIsIGVuZCwgcmF3LCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMsIG4pIDwgMCkgeworICAgICAgICBGc3RyaW5nUGFyc2VyX0RlYWxsb2MoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIEZzdHJpbmdQYXJzZXJfRmluaXNoKCZzdGF0ZSwgYywgbik7Cit9CisKKy8qIG4gaXMgYSBQeXRob24gc3RyaW5nIGxpdGVyYWwsIGluY2x1ZGluZyB0aGUgYnJhY2tldGluZyBxdW90ZQorICAgY2hhcmFjdGVycywgYW5kIHIsIGIsIHUsICYvb3IgZiBwcmVmaXhlcyAoaWYgYW55KSwgYW5kIGVtYmVkZGVkCisgICBlc2NhcGUgc2VxdWVuY2VzIChpZiBhbnkpLiBwYXJzZXN0ciBwYXJzZXMgaXQsIGFuZCBzZXRzICpyZXN1bHQgdG8KKyAgIGRlY29kZWQgUHl0aG9uIHN0cmluZyBvYmplY3QuICBJZiB0aGUgc3RyaW5nIGlzIGFuIGYtc3RyaW5nLCBzZXQKKyAgICpmc3RyIGFuZCAqZnN0cmxlbiB0byB0aGUgdW5wYXJzZWQgc3RyaW5nIG9iamVjdC4gIFJldHVybiAwIGlmIG5vCisgICBlcnJvcnMgb2NjdXJyZWQuCisqLworc3RhdGljIGludAorcGFyc2VzdHIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUsIGludCAqcmF3bW9kZSwKKyAgICAgICAgIFB5T2JqZWN0ICoqcmVzdWx0LCBjb25zdCBjaGFyICoqZnN0ciwgUHlfc3NpemVfdCAqZnN0cmxlbikKIHsKICAgICBzaXplX3QgbGVuOwogICAgIGNvbnN0IGNoYXIgKnMgPSBTVFIobik7CiAgICAgaW50IHF1b3RlID0gUHlfQ0hBUk1BU0soKnMpOwotICAgIGludCByYXdtb2RlID0gMDsKLSAgICBpbnQgbmVlZF9lbmNvZGluZzsKKyAgICBpbnQgZm1vZGUgPSAwOworICAgICpieXRlc21vZGUgPSAwOworICAgICpyYXdtb2RlID0gMDsKKyAgICAqcmVzdWx0ID0gTlVMTDsKKyAgICAqZnN0ciA9IE5VTEw7CiAgICAgaWYgKFB5X0lTQUxQSEEocXVvdGUpKSB7Ci0gICAgICAgIHdoaWxlICghKmJ5dGVzbW9kZSB8fCAhcmF3bW9kZSkgeworICAgICAgICB3aGlsZSAoISpieXRlc21vZGUgfHwgISpyYXdtb2RlKSB7CiAgICAgICAgICAgICBpZiAocXVvdGUgPT0gJ2InIHx8IHF1b3RlID09ICdCJykgewogICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKICAgICAgICAgICAgICAgICAqYnl0ZXNtb2RlID0gMTsKQEAgLTQwMjIsMTE0ICs0OTc5LDE2OSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAocXVvdGUgPT0gJ3InIHx8IHF1b3RlID09ICdSJykgewogICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKLSAgICAgICAgICAgICAgICByYXdtb2RlID0gMTsKKyAgICAgICAgICAgICAgICAqcmF3bW9kZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChxdW90ZSA9PSAnZicgfHwgcXVvdGUgPT0gJ0YnKSB7CisgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOworICAgICAgICAgICAgICAgIGZtb2RlID0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGlmIChmbW9kZSAmJiAqYnl0ZXNtb2RlKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGlmIChxdW90ZSAhPSAnXCcnICYmIHF1b3RlICE9ICdcIicpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgcXVvdGUgY2hhci4gKi8KICAgICBzKys7CiAgICAgbGVuID0gc3RybGVuKHMpOwogICAgIGlmIChsZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0byBwYXJzZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoc1stLWxlbl0gIT0gcXVvdGUpIHsKKyAgICAgICAgLyogTGFzdCBxdW90ZSBjaGFyIG11c3QgbWF0Y2ggdGhlIGZpcnN0LiAqLwogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKGxlbiA+PSA0ICYmIHNbMF0gPT0gcXVvdGUgJiYgc1sxXSA9PSBxdW90ZSkgeworICAgICAgICAvKiBBIHRyaXBsZSBxdW90ZWQgc3RyaW5nLiBXZSd2ZSBhbHJlYWR5IHNraXBwZWQgb25lIHF1b3RlIGF0CisgICAgICAgICAgIHRoZSBzdGFydCBhbmQgb25lIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gTm93IHNraXAgdGhlCisgICAgICAgICAgIHR3byBhdCB0aGUgc3RhcnQuICovCiAgICAgICAgIHMgKz0gMjsKICAgICAgICAgbGVuIC09IDI7CisgICAgICAgIC8qIEFuZCBjaGVjayB0aGF0IHRoZSBsYXN0IHR3byBtYXRjaC4gKi8KICAgICAgICAgaWYgKHNbLS1sZW5dICE9IHF1b3RlIHx8IHNbLS1sZW5dICE9IHF1b3RlKSB7CiAgICAgICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghKmJ5dGVzbW9kZSAmJiAhcmF3bW9kZSkgewotICAgICAgICByZXR1cm4gZGVjb2RlX3VuaWNvZGUoYywgcywgbGVuLCByYXdtb2RlLCBjLT5jX2VuY29kaW5nKTsKKworICAgIGlmIChmbW9kZSkgeworICAgICAgICAvKiBKdXN0IHJldHVybiB0aGUgYnl0ZXMuIFRoZSBjYWxsZXIgd2lsbCBwYXJzZSB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgIHN0cmluZy4gKi8KKyAgICAgICAgKmZzdHIgPSBzOworICAgICAgICAqZnN0cmxlbiA9IGxlbjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgLyogTm90IGFuIGYtc3RyaW5nLiAqLworICAgIC8qIEF2b2lkIGludm9raW5nIGVzY2FwZSBkZWNvZGluZyByb3V0aW5lcyBpZiBwb3NzaWJsZS4gKi8KKyAgICAqcmF3bW9kZSA9ICpyYXdtb2RlIHx8IHN0cmNocihzLCAnXFwnKSA9PSBOVUxMOwogICAgIGlmICgqYnl0ZXNtb2RlKSB7Ci0gICAgICAgIC8qIERpc2FsbG93IG5vbi1hc2NpaSBjaGFyYWN0ZXJzIChidXQgbm90IGVzY2FwZXMpICovCisgICAgICAgIC8qIERpc2FsbG93IG5vbi1BU0NJSSBjaGFyYWN0ZXJzLiAqLwogICAgICAgICBjb25zdCBjaGFyICpjaDsKICAgICAgICAgZm9yIChjaCA9IHM7ICpjaDsgY2grKykgewogICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCpjaCkgPj0gMHg4MCkgewogICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYnl0ZXMgY2FuIG9ubHkgY29udGFpbiBBU0NJSSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXRlcmFsIGNoYXJhY3RlcnMuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmICgqcmF3bW9kZSkKKyAgICAgICAgICAgICpyZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIGxlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpyZXN1bHQgPSBQeUJ5dGVzX0RlY29kZUVzY2FwZShzLCBsZW4sIE5VTEwsIC8qIGlnbm9yZWQgKi8gMCwgTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCpyYXdtb2RlKQorICAgICAgICAgICAgKnJlc3VsdCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgbGVuLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZV91bmljb2RlX3dpdGhfZXNjYXBlcyhjLCBzLCBsZW4pOwogICAgIH0KLSAgICBuZWVkX2VuY29kaW5nID0gKCEqYnl0ZXNtb2RlICYmIGMtPmNfZW5jb2RpbmcgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGMtPmNfZW5jb2RpbmcsICJ1dGYtOCIpICE9IDApOwotICAgIGlmIChyYXdtb2RlIHx8IHN0cmNocihzLCAnXFwnKSA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChuZWVkX2VuY29kaW5nKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdiwgKnUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBsZW4sIE5VTEwpOwotICAgICAgICAgICAgaWYgKHUgPT0gTlVMTCB8fCAhKmJ5dGVzbW9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdTsKLSAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsIGMtPmNfZW5jb2RpbmcsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICAgICAgcmV0dXJuIHY7Ci0gICAgICAgIH0gZWxzZSBpZiAoKmJ5dGVzbW9kZSkgewotICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgbGVuKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYy0+Y19lbmNvZGluZywgInV0Zi04IikgPT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShzLCBsZW4pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgbGVuLCBOVUxMKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gUHlCeXRlc19EZWNvZGVFc2NhcGUocywgbGVuLCBOVUxMLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZF9lbmNvZGluZyA/IGMtPmNfZW5jb2RpbmcgOiBOVUxMKTsKKyAgICByZXR1cm4gKnJlc3VsdCA9PSBOVUxMID8gLTEgOiAwOwogfQogCi0vKiBCdWlsZCBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0IG91dCBvZiBhIFNUUklORysgYXRvbS4gIFRoaXMgdGFrZXMgY2FyZSBvZgotICogY29tcGlsZS10aW1lIGxpdGVyYWwgY2F0ZW5hdGlvbiwgY2FsbGluZyBwYXJzZXN0cigpIG9uIGVhY2ggcGllY2UsIGFuZAotICogcGFzdGluZyB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdHMgdG9nZXRoZXIuCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1wYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUpCisvKiBBY2NlcHRzIGEgU1RSSU5HKyBhdG9tLCBhbmQgcHJvZHVjZXMgYW4gZXhwcl90eSBub2RlLiBSdW4gdGhyb3VnaAorICAgZWFjaCBTVFJJTkcgYXRvbSwgYW5kIHByb2Nlc3MgaXQgYXMgbmVlZGVkLiBGb3IgYnl0ZXMsIGp1c3QKKyAgIGNvbmNhdGVuYXRlIHRoZW0gdG9nZXRoZXIsIGFuZCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBCeXRlcyBub2RlLiBGb3IKKyAgIG5vcm1hbCBzdHJpbmdzIGFuZCBmLXN0cmluZ3MsIGNvbmNhdGVuYXRlIHRoZW0gdG9nZXRoZXIuIFRoZSByZXN1bHQKKyAgIHdpbGwgYmUgYSBTdHIgbm9kZSBpZiB0aGVyZSB3ZXJlIG5vIGYtc3RyaW5nczsgYSBGb3JtYXR0ZWRWYWx1ZQorICAgbm9kZSBpZiB0aGVyZSdzIGp1c3QgYW4gZi1zdHJpbmcgKHdpdGggbm8gbGVhZGluZyBvciB0cmFpbGluZworICAgbGl0ZXJhbHMpLCBvciBhIEpvaW5lZFN0ciBub2RlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBmLXN0cmluZ3Mgb3IKKyAgIGFueSBsaXRlcmFscyBpbnZvbHZlZC4gKi8KK3N0YXRpYyBleHByX3R5CitwYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKLSAgICBQeU9iamVjdCAqdjsKKyAgICBpbnQgYnl0ZXNtb2RlID0gMDsKKyAgICBQeU9iamVjdCAqYnl0ZXNfc3RyID0gTlVMTDsKICAgICBpbnQgaTsKLSAgICBSRVEoQ0hJTEQobiwgMCksIFNUUklORyk7Ci0gICAgdiA9IHBhcnNlc3RyKGMsIENISUxEKG4sIDApLCBieXRlc21vZGUpOwotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgLyogU3RyaW5nIGxpdGVyYWwgY29uY2F0ZW5hdGlvbiAqLwotICAgICAgICBmb3IgKGkgPSAxOyBpIDwgTkNIKG4pOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpzOwotICAgICAgICAgICAgaW50IHN1YmJtID0gMDsKLSAgICAgICAgICAgIHMgPSBwYXJzZXN0cihjLCBDSElMRChuLCBpKSwgJnN1YmJtKTsKLSAgICAgICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgaWYgKCpieXRlc21vZGUgIT0gc3ViYm0pIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImNhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHYpICYmIFB5Qnl0ZXNfQ2hlY2socykpIHsKLSAgICAgICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdEFuZERlbCgmdiwgcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeVVuaWNvZGVfQ29uY2F0KHYsIHMpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgdiA9IHRlbXA7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgRnN0cmluZ1BhcnNlciBzdGF0ZTsKKyAgICBGc3RyaW5nUGFyc2VyX0luaXQoJnN0YXRlKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBOQ0gobik7IGkrKykgeworICAgICAgICBpbnQgdGhpc19ieXRlc21vZGU7CisgICAgICAgIGludCB0aGlzX3Jhd21vZGU7CisgICAgICAgIFB5T2JqZWN0ICpzOworICAgICAgICBjb25zdCBjaGFyICpmc3RyOworICAgICAgICBQeV9zc2l6ZV90IGZzdHJsZW4gPSAtMTsgIC8qIFNpbGVuY2UgYSBjb21waWxlciB3YXJuaW5nLiAqLworCisgICAgICAgIFJFUShDSElMRChuLCBpKSwgU1RSSU5HKTsKKyAgICAgICAgaWYgKHBhcnNlc3RyKGMsIENISUxEKG4sIGkpLCAmdGhpc19ieXRlc21vZGUsICZ0aGlzX3Jhd21vZGUsICZzLAorICAgICAgICAgICAgICAgICAgICAgJmZzdHIsICZmc3RybGVuKSAhPSAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAvKiBDaGVjayB0aGF0IHdlJ3JlIG5vdCBtaXhpbmcgYnl0ZXMgd2l0aCB1bmljb2RlLiAqLworICAgICAgICBpZiAoaSAhPSAwICYmIGJ5dGVzbW9kZSAhPSB0aGlzX2J5dGVzbW9kZSkgeworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscyIpOworICAgICAgICAgICAgUHlfREVDUkVGKHMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBieXRlc21vZGUgPSB0aGlzX2J5dGVzbW9kZTsKKworICAgICAgICBpZiAoZnN0ciAhPSBOVUxMKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0OworICAgICAgICAgICAgYXNzZXJ0KHMgPT0gTlVMTCAmJiAhYnl0ZXNtb2RlKTsKKyAgICAgICAgICAgIC8qIFRoaXMgaXMgYW4gZi1zdHJpbmcuIFBhcnNlIGFuZCBjb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgIHJlc3VsdCA9IEZzdHJpbmdQYXJzZXJfQ29uY2F0RnN0cmluZygmc3RhdGUsICZmc3RyLCBmc3RyK2ZzdHJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19yYXdtb2RlLCAwLCBjLCBuKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoYnl0ZXNtb2RlID8gUHlCeXRlc19DaGVja0V4YWN0KHMpIDoKKyAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSk7CisKKyAgICAgICAgICAgIC8qIEEgc3RyaW5nIG9yIGJ5dGUgc3RyaW5nLiAqLworICAgICAgICAgICAgYXNzZXJ0KHMgIT0gTlVMTCAmJiBmc3RyID09IE5VTEwpOworICAgICAgICAgICAgaWYgKGJ5dGVzbW9kZSkgeworICAgICAgICAgICAgICAgIC8qIEZvciBieXRlcywgY29uY2F0IGFzIHdlIGdvLiAqLworICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmlyc3QgdGltZSwganVzdCByZW1lbWJlciB0aGlzIHZhbHVlLiAqLworICAgICAgICAgICAgICAgICAgICBieXRlc19zdHIgPSBzOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsKCZieXRlc19zdHIsIHMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWJ5dGVzX3N0cikKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQocyAhPSBOVUxMICYmIGZzdHIgPT0gTlVMTCk7CisgICAgICAgICAgICAgICAgLyogVGhpcyBpcyBhIHJlZ3VsYXIgc3RyaW5nLiBDb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgICAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoJnN0YXRlLCBzKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHY7CisgICAgaWYgKGJ5dGVzbW9kZSkgeworICAgICAgICAvKiBKdXN0IHJldHVybiB0aGUgYnl0ZXMgb2JqZWN0IGFuZCB3ZSdyZSBkb25lLiAqLworICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBieXRlc19zdHIpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHJldHVybiBCeXRlcyhieXRlc19zdHIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICB9CiAKLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOworICAgIC8qIFdlJ3JlIG5vdCBhIGJ5dGVzIHN0cmluZywgYnl0ZXNfc3RyIHNob3VsZCBuZXZlciBoYXZlIGJlZW4gc2V0LiAqLworICAgIGFzc2VydChieXRlc19zdHIgPT0gTlVMTCk7CisKKyAgICByZXR1cm4gRnN0cmluZ1BhcnNlcl9GaW5pc2goJnN0YXRlLCBjLCBuKTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihieXRlc19zdHIpOworICAgIEZzdHJpbmdQYXJzZXJfRGVhbGxvYygmc3RhdGUpOwogICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2JsdGlubW9kdWxlLmMgYi9QeXRob24vYmx0aW5tb2R1bGUuYwppbmRleCA5ZjVkYjJhLi5jZWUwMTNmIDEwMDY0NAotLS0gYS9QeXRob24vYmx0aW5tb2R1bGUuYworKysgYi9QeXRob24vYmx0aW5tb2R1bGUuYwpAQCAtMjEsMTYgKzIxLDE4IEBACiAgICBEb24ndCBmb3JnZXQgdG8gbW9kaWZ5IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoKSBpZiB5b3UgdG91Y2ggYW55IG9mIHRoZQogICAgdmFsdWVzIGZvciBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIQogKi8KLSNpZmRlZiBIQVZFX01CQ1MKLWNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCitjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQorLyogbWF5IGJlIGNoYW5nZWQgYnkgaW5pdGZzZW5jb2RpbmcoKSwgYnV0IHNob3VsZCBuZXZlciBiZSBmcmVlKClkICovCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKICNlbHNlCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gTlVMTDsgLyogc2V0IGJ5IGluaXRmc2VuY29kaW5nKCkgKi8KIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMDsKICNlbmRpZgorY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAic3Vycm9nYXRlZXNjYXBlIjsKIAogX1B5X0lERU5USUZJRVIoX19idWlsdGluc19fKTsKIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKQEAgLTUyLDcgKzU0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX19fYnVpbGRfY2xhc3NfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqbmFtZSwgKmJhc2VzLCAqbWt3LCAqbWV0YSwgKndpbm5lciwgKnByZXAsICpucywgKmNlbGw7CisgICAgUHlPYmplY3QgKmZ1bmMsICpuYW1lLCAqYmFzZXMsICpta3csICptZXRhLCAqd2lubmVyLCAqcHJlcCwgKm5zLCAqbm9uZTsKICAgICBQeU9iamVjdCAqY2xzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG5hcmdzOwogICAgIGludCBpc2NsYXNzID0gMDsgICAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KQEAgLTE1NSwxNiArMTU3LDggQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG5hbWUsIGJhc2VzKTsKLSAgICAgICAgaWYgKHBhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwcmVwKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobWt3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBucyA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKHByZXAsIHBhcmdzLCBta3cpOwotICAgICAgICBQeV9ERUNSRUYocGFyZ3MpOworICAgICAgICBQeU9iamVjdCAqcGFyZ3NbMl0gPSB7bmFtZSwgYmFzZXN9OworICAgICAgICBucyA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QocHJlcCwgcGFyZ3MsIDIsIG1rdyk7CiAgICAgICAgIFB5X0RFQ1JFRihwcmVwKTsKICAgICB9CiAgICAgaWYgKG5zID09IE5VTEwpIHsKQEAgLTE3MywxOSArMTY3LDEzIEBACiAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjZWxsID0gUHlFdmFsX0V2YWxDb2RlRXgoUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKSwgUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKSwgbnMsCisgICAgbm9uZSA9IFB5RXZhbF9FdmFsQ29kZUV4KFB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyksIFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyksIG5zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpKTsKLSAgICBpZiAoY2VsbCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICptYXJnczsKLSAgICAgICAgbWFyZ3MgPSBQeVR1cGxlX1BhY2soMywgbmFtZSwgYmFzZXMsIG5zKTsKLSAgICAgICAgaWYgKG1hcmdzICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNscyA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKG1ldGEsIG1hcmdzLCBta3cpOwotICAgICAgICAgICAgUHlfREVDUkVGKG1hcmdzKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2xzICE9IE5VTEwgJiYgUHlDZWxsX0NoZWNrKGNlbGwpKQotICAgICAgICAgICAgUHlDZWxsX1NldChjZWxsLCBjbHMpOwotICAgICAgICBQeV9ERUNSRUYoY2VsbCk7CisgICAgaWYgKG5vbmUgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqbWFyZ3NbM10gPSB7bmFtZSwgYmFzZXMsIG5zfTsKKyAgICAgICAgY2xzID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChtZXRhLCBtYXJncywgMywgbWt3KTsKKyAgICAgICAgUHlfREVDUkVGKG5vbmUpOwogICAgIH0KICAgICBQeV9ERUNSRUYobnMpOwogICAgIFB5X0RFQ1JFRihtZXRhKTsKQEAgLTMzMSw3ICszMTksNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjbXAgPT0gMSkgeworICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgICAgICB9CkBAIC00NjksNiArNDU3LDcgQEAKICAgICBQeU9iamVjdCAqaXQgPSBsei0+aXQ7CiAgICAgbG9uZyBvazsKICAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CisgICAgaW50IGNoZWNrdHJ1ZSA9IGx6LT5mdW5jID09IFB5X05vbmUgfHwgbHotPmZ1bmMgPT0gKFB5T2JqZWN0ICopJlB5Qm9vbF9UeXBlOwogCiAgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OwogICAgIGZvciAoOzspIHsKQEAgLTQ3NiwxMiArNDY1LDExIEBACiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBpZiAobHotPmZ1bmMgPT0gUHlfTm9uZSB8fCBsei0+ZnVuYyA9PSAoUHlPYmplY3QgKikmUHlCb29sX1R5cGUpIHsKKyAgICAgICAgaWYgKGNoZWNrdHJ1ZSkgewogICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZ29vZDsKLSAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSwgTlVMTCk7CisgICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywgaXRlbSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoZ29vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE2OCwyNiArMTE1Niw0MyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1hcF9uZXh0KG1hcG9iamVjdCAqbHopCiB7Ci0gICAgUHlPYmplY3QgKnZhbDsKLSAgICBQeU9iamVjdCAqYXJndHVwbGU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeV9zc2l6ZV90IG51bWFyZ3MsIGk7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuaXRlcnMsIG5hcmdzLCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgbnVtYXJncyA9IFB5VHVwbGVfU2l6ZShsei0+aXRlcnMpOwotICAgIGFyZ3R1cGxlID0gUHlUdXBsZV9OZXcobnVtYXJncyk7Ci0gICAgaWYgKGFyZ3R1cGxlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZm9yIChpPTAgOyBpPG51bWFyZ3MgOyBpKyspIHsKLSAgICAgICAgdmFsID0gUHlJdGVyX05leHQoUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpKTsKLSAgICAgICAgaWYgKHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJndHVwbGUpOworICAgIG5pdGVycyA9IFB5VHVwbGVfR0VUX1NJWkUobHotPml0ZXJzKTsKKyAgICBpZiAobml0ZXJzIDw9IChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjaykpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKG5pdGVycyAqIHNpemVvZihzdGFja1swXSkpOworICAgICAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJndHVwbGUsIGksIHZhbCk7CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwobHotPmZ1bmMsIGFyZ3R1cGxlLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJndHVwbGUpOworCisgICAgbmFyZ3MgPSAwOworICAgIGZvciAoaT0wOyBpIDwgbml0ZXJzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpOworICAgICAgICBQeU9iamVjdCAqdmFsID0gUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0KGl0KTsKKyAgICAgICAgaWYgKHZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgc3RhY2tbaV0gPSB2YWw7CisgICAgICAgIG5hcmdzKys7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGx6LT5mdW5jLCBzdGFjaywgbmFyZ3MpOworCitleGl0OgorICAgIGZvciAoaT0wOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeV9ERUNSRUYoc3RhY2tbaV0pOworICAgIH0KKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE3NzksNyArMTc4NCw3IEBACiAgICAgICAgIGlmIChkb19mbHVzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBlbHNlIGlmIChkb19mbHVzaCkgewotICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBlbHNlCkBAIC0xODQ1LDcgKzE4NTAsNyBAQAogICAgIH0KIAogICAgIC8qIEZpcnN0IG9mIGFsbCwgZmx1c2ggc3RkZXJyICovCi0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0xODU0LDcgKzE4NTksNyBAQAogICAgIC8qIFdlIHNob3VsZCBvbmx5IHVzZSAoR05VKSByZWFkbGluZSBpZiBQeXRob24ncyBzeXMuc3RkaW4gYW5kCiAgICAgICAgc3lzLnN0ZG91dCBhcmUgdGhlIHNhbWUgYXMgQydzIHN0ZGluIGFuZCBzdGRvdXQsIGJlY2F1c2Ugd2UKICAgICAgICBuZWVkIHRvIHBhc3MgaXQgdGhvc2UuICovCi0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaW4sICZQeUlkX2ZpbGVubywgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmluLCAmUHlJZF9maWxlbm8sIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB0dHkgPSAwOwpAQCAtMTg2Nyw3ICsxODcyLDcgQEAKICAgICAgICAgdHR5ID0gZmQgPT0gZmlsZW5vKHN0ZGluKSAmJiBpc2F0dHkoZmQpOwogICAgIH0KICAgICBpZiAodHR5KSB7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgdHR5ID0gMDsKQEAgLTE5MDIsNyArMTkwNyw3IEBACiAgICAgICAgIHN0ZGluX2Vycm9yc19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZGluX2Vycm9ycyk7CiAgICAgICAgIGlmICghc3RkaW5fZW5jb2Rpbmdfc3RyIHx8ICFzdGRpbl9lcnJvcnNfc3RyKQogICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCkBAIC0xOTI5LDkgKzE5MzQsOCBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc3RyaW5ncG8pOwogICAgICAgICAgICAgaWYgKHBvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICAgICAgcHJvbXB0c3RyID0gUHlCeXRlc19Bc1N0cmluZyhwbyk7Ci0gICAgICAgICAgICBpZiAocHJvbXB0c3RyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOworICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socG8pKTsKKyAgICAgICAgICAgIHByb21wdHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBvKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHBvID0gTlVMTDsKQEAgLTE5ODMsNyArMTk4Nyw3IEBACiAgICAgICAgIGlmIChQeUZpbGVfV3JpdGVPYmplY3QocHJvbXB0LCBmb3V0LCBQeV9QUklOVF9SQVcpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0yMDg3LDEwICsyMDkxLDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9zb3J0ZWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqbmV3bGlzdCwgKnYsICpzZXEsICprZXlmdW5jPU5VTEwsICpuZXdhcmdzOworICAgIFB5T2JqZWN0ICpuZXdsaXN0LCAqdiwgKnNlcSwgKmtleWZ1bmM9TlVMTCwgKipuZXdhcmdzOwogICAgIFB5T2JqZWN0ICpjYWxsYWJsZTsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Iml0ZXJhYmxlIiwgImtleSIsICJyZXZlcnNlIiwgMH07CiAgICAgaW50IHJldmVyc2U7CisgICAgUHlfc3NpemVfdCBuYXJnczsKIAogICAgIC8qIGFyZ3MgMS0zIHNob3VsZCBtYXRjaCBsaXN0c29ydCBpbiBPYmplY3RzL2xpc3RvYmplY3QuYyAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9pOnNvcnRlZCIsCkBAIC0yMTA3LDE1ICsyMTEyLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgbmV3YXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgNCk7Ci0gICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYobmV3bGlzdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHYgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBuZXdhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgbmV3YXJncyA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKSAtIDE7CisgICAgdiA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoY2FsbGFibGUsIG5ld2FyZ3MsIG5hcmdzLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2xpc3QpOwpAQCAtMjcxMCwxMCArMjcwOSwxMCBAQAogICAgIFNFVEJVSUxUSU4oInppcCIsICAgICAgICAgICAgICAgICAgICZQeVppcF9UeXBlKTsKICAgICBkZWJ1ZyA9IFB5Qm9vbF9Gcm9tTG9uZyhQeV9PcHRpbWl6ZUZsYWcgPT0gMCk7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX2RlYnVnX18iLCBkZWJ1ZykgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoZGVidWcpOworICAgICAgICBQeV9ERUNSRUYoZGVidWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihkZWJ1Zyk7CisgICAgUHlfREVDUkVGKGRlYnVnKTsKIAogICAgIHJldHVybiBtb2Q7CiAjdW5kZWYgQUREX1RPX0FMTApkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsLmMgYi9QeXRob24vY2V2YWwuYwppbmRleCA5ZjFhZjc4Li44MmNjOWEyIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWwuYworKysgYi9QeXRob24vY2V2YWwuYwpAQCAtMTUsODcgKzE1LDEyIEBACiAjaW5jbHVkZSAiZGljdG9iamVjdC5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCisjaW5jbHVkZSAicHlkdHJhY2UuaCIKICNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKLSNpZm5kZWYgV0lUSF9UU0MKLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YXIpCi0KLSNlbHNlCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NDsKLQotLyogUG93ZXJQQyBzdXBwb3J0LgotICAgIl9fcHBjX18iIGFwcGVhcnMgdG8gYmUgdGhlIHByZXByb2Nlc3NvciBkZWZpbml0aW9uIHRvIGRldGVjdCBvbiBPUyBYLCB3aGVyZWFzCi0gICAiX19wb3dlcnBjX18iIGFwcGVhcnMgdG8gYmUgdGhlIGNvcnJlY3Qgb25lIGZvciBMaW51eCB3aXRoIEdDQwotKi8KLSNpZiBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQgKF9fcG93ZXJwY19fKQotCi0jZGVmaW5lIFJFQURfVElNRVNUQU1QKHZhcikgcHBjX2dldGNvdW50ZXIoJnZhcikKLQotc3RhdGljIHZvaWQKLXBwY19nZXRjb3VudGVyKHVpbnQ2NCAqdikKLXsKLSAgICB1bnNpZ25lZCBsb25nIHRidSwgdGIsIHRidTI7Ci0KLSAgbG9vcDoKLSAgICBhc20gdm9sYXRpbGUgKCJtZnRidSAlMCIgOiAiPXIiICh0YnUpICk7Ci0gICAgYXNtIHZvbGF0aWxlICgibWZ0YiAgJTAiIDogIj1yIiAodGIpICApOwotICAgIGFzbSB2b2xhdGlsZSAoIm1mdGJ1ICUwIiA6ICI9ciIgKHRidTIpKTsKLSAgICBpZiAoX19idWlsdGluX2V4cGVjdCh0YnUgIT0gdGJ1MiwgMCkpIGdvdG8gbG9vcDsKLQotICAgIC8qIFRoZSBzbGlnaHRseSBwZWN1bGlhciB3YXkgb2Ygd3JpdGluZyB0aGUgbmV4dCBsaW5lcyBpcwotICAgICAgIGNvbXBpbGVkIGJldHRlciBieSBHQ0MgdGhhbiBhbnkgb3RoZXIgd2F5IEkgdHJpZWQuICovCi0gICAgKChsb25nKikodikpWzBdID0gdGJ1OwotICAgICgobG9uZyopKHYpKVsxXSA9IHRiOwotfQotCi0jZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQotCi0vKiB0aGlzIGlzIGZvciBsaW51eC94ODYgKGFuZCBwcm9iYWJseSBhbnkgb3RoZXIgR0NDL3g4NiBjb21ibykgKi8KLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YWwpIFwKLSAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9QSIgKHZhbCkpCi0KLSNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKLQotLyogZm9yIGdjYy94ODZfNjQsIHRoZSAiQSIgY29uc3RyYWludCBpbiBESSBtb2RlIG1lYW5zICplaXRoZXIqIHJheCAqb3IqIHJkeDsKLSAgIG5vdCBlZHg6ZWF4IGFzIGl0IGRvZXMgZm9yIGkzODYuICBTaW5jZSByZHRzYyBwdXRzIGl0cyByZXN1bHQgaW4gZWR4OmVheAotICAgZXZlbiBpbiA2NC1iaXQgbW9kZSwgd2UgbmVlZCB0byB1c2UgImEiIGFuZCAiZCIgZm9yIHRoZSBsb3dlciBhbmQgdXBwZXIKLSAgIDMyLWJpdCBwaWVjZXMgb2YgdGhlIHJlc3VsdC4gKi8KLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YWwpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdW5zaWduZWQgaW50IGgsIGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmR0c2MiIDogIj1hIiAobCksICI9ZCIgKGgpKTsgXAotICAgICh2YWwpID0gKCh1aW50NjQpbCkgfCAoKCh1aW50NjQpaCkgPDwgMzIpOyAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQotCi0KLSNlbHNlCi0KLSNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gaW1wbGVtZW50IHRpbWVzdGFtcCBjb3VudGVyIGZvciB0aGlzIGFyY2hpdGVjdHVyZSIKLQotI2VuZGlmCi0KLXZvaWQgZHVtcF90c2MoaW50IG9wY29kZSwgaW50IHRpY2tlZCwgdWludDY0IGluc3QwLCB1aW50NjQgaW5zdDEsCi0gICAgICAgICAgICAgIHVpbnQ2NCBsb29wMCwgdWludDY0IGxvb3AxLCB1aW50NjQgaW50cjAsIHVpbnQ2NCBpbnRyMSkKLXsKLSAgICB1aW50NjQgaW50ciwgaW5zdCwgbG9vcDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotICAgIGlmICghdHN0YXRlLT5pbnRlcnAtPnRzY2R1bXApCi0gICAgICAgIHJldHVybjsKLSAgICBpbnRyID0gaW50cjEgLSBpbnRyMDsKLSAgICBpbnN0ID0gaW5zdDEgLSBpbnN0MCAtIGludHI7Ci0gICAgbG9vcCA9IGxvb3AxIC0gbG9vcDAgLSBpbnRyOwotICAgIGZwcmludGYoc3RkZXJyLCAib3Bjb2RlPSUwM2QgdD0lZCBpbnN0PSUwNmxsZCBsb29wPSUwNmxsZFxuIiwKLSAgICAgICAgICAgIG9wY29kZSwgdGlja2VkLCBpbnN0LCBsb29wKTsKLX0KLQotI2VuZGlmCi0KIC8qIFR1cm4gdGhpcyBvbiBpZiB5b3VyIGNvbXBpbGVyIGNob2tlcyBvbiB0aGUgYmlnIHN3aXRjaDogKi8KIC8qICNkZWZpbmUgQ0FTRV9UT09fQklHIDEgKi8KIApAQCAtMTA4LDI0ICszMywxMyBAQAogdHlwZWRlZiBQeU9iamVjdCAqKCpjYWxscHJvYykoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCi0jaWZkZWYgV0lUSF9UU0MKLXN0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBpbnQsIHVpbnQ2NCosIHVpbnQ2NCopOwotI2Vsc2UKLXN0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBpbnQpOwotI2VuZGlmCi1zdGF0aWMgUHlPYmplY3QgKiBmYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQsIGludCk7Ci1zdGF0aWMgUHlPYmplY3QgKiBkb19jYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQpOwotc3RhdGljIFB5T2JqZWN0ICogZXh0X2RvX2NhbGwoUHlPYmplY3QgKiwgUHlPYmplY3QgKioqLCBpbnQsIGludCwgaW50KTsKLXN0YXRpYyBQeU9iamVjdCAqIHVwZGF0ZV9rZXl3b3JkX2FyZ3MoUHlPYmplY3QgKiwgaW50LCBQeU9iamVjdCAqKiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwotc3RhdGljIFB5T2JqZWN0ICogdXBkYXRlX3N0YXJfYXJncyhpbnQsIGludCwgUHlPYmplY3QgKiwgUHlPYmplY3QgKioqKTsKLXN0YXRpYyBQeU9iamVjdCAqIGxvYWRfYXJncyhQeU9iamVjdCAqKiosIGludCk7Ci0jZGVmaW5lIENBTExfRkxBR19WQVIgMQotI2RlZmluZSBDQUxMX0ZMQUdfS1cgMgorc3RhdGljIFB5T2JqZWN0ICogY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKiosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqLCBQeU9iamVjdCAqKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKiBkb19jYWxsX2NvcmUoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKICNpZmRlZiBMTFRSQUNFCiBzdGF0aWMgaW50IGxsdHJhY2U7Ci1zdGF0aWMgaW50IHBydHJhY2UoUHlPYmplY3QgKiwgY2hhciAqKTsKK3N0YXRpYyBpbnQgcHJ0cmFjZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOwogI2VuZGlmCiBzdGF0aWMgaW50IGNhbGxfdHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqLApAQCAtMTM3LDE0ICs1MSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICopOwogc3RhdGljIGludCBtYXliZV9jYWxsX2xpbmVfdHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICosIGludCAqLCBpbnQgKiwgaW50ICopOworc3RhdGljIHZvaWQgbWF5YmVfZHRyYWNlX2xpbmUoUHlGcmFtZU9iamVjdCAqLCBpbnQgKiwgaW50ICosIGludCAqKTsKK3N0YXRpYyB2b2lkIGR0cmFjZV9mdW5jdGlvbl9lbnRyeShQeUZyYW1lT2JqZWN0ICopOworc3RhdGljIHZvaWQgZHRyYWNlX2Z1bmN0aW9uX3JldHVybihQeUZyYW1lT2JqZWN0ICopOwogCiBzdGF0aWMgUHlPYmplY3QgKiBjbXBfb3V0Y29tZShpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogaW1wb3J0X25hbWUoUHlGcmFtZU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBQeU9iamVjdCAqIGltcG9ydF9mcm9tKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCBpbXBvcnRfYWxsX2Zyb20oUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgdm9pZCBmb3JtYXRfZXhjX2NoZWNrX2FyZyhQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogc3RhdGljIHZvaWQgZm9ybWF0X2V4Y191bmJvdW5kKFB5Q29kZU9iamVjdCAqY28sIGludCBvcGFyZyk7CiBzdGF0aWMgUHlPYmplY3QgKiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKiwgdW5zaWduZWQgY2hhciAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqLCBjb25zdCBfUHlfQ09ERVVOSVQgKik7CiBzdGF0aWMgUHlPYmplY3QgKiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqLCBfUHlfSWRlbnRpZmllciAqKTsKIAogI2RlZmluZSBOQU1FX0VSUk9SX01TRyBcCkBAIC03OTYsMTEgKzcxNCwxOCBAQAogUHlPYmplY3QgKgogUHlFdmFsX0V2YWxGcmFtZUV4KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCiB7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5pbnRlcnAtPmV2YWxfZnJhbWUoZiwgdGhyb3dmbGFnKTsKK30KKworUHlPYmplY3QgKgorX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCit7CiAjaWZkZWYgRFhQQUlSUwogICAgIGludCBsYXN0b3Bjb2RlID0gMDsKICNlbmRpZgogICAgIFB5T2JqZWN0ICoqc3RhY2tfcG9pbnRlcjsgIC8qIE5leHQgZnJlZSBzbG90IGluIHZhbHVlIHN0YWNrICovCi0gICAgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cjsKKyAgICBjb25zdCBfUHlfQ09ERVVOSVQgKm5leHRfaW5zdHI7CiAgICAgaW50IG9wY29kZTsgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlICovCiAgICAgaW50IG9wYXJnOyAgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlIGFyZ3VtZW50LCBpZiBhbnkgKi8KICAgICBlbnVtIHdoeV9jb2RlIHdoeTsgLyogUmVhc29uIGZvciBibG9jayBzdGFjayB1bndpbmQgKi8KQEAgLTgxOCw3ICs3NDMsNyBAQAogICAgICAgIHRpbWUgaXQgaXMgdGVzdGVkLiAqLwogICAgIGludCBpbnN0cl91YiA9IC0xLCBpbnN0cl9sYiA9IDAsIGluc3RyX3ByZXYgPSAtMTsKIAotICAgIHVuc2lnbmVkIGNoYXIgKmZpcnN0X2luc3RyOworICAgIGNvbnN0IF9QeV9DT0RFVU5JVCAqZmlyc3RfaW5zdHI7CiAgICAgUHlPYmplY3QgKm5hbWVzOwogICAgIFB5T2JqZWN0ICpjb25zdHM7CiAKQEAgLTg4NiwyNCArODExLDEwIEBACiAvKiBJbXBvcnQgdGhlIHN0YXRpYyBqdW1wIHRhYmxlICovCiAjaW5jbHVkZSAib3Bjb2RlX3RhcmdldHMuaCIKIAotLyogVGhpcyBtYWNybyBpcyB1c2VkIHdoZW4gc2V2ZXJhbCBvcGNvZGVzIGRlZmVyIHRvIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uCi0gICAoZS5nLiBTRVRVUF9MT09QLCBTRVRVUF9GSU5BTExZKSAqLwotI2RlZmluZSBUQVJHRVRfV0lUSF9JTVBMKG9wLCBpbXBsKSBcCi0gICAgVEFSR0VUXyMjb3A6IFwKLSAgICAgICAgb3Bjb2RlID0gb3A7IFwKLSAgICAgICAgaWYgKEhBU19BUkcob3ApKSBcCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsgXAotICAgIGNhc2Ugb3A6IFwKLSAgICAgICAgZ290byBpbXBsOyBcCi0KICNkZWZpbmUgVEFSR0VUKG9wKSBcCiAgICAgVEFSR0VUXyMjb3A6IFwKLSAgICAgICAgb3Bjb2RlID0gb3A7IFwKLSAgICAgICAgaWYgKEhBU19BUkcob3ApKSBcCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsgXAogICAgIGNhc2Ugb3A6CiAKLQogI2RlZmluZSBESVNQQVRDSCgpIFwKICAgICB7IFwKICAgICAgICAgaWYgKCFfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZXZhbF9icmVha2VyKSkgeyAgICAgIFwKQEAgLTkxNSwxOCArODI2LDIwIEBACiAjaWZkZWYgTExUUkFDRQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgXAogICAgIHsgXAotICAgICAgICBpZiAoIWxsdHJhY2UgJiYgIV9QeV9UcmFjaW5nUG9zc2libGUpIHsgXAorICAgICAgICBpZiAoIWxsdHJhY2UgJiYgIV9QeV9UcmFjaW5nUG9zc2libGUgJiYgIVB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKSB7IFwKICAgICAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsgXAotICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbKm5leHRfaW5zdHIrK107IFwKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOyBcCisgICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1tvcGNvZGVdOyBcCiAgICAgICAgIH0gXAogICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7IFwKICAgICB9CiAjZWxzZQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgXAogICAgIHsgXAotICAgICAgICBpZiAoIV9QeV9UcmFjaW5nUG9zc2libGUpIHsgXAorICAgICAgICBpZiAoIV9QeV9UcmFjaW5nUG9zc2libGUgJiYgIVB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKSB7IFwKICAgICAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsgXAotICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbKm5leHRfaW5zdHIrK107IFwKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOyBcCisgICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1tvcGNvZGVdOyBcCiAgICAgICAgIH0gXAogICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7IFwKICAgICB9CkBAIC05MzUsMTAgKzg0OCw3IEBACiAjZWxzZQogI2RlZmluZSBUQVJHRVQob3ApIFwKICAgICBjYXNlIG9wOgotI2RlZmluZSBUQVJHRVRfV0lUSF9JTVBMKG9wLCBpbXBsKSBcCi0gICAgLyogc2lsZW5jZSBjb21waWxlciB3YXJuaW5ncyBhYm91dCBgaW1wbGAgdW51c2VkICovIFwKLSAgICBpZiAoMCkgZ290byBpbXBsOyBcCi0gICAgY2FzZSBvcDoKKwogI2RlZmluZSBESVNQQVRDSCgpIGNvbnRpbnVlCiAjZGVmaW5lIEZBU1RfRElTUEFUQ0goKSBnb3RvIGZhc3RfbmV4dF9vcGNvZGUKICNlbmRpZgpAQCAtOTUyLDcwICs4NjIsMzMgQEAKICNkZWZpbmUgR0VUSVRFTSh2LCBpKSBQeVR1cGxlX0dldEl0ZW0oKHYpLCAoaSkpCiAjZW5kaWYKIAotI2lmZGVmIFdJVEhfVFNDCi0vKiBVc2UgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciB0byBtYXJrIGNlcnRhaW4gZXZlbnRzOgotICAgaW5zdDAgLS0gYmVnaW5uaW5nIG9mIHN3aXRjaCBzdGF0ZW1lbnQgZm9yIG9wY29kZSBkaXNwYXRjaAotICAgaW5zdDEgLS0gZW5kIG9mIHN3aXRjaCBzdGF0ZW1lbnQgKG1heSBiZSBza2lwcGVkKQotICAgbG9vcDAgLS0gdGhlIHRvcCBvZiB0aGUgbWFpbmxvb3AKLSAgIGxvb3AxIC0tIHBsYWNlIHdoZXJlIGNvbnRyb2wgcmV0dXJucyBhZ2FpbiB0byB0b3Agb2YgbWFpbmxvb3AKLSAgICAgICAgICAgIChtYXkgYmUgc2tpcHBlZCkKLSAgIGludHIxIC0tIGJlZ2lubmluZyBvZiBsb25nIGludGVycnVwdGlvbgotICAgaW50cjIgLS0gZW5kIG9mIGxvbmcgaW50ZXJydXB0aW9uCi0KLSAgIE1hbnkgb3Bjb2RlcyBjYWxsIG91dCB0byBoZWxwZXIgQyBmdW5jdGlvbnMuICBJbiBzb21lIGNhc2VzLCB0aGUKLSAgIHRpbWUgaW4gdGhvc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBjb3VudGVkIHRvd2FyZHMgdGhlIHRpbWUgZm9yIHRoZQotICAgb3Bjb2RlLCBidXQgbm90IGluIGFsbCBjYXNlcy4gIEZvciBleGFtcGxlLCBhIENBTExfRlVOQ1RJT04gb3Bjb2RlCi0gICBjYWxscyBhbm90aGVyIFB5dGhvbiBmdW5jdGlvbjsgdGhlcmUncyBubyBwb2ludCBpbiBjaGFyZ2UgYWxsIHRoZQotICAgYnl0ZWNvZGUgZXhlY3V0ZWQgYnkgdGhlIGNhbGxlZCBmdW5jdGlvbiB0byB0aGUgY2FsbGVyLgotCi0gICBJdCdzIGhhcmQgdG8gbWFrZSBhIHVzZWZ1bCBqdWRnZW1lbnQgc3RhdGljYWxseS4gIEluIHRoZSBwcmVzZW5jZQotICAgb2Ygb3BlcmF0b3Igb3ZlcmxvYWRpbmcsIGl0J3MgaW1wb3NzaWJsZSB0byB0ZWxsIGlmIGEgY2FsbCB3aWxsCi0gICBleGVjdXRlIG5ldyBQeXRob24gY29kZSBvciBub3QuCi0KLSAgIEl0J3MgYSBjYXNlLWJ5LWNhc2UganVkZ2VtZW50LiAgSSdsbCB1c2UgaW50cjEgZm9yIHRoZSBmb2xsb3dpbmcKLSAgIGNhc2VzOgotCi0gICBJTVBPUlRfU1RBUgotICAgSU1QT1JUX0ZST00KLSAgIENBTExfRlVOQ1RJT04gKGFuZCBmcmllbmRzKQotCi0gKi8KLSAgICB1aW50NjQgaW5zdDAsIGluc3QxLCBsb29wMCwgbG9vcDEsIGludHIwID0gMCwgaW50cjEgPSAwOwotICAgIGludCB0aWNrZWQgPSAwOwotCi0gICAgUkVBRF9USU1FU1RBTVAoaW5zdDApOwotICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKLSAgICBSRUFEX1RJTUVTVEFNUChsb29wMCk7Ci0gICAgUkVBRF9USU1FU1RBTVAobG9vcDEpOwotCi0gICAgLyogc2h1dCB1cCB0aGUgY29tcGlsZXIgKi8KLSAgICBvcGNvZGUgPSAwOwotI2VuZGlmCi0KIC8qIENvZGUgYWNjZXNzIG1hY3JvcyAqLwogCi0jZGVmaW5lIElOU1RSX09GRlNFVCgpICAoKGludCkobmV4dF9pbnN0ciAtIGZpcnN0X2luc3RyKSkKLSNkZWZpbmUgTkVYVE9QKCkgICAgICAgICgqbmV4dF9pbnN0cisrKQotI2RlZmluZSBORVhUQVJHKCkgICAgICAgKG5leHRfaW5zdHIgKz0gMiwgKG5leHRfaW5zdHJbLTFdPDw4KSArIG5leHRfaW5zdHJbLTJdKQotI2RlZmluZSBQRUVLQVJHKCkgICAgICAgKChuZXh0X2luc3RyWzJdPDw4KSArIG5leHRfaW5zdHJbMV0pCi0jZGVmaW5lIEpVTVBUTyh4KSAgICAgICAobmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyICsgKHgpKQotI2RlZmluZSBKVU1QQlkoeCkgICAgICAgKG5leHRfaW5zdHIgKz0gKHgpKQorLyogVGhlIGludGVnZXIgb3ZlcmZsb3cgaXMgY2hlY2tlZCBieSBhbiBhc3NlcnRpb24gYmVsb3cuICovCisjZGVmaW5lIElOU1RSX09GRlNFVCgpICAoc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKiAoaW50KShuZXh0X2luc3RyIC0gZmlyc3RfaW5zdHIpKQorI2RlZmluZSBORVhUT1BBUkcoKSAgZG8geyBcCisgICAgICAgIF9QeV9DT0RFVU5JVCB3b3JkID0gKm5leHRfaW5zdHI7IFwKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERSh3b3JkKTsgXAorICAgICAgICBvcGFyZyA9IF9QeV9PUEFSRyh3b3JkKTsgXAorICAgICAgICBuZXh0X2luc3RyKys7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBKVU1QVE8oeCkgICAgICAgKG5leHRfaW5zdHIgPSBmaXJzdF9pbnN0ciArICh4KSAvIHNpemVvZihfUHlfQ09ERVVOSVQpKQorI2RlZmluZSBKVU1QQlkoeCkgICAgICAgKG5leHRfaW5zdHIgKz0gKHgpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpCiAKIC8qIE9wQ29kZSBwcmVkaWN0aW9uIG1hY3JvcwogICAgIFNvbWUgb3Bjb2RlcyB0ZW5kIHRvIGNvbWUgaW4gcGFpcnMgdGh1cyBtYWtpbmcgaXQgcG9zc2libGUgdG8KICAgICBwcmVkaWN0IHRoZSBzZWNvbmQgY29kZSB3aGVuIHRoZSBmaXJzdCBpcyBydW4uICBGb3IgZXhhbXBsZSwKLSAgICBDT01QQVJFX09QIGlzIG9mdGVuIGZvbGxvd2VkIGJ5IEpVTVBfSUZfRkFMU0Ugb3IgSlVNUF9JRl9UUlVFLiAgQW5kLAotICAgIHRob3NlIG9wY29kZXMgYXJlIG9mdGVuIGZvbGxvd2VkIGJ5IGEgUE9QX1RPUC4KKyAgICBDT01QQVJFX09QIGlzIG9mdGVuIGZvbGxvd2VkIGJ5IFBPUF9KVU1QX0lGX0ZBTFNFIG9yIFBPUF9KVU1QX0lGX1RSVUUuCiAKICAgICBWZXJpZnlpbmcgdGhlIHByZWRpY3Rpb24gY29zdHMgYSBzaW5nbGUgaGlnaC1zcGVlZCB0ZXN0IG9mIGEgcmVnaXN0ZXIKICAgICB2YXJpYWJsZSBhZ2FpbnN0IGEgY29uc3RhbnQuICBJZiB0aGUgcGFpcmluZyB3YXMgZ29vZCwgdGhlbiB0aGUKICAgICBwcm9jZXNzb3IncyBvd24gaW50ZXJuYWwgYnJhbmNoIHByZWRpY2F0aW9uIGhhcyBhIGhpZ2ggbGlrZWxpaG9vZCBvZgogICAgIHN1Y2Nlc3MsIHJlc3VsdGluZyBpbiBhIG5lYXJseSB6ZXJvLW92ZXJoZWFkIHRyYW5zaXRpb24gdG8gdGhlCiAgICAgbmV4dCBvcGNvZGUuICBBIHN1Y2Nlc3NmdWwgcHJlZGljdGlvbiBzYXZlcyBhIHRyaXAgdGhyb3VnaCB0aGUgZXZhbC1sb29wCi0gICAgaW5jbHVkaW5nIGl0cyB0d28gdW5wcmVkaWN0YWJsZSBicmFuY2hlcywgdGhlIEhBU19BUkcgdGVzdCBhbmQgdGhlCi0gICAgc3dpdGNoLWNhc2UuICBDb21iaW5lZCB3aXRoIHRoZSBwcm9jZXNzb3IncyBpbnRlcm5hbCBicmFuY2ggcHJlZGljdGlvbiwKLSAgICBhIHN1Y2Nlc3NmdWwgUFJFRElDVCBoYXMgdGhlIGVmZmVjdCBvZiBtYWtpbmcgdGhlIHR3byBvcGNvZGVzIHJ1biBhcyBpZgotICAgIHRoZXkgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlIHdpdGggdGhlIGJvZGllcyBjb21iaW5lZC4KKyAgICBpbmNsdWRpbmcgaXRzIHVucHJlZGljdGFibGUgc3dpdGNoLWNhc2UgYnJhbmNoLiAgQ29tYmluZWQgd2l0aCB0aGUKKyAgICBwcm9jZXNzb3IncyBpbnRlcm5hbCBicmFuY2ggcHJlZGljdGlvbiwgYSBzdWNjZXNzZnVsIFBSRURJQ1QgaGFzIHRoZQorICAgIGVmZmVjdCBvZiBtYWtpbmcgdGhlIHR3byBvcGNvZGVzIHJ1biBhcyBpZiB0aGV5IHdlcmUgYSBzaW5nbGUgbmV3IG9wY29kZQorICAgIHdpdGggdGhlIGJvZGllcyBjb21iaW5lZC4KIAogICAgIElmIGNvbGxlY3Rpbmcgb3Bjb2RlIHN0YXRpc3RpY3MsIHlvdXIgY2hvaWNlcyBhcmUgdG8gZWl0aGVyIGtlZXAgdGhlCiAgICAgcHJlZGljdGlvbnMgdHVybmVkLW9uIGFuZCBpbnRlcnByZXQgdGhlIHJlc3VsdHMgYXMgaWYgc29tZSBvcGNvZGVzCkBAIC0xMDMwLDEzICs5MDMsMTkgQEAKIAogI2lmIGRlZmluZWQoRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRSkgfHwgVVNFX0NPTVBVVEVEX0dPVE9TCiAjZGVmaW5lIFBSRURJQ1Qob3ApICAgICAgICAgICAgIGlmICgwKSBnb3RvIFBSRURfIyNvcAotI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6Ci0jZGVmaW5lIFBSRURJQ1RFRF9XSVRIX0FSRyhvcCkgIFBSRURfIyNvcDoKICNlbHNlCi0jZGVmaW5lIFBSRURJQ1Qob3ApICAgICAgICAgICAgIGlmICgqbmV4dF9pbnN0ciA9PSBvcCkgZ290byBQUkVEXyMjb3AKLSNkZWZpbmUgUFJFRElDVEVEKG9wKSAgICAgICAgICAgUFJFRF8jI29wOiBuZXh0X2luc3RyKysKLSNkZWZpbmUgUFJFRElDVEVEX1dJVEhfQVJHKG9wKSAgUFJFRF8jI29wOiBvcGFyZyA9IFBFRUtBUkcoKTsgbmV4dF9pbnN0ciArPSAzCisjZGVmaW5lIFBSRURJQ1Qob3ApIFwKKyAgICBkb3sgXAorICAgICAgICBfUHlfQ09ERVVOSVQgd29yZCA9ICpuZXh0X2luc3RyOyBcCisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUod29yZCk7IFwKKyAgICAgICAgaWYgKG9wY29kZSA9PSBvcCl7IFwKKyAgICAgICAgICAgIG9wYXJnID0gX1B5X09QQVJHKHdvcmQpOyBcCisgICAgICAgICAgICBuZXh0X2luc3RyKys7IFwKKyAgICAgICAgICAgIGdvdG8gUFJFRF8jI29wOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUoMCkKICNlbmRpZgorI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6CiAKIAogLyogU3RhY2sgbWFuaXB1bGF0aW9uIG1hY3JvcyAqLwpAQCAtMTEwMCw3ICs5NzksNyBAQAogICAgIH0KIAogI2RlZmluZSBVTldJTkRfRVhDRVBUX0hBTkRMRVIoYikgXAotICAgIHsgXAorICAgIGRvIHsgXAogICAgICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOyBcCiAgICAgICAgIGFzc2VydChTVEFDS19MRVZFTCgpID49IChiKS0+Yl9sZXZlbCArIDMpOyBcCiAgICAgICAgIHdoaWxlIChTVEFDS19MRVZFTCgpID4gKGIpLT5iX2xldmVsICsgMykgeyBcCkBAIC0xMTE2LDcgKzk5NSw3IEBACiAgICAgICAgIFB5X1hERUNSRUYodHlwZSk7IFwKICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7IFwKICAgICAgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOyBcCi0gICAgfQorICAgIH0gd2hpbGUoMCkKIAogLyogU3RhcnQgb2YgY29kZSAqLwogCkBAIC0xMTYwLDIxICsxMDM5LDI0IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoUHlEVHJhY2VfRlVOQ1RJT05fRU5UUllfRU5BQkxFRCgpKQorICAgICAgICBkdHJhY2VfZnVuY3Rpb25fZW50cnkoZik7CisKICAgICBjbyA9IGYtPmZfY29kZTsKICAgICBuYW1lcyA9IGNvLT5jb19uYW1lczsKICAgICBjb25zdHMgPSBjby0+Y29fY29uc3RzOwogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKLSAgICBmaXJzdF9pbnN0ciA9ICh1bnNpZ25lZCBjaGFyKikgUHlCeXRlc19BU19TVFJJTkcoY28tPmNvX2NvZGUpOwotICAgIC8qIEFuIGV4cGxhbmF0aW9uIGlzIGluIG9yZGVyIGZvciB0aGUgbmV4dCBsaW5lLgorICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGNvLT5jb19jb2RlKSk7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfR0VUX1NJWkUoY28tPmNvX2NvZGUpIDw9IElOVF9NQVgpOworICAgIGFzc2VydChQeUJ5dGVzX0dFVF9TSVpFKGNvLT5jb19jb2RlKSAlIHNpemVvZihfUHlfQ09ERVVOSVQpID09IDApOworICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyhjby0+Y29fY29kZSksIHNpemVvZihfUHlfQ09ERVVOSVQpKSk7CisgICAgZmlyc3RfaW5zdHIgPSAoX1B5X0NPREVVTklUICopIFB5Qnl0ZXNfQVNfU1RSSU5HKGNvLT5jb19jb2RlKTsKKyAgICAvKgorICAgICAgIGYtPmZfbGFzdGkgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiwKKyAgICAgICB1bmxlc3MgaXQncyAtMSBpbiB3aGljaCBjYXNlIG5leHRfaW5zdHIgc2hvdWxkIGJlIGZpcnN0X2luc3RyLgogCi0gICAgICAgZi0+Zl9sYXN0aSBub3cgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbgotICAgICAgIGV4ZWN1dGVkLiAgWW91IG1pZ2h0IHRoaW5rIHRoaXMgd2FzIG9idmlvdXMgZnJvbSB0aGUgbmFtZSwgYnV0Ci0gICAgICAgdGhpcyB3YXNuJ3QgYWx3YXlzIHRydWUgYmVmb3JlIDIuMyEgIFB5RnJhbWVfTmV3IG5vdyBzZXRzCi0gICAgICAgZi0+Zl9sYXN0aSB0byAtMSAoaS5lLiB0aGUgaW5kZXggKmJlZm9yZSogdGhlIGZpcnN0IGluc3RydWN0aW9uKQotICAgICAgIGFuZCBZSUVMRF9WQUxVRSBkb2Vzbid0IGZpZGRsZSB3aXRoIGZfbGFzdGkgYW55IG1vcmUuICBTbyB0aGlzCi0gICAgICAgZG9lcyB3b3JrLiAgUHJvbWlzZS4KLSAgICAgICBZSUVMRF9GUk9NIHNldHMgZl9sYXN0aSB0byBpdHNlbGYsIGluIG9yZGVyIHRvIHJlcGVhdGVkIHlpZWxkCisgICAgICAgWUlFTERfRlJPTSBzZXRzIGZfbGFzdGkgdG8gaXRzZWxmLCBpbiBvcmRlciB0byByZXBlYXRlZGx5IHlpZWxkCiAgICAgICAgbXVsdGlwbGUgdmFsdWVzLgogCiAgICAgICAgV2hlbiB0aGUgUFJFRElDVCgpIG1hY3JvcyBhcmUgZW5hYmxlZCwgc29tZSBvcGNvZGUgcGFpcnMgZm9sbG93IGluCkBAIC0xMTgzLDE1ICsxMDY1LDIwIEBACiAgICAgICAgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlOyBhY2NvcmRpbmdseSxmLT5mX2xhc3RpIHdpbGwgcG9pbnQgdG8KICAgICAgICB0aGUgZmlyc3QgY29kZSBpbiB0aGUgcGFpciAoZm9yIGluc3RhbmNlLCBHRVRfSVRFUiBmb2xsb3dlZCBieQogICAgICAgIEZPUl9JVEVSIGlzIGVmZmVjdGl2ZWx5IGEgc2luZ2xlIG9wY29kZSBhbmQgZi0+Zl9sYXN0aSB3aWxsIHBvaW50Ci0gICAgICAgYXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tYmluZWQgcGFpci4pCisgICAgICAgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tYmluZWQgcGFpci4pCiAgICAgKi8KLSAgICBuZXh0X2luc3RyID0gZmlyc3RfaW5zdHIgKyBmLT5mX2xhc3RpICsgMTsKKyAgICBhc3NlcnQoZi0+Zl9sYXN0aSA+PSAtMSk7CisgICAgbmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyOworICAgIGlmIChmLT5mX2xhc3RpID49IDApIHsKKyAgICAgICAgYXNzZXJ0KGYtPmZfbGFzdGkgJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKKyAgICAgICAgbmV4dF9pbnN0ciArPSBmLT5mX2xhc3RpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKyAxOworICAgIH0KICAgICBzdGFja19wb2ludGVyID0gZi0+Zl9zdGFja3RvcDsKICAgICBhc3NlcnQoc3RhY2tfcG9pbnRlciAhPSBOVUxMKTsKICAgICBmLT5mX3N0YWNrdG9wID0gTlVMTDsgICAgICAgLyogcmVtYWlucyBOVUxMIHVubGVzcyB5aWVsZCBzdXNwZW5kcyBmcmFtZSAqLwogICAgIGYtPmZfZXhlY3V0aW5nID0gMTsKIAotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogICAgICAgICBpZiAoIXRocm93ZmxhZyAmJiBmLT5mX2V4Y190eXBlICE9IE5VTEwgJiYgZi0+Zl9leGNfdHlwZSAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBXZSB3ZXJlIGluIGFuIGV4Y2VwdCBoYW5kbGVyIHdoZW4gd2UgbGVmdCwKICAgICAgICAgICAgICAgIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSB3aGljaCB3YXMgcHV0IGFzaWRlCkBAIC0xMjE5LDIzICsxMTA2LDYgQEAKICNlbmRpZgogCiAgICAgZm9yICg7OykgewotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgIGlmIChpbnN0MSA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBBbG1vc3Qgc3VyZWx5LCB0aGUgb3Bjb2RlIGV4ZWN1dGVkIGEgYnJlYWsKLSAgICAgICAgICAgICAgIG9yIGEgY29udGludWUsIHByZXZlbnRpbmcgaW5zdDEgZnJvbSBiZWluZyBzZXQKLSAgICAgICAgICAgICAgIG9uIHRoZSB3YXkgb3V0IG9mIHRoZSBsb29wLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKLSAgICAgICAgICAgIGxvb3AxID0gaW5zdDE7Ci0gICAgICAgIH0KLSAgICAgICAgZHVtcF90c2Mob3Bjb2RlLCB0aWNrZWQsIGluc3QwLCBpbnN0MSwgbG9vcDAsIGxvb3AxLAotICAgICAgICAgICAgICAgICBpbnRyMCwgaW50cjEpOwotICAgICAgICB0aWNrZWQgPSAwOwotICAgICAgICBpbnN0MSA9IDA7Ci0gICAgICAgIGludHIwID0gMDsKLSAgICAgICAgaW50cjEgPSAwOwotICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMCk7Ci0jZW5kaWYKICAgICAgICAgYXNzZXJ0KHN0YWNrX3BvaW50ZXIgPj0gZi0+Zl92YWx1ZXN0YWNrKTsgLyogZWxzZSB1bmRlcmZsb3cgKi8KICAgICAgICAgYXNzZXJ0KFNUQUNLX0xFVkVMKCkgPD0gY28tPmNvX3N0YWNrc2l6ZSk7ICAvKiBlbHNlIG92ZXJmbG93ICovCiAgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CkBAIC0xMjQ5LDE0ICsxMTE5LDExIEBACiAgICAgICAgICAgIFB5X01ha2VQZW5kaW5nQ2FsbHMoKSBhYm92ZS4gKi8KIAogICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmV2YWxfYnJlYWtlcikpIHsKLSAgICAgICAgICAgIGlmICgqbmV4dF9pbnN0ciA9PSBTRVRVUF9GSU5BTExZKSB7CisgICAgICAgICAgICBpZiAoX1B5X09QQ09ERSgqbmV4dF9pbnN0cikgPT0gU0VUVVBfRklOQUxMWSkgewogICAgICAgICAgICAgICAgIC8qIE1ha2UgdGhlIGxhc3Qgb3Bjb2RlIGJlZm9yZQogICAgICAgICAgICAgICAgICAgIGEgdHJ5OiBmaW5hbGx5OiBibG9jayB1bmludGVycnVwdGlibGUuICovCiAgICAgICAgICAgICAgICAgZ290byBmYXN0X25leHRfb3Bjb2RlOwogICAgICAgICAgICAgfQotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICB0aWNrZWQgPSAxOwotI2VuZGlmCiAgICAgICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJnBlbmRpbmdjYWxsc190b19kbykpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlfTWFrZVBlbmRpbmdDYWxscygpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTEyOTYsNiArMTE2Myw5IEBACiAgICAgZmFzdF9uZXh0X29wY29kZToKICAgICAgICAgZi0+Zl9sYXN0aSA9IElOU1RSX09GRlNFVCgpOwogCisgICAgICAgIGlmIChQeURUcmFjZV9MSU5FX0VOQUJMRUQoKSkKKyAgICAgICAgICAgIG1heWJlX2R0cmFjZV9saW5lKGYsICZpbnN0cl9sYiwgJmluc3RyX3ViLCAmaW5zdHJfcHJldik7CisKICAgICAgICAgLyogbGluZS1ieS1saW5lIHRyYWNpbmcgc3VwcG9ydCAqLwogCiAgICAgICAgIGlmIChfUHlfVHJhY2luZ1Bvc3NpYmxlICYmCkBAIC0xMzIyLDExICsxMTkyLDcgQEAKIAogICAgICAgICAvKiBFeHRyYWN0IG9wY29kZSBhbmQgYXJndW1lbnQgKi8KIAotICAgICAgICBvcGNvZGUgPSBORVhUT1AoKTsKLSAgICAgICAgb3BhcmcgPSAwOyAgIC8qIGFsbG93cyBvcGFyZyB0byBiZSBzdG9yZWQgaW4gYSByZWdpc3RlciBiZWNhdXNlCi0gICAgICAgICAgICBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgcmVtZW1iZXJlZCBhY3Jvc3MgYSBmdWxsIGxvb3AgKi8KLSAgICAgICAgaWYgKEhBU19BUkcob3Bjb2RlKSkKLSAgICAgICAgICAgIG9wYXJnID0gTkVYVEFSRygpOworICAgICAgICBORVhUT1BBUkcoKTsKICAgICBkaXNwYXRjaF9vcGNvZGU6CiAjaWZkZWYgRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRQogI2lmZGVmIERYUEFJUlMKQEAgLTEzNTEsOSArMTIxNyw2IEBACiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIC8qIE1haW4gc3dpdGNoIG9uIG9wY29kZSAqLwotICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MCk7Ci0KICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKIAogICAgICAgICAvKiBCRVdBUkUhCkBAIC0xMzc3LDYgKzEyNDAsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKExPQURfQ09OU1QpOwogICAgICAgICBUQVJHRVQoTE9BRF9DT05TVCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gR0VUSVRFTShjb25zdHMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CkBAIC0xMzg0LDcgKzEyNDgsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFNUT1JFX0ZBU1QpOworICAgICAgICBQUkVESUNURUQoU1RPUkVfRkFTVCk7CiAgICAgICAgIFRBUkdFVChTVE9SRV9GQVNUKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQT1AoKTsKICAgICAgICAgICAgIFNFVExPQ0FMKG9wYXJnLCB2YWx1ZSk7CkBAIC0xODYzLDYgKzE3MjcsNjEgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoU1RPUkVfQU5OT1RBVElPTikgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fZGljdDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm4gPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIGlmIChmLT5mX2xvY2FscyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIHdoZW4gc3RvcmluZyBhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGZpcnN0IHRyeSB0byBnZXQgX19hbm5vdGF0aW9uc19fIGZyb20gbG9jYWxzLi4uICovCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9sb2NhbHMpKSB7CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubl9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2xvY2FscywgYW5uX3N0cik7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogLi4uaWYgc3VjY2VlZGVkLCBfX2Fubm90YXRpb25zX19bbmFtZV0gPSBhbm4gKi8KKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChhbm5fZGljdCkpIHsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShhbm5fZGljdCwgbmFtZSwgYW5uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X1NldEl0ZW0oYW5uX2RpY3QsIG5hbWUsIGFubik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChERUxFVEVfU1VCU0NSKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3ViID0gVE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29udGFpbmVyID0gU0VDT05EKCk7CkBAIC0yMDA2LDYgKzE5MjUsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBTRVRfVE9QKGF3YWl0YWJsZSk7CisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0yMDE2LDQxICsxOTM2LDUyIEBACiAgICAgICAgICAgICBQeU9iamVjdCAqYWl0ZXIgPSBUT1AoKTsKICAgICAgICAgICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IFB5X1RZUEUoYWl0ZXIpOwogCi0gICAgICAgICAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnZXR0ZXIgPSB0eXBlLT50cF9hc19hc3luYy0+YW1fYW5leHQ7Ci0KLSAgICAgICAgICAgIGlmIChnZXR0ZXIgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIG5leHRfaXRlciA9ICgqZ2V0dGVyKShhaXRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRfaXRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGFpdGVyKSkgeworICAgICAgICAgICAgICAgIGF3YWl0YWJsZSA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dChhaXRlcik7CisgICAgICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZXF1aXJlcyBhbiBpdGVyYXRvciB3aXRoICIKLSAgICAgICAgICAgICAgICAgICAgIl9fYW5leHRfXyBtZXRob2QsIGdvdCAlLjEwMHMiLAotICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCl7CisgICAgICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dDsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihuZXh0X2l0ZXIpOwotICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCi0gICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYW5leHRfXzogJS4xMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXh0X2l0ZXIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0dGVyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dF9pdGVyID0gKCpnZXR0ZXIpKGFpdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRfaXRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gaXRlcmF0b3Igd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiX19hbmV4dF9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgYXdhaXRhYmxlID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBfX2FuZXh0X186ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5leHRfaXRlciktPnRwX25hbWUpOworCisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUFVTSChhd2FpdGFibGUpOworICAgICAgICAgICAgUFJFRElDVChMT0FEX0NPTlNUKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBQUkVESUNURUQoR0VUX0FXQUlUQUJMRSk7CiAgICAgICAgIFRBUkdFVChHRVRfQVdBSVRBQkxFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKGl0ZXJhYmxlKTsKQEAgLTIwNzgsMjEgKzIwMDksMjIgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChZSUVMRF9GUk9NKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFBPUCgpOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlY2lldmVyID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVjZWl2ZXIgPSBUT1AoKTsKICAgICAgICAgICAgIGludCBlcnI7Ci0gICAgICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdChyZWNpZXZlcikgfHwgUHlDb3JvX0NoZWNrRXhhY3QocmVjaWV2ZXIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5R2VuX1NlbmQoKFB5R2VuT2JqZWN0ICopcmVjaWV2ZXIsIHYpOworICAgICAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QocmVjZWl2ZXIpIHx8IFB5Q29yb19DaGVja0V4YWN0KHJlY2VpdmVyKSkgeworICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXJlY2VpdmVyLCB2KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc2VuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRShyZWNpZXZlciktPnRwX2l0ZXJuZXh0KHJlY2lldmVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRShyZWNlaXZlciktPnRwX2l0ZXJuZXh0KHJlY2VpdmVyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKHJlY2lldmVyLCAmUHlJZF9zZW5kLCB2LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MocmVjZWl2ZXIsICZQeUlkX3NlbmQsIHYsIE5VTEwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKSB7CkBAIC0yMTAzLDcgKzIwMzUsNyBAQAogICAgICAgICAgICAgICAgIGVyciA9IF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmdmFsKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVjaWV2ZXIpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWNlaXZlcik7CiAgICAgICAgICAgICAgICAgU0VUX1RPUCh2YWwpOwogICAgICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgICAgICB9CkBAIC0yMTExLDEyICsyMDQzLDIzIEBACiAgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKICAgICAgICAgICAgIHdoeSA9IFdIWV9ZSUVMRDsKICAgICAgICAgICAgIC8qIGFuZCByZXBlYXQuLi4gKi8KLSAgICAgICAgICAgIGYtPmZfbGFzdGktLTsKKyAgICAgICAgICAgIGYtPmZfbGFzdGkgLT0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICBnb3RvIGZhc3RfeWllbGQ7CiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoWUlFTERfVkFMVUUpIHsKICAgICAgICAgICAgIHJldHZhbCA9IFBPUCgpOworCisgICAgICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fQVNZTkNfR0VORVJBVE9SKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKncgPSBfUHlBc3luY0dlblZhbHVlV3JhcHBlck5ldyhyZXR2YWwpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dmFsID0gdzsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZi0+Zl9zdGFja3RvcCA9IHN0YWNrX3BvaW50ZXI7CiAgICAgICAgICAgICB3aHkgPSBXSFlfWUlFTEQ7CiAgICAgICAgICAgICBnb3RvIGZhc3RfeWllbGQ7CkBAIC0yMTMzLDYgKzIwNzYsNyBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFBSRURJQ1RFRChQT1BfQkxPQ0spOwogICAgICAgICBUQVJHRVQoUE9QX0JMT0NLKSB7CiAgICAgICAgICAgICBQeVRyeUJsb2NrICpiID0gUHlGcmFtZV9CbG9ja1BvcChmKTsKICAgICAgICAgICAgIFVOV0lORF9CTE9DSyhiKTsKQEAgLTIyNDksNyArMjE5Myw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFVOUEFDS19TRVFVRU5DRSk7CisgICAgICAgIFBSRURJQ1RFRChVTlBBQ0tfU0VRVUVOQ0UpOwogICAgICAgICBUQVJHRVQoVU5QQUNLX1NFUVVFTkNFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc2VxID0gUE9QKCksICppdGVtLCAqKml0ZW1zOwogICAgICAgICAgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdChzZXEpICYmCkBAIC0yMzU4LDcgKzIzMDIsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMICYmIF9QeUVycl9PQ0NVUlJFRCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTIzOTgsMjYgKzIzNDIsMzMgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwogICAgICAgICAgICAgUHlPYmplY3QgKnY7CiAgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9nbG9iYWxzKQotICAgICAgICAgICAgICAgICYmIFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7CisgICAgICAgICAgICAgICAgJiYgUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9idWlsdGlucykpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdiA9IF9QeURpY3RfTG9hZEdsb2JhbCgoUHlEaWN0T2JqZWN0ICopZi0+Zl9nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGljdE9iamVjdCAqKWYtPmZfYnVpbHRpbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghX1B5RXJyX09DQ1VSUkVEKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghX1B5RXJyX09DQ1VSUkVEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9QeURpY3RfTG9hZEdsb2JhbCgpIHJldHVybnMgTlVMTCB3aXRob3V0IHJhaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGFuIGV4Y2VwdGlvbiBpZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKFB5RXhjX05hbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLCBuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiBTbG93LXBhdGggaWYgZ2xvYmFscyBvciBidWlsdGlucyBpcyBub3QgYSBkaWN0ICovCisKKyAgICAgICAgICAgICAgICAvKiBuYW1lc3BhY2UgMTogZ2xvYmFscyAqLwogICAgICAgICAgICAgICAgIHYgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfZ2xvYmFscywgbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKIAorICAgICAgICAgICAgICAgICAgICAvKiBuYW1lc3BhY2UgMjogYnVpbHRpbnMgKi8KICAgICAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKQEAgLTI0NzcsNyArMjQyOCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IFB5T2JqZWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0yNTE2LDYgKzI0NjcsMjQgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQlVJTERfU1RSSU5HKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqc3RyOworICAgICAgICAgICAgUHlPYmplY3QgKmVtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKKyAgICAgICAgICAgIGlmIChlbXB0eSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0ciA9IF9QeVVuaWNvZGVfSm9pbkFycmF5KGVtcHR5LCBzdGFja19wb2ludGVyIC0gb3BhcmcsIG9wYXJnKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbXB0eSk7CisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHdoaWxlICgtLW9wYXJnID49IDApIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFBPUCgpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBVU0goc3RyKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQlVJTERfVFVQTEUpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0dXAgPSBQeVR1cGxlX05ldyhvcGFyZyk7CiAgICAgICAgICAgICBpZiAodHVwID09IE5VTEwpCkBAIC0yNTQwLDEzICsyNTA5LDE0IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9UVVBMRV9VTlBBQ0ssIF9idWlsZF9saXN0X3VucGFjaykKLSAgICAgICAgVEFSR0VUKEJVSUxEX0xJU1RfVU5QQUNLKQotICAgICAgICBfYnVpbGRfbGlzdF91bnBhY2s6IHsKLSAgICAgICAgICAgIGludCBjb252ZXJ0X3RvX3R1cGxlID0gb3Bjb2RlID09IEJVSUxEX1RVUExFX1VOUEFDSzsKLSAgICAgICAgICAgIGludCBpOworICAgICAgICBUQVJHRVQoQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCkKKyAgICAgICAgVEFSR0VUKEJVSUxEX1RVUExFX1VOUEFDSykKKyAgICAgICAgVEFSR0VUKEJVSUxEX0xJU1RfVU5QQUNLKSB7CisgICAgICAgICAgICBpbnQgY29udmVydF90b190dXBsZSA9IG9wY29kZSAhPSBCVUlMRF9MSVNUX1VOUEFDSzsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeUxpc3RfTmV3KDApOwogICAgICAgICAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKwogICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTI1NTUsNiArMjUyNSwxNiBAQAogCiAgICAgICAgICAgICAgICAgbm9uZV92YWwgPSBfUHlMaXN0X0V4dGVuZCgoUHlMaXN0T2JqZWN0ICopc3VtLCBQRUVLKGkpKTsKICAgICAgICAgICAgICAgICBpZiAobm9uZV92YWwgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09IEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKDEgKyBvcGFyZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRUVLKGkpLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CkBAIC0yNTk5LDcgKzI1NzksNyBAQAogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKEJVSUxEX1NFVF9VTlBBQ0spIHsKLSAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5U2V0X05ldyhOVUxMKTsKICAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjYxOCw3ICsyNTk4LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChCVUlMRF9NQVApIHsKLSAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICAgICAgUHlPYmplY3QgKm1hcCA9IF9QeURpY3RfTmV3UHJlc2l6ZWQoKFB5X3NzaXplX3Qpb3BhcmcpOwogICAgICAgICAgICAgaWYgKG1hcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjQxLDcwICsyNjIxLDEwMyBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwsIF9idWlsZF9tYXBfdW5wYWNrKQotICAgICAgICBUQVJHRVQoQlVJTERfTUFQX1VOUEFDSykKLSAgICAgICAgX2J1aWxkX21hcF91bnBhY2s6IHsKLSAgICAgICAgICAgIGludCB3aXRoX2NhbGwgPSBvcGNvZGUgPT0gQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEw7Ci0gICAgICAgICAgICBpbnQgbnVtX21hcHM7Ci0gICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgVEFSR0VUKFNFVFVQX0FOTk9UQVRJT05TKSB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fZGljdDsKKyAgICAgICAgICAgIGlmIChmLT5mX2xvY2FscyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIHdoZW4gc2V0dGluZyB1cCBhbm5vdGF0aW9ucyIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBjaGVjayBpZiBfX2Fubm90YXRpb25zX18gaW4gbG9jYWxzKCkuLi4gKi8KKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2xvY2FscykpIHsKKyAgICAgICAgICAgICAgICBhbm5fZGljdCA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAvKiAuLi5pZiBub3QsIGNyZWF0ZSBhIG5ldyBvbmUgKi8KKyAgICAgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVyciA9IF9QeURpY3RfU2V0SXRlbUlkKGYtPmZfbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2Fubm90YXRpb25zX18sIGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogZG8gdGhlIHNhbWUgaWYgbG9jYWxzKCkgaXMgbm90IGEgZGljdCAqLworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fc3RyID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX3N0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9sb2NhbHMsIGFubl9zdHIpOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X1NldEl0ZW0oZi0+Zl9sb2NhbHMsIGFubl9zdHIsIGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQlVJTERfQ09OU1RfS0VZX01BUCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgUHlPYmplY3QgKm1hcDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXlzID0gVE9QKCk7CisgICAgICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2tFeGFjdChrZXlzKSB8fAorICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoa2V5cykgIT0gKFB5X3NzaXplX3Qpb3BhcmcpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgQlVJTERfQ09OU1RfS0VZX01BUCBrZXlzIGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1hcCA9IF9QeURpY3RfTmV3UHJlc2l6ZWQoKFB5X3NzaXplX3Qpb3BhcmcpOworICAgICAgICAgICAgaWYgKG1hcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoaSA9IG9wYXJnOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTShrZXlzLCBvcGFyZyAtIGkpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFBFRUsoaSArIDEpOworICAgICAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKG1hcCwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtYXApOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBVU0gobWFwKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQlVJTERfTUFQX1VOUEFDSykgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgewotICAgICAgICAgICAgICAgIG51bV9tYXBzID0gb3BhcmcgJiAweGZmOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbnVtX21hcHMgPSBvcGFyZzsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZm9yIChpID0gbnVtX21hcHM7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgIGZvciAoaSA9IG9wYXJnOyBpID4gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZyA9IFBFRUsoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgewotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW50ZXJzZWN0aW9uID0gX1B5RGljdFZpZXdfSW50ZXJzZWN0KHN1bSwgYXJnKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbiA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEVFSyhmdW5jdGlvbl9sb2NhdGlvbiArIG51bV9tYXBzKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoUHlTZXRfR0VUX1NJWkUoaW50ZXJzZWN0aW9uKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpZHggPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbiA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKGZ1bmN0aW9uX2xvY2F0aW9uICsgbnVtX21hcHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICBfUHlTZXRfTmV4dEVudHJ5KGludGVyc2VjdGlvbiwgJmlkeCwgJmtleSwgJmhhc2gpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYykpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBnb3QgbXVsdGlwbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnJVUnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJzZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJzZWN0aW9uKTsKLSAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShzdW0sIGFyZykgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTI3MTYsNyArMjcyOSw2MiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgd2hpbGUgKG51bV9tYXBzLS0pCisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgUFVTSChzdW0pOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQRUVLKGkpOworICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X01lcmdlRXgoc3VtLCBhcmcsIDIpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoMiArIG9wYXJnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsICYmIFB5VHVwbGVfQ2hlY2sodmFsKSAmJiBQeVR1cGxlX0dFVF9TSVpFKHZhbCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQeVR1cGxlX0dFVF9JVEVNKHZhbCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgZ290IG11bHRpcGxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihleGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwsIHRiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihQT1AoKSk7CiAgICAgICAgICAgICBQVVNIKHN1bSk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwpAQCAtMjc2NSw0NSArMjgzMywxMyBAQAogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKElNUE9SVF9OQU1FKSB7Ci0gICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwotICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2J1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tLCAqbGV2ZWwsICphcmdzLCAqcmVzOwotICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9faW1wb3J0X18gbm90IGZvdW5kIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICAgICAgICAgIGZyb20gPSBQT1AoKTsKLSAgICAgICAgICAgIGxldmVsID0gVE9QKCk7Ci0gICAgICAgICAgICBpZiAoUHlMb25nX0FzTG9uZyhsZXZlbCkgIT0gLTEgfHwgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2dsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9sb2NhbHMgPT0gTlVMTCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSA6IGYtPmZfbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2xvY2FscyA9PSBOVUxMID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSk7CisgICAgICAgICAgICBQeU9iamVjdCAqZnJvbWxpc3QgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsZXZlbCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgICAgIHJlcyA9IGltcG9ydF9uYW1lKGYsIG5hbWUsIGZyb21saXN0LCBsZXZlbCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGV2ZWwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZyb20pOwotICAgICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICBTVEFDS0FESigtMSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKLSAgICAgICAgICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsIGFyZ3MpOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgUHlfREVDUkVGKGZyb21saXN0KTsKICAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjgyMiw5ICsyODU4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyBmb3VuZCBkdXJpbmcgJ2ltcG9ydCAqJyIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7CiAgICAgICAgICAgICBlcnIgPSBpbXBvcnRfYWxsX2Zyb20obG9jYWxzLCBmcm9tKTsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIxKTsKICAgICAgICAgICAgIFB5RnJhbWVfTG9jYWxzVG9GYXN0KGYsIDApOwogICAgICAgICAgICAgUHlfREVDUkVGKGZyb20pOwogICAgICAgICAgICAgaWYgKGVyciAhPSAwKQpAQCAtMjgzNiw5ICsyODcwLDcgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwogICAgICAgICAgICAgUHlPYmplY3QgKmZyb20gPSBUT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7CiAgICAgICAgICAgICByZXMgPSBpbXBvcnRfZnJvbShmcm9tLCBuYW1lKTsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIxKTsKICAgICAgICAgICAgIFBVU0gocmVzKTsKICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjg1MCw3ICsyODgyLDcgQEAKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhQT1BfSlVNUF9JRl9GQUxTRSk7CisgICAgICAgIFBSRURJQ1RFRChQT1BfSlVNUF9JRl9GQUxTRSk7CiAgICAgICAgIFRBUkdFVChQT1BfSlVNUF9JRl9GQUxTRSkgewogICAgICAgICAgICAgUHlPYmplY3QgKmNvbmQgPSBQT1AoKTsKICAgICAgICAgICAgIGludCBlcnI7CkBAIC0yODc0LDcgKzI5MDYsNyBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhQT1BfSlVNUF9JRl9UUlVFKTsKKyAgICAgICAgUFJFRElDVEVEKFBPUF9KVU1QX0lGX1RSVUUpOwogICAgICAgICBUQVJHRVQoUE9QX0pVTVBfSUZfVFJVRSkgewogICAgICAgICAgICAgUHlPYmplY3QgKmNvbmQgPSBQT1AoKTsKICAgICAgICAgICAgIGludCBlcnI7CkBAIC0yOTUxLDcgKzI5ODMsNyBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhKVU1QX0FCU09MVVRFKTsKKyAgICAgICAgUFJFRElDVEVEKEpVTVBfQUJTT0xVVEUpOwogICAgICAgICBUQVJHRVQoSlVNUF9BQlNPTFVURSkgewogICAgICAgICAgICAgSlVNUFRPKG9wYXJnKTsKICNpZiBGQVNUX0xPT1BTCkBAIC0yOTc3LDYgKzMwMDksNyBAQAogICAgICAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgUFJFRElDVChGT1JfSVRFUik7CisgICAgICAgICAgICBQUkVESUNUKENBTExfRlVOQ1RJT04pOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0zMDA1LDEwICszMDM4LDExIEBACiAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBSRURJQ1QoTE9BRF9DT05TVCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKEZPUl9JVEVSKTsKKyAgICAgICAgUFJFRElDVEVEKEZPUl9JVEVSKTsKICAgICAgICAgVEFSR0VUKEZPUl9JVEVSKSB7CiAgICAgICAgICAgICAvKiBiZWZvcmU6IFtpdGVyXTsgYWZ0ZXI6IFtpdGVyLCBpdGVyKCldICpvciogW10gKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyID0gVE9QKCk7CkBAIC0zMDMwLDYgKzMwNjQsNyBAQAogICAgICAgICAgICAgU1RBQ0tBREooLTEpOwogICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOwogICAgICAgICAgICAgSlVNUEJZKG9wYXJnKTsKKyAgICAgICAgICAgIFBSRURJQ1QoUE9QX0JMT0NLKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMzA0NiwxMCArMzA4MSw5IEBACiAgICAgICAgICAgICBnb3RvIGZhc3RfYmxvY2tfZW5kOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChTRVRVUF9MT09QLCBfc2V0dXBfZmluYWxseSkKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChTRVRVUF9FWENFUFQsIF9zZXR1cF9maW5hbGx5KQotICAgICAgICBUQVJHRVQoU0VUVVBfRklOQUxMWSkKLSAgICAgICAgX3NldHVwX2ZpbmFsbHk6IHsKKyAgICAgICAgVEFSR0VUKFNFVFVQX0xPT1ApCisgICAgICAgIFRBUkdFVChTRVRVUF9FWENFUFQpCisgICAgICAgIFRBUkdFVChTRVRVUF9GSU5BTExZKSB7CiAgICAgICAgICAgICAvKiBOT1RFOiBJZiB5b3UgYWRkIGFueSBuZXcgYmxvY2stc2V0dXAgb3Bjb2RlcyB0aGF0CiAgICAgICAgICAgICAgICBhcmUgbm90IHRyeS9leGNlcHQvZmluYWxseSBoYW5kbGVycywgeW91IG1heSBuZWVkCiAgICAgICAgICAgICAgICB0byB1cGRhdGUgdGhlIFB5R2VuX05lZWRzRmluYWxpemluZygpIGZ1bmN0aW9uLgpAQCAtMzA4MCw2ICszMTE0LDcgQEAKICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgUFJFRElDVChHRVRfQVdBSVRBQkxFKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMzIyOCwxNzggKzMyNjMsMTM1IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKENBTExfRlVOQ1RJT04pOwogICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTikgewogICAgICAgICAgICAgUHlPYmplY3QgKipzcCwgKnJlczsKICAgICAgICAgICAgIFBDQUxMKFBDQUxMX0FMTCk7CiAgICAgICAgICAgICBzcCA9IHN0YWNrX3BvaW50ZXI7Ci0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZywgJmludHIwLCAmaW50cjEpOwotI2Vsc2UKLSAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZyk7Ci0jZW5kaWYKKyAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZywgTlVMTCk7CiAgICAgICAgICAgICBzdGFja19wb2ludGVyID0gc3A7CiAgICAgICAgICAgICBQVVNIKHJlcyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoQ0FMTF9GVU5DVElPTl9WQVIsIF9jYWxsX2Z1bmN0aW9uX3Zhcl9rdykKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChDQUxMX0ZVTkNUSU9OX0tXLCBfY2FsbF9mdW5jdGlvbl92YXJfa3cpCi0gICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OX1ZBUl9LVykKLSAgICAgICAgX2NhbGxfZnVuY3Rpb25fdmFyX2t3OiB7Ci0gICAgICAgICAgICBpbnQgbmEgPSBvcGFyZyAmIDB4ZmY7Ci0gICAgICAgICAgICBpbnQgbmsgPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgIGludCBmbGFncyA9IChvcGNvZGUgLSBDQUxMX0ZVTkNUSU9OKSAmIDM7Ci0gICAgICAgICAgICBpbnQgbiA9IG5hICsgMiAqIG5rOwotICAgICAgICAgICAgUHlPYmplY3QgKipwZnVuYywgKmZ1bmMsICoqc3AsICpyZXM7CisgICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OX0tXKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqKnNwLCAqcmVzLCAqbmFtZXM7CisKKyAgICAgICAgICAgIG5hbWVzID0gUE9QKCk7CisgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KG5hbWVzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKG5hbWVzKSA8PSBvcGFyZyk7CiAgICAgICAgICAgICBQQ0FMTChQQ0FMTF9BTEwpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX1ZBUikKLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfS1cpCi0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgcGZ1bmMgPSBzdGFja19wb2ludGVyIC0gbiAtIDE7Ci0gICAgICAgICAgICBmdW5jID0gKnBmdW5jOwotCi0gICAgICAgICAgICBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykKLSAgICAgICAgICAgICAgICAmJiBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICAgICAgZnVuYyA9IFB5TWV0aG9kX0dFVF9GVU5DVElPTihmdW5jKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgUHlfU0VUUkVGKCpwZnVuYywgc2VsZik7Ci0gICAgICAgICAgICAgICAgbmErKzsKLSAgICAgICAgICAgICAgICAvKiBuKys7ICovCi0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CiAgICAgICAgICAgICBzcCA9IHN0YWNrX3BvaW50ZXI7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7Ci0gICAgICAgICAgICByZXMgPSBleHRfZG9fY2FsbChmdW5jLCAmc3AsIGZsYWdzLCBuYSwgbmspOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOworICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnLCBuYW1lcyk7CiAgICAgICAgICAgICBzdGFja19wb2ludGVyID0gc3A7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0KLSAgICAgICAgICAgIHdoaWxlIChzdGFja19wb2ludGVyID4gcGZ1bmMpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbyA9IFBPUCgpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIFBVU0gocmVzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CisKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChNQUtFX0NMT1NVUkUsIF9tYWtlX2Z1bmN0aW9uKQotICAgICAgICBUQVJHRVQoTUFLRV9GVU5DVElPTikKLSAgICAgICAgX21ha2VfZnVuY3Rpb246IHsKLSAgICAgICAgICAgIGludCBwb3NkZWZhdWx0cyA9IG9wYXJnICYgMHhmZjsKLSAgICAgICAgICAgIGludCBrd2RlZmF1bHRzID0gKG9wYXJnPj44KSAmIDB4ZmY7Ci0gICAgICAgICAgICBpbnQgbnVtX2Fubm90YXRpb25zID0gKG9wYXJnID4+IDE2KSAmIDB4N2ZmZjsKKyAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT05fRVgpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jLCAqY2FsbGFyZ3MsICprd2FyZ3MgPSBOVUxMLCAqcmVzdWx0OworICAgICAgICAgICAgUENBTEwoUENBTExfQUxMKTsKKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDEpIHsKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSBQT1AoKTsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KGt3YXJncykpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmQgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShkLCBrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFB5RGljdF9VcGRhdGUgcmFpc2VzIGF0dHJpYnV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICogZXJyb3IgKHBlcmNvbGF0ZWQgZnJvbSBhbiBhdHRlbXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0byBnZXQgJ2tleXMnIGF0dHJpYnV0ZSkgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICogYSB0eXBlIGVycm9yIGlmIGl0cyBzZWNvbmQgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGlzIG5vdCBhIG1hcHBpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBTRUNPTkQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7CisgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IGQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChrd2FyZ3MpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhbGxhcmdzID0gUE9QKCk7CisgICAgICAgICAgICBmdW5jID0gVE9QKCk7CisgICAgICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2tFeGFjdChjYWxsYXJncykpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlfVFlQRShjYWxsYXJncyktPnRwX2l0ZXIgPT0gTlVMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIVB5U2VxdWVuY2VfQ2hlY2soY2FsbGFyZ3MpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYW4gaXRlcmFibGUsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFyZ3MtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFyZ3MpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9TRVRSRUYoY2FsbGFyZ3MsIFB5U2VxdWVuY2VfVHVwbGUoY2FsbGFyZ3MpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QoY2FsbGFyZ3MpKTsKIAotICAgICAgICAgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gUE9QKCk7IC8qIHF1YWxuYW1lICovCi0gICAgICAgICAgICBQeU9iamVjdCAqY29kZSA9IFBPUCgpOyAvKiBjb2RlIG9iamVjdCAqLwotICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShjb2RlLCBmLT5mX2dsb2JhbHMsIHF1YWxuYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihjb2RlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CisgICAgICAgICAgICByZXN1bHQgPSBkb19jYWxsX2NvcmUoZnVuYywgY2FsbGFyZ3MsIGt3YXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFyZ3MpOworICAgICAgICAgICAgUHlfWERFQ1JFRihrd2FyZ3MpOwogCi0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQorICAgICAgICAgICAgU0VUX1RPUChyZXN1bHQpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBNQUtFX0NMT1NVUkUpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xvc3VyZSA9IFBPUCgpOwotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldENsb3N1cmUoZnVuYywgY2xvc3VyZSkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzIGJ5dGVjb2RlIGlzIGNvcnJ1cHQuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNsb3N1cmUpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2xvc3VyZSk7CisgICAgICAgIFRBUkdFVChNQUtFX0ZVTkNUSU9OKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjb2Rlb2JqID0gUE9QKCk7CisgICAgICAgICAgICBQeUZ1bmN0aW9uT2JqZWN0ICpmdW5jID0gKFB5RnVuY3Rpb25PYmplY3QgKikKKyAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShjb2Rlb2JqLCBmLT5mX2dsb2JhbHMsIHF1YWxuYW1lKTsKKworICAgICAgICAgICAgUHlfREVDUkVGKGNvZGVvYmopOworICAgICAgICAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKKyAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobnVtX2Fubm90YXRpb25zID4gMCkgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFtZV9peDsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXMgPSBQT1AoKTsgLyogbmFtZXMgb2YgYXJncyB3aXRoIGFubm90YXRpb25zICovCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubnMgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGFubnMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5hbWVfaXggPSBQeVR1cGxlX1NpemUobmFtZXMpOwotICAgICAgICAgICAgICAgIGFzc2VydChudW1fYW5ub3RhdGlvbnMgPT0gbmFtZV9peCsxKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobmFtZV9peCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUsICp2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgICAgICAgICAgLS1uYW1lX2l4OwotICAgICAgICAgICAgICAgICAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShuYW1lcywgbmFtZV9peCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKGFubnMsIG5hbWUsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5ucyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMoZnVuYywgYW5ucykgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzCi0gICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMgY2hhbmdlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubnMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5zKTsKKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYyAtPmZ1bmNfY2xvc3VyZSA9IFBPUCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwNCkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChUT1AoKSkpOworICAgICAgICAgICAgICAgIGZ1bmMtPmZ1bmNfYW5ub3RhdGlvbnMgPSBQT1AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDIpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jLT5mdW5jX2t3ZGVmYXVsdHMgPSBQT1AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDEpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYy0+ZnVuY19kZWZhdWx0cyA9IFBPUCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvKiBYWFggTWF5YmUgdGhpcyBzaG91bGQgYmUgYSBzZXBhcmF0ZSBvcGNvZGU/ICovCi0gICAgICAgICAgICBpZiAoa3dkZWZhdWx0cyA+IDApIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmcyA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgICAgICBpZiAoZGVmcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd2hpbGUgKC0ta3dkZWZhdWx0cyA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7IC8qIGRlZmF1bHQgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFBPUCgpOyAvKiBrdyBvbmx5IGFyZyBuYW1lICovCi0gICAgICAgICAgICAgICAgICAgIGludCBlcnIgPSBQeURpY3RfU2V0SXRlbShkZWZzLCBrZXksIHYpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0S3dEZWZhdWx0cyhmdW5jLCBkZWZzKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXRLd0RlZmF1bHRzIGNoYW5nZXMuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocG9zZGVmYXVsdHMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZnMgPSBQeVR1cGxlX05ldyhwb3NkZWZhdWx0cyk7Ci0gICAgICAgICAgICAgICAgaWYgKGRlZnMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHdoaWxlICgtLXBvc2RlZmF1bHRzID49IDApCi0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oZGVmcywgcG9zZGVmYXVsdHMsIFBPUCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXREZWZhdWx0cyhmdW5jLCBkZWZzKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXREZWZhdWx0cyBjaGFuZ2VzLiAqLwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUFVTSChmdW5jKTsKKyAgICAgICAgICAgIFBVU0goKFB5T2JqZWN0ICopZnVuYyk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTM0MjEsOSArMzQxMyw2OCBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChGT1JNQVRfVkFMVUUpIHsKKyAgICAgICAgICAgIC8qIEhhbmRsZXMgZi1zdHJpbmcgdmFsdWUgZm9ybWF0dGluZy4gKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgICAgICBQeU9iamVjdCAqZm10X3NwZWM7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgICAgICAgICBQeU9iamVjdCAqKCpjb252X2ZuKShQeU9iamVjdCAqKTsKKyAgICAgICAgICAgIGludCB3aGljaF9jb252ZXJzaW9uID0gb3BhcmcgJiBGVkNfTUFTSzsKKyAgICAgICAgICAgIGludCBoYXZlX2ZtdF9zcGVjID0gKG9wYXJnICYgRlZTX01BU0spID09IEZWU19IQVZFX1NQRUM7CisKKyAgICAgICAgICAgIGZtdF9zcGVjID0gaGF2ZV9mbXRfc3BlYyA/IFBPUCgpIDogTlVMTDsKKyAgICAgICAgICAgIHZhbHVlID0gUE9QKCk7CisKKyAgICAgICAgICAgIC8qIFNlZSBpZiBhbnkgY29udmVyc2lvbiBpcyBzcGVjaWZpZWQuICovCisgICAgICAgICAgICBzd2l0Y2ggKHdoaWNoX2NvbnZlcnNpb24pIHsKKyAgICAgICAgICAgIGNhc2UgRlZDX1NUUjogICBjb252X2ZuID0gUHlPYmplY3RfU3RyOyAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGVkNfUkVQUjogIGNvbnZfZm4gPSBQeU9iamVjdF9SZXByOyAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZWQ19BU0NJSTogY29udl9mbiA9IFB5T2JqZWN0X0FTQ0lJOyBicmVhazsKKworICAgICAgICAgICAgLyogTXVzdCBiZSAwIChtZWFuaW5nIG5vIGNvbnZlcnNpb24pLCBzaW5jZSBvbmx5IGZvdXIKKyAgICAgICAgICAgICAgIHZhbHVlcyBhcmUgYWxsb3dlZCBieSAob3BhcmcgJiBGVkNfTUFTSykuICovCisgICAgICAgICAgICBkZWZhdWx0OiAgICAgICAgY29udl9mbiA9IE5VTEw7ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSWYgdGhlcmUncyBhIGNvbnZlcnNpb24gZnVuY3Rpb24sIGNhbGwgaXQgYW5kIHJlcGxhY2UKKyAgICAgICAgICAgICAgIHZhbHVlIHdpdGggdGhhdCByZXN1bHQuIE90aGVyd2lzZSwganVzdCB1c2UgdmFsdWUsCisgICAgICAgICAgICAgICB3aXRob3V0IGNvbnZlcnNpb24uICovCisgICAgICAgICAgICBpZiAoY29udl9mbiAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29udl9mbih2YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhbHVlID0gcmVzdWx0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiB2YWx1ZSBpcyBhIHVuaWNvZGUgb2JqZWN0LCBhbmQgdGhlcmUncyBubyBmbXRfc3BlYywKKyAgICAgICAgICAgICAgIHRoZW4gd2Uga25vdyB0aGUgcmVzdWx0IG9mIGZvcm1hdCh2YWx1ZSkgaXMgdmFsdWUKKyAgICAgICAgICAgICAgIGl0c2VsZi4gSW4gdGhhdCBjYXNlLCBza2lwIGNhbGxpbmcgZm9ybWF0KCkuIEkgcGxhbiB0bworICAgICAgICAgICAgICAgbW92ZSB0aGlzIG9wdGltaXphdGlvbiBpbiB0byBQeU9iamVjdF9Gb3JtYXQoKQorICAgICAgICAgICAgICAgaXRzZWxmLiAqLworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHZhbHVlKSAmJiBmbXRfc3BlYyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogRG8gbm90aGluZywganVzdCB0cmFuc2ZlciBvd25lcnNoaXAgdG8gcmVzdWx0LiAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBBY3R1YWxseSBjYWxsIGZvcm1hdCgpLiAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdCh2YWx1ZSwgZm10X3NwZWMpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBQVVNIKHJlc3VsdCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKICAgICAgICAgVEFSR0VUKEVYVEVOREVEX0FSRykgewotICAgICAgICAgICAgb3Bjb2RlID0gTkVYVE9QKCk7Ci0gICAgICAgICAgICBvcGFyZyA9IG9wYXJnPDwxNiB8IE5FWFRBUkcoKTsKKyAgICAgICAgICAgIGludCBvbGRvcGFyZyA9IG9wYXJnOworICAgICAgICAgICAgTkVYVE9QQVJHKCk7CisgICAgICAgICAgICBvcGFyZyB8PSBvbGRvcGFyZyA8PCA4OwogICAgICAgICAgICAgZ290byBkaXNwYXRjaF9vcGNvZGU7CiAgICAgICAgIH0KIApAQCAtMzQ1MCw3ICszNTAxLDYgQEAKICAgICAgICAgYXNzZXJ0KDApOwogCiBlcnJvcjoKLSAgICAgICAgUkVBRF9USU1FU1RBTVAoaW5zdDEpOwogCiAgICAgICAgIGFzc2VydCh3aHkgPT0gV0hZX05PVCk7CiAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047CkBAIC0zNTU0LDcgKzM2MDQsNiBAQAogCiAgICAgICAgIGlmICh3aHkgIT0gV0hZX05PVCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMSk7CiAKICAgICAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKIApAQCAtMzU3Myw3ICszNjIyLDcgQEAKICAgICBhc3NlcnQoKHJldHZhbCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKIAogZmFzdF95aWVsZDoKLSAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSkpIHsKKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSB8IENPX0FTWU5DX0dFTkVSQVRPUikpIHsKIAogICAgICAgICAvKiBUaGUgcHVycG9zZSBvZiB0aGlzIGJsb2NrIGlzIHRvIHB1dCBhc2lkZSB0aGUgZ2VuZXJhdG9yJ3MgZXhjZXB0aW9uCiAgICAgICAgICAgIHN0YXRlIGFuZCByZXN0b3JlIHRoYXQgb2YgdGhlIGNhbGxpbmcgZnJhbWUuIElmIHRoZSBjdXJyZW50CkBAIC0zNTg0LDkgKzM2MzMsMTEgQEAKICAgICAgICAgICAgc3RhdGUgY2FtZSBpbnRvIGV4aXN0ZW5jZSBpbiB0aGlzIGZyYW1lLiAoQW4gdW5jYXVnaHQgZXhjZXB0aW9uCiAgICAgICAgICAgIHdvdWxkIGhhdmUgd2h5ID09IFdIWV9FWENFUFRJT04sIGFuZCB3ZSB3b3VsZG4ndCBiZSBoZXJlKS4gKi8KICAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBmLT5mX2libG9jazsgaSsrKQotICAgICAgICAgICAgaWYgKGYtPmZfYmxvY2tzdGFja1tpXS5iX3R5cGUgPT0gRVhDRVBUX0hBTkRMRVIpCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmLT5mX2libG9jazsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZi0+Zl9ibG9ja3N0YWNrW2ldLmJfdHlwZSA9PSBFWENFUFRfSEFORExFUikgewogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmIChpID09IGYtPmZfaWJsb2NrKQogICAgICAgICAgICAgLyogV2UgZGlkIG5vdCBjcmVhdGUgdGhpcyBleGNlcHRpb24uICovCiAgICAgICAgICAgICByZXN0b3JlX2FuZF9jbGVhcl9leGNfc3RhdGUodHN0YXRlLCBmKTsKQEAgLTM2MjcsNiArMzY3OCw4IEBACiAKICAgICAvKiBwb3AgZnJhbWUgKi8KIGV4aXRfZXZhbF9mcmFtZToKKyAgICBpZiAoUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOX0VOQUJMRUQoKSkKKyAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX3JldHVybihmKTsKICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICBmLT5mX2V4ZWN1dGluZyA9IDA7CiAgICAgdHN0YXRlLT5mcmFtZSA9IGYtPmZfYmFjazsKQEAgLTM2OTcsMTIgKzM3NTAsMTIgQEAKIH0KIAogc3RhdGljIHZvaWQKLW1pc3NpbmdfYXJndW1lbnRzKFB5Q29kZU9iamVjdCAqY28sIGludCBtaXNzaW5nLCBpbnQgZGVmY291bnQsCittaXNzaW5nX2FyZ3VtZW50cyhQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IG1pc3NpbmcsIFB5X3NzaXplX3QgZGVmY291bnQsCiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCiB7Ci0gICAgaW50IGksIGogPSAwOwotICAgIGludCBzdGFydCwgZW5kOwotICAgIGludCBwb3NpdGlvbmFsID0gZGVmY291bnQgIT0gLTE7CisgICAgUHlfc3NpemVfdCBpLCBqID0gMDsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBlbmQ7CisgICAgaW50IHBvc2l0aW9uYWwgPSAoZGVmY291bnQgIT0gLTEpOwogICAgIGNvbnN0IGNoYXIgKmtpbmQgPSBwb3NpdGlvbmFsID8gInBvc2l0aW9uYWwiIDogImtleXdvcmQtb25seSI7CiAgICAgUHlPYmplY3QgKm1pc3NpbmdfbmFtZXM7CiAKQEAgLTM3MzUsMzMgKzM3ODgsMzkgQEAKIH0KIAogc3RhdGljIHZvaWQKLXRvb19tYW55X3Bvc2l0aW9uYWwoUHlDb2RlT2JqZWN0ICpjbywgaW50IGdpdmVuLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKK3Rvb19tYW55X3Bvc2l0aW9uYWwoUHlDb2RlT2JqZWN0ICpjbywgUHlfc3NpemVfdCBnaXZlbiwgUHlfc3NpemVfdCBkZWZjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzKQogewogICAgIGludCBwbHVyYWw7Ci0gICAgaW50IGt3b25seV9naXZlbiA9IDA7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBrd29ubHlfZ2l2ZW4gPSAwOworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqc2lnLCAqa3dvbmx5X3NpZzsKKyAgICBQeV9zc2l6ZV90IGNvX2FyZ2NvdW50ID0gY28tPmNvX2FyZ2NvdW50OwogCiAgICAgYXNzZXJ0KChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSA9PSAwKTsKICAgICAvKiBDb3VudCBtaXNzaW5nIGtleXdvcmQtb25seSBhcmdzLiAqLwotICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IGNvLT5jb19hcmdjb3VudCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsgaSsrKQotICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKKyAgICBmb3IgKGkgPSBjb19hcmdjb3VudDsgaSA8IGNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpIHsKICAgICAgICAgICAgIGt3b25seV9naXZlbisrOworICAgICAgICB9CisgICAgfQogICAgIGlmIChkZWZjb3VudCkgewotICAgICAgICBpbnQgYXRsZWFzdCA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgICAgICBQeV9zc2l6ZV90IGF0bGVhc3QgPSBjb19hcmdjb3VudCAtIGRlZmNvdW50OwogICAgICAgICBwbHVyYWwgPSAxOwotICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZnJvbSAlZCB0byAlZCIsIGF0bGVhc3QsIGNvLT5jb19hcmdjb3VudCk7CisgICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJmcm9tICV6ZCB0byAlemQiLCBhdGxlYXN0LCBjb19hcmdjb3VudCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBwbHVyYWwgPSBjby0+Y29fYXJnY291bnQgIT0gMTsKLSAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVkIiwgY28tPmNvX2FyZ2NvdW50KTsKKyAgICAgICAgcGx1cmFsID0gKGNvX2FyZ2NvdW50ICE9IDEpOworICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXpkIiwgY29fYXJnY291bnQpOwogICAgIH0KICAgICBpZiAoc2lnID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoa3dvbmx5X2dpdmVuKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICIgcG9zaXRpb25hbCBhcmd1bWVudCVzIChhbmQgJWQga2V5d29yZC1vbmx5IGFyZ3VtZW50JXMpIjsKLSAgICAgICAga3dvbmx5X3NpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGZvcm1hdCwgZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiLCBrd29ubHlfZ2l2ZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dvbmx5X2dpdmVuICE9IDEgPyAicyIgOiAiIik7CisgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICIgcG9zaXRpb25hbCBhcmd1bWVudCVzIChhbmQgJXpkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSI7CisgICAgICAgIGt3b25seV9zaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiAhPSAxID8gInMiIDogIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiKTsKICAgICAgICAgaWYgKGt3b25seV9zaWcgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNpZyk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNzczLDcgKzM4MzIsNyBAQAogICAgICAgICBhc3NlcnQoa3dvbmx5X3NpZyAhPSBOVUxMKTsKICAgICB9CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlZCVVICVzIGdpdmVuIiwKKyAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlemQlVSAlcyBnaXZlbiIsCiAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAogICAgICAgICAgICAgICAgICBzaWcsCiAgICAgICAgICAgICAgICAgIHBsdXJhbCA/ICJzIiA6ICIiLApAQCAtMzc5MCwyMCArMzg0OSwyMiBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAotICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIGludCBhcmdjb3VudCwgUHlPYmplY3QgKiprd3MsIGludCBrd2NvdW50LAotICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCisgICAgICAgICAgIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBhcmdjb3VudCwKKyAgICAgICAgICAgUHlPYmplY3QgKiprd25hbWVzLCBQeU9iamVjdCAqKmt3YXJncywKKyAgICAgICAgICAgUHlfc3NpemVfdCBrd2NvdW50LCBpbnQga3dzdGVwLAorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIFB5X3NzaXplX3QgZGVmY291bnQsCisgICAgICAgICAgIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlLAogICAgICAgICAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQogewogICAgIFB5Q29kZU9iamVjdCogY28gPSAoUHlDb2RlT2JqZWN0KilfY287CiAgICAgUHlGcmFtZU9iamVjdCAqZjsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMsICoqZnJlZXZhcnM7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgUHlPYmplY3QgKngsICp1OwotICAgIGludCB0b3RhbF9hcmdzID0gY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OwotICAgIGludCBpOwotICAgIGludCBuID0gYXJnY291bnQ7Ci0gICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7CisgICAgY29uc3QgUHlfc3NpemVfdCB0b3RhbF9hcmdzID0gY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OworICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBQeU9iamVjdCAqa3dkaWN0OwogCiAgICAgaWYgKGdsb2JhbHMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCkBAIC0zODExLDM2ICszODcyLDUwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIC8qIENyZWF0ZSB0aGUgZnJhbWUgKi8KKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgIGFzc2VydCh0c3RhdGUgIT0gTlVMTCk7Ci0gICAgYXNzZXJ0KGdsb2JhbHMgIT0gTlVMTCk7CiAgICAgZiA9IFB5RnJhbWVfTmV3KHRzdGF0ZSwgY28sIGdsb2JhbHMsIGxvY2Fscyk7Ci0gICAgaWYgKGYgPT0gTlVMTCkKKyAgICBpZiAoZiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotCisgICAgfQogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKIAotICAgIC8qIFBhcnNlIGFyZ3VtZW50cy4gKi8KKyAgICAvKiBDcmVhdGUgYSBkaWN0aW9uYXJ5IGZvciBrZXl3b3JkIHBhcmFtZXRlcnMgKCoqa3dhZ3MpICovCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTKSB7CiAgICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBpID0gdG90YWxfYXJnczsKLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpCisgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSB7CiAgICAgICAgICAgICBpKys7CisgICAgICAgIH0KICAgICAgICAgU0VUTE9DQUwoaSwga3dkaWN0KTsKICAgICB9Ci0gICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50KQorICAgIGVsc2UgeworICAgICAgICBrd2RpY3QgPSBOVUxMOworICAgIH0KKworICAgIC8qIENvcHkgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byBsb2NhbCB2YXJpYWJsZXMgKi8KKyAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQpIHsKICAgICAgICAgbiA9IGNvLT5jb19hcmdjb3VudDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG4gPSBhcmdjb3VudDsKKyAgICB9CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICB4ID0gYXJnc1tpXTsKICAgICAgICAgUHlfSU5DUkVGKHgpOwogICAgICAgICBTRVRMT0NBTChpLCB4KTsKICAgICB9CisKKyAgICAvKiBQYWNrIG90aGVyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gdGhlICphcmdzIGFyZ3VtZW50ICovCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKICAgICAgICAgdSA9IFB5VHVwbGVfTmV3KGFyZ2NvdW50IC0gbik7Ci0gICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIGlmICh1ID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQogICAgICAgICBTRVRMT0NBTCh0b3RhbF9hcmdzLCB1KTsKICAgICAgICAgZm9yIChpID0gbjsgaSA8IGFyZ2NvdW50OyBpKyspIHsKICAgICAgICAgICAgIHggPSBhcmdzW2ldOwpAQCAtMzg0OCw2OSArMzkyMyw4MiBAQAogICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh1LCBpLW4sIHgpOwogICAgICAgICB9CiAgICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBrd2NvdW50OyBpKyspIHsKKworICAgIC8qIEhhbmRsZSBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgYXMgdHdvIHN0cmlkZWQgYXJyYXlzICovCisgICAga3djb3VudCAqPSBrd3N0ZXA7CisgICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkgKz0ga3dzdGVwKSB7CiAgICAgICAgIFB5T2JqZWN0ICoqY29fdmFybmFtZXM7Ci0gICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3dzWzIqaV07Ci0gICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGt3c1syKmkgKyAxXTsKLSAgICAgICAgaW50IGo7CisgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3duYW1lc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0ga3dhcmdzW2ldOworICAgICAgICBQeV9zc2l6ZV90IGo7CisKICAgICAgICAgaWYgKGtleXdvcmQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKGtleXdvcmQpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CisKICAgICAgICAgLyogU3BlZWQgaGFjazogZG8gcmF3IHBvaW50ZXIgY29tcGFyZXMuIEFzIG5hbWVzIGFyZQogICAgICAgICAgICBub3JtYWxseSBpbnRlcm5lZCB0aGlzIHNob3VsZCBhbG1vc3QgYWx3YXlzIGhpdC4gKi8KICAgICAgICAgY29fdmFybmFtZXMgPSAoKFB5VHVwbGVPYmplY3QgKikoY28tPmNvX3Zhcm5hbWVzKSktPm9iX2l0ZW07CiAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOwotICAgICAgICAgICAgaWYgKG5tID09IGtleXdvcmQpCisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IGNvX3Zhcm5hbWVzW2pdOworICAgICAgICAgICAgaWYgKG5hbWUgPT0ga2V5d29yZCkgewogICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKwogICAgICAgICAvKiBTbG93IGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKi8KICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgewotICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKAotICAgICAgICAgICAgICAgIGtleXdvcmQsIG5tLCBQeV9FUSk7Ci0gICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCBrZXl3b3JkLCBuYW1lLCBQeV9FUSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7Ci0gICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkgewogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIGlmIChqID49IHRvdGFsX2FyZ3MgJiYga3dkaWN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IGFuIHVuZXhwZWN0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICclUyciLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJyVTJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsIGtleXdvcmQpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CisKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5d29yZCwgdmFsdWUpID09IC0xKSB7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KICAgICAgICAgY29udGludWU7CisKICAgICAgIGt3X2ZvdW5kOgogICAgICAgICBpZiAoR0VUTE9DQUwoaikgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgbXVsdGlwbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGFyZ3VtZW50ICclUyciLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICclUyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLCBrZXl3b3JkKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICBTRVRMT0NBTChqLCB2YWx1ZSk7CiAgICAgfQorCisgICAgLyogQ2hlY2sgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqLwogICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCAmJiAhKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpKSB7CiAgICAgICAgIHRvb19tYW55X3Bvc2l0aW9uYWwoY28sIGFyZ2NvdW50LCBkZWZjb3VudCwgZmFzdGxvY2Fscyk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CisKKyAgICAvKiBBZGQgbWlzc2luZyBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoY29weSBkZWZhdWx0IHZhbHVlcyBmcm9tIGRlZnMpICovCiAgICAgaWYgKGFyZ2NvdW50IDwgY28tPmNvX2FyZ2NvdW50KSB7Ci0gICAgICAgIGludCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7Ci0gICAgICAgIGludCBtaXNzaW5nID0gMDsKLSAgICAgICAgZm9yIChpID0gYXJnY291bnQ7IGkgPCBtOyBpKyspCi0gICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkKKyAgICAgICAgUHlfc3NpemVfdCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgICAgIFB5X3NzaXplX3QgbWlzc2luZyA9IDA7CisgICAgICAgIGZvciAoaSA9IGFyZ2NvdW50OyBpIDwgbTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIG1pc3NpbmcrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBpZiAobWlzc2luZykgewogICAgICAgICAgICAgbWlzc2luZ19hcmd1bWVudHMoY28sIG1pc3NpbmcsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTM5MjcsOCArNDAxNSwxMCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgLyogQWRkIG1pc3Npbmcga2V5d29yZCBhcmd1bWVudHMgKGNvcHkgZGVmYXVsdCB2YWx1ZXMgZnJvbSBrd2RlZnMpICovCiAgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA+IDApIHsKLSAgICAgICAgaW50IG1pc3NpbmcgPSAwOworICAgICAgICBQeV9zc2l6ZV90IG1pc3NpbmcgPSAwOwogICAgICAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCB0b3RhbF9hcmdzOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lOwogICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCkBAIC0zOTY5LDEzICs0MDU5LDE2IEBACiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIFNFVExPQ0FMKGNvLT5jb19ubG9jYWxzICsgaSwgYyk7CiAgICAgfQorCisgICAgLyogQ29weSBjbG9zdXJlIHZhcmlhYmxlcyB0byBmcmVlIHZhcmlhYmxlcyAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19mcmVldmFycyk7ICsraSkgewogICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR0VUX0lURU0oY2xvc3VyZSwgaSk7CiAgICAgICAgIFB5X0lOQ1JFRihvKTsKICAgICAgICAgZnJlZXZhcnNbUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICsgaV0gPSBvOwogICAgIH0KIAotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIC8qIEhhbmRsZSBnZW5lcmF0b3IvY29yb3V0aW5lL2FzeW5jaHJvbm91cyBnZW5lcmF0b3IgKi8KKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSB8IENPX0FTWU5DX0dFTkVSQVRPUikpIHsKICAgICAgICAgUHlPYmplY3QgKmdlbjsKICAgICAgICAgUHlPYmplY3QgKmNvcm9fd3JhcHBlciA9IHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXI7CiAgICAgICAgIGludCBpc19jb3JvID0gY28tPmNvX2ZsYWdzICYgQ09fQ09ST1VUSU5FOwpAQCAtNDAwMCw2ICs0MDkzLDggQEAKICAgICAgICAgICogYW5kIHJldHVybiB0aGF0IGFzIHRoZSB2YWx1ZS4gKi8KICAgICAgICAgaWYgKGlzX2Nvcm8pIHsKICAgICAgICAgICAgIGdlbiA9IFB5Q29yb19OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOworICAgICAgICB9IGVsc2UgaWYgKGNvLT5jb19mbGFncyAmIENPX0FTWU5DX0dFTkVSQVRPUikgeworICAgICAgICAgICAgZ2VuID0gUHlBc3luY0dlbl9OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZ2VuID0gUHlHZW5fTmV3V2l0aFF1YWxOYW1lKGYsIG5hbWUsIHF1YWxuYW1lKTsKICAgICAgICAgfQpAQCAtNDAzOSw4ICs0MTM0LDEwIEBACiAgICAgICAgICAgIFB5T2JqZWN0ICoqZGVmcywgaW50IGRlZmNvdW50LCBQeU9iamVjdCAqa3dkZWZzLCBQeU9iamVjdCAqY2xvc3VyZSkKIHsKICAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKF9jbywgZ2xvYmFscywgbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgYXJnY291bnQsIGt3cywga3djb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMsIGRlZmNvdW50LCBrd2RlZnMsIGNsb3N1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBhcmdjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3cywga3dzICsgMSwga3djb3VudCwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMsIGRlZmNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dkZWZzLCBjbG9zdXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CiB9CiAKQEAgLTQyOTksNyArNDM5Niw3IEBACiAKICNpZmRlZiBMTFRSQUNFCiBzdGF0aWMgaW50Ci1wcnRyYWNlKFB5T2JqZWN0ICp2LCBjaGFyICpzdHIpCitwcnRyYWNlKFB5T2JqZWN0ICp2LCBjb25zdCBjaGFyICpzdHIpCiB7CiAgICAgcHJpbnRmKCIlcyAiLCBzdHIpOwogICAgIGlmIChQeU9iamVjdF9QcmludCh2LCBzdGRvdXQsIDApICE9IDApCkBAIC00NDc2LDYgKzQ1NzMsMzggQEAKICAgICByZXR1cm4gdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcjsKIH0KIAordm9pZAorX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihQeU9iamVjdCAqZmlyc3RpdGVyKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBQeV9YSU5DUkVGKGZpcnN0aXRlcik7CisgICAgUHlfWFNFVFJFRih0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXIsIGZpcnN0aXRlcik7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfR2V0QXN5bmNHZW5GaXJzdGl0ZXIodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIHJldHVybiB0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXI7Cit9CisKK3ZvaWQKK19QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoUHlPYmplY3QgKmZpbmFsaXplcikKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgUHlfWElOQ1JFRihmaW5hbGl6ZXIpOworICAgIFB5X1hTRVRSRUYodHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyLCBmaW5hbGl6ZXIpOworfQorCitQeU9iamVjdCAqCitfUHlFdmFsX0dldEFzeW5jR2VuRmluYWxpemVyKHZvaWQpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyOworfQorCiBQeU9iamVjdCAqCiBQeUV2YWxfR2V0QnVpbHRpbnModm9pZCkKIHsKQEAgLTQ1NDgsMTAgKzQ2NzcsOCBAQAogICAgVGhlIGFyZyBtdXN0IGJlIGEgdHVwbGUgb3IgTlVMTC4gIFRoZSBrdyBtdXN0IGJlIGEgZGljdCBvciBOVUxMLiAqLwogCiBQeU9iamVjdCAqCi1QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KICNpZmRlZiBQeV9ERUJVRwogICAgIC8qIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uCiAgICAgICAgc2V0LiBJdCByYWlzZXMgYSBuZXcgZXhjZXB0aW9uIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQgb3IgaWYKQEAgLTQ1NTksMzAgKzQ2ODYsMjMgQEAKICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogI2VuZGlmCiAKLSAgICBpZiAoYXJnID09IE5VTEwpIHsKLSAgICAgICAgYXJnID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIGlmIChhcmcgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgTlVMTCwgMCwga3dhcmdzKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoIVB5VHVwbGVfQ2hlY2soYXJnKSkgeworCisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbGlzdCBtdXN0IGJlIGEgdHVwbGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKGFyZyk7CiAKLSAgICBpZiAoa3cgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGt3KSkgeworICAgIGlmIChrd2FyZ3MgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGt3YXJncykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGxpc3QgbXVzdCBiZSBhIGRpY3Rpb25hcnkiKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJnLCBrdyk7Ci0gICAgUHlfREVDUkVGKGFyZyk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIGt3YXJncyk7CiB9CiAKIGNvbnN0IGNoYXIgKgpAQCAtNDYxMSwyMSArNDczMSw2IEBACiAgICAgICAgIHJldHVybiAiIG9iamVjdCI7CiB9CiAKLXN0YXRpYyB2b2lkCi1lcnJfYXJncyhQeU9iamVjdCAqZnVuYywgaW50IGZsYWdzLCBpbnQgbmFyZ3MpCi17Ci0gICAgaWYgKGZsYWdzICYgTUVUSF9OT0FSR1MpCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpLT5tX21sLT5tbF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgbmFyZ3MpOwotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJWQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgICgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKS0+bV9tbC0+bWxfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIG5hcmdzKTsKLX0KLQogI2RlZmluZSBDX1RSQUNFKHgsIGNhbGwpIFwKIGlmICh0c3RhdGUtPnVzZV90cmFjaW5nICYmIHRzdGF0ZS0+Y19wcm9maWxlZnVuYykgeyBcCiAgICAgaWYgKGNhbGxfdHJhY2UodHN0YXRlLT5jX3Byb2ZpbGVmdW5jLCB0c3RhdGUtPmNfcHJvZmlsZW9iaiwgXApAQCAtNDY1OCw2MCArNDc2MywyNSBAQAogICAgIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBvcGFyZwotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICAgICAgLCB1aW50NjQqIHBpbnRyMCwgdWludDY0KiBwaW50cjEKLSNlbmRpZgotICAgICAgICAgICAgICAgICkKK2NhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqcHBfc3RhY2ssIFB5X3NzaXplX3Qgb3BhcmcsIFB5T2JqZWN0ICprd25hbWVzKQogewotICAgIGludCBuYSA9IG9wYXJnICYgMHhmZjsKLSAgICBpbnQgbmsgPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICBpbnQgbiA9IG5hICsgMiAqIG5rOwotICAgIFB5T2JqZWN0ICoqcGZ1bmMgPSAoKnBwX3N0YWNrKSAtIG4gLSAxOworICAgIFB5T2JqZWN0ICoqcGZ1bmMgPSAoKnBwX3N0YWNrKSAtIG9wYXJnIC0gMTsKICAgICBQeU9iamVjdCAqZnVuYyA9ICpwZnVuYzsKICAgICBQeU9iamVjdCAqeCwgKnc7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gKGt3bmFtZXMgPT0gTlVMTCkgPyAwIDogUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBQeV9zc2l6ZV90IG5hcmdzID0gb3BhcmcgLSBua3dhcmdzOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CiAKICAgICAvKiBBbHdheXMgZGlzcGF0Y2ggUHlDRnVuY3Rpb24gZmlyc3QsIGJlY2F1c2UgdGhlc2UgYXJlCiAgICAgICAgcHJlc3VtZWQgdG8gYmUgdGhlIG1vc3QgZnJlcXVlbnQgY2FsbGFibGUgb2JqZWN0LgogICAgICovCi0gICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpICYmIG5rID09IDApIHsKLSAgICAgICAgaW50IGZsYWdzID0gUHlDRnVuY3Rpb25fR0VUX0ZMQUdTKGZ1bmMpOworICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgewogICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogCiAgICAgICAgIFBDQUxMKFBDQUxMX0NGVU5DVElPTik7Ci0gICAgICAgIGlmIChmbGFncyAmIChNRVRIX05PQVJHUyB8IE1FVEhfTykpIHsKLSAgICAgICAgICAgIFB5Q0Z1bmN0aW9uIG1ldGggPSBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04oZnVuYyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgTUVUSF9OT0FSR1MgJiYgbmEgPT0gMCkgewotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLE5VTEwpKTsKIAotICAgICAgICAgICAgICAgIHggPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCB4LCBOVUxMKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTUVUSF9PICYmIG5hID09IDEpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLGFyZykpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmcpOwotCi0gICAgICAgICAgICAgICAgeCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHgsIE5VTEwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyX2FyZ3MoZnVuYywgZmxhZ3MsIG5hKTsKLSAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpjYWxsYXJnczsKLSAgICAgICAgICAgIGNhbGxhcmdzID0gbG9hZF9hcmdzKHBwX3N0YWNrLCBuYSk7Ci0gICAgICAgICAgICBpZiAoY2FsbGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjApOwotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLGNhbGxhcmdzLE5VTEwpKTsKLSAgICAgICAgICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIxKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuYXJncyAtIG5rd2FyZ3M7CisgICAgICAgIENfVFJBQ0UoeCwgX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykgJiYgUHlNZXRob2RfR0VUX1NFTEYoZnVuYykgIT0gTlVMTCkgewpAQCAtNDcyMywyMSArNDc5MywyNiBAQAogICAgICAgICAgICAgZnVuYyA9IFB5TWV0aG9kX0dFVF9GVU5DVElPTihmdW5jKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKICAgICAgICAgICAgIFB5X1NFVFJFRigqcGZ1bmMsIHNlbGYpOwotICAgICAgICAgICAgbmErKzsKLSAgICAgICAgICAgIG4rKzsKLSAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuYXJncysrOworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIwKTsKLSAgICAgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpCi0gICAgICAgICAgICB4ID0gZmFzdF9mdW5jdGlvbihmdW5jLCBwcF9zdGFjaywgbiwgbmEsIG5rKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgeCA9IGRvX2NhbGwoZnVuYywgcHBfc3RhY2ssIG5hLCBuayk7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjEpOwotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIH0KIAotICAgICAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CisgICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuYXJncyAtIG5rd2FyZ3M7CisKKyAgICAgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgICAgIHggPSBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB4ID0gX1B5T2JqZWN0X0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICB9CiAKKyAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CisKICAgICAvKiBDbGVhciB0aGUgc3RhY2sgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIEFsc28gcmVtb3ZlcwogICAgICAgIHRoZSBhcmd1bWVudHMgaW4gY2FzZSB0aGV5IHdlcmVuJ3QgY29uc3VtZWQgYWxyZWFkeQogICAgICAgIChmYXN0X2Z1bmN0aW9uKCkgYW5kIGVycl9hcmdzKCkgbGVhdmUgdGhlbSBvbiB0aGUgc3RhY2spLgpAQCAtNDc0OCw3ICs0ODIzLDYgQEAKICAgICAgICAgUENBTEwoUENBTExfUE9QKTsKICAgICB9CiAKLSAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAgICAgcmV0dXJuIHg7CiB9CiAKQEAgLTQ3NjEsMTU5ICs0ODM1LDE5NyBAQAogICAgZG9uZSBiZWZvcmUgZXZhbHVhdGluZyB0aGUgZnJhbWUuCiAqLwogCitzdGF0aWMgUHlPYmplY3QqCitfUHlGdW5jdGlvbl9GYXN0Q2FsbChQeUNvZGVPYmplY3QgKmNvLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZ2xvYmFscykKK3sKKyAgICBQeUZyYW1lT2JqZWN0ICpmOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgUENBTEwoUENBTExfRkFTVEVSX0ZVTkNUSU9OKTsKKyAgICBhc3NlcnQoZ2xvYmFscyAhPSBOVUxMKTsKKyAgICAvKiBYWFggUGVyaGFwcyB3ZSBzaG91bGQgY3JlYXRlIGEgc3BlY2lhbGl6ZWQKKyAgICAgICBQeUZyYW1lX05ldygpIHRoYXQgZG9lc24ndCB0YWtlIGxvY2FscywgYnV0IGRvZXMKKyAgICAgICB0YWtlIGJ1aWx0aW5zIHdpdGhvdXQgc2FuaXR5IGNoZWNraW5nIHRoZW0uCisgICAgICAgKi8KKyAgICBhc3NlcnQodHN0YXRlICE9IE5VTEwpOworICAgIGYgPSBQeUZyYW1lX05ldyh0c3RhdGUsIGNvLCBnbG9iYWxzLCBOVUxMKTsKKyAgICBpZiAoZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeV9JTkNSRUYoKmFyZ3MpOworICAgICAgICBmYXN0bG9jYWxzW2ldID0gKmFyZ3MrKzsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlFdmFsX0V2YWxGcmFtZUV4KGYsMCk7CisKKyAgICArK3RzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOworICAgIFB5X0RFQ1JFRihmKTsKKyAgICAtLXRzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZhc3RfZnVuY3Rpb24oUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgbiwgaW50IG5hLCBpbnQgbmspCitmYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLAorICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvID0gKFB5Q29kZU9iamVjdCAqKVB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyk7CiAgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpOwogICAgIFB5T2JqZWN0ICphcmdkZWZzID0gUHlGdW5jdGlvbl9HRVRfREVGQVVMVFMoZnVuYyk7Ci0gICAgUHlPYmplY3QgKmt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOwotICAgIFB5T2JqZWN0ICpuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19uYW1lOwotICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7Ci0gICAgUHlPYmplY3QgKipkID0gTlVMTDsKLSAgICBpbnQgbmQgPSAwOworICAgIFB5T2JqZWN0ICprd2RlZnMsICpjbG9zdXJlLCAqbmFtZSwgKnF1YWxuYW1lOworICAgIFB5T2JqZWN0ICoqZDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIFB5X3NzaXplX3QgbmQ7CisKKyAgICBhc3NlcnQoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlICovCiAKICAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7CiAgICAgUENBTEwoUENBTExfRkFTVF9GVU5DVElPTik7Ci0gICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbiAmJgotICAgICAgICBjby0+Y29fa3dvbmx5YXJnY291bnQgPT0gMCAmJiBuaz09MCAmJgotICAgICAgICBjby0+Y29fZmxhZ3MgPT0gKENPX09QVElNSVpFRCB8IENPX05FV0xPQ0FMUyB8IENPX05PRlJFRSkpIHsKLSAgICAgICAgUHlGcmFtZU9iamVjdCAqZjsKLSAgICAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7Ci0gICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0gICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscywgKipzdGFjazsKLSAgICAgICAgaW50IGk7CiAKLSAgICAgICAgUENBTEwoUENBTExfRkFTVEVSX0ZVTkNUSU9OKTsKLSAgICAgICAgYXNzZXJ0KGdsb2JhbHMgIT0gTlVMTCk7Ci0gICAgICAgIC8qIFhYWCBQZXJoYXBzIHdlIHNob3VsZCBjcmVhdGUgYSBzcGVjaWFsaXplZAotICAgICAgICAgICBQeUZyYW1lX05ldygpIHRoYXQgZG9lc24ndCB0YWtlIGxvY2FscywgYnV0IGRvZXMKLSAgICAgICAgICAgdGFrZSBidWlsdGlucyB3aXRob3V0IHNhbml0eSBjaGVja2luZyB0aGVtLgotICAgICAgICAqLwotICAgICAgICBhc3NlcnQodHN0YXRlICE9IE5VTEwpOwotICAgICAgICBmID0gUHlGcmFtZV9OZXcodHN0YXRlLCBjbywgZ2xvYmFscywgTlVMTCk7Ci0gICAgICAgIGlmIChmID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICBmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwotICAgICAgICBzdGFjayA9ICgqcHBfc3RhY2spIC0gbjsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoKnN0YWNrKTsKLSAgICAgICAgICAgIGZhc3Rsb2NhbHNbaV0gPSAqc3RhY2srKzsKKyAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID09IDAgJiYgbmt3YXJncyA9PSAwICYmCisgICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkKKyAgICB7CisgICAgICAgIGlmIChhcmdkZWZzID09IE5VTEwgJiYgY28tPmNvX2FyZ2NvdW50ID09IG5hcmdzKSB7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIHN0YWNrLCBuYXJncywgZ2xvYmFscyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dmFsID0gUHlFdmFsX0V2YWxGcmFtZUV4KGYsMCk7Ci0gICAgICAgICsrdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7Ci0gICAgICAgIFB5X0RFQ1JFRihmKTsKLSAgICAgICAgLS10c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKLSAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgZWxzZSBpZiAobmFyZ3MgPT0gMCAmJiBhcmdkZWZzICE9IE5VTEwKKyAgICAgICAgICAgICAgICAgJiYgY28tPmNvX2FyZ2NvdW50ID09IFB5X1NJWkUoYXJnZGVmcykpIHsKKyAgICAgICAgICAgIC8qIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cywgYnV0IGFsbCBwYXJhbWV0ZXJzIGhhdmUKKyAgICAgICAgICAgICAgIGEgZGVmYXVsdCB2YWx1ZTogdXNlIGRlZmF1bHQgdmFsdWVzIGFzIGFyZ3VtZW50cyAuKi8KKyAgICAgICAgICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIHN0YWNrLCBQeV9TSVpFKGFyZ2RlZnMpLCBnbG9iYWxzKTsKKyAgICAgICAgfQogICAgIH0KKworICAgIGt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOworICAgIGNsb3N1cmUgPSBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpOworICAgIG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX25hbWU7CisgICAgcXVhbG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX3F1YWxuYW1lOworCiAgICAgaWYgKGFyZ2RlZnMgIT0gTlVMTCkgewogICAgICAgICBkID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CiAgICAgICAgIG5kID0gUHlfU0laRShhcmdkZWZzKTsKICAgICB9Ci0gICAgcmV0dXJuIF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZSgoUHlPYmplY3QqKWNvLCBnbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopTlVMTCwgKCpwcF9zdGFjayktbiwgbmEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKnBwX3N0YWNrKS0yKm5rLCBuaywgZCwgbmQsIGt3ZGVmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBxdWFsbmFtZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11cGRhdGVfa2V5d29yZF9hcmdzKFB5T2JqZWN0ICpvcmlnX2t3ZGljdCwgaW50IG5rLCBQeU9iamVjdCAqKipwcF9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpCi17Ci0gICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7Ci0gICAgaWYgKG9yaWdfa3dkaWN0ID09IE5VTEwpCi0gICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKICAgICBlbHNlIHsKLSAgICAgICAga3dkaWN0ID0gUHlEaWN0X0NvcHkob3JpZ19rd2RpY3QpOwotICAgICAgICBQeV9ERUNSRUYob3JpZ19rd2RpY3QpOworICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgbmQgPSAwOwogICAgIH0KLSAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHdoaWxlICgtLW5rID49IDApIHsKLSAgICAgICAgaW50IGVycjsKLSAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBQeU9iamVjdCAqa2V5ID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oa3dkaWN0LCBrZXkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIGdvdCBtdWx0aXBsZSB2YWx1ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmb3Iga2V5d29yZCBhcmd1bWVudCAnJVUnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKKyAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKChQeU9iamVjdCopY28sIGdsb2JhbHMsIChQeU9iamVjdCAqKU5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjaywgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBua3dhcmdzID8gJlB5VHVwbGVfR0VUX0lURU0oa3duYW1lcywgMCkgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgKyBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5rd2FyZ3MsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCAoaW50KW5kLCBrd2RlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zdXJlLCBuYW1lLCBxdWFsbmFtZSk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIHJldHVybiBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlDb2RlT2JqZWN0ICpjbyA9IChQeUNvZGVPYmplY3QgKilQeUZ1bmN0aW9uX0dFVF9DT0RFKGZ1bmMpOworICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKTsKKyAgICBQeU9iamVjdCAqYXJnZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0RFRkFVTFRTKGZ1bmMpOworICAgIFB5T2JqZWN0ICprd2RlZnMsICpjbG9zdXJlLCAqbmFtZSwgKnF1YWxuYW1lOworICAgIFB5T2JqZWN0ICprd3R1cGxlLCAqKms7CisgICAgUHlPYmplY3QgKipkOworICAgIFB5X3NzaXplX3QgbmQsIG5rOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KG5hcmdzID09IDAgfHwgYXJncyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOworCisgICAgUENBTEwoUENBTExfRlVOQ1RJT04pOworICAgIFBDQUxMKFBDQUxMX0ZBU1RfRlVOQ1RJT04pOworCisgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA9PSAwICYmCisgICAgICAgIChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfU2l6ZShrd2FyZ3MpID09IDApICYmCisgICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkKKyAgICB7CisgICAgICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICAgICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbmFyZ3MpIHsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgYXJncywgbmFyZ3MsIGdsb2JhbHMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5hcmdzID09IDAgJiYgYXJnZGVmcyAhPSBOVUxMCisgICAgICAgICAgICAgICAgICYmIGNvLT5jb19hcmdjb3VudCA9PSBQeV9TSVpFKGFyZ2RlZnMpKSB7CisgICAgICAgICAgICAvKiBmdW5jdGlvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMsIGJ1dCBhbGwgcGFyYW1ldGVycyBoYXZlCisgICAgICAgICAgICAgICBhIGRlZmF1bHQgdmFsdWU6IHVzZSBkZWZhdWx0IHZhbHVlcyBhcyBhcmd1bWVudHMgLiovCisgICAgICAgICAgICBhcmdzID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIGFyZ3MsIFB5X1NJWkUoYXJnZGVmcyksIGdsb2JhbHMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGt3YXJncyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgcG9zLCBpOworICAgICAgICBuayA9IFB5RGljdF9TaXplKGt3YXJncyk7CisKKyAgICAgICAga3d0dXBsZSA9IFB5VHVwbGVfTmV3KDIgKiBuayk7CisgICAgICAgIGlmIChrd3R1cGxlID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGsgPSAmUHlUdXBsZV9HRVRfSVRFTShrd3R1cGxlLCAwKTsKKyAgICAgICAgcG9zID0gaSA9IDA7CisgICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChrd2FyZ3MsICZwb3MsICZrW2ldLCAma1tpKzFdKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGtbaV0pOworICAgICAgICAgICAgUHlfSU5DUkVGKGtbaSsxXSk7CisgICAgICAgICAgICBpICs9IDI7CiAgICAgICAgIH0KKyAgICAgICAgbmsgPSBpIC8gMjsKICAgICB9Ci0gICAgcmV0dXJuIGt3ZGljdDsKKyAgICBlbHNlIHsKKyAgICAgICAga3d0dXBsZSA9IE5VTEw7CisgICAgICAgIGsgPSBOVUxMOworICAgICAgICBuayA9IDA7CisgICAgfQorCisgICAga3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7CisgICAgY2xvc3VyZSA9IFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyk7CisgICAgbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfbmFtZTsKKyAgICBxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7CisKKyAgICBpZiAoYXJnZGVmcyAhPSBOVUxMKSB7CisgICAgICAgIGQgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKKyAgICAgICAgbmQgPSBQeV9TSVpFKGFyZ2RlZnMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZCA9IE5VTEw7CisgICAgICAgIG5kID0gMDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoKFB5T2JqZWN0KiljbywgZ2xvYmFscywgKFB5T2JqZWN0ICopTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGssIGsgKyAxLCBuaywgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCwgbmQsIGt3ZGVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc3VyZSwgbmFtZSwgcXVhbG5hbWUpOworICAgIFB5X1hERUNSRUYoa3d0dXBsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVwZGF0ZV9zdGFyX2FyZ3MoaW50IG5zdGFjaywgaW50IG5zdGFyLCBQeU9iamVjdCAqc3RhcmFyZywKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqcHBfc3RhY2spCitkb19jYWxsX2NvcmUoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICpjYWxsYXJncywgUHlPYmplY3QgKmt3ZGljdCkKIHsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MsICp3OwotCi0gICAgY2FsbGFyZ3MgPSBQeVR1cGxlX05ldyhuc3RhY2sgKyBuc3Rhcik7Ci0gICAgaWYgKGNhbGxhcmdzID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChuc3RhcikgewotICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG5zdGFyOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphID0gUHlUdXBsZV9HRVRfSVRFTShzdGFyYXJnLCBpKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihhKTsKLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY2FsbGFyZ3MsIG5zdGFjayArIGksIGEpOwotICAgICAgICB9Ci0gICAgfQotICAgIHdoaWxlICgtLW5zdGFjayA+PSAwKSB7Ci0gICAgICAgIHcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY2FsbGFyZ3MsIG5zdGFjaywgdyk7Ci0gICAgfQotICAgIHJldHVybiBjYWxsYXJnczsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfYXJncyhQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG5hKQotewotICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcobmEpOwotICAgIFB5T2JqZWN0ICp3OwotCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgd2hpbGUgKC0tbmEgPj0gMCkgewotICAgICAgICB3ID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIG5hLCB3KTsKLSAgICB9Ci0gICAgcmV0dXJuIGFyZ3M7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kb19jYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG5hLCBpbnQgbmspCi17Ci0gICAgUHlPYmplY3QgKmNhbGxhcmdzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIGlmIChuayA+IDApIHsKLSAgICAgICAga3dkaWN0ID0gdXBkYXRlX2tleXdvcmRfYXJncyhOVUxMLCBuaywgcHBfc3RhY2ssIGZ1bmMpOwotICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGNhbGxfZmFpbDsKLSAgICB9Ci0gICAgY2FsbGFyZ3MgPSBsb2FkX2FyZ3MocHBfc3RhY2ssIG5hKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBjYWxsX2ZhaWw7CiAjaWZkZWYgQ0FMTF9QUk9GSUxFCiAgICAgLyogQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB0byBsb29rIGF0IHRoZSB0eXBlIG9mIGZ1bmMgdG8KICAgICAgICB1cGRhdGUgdGhlIGNhbGwgc3RhdHMgcHJvcGVybHkuICBEbyBpdCBoZXJlIHNvIGFzIHRvIGF2b2lkCkBAIC00OTMwLDExNSArNTA0MiwxNiBAQAogICAgIGVsc2UKICAgICAgICAgUENBTEwoUENBTExfT1RIRVIpOwogI2VuZGlmCisKICAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICAgICAgQ19UUkFDRShyZXN1bHQsIFB5Q0Z1bmN0aW9uX0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCk7Ci1jYWxsX2ZhaWw6Ci0gICAgUHlfWERFQ1JFRihjYWxsYXJncyk7Ci0gICAgUHlfWERFQ1JFRihrd2RpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1leHRfZG9fY2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBmbGFncywgaW50IG5hLCBpbnQgbmspCi17Ci0gICAgaW50IG5zdGFyID0gMDsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpzdGFyYXJnID0gTlVMTDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIGlmIChmbGFncyAmIENBTExfRkxBR19LVykgewotICAgICAgICBrd2RpY3QgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIGlmICghUHlEaWN0X0NoZWNrKGt3ZGljdCkpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpkOwotICAgICAgICAgICAgZCA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgIGlmIChkID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoZCwga3dkaWN0KSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIC8qIFB5RGljdF9VcGRhdGUgcmFpc2VzIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAqIGVycm9yIChwZXJjb2xhdGVkIGZyb20gYW4gYXR0ZW1wdAotICAgICAgICAgICAgICAgICAqIHRvIGdldCAna2V5cycgYXR0cmlidXRlKSBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgICogYSB0eXBlIGVycm9yIGlmIGl0cyBzZWNvbmQgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgKiBpcyBub3QgYSBtYXBwaW5nLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dkaWN0LT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGt3ZGljdCk7Ci0gICAgICAgICAgICBrd2RpY3QgPSBkOwotICAgICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpOwogICAgIH0KLSAgICBpZiAobmsgPiAwKSB7Ci0gICAgICAgIGt3ZGljdCA9IHVwZGF0ZV9rZXl3b3JkX2FyZ3Moa3dkaWN0LCBuaywgcHBfc3RhY2ssIGZ1bmMpOwotICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX1ZBUikgewotICAgICAgICBzdGFyYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhcmFyZykpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0ID0gTlVMTDsKLSAgICAgICAgICAgIGlmIChQeV9UWVBFKHN0YXJhcmcpLT50cF9pdGVyID09IE5VTEwgJiYKLSAgICAgICAgICAgICAgICAgICAgIVB5U2VxdWVuY2VfQ2hlY2soc3RhcmFyZykpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ID0gUHlTZXF1ZW5jZV9UdXBsZShzdGFyYXJnKTsKLSAgICAgICAgICAgIGlmICh0ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RhcmFyZyk7Ci0gICAgICAgICAgICBzdGFyYXJnID0gdDsKLSAgICAgICAgfQotICAgICAgICBuc3RhciA9IFB5VHVwbGVfR0VUX1NJWkUoc3RhcmFyZyk7Ci0gICAgfQotICAgIGNhbGxhcmdzID0gdXBkYXRlX3N0YXJfYXJncyhuYSwgbnN0YXIsIHN0YXJhcmcsIHBwX3N0YWNrKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotI2lmZGVmIENBTExfUFJPRklMRQotICAgIC8qIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgdG8gbG9vayBhdCB0aGUgdHlwZSBvZiBmdW5jIHRvCi0gICAgICAgdXBkYXRlIHRoZSBjYWxsIHN0YXRzIHByb3Blcmx5LiAgRG8gaXQgaGVyZSBzbyBhcyB0byBhdm9pZAotICAgICAgIGV4cG9zaW5nIHRoZSBjYWxsIHN0YXRzIG1hY2hpbmVyeSBvdXRzaWRlIGNldmFsLmMKLSAgICAqLwotICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7Ci0gICAgZWxzZSBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX01FVEhPRCk7Ci0gICAgZWxzZSBpZiAoUHlUeXBlX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9UWVBFKTsKLSAgICBlbHNlIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkKLSAgICAgICAgUENBTEwoUENBTExfQ0ZVTkNUSU9OKTsKLSAgICBlbHNlCi0gICAgICAgIFBDQUxMKFBDQUxMX09USEVSKTsKLSNlbmRpZgotICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgewotICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgICAgICBDX1RSQUNFKHJlc3VsdCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KTsKLWV4dF9jYWxsX2ZhaWw6Ci0gICAgUHlfWERFQ1JFRihjYWxsYXJncyk7Ci0gICAgUHlfWERFQ1JFRihrd2RpY3QpOwotICAgIFB5X1hERUNSRUYoc3RhcmFyZyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogRXh0cmFjdCBhIHNsaWNlIGluZGV4IGZyb20gYSBQeUxvbmcgb3IgYW4gb2JqZWN0IHdpdGggdGhlCkBAIC01MTI4LDYgKzUxNDEsNDYgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2ltcG9ydF9uYW1lKFB5RnJhbWVPYmplY3QgKmYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZnJvbWxpc3QsIFB5T2JqZWN0ICpsZXZlbCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKKyAgICBQeU9iamVjdCAqaW1wb3J0X2Z1bmMsICpyZXM7CisgICAgUHlPYmplY3QqIHN0YWNrWzVdOworCisgICAgaW1wb3J0X2Z1bmMgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2J1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKKyAgICBpZiAoaW1wb3J0X2Z1bmMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBGYXN0IHBhdGggZm9yIG5vdCBvdmVybG9hZGVkIF9faW1wb3J0X18uICovCisgICAgaWYgKGltcG9ydF9mdW5jID09IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycC0+aW1wb3J0X2Z1bmMpIHsKKyAgICAgICAgaW50IGlsZXZlbCA9IF9QeUxvbmdfQXNJbnQobGV2ZWwpOworICAgICAgICBpZiAoaWxldmVsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJlcyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPyBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlsZXZlbCk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgUHlfSU5DUkVGKGltcG9ydF9mdW5jKTsKKworICAgIHN0YWNrWzBdID0gbmFtZTsKKyAgICBzdGFja1sxXSA9IGYtPmZfZ2xvYmFsczsKKyAgICBzdGFja1syXSA9IGYtPmZfbG9jYWxzID09IE5VTEwgPyBQeV9Ob25lIDogZi0+Zl9sb2NhbHM7CisgICAgc3RhY2tbM10gPSBmcm9tbGlzdDsKKyAgICBzdGFja1s0XSA9IGxldmVsOworICAgIHJlcyA9IF9QeU9iamVjdF9GYXN0Q2FsbChpbXBvcnRfZnVuYywgc3RhY2ssIDUpOworICAgIFB5X0RFQ1JFRihpbXBvcnRfZnVuYyk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGltcG9ydF9mcm9tKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqeDsKQEAgLTUyNjMsNyArNTMxNiw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywKLSAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZiwgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cikKKyAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZiwgY29uc3QgX1B5X0NPREVVTklUICpuZXh0X2luc3RyKQogewogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAyKSB7CkBAIC01MjczLDEwICs1MzI2LDExIEBACiAgICAgICAgICAqICd2YXJpYWJsZScuICBXZSB0cnkgdG8gZGVsZXRlIHRoZSB2YXJpYWJsZSBub3cgdG8gcmVkdWNlCiAgICAgICAgICAqIHRoZSByZWZjbnQgdG8gMS4KICAgICAgICAgICovCi0gICAgICAgIHN3aXRjaCAoKm5leHRfaW5zdHIpIHsKKyAgICAgICAgaW50IG9wY29kZSwgb3Bhcmc7CisgICAgICAgIE5FWFRPUEFSRygpOworICAgICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIFNUT1JFX0ZBU1Q6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGludCBvcGFyZyA9IFBFRUtBUkcoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKICAgICAgICAgICAgIGlmIChHRVRMT0NBTChvcGFyZykgPT0gdikKICAgICAgICAgICAgICAgICBTRVRMT0NBTChvcGFyZywgTlVMTCk7CkBAIC01Mjg2LDcgKzUzNDAsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBQeU9iamVjdCAqKmZyZWV2YXJzID0gKGYtPmZfbG9jYWxzcGx1cyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfY29kZS0+Y29fbmxvY2Fscyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYyA9IGZyZWV2YXJzW1BFRUtBUkcoKV07CisgICAgICAgICAgICBQeU9iamVjdCAqYyA9IGZyZWV2YXJzW29wYXJnXTsKICAgICAgICAgICAgIGlmIChQeUNlbGxfR0VUKGMpID09IHYpCiAgICAgICAgICAgICAgICAgUHlDZWxsX1NldChjLCBOVUxMKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTI5NCw3ICs1MzQ4LDcgQEAKICAgICAgICAgY2FzZSBTVE9SRV9OQU1FOgogICAgICAgICB7CiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXMgPSBmLT5mX2NvZGUtPmNvX25hbWVzOwotICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBQRUVLQVJHKCkpOworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzID0gZi0+Zl9sb2NhbHM7CiAgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobG9jYWxzKSAmJgogICAgICAgICAgICAgICAgIFB5RGljdF9HZXRJdGVtKGxvY2FscywgbmFtZSkgPT0gdikgewpAQCAtNTM1NCwzICs1NDA4LDc5IEBACiB9CiAKICNlbmRpZgorCitQeV9zc2l6ZV90CitfUHlFdmFsX1JlcXVlc3RDb2RlRXh0cmFJbmRleChmcmVlZnVuYyBmcmVlKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgUHlfc3NpemVfdCBuZXdfaW5kZXg7CisKKyAgICBpZiAodHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50ID09IE1BWF9DT19FWFRSQV9VU0VSUyAtIDEpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBuZXdfaW5kZXggPSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQrKzsKKyAgICB0c3RhdGUtPmNvX2V4dHJhX2ZyZWVmdW5jc1tuZXdfaW5kZXhdID0gZnJlZTsKKyAgICByZXR1cm4gbmV3X2luZGV4OworfQorCitzdGF0aWMgdm9pZAorZHRyYWNlX2Z1bmN0aW9uX2VudHJ5KFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgY2hhciogZmlsZW5hbWU7CisgICAgY2hhciogZnVuY25hbWU7CisgICAgaW50IGxpbmVubzsKKworICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICBmdW5jbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZi0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGYtPmZfY29kZSwgZi0+Zl9sYXN0aSk7CisKKyAgICBQeURUcmFjZV9GVU5DVElPTl9FTlRSWShmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVubyk7Cit9CisKK3N0YXRpYyB2b2lkCitkdHJhY2VfZnVuY3Rpb25fcmV0dXJuKFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgY2hhciogZmlsZW5hbWU7CisgICAgY2hhciogZnVuY25hbWU7CisgICAgaW50IGxpbmVubzsKKworICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICBmdW5jbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZi0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGYtPmZfY29kZSwgZi0+Zl9sYXN0aSk7CisKKyAgICBQeURUcmFjZV9GVU5DVElPTl9SRVRVUk4oZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm8pOworfQorCisvKiBEVHJhY2UgZXF1aXZhbGVudCBvZiBtYXliZV9jYWxsX2xpbmVfdHJhY2UuICovCitzdGF0aWMgdm9pZAorbWF5YmVfZHRyYWNlX2xpbmUoUHlGcmFtZU9iamVjdCAqZnJhbWUsCisgICAgICAgICAgICAgICAgICBpbnQgKmluc3RyX2xiLCBpbnQgKmluc3RyX3ViLCBpbnQgKmluc3RyX3ByZXYpCit7CisgICAgaW50IGxpbmUgPSBmcmFtZS0+Zl9saW5lbm87CisgICAgY2hhciAqY29fZmlsZW5hbWUsICpjb19uYW1lOworCisgICAgLyogSWYgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gZXhlY3V0ZWQgaXNuJ3QgaW4gdGhlIGN1cnJlbnQKKyAgICAgICBpbnN0cnVjdGlvbiB3aW5kb3csIHJlc2V0IHRoZSB3aW5kb3cuCisgICAgKi8KKyAgICBpZiAoZnJhbWUtPmZfbGFzdGkgPCAqaW5zdHJfbGIgfHwgZnJhbWUtPmZfbGFzdGkgPj0gKmluc3RyX3ViKSB7CisgICAgICAgIFB5QWRkclBhaXIgYm91bmRzOworICAgICAgICBsaW5lID0gX1B5Q29kZV9DaGVja0xpbmVOdW1iZXIoZnJhbWUtPmZfY29kZSwgZnJhbWUtPmZfbGFzdGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYm91bmRzKTsKKyAgICAgICAgKmluc3RyX2xiID0gYm91bmRzLmFwX2xvd2VyOworICAgICAgICAqaW5zdHJfdWIgPSBib3VuZHMuYXBfdXBwZXI7CisgICAgfQorICAgIC8qIElmIHRoZSBsYXN0IGluc3RydWN0aW9uIGZhbGxzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUgb3IgaWYKKyAgICAgICBpdCByZXByZXNlbnRzIGEganVtcCBiYWNrd2FyZHMsIHVwZGF0ZSB0aGUgZnJhbWUncyBsaW5lCisgICAgICAgbnVtYmVyIGFuZCBjYWxsIHRoZSB0cmFjZSBmdW5jdGlvbi4gKi8KKyAgICBpZiAoZnJhbWUtPmZfbGFzdGkgPT0gKmluc3RyX2xiIHx8IGZyYW1lLT5mX2xhc3RpIDwgKmluc3RyX3ByZXYpIHsKKyAgICAgICAgZnJhbWUtPmZfbGluZW5vID0gbGluZTsKKyAgICAgICAgY29fZmlsZW5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICAgICAgaWYgKCFjb19maWxlbmFtZSkKKyAgICAgICAgICAgIGNvX2ZpbGVuYW1lID0gIj8iOworICAgICAgICBjb19uYW1lID0gUHlVbmljb2RlX0FzVVRGOChmcmFtZS0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICAgICAgaWYgKCFjb19uYW1lKQorICAgICAgICAgICAgY29fbmFtZSA9ICI/IjsKKyAgICAgICAgUHlEVHJhY2VfTElORShjb19maWxlbmFtZSwgY29fbmFtZSwgbGluZSk7CisgICAgfQorICAgICppbnN0cl9wcmV2ID0gZnJhbWUtPmZfbGFzdGk7Cit9CmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWxfZ2lsLmggYi9QeXRob24vY2V2YWxfZ2lsLmgKaW5kZXggOGQzOGVlOS4uYTNiNDUwYiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsX2dpbC5oCisrKyBiL1B5dGhvbi9jZXZhbF9naWwuaApAQCAtMTc4LDcgKzE3OCw3IEBACiAgICAgICAgIC8qIFN1Yi1pbnRlcnByZXRlciBzdXBwb3J0OiB0aHJlYWRzIG1pZ2h0IGhhdmUgYmVlbiBzd2l0Y2hlZAogICAgICAgICAgICB1bmRlciBvdXIgZmVldCB1c2luZyBQeVRocmVhZFN0YXRlX1N3YXAoKS4gRml4IHRoZSBHSUwgbGFzdAogICAgICAgICAgICBob2xkZXIgdmFyaWFibGUgc28gdGhhdCBvdXIgaGV1cmlzdGljcyB3b3JrLiAqLwotICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgKFB5X3VpbnRwdHJfdCl0c3RhdGUpOworICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgKHVpbnRwdHJfdCl0c3RhdGUpOwogICAgIH0KIAogICAgIE1VVEVYX0xPQ0soZ2lsX211dGV4KTsKQEAgLTI0MCw3ICsyNDAsNyBAQAogICAgIF9QeV9BTk5PVEFURV9SV0xPQ0tfQUNRVUlSRUQoJmdpbF9sb2NrZWQsIC8qaXNfd3JpdGU9Ki8xKTsKIAogICAgIGlmICh0c3RhdGUgIT0gKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpKSB7Ci0gICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAoUHlfdWludHB0cl90KXRzdGF0ZSk7CisgICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAodWludHB0cl90KXRzdGF0ZSk7CiAgICAgICAgICsrZ2lsX3N3aXRjaF9udW1iZXI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaCBiL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCmluZGV4IDRlMmIxZjEuLmM4OGRlZWYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCisrKyBiL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCkBAIC05Myw4ICs5Myw5IEBACiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xVOmZvcm1hdCIsCi0gICAgICAgICZ2YWx1ZSwgJmZvcm1hdF9zcGVjKSkKKyAgICAgICAgJnZhbHVlLCAmZm9ybWF0X3NwZWMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9mb3JtYXRfaW1wbChtb2R1bGUsIHZhbHVlLCBmb3JtYXRfc3BlYyk7CiAKIGV4aXQ6CkBAIC0xMTksOCArMTIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgaTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpjaHIiLCAmaSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmNociIsICZpKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fY2hyX2ltcGwobW9kdWxlLCBpKTsKIAogZXhpdDoKQEAgLTE0Niw3ICsxNDgsNyBAQAogImluIGFkZGl0aW9uIHRvIGFueSBmZWF0dXJlcyBleHBsaWNpdGx5IHNwZWNpZmllZC4iKTsKIAogI2RlZmluZSBCVUlMVElOX0NPTVBJTEVfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnVpbHRpbl9jb21waWxlX19kb2NfX30sCisgICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fY29tcGlsZSwgTUVUSF9GQVNUQ0FMTCwgYnVpbHRpbl9jb21waWxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX2NvbXBpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZmlsZW5hbWUsCkBAIC0xNTQsMTAgKzE1NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgaW50IG9wdGltaXplKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fY29tcGlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J1aWx0aW5fY29tcGlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic291cmNlIiwgImZpbGVuYW1lIiwgIm1vZGUiLCAiZmxhZ3MiLCAiZG9udF9pbmhlcml0IiwgIm9wdGltaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic291cmNlIiwgImZpbGVuYW1lIiwgIm1vZGUiLCAiZmxhZ3MiLCAiZG9udF9pbmhlcml0IiwgIm9wdGltaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT08mc3xpaWk6Y29tcGlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNvdXJjZTsKICAgICBQeU9iamVjdCAqZmlsZW5hbWU7CiAgICAgY29uc3QgY2hhciAqbW9kZTsKQEAgLTE2NSw5ICsxNjgsMTAgQEAKICAgICBpbnQgZG9udF9pbmhlcml0ID0gMDsKICAgICBpbnQgb3B0aW1pemUgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PJnN8aWlpOmNvbXBpbGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZzb3VyY2UsIFB5VW5pY29kZV9GU0RlY29kZXIsICZmaWxlbmFtZSwgJm1vZGUsICZmbGFncywgJmRvbnRfaW5oZXJpdCwgJm9wdGltaXplKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNvdXJjZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJmZpbGVuYW1lLCAmbW9kZSwgJmZsYWdzLCAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9jb21waWxlX2ltcGwobW9kdWxlLCBzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBmbGFncywgZG9udF9pbmhlcml0LCBvcHRpbWl6ZSk7CiAKIGV4aXQ6CkBAIC0xOTUsOCArMTk5LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRpdm1vZCIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZ4LCAmeSkpCisgICAgICAgICZ4LCAmeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Rpdm1vZF9pbXBsKG1vZHVsZSwgeCwgeSk7CiAKIGV4aXQ6CkBAIC0yMzIsOCArMjM3LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImV2YWwiLAogICAgICAgICAxLCAzLAotICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpCisgICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZXZhbF9pbXBsKG1vZHVsZSwgc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOwogCiBleGl0OgpAQCAtMjY5LDggKzI3NSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJleGVjIiwKICAgICAgICAgMSwgMywKLSAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKQorICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2V4ZWNfaW1wbChtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKIAogZXhpdDoKQEAgLTMyMSw4ICszMjgsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaGFzYXR0ciIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZvYmosICZuYW1lKSkKKyAgICAgICAgJm9iaiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9oYXNhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUpOwogCiBleGl0OgpAQCAtMzY2LDggKzM3NCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRhdHRyIiwKICAgICAgICAgMywgMywKLSAgICAgICAgJm9iaiwgJm5hbWUsICZ2YWx1ZSkpCisgICAgICAgICZvYmosICZuYW1lLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9zZXRhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTM5Nyw4ICs0MDYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGVsYXR0ciIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZvYmosICZuYW1lKSkKKyAgICAgICAgJm9iaiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9kZWxhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUpOwogCiBleGl0OgpAQCAtNTA2LDggKzUxNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb3ciLAogICAgICAgICAyLCAzLAotICAgICAgICAmeCwgJnksICZ6KSkKKyAgICAgICAgJngsICZ5LCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3Bvd19pbXBsKG1vZHVsZSwgeCwgeSwgeik7CiAKIGV4aXQ6CkBAIC01NDAsOCArNTUxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlucHV0IiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnByb21wdCkpCisgICAgICAgICZwcm9tcHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pbnB1dF9pbXBsKG1vZHVsZSwgcHJvbXB0KTsKIAogZXhpdDoKQEAgLTU4NCw4ICs1OTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3VtIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJml0ZXJhYmxlLCAmc3RhcnQpKQorICAgICAgICAmaXRlcmFibGUsICZzdGFydCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3N1bV9pbXBsKG1vZHVsZSwgaXRlcmFibGUsIHN0YXJ0KTsKIAogZXhpdDoKQEAgLTYxOCw4ICs2MzEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNpbnN0YW5jZSIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZvYmosICZjbGFzc19vcl90dXBsZSkpCisgICAgICAgICZvYmosICZjbGFzc19vcl90dXBsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lzaW5zdGFuY2VfaW1wbChtb2R1bGUsIG9iaiwgY2xhc3Nfb3JfdHVwbGUpOwogCiBleGl0OgpAQCAtNjUyLDExICs2NjYsMTIgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlzc3ViY2xhc3MiLAogICAgICAgICAyLCAyLAotICAgICAgICAmY2xzLCAmY2xhc3Nfb3JfdHVwbGUpKQorICAgICAgICAmY2xzLCAmY2xhc3Nfb3JfdHVwbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pc3N1YmNsYXNzX2ltcGwobW9kdWxlLCBjbHMsIGNsYXNzX29yX3R1cGxlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwMzEyNzBiNjRjNzk0YjggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYzNDgzZGViNzU4MDVmN2MgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oIGIvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oCmluZGV4IDA1ZDc5YWMuLmIzNDYwYjAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaAorKysgYi9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKQEAgLTg5LDggKzg5LDkgQEAKICAgICBQeU9iamVjdCAqcGF0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyFVOl9maXhfY29fZmlsZW5hbWUiLAotICAgICAgICAmUHlDb2RlX1R5cGUsICZjb2RlLCAmcGF0aCkpCisgICAgICAgICZQeUNvZGVfVHlwZSwgJmNvZGUsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfX2ZpeF9jb19maWxlbmFtZV9pbXBsKG1vZHVsZSwgY29kZSwgcGF0aCk7CiAKIGV4aXQ6CkBAIC0xNDIsOCArMTQzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppbml0X2Zyb3plbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aW5pdF9mcm96ZW4iLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2luaXRfZnJvemVuX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTE2OCw4ICsxNzAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmdldF9mcm96ZW5fb2JqZWN0IiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpnZXRfZnJvemVuX29iamVjdCIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMTk0LDggKzE5Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuX3BhY2thZ2UiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbl9wYWNrYWdlIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19mcm96ZW5fcGFja2FnZV9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0yMjAsOCArMjI0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19idWlsdGluIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19idWlsdGluIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19idWlsdGluX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTI0Niw4ICsyNTEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMjc3LDggKzI4Myw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJjcmVhdGVfZHluYW1pYyIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZzcGVjLCAmZmlsZSkpCisgICAgICAgICZzcGVjLCAmZmlsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2NyZWF0ZV9keW5hbWljX2ltcGwobW9kdWxlLCBzcGVjLCBmaWxlKTsKIAogZXhpdDoKQEAgLTMwOCw4ICszMTUsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9pbXBfZXhlY19keW5hbWljX2ltcGwobW9kdWxlLCBtb2QpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMzcsOCArMzQ1LDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfaW1wX2V4ZWNfYnVpbHRpbl9pbXBsKG1vZHVsZSwgbW9kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzUyLDQgKzM2MSw0IEBACiAjaWZuZGVmIF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRgogICAgICNkZWZpbmUgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwYWQ2ZTU4MzNlNjE3MGQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyNGQ3ZjczNzAyYTkwN2YgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbXBpbGUuYyBiL1B5dGhvbi9jb21waWxlLmMKaW5kZXggOTNmNDdlMC4uYzBjODFlMSAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvbXBpbGUuYworKysgYi9QeXRob24vY29tcGlsZS5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgInN5bXRhYmxlLmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCisjaW5jbHVkZSAid29yZGNvZGVfaGVscGVycy5oIgogCiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tfU0laRSAxNgogI2RlZmluZSBERUZBVUxUX0JMT0NLUyA4CkBAIC00Myw3ICs0NCw2IEBACiBzdHJ1Y3QgaW5zdHIgewogICAgIHVuc2lnbmVkIGlfamFicyA6IDE7CiAgICAgdW5zaWduZWQgaV9qcmVsIDogMTsKLSAgICB1bnNpZ25lZCBpX2hhc2FyZyA6IDE7CiAgICAgdW5zaWduZWQgY2hhciBpX29wY29kZTsKICAgICBpbnQgaV9vcGFyZzsKICAgICBzdHJ1Y3QgYmFzaWNibG9ja18gKmlfdGFyZ2V0OyAvKiB0YXJnZXQgYmxvY2sgKGlmIGp1bXAgaW5zdHJ1Y3Rpb24pICovCkBAIC0xNzEsNyArMTcxLDYgQEAKIHN0YXRpYyBpbnQgY29tcGlsZXJfYWRkb3BfbyhzdHJ1Y3QgY29tcGlsZXIgKiwgaW50LCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYWRkb3BfaShzdHJ1Y3QgY29tcGlsZXIgKiwgaW50LCBQeV9zc2l6ZV90KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYWRkb3BfaihzdHJ1Y3QgY29tcGlsZXIgKiwgaW50LCBiYXNpY2Jsb2NrICosIGludCk7Ci1zdGF0aWMgYmFzaWNibG9jayAqY29tcGlsZXJfdXNlX25ld19ibG9jayhzdHJ1Y3QgY29tcGlsZXIgKik7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2Vycm9yKHN0cnVjdCBjb21waWxlciAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGludCBjb21waWxlcl9uYW1lb3Aoc3RydWN0IGNvbXBpbGVyICosIGlkZW50aWZpZXIsIGV4cHJfY29udGV4dF90eSk7CiAKQEAgLTE4MCw2ICsxNzksNyBAQAogc3RhdGljIGludCBjb21waWxlcl92aXNpdF9rZXl3b3JkKHN0cnVjdCBjb21waWxlciAqLCBrZXl3b3JkX3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfdmlzaXRfZXhwcihzdHJ1Y3QgY29tcGlsZXIgKiwgZXhwcl90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2F1Z2Fzc2lnbihzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CitzdGF0aWMgaW50IGNvbXBpbGVyX2FubmFzc2lnbihzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3Zpc2l0X3NsaWNlKHN0cnVjdCBjb21waWxlciAqLCBzbGljZV90eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5KTsKIApAQCAtMTk2LDEyICsxOTYsMjIgQEAKIHN0YXRpYyBpbnQgY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSwgaW50KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYXN5bmNfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSwgaW50KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYXN5bmNfZm9yKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKLXN0YXRpYyBpbnQgY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBQeV9zc2l6ZV90IG4sCitzdGF0aWMgaW50IGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgaW50IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMpOwogc3RhdGljIGludCBjb21waWxlcl90cnlfZXhjZXB0KHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfc2V0X3F1YWxuYW1lKHN0cnVjdCBjb21waWxlciAqKTsKIAorc3RhdGljIGludCBjb21waWxlcl9zeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsZXIgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKTsKKworc3RhdGljIGludCBjb21waWxlcl9hc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSk7CisKIHN0YXRpYyBQeUNvZGVPYmplY3QgKmFzc2VtYmxlKHN0cnVjdCBjb21waWxlciAqLCBpbnQgYWRkTm9uZSk7CiBzdGF0aWMgUHlPYmplY3QgKl9fZG9jX187CiAKQEAgLTQ3Nyw5ICs0ODcsOSBAQAogewogICAgIGJhc2ljYmxvY2sgKmJsb2NrOwogICAgIGZvciAoYmxvY2sgPSB1LT51X2Jsb2NrczsgYmxvY2sgIT0gTlVMTDsgYmxvY2sgPSBibG9jay0+Yl9saXN0KSB7Ci0gICAgICAgIGFzc2VydCgodm9pZCAqKWJsb2NrICE9ICh2b2lkICopMHhjYmNiY2JjYik7Ci0gICAgICAgIGFzc2VydCgodm9pZCAqKWJsb2NrICE9ICh2b2lkICopMHhmYmZiZmJmYik7Ci0gICAgICAgIGFzc2VydCgodm9pZCAqKWJsb2NrICE9ICh2b2lkICopMHhkYmRiZGJkYik7CisgICAgICAgIGFzc2VydCgodWludHB0cl90KWJsb2NrICE9IDB4Y2JjYmNiY2JVKTsKKyAgICAgICAgYXNzZXJ0KCh1aW50cHRyX3QpYmxvY2sgIT0gMHhmYmZiZmJmYlUpOworICAgICAgICBhc3NlcnQoKHVpbnRwdHJfdClibG9jayAhPSAweGRiZGJkYmRiVSk7CiAgICAgICAgIGlmIChibG9jay0+Yl9pbnN0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICBhc3NlcnQoYmxvY2stPmJfaWFsbG9jID4gMCk7CiAgICAgICAgICAgICBhc3NlcnQoYmxvY2stPmJfaXVzZWQgPiAwKTsKQEAgLTUyMyw2ICs1MzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgaW50IHNjb3BlX3R5cGUsIHZvaWQgKmtleSwgaW50IGxpbmVubykKIHsKICAgICBzdHJ1Y3QgY29tcGlsZXJfdW5pdCAqdTsKKyAgICBiYXNpY2Jsb2NrICpibG9jazsKIAogICAgIHUgPSAoc3RydWN0IGNvbXBpbGVyX3VuaXQgKilQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsZXJfdW5pdCkpOwpAQCAtNjIwLDggKzYzMSwxMSBAQAogICAgIGMtPnUgPSB1OwogCiAgICAgYy0+Y19uZXN0bGV2ZWwrKzsKLSAgICBpZiAoY29tcGlsZXJfdXNlX25ld19ibG9jayhjKSA9PSBOVUxMKQorCisgICAgYmxvY2sgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgaWYgKGJsb2NrID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOworICAgIGMtPnUtPnVfY3VyYmxvY2sgPSBibG9jazsKIAogICAgIGlmICh1LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFKSB7CiAgICAgICAgIGlmICghY29tcGlsZXJfc2V0X3F1YWxuYW1lKGMpKQpAQCAtNzMxLDYgKzc0NSw3IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKwogLyogQWxsb2NhdGUgYSBuZXcgYmxvY2sgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gaXQuCiAgICBSZXR1cm5zIE5VTEwgb24gZXJyb3IuCiAqLwpAQCAtNzU1LDE2ICs3NzAsNiBAQAogfQogCiBzdGF0aWMgYmFzaWNibG9jayAqCi1jb21waWxlcl91c2VfbmV3X2Jsb2NrKHN0cnVjdCBjb21waWxlciAqYykKLXsKLSAgICBiYXNpY2Jsb2NrICpibG9jayA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKLSAgICBpZiAoYmxvY2sgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYy0+dS0+dV9jdXJibG9jayA9IGJsb2NrOwotICAgIHJldHVybiBibG9jazsKLX0KLQotc3RhdGljIGJhc2ljYmxvY2sgKgogY29tcGlsZXJfbmV4dF9ibG9jayhzdHJ1Y3QgY29tcGlsZXIgKmMpCiB7CiAgICAgYmFzaWNibG9jayAqYmxvY2sgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CkBAIC04MTAsNyArODE1LDcgQEAKICAgICAgICAgb2xkc2l6ZSA9IGItPmJfaWFsbG9jICogc2l6ZW9mKHN0cnVjdCBpbnN0cik7CiAgICAgICAgIG5ld3NpemUgPSBvbGRzaXplIDw8IDE7CiAKLSAgICAgICAgaWYgKG9sZHNpemUgPiAoUFlfU0laRV9NQVggPj4gMSkpIHsKKyAgICAgICAgaWYgKG9sZHNpemUgPiAoU0laRV9NQVggPj4gMSkpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTkzOSw2ICs5NDQsOCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIElNUE9SVF9TVEFSOgogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBjYXNlIFNFVFVQX0FOTk9UQVRJT05TOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgWUlFTERfVkFMVUU6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBZSUVMRF9GUk9NOgpAQCAtOTc2LDE2ICs5ODMsMTkgQEAKICAgICAgICAgY2FzZSBCVUlMRF9UVVBMRToKICAgICAgICAgY2FzZSBCVUlMRF9MSVNUOgogICAgICAgICBjYXNlIEJVSUxEX1NFVDoKKyAgICAgICAgY2FzZSBCVUlMRF9TVFJJTkc6CiAgICAgICAgICAgICByZXR1cm4gMS1vcGFyZzsKICAgICAgICAgY2FzZSBCVUlMRF9MSVNUX1VOUEFDSzoKICAgICAgICAgY2FzZSBCVUlMRF9UVVBMRV9VTlBBQ0s6CisgICAgICAgIGNhc2UgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTDoKICAgICAgICAgY2FzZSBCVUlMRF9TRVRfVU5QQUNLOgogICAgICAgICBjYXNlIEJVSUxEX01BUF9VTlBBQ0s6Ci0gICAgICAgICAgICByZXR1cm4gMSAtIG9wYXJnOwogICAgICAgICBjYXNlIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMOgotICAgICAgICAgICAgcmV0dXJuIDEgLSAob3BhcmcgJiAweEZGKTsKKyAgICAgICAgICAgIHJldHVybiAxIC0gb3Bhcmc7CiAgICAgICAgIGNhc2UgQlVJTERfTUFQOgogICAgICAgICAgICAgcmV0dXJuIDEgLSAyKm9wYXJnOworICAgICAgICBjYXNlIEJVSUxEX0NPTlNUX0tFWV9NQVA6CisgICAgICAgICAgICByZXR1cm4gLW9wYXJnOwogICAgICAgICBjYXNlIExPQURfQVRUUjoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENPTVBBUkVfT1A6CkBAIC0xMDIzLDIyICsxMDMzLDIwIEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGNhc2UgREVMRVRFX0ZBU1Q6CiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBTVE9SRV9BTk5PVEFUSU9OOgorICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAgIGNhc2UgUkFJU0VfVkFSQVJHUzoKICAgICAgICAgICAgIHJldHVybiAtb3Bhcmc7Ci0jZGVmaW5lIE5BUkdTKG8pICgoKG8pICUgMjU2KSArIDIqKCgobykgLyAyNTYpICUgMjU2KSkKICAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OOgotICAgICAgICAgICAgcmV0dXJuIC1OQVJHUyhvcGFyZyk7Ci0gICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTl9WQVI6CisgICAgICAgICAgICByZXR1cm4gLW9wYXJnOwogICAgICAgICBjYXNlIENBTExfRlVOQ1RJT05fS1c6Ci0gICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKS0xOwotICAgICAgICBjYXNlIENBTExfRlVOQ1RJT05fVkFSX0tXOgotICAgICAgICAgICAgcmV0dXJuIC1OQVJHUyhvcGFyZyktMjsKKyAgICAgICAgICAgIHJldHVybiAtb3BhcmctMTsKKyAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OX0VYOgorICAgICAgICAgICAgcmV0dXJuIC0gKChvcGFyZyAmIDB4MDEpICE9IDApIC0gKChvcGFyZyAmIDB4MDIpICE9IDApOwogICAgICAgICBjYXNlIE1BS0VfRlVOQ1RJT046Ci0gICAgICAgICAgICByZXR1cm4gLTEgLU5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKLSAgICAgICAgY2FzZSBNQUtFX0NMT1NVUkU6Ci0gICAgICAgICAgICByZXR1cm4gLTIgLSBOQVJHUyhvcGFyZykgLSAoKG9wYXJnID4+IDE2KSAmIDB4ZmZmZik7Ci0jdW5kZWYgTkFSR1MKKyAgICAgICAgICAgIHJldHVybiAtMSAtICgob3BhcmcgJiAweDAxKSAhPSAwKSAtICgob3BhcmcgJiAweDAyKSAhPSAwKSAtCisgICAgICAgICAgICAgICAgKChvcGFyZyAmIDB4MDQpICE9IDApIC0gKChvcGFyZyAmIDB4MDgpICE9IDApOwogICAgICAgICBjYXNlIEJVSUxEX1NMSUNFOgogICAgICAgICAgICAgaWYgKG9wYXJnID09IDMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0yOwpAQCAtMTA2Niw2ICsxMDc0LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgY2FzZSBHRVRfWUlFTERfRlJPTV9JVEVSOgogICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgRk9STUFUX1ZBTFVFOgorICAgICAgICAgICAgLyogSWYgdGhlcmUncyBhIGZtdF9zcGVjIG9uIHRoZSBzdGFjaywgd2UgZ28gZnJvbSAyLT4xLAorICAgICAgICAgICAgICAgZWxzZSAxLT4xLiAqLworICAgICAgICAgICAgcmV0dXJuIChvcGFyZyAmIEZWU19NQVNLKSA9PSBGVlNfSEFWRV9TUEVDID8gLTEgOiAwOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIFBZX0lOVkFMSURfU1RBQ0tfRUZGRUNUOwogICAgIH0KQEAgLTEwODIsMTMgKzEwOTQsMTQgQEAKICAgICBiYXNpY2Jsb2NrICpiOwogICAgIHN0cnVjdCBpbnN0ciAqaTsKICAgICBpbnQgb2ZmOworICAgIGFzc2VydCghSEFTX0FSRyhvcGNvZGUpKTsKICAgICBvZmYgPSBjb21waWxlcl9uZXh0X2luc3RyKGMsIGMtPnUtPnVfY3VyYmxvY2spOwogICAgIGlmIChvZmYgPCAwKQogICAgICAgICByZXR1cm4gMDsKICAgICBiID0gYy0+dS0+dV9jdXJibG9jazsKICAgICBpID0gJmItPmJfaW5zdHJbb2ZmXTsKICAgICBpLT5pX29wY29kZSA9IG9wY29kZTsKLSAgICBpLT5pX2hhc2FyZyA9IDA7CisgICAgaS0+aV9vcGFyZyA9IDA7CiAgICAgaWYgKG9wY29kZSA9PSBSRVRVUk5fVkFMVUUpCiAgICAgICAgIGItPmJfcmV0dXJuID0gMTsKICAgICBjb21waWxlcl9zZXRfbGluZW5vKGMsIG9mZik7CkBAIC0xMTY1LDEwICsxMTc4LDE1IEBACiAgICAgc3RydWN0IGluc3RyICppOwogICAgIGludCBvZmY7CiAKLSAgICAvKiBJbnRlZ2VyIGFyZ3VtZW50cyBhcmUgbGltaXQgdG8gMTYtYml0LiBUaGVyZSBpcyBhbiBleHRlbnNpb24gZm9yIDMyLWJpdAotICAgICAgIGludGVnZXIgYXJndW1lbnRzLiAqLwotICAgIGFzc2VydCgoLTIxNDc0ODM2NDctMSkgPD0gb3BhcmcpOwotICAgIGFzc2VydChvcGFyZyA8PSAyMTQ3NDgzNjQ3KTsKKyAgICAvKiBvcGFyZyB2YWx1ZSBpcyB1bnNpZ25lZCwgYnV0IGEgc2lnbmVkIEMgaW50IGlzIHVzdWFsbHkgdXNlZCB0byBzdG9yZQorICAgICAgIGl0IGluIHRoZSBDIGNvZGUgKGxpa2UgUHl0aG9uL2NldmFsLmMpLgorCisgICAgICAgTGltaXQgdG8gMzItYml0IHNpZ25lZCBDIGludCAocmF0aGVyIHRoYW4gSU5UX01BWCkgZm9yIHBvcnRhYmlsaXR5LgorCisgICAgICAgVGhlIGFyZ3VtZW50IG9mIGEgY29uY3JldGUgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gaXMgbGltaXRlZCB0byA4LWJpdC4KKyAgICAgICBFWFRFTkRFRF9BUkcgaXMgdXNlZCBmb3IgMTYsIDI0LCBhbmQgMzItYml0IGFyZ3VtZW50cy4gKi8KKyAgICBhc3NlcnQoSEFTX0FSRyhvcGNvZGUpKTsKKyAgICBhc3NlcnQoMCA8PSBvcGFyZyAmJiBvcGFyZyA8PSAyMTQ3NDgzNjQ3KTsKIAogICAgIG9mZiA9IGNvbXBpbGVyX25leHRfaW5zdHIoYywgYy0+dS0+dV9jdXJibG9jayk7CiAgICAgaWYgKG9mZiA8IDApCkBAIC0xMTc2LDcgKzExOTQsNiBAQAogICAgIGkgPSAmYy0+dS0+dV9jdXJibG9jay0+Yl9pbnN0cltvZmZdOwogICAgIGktPmlfb3Bjb2RlID0gb3Bjb2RlOwogICAgIGktPmlfb3BhcmcgPSBQeV9TQUZFX0RPV05DQVNUKG9wYXJnLCBQeV9zc2l6ZV90LCBpbnQpOwotICAgIGktPmlfaGFzYXJnID0gMTsKICAgICBjb21waWxlcl9zZXRfbGluZW5vKGMsIG9mZik7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xMTg3LDYgKzEyMDQsNyBAQAogICAgIHN0cnVjdCBpbnN0ciAqaTsKICAgICBpbnQgb2ZmOwogCisgICAgYXNzZXJ0KEhBU19BUkcob3Bjb2RlKSk7CiAgICAgYXNzZXJ0KGIgIT0gTlVMTCk7CiAgICAgb2ZmID0gY29tcGlsZXJfbmV4dF9pbnN0cihjLCBjLT51LT51X2N1cmJsb2NrKTsKICAgICBpZiAob2ZmIDwgMCkKQEAgLTExOTQsNyArMTIxMiw2IEBACiAgICAgaSA9ICZjLT51LT51X2N1cmJsb2NrLT5iX2luc3RyW29mZl07CiAgICAgaS0+aV9vcGNvZGUgPSBvcGNvZGU7CiAgICAgaS0+aV90YXJnZXQgPSBiOwotICAgIGktPmlfaGFzYXJnID0gMTsKICAgICBpZiAoYWJzb2x1dGUpCiAgICAgICAgIGktPmlfamFicyA9IDE7CiAgICAgZWxzZQpAQCAtMTIwMywyMiArMTIyMCwxMiBAQAogICAgIHJldHVybiAxOwogfQogCi0vKiBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBORVdfQkxPQ0sgYW5kIE5FWFRfQkxPQ0sgaXMgc3VidGxlLiAgKEknZAotICAgbGlrZSB0byBmaW5kIGJldHRlciBuYW1lcy4pICBORVdfQkxPQ0soKSBjcmVhdGVzIGEgbmV3IGJsb2NrIGFuZCBzZXRzCi0gICBpdCBhcyB0aGUgY3VycmVudCBibG9jay4gIE5FWFRfQkxPQ0soKSBhbHNvIGNyZWF0ZXMgYW4gaW1wbGljaXQganVtcAotICAgZnJvbSB0aGUgY3VycmVudCBibG9jayB0byB0aGUgbmV3IGJsb2NrLgorLyogTkVYVF9CTE9DSygpIGNyZWF0ZXMgYW4gaW1wbGljaXQganVtcCBmcm9tIHRoZSBjdXJyZW50IGJsb2NrCisgICB0byB0aGUgbmV3IGJsb2NrLgorCisgICBUaGUgcmV0dXJucyBpbnNpZGUgdGhpcyBtYWNybyBtYWtlIGl0IGltcG9zc2libGUgdG8gZGVjcmVmIG9iamVjdHMKKyAgIGNyZWF0ZWQgaW4gdGhlIGxvY2FsIGZ1bmN0aW9uLiBMb2NhbCBvYmplY3RzIHNob3VsZCB1c2UgdGhlIGFyZW5hLgogKi8KLQotLyogVGhlIHJldHVybnMgaW5zaWRlIHRoZXNlIG1hY3JvcyBtYWtlIGl0IGltcG9zc2libGUgdG8gZGVjcmVmIG9iamVjdHMKLSAgIGNyZWF0ZWQgaW4gdGhlIGxvY2FsIGZ1bmN0aW9uLiAgTG9jYWwgb2JqZWN0cyBzaG91bGQgdXNlIHRoZSBhcmVuYS4KLSovCi0KLQotI2RlZmluZSBORVdfQkxPQ0soQykgeyBcCi0gICAgaWYgKGNvbXBpbGVyX3VzZV9uZXdfYmxvY2soKEMpKSA9PSBOVUxMKSBcCi0gICAgICAgIHJldHVybiAwOyBcCi19Ci0KICNkZWZpbmUgTkVYVF9CTE9DSyhDKSB7IFwKICAgICBpZiAoY29tcGlsZXJfbmV4dF9ibG9jaygoQykpID09IE5VTEwpIFwKICAgICAgICAgcmV0dXJuIDA7IFwKQEAgLTEyNDEsNiArMTI0OCwxNSBAQAogICAgICAgICByZXR1cm4gMDsgXAogfQogCisvKiBTYW1lIGFzIEFERE9QX08sIGJ1dCBzdGVhbHMgYSByZWZlcmVuY2UuICovCisjZGVmaW5lIEFERE9QX04oQywgT1AsIE8sIFRZUEUpIHsgXAorICAgIGlmICghY29tcGlsZXJfYWRkb3BfbygoQyksIChPUCksIChDKS0+dS0+dV8gIyMgVFlQRSwgKE8pKSkgeyBcCisgICAgICAgIFB5X0RFQ1JFRigoTykpOyBcCisgICAgICAgIHJldHVybiAwOyBcCisgICAgfSBcCisgICAgUHlfREVDUkVGKChPKSk7IFwKK30KKwogI2RlZmluZSBBRERPUF9OQU1FKEMsIE9QLCBPLCBUWVBFKSB7IFwKICAgICBpZiAoIWNvbXBpbGVyX2FkZG9wX25hbWUoKEMpLCAoT1ApLCAoQyktPnUtPnVfICMjIFRZUEUsIChPKSkpIFwKICAgICAgICAgcmV0dXJuIDA7IFwKQEAgLTEzMDksMTAgKzEzMjUsMTEwIEBACiB7CiAgICAgaWYgKHMtPmtpbmQgIT0gRXhwcl9raW5kKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gcy0+di5FeHByLnZhbHVlLT5raW5kID09IFN0cl9raW5kOworICAgIGlmIChzLT52LkV4cHIudmFsdWUtPmtpbmQgPT0gU3RyX2tpbmQpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChzLT52LkV4cHIudmFsdWUtPmtpbmQgPT0gQ29uc3RhbnRfa2luZCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9DaGVja0V4YWN0KHMtPnYuRXhwci52YWx1ZS0+di5Db25zdGFudC52YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKLS8qIENvbXBpbGUgYSBzZXF1ZW5jZSBvZiBzdGF0ZW1lbnRzLCBjaGVja2luZyBmb3IgYSBkb2NzdHJpbmcuICovCitzdGF0aWMgaW50Citpc19jb25zdChleHByX3R5IGUpCit7CisgICAgc3dpdGNoIChlLT5raW5kKSB7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgIGNhc2UgTnVtX2tpbmQ6CisgICAgY2FzZSBTdHJfa2luZDoKKyAgICBjYXNlIEJ5dGVzX2tpbmQ6CisgICAgY2FzZSBFbGxpcHNpc19raW5kOgorICAgIGNhc2UgTmFtZUNvbnN0YW50X2tpbmQ6CisgICAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jb25zdF92YWx1ZShleHByX3R5IGUpCit7CisgICAgc3dpdGNoIChlLT5raW5kKSB7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5Db25zdGFudC52YWx1ZTsKKyAgICBjYXNlIE51bV9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5OdW0ubjsKKyAgICBjYXNlIFN0cl9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5TdHIuczsKKyAgICBjYXNlIEJ5dGVzX2tpbmQ6CisgICAgICAgIHJldHVybiBlLT52LkJ5dGVzLnM7CisgICAgY2FzZSBFbGxpcHNpc19raW5kOgorICAgICAgICByZXR1cm4gUHlfRWxsaXBzaXM7CisgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmV0dXJuIGUtPnYuTmFtZUNvbnN0YW50LnZhbHVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCghaXNfY29uc3QoZSkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKKy8qIFNlYXJjaCBpZiB2YXJpYWJsZSBhbm5vdGF0aW9ucyBhcmUgcHJlc2VudCBzdGF0aWNhbGx5IGluIGEgYmxvY2suICovCisKK3N0YXRpYyBpbnQKK2ZpbmRfYW5uKGFzZGxfc2VxICpzdG10cykKK3sKKyAgICBpbnQgaSwgaiwgcmVzID0gMDsKKyAgICBzdG10X3R5IHN0OworCisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzdG10cyk7IGkrKykgeworICAgICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChzdG10cywgaSk7CisgICAgICAgIHN3aXRjaCAoc3QtPmtpbmQpIHsKKyAgICAgICAgY2FzZSBBbm5Bc3NpZ25fa2luZDoKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEZvcl9raW5kOgorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuRm9yLmJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5Gb3Iub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFzeW5jRm9yX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5Bc3luY0Zvci5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuQXN5bmNGb3Iub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdoaWxlX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5XaGlsZS5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuV2hpbGUub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElmX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5JZi5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuSWYub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpdGhfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LldpdGguYm9keSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBc3luY1dpdGhfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LkFzeW5jV2l0aC5ib2R5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyeV9raW5kOgorICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGFzZGxfc2VxX0xFTihzdC0+di5UcnkuaGFuZGxlcnMpOyBqKyspIHsKKyAgICAgICAgICAgICAgICBleGNlcHRoYW5kbGVyX3R5IGhhbmRsZXIgPSAoZXhjZXB0aGFuZGxlcl90eSlhc2RsX3NlcV9HRVQoCisgICAgICAgICAgICAgICAgICAgIHN0LT52LlRyeS5oYW5kbGVycywgaik7CisgICAgICAgICAgICAgICAgaWYgKGZpbmRfYW5uKGhhbmRsZXItPnYuRXhjZXB0SGFuZGxlci5ib2R5KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5UcnkuYm9keSkgfHwKKyAgICAgICAgICAgICAgICAgIGZpbmRfYW5uKHN0LT52LlRyeS5maW5hbGJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5Ucnkub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmVzID0gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCisvKiBDb21waWxlIGEgc2VxdWVuY2Ugb2Ygc3RhdGVtZW50cywgY2hlY2tpbmcgZm9yIGEgZG9jc3RyaW5nCisgICBhbmQgZm9yIGFubm90YXRpb25zLiAqLwogCiBzdGF0aWMgaW50CiBjb21waWxlcl9ib2R5KHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKnN0bXRzKQpAQCAtMTMyMCw2ICsxNDM2LDE5IEBACiAgICAgaW50IGkgPSAwOwogICAgIHN0bXRfdHkgc3Q7CiAKKyAgICAvKiBTZXQgY3VycmVudCBsaW5lIG51bWJlciB0byB0aGUgbGluZSBudW1iZXIgb2YgZmlyc3Qgc3RhdGVtZW50LgorICAgICAgIFRoaXMgd2F5IGxpbmUgbnVtYmVyIGZvciBTRVRVUF9BTk5PVEFUSU9OUyB3aWxsIGFsd2F5cworICAgICAgIGNvaW5jaWRlIHdpdGggdGhlIGxpbmUgbnVtYmVyIG9mIGZpcnN0ICJyZWFsIiBzdGF0ZW1lbnQgaW4gbW9kdWxlLgorICAgICAgIElmIGJvZHkgaXMgZW1weSwgdGhlbiBsaW5lbm8gd2lsbCBiZSBzZXQgbGF0ZXIgaW4gYXNzZW1ibGUuICovCisgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9NT0RVTEUgJiYKKyAgICAgICAgIWMtPnUtPnVfbGluZW5vICYmIGFzZGxfc2VxX0xFTihzdG10cykpIHsKKyAgICAgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoc3RtdHMsIDApOworICAgICAgICBjLT51LT51X2xpbmVubyA9IHN0LT5saW5lbm87CisgICAgfQorICAgIC8qIEV2ZXJ5IGFubm90YXRlZCBjbGFzcyBhbmQgbW9kdWxlIHNob3VsZCBoYXZlIF9fYW5ub3RhdGlvbnNfXy4gKi8KKyAgICBpZiAoZmluZF9hbm4oc3RtdHMpKSB7CisgICAgICAgIEFERE9QKGMsIFNFVFVQX0FOTk9UQVRJT05TKTsKKyAgICB9CiAgICAgaWYgKCFhc2RsX3NlcV9MRU4oc3RtdHMpKQogICAgICAgICByZXR1cm4gMTsKICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChzdG10cywgMCk7CkBAIC0xMzU3LDYgKzE0ODYsOSBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW50ZXJhY3RpdmVfa2luZDoKKyAgICAgICAgaWYgKGZpbmRfYW5uKG1vZC0+di5JbnRlcmFjdGl2ZS5ib2R5KSkgeworICAgICAgICAgICAgQURET1AoYywgU0VUVVBfQU5OT1RBVElPTlMpOworICAgICAgICB9CiAgICAgICAgIGMtPmNfaW50ZXJhY3RpdmUgPSAxOwogICAgICAgICBWSVNJVF9TRVFfSU5fU0NPUEUoYywgc3RtdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLT52LkludGVyYWN0aXZlLmJvZHkpOwpAQCAtMTQyNiw1MyArMTU1OCw1MCBAQAogfQogCiBzdGF0aWMgaW50Ci1jb21waWxlcl9tYWtlX2Nsb3N1cmUoc3RydWN0IGNvbXBpbGVyICpjLCBQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IGFyZ3MsIFB5T2JqZWN0ICpxdWFsbmFtZSkKK2NvbXBpbGVyX21ha2VfY2xvc3VyZShzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5Q29kZU9iamVjdCAqY28sIFB5X3NzaXplX3QgZmxhZ3MsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKICAgICBQeV9zc2l6ZV90IGksIGZyZWUgPSBQeUNvZGVfR2V0TnVtRnJlZShjbyk7CiAgICAgaWYgKHF1YWxuYW1lID09IE5VTEwpCiAgICAgICAgIHF1YWxuYW1lID0gY28tPmNvX25hbWU7CiAKLSAgICBpZiAoZnJlZSA9PSAwKSB7Ci0gICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgKFB5T2JqZWN0KiljbywgY29uc3RzKTsKLSAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBxdWFsbmFtZSwgY29uc3RzKTsKLSAgICAgICAgQURET1BfSShjLCBNQUtFX0ZVTkNUSU9OLCBhcmdzKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBmcmVlOyArK2kpIHsKLSAgICAgICAgLyogQnlwYXNzIGNvbV9hZGRvcF92YXJuYW1lIGJlY2F1c2UgaXQgd2lsbCBnZW5lcmF0ZQotICAgICAgICAgICBMT0FEX0RFUkVGIGJ1dCBMT0FEX0NMT1NVUkUgaXMgbmVlZGVkLgotICAgICAgICAqLwotICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX2ZyZWV2YXJzLCBpKTsKLSAgICAgICAgaW50IGFyZywgcmVmdHlwZTsKKyAgICBpZiAoZnJlZSkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZnJlZTsgKytpKSB7CisgICAgICAgICAgICAvKiBCeXBhc3MgY29tX2FkZG9wX3Zhcm5hbWUgYmVjYXVzZSBpdCB3aWxsIGdlbmVyYXRlCisgICAgICAgICAgICAgICBMT0FEX0RFUkVGIGJ1dCBMT0FEX0NMT1NVUkUgaXMgbmVlZGVkLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fZnJlZXZhcnMsIGkpOworICAgICAgICAgICAgaW50IGFyZywgcmVmdHlwZTsKIAotICAgICAgICAvKiBTcGVjaWFsIGNhc2U6IElmIGEgY2xhc3MgY29udGFpbnMgYSBtZXRob2Qgd2l0aCBhCi0gICAgICAgICAgIGZyZWUgdmFyaWFibGUgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIG1ldGhvZCwKLSAgICAgICAgICAgdGhlIG5hbWUgd2lsbCBiZSBjb25zaWRlcmVkIGZyZWUgKmFuZCogbG9jYWwgaW4gdGhlCi0gICAgICAgICAgIGNsYXNzLiAgSXQgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGNsb3N1cmUsIGFzCi0gICAgICAgICAgIHdlbGwgYXMgYnkgdGhlIG5vcm1hbCBuYW1lIGxvb29rdXAgbG9naWMuCi0gICAgICAgICovCi0gICAgICAgIHJlZnR5cGUgPSBnZXRfcmVmX3R5cGUoYywgbmFtZSk7Ci0gICAgICAgIGlmIChyZWZ0eXBlID09IENFTEwpCi0gICAgICAgICAgICBhcmcgPSBjb21waWxlcl9sb29rdXBfYXJnKGMtPnUtPnVfY2VsbHZhcnMsIG5hbWUpOwotICAgICAgICBlbHNlIC8qIChyZWZ0eXBlID09IEZSRUUpICovCi0gICAgICAgICAgICBhcmcgPSBjb21waWxlcl9sb29rdXBfYXJnKGMtPnUtPnVfZnJlZXZhcnMsIG5hbWUpOwotICAgICAgICBpZiAoYXJnID09IC0xKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAibG9va3VwICVzIGluICVzICVkICVkXG4iCi0gICAgICAgICAgICAgICAgImZyZWV2YXJzIG9mICVzOiAlc1xuIiwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0X1JlcHIobmFtZSkpLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoYy0+dS0+dV9uYW1lKSwKLSAgICAgICAgICAgICAgICByZWZ0eXBlLCBhcmcsCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChjby0+Y29fbmFtZSksCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdF9SZXByKGNvLT5jb19mcmVldmFycykpKTsKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNvbXBpbGVyX21ha2VfY2xvc3VyZSgpIik7CisgICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2U6IElmIGEgY2xhc3MgY29udGFpbnMgYSBtZXRob2Qgd2l0aCBhCisgICAgICAgICAgICAgICBmcmVlIHZhcmlhYmxlIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBtZXRob2QsCisgICAgICAgICAgICAgICB0aGUgbmFtZSB3aWxsIGJlIGNvbnNpZGVyZWQgZnJlZSAqYW5kKiBsb2NhbCBpbiB0aGUKKyAgICAgICAgICAgICAgIGNsYXNzLiAgSXQgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGNsb3N1cmUsIGFzCisgICAgICAgICAgICAgICB3ZWxsIGFzIGJ5IHRoZSBub3JtYWwgbmFtZSBsb29va3VwIGxvZ2ljLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHJlZnR5cGUgPSBnZXRfcmVmX3R5cGUoYywgbmFtZSk7CisgICAgICAgICAgICBpZiAocmVmdHlwZSA9PSBDRUxMKQorICAgICAgICAgICAgICAgIGFyZyA9IGNvbXBpbGVyX2xvb2t1cF9hcmcoYy0+dS0+dV9jZWxsdmFycywgbmFtZSk7CisgICAgICAgICAgICBlbHNlIC8qIChyZWZ0eXBlID09IEZSRUUpICovCisgICAgICAgICAgICAgICAgYXJnID0gY29tcGlsZXJfbG9va3VwX2FyZyhjLT51LT51X2ZyZWV2YXJzLCBuYW1lKTsKKyAgICAgICAgICAgIGlmIChhcmcgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgImxvb2t1cCAlcyBpbiAlcyAlZCAlZFxuIgorICAgICAgICAgICAgICAgICAgICAiZnJlZXZhcnMgb2YgJXM6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0X1JlcHIobmFtZSkpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KGMtPnUtPnVfbmFtZSksCisgICAgICAgICAgICAgICAgICAgIHJlZnR5cGUsIGFyZywKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChjby0+Y29fbmFtZSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3RfUmVwcihjby0+Y29fZnJlZXZhcnMpKSk7CisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY29tcGlsZXJfbWFrZV9jbG9zdXJlKCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFERE9QX0koYywgTE9BRF9DTE9TVVJFLCBhcmcpOwogICAgICAgICB9Ci0gICAgICAgIEFERE9QX0koYywgTE9BRF9DTE9TVVJFLCBhcmcpOworICAgICAgICBmbGFncyB8PSAweDA4OworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBmcmVlKTsKICAgICB9Ci0gICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgZnJlZSk7CiAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCAoUHlPYmplY3QqKWNvLCBjb25zdHMpOwogICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgcXVhbG5hbWUsIGNvbnN0cyk7Ci0gICAgQURET1BfSShjLCBNQUtFX0NMT1NVUkUsIGFyZ3MpOworICAgIEFERE9QX0koYywgTUFLRV9GVU5DVElPTiwgZmxhZ3MpOwogICAgIHJldHVybiAxOwogfQogCkBAIC0xNDk0LDI2ICsxNjIzLDYwIEBACiBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFzZGxfc2VxICprd29ubHlhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmt3X2RlZmF1bHRzKQogewotICAgIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGRlZmF1bHRzICsgMS4KLSAgICAgICBSZXR1cm5zIDAgb24gZXJyb3IuCi0gICAgICovCi0gICAgaW50IGksIGRlZmF1bHRfY291bnQgPSAwOworICAgIC8qIFB1c2ggYSBkaWN0IG9mIGtleXdvcmQtb25seSBkZWZhdWx0IHZhbHVlcy4KKworICAgICAgIFJldHVybiAwIG9uIGVycm9yLCAtMSBpZiBubyBkaWN0IHB1c2hlZCwgMSBpZiBhIGRpY3QgaXMgcHVzaGVkLgorICAgICAgICovCisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKmtleXMgPSBOVUxMOworCiAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihrd29ubHlhcmdzKTsgaSsrKSB7CiAgICAgICAgIGFyZ190eSBhcmcgPSBhc2RsX3NlcV9HRVQoa3dvbmx5YXJncywgaSk7CiAgICAgICAgIGV4cHJfdHkgZGVmYXVsdF8gPSBhc2RsX3NlcV9HRVQoa3dfZGVmYXVsdHMsIGkpOwogICAgICAgICBpZiAoZGVmYXVsdF8pIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICptYW5nbGVkID0gX1B5X01hbmdsZShjLT51LT51X3ByaXZhdGUsIGFyZy0+YXJnKTsKLSAgICAgICAgICAgIGlmICghbWFuZ2xlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgbWFuZ2xlZCwgY29uc3RzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtYW5nbGVkKTsKLSAgICAgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfZXhwcihjLCBkZWZhdWx0XykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmICghbWFuZ2xlZCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0X2NvdW50Kys7CisgICAgICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAga2V5cyA9IFB5TGlzdF9OZXcoMSk7CisgICAgICAgICAgICAgICAgaWYgKGtleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0oa2V5cywgMCwgbWFuZ2xlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgcmVzID0gUHlMaXN0X0FwcGVuZChrZXlzLCBtYW5nbGVkKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfZXhwcihjLCBkZWZhdWx0XykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0X2NvdW50ICsgMTsKKyAgICBpZiAoa2V5cyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgZGVmYXVsdF9jb3VudCA9IFB5TGlzdF9HRVRfU0laRShrZXlzKTsKKyAgICAgICAgUHlPYmplY3QgKmtleXNfdHVwbGUgPSBQeUxpc3RfQXNUdXBsZShrZXlzKTsKKyAgICAgICAgUHlfREVDUkVGKGtleXMpOworICAgICAgICBpZiAoa2V5c190dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIGtleXNfdHVwbGUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgZGVmYXVsdF9jb3VudCk7CisgICAgICAgIGFzc2VydChkZWZhdWx0X2NvdW50ID4gMCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihrZXlzKTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGludApAQCAtMTU1NiwxMSArMTcxOSwxMCBAQAogY29tcGlsZXJfdmlzaXRfYW5ub3RhdGlvbnMoc3RydWN0IGNvbXBpbGVyICpjLCBhcmd1bWVudHNfdHkgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgcmV0dXJucykKIHsKLSAgICAvKiBQdXNoIGFyZyBhbm5vdGF0aW9ucyBhbmQgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gUmV0dXJuIHRoZSAjCi0gICAgICAgb2YgaXRlbXMgcHVzaGVkICsgMS4gVGhlIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgb3V0LW9mLW9yZGVyIHdydCB0aGUKLSAgICAgICBzb3VyY2UgY29kZS4KKyAgICAvKiBQdXNoIGFyZyBhbm5vdGF0aW9uIGRpY3QuCisgICAgICAgVGhlIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgb3V0LW9mLW9yZGVyIHdydCB0aGUgc291cmNlIGNvZGUuCiAKLSAgICAgICBNb3JlIHRoYW4gMl4xNi0xIGFubm90YXRpb25zIGlzIGEgU3ludGF4RXJyb3IuIFJldHVybnMgMCBvbiBlcnJvci4KKyAgICAgICBSZXR1cm4gMCBvbiBlcnJvciwgLTEgaWYgbm8gZGljdCBwdXNoZWQsIDEgaWYgYSBkaWN0IGlzIHB1c2hlZC4KICAgICAgICAqLwogICAgIHN0YXRpYyBpZGVudGlmaWVyIHJldHVybl9zdHI7CiAgICAgUHlPYmplY3QgKm5hbWVzOwpAQCAtMTU5MiwzMiArMTc1NCwyMCBAQAogICAgIH0KIAogICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRShuYW1lcyk7Ci0gICAgaWYgKGxlbiA+IDY1NTM0KSB7Ci0gICAgICAgIC8qIGxlbiBtdXN0IGZpdCBpbiAxNiBiaXRzLCBhbmQgbGVuIGlzIGluY3JlbWVudGVkIGJlbG93ICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0b28gbWFueSBhbm5vdGF0aW9ucyIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KICAgICBpZiAobGVuKSB7Ci0gICAgICAgIC8qIGNvbnZlcnQgbmFtZXMgdG8gYSB0dXBsZSBhbmQgcGxhY2Ugb24gc3RhY2sgKi8KLSAgICAgICAgUHlPYmplY3QgKmVsdDsKLSAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBQeU9iamVjdCAqcyA9IFB5VHVwbGVfTmV3KGxlbik7Ci0gICAgICAgIGlmICghcykKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgZWx0ID0gUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBpKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihlbHQpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShzLCBpLCBlbHQpOworICAgICAgICBQeU9iamVjdCAqa2V5dHVwbGUgPSBQeUxpc3RfQXNUdXBsZShuYW1lcyk7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CisgICAgICAgIGlmIChrZXl0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHMsIGNvbnN0cyk7Ci0gICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgbGVuKys7IC8qIGluY2x1ZGUgdGhlIGp1c3QtcHVzaGVkIHR1cGxlICovCisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5dHVwbGUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgbGVuKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0KLSAgICAvKiBXZSBqdXN0IGNoZWNrZWQgdGhhdCBsZW4gPD0gNjU1MzUsIHNlZSBhYm92ZSAqLwotICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKGxlbiArIDEsIFB5X3NzaXplX3QsIGludCk7CisgICAgZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKIGVycm9yOgogICAgIFB5X0RFQ1JFRihuYW1lcyk7CkBAIC0xNjI1LDYgKzE3NzUsMzYgQEAKIH0KIAogc3RhdGljIGludAorY29tcGlsZXJfdmlzaXRfZGVmYXVsdHMoc3RydWN0IGNvbXBpbGVyICpjLCBhcmd1bWVudHNfdHkgYXJncykKK3sKKyAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOworICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cykpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorY29tcGlsZXJfZGVmYXVsdF9hcmd1bWVudHMoc3RydWN0IGNvbXBpbGVyICpjLCBhcmd1bWVudHNfdHkgYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGZ1bmNmbGFncyA9IDA7CisgICAgaWYgKGFyZ3MtPmRlZmF1bHRzICYmIGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cykgPiAwKSB7CisgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfZGVmYXVsdHMoYywgYXJncykpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGZ1bmNmbGFncyB8PSAweDAxOworICAgIH0KKyAgICBpZiAoYXJncy0+a3dvbmx5YXJncykgeworICAgICAgICBpbnQgcmVzID0gY29tcGlsZXJfdmlzaXRfa3dvbmx5ZGVmYXVsdHMoYywgYXJncy0+a3dvbmx5YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmt3X2RlZmF1bHRzKTsKKyAgICAgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVzID4gMCkgeworICAgICAgICAgICAgZnVuY2ZsYWdzIHw9IDB4MDI7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZ1bmNmbGFnczsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfZnVuY3Rpb24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMsIGludCBpc19hc3luYykKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvOwpAQCAtMTYzNSwxMiArMTgxNSwxMSBAQAogICAgIGFzZGxfc2VxKiBkZWNvczsKICAgICBhc2RsX3NlcSAqYm9keTsKICAgICBzdG10X3R5IHN0OwotICAgIFB5X3NzaXplX3QgaSwgbiwgYXJnbGVuZ3RoOwotICAgIGludCBkb2NzdHJpbmcsIGt3X2RlZmF1bHRfY291bnQgPSAwOwotICAgIGludCBudW1fYW5ub3RhdGlvbnM7CisgICAgUHlfc3NpemVfdCBpLCBuLCBmdW5jZmxhZ3M7CisgICAgaW50IGRvY3N0cmluZzsKKyAgICBpbnQgYW5ub3RhdGlvbnM7CiAgICAgaW50IHNjb3BlX3R5cGU7CiAKLQogICAgIGlmIChpc19hc3luYykgewogICAgICAgICBhc3NlcnQocy0+a2luZCA9PSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQpOwogCkBAIC0xNjY1LDMwICsxODQ0LDMyIEBACiAKICAgICBpZiAoIWNvbXBpbGVyX2RlY29yYXRvcnMoYywgZGVjb3MpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoYXJncy0+ZGVmYXVsdHMpCi0gICAgICAgIFZJU0lUX1NFUShjLCBleHByLCBhcmdzLT5kZWZhdWx0cyk7Ci0gICAgaWYgKGFyZ3MtPmt3b25seWFyZ3MpIHsKLSAgICAgICAgaW50IHJlcyA9IGNvbXBpbGVyX3Zpc2l0X2t3b25seWRlZmF1bHRzKGMsIGFyZ3MtPmt3b25seWFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5rd19kZWZhdWx0cyk7Ci0gICAgICAgIGlmIChyZXMgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBrd19kZWZhdWx0X2NvdW50ID0gcmVzIC0gMTsKLSAgICB9Ci0gICAgbnVtX2Fubm90YXRpb25zID0gY29tcGlsZXJfdmlzaXRfYW5ub3RhdGlvbnMoYywgYXJncywgcmV0dXJucyk7Ci0gICAgaWYgKG51bV9hbm5vdGF0aW9ucyA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBudW1fYW5ub3RhdGlvbnMtLTsKLSAgICBhc3NlcnQoKG51bV9hbm5vdGF0aW9ucyAmIDB4RkZGRikgPT0gbnVtX2Fubm90YXRpb25zKTsKIAotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlX3R5cGUsICh2b2lkICopcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubykpCisgICAgZnVuY2ZsYWdzID0gY29tcGlsZXJfZGVmYXVsdF9hcmd1bWVudHMoYywgYXJncyk7CisgICAgaWYgKGZ1bmNmbGFncyA9PSAtMSkgewogICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBhbm5vdGF0aW9ucyA9IGNvbXBpbGVyX3Zpc2l0X2Fubm90YXRpb25zKGMsIGFyZ3MsIHJldHVybnMpOworICAgIGlmIChhbm5vdGF0aW9ucyA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmIChhbm5vdGF0aW9ucyA+IDApIHsKKyAgICAgICAgZnVuY2ZsYWdzIHw9IDB4MDQ7CisgICAgfQorCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCBzY29wZV90eXBlLCAodm9pZCAqKXMsIHMtPmxpbmVubykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoYm9keSwgMCk7CiAgICAgZG9jc3RyaW5nID0gY29tcGlsZXJfaXNkb2NzdHJpbmcoc3QpOwotICAgIGlmIChkb2NzdHJpbmcgJiYgYy0+Y19vcHRpbWl6ZSA8IDIpCi0gICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5TdHIuczsKKyAgICBpZiAoZG9jc3RyaW5nICYmIGMtPmNfb3B0aW1pemUgPCAyKSB7CisgICAgICAgIGlmIChzdC0+di5FeHByLnZhbHVlLT5raW5kID09IENvbnN0YW50X2tpbmQpCisgICAgICAgICAgICBmaXJzdF9jb25zdCA9IHN0LT52LkV4cHIudmFsdWUtPnYuQ29uc3RhbnQudmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5TdHIuczsKKyAgICB9CiAgICAgaWYgKGNvbXBpbGVyX2FkZF9vKGMsIGMtPnUtPnVfY29uc3RzLCBmaXJzdF9jb25zdCkgPCAwKSAgICAgIHsKICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzEyLDEyICsxODkzLDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgYXJnbGVuZ3RoID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBhcmdsZW5ndGggfD0ga3dfZGVmYXVsdF9jb3VudCA8PCA4OwotICAgIGFyZ2xlbmd0aCB8PSBudW1fYW5ub3RhdGlvbnMgPDwgMTY7Ci0gICAgaWYgKGlzX2FzeW5jKQotICAgICAgICBjby0+Y29fZmxhZ3MgfD0gQ09fQ09ST1VUSU5FOwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoLCBxdWFsbmFtZSk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBmdW5jZmxhZ3MsIHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKQEAgLTE3OTIsNyArMTk2OCw3IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV9uZWVkc19jbGFzc19jbG9zdXJlKSB7Ci0gICAgICAgICAgICAvKiByZXR1cm4gdGhlIChlbXB0eSkgX19jbGFzc19fIGNlbGwgKi8KKyAgICAgICAgICAgIC8qIHN0b3JlIF9fY2xhc3NjZWxsX18gaW50byBjbGFzcyBuYW1lc3BhY2UgKi8KICAgICAgICAgICAgIHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CkBAIC0xODA1LDE1ICsxOTgxLDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhc3NlcnQoaSA9PSAwKTsKLSAgICAgICAgICAgIC8qIFJldHVybiB0aGUgY2VsbCB3aGVyZSB0byBzdG9yZSBfX2NsYXNzX18gKi8KKwogICAgICAgICAgICAgQURET1BfSShjLCBMT0FEX0NMT1NVUkUsIGkpOworICAgICAgICAgICAgc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fY2xhc3NjZWxsX18iKTsKKyAgICAgICAgICAgIGlmICghc3RyIHx8ICFjb21waWxlcl9uYW1lb3AoYywgc3RyLCBTdG9yZSkpIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHN0cik7CisgICAgICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogVGhpcyBoYXBwZW5zIHdoZW4gbm9ib2R5IHJlZmVyZW5jZXMgdGhlIGNlbGwuICovCiAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X1NpemUoYy0+dS0+dV9jZWxsdmFycykgPT0gMCk7Ci0gICAgICAgICAgICAvKiBUaGlzIGhhcHBlbnMgd2hlbiBub2JvZHkgcmVmZXJlbmNlcyB0aGUgY2VsbC4gUmV0dXJuIE5vbmUuICovCi0gICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CiAgICAgICAgIH0KLSAgICAgICAgQURET1BfSU5fU0NPUEUoYywgUkVUVVJOX1ZBTFVFKTsKICAgICAgICAgLyogY3JlYXRlIHRoZSBjb2RlIG9iamVjdCAqLwogICAgICAgICBjbyA9IGFzc2VtYmxlKGMsIDEpOwogICAgIH0KQEAgLTE4NzcsOCArMjA1OCw3IEBACiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKICAgICBQeU9iamVjdCAqcXVhbG5hbWU7CiAgICAgc3RhdGljIGlkZW50aWZpZXIgbmFtZTsKLSAgICBpbnQga3dfZGVmYXVsdF9jb3VudCA9IDA7Ci0gICAgUHlfc3NpemVfdCBhcmdsZW5ndGg7CisgICAgUHlfc3NpemVfdCBmdW5jZmxhZ3M7CiAgICAgYXJndW1lbnRzX3R5IGFyZ3MgPSBlLT52LkxhbWJkYS5hcmdzOwogICAgIGFzc2VydChlLT5raW5kID09IExhbWJkYV9raW5kKTsKIApAQCAtMTg4OCwxNCArMjA2OCwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGFyZ3MtPmRlZmF1bHRzKQotICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOwotICAgIGlmIChhcmdzLT5rd29ubHlhcmdzKSB7Ci0gICAgICAgIGludCByZXMgPSBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhjLCBhcmdzLT5rd29ubHlhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dfZGVmYXVsdHMpOwotICAgICAgICBpZiAocmVzID09IDApIHJldHVybiAwOwotICAgICAgICBrd19kZWZhdWx0X2NvdW50ID0gcmVzIC0gMTsKKyAgICBmdW5jZmxhZ3MgPSBjb21waWxlcl9kZWZhdWx0X2FyZ3VtZW50cyhjLCBhcmdzKTsKKyAgICBpZiAoZnVuY2ZsYWdzID09IC0xKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgQ09NUElMRVJfU0NPUEVfTEFNQkRBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE5MjEsOSArMjA5OCw3IEBACiAgICAgaWYgKGNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXJnbGVuZ3RoID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBhcmdsZW5ndGggfD0ga3dfZGVmYXVsdF9jb3VudCA8PCA4OwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoLCBxdWFsbmFtZSk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBmdW5jZmxhZ3MsIHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKQEAgLTIwMDIsMTQgKzIxNzcsMTQgQEAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2FzeW5jX2ZvcihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnN0b3BpdGVyX2Vycm9yID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihTdG9wQXN5bmNJdGVyYXRpb24pOworCiAgICAgYmFzaWNibG9jayAqdHJ5LCAqZXhjZXB0LCAqZW5kLCAqYWZ0ZXJfdHJ5LCAqdHJ5X2NsZWFudXAsCiAgICAgICAgICAgICAgICAqYWZ0ZXJfbG9vcCwgKmFmdGVyX2xvb3BfZWxzZTsKIAotICAgIGlmIChzdG9waXRlcl9lcnJvciA9PSBOVUxMKSB7Ci0gICAgICAgIHN0b3BpdGVyX2Vycm9yID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIlN0b3BBc3luY0l0ZXJhdGlvbiIpOwotICAgICAgICBpZiAoc3RvcGl0ZXJfZXJyb3IgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgIFB5T2JqZWN0ICpzdG9wX2FpdGVyX2Vycm9yID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICBpZiAoc3RvcF9haXRlcl9lcnJvciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIHRyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKQEAgLTIwNTEsNyArMjIyNiw3IEBACiAKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOwogICAgIEFERE9QKGMsIERVUF9UT1ApOwotICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BpdGVyX2Vycm9yLCBuYW1lcyk7CisgICAgQURET1BfTyhjLCBMT0FEX0dMT0JBTCwgc3RvcF9haXRlcl9lcnJvciwgbmFtZXMpOwogICAgIEFERE9QX0koYywgQ09NUEFSRV9PUCwgUHlDbXBfRVhDX01BVENIKTsKICAgICBBRERPUF9KQUJTKGMsIFBPUF9KVU1QX0lGX0ZBTFNFLCB0cnlfY2xlYW51cCk7CiAKQEAgLTI1OTksNiArMjc3NCwyNSBAQAogfQogCiBzdGF0aWMgaW50Citjb21waWxlcl92aXNpdF9zdG10X2V4cHIoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IHZhbHVlKQoreworICAgIGlmIChjLT5jX2ludGVyYWN0aXZlICYmIGMtPmNfbmVzdGxldmVsIDw9IDEpIHsKKyAgICAgICAgVklTSVQoYywgZXhwciwgdmFsdWUpOworICAgICAgICBBRERPUChjLCBQUklOVF9FWFBSKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKGlzX2NvbnN0KHZhbHVlKSkgeworICAgICAgICAvKiBpZ25vcmUgY29uc3RhbnQgc3RhdGVtZW50ICovCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIFZJU0lUKGMsIGV4cHIsIHZhbHVlKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfdmlzaXRfc3RtdChzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKICAgICBQeV9zc2l6ZV90IGksIG47CkBAIC0yNjE3LDYgKzI4MTEsOSBAQAogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidyZXR1cm4nIG91dHNpZGUgZnVuY3Rpb24iKTsKICAgICAgICAgaWYgKHMtPnYuUmV0dXJuLnZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV9jb3JvdXRpbmUgJiYgYy0+dS0+dV9zdGUtPnN0ZV9nZW5lcmF0b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBjLCAiJ3JldHVybicgd2l0aCB2YWx1ZSBpbiBhc3luYyBnZW5lcmF0b3IiKTsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuUmV0dXJuLnZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC0yNjM4LDYgKzI4MzUsOCBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfYXVnYXNzaWduKGMsIHMpOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9hbm5hc3NpZ24oYywgcyk7CiAgICAgY2FzZSBGb3Jfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2ZvcihjLCBzKTsKICAgICBjYXNlIFdoaWxlX2tpbmQ6CkBAIC0yNjY4LDE2ICsyODY3LDcgQEAKICAgICBjYXNlIE5vbmxvY2FsX2tpbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXhwcl9raW5kOgotICAgICAgICBpZiAoYy0+Y19pbnRlcmFjdGl2ZSAmJiBjLT5jX25lc3RsZXZlbCA8PSAxKSB7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LkV4cHIudmFsdWUpOwotICAgICAgICAgICAgQURET1AoYywgUFJJTlRfRVhQUik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocy0+di5FeHByLnZhbHVlLT5raW5kICE9IFN0cl9raW5kICYmCi0gICAgICAgICAgICAgICAgIHMtPnYuRXhwci52YWx1ZS0+a2luZCAhPSBOdW1fa2luZCkgewotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5FeHByLnZhbHVlKTsKLSAgICAgICAgICAgIEFERE9QKGMsIFBPUF9UT1ApOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gY29tcGlsZXJfdmlzaXRfc3RtdF9leHByKGMsIHMtPnYuRXhwci52YWx1ZSk7CiAgICAgY2FzZSBQYXNzX2tpbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQnJlYWtfa2luZDoKQEAgLTMwNzksOSArMzI2OSw1MyBAQAogfQogCiBzdGF0aWMgaW50CithcmVfYWxsX2l0ZW1zX2NvbnN0KGFzZGxfc2VxICpzZXEsIFB5X3NzaXplX3QgYmVnaW4sIFB5X3NzaXplX3QgZW5kKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkga2V5ID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKHNlcSwgaSk7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCB8fCAhaXNfY29uc3Qoa2V5KSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfc3ViZGljdChzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSwgUHlfc3NpemVfdCBiZWdpbiwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlfc3NpemVfdCBpLCBuID0gZW5kIC0gYmVnaW47CisgICAgUHlPYmplY3QgKmtleXMsICprZXk7CisgICAgaWYgKG4gPiAxICYmIGFyZV9hbGxfaXRlbXNfY29uc3QoZS0+di5EaWN0LmtleXMsIGJlZ2luLCBlbmQpKSB7CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgIH0KKyAgICAgICAga2V5cyA9IFB5VHVwbGVfTmV3KG4pOworICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBnZXRfY29uc3RfdmFsdWUoKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5cywgaSAtIGJlZ2luLCBrZXkpOworICAgICAgICB9CisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5cywgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9DT05TVF9LRVlfTUFQLCBuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9kaWN0KHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgaSwgbiwgY29udGFpbmVycywgZWxlbWVudHM7CisgICAgUHlfc3NpemVfdCBpLCBuLCBlbGVtZW50czsKKyAgICBpbnQgY29udGFpbmVyczsKICAgICBpbnQgaXNfdW5wYWNraW5nID0gMDsKICAgICBuID0gYXNkbF9zZXFfTEVOKGUtPnYuRGljdC52YWx1ZXMpOwogICAgIGNvbnRhaW5lcnMgPSAwOwpAQCAtMzA4OSw3ICszMzIzLDggQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIGlzX3VucGFja2luZyA9IChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkgPT0gTlVMTDsKICAgICAgICAgaWYgKGVsZW1lbnRzID09IDB4RkZGRiB8fCAoZWxlbWVudHMgJiYgaXNfdW5wYWNraW5nKSkgewotICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgICAgIGlmICghY29tcGlsZXJfc3ViZGljdChjLCBlLCBpIC0gZWxlbWVudHMsIGkpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgY29udGFpbmVycysrOwogICAgICAgICAgICAgZWxlbWVudHMgPSAwOwogICAgICAgICB9CkBAIC0zMDk4LDEzICszMzMzLDEyIEBACiAgICAgICAgICAgICBjb250YWluZXJzKys7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CiAgICAgICAgICAgICBlbGVtZW50cysrOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChlbGVtZW50cyB8fCBjb250YWluZXJzID09IDApIHsKLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgaWYgKCFjb21waWxlcl9zdWJkaWN0KGMsIGUsIG4gLSBlbGVtZW50cywgbikpCisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY29udGFpbmVycysrOwogICAgIH0KICAgICAvKiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGRpY3QsIHRoZXkgbmVlZCB0byBiZSBtZXJnZWQgaW50byBhIG5ldwpAQCAtMzE3MywyOCArMzQwNywxMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmtleXdvcmRzKTsKIH0KIAorc3RhdGljIGludAorY29tcGlsZXJfam9pbmVkX3N0cihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICBWSVNJVF9TRVEoYywgZXhwciwgZS0+di5Kb2luZWRTdHIudmFsdWVzKTsKKyAgICBBRERPUF9JKGMsIEJVSUxEX1NUUklORywgYXNkbF9zZXFfTEVOKGUtPnYuSm9pbmVkU3RyLnZhbHVlcykpOworICAgIHJldHVybiAxOworfQorCisvKiBVc2VkIHRvIGltcGxlbWVudCBmLXN0cmluZ3MuIEZvcm1hdCBhIHNpbmdsZSB2YWx1ZS4gKi8KK3N0YXRpYyBpbnQKK2NvbXBpbGVyX2Zvcm1hdHRlZF92YWx1ZShzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICAvKiBPdXIgb3BhcmcgZW5jb2RlcyAyIHBpZWNlcyBvZiBpbmZvcm1hdGlvbjogdGhlIGNvbnZlcnNpb24KKyAgICAgICBjaGFyYWN0ZXIsIGFuZCB3aGV0aGVyIG9yIG5vdCBhIGZvcm1hdF9zcGVjIHdhcyBwcm92aWRlZC4KKworICAgICAgIENvbnZlcnQgdGhlIGNvbnZlcnNpb24gY2hhciB0byAyIGJpdHM6CisgICAgICAgTm9uZTogMDAwICAweDAgIEZWQ19OT05FCisgICAgICAgIXMgIDogMDAxICAweDEgIEZWQ19TVFIKKyAgICAgICAhciAgOiAwMTAgIDB4MiAgRlZDX1JFUFIKKyAgICAgICAhYSAgOiAwMTEgIDB4MyAgRlZDX0FTQ0lJCisKKyAgICAgICBuZXh0IGJpdCBpcyB3aGV0aGVyIG9yIG5vdCB3ZSBoYXZlIGEgZm9ybWF0IHNwZWM6CisgICAgICAgeWVzIDogMTAwICAweDQKKyAgICAgICBubyAgOiAwMDAgIDB4MAorICAgICovCisKKyAgICBpbnQgb3Bhcmc7CisKKyAgICAvKiBFdmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiB0byBiZSBmb3JtYXR0ZWQuICovCisgICAgVklTSVQoYywgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSk7CisKKyAgICBzd2l0Y2ggKGUtPnYuRm9ybWF0dGVkVmFsdWUuY29udmVyc2lvbikgeworICAgIGNhc2UgJ3MnOiBvcGFyZyA9IEZWQ19TVFI7ICAgYnJlYWs7CisgICAgY2FzZSAncic6IG9wYXJnID0gRlZDX1JFUFI7ICBicmVhazsKKyAgICBjYXNlICdhJzogb3BhcmcgPSBGVkNfQVNDSUk7IGJyZWFrOworICAgIGNhc2UgLTE6ICBvcGFyZyA9IEZWQ19OT05FOyAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBjb252ZXJzaW9uIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpIHsKKyAgICAgICAgLyogRXZhbHVhdGUgdGhlIGZvcm1hdCBzcGVjLCBhbmQgdXBkYXRlIG91ciBvcGNvZGUgYXJnLiAqLworICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKTsKKyAgICAgICAgb3BhcmcgfD0gRlZTX0hBVkVfU1BFQzsKKyAgICB9CisKKyAgICAvKiBBbmQgcHVzaCBvdXIgb3Bjb2RlIGFuZCBvcGFyZyAqLworICAgIEFERE9QX0koYywgRk9STUFUX1ZBTFVFLCBvcGFyZyk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX3N1Ymt3YXJncyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFzZGxfc2VxICprZXl3b3JkcywgUHlfc3NpemVfdCBiZWdpbiwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlfc3NpemVfdCBpLCBuID0gZW5kIC0gYmVnaW47CisgICAga2V5d29yZF90eSBrdzsKKyAgICBQeU9iamVjdCAqa2V5cywgKmtleTsKKyAgICBhc3NlcnQobiA+IDApOworICAgIGlmIChuID4gMSkgeworICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICB9CisgICAgICAgIGtleXMgPSBQeVR1cGxlX05ldyhuKTsKKyAgICAgICAgaWYgKGtleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAga2V5ID0gKChrZXl3b3JkX3R5KSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpKS0+YXJnOworICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleXMsIGkgLSBiZWdpbiwga2V5KTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIGtleXMsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgbik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBhIGZvciBsb29wIG9ubHkgZXhlY3V0ZXMgb25jZSAqLworICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGt3LT5hcmcsIGNvbnN0cyk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICB9CisgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBuKTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIC8qIHNoYXJlZCBjb2RlIGJldHdlZW4gY29tcGlsZXJfY2FsbCBhbmQgY29tcGlsZXJfY2xhc3MgKi8KIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywKLSAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbiwgLyogQXJncyBhbHJlYWR5IHB1c2hlZCAqLworICAgICAgICAgICAgICAgICAgICAgaW50IG4sIC8qIEFyZ3MgYWxyZWFkeSBwdXNoZWQgKi8KICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzKQogewotICAgIGludCBjb2RlID0gMDsKLSAgICBQeV9zc2l6ZV90IG5lbHRzLCBpLCBuc2Vlbiwgbmt3OworICAgIFB5X3NzaXplX3QgaSwgbnNlZW4sIG5lbHRzLCBua3dlbHRzOworICAgIGludCBtdXN0ZGljdHVucGFjayA9IDA7CiAKICAgICAvKiB0aGUgbnVtYmVyIG9mIHR1cGxlcyBhbmQgZGljdGlvbmFyaWVzIG9uIHRoZSBzdGFjayAqLwogICAgIFB5X3NzaXplX3QgbnN1YmFyZ3MgPSAwLCBuc3Via3dhcmdzID0gMDsKIAotICAgIG5rdyA9IDA7Ci0gICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgKi8KICAgICBuZWx0cyA9IGFzZGxfc2VxX0xFTihhcmdzKTsKKyAgICBua3dlbHRzID0gYXNkbF9zZXFfTEVOKGtleXdvcmRzKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBua3dlbHRzOyBpKyspIHsKKyAgICAgICAga2V5d29yZF90eSBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgIGlmIChrdy0+YXJnID09IE5VTEwpIHsKKyAgICAgICAgICAgIG11c3RkaWN0dW5wYWNrID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgbnNlZW4gPSBuOyAgLyogdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbmVsdHM7IGkrKykgewogICAgICAgICBleHByX3R5IGVsdCA9IGFzZGxfc2VxX0dFVChhcmdzLCBpKTsKICAgICAgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKICAgICAgICAgICAgIC8qIEEgc3Rhci1hcmcuIElmIHdlJ3ZlIHNlZW4gcG9zaXRpb25hbCBhcmd1bWVudHMsCi0gICAgICAgICAgICAgICBwYWNrIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbnRvIGEKLSAgICAgICAgICAgICAgIHR1cGxlLiAqLworICAgICAgICAgICAgICAgcGFjayB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byBhIHR1cGxlLiAqLwogICAgICAgICAgICAgaWYgKG5zZWVuKSB7CiAgICAgICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbnNlZW4pOwogICAgICAgICAgICAgICAgIG5zZWVuID0gMDsKQEAgLTMyMDMsOTIgKzM1MzMsNzggQEAKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKICAgICAgICAgICAgIG5zdWJhcmdzKys7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnN1YmFyZ3MpIHsKLSAgICAgICAgICAgIC8qIFdlJ3ZlIHNlZW4gc3Rhci1hcmdzIGFscmVhZHksIHNvIHdlCi0gICAgICAgICAgICAgICBjb3VudCB0b3dhcmRzIGl0ZW1zLXRvLXBhY2staW50by10dXBsZS4gKi8KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOwogICAgICAgICAgICAgbnNlZW4rKzsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8qIFBvc2l0aW9uYWwgYXJndW1lbnRzIGJlZm9yZSBzdGFyLWFyZ3VtZW50cwotICAgICAgICAgICAgICAgYXJlIGxlZnQgb24gdGhlIHN0YWNrLiAqLwotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKLSAgICAgICAgICAgIG4rKzsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobnNlZW4pIHsKLSAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcgcG9zaXRpb25hbCBhcmd1bWVudHMuICovCi0gICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG5zZWVuKTsKLSAgICAgICAgbnN1YmFyZ3MrKzsKLSAgICB9Ci0gICAgaWYgKG5zdWJhcmdzKSB7Ci0gICAgICAgIGNvZGUgfD0gMTsKLSAgICAgICAgaWYgKG5zdWJhcmdzID4gMSkgewotICAgICAgICAgICAgLyogSWYgd2UgZW5kZWQgdXAgd2l0aCBtb3JlIHRoYW4gb25lIHN0YXJhcmcsIHdlIG5lZWQKLSAgICAgICAgICAgICAgIHRvIGNvbmNhdGVuYXRlIHRoZW0gaW50byBhIHNpbmdsZSBzZXF1ZW5jZS4gKi8KLSAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTElTVF9VTlBBQ0ssIG5zdWJhcmdzKTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIC8qIFNhbWUgZGFuY2UgYWdhaW4gZm9yIGtleXdvcmQgYXJndW1lbnRzICovCi0gICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBrZXl3b3JkIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgZm9sbG93aW5nICovCi0gICAgbmVsdHMgPSBhc2RsX3NlcV9MRU4oa2V5d29yZHMpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7Ci0gICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOwotICAgICAgICBpZiAoa3ctPmFyZyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nLiAqLwotICAgICAgICAgICAgaWYgKG5zZWVuKSB7Ci0gICAgICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG5zZWVuKTsKLSAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgaWYgKG5zdWJhcmdzIHx8IG11c3RkaWN0dW5wYWNrKSB7CisgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcgcG9zaXRpb25hbCBhcmd1bWVudHMuICovCisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7CisgICAgICAgICAgICBuc3ViYXJncysrOworICAgICAgICB9CisgICAgICAgIGlmIChuc3ViYXJncyA+IDEpIHsKKyAgICAgICAgICAgIC8qIElmIHdlIGVuZGVkIHVwIHdpdGggbW9yZSB0aGFuIG9uZSBzdGFyYXJnLCB3ZSBuZWVkCisgICAgICAgICAgICAgICB0byBjb25jYXRlbmF0ZSB0aGVtIGludG8gYSBzaW5nbGUgc2VxdWVuY2UuICovCisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwsIG5zdWJhcmdzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChuc3ViYXJncyA9PSAwKSB7CisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCAwKTsKKyAgICAgICAgfQorICAgICAgICBuc2VlbiA9IDA7ICAvKiB0aGUgbnVtYmVyIG9mIGtleXdvcmQgYXJndW1lbnRzIG9uIHRoZSBzdGFjayBmb2xsb3dpbmcgKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5rd2VsdHM7IGkrKykgeworICAgICAgICAgICAga2V5d29yZF90eSBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgICAgICBpZiAoa3ctPmFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogQSBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZy4gKi8KKyAgICAgICAgICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21waWxlcl9zdWJrd2FyZ3MoYywga2V5d29yZHMsIGkgLSBuc2VlbiwgaSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgbnN1Ymt3YXJncysrOworICAgICAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7CiAgICAgICAgICAgICAgICAgbnN1Ymt3YXJncysrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG5zZWVuKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBrZXl3b3JkIGFyZ3VtZW50cy4gKi8KKyAgICAgICAgICAgIGlmICghY29tcGlsZXJfc3Via3dhcmdzKGMsIGtleXdvcmRzLCBua3dlbHRzIC0gbnNlZW4sIG5rd2VsdHMpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgbnN1Ymt3YXJncysrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5zdWJrd2FyZ3MpIHsKLSAgICAgICAgICAgIC8qIEEga2V5d29yZCBhcmd1bWVudCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgZGljdC4gKi8KLSAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwga3ctPmFyZywgY29uc3RzKTsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7Ci0gICAgICAgICAgICBuc2VlbisrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyoga2V5d29yZCBhcmd1bWVudCAqLwotICAgICAgICAgICAgVklTSVQoYywga2V5d29yZCwga3cpCi0gICAgICAgICAgICBua3crKzsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobnNlZW4pIHsKLSAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcga2V5d29yZCBhcmd1bWVudHMuICovCi0gICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBuc2Vlbik7Ci0gICAgICAgIG5zdWJrd2FyZ3MrKzsKLSAgICB9Ci0gICAgaWYgKG5zdWJrd2FyZ3MpIHsKLSAgICAgICAgY29kZSB8PSAyOwogICAgICAgICBpZiAobnN1Ymt3YXJncyA+IDEpIHsKICAgICAgICAgICAgIC8qIFBhY2sgaXQgYWxsIHVwICovCi0gICAgICAgICAgICBpbnQgZnVuY3Rpb25fcG9zID0gbiArIChjb2RlICYgMSkgKyAyICogbmt3ICsgMTsKLSAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwsIG5zdWJrd2FyZ3MgfCAoZnVuY3Rpb25fcG9zIDw8IDgpKTsKKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwsIG5zdWJrd2FyZ3MpOwogICAgICAgICB9CisgICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9FWCwgbnN1Ymt3YXJncyA+IDApOworICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgYXNzZXJ0KG4gPCAxPDw4KTsKLSAgICBhc3NlcnQobmt3IDwgMTw8MjQpOwotICAgIG4gfD0gbmt3IDw8IDg7Ci0KLSAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTiwgbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX1ZBUiwgbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX0tXLCBuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAzOgotICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fVkFSX0tXLCBuKTsKLSAgICAgICAgYnJlYWs7CisgICAgZWxzZSBpZiAobmt3ZWx0cykgeworICAgICAgICBQeU9iamVjdCAqbmFtZXM7CisgICAgICAgIFZJU0lUX1NFUShjLCBrZXl3b3JkLCBrZXl3b3Jkcyk7CisgICAgICAgIG5hbWVzID0gUHlUdXBsZV9OZXcobmt3ZWx0cyk7CisgICAgICAgIGlmIChuYW1lcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmt3ZWx0czsgaSsrKSB7CisgICAgICAgICAgICBrZXl3b3JkX3R5IGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihrdy0+YXJnKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmFtZXMsIGksIGt3LT5hcmcpOworICAgICAgICB9CisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwgbmFtZXMsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9LVywgbiArIG5lbHRzICsgbmt3ZWx0cyk7CisgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICByZXR1cm4gMTsKKyAgICBlbHNlIHsKKyAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OLCBuICsgbmVsdHMpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CiB9CiAKIApAQCAtMzMwNywxMSArMzYyMywyOCBAQAogICAgIC0gaXRlcmF0ZSBvdmVyIHRoZSBnZW5lcmF0b3Igc2VxdWVuY2UgaW5zdGVhZCBvZiB1c2luZyByZWN1cnNpb24KICovCiAKKwogc3RhdGljIGludAogY29tcGlsZXJfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3Ioc3RydWN0IGNvbXBpbGVyICpjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKQogeworICAgIGNvbXByZWhlbnNpb25fdHkgZ2VuOworICAgIGdlbiA9IChjb21wcmVoZW5zaW9uX3R5KWFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCBnZW5faW5kZXgpOworICAgIGlmIChnZW4tPmlzX2FzeW5jKSB7CisgICAgICAgIHJldHVybiBjb21waWxlcl9hc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcigKKyAgICAgICAgICAgIGMsIGdlbmVyYXRvcnMsIGdlbl9pbmRleCwgZWx0LCB2YWwsIHR5cGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBjb21waWxlcl9zeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgYywgZ2VuZXJhdG9ycywgZ2VuX2luZGV4LCBlbHQsIHZhbCwgdHlwZSk7CisgICAgfQorfQorCitzdGF0aWMgaW50Citjb21waWxlcl9zeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKHN0cnVjdCBjb21waWxlciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpCit7CiAgICAgLyogZ2VuZXJhdGUgY29kZSBmb3IgdGhlIGl0ZXJhdG9yLCB0aGVuIGVhY2ggb2YgdGhlIGlmcywKICAgICAgICBhbmQgdGhlbiB3cml0ZSB0byB0aGUgZWxlbWVudCAqLwogCkBAIC0zMzk4LDIwICszNzMxLDE2NyBAQAogfQogCiBzdGF0aWMgaW50Citjb21waWxlcl9hc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcihzdHJ1Y3QgY29tcGlsZXIgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKQoreworICAgIF9QeV9JREVOVElGSUVSKFN0b3BBc3luY0l0ZXJhdGlvbik7CisKKyAgICBjb21wcmVoZW5zaW9uX3R5IGdlbjsKKyAgICBiYXNpY2Jsb2NrICphbmNob3IsICpza2lwLCAqaWZfY2xlYW51cCwgKnRyeSwKKyAgICAgICAgICAgICAgICphZnRlcl90cnksICpleGNlcHQsICp0cnlfY2xlYW51cDsKKyAgICBQeV9zc2l6ZV90IGksIG47CisKKyAgICBQeU9iamVjdCAqc3RvcF9haXRlcl9lcnJvciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX1N0b3BBc3luY0l0ZXJhdGlvbik7CisgICAgaWYgKHN0b3BfYWl0ZXJfZXJyb3IgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB0cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgYWZ0ZXJfdHJ5ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIHRyeV9jbGVhbnVwID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGV4Y2VwdCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBza2lwID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGlmX2NsZWFudXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgYW5jaG9yID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworCisgICAgaWYgKHNraXAgPT0gTlVMTCB8fCBpZl9jbGVhbnVwID09IE5VTEwgfHwgYW5jaG9yID09IE5VTEwgfHwKKyAgICAgICAgICAgIHRyeSA9PSBOVUxMIHx8IGFmdGVyX3RyeSA9PSBOVUxMIHx8CisgICAgICAgICAgICBleGNlcHQgPT0gTlVMTCB8fCBhZnRlcl90cnkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBnZW4gPSAoY29tcHJlaGVuc2lvbl90eSlhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgZ2VuX2luZGV4KTsKKworICAgIGlmIChnZW5faW5kZXggPT0gMCkgeworICAgICAgICAvKiBSZWNlaXZlIG91dGVybW9zdCBpdGVyIGFzIGFuIGltcGxpY2l0IGFyZ3VtZW50ICovCisgICAgICAgIGMtPnUtPnVfYXJnY291bnQgPSAxOworICAgICAgICBBRERPUF9JKGMsIExPQURfRkFTVCwgMCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBTdWItaXRlciAtIGNhbGN1bGF0ZSBvbiB0aGUgZmx5ICovCisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGdlbi0+aXRlcik7CisgICAgICAgIEFERE9QKGMsIEdFVF9BSVRFUik7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgfQorCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgdHJ5KTsKKworCisgICAgQURET1BfSlJFTChjLCBTRVRVUF9FWENFUFQsIGV4Y2VwdCk7CisgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBFWENFUFQsIHRyeSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgQURET1AoYywgR0VUX0FORVhUKTsKKyAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgVklTSVQoYywgZXhwciwgZ2VuLT50YXJnZXQpOworICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CisgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBFWENFUFQsIHRyeSk7CisgICAgQURET1BfSlJFTChjLCBKVU1QX0ZPUldBUkQsIGFmdGVyX3RyeSk7CisKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGV4Y2VwdCk7CisgICAgQURET1AoYywgRFVQX1RPUCk7CisgICAgQURET1BfTyhjLCBMT0FEX0dMT0JBTCwgc3RvcF9haXRlcl9lcnJvciwgbmFtZXMpOworICAgIEFERE9QX0koYywgQ09NUEFSRV9PUCwgUHlDbXBfRVhDX01BVENIKTsKKyAgICBBRERPUF9KQUJTKGMsIFBPUF9KVU1QX0lGX0ZBTFNFLCB0cnlfY2xlYW51cCk7CisKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICBBRERPUChjLCBQT1BfRVhDRVBUKTsgLyogZm9yIFNFVFVQX0VYQ0VQVCAqLworICAgIEFERE9QX0pBQlMoYywgSlVNUF9BQlNPTFVURSwgYW5jaG9yKTsKKworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgdHJ5X2NsZWFudXApOworICAgIEFERE9QKGMsIEVORF9GSU5BTExZKTsKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGFmdGVyX3RyeSk7CisKKyAgICBuID0gYXNkbF9zZXFfTEVOKGdlbi0+aWZzKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZSA9IChleHByX3R5KWFzZGxfc2VxX0dFVChnZW4tPmlmcywgaSk7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUpOworICAgICAgICBBRERPUF9KQUJTKGMsIFBPUF9KVU1QX0lGX0ZBTFNFLCBpZl9jbGVhbnVwKTsKKyAgICAgICAgTkVYVF9CTE9DSyhjKTsKKyAgICB9CisKKyAgICBpZiAoKytnZW5faW5kZXggPCBhc2RsX3NlcV9MRU4oZ2VuZXJhdG9ycykpCisgICAgICAgIGlmICghY29tcGlsZXJfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0LCB2YWwsIHR5cGUpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIG9ubHkgYXBwZW5kIGFmdGVyIHRoZSBsYXN0IGZvciBnZW5lcmF0b3IgKi8KKyAgICBpZiAoZ2VuX2luZGV4ID49IGFzZGxfc2VxX0xFTihnZW5lcmF0b3JzKSkgeworICAgICAgICAvKiBjb21wcmVoZW5zaW9uIHNwZWNpZmljIGNvZGUgKi8KKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgQ09NUF9HRU5FWFA6CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgQURET1AoYywgWUlFTERfVkFMVUUpOworICAgICAgICAgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDT01QX0xJU1RDT01QOgorICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIEFERE9QX0koYywgTElTVF9BUFBFTkQsIGdlbl9pbmRleCArIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ09NUF9TRVRDT01QOgorICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIEFERE9QX0koYywgU0VUX0FERCwgZ2VuX2luZGV4ICsgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDT01QX0RJQ1RDT01QOgorICAgICAgICAgICAgLyogV2l0aCAnZFtrXSA9IHYnLCB2IGlzIGV2YWx1YXRlZCBiZWZvcmUgaywgc28gd2UgZG8KKyAgICAgICAgICAgICAgIHRoZSBzYW1lLiAqLworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgdmFsKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBBRERPUF9JKGMsIE1BUF9BREQsIGdlbl9pbmRleCArIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHNraXApOworICAgIH0KKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBpZl9jbGVhbnVwKTsKKyAgICBBRERPUF9KQUJTKGMsIEpVTVBfQUJTT0xVVEUsIHRyeSk7CisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYW5jaG9yKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9jb21wcmVoZW5zaW9uKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlLCBpbnQgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBuYW1lLCBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgZXhwcl90eSBlbHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsKQogewogICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwotICAgIGV4cHJfdHkgb3V0ZXJtb3N0X2l0ZXI7CisgICAgY29tcHJlaGVuc2lvbl90eSBvdXRlcm1vc3Q7CiAgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gTlVMTDsKKyAgICBpbnQgaXNfYXN5bmNfZnVuY3Rpb24gPSBjLT51LT51X3N0ZS0+c3RlX2Nvcm91dGluZTsKKyAgICBpbnQgaXNfYXN5bmNfZ2VuZXJhdG9yID0gMDsKIAotICAgIG91dGVybW9zdF9pdGVyID0gKChjb21wcmVoZW5zaW9uX3R5KQotICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCAwKSktPml0ZXI7CisgICAgb3V0ZXJtb3N0ID0gKGNvbXByZWhlbnNpb25fdHkpIGFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCAwKTsKIAogICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopZSwgZS0+bGluZW5vKSkKKyAgICB7CiAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaXNfYXN5bmNfZ2VuZXJhdG9yID0gYy0+dS0+dV9zdGUtPnN0ZV9jb3JvdXRpbmU7CisKKyAgICBpZiAoaXNfYXN5bmNfZ2VuZXJhdG9yICYmICFpc19hc3luY19mdW5jdGlvbikgeworICAgICAgICBpZiAoZS0+bGluZW5vID4gYy0+dS0+dV9saW5lbm8pIHsKKyAgICAgICAgICAgIGMtPnUtPnVfbGluZW5vID0gZS0+bGluZW5vOworICAgICAgICAgICAgYy0+dS0+dV9saW5lbm9fc2V0ID0gMDsKKyAgICAgICAgfQorICAgICAgICBjb21waWxlcl9lcnJvcihjLCAiYXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb24gb3V0c2lkZSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24iKTsKKyAgICAgICAgZ290byBlcnJvcl9pbl9zY29wZTsKKyAgICB9CiAKICAgICBpZiAodHlwZSAhPSBDT01QX0dFTkVYUCkgewogICAgICAgICBpbnQgb3A7CkBAIC0zNDU0LDkgKzM5MzQsMjQgQEAKICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKLSAgICBWSVNJVChjLCBleHByLCBvdXRlcm1vc3RfaXRlcik7Ci0gICAgQURET1AoYywgR0VUX0lURVIpOworICAgIFZJU0lUKGMsIGV4cHIsIG91dGVybW9zdC0+aXRlcik7CisKKyAgICBpZiAob3V0ZXJtb3N0LT5pc19hc3luYykgeworICAgICAgICBBRERPUChjLCBHRVRfQUlURVIpOworICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIH0gZWxzZSB7CisgICAgICAgIEFERE9QKGMsIEdFVF9JVEVSKTsKKyAgICB9CisKICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT04sIDEpOworCisgICAgaWYgKGlzX2FzeW5jX2dlbmVyYXRvciAmJiB0eXBlICE9IENPTVBfR0VORVhQKSB7CisgICAgICAgIEFERE9QKGMsIEdFVF9BV0FJVEFCTEUpOworICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIH0KKwogICAgIHJldHVybiAxOwogZXJyb3JfaW5fc2NvcGU6CiAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKQEAgLTM1MzEsNyArNDAyNiw2IEBACiBzdGF0aWMgaW50CiBjb21waWxlcl92aXNpdF9rZXl3b3JkKHN0cnVjdCBjb21waWxlciAqYywga2V5d29yZF90eSBrKQogewotICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgay0+YXJnLCBjb25zdHMpOwogICAgIFZJU0lUKGMsIGV4cHIsIGstPnZhbHVlKTsKICAgICByZXR1cm4gMTsKIH0KQEAgLTM1NDksNiArNDA0Myw4IEBACiAgICAgc3dpdGNoIChlLT5raW5kKSB7CiAgICAgY2FzZSBFbGxpcHNpc19raW5kOgogICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIHJldHVybiBQeU9iamVjdF9Jc1RydWUoZS0+di5Db25zdGFudC52YWx1ZSk7CiAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0lzVHJ1ZShlLT52Lk51bS5uKTsKICAgICBjYXNlIFN0cl9raW5kOgpAQCAtMzU5Miw5ICs0MDg4LDkgQEAKICAgICAgICBCTE9DSwogICAgZmluYWxseToKICAgICAgICBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZDoKLSAgICAgICBleGMgPSBjb3B5IG9mIChleGNlcHRpb24sIGluc3RhbmNlLCB0cmFjZWJhY2spCisgICAgICAgICAgIGV4YyA9IGNvcHkgb2YgKGV4Y2VwdGlvbiwgaW5zdGFuY2UsIHRyYWNlYmFjaykKICAgICAgICBlbHNlOgotICAgICAgIGV4YyA9IChOb25lLCBOb25lLCBOb25lKQorICAgICAgICAgICBleGMgPSAoTm9uZSwgTm9uZSwgTm9uZSkKICAgICAgICBpZiBub3QgKGF3YWl0IGV4aXQoKmV4YykpOgogICAgICAgICAgICByYWlzZQogICovCkBAIC0zNzk0LDggKzQyOTAsNiBAQAogICAgIGNhc2UgWWllbGRfa2luZDoKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIG91dHNpZGUgZnVuY3Rpb24iKTsKLSAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTikKLSAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKICAgICAgICAgaWYgKGUtPnYuWWllbGQudmFsdWUpIHsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuWWllbGQudmFsdWUpOwogICAgICAgICB9CkBAIC0zODIwLDExICs0MzE0LDggQEAKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICInYXdhaXQnIG91dHNpZGUgZnVuY3Rpb24iKTsKIAotICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04pCi0gICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoCi0gICAgICAgICAgICAgICAgYywgIidhd2FpdCcgZXhwcmVzc2lvbnMgaW4gY29tcHJlaGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsKLQotICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlICE9IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OKQorICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlICE9IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OICYmCisgICAgICAgICAgICAgICAgYy0+dS0+dV9zY29wZV90eXBlICE9IENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04pCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidhd2FpdCcgb3V0c2lkZSBhc3luYyBmdW5jdGlvbiIpOwogCiAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuQXdhaXQudmFsdWUpOwpAQCAtMzgzNiwxMiArNDMyNywxOSBAQAogICAgICAgICByZXR1cm4gY29tcGlsZXJfY29tcGFyZShjLCBlKTsKICAgICBjYXNlIENhbGxfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2NhbGwoYywgZSk7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGUtPnYuQ29uc3RhbnQudmFsdWUsIGNvbnN0cyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgZS0+di5OdW0ubiwgY29uc3RzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJfa2luZDoKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBlLT52LlN0ci5zLCBjb25zdHMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfam9pbmVkX3N0cihjLCBlKTsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9mb3JtYXR0ZWRfdmFsdWUoYywgZSk7CiAgICAgY2FzZSBCeXRlc19raW5kOgogICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGUtPnYuQnl0ZXMucywgY29uc3RzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zOTc2LDYgKzQ0NzQsMTQ0IEBACiB9CiAKIHN0YXRpYyBpbnQKK2NoZWNrX2Fubl9leHByKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQoreworICAgIFZJU0lUKGMsIGV4cHIsIGUpOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitjaGVja19hbm5vdGF0aW9uKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQoreworICAgIC8qIEFubm90YXRpb25zIGFyZSBvbmx5IGV2YWx1YXRlZCBpbiBhIG1vZHVsZSBvciBjbGFzcy4gKi8KKyAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX01PRFVMRSB8fAorICAgICAgICBjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ0xBU1MpIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrX2Fubl9leHByKGMsIHMtPnYuQW5uQXNzaWduLmFubm90YXRpb24pOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY2hlY2tfYW5uX3NsaWNlKHN0cnVjdCBjb21waWxlciAqYywgc2xpY2VfdHkgc2wpCit7CisgICAgc3dpdGNoKHNsLT5raW5kKSB7CisgICAgY2FzZSBJbmRleF9raW5kOgorICAgICAgICByZXR1cm4gY2hlY2tfYW5uX2V4cHIoYywgc2wtPnYuSW5kZXgudmFsdWUpOworICAgIGNhc2UgU2xpY2Vfa2luZDoKKyAgICAgICAgaWYgKHNsLT52LlNsaWNlLmxvd2VyICYmICFjaGVja19hbm5fZXhwcihjLCBzbC0+di5TbGljZS5sb3dlcikpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChzbC0+di5TbGljZS51cHBlciAmJiAhY2hlY2tfYW5uX2V4cHIoYywgc2wtPnYuU2xpY2UudXBwZXIpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2wtPnYuU2xpY2Uuc3RlcCAmJiAhY2hlY2tfYW5uX2V4cHIoYywgc2wtPnYuU2xpY2Uuc3RlcCkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHNsaWNlIGtpbmQiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitjaGVja19hbm5fc3Vic2NyKHN0cnVjdCBjb21waWxlciAqYywgc2xpY2VfdHkgc2wpCit7CisgICAgLyogV2UgY2hlY2sgdGhhdCBldmVyeXRoaW5nIGluIGEgc3Vic2NyaXB0IGlzIGRlZmluZWQgYXQgcnVudGltZS4gKi8KKyAgICBQeV9zc2l6ZV90IGksIG47CisKKyAgICBzd2l0Y2ggKHNsLT5raW5kKSB7CisgICAgY2FzZSBJbmRleF9raW5kOgorICAgIGNhc2UgU2xpY2Vfa2luZDoKKyAgICAgICAgaWYgKCFjaGVja19hbm5fc2xpY2UoYywgc2wpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dFNsaWNlX2tpbmQ6CisgICAgICAgIG4gPSBhc2RsX3NlcV9MRU4oc2wtPnYuRXh0U2xpY2UuZGltcyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIHNsaWNlX3R5IHN1YnNsID0gKHNsaWNlX3R5KWFzZGxfc2VxX0dFVChzbC0+di5FeHRTbGljZS5kaW1zLCBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAoc3Vic2wtPmtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgSW5kZXhfa2luZDoKKyAgICAgICAgICAgIGNhc2UgU2xpY2Vfa2luZDoKKyAgICAgICAgICAgICAgICBpZiAoIWNoZWNrX2Fubl9zbGljZShjLCBzdWJzbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFeHRTbGljZV9raW5kOgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHRlbmRlZCBzbGljZSBpbnZhbGlkIGluIG5lc3RlZCBzbGljZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHN1YnNjcmlwdCBraW5kICVkIiwgc2wtPmtpbmQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX2FubmFzc2lnbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKK3sKKyAgICBleHByX3R5IHRhcmcgPSBzLT52LkFubkFzc2lnbi50YXJnZXQ7CisgICAgUHlPYmplY3QqIG1hbmdsZWQ7CisKKyAgICBhc3NlcnQocy0+a2luZCA9PSBBbm5Bc3NpZ25fa2luZCk7CisKKyAgICAvKiBXZSBwZXJmb3JtIHRoZSBhY3R1YWwgYXNzaWdubWVudCBmaXJzdC4gKi8KKyAgICBpZiAocy0+di5Bbm5Bc3NpZ24udmFsdWUpIHsKKyAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5Bbm5Bc3NpZ24udmFsdWUpOworICAgICAgICBWSVNJVChjLCBleHByLCB0YXJnKTsKKyAgICB9CisgICAgc3dpdGNoICh0YXJnLT5raW5kKSB7CisgICAgY2FzZSBOYW1lX2tpbmQ6CisgICAgICAgIC8qIElmIHdlIGhhdmUgYSBzaW1wbGUgbmFtZSBpbiBhIG1vZHVsZSBvciBjbGFzcywgc3RvcmUgYW5ub3RhdGlvbi4gKi8KKyAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnNpbXBsZSAmJgorICAgICAgICAgICAgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9NT0RVTEUgfHwKKyAgICAgICAgICAgICBjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ0xBU1MpKSB7CisgICAgICAgICAgICBtYW5nbGVkID0gX1B5X01hbmdsZShjLT51LT51X3ByaXZhdGUsIHRhcmctPnYuTmFtZS5pZCk7CisgICAgICAgICAgICBpZiAoIW1hbmdsZWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuQW5uQXNzaWduLmFubm90YXRpb24pOworICAgICAgICAgICAgLyogQURET1BfTiBkZWNyZWZzIGl0cyBhcmd1bWVudCAqLworICAgICAgICAgICAgQURET1BfTihjLCBTVE9SRV9BTk5PVEFUSU9OLCBtYW5nbGVkLCBuYW1lcyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKKyAgICAgICAgaWYgKCFzLT52LkFubkFzc2lnbi52YWx1ZSAmJgorICAgICAgICAgICAgIWNoZWNrX2Fubl9leHByKGMsIHRhcmctPnYuQXR0cmlidXRlLnZhbHVlKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKKyAgICAgICAgaWYgKCFzLT52LkFubkFzc2lnbi52YWx1ZSAmJgorICAgICAgICAgICAgKCFjaGVja19hbm5fZXhwcihjLCB0YXJnLT52LlN1YnNjcmlwdC52YWx1ZSkgfHwKKyAgICAgICAgICAgICAhY2hlY2tfYW5uX3N1YnNjcihjLCB0YXJnLT52LlN1YnNjcmlwdC5zbGljZSkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbm9kZSB0eXBlICglZCkgZm9yIGFubm90YXRlZCBhc3NpZ25tZW50IiwKKyAgICAgICAgICAgICAgICAgICAgIHRhcmctPmtpbmQpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIC8qIEFubm90YXRpb24gaXMgZXZhbHVhdGVkIGxhc3QuICovCisgICAgaWYgKCFzLT52LkFubkFzc2lnbi5zaW1wbGUgJiYgIWNoZWNrX2Fubm90YXRpb24oYywgcykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9wdXNoX2ZibG9jayhzdHJ1Y3QgY29tcGlsZXIgKmMsIGVudW0gZmJsb2NrdHlwZSB0LCBiYXNpY2Jsb2NrICpiKQogewogICAgIHN0cnVjdCBmYmxvY2tpbmZvICpmOwpAQCAtNDI3Myw3ICs0OTA5LDcgQEAKICAgICBhLT5hX2xub3RhYiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgREVGQVVMVF9MTk9UQUJfU0laRSk7CiAgICAgaWYgKCFhLT5hX2xub3RhYikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKChzaXplX3QpbmJsb2NrcyA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKGJhc2ljYmxvY2sgKikpIHsKKyAgICBpZiAoKHNpemVfdCluYmxvY2tzID4gU0laRV9NQVggLyBzaXplb2YoYmFzaWNibG9jayAqKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00Mjk1LDE4ICs0OTMxLDYgQEAKICAgICAgICAgUHlPYmplY3RfRnJlZShhLT5hX3Bvc3RvcmRlcik7CiB9CiAKLS8qIFJldHVybiB0aGUgc2l6ZSBvZiBhIGJhc2ljIGJsb2NrIGluIGJ5dGVzLiAqLwotCi1zdGF0aWMgaW50Ci1pbnN0cnNpemUoc3RydWN0IGluc3RyICppbnN0cikKLXsKLSAgICBpZiAoIWluc3RyLT5pX2hhc2FyZykKLSAgICAgICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgLyogMSBieXRlIGZvciB0aGUgb3Bjb2RlKi8KLSAgICBpZiAoaW5zdHItPmlfb3BhcmcgPiAweGZmZmYpCi0gICAgICAgIHJldHVybiA2OyAgICAgICAgICAgICAgIC8qIDEgKG9wY29kZSkgKyAxIChFWFRFTkRFRF9BUkcgb3Bjb2RlKSArIDIgKG9wYXJnKSArIDIob3BhcmcgZXh0ZW5kZWQpICovCi0gICAgcmV0dXJuIDM7ICAgICAgICAgICAgICAgICAgIC8qIDEgKG9wY29kZSkgKyAyIChvcGFyZykgKi8KLX0KLQogc3RhdGljIGludAogYmxvY2tzaXplKGJhc2ljYmxvY2sgKmIpCiB7CkBAIC00MzE0LDcgKzQ5MzgsNyBAQAogICAgIGludCBzaXplID0gMDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBiLT5iX2l1c2VkOyBpKyspCi0gICAgICAgIHNpemUgKz0gaW5zdHJzaXplKCZiLT5iX2luc3RyW2ldKTsKKyAgICAgICAgc2l6ZSArPSBpbnN0cnNpemUoYi0+Yl9pbnN0cltpXS5pX29wYXJnKTsKICAgICByZXR1cm4gc2l6ZTsKIH0KIApAQCAtNDMyOSwxMSArNDk1MywxMCBAQAogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIHVuc2lnbmVkIGNoYXIgKmxub3RhYjsKIAotICAgIGRfYnl0ZWNvZGUgPSBhLT5hX29mZnNldCAtIGEtPmFfbGluZW5vX29mZjsKKyAgICBkX2J5dGVjb2RlID0gKGEtPmFfb2Zmc2V0IC0gYS0+YV9saW5lbm9fb2ZmKSAqIHNpemVvZihfUHlfQ09ERVVOSVQpOwogICAgIGRfbGluZW5vID0gaS0+aV9saW5lbm8gLSBhLT5hX2xpbmVubzsKIAogICAgIGFzc2VydChkX2J5dGVjb2RlID49IDApOwotICAgIGFzc2VydChkX2xpbmVubyA+PSAwKTsKIAogICAgIGlmKGRfYnl0ZWNvZGUgPT0gMCAmJiBkX2xpbmVubyA9PSAwKQogICAgICAgICByZXR1cm4gMTsKQEAgLTQzNjMsOSArNDk4NiwyMSBAQAogICAgICAgICBkX2J5dGVjb2RlIC09IG5jb2RlcyAqIDI1NTsKICAgICAgICAgYS0+YV9sbm90YWJfb2ZmICs9IG5jb2RlcyAqIDI7CiAgICAgfQotICAgIGFzc2VydChkX2J5dGVjb2RlIDw9IDI1NSk7Ci0gICAgaWYgKGRfbGluZW5vID4gMjU1KSB7Ci0gICAgICAgIGludCBqLCBuYnl0ZXMsIG5jb2RlcyA9IGRfbGluZW5vIC8gMjU1OworICAgIGFzc2VydCgwIDw9IGRfYnl0ZWNvZGUgJiYgZF9ieXRlY29kZSA8PSAyNTUpOworCisgICAgaWYgKGRfbGluZW5vIDwgLTEyOCB8fCAxMjcgPCBkX2xpbmVubykgeworICAgICAgICBpbnQgaiwgbmJ5dGVzLCBuY29kZXMsIGs7CisgICAgICAgIGlmIChkX2xpbmVubyA8IDApIHsKKyAgICAgICAgICAgIGsgPSAtMTI4OworICAgICAgICAgICAgLyogdXNlIGRpdmlzaW9uIG9uIHBvc2l0aXZlIG51bWJlcnMgKi8KKyAgICAgICAgICAgIG5jb2RlcyA9ICgtZF9saW5lbm8pIC8gMTI4OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgayA9IDEyNzsKKyAgICAgICAgICAgIG5jb2RlcyA9IGRfbGluZW5vIC8gMTI3OworICAgICAgICB9CisgICAgICAgIGRfbGluZW5vIC09IG5jb2RlcyAqIGs7CisgICAgICAgIGFzc2VydChuY29kZXMgPj0gMSk7CiAgICAgICAgIG5ieXRlcyA9IGEtPmFfbG5vdGFiX29mZiArIDIgKiBuY29kZXM7CiAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoYS0+YV9sbm90YWIpOwogICAgICAgICBpZiAobmJ5dGVzID49IGxlbikgewpAQCAtNDM4MywxNSArNTAxOCwxNSBAQAogICAgICAgICBsbm90YWIgPSAodW5zaWduZWQgY2hhciAqKQogICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGEtPmFfbG5vdGFiKSArIGEtPmFfbG5vdGFiX29mZjsKICAgICAgICAgKmxub3RhYisrID0gZF9ieXRlY29kZTsKLSAgICAgICAgKmxub3RhYisrID0gMjU1OworICAgICAgICAqbG5vdGFiKysgPSBrOwogICAgICAgICBkX2J5dGVjb2RlID0gMDsKICAgICAgICAgZm9yIChqID0gMTsgaiA8IG5jb2RlczsgaisrKSB7CiAgICAgICAgICAgICAqbG5vdGFiKysgPSAwOwotICAgICAgICAgICAgKmxub3RhYisrID0gMjU1OworICAgICAgICAgICAgKmxub3RhYisrID0gazsKICAgICAgICAgfQotICAgICAgICBkX2xpbmVubyAtPSBuY29kZXMgKiAyNTU7CiAgICAgICAgIGEtPmFfbG5vdGFiX29mZiArPSBuY29kZXMgKiAyOwogICAgIH0KKyAgICBhc3NlcnQoLTEyOCA8PSBkX2xpbmVubyAmJiBkX2xpbmVubyA8PSAxMjcpOwogCiAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShhLT5hX2xub3RhYik7CiAgICAgaWYgKGEtPmFfbG5vdGFiX29mZiArIDIgPj0gbGVuKSB7CkBAIC00NDIzLDM4ICs1MDU4LDIzIEBACiBzdGF0aWMgaW50CiBhc3NlbWJsZV9lbWl0KHN0cnVjdCBhc3NlbWJsZXIgKmEsIHN0cnVjdCBpbnN0ciAqaSkKIHsKLSAgICBpbnQgc2l6ZSwgYXJnID0gMCwgZXh0ID0gMDsKKyAgICBpbnQgc2l6ZSwgYXJnID0gMDsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoYS0+YV9ieXRlY29kZSk7Ci0gICAgY2hhciAqY29kZTsKKyAgICBfUHlfQ09ERVVOSVQgKmNvZGU7CiAKLSAgICBzaXplID0gaW5zdHJzaXplKGkpOwotICAgIGlmIChpLT5pX2hhc2FyZykgewotICAgICAgICBhcmcgPSBpLT5pX29wYXJnOwotICAgICAgICBleHQgPSBhcmcgPj4gMTY7Ci0gICAgfQorICAgIGFyZyA9IGktPmlfb3Bhcmc7CisgICAgc2l6ZSA9IGluc3Ryc2l6ZShhcmcpOwogICAgIGlmIChpLT5pX2xpbmVubyAmJiAhYXNzZW1ibGVfbG5vdGFiKGEsIGkpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoYS0+YV9vZmZzZXQgKyBzaXplID49IGxlbikgeworICAgIGlmIChhLT5hX29mZnNldCArIHNpemUgPj0gbGVuIC8gKGludClzaXplb2YoX1B5X0NPREVVTklUKSkgewogICAgICAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyAyKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmEtPmFfYnl0ZWNvZGUsIGxlbiAqIDIpIDwgMCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBjb2RlID0gUHlCeXRlc19BU19TVFJJTkcoYS0+YV9ieXRlY29kZSkgKyBhLT5hX29mZnNldDsKKyAgICBjb2RlID0gKF9QeV9DT0RFVU5JVCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGEtPmFfYnl0ZWNvZGUpICsgYS0+YV9vZmZzZXQ7CiAgICAgYS0+YV9vZmZzZXQgKz0gc2l6ZTsKLSAgICBpZiAoc2l6ZSA9PSA2KSB7Ci0gICAgICAgIGFzc2VydChpLT5pX2hhc2FyZyk7Ci0gICAgICAgICpjb2RlKysgPSAoY2hhcilFWFRFTkRFRF9BUkc7Ci0gICAgICAgICpjb2RlKysgPSBleHQgJiAweGZmOwotICAgICAgICAqY29kZSsrID0gZXh0ID4+IDg7Ci0gICAgICAgIGFyZyAmPSAweGZmZmY7Ci0gICAgfQotICAgICpjb2RlKysgPSBpLT5pX29wY29kZTsKLSAgICBpZiAoaS0+aV9oYXNhcmcpIHsKLSAgICAgICAgYXNzZXJ0KHNpemUgPT0gMyB8fCBzaXplID09IDYpOwotICAgICAgICAqY29kZSsrID0gYXJnICYgMHhmZjsKLSAgICAgICAgKmNvZGUrKyA9IGFyZyA+PiA4OwotICAgIH0KKyAgICB3cml0ZV9vcF9hcmcoY29kZSwgaS0+aV9vcGNvZGUsIGFyZywgc2l6ZSk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTQ0NjIsNyArNTA4Miw3IEBACiBhc3NlbWJsZV9qdW1wX29mZnNldHMoc3RydWN0IGFzc2VtYmxlciAqYSwgc3RydWN0IGNvbXBpbGVyICpjKQogewogICAgIGJhc2ljYmxvY2sgKmI7Ci0gICAgaW50IGJzaXplLCB0b3RzaXplLCBleHRlbmRlZF9hcmdfY291bnQgPSAwLCBsYXN0X2V4dGVuZGVkX2FyZ19jb3VudDsKKyAgICBpbnQgYnNpemUsIHRvdHNpemUsIGV4dGVuZGVkX2FyZ19yZWNvbXBpbGU7CiAgICAgaW50IGk7CiAKICAgICAvKiBDb21wdXRlIHRoZSBzaXplIG9mIGVhY2ggYmxvY2sgYW5kIGZpeHVwIGp1bXAgYXJncy4KQEAgLTQ0NzUsMjcgKzUwOTUsMjcgQEAKICAgICAgICAgICAgIGItPmJfb2Zmc2V0ID0gdG90c2l6ZTsKICAgICAgICAgICAgIHRvdHNpemUgKz0gYnNpemU7CiAgICAgICAgIH0KLSAgICAgICAgbGFzdF9leHRlbmRlZF9hcmdfY291bnQgPSBleHRlbmRlZF9hcmdfY291bnQ7Ci0gICAgICAgIGV4dGVuZGVkX2FyZ19jb3VudCA9IDA7CisgICAgICAgIGV4dGVuZGVkX2FyZ19yZWNvbXBpbGUgPSAwOwogICAgICAgICBmb3IgKGIgPSBjLT51LT51X2Jsb2NrczsgYiAhPSBOVUxMOyBiID0gYi0+Yl9saXN0KSB7CiAgICAgICAgICAgICBic2l6ZSA9IGItPmJfb2Zmc2V0OwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGItPmJfaXVzZWQ7IGkrKykgewogICAgICAgICAgICAgICAgIHN0cnVjdCBpbnN0ciAqaW5zdHIgPSAmYi0+Yl9pbnN0cltpXTsKKyAgICAgICAgICAgICAgICBpbnQgaXNpemUgPSBpbnN0cnNpemUoaW5zdHItPmlfb3BhcmcpOwogICAgICAgICAgICAgICAgIC8qIFJlbGF0aXZlIGp1bXBzIGFyZSBjb21wdXRlZCByZWxhdGl2ZSB0bwogICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGFmdGVyIGZldGNoaW5nCiAgICAgICAgICAgICAgICAgICAgdGhlIGp1bXAgaW5zdHJ1Y3Rpb24uCiAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBic2l6ZSArPSBpbnN0cnNpemUoaW5zdHIpOwotICAgICAgICAgICAgICAgIGlmIChpbnN0ci0+aV9qYWJzKQorICAgICAgICAgICAgICAgIGJzaXplICs9IGlzaXplOworICAgICAgICAgICAgICAgIGlmIChpbnN0ci0+aV9qYWJzIHx8IGluc3RyLT5pX2pyZWwpIHsKICAgICAgICAgICAgICAgICAgICAgaW5zdHItPmlfb3BhcmcgPSBpbnN0ci0+aV90YXJnZXQtPmJfb2Zmc2V0OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RyLT5pX2pyZWwpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGRlbHRhID0gaW5zdHItPmlfdGFyZ2V0LT5iX29mZnNldCAtIGJzaXplOwotICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyA9IGRlbHRhOworICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdHItPmlfanJlbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHItPmlfb3BhcmcgLT0gYnNpemU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW5zdHItPmlfb3BhcmcgKj0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0cnNpemUoaW5zdHItPmlfb3BhcmcpICE9IGlzaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmRlZF9hcmdfcmVjb21waWxlID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChpbnN0ci0+aV9vcGFyZyA+IDB4ZmZmZikKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRfYXJnX2NvdW50Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNDUwNSw3ICs1MTI1LDcgQEAKIAogICAgICAgICBUaGUgaXNzdWUgaXMgdGhhdCBpbiB0aGUgZmlyc3QgbG9vcCBibG9ja3NpemUoKSBpcyBjYWxsZWQKICAgICAgICAgd2hpY2ggY2FsbHMgaW5zdHJzaXplKCkgd2hpY2ggcmVxdWlyZXMgaV9vcGFyZyBiZSBzZXQKLSAgICAgICAgYXBwcm9wcmlhdGVseS4gICAgICAgICAgVGhlcmUgaXMgYSBib290c3RyYXAgcHJvYmxlbSBiZWNhdXNlCisgICAgICAgIGFwcHJvcHJpYXRlbHkuIFRoZXJlIGlzIGEgYm9vdHN0cmFwIHByb2JsZW0gYmVjYXVzZQogICAgICAgICBpX29wYXJnIGlzIGNhbGN1bGF0ZWQgaW4gdGhlIHNlY29uZCBsb29wIGFib3ZlLgogCiAgICAgICAgIFNvIHdlIGxvb3AgdW50aWwgd2Ugc3RvcCBzZWVpbmcgbmV3IEVYVEVOREVEX0FSR3MuCkBAIC00NTEzLDcgKzUxMzMsNyBAQAogICAgICAgICBvbmVzIGluIGp1bXAgaW5zdHJ1Y3Rpb25zLiAgU28gdGhpcyBzaG91bGQgY29udmVyZ2UKICAgICAgICAgZmFpcmx5IHF1aWNrbHkuCiAgICAgKi8KLSAgICB9IHdoaWxlIChsYXN0X2V4dGVuZGVkX2FyZ19jb3VudCAhPSBleHRlbmRlZF9hcmdfY291bnQpOworICAgIH0gd2hpbGUgKGV4dGVuZGVkX2FyZ19yZWNvbXBpbGUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDU0OSw4ICs1MTY5LDEyIEBACiAgICAgICAgIGZsYWdzIHw9IENPX05FV0xPQ0FMUyB8IENPX09QVElNSVpFRDsKICAgICAgICAgaWYgKHN0ZS0+c3RlX25lc3RlZCkKICAgICAgICAgICAgIGZsYWdzIHw9IENPX05FU1RFRDsKLSAgICAgICAgaWYgKHN0ZS0+c3RlX2dlbmVyYXRvcikKKyAgICAgICAgaWYgKHN0ZS0+c3RlX2dlbmVyYXRvciAmJiAhc3RlLT5zdGVfY29yb3V0aW5lKQogICAgICAgICAgICAgZmxhZ3MgfD0gQ09fR0VORVJBVE9SOworICAgICAgICBpZiAoIXN0ZS0+c3RlX2dlbmVyYXRvciAmJiBzdGUtPnN0ZV9jb3JvdXRpbmUpCisgICAgICAgICAgICBmbGFncyB8PSBDT19DT1JPVVRJTkU7CisgICAgICAgIGlmIChzdGUtPnN0ZV9nZW5lcmF0b3IgJiYgc3RlLT5zdGVfY29yb3V0aW5lKQorICAgICAgICAgICAgZmxhZ3MgfD0gQ09fQVNZTkNfR0VORVJBVE9SOwogICAgICAgICBpZiAoc3RlLT5zdGVfdmFyYXJncykKICAgICAgICAgICAgIGZsYWdzIHw9IENPX1ZBUkFSR1M7CiAgICAgICAgIGlmIChzdGUtPnN0ZV92YXJrZXl3b3JkcykKQEAgLTQ2NTksOSArNTI4Myw5IEBACiAgICAgY2hhciBhcmdbMTI4XTsKIAogICAgICphcmcgPSAnXDAnOwotICAgIGlmIChpLT5pX2hhc2FyZykKKyAgICBpZiAoSEFTX0FSRyhpLT5pX29wY29kZSkpIHsKICAgICAgICAgc3ByaW50ZihhcmcsICJhcmc6ICVkICIsIGktPmlfb3BhcmcpOwotCisgICAgfQogICAgIGZwcmludGYoc3RkZXJyLCAibGluZTogJWQsIG9wY29kZTogJWQgJXMlcyVzXG4iLAogICAgICAgICAgICAgICAgICAgICBpLT5pX2xpbmVubywgaS0+aV9vcGNvZGUsIGFyZywgamFicywganJlbCk7CiB9CkBAIC00NzExLDcgKzUzMzUsNyBAQAogCiAgICAgLyogU2V0IGZpcnN0bGluZW5vIGlmIGl0IHdhc24ndCBleHBsaWNpdGx5IHNldC4gKi8KICAgICBpZiAoIWMtPnUtPnVfZmlyc3RsaW5lbm8pIHsKLSAgICAgICAgaWYgKGVudHJ5YmxvY2sgJiYgZW50cnlibG9jay0+Yl9pbnN0cikKKyAgICAgICAgaWYgKGVudHJ5YmxvY2sgJiYgZW50cnlibG9jay0+Yl9pbnN0ciAmJiBlbnRyeWJsb2NrLT5iX2luc3RyLT5pX2xpbmVubykKICAgICAgICAgICAgIGMtPnUtPnVfZmlyc3RsaW5lbm8gPSBlbnRyeWJsb2NrLT5iX2luc3RyLT5pX2xpbmVubzsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYy0+dS0+dV9maXJzdGxpbmVubyA9IDE7CkBAIC00NzMzLDcgKzUzNTcsNyBAQAogCiAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYS5hX2xub3RhYiwgYS5hX2xub3RhYl9vZmYpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZhLmFfYnl0ZWNvZGUsIGEuYV9vZmZzZXQpIDwgMCkKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZhLmFfYnl0ZWNvZGUsIGEuYV9vZmZzZXQgKiBzaXplb2YoX1B5X0NPREVVTklUKSkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgY28gPSBtYWtlY29kZShjLCAmYSk7CkBAIC00NzQ5LDQgKzUzNzMsMyBAQAogewogICAgIHJldHVybiBQeUFTVF9Db21waWxlRXgobW9kLCBmaWxlbmFtZSwgZmxhZ3MsIC0xLCBhcmVuYSk7CiB9Ci0KZGlmZiAtLWdpdCBhL1B5dGhvbi9jb25kdmFyLmggYi9QeXRob24vY29uZHZhci5oCmluZGV4IGNlZDkxMGYuLjlhNzFiMTcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb25kdmFyLmgKKysrIGIvUHl0aG9uL2NvbmR2YXIuaApAQCAtODksNyArODksNyBAQAogCiAvKiByZXR1cm4gMCBmb3Igc3VjY2VzcywgMSBvbiB0aW1lb3V0LCAtMSBvbiBlcnJvciAqLwogUHlfTE9DQUxfSU5MSU5FKGludCkKLVB5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmNvbmQsIFB5TVVURVhfVCAqbXV0LCBQWV9MT05HX0xPTkcgdXMpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjb25kLCBQeU1VVEVYX1QgKm11dCwgbG9uZyBsb25nIHVzKQogewogICAgIGludCByOwogICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKQEAgLTI3MCw3ICsyNzAsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIFBZX0xPTkdfTE9ORyB1cykKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBsb25nIGxvbmcgdXMpCiB7CiAgICAgcmV0dXJuIF9QeUNPTkRfV0FJVF9NUyhjdiwgY3MsIChEV09SRCkodXMvMTAwMCkpOwogfQpAQCAtMzYzLDcgKzM2Myw3IEBACiAgKiAyIHRvIGluZGljYXRlIHRoYXQgd2UgZG9uJ3Qga25vdy4KICAqLwogUHlfTE9DQUxfSU5MSU5FKGludCkKLVB5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBQWV9MT05HX0xPTkcgdXMpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgbG9uZyBsb25nIHVzKQogewogICAgIHJldHVybiBTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JXKGN2LCBjcywgKERXT1JEKSh1cy8xMDAwKSwgMCkgPyAyIDogLTE7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vZHRvYS5jIGIvUHl0aG9uL2R0b2EuYwppbmRleCAzZGE1NDZlLi5lZmNhZGMzIDEwMDY0NAotLS0gYS9QeXRob24vZHRvYS5jCisrKyBiL1B5dGhvbi9kdG9hLmMKQEAgLTE1MSwxOCArMTUxLDkgQEAKICNlbmRpZgogCiAKLSNpZiBkZWZpbmVkKEhBVkVfVUlOVDMyX1QpICYmIGRlZmluZWQoSEFWRV9JTlQzMl9UKQotdHlwZWRlZiBQWV9VSU5UMzJfVCBVTG9uZzsKLXR5cGVkZWYgUFlfSU5UMzJfVCBMb25nOwotI2Vsc2UKLSNlcnJvciAiRmFpbGVkIHRvIGZpbmQgYW4gZXhhY3Qtd2lkdGggMzItYml0IGludGVnZXIgdHlwZSIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChIQVZFX1VJTlQ2NF9UKQotI2RlZmluZSBVTExvbmcgUFlfVUlOVDY0X1QKLSNlbHNlCi0jdW5kZWYgVUxMb25nCi0jZW5kaWYKK3R5cGVkZWYgdWludDMyX3QgVUxvbmc7Cit0eXBlZGVmIGludDMyX3QgTG9uZzsKK3R5cGVkZWYgdWludDY0X3QgVUxMb25nOwogCiAjdW5kZWYgREVCVUcKICNpZmRlZiBQeV9ERUJVRwpAQCAtNDU3LDEzICs0NDgsOCBAQAogbXVsdGFkZChCaWdpbnQgKmIsIGludCBtLCBpbnQgYSkgICAgICAgLyogbXVsdGlwbHkgYnkgbSBhbmQgYWRkIGEgKi8KIHsKICAgICBpbnQgaSwgd2RzOwotI2lmZGVmIFVMTG9uZwogICAgIFVMb25nICp4OwogICAgIFVMTG9uZyBjYXJyeSwgeTsKLSNlbHNlCi0gICAgVUxvbmcgY2FycnksICp4LCB5OwotICAgIFVMb25nIHhpLCB6OwotI2VuZGlmCiAgICAgQmlnaW50ICpiMTsKIAogICAgIHdkcyA9IGItPndkczsKQEAgLTQ3MSwxNyArNDU3LDkgQEAKICAgICBpID0gMDsKICAgICBjYXJyeSA9IGE7CiAgICAgZG8gewotI2lmZGVmIFVMTG9uZwogICAgICAgICB5ID0gKnggKiAoVUxMb25nKW0gKyBjYXJyeTsKICAgICAgICAgY2FycnkgPSB5ID4+IDMyOwogICAgICAgICAqeCsrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwotI2Vsc2UKLSAgICAgICAgeGkgPSAqeDsKLSAgICAgICAgeSA9ICh4aSAmIDB4ZmZmZikgKiBtICsgY2Fycnk7Ci0gICAgICAgIHogPSAoeGkgPj4gMTYpICogbSArICh5ID4+IDE2KTsKLSAgICAgICAgY2FycnkgPSB6ID4+IDE2OwotICAgICAgICAqeCsrID0gKHogPDwgMTYpICsgKHkgJiAweGZmZmYpOwotI2VuZGlmCiAgICAgfQogICAgIHdoaWxlKCsraSA8IHdkcyk7CiAgICAgaWYgKGNhcnJ5KSB7CkBAIC02NDIsMTIgKzYyMCw3IEBACiAgICAgaW50IGssIHdhLCB3Yiwgd2M7CiAgICAgVUxvbmcgKngsICp4YSwgKnhhZSwgKnhiLCAqeGJlLCAqeGMsICp4YzA7CiAgICAgVUxvbmcgeTsKLSNpZmRlZiBVTExvbmcKICAgICBVTExvbmcgY2FycnksIHo7Ci0jZWxzZQotICAgIFVMb25nIGNhcnJ5LCB6OwotICAgIFVMb25nIHoyOwotI2VuZGlmCiAKICAgICBpZiAoKCFhLT54WzBdICYmIGEtPndkcyA9PSAxKSB8fCAoIWItPnhbMF0gJiYgYi0+d2RzID09IDEpKSB7CiAgICAgICAgIGMgPSBCYWxsb2MoMCk7CkBAIC02NzksNyArNjUyLDYgQEAKICAgICB4YiA9IGItPng7CiAgICAgeGJlID0geGIgKyB3YjsKICAgICB4YzAgPSBjLT54OwotI2lmZGVmIFVMTG9uZwogICAgIGZvcig7IHhiIDwgeGJlOyB4YzArKykgewogICAgICAgICBpZiAoKHkgPSAqeGIrKykpIHsKICAgICAgICAgICAgIHggPSB4YTsKQEAgLTY5NCwzOSArNjY2LDYgQEAKICAgICAgICAgICAgICp4YyA9IChVTG9uZyljYXJyeTsKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gICAgZm9yKDsgeGIgPCB4YmU7IHhiKyssIHhjMCsrKSB7Ci0gICAgICAgIGlmICh5ID0gKnhiICYgMHhmZmZmKSB7Ci0gICAgICAgICAgICB4ID0geGE7Ci0gICAgICAgICAgICB4YyA9IHhjMDsKLSAgICAgICAgICAgIGNhcnJ5ID0gMDsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICB6ID0gKCp4ICYgMHhmZmZmKSAqIHkgKyAoKnhjICYgMHhmZmZmKSArIGNhcnJ5OwotICAgICAgICAgICAgICAgIGNhcnJ5ID0geiA+PiAxNjsKLSAgICAgICAgICAgICAgICB6MiA9ICgqeCsrID4+IDE2KSAqIHkgKyAoKnhjID4+IDE2KSArIGNhcnJ5OwotICAgICAgICAgICAgICAgIGNhcnJ5ID0gejIgPj4gMTY7Ci0gICAgICAgICAgICAgICAgU3RvcmVpbmMoeGMsIHoyLCB6KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlKHggPCB4YWUpOwotICAgICAgICAgICAgKnhjID0gY2Fycnk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHkgPSAqeGIgPj4gMTYpIHsKLSAgICAgICAgICAgIHggPSB4YTsKLSAgICAgICAgICAgIHhjID0geGMwOwotICAgICAgICAgICAgY2FycnkgPSAwOwotICAgICAgICAgICAgejIgPSAqeGM7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgeiA9ICgqeCAmIDB4ZmZmZikgKiB5ICsgKCp4YyA+PiAxNikgKyBjYXJyeTsKLSAgICAgICAgICAgICAgICBjYXJyeSA9IHogPj4gMTY7Ci0gICAgICAgICAgICAgICAgU3RvcmVpbmMoeGMsIHosIHoyKTsKLSAgICAgICAgICAgICAgICB6MiA9ICgqeCsrID4+IDE2KSAqIHkgKyAoKnhjICYgMHhmZmZmKSArIGNhcnJ5OwotICAgICAgICAgICAgICAgIGNhcnJ5ID0gejIgPj4gMTY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZSh4IDwgeGFlKTsKLSAgICAgICAgICAgICp4YyA9IHoyOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCiAgICAgZm9yKHhjMCA9IGMtPngsIHhjID0geGMwICsgd2M7IHdjID4gMCAmJiAhKi0teGM7IC0td2MpIDsKICAgICBjLT53ZHMgPSB3YzsKICAgICByZXR1cm4gYzsKQEAgLTc0Nyw3ICs2ODYsNyBAQAogewogICAgIEJpZ2ludCAqYjEsICpwNSwgKnA1MTsKICAgICBpbnQgaTsKLSAgICBzdGF0aWMgaW50IHAwNVszXSA9IHsgNSwgMjUsIDEyNSB9OworICAgIHN0YXRpYyBjb25zdCBpbnQgcDA1WzNdID0geyA1LCAyNSwgMTI1IH07CiAKICAgICBpZiAoKGkgPSBrICYgMykpIHsKICAgICAgICAgYiA9IG11bHRhZGQoYiwgcDA1W2ktMV0sIDApOwpAQCAtODAzLDcgKzc0Miw3IEBACiB7CiAgICAgQmlnaW50ICpiMSwgKnA1LCAqcDUxOwogICAgIGludCBpOwotICAgIHN0YXRpYyBpbnQgcDA1WzNdID0geyA1LCAyNSwgMTI1IH07CisgICAgc3RhdGljIGNvbnN0IGludCBwMDVbM10gPSB7IDUsIDI1LCAxMjUgfTsKIAogICAgIGlmICgoaSA9IGsgJiAzKSkgewogICAgICAgICBiID0gbXVsdGFkZChiLCBwMDVbaS0xXSwgMCk7CkBAIC05MzUsMTIgKzg3NCw3IEBACiAgICAgQmlnaW50ICpjOwogICAgIGludCBpLCB3YSwgd2I7CiAgICAgVUxvbmcgKnhhLCAqeGFlLCAqeGIsICp4YmUsICp4YzsKLSNpZmRlZiBVTExvbmcKICAgICBVTExvbmcgYm9ycm93LCB5OwotI2Vsc2UKLSAgICBVTG9uZyBib3Jyb3csIHk7Ci0gICAgVUxvbmcgejsKLSNlbmRpZgogCiAgICAgaSA9IGNtcChhLGIpOwogICAgIGlmICghaSkgewpAQCAtOTcxLDcgKzkwNSw2IEBACiAgICAgeGJlID0geGIgKyB3YjsKICAgICB4YyA9IGMtPng7CiAgICAgYm9ycm93ID0gMDsKLSNpZmRlZiBVTExvbmcKICAgICBkbyB7CiAgICAgICAgIHkgPSAoVUxMb25nKSp4YSsrIC0gKnhiKysgLSBib3Jyb3c7CiAgICAgICAgIGJvcnJvdyA9IHkgPj4gMzIgJiAoVUxvbmcpMTsKQEAgLTk4MywyMyArOTE2LDYgQEAKICAgICAgICAgYm9ycm93ID0geSA+PiAzMiAmIChVTG9uZykxOwogICAgICAgICAqeGMrKyA9IChVTG9uZykoeSAmIEZGRkZGRkZGKTsKICAgICB9Ci0jZWxzZQotICAgIGRvIHsKLSAgICAgICAgeSA9ICgqeGEgJiAweGZmZmYpIC0gKCp4YiAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgIGJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgIHogPSAoKnhhKysgPj4gMTYpIC0gKCp4YisrID4+IDE2KSAtIGJvcnJvdzsKLSAgICAgICAgYm9ycm93ID0gKHogJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgU3RvcmVpbmMoeGMsIHosIHkpOwotICAgIH0KLSAgICB3aGlsZSh4YiA8IHhiZSk7Ci0gICAgd2hpbGUoeGEgPCB4YWUpIHsKLSAgICAgICAgeSA9ICgqeGEgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICBib3Jyb3cgPSAoeSAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICB6ID0gKCp4YSsrID4+IDE2KSAtIGJvcnJvdzsKLSAgICAgICAgYm9ycm93ID0gKHogJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgU3RvcmVpbmMoeGMsIHosIHkpOwotICAgIH0KLSNlbmRpZgogICAgIHdoaWxlKCEqLS14YykKICAgICAgICAgd2EtLTsKICAgICBjLT53ZHMgPSB3YTsKQEAgLTEyNDQsMTIgKzExNjAsNyBAQAogewogICAgIGludCBuOwogICAgIFVMb25nICpieCwgKmJ4ZSwgcSwgKnN4LCAqc3hlOwotI2lmZGVmIFVMTG9uZwogICAgIFVMTG9uZyBib3Jyb3csIGNhcnJ5LCB5LCB5czsKLSNlbHNlCi0gICAgVUxvbmcgYm9ycm93LCBjYXJyeSwgeSwgeXM7Ci0gICAgVUxvbmcgc2ksIHosIHpzOwotI2VuZGlmCiAKICAgICBuID0gUy0+d2RzOwogI2lmZGVmIERFQlVHCkBAIC0xMjcxLDIzICsxMTgyLDExIEBACiAgICAgICAgIGJvcnJvdyA9IDA7CiAgICAgICAgIGNhcnJ5ID0gMDsKICAgICAgICAgZG8gewotI2lmZGVmIFVMTG9uZwogICAgICAgICAgICAgeXMgPSAqc3grKyAqIChVTExvbmcpcSArIGNhcnJ5OwogICAgICAgICAgICAgY2FycnkgPSB5cyA+PiAzMjsKICAgICAgICAgICAgIHkgPSAqYnggLSAoeXMgJiBGRkZGRkZGRikgLSBib3Jyb3c7CiAgICAgICAgICAgICBib3Jyb3cgPSB5ID4+IDMyICYgKFVMb25nKTE7CiAgICAgICAgICAgICAqYngrKyA9IChVTG9uZykoeSAmIEZGRkZGRkZGKTsKLSNlbHNlCi0gICAgICAgICAgICBzaSA9ICpzeCsrOwotICAgICAgICAgICAgeXMgPSAoc2kgJiAweGZmZmYpICogcSArIGNhcnJ5OwotICAgICAgICAgICAgenMgPSAoc2kgPj4gMTYpICogcSArICh5cyA+PiAxNik7Ci0gICAgICAgICAgICBjYXJyeSA9IHpzID4+IDE2OwotICAgICAgICAgICAgeSA9ICgqYnggJiAweGZmZmYpIC0gKHlzICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgICAgIGJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgICAgICB6ID0gKCpieCA+PiAxNikgLSAoenMgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICAgICAgYm9ycm93ID0gKHogJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgICAgIFN0b3JlaW5jKGJ4LCB6LCB5KTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHdoaWxlKHN4IDw9IHN4ZSk7CiAgICAgICAgIGlmICghKmJ4ZSkgewpAQCAtMTMwNCwyMyArMTIwMywxMSBAQAogICAgICAgICBieCA9IGItPng7CiAgICAgICAgIHN4ID0gUy0+eDsKICAgICAgICAgZG8gewotI2lmZGVmIFVMTG9uZwogICAgICAgICAgICAgeXMgPSAqc3grKyArIGNhcnJ5OwogICAgICAgICAgICAgY2FycnkgPSB5cyA+PiAzMjsKICAgICAgICAgICAgIHkgPSAqYnggLSAoeXMgJiBGRkZGRkZGRikgLSBib3Jyb3c7CiAgICAgICAgICAgICBib3Jyb3cgPSB5ID4+IDMyICYgKFVMb25nKTE7CiAgICAgICAgICAgICAqYngrKyA9IChVTG9uZykoeSAmIEZGRkZGRkZGKTsKLSNlbHNlCi0gICAgICAgICAgICBzaSA9ICpzeCsrOwotICAgICAgICAgICAgeXMgPSAoc2kgJiAweGZmZmYpICsgY2Fycnk7Ci0gICAgICAgICAgICB6cyA9IChzaSA+PiAxNikgKyAoeXMgPj4gMTYpOwotICAgICAgICAgICAgY2FycnkgPSB6cyA+PiAxNjsKLSAgICAgICAgICAgIHkgPSAoKmJ4ICYgMHhmZmZmKSAtICh5cyAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgICAgICBib3Jyb3cgPSAoeSAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICAgICAgeiA9ICgqYnggPj4gMTYpIC0gKHpzICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgICAgIGJvcnJvdyA9ICh6ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgICAgICBTdG9yZWluYyhieCwgeiwgeSk7Ci0jZW5kaWYKICAgICAgICAgfQogICAgICAgICB3aGlsZShzeCA8PSBzeGUpOwogICAgICAgICBieCA9IGItPng7CkBAIC0yMzE1LDcgKzIyMDIsNyBAQAogfQogCiBzdGF0aWMgY2hhciAqCi1ucnZfYWxsb2MoY2hhciAqcywgY2hhciAqKnJ2ZSwgaW50IG4pCitucnZfYWxsb2MoY29uc3QgY2hhciAqcywgY2hhciAqKnJ2ZSwgaW50IG4pCiB7CiAgICAgY2hhciAqcnYsICp0OwogCmRpZmYgLS1naXQgYS9QeXRob24vZHRyYWNlX3N0dWJzLmMgYi9QeXRob24vZHRyYWNlX3N0dWJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA1MTM2MwotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9kdHJhY2Vfc3R1YnMuYwpAQCAtMCwwICsxLDI0IEBACisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSAicHlkdHJhY2UuaCIKKworI2lmbmRlZiBXSVRIX0RUUkFDRQorZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0xJTkUoY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGNvbnN0IGNoYXIgKmFyZzAsIGNvbnN0IGNoYXIgKmFyZzEsIGludCBhcmcyKTsKK2V4dGVybiBpbmxpbmUgdm9pZCBQeURUcmFjZV9GVU5DVElPTl9SRVRVUk4oY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0dDX1NUQVJUKGludCBhcmcwKTsKK2V4dGVybiBpbmxpbmUgdm9pZCBQeURUcmFjZV9HQ19ET05FKGludCBhcmcwKTsKK2V4dGVybiBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ORVdfU1RBUlQoaW50IGFyZzApOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19ET05FKGludCBhcmcwKTsKK2V4dGVybiBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfU1RBUlQoaW50IGFyZzApOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9ET05FKGludCBhcmcwKTsKKworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfTElORV9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUllfRU5BQkxFRCh2b2lkKTsKK2V4dGVybiBpbmxpbmUgaW50IFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTl9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfR0NfU1RBUlRfRU5BQkxFRCh2b2lkKTsKK2V4dGVybiBpbmxpbmUgaW50IFB5RFRyYWNlX0dDX0RPTkVfRU5BQkxFRCh2b2lkKTsKK2V4dGVybiBpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVF9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX0RPTkVfRU5BQkxFRCh2b2lkKTsKK2V4dGVybiBpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9TVEFSVF9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkVfRU5BQkxFRCh2b2lkKTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfd2luLmMgYi9QeXRob24vZHlubG9hZF93aW4uYwppbmRleCBmMmM3OTZlLi4wNTA1MGNmIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF93aW4uYworKysgYi9QeXRob24vZHlubG9hZF93aW4uYwpAQCAtMjQsMTIgKzI0LDEwIEBACiAjZGVmaW5lIFBZRF9ERUJVR19TVUZGSVggIiIKICNlbmRpZgogCi0jZGVmaW5lIFNUUklOR0laRTIoeCkgI3gKLSNkZWZpbmUgU1RSSU5HSVpFKHgpIFNUUklOR0laRTIoeCkKICNpZmRlZiBQWURfUExBVEZPUk1fVEFHCi0jZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgU1RSSU5HSVpFKFBZX01BSk9SX1ZFUlNJT04pIFNUUklOR0laRShQWV9NSU5PUl9WRVJTSU9OKSAiLSIgUFlEX1BMQVRGT1JNX1RBRyAiLnB5ZCIKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBQeV9TVFJJTkdJRlkoUFlfTUFKT1JfVkVSU0lPTikgUHlfU1RSSU5HSUZZKFBZX01JTk9SX1ZFUlNJT04pICItIiBQWURfUExBVEZPUk1fVEFHICIucHlkIgogI2Vsc2UKLSNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBTVFJJTkdJWkUoUFlfTUFKT1JfVkVSU0lPTikgU1RSSU5HSVpFKFBZX01JTk9SX1ZFUlNJT04pICIucHlkIgorI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFB5X1NUUklOR0lGWShQWV9NQUpPUl9WRVJTSU9OKSBQeV9TVFJJTkdJRlkoUFlfTUlOT1JfVkVSU0lPTikgIi5weWQiCiAjZW5kaWYKIAogI2RlZmluZSBQWURfVU5UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5weWQiCkBAIC00Myw3ICs0MSw3IEBACiAvKiBDYXNlIGluc2Vuc2l0aXZlIHN0cmluZyBjb21wYXJlLCB0byBhdm9pZCBhbnkgZGVwZW5kZW5jaWVzIG9uIHBhcnRpY3VsYXIKICAgIEMgUlRMIGltcGxlbWVudGF0aW9ucyAqLwogCi1zdGF0aWMgaW50IHN0cmNhc2VjbXAgKGNoYXIgKnN0cmluZzEsIGNoYXIgKnN0cmluZzIpCitzdGF0aWMgaW50IHN0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKnN0cmluZzEsIGNvbnN0IGNoYXIgKnN0cmluZzIpCiB7CiAgICAgaW50IGZpcnN0LCBzZWNvbmQ7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9lcnJvcnMuYyBiL1B5dGhvbi9lcnJvcnMuYwppbmRleCBlMTUxY2FiLi4xM2FlNmI0IDEwMDY0NAotLS0gYS9QeXRob24vZXJyb3JzLmMKKysrIGIvUHl0aG9uL2Vycm9ycy5jCkBAIC01Miw2ICs1MiwyMCBAQAogICAgIFB5X1hERUNSRUYob2xkdHJhY2ViYWNrKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorX1B5RXJyX0NyZWF0ZUV4Y2VwdGlvbihQeU9iamVjdCAqZXhjZXB0aW9uLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgdmFsdWUgPT0gUHlfTm9uZSkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhleGNlcHRpb24pOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbChleGNlcHRpb24sIHZhbHVlLCBOVUxMKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbEFyZzEoZXhjZXB0aW9uLCB2YWx1ZSk7CisgICAgfQorfQorCiB2b2lkCiBQeUVycl9TZXRPYmplY3QoUHlPYmplY3QgKmV4Y2VwdGlvbiwgUHlPYmplY3QgKnZhbHVlKQogewpAQCAtNjYsNiArODAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwogICAgIGV4Y192YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOwogICAgIGlmIChleGNfdmFsdWUgIT0gTlVMTCAmJiBleGNfdmFsdWUgIT0gUHlfTm9uZSkgewpAQCAtNzMsMjggKzg4LDIxIEBACiAgICAgICAgIFB5X0lOQ1JFRihleGNfdmFsdWUpOwogICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgICAgIC8qIFdlIG11c3Qgbm9ybWFsaXplIHRoZSB2YWx1ZSByaWdodCBub3cgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCAqZml4ZWRfdmFsdWU7CisgICAgICAgICAgICBQeU9iamVjdCAqZml4ZWRfdmFsdWU7CiAKLSAgICAgICAgICAgIC8qIElzc3VlICMyMzU3MTogUHlFdmFsX0NhbGxPYmplY3QoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbgorICAgICAgICAgICAgLyogSXNzdWUgIzIzNTcxOiBmdW5jdGlvbnMgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4KICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiBzZXQgKi8KICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8IHZhbHVlID09IFB5X05vbmUpCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICAgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGFyZ3MgPSB2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKLSAgICAgICAgICAgIGZpeGVkX3ZhbHVlID0gYXJncyA/Ci0gICAgICAgICAgICAgICAgUHlFdmFsX0NhbGxPYmplY3QoZXhjZXB0aW9uLCBhcmdzKSA6IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgZml4ZWRfdmFsdWUgPSBfUHlFcnJfQ3JlYXRlRXhjZXB0aW9uKGV4Y2VwdGlvbiwgdmFsdWUpOwogICAgICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoZml4ZWRfdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChmaXhlZF92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2YWx1ZSA9IGZpeGVkX3ZhbHVlOwogICAgICAgICB9CisKICAgICAgICAgLyogQXZvaWQgcmVmZXJlbmNlIGN5Y2xlcyB0aHJvdWdoIHRoZSBjb250ZXh0IGNoYWluLgogICAgICAgICAgICBUaGlzIGlzIE8oY2hhaW4gbGVuZ3RoKSBidXQgY29udGV4dCBjaGFpbnMgYXJlCiAgICAgICAgICAgIHVzdWFsbHkgdmVyeSBzaG9ydC4gU2Vuc2l0aXZlIHJlYWRlcnMgbWF5IHRyeQpAQCAtMTEwLDcgKzExOCw4IEBACiAgICAgICAgICAgICAgICAgbyA9IGNvbnRleHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbHVlLCBleGNfdmFsdWUpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlfREVDUkVGKGV4Y192YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTgsMjUgKzI2NywxNSBAQAogICAgICAgICAgICBjbGFzcy4KICAgICAgICAgKi8KICAgICAgICAgaWYgKCFpbmNsYXNzIHx8ICFpc19zdWJjbGFzcykgewotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsICpyZXM7CisgICAgICAgICAgICBQeU9iamVjdCAqZml4ZWRfdmFsdWU7CiAKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWU7CisgICAgICAgICAgICBmaXhlZF92YWx1ZSA9IF9QeUVycl9DcmVhdGVFeGNlcHRpb24odHlwZSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKGZpeGVkX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7CiAKLSAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QodHlwZSwgYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIHZhbHVlID0gcmVzOworICAgICAgICAgICAgdmFsdWUgPSBmaXhlZF92YWx1ZTsKICAgICAgICAgfQogICAgICAgICAvKiBpZiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlIGRvZXNuJ3QgZXhhY3RseSBtYXRjaCB0aGUKICAgICAgICAgICAgY2xhc3Mgb2YgdGhlIHR5cGUsIGJlbGlldmUgdGhlIGluc3RhbmNlCkBAIC02OTgsNTEgKzY5Nyw2MSBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlPYmplY3QgKgotUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeU9iamVjdCAqZXhjZXB0aW9uLCBQeU9iamVjdCAqbXNnLAorICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKmt3YXJncywgKmVycm9yOworICAgIGludCBpc3N1YmNsYXNzOworICAgIFB5T2JqZWN0ICprd2FyZ3MsICplcnJvcjsKIAotICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICBpc3N1YmNsYXNzID0gUHlPYmplY3RfSXNTdWJjbGFzcyhleGNlcHRpb24sIFB5RXhjX0ltcG9ydEVycm9yKTsKKyAgICBpZiAoaXNzdWJjbGFzcyA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICB9CisgICAgZWxzZSBpZiAoIWlzc3ViY2xhc3MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdGVkIGEgc3ViY2xhc3Mgb2YgSW1wb3J0RXJyb3IiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAga3dhcmdzID0gUHlEaWN0X05ldygpOwotICAgIGlmIChrd2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgaWYgKG1zZyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCBhIG1lc3NhZ2UgYXJndW1lbnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBuYW1lID0gUHlfTm9uZTsKICAgICB9Ci0KICAgICBpZiAocGF0aCA9PSBOVUxMKSB7CiAgICAgICAgIHBhdGggPSBQeV9Ob25lOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihtc2cpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbXNnKTsKLQotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSkgPCAwKQorICAgIGt3YXJncyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoa3dhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSkgPCAwKSB7CiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAicGF0aCIsIHBhdGgpIDwgMCkKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgInBhdGgiLCBwYXRoKSA8IDApIHsKICAgICAgICAgZ290byBkb25lOworICAgIH0KIAotICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbChQeUV4Y19JbXBvcnRFcnJvciwgYXJncywga3dhcmdzKTsKKyAgICBlcnJvciA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZXhjZXB0aW9uLCAmbXNnLCAxLCBrd2FyZ3MpOwogICAgIGlmIChlcnJvciAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdCgoUHlPYmplY3QgKilQeV9UWVBFKGVycm9yKSwgZXJyb3IpOwogICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOwogICAgIH0KIAogZG9uZToKLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgUHlfREVDUkVGKGt3YXJncyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK1B5T2JqZWN0ICoKK1B5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKK3sKKyAgICByZXR1cm4gUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeUV4Y19JbXBvcnRFcnJvciwgbXNnLCBuYW1lLCBwYXRoKTsKK30KKwogdm9pZAogX1B5RXJyX0JhZEludGVybmFsQ2FsbChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9maWxldXRpbHMuYyBiL1B5dGhvbi9maWxldXRpbHMuYwppbmRleCAyM2VlZDcxLi5lM2JmYjBjIDEwMDY0NAotLS0gYS9QeXRob24vZmlsZXV0aWxzLmMKKysrIGIvUHl0aG9uL2ZpbGV1dGlscy5jCkBAIC00NCw3ICs0NCw3IEBACiAjZW5kaWYKICAgICBpbnQgdmFsaWQ7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIHZhbGlkID0gX1B5VmVyaWZ5X2ZkKGZkKSAmJiBpc2F0dHkoZmQpOworICAgIHZhbGlkID0gaXNhdHR5KGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIGlmICghdmFsaWQpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTA0LDIzICsxMDQsMjQgQEAKICAgICBjaGFyICpsb2M7CiAjaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKICAgICBjaGFyICpjb2Rlc2V0LCAqKmFsaWFzOwotICAgIGNoYXIgZW5jb2RpbmdbMTAwXTsKKyAgICBjaGFyIGVuY29kaW5nWzIwXTsgICAvKiBsb25nZXN0IG5hbWU6ICJpc29fNjQ2Lmlydl8xOTkxXDAiICovCiAgICAgaW50IGlzX2FzY2lpOwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGNoYXIqIGFzY2lpX2FsaWFzZXNbXSA9IHsKICAgICAgICAgImFzY2lpIiwKKyAgICAgICAgLyogQWxpYXNlcyBmcm9tIExpYi9lbmNvZGluZ3MvYWxpYXNlcy5weSAqLwogICAgICAgICAiNjQ2IiwKLSAgICAgICAgImFuc2kteDMuNC0xOTY4IiwKLSAgICAgICAgImFuc2kteDMtNC0xOTY4IiwKLSAgICAgICAgImFuc2kteDMuNC0xOTg2IiwKKyAgICAgICAgImFuc2lfeDMuNF8xOTY4IiwKKyAgICAgICAgImFuc2lfeDMuNF8xOTg2IiwKKyAgICAgICAgImFuc2lfeDNfNF8xOTY4IiwKICAgICAgICAgImNwMzY3IiwKICAgICAgICAgImNzYXNjaWkiLAogICAgICAgICAiaWJtMzY3IiwKLSAgICAgICAgImlzbzY0Ni11cyIsCi0gICAgICAgICJpc28tNjQ2Lmlydi0xOTkxIiwKLSAgICAgICAgImlzby1pci02IiwKKyAgICAgICAgImlzbzY0Nl91cyIsCisgICAgICAgICJpc29fNjQ2Lmlydl8xOTkxIiwKKyAgICAgICAgImlzb19pcl82IiwKICAgICAgICAgInVzIiwKLSAgICAgICAgInVzLWFzY2lpIiwKKyAgICAgICAgInVzX2FzY2lpIiwKICAgICAgICAgTlVMTAogICAgIH07CiAjZW5kaWYKQEAgLTYxMywxMyArNjE0LDkgQEAKICAgICBIQU5ETEUgaDsKICAgICBpbnQgdHlwZTsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgaCA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgIGVsc2UgewotICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICi0gICAgICAgIGggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKLSAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICB9CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogCiAgICAgaWYgKGggPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgLyogZXJybm8gaXMgYWxyZWFkeSBzZXQgYnkgX2dldF9vc2ZoYW5kbGUsIGJ1dCB3ZSBhbHNvIHNldApAQCAtNjgzLDYgKzY4MCwxMCBAQAogewogICAgIGludCByZXM7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gX1B5X2ZzdGF0X25vcmFpc2UoZmQsIHN0YXR1cyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKQEAgLTczOCwxMiArNzM5LDYgQEAKICAgICBIQU5ETEUgaGFuZGxlOwogICAgIERXT1JEIGZsYWdzOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIGlmIChyYWlzZSkKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtNzk0LDcgKzc4OSw3IEBACiAgICAgaW50IHJlcXVlc3Q7CiAgICAgaW50IGVycjsKICNlbmRpZgotICAgIGludCBmbGFnczsKKyAgICBpbnQgZmxhZ3MsIG5ld19mbGFnczsKICAgICBpbnQgcmVzOwogI2VuZGlmCiAKQEAgLTgxNSwxMiArODEwLDYgQEAKICAgICB9CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIGlmIChyYWlzZSkKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtODg1LDEwICs4NzQsMTggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChpbmhlcml0YWJsZSkKLSAgICAgICAgZmxhZ3MgJj0gfkZEX0NMT0VYRUM7Ci0gICAgZWxzZQotICAgICAgICBmbGFncyB8PSBGRF9DTE9FWEVDOworICAgIGlmIChpbmhlcml0YWJsZSkgeworICAgICAgICBuZXdfZmxhZ3MgPSBmbGFncyAmIH5GRF9DTE9FWEVDOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbmV3X2ZsYWdzID0gZmxhZ3MgfCBGRF9DTE9FWEVDOworICAgIH0KKworICAgIGlmIChuZXdfZmxhZ3MgPT0gZmxhZ3MpIHsKKyAgICAgICAgLyogRkRfQ0xPRVhFQyBmbGFnIGFscmVhZHkgc2V0L2NsZWFyZWQ6IG5vdGhpbmcgdG8gZG8gKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmVzID0gZmNudGwoZmQsIEZfU0VURkQsIGZsYWdzKTsKICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICBpZiAocmFpc2UpCkBAIC0xMTY5LDE5ICsxMTY2LDE1IEBACiAgICAgaW50IGVycjsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKwogICAgIC8qIF9QeV9yZWFkKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwgb3RoZXJ3aXNlIHRoZQogICAgICAqIGNhbGxlciBtYXkgdGhpbmsgdGhhdCByZWFkKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCB0aGUgc2lnbmFsCiAgICAgICogaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLwogICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLwotICAgICAgICBlcnIgPSBlcnJubzsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICBlcnJubyA9IGVycjsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoY291bnQgPiBJTlRfTUFYKSB7CiAgICAgICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBjb3VudCBwYXJhbWV0ZXIgb2YgcmVhZCgpIGlzIGFuIGludCAqLwpAQCAtMTIzNSwxNiArMTIyOCw2IEBACiAgICAgaW50IGVycjsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBpZiAoZ2lsX2hlbGQpIHsKLSAgICAgICAgICAgIC8qIHNhdmUvcmVzdG9yZSBlcnJubyBiZWNhdXNlIFB5RXJyX1NldEZyb21FcnJubygpIGNhbiBtb2RpZnkgaXQgKi8KLSAgICAgICAgICAgIGVyciA9IGVycm5vOwotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKGNvdW50ID4gMzI3NjcgJiYgaXNhdHR5KGZkKSkgewpAQCAtMTMyNCw2ICsxMzA3LDEwIEBACiBQeV9zc2l6ZV90CiBfUHlfd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCisKICAgICAvKiBfUHlfd3JpdGUoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LCBvdGhlcndpc2UgdGhlCiAgICAgICogY2FsbGVyIG1heSB0aGluayB0aGF0IHdyaXRlKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCB0aGUgc2lnbmFsCiAgICAgICogaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLwpAQCAtMTQ3MywxMCArMTQ2MCw5IEBACiAgICAgRFdPUkQgZnR5cGU7CiAjZW5kaWYKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTE2MDAsODQgKzE1ODYsMyBAQAogICAgIHJldHVybiAtMTsKIH0KICNlbmRpZgotCi0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAotLyogTGVnYWN5IGltcGxlbWVudGF0aW9uIG9mIF9QeVZlcmlmeV9mZCB3aGlsZSB0cmFuc2l0aW9uaW5nIHRvCi0gKiBNU1ZDIDE0LjAuIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZC4gKGlzc3VlMjM1MjQpCi0gKi8KLQotLyogTWljcm9zb2Z0IENSVCBpbiBWUzIwMDUgYW5kIGhpZ2hlciB3aWxsIHZlcmlmeSB0aGF0IGEgZmlsZWhhbmRsZSBpcwotICogdmFsaWQgYW5kIHJhaXNlIGFuIGFzc2VydGlvbiBpZiBpdCBpc24ndC4KLSAqIE5vcm1hbGx5LCBhbiBpbnZhbGlkIGZkIGlzIGxpa2VseSB0byBiZSBhIEMgcHJvZ3JhbSBlcnJvciBhbmQgdGhlcmVmb3JlCi0gKiBhbiBhc3NlcnRpb24gY2FuIGJlIHVzZWZ1bCwgYnV0IGl0IGRvZXMgY29udHJhZGljdCB0aGUgUE9TSVggc3RhbmRhcmQKLSAqIHdoaWNoIGZvciB3cml0ZSgyKSBzdGF0ZXM6Ci0gKiAgICAiT3RoZXJ3aXNlLCAtMSBzaGFsbCBiZSByZXR1cm5lZCBhbmQgZXJybm8gc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci4iCi0gKiAgICAiW0VCQURGXSBUaGUgZmlsZGVzIGFyZ3VtZW50IGlzIG5vdCBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvciBvcGVuIGZvcgotICogICAgIHdyaXRpbmcuIgotICogRnVydGhlcm1vcmUsIHB5dGhvbiBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYW55IG9sZCBpbnRlZ2VyCi0gKiBhcyBhIGZkIGFuZCBzaG91bGQgbWVyZWx5IHJhaXNlIGEgcHl0aG9uIGV4Y2VwdGlvbiBvbiBlcnJvci4KLSAqIFRoZSBNaWNyb3NvZnQgQ1JUIGRvZXNuJ3QgcHJvdmlkZSBhbiBvZmZpY2lhbCB3YXkgdG8gY2hlY2sgZm9yIHRoZQotICogdmFsaWRpdHkgb2YgYSBmaWxlIGRlc2NyaXB0b3IsIGJ1dCB3ZSBjYW4gZW11bGF0ZSBpdHMgaW50ZXJuYWwgYmVoYXZpb3VyCi0gKiBieSB1c2luZyB0aGUgZXhwb3J0ZWQgX19waW5mbyBkYXRhIG1lbWJlciBhbmQga25vd2xlZGdlIG9mIHRoZQotICogaW50ZXJuYWwgc3RydWN0dXJlcyBpbnZvbHZlZC4KLSAqIFRoZSBzdHJ1Y3R1cmVzIGJlbG93IG11c3QgYmUgdXBkYXRlZCBmb3IgZWFjaCB2ZXJzaW9uIG9mIHZpc3VhbCBzdHVkaW8KLSAqIGFjY29yZGluZyB0byB0aGUgZmlsZSBpbnRlcm5hbC5oIGluIHRoZSBDUlQgc291cmNlLCB1bnRpbCBNUyBjb21lcwotICogdXAgd2l0aCBhIGxlc3MgaGFja3kgd2F5IHRvIGRvIHRoaXMuCi0gKiAoYWxsIG9mIHRoaXMgaXMgdG8gYXZvaWQgZ2xvYmFsbHkgbW9kaWZ5aW5nIHRoZSBDUlQgYmVoYXZpb3VyIHVzaW5nCi0gKiBfc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoKSBhbmQgX0NydFNldFJlcG9ydE1vZGUoKSkKLSAqLwotLyogVGhlIGFjdHVhbCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaXMgZGV0ZXJtaW5lZCBhdCBydW50aW1lLgotICogT25seSB0aGUgZmlyc3QgaXRlbXMgbXVzdCBiZSBwcmVzZW50LgotICovCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgaW50cHRyX3Qgb3NmaG5kOwotICAgIGNoYXIgb3NmaWxlOwotfSBteV9pb2luZm87Ci0KLWV4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciAqIF9fcGlvaW5mb1tdOwotI2RlZmluZSBJT0lORk9fTDJFIDUKLSNkZWZpbmUgSU9JTkZPX0FSUkFZUyA2NAotI2RlZmluZSBJT0lORk9fQVJSQVlfRUxUUyAgICgxIDw8IElPSU5GT19MMkUpCi0jZGVmaW5lIF9OSEFORExFXyAgICAgICAgICAgKElPSU5GT19BUlJBWVMgKiBJT0lORk9fQVJSQVlfRUxUUykKLSNkZWZpbmUgRk9QRU4gMHgwMQotI2RlZmluZSBfTk9fQ09OU09MRV9GSUxFTk8gKGludHB0cl90KS0yCi0KLS8qIFRoaXMgZnVuY3Rpb24gZW11bGF0ZXMgd2hhdCB0aGUgd2luZG93cyBDUlQgZG9lcyB0byB2YWxpZGF0ZSBmaWxlIGhhbmRsZXMgKi8KLWludAotX1B5VmVyaWZ5X2ZkKGludCBmZCkKLXsKLSAgICBjb25zdCBpbnQgaTEgPSBmZCA+PiBJT0lORk9fTDJFOwotICAgIGNvbnN0IGludCBpMiA9IGZkICYgKCgxIDw8IElPSU5GT19MMkUpIC0gMSk7Ci0KLSAgICBzdGF0aWMgc2l6ZV90IHNpemVvZl9pb2luZm8gPSAwOwotCi0gICAgLyogRGV0ZXJtaW5lIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgaW9pbmZvIHN0cnVjdHVyZSwKLSAgICAgKiBhcyB1c2VkIGJ5IHRoZSBDUlQgbG9hZGVkIGluIG1lbW9yeQotICAgICAqLwotICAgIGlmIChzaXplb2ZfaW9pbmZvID09IDAgJiYgX19waW9pbmZvWzBdICE9IE5VTEwpIHsKLSAgICAgICAgc2l6ZW9mX2lvaW5mbyA9IF9tc2l6ZShfX3Bpb2luZm9bMF0pIC8gSU9JTkZPX0FSUkFZX0VMVFM7Ci0gICAgfQotICAgIGlmIChzaXplb2ZfaW9pbmZvID09IDApIHsKLSAgICAgICAgLyogVGhpcyBzaG91bGQgbm90IGhhcHBlbi4uLiAqLwotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgfQotCi0gICAgLyogU2VlIHRoYXQgaXQgaXNuJ3QgYSBzcGVjaWFsIENMRUFSIGZpbGVubyAqLwotICAgIGlmIChmZCAhPSBfTk9fQ09OU09MRV9GSUxFTk8pIHsKLSAgICAgICAgLyogTWljcm9zb2Z0IENSVCB3b3VsZCBjaGVjayB0aGF0IDA8PWZkPF9uaGFuZGxlIGJ1dCB3ZSBjYW4ndCBkbyB0aGF0LiAgSW5zdGVhZAotICAgICAgICAgKiB3ZSBjaGVjayBwb2ludGVyIHZhbGlkaXR5IGFuZCBvdGhlciBpbmZvCi0gICAgICAgICAqLwotICAgICAgICBpZiAoMCA8PSBpMSAmJiBpMSA8IElPSU5GT19BUlJBWVMgJiYgX19waW9pbmZvW2kxXSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBmaW5hbGx5LCBjaGVjayB0aGF0IHRoZSBmaWxlIGlzIG9wZW4gKi8KLSAgICAgICAgICAgIG15X2lvaW5mbyogaW5mbyA9IChteV9pb2luZm8qKShfX3Bpb2luZm9baTFdICsgaTIgKiBzaXplb2ZfaW9pbmZvKTsKLSAgICAgICAgICAgIGlmIChpbmZvLT5vc2ZpbGUgJiBGT1BFTikgewotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICBmYWlsOgotICAgIGVycm5vID0gRUJBREY7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbmRpZiAvKiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwICovCmRpZmYgLS1naXQgYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYyBiL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCmluZGV4IDYxN2Q1OGIuLmEyYzJiMzYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCisrKyBiL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCkBAIC0zMiwxNCArMzIsMjAgQEAKIHsKICAgICBpZiAocHJlc2VudGF0aW9uX3R5cGUgPiAzMiAmJiBwcmVzZW50YXRpb25fdHlwZSA8IDEyOCkKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJyVjJy4iLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyBvciAnXycgd2l0aCAnJWMnLiIsCiAgICAgICAgICAgICAgICAgICAgICAoY2hhcilwcmVzZW50YXRpb25fdHlwZSk7CiAgICAgZWxzZQogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgd2l0aCAnXFx4JXgnLiIsCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIG9yICdfJyB3aXRoICdcXHgleCcuIiwKICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUpOwogfQogCitzdGF0aWMgdm9pZAoraW52YWxpZF9jb21tYV9hbmRfdW5kZXJzY29yZSh2b2lkKQoreworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiQ2Fubm90IHNwZWNpZnkgYm90aCAnLCcgYW5kICdfJy4iKTsKK30KKwogLyoKICAgICBnZXRfaW50ZWdlciBjb25zdW1lcyAwIG9yIG1vcmUgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXJzIGZyb20gYW4KICAgICBpbnB1dCBzdHJpbmcsIHVwZGF0ZXMgKnJlc3VsdCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aXZlCkBAIC00OCwxNiArNTQsMTcgQEAKICAgICByZXR1cm5zIC0xIG9uIGVycm9yLgogKi8KIHN0YXRpYyBpbnQKLWdldF9pbnRlZ2VyKFB5T2JqZWN0ICpzdHIsIFB5X3NzaXplX3QgKnBvcywgUHlfc3NpemVfdCBlbmQsCitnZXRfaW50ZWdlcihQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90ICpwcG9zLCBQeV9zc2l6ZV90IGVuZCwKICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnJlc3VsdCkKIHsKLSAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yLCBkaWdpdHZhbDsKKyAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yLCBkaWdpdHZhbCwgcG9zID0gKnBwb3M7CiAgICAgaW50IG51bWRpZ2l0czsKKyAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisKICAgICBhY2N1bXVsYXRvciA9IG51bWRpZ2l0cyA9IDA7Ci0gICAgZm9yICg7OygqcG9zKSsrLCBudW1kaWdpdHMrKykgewotICAgICAgICBpZiAoKnBvcyA+PSBlbmQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGlnaXR2YWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChQeVVuaWNvZGVfUkVBRF9DSEFSKHN0ciwgKnBvcykpOworICAgIGZvciAoOyBwb3MgPCBlbmQ7IHBvcysrLCBudW1kaWdpdHMrKykgeworICAgICAgICBkaWdpdHZhbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcykpOwogICAgICAgICBpZiAoZGlnaXR2YWwgPCAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIC8qCkBAIC02OSwxMCArNzYsMTIgQEAKICAgICAgICAgaWYgKGFjY3VtdWxhdG9yID4gKFBZX1NTSVpFX1RfTUFYIC0gZGlnaXR2YWwpIC8gMTApIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJUb28gbWFueSBkZWNpbWFsIGRpZ2l0cyBpbiBmb3JtYXQgc3RyaW5nIik7CisgICAgICAgICAgICAqcHBvcyA9IHBvczsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBhY2N1bXVsYXRvciA9IGFjY3VtdWxhdG9yICogMTAgKyBkaWdpdHZhbDsKICAgICB9CisgICAgKnBwb3MgPSBwb3M7CiAgICAgKnJlc3VsdCA9IGFjY3VtdWxhdG9yOwogICAgIHJldHVybiBudW1kaWdpdHM7CiB9CkBAIC0xMDUsNiArMTE0LDE0IEBACiAgICAgfQogfQogCisvKiBMb2NhbGUgdHlwZSBjb2Rlcy4gTFRfTk9fTE9DQUxFIG11c3QgYmUgemVyby4gKi8KK2VudW0gTG9jYWxlVHlwZSB7CisgICAgTFRfTk9fTE9DQUxFID0gMCwKKyAgICBMVF9ERUZBVUxUX0xPQ0FMRSwKKyAgICBMVF9VTkRFUlNDT1JFX0xPQ0FMRSwKKyAgICBMVF9VTkRFUl9GT1VSX0xPQ0FMRSwKKyAgICBMVF9DVVJSRU5UX0xPQ0FMRQorfTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5X1VDUzQgZmlsbF9jaGFyOwpAQCAtMTEyLDcgKzEyOSw3IEBACiAgICAgaW50IGFsdGVybmF0ZTsKICAgICBQeV9VQ1M0IHNpZ247CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBpbnQgdGhvdXNhbmRzX3NlcGFyYXRvcnM7CisgICAgZW51bSBMb2NhbGVUeXBlIHRob3VzYW5kc19zZXBhcmF0b3JzOwogICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uOwogICAgIFB5X1VDUzQgdHlwZTsKIH0gSW50ZXJuYWxGb3JtYXRTcGVjOwpAQCAtMTUwLDkgKzE2NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGVmYXVsdF9hbGlnbikKIHsKICAgICBQeV9zc2l6ZV90IHBvcyA9IHN0YXJ0OworICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoZm9ybWF0X3NwZWMpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShmb3JtYXRfc3BlYyk7CiAgICAgLyogZW5kLXBvcyBpcyB1c2VkIHRocm91Z2hvdXQgdGhpcyBjb2RlIHRvIHNwZWNpZnkgdGhlIGxlbmd0aCBvZgogICAgICAgIHRoZSBpbnB1dCBzdHJpbmcgKi8KLSNkZWZpbmUgUkVBRF9zcGVjKGluZGV4KSBQeVVuaWNvZGVfUkVBRF9DSEFSKGZvcm1hdF9zcGVjLCBpbmRleCkKKyNkZWZpbmUgUkVBRF9zcGVjKGluZGV4KSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpbmRleCkKIAogICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7CiAgICAgaW50IGFsaWduX3NwZWNpZmllZCA9IDA7CkBAIC0xNjMsNyArMTgyLDcgQEAKICAgICBmb3JtYXQtPmFsdGVybmF0ZSA9IDA7CiAgICAgZm9ybWF0LT5zaWduID0gJ1wwJzsKICAgICBmb3JtYXQtPndpZHRoID0gLTE7Ci0gICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDA7CisgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IExUX05PX0xPQ0FMRTsKICAgICBmb3JtYXQtPnByZWNpc2lvbiA9IC0xOwogICAgIGZvcm1hdC0+dHlwZSA9IGRlZmF1bHRfdHlwZTsKIApAQCAtMjE4LDkgKzIzNywyMiBAQAogCiAgICAgLyogQ29tbWEgc2lnbmlmaWVzIGFkZCB0aG91c2FuZHMgc2VwYXJhdG9ycyAqLwogICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcsJykgewotICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMTsKKyAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IExUX0RFRkFVTFRfTE9DQUxFOwogICAgICAgICArK3BvczsKICAgICB9CisgICAgLyogVW5kZXJzY29yZSBzaWduaWZpZXMgYWRkIHRob3VzYW5kcyBzZXBhcmF0b3JzICovCisgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJ18nKSB7CisgICAgICAgIGlmIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzICE9IExUX05PX0xPQ0FMRSkgeworICAgICAgICAgICAgaW52YWxpZF9jb21tYV9hbmRfdW5kZXJzY29yZSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IExUX1VOREVSU0NPUkVfTE9DQUxFOworICAgICAgICArK3BvczsKKyAgICB9CisgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJywnKSB7CisgICAgICAgIGludmFsaWRfY29tbWFfYW5kX3VuZGVyc2NvcmUoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgLyogUGFyc2UgZmllbGQgcHJlY2lzaW9uICovCiAgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJy4nKSB7CkBAIC0yNzAsNiArMzAyLDE2IEBACiAgICAgICAgIGNhc2UgJ1wwJzoKICAgICAgICAgICAgIC8qIFRoZXNlIGFyZSBhbGxvd2VkLiBTZWUgUEVQIDM3OC4qLwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2InOgorICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgLyogVW5kZXJzY29yZXMgYXJlIGFsbG93ZWQgaW4gYmluL29jdC9oZXguIFNlZSBQRVAgNTE1LiAqLworICAgICAgICAgICAgaWYgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPT0gTFRfVU5ERVJTQ09SRV9MT0NBTEUpIHsKKyAgICAgICAgICAgICAgICAvKiBFdmVyeSBmb3VyIGRpZ2l0cywgbm90IGV2ZXJ5IHRocmVlLCBpbiBiaW4vb2N0L2hleC4gKi8KKyAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gTFRfVU5ERVJfRk9VUl9MT0NBTEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpbnZhbGlkX2NvbW1hX3R5cGUoZm9ybWF0LT50eXBlKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMzQ2LDEzICszODgsNiBAQAogLyoqKioqKioqKioqIGNvbW1vbiByb3V0aW5lcyBmb3IgbnVtZXJpYyBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8qIExvY2FsZSB0eXBlIGNvZGVzLiAqLwotZW51bSBMb2NhbGVUeXBlIHsKLSAgICBMVF9DVVJSRU5UX0xPQ0FMRSwKLSAgICBMVF9ERUZBVUxUX0xPQ0FMRSwKLSAgICBMVF9OT19MT0NBTEUKLX07Ci0KIC8qIExvY2FsZSBpbmZvIG5lZWRlZCBmb3IgZm9ybWF0dGluZyBpbnRlZ2VycyBhbmQgdGhlIHBhcnQgb2YgZmxvYXRzCiAgICBiZWZvcmUgYW5kIGluY2x1ZGluZyB0aGUgZGVjaW1hbC4gTm90ZSB0aGF0IGxvY2FsZXMgb25seSBzdXBwb3J0CiAgICA4LWJpdCBjaGFycywgbm90IHVuaWNvZGUuICovCkBAIC00MDQsMTMgKzQzOSwxNSBAQAogICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fcmVtYWluZGVyLCBpbnQgKmhhc19kZWNpbWFsKQogewogICAgIFB5X3NzaXplX3QgcmVtYWluZGVyOworICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQocyk7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHMpOwogCi0gICAgd2hpbGUgKHBvczxlbmQgJiYgUHlfSVNESUdJVChQeVVuaWNvZGVfUkVBRF9DSEFSKHMsIHBvcykpKQorICAgIHdoaWxlIChwb3M8ZW5kICYmIFB5X0lTRElHSVQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKSkpCiAgICAgICAgICsrcG9zOwogICAgIHJlbWFpbmRlciA9IHBvczsKIAogICAgIC8qIERvZXMgcmVtYWluZGVyIHN0YXJ0IHdpdGggYSBkZWNpbWFsIHBvaW50PyAqLwotICAgICpoYXNfZGVjaW1hbCA9IHBvczxlbmQgJiYgUHlVbmljb2RlX1JFQURfQ0hBUihzLCByZW1haW5kZXIpID09ICcuJzsKKyAgICAqaGFzX2RlY2ltYWwgPSBwb3M8ZW5kICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHJlbWFpbmRlcikgPT0gJy4nOwogCiAgICAgLyogU2tpcCB0aGUgZGVjaW1hbCBwb2ludC4gKi8KICAgICBpZiAoKmhhc19kZWNpbWFsKQpAQCAtNjU4LDEyICs2OTUsMTIgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGNoYXIgbm9fZ3JvdXBpbmdbMV0gPSB7Q0hBUl9NQVh9Oworc3RhdGljIGNvbnN0IGNoYXIgbm9fZ3JvdXBpbmdbMV0gPSB7Q0hBUl9NQVh9OwogCiAvKiBGaW5kIHRoZSBkZWNpbWFsIHBvaW50IGNoYXJhY3RlcihzPyksIHRob3VzYW5kc19zZXBhcmF0b3Iocz8pLCBhbmQKICAgIGdyb3VwaW5nIGRlc2NyaXB0aW9uLCBlaXRoZXIgZm9yIHRoZSBjdXJyZW50IGxvY2FsZSBpZiB0eXBlIGlzCi0gICBMVF9DVVJSRU5UX0xPQ0FMRSwgYSBoYXJkLWNvZGVkIGxvY2FsZSBpZiBMVF9ERUZBVUxUX0xPQ0FMRSwgb3IKLSAgIG5vbmUgaWYgTFRfTk9fTE9DQUxFLiAqLworICAgTFRfQ1VSUkVOVF9MT0NBTEUsIGEgaGFyZC1jb2RlZCBsb2NhbGUgaWYgTFRfREVGQVVMVF9MT0NBTEUgb3IKKyAgIExUX1VOREVSU0NPUkVfTE9DQUxFL0xUX1VOREVSX0ZPVVJfTE9DQUxFLCBvciBub25lIGlmIExUX05PX0xPQ0FMRS4gKi8KIHN0YXRpYyBpbnQKIGdldF9sb2NhbGVfaW5mbyhlbnVtIExvY2FsZVR5cGUgdHlwZSwgTG9jYWxlSW5mbyAqbG9jYWxlX2luZm8pCiB7CkBAIC02ODQsMTMgKzcyMSwxOSBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBMVF9ERUZBVUxUX0xPQ0FMRToKKyAgICBjYXNlIExUX1VOREVSU0NPUkVfTE9DQUxFOgorICAgIGNhc2UgTFRfVU5ERVJfRk9VUl9MT0NBTEU6CiAgICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcuJyk7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcsJyk7CisgICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKAorICAgICAgICAgICAgdHlwZSA9PSBMVF9ERUZBVUxUX0xPQ0FMRSA/ICcsJyA6ICdfJyk7CiAgICAgICAgIGlmICghbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgfHwgIWxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSAiXDMiOyAvKiBHcm91cCBldmVyeSAzIGNoYXJhY3RlcnMuICBUaGUKKyAgICAgICAgaWYgKHR5cGUgIT0gTFRfVU5ERVJfRk9VUl9MT0NBTEUpCisgICAgICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSAiXDMiOyAvKiBHcm91cCBldmVyeSAzIGNoYXJhY3RlcnMuICBUaGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltcGxpY2l0KSB0cmFpbGluZyAwIG1lYW5zIHJlcGVhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZWx5LiAqLworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSAiXDQiOyAvKiBCaW4vb2N0L2hleCBncm91cCBldmVyeSBmb3VyLiAqLwogICAgICAgICBicmVhazsKICAgICBjYXNlIExUX05PX0xPQ0FMRToKICAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJy4nKTsKQEAgLTkzNyw5ICs5ODAsNyBAQAogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwogICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKICAgICAgICAgZ290byBkb25lOwogCkBAIC0xMDg0LDkgKzExMjUsNyBAQAogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwogICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKICAgICAgICAgZ290byBkb25lOwogCkBAIC0xMjYyLDkgKzEzMDEsNyBAQAogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwogICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKICAgICAgICAgZ290byBkb25lOwogCmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVuLmMgYi9QeXRob24vZnJvemVuLmMKaW5kZXggNjc2ZjM5NS4uN2UwNGYzYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbi5jCisrKyBiL1B5dGhvbi9mcm96ZW4uYwpAQCAtMTQsMTcgKzE0LDE1IEBACiAgICB0aGUgYXBwcm9wcmlhdGUgYnl0ZXMgZnJvbSBNX19fbWFpbl9fLmMuICovCiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIE1fX19oZWxsb19fW10gPSB7Ci0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjAsMCwwLDAsMTAwLDIsMCw5MCwxLDAsCi0gICAgMTAxLDIsMCwxMDAsMCwwLDEzMSwxLDAsMSwxMDAsMSwwLDgzLDQwLDMsCi0gICAgMCwwLDAsMTE3LDEyLDAsMCwwLDcyLDEwMSwxMDgsMTA4LDExMSwzMiwxMTksMTExLAotICAgIDExNCwxMDgsMTAwLDMzLDc4LDg0LDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsCi0gICAgODQsMTE0LDExNywxMDEsMTE3LDExLDAsMCwwLDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LAotICAgIDEwNSwxMjIsMTAxLDEwMCwxMTcsNSwwLDAsMCwxMTIsMTE0LDEwNSwxMTAsMTE2LDQwLDAsCi0gICAgMCwwLDAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNyw3LDAsCi0gICAgMCwwLDEwMiwxMDgsOTcsMTAzLDQ2LDExMiwxMjEsMTE3LDgsMCwwLDAsNjAsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsMSwwLDAsMCwxMTUsMiwwLDAsMCw2LAotICAgIDEsCisgICAgMjI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwwLDkwLDAsMTAxLDEsCisgICAgMTAwLDEsMTMxLDEsMSwwLDEwMCwyLDgzLDAsNDEsMyw4NCwxMjIsMTIsNzIsCisgICAgMTAxLDEwOCwxMDgsMTExLDMyLDExOSwxMTEsMTE0LDEwOCwxMDAsMzMsNzgsNDEsMiwyMTgsMTEsCisgICAgMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDIxOCw1LDExMiwxMTQsMTA1LAorICAgIDExMCwxMTYsMTY5LDAsMTE0LDMsMCwwLDAsMTE0LDMsMCwwLDAsMjUwLDIyLAorICAgIDQ2LDQ3LDg0LDExMSwxMTEsMTA4LDExNSw0NywxMDIsMTE0LDEwMSwxMDEsMTIyLDEwMSw0NywxMDIsCisgICAgMTA4LDk3LDEwMyw0NiwxMTIsMTIxLDIxOCw4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLAorICAgIDEsMCwwLDAsMTE1LDIsMCwwLDAsNCwxLAogfTsKIAogI2RlZmluZSBTSVpFIChpbnQpc2l6ZW9mKE1fX19oZWxsb19fKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbm1haW4uYyBiL1B5dGhvbi9mcm96ZW5tYWluLmMKaW5kZXggZGU4YmQzNS4uNzY5YjMzZCAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbm1haW4uYworKysgYi9QeXRob24vZnJvemVubWFpbi5jCkBAIC05OSw3ICs5OSw5IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5V2luRnJlZXplX0V4ZVRlcm0oKTsKICNlbmRpZgotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgc3RzID0gMTIwOworICAgIH0KIAogZXJyb3I6CiAgICAgUHlNZW1fUmF3RnJlZShhcmd2X2NvcHkpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Z1dHVyZS5jIGIvUHl0aG9uL2Z1dHVyZS5jCmluZGV4IDE2M2Y4N2YuLjc1ZjIxMDcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mdXR1cmUuYworKysgYi9QeXRob24vZnV0dXJlLmMKQEAgLTc5LDcgKzc5LDEwIEBACiAKICAgICBpID0gMDsKICAgICBmaXJzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChtb2QtPnYuTW9kdWxlLmJvZHksIGkpOwotICAgIGlmIChmaXJzdC0+a2luZCA9PSBFeHByX2tpbmQgJiYgZmlyc3QtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBTdHJfa2luZCkKKyAgICBpZiAoZmlyc3QtPmtpbmQgPT0gRXhwcl9raW5kCisgICAgICAgICYmIChmaXJzdC0+di5FeHByLnZhbHVlLT5raW5kID09IFN0cl9raW5kCisgICAgICAgICAgICB8fCAoZmlyc3QtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBDb25zdGFudF9raW5kCisgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QoZmlyc3QtPnYuRXhwci52YWx1ZS0+di5Db25zdGFudC52YWx1ZSkpKSkKICAgICAgICAgaSsrOwogCiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9nZXRhcmdzLmMgYi9QeXRob24vZ2V0YXJncy5jCmluZGV4IDhhYWIwNjcuLjQzNjU2ZWIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9nZXRhcmdzLmMKKysrIGIvUHl0aG9uL2dldGFyZ3MuYwpAQCAtMTgsMTYgKzE4LDI4IEBACiBpbnQgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCB2YV9saXN0KTsKIAoraW50IF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIC4uLik7CitpbnQgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCB2YV9saXN0KTsKKwogI2lmZGVmIEhBVkVfREVDTFNQRUNfRExMCiAvKiBFeHBvcnQgZnVuY3Rpb25zICovCi1QeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlX1NpemVUKFB5T2JqZWN0ICosIGNoYXIgKiwgLi4uKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVChQeU9iamVjdCAqLCBjaGFyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlX1NpemVUKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VTdGFja19TaXplVChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pOwogUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCAuLi4pOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfQnVpbGRWYWx1ZV9TaXplVChjb25zdCBjaGFyICosIC4uLik7Ci1QeUFQSV9GVU5DKGludCkgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKiwgY2hhciAqLCB2YV9saXN0KTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZV9TaXplVChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwogUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgdmFfbGlzdCk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgdmFfbGlzdCk7CiAjZW5kaWYKIAogI2RlZmluZSBGTEFHX0NPTVBBVCAxCkBAIC01NiwxOCArNjgsMjQgQEAKIC8qIEZvcndhcmQgKi8KIHN0YXRpYyBpbnQgdmdldGFyZ3MxKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCAqLCBpbnQpOwogc3RhdGljIHZvaWQgc2V0ZXJyb3IoUHlfc3NpemVfdCwgY29uc3QgY2hhciAqLCBpbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotc3RhdGljIGNoYXIgKmNvbnZlcnRpdGVtKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBpbnQgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKLXN0YXRpYyBjaGFyICpjb252ZXJ0dHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICosIHNpemVfdCwgaW50LCBmcmVlbGlzdF90ICopOwotc3RhdGljIGNoYXIgKmNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsIGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKLXN0YXRpYyBQeV9zc2l6ZV90IGNvbnZlcnRidWZmZXIoUHlPYmplY3QgKiwgdm9pZCAqKnAsIGNoYXIgKiopOwotc3RhdGljIGludCBnZXRidWZmZXIoUHlPYmplY3QgKiwgUHlfYnVmZmVyICosIGNoYXIqKik7CitzdGF0aWMgY29uc3QgY2hhciAqY29udmVydGl0ZW0oUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsIGludCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBmcmVlbGlzdF90ICopOworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnR0dXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGNoYXIgKiwgc2l6ZV90LCBpbnQsIGZyZWVsaXN0X3QgKik7CitzdGF0aWMgY29uc3QgY2hhciAqY29udmVydHNpbXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBmcmVlbGlzdF90ICopOworc3RhdGljIFB5X3NzaXplX3QgY29udmVydGJ1ZmZlcihQeU9iamVjdCAqLCB2b2lkICoqcCwgY29uc3QgY2hhciAqKik7CitzdGF0aWMgaW50IGdldGJ1ZmZlcihQeU9iamVjdCAqLCBQeV9idWZmZXIgKiwgY29uc3QgY2hhcioqKTsKIAogc3RhdGljIGludCB2Z2V0YXJnc2tleXdvcmRzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCB2YV9saXN0ICosIGludCk7Ci1zdGF0aWMgY2hhciAqc2tpcGl0ZW0oY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQpOworc3RhdGljIGludCB2Z2V0YXJnc2tleXdvcmRzZmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIHZhX2xpc3QgKiwgaW50KTsKK3N0YXRpYyBpbnQgdmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkcywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncyk7CitzdGF0aWMgY29uc3QgY2hhciAqc2tpcGl0ZW0oY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQpOwogCiBpbnQKIFB5QXJnX1BhcnNlKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKQEAgLTgyLDcgKzEwMCw3IEBACiB9CiAKIGludAotX1B5QXJnX1BhcnNlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIC4uLikKK19QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgaW50IHJldHZhbDsKICAgICB2YV9saXN0IHZhOwpAQCAtMTA3LDcgKzEyNSw3IEBACiB9CiAKIGludAotX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgLi4uKQorX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIGludCByZXR2YWw7CiAgICAgdmFfbGlzdCB2YTsKQEAgLTEyMywyMCArMTQxLDI2IEBACiBQeUFyZ19WYVBhcnNlKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEpCiB7CiAgICAgdmFfbGlzdCBsdmE7CisgICAgaW50IHJldHZhbDsKIAotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CiAKLSAgICByZXR1cm4gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgMCk7CisgICAgcmV0dmFsID0gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgMCk7CisgICAgdmFfZW5kKGx2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKIH0KIAogaW50Ci1fUHlBcmdfVmFQYXJzZV9TaXplVChQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhKQorX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSkKIHsKICAgICB2YV9saXN0IGx2YTsKKyAgICBpbnQgcmV0dmFsOwogCi0gICAgICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisgICAgdmFfY29weShsdmEsIHZhKTsKIAotICAgIHJldHVybiB2Z2V0YXJnczEoYXJncywgZm9ybWF0LCAmbHZhLCBGTEFHX1NJWkVfVCk7CisgICAgcmV0dmFsID0gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7CiB9CiAKIApAQCAtMjA4LDcgKzIzMiw3IEBACiAgICAgaW50IGVuZGZtdCA9IDA7CiAgICAgY29uc3QgY2hhciAqZm9ybWF0c2F2ZSA9IGZvcm1hdDsKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKLSAgICBjaGFyICptc2c7CisgICAgY29uc3QgY2hhciAqbXNnOwogICAgIGludCBjb21wYXQgPSBmbGFncyAmIEZMQUdfQ09NUEFUOwogICAgIGZyZWVsaXN0ZW50cnlfdCBzdGF0aWNfZW50cmllc1tTVEFUSUNfRlJFRUxJU1RfRU5UUklFU107CiAgICAgZnJlZWxpc3RfdCBmcmVlbGlzdDsKQEAgLTM5NCw3ICs0MTgsMTIgQEAKICAgICAgICAgUHlPU19zbnByaW50ZihwLCBzaXplb2YoYnVmKSAtIChwIC0gYnVmKSwgIiAlLjI1NnMiLCBtc2cpOwogICAgICAgICBtZXNzYWdlID0gYnVmOwogICAgIH0KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgICBpZiAobXNnWzBdID09ICcoJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsIG1lc3NhZ2UpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7CisgICAgfQogfQogCiAKQEAgLTQxNiw3ICs0NDUsNyBAQAogICAgICAgYW5kIG1zZ2J1ZiBpcyByZXR1cm5lZC4KICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIGNvbnZlcnR0dXBsZShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgaW50IHRvcGxldmVsLAogICAgICAgICAgICAgIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQpAQCAtNDc0LDcgKzUwMyw3IEBACiAKICAgICBmb3JtYXQgPSAqcF9mb3JtYXQ7CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICBjaGFyICptc2c7CisgICAgICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgICAgIGl0ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0oYXJnLCBpKTsKICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewpAQCAtNTAxLDExICs1MzAsMTEgQEAKIAogLyogQ29udmVydCBhIHNpbmdsZSBpdGVtLiAqLwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiBjb252ZXJ0aXRlbShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKLSAgICBjaGFyICptc2c7CisgICAgY29uc3QgY2hhciAqbXNnOwogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICpwX2Zvcm1hdDsKIAogICAgIGlmICgqZm9ybWF0ID09ICcoJyAvKiAnKScgKi8pIHsKQEAgLTUzMCw3ICs1NTksNyBAQAogCiAvKiBGb3JtYXQgYW4gZXJyb3IgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgY29udmVydHNpbXBsZSgpLiAqLwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiBjb252ZXJ0ZXJyKGNvbnN0IGNoYXIgKmV4cGVjdGVkLCBQeU9iamVjdCAqYXJnLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplKQogewogICAgIGFzc2VydChleHBlY3RlZCAhPSBOVUxMKTsKQEAgLTU3Miw3ICs2MDEsNyBAQAogICAgV2hlbiB5b3UgYWRkIG5ldyBmb3JtYXQgY29kZXMsIHBsZWFzZSBkb24ndCBmb3JnZXQgcG9vciBza2lwaXRlbSgpIGJlbG93LgogKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydHNpbXBsZShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgICAgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7CkBAIC03NTIsMTQgKzc4MSwxMyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGNhc2UgJ0wnOiB7LyogUFlfTE9OR19MT05HICovCi0gICAgICAgIFBZX0xPTkdfTE9ORyAqcCA9IHZhX2FyZyggKnBfdmEsIFBZX0xPTkdfTE9ORyAqICk7Ci0gICAgICAgIFBZX0xPTkdfTE9ORyBpdmFsOworICAgIGNhc2UgJ0wnOiB7LyogbG9uZyBsb25nICovCisgICAgICAgIGxvbmcgbG9uZyAqcCA9IHZhX2FyZyggKnBfdmEsIGxvbmcgbG9uZyAqICk7CisgICAgICAgIGxvbmcgbG9uZyBpdmFsOwogICAgICAgICBpZiAoZmxvYXRfYXJndW1lbnRfZXJyb3IoYXJnKSkKICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNMb25nTG9uZyhhcmcpOwotICAgICAgICBpZiAoaXZhbCA9PSAoUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmIChpdmFsID09IChsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwID0gaXZhbDsKQEAgLTc2Nyw4ICs3OTUsOCBAQAogICAgIH0KIAogICAgIGNhc2UgJ0snOiB7IC8qIGxvbmcgbG9uZyBzaXplZCBiaXRmaWVsZCAqLwotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKnAgPSB2YV9hcmcoKnBfdmEsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKTsKLSAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGl2YWw7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAqcCA9IHZhX2FyZygqcF92YSwgdW5zaWduZWQgbG9uZyBsb25nICopOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaXZhbDsKICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKQogICAgICAgICAgICAgaXZhbCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKGFyZyk7CiAgICAgICAgIGVsc2UKQEAgLTc3Niw3ICs4MDQsNiBAQAogICAgICAgICAqcCA9IGl2YWw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSNlbmRpZgogCiAgICAgY2FzZSAnZic6IHsvKiBmbG9hdCAqLwogICAgICAgICBmbG9hdCAqcCA9IHZhX2FyZygqcF92YSwgZmxvYXQgKik7CkBAIC04NTcsNyArODg0LDcgQEAKIAogICAgIGNhc2UgJ3knOiB7LyogYW55IGJ5dGVzLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgIHZvaWQgKipwID0gKHZvaWQgKiopdmFfYXJnKCpwX3ZhLCBjaGFyICoqKTsKLSAgICAgICAgY2hhciAqYnVmOworICAgICAgICBjb25zdCBjaGFyICpidWY7CiAgICAgICAgIFB5X3NzaXplX3QgY291bnQ7CiAgICAgICAgIGlmICgqZm9ybWF0ID09ICcqJykgewogICAgICAgICAgICAgaWYgKGdldGJ1ZmZlcihhcmcsIChQeV9idWZmZXIqKXAsICZidWYpIDwgMCkKQEAgLTkwNCw3ICs5MzEsNyBAQAogICAgICAgICAgICAgICAgIFB5QnVmZmVyX0ZpbGxJbmZvKHAsIGFyZywgc2FyZywgbGVuLCAxLCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBhbnkgYnl0ZXMtbGlrZSBvYmplY3QgKi8KLSAgICAgICAgICAgICAgICBjaGFyICpidWY7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnVmOwogICAgICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCBwLCAmYnVmKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgfQpAQCAtOTM0LDcgKzk2MSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogcmVhZC1vbmx5IGJ5dGVzLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgICAgICAgICAgLyogWFhYIFJlYWxseT8gKi8KLSAgICAgICAgICAgICAgICBjaGFyICpidWY7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnVmOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQgPSBjb252ZXJ0YnVmZmVyKGFyZywgcCwgJmJ1Zik7CiAgICAgICAgICAgICAgICAgaWYgKGNvdW50IDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYnVmLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CkBAIC0xMDUxLDM1ICsxMDc4LDI1IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIihBc0NoYXJCdWZmZXIgZmFpbGVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKnU7Ci0KLSAgICAgICAgICAgIC8qIENvbnZlcnQgb2JqZWN0IHRvIFVuaWNvZGUgKi8KLSAgICAgICAgICAgIHUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChhcmcpOwotICAgICAgICAgICAgaWYgKHUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgInN0cmluZyBvciB1bmljb2RlIG9yIHRleHQgYnVmZmVyIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotCisgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7CiAgICAgICAgICAgICAvKiBFbmNvZGUgb2JqZWN0OyB1c2UgZGVmYXVsdCBlcnJvciBoYW5kbGluZyAqLwotICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodSwKKyAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKGFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodSk7CiAgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoZW5jb2RpbmcgZmFpbGVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHMpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICAiKGVuY29kZXIgZmFpbGVkIHRvIHJldHVybiBieXRlcykiLAotICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhzKSk7CiAgICAgICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShzKTsKICAgICAgICAgICAgIHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHMpOwogICAgICAgICAgICAgaWYgKHB0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHB0ciA9ICIiOwogICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCisgICAgICAgICAgICAgICAgcmVjb2RlX3N0cmluZ3MgPyAic3RyIiA6ICJzdHIsIGJ5dGVzIG9yIGJ5dGVhcnJheSIsCisgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICB9CiAKICAgICAgICAgLyogV3JpdGUgb3V0cHV0OyBvdXRwdXQgaXMgZ3VhcmFudGVlZCB0byBiZSAwLXRlcm1pbmF0ZWQgKi8KICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyMnKSB7CkBAIC0xMTI5LDcgKzExNDYsNyBAQAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoc2l6ZSArIDEgPiBCVUZGRVJfTEVOKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCBzdHJpbmcgdG9vIGxvbmcgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiglemQsIG1heGltdW0gbGVuZ3RoICV6ZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3Qpc2l6ZSwgKFB5X3NzaXplX3QpKEJVRkZFUl9MRU4tMSkpOwpAQCAtMTI4Myw3ICsxMzAwLDcgQEAKIH0KIAogc3RhdGljIFB5X3NzaXplX3QKLWNvbnZlcnRidWZmZXIoUHlPYmplY3QgKmFyZywgdm9pZCAqKnAsIGNoYXIgKiplcnJtc2cpCitjb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICphcmcsIHZvaWQgKipwLCBjb25zdCBjaGFyICoqZXJybXNnKQogewogICAgIFB5QnVmZmVyUHJvY3MgKnBiID0gUHlfVFlQRShhcmcpLT50cF9hc19idWZmZXI7CiAgICAgUHlfc3NpemVfdCBjb3VudDsKQEAgLTEzMDUsNyArMTMyMiw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWdldGJ1ZmZlcihQeU9iamVjdCAqYXJnLCBQeV9idWZmZXIgKnZpZXcsIGNoYXIgKiplcnJtc2cpCitnZXRidWZmZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICp2aWV3LCBjb25zdCBjaGFyICoqZXJybXNnKQogewogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCB2aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApIHsKICAgICAgICAgKmVycm1zZyA9ICJieXRlcy1saWtlIG9iamVjdCI7CkBAIC0xMzkxLDkgKzE0MDgsMTAgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisgICAgdmFfY29weShsdmEsIHZhKTsKIAogICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHMoYXJncywga2V5d29yZHMsIGZvcm1hdCwga3dsaXN0LCAmbHZhLCAwKTsKKyAgICB2YV9lbmQobHZhKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0xNDE1LDEwICsxNDMzLDEzOCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICB2YV9jb3B5KGx2YSwgdmEpOwogCiAgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3JkcyhhcmdzLCBrZXl3b3JkcywgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbHZhLCBGTEFHX1NJWkVfVCk7CisgICAgdmFfZW5kKGx2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLikKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAoKGFyZ3MgPT0gTlVMTCB8fCAhUHlUdXBsZV9DaGVjayhhcmdzKSkgfHwKKyAgICAgICAgKGtleXdvcmRzICE9IE5VTEwgJiYgIVB5RGljdF9DaGVjayhrZXl3b3JkcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZ2YSwgMCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitpbnQKK19QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgLi4uKQoreworICAgIGludCByZXR2YWw7CisgICAgdmFfbGlzdCB2YTsKKworICAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB8fAorICAgICAgICAoa2V5d29yZHMgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGtleXdvcmRzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIHBhcnNlcik7CisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoYXJncywga2V5d29yZHMsIHBhcnNlciwgJnZhLCBGTEFHX1NJWkVfVCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitpbnQKK19QeUFyZ19QYXJzZVN0YWNrKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKChrd25hbWVzICE9IE5VTEwgJiYgIVB5VHVwbGVfQ2hlY2soa3duYW1lcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoYXJncywgbmFyZ3MsIE5VTEwsIGt3bmFtZXMsIHBhcnNlciwgJnZhLCAwKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1BhcnNlU3RhY2tfU2l6ZVQoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLikKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAoKGt3bmFtZXMgIT0gTlVMTCAmJiAhUHlUdXBsZV9DaGVjayhrd25hbWVzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIHBhcnNlcik7CisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChhcmdzLCBuYXJncywgTlVMTCwga3duYW1lcywgcGFyc2VyLCAmdmEsIEZMQUdfU0laRV9UKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKKworaW50CitfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgdmFfbGlzdCB2YSkKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgbHZhOworCisgICAgaWYgKChhcmdzID09IE5VTEwgfHwgIVB5VHVwbGVfQ2hlY2soYXJncykpIHx8CisgICAgICAgIChrZXl3b3JkcyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa2V5d29yZHMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9jb3B5KGx2YSwgdmEpOworCisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoYXJncywga2V5d29yZHMsIHBhcnNlciwgJmx2YSwgMCk7CisgICAgdmFfZW5kKGx2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgdmFfbGlzdCB2YSkKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgbHZhOworCisgICAgaWYgKChhcmdzID09IE5VTEwgfHwgIVB5VHVwbGVfQ2hlY2soYXJncykpIHx8CisgICAgICAgIChrZXl3b3JkcyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa2V5d29yZHMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9jb3B5KGx2YSwgdmEpOworCisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoYXJncywga2V5d29yZHMsIHBhcnNlciwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZChsdmEpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTE0NDgsNyArMTU5NCw4IEBACiAgICAgY29uc3QgY2hhciAqZm5hbWUsICptc2csICpjdXN0b21fbXNnLCAqa2V5d29yZDsKICAgICBpbnQgbWluID0gSU5UX01BWDsKICAgICBpbnQgbWF4ID0gSU5UX01BWDsKLSAgICBpbnQgaSwgbGVuOworICAgIGludCBpLCBwb3MsIGxlbjsKKyAgICBpbnQgc2tpcCA9IDA7CiAgICAgUHlfc3NpemVfdCBuYXJncywgbmtleXdvcmRzOwogICAgIFB5T2JqZWN0ICpjdXJyZW50X2FyZzsKICAgICBmcmVlbGlzdGVudHJ5X3Qgc3RhdGljX2VudHJpZXNbU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVNdOwpAQCAtMTQ3Niw5ICsxNjIzLDE3IEBACiAgICAgICAgICAgICBjdXN0b21fbXNnKys7CiAgICAgfQogCisgICAgLyogc2NhbiBrd2xpc3QgYW5kIGNvdW50IHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgKi8KKyAgICBmb3IgKHBvcyA9IDA7IGt3bGlzdFtwb3NdICYmICEqa3dsaXN0W3Bvc107IHBvcysrKSB7CisgICAgfQogICAgIC8qIHNjYW4ga3dsaXN0IGFuZCBnZXQgZ3JlYXRlc3QgcG9zc2libGUgbmJyIG9mIGFyZ3MgKi8KLSAgICBmb3IgKGxlbj0wOyBrd2xpc3RbbGVuXTsgbGVuKyspCi0gICAgICAgIGNvbnRpbnVlOworICAgIGZvciAobGVuID0gcG9zOyBrd2xpc3RbbGVuXTsgbGVuKyspIHsKKyAgICAgICAgaWYgKCEqa3dsaXN0W2xlbl0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkga2V5d29yZCBwYXJhbWV0ZXIgbmFtZSIpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAobGVuID4gU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVMpIHsKICAgICAgICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIGxlbik7CkBAIC0xNTA3LDcgKzE2NjIsNyBAQAogICAgICAgICBrZXl3b3JkID0ga3dsaXN0W2ldOwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnfCcpIHsKICAgICAgICAgICAgIGlmIChtaW4gIT0gSU5UX01BWCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICh8IHNwZWNpZmllZCB0d2ljZSkiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KQEAgLTE1MTYsMTQgKzE2NzEsMTQgQEAKICAgICAgICAgICAgIGZvcm1hdCsrOwogCiAgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBiZWZvcmUgfCkiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnJCcpIHsKICAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIHNwZWNpZmllZCB0d2ljZSkiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KQEAgLTE1MzEsNiArMTY4NiwxNyBAQAogICAgICAgICAgICAgbWF4ID0gaTsKICAgICAgICAgICAgIGZvcm1hdCsrOwogCisgICAgICAgICAgICBpZiAobWF4IDwgcG9zKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkgcGFyYW1ldGVyIG5hbWUgYWZ0ZXIgJCIpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNraXApIHsKKyAgICAgICAgICAgICAgICAvKiBOb3cgd2Uga25vdyB0aGUgbWluaW1hbCBhbmQgdGhlIG1heGltYWwgbnVtYmVycyBvZgorICAgICAgICAgICAgICAgICAqIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFuZCBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGgKKyAgICAgICAgICAgICAgICAgKiBpbmZvcm1hdGl2ZSBtZXNzYWdlIChzZWUgYmVsb3cpLiAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1heCA8IG5hcmdzKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzIgpAQCAtMTU0MSw2NiArMTcwNyw5MCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIGtleXdvcmQgbGlzdCBlbnRyaWVzICglZCkgdGhhbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCBzcGVjaWZpZXJzICglZCkiLCBsZW4sIGkpOwogICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOwotICAgICAgICBpZiAobmtleXdvcmRzKSB7Ci0gICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGtleXdvcmRzLCBrZXl3b3JkKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKLSAgICAgICAgICAgIC0tbmtleXdvcmRzOwotICAgICAgICAgICAgaWYgKGkgPCBuYXJncykgewotICAgICAgICAgICAgICAgIC8qIGFyZyBwcmVzZW50IGluIHR1cGxlIGFuZCBpbiBkaWN0ICovCi0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFyZ3VtZW50IGdpdmVuIGJ5IG5hbWUgKCclcycpICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwb3NpdGlvbiAoJWQpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgaWYgKCFza2lwKSB7CisgICAgICAgICAgICBjdXJyZW50X2FyZyA9IE5VTEw7CisgICAgICAgICAgICBpZiAobmtleXdvcmRzICYmIGkgPj0gcG9zKSB7CisgICAgICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhrZXl3b3Jkcywga2V5d29yZCk7CisgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50X2FyZyAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgICAgIC0tbmtleXdvcmRzOworICAgICAgICAgICAgICAgIGlmIChpIDwgbmFyZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogYXJnIHByZXNlbnQgaW4gdHVwbGUgYW5kIGluIGRpY3QgKi8KKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJXMnKSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIHBvc2l0aW9uICglZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoaSA8IG5hcmdzKQorICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7CisgICAgICAgICAgICAgICAgbXNnID0gY29udmVydGl0ZW0oY3VycmVudF9hcmcsICZmb3JtYXQsIHBfdmEsIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgaWYgKG1zZykgeworICAgICAgICAgICAgICAgICAgICBzZXRlcnJvcihpKzEsIG1zZywgbGV2ZWxzLCBmbmFtZSwgY3VzdG9tX21zZyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGkgPCBtaW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IHBvcykgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKG1pbiA9PSBJTlRfTUFYKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChtYXggPT0gSU5UX01BWCk7CisgICAgICAgICAgICAgICAgICAgIHNraXAgPSAxOworICAgICAgICAgICAgICAgICAgICAvKiBBdCB0aGF0IG1vbWVudCB3ZSBzdGlsbCBkb24ndCBrbm93IHRoZSBtaW5pbWFsIGFuZAorICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbWF4aW1hbCBudW1iZXJzIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgUmFpc2luZworICAgICAgICAgICAgICAgICAgICAgKiBhbiBleGNlcHRpb24gaXMgZGVmZXJyZWQgdW50aWwgd2UgZW5jb3VudGVyIHwgYW5kICQKKyAgICAgICAgICAgICAgICAgICAgICogb3IgdGhlIGVuZCBvZiB0aGUgZm9ybWF0LiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlJlcXVpcmVkIGFyZ3VtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgKHBvcyAlZCkgbm90IGZvdW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCisgICAgICAgICAgICAgKiBmdWxmaWxsZWQgYW5kIG5vIGtleXdvcmQgYXJncyBsZWZ0LCB3aXRoIG5vIGZ1cnRoZXIKKyAgICAgICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPworICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIW5rZXl3b3JkcyAmJiAhc2tpcCkgeworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5rZXl3b3JkcyAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7Ci0gICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykKLSAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKLQotICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKLSAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGN1cnJlbnRfYXJnLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywKLSAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7Ci0gICAgICAgICAgICBpZiAobXNnKSB7Ci0gICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgZm5hbWUsIGN1c3RvbV9tc2cpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaSA8IG1pbikgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlJlcXVpcmVkIGFyZ3VtZW50ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyAocG9zICVkKSBub3QgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKLSAgICAgICAgfQotICAgICAgICAvKiBjdXJyZW50IGNvZGUgcmVwb3J0cyBzdWNjZXNzIHdoZW4gYWxsIHJlcXVpcmVkIGFyZ3MKLSAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCi0gICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPwotICAgICAgICAgKi8KLSAgICAgICAgaWYgKCFua2V5d29yZHMpCi0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKIAogICAgICAgICAvKiBXZSBhcmUgaW50byBvcHRpb25hbCBhcmdzLCBza2lwIHRocnUgdG8gYW55IHJlbWFpbmluZwogICAgICAgICAgKiBrZXl3b3JkIGFyZ3MgKi8KICAgICAgICAgbXNnID0gc2tpcGl0ZW0oJmZvcm1hdCwgcF92YSwgZmxhZ3MpOwogICAgICAgICBpZiAobXNnKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLCAiJXM6ICclcyciLCBtc2csCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsICIlczogJyVzJyIsIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQpOwogICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoc2tpcCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzIgorICAgICAgICAgICAgICAgICAgICAgIiAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgIChQeV9NSU4ocG9zLCBtaW4pIDwgaSkgPyAiYXQgbGVhc3QiIDogImV4YWN0bHkiLAorICAgICAgICAgICAgICAgICAgICAgUHlfTUlOKHBvcywgbWluKSwgbmFyZ3MpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICB9CisKICAgICBpZiAoIUlTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkgJiYgKCpmb3JtYXQgIT0gJ3wnKSAmJiAoKmZvcm1hdCAhPSAnJCcpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICJtb3JlIGFyZ3VtZW50IHNwZWNpZmllcnMgdGhhbiBrZXl3b3JkIGxpc3QgZW50cmllcyAiCiAgICAgICAgICAgICAiKHJlbWFpbmluZyBmb3JtYXQ6JyVzJykiLCBmb3JtYXQpOwogICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKQEAgLTE2MTgsNyArMTgwOCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwga3dsaXN0W2ldKSkgeworICAgICAgICAgICAgICAgIGlmICgqa3dsaXN0W2ldICYmICFQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksIGt3bGlzdFtpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSAxOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0xNjM3LDcgKzE4MjcsMzg4IEBACiB9CiAKIAotc3RhdGljIGNoYXIgKgorLyogTGlzdCBvZiBzdGF0aWMgcGFyc2Vycy4gKi8KK3N0YXRpYyBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqc3RhdGljX2FyZ19wYXJzZXJzID0gTlVMTDsKKworc3RhdGljIGludAorcGFyc2VyX2luaXQoc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlcikKK3sKKyAgICBjb25zdCBjaGFyICogY29uc3QgKmtleXdvcmRzOworICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgKm1zZzsKKyAgICBpbnQgaSwgbGVuLCBtaW4sIG1heCwgbmt3OworICAgIFB5T2JqZWN0ICprd3R1cGxlOworCisgICAgYXNzZXJ0KHBhcnNlci0+Zm9ybWF0ICE9IE5VTEwpOworICAgIGFzc2VydChwYXJzZXItPmtleXdvcmRzICE9IE5VTEwpOworICAgIGlmIChwYXJzZXItPmt3dHVwbGUgIT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBncmFiIHRoZSBmdW5jdGlvbiBuYW1lIG9yIGN1c3RvbSBlcnJvciBtc2cgZmlyc3QgKG11dHVhbGx5IGV4Y2x1c2l2ZSkgKi8KKyAgICBwYXJzZXItPmZuYW1lID0gc3RyY2hyKHBhcnNlci0+Zm9ybWF0LCAnOicpOworICAgIGlmIChwYXJzZXItPmZuYW1lKSB7CisgICAgICAgIHBhcnNlci0+Zm5hbWUrKzsKKyAgICAgICAgcGFyc2VyLT5jdXN0b21fbXNnID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBhcnNlci0+Y3VzdG9tX21zZyA9IHN0cmNocihwYXJzZXItPmZvcm1hdCwnOycpOworICAgICAgICBpZiAocGFyc2VyLT5jdXN0b21fbXNnKQorICAgICAgICAgICAgcGFyc2VyLT5jdXN0b21fbXNnKys7CisgICAgfQorCisgICAga2V5d29yZHMgPSBwYXJzZXItPmtleXdvcmRzOworICAgIC8qIHNjYW4ga2V5d29yZHMgYW5kIGNvdW50IHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgKi8KKyAgICBmb3IgKGkgPSAwOyBrZXl3b3Jkc1tpXSAmJiAhKmtleXdvcmRzW2ldOyBpKyspIHsKKyAgICB9CisgICAgcGFyc2VyLT5wb3MgPSBpOworICAgIC8qIHNjYW4ga2V5d29yZHMgYW5kIGdldCBncmVhdGVzdCBwb3NzaWJsZSBuYnIgb2YgYXJncyAqLworICAgIGZvciAoOyBrZXl3b3Jkc1tpXTsgaSsrKSB7CisgICAgICAgIGlmICghKmtleXdvcmRzW2ldKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IGtleXdvcmQgcGFyYW1ldGVyIG5hbWUiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGxlbiA9IGk7CisKKyAgICBtaW4gPSBtYXggPSBJTlRfTUFYOworICAgIGZvcm1hdCA9IHBhcnNlci0+Zm9ybWF0OworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBpZiAoKmZvcm1hdCA9PSAnfCcpIHsKKyAgICAgICAgICAgIGlmIChtaW4gIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAofCBzcGVjaWZpZWQgdHdpY2UpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgYmVmb3JlIHwpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtaW4gPSBpOworICAgICAgICAgICAgZm9ybWF0Kys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CisgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgc3BlY2lmaWVkIHR3aWNlKSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGkgPCBwYXJzZXItPnBvcykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IHBhcmFtZXRlciBuYW1lIGFmdGVyICQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1heCA9IGk7CisgICAgICAgICAgICBmb3JtYXQrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIGtleXdvcmQgbGlzdCBlbnRyaWVzICglZCkgdGhhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCBzcGVjaWZpZXJzICglZCkiLCBsZW4sIGkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBtc2cgPSBza2lwaXRlbSgmZm9ybWF0LCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKG1zZykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLCAiJXM6ICclcyciLCBtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHBhcnNlci0+bWluID0gUHlfTUlOKG1pbiwgbGVuKTsKKyAgICBwYXJzZXItPm1heCA9IFB5X01JTihtYXgsIGxlbik7CisKKyAgICBpZiAoIUlTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkgJiYgKCpmb3JtYXQgIT0gJ3wnKSAmJiAoKmZvcm1hdCAhPSAnJCcpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICJtb3JlIGFyZ3VtZW50IHNwZWNpZmllcnMgdGhhbiBrZXl3b3JkIGxpc3QgZW50cmllcyAiCisgICAgICAgICAgICAiKHJlbWFpbmluZyBmb3JtYXQ6JyVzJykiLCBmb3JtYXQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBua3cgPSBsZW4gLSBwYXJzZXItPnBvczsKKyAgICBrd3R1cGxlID0gUHlUdXBsZV9OZXcobmt3KTsKKyAgICBpZiAoa3d0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBrZXl3b3JkcyA9IHBhcnNlci0+a2V5d29yZHMgKyBwYXJzZXItPnBvczsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmt3OyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGtleXdvcmRzW2ldKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa3d0dXBsZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZSgmc3RyKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrd3R1cGxlLCBpLCBzdHIpOworICAgIH0KKyAgICBwYXJzZXItPmt3dHVwbGUgPSBrd3R1cGxlOworCisgICAgYXNzZXJ0KHBhcnNlci0+bmV4dCA9PSBOVUxMKTsKKyAgICBwYXJzZXItPm5leHQgPSBzdGF0aWNfYXJnX3BhcnNlcnM7CisgICAgc3RhdGljX2FyZ19wYXJzZXJzID0gcGFyc2VyOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgdm9pZAorcGFyc2VyX2NsZWFyKHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIpCit7CisgICAgUHlfQ0xFQVIocGFyc2VyLT5rd3R1cGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmluZF9rZXl3b3JkKFB5T2JqZWN0ICprd25hbWVzLCBQeU9iamVjdCAqKmt3c3RhY2ssIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfc3NpemVfdCBpLCBua3dhcmdzOworCisgICAgbmt3YXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgZm9yIChpPTA7IGkgPCBua3dhcmdzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmt3bmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oa3duYW1lcywgaSk7CisKKyAgICAgICAgLyogcHRyPT1wdHIgc2hvdWxkIG1hdGNoIGluIG1vc3QgY2FzZXMgc2luY2Uga2V5d29yZCBrZXlzCisgICAgICAgICAgIHNob3VsZCBiZSBpbnRlcm5lZCBzdHJpbmdzICovCisgICAgICAgIGlmIChrd25hbWUgPT0ga2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga3dzdGFja1tpXTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrd25hbWUpKSB7CisgICAgICAgICAgICAvKiBpZ25vcmUgbm9uLXN0cmluZyBrZXl3b3JkIGtleXM6CisgICAgICAgICAgICAgICBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZCBhYm92ZSAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVfRVEoa3duYW1lLCBrZXkpKSB7CisgICAgICAgICAgICByZXR1cm4ga3dzdGFja1tpXTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludAordmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkcywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncykKK3sKKyAgICBQeU9iamVjdCAqa3d0dXBsZTsKKyAgICBjaGFyIG1zZ2J1Zls1MTJdOworICAgIGludCBsZXZlbHNbMzJdOworICAgIGNvbnN0IGNoYXIgKmZvcm1hdDsKKyAgICBjb25zdCBjaGFyICptc2c7CisgICAgUHlPYmplY3QgKmtleXdvcmQ7CisgICAgaW50IGksIHBvcywgbGVuOworICAgIFB5X3NzaXplX3QgbmtleXdvcmRzOworICAgIFB5T2JqZWN0ICpjdXJyZW50X2FyZzsKKyAgICBmcmVlbGlzdGVudHJ5X3Qgc3RhdGljX2VudHJpZXNbU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVNdOworICAgIGZyZWVsaXN0X3QgZnJlZWxpc3Q7CisgICAgUHlPYmplY3QgKiprd3N0YWNrID0gTlVMTDsKKworICAgIGZyZWVsaXN0LmVudHJpZXMgPSBzdGF0aWNfZW50cmllczsKKyAgICBmcmVlbGlzdC5maXJzdF9hdmFpbGFibGUgPSAwOworICAgIGZyZWVsaXN0LmVudHJpZXNfbWFsbG9jZWQgPSAwOworCisgICAgYXNzZXJ0KGtleXdvcmRzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGtleXdvcmRzKSk7CisgICAgYXNzZXJ0KGt3bmFtZXMgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrKGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKGtleXdvcmRzICE9IE5VTEwgfHwga3duYW1lcyAhPSBOVUxMKQorICAgICAgICAgICB8fCAoa2V5d29yZHMgPT0gTlVMTCAmJiBrd25hbWVzID09IE5VTEwpKTsKKyAgICBhc3NlcnQocGFyc2VyICE9IE5VTEwpOworICAgIGFzc2VydChwX3ZhICE9IE5VTEwpOworCisgICAgaWYgKCFwYXJzZXJfaW5pdChwYXJzZXIpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGt3dHVwbGUgPSBwYXJzZXItPmt3dHVwbGU7CisgICAgcG9zID0gcGFyc2VyLT5wb3M7CisgICAgbGVuID0gcG9zICsgUHlUdXBsZV9HRVRfU0laRShrd3R1cGxlKTsKKworICAgIGlmIChsZW4gPiBTVEFUSUNfRlJFRUxJU1RfRU5UUklFUykgeworICAgICAgICBmcmVlbGlzdC5lbnRyaWVzID0gUHlNZW1fTkVXKGZyZWVsaXN0ZW50cnlfdCwgbGVuKTsKKyAgICAgICAgaWYgKGZyZWVsaXN0LmVudHJpZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZyZWVsaXN0LmVudHJpZXNfbWFsbG9jZWQgPSAxOworICAgIH0KKworICAgIGlmIChrZXl3b3JkcyAhPSBOVUxMKSB7CisgICAgICAgIG5rZXl3b3JkcyA9IFB5RGljdF9TaXplKGtleXdvcmRzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoa3duYW1lcyAhPSBOVUxMKSB7CisgICAgICAgIG5rZXl3b3JkcyA9IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgICAgIGt3c3RhY2sgPSBhcmdzICsgbmFyZ3M7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBua2V5d29yZHMgPSAwOworICAgIH0KKyAgICBpZiAobmFyZ3MgKyBua2V5d29yZHMgPiBsZW4pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlcyVzIHRha2VzIGF0IG1vc3QgJWQgYXJndW1lbnQlcyAoJXpkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAocGFyc2VyLT5mbmFtZSA9PSBOVUxMKSA/ICJmdW5jdGlvbiIgOiBwYXJzZXItPmZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgKHBhcnNlci0+Zm5hbWUgPT0gTlVMTCkgPyAiIiA6ICIoKSIsCisgICAgICAgICAgICAgICAgICAgICBsZW4sCisgICAgICAgICAgICAgICAgICAgICAobGVuID09IDEpID8gIiIgOiAicyIsCisgICAgICAgICAgICAgICAgICAgICBuYXJncyArIG5rZXl3b3Jkcyk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgIH0KKyAgICBpZiAocGFyc2VyLT5tYXggPCBuYXJncykgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzICglZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICAgKHBhcnNlci0+bWluICE9IElOVF9NQVgpID8gImF0IG1vc3QiIDogImV4YWN0bHkiLAorICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tYXgsIG5hcmdzKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgfQorCisgICAgZm9ybWF0ID0gcGFyc2VyLT5mb3JtYXQ7CisgICAgLyogY29udmVydCB0dXBsZSBhcmdzIGFuZCBrZXl3b3JkIGFyZ3MgaW4gc2FtZSBsb29wLCB1c2luZyBrd3R1cGxlIHRvIGRyaXZlIHByb2Nlc3MgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAga2V5d29yZCA9IChpID49IHBvcykgPyBQeVR1cGxlX0dFVF9JVEVNKGt3dHVwbGUsIGkgLSBwb3MpIDogTlVMTDsKKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJ3wnKSB7CisgICAgICAgICAgICBmb3JtYXQrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoKmZvcm1hdCA9PSAnJCcpIHsKKyAgICAgICAgICAgIGZvcm1hdCsrOworICAgICAgICB9CisgICAgICAgIGFzc2VydCghSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSk7CisKKyAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOworICAgICAgICBpZiAobmtleXdvcmRzICYmIGkgPj0gcG9zKSB7CisgICAgICAgICAgICBpZiAoa2V5d29yZHMgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlEaWN0X0dldEl0ZW0oa2V5d29yZHMsIGtleXdvcmQpOworICAgICAgICAgICAgICAgIGlmICghY3VycmVudF9hcmcgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FyZyA9IGZpbmRfa2V5d29yZChrd25hbWVzLCBrd3N0YWNrLCBrZXl3b3JkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKKyAgICAgICAgICAgIC0tbmtleXdvcmRzOworICAgICAgICAgICAgaWYgKGkgPCBuYXJncykgeworICAgICAgICAgICAgICAgIC8qIGFyZyBwcmVzZW50IGluIHR1cGxlIGFuZCBpbiBkaWN0ICovCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFyZ3VtZW50IGdpdmVuIGJ5IG5hbWUgKCclVScpICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwb3NpdGlvbiAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChpIDwgbmFyZ3MpIHsKKyAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gYXJnc1tpXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgbXNnID0gY29udmVydGl0ZW0oY3VycmVudF9hcmcsICZmb3JtYXQsIHBfdmEsIGZsYWdzLAorICAgICAgICAgICAgICAgIGxldmVscywgbXNnYnVmLCBzaXplb2YobXNnYnVmKSwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAgICAgICAgICBzZXRlcnJvcihpKzEsIG1zZywgbGV2ZWxzLCBwYXJzZXItPmZuYW1lLCBwYXJzZXItPmN1c3RvbV9tc2cpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaSA8IHBhcnNlci0+bWluKSB7CisgICAgICAgICAgICAvKiBMZXNzIGFyZ3VtZW50cyB0aGFuIHJlcXVpcmVkICovCisgICAgICAgICAgICBpZiAoaSA8IHBvcykgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X01JTihwb3MsIHBhcnNlci0+bWluKSA8IHBhcnNlci0+bWF4KSA/ICJhdCBsZWFzdCIgOiAiZXhhY3RseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X01JTihwb3MsIHBhcnNlci0+bWluKSwgbmFyZ3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlJlcXVpcmVkIGFyZ3VtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclVScgKHBvcyAlZCkgbm90IGZvdW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICB9CisgICAgICAgIC8qIGN1cnJlbnQgY29kZSByZXBvcnRzIHN1Y2Nlc3Mgd2hlbiBhbGwgcmVxdWlyZWQgYXJncworICAgICAgICAgKiBmdWxmaWxsZWQgYW5kIG5vIGtleXdvcmQgYXJncyBsZWZ0LCB3aXRoIG5vIGZ1cnRoZXIKKyAgICAgICAgICogdmFsaWRhdGlvbi4gWFhYIE1heWJlIHNraXAgdGhpcyBpbiBkZWJ1ZyBidWlsZCA/CisgICAgICAgICAqLworICAgICAgICBpZiAoIW5rZXl3b3JkcykgeworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CisgICAgICAgIH0KKworICAgICAgICAvKiBXZSBhcmUgaW50byBvcHRpb25hbCBhcmdzLCBza2lwIHRocnUgdG8gYW55IHJlbWFpbmluZworICAgICAgICAgKiBrZXl3b3JkIGFyZ3MgKi8KKyAgICAgICAgbXNnID0gc2tpcGl0ZW0oJmZvcm1hdCwgcF92YSwgZmxhZ3MpOworICAgICAgICBhc3NlcnQobXNnID09IE5VTEwpOworICAgIH0KKworICAgIGFzc2VydChJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpIHx8ICgqZm9ybWF0ID09ICd8JykgfHwgKCpmb3JtYXQgPT0gJyQnKSk7CisKKyAgICAvKiBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGV4dHJhbmVvdXMga2V5d29yZCBhcmd1bWVudHMgKi8KKyAgICBpZiAobmtleXdvcmRzID4gMCkgeworICAgICAgICBpZiAoa2V5d29yZHMgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOworICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGtleXdvcmRzLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgaW50IG1hdGNoOworICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1hdGNoID0gUHlTZXF1ZW5jZV9Db250YWlucyhrd3R1cGxlLCBrZXkpOworICAgICAgICAgICAgICAgIGlmIChtYXRjaCA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclVScgaXMgYW4gaW52YWxpZCBrZXl3b3JkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfc3NpemVfdCBqLCBua3dhcmdzOworCisgICAgICAgICAgICBua3dhcmdzID0gUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICAgICAgICAgIGZvciAoaj0wOyBqIDwgbmt3YXJnczsgaisrKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFB5VHVwbGVfR0VUX0lURU0oa3duYW1lcywgaik7CisgICAgICAgICAgICAgICAgaW50IG1hdGNoOworCisgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtYXRjaCA9IFB5U2VxdWVuY2VfQ29udGFpbnMoa3d0dXBsZSwga2V5KTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPD0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIGlzIGFuIGludmFsaWQga2V5d29yZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOworfQorCitzdGF0aWMgaW50Cit2Z2V0YXJnc2tleXdvcmRzZmFzdChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzKQoreworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuYXJnczsKKworICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CisKKyAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICByZXR1cm4gdmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChzdGFjaywgbmFyZ3MsIGtleXdvcmRzLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlciwgcF92YSwgZmxhZ3MpOworfQorCisKK3N0YXRpYyBjb25zdCBjaGFyICoKIHNraXBpdGVtKGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzKQogewogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICpwX2Zvcm1hdDsKQEAgLTE2NTgsMTAgKzIyMjksOCBAQAogICAgIGNhc2UgJ0knOiAvKiBpbnQgc2l6ZWQgYml0ZmllbGQgKi8KICAgICBjYXNlICdsJzogLyogbG9uZyBpbnQgKi8KICAgICBjYXNlICdrJzogLyogbG9uZyBpbnQgc2l6ZWQgYml0ZmllbGQgKi8KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGNhc2UgJ0wnOiAvKiBQWV9MT05HX0xPTkcgKi8KLSAgICBjYXNlICdLJzogLyogUFlfTE9OR19MT05HIHNpemVkIGJpdGZpZWxkICovCi0jZW5kaWYKKyAgICBjYXNlICdMJzogLyogbG9uZyBsb25nICovCisgICAgY2FzZSAnSyc6IC8qIGxvbmcgbG9uZyBzaXplZCBiaXRmaWVsZCAqLwogICAgIGNhc2UgJ24nOiAvKiBQeV9zc2l6ZV90ICovCiAgICAgY2FzZSAnZic6IC8qIGZsb2F0ICovCiAgICAgY2FzZSAnZCc6IC8qIGRvdWJsZSAqLwpAQCAtMTY3Myw3ICsyMjQyLDkgQEAKICAgICBjYXNlICdZJzogLyogc3RyaW5nIG9iamVjdCAqLwogICAgIGNhc2UgJ1UnOiAvKiB1bmljb2RlIHN0cmluZyBvYmplY3QgKi8KICAgICAgICAgewotICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKKyAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCB2b2lkICopOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTY4MSw3ICsyMjUyLDkgQEAKIAogICAgIGNhc2UgJ2UnOiAvKiBzdHJpbmcgd2l0aCBlbmNvZGluZyAqLwogICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOworICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNvbnN0IGNoYXIgKik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoISgqZm9ybWF0ID09ICdzJyB8fCAqZm9ybWF0ID09ICd0JykpCiAgICAgICAgICAgICAgICAgLyogYWZ0ZXIgJ2UnLCBvbmx5ICdzJyBhbmQgJ3QnIGlzIGFsbG93ZWQgKi8KICAgICAgICAgICAgICAgICBnb3RvIGVycjsKQEAgLTE2OTYsMTIgKzIyNjksMTYgQEAKICAgICBjYXNlICdaJzogLyogdW5pY29kZSBzdHJpbmcgb3IgTm9uZSAqLwogICAgIGNhc2UgJ3cnOiAvKiBidWZmZXIsIHJlYWQtd3JpdGUgKi8KICAgICAgICAgewotICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY2hhciAqKik7CisgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY2hhciAqKik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoKmZvcm1hdCA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGTEFHX1NJWkVfVCkKLSAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlfc3NpemVfdCAqKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGludCAqKTsKKyAgICAgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZMQUdfU0laRV9UKQorICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlfc3NpemVfdCAqKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgaW50ICopOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmb3JtYXQrKzsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGMgPT0gJ3MnIHx8IGMgPT0gJ3onIHx8IGMgPT0gJ3knKSAmJiAqZm9ybWF0ID09ICcqJykgewogICAgICAgICAgICAgICAgIGZvcm1hdCsrOwpAQCAtMTcxMywyNCArMjI5MCwzMCBAQAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoKmZvcm1hdCA9PSAnIScpIHsKICAgICAgICAgICAgICAgICBmb3JtYXQrKzsKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeVR5cGVPYmplY3QqKTsKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeVR5cGVPYmplY3QqKTsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKCpmb3JtYXQgPT0gJyYnKSB7CiAgICAgICAgICAgICAgICAgdHlwZWRlZiBpbnQgKCpjb252ZXJ0ZXIpKFB5T2JqZWN0ICosIHZvaWQgKik7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY29udmVydGVyKTsKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCB2b2lkICopOworICAgICAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY29udmVydGVyKTsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgIGNhc2UgJygnOiAgICAgICAgICAgLyogYnlwYXNzIHR1cGxlLCBub3QgaGFuZGxlZCBhdCBhbGwgcHJldmlvdXNseSAqLwogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICptc2c7CisgICAgICAgICAgICBjb25zdCBjaGFyICptc2c7CiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgaWYgKCpmb3JtYXQ9PScpJykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzY2LDE2ICsyMzQ5LDkgQEAKICAgICBQeU9iamVjdCAqKm87CiAgICAgdmFfbGlzdCB2YXJnczsKIAotI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKLSAgICB2YV9zdGFydCh2YXJncywgbWF4KTsKLSNlbHNlCi0gICAgdmFfc3RhcnQodmFyZ3MpOwotI2VuZGlmCi0KICAgICBhc3NlcnQobWluID49IDApOwogICAgIGFzc2VydChtaW4gPD0gbWF4KTsKICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKLSAgICAgICAgdmFfZW5kKHZhcmdzKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgIlB5QXJnX1VucGFja1R1cGxlKCkgYXJndW1lbnQgbGlzdCBpcyBub3QgYSB0dXBsZSIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE3OTMsOSArMjM2OSwxMCBAQAogICAgICAgICAgICAgICAgICJ1bnBhY2tlZCB0dXBsZSBzaG91bGQgaGF2ZSAlcyV6ZCBlbGVtZW50cywiCiAgICAgICAgICAgICAgICAgIiBidXQgaGFzICV6ZCIsCiAgICAgICAgICAgICAgICAgKG1pbiA9PSBtYXggPyAiIiA6ICJhdCBsZWFzdCAiKSwgbWluLCBsKTsKLSAgICAgICAgdmFfZW5kKHZhcmdzKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlmIChsID09IDApCisgICAgICAgIHJldHVybiAxOwogICAgIGlmIChsID4gbWF4KSB7CiAgICAgICAgIGlmIChuYW1lICE9IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCkBAIC0xODA4LDkgKzIzODUsMTQgQEAKICAgICAgICAgICAgICAgICAidW5wYWNrZWQgdHVwbGUgc2hvdWxkIGhhdmUgJXMlemQgZWxlbWVudHMsIgogICAgICAgICAgICAgICAgICIgYnV0IGhhcyAlemQiLAogICAgICAgICAgICAgICAgIChtaW4gPT0gbWF4ID8gIiIgOiAiYXQgbW9zdCAiKSwgbWF4LCBsKTsKLSAgICAgICAgdmFfZW5kKHZhcmdzKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUworICAgIHZhX3N0YXJ0KHZhcmdzLCBtYXgpOworI2Vsc2UKKyAgICB2YV9zdGFydCh2YXJncyk7CisjZW5kaWYKICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgIG8gPSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICoqKTsKICAgICAgICAgKm8gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwpAQCAtMTg2MCw2ICsyNDQyLDE5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQKK19QeUFyZ19GaW5pKHZvaWQpCit7CisgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnRtcCwgKnMgPSBzdGF0aWNfYXJnX3BhcnNlcnM7CisgICAgd2hpbGUgKHMpIHsKKyAgICAgICAgdG1wID0gcy0+bmV4dDsKKyAgICAgICAgcy0+bmV4dCA9IE5VTEw7CisgICAgICAgIHBhcnNlcl9jbGVhcihzKTsKKyAgICAgICAgcyA9IHRtcDsKKyAgICB9CisgICAgc3RhdGljX2FyZ19wYXJzZXJzID0gTlVMTDsKK30KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9QeXRob24vZ3JhbWluaXQuYyBiL1B5dGhvbi9ncmFtaW5pdC5jCmluZGV4IDgyMTJiMmEuLmYyNTg0ZTAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ncmFtaW5pdC5jCisrKyBiL1B5dGhvbi9ncmFtaW5pdC5jCkBAIC0yMDQsMTEgKzIwNCwxMyBAQAogICAgIHszMiwgN30sCiAgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzdbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfOV83WzNdID0gewogICAgIHszMCwgMTJ9LAogICAgIHszNCwgM30sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzhbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfOV84WzJdID0geworICAgIHszMiwgMTN9LAogICAgIHswLCA4fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfOV85WzJdID0gewpAQCAtMjIxLDM1ICsyMjMsMzkgQEAKICAgICB7MCwgMTB9LAogfTsKIHN0YXRpYyBhcmMgYXJjc185XzExWzNdID0gewotICAgIHszMCwgMTN9LAotICAgIHszMiwgMTR9LAorICAgIHszMCwgMTR9LAorICAgIHszMiwgMTV9LAogICAgIHswLCAxMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzlfMTJbM10gPSB7CiAgICAgezMyLCA3fSwKLSAgICB7MzEsIDE1fSwKKyAgICB7MzEsIDE2fSwKICAgICB7MCwgMTJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzEzWzJdID0gewotICAgIHszMiwgMTR9LAorc3RhdGljIGFyYyBhcmNzXzlfMTNbMV0gPSB7CiAgICAgezAsIDEzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfOV8xNFsyXSA9IHsKLSAgICB7MzAsIDE2fSwKLSAgICB7MzQsIDN9LAorICAgIHszMiwgMTV9LAorICAgIHswLCAxNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfMTVbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfOV8xNVszXSA9IHsKKyAgICB7MzAsIDE3fSwKKyAgICB7MzQsIDN9LAorICAgIHswLCAxNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzlfMTZbMV0gPSB7CiAgICAgezI2LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xNlszXSA9IHsKLSAgICB7MzIsIDE0fSwKLSAgICB7MzEsIDE3fSwKLSAgICB7MCwgMTZ9LAorc3RhdGljIGFyYyBhcmNzXzlfMTdbM10gPSB7CisgICAgezMyLCAxNX0sCisgICAgezMxLCAxOH0sCisgICAgezAsIDE3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xN1sxXSA9IHsKLSAgICB7MjYsIDEzfSwKK3N0YXRpYyBhcmMgYXJjc185XzE4WzFdID0geworICAgIHsyNiwgMTR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfOVsxOF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzlbMTldID0gewogICAgIHszLCBhcmNzXzlfMH0sCiAgICAgezMsIGFyY3NfOV8xfSwKICAgICB7MywgYXJjc185XzJ9LApAQCAtMjU3LDE3ICsyNjMsMTggQEAKICAgICB7MSwgYXJjc185XzR9LAogICAgIHs0LCBhcmNzXzlfNX0sCiAgICAgezIsIGFyY3NfOV82fSwKLSAgICB7MiwgYXJjc185Xzd9LAotICAgIHsxLCBhcmNzXzlfOH0sCisgICAgezMsIGFyY3NfOV83fSwKKyAgICB7MiwgYXJjc185Xzh9LAogICAgIHsyLCBhcmNzXzlfOX0sCiAgICAgezMsIGFyY3NfOV8xMH0sCiAgICAgezMsIGFyY3NfOV8xMX0sCiAgICAgezMsIGFyY3NfOV8xMn0sCi0gICAgezIsIGFyY3NfOV8xM30sCisgICAgezEsIGFyY3NfOV8xM30sCiAgICAgezIsIGFyY3NfOV8xNH0sCi0gICAgezEsIGFyY3NfOV8xNX0sCi0gICAgezMsIGFyY3NfOV8xNn0sCi0gICAgezEsIGFyY3NfOV8xN30sCisgICAgezMsIGFyY3NfOV8xNX0sCisgICAgezEsIGFyY3NfOV8xNn0sCisgICAgezMsIGFyY3NfOV8xN30sCisgICAgezEsIGFyY3NfOV8xOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzEwXzBbMV0gPSB7CiAgICAgezIzLCAxfSwKQEAgLTMxOSwxMSArMzI2LDEzIEBACiAgICAgezMyLCA3fSwKICAgICB7MCwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzdbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTFfN1szXSA9IHsKICAgICB7MzYsIDEyfSwKICAgICB7MzQsIDN9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfOFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xMV84WzJdID0geworICAgIHszMiwgMTN9LAogICAgIHswLCA4fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTFfOVsyXSA9IHsKQEAgLTMzNiwzNSArMzQ1LDM5IEBACiAgICAgezAsIDEwfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTFfMTFbM10gPSB7Ci0gICAgezM2LCAxM30sCi0gICAgezMyLCAxNH0sCisgICAgezM2LCAxNH0sCisgICAgezMyLCAxNX0sCiAgICAgezAsIDExfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTFfMTJbM10gPSB7CiAgICAgezMyLCA3fSwKLSAgICB7MzEsIDE1fSwKKyAgICB7MzEsIDE2fSwKICAgICB7MCwgMTJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xM1syXSA9IHsKLSAgICB7MzIsIDE0fSwKK3N0YXRpYyBhcmMgYXJjc18xMV8xM1sxXSA9IHsKICAgICB7MCwgMTN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMV8xNFsyXSA9IHsKLSAgICB7MzYsIDE2fSwKLSAgICB7MzQsIDN9LAorICAgIHszMiwgMTV9LAorICAgIHswLCAxNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzE1WzFdID0geworc3RhdGljIGFyYyBhcmNzXzExXzE1WzNdID0geworICAgIHszNiwgMTd9LAorICAgIHszNCwgM30sCisgICAgezAsIDE1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfMTZbMV0gPSB7CiAgICAgezI2LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMTZbM10gPSB7Ci0gICAgezMyLCAxNH0sCi0gICAgezMxLCAxN30sCi0gICAgezAsIDE2fSwKK3N0YXRpYyBhcmMgYXJjc18xMV8xN1szXSA9IHsKKyAgICB7MzIsIDE1fSwKKyAgICB7MzEsIDE4fSwKKyAgICB7MCwgMTd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xN1sxXSA9IHsKLSAgICB7MjYsIDEzfSwKK3N0YXRpYyBhcmMgYXJjc18xMV8xOFsxXSA9IHsKKyAgICB7MjYsIDE0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzExWzE4XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTFbMTldID0gewogICAgIHszLCBhcmNzXzExXzB9LAogICAgIHszLCBhcmNzXzExXzF9LAogICAgIHszLCBhcmNzXzExXzJ9LApAQCAtMzcyLDE3ICszODUsMTggQEAKICAgICB7MSwgYXJjc18xMV80fSwKICAgICB7NCwgYXJjc18xMV81fSwKICAgICB7MiwgYXJjc18xMV82fSwKLSAgICB7MiwgYXJjc18xMV83fSwKLSAgICB7MSwgYXJjc18xMV84fSwKKyAgICB7MywgYXJjc18xMV83fSwKKyAgICB7MiwgYXJjc18xMV84fSwKICAgICB7MiwgYXJjc18xMV85fSwKICAgICB7MywgYXJjc18xMV8xMH0sCiAgICAgezMsIGFyY3NfMTFfMTF9LAogICAgIHszLCBhcmNzXzExXzEyfSwKLSAgICB7MiwgYXJjc18xMV8xM30sCisgICAgezEsIGFyY3NfMTFfMTN9LAogICAgIHsyLCBhcmNzXzExXzE0fSwKLSAgICB7MSwgYXJjc18xMV8xNX0sCi0gICAgezMsIGFyY3NfMTFfMTZ9LAotICAgIHsxLCBhcmNzXzExXzE3fSwKKyAgICB7MywgYXJjc18xMV8xNX0sCisgICAgezEsIGFyY3NfMTFfMTZ9LAorICAgIHszLCBhcmNzXzExXzE3fSwKKyAgICB7MSwgYXJjc18xMV8xOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzEyXzBbMV0gPSB7CiAgICAgezIzLCAxfSwKQEAgLTQ0NSw1NCArNDU5LDc3IEBACiBzdGF0aWMgYXJjIGFyY3NfMTZfMFsxXSA9IHsKICAgICB7NDcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl8xWzNdID0geworc3RhdGljIGFyYyBhcmNzXzE2XzFbNF0gPSB7CiAgICAgezQ4LCAyfSwKLSAgICB7MzEsIDN9LAorICAgIHs0OSwgM30sCisgICAgezMxLCA0fSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE2XzJbMl0gPSB7Ci0gICAgezQ5LCA0fSwKLSAgICB7OSwgNH0sCitzdGF0aWMgYXJjIGFyY3NfMTZfMlsxXSA9IHsKKyAgICB7MCwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzE2XzNbMl0gPSB7Ci0gICAgezQ5LCA1fSwKKyAgICB7NTAsIDJ9LAorICAgIHs5LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTZfNFsyXSA9IHsKKyAgICB7NTAsIDV9LAogICAgIHs0NywgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE2XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKIHN0YXRpYyBhcmMgYXJjc18xNl81WzJdID0gewotICAgIHszMSwgM30sCisgICAgezMxLCA0fSwKICAgICB7MCwgNX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18xNls2XSA9IHsKICAgICB7MSwgYXJjc18xNl8wfSwKLSAgICB7MywgYXJjc18xNl8xfSwKLSAgICB7MiwgYXJjc18xNl8yfSwKKyAgICB7NCwgYXJjc18xNl8xfSwKKyAgICB7MSwgYXJjc18xNl8yfSwKICAgICB7MiwgYXJjc18xNl8zfSwKLSAgICB7MSwgYXJjc18xNl80fSwKKyAgICB7MiwgYXJjc18xNl80fSwKICAgICB7MiwgYXJjc18xNl81fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMFsyXSA9IHsKLSAgICB7MjYsIDF9LAotICAgIHs1MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTdfMFsxXSA9IHsKKyAgICB7MjcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xN18xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzE3XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTdfMlsyXSA9IHsKKyAgICB7MzEsIDN9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTdfM1sxXSA9IHsKKyAgICB7MjYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xN180WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzE3WzVdID0geworICAgIHsxLCBhcmNzXzE3XzB9LAorICAgIHsxLCBhcmNzXzE3XzF9LAorICAgIHsyLCBhcmNzXzE3XzJ9LAorICAgIHsxLCBhcmNzXzE3XzN9LAorICAgIHsxLCBhcmNzXzE3XzR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xOF8wWzJdID0geworICAgIHsyNiwgMX0sCisgICAgezUxLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMThfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMlszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xOF8yWzNdID0gewogICAgIHsyNiwgMX0sCi0gICAgezUwLCAxfSwKKyAgICB7NTEsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE3WzNdID0gewotICAgIHsyLCBhcmNzXzE3XzB9LAotICAgIHsyLCBhcmNzXzE3XzF9LAotICAgIHszLCBhcmNzXzE3XzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc18xOFszXSA9IHsKKyAgICB7MiwgYXJjc18xOF8wfSwKKyAgICB7MiwgYXJjc18xOF8xfSwKKyAgICB7MywgYXJjc18xOF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMThfMFsxM10gPSB7Ci0gICAgezUxLCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xOV8wWzEzXSA9IHsKICAgICB7NTIsIDF9LAogICAgIHs1MywgMX0sCiAgICAgezU0LCAxfSwKQEAgLTUwNSw2MCArNTQyLDUxIEBACiAgICAgezYxLCAxfSwKICAgICB7NjIsIDF9LAogICAgIHs2MywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE4XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMThbMl0gPSB7Ci0gICAgezEzLCBhcmNzXzE4XzB9LAotICAgIHsxLCBhcmNzXzE4XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOV8wWzFdID0gewogICAgIHs2NCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzE5XzFbMV0gPSB7Ci0gICAgezY1LCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMTlfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18xOVszXSA9IHsKLSAgICB7MSwgYXJjc18xOV8wfSwKLSAgICB7MSwgYXJjc18xOV8xfSwKLSAgICB7MSwgYXJjc18xOV8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjBfMFsxXSA9IHsKLSAgICB7NjYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yMF8xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzIwWzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18xOVsyXSA9IHsKKyAgICB7MTMsIGFyY3NfMTlfMH0sCisgICAgezEsIGFyY3NfMTlfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzIwXzBbMV0gPSB7CisgICAgezY1LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjBfMVsxXSA9IHsKKyAgICB7NjYsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yMF8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzIwWzNdID0gewogICAgIHsxLCBhcmNzXzIwXzB9LAogICAgIHsxLCBhcmNzXzIwXzF9LAorICAgIHsxLCBhcmNzXzIwXzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yMV8wWzVdID0geworc3RhdGljIGFyYyBhcmNzXzIxXzBbMV0gPSB7CiAgICAgezY3LCAxfSwKLSAgICB7NjgsIDF9LAotICAgIHs2OSwgMX0sCi0gICAgezcwLCAxfSwKLSAgICB7NzEsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMV8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzIxWzJdID0gewotICAgIHs1LCBhcmNzXzIxXzB9LAorICAgIHsxLCBhcmNzXzIxXzB9LAogICAgIHsxLCBhcmNzXzIxXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yMl8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzIyXzBbNV0gPSB7CisgICAgezY4LCAxfSwKKyAgICB7NjksIDF9LAorICAgIHs3MCwgMX0sCisgICAgezcxLCAxfSwKICAgICB7NzIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMl8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzIyWzJdID0gewotICAgIHsxLCBhcmNzXzIyXzB9LAorICAgIHs1LCBhcmNzXzIyXzB9LAogICAgIHsxLCBhcmNzXzIyXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yM18wWzFdID0gewpAQCAtNTc0LDE0MiArNjAyLDEzMyBAQAogc3RhdGljIGFyYyBhcmNzXzI0XzBbMV0gPSB7CiAgICAgezc0LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjRfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yNF8xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI0WzJdID0geworICAgIHsxLCBhcmNzXzI0XzB9LAorICAgIHsxLCBhcmNzXzI0XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yNV8wWzFdID0geworICAgIHs3NSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI1XzFbMl0gPSB7CiAgICAgezksIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjRfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yNV8yWzFdID0gewogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI0WzNdID0gewotICAgIHsxLCBhcmNzXzI0XzB9LAotICAgIHsyLCBhcmNzXzI0XzF9LAotICAgIHsxLCBhcmNzXzI0XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yNV8wWzFdID0gewotICAgIHs0OSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI1XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjVbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI1WzNdID0gewogICAgIHsxLCBhcmNzXzI1XzB9LAotICAgIHsxLCBhcmNzXzI1XzF9LAorICAgIHsyLCBhcmNzXzI1XzF9LAorICAgIHsxLCBhcmNzXzI1XzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yNl8wWzFdID0gewotICAgIHs3NSwgMX0sCisgICAgezUwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yNl8xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI2WzJdID0geworICAgIHsxLCBhcmNzXzI2XzB9LAorICAgIHsxLCBhcmNzXzI2XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yN18wWzFdID0geworICAgIHs3NiwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI3XzFbMl0gPSB7CiAgICAgezI2LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzJbMl0gPSB7Ci0gICAgezc2LCAzfSwKK3N0YXRpYyBhcmMgYXJjc18yN18yWzJdID0geworICAgIHs3NywgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNl8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzI3XzNbMV0gPSB7CiAgICAgezI2LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yN180WzFdID0gewogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI2WzVdID0gewotICAgIHsxLCBhcmNzXzI2XzB9LAotICAgIHsyLCBhcmNzXzI2XzF9LAotICAgIHsyLCBhcmNzXzI2XzJ9LAotICAgIHsxLCBhcmNzXzI2XzN9LAotICAgIHsxLCBhcmNzXzI2XzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc18yN1s1XSA9IHsKKyAgICB7MSwgYXJjc18yN18wfSwKKyAgICB7MiwgYXJjc18yN18xfSwKKyAgICB7MiwgYXJjc18yN18yfSwKKyAgICB7MSwgYXJjc18yN18zfSwKKyAgICB7MSwgYXJjc18yN180fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjdfMFsyXSA9IHsKLSAgICB7NzcsIDF9LAorc3RhdGljIGFyYyBhcmNzXzI4XzBbMl0gPSB7CiAgICAgezc4LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjdfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yN1syXSA9IHsKLSAgICB7MiwgYXJjc18yN18wfSwKLSAgICB7MSwgYXJjc18yN18xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfMFsxXSA9IHsKICAgICB7NzksIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yOF8xWzFdID0gewotICAgIHs4MCwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI4XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjhbM10gPSB7Ci0gICAgezEsIGFyY3NfMjhfMH0sCi0gICAgezEsIGFyY3NfMjhfMX0sCi0gICAgezEsIGFyY3NfMjhfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzBbMV0gPSB7Ci0gICAgezc2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfMVszXSA9IHsKLSAgICB7ODEsIDJ9LAotICAgIHs4MiwgMn0sCi0gICAgezEyLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfMls0XSA9IHsKLSAgICB7ODEsIDJ9LAotICAgIHs4MiwgMn0sCi0gICAgezEyLCAzfSwKLSAgICB7NzksIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8zWzFdID0gewotICAgIHs3OSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzRbM10gPSB7Ci0gICAgezMzLCA1fSwKLSAgICB7MTMsIDZ9LAotICAgIHs4MywgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzVbMV0gPSB7Ci0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV82WzFdID0gewotICAgIHs4MywgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzdbMV0gPSB7Ci0gICAgezE1LCA1fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI5WzhdID0gewotICAgIHsxLCBhcmNzXzI5XzB9LAotICAgIHszLCBhcmNzXzI5XzF9LAotICAgIHs0LCBhcmNzXzI5XzJ9LAotICAgIHsxLCBhcmNzXzI5XzN9LAotICAgIHszLCBhcmNzXzI5XzR9LAotICAgIHsxLCBhcmNzXzI5XzV9LAotICAgIHsxLCBhcmNzXzI5XzZ9LAotICAgIHsxLCBhcmNzXzI5Xzd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zMF8wWzFdID0gewotICAgIHsyMywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzMwXzFbMl0gPSB7Ci0gICAgezg1LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzMwXzJbMV0gPSB7Ci0gICAgezIzLCAzfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjhbMl0gPSB7CisgICAgezIsIGFyY3NfMjhfMH0sCisgICAgezEsIGFyY3NfMjhfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzBbMV0gPSB7CisgICAgezgwLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfMVsxXSA9IHsKKyAgICB7ODEsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI5WzNdID0geworICAgIHsxLCBhcmNzXzI5XzB9LAorICAgIHsxLCBhcmNzXzI5XzF9LAorICAgIHsxLCBhcmNzXzI5XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF8wWzFdID0geworICAgIHs3NywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzFbM10gPSB7CisgICAgezgyLCAyfSwKKyAgICB7ODMsIDJ9LAorICAgIHsxMiwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzJbNF0gPSB7CisgICAgezgyLCAyfSwKKyAgICB7ODMsIDJ9LAorICAgIHsxMiwgM30sCisgICAgezgwLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzBfM1sxXSA9IHsKLSAgICB7MCwgM30sCisgICAgezgwLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzMwWzRdID0geworc3RhdGljIGFyYyBhcmNzXzMwXzRbM10gPSB7CisgICAgezMzLCA1fSwKKyAgICB7MTMsIDZ9LAorICAgIHs4NCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzVbMV0gPSB7CisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF82WzFdID0geworICAgIHs4NCwgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzdbMV0gPSB7CisgICAgezE1LCA1fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMwWzhdID0gewogICAgIHsxLCBhcmNzXzMwXzB9LAotICAgIHsyLCBhcmNzXzMwXzF9LAotICAgIHsxLCBhcmNzXzMwXzJ9LAorICAgIHszLCBhcmNzXzMwXzF9LAorICAgIHs0LCBhcmNzXzMwXzJ9LAogICAgIHsxLCBhcmNzXzMwXzN9LAorICAgIHszLCBhcmNzXzMwXzR9LAorICAgIHsxLCBhcmNzXzMwXzV9LAorICAgIHsxLCBhcmNzXzMwXzZ9LAorICAgIHsxLCBhcmNzXzMwXzd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMV8wWzFdID0gewotICAgIHsxMiwgMX0sCisgICAgezIzLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMVsyXSA9IHsKLSAgICB7ODUsIDJ9LAorICAgIHs4NiwgMn0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMV8yWzFdID0gewpAQCAtNzI1LDM3ICs3NDQsNDUgQEAKICAgICB7MSwgYXJjc18zMV8zfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzJfMFsxXSA9IHsKLSAgICB7ODQsIDF9LAorICAgIHsxMiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMyXzFbMl0gPSB7CisgICAgezg2LCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMyXzJbMV0gPSB7CisgICAgezIzLCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzJfM1sxXSA9IHsKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18zMls0XSA9IHsKKyAgICB7MSwgYXJjc18zMl8wfSwKKyAgICB7MiwgYXJjc18zMl8xfSwKKyAgICB7MSwgYXJjc18zMl8yfSwKKyAgICB7MSwgYXJjc18zMl8zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzNfMFsxXSA9IHsKKyAgICB7ODUsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zM18xWzJdID0gewogICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zMl8yWzJdID0gewotICAgIHs4NCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMzNfMlsyXSA9IHsKKyAgICB7ODUsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzMyWzNdID0gewotICAgIHsxLCBhcmNzXzMyXzB9LAotICAgIHsyLCBhcmNzXzMyXzF9LAotICAgIHsyLCBhcmNzXzMyXzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zM18wWzFdID0gewotICAgIHs4NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzMzXzFbMl0gPSB7Ci0gICAgezMyLCAwfSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zM1syXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzNbM10gPSB7CiAgICAgezEsIGFyY3NfMzNfMH0sCiAgICAgezIsIGFyY3NfMzNfMX0sCisgICAgezIsIGFyY3NfMzNfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM0XzBbMV0gPSB7Ci0gICAgezIzLCAxfSwKKyAgICB7ODcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNF8xWzJdID0gewotICAgIHs4MSwgMH0sCisgICAgezMyLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18zNFsyXSA9IHsKQEAgLTc2MywxOSArNzkwLDE1IEBACiAgICAgezIsIGFyY3NfMzRfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM1XzBbMV0gPSB7Ci0gICAgezg3LCAxfSwKKyAgICB7MjMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zNV8xWzFdID0gewotICAgIHsyMywgMn0sCitzdGF0aWMgYXJjIGFyY3NfMzVfMVsyXSA9IHsKKyAgICB7ODIsIDB9LAorICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzVfMlsyXSA9IHsKLSAgICB7MzIsIDF9LAotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM1WzNdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18zNVsyXSA9IHsKICAgICB7MSwgYXJjc18zNV8wfSwKLSAgICB7MSwgYXJjc18zNV8xfSwKLSAgICB7MiwgYXJjc18zNV8yfSwKKyAgICB7MiwgYXJjc18zNV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzZfMFsxXSA9IHsKICAgICB7ODgsIDF9LApAQCAtNzk2LDk3ICs4MTksNzYgQEAKICAgICB7ODksIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zN18xWzFdID0gewotICAgIHsyNiwgMn0sCisgICAgezIzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzdfMlsyXSA9IHsKLSAgICB7MzIsIDN9LAorICAgIHszMiwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zN18zWzFdID0gewotICAgIHsyNiwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM3XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzdbNV0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM3WzNdID0gewogICAgIHsxLCBhcmNzXzM3XzB9LAogICAgIHsxLCBhcmNzXzM3XzF9LAogICAgIHsyLCBhcmNzXzM3XzJ9LAotICAgIHsxLCBhcmNzXzM3XzN9LAotICAgIHsxLCBhcmNzXzM3XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8wWzldID0geworc3RhdGljIGFyYyBhcmNzXzM4XzBbMV0gPSB7CiAgICAgezkwLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzhfMVsxXSA9IHsKKyAgICB7MjYsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF8yWzJdID0geworICAgIHszMiwgM30sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF8zWzFdID0geworICAgIHsyNiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzhbNV0gPSB7CisgICAgezEsIGFyY3NfMzhfMH0sCisgICAgezEsIGFyY3NfMzhfMX0sCisgICAgezIsIGFyY3NfMzhfMn0sCisgICAgezEsIGFyY3NfMzhfM30sCisgICAgezEsIGFyY3NfMzhfNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM5XzBbOV0gPSB7CiAgICAgezkxLCAxfSwKICAgICB7OTIsIDF9LAogICAgIHs5MywgMX0sCiAgICAgezk0LCAxfSwKKyAgICB7OTUsIDF9LAogICAgIHsxOSwgMX0sCiAgICAgezE4LCAxfSwKICAgICB7MTcsIDF9LAotICAgIHs5NSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzhbMl0gPSB7Ci0gICAgezksIGFyY3NfMzhfMH0sCi0gICAgezEsIGFyY3NfMzhfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzBbMV0gPSB7Ci0gICAgezIxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfMVszXSA9IHsKLSAgICB7MTksIDJ9LAotICAgIHs5NCwgMn0sCi0gICAgezkyLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zOVszXSA9IHsKLSAgICB7MSwgYXJjc18zOV8wfSwKLSAgICB7MywgYXJjc18zOV8xfSwKLSAgICB7MSwgYXJjc18zOV8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfMFsxXSA9IHsKICAgICB7OTYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MF8xWzFdID0gewotICAgIHsyNiwgMn0sCitzdGF0aWMgYXJjIGFyY3NfMzlfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18zOVsyXSA9IHsKKyAgICB7OSwgYXJjc18zOV8wfSwKKyAgICB7MSwgYXJjc18zOV8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDBfMFsxXSA9IHsKKyAgICB7MjEsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180MF8xWzNdID0geworICAgIHsxOSwgMn0sCisgICAgezk1LCAyfSwKKyAgICB7OTMsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF8yWzFdID0gewotICAgIHsyNywgM30sCisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MF8zWzFdID0gewotICAgIHsyOCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzRbM10gPSB7Ci0gICAgezk3LCAxfSwKLSAgICB7OTgsIDV9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNVsxXSA9IHsKLSAgICB7MjcsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF82WzFdID0gewotICAgIHsyOCwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDBbOF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQwWzNdID0gewogICAgIHsxLCBhcmNzXzQwXzB9LAotICAgIHsxLCBhcmNzXzQwXzF9LAorICAgIHszLCBhcmNzXzQwXzF9LAogICAgIHsxLCBhcmNzXzQwXzJ9LAotICAgIHsxLCBhcmNzXzQwXzN9LAotICAgIHszLCBhcmNzXzQwXzR9LAotICAgIHsxLCBhcmNzXzQwXzV9LAotICAgIHsxLCBhcmNzXzQwXzZ9LAotICAgIHsxLCBhcmNzXzQwXzd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV8wWzFdID0gewotICAgIHs5OSwgMX0sCisgICAgezk3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfMVsxXSA9IHsKICAgICB7MjYsIDJ9LApAQCAtODk3LDggKzg5OSw5IEBACiBzdGF0aWMgYXJjIGFyY3NfNDFfM1sxXSA9IHsKICAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MV80WzJdID0gewotICAgIHs5OCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDFfNFszXSA9IHsKKyAgICB7OTgsIDF9LAorICAgIHs5OSwgNX0sCiAgICAgezAsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV81WzFdID0gewpAQCAtOTE1LDcgKzkxOCw3IEBACiAgICAgezEsIGFyY3NfNDFfMX0sCiAgICAgezEsIGFyY3NfNDFfMn0sCiAgICAgezEsIGFyY3NfNDFfM30sCi0gICAgezIsIGFyY3NfNDFfNH0sCisgICAgezMsIGFyY3NfNDFfNH0sCiAgICAgezEsIGFyY3NfNDFfNX0sCiAgICAgezEsIGFyY3NfNDFfNn0sCiAgICAgezEsIGFyY3NfNDFfN30sCkBAIC05MjQsMjU4ICs5MjcsMjcwIEBACiAgICAgezEwMCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzFbMV0gPSB7Ci0gICAgezY1LCAyfSwKKyAgICB7MjYsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml8yWzFdID0gewotICAgIHsxMDEsIDN9LAorICAgIHsyNywgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzNbMV0gPSB7Ci0gICAgezksIDR9LAorICAgIHsyOCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQyXzRbMV0gPSB7Ci0gICAgezI3LCA1fSwKK3N0YXRpYyBhcmMgYXJjc180Ml80WzJdID0geworICAgIHs5OSwgNX0sCisgICAgezAsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml81WzFdID0gewotICAgIHsyOCwgNn0sCisgICAgezI3LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDJfNlsyXSA9IHsKLSAgICB7OTgsIDd9LAotICAgIHswLCA2fSwKK3N0YXRpYyBhcmMgYXJjc180Ml82WzFdID0geworICAgIHsyOCwgN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzdbMV0gPSB7Ci0gICAgezI3LCA4fSwKKyAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQyXzhbMV0gPSB7Ci0gICAgezI4LCA5fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDJfOVsxXSA9IHsKLSAgICB7MCwgOX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180MlsxMF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQyWzhdID0gewogICAgIHsxLCBhcmNzXzQyXzB9LAogICAgIHsxLCBhcmNzXzQyXzF9LAogICAgIHsxLCBhcmNzXzQyXzJ9LAogICAgIHsxLCBhcmNzXzQyXzN9LAotICAgIHsxLCBhcmNzXzQyXzR9LAorICAgIHsyLCBhcmNzXzQyXzR9LAogICAgIHsxLCBhcmNzXzQyXzV9LAotICAgIHsyLCBhcmNzXzQyXzZ9LAorICAgIHsxLCBhcmNzXzQyXzZ9LAogICAgIHsxLCBhcmNzXzQyXzd9LAotICAgIHsxLCBhcmNzXzQyXzh9LAotICAgIHsxLCBhcmNzXzQyXzl9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M18wWzFdID0gewotICAgIHsxMDIsIDF9LAorICAgIHsxMDEsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M18xWzFdID0gewotICAgIHsyNywgMn0sCisgICAgezY2LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfMlsxXSA9IHsKLSAgICB7MjgsIDN9LAorICAgIHsxMDIsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180M18zWzJdID0gewotICAgIHsxMDMsIDR9LAotICAgIHsxMDQsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQzXzNbMV0gPSB7CisgICAgezksIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M180WzFdID0gewotICAgIHsyNywgNn0sCisgICAgezI3LCA1fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfNVsxXSA9IHsKLSAgICB7MjcsIDd9LAorICAgIHsyOCwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzZbMV0gPSB7Ci0gICAgezI4LCA4fSwKK3N0YXRpYyBhcmMgYXJjc180M182WzJdID0geworICAgIHs5OSwgN30sCisgICAgezAsIDZ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M183WzFdID0gewotICAgIHsyOCwgOX0sCisgICAgezI3LCA4fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfOFs0XSA9IHsKLSAgICB7MTAzLCA0fSwKLSAgICB7OTgsIDEwfSwKLSAgICB7MTA0LCA1fSwKLSAgICB7MCwgOH0sCitzdGF0aWMgYXJjIGFyY3NfNDNfOFsxXSA9IHsKKyAgICB7MjgsIDl9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M185WzFdID0gewogICAgIHswLCA5fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfMTBbMV0gPSB7Ci0gICAgezI3LCAxMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQzXzExWzFdID0gewotICAgIHsyOCwgMTJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180M18xMlsyXSA9IHsKLSAgICB7MTA0LCA1fSwKLSAgICB7MCwgMTJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDNbMTNdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180M1sxMF0gPSB7CiAgICAgezEsIGFyY3NfNDNfMH0sCiAgICAgezEsIGFyY3NfNDNfMX0sCiAgICAgezEsIGFyY3NfNDNfMn0sCi0gICAgezIsIGFyY3NfNDNfM30sCisgICAgezEsIGFyY3NfNDNfM30sCiAgICAgezEsIGFyY3NfNDNfNH0sCiAgICAgezEsIGFyY3NfNDNfNX0sCi0gICAgezEsIGFyY3NfNDNfNn0sCisgICAgezIsIGFyY3NfNDNfNn0sCiAgICAgezEsIGFyY3NfNDNfN30sCi0gICAgezQsIGFyY3NfNDNfOH0sCisgICAgezEsIGFyY3NfNDNfOH0sCiAgICAgezEsIGFyY3NfNDNfOX0sCi0gICAgezEsIGFyY3NfNDNfMTB9LAotICAgIHsxLCBhcmNzXzQzXzExfSwKLSAgICB7MiwgYXJjc180M18xMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ0XzBbMV0gPSB7Ci0gICAgezEwNSwgMX0sCisgICAgezEwMywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ0XzFbMV0gPSB7Ci0gICAgezEwNiwgMn0sCisgICAgezI3LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDRfMlsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180NF8yWzFdID0geworICAgIHsyOCwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzNbMl0gPSB7CisgICAgezEwNCwgNH0sCisgICAgezEwNSwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzRbMV0gPSB7CisgICAgezI3LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfNVsxXSA9IHsKKyAgICB7MjcsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF82WzFdID0geworICAgIHsyOCwgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzdbMV0gPSB7CisgICAgezI4LCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfOFs0XSA9IHsKKyAgICB7MTA0LCA0fSwKKyAgICB7OTksIDEwfSwKKyAgICB7MTA1LCA1fSwKKyAgICB7MCwgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzlbMV0gPSB7CisgICAgezAsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF8xMFsxXSA9IHsKKyAgICB7MjcsIDExfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfMTFbMV0gPSB7CisgICAgezI4LCAxMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzEyWzJdID0geworICAgIHsxMDUsIDV9LAorICAgIHswLCAxMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180NFsxM10gPSB7CisgICAgezEsIGFyY3NfNDRfMH0sCisgICAgezEsIGFyY3NfNDRfMX0sCisgICAgezEsIGFyY3NfNDRfMn0sCisgICAgezIsIGFyY3NfNDRfM30sCisgICAgezEsIGFyY3NfNDRfNH0sCisgICAgezEsIGFyY3NfNDRfNX0sCisgICAgezEsIGFyY3NfNDRfNn0sCisgICAgezEsIGFyY3NfNDRfN30sCisgICAgezQsIGFyY3NfNDRfOH0sCisgICAgezEsIGFyY3NfNDRfOX0sCisgICAgezEsIGFyY3NfNDRfMTB9LAorICAgIHsxLCBhcmNzXzQ0XzExfSwKKyAgICB7MiwgYXJjc180NF8xMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ1XzBbMV0gPSB7CisgICAgezEwNiwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ1XzFbMV0gPSB7CisgICAgezEwNywgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ1XzJbMl0gPSB7CiAgICAgezMyLCAxfSwKICAgICB7MjcsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NF8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ1XzNbMV0gPSB7CiAgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDRfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180NV80WzFdID0gewogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ0WzVdID0gewotICAgIHsxLCBhcmNzXzQ0XzB9LAotICAgIHsxLCBhcmNzXzQ0XzF9LAotICAgIHsyLCBhcmNzXzQ0XzJ9LAotICAgIHsxLCBhcmNzXzQ0XzN9LAotICAgIHsxLCBhcmNzXzQ0XzR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8wWzFdID0gewotICAgIHsyNiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ1XzFbMl0gPSB7Ci0gICAgezg1LCAyfSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ1XzJbMV0gPSB7Ci0gICAgezEwNywgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ1XzNbMV0gPSB7Ci0gICAgezAsIDN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDVbNF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ1WzVdID0gewogICAgIHsxLCBhcmNzXzQ1XzB9LAotICAgIHsyLCBhcmNzXzQ1XzF9LAotICAgIHsxLCBhcmNzXzQ1XzJ9LAorICAgIHsxLCBhcmNzXzQ1XzF9LAorICAgIHsyLCBhcmNzXzQ1XzJ9LAogICAgIHsxLCBhcmNzXzQ1XzN9LAorICAgIHsxLCBhcmNzXzQ1XzR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Nl8wWzFdID0gewotICAgIHsxMDgsIDF9LAorICAgIHsyNiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ2XzFbMl0gPSB7CisgICAgezg2LCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ2XzJbMV0gPSB7CisgICAgezEwOCwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ2XzNbMV0gPSB7CisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDZbNF0gPSB7CisgICAgezEsIGFyY3NfNDZfMH0sCisgICAgezIsIGFyY3NfNDZfMX0sCisgICAgezEsIGFyY3NfNDZfMn0sCisgICAgezEsIGFyY3NfNDZfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ3XzBbMV0gPSB7CisgICAgezEwOSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ3XzFbMl0gPSB7CiAgICAgezI2LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzJbMl0gPSB7Ci0gICAgezg1LCAzfSwKK3N0YXRpYyBhcmMgYXJjc180N18yWzJdID0geworICAgIHs4NiwgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ3XzNbMV0gPSB7CiAgICAgezIzLCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180N180WzFdID0gewogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ2WzVdID0gewotICAgIHsxLCBhcmNzXzQ2XzB9LAotICAgIHsyLCBhcmNzXzQ2XzF9LAotICAgIHsyLCBhcmNzXzQ2XzJ9LAotICAgIHsxLCBhcmNzXzQ2XzN9LAotICAgIHsxLCBhcmNzXzQ2XzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc180N1s1XSA9IHsKKyAgICB7MSwgYXJjc180N18wfSwKKyAgICB7MiwgYXJjc180N18xfSwKKyAgICB7MiwgYXJjc180N18yfSwKKyAgICB7MSwgYXJjc180N18zfSwKKyAgICB7MSwgYXJjc180N180fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfMFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180OF8wWzJdID0gewogICAgIHszLCAxfSwKICAgICB7MiwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ3XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180N18yWzFdID0gewotICAgIHsxMDksIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180N18zWzFdID0gewotICAgIHs2LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfNFsyXSA9IHsKLSAgICB7NiwgNH0sCi0gICAgezExMCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180N1s1XSA9IHsKLSAgICB7MiwgYXJjc180N18wfSwKLSAgICB7MSwgYXJjc180N18xfSwKLSAgICB7MSwgYXJjc180N18yfSwKLSAgICB7MSwgYXJjc180N18zfSwKLSAgICB7MiwgYXJjc180N180fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDhfMFsyXSA9IHsKLSAgICB7MTExLCAxfSwKLSAgICB7MTEyLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDhfMVsyXSA9IHsKLSAgICB7OTYsIDN9LAorc3RhdGljIGFyYyBhcmNzXzQ4XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180OF8yWzFdID0gewotICAgIHswLCAyfSwKKyAgICB7MTEwLCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDhfM1sxXSA9IHsKLSAgICB7MTExLCA0fSwKKyAgICB7NiwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ4XzRbMV0gPSB7Ci0gICAgezk4LCA1fSwKK3N0YXRpYyBhcmMgYXJjc180OF80WzJdID0geworICAgIHs2LCA0fSwKKyAgICB7MTExLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDhfNVsxXSA9IHsKLSAgICB7MjYsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDhbNl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ4WzVdID0gewogICAgIHsyLCBhcmNzXzQ4XzB9LAotICAgIHsyLCBhcmNzXzQ4XzF9LAorICAgIHsxLCBhcmNzXzQ4XzF9LAogICAgIHsxLCBhcmNzXzQ4XzJ9LAogICAgIHsxLCBhcmNzXzQ4XzN9LAotICAgIHsxLCBhcmNzXzQ4XzR9LAotICAgIHsxLCBhcmNzXzQ4XzV9LAorICAgIHsyLCBhcmNzXzQ4XzR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180OV8wWzJdID0gewotICAgIHsxMTEsIDF9LAotICAgIHsxMTQsIDF9LAorICAgIHsxMTIsIDF9LAorICAgIHsxMTMsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OV8xWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ5XzFbMl0gPSB7CisgICAgezk3LCAzfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180OVsyXSA9IHsKLSAgICB7MiwgYXJjc180OV8wfSwKLSAgICB7MSwgYXJjc180OV8xfSwKK3N0YXRpYyBhcmMgYXJjc180OV8yWzFdID0geworICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180OV8zWzFdID0geworICAgIHsxMTIsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180OV80WzFdID0geworICAgIHs5OSwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ5XzVbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ5WzZdID0geworICAgIHsyLCBhcmNzXzQ5XzB9LAorICAgIHsyLCBhcmNzXzQ5XzF9LAorICAgIHsxLCBhcmNzXzQ5XzJ9LAorICAgIHsxLCBhcmNzXzQ5XzN9LAorICAgIHsxLCBhcmNzXzQ5XzR9LAorICAgIHsxLCBhcmNzXzQ5XzV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MF8wWzJdID0geworICAgIHsxMTIsIDF9LAogICAgIHsxMTUsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181MF8xWzJdID0gewotICAgIHszNSwgMn0sCi0gICAgezI3LCAzfSwKK3N0YXRpYyBhcmMgYXJjc181MF8xWzFdID0geworICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfMlsxXSA9IHsKLSAgICB7MjcsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MF8zWzFdID0gewotICAgIHsyNiwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzUwXzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTBbNV0gPSB7Ci0gICAgezEsIGFyY3NfNTBfMH0sCi0gICAgezIsIGFyY3NfNTBfMX0sCi0gICAgezEsIGFyY3NfNTBfMn0sCi0gICAgezEsIGFyY3NfNTBfM30sCi0gICAgezEsIGFyY3NfNTBfNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzUwWzJdID0geworICAgIHsyLCBhcmNzXzUwXzB9LAorICAgIHsxLCBhcmNzXzUwXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181MV8wWzFdID0gewotICAgIHsxMTUsIDF9LAorICAgIHsxMTYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181MV8xWzJdID0gewogICAgIHszNSwgMn0sCkBAIC0xMTg1LDcgKzEyMDAsNyBAQAogICAgIHsyNywgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUxXzNbMV0gPSB7Ci0gICAgezExMywgNH0sCisgICAgezI2LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTFfNFsxXSA9IHsKICAgICB7MCwgNH0sCkBAIC0xMjAxLDEwOCArMTIxNiwxMjAgQEAKICAgICB7MTE2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTJfMVsyXSA9IHsKLSAgICB7MTE3LCAwfSwKLSAgICB7MCwgMX0sCisgICAgezM1LCAyfSwKKyAgICB7MjcsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTJbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTJfMlsxXSA9IHsKKyAgICB7MjcsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181Ml8zWzFdID0geworICAgIHsxMTQsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181Ml80WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzUyWzVdID0gewogICAgIHsxLCBhcmNzXzUyXzB9LAogICAgIHsyLCBhcmNzXzUyXzF9LAorICAgIHsxLCBhcmNzXzUyXzJ9LAorICAgIHsxLCBhcmNzXzUyXzN9LAorICAgIHsxLCBhcmNzXzUyXzR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181M18wWzFdID0gewotICAgIHsxMTgsIDF9LAorICAgIHsxMTcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181M18xWzJdID0gewotICAgIHsxMTksIDB9LAorICAgIHsxMTgsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzUzWzJdID0gewogICAgIHsxLCBhcmNzXzUzXzB9LAogICAgIHsyLCBhcmNzXzUzXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181NF8wWzJdID0gewotICAgIHsxMjAsIDF9LAotICAgIHsxMjEsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzU0XzBbMV0gPSB7CisgICAgezExOSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzFbMV0gPSB7Ci0gICAgezExOCwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU0XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTRbM10gPSB7Ci0gICAgezIsIGFyY3NfNTRfMH0sCi0gICAgezEsIGFyY3NfNTRfMX0sCi0gICAgezEsIGFyY3NfNTRfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU1XzBbMV0gPSB7Ci0gICAgezEwNywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU1XzFbMl0gPSB7Ci0gICAgezEyMiwgMH0sCitzdGF0aWMgYXJjIGFyY3NfNTRfMVsyXSA9IHsKKyAgICB7MTIwLCAwfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181NVsyXSA9IHsKLSAgICB7MSwgYXJjc181NV8wfSwKLSAgICB7MiwgYXJjc181NV8xfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTRbMl0gPSB7CisgICAgezEsIGFyY3NfNTRfMH0sCisgICAgezIsIGFyY3NfNTRfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU2XzBbMTBdID0gewotICAgIHsxMjMsIDF9LAorc3RhdGljIGFyYyBhcmNzXzU1XzBbMl0gPSB7CisgICAgezEyMSwgMX0sCisgICAgezEyMiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU1XzFbMV0gPSB7CisgICAgezExOSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU1XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTVbM10gPSB7CisgICAgezIsIGFyY3NfNTVfMH0sCisgICAgezEsIGFyY3NfNTVfMX0sCisgICAgezEsIGFyY3NfNTVfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU2XzBbMV0gPSB7CisgICAgezEwOCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU2XzFbMl0gPSB7CisgICAgezEyMywgMH0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTZbMl0gPSB7CisgICAgezEsIGFyY3NfNTZfMH0sCisgICAgezIsIGFyY3NfNTZfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU3XzBbMTBdID0gewogICAgIHsxMjQsIDF9LAogICAgIHsxMjUsIDF9LAogICAgIHsxMjYsIDF9LAogICAgIHsxMjcsIDF9LAogICAgIHsxMjgsIDF9LAogICAgIHsxMjksIDF9LAotICAgIHsxMDEsIDF9LAotICAgIHsxMjAsIDJ9LAotICAgIHsxMzAsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181Nl8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMlsxXSA9IHsKLSAgICB7MTAxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfM1syXSA9IHsKLSAgICB7MTIwLCAxfSwKLSAgICB7MCwgM30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181Nls0XSA9IHsKLSAgICB7MTAsIGFyY3NfNTZfMH0sCi0gICAgezEsIGFyY3NfNTZfMX0sCi0gICAgezEsIGFyY3NfNTZfMn0sCi0gICAgezIsIGFyY3NfNTZfM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzU3XzBbMV0gPSB7Ci0gICAgezMzLCAxfSwKKyAgICB7MTMwLCAxfSwKKyAgICB7MTAyLCAxfSwKKyAgICB7MTIxLCAyfSwKKyAgICB7MTMxLCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTdfMVsxXSA9IHsKLSAgICB7MTA3LCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTdfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181N1szXSA9IHsKLSAgICB7MSwgYXJjc181N18wfSwKLSAgICB7MSwgYXJjc181N18xfSwKLSAgICB7MSwgYXJjc181N18yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNThfMFsxXSA9IHsKLSAgICB7MTMxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNThfMVsyXSA9IHsKLSAgICB7MTMyLCAwfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181OFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181N18yWzFdID0geworICAgIHsxMDIsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181N18zWzJdID0geworICAgIHsxMjEsIDF9LAorICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU3WzRdID0geworICAgIHsxMCwgYXJjc181N18wfSwKKyAgICB7MSwgYXJjc181N18xfSwKKyAgICB7MSwgYXJjc181N18yfSwKKyAgICB7MiwgYXJjc181N18zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNThfMFsxXSA9IHsKKyAgICB7MzMsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181OF8xWzFdID0geworICAgIHsxMDgsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181OF8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU4WzNdID0gewogICAgIHsxLCBhcmNzXzU4XzB9LAotICAgIHsyLCBhcmNzXzU4XzF9LAorICAgIHsxLCBhcmNzXzU4XzF9LAorICAgIHsxLCBhcmNzXzU4XzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181OV8wWzFdID0gewotICAgIHsxMzMsIDF9LAorICAgIHsxMzIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181OV8xWzJdID0gewotICAgIHsxMzQsIDB9LAorICAgIHsxMzMsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzU5WzJdID0gewpAQCAtMTMxMCwxMCArMTMzNywxMCBAQAogICAgIHsyLCBhcmNzXzU5XzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182MF8wWzFdID0gewotICAgIHsxMzUsIDF9LAorICAgIHsxMzQsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182MF8xWzJdID0gewotICAgIHsxMzYsIDB9LAorICAgIHsxMzUsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYwWzJdID0gewpAQCAtMTMyMSwyMyArMTM0OCwyMiBAQAogICAgIHsyLCBhcmNzXzYwXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182MV8wWzFdID0gewotICAgIHsxMzcsIDF9LAorICAgIHsxMzYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182MV8xWzNdID0gewotICAgIHsxMzgsIDB9LAotICAgIHsxMzksIDB9LAorc3RhdGljIGFyYyBhcmNzXzYxXzFbMl0gPSB7CisgICAgezEzNywgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjFbMl0gPSB7CiAgICAgezEsIGFyY3NfNjFfMH0sCi0gICAgezMsIGFyY3NfNjFfMX0sCisgICAgezIsIGFyY3NfNjFfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYyXzBbMV0gPSB7Ci0gICAgezE0MCwgMX0sCisgICAgezEzOCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYyXzFbM10gPSB7Ci0gICAgezE0MSwgMH0sCi0gICAgezE0MiwgMH0sCisgICAgezEzOSwgMH0sCisgICAgezE0MCwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjJbMl0gPSB7CkBAIC0xMzQ1LDUyOCArMTM3MSw1NDUgQEAKICAgICB7MywgYXJjc182Ml8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjNfMFsxXSA9IHsKLSAgICB7MTQzLCAxfSwKKyAgICB7MTQxLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjNfMVs2XSA9IHsKLSAgICB7MzMsIDB9LAotICAgIHsxMSwgMH0sCi0gICAgezE0NCwgMH0sCi0gICAgezE0NSwgMH0sCi0gICAgezE0NiwgMH0sCitzdGF0aWMgYXJjIGFyY3NfNjNfMVszXSA9IHsKKyAgICB7MTQyLCAwfSwKKyAgICB7MTQzLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182M1syXSA9IHsKICAgICB7MSwgYXJjc182M18wfSwKLSAgICB7NiwgYXJjc182M18xfSwKKyAgICB7MywgYXJjc182M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMFs0XSA9IHsKLSAgICB7MTQxLCAxfSwKK3N0YXRpYyBhcmMgYXJjc182NF8wWzFdID0geworICAgIHsxNDQsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182NF8xWzZdID0geworICAgIHszMywgMH0sCisgICAgezExLCAwfSwKKyAgICB7MTQ1LCAwfSwKKyAgICB7MTQ2LCAwfSwKKyAgICB7MTQ3LCAwfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc182NFsyXSA9IHsKKyAgICB7MSwgYXJjc182NF8wfSwKKyAgICB7NiwgYXJjc182NF8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjVfMFs0XSA9IHsKICAgICB7MTQyLCAxfSwKLSAgICB7MTQ3LCAxfSwKLSAgICB7MTQ4LCAyfSwKKyAgICB7MTQzLCAxfSwKKyAgICB7MTQ4LCAxfSwKKyAgICB7MTQ5LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMVsxXSA9IHsKLSAgICB7MTQzLCAyfSwKK3N0YXRpYyBhcmMgYXJjc182NV8xWzFdID0geworICAgIHsxNDQsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NF8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzY1XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjRbM10gPSB7Ci0gICAgezQsIGFyY3NfNjRfMH0sCi0gICAgezEsIGFyY3NfNjRfMX0sCi0gICAgezEsIGFyY3NfNjRfMn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY1WzNdID0geworICAgIHs0LCBhcmNzXzY1XzB9LAorICAgIHsxLCBhcmNzXzY1XzF9LAorICAgIHsxLCBhcmNzXzY1XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8wWzFdID0gewotICAgIHsxNDksIDF9LAorc3RhdGljIGFyYyBhcmNzXzY2XzBbMV0gPSB7CisgICAgezE1MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjZfMVsyXSA9IHsKICAgICB7MzQsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfMlsxXSA9IHsKLSAgICB7MTQzLCAzfSwKK3N0YXRpYyBhcmMgYXJjc182Nl8yWzFdID0geworICAgIHsxNDQsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzY2XzNbMV0gPSB7CiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjVbNF0gPSB7Ci0gICAgezEsIGFyY3NfNjVfMH0sCi0gICAgezIsIGFyY3NfNjVfMX0sCi0gICAgezEsIGFyY3NfNjVfMn0sCi0gICAgezEsIGFyY3NfNjVfM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY2WzRdID0geworICAgIHsxLCBhcmNzXzY2XzB9LAorICAgIHsyLCBhcmNzXzY2XzF9LAorICAgIHsxLCBhcmNzXzY2XzJ9LAorICAgIHsxLCBhcmNzXzY2XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8wWzJdID0gewotICAgIHsxNTAsIDF9LAotICAgIHsxNTEsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8xWzFdID0gewotICAgIHsxNTEsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8yWzJdID0geworc3RhdGljIGFyYyBhcmNzXzY3XzBbMl0gPSB7CisgICAgezE1MSwgMX0sCiAgICAgezE1MiwgMn0sCi0gICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjZbM10gPSB7Ci0gICAgezIsIGFyY3NfNjZfMH0sCi0gICAgezEsIGFyY3NfNjZfMX0sCi0gICAgezIsIGFyY3NfNjZfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzBbMTBdID0gewotICAgIHsxMywgMX0sCi0gICAgezE1NCwgMn0sCi0gICAgezE1NiwgM30sCi0gICAgezIzLCA0fSwKLSAgICB7MTU5LCA0fSwKLSAgICB7MTYwLCA1fSwKLSAgICB7ODIsIDR9LAotICAgIHsxNjEsIDR9LAotICAgIHsxNjIsIDR9LAotICAgIHsxNjMsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N18xWzNdID0gewotICAgIHs0OSwgNn0sCi0gICAgezE1MywgNn0sCi0gICAgezE1LCA0fSwKK3N0YXRpYyBhcmMgYXJjc182N18xWzFdID0geworICAgIHsxNTIsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182N18yWzJdID0gewotICAgIHsxNTMsIDd9LAotICAgIHsxNTUsIDR9LAorICAgIHsxNTMsIDJ9LAorICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfM1syXSA9IHsKLSAgICB7MTU3LCA4fSwKLSAgICB7MTU4LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzVbMl0gPSB7Ci0gICAgezE2MCwgNX0sCi0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N182WzFdID0gewotICAgIHsxNSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzdbMV0gPSB7Ci0gICAgezE1NSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzhbMV0gPSB7Ci0gICAgezE1OCwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc182N1s5XSA9IHsKLSAgICB7MTAsIGFyY3NfNjdfMH0sCi0gICAgezMsIGFyY3NfNjdfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY3WzNdID0geworICAgIHsyLCBhcmNzXzY3XzB9LAorICAgIHsxLCBhcmNzXzY3XzF9LAogICAgIHsyLCBhcmNzXzY3XzJ9LAotICAgIHsyLCBhcmNzXzY3XzN9LAotICAgIHsxLCBhcmNzXzY3XzR9LAotICAgIHsyLCBhcmNzXzY3XzV9LAotICAgIHsxLCBhcmNzXzY3XzZ9LAotICAgIHsxLCBhcmNzXzY3Xzd9LAotICAgIHsxLCBhcmNzXzY3Xzh9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF8wWzJdID0gewotICAgIHsyNiwgMX0sCi0gICAgezUwLCAxfSwKK3N0YXRpYyBhcmMgYXJjc182OF8wWzEwXSA9IHsKKyAgICB7MTMsIDF9LAorICAgIHsxNTUsIDJ9LAorICAgIHsxNTcsIDN9LAorICAgIHsyMywgNH0sCisgICAgezE2MCwgNH0sCisgICAgezE2MSwgNX0sCisgICAgezgzLCA0fSwKKyAgICB7MTYyLCA0fSwKKyAgICB7MTYzLCA0fSwKKyAgICB7MTY0LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjhfMVszXSA9IHsKLSAgICB7MTY0LCAyfSwKKyAgICB7NTAsIDZ9LAorICAgIHsxNTQsIDZ9LAorICAgIHsxNSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzJbMl0gPSB7CisgICAgezE1NCwgN30sCisgICAgezE1NiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzNbMl0gPSB7CisgICAgezE1OCwgOH0sCisgICAgezE1OSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF81WzJdID0geworICAgIHsxNjEsIDV9LAorICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfNlsxXSA9IHsKKyAgICB7MTUsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF83WzFdID0geworICAgIHsxNTYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF84WzFdID0geworICAgIHsxNTksIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjhbOV0gPSB7CisgICAgezEwLCBhcmNzXzY4XzB9LAorICAgIHszLCBhcmNzXzY4XzF9LAorICAgIHsyLCBhcmNzXzY4XzJ9LAorICAgIHsyLCBhcmNzXzY4XzN9LAorICAgIHsxLCBhcmNzXzY4XzR9LAorICAgIHsyLCBhcmNzXzY4XzV9LAorICAgIHsxLCBhcmNzXzY4XzZ9LAorICAgIHsxLCBhcmNzXzY4Xzd9LAorICAgIHsxLCBhcmNzXzY4Xzh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OV8wWzJdID0geworICAgIHsyNiwgMX0sCisgICAgezUxLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjlfMVszXSA9IHsKKyAgICB7MTY1LCAyfSwKICAgICB7MzIsIDN9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182OV8yWzFdID0gewogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfM1szXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182OV8zWzNdID0gewogICAgIHsyNiwgNH0sCi0gICAgezUwLCA0fSwKKyAgICB7NTEsIDR9LAogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfNFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182OV80WzJdID0gewogICAgIHszMiwgM30sCiAgICAgezAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjhbNV0gPSB7Ci0gICAgezIsIGFyY3NfNjhfMH0sCi0gICAgezMsIGFyY3NfNjhfMX0sCi0gICAgezEsIGFyY3NfNjhfMn0sCi0gICAgezMsIGFyY3NfNjhfM30sCi0gICAgezIsIGFyY3NfNjhfNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY5WzVdID0geworICAgIHsyLCBhcmNzXzY5XzB9LAorICAgIHszLCBhcmNzXzY5XzF9LAorICAgIHsxLCBhcmNzXzY5XzJ9LAorICAgIHszLCBhcmNzXzY5XzN9LAorICAgIHsyLCBhcmNzXzY5XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8wWzNdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzBbM10gPSB7CiAgICAgezEzLCAxfSwKLSAgICB7MTU0LCAyfSwKLSAgICB7ODEsIDN9LAorICAgIHsxNTUsIDJ9LAorICAgIHs4MiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfMVsyXSA9IHsKICAgICB7MTQsIDR9LAogICAgIHsxNSwgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzJbMV0gPSB7Ci0gICAgezE2NSwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNzBfMlsxXSA9IHsKKyAgICB7MTY2LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF8zWzFdID0gewogICAgIHsyMywgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfNFsxXSA9IHsKICAgICB7MTUsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV81WzFdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzVbMV0gPSB7CiAgICAgezAsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV82WzFdID0gewotICAgIHsxNTUsIDV9LAorc3RhdGljIGFyYyBhcmNzXzcwXzZbMV0gPSB7CisgICAgezE1NiwgNX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182OVs3XSA9IHsKLSAgICB7MywgYXJjc182OV8wfSwKLSAgICB7MiwgYXJjc182OV8xfSwKLSAgICB7MSwgYXJjc182OV8yfSwKLSAgICB7MSwgYXJjc182OV8zfSwKLSAgICB7MSwgYXJjc182OV80fSwKLSAgICB7MSwgYXJjc182OV81fSwKLSAgICB7MSwgYXJjc182OV82fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzBbN10gPSB7CisgICAgezMsIGFyY3NfNzBfMH0sCisgICAgezIsIGFyY3NfNzBfMX0sCisgICAgezEsIGFyY3NfNzBfMn0sCisgICAgezEsIGFyY3NfNzBfM30sCisgICAgezEsIGFyY3NfNzBfNH0sCisgICAgezEsIGFyY3NfNzBfNX0sCisgICAgezEsIGFyY3NfNzBfNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzBbMV0gPSB7Ci0gICAgezE2NiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzFfMFsxXSA9IHsKKyAgICB7MTY3LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzBfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MV8xWzJdID0gewogICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8yWzJdID0gewotICAgIHsxNjYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzcxXzJbMl0gPSB7CisgICAgezE2NywgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzBbM10gPSB7Ci0gICAgezEsIGFyY3NfNzBfMH0sCi0gICAgezIsIGFyY3NfNzBfMX0sCi0gICAgezIsIGFyY3NfNzBfMn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzcxWzNdID0geworICAgIHsxLCBhcmNzXzcxXzB9LAorICAgIHsyLCBhcmNzXzcxXzF9LAorICAgIHsyLCBhcmNzXzcxXzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8wWzJdID0geworc3RhdGljIGFyYyBhcmNzXzcyXzBbMl0gPSB7CiAgICAgezI2LCAxfSwKICAgICB7MjcsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzcyXzFbMl0gPSB7CiAgICAgezI3LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzJbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzJfMlszXSA9IHsKICAgICB7MjYsIDN9LAotICAgIHsxNjcsIDR9LAorICAgIHsxNjgsIDR9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfM1syXSA9IHsKLSAgICB7MTY3LCA0fSwKK3N0YXRpYyBhcmMgYXJjc183Ml8zWzJdID0geworICAgIHsxNjgsIDR9LAogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Ml80WzFdID0gewogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzcxWzVdID0gewotICAgIHsyLCBhcmNzXzcxXzB9LAotICAgIHsyLCBhcmNzXzcxXzF9LAotICAgIHszLCBhcmNzXzcxXzJ9LAotICAgIHsyLCBhcmNzXzcxXzN9LAotICAgIHsxLCBhcmNzXzcxXzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc183Mls1XSA9IHsKKyAgICB7MiwgYXJjc183Ml8wfSwKKyAgICB7MiwgYXJjc183Ml8xfSwKKyAgICB7MywgYXJjc183Ml8yfSwKKyAgICB7MiwgYXJjc183Ml8zfSwKKyAgICB7MSwgYXJjc183Ml80fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183M18wWzFdID0gewogICAgIHsyNywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzNfMVsyXSA9IHsKICAgICB7MjYsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183MlszXSA9IHsKLSAgICB7MSwgYXJjc183Ml8wfSwKLSAgICB7MiwgYXJjc183Ml8xfSwKLSAgICB7MSwgYXJjc183Ml8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMFsyXSA9IHsKLSAgICB7MTA3LCAxfSwKLSAgICB7NTAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M18xWzJdID0gewotICAgIHszMiwgMn0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M18yWzNdID0gewotICAgIHsxMDcsIDF9LAotICAgIHs1MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzNfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc183M1szXSA9IHsKLSAgICB7MiwgYXJjc183M18wfSwKKyAgICB7MSwgYXJjc183M18wfSwKICAgICB7MiwgYXJjc183M18xfSwKLSAgICB7MywgYXJjc183M18yfSwKKyAgICB7MSwgYXJjc183M18yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfMFsxXSA9IHsKLSAgICB7MjYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzc0XzBbMl0gPSB7CisgICAgezEwOCwgMX0sCisgICAgezUxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzRfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfMlsyXSA9IHsKLSAgICB7MjYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzc0XzJbM10gPSB7CisgICAgezEwOCwgMX0sCisgICAgezUxLCAxfSwKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc183NFszXSA9IHsKLSAgICB7MSwgYXJjc183NF8wfSwKKyAgICB7MiwgYXJjc183NF8wfSwKICAgICB7MiwgYXJjc183NF8xfSwKLSAgICB7MiwgYXJjc183NF8yfSwKKyAgICB7MywgYXJjc183NF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183NV8wWzFdID0geworICAgIHsyNiwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc1XzFbMl0gPSB7CisgICAgezMyLCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc1XzJbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183NVszXSA9IHsKKyAgICB7MSwgYXJjc183NV8wfSwKKyAgICB7MiwgYXJjc183NV8xfSwKKyAgICB7MiwgYXJjc183NV8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfMFszXSA9IHsKICAgICB7MjYsIDF9LAogICAgIHszNCwgMn0sCi0gICAgezUwLCAzfSwKKyAgICB7NTEsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xWzRdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzFbNF0gPSB7CiAgICAgezI3LCA0fSwKLSAgICB7MTY0LCA1fSwKKyAgICB7MTY1LCA1fSwKICAgICB7MzIsIDZ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMlsxXSA9IHsKLSAgICB7MTA3LCA3fSwKK3N0YXRpYyBhcmMgYXJjc183Nl8yWzFdID0geworICAgIHsxMDgsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8zWzNdID0gewotICAgIHsxNjQsIDV9LAorc3RhdGljIGFyYyBhcmNzXzc2XzNbM10gPSB7CisgICAgezE2NSwgNX0sCiAgICAgezMyLCA2fSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfNFsxXSA9IHsKICAgICB7MjYsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV81WzFdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzVbMV0gPSB7CiAgICAgezAsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV82WzNdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzZbM10gPSB7CiAgICAgezI2LCA4fSwKLSAgICB7NTAsIDh9LAorICAgIHs1MSwgOH0sCiAgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV83WzNdID0gewotICAgIHsxNjQsIDV9LAorc3RhdGljIGFyYyBhcmNzXzc2XzdbM10gPSB7CisgICAgezE2NSwgNX0sCiAgICAgezMyLCA5fSwKICAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzhbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfOFsyXSA9IHsKICAgICB7MzIsIDZ9LAogICAgIHswLCA4fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfOVszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl85WzNdID0gewogICAgIHsyNiwgMTB9LAogICAgIHszNCwgMTF9LAogICAgIHswLCA5fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMTBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfMTBbMV0gPSB7CiAgICAgezI3LCAxMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzExWzFdID0gewotICAgIHsxMDcsIDEzfSwKK3N0YXRpYyBhcmMgYXJjc183Nl8xMVsxXSA9IHsKKyAgICB7MTA4LCAxM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzEyWzFdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzEyWzFdID0gewogICAgIHsyNiwgMTN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xM1syXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl8xM1syXSA9IHsKICAgICB7MzIsIDl9LAogICAgIHswLCAxM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183NVsxNF0gPSB7Ci0gICAgezMsIGFyY3NfNzVfMH0sCi0gICAgezQsIGFyY3NfNzVfMX0sCi0gICAgezEsIGFyY3NfNzVfMn0sCi0gICAgezMsIGFyY3NfNzVfM30sCi0gICAgezEsIGFyY3NfNzVfNH0sCi0gICAgezEsIGFyY3NfNzVfNX0sCi0gICAgezMsIGFyY3NfNzVfNn0sCi0gICAgezMsIGFyY3NfNzVfN30sCi0gICAgezIsIGFyY3NfNzVfOH0sCi0gICAgezMsIGFyY3NfNzVfOX0sCi0gICAgezEsIGFyY3NfNzVfMTB9LAotICAgIHsxLCBhcmNzXzc1XzExfSwKLSAgICB7MSwgYXJjc183NV8xMn0sCi0gICAgezIsIGFyY3NfNzVfMTN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8wWzFdID0gewotICAgIHsxNjgsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8xWzFdID0gewotICAgIHsyMywgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzJbMl0gPSB7Ci0gICAgezEzLCAzfSwKLSAgICB7MjcsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8zWzJdID0gewotICAgIHsxNCwgNX0sCi0gICAgezE1LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfNFsxXSA9IHsKLSAgICB7MjgsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl81WzFdID0gewotICAgIHsxNSwgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzZbMV0gPSB7Ci0gICAgezI3LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfN1sxXSA9IHsKLSAgICB7MCwgN30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183Nls4XSA9IHsKLSAgICB7MSwgYXJjc183Nl8wfSwKLSAgICB7MSwgYXJjc183Nl8xfSwKLSAgICB7MiwgYXJjc183Nl8yfSwKLSAgICB7MiwgYXJjc183Nl8zfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzZbMTRdID0geworICAgIHszLCBhcmNzXzc2XzB9LAorICAgIHs0LCBhcmNzXzc2XzF9LAorICAgIHsxLCBhcmNzXzc2XzJ9LAorICAgIHszLCBhcmNzXzc2XzN9LAogICAgIHsxLCBhcmNzXzc2XzR9LAogICAgIHsxLCBhcmNzXzc2XzV9LAotICAgIHsxLCBhcmNzXzc2XzZ9LAotICAgIHsxLCBhcmNzXzc2Xzd9LAorICAgIHszLCBhcmNzXzc2XzZ9LAorICAgIHszLCBhcmNzXzc2Xzd9LAorICAgIHsyLCBhcmNzXzc2Xzh9LAorICAgIHszLCBhcmNzXzc2Xzl9LAorICAgIHsxLCBhcmNzXzc2XzEwfSwKKyAgICB7MSwgYXJjc183Nl8xMX0sCisgICAgezEsIGFyY3NfNzZfMTJ9LAorICAgIHsyLCBhcmNzXzc2XzEzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzdfMFsxXSA9IHsKICAgICB7MTY5LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183N18xWzFdID0geworICAgIHsyMywgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzJbMl0gPSB7CisgICAgezEzLCAzfSwKKyAgICB7MjcsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N18zWzJdID0geworICAgIHsxNCwgNX0sCisgICAgezE1LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfNFsxXSA9IHsKKyAgICB7MjgsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N181WzFdID0geworICAgIHsxNSwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzZbMV0gPSB7CisgICAgezI3LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfN1sxXSA9IHsKKyAgICB7MCwgN30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183N1s4XSA9IHsKKyAgICB7MSwgYXJjc183N18wfSwKKyAgICB7MSwgYXJjc183N18xfSwKKyAgICB7MiwgYXJjc183N18yfSwKKyAgICB7MiwgYXJjc183N18zfSwKKyAgICB7MSwgYXJjc183N180fSwKKyAgICB7MSwgYXJjc183N181fSwKKyAgICB7MSwgYXJjc183N182fSwKKyAgICB7MSwgYXJjc183N183fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzhfMFsxXSA9IHsKKyAgICB7MTcwLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzhfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfMlsyXSA9IHsKLSAgICB7MTY5LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183OF8yWzJdID0geworICAgIHsxNzAsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc3WzNdID0gewotICAgIHsxLCBhcmNzXzc3XzB9LAotICAgIHsyLCBhcmNzXzc3XzF9LAotICAgIHsyLCBhcmNzXzc3XzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc183OFszXSA9IHsKKyAgICB7MSwgYXJjc183OF8wfSwKKyAgICB7MiwgYXJjc183OF8xfSwKKyAgICB7MiwgYXJjc183OF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfMFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183OV8wWzNdID0gewogICAgIHsyNiwgMX0sCiAgICAgezM0LCAyfSwKICAgICB7MzMsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8xWzNdID0gewotICAgIHsxNjQsIDN9LAorc3RhdGljIGFyYyBhcmNzXzc5XzFbM10gPSB7CisgICAgezE2NSwgM30sCiAgICAgezMxLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzlfMlsxXSA9IHsKICAgICB7MjYsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzc5XzNbMV0gPSB7CiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzhbNF0gPSB7Ci0gICAgezMsIGFyY3NfNzhfMH0sCi0gICAgezMsIGFyY3NfNzhfMX0sCi0gICAgezEsIGFyY3NfNzhfMn0sCi0gICAgezEsIGFyY3NfNzhfM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzc5WzRdID0geworICAgIHszLCBhcmNzXzc5XzB9LAorICAgIHszLCBhcmNzXzc5XzF9LAorICAgIHsxLCBhcmNzXzc5XzJ9LAorICAgIHsxLCBhcmNzXzc5XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OV8wWzJdID0gewotICAgIHsxNjQsIDF9LAotICAgIHsxNzEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183OV8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc5WzJdID0gewotICAgIHsyLCBhcmNzXzc5XzB9LAotICAgIHsxLCBhcmNzXzc5XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184MF8wWzFdID0gewotICAgIHsxMDAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzgwXzBbMl0gPSB7CisgICAgezE2NSwgMX0sCisgICAgezE3MiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgwXzFbMV0gPSB7Ci0gICAgezY1LCAyfSwKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzgwXzJbMV0gPSB7Ci0gICAgezEwMSwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzgwXzNbMV0gPSB7Ci0gICAgezExMSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgwXzRbMl0gPSB7Ci0gICAgezE3MCwgNX0sCi0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184MF81WzFdID0gewotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgwWzZdID0gewotICAgIHsxLCBhcmNzXzgwXzB9LAorc3RhdGljIHN0YXRlIHN0YXRlc184MFsyXSA9IHsKKyAgICB7MiwgYXJjc184MF8wfSwKICAgICB7MSwgYXJjc184MF8xfSwKLSAgICB7MSwgYXJjc184MF8yfSwKLSAgICB7MSwgYXJjc184MF8zfSwKLSAgICB7MiwgYXJjc184MF80fSwKLSAgICB7MSwgYXJjc184MF81fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODFfMFsxXSA9IHsKLSAgICB7OTYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzgxXzBbMl0gPSB7CisgICAgezIxLCAxfSwKKyAgICB7MTAxLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODFfMVsxXSA9IHsKLSAgICB7MTEzLCAyfSwKKyAgICB7MTAxLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODFfMlsyXSA9IHsKLSAgICB7MTcwLCAzfSwKLSAgICB7MCwgMn0sCitzdGF0aWMgYXJjIGFyY3NfODFfMlsxXSA9IHsKKyAgICB7NjYsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MV8zWzFdID0gewotICAgIHswLCAzfSwKKyAgICB7MTAyLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzRdID0gewotICAgIHsxLCBhcmNzXzgxXzB9LAorc3RhdGljIGFyYyBhcmNzXzgxXzRbMV0gPSB7CisgICAgezExMiwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgxXzVbMl0gPSB7CisgICAgezE3MSwgNn0sCisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MV82WzFdID0geworICAgIHswLCA2fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzddID0geworICAgIHsyLCBhcmNzXzgxXzB9LAogICAgIHsxLCBhcmNzXzgxXzF9LAotICAgIHsyLCBhcmNzXzgxXzJ9LAorICAgIHsxLCBhcmNzXzgxXzJ9LAogICAgIHsxLCBhcmNzXzgxXzN9LAorICAgIHsxLCBhcmNzXzgxXzR9LAorICAgIHsyLCBhcmNzXzgxXzV9LAorICAgIHsxLCBhcmNzXzgxXzZ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184Ml8wWzFdID0gewotICAgIHsyMywgMX0sCisgICAgezk3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODJfMVsxXSA9IHsKLSAgICB7MCwgMX0sCisgICAgezExNCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc184MlsyXSA9IHsKLSAgICB7MSwgYXJjc184Ml8wfSwKLSAgICB7MSwgYXJjc184Ml8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODNfMFsxXSA9IHsKLSAgICB7MTczLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODNfMVsyXSA9IHsKLSAgICB7MTc0LCAyfSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgzXzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfODJfMlsyXSA9IHsKKyAgICB7MTcxLCAzfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc184M1szXSA9IHsKK3N0YXRpYyBhcmMgYXJjc184Ml8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgyWzRdID0geworICAgIHsxLCBhcmNzXzgyXzB9LAorICAgIHsxLCBhcmNzXzgyXzF9LAorICAgIHsyLCBhcmNzXzgyXzJ9LAorICAgIHsxLCBhcmNzXzgyXzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184M18wWzFdID0geworICAgIHsyMywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgzXzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODNbMl0gPSB7CiAgICAgezEsIGFyY3NfODNfMH0sCi0gICAgezIsIGFyY3NfODNfMX0sCi0gICAgezEsIGFyY3NfODNfMn0sCisgICAgezEsIGFyY3NfODNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzg0XzBbMl0gPSB7Ci0gICAgezc2LCAxfSwKLSAgICB7OSwgMn0sCitzdGF0aWMgYXJjIGFyY3NfODRfMFsxXSA9IHsKKyAgICB7MTc0LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODRfMVsxXSA9IHsKLSAgICB7MjYsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzg0XzFbMl0gPSB7CisgICAgezE3NSwgMn0sCisgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184NF8yWzFdID0gewogICAgIHswLCAyfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzg0WzNdID0gewotICAgIHsyLCBhcmNzXzg0XzB9LAotICAgIHsxLCBhcmNzXzg0XzF9LAorICAgIHsxLCBhcmNzXzg0XzB9LAorICAgIHsyLCBhcmNzXzg0XzF9LAogICAgIHsxLCBhcmNzXzg0XzJ9LAogfTsKLXN0YXRpYyBkZmEgZGZhc1s4NV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfODVfMFsyXSA9IHsKKyAgICB7NzcsIDF9LAorICAgIHs5LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODVfMVsxXSA9IHsKKyAgICB7MjYsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184NV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzg1WzNdID0geworICAgIHsyLCBhcmNzXzg1XzB9LAorICAgIHsxLCBhcmNzXzg1XzF9LAorICAgIHsxLCBhcmNzXzg1XzJ9LAorfTsKK3N0YXRpYyBkZmEgZGZhc1s4Nl0gPSB7CiAgICAgezI1NiwgInNpbmdsZV9pbnB1dCIsIDAsIDMsIHN0YXRlc18wLAotICAgICAiXDAwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDEzMVwwMDJcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MSJ9LAorICAgICAiXDAwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDI2MlwwMDRcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMiJ9LAogICAgIHsyNTcsICJmaWxlX2lucHV0IiwgMCwgMiwgc3RhdGVzXzEsCi0gICAgICJcMjA0XDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCisgICAgICJcMjA0XDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMjYyXDAwNFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAyIn0sCiAgICAgezI1OCwgImV2YWxfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKICAgICB7MjU5LCAiZGVjb3JhdG9yIiwgMCwgNywgc3RhdGVzXzMsCiAgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2MCwgImRlY29yYXRvcnMiLCAwLCAyLCBzdGF0ZXNfNCwKQEAgLTE4NzksMTc5ICsxOTIyLDE4MSBAQAogICAgICAiXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjQsICJwYXJhbWV0ZXJzIiwgMCwgNCwgc3RhdGVzXzgsCiAgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NSwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzksCisgICAgezI2NSwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOSwgc3RhdGVzXzksCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2NiwgInRmcGRlZiIsIDAsIDQsIHN0YXRlc18xMCwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY3LCAidmFyYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzExLAorICAgIHsyNjcsICJ2YXJhcmdzbGlzdCIsIDAsIDE5LCBzdGF0ZXNfMTEsCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2OCwgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMiwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjY5LCAic3RtdCIsIDAsIDIsIHN0YXRlc18xMywKLSAgICAgIlwwMDBcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKKyAgICAgIlwwMDBcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wyNjJcMDA0XDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDIifSwKICAgICB7MjcwLCAic2ltcGxlX3N0bXQiLCAwLCA0LCBzdGF0ZXNfMTQsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQwIn0sCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAwIn0sCiAgICAgezI3MSwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQwIn0sCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAwIn0sCiAgICAgezI3MiwgImV4cHJfc3RtdCIsIDAsIDYsIHN0YXRlc18xNiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MjczLCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE3LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHsyNzQsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzcwXDM3N1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NSwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzE5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzYsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NywgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKLSAgICB7Mjc4LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc5LCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yMywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgwLCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MSwgInlpZWxkX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjUsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCi0gICAgezI4MiwgInJhaXNlX3N0bXQiLCAwLCA1LCBzdGF0ZXNfMjYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MywgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODQsICJpbXBvcnRfbmFtZSIsIDAsIDMsIHN0YXRlc18yOCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg1LCAiaW1wb3J0X2Zyb20iLCAwLCA4LCBzdGF0ZXNfMjksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NiwgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMwLAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODcsICJkb3R0ZWRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMSwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg4LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMyLAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODksICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzMsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MCwgImRvdHRlZF9uYW1lIiwgMCwgMiwgc3RhdGVzXzM0LAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTEsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkyLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkzLCAiYXNzZXJ0X3N0bXQiLCAwLCA1LCBzdGF0ZXNfMzcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NCwgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzgsCi0gICAgICJcMDAwXDAxMFwxNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTMxXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxIn0sCi0gICAgezI5NSwgImFzeW5jX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzksCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NiwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NywgIndoaWxlX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OCwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk5LCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQzLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDAsICJ3aXRoX3N0bXQiLCAwLCA1LCBzdGF0ZXNfNDQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMSwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180NSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzAyLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzAzLCAic3VpdGUiLCAwLCA1LCBzdGF0ZXNfNDcsCi0gICAgICJcMDA0XDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQwIn0sCi0gICAgezMwNCwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDgsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMwNSwgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzQ5LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMDYsICJsYW1iZGVmIiwgMCwgNSwgc3RhdGVzXzUwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDcsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc181MSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA4LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzA5LCAiYW5kX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTMsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxMCwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzU0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTEsICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzU1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTIsICJjb21wX29wIiwgMCwgNCwgc3RhdGVzXzU2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDM3MVwwMDdcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTMsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMxNCwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTgsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxNSwgInhvcl9leHByIiwgMCwgMiwgc3RhdGVzXzU5LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTYsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc182MCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE3LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc182MSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE4LCAiYXJpdGhfZXhwciIsIDAsIDIsIHN0YXRlc182MiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE5LCAidGVybSIsIDAsIDIsIHN0YXRlc182MywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzIwLCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzY0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjEsICJwb3dlciIsIDAsIDQsIHN0YXRlc182NSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzIyLCAiYXRvbV9leHByIiwgMCwgMywgc3RhdGVzXzY2LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjMsICJhdG9tIiwgMCwgOSwgc3RhdGVzXzY3LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjQsICJ0ZXN0bGlzdF9jb21wIiwgMCwgNSwgc3RhdGVzXzY4LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjUsICJ0cmFpbGVyIiwgMCwgNywgc3RhdGVzXzY5LAotICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMCJ9LAotICAgIHszMjYsICJzdWJzY3JpcHRsaXN0IiwgMCwgMywgc3RhdGVzXzcwLAotICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjcsICJzdWJzY3JpcHQiLCAwLCA1LCBzdGF0ZXNfNzEsCi0gICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyOCwgInNsaWNlb3AiLCAwLCAzLCBzdGF0ZXNfNzIsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezI3MywgImFubmFzc2lnbiIsIDAsIDUsIHN0YXRlc18xNywKICAgICAgIlwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzI5LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzMsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzMCwgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzc0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzEsICJkaWN0b3JzZXRtYWtlciIsIDAsIDE0LCBzdGF0ZXNfNzUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzMiwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzc2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMSJ9LAotICAgIHszMzMsICJhcmdsaXN0IiwgMCwgMywgc3RhdGVzXzc3LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzQsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183OCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzM1LCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzYsICJjb21wX2ZvciIsIDAsIDYsIHN0YXRlc184MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM3LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc184MSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM4LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc184MiwKKyAgICB7Mjc0LCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHsyNzUsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzYwXDM3N1wwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NiwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzIwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzcsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3OCwgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMzZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDAifSwKKyAgICB7Mjc5LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgwLCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yNCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgxLCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MiwgInlpZWxkX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwIn0sCisgICAgezI4MywgInJhaXNlX3N0bXQiLCAwLCA1LCBzdGF0ZXNfMjcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NCwgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODUsICJpbXBvcnRfbmFtZSIsIDAsIDMsIHN0YXRlc18yOSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg2LCAiaW1wb3J0X2Zyb20iLCAwLCA4LCBzdGF0ZXNfMzAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NywgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMxLAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzksICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgzLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAotICAgIHszNDAsICJ5aWVsZF9hcmciLCAwLCAzLCBzdGF0ZXNfODQsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezI4OCwgImRvdHRlZF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMyLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODksICJpbXBvcnRfYXNfbmFtZXMiLCAwLCAzLCBzdGF0ZXNfMzMsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MCwgImRvdHRlZF9hc19uYW1lcyIsIDAsIDIsIHN0YXRlc18zNCwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkxLCAiZG90dGVkX25hbWUiLCAwLCAyLCBzdGF0ZXNfMzUsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MiwgImdsb2JhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTMsICJub25sb2NhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTQsICJhc3NlcnRfc3RtdCIsIDAsIDUsIHN0YXRlc18zOCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk1LCAiY29tcG91bmRfc3RtdCIsIDAsIDIsIHN0YXRlc18zOSwKKyAgICAgIlwwMDBcMDEwXDE0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyNjJcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDIifSwKKyAgICB7Mjk2LCAiYXN5bmNfc3RtdCIsIDAsIDMsIHN0YXRlc180MCwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk3LCAiaWZfc3RtdCIsIDAsIDgsIHN0YXRlc180MSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk4LCAid2hpbGVfc3RtdCIsIDAsIDgsIHN0YXRlc180MiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk5LCAiZm9yX3N0bXQiLCAwLCAxMCwgc3RhdGVzXzQzLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDAsICJ0cnlfc3RtdCIsIDAsIDEzLCBzdGF0ZXNfNDQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMSwgIndpdGhfc3RtdCIsIDAsIDUsIHN0YXRlc180NSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAyLCAid2l0aF9pdGVtIiwgMCwgNCwgc3RhdGVzXzQ2LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMDMsICJleGNlcHRfY2xhdXNlIiwgMCwgNSwgc3RhdGVzXzQ3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDQsICJzdWl0ZSIsIDAsIDUsIHN0YXRlc180OCwKKyAgICAgIlwwMDRcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDAifSwKKyAgICB7MzA1LCAidGVzdCIsIDAsIDYsIHN0YXRlc180OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzA2LCAidGVzdF9ub2NvbmQiLCAwLCAyLCBzdGF0ZXNfNTAsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMwNywgImxhbWJkZWYiLCAwLCA1LCBzdGF0ZXNfNTEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwOCwgImxhbWJkZWZfbm9jb25kIiwgMCwgNSwgc3RhdGVzXzUyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDksICJvcl90ZXN0IiwgMCwgMiwgc3RhdGVzXzUzLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTAsICJhbmRfdGVzdCIsIDAsIDIsIHN0YXRlc181NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzExLCAibm90X3Rlc3QiLCAwLCAzLCBzdGF0ZXNfNTUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxMiwgImNvbXBhcmlzb24iLCAwLCAyLCBzdGF0ZXNfNTYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxMywgImNvbXBfb3AiLCAwLCA0LCBzdGF0ZXNfNTcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMzYyXDAxN1wwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMxNCwgInN0YXJfZXhwciIsIDAsIDMsIHN0YXRlc181OCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzE1LCAiZXhwciIsIDAsIDIsIHN0YXRlc181OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzE2LCAieG9yX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxNywgImFuZF9leHByIiwgMCwgMiwgc3RhdGVzXzYxLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTgsICJzaGlmdF9leHByIiwgMCwgMiwgc3RhdGVzXzYyLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTksICJhcml0aF9leHByIiwgMCwgMiwgc3RhdGVzXzYzLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjAsICJ0ZXJtIiwgMCwgMiwgc3RhdGVzXzY0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjEsICJmYWN0b3IiLCAwLCAzLCBzdGF0ZXNfNjUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyMiwgInBvd2VyIiwgMCwgNCwgc3RhdGVzXzY2LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjMsICJhdG9tX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNjcsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyNCwgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjgsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyNSwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyNiwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNzAsCisgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwIn0sCisgICAgezMyNywgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzEsCisgICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyOCwgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc183MiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzI5LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc183MywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzMwLCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzMSwgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzc1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzIsICJkaWN0b3JzZXRtYWtlciIsIDAsIDE0LCBzdGF0ZXNfNzYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzMywgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzc3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMiJ9LAorICAgIHszMzQsICJhcmdsaXN0IiwgMCwgMywgc3RhdGVzXzc4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzUsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzM2LCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzgwLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzcsICJjb21wX2ZvciIsIDAsIDcsIHN0YXRlc184MSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM4LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc184MiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM5LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc184MywKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzQwLCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDAifSwKKyAgICB7MzQxLCAieWllbGRfYXJnIiwgMCwgMywgc3RhdGVzXzg1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAogfTsKLXN0YXRpYyBsYWJlbCBsYWJlbHNbMTc1XSA9IHsKK3N0YXRpYyBsYWJlbCBsYWJlbHNbMTc2XSA9IHsKICAgICB7MCwgIkVNUFRZIn0sCiAgICAgezI1NiwgMH0sCiAgICAgezQsIDB9LAogICAgIHsyNzAsIDB9LAotICAgIHsyOTQsIDB9LAorICAgIHsyOTUsIDB9LAogICAgIHsyNTcsIDB9LAogICAgIHsyNjksIDB9LAogICAgIHswLCAwfSwKICAgICB7MjU4LCAwfSwKLSAgICB7MzMwLCAwfSwKKyAgICB7MzMxLCAwfSwKICAgICB7MjU5LCAwfSwKICAgICB7NDksIDB9LAotICAgIHsyOTAsIDB9LAorICAgIHsyOTEsIDB9LAogICAgIHs3LCAwfSwKLSAgICB7MzMzLCAwfSwKKyAgICB7MzM0LCAwfSwKICAgICB7OCwgMH0sCiAgICAgezI2MCwgMH0sCiAgICAgezI2MSwgMH0sCi0gICAgezMzMiwgMH0sCisgICAgezMzMywgMH0sCiAgICAgezI2MywgMH0sCiAgICAgezI2MiwgMH0sCiAgICAgezU1LCAwfSwKQEAgLTIwNTksOSArMjEwNCw5IEBACiAgICAgezEsIDB9LAogICAgIHsyNjQsIDB9LAogICAgIHs1MSwgMH0sCi0gICAgezMwNCwgMH0sCisgICAgezMwNSwgMH0sCiAgICAgezExLCAwfSwKLSAgICB7MzAzLCAwfSwKKyAgICB7MzA0LCAwfSwKICAgICB7MjY1LCAwfSwKICAgICB7MjY2LCAwfSwKICAgICB7MjIsIDB9LApAQCAtMjA3MywxNyArMjExOCwxOCBAQAogICAgIHsyNzEsIDB9LAogICAgIHsxMywgMH0sCiAgICAgezI3MiwgMH0sCi0gICAgezI3NSwgMH0sCiAgICAgezI3NiwgMH0sCiAgICAgezI3NywgMH0sCi0gICAgezI4MywgMH0sCi0gICAgezI5MSwgMH0sCisgICAgezI3OCwgMH0sCisgICAgezI4NCwgMH0sCiAgICAgezI5MiwgMH0sCiAgICAgezI5MywgMH0sCi0gICAgezI3MywgMH0sCisgICAgezI5NCwgMH0sCiAgICAgezI3NCwgMH0sCi0gICAgezMzOSwgMH0sCi0gICAgezMxMywgMH0sCisgICAgezI3MywgMH0sCisgICAgezI3NSwgMH0sCisgICAgezM0MCwgMH0sCisgICAgezMxNCwgMH0sCiAgICAgezM2LCAwfSwKICAgICB7MzcsIDB9LAogICAgIHszOCwgMH0sCkBAIC0yMDk4LDM3ICsyMTQ0LDM3IEBACiAgICAgezQ2LCAwfSwKICAgICB7NDgsIDB9LAogICAgIHsxLCAiZGVsIn0sCi0gICAgezMyOSwgMH0sCisgICAgezMzMCwgMH0sCiAgICAgezEsICJwYXNzIn0sCi0gICAgezI3OCwgMH0sCiAgICAgezI3OSwgMH0sCiAgICAgezI4MCwgMH0sCi0gICAgezI4MiwgMH0sCiAgICAgezI4MSwgMH0sCisgICAgezI4MywgMH0sCisgICAgezI4MiwgMH0sCiAgICAgezEsICJicmVhayJ9LAogICAgIHsxLCAiY29udGludWUifSwKICAgICB7MSwgInJldHVybiJ9LAogICAgIHsxLCAicmFpc2UifSwKICAgICB7MSwgImZyb20ifSwKLSAgICB7Mjg0LCAwfSwKICAgICB7Mjg1LCAwfSwKKyAgICB7Mjg2LCAwfSwKICAgICB7MSwgImltcG9ydCJ9LAotICAgIHsyODksIDB9LAorICAgIHsyOTAsIDB9LAogICAgIHsyMywgMH0sCiAgICAgezUyLCAwfSwKLSAgICB7Mjg4LCAwfSwKLSAgICB7Mjg2LCAwfSwKLSAgICB7MSwgImFzIn0sCisgICAgezI4OSwgMH0sCiAgICAgezI4NywgMH0sCisgICAgezEsICJhcyJ9LAorICAgIHsyODgsIDB9LAogICAgIHsxLCAiZ2xvYmFsIn0sCiAgICAgezEsICJub25sb2NhbCJ9LAogICAgIHsxLCAiYXNzZXJ0In0sCi0gICAgezI5NiwgMH0sCiAgICAgezI5NywgMH0sCiAgICAgezI5OCwgMH0sCiAgICAgezI5OSwgMH0sCiAgICAgezMwMCwgMH0sCi0gICAgezI5NSwgMH0sCisgICAgezMwMSwgMH0sCisgICAgezI5NiwgMH0sCiAgICAgezEsICJpZiJ9LAogICAgIHsxLCAiZWxpZiJ9LAogICAgIHsxLCAiZWxzZSJ9LApAQCAtMjEzNiwyNiArMjE4MiwyNiBAQAogICAgIHsxLCAiZm9yIn0sCiAgICAgezEsICJpbiJ9LAogICAgIHsxLCAidHJ5In0sCi0gICAgezMwMiwgMH0sCisgICAgezMwMywgMH0sCiAgICAgezEsICJmaW5hbGx5In0sCiAgICAgezEsICJ3aXRoIn0sCi0gICAgezMwMSwgMH0sCi0gICAgezMxNCwgMH0sCisgICAgezMwMiwgMH0sCisgICAgezMxNSwgMH0sCiAgICAgezEsICJleGNlcHQifSwKICAgICB7NSwgMH0sCiAgICAgezYsIDB9LAotICAgIHszMDgsIDB9LAotICAgIHszMDYsIDB9LAotICAgIHszMDUsIDB9LAotICAgIHszMDcsIDB9LAotICAgIHsxLCAibGFtYmRhIn0sCiAgICAgezMwOSwgMH0sCi0gICAgezEsICJvciJ9LAorICAgIHszMDcsIDB9LAorICAgIHszMDYsIDB9LAorICAgIHszMDgsIDB9LAorICAgIHsxLCAibGFtYmRhIn0sCiAgICAgezMxMCwgMH0sCisgICAgezEsICJvciJ9LAorICAgIHszMTEsIDB9LAogICAgIHsxLCAiYW5kIn0sCiAgICAgezEsICJub3QifSwKLSAgICB7MzExLCAwfSwKICAgICB7MzEyLCAwfSwKKyAgICB7MzEzLCAwfSwKICAgICB7MjAsIDB9LAogICAgIHsyMSwgMH0sCiAgICAgezI3LCAwfSwKQEAgLTIxNjQsNTQgKzIyMTAsNTQgQEAKICAgICB7MjgsIDB9LAogICAgIHsyOCwgMH0sCiAgICAgezEsICJpcyJ9LAotICAgIHszMTUsIDB9LAotICAgIHsxOCwgMH0sCiAgICAgezMxNiwgMH0sCi0gICAgezMyLCAwfSwKKyAgICB7MTgsIDB9LAogICAgIHszMTcsIDB9LAotICAgIHsxOSwgMH0sCisgICAgezMyLCAwfSwKICAgICB7MzE4LCAwfSwKKyAgICB7MTksIDB9LAorICAgIHszMTksIDB9LAogICAgIHszMywgMH0sCiAgICAgezM0LCAwfSwKLSAgICB7MzE5LCAwfSwKKyAgICB7MzIwLCAwfSwKICAgICB7MTQsIDB9LAogICAgIHsxNSwgMH0sCi0gICAgezMyMCwgMH0sCisgICAgezMyMSwgMH0sCiAgICAgezE3LCAwfSwKICAgICB7MjQsIDB9LAogICAgIHs0NywgMH0sCiAgICAgezMxLCAwfSwKLSAgICB7MzIxLCAwfSwKICAgICB7MzIyLCAwfSwKLSAgICB7NTQsIDB9LAogICAgIHszMjMsIDB9LAotICAgIHszMjUsIDB9LAorICAgIHs1NCwgMH0sCiAgICAgezMyNCwgMH0sCisgICAgezMyNiwgMH0sCisgICAgezMyNSwgMH0sCiAgICAgezksIDB9LAogICAgIHsxMCwgMH0sCiAgICAgezI1LCAwfSwKLSAgICB7MzMxLCAwfSwKKyAgICB7MzMyLCAwfSwKICAgICB7MjYsIDB9LAogICAgIHsyLCAwfSwKICAgICB7MywgMH0sCiAgICAgezEsICJOb25lIn0sCiAgICAgezEsICJUcnVlIn0sCiAgICAgezEsICJGYWxzZSJ9LAotICAgIHszMzYsIDB9LAotICAgIHszMjYsIDB9LAorICAgIHszMzcsIDB9LAogICAgIHszMjcsIDB9LAogICAgIHszMjgsIDB9LAorICAgIHszMjksIDB9LAogICAgIHsxLCAiY2xhc3MifSwKLSAgICB7MzM0LCAwfSwKICAgICB7MzM1LCAwfSwKLSAgICB7MzM3LCAwfSwKKyAgICB7MzM2LCAwfSwKICAgICB7MzM4LCAwfSwKKyAgICB7MzM5LCAwfSwKICAgICB7MSwgInlpZWxkIn0sCi0gICAgezM0MCwgMH0sCisgICAgezM0MSwgMH0sCiB9OwogZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hciA9IHsKLSAgICA4NSwKKyAgICA4NiwKICAgICBkZmFzLAotICAgIHsxNzUsIGxhYmVsc30sCisgICAgezE3NiwgbGFiZWxzfSwKICAgICAyNTYKIH07CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0LmMgYi9QeXRob24vaW1wb3J0LmMKaW5kZXggN2U5NDdlYy4uZGZkZDk0MCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydC5jCisrKyBiL1B5dGhvbi9pbXBvcnQuYwpAQCAtMzgsMTQgKzM4LDYgQEAKIAogI2luY2x1ZGUgImNsaW5pYy9pbXBvcnQuYy5oIgogCi0vKltweXRob24gaW5wdXRdCi1jbGFzcyBmc191bmljb2RlX2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ1B5T2JqZWN0IConCi0gICAgY29udmVydGVyID0gJ1B5VW5pY29kZV9GU0RlY29kZXInCi0KLVtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTlkNjc4NjIzMDE2NjAwNmVdKi8KLQogLyogSW5pdGlhbGl6ZSB0aGluZ3MgKi8KIAogdm9pZApAQCAtMzIwLDcgKzMxMiw3IEBACiAKIAogLyogTGlzdCBvZiBuYW1lcyB0byBjbGVhciBpbiBzeXMgKi8KLXN0YXRpYyBjaGFyKiBzeXNfZGVsZXRlc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzeXNfZGVsZXRlc1tdID0gewogICAgICJwYXRoIiwgImFyZ3YiLCAicHMxIiwgInBzMiIsCiAgICAgImxhc3RfdHlwZSIsICJsYXN0X3ZhbHVlIiwgImxhc3RfdHJhY2ViYWNrIiwKICAgICAicGF0aF9ob29rcyIsICJwYXRoX2ltcG9ydGVyX2NhY2hlIiwgIm1ldGFfcGF0aCIsCkBAIC0zMzAsNyArMzIyLDcgQEAKICAgICBOVUxMCiB9OwogCi1zdGF0aWMgY2hhciogc3lzX2ZpbGVzW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHN5c19maWxlc1tdID0gewogICAgICJzdGRpbiIsICJfX3N0ZGluX18iLAogICAgICJzdGRvdXQiLCAiX19zdGRvdXRfXyIsCiAgICAgInN0ZGVyciIsICJfX3N0ZGVycl9fIiwKQEAgLTM0Nyw3ICszMzksNyBAQAogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gaW50ZXJwLT5tb2R1bGVzOwogICAgIFB5T2JqZWN0ICp3ZWFrbGlzdCA9IE5VTEw7Ci0gICAgY2hhciAqKnA7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICpwOwogCiAgICAgaWYgKG1vZHVsZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOyAvKiBBbHJlYWR5IGRvbmUgKi8KQEAgLTg4MywxMCArODc1LDggQEAKICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmUoY28tPmNvX2ZpbGVuYW1lLCBvbGRuYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdG1wID0gY28tPmNvX2ZpbGVuYW1lOwotICAgIGNvLT5jb19maWxlbmFtZSA9IG5ld25hbWU7Ci0gICAgUHlfSU5DUkVGKGNvLT5jb19maWxlbmFtZSk7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfSU5DUkVGKG5ld25hbWUpOworICAgIFB5X1hTRVRSRUYoY28tPmNvX2ZpbGVuYW1lLCBuZXduYW1lKTsKIAogICAgIGNvbnN0YW50cyA9IGNvLT5jb19jb25zdHM7CiAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUoY29uc3RhbnRzKTsKQEAgLTEwODcsNiArMTA3NywxMCBAQAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciBwb2ludGVyIHRvIG1vZHVsZSBpbml0IGZ1bmN0aW9uLiAqLwogICAgICAgICAgICAgICAgIGRlZiA9IFB5TW9kdWxlX0dldERlZihtb2QpOworICAgICAgICAgICAgICAgIGlmIChkZWYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkZWYtPm1fYmFzZS5tX2luaXQgPSBwLT5pbml0ZnVuYzsKICAgICAgICAgICAgICAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZSwgbmFtZSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKQEAgLTEzMzIsMTAgKzEzMjYsOCBAQAogICAgICAgICAgICAgKGFsd2F5c190cmltIHx8CiAgICAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoY29kZS0+Y29fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVfZnJhbWVzKSA9PSAwKSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnRtcCA9ICpvdXRlcl9saW5rOwotICAgICAgICAgICAgKm91dGVyX2xpbmsgPSBuZXh0OwogICAgICAgICAgICAgUHlfWElOQ1JFRihuZXh0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICAgICAgUHlfWFNFVFJFRigqb3V0ZXJfbGluaywgbmV4dCk7CiAgICAgICAgICAgICBwcmV2X2xpbmsgPSBvdXRlcl9saW5rOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTM0OCw2MSArMTM0MCwxNzAgQEAKIH0KIAogCi1QeU9iamVjdCAqCi1QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdpdmVuX2dsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZ2l2ZW5fZnJvbWxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCitzdGF0aWMgUHlPYmplY3QgKgorcmVzb2x2ZV9uYW1lKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgaW50IGxldmVsKQogewotICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fc3BlY19fKTsKLSAgICBfUHlfSURFTlRJRklFUihfaW5pdGlhbGl6aW5nKTsKICAgICBfUHlfSURFTlRJRklFUihfX3BhY2thZ2VfXyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19wYXRoX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihwYXJlbnQpOworICAgIFB5T2JqZWN0ICphYnNfbmFtZTsKKyAgICBQeU9iamVjdCAqcGFja2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNwZWM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgUHlfc3NpemVfdCBsYXN0X2RvdDsKKyAgICBQeU9iamVjdCAqYmFzZTsKKyAgICBpbnQgbGV2ZWxfdXA7CisKKyAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKCFQeURpY3RfQ2hlY2soZ2xvYmFscykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImdsb2JhbHMgbXVzdCBiZSBhIGRpY3QiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGFja2FnZV9fKTsKKyAgICBpZiAocGFja2FnZSA9PSBQeV9Ob25lKSB7CisgICAgICAgIHBhY2thZ2UgPSBOVUxMOworICAgIH0KKyAgICBzcGVjID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19zcGVjX18pOworCisgICAgaWYgKHBhY2thZ2UgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicGFja2FnZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwZWMgIT0gTlVMTCAmJiBzcGVjICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGludCBlcXVhbDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJlbnQgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNwZWMsICZQeUlkX3BhcmVudCk7CisgICAgICAgICAgICBpZiAocGFyZW50ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlcXVhbCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChwYWNrYWdlLCBwYXJlbnQsIFB5X0VRKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJlbnQpOworICAgICAgICAgICAgaWYgKGVxdWFsIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19JbXBvcnRXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCIsIDEpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChzcGVjICE9IE5VTEwgJiYgc3BlYyAhPSBQeV9Ob25lKSB7CisgICAgICAgIHBhY2thZ2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNwZWMsICZQeUlkX3BhcmVudCk7CisgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIl9fc3BlY19fLnBhcmVudCBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0ltcG9ydFdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICJjYW4ndCByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvciBfX3BhY2thZ2VfXywgIgorICAgICAgICAgICAgICAgICAgICAiZmFsbGluZyBiYWNrIG9uIF9fbmFtZV9fIGFuZCBfX3BhdGhfXyIsIDEpIDwgMCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX25hbWVfXyk7CisgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBkb3Q7CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGFja2FnZSkgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKSwgLTEpOworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMikgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkb3QgPj0gMCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGRvdCk7CisgICAgICAgICAgICAgICAgaWYgKHN1YnN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X1NFVFJFRihwYWNrYWdlLCBzdWJzdHIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGFzdF9kb3QgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKTsKKyAgICBpZiAobGFzdF9kb3QgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgd2l0aCBubyBrbm93biBwYXJlbnQgcGFja2FnZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICVSIG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICIKKyAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZm9yIChsZXZlbF91cCA9IDE7IGxldmVsX3VwIDwgbGV2ZWw7IGxldmVsX3VwICs9IDEpIHsKKyAgICAgICAgbGFzdF9kb3QgPSBQeVVuaWNvZGVfRmluZENoYXIocGFja2FnZSwgJy4nLCAwLCBsYXN0X2RvdCwgLTEpOworICAgICAgICBpZiAobGFzdF9kb3QgPT0gLTIpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobGFzdF9kb3QgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCB0b3AtbGV2ZWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgYmFzZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGFja2FnZSwgMCwgbGFzdF9kb3QpOworICAgIFB5X0RFQ1JFRihwYWNrYWdlKTsKKyAgICBpZiAoYmFzZSA9PSBOVUxMIHx8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDApIHsKKyAgICAgICAgcmV0dXJuIGJhc2U7CisgICAgfQorCisgICAgYWJzX25hbWUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUuJVUiLCBiYXNlLCBuYW1lKTsKKyAgICBQeV9ERUNSRUYoYmFzZSk7CisgICAgcmV0dXJuIGFic19uYW1lOworCisgIGVycm9yOgorICAgIFB5X1hERUNSRUYocGFja2FnZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0ICoKK1B5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCkKK3sKICAgICBfUHlfSURFTlRJRklFUihfZmluZF9hbmRfbG9hZCk7CiAgICAgX1B5X0lERU5USUZJRVIoX2hhbmRsZV9mcm9tbGlzdCk7Ci0gICAgX1B5X0lERU5USUZJRVIoX2xvY2tfdW5sb2NrX21vZHVsZSk7Ci0gICAgX1B5X3N0YXRpY19zdHJpbmcoc2luZ2xlX2RvdCwgIi4iKTsKICAgICBQeU9iamVjdCAqYWJzX25hbWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpidWlsdGluc19pbXBvcnQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpmaW5hbF9tb2QgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2QgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYWNrYWdlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZ2xvYmFscyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmZyb21saXN0ID0gTlVMTDsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBpbnQgaGFzX2Zyb207CiAKLSAgICAvKiBNYWtlIHN1cmUgdG8gdXNlIGRlZmF1bHQgdmFsdWVzIHNvIGFzIHRvIG5vdCBoYXZlCi0gICAgICAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKSB0cnVuY2F0ZSB0aGUgcGFyYW1ldGVyIGxpc3QgYmVjYXVzZSBvZiBhCi0gICAgICAgTlVMTCBhcmd1bWVudC4gKi8KLSAgICBpZiAoZ2l2ZW5fZ2xvYmFscyA9PSBOVUxMKSB7Ci0gICAgICAgIGdsb2JhbHMgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIE9ubHkgaGF2ZSB0byBjYXJlIHdoYXQgZ2l2ZW5fZ2xvYmFscyBpcyBpZiBpdCB3aWxsIGJlIHVzZWQKLSAgICAgICAgICAgZm9yIHNvbWV0aGluZy4gKi8KLSAgICAgICAgaWYgKGxldmVsID4gMCAmJiAhUHlEaWN0X0NoZWNrKGdpdmVuX2dsb2JhbHMpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2xvYmFscyBtdXN0IGJlIGEgZGljdCIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBnbG9iYWxzID0gZ2l2ZW5fZ2xvYmFsczsKLSAgICAgICAgUHlfSU5DUkVGKGdsb2JhbHMpOwotICAgIH0KLQotICAgIGlmIChnaXZlbl9mcm9tbGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZyb21saXN0ID0gUHlMaXN0X05ldygwKTsKLSAgICAgICAgaWYgKGZyb21saXN0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZyb21saXN0ID0gZ2l2ZW5fZnJvbWxpc3Q7Ci0gICAgICAgIFB5X0lOQ1JFRihmcm9tbGlzdCk7Ci0gICAgfQogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTQxNSwxNDAgKzE1MTYsNDQgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1vZHVsZSBuYW1lIG11c3QgYmUgYSBzdHJpbmciKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQURZKG5hbWUpIDwgMCkgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZSkgPCAwKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGlmIChsZXZlbCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsZXZlbCBtdXN0IGJlID49IDAiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgZWxzZSBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhY2thZ2VfXyk7Ci0gICAgICAgIGlmIChwYWNrYWdlICE9IE5VTEwgJiYgcGFja2FnZSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7Ci0gICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJwYWNrYWdlIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fbmFtZV9fKTsKLSAgICAgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICInX19uYW1lX18nIG5vdCBpbiBnbG9iYWxzIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZyIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CiAKLSAgICAgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9SUGFydGl0aW9uKHBhY2thZ2UsIGJvcnJvd2VkX2RvdCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhY2thZ2UpOwotICAgICAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYWNrYWdlID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIlBhcmVudCBtb2R1bGUgJVIgbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgotICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgaWYgKGxldmVsID4gMCkgeworICAgICAgICBhYnNfbmFtZSA9IHJlc29sdmVfbmFtZShuYW1lLCBnbG9iYWxzLCBsZXZlbCk7CisgICAgICAgIGlmIChhYnNfbmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsgIC8qIGxldmVsID09IDAgKi8KICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLSAgICAgICAgcGFja2FnZSA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKLSAgICB9Ci0KLSAgICBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbGFzdF9kb3QgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKTsKLSAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBOVUxMOwotICAgICAgICBpbnQgbGV2ZWxfdXAgPSAxOwotCi0gICAgICAgIGZvciAobGV2ZWxfdXAgPSAxOyBsZXZlbF91cCA8IGxldmVsOyBsZXZlbF91cCArPSAxKSB7Ci0gICAgICAgICAgICBsYXN0X2RvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihwYWNrYWdlLCAnLicsIDAsIGxhc3RfZG90LCAtMSk7Ci0gICAgICAgICAgICBpZiAobGFzdF9kb3QgPT0gLTIpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobGFzdF9kb3QgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kIHRvcC1sZXZlbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGJhc2UgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGxhc3RfZG90KTsKLSAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgewotICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCwgKnNlcSA9IE5VTEw7Ci0KLSAgICAgICAgICAgIGJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKLSAgICAgICAgICAgIHNlcSA9IFB5VHVwbGVfUGFjaygyLCBiYXNlLCBuYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKLSAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCB8fCBzZXEgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGFic19uYW1lID0gUHlVbmljb2RlX0pvaW4oYm9ycm93ZWRfZG90LCBzZXEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7Ci0gICAgICAgICAgICBpZiAoYWJzX25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhYnNfbmFtZSA9IGJhc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7CiAgICAgICAgIGFic19uYW1lID0gbmFtZTsKICAgICAgICAgUHlfSU5DUkVGKGFic19uYW1lKTsKICAgICB9CiAKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwotI2VuZGlmCi0gICAvKiBGcm9tIHRoaXMgcG9pbnQgZm9yd2FyZCwgZ290byBlcnJvcl93aXRoX3VubG9jayEgKi8KLSAgICAvKiBYWFggaW50ZXJwLT5idWlsdGluc19jb3B5IGlzIE5VTEwgaW4gc3ViaW50ZXJwcmV0ZXIhICovCi0gICAgYnVpbHRpbnNfaW1wb3J0ID0gX1B5RGljdF9HZXRJdGVtSWQoaW50ZXJwLT5idWlsdGluc19jb3B5ID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zX2NvcHkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+YnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOwotICAgIGlmIChidWlsdGluc19pbXBvcnQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOwotICAgICAgICBnb3RvIGVycm9yX3dpdGhfdW5sb2NrOwotICAgIH0KLSAgICBQeV9JTkNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKLQogICAgIG1vZCA9IFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgYWJzX25hbWUpOwogICAgIGlmIChtb2QgPT0gUHlfTm9uZSkgewogICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImltcG9ydCBvZiAlUiBoYWx0ZWQ7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIiwgYWJzX25hbWUpOwogICAgICAgICBpZiAobXNnICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKG1zZywgYWJzX25hbWUsIE5VTEwpOworICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeUV4Y19Nb2R1bGVOb3RGb3VuZEVycm9yLCBtc2csCisgICAgICAgICAgICAgICAgICAgIGFic19uYW1lLCBOVUxMKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtc2cpOwogICAgICAgICB9CiAgICAgICAgIG1vZCA9IE5VTEw7Ci0gICAgICAgIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2s7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGVsc2UgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fc3BlY19fKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX2luaXRpYWxpemluZyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9sb2NrX3VubG9ja19tb2R1bGUpOwogICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqc3BlYzsKICAgICAgICAgaW50IGluaXRpYWxpemluZyA9IDA7CkBAIC0xNTcxLDkxICsxNTc2LDgzIEBACiAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgaWYgKGluaXRpYWxpemluZyA9PSAtMSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbml0aWFsaXppbmcgPiAwKSB7Ci0gICAgICAgICAgICAvKiBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KLSAgICAgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19sb2NrX3VubG9ja19tb2R1bGUsIGFic19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGluaXRpYWxpemluZyA+IDApIHsKICNpZmRlZiBXSVRIX1RIUkVBRAotICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwogI2VuZGlmCisgICAgICAgICAgICAgICAgLyogX2Jvb3RzdHJhcC5fbG9ja191bmxvY2tfbW9kdWxlKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCisgICAgICAgICAgICAgICAgdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19sb2NrX3VubG9ja19tb2R1bGUsIGFic19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKKyNlbmRpZgogICAgICAgICAvKiBfYm9vdHN0cmFwLl9maW5kX2FuZF9sb2FkKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCiAgICAgICAgIG1vZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZmluZF9hbmRfbG9hZCwgYWJzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5zX2ltcG9ydCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+aW1wb3J0X2Z1bmMsIE5VTEwpOwogICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogRnJvbSBub3cgb24gd2UgZG9uJ3QgaG9sZCB0aGUgaW1wb3J0IGxvY2sgYW55bW9yZS4gKi8KIAotICAgIGhhc19mcm9tID0gUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKLSAgICBpZiAoaGFzX2Zyb20gPCAwKQotICAgICAgICBnb3RvIGVycm9yOworICAgIGhhc19mcm9tID0gMDsKKyAgICBpZiAoZnJvbWxpc3QgIT0gTlVMTCAmJiBmcm9tbGlzdCAhPSBQeV9Ob25lKSB7CisgICAgICAgIGhhc19mcm9tID0gUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKKyAgICAgICAgaWYgKGhhc19mcm9tIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogICAgIGlmICghaGFzX2Zyb20pIHsKLSAgICAgICAgaWYgKGxldmVsID09IDAgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPiAwKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnJvbnQgPSBOVUxMOwotICAgICAgICAgICAgUHlPYmplY3QgKnBhcnRpdGlvbiA9IE5VTEw7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOworICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpOworICAgICAgICBpZiAobGV2ZWwgPT0gMCB8fCBsZW4gPiAwKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGRvdDsKIAotICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCAwLCBsZW4sIDEpOworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMikgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9QYXJ0aXRpb24obmFtZSwgYm9ycm93ZWRfZG90KTsKLSAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChQeVR1cGxlX0dFVF9JVEVNKHBhcnRpdGlvbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAvKiBObyBkb3QgaW4gbW9kdWxlIG5hbWUsIHNpbXBsZSBleGl0ICovCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7CiAgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gbW9kOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2QpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZyb250ID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOwotICAgICAgICAgICAgUHlfSU5DUkVGKGZyb250KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOwotCiAgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMCkgewotICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoYnVpbHRpbnNfaW1wb3J0LCBmcm9udCwgTlVMTCk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZyb250ID0gUHlVbmljb2RlX1N1YnN0cmluZyhuYW1lLCAwLCBkb3QpOworICAgICAgICAgICAgICAgIGlmIChmcm9udCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoZnJvbnQsIE5VTEwsIE5VTEwsIE5VTEwsIDApOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGN1dF9vZmYgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoZnJvbnQpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY3V0X29mZiA9IGxlbiAtIGRvdDsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGFic19uYW1lX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGFic19uYW1lKTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdG9fcmV0dXJuID0gUHlVbmljb2RlX1N1YnN0cmluZyhhYnNfbmFtZSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzX25hbWVfbGVuIC0gY3V0X29mZik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGZyb250KTsKICAgICAgICAgICAgICAgICBpZiAodG9fcmV0dXJuID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBmaW5hbF9tb2QgPSBQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRvX3JldHVybik7CiAgICAgICAgICAgICAgICAgaWYgKGZpbmFsX21vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlUiBub3QgaW4gc3lzLm1vZHVsZXMgYXMgZXhwZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmaW5hbF9tb2QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmluYWxfbW9kKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE2NjYsMjQgKzE2NjMsMTQgQEAKICAgICBlbHNlIHsKICAgICAgICAgZmluYWxfbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19oYW5kbGVfZnJvbWxpc3QsIG1vZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGJ1aWx0aW5zX2ltcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGludGVycC0+aW1wb3J0X2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIH0KLSAgICBnb3RvIGVycm9yOwogCi0gIGVycm9yX3dpdGhfdW5sb2NrOgotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7Ci0gICAgfQotI2VuZGlmCiAgIGVycm9yOgogICAgIFB5X1hERUNSRUYoYWJzX25hbWUpOwotICAgIFB5X1hERUNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKICAgICBQeV9YREVDUkVGKG1vZCk7CiAgICAgUHlfWERFQ1JFRihwYWNrYWdlKTsKLSAgICBQeV9YREVDUkVGKGdsb2JhbHMpOwotICAgIFB5X1hERUNSRUYoZnJvbWxpc3QpOwogICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkKICAgICAgICAgcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMoKTsKICAgICByZXR1cm4gZmluYWxfbW9kOwpAQCAtMTk1OSwxOSArMTk0NiwxNSBAQAogCiAgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CiAgICAgaWYgKGRlZiA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCiAgICAgc3RhdGUgPSBQeU1vZHVsZV9HZXRTdGF0ZShtb2QpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgIC8qIEFscmVhZHkgaW5pdGlhbGl6ZWQ7IHNraXAgcmVsb2FkICovCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIHJldHVybiBQeU1vZHVsZV9FeGVjRGVmKG1vZCwgZGVmKTsKIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmMgYi9QeXRob24vaW1wb3J0ZGwuYwppbmRleCAxYWE1ODVkLi5hYzAzMjg5IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuYworKysgYi9QeXRob24vaW1wb3J0ZGwuYwpAQCAtMjMsOCArMjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCk7CiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IGNoYXIgKmFzY2lpX29ubHlfcHJlZml4ID0gIlB5SW5pdCI7Ci1zdGF0aWMgY29uc3QgY2hhciAqbm9uYXNjaWlfcHJlZml4ID0gIlB5SW5pdFUiOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBhc2NpaV9vbmx5X3ByZWZpeCA9ICJQeUluaXQiOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBub25hc2NpaV9wcmVmaXggPSAiUHlJbml0VSI7CiAKIC8qIEdldCB0aGUgdmFyaWFibGUgcGFydCBvZiBhIG1vZHVsZSdzIGV4cG9ydCBzeW1ib2wgbmFtZS4KICAqIFJldHVybnMgYSBieXRlcyBpbnN0YW5jZS4gRm9yIG5vbi1BU0NJSS1uYW1lZCBtb2R1bGVzLCB0aGUgbmFtZSBpcwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYi5oIGIvUHl0aG9uL2ltcG9ydGxpYi5oCmluZGV4IGE1ZmM5MzYuLjc0OTdmMjIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWIuaAorKysgYi9QeXRob24vaW1wb3J0bGliLmgKQEAgLTEsMTk4OCArMSwxODI0IEBACiAvKiBBdXRvLWdlbmVyYXRlZCBieSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHsKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwxNjksMiwwLDAsMTAwLDAsMCw5MCwwLDAsCi0gICAgMTAwLDEsMCw5NywxLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgMiwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDMsMCw3MSwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCwxMDAsNywwLDEzMSwyLDAsOTAsNCwKLSAgICAwLDEwNSwwLDAsOTAsNSwwLDEwNSwwLDAsOTAsNiwwLDcxLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDEwMCw5LDAsMTAxLDcsMCwxMzEsMywwLAotICAgIDkwLDgsMCw3MSwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDEwMCwxMSwwLAotICAgIDEzMSwyLDAsOTAsOSwwLDcxLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsCi0gICAgMTAwLDEzLDAsMTMxLDIsMCw5MCwxMCwwLDcxLDEwMCwxNCwwLDEwMCwxNSwwLAotICAgIDEzMiwwLDAsMTAwLDE1LDAsMTMxLDIsMCw5MCwxMSwwLDEwMCwxNiwwLDEwMCwKLSAgICAxNywwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwKLSAgICAwLDkwLDEzLDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwxNCwwLAotICAgIDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEwMCwyNSwwLDEzMiwwLDEsOTAsCi0gICAgMTUsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzIsMCwwLDkwLDE2LDAsMTAwLDI4LAotICAgIDAsMTAwLDI5LDAsMTMyLDAsMCw5MCwxNywwLDEwMCwzMCwwLDEwMCwzMSwwLAotICAgIDEzMiwwLDAsOTAsMTgsMCwxMDAsMzIsMCwxMDAsMzMsMCwxMzIsMCwwLDkwLAotICAgIDE5LDAsNzEsMTAwLDM0LDAsMTAwLDM1LDAsMTMyLDAsMCwxMDAsMzUsMCwxMzEsCi0gICAgMiwwLDkwLDIwLDAsNzEsMTAwLDM2LDAsMTAwLDM3LDAsMTMyLDAsMCwxMDAsCi0gICAgMzcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDM4LDAsMTAwLDEsMCwxMDAsMzksCi0gICAgMCwxMDAsMSwwLDEwMCw0MCwwLDEwMCw0MSwwLDEzMiwwLDIsOTAsMjIsMCwKLSAgICAxMDEsMjMsMCwxMzEsMCwwLDkwLDI0LDAsMTAwLDEsMCwxMDAsMSwwLDEwMCwKLSAgICA0MiwwLDEwMCw0MywwLDEzMiwyLDAsOTAsMjUsMCwxMDAsNDQsMCwxMDAsNDUsCi0gICAgMCwxMDAsNDYsMCwxMDAsNDcsMCwxMzIsMCwxLDkwLDI2LDAsMTAwLDQ4LDAsCi0gICAgMTAwLDQ5LDAsMTMyLDAsMCw5MCwyNywwLDEwMCw1MCwwLDEwMCw1MSwwLDEzMiwKLSAgICAwLDAsOTAsMjgsMCwxMDAsNTIsMCwxMDAsNTMsMCwxMzIsMCwwLDkwLDI5LAotICAgIDAsMTAwLDU0LDAsMTAwLDU1LDAsMTMyLDAsMCw5MCwzMCwwLDEwMCw1NiwwLAotICAgIDEwMCw1NywwLDEzMiwwLDAsOTAsMzEsMCwxMDAsNTgsMCwxMDAsNTksMCwxMzIsCi0gICAgMCwwLDkwLDMyLDAsNzEsMTAwLDYwLDAsMTAwLDYxLDAsMTMyLDAsMCwxMDAsCi0gICAgNjEsMCwxMzEsMiwwLDkwLDMzLDAsNzEsMTAwLDYyLDAsMTAwLDYzLDAsMTMyLAotICAgIDAsMCwxMDAsNjMsMCwxMzEsMiwwLDkwLDM0LDAsNzEsMTAwLDY0LDAsMTAwLAotICAgIDY1LDAsMTMyLDAsMCwxMDAsNjUsMCwxMzEsMiwwLDkwLDM1LDAsMTAwLDY2LAotICAgIDAsMTAwLDY3LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw2OCwwLDEwMCw2OSwwLAotICAgIDEzMiwwLDAsOTAsMzcsMCwxMDAsMSwwLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwKLSAgICAxLDAsOTAsMzgsMCwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwwLDkwLDM5LAotICAgIDAsMTAwLDc0LDAsOTAsNDAsMCwxMDEsNDAsMCwxMDAsNzUsMCwyMyw5MCw0MSwKLSAgICAwLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsOTAsNDIsMCwxMDAsNzgsMCwKLSAgICAxMDAsNzksMCwxMzIsMCwwLDkwLDQzLDAsMTAwLDEsMCwxMDAsODAsMCwxMDAsCi0gICAgODEsMCwxMDAsODIsMCwxMzIsMiwwLDkwLDQ0LDAsMTAwLDgzLDAsMTAwLDg0LAotICAgIDAsMTMyLDAsMCw5MCw0NSwwLDEwMCw4NSwwLDEwMCw4NiwwLDEzMiwwLDAsCi0gICAgOTAsNDYsMCwxMDAsMSwwLDEwMCwxLDAsMTAyLDAsMCwxMDAsODAsMCwxMDAsCi0gICAgODcsMCwxMDAsODgsMCwxMzIsNCwwLDkwLDQ3LDAsMTAwLDg5LDAsMTAwLDkwLAotICAgIDAsMTMyLDAsMCw5MCw0OCwwLDEwMCw5MSwwLDEwMCw5MiwwLDEzMiwwLDAsCi0gICAgOTAsNDksMCwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwwLDkwLDUwLDAsMTAwLAotICAgIDEsMCw4Myw0MSw5NSw5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsCi0gICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsCi0gICAgMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwKLSAgICAxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LAotICAgIDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLAotICAgIDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsCi0gICAgMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwKLSAgICAxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LAotICAgIDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCi0gICAgMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsCi0gICAgMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsNzgsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsOTIsMCwwLDAsMTIwLDY2LDAsMTAwLDEsMCwxMDAsMiwKLSAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwwLDY4LDkzLDQ2LDAsMTI1LDIsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNCwxOSwwLAotICAgIDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLDExNiwyLDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTMxLDMsMCwxLDExMywxOSwwLDg3LDEyNCwwLDAsCi0gICAgMTA2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEsCi0gICAgMTAwLDUsMCw4Myw0MSw2LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwKLSAgICAxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksCi0gICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LAotICAgIDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwKLSAgICAxMTEsOTksOTUsOTUsNzgsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAotICAgIDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwKLSAgICAxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsCi0gICAgMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsCi0gICAgMjE4LDcsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxNjksMCwxMTQsMTAsMCwwLDAsCi0gICAgMjUwLDI5LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDIxOCwKLSAgICA1LDk1LDExOSwxMTQsOTcsMTEyLDI3LDAsMCwwLDExNSw4LDAsMCwwLDAsCi0gICAgMiwyNSwxLDE1LDEsMjksMSwxMTQsMTIsMCwwLDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMTYsMTIxLDExMiwKLSAgICAxMDEsMjE4LDMsMTE1LDEyMSwxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsOTUsCi0gICAgMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzUsMCwwLDAsMTE1LDIsCi0gICAgMCwwLDAsMCwxLDExNCwxNiwwLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDgzLDQxLDksCi0gICAgMjE4LDEzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCwxMjIsCi0gICAgNjMsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTEsMTE1LAotICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiw5OSwxMDgsMTAxLDk3LDExMCw0NSwxMTcsMTEyLDMyLDExMSwKLSAgICAxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDQ2LAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICA5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsMjE4LDUsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDE1LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICA4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MywwLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsCi0gICAgMTExLDk3LDEwMCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTA2LAotICAgIDIsMCwxMDcsNiwwLDEyNCwwLDAsOTUsMywwLDEwMCwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSw0LDExNCwxOCwwLDAsMCwxMTQsMTQsMCwwLDAsMjE4LDcsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCwxMCw5NSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LAotICAgIDExMSw5NywxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCi0gICAgMTAxLDExNCw5NSw5NSw0NiwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDExLDAsMCwwLDcxLDAsMCwwLDExNSw3NywwLAotICAgIDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLAotICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNCw3MywwLDEyNCwwLDAsMTA2LDEsCi0gICAgMCwxMiwxMTQsNzMsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsCi0gICAgMCwxMDYsNCwwLDYxLDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKLSAgICAxMTQsNzIsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsCi0gICAgMyw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAotICAgIDAsMCwwLDExNSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywKLSAgICAxNywwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwKLSAgICAxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsCi0gICAgMiwyMTgsMiw0Niw0OCwyMTgsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwKLSAgICAxMjAsMTEyLDExNCw2Miw1MCwwLDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLAotICAgIDQxLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw2LDIxOCwzLDk3LDExMCwKLSAgICAxMjEsMTE0LDIyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCi0gICAgMTE0LDE4LDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDEwMSwKLSAgICAxMjAsMTA1LDExNiw5NSw5NSw0OSwwLDAsMCwxMTUsMTAsMCwwLDAsMCwxLAotICAgIDM1LDEsMywxLDE3LDEsMTMsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKLSAgICA3OCw0MSw3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCi0gICAgMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwwLAotICAgIDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTcsMCwwLDAsMzksCi0gICAgMCwwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsMywxMiwzLAotICAgIDExNCwxNywwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDEsCi0gICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwzMSwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwxMiwxLDExNCwzMSwwLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKLSAgICAwLDExNSw4MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCi0gICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAotICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCwKLSAgICA5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsCi0gICAgMCw5MCw4LDAsMTAwLDEyLDAsODMsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwKLSAgICAxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsCi0gICAgMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LAotICAgIDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwKLSAgICAxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwKLSAgICAxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsCi0gICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzAsMCwwLDAsMTE2LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwyLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsOTUsNSwwLDEwMCwxLDAsMTI0LAotICAgIDAsMCw5NSw2LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDcsMCwxMDAsMCwKLSAgICAwLDgzLDQxLDIsNzgsMjMzLDAsMCwwLDAsNDEsOCwyMTgsNyw5NSwxMTYsCi0gICAgMTA0LDExNCwxMDEsOTcsMTAwLDkwLDEzLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMjE4LDQsMTA4LDExMSw5OSwxMDcsMjE4LDYsMTE5LDk3LDEwNywxMDEsCi0gICAgMTE3LDExMiwxMTQsMTUsMCwwLDAsMjE4LDUsMTExLDExOSwxMTAsMTAxLDExNCwyMTgsNSwKLSAgICA5OSwxMTEsMTE3LDExMCwxMTYsMjE4LDcsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDEsMiwKLSAgICAxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCw3NCwwLAotICAgIDAsMCwxMTUsMTIsMCwwLDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwKLSAgICAxLDksMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMjUsMiwwLDEyMCw2MCwwLDExNiwzLDAsMTA2LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwwLDAsCi0gICAgMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDIsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwwLDEwMCwKLSAgICAyLDAsODMsMTEzLDI0LDAsODcsMTAwLDAsMCw4Myw0MSwzLDc4LDcwLDg0LAotICAgIDQxLDUsMTE0LDM0LDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLAotICAgIDExMCwxMTYsMTE0LDM3LDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsCi0gICAgMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDE5LDAsMCwKLSAgICAwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEyLAotICAgIDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsODIsMCwwLDAsCi0gICAgMTE1LDE4LDAsMCwwLDAsMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwKLSAgICAxLDQsMSw5LDEsMTIsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKLSAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTYsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDIxMCwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTE2LDIsMCwxMjQsMSwwLAotICAgIDYwLDEyMiwxNzMsMCwxMjAsMTY2LDAsMTI0LDAsMCwxMDYsMywwLDE0MywxMjQsMCwKLSAgICAxLDEyNCwwLDAsMTA2LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE1LDY4LDAsCi0gICAgMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsMCwxMjQsCi0gICAgMSwwLDEyNCwwLDAsOTUsNSwwLDEyNCwwLDAsNCwxMDYsNCwwLDEwMCwKLSAgICAyLDAsNTUsMiw5NSw0LDAsMTAwLDMsMCw4MywxMjQsMCwwLDEwNiw2LAotICAgIDAsMTMxLDAsMCwxMTQsMTI0LDAsMTE2LDcsMCwxMDAsNCwwLDEyNCwwLDAsCi0gICAgMjIsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLAotICAgIDEwMCw1LDAsMTMxLDEsMCwxMTQsMTU3LDAsMTI0LDAsMCw0LDEwNiwxMCwwLAotICAgIDEwMCwyLDAsNTUsMiw5NSwxMCwwLDg3LDEwMCw2LDAsODEsODIsODgsMTI0LAotICAgIDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLDEyNCwwLDAsMTA2LAotICAgIDgsMCwxMDYsMTEsMCwxMzEsMCwwLDEsMTEzLDI4LDAsODcsODcsMTAwLDYsCi0gICAgMCwxMTYsMiwwLDEyNCwxLDAsNjEsODgsMTAwLDYsMCw4Myw0MSw3LDEyMiwKLSAgICAxODUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNyw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LAotICAgIDk3LDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwKLSAgICAxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw5NywzMiw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsCi0gICAgMTIxLDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwKLSAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzMsMCwwLDAsMjMzLAotICAgIDEsMCwwLDAsODQsMTIyLDIzLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLAotICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLDc4LAotICAgIDQxLDEyLDExNCwzNCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDExNCw0NCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDM2LDAsMCwwLDIxOCwKLSAgICA3LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE0LDM5LDAsMCwwLDIxOCw3LDExNCwKLSAgICAxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsNDYsMCwwLDAsOTQsMCwwLDAsMTE1LDMyLDAsMCwwLDAsCi0gICAgNiwxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLDEsOSwxLDE1LAotICAgIDEsNCwxLDEyLDEsMTYsMSwxOCwxLDIyLDIsMTMsMSwyMSwyLDEyMiwKLSAgICAxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsMTU3LDAsMCwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMiwwLAotICAgIDE0MywxMjksMCwxLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLDEwNywzLDAsCi0gICAgMTE0LDQ5LDAsMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsCi0gICAgMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsNCwwLDExNSw3MCwwLDExNiw2LAotICAgIDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDUsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNSwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNywyLDAsMTE0LAotICAgIDE0NiwwLDEwMCwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDAsMCwxMDYsNywKLSAgICAwLDExNCwxNDYsMCwxMjQsMCwwLDQsMTA2LDcsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNywwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwKLSAgICA4NywxMDAsMCwwLDgxLDgyLDg4LDEwMCwwLDAsODMsNDEsNCw3OCwxMjIsMzEsCi0gICAgOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywKLSAgICAxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LAotICAgIDMzLDAsMCwwLDExNCw0NSwwLDAsMCw0MSwxMCwxMTQsMzQsMCwwLDAsCi0gICAgMTE0LDQwLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LAotICAgIDEyLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwKLSAgICAwLDAsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDExNCwzOSwwLDAsMCwxMTQsMzYsMCwwLDAsMTE0LDQ3LDAsMCwKLSAgICAwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLAotICAgIDAsMTE5LDAsMCwwLDExNSwyMiwwLDAsMCwwLDEsMTIsMSwxMCwxLAotICAgIDE1LDEsMTIsMSwyMSwxLDE1LDEsMTUsMSw5LDEsOSwxLDE1LDEsCi0gICAgMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLAotICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMDAsCi0gICAgMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDAsCi0gICAgMCwxMzEsMSwwLDEzMSwyLDAsODMsNDEsMiw3OCwxMjIsMjMsOTUsNzcsMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LAotICAgIDExNiwzMiwxMjMsMTI1LDQxLDMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTQsMTUsCi0gICAgMCwwLDAsMjE4LDIsMTA1LDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSwKLSAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMTMyLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LAotICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw5LDExNCwxLDAsMCwwLAotICAgIDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwKLSAgICAyMCwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywKLSAgICAwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMiwwLDAsCi0gICAgMCw2OCwwLDAsMCwxMTUsMTIsMCwwLDAsMTIsNCw2LDIsMTIsOCwKLSAgICAxMiwxMiwxMiwyNSwxMiwxMywxMTQsMzIsMCwwLDAsOTksMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAotICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCi0gICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwKLSAgICAwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxNiw5NSwKLSAgICA2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDEyMiwKLSAgICA4Niw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksCi0gICAgMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LAotICAgIDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwKLSAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDEsMCwxMjQsMCwwLAotICAgIDk1LDEsMCwxMDAsMCwwLDgzLDQxLDIsNzgsMTE0LDMzLDAsMCwwLDQxLAotICAgIDIsMTE0LDE1LDAsMCwwLDExNCwzOCwwLDAsMCw0MSwyLDExNCwxOSwwLAotICAgIDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDE0MCwwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEsOSwxLDEyMiwyNSw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMjAyLDEsMCwwLDEwMCwwLDkwLDAsMTAwLDEsCisgICAgOTcsMSwxMDAsMiwxMDAsMywxMzIsMCw5MCwyLDEwMCw0LDEwMCw1LDEzMiwwLAorICAgIDkwLDMsMTA1LDAsOTAsNCwxMDUsMCw5MCw1LDcxLDAsMTAwLDYsMTAwLDcsCisgICAgMTMyLDAsMTAwLDcsMTAxLDYsMTMxLDMsOTAsNyw3MSwwLDEwMCw4LDEwMCw5LAorICAgIDEzMiwwLDEwMCw5LDEzMSwyLDkwLDgsNzEsMCwxMDAsMTAsMTAwLDExLDEzMiwwLAorICAgIDEwMCwxMSwxMzEsMiw5MCw5LDcxLDAsMTAwLDEyLDEwMCwxMywxMzIsMCwxMDAsMTMsCisgICAgMTMxLDIsOTAsMTAsMTAwLDE0LDEwMCwxNSwxMzIsMCw5MCwxMSwxMDAsMTYsMTAwLDE3LAorICAgIDEzMiwwLDkwLDEyLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTMsMTAwLDIwLDEwMCwyMSwKKyAgICAxNTYsMSwxMDAsMjIsMTAwLDIzLDEzMiwyLDkwLDE0LDEwMCwyNCwxMDAsMjUsMTMyLDAsCisgICAgOTAsMTUsMTAwLDI2LDEwMCwyNywxMzIsMCw5MCwxNiwxMDAsMjgsMTAwLDI5LDEzMiwwLAorICAgIDkwLDE3LDEwMCwzMCwxMDAsMzEsMTMyLDAsOTAsMTgsNzEsMCwxMDAsMzIsMTAwLDMzLAorICAgIDEzMiwwLDEwMCwzMywxMzEsMiw5MCwxOSw3MSwwLDEwMCwzNCwxMDAsMzUsMTMyLDAsCisgICAgMTAwLDM1LDEzMSwyLDkwLDIwLDEwMCwxLDEwMCwxLDEwMCwzNiwxNTYsMiwxMDAsMzcsCisgICAgMTAwLDM4LDEzMiwyLDkwLDIxLDEwMSwyMiwxMzEsMCw5MCwyMywxMDAsOTIsMTAwLDM5LAorICAgIDEwMCw0MCwxMzIsMSw5MCwyNCwxMDAsNDEsMTAwLDQyLDE1NiwxLDEwMCw0MywxMDAsNDQsCisgICAgMTMyLDIsOTAsMjUsMTAwLDQ1LDEwMCw0NiwxMzIsMCw5MCwyNiwxMDAsNDcsMTAwLDQ4LAorICAgIDEzMiwwLDkwLDI3LDEwMCw0OSwxMDAsNTAsMTMyLDAsOTAsMjgsMTAwLDUxLDEwMCw1MiwKKyAgICAxMzIsMCw5MCwyOSwxMDAsNTMsMTAwLDU0LDEzMiwwLDkwLDMwLDEwMCw1NSwxMDAsNTYsCisgICAgMTMyLDAsOTAsMzEsNzEsMCwxMDAsNTcsMTAwLDU4LDEzMiwwLDEwMCw1OCwxMzEsMiwKKyAgICA5MCwzMiw3MSwwLDEwMCw1OSwxMDAsNjAsMTMyLDAsMTAwLDYwLDEzMSwyLDkwLDMzLAorICAgIDcxLDAsMTAwLDYxLDEwMCw2MiwxMzIsMCwxMDAsNjIsMTMxLDIsOTAsMzQsMTAwLDYzLAorICAgIDEwMCw2NCwxMzIsMCw5MCwzNSwxMDAsNjUsMTAwLDY2LDEzMiwwLDkwLDM2LDEwMCw5MywKKyAgICAxMDAsNjcsMTAwLDY4LDEzMiwxLDkwLDM3LDEwMCw2OSwxMDAsNzAsMTMyLDAsOTAsMzgsCisgICAgMTAwLDcxLDkwLDM5LDEwMSwzOSwxMDAsNzIsMjMsMCw5MCw0MCwxMDAsNzMsMTAwLDc0LAorICAgIDEzMiwwLDkwLDQxLDEwMCw3NSwxMDAsNzYsMTMyLDAsOTAsNDIsMTAwLDk0LDEwMCw3OCwKKyAgICAxMDAsNzksMTMyLDEsOTAsNDMsMTAwLDgwLDEwMCw4MSwxMzIsMCw5MCw0NCwxMDAsODIsCisgICAgMTAwLDgzLDEzMiwwLDkwLDQ1LDEwMCwxLDEwMCwxLDEwMiwwLDEwMCw3NywxMDIsNCwKKyAgICAxMDAsODQsMTAwLDg1LDEzMiwxLDkwLDQ2LDEwMCw4NiwxMDAsODcsMTMyLDAsOTAsNDcsCisgICAgMTAwLDg4LDEwMCw4OSwxMzIsMCw5MCw0OCwxMDAsOTAsMTAwLDkxLDEzMiwwLDkwLDQ5LAorICAgIDEwMCwxLDgzLDAsNDEsOTUsOTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwKKyAgICAxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLAorICAgIDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwKKyAgICAxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLAorICAgIDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLAorICAgIDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LAorICAgIDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwKKyAgICAxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LAorICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiwKKyAgICA2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLAorICAgIDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsCisgICAgMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsCisgICAgOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsCisgICAgOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCisgICAgMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDc4LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDYwLDAsMCwwLDEyMCw0MCwxMDAsNiw2OCwwLDkzLAorICAgIDMyLDEyNSwyLDExNiwwLDEyNCwxLDEyNCwyLDEzMSwyLDExNCw2LDExNiwxLDEyNCwKKyAgICAwLDEyNCwyLDExNiwyLDEyNCwxLDEyNCwyLDEzMSwyLDEzMSwzLDEsMCwxMTMsCisgICAgNiw4NywwLDEyNCwwLDEwNiwzLDEwNiw0LDEyNCwxLDEwNiwzLDEzMSwxLDEsCisgICAgMCwxMDAsNSw4MywwLDQxLDcsMTIyLDQ3LDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsCisgICAgMTE1LDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDIxOCwxMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsMTIsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDcsOTUsOTUsCisgICAgMTAwLDExMSw5OSw5NSw5NSw3OCw0MSw0LDExNCwwLDAsMCwwLDExNCwxLDAsCisgICAgMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDQxLDUsMjE4LDcsCisgICAgMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKKyAgICAyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LAorICAgIDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsCisgICAgMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsCisgICAgMTY5LDAsMTE0LDEwLDAsMCwwLDI1MCwyOSw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwyMTgsNSw5NSwxMTksMTE0LDk3LDExMiwyNywwLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDIsMTAsMSwxMCwxLDIyLDEsMTE0LDEyLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDExNiwKKyAgICAxLDEzMSwxLDEyNCwwLDEzMSwxLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw0LAorICAgIDExNiwxMjEsMTEyLDEwMSwyMTgsMywxMTUsMTIxLDExNSw0MSwxLDIxOCw0LDExMCw5NywxMDksCisgICAgMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMSw5NSwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzNSwwLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTE0LDE2LDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNjQsMCwKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsCisgICAgMSw4MywwLDQxLDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwKKyAgICAwLDAsMTE0LDIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNywwLDAsMCwKKyAgICA0NywwLDAsMCwxMTUsMiwwLDAsMCw4LDEsMTE0LDE3LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDU2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsCisgICAgOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsCisgICAgMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCw5MCw2LDEwMCw4LAorICAgIDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDEwMCwxMSwxMzIsMCw5MCw4LDEwMCwxMiwKKyAgICA4MywwLDQxLDEzLDIxOCwxMSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwKKyAgICAxMDcsMTIyLDE2OSw2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwKKyAgICAxMTEsOTksMTA3LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDExNSwzMiw5Nyw5OCwxMDgsMTAxLAorICAgIDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsCisgICAgMTExLDk5LDEwNywxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY1LDMyLDExNiwKKyAgICAxMDQsMTAxLDExMCwzMiw2Niw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTE0LDEwMSw5NywKKyAgICAxMDAsMzIsNTAsMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjYsMzIsMTE2LAorICAgIDEwNCwxMDEsMTEwLDMyLDY1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQ4LDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNCwwLDk1LDIsCisgICAgMTE2LDAsMTA2LDEsMTMxLDAsMTI0LDAsOTUsMywxMjQsMSwxMjQsMCw5NSw0LAorICAgIDEwMCwwLDEyNCwwLDk1LDUsMTAwLDEsMTI0LDAsOTUsNiwxMDAsMSwxMjQsMCwKKyAgICA5NSw3LDEwMCwwLDgzLDAsNDEsMiw3OCwyMzMsMCwwLDAsMCw0MSw4LAorICAgIDIxOCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTAsMTMsOTcsMTA4LDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwMSw5NSwxMDgsMTExLDk5LDEwNywyMTgsNCwxMDgsMTExLDk5LDEwNywyMTgsNiwKKyAgICAxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNCwxNSwwLDAsMCwyMTgsNSwxMTEsMTE5LDExMCwKKyAgICAxMDEsMTE0LDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwyMTgsNywxMTksOTcsMTA1LDExNiwxMDEsCisgICAgMTE0LDExNSw0MSwyLDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDU3LDAsMCwwLDExNSwxMiwwLDAsCisgICAgMCwwLDEsMTAsMSwxMCwxLDYsMSw2LDEsNiwxLDEyMiwyMCw5NSwKICAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsCi0gICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwwLDAsCi0gICAgNCwxMDYsMCwwLDEwMCwxLDAsNTUsMiw5NSwwLDAsMTAwLDIsMCw4MywKLSAgICA0MSwzLDc4LDExNCw0NSwwLDAsMCw4NCw0MSwxLDExNCwzOCwwLDAsMCwKLSAgICA0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsNDYsMCwwLDAsMTQ0LDAsMCwwLDExNSwKLSAgICA0LDAsMCwwLDAsMSwxNSwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCi0gICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LAotICAgIDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMSwwLDEwMCwyLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwzLAotICAgIDAsNTYsMiw5NSwwLDAsMTAwLDAsMCw4Myw0MSw0LDc4LDExNCwzMywwLAotICAgIDAsMCwxMjIsMzEsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywKLSAgICAxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMTE0LDQ1LDAsMCwwLDQxLDIsMTE0LDM4LDAsMCwwLDExNCwKLSAgICA0OCwwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLDAsMTQ4LAotICAgIDAsMCwwLDExNSw2LDAsMCwwLDAsMSwxNSwxLDEyLDEsMTIyLDI0LAorICAgIDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSw2NCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxMjUsMSwxMjQsMCwxMDYsMiwxMjUsMiwxMjAsNDQsMTE2LDMsMTA2LAorICAgIDQsMTI0LDIsMTMxLDEsMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDM4LDEwMCwKKyAgICAxLDgzLDAsMTI0LDMsMTA2LDIsMTI1LDIsMTI0LDIsMTI0LDEsMTA3LDIsMTE0LAorICAgIDE2LDEwMCwyLDgzLDAsMTEzLDE2LDg3LDAsMTAwLDAsODMsMCw0MSwzLDc4LAorICAgIDcwLDg0LDQxLDUsMTE0LDIwLDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwKKyAgICAxMDAsMTAxLDExMCwxMTYsMTE0LDIzLDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LAorICAgIDEwNywxMDUsMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDI2LAorICAgIDAsMCwwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMjEsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDEyLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjUsMCwKKyAgICAwLDAsMTE1LDE4LDAsMCwwLDAsMiw4LDEsNiwxLDIsMSwxMCwKKyAgICAxLDgsMSw0LDEsNiwxLDgsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDE2OCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxMjUsMSwxMjQsMCwxMTYsMiwxMjQsMSw2MCwwLDEyMiwxMzgsMTIwLAorICAgIDEzMiwxMjQsMCwxMDYsMywxNDMsOTYsMSwwLDEyNCwwLDEwNiw0LDEwMCwxLDEwNywKKyAgICAyLDExNSw0OCwxMjQsMCwxMDYsNSwxMjQsMSwxMDcsMiwxMTQsNzIsMTI0LDEsMTI0LAorICAgIDAsOTUsNSwxMjQsMCw0LDAsMTA2LDQsMTAwLDIsNTUsMCwyLDAsOTUsCisgICAgNCwxMDAsMyw4MywwLDEyNCwwLDEwNiw2LDEzMSwwLDExNCw5MiwxMTYsNywxMDAsCisgICAgNCwxMjQsMCwyMiwwLDEzMSwxLDEzMCwxLDEyNCwwLDEwNiw4LDEwNiw5LDEwMCwKKyAgICA1LDEzMSwxLDExNCwxMTgsMTI0LDAsNCwwLDEwNiwxMCwxMDAsMiw1NSwwLDIsCisgICAgMCw5NSwxMCw4NywwLDEwMCw2LDgxLDAsODIsMCw4OCwwLDEyNCwwLDEwNiwKKyAgICA4LDEwNiw5LDEzMSwwLDEsMCwxMjQsMCwxMDYsOCwxMDYsMTEsMTMxLDAsMSwKKyAgICAwLDExMywyMCw4NywwLDg3LDAsMTAwLDYsMTE2LDIsMTI0LDEsNjEsMCw4OCwKKyAgICAwLDEwMCw2LDgzLDAsNDEsNywxMjIsMTg1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LAorICAgIDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwKKyAgICAxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LAorICAgIDExNSwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsCisgICAgMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCisgICAgMzIsMTA1LDExNSwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMDAsMzIsOTcsMTEwLDEwMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE0LDE5LDAsMCwwLDIzMywxLDAsMCwwLDg0LDEyMiwyMywxMDAsCisgICAgMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDM3LDExNCw3MCw3OCw0MSwxMiwxMTQsMjAsMCwwLDAsMTE0LAorICAgIDI4LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDI0LAorICAgIDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsMCwwLDAsMTE0LDE3LDAsCisgICAgMCwwLDExNCwyMiwwLDAsMCwyMTgsNyw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLAorICAgIDExNCwyNSwwLDAsMCwyMTgsNywxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw0MSwyLAorICAgIDExNCwyNiwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDM0LDAsMCwwLDc3LDAsCisgICAgMCwwLDExNSwzMiwwLDAsMCwwLDYsOCwxLDgsMSwyLDEsMiwKKyAgICAxLDgsMSwyMCwxLDYsMSwxNCwxLDQsMSw4LDEsMTIsMSwxMiwKKyAgICAxLDI0LDIsMTAsMSwxOCwyLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTIyLDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNSwxLDEyNCwwLAorICAgIDEwNiwyLDE0Myw5OCwxLDAsMTI0LDAsMTA2LDMsMTI0LDEsMTA3LDMsMTE0LDM0LAorICAgIDExNiw0LDEwMCwxLDEzMSwxLDEzMCwxLDEyNCwwLDEwNiw1LDEwMCwyLDEwNyw0LAorICAgIDExNSw0OCwxMTYsNiwxMzAsMSwxMjQsMCw0LDAsMTA2LDUsMTAwLDMsNTYsMCwKKyAgICAyLDAsOTUsNSwxMjQsMCwxMDYsNSwxMDAsMiwxMDcsMiwxMTQsMTA4LDEwMCwwLAorICAgIDEyNCwwLDk1LDMsMTI0LDAsMTA2LDcsMTE0LDEwOCwxMjQsMCw0LDAsMTA2LDcsCisgICAgMTAwLDMsNTYsMCwyLDAsOTUsNywxMjQsMCwxMDYsOCwxMDYsOSwxMzEsMCwKKyAgICAxLDAsODcsMCwxMDAsMCw4MSwwLDgyLDAsODgsMCwxMDAsMCw4MywwLAorICAgIDQxLDQsNzgsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDExNCwxOSwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsMTAsCisgICAgMTE0LDIwLDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LAorICAgIDIzLDAsMCwwLDIxOCwxMiw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDI0LDAsMCwwLDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjUsMCwwLDAsMTE0LDIyLDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwxMTQsMzEsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDEwMiwwLDAsMCwxMTUsMjIsMCwwLDAsMCwKKyAgICAxLDgsMSw4LDEsMTAsMSw4LDEsMTQsMSwxNCwxLDEwLDEsNiwKKyAgICAxLDYsMSwxNCwxLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTgsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LDEsMTE2LDIsMTI0LDAsCisgICAgMTMxLDEsMTMxLDIsODMsMCw0MSwyLDc4LDEyMiwyMyw5NSw3NywxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLAorICAgIDEyMywxMjUsNDEsMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNCwxNSwwLDAsCisgICAgMCwyMTgsMiwxMDUsMTAwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCw5NSw5NSwxMTUsMCwwLDAsMTE1LDIsMCwwLDAsMCwxLAorICAgIDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsCisgICAgMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLDksMTE0LDEsMCwwLDAsMTE0LDAsCisgICAgMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDI3LDAsCisgICAgMCwwLDExNCwzMiwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LDM1LDAsMCwKKyAgICAwLDExNCw0MCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE4LDAsMCwwLDUxLAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCw4LDQsNCwyLDgsOCw4LDEyLAorICAgIDgsMjUsOCwxMywxMTQsMTgsMCwwLDAsOTksMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDgsCisgICAgMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLAorICAgIDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCwKKyAgICA2LDEwMCw3LDEzMiwwLDkwLDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsCisgICAgMTAsODMsMCw0MSwxMSwyMTgsMTYsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsODYsNjUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwKKyAgICAxMDEsMzIsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwxMTYsCisgICAgMTA0LDExMSwxMTAsMzIsOTgsMTE3LDEwNSwxMDgsMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTExLAorICAgIDExNywxMTYsMTAsMzIsMzIsMzIsMzIsMTA5LDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LDExNCwKKyAgICAxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0Niw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwKKyAgICAxLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwyLDc4LDExNCwxOSwwLDAsCisgICAgMCw0MSwyLDExNCwxNSwwLDAsMCwxMTQsMjQsMCwwLDAsNDEsMiwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyNywwLDAsMCwxMjMsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMCwxLDYsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTI0LAorICAgIDAsNCwwLDEwNiwwLDEwMCwxLDU1LDAsMiwwLDk1LDAsMTAwLDIsODMsCisgICAgMCw0MSwzLDc4LDExNCwzMywwLDAsMCw4NCw0MSwxLDExNCwyNCwwLDAsCisgICAgMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMzQsMCwwLDAsMTI3LDAsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsMSwxNCwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwKKyAgICAxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTAwLDEsMTA3LDIsMTE0LDE4LDExNiwxLDEwMCwyLDEzMSwxLDEzMCwxLDEyNCwKKyAgICAwLDQsMCwxMDYsMCwxMDAsMyw1NiwwLDIsMCw5NSwwLDEwMCwwLDgzLAorICAgIDAsNDEsNCw3OCwxMTQsMTksMCwwLDAsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLAorICAgIDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywKKyAgICAxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDExNCwzMywwLDAsMCw0MSwKKyAgICAyLDExNCwyNCwwLDAsMCwxMTQsMzYsMCwwLDAsNDEsMSwxMTQsMjYsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDEzMSwwLDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDEsMTAsMSw4LDEsMTIyLDI0LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LAorICAgIDEsMTE2LDIsMTI0LDAsMTMxLDEsMTMxLDIsODMsMCw0MSwyLDc4LDEyMiwyOCwKICAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsCi0gICAgMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTE2LDIsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwyLDc4LDEyMiwyOCwKLSAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDUwLAotICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsNTEsMCwwLDAsNDEsMSwxMTQsCi0gICAgMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDUyLDAsMCwwLDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsMzgsCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwzOSwwLDAsMCw0MSwxLDExNCwKKyAgICAyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsNDAsMCwwLDAsMTM2LDAsMCwwLDExNSwyLDAsMCwKICAgICAwLDAsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwKICAgICAxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsCiAgICAgOCwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKLSAgICA0NywwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MywwLAotICAgIDAsMCwxMzYsMCwwLDAsMTE1LDEwLDAsMCwwLDEyLDIsNiwyLDEyLAotICAgIDQsMTIsNCwxMiw1LDExNCw1MywwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsCisgICAgMzUsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDEsMCwKKyAgICAwLDAsMTE5LDAsMCwwLDExNSwxMCwwLDAsMCw4LDIsNCwyLDgsCisgICAgNCw4LDQsOCw1LDExNCw0MSwwLDAsMCw5OSwwLDAsMCwwLDAsCiAgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsCi0gICAgNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwKLSAgICAwLDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE4LDk1LDc3LDExMSwxMDAsCisgICAgMzYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDEwMCwyLAorICAgIDEzMiwwLDkwLDMsMTAwLDMsMTAwLDQsMTMyLDAsOTAsNCwxMDAsNSwxMDAsNiwKKyAgICAxMzIsMCw5MCw1LDEwMCw3LDgzLDAsNDEsOCwyMTgsMTgsOTUsNzcsMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw5OSwyLAogICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwKLSAgICAwLDEwMCwwLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwxLAotICAgIDc4LDQxLDIsMTE0LDE4LDAsMCwwLDIxOCw1LDk1LDEwOCwxMTEsOTksMTA3LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsMTU5LAotICAgIDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI3LDk1LDc3LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsCi0gICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSw1MywKLSAgICAwLDAsMCwxMjIsMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDEyNCwwLDAsOTUsMiwwLDg3LDEwMCwwLDAsMTE2LDMsMCwxMDYsCi0gICAgNCwwLDEzMSwwLDAsMSw4OCwxMjQsMCwwLDEwNiwyLDAsMTA2LDUsMCwKLSAgICAxMzEsMCwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDYsMjE4LDE2LDk1LAotICAgIDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCwKLSAgICAxOCwwLDAsMCwxMTQsNTUsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwxMTIsMjE4LAotICAgIDEyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCw0NiwwLAotICAgIDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjMsMCwwLDAsMTYzLDAsMCwKLSAgICAwLDExNSw4LDAsMCwwLDAsMSwzLDEsMjIsMiwxMSwxLDEyMiwyOCwKLSAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMSwwLDAsMCw3OSwwLDAsCi0gICAgMCwxMTUsMTcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCw1NSwwLDAsCi0gICAgMCwxMTQsNDcsMCwwLDAsNDEsMywxMTQsMTksMCwwLDAsMTE0LDI5LDAsCi0gICAgMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsMCwwLDAsMTcwLDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwKLSAgICAxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwKLSAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsCi0gICAgMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDU0LDAsMCwwLAotICAgIDE1NywwLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsCi0gICAgNTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsMTM5LDAsMCwwLDEwMCwxLAotICAgIDAsMTI1LDEsMCwxMjEsMTcsMCwxMTYsMCwwLDEzNiwwLDAsMjUsMTMxLDAsCi0gICAgMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsCi0gICAgNDMsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCwxMzUsMCwxMTYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCi0gICAgODMsMCwxMTYsMywwLDEzNiwwLDAsMTMxLDEsMCwxMjUsMSwwLDExMCwxMiwKLSAgICAwLDExNiw0LDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTM1LDAsMCwKLSAgICAxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDEyNSwyLDAsMTE2LAotICAgIDUsMCwxMDYsNiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNiwwLAotICAgIDAsMTM2LDAsMCw2MCwxMjQsMSwwLDgzLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LAotICAgIDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LAotICAgIDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKLSAgICAxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksCi0gICAgMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsCi0gICAgMTE1LDExLDAsMCwwLDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsOTUsNDEsMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMiw5OSw5OCwxOTAsMCwKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LAotICAgIDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsNywxMTQsNTksMCwwLDAsMTE0LDI4LAotICAgIDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDIxOCw4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDMsMTE0LDEwMSwKLSAgICAxMDIsNDEsMywxMTQsMTUsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw2MSwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCw1NiwwLDAsMCwxNzYsMCwwLDAsMTE1LDI0LDAsMCwKLSAgICAwLDAsNCw2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwxMiwKLSAgICAxLDE1LDIsMTIsMSwxOCwyLDIyLDEsMTE0LDU2LDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLDE0LAotICAgIDAsMTI0LDEsMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCw0LAotICAgIDExNiw0LDAsMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLDAsCi0gICAgODgsMTI0LDEsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLDQxLAotICAgIDIsOTcsMjEsMSwwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgMTA4LDExMSw5OSwxMDcsNDQsMzIsOTcsMTEwLDEwMCwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LAorICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwwLAorICAgIDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsMjE4LDUsOTUsMTA4LDExMSw5OSwxMDcsNDEsMiwxMTQsMjYsMCwKKyAgICAwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNywwLDAsMCwxNDIsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwxLDYsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDQyLDAsMCwwLDEyMiwKKyAgICAxNiwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMjQsMCw5NSwyLDg3LDAsMTAwLAorICAgIDAsMTE2LDMsMTA2LDQsMTMxLDAsMSwwLDg4LDAsMTI0LDAsMTA2LDIsMTA2LAorICAgIDUsMTMxLDAsMSwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSw2LDIxOCwxNiwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywKKyAgICAxMTQsNDMsMCwwLDAsMTE0LDQ0LDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLAorICAgIDIxOCwxMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsMzQsCisgICAgMCwwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCisgICAgMTAxLDExNCw5NSw5NSwxNDYsMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDIsCisgICAgMSwxNiwyLDEwLDEsMTIyLDI4LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLAorICAgIDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLAorICAgIDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICAxLDAsMCwwLDc5LDAsMCwwLDExNSwxNCwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMDYsMSwxMzEsMCwxLDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsCisgICAgMTE0LDQ0LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwzLDExNCwyNiwwLDAsCisgICAgMCwyMTgsNCw5NywxMTQsMTAzLDExNSw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LAorICAgIDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwKKyAgICAwLDAsMTE0LDI3LDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsNTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCw0MiwwLDAsMCwxNDAsMCwwLDAsMTE1LDYsCisgICAgMCwwLDAsOCwyLDgsNCw4LDcsMTE0LDQyLDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDMsCisgICAgMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDAsMSwxMjUsMSwxMjEsMTQsMTE2LDAsCisgICAgMTM2LDAsMjUsMCwxMzEsMCwxMjUsMSw4NywwLDExMCwyMCw0LDAsMTE2LDEsCisgICAgMTA3LDEwLDExNCwzOCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTI0LDEsMTAwLDEsMTA3LDgsMTE0LDEwMiwxMTYsMiwxMDAsMSwxMDcsOCwxMTQsNjYsCisgICAgMTE2LDMsMTM2LDAsMTMxLDEsMTI1LDEsMTEwLDgsMTE2LDQsMTM2LDAsMTMxLDEsCisgICAgMTI1LDEsMTM1LDAsMTAyLDEsMTAwLDIsMTAwLDMsMTMyLDgsMTI1LDIsMTE2LDUsCisgICAgMTA2LDYsMTI0LDEsMTI0LDIsMTMxLDIsMTE2LDAsMTM2LDAsNjAsMCwxMjQsMSwKKyAgICA4MywwLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSwKKyAgICA5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwKICAgICAxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiwxMDEsMTEwLDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMDUsMTE1LDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwxMDgsMTIxLDMyLDEwNSwKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwxMDUsMTEwLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsMzIsMTA1LDExNiwzMiwKLSAgICAxMDUsMTE1LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCi0gICAgMTAwLDMyLDk4LDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDExNCwKLSAgICAxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsCi0gICAgMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCw0MSw2LDExNCw1NiwKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw0NiwwLAotICAgIDAsMCwxMTQsMzEsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDIsMTE0LDE1LAotICAgIDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTksOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LAotICAgIDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTUsMCwwLDAsCi0gICAgMTE1LDE0LDAsMCwwLDAsNywxMiwxLDEwLDEsMywxLDE0LDEsMTMsCi0gICAgMyw1LDIsMTE0LDYzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLDAsCi0gICAgMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsNDEsCi0gICAgMSw5Nyw0NiwxLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSw5NSwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0Niw5OSwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTcsCi0gICAgMTA4LDExOSw5NywxMjEsMTE1LDMyLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDMyLDExNSwxMDEsMTEzLAotICAgIDExNywxMDEsMTEwLDk5LDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTE2LAotICAgIDEwNCw5NywxMTYsMzIsMTAxLDExMCwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDk3LDMyLDk5LAotICAgIDk3LDEwOCwxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksCi0gICAgMTE2LDEwNSwxMTEsMTEwLDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExNSwxMDEsMzIsMTA1LDExNiwKLSAgICAzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDk3LDMyLDExMCwxMTEsCi0gICAgMTE0LDEwOSw5NywxMDgsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTEwLDMyLDExMiwxMDgsOTcsCi0gICAgOTksMTAxLDExNSwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKLSAgICA5OCwxMCwzMiwzMiwzMiwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsMTE2LAotICAgIDExNCwxMTEsMTAwLDExNyw5OSwxMDEsMTE1LDMyLDExNywxMTAsMTE5LDk3LDExMCwxMTYsMTAxLDEwMCwKLSAgICAzMiwxMTAsMTExLDEwNSwxMTUsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwKLSAgICAxMTksMTA0LDEwMSwxMTAsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTEwLDEwMywxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0MSwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMTQsMTAsMCwwLDAsNDEsMywyMTgsMSwxMDIsMTE0LDI5LAotICAgIDAsMCwwLDkwLDQsMTA3LDExOSwxMDAsMTE1LDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSw5OSw5NywxMDgsMTA4LDk1LAotICAgIDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwKLSAgICAxMTgsMTAxLDEwMCwyMTQsMCwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNCw2NSwKLSAgICAwLDAsMCwyMTgsOSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDExNCw0NSwKLSAgICAwLDAsMCw5OSwxLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA0LDAsMCwwLDcxLDAsMCwwLDExNSw3NSwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNyw1LDAsMTE0LDcxLDAsMTI0LAotICAgIDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsMCwxMTUsNDMsMCwxMDAsMywKLSAgICAwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTYsNCwwLDEyNCwwLDAsMTA2LDUsCi0gICAgMCwxMjQsMiwwLDE0MCwwLDAsMTAwLDQsMCwxMTYsMCwwLDEwNiw2LDAsCi0gICAgMTMxLDEsMSwxLDEwMCw1LDAsODMsNDEsNywxMjIsNjEsODAsMTE0LDEwNSwxMTAsCi0gICAgMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLDExNiwxMTEsCi0gICAgMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsODAsODksCi0gICAgODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwzMiwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDI1MCwxLDM1LDI1MCw3LDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEyMiwyLDM1LDMyLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAotICAgIDQxLDIsMTE0LDY3LDAsMCwwLDExNCw2OCwwLDAsMCw0MSw3LDExNCwxNCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsCisgICAgMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LAorICAgIDEwMSwxMTAsNDYsNzgsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMiwwLDAsMCwxOSwwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsCisgICAgMTM2LDAsNjEsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsCisgICAgOTUsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwyMTgsMiw5OSw5OCwxNzMsMCwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsCisgICAgMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsCisgICAgNywxMTQsNTEsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDIwLDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsMTgsMCwwLDAsMjE4LAorICAgIDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsMywxMTQsMTAxLDEwMiw0MSwzLAorICAgIDExNCwxNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCw0MSwxLDExNCwxNSwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDQ1LDAsMCwwLDE1OSwwLDAsMCwxMTUsMjQsMCwwLDAsMCw0LAorICAgIDQsMSwyLDEsMTQsMSwxNCwxLDYsMSw4LDEsOCwxLDEwLDIsCisgICAgOCwxLDEyLDIsMTYsMSwxMTQsNDUsMCwwLDAsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDYyLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDEyNSwxLDExNiwxLDEwNiwKKyAgICAyLDEzMSwwLDEsMCwxMjEsMTIsMTI0LDEsMTA2LDMsMTMxLDAsMSwwLDg3LAorICAgIDAsMTEwLDIwLDQsMCwxMTYsNCwxMDcsMTAsMTE0LDQ4LDEsMCwxLDAsMSwKKyAgICAwLDg5LDAsMTEwLDEwLDg4LDAsMTI0LDEsMTA2LDUsMTMxLDAsMSwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiw5NywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LAorICAgIDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsCisgICAgMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsCisgICAgMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsCisgICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsCisgICAgMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LAorICAgIDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsCisgICAgNDEsNiwxMTQsNDUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywwLDAsCisgICAgMCwxMTQsMzQsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICA0MSwyLDExNCwxNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE5LDk1LDEwOCwxMTEsCisgICAgOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTc4LDAsMCwwLDExNSwxNCwwLDAsMCwwLDcsOCwxLDgsMSwyLAorICAgIDEsMTIsMSwxNCwzLDYsMiwxMTQsNTYsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw3OSwwLDAsCisgICAgMCwxMTUsMTAsMCwwLDAsMTI0LDAsMTI0LDEsMTI0LDIsMTQyLDEsODMsMCwKKyAgICA0MSwxLDk3LDQ2LDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwKKyAgICA5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwKKyAgICAxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwKKyAgICAxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsCisgICAgOTksOTcsMTA4LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCwKKyAgICA5OSwxMTYsMTA1LDExMSwxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsCisgICAgMTE2LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLAorICAgIDExMSwxMTQsMTA5LDk3LDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LAorICAgIDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKKyAgICAxMTYsMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsCisgICAgMTAwLDMyLDExMCwxMTEsMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LAorICAgIDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLAorICAgIDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxMCwwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsCisgICAgNDksMCwwLDAsOTAsNCwxMDcsMTE5LDEwMCwxMTUsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsCisgICAgOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksCisgICAgMTExLDExOCwxMDEsMTAwLDE5NywwLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE0LAorICAgIDU4LDAsMCwwLDExNCwzMywwLDAsMCw0MSwxLDIxOCw5LDExOCwxMDEsMTE0LAorICAgIDk4LDExMSwxMTUsMTA1LDExNiwxMjEsOTksMSwwLDAsMCwxLDAsMCwwLDMsCisgICAgMCwwLDAsNSwwLDAsMCw3MSwwLDAsMCwxMTUsNTQsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTA2LDIsMTI0LDEsMTA3LDUsMTE0LDUwLDEyNCwwLDEwNiwzLAorICAgIDEwMCw2LDEzMSwxLDExNSwzMCwxMDAsMywxMjQsMCwyMywwLDEyNSwwLDExNiw0LAorICAgIDEyNCwwLDEwNiw1LDEyNCwyLDE0MiwwLDExNiwwLDEwNiw2LDEwMCw0LDE0MSwyLAorICAgIDEsMCwxMDAsNSw4MywwLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLDExNiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLDMyLDExNSwKKyAgICAxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LDg0LDcyLAorICAgIDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LDExNywxMTQsCisgICAgMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMjIsMiwzNSwzMiw0MSwxLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAorICAgIDQxLDIsMTE0LDYwLDAsMCwwLDExNCw2MSwwLDAsMCw0MSw3LDExNCwxNCwKICAgICAwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDcsMTE4LDEwMSwxMTQsOTgsCiAgICAgMTExLDExNSwxMDEsMjE4LDEwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCwKLSAgICA1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LDUwLDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLAotICAgIDEwMSwxMTQsMTE0LDQxLDMsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDY2LAotICAgIDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCwzOCwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwKKyAgICAxMDEsMTE0LDExNCw0MSwzLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCw1OSwKKyAgICAwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAogICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCi0gICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIyNSwwLDAsMCwxMTUsOCwwLAotICAgIDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsMTE0LDc1LDAsMCwwLDk5LAorICAgIDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMDgsMCwwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwyLDEyLDEsMTAsMSw4LDEsMTE0LDY4LDAsMCwwLDk5LAogICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKLSAgICAxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwKLSAgICAwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDEsMywxMjIsNDksCi0gICAgNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwKLSAgICAxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwKLSAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCi0gICAgMCwwLDE5LDAsMCwwLDExNSw1NSwwLDAsMCwxMjQsMSwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMDcsNywwLDExNCw0MiwwLDExNiwyLDAsMTAwLDEsMCwKLSAgICAxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLAotICAgIDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLAotICAgIDAsODMsNDEsMyw3OCwxMjIsMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsMTQsMCwwLDAsCi0gICAgMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsCi0gICAgMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCwKLSAgICA4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTEyLDEwMSwxMTQsMjM1LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwKLSAgICAxNSwxLDE4LDEsOSwxLDEyMiw1Miw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsCi0gICAgMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLAotICAgIDAsMCwwLDQxLDIsMTE0LDc5LDAsMCwwLDExNCw4MCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDExLDAsMCwwLAotICAgIDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDIzMywwLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwKLSAgICAxMywxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwKLSAgICAwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwKLSAgICAxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwKLSAgICAxMjQsMSwwLDgzLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsCi0gICAgMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsCi0gICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTUsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTUsNDIsMCwKLSAgICAxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLAotICAgIDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsCi0gICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LAotICAgIDU3LDAsMCwwLDIxOCw5LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE0LAotICAgIDc3LDAsMCwwLDExNCw1MCwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwKLSAgICAxMTQsNzgsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAzLDAsMCwwLDExNSwyNiwwLDAsMCwxMzUsMCwxMDIsMSwxMDAsMSwxMDAsCisgICAgMiwxMzIsOCwxMjUsMSwxMTYsMCwxMjQsMSwxMzYsMCwxMzEsMiwxLDAsMTI0LAorICAgIDEsODMsMCw0MSwzLDEyMiw0OSw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwKKyAgICAzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCwKKyAgICA5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDM4LDAsCisgICAgMCwwLDEyNCwxLDExNiwwLDEwNiwxLDEwNyw3LDExNCwyOCwxMTYsMiwxMDAsMSwKKyAgICAxMDYsMywxMjQsMSwxMzEsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMzAsMSwxMzYsMCwKKyAgICAxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDQxLDMsNzgsMTIyLDI5LDEyMywzMywxMTQsCisgICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMSwxMTQsMTUsMCwwLAorICAgIDAsNDEsNCwxMTQsMTQsMCwwLDAsMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsMCwwLAorICAgIDQxLDIsMTE0LDI2LDAsMCwwLDIxOCw4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMjE4LDAsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMSwxMCwxLDEwLDEsOCwxLDEyMiw1MiwKKyAgICA5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsCisgICAgMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLDAsMCwwLDQxLDIsMTE0LDcyLDAsCisgICAgMCwwLDExNCw3MywwLDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsNzIsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDIxNiwwLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDIsMTIsNSwxMCwxLDExNCw3NCwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDMsMCwwLDAsMTE1LDI2LDAsMCwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwKKyAgICAyLDEzMiw4LDEyNSwxLDExNiwwLDEyNCwxLDEzNiwwLDEzMSwyLDEsMCwxMjQsCisgICAgMSw4MywwLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LAorICAgIDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsMzgsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsMTE1LDI4LDExNiwyLDEwMCwxLDEwNiwzLAorICAgIDEyNCwxLDEzMSwxLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwwLDEyNCwwLAorICAgIDEyNCwxLDEzMSwyLDgzLDAsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsCisgICAgMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDExNCwxNSwwLDAsMCw0MSw0LDExNCwKKyAgICA0NiwwLDAsMCwyMTgsOSwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNCwKKyAgICA3MCwwLDAsMCwxMTQsMzgsMCwwLDAsNDEsMiwxMTQsMjYsMCwwLDAsCisgICAgMTE0LDcxLDAsMCwwLDQxLDEsMTE0LDcyLDAsMCwwLDExNCwxMCwwLDAsCiAgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDI0LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKICAgICAxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsCi0gICAgMjQ2LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsOSwKKyAgICAyMjksMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDEwLDEsMTAsMSw4LAogICAgIDEsMTIyLDUwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsCiAgICAgMTIyLDEwMSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsCiAgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsMTIsMCwwLDAsNDEsMiwxMTQsNzksCi0gICAgMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwKLSAgICA3OSwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExNCwxMDEsMTEzLDExNywKLSAgICAxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMjQ0LDAsMCwwLDExNSwKLSAgICA2LDAsMCwwLDAsMiwxOCw1LDEzLDEsMTE0LDg0LDAsMCwwLDk5LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwwLDAsMCw0MSwyLDExNCw3MiwKKyAgICAwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LAorICAgIDcyLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwyMjcsMCwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwyLDEyLDUsMTAsMSwxMTQsNzcsMCwwLDAsOTksCiAgICAgMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsODEsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwKLSAgICAwLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwxLDAsMTE2LDEsMCwxMDYsMiwKLSAgICAwLDEwNyw2LDAsMTE0LDY3LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsCi0gICAgMjUsMTI1LDMsMCwxMTYsMywwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMiwwLAotICAgIDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMjUsODMsMTE2LDQsMCwxMjQsCi0gICAgMiwwLDEzMSwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMjgsNzYsMTExLAotICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiwxMDUsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsCi0gICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAotICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCi0gICAgMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsCi0gICAgNSwyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwyMTgsNSw5NSwKLSAgICAxMDEsMTIwLDEwMSw5OSwyMTgsNSw5NSwxMDgsMTExLDk3LDEwMCw0MSw0LDExNCwxOSwwLAotICAgIDAsMCwxMTQsNzgsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDYsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwwLDEsMCwwLDExNSwxMiwwLDAsMCwKLSAgICAwLDYsMTUsMSwxNSwxLDEzLDEsMTMsMSwxMSwyLDExNCw5MCwwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwzNSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNiwxLDAsMCwxMTYsMCwwLDEyNCwwLAotICAgIDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTI1LDEsMCwxMTYsMSwwLAotICAgIDEyNCwxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw3MSwwLDEyMSwxNywwLDEyNCwKLSAgICAxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsMTEwLDE4LDAsCi0gICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCw3MCwwLDEsMSwxLDg5LDExMCwxLAotICAgIDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwyLDAsODcsMTEwLAotICAgIDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwKLSAgICAxMTAsMjMsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTI3LDAsCi0gICAgMTE2LDYsMCwxMjQsMiwwLDEzMSwxLDAsODMsMTIxLDEzLDAsMTI0LDAsMCwKLSAgICAxMDYsNywwLDEyNSwzLDAsODcsMTEwLDI0LDAsNCwxMTYsNSwwLDEwNywxMCwKLSAgICAwLDExNCwxNjYsMCwxLDEsMSwxMDAsMywwLDEyNSwzLDAsODksMTEwLDEsCi0gICAgMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw4LDAsMTI1LDQsMCw4NywxMTAsCi0gICAgNTksMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDI0MSwwLDEsMSwxLDEyNCwKLSAgICAxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMjEsMCwxMDAsNCwwLDEwNiw5LAotICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDEwMCw1LDAsMTA2LDksMCwxMjQsMywKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw4OSwxMTAsMTcsMCw4OCwxMDAsNiwwLAotICAgIDEwNiw5LDAsMTI0LDMsMCwxMjQsNCwwLDEzMSwyLDAsODMsMTAwLDAsMCwKLSAgICA4Myw0MSw3LDc4LDIxOCwxMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LAotICAgIDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMjUwLDEsNjMsCi0gICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKLSAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCi0gICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDQxLDEwLAotICAgIDExNCw2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw5MiwwLDAsMCwyMTgsCi0gICAgOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMjE4LDgsOTUsOTUsMTE1LDExMiwKLSAgICAxMDEsOTksOTUsOTUsMjE4LDE0LDY1LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMjE4LDIyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksMTE0LDEsMCwwLAotICAgIDAsMjE4LDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNCw1MCwwLDAsMCwKLSAgICA0MSw1LDExNCw4OSwwLDAsMCwyMTgsNiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKLSAgICA4OCwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDIxOCwxMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCi0gICAgMTYsMSwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxOCwxLDE1LDQsMywKLSAgICAxLDE3LDEsMTMsMSw1LDEsMywxLDEzLDEsMTMsMSw1LDIsMTIsCi0gICAgMSwxMCw0LDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTMsMSwxMywKLSAgICAxLDEyLDEsMTMsMiwyMSwyLDExNCwxMDEsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLAotICAgIDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxNyw5NSwxMDUsCi0gICAgMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LAotICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDAsCi0gICAgMCw4Myw0MSwxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE0LDk1LDAsMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDE5LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsNTQsMSwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAorICAgIDY3LDAsMCwwLDExNSw2NCwwLDAsMCwxMTYsMCwxMjQsMSwxMjQsMCwxMzEsCisgICAgMiwxMjUsMiwxMjQsMSwxMTYsMSwxMDYsMiwxMDcsNiwxMTQsNTIsMTE2LDEsMTA2LAorICAgIDIsMTI0LDEsMjUsMCwxMjUsMywxMTYsMywxMjQsMiwxMjQsMywxMzEsMiwxLAorICAgIDAsMTE2LDEsMTA2LDIsMTI0LDEsMjUsMCw4MywwLDExMCw4LDExNiw0LDEyNCwKKyAgICAyLDEzMSwxLDgzLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwxMjgsNzYsMTExLDk3LAorICAgIDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSw0NiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsCisgICAgMTE0LDExMCwzMiwxMDUsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAorICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKKyAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAorICAgIDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwKKyAgICAyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE0LDE0LDAsMCwwLDIxOCw3LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAyMTgsNSw5NSwxMDEsMTIwLDEwMSw5OSwyMTgsNSw5NSwxMDgsMTExLDk3LDEwMCw0MSw0LAorICAgIDExNCwyNiwwLDAsMCwxMTQsNzEsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksCisgICAgMjE4LDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwyMzksMCwwLDAsMTE1LDEyLAorICAgIDAsMCwwLDAsNiwxMCwxLDEwLDEsMTAsMSwxMCwxLDEyLDIsMTE0LAorICAgIDg0LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDM1LDAsMCwwLDY3LDAsMCwwLDExNSwyMTgsMCwwLDAsMTE2LDAsCisgICAgMTI0LDAsMTAwLDEsMTAwLDAsMTMxLDMsMTI1LDEsMTE2LDEsMTI0LDEsMTAwLDIsCisgICAgMTMxLDIsMTE0LDU0LDEyMSwxMCwxMjQsMSwxMDYsMiwxMjQsMCwxMzEsMSw4MywwLAorICAgIDQsMCwxMTYsMywxMDcsMTAsMTE0LDUyLDEsMCwxLDAsMSwwLDg5LDAsCisgICAgMTEwLDIsODgsMCwxMjEsMTAsMTI0LDAsMTA2LDQsMTI1LDIsODcsMCwxMTAsMjAsCisgICAgNCwwLDExNiw1LDEwNywxMCwxMTQsODQsMSwwLDEsMCwxLDAsODksMCwKKyAgICAxMTAsMTgsODgsMCwxMjQsMiwxMDAsMCwxMDcsOSwxMTQsMTAyLDExNiw2LDEyNCwyLAorICAgIDEzMSwxLDgzLDAsMTIxLDEwLDEyNCwwLDEwNiw3LDEyNSwzLDg3LDAsMTEwLDI0LAorICAgIDQsMCwxMTYsNSwxMDcsMTAsMTE0LDEzNiwxLDAsMSwwLDEsMCwxMDAsMywKKyAgICAxMjUsMyw4OSwwLDExMCwyLDg4LDAsMTIxLDEwLDEyNCwwLDEwNiw4LDEyNSw0LAorICAgIDg3LDAsMTEwLDUyLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDIwMCwxLDAsMSwwLAorICAgIDEsMCwxMjQsMSwxMDAsMCwxMDcsOCwxMTQsMTg0LDEwMCw0LDEwNiw5LDEyNCwzLAorICAgIDEzMSwxLDgzLDAsMTEwLDEyLDEwMCw1LDEwNiw5LDEyNCwzLDEyNCwxLDEzMSwyLAorICAgIDgzLDAsODksMCwxMTAsMTQsODgsMCwxMDAsNiwxMDYsOSwxMjQsMywxMjQsNCwKKyAgICAxMzEsMiw4MywwLDEwMCwwLDgzLDAsNDEsNyw3OCwyMTgsMTAsOTUsOTUsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwyMTgsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCisgICAgMTE0LDEwMSwxMTIsMTE0LDI1MCwxLDYzLDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLDYwLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSw2Miw0MSwxMCwxMTQsNiwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsODYsMCwwLDAsMjE4LDksNjksMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsCisgICAgMTEwLDIxOCw4LDk1LDk1LDExNSwxMTIsMTAxLDk5LDk1LDk1LDIxOCwxNCw2NSwxMTYsMTE2LAorICAgIDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDIxOCwyMiw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwKKyAgICAxMTIsMTAxLDk5LDExNCwxLDAsMCwwLDIxOCw4LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICA5NSw5NSwxMTQsMzgsMCwwLDAsNDEsNSwxMTQsODMsMCwwLDAsMjE4LDYsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsODIsMCwwLDAsMTE0LDE1LDAsMCwwLAorICAgIDIxOCw4LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTIsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDI1NSwwLDAsMCwxMTUsNDYsMCwwLDAsCisgICAgMCwyLDEyLDEsMTAsNCwyLDEsMTAsMSwxNCwxLDYsMSwyLDEsCisgICAgMTAsMSwxNCwxLDYsMiw4LDEsOCw0LDIsMSwxMCwxLDE0LDEsCisgICAgMTAsMSwyLDEsMTAsMSwxNCwxLDgsMSwxMiwyLDE4LDIsMTE0LDk1LAorICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsNjQsMCwwLDAsMTE1LDM2LDAsMCwwLDEwMSwwLDkwLAorICAgIDEsMTAwLDAsOTAsMiwxMDAsMSwxMDAsMiwxMzIsMCw5MCwzLDEwMCwzLDEwMCwKKyAgICA0LDEzMiwwLDkwLDQsMTAwLDUsMTAwLDYsMTMyLDAsOTAsNSwxMDAsNyw4MywKKyAgICAwLDQxLDgsMjE4LDE3LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsCisgICAgMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxOCwwLDAsMCwKKyAgICAxMjQsMSwxMjQsMCw5NSwwLDEyNCwxLDEwNiwxLDEyNCwwLDk1LDIsMTAwLDAsCisgICAgODMsMCw0MSwxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE0LDg5LDAsMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDI2LAorICAgIDAsMCwwLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMjcsMCwwLDAsMzcsMSwwLDAsCisgICAgMTE1LDQsMCwwLDAsMCwxLDYsMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAogICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwKICAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsMTA2LDAsMCw5NSwxLDAsMTI0LDAsMCwxMDYsMiwKLSAgICAwLDExNiwzLDAsMTA2LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDUsMCwKLSAgICA2MCwxMDAsMCwwLDgzLDQxLDIsNzgsODQsNDEsNiwxMTQsMTA0LDAsMCwwLAotICAgIDIxOCwxMyw5NSwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsMTAzLDExNCwKLSAgICAxMDMsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMTUsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIzLDAsMCwwLDU4LDEsCi0gICAgMCwwLDExNSw0LDAsMCwwLDAsNCwxMiwxLDEyMiwyNyw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsCi0gICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCwxNywwLDAsMCw3MSwwLDAsMCwxMTUsMTIxLDAsCi0gICAgMCwwLDEyMiwxMDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKLSAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLDAsNjgsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDExNCw3OCwwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwKLSAgICAxMjQsMiwwLDEwNiw0LDAsNjEsODcsMTEzLDEwMCwwLDQsMTE2LDUsMCwxMDcsCi0gICAgMTAsMCwxMTQsNzQsMCwxLDEsMSw4OSwxMTMsMTAwLDAsODgsMTEwLDIyLDAsCi0gICAgMTE2LDYsMCwxMDAsMywwLDEyNCwyLDAsMTA2LDQsMCwxMjQsMiwwLDEwNiwKLSAgICA3LDAsMTMxLDMsMCwxLDg3LDEwMCwwLDAsMTAwLDQsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsOTUsOCwwLDg4LDEwMCwwLDAsODMsNDEsNSw3OCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwKLSAgICAwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLAotICAgIDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwxMTMsMywwLDEwMCwKLSAgICAwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwKLSAgICAwLDAsMTE0LDI1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNiwwLDAsMCw2OCwxLDAsMCwxMTUsCi0gICAgMiwwLDAsMCw2LDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LAotICAgIDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsCi0gICAgOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAotICAgIDEwMSwxMjAsMTEyLDExNCw2MiwxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsMTA0LDAsMCwKLSAgICAwLDExNCwyNywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAotICAgIDExNCwxNSwwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwKLSAgICA5OSwwLDAsMCwxMTQsMTA1LDAsMCwwLDQxLDMsMTE0LDE5LDAsMCwwLAotICAgIDExNCwyOSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLDAsMCwwLDY1LDEsCi0gICAgMCwwLDExNSwxOCwwLDAsMCwwLDEsMywxLDksMSwyNSwxLDMsCi0gICAgMSwxNywxLDEzLDEsOCwyLDI2LDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsCi0gICAgMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLAotICAgIDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsMCwKLSAgICAwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwMiwwLDAsMCw1MiwKLSAgICAxLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsMTAyLAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDgsMCwwLDAsNjQsMCwwLDAsMTE1LDE3MiwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDAsMywwLDEwMCw1LDAsMTAwLDMsCi0gICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMyw5MCw0LDAsMTAwLDgsMCwKLSAgICAxMDAsOSwwLDEzMiwwLDAsOTAsNSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwKLSAgICAwLDAsOTAsNiwwLDEwMSw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsCi0gICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsOCwwLDEwNiw5LDAsMTAwLDE0LDAsCi0gICAgMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwKLSAgICAxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LAotICAgIDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsCi0gICAgMTAxLDExLDAsMTA2LDksMCwxMDAsMTksMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsMTEsMCwxMDAsMywwLDgzLDQxLDIwLDIxOCwxMCw3NywxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LDExMiwKLSAgICAxMDEsOTksMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiw5Nyw5OCwxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0NiwzMiwzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsOTcsCi0gICAgMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLDk5LAotICAgIDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsMTE3LAotICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLDMyLAotICAgIDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgMTEwLDk3LDEwOSwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwxMTUsCi0gICAgMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwxMDEsCi0gICAgMTEwLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsMzIsCi0gICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsNDYsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAwLDEwMSwxMTQsMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LDk1LAotICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsCi0gICAgMTEwLDEwMSwxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLAotICAgIDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLDMyLAotICAgIDMyLDExMCwxMTEsMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwKLSAgICAxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKLSAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLAotICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsMzIsCi0gICAgMzIsODcsMTA0LDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNSwKLSAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLDEwNSwKLSAgICAxMTAsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgOTYsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsMTA1LAotICAgIDExMCwzNCwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LDExMSwKLSAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsOTYsCi0gICAgOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwKLSAgICAxMTcsMTE2LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsMTE2LAotICAgIDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDExNSwKLSAgICAzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgMTAwLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsCi0gICAgOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwKLSAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LDEwMSwKLSAgICAxMTUsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsCi0gICAgMTE5LDEwNCwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwKLSAgICAxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwxMTUsCi0gICAgMTAxLDExNiw0NCwzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTUsCi0gICAgMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LDExNywKLSAgICAxMDEsNDUsNDUsOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LDEwNCwKLSAgICAxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsMTA5LAotICAgIDk3LDEyMSw0MSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMTAsCi0gICAgMzIsMzIsMzIsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwxMTEsCi0gICAgMTEwLDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCi0gICAgMTE5LDEwNSwxMDgsMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwKLSAgICAxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLDEwOCwKLSAgICAxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLDExNiwKLSAgICA5Nyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LAotICAgIDk5LDQ2LDgwLDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMjEsCi0gICAgMzIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMTAsOTksMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwyMTgsNiwxMTEsMTE0LAotICAgIDEwNSwxMDMsMTA1LDExMCw3OCwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LAotICAgIDk3LDExNiwxMDEsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LAotICAgIDMsMCwwLDAsMywwLDAsMCw2LDAsMCwwLDIsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDc5LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKLSAgICAwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMjQsMywwLDEyNCwwLAotICAgIDAsOTUsMiwwLDEyNCw0LDAsMTI0LDAsMCw5NSwzLDAsMTI0LDUsMCwKLSAgICAxMTQsNDgsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDAsMCwxMjQsMCwwLDk1LAotICAgIDQsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsMTI0LDAsCi0gICAgMCw5NSw2LDAsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsMTE0LDE1LAotICAgIDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwKLSAgICAwLDAsMjE4LDI2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSwKLSAgICA5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMTMsCi0gICAgOTUsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCw3LDk1LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDQxLDYsMTE0LDE5LDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwxMDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDExNiwxLDAsMCwxMTUsMTQsCi0gICAgMCwwLDAsMCwyLDksMSw5LDEsOSwxLDksMSwyMSwzLDksCi0gICAgMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LAotICAgIDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNDcsMCwwLDAsCi0gICAgMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEwMCwKLSAgICAyLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCwxMDMsMiwKLSAgICAwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMywwLDEwMCwwLDAsMTA3LDksMCwKLSAgICAxMTQsNzYsMCwxMjQsMSwwLDEwNiw0LDAsMTAwLDMsMCwxMDYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDMsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMTYsMCwxMjQsMSwwLDEwNiw0LAotICAgIDAsMTAwLDQsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMDAsNSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsNiwwLAotICAgIDEwNiw3LDAsMTAwLDYsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsMTIzLDMzLDExNCwKLSAgICAxMjUsMTIyLDExLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLAotICAgIDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsMTI1LDQwLDEyMywKLSAgICAxMjUsNDEsMTIyLDIsNDQsMzIsNDEsOSwxMTQsNTAsMCwwLDAsMTE0LDE1LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDIxOCw2LDk3LDExMiwKLSAgICAxMTIsMTAxLDExMCwxMDAsMTE0LDExMCwwLDAsMCwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsCi0gICAgMTE1LDExNSw5NSw5NSwxMTQsMSwwLDAsMCwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsCi0gICAgMiwxMTQsMTksMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MiwwLDAsMCwxMjgsCi0gICAgMSwwLDAsMTE1LDE2LDAsMCwwLDAsMSwxNSwxLDIxLDEsMTUsMSwKLSAgICAyNSwxLDE1LDEsMTIsMSwxMywxLDEyMiwxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDgzLDExMiwxMDEsOTksNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxNDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsCi0gICAgMTIxLDEwNywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LAotICAgIDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTA2LDIsCi0gICAgMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMywwLDEwNywyLDAsMTExLDExNCwwLDEyNCwyLDAsMTI0LDEsMCwxMDYsCi0gICAgMCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDEwNiw0LDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEyNCwxLDAsMTA2LDUsMCwxMDcsMiwwLDgzLDg3LDExMCwyMiwwLDQsMTE2LAotICAgIDYsMCwxMDcsMTAsMCwxMTQsMTQwLDAsMSwxLDEsMTAwLDEsMCw4Myw4OSwKLSAgICAxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsCi0gICAgMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDIxOCwxMiwxMDQsOTcsMTE1LDk1LAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCw5NiwwLDAsMCw0MSwzLDExNCwKLSAgICAxOSwwLDAsMCw5MCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsOTAsNCwxMTUsMTA5LDExNSwKLSAgICAxMDgsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCi0gICAgMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwxMzgsMSwwLDAsMTE1LDIwLDAsMCwKLSAgICAwLDAsMSw5LDEsMywxLDE4LDEsMTgsMSwxOCwxLDE1LDEsMTgsCi0gICAgMSwyMCwxLDEzLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKLSAgICA5OSw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDg1LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDc4LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsNzgsMCwKLSAgICAxMjQsMCwwLDEwNiwyLDAsMTE0LDc4LDAsMTE2LDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDU3LDAsMTE2LDQsMCwxMzAsMSwwLDExNiwzLDAsMTA2LDUsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDAsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSw3OCw0MSw2LDExNCwxMTIsMCwwLAotICAgIDAsMTE0LDEwNywwLDAsMCwxMTQsMTExLDAsMCwwLDIxOCwxOSw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LAotICAgIDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsOTAsMTEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExNiwwLDAsMCwxNTAsMSwwLAotICAgIDAsMTE1LDEyLDAsMCwwLDAsMiwxNSwxLDI0LDEsMTIsMSw2LDEsCi0gICAgMjEsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLAotICAgIDEsMTE0LDExMiwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsMTE2LDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDExNCwxMTYsMCwwLDAsMTU5LDEsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNSwwLDEyNCwwLDAsMTA2LDEsMCwKLSAgICAxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMywwLDI1LDgzLDEyNCwwLAotICAgIDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLDQsMTIyLDMyLDg0LDEwNCwxMDEsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI4LDAsMCwwLDEwMCwKKyAgICAxLDEyNCwwLDEwNiwwLDk1LDEsMTI0LDAsMTA2LDIsMTE2LDMsMTA2LDQsMTI0LAorICAgIDAsMTA2LDAsMTA2LDUsNjAsMCwxMDAsMCw4MywwLDQxLDIsNzgsODQsNDEsCisgICAgNiwxMTQsOTgsMCwwLDAsMjE4LDEzLDk1LDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LAorICAgIDEwNSwxMjIsMTA1LDExMCwxMDMsMTE0LDk3LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsCisgICAgNzksMCwwLDAsMTE0LDE1LDAsMCwwLDQxLDEsMTE0LDI2LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICA0OCwwLDAsMCw0MSwxLDAsMCwxMTUsNCwwLDAsMCwwLDQsOCwKKyAgICAxLDEyMiwyNyw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywKKyAgICAxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxNywwLDAsMCw3MSwKKyAgICAwLDAsMCwxMTUsOTgsMCwwLDAsMTIyLDgyLDEyNCwwLDEwNiwwLDEyNSwyLAorICAgIDExNiwxLDEwMCwxLDEwMCwyLDEzMiwwLDEyNCwxLDY4LDAsMTMxLDEsMTMxLDEsCisgICAgMTE0LDY0LDEyMSwxNCwxMTYsMiwxMDYsMywxMjQsMiwxMDYsNCw2MSwwLDg3LDAsCisgICAgMTEzLDgwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDYwLDEsMCwxLDAsMSwwLAorICAgIDg5LDAsMTEzLDgwLDg4LDAsMTEwLDE2LDExNiw2LDEwMCwzLDEyNCwyLDEwNiw0LAorICAgIDEyNCwyLDEwNiw3LDEzMSwzLDEsMCw4NywwLDEwMCwwLDEwMCw0LDEyNCwwLAorICAgIDEwNiwwLDk1LDgsODgsMCwxMDAsMCw4MywwLDQxLDUsNzgsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwKKyAgICAwLDAsMTE1LDIyLDAsMCwwLDEyNCwwLDkzLDE0LDEyNSwxLDEyNCwxLDEwMCwKKyAgICAwLDEwNyw5LDg2LDAsMSwwLDExMywyLDEwMCwwLDgzLDAsNDEsMSw3OCwKKyAgICAxMTQsMTAsMCwwLDAsNDEsMiw5MCwyLDQ2LDQ4LDkwLDMsOTcsMTE0LDEwMywKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyNTAsCisgICAgOSw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNTEsMSwwLDAsMTE1LDIsCisgICAgMCwwLDAsNCwwLDEyMiw0NSw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsCisgICAgMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LAorICAgIDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsMTIyLDE4LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEyMywzMywxMTQsCisgICAgMTI1LDMyLDM1LDMyLDEyMywzMywxMTQsMTI1LDcwLDQxLDksMTE0LDk4LDAsMCwwLAorICAgIDIxOCwzLDk3LDExMCwxMjEsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsCisgICAgMTUsMCwwLDAsMTE0LDU0LDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsOTMsCisgICAgMCwwLDAsMTE0LDk5LDAsMCwwLDQxLDMsMTE0LDI2LDAsMCwwLDExNCwKKyAgICA0OSwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDUwLDAsMCwwLDQ4LDEsMCwKKyAgICAwLDExNSwxOCwwLDAsMCwwLDEsMiwxLDYsMSwxOCwxLDIsMSwKKyAgICAxNCwxLDE0LDEsOCwyLDIwLDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiw5NywKKyAgICAxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLAorICAgIDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsCisgICAgMCwxMTQsMiwwLDAsMCwxMTQsMjcsMCwwLDAsMTE0LDQ4LDAsMCwwLAorICAgIDExNCw1MCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDk2LDAsMCwwLDM1LDEsCisgICAgMCwwLDExNSw2LDAsMCwwLDgsMiw4LDQsOCw3LDExNCw5NiwwLAorICAgIDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LAorICAgIDAsMCwwLDY0LDAsMCwwLDExNSwxMTQsMCwwLDAsMTAxLDAsOTAsMSwKKyAgICAxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDIsMTAwLDIsMTAwLDMsCisgICAgMTU2LDMsMTAwLDQsMTAwLDUsMTMyLDIsOTAsNCwxMDAsNiwxMDAsNywxMzIsMCwKKyAgICA5MCw1LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDYsMTAxLDcsMTAwLDEwLDEwMCwxMSwKKyAgICAxMzIsMCwxMzEsMSw5MCw4LDEwMSw4LDEwNiw5LDEwMCwxMiwxMDAsMTEsMTMyLDAsCisgICAgMTMxLDEsOTAsOCwxMDEsNywxMDAsMTMsMTAwLDE0LDEzMiwwLDEzMSwxLDkwLDEwLAorICAgIDEwMSw3LDEwMCwxNSwxMDAsMTYsMTMyLDAsMTMxLDEsOTAsMTEsMTAxLDExLDEwNiw5LAorICAgIDEwMCwxNywxMDAsMTYsMTMyLDAsMTMxLDEsOTAsMTEsMTAwLDIsODMsMCw0MSwxOCwKKyAgICAyMTgsMTAsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDk3LDIwOCw1LDAsCisgICAgMCw4NCwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwKKyAgICAzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsMTA1LDExMCwKKyAgICAxMDMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzksMTE1LDMyLDExNSwxMTIsMTAxLDk5LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsOTcsOTgsMTExLDExNywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsNzAsMTExLDExNCwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDk3LDExNSwxMTUsMTExLDk5LDEwNSw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDQsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDQ0LDMyLDExNywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDM5LDExNSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDk2LDExMCw5NywxMDksMTAxLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsOTcsOTgsMTE1LDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsCisgICAgMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiwKKyAgICA5NiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNywxMTUsCisgICAgMTAxLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMTIsOTcsMTE0LAorICAgIDEwMSwxMTAsMTE2LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAorICAgIDExNSwzMiwxMDUsMTEwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTE0LDEwNSwxMTgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsOTYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTYsMzIsMTAwLDEwMSwKKyAgICAxMTYsMTAxLDExNCwxMDksMTA1LDExMCwxMDEsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLAorICAgIDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTExLAorICAgIDExNCwxMCwzMiwzMiwzMiwzMiwxMTAsMTExLDExNiw0NiwzMiwzMiw3OSwxMTAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNCwKKyAgICAxMDEsMTAyLDEwOCwxMDEsOTksMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDk2LDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSwKKyAgICA5OCwxMTcsMTE2LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTEsMTE0LDEwNSwxMDMsCisgICAgMTA1LDExMCw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwKKyAgICAxMDIsMTA1LDk5LDMyLDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNywxMTUsMTAxLAorICAgIDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICAxMDIsMTE0LDExMSwxMDksMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsCisgICAgMzIsMzIsMTA4LDExMSw5NywxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDQsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LAorICAgIDEwOSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5NywKKyAgICA5OCwxMDgsMTAxLDQ2LDMyLDMyLDg3LDEwNCwxMDEsMTEwLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsCisgICAgOTcsMTA5LDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTE2LDQ0LDMyLAorICAgIDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMDksOTcsMTE2LDk5LAorICAgIDEwNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDk2LDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDExNSwKKyAgICAzMiwxMTYsMTA0LDk3LDExNiwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMzQsCisgICAgMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsMzQsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwxMTYsMTE1LAorICAgIDMyLDk3LDMyLDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDMyLDMyLDMyLAorICAgIDMyLDg3LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDg0LDExNCwKKyAgICAxMTcsMTAxLDQ0LDMyLDk2LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSw5NiwzMiw5NywKKyAgICAxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMDEsMTE2LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDk2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk2LDMyLDEwNSwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwKKyAgICAxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTA1LDEwMiwzMiw5NywxMTAsMTIxLAorICAgIDQ2LDMyLDMyLDczLDExNiwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LAorICAgIDExMiwxMTEsMTEwLDEwMCwxMTUsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTE1LDExNyw5OCwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMTE1LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwKKyAgICAxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDMyLDExMSwxMDIsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLAorICAgIDExMCwxMTYsMTE0LDEwNSwxMDEsMTE1LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwKKyAgICA5NywxMTQsOTksMTA0LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwzMiwKKyAgICAzMiw3MywxMDIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDEwLDMyLDMyLAorICAgIDMyLDMyLDg0LDExNCwxMTcsMTAxLDQ1LDQ1LDk3LDExMCwxMDAsMzIsNzAsOTcsMTA4LDExNSwKKyAgICAxMDEsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsODAsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LAorICAgIDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDExNiwxMDQsCisgICAgOTcsMTE2LDMyLDQwLDEwOSw5NywxMjEsNDEsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExNywKKyAgICA5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwLDMyLDMyLDMyLDMyLDEwNCw5NywxMTUsMzIsOTcsMzIsMTEwLAorICAgIDExMSwxMTAsNDUsNzgsMTExLDExMCwxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTAsCisgICAgMzIsOTYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCwKKyAgICA5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk2LDQ0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwLDMyLDMyLDMyLDMyLDExNSwxMjEsCisgICAgMTE1LDExNiwxMDEsMTA5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLAorICAgIDEwMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLAorICAgIDk3LDExNSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDc5LDExMCwxMDgsMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwzMiw0MCwKKyAgICAxMTUsMTAxLDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LAorICAgIDk5LDQ2LDc3LDEwMSwxMTYsOTcsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5Nyw5OCw5OSw0Niw4MCw5NywxMTYsMTA0LDY5LDExMCwxMTYsMTE0LDEyMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDEwNSwxMDIsMTIxLDMyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSwKKyAgICAzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsNzgsNDEsMywyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCwyMTgsMTIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LDk3LDExNiwxMDEsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDMsMCwwLDAsMywwLDAsMCw2LAorICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDU0LDAsMCwwLAorICAgIDEyNCwxLDEyNCwwLDk1LDAsMTI0LDIsMTI0LDAsOTUsMSwxMjQsMywxMjQsMCwKKyAgICA5NSwyLDEyNCw0LDEyNCwwLDk1LDMsMTI0LDUsMTE0LDMyLDEwMywwLDExMCwyLAorICAgIDEwMCwwLDEyNCwwLDk1LDQsMTAwLDEsMTI0LDAsOTUsNSwxMDAsMCwxMjQsMCwKKyAgICA5NSw2LDEwMCwwLDgzLDAsNDEsMiw3OCw3MCw0MSw3LDExNCwxNSwwLDAsCisgICAgMCwxMTQsOTMsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTA0LDAsMCwwLAorICAgIDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LAorICAgIDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDEzLDk1LDExNSwKKyAgICAxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsNyw5NSw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDEwMCw0MSw2LDExNCwyNiwwLDAsMCwxMTQsMTUsMCwwLDAsCisgICAgMTE0LDkzLDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgMTA1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwyNywwLDAsMCw5OSwxLDAsMCwxMTUsMTQsMCwwLAorICAgIDAsMCwyLDYsMSw2LDEsNiwxLDYsMSwxNCwzLDYsMSwxMjIsCisgICAgMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDEwNSwxMTAsCisgICAgMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxMDIsMCwwLDAsMTAwLDEsCisgICAgMTA2LDAsMTI0LDAsMTA2LDEsMTMxLDEsMTAwLDIsMTA2LDAsMTI0LDAsMTA2LDIsCisgICAgMTMxLDEsMTAzLDIsMTI1LDEsMTI0LDAsMTA2LDMsMTAwLDAsMTA3LDksMTE0LDUyLAorICAgIDEyNCwxLDEwNiw0LDEwMCwzLDEwNiwwLDEyNCwwLDEwNiwzLDEzMSwxLDEzMSwxLAorICAgIDEsMCwxMjQsMCwxMDYsNSwxMDAsMCwxMDcsOSwxMTQsODAsMTI0LDEsMTA2LDQsCisgICAgMTAwLDQsMTA2LDAsMTI0LDAsMTA2LDUsMTMxLDEsMTMxLDEsMSwwLDEwMCw1LAorICAgIDEwNiwwLDEyNCwwLDEwNiw2LDEwNiw3LDEwMCw2LDEwNiw4LDEyNCwxLDEzMSwxLAorICAgIDEzMSwyLDgzLDAsNDEsNyw3OCwxMjIsOSwxMTAsOTcsMTA5LDEwMSw2MSwxMjMsMzMsCisgICAgMTE0LDEyNSwxMjIsMTEsMTA4LDExMSw5NywxMDAsMTAxLDExNCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsCisgICAgMTEsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDI5LDExNSwxMTcsCisgICAgOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw2MSwxMjMsMTI1LDEyMiw2LDEyMywxMjUsNDAsCisgICAgMTIzLDEyNSw0MSwxMjIsMiw0NCwzMiw0MSw5LDExNCwzOCwwLDAsMCwxMTQsMTUsCisgICAgMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwxMDMsMCwwLDAsMjE4LDYsOTcsCisgICAgMTEyLDExMiwxMDEsMTEwLDEwMCwxMTQsMTA2LDAsMCwwLDIxOCw5LDk1LDk1LDk5LDEwOCwKKyAgICA5NywxMTUsMTE1LDk1LDk1LDExNCwxLDAsMCwwLDIxOCw0LDEwNiwxMTEsMTA1LDExMCwKKyAgICA0MSwyLDExNCwyNiwwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQwLDAsMCwwLAorICAgIDExMSwxLDAsMCwxMTUsMTYsMCwwLDAsMCwxLDEwLDEsMTQsMSwxMCwKKyAgICAxLDE4LDEsMTAsMSw4LDEsMTAsMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTAyLDAsMCwwLDEyNCwwLDEwNiwwLDEyNSwyLDEyMSw3MCwKKyAgICAxMjQsMCwxMDYsMSwxMjQsMSwxMDYsMSwxMDcsMiwxMTEsNzYsMTI0LDAsMTA2LDIsCisgICAgMTI0LDEsMTA2LDIsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiwzLDEyNCwxLDEwNiwzLAorICAgIDEwNywyLDExMSw3NiwxMjQsMiwxMjQsMSwxMDYsMCwxMDcsMiwxMTEsNzYsMTI0LDAsCisgICAgMTA2LDQsMTI0LDEsMTA2LDQsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiw1LDEyNCwxLAorICAgIDEwNiw1LDEwNywyLDgzLDAsNCwwLDExNiw2LDEwNywxMCwxMTQsOTYsMSwwLAorICAgIDEsMCwxLDAsMTAwLDEsODMsMCw4OCwwLDEwMCwwLDgzLDAsNDEsMiwKKyAgICA3OCw3MCw0MSw3LDExNCwxMDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5MywKKyAgICAwLDAsMCwxMTQsMTAzLDAsMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLAorICAgIDIxOCwxMiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCw5MCwKKyAgICAwLDAsMCw0MSwzLDExNCwyNiwwLDAsMCw5MCw1LDExMSwxMTYsMTA0LDEwMSwKKyAgICAxMTQsOTAsNCwxMTUsMTA5LDExNSwxMDgsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwxMjEsMSwKKyAgICAwLDAsMTE1LDIwLDAsMCwwLDAsMSw2LDEsMiwxLDEyLDEsMTIsCisgICAgMSwxMiwxLDEwLDEsMTIsMSwxMiwxLDE0LDEsMTIyLDE3LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDU4LDAsMCwwLDEyNCwwLDEwNiwwLDEwMCwwLDEwNyw4LAorICAgIDExNCw1MiwxMjQsMCwxMDYsMSwxMDAsMCwxMDcsOSwxMTQsNTIsMTI0LDAsMTA2LDIsCisgICAgMTE0LDUyLDExNiwzLDEwMCwwLDEwNyw4LDExNCwzOCwxMTYsNCwxMzAsMSwxMTYsMywKKyAgICAxMDYsNSwxMjQsMCwxMDYsMSwxMzEsMSwxMjQsMCw5NSwwLDEyNCwwLDEwNiwwLAorICAgIDgzLDAsNDEsMSw3OCw0MSw2LDExNCwxMDgsMCwwLDAsMTE0LDEwMywwLDAsCisgICAgMCwxMTQsMTA3LDAsMCwwLDIxOCwxOSw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LDIxOCwxOSw3OCwxMTEsMTE2LAorICAgIDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgOTAsMTEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsNDEsMSwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDExMiwwLDAsMCwxMzMsMSwwLDAsMTE1LDEyLDAsMCwKKyAgICAwLDAsMiwxMCwxLDE2LDEsOCwxLDQsMSwxNCwxLDEyMiwxNyw3NywKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsOTksOTcsOTksMTA0LDEwMSwxMDAsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTI0LDEsMTI0LDAsOTUsMCwKKyAgICAxMDAsMCw4MywwLDQxLDEsNzgsNDEsMSwxMTQsMTA4LDAsMCwwLDQxLDIsCisgICAgMTE0LDI2LDAsMCwwLDExNCwxMTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExMiwwLDAsMCwxNDIsMSwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwyLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LAorICAgIDAsMCwwLDEyNCwwLDEwNiwwLDEwMCwxLDEwNyw4LDExNCwyOCwxMjQsMCwxMDYsCisgICAgMSwxMDYsMiwxMDAsMiwxMzEsMSwxMDAsMywyNSwwLDgzLDAsMTEwLDYsMTI0LAorICAgIDAsMTA2LDEsODMsMCwxMDAsMSw4MywwLDQxLDQsMTIyLDMyLDg0LDEwNCwxMDEsCiAgICAgMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0Niw3OCwyMTgsMSwKLSAgICA0NiwxMTQsMzMsMCwwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxNSwwLAorICAgIDQ2LDExNCwxOSwwLDAsMCw0MSwzLDExNCwxMDYsMCwwLDAsMTE0LDE1LDAsCiAgICAgMCwwLDIxOCwxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MSwxLAotICAgIDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwyMTgsNiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDE2MywxLDAsMCwKLSAgICAxMTUsNiwwLDAsMCwwLDMsMTUsMSwyMCwyLDEyMiwxNyw3NywxMTEsMTAwLAorICAgIDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwyMTgsNiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDE0NiwxLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDMsMTAsMSwxOCwyLDEyMiwxNyw3NywxMTEsMTAwLAogICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5OSwxLAogICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwKLSAgICAxLDc4LDQxLDEsMTE0LDExMSwwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCi0gICAgMTE3LDAsMCwwLDE3MSwxLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLAotICAgIDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LDk1LAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMSwKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDk4LDExMSwxMTEsMTA4LAotICAgIDExNCwxMTEsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMjE4LDUsMTE4LDk3LAotICAgIDEwOCwxMTcsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDExNCwxMTcsMCwwLDAsMTc1LDEsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiw0MSwxMiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwKLSAgICAwLDAsMCwxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDUyLDAsCi0gICAgMCwwLDExNCwxMTgsMCwwLDAsMjE4LDgsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMTE2LAotICAgIDEyMSwxMTQsMTE2LDAsMCwwLDIxOCw2LDExNSwxMDEsMTE2LDExNiwxMDEsMTE0LDExNCwxMjMsCi0gICAgMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwNiwwLDAsCi0gICAgMCw3OSwxLDAsMCwxMTUsMjAsMCwwLDAsMTIsMzUsNiwyLDE1LDEsCi0gICAgMTUsMTEsMTIsMTAsMTIsMTIsMTgsOSwyMSw0LDE4LDgsMTgsNCwxMTQsMTA2LAotICAgIDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOSwwLDAsMCw5OSwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNiwwLDAsMCwxNSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMjE3LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMDAsMSwwLAotICAgIDEzMSwyLDAsMTE0LDExMCwwLDExNiwxLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwKLSAgICAzMywwLDExNiwyLDAsMTMwLDEsMCwxMTYsMSwwLDEwNiwzLDAsMTI1LDQsCi0gICAgMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsNzAsMCwxMjQsNCwwLAotICAgIDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEzMSwxLDEsODMsMTI0LDMsMCwKLSAgICAxMTQsODIsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDIsMCwxMjUsNSwwLDEyNCwKLSAgICA0LDAsMTI0LDAsMCwxMDAsMywwLDEyNCwxLDAsMTAwLDQsMCwxMjQsNSwKLSAgICAwLDEzMSwxLDIsODMsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDE5MiwKLSAgICAwLDExNiwwLDAsMTI0LDEsMCwxMDAsNSwwLDEzMSwyLDAsMTE0LDE4NiwwLAotICAgIDEyMSwxOSwwLDEyNCwxLDAsMTA2LDQsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LAotICAgIDMsMCw4NywxMTMsMTkyLDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxODIsMCwKLSAgICAxLDEsMSwxMDAsMiwwLDEyNSwzLDAsODksMTEzLDE5MiwwLDg4LDExMCw2LAotICAgIDAsMTAwLDYsMCwxMjUsMywwLDExNiw2LDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEwMCw3LDAsMTI0LDIsMCwxMDAsNSwwLDEyNCwzLDAsMTMxLDIsMiw4MywKLSAgICA0MSw4LDEyMiw1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwKLSAgICAxMTAsMzIsMTE4LDk3LDExNCwxMDUsMTExLDExNywxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTAsMTIsMTAzLDEwMSwxMTYsOTUsMTAyLAotICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDExNCw5OSwwLDAsMCwxMTQsMTEwLDAsCi0gICAgMCwwLDExNCwxMDksMCwwLDAsNzAsMTE0LDEwNywwLDAsMCw0MSw3LDExNCwKLSAgICA0LDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyMCwwLDAsMCwyMTgsMjMsCi0gICAgMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTA5LDAsMCwwLDExNCw3NywwLDAsCi0gICAgMCwxMTQsMTA2LDAsMCwwLDQxLDYsMTE0LDE1LDAsMCwwLDExNCw5OSwwLAotICAgIDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDEyOCwwLDAsCi0gICAgMCw5MCw2LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODUsMCwwLDAsMTgwLDEsMCwKLSAgICAwLDExNSwzNCwwLDAsMCwwLDIsMTUsMSwxMiwxLDYsMSw5LDIsCi0gICAgMTIsMSwxNiwxLDE4LDEsMTUsMSw3LDIsMTIsMSwxNSwxLDMsMSwKLSAgICAxOSwxLDEzLDEsMTQsMyw2LDIsMTE0LDg1LDAsMCwwLDk5LDMsMCwKLSAgICAwLDAsMCwwLDAsMCw4LDAsMCwwLDUzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxMTgsMSwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEyNSwzLDAsODcsMTEwLDE4LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwzMywKLSAgICAwLDEsMSwxLDg5LDExMCwxNywwLDg4LDEyNCwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOSwwLDExNCw1MCwwLDEyNCwzLDAsODMsMTI0LDAsMCwxMDYsMiwwLDEyNSwKLSAgICA0LDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwNSwwLDEyMSwxMywKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LAotICAgIDEsMCwxMDcsMTAsMCwxMTQsMTA0LDAsMSwxLDEsODksMTEwLDEsMCw4OCwKLSAgICAxMjEsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDUsMCw4NywxMTAsMjQsMCwKLSAgICA0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDE0NCwwLDEsMSwxLDEwMCwwLDAsCi0gICAgMTI1LDUsMCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTAwLDAsMCwxMDcsOCwKLSAgICAwLDExNCwyMTgsMCwxMjQsNSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjEyLDAsCi0gICAgMTIxLDEzLDAsMTI0LDEsMCwxMDYsNSwwLDEyNSwyLDAsODcsMTEzLDIxOCwwLAotICAgIDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMjA4LDAsMSwxLDEsMTAwLDAsMCwKLSAgICAxMjUsMiwwLDg5LDExMywyMTgsMCw4OCwxMTAsNiwwLDEyNCw1LDAsMTI1LDIsCi0gICAgMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw2LDAsMTI1LDYsMCw4NywxMTAsMjQsCi0gICAgMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDEsMSwxLDEsMSwxMDAsMCwKLSAgICAwLDEyNSw2LDAsODksMTEwLDEsMCw4OCwxMjEsMTksMCwxMTYsNywwLDEyNCwKLSAgICAwLDAsMTA2LDgsMCwxMzEsMSwwLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwKLSAgICAxMTYsMSwwLDEwNywxMCwwLDExNCw0NywxLDEsMSwxLDEwMCwwLDAsMTI1LAotICAgIDcsMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsMTI0LDQsMCwxMjQsMSwwLAotICAgIDEwMCwxLDAsMTI0LDIsMCwxMzEsMiwxLDEyNSwzLDAsMTI0LDUsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDg3LDEsMTAwLDIsMCwxMTAsMywwLDEwMCwzLAotICAgIDAsMTI0LDMsMCw5NSwxMCwwLDEyNCw2LDAsMTI0LDMsMCw5NSwxMSwwLAotICAgIDEyNCw3LDAsMTI0LDMsMCw5NSwxMiwwLDEyNCwzLDAsODMsNDEsNCw3OCwKLSAgICAxMTQsMTA3LDAsMCwwLDcwLDg0LDQxLDEzLDExNCw5NSwwLDAsMCwxMTQsOTYsCi0gICAgMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw5OCwwLAotICAgIDAsMCw5MCw3LDk1LDc5LDgyLDczLDcxLDczLDc4LDIxOCwxMCw5NSw5NSw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwyMTgsNCwxMDgsMTA1LDExNSwxMTYsMjE4LDgsOTUsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE0LDEwNiwwLDAsMCwxMTQsMTExLDAsMCwKLSAgICAwLDExNCwxMTYsMCwwLDAsMTE0LDExMCwwLDAsMCw0MSw4LDExNCw4OSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsODgsMCwwLAotICAgIDAsMTE0LDE1LDAsMCwwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgMTE0LDExNiwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjA5LDEsMCwwLAotICAgIDExNSw3MiwwLDAsMCwwLDIsMywxLDEzLDEsMTMsMSw1LDIsMTIsCi0gICAgMSw0LDIsOSwxLDEyLDEsMywxLDEzLDEsMTMsMiw1LDEsMywKLSAgICAxLDEzLDEsMTMsMSwxMSwxLDEyLDEsMTIsMSwzLDEsMTMsMSwxMywKLSAgICAxLDE0LDIsNiwxLDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTksCi0gICAgMSwxMywxLDExLDIsMjEsMSwyNywxLDksMSw5LDEsMTE0LDEzMiwwLAotICAgIDAsMCwyMTgsOCwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDcwLDk5LDIsMCwKLSAgICAwLDAsMSwwLDAsMCw1LDAsMCwwLDU5LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw1NCwyLDAsMCwxMjQsMiwwLDExNSwzMCwwLDExNiwwLDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDY3LDAsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLAotICAgIDAsOTUsMiwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsCi0gICAgNjYsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDk3LDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDEwMCwyLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMjIxLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwzLAotICAgIDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDE4NywwLDEyNCwwLDAsCi0gICAgMTA2LDUsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE4NywwLDExNiw2LDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCwxNTEsMCwxMTYsNywwLDEzMCwxLDAsMTE2LDYsCi0gICAgMCwxMDYsOCwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsOSwwLDEyNCw0LDAsCi0gICAgMTMxLDEsMCwxMjUsMywwLDEyNCwwLDAsMTA2LDUsMCwxMjQsMywwLDk1LAotICAgIDEwLDAsMTIxLDEzLDAsMTI0LDMsMCwxMjQsMSwwLDk1LDExLDAsODcsMTEwLAotICAgIDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwyMjAsMCwxLDEsMSw4OSwKLSAgICAxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDI1MSwwLDExNiwwLDAsMTI0LDEsMCwKLSAgICAxMDAsMywwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDMyLDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTIsMCwxMjQsMSwwLDk1LDEzLAotICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwzMSwxLDEsCi0gICAgMSwxLDg5LDExMCwxLDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDk1LDE0LDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw2NSwKLSAgICAxLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsOTYsMSwxMTYsCi0gICAgMCwwLDEyNCwxLDAsMTAwLDQsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwxNDgsMSwxMjQsMCwwLDEwNiw1LDAsMTAwLDAsMCwKLSAgICAxMDcsOSwwLDExNCwxNDgsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LAotICAgIDEsMCw5NSwxNSwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwKLSAgICAxMTQsMTQ3LDEsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMCwwLDEwNiwxNiwKLSAgICAwLDExNCw1MCwyLDEyNCwyLDAsMTE1LDE4NywxLDExNiwwLDAsMTI0LDEsMCwKLSAgICAxMDAsNSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDIyNCwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDE3LDAsMTI0LDEsMCw5NSwxOCwKLSAgICAwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMjIzLDEsMSwKLSAgICAxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSwyNTQsMSwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTAwLDYsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOCwwLDExNCw1MCwyLDEyNCwwLDAsMTA2LDE5LDAsMTAwLDAsMCwxMDcsOSwKLSAgICAwLDExNCw1MCwyLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDE5LDAsMTI0LDEsMCwKLSAgICA5NSwyMCwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNDksCi0gICAgMiwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsODMsNDEsNyw3OCwKLSAgICAxMTQsMSwwLDAsMCwxMTQsOTEsMCwwLDAsMjE4LDExLDk1LDk1LDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTQsMTMxLDAsMCwwLDExNCw5OCwwLDAsCi0gICAgMCwxMTQsMTI5LDAsMCwwLDQxLDIxLDExNCw2LDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsMSwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDk5LDAsMCwKLSAgICAwLDExNCwxMTAsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIwLDAsMCwwLAotICAgIDIxOCwxNiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwyMTgsNyw5NSw5NSwxMTAsMTAxLDExOSw5NSw5NSw5MCw1LDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDExNCw5MSwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxMzQsMCwwLAotICAgIDAsMTE0LDk1LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LDExNywwLDAsMCwKLSAgICAxMTQsMTA3LDAsMCwwLDExNCw5OCwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwKLSAgICAxMjksMCwwLDAsNDEsNSwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLAotICAgIDExNCwxMzMsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LAotICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NywxMTYsMTE2LAotICAgIDExNCwxMTUsMjU0LDEsMCwwLDExNSw5MiwwLDAsMCwwLDQsMzAsMSwzLAotICAgIDEsMTYsMSwxMywxLDUsMiwzMCwxLDksMSwxMiwyLDE1LDEsMTIsCi0gICAgMSw2LDEsOSwyLDE1LDEsMTIsMSwzLDEsMTMsMSwxMywxLDUsCi0gICAgMiwzMCwxLDMsMSwxNiwxLDEzLDEsNSwyLDMsMSwxMywxLDEzLAotICAgIDEsNSwyLDMwLDEsMTUsMSwzLDEsMTYsMSwxMywxLDUsMiw5LAotICAgIDEsMzAsMSwzLDEsMTYsMSwxMywxLDUsMiwzMCwxLDE1LDEsMywKLSAgICAxLDE2LDEsMTMsMSw1LDEsMTE0LDEzNywwLDAsMCw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCw1LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxMjksMCwwLDAsMTAwLDEsMCwxMjUsMSwwLDExNiwwLDAsMTI0LAotICAgIDAsMCwxMDYsMSwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsNDUsMCwxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwKLSAgICAxMTAsNDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMywwLDEzMSwKLSAgICAyLDAsMTE0LDg1LDAsMTE2LDMsMCwxMDYsNCwwLDEwMCw0LDAsMTE2LDUsCi0gICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMxLDIsMSwxLDEyNCwxLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwxMTIsMCwxMTYsNiwwLDEyNCwwLDAsMTA2LDcsMCwKLSAgICAxMzEsMSwwLDEyNSwxLDAsMTE2LDgsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLAotICAgIDIsMCwxLDEyNCwxLDAsODMsNDEsNywxMjIsNDMsNjcsMTE0LDEwMSw5NywxMTYsCi0gICAgMTAxLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLAotICAgIDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMTEsMTE4LDEwNSwxMDAsMTAxLDEwMCwKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSw0Niw3OCwyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMjIsODcsMTE1LDExNiw5NywxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwNSwxMTAsCi0gICAgMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw1MSw0Niw1NCw0NCwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDExNSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwNSwxMTAsMTAzLDMyLDEwMSwxMjAsCi0gICAgMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwKLSAgICAzMiw5NywxMDgsMTE1LDExMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwzMiw5OSwxMTQsMTAxLAotICAgIDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsOTAsMTAsMTE1LDExNiwKLSAgICA5Nyw5OSwxMDcsMTA4LDEwMSwxMTgsMTAxLDEwOCwyMzMsMiwwLDAsMCw0MSw5LDExNCwKLSAgICA0LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTM4LDAsMCwwLDIxOCw5LAotICAgIDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwyMTgsNCwxMTksOTcsMTE0LDExMCwyMTgsCi0gICAgMTgsNjgsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDUsMTExLDExMCw4Nyw5NywxMTQsMTEwLAotICAgIDEwNSwxMTAsMTAzLDExNCwxNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzNywwLAotICAgIDAsMCw0MSwyLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSw1OCwKLSAgICAyLDAsMCwxMTUsMjAsMCwwLDAsMCwzLDYsMSwxOCwzLDIxLDEsCi0gICAgMTgsMSw5LDIsMTMsMSwxMiwxLDE1LDEsMTMsMSwxMTQsMTQ0LDAsMCwKLSAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDE0OSwwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyMSwwLDEwMCwyLDAsMTEwLDYsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLAotICAgIDEsMCwxMDcsOCwwLDExNCw5NSwwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMSwKLSAgICAwLDEwNyw4LDAsMTE0LDczLDAsMTAwLDMsMCwxMDYsMywwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCw4MywxMDAsNCwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDEwNiwyLDAsMTMxLDIsMCw4MywxMTAsNTAsMCwxMjQsMCwwLDEwNiw0LDAsCi0gICAgMTE0LDEyMywwLDEwMCw1LDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMzEsMiwwLDgzLDEwMCw2LDAsMTA2LDMsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsODMsMTAwLDEsMCw4MywKLSAgICA0MSw3LDEyMiwzOCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwKLSAgICAxMDEsMTEyLDExNCwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCw5MywwLDAsMCwKLSAgICAxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLAotICAgIDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywKLSAgICAzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDE4LAotICAgIDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywxMjUsCi0gICAgNDEsNjIsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsOTksCi0gICAgMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMTcsMCwwLDAsNDEsMiwxMTQsCi0gICAgODgsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCw5NywwLDAsMCw3NiwyLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMCwzLDMwLDEsMTUsMSwxNSwxLDEzLDIsCi0gICAgMjIsMiw5LDEsMTksMiwxMTQsOTcsMCwwLDAsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDQsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDI1MywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKLSAgICAwLDEwNiwyLDAsMTMxLDAsMCwxLDExNiwzLDAsMTI0LDIsMCwxMzEsMSwKLSAgICAwLDE0MywyMDgsMCwxLDExNiw0LDAsMTA2LDUsMCwxMDYsNiwwLDEyNCwyLAotICAgIDAsMTMxLDEsMCwxMjQsMSwwLDEwNyw5LDAsMTE0LDg5LDAsMTAwLDEsMCwKLSAgICAxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDExNiw4LDAsMTI0LAotICAgIDMsMCwxMDAsMiwwLDEyNCwyLDAsMTMxLDEsMSwxMzAsMSwwLDEyNCwwLAotICAgIDAsMTA2LDksMCwxMDAsMywwLDEwNyw4LDAsMTE0LDE2MywwLDEyNCwwLDAsCi0gICAgMTA2LDEwLDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNDAsMCwxMTYsOCwwLDEwMCwKLSAgICA0LDAsMTAwLDIsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDEsMSwxMzAsMSwKLSAgICAwLDExNiwxMSwwLDEyNCwwLDAsMTI0LDEsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMxLDIsMSwxLDEyNCwxLDAsODMsMTE2LDExLDAsMTI0LDAsMCwxMjQsMSwKLSAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzEsMiwxLDEsMTE2LDEyLDAsMTI0LDAsCi0gICAgMCwxMDYsOSwwLDEwMCw3LDAsMTMxLDIsMCwxMTUsMjE5LDAsMTI0LDAsMCwKLSAgICAxMDYsOSwwLDEwNiwxMywwLDEyNCwyLDAsMTMxLDEsMCwxLDExMCwxNiwwLAotICAgIDEyNCwwLDAsMTA2LDksMCwxMDYsMTQsMCwxMjQsMSwwLDEzMSwxLDAsMSwKLSAgICA4NywxMDAsMywwLDgxLDgyLDg4LDExNiw0LDAsMTA2LDUsMCwxMjQsMiwwLAotICAgIDI1LDgzLDQxLDgsMTIyLDUxLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsMTA1LDExMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMDUsCi0gICAgMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTIyLDMwLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNCwxNSwwLDAsMCw3OCwxMjIsCi0gICAgMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LAotICAgIDEzMywwLDAsMCw4NCwxMTQsMTM5LDAsMCwwLDQxLDE1LDExNCwxNSwwLDAsCi0gICAgMCwxMTQsNTcsMCwwLDAsMjE4LDEyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMTE0LDU0LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsCi0gICAgMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNzcsMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDEzNywwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDEzOSwwLDAsMCw0MSw0LDExNCw4OCwwLDAsMCwxMTQsCi0gICAgODksMCwwLDAsMTE0LDE1LDAsMCwwLDIxOCwzLDEwOSwxMTUsMTAzLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw4NiwwLAotICAgIDAsMCw5MywyLDAsMCwxMTUsMzIsMCwwLDAsMCwyLDksMSwxMCwKLSAgICAxLDEzLDEsMjQsMSwxNSwxLDE4LDEsMTUsMSwxNSwxLDIxLDIsMTksCi0gICAgMSw0LDEsMTksMSwxOCw0LDE5LDIsMjMsMSwxMTQsODYsMCwwLDAsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMjcsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDMsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMSwxMTYsMywwLAotICAgIDEwNiw0LDAsMTI0LDAsMCwxMDYsMiwwLDI1LDEyNSwxLDAsMTE2LDUsMCwKLSAgICAxMjQsMSwwLDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAotICAgIDgsMCwxMTQsOTYsMCwxMjEsMTYsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsCi0gICAgMCw5NSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwKLSAgICA5NSwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTE2LDUsMCwxMjQsMSwwLAotICAgIDEwMCwyLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCi0gICAgMTk3LDAsMTIxLDU2LDAsMTI0LDEsMCwxMDYsOCwwLDEyNCwxLDAsOTUsOSwKLSAgICAwLDExNiwxMCwwLDEyNCwxLDAsMTAwLDMsMCwxMzEsMiwwLDExNSwxNzUsMCwKLSAgICAxMjQsMCwwLDEwNiwyLDAsMTA2LDExLDAsMTAwLDQsMCwxMzEsMSwwLDEwMCwKLSAgICA1LDAsMjUsMTI0LDEsMCw5NSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywKLSAgICAwLDEwNywxMCwwLDExNCwxOTYsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDExNiwKLSAgICA1LDAsMTI0LDEsMCwxMDAsNiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKLSAgICAwLDEwNyw4LDAsMTE0LDI1NSwwLDEyMSwxMywwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICA5NSwxMiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMjU0LAotICAgIDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDgzLDQxLDcsNzgsCi0gICAgMTE0LDkxLDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsCi0gICAgMTIxLDAsMCwwLDExNCwzMywwLDAsMCwxMTQsOTUsMCwwLDAsNDEsMTMsCi0gICAgMTE0LDk5LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwKLSAgICAxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDkxLAotICAgIDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTM0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCwxMjIsMCwwLDAsMTE0LDk1LDAsMCwKLSAgICAwLDQxLDIsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsMTA4LAotICAgIDExMSw5NywxMDAsOTUsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDk1LDk5LDExMSwxMDksCi0gICAgMTEyLDk3LDExNiwxMDUsOTgsMTA4LDEwMSwxMTgsMiwwLDAsMTE1LDQwLDAsMCwwLAotICAgIDAsNCwxOSwyLDE2LDEsMjQsMSwzLDEsMTYsMSwxMywxLDUsMSwKLSAgICAyNCwxLDMsNCwxMiwxLDE1LDEsMjksMSwxMywxLDUsMSwyNCwxLAotICAgIDMsMSwxMywxLDEzLDEsNSwxLDExNCwxNDgsMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDE1OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwKLSAgICAxMDcsOSwwLDExNCw0MywwLDExNiwxLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwKLSAgICAxLDAsMTMxLDIsMCwxMTUsNDMsMCwxMTYsMiwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCw4MywxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLDExNiw0LAotICAgIDAsMTI0LDEsMCwxMzEsMSwwLDE0Myw3NSwwLDEsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTIyLDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEwMCwwLDAsMTA3LDgsMCwxMTQsMTM4LDAsMTE2LDYsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTI0LDAsMCwxMDYsNywwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMTYsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDgsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgMSw4NywxMDAsMCwwLDgxLDgyLDg4LDExNiw5LDAsMTA2LDEwLDAsMTI0LDAsCi0gICAgMCwxMDYsNywwLDI1LDgzLDQxLDQsNzgsMTE0LDEzOSwwLDAsMCwxMjIsMTQsCi0gICAgMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDE1LAotICAgIDAsMCwwLDQxLDExLDExNCw5OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgMTQ4LDAsMCwwLDExNCwxNDQsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMTEwLAotICAgIDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzOSwwLAotICAgIDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDQxLDIsMTE0LDg4LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LAotICAgIDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDE0NywyLDAsMCwxMTUsMjAsMCwwLDAsCi0gICAgMCwyLDE1LDIsMTgsMSwxMCwyLDEyLDEsMTMsMSwxNSwxLDE1LDEsCi0gICAgMjQsMywyMyw1LDExNCwxNDksMCwwLDAsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsNDcsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMTYsMiwwLAotICAgIDEyNCwwLDAsMTA2LDMsMCwxMzEsMSwwLDE0MywxNSwwLDEsMTE2LDQsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsODMsODcsMTAwLDEsMCw4MSw4Miw4OCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDE5MSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDExMCwKLSAgICAxMDEsMTE5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICA0NCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LAotICAgIDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA3MywxMDIsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywKLSAgICAxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMjAsMTA1LDExNSwKLSAgICAxMTYsMTA1LDExMCwxMDMsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAzLDEwMSwxMTYsMTE1LAotICAgIDEwLDMyLDMyLDMyLDMyLDk5LDEwOCwxMTEsOTgsOTgsMTAxLDExNCwxMDEsMTAwLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDc4LDQxLDUsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwKLSAgICAwLDAsMTE0LDU0LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTQ5LDAsMCwKLSAgICAwLDQxLDEsMTE0LDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCw4NywwLDAsMCwxNzAsMiwwLDAsCi0gICAgMTE1LDYsMCwwLDAsMCw5LDEwLDEsMTYsMSwxMTQsODcsMCwwLDAsCi0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjA1LDAsMCwwLDEwMSwwLDAsOTAsMSwwLAotICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLAotICAgIDIsMCwxMDAsMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsCi0gICAgMCwxMDAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsCi0gICAgMTMxLDEsMCw5MCw3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLAotICAgIDgsMCwxMzIsMSwwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksCi0gICAgMCwxMDAsMTAsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw2LDAsCi0gICAgMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLAotICAgIDYsMCwxMDEsMTEsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCw5MCwxMiwwLDEwMSw2LDAsMTAxLDExLDAsMTAwLDE1LDAsCi0gICAgMTAwLDE2LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTMsMCwxMDEsCi0gICAgNiwwLDEwMSwxMSwwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDkwLDE0LDAsMTAxLDYsMCwxMDEsMTUsMCwxMzEsMSwwLAotICAgIDkwLDE2LDAsMTAwLDQsMCw4Myw0MSwxOSwyMTgsMTUsNjYsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDEyMiwxNDQsNzcsMTAxLDExNiw5NywKLSAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwKLSAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsCi0gICAgMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwKLSAgICAxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsCi0gICAgMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsCi0gICAgMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjQsNjAsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsOTgsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsNTAsMCwwLDAsMTE0LDEsCi0gICAgMCwwLDAsNDEsMSwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDkyLDAsMCwwLDE5NSwyLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNTgsMCwwLAotICAgIDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE2LDAsMTAwLDAsMCwKLSAgICA4MywxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCw1MCwwLAotICAgIDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsCi0gICAgMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsCi0gICAgMCwwLDAsMTIyLDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsMywxMTQsCi0gICAgNTcsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICAxMTQsODUsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCw3OCwwLDAsCi0gICAgMCwyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwyMDQsMiwwLDAsMTE1LDEwLDAsCi0gICAgMCwwLDAsMiwxMiwxLDQsMSwxNSwxLDE5LDIsMTIyLDI1LDY2LDExNywKLSAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDEsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLAotICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDM3LDAsMTI0LAotICAgIDMsMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTc1LDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiwxMDUsMTE1LDMyLDEwMSwxMTgsCi0gICAgMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLAotICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiwKLSAgICA5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMDIsOTcsMTA1LAotICAgIDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKLSAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwKLSAgICAxMTQsMTU0LDAsMCwwLDExNCw5OSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLAotICAgIDAsMTE0LDc4LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDg4LDAsMCwwLAorICAgIDAsMCwwLDExNSw2LDAsMCwwLDEyNCwwLDEwNiwwLDgzLDAsNDEsMSwKKyAgICA3OCw0MSwxLDExNCwxMDcsMCwwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExMywKKyAgICAwLDAsMCwxNTQsMSwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyMywKKyAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTA0LDk3LDExNSw5NSwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwwLDAsCisgICAgMCwxMTYsMCwxMjQsMSwxMzEsMSwxMjQsMCw5NSwxLDEwMCwwLDgzLDAsNDEsCisgICAgMSw3OCw0MSwyLDIxOCw0LDk4LDExMSwxMTEsMTA4LDExNCwxMDcsMCwwLDAsNDEsCisgICAgMiwxMTQsMjYsMCwwLDAsMjE4LDUsMTE4LDk3LDEwOCwxMTcsMTAxLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMTMsMCwwLAorICAgIDAsMTU4LDEsMCwwLDExNSwyLDAsMCwwLDAsMiw0MSwxMiwxMTQsMSwKKyAgICAwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLAorICAgIDAsMCwxMTQsMjcsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCwxMTQsMCwwLAorICAgIDAsMjE4LDgsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMTE2LDEyMSwxMTQsMTEyLDAsMCwwLAorICAgIDIxOCw2LDExNSwxMDEsMTE2LDExNiwxMDEsMTE0LDExNCwxMTksMCwwLDAsMTE0LDExMywwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDEwMiwwLDAsMCw2MiwxLDAsMCwxMTUsCisgICAgMjAsMCwwLDAsOCwzNSw0LDIsNCwxLDE0LDExLDgsMTAsOCwxMiwKKyAgICAxMiw5LDE0LDQsMTIsOCwxMiw0LDExNCwxMDIsMCwwLDAsNDEsMiwxMTQsCisgICAgMTAzLDAsMCwwLDExNCwxMDUsMCwwLDAsOTksMiwwLDAsMCwyLDAsCisgICAgMCwwLDYsMCwwLDAsMTQsMCwwLDAsNjcsMCwwLDAsMTE1LDE1NCwKKyAgICAwLDAsMCwxMTYsMCwxMjQsMSwxMDAsMSwxMzEsMiwxMTQsNzQsMTE2LDEsMTAwLAorICAgIDIsMTA3LDgsMTE0LDIyLDExNiwyLDEzMCwxLDExNiwxLDEwNiwzLDEyNSw0LDEyNCwKKyAgICAzLDEwMCwyLDEwNyw4LDExNCw0OCwxMjQsNCwxMjQsMCwxMjQsMSwxMDAsMywxNDEsCisgICAgMiw4MywwLDEyNCwzLDExNCw1NiwxMDMsMCwxMTAsMiwxMDAsMiwxMjUsNSwxMjQsCisgICAgNCwxMjQsMCwxMjQsMSwxMjQsNSwxMDAsNCwxNDEsMyw4MywwLDEyNCwzLDEwMCwKKyAgICAyLDEwNyw4LDExNCwxMzgsMTE2LDAsMTI0LDEsMTAwLDUsMTMxLDIsMTE0LDEzNCwxMjEsCisgICAgMTQsMTI0LDEsMTA2LDQsMTI0LDAsMTMxLDEsMTI1LDMsODcsMCwxMTMsMTM4LDQsCisgICAgMCwxMTYsNSwxMDcsMTAsMTE0LDEzMCwxLDAsMSwwLDEsMCwxMDAsMiwxMjUsCisgICAgMyw4OSwwLDExMywxMzgsODgsMCwxMTAsNCwxMDAsNiwxMjUsMywxMTYsNiwxMjQsCisgICAgMCwxMjQsMSwxMjQsMiwxMjQsMywxMDAsNywxNDEsNCw4MywwLDQxLDgsMTIyLAorICAgIDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTgsCisgICAgOTcsMTE0LDEwNSwxMTEsMTE3LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5MCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsNzgsNDEsMSwxMTQsOTMsMCwwLDAsNDEsMiwxMTQsOTMsCisgICAgMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMTA1LDAsMCwwLDcwLDQxLDIsCisgICAgMTE0LDEwMywwLDAsMCwxMTQsMTA1LDAsMCwwLDQxLDcsMTE0LDQsMCwwLAorICAgIDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDIxOCwyMywxMTUsMTEyLDEwMSwKKyAgICA5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTksOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDExNCwxMDUsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxMDIsCisgICAgMCwwLDAsNDEsNiwxMTQsMTUsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICAxMDMsMCwwLDAsMTE0LDEwNSwwLDAsMCwxMTQsMTI0LDAsMCwwLDkwLDYsCisgICAgMTE1LDEwMSw5NywxMTQsOTksMTA0LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCw3OCwwLDAsMCwxNjMsMSwwLDAsMTE1LDM0LAorICAgIDAsMCwwLDAsMiwxMCwxLDgsMSw0LDEsNiwyLDgsMSwxMiwKKyAgICAxLDEyLDEsNiwxLDgsMiw4LDEsMTAsMSwyLDEsMTQsMSwxNCwKKyAgICAxLDEyLDMsNCwyLDExNCw3OCwwLDAsMCw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsOCwwLDAsMCw1MywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNTYsMSwwLDAsMTIxLDEwLDEyNCwwLDEwNiwwLDEyNSwzLDg3LDAsMTEwLDIwLAorICAgIDQsMCwxMTYsMSwxMDcsMTAsMTE0LDMwLDEsMCwxLDAsMSwwLDg5LDAsCisgICAgMTEwLDE0LDg4LDAsMTI0LDMsMTAwLDAsMTA3LDksMTE0LDQ0LDEyNCwzLDgzLDAsCisgICAgMTI0LDAsMTA2LDIsMTI1LDQsMTI0LDEsMTAwLDAsMTA3LDgsMTE0LDkwLDEyMSwxMCwKKyAgICAxMjQsMCwxMDYsMywxMjUsMSw4NywwLDExMCwyMCw0LDAsMTE2LDEsMTA3LDEwLAorICAgIDExNCw4OCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTIxLDEwLAorICAgIDEyNCwwLDEwNiw0LDEyNSw1LDg3LDAsMTEwLDI0LDQsMCwxMTYsMSwxMDcsMTAsCisgICAgMTE0LDEyNCwxLDAsMSwwLDEsMCwxMDAsMCwxMjUsNSw4OSwwLDExMCwyLAorICAgIDg4LDAsMTI0LDIsMTAwLDAsMTA3LDgsMTE0LDE4NCwxMjQsNSwxMDAsMCwxMDcsOCwKKyAgICAxMTQsMTgwLDEyMSwxMCwxMjQsMSwxMDYsNSwxMjUsMiw4NywwLDExMywxODQsNCwwLAorICAgIDExNiwxLDEwNywxMCwxMTQsMTc2LDEsMCwxLDAsMSwwLDEwMCwwLDEyNSwyLAorICAgIDg5LDAsMTEzLDE4NCw4OCwwLDExMCw0LDEyNCw1LDEyNSwyLDEyMSwxMCwxMjQsMCwKKyAgICAxMDYsNiwxMjUsNiw4NywwLDExMCwyNCw0LDAsMTE2LDEsMTA3LDEwLDExNCwyMTgsCisgICAgMSwwLDEsMCwxLDAsMTAwLDAsMTI1LDYsODksMCwxMTAsMiw4OCwwLAorICAgIDEyMSwxNCwxMTYsNywxMjQsMCwxMDYsOCwxMzEsMSwxMjUsNyw4NywwLDExMCwyNiwKKyAgICA0LDAsMTE2LDEsMTA3LDEwLDE0NCwxLDExNCw0LDEsMCwxLDAsMSwwLAorICAgIDEwMCwwLDEyNSw3LDg5LDAsMTEwLDIsODgsMCwxMTYsOSwxMjQsNCwxMjQsMSwKKyAgICAxMjQsMiwxMDAsMSwxNDEsMywxMjUsMywxMjQsNSwxMDAsMCwxMDcsOCwxNDQsMSwKKyAgICAxMTQsMzQsMTAwLDIsMTEwLDIsMTAwLDMsMTI0LDMsOTUsMTAsMTI0LDYsMTI0LDMsCisgICAgOTUsMTEsMTI0LDcsMTI0LDMsOTUsMTIsMTI0LDMsODMsMCw0MSw0LDc4LDQxLAorICAgIDEsMTE0LDEwMywwLDAsMCw3MCw4NCw0MSwxMywxMTQsODksMCwwLDAsMTE0LAorICAgIDkwLDAsMCwwLDExNCwxLDAsMCwwLDExNCw4NSwwLDAsMCwxMTQsOTIsCisgICAgMCwwLDAsOTAsNyw5NSw3OSw4Miw3Myw3MSw3Myw3OCwyMTgsMTAsOTUsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsMjE4LDQsMTA4LDEwNSwxMTUsMTE2LDIxOCw4LAorICAgIDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNCwxMDIsMCwwLDAsMTE0LDEwNywwLAorICAgIDAsMCwxMTQsMTEyLDAsMCwwLDExNCwxMDYsMCwwLDAsNDEsOCwxMTQsODMsCisgICAgMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDgyLDAsCisgICAgMCwwLDExNCwxNSwwLDAsMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDExNCwxMTIsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTE1LDExMiwxMDEsCisgICAgOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE5MiwxLDAsCisgICAgMCwxMTUsNzIsMCwwLDAsMCwyLDIsMSwxMCwxLDE0LDEsNiwyLAorICAgIDgsMSw0LDIsNiwxLDgsMSwyLDEsMTAsMSwxNCwyLDYsMSwKKyAgICAyLDEsMTAsMSwxNCwxLDEwLDEsOCwxLDgsMSwyLDEsMTAsMSwKKyAgICAxNCwxLDEyLDIsNCwxLDIsMSwxMCwxLDE0LDEsMTAsMSwyLDEsCisgICAgMTQsMSwxNiwxLDEwLDIsMTQsMSwyMCwxLDYsMSw2LDEsMTE0LDEyOCwKKyAgICAwLDAsMCw3MCw0MSwxLDIxOCw4LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsCisgICAgOTksMiwwLDAsMCwxLDAsMCwwLDUsMCwwLDAsNTksMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDIxMiwxLDAsMCwxMjQsMiwxMTUsMjAsMTE2LDAsCisgICAgMTI0LDEsMTAwLDEsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsMTE0LDU0LDEyMSwxMiwKKyAgICAxMjQsMCwxMDYsMSwxMjQsMSw5NSwyLDg3LDAsMTEwLDIwLDQsMCwxMTYsMywKKyAgICAxMDcsMTAsMTE0LDUyLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMjQsMiwxMTUsNzQsMTE2LDAsMTI0LDEsMTAwLDIsMTAwLDAsMTMxLDMsMTAwLDAsCisgICAgMTA3LDgsMTE0LDE2NiwxMjQsMCwxMDYsNCwxMjUsMywxMjQsMywxMDAsMCwxMDcsOCwKKyAgICAxMTQsMTM0LDEyNCwwLDEwNiw1LDEwMCwwLDEwNyw5LDExNCwxMzQsMTE2LDYsMTAwLDAsCisgICAgMTA3LDgsMTE0LDExMCwxMTYsNywxMzAsMSwxMTYsNiwxMDYsOCwxMjUsNCwxMjQsNCwKKyAgICAxMDYsOSwxMjQsNCwxMzEsMSwxMjUsMywxMjQsMCwxMDYsNSwxMjQsMyw5NSwxMCwKKyAgICAxMjEsMTAsMTI0LDMsMTI0LDEsOTUsMTEsODcsMCwxMTAsMjAsNCwwLDExNiwzLAorICAgIDEwNywxMCwxMTQsMTY0LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMjQsMiwxMTUsMTg2LDExNiwwLDEyNCwxLDEwMCwzLDEwMCwwLDEzMSwzLDEwMCwwLAorICAgIDEwNyw4LDExNCwyMjAsMTIxLDEyLDEyNCwwLDEwNiwxMiwxMjQsMSw5NSwxMyw4NywwLAorICAgIDExMCwyMCw0LDAsMTE2LDMsMTA3LDEwLDExNCwyMTgsMSwwLDEsMCwxLDAsCisgICAgODksMCwxMTAsMiw4OCwwLDEyMSwxMCwxMjQsMCwxMjQsMSw5NSwxNCw4NywwLAorICAgIDExMCwyMCw0LDAsMTE2LDMsMTA3LDEwLDExNCwyNTAsMSwwLDEsMCwxLDAsCisgICAgODksMCwxMTAsMiw4OCwwLDEyNCwyLDE0NCwxLDExNSwyMCwxMTYsMCwxMjQsMSwKKyAgICAxMDAsNCwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxNDQsMSwxMTQsNjgsMTI0LDAsCisgICAgMTA2LDUsMTAwLDAsMTA3LDksMTQ0LDEsMTE0LDY4LDEyMSwxMiwxMjQsMCwxMDYsNSwKKyAgICAxMjQsMSw5NSwxNSw4NywwLDExMCwyMiw0LDAsMTE2LDMsMTA3LDEwLDE0NCwxLAorICAgIDExNCw2NiwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTI0LDAsCisgICAgMTA2LDE2LDE0NCwxLDExNCwyMDgsMTI0LDIsMTQ0LDEsMTE1LDEwMCwxMTYsMCwxMjQsMSwKKyAgICAxMDAsNSwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxNDQsMSwxMTQsMTM2LDEyMSwxMiwKKyAgICAxMjQsMCwxMDYsMTcsMTI0LDEsOTUsMTgsODcsMCwxMTAsMjIsNCwwLDExNiwzLAorICAgIDEwNywxMCwxNDQsMSwxMTQsMTM0LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsCisgICAgODgsMCwxMjQsMiwxNDQsMSwxMTUsMTYwLDExNiwwLDEyNCwxLDEwMCw2LDEwMCwwLAorICAgIDEzMSwzLDEwMCwwLDEwNyw4LDE0NCwxLDExNCwyMDgsMTI0LDAsMTA2LDE5LDEwMCwwLAorICAgIDEwNyw5LDE0NCwxLDExNCwyMDgsMTIxLDEyLDEyNCwwLDEwNiwxOSwxMjQsMSw5NSwyMCwKKyAgICA4NywwLDExMCwyMiw0LDAsMTE2LDMsMTA3LDEwLDE0NCwxLDExNCwyMDYsMSwwLAorICAgIDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwxLDgzLDAsNDEsNywKKyAgICA3OCwxMTQsMSwwLDAsMCwxMTQsODUsMCwwLDAsMjE4LDExLDk1LDk1LDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTQsMTI3LDAsMCwwLDExNCw5MiwwLAorICAgIDAsMCwxMTQsMTI1LDAsMCwwLDQxLDIxLDExNCw2LDAsMCwwLDExNCwxNSwKKyAgICAwLDAsMCwxMTQsMSwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDkzLDAsCisgICAgMCwwLDExNCwxMDYsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwKKyAgICAwLDIxOCwxNiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwyMTgsNyw5NSw5NSwxMTAsMTAxLDExOSw5NSw5NSw5MCw1LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDExNCw4NSwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMzAsMCwKKyAgICAwLDAsMTE0LDg5LDAsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDExMywwLDAsCisgICAgMCwxMTQsMTAzLDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsMTEyLDAsMCwwLAorICAgIDExNCwxMjUsMCwwLDAsNDEsNSwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwKKyAgICAwLDExNCwxMjksMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwxMzEsMCwwLDAsCiAgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDExLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTMsMiwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCw5LDE4LDEsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNjcsMCwwLDAsCi0gICAgMTI0LDEsMCwxMDYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMDcsNywwLDExNCwKLSAgICA1MSwwLDExNiwzLDAsMTAwLDEsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDAsCi0gICAgMCwxMzEsMSwwLDEwMCwyLDAsMTI0LDEsMCwxMDYsMCwwLDEzMSwxLDEsCi0gICAgMTMwLDEsMCwxMTYsNSwwLDExNiw2LDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwKLSAgICAyLDAsODMsNDEsMywxMjIsMjQsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLAotICAgIDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwKLSAgICAyOSwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDk4LAotICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNSwKLSAgICAwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAotICAgIDc2LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LAotICAgIDAsMCwwLDExNCw1NywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsCi0gICAgOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LAotICAgIDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCwxMzgsMCwwLDAsMjI1LDIsMCwwLDExNSw4LDAsMCwKLSAgICAwLDAsMywxOCwxLDIxLDEsMTIsMSwxMjIsMjksNjYsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LAotICAgIDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLAotICAgIDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwyLAotICAgIDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDIyLDY5LDEyMCwxMDEsOTksMzIsOTcsCisgICAgMTgsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwKKyAgICAxMTYsMTE0LDExNSwyMzcsMSwwLDAsMTE1LDkyLDAsMCwwLDAsNCwyMCwxLAorICAgIDIsMSwxMiwxLDE0LDEsNiwyLDIwLDEsNiwxLDgsMiwxMCwxLAorICAgIDgsMSw0LDEsNiwyLDEwLDEsOCwxLDIsMSwxMCwxLDE0LDEsCisgICAgNiwyLDIwLDEsMiwxLDEyLDEsMTQsMSw2LDIsMiwxLDEwLDEsCisgICAgMTQsMSw2LDIsMjQsMSwxMiwxLDIsMSwxMiwxLDE2LDEsNiwyLAorICAgIDgsMSwyNCwxLDIsMSwxMiwxLDE2LDEsNiwyLDI0LDEsMTIsMSwKKyAgICAyLDEsMTIsMSwxNiwxLDYsMSwxMTQsMTMzLDAsMCwwLDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDgyLDAsMCwwLDEwMCwxLDEyNSwxLDExNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEwMCwyLDEzMSwyLDExNCwzMCwxMjQsMCwxMDYsMSwxMDYsMiwxMjQsMCwxMzEsCisgICAgMSwxMjUsMSwxMTAsMjAsMTE2LDAsMTI0LDAsMTA2LDEsMTAwLDMsMTMxLDIsMTE0LAorICAgIDUwLDExNiwzLDEwMCw0LDEzMSwxLDEzMCwxLDEyNCwxLDEwMCwxLDEwNyw4LDExNCwKKyAgICA2OCwxMTYsNCwxMjQsMCwxMDYsNSwxMzEsMSwxMjUsMSwxMTYsNiwxMjQsMCwxMjQsCisgICAgMSwxMzEsMiwxLDAsMTI0LDEsODMsMCw0MSw1LDEyMiw0Myw2NywxMTQsMTAxLAorICAgIDk3LDExNiwxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LAorICAgIDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE0LDExMSwxMTgsMTA1LDEwMCwKKyAgICAxMDEsMTAwLDMyLDExNSwxMTIsMTAxLDk5LDQ2LDc4LDIxOCwxMyw5OSwxMTQsMTAxLDk3LDExNiwKKyAgICAxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDEyMiw2NiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiwxMTYsCisgICAgMTA0LDk3LDExNiwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LAorICAgIDExNSwxMTEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDQxLDcsMTE0LDQsMCwwLDAsCisgICAgMTE0LDkzLDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwKKyAgICAxNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzMywwLDAsMCw0MSwyLAorICAgIDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDAsMCwxMTUsCisgICAgMTgsMCwwLDAsMCwzLDQsMSwxMiwzLDE0LDEsMTIsMSw4LDIsCisgICAgOCwxLDEwLDEsMTAsMSwxMTQsMTM2LDAsMCwwLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDExMCwwLDAsMCwxMjQsMCwxMDYsMCwxMDAsMSwxMDcsOCwxMTQsMTQsMTAwLAorICAgIDIsMTEwLDQsMTI0LDAsMTA2LDAsMTI1LDEsMTI0LDAsMTA2LDEsMTAwLDEsMTA3LAorICAgIDgsMTE0LDY4LDEyNCwwLDEwNiwyLDEwMCwxLDEwNyw4LDExNCw1MiwxMDAsMywxMDYsCisgICAgMywxMjQsMSwxMzEsMSw4MywwLDExMywxMDYsMTAwLDQsMTA2LDMsMTI0LDEsMTI0LAorICAgIDAsMTA2LDIsMTMxLDIsODMsMCwxMTAsMzgsMTI0LDAsMTA2LDQsMTE0LDkwLDEwMCwKKyAgICA1LDEwNiwzLDEyNCwxLDEyNCwwLDEwNiwxLDEzMSwyLDgzLDAsMTEwLDE2LDEwMCwKKyAgICA2LDEwNiwzLDEyNCwwLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwyLDgzLDAsMTAwLAorICAgIDEsODMsMCw0MSw3LDEyMiwzOCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCw4NywKKyAgICAwLDAsMCwxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwKKyAgICAxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LAorICAgIDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsCisgICAgNjIsMTIyLDE4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLAorICAgIDQwLDEyMywxMjUsNDEsNjIsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDEwMywwLDAsCisgICAgMCwxMTQsOTMsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwxMTMsMCwwLDAsCisgICAgNDEsMiwxMTQsODIsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw5MSwwLDAsMCwKKyAgICA1OCwyLDAsMCwxMTUsMTYsMCwwLDAsMCwzLDIwLDEsMTAsMSwxMCwKKyAgICAxLDEyLDIsMTYsMiw2LDEsMTYsMiwxMTQsOTEsMCwwLDAsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMTIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE4NiwwLDAsMCwxMjQsMCwxMDYsMCwxMjUsMiwxMTYsMSwKKyAgICAxMDYsMiwxMzEsMCwxLDAsMTE2LDMsMTI0LDIsMTMxLDEsMTQzLDE0OCwxLDAsCisgICAgMTE2LDQsMTA2LDUsMTA2LDYsMTI0LDIsMTMxLDEsMTI0LDEsMTA3LDksMTE0LDYyLAorICAgIDEwMCwxLDEwNiw3LDEyNCwyLDEzMSwxLDEyNSwzLDExNiw4LDEyNCwzLDEyNCwyLAorICAgIDEwMCwyLDE0MSwyLDEzMCwxLDEyNCwwLDEwNiw5LDEwMCwzLDEwNyw4LDExNCwxMTQsCisgICAgMTI0LDAsMTA2LDEwLDEwMCwzLDEwNyw4LDExNCw5NiwxMTYsOCwxMDAsNCwxMjQsMCwKKyAgICAxMDYsMCwxMDAsMiwxNDEsMiwxMzAsMSwxMTYsMTEsMTI0LDAsMTI0LDEsMTAwLDUsCisgICAgMTAwLDYsMTQxLDMsMSwwLDEyNCwxLDgzLDAsMTE2LDExLDEyNCwwLDEyNCwxLAorICAgIDEwMCw1LDEwMCw2LDE0MSwzLDEsMCwxMTYsMTIsMTI0LDAsMTA2LDksMTAwLDcsCisgICAgMTMxLDIsMTE1LDE1NCwxMjQsMCwxMDYsOSwxMDYsMTMsMTI0LDIsMTMxLDEsMSwwLAorICAgIDExMCwxMiwxMjQsMCwxMDYsOSwxMDYsMTQsMTI0LDEsMTMxLDEsMSwwLDg3LDAsCisgICAgMTAwLDMsODEsMCw4MiwwLDg4LDAsMTE2LDQsMTA2LDUsMTI0LDIsMjUsMCwKKyAgICA4MywwLDQxLDgsMTIyLDcwLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LAorICAgIDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwzMiw5NywxMTAsMzIsCisgICAgMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwKKyAgICAxMTUsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTIyLDMwLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQxLDEsMTE0LDE1LAorICAgIDAsMCwwLDc4LDEyMiwxNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw4NCw0MSwxLDExNCwxMjksMCwwLDAsMTE0LDEzNSwwLDAsCisgICAgMCw0MSwxNSwxMTQsMTUsMCwwLDAsMTE0LDQ2LDAsMCwwLDIxOCwxMiw5NywKKyAgICA5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCw0MiwwLDAsMCwKKyAgICAxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsCisgICAgMzgsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCw5MywwLDAsMCwxMTQsMTA2LAorICAgIDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDQsMCwwLDAsMjE4LDExLDEwOCwKKyAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMzUsMCwwLDAsNDEsCisgICAgNCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxNSwwLDAsMCwKKyAgICAyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsODAsMCwwLDAsNzUsMiwwLDAsMTE1LDMyLDAsCisgICAgMCwwLDAsMiw2LDEsOCwxLDEwLDEsMTYsMSwxMCwxLDEyLDEsCisgICAgMTAsMSwxMCwxLDE0LDIsMTQsMSw0LDEsMTQsMSwxMiw0LDE0LDIsCisgICAgMjIsMSwxMTQsODAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMjcsMCwwLDAsNjcsMCwwLDAsMTE1LDIwNiwwLDAsCisgICAgMCwxMjQsMCwxMDYsMCwxMDYsMSwxMjQsMCwxMDYsMiwxMzEsMSwxLDAsMTE2LAorICAgIDMsMTA2LDQsMTI0LDAsMTA2LDIsMjUsMCwxMjUsMSwxMTYsNSwxMjQsMSwxMDAsCisgICAgMSwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsNzYsMTIxLDEyLDEyNCwwLDEwNiwKKyAgICAwLDEyNCwxLDk1LDYsODcsMCwxMTAsMjAsNCwwLDExNiw3LDEwNywxMCwxMTQsCisgICAgNzQsMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDExNiw1LDEyNCwKKyAgICAxLDEwMCwyLDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LDExNCwxNTQsMTIxLDQwLDEyNCwKKyAgICAxLDEwNiw4LDEyNCwxLDk1LDksMTE2LDEwLDEyNCwxLDEwMCwzLDEzMSwyLDExNSwKKyAgICAxMzAsMTI0LDAsMTA2LDIsMTA2LDExLDEwMCw0LDEzMSwxLDEwMCw1LDI1LDAsMTI0LAorICAgIDEsOTUsOSw4NywwLDExMCwyMCw0LDAsMTE2LDcsMTA3LDEwLDExNCwxNTIsMSwKKyAgICAwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDExNiw1LDEyNCwxLDEwMCwKKyAgICA2LDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LDExNCwyMDIsMTIxLDEwLDEyNCwwLDEyNCwKKyAgICAxLDk1LDEyLDg3LDAsMTEwLDIwLDQsMCwxMTYsNywxMDcsMTAsMTE0LDIwMCwxLAorICAgIDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTI0LDEsODMsMCw0MSwKKyAgICA3LDc4LDExNCw4NSwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxMjcsMCwwLAorICAgIDAsMTE0LDExNywwLDAsMCwxMTQsMTksMCwwLDAsMTE0LDg5LDAsMCwwLAorICAgIDQxLDEzLDExNCw5MywwLDAsMCwxMTQsMTM4LDAsMCwwLDExNCwxNSwwLDAsCisgICAgMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDExNCw4NSwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDEsMCwwLDAsMTE0LAorICAgIDEzMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCw4OSwKKyAgICAwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDk1LDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCw5NSw5OSwKKyAgICAxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwOCwxMDEsMTAwLDIsMCwwLDExNSw0MCwwLAorICAgIDAsMCwwLDQsMTQsMiwxMiwxLDE2LDEsMiwxLDEyLDEsMTQsMSwKKyAgICA2LDEsMTYsMSwyLDQsOCwxLDEwLDEsMjIsMSwxNCwxLDYsMSwKKyAgICAxNiwxLDIsMSwxMCwxLDE0LDEsNiwxLDExNCwxNDAsMCwwLDAsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDExOCwwLDAsMCwxMjQsMCwxMDYsMCwxMDAsMCwxMDcsCisgICAgOSwxMTQsMzAsMTE2LDEsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDIsMTE1LDMwLDExNiwKKyAgICAyLDEyNCwwLDEzMSwxLDgzLDAsMTE2LDMsMTI0LDAsMTMxLDEsMTI1LDEsMTE2LAorICAgIDQsMTI0LDEsMTMxLDEsMTQzLDU0LDEsMCwxMjQsMCwxMDYsMCwxMDAsMCwxMDcsCisgICAgOCwxMTQsODQsMTI0LDAsMTA2LDUsMTAwLDAsMTA3LDgsMTE0LDk2LDExNiw2LDEwMCwKKyAgICAyLDEyNCwwLDEwNiw3LDEwMCwzLDE0MSwyLDEzMCwxLDExMCwxMiwxMjQsMCwxMDYsCisgICAgMCwxMDYsOCwxMjQsMSwxMzEsMSwxLDAsODcsMCwxMDAsMCw4MSwwLDgyLAorICAgIDAsODgsMCwxMTYsOSwxMDYsMTAsMTI0LDAsMTA2LDcsMjUsMCw4MywwLDQxLAorICAgIDQsNzgsMTE0LDEzNSwwLDAsMCwxMjIsMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDEsMSwxMTQsMTUsMCwwLDAsNDEsMTEsCisgICAgMTE0LDkzLDAsMCwwLDExNCw0LDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LAorICAgIDEzNiwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsNzAsCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LDE0LDAsCisgICAgMCwwLDExNCw3OSwwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwxMTQsODMsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsCisgICAgMTAxLDEwMCwxMjksMiwwLDAsMTE1LDIwLDAsMCwwLDAsMiwxMCwyLDEyLAorICAgIDEsOCwyLDgsMSwxMCwxLDEwLDEsMTAsMSwxNiwzLDIyLDUsMTE0LAorICAgIDE0MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCisgICAgMCw5LDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMTYsMCwKKyAgICAxMDYsMSwxMzEsMCwxLDAsMTE2LDIsMTI0LDAsMTA2LDMsMTMxLDEsMTQzLDEwLAorICAgIDEsMCwxMTYsNCwxMjQsMCwxMzEsMSw4MywwLDgxLDAsODIsMCw4OCwwLAorICAgIDEwMCwxLDgzLDAsNDEsMiwxMjIsMTkxLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsCisgICAgMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsCisgICAgOTksMTE2LDQ0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDAsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwKKyAgICAzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LAorICAgIDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTAxLDEyMCwKKyAgICAxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLAorICAgIDExNiwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTA4LDExMSw5OCw5OCwxMDEsMTE0LDEwMSwxMDAsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwxMTQsNDYsMCwwLDAsMTE0LAorICAgIDEzNywwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxNDEsCisgICAgMCwwLDAsNDEsMSwxMTQsODIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDgxLDAsMCwwLDE1MiwyLAorICAgIDAsMCwxMTUsNiwwLDAsMCwwLDksOCwxLDEyLDEsMTE0LDgxLDAsCisgICAgMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsCisgICAgMCwwLDAsNjQsMCwwLDAsMTE1LDEzNiwwLDAsMCwxMDEsMCw5MCwxLAorICAgIDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDEsNCwxMDAsMiwxMDAsMywxMzIsMCwKKyAgICAxMzEsMSw5MCw1LDEwMSw2LDEwMCwxOSwxMDAsNSwxMDAsNiwxMzIsMSwxMzEsMSwKKyAgICA5MCw3LDEwMSw2LDEwMCwyMCwxMDAsNywxMDAsOCwxMzIsMSwxMzEsMSw5MCw4LAorICAgIDEwMSw2LDEwMCw5LDEwMCwxMCwxMzIsMCwxMzEsMSw5MCw5LDEwMSw2LDEwMCwxMSwKKyAgICAxMDAsMTIsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDYsMTAxLDExLDEwMCwxMywxMDAsMTQsCisgICAgMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTIsMTAxLDYsMTAxLDExLDEwMCwxNSwxMDAsMTYsCisgICAgMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTMsMTAxLDYsMTAxLDExLDEwMCwxNywxMDAsMTgsCisgICAgMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTQsMTAxLDYsMTAxLDE1LDEzMSwxLDkwLDE2LAorICAgIDEwMCw0LDgzLDAsNDEsMjEsMjE4LDE1LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQ0LDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LAorICAgIDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwKKyAgICAxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywKKyAgICAxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLAorICAgIDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDgzLDAsNDEsCisgICAgMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLAorICAgIDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LAorICAgIDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyNCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSwzMiw0MCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSw2MiwKKyAgICA0MSwyLDExNCwzOCwwLDAsMCwxMTQsMSwwLDAsMCw0MSwxLDExNCw4MywKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwxMTQsODYsMCwwLDAsMTc3LDIsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsNywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw3OCwKKyAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMiwxMDAsMCwxMDcsOSwKKyAgICAxMTQsMTIsMTAwLDAsODMsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSwxMTQsMzgsCisgICAgMTE2LDIsMTI0LDEsMTI0LDAsMTAwLDEsMTAwLDIsMTQxLDMsODMsMCwxMTAsNCwKKyAgICAxMDAsMCw4MywwLDEwMCwwLDgzLDAsNDEsMyw3OCwxMjIsOCw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsNDUsMTA1LDExMCw0MSwxLDExNCwxMDMsMCwwLDAsNDEsMywxMTQsNDYsCisgICAgMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTQsCisgICAgNzgsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCw3MSwwLDAsMCwKKyAgICAyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxODYsMiwwLDAsMTE1LDEwLDAsMCwKKyAgICAwLDAsMiw4LDEsNCwxLDEwLDEsMTYsMiwxMjIsMjUsNjYsMTE3LDEwNSwKKyAgICAxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsNCwKKyAgICAwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzMCwwLDAsMCwKKyAgICAxMjQsMCwxMDYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsMywxMjQsMywxMDAsMSwKKyAgICAxMDcsOSwxMTQsMjYsMTI0LDMsMTA2LDEsODMsMCwxMDAsMSw4MywwLDQxLDIsCisgICAgMTIyLDE3NSw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsMTA1LAorICAgIDExNSwzMiwxMDEsMTE4LDEwMSwxMTQsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LAorICAgIDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsCisgICAgMzIsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LAorICAgIDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LAorICAgIDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwKKyAgICAxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDc4LDQxLDIsMTE0LDE0NiwwLDAsMCwxMTQsOTMsMCwwLDAsNDEsNCwKKyAgICAxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwKKyAgICA4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDE5NSwyLDAsMCwxMTUsNCwwLDAsMCwwLDksMTIsMSwxMjIsMjcsNjYsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA0NiwwLDAsMCwxMjQsMSwxMDYsMCwxMTYsMSwxMDYsMiwxMDcsNywxMTQsMzQsCisgICAgMTE2LDMsMTAwLDEsMTA2LDQsMTI0LDEsMTA2LDAsMTMxLDEsMTI0LDEsMTA2LDAsCisgICAgMTAwLDIsMTQxLDIsMTMwLDEsMTE2LDUsMTE2LDYsMTA2LDcsMTI0LDEsMTMxLDIsCisgICAgODMsMCw0MSwzLDEyMiwyNCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDI5LAorICAgIDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMSwxMTQsCisgICAgMTUsMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMTE0LDE0LDAsMCwwLAorICAgIDExNCw2OSwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwKKyAgICA1OCwwLDAsMCwxMTQsNDYsMCwwLDAsOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsCisgICAgMTAxLDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDI2LDAsMCwwLAorICAgIDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsMTM0LDAsMCwwLDIwNywyLDAsMCwxMTUsOCwwLAorICAgIDAsMCwwLDMsMTIsMSwxMiwxLDEwLDEsMTIyLDI5LDY2LDExNywxMDUsMTA4LAorICAgIDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LAorICAgIDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTYsCisgICAgMCwwLDAsMTE2LDAsMTE2LDEsMTA2LDIsMTI0LDEsMTMxLDIsMSwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiwxMjIsMjIsNjksMTIwLDEwMSw5OSwzMiw5NywzMiw5OCwxMTcsCisgICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSwzLAorICAgIDExNCw1OCwwLDAsMCwxMTQsNDYsMCwwLDAsOTAsMTIsMTAxLDEyMCwxMDEsOTksCisgICAgOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMjYsMCwwLDAsMTE0LAorICAgIDgzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwxMzUsMCwwLDAsMjE1LDIsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLAorICAgIDEyMiw1Nyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwKICAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3OCw0MSwzLDExNCw2NSwwLDAsMCwxMTQsNTcsMCwwLDAsOTAsMTIsMTAxLAotICAgIDEyMCwxMDEsOTksOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMTksMCwKLSAgICAwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwxMzksMCwwLDAsMjMzLDIsMCwwLDExNSwKLSAgICAyLDAsMCwwLDAsMywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAotICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCwKLSAgICA4Myw0MSwyLDEyMiw1Nyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLAotICAgIDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwKLSAgICAzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDQ2LDc4LDExNCwKLSAgICAxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICA4LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDIzOCwyLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDQsMTIyLDI0LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTYsCi0gICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsMiwKLSAgICAxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSwyNDQsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LAorICAgIDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDk5LDExMSwKKyAgICAxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsMTE0LDEwLDAsMCwKKyAgICAwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsMTAzLDEwMSwKKyAgICAxMTYsOTUsOTksMTExLDEwMCwxMDEsMjIwLDIsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgNCwxMjIsMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw1Niw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLAorICAgIDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwKKyAgICAwLDAsMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDIyNiwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDI2LDY2LAorICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsCisgICAgMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsCisgICAgMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw1Miw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwKKyAgICAxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsNzAsCisgICAgMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDEwNSwwLDAsMCwyMzIsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LAogICAgIDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTIsODIsMTAxLAotICAgIDExNiwxMTcsMTE0LDExMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LAotICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LAotICAgIDExNCwxMDEsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCi0gICAgMTE1LDQ2LDcwLDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LAotICAgIDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCwxMDksMCwwLDAsMjUwLDIsMCwwLDExNSwyLDAsMCwKLSAgICAwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLAotICAgIDE3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLAotICAgIDExNCwzLDAsMCwwLDIxOCwxMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMTA5LDEwMSwxMTYsCi0gICAgMTA0LDExMSwxMDAsMTE0LDkyLDAsMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMTU0LDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LAotICAgIDEzOCwwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsMTU2LAotICAgIDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsOTAsMCwKLSAgICAwLDAsMTE0LDE0NiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1MCwwLDAsMCwKLSAgICAxODYsMiwwLDAsMTE1LDMwLDAsMCwwLDEyLDcsNiwyLDE4LDksMywKLSAgICAxLDIxLDgsMywxLDE4LDExLDE4LDgsMTgsNSwzLDEsMjEsNSwzLAotICAgIDEsMjEsNSwzLDEsMjEsNSwxMTQsMTUwLDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDIxMSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDQsMCwKLSAgICAxMDAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMiwwLDEzMSwxLDAsOTAsCi0gICAgNywwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDEsCi0gICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsNiwwLDEwMCw5LDAsMTAwLDEwLDAsCi0gICAgMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsNCwwLDEwMCwxMSwwLDEwMCwKLSAgICAxMiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw2LDAsMTAwLDEzLAotICAgIDAsMTAwLDE0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsMTAxLDYsMCwKLSAgICAxMDEsMTIsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLAotICAgIDEsMCw5MCwxMywwLDEwMSw2LDAsMTAxLDEyLDAsMTAwLDE3LDAsMTAwLDE4LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTQsMCwxMDEsNiwwLAotICAgIDEwMSwxMiwwLDEwMCwxOSwwLDEwMCwyMCwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDkwLDE1LDAsMTAwLDQsMCw4Myw0MSwyMSwyMTgsMTQsNzAsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDE0Miw3NywxMDEsMTE2LAotICAgIDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCi0gICAgMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDk5LDEwOCwKLSAgICA5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDMyLDEwOSwxMDEsCi0gICAgMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwxMTEsMTA1LDEwMCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsCi0gICAgMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICAxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCi0gICAgMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwKLSAgICAxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCi0gICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsCi0gICAgMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyMiw2MCwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMDIsMTE0LDExMSwxMjIsCi0gICAgMTAxLDExMCw0MSw2Miw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMSwwLDAsMCwKLSAgICA0MSwxLDIxOCwxLDEwOSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwxMTQsOTIsMCwwLDAsMTIsMywwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCi0gICAgNzgsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNDIsMCwwLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMTQsMzQsMCwxMTYsMiwwLDEyNCwxLDAsCi0gICAgMTI0LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTMxLDIsMSw4MywxMDAsMCwwLAotICAgIDgzLDEwMCwwLDAsODMsNDEsMyw3OCwxMTQsMTA3LDAsMCwwLDkwLDYsMTAyLAotICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsMywxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwKLSAgICAwLDExNCw4NSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsCi0gICAgMCwwLDExNCwxNTIsMCwwLDAsMTE0LDE1MywwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU0LDAsMCwwLAotICAgIDIxLDMsMCwwLDExNSw2LDAsMCwwLDAsMiwxNSwxLDE5LDIsMTIyLAotICAgIDI0LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwKLSAgICAwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMywKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCwKLSAgICAxOSwwLDEyNCwwLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiw5Myw3MCwxMDUsCi0gICAgMTEwLDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLDIsNzgsNzgsCisgICAgNDEsMSw3OCw0MSwxNywxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsCisgICAgMiwwLDAsMCwxMTQsMywwLDAsMCwyMTgsMTIsMTE1LDExNiw5NywxMTYsMTA1LAorICAgIDk5LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw4NiwwLDAsMCwyMTgsMTEsOTksMTA4LAorICAgIDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDE0NiwwLDAsMCwxMTQsMTQ3LAorICAgIDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsNzQsMCwKKyAgICAwLDAsMTE0LDE0OCwwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCwxMDUsMCwwLAorICAgIDAsMTE0LDg0LDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxNDIsMCwwLDAsMTY4LDIsMCwwLDExNSwzMCwwLDAsMCw4LDcsNCwKKyAgICAyLDEyLDksMiwxLDEyLDgsMiwxLDEyLDExLDEyLDgsMTIsNSwyLAorICAgIDEsMTQsNSwyLDEsMTQsNSwyLDEsMTQsNSwxMTQsMTQyLDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDE0MCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLAorICAgIDkwLDIsMTAwLDEsOTAsMywxMDEsNCwxMDAsMiwxMDAsMywxMzIsMCwxMzEsMSwKKyAgICA5MCw1LDEwMSw2LDEwMCwyMSwxMDAsNSwxMDAsNiwxMzIsMSwxMzEsMSw5MCw3LAorICAgIDEwMSw2LDEwMCwyMiwxMDAsNywxMDAsOCwxMzIsMSwxMzEsMSw5MCw4LDEwMSw2LAorICAgIDEwMCw5LDEwMCwxMCwxMzIsMCwxMzEsMSw5MCw5LDEwMSw0LDEwMCwxMSwxMDAsMTIsCisgICAgMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDYsMTAwLDEzLDEwMCwxNCwxMzIsMCwxMzEsMSwKKyAgICA5MCwxMSwxMDEsNiwxMDEsMTIsMTAwLDE1LDEwMCwxNiwxMzIsMCwxMzEsMSwxMzEsMSwKKyAgICA5MCwxMywxMDEsNiwxMDEsMTIsMTAwLDE3LDEwMCwxOCwxMzIsMCwxMzEsMSwxMzEsMSwKKyAgICA5MCwxNCwxMDEsNiwxMDEsMTIsMTAwLDE5LDEwMCwyMCwxMzIsMCwxMzEsMSwxMzEsMSwKKyAgICA5MCwxNSwxMDAsNCw4MywwLDQxLDIzLDIxOCwxNCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLAorICAgIDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsCisgICAgMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiwKKyAgICA5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsCisgICAgMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsCisgICAgMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDgzLDAsNDEsMiwKKyAgICAxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LAorICAgIDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDEyMiwyMiw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCisgICAgMzMsMTE0LDEyNSwzMiw0MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0MSw2Miw0MSwyLDExNCwKKyAgICAzOCwwLDAsMCwxMTQsMSwwLDAsMCw0MSwxLDIxOCwxLDEwOSwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODYsMCwKKyAgICAwLDAsMjUwLDIsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsNzAsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDc4LDk5LDQsMCwwLDAsMCwKKyAgICAwLDAsMCw0LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDM0LDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLDExNCwyNiwxMTYsMiwKKyAgICAxMjQsMSwxMjQsMCwxMDAsMSwxMDAsMiwxNDEsMyw4MywwLDExMCw0LDEwMCwwLAorICAgIDgzLDAsMTAwLDAsODMsMCw0MSwzLDc4LDkwLDYsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsNDEsMSwxMTQsMTAzLDAsMCwwLDQxLDMsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICA3NSwwLDAsMCwxMTQsNzgsMCwwLDAsNDEsNCwxMTQsMTQzLDAsMCwwLAorICAgIDExNCw3MSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxNDUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NiwKKyAgICAwLDAsMCwzLDMsMCwwLDExNSw2LDAsMCwwLDAsMiwxMCwxLAorICAgIDE2LDIsMTIyLDI0LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxOCwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSwxMTQsMTQsCisgICAgMTI0LDAsODMsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDkzLDcwLDEwNSwxMTAsMTAwLAorICAgIDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLAorICAgIDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSwKKyAgICA5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCw0NiwwLDAsCisgICAgMCwxMTQsNzUsMCwwLDAsNDEsMywxMTQsMTQzLDAsMCwwLDExNCw3MSwwLAorICAgIDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwxNDcsMCwwLDAsMTAsMywwLDAsMTE1LAorICAgIDIsMCwwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLAorICAgIDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsMzIsCisgICAgMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDc4LDExNCwKKyAgICAxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDgyLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxMzQsMCwwLDAsMTksMywwLDAsMTE1LDAsMCwwLDAsMTIyLDI4LDcwLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDk5LDExNCwKKyAgICAxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw2NCwwLDAsMCwxMjQsMCwxMDYsMCwxMDYsMSwxMjUsMSwxMTYsMiwxMDYsCisgICAgMywxMjQsMSwxMzEsMSwxMTUsMzYsMTE2LDQsMTAwLDEsMTA2LDUsMTI0LDEsMTMxLAorICAgIDEsMTI0LDEsMTAwLDIsMTQxLDIsMTMwLDEsMTE2LDYsMTE2LDIsMTA2LDcsMTI0LAorICAgIDEsMTMxLDIsMTI1LDIsMTE2LDgsMTI0LDIsMTI0LDAsMTA2LDksMTMxLDIsMSwKKyAgICAwLDEwMCwwLDgzLDAsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsMTA1LAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDExNCwxNSwwLDAsMCw0MSwxMCwxMTQsODksCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsNzUsMCwKKyAgICAwLDAsMTE0LDcwLDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsNTgsMCwwLAorICAgIDAsMjE4LDE3LDEwMywxMDEsMTE2LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMSw5OCwKKyAgICAxMDYsMTAxLDk5LDExNiwyMTgsNCwxMDEsMTIwLDEwMSw5OSwxMTQsNywwLDAsMCw0MSwKKyAgICAzLDExNCw4MywwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDQsOTksMTExLDEwMCwKKyAgICAxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDEzNSwwLDAsMCwyMywzLDAsMCwxMTUsMTIsMCwwLDAsMCwyLAorICAgIDgsMSwxMCwxLDEwLDEsOCwxLDEyLDEsMTIyLDI2LDcwLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLAorICAgIDExNiwwLDEyNCwwLDEyNCwxLDEzMSwyLDgzLDAsNDEsMSwxMjIsOTUsNzYsMTExLAorICAgIDk3LDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCiAgICAgMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAogICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKLSAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDgyLDAsMCwwLDQxLDMsMTE0LDE1MSwwLDAsMCwxMTQsCi0gICAgNzgsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU1LDAsMCwwLDI4LDMsMCwKLSAgICAwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKLSAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsCi0gICAgMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0NiwKLSAgICA3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw4OCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsMTM4LDAsMCwwLDM3LDMsMCwwLDExNSwwLDAsMCwwLDEyMiwKLSAgICAyOCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKLSAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsCi0gICAgMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDExNSwKLSAgICA1NCwwLDExNiw0LDAsMTAwLDEsMCwxMDYsNSwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExNiw2LDAsCi0gICAgMTE2LDIsMCwxMDYsNywwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLDExNiwKLSAgICA4LDAsMTI0LDIsMCwxMjQsMCwwLDEwNiw5LDAsMTMxLDIsMCwxLDEwMCwKLSAgICAwLDAsODMsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsMTAsMTE0LDk1LDAsMCwwLDExNCwKLSAgICAxNSwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCw3NywKLSAgICAwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LDAsMCwwLDIxOCwxNywxMDMsCi0gICAgMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgMjE4LDQsMTAxLDEyMCwxMDEsOTksMTE0LDcsMCwwLDAsNDEsMywxMTQsODksMCwKLSAgICAwLDAsMTE0LDE1LDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMzksMCwwLAotICAgIDAsNDEsMywwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMiwxLDE1LDEsCi0gICAgMTgsMSw5LDEsMTgsMSwxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwxLDEyMiw5NSw3NiwxMTEsOTcsCi0gICAgMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKLSAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LDkwLAotICAgIDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NiwKLSAgICAwLDAsMCw1MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LAotICAgIDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgODMsNDEsMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNDYsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LDE2MiwwLDAsMCw0MSwyLAotICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTYsMCwwLDAsNTksMywKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyMyw3MCwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCi0gICAgMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsNTQsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwKLSAgICA5NywxMTUsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU3LDAsMCwwLAotICAgIDY1LDMsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCi0gICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQxLDEsMTIyLAotICAgIDQ2LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw0MSwKLSAgICAyLDExNCw1NywwLDAsMCw5MCwxNywxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDExNCwxNTEsMCwwLDAsCi0gICAgMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDExNCwxMDksMCwwLDAsNzEsMywwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwKLSAgICAxNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsCi0gICAgMTU5LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMTM4LAotICAgIDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsODQsMCwKLSAgICAwLDAsMTE0LDE1NiwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxMDksMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDExNCwxNjAsMCwwLDAsMywzLDAsMCwxMTUsMzAsCi0gICAgMCwwLDAsMTIsNyw2LDIsMTgsOSwzLDEsMjEsNiwzLDEsMTgsCi0gICAgOCwxOCw0LDE4LDksMTgsOSwzLDEsMjEsNSwzLDEsMjEsNSwzLAotICAgIDEsMTE0LDE2MCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw0NiwwLDAsMCwKLSAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAotICAgIDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsCi0gICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsODMsNDEsNywKLSAgICAyMTgsMTgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsCi0gICAgMTE2LDEwMSwxMjAsMTE2LDEyMiwzNiw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwzMiwxMDksOTcsCi0gICAgMTEwLDk3LDEwMywxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDk5LDEsMCwwLDAsMCwKLSAgICAwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLAotICAgIDIsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsNDEsMSwxMTQsMTksMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMTE0LDIzLDAsMCwwLDg0LDMsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwKLSAgICAxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksCi0gICAgNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwKLSAgICAwLDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDYwLDgyLDEwMSwxMDgsMTAxLDk3LAorICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLAorICAgIDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsCisgICAgOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LAorICAgIDg0LDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDEzOCwwLDAsMCwzMiwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLAorICAgIDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLDgzLDAsNDEsCisgICAgMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsCisgICAgMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsCisgICAgNDEsMiwxMTQsNDYsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSwyLDExNCwxNDMsCisgICAgMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwxNDgsMCwwLDAsNDEsMywwLDAsCisgICAgMTE1LDIsMCwwLDAsMCw0LDEyMiwyMyw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwKKyAgICAxMjIsNTQsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsCisgICAgMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAorICAgIDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTQ5LDAsMCwwLDQ3LDMsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLDAsMCwxMTYsMCwKKyAgICAxMDYsMSwxMjQsMSwxMzEsMSw4MywwLDQxLDEsMTIyLDQ2LDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw0MSwyLDExNCw0NiwwLDAsCisgICAgMCw5MCwxNywxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxMDUsMCwwLDAsNTMsMywwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwKKyAgICAyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICAxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDc4LDc4LDQxLDEsCisgICAgNzgsNDEsMTYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwKKyAgICAwLDAsMTE0LDMsMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODYsMCwwLAorICAgIDAsMTE0LDE1MSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxNDcsMCwwLDAsCisgICAgMTE0LDEzNCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LAorICAgIDc3LDAsMCwwLDExNCwxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsMTA1LAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUyLDAsMCwwLDI0MSwyLDAsMCwKKyAgICAxMTUsMzAsMCwwLDAsOCw3LDQsMiwxMiw5LDIsMSwxMiw2LDIsCisgICAgMSwxMiw4LDEyLDQsMTIsOSwxMiw5LDIsMSwxNCw1LDIsMSwxNCwKKyAgICA1LDIsMSwxMTQsMTUyLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDMyLDAsCisgICAgMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwyLAorICAgIDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwKKyAgICA4MywwLDQxLDcsMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LAorICAgIDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwKKyAgICAxMTYsMzIsMTA5LDk3LDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwxLDAsCisgICAgMTAwLDEsODMsMCw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LAorICAgIDc4LDQxLDIsMTE0LDQ2LDAsMCwwLDExNCwxMzcsMCwwLDAsNDEsMSwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDQ4LDAsMCwwLDY2LDMsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LAorICAgIDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsCisgICAgOTUsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTA2LDEsMTMxLAorICAgIDAsMSwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNjAsODIsMTAxLDEwOCwxMDEsOTcsCiAgICAgMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLAogICAgIDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwxMTEsMTAyLAogICAgIDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLDk5LDEwMSwKLSAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MSwyLDExNCw1NywwLDAsMCwxMTQsCi0gICAgNTgsMCwwLDAsNDEsNCwxMTQsMTksMCwwLDAsOTAsOCwxMDEsMTIwLDk5LAorICAgIDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDc4LDQxLDIsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICA0NywwLDAsMCw0MSw0LDExNCwyNiwwLDAsMCw5MCw4LDEwMSwxMjAsOTksCiAgICAgOTUsMTE2LDEyMSwxMTIsMTAxLDkwLDksMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LDExNywxMDEsCiAgICAgOTAsMTMsMTAxLDEyMCw5OSw5NSwxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLAotICAgIDAsMCwwLDg4LDMsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjcsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTAsCisgICAgMCwwLDAsNzAsMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyNywKICAgICA5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLAogICAgIDEyMCwxMTYsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsCiAgICAgMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwKLSAgICAwLDAsMTE0LDIzLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMCwxMTQsNDgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMCwwLDAsCiAgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKLSAgICAxMTQsMTY1LDAsMCwwLDgwLDMsMCwwLDExNSw2LDAsMCwwLDEyLDIsCi0gICAgNiwyLDEyLDQsMTE0LDE2NSwwLDAsMCw5OSwzLDAsMCwwLDAsMCwKLSAgICAwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLDEsMCwxMjQsMiwwLDEwMCwKLSAgICAyLDAsMjQsMTMxLDIsMCwxMjUsMywwLDExNiwxLDAsMTI0LDMsMCwxMzEsCi0gICAgMSwwLDEyNCwyLDAsMTA3LDAsMCwxMTQsNTIsMCwxMTYsMiwwLDEwMCwzLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwzLDAsMTAwLDQsMCwyNSwxMjUsNCwKLSAgICAwLDEyNCwwLDAsMTE0LDg0LDAsMTAwLDUsMCwxMDYsMywwLDEyNCw0LDAsCi0gICAgMTI0LDAsMCwxMzEsMiwwLDgzLDEyNCw0LDAsODMsNDEsNiwxMjIsNTAsODIsCi0gICAgMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMTEwLDMyLDk3LDk4LDExNSwxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMSwxMTAsMTAxLAotICAgIDQ2LDExNCwxMjEsMCwwLDAsMTE0LDQ1LDAsMCwwLDEyMiw1MCw5NywxMTYsMTE2LAotICAgIDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OCwxMDEsMTIxLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsCi0gICAgMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNCwKLSAgICAzMywwLDAsMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsNDEsNCwyMTgsNiwxMTQsCi0gICAgMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMywxMDgsMTAxLDExMCwyMTgsMTAsODYsOTcsMTA4LDExNywKLSAgICAxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCw0MSw1LDExNCwxNSwwLAotICAgIDAsMCwyMTgsNywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjE4LDUsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCw5MCw0LDk4LDEwNSwxMTYsMTE1LDkwLDQsOTgsOTcsMTE1LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsCi0gICAgMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCw5NywxMDksMTAxLDkzLDMsMCwwLAotICAgIDExNSwxMCwwLDAsMCwwLDIsMjIsMSwxOCwxLDEyLDEsMTAsMSwxMTQsCi0gICAgMTcxLDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLAotICAgIDEyNCwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwwLDAsODMsCi0gICAgMTE2LDEsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCw4Myw0MSwxLDc4LAotICAgIDQxLDIsMTE0LDE1NSwwLDAsMCwxMTQsODUsMCwwLDAsNDEsNCwyMTgsNiwKLSAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsMTUsMCwwLDAsMTE0LDE1MiwwLDAsMCwKLSAgICAxMTQsOTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsMTAyLDMsMCwwLDExNSw4LDAsMCwwLAotICAgIDAsMywxOCwxLDEyLDEsNCwxLDExNCwxNzMsMCwwLDAsOTksMywwLAotICAgIDAsMCwwLDAsMCwwLDksMCwwLDAsMjcsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDQyLDEsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLAotICAgIDEwNyw5LDAsMTE0LDQxLDAsMTE2LDAsMCwxMDYsMSwwLDEyLDExNCw0MSwwLAotICAgIDExNiwyLDAsMTA2LDMsMCwxMDAsMiwwLDExNiw0LDAsMTMxLDIsMCwxLAotICAgIDEyNCwwLDAsMTE2LDAsMCwxMDYsNSwwLDEwNyw2LDAsMTI1LDMsMCwxMjAsCi0gICAgMjM1LDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDIyMCwwLDEyNSw0LDAsMTE2LAotICAgIDYsMCwxMzEsMCwwLDE0Myw5MCwwLDEsMTIxLDEzLDAsMTI0LDQsMCwxMDYsCi0gICAgNywwLDEyNSw1LDAsODcsMTEwLDUxLDAsNCwxMTYsOCwwLDEwNywxMCwwLAotICAgIDExNCwxNDgsMCwxLDEsMSwxMTYsOSwwLDEyNCw0LDAsMTI0LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwzLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwxLDAsMTA3LDgsCi0gICAgMCwxMTQsMTQ0LDAsMTE5LDY2LDAsODksMTEwLDE5LDAsODgsMTI0LDUsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSw2LDAsODcsMTAwLAotICAgIDEsMCw4MSw4Miw4OCwxMjQsNiwwLDEwMCwxLDAsMTA3LDksMCwxMTQsNjYsCi0gICAgMCwxMjQsMywwLDEyLDExNCwyNiwxLDEyNCwwLDAsMTE2LDAsMCwxMDYsNSwKLSAgICAwLDEwNyw2LDAsMTE0LDI2LDEsMTE2LDAsMCwxMDYsNSwwLDEyNCwwLDAsCi0gICAgMjUsMTI1LDcsMCwxMjEsMTMsMCwxMjQsNywwLDEwNiwxMCwwLDEyNSw4LDAsCi0gICAgODcsMTEwLDIyLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyLDEsMSwxLAotICAgIDEsMTI0LDYsMCw4Myw4OSwxMTMsMzAsMSw4OCwxMjQsOCwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsMTksMSwxMjQsNiwwLDgzLDEyNCw4LDAsODMsMTEzLDY2LAotICAgIDAsMTI0LDYsMCw4MywxMTMsNjYsMCw4NywxMDAsMSwwLDgzLDEwMCwxLDAsCi0gICAgODMsNDEsMywxMjIsMjMsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsNzgsMTIyLDIyLDExNSwKLSAgICAxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSwxMSwxMTQsMTQsMCwwLDAsMjE4LDksMTA5LDEwMSwKLSAgICAxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE0MSwwLDAsMCwxMTQsMTQyLDAsMCwKLSAgICAwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsCi0gICAgMTE0LDIxLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsCi0gICAgOTYsMCwwLDAsMTE0LDE3MywwLDAsMCwxMTQsOTUsMCwwLDAsNDEsOSwKLSAgICAxMTQsMTUsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDkwLAotICAgIDksMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNCwxNzIsMCwwLDAsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw5NSwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAotICAgIDAsMCwyMTgsMTAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDExMSwzLAotICAgIDAsMCwxMTUsNDgsMCwwLDAsMCwyLDI1LDEsMTYsNCwxNSwxLDE2LAotICAgIDEsMTAsMSwzLDEsMTMsMSwxMywxLDE4LDEsMTIsMSw4LDIsMjUsCi0gICAgMSwxMiwyLDIyLDEsMTMsMSwzLDEsMTMsMSwxMyw0LDksMiwxMiwKLSAgICAxLDQsMiw3LDIsOCwyLDExNCwxNzYsMCwwLDAsOTksMywwLDAsCi0gICAgMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTg1LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEzMSwKLSAgICAyLDAsMTE1LDQyLDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTE2LDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsCi0gICAgMTI0LDIsMCwxMDAsMiwwLDEwNywwLDAsMTE0LDY2LDAsMTE2LDUsMCwxMDAsCi0gICAgMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDQsCi0gICAgMCwxMTQsMTUwLDAsMTE2LDAsMCwxMjQsMSwwLDExNiwxLDAsMTMxLDIsMCwKLSAgICAxMTUsMTA4LDAsMTE2LDIsMCwxMDAsNCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsCi0gICAgNDIsMCwxMjQsMSwwLDExNiw2LDAsMTA2LDcsMCwxMDcsNywwLDExNCwxNTAsCi0gICAgMCwxMDAsNSwwLDEyNSwzLDAsMTE2LDgsMCwxMjQsMywwLDEwNiwzLDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEyLAotICAgIDExNCwxODEsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsMTgxLDAsMTE2LAotICAgIDUsMCwxMDAsNiwwLDEzMSwxLDAsMTMwLDEsMCwxMDAsNywwLDgzLDQxLAotICAgIDgsMTIyLDI4LDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywxMTAsMTAxLDM0LDQ2LDEyMiwKLSAgICAzMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMDksMTE3LDExNSwKLSAgICAxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwxMTEsMTE2LDMyLDEyMywxMjUsCi0gICAgMTE0LDMzLDAsMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTcsMTE1LAotICAgIDExNiwzMiw5OCwxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLDk1LDk1LDExMiw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCi0gICAgMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiw2MSw4MCw5NywxMTQsMTAxLAotICAgIDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLAotICAgIDExMSwxMTYsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywxMTAsMTEwLDExMSwKLSAgICAxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsCi0gICAgMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsNjksMTA5LDExMiwxMTYsMTIxLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDc4LDQxLDksMjE4LAotICAgIDEwLDEwNSwxMTUsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMjE4LDMsMTE1LDExNiwxMTQsCi0gICAgMjE4LDksODQsMTIxLDExMiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCwKLSAgICAxMTQsMTMsMCwwLDAsMTE0LDE2OCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAotICAgIDIxLDAsMCwwLDIxOCwxMSw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsMTExLAotICAgIDExNCw0MSw0LDExNCwxNSwwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwKLSAgICAwLDAsMTE0LDE0NywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSwKLSAgICA5OSwxMDQsMTAxLDk5LDEwNywxNTEsMywwLDAsMTE1LDI0LDAsMCwwLDAsMiwKLSAgICAxNSwxLDI3LDEsMTIsMSwxMiwxLDEyLDEsMTUsMSwxNSwxLDE1LDEsCi0gICAgNiwyLDIxLDEsMTksMSwxMTQsMTgxLDAsMCwwLDEyMiwxNiw3OCwxMTEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEyMiw0LDEyMywKLSAgICAzMywxMTQsMTI1LDk5LDIsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLAotICAgIDEyLDAsMCwwLDY3LDAsMCwwLDExNSw0MCwxLDAsMCwxMDAsMCwwLAotICAgIDEyNSwyLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsCi0gICAgMiwwLDI1LDEyNSwzLDAsMTI0LDMsMCwxMTQsMTc1LDAsMTI0LDMsMCwxMTYsCi0gICAgMSwwLDEwNiwyLDAsMTA3LDcsMCwxMTQsNTksMCwxMTYsMywwLDEyNCwxLAotICAgIDAsMTI0LDMsMCwxMzEsMiwwLDEsMTI0LDAsMCwxMTYsMSwwLDEwNiwyLAotICAgIDAsMTA3LDYsMCwxMTQsODUsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDAsMCwKLSAgICAyNSw4MywxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwyNSwxMjUsNCwwLDEyMSwKLSAgICAxMywwLDEyNCw0LDAsMTA2LDQsMCwxMjUsMiwwLDg3LDExMCw2MSwwLDQsCi0gICAgMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTc0LDAsMSwxLDEsMTE2LDYsMCwxMDAsCi0gICAgMywwLDIzLDEwNiw3LDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLDAsMTI1LAotICAgIDUsMCwxMTYsOCwwLDEyNCw1LDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLAotICAgIDEsMTAwLDAsMCwxMzAsMiwwLDg5LDExMCwxLDAsODgsMTE2LDksMCwxMjQsCi0gICAgMCwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwyMzIsMCwxMTYsOCwwLDExNiw2LDAsMTA2LDcsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLAotICAgIDEsMCwxMTAsMTIsMCwxMTYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsCi0gICAgMCwxMjQsMywwLDExNCwzNiwxLDExNiwxLDAsMTA2LDIsMCwxMjQsMywwLAotICAgIDI1LDEyNSw0LDAsMTE2LDExLDAsMTI0LDQsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTAwLDEsMCwxMzEsMSwwLDEwMCw1LDAsMjUsMTI0LDcsMCwxMzEsMywwLAotICAgIDEsMTI0LDcsMCw4Myw0MSw2LDc4LDExNCwxMjEsMCwwLDAsMTE0LDMzLDAsCi0gICAgMCwwLDEyMiwyMyw1OSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDE0MCwwLDAsMCw0MSwxMiwxMTQsMTIyLDAsMCwwLDExNCwxNCwwLDAsCi0gICAgMCwxMTQsMjEsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCwxMzEsMCwwLDAsCi0gICAgMTE0LDk2LDAsMCwwLDIxOCw4LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNCwKLSAgICA1MCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTQ5LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDIxOCwKLSAgICA3LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDExNCwxNTIsMCwwLDAsMTE0LDEyMywwLAotICAgIDAsMCw5MCwxMywxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDExNCwxNDcsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwKKyAgICAxMTQsMTU3LDAsMCwwLDYyLDMsMCwwLDExNSw2LDAsMCwwLDgsMiwKKyAgICA0LDIsOCw0LDExNCwxNTcsMCwwLDAsOTksMywwLDAsMCwwLDAsCisgICAgMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNjQsCisgICAgMCwwLDAsMTI0LDEsMTA2LDAsMTAwLDEsMTI0LDIsMTAwLDIsMjQsMCwxMzEsCisgICAgMiwxMjUsMywxMTYsMSwxMjQsMywxMzEsMSwxMjQsMiwxMDcsMCwxMTQsMzYsMTE2LAorICAgIDIsMTAwLDMsMTMxLDEsMTMwLDEsMTI0LDMsMTAwLDQsMjUsMCwxMjUsNCwxMjQsCisgICAgMCwxMTQsNjAsMTAwLDUsMTA2LDMsMTI0LDQsMTI0LDAsMTMxLDIsODMsMCwxMjQsCisgICAgNCw4MywwLDQxLDYsMTIyLDUwLDgyLDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDk3LAorICAgIDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiw5Nyw5OCwxMTUsMTExLAorICAgIDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSw0NiwxMTQsMTE3LDAsMCwwLDExNCwzMywKKyAgICAwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsCisgICAgMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTgsCisgICAgMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTksMCwwLDAsMTIyLDUsMTIzLDEyNSwKKyAgICA0NiwxMjMsMTI1LDQxLDQsMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDMsMTA4LAorICAgIDEwMSwxMTAsMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsCisgICAgMCwwLDAsNDEsNSwxMTQsMTUsMCwwLDAsMjE4LDcsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDIxOCw1LDEwOCwxMDEsMTE4LDEwMSwxMDgsOTAsNCw5OCwxMDUsMTE2LDExNSwKKyAgICA5MCw0LDk4LDk3LDExNSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSw3NSwzLDAsMCwxMTUsMTAsMCwwLDAsMCwyLDE2LAorICAgIDEsMTIsMSw4LDEsOCwxLDExNCwxNjMsMCwwLDAsOTksMywwLDAsCisgICAgMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMzQsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsMTMxLDIsCisgICAgMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDI0LDEwMCwwLDgzLDAsMTE2LDEsCisgICAgMTI0LDEsMTI0LDMsMTMxLDIsODMsMCw0MSwxLDc4LDQxLDIsMTE0LDE0NywwLAorICAgIDAsMCwxMTQsNzgsMCwwLDAsNDEsNCwyMTgsNiwxMDIsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCwxMTQsMTUsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsOTMsMCwwLDAsCiAgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LAotICAgIDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxNzEsMywwLDAsMTE1LDQyLDAsMCwKLSAgICAwLDAsMSw2LDEsMTksMSw2LDEsMTUsMSwxMywyLDE1LDEsMTEsCi0gICAgMSwxMywxLDMsMSwxMywxLDEzLDEsMjIsMSwyNiwxLDE1LDEsMTIsCi0gICAgMSwzMCwyLDEyLDEsNiwyLDEzLDEsMjksMSwxMTQsMTg0LDAsMCwwLAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEwLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwzNywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxNDMsMTgsMCwxLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsODMsODcsMTAwLDEsMCw4MSw4Miw4OCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMTIyLDU0LDcwLDEwNSwxMTAsMTAwLDMyLDk3LDExMCwxMDAsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwKLSAgICAzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwyLDExNCw1NCwwLDAsCi0gICAgMCwxMTQsMTg0LDAsMCwwLDQxLDIsMTE0LDE1LDAsMCwwLDExNCwxODMsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMjE4LDE0LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsCi0gICAgMTAwLDE5OCwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsMTMsMSwxMTQsMTg1LAotICAgIDAsMCwwLDExNCwzMywwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLAotICAgIDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNjYsMCwKLSAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywKLSAgICAwLDEsMTI0LDIsMCwxMDAsMSwwLDEwNyw0LDAsMTE0LDQ2LDAsMTE2LDEsCi0gICAgMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSwwLDAsCi0gICAgMTE2LDIsMCwxMDYsMywwLDEzMSwwLDAsMSwxMjQsMCwwLDExNiw0LDAsCi0gICAgMTA2LDUsMCwxMDcsNywwLDExNCw4NCwwLDExNiw2LDAsMTI0LDAsMCwxMTYsCi0gICAgNywwLDEzMSwyLDAsODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMjUsCi0gICAgMTI1LDMsMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTUyLDAsMTE2LAotICAgIDIsMCwxMDYsOCwwLDEzMSwwLDAsMSwxMDAsMywwLDEwNiw5LDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMDAsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDExNiwxMSwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxLDEyNCwzLDAsODMsNDEsNSw5Nyw1MCwxLDAsMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwKLSAgICAxMDAsMzIsMTExLDExMCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgOTcsMTA4LDEwOCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMDksOTcsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksNDQsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDk3LDEwMCwxMDYsMTE3LDExNSwxMTYsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLAotICAgIDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwxMDEsOTcsMTE2LDEwMSwxMTUsMTE2LAotICAgIDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwxMTAsMTExLDEwOSwxMDUsMTEwLDk3LAotICAgIDExNiwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk3LAotICAgIDEwOCwxMDUsMTE2LDEyMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5NywKLSAgICAxMTAsMTAwLDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDQ2LDMyLDg0LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTAxLDExNSwzMiwxMTUsMTAxLDExNiwKLSAgICAxMTYsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LAotICAgIDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTQsMzMsMCwwLDAsNzgsMTIyLDQwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDExMSwxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwxMDEsMTAwLDU5LDMyLDc4LDExMSwKLSAgICAxMTAsMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDExNCwxNSwwLDAsMCw0MSwxMiwxMTQsMTgxLDAsMCwwLDExNCwxNzEsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsMTE0LDE0LDAsMCwKLSAgICAwLDExNCwyMSwwLDAsMCwxMTQsMTg1LDAsMCwwLDIxOCwxMSw5NSwxMDMsOTksCi0gICAgMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNCw1OCwwLDAsMCwxMTQsNTAsMCwKLSAgICAwLDAsMTE0LDc3LDAsMCwwLDExNCw2MywwLDAsMCw0MSw1LDExNCwxNSwKLSAgICAwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDg5LDAsCi0gICAgMCwwLDExNCw3NCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsMTg2LDAsMCwwLDIwNCwzLDAsMCwxMTUsCi0gICAgMjgsMCwwLDAsMCw5LDE2LDEsMTIsMSwxOCwxLDEwLDEsMTUsMSwKLSAgICAxMywxLDEzLDEsMTIsMSwxMCwxLDYsMSw5LDEsMTgsMSwxMCwxLAotICAgIDExNCwxODYsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwKLSAgICAwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDIzOSwwLDAsMCwxMTYsCi0gICAgMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwyMzUsMCwxMDAsMiwKLSAgICAwLDEyNCwxLDAsMTA3LDYsMCwxMTQsODMsMCwxMTYsMSwwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMiwwLDEzMSwKLSAgICAxLDAsMSwxMTYsMCwwLDEyNCwwLDAsMTAwLDMsMCwxMzEsMiwwLDExNCwKLSAgICA4MywwLDEyNCwxLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDEsCi0gICAgMCwxLDEyMCwxNDksMCwxMjQsMSwwLDY4LDkzLDE0MSwwLDEyNSwzLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMTUsOTAsMCwxMDAsNCwKLSAgICAwLDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDIsMCwKLSAgICAxMjUsNCwwLDEyMSwxNywwLDExNiw3LDAsMTI0LDIsMCwxMjQsNCwwLDEzMSwKLSAgICAyLDAsMSw4NywxMTMsOTAsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIzMCwKLSAgICAwLDEsMTI1LDUsMCwxLDEyMiw0NywwLDExNiw5LDAsMTI0LDUsMCwxMzEsCi0gICAgMSwwLDEwNiwxMCwwLDExNiwxMSwwLDEzMSwxLDAsMTE0LDIwOSwwLDEyNCw1LAotICAgIDAsMTA2LDEyLDAsMTI0LDQsMCwxMDcsMiwwLDExNCwyMDksMCwxMTksOTAsMCwKLSAgICAxMzAsMCwwLDg3LDg5LDEwMCw1LDAsMTAwLDUsMCwxMjUsNSwwLDEyNiw1LAotICAgIDAsODgsMTEzLDkwLDAsODgsMTEzLDkwLDAsODcsMTI0LDAsMCw4Myw0MSw2LAotICAgIDEyMiwyMzgsNzAsMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LDk3LAotICAgIDExNiwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LDExMSwKLSAgICAxMTcsMTA4LDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywxMTQsCi0gICAgOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsCi0gICAgOTcsOTgsMTA4LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw0NiwzMiw3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCi0gICAgOTcsMTE1LDExNSwxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsMzksMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTQsMTMxLDAsMCwwLDI1MCwxLDQyLDIxOCw3LDk1LDk1LDk3LDEwOCwxMDgsOTUsCi0gICAgOTUsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDc4LDQxLDEzLDExNCw0LDAsMCwwLAotICAgIDExNCwxMzAsMCwwLDAsMjE4LDYsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMjE4LDYsMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE4OCwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LAotICAgIDEsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTc4LAotICAgIDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsMTUsOTUsNjksODIsODIsOTUsNzcsCi0gICAgODMsNzEsOTUsODAsODIsNjksNzAsNzMsODgsMTE0LDE1LDAsMCwwLDQxLDYsCi0gICAgMTE0LDg5LDAsMCwwLDIxOCw4LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMTE0LAotICAgIDE4MywwLDAsMCwyMTgsMSwxMjAsOTAsOSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsOTAsMywxMDEsMTIwLDk5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDk1LAotICAgIDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMjI4LDMsMCwwLDExNSwzNCwwLDAsCi0gICAgMCwwLDEwLDE1LDEsMTIsMSwxMiwxLDEzLDEsMTUsMSwxNiwxLDEzLAotICAgIDEsMTUsMSwyMSwxLDMsMSwxNywxLDE4LDQsMjEsMSwxNSwxLDMsCi0gICAgMSwyNiwxLDExNCwxOTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNzIsMCwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMjUsMSwKLSAgICAwLDEyNCwxLDAsMTAwLDIsMCwxMDcsOCwwLDExNCw2OCwwLDEyNCwwLDAsCi0gICAgMTAwLDMsMCwyNSwxMjUsMSwwLDEwMCw0LDAsMTI0LDAsMCwxMDcsNywwLAotICAgIDExNCw2OCwwLDEyNCwxLDAsMTA2LDEsMCwxMDAsNSwwLDEzMSwxLDAsMTAwLAotICAgIDYsMCwyNSwxMjUsMSwwLDEyNCwxLDAsODMsNDEsNywxMjIsMTY3LDY3LDk3LAotICAgIDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLAotICAgIDk4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDMsMTE3LDk3LDExNCwKLSAgICA5NywxMTAsMTE2LDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDEsMTAyLAotICAgIDEwNSwxMTAsMTAxLDEwMCwzMiwxMTEsMTE0LDMyLDk5LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsCi0gICAgMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTYsMTExLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDMyLDExNiwxMDQsCi0gICAgOTcsMTE2LDMyLDEwNSwxMTYsMTE1LDMyLDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDMyLDExOCw5NywKLSAgICAxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTQsMTM0LDAsMCwwLDc4LDExNCwxLDAsMCwwLAotICAgIDExNCwxMzEsMCwwLDAsMTE0LDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsCi0gICAgMiwxMTQsNDIsMCwwLDAsMTE0LDEyMiwwLDAsMCw0MSwyLDIxOCw3LDEwMywKLSAgICAxMDgsMTExLDk4LDk3LDEwOCwxMTUsMTE0LDE2OSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsOTksOTcsMTA4LAotICAgIDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw0LDQsMCwKLSAgICAwLDExNSwxMiwwLDAsMCwwLDcsMTUsMSwxMiwxLDEwLDEsMTIsMSwKLSAgICAxOSwxLDExNCwxOTYsMCwwLDAsOTksNSwwLDAsMCwwLDAsMCwwLAotICAgIDksMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjI3LDAsMCwKLSAgICAwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEyNSw1LDAsMTEwLDU0LDAsMTI0LDEsMCwxMDAsCi0gICAgMiwwLDEwNyw5LDAsMTE0LDQ1LDAsMTI0LDEsMCwxMTAsMywwLDEwNSwwLAotICAgIDAsMTI1LDYsMCwxMTYsMSwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywwLAotICAgIDExNiwwLDAsMTI0LDAsMCwxMjQsNywwLDEyNCw0LDAsMTMxLDMsMCwxMjUsCi0gICAgNSwwLDEyNCwzLDAsMTE1LDIwNywwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwKLSAgICAwLDExNCwxMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMywwLAotICAgIDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDgzLDEyNCwwLDAsMTE1LDEzMiwKLSAgICAwLDEyNCw1LDAsODMsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTE2LDMsCi0gICAgMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEwMCwxLDAsCi0gICAgMjUsMTMxLDEsMCwyNCwxMjUsOCwwLDExNiw0LDAsMTA2LDUsMCwxMjQsNSwKLSAgICAwLDEwNiw2LDAsMTAwLDIsMCwxMTYsMywwLDEyNCw1LDAsMTA2LDYsMCwKLSAgICAxMzEsMSwwLDEyNCw4LDAsMjQsMTMzLDIsMCwyNSwyNSw4MywxMTAsMTYsMCwKLSAgICAxMTYsNywwLDEyNCw1LDAsMTI0LDMsMCwxMTYsMCwwLDEzMSwzLDAsODMsCi0gICAgMTAwLDIsMCw4Myw0MSw0LDk3LDIxNSwxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDg0LDEwNCwxMDEsMzIsMzksMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSwzOSwzMiw5NywKLSAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsCi0gICAgMTE2LDExMSwzMiwxMDUsMTEwLDEwMiwxMDEsMTE0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMTEsOTksOTksCi0gICAgMTE3LDExNCwxMTQsMTA1LDExMCwxMDMsMzIsMTAyLDExNCwxMTEsMTA5LDEwLDMyLDMyLDMyLDMyLAotICAgIDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAotICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDMyLDg0LDEwNCwxMDEsMzIsCi0gICAgMzksMTA4LDExMSw5OSw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAotICAgIDExNiwzMiwxMDUsMTE1LDMyLDEwNSwxMDMsMTEwLDExMSwxMTQsMTAxLDEwMCw0NiwzMiw4NCwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDM5LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMzksCi0gICAgMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDEwMSwxMTUsMzIsMTE5LDEwNCw5NywxMTYsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiwzMiw5NywxMTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKLSAgICAxMTYsMTAxLDExNSwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTAwLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsCi0gICAgMTA5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDYwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsNjIsOTYsOTYsNDEsNDYsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDEwLDMyLDMyLDMyLDMyLAotICAgIDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEwNSwxMTAsMzIsOTcsMzIsMTE0LDEwMSwxMDgsCi0gICAgOTcsMTE2LDEwNSwxMTgsMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDQ2LDQ2LAotICAgIDExMiwxMDcsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSwxMTEsMTAwLDk2LDk2LAotICAgIDMyLDExOSwxMTEsMTE3LDEwOCwxMDAsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTcsMzIsMzksMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCwzOSwzMiwxMTEsMTAyLDMyLDUwLDQxLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDExNCwzMywwLDAsMCw3OCwxMTQsMTIxLDAsMCwwLDQxLDgsMTE0LAotICAgIDE4NiwwLDAsMCwxMTQsMTk2LDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwKLSAgICAxMTYsMTA1LDExMSwxMTAsMTE0LDE2NywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLAotICAgIDAsMCwwLDExNCwxLDAsMCwwLDExNCwxOTQsMCwwLDAsNDEsOSwxMTQsCi0gICAgMTUsMCwwLDAsMTE0LDE5NSwwLDAsMCwyMTgsNiwxMDgsMTExLDk5LDk3LDEwOCwKLSAgICAxMTUsMTE0LDE5MiwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICA5MCw4LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsOTUsMTE0LDE2OSwwLDAsMCw5MCwKLSAgICA3LDk5LDExNywxMTYsOTUsMTExLDEwMiwxMDIsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDk1LDk1LDE5LDQsMCwwLDExNSwyNiwwLDAsMCwwLDExLDEyLDEsCi0gICAgMTUsMiwyNCwxLDEyLDEsMTgsMSw2LDMsMTIsMSwyMywxLDYsMSwKLSAgICA0LDQsMzUsMyw0MCwyLDExNCwxOTksMCwwLDAsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNTMsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw0MywwLAotICAgIDExNiwyLDAsMTAwLDEsMCwxMjQsMCwwLDIzLDEzMSwxLDAsMTMwLDEsMCwKLSAgICAxMTYsMywwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwyNSwxMTAsCi0gICAgMTExLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiw0MSw0LDExNCwxNTAsMCwwLDAsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE0OSwwLDAsMCw0MSwyLAotICAgIDExNCwxNSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LDk1LDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw1NCw0LDAsCi0gICAgMCwxMTUsOCwwLDAsMCwwLDEsMTUsMSwxMiwxLDE2LDEsMTE0LDIwMCwKLSAgICAwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsCi0gICAgMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDc0LDEsMCwwLDEyNCwxLDAsCi0gICAgOTcsMCwwLDEyNCwwLDAsOTcsMSwwLDExNiwyLDAsMTE2LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTIwLDEyMywwLDExNiwxLDAsMTA2LDMsMCwxMDYsNCwKLSAgICAwLDEzMSwwLDAsNjgsOTMsMTA2LDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsCi0gICAgMCwxMTYsNSwwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMiwwLDExNCw0MCwwLAotICAgIDEyNCwzLDAsMTE2LDEsMCwxMDYsNiwwLDEwNyw2LDAsMTE0LDkxLDAsMTE2LAotICAgIDcsMCwxMjUsNSwwLDExMCwyNywwLDExNiwwLDAsMTA2LDgsMCwxMjQsMywKLSAgICAwLDEzMSwxLDAsMTE0LDQwLDAsMTE2LDksMCwxMjUsNSwwLDExMCwzLDAsCi0gICAgMTEzLDQwLDAsMTE2LDEwLDAsMTI0LDQsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LAotICAgIDYsMCwxMTYsMTEsMCwxMjQsNiwwLDEyNCw0LDAsMTMxLDIsMCwxLDExMywKLSAgICA0MCwwLDg3LDExNiwxLDAsMTA2LDMsMCwxMTYsMTIsMCwyNSwxMjUsNywwLAotICAgIDEyMCw3MywwLDEwMCw1LDAsNjgsOTMsNjUsMCwxMjUsOCwwLDEyNCw4LDAsCi0gICAgMTE2LDEsMCwxMDYsMywwLDEwNyw3LDAsMTE0LDIwNiwwLDExNiwxMywwLDEyNCwKLSAgICA4LDAsMTMxLDEsMCwxMjUsOSwwLDExMCwxMywwLDExNiwxLDAsMTA2LDMsCi0gICAgMCwxMjQsOCwwLDI1LDEyNSw5LDAsMTE2LDE0LDAsMTI0LDcsMCwxMjQsOCwKLSAgICAwLDEyNCw5LDAsMTMxLDMsMCwxLDExMywxNzAsMCw4NywxMjEsMTYsMCwxMTYsCi0gICAgMTMsMCwxMDAsMiwwLDEzMSwxLDAsMTI1LDEwLDAsODcsMTEwLDI0LDAsNCwKLSAgICAxMTYsMTUsMCwxMDcsMTAsMCwxMTQsMjUsMSwxLDEsMSwxMDAsMywwLDEyNSwKLSAgICAxMCwwLDg5LDExMCwxLDAsODgsMTE2LDE0LDAsMTI0LDcsMCwxMDAsMiwwLAotICAgIDEyNCwxMCwwLDEzMSwzLDAsMSwxMTYsMTMsMCwxMDAsNCwwLDEzMSwxLDAsCi0gICAgMTI1LDExLDAsMTE2LDE0LDAsMTI0LDcsMCwxMDAsNCwwLDEyNCwxMSwwLDEzMSwKLSAgICAzLDAsMSwxMDAsMywwLDgzLDQxLDYsMTIyLDI1MCw4MywxMDEsMTE2LDExNywxMTIsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAotICAgIDEwMSwxMDksMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LDExNSwKLSAgICAzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsOTcsCi0gICAgMTEwLDEwMCwzMiw5NSwxMDUsMTA5LDExMiwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCi0gICAgMTAwLDMyLDExNiwxMTEsMzIsMTA4LDExMSw5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLAotICAgIDExNiwxMDQsMTExLDExNSwxMDEsMzIsMTE2LDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSw5OSwKLSAgICAxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxNDEsMCwwLDAsMTE0LDM0LDAsMCwwLDc4LAotICAgIDExNCw2MiwwLDAsMCw0MSwxLDExNCwxNDEsMCwwLDAsNDEsMTYsMTE0LDU3LAotICAgIDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDIxLDAsCi0gICAgMCwwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LDE3NywwLDAsMCwxMTQsNzYsCi0gICAgMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE2MCwwLAotICAgIDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsMTE0LDEsMCwwLAotICAgIDAsMTE0LDIwMCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsCi0gICAgNDEsMTIsMjE4LDEwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSwKLSAgICA5NSwxMDUsMTA5LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDE1LDAsMCwwLDExNCw4OSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDg4LDAsMCwwLDkwLDExLDExNSwxMDEsCi0gICAgMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjEsNCwwLAotICAgIDAsMTE1LDUwLDAsMCwwLDAsOSw2LDEsNiwzLDEyLDEsMjgsMSwKLSAgICAxNSwxLDE1LDEsOSwxLDE1LDEsOSwyLDMsMSwxNSwxLDE3LDMsCi0gICAgMTMsMSwxMywxLDE1LDEsMTUsMiwxMywxLDIwLDMsMywxLDE2LDEsCi0gICAgMTMsMiwxMSwxLDE2LDMsMTIsMSwxMTQsMjA0LDAsMCwwLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDg3LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsMSwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTYsNCwwLAotICAgIDEzMSwxLDAsMSwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTYsNSwwLAotICAgIDEzMSwxLDAsMSwxMDAsMSwwLDEwMCwyLDAsMTA4LDYsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsOTcsNywwLDEyNCwyLDAsMTA2LDgsMCwxMTYsMSwwLDEwNiwKLSAgICA5LDAsMTE2LDEwLDAsMjUsMTMxLDEsMCwxLDEwMCwyLDAsODMsNDEsMywKLSAgICAxMjIsNTAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiw0NiwxMTQsMzMsMCwwLDAsNzgsNDEsMTEsMTE0LDIwNCwwLDAsCi0gICAgMCwxMTQsMTQsMCwwLDAsMTE0LDE3NCwwLDAsMCwxMTQsMTEzLDAsMCwwLAotICAgIDExNCwxNTAsMCwwLDAsMTE0LDE2MCwwLDAsMCwyMTgsMjYsOTUsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDEsMTIwLAotICAgIDExNiwxMDEsMTE0LDExMCw5NywxMDgsMTE0LDExOSwwLDAsMCwyMTgsOCw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMTQsMjEsMCwwLDAsMTE0LDEsMCwwLDAsNDEsCi0gICAgMywxMTQsMjAyLDAsMCwwLDExNCwyMDMsMCwwLDAsMTE0LDIwNSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCi0gICAgMjA2LDAsMCwwLDEwOCw0LDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEzLAotICAgIDIsMTYsMSwxNiwzLDEyLDEsNiwxLDExNCwyMDYsMCwwLDAsNDEsNTEsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIsMCwwLDAsMTE0LAotICAgIDE2LDAsMCwwLDExNCwxNywwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDQxLAotICAgIDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDExNCw1MywwLDAsMCwxMTQsNTQsMCwwLDAsMTE0LDU2LDAsMCwKLSAgICAwLDExNCw2MywwLDAsMCwxMTQsNjUsMCwwLDAsMTE0LDc1LDAsMCwwLAotICAgIDExNCw4MSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDkwLDAsMCwwLDExNCwKLSAgICAxMDEsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCw4NSwKLSAgICAwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsOTAsOSw5NSw4MCw3OSwKLSAgICA4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsCi0gICAgMTE0LDE0NCwwLDAsMCwxMTQsOTcsMCwwLDAsMTE0LDg2LDAsMCwwLDExNCwKLSAgICAxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsODcsMCwwLDAsMTE0LDE1MCwKLSAgICAwLDAsMCwxMTQsMTYwLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE3MSwwLAotICAgIDAsMCwxMTQsMTczLDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE4MSwwLDAsCi0gICAgMCwxMTQsMTkxLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE4NCwwLDAsMCwKLSAgICAxMTQsMTg1LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsCi0gICAgMTk2LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMjA0LAotICAgIDAsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDk2LDAsMCwwLDYsCi0gICAgMTcsNiwyLDEyLDgsMTIsNCwxOSwyMCw2LDIsNiwzLDIyLDQsMTksCi0gICAgNjgsMTksMjEsMTksMTksMTIsMTksMTIsMTksMTIsMTEsMTgsOCwxMiwxMSwxMiwKLSAgICAxMiwxMiwxNiwxMiwzNiwxOSwyNywxOSwxMDEsMjQsMjYsOSwzLDE4LDQ1LDE4LAotICAgIDYwLDEyLDE4LDEyLDE3LDEyLDI1LDEyLDI5LDEyLDIzLDEyLDE2LDE5LDczLDE5LAotICAgIDc3LDE5LDEzLDEyLDksMTIsOSwxNSw0MCwxMiwxNyw2LDEsMTAsMiwxMiwKLSAgICAyNywxMiw2LDE4LDI0LDEyLDMyLDEyLDE1LDI0LDM1LDEyLDcsMTIsNDcsCisgICAgMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk1LDEwOCwxMDEsMTAzLDk3LAorICAgIDk5LDEyMSw4NCwzLDAsMCwxMTUsOCwwLDAsMCwwLDMsMTIsMSw4LAorICAgIDEsNCwxLDExNCwxNjUsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwKKyAgICAwLDEwLDAsMCwwLDI3LDAsMCwwLDY3LDAsMCwwLDExNSwyNDQsMCwKKyAgICAwLDAsMTE2LDAsMTA2LDEsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDgsMTE0LDIyLAorICAgIDExNiwyLDEwMCwyLDEzMSwxLDEzMCwxLDEyNCwzLDExNSwzOCwxMTYsMywxMDYsNCwKKyAgICAxMDAsMywxMTYsNSwxMzEsMiwxLDAsMTI0LDAsMTE2LDAsMTA2LDYsMTA3LDYsCisgICAgMTI1LDQsMTIwLDE5MCwxMjQsMyw2OCwwLDkzLDE3OCwxMjUsNSwxMTYsNywxMzEsMCwKKyAgICAxNDMsNzIsMSwwLDEyMSwxMCwxMjQsNSwxMDYsOCwxMjUsNiw4NywwLDExMCw0MiwKKyAgICA0LDAsMTE2LDksMTA3LDEwLDExNCwxMTgsMSwwLDEsMCwxLDAsMTE2LDEwLAorICAgIDEyNCw1LDEyNCwwLDEyNCwxLDEzMSwzLDEyNSw3LDEyNCw3LDEwMCwxLDEwNyw4LAorICAgIDExNCwxMTQsMTE5LDU0LDg5LDAsMTEwLDE0LDg4LDAsMTI0LDYsMTI0LDAsMTI0LDEsCisgICAgMTI0LDIsMTMxLDMsMTI1LDcsODcsMCwxMDAsMSw4MSwwLDgyLDAsODgsMCwKKyAgICAxMjQsNywxMDAsMSwxMDcsOSwxMTQsNTQsMTI0LDQsMTIsMCwxMTQsMjI4LDEyNCwwLAorICAgIDExNiwwLDEwNiw2LDEwNyw2LDExNCwyMjgsMTE2LDAsMTA2LDYsMTI0LDAsMjUsMCwKKyAgICAxMjUsOCwxMjEsMTAsMTI0LDgsMTA2LDExLDEyNSw5LDg3LDAsMTEwLDIwLDQsMCwKKyAgICAxMTYsOSwxMDcsMTAsMTE0LDIwNiwxLDAsMSwwLDEsMCwxMjQsNyw4MywwLAorICAgIDg4LDAsMTI0LDksMTAwLDEsMTA3LDgsMTE0LDIyMiwxMjQsNyw4MywwLDExMywyMzIsCisgICAgMTI0LDksODMsMCwxMTMsNTQsMTI0LDcsODMsMCwxMTMsNTQsODcsMCwxMDAsMSwKKyAgICA4MywwLDEwMCwxLDgzLDAsNDEsNCwxMjIsMjEsNzAsMTA1LDExMCwxMDAsMzIsOTcsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExNSwxMTIsMTAxLDk5LDQ2LDc4LAorICAgIDEyMiw1MywxMTUsMTIxLDExNSw0NiwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsCisgICAgMTA1LDExNSwzMiwxMDgsMTA1LDEwNywxMDEsMTA4LDEyMSwzMiwxMTUsMTA0LDExNywxMTYsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDMyLDEwMCwxMTEsMTE5LDExMCwxMjIsMjIsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsCisgICAgOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDQxLAorICAgIDEyLDExNCwxNCwwLDAsMCwyMTgsOSwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTQsNzAsMCwwLDAsMjE4LDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsCisgICAgMTE1LDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LAorICAgIDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE0LDc5LDAsMCwwLDExNCwxNTcsMCwwLDAsCisgICAgMTE0LDE0NiwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsCisgICAgODksMCwwLDAsNDEsMTAsMTE0LDE1LDAsMCwwLDExNCwxNDQsMCwwLDAsCisgICAgMTE0LDE0NSwwLDAsMCwxMTQsMTY2LDAsMCwwLDkwLDksMTA1LDExNSw5NSwxMTQsCisgICAgMTAxLDEwOCwxMTEsOTcsMTAwLDExNCwxNjQsMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsCisgICAgODIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsOTUsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDkzLDMsMCwwLDExNSw1NCwwLAorICAgIDAsMCwwLDIsNiwxLDgsMiw4LDMsNCwxLDEyLDUsMTAsMSwKKyAgICAxMCwxLDgsMSwyLDEsMTAsMSwxNCwxLDEyLDEsOCwxLDgsMiwKKyAgICAyMiwxLDgsMiwxNiwxLDEwLDEsMiwxLDEwLDEsMTQsNCw2LDIsCisgICAgOCwxLDYsMiw2LDIsOCwyLDExNCwxNzAsMCwwLDAsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTQwLDAsMCwwLDExNiwwLDEyNCwwLDExNiwxLDEzMSwyLDExNSwKKyAgICAyOCwxMTYsMiwxMDAsMSwxMDYsMywxMTYsNCwxMjQsMCwxMzEsMSwxMzEsMSwxMzEsCisgICAgMSwxMzAsMSwxMjQsMiwxMDAsMiwxMDcsMCwxMTQsNDQsMTE2LDUsMTAwLDMsMTMxLAorICAgIDEsMTMwLDEsMTI0LDIsMTAwLDIsMTA3LDQsMTE0LDExNCwxMTYsMCwxMjQsMSwxMTYsCisgICAgMSwxMzEsMiwxMTUsNzIsMTE2LDIsMTAwLDQsMTMxLDEsMTMwLDEsMTEwLDQyLDEyNCwKKyAgICAxLDExNSw4NiwxMTYsNiwxMDAsNSwxMzEsMSwxMzAsMSwxMTAsMjgsMTI0LDEsMTE2LAorICAgIDcsMTA2LDgsMTA3LDcsMTE0LDExNCwxMDAsNiwxMjUsMywxMTYsOSwxMjQsMywxMDYsCisgICAgMywxMjQsMSwxMzEsMSwxMzEsMSwxMzAsMSwxMjQsMCwxMiwwLDExNCwxMzYsMTI0LAorICAgIDIsMTAwLDIsMTA3LDIsMTE0LDEzNiwxMTYsNSwxMDAsNywxMzEsMSwxMzAsMSwxMDAsCisgICAgOCw4MywwLDQxLDksMTIyLDI4LDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsMTE0LAorICAgIDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywxMTAsCisgICAgMTAxLDM0LDQ2LDEyMiwzMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDEyMywxMjUsMTE0LDE5LDAsMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsMTA4LAorICAgIDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLDk1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwxMTUsCisgICAgMTAxLDExNiwzMiwxMTYsMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiw1NCwKKyAgICA5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsCisgICAgMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEwLAorICAgIDExMSwzMiwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDEyMiw2MSw4MCw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTEyLDEwMSwKKyAgICAxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsNjksMTA5LDExMiwxMTYsMTIxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDc4LDQxLDEwLDIxOCwxMCwxMDUsMTE1LDEwNSwKKyAgICAxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw5LDg0LDEyMSwKKyAgICAxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwwLDAsMTE0LDEzLDAsMCwKKyAgICAwLDExNCwxNjAsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNCwwLDAsMCwKKyAgICAxMTQsNzksMCwwLDAsMjE4LDExLDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDQxLDQsMTE0LDE1LDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LDE2MiwKKyAgICAwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxMyw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLAorICAgIDk1LDk5LDEwNCwxMDEsOTksMTA3LDE0MCwzLDAsMCwxMTUsMjgsMCwwLDAsMCwKKyAgICAyLDEwLDEsMTgsMSw4LDEsOCwxLDgsMSwxMCwxLDEwLDEsNCwKKyAgICAxLDEwLDIsMTAsMSw0LDIsMTQsMSwxNCwxLDExNCwxNzUsMCwwLDAsCisgICAgMTIyLDE2LDc4LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMDAsMzIsMTIyLDQsMTIzLDMzLDExNCwxMjUsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDgsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyMCwwLAorICAgIDAsMCwxMDAsMCwxMjUsMiwxMjQsMCwxMDYsMCwxMDAsMSwxMzEsMSwxMDAsMiwKKyAgICAyNSwwLDEyNSwzLDEyNCwzLDExNCwxMzQsMTI0LDMsMTE2LDEsMTA2LDIsMTA3LDcsCisgICAgMTE0LDQyLDExNiwzLDEyNCwxLDEyNCwzLDEzMSwyLDEsMCwxMjQsMCwxMTYsMSwKKyAgICAxMDYsMiwxMDcsNiwxMTQsNjIsMTE2LDEsMTA2LDIsMTI0LDAsMjUsMCw4MywwLAorICAgIDExNiwxLDEwNiwyLDEyNCwzLDI1LDAsMTI1LDQsMTIxLDEwLDEyNCw0LDEwNiw0LAorICAgIDEyNSwyLDg3LDAsMTEwLDUwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDEzMiwxLDAsCisgICAgMSwwLDEsMCwxMTYsNiwxMDAsMywyMywwLDEwNiw3LDEyNCwwLDEyNCwzLAorICAgIDEzMSwyLDEyNSw1LDExNiw4LDEyNCw1LDEyNCwwLDEwMCw0LDE0MSwyLDEwMCwwLAorICAgIDEzMCwyLDg5LDAsMTEwLDIsODgsMCwxMTYsOSwxMjQsMCwxMjQsMiwxMzEsMiwKKyAgICAxMjUsNiwxMjQsNiwxMDAsMCwxMDcsOCwxMTQsMTcyLDExNiw4LDExNiw2LDEwNiw3LAorICAgIDEyNCwwLDEzMSwxLDEyNCwwLDEwMCw0LDE0MSwyLDEzMCwxLDExMCw4LDExNiwxMCwKKyAgICAxMjQsNiwxMzEsMSwxMjUsNywxMjQsMywxMTQsMjE2LDExNiwxLDEwNiwyLDEyNCwzLAorICAgIDI1LDAsMTI1LDQsMTE2LDExLDEyNCw0LDEyNCwwLDEwNiwwLDEwMCwxLDEzMSwxLAorICAgIDEwMCw1LDI1LDAsMTI0LDcsMTMxLDMsMSwwLDEyNCw3LDgzLDAsNDEsNiwKKyAgICA3OCwxMTQsMTE3LDAsMCwwLDExNCwxOSwwLDAsMCwxMjIsMjMsNTksMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsNDEsMSwxMTQsMTUsMCwwLDAsMjMzLDIsMCwwLDAsCisgICAgNDEsMTIsMTE0LDExOCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwKKyAgICAwLDExNCw1OCwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCw5MCwwLDAsMCwKKyAgICAyMTgsOCw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSwxMTQsMzgsMCwwLDAsMjE4LAorICAgIDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsMTExLDExNiw3MCwxMTEsMTE3LDExMCwxMDAsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNCwxNzAsMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwyMTgsNywxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw5NSwxMTQsMTQ0LDAsMCwwLDExNCwxMTksMCwwLDAsOTAsMTMsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTM5LDAsMCwKKyAgICAwLDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDIzLDk1LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwKKyAgICAxMDcsMTAxLDEwMCwxNjMsMywwLDAsMTE1LDQyLDAsMCwwLDAsMSw0LDEsCisgICAgMTQsMSw0LDEsMTAsMSwxMCwyLDEwLDEsMTAsMSwxMCwxLDIsMSwKKyAgICAxMCwxLDE0LDEsMTYsMSwyMCwxLDEwLDEsOCwxLDIwLDIsOCwxLAorICAgIDQsMiwxMCwxLDIyLDEsMTE0LDE4MCwwLDAsMCw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMzAsMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTQzLDEyLDEsMCwxMTYsCisgICAgMSwxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDgxLDAsODIsMCw4OCwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiwxMjIsNTQsNzAsMTA1LDExMCwxMDAsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMDgsMTExLDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLDIsCisgICAgMTE0LDQyLDAsMCwwLDExNCwxODAsMCwwLDAsNDEsMiwxMTQsMTUsMCwwLAorICAgIDAsMTE0LDE3OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTkwLDMsMCwwLDExNSw0LDAsMCwwLDAsMiwKKyAgICAxMCwxLDExNCwxODEsMCwwLDAsMTE0LDE5LDAsMCwwLDk5LDMsMCwwLAorICAgIDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEyMCwwLDAsMCwxMTYsMCwxMjQsMCwxMjQsMSwxMjQsMiwxMzEsMywKKyAgICAxLDAsMTI0LDIsMTAwLDEsMTA3LDQsMTE0LDMyLDExNiwxLDEyNCwwLDEyNCwxLAorICAgIDEyNCwyLDEzMSwzLDEyNSwwLDExNiwyLDEwNiwzLDEzMSwwLDEsMCwxMjQsMCwKKyAgICAxMTYsNCwxMDYsNSwxMDcsNywxMTQsNjAsMTE2LDYsMTI0LDAsMTE2LDcsMTMxLDIsCisgICAgODMsMCwxMTYsNCwxMDYsNSwxMjQsMCwyNSwwLDEyNSwzLDEyNCwzLDEwMCwyLAorICAgIDEwNyw4LDExNCwxMDgsMTE2LDIsMTA2LDgsMTMxLDAsMSwwLDEwMCwzLDEwNiw5LAorICAgIDEyNCwwLDEzMSwxLDEyNSw0LDExNiwxMCwxMjQsNCwxMjQsMCwxMDAsNCwxNDEsMiwKKyAgICAxMzAsMSwxMTYsMTEsMTI0LDAsMTMxLDEsMSwwLDEyNCwzLDgzLDAsNDEsNSwKKyAgICA5Nyw1MCwxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLAorICAgIDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDksOTcsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksCisgICAgNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLAorICAgIDk3LDEwMCwxMDYsMTE3LDExNSwxMTYsMTA5LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsCisgICAgMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwKKyAgICAxMDEsOTcsMTE2LDEwMSwxMTUsMTE2LDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwKKyAgICAxMTAsMTExLDEwOSwxMDUsMTEwLDk3LDExNiwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDExNywxMTAsCisgICAgOTksMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwxMDUsMTE2LDEyMSwxMCwzMiwzMiwzMiwzMiw5OCwKKyAgICAxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiw5NywxMTAsMTAwLDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDk1LDk1LDQ2LDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsCisgICAgMTAxLDExNSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTksMCwwLDAsNzgsMTIyLDQwLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExMSwxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwKKyAgICAxMDEsMTAwLDU5LDMyLDc4LDExMSwxMTAsMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQxLDEsMTE0LDE1LDAsMCwwLDQxLDEyLAorICAgIDExNCwxNzUsMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LAorICAgIDEzNywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwxODEsCisgICAgMCwwLDAsMjE4LDExLDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTE0LDQ3LDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwKKyAgICA1NiwwLDAsMCw0MSw1LDExNCwxNSwwLDAsMCwxMTQsMTYxLDAsMCwwLAorICAgIDExNCwxNjIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTgyLAorICAgIDAsMCwwLDE5NiwzLDAsMCwxMTUsMjgsMCwwLDAsMCw5LDEyLDEsCisgICAgOCwxLDEyLDEsOCwxLDEwLDEsMTAsMSwxMCwxLDgsMSw4LDEsCisgICAgNCwxLDYsMSwxMiwxLDgsMSwxMTQsMTgyLDAsMCwwLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw2LDAsMCwwLDE3LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNjQsMCwwLDAsMTE2LDAsMTI0LDAsMTAwLDEsMTMxLDIsMTE0LAorICAgIDE2MCwxMDAsMiwxMjQsMSwxMDcsNiwxMTQsNTgsMTE2LDEsMTI0LDEsMTMxLDEsMTI1LAorICAgIDEsMTI0LDEsMTA2LDIsMTAwLDIsMTMxLDEsMSwwLDExNiwwLDEyNCwwLDEwMCwKKyAgICAzLDEzMSwyLDExNCw1OCwxMjQsMSwxMDYsMywxMjQsMCwxMDYsNCwxMzEsMSwxLAorICAgIDAsMTIwLDEwMCwxMjQsMSw2OCwwLDkzLDkyLDEyNSwzLDExNiwwLDEyNCwwLDEyNCwKKyAgICAzLDEzMSwyLDExNSw2NCwxMDAsNCwxMDYsNSwxMjQsMCwxMDYsNiwxMjQsMywxMzEsCisgICAgMiwxMjUsNCwxMjEsMTQsMTE2LDcsMTI0LDIsMTI0LDQsMTMxLDIsMSwwLDg3LAorICAgIDAsMTEzLDY0LDQsMCwxMTYsOCwxMDcsMTAsMTE0LDE1NCwxLDAsMTI1LDUsMSwKKyAgICAwLDEyMiwyMCwxMjQsNSwxMDYsOSwxMjQsNCwxMDcsMiwxMTQsMTM2LDExOSw2NCwxMzAsCisgICAgMCw4NywwLDg5LDAsMTAwLDUsMTAwLDUsMTI1LDUsMTI2LDUsODgsMCwxMTMsCisgICAgNjQsODgsMCwxMTMsNjQsODcsMCwxMjQsMCw4MywwLDQxLDYsMTIyLDIzOCw3MCwKKyAgICAxMDUsMTAzLDExNywxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LAorICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLAorICAgIDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCw5Nyw5OCwxMDgsCisgICAgMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLAorICAgIDczLDExNiwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTE2LAorICAgIDExMSwzMiwxMDAsMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywxMTUsMTE1LAorICAgIDExNywxMDksMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzOSwKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAwLAorICAgIDEwMSwxMTUsMTA1LDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxMjcsMCwKKyAgICAwLDAsMjUwLDEsNDIsMjE4LDcsOTUsOTUsOTcsMTA4LDEwOCw5NSw5NSwxMjIsNSwKKyAgICAxMjMsMTI1LDQ2LDEyMywxMjUsNzgsNDEsMTAsMTE0LDQsMCwwLDAsMTE0LDEyNiwwLAorICAgIDAsMCwyMTgsNiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwyMTgsNiwxMDEsMTIwLDExNiwxMDEsCisgICAgMTEwLDEwMCwxMTQsMTg0LDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMSwwLDAsCisgICAgMCwxMTQsNTgsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMTUsMCwwLDAsCisgICAgNDEsNiwxMTQsODMsMCwwLDAsMjE4LDgsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LAorICAgIDExNiwxMTQsMTc5LDAsMCwwLDIxOCwxLDEyMCw5MCw5LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5MCwzLDEwMSwxMjAsOTksMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDEwNCw5NywxMTAsMTAwLDEwOCwKKyAgICAxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwyMjEsMywwLDAsMTE1LDMyLAorICAgIDAsMCwwLDAsMTAsMTAsMSw4LDEsOCwxLDEwLDEsMTAsMSwxMiwKKyAgICAxLDEwLDEsMTAsMSwxNCwxLDIsMSwxNCwxLDE2LDQsMTAsMSwyLAorICAgIDEsMjQsMSwxMTQsMTg5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwzLDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDE1MCwwLAorICAgIDAsMCwxMjQsMCwxMDYsMCwxMDAsMSwxMzEsMSwxMjUsMSwxMjQsMCwxMDYsMCwKKyAgICAxMDAsMiwxMzEsMSwxMjUsMiwxMjQsMSwxMDAsMywxMDcsOSwxMTQsODQsMTI0LDIsCisgICAgMTAwLDMsMTA3LDksMTE0LDc4LDEyNCwxLDEyNCwyLDEwNiwxLDEwNywzLDExNCw3OCwKKyAgICAxMTYsMiwxMDYsMywxMDAsNCwxMjQsMSwxNTUsMiwxMDAsNSwxMjQsMiwxMDYsMSwKKyAgICAxNTUsMiwxMDAsNiwxNTcsNSwxMTYsNCwxMDAsNywxMDAsOCwxNDEsMywxLDAsCisgICAgMTI0LDEsODMsMCwxMTAsNjIsMTI0LDIsMTAwLDMsMTA3LDksMTE0LDEwMCwxMjQsMiwKKyAgICAxMDYsMSw4MywwLDExMCw0NiwxMTYsMiwxMDYsMywxMDAsOSwxMTYsNCwxMDAsNywKKyAgICAxMDAsOCwxNDEsMywxLDAsMTI0LDAsMTAwLDEwLDI1LDAsMTI1LDEsMTAwLDExLAorICAgIDEyNCwwLDEwNyw3LDExNCwxNDYsMTI0LDEsMTA2LDUsMTAwLDEyLDEzMSwxLDEwMCwxMywKKyAgICAyNSwwLDEyNSwxLDEyNCwxLDgzLDAsNDEsMTQsMTIyLDE2Nyw2Nyw5NywxMDgsOTksCisgICAgMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDk1LDk1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTAzLDExNyw5NywxMTQsOTcsMTEwLAorICAgIDExNiwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLAorICAgIDEwMSwxMDAsMzIsMTExLDExNCwzMiw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDMyLDExNSwKKyAgICAxMDEsMTE2LDMyLDExNiwxMTEsMzIsNzgsMTExLDExMCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LAorICAgIDExMSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwzMiwxMTYsMTA0LDk3LDExNiwKKyAgICAzMiwxMDUsMTE2LDExNSwzMiwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwzMiwxMTgsOTcsMTA4LDExNywKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMTE0LDEzMCwwLDAsMCwxMTQsODksMCwwLDAsNzgsMTIyLDMyLAorICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwzMyw2MSwzMiw5NSwKKyAgICA5NSwxMTUsMTEyLDEwMSw5OSw5NSw5NSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDQwLAorICAgIDEyMiw0LDMyLDMzLDYxLDMyLDI1MCwxLDQxLDIzMywzLDAsMCwwLDQxLDEsCisgICAgOTAsMTAsMTE1LDExNiw5Nyw5OSwxMDcsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMjIsODksOTksOTcsCisgICAgMTEwLDM5LDExNiwzMiwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsMzIsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NSw5NSwxMTUsMTEyLDEwMSw5OSw5NSwKKyAgICA5NSwzMiwxMTEsMTE0LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwKKyAgICA0NCwzMiwxMDIsOTcsMTA4LDEwOCwxMDUsMTEwLDEwMywzMiw5OCw5Nyw5OSwxMDcsMzIsMTExLAorICAgIDExMCwzMiw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwzMiw5NywxMTAsMTAwLDMyLDk1LAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNCwxLDAsMCwwLDExNCwxMjcsMCwwLAorICAgIDAsMTE0LDExNywwLDAsMCwxMTQsMTksMCwwLDAsNDEsNiwxMTQsMzAsMCwKKyAgICAwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTY3LDAsMCwwLDExNCwxNjgsMCwwLAorICAgIDAsMTE0LDE2OSwwLDAsMCwxMTQsMTE4LDAsMCwwLDQxLDMsMjE4LDcsMTAzLAorICAgIDEwOCwxMTEsOTgsOTcsMTA4LDExNSwxMTQsMTYxLDAsMCwwLDExNCw4MiwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCisgICAgMTcsOTUsOTksOTcsMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA5NSw5NSwyNTIsMywwLDAsMTE1LDMwLDAsMCwwLDAsNywxMCwxLDEwLAorICAgIDEsOCwxLDE4LDEsMjIsMiwxMCwxLDYsMSw4LDEsOCwyLDYsCisgICAgMiwxMCwxLDgsMSw4LDEsMTQsMSwxMTQsMTkzLDAsMCwwLDk5LDUsCisgICAgMCwwLDAsMCwwLDAsMCw5LDAsMCwwLDUsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE3MCwwLDAsMCwxMjQsNCwxMDAsMSwxMDcsMiwxMTQsMTgsCisgICAgMTE2LDAsMTI0LDAsMTMxLDEsMTI1LDUsMTEwLDM2LDEyNCwxLDEwMCwyLDEwNyw5LAorICAgIDExNCwzMCwxMjQsMSwxMTAsMiwxMDUsMCwxMjUsNiwxMTYsMSwxMjQsNiwxMzEsMSwKKyAgICAxMjUsNywxMTYsMCwxMjQsMCwxMjQsNywxMjQsNCwxMzEsMywxMjUsNSwxMjQsMywKKyAgICAxMTUsMTU0LDEyNCw0LDEwMCwxLDEwNywyLDExNCw4NiwxMTYsMCwxMjQsMCwxMDYsMiwKKyAgICAxMDAsMywxMzEsMSwxMDAsMSwyNSwwLDEzMSwxLDgzLDAsMTEzLDE2NiwxMjQsMCwKKyAgICAxMTUsOTYsMTI0LDUsODMsMCwxMTMsMTY2LDExNiwzLDEyNCwwLDEzMSwxLDExNiwzLAorICAgIDEyNCwwLDEwNiwyLDEwMCwzLDEzMSwxLDEwMCwxLDI1LDAsMTMxLDEsMjQsMCwKKyAgICAxMjUsOCwxMTYsNCwxMDYsNSwxMjQsNSwxMDYsNiwxMDAsMiwxMTYsMywxMjQsNSwKKyAgICAxMDYsNiwxMzEsMSwxMjQsOCwyNCwwLDEzMywyLDI1LDAsMjUsMCw4MywwLAorICAgIDExMCwxMiwxMTYsNywxMjQsNSwxMjQsMywxMTYsMCwxMzEsMyw4MywwLDEwMCwyLAorICAgIDgzLDAsNDEsNCw5NywyMTUsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICA5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDM5LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywKKyAgICAxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsCisgICAgMzIsMTA1LDExMCwxMDIsMTAxLDExNCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTExLDk5LDk5LDExNywxMTQsCisgICAgMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLAorICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwKKyAgICAxMTEsOTksOTcsMTA4LDExNSwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsCisgICAgMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwKKyAgICAzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LAorICAgIDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsCisgICAgMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsCisgICAgMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwKKyAgICAxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwKKyAgICAzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsCisgICAgMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDYyLDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsCisgICAgMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLAorICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwKKyAgICAxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwKKyAgICAxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LAorICAgIDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksCisgICAgMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LAorICAgIDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiw1MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMTQsMTksMCwwLDAsNzgsMTE0LDExNywwLDAsMCw0MSw4LDExNCwxODIsMCwKKyAgICAwLDAsMTE0LDE5MywwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDExNCwxNTksMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsCisgICAgMCwxMTQsMSwwLDAsMCwxMTQsMTg5LDAsMCwwLDQxLDksMTE0LDE1LDAsCisgICAgMCwwLDExNCwxOTIsMCwwLDAsMjE4LDYsMTA4LDExMSw5OSw5NywxMDgsMTE1LDExNCwKKyAgICAxODcsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsODMsMCwwLDAsOTAsOCwKKyAgICAxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LDExNCwxNjEsMCwwLDAsOTAsNyw5OSwKKyAgICAxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDIxOCwxMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwKKyAgICA5NSwyMyw0LDAsMCwxMTUsMjYsMCwwLDAsMCwxMSw4LDEsMTAsMiwKKyAgICAxNiwxLDgsMSwxMiwxLDQsMyw4LDEsMjAsMSw0LDEsNiw0LAorICAgIDI2LDMsMzIsMiwxMTQsMTk2LDAsMCwwLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LAorICAgIDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEzMSwxLDEyNSwxLDEyNCwxLDEwMCwKKyAgICAwLDEwNyw4LDExNCwzMCwxMTYsMiwxMDAsMSwxMjQsMCwyMywwLDEzMSwxLDEzMCwKKyAgICAxLDExNiwzLDEyNCwxLDEzMSwxLDgzLDAsNDEsMiw3OCwxMjIsMjUsMTEwLDExMSwKKyAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsNDEsNCwxMTQsMTQyLDAsMCwwLDExNCwxNDYsCisgICAgMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNDEsMCwwLDAsNDEsMiwxMTQsCisgICAgMTUsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsNTgsNCwwLDAsCisgICAgMTE1LDgsMCwwLDAsMCwxLDEwLDEsOCwxLDEyLDEsMTE0LDE5NywwLAorICAgIDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDI0NCwwLDAsMCwxMjQsMSw5NywwLAorICAgIDEyNCwwLDk3LDEsMTE2LDIsMTE2LDEsMTMxLDEsMTI1LDIsMTIwLDg2LDExNiwxLAorICAgIDEwNiwzLDEwNiw0LDEzMSwwLDY4LDAsOTMsNzIsOTIsMiwxMjUsMywxMjUsNCwKKyAgICAxMTYsNSwxMjQsNCwxMjQsMiwxMzEsMiwxMTQsMjgsMTI0LDMsMTE2LDEsMTA2LDYsCisgICAgMTA3LDYsMTE0LDYyLDExNiw3LDEyNSw1LDExMCwxOCwxMTYsMCwxMDYsOCwxMjQsMywKKyAgICAxMzEsMSwxMTQsMjgsMTE2LDksMTI1LDUsMTEwLDIsMTEzLDI4LDExNiwxMCwxMjQsNCwKKyAgICAxMjQsNSwxMzEsMiwxMjUsNiwxMTYsMTEsMTI0LDYsMTI0LDQsMTMxLDIsMSwwLAorICAgIDExMywyOCw4NywwLDExNiwxLDEwNiwzLDExNiwxMiwyNSwwLDEyNSw3LDEyMCw1NCwKKyAgICAxMDAsNSw2OCwwLDkzLDQ2LDEyNSw4LDEyNCw4LDExNiwxLDEwNiwzLDEwNyw3LAorICAgIDExNCwxNDQsMTE2LDEzLDEyNCw4LDEzMSwxLDEyNSw5LDExMCwxMCwxMTYsMSwxMDYsMywKKyAgICAxMjQsOCwyNSwwLDEyNSw5LDExNiwxNCwxMjQsNywxMjQsOCwxMjQsOSwxMzEsMywKKyAgICAxLDAsMTEzLDEyMCw4NywwLDEyMSwxMiwxMTYsMTMsMTAwLDIsMTMxLDEsMTI1LDEwLAorICAgIDg3LDAsMTEwLDI0LDQsMCwxMTYsMTUsMTA3LDEwLDExNCwyMDYsMSwwLDEsMCwKKyAgICAxLDAsMTAwLDMsMTI1LDEwLDg5LDAsMTEwLDIsODgsMCwxMTYsMTQsMTI0LDcsCisgICAgMTAwLDIsMTI0LDEwLDEzMSwzLDEsMCwxMTYsMTMsMTAwLDQsMTMxLDEsMTI1LDExLAorICAgIDExNiwxNCwxMjQsNywxMDAsNCwxMjQsMTEsMTMxLDMsMSwwLDEwMCwzLDgzLDAsCisgICAgNDEsNiwxMjIsMjUwLDgzLDEwMSwxMTYsMTE3LDExMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDMyLDk4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwKKyAgICAxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDEwOSwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLAorICAgIDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDY1LDExNSwzMiwxMTUsMTIxLDExNSwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAzMiw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiw5NywxMTAsMTAwLDMyLDk1LDEwNSwxMDksMTEyLAorICAgIDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMTEsMTE1LDEwMSwzMiwxMTYsCisgICAgMTE5LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLAorICAgIDk4LDEwMSwzMiwxMDEsMTIwLDExMiwxMDgsMTA1LDk5LDEwNSwxMTYsMTA4LDEyMSwzMiwxMTIsOTcsCisgICAgMTE1LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE2NywKKyAgICAwLDAsMCwxMTQsMjAsMCwwLDAsNzgsMTE0LDU1LDAsMCwwLDQxLDEsCisgICAgMTE0LDE2NywwLDAsMCw0MSwxNiwxMTQsNDYsMCwwLDAsMTE0LDE0LDAsMCwKKyAgICAwLDExNCwxMywwLDAsMCwxMTQsNzksMCwwLDAsMjE4LDUsMTA1LDExNiwxMDEsCisgICAgMTA5LDExNSwxMTQsMTcxLDAsMCwwLDExNCw2OSwwLDAsMCwxMTQsMTQyLDAsMCwKKyAgICAwLDExNCw3NSwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxMjgsMCwwLDAsCisgICAgMTE0LDEzMywwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCw3MCwwLDAsMCw0MSwxMiwyMTgsMTAsMTE1LDEyMSwxMTUsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LDExLDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDkwLDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNiwxMjEsMTEyLAorICAgIDEwMSwxMTQsMTUsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCw5MywwLDAsMCwKKyAgICAxMTQsODIsMCwwLDAsOTAsMTEsMTE1LDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLAorICAgIDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsCisgICAgMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDYsCisgICAgOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw2NSw0LDAsMCwxMTUsNTAsMCwwLDAsMCwKKyAgICA5LDQsMSw0LDMsOCwxLDIwLDEsMTAsMSwxMCwxLDYsMSwxMCwKKyAgICAxLDYsMiwyLDEsMTAsMSwxNCwzLDEwLDEsMTAsMSwxMCwxLDEwLAorICAgIDIsMTAsMSwxNiwzLDIsMSwxMiwxLDE0LDIsMTAsMSwxMiwzLDgsCisgICAgMSwxMTQsMjAxLDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDY2LDAsMCwwLAorICAgIDExNiwwLDEyNCwwLDEyNCwxLDEzMSwyLDEsMCwxMTYsMSwxMDYsMiwxMDYsMywKKyAgICAxMTYsNCwxMzEsMSwxLDAsMTE2LDEsMTA2LDIsMTA2LDMsMTE2LDUsMTMxLDEsCisgICAgMSwwLDEwMCwxLDEwMCwyLDEwOCw2LDEyNSwyLDEyNCwyLDk3LDcsMTI0LDIsCisgICAgMTA2LDgsMTE2LDEsMTA2LDksMTE2LDEwLDI1LDAsMTMxLDEsMSwwLDEwMCwyLAorICAgIDgzLDAsNDEsMywxMjIsNTAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMTQsMTksMCwwLDAsNzgsNDEsMTEsCisgICAgMTE0LDIwMSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsCisgICAgMTA5LDAsMCwwLDExNCwxNDIsMCwwLDAsMTE0LDE1MiwwLDAsMCwyMTgsMjYsCisgICAgOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywxMDgsMTE0LDExNSwwLDAsMCwyMTgsCisgICAgOCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMTQsNzksMCwwLDAsMTE0LDEsCisgICAgMCwwLDAsNDEsMywxMTQsMTk5LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LAorICAgIDIwMiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsMjAzLDAsMCwwLDExMiw0LDAsMCwxMTUsMTIsMCwwLAorICAgIDAsMCwyLDEwLDIsMTIsMSwxMiwzLDgsMSw0LDEsMTE0LDIwMywwLAorICAgIDAsMCw0MSwyLDc4LDc4LDQxLDEsNzgsNDEsMiw3OCwxMTQsMTksMCwwLAorICAgIDAsNDEsNTAsMTE0LDMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTIsMCwKKyAgICAwLDAsMTE0LDE2LDAsMCwwLDExNCw1MSwwLDAsMCwxMTQsMjksMCwwLAorICAgIDAsMTE0LDM2LDAsMCwwLDExNCwxNywwLDAsMCwxMTQsMTgsMCwwLDAsCisgICAgMTE0LDQxLDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsNDUsMCwwLDAsMTE0LAorICAgIDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDc0LAorICAgIDAsMCwwLDExNCw3NywwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDk1LDAsCisgICAgMCwwLDExNCw5NiwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCw3OCwwLDAsCisgICAgMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsOTAsOSw5NSw4MCw3OSw4MCw4NSwKKyAgICA3Niw2NSw4NCw2OSwxMTQsMTI4LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDEzNiwKKyAgICAwLDAsMCwxMTQsOTEsMCwwLDAsMTE0LDgwLDAsMCwwLDExNCwxNDAsMCwKKyAgICAwLDAsMTE0LDE0MSwwLDAsMCwxMTQsODEsMCwwLDAsMTE0LDE0MiwwLDAsCisgICAgMCwxMTQsMTUyLDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDE2MywwLDAsMCwKKyAgICAxMTQsMTY1LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDE3NSwwLDAsMCw5MCwKKyAgICAxNSw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSw5NSw4MCw4Miw2OSw3MCw3Myw4OCwKKyAgICAxMTQsMTc3LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDE4MSwwLDAsMCwxMTQsCisgICAgMTgyLDAsMCwwLDExNCwxODksMCwwLDAsMTE0LDE5MywwLDAsMCwxMTQsMTk2LAorICAgIDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LDIwMSwwLDAsMCwxMTQsMjAzLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwyMTgsOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2MiwKKyAgICA4LDAsMCwwLDExNSw5NCwwLDAsMCw0LDE3LDQsMiw4LDgsOCwKKyAgICA3LDQsMiw0LDMsMTYsNCwxNCw2OCwxNCwyMSwxNCwxOSw4LDE5LDgsCisgICAgMTksOCwxMSwxNCw4LDgsMTEsOCwxMiw4LDE2LDgsMzYsMTQsMjcsMTQsCisgICAgMTAxLDE2LDI2LDYsMywxMCw0NSwxNCw2MCw4LDE3LDgsMTcsOCwyNSw4LAorICAgIDI5LDgsMjMsOCwxNiwxNCw3MywxNCw3NywxNCwxMyw4LDksOCw5LDEwLAorICAgIDQ3LDgsMjAsNCwxLDgsMiw4LDI3LDgsNiwxMCwyNSw4LDMxLDgsCisgICAgMjcsMTgsMzUsOCw3LDgsNDcsCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oIGIvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCmluZGV4IDVlZTg0M2EuLjBhZmU3ZGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAorKysgYi9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKQEAgLTEsNjI1ICsxLDU2MSBAQAogLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLwogY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliX2V4dGVybmFsW10gPSB7Ci0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNywwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjQ0LDIsMCwwLDEwMCwwLDAsOTAsMCwwLAotICAgIDEwMCw5NiwwLDkwLDEsMCwxMDAsOTcsMCw5MCwyLDAsMTAxLDIsMCwxMDEsCi0gICAgMSwwLDIzLDkwLDMsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNSwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDYsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDgsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTYsCi0gICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE4LDAsMTAwLDE5LDAsCi0gICAgMTMyLDAsMCw5MCwxMSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEzMiwwLDAsOTAsCi0gICAgMTIsMCwxMDAsMjIsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMSwwLDkwLDEzLAotICAgIDAsMTAxLDE0LDAsMTAxLDEzLDAsMTA2LDE1LDAsMTMxLDEsMCw5MCwxNiwwLAotICAgIDEwMCwyNSwwLDEwNiwxNywwLDEwMCwyNiwwLDEwMCwyNywwLDEzMSwyLDAsMTAwLAotICAgIDI4LDAsMjMsOTAsMTgsMCwxMDEsMTksMCwxMDYsMjAsMCwxMDEsMTgsMCwxMDAsCi0gICAgMjcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDI5LDAsOTAsMjIsMCwxMDAsMzAsCi0gICAgMCw5MCwyMywwLDEwMCwzMSwwLDEwMywxLDAsOTAsMjQsMCwxMDAsMzIsMCwKLSAgICAxMDMsMSwwLDkwLDI1LDAsMTAxLDI1LDAsNCw5MCwyNiwwLDkwLDI3LDAsCi0gICAgMTAwLDMzLDAsMTAwLDM0LDAsMTAwLDMzLDAsMTAwLDM1LDAsMTAwLDM2LDAsMTMyLAotICAgIDEsMSw5MCwyOCwwLDEwMCwzNywwLDEwMCwzOCwwLDEzMiwwLDAsOTAsMjksCi0gICAgMCwxMDAsMzksMCwxMDAsNDAsMCwxMzIsMCwwLDkwLDMwLDAsMTAwLDQxLDAsCi0gICAgMTAwLDQyLDAsMTMyLDAsMCw5MCwzMSwwLDEwMCw0MywwLDEwMCw0NCwwLDEzMiwKLSAgICAwLDAsOTAsMzIsMCwxMDAsNDUsMCwxMDAsNDYsMCwxMDAsNDcsMCwxMDAsNDgsCi0gICAgMCwxMzIsMCwxLDkwLDMzLDAsMTAwLDQ5LDAsMTAwLDUwLDAsMTMyLDAsMCwKLSAgICA5MCwzNCwwLDEwMCw1MSwwLDEwMCw1MiwwLDEzMiwwLDAsOTAsMzUsMCwxMDAsCi0gICAgMzMsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsNTMsMCwxMDAsNTQsMCwxMzIsMywKLSAgICAwLDkwLDM2LDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDU1LDAsCi0gICAgMTAwLDU2LDAsMTMyLDMsMCw5MCwzNywwLDEwMCw1NywwLDEwMCw1NywwLDEwMCwKLSAgICA1OCwwLDEwMCw1OSwwLDEzMiwyLDAsOTAsMzgsMCwxMDAsNjAsMCwxMDAsNjEsCi0gICAgMCwxMzIsMCwwLDkwLDM5LDAsMTAxLDQwLDAsMTMxLDAsMCw5MCw0MSwwLAotICAgIDEwMCwzMywwLDEwMCw2MiwwLDEwMCwzMywwLDEwMCw2MywwLDEwMSw0MSwwLDEwMCwKLSAgICA2NCwwLDEwMCw2NSwwLDEzMiwxLDIsOTAsNDIsMCw3MSwxMDAsNjYsMCwxMDAsCi0gICAgNjcsMCwxMzIsMCwwLDEwMCw2NywwLDEzMSwyLDAsOTAsNDMsMCw3MSwxMDAsCi0gICAgNjgsMCwxMDAsNjksMCwxMzIsMCwwLDEwMCw2OSwwLDEzMSwyLDAsOTAsNDQsCi0gICAgMCw3MSwxMDAsNzAsMCwxMDAsNzEsMCwxMzIsMCwwLDEwMCw3MSwwLDEwMSw0NCwKLSAgICAwLDEzMSwzLDAsOTAsNDUsMCw3MSwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwKLSAgICAwLDEwMCw3MywwLDEzMSwyLDAsOTAsNDYsMCw3MSwxMDAsNzQsMCwxMDAsNzUsCi0gICAgMCwxMzIsMCwwLDEwMCw3NSwwLDEwMSw0NiwwLDEwMSw0NSwwLDEzMSw0LDAsCi0gICAgOTAsNDcsMCw3MSwxMDAsNzYsMCwxMDAsNzcsMCwxMzIsMCwwLDEwMCw3NywwLAotICAgIDEwMSw0NiwwLDEwMSw0NCwwLDEzMSw0LDAsOTAsNDgsMCwxMDMsMCwwLDkwLAotICAgIDQ5LDAsNzEsMTAwLDc4LDAsMTAwLDc5LDAsMTMyLDAsMCwxMDAsNzksMCwxMDEsCi0gICAgNDYsMCwxMDEsNDQsMCwxMzEsNCwwLDkwLDUwLDAsNzEsMTAwLDgwLDAsMTAwLAotICAgIDgxLDAsMTMyLDAsMCwxMDAsODEsMCwxMzEsMiwwLDkwLDUxLDAsNzEsMTAwLAotICAgIDgyLDAsMTAwLDgzLDAsMTMyLDAsMCwxMDAsODMsMCwxMzEsMiwwLDkwLDUyLAotICAgIDAsNzEsMTAwLDg0LDAsMTAwLDg1LDAsMTMyLDAsMCwxMDAsODUsMCwxMzEsMiwKLSAgICAwLDkwLDUzLDAsNzEsMTAwLDg2LDAsMTAwLDg3LDAsMTMyLDAsMCwxMDAsODcsCi0gICAgMCwxMzEsMiwwLDkwLDU0LDAsMTAwLDMzLDAsMTAwLDg4LDAsMTAwLDg5LDAsCi0gICAgMTMyLDEsMCw5MCw1NSwwLDEwMCw5MCwwLDEwMCw5MSwwLDEzMiwwLDAsOTAsCi0gICAgNTYsMCwxMDAsOTIsMCwxMDAsOTMsMCwxMzIsMCwwLDkwLDU3LDAsMTAwLDk0LAotICAgIDAsMTAwLDk1LDAsMTMyLDAsMCw5MCw1OCwwLDEwMCwzMywwLDgzLDQxLDk4LAotICAgIDk3LDk0LDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExMiw5NywxMTYsMTA0LAotICAgIDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLAotICAgIDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsCi0gICAgNzksODQsMzIsMTA5LDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwKLSAgICAxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLAotICAgIDMzLDMyLDczLDExNiwzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsCi0gICAgMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsCi0gICAgMzIsMTA1LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiwxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwKLSAgICAxMDQsMTExLDExMCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsNDYsMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsCi0gICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwKLSAgICAxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKLSAgICAxMDUsOTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsCi0gICAgMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLAotICAgIDEwMSwxMTQsMzIsMTE2LDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwKLSAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwKLSAgICAxMDUsOTksNDUsMTAyLDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NiwxMCwxMCwyMTgsMywxMTksMTA1LDExMCwyMTgsNiw5OSwxMjEsMTAzLDExOSwxMDUsMTEwLAotICAgIDIxOCw2LDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsOTksMCwwLDAsMCwwLDAsMCwKLSAgICAwLDEsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSw4OCwwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMTYsMywwLDEzMSwxLAotICAgIDAsMTE0LDcyLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTE2LDQsMCwKLSAgICAxMzEsMSwwLDExNCw0NSwwLDEwMCwxLDAsMTM3LDAsMCwxMTAsNiwwLDEwMCwKLSAgICAyLDAsMTM3LDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDMsMCwxMDAsNCwKLSAgICAwLDEzNCwwLDAsMTI1LDAsMCwxMTAsMTIsMCwxMDAsNSwwLDEwMCw0LDAsCi0gICAgMTMyLDAsMCwxMjUsMCwwLDEyNCwwLDAsODMsNDEsNiw3OCw5MCwxMiw4MCwKLSAgICA4OSw4NCw3Miw3OSw3OCw2Nyw2NSw4Myw2OSw3OSw3NSwxMTUsMTIsMCwwLDAsCi0gICAgODAsODksODQsNzIsNzksNzgsNjcsNjUsODMsNjksNzksNzUsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxOSwwLDAsCi0gICAgMCwxMTUsMTMsMCwwLDAsMTM2LDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LAotICAgIDYsMCw4Myw0MSwxLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwKLSAgICAzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwKLSAgICAxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDQxLDIsMjE4LDMsCi0gICAgOTUsMTExLDExNSw5MCw3LDEwMSwxMTAsMTE4LDEwNSwxMTQsMTExLDExMCwxNjksMCw0MSwxLAotICAgIDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDI1MCwzOCw2MCwxMDIsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAotICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywKLSAgICAxMDgsNjIsMjE4LDExLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDM3LAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMzcsOTUsMTA5LDk3LDEwNywKLSAgICAxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsNDYsNjAsMTA4LDExMSwKLSAgICA5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsCi0gICAgMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwKLSAgICAwLDAsODMsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwKLSAgICAyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLAotICAgIDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsCi0gICAgMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDcwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCw3LDAsMCwwLDQxLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiw0MSw1LDIxOCwzLDExNSwxMjEsMTE1LDIxOCw4LDExMiwxMDgsOTcsMTE2LDEwMiwKLSAgICAxMTEsMTE0LDEwOSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMjE4LAotICAgIDI3LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLAotICAgIDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDIxOCwzNSw5NSw2NywKLSAgICA2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSwKLSAgICA4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4Myw5NSw4Myw4NCw4Miw5NSw3NSw2OSwKLSAgICA4OSw0MSwxLDExNCw3LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LAotICAgIDUsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDEwOSw5NywxMDcsMTAxLAotICAgIDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDMwLDAsMCwwLDExNSwKLSAgICAxNCwwLDAsMCwwLDEsMTgsMSwxOCwxLDksMiw2LDIsMjEsNCwKLSAgICAxMiwzLDExNCwxMywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLDAsCi0gICAgMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMDAsMSwwLDY0LDEwNiwxLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMSwyLDAsODMsNDEsNCwxMjIsNDIsNjcsCi0gICAgMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsNTEsNTAsNDUsOTgsMTA1LDExNiwzMiwKLSAgICAxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LAotICAgIDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDQ2LDEwOCwzLDAsMCwwLDI1NSwxMjcsCi0gICAgMjU1LDEyNywzLDAsMjMzLDQsMCwwLDAsMjE4LDYsMTA4LDEwNSwxMTYsMTE2LDEwOCwKLSAgICAxMDEsNDEsMiwyMTgsMywxMDUsMTEwLDExNiwyMTgsOCwxMTYsMTExLDk1LDk4LDEyMSwxMTYsCi0gICAgMTAxLDExNSw0MSwxLDIxOCwxLDEyMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNiwwLDAsMCwyMTgsNyw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDQ3LAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsMTksMCwwLDAsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwKLSAgICAwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDQ3LDY3LDExMSwxMTAsCi0gICAgMTE4LDEwMSwxMTQsMTE2LDMyLDUyLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLAotICAgIDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwKLSAgICAzMiw5NywxMTAsMzIsMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDQ2LDExNCwxNSwwLDAsCi0gICAgMCw0MSwyLDExNCwxNiwwLDAsMCwyMTgsMTAsMTAyLDExNCwxMTEsMTA5LDk1LDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwxLDkwLDksMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsCi0gICAgMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCw3LDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNTIsMCwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCwyLDExNCwyMSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwzLDAsMCwwLDcxLDAsMCwwLDExNSwyNiwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwKLSAgICAwLDAsMTI0LDAsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDEsMywxMjIsCi0gICAgMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNiwxMTEsMTA1LDExMCw0MCw0MSw0NiwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwKLSAgICAwLDgzLDAsMCwwLDExNSwzNywwLDAsMCwxMDMsMCwwLDEyNCwwLDAsCi0gICAgOTMsMjcsMCwxMjUsMSwwLDEyNCwxLDAsMTE0LDYsMCwxMjQsMSwwLDEwNiwKLSAgICAwLDAsMTE2LDEsMCwxMzEsMSwwLDE0NSwyLDAsMTEzLDYsMCw4MywxMTQsCi0gICAgNCwwLDAsMCw0MSwyLDIxOCw2LDExNCwxMTUsMTE2LDExNCwxMDUsMTEyLDIxOCwxNSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDQxLAotICAgIDIsMjE4LDIsNDYsNDgsMjE4LDQsMTEyLDk3LDExNCwxMTYsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjUwLDEwLDYwLDEwOCwxMDUsMTE1LAotICAgIDExNiw5OSwxMTEsMTA5LDExMiw2Miw1OSwwLDAsMCwxMTUsMiwwLDAsMCw5LAotICAgIDEsMTIyLDMwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw0Niw2MCwxMDgsCi0gICAgMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLAotICAgIDYyLDQxLDIsMjE4LDgsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsMjE4LDQsMTA2LAotICAgIDExMSwxMDUsMTEwLDQxLDEsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LAotICAgIDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDU3LDAsMCwwLAotICAgIDExNSw0LDAsMCwwLDAsMiwxNSwxLDExNCwzMCwwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxMzQsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLAotICAgIDAsMTAwLDEsMCwxMDcsMiwwLDExNCw1MiwwLDEyNCwwLDAsMTA2LDIsMCwKLSAgICAxMTYsMywwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsCi0gICAgMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLDEyMCw2OSwwLDExNiwKLSAgICA0LDAsMTI0LDAsMCwxMzEsMSwwLDY4LDkzLDU1LDAsMTI1LDQsMCwxMjQsCi0gICAgNCwwLDExNiwxLDAsMTA3LDYsMCwxMTQsNjUsMCwxMjQsMCwwLDEwNiw1LAotICAgIDAsMTI0LDQsMCwxMDAsMiwwLDEwMCwxLDAsMTMxLDEsMSw5MiwyLDAsCi0gICAgMTI1LDEsMCwxMjUsMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLAotICAgIDExMyw2NSwwLDg3LDEwMCwzLDAsMTI0LDAsMCwxMDIsMiwwLDgzLDQxLDQsCi0gICAgMTIyLDMyLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLAotICAgIDQxLDQ2LDIzMywxLDAsMCwwLDkwLDgsMTA5LDk3LDEyMCwxMTUsMTEyLDEwOCwxMDUsCi0gICAgMTE2LDIxOCwwLDQxLDYsMjE4LDMsMTA4LDEwMSwxMTAsMTE0LDIzLDAsMCwwLDIxOCwKLSAgICAxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTQsMjcsMCwwLDAsCi0gICAgMjE4LDgsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDEwMCwyMTgsNiwxMTQsMTE1LDExMiwxMDgsCi0gICAgMTA1LDExNiw0MSw1LDIxOCw0LDExMiw5NywxMTYsMTA0LDkwLDUsMTAyLDExNCwxMTEsMTEwLAotICAgIDExNiwyMTgsMSw5NSwyMTgsNCwxMTYsOTcsMTA1LDEwOCwxMTQsMTgsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLAotICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsNjMsMCwwLDAsMTE1LAotICAgIDE2LDAsMCwwLDAsMiwxOCwxLDI0LDEsMTAsMSwxOSwxLDEyLDEsCi0gICAgMjcsMSwxNCwxLDExNCw0MCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDgzLAotICAgIDQxLDEsMTIyLDEyNiw4MywxMTYsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCi0gICAgMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc3LDk3LDEwMCwxMDEsMzIsOTcsMzIsMTE1LAotICAgIDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLAotICAgIDMyLDExNiwxMTEsMzIsMTA5LDk3LDEwNywxMDEsMzIsMTA1LDExNiwzMiwxMDEsOTcsMTE1LDEwNSwKLSAgICAxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMDUsCi0gICAgMTEwLDMyLDEwMSwxMjAsMTEyLDEwMSwxMTQsMTA1LDEwOSwxMDEsMTEwLDExNiwxMTUsMTAsMzIsMzIsCi0gICAgMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDExNSwxMTYsCi0gICAgOTcsMTE2LDMyLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDExNSw0MSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw0MSwyLDExNCwzLDAsMCwwLDkwLDQsMTE1LDExNiw5NywxMTYsNDEsCi0gICAgMSwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsCi0gICAgMTE2LDc1LDAsMCwwLDExNSwyLDAsMCwwLDAsNywxMTQsNDEsMCwwLAotICAgIDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwwLDEyMSwxNiwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDIyLDAsNCwxMTYsCi0gICAgMSwwLDEwNywxMCwwLDExNCw0MCwwLDEsMSwxLDEwMCwxLDAsODMsODksCi0gICAgMTEwLDEsMCw4OCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCw2NCwxMjQsMSwKLSAgICAwLDEwNywyLDAsODMsNDEsMywxMjIsNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwKLSAgICAxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwKLSAgICAxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsCi0gICAgNDEsMywxMTQsNDEsMCwwLDAsMjE4LDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LAotICAgIDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwxMDAsMTAxLDQxLDMsMTE0LDM3LDAsMCwwLAotICAgIDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCw5LDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLAotICAgIDExMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsCi0gICAgMTE2LDEyMSwxMTIsMTAxLDg1LDAsMCwwLDExNSwxMCwwLDAsMCwwLDIsMywKLSAgICAxLDE2LDEsMTMsMSw5LDEsMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDI0OCwxLDAsMCwxMDAsMCw5MCwwLDEwMCw5MSwKKyAgICA5MCwxLDEwMCw5Miw5MCwyLDEwMSwyLDEwMSwxLDIzLDAsOTAsMywxMDAsNCwKKyAgICAxMDAsNSwxMzIsMCw5MCw0LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDUsMTAwLDgsCisgICAgMTAwLDksMTMyLDAsOTAsNiwxMDAsMTAsMTAwLDExLDEzMiwwLDkwLDcsMTAwLDEyLAorICAgIDEwMCwxMywxMzIsMCw5MCw4LDEwMCwxNCwxMDAsMTUsMTMyLDAsOTAsOSwxMDAsMTYsCisgICAgMTAwLDE3LDEzMiwwLDkwLDEwLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTEsMTAwLDIwLAorICAgIDEwMCwyMSwxMzIsMCw5MCwxMiwxMDAsOTMsMTAwLDIzLDEwMCwyNCwxMzIsMSw5MCwxMywKKyAgICAxMDEsMTQsMTAxLDEzLDEwNiwxNSwxMzEsMSw5MCwxNiwxMDAsMjUsMTA2LDE3LDEwMCwyNiwKKyAgICAxMDAsMjcsMTMxLDIsMTAwLDI4LDIzLDAsOTAsMTgsMTAxLDE5LDEwNiwyMCwxMDEsMTgsCisgICAgMTAwLDI3LDEzMSwyLDkwLDIxLDEwMCwyOSw5MCwyMiwxMDAsMzAsOTAsMjMsMTAwLDMxLAorICAgIDEwMywxLDkwLDI0LDEwMCwzMiwxMDMsMSw5MCwyNSwxMDEsMjUsNCwwLDkwLDI2LAorICAgIDkwLDI3LDEwMCw5NCwxMDAsMzMsMTAwLDM0LDE1NiwxLDEwMCwzNSwxMDAsMzYsMTMyLDMsCisgICAgOTAsMjgsMTAwLDM3LDEwMCwzOCwxMzIsMCw5MCwyOSwxMDAsMzksMTAwLDQwLDEzMiwwLAorICAgIDkwLDMwLDEwMCw0MSwxMDAsNDIsMTMyLDAsOTAsMzEsMTAwLDQzLDEwMCw0NCwxMzIsMCwKKyAgICA5MCwzMiwxMDAsNDUsMTAwLDQ2LDEzMiwwLDkwLDMzLDEwMCw0NywxMDAsNDgsMTMyLDAsCisgICAgOTAsMzQsMTAwLDk1LDEwMCw0OSwxMDAsNTAsMTMyLDEsOTAsMzUsMTAwLDk2LDEwMCw1MSwKKyAgICAxMDAsNTIsMTMyLDEsOTAsMzYsMTAwLDk3LDEwMCw1NCwxMDAsNTUsMTMyLDEsOTAsMzcsCisgICAgMTAwLDU2LDEwMCw1NywxMzIsMCw5MCwzOCwxMDEsMzksMTMxLDAsOTAsNDAsMTAwLDk4LAorICAgIDEwMCwzMywxMDEsNDAsMTAwLDU4LDE1NiwyLDEwMCw1OSwxMDAsNjAsMTMyLDMsOTAsNDEsCisgICAgNzEsMCwxMDAsNjEsMTAwLDYyLDEzMiwwLDEwMCw2MiwxMzEsMiw5MCw0Miw3MSwwLAorICAgIDEwMCw2MywxMDAsNjQsMTMyLDAsMTAwLDY0LDEzMSwyLDkwLDQzLDcxLDAsMTAwLDY1LAorICAgIDEwMCw2NiwxMzIsMCwxMDAsNjYsMTAxLDQzLDEzMSwzLDkwLDQ0LDcxLDAsMTAwLDY3LAorICAgIDEwMCw2OCwxMzIsMCwxMDAsNjgsMTMxLDIsOTAsNDUsNzEsMCwxMDAsNjksMTAwLDcwLAorICAgIDEzMiwwLDEwMCw3MCwxMDEsNDUsMTAxLDQ0LDEzMSw0LDkwLDQ2LDcxLDAsMTAwLDcxLAorICAgIDEwMCw3MiwxMzIsMCwxMDAsNzIsMTAxLDQ1LDEwMSw0MywxMzEsNCw5MCw0NywxMDMsMCwKKyAgICA5MCw0OCw3MSwwLDEwMCw3MywxMDAsNzQsMTMyLDAsMTAwLDc0LDEwMSw0NSwxMDEsNDMsCisgICAgMTMxLDQsOTAsNDksNzEsMCwxMDAsNzUsMTAwLDc2LDEzMiwwLDEwMCw3NiwxMzEsMiwKKyAgICA5MCw1MCw3MSwwLDEwMCw3NywxMDAsNzgsMTMyLDAsMTAwLDc4LDEzMSwyLDkwLDUxLAorICAgIDcxLDAsMTAwLDc5LDEwMCw4MCwxMzIsMCwxMDAsODAsMTMxLDIsOTAsNTIsNzEsMCwKKyAgICAxMDAsODEsMTAwLDgyLDEzMiwwLDEwMCw4MiwxMzEsMiw5MCw1MywxMDAsOTksMTAwLDgzLAorICAgIDEwMCw4NCwxMzIsMSw5MCw1NCwxMDAsODUsMTAwLDg2LDEzMiwwLDkwLDU1LDEwMCw4NywKKyAgICAxMDAsODgsMTMyLDAsOTAsNTYsMTAwLDg5LDEwMCw5MCwxMzIsMCw5MCw1NywxMDAsMzMsCisgICAgODMsMCw0MSwxMDAsOTcsOTQsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiwKKyAgICA5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwKKyAgICAxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwKKyAgICAxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwKKyAgICAzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsCisgICAgMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCisgICAgMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsCisgICAgMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiwKKyAgICA3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwKKyAgICAxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDIxOCwzLDExOSwxMDUsMTEwLDIxOCw2LDk5LDEyMSwKKyAgICAxMDMsMTE5LDEwNSwxMTAsMjE4LDYsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsMTE1LDYwLDAsMCwwLDExNiwwLDEwNiwxLDEwNiwyLDExNiwzLDEzMSwxLAorICAgIDExNCw0OCwxMTYsMCwxMDYsMSwxMDYsMiwxMTYsNCwxMzEsMSwxMTQsMzAsMTAwLDEsCisgICAgMTM3LDAsMTEwLDQsMTAwLDIsMTM3LDAsMTM1LDAsMTAyLDEsMTAwLDMsMTAwLDQsCisgICAgMTMyLDgsMTI1LDAsMTEwLDgsMTAwLDUsMTAwLDQsMTMyLDAsMTI1LDAsMTI0LDAsCisgICAgODMsMCw0MSw2LDc4LDkwLDEyLDgwLDg5LDg0LDcyLDc5LDc4LDY3LDY1LDgzLAorICAgIDY5LDc5LDc1LDExNSwxMiwwLDAsMCw4MCw4OSw4NCw3Miw3OSw3OCw2Nyw2NSwKKyAgICA4Myw2OSw3OSw3NSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDE5LDAsMCwwLDExNSwxMCwwLDAsMCwxMzYsMCwKKyAgICAxMTYsMCwxMDYsMSwxMDcsNiw4MywwLDQxLDEsMTIyLDUzLDg0LDExNCwxMTcsMTAxLAorICAgIDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LAorICAgIDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsCisgICAgMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsCisgICAgNDYsNDEsMiwyMTgsMyw5NSwxMTEsMTE1LDkwLDcsMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsCisgICAgMTEwLDE2OSwwLDQxLDEsMjE4LDMsMTA3LDEwMSwxMjEsMTE0LDQsMCwwLDAsMjUwLAorICAgIDM4LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsCisgICAgMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCw2MiwyMTgsMTEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LAorICAgIDk5LDk3LDExNSwxMDEsMzcsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKKyAgICAzNyw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAorICAgIDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMDgsOTcsCisgICAgMTIwLDk1LDk5LDk3LDExNSwxMDEsOTksMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw4MywwLDAsMCwxMTUsNCwwLDAsMCwKKyAgICAxMDAsMSw4MywwLDQxLDIsMTIyLDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsCisgICAgMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsCisgICAgMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsNzAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDcsMCwwLDAsNDEsMCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwyLDQxLDUsMjE4LDMsMTE1LDEyMSwxMTUsMjE4LDgsCisgICAgMTEyLDEwOCw5NywxMTYsMTAyLDExMSwxMTQsMTA5LDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LAorICAgIDExOSwxMDUsMTE2LDEwNCwyMTgsMjcsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksCisgICAgNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsCisgICAgODMsMjE4LDM1LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLAorICAgIDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDk1LDgzLAorICAgIDg0LDgyLDk1LDc1LDY5LDg5LDQxLDEsMTE0LDcsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMSwxMTQsNSwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsCisgICAgOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsCisgICAgMzAsMCwwLDAsMTE1LDE0LDAsMCwwLDAsMSwxMiwxLDEyLDEsNiwKKyAgICAyLDQsMiwxNCw0LDgsMywxMTQsMTMsMCwwLDAsOTksMSwwLDAsCiAgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLAotICAgIDIsMCw4Myw0MSwyLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LAotICAgIDExNSwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDAsMTI4LDAsMCw0MSwxLDExNCw0NSwwLAotICAgIDAsMCw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsOTQsMCwwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDExNCw0NiwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKLSAgICAwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzMSwwLDAsMCwKLSAgICAxMjQsMCwwLDExNSwxOCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwKLSAgICAwLDAsMTE2LDIsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwKLSAgICAyLDEyMiwzMCw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCwKLSAgICA0NiwxMDUsMCw2NCwwLDAsNDEsMywxMTQsMywwLDAsMCwyMTgsNiwxMDMsCi0gICAgMTAxLDExNiw5OSwxMTksMTAwLDExNCw0NSwwLDAsMCw0MSwxLDExNCwzNywwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw5OSwwLDAsCi0gICAgMCwxMTUsNiwwLDAsMCwwLDIsNiwxLDEyLDEsMTE0LDQ4LDAsMCwKLSAgICAwLDEwNSwxODIsMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsCi0gICAgMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwKLSAgICAxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMzEsMiwwLDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLAotICAgIDAsMTE2LDIsMCwxMDYsNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwKLSAgICAwLDEwNiw2LDAsNjYsMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LAotICAgIDQsMCwxMjEsNjEsMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywKLSAgICAwLDEzMSwyLDAsMTQzLDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEsODcsMTAwLDQsMCw4MSw4Miw4OCwxMTYsMiwKLSAgICAwLDEwNiwxMCwwLDEyNCwzLDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLAotICAgIDU5LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsMTg4LDAsMSwxLDEsMTIxLAotICAgIDE3LDAsMTE2LDIsMCwxMDYsMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywKLSAgICAxMTAsMTgsMCw0LDExNiwxMSwwLDEwNywxMCwwLDExNCwxODAsMCwxLDEsMSwKLSAgICA4OSwxMTAsMSwwLDg4LDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLAotICAgIDgzLDQxLDUsMTIyLDE2Miw2NiwxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwKLSAgICAzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwKLSAgICAxMTYsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiw5NywxMTYsMTExLDEwOSwxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsNjYsMTAxLDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksMTIwLAotICAgIDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsMTEwLAotICAgIDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwKLSAgICAxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsCi0gICAgMTE0LDk3LDExNCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LDExNiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCw0NiwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwKLSAgICAxLDAsMCw5MCwyLDExOSw5OCw3OCw0MSwxMywyMTgsNiwxMDIsMTExLDExNCwxMDksCi0gICAgOTcsMTE2LDIxOCwyLDEwNSwxMDAsMTE0LDMsMCwwLDAsOTAsNCwxMTEsMTEyLDEwMSwKLSAgICAxMTAsOTAsNiw3OSw5NSw2OSw4OCw2Nyw3Niw5MCw3LDc5LDk1LDY3LDgyLDY5LAotICAgIDY1LDg0LDkwLDgsNzksOTUsODcsODIsNzksNzgsNzYsODksMjE4LDMsOTUsMTA1LAotICAgIDExMSwyMTgsNiw3MCwxMDUsMTA4LDEwMSw3Myw3OSwyMTgsNSwxMTksMTE0LDEwNSwxMTYsMTAxLAotICAgIDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTE0LDQyLDAsMCwwLDkwLDYsCi0gICAgMTE3LDExMCwxMDgsMTA1LDExMCwxMDcsNDEsNiwxMTQsMzcsMCwwLDAsMjE4LDQsMTAwLAotICAgIDk3LDExNiw5NywxMTQsNDQsMCwwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsCi0gICAgMTA5LDExMiw5MCwyLDEwMiwxMDAsMjE4LDQsMTAyLDEwNSwxMDgsMTAxLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMyw5NSwxMTksMTE0LAotICAgIDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSwxMDYsMCwwLDAsMTE1LDI2LAotICAgIDAsMCwwLDAsNSwyNCwxLDksMSwzMywxLDMsMywyMSwxLDIwLAotICAgIDEsMjAsMSwxMywxLDMsMSwxNywxLDEzLDEsNSwxLDExNCw1NywwLAotICAgIDAsMCwxMDUsMjMsMTMsMCwwLDIzMywyLDAsMCwwLDExNCwxNSwwLDAsCi0gICAgMCwxMTUsMiwwLDAsMCwxMywxMCw5MCwxMSw5NSw5NSwxMTIsMTIxLDk5LDk3LAotICAgIDk5LDEwNCwxMDEsOTUsOTUsMTIyLDQsMTExLDExMiwxMTYsNDUsMTIyLDMsNDYsMTEyLDEyMSwKLSAgICAxMjIsNCw0NiwxMTIsMTIxLDk5LDc4LDIxOCwxMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCisgICAgMCwxMTUsMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTAwLDEsNjQsMCwKKyAgICAxMDYsMSwxMDAsMiwxMDAsMywxMzEsMiw4MywwLDQxLDQsMTIyLDQyLDY3LDExMSwKKyAgICAxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LDEwNSwxMTYsMzIsMTA1LAorICAgIDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsCisgICAgNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCw0NiwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwKKyAgICAxMjcsMywwLDIzMyw0LDAsMCwwLDIxOCw2LDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLAorICAgIDQxLDIsMjE4LDMsMTA1LDExMCwxMTYsMjE4LDgsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsNDEsMSwyMTgsMSwxMjAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMyw0NywwLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDE5LDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEwMCwxLAorICAgIDEzMSwyLDgzLDAsNDEsMiwxMjIsNDcsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsCisgICAgNTIsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwKKyAgICAxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwxMDUsCisgICAgMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTE0LDE1LDAsMCwwLDQxLDIsMTE0LDE2LAorICAgIDAsMCwwLDIxOCwxMCwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQxLAorICAgIDEsOTAsOSwxMDUsMTEwLDExNiw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE0LDk1LAorICAgIDEwOCwxMTEsMTEwLDEwMyw1MiwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LAorICAgIDIxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDMsMCwwLDAsNzEsMCwwLDAsMTE1LDIwLDAsMCwwLDExNiwwLAorICAgIDEwNiwxLDEwMCwxLDEwMCwyLDEzMiwwLDEyNCwwLDY4LDAsMTMxLDEsMTMxLDEsCisgICAgODMsMCw0MSwzLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwKKyAgICAxMDUsMTEwLDQwLDQxLDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDQsMCwwLDAsODMsMCwwLDAsMTE1LDI2LDAsMCwwLDEwMywKKyAgICAwLDEyNCwwLDkzLDE4LDEyNSwxLDEyNCwxLDExNCw0LDEyNCwxLDEwNiwwLDExNiwKKyAgICAxLDEzMSwxLDE0NSwyLDExMyw0LDgzLDAsMTE0LDQsMCwwLDAsNDEsMiwKKyAgICAyMTgsNiwxMTQsMTE1LDExNiwxMTQsMTA1LDExMiwyMTgsMTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSw0MSwyLDIxOCwyLDQ2LDQ4LDIxOCwKKyAgICA0LDExMiw5NywxMTQsMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDI1MCwxMCw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsCisgICAgNTksMCwwLDAsMTE1LDIsMCwwLDAsNiwxLDEyMiwzMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAorICAgIDQ2LDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2Miw0MSwyLDIxOCw4LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwxLDIxOCwKKyAgICAxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw1NywwLDAsMCwxMTUsNCwwLDAsMCwwLAorICAgIDIsMTAsMSwxMTQsMzAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsOTYsMCwKKyAgICAwLDAsMTE2LDAsMTE2LDEsMTMxLDEsMTAwLDEsMTA3LDIsMTE0LDM2LDEyNCwwLAorICAgIDEwNiwyLDExNiwzLDEzMSwxLDkyLDMsMTI1LDEsMTI1LDIsMTI1LDMsMTI0LDEsCisgICAgMTI0LDMsMTAyLDIsODMsMCwxMjAsNTAsMTE2LDQsMTI0LDAsMTMxLDEsNjgsMCwKKyAgICA5MywzOCwxMjUsNCwxMjQsNCwxMTYsMSwxMDcsNiwxMTQsNDYsMTI0LDAsMTA2LDUsCisgICAgMTI0LDQsMTAwLDEsMTAwLDIsMTQxLDIsOTIsMiwxMjUsMSwxMjUsMywxMjQsMSwKKyAgICAxMjQsMywxMDIsMiw4MywwLDExMyw0Niw4NywwLDEwMCwzLDEyNCwwLDEwMiwyLAorICAgIDgzLDAsNDEsNCwxMjIsMzIsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDExNSwxMTIsCisgICAgMTA4LDEwNSwxMTYsNDAsNDEsNDYsMjMzLDEsMCwwLDAsNDEsMSw5MCw4LDEwOSwKKyAgICA5NywxMjAsMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMCw0MSw2LDIxOCwzLDEwOCwxMDEsMTEwLAorICAgIDExNCwyMywwLDAsMCwyMTgsMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMTE0LDI3LDAsMCwwLDIxOCw4LDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsCisgICAgMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsNDEsNSwyMTgsNCwxMTIsOTcsMTE2LDEwNCwKKyAgICA5MCw1LDEwMiwxMTQsMTExLDExMCwxMTYsMjE4LDEsOTUsMjE4LDQsMTE2LDk3LDEwNSwxMDgsCisgICAgMTE0LDE4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsCisgICAgMTE2LDYzLDAsMCwwLDExNSwxNiwwLDAsMCwwLDIsMTIsMSwxNiwxLAorICAgIDgsMSwxNCwxLDgsMSwxOCwxLDEyLDEsMTE0LDQwLDAsMCwwLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEzMSwKKyAgICAxLDgzLDAsNDEsMSwxMjIsMTI2LDgzLDExNiw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzcsOTcsMTAwLDEwMSwzMiwKKyAgICA5NywzMiwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMDksOTcsMTA3LDEwMSwzMiwxMDUsMTE2LDMyLDEwMSwKKyAgICA5NywxMTUsMTA1LDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsCisgICAgMTAxLDMyLDEwNSwxMTAsMzIsMTAxLDEyMCwxMTIsMTAxLDExNCwxMDUsMTA5LDEwMSwxMTAsMTE2LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMzIsMTE1LDExNiw5NywxMTYsMzIsMTE0LDEwMSwxMTUsMTE3LDEwOCwxMTYsMTE1LDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDQxLDIsMTE0LDMsMCwwLDAsOTAsNCwxMTUsMTE2LAorICAgIDk3LDExNiw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDExNiw5NywxMTYsNzUsMCwwLDAsMTE1LDIsMCwwLDAsMCw3LDExNCwKKyAgICA0MSwwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNDgsMCwwLDAsMTIxLDEyLAorICAgIDExNiwwLDEyNCwwLDEzMSwxLDEyNSwyLDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwKKyAgICAxMDcsMTAsMTE0LDMyLDEsMCwxLDAsMSwwLDEwMCwxLDgzLDAsODgsMCwKKyAgICAxMjQsMiwxMDYsMiwxMDAsMiw2NCwwLDEyNCwxLDEwNywyLDgzLDAsNDEsMywKKyAgICAxMjIsNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwKKyAgICAxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsCisgICAgMjE4LDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTAxLDQxLDMsMTE0LDM3LDAsMCwwLDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCwKKyAgICA5LDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLDExMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDg1LDAsMCwKKyAgICAwLDExNSwxMCwwLDAsMCwwLDIsMiwxLDEyLDEsMTQsMSw2LDEsCisgICAgMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwKKyAgICAwLDEyNCwwLDEwMCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsMzEsODIsMTAxLDExMiwKKyAgICAxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLDEyOCwwLAorICAgIDAsNDEsMSwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDk0LDAsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMiwxMTQsNDYsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjIsMCwwLDAsMTI0LDAsMTE1LDEyLDExNiwwLDEwNiwxLDEzMSwwLAorICAgIDEyNSwwLDExNiwyLDEyNCwwLDEwMCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsMzAsCisgICAgODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAwLDEwNSwxMTQsNDYsMTA1LDAsCisgICAgNjQsMCwwLDQxLDMsMTE0LDMsMCwwLDAsMjE4LDYsMTAzLDEwMSwxMTYsOTksCisgICAgMTE5LDEwMCwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsOTksMCwwLDAsMTE1LDYsCisgICAgMCwwLDAsMCwyLDQsMSw4LDEsMTE0LDQ4LDAsMCwwLDIzMywxODIsCisgICAgMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsCisgICAgMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE2MiwwLDAsMCwxMDAsMSwxMDYsCisgICAgMCwxMjQsMCwxMTYsMSwxMjQsMCwxMzEsMSwxMzEsMiwxMjUsMywxMTYsMiwxMDYsCisgICAgMywxMjQsMywxMTYsMiwxMDYsNCwxMTYsMiwxMDYsNSw2NiwwLDExNiwyLDEwNiwKKyAgICA2LDY2LDAsMTI0LDIsMTAwLDIsNjQsMCwxMzEsMywxMjUsNCwxMjEsNTAsMTE2LAorICAgIDcsMTA2LDgsMTI0LDQsMTAwLDMsMTMxLDIsMTQzLDE2LDEyNSw1LDEyNCw1LDEwNiwKKyAgICA5LDEyNCwxLDEzMSwxLDEsMCw4NywwLDEwMCw0LDgxLDAsODIsMCw4OCwKKyAgICAwLDExNiwyLDEwNiwxMCwxMjQsMywxMjQsMCwxMzEsMiwxLDAsODcsMCwxMTAsCisgICAgNTgsNCwwLDExNiwxMSwxMDcsMTAsMTE0LDE1NiwxLDAsMSwwLDEsMCwxMjEsCisgICAgMTQsMTE2LDIsMTA2LDEyLDEyNCwzLDEzMSwxLDEsMCw4NywwLDExMCwyMCw0LAorICAgIDAsMTE2LDExLDEwNywxMCwxMTQsMTQ4LDEsMCwxLDAsMSwwLDg5LDAsMTEwLAorICAgIDIsODgsMCwxMzAsMCw4OSwwLDExMCwyLDg4LDAsMTAwLDQsODMsMCw0MSwKKyAgICA1LDEyMiwxNjIsNjYsMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwKKyAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgOTcsMTE2LDExMSwxMDksMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLDMyLDMyLAorICAgIDY2LDEwMSwzMiwxMTIsMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDQsCisgICAgOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LAorICAgIDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCw5OSwxMTcsCisgICAgMTE0LDExNCwxMDEsMTEwLDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywKKyAgICAxMTQsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsMTAxLDEwOSwKKyAgICAxMTIsMTE2LDEwMSwxMDAsNDYsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsMSwwLAorICAgIDAsOTAsMiwxMTksOTgsNzgsNDEsMTMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwKKyAgICAyMTgsMiwxMDUsMTAwLDExNCwzLDAsMCwwLDkwLDQsMTExLDExMiwxMDEsMTEwLDkwLAorICAgIDYsNzksOTUsNjksODgsNjcsNzYsOTAsNyw3OSw5NSw2Nyw4Miw2OSw2NSw4NCwKKyAgICA5MCw4LDc5LDk1LDg3LDgyLDc5LDc4LDc2LDg5LDIxOCwzLDk1LDEwNSwxMTEsMjE4LAorICAgIDYsNzAsMTA1LDEwOCwxMDEsNzMsNzksMjE4LDUsMTE5LDExNCwxMDUsMTE2LDEwMSwyMTgsNywKKyAgICAxMTQsMTAxLDExMiwxMDgsOTcsOTksMTAxLDExNCw0MiwwLDAsMCw5MCw2LDExNywxMTAsCisgICAgMTA4LDEwNSwxMTAsMTA3LDQxLDYsMTE0LDM3LDAsMCwwLDIxOCw0LDEwMCw5NywxMTYsCisgICAgOTcsMTE0LDQ0LDAsMCwwLDkwLDgsMTEyLDk3LDExNiwxMDQsOTUsMTE2LDEwOSwxMTIsCisgICAgOTAsMiwxMDIsMTAwLDIxOCw0LDEwMiwxMDUsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsOTUsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksMTA2LDAsMCwwLDExNSwyNiwwLDAsCisgICAgMCwwLDUsMTYsMSw2LDEsMjYsMSwyLDMsMTQsMSwyMCwxLDE2LAorICAgIDEsMTQsMSwyLDEsMTQsMSwxNCwxLDYsMSwxMTQsNTgsMCwwLDAsCisgICAgMTA1LDUwLDEzLDAsMCwyMzMsMiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE1LAorICAgIDIsMCwwLDAsMTMsMTAsOTAsMTEsOTUsOTUsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDk1LDEyMiw0LDExMSwxMTIsMTE2LDQ1LDEyMiwzLDQ2LDExMiwxMjEsMTIyLDQsCisgICAgNDYsMTEyLDEyMSw5OSw3OCw0MSwxLDIxOCwxMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCiAgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMSwwLDAsMCwxMSwwLAotICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSw4NywxLDAsMCwxMjQsCi0gICAgMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsNzYsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTAwLDIsMCwxMTYsMiwwLDEzMSwyLDAsMSwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTA3LDksMCwxMTQsNTgsMCwxMDAsMywwLDEyNSwzLDAsMTE2LDMsMCwKLSAgICAxMjQsMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDExNCw3MCwwLDEwMCwKLSAgICA0LDAsMTEwLDMsMCwxMDAsNSwwLDEyNSwyLDAsMTE2LDQsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDUsMCwxMjQsNSwwLAotICAgIDEwNiw1LDAsMTAwLDYsMCwxMzEsMSwwLDkyLDMsMCwxMjUsNiwwLDEyNSwKLSAgICA3LDAsMTI1LDgsMCwxMTYsNiwwLDEwNiw3LDAsMTA2LDgsMCwxMjUsOSwKLSAgICAwLDEyNCw5LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxNTQsMCwxMTYsOSwwLAotICAgIDEwMCw3LDAsMTMxLDEsMCwxMzAsMSwwLDEwMCw0LDAsMTA2LDEwLDAsMTI0LAotICAgIDYsMCwxMTQsMTcyLDAsMTI0LDYsMCwxMTAsMywwLDEyNCw4LDAsMTI0LDcsCi0gICAgMCwxMjQsOSwwLDEwMywzLDAsMTMxLDEsMCwxMjUsMTAsMCwxMjQsMiwwLAotICAgIDEwMCwxLDAsMTA3LDgsMCwxMTQsMjQxLDAsMTE2LDYsMCwxMDYsMTEsMCwxMDYsCi0gICAgMTIsMCwxMDAsOCwwLDEwNywyLDAsMTE0LDIyOSwwLDEwMCw0LDAsMTI1LDIsCi0gICAgMCwxMTAsMTIsMCwxMTYsNiwwLDEwNiwxMSwwLDEwNiwxMiwwLDEyNSwyLDAsCi0gICAgMTE2LDEzLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMDAsCi0gICAgNCwwLDEwNywzLDAsMTE0LDYzLDEsMTI0LDIsMCwxMDYsMTQsMCwxMzEsMCwKLSAgICAwLDExNSw0MiwxLDExNiwxNSwwLDEwMCw5LDAsMTA2LDE2LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMDAsMTAsMCwxMDYsMTYsMCwxMjQsCi0gICAgMTAsMCwxMTYsMTcsMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDEwLDAsMTE2LDE4LAotICAgIDAsMTI0LDQsMCwxMTYsMTksMCwxMjQsMTAsMCwxMTYsMjAsMCwxMDAsOCwwLAotICAgIDI1LDIzLDEzMSwzLDAsODMsNDEsMTEsOTcsMjU0LDIsMCwwLDcxLDEwNSwxMTgsCi0gICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LAotICAgIDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwKLSAgICAxMTUsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLAotICAgIDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsNDYsCi0gICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsCi0gICAgMTE2LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLAotICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE5LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKLSAgICAxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExMiw5NywKLSAgICAxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiw5OSwxMTEsMTEwLDExNiwxMTQsMTExLDEwOCwxMTUsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMDEsMTE1LDExNywxMDksMTAxLDEwMCwzMiwxMTEsMTEyLAotICAgIDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsCi0gICAgMzIsMTExLDEwMiwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsNzMsMTAyLDMyLDM5LDExMSwKLSAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTE2LAotICAgIDExNCwxMDUsMTEwLDEwMywzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5NywKLSAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTYsOTcsMTA3LDEwMSwxMTAsCi0gICAgMzIsOTcsMTEwLDEwMCwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMTEsCi0gICAgMzIsOTgsMTAxLDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LAotICAgIDMyLDQwLDEwMSwxMDgsMTE1LDEwMSwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLAotICAgIDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLAotICAgIDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLAotICAgIDEwMCw0NiwzMiw3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKLSAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSwKLSAgICA0NCwxMCwzMiwzMiwzMiwzMiw5NywzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMTgsOTcsMTA4LAotICAgIDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsOTcsMTA5LDEwMSwzMiw5NywKLSAgICAxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksCi0gICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTIxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLAotICAgIDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsOTcsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTE4LAotICAgIDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLAotICAgIDExMCwxMTYsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLAotICAgIDM5LDQ5LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsCi0gICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwKLSAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywKLSAgICAxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDcwLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLAotICAgIDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNTksMzIsMTE3LDExNSwxMDEsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTEwLDExNSwKLSAgICAxMTYsMTAxLDk3LDEwMCwxMjIsNTAsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKLSAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTExLDExNCwzMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsCi0gICAgMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMTQsMzIsMCwwLDAsMTE0LDMxLDAsCi0gICAgMCwwLDIxOCwxLDQ2LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwKLSAgICAxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMjMzLDAsMCwwLDAsCi0gICAgMTIyLDI0LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LAotICAgIDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMTIyLDcsMTIzLDEyNSw0NiwxMjMsCi0gICAgMTI1LDEyMywxMjUsNDEsMjEsMjE4LDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LAotICAgIDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwxOCw2OCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMjE4LDksODQsMTIxLDExMiwxMDEsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDExNCw0MCwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LAotICAgIDgsMCwwLDAsMjE4LDE0LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LAotICAgIDExNiwxMDUsMTExLDExMCwyMTgsOSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMjE4LAotICAgIDE5LDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsMjgsMCwwLDAsMjE4LDUsMTAyLDEwOCw5NywxMDMsMTE1LAotICAgIDIxOCw4LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMjE4LDMsMTE1LDExNiwxMTQsMjE4LAotICAgIDcsMTA1LDExNSw5NywxMDgsMTEwLDExNywxMDksMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsNDksMCwwLDAsMjE4LDQsOTUsNzksODAsODQsMTE0LAotICAgIDMwLDAsMCwwLDIxOCw4LDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDIxOCwxNywKLSAgICA2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSwKLSAgICA4Myw0MSwxMSwxMTQsMzcsMCwwLDAsOTAsMTQsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LAotICAgIDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMTE0LDU5LDAsMCwwLDIxOCw3LDEwOSwKLSAgICAxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIxOCw0LDEwNCwxMDEsOTcsMTAwLDExNCwzOSwwLDAsCi0gICAgMCw5MCw0LDk4LDk3LDExNSwxMDEsMjE4LDMsMTE1LDEwMSwxMTIsMjE4LDQsMTE0LDEwMSwKLSAgICAxMTUsMTE2LDkwLDMsMTE2LDk3LDEwMyw5MCwxNSw5NywxMDgsMTA5LDExMSwxMTUsMTE2LDk1LAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsCi0gICAgMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyNTQsMCwwLDAsMTE1LDQ2LAotICAgIDAsMCwwLDAsMTgsMTIsMSw5LDEsNywxLDEyLDEsNiwxLDEyLAotICAgIDEsMTgsMSwxOCwxLDI0LDEsMTIsMSwxMiwxLDEyLDEsMzYsMSwxMiwKLSAgICAxLDE4LDEsOSwyLDEyLDEsMTIsMSwxMiwxLDEyLDEsMjEsMSwyMSwKLSAgICAxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsOCwKLSAgICAwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw2MiwxLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAotICAgIDMwLDAsMTE2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTYsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwwLAotICAgIDExNiw0LDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwKLSAgICAzLDAsMTI0LDMsMCwxMTYsNSwwLDEwNywzLDAsMTE0LDEwMiwwLDExNiw2LAotICAgIDAsMTAwLDMsMCwxMDYsNywwLDExNiw1LDAsMTI0LDAsMCwxMzEsMiwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwNiw4LDAsMTAwLDQsMCwxMzEsCi0gICAgMSwwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMTEsMCwxMDcsNywwLDExNCwxNTMsCi0gICAgMCwxMTYsNiwwLDEwMCw3LDAsMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDExMCwxMjUsMCwxMjQsNCwwLDEwMCw2LDAsMTA3LAotICAgIDIsMCwxMTQsMjIsMSwxMjQsMiwwLDEwNiw5LDAsMTAwLDQsMCwxMDAsNSwKLSAgICAwLDEzMSwyLDAsMTAwLDEyLDAsMjUsMTI1LDUsMCwxMjQsNSwwLDEwNiwxMCwKLSAgICAwLDExNiwxMSwwLDEzMSwxLDAsMTE1LDIyMywwLDExNiw2LDAsMTAwLDgsMCwKLSAgICAxMDYsNywwLDExNiwxMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwKLSAgICA1LDAsMTE2LDEyLDAsMTE2LDExLDAsMTMxLDEsMCwxMDAsMSwwLDEzMywyLAotICAgIDAsMjUsMTI1LDYsMCwxMjQsNiwwLDEwNiwxMywwLDEzMSwwLDAsMTE1LDIyLAotICAgIDEsMTE2LDYsMCwxMDAsOSwwLDEwNiw3LDAsMTI0LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwNiwxNCwwLDEwMCw0LDAsMTMxLAotICAgIDEsMCwxMDAsMTAsMCwyNSwxMjUsNywwLDExNiwxNSwwLDEyNCwxLDAsMTI0LAotICAgIDcsMCwxMTYsMTYsMCwxMDAsMTAsMCwyNSwyMywxMzEsMiwwLDgzLDQxLDEzLAotICAgIDk3LDExMCwxLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLDk5LDQ2LDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LDExMiwxMjEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsNDYsCi0gICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsNTksCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMzIsMTE2LDExMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiwzMiw3MywxMDIsCi0gICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAwLDExMSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDk5LDExMSwxMTAsMTAyLDExMSwxMTQsMTA5LDMyLDExNiwxMTEsMzIsODAsNjksCi0gICAgODAsMzIsNTEsNDksNTIsNTUsNDcsNTIsNTYsNTYsMzIsMTAyLDExMSwxMTQsMTA5LDk3LAotICAgIDExNiw0NCwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNSwKLSAgICAxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDMyLDczLDEwMiwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsCi0gICAgMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LAotICAgIDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNzgsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiwKLSAgICA5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwxMjIsMzcsMTIzLDEyNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5OCwxMTEsMTE2LDExNiwxMTEsMTA5LDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsCi0gICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDExNCw2MCwwLDAsMCwxMTQsNTgsMCwwLDAsMjMzLDMsMCwwLDAsCi0gICAgMTIyLDMzLDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsCi0gICAgNTAsMzIsMTExLDExNCwzMiw1MSwzMiwxMDAsMTExLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwxMjIsNTcsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwKLSAgICAxMTYsOTcsMTE0LDExNiwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDUyLAotICAgIDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LAotICAgIDExMCwzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTgsCi0gICAgOTcsMTA4LDExNywxMDEsMTE0LDYxLDAsMCwwLDYyLDIsMCwwLDAsMTE0LDU4LAotICAgIDAsMCwwLDExNCw4MiwwLDAsMCwyMzMsMjU0LDI1NSwyNTUsMjU1LDQxLDE3LDExNCwKLSAgICA4LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDY4LAotICAgIDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDczLDAsCi0gICAgMCwwLDExNCw0OSwwLDAsMCwyMTgsNSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDM2LAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsNzQsMCwwLDAsMTE0LDMzLDAsCi0gICAgMCwwLDExNCw3MiwwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNCwzMCwwLDAsMCwyMTgsMTUsODMsNzksODUsODIsNjcsNjksOTUsCi0gICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsOCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDc4LDAsMCwwLDkwLDE2LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTAsNywxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTAsCi0gICAgOSwxMDAsMTExLDExNiw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDU5LDAsMCwwLDkwLAotICAgIDksMTExLDExMiwxMTYsOTUsMTA4LDEwMSwxMTgsMTAxLDEwOCw5MCwxMyw5OCw5NywxMTUsMTAxLAotICAgIDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSw0MiwxLDAsMCwxMTUsCi0gICAgNDQsMCwwLDAsMCw5LDE4LDEsMTIsMSwxOCwxLDE4LDEsMTIsMSwKLSAgICA5LDEsMTUsMSwxNSwxLDEyLDEsOSwxLDE1LDEsMTIsMSwyMiwxLAotICAgIDE1LDEsOSwxLDEyLDEsMjIsMSwxMiwxLDksMSwxMiwxLDE5LDEsCi0gICAgMTE0LDg3LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxNjQsMCwwLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMiwKLSAgICAwLDEwMCwyLDAsODMsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsMTMxLDEsCi0gICAgMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMiwxMTUsODEsMCwxMjQsMywwLDEwNiwyLDAsMTMxLDAsMCwxMDAsNywwLAotICAgIDEwMCw4LDAsMTMzLDIsMCwyNSwxMDAsNiwwLDEwNywzLDAsMTE0LDg1LDAsCi0gICAgMTI0LDAsMCw4MywxMjEsMTYsMCwxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwKLSAgICAxMjUsNCwwLDg3LDExMCw0MCwwLDQsMTE2LDQsMCwxMTYsNSwwLDEwMiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDE0MywwLDEsMSwxLDEyNCwwLDAsMTAwLDIsMCwKLSAgICAxMDAsOSwwLDEzMywyLDAsMjUsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LDExNiwKLSAgICA2LDAsMTI0LDQsMCwxMzEsMSwwLDExNCwxNjAsMCwxMjQsNCwwLDgzLDEyNCwKLSAgICAwLDAsODMsNDEsMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsCi0gICAgMTAxLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LAotICAgIDExNCwxMDEsMTA4LDEyMSwzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwKLSAgICAxMDAsMTE1LDQ1LDk5LDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwKLSAgICAzMiwxMDIsMTExLDExNCwxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw5NSw2OSwxMjAsMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgODcsMTA1LDExNiwxMDQsNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLAotICAgIDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE0LDYxLDAsMCwwLDc4LDExNCw2MCwwLDAsMCwxMTQsODIsCi0gICAgMCwwLDAsMTE0LDMxLDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsCi0gICAgMjU1LDIzMywyNTUsMjU1LDI1NSwyNTUsMTE0LDg5LDAsMCwwLDQxLDcsMTE0LDMzLDAsCi0gICAgMCwwLDExNCwzNCwwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4NywKLSAgICAwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw0NiwwLAotICAgIDAsMCw0MSw1LDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCwxMTQsODAsMCwwLDAsMTE0LDM4LDAsMCwwLDkwLDksMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKLSAgICAxMDEsMTAyLDEwNSwxMDgsMTAxLDc1LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsCi0gICAgMTgsMSw0LDEsMjQsMSwzNSwxLDQsMSwzLDEsMTYsMSwxOSwxLAotICAgIDIxLDEsMTE0LDkzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw5MiwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTE2LDEsMCwxMTYsMiwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMTQsNTksMCwxMjEsMTQsMCwxMTYsMywwLDEyNCwwLDAsMTMxLAotICAgIDEsMCw4Myw4NywxMTMsODgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDU1LAotICAgIDAsMSwxLDEsODksMTEzLDg4LDAsODgsMTEwLDI5LDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDExNiwxLDAsMTE2LDUsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDg0LAotICAgIDAsMTI0LDAsMCw4MywxMDAsMCwwLDgzLDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICA0MSw2LDIxOCw4LDEwMSwxMTAsMTAwLDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywKLSAgICAxMTIsMTA4LDEwMSwxMTQsODYsMCwwLDAsMTE0LDgxLDAsMCwwLDExNCw2OCwwLAotICAgIDAsMCwxMTQsNzYsMCwwLDAsNDEsMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDExLDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk0LAotICAgIDEsMCwwLDExNSwxNiwwLDAsMCwwLDEsMjEsMSwzLDEsMTQsMSwKLSAgICAxMywxLDgsMSwyMSwxLDQsMiwxMTQsOTcsMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDYwLDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDEwNiwxLDAsMTI1LDEsMCw4NywxMTAsMjQsMCw0LDExNiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDQ1LDAsMSwxLDEsMTAwLDEsMCwxMjUsMSwwLAotICAgIDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMiwwLDc5LDEyNSwxLDAsMTI0LAotICAgIDEsMCw4Myw0MSwzLDEyMiw1MSw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwKLSAgICAxMTUsMTA1LDExMSwxMTAsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDk4LDEyMSwxMTYsMTAxLAotICAgIDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMTgyLDEsMCwwLDIzMywKLSAgICAxMjgsMCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsMTE0LDQzLDAsMCwwLAotICAgIDExNCw0MiwwLDAsMCw0MSwyLDExNCwzNywwLDAsMCwxMTQsNDQsMCwwLAorICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwyNDQsMCwwLDAsMTI0LAorICAgIDEsMTAwLDEsMTA3LDksMTE0LDUyLDExNiwwLDEwNiwxLDEwMCwyLDExNiwyLDEzMSwKKyAgICAyLDEsMCwxMjQsMiwxMDAsMSwxMDcsOSwxMTQsNDAsMTAwLDMsMTI1LDMsMTE2LAorICAgIDMsMTI0LDMsMTMxLDEsMTMwLDEsMTI0LDEsMTE0LDQ4LDEwMCw0LDExMCwyLDEwMCwKKyAgICA1LDEyNSwyLDExNiw0LDEwNiw1LDEyNCwwLDEzMSwxLDEyNSwwLDExNiw2LDEyNCwKKyAgICAwLDEzMSwxLDkyLDIsMTI1LDQsMTI1LDUsMTI0LDUsMTA2LDcsMTAwLDYsMTMxLAorICAgIDEsOTIsMywxMjUsNiwxMjUsNywxMjUsOCwxMTYsOCwxMDYsOSwxMDYsMTAsMTI1LAorICAgIDksMTI0LDksMTAwLDEsMTA3LDgsMTE0LDExNCwxMTYsMTEsMTAwLDcsMTMxLDEsMTMwLAorICAgIDEsMTAwLDQsMTA2LDEyLDEyNCw2LDExNCwxMjYsMTI0LDYsMTEwLDIsMTI0LDgsMTI0LAorICAgIDcsMTI0LDksMTAzLDMsMTMxLDEsMTI1LDEwLDEyNCwyLDEwMCwxLDEwNyw4LDExNCwKKyAgICAxNzIsMTE2LDgsMTA2LDEzLDEwNiwxNCwxMDAsOCwxMDcsMiwxMTQsMTY0LDEwMCw0LDEyNSwKKyAgICAyLDExMCw4LDExNiw4LDEwNiwxMywxMDYsMTQsMTI1LDIsMTE2LDE1LDEyNCwyLDEzMSwKKyAgICAxLDEyNSwyLDEyNCwyLDEwMCw0LDEwNywzLDExNCwyMjQsMTI0LDIsMTA2LDE2LDEzMSwKKyAgICAwLDExNSwyMTAsMTE2LDE3LDEwMCw5LDEwNiwxOCwxMjQsMiwxMzEsMSwxMzEsMSwxMzAsCisgICAgMSwxMDAsMTAsMTA2LDE4LDEyNCwxMCwxMTYsMTksMTI0LDIsMTMxLDMsMTI1LDEwLDExNiwKKyAgICAyMCwxMjQsNCwxMTYsMjEsMTI0LDEwLDExNiwyMiwxMDAsOCwyNSwwLDIzLDAsMTMxLAorICAgIDMsODMsMCw0MSwxMSw5NywyNTQsMiwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLAorICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwKKyAgICAxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwKKyAgICAxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwKKyAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiw0NiwxMTIsMTIxLDk5LAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiw5NywxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDExMSwxMTIsMTE2LAorICAgIDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTEyLDk3LDExNCw5NywxMDksCisgICAgMTAxLDExNiwxMDEsMTE0LDMyLDk5LDExMSwxMTAsMTE2LDExNCwxMTEsMTA4LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsMTE0LDEwMSwxMTUsMTE3LDEwOSwxMDEsMTAwLDMyLDExMSwxMTIsMTE2LDEwNSwxMDksCisgICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTEsMTAyLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsCisgICAgMTAzLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExNCwxMDMsMTE3LAorICAgIDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNiw5NywxMDcsMTAxLDExMCwzMiw5NywxMTAsCisgICAgMTAwLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsCisgICAgMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsNDAsMTAxLAorICAgIDEwOCwxMTUsMTAxLDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwKKyAgICAxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsCisgICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAorICAgIDczLDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDEwLDMyLAorICAgIDMyLDMyLDMyLDk3LDMyLDg0LDExNCwxMTcsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDk3LDExNSwzMiwxMTUsCisgICAgMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LAorICAgIDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMSwxMDksMTEyLAorICAgIDExNiwxMjEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE5LDEwNCwKKyAgICAxMDUsMTA4LDEwMSwzMiw5NywzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTgsOTcsMTA4LDExNywKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwKKyAgICAxMTYsMTExLDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMzksNDksMzksCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsCisgICAgMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsNzAsMTE2LDEwNCwxMDEsMzIsMTAwLAorICAgIDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LAorICAgIDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKKyAgICA5OSw5NywxMTYsMTAxLDEwMCw1OSwzMiwxMTcsMTE1LDEwMSwzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCisgICAgMTAwLDEyMiw1MCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMTEsMTE0LDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDExNCwzMiwwLDAsMCwxMTQsMzEsMCwwLDAsMjE4LAorICAgIDEsNDYsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsCisgICAgMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwyMzMsMCwwLDAsMCwxMjIsMjQsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTEyLDEwNCw5NywKKyAgICAxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwxMjIsNywxMjMsMTI1LDQ2LDEyMywxMjUsMTIzLDEyNSwKKyAgICA0MSwyMywyMTgsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LAorICAgIDk3LDExNCwxMTAsMjE4LDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywyMTgsOSw4NCwxMjEsMTEyLDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDMsMCwwLDAsMjE4LDYsMTAyLDExNSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgNDAsMCwwLDAsMTE0LDM0LDAsMCwwLDExNCw4LDAsMCwwLDIxOCwxNCwKKyAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMjE4LDksCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDI4LAorICAgIDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsOCwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw3LDEwNSwxMTUsOTcsMTA4LDExMCwKKyAgICAxMTcsMTA5LDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLAorICAgIDAsMCwwLDIxOCw0LDk1LDc5LDgwLDg0LDExNCwzMCwwLDAsMCwyMTgsOCwKKyAgICA5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwyMTgsMTcsNjYsODksODQsNjksNjcsNzksCisgICAgNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMTEsMTE0LDM3LDAsCisgICAgMCwwLDkwLDE0LDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwKKyAgICAxMDAsMTAxLDExNCw2MCwwLDAsMCwyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKKyAgICAyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzksMCwwLDAsOTAsNCw5OCw5NywxMTUsCisgICAgMTAxLDIxOCwzLDExNSwxMDEsMTEyLDIxOCw0LDExNCwxMDEsMTE1LDExNiw5MCwzLDExNiw5NywKKyAgICAxMDMsOTAsMTUsOTcsMTA4LDEwOSwxMTEsMTE1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDE3LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNiwxLDAsMCwxMTUsNDgsMCwwLDAsMCwxOCw4LAorICAgIDEsNiwxLDYsMSw4LDEsNCwxLDgsMSwxMiwxLDEwLDEsMTIsCisgICAgMSwxNiwxLDgsMSw4LDEsOCwxLDI0LDEsOCwxLDEyLDEsNiwKKyAgICAyLDgsMSw4LDEsOCwxLDgsMSwxNCwxLDE0LDEsMTE0LDgzLDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIzMCwwLDAsMCwxMTYsMCwxMDYsMSwKKyAgICAxMDYsMiwxMDAsMSwxMDcsOCwxMTQsMjAsMTE2LDMsMTAwLDIsMTMxLDEsMTMwLDEsCisgICAgMTE2LDQsMTA2LDUsMTI0LDAsMTMxLDEsMTI1LDAsMTE2LDYsMTI0LDAsMTMxLDEsCisgICAgOTIsMiwxMjUsMSwxMjUsMiwxMTYsNiwxMjQsMSwxMzEsMSw5MiwyLDEyNSwxLAorICAgIDEyNSwzLDEyNCwzLDExNiw3LDEwNywzLDExNCw3OCwxMTYsOCwxMDAsMywxMDYsOSwKKyAgICAxMTYsNywxMjQsMCwxMzEsMiwxMzEsMSwxMzAsMSwxMjQsMiwxMDYsMTAsMTAwLDQsCisgICAgMTMxLDEsMTI1LDQsMTI0LDQsMTAwLDExLDEwNyw3LDExNCwxMTIsMTE2LDgsMTAwLDcsCisgICAgMTA2LDksMTI0LDIsMTMxLDEsMTMxLDEsMTMwLDEsMTEwLDg2LDEyNCw0LDEwMCw2LAorICAgIDEwNywyLDExNCwxOTgsMTI0LDIsMTA2LDExLDEwMCw0LDEwMCw1LDEzMSwyLDEwMCwxMiwKKyAgICAyNSwwLDEyNSw1LDEyNCw1LDEwNiwxMiwxMTYsMTMsMTMxLDEsMTE1LDE2MCwxMTYsOCwKKyAgICAxMDAsOCwxMDYsOSwxMTYsMTMsMTMxLDEsMTMxLDEsMTMwLDEsMTI0LDUsMTE2LDE0LAorICAgIDExNiwxMywxMzEsMSwxMDAsMSwxMzMsMiwyNSwwLDEyNSw2LDEyNCw2LDEwNiwxNSwKKyAgICAxMzEsMCwxMTUsMTk4LDExNiw4LDEwMCw5LDEwNiw5LDEyNCw1LDEzMSwxLDEzMSwxLAorICAgIDEzMCwxLDEyNCwyLDEwNiwxNiwxMDAsNCwxMzEsMSwxMDAsMTAsMjUsMCwxMjUsNywKKyAgICAxMTYsMTcsMTI0LDEsMTI0LDcsMTE2LDE4LDEwMCwxMCwyNSwwLDIzLDAsMTMxLDIsCisgICAgODMsMCw0MSwxMyw5NywxMTAsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwKKyAgICA5OSw0NiwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwKKyAgICA0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLAorICAgIDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsCisgICAgMzIsMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsCisgICAgMTExLDMyLDgwLDY5LDgwLDMyLDUxLDQ5LDUyLDU1LDQ3LDUyLDU2LDU2LDMyLDEwMiwKKyAgICAxMTEsMTE0LDEwOSw5NywxMTYsNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwKKyAgICA0NiwzMiw3MywxMDIsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLAorICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTIyLDM3LAorICAgIDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMTQsNjEsMCwwLDAsMTE0LDU5LDAsMCwwLDIzMywKKyAgICAzLDAsMCwwLDEyMiwzMywxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMTExLAorICAgIDExMCwxMDgsMTIxLDMyLDUwLDMyLDExMSwxMTQsMzIsNTEsMzIsMTAwLDExMSwxMTYsMTE1LDMyLAorICAgIDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDU3LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiwxMTUsMTE2LDk3LDExNCwxMTYsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDEyMiw1MiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiw5NywxMTAsMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwKKyAgICAxMDUsOTksMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDExNCw2MiwwLDAsMCw2MiwyLDAsCisgICAgMCwwLDExNCw1OSwwLDAsMCwxMTQsODQsMCwwLDAsMjMzLDI1NCwyNTUsMjU1LAorICAgIDI1NSw0MSwxOSwxMTQsOCwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDY5LDAsCisgICAgMCwwLDExNCw3MCwwLDAsMCwxMTQsMywwLDAsMCwxMTQsNjcsMCwwLAorICAgIDAsMTE0LDQwLDAsMCwwLDExNCw3NywwLDAsMCwxMTQsNzUsMCwwLDAsCisgICAgMTE0LDUwLDAsMCwwLDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsMzYsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCw3NiwwLDAsMCwxMTQsMzMsMCwwLDAsCisgICAgMTE0LDc0LDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsCisgICAgMTE0LDMwLDAsMCwwLDIxOCwxNSw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4Myw4NSwKKyAgICA3MCw3MCw3Myw4OCw2OSw4Myw0MSw4LDExNCwzNywwLDAsMCwxMTQsODAsMCwKKyAgICAwLDAsOTAsMTYsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5MCw3LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5MCw5LDEwMCwKKyAgICAxMTEsMTE2LDk1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsNjAsMCwwLDAsOTAsOSwxMTEsCisgICAgMTEyLDExNiw5NSwxMDgsMTAxLDExOCwxMDEsMTA4LDkwLDEzLDk4LDk3LDExNSwxMDEsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDIxOCwxNywxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwMiwKKyAgICAxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDUxLDEsMCwwLDExNSw0NiwwLAorICAgIDAsMCwwLDksMTIsMSw4LDEsMTAsMSwxMiwxLDEyLDEsOCwxLAorICAgIDYsMSwxMCwxLDEwLDEsOCwxLDYsMSwxMCwxLDgsMSwxNiwxLAorICAgIDEwLDEsNiwxLDgsMSwxNiwxLDgsMSw2LDEsOCwxLDE0LDEsCisgICAgMTE0LDg5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsCisgICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxMjgsMCwwLDAsMTE2LAorICAgIDAsMTI0LDAsMTMxLDEsMTAwLDEsMTA3LDIsMTE0LDE2LDEwMCwyLDgzLDAsMTI0LAorICAgIDAsMTA2LDEsMTAwLDMsMTMxLDEsOTIsMywxMjUsMSwxMjUsMiwxMjUsMywxMjQsCisgICAgMSwxMiwwLDExNSw1OCwxMjQsMywxMDYsMiwxMzEsMCwxMDAsNywxMDAsOCwxMzMsCisgICAgMiwyNSwwLDEwMCw2LDEwNywzLDExNCw2MiwxMjQsMCw4MywwLDEyMSwxMiwxMTYsCisgICAgMywxMjQsMCwxMzEsMSwxMjUsNCw4NywwLDExMCwzNiw0LDAsMTE2LDQsMTE2LAorICAgIDUsMTAyLDIsMTA3LDEwLDExNCwxMTAsMSwwLDEsMCwxLDAsMTI0LDAsMTAwLAorICAgIDIsMTAwLDksMTMzLDIsMjUsMCwxMjUsNCw4OSwwLDExMCwyLDg4LDAsMTE2LAorICAgIDYsMTI0LDQsMTMxLDEsMTE0LDEyNCwxMjQsNCw4MywwLDEyNCwwLDgzLDAsNDEsCisgICAgMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LAorICAgIDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsCisgICAgMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsCisgICAgNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDYyLDAsMCwwLDc4LDExNCw2MSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LAorICAgIDMxLDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsMjU1LDIzMywyNTUsMjU1LAorICAgIDI1NSwyNTUsMTE0LDkxLDAsMCwwLDQxLDcsMTE0LDMzLDAsMCwwLDExNCwzNCwKKyAgICAwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4OSwwLDAsMCwxMTQsCisgICAgNzAsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw0NiwwLDAsMCw0MSw1LAorICAgIDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgODIsMCwwLDAsMTE0LDM4LDAsMCwwLDkwLDksMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsCisgICAgMTAxLDg1LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsMTIsMSw0LDEsCisgICAgMTYsMSwyNiwxLDQsMSwyLDEsMTIsMSwxOCwxLDE4LDEsMTE0LDk1LAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDExLDAsMCwwLDY3LDAsMCwwLDExNSw3NCwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMTYsMSwxMTYsMiwxMzEsMSwxMzEsMSwxMTQsNDYsMTIxLDgsMTE2LDMsMTI0LAorICAgIDAsMTMxLDEsODMsMCw0LDAsMTE2LDQsMTA3LDEwLDExNCw0MiwxLDAsMSwKKyAgICAwLDEsMCw4OSwwLDExMyw3MCw4OCwwLDExMCwyNCwxMjQsMCwxMDYsMCwxMTYsCisgICAgMSwxMTYsNSwxMzEsMSwxMzEsMSwxMTQsNjYsMTI0LDAsODMsMCwxMTAsNCwxMDAsCisgICAgMCw4MywwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSw2LDIxOCw4LDEwMSwxMTAsCisgICAgMTAwLDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTQsODgsMCwKKyAgICAwLDAsMTE0LDgzLDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsNzgsMCwwLAorICAgIDAsNDEsMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDEwNCwxLDAsMCwxMTUsMTYsMCwKKyAgICAwLDAsMCwxLDE0LDEsMiwxLDgsMSwxNCwxLDgsMSwxNCwxLAorICAgIDYsMiwxMTQsOTksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDUyLDAsMCwKKyAgICAwLDEyMSwxNCwxMTYsMCwxMjQsMCwxMzEsMSwxMDYsMSwxMjUsMSw4NywwLDExMCwKKyAgICAyNCw0LDAsMTE2LDIsMTA3LDEwLDExNCwzOCwxLDAsMSwwLDEsMCwxMDAsCisgICAgMSwxMjUsMSw4OSwwLDExMCwyLDg4LDAsMTI0LDEsMTAwLDIsNzksMCwxMjUsCisgICAgMSwxMjQsMSw4MywwLDQxLDMsMTIyLDUxLDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LAorICAgIDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTAxLDMyLDExMiwxMDEsMTE0LDEwOSwKKyAgICAxMDUsMTE1LDExNSwxMDUsMTExLDExMCwxMTUsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsOTgsMTIxLAorICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwxODIsMSwwLAorICAgIDAsMjMzLDEyOCwwLDAsMCw0MSwzLDExNCw0MSwwLDAsMCwxMTQsNDMsMCwKKyAgICAwLDAsMTE0LDQyLDAsMCwwLDQxLDIsMTE0LDM3LDAsMCwwLDExNCw0NCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwyMTgsMTAsOTUsOTksOTcsMTA4LDk5LDk1LDEwOSwxMTEsMTAwLDEwMSwxMTYsMSwKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDAsMiwyLDEsMTQsMSwxNCwxLDEwLAorICAgIDMsOCwxLDExNCwxMDEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDMsMCwwLDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsNjgsMCwKKyAgICAwLDAsMTAwLDYsMTM1LDAsMTAyLDEsMTAwLDIsMTAwLDMsMTMyLDksMTI1LDEsCisgICAgMTIxLDEwLDExNiwwLDEwNiwxLDEyNSwyLDg3LDAsMTEwLDI4LDQsMCwxMTYsMiwKKyAgICAxMDcsMTAsMTE0LDUyLDEsMCwxLDAsMSwwLDEwMCw0LDEwMCw1LDEzMiwwLAorICAgIDEyNSwyLDg5LDAsMTEwLDIsODgsMCwxMjQsMiwxMjQsMSwxMzYsMCwxMzEsMiwKKyAgICAxLDAsMTI0LDEsODMsMCw0MSw3LDEyMiwyNTIsNjgsMTAxLDk5LDExMSwxMTQsOTcsCisgICAgMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LAorICAgIDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMDEsCisgICAgMTA1LDExMCwxMDMsMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsMTA5LDk3LAorICAgIDExNiw5OSwxMDQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwKKyAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTAyLDEwNSwxMTQsMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsCisgICAgMzIsNDAsMTE1LDEwMSwxMDgsMTAyLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDAsMTAxLDEwMiwKKyAgICAxMDUsMTEwLDEwMSwzMiw5NSwxMTAsOTcsMTA5LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksCisgICAgMTAxLDExMCwxMTYsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTA5LDExMiw5NywKKyAgICAxMTQsMTAxLDEwMCwzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDQ2LDMyLDczLDEwMiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTA1LDExNSwxMTEsMTEwLDMyLDEwMiwKKyAgICA5NywxMDUsMTA4LDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDc4LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICA0LDAsMCwwLDQsMCwwLDAsMzEsMCwwLDAsMTE1LDY2LDAsMCwKKyAgICAwLDEyNCwxLDEwMCwwLDEwNyw4LDExNCwxNiwxMjQsMCwxMDYsMCwxMjUsMSwxMTAsCisgICAgMzIsMTI0LDAsMTA2LDAsMTI0LDEsMTA3LDMsMTE0LDQ4LDExNiwxLDEwMCwxLDEyNCwKKyAgICAwLDEwNiwwLDEyNCwxLDEwMiwyLDIyLDAsMTI0LDEsMTAwLDIsMTQxLDIsMTMwLAorICAgIDEsMTM2LDAsMTI0LDAsMTI0LDEsMTAyLDIsMTI0LDIsMTU4LDIsMTI0LDMsMTQyLAorICAgIDEsODMsMCw0MSwzLDc4LDEyMiwzMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDM3LDExNSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExMCwKKyAgICAxMDAsMTA4LDEwMSwzMiwzNywxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSw0MSwyLAorICAgIDExNCwxMDIsMCwwLDAsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDQxLDQsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxMDIsMCwwLDAsMjE4LAorICAgIDQsOTcsMTE0LDEwMywxMTUsOTAsNiwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDQxLDEsMjE4LAorICAgIDYsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDE5LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwKKyAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDEzNiwxLDAsMCwxMTUsMTIsMCwwLDAsMCwKKyAgICAxLDgsMSw4LDEsMTAsMSw0LDEsMTgsMSwxMjIsNDAsOTUsOTksMTA0LAorICAgIDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LAorICAgIDYyLDQ2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsCisgICAgOTcsMTEyLDExMiwxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDcsMCwwLDAsODMsMCwwLDAsMTE1LDYwLDAsMCwwLDEyMCwKKyAgICA0MCwxMDAsNSw2OCwwLDkzLDMyLDEyNSwyLDExNiwwLDEyNCwxLDEyNCwyLDEzMSwKKyAgICAyLDExNCw2LDExNiwxLDEyNCwwLDEyNCwyLDExNiwyLDEyNCwxLDEyNCwyLDEzMSwKKyAgICAyLDEzMSwzLDEsMCwxMTMsNiw4NywwLDEyNCwwLDEwNiwzLDEwNiw0LDEyNCwKKyAgICAxLDEwNiwzLDEzMSwxLDEsMCwxMDAsMCw4MywwLDQxLDYsNzgsMjE4LDEwLAorICAgIDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDIxOCwxMiw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICA5NSw5NSwyMTgsNyw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDQxLDQsMTE0LDEwOCwwLAorICAgIDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsCisgICAgMCw0MSw1LDIxOCw3LDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTE1LDEwMSwKKyAgICAxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDgsCisgICAgOTUsOTUsMTAwLDEwNSw5OSwxMTYsOTUsOTUsMjE4LDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSwKKyAgICA0MSwzLDkwLDMsMTEwLDEwMSwxMTksOTAsMywxMTEsMTA4LDEwMCwxMTQsNTUsMCwwLAogICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDEwLDk1LDk5LDk3LDEwOCw5OSw5NSwxMDksMTExLDEwMCwxMDEsMTA2LDEsMCwwLAotICAgIDExNSwxMiwwLDAsMCwwLDIsMywxLDE5LDEsMTMsMSwxMSwzLDEwLAotICAgIDEsMTE0LDk5LDAsMCwwLDIxOCw5LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTA1LDExNiwKLSAgICAxMjEsMTE0LDMxLDAsMCwwLDk5LDEsMCwwLDAsMSwwLDAsMCwzLAotICAgIDAsMCwwLDQsMCwwLDAsNzEsMCwwLDAsMTE1LDc1LDAsMCwwLAotICAgIDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA3LDUsMCwxMTQsCi0gICAgNzEsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwwLDExNSw0MywKLSAgICAwLDEwMCwzLDAsMTI0LDAsMCwyMywxMjUsMCwwLDExNiw0LDAsMTI0LDAsCi0gICAgMCwxMDYsNSwwLDEyNCwyLDAsMTQwLDAsMCwxMDAsNCwwLDExNiwwLDAsCi0gICAgMTA2LDYsMCwxMzEsMSwxLDEsMTAwLDUsMCw4Myw0MSw3LDEyMiw2MSw4MCwKLSAgICAxMTQsMTA1LDExMCwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsCi0gICAgMzIsMTE2LDExMSwzMiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCwKLSAgICA0Nyw4MCw4OSw4NCw3Miw3OSw3OCw4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsCi0gICAgMTE1LDMyLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLAotICAgIDcsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIyLDIsMzUsMzIsMTE0LDU2LDAsMCwKLSAgICAwLDc4LDQxLDIsMTE0LDEwMSwwLDAsMCwxMTQsMTAyLDAsMCwwLDQxLDcsCi0gICAgMTE0LDgsMCwwLDAsMTE0LDY5LDAsMCwwLDIxOCw3LDExOCwxMDEsMTE0LDk4LAotICAgIDExMSwxMTUsMTAxLDExNCwxMCwwLDAsMCwyMTgsNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCwKLSAgICA0OSwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCw0MSwzLDExNCw3NywKLSAgICAwLDAsMCwxMTQsMTAwLDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwKLSAgICAxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTgsCi0gICAgMSwwLDAsMTE1LDgsMCwwLDAsMCwyLDE4LDEsMTUsMSwxMCwxLAotICAgIDExNCwxMDcsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwKLSAgICAwLDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsODQsMCwwLDAsMTAwLAotICAgIDEsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwxLAotICAgIDAsMTI1LDEsMCwxMjEsMTMsMCwxMTYsMCwwLDEwNiwxLDAsMTI1LDIsMCwKLSAgICA4NywxMTAsMzAsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDY2LDAsMSwxLAotICAgIDEsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTI1LDIsMCw4OSwxMTAsMSwKLSAgICAwLDg4LDEyNCwyLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsCi0gICAgMSwwLDgzLDQxLDYsMTIyLDI1Miw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwKLSAgICAzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsOTcsMTE2LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsMTE2LDk5LDEwNCwKLSAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLAotICAgIDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDMyLDEwNCw5NywKLSAgICAxMTAsMTAwLDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExNCwxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw0MCwxMTUsCi0gICAgMTAxLDEwOCwxMDIsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLAotICAgIDMyLDk1LDExMCw5NywxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTUsMTAxLDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwKLSAgICAzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDEsMTAwLAotICAgIDMyLDk3LDEwMyw5NywxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLDk3LDEwNSwxMDgsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNzgsOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLAotICAgIDAsNSwwLDAsMCwzMSwwLDAsMCwxMTUsODksMCwwLDAsMTI0LDEsCi0gICAgMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDI0LDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEyNSwxLDAsMTEwLDQ2LDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA3LAotICAgIDMsMCwxMTQsNzAsMCwxMTYsMSwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEyNCwxLDAsMTAyLDIsMCwyMiwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgMTI0LDMsMCwxNDIsMiwwLDgzLDQxLDMsNzgsMTIyLDMwLDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMzcsMTE1LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwKLSAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDM3LDExNSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwKLSAgICA0MSwyLDExNCwxMDgsMCwwLDAsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDQxLDQsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxMDgsMCwwLAotICAgIDAsMTE0LDEwNiwwLDAsMCw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsNDEsMSwKLSAgICAyMTgsNiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMTksOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCi0gICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMTM0LDEsMCwwLDExNSwxMiwwLDAsMCwKLSAgICAwLDEsMTIsMSwxMiwxLDE1LDEsNiwxLDI1LDEsMTIyLDQwLDk1LDk5LAotICAgIDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSw2Miw0Niw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksCi0gICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMywKLSAgICAwLDAsMCw3LDAsMCwwLDgzLDAsMCwwLDExNSw5MiwwLDAsMCwKLSAgICAxMjAsNjYsMCwxMDAsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMywKLSAgICA0LDAsNjgsOTMsNDYsMCwxMjUsMiwwLDExNiwwLDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTE0LDE5LDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwyLAotICAgIDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMzEsMywwLAotICAgIDEsMTEzLDE5LDAsODcsMTI0LDAsMCwxMDYsMywwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCwxMDYsMywwLDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQxLDUsNzgsMjE4LAotICAgIDEwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCwKLSAgICA5NywxMDksMTAxLDk1LDk1LDIxOCwxMiw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LAotICAgIDEwMSw5NSw5NSwyMTgsNyw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDQxLDUsMjE4LDcsCi0gICAgMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKLSAgICAyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LAotICAgIDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsCi0gICAgMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLDExNCw1NCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsNSw5NSwxMTksMTE0LAotICAgIDk3LDExMiwxNDUsMSwwLDAsMTE1LDgsMCwwLDAsMCwxLDI1LDEsMTUsCi0gICAgMSwyOSwxLDEyMiwyNiw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwKLSAgICA0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE5LDExNCw5NywxMTIsNDEsCi0gICAgMywyMTgsMTAsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExNCwxMjIsMCwKLSAgICAwLDAsMjE4LDksNzgsOTcsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMywxMTQsCi0gICAgMTExLDAsMCwwLDExNCwxMTIsMCwwLDAsMTE0LDEyMiwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCw0MSwxLDExNCwxMTEsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAotICAgIDExLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDEyNiwxLDAsMCwKLSAgICAxMTUsMTQsMCwwLDAsMCw4LDIxLDcsMywxLDEzLDEsMTMsMiwxNywKLSAgICA1LDEzLDEsMTE0LDEyNSwwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4NCwwLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsCi0gICAgMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsCi0gICAgMTE0LDgwLDAsMTE2LDEsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDgwLDAsMTAwLAotICAgIDIsMCwxMjUsNCwwLDExNiwyLDAsMTA2LDMsMCwxMjQsNCwwLDEwNiw0LAotICAgIDAsMTI0LDMsMCwxMDAsMywwLDI1LDEzMSwxLDAsMTE2LDUsMCwxMzEsMiwKLSAgICAwLDEsMTI0LDIsMCw4Myw0MSw0LDEyMiwxNTUsODQsMTE0LDEyMSwzMiwxMTYsMTExLAorICAgIDIxOCw1LDk1LDExOSwxMTQsOTcsMTEyLDE0NywxLDAsMCwxMTUsOCwwLDAsMCwKKyAgICAwLDEsMTAsMSwxMCwxLDIyLDEsMTIyLDI2LDk1LDk5LDEwNCwxMDEsOTksMTA3LAorICAgIDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwKKyAgICAxMTksMTE0LDk3LDExMiw0MSwxLDc4LDQxLDMsMjE4LDEwLDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiwxMTQsMTE3LDAsMCwwLDIxOCw5LDc4LDk3LDEwOSwxMDEsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDQxLDMsMTE0LDEwNiwwLDAsMCwxMTQsMTA3LDAsMCwKKyAgICAwLDExNCwxMTcsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsMTA2LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMjgsMSwwLDAsMTE1LDE0LDAsMCwwLDAsOCwxNCwKKyAgICA3LDIsMSwxMCwxLDE0LDIsMTQsNSwxMCwxLDExNCwxMjAsMCwwLDAsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNjAsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsCisgICAgMTMxLDEsOTIsMiwxMjUsMiwxMjUsMywxMjQsMiwxMDAsMSwxMDcsOCwxMTQsNTYsCisgICAgMTE2LDEsMTI0LDMsMTMxLDEsMTE0LDU2LDEwMCwyLDEyNSw0LDExNiwyLDEwNiwzLAorICAgIDEyNCw0LDEwNiw0LDEyNCwzLDEwMCwzLDI1LDAsMTMxLDEsMTE2LDUsMTMxLDIsCisgICAgMSwwLDEyNCwyLDgzLDAsNDEsNCwxMjIsMTU1LDg0LDExNCwxMjEsMzIsMTE2LDExMSwKICAgICAzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsCiAgICAgMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAogICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEyMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTAzLApAQCAtNjMyLDEzNTQgKzU2OCwxMjkxIEBACiAgICAgMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDQ0LDc4LDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTExLAogICAgIDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwKICAgICAxMjMsMTI1LDU4LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMDUsMTEwLAotICAgIDEwNSwxMTYsOTUsOTUsMTE0LDYxLDAsMCwwLDQxLDYsMjE4LDExLDEwMiwxMDUsMTEwLAotICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwzMywwLDAsMCwxMTQsNjIsMCwKLSAgICAwLDAsMTE0LDYzLDAsMCwwLDExNCw0OSwwLDAsMCwyMTgsMTMsNzMsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQxLDUsMTE0LDExMCwwLAorICAgIDEwNSwxMTYsOTUsOTUsMTE0LDYyLDAsMCwwLDQxLDYsMjE4LDExLDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwzMywwLDAsMCwxMTQsNjMsMCwKKyAgICAwLDAsMTE0LDY0LDAsMCwwLDExNCw1MCwwLDAsMCwyMTgsMTMsNzMsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQxLDUsMTE0LDEwNCwwLAogICAgIDAsMCwyMTgsOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMjE4LDYsMTA4LDExMSwKICAgICA5NywxMDAsMTAxLDExNCwyMTgsOCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwzLAogICAgIDEwOSwxMTUsMTAzLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCiAgICAgMCwwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsMTE1LDEwNCwxMDUsMTA5LDE1NCwxLDAsMCwxMTUsMTAsMCwwLDAsMCwxMCwKLSAgICAyMSwxLDI0LDEsNiwxLDI5LDEsMTE0LDEzMiwwLDAsMCw5OSw0LDAsCi0gICAgMCwwLDAsMCwwLDAsMTEsMCwwLDAsMTksMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDI0MCwxLDAsMCwxMDUsMCwwLDEyNSw0LDAsMTI0LDIsMCwKLSAgICAxMDAsMSwwLDEwNyw5LDAsMTE0LDMxLDAsMTI0LDIsMCwxMjQsNCwwLDEwMCwKLSAgICAyLDAsNjAsMTEwLDYsMCwxMDAsMywwLDEyNSwyLDAsMTI0LDMsMCwxMDAsCi0gICAgMSwwLDEwNyw5LDAsMTE0LDU5LDAsMTI0LDMsMCwxMjQsNCwwLDEwMCw0LAotICAgIDAsNjAsMTI0LDAsMCwxMDAsMSwwLDEwMCw1LDAsMTMzLDIsMCwyNSwxMjUsCi0gICAgNSwwLDEyNCwwLDAsMTAwLDUsMCwxMDAsNiwwLDEzMywyLDAsMjUsMTI1LAotICAgIDYsMCwxMjQsMCwwLDEwMCw2LDAsMTAwLDcsMCwxMzMsMiwwLDI1LDEyNSwKLSAgICA3LDAsMTI0LDUsMCwxMTYsMCwwLDEwNywzLDAsMTE0LDE2OCwwLDEwMCw4LAotICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEyNCw1LDAsMTMxLDIsMCwxMjUsOCwwLAotICAgIDExNiwyLDAsMTAwLDksMCwxMjQsOCwwLDEzMSwyLDAsMSwxMTYsMywwLAotICAgIDEyNCw4LDAsMTI0LDQsMCwxNDEsMSwwLDEzMCwxLDAsMTEwLDExOSwwLDExNiwKLSAgICA0LDAsMTI0LDYsMCwxMzEsMSwwLDEwMCw1LDAsMTA3LDMsMCwxMTQsMjI5LAotICAgIDAsMTAwLDEwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwKLSAgICAxMTYsMiwwLDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDUsMCwKLSAgICAxMjQsOCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNTgsMCwxMTYsNCwwLDEyNCwKLSAgICA3LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDMxLDEsMTAwLDExLAotICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsMiwwLAotICAgIDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDUsMCwxMjQsOCwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsCi0gICAgMjI2LDEsMTIxLDIwLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwxMiwwLDI1LDEzMSwKLSAgICAxLDAsMTI1LDksMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsCi0gICAgMTE0LDgzLDEsMSwxLDEsODksMTEwLDYyLDAsODgsMTE2LDgsMCwxMjQsNiwKLSAgICAwLDEzMSwxLDAsMTI0LDksMCwxMDcsMywwLDExNCwxNDUsMSwxMDAsMTMsMCwKLSAgICAxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLDExNiwyLDAsMTAwLAotICAgIDksMCwxMjQsOCwwLDEzMSwyLDAsMSwxMTYsMywwLDEyNCw4LDAsMTI0LAotICAgIDQsMCwxNDEsMSwwLDEzMCwxLDAsMTIxLDE4LDAsMTI0LDEsMCwxMDAsMTQsCi0gICAgMCwyNSwxMDAsMTUsMCw2NCwxMjUsMTAsMCw4NywxMTAsMTgsMCw0LDExNiw3LAotICAgIDAsMTA3LDEwLDAsMTE0LDE4MywxLDEsMSwxLDg5LDExMCw0MywwLDg4LDExNiwKLSAgICA4LDAsMTI0LDcsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsMTE0LDIyNiwKLSAgICAxLDExNiwzLDAsMTAwLDEzLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI0LDQsMCwxNDEsMSwwLDEzMCwxLDAsMTI0LDAsMCwxMDAsNywwLDEwMCwKLSAgICAxLDAsMTMzLDIsMCwyNSw4Myw0MSwxNiw5NywxMjIsMSwwLDAsODYsOTcsCi0gICAgMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDQsMTAxLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCw0NSwKLSAgICAxMDUsMTEwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk3LDEwMyw5NywxMDUsCi0gICAgMTEwLDExNSwxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsCi0gICAgMzIsNDAsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDQxLDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsCi0gICAgOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMzIsCi0gICAgOTgsMTIxLDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTExLDExNiwxMDQsMTAxLDExNCwzMiw5NywxMTQsMTAzLAotICAgIDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE3LDExNSwxMDEsMTAwLDMyLAotICAgIDExNiwxMTEsMzIsMTAxLDExMCwxMDQsOTcsMTEwLDk5LDEwMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LAotICAgIDMyLDExNCwxMDEsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTE1LDMyLAotICAgIDEwNSwxMTAsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMTUsMTE2LDk3LAotICAgIDEwOCwxMDEsNDYsMzIsNjksNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTAwLDk3LDExNiw5NywzMiwxMDUsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExNCwxMTcsMTEwLDk5LDk3LDExNiwxMDEsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDExNCwxMDgsMCwwLDAsMTIyLDEwLAotICAgIDYwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDYyLDExNCwzNywwLDAsMCwxMTQsCi0gICAgMTQsMCwwLDAsMjMzLDgsMCwwLDAsMjMzLDEyLDAsMCwwLDEyMiwzMCwKLSAgICA5OCw5NywxMDAsMzIsMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwKLSAgICAzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LDEyMiwyLAotICAgIDEyMywxMjUsMTIyLDQzLDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsCi0gICAgMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLAotICAgIDQ4LDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsMTE5LDEwNCwxMDUsCi0gICAgMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTA1LDEyMiwxMDEsMzIsCi0gICAgMTExLDEwMiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsMjE4LDUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMjIsMjYsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTIzLDMzLDExNCwxMjUsMjE4LDQsMTE1LDEwNSwxMjIsMTAxLDEwOCwzLDAsMCwwLDI1NSwKLSAgICAxMjcsMjU1LDEyNywzLDAsNDEsOSwyMTgsMTIsNzcsNjUsNzEsNzMsNjcsOTUsNzgsCi0gICAgODUsNzcsNjYsNjksODIsMTE0LDQ5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LAotICAgIDEwOSwwLDAsMCwxMTQsMzMsMCwwLDAsMjE4LDgsNjksNzksNzAsNjksMTE0LAotICAgIDExNCwxMTEsMTE0LDExNCwxNiwwLDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwxMTQsMjEsMCwwLDAsNDEsMTEsMTE0LDU1LDAsMCwwLDIxOCwxMiwKLSAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCw5MCwxMSwxMDEsMTIwLDk5LDk1LDEwMCwxMDEsMTE2LDk3LAotICAgIDEwNSwxMDgsMTE1LDkwLDUsMTA5LDk3LDEwMywxMDUsOTksOTAsMTMsMTE0LDk3LDExOSw5NSwKLSAgICAxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDkwLDgsMTE0LDk3LDExOSw5NSwxMTUsCi0gICAgMTA1LDEyMiwxMDEsMTE0LDc3LDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LAotICAgIDEwNSwxMjIsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwyNSw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsCi0gICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDE3MSwxLDAsCi0gICAgMCwxMTUsNzYsMCwwLDAsMCwxMSw2LDEsMTIsMSwxMywzLDYsMSwKLSAgICAxMiwxLDEwLDEsMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDEzLDEsCi0gICAgMTgsMSwxOCwxLDE1LDEsMTMsMSwxNSwxLDE4LDEsMTUsMSwxMywxLAotICAgIDEyLDEsMTIsMSwzLDEsMjAsMSwxMywxLDUsMiwxOCwxLDE1LDEsCi0gICAgMTMsMSwxNSwxLDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwKLSAgICA5LDEsMTE0LDE0MywwLDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsCi0gICAgNSwwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxMTIsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLAotICAgIDExNiwyLDAsMTI0LDQsMCwxMTYsMywwLDEzMSwyLDAsMTE0LDc1LDAsMTE2LAotICAgIDQsMCwxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMCwxLDEyNCwzLDAsMTAwLAotICAgIDIsMCwxMDcsOSwwLDExNCw3MSwwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCwxLDEyNCw0LDAsODMsMTE2LDcsMCwxMDAsCi0gICAgMywwLDEwNiw4LDAsMTI0LDIsMCwxMzEsMSwwLDEwMCw0LDAsMTI0LDEsCi0gICAgMCwxMDAsNSwwLDEyNCwyLDAsMTMxLDEsMiwxMzAsMSwwLDEwMCwyLDAsCi0gICAgODMsNDEsNiwxMjIsNjAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwKLSAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwKLSAgICAxMDAsMzIsOTgsMTIxLDMyLDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LAotICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsCi0gICAgNDYsMTIyLDIxLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsCi0gICAgMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksCi0gICAgMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsOSwyMTgsNywKLSAgICAxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwKLSAgICAxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLAotICAgIDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDEwNywwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LAotICAgIDExMiw5MCwxNiw5NSwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMDksMCwwLDAsMTE0LDQ5LDAsMCwwLDQxLDUsMTE0LAotICAgIDU1LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw5MiwKLSAgICAwLDAsMCwyMTgsNCw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwOSwxMTIsMTA1LAotICAgIDEwOCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjI2LDEsMCwwLDExNSwKLSAgICAxNiwwLDAsMCwwLDIsMTUsMSwxNSwxLDEzLDEsMTIsMSwxNiwxLAotICAgIDQsMiwxOCwxLDExNCwxNDksMCwwLDAsMTE0LDYxLDAsMCwwLDk5LDMsCi0gICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDc2LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwKLSAgICAwLDEyNSwzLDAsMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLDAsMTE2LDMsMCwKLSAgICAxMjQsMiwwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCwzLDAsMTA2LDIsMCwKLSAgICAxMTYsNCwwLDEwNiw1LDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMSwKLSAgICAxMjQsMywwLDgzLDQxLDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLAotICAgIDk3LDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLAotICAgIDExNiwxMTEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLAotICAgIDMyLDMyLDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLAotICAgIDk3LDExNCwxMTQsOTcsMTIxLDExNCwxMzcsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLAotICAgIDExMCwxMDAsMTE0LDE5LDAsMCwwLDExNCwxNDQsMCwwLDAsOTAsNSwxMDAsMTE3LAotICAgIDEwOSwxMTIsMTE1LDQxLDQsMTE0LDE0OCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwKLSAgICAxNDIsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwKLSAgICAxMTYsMTExLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIzOCwxLDAsMCwxMTUsCi0gICAgMTAsMCwwLDAsMCwzLDEyLDEsMTksMSwxOSwxLDIyLDEsMTE0LDE1MiwKLSAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKLSAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSw4OSwwLDAsMCwxMDAsMSwwLAotICAgIDEwMCwyLDAsMTA4LDAsMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMjQsCi0gICAgMCwwLDEzMSwxLDAsMTA2LDMsMCwxMjUsMiwwLDEyNCwxLDAsMTA2LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsMSwwLDEwNiw1LDAsCi0gICAgMTAwLDIsMCwxMDAsMywwLDEzMSwyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwKLSAgICA2LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTAwLDEsMCwyNSwxMzEsCi0gICAgMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsMTIxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwKLSAgICAxMTYsMTE0LDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExMCwxMDUsMTE4LAotICAgIDEwMSwxMTQsMTE1LDk3LDEwOCwzMiwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsMzIsMTE1LDExNywKLSAgICAxMTIsMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDMyLAotICAgIDMyLDMyLDMyLDExNCw2MSwwLDAsMCw3OCw4NCw0MSw3LDIxOCw4LDExNiwxMTEsCi0gICAgMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE0LDUxLDAsMCwwLDkwLDcsNjYsMTIxLDExNiwKLSAgICAxMDEsMTE1LDczLDc5LDkwLDgsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDkwLDE1LAotICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsOTUsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLAotICAgIDI1LDczLDExMCw5OSwxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMDgsNzgsMTAxLDExOSwxMDgsCi0gICAgMTA1LDExMCwxMDEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMTgsNiwxMDAsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDQxLDUsMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwKLSAgICAxMDEsMTE1LDExNCwxNTMsMCwwLDAsOTAsMjEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwKLSAgICA5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDIxOCw4LAotICAgIDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw5MCwxNSwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwKLSAgICAxMDEsOTUsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDEwMCwxMDEsOTksMTExLDEwMCwxMDEsCi0gICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyNDgsMSwwLDAsMTE1LDEwLDAsMCwwLAotICAgIDAsNSwxMiwxLDE4LDEsMTUsMSwxOCwxLDExNCwxNTcsMCwwLDAsMTE0LAotICAgIDEyOSwwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKLSAgICAxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LAotICAgIDk5LDIsMCwwLDAsMiwwLDAsMCw5LDAsMCwwLDE5LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw4OSwxLDAsMCwxMjQsMSwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsNzMsMCwxMDAsMiwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCi0gICAgMiwwLDEwMCwzLDAsMTMxLDIsMCwxMTQsNzMsMCwxMjEsMTksMCwxMjQsMiwKLSAgICAwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsODcsMTEwLDE4LAotICAgIDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw3MiwwLDEsMSwxLDg5LDExMCwKLSAgICAxLDAsODgsMTE2LDMsMCwxMDYsNCwwLDEyNCwwLDAsMTI0LDIsMCwxMDAsCi0gICAgNCwwLDEyNCwxLDAsMTMxLDIsMSwxMjUsNCwwLDEwMCw1LDAsMTI0LDQsCi0gICAgMCw5NSw1LDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDE5NCwwLAotICAgIDEyMCw3MywwLDExNiw2LDAsMTMxLDAsMCw2OCw5Myw1OCwwLDkyLDIsMCwKLSAgICAxMjUsNSwwLDEyNSw2LDAsMTI0LDEsMCwxMDYsNywwLDExNiw4LDAsMTI0LAotICAgIDYsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDEyOCwwLDEyNCw1LDAsMTI0LDAsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsMCwxMjQsMiwwLDEyNCw0LDAsCi0gICAgOTUsOSwwLDgwLDExMywxMjgsMCw4NywxMDAsMSwwLDgzLDEyNCwzLDAsMTE2LAotICAgIDEwLDAsMTA3LDgsMCwxMTQsMjMsMSwxMTYsMCwwLDEyNCwyLDAsMTAwLDYsCi0gICAgMCwxMzEsMiwwLDExNCwzMiwxLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDExLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEyNSw3LDAsODcsMTEwLDE4LDAsNCwxMTYsMiwKLSAgICAwLDEwNywxMCwwLDExNCw0LDEsMSwxLDEsODksMTEzLDMyLDEsODgsMTI0LAotICAgIDcsMCwxMTQsMzIsMSwxMDMsMCwwLDEyNCw0LDAsOTUsMTIsMCwxMTAsOSwKLSAgICAwLDEyNCwzLDAsMTI0LDQsMCw5NSwxMiwwLDEyNCw0LDAsMTA2LDEyLDAsCi0gICAgMTAzLDAsMCwxMDcsMiwwLDExNCw4NSwxLDEyNCwxLDAsMTE0LDg1LDEsMTE2LAotICAgIDEzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCw3LDAsMjUsMTI1LDgsMCwxMjQsCi0gICAgNCwwLDEwNiwxMiwwLDEwNiwxNCwwLDEyNCw4LDAsMTMxLDEsMCwxLDEyNCwKLSAgICA0LDAsODMsNDEsOCw5Nyw2MSwxLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LAotICAgIDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwKLSAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDExMSwKLSAgICAzMiwxMDUsMTEwLDEwMCwxMDUsOTksOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NCwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE2LDExMSwzMiw5NywzMiwKLSAgICAxMDgsMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsCi0gICAgMTIxLDMyLDExMiw5NywxMTYsMTA0LDExNSw0NiwzMiwzMiw2NSwxMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSwzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTA1LDExNSwzMiwxMTUsCi0gICAgMTE3LDEwMiwxMDIsMTA1LDk5LDEwNSwxMDEsMTEwLDExNiw0NCwzMiwxMTYsMTA0LDExMSwxMTcsMTAzLAotICAgIDEwNCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDExOSwKLSAgICAxMDUsMTE1LDEwMSwzMiwxMTcsMTE1LDEwMSwxMDIsMTE3LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNSwxMjEsMTE1LAotICAgIDExNiwxMDEsMTA5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTE2LDk3LDEwNywxMDEsMzIsOTcsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDEwNSwxMTYsMTE1LDMyLDExMSwxMTAsMTA4LAotICAgIDEyMSwzMiw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDAsNDEsMzIsOTcsMTE0LDEwMywKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsOSw2MCwxMTcsMTEwLDEwNywxMTAsMTExLAotICAgIDExOSwxMTAsNjIsMjE4LDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAotICAgIDEwMSwyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDYxLDAsMCwwLDQxLDE1LDExNCwxMTcsMCwKLSAgICAwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMjMsMCwwLAotICAgIDAsMjE4LDEwLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw5MCwxMyw5NSwKLSAgICAxMTUsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsOTcsMTE2LDExNiwxMTQsMjE4LDI3LDk1LDEwMywKLSAgICAxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LAotICAgIDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsOTQsMCwwLDAsMTE0LDk1LAotICAgIDAsMCwwLDExNCwxMjksMCwwLDAsMjE4LDksOTUsODAsNzksODAsODUsNzYsCi0gICAgNjUsODQsNjksMTE0LDE2MSwwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCw0MCwwLAotICAgIDAsMCwyMTgsNiw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDQxLDksMTE0LDEwOCwwLDAsCi0gICAgMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMjksMCwwLDAsCi0gICAgMTE0LDE1OCwwLDAsMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsMTIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw5NSw5OSwxMDgsOTcsMTE1LDExNSwyMTgsOCwxMTUsMTE3LDEwMiwxMDIsMTA1LAotICAgIDEyMCwxMDEsMTE1LDExNCwxNjEsMCwwLDAsOTAsNywxMDAsMTA1LDExNCwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMjMsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5LDIsMCwwLDExNSw2MCwwLAotICAgIDAsMCwwLDEyLDEyLDQsNiwxLDE1LDIsMywxLDE5LDEsMTMsMSwKLSAgICA1LDgsMjQsMSw5LDMsMTIsMSwyMiwxLDIxLDEsMTUsMSw5LDEsCi0gICAgNSwyLDQsMywxMiwyLDE1LDEsMywxLDE5LDEsMTMsMSw1LDIsCi0gICAgNiwxLDEyLDIsOSwxLDE1LDEsNiwxLDE2LDEsMTYsMiwxMTQsMTY5LAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDUsMCwwLDAsNjQsMCwwLDAsMTE1LDEyMSwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDkwLDQsMCwxMDAsMywwLDkwLDUsMCwxMDAsNCwwLDkwLDYsCi0gICAgMCwxMDEsNywwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDEzMSwxLDAsCi0gICAgOTAsOCwwLDEwMSw3LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCw5MCw5LDAsMTAxLDcsMCwxMDAsOSwwLDEwMCw5LDAsMTAwLDEwLAotICAgIDAsMTAwLDExLDAsMTMyLDIsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDcsMCwKLSAgICAxMDAsOSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwxLDAsMTMxLDEsMCw5MCwKLSAgICAxMSwwLDEwMCw5LDAsODMsNDEsMTQsMjE4LDIxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCi0gICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwKLSAgICA2Miw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTAxLAotICAgIDk5LDEwOCw5NywxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg3LDEwNSwKLSAgICAxMTAsMTAwLDExMSwxMTksMTE1LDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTIyLAotICAgIDU5LDgzLDExMSwxMDIsMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsCi0gICAgOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwxMTUsCi0gICAgOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSw5MiwxMjMsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSwxMjIsNjUsODMsMTExLAotICAgIDEwMiwxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5Miw4MCwxMjEsCi0gICAgMTE2LDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwxMTgsMTAxLAotICAgIDExNCwxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywKLSAgICAxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDkyLDY4LDEwMSw5OCwxMTcsMTAzLDcwLAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw2NywwLDAsMCwxMjEsMjMsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTE2LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsMCw4MywKLSAgICA4NywxMTAsMzcsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYyLDAsMSwxLAotICAgIDEsMTE2LDAsMCwxMDYsMSwwLDExNiwwLDAsMTA2LDQsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsODMsODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDEsNzgsCi0gICAgNDEsNSwyMTgsNyw5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5MCw3LDc5LDExMiwxMDEsCi0gICAgMTEwLDc1LDEwMSwxMjEsOTAsMTcsNzIsNzUsNjksODksOTUsNjcsODUsODIsODIsNjksCi0gICAgNzgsODQsOTUsODUsODMsNjksODIsMTE0LDQyLDAsMCwwLDkwLDE4LDcyLDc1LAotICAgIDY5LDg5LDk1LDc2LDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LAotICAgIDQxLDIsMjE4LDMsOTksMTA4LDExNSwxMTQsNSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsOTUsMTExLDExMiwKLSAgICAxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsODcsMiwwLDAsMTE1LAotICAgIDgsMCwwLDAsMCwyLDMsMSwyMywxLDEzLDEsMTIyLDM2LDg3LDEwNSwKKyAgICA5NSwxMTUsMTA0LDEwNSwxMDksMTU2LDEsMCwwLDExNSwxMCwwLDAsMCwwLDEwLAorICAgIDE0LDEsMTYsMSw0LDEsMjIsMSwxMTQsMTI3LDAsMCwwLDk5LDQsMCwKKyAgICAwLDAsMCwwLDAsMCwxMSwwLDAsMCwyMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTM2LDEsMCwwLDEwNSwwLDEyNSw0LDEyNCwyLDEwMCwxLDEwNywKKyAgICA5LDExNCwyMiwxMjQsMiwxMjQsNCwxMDAsMiw2MCwwLDExMCw0LDEwMCwzLDEyNSwKKyAgICAyLDEyNCwzLDEwMCwxLDEwNyw5LDExNCw0MiwxMjQsMywxMjQsNCwxMDAsNCw2MCwKKyAgICAwLDEyNCwwLDEwMCwxLDEwMCw1LDEzMywyLDI1LDAsMTI1LDUsMTI0LDAsMTAwLAorICAgIDUsMTAwLDYsMTMzLDIsMjUsMCwxMjUsNiwxMjQsMCwxMDAsNiwxMDAsNywxMzMsCisgICAgMiwyNSwwLDEyNSw3LDEyNCw1LDExNiwwLDEwNywzLDExNCwxMjQsMTAwLDgsMTA2LAorICAgIDEsMTI0LDIsMTI0LDUsMTMxLDIsMTI1LDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LAorICAgIDgsMTMxLDIsMSwwLDExNiw0LDEyNCw4LDEwMiwxLDEyNCw0LDE0MiwxLDEzMCwKKyAgICAxLDExMCw4NiwxMTYsNSwxMjQsNiwxMzEsMSwxMDAsNSwxMDcsMywxMTQsMTY4LDEwMCwKKyAgICAxMCwxMDYsMSwxMjQsMiwxMzEsMSwxMjUsOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsCisgICAgOCwxMzEsMiwxLDAsMTE2LDYsMTI0LDgsMTMxLDEsMTMwLDEsMTEwLDQyLDExNiwKKyAgICA1LDEyNCw3LDEzMSwxLDEwMCw1LDEwNywzLDExNCwyMTAsMTAwLDExLDEwNiwxLDEyNCwKKyAgICAyLDEzMSwxLDEyNSw4LDExNiwyLDEwNiwzLDEwMCw5LDEyNCw4LDEzMSwyLDEsCisgICAgMCwxMTYsNiwxMjQsOCwxMzEsMSwxMzAsMSwxMjQsMSwxMDAsMSwxMDcsOSwxNDQsCisgICAgMSwxMTQsMTI0LDEyMSwxNiwxMTYsNywxMjQsMSwxMDAsMTIsMjUsMCwxMzEsMSwxMjUsCisgICAgOSw4NywwLDExMCwyMiw0LDAsMTE2LDgsMTA3LDEwLDE0NCwxLDExNCwyLDEsCisgICAgMCwxLDAsMSwwLDg5LDAsMTEwLDUwLDg4LDAsMTE2LDksMTI0LDYsMTMxLAorICAgIDEsMTI0LDksMTA3LDMsMTQ0LDEsMTE0LDUyLDEwMCwxMywxMDYsMSwxMjQsMiwxMzEsCisgICAgMSwxMjUsOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsOCwxMzEsMiwxLDAsMTE2LAorICAgIDQsMTI0LDgsMTAyLDEsMTI0LDQsMTQyLDEsMTMwLDEsMTIxLDE2LDEyNCwxLDEwMCwKKyAgICAxNCwyNSwwLDEwMCwxNSw2NCwwLDEyNSwxMCw4NywwLDExMCwyMiw0LDAsMTE2LAorICAgIDgsMTA3LDEwLDE0NCwxLDExNCw5MCwxLDAsMSwwLDEsMCw4OSwwLDExMCwKKyAgICAzNCw4OCwwLDExNiw5LDEyNCw3LDEzMSwxLDEyNCwxMCwxMDcsMywxNDQsMSwxMTQsCisgICAgMTI0LDExNiw0LDEwMCwxMywxMDYsMSwxMjQsMiwxMzEsMSwxMDIsMSwxMjQsNCwxNDIsCisgICAgMSwxMzAsMSwxMjQsMCwxMDAsNywxMDAsMSwxMzMsMiwyNSwwLDgzLDAsNDEsCisgICAgMTYsOTcsMTIyLDEsMCwwLDg2LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsNDUsMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwKKyAgICAxMTEsMTAwLDEwMSwzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDQwLDEwNSwxMDIsMTAsMzIsMzIsMzIsCisgICAgMzIsMTAzLDEwNSwxMTgsMTAxLDExMCw0MSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKKyAgICAxMDAsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTksCisgICAgMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsCisgICAgMTA4LDEwMSw0MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDExMSwKKyAgICAxMTYsMTA0LDEwMSwxMTQsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywKKyAgICAxMTQsMTAxLDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMTAsMTA0LDk3LDExMCwKKyAgICA5OSwxMDEsMzIsMTAxLDExNCwxMTQsMTExLDExNCwzMiwxMTQsMTAxLDExMiwxMTEsMTE0LDExNiwxMDUsCisgICAgMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LAorICAgIDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LAorICAgIDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsCisgICAgMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwKKyAgICAxMTYsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LAorICAgIDExMSwzMiw5OCwxMDEsMzIsMTE1LDExNiw5NywxMDgsMTAxLDQ2LDMyLDY5LDc5LDcwLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LAorICAgIDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTA1LDExNSwzMiwKKyAgICAxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLAorICAgIDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA3OCwxMTQsMTAyLDAsMCwwLDEyMiwxMCw2MCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAorICAgIDEwMSw2MiwxMTQsMzcsMCwwLDAsMTE0LDE0LDAsMCwwLDIzMyw4LDAsMCwKKyAgICAwLDIzMywxMiwwLDAsMCwxMjIsMzAsOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LAorICAgIDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwKKyAgICA1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsMiwxMjMsMTI1LDEyMiw0MywxMTQsMTAxLDk3LDk5LAorICAgIDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSwKKyAgICA5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwKKyAgICAxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEyMiw0OCwxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLAorICAgIDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LAorICAgIDExMCwxMDMsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDExMSwxMDIsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDIxOCw1LDEwOSwxMTYsMTA1LDEwOSwxMDEsCisgICAgMTIyLDI2LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDExNiwKKyAgICA5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEyMywzMywxMTQsMTI1LDIxOCw0LDExNSwxMDUsCisgICAgMTIyLDEwMSwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwxMjcsMywwLDQxLDEwLDIxOCwKKyAgICAxMiw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsNTAsMCwKKyAgICAwLDAsMTE0LDExOCwwLDAsMCwyMTgsMTYsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwKKyAgICAxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDEwMywwLDAsMCwxMTQsMzMsCisgICAgMCwwLDAsMjE4LDgsNjksNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxNiwwLAorICAgIDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjEsMCwwLAorICAgIDAsNDEsMTEsMTE0LDU2LDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCwKKyAgICA5MCwxMSwxMDEsMTIwLDk5LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDUsMTA5LAorICAgIDk3LDEwMywxMDUsOTksOTAsMTMsMTE0LDk3LDExOSw5NSwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiwKKyAgICA5NywxMDksMTEyLDkwLDgsMTE0LDk3LDExOSw5NSwxMTUsMTA1LDEyMiwxMDEsMTE0LDc5LDAsCisgICAgMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsCisgICAgMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDEwNSwxMjIsMTAxLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyNSw5NSwxMTgsCisgICAgOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICA5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDE3MywxLDAsMCwxMTUsNzYsMCwwLDAsCisgICAgMCwxMSw0LDEsOCwxLDEwLDMsNCwxLDgsMSw4LDEsMTIsMSwKKyAgICAxMiwxLDEyLDEsOCwxLDEyLDEsMTIsMSwxNCwxLDEyLDEsMTAsMSwKKyAgICAxMiwxLDEwLDEsMTIsMSwxMCwxLDEyLDEsOCwxLDEwLDEsMiwxLAorICAgIDE2LDEsMTYsMSw2LDIsMTQsMSwxMCwxLDEyLDEsMTIsMSwyLDEsCisgICAgMTYsMSwxNiwxLDYsMiwxNCwxLDEyLDEsNiwxLDExNCwxMzksMCwwLAorICAgIDAsOTksNCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsODIsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LAorICAgIDAsMTMxLDEsMTI1LDQsMTE2LDIsMTI0LDQsMTE2LDMsMTMxLDIsMTE0LDU4LDExNiwKKyAgICA0LDEwNiw1LDEwMCwxLDEyNCwyLDEzMSwyLDEsMCwxMjQsMywxMDAsMiwxMDcsCisgICAgOSwxMTQsNTIsMTE2LDYsMTA2LDcsMTI0LDQsMTI0LDMsMTMxLDIsMSwwLDEyNCwKKyAgICA0LDgzLDAsMTEwLDIwLDExNiw4LDEwMCwzLDEwNiw5LDEyNCwyLDEzMSwxLDEyNCwKKyAgICAxLDEyNCwyLDEwMCw0LDE0MSwzLDEzMCwxLDEwMCwyLDgzLDAsNDEsNSwxMjIsCisgICAgNjAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsOTcsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLAorICAgIDMyLDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LAorICAgIDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTIyLDIxLDk5LAorICAgIDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsCisgICAgMTIzLDMzLDExNCwxMjUsNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMiwKKyAgICAxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw0MSwxMCwyMTgsNywxMDksOTcsCisgICAgMTE0LDExNSwxMDQsOTcsMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwxMDUsMTE1LAorICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwKKyAgICAxMTYsMTIxLDExMiwxMDEsMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDIxOCw0LAorICAgIDk1LDEwNSwxMDksMTEyLDkwLDE2LDk1LDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDEwMywwLDAsMCwxMTQsNTAsMCwwLDAsCisgICAgNDEsNSwxMTQsNTYsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsOTMsMCwwLAorICAgIDAsMTE0LDk0LDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsCisgICAgMTA5LDExMiwxMDUsMTA4LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMjgsMSwKKyAgICAwLDAsMTE1LDE2LDAsMCwwLDAsMiwxMCwxLDEwLDEsMTIsMSw4LAorICAgIDEsMTIsMSw2LDIsMTAsMSwxMTQsMTQ1LDAsMCwwLDExNCw2MiwwLDAsCisgICAgMCw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw1NiwwLDAsMCwxMTYsMCwxMTYsMSwxMzEsCisgICAgMSwxMjUsMywxMjQsMywxMDYsMiwxMTYsMywxMjQsMSwxMzEsMSwxMzEsMSwxLAorICAgIDAsMTI0LDMsMTA2LDIsMTE2LDMsMTI0LDIsMTMxLDEsMTMxLDEsMSwwLDEyNCwKKyAgICAzLDEwNiwyLDExNiw0LDEwNiw1LDEyNCwwLDEzMSwxLDEzMSwxLDEsMCwxMjQsCisgICAgMyw4MywwLDQxLDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk3LAorICAgIDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDExNiwKKyAgICAxMTEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE5LAorICAgIDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsCisgICAgOTgsMTIxLDExNiwxMDEsNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLDMyLAorICAgIDMyLDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLDk3LAorICAgIDExNCwxMTQsOTcsMTIxLDExNCwxMzIsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMDAsMTE0LDE5LDAsMCwwLDExNCwxNDAsMCwwLDAsOTAsNSwxMDAsMTE3LDEwOSwKKyAgICAxMTIsMTE1LDQxLDQsMTE0LDE0NCwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxMzgsCisgICAgMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsCisgICAgMTExLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDI0MCwxLDAsMCwxMTUsMTAsCisgICAgMCwwLDAsMCwzLDgsMSwxNCwxLDE0LDEsMTYsMSwxMTQsMTQ4LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDYyLDAsMCwwLDEwMCwxLDEwMCwyLAorICAgIDEwOCwwLDEyNSwxLDExNiwxLDEwNiwyLDEyNCwwLDEzMSwxLDEwNiwzLDEyNSwyLAorICAgIDEyNCwxLDEwNiw0LDEyNCwyLDEzMSwxLDEyNSwzLDExNiwxLDEwNiw1LDEwMCwyLAorICAgIDEwMCwzLDEzMSwyLDEyNSw0LDEyNCw0LDEwNiw2LDEyNCwwLDEwNiw2LDEyNCwzLAorICAgIDEwMCwxLDI1LDAsMTMxLDEsMTMxLDEsODMsMCw0MSw0LDEyMiwxMjEsNjgsMTAxLAorICAgIDk5LDExMSwxMDAsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLAorICAgIDExNSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LAorICAgIDExMSwxMDAsMTAxLDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgODUsMTEwLDEwNSwxMTgsMTAxLDExNCwxMTUsOTcsMTA4LDMyLDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLAorICAgIDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLDk5LDExMSwxMDAsMTA1LDExMCwKKyAgICAxMDMsNDYsMTAsMzIsMzIsMzIsMzIsMTE0LDYyLDAsMCwwLDc4LDg0LDQxLDcsCisgICAgMjE4LDgsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsNTIsMCwwLDAsOTAsCisgICAgNyw2NiwxMjEsMTE2LDEwMSwxMTUsNzMsNzksOTAsOCwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LAorICAgIDExMCwxMDEsOTAsMTUsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsCisgICAgMTA1LDExMCwxMDMsOTAsMjUsNzMsMTEwLDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCwKKyAgICA3OCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIxOCw2LAorICAgIDEwMCwxMDEsOTksMTExLDEwMCwxMDEsNDEsNSwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDE0OSwwLDAsMCw5MCwyMSwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LAorICAgIDExMCwxMDEsMjE4LDgsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLDE1LDExMCwxMDEsCisgICAgMTE5LDEwOCwxMDUsMTEwLDEwMSw5NSwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsMTAwLDEwMSwKKyAgICA5OSwxMTEsMTAwLDEwMSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDI1MCwxLDAsMCwxMTUsCisgICAgMTAsMCwwLDAsMCw1LDgsMSwxMiwxLDEwLDEsMTIsMSwxMTQsMTUzLAorICAgIDAsMCwwLDQxLDIsMTE0LDEyNCwwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk5LDIsMCwwLDAsMiwwLDAsMCw5LAorICAgIDAsMCwwLDE5LDAsMCwwLDY3LDAsMCwwLDExNSwxOCwxLDAsMCwKKyAgICAxMjQsMSwxMDAsMSwxMDcsOCwxMTQsNjAsMTAwLDIsMTI1LDEsMTE2LDAsMTI0LDIsCisgICAgMTAwLDMsMTMxLDIsMTE0LDcwLDEyMSwxNCwxMjQsMiwxMDYsMSwxMjQsMCwxMzEsMSwKKyAgICAxMjUsMSw4NywwLDExMyw3MCw0LDAsMTE2LDIsMTA3LDEwLDExNCw1NiwxLDAsCisgICAgMSwwLDEsMCw4OSwwLDExMyw3MCw4OCwwLDExMCwxMCwxMTYsMywxMDYsNCwKKyAgICAxMjQsMSwxMzEsMSwxMjUsMSwxMTYsNSwxMDYsNiwxMjQsMCwxMjQsMiwxMjQsMSwKKyAgICAxMDAsNCwxNDEsMywxMjUsNCwxMDAsNSwxMjQsNCw5NSw3LDEyNCwyLDEwMCwxLAorICAgIDEwNyw4LDExNCwxNTYsMTIwLDU0LDExNiw4LDEzMSwwLDY4LDAsOTMsNDAsOTIsMiwKKyAgICAxMjUsNSwxMjUsNiwxMjQsMSwxMDYsOSwxMTYsMTAsMTI0LDYsMTMxLDEsMTMxLDEsCisgICAgMTE0LDEwOCwxMjQsNSwxMjQsMCwxMjQsMSwxMzEsMiwxMjUsMiwxMjQsMiwxMjQsNCwKKyAgICA5NSwxMSw4MCwwLDExMywxMDgsODcsMCwxMDAsMSw4MywwLDEyNCwzLDExNiwxMiwKKyAgICAxMDcsOCwxMTQsMjIyLDExNiwwLDEyNCwyLDEwMCw2LDEzMSwyLDExNCwyMjgsMTIxLDE0LAorICAgIDEyNCwyLDEwNiwxMywxMjQsMCwxMzEsMSwxMjUsNyw4NywwLDExMCwyMCw0LDAsCisgICAgMTE2LDIsMTA3LDEwLDExNCwyMDgsMSwwLDEsMCwxLDAsODksMCwxMTMsMjI4LAorICAgIDg4LDAsMTI0LDcsMTE0LDIyOCwxMDMsMCwxMjQsNCw5NSwxNCwxMTAsNiwxMjQsMywKKyAgICAxMjQsNCw5NSwxNCwxMjQsNCwxMDYsMTQsMTAzLDAsMTA3LDIsMTQ0LDEsMTE0LDE0LAorICAgIDEyNCwxLDE0NCwxLDExNCwxNCwxMTYsMTUsMTI0LDEsMTMxLDEsMTAwLDcsMjUsMCwKKyAgICAxMjUsOCwxMjQsNCwxMDYsMTQsMTA2LDE2LDEyNCw4LDEzMSwxLDEsMCwxMjQsNCwKKyAgICA4MywwLDQxLDgsOTcsNjEsMSwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKKyAgICA5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywKKyAgICAxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLAorICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMTEsMzIsCisgICAgMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsNDQsMzIsMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LAorICAgIDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsCisgICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMzIsMTA4LAorICAgIDEwNSwxMTUsMTE2LDMyLDExMSwxMDIsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwxMTUsNDYsMzIsMzIsNjUsMTEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDEwMSwxMDksMTEyLDExNiwxMjEsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE1LDExNywKKyAgICAxMDIsMTAyLDEwNSw5OSwxMDUsMTAxLDExMCwxMTYsNDQsMzIsMTE2LDEwNCwxMTEsMTE3LDEwMywxMDQsCisgICAgMzIsMTA1LDExNiwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksMTA1LAorICAgIDExNSwxMDEsMzIsMTE3LDExNSwxMDEsMTAyLDExNywxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTUsMTIxLDExNSwxMTYsCisgICAgMTAxLDEwOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMzIsMTA5LDExNywxMTUsMTE2LDMyLDExNiw5NywxMDcsMTAxLDMyLDk3LDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNSwzMiwxMDUsMTE2LDExNSwzMiwxMTEsMTEwLDEwOCwxMjEsCisgICAgMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQwLDQxLDMyLDk3LDExNCwxMDMsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDksNjAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksCisgICAgMTEwLDYyLDIxOCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsCisgICAgNDEsMSwyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDYyLDAsMCwwLDQxLDE3LDExNCwxMTIsCisgICAgMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwzLDAsCisgICAgMCwwLDExNCw2NywwLDAsMCwxMTQsMTE4LDAsMCwwLDIxOCwxMCw3NywxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTAsMTMsOTUsMTE1LDEwMSwxMTYsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCwyNyw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LAorICAgIDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTUsMTE0LDk2LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsMTI0LAorICAgIDAsMCwwLDIxOCw5LDk1LDgwLDc5LDgwLDg1LDc2LDY1LDg0LDY5LDExNCwxNTcsCisgICAgMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsNDAsMCwwLDAsMjE4LDYsOTcsCisgICAgMTEyLDExMiwxMDEsMTEwLDEwMCw0MSw5LDExNCwxMDIsMCwwLDAsOTAsOCwxMDgsMTExLAorICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsCisgICAgMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTksCisgICAgMTA4LDk3LDExNSwxMTUsMjE4LDgsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTQsMTU3LAorICAgIDAsMCwwLDkwLDcsMTAwLDEwNSwxMTQsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDIzLDExNSwxMTIsMTAxLAorICAgIDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMTEsMiwwLDAsMTE1LDYyLDAsMCwwLDAsMTIsOCwKKyAgICA0LDQsMSwxMCwyLDIsMSwxNCwxLDE0LDEsOCwyLDEwLDgsMTYsCisgICAgMSw2LDMsOCwxLDE2LDEsMTQsMSwxMCwxLDYsMSw2LDIsNCwKKyAgICAzLDgsMiwxMCwxLDIsMSwxNCwxLDE0LDEsNiwyLDQsMSw4LAorICAgIDIsNiwxLDEyLDEsNiwxLDEyLDEsMTIsMiwxMTQsMTY1LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDgwLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsCisgICAgOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDkwLDQsMTAwLDMsOTAsNSwxMDAsNCwKKyAgICA5MCw2LDEwMSw3LDEwMCw1LDEwMCw2LDEzMiwwLDEzMSwxLDkwLDgsMTAxLDcsCisgICAgMTAwLDcsMTAwLDgsMTMyLDAsMTMxLDEsOTAsOSwxMDEsNywxMDAsMTQsMTAwLDEwLAorICAgIDEwMCwxMSwxMzIsMSwxMzEsMSw5MCwxMCwxMDEsNywxMDAsMTUsMTAwLDEyLDEwMCwxMywKKyAgICAxMzIsMSwxMzEsMSw5MCwxMSwxMDAsOSw4MywwLDQxLDE2LDIxOCwyMSw4NywxMDUsCiAgICAgMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwKLSAgICAxMDAsMTAxLDExNCw0Niw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsCi0gICAgMTE0LDEyMSw5OSwyLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxNiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTQzLDAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMTQsMjEsMCwxMjQsMCwwLDEwNiwxLDAsMTI1LDIsMCwxMTAsOSwKLSAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMjUsMiwwLDEyNCwyLDAsMTA2LDMsMCwKLSAgICAxMDAsMSwwLDEyNCwxLDAsMTAwLDIsMCwxMTYsNCwwLDEwNiw1LDAsMTAwLAotICAgIDAsMCwxMDAsMywwLDEzMywyLDAsMjUsMTMxLDAsMiwxMjUsMywwLDEyMSwKLSAgICA0NywwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEzMSwxLDAsMTQzLDI1LAotICAgIDAsMTI1LDQsMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsNCwwLAotICAgIDEzMSwyLDAsMTI1LDUsMCw4NywxMDAsMCwwLDgxLDgyLDg4LDg3LDExMCwyMiwKLSAgICAwLDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMTM4LDAsMSwxLDEsMTAwLDAsCi0gICAgMCw4Myw4OSwxMTAsMSwwLDg4LDEyNCw1LDAsODMsNDEsNSw3OCwxMTQsMTI4LAotICAgIDAsMCwwLDkwLDExLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwKLSAgICAxMTQsODIsMCwwLDAsMTE0LDMyLDAsMCwwLDQxLDEwLDIxOCwxMSw2OCw2OSwKLSAgICA2Niw4NSw3MSw5NSw2Niw4NSw3Myw3Niw2OCwyMTgsMTgsODIsNjksNzEsNzMsODMsCi0gICAgODQsODIsODksOTUsNzUsNjksODksOTUsNjgsNjksNjYsODUsNzEsMjE4LDEyLDgyLAotICAgIDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LDExNCw0OSwwLDAsMCwKLSAgICAxMTQsOCwwLDAsMCwyMTgsNywxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDE3MywKLSAgICAwLDAsMCwxMTQsMTcxLDAsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LDEyMSw4NiwKLSAgICA5NywxMDgsMTE3LDEwMSwxMTQsNDIsMCwwLDAsNDEsNiwxMTQsMTcyLDAsMCwwLAotICAgIDExNCwxMjgsMCwwLDAsOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwKLSAgICAxMDcsMTAxLDEyMSwxMTQsNSwwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICA5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk0LDIsMCwwLDExNSwyMiwwLAotICAgIDAsMCwwLDIsOSwxLDEyLDIsOSwxLDE1LDEsMjIsMSwzLDEsCi0gICAgMTgsMSwyOSwxLDEzLDEsOSwxLDEyMiwzOCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LAotICAgIDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKLSAgICA5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwKLSAgICA3OCw5OSw0LDAsMCwwLDAsMCwwLDAsOCwwLDAsMCwxNCwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTU4LDAsMCwwLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwwLDAsCi0gICAgMTA3LDgsMCwxMTQsMzEsMCwxMDAsMCwwLDgzLDEyMSwxNCwwLDExNiwxLDAsCi0gICAgMTI0LDQsMCwxMzEsMSwwLDEsODcsMTEwLDIyLDAsNCwxMTYsMiwwLDEwNywKLSAgICAxMCwwLDExNCw2OSwwLDEsMSwxLDEwMCwwLDAsODMsODksMTEwLDEsMCwKLSAgICA4OCwxMjAsODEsMCwxMTYsMywwLDEzMSwwLDAsNjgsOTMsNzAsMCw5MiwyLAotICAgIDAsMTI1LDUsMCwxMjUsNiwwLDEyNCw0LDAsMTA2LDQsMCwxMTYsNSwwLAotICAgIDEyNCw2LDAsMTMxLDEsMCwxMzEsMSwwLDExNCw4MCwwLDExNiw2LDAsMTA2LAotICAgIDcsMCwxMjQsMSwwLDEyNCw1LDAsMTI0LDEsMCwxMjQsNCwwLDEzMSwyLAotICAgIDAsMTAwLDEsMCwxMjQsNCwwLDEzMSwyLDEsMTI1LDcsMCwxMjQsNywwLAotICAgIDgzLDExMyw4MCwwLDg3LDEwMCwwLDAsODMsNDEsMiw3OCwxMTQsMTYwLDAsMCwKLSAgICAwLDQxLDgsMTE0LDE3OSwwLDAsMCwxMTQsNDEsMCwwLDAsMTE0LDQyLDAsCi0gICAgMCwwLDExNCwxNjMsMCwwLDAsMTE0LDk0LDAsMCwwLDExNCw5NSwwLDAsCi0gICAgMCwxMTQsMTIzLDAsMCwwLDIxOCwxNiwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwKLSAgICAxMDksOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MSw4LDExNCwxNzIsMCwwLDAsMTE0LAotICAgIDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LDYsMTE2LDk3LDExNCwxMDMsMTAxLAotICAgIDExNiwxMTQsMTc4LDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LDE2OCwwLDAsMCwKLSAgICAxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDIxOCw5LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxMDksCi0gICAgMiwwLDAsMTE1LDI2LDAsMCwwLDAsMiwxNSwxLDEyLDEsNCwxLAotICAgIDMsMSwxNCwxLDEzLDEsOSwxLDIyLDEsMjEsMSw5LDEsMTUsMSwKLSAgICA5LDEsMTIyLDMxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwKLSAgICAxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsCi0gICAgMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSw0NSwwLDAsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsMCwxMjQsCi0gICAgMywwLDEwMCwxLDAsMTA3LDksMCwxMTQsMzcsMCwxMjQsMywwLDEwNiwxLAotICAgIDAsODMsMTAwLDEsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDEwOCw3MCwxMDUsCi0gICAgMTEwLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsCi0gICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwKLSAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywKLSAgICAxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE4MiwwLAotICAgIDAsMCwxMTQsMTI5LDAsMCwwLDQxLDQsMTE0LDE3MiwwLDAsMCwxMTQsMTI4LAotICAgIDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTI1LDIsMCwwLDExNSw4LDAsCi0gICAgMCwwLDAsNywxOCwxLDEyLDEsNywyLDEyMiwzMyw4NywxMDUsMTEwLDEwMCwKKyAgICAxMDAsMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTUsMzIsMTAwLDEwMSw5OSwxMDgsOTcsMTE0LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwKKyAgICAxMTQsMTIxLDQ2LDEyMiw1OSw4MywxMTEsMTAyLDExNiwxMTksOTcsMTE0LDEwMSw5Miw4MCwxMjEsCisgICAgMTE2LDEwNCwxMTEsMTEwLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsNjcsMTExLDExNCwxMDEsOTIsCisgICAgMTIzLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMjUsOTIsNzcsMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsCisgICAgMTIyLDY1LDgzLDExMSwxMDIsMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwKKyAgICAxMTAsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwKKyAgICAxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSw5MiwxMjMsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSw5Miw2OCwxMDEsCisgICAgOTgsMTE3LDEwMyw3MCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNTAsMCwwLDAsMTIxLDE0LAorICAgIDExNiwwLDEwNiwxLDExNiwwLDEwNiwyLDEyNCwxLDEzMSwyLDgzLDAsNCwwLAorICAgIDExNiwzLDEwNywxMCwxMTQsNDQsMSwwLDEsMCwxLDAsMTE2LDAsMTA2LDEsCisgICAgMTE2LDAsMTA2LDQsMTI0LDEsMTMxLDIsODMsMCw4OCwwLDEwMCwwLDgzLDAsCisgICAgNDEsMSw3OCw0MSw1LDIxOCw3LDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsCisgICAgNzksMTEyLDEwMSwxMTAsNzUsMTAxLDEyMSw5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSwKKyAgICA4Miw4Miw2OSw3OCw4NCw5NSw4NSw4Myw2OSw4MiwxMTQsNDIsMCwwLDAsOTAsCisgICAgMTgsNzIsNzUsNjksODksOTUsNzYsNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsCisgICAgNzMsNzgsNjksNDEsMiwyMTgsMyw5OSwxMDgsMTE1LDExNCw1LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCwKKyAgICA5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5MSwyLAorICAgIDAsMCwxMTUsOCwwLDAsMCwwLDIsMiwxLDE0LDEsMTQsMSwxMjIsCisgICAgMzYsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLAorICAgIDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDYsMCwKKyAgICAwLDAsMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDExMiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMTQsMTQsMTI0LDAsMTA2LDEsMTI1LDIsMTEwLDYsMTI0LDAsMTA2LAorICAgIDIsMTI1LDIsMTI0LDIsMTA2LDMsMTI0LDEsMTAwLDEsMTE2LDQsMTA2LDUsMTAwLAorICAgIDAsMTAwLDIsMTMzLDIsMjUsMCwyMiwwLDEwMCwzLDE0MSwyLDEyNSwzLDEyMSwKKyAgICAzOCwxMjQsMCwxMDYsNiwxMjQsMywxMzEsMSwxNDMsMTgsMTI1LDQsMTE2LDcsMTA2LAorICAgIDgsMTI0LDQsMTAwLDQsMTMxLDIsMTI1LDUsODcsMCwxMDAsMCw4MSwwLDgyLAorICAgIDAsODgsMCw4NywwLDExMCwyMCw0LDAsMTE2LDksMTA3LDEwLDExNCwxMDYsMSwKKyAgICAwLDEsMCwxLDAsMTAwLDAsODMsMCw4OCwwLDEyNCw1LDgzLDAsNDEsCisgICAgNSw3OCwxMjIsNSwzNywxMDAsNDYsMzcsMTAwLDExNCw1OSwwLDAsMCw0MSwyLAorICAgIDExNCwxMjMsMCwwLDAsOTAsMTEsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDExNCwzMiwwLDAsMCw0MSwxMCwyMTgsMTEsNjgsNjksNjYsODUsNzEsCisgICAgOTUsNjYsODUsNzMsNzYsNjgsMjE4LDE4LDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LAorICAgIDk1LDc1LDY5LDg5LDk1LDY4LDY5LDY2LDg1LDcxLDIxOCwxMiw4Miw2OSw3MSw3MywKKyAgICA4Myw4NCw4Miw4OSw5NSw3NSw2OSw4OSwxMTQsNTAsMCwwLDAsMTE0LDgsMCwKKyAgICAwLDAsMjE4LDEyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCw5NSwxMDUsMTEwLDEwMiwxMTEsCisgICAgMTE0LDE2OSwwLDAsMCwxMTQsMTY3LDAsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LAorICAgIDEyMSw4Niw5NywxMDgsMTE3LDEwMSwxMTQsNDIsMCwwLDAsNDEsNiwxMTQsMTY4LDAsCisgICAgMCwwLDExNCwxMjMsMCwwLDAsOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LAorICAgIDEyMSw5NSwxMDcsMTAxLDEyMSwxMTQsNSwwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwKKyAgICAyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LAorICAgIDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk4LDIsMCwwLDExNSwKKyAgICAyMiwwLDAsMCwwLDIsNiwxLDgsMiw2LDEsNiwxLDIyLDEsCisgICAgMiwxLDEyLDEsMjYsMSwxNCwxLDYsMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsCiAgICAgMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEyLDExNCwKLSAgICAxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsCi0gICAgMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTc1LDAsMCwwLDExNCwxNzQsMCwKLSAgICAwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwKLSAgICAxNzMsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODMsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE3MCwwLDAsMCw3NSwyLDAsMCwKLSAgICAxMTUsMjAsMCwwLDAsMTIsMiw2LDMsNiwzLDYsMiw2LDIsMTgsCi0gICAgNywxOCwxNSwzLDEsMjEsMTUsMywxLDExNCwxNzAsMCwwLDAsOTksMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwKLSAgICAwLDAsMCwxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsCi0gICAgMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLAotICAgIDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAotICAgIDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsCi0gICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLAotICAgIDIxOCwxMyw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMTIyLAotICAgIDgzLDY2LDk3LDExNSwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDEwMiwzMiw5OSwKLSAgICAxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCi0gICAgMTAwLDMyLDk4LDEyMSwzMiw5OCwxMTEsMTE2LDEwNCwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsCi0gICAgMTAwLDEsMCwyNSwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLAotICAgIDEwMCwxLDAsMTMxLDIsMCwxMDAsMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsCi0gICAgMTI0LDMsMCwxMDAsNSwwLDEwNywyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsCi0gICAgNSwwLDEwNywzLDAsODMsNDEsNiwxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwKLSAgICAxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwKLSAgICAzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LDExNCwzMSwwLDAsMCwxMTQsNjAsMCwwLAotICAgIDAsMTE0LDYxLDAsMCwwLDExNCw1OCwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsCi0gICAgMTEwLDEwNSwxMTYsOTUsOTUsNDEsNCwxMTQsNDAsMCwwLDAsMTE0LDE1OSwwLDAsCi0gICAgMCwxMTQsMzYsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDUsMTE0LDExMCwwLAotICAgIDAsMCwxMTQsMTI4LDAsMCwwLDExNCw5NiwwLDAsMCw5MCwxMywxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsOTgsOTcsMTE1LDEwMSw5MCw5LDExNiw5NywxMDUsCi0gICAgMTA4LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwxNjEsMCwwLDAsMTQ0LDIsMCwwLDExNSw4LAotICAgIDAsMCwwLDAsMywyNSwxLDIyLDEsMTksMSwxMjIsMjQsOTUsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LAotICAgIDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLAotICAgIDEsMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywKLSAgICAxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCwKLSAgICA0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDE2NiwKKyAgICAxMTQsNDYsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LAorICAgIDExNCwxMjEsNzgsOTksNCwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsCisgICAgMTQsMCwwLDAsNjcsMCwwLDAsMTE1LDEyMCwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMjQsMSwxMzEsMSwxMjUsNCwxMjQsNCwxMDAsMCwxMDcsOCwxMTQsMjIsMTAwLAorICAgIDAsODMsMCwxMjEsMTIsMTE2LDEsMTI0LDQsMTMxLDEsMSwwLDg3LDAsMTEwLAorICAgIDIwLDQsMCwxMTYsMiwxMDcsMTAsMTE0LDU0LDEsMCwxLDAsMSwwLDEwMCwKKyAgICAwLDgzLDAsODgsMCwxMjAsNTgsMTE2LDMsMTMxLDAsNjgsMCw5Myw0OCw5MiwKKyAgICAyLDEyNSw1LDEyNSw2LDEyNCw0LDEwNiw0LDExNiw1LDEyNCw2LDEzMSwxLDEzMSwKKyAgICAxLDExNCw2NCwxMTYsNiwxMDYsNywxMjQsMSwxMjQsNSwxMjQsMSwxMjQsNCwxMzEsCisgICAgMiwxMjQsNCwxMDAsMSwxNDEsMywxMjUsNywxMjQsNyw4MywwLDExMyw2NCw4NywKKyAgICAwLDEwMCwwLDgzLDAsNDEsMiw3OCw0MSwxLDExNCwxNTYsMCwwLDAsNDEsCisgICAgOCwxMTQsMTc1LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsNDIsMCwwLDAsCisgICAgMTE0LDE1OSwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCwKKyAgICAxMTgsMCwwLDAsMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLDgsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwKKyAgICAxNzQsMCwwLDAsMTE0LDEyNCwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCwxNjIsCiAgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDEzLDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxNTIsMiwwLDAsMTE1LDAsMCwwLDAsMTIyLDI3LDk1LDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODAsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDU0LDAsMTE2LAotICAgIDIsMCwxMDAsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDExNiw0LDAsMTA2LDUsMCwxMTYsNiwwLAotICAgIDEyNCwyLDAsMTI0LDEsMCwxMDYsNywwLDEzMSwzLDAsMSwxMDAsMSwwLAotICAgIDgzLDQxLDMsMTIyLDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwxMTAsMTExLAotICAgIDExNiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsCi0gICAgMTE0LDEyNSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsCi0gICAgNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQxLAotICAgIDgsMjE4LDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTA5LDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTIzLDAsMCwwLDIxOCwKLSAgICAyNSw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwKLSAgICAxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwyMTgsNCwxMDEsMTIwLDEwMSw5OSwKLSAgICAxMTQsMTIwLDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwyMTgsNiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTQ4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxNTUsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMiwKLSAgICAxOCwxLDEyLDEsOSwxLDE1LDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMSw3OCwKLSAgICA0MSwyLDExNCwxMjMsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSw0MSwyLDExNCwxMTAsMCwwLAotICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTYzLDIsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsCi0gICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsCi0gICAgMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDgsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsCi0gICAgMTYxLDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDE5MiwwLDAsMCwxMTQsMTk0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxODUsMCwwLDAsMTM5LDIsMCwwLAotICAgIDExNSwxMCwwLDAsMCwxMiwzLDYsMiwxMiw4LDEyLDMsMTIsOCwxMTQsCi0gICAgMTg1LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwKLSAgICAwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsCi0gICAgMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywKLSAgICAwLDEwMCw4LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTEsMCwxMDAsMTgsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMCwxLDkwLDgsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwKLSAgICAwLDkwLDksMCwxMDAsMTcsMCw4Myw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLAotICAgIDAsMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzgsCi0gICAgNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTE2LDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LAotICAgIDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsMzIsMTE5LDEwNCwxMDEsMTE0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNSwxMTYsMTE0LDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwKLSAgICAzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsCi0gICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA5LDExNiwxMDUsMTA5LDEwMSwxNjksMiwwLDAsMTE1LDIsMCwwLDAsMCw2LAotICAgIDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksCi0gICAgMCwwLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEwNSwxLDAsODMsNDEsMiw5NywxNzAsMSwwLDAsNzksMTEyLDExNiwKLSAgICAxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE0LDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsOTcsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiwKLSAgICA5NywzMiwxMDAsMTA1LDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCi0gICAgMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDgwLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDEwNywxMDEsMTIxLAotICAgIDExNSw1OCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwzOSwxMDksMTE2LAotICAgIDEwNSwxMDksMTAxLDM5LDMyLDQwLDEwOSw5NywxMTAsMTAwLDk3LDExNiwxMTEsMTE0LDEyMSw0MSwKLSAgICAzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLAotICAgIDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTExLDEwMiwzMiwxMDgsOTcsMTE1LAotICAgIDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDk5LDExMSwxMDAsMTAxLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LAotICAgIDExNiwxMDUsMTExLDExMCw1OSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwKLSAgICAzOSwxMTUsMTA1LDEyMiwxMDEsMzksMzIsNDAsMTExLDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LAotICAgIDQxLDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLAotICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LAotICAgIDExMSwxMTksMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE2LAotICAgIDExMSwzMiwxMTQsMTAxLDk3LDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLAotICAgIDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwKLSAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsCi0gICAgMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEzNSwwLDAsMCw0MSwxLDExNCwxOTcsCi0gICAgMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDE3NywyLDAsMCwxMTUsMiwKLSAgICAwLDAsMCwwLDExLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDIsCi0gICAgMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSwxMjIsMjI4LDc5LDExMiwxMTYsMTA1LAotICAgIDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LAotICAgIDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICA5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwKLSAgICAxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywKLSAgICAxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwKLSAgICAxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwKLSAgICAxMDgsMTIxLDMyLDExNiwxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksCi0gICAgMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDQxLDEsMjE4LDgsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSw0LDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDkyLDAsMCwwLDkwLDEwLDk5LDk3LDk5LDEwNCwxMDEsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsMTE0LDU1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDE5MCwyLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDgsMTIyLDI4LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsMTUwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LAotICAgIDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwKLSAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLAotICAgIDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwKLSAgICAxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywKLSAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsCi0gICAgMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsCi0gICAgNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDQsMCwwLDAsCi0gICAgNDEsMywxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTUsMCwwLAorICAgIDAsMCwyMTgsOSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMTEzLDIsMCwKKyAgICAwLDExNSwyNiwwLDAsMCwwLDIsMTAsMSw4LDEsNCwxLDIsMSwKKyAgICAxMiwxLDE0LDEsNiwxLDE2LDEsMTQsMSw2LDEsOCwxLDgsMSwKKyAgICAxMjIsMzEsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsCisgICAgMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLAorICAgIDk5LDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM2LDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwKKyAgICAxLDEyNCwyLDEzMSwyLDEyNSwzLDEyNCwzLDEwMCwxLDEwNyw5LDExNCwyOCwxMjQsCisgICAgMywxMDYsMSw4MywwLDExMCw0LDEwMCwxLDgzLDAsMTAwLDEsODMsMCw0MSwKKyAgICAyLDEyMiwxMDgsNzAsMTA1LDExMCwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMDMsMTA1LAorICAgIDExNSwxMTYsMTE0LDEyMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCisgICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsCisgICAgMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwKKyAgICAxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwKKyAgICA0MSwyLDExNCwxNzgsMCwwLDAsMTE0LDEyNCwwLDAsMCw0MSw0LDExNCwxNjgsCisgICAgMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDE2MiwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyOSwyLAorICAgIDAsMCwxMTUsOCwwLDAsMCwwLDcsMTIsMSw4LDEsOCwyLDEyMiwKKyAgICAzMyw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDEsMiw3OCw3OCw0MSwxLDc4LDQxLDEyLDExNCwxMDksMCwwLDAsCisgICAgMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LAorICAgIDE3MiwwLDAsMCwxMTQsMTcxLDAsMCwwLDExNCwxNzAsMCwwLDAsMjE4LDExLAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNjksMCwwLDAsCisgICAgMTE0LDE3NSwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMTE0LDE2NiwwLDAsMCw3OSwyLDAsMCwxMTUsMjAsMCwwLAorICAgIDAsOCwyLDQsMyw0LDMsNCwyLDQsMiwxMiw3LDEyLDE1LDIsCisgICAgMSwxMiwxNSwyLDEsMTE0LDE2NiwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICA0OCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywKKyAgICAxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsCisgICAgMTAwLDYsMTAwLDcsMTMyLDAsOTAsNiwxMDAsOCwxMDAsOSwxMzIsMCw5MCw3LAorICAgIDEwMCwxMCw4MywwLDQxLDExLDIxOCwxMyw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsCisgICAgOTcsMTE1LDEwNSw5OSwxMTUsMTIyLDgzLDY2LDk3LDExNSwxMDEsMzIsOTksMTA4LDk3LDExNSwKKyAgICAxMTUsMzIsMTExLDEwMiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5OCwxMTEsMTE2LDEwNCwzMiwKKyAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsCisgICAgMTAsMzIsMzIsMzIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwKKyAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDUsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNjQsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTI0LDEsMTMxLDEsMTMxLDEsCisgICAgMTAwLDEsMjUsMCwxMjUsMiwxMjQsMiwxMDYsMiwxMDAsMiwxMDAsMSwxMzEsMiwKKyAgICAxMDAsMywyNSwwLDEyNSwzLDEyNCwxLDEwNiwzLDEwMCwyLDEzMSwxLDEwMCw0LAorICAgIDI1LDAsMTI1LDQsMTI0LDMsMTAwLDUsMTA3LDIsMTExLDYyLDEyNCw0LDEwMCw1LAorICAgIDEwNywzLDgzLDAsNDEsNiwxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwzMiw5OSwKKyAgICAxMDQsMTAxLDk5LDEwNywxMDUsMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsCisgICAgOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKKyAgICA0NiwxMTIsMTIxLDM5LDQ2LDExNCwzMSwwLDAsMCwxMTQsNjEsMCwwLDAsMTE0LAorICAgIDYyLDAsMCwwLDExNCw1OSwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsNDEsNCwxMTQsNDAsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsCisgICAgMzYsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDUsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMTIzLDAsMCwwLDExNCw5OCwwLDAsMCw5MCwxMywxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTgsOTcsMTE1LDEwMSw5MCw5LDExNiw5NywxMDUsMTA4LDk1LAorICAgIDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDExNCwxNTcsMCwwLDAsMTQ4LDIsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsMywxOCwxLDE2LDEsMTQsMSwxMjIsMjQsOTUsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsCisgICAgMCw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LAorICAgIDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0Niw3OCwKKyAgICAxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDE2MiwwLDAsCiAgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMTk5LDAsMCwwLDIwMCwyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjEsCi0gICAgODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiwKLSAgICA5NSwxMDAsOTcsMTE2LDk3LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDE2LDAsMCwwLDY3LDAsMCwwLDExNSwxMDUsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMSwxOSwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwKLSAgICA4NywxMTAsNTgsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxMjUsCi0gICAgNCwwLDEsMTIyLDI2LDAsMTE2LDMsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LAotICAgIDEsMCwxMzEsMSwxLDEyNCw0LDAsMTMwLDIsMCw4Nyw4OSwxMDAsMywwLAotICAgIDEwMCwzLDAsMTI1LDQsMCwxMjYsNCwwLDg4LDExMCwxLDAsODgsMTE2LDQsCi0gICAgMCwxMjQsMywwLDEzMSwxLDAsODMsNDEsNCwxMjIsNTIsNjcsMTExLDExMCw5OSwKLSAgICAxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwKLSAgICAxMjIsMzksMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsCi0gICAgMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsCi0gICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDQxLDExNCwxMDgsMCwwLDAsNzgsNDEsCi0gICAgNSwxMTQsMTU5LDAsMCwwLDIxOCw4LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsCi0gICAgMTE0LDQyLDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDE1NywwLDAsMCw0MSwKLSAgICA1LDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsCi0gICAgMTE0LDE1NSwwLDAsMCwyMTgsMywxMDEsMTIwLDk5LDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDIwNywyLDAsMCwxMTUsMTQsMCwwLDAsMCwyLAotICAgIDE1LDEsMywxLDE5LDEsMTgsMSw5LDEsMzEsMSwxMjIsMjMsODMsMTExLAotICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDIxOCw5LDk1LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsCi0gICAgMTE0LDMxLDAsMCwwLDk5LDMsMCwwLDAsMSwwLDAsMCw0LDAsCi0gICAgMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDExNiwKLSAgICAwLDAsMTA2LDEsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMDAsMSwKLSAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEyNCwzLDAsMTMxLDQsMiwKLSAgICA4Myw0MSw1LDEyMiwxMzAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsOTksMTExLDEwOSwxMTIsCi0gICAgMTA1LDEwOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksCi0gICAgMTAwLDk3LDExNiw5NywzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsOTksCi0gICAgOTcsMTEwLDMyLDk4LDEwMSwzMiw5NywxMTAsMTIxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICAzMiwxMTYsMTIxLDExMiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsOTksMTExLDEwOSwxMTIsMTA1LAotICAgIDEwOCwxMDEsNDAsNDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDExNSw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTkwLDAsMCwwLDIxOCwxMiwxMDAsMTExLAotICAgIDExMCwxMTYsOTUsMTA1LDExMCwxMDQsMTAxLDExNCwxMDUsMTE2LDg0LDExNCw3MCwwLDAsMCwKLSAgICA0MSwzLDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwyMTgsNyw5OSwxMTEsCi0gICAgMTA5LDExMiwxMDUsMTA4LDEwMSw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDU1LDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCwxMTQsMjA0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDk1LDExNiwxMTEsOTUsOTksMTExLDEwMCwxMDEsMjE3LDIsMCwwLDExNSw0LAotICAgIDAsMCwwLDAsNSwyMSwxLDEyMiwyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE2LDExMSw5NSwKLSAgICA5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMTAsMCwwLAotICAgIDAsNDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE3NCwxLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTAwLDEsMCwKLSAgICAxMjUsMywwLDEyMSwxNiwwLDExNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwKLSAgICA0LDAsODcsMTEwLDI0LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw2MywwLAotICAgIDEsMSwxLDEwMCwxLDAsMTI1LDQsMCw4OSwxMTAsMjAyLDAsODgsMTIxLDE5LAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsNSwwLAotICAgIDg3LDExMCwxOCwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMTAzLDAsMSwxLAotICAgIDEsODksMTEwLDE2MiwwLDg4LDExNiw1LDAsMTI0LDUsMCwxMDAsMiwwLDI1LAotICAgIDEzMSwxLDAsMTI1LDMsMCwxMjEsMTksMCwxMjQsMCwwLDEwNiw2LDAsMTI0LAotICAgIDQsMCwxMzEsMSwwLDEyNSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLAotICAgIDEwNywxMCwwLDExNCwxNTksMCwxLDEsMSw4OSwxMTAsMTA2LDAsODgsMTIxLDM0LAotICAgIDAsMTE2LDgsMCwxMjQsNiwwLDEwMCwzLDAsMTI0LDUsMCwxMDAsNCwwLAotICAgIDEyNCwxLDAsMTAwLDUsMCwxMjQsNCwwLDEzMSwxLDMsMTI1LDcsMCw4NywKLSAgICAxMTAsMjQsMCw0LDExNiw5LDAsMTE2LDEwLDAsMTAyLDIsMCwxMDcsMTAsMCwKLSAgICAxMTQsMjIwLDAsMSwxLDEsODksMTEwLDQ1LDAsODgsMTE2LDExLDAsMTAwLDYsCi0gICAgMCwxMjQsNCwwLDEyNCwyLDAsMTMxLDMsMCwxLDExNiwxMiwwLDEyNCw3LAotICAgIDAsMTAwLDQsMCwxMjQsMSwwLDEwMCw3LDAsMTI0LDQsMCwxMDAsOCwwLAotICAgIDEyNCwyLDAsMTMxLDEsMyw4MywxMjQsMCwwLDEwNiw2LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEyNSw4LDAsMTI0LDAsMCwxMDYsMTMsMCwxMjQsOCwwLDEyNCwKLSAgICAyLDAsMTMxLDIsMCwxMjUsOSwwLDExNiwxMSwwLDEwMCw5LDAsMTI0LDIsCi0gICAgMCwxMzEsMiwwLDEsMTE2LDE0LDAsMTA2LDE1LDAsMTIsMTE0LDE3MCwxLDEyNCwKLSAgICA0LDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNzAsMSwxMjQsMywwLDEwMCwxLAotICAgIDAsMTA3LDksMCwxMTQsMTcwLDEsMTE2LDE2LDAsMTI0LDksMCwxMjQsMywwLAotICAgIDExNiwxNywwLDEyNCw4LDAsMTMxLDEsMCwxMzEsMywwLDEyNSw2LDAsMTIxLAotICAgIDM2LDAsMTI0LDAsMCwxMDYsMTgsMCwxMjQsMiwwLDEyNCw0LDAsMTI0LDYsCi0gICAgMCwxMzEsMywwLDEsMTE2LDExLDAsMTAwLDEwLDAsMTI0LDQsMCwxMzEsMiwKLSAgICAwLDEsODcsMTEwLDE4LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCwxNjksMSwKLSAgICAxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCw5LDAsODMsNDEsMTEsMTIyLDE5MCwKLSAgICA2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsCi0gICAgOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLAotICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwxMDEsOTcsMTAwLAotICAgIDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCi0gICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LAotICAgIDk3LDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICA0NCwzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwKLSAgICA5NywxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKLSAgICAxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsCi0gICAgMTM1LDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTIyLDEzLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwzMiwKLSAgICAxMjMsMTI1LDExNCw5MSwwLDAsMCwxMTQsOTIsMCwwLDAsMTIyLDE5LDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLAotICAgIDEyNSwxMjIsMTAsMTE5LDExNCwxMTEsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw0MSwxOSwxMTQsCi0gICAgMTU5LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMjAxLDAsCi0gICAgMCwwLDExNCw0MiwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwxMDksMCwwLAotICAgIDAsMTE0LDEzOCwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxNDksMCwwLDAsCi0gICAgMTE0LDIwNywwLDAsMCwxMTQsOCwwLDAsMCwyMTgsMTksMTAwLDExMSwxMTAsMTE2LAotICAgIDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LAotICAgIDE1MiwwLDAsMCwxMTQsMzMsMCwwLDAsMTE0LDIwMCwwLDAsMCw0MSwxMCwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwKLSAgICAxNDEsMCwwLDAsMTE0LDkxLDAsMCwwLDIxOCwyLDExNSwxMTYsMTE0LDU1LDAsCi0gICAgMCwwLDIxOCwxMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LDExNiw5NywxMTQsMTU1LAotICAgIDAsMCwwLDkwLDExLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiwKKyAgICAyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE1NiwKKyAgICAyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjcsOTUsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw1NiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMjQsMSwxMDYsMSwxMzEsMSwxMjUsMiwxMjQsMiwxMDAsMSwxMDcsCisgICAgOCwxMTQsMzYsMTE2LDIsMTAwLDIsMTA2LDMsMTI0LDEsMTA2LDEsMTMxLDEsMTMxLAorICAgIDEsMTMwLDEsMTE2LDQsMTA2LDUsMTE2LDYsMTI0LDIsMTI0LDEsMTA2LDcsMTMxLAorICAgIDMsMSwwLDEwMCwxLDgzLDAsNDEsMywxMjIsMTksNjksMTIwLDEwMSw5OSwxMTcsCisgICAgMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMjIsCisgICAgNTIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDMsMTAxLAorICAgIDExNiw5NSw5OSwxMTEsMTAwLDEwMSw0MCw0MSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsCisgICAgMzIsNzgsMTExLDExMCwxMDEsNDEsOCwyMTgsOCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLAorICAgIDEwMSwxMTQsMTA5LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDUwLDAsMCwwLAorICAgIDExNCwxMTgsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsCisgICAgMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLAorICAgIDIxOCw0LDEwMSwxMjAsMTAxLDk5LDExNCwxMTUsMCwwLDAsNDEsMywxMTQsMTA0LDAsCisgICAgMCwwLDIxOCw2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLAorICAgIDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE1OSwyLDAsMCwxMTUsCisgICAgMTAsMCwwLDAsMCwyLDEyLDEsOCwxLDYsMSwxMCwxLDEyMiwyNSwKKyAgICA5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTAxLDEyMCwKKyAgICAxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTIsCisgICAgMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDAsMTI0LDEsMTMxLDIsODMsMCw0MSwKKyAgICAxLDEyMiwyNiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCisgICAgMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsNDEsMiwxMTQsCisgICAgMTE4LDAsMCwwLDIxOCwxNyw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE2NywKKyAgICAyLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI1LDk1LDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSw4LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLAorICAgIDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE1NywwLDAsCisgICAgMCwxMTQsMTgzLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE5MCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwxMTQsMTgxLDAsMCwwLDE0MywyLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsOCwzLDQsMiw4LDgsOCwzLDgsOCwxMTQsMTgxLDAsMCwKKyAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsNjQsMCwwLDAsMTE1LDc0LDAsMCwwLDEwMSwwLDkwLDEsMTAwLAorICAgIDAsOTAsMiwxMDAsMSwxMDAsMiwxMzIsMCw5MCwzLDEwMCwzLDEwMCw0LDEzMiwKKyAgICAwLDkwLDQsMTAwLDUsMTAwLDYsMTMyLDAsOTAsNSwxMDAsNywxMDAsOCwxMzIsCisgICAgMCw5MCw2LDEwMCw5LDEwMCwxMCwxMzIsMCw5MCw3LDEwMCwxOCwxMDAsMTIsMTU2LAorICAgIDEsMTAwLDEzLDEwMCwxNCwxMzIsMiw5MCw4LDEwMCwxNSwxMDAsMTYsMTMyLDAsOTAsCisgICAgOSwxMDAsMTcsODMsMCw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw4LDAsMCwwLDExNiwKKyAgICAwLDEzMCwxLDEwMCwxLDgzLDAsNDEsMiwxMjIsMTc4LDc5LDExMiwxMTYsMTA1LDExMSwKKyAgICAxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNiwxMDQsOTcsMTE2LDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMDUsCisgICAgMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDEwNSwxMDksMTAxLDMyLDQwLDk3LAorICAgIDExMCwzMiwxMDUsMTEwLDExNiw0MSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAorICAgIDMyLDExMiw5NywxMTYsMTA0LDQ0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTA1LDExNSwzMiw5NywzMiwxMTUsMTE2LDExNCw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw4Miw5NywxMDUsMTE1LDEwMSwxMTUsMzIsNzMsNzksNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDEsCisgICAgMjE4LDcsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDQxLDIsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsCisgICAgMTc0LDIsMCwwLDExNSwyLDAsMCwwLDAsNiwxMjIsMjMsODMsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDksCisgICAgMTE2LDEwNSwxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDEwMCwxLAorICAgIDEyNCwwLDEwNiwwLDEyNCwxLDEzMSwxLDEwNSwxLDgzLDAsNDEsMiw5NywxNzAsCisgICAgMSwwLDAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsOTcsMzIsMTA5LAorICAgIDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwxMDAsMTA1LDk5LDExNiwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsOTgsCisgICAgMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDExNSwxMTYsMTE0LDQxLAorICAgIDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgwLDExMSwxMTUsMTE1LDEwNSw5OCwKKyAgICAxMDgsMTAxLDMyLDEwNywxMDEsMTIxLDExNSw1OCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiw0NSwzMiwzOSwxMDksMTE2LDEwNSwxMDksMTAxLDM5LDMyLDQwLDEwOSw5NywxMTAsMTAwLAorICAgIDk3LDExNiwxMTEsMTE0LDEyMSw0MSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMTcsCisgICAgMTA5LDEwMSwxMTQsMTA1LDk5LDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsCisgICAgMTExLDEwMiwzMiwxMDgsOTcsMTE1LDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LDExMSwxMDAsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCw1OSwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiw0NSwzMiwzOSwxMTUsMTA1LDEyMiwxMDEsMzksMzIsNDAsMTExLDExMiwKKyAgICAxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDQxLDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExMSwxMDIsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LAorICAgIDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTQsMTAxLDk3LDEwMCwzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwxMDAsCisgICAgMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEzMCwwLAorICAgIDAsMCw0MSwxLDExNCwxOTMsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLAorICAgIDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LAorICAgIDE4MiwyLDAsMCwxMTUsMiwwLDAsMCwwLDExLDEyMiwyMyw4MywxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwKKyAgICAxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMjQsMCwKKyAgICAxMDYsMCwxMjQsMiwxMjQsMywxMzEsMiw4MywwLDQxLDEsMTIyLDIyOCw3OSwxMTIsCisgICAgMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LAorICAgIDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiwKKyAgICA0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCisgICAgMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSwKKyAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwNSwKKyAgICAxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwKKyAgICA5OSwxMTYsMTA4LDEyMSwzMiwxMTYsMTE0LDk3LDExMCwxMTUsMTAyLDEwMSwxMTQsMzIsMTEyLDEwMSwKKyAgICAxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw0MSwxLDIxOCw4LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsNCwKKyAgICAxMTQsMTA0LDAsMCwwLDExNCw5NCwwLDAsMCw5MCwxMCw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCw1NiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTUsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxOTUsMiwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCw4LDEyMiwyOCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKKyAgICA4MywwLDQxLDIsMTIyLDE1MCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsCisgICAgOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAorICAgIDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsCisgICAgMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCw0LDAsCisgICAgMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDU2LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCisgICAgMCwwLDExNCwxOTUsMCwwLDAsMjA1LDIsMCwwLDExNSwwLDAsMCwwLAorICAgIDEyMiwyMSw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwKKyAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDUsMCwwLDAsMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDgyLDAsMCwKKyAgICAwLDEyNCwwLDEwNiwwLDEyNCwxLDEzMSwxLDEyNSwyLDEyMSwxNCwxMjQsMCwxMDYsCisgICAgMSwxMjQsMiwxMzEsMSwxMjUsMyw4NywwLDExMCw0OCw0LDAsMTE2LDIsMTA3LAorICAgIDEwLDExNCw3MiwxLDAsMTI1LDQsMSwwLDEyMiwyMCwxMTYsMywxMDAsMSwxMjQsCisgICAgMSwxMDAsMiwxNDEsMiwxMjQsNCwxMzAsMiw4NywwLDg5LDAsMTAwLDMsMTAwLAorICAgIDMsMTI1LDQsMTI2LDQsODgsMCwxMTAsMiw4OCwwLDExNiw0LDEyNCwzLDEzMSwKKyAgICAxLDgzLDAsNDEsNCwxMjIsNTIsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwKKyAgICAxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwxMjIsMzksMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsCisgICAgMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDQwLDQxLDQxLDEsMTE0LDEwMiwwLDAsMCw3OCw0MSw1LDExNCwxNTUsCisgICAgMCwwLDAsMjE4LDgsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMTQsNDIsMCwKKyAgICAwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTUzLDAsMCwwLDQxLDUsMTE0LDEwNCwKKyAgICAwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTUxLDAsCisgICAgMCwwLDIxOCwzLDEwMSwxMjAsOTksMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMjE4LDEwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMjEyLDIsMCwwLDExNSwxNCwwLDAsMCwwLDIsMTAsMSwyLAorICAgIDEsMTQsMSwxNiwxLDQsMSwyOCwxLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMTE0LDMxLDAsMCwwLDQxLDEsMjE4LDksOTUsMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDEwMSw5OSwzLDAsMCwwLDEsMCwwLDAsNCwwLDAsCisgICAgMCw4LDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwKKyAgICAxMDYsMSwxMTYsMiwxMjQsMSwxMjQsMiwxMDAsMSwxMDAsMiwxMjQsMywxMDAsMywKKyAgICAxNDEsNiw4MywwLDQxLDQsMTIyLDEzMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiw5OSwKKyAgICAxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwMSwzMiwzOSwxMDAsOTcsMTE2LDk3LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk3LDExMCwxMjEsMzIsMTExLDk4LDEwNiwKKyAgICAxMDEsOTksMTE2LDMyLDExNiwxMjEsMTEyLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSwxMTEsCisgICAgMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTE1LAorICAgIDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxODYsMCwwLDAsODQsCisgICAgNDEsMiwyMTgsMTIsMTAwLDExMSwxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiwKKyAgICAxMTQsNzIsMCwwLDAsNDEsMywxMTQsMTE4LDAsMCwwLDExNCwxODUsMCwwLAorICAgIDAsMjE4LDcsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsNDEsNCwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCw1NiwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDIwMCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCisgICAgMTQsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsMTExLDk1LDk5LDExMSwxMDAsMTAxLDIyMiwKKyAgICAyLDAsMCwxMTUsNCwwLDAsMCwwLDUsMTIsMSwxMjIsMjcsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDk1LDExNiwxMTEsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDEwLDAsMCwwLDQzLDAsMCwwLDY3LDAsMCwwLDExNSw5NCwKKyAgICAxLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsMSwxMjUsMiwxMDAsMSwxMjUsCisgICAgMywxMjEsMTIsMTE2LDEsMTI0LDIsMTMxLDEsMTI1LDQsODcsMCwxMTAsMjQsNCwKKyAgICAwLDExNiwyLDEwNywxMCwxMTQsNTAsMSwwLDEsMCwxLDAsMTAwLDEsMTI1LAorICAgIDQsODksMCwxMTAsMTYyLDg4LDAsMTIxLDE0LDEyNCwwLDEwNiwzLDEyNCwyLDEzMSwKKyAgICAxLDEyNSw1LDg3LDAsMTEwLDIwLDQsMCwxMTYsNCwxMDcsMTAsMTE0LDg2LDEsCisgICAgMCwxLDAsMSwwLDg5LDAsMTEwLDEyNiw4OCwwLDExNiw1LDEyNCw1LDEwMCwKKyAgICAyLDI1LDAsMTMxLDEsMTI1LDMsMTIxLDE0LDEyNCwwLDEwNiw2LDEyNCw0LDEzMSwKKyAgICAxLDEyNSw2LDg3LDAsMTEwLDIwLDQsMCwxMTYsNywxMDcsMTAsMTE0LDEzNCwxLAorICAgIDAsMSwwLDEsMCw4OSwwLDExMCw3OCw4OCwwLDEyMSwyMCwxMTYsOCwxMjQsCisgICAgNiwxMjQsNSwxMjQsMSwxMjQsNCwxMDAsMywxNDEsNCwxMjUsNyw4NywwLDExMCwKKyAgICAyNCw0LDAsMTE2LDksMTE2LDEwLDEwMiwyLDEwNywxMCwxMTQsMTgwLDEsMCwxLAorICAgIDAsMSwwLDg5LDAsMTEwLDMyLDg4LDAsMTE2LDExLDEwNiwxMiwxMDAsNCwxMjQsCisgICAgNCwxMjQsMiwxMzEsMywxLDAsMTE2LDEzLDEyNCw3LDEyNCwxLDEyNCw0LDEyNCwKKyAgICAyLDEwMCw1LDE0MSw0LDgzLDAsMTI0LDAsMTA2LDYsMTI0LDIsMTMxLDEsMTI1LAorICAgIDgsMTI0LDAsMTA2LDE0LDEyNCw4LDEyNCwyLDEzMSwyLDEyNSw5LDExNiwxMSwxMDYsCisgICAgMTIsMTAwLDYsMTI0LDIsMTMxLDIsMSwwLDExNiwxNSwxMDYsMTYsMTIsMCwxNDQsCisgICAgMSwxMTQsOTAsMTI0LDQsMTAwLDEsMTA3LDksMTQ0LDEsMTE0LDkwLDEyNCwzLDEwMCwKKyAgICAxLDEwNyw5LDE0NCwxLDExNCw5MCwxMTYsMTcsMTI0LDksMTI0LDMsMTE2LDE4LDEyNCwKKyAgICA4LDEzMSwxLDEzMSwzLDEyNSw2LDEyMSwzMCwxMjQsMCwxMDYsMTksMTI0LDIsMTI0LAorICAgIDQsMTI0LDYsMTMxLDMsMSwwLDExNiwxMSwxMDYsMTIsMTAwLDcsMTI0LDQsMTMxLAorICAgIDIsMSwwLDg3LDAsMTEwLDIyLDQsMCwxMTYsMiwxMDcsMTAsMTQ0LDEsMTE0LAorICAgIDg4LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwxMjQsOSw4MywKKyAgICAwLDQxLDgsMTIyLDE5MCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwKKyAgICA3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAorICAgIDExNiw5NSw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiw4MiwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LAorICAgIDExNCwxMDUsMTE2LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSw0NCwzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLAorICAgIDEwOSwxMTcsMTE1LDExNiwzMiw5NywxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw3OCwxMTQsMTMwLDAsMCwwLDQxLDMsMTE0LDEzNiwwLDAsMCwKKyAgICAxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCwxMjIsMTMsMTIzLDEyNSwzMiwxMDksCisgICAgOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLDEyMywxMjUsNDEsMywxMTQsMTAyLDAsMCwwLAorICAgIDExNCw5MywwLDAsMCwxMTQsOTQsMCwwLDAsMTIyLDE5LDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDEyNSwxMjIsCisgICAgMTAsMTE5LDExNCwxMTEsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw0MSwyMCwxMTQsMTU1LDAsCisgICAgMCwwLDExNCw4MywwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDE5NCwwLDAsCisgICAgMCwxMTQsMTkyLDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMTk3LDAsMCwwLAorICAgIDExNCw0MiwwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LAorICAgIDEzNCwwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDE0NSwKKyAgICAwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCw4LDAsMCwwLDIxOCwxOSwxMDAsCisgICAgMTExLDExMCwxMTYsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCisgICAgMTAwLDEwMSwxMTQsMTQ4LDAsMCwwLDExNCwzMywwLDAsMCwxMTQsMTk2LDAsMCwKKyAgICAwLDQxLDEwLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsOTQsMCwKKyAgICAwLDAsMTE0LDEzNywwLDAsMCwxMTQsOTMsMCwwLDAsMjE4LDIsMTE1LDExNiwKKyAgICAxMTQsNTYsMCwwLDAsMjE4LDEwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsMTE2LAorICAgIDk3LDExNCwxNTEsMCwwLDAsOTAsMTEsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LDEwNiwKKyAgICAxMDEsOTksMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCisgICAgMCwwLDExNCwxODQsMCwwLDAsMjMwLDIsMCwwLDExNSw3OCwwLDAsMCwKKyAgICAwLDcsMTAsMSw0LDEsMiwxLDEyLDEsMTQsMSwxMCwyLDIsMSwKKyAgICAxNCwxLDE0LDEsNiwyLDEyLDEsMiwxLDE0LDEsMTQsMSw2LDIsCisgICAgMiwxLDQsMSw0LDEsMTIsMSwxOCwxLDYsMiw4LDEsNiwxLAorICAgIDYsMSwyLDEsOCwxLDEwLDEsMTIsMSwxMiwxLDIwLDEsMTAsMSwKKyAgICA2LDEsMTAsMSwyLDEsMTQsMSwxNiwxLDE2LDEsNiwxLDEyMiwyMSwKKyAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAorICAgIDk1LDk5LDExMSwxMDAsMTAxLDc4LDExNCw5MSwwLDAsMCw0MSwxMCwxMTQsMTA5LDAsCisgICAgMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTkzLDAsMCwKKyAgICAwLDExNCwxOTQsMCwwLDAsMTE0LDE5NiwwLDAsMCwxMTQsMTk1LDAsMCwwLAorICAgIDExNCwxOTksMCwwLDAsMTE0LDIwMywwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDExNCwxOTEsMCwwLDAsMTcyLDIsMCwwLDExNSwxNCwwLDAsCisgICAgMCw4LDIsOCw4LDgsMTMsOCwxMCw4LDcsOCwxMCwxNCw4LDExNCwKKyAgICAxOTEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsNCwwLDAsMCwwLDAsMCwwLDExNSw4MCwwLDAsMCwxMDEsMCwKKyAgICA5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCwKKyAgICA5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAwLDYsMTAwLDcsMTMyLDAsCisgICAgOTAsNiwxMDEsNywxMzUsMCwxMDIsMSwxMDAsOCwxMDAsOSwxMzIsOCwxMzEsMSwKKyAgICA5MCw4LDEwMSw3LDEwMCwxMCwxMDAsMTEsMTMyLDAsMTMxLDEsOTAsOSwxMDAsMTIsCisgICAgMTAwLDEzLDEzMiwwLDkwLDEwLDEzNSwwLDkwLDExLDEwMCwxNCw4MywwLDQxLDE1LAorICAgIDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDEwMyw2Niw5NywKKyAgICAxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LAorICAgIDEwOCw5NywxMTUsMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCisgICAgMTE1LDMyLDExNiwxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsMTE3LAorICAgIDExNSw5NywxMDMsMTAxLDQ2LDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwKKyAgICAxLDEyNCwwLDk1LDAsMTI0LDIsMTI0LDAsOTUsMSwxMDAsMSw4MywwLDQxLAorICAgIDIsMTIyLDc1LDY3LDk3LDk5LDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw3OCw0MSwKKyAgICAyLDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDMsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLAorICAgIDMxLDMsMCwwLDExNSw0LDAsMCwwLDAsMyw2LDEsMTIyLDE5LDcwLAorICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCisgICAgOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjQsMCwwLDAsMTI0LDAsMTA2LDAsCisgICAgMTI0LDEsMTA2LDAsMTA3LDIsMTExLDIyLDEyNCwwLDEwNiwxLDEyNCwxLDEwNiwxLAorICAgIDEwNywyLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywKKyAgICAxMTUsMTE1LDk1LDk1LDExNCwxMTUsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLAorICAgIDIxOCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwzNywzLAorICAgIDAsMCwxMTUsNCwwLDAsMCwwLDEsMTIsMSwxMjIsMTcsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDEsCisgICAgMTE2LDAsMTI0LDAsMTA2LDIsMTMxLDEsNjUsMCw4MywwLDQxLDEsNzgsNDEsCisgICAgMywyMTgsNCwxMDQsOTcsMTE1LDEwNCwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsCisgICAgMCw0MSwxLDExNCwxMDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsCisgICAgOTUsNDEsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsCisgICAgOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAorICAgIDAsMCwzLDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwxMTYsMSwxMjQsCisgICAgMCwxMzEsMiwxMDYsMiwxMjQsMSwxMzEsMSw4MywwLDQxLDEsMTIyLDEwMCw3NiwKKyAgICAxMTEsOTcsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwxMTQsMTExLAorICAgIDEwOSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LAorICAgIDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LAorICAgIDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsCisgICAgMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsNDEsMywyMTgsNSwxMTUsMTE3LDExMiwxMDEsMTE0LDExNCwyMDcsMCwwLAorICAgIDAsMTE0LDE5MCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLAorICAgIDAsMCw0MSwxLDExNCwyMDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMTE0LDE5MCwwLDAsMCw0NCwzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEwLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwxMjQsMCwxMDYsMCw4MywwLDQxLDEsMTIyLDU4LDgyLAorICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LAorICAgIDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiw5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsCisgICAgNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE1NSwwLDAsMCwKKyAgICA1NiwzLDAsMCwxMTUsMiwwLDAsMCwwLDMsMTIyLDIzLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsMzIsMCwwLDAsMTE2LDAsCisgICAgMTA2LDEsMTI0LDEsMTAwLDEsMTMxLDIsMTQzLDEwLDEyNSwyLDEyNCwyLDEwNiwyLAorICAgIDEzMSwwLDgzLDAsODEsMCw4MiwwLDg4LDAsMTAwLDIsODMsMCw0MSwzLAorICAgIDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsCisgICAgOTcsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNSwzMiwxMTQsCisgICAgOTcsMTE5LDMyLDk4LDEyMSwxMTYsMTAxLDExNSw0NiwyMTgsMSwxMTQsNzgsNDEsMywxMTQsCisgICAgNTIsMCwwLDAsMTE0LDUzLDAsMCwwLDkwLDQsMTE0LDEwMSw5NywxMDAsNDEsCisgICAgMywxMTQsMTA0LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTcsMCwwLDAsCiAgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAotICAgIDE4OCwwLDAsMCwyMjUsMiwwLDAsMTE1LDc4LDAsMCwwLDAsNywxNSwKLSAgICAxLDYsMSwzLDEsMTYsMSwxMywxLDExLDIsMywxLDE5LDEsMTMsCi0gICAgMSw1LDIsMTYsMSwzLDEsMTksMSwxMywxLDUsMiwzLDEsOSwKLSAgICAxLDEyLDEsMTMsMSwxOSwxLDUsMiw5LDEsNywxLDE1LDEsNiwKLSAgICAxLDcsMSwxNSwxLDE4LDEsMTMsMSwyMiwxLDEyLDEsOSwxLDE1LAotICAgIDEsMywxLDE5LDEsMTcsMSwxMywxLDUsMSwxMjIsMjEsODMsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCi0gICAgMTAwLDEwMSw3OCwxMTQsODksMCwwLDAsNDEsMTAsMTE0LDExNCwwLDAsMCwxMTQsCi0gICAgMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDE5NywwLDAsMCwxMTQsMTk4LAotICAgIDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsMjAzLDAsCi0gICAgMCwwLDExNCwyMDcsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMTk1LDAsMCwwLDE2NywyLDAsMCwxMTUsMTQsMCwwLDAsMTIsMiwKLSAgICAxMiw4LDEyLDEzLDEyLDEwLDEyLDcsMTIsMTAsMTgsOCwxMTQsMTk1LDAsMCwKLSAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwKLSAgICAwLDAsMCwwLDAsMCwxMTUsMTEyLDAsMCwwLDEwMSwwLDAsOTAsMSwKLSAgICAwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsCi0gICAgMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLAotICAgIDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwKLSAgICAwLDEwMSw3LDAsMTM1LDAsMCwxMDIsMSwwLDEwMCw4LDAsMTAwLDksMCwKLSAgICAxMzQsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSw3LDAsMTAwLDEwLDAsMTAwLAotICAgIDExLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDAsMTIsMCwxMDAsMTMsCi0gICAgMCwxMzIsMCwwLDkwLDEwLDAsMTM1LDAsMCw4Myw0MSwxNCwyMTgsMTAsNzAsCi0gICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiwxMDMsNjYsOTcsMTE1LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LAotICAgIDExNSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKLSAgICAxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTEyLDExNCwKLSAgICAxMTEsMTE2LDExMSw5OSwxMTEsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsCi0gICAgMTA0LDk3LDExNiwxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDExNywxMTUsOTcsMTAzLAotICAgIDEwMSw0Niw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwKLSAgICAwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiw3NSw2Nyw5Nyw5OSwxMDQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDYsNzgsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCw0MSwzLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NiwKLSAgICAwLDAsMCwyNiwzLDAsMCwxMTUsNCwwLDAsMCwwLDMsOSwxLAotICAgIDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LAotICAgIDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsMCwxMTEsMzMsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwNywyLDAsCi0gICAgODMsNDEsMSw3OCw0MSwyLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywxMTUsMTE1LDk1LAotICAgIDk1LDExNCwxMjAsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDIxOCw1LDExMSwKLSAgICAxMTYsMTA0LDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwzMiwzLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEsMTgsMSwxMjIsMTcsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMjYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsCi0gICAgMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDY1LDgzLDQxLAotICAgIDEsNzgsNDEsMywyMTgsNCwxMDQsOTcsMTE1LDEwNCwxMTQsMTA4LDAsMCwwLDExNCwKLSAgICAzNywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTA0LDk3LAotICAgIDExNSwxMDQsOTUsOTUsMzYsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwKLSAgICAxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LAotICAgIDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsMywwLDAsMCwzLDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwKLSAgICAwLDExNiwxLDAsMTI0LDAsMCwxMzEsMiwwLDEwNiwyLDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDgzLDQxLDEsMTIyLDEwMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsCi0gICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLAotICAgIDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMywyMTgsNSwKLSAgICAxMTUsMTE3LDExMiwxMDEsMTE0LDExNCwyMTEsMCwwLDAsMTE0LDE5NCwwLDAsMCw0MSwKLSAgICAyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCw0MSwxLDExNCwyMTIsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NCwwLDAsCi0gICAgMCwzOSwzLDAsMCwxMTUsMiwwLDAsMCwwLDEwLDEyMiwyMiw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsODMsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsCi0gICAgMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCw0Niw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwxMTAsMCwwLAotICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwxMTQsMTU5LDAsMCwwLDUxLDMsMCwwLDExNSwyLAotICAgIDAsMCwwLDAsMywxMjIsMjMsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCw5LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsCi0gICAgMCwxMDAsMSwwLDEzMSwyLDAsMTQzLDE3LDAsMTI1LDIsMCwxMjQsMiwwLAotICAgIDEwNiwyLDAsMTMxLDAsMCw4Myw4NywxMDAsMiwwLDgxLDgyLDg4LDEwMCwyLAotICAgIDAsODMsNDEsMywxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKLSAgICA5NywxMTUsMzIsMTE0LDk3LDExOSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsNDYsMjE4LDEsMTE0LAotICAgIDc4LDQxLDMsMTE0LDUxLDAsMCwwLDExNCw1MiwwLDAsMCw5MCw0LDExNCwKLSAgICAxMDEsOTcsMTAwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDU2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwyMDEsMCwwLDAsNTYsMywwLDAsMTE1LDQsMCwwLAotICAgIDAsMCwyLDIxLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDExLDExNCwxMTQsMCwwLAotICAgIDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsCi0gICAgMTE0LDE4NiwwLDAsMCwxMTQsMjE0LDAsMCwwLDExNCwyMTYsMCwwLDAsMTE0LAotICAgIDEyNSwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDIwMSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwKLSAgICAyMTIsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIxMSwwLDAsMCwyMSwzLAotICAgIDAsMCwxMTUsMTQsMCwwLDAsMTIsMyw2LDIsMTIsNiwxMiw0LDEyLAotICAgIDMsMjQsMTIsMTgsNSwxMTQsMjExLDAsMCwwLDk5LDAsMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LAotICAgIDY0LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAotICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAotICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCi0gICAgMCwxMDAsNywwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwxLDkwLDYsMCwKLSAgICAxMDAsMTAsMCw4Myw0MSwxMSwyMTgsMTYsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsNjIsNjcsMTExLDExMCw5OSwxMTQsMTAxLAotICAgIDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDMyLDExMSwxMDIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKLSAgICAzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw0Niw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLAotICAgIDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLAotICAgIDAsMTI0LDIsMCwxMDYsMSwwLDEwMCwyLDAsMTI0LDIsMCwxMDYsMiwwLAotICAgIDEwNSwyLDAsODMsNDEsMywxMjIsMzMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ2LDExNCwxMzUsMCwwLDAsMTE0LDEzNiwKKyAgICAxOTcsMCwwLDAsNjEsMywwLDAsMTE1LDQsMCwwLDAsMCwyLDE0LAorICAgIDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAorICAgIDExNiw5NSwxMDAsOTcsMTE2LDk3LDc4LDQxLDEyLDExNCwxMDksMCwwLDAsMTE0LDEwOCwKKyAgICAwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLAorICAgIDAsMCwxMTQsMjEwLDAsMCwwLDExNCwyMTIsMCwwLDAsMTE0LDEyMCwwLDAsCisgICAgMCwxMTQsMTkwLDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDE5NywwLDAsMCwKKyAgICA5MCwxMyw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5OSwxMDEsMTA4LDEwOCw5NSw5NSwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwyMDgsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDIwNywwLDAsMCwyNiwzLDAsMCwxMTUsMTQsCisgICAgMCwwLDAsOCwzLDQsMiw4LDYsOCw0LDgsMywxNiwxMiwxMiwKKyAgICA1LDExNCwyMDcsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsNDYsMCwwLDAsCisgICAgMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsCisgICAgMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LAorICAgIDE1NiwxLDEwMCw4LDEwMCw5LDEzMiwyLDkwLDYsMTAwLDEwLDgzLDAsNDEsMTEsCisgICAgMjE4LDE2LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTIyLDYyLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE3LDExNSwxMDUsMTEwLAorICAgIDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwKKyAgICAxMDksNDYsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsMTE2LDAsMTI0LDEsCisgICAgMTMxLDEsMTI1LDIsMTI0LDIsMTA2LDEsMTI0LDIsMTA2LDIsMTAwLDEsMTU2LDIsCisgICAgODMsMCw0MSwyLDEyMiwzMyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsNDEsMiwxMTQsMTMwLDAsMCwwLDExNCwxMzEsCiAgICAgMCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsMjE4LDgsMTE1LDExNiw5NSwxMDksCiAgICAgMTE2LDEwNSwxMDksMTAxLDkwLDcsMTE1LDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDEsMywxMTQsCi0gICAgMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMjA5LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTgsMCwKLSAgICAwLDAsNjYsMywwLDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTIyLAorICAgIDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDIwNSwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk0LDAsCisgICAgMCwwLDcxLDMsMCwwLDExNSw0LDAsMCwwLDAsMiw4LDEsMTIyLAogICAgIDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKICAgICAxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLAogICAgIDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDM0LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwKLSAgICA0LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMDAsMSwKLSAgICAwLDEyNCw0LDAsMTMxLDIsMSw4Myw0MSwyLDc4LDIxOCw1LDk1LDEwOSwxMTEsCi0gICAgMTAwLDEwMSw0MSwyLDExNCw5OSwwLDAsMCwxMTQsMTk5LDAsMCwwLDQxLDUsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCwKLSAgICA1NSwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIwMCwwLDAsMCw3MSwzLDAsCi0gICAgMCwxMTUsNCwwLDAsMCwwLDIsMTIsMSwxMjIsMzIsODMsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMjEsMCwwLAotICAgIDAsMTA1LDE4MiwxLDAsMCw5OSwzLDAsMCwwLDEsMCwwLDAsOSwKLSAgICAwLDAsMCwxNywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMSwwLDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LAotICAgIDUsMCwxMDMsMCwwLDEyNSw2LDAsMTIwLDU0LDAsMTI0LDQsMCwxMTQsODAsCi0gICAgMCwxMTYsMSwwLDEyNCw0LDAsMTMxLDEsMCwxMiwxMTQsODAsMCwxMTYsMCwKLSAgICAwLDEyNCw0LDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNywwLAotICAgIDEyNCw2LDAsMTA2LDIsMCwxMjQsNywwLDEzMSwxLDAsMSwxMTMsMjcsMCwKLSAgICA4NywxMjAsMTMyLDAsMTE2LDMsMCwxMjQsNiwwLDEzMSwxLDAsNjgsOTMsMTE4LAotICAgIDAsMTI1LDcsMCwxMTYsNCwwLDEyNCw0LDAsMTI0LDcsMCwxMzEsMiwwLAotICAgIDEyNSw0LDAsMTIxLDE3LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsMTMxLAotICAgIDEsMCwxLDg3LDExMyw5NCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTU1LAotICAgIDAsMSwxLDEsMTE5LDk0LDAsODksMTEzLDk0LDAsNCwxMTYsOCwwLDEwNywKLSAgICAxMCwwLDExNCwyMTEsMCwxLDEyNSw4LDAsMSwxMjIsMjUsMCwxMTYsOSwwLAotICAgIDEwMCwxLDAsMTI0LDQsMCwxMjQsOCwwLDEzMSwzLDAsMSwxMDAsMiwwLAotICAgIDgzLDg3LDg5LDEwMCwyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsCi0gICAgMTEzLDk0LDAsODgsMTEzLDk0LDAsODcsMTIxLDMzLDAsMTE2LDEwLDAsMTI0LDEsCi0gICAgMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDMsMCwxLDExNiw5LDAsMTAwLDMsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsMSw4NywxMTAsNTMsMCw0LDExNiw4LDAsCi0gICAgMTA3LDEwLDAsMTE0LDQ4LDEsMSwxMjUsOCwwLDEsMTIyLDIxLDAsMTE2LDksCi0gICAgMCwxMDAsMSwwLDEyNCwxLDAsMTI0LDgsMCwxMzEsMywwLDEsODcsODksCi0gICAgMTAwLDIsMCwxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTAsMSwwLAotICAgIDg4LDEwMCwyLDAsODMsNDEsNCwxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDQ2LDEyMiwyNyw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsCi0gICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDc4LDEyMiwxMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LAotICAgIDQxLDExLDExNCw0MCwwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDE2NSwwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwzLDAsMCwwLAotICAgIDkwLDUsMTA5LDEwNywxMDAsMTA1LDExNCwyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwKLSAgICAxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDQyLDAsMCwwLDExNCwxMDcsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDQxLDksMTE0LDExMCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDU1LDAsMCwwLDExNCwyMjEsMCwwLDAsMjE4LDYsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiwxMTQsOTYsMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwKLSAgICAyNSwwLDAsMCwxMTQsMjAyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTksMCwwLDAsNzYsMywwLAotICAgIDAsMTE1LDM4LDAsMCwwLDAsMiwxOCwxLDYsMiwyMiwxLDE4LDEsCi0gICAgMTcsMiwxOSwxLDE1LDEsMywxLDE3LDEsMTMsMiw3LDEsMTgsMywKLSAgICAxNiwxLDI3LDEsMywxLDE2LDEsMTcsMSwxOCwyLDEyMiwyNSw4MywxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwKLSAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNzgsNDEsNywxMTQsMTE0LDAsMCwwLDExNCwKLSAgICAxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwxOTgsCi0gICAgMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKLSAgICAwLDExNCwyMTksMCwwLDAsNjIsMywwLDAsMTE1LDgsMCwwLDAsMTIsCi0gICAgMiw2LDIsMTIsNSwxMiw1LDExNCwyMTksMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsNDYsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLAotICAgIDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwKLSAgICAxMDAsNiwwLDgzLDQxLDcsMjE4LDIwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLAotICAgIDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw0NSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwKLSAgICAxMDEsMTE1LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDMyLDEwMiwxMDUsCi0gICAgMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsNDYsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDUsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNzYsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI1LDMsMCwxMTYsMiwwLDEyNCwzLDAsMTAwLDEsMCwxMjQsMSwwLDEwMCwKLSAgICAyLDAsMTI0LDIsMCwxMzEsMSwyLDEyNSw0LDAsMTE2LDMsMCwxMjQsNCwKLSAgICAwLDEwMCwxLDAsMTI0LDEsMCwxMDAsMywwLDEyNCwyLDAsMTMxLDEsMiwKLSAgICA4Myw0MSw0LDc4LDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw5MSwKLSAgICAwLDAsMCw0MSw0LDExNCwxNTksMCwwLDAsMTE0LDIwMSwwLDAsMCwxMTQsCi0gICAgMTQzLDAsMCwwLDExNCwxNDksMCwwLDAsNDEsNSwxMTQsMTEwLDAsMCwwLAotICAgIDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsCi0gICAgMjEwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwxODgsMCwwLDAsMTA5LDMsMCwwLDExNSw4LDAsMCwKLSAgICAwLDAsMSwxNSwxLDE1LDEsMjQsMSwxMjIsMjksODMsMTExLDExNywxMTQsOTksCisgICAgMCwxMTUsMjQsMCwwLDAsMTE2LDAsMTI0LDEsMTMxLDEsMTI1LDQsMTI0LDAsCisgICAgMTA2LDEsMTI0LDIsMTI0LDMsMTI0LDQsMTAwLDEsMTQxLDMsODMsMCw0MSwyLAorICAgIDc4LDQxLDEsMjE4LDUsOTUsMTA5LDExMSwxMDAsMTAxLDQxLDIsMTE0LDEwMSwwLDAsCisgICAgMCwxMTQsMTk1LDAsMCwwLDQxLDUsMTE0LDEwNCwwLDAsMCwxMTQsOTQsMCwKKyAgICAwLDAsMTE0LDkzLDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMTE0LDE5NiwwLDAsMCw3NiwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsCisgICAgOCwxLDEyMiwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsMTA1LDE4MiwxLDAsMCw0MSwxLDExNCwyMTcsMCwwLDAsCisgICAgOTksMywwLDAsMCwxLDAsMCwwLDksMCwwLDAsMTcsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDI1MCwwLDAsMCwxMTYsMCwxMjQsMSwxMzEsMSwKKyAgICA5MiwyLDEyNSw0LDEyNSw1LDEwMywwLDEyNSw2LDEyMCw0MCwxMjQsNCwxMTQsNTYsCisgICAgMTE2LDEsMTI0LDQsMTMxLDEsMTIsMCwxMTQsNTYsMTE2LDAsMTI0LDQsMTMxLDEsCisgICAgOTIsMiwxMjUsNCwxMjUsNywxMjQsNiwxMDYsMiwxMjQsNywxMzEsMSwxLDAsCisgICAgMTEzLDE4LDg3LDAsMTIwLDEwOCwxMTYsMywxMjQsNiwxMzEsMSw2OCwwLDkzLDk2LAorICAgIDEyNSw3LDExNiw0LDEyNCw0LDEyNCw3LDEzMSwyLDEyNSw0LDEyMSwxNCwxMTYsNSwKKyAgICAxMDYsNiwxMjQsNCwxMzEsMSwxLDAsODcsMCwxMTMsNjgsNCwwLDExNiw3LAorICAgIDEwNywxMCwxMTQsMTE4LDEsMCwxLDAsMSwwLDExOSw2OCw4OSwwLDExMyw2OCwKKyAgICA0LDAsMTE2LDgsMTA3LDEwLDExNCwxNjIsMSwwLDEyNSw4LDEsMCwxMjIsMTgsCisgICAgMTE2LDksMTA2LDEwLDEwMCwxLDEyNCw0LDEyNCw4LDEzMSwzLDEsMCwxMDAsMiwKKyAgICA4MywwLDEwMCwyLDEyNSw4LDEyNiw4LDg4LDAsMTEzLDY4LDg4LDAsMTEzLDY4LAorICAgIDg3LDAsMTIxLDI4LDExNiwxMSwxMjQsMSwxMjQsMiwxMjQsMywxMzEsMywxLDAsCisgICAgMTE2LDksMTA2LDEwLDEwMCwzLDEyNCwxLDEzMSwyLDEsMCw4NywwLDExMCw0OCwKKyAgICA0LDAsMTE2LDgsMTA3LDEwLDExNCwyNDQsMSwwLDEyNSw4LDEsMCwxMjIsMjAsCisgICAgMTE2LDksMTA2LDEwLDEwMCwxLDEyNCwxLDEyNCw4LDEzMSwzLDEsMCw4NywwLAorICAgIDg5LDAsMTAwLDIsMTAwLDIsMTI1LDgsMTI2LDgsODgsMCwxMTAsMiw4OCwwLAorICAgIDEwMCwyLDgzLDAsNDEsNCwxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDQ2LDEyMiwyNyw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsOTksCisgICAgMTE0LDEwMSw5NywxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LAorICAgIDc4LDEyMiwxMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LDQxLAorICAgIDEyLDExNCw0MCwwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDE2MSwwLDAsMCwKKyAgICAxMTQsMzUsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwzLDAsMCwwLDkwLAorICAgIDUsMTA5LDEwNywxMDAsMTA1LDExNCwyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsCisgICAgMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDQyLDAsMCwwLDExNCwxMTgsMCwwLAorICAgIDAsMTE0LDEzMywwLDAsMCwxMTQsNTgsMCwwLDAsNDEsOSwxMTQsMTA0LDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDIxNywwLDAsCisgICAgMCwyMTgsNiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDExNCw5OCwwLDAsMCwxMTQsMjksCisgICAgMCwwLDAsMTE0LDI1LDAsMCwwLDExNCwxOTgsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NSwwLDAsCisgICAgMCw4MSwzLDAsMCwxMTUsNDIsMCwwLDAsMCwyLDEyLDEsNCwyLAorICAgIDE2LDEsMTIsMSwxNCwyLDE0LDEsMTAsMSwyLDEsMTQsMSwxNCwyLAorICAgIDYsMSwxNiwzLDYsMSw4LDEsMjAsMSwyLDEsMTIsMSwxNiwxLAorICAgIDE2LDIsOCwxLDEyMiwyNSw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNzgsCisgICAgNDEsNywxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsCisgICAgMCwxMTQsMTExLDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDE5NiwwLDAsMCwKKyAgICAxMTQsMTk1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTUsMCwwLDAsNjcsMywKKyAgICAwLDAsMTE1LDgsMCwwLDAsOCwyLDQsMiw4LDUsOCw1LDExNCwKKyAgICAyMTUsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsMzIsMCwwLDAsMTAxLDAsCisgICAgOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsCisgICAgOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDgzLDAsNDEsNywKKyAgICAyMTgsMjAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDQ1LDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTksCisgICAgMTA0LDEwNSw5OSwxMDQsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMTUsMzIsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDExNSw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLAorICAgIDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw0OCwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMjQsMSwxMzEsMSwxMjUsMiwxMjQsMCwxMDYsMSwxMjQsMiwxMzEsCisgICAgMSwxMjUsMywxMTYsMiwxMjQsMywxMjQsMSwxMjQsMiwxMDAsMSwxNDEsMywxMjUsCisgICAgNCwxMTYsMywxMjQsNCwxMjQsMSwxMjQsMiwxMDAsMiwxNDEsMyw4MywwLDQxLAorICAgIDMsNzgsNDEsMiwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw0MSwyLAorICAgIDExNCwxMDIsMCwwLDAsMTE0LDkzLDAsMCwwLDQxLDQsMTE0LDE1NSwwLDAsCisgICAgMCwxMTQsMTk3LDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDE0NSwwLDAsMCwKKyAgICA0MSw1LDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwwLAorICAgIDAsMTE0LDU2LDAsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTYsCisgICAgMywwLDAsMTE1LDgsMCwwLDAsMCwxLDEwLDEsMTAsMSwxNCwxLAorICAgIDEyMiwyOSw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsCisgICAgMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLAorICAgIDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk5LDAsMCwwLDEyMiwzLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDMxLDgzLDExMSwxMTcsMTE0LDk5LAogICAgIDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwKLSAgICAwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLAotICAgIDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyMDMsMCwwLDAsMTE1LDMsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiwxMjIsMzEsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw3OCw0MSw2LDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwKLSAgICAxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsCi0gICAgMjAzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTA1LDMsMCwKLSAgICAwLDExNSw2LDAsMCwwLDEyLDIsNiwyLDEyLDYsMTE0LDIyNCwwLDAsCi0gICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDY0LDAsMCwwLDExNSwxMzYsMCwwLDAsMTAxLDAsMCw5MCwxLAotICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKLSAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCi0gICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAotICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLAotICAgIDEwMCwxMSwwLDEzMiwwLDAsOTAsOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwKLSAgICAwLDAsOTAsOSwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsCi0gICAgMCwxMDAsMTYsMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDExLDAsMTAxLDEyLDAsCi0gICAgMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLAotICAgIDIwLDAsODMsNDEsMjEsMjE4LDE5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw5Myw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LAotICAgIDEwNCwxMDEsMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LDExMSwxMTQsMzIsMTA1LAotICAgIDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE5LDExMSwKLSAgICAxMTQsMTA3LDMyLDExOSwxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDMsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLAotICAgIDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsCi0gICAgMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMTA4LAotICAgIDAsMCwwLDExNCwzNywwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMzIsMywwLAotICAgIDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsCi0gICAgMCwxMTEsMzMsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLAotICAgIDEwNywyLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMTIsMCwwLDAsMTE0LDEyMCwKLSAgICAwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDIxMywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjE0LAotICAgIDAsMCwwLDEzNiwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsMTgsMSwKLSAgICAxMjIsMjYsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsNjUsODMsCi0gICAgNDEsMSw3OCw0MSwzLDExNCwyMTUsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsCi0gICAgMzcsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTYsMCwwLDAsMTQwLAotICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKLSAgICAwLDEzMSwyLDAsMTI1LDIsMCwxMTYsNCwwLDEwMCwxLDAsMTI0LDEsMCwKLSAgICAxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLDEsMTI0LDIsMCwKLSAgICA4Myw0MSwyLDEyMiwzOCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMTEwLDMyLDExNywKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLAotICAgIDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsMzgsMTAxLDEyMCwxMTYsCi0gICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLAotICAgIDMzLDExNCwxMjUsNDEsNywxMTQsMTIzLDAsMCwwLDExNCwxODksMCwwLDAsMTE0LAotICAgIDE0NywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTAwLDEyMSwxMTAsCi0gICAgOTcsMTA5LDEwNSw5OSwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwKLSAgICAxOTEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxNDMsMywwLDAsMTE1LDEwLDAsMCwKLSAgICAwLDAsMiw2LDEsMTUsMSw2LDEsMTYsMSwxMjIsMzMsNjksMTIwLDExNiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc4LDQxLDYsMTE0LDEwOSwwLAorICAgIDAsMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsCisgICAgMCwxMTQsMTg0LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAorICAgIDIyMCwwLDAsMCwxMTIsMywwLDAsMTE1LDYsMCwwLDAsOCwyLDQsCisgICAgMiw4LDYsMTE0LDIyMCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLDExNSw5MiwwLAorICAgIDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsMiwKKyAgICAxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAwLDYsCisgICAgMTAwLDcsMTMyLDAsOTAsNiwxMDAsOCwxMDAsOSwxMzIsMCw5MCw3LDEwMCwxMCwKKyAgICAxMDAsMTEsMTMyLDAsOTAsOCwxMDAsMTIsMTAwLDEzLDEzMiwwLDkwLDksMTAwLDE0LAorICAgIDEwMCwxNSwxMzIsMCw5MCwxMCwxMDAsMTYsMTAwLDE3LDEzMiwwLDkwLDExLDEwMSwxMiwKKyAgICAxMDAsMTgsMTAwLDE5LDEzMiwwLDEzMSwxLDkwLDEzLDEwMCwyMCw4MywwLDQxLDIxLAorICAgIDIxOCwxOSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwxMjIsOTMsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDk5LDExMSwKKyAgICAxMTAsMTE1LDExNiwxMTQsMTE3LDk5LDExNiwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsCisgICAgMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMTksMTA1LAorICAgIDExNiwxMDQsMzIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwKKyAgICAxMjQsMCw5NSwwLDEyNCwyLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLAorICAgIDc4LDQxLDIsMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMywxMTQsCisgICAgMTA0LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODIsMCwKKyAgICAwLDAsMTM5LDMsMCwwLDExNSw0LDAsMCwwLDAsMSw2LDEsMTIyLAorICAgIDI4LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyNCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMDYsMCwxMDcsCisgICAgMiwxMTEsMjIsMTI0LDAsMTA2LDEsMTI0LDEsMTA2LDEsMTA3LDIsODMsMCw0MSwKKyAgICAxLDc4LDQxLDIsMTE0LDIwOCwwLDAsMCwxMTQsMTE1LDAsMCwwLDQxLDIsCisgICAgMTE0LDEwNCwwLDAsMCwxMTQsMjA5LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTAsMCwwLDAsMTQzLDMsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMSwxMiwxLDEyMiwyNiw2OSwxMjAsMTE2LAogICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNDUsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwyLDAsMSwxMTYsNCwwLDEwMCwxLAotICAgIDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLAotICAgIDEsMTAwLDIsMCw4Myw0MSwzLDEyMiwzMCw3MywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LAotICAgIDEwNSwxMjIsMTAxLDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsNDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAotICAgIDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAxLAotICAgIDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSw3OCw0MSw3LDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsMTQ3LAotICAgIDAsMCwwLDkwLDEyLDEwMSwxMjAsMTAxLDk5LDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsCi0gICAgOTksMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCwKLSAgICA0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDE5MSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTkyLDAsMCwwLAotICAgIDE1MSwzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTksMSw2LDEsMTIyLAotICAgIDMxLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAotICAgIDAsMywwLDAsMCwxMTUsNDgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEwNiwxLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzNywwLDAsMTE2LDIsMCwKLSAgICAxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTE2LAotICAgIDMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsNDksODIsMTAxLAotICAgIDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDExNCwKLSAgICAzMSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCw0LDAsMCwwLDUxLDAsMCwwLDExNSwzMSwwLDAsMCwxMjQsMCwKLSAgICAwLDkzLDIxLDAsMTI1LDEsMCwxMzYsMCwwLDEwMCwwLDAsMTI0LDEsMCwKLSAgICAyMywxMDcsMiwwLDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQxLDIsMTE0LAotICAgIDE4NiwwLDAsMCw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsCisgICAgNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLDAsCisgICAgMCwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMTYsMCwxMjQsMCwxMDYsMiwxMzEsCisgICAgMSw2NSwwLDgzLDAsNDEsMSw3OCw0MSwzLDExNCwyMTEsMCwwLDAsMTE0LAorICAgIDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKKyAgICAyMTIsMCwwLDAsMTQ3LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsCisgICAgMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMzYsMCwwLDAsMTE2LDAsMTA2LDEsMTE2LDIsMTA2LDMsMTI0LAorICAgIDEsMTMxLDIsMTI1LDIsMTE2LDAsMTA2LDQsMTAwLDEsMTI0LDEsMTA2LDUsMTI0LAorICAgIDAsMTA2LDYsMTMxLDMsMSwwLDEyNCwyLDgzLDAsNDEsMiwxMjIsMzgsNjcsCisgICAgMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDExMCwzMiwxMTcsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwKKyAgICAxMDUsMTIyLDEwMSwxMDAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDM4LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDQxLDcsMTE0LAorICAgIDExOCwwLDAsMCwxMTQsMTg1LDAsMCwwLDExNCwxNDMsMCwwLDAsOTAsMTQsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksMTE0LDEzMywKKyAgICAwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw0MSwzLDExNCwKKyAgICAxMDQsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMTg3LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODMsMCwKKyAgICAwLDAsMTUwLDMsMCwwLDExNSwxMCwwLDAsMCwwLDIsNCwxLDEwLAorICAgIDEsNiwxLDEyLDEsMTIyLDMzLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LAorICAgIDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwzNiwwLAorICAgIDAsMCwxMTYsMCwxMDYsMSwxMTYsMiwxMDYsMywxMjQsMSwxMzEsMiwxLDAsCisgICAgMTE2LDAsMTA2LDQsMTAwLDEsMTI0LDAsMTA2LDUsMTI0LDAsMTA2LDYsMTMxLDMsCisgICAgMSwwLDEwMCwyLDgzLDAsNDEsMywxMjIsMzAsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LAorICAgIDEwOCwxMDUsMTIyLDEwMSwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKKyAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDQwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLAorICAgIDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLAorICAgIDExNCwxMjUsNzgsNDEsNywxMTQsMTE4LDAsMCwwLDExNCwxODUsMCwwLDAsMTE0LAorICAgIDE0MywwLDAsMCw5MCwxMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDAsMTIxLDExMCw5NywxMDksCisgICAgMTA1LDk5LDExNCwxMzMsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLAorICAgIDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4OCwwLDAsCisgICAgMCwxNTgsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE0LDEsNiwxLAorICAgIDEyMiwzMSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCisgICAgMCwwLDMsMCwwLDAsMTE1LDM2LDAsMCwwLDExNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEzMSwxLDEwMCwxLDI1LDAsMTM3LDAsMTE2LDIsMTM1LDAsMTAyLDEsMTAwLAorICAgIDIsMTAwLDMsMTMyLDgsMTE2LDMsNjgsMCwxMzEsMSwxMzEsMSw4MywwLDQxLAorICAgIDQsMTIyLDQ5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LAorICAgIDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSw0NiwxMTQsMzEsMCwwLDAsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsNCwwLDAsMCw1MSwwLDAsMCwxMTUsMjYsCisgICAgMCwwLDAsMTI0LDAsOTMsMTgsMTI1LDEsMTM2LDAsMTAwLDAsMTI0LDEsMjMsCisgICAgMCwxMDcsMiw4NiwwLDEsMCwxMTMsMiwxMDAsMSw4MywwLDQxLDIsMTE0LAorICAgIDE4MiwwLDAsMCw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsCiAgICAgMCwyMTgsNiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw0MSwxLDIxOCw5LDEwMiwxMDUsMTA4LAogICAgIDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyNTAsOSw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTYwLDMsMCwwLDExNSwKLSAgICAyLDAsMCwwLDYsMSwxMjIsNDksNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAorICAgIDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxNjcsMywwLDAsMTE1LAorICAgIDIsMCwwLDAsNCwxLDEyMiw0OSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsCiAgICAgMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiwKICAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCiAgICAgNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDQxLDQsMTE0LDQwLDAsMCwwLAogICAgIDExNCwzNywwLDAsMCwyMTgsMyw5NywxMTAsMTIxLDIxOCwxOCw2OSw4OCw4NCw2OSwKICAgICA3OCw4Myw3Myw3OSw3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MSwyLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwKLSAgICAxLDExNCwyMjcsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE2MSwwLDAsMCwKLSAgICAxNTcsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE5LDEsMTgsMSwxMjIsCisgICAgMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDQxLAorICAgIDEsMTE0LDIyMywwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTU3LDAsMCwwLAorICAgIDE2NCwzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTQsMSwxMiwxLDEyMiwKICAgICAzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKICAgICA5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwKICAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsCisgICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwKICAgICA2Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwKICAgICA5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsCiAgICAgMTE3LDEwOCwxMDEsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LAogICAgIDEwMSwzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDYsCi0gICAgNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwKKyAgICA3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLAogICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCi0gICAgMCwxMTQsMTg4LDAsMCwwLDE2MywzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDAsMTE0LDE4NCwwLDAsMCwxNzAsMywwLDAsMTE1LDIsMCwwLDAsMCwKICAgICAyLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLAogICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwKICAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsCisgICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwKICAgICA1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwKICAgICAxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKICAgICAxMTUsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwKLSAgICAwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwyMDMsMCwwLDAsMTY3LDMsMCwwLAorICAgIDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwNCwKKyAgICAwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCwxOTksMCwwLDAsMTc0LDMsMCwwLAogICAgIDExNSwyLDAsMCwwLDAsMiwxMjIsMzAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsCiAgICAgMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsCiAgICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw3LDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywKLSAgICAxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsCi0gICAgMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LAotICAgIDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNTksMCwwLDAsMTcxLDMsMCwKLSAgICAwLDExNSwyLDAsMCwwLDAsMywxMjIsMzIsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwKLSAgICAxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDQxLDE0LDExNCwxMTQsMCwKLSAgICAwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLAotICAgIDAsMTE0LDE4NiwwLDAsMCwxMTQsMjE0LDAsMCwwLDExNCwyMTYsMCwwLDAsCi0gICAgMTE0LDE4NywwLDAsMCwxMTQsMTkyLDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LAotICAgIDE4OCwwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCwxMjUsMCwwLDAsMTE0LDE1OSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMjI1LDAsMCwwLDEyNCwzLDAsMCwKLSAgICAxMTUsMjAsMCwwLDAsMTIsNiw2LDIsMTIsNCwxMiw0LDEyLDMsMTIsCi0gICAgOCwxMiw2LDEyLDYsMTIsNCwxMiw0LDExNCwyMjUsMCwwLDAsOTksMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwKLSAgICAwLDAsMCwxMTUsMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLAotICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwKLSAgICAxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDksMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LAotICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwwLDEwMCwxOSwwLAotICAgIDEzMiwwLDAsOTAsMTIsMCwxMDAsMjAsMCw4Myw0MSwyMSwyMTgsMTQsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwKLSAgICAwLDgyLDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwKLSAgICAxMTUsMzIsMTEyLDk3LDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwKLSAgICAzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LAotICAgIDExNiwzMiwxMDgsMTExLDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LAotICAgIDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLAotICAgIDEwNSwxMTUsMzIsMTE0LDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwKLSAgICAxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksCi0gICAgMTE1LDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMCwwLAotICAgIDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsCi0gICAgOTUsMSwwLDExNiwyLDAsMTI0LDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLAotICAgIDEsMCwxMjQsMCwwLDk1LDQsMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSw2LDIxOCw1LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDIxOCw1LDk1LDExMiw5NywxMTYsMTA0LDExNCw5NSwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsCi0gICAgMTcsOTUsMTA4LDk3LDExNSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDEsNCwxMTQsMTEwLDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwKLSAgICAwLDIxOCwxMSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsCi0gICAgMCwwLDE4NCwzLDAsMCwxMTUsOCwwLDAsMCwwLDEsOSwxLDksCi0gICAgMSwyMSwxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAotICAgIDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDUzLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwKLSAgICAxLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLAotICAgIDAsMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDQzLDAsMTAwLDYsMCwKLSAgICA4MywxMjQsMSwwLDEwMCw1LDAsMTAyLDIsMCw4Myw0MSw3LDEyMiw2Miw4MiwKLSAgICAxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwKLSAgICAxMDIsMzIsNDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NSwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywKLSAgICAxMTYsMTA0LDQ1LDk3LDExNiwxMTYsMTE0LDQ1LDExMCw5NywxMDksMTAxLDQxLDExNCw2MCwwLAotICAgIDAsMCwxMTQsMzIsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDM3LDAsMCwKLSAgICAwLDkwLDgsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDEsMiwxMTQsOCwwLAotICAgIDAsMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMjMyLDAsMCwwLDExNCwzNCwKLSAgICAwLDAsMCw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDIyMywwLDAsMCwyMTgsCi0gICAgMywxMDAsMTExLDExNiw5MCwyLDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwKLSAgICAxOTAsMywwLDAsMTE1LDgsMCwwLDAsMCwyLDI3LDEsMTIsMiw0LAotICAgIDMsMTIyLDM4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsCi0gICAgMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsOTIsMiwwLDEyNSwKLSAgICAxLDAsMTI1LDIsMCwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKLSAgICAwLDI1LDEyNCwyLDAsMTMxLDIsMCw4Myw0MSwxLDc4LDQxLDQsMTE0LDIzOSwKLSAgICAwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCw4LDAsMCwwLDIxOCw3LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0MSwzLDExNCwxMTAsMCwwLDAsOTAsMTgsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSw5MCwxNCwxMTIsOTcsMTE2LDEwNCw5NSw5NywxMTYsMTE2LDExNCw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMjM0LDAsMCwwLDIwMCwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsCi0gICAgMTgsMSwxMjIsMzEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywKLSAgICAxMTYsMTA0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTE4LDAsMCwwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCwxMDYsMiwwLDEwNywzLDAsMTE0LDExMSwwLDEyNCwwLAotICAgIDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEwMiwwLDEyNCwKLSAgICAyLDAsMTA2LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwMiwwLDEyNCwyLAotICAgIDAsMTA2LDYsMCwxMTQsMTAyLDAsMTI0LDIsMCwxMDYsNiwwLDEyNCwwLDAsCi0gICAgOTUsNywwLDEyNCwxLDAsMTI0LDAsMCw5NSwyLDAsMTI0LDAsMCwxMDYsCi0gICAgNywwLDgzLDQxLDEsNzgsNDEsOCwxMTQsOTUsMCwwLDAsMTE0LDIzNCwwLAotICAgIDAsMCwxMTQsMjM1LDAsMCwwLDExNCwyMzYsMCwwLDAsMTE0LDIzMiwwLDAsCi0gICAgMCwxMTQsMTI5LDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDIzMywwLDAsMCwKLSAgICA0MSwzLDExNCwxMTAsMCwwLDAsOTAsMTEsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiw5NSwxMTQsMTAxLDk5LDk3LDEwOCwKLSAgICA5OSwxMTcsMTA4LDk3LDExNiwxMDEsMjA0LDMsMCwwLDExNSwxNiwwLDAsMCwwLAotICAgIDIsMTgsMSwxNSwxLDIxLDMsMjcsMSw5LDEsMTIsMSw5LDEsMTIyLAotICAgIDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKLSAgICA5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwKLSAgICAxMTQsMTE0LDI0MSwwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsCi0gICAgMTA1LDExNiwxMDEsMTE0LDk1LDk1LDIxNywzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLAorICAgIDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNiwwLDAsCisgICAgMCwxMjQsMCwxMDYsMCw4MywwLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5NywxMTUsCisgICAgMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMTA0LAorICAgIDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE1NSwwLDAsMCwxNzgsMywwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwzLDEyMiwzMiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsNDEsMTQsMTE0LDEwOSwwLDAsCisgICAgMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwKKyAgICAxMTQsMTgyLDAsMCwwLDExNCwyMTAsMCwwLDAsMTE0LDIxMiwwLDAsMCwxMTQsCisgICAgMTgzLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTg0LAorICAgIDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDEyMCwwLDAsMCwxMTQsMTU1LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCwyMjEsMCwwLDAsMTMxLDMsMCwwLDExNSwKKyAgICAyMCwwLDAsMCw4LDYsNCwyLDgsNCw4LDQsOCwzLDgsOCwKKyAgICA4LDYsOCw2LDgsNCw4LDQsMTE0LDIyMSwwLDAsMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsCisgICAgMCwwLDExNSw5NiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLAorICAgIDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwKKyAgICAwLDkwLDUsMTAwLDYsMTAwLDcsMTMyLDAsOTAsNiwxMDAsOCwxMDAsOSwxMzIsCisgICAgMCw5MCw3LDEwMCwxMCwxMDAsMTEsMTMyLDAsOTAsOCwxMDAsMTIsMTAwLDEzLDEzMiwKKyAgICAwLDkwLDksMTAwLDE0LDEwMCwxNSwxMzIsMCw5MCwxMCwxMDAsMTYsMTAwLDE3LDEzMiwKKyAgICAwLDkwLDExLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTIsMTAwLDIwLDEwMCwyMSwxMzIsCisgICAgMCw5MCwxMywxMDAsMjIsODMsMCw0MSwyMywyMTgsMTQsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwwLDgyLDEwMSwKKyAgICAxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwxMTUsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsCisgICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNiwzMiwxMDgsCisgICAgMTExLDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsCisgICAgMTEwLDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgOTUsNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDk5LDEwNCwKKyAgICA5NywxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsCisgICAgMTE0LDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsCisgICAgMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwKKyAgICAxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTI0LDEsCisgICAgMTI0LDAsOTUsMCwxMjQsMiwxMjQsMCw5NSwxLDExNiwyLDEyNCwwLDEwNiwzLAorICAgIDEzMSwwLDEzMSwxLDEyNCwwLDk1LDQsMTI0LDMsMTI0LDAsOTUsNSwxMDAsMCwKKyAgICA4MywwLDQxLDEsNzgsNDEsNiwyMTgsNSw5NSwxMTAsOTcsMTA5LDEwMSwyMTgsNSwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTQsOTcsMCwwLDAsMjE4LDE2LDk1LDEwMywxMDEsMTE2LAorICAgIDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LDE3LDk1LDEwOCwKKyAgICA5NywxMTUsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LAorICAgIDEyLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQxLDQsMTE0LAorICAgIDEwNCwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCwyMTgsMTEsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MiwwLDAsMCwxOTEsCisgICAgMywwLDAsMTE1LDgsMCwwLDAsMCwxLDYsMSw2LDEsMTQsMSwKKyAgICAxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LAorICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwKKyAgICAwLDAsMCwxMjQsMCwxMDYsMCwxMDYsMSwxMDAsMSwxMzEsMSw5MiwzLDEyNSwKKyAgICAxLDEyNSwyLDEyNSwzLDEyNCwyLDEwMCwyLDEwNywyLDExNCwzMCwxMDAsNiw4MywKKyAgICAwLDEyNCwxLDEwMCw1LDEwMiwyLDgzLDAsNDEsNywxMjIsNjIsODIsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiwxMTEsMTAyLDMyLAorICAgIDQwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDUsMTEwLAorICAgIDk3LDEwOSwxMDEsNDQsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA0NSw5NywxMTYsMTE2LDExNCw0NSwxMTAsOTcsMTA5LDEwMSw0MSwxMTQsNjEsMCwwLDAsCisgICAgMTE0LDMyLDAsMCwwLDExNCw4LDAsMCwwLDExNCwzNywwLDAsMCw5MCwKKyAgICA4LDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQxLDIsMTE0LDgsMCwwLDAsCisgICAgMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDIyOCwwLDAsMCwxMTQsMzQsMCwwLAorICAgIDAsNDEsNCwxMTQsMTA0LDAsMCwwLDExNCwyMTksMCwwLDAsMjE4LDMsMTAwLAorICAgIDExMSwxMTYsOTAsMiwxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDIxOCwyMyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwKKyAgICAxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTk3LDMsCisgICAgMCwwLDExNSw4LDAsMCwwLDAsMiwxOCwxLDgsMiw0LDMsMTIyLAorICAgIDM4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKKyAgICA5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjgsMCwwLAorICAgIDAsMTI0LDAsMTA2LDAsMTMxLDAsOTIsMiwxMjUsMSwxMjUsMiwxMTYsMSwxMTYsCisgICAgMiwxMDYsMywxMjQsMSwyNSwwLDEyNCwyLDEzMSwyLDgzLDAsNDEsMSw3OCwKKyAgICA0MSw0LDExNCwyMzUsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsOCwwLDAsCisgICAgMCwyMTgsNywxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDEsMywxMTQsMTA0LDAsMCwKKyAgICAwLDkwLDE4LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsMTEyLDk3LDExNiwxMDQsOTUsOTcsMTE2LDExNiwxMTQsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMTE0LDIzMCwwLDAsMCwyMDcsMywwLDAsMTE1LDQsMCwKKyAgICAwLDAsMCwxLDEyLDEsMTIyLDMxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDgwLDAsMCwKKyAgICAwLDExNiwwLDEyNCwwLDEwNiwxLDEzMSwwLDEzMSwxLDEyNSwxLDEyNCwxLDEyNCwKKyAgICAwLDEwNiwyLDEwNywzLDExNCw3NCwxMjQsMCwxMDYsMywxMjQsMCwxMDYsNCwxMjQsCisgICAgMSwxMzEsMiwxMjUsMiwxMjQsMiwxMDAsMCwxMDcsOSwxMTQsNjgsMTI0LDIsMTA2LAorICAgIDUsMTAwLDAsMTA3LDgsMTE0LDY4LDEyNCwyLDEwNiw2LDExNCw2OCwxMjQsMiwxMDYsCisgICAgNiwxMjQsMCw5NSw3LDEyNCwxLDEyNCwwLDk1LDIsMTI0LDAsMTA2LDcsODMsCisgICAgMCw0MSwxLDc4LDQxLDgsMTE0LDk3LDAsMCwwLDExNCwyMzAsMCwwLDAsCisgICAgMTE0LDIzMSwwLDAsMCwxMTQsMjMyLDAsMCwwLDExNCwyMjgsMCwwLDAsMTE0LAorICAgIDEyNCwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwyMjksMCwwLDAsNDEsMywKKyAgICAxMTQsMTA0LDAsMCwwLDkwLDExLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LAorICAgIDEwOCw5NywxMTYsMTAxLDIxMSwzLDAsMCwxMTUsMTYsMCwwLDAsMCwyLDEyLAorICAgIDEsMTAsMSwxNCwzLDE4LDEsNiwxLDgsMSw2LDEsMTIyLDI3LDk1LAorICAgIDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMTQsCisgICAgMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsMCwwLAogICAgIDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwKLSAgICAxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMzMsMCwwLDAsMTE0LDI0MSwKLSAgICAwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsOTUsMTA4LDEwMSwxMTAsCi0gICAgOTUsOTUsMjIwLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjIsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LAotICAgIDEwOCwxMDEsMTEwLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwKLSAgICAxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwKLSAgICAyLDc4LDEyMiwyMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAotICAgIDExNiwxMDQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsNDksMCwwLDAsMTE0LAotICAgIDIzMywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTE0LDEwMSwKLSAgICAxMTIsMTE0LDk1LDk1LDIyMywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKLSAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCwxMDcsNiwKLSAgICAwLDgzLDQxLDEsNzgsNDEsMSwxMTQsMjQxLDAsMCwwLDQxLDIsMTE0LDExMCwKLSAgICAwLDAsMCwyMTgsNCwxMDUsMTE2LDEwMSwxMDksMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLDk1LDk1LDk5LDExMSwxMTAsMTE2LAotICAgIDk3LDEwNSwxMTAsMTE1LDk1LDk1LDIyNiwzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwyMCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsCi0gICAgMiwxMTQsMjMzLDAsMCwwLDExNCwxNjUsMCwwLDAsNDEsMiwxMTQsMTEwLDAsCi0gICAgMCwwLDExNCwyNDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDYsMCwwLDAsMTE0LDE2NSwwLDAsMCwyMjksMywwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwxLDEyMiwyMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw3OCw0MSwxMywKLSAgICAxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsCi0gICAgMTE2LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LDIzOSwwLDAsMCwxMTQsMjM0LAotICAgIDAsMCwwLDExNCwyNDEsMCwwLDAsMTE0LDI0MywwLDAsMCwxMTQsMjQ0LDAsCi0gICAgMCwwLDExNCwyNDUsMCwwLDAsMTE0LDI0NywwLDAsMCwxMTQsMTY1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwyMzEsMCwwLDAsMTc3LDMsMCwwLDExNSwyMCwKLSAgICAwLDAsMCwxMiw1LDYsMiwxMiw2LDEyLDEwLDEyLDQsMTIsMTMsMTIsCi0gICAgMywxMiwzLDEyLDMsMTIsMywxMTQsMjMxLDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDExOCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAxLDQsCi0gICAgMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwKLSAgICAxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDcsMCwxMDAsCi0gICAgOCwwLDEzMiwwLDAsOTAsNywwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsCi0gICAgMCw5MCw4LDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCw5MCw5LDAsCi0gICAgMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxNSwwLDEwMCwKLSAgICAxNiwwLDEzMiwwLDAsOTAsMTEsMCwxMDAsMTcsMCw4Myw0MSwxOCwyMTgsMTYsCi0gICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLAotICAgIDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLDEyNCwwLDAsOTUsMSwwLDEwMCwKLSAgICAwLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMzEsMCwwLDAsMTE0LDIzMywwLAotICAgIDAsMCw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDIzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsMCwwLDIzNSwzLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKKyAgICAxMiwwLDAsMCwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMCwxMzEsMSw4MywwLAorICAgIDQxLDEsNzgsNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwxMTQsMTE0LDIzNywwLDAsMCwKKyAgICA0MSwxLDExNCwxMDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LAorICAgIDIyNCwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIzLDk1LDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTE2LAorICAgIDEwMSwxMTQsOTUsOTUsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTI0LDIsCisgICAgMTI0LDAsMTA2LDAsMTI0LDEsNjAsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsCisgICAgMSwxMTQsMjI5LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwyMTgsNSwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTIwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsOTUsOTUsMTE1LDEwMSwxMTYsMTA1LAorICAgIDExNiwxMDEsMTA5LDk1LDk1LDIyNywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsCisgICAgMTIyLDI2LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCwKKyAgICA0Niw5NSw5NSwxMTUsMTAxLDExNiwxMDUsMTE2LDEwMSwxMDksOTUsOTUsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDAsMTMxLDEsCisgICAgODMsMCw0MSwxLDc4LDQxLDIsMTE0LDMzLDAsMCwwLDExNCwyMzcsMCwwLAorICAgIDAsNDEsMSwxMTQsMTA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCw3LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LAorICAgIDIzMCwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIyLDk1LDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDgsMTAxLAorICAgIDExMCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsCisgICAgMCwxMjQsMCwxMDYsMSwxMzEsMSw4MywwLDQxLDIsNzgsMTIyLDIwLDk1LDc4LAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwxMjMsMzMsMTE0LAorICAgIDEyNSw0MSw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMjI5LDAsMCwwLDQxLDEsCisgICAgMTE0LDEwNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwyMTgsOCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMjMzLDMsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCwKICAgICA5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwKLSAgICAwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LAotICAgIDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLAotICAgIDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsCi0gICAgMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLAotICAgIDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDEyMiwyNSw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSwzMiw0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw2Miw0MSwyLAotICAgIDExNCw0OSwwLDAsMCwxMTQsMTE0LDAsMCwwLDQxLDIsMTE0LDE3MiwwLDAsCi0gICAgMCwxMTQsMTkxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLAotICAgIDExMiwxMTQsMjM4LDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjgsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDc4LDg0LDExNCw0LDAsCi0gICAgMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNjEsMCwKLSAgICAwLDAsMjQ3LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsMTE0LDMyLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTI0LDEsMTI0LDAsCisgICAgMTA2LDAsMTMxLDAsMTA3LDYsODMsMCw0MSwxLDc4LDQxLDEsMTE0LDIzNywwLAorICAgIDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMjE4LDQsMTA1LDExNiwxMDEsMTA5LDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiwKKyAgICA5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSwyMzYsMywwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LAorICAgIDExMCwxMTUsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDAsCisgICAgMTA2LDAsMTA2LDEsMTI0LDEsMTMxLDEsMSwwLDEwMCwwLDgzLDAsNDEsMSwKKyAgICA3OCw0MSwyLDExNCwyMjksMCwwLDAsMTE0LDE2MSwwLDAsMCw0MSwyLDExNCwKKyAgICAxMDQsMCwwLDAsMTE0LDI0NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTYxLDAsMCwwLDIzOSwzLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LAorICAgIDQxLDE0LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwKKyAgICAwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMjM1LDAsMCwwLAorICAgIDExNCwyMzAsMCwwLDAsMTE0LDIzNywwLDAsMCwxMTQsMjM5LDAsMCwwLDExNCwKKyAgICAyNDEsMCwwLDAsMTE0LDI0MiwwLDAsMCwxMTQsMjQzLDAsMCwwLDExNCwyNDUsCisgICAgMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjI3LDAsMCwKKyAgICAwLDE4NCwzLDAsMCwxMTUsMjIsMCwwLDAsOCw1LDQsMiw4LDYsCisgICAgOCwxMCw4LDQsOCwxMyw4LDMsOCwzLDgsMyw4LDMsOCwzLAorICAgIDExNCwyMjcsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsODAsMCwwLDAsMTAxLAorICAgIDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDEwMCwyLDEzMiwwLDkwLDMsMTAxLAorICAgIDQsMTAwLDMsMTAwLDQsMTMyLDAsMTMxLDEsOTAsNSwxMDAsNSwxMDAsNiwxMzIsCisgICAgMCw5MCw2LDEwMCw3LDEwMCw4LDEzMiwwLDkwLDcsMTAwLDksMTAwLDEwLDEzMiwKKyAgICAwLDkwLDgsMTAwLDExLDEwMCwxMiwxMzIsMCw5MCw5LDEwMCwxMywxMDAsMTQsMTMyLAorICAgIDAsOTAsMTAsMTAwLDE1LDEwMCwxNiwxMzIsMCw5MCwxMSwxMDAsMTcsODMsMCw0MSwKKyAgICAxOCwyMTgsMTYsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTE2LDAsMTI0LAorICAgIDEsMTI0LDIsMTI0LDMsMTMxLDMsMTI0LDAsOTUsMSwxMDAsMCw4MywwLDQxLAorICAgIDEsNzgsNDEsMiwxMTQsMjI3LDAsMCwwLDExNCwyMjksMCwwLDAsNDEsNCwKKyAgICAxMTQsMTA0LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKKyAgICAyMzMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMTE0LDE4MiwwLDAsMCwyNDUsMywwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwxLDEyMiwyNSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTIsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDEsMTA2LDEsCisgICAgMTMxLDEsODMsMCw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTQsCisgICAgMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwKKyAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsCisgICAgOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwxMDEsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwxMDIsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDI1LDYwLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDQxLDYyLDQxLDIsMTE0LDUwLDAsMCwwLDExNCwxMDksMCwKKyAgICAwLDAsNDEsMiwxMTQsMTY4LDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwyNDgsMywwLDAsMTE1LDIsCisgICAgMCwwLDAsMCw3LDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsCisgICAgMTAxLDExMiwxMTQsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywKKyAgICAwLDQxLDIsNzgsODQsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDE1NywwLDAsMCwxLDQsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLAorICAgIDQxLDIsNzgsMTE0LDMyLDAsMCwwLDExNCw0LDAsMCwwLDQxLDIsMTE0LAorICAgIDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTksMCwwLDAsNCw0LDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LAorICAgIDAsMTAwLDEsMTAwLDIsMTAwLDMsMTAwLDQsMTAwLDUsMTQxLDQsODMsMCw0MSwKKyAgICA2LDc4LDExNCwzMiwwLDAsMCwxMjIsOCw2MCwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywKKyAgICA2MiwxMTQsMTg2LDAsMCwwLDg0LDQxLDEsMTE0LDIwMSwwLDAsMCw0MSwxLAorICAgIDExNCwyMDIsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLAogICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDIwMywwLDAsMCwyNTAsMywwLDAsMTE1LDIsMCwwLDAsMCwxLAotICAgIDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDYsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTAwLDQsMCwxMDAsNSwwLDEzMSwzLDEsODMsNDEsNiw3OCwKLSAgICAxMTQsMzIsMCwwLDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjIsMTE0LAotICAgIDE5MCwwLDAsMCwxMTQsMjA1LDAsMCwwLDg0LDQxLDEsMTE0LDIwNiwwLDAsCi0gICAgMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg4LDAsMCwKLSAgICAwLDI1MywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywKLSAgICAxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLAotICAgIDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLAotICAgIDk3LDExNywxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsCi0gICAgMTExLDExMCw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsCi0gICAgMTE0LDE2NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNiwwLDAsMCwxMTQsMTg3LDAsMCwwLDAsNCwwLDAsMTE1LDAsMCwKLSAgICAwLDAsMTIyLDMwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwwLDAsODMsCi0gICAgNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDE5MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTkyLDAsMCwwLDMsNCwwLDAsMTE1LDIsMCwwLAotICAgIDAsMCwxLDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwwLDEwMCwxLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsMSwxMTYsMiwwLDEwNiwzLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMiwxMjIsOTgsNzYsCi0gICAgMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLAotICAgIDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwKLSAgICAzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsCi0gICAgMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwxMjIsMzgsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDEsNCwxMTQsMTA3LDAsMCwwLAotICAgIDExNCwyMzMsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTkzLDAsMCwwLDQxLAotICAgIDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTQsMCwwLDAsNiwKLSAgICA0LDAsMCwxMTUsNCwwLDAsMCwwLDcsMTYsMSwxMjIsMjgsOTUsNzgsCisgICAgMTE0LDE4NCwwLDAsMCw3LDQsMCwwLDExNSwyLDAsMCwwLDAsMSwKKyAgICAxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsCisgICAgMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsCisgICAgOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwKKyAgICAxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LAorICAgIDEwNCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODMsMCwwLDAsMTAsNCwwLAorICAgIDAsMTE1LDAsMCwwLDAsMTIyLDMwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLAorICAgIDEwMCwwLDgzLDAsNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsCisgICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg4LDAsMCwwLDEzLDQsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLAorICAgIDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LAorICAgIDAsMTA2LDEsMTAwLDEsMTI0LDAsMTA2LDIsMTMxLDIsMSwwLDExNiwwLDEwNiwKKyAgICAzLDEyNCwwLDEyNCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsOTgsNzYsMTExLDk3LAorICAgIDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCisgICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsCisgICAgMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwKKyAgICAxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsCisgICAgMzgsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDEsNCwxMTQsMTE4LDAsMCwwLDExNCwxMzMsCisgICAgMCwwLDAsMTE0LDIyOSwwLDAsMCwxMTQsMTg5LDAsMCwwLDQxLDIsMTE0LAorICAgIDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTAsMCwwLDAsMTYsNCwwLAorICAgIDAsMTE1LDYsMCwwLDAsMCw3LDYsMSw4LDEsMTIyLDI4LDk1LDc4LAogICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDEyLDExNCwxMTQsMCwKLSAgICAwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxODYsMCwwLAotICAgIDAsMTE0LDE4NCwwLDAsMCwxMTQsMjQ5LDAsMCwwLDExNCwxNjEsMCwwLDAsCi0gICAgMTE0LDIwMywwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LAotICAgIDE5MiwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNDgsMCwKLSAgICAwLDAsMjM0LDMsMCwwLDExNSwxNiwwLDAsMCwxMiwxLDEyLDMsMTgsCi0gICAgOSwxMiwzLDEyLDMsMTIsMywxMiwzLDEyLDMsMTE0LDI0OCwwLDAsMCwKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwxNjAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsCi0gICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwKLSAgICAwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNiwwLAotICAgIDEwMSw0LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCw5MCwKLSAgICA3LDAsMTAxLDQsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDkwLDgsMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLDEwMCwxMiwwLAotICAgIDEzMiwxLDAsMTMxLDEsMCw5MCw5LDAsMTAxLDQsMCwxMDAsMTAsMCwxMDAsCi0gICAgMTAsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMiwwLDEzMSwxLDAsOTAsMTAsCi0gICAgMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwxLDAsCi0gICAgMTMxLDEsMCw5MCwxMSwwLDEwMCwxMCwwLDgzLDQxLDE3LDIxOCwxMCw4MCw5NywKLSAgICAxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE1LAotICAgIDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LAotICAgIDk3LDEwMywxMDEsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMzIsOTcsMTE2LDExNiwKLSAgICAxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw1NSwwLAotICAgIDAsMCwxMjAsNDgsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMzEsMCwKLSAgICAwLDY4LDkzLDMxLDAsMTI1LDEsMCwxMTYsMywwLDEyNCwxLDAsMTAwLDEsCi0gICAgMCwxMzEsMiwwLDExNCwxNiwwLDEyNCwxLDAsMTA2LDQsMCwxMzEsMCwwLAotICAgIDEsMTEzLDE2LDAsODcsMTAwLDIsMCw4Myw0MSwzLDEyMiwxMjUsNjcsOTcsMTA4LAotICAgIDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLAotICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAotICAgIDMyLDExMSwxMTAsMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwKLSAgICAxMTQsMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDIxOCwxNywxMDUsMTEwLDExOCw5NywKLSAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDc4LDQxLDUsCi0gICAgMTE0LDgsMCwwLDAsMjE4LDE5LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsNiwxMTgsOTcsMTA4LDExNywKLSAgICAxMDEsMTE1LDExNCwxMTcsMCwwLDAsMTE0LDI1MSwwLDAsMCw0MSwyLDExNCwxNzIsCi0gICAgMCwwLDAsMjE4LDYsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI1MSwwLDAsMCwyMywKLSAgICA0LDAsMCwxMTUsNiwwLDAsMCwwLDQsMjIsMSwxNSwxLDEyMiwyOCwKLSAgICA4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LAotICAgIDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwxMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTA3LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEwNywKLSAgICA5LDAsMTE0LDQxLDAsMTE2LDAsMCwxMDYsMSwwLDEyLDExNCw0MSwwLDExNiwKLSAgICAyLDAsMTA2LDMsMCwxMDAsMiwwLDExNiw0LDAsMTMxLDIsMCwxLDEyMCwKLSAgICA1OSwwLDExNiwwLDAsMTA2LDEsMCw2OCw5Myw0NCwwLDEyNSwyLDAsMTIxLAotICAgIDE0LDAsMTI0LDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsODcsMTEzLDUxLDAsCi0gICAgNCwxMTYsNSwwLDEwNywxMCwwLDExNCw5NCwwLDEsMSwxLDExOSw1MSwwLAotICAgIDg5LDExMyw1MSwwLDg4LDExMyw1MSwwLDg3LDEwMCwxLDAsODMsMTAwLDEsMCwKLSAgICA4Myw0MSwzLDEyMiwxMTMsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEwMSwxMTMsMTE3LAotICAgIDEwMSwxMTAsOTksMTAxLDMyLDExMSwxMDIsMzIsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLAotICAgIDExNCwzMiw5NywzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwKLSAgICAxMTIsOTcsMTE2LDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA3MywxMDIsMzIsMzksMTA0LDExMSwxMTEsMTA3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDEwMiw5NywKLSAgICAxMDgsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE3LDExNSwxMDEsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMjIsMjMsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsCi0gICAgNDEsNiwxMTQsOCwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwxMTQsNjIsMCwwLDAsMTE0LDYzLDAsMCwwLDExNCwxMjcsMCwKLSAgICAwLDAsMTE0LDEwOSwwLDAsMCw0MSwzLDExNCwxNzIsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDkwLDQsMTA0LDExMSwxMTEsMTA3LDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMDQsMTExLDExMSwxMDcsMTE1LDMxLDQsMCwwLDExNSwxNiwwLDAsMCwwLDcsCi0gICAgMjUsMSwxNiwxLDE2LDEsMywxLDE0LDEsMTMsMSwxMiwyLDEyMiwyMiwKLSAgICA4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywKLSAgICAwLDAsMCwxOSwwLDAsMCw2NywwLDAsMCwxMTUsMTIzLDAsMCwwLAotICAgIDEyNCwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCw1MywwLDEyMSwxNiwwLDExNiwKLSAgICAwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsODcsMTEwLDIyLDAsNCwKLSAgICAxMTYsMiwwLDEwNywxMCwwLDExNCw1MiwwLDEsMSwxLDEwMCwyLDAsODMsCi0gICAgODksMTEwLDEsMCw4OCwxMjEsMTcsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCwyNSwxMjUsMiwwLDg3LDExMCw0NiwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKLSAgICAxMTQsMTE4LDAsMSwxLDEsMTI0LDAsMCwxMDYsNiwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMjUsMiwwLDEyNCwyLDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwxLAotICAgIDAsNjAsODksMTEwLDEsMCw4OCwxMjQsMiwwLDgzLDQxLDMsMTIyLDIxMCw3MSwKKyAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDEyLDExNCwxMDksMCwKKyAgICAwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxODIsMCwwLAorICAgIDAsMTE0LDE4MCwwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwxNTcsMCwwLDAsCisgICAgMTE0LDE5OSwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LAorICAgIDE4OCwwLDAsMCwxMTQsMTkwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNDYsMCwKKyAgICAwLDAsMjQ0LDMsMCwwLDExNSwxNiwwLDAsMCw4LDEsOCwzLDEyLAorICAgIDksOCwzLDgsMyw4LDMsOCwzLDgsMywxMTQsMjQ2LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLAorICAgIDkwLDIsMTAwLDEsOTAsMywxMDEsNCwxMDAsMiwxMDAsMywxMzIsMCwxMzEsMSwKKyAgICA5MCw1LDEwMSw0LDEwMCw0LDEwMCw1LDEzMiwwLDEzMSwxLDkwLDYsMTAxLDQsCisgICAgMTAwLDYsMTAwLDcsMTMyLDAsMTMxLDEsOTAsNywxMDEsNCwxMDAsOCwxMDAsOSwKKyAgICAxMzIsMCwxMzEsMSw5MCw4LDEwMSw0LDEwMCwxNywxMDAsMTEsMTAwLDEyLDEzMiwxLAorICAgIDEzMSwxLDkwLDksMTAxLDQsMTAwLDE4LDEwMCwxMywxMDAsMTQsMTMyLDEsMTMxLDEsCisgICAgOTAsMTAsMTAxLDQsMTAwLDE5LDEwMCwxNSwxMDAsMTYsMTMyLDEsMTMxLDEsOTAsMTEsCisgICAgMTAwLDEwLDgzLDAsNDEsMjAsMjE4LDEwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsCisgICAgMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5NSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsCisgICAgMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQyLDAsMCwwLDEyMCwzNiwxMTYsMCwKKyAgICAxMDYsMSwxMDYsMiwxMzEsMCw2OCwwLDkzLDIyLDEyNSwxLDExNiwzLDEyNCwxLAorICAgIDEwMCwxLDEzMSwyLDExNCwxMiwxMjQsMSwxMDYsNCwxMzEsMCwxLDAsMTEzLDEyLAorICAgIDg3LDAsMTAwLDIsODMsMCw0MSwzLDEyMiwxMjUsNjcsOTcsMTA4LDEwOCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExMSwxMTAsCisgICAgMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDIxOCwxNywxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwKKyAgICA5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDc4LDQxLDUsMTE0LDgsMCwKKyAgICAwLDAsMjE4LDE5LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsNiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDExNCwKKyAgICAxMTIsMCwwLDAsMTE0LDI0OSwwLDAsMCw0MSwyLDExNCwxNjgsMCwwLDAsCisgICAgMjE4LDYsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDI0OSwwLDAsMCwzNCw0LDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDQsMTYsMSwxMCwxLDEyMiwyOCw4MCw5NywxMTYsCisgICAgMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsCisgICAgMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsODYsCisgICAgMCwwLDAsMTE2LDAsMTA2LDEsMTAwLDEsMTA3LDksMTE0LDMwLDExNiwwLDEwNiwKKyAgICAxLDEyLDAsMTE0LDMwLDExNiwyLDEwNiwzLDEwMCwyLDExNiw0LDEzMSwyLDEsCisgICAgMCwxMjAsNTAsMTE2LDAsMTA2LDEsNjgsMCw5MywzNiwxMjUsMiwxMjEsOCwxMjQsCisgICAgMiwxMjQsMSwxMzEsMSw4MywwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDcyLDEsCisgICAgMCwxLDAsMSwwLDExOSwzOCw4OSwwLDExMywzOCw4OCwwLDExMywzOCw4NywKKyAgICAwLDEwMCwxLDgzLDAsMTAwLDEsODMsMCw0MSwzLDEyMiw0Niw4MywxMDEsOTcsCisgICAgMTE0LDk5LDEwNCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwKKyAgICAxMDcsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLAorICAgIDEwMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDQ2LDc4LDEyMiwyMywxMTUsMTIxLAorICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwNSwxMTUsMzIsCisgICAgMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSw2LDExNCw4LDAsMCwwLDIxOCwxMCwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDExNCw2MywwLDAsMCwxMTQsNjQsMCwKKyAgICAwLDAsMTE0LDEyMiwwLDAsMCwxMTQsMTAzLDAsMCwwLDQxLDMsMTE0LDE2OCwKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsOTAsNCwxMDQsMTExLDExMSwxMDcsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsNDIsNCwwLDAsMTE1LDE2LAorICAgIDAsMCwwLDAsMywxOCwxLDEyLDEsMTIsMSwyLDEsOCwxLDE0LAorICAgIDEsMTIsMiwxMjIsMjIsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDMsMCwwLDAsMTksMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEwMiwwLDAsMCwxMjQsMSwxMDAsMSwxMDcsMiwxMTQsNDIsMTIxLDEyLDExNiwKKyAgICAwLDEwNiwxLDEzMSwwLDEyNSwxLDg3LDAsMTEwLDIwLDQsMCwxMTYsMiwxMDcsCisgICAgMTAsMTE0LDQwLDEsMCwxLDAsMSwwLDEwMCwyLDgzLDAsODgsMCwxMjEsCisgICAgMTQsMTE2LDMsMTA2LDQsMTI0LDEsMjUsMCwxMjUsMiw4NywwLDExMCw0MCw0LAorICAgIDAsMTE2LDUsMTA3LDEwLDExNCw5NiwxLDAsMSwwLDEsMCwxMjQsMCwxMDYsCisgICAgNiwxMjQsMSwxMzEsMSwxMjUsMiwxMjQsMiwxMTYsMywxMDYsNCwxMjQsMSw2MCwKKyAgICAwLDg5LDAsMTEwLDIsODgsMCwxMjQsMiw4MywwLDQxLDMsMTIyLDIxMCw3MSwKICAgICAxMDEsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsCiAgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsCiAgICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwKQEAgLTE5OTUsNjExICsxODY4LDU3MCBAQAogICAgIDEwMSwzMiw3OCwxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKICAgICAzMiwxMTQsMzIsMCwwLDAsNzgsNDEsNywxMTQsMywwLDAsMCwxMTQsNDcsCiAgICAgMCwwLDAsMjE4LDE3LDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsCi0gICAgMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsMjUyLDAsMCwwLAotICAgIDExNCwxMzksMCwwLDAsMTE0LDAsMSwwLDAsNDEsMywxMTQsMTcyLDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDgsMCwwLDAsMTE0LDI1MCwwLDAsMCwKKyAgICAxMTQsMTM1LDAsMCwwLDExNCwyNTQsMCwwLDAsNDEsMywxMTQsMTY4LDAsMCwKKyAgICAwLDExNCwzNywwLDAsMCwxMTQsMjUyLDAsMCwwLDExNCw0LDAsMCwwLAogICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyMCw5NSwxMTIsOTcsMTE2LAogICAgIDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgNDgsNCwwLDAsMTE1LDIyLDAsMCwwLDAsOCwxMiwxLDMsMSwxNiwKLSAgICAxLDEzLDMsOSwxLDMsMSwxNywxLDEzLDEsMTUsMSwxOCwxLDEyMiwKKyAgICA1NSw0LDAsMCwxMTUsMjIsMCwwLDAsMCw4LDgsMSwyLDEsMTIsCisgICAgMSwxNCwzLDYsMSwyLDEsMTQsMSwxNCwxLDEwLDEsMTYsMSwxMjIsCiAgICAgMzEsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsCiAgICAgMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwKICAgICA5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwzLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwxMTksMCwwLDAsMTE2LDAsMCwxMjQsMiwwLAotICAgIDEwMCwxLDAsMTMxLDIsMCwxMTQsMzksMCwxMjQsMiwwLDEwNiwxLDAsMTI0LAotICAgIDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMywwLDEyNSw0LDAsMTEwLDIxLAotICAgIDAsMTI0LDIsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMywwLAotICAgIDEwMywwLDAsMTI1LDQsMCwxMjQsMywwLDEwMCwwLDAsMTA3LDksMCwxMTQsCi0gICAgODgsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLAotICAgIDAsODMsMTE2LDMsMCwxMDYsNSwwLDEyNCwxLDAsMTAwLDAsMCwxMzEsMiwKLSAgICAwLDEyNSw1LDAsMTI0LDQsMCwxMjQsNSwwLDk1LDYsMCwxMjQsNSwwLAotICAgIDgzLDQxLDIsNzgsMTE0LDEyNiwwLDAsMCw0MSw3LDExNCwxMTcsMCwwLDAsCi0gICAgMTE0LDEyNiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LAotICAgIDE4MCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwxNTgsMCwwLDAsNDEsNiwKLSAgICAxMTQsMTcyLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDI1NCwwLDAsMCwxMTQsCi0gICAgMTI5LDAsMCwwLDExNCwxMzAsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDcwLAotICAgIDQsMCwwLDExNSwxOCwwLDAsMCwwLDQsMTUsMSwyNCwyLDE1LDEsCi0gICAgNiwxLDEyLDEsMTYsMSwxOCwxLDksMSwxMjIsMjcsODAsOTcsMTE2LDEwNCwKLSAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwxMDMsCi0gICAgMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3OCw5OSw0LDAsMCwwLDAsMCwwLAotICAgIDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyNDMsMCwKLSAgICAwLDAsMTAzLDAsMCwxMjUsNCwwLDEyMCwyMzAsMCwxMjQsMiwwLDY4LDkzLAotICAgIDE5MSwwLDEyNSw1LDAsMTE2LDAsMCwxMjQsNSwwLDExNiwxLDAsMTE2LDIsCi0gICAgMCwxMDIsMiwwLDEzMSwyLDAsMTE1LDQzLDAsMTEzLDEzLDAsMTI0LDAsMCwKLSAgICAxMDYsMywwLDEyNCw1LDAsMTMxLDEsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLAotICAgIDEsMCwxMDcsOSwwLDExNCwxMywwLDExNiw0LDAsMTI0LDYsMCwxMDAsMiwKLSAgICAwLDEzMSwyLDAsMTE0LDEwNiwwLDEyNCw2LDAsMTA2LDUsMCwxMjQsMSwwLAotICAgIDEyNCwzLDAsMTMxLDIsMCwxMjUsNywwLDExMCwxOCwwLDEyNCwwLDAsMTA2LAotICAgIDYsMCwxMjQsMSwwLDEyNCw2LDAsMTMxLDIsMCwxMjUsNywwLDEyNCw3LAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxMzksMCwxMTMsMTMsMCwxMjQsNywwLAotICAgIDEwNiw3LDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNTgsMCwxMjQsNywwLDgzLAotICAgIDEyNCw3LDAsMTA2LDgsMCwxMjUsOCwwLDEyNCw4LDAsMTAwLDEsMCwxMDcsCi0gICAgOCwwLDExNCwxOTEsMCwxMTYsOSwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsMSwKLSAgICAwLDEyNCw0LDAsMTA2LDEwLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLDEzLAotICAgIDAsODcsMTE2LDExLDAsMTA2LDEyLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLAotICAgIDAsMTI1LDcsMCwxMjQsNCwwLDEyNCw3LDAsOTUsOCwwLDEyNCw3LDAsCi0gICAgODMsMTAwLDEsMCw4Myw0MSw0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0Niw3OCwxMTQsMTgyLDAsMCwwLDEyMiwxOSwKLSAgICAxMTUsMTEyLDEwMSw5OSwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0MSwxMywxMTQsMTQ1LDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsCi0gICAgNSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDIsMSwwLDAsMTE0LDExNywwLDAsMCwKLSAgICAxMTQsMTgyLDAsMCwwLDExNCwzLDEsMCwwLDExNCwxMjksMCwwLDAsMTE0LAotICAgIDE1OCwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxNTEsMCwwLDAsMTE0LDEyMywKLSAgICAwLDAsMCwxMTQsMTYyLDAsMCwwLDQxLDksMTE0LDE3MiwwLDAsMCwxMTQsCi0gICAgMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTgxLDAsMCwwLDIxOCwxNCwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw5MCw1LAotICAgIDEwMSwxMTAsMTE2LDExNCwxMjEsMTE0LDI1NCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwKLSAgICAxMzAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksODUsNCwKLSAgICAwLDAsMTE1LDQwLDAsMCwwLDAsNSw2LDEsMTMsMSwyMSwxLDMsCi0gICAgMSwxNSwxLDEyLDEsMTUsMSwyMSwyLDE4LDEsMTIsMSwzLDEsMTUsCi0gICAgMSw0LDEsOSwxLDEyLDEsMTIsNSwxNywyLDE4LDEsOSwxLDEyMiwKLSAgICAyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsCi0gICAgOTUsMTE1LDExMiwxMDEsOTksOTksNCwwLDAsMCwwLDAsMCwwLDYsMCwKLSAgICAwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTQwLDAsMCwwLDEyNCwKLSAgICAyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyMSwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgMTI0LDMsMCwxMzEsMywwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMSwwLDEwNywKLSAgICA4LDAsMTE0LDU4LDAsMTAwLDEsMCw4MywxMjQsNCwwLDEwNiwzLDAsMTAwLAotICAgIDEsMCwxMDcsOCwwLDExNCwxMzIsMCwxMjQsNCwwLDEwNiw0LDAsMTI1LDUsCi0gICAgMCwxMjQsNSwwLDExNCwxMjUsMCwxMDAsMiwwLDEyNCw0LDAsOTUsNSwwLAotICAgIDExNiw2LDAsMTI0LDEsMCwxMjQsNSwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsCi0gICAgMywwLDEyNCw0LDAsOTUsNCwwLDEyNCw0LDAsODMsMTAwLDEsMCw4MywKLSAgICAxMTAsNCwwLDEyNCw0LDAsODMsMTAwLDEsMCw4Myw0MSwzLDEyMiw5OCwxMDIsCi0gICAgMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLAorICAgIDAsNjcsMCwwLDAsMTE1LDgyLDAsMCwwLDExNiwwLDEyNCwyLDEwMCwxLAorICAgIDEzMSwyLDExNCwyNiwxMjQsMiwxMDYsMSwxMjQsMSwxMzEsMSw5MiwyLDEyNSwzLAorICAgIDEyNSw0LDExMCwxNCwxMjQsMiwxMDYsMiwxMjQsMSwxMzEsMSwxMjUsMywxMDMsMCwKKyAgICAxMjUsNCwxMjQsMywxMDAsMCwxMDcsOSwxMTQsNjAsMTE2LDMsMTA2LDQsMTI0LDEsCisgICAgMTI0LDMsMTMxLDIsODMsMCwxMTYsMywxMDYsNSwxMjQsMSwxMDAsMCwxMzEsMiwKKyAgICAxMjUsNSwxMjQsNCwxMjQsNSw5NSw2LDEyNCw1LDgzLDAsNDEsMiw3OCwxMTQsCisgICAgMTIxLDAsMCwwLDQxLDcsMTE0LDExMiwwLDAsMCwxMTQsMTIxLDAsMCwwLAorICAgIDExNCwxNzksMCwwLDAsMTE0LDExOCwwLDAsMCwxMTQsMTc2LDAsMCwwLDExNCwKKyAgICAxNTgsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSw2LDExNCwxNjgsMCwwLDAsCisgICAgMTE0LDEyMywwLDAsMCwxMTQsMjUyLDAsMCwwLDExNCwxMjQsMCwwLDAsMTE0LAorICAgIDEyNSwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwKKyAgICAxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzcsNCwwLDAsMTE1LDE4LAorICAgIDAsMCwwLDAsNCwxMCwxLDE2LDIsMTAsMSw0LDEsOCwxLDEyLAorICAgIDEsMTIsMSw2LDEsMTIyLDI3LDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0Niw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwKKyAgICAxMDEsOTksNzgsOTksNCwwLDAsMCwwLDAsMCwwLDksMCwwLDAsCisgICAgNSwwLDAsMCw2NywwLDAsMCwxMTUsMTcwLDAsMCwwLDEwMywwLDEyNSwKKyAgICA0LDEyMCwxNjAsMTI0LDIsNjgsMCw5MywxMzAsMTI1LDUsMTE2LDAsMTI0LDUsMTE2LAorICAgIDEsMTE2LDIsMTAyLDIsMTMxLDIsMTE1LDMwLDExMywxMCwxMjQsMCwxMDYsMywxMjQsCisgICAgNSwxMzEsMSwxMjUsNiwxMjQsNiwxMDAsMSwxMDcsOSwxMTQsMTAsMTE2LDQsMTI0LAorICAgIDYsMTAwLDIsMTMxLDIsMTE0LDcyLDEyNCw2LDEwNiw1LDEyNCwxLDEyNCwzLDEzMSwKKyAgICAyLDEyNSw3LDExMCwxMiwxMjQsMCwxMDYsNiwxMjQsMSwxMjQsNiwxMzEsMiwxMjUsCisgICAgNywxMjQsNywxMDAsMSwxMDcsOCwxMTQsOTQsMTEzLDEwLDEyNCw3LDEwNiw3LDEwMCwKKyAgICAxLDEwNyw5LDExNCwxMDgsMTI0LDcsODMsMCwxMjQsNywxMDYsOCwxMjUsOCwxMjQsCisgICAgOCwxMDAsMSwxMDcsOCwxMTQsMTMwLDExNiw5LDEwMCwzLDEzMSwxLDEzMCwxLDEyNCwKKyAgICA0LDEwNiwxMCwxMjQsOCwxMzEsMSwxLDAsMTEzLDEwLDg3LDAsMTE2LDExLDEwNiwKKyAgICAxMiwxMjQsMSwxMDAsMSwxMzEsMiwxMjUsNywxMjQsNCwxMjQsNyw5NSw4LDEyNCwKKyAgICA3LDgzLDAsMTAwLDEsODMsMCw0MSw0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0Niw3OCwxMTQsMTc4LDAsMCwwLAorICAgIDEyMiwxOSwxMTUsMTEyLDEwMSw5OSwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0MSwxMywxMTQsMTQxLDAsMCwwLDExNCw3MywwLDAsCisgICAgMCwyMTgsNSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDAsMSwwLDAsMTE0LDExMiwwLAorICAgIDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxLDEsMCwwLDExNCwxMjQsMCwwLAorICAgIDAsMTE0LDE1NCwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxNDcsMCwwLDAsCisgICAgMTE0LDExOCwwLDAsMCwxMTQsMTU4LDAsMCwwLDQxLDksMTE0LDE2OCwwLDAsCisgICAgMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTc3LDAsMCwwLAorICAgIDIxOCwxNCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5MCw1LDEwMSwxMTAsMTE2LDExNCwxMjEsMTE0LDI1MiwwLDAsMCwxMTQsMTYyLDAsMCwKKyAgICAwLDExNCwxMjUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksCisgICAgOTIsNCwwLDAsMTE1LDQwLDAsMCwwLDAsNSw0LDEsMTAsMSwxNCwKKyAgICAxLDIsMSwxMCwxLDgsMSwxMCwxLDE0LDIsMTIsMSw4LDEsMiwKKyAgICAxLDEwLDEsNCwxLDYsMSw4LDEsOCw1LDE0LDIsMTIsMSw2LAorICAgIDEsMTIyLDIwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsCisgICAgMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw5OSw0LDAsMCwwLDAsMCwwLDAsCisgICAgNiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxMDQsMCwwLAorICAgIDAsMTI0LDIsMTAwLDEsMTA3LDgsMTE0LDE0LDExNiwwLDEwNiwxLDEyNSwyLDEyNCwKKyAgICAwLDEwNiwyLDEyNCwxLDEyNCwyLDEyNCwzLDEzMSwzLDEyNSw0LDEyNCw0LDEwMCwKKyAgICAxLDEwNyw4LDExNCw0MiwxMDAsMSw4MywwLDExMCw1OCwxMjQsNCwxMDYsMywxMDAsCisgICAgMSwxMDcsOCwxMTQsOTYsMTI0LDQsMTA2LDQsMTI1LDUsMTI0LDUsMTE0LDkwLDEwMCwKKyAgICAyLDEyNCw0LDk1LDUsMTE2LDYsMTI0LDEsMTI0LDUsMTI0LDAsMTA2LDIsMTMxLAorICAgIDMsMTI0LDQsOTUsNCwxMjQsNCw4MywwLDExMywxMDAsMTAwLDEsODMsMCwxMTAsCisgICAgNCwxMjQsNCw4MywwLDEwMCwxLDgzLDAsNDEsMywxMjIsMTQxLDg0LDExNCwxMjEsCisgICAgMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMzIsCisgICAgMTAyLDExMSwxMTQsMzIsMzksMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDM5LDMyLDExMSwKICAgICAxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsCi0gICAgOTcsMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsCi0gICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAorICAgIDk3LDExNiwxMDQsMzksNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiw5OCw5NywxMTUsCisgICAgMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwKKyAgICAxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAogICAgIDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgNDYsNzgsOTAsOSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw3LDExNCwKLSAgICA4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNiwxLDAsMCwxMTQsMTI5LAotICAgIDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDE2MCwwLDAsMCwxMTQsMjMxLDAsCi0gICAgMCwwLDQxLDYsMTE0LDE3MiwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCwxMTQsMTgxLDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDUsMSwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAotICAgIDAsMTE0LDE4MiwwLDAsMCwxMTcsNCwwLDAsMTE1LDI2LDAsMCwwLDAsCi0gICAgNCwxMiwxLDksMSwyMSwxLDEyLDEsNCwxLDE1LDEsOSwxLDYsCi0gICAgMyw5LDEsMjQsMSw0LDIsNywyLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LAotICAgIDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDQxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsCi0gICAgMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDE3MCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsCi0gICAgMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LAotICAgIDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LAotICAgIDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwKLSAgICAxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNzgsNDEsMiwxMTQsMTgyLDAsMCwwLDExNCwxMjksMCwwLDAsNDEsNCwxMTQsCi0gICAgMTcyLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxNjYsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDE4MywwLDAsMCwxMzksNCwwLDAsMTE1LDgsMCwwLDAsCi0gICAgMCw4LDE4LDEsMTIsMSw0LDEsMTIyLDIyLDgwLDk3LDExNiwxMDQsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDEsMTIsMTE0LDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLAotICAgIDAsMTE0LDExNiwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwyNTEsMCwwLDAsCi0gICAgMTE0LDAsMSwwLDAsMTE0LDIsMSwwLDAsMTE0LDMsMSwwLDAsMTE0LAotICAgIDYsMSwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyNTAsMCwwLDAsMTksNCwwLDAsMTE1LDIyLDAsMCwwLAotICAgIDEyLDIsNiwyLDE4LDgsMTgsMTcsMTgsMjIsMTgsMTUsMywxLDE4LDMxLAotICAgIDMsMSwyMSwyMSwzLDEsMTE0LDI1MCwwLDAsMCw5OSwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLAotICAgIDExNSwxMzMsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAotICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCi0gICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDEsCi0gICAgNiwwLDkwLDcsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw4LAotICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsOSwwLDEwMCwxMCwwLAotICAgIDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwxLDAsOTAsMTAsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMCwwLDkwLDExLDAsMTAxLDEyLDAsMTAwLDE1LDAsMTAwLDE2LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLDE3LDAsMTAwLDE4LDAsCi0gICAgMTMyLDAsMCw5MCwxNCwwLDEwMCwxMCwwLDgzLDQxLDE5LDIxOCwxMCw3MCwxMDUsCi0gICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwxNzIsNzAsMTA1LDEwOCwxMDEsNDUsOTgsCi0gICAgOTcsMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LAotICAgIDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwKLSAgICAxMTYsMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLAotICAgIDk4LDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwKLSAgICAxMDQsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsCi0gICAgMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsCi0gICAgMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDUsCi0gICAgMCwwLDAsNSwwLDAsMCw3LDAsMCwwLDExNSwxMjIsMCwwLDAsCi0gICAgMTAzLDAsMCwxMjUsMywwLDEyMCw1MiwwLDEyNCwyLDAsNjgsOTMsNDQsMCwKLSAgICA5MiwyLDAsMTM3LDAsMCwxMjUsNCwwLDEyNCwzLDAsMTA2LDAsMCwxMzUsCi0gICAgMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI0LDQsCi0gICAgMCw2OCwxMzEsMSwwLDEzMSwxLDAsMSwxMTMsMTMsMCw4NywxMjQsMywwLAotICAgIDEyNCwwLDAsOTUsMSwwLDEyNCwxLDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsCi0gICAgMCwwLDk1LDIsMCwxMDAsNiwwLDEyNCwwLDAsOTUsMywwLDExNiw0LAotICAgIDAsMTMxLDAsMCwxMjQsMCwwLDk1LDUsMCwxMTYsNCwwLDEzMSwwLDAsCi0gICAgMTI0LDAsMCw5NSw2LDAsMTAwLDUsMCw4Myw0MSw3LDEyMiwxNTQsNzMsMTEwLAotICAgIDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCi0gICAgMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LAotICAgIDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDUwLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwKLSAgICAxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKLSAgICAzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwKLSAgICAxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjcsMCwKLSAgICAwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsMCwxMzYsMCwKLSAgICAwLDEwMiwyLDAsODYsMSwxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICAxMTQsNCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCwxMTQsMjI2LDAsMCwKLSAgICAwLDQxLDEsMTE0LDEyOSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMjI4LDAsMCwwLDE2OCw0LDAsMCwxMTUsMiwwLDAsMCwKLSAgICA2LDAsMTIyLDM4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsCi0gICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKLSAgICA0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYwLDAsMCwwLDExNCwKLSAgICAzMSwwLDAsMCw3OCwxMTQsODksMCwwLDAsNDEsNywxMTQsMTUxLDAsMCwKLSAgICAwLDIxOCw4LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCwzNywwLDAsMCwKLSAgICAyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMywxMTUsCi0gICAgMTAxLDExNiwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsCi0gICAgMTksOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSw0MSw1LDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDIxOCwxNCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LAotICAgIDkwLDcsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDE2OCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCw0MSwxLDExNCwxMjksMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAotICAgIDE4NiwwLDAsMCwxNjIsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNCw2LAotICAgIDEsMTksMSwzNiwxLDksMiwxNSwxLDksMSwxMiwxLDEyMiwxOSw3MCwKLSAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMywwLDEyNCwKLSAgICAwLDAsOTUsMCwwLDEwMCwyLDAsODMsNDEsNCwxMjIsMzEsNzMsMTEwLDExOCwKLSAgICA5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA5LDExNiwxMDUsMTA5LDEwMSw0NiwxMTQsMzEsMCwwLAotICAgIDAsNzgsMTE0LDg5LDAsMCwwLDQxLDEsMTE0LDksMSwwLDAsNDEsMSwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDExNCwyNTEsMCwwLDAsMTc2LDQsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMiwxMjIsMjgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDU5LDAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTA3LDgsMCwxMTQsMzcsMCwxMDAsMSwwLDEwMywwLDAsMTAyLDIsMCwKLSAgICA4MywxMjQsMiwwLDEwNiwxLDAsMTI0LDIsMCwxMDYsMiwwLDExMiw1NSwwLAotICAgIDEwMywwLDAsMTAyLDIsMCw4Myw0MSwyLDEyMiwxOTcsODQsMTE0LDEyMSwzMiwxMTYsCi0gICAgMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAotICAgIDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKLSAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwKLSAgICAzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwKLSAgICAxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsCi0gICAgMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDc4LDQxLDMsMTE0LDE4MiwwLDAsMCwxMTQsMTI5LDAsMCwwLDExNCwxNTgsMCwKLSAgICAwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDE2NiwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMTI2LDAsMCwwLDE4Miw0LDAsMCwxMTUsOCwwLDAsMCwKLSAgICAwLDcsMTUsMSwxMiwxLDEwLDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTksNiwwLDAsMCwwLDAsMCwwLDcsMCwwLDAsNywwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsNDAsMCwwLDAsMTI0LDEsMCwxMjQsMiwwLAotICAgIDEyNCwzLDAsMTMxLDIsMCwxMjUsNiwwLDExNiwwLDAsMTI0LDIsMCwxMjQsCi0gICAgMywwLDEwMCwxLDAsMTI0LDYsMCwxMDAsMiwwLDEyNCw0LDAsMTMxLDIsCi0gICAgMiw4Myw0MSwzLDc4LDExNCwxMjksMCwwLDAsMTE0LDE1OCwwLDAsMCw0MSwKLSAgICAxLDExNCwxNjksMCwwLDAsNDEsNywxMTQsMTEwLDAsMCwwLDExNCwxNjcsMCwKLSAgICAwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsNCwxMTUsMTA5LAotICAgIDExNSwxMDgsMTE0LDE4MSwwLDAsMCwxMTQsMTI5LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCw2LDEsMCwwLAotICAgIDE5NCw0LDAsMCwxMTUsNiwwLDAsMCwwLDEsMTUsMSwxOCwxLDEyMiwKLSAgICAyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDMsMCwwLDAsMCwwLDAsMCwxNCwKLSAgICAwLDAsMCwxNSwwLDAsMCw2NywwLDAsMCwxMTUsMjM0LDEsMCwwLAotICAgIDEwMCwxLDAsMTI1LDMsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsCi0gICAgMSwwLDEwMCwzLDAsMjUsMTI1LDQsMCwxMjEsMzQsMCwxMTYsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMTIsNDksMCwxMTYsMywwLDEwNiw0LDAsMTMxLDAsCi0gICAgMCwxMzEsMSwwLDEwNiw1LDAsMTI1LDUsMCw4NywxMTAsMjQsMCw0LDExNiwKLSAgICA2LDAsMTA3LDEwLDAsMTE0LDg1LDAsMSwxLDEsMTAwLDEwLDAsMTI1LDUsCi0gICAgMCw4OSwxMTAsMSwwLDg4LDEyNCw1LDAsMTI0LDAsMCwxMDYsNywwLDEwNywKLSAgICAzLDAsMTE0LDEyMCwwLDEyNCwwLDAsMTA2LDgsMCwxMzEsMCwwLDEsMTI0LAotICAgIDUsMCwxMjQsMCwwLDk1LDcsMCwxMTYsOSwwLDEzMSwwLDAsMTE0LDE1MywKLSAgICAwLDEyNCwwLDAsMTA2LDEwLDAsMTI1LDYsMCwxMjQsNCwwLDEwNiwxMSwwLAotICAgIDEzMSwwLDAsMTI1LDcsMCwxMTAsMTUsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNSwKLSAgICA2LDAsMTI0LDQsMCwxMjUsNywwLDEyNCw3LDAsMTI0LDYsMCwxMDcsNiwKLSAgICAwLDExNCw0NSwxLDExNiwxMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLAotICAgIDEzMSwyLDAsMTI1LDgsMCwxMjAsMTAwLDAsMTI0LDAsMCwxMDYsMTQsMCw2OCwKLSAgICA5Myw3NywwLDkyLDIsMCwxMjUsOSwwLDEyNSwxMCwwLDEwMCw1LDAsMTI0LAotICAgIDksMCwyMywxMjUsMTEsMCwxMTYsMTMsMCwxMjQsOCwwLDEyNCwxMSwwLDEzMSwKLSAgICAyLDAsMTI1LDEyLDAsMTE2LDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsMjA4LAotICAgIDAsMTI0LDAsMCwxMDYsMTYsMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLAotICAgIDEyNCw4LDAsMTAzLDEsMCwxMjQsMiwwLDEzMSw1LDAsODMsMTEzLDIwOCwwLAotICAgIDg3LDExNiwxNywwLDEyNCw4LDAsMTMxLDEsMCwxMjUsMywwLDEyMCwxMjMsMCwKLSAgICAxMjQsMCwwLDEwNiwxNCwwLDY4LDkzLDExMiwwLDkyLDIsMCwxMjUsOSwwLAotICAgIDEyNSwxMCwwLDExNiwxMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLDEyNCwKLSAgICA5LDAsMjMsMTMxLDIsMCwxMjUsMTIsMCwxMTYsMTgsMCwxMDAsNiwwLDEwNiwKLSAgICAxOSwwLDEyNCwxMiwwLDEzMSwxLDAsMTAwLDcsMCwxMDAsMywwLDEzMSwxLAotICAgIDEsMSwxMjQsNywwLDEyNCw5LDAsMjMsMTI0LDYsMCwxMDcsNiwwLDExNCwKLSAgICA1NSwxLDExNiwxNSwwLDEyNCwxMiwwLDEzMSwxLDAsMTE0LDU1LDEsMTI0LDAsCi0gICAgMCwxMDYsMTYsMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLDEwMCw4LDAsCi0gICAgMTI0LDIsMCwxMzEsNSwwLDgzLDExMyw1NSwxLDg3LDEyNCwzLDAsMTE0LDIzMCwKLSAgICAxLDExNiwxOCwwLDEwMCw5LDAsMTA2LDE5LDAsMTI0LDgsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMTYsMjAsMCwxMDYsMjEsMCwxMjQsMSwwLDEwMCw4LDAsCi0gICAgMTMxLDIsMCwxMjUsMTMsMCwxMjQsOCwwLDEwMywxLDAsMTI0LDEzLDAsOTUsCi0gICAgMjIsMCwxMjQsMTMsMCw4MywxMDAsOCwwLDgzLDQxLDExLDEyMiwxMDIsODQsMTE0LAotICAgIDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwKLSAgICAxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDgyLDEwMSwxMTYsMTE3LAotICAgIDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDEwOSw5NywxMTYsOTksMTA0LDEwNSwxMTAsMTAzLDMyLDExNSwxMTIsMTAxLDk5LDQ0LDMyLDExMSwKLSAgICAxMTQsMzIsNzgsMTExLDExMCwxMDEsMzIsMTA1LDEwMiwzMiwxMTAsMTExLDExNiwzMiwxMDIsMTExLAotICAgIDExNywxMTAsMTAwLDQ2LDcwLDExNCw2MCwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LAotICAgIDMxLDAsMCwwLDExNCwxODYsMCwwLDAsMTIyLDksMTE2LDExNCwxMjEsMTA1LDExMCwKLSAgICAxMDMsMzIsMTIzLDEyNSwxMTQsMTAwLDAsMCwwLDc4LDEyMiwyNSwxMTIsMTExLDExNSwxMTUsCi0gICAgMTA1LDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTIzLDEyNSwxMTQsODksMCwwLDAsNDEsMjMsMTE0LDM0LDAsMCwKLSAgICAwLDExNCw0MSwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDMsMCwwLDAsCi0gICAgMTE0LDQ3LDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCwKLSAgICA5LDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMTQsNywwLDAsMCwxMTQsMTIsMSwwLDAsMTE0LDkwLDAsMCwwLAotICAgIDExNCwxMSwxLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDgsMSwwLDAsMTE0LAotICAgIDQ2LDAsMCwwLDExNCw2LDEsMCwwLDExNCw0OCwwLDAsMCwxMTQsMTA3LAotICAgIDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxNjIsMCwKLSAgICAwLDAsMTE0LDE1OCwwLDAsMCw0MSwxNCwxMTQsMTEwLDAsMCwwLDExNCwxMjgsCi0gICAgMCwwLDAsMTE0LDE4MSwwLDAsMCw5MCwxMiwxMDUsMTE1LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDkwLDExLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwxMzUsMCwwLDAsOTAsNSw5OSw5Nyw5OSwxMDQsMTAxLDkwLAotICAgIDEyLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsOSw5OCwKLSAgICA5NywxMTUsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCwyMjYsMCwwLDAsMTE0LDE2NywwLAotICAgIDAsMCw5MCwxMywxMDUsMTEwLDEwNSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCi0gICAgMTAxLDkwLDksMTAyLDExNywxMDgsMTA4LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjYsMCwwLAorICAgIDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDkwLDksMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNywxMTQsOCwwLDAsMCwxMTQsMzcsMCwKKyAgICAwLDAsMTE0LDQsMSwwLDAsMTE0LDEyNCwwLDAsMCwxMTQsMTU0LDAsMCwKKyAgICAwLDExNCwxNTYsMCwwLDAsMTE0LDIyNywwLDAsMCw0MSw2LDExNCwxNjgsMCwKKyAgICAwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDE3NywwLDAsCisgICAgMCwxMTQsMTYyLDAsMCwwLDExNCwzLDEsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNzgsMCwwLDAsMTI0LAorICAgIDQsMCwwLDExNSwyNiwwLDAsMCwwLDYsOCwxLDYsMSwxNCwxLAorICAgIDgsMSw2LDEsMTAsMSw2LDEsNCwzLDYsMSwxNiwxLDYsMiwKKyAgICA2LDIsMTIyLDIwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsCisgICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwKKyAgICAwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzAsMCwKKyAgICAwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsMTMxLDIsMTI1LDMsMTI0LDMsCisgICAgMTAwLDEsMTA3LDgsMTE0LDI0LDEwMCwxLDgzLDAsMTI0LDMsMTA2LDEsODMsMCwKKyAgICA0MSwyLDEyMiwxNzAsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwKKyAgICAxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywKKyAgICAxMTUsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLAorICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsCisgICAgMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwKKyAgICAxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLAorICAgIDIsMTE0LDE3OCwwLDAsMCwxMTQsMTI0LDAsMCwwLDQxLDQsMTE0LDE2OCwwLAorICAgIDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTYyLDAsMCwKICAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwxODIsMCwwLDAsMTk5LDQsMCwwLDExNSw2OCwwLDAsMCwwLDMsCi0gICAgNiwxLDE5LDEsMywxLDM0LDEsMTMsMSwxMSwxLDE1LDEsMTAsMSwKLSAgICA5LDIsOSwxLDksMSwxNSwyLDksMSw2LDIsMTIsMSwxOCwxLAotICAgIDIyLDEsMTAsMSwxNSwxLDEyLDEsMzIsNCwxMiwyLDIyLDEsMjIsMSwKLSAgICAyNSwxLDE2LDEsMTIsMSwyOSwxLDYsMSwxOSwxLDE4LDEsMTIsMSwKLSAgICA0LDEsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLAotICAgIDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCw5LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLDExNSwxMSwxLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjEsMzEsMCwxMTYsMSwKLSAgICAwLDEwNiwyLDAsMTI0LDEsMCwxMTIsMzMsMCwxMTYsMSwwLDEwNiwzLDAsCi0gICAgMTMxLDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDMzLDAsNCwxMTYsNCwKLSAgICAwLDExNiw1LDAsMTE2LDYsMCwxMDIsMywwLDEwNywxMCwwLDExNCw3NSwwLAotICAgIDEsMSwxLDEwMywwLDAsMTI1LDIsMCw4OSwxMTAsMSwwLDg4LDExNiw3LAotICAgIDAsMTA2LDgsMCwxMDYsOSwwLDEwMCwxLDAsMTMxLDEsMCwxMTUsMTEyLDAsCi0gICAgMTE2LDEwLDAsMTI0LDIsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMTEsMCwxMTAsCi0gICAgMTExLDAsMTE2LDEwLDAsMTMxLDAsMCwxMjUsMywwLDEyMCw5MCwwLDEyNCwyLAotICAgIDAsNjgsOTMsODIsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDEyLDAsMTAwLDIsCi0gICAgMCwxMzEsMSwwLDkyLDMsMCwxMjUsNSwwLDEyNSw2LDAsMTI1LDcsMCwKLSAgICAxMjQsNiwwLDExNCwxOTEsMCwxMDAsMywwLDEwNiwxMywwLDEyNCw1LDAsMTI0LAotICAgIDcsMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwyLDAsMTI1LDgsMCwxMTAsNiwKLSAgICAwLDEyNCw1LDAsMTI1LDgsMCwxMjQsMywwLDEwNiwxNSwwLDEyNCw4LDAsCi0gICAgMTMxLDEsMCwxLDExMywxMjgsMCw4NywxMjQsMywwLDEyNCwwLDAsOTUsMTEsCi0gICAgMCwxMTYsNywwLDEwNiw4LDAsMTA2LDksMCwxMTYsMTYsMCwxMzEsMSwwLAotICAgIDExNCw3LDEsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTI0LDIsMCw2OCwKLSAgICAxMzEsMSwwLDEyNCwwLDAsOTUsMTcsMCwxMDAsNiwwLDgzLDQxLDcsMTIyLAotICAgIDY4LDcwLDEwNSwxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsCi0gICAgMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKLSAgICAxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwKLSAgICAxMTYsMTExLDExNCwxMjEsNDYsMTE0LDAsMCwwLDAsMTE0LDYwLDAsMCwwLDEyMiwKLSAgICA1LDEyMywxMjUsNDYsMTIzLDEyNSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCwzLDAsMCwwLDgzLDAsMCwwLDExNSwyOCwwLDAsMCwKLSAgICAxMDQsMCwwLDEyNCwwLDAsOTMsMTgsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LAotICAgIDAsMCwxMzEsMCwwLDE0NiwyLDAsMTEzLDYsMCw4MywxMTQsNCwwLDAsCi0gICAgMCw0MSwxLDExNCw5MCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCw5MCwKLSAgICAyLDEwMiwxMTAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjUwLDksNjAsMTE1LDEwMSwxMTYsOTksMTExLDEwOSwxMTIsNjIsMTcsNSwwLAotICAgIDAsMTE1LDIsMCwwLDAsOSwwLDEyMiw0MSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMTUsMTAxLDExNiw5OSwxMTEsCi0gICAgMTA5LDExMiw2Miw3OCw0MSwxOCwxMTQsMzcsMCwwLDAsMTE0LDMsMCwwLDAsCi0gICAgOTAsNywxMDgsMTA1LDExNSwxMTYsMTAwLDEwNSwxMTQsMTE0LDQ3LDAsMCwwLDExNCwxLAotICAgIDEsMCwwLDIxOCwxNSw4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMjE4LDE4LDc4LDExMSwxMTYsNjUsNjgsMTA1LDExNCwxMDEsOTksMTE2LAotICAgIDExMSwxMTQsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsOSwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDEsMCwwLDExNCwxMSwxLDAsCi0gICAgMCwxMTQsODUsMCwwLDAsMTE0LDQ5LDAsMCwwLDExNCw5MCwwLDAsMCwKLSAgICAyMTgsMyw5NywxMDAsMTAwLDExNCwxMSwwLDAsMCwxMTQsMTIsMSwwLDAsNDEsCi0gICAgOSwxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCw5MCw4LDk5LDExMSwxMTAsCi0gICAgMTE2LDEwMSwxMTAsMTE2LDExNSw5MCwyMSwxMDgsMTExLDExOSwxMDEsMTE0LDk1LDExNSwxMTcsMTAyLAotICAgIDEwMiwxMDUsMTIwLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSwxMTQsMjQ2LDAsMCwKLSAgICAwLDExNCwxMDgsMCwwLDAsMTE0LDIzOCwwLDAsMCwxMTQsMjI2LDAsMCwwLAotICAgIDkwLDgsMTEwLDEwMSwxMTksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE0LDEsMCwwLDI0NCw0LAotICAgIDAsMCwxMTUsMzQsMCwwLDAsMCwyLDksMSwzLDEsMzEsMSwyMiwKLSAgICAzLDExLDMsMTgsMSwxOCw3LDksMSwxMywxLDI0LDEsNiwxLDI3LAotICAgIDIsNiwxLDE3LDEsOSwxLDE4LDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLAotICAgIDAsMCw3LDAsMCwwLDExNSwyNSwwLDAsMCwxMzUsMCwwLDEzNSwxLAotICAgIDAsMTAyLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsODMsNDEsMyw5NywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsCi0gICAgMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsCi0gICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsCi0gICAgMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsCi0gICAgMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAotICAgIDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTE0LDE3OSwwLDAsMCwxNDgsNCwwLDAsMTE1LDgsMCwwLDAsMCw4LAorICAgIDEyLDEsOCwxLDQsMSwxMjIsMjIsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLAorICAgIDc4LDQxLDIsNzgsNzgsNDEsMSw3OCw0MSwxMiwxMTQsMTA5LDAsMCwwLDExNCwKKyAgICAxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODAsCisgICAgMCwwLDAsMTE0LDI0OSwwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCwwLDEsCisgICAgMCwwLDExNCwxLDEsMCwwLDExNCw0LDEsMCwwLDExNCwxNzgsMCwwLAorICAgIDAsMTE0LDE3OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQ4LDAsMCwwLDMwLAorICAgIDQsMCwwLDExNSwyMiwwLDAsMCw4LDIsNCwyLDEyLDgsMTIsMTMsCisgICAgMTIsMjIsMTIsMTUsMiwxLDEyLDMxLDIsMSwxMiwyMywyLDEsMTE0LDI0OCwKKyAgICAwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAzLDAsMCwwLDY0LDAsMCwwLDExNSw5MCwwLDAsMCwxMDEsMCw5MCwKKyAgICAxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCwKKyAgICA0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAxLDYsOTAsNywxMDAsNiwxMDAsCisgICAgNywxMzIsMCw5MCw4LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDksMTAwLDE5LDEwMCwKKyAgICAxMSwxMDAsMTIsMTMyLDEsOTAsMTAsMTAwLDEzLDEwMCwxNCwxMzIsMCw5MCwxMSwxMDEsCisgICAgMTIsMTAwLDE1LDEwMCwxNiwxMzIsMCwxMzEsMSw5MCwxMywxMDAsMTcsMTAwLDE4LDEzMiwKKyAgICAwLDkwLDE0LDEwMCwxMCw4MywwLDQxLDIwLDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwxNzIsNzAsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsCisgICAgMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwKKyAgICAzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLDk4LDEwMSwxMDUsCisgICAgMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwKKyAgICAzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwKKyAgICAxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsCisgICAgMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsMTE1LDMyLDk4LAorICAgIDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCisgICAgNSwwLDAsMCw3LDAsMCwwLDExNSw4OCwwLDAsMCwxMDMsMCwxMjUsCisgICAgMywxMjAsNDAsMTI0LDIsNjgsMCw5MywzMiw5MiwyLDEzNywwLDEyNSw0LDEyNCwKKyAgICAzLDEwNiwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwyLDEzMiw4LDEyNCw0LDY4LAorICAgIDAsMTMxLDEsMTMxLDEsMSwwLDExMywxMCw4NywwLDEyNCwzLDEyNCwwLDk1LAorICAgIDEsMTI0LDEsMTEyLDU4LDEwMCwzLDEyNCwwLDk1LDIsMTAwLDYsMTI0LDAsOTUsCisgICAgMywxMTYsNCwxMzEsMCwxMjQsMCw5NSw1LDExNiw0LDEzMSwwLDEyNCwwLDk1LAorICAgIDYsMTAwLDUsODMsMCw0MSw3LDEyMiwxNTQsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwKKyAgICAxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTExLDExMCwzMiw5NywKKyAgICAxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMzIsMTEwLDExNywKKyAgICAxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDUwLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsCisgICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywKKyAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LDEwMiwxMDIsCisgICAgMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLAorICAgIDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMywwLDAsMCw1MSwwLDAsMCwxMTUsMjIsMCwwLDAsMTI0LDAsOTMsCisgICAgMTQsMTI1LDEsMTI0LDEsMTM2LDAsMTAyLDIsODYsMCwxLDAsMTEzLDIsMTAwLAorICAgIDAsODMsMCw0MSwxLDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDI0LDAsCisgICAgMCwwLDExNCwyMjIsMCwwLDAsNDEsMSwxMTQsMTI0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTc3LDQsMCwKKyAgICAwLDExNSwyLDAsMCwwLDQsMCwxMjIsMzgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LAorICAgIDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwKKyAgICAxMTQsNjEsMCwwLDAsMTE0LDMxLDAsMCwwLDc4LDExNCw5MSwwLDAsMCwKKyAgICA0MSw3LDExNCwxNDcsMCwwLDAsMjE4LDgsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTUsMTE0LDM3LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LAorICAgIDEwNSwxMDksMTAxLDIxOCwzLDExNSwxMDEsMTE2LDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDIxOCwxOSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQxLDUsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMzcsMCwwLDAsMjE4LDE0LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLAorICAgIDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsOTAsNywxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsCisgICAgMTY0LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDEyNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLDE3MSw0LDAsMCwxMTUsMTYsCisgICAgMCwwLDAsMCw0LDQsMSwxNCwxLDI4LDEsNiwyLDEwLDEsNiwKKyAgICAxLDgsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsMTAwLDMsMTI0LDAsOTUsMCwxMDAsMiw4MywwLDQxLDQsMTIyLDMxLAorICAgIDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsCisgICAgMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwOSwxMTYsMTA1LDEwOSwxMDEsNDYsMTE0LAorICAgIDMxLDAsMCwwLDc4LDExNCw5MSwwLDAsMCw0MSwxLDExNCw3LDEsMCwKKyAgICAwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQ5LDAsMCwwLDE4NSw0LDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDIsMTIyLDI4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw0MiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMjQsMSwxMzEsMSwxMjUsMiwxMjQsMiwxMDAsMSwxMDcsOCwxMTQsCisgICAgMjYsMTAwLDEsMTAzLDAsMTAyLDIsODMsMCwxMjQsMiwxMDYsMSwxMjQsMiwxMDYsCisgICAgMiwxMTIsMzgsMTAzLDAsMTAyLDIsODMsMCw0MSwyLDEyMiwxOTcsODQsMTE0LDEyMSwKKyAgICAzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCisgICAgMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsCisgICAgMTE2LDEwNSwxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCisgICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLAorICAgIDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLAorICAgIDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDc4LDQxLDMsMTE0LDE3OCwwLDAsMCwxMTQsMTI0LDAsMCwwLDExNCwKKyAgICAxNTQsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsCisgICAgMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwxMTQsMTIxLDAsMCwwLDE5MSw0LDAsMCwxMTUsOCwwLAorICAgIDAsMCwwLDcsMTAsMSw4LDEsOCwxLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDk5LDYsMCwwLDAsMCwwLDAsMCw3LDAsMCwwLDYsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDEyNCwxLDEyNCwyLAorICAgIDEyNCwzLDEzMSwyLDEyNSw2LDExNiwwLDEyNCwyLDEyNCwzLDEyNCw2LDEyNCw0LAorICAgIDEwMCwxLDE0MSw0LDgzLDAsNDEsMiw3OCw0MSwyLDExNCwxMjQsMCwwLDAsCisgICAgMTE0LDE1NCwwLDAsMCw0MSwxLDExNCwxNjUsMCwwLDAsNDEsNywxMTQsMTA0LAorICAgIDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwKKyAgICAwLDAsOTAsNCwxMTUsMTA5LDExNSwxMDgsMTE0LDE3NywwLDAsMCwxMTQsMTI0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNCw0LDEsMCwwLDIwMyw0LDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDEsMTAsMSw4LDEsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzgsOTksMywwLDAsCisgICAgMCwwLDAsMCwwLDE0LDAsMCwwLDE1LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw5OCwxLDAsMCwxMDAsMSwxMjUsMywxMjQsMSwxMDYsMCwxMDAsMiwKKyAgICAxMzEsMSwxMDAsMywyNSwwLDEyNSw0LDEyMSwyNCwxMTYsMSwxMjQsMCwxMDYsMiwKKyAgICAxMTIsMzQsMTE2LDMsMTA2LDQsMTMxLDAsMTMxLDEsMTA2LDUsMTI1LDUsODcsMCwKKyAgICAxMTAsMjQsNCwwLDExNiw2LDEwNywxMCwxMTQsNjYsMSwwLDEsMCwxLDAsCisgICAgMTAwLDEwLDEyNSw1LDg5LDAsMTEwLDIsODgsMCwxMjQsNSwxMjQsMCwxMDYsNywKKyAgICAxMDcsMywxMTQsOTIsMTI0LDAsMTA2LDgsMTMxLDAsMSwwLDEyNCw1LDEyNCwwLAorICAgIDk1LDcsMTE2LDksMTMxLDAsMTE0LDExNCwxMjQsMCwxMDYsMTAsMTI1LDYsMTI0LDQsCisgICAgMTA2LDExLDEzMSwwLDEyNSw3LDExMCwxMCwxMjQsMCwxMDYsMTIsMTI1LDYsMTI0LDQsCisgICAgMTI1LDcsMTI0LDcsMTI0LDYsMTA3LDYsMTE0LDIxOCwxMTYsMTMsMTI0LDAsMTA2LDIsCisgICAgMTI0LDQsMTMxLDIsMTI1LDgsMTIwLDcyLDEyNCwwLDEwNiwxNCw2OCwwLDkzLDU0LAorICAgIDkyLDIsMTI1LDksMTI1LDEwLDEwMCw1LDEyNCw5LDIzLDAsMTI1LDExLDExNiwxMywKKyAgICAxMjQsOCwxMjQsMTEsMTMxLDIsMTI1LDEyLDExNiwxNSwxMjQsMTIsMTMxLDEsMTE0LDE1MiwKKyAgICAxMjQsMCwxMDYsMTYsMTI0LDEwLDEyNCwxLDEyNCwxMiwxMjQsOCwxMDMsMSwxMjQsMiwKKyAgICAxMzEsNSw4MywwLDExMywxNTIsODcsMCwxMTYsMTcsMTI0LDgsMTMxLDEsMTI1LDMsCisgICAgMTIwLDg4LDEyNCwwLDEwNiwxNCw2OCwwLDkzLDc4LDkyLDIsMTI1LDksMTI1LDEwLAorICAgIDExNiwxMywxMjQsMCwxMDYsMiwxMjQsNCwxMjQsOSwyMywwLDEzMSwyLDEyNSwxMiwKKyAgICAxMTYsMTgsMTA2LDE5LDEwMCw2LDEyNCwxMiwxMDAsMywxMDAsNywxNDEsMywxLDAsCisgICAgMTI0LDcsMTI0LDksMjMsMCwxMjQsNiwxMDcsNiwxMTQsMjI2LDExNiwxNSwxMjQsMTIsCisgICAgMTMxLDEsMTE0LDIyNiwxMjQsMCwxMDYsMTYsMTI0LDEwLDEyNCwxLDEyNCwxMiwxMDAsOCwKKyAgICAxMjQsMiwxMzEsNSw4MywwLDExMywyMjYsODcsMCwxMjQsMywxNDQsMSwxMTQsOTQsCisgICAgMTE2LDE4LDEwNiwxOSwxMDAsOSwxMjQsOCwxMzEsMiwxLDAsMTE2LDE4LDEwNiwyMCwKKyAgICAxMjQsMSwxMDAsOCwxMzEsMiwxMjUsMTMsMTI0LDgsMTAzLDEsMTI0LDEzLDk1LDIxLAorICAgIDEyNCwxMyw4MywwLDEwMCw4LDgzLDAsNDEsMTEsMTIyLDExMSw4NCwxMTQsMTIxLDMyLAorICAgIDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDk3LAorICAgIDExNiw5OSwxMDQsMTA1LDExMCwxMDMsMzIsMTE1LDExMiwxMDEsOTksNDQsMzIsMTExLDExNCwzMiwKKyAgICA3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTAyLDMyLDExMCwxMTEsMTE2LDMyLDEwMiwxMTEsMTE3LDExMCwKKyAgICAxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzAsMTE0LDYxLDAsMCwKKyAgICAwLDExNCw1OSwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDE4MiwwLDAsMCwKKyAgICAxMjIsOSwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMjMsMTI1LDQxLDEsOTAsOSwxMTgsCisgICAgMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDc4LDEyMiwyNSwxMTIsMTExLDExNSwxMTUsMTA1LAorICAgIDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTIzLDEyNSwxMTQsOTEsMCwwLDAsNDEsMjIsMTE0LDM0LDAsMCwwLAorICAgIDExNCw0MSwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LAorICAgIDQ3LDAsMCwwLDExNCwyMTYsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw3LAorICAgIDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSwKKyAgICAxMTQsNywwLDAsMCwxMTQsMTAsMSwwLDAsMTE0LDkyLDAsMCwwLDExNCwKKyAgICA5LDEsMCwwLDExNCwzMCwwLDAsMCwxMTQsNiwxLDAsMCwxMTQsNDYsCisgICAgMCwwLDAsMTE0LDQsMSwwLDAsMTE0LDQ4LDAsMCwwLDExNCwxMTgsMCwKKyAgICAwLDAsMTE0LDEzMywwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCwxNTQsMCwwLAorICAgIDAsNDEsMTQsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxNzcsMCwKKyAgICAwLDAsOTAsMTIsMTA1LDExNSw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA5MCwxMSwxMTYsOTcsMTA1LDEwOCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTMwLDAsCisgICAgMCwwLDkwLDUsOTksOTcsOTksMTA0LDEwMSw5MCwxMiw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDksOTgsOTcsMTE1LDEwMSw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTQsMjIyLDAsMCwwLDExNCwxNjMsMCwwLDAsOTAsMTMsMTA1LDExMCwKKyAgICAxMDUsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5MCw5LDEwMiwxMTcsMTA4LAorICAgIDEwOCw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNzgsMCwwLDAsMjA4LAorICAgIDQsMCwwLDExNSw3MCwwLDAsMCwwLDUsNCwxLDE0LDEsMiwxLAorICAgIDI0LDEsMTQsMSwxMCwxLDEwLDEsOCwxLDYsMiw2LDEsNiwxLAorICAgIDEwLDIsNiwxLDQsMiw4LDEsMTIsMSwxNiwxLDgsMSwxMCwxLAorICAgIDgsMSwyNCw0LDgsMiwxNiwxLDE2LDEsMTYsMSwxMiwxLDgsMSwKKyAgICAxMCwxLDEyLDEsNiwxLDEyLDEsMTIsMSw4LDEsNCwxLDEyMiwyMCwKKyAgICA3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwwLDAsMCwwLDAsOSwwLDAsCisgICAgMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsMTk0LDAsMCwwLDEyNCwwLAorICAgIDEwNiwwLDEyNSwxLDEyMSwyMiwxMTYsMSwxMDYsMiwxMjQsMSwxMTIsMjIsMTE2LDEsCisgICAgMTA2LDMsMTMxLDAsMTMxLDEsMTI1LDIsODcsMCwxMTAsMzAsNCwwLDExNiw0LAorICAgIDExNiw1LDExNiw2LDEwMiwzLDEwNywxMCwxMTQsNTgsMSwwLDEsMCwxLDAsCisgICAgMTAzLDAsMTI1LDIsODksMCwxMTAsMiw4OCwwLDExNiw3LDEwNiw4LDEwNiw5LAorICAgIDEwMCwxLDEzMSwxLDExNSw4NCwxMTYsMTAsMTI0LDIsMTMxLDEsMTI0LDAsOTUsMTEsCisgICAgMTEwLDc4LDExNiwxMCwxMzEsMCwxMjUsMywxMjAsNjQsMTI0LDIsNjgsMCw5Myw1NiwKKyAgICAxMjUsNCwxMjQsNCwxMDYsMTIsMTAwLDIsMTMxLDEsOTIsMywxMjUsNSwxMjUsNiwKKyAgICAxMjUsNywxMjQsNiwxMTQsMTM4LDEwMCwzLDEwNiwxMywxMjQsNSwxMjQsNywxMDYsMTQsCisgICAgMTMxLDAsMTMxLDIsMTI1LDgsMTEwLDQsMTI0LDUsMTI1LDgsMTI0LDMsMTA2LDE1LAorICAgIDEyNCw4LDEzMSwxLDEsMCwxMTMsOTYsODcsMCwxMjQsMywxMjQsMCw5NSwxMSwKKyAgICAxMTYsNywxMDYsOCwxMDYsOSwxMTYsMTYsMTMxLDEsMTE0LDE5MCwxMDAsNCwxMDAsNSwKKyAgICAxMzIsMCwxMjQsMiw2OCwwLDEzMSwxLDEyNCwwLDk1LDE3LDEwMCw2LDgzLDAsCisgICAgNDEsNywxMjIsNjgsNzAsMTA1LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksCisgICAgMTA0LDEwMSwzMiwxMTEsMTAyLDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAwLDEwNSwKKyAgICAxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NiwxMTQsMCwwLDAsMCwxMTQsNjEsMCwKKyAgICAwLDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsODMsMCwwLDAsMTE1LDIwLAorICAgIDAsMCwwLDEwNCwwLDEyNCwwLDkzLDEyLDEyNSwxLDEyNCwxLDEwNiwwLDEzMSwKKyAgICAwLDE0NiwyLDExMyw0LDgzLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsOTIsCisgICAgMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsOTAsMiwxMDIsMTEwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDI1MCw5LDYwLAorICAgIDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDI5LDUsMCwwLDExNSwyLDAsMCwKKyAgICAwLDYsMCwxMjIsNDEsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSw0Niw2MCwxMDgsMTExLDk5LAorICAgIDk3LDEwOCwxMTUsNjIsNDYsNjAsMTE1LDEwMSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNzgsNDEsCisgICAgMTgsMTE0LDM3LDAsMCwwLDExNCwzLDAsMCwwLDkwLDcsMTA4LDEwNSwxMTUsCisgICAgMTE2LDEwMCwxMDUsMTE0LDExNCw0NywwLDAsMCwxMTQsMjU1LDAsMCwwLDIxOCwxNSwKKyAgICA4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMjE4LAorICAgIDE4LDc4LDExMSwxMTYsNjUsNjgsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsOSwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDgsMSwwLDAsMTE0LDksMSwwLDAsMTE0LDg3LDAsMCwKKyAgICAwLDExNCw1MCwwLDAsMCwxMTQsOTIsMCwwLDAsMjE4LDMsOTcsMTAwLDEwMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDEwLDEsMCwwLDQxLDksMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMzcsMCwwLDAsOTAsOCw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsCisgICAgOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw5NSw5OSwKKyAgICAxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDI0NCwwLDAsMCwxMTQsMTAyLDAsMCwKKyAgICAwLDExNCwyMzQsMCwwLDAsMTE0LDIyMiwwLDAsMCw5MCw4LDExMCwxMDEsMTE5LAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDExNCwxMiwxLDAsMCwwLDUsMCwwLDExNSwzNCwwLAorICAgIDAsMCwwLDIsNiwxLDIsMSwyMiwxLDIwLDMsMTAsMywxMiwxLAorICAgIDEyLDcsNiwxLDEwLDEsMTYsMSw0LDEsMTgsMiw0LDEsMTQsMSwKKyAgICA2LDEsMTIsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDcsMCwwLAorICAgIDAsMTE1LDE4LDAsMCwwLDEzNSwwLDEzNSwxLDEwMiwyLDEwMCwxLDEwMCwyLAorICAgIDEzMiw4LDEyNSwyLDEyNCwyLDgzLDAsNDEsMyw5NywyMCwxLDAsMCw2NSwKKyAgICAzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LAorICAgIDEwNSw5OSwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwKKyAgICAxMTEsMTE1LDExNywxMTQsMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwKKyAgICAxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LAorICAgIDExMCw5OSwxMDEsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLAorICAgIDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAogICAgIDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMDgsCi0gICAgMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMDgsMTExLDExNSwxMTcsCi0gICAgMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMjEsNDQsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsOTcsCi0gICAgMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsCi0gICAgMTksMCwwLDAsMTE1LDQzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsCi0gICAgMSwwLDExNSwzMCwwLDExNiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwwLAotICAgIDAsMTMxLDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMzYsMSwwLAotICAgIDE0MCwxLDAsODMsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwzMiwxMDQsMTExLDExMSwKLSAgICAxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKLSAgICAxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMTcsMTEyLDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDExNCwzNywwLDAsMCw0MSwyLDExNCw0OCwwLDAsCi0gICAgMCwxMTQsMTA5LDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LAotICAgIDE3MiwwLDAsMCwxMTQsMTMsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDI0LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsCi0gICAgMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDI5LDUsMCwKLSAgICAwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDE4LDEsMTIyLDU0LDcwLDEwNSwKLSAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxNzIsMCwwLDAsCi0gICAgMTE0LDEzLDEsMCwwLDExNCwxOSwxLDAsMCwxMTQsNCwwLDAsMCw0MSwKLSAgICAyLDExNCwxNzIsMCwwLDAsMTE0LDEzLDEsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCw5LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxOSw1LDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEwLDIxLDYsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwxNiw3MCwxMDUsMTA4LAotICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LAotICAgIDQ5LDAsMCwwLDExNCwzNywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsCisgICAgMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwKKyAgICAxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ0LDMyLDczLDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICA0LDAsMCwwLDE5LDAsMCwwLDExNSwzNCwwLDAsMCwxMTYsMCwxMjQsCisgICAgMCwxMzEsMSwxMTUsMjAsMTE2LDEsMTAwLDEsMTI0LDAsMTAwLDIsMTQxLDIsMTMwLAorICAgIDEsMTM2LDAsMTI0LDAsMTAyLDEsMTM2LDEsMTU4LDIsMTQyLDAsODMsMCw0MSwKKyAgICAzLDEyMiw0NSw4MCw5NywxMTYsMTA0LDMyLDEwNCwxMTEsMTExLDEwNywzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDEwOSw5Nyw5OSwxMDQsMTA1LAorICAgIDExMCwxMDEsMTE0LDEyMSw0Niw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAorICAgIDEyMiwzMCwxMTEsMTEwLDEwOCwxMjEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEwNSwKKyAgICAxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsCisgICAgNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsNDgsMCwwLDAsMTE0LDEwMywKKyAgICAwLDAsMCw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwxNjgsMCwwLAorICAgIDAsMTE0LDExLDEsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDIxOCwyNCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsCisgICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MSw1LDAsMCwxMTUsNiwKKyAgICAwLDAsMCwwLDIsOCwxLDEyLDEsMTIyLDU0LDcwLDEwNSwxMDgsMTAxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ2LAorICAgIDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxNjgsMCwwLDAsMTE0LDExLDEsCisgICAgMCwwLDExNCwxNywxLDAsMCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxNjgsCisgICAgMCwwLDAsMTE0LDExLDEsMCwwLDExNCw2LDAsMCwwLDIxOCw5LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywzMSw1LDAsMCwxMTUsNCwwLDAsCisgICAgMCwwLDEwLDE0LDYsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDgzLAorICAgIDAsNDEsMiw3OCwxMjIsMTYsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0MCwxMjMsMzMsMTE0LDEyNSw0MSw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMzcsMCwKKyAgICAwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNDMsMCwwLDAsNDksNSwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0MSwxLDc4LAorICAgIDQxLDE1LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwKKyAgICAwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMjQ5LDAsMCwwLAorICAgIDExNCwxMjcsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsMTIxLDAsMCwwLDExNCwKKyAgICA0LDEsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDEyLDEsMCwwLDExNCwxODAsCisgICAgMCwwLDAsMTE0LDE4LDEsMCwwLDExNCwyNDMsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMTE0LDUsMSwwLDAsMTYyLDQsMCwwLDExNSwyMCwwLDAsMCw4LAorICAgIDcsNCwyLDgsMTQsOCw0LDQsMiw4LDEyLDgsNSwxMCw0OCw4LAorICAgIDMxLDEyLDE4LDExNCw1LDEsMCwwLDk5LDQsMCwwLDAsMCwwLDAsCisgICAgMCw2LDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSwxNDYsMCwKKyAgICAwLDAsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDEsMTI1LDQsMTI0LDAsMTA2LDAsCisgICAgMTAwLDIsMTMxLDEsMTI1LDUsMTI0LDQsMTE1LDY2LDEyNCw1LDExNCwzNiwxMjQsNSwKKyAgICAxMDYsMSwxMjUsNCwxMTAsMzAsMTI0LDIsMTI0LDMsMTA3LDIsMTE0LDU2LDExNiwyLAorICAgIDEyNCwxLDEyNCwyLDEzMSwyLDEyNSw0LDExMCwxMCwxMTYsMywxMjQsMSwxMjQsMiwKKyAgICAxMzEsMiwxMjUsNCwxMjQsNSwxMTUsODQsMTE2LDQsMTI0LDEsMTI0LDIsMTI0LDQsCisgICAgMTAwLDMsMTQxLDMsMTI1LDUsMTIxLDM2LDEyNCw1LDEyNCwwLDEwMCwyLDYwLDAsCisgICAgMTI0LDQsMTI0LDAsMTAwLDEsNjAsMCwxMjQsMiwxMjQsMCwxMDAsNCw2MCwwLAorICAgIDEyNCwzLDEyNCwwLDEwMCw1LDYwLDAsODcsMCwxMTAsMjAsNCwwLDExNiw1LAorICAgIDEwNywxMCwxMTQsMTQwLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMDAsMCw4MywwLDQxLDYsNzgsMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsOTUsOTUsMjE4LDgsOTUsOTUsMTE1LDExMiwxMDEsOTksOTUsOTUsNDEsMSwxMTQsCisgICAgMTI0LDAsMCwwLDkwLDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDkwLDEwLAorICAgIDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDQxLDYsMjE4LDMsMTAzLDEwMSwKKyAgICAxMTYsMTE0LDEyNCwwLDAsMCwxMTQsMjIwLDAsMCwwLDExNCwyMTUsMCwwLDAsCisgICAgMTE0LDE2NSwwLDAsMCwyMTgsOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsCisgICAgNDEsNiw5MCwyLDExMCwxMTUsMTE0LDEwMiwwLDAsMCw5MCw4LDExMiw5NywxMTYsCisgICAgMTA0LDExMCw5NywxMDksMTAxLDkwLDksOTksMTEyLDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE0LDEyNCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCw5NSwxMDIsMTA1LDEyMCw5NSwKKyAgICAxMTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDU1LDUsMCwwLDExNSwzNCwwLAorICAgIDAsMCwwLDIsMTAsMSwxMCwxLDQsMSw0LDEsOCwxLDgsMSwKKyAgICAxMiwyLDEwLDEsNCwxLDE0LDEsMiwxLDgsMSw4LDEsOCwxLAorICAgIDEyLDEsMTQsMiwxMTQsMjMsMSwwLDAsOTksMCwwLDAsMCwwLDAsCisgICAgMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsCisgICAgMCwwLDAsMTE2LDAsMTE2LDEsMTA2LDIsMTMxLDAsMTAyLDIsMTI1LDAsMTE2LAorICAgIDMsMTE2LDQsMTAyLDIsMTI1LDEsMTE2LDUsMTE2LDYsMTAyLDIsMTI1LDIsMTI0LAorICAgIDAsMTI0LDEsMTI0LDIsMTAzLDMsODMsMCw0MSwxLDEyMiw5NSw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjksCisgICAgOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNiwxMTcsCisgICAgMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMTUsMTE3LDEwMiwKKyAgICAxMDIsMTA1LDEyMCwxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDQxLDcsMTE0LDIyMSwKKyAgICAwLDAsMCwxMTQsMTQzLDAsMCwwLDIxOCwxOCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNCwyMTUsMCwwLAorICAgIDAsMTE0LDg4LDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDc4LDAsMCwwLAorICAgIDQxLDMsOTAsMTAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMTE1LDkwLDYsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5MCw4LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAogICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKLSAgICAyNDUsMCwwLDAsMzcsNSwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwKLSAgICAxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCw5NSw5NSw0MSwxNSwxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsCi0gICAgMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LAotICAgIDI1MSwwLDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDEyNiwKLSAgICAwLDAsMCwxMTQsNiwxLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxNCwxLAotICAgIDAsMCwxMTQsMTg0LDAsMCwwLDExNCwyMCwxLDAsMCwxMTQsMjQ1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCw3LDEsMCwwLDE1Myw0LDAsMCwxMTUsMjAsCi0gICAgMCwwLDAsMTIsNyw2LDIsMTIsMTQsMTIsNCw2LDIsMTIsMTIsMTIsCi0gICAgNSwxNSw0NSwxMiwzMSwxOCwxOCwxMTQsNywxLDAsMCw5OSw0LDAsMCwKLSAgICAwLDAsMCwwLDAsNiwwLDAsMCwxMSwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTk1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwKLSAgICAxLDAsMTI1LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsMSwKLSAgICAwLDEyNSw1LDAsMTI0LDQsMCwxMTUsOTksMCwxMjQsNSwwLDExNCw1NCwwLAotICAgIDEyNCw1LDAsMTA2LDEsMCwxMjUsNCwwLDExMCw0NSwwLDEyNCwyLDAsMTI0LAotICAgIDMsMCwxMDcsMiwwLDExNCw4NCwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMiwKLSAgICAwLDEzMSwyLDAsMTI1LDQsMCwxMTAsMTUsMCwxMTYsMywwLDEyNCwxLDAsCi0gICAgMTI0LDIsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDUsMCwxMTUsMTI2LDAsMTE2LAotICAgIDQsMCwxMjQsMSwwLDEyNCwyLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwyLAotICAgIDEsMTI1LDUsMCwxMjEsNDQsMCwxMjQsNSwwLDEyNCwwLDAsMTAwLDIsMCwKLSAgICA2MCwxMjQsNCwwLDEyNCwwLDAsMTAwLDEsMCw2MCwxMjQsMiwwLDEyNCwwLAotICAgIDAsMTAwLDQsMCw2MCwxMjQsMywwLDEyNCwwLDAsMTAwLDUsMCw2MCw4NywKLSAgICAxMTAsMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE5MCwwLDEsMSwxLAotICAgIDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSw2LDc4LDIxOCwxMCw5NSw5NSwKLSAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDIxOCw4LDk1LDk1LDExNSwxMTIsMTAxLDk5LAotICAgIDk1LDk1LDExNCwxMjksMCwwLDAsOTAsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsCi0gICAgOTUsOTAsMTAsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsNDEsNiwyMTgsCi0gICAgMywxMDMsMTAxLDExNiwxMTQsMTI5LDAsMCwwLDExNCwyMjQsMCwwLDAsMTE0LDIxOSwKLSAgICAwLDAsMCwxMTQsMTY5LDAsMCwwLDIxOCw5LDY5LDEyMCw5OSwxMDEsMTEyLDExNiwKLSAgICAxMDUsMTExLDExMCw0MSw2LDkwLDIsMTEwLDExNSwxMTQsMTA4LDAsMCwwLDkwLDgsCi0gICAgMTEyLDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsOTAsOSw5OSwxMTIsOTcsMTE2LDEwNCwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTQsMTI5LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDk1LDEwMiwKLSAgICAxMDUsMTIwLDk1LDExNywxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDMsNSwwLDAsCi0gICAgMTE1LDM0LDAsMCwwLDAsMiwxNSwxLDE1LDEsNiwxLDYsMSwxMiwKLSAgICAxLDEyLDEsMTgsMiwxNSwxLDYsMSwyMSwxLDMsMSwxMCwxLDEwLAotICAgIDEsMTAsMSwxNCwxLDEzLDIsMTE0LDI1LDEsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDU1LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMDYsMiwwLDEzMSwKLSAgICAwLDAsMTAyLDIsMCwxMjUsMCwwLDExNiwzLDAsMTE2LDQsMCwxMDIsMiwKLSAgICAwLDEyNSwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwMiwyLDAsMTI1LDIsMCwKLSAgICAxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMDMsMywwLDgzLDQxLDEsMTIyLAotICAgIDk1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDEwOCwxMDUsMTE1LDExNiwzMiwKLSAgICAxMTEsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2OSw5Nyw5OSwxMDQsMzIsMTA1LDExNiwxMDEsMTA5LDMyLDEwNSwxMTUsMzIsCi0gICAgOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LAotICAgIDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsNDEsNDYsMTAsMzIsMzIsMzIsMzIsCi0gICAgNDEsNywxMTQsMjI1LDAsMCwwLDExNCwxNDcsMCwwLDAsMjE4LDE4LDEwMSwxMjAsCi0gICAgMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsCi0gICAgMTE0LDIxOSwwLDAsMCwxMTQsODYsMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsCi0gICAgNzYsMCwwLDAsNDEsMyw5MCwxMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAotICAgIDExMCwxMTUsOTAsNiwxMTUsMTExLDExNywxMTQsOTksMTAxLDkwLDgsOTgsMTIxLDExNiwxMDEsCi0gICAgOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDE2MywwLDAsMCw2Niw1LDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDUsMTgsMSwxMiwxLDEyLDEsMTE0LDE2MywwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDcwLDIsMCwwLDEyNCwwLDAsOTcsMCwwLDExNiwwLAotICAgIDAsMTA2LDEsMCw5NywxLDAsMTE2LDAsMCwxMDYsMiwwLDk3LDIsMCwKLSAgICAxMTYsMSwwLDEwNiwzLDAsMTE2LDQsMCwyNSwxMjUsMSwwLDEyMCw3NiwwLAotICAgIDEwMCwyNiwwLDY4LDkzLDY4LDAsMTI1LDIsMCwxMjQsMiwwLDExNiwxLDAsCi0gICAgMTA2LDMsMCwxMDcsNywwLDExNCw4MywwLDExNiwwLDAsMTA2LDUsMCwxMjQsCi0gICAgMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiwzLAotICAgIDAsMTI0LDIsMCwyNSwxMjUsMywwLDExNiw2LDAsMTI0LDEsMCwxMjQsMiwKLSAgICAwLDEyNCwzLDAsMTMxLDMsMCwxLDExMyw0NCwwLDg3LDEwMCw1LDAsMTAwLAotICAgIDYsMCwxMDMsMSwwLDEwMiwyLDAsMTAwLDcsMCwxMDAsOCwwLDEwMCw2LAotICAgIDAsMTAzLDIsMCwxMDIsMiwwLDEwMiwyLDAsMTI1LDQsMCwxMjAsMTQ5LDAsCi0gICAgMTI0LDQsMCw2OCw5MywxMjksMCw5MiwyLDAsMTI1LDUsMCwxMjUsNiwwLAotICAgIDExNiw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLDEyNCw2LDAsNjgsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDExNSwxOTksMCwxMTYsOCwwLDEzMCwxLDAsMTI0LAotICAgIDYsMCwxMDAsMTEsMCwyNSwxMjUsNywwLDEyNCw1LDAsMTE2LDEsMCwxMDYsCi0gICAgMywwLDEwNyw2LDAsMTE0LDI0MSwwLDExNiwxLDAsMTA2LDMsMCwxMjQsNSwKLSAgICAwLDI1LDEyNSw4LDAsODAsMTEzLDE1NiwwLDEyMSwyMCwwLDExNiwwLDAsMTA2LAotICAgIDUsMCwxMjQsNSwwLDEzMSwxLDAsMTI1LDgsMCw4MCw4NywxMTMsMTU2LDAsCi0gICAgNCwxMTYsOSwwLDEwNywxMCwwLDExNCwyOCwxLDEsMSwxLDExOSwxNTYsMCwKLSAgICA4OSwxMTMsMTU2LDAsODgsMTEzLDE1NiwwLDg3LDExNiw5LDAsMTAwLDEyLDAsMTMxLAotICAgIDEsMCwxMzAsMSwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTMsMCwxMjQsOCwKLSAgICAwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLDE0LDAsMTI0LDcsCi0gICAgMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwxNSwwLDEwMCwxNiwKLSAgICAwLDEwNiwxMCwwLDEyNCw2LDAsMTMxLDEsMCwxMzEsMywwLDEsMTIxLDE5LAotICAgIDAsMTE2LDAsMCwxMDYsNSwwLDEwMCwxNywwLDEzMSwxLDAsMTI1LDksMCwKLSAgICA4NywxMTAsMjQsMCw0LDExNiw5LDAsMTA3LDEwLDAsMTE0LDE0NywxLDEsMSwKLSAgICAxLDEwMCwxOCwwLDEyNSw5LDAsODksMTEwLDEsMCw4OCwxMTYsNiwwLDEyNCwKLSAgICAxLDAsMTAwLDE3LDAsMTI0LDksMCwxMzEsMywwLDEsMTE2LDAsMCwxMDYsCi0gICAgNSwwLDEwMCwxOSwwLDEzMSwxLDAsMTI1LDEwLDAsMTE2LDYsMCwxMjQsMSwKLSAgICAwLDEwMCwxOSwwLDEyNCwxMCwwLDEzMSwzLDAsMSwxMjQsNSwwLDEwMCw3LAotICAgIDAsMTA3LDIsMCwxMTQsMjM4LDEsMTE2LDAsMCwxMDYsNSwwLDEwMCwyMCwwLAotICAgIDEzMSwxLDAsMTI1LDExLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwyMSwwLDEyNCwKLSAgICAxMSwwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLDIyLDAsMTE2LAotICAgIDExLDAsMTMxLDAsMCwxMzEsMywwLDEsMTE2LDEyLDAsMTA2LDEzLDAsMTE2LAotICAgIDIsMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwxLDAsMSwxMjQsNSwwLDEwMCwKLSAgICA3LDAsMTA3LDIsMCwxMTQsNjYsMiwxMTYsMTUsMCwxMDYsMTYsMCwxMDAsMjMsCi0gICAgMCwxMzEsMSwwLDEsMTAwLDI0LDAsMTE2LDEyLDAsMTA3LDYsMCwxMTQsNjYsCi0gICAgMiwxMDAsMjUsMCwxMTYsMTcsMCw5NSwxOCwwLDEwMCwxOCwwLDgzLDQxLDI3LAotICAgIDEyMiwyMDUsODMsMTAxLDExNiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAotICAgIDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE1LAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTgsCi0gICAgMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwKLSAgICAxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LDEwMSwKLSAgICA5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDMyLDEwNSwxMTAsMTE2LDExMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LAotICAgIDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LAotICAgIDMyLDk5LDExMSwxMDksMTEyLDExMSwxMTAsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsCi0gICAgMTAxLDEyMCwxMTYsMTE0LDk3LDk5LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiw5OSwxMTEsMTE0LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKLSAgICAxMTIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAotICAgIDUxLDAsMCwwLDExNCw2MiwwLDAsMCwyMTgsOCw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCwxMTUsMTE0LDE0NCwwLDAsMCw5MCw1LDExMiwxMTEsMTE1LDEwNSwxMjAsMjUwLAotICAgIDEsNDcsMjE4LDIsMTEwLDExNiwyNTAsMSw5Miw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwxMTUsMzMsCi0gICAgMCwwLDAsMTI0LDAsMCw5MywyMywwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDAsMTAwLDAsMCwxMDcsMiwwLDg2LDEsMTEzLDMsMCwKLSAgICAxMDAsMSwwLDgzLDQxLDIsMTE0LDMxLDAsMCwwLDc4LDQxLDEsMTE0LDMzLAotICAgIDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjI4LAotICAgIDAsMCwwLDEwMiw1LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLDI1LAotICAgIDk1LDExNSwxMDEsMTE2LDExNywxMTIsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAotICAgIDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNjEsMCwwLDAsMTIyLDMwLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTIsMTExLDExNSwxMDUsMTIwLDMyLDExMSwxMTQsMzIsMTEwLDExNiwxMTQsMywKLSAgICAwLDAsMCwxMTQsMjcsMCwwLDAsMTE0LDIzLDAsMCwwLDExNCwzMiwwLAotICAgIDAsMCw5MCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsNzgsOTAsOCw5NSwxMTksCi0gICAgMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5MCw2LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDExNCwxNzEsCi0gICAgMCwwLDAsMTE0LDcsMCwwLDAsMTIyLDQsNDYsMTEyLDEyMSwxMTksMTIyLDYsCi0gICAgOTUsMTAwLDQ2LDExMiwxMjEsMTAwLDg0LDQxLDQsMTE0LDUxLDAsMCwwLDExNCw2MiwKLSAgICAwLDAsMCwxMTQsMjcsMSwwLDAsMTE0LDE0NCwwLDAsMCw0MSwxOSwxMTQsCi0gICAgMTIzLDAsMCwwLDExNCw4LDAsMCwwLDExNCwxNDcsMCwwLDAsMTE0LDI0MCwKLSAgICAwLDAsMCwxMTQsMTE0LDAsMCwwLDkwLDE4LDk1LDk4LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsMTE4LDAsMCwKLSAgICAwLDIxOCwzLDk3LDEwOCwxMDgsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwKLSAgICAxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxMDksMCwwLDAsMTE0LDI4LDAsMCwwLAotICAgIDExNCwxMywwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwxNTEsMCwwLDAsMTE0LAotICAgIDI2LDEsMCwwLDExNCw4NiwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzAsCi0gICAgMCwwLDAsMTE0LDE3NCwwLDAsMCw0MSwxMiwyMTgsMTcsOTUsOTgsMTExLDExMSwKLSAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDExLDExNSwKLSAgICAxMDEsMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAotICAgIDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMCwxMTEsMTE1LDk1LDEwMCwxMDEsMTE2LAotICAgIDk3LDEwNSwxMDgsMTE1LDkwLDEwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExMSwxMTUsCi0gICAgMTE0LDIzLDAsMCwwLDExNCwyNywwLDAsMCw5MCw5LDExMSwxMTUsOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5MCwxNCwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsNiw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDc3LDUsMCwwLDExNSw4MiwKLSAgICAwLDAsMCwwLDgsNiwxLDksMSw5LDMsMTMsMSwxMywxLDE1LAotICAgIDEsMTgsMiwxMywxLDIwLDMsMzMsMSwxOSwyLDMxLDEsMTAsMSwxNSwKLSAgICAxLDEzLDEsNCwyLDMsMSwxNSwxLDUsMSwxMywxLDEyLDIsMTIsCi0gICAgMSwxNiwxLDE2LDEsMjUsMywzLDEsMTksMSwxMywyLDExLDEsMTYsCi0gICAgMywxNSwxLDE2LDMsMTIsMSwxNSwxLDE2LDMsMTksMSwxOSwxLDEyLAotICAgIDEsMTMsMSwxMiwxLDExNCwzNCwxLDAsMCw5OSwxLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICAxMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMSwxMTYsMSwKLSAgICAwLDEzMSwwLDAsMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTA2LDQsMCwKLSAgICAxMTYsNSwwLDEwNiw2LDAsMTI0LDEsMCwxNDAsMCwwLDEwMywxLDAsMTMxLAotICAgIDEsMCwxLDExNiw3LDAsMTA2LDgsMCwxMDAsMSwwLDEwNywyLDAsMTE0LAotICAgIDc4LDAsMTE2LDIsMCwxMDYsOSwwLDEwNiwxMCwwLDExNiwxMSwwLDEzMSwxLAotICAgIDAsMSwxMTYsMiwwLDEwNiw5LDAsMTA2LDEwLDAsMTE2LDEyLDAsMTMxLDEsCi0gICAgMCwxLDExNiw1LDAsMTI0LDAsMCw5NSw1LDAsMTE2LDEzLDAsMTI0LDAsCi0gICAgMCw5NSwxMywwLDEwMCwyLDAsODMsNDEsMywxMjIsNDEsNzMsMTEwLDExNSwxMTYsCi0gICAgOTcsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NSw5OCw5NywxMTUsCi0gICAgMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLAotICAgIDEwMSwxMTAsMTE2LDExNSw0NiwxMTQsMjksMSwwLDAsNzgsNDEsMTQsMTE0LDM0LDEsCi0gICAgMCwwLDExNCwxNjMsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDI1NSwwLDAsCi0gICAgMCwxMTQsMTUxLDAsMCwwLDExNCw3LDEsMCwwLDExNCwyMCwxLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMTE0LDAsMCwwLDIxOCw5LDEwOSwxMDEsMTE2LDk3LAotICAgIDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjUsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsCi0gICAgMjUwLDAsMCwwLDExNCwyMTksMCwwLDAsNDEsMiwxMTQsMzMsMSwwLDAsCi0gICAgOTAsMTcsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTQ1LDUsMCwwLAotICAgIDExNSwxNiwwLDAsMCwwLDIsMTAsMSw5LDEsMjgsMSwxNSwxLDE2LAotICAgIDEsMTYsNCw5LDEsMTE0LDM2LDEsMCwwLDQxLDEsMTE0LDAsMCwwLAotICAgIDAsNDEsMiwxMTQsMSwwLDAsMCwxMTQsMiwwLDAsMCw0MSw1OSwxMTQsCi0gICAgMTE2LDAsMCwwLDExNCwxMiwwLDAsMCw5MCwzNyw5NSw2Nyw2NSw4Myw2OSwKLSAgICA5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSwKLSAgICA4NCw3MCw3OSw4Miw3Nyw4Myw5NSw2Niw4OSw4NCw2OSw4Myw5NSw3NSw2OSw4OSwKLSAgICAxMTQsMTEsMCwwLDAsMTE0LDEzLDAsMCwwLDExNCwxOSwwLDAsMCwxMTQsCi0gICAgMjEsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsNDEsCi0gICAgMCwwLDAsMTE0LDQ1LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsNDgsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDIxOCw0LDExNiwxMjEsMTEyLDEwMSwyMTgsOCw5NSwKLSAgICA5NSw5OSwxMTEsMTAwLDEwMSw5NSw5NSwxMTQsMTQ2LDAsMCwwLDExNCwxNywwLDAsCi0gICAgMCwxMTQsMTM3LDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMjAsMCwwLDAsCi0gICAgOTAsMTcsOTUsODIsNjUsODcsOTUsNzcsNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsCi0gICAgNjYsNjksODIsMTE0LDc1LDAsMCwwLDExNCw3NCwwLDAsMCwxMTQsODYsMCwKLSAgICAwLDAsMTE0LDc2LDAsMCwwLDkwLDIzLDY4LDY5LDY2LDg1LDcxLDk1LDY2LAotICAgIDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLAotICAgIDkwLDI3LDc5LDgwLDg0LDczLDc3LDczLDkwLDY5LDY4LDk1LDY2LDg5LDg0LDY5LAotICAgIDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNCw4MSwwLAotICAgIDAsMCwxMTQsODcsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCw5NywwLDAsCi0gICAgMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTI1LDAsMCwwLAotICAgIDExNCwxMzIsMCwwLDAsMTE0LDE0MywwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCwKLSAgICAxNTIsMCwwLDAsMTE0LDE1NywwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwKLSAgICAxMTYsMTE0LDE2NCwwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwwLDAsCi0gICAgMTE0LDE4NSwwLDAsMCwxMTQsMTk1LDAsMCwwLDExNCwyMTEsMCwwLDAsMTE0LAotICAgIDIxOSwwLDAsMCwxMTQsMjI0LDAsMCwwLDExNCwyMzAsMCwwLDAsMTE0LDIyNSwKLSAgICAwLDAsMCwxMTQsMjMxLDAsMCwwLDExNCwyNDgsMCwwLDAsMTE0LDI1MCwwLAotICAgIDAsMCwxMTQsNywxLDAsMCwxMTQsMjUsMSwwLDAsMTE0LDE2MywwLDAsCi0gICAgMCwxMTQsMzQsMSwwLDAsMTE0LDM2LDEsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKLSAgICA4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDEwNiwwLAotICAgIDAsMCw2LDE2LDYsMSw2LDEsMywxLDcsMywxMiwxNywxMiw1LAotICAgIDEyLDUsMTIsNiwxMiwxMiwxMiwxMCwxMiw5LDEyLDUsMTIsNywxNSwyMiwKLSAgICAxNSwxMTQsMjIsMSwxOCwyLDYsMSw2LDIsOSwyLDksMiwxMCwyLAotICAgIDIxLDQ0LDEyLDMzLDEyLDE5LDEyLDEyLDEyLDEyLDE4LDgsMTIsMjgsMTIsMTcsCi0gICAgMjEsNTUsMjEsMTIsMTgsMTAsMTIsMTQsOSwzLDEyLDEsMTUsNjUsMTksNjQsCi0gICAgMTksMjgsMjIsMTEwLDE5LDQxLDI1LDQzLDI1LDE2LDYsMywyNSw1MywxOSw1NywKLSAgICAxOSw0MSwxOSwxMzQsMTksMTQ2LDE1LDIzLDEyLDExLDEyLDY4LAorICAgIDE1OSwwLDAsMCw3OCw1LDAsMCwxMTUsOCwwLDAsMCwwLDUsMTIsCisgICAgMSw4LDEsOCwxLDExNCwxNTksMCwwLDAsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEyLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxODgsMSwwLDAsMTI0LDAsOTcsMCwxMTYsMCwxMDYsMSw5NywxLDExNiwwLAorICAgIDEwNiwyLDk3LDIsMTE2LDEsMTA2LDMsMTE2LDQsMjUsMCwxMjUsMSwxMjAsNTYsCisgICAgMTAwLDI2LDY4LDAsOTMsNDgsMTI1LDIsMTI0LDIsMTE2LDEsMTA2LDMsMTA3LDcsCisgICAgMTE0LDU4LDExNiwwLDEwNiw1LDEyNCwyLDEzMSwxLDEyNSwzLDExMCwxMCwxMTYsMSwKKyAgICAxMDYsMywxMjQsMiwyNSwwLDEyNSwzLDExNiw2LDEyNCwxLDEyNCwyLDEyNCwzLAorICAgIDEzMSwzLDEsMCwxMTMsMzIsODcsMCwxMDAsNSwxMDAsNiwxMDMsMSwxMDIsMiwKKyAgICAxMDAsNywxMDAsOCwxMDAsNiwxMDMsMiwxMDIsMiwxMDIsMiwxMjUsNCwxMjAsMTE4LAorICAgIDEyNCw0LDY4LDAsOTMsMTAyLDkyLDIsMTI1LDUsMTI1LDYsMTE2LDcsMTAwLDksCisgICAgMTAwLDEwLDEzMiwwLDEyNCw2LDY4LDAsMTMxLDEsMTMxLDEsMTE1LDE0MiwxMTYsOCwKKyAgICAxMzAsMSwxMjQsNiwxMDAsMTEsMjUsMCwxMjUsNywxMjQsNSwxMTYsMSwxMDYsMywKKyAgICAxMDcsNiwxMTQsMTc0LDExNiwxLDEwNiwzLDEyNCw1LDI1LDAsMTI1LDgsODAsMCwKKyAgICAxMTMsMTEyLDEyMSwxNiwxMTYsMCwxMDYsNSwxMjQsNSwxMzEsMSwxMjUsOCw4MCwwLAorICAgIDg3LDAsMTEzLDExMiw0LDAsMTE2LDksMTA3LDEwLDExNCwyMTIsMSwwLDEsMCwKKyAgICAxLDAsMTE5LDExMiw4OSwwLDExMywxMTIsODgsMCwxMTMsMTEyLDg3LDAsMTE2LDksCisgICAgMTAwLDEyLDEzMSwxLDEzMCwxLDExNiw2LDEyNCwxLDEwMCwxMywxMjQsOCwxMzEsMywKKyAgICAxLDAsMTE2LDYsMTI0LDEsMTAwLDE0LDEyNCw3LDEzMSwzLDEsMCwxMTYsNiwKKyAgICAxMjQsMSwxMDAsMTUsMTAwLDE2LDEwNiwxMCwxMjQsNiwxMzEsMSwxMzEsMywxLDAsCisgICAgMTIxLDE0LDExNiwwLDEwNiw1LDEwMCwxNywxMzEsMSwxMjUsOSw4NywwLDExMCwyNiwKKyAgICA0LDAsMTE2LDksMTA3LDEwLDE0NCwxLDExNCw1MiwxLDAsMSwwLDEsMCwKKyAgICAxMDAsMTgsMTI1LDksODksMCwxMTAsMiw4OCwwLDExNiw2LDEyNCwxLDEwMCwxNywKKyAgICAxMjQsOSwxMzEsMywxLDAsMTE2LDAsMTA2LDUsMTAwLDE5LDEzMSwxLDEyNSwxMCwKKyAgICAxMTYsNiwxMjQsMSwxMDAsMTksMTI0LDEwLDEzMSwzLDEsMCwxMjQsNSwxMDAsNywKKyAgICAxMDcsMiwxNDQsMSwxMTQsMTIwLDExNiwwLDEwNiw1LDEwMCwyMCwxMzEsMSwxMjUsMTEsCisgICAgMTE2LDYsMTI0LDEsMTAwLDIxLDEyNCwxMSwxMzEsMywxLDAsMTE2LDYsMTI0LDEsCisgICAgMTAwLDIyLDExNiwxMSwxMzEsMCwxMzEsMywxLDAsMTE2LDEyLDEwNiwxMywxMTYsMiwKKyAgICAxMDYsMTQsMTMxLDAsMTMxLDEsMSwwLDEyNCw1LDEwMCw3LDEwNywyLDE0NCwxLAorICAgIDExNCwxODQsMTE2LDE1LDEwNiwxNiwxMDAsMjMsMTMxLDEsMSwwLDEwMCwyNCwxMTYsMTIsCisgICAgMTA3LDYsMTQ0LDEsMTE0LDE4NCwxMDAsMjUsMTE2LDE3LDk1LDE4LDEwMCwxOCw4MywwLAorICAgIDQxLDI3LDEyMiwyMDUsODMsMTAxLDExNiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgMzIsOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsCisgICAgMTAxLDEwMCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsCisgICAgMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDMyLDEwNSwxMTAsMTE2LAorICAgIDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwKKyAgICAxMDEsMTE0LDMyLDk5LDExMSwxMDksMTEyLDExMSwxMTAsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwKKyAgICAxMDEsMzIsMTAxLDEyMCwxMTYsMTE0LDk3LDk5LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTE0LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMTE0LDUyLDAsMCwwLDExNCw2MywwLDAsMCwyMTgsOCw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsMTA1LDExMCwxMTUsMTE0LDE0MCwwLDAsMCw5MCw1LDExMiwxMTEsMTE1LDEwNSwKKyAgICAxMjAsMjUwLDEsNDcsMjE4LDIsMTEwLDExNiwyNTAsMSw5Miw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwKKyAgICAxMTUsMjYsMCwwLDAsMTI0LDAsOTMsMTgsMTI1LDEsMTE2LDAsMTI0LDEsMTMxLAorICAgIDEsMTAwLDAsMTA3LDIsODYsMCwxLDAsMTEzLDIsMTAwLDEsODMsMCw0MSwKKyAgICAyLDExNCwzMSwwLDAsMCw3OCw0MSwxLDExNCwzMywwLDAsMCw0MSwyLAorICAgIDExNCwyNCwwLDAsMCwxMTQsODEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMTE1LDIsMCwwLDAsNCwwLDEyMiwyNSw5NSwxMTUsMTAxLDExNiwxMTcsCisgICAgMTEyLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsMTE0LDYyLDAsMCwwLDEyMiwzMCwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDExMSwKKyAgICAxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLDExMCwxMTYsMTE0LDMsMCwwLDAsMTE0LDI3LAorICAgIDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsMCwwLDAsOTAsNyw5NSwKKyAgICAxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDc4LDkwLDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwKKyAgICAxMDIsOTAsNiwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTQsMTY3LDAsMCwwLDExNCw3LAorICAgIDAsMCwwLDEyMiw0LDQ2LDExMiwxMjEsMTE5LDEyMiw2LDk1LDEwMCw0NiwxMTIsMTIxLAorICAgIDEwMCw4NCw0MSw0LDExNCw1MiwwLDAsMCwxMTQsNjMsMCwwLDAsMTE0LDI1LAorICAgIDEsMCwwLDExNCwxNDAsMCwwLDAsNDEsMTksMTE0LDExOCwwLDAsMCwxMTQsCisgICAgOCwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwyMzYsMCwwLDAsMTE0LDEwOSwKKyAgICAwLDAsMCw5MCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LAorICAgIDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDExMywwLDAsMCwyMTgsMyw5NywxMDgsCisgICAgMTA4LDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTQsMTAzLDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsMTMsMCwwLDAsCisgICAgMTE0LDIyNiwwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwyNCwxLDAsMCwxMTQsCisgICAgODgsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxNzAsCisgICAgMCwwLDAsNDEsMTIsMjE4LDE3LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMTUsMTAxLDEwOCwxMDIsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTAsMTAsMTExLDExNSw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCwKKyAgICAxMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTEsMTE1LDExNCwyMywwLDAsMCwKKyAgICAxMTQsMjcsMCwwLDAsOTAsOSwxMTEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsCisgICAgMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsCisgICAgMTMsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDYsOTUsCisgICAgMTE1LDEwMSwxMTYsMTE3LDExMiw4OSw1LDAsMCwxMTUsODIsMCwwLDAsMCw4LAorICAgIDQsMSw2LDEsNiwzLDEwLDEsMTAsMSwxMCwxLDEyLDIsMTAsMSwKKyAgICAxNiwzLDIyLDEsMTQsMiwyMiwxLDgsMSwxMCwxLDEwLDEsNCwyLAorICAgIDIsMSwxMCwxLDYsMSwxNCwxLDEyLDIsOCwxLDEyLDEsMTIsMSwKKyAgICAxOCwzLDIsMSwxNCwxLDE2LDIsMTAsMSwxMiwzLDEwLDEsMTIsMywKKyAgICAxMCwxLDEwLDEsMTIsMywxNCwxLDE0LDEsMTAsMSwxMCwxLDEwLDEsCisgICAgMTE0LDMyLDEsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDcyLDAsMCwwLDExNiwKKyAgICAwLDEyNCwwLDEzMSwxLDEsMCwxMTYsMSwxMzEsMCwxMjUsMSwxMTYsMiwxMDYsCisgICAgMywxMDYsNCwxMTYsNSwxMDYsNiwxMjQsMSwxNDIsMCwxMDMsMSwxMzEsMSwxLAorICAgIDAsMTE2LDcsMTA2LDgsMTAwLDEsMTA3LDIsMTE0LDU2LDExNiwyLDEwNiw5LDEwNiwKKyAgICAxMCwxMTYsMTEsMTMxLDEsMSwwLDExNiwyLDEwNiw5LDEwNiwxMCwxMTYsMTIsMTMxLAorICAgIDEsMSwwLDEwMCwyLDgzLDAsNDEsMywxMjIsNDEsNzMsMTEwLDExNSwxMTYsOTcsCisgICAgMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NSw5OCw5NywxMTUsMTAxLAorICAgIDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwKKyAgICAxMTAsMTE2LDExNSw0NiwxMTQsMjcsMSwwLDAsNzgsNDEsMTMsMTE0LDMyLDEsMCwKKyAgICAwLDExNCwxNTksMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDI1MywwLDAsMCwKKyAgICAxMTQsMTQ3LDAsMCwwLDExNCw1LDEsMCwwLDExNCwxOCwxLDAsMCwxMTQsCisgICAgMywwLDAsMCwxMTQsMTA5LDAsMCwwLDIxOCw5LDEwOSwxMDEsMTE2LDk3LDk1LAorICAgIDExMiw5NywxMTYsMTA0LDExNCwxNjEsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsMjQ4LAorICAgIDAsMCwwLDQxLDIsMTE0LDMxLDEsMCwwLDkwLDE3LDExNSwxMTcsMTEyLDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDk1LDEwNSwKKyAgICAxMTAsMTE1LDExNiw5NywxMDgsMTA4LDE1Nyw1LDAsMCwxMTUsMTIsMCwwLDAsMCwKKyAgICAyLDgsMSw2LDEsMjAsMSwxMCwxLDEyLDEsMTE0LDM0LDEsMCwwLAorICAgIDQxLDEsMTE0LDAsMCwwLDAsNDEsMiwxMTQsMSwwLDAsMCwxMTQsMiwKKyAgICAwLDAsMCw0MSwxLDExNCw0OSwwLDAsMCw0MSwxLDc4LDQxLDMsNzgsCisgICAgNzgsNzgsNDEsMyw3OCw3OCw3OCw0MSwyLDExNCw2MiwwLDAsMCwxMTQsNjIsCisgICAgMCwwLDAsNDEsMSw3OCw0MSwxLDc4LDQxLDU4LDExNCwxMTEsMCwwLDAsCisgICAgMTE0LDEyLDAsMCwwLDkwLDM3LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLAorICAgIDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLAorICAgIDc3LDgzLDk1LDY2LDg5LDg0LDY5LDgzLDk1LDc1LDY5LDg5LDExNCwxMSwwLDAsCisgICAgMCwxMTQsMTMsMCwwLDAsMTE0LDE5LDAsMCwwLDExNCwyMSwwLDAsMCwKKyAgICAxMTQsMzAsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsCisgICAgNDUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsNTgsCisgICAgMCwwLDAsMjE4LDQsMTE2LDEyMSwxMTIsMTAxLDIxOCw4LDk1LDk1LDk5LDExMSwxMDAsCisgICAgMTAxLDk1LDk1LDExNCwxNDIsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCwxMzIsMCwKKyAgICAwLDAsMTE0LDE2LDAsMCwwLDExNCwyMCwwLDAsMCw5MCwxNyw5NSw4MiwKKyAgICA2NSw4Nyw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsCisgICAgNzcsMCwwLDAsMTE0LDc2LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsNzgsCisgICAgMCwwLDAsOTAsMjMsNjgsNjksNjYsODUsNzEsOTUsNjYsODksODQsNjksNjcsCisgICAgNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsOTAsMjcsNzksODAsCisgICAgODQsNzMsNzcsNzMsOTAsNjksNjgsOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksCisgICAgOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE0LDgzLDAsMCwwLDExNCw4OSwKKyAgICAwLDAsMCwxMTQsOTUsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDEsMCwKKyAgICAwLDAsMTE0LDEyMCwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxMzksMCwwLAorICAgIDAsMTE0LDE0NSwwLDAsMCwxMTQsMTQ4LDAsMCwwLDExNCwxNTMsMCwwLDAsCisgICAgMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCwxNjAsMCwwLDAsMTE0LDE2NSwwLAorICAgIDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxODEsMCwwLDAsMTE0LDE5MSwwLDAsCisgICAgMCwxMTQsMjA3LDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDIyMCwwLDAsMCwKKyAgICAxMTQsMjI2LDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDIyNywwLDAsMCwxMTQsCisgICAgMjQ2LDAsMCwwLDExNCwyNDgsMCwwLDAsMTE0LDUsMSwwLDAsMTE0LDIzLAorICAgIDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDMyLDEsMCwwLDExNCwzNCwxLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwyMTgsOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2MiwKKyAgICA4LDAsMCwwLDExNSwxMDgsMCwwLDAsNCwxNiw0LDEsNCwxLDIsCisgICAgMSw2LDMsOCwxNyw4LDUsOCw1LDgsNiw4LDEyLDgsMTAsOCwKKyAgICA5LDgsNSw4LDcsMTAsMjIsMTAsMTIyLDE2LDEsMTIsMiw0LDEsNCwKKyAgICAyLDYsMiw2LDIsOCwyLDE2LDQ1LDgsMzQsOCwxOSw4LDEyLDgsCisgICAgMTIsOCwyOCw4LDE3LDEwLDU1LDEwLDEyLDEwLDEwLDgsMTQsNiwzLDQsCisgICAgMSwxNCw2NywxNCw2NCwxNCwyOSwxNiwxMTAsMTQsNDEsMTgsNDUsMTgsMTYsNCwKKyAgICAzLDE4LDUzLDE0LDYwLDE0LDQyLDE0LDEyNywwLDUsMTQsMTI3LDAsMjIsMTAsCisgICAgMjMsOCwxMSw4LDY4LAogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weSBiL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQppbmRleCBkOWEwODU1Li4wMjNjOWU2IDEwMDc1NQotLS0gYS9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKKysrIGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CkBAIC0zLDI0ICszLDM0IEBACiAoZm9yIGNvbXBpbGVycyBzdXBwb3J0aW5nIGNvbXB1dGVkIGdvdG9zIG9yICJsYWJlbHMtYXMtdmFsdWVzIiwgc3VjaCBhcyBnY2MpLgogIiIiCiAKLSMgVGhpcyBjb2RlIHNob3VsZCBzdGF5IGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi4zLCBhdCBsZWFzdCB3aGlsZQotIyBzb21lIG9mIHRoZSBidWlsZGJvdHMgaGF2ZSBQeXRob24gMi4zIGFzIHRoZWlyIHN5c3RlbSBQeXRob24uCi0KLWltcG9ydCBpbXAKIGltcG9ydCBvcworaW1wb3J0IHN5cwogCiAKLWRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKLSAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KLSAgICAiIiIKLSAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAotICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiKQotICAgIHJldHVybiBpbXAubG9hZF9tb2R1bGUobW9kbmFtZSwgKmltcC5maW5kX21vZHVsZShtb2RuYW1lLCBbbW9kcGF0aF0pKQordHJ5OgorICAgIGZyb20gaW1wb3J0bGliLm1hY2hpbmVyeSBpbXBvcnQgU291cmNlRmlsZUxvYWRlcgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBpbXAKKworICAgIGRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKKyAgICAgICAgIiIiRmluZHMgYW5kIHJldHVybnMgYSBtb2R1bGUgaW4gdGhlIGxvY2FsIGRpc3QvY2hlY2tvdXQuCisgICAgICAgICIiIgorICAgICAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCAiTGliIikKKyAgICAgICAgcmV0dXJuIGltcC5sb2FkX21vZHVsZShtb2RuYW1lLCAqaW1wLmZpbmRfbW9kdWxlKG1vZG5hbWUsIFttb2RwYXRoXSkpCitlbHNlOgorICAgIGRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKKyAgICAgICAgIiIiRmluZHMgYW5kIHJldHVybnMgYSBtb2R1bGUgaW4gdGhlIGxvY2FsIGRpc3QvY2hlY2tvdXQuCisgICAgICAgICIiIgorICAgICAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCAiTGliIiwgbW9kbmFtZSArICIucHkiKQorICAgICAgICByZXR1cm4gU291cmNlRmlsZUxvYWRlcihtb2RuYW1lLCBtb2RwYXRoKS5sb2FkX21vZHVsZSgpCisKIAogZGVmIHdyaXRlX2NvbnRlbnRzKGYpOgogICAgICIiIldyaXRlIEMgY29kZSBjb250ZW50cyB0byB0aGUgdGFyZ2V0IGZpbGUgb2JqZWN0LgogICAgICIiIgotICAgIG9wY29kZSA9IGZpbmRfbW9kdWxlKCJvcGNvZGUiKQorICAgIG9wY29kZSA9IGZpbmRfbW9kdWxlKCdvcGNvZGUnKQogICAgIHRhcmdldHMgPSBbJ191bmtub3duX29wY29kZSddICogMjU2CiAgICAgZm9yIG9wbmFtZSwgb3AgaW4gb3Bjb2RlLm9wbWFwLml0ZW1zKCk6CiAgICAgICAgIHRhcmdldHNbb3BdID0gIlRBUkdFVF8lcyIgJSBvcG5hbWUKQEAgLTI5LDE1ICszOSwxNyBAQAogICAgIGYud3JpdGUoIlxufTtcbiIpCiAKIAotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpbXBvcnQgc3lzCi0gICAgYXNzZXJ0IGxlbihzeXMuYXJndikgPCAzLCAiVG9vIG1hbnkgYXJndW1lbnRzIgorZGVmIG1haW4oKToKKyAgICBpZiBsZW4oc3lzLmFyZ3YpID49IDM6CisgICAgICAgIHN5cy5leGl0KCJUb28gbWFueSBhcmd1bWVudHMiKQogICAgIGlmIGxlbihzeXMuYXJndikgPT0gMjoKICAgICAgICAgdGFyZ2V0ID0gc3lzLmFyZ3ZbMV0KICAgICBlbHNlOgogICAgICAgICB0YXJnZXQgPSAiUHl0aG9uL29wY29kZV90YXJnZXRzLmgiCi0gICAgZiA9IG9wZW4odGFyZ2V0LCAidyIpCi0gICAgdHJ5OgorICAgIHdpdGggb3Blbih0YXJnZXQsICJ3IikgYXMgZjoKICAgICAgICAgd3JpdGVfY29udGVudHMoZikKLSAgICBmaW5hbGx5OgotICAgICAgICBmLmNsb3NlKCkKKyAgICBwcmludCgiSnVtcCB0YWJsZSB3cml0dGVuIGludG8gJXMiICUgdGFyZ2V0KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9QeXRob24vbWFyc2hhbC5jIGIvUHl0aG9uL21hcnNoYWwuYwppbmRleCA1YjhkZTk5Li44N2E0YjI0IDEwMDY0NAotLS0gYS9QeXRob24vbWFyc2hhbC5jCisrKyBiL1B5dGhvbi9tYXJzaGFsLmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgIG0gPSBwLT5lbmQgLSBwLT5wdHI7CiAgICAgaWYgKHAtPmZwICE9IE5VTEwpIHsKICAgICAgICAgaWYgKG4gPD0gbSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAtPnB0ciwgcywgbik7CisgICAgICAgICAgICBtZW1jcHkocC0+cHRyLCBzLCBuKTsKICAgICAgICAgICAgIHAtPnB0ciArPSBuOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAobiA8PSBtIHx8IHdfcmVzZXJ2ZShwLCBuIC0gbSkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLT5wdHIsIHMsIG4pOworICAgICAgICAgICAgbWVtY3B5KHAtPnB0ciwgcywgbik7CiAgICAgICAgICAgICBwLT5wdHIgKz0gbjsKICAgICAgICAgfQogICAgIH0KQEAgLTI2MywxMCArMjYzLDEwIEBACiAgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAxKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkocC0+aGFzaHRhYmxlLCB2KTsKKyAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHAtPmhhc2h0YWJsZSwgdik7CiAgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKICAgICAgICAgLyogd3JpdGUgdGhlIHJlZmVyZW5jZSBpbmRleCB0byB0aGUgc3RyZWFtICovCi0gICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHAtPmhhc2h0YWJsZSwgJncsIHNpemVvZih3KSwgZW50cnkpOworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShwLT5oYXNodGFibGUsIGVudHJ5LCB3KTsKICAgICAgICAgLyogd2UgZG9uJ3Qgc3RvcmUgImxvbmciIGluZGljZXMgaW4gdGhlIGRpY3QgKi8KICAgICAgICAgYXNzZXJ0KDAgPD0gdyAmJiB3IDw9IDB4N2ZmZmZmZmYpOwogICAgICAgICB3X2J5dGUoVFlQRV9SRUYsIHApOwpAQCAtNTcxLDcgKzU3MSw4IEBACiB3X2luaXRfcmVmcyhXRklMRSAqd2YsIGludCB2ZXJzaW9uKQogewogICAgIGlmICh2ZXJzaW9uID49IDMpIHsKLSAgICAgICAgd2YtPmhhc2h0YWJsZSA9IF9QeV9oYXNodGFibGVfbmV3KHNpemVvZihpbnQpLCBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAorICAgICAgICB3Zi0+aGFzaHRhYmxlID0gX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZW9mKFB5T2JqZWN0ICopLCBzaXplb2YoaW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKICAgICAgICAgaWYgKHdmLT5oYXNodGFibGUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTU4Miw5ICs1ODMsMTMgQEAKIH0KIAogc3RhdGljIGludAotd19kZWNyZWZfZW50cnkoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqUHlfVU5VU0VEKGRhdGEpKQord19kZWNyZWZfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgIHZvaWQgKlB5X1VOVVNFRChkYXRhKSkKIHsKLSAgICBQeV9YREVDUkVGKGVudHJ5LT5rZXkpOworICAgIFB5T2JqZWN0ICplbnRyeV9rZXk7CisKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgZW50cnlfa2V5KTsKKyAgICBQeV9YREVDUkVGKGVudHJ5X2tleSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY0Myw3ICs2NDgsNyBAQAogICAgIFB5T2JqZWN0ICpyZWZzOyAgLyogYSBsaXN0ICovCiB9IFJGSUxFOwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiByX3N0cmluZyhQeV9zc2l6ZV90IG4sIFJGSUxFICpwKQogewogICAgIFB5X3NzaXplX3QgcmVhZCA9IC0xOwpAQCAtNzI5LDcgKzczNCw3IEBACiAgICAgICAgIGMgPSBnZXRjKHAtPmZwKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGNoYXIgKnB0ciA9IHJfc3RyaW5nKDEsIHApOworICAgICAgICBjb25zdCBjaGFyICpwdHIgPSByX3N0cmluZygxLCBwKTsKICAgICAgICAgaWYgKHB0ciAhPSBOVUxMKQogICAgICAgICAgICAgYyA9ICoodW5zaWduZWQgY2hhciAqKSBwdHI7CiAgICAgfQpAQCAtNzQwLDkgKzc0NSw5IEBACiByX3Nob3J0KFJGSUxFICpwKQogewogICAgIHNob3J0IHggPSAtMTsKLSAgICB1bnNpZ25lZCBjaGFyICpidWZmZXI7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyOwogCi0gICAgYnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoMiwgcCk7CisgICAgYnVmZmVyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoMiwgcCk7CiAgICAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CiAgICAgICAgIHggPSBidWZmZXJbMF07CiAgICAgICAgIHggfD0gYnVmZmVyWzFdIDw8IDg7CkBAIC03NTYsOSArNzYxLDkgQEAKIHJfbG9uZyhSRklMRSAqcCkKIHsKICAgICBsb25nIHggPSAtMTsKLSAgICB1bnNpZ25lZCBjaGFyICpidWZmZXI7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyOwogCi0gICAgYnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoNCwgcCk7CisgICAgYnVmZmVyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoNCwgcCk7CiAgICAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CiAgICAgICAgIHggPSBidWZmZXJbMF07CiAgICAgICAgIHggfD0gKGxvbmcpYnVmZmVyWzFdIDw8IDg7CkBAIC05NzgsNyArOTgzLDggQEAKIAogICAgIGNhc2UgVFlQRV9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciBidWZbMjU2XSwgKnB0cjsKKyAgICAgICAgICAgIGNoYXIgYnVmWzI1Nl07CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBkb3VibGUgZHg7CiAgICAgICAgICAgICBuID0gcl9ieXRlKHApOwogICAgICAgICAgICAgaWYgKG4gPT0gRU9GKSB7CkBAIC0xMDAxLDkgKzEwMDcsOSBAQAogCiAgICAgY2FzZSBUWVBFX0JJTkFSWV9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmOworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmOwogICAgICAgICAgICAgZG91YmxlIHg7Ci0gICAgICAgICAgICBidWYgPSAodW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg4LCBwKTsKKyAgICAgICAgICAgIGJ1ZiA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOwogICAgICAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgeCA9IF9QeUZsb2F0X1VucGFjazgoYnVmLCAxKTsKQEAgLTEwMTYsNyArMTAyMiw4IEBACiAKICAgICBjYXNlIFRZUEVfQ09NUExFWDoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciBidWZbMjU2XSwgKnB0cjsKKyAgICAgICAgICAgIGNoYXIgYnVmWzI1Nl07CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBQeV9jb21wbGV4IGM7CiAgICAgICAgICAgICBuID0gcl9ieXRlKHApOwogICAgICAgICAgICAgaWYgKG4gPT0gRU9GKSB7CkBAIC0xMDUzLDE1ICsxMDYwLDE1IEBACiAKICAgICBjYXNlIFRZUEVfQklOQVJZX0NPTVBMRVg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZjsKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZjsKICAgICAgICAgICAgIFB5X2NvbXBsZXggYzsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjLnJlYWwgPSBfUHlGbG9hdF9VbnBhY2s4KGJ1ZiwgMSk7CiAgICAgICAgICAgICBpZiAoYy5yZWFsID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjLmltYWcgPSBfUHlGbG9hdF9VbnBhY2s4KGJ1ZiwgMSk7CkBAIC0xMDc0LDcgKzEwODEsNyBAQAogCiAgICAgY2FzZSBUWVBFX1NUUklORzoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciAqcHRyOworICAgICAgICAgICAgY29uc3QgY2hhciAqcHRyOwogICAgICAgICAgICAgbiA9IHJfbG9uZyhwKTsKICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExOSw3ICsxMTI2LDcgQEAKICAgICAgICAgfQogICAgIF9yZWFkX2FzY2lpOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICpwdHI7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBwdHIgPSByX3N0cmluZyhuLCBwKTsKICAgICAgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzcsNyArMTE0NCw3IEBACiAgICAgICAgIGlzX2ludGVybmVkID0gMTsKICAgICBjYXNlIFRZUEVfVU5JQ09ERToKICAgICAgICAgewotICAgICAgICBjaGFyICpidWZmZXI7CisgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZmZlcjsKIAogICAgICAgICBuID0gcl9sb25nKHApOwogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTEyNjQsNDEgKzEyNzEsNTIgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYmFkIG1hcnNoYWwgZGF0YSAoc2V0IHNpemUgb3V0IG9mIHJhbmdlKSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdiA9ICh0eXBlID09IFRZUEVfU0VUKSA/IFB5U2V0X05ldyhOVUxMKSA6IFB5RnJvemVuU2V0X05ldyhOVUxMKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gVFlQRV9TRVQpIHsKLSAgICAgICAgICAgIFJfUkVGKHYpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogbXVzdCB1c2UgZGVsYXllZCByZWdpc3RyYXRpb24gb2YgZnJvemVuc2V0cyBiZWNhdXNlIHRoZXkgbXVzdAotICAgICAgICAgICAgICogYmUgaW5pdCB3aXRoIGEgcmVmY291bnQgb2YgMQotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZHggPSByX3JlZl9yZXNlcnZlKGZsYWcsIHApOwotICAgICAgICAgICAgaWYgKGlkeCA8IDApCi0gICAgICAgICAgICAgICAgUHlfQ0xFQVIodik7IC8qIHNpZ25hbCBlcnJvciAqLwotICAgICAgICB9Ci0gICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICB2MiA9IHJfb2JqZWN0KHApOwotICAgICAgICAgICAgaWYgKCB2MiA9PSBOVUxMICkgewotICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJOVUxMIG9iamVjdCBpbiBtYXJzaGFsIGRhdGEgZm9yIHNldCIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICB2ID0gTlVMTDsKKyAgICAgICAgaWYgKG4gPT0gMCAmJiB0eXBlID09IFRZUEVfRlJPWkVOU0VUKSB7CisgICAgICAgICAgICAvKiBjYWxsIGZyb3plbnNldCgpIHRvIGdldCB0aGUgZW1wdHkgZnJvemVuc2V0IHNpbmdsZXRvbiAqLworICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QqKSZQeUZyb3plblNldF9UeXBlLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHYsIHYyKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodjIpOwotICAgICAgICAgICAgICAgIHYgPSBOVUxMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgIFJfUkVGKHYpOworICAgICAgICAgICAgcmV0dmFsID0gdjsKICAgICAgICAgfQotICAgICAgICBpZiAodHlwZSAhPSBUWVBFX1NFVCkKLSAgICAgICAgICAgIHYgPSByX3JlZl9pbnNlcnQodiwgaWR4LCBmbGFnLCBwKTsKLSAgICAgICAgcmV0dmFsID0gdjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2ID0gKHR5cGUgPT0gVFlQRV9TRVQpID8gUHlTZXRfTmV3KE5VTEwpIDogUHlGcm96ZW5TZXRfTmV3KE5VTEwpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gVFlQRV9TRVQpIHsKKyAgICAgICAgICAgICAgICBSX1JFRih2KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogbXVzdCB1c2UgZGVsYXllZCByZWdpc3RyYXRpb24gb2YgZnJvemVuc2V0cyBiZWNhdXNlIHRoZXkgbXVzdAorICAgICAgICAgICAgICAgICAqIGJlIGluaXQgd2l0aCBhIHJlZmNvdW50IG9mIDEKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZHggPSByX3JlZl9yZXNlcnZlKGZsYWcsIHApOworICAgICAgICAgICAgICAgIGlmIChpZHggPCAwKQorICAgICAgICAgICAgICAgICAgICBQeV9DTEVBUih2KTsgLyogc2lnbmFsIGVycm9yICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgdjIgPSByX29iamVjdChwKTsKKyAgICAgICAgICAgICAgICBpZiAoIHYyID09IE5VTEwgKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgb2JqZWN0IGluIG1hcnNoYWwgZGF0YSBmb3Igc2V0Iik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHYsIHYyKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2Mik7CisgICAgICAgICAgICAgICAgICAgIHYgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0eXBlICE9IFRZUEVfU0VUKQorICAgICAgICAgICAgICAgIHYgPSByX3JlZl9pbnNlcnQodiwgaWR4LCBmbGFnLCBwKTsKKyAgICAgICAgICAgIHJldHZhbCA9IHY7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERToKZGlmZiAtLWdpdCBhL1B5dGhvbi9tb2RzdXBwb3J0LmMgYi9QeXRob24vbW9kc3VwcG9ydC5jCmluZGV4IDBkMDkzNzEuLmFhYmVlOGYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tb2RzdXBwb3J0LmMKKysrIGIvUHl0aG9uL21vZHN1cHBvcnQuYwpAQCAtMjYwLDEzICsyNjAsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhuKTsKICAgICAgICAgfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgY2FzZSAnTCc6Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXZhX2FyZygqcF92YSwgUFlfTE9OR19MT05HKSk7CisgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXZhX2FyZygqcF92YSwgbG9uZyBsb25nKSk7CiAKICAgICAgICAgY2FzZSAnSyc6Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKChQWV9MT05HX0xPTkcpdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygobG9uZyBsb25nKXZhX2FyZygqcF92YSwgdW5zaWduZWQgbG9uZyBsb25nKSk7CisKICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwpAQCAtMzE4LDcgKzMxNyw3IEBACiAgICAgICAgIGNhc2UgJ1UnOiAgIC8qIFhYWCBkZXByZWNhdGVkIGFsaWFzICovCiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICAgICAgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjaGFyICopOworICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuOwogICAgICAgICAgICAgaWYgKCoqcF9mb3JtYXQgPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgKysqcF9mb3JtYXQ7CkBAIC0zNTEsNyArMzUwLDcgQEAKICAgICAgICAgY2FzZSAneSc6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICAgICAgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjaGFyICopOworICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuOwogICAgICAgICAgICAgaWYgKCoqcF9mb3JtYXQgPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgKysqcF9mb3JtYXQ7CkBAIC00NjgsOCArNDY3LDcgQEAKICAgICBjb25zdCBjaGFyICpmID0gZm9ybWF0OwogICAgIGludCBuID0gY291bnRmb3JtYXQoZiwgJ1wwJyk7CiAgICAgdmFfbGlzdCBsdmE7Ci0KLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICBQeU9iamVjdCAqcmV0dmFsOwogCiAgICAgaWYgKG4gPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ3Nyw5ICs0NzUsMTQgQEAKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgaWYgKG4gPT0gMSkKLSAgICAgICAgcmV0dXJuIGRvX21rdmFsdWUoJmYsICZsdmEsIGZsYWdzKTsKLSAgICByZXR1cm4gZG9fbWt0dXBsZSgmZiwgJmx2YSwgJ1wwJywgbiwgZmxhZ3MpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CisgICAgaWYgKG4gPT0gMSkgeworICAgICAgICByZXR2YWwgPSBkb19ta3ZhbHVlKCZmLCAmbHZhLCBmbGFncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gZG9fbWt0dXBsZSgmZiwgJmx2YSwgJ1wwJywgbiwgZmxhZ3MpOworICAgIH0KKyAgICB2YV9lbmQobHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOwogfQogCiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9teXN0cnRvdWwuYyBiL1B5dGhvbi9teXN0cnRvdWwuYwppbmRleCA5ODQyOWQ0Li5hODU3OTBlIDEwMDY0NAotLS0gYS9QeXRob24vbXlzdHJ0b3VsLmMKKysrIGIvUHl0aG9uL215c3RydG91bC5jCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBzbWFsbG1heFtiYXNlXSBpcyB0aGUgbGFyZ2VzdCB1bnNpZ25lZCBsb25nIGkgc3VjaCB0aGF0CiAgKiBpICogYmFzZSBkb2Vzbid0IG92ZXJmbG93IHVuc2lnbmVkIGxvbmcuCiAgKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHNtYWxsbWF4W10gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBzbWFsbG1heFtdID0gewogICAgIDAsIC8qIGJhc2VzIDAgYW5kIDEgYXJlIGludmFsaWQgKi8KICAgICAwLAogICAgIFVMT05HX01BWCAvIDIsCkBAIC02MiwxNCArNjIsMTQgQEAKICAqIE5vdGUgdGhhdCB0aGlzIGlzIHBlc3NpbWlzdGljIGlmIHNpemVvZihsb25nKSA+IDQuCiAgKi8KICNpZiBTSVpFT0ZfTE9ORyA9PSA0Ci1zdGF0aWMgaW50IGRpZ2l0bGltaXRbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgZGlnaXRsaW1pdFtdID0gewogICAgIDAsICAwLCAzMiwgMjAsIDE2LCAxMywgMTIsIDExLCAxMCwgMTAsICAvKiAgMCAtICA5ICovCiAgICAgOSwgIDksICA4LCAgOCwgIDgsICA4LCAgOCwgIDcsICA3LCAgNywgIC8qIDEwIC0gMTkgKi8KICAgICA3LCAgNywgIDcsICA3LCAgNiwgIDYsICA2LCAgNiwgIDYsICA2LCAgLyogMjAgLSAyOSAqLwogICAgIDYsICA2LCAgNiwgIDYsICA2LCAgNiwgIDZ9OyAgICAgICAgICAgICAvKiAzMCAtIDM2ICovCiAjZWxpZiBTSVpFT0ZfTE9ORyA9PSA4CiAvKiBbaW50KG1hdGguZmxvb3IobWF0aC5sb2coMioqNjQsIGkpKSkgZm9yIGkgaW4gcmFuZ2UoMiwgMzcpXSAqLwotc3RhdGljIGludCBkaWdpdGxpbWl0W10gPSB7CitzdGF0aWMgY29uc3QgaW50IGRpZ2l0bGltaXRbXSA9IHsKICAgICAgICAgIDAsICAgMCwgNjQsIDQwLCAzMiwgMjcsIDI0LCAyMiwgMjEsIDIwLCAgLyogIDAgLSAgOSAqLwogICAgIDE5LCAgMTgsIDE3LCAxNywgMTYsIDE2LCAxNiwgMTUsIDE1LCAxNSwgIC8qIDEwIC0gMTkgKi8KICAgICAxNCwgIDE0LCAxNCwgMTQsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsICAvKiAyMCAtIDI5ICovCmRpZmYgLS1naXQgYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaCBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCmluZGV4IDE5MjU5ZTEuLjcyZDI0MDggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCisrKyBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCkBAIC04NCw3ICs4NCw3IEBACiAgICAgJiZUQVJHRVRfV0lUSF9DTEVBTlVQX0ZJTklTSCwKICAgICAmJlRBUkdFVF9SRVRVUk5fVkFMVUUsCiAgICAgJiZUQVJHRVRfSU1QT1JUX1NUQVIsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfU0VUVVBfQU5OT1RBVElPTlMsCiAgICAgJiZUQVJHRVRfWUlFTERfVkFMVUUsCiAgICAgJiZUQVJHRVRfUE9QX0JMT0NLLAogICAgICYmVEFSR0VUX0VORF9GSU5BTExZLApAQCAtMTI2LDIyICsxMjYsMjIgQEAKICAgICAmJlRBUkdFVF9MT0FEX0ZBU1QsCiAgICAgJiZUQVJHRVRfU1RPUkVfRkFTVCwKICAgICAmJlRBUkdFVF9ERUxFVEVfRkFTVCwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9TVE9SRV9BTk5PVEFUSU9OLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX1JBSVNFX1ZBUkFSR1MsCiAgICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTiwKICAgICAmJlRBUkdFVF9NQUtFX0ZVTkNUSU9OLAogICAgICYmVEFSR0VUX0JVSUxEX1NMSUNFLAotICAgICYmVEFSR0VUX01BS0VfQ0xPU1VSRSwKKyAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJlRBUkdFVF9MT0FEX0NMT1NVUkUsCiAgICAgJiZUQVJHRVRfTE9BRF9ERVJFRiwKICAgICAmJlRBUkdFVF9TVE9SRV9ERVJFRiwKICAgICAmJlRBUkdFVF9ERUxFVEVfREVSRUYsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTl9WQVIsCisgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTl9LVywKLSAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX1ZBUl9LVywKKyAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX0VYLAogICAgICYmVEFSR0VUX1NFVFVQX1dJVEgsCiAgICAgJiZUQVJHRVRfRVhURU5ERURfQVJHLAogICAgICYmVEFSR0VUX0xJU1RfQVBQRU5ELApAQCAtMTU0LDEwICsxNTQsMTAgQEAKICAgICAmJlRBUkdFVF9CVUlMRF9UVVBMRV9VTlBBQ0ssCiAgICAgJiZUQVJHRVRfQlVJTERfU0VUX1VOUEFDSywKICAgICAmJlRBUkdFVF9TRVRVUF9BU1lOQ19XSVRILAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0ZPUk1BVF9WQUxVRSwKKyAgICAmJlRBUkdFVF9CVUlMRF9DT05TVF9LRVlfTUFQLAorICAgICYmVEFSR0VUX0JVSUxEX1NUUklORywKKyAgICAmJlRBUkdFVF9CVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLApkaWZmIC0tZ2l0IGEvUHl0aG9uL3BlZXBob2xlLmMgYi9QeXRob24vcGVlcGhvbGUuYwppbmRleCA0ZTY1N2ZhLi44NGViMmRiIDEwMDY0NAotLS0gYS9QeXRob24vcGVlcGhvbGUuYworKysgYi9QeXRob24vcGVlcGhvbGUuYwpAQCAtOCw4ICs4LDggQEAKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAic3ltdGFibGUuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJ3b3JkY29kZV9oZWxwZXJzLmgiCiAKLSNkZWZpbmUgR0VUQVJHKGFyciwgaSkgKChpbnQpKChhcnJbaSsyXTw8OCkgKyBhcnJbaSsxXSkpCiAjZGVmaW5lIFVOQ09ORElUSU9OQUxfSlVNUChvcCkgIChvcD09SlVNUF9BQlNPTFVURSB8fCBvcD09SlVNUF9GT1JXQVJEKQogI2RlZmluZSBDT05ESVRJT05BTF9KVU1QKG9wKSAob3A9PVBPUF9KVU1QX0lGX0ZBTFNFIHx8IG9wPT1QT1BfSlVNUF9JRl9UUlVFIFwKICAgICB8fCBvcD09SlVNUF9JRl9GQUxTRV9PUl9QT1AgfHwgb3A9PUpVTVBfSUZfVFJVRV9PUl9QT1ApCkBAIC0xNywyMiArMTcsMTYgQEAKICAgICB8fCBvcD09UE9QX0pVTVBfSUZfRkFMU0UgfHwgb3A9PVBPUF9KVU1QX0lGX1RSVUUgXAogICAgIHx8IG9wPT1KVU1QX0lGX0ZBTFNFX09SX1BPUCB8fCBvcD09SlVNUF9JRl9UUlVFX09SX1BPUCkKICNkZWZpbmUgSlVNUFNfT05fVFJVRShvcCkgKG9wPT1QT1BfSlVNUF9JRl9UUlVFIHx8IG9wPT1KVU1QX0lGX1RSVUVfT1JfUE9QKQotI2RlZmluZSBHRVRKVU1QVEdUKGFyciwgaSkgKEdFVEFSRyhhcnIsaSkgKyAoQUJTT0xVVEVfSlVNUChhcnJbaV0pID8gMCA6IGkrMykpCi0jZGVmaW5lIFNFVEFSRyhhcnIsIGksIHZhbCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYXNzZXJ0KDAgPD0gdmFsICYmIHZhbCA8PSAweGZmZmYpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYXJyW2krMl0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBpbnQpdmFsKT4+OCk7ICAgICBcCi0gICAgYXJyW2krMV0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBpbnQpdmFsKSAmIDI1NSk7ICBcCi19IHdoaWxlKDApCi0jZGVmaW5lIENPREVTSVpFKG9wKSAgKEhBU19BUkcob3ApID8gMyA6IDEpCi0jZGVmaW5lIElTQkFTSUNCTE9DSyhibG9ja3MsIHN0YXJ0LCBieXRlcykgXAotICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3Nbc3RhcnQrYnl0ZXMtMV0pCisjZGVmaW5lIEdFVEpVTVBUR1QoYXJyLCBpKSAoZ2V0X2FyZyhhcnIsIGkpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKyBcCisgICAgICAgIChBQlNPTFVURV9KVU1QKF9QeV9PUENPREUoYXJyW2ldKSkgPyAwIDogaSsxKSkKKyNkZWZpbmUgSVNCQVNJQ0JMT0NLKGJsb2Nrcywgc3RhcnQsIGVuZCkgXAorICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3NbZW5kXSkKIAogCiAjZGVmaW5lIENPTlNUX1NUQUNLX0NSRUFURSgpIHsgXAogICAgIGNvbnN0X3N0YWNrX3NpemUgPSAyNTY7IFwKICAgICBjb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeU9iamVjdCAqLCBjb25zdF9zdGFja19zaXplKTsgXAotICAgIGxvYWRfY29uc3Rfc3RhY2sgPSBQeU1lbV9OZXcoUHlfc3NpemVfdCwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKLSAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICBpZiAoIWNvbnN0X3N0YWNrKSB7IFwKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsgXAogICAgICAgICBnb3RvIGV4aXRFcnJvcjsgXAogICAgIH0gXApAQCAtNDEsMjcgKzM1LDIzIEBACiAjZGVmaW5lIENPTlNUX1NUQUNLX0RFTEVURSgpIGRvIHsgXAogICAgIGlmIChjb25zdF9zdGFjaykgXAogICAgICAgICBQeU1lbV9GcmVlKGNvbnN0X3N0YWNrKTsgXAotICAgIGlmIChsb2FkX2NvbnN0X3N0YWNrKSBcCi0gICAgICAgIFB5TWVtX0ZyZWUobG9hZF9jb25zdF9zdGFjayk7IFwKICAgICB9IHdoaWxlKDApCiAKLSNkZWZpbmUgQ09OU1RfU1RBQ0tfTEVOKCkgKGNvbnN0X3N0YWNrX3RvcCArIDEpCisjZGVmaW5lIENPTlNUX1NUQUNLX0xFTigpICgodW5zaWduZWQpKGNvbnN0X3N0YWNrX3RvcCArIDEpKQogCiAjZGVmaW5lIENPTlNUX1NUQUNLX1BVU0hfT1AoaSkgZG8geyBcCiAgICAgUHlPYmplY3QgKl94OyBcCi0gICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7IFwKLSAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGNvbnN0cykgPiBHRVRBUkcoY29kZXN0ciwgaSkpOyBcCi0gICAgX3ggPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgaSkpOyBcCisgICAgYXNzZXJ0KF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTE9BRF9DT05TVCk7IFwKKyAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGNvbnN0cykgPiAoUHlfc3NpemVfdClnZXRfYXJnKGNvZGVzdHIsIGkpKTsgXAorICAgIF94ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgZ2V0X2FyZyhjb2Rlc3RyLCBpKSk7IFwKICAgICBpZiAoKytjb25zdF9zdGFja190b3AgPj0gY29uc3Rfc3RhY2tfc2l6ZSkgeyBcCiAgICAgICAgIGNvbnN0X3N0YWNrX3NpemUgKj0gMjsgXAogICAgICAgICBQeU1lbV9SZXNpemUoY29uc3Rfc3RhY2ssIFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCi0gICAgICAgIFB5TWVtX1Jlc2l6ZShsb2FkX2NvbnN0X3N0YWNrLCBQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAotICAgICAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICAgICAgaWYgKCFjb25zdF9zdGFjaykgeyBcCiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCiAgICAgICAgICAgICBnb3RvIGV4aXRFcnJvcjsgXAogICAgICAgICB9IFwKICAgICB9IFwKLSAgICBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcF0gPSBpOyBcCiAgICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IF94OyBcCiAgICAgaW5fY29uc3RzID0gMTsgXAogICAgIH0gd2hpbGUoMCkKQEAgLTcwLDIyICs2MCwxMTQgQEAKICAgICBjb25zdF9zdGFja190b3AgPSAtMTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19UT1AoKSBcCi0gICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXQotCiAjZGVmaW5lIENPTlNUX1NUQUNLX0xBU1ROKGkpIFwKLSAgICAmY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wIC0gaSArIDFdCisgICAgJmNvbnN0X3N0YWNrW0NPTlNUX1NUQUNLX0xFTigpIC0gaV0KIAogI2RlZmluZSBDT05TVF9TVEFDS19QT1AoaSkgZG8geyBcCi0gICAgYXNzZXJ0KGNvbnN0X3N0YWNrX3RvcCArIDEgPj0gaSk7IFwKKyAgICBhc3NlcnQoQ09OU1RfU1RBQ0tfTEVOKCkgPj0gaSk7IFwKICAgICBjb25zdF9zdGFja190b3AgLT0gaTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19PUF9MQVNUTihpKSBcCi0gICAgKChjb25zdF9zdGFja190b3AgPj0gaSAtIDEpID8gbG9hZF9jb25zdF9zdGFja1tjb25zdF9zdGFja190b3AgLSBpICsgMV0gOiAtMSkKKy8qIFNjYW5zIGJhY2sgTiBjb25zZWN1dGl2ZSBMT0FEX0NPTlNUIGluc3RydWN0aW9ucywgc2tpcHBpbmcgTk9QcywKKyAgIHJldHVybnMgaW5kZXggb2YgdGhlIE50aCBsYXN0J3MgTE9BRF9DT05TVCdzIEVYVEVOREVEX0FSRyBwcmVmaXguCisgICBDYWxsZXJzIGFyZSByZXNwb25zaWJsZSB0byBjaGVjayBDT05TVF9TVEFDS19MRU4gYmVmb3JlaGFuZC4KKyovCitzdGF0aWMgUHlfc3NpemVfdAorbGFzdG5fY29uc3Rfc3RhcnQoY29uc3QgX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgbikKK3sKKyAgICBhc3NlcnQobiA+IDApOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaS0tOworICAgICAgICBhc3NlcnQoaSA+PSAwKTsKKyAgICAgICAgaWYgKF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTE9BRF9DT05TVCkgeworICAgICAgICAgICAgaWYgKCEtLW4pIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaSA+IDAgJiYgX1B5X09QQ09ERShjb2Rlc3RyW2ktMV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTk9QIHx8CisgICAgICAgICAgICAgICAgICAgX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBFWFRFTkRFRF9BUkcpOworICAgICAgICB9CisgICAgfQorfQogCisvKiBTY2FucyB0aHJvdWdoIEVYVEVOREVEIEFSR3MsIHNlZWtpbmcgdGhlIGluZGV4IG9mIHRoZSBlZmZlY3RpdmUgb3Bjb2RlICovCitzdGF0aWMgUHlfc3NpemVfdAorZmluZF9vcChjb25zdCBfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgaSkKK3sKKyAgICB3aGlsZSAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgaSsrOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KIAotLyogUmVwbGFjZSBMT0FEX0NPTlNUIGMxLiBMT0FEX0NPTlNUIGMyIC4uLiBMT0FEX0NPTlNUIGNuIEJVSUxEX1RVUExFIG4KKy8qIEdpdmVuIHRoZSBpbmRleCBvZiB0aGUgZWZmZWN0aXZlIG9wY29kZSwKKyAgIHNjYW4gYmFjayB0byBjb25zdHJ1Y3QgdGhlIG9wYXJnIHdpdGggRVhURU5ERURfQVJHICovCitzdGF0aWMgdW5zaWduZWQgaW50CitnZXRfYXJnKGNvbnN0IF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpKQoreworICAgIF9QeV9DT0RFVU5JVCB3b3JkOworICAgIHVuc2lnbmVkIGludCBvcGFyZyA9IF9QeV9PUEFSRyhjb2Rlc3RyW2ldKTsKKyAgICBpZiAoaSA+PSAxICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0xXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgIG9wYXJnIHw9IF9QeV9PUEFSRyh3b3JkKSA8PCA4OworICAgICAgICBpZiAoaSA+PSAyICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0yXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICBvcGFyZyB8PSBfUHlfT1BBUkcod29yZCkgPDwgMTY7CisgICAgICAgICAgICBpZiAoaSA+PSAzICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0zXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICAgICAgb3BhcmcgfD0gX1B5X09QQVJHKHdvcmQpIDw8IDI0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvcGFyZzsKK30KKworLyogRmlsbCB0aGUgcmVnaW9uIHdpdGggTk9Qcy4gKi8KK3N0YXRpYyB2b2lkCitmaWxsX25vcHMoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBtZW1zZXQoY29kZXN0ciArIHN0YXJ0LCBOT1AsIChlbmQgLSBzdGFydCkgKiBzaXplb2YoX1B5X0NPREVVTklUKSk7Cit9CisKKy8qIEdpdmVuIHRoZSBpbmRleCBvZiB0aGUgZWZmZWN0aXZlIG9wY29kZSwKKyAgIGF0dGVtcHQgdG8gcmVwbGFjZSB0aGUgYXJndW1lbnQsIHRha2luZyBpbnRvIGFjY291bnQgRVhURU5ERURfQVJHLgorICAgUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBvciB0aGUgbmV3IG9wIGluZGV4IG9uIHN1Y2Nlc3MgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitzZXRfYXJnKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpLCB1bnNpZ25lZCBpbnQgb3BhcmcpCit7CisgICAgdW5zaWduZWQgaW50IGN1cmFyZyA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgaW50IGN1cmlsZW4sIG5ld2lsZW47CisgICAgaWYgKGN1cmFyZyA9PSBvcGFyZykKKyAgICAgICAgcmV0dXJuIGk7CisgICAgY3VyaWxlbiA9IGluc3Ryc2l6ZShjdXJhcmcpOworICAgIG5ld2lsZW4gPSBpbnN0cnNpemUob3BhcmcpOworICAgIGlmIChjdXJpbGVuIDwgbmV3aWxlbikgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd3JpdGVfb3BfYXJnKGNvZGVzdHIgKyBpICsgMSAtIGN1cmlsZW4sIF9QeV9PUENPREUoY29kZXN0cltpXSksIG9wYXJnLCBuZXdpbGVuKTsKKyAgICBmaWxsX25vcHMoY29kZXN0ciwgaSArIDEgLSBjdXJpbGVuICsgbmV3aWxlbiwgaSArIDEpOworICAgIHJldHVybiBpLWN1cmlsZW4rbmV3aWxlbjsKK30KKworLyogQXR0ZW1wdCB0byB3cml0ZSBvcC9hcmcgYXQgZW5kIG9mIHNwZWNpZmllZCByZWdpb24gb2YgbWVtb3J5LgorICAgUHJlY2VkaW5nIG1lbW9yeSBpbiB0aGUgcmVnaW9uIGlzIG92ZXJ3cml0dGVuIHdpdGggTk9Qcy4KKyAgIFJldHVybnMgLTEgb24gZmFpbHVyZSwgb3AgaW5kZXggb24gc3VjY2VzcyAqLworc3RhdGljIFB5X3NzaXplX3QKK2NvcHlfb3BfYXJnKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpLCB1bnNpZ25lZCBjaGFyIG9wLAorICAgICAgICAgICAgdW5zaWduZWQgaW50IG9wYXJnLCBQeV9zc2l6ZV90IG1heGkpCit7CisgICAgaW50IGlsZW4gPSBpbnN0cnNpemUob3BhcmcpOworICAgIGlmIChpICsgaWxlbiA+IG1heGkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIG1heGkgLSBpbGVuLCBvcCwgb3BhcmcsIGlsZW4pOworICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpLCBtYXhpIC0gaWxlbik7CisgICAgcmV0dXJuIG1heGkgLSAxOworfQorCisvKiBSZXBsYWNlIExPQURfQ09OU1QgYzEsIExPQURfQ09OU1QgYzIgLi4uIExPQURfQ09OU1QgY24sIEJVSUxEX1RVUExFIG4KICAgIHdpdGggICAgTE9BRF9DT05TVCAoYzEsIGMyLCAuLi4gY24pLgogICAgVGhlIGNvbnN0cyB0YWJsZSBtdXN0IHN0aWxsIGJlIGluIGxpc3QgZm9ybSBzbyB0aGF0IHRoZQogICAgbmV3IGNvbnN0YW50IChjMSwgYzIsIC4uLiBjbikgY2FuIGJlIGFwcGVuZGVkLgpAQCAtOTQsOSArMTc2LDEwIEBACiAgICBBbHNvIHdvcmtzIGZvciBCVUlMRF9MSVNUIGFuZCBCVUlMVF9TRVQgd2hlbiBmb2xsb3dlZCBieSBhbiAiaW4iIG9yICJub3QgaW4iCiAgICB0ZXN0OyBmb3IgQlVJTERfU0VUIGl0IGFzc2VtYmxlcyBhIGZyb3plbnNldCByYXRoZXIgdGhhbiBhIHR1cGxlLgogKi8KLXN0YXRpYyBpbnQKLXR1cGxlX29mX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeV9zc2l6ZV90IG4sCi0gICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfdHVwbGVfb25fY29uc3RhbnRzKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBjX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvcGNvZGVfZW5kLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcywgaW50IG4pCiB7CiAgICAgUHlPYmplY3QgKm5ld2NvbnN0LCAqY29uc3RhbnQ7CiAgICAgUHlfc3NpemVfdCBpLCBsZW5fY29uc3RzOwpAQCAtMTA2LDkgKzE4OSw5IEBACiAKICAgICAvKiBCdWlsZHVwIG5ldyB0dXBsZSBvZiBjb25zdGFudHMgKi8KICAgICBuZXdjb25zdCA9IFB5VHVwbGVfTmV3KG4pOwotICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CisgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgewogICAgICAgICBjb25zdGFudCA9IG9ianNbaV07CiAgICAgICAgIFB5X0lOQ1JFRihjb25zdGFudCk7CkBAIC0xMTYsMzAgKzE5OSwyNiBAQAogICAgIH0KIAogICAgIC8qIElmIGl0J3MgYSBCVUlMRF9TRVQsIHVzZSB0aGUgUHlUdXBsZSB3ZSBqdXN0IGJ1aWx0IHRvIGNyZWF0ZSBhCi0gICAgICBQeUZyb3plblNldCwgYW5kIHVzZSB0aGF0IGFzIHRoZSBjb25zdGFudCBpbnN0ZWFkOiAqLwotICAgIGlmIChjb2Rlc3RyWzBdID09IEJVSUxEX1NFVCkgewotICAgICAgICBQeU9iamVjdCAqdHVwbGUgPSBuZXdjb25zdDsKLSAgICAgICAgbmV3Y29uc3QgPSBQeUZyb3plblNldF9OZXcodHVwbGUpOwotICAgICAgICBQeV9ERUNSRUYodHVwbGUpOwotICAgICAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgIFB5RnJvemVuU2V0LCBhbmQgdXNlIHRoYXQgYXMgdGhlIGNvbnN0YW50IGluc3RlYWQ6ICovCisgICAgaWYgKG9wY29kZSA9PSBCVUlMRF9TRVQpIHsKKyAgICAgICAgUHlfU0VUUkVGKG5ld2NvbnN0LCBQeUZyb3plblNldF9OZXcobmV3Y29uc3QpKTsKKyAgICAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgb250byBjb25zdHMgKi8KKyAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUHMgb3ZlciBvbGQgTE9BRF9DT05TVFMgYW5kCi0gICAgICAgYWRkIGEgbmV3IExPQURfQ09OU1QgbmV3Y29uc3Qgb24gdG9wIG9mIHRoZSBCVUlMRF9UVVBMRSBuICovCi0gICAgY29kZXN0clswXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDAsIGxlbl9jb25zdHMpOwotICAgIHJldHVybiAxOworICAgIHJldHVybiBjb3B5X29wX2FyZyhjb2Rlc3RyLCBjX3N0YXJ0LCBMT0FEX0NPTlNULCBsZW5fY29uc3RzLCBvcGNvZGVfZW5kKTsKIH0KIAotLyogUmVwbGFjZSBMT0FEX0NPTlNUIGMxLiBMT0FEX0NPTlNUIGMyIEJJTk9QCisvKiBSZXBsYWNlIExPQURfQ09OU1QgYzEsIExPQURfQ09OU1QgYzIsIEJJTk9QCiAgICB3aXRoICAgIExPQURfQ09OU1QgYmlub3AoYzEsYzIpCiAgICBUaGUgY29uc3RzIHRhYmxlIG11c3Qgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHNvIHRoYXQgdGhlCiAgICBuZXcgY29uc3RhbnQgY2FuIGJlIGFwcGVuZGVkLgpAQCAtMTQ5LDIwICsyMjgsMjEgQEAKICAgIGlzIGJlbG93IGEgdGhyZXNob2xkIHZhbHVlLiAgVGhhdCBrZWVwcyBweWMgZmlsZXMgZnJvbQogICAgYmVjb21pbmcgbGFyZ2UgaW4gdGhlIHByZXNlbmNlIG9mIGNvZGUgbGlrZTogIChOb25lLCkqMTAwMC4KICovCi1zdGF0aWMgaW50Ci1mb2xkX2Jpbm9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfYmlub3BzX29uX2NvbnN0YW50cyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgY19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9wY29kZV9lbmQsIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcykKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICp2LCAqdzsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHMsIHNpemU7Ci0gICAgaW50IG9wY29kZTsKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOworICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KICAgICB2ID0gb2Jqc1swXTsKICAgICB3ID0gb2Jqc1sxXTsKLSAgICBvcGNvZGUgPSBjb2Rlc3RyWzBdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9Qb3dlcih2LCB3LCBQeV9Ob25lKTsKQEAgLTIwOCw1MCArMjg4LDQ4IEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGJpbmFyeSBvcGVyYXRpb24gJWQgb24gYSBjb25zdGFudCIsCiAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleWJvYXJkSW50ZXJydXB0KSkKKyAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNpemUgPSBQeU9iamVjdF9TaXplKG5ld2NvbnN0KTsKICAgICBpZiAoc2l6ZSA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9IGVsc2UgaWYgKHNpemUgPiAyMCkgewogICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgaW50byBjb25zdHMgdGFibGUgKi8KLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUCBOT1AgTk9QIE5PUCBMT0FEX0NPTlNUIG5ld2NvbnN0ICovCi0gICAgY29kZXN0clstMl0gPSBMT0FEX0NPTlNUOwotICAgIFNFVEFSRyhjb2Rlc3RyLCAtMiwgbGVuX2NvbnN0cyk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGNvcHlfb3BfYXJnKGNvZGVzdHIsIGNfc3RhcnQsIExPQURfQ09OU1QsIGxlbl9jb25zdHMsIG9wY29kZV9lbmQpOwogfQogCi1zdGF0aWMgaW50Ci1mb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqdikKK3N0YXRpYyBQeV9zc2l6ZV90Citmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgY19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb3Bjb2RlX2VuZCwgdW5zaWduZWQgY2hhciBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqdikKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3Q7CiAgICAgUHlfc3NpemVfdCBsZW5fY29uc3RzOwotICAgIGludCBvcGNvZGU7CiAKICAgICAvKiBQcmUtY29uZGl0aW9ucyAqLwogICAgIGFzc2VydChQeUxpc3RfQ2hlY2tFeGFjdChjb25zdHMpKTsKLSAgICBhc3NlcnQoY29kZXN0clswXSA9PSBMT0FEX0NPTlNUKTsKKyAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAKICAgICAvKiBDcmVhdGUgbmV3IGNvbnN0YW50ICovCi0gICAgb3Bjb2RlID0gY29kZXN0clszXTsKICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9OZWdhdGl2ZSh2KTsKQEAgLTI2NywzNSArMzQ1LDMxIEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHVuYXJ5IG9wZXJhdGlvbiAlZCBvbiBhIGNvbnN0YW50IiwKICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKQorICAgICAgICBpZighUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBBcHBlbmQgZm9sZGVkIGNvbnN0YW50IGludG8gY29uc3RzIHRhYmxlICovCi0gICAgbGVuX2NvbnN0cyA9IFB5TGlzdF9HRVRfU0laRShjb25zdHMpOwogICAgIGlmIChQeUxpc3RfQXBwZW5kKGNvbnN0cywgbmV3Y29uc3QpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7CiAKLSAgICAvKiBXcml0ZSBOT1AgTE9BRF9DT05TVCBuZXdjb25zdCAqLwotICAgIGNvZGVzdHJbMF0gPSBOT1A7Ci0gICAgY29kZXN0clsxXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDEsIGxlbl9jb25zdHMpOwotICAgIHJldHVybiAxOworICAgIHJldHVybiBjb3B5X29wX2FyZyhjb2Rlc3RyLCBjX3N0YXJ0LCBMT0FEX0NPTlNULCBsZW5fY29uc3RzLCBvcGNvZGVfZW5kKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCAqCi1tYXJrYmxvY2tzKHVuc2lnbmVkIGNoYXIgKmNvZGUsIFB5X3NzaXplX3QgbGVuKQorbWFya2Jsb2NrcyhfUHlfQ09ERVVOSVQgKmNvZGUsIFB5X3NzaXplX3QgbGVuKQogewogICAgIHVuc2lnbmVkIGludCAqYmxvY2tzID0gUHlNZW1fTmV3KHVuc2lnbmVkIGludCwgbGVuKTsKLSAgICBpbnQgaSxqLCBvcGNvZGUsIGJsb2NrY250ID0gMDsKKyAgICBpbnQgaSwgaiwgb3Bjb2RlLCBibG9ja2NudCA9IDA7CiAKICAgICBpZiAoYmxvY2tzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTMwNCw4ICszNzgsOCBAQAogICAgIG1lbXNldChibG9ja3MsIDAsIGxlbipzaXplb2YoaW50KSk7CiAKICAgICAvKiBNYXJrIGxhYmVscyBpbiB0aGUgZmlyc3QgcGFzcyAqLwotICAgIGZvciAoaT0wIDsgaTxsZW4gOyBpKz1DT0RFU0laRShvcGNvZGUpKSB7Ci0gICAgICAgIG9wY29kZSA9IGNvZGVbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUoY29kZVtpXSk7CiAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgICAgICBjYXNlIEZPUl9JVEVSOgogICAgICAgICAgICAgY2FzZSBKVU1QX0ZPUldBUkQ6CkBAIC0zMjEsMTIgKzM5NSwxMyBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgICAgIGogPSBHRVRKVU1QVEdUKGNvZGUsIGkpOworICAgICAgICAgICAgICAgIGFzc2VydChqIDwgbGVuKTsKICAgICAgICAgICAgICAgICBibG9ja3Nbal0gPSAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIC8qIEJ1aWxkIGJsb2NrIG51bWJlcnMgaW4gdGhlIHNlY29uZCBwYXNzICovCi0gICAgZm9yIChpPTAgOyBpPGxlbiA7IGkrKykgeworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICBibG9ja2NudCArPSBibG9ja3NbaV07ICAgICAgICAgIC8qIGluY3JlbWVudCBibG9ja2NudCBvdmVyIGxhYmVscyAqLwogICAgICAgICBibG9ja3NbaV0gPSBibG9ja2NudDsKICAgICB9CkBAIC0zMzcsMzMgKzQxMiwyNyBAQAogICAgVGhlIGNvbnN0cyBvYmplY3Qgc2hvdWxkIHN0aWxsIGJlIGluIGxpc3QgZm9ybSB0byBhbGxvdyBuZXcgY29uc3RhbnRzCiAgICB0byBiZSBhcHBlbmRlZC4KIAotICAgVG8ga2VlcCB0aGUgb3B0aW1pemVyIHNpbXBsZSwgaXQgYmFpbHMgb3V0IChkb2VzIG5vdGhpbmcpIGZvciBjb2RlIHRoYXQKLSAgIGhhcyBhIGxlbmd0aCBvdmVyIDMyLDcwMCwgYW5kIGRvZXMgbm90IGNhbGN1bGF0ZSBleHRlbmRlZCBhcmd1bWVudHMuCi0gICBUaGF0IGFsbG93cyB1cyB0byBhdm9pZCBvdmVyZmxvdyBhbmQgc2lnbiBpc3N1ZXMuIExpa2V3aXNlLCBpdCBiYWlscyB3aGVuCi0gICB0aGUgbGluZW5vIHRhYmxlIGhhcyBjb21wbGV4IGVuY29kaW5nIGZvciBnYXBzID49IDI1NS4gRVhURU5ERURfQVJHIGNhbgotICAgYXBwZWFyIGJlZm9yZSBNQUtFX0ZVTkNUSU9OOyBpbiB0aGlzIGNhc2UgYm90aCBvcGNvZGVzIGFyZSBza2lwcGVkLgotICAgRVhURU5ERURfQVJHIHByZWNlZGluZyBhbnkgb3RoZXIgb3Bjb2RlIGNhdXNlcyB0aGUgb3B0aW1pemVyIHRvIGJhaWwuCisgICBUbyBrZWVwIHRoZSBvcHRpbWl6ZXIgc2ltcGxlLCBpdCBiYWlscyB3aGVuIHRoZSBsaW5lbm8gdGFibGUgaGFzIGNvbXBsZXgKKyAgIGVuY29kaW5nIGZvciBnYXBzID49IDI1NS4KIAogICAgT3B0aW1pemF0aW9ucyBhcmUgcmVzdHJpY3RlZCB0byBzaW1wbGUgdHJhbnNmb3JtYXRpb25zIG9jY3VycmluZyB3aXRoaW4gYQogICAgc2luZ2xlIGJhc2ljIGJsb2NrLiAgQWxsIHRyYW5zZm9ybWF0aW9ucyBrZWVwIHRoZSBjb2RlIHNpemUgdGhlIHNhbWUgb3IKICAgIHNtYWxsZXIuICBGb3IgdGhvc2UgdGhhdCByZWR1Y2Ugc2l6ZSwgdGhlIGdhcHMgYXJlIGluaXRpYWxseSBmaWxsZWQgd2l0aAogICAgTk9Qcy4gIExhdGVyIHRob3NlIE5PUHMgYXJlIHJlbW92ZWQgYW5kIHRoZSBqdW1wIGFkZHJlc3NlcyByZXRhcmdldGVkIGluCi0gICBhIHNpbmdsZSBwYXNzLiAgTGluZSBudW1iZXJpbmcgaXMgYWRqdXN0ZWQgYWNjb3JkaW5nbHkuICovCisgICBhIHNpbmdsZSBwYXNzLiAqLwogCiBQeU9iamVjdCAqCiBQeUNvZGVfT3B0aW1pemUoUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0KiBjb25zdHMsIFB5T2JqZWN0ICpuYW1lcywKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbGluZW5vX29iaikKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG5vdGFiX29iaikKIHsKLSAgICBQeV9zc2l6ZV90IGksIGosIGNvZGVsZW47Ci0gICAgaW50IG5vcHMsIGgsIGFkajsKLSAgICBpbnQgdGd0LCB0Z3R0Z3QsIG9wY29kZTsKLSAgICB1bnNpZ25lZCBjaGFyICpjb2Rlc3RyID0gTlVMTDsKLSAgICB1bnNpZ25lZCBjaGFyICpsaW5lbm87Ci0gICAgaW50ICphZGRybWFwID0gTlVMTDsKLSAgICBpbnQgbmV3X2xpbmUsIGN1bV9vcmlnX2xpbmUsIGxhc3RfbGluZTsKKyAgICBQeV9zc2l6ZV90IGgsIGksIG5leHRpLCBvcF9zdGFydCwgY29kZWxlbiwgdGd0OworICAgIHVuc2lnbmVkIGludCBqLCBub3BzOworICAgIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLCBuZXh0b3A7CisgICAgX1B5X0NPREVVTklUICpjb2Rlc3RyID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpsbm90YWI7CisgICAgdW5zaWduZWQgaW50IGN1bV9vcmlnX29mZnNldCwgbGFzdF9vZmZzZXQ7CiAgICAgUHlfc3NpemVfdCB0YWJzaXo7CiAgICAgUHlPYmplY3QgKipjb25zdF9zdGFjayA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCAqbG9hZF9jb25zdF9zdGFjayA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBjb25zdF9zdGFja190b3AgPSAtMTsKICAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3NpemUgPSAwOwogICAgIGludCBpbl9jb25zdHMgPSAwOyAgLyogd2hldGhlciB3ZSBhcmUgaW4gYSBMT0FEX0NPTlNUIHNlcXVlbmNlICovCkBAIC0zNzMsNDIgKzQ0MiwzMCBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIGV4aXRFcnJvcjsKIAotICAgIC8qIEJ5cGFzcyBvcHRpbWl6YXRpb24gd2hlbiB0aGUgbGluZW5vIHRhYmxlIGlzIHRvbyBjb21wbGV4ICovCi0gICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobGluZW5vX29iaikpOwotICAgIGxpbmVubyA9ICh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhsaW5lbm9fb2JqKTsKLSAgICB0YWJzaXogPSBQeUJ5dGVzX0dFVF9TSVpFKGxpbmVub19vYmopOwotICAgIGlmIChtZW1jaHIobGluZW5vLCAyNTUsIHRhYnNpeikgIT0gTlVMTCkKKyAgICAvKiBCeXBhc3Mgb3B0aW1pemF0aW9uIHdoZW4gdGhlIGxub3RhYiB0YWJsZSBpcyB0b28gY29tcGxleCAqLworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGxub3RhYl9vYmopKTsKKyAgICBsbm90YWIgPSAodW5zaWduZWQgY2hhciopUHlCeXRlc19BU19TVFJJTkcobG5vdGFiX29iaik7CisgICAgdGFic2l6ID0gUHlCeXRlc19HRVRfU0laRShsbm90YWJfb2JqKTsKKyAgICBhc3NlcnQodGFic2l6ID09IDAgfHwgUHlfUkVGQ05UKGxub3RhYl9vYmopID09IDEpOworICAgIGlmIChtZW1jaHIobG5vdGFiLCAyNTUsIHRhYnNpeikgIT0gTlVMTCkgeworICAgICAgICAvKiAyNTUgdmFsdWUgYXJlIHVzZWQgZm9yIG11bHRpYnl0ZSBieXRlY29kZSBpbnN0cnVjdGlvbnMgKi8KICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOworICAgIH0KKyAgICAvKiBOb3RlOiAtMTI4IGFuZCAxMjcgc3BlY2lhbCB2YWx1ZXMgZm9yIGxpbmUgbnVtYmVyIGRlbHRhIGFyZSBvaywKKyAgICAgICB0aGUgcGVlcGhvbGUgb3B0aW1pemVyIGRvZXNuJ3QgbW9kaWZ5IGxpbmUgbnVtYmVycy4gKi8KIAotICAgIC8qIEF2b2lkIHNpdHVhdGlvbnMgd2hlcmUganVtcCByZXRhcmdldGluZyBjb3VsZCBvdmVyZmxvdyAqLwogICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGNvZGUpKTsKICAgICBjb2RlbGVuID0gUHlCeXRlc19HRVRfU0laRShjb2RlKTsKLSAgICBpZiAoY29kZWxlbiA+IDMyNzAwKQotICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7CisgICAgYXNzZXJ0KGNvZGVsZW4gJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKIAogICAgIC8qIE1ha2UgYSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIGNvZGUgc3RyaW5nICovCi0gICAgY29kZXN0ciA9ICh1bnNpZ25lZCBjaGFyICopUHlNZW1fTWFsbG9jKGNvZGVsZW4pOworICAgIGNvZGVzdHIgPSAoX1B5X0NPREVVTklUICopUHlNZW1fTWFsbG9jKGNvZGVsZW4pOwogICAgIGlmIChjb2Rlc3RyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBleGl0RXJyb3I7CiAgICAgfQotICAgIGNvZGVzdHIgPSAodW5zaWduZWQgY2hhciAqKW1lbWNweShjb2Rlc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhjb2RlKSwgY29kZWxlbik7Ci0KLSAgICAvKiBWZXJpZnkgdGhhdCBSRVRVUk5fVkFMVUUgdGVybWluYXRlcyB0aGUgY29kZXN0cmluZy4gICAgICBUaGlzIGFsbG93cwotICAgICAgIHRoZSB2YXJpb3VzIHRyYW5zZm9ybWF0aW9uIHBhdHRlcm5zIHRvIGxvb2sgYWhlYWQgc2V2ZXJhbAotICAgICAgIGluc3RydWN0aW9ucyB3aXRob3V0IGFkZGl0aW9uYWwgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBub3QKLSAgICAgICBsb29raW5nIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBjb2RlIHN0cmluZy4KLSAgICAqLwotICAgIGlmIChjb2Rlc3RyW2NvZGVsZW4tMV0gIT0gUkVUVVJOX1ZBTFVFKQotICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7Ci0KLSAgICAvKiBNYXBwaW5nIHRvIG5ldyBqdW1wIHRhcmdldHMgYWZ0ZXIgTk9QcyBhcmUgcmVtb3ZlZCAqLwotICAgIGFkZHJtYXAgPSBQeU1lbV9OZXcoaW50LCBjb2RlbGVuKTsKLSAgICBpZiAoYWRkcm1hcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXhpdEVycm9yOwotICAgIH0KKyAgICBtZW1jcHkoY29kZXN0ciwgUHlCeXRlc19BU19TVFJJTkcoY29kZSksIGNvZGVsZW4pOworICAgIGNvZGVsZW4gLz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAKICAgICBibG9ja3MgPSBtYXJrYmxvY2tzKGNvZGVzdHIsIGNvZGVsZW4pOwogICAgIGlmIChibG9ja3MgPT0gTlVMTCkKQEAgLTQxNyw5ICs0NzQsMTcgQEAKIAogICAgIENPTlNUX1NUQUNLX0NSRUFURSgpOwogCi0gICAgZm9yIChpPTAgOyBpPGNvZGVsZW4gOyBpICs9IENPREVTSVpFKGNvZGVzdHJbaV0pKSB7Ci0gICAgICByZW9wdGltaXplX2N1cnJlbnQ6Ci0gICAgICAgIG9wY29kZSA9IGNvZGVzdHJbaV07CisgICAgZm9yIChpPWZpbmRfb3AoY29kZXN0ciwgMCkgOyBpPGNvZGVsZW4gOyBpPW5leHRpKSB7CisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUoY29kZXN0cltpXSk7CisgICAgICAgIG9wX3N0YXJ0ID0gaTsKKyAgICAgICAgd2hpbGUgKG9wX3N0YXJ0ID49IDEgJiYgX1B5X09QQ09ERShjb2Rlc3RyW29wX3N0YXJ0LTFdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgICAgIG9wX3N0YXJ0LS07CisgICAgICAgIH0KKworICAgICAgICBuZXh0aSA9IGkgKyAxOworICAgICAgICB3aGlsZSAobmV4dGkgPCBjb2RlbGVuICYmIF9QeV9PUENPREUoY29kZXN0cltuZXh0aV0pID09IEVYVEVOREVEX0FSRykKKyAgICAgICAgICAgIG5leHRpKys7CisgICAgICAgIG5leHRvcCA9IG5leHRpIDwgY29kZWxlbiA/IF9QeV9PUENPREUoY29kZXN0cltuZXh0aV0pIDogMDsKIAogICAgICAgICBpZiAoIWluX2NvbnN0cykgewogICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKQEAgLTQzMCwxNCArNDk1LDEyIEBACiAgICAgICAgICAgICAvKiBSZXBsYWNlIFVOQVJZX05PVCBQT1BfSlVNUF9JRl9GQUxTRQogICAgICAgICAgICAgICAgd2l0aCAgICBQT1BfSlVNUF9JRl9UUlVFICovCiAgICAgICAgICAgICBjYXNlIFVOQVJZX05PVDoKLSAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzFdICE9IFBPUF9KVU1QX0lGX0ZBTFNFCi0gICAgICAgICAgICAgICAgICAgIHx8ICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSsxKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUE9QX0pVTVBfSUZfVFJVRTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgaik7Ci0gICAgICAgICAgICAgICAgY29kZXN0cltpKzNdID0gTk9QOwotICAgICAgICAgICAgICAgIGdvdG8gcmVvcHRpbWl6ZV9jdXJyZW50OworICAgICAgICAgICAgICAgIGlmIChuZXh0b3AgIT0gUE9QX0pVTVBfSUZfRkFMU0UKKyAgICAgICAgICAgICAgICAgICAgfHwgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCwgaSArIDEpOworICAgICAgICAgICAgICAgIGNvZGVzdHJbbmV4dGldID0gUEFDS09QQVJHKFBPUF9KVU1QX0lGX1RSVUUsIF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogbm90IGEgaXMgYiAtLT4gIGEgaXMgbm90IGIKICAgICAgICAgICAgICAgICAgICBub3QgYSBpbiBiIC0tPiAgYSBub3QgaW4gYgpAQCAtNDQ1LDc4ICs1MDgsNzYgQEAKICAgICAgICAgICAgICAgICAgICBub3QgYSBub3QgaW4gYiAtLT4gIGEgaW4gYgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjYXNlIENPTVBBUkVfT1A6Ci0gICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoaiA8IDYgIHx8ICBqID4gOSAgfHwKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzNdICE9IFVOQVJZX05PVCAgfHwKLSAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw0KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIChqXjEpKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM10gPSBOT1A7CisgICAgICAgICAgICAgICAgaiA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGogPCA2IHx8IGogPiA5IHx8CisgICAgICAgICAgICAgICAgICAgIG5leHRvcCAhPSBVTkFSWV9OT1QgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQQUNLT1BBUkcob3Bjb2RlLCBqXjEpOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciBMT0FEX0NPTlNUIHRydWVjb25zdAotICAgICAgICAgICAgICAgICAgIFBPUF9KVU1QX0lGX0ZBTFNFIHh4LiBUaGlzIGltcHJvdmVzCi0gICAgICAgICAgICAgICAgICAgIndoaWxlIDEiIHBlcmZvcm1hbmNlLiAqLworICAgICAgICAgICAgICAgICAgIFBPUF9KVU1QX0lGX0ZBTFNFIHh4LiAgVGhpcyBpbXByb3ZlcworICAgICAgICAgICAgICAgICAgICJ3aGlsZSAxIiBwZXJmb3JtYW5jZS4gICovCiAgICAgICAgICAgICBjYXNlIExPQURfQ09OU1Q6CiAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKLSAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gUE9QX0pVTVBfSUZfRkFMU0UgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNikgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFQeU9iamVjdF9Jc1RydWUoUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgaikpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpLCBOT1AsIDYpOwotICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CisgICAgICAgICAgICAgICAgaWYgKG5leHRvcCAhPSBQT1BfSlVNUF9JRl9GQUxTRSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkgIHx8CisgICAgICAgICAgICAgICAgICAgICFQeU9iamVjdF9Jc1RydWUoUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgZ2V0X2FyZyhjb2Rlc3RyLCBpKSkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQsIG5leHRpICsgMSk7CisgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgLyogVHJ5IHRvIGZvbGQgdHVwbGVzIG9mIGNvbnN0YW50cyAoaW5jbHVkZXMgYSBjYXNlIGZvciBsaXN0cyBhbmQgc2V0cwotICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBvbmx5IHVzZWQgZm9yICJpbiIgYW5kICJub3QgaW4iIHRlc3RzKS4KKyAgICAgICAgICAgICAgICAvKiBUcnkgdG8gZm9sZCB0dXBsZXMgb2YgY29uc3RhbnRzIChpbmNsdWRlcyBhIGNhc2UgZm9yIGxpc3RzCisgICAgICAgICAgICAgICAgICAgYW5kIHNldHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBmb3IgImluIiBhbmQgIm5vdCBpbiIgdGVzdHMpLgogICAgICAgICAgICAgICAgICAgIFNraXAgb3ZlciBCVUlMRF9TRVFOIDEgVU5QQUNLX1NFUU4gMS4KICAgICAgICAgICAgICAgICAgICBSZXBsYWNlIEJVSUxEX1NFUU4gMiBVTlBBQ0tfU0VRTiAyIHdpdGggUk9UMi4KICAgICAgICAgICAgICAgICAgICBSZXBsYWNlIEJVSUxEX1NFUU4gMyBVTlBBQ0tfU0VRTiAzIHdpdGggUk9UMyBST1QyLiAqLwogICAgICAgICAgICAgY2FzZSBCVUlMRF9UVVBMRToKICAgICAgICAgICAgIGNhc2UgQlVJTERfTElTVDoKICAgICAgICAgICAgIGNhc2UgQlVJTERfU0VUOgotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGogPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgaCA9IENPTlNUX1NUQUNLX09QX0xBU1ROKGopOwotICAgICAgICAgICAgICAgIGFzc2VydCgoaCA+PSAwIHx8IENPTlNUX1NUQUNLX0xFTigpIDwgaikpOwotICAgICAgICAgICAgICAgIGlmIChoID49IDAgJiYgaiA+IDAgJiYgaiA8PSBDT05TVF9TVEFDS19MRU4oKSAmJgotICAgICAgICAgICAgICAgICAgICAoKG9wY29kZSA9PSBCVUlMRF9UVVBMRSAmJgotICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCszKSkgfHwKLSAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX0xJU1QgfHwgb3Bjb2RlID09IEJVSUxEX1NFVCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM109PUNPTVBBUkVfT1AgJiYKLSAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrNikgJiYKLSAgICAgICAgICAgICAgICAgICAgICAoR0VUQVJHKGNvZGVzdHIsaSszKT09NiB8fAotICAgICAgICAgICAgICAgICAgICAgICBHRVRBUkcoY29kZXN0cixpKzMpPT03KSkpICYmCi0gICAgICAgICAgICAgICAgICAgIHR1cGxlX29mX2NvbnN0YW50cygmY29kZXN0cltpXSwgaiwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTihqKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7Ci0gICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUChqKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaiA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGogPiAwICYmIENPTlNUX1NUQUNLX0xFTigpID49IGopIHsKKyAgICAgICAgICAgICAgICAgICAgaCA9IGxhc3RuX2NvbnN0X3N0YXJ0KGNvZGVzdHIsIG9wX3N0YXJ0LCBqKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChvcGNvZGUgPT0gQlVJTERfVFVQTEUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgb3Bfc3RhcnQpKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX0xJU1QgfHwgb3Bjb2RlID09IEJVSUxEX1NFVCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChuZXh0b3A9PUNPTVBBUkVfT1AgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkgPT0gUHlDbXBfSU4gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkgPT0gUHlDbXBfTk9UX0lOKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dG9wID09IEdFVF9JVEVSKSAmJiBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpICsgMSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF90dXBsZV9vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKGopLCBqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1Aoaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gVU5QQUNLX1NFUVVFTkNFICB8fAotICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDYpIHx8Ci0gICAgICAgICAgICAgICAgICAgIGogIT0gR0VUQVJHKGNvZGVzdHIsIGkrMykgfHwKKyAgICAgICAgICAgICAgICBpZiAobmV4dG9wICE9IFVOUEFDS19TRVFVRU5DRSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkgfHwKKyAgICAgICAgICAgICAgICAgICAgaiAhPSBnZXRfYXJnKGNvZGVzdHIsIG5leHRpKSB8fAogICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPT0gQlVJTERfU0VUKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoaiA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2ksIE5PUCwgNik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChqIDwgMikgeworICAgICAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9UV087Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCA1KTsKKyAgICAgICAgICAgICAgICAgICAgY29kZXN0cltvcF9zdGFydF0gPSBQQUNLT1BBUkcoUk9UX1RXTywgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDEsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDMpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9USFJFRTsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzFdID0gUk9UX1RXTzsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsyLCBOT1AsIDQpOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhST1RfVEhSRUUsIDApOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0ICsgMV0gPSBQQUNLT1BBUkcoUk9UX1RXTywgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDIsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogRm9sZCBiaW5hcnkgb3BzIG9uIGNvbnN0YW50cy4KLSAgICAgICAgICAgICAgICAgICBMT0FEX0NPTlNUIGMxIExPQURfQ09OU1QgYzIgQklOT1AgLS0+ICBMT0FEX0NPTlNUIGJpbm9wKGMxLGMyKSAqLworICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgTE9BRF9DT05TVCBjMiBCSU5PUCAtLT4gTE9BRF9DT05TVCBiaW5vcChjMSxjMikgKi8KICAgICAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICAgICAgY2FzZSBCSU5BUllfTVVMVElQTFk6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9UUlVFX0RJVklERToKQEAgLTUzMCwzNSArNTkxLDM0IEBACiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9BTkQ6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9YT1I6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9PUjoKLSAgICAgICAgICAgICAgICAvKiBOT1RFOiBMT0FEX0NPTlNUIGlzIHNhdmVkIGF0IGBpLTJgIHNpbmNlIGl0IGhhcyBhbiBhcmcKLSAgICAgICAgICAgICAgICAgICB3aGlsZSBCSU5PUCBoYXNuJ3QgKi8KLSAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oMik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCAyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMSkgICYmCi0gICAgICAgICAgICAgICAgICAgIGZvbGRfYmlub3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpXSwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTigyKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoJmNvZGVzdHJbaF0sIE5PUCwgaSAtIGgpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDIpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOworICAgICAgICAgICAgICAgIGlmIChDT05TVF9TVEFDS19MRU4oKSA8IDIpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBsYXN0bl9jb25zdF9zdGFydChjb2Rlc3RyLCBvcF9zdGFydCwgMik7CisgICAgICAgICAgICAgICAgaWYgKElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIG9wX3N0YXJ0KSkgeworICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKGNvZGVzdHIsIGgsIGkgKyAxLCBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTigyKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChoID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUCgyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBGb2xkIHVuYXJ5IG9wcyBvbiBjb25zdGFudHMuCi0gICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCBjMSAgVU5BUllfT1AgLS0+ICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCB1bmFyeV9vcChjKSAqLworICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgIFVOQVJZX09QIC0tPiBMT0FEX0NPTlNUIHVuYXJ5X29wKGMpICovCiAgICAgICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgY2FzZSBVTkFSWV9JTlZFUlQ6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX1BPU0lUSVZFOgotICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDEpKTsKLSAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKLSAgICAgICAgICAgICAgICAgICAgZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS0zXSwgY29uc3RzLCBDT05TVF9TVEFDS19UT1AoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOworICAgICAgICAgICAgICAgIGlmIChDT05TVF9TVEFDS19MRU4oKSA8IDEpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBsYXN0bl9jb25zdF9zdGFydChjb2Rlc3RyLCBvcF9zdGFydCwgMSk7CisgICAgICAgICAgICAgICAgaWYgKElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIG9wX3N0YXJ0KSkgeworICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cywgKkNPTlNUX1NUQUNLX0xBU1ROKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNTczLDM5ICs2MzMsMzYgQEAKICAgICAgICAgICAgICAgICAgICB4OkpVTVBfSUZfRkFMU0VfT1JfUE9QIHkgICB5OkpVTVBfSUZfRkFMU0VfT1JfUE9QIHoKICAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgegogICAgICAgICAgICAgICAgICAgIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgeSAgIHk6SlVNUF9JRl9UUlVFX09SX1BPUCB6Ci0gICAgICAgICAgICAgICAgICAgICAgLS0+ICB4OlBPUF9KVU1QX0lGX0ZBTFNFIHkrMwotICAgICAgICAgICAgICAgICAgIHdoZXJlIHkrMyBpcyB0aGUgaW5zdHJ1Y3Rpb24gZm9sbG93aW5nIHRoZSBzZWNvbmQgdGVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6UE9QX0pVTVBfSUZfRkFMU0UgeSsxCisgICAgICAgICAgICAgICAgICAgd2hlcmUgeSsxIGlzIHRoZSBpbnN0cnVjdGlvbiBmb2xsb3dpbmcgdGhlIHNlY29uZCB0ZXN0LgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfRkFMU0VfT1JfUE9QOgogICAgICAgICAgICAgY2FzZSBKVU1QX0lGX1RSVUVfT1JfUE9QOgotICAgICAgICAgICAgICAgIHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaiA9IGNvZGVzdHJbdGd0XTsKKyAgICAgICAgICAgICAgICBoID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKSAvIHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICAgICAgICAgIHRndCA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CisKKyAgICAgICAgICAgICAgICBqID0gX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pOwogICAgICAgICAgICAgICAgIGlmIChDT05ESVRJT05BTF9KVU1QKGopKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIE5PVEU6IGFsbCBwb3NzaWJsZSBqdW1wcyBoZXJlIGFyZQotICAgICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZSEgKi8KKyAgICAgICAgICAgICAgICAgICAgLyogTk9URTogYWxsIHBvc3NpYmxlIGp1bXBzIGhlcmUgYXJlIGFic29sdXRlLiAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoSlVNUFNfT05fVFJVRShqKSA9PSBKVU1QU19PTl9UUlVFKG9wY29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZWNvbmQganVtcCB3aWxsIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlbiBpZmYgdGhlIGZpcnN0IGlzLiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgdGd0dGd0ID0gR0VUSlVNUFRHVChjb2Rlc3RyLCB0Z3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIGN1cnJlbnQgb3Bjb2RlIGluaGVyaXRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpdHMgdGFyZ2V0J3Mgc3RhY2sgYmVoYXZpb3VyICovCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gajsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCB0Z3R0Z3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgd2lsbCBiZSB0YWtlbiBpZmYgdGhlIGZpcnN0IGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGN1cnJlbnQgb3Bjb2RlIGluaGVyaXRzIGl0cyB0YXJnZXQncworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgZWZmZWN0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBoID0gc2V0X2FyZyhjb2Rlc3RyLCBpLCBnZXRfYXJnKGNvZGVzdHIsIHRndCkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHNlY29uZCBqdW1wIGlzIG5vdCB0YWtlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpcnN0IGlzIChzbyBqdW1wIHBhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0KSwgYW5kIGFsbCBjb25kaXRpb25hbAotICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcHMgcG9wIHRoZWlyIGFyZ3VtZW50IHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXkncmUgbm90IHRha2VuIChzbyBjaGFuZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBqdW1wIHRvIHBvcCBpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IHdoZW4gaXQncyB0YWtlbikuICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSlVNUFNfT05fVFJVRShvcGNvZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9UUlVFOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9GQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCAodGd0ICsgMykpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgaXMgbm90IHRha2VuIGlmIHRoZSBmaXJzdCBpcyAoc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAgcGFzdCBpdCksIGFuZCBhbGwgY29uZGl0aW9uYWwganVtcHMgcG9wIHRoZWlyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCB3aGVuIHRoZXkncmUgbm90IHRha2VuIChzbyBjaGFuZ2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCBqdW1wIHRvIHBvcCBpdHMgYXJndW1lbnQgd2hlbiBpdCdzIHRha2VuKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzZXRfYXJnKGNvZGVzdHIsIGksICh0Z3QgKyAxKSAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGogPSBvcGNvZGUgPT0gSlVNUF9JRl9UUlVFX09SX1BPUCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfVFJVRSA6IFBPUF9KVU1QX0lGX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGkgPSBoOworICAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltuZXh0aV0gPSBQQUNLT1BBUkcoaiwgX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBJbnRlbnRpb25hbCBmYWxsdGhyb3VnaCAqLwpAQCAtNjIyLDczICs2NzksNzQgQEAKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRklOQUxMWToKICAgICAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKICAgICAgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKLSAgICAgICAgICAgICAgICB0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIGkpOworICAgICAgICAgICAgICAgIGggPSBHRVRKVU1QVEdUKGNvZGVzdHIsIGkpOworICAgICAgICAgICAgICAgIHRndCA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CiAgICAgICAgICAgICAgICAgLyogUmVwbGFjZSBKVU1QXyogdG8gYSBSRVRVUk4gaW50byBqdXN0IGEgUkVUVVJOICovCiAgICAgICAgICAgICAgICAgaWYgKFVOQ09ORElUSU9OQUxfSlVNUChvcGNvZGUpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbdGd0XSA9PSBSRVRVUk5fVkFMVUUpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJFVFVSTl9WQUxVRTsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDIpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pID09IFJFVFVSTl9WQUxVRSkgeworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhSRVRVUk5fVkFMVUUsIDApOworICAgICAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQgKyAxLCBpICsgMSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChVTkNPTkRJVElPTkFMX0pVTVAoX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pKSkgeworICAgICAgICAgICAgICAgICAgICBqID0gR0VUSlVNUFRHVChjb2Rlc3RyLCB0Z3QpOworICAgICAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09IEpVTVBfRk9SV0FSRCkgeyAvKiBKTVBfQUJTIGNhbiBnbyBiYWNrd2FyZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IEpVTVBfQUJTT0xVVEU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUFCU09MVVRFX0pVTVAob3Bjb2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChQeV9zc2l6ZV90KWogPCBpICsgMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgLyogTm8gYmFja3dhcmQgcmVsYXRpdmUganVtcHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGogLT0gaSArIDE7ICAgICAgICAgIC8qIENhbGMgcmVsYXRpdmUganVtcCBhZGRyICovCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaiAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgICAgICAgICAgICAgY29weV9vcF9hcmcoY29kZXN0ciwgb3Bfc3RhcnQsIG9wY29kZSwgaiwgaSArIDEpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIVVOQ09ORElUSU9OQUxfSlVNUChjb2Rlc3RyW3RndF0pKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB0Z3R0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIHRndCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBKVU1QX0ZPUldBUkQpIC8qIEpNUF9BQlMgY2FuIGdvIGJhY2t3YXJkcyAqLwotICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBKVU1QX0FCU09MVVRFOwotICAgICAgICAgICAgICAgIGlmICghQUJTT0xVVEVfSlVNUChvcGNvZGUpKQotICAgICAgICAgICAgICAgICAgICB0Z3R0Z3QgLT0gaSArIDM7ICAgICAvKiBDYWxjIHJlbGF0aXZlIGp1bXAgYWRkciAqLwotICAgICAgICAgICAgICAgIGlmICh0Z3R0Z3QgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vIGJhY2t3YXJkIHJlbGF0aXZlIGp1bXBzICovCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBvcGNvZGU7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIHRndHRndCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgRVhURU5ERURfQVJHOgotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gTUFLRV9GVU5DVElPTikKLSAgICAgICAgICAgICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOwotICAgICAgICAgICAgICAgIC8qIGRvbid0IHZpc2l0IE1BS0VfRlVOQ1RJT04gYXMgR0VUQVJHIHdpbGwgYmUgd3JvbmcgKi8KLSAgICAgICAgICAgICAgICBpICs9IDM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAvKiBSZXBsYWNlIFJFVFVSTiBMT0FEX0NPTlNUIE5vbmUgUkVUVVJOIHdpdGgganVzdCBSRVRVUk4gKi8KLSAgICAgICAgICAgICAgICAvKiBSZW1vdmUgdW5yZWFjaGFibGUgSlVNUHMgYWZ0ZXIgUkVUVVJOICovCisgICAgICAgICAgICAgICAgLyogUmVtb3ZlIHVucmVhY2hhYmxlIG9wcyBhZnRlciBSRVRVUk4gKi8KICAgICAgICAgICAgIGNhc2UgUkVUVVJOX1ZBTFVFOgotICAgICAgICAgICAgICAgIGlmIChpKzQgPj0gY29kZWxlbikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSs0XSA9PSBSRVRVUk5fVkFMVUUgJiYKLSAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDUpKQotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzEsIE5PUCwgNCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoVU5DT05ESVRJT05BTF9KVU1QKGNvZGVzdHJbaSsxXSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLGksNCkpCi0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCAzKTsKKyAgICAgICAgICAgICAgICBoID0gaSArIDE7CisgICAgICAgICAgICAgICAgd2hpbGUgKGggKyAxIDwgY29kZWxlbiAmJiBJU0JBU0lDQkxPQ0soYmxvY2tzLCBpLCBoICsgMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaCA+IGkgKyAxKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSwgaCArIDEpOworICAgICAgICAgICAgICAgICAgICBuZXh0aSA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogRml4dXAgbGluZW5vdGFiICovCi0gICAgZm9yIChpPTAsIG5vcHM9MCA7IGk8Y29kZWxlbiA7IGkgKz0gQ09ERVNJWkUoY29kZXN0cltpXSkpIHsKKyAgICAvKiBGaXh1cCBsbm90YWIgKi8KKyAgICBmb3IgKGkgPSAwLCBub3BzID0gMDsgaSA8IGNvZGVsZW47IGkrKykgewogICAgICAgICBhc3NlcnQoaSAtIG5vcHMgPD0gSU5UX01BWCk7Ci0gICAgICAgIGFkZHJtYXBbaV0gPSAoaW50KShpIC0gbm9wcyk7Ci0gICAgICAgIGlmIChjb2Rlc3RyW2ldID09IE5PUCkKKyAgICAgICAgLyogb3JpZ2luYWwgY29kZSBvZmZzZXQgPT4gbmV3IGNvZGUgb2Zmc2V0ICovCisgICAgICAgIGJsb2Nrc1tpXSA9IGkgLSBub3BzOworICAgICAgICBpZiAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBOT1ApCiAgICAgICAgICAgICBub3BzKys7CiAgICAgfQotICAgIGN1bV9vcmlnX2xpbmUgPSAwOwotICAgIGxhc3RfbGluZSA9IDA7CisgICAgY3VtX29yaWdfb2Zmc2V0ID0gMDsKKyAgICBsYXN0X29mZnNldCA9IDA7CiAgICAgZm9yIChpPTAgOyBpIDwgdGFic2l6IDsgaSs9MikgewotICAgICAgICBjdW1fb3JpZ19saW5lICs9IGxpbmVub1tpXTsKLSAgICAgICAgbmV3X2xpbmUgPSBhZGRybWFwW2N1bV9vcmlnX2xpbmVdOwotICAgICAgICBhc3NlcnQgKG5ld19saW5lIC0gbGFzdF9saW5lIDwgMjU1KTsKLSAgICAgICAgbGluZW5vW2ldID0oKHVuc2lnbmVkIGNoYXIpKG5ld19saW5lIC0gbGFzdF9saW5lKSk7Ci0gICAgICAgIGxhc3RfbGluZSA9IG5ld19saW5lOworICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0X2RlbHRhLCBuZXdfb2Zmc2V0OworICAgICAgICBjdW1fb3JpZ19vZmZzZXQgKz0gbG5vdGFiW2ldOworICAgICAgICBhc3NlcnQoY3VtX29yaWdfb2Zmc2V0ICUgc2l6ZW9mKF9QeV9DT0RFVU5JVCkgPT0gMCk7CisgICAgICAgIG5ld19vZmZzZXQgPSBibG9ja3NbY3VtX29yaWdfb2Zmc2V0IC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCldICoKKyAgICAgICAgICAgICAgICBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgb2Zmc2V0X2RlbHRhID0gbmV3X29mZnNldCAtIGxhc3Rfb2Zmc2V0OworICAgICAgICBhc3NlcnQob2Zmc2V0X2RlbHRhIDw9IDI1NSk7CisgICAgICAgIGxub3RhYltpXSA9ICh1bnNpZ25lZCBjaGFyKW9mZnNldF9kZWx0YTsKKyAgICAgICAgbGFzdF9vZmZzZXQgPSBuZXdfb2Zmc2V0OwogICAgIH0KIAogICAgIC8qIFJlbW92ZSBOT1BzIGFuZCBmaXh1cCBqdW1wIHRhcmdldHMgKi8KLSAgICBmb3IgKGk9MCwgaD0wIDsgaTxjb2RlbGVuIDsgKSB7Ci0gICAgICAgIG9wY29kZSA9IGNvZGVzdHJbaV07CisgICAgZm9yIChvcF9zdGFydCA9IGkgPSBoID0gMDsgaSA8IGNvZGVsZW47IGkrKywgb3Bfc3RhcnQgPSBpKSB7CisgICAgICAgIGogPSBfUHlfT1BBUkcoY29kZXN0cltpXSk7CisgICAgICAgIHdoaWxlIChfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgaiA9IGo8PDggfCBfUHlfT1BBUkcoY29kZXN0cltpXSk7CisgICAgICAgIH0KKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERShjb2Rlc3RyW2ldKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKLSAgICAgICAgICAgIGNhc2UgTk9QOgotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNhc2UgTk9QOmNvbnRpbnVlOwogCiAgICAgICAgICAgICBjYXNlIEpVTVBfQUJTT0xVVEU6CiAgICAgICAgICAgICBjYXNlIENPTlRJTlVFX0xPT1A6CkBAIC02OTYsOCArNzU0LDcgQEAKICAgICAgICAgICAgIGNhc2UgUE9QX0pVTVBfSUZfVFJVRToKICAgICAgICAgICAgIGNhc2UgSlVNUF9JRl9GQUxTRV9PUl9QT1A6CiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfVFJVRV9PUl9QT1A6Ci0gICAgICAgICAgICAgICAgaiA9IGFkZHJtYXBbR0VUQVJHKGNvZGVzdHIsIGkpXTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgaik7CisgICAgICAgICAgICAgICAgaiA9IGJsb2Nrc1tqIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCldICogc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgRk9SX0lURVI6CkBAIC03MDcsMzQgKzc2NCwzMiBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgotICAgICAgICAgICAgICAgIGogPSBhZGRybWFwW0dFVEFSRyhjb2Rlc3RyLCBpKSArIGkgKyAzXSAtIGFkZHJtYXBbaV0gLSAzOwotICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKKyAgICAgICAgICAgICAgICBqID0gYmxvY2tzW2ogLyBzaXplb2YoX1B5X0NPREVVTklUKSArIGkgKyAxXSAtIGJsb2Nrc1tpXSAtIDE7CisgICAgICAgICAgICAgICAgaiAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBhZGogPSBDT0RFU0laRShvcGNvZGUpOwotICAgICAgICB3aGlsZSAoYWRqLS0pCi0gICAgICAgICAgICBjb2Rlc3RyW2grK10gPSBjb2Rlc3RyW2krK107CisgICAgICAgIG5leHRpID0gaSAtIG9wX3N0YXJ0ICsgMTsKKyAgICAgICAgaWYgKGluc3Ryc2l6ZShqKSA+IG5leHRpKQorICAgICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOworICAgICAgICAvKiBJZiBpbnN0cnNpemUoaikgPCBuZXh0aSwgd2UnbGwgZW1pdCBFWFRFTkRFRF9BUkcgMCAqLworICAgICAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIGgsIG9wY29kZSwgaiwgbmV4dGkpOworICAgICAgICBoICs9IG5leHRpOwogICAgIH0KLSAgICBhc3NlcnQoaCArIG5vcHMgPT0gY29kZWxlbik7CisgICAgYXNzZXJ0KGggKyAoUHlfc3NpemVfdClub3BzID09IGNvZGVsZW4pOwogCi0gICAgY29kZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKiljb2Rlc3RyLCBoKTsKICAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKLSAgICBQeU1lbV9GcmVlKGFkZHJtYXApOwotICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgUHlNZW1fRnJlZShibG9ja3MpOworICAgIGNvZGUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopY29kZXN0ciwgaCAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKKyAgICBQeU1lbV9GcmVlKGNvZGVzdHIpOwogICAgIHJldHVybiBjb2RlOwogCiAgZXhpdEVycm9yOgogICAgIGNvZGUgPSBOVUxMOwogCiAgZXhpdFVuY2hhbmdlZDoKLSAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKLSAgICBpZiAoYmxvY2tzICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoYmxvY2tzKTsKLSAgICBpZiAoYWRkcm1hcCAhPSBOVUxMKQotICAgICAgICBQeU1lbV9GcmVlKGFkZHJtYXApOwotICAgIGlmIChjb2Rlc3RyICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgUHlfWElOQ1JFRihjb2RlKTsKKyAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKKyAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CisgICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICByZXR1cm4gY29kZTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weWhhc2guYyBiL1B5dGhvbi9weWhhc2guYwppbmRleCA5N2NiNTQ3Li41N2EyZGE3IDEwMDY0NAotLS0gYS9QeXRob24vcHloYXNoLmMKKysrIGIvUHl0aG9uL3B5aGFzaC5jCkBAIC0zMTgsNDAgKzMxOCwzNyBAQAogCiAgTW9kaWZpZWQgZm9yIFB5dGhvbiBieSBDaHJpc3RpYW4gSGVpbWVzOgogICAgIC0gQzg5IC8gTVNWQyBjb21wYXRpYmlsaXR5Ci0gICAgLSBQWV9VSU5UNjRfVCwgUFlfVUlOVDMyX1QgYW5kIFBZX1VJTlQ4X1QKICAgICAtIF9yb3RsNjQoKSBvbiBXaW5kb3dzCiAgICAgLSBsZXRvaDY0KCkgZmFsbGJhY2sKICovCiAKLXR5cGVkZWYgdW5zaWduZWQgY2hhciBQWV9VSU5UOF9UOwotCiAvKiBieXRlIHN3YXAgbGl0dGxlIGVuZGlhbiB0byBob3N0IGVuZGlhbgogICogRW5kaWFuIGNvbnZlcnNpb24gbm90IG9ubHkgZW5zdXJlcyB0aGF0IHRoZSBoYXNoIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUKICAqIHZhbHVlIG9uIGFsbCBwbGF0Zm9ybXMuIEl0IGlzIGFsc28gcmVxdWlyZWQgdG8gZm9yIGEgZ29vZCBkaXNwZXJzaW9uIG9mCiAgKiB0aGUgaGFzaCB2YWx1ZXMnIGxlYXN0IHNpZ25pZmljYW50IGJpdHMuCiAgKi8KICNpZiBQWV9MSVRUTEVfRU5ESUFOCi0jICBkZWZpbmUgX2xlNjR0b2goeCkgKChQWV9VSU5UNjRfVCkoeCkpCisjICBkZWZpbmUgX2xlNjR0b2goeCkgKCh1aW50NjRfdCkoeCkpCiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKICMgIGRlZmluZSBfbGU2NHRvaCh4KSBPU1N3YXBMaXR0bGVUb0hvc3RJbnQ2NCh4KQogI2VsaWYgZGVmaW5lZChIQVZFX0xFVE9INjQpCiAjICBkZWZpbmUgX2xlNjR0b2goeCkgbGU2NHRvaCh4KQogI2Vsc2UKLSMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKChQWV9VSU5UNjRfVCkoeCkgPDwgNTYpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA0MCkgJiAweGZmMDAwMDAwMDAwMDAwVUxMKSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAoKChQWV9VSU5UNjRfVCkoeCkgPDwgMjQpICYgMHhmZjAwMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA4KSAgJiAweGZmMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiA4KSAgJiAweGZmMDAwMDAwVUxMKSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAoKChQWV9VSU5UNjRfVCkoeCkgPj4gMjQpICYgMHhmZjAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiA0MCkgJiAweGZmMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoUFlfVUlOVDY0X1QpKHgpICA+PiA1NikpCisjICBkZWZpbmUgX2xlNjR0b2goeCkgKCgodWludDY0X3QpKHgpIDw8IDU2KSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgNDApICYgMHhmZjAwMDAwMDAwMDAwMFVMTCkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgKCgodWludDY0X3QpKHgpIDw8IDI0KSAmIDB4ZmYwMDAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgOCkgICYgMHhmZjAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gOCkgICYgMHhmZjAwMDAwMFVMTCkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgKCgodWludDY0X3QpKHgpID4+IDI0KSAmIDB4ZmYwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gNDApICYgMHhmZjAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ2NF90KSh4KSAgPj4gNTYpKQogI2VuZGlmCiAKIAogI2lmZGVmIF9NU0NfVkVSCiAjICBkZWZpbmUgUk9UQVRFKHgsIGIpICBfcm90bDY0KHgsIGIpCiAjZWxzZQotIyAgZGVmaW5lIFJPVEFURSh4LCBiKSAoUFlfVUlOVDY0X1QpKCAoKHgpIDw8IChiKSkgfCAoICh4KSA+PiAoNjQgLSAoYikpKSApCisjICBkZWZpbmUgUk9UQVRFKHgsIGIpICh1aW50NjRfdCkoICgoeCkgPDwgKGIpKSB8ICggKHgpID4+ICg2NCAtIChiKSkpICkKICNlbmRpZgogCiAjZGVmaW5lIEhBTEZfUk9VTkQoYSxiLGMsZCxzLHQpICAgICAgICAgXApAQCAtMzY5LDIyICszNjYsMjIgQEAKIAogc3RhdGljIFB5X2hhc2hfdAogc2lwaGFzaDI0KGNvbnN0IHZvaWQgKnNyYywgUHlfc3NpemVfdCBzcmNfc3opIHsKLSAgICBQWV9VSU5UNjRfVCBrMCA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazApOwotICAgIFBZX1VJTlQ2NF9UIGsxID0gX2xlNjR0b2goX1B5X0hhc2hTZWNyZXQuc2lwaGFzaC5rMSk7Ci0gICAgUFlfVUlOVDY0X1QgYiA9IChQWV9VSU5UNjRfVClzcmNfc3ogPDwgNTY7Ci0gICAgY29uc3QgUFlfVUlOVDY0X1QgKmluID0gKFBZX1VJTlQ2NF9UKilzcmM7CisgICAgdWludDY0X3QgazAgPSBfbGU2NHRvaChfUHlfSGFzaFNlY3JldC5zaXBoYXNoLmswKTsKKyAgICB1aW50NjRfdCBrMSA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazEpOworICAgIHVpbnQ2NF90IGIgPSAodWludDY0X3Qpc3JjX3N6IDw8IDU2OworICAgIGNvbnN0IHVpbnQ2NF90ICppbiA9ICh1aW50NjRfdCopc3JjOwogCi0gICAgUFlfVUlOVDY0X1QgdjAgPSBrMCBeIDB4NzM2ZjZkNjU3MDczNjU3NVVMTDsKLSAgICBQWV9VSU5UNjRfVCB2MSA9IGsxIF4gMHg2NDZmNzI2MTZlNjQ2ZjZkVUxMOwotICAgIFBZX1VJTlQ2NF9UIHYyID0gazAgXiAweDZjNzk2NzY1NmU2NTcyNjFVTEw7Ci0gICAgUFlfVUlOVDY0X1QgdjMgPSBrMSBeIDB4NzQ2NTY0NjI3OTc0NjU3M1VMTDsKKyAgICB1aW50NjRfdCB2MCA9IGswIF4gMHg3MzZmNmQ2NTcwNzM2NTc1VUxMOworICAgIHVpbnQ2NF90IHYxID0gazEgXiAweDY0NmY3MjYxNmU2NDZmNmRVTEw7CisgICAgdWludDY0X3QgdjIgPSBrMCBeIDB4NmM3OTY3NjU2ZTY1NzI2MVVMTDsKKyAgICB1aW50NjRfdCB2MyA9IGsxIF4gMHg3NDY1NjQ2Mjc5NzQ2NTczVUxMOwogCi0gICAgUFlfVUlOVDY0X1QgdDsKLSAgICBQWV9VSU5UOF9UICpwdDsKLSAgICBQWV9VSU5UOF9UICptOworICAgIHVpbnQ2NF90IHQ7CisgICAgdWludDhfdCAqcHQ7CisgICAgdWludDhfdCAqbTsKIAogICAgIHdoaWxlIChzcmNfc3ogPj0gOCkgewotICAgICAgICBQWV9VSU5UNjRfVCBtaSA9IF9sZTY0dG9oKCppbik7CisgICAgICAgIHVpbnQ2NF90IG1pID0gX2xlNjR0b2goKmluKTsKICAgICAgICAgaW4gKz0gMTsKICAgICAgICAgc3JjX3N6IC09IDg7CiAgICAgICAgIHYzIF49IG1pOwpAQCAtMzkzLDEzICszOTAsMTMgQEAKICAgICB9CiAKICAgICB0ID0gMDsKLSAgICBwdCA9IChQWV9VSU5UOF9UICopJnQ7Ci0gICAgbSA9IChQWV9VSU5UOF9UICopaW47CisgICAgcHQgPSAodWludDhfdCAqKSZ0OworICAgIG0gPSAodWludDhfdCAqKWluOwogICAgIHN3aXRjaCAoc3JjX3N6KSB7CiAgICAgICAgIGNhc2UgNzogcHRbNl0gPSBtWzZdOwogICAgICAgICBjYXNlIDY6IHB0WzVdID0gbVs1XTsKICAgICAgICAgY2FzZSA1OiBwdFs0XSA9IG1bNF07Ci0gICAgICAgIGNhc2UgNDogUHlfTUVNQ1BZKHB0LCBtLCBzaXplb2YoUFlfVUlOVDMyX1QpKTsgYnJlYWs7CisgICAgICAgIGNhc2UgNDogbWVtY3B5KHB0LCBtLCBzaXplb2YodWludDMyX3QpKTsgYnJlYWs7CiAgICAgICAgIGNhc2UgMzogcHRbMl0gPSBtWzJdOwogICAgICAgICBjYXNlIDI6IHB0WzFdID0gbVsxXTsKICAgICAgICAgY2FzZSAxOiBwdFswXSA9IG1bMF07CmRpZmYgLS1naXQgYS9QeXRob24vcHlsaWZlY3ljbGUuYyBiL1B5dGhvbi9weWxpZmVjeWNsZS5jCmluZGV4IGNlNTI5OTAuLjViNWNjMmIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWxpZmVjeWNsZS5jCisrKyBiL1B5dGhvbi9weWxpZmVjeWNsZS5jCkBAIC0zMSw2ICszMSw5IEBACiAjaWZkZWYgTVNfV0lORE9XUwogI3VuZGVmIEJZVEUKICNpbmNsdWRlICJ3aW5kb3dzLmgiCisKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisjZGVmaW5lIFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhvcCkgKFB5T2JqZWN0X1R5cGVDaGVjaygob3ApLCAmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUpKQogI2VuZGlmCiAKIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKQEAgLTkwLDYgKzkzLDEwIEBACiBpbnQgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyA9IDA7IC8qIFVuYnVmZmVyZWQgYmluYXJ5IHN0ZHtpbixvdXQsZXJyfSAqLwogaW50IFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDA7IC8qIGZvciAtUiBhbmQgUFlUSE9OSEFTSFNFRUQgKi8KIGludCBQeV9Jc29sYXRlZEZsYWcgPSAwOyAvKiBmb3IgLUksIGlzb2xhdGUgZnJvbSB1c2VyJ3MgZW52ICovCisjaWZkZWYgTVNfV0lORE9XUworaW50IFB5X0xlZ2FjeVdpbmRvd3NGU0VuY29kaW5nRmxhZyA9IDA7IC8qIFVzZXMgbWJjcyBpbnN0ZWFkIG9mIHV0Zi04ICovCitpbnQgUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyA9IDA7IC8qIFVzZXMgRmlsZUlPIGluc3RlYWQgb2YgV2luZG93c0NvbnNvbGVJTyAqLworI2VuZGlmCiAKIFB5VGhyZWFkU3RhdGUgKl9QeV9GaW5hbGl6aW5nID0gTlVMTDsKIApAQCAtMTUxLDExICsxNTgsMTcgQEAKICAgICAgICAgICAgIHJldHVybiAtMzsKICAgICAgICAgfQogICAgIH0KKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7CisgICAgICAgIC8qIE92ZXJyaWRpbmcgdGhlIHN0cmVhbSBlbmNvZGluZyBpbXBsaWVzIGxlZ2FjeSBzdHJlYW1zICovCisgICAgICAgIFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgPSAxOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiAwOwogfQogCi0vKiBHbG9iYWwgaW5pdGlhbGl6YXRpb25zLiAgQ2FuIGJlIHVuZG9uZSBieSBQeV9GaW5hbGl6ZSgpLiAgRG9uJ3QKLSAgIGNhbGwgdGhpcyB0d2ljZSB3aXRob3V0IGFuIGludGVydmVuaW5nIFB5X0ZpbmFsaXplKCkgY2FsbC4gIFdoZW4KKy8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplRXgoKS4gIERvbid0CisgICBjYWxsIHRoaXMgdHdpY2Ugd2l0aG91dCBhbiBpbnRlcnZlbmluZyBQeV9GaW5hbGl6ZUV4KCkgY2FsbC4gIFdoZW4KICAgIGluaXRpYWxpemF0aW9ucyBmYWlsLCBhIGZhdGFsIGVycm9yIGlzIGlzc3VlZCBhbmQgdGhlIGZ1bmN0aW9uIGRvZXMKICAgIG5vdCByZXR1cm4uICBPbiByZXR1cm4sIHRoZSBmaXJzdCB0aHJlYWQgYW5kIGludGVycHJldGVyIHN0YXRlIGhhdmUKICAgIGJlZW4gY3JlYXRlZC4KQEAgLTIyMyw2ICsyMzYsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVzZXQpOworI2VsaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoIlVURi04Iik7CiAjZWxzZQogICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNTIsNiArMjY3LDExIEBACiAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBpbXBvcnRsaWI7CiAgICAgUHlfSU5DUkVGKGludGVycC0+aW1wb3J0bGliKTsKIAorICAgIGludGVycC0+aW1wb3J0X2Z1bmMgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhpbnRlcnAtPmJ1aWx0aW5zLCAiX19pbXBvcnRfXyIpOworICAgIGlmIChpbnRlcnAtPmltcG9ydF9mdW5jID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IF9faW1wb3J0X18gbm90IGZvdW5kIik7CisgICAgUHlfSU5DUkVGKGludGVycC0+aW1wb3J0X2Z1bmMpOworCiAgICAgLyogSW1wb3J0IHRoZSBfaW1wIG1vZHVsZSAqLwogICAgIGltcG1vZCA9IFB5SW5pdF9pbXAoKTsKICAgICBpZiAoaW1wbW9kID09IE5VTEwpIHsKQEAgLTMxNCw2ICszMzQsMTIgQEAKICAgICAgICBjaGVjayBpdHMgdmFsdWUgZnVydGhlci4gKi8KICAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCiAgICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IGFkZF9mbGFnKFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZywgcCk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkciKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnID0gYWRkX2ZsYWcoUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnLCBwKTsKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkxFR0FDWVdJTkRPV1NTVERJTyIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnID0gYWRkX2ZsYWcoUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZywgcCk7CisjZW5kaWYKIAogICAgIF9QeVJhbmRvbV9Jbml0KCk7CiAKQEAgLTMyNywxMSArMzUzLDExIEBACiAgICAgKHZvaWQpIFB5VGhyZWFkU3RhdGVfU3dhcCh0c3RhdGUpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZSBiZWNhdXNlCisgICAgLyogV2UgY2FuJ3QgY2FsbCBfUHlFdmFsX0ZpbmlUaHJlYWRzKCkgaW4gUHlfRmluYWxpemVFeCBiZWNhdXNlCiAgICAgICAgZGVzdHJveWluZyB0aGUgR0lMIG1pZ2h0IGZhaWwgd2hlbiBpdCBpcyBiZWluZyByZWZlcmVuY2VkIGZyb20KICAgICAgICBhbm90aGVyIHJ1bm5pbmcgdGhyZWFkIChzZWUgaXNzdWUgIzk5MDEpLgogICAgICAgIEluc3RlYWQgd2UgZGVzdHJveSB0aGUgcHJldmlvdXNseSBjcmVhdGVkIEdJTCBoZXJlLCB3aGljaCBlbnN1cmVzCi0gICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemUgbXVsdGlwbGUgdGltZXMuICovCisgICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemVFeCBtdWx0aXBsZSB0aW1lcy4gKi8KICAgICBfUHlFdmFsX0ZpbmlUaHJlYWRzKCk7CiAKICAgICAvKiBBdXRvLXRocmVhZC1zdGF0ZSBBUEkgKi8KQEAgLTQ3NywyOCArNTAzLDM1IEBACiAgICAgcmV0dXJuIHIgPiAwOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogZmx1c2hfc3RkX2ZpbGVzKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKmZvdXQgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3Rkb3V0KTsKICAgICBQeU9iamVjdCAqZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgaW50IHN0YXR1cyA9IDA7CiAKICAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmb3V0KTsKKyAgICAgICAgICAgIHN0YXR1cyA9IC0xOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KIAogICAgIGlmIChmZXJyICE9IE5VTEwgJiYgZmVyciAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmZXJyKSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgTlVMTCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IC0xOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KKworICAgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qIFVuZG8gdGhlIGVmZmVjdCBvZiBQeV9Jbml0aWFsaXplKCkuCkBAIC01MTUsMTQgKzU0OCwxNSBAQAogCiAqLwogCi12b2lkCi1QeV9GaW5hbGl6ZSh2b2lkKQoraW50CitQeV9GaW5hbGl6ZUV4KHZvaWQpCiB7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGludCBzdGF0dXMgPSAwOwogCiAgICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3RhdHVzOwogCiAgICAgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKCk7CiAKQEAgLTU0Nyw3ICs1ODEsOSBAQAogICAgIGluaXRpYWxpemVkID0gMDsKIAogICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKyAgICBpZiAoZmx1c2hfc3RkX2ZpbGVzKCkgPCAwKSB7CisgICAgICAgIHN0YXR1cyA9IC0xOworICAgIH0KIAogICAgIC8qIERpc2FibGUgc2lnbmFsIGhhbmRsaW5nICovCiAgICAgUHlPU19GaW5pSW50ZXJydXB0cygpOwpAQCAtNTY0LDE5ICs2MDAsMjEgQEAKICAgICAgKiBYWFggYnV0IEknbSB1bmNsZWFyIG9uIGV4YWN0bHkgaG93IHRoYXQgb25lIGhhcHBlbnMuICBJbiBhbnkgY2FzZSwKICAgICAgKiBYWFggSSBoYXZlbid0IHNlZW4gYSByZWFsLWxpZmUgcmVwb3J0IG9mIGVpdGhlciBvZiB0aGVzZS4KICAgICAgKi8KLSAgICBQeUdDX0NvbGxlY3QoKTsKKyAgICBfUHlHQ19Db2xsZWN0SWZFbmFibGVkKCk7CiAjaWZkZWYgQ09VTlRfQUxMT0NTCiAgICAgLyogV2l0aCBDT1VOVF9BTExPQ1MsIGl0IGhlbHBzIHRvIHJ1biBHQyBtdWx0aXBsZSB0aW1lczoKICAgICAgICBlYWNoIGNvbGxlY3Rpb24gbWlnaHQgcmVsZWFzZSBzb21lIHR5cGVzIGZyb20gdGhlIHR5cGUKICAgICAgICBsaXN0LCBzbyB0aGV5IGJlY29tZSBnYXJiYWdlLiAqLwotICAgIHdoaWxlIChQeUdDX0NvbGxlY3QoKSA+IDApCisgICAgd2hpbGUgKF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKSA+IDApCiAgICAgICAgIC8qIG5vdGhpbmcgKi87CiAjZW5kaWYKICAgICAvKiBEZXN0cm95IGFsbCBtb2R1bGVzICovCiAgICAgUHlJbXBvcnRfQ2xlYW51cCgpOwogCiAgICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAoYWdhaW4sIGluIGNhc2UgbW9yZSB3YXMgcHJpbnRlZCkgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKyAgICBpZiAoZmx1c2hfc3RkX2ZpbGVzKCkgPCAwKSB7CisgICAgICAgIHN0YXR1cyA9IC0xOworICAgIH0KIAogICAgIC8qIENvbGxlY3QgZmluYWwgZ2FyYmFnZS4gIFRoaXMgZGlzcG9zZXMgb2YgY3ljbGVzIGNyZWF0ZWQgYnkKICAgICAgKiBjbGFzcyBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUuCkBAIC01OTQsNyArNjMyLDcgQEAKICAgICAgKiBYWFggUHl0aG9uIGNvZGUgZ2V0dGluZyBjYWxsZWQuCiAgICAgICovCiAjaWYgMAotICAgIFB5R0NfQ29sbGVjdCgpOworICAgIF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKTsKICNlbmRpZgogCiAgICAgLyogRGlzYWJsZSB0cmFjZW1hbGxvYyBhZnRlciBhbGwgUHl0aG9uIG9iamVjdHMgaGF2ZSBiZWVuIGRlc3Ryb3llZCwKQEAgLTYxMiw3ICs2NTAsNyBAQAogCiAgICAgLyogRGVidWdnaW5nIHN0dWZmICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgZHVtcF9jb3VudHMoc3Rkb3V0KTsKKyAgICBkdW1wX2NvdW50cyhzdGRlcnIpOwogI2VuZGlmCiAgICAgLyogZHVtcCBoYXNoIHN0YXRzICovCiAgICAgX1B5SGFzaF9GaW5pKCk7CkBAIC02NTUsNiArNjkzLDggQEAKICAgICBQeVNsaWNlX0ZpbmkoKTsKICAgICBfUHlHQ19GaW5pKCk7CiAgICAgX1B5UmFuZG9tX0ZpbmkoKTsKKyAgICBfUHlBcmdfRmluaSgpOworICAgIFB5QXN5bmNHZW5fRmluaSgpOwogCiAgICAgLyogQ2xlYW51cCBVbmljb2RlIGltcGxlbWVudGF0aW9uICovCiAgICAgX1B5VW5pY29kZV9GaW5pKCk7CkBAIC02ODAsNiArNzIwLDcgQEAKIAogICAgIC8qIERlbGV0ZSBjdXJyZW50IHRocmVhZC4gQWZ0ZXIgdGhpcywgbWFueSBDIEFQSSBjYWxscyBiZWNvbWUgY3Jhc2h5LiAqLwogICAgIFB5VGhyZWFkU3RhdGVfU3dhcChOVUxMKTsKKwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKIAogI2lmZGVmIFB5X1RSQUNFX1JFRlMKQEAgLTY5MCwxMiArNzMxLDIyIEBACiAgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKICAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlQWRkcmVzc2VzKHN0ZGVycik7CiAjZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgaWYgKF9QeU1lbV9QeW1hbGxvY0VuYWJsZWQoKSkgeworICAgICAgICBjaGFyICpvcHQgPSBQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIik7CisgICAgICAgIGlmIChvcHQgIT0gTlVMTCAmJiAqb3B0ICE9ICdcMCcpCisgICAgICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworICAgIH0KICNlbmRpZgogCiAgICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCit2b2lkCitQeV9GaW5hbGl6ZSh2b2lkKQoreworICAgIFB5X0ZpbmFsaXplRXgoKTsKIH0KIAogLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IGludGVycHJldGVyIGFuZCB0aHJlYWQsIGFuZCByZXR1cm4gdGhlCkBAIC03MjEsNiArNzcyLDEyIEBACiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfTmV3SW50ZXJwcmV0ZXI6IGNhbGwgUHlfSW5pdGlhbGl6ZSBmaXJzdCIpOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAvKiBJc3N1ZSAjMTA5MTUsICMxNTc1MTogVGhlIEdJTCBBUEkgZG9lc24ndCB3b3JrIHdpdGggbXVsdGlwbGUKKyAgICAgICBpbnRlcnByZXRlcnM6IGRpc2FibGUgUHlHSUxTdGF0ZV9DaGVjaygpLiAqLworICAgIF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQgPSAwOworI2VuZGlmCisKICAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7CiAgICAgaWYgKGludGVycCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc3Nyw3ICs4MzQsNyBAQAogCiAgICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAotICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKKyAgICAgICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwogICAgICAgICBpbml0bWFpbihpbnRlcnApOwogICAgICAgICBpZiAoIVB5X05vU2l0ZUZsYWcpCiAgICAgICAgICAgICBpbml0c2l0ZSgpOwpAQCAtODAzLDcgKzg2MCw3IEBACiAgICBmcmFtZXMsIGFuZCB0aGF0IGl0IGlzIGl0cyBpbnRlcnByZXRlcidzIG9ubHkgcmVtYWluaW5nIHRocmVhZC4KICAgIEl0IGlzIGEgZmF0YWwgZXJyb3IgdG8gdmlvbGF0ZSB0aGVzZSBjb25zdHJhaW50cy4KIAotICAgKFB5X0ZpbmFsaXplKCkgZG9lc24ndCBoYXZlIHRoZXNlIGNvbnN0cmFpbnRzIC0tIGl0IHphcHMKKyAgIChQeV9GaW5hbGl6ZUV4KCkgZG9lc24ndCBoYXZlIHRoZXNlIGNvbnN0cmFpbnRzIC0tIGl0IHphcHMKICAgIGV2ZXJ5dGhpbmcsIHJlZ2FyZGxlc3MuKQogCiAgICBMb2NraW5nOiBhcyBhYm92ZS4KQEAgLTg4MSwxMSArOTM4LDE3IEBACiBzdGF0aWMgdm9pZAogaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCiB7Ci0gICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyOworICAgIFB5T2JqZWN0ICptLCAqZCwgKmxvYWRlciwgKmFubl9kaWN0OwogICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZSIpOwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworICAgIGFubl9kaWN0ID0gUHlEaWN0X05ldygpOworICAgIGlmICgoYW5uX2RpY3QgPT0gTlVMTCkgfHwKKyAgICAgICAgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2Fubm90YXRpb25zX18iLCBhbm5fZGljdCkgPCAwKSkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2Fubm90YXRpb25zX18iKTsKKyAgICB9CisgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIpID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpOwogICAgICAgICBpZiAoYmltb2QgPT0gTlVMTCkgewpAQCAtOTIxLDYgKzk4NCwxOCBAQAogewogICAgIFB5T2JqZWN0ICpjb2RlYzsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnKQorICAgIHsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJtYmNzIjsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAicmVwbGFjZSI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAidXRmLTgiOworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyA9ICJzdXJyb2dhdGVwYXNzIjsKKyAgICB9CisjZWxzZQogICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCiAgICAgewogICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOwpAQCAtOTMxLDYgKzEwMDYsNyBAQAogICAgICAgICBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgPSAxOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisjZW5kaWYKIAogICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLwogICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOwpAQCAtOTY5LDkgKzEwNDUsMTIgQEAKIGlzX3ZhbGlkX2ZkKGludCBmZCkKIHsKICAgICBpbnQgZmQyOwotICAgIGlmIChmZCA8IDAgfHwgIV9QeVZlcmlmeV9mZChmZCkpCisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIC8qIFByZWZlciBkdXAoKSBvdmVyIGZzdGF0KCkuIGZzdGF0KCkgY2FuIHJlcXVpcmUgaW5wdXQvb3V0cHV0IHdoZXJlYXMKKyAgICAgICBkdXAoKSBkb2Vzbid0LCB0aGVyZSBpcyBhIGxvdyByaXNrIG9mIEVNRklMRS9FTkZJTEUgYXQgUHl0aG9uCisgICAgICAgc3RhcnR1cC4gKi8KICAgICBmZDIgPSBkdXAoZmQpOwogICAgIGlmIChmZDIgPj0gMCkKICAgICAgICAgY2xvc2UoZmQyKTsKQEAgLTk4Miw4ICsxMDYxLDggQEAKIC8qIHJldHVybnMgUHlfTm9uZSBpZiB0aGUgZmQgaXMgbm90IHZhbGlkICovCiBzdGF0aWMgUHlPYmplY3QqCiBjcmVhdGVfc3RkaW8oUHlPYmplY3QqIGlvLAotICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNoYXIqIG5hbWUsCi0gICAgY2hhciogZW5jb2RpbmcsIGNoYXIqIGVycm9ycykKKyAgICBpbnQgZmQsIGludCB3cml0ZV9tb2RlLCBjb25zdCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIGVuY29kaW5nLCBjb25zdCBjaGFyKiBlcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEwsICpzdHJlYW0gPSBOVUxMLCAqdGV4dCA9IE5VTEwsICpyYXcgPSBOVUxMLCAqcmVzOwogICAgIGNvbnN0IGNoYXIqIG1vZGU7CkBAIC0xMDEzLDcgKzEwOTIsOCBAQAogICAgICAgICBtb2RlID0gInJiIjsKICAgICBidWYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpT09PaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCAvKiBlbmNvZGluZywgZXJyb3JzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCAwKTsgLyogbmV3bGluZSwgY2xvc2VmZCAqLwogICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMTAyOCwxMCArMTEwOCwxNiBAQAogICAgICAgICBQeV9JTkNSRUYocmF3KTsKICAgICB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogV2luZG93cyBjb25zb2xlIElPIGlzIGFsd2F5cyBVVEYtOCBlbmNvZGVkICovCisgICAgaWYgKFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhyYXcpKQorICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCI7CisjZW5kaWYKKwogICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKICAgICBpZiAodGV4dCA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQocmF3LCAmUHlJZF9uYW1lLCB0ZXh0KSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpc2F0dHkgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKQEAgLTEyNDMsMjUgKzEzMjksMTEgQEAKIHN0YXRpYyB2b2lkCiBfUHlfRmF0YWxFcnJvcl9EdW1wVHJhY2ViYWNrcyhpbnQgZmQpCiB7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpIHdvcmtzIGV2ZW4gaWYgdGhlIEdJTCB3YXMgcmVsZWFzZWQgKi8KLSAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOwotI2Vsc2UKLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotI2VuZGlmCi0gICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcygpIHJlcXVpcmVzIHRoZSB0aHJlYWQgc3RhdGUgdG8gZGlzcGxheQotICAgICAgICAgKiBmcmFtZXMgKi8KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CiAgICAgZmZsdXNoKHN0ZGVycik7CiAKICAgICAvKiBkaXNwbGF5IHRoZSBjdXJyZW50IFB5dGhvbiBzdGFjayAqLwotICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgdHN0YXRlLT5pbnRlcnAsIHRzdGF0ZSk7CisgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBOVUxMLCBOVUxMKTsKIH0KIAogLyogUHJpbnQgdGhlIGN1cnJlbnQgZXhjZXB0aW9uIChpZiBhbiBleGNlcHRpb24gaXMgc2V0KSB3aXRoIGl0cyB0cmFjZWJhY2ssCkBAIC0xMzE2LDcgKzEzODgsNyBAQAogICAgIFB5X1hERUNSRUYodGIpOwogCiAgICAgLyogc3lzLnN0ZGVyciBtYXkgYmUgYnVmZmVyZWQ6IGNhbGwgc3lzLnN0ZGVyci5mbHVzaCgpICovCi0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0xMzg4LDcgKzE0NjAsNyBAQAogLyogQ2xlYW4gdXAgYW5kIGV4aXQgKi8KIAogI2lmZGVmIFdJVEhfVEhSRUFECi0jaW5jbHVkZSAicHl0aHJlYWQuaCIKKyMgIGluY2x1ZGUgInB5dGhyZWFkLmgiCiAjZW5kaWYKIAogc3RhdGljIHZvaWQgKCpweWV4aXRmdW5jKSh2b2lkKSA9IE5VTEw7CkBAIC0xNDI2LDcgKzE0OTgsNyBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sICIiKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRocmVhZGluZywgJlB5SWRfX3NodXRkb3duLCBOVUxMKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHRocmVhZGluZyk7CiAgICAgfQpAQCAtMTQ2Miw3ICsxNTM0LDkgQEAKIHZvaWQKIFB5X0V4aXQoaW50IHN0cykKIHsKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHN0cyA9IDEyMDsKKyAgICB9CiAKICAgICBleGl0KHN0cyk7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vcHlzdGF0ZS5jIGIvUHl0aG9uL3B5c3RhdGUuYwppbmRleCAyNGUyMGMzLi42NWMyNDRlIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdGF0ZS5jCisrKyBiL1B5dGhvbi9weXN0YXRlLmMKQEAgLTYsNyArNiw3IEBACiAjZGVmaW5lIEdFVF9UU1RBVEUoKSBcCiAgICAgKChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCkpCiAjZGVmaW5lIFNFVF9UU1RBVEUodmFsdWUpIFwKLSAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQsIChQeV91aW50cHRyX3QpKHZhbHVlKSkKKyAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQsICh1aW50cHRyX3QpKHZhbHVlKSkKICNkZWZpbmUgR0VUX0lOVEVSUF9TVEFURSgpIFwKICAgICAoR0VUX1RTVEFURSgpLT5pbnRlcnApCiAKQEAgLTI1LDcgKzI1LDcgQEAKICNpZmRlZiBIQVZFX0RMRkNOX0gKICNpbmNsdWRlIDxkbGZjbi5oPgogI2VuZGlmCi0jaWZuZGVmIFJUTERfTEFaWQorI2lmICFIQVZFX0RFQ0xfUlRMRF9MQVpZCiAjZGVmaW5lIFJUTERfTEFaWSAxCiAjZW5kaWYKICNlbmRpZgpAQCAtMzQsNiArMzQsOCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAoraW50IF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQgPSAxOworCiAjaWZkZWYgV0lUSF9USFJFQUQKICNpbmNsdWRlICJweXRocmVhZC5oIgogc3RhdGljIFB5VGhyZWFkX3R5cGVfbG9jayBoZWFkX211dGV4ID0gTlVMTDsgLyogUHJvdGVjdHMgaW50ZXJwLT50c3RhdGVfaGVhZCAqLwpAQCAtNDUsNyArNDcsNyBAQAogICAgR0lMU3RhdGUgaW1wbGVtZW50YXRpb24KICovCiBzdGF0aWMgUHlJbnRlcnByZXRlclN0YXRlICphdXRvSW50ZXJwcmV0ZXJTdGF0ZSA9IE5VTEw7Ci1zdGF0aWMgaW50IGF1dG9UTFNrZXkgPSAwOworc3RhdGljIGludCBhdXRvVExTa2V5ID0gLTE7CiAjZWxzZQogI2RlZmluZSBIRUFEX0lOSVQoKSAvKiBOb3RoaW5nICovCiAjZGVmaW5lIEhFQURfTE9DSygpIC8qIE5vdGhpbmcgKi8KQEAgLTg4LDE2ICs5MCwxNSBAQAogICAgICAgICBpbnRlcnAtPmNvZGVjc19pbml0aWFsaXplZCA9IDA7CiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDA7CiAgICAgICAgIGludGVycC0+aW1wb3J0bGliID0gTlVMTDsKKyAgICAgICAgaW50ZXJwLT5pbXBvcnRfZnVuYyA9IE5VTEw7CisgICAgICAgIGludGVycC0+ZXZhbF9mcmFtZSA9IF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdDsKICNpZmRlZiBIQVZFX0RMT1BFTgotI2lmZGVmIFJUTERfTk9XCisjaWYgSEFWRV9ERUNMX1JUTERfTk9XCiAgICAgICAgIGludGVycC0+ZGxvcGVuZmxhZ3MgPSBSVExEX05PVzsKICNlbHNlCiAgICAgICAgIGludGVycC0+ZGxvcGVuZmxhZ3MgPSBSVExEX0xBWlk7CiAjZW5kaWYKICNlbmRpZgotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgIGludGVycC0+dHNjZHVtcCA9IDA7Ci0jZW5kaWYKIAogICAgICAgICBIRUFEX0xPQ0soKTsKICAgICAgICAgaW50ZXJwLT5uZXh0ID0gaW50ZXJwX2hlYWQ7CkBAIC0xMjYsNiArMTI3LDcgQEAKICAgICBQeV9DTEVBUihpbnRlcnAtPmJ1aWx0aW5zKTsKICAgICBQeV9DTEVBUihpbnRlcnAtPmJ1aWx0aW5zX2NvcHkpOwogICAgIFB5X0NMRUFSKGludGVycC0+aW1wb3J0bGliKTsKKyAgICBQeV9DTEVBUihpbnRlcnAtPmltcG9ydF9mdW5jKTsKIH0KIAogCkBAIC0yMjIsNiArMjI0LDEwIEBACiAKICAgICAgICAgdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlciA9IE5VTEw7CiAgICAgICAgIHRzdGF0ZS0+aW5fY29yb3V0aW5lX3dyYXBwZXIgPSAwOworICAgICAgICB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgPSAwOworCisgICAgICAgIHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlciA9IE5VTEw7CisgICAgICAgIHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplciA9IE5VTEw7CiAKICAgICAgICAgaWYgKGluaXQpCiAgICAgICAgICAgICBfUHlUaHJlYWRTdGF0ZV9Jbml0KHRzdGF0ZSk7CkBAIC00MDIsNiArNDA4LDggQEAKICAgICBQeV9DTEVBUih0c3RhdGUtPmNfdHJhY2VvYmopOwogCiAgICAgUHlfQ0xFQVIodHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcik7CisgICAgUHlfQ0xFQVIodHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyKTsKKyAgICBQeV9DTEVBUih0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXIpOwogfQogCiAKQEAgLTQ1MSwxMCArNDU5LDEwIEBACiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQogICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgIlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudDogbm8gY3VycmVudCB0c3RhdGUiKTsKLSAgICBTRVRfVFNUQVRFKE5VTEwpOworICAgIHRzdGF0ZV9kZWxldGVfY29tbW9uKHRzdGF0ZSk7CiAgICAgaWYgKGF1dG9JbnRlcnByZXRlclN0YXRlICYmIFB5VGhyZWFkX2dldF9rZXlfdmFsdWUoYXV0b1RMU2tleSkgPT0gdHN0YXRlKQogICAgICAgICBQeVRocmVhZF9kZWxldGVfa2V5X3ZhbHVlKGF1dG9UTFNrZXkpOwotICAgIHRzdGF0ZV9kZWxldGVfY29tbW9uKHRzdGF0ZSk7CisgICAgU0VUX1RTVEFURShOVUxMKTsKICAgICBQeUV2YWxfUmVsZWFzZUxvY2soKTsKIH0KICNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwpAQCAtNjk4LDcgKzcwNiw3IEBACiB9CiAKIC8qIEludGVybmFsIGluaXRpYWxpemF0aW9uL2ZpbmFsaXphdGlvbiBmdW5jdGlvbnMgY2FsbGVkIGJ5Ci0gICBQeV9Jbml0aWFsaXplL1B5X0ZpbmFsaXplCisgICBQeV9Jbml0aWFsaXplL1B5X0ZpbmFsaXplRXgKICovCiB2b2lkCiBfUHlHSUxTdGF0ZV9Jbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaSwgUHlUaHJlYWRTdGF0ZSAqdCkKQEAgLTcxNCwxMCArNzIyLDE3IEBACiAgICAgX1B5R0lMU3RhdGVfTm90ZVRocmVhZFN0YXRlKHQpOwogfQogCitQeUludGVycHJldGVyU3RhdGUgKgorX1B5R0lMU3RhdGVfR2V0SW50ZXJwcmV0ZXJTdGF0ZVVuc2FmZSh2b2lkKQoreworICAgIHJldHVybiBhdXRvSW50ZXJwcmV0ZXJTdGF0ZTsKK30KKwogdm9pZAogX1B5R0lMU3RhdGVfRmluaSh2b2lkKQogewogICAgIFB5VGhyZWFkX2RlbGV0ZV9rZXkoYXV0b1RMU2tleSk7CisgICAgYXV0b1RMU2tleSA9IC0xOwogICAgIGF1dG9JbnRlcnByZXRlclN0YXRlID0gTlVMTDsKIH0KIApAQCAtNzg2LDggKzgwMSwxOSBAQAogaW50CiBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpCiB7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gR0VUX1RTVEFURSgpOwotICAgIHJldHVybiB0c3RhdGUgJiYgKHRzdGF0ZSA9PSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisKKyAgICBpZiAoIV9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKGF1dG9UTFNrZXkgPT0gLTEpCisgICAgICAgIHJldHVybiAxOworCisgICAgdHN0YXRlID0gR0VUX1RTVEFURSgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gKHRzdGF0ZSA9PSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpKTsKIH0KIAogUHlHSUxTdGF0ZV9TVEFURQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5c3RydG9kLmMgYi9QeXRob24vcHlzdHJ0b2QuYwppbmRleCAyMDljOTA4Li42NGQwYzUyIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdHJ0b2QuYworKysgYi9QeXRob24vcHlzdHJ0b2QuYwpAQCAtMzcwLDYgKzM3MCw3MiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qIFJlbW92ZSB1bmRlcnNjb3JlcyB0aGF0IGZvbGxvdyB0aGUgdW5kZXJzY29yZSBwbGFjZW1lbnQgcnVsZSBmcm9tCisgICB0aGUgc3RyaW5nIGFuZCB0aGVuIGNhbGwgdGhlIGBpbm5lcmZ1bmNgIGZ1bmN0aW9uIG9uIHRoZSByZXN1bHQuCisgICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IG9iamVjdCBvciBOVUxMIG9uIGV4Y2VwdGlvbi4KKworICAgYHdoYXRgIGlzIHVzZWQgZm9yIHRoZSBlcnJvciBtZXNzYWdlIGVtaXR0ZWQgd2hlbiB1bmRlcnNjb3JlcyBhcmUgZGV0ZWN0ZWQKKyAgIHRoYXQgZG9uJ3QgZm9sbG93IHRoZSBydWxlLiBgYXJnYCBpcyBhbiBvcGFxdWUgcG9pbnRlciBwYXNzZWQgdG8gdGhlIGlubmVyCisgICBmdW5jdGlvbi4KKworICAgVGhpcyBpcyB1c2VkIHRvIGltcGxlbWVudCB1bmRlcnNjb3JlLWFnbm9zdGljIGNvbnZlcnNpb24gZm9yIGZsb2F0cworICAgYW5kIGNvbXBsZXggbnVtYmVycy4KKyovCitQeU9iamVjdCAqCitfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKAorICAgIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgb3JpZ19sZW4sIGNvbnN0IGNoYXIgKndoYXQsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmFyZywKKyAgICBQeU9iamVjdCAqKCppbm5lcmZ1bmMpKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwgdm9pZCAqKSkKK3sKKyAgICBjaGFyIHByZXY7CisgICAgY29uc3QgY2hhciAqcCwgKmxhc3Q7CisgICAgY2hhciAqZHVwLCAqZW5kOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoc3RyY2hyKHMsICdfJykgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gaW5uZXJmdW5jKHMsIG9yaWdfbGVuLCBhcmcpOworICAgIH0KKworICAgIGR1cCA9IFB5TWVtX01hbGxvYyhvcmlnX2xlbiArIDEpOworICAgIGVuZCA9IGR1cDsKKyAgICBwcmV2ID0gJ1wwJzsKKyAgICBsYXN0ID0gcyArIG9yaWdfbGVuOworICAgIGZvciAocCA9IHM7ICpwOyBwKyspIHsKKyAgICAgICAgaWYgKCpwID09ICdfJykgeworICAgICAgICAgICAgLyogVW5kZXJzY29yZXMgYXJlIG9ubHkgYWxsb3dlZCBhZnRlciBkaWdpdHMuICovCisgICAgICAgICAgICBpZiAoIShwcmV2ID49ICcwJyAmJiBwcmV2IDw9ICc5JykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgKmVuZCsrID0gKnA7CisgICAgICAgICAgICAvKiBVbmRlcnNjb3JlcyBhcmUgb25seSBhbGxvd2VkIGJlZm9yZSBkaWdpdHMuICovCisgICAgICAgICAgICBpZiAocHJldiA9PSAnXycgJiYgISgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcHJldiA9ICpwOworICAgIH0KKyAgICAvKiBVbmRlcnNjb3JlcyBhcmUgbm90IGFsbG93ZWQgYXQgdGhlIGVuZC4gKi8KKyAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgLyogTm8gZW1iZWRkZWQgTlVMcyBhbGxvd2VkLiAqLworICAgIGlmIChwICE9IGxhc3QpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgKmVuZCA9ICdcMCc7CisgICAgcmVzdWx0ID0gaW5uZXJmdW5jKGR1cCwgZW5kIC0gZHVwLCBhcmcpOworICAgIFB5TWVtX0ZyZWUoZHVwKTsKKyAgICByZXR1cm4gcmVzdWx0OworCisgIGVycm9yOgorICAgIFB5TWVtX0ZyZWUoZHVwKTsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKwkJICJjb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gJXM6ICIKKwkJICIlUiIsIHdoYXQsIG9iaik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKICNpZmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCiAKIC8qIEdpdmVuIGEgc3RyaW5nIHRoYXQgbWF5IGhhdmUgYSBkZWNpbWFsIHBvaW50IGluIHRoZSBjdXJyZW50CkBAIC04ODEsMTIgKzk0NywxMiBAQAogI2RlZmluZSBPRlNfRSAyCiAKIC8qIFRoZSBsZW5ndGhzIG9mIHRoZXNlIGFyZSBrbm93biB0byB0aGUgY29kZSBiZWxvdywgc28gZG9uJ3QgY2hhbmdlIHRoZW0gKi8KLXN0YXRpYyBjaGFyICpsY19mbG9hdF9zdHJpbmdzW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGxjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKICAgICAiaW5mIiwKICAgICAibmFuIiwKICAgICAiZSIsCiB9Owotc3RhdGljIGNoYXIgKnVjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdWNfZmxvYXRfc3RyaW5nc1tdID0gewogICAgICJJTkYiLAogICAgICJOQU4iLAogICAgICJFIiwKQEAgLTkyNSw3ICs5OTEsOCBAQAogZm9ybWF0X2Zsb2F0X3Nob3J0KGRvdWJsZSBkLCBjaGFyIGZvcm1hdF9jb2RlLAogICAgICAgICAgICAgICAgICAgIGludCBtb2RlLCBpbnQgcHJlY2lzaW9uLAogICAgICAgICAgICAgICAgICAgIGludCBhbHdheXNfYWRkX3NpZ24sIGludCBhZGRfZG90XzBfaWZfaW50ZWdlciwKLSAgICAgICAgICAgICAgICAgICBpbnQgdXNlX2FsdF9mb3JtYXR0aW5nLCBjaGFyICoqZmxvYXRfc3RyaW5ncywgaW50ICp0eXBlKQorICAgICAgICAgICAgICAgICAgIGludCB1c2VfYWx0X2Zvcm1hdHRpbmcsIGNvbnN0IGNoYXIgKiBjb25zdCAqZmxvYXRfc3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICBpbnQgKnR5cGUpCiB7CiAgICAgY2hhciAqYnVmID0gTlVMTDsKICAgICBjaGFyICpwID0gTlVMTDsKQEAgLTExNzYsNyArMTI0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0eXBlKQogewotICAgIGNoYXIgKipmbG9hdF9zdHJpbmdzID0gbGNfZmxvYXRfc3RyaW5nczsKKyAgICBjb25zdCBjaGFyICogY29uc3QgKmZsb2F0X3N0cmluZ3MgPSBsY19mbG9hdF9zdHJpbmdzOwogICAgIGludCBtb2RlOwogCiAgICAgLyogVmFsaWRhdGUgZm9ybWF0X2NvZGUsIGFuZCBtYXAgdXBwZXIgYW5kIGxvd2VyIGNhc2UuIENvbXB1dGUgdGhlCmRpZmYgLS1naXQgYS9QeXRob24vcHl0aG9ucnVuLmMgYi9QeXRob24vcHl0aG9ucnVuLmMKaW5kZXggN2ZiZjA2ZS4uMWZjODZjMCAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5dGhvbnJ1bi5jCisrKyBiL1B5dGhvbi9weXRob25ydW4uYwpAQCAtNDMxLDcgKzQzMSw3IEBACiBwYXJzZV9zeW50YXhfZXJyb3IoUHlPYmplY3QgKmVyciwgUHlPYmplY3QgKiptZXNzYWdlLCBQeU9iamVjdCAqKmZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIGludCAqbGluZW5vLCBpbnQgKm9mZnNldCwgUHlPYmplY3QgKip0ZXh0KQogewotICAgIGxvbmcgaG9sZDsKKyAgICBpbnQgaG9sZDsKICAgICBQeU9iamVjdCAqdjsKICAgICBfUHlfSURFTlRJRklFUihtc2cpOwogICAgIF9QeV9JREVOVElGSUVSKGZpbGVuYW1lKTsKQEAgLTQ2NCwxMSArNDY0LDExIEBACiAgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9saW5lbm8pOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgIGhvbGQgPSBQeUxvbmdfQXNMb25nKHYpOworICAgIGhvbGQgPSBfUHlMb25nX0FzSW50KHYpOwogICAgIFB5X0RFQ1JFRih2KTsKICAgICBpZiAoaG9sZCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICpsaW5lbm8gPSAoaW50KWhvbGQ7CisgICAgKmxpbmVubyA9IGhvbGQ7CiAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX29mZnNldCk7CiAgICAgaWYgKCF2KQpAQCAtNDc3LDExICs0NzcsMTEgQEAKICAgICAgICAgKm9mZnNldCA9IC0xOwogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaG9sZCA9IFB5TG9uZ19Bc0xvbmcodik7CisgICAgICAgIGhvbGQgPSBfUHlMb25nX0FzSW50KHYpOwogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGlmIChob2xkIDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICAqb2Zmc2V0ID0gKGludClob2xkOworICAgICAgICAqb2Zmc2V0ID0gaG9sZDsKICAgICB9CiAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX3RleHQpOwpAQCAtNjMwLDggKzYzMCwxMyBAQAogICAgIH0KICAgICBob29rID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX2V4Y2VwdGhvb2spOwogICAgIGlmIChob29rKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9QYWNrKDMsIGV4Y2VwdGlvbiwgdiwgdGIpOwotICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3QoaG9vaywgYXJncyk7CisgICAgICAgIFB5T2JqZWN0KiBzdGFja1szXTsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgICAgICBzdGFja1swXSA9IGV4Y2VwdGlvbjsKKyAgICAgICAgc3RhY2tbMV0gPSB2OworICAgICAgICBzdGFja1syXSA9IHRiOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoaG9vaywgc3RhY2ssIDMpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNlcHRpb24yLCAqdjIsICp0YjI7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TeXN0ZW1FeGl0KSkgewpAQCAtNjYwLDcgKzY2NSw2IEBACiAgICAgICAgICAgICBQeV9YREVDUkVGKHRiMik7CiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJzeXMuZXhjZXB0aG9vayBpcyBtaXNzaW5nXG4iKTsKICAgICAgICAgUHlFcnJfRGlzcGxheShleGNlcHRpb24sIHYsIHRiKTsKQEAgLTc5MSwxMSArNzk1LDExIEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyICpjYXVzZV9tZXNzYWdlID0KK3N0YXRpYyBjb25zdCBjaGFyIGNhdXNlX21lc3NhZ2VbXSA9CiAgICAgIlxuVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSAiCiAgICAgIm9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4iOwogCi1zdGF0aWMgY29uc3QgY2hhciAqY29udGV4dF9tZXNzYWdlID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvbnRleHRfbWVzc2FnZVtdID0KICAgICAiXG5EdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgIgogICAgICJhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuIjsKIApAQCAtOTQ2LDcgKzk1MCw3IEBACiAKICAgICBmID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CiAgICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC05NTQsNyArOTU4LDcgQEAKICAgICB9CiAgICAgZiA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtMTE0NCw4ICsxMTQ4LDggQEAKIAogbW9kX3R5CiBQeVBhcnNlcl9BU1RGcm9tRmlsZU9iamVjdChGSUxFICpmcCwgUHlPYmplY3QgKmZpbGVuYW1lLCBjb25zdCBjaGFyKiBlbmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNoYXIgKnBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBjb25zdCBjaGFyICpwczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwczIsIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsIGludCAqZXJyY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQogewogICAgIG1vZF90eSBtb2Q7CkBAIC0xMTc3LDggKzExODEsOCBAQAogCiBtb2RfdHkKIFB5UGFyc2VyX0FTVEZyb21GaWxlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZV9zdHIsIGNvbnN0IGNoYXIqIGVuYywKLSAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY2hhciAqcHMxLAotICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNvbnN0IGNoYXIgKnBzMSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAogICAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgbW9kX3R5IG1vZDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRpbWUuYyBiL1B5dGhvbi9weXRpbWUuYwppbmRleCA3ZjY1ODI0Li4zMDE1YTZiIDEwMDY0NAotLS0gYS9QeXRob24vcHl0aW1lLmMKKysrIGIvUHl0aG9uL3B5dGltZS5jCkBAIC03LDYgKzcsMTEgQEAKICNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPiAgIC8qIG1hY2hfYWJzb2x1dGVfdGltZSgpLCBtYWNoX3RpbWViYXNlX2luZm8oKSAqLwogI2VuZGlmCiAKKyNkZWZpbmUgX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3coYSwgYikgXAorICAgIChhc3NlcnQoYiA+IDApLCBcCisgICAgIChfUHlUaW1lX3QpKGEpIDwgX1B5VGltZV9NSU4gLyAoX1B5VGltZV90KShiKSBcCisgICAgIHx8IF9QeVRpbWVfTUFYIC8gKF9QeVRpbWVfdCkoYikgPCAoX1B5VGltZV90KShhKSkKKwogLyogVG8gbWlsbGlzZWNvbmQgKDEwXi0zKSAqLwogI2RlZmluZSBTRUNfVE9fTVMgMTAwMAogCkBAIC0zMywxMiArMzgsMTIgQEAKIHRpbWVfdAogX1B5TG9uZ19Bc1RpbWVfdChQeU9iamVjdCAqb2JqKQogewotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyB2YWw7CisjaWYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgbG9uZyBsb25nIHZhbDsKICAgICB2YWwgPSBQeUxvbmdfQXNMb25nTG9uZyhvYmopOwogI2Vsc2UKICAgICBsb25nIHZhbDsKLSAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKICAgICB2YWwgPSBQeUxvbmdfQXNMb25nKG9iaik7CiAjZW5kaWYKICAgICBpZiAodmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTUyLDU4ICs1Nyw5MSBAQAogUHlPYmplY3QgKgogX1B5TG9uZ19Gcm9tVGltZV90KHRpbWVfdCB0KQogewotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdCk7CisjaWYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl0KTsKICNlbHNlCi0gICAgYXNzZXJ0KHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKICNlbmRpZgogfQogCisvKiBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlcgorICAgKF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSAqLworc3RhdGljIGRvdWJsZQorX1B5VGltZV9Sb3VuZEhhbGZFdmVuKGRvdWJsZSB4KQoreworICAgIGRvdWJsZSByb3VuZGVkID0gcm91bmQoeCk7CisgICAgaWYgKGZhYnMoeC1yb3VuZGVkKSA9PSAwLjUpCisgICAgICAgIC8qIGhhbGZ3YXkgY2FzZTogcm91bmQgdG8gZXZlbiAqLworICAgICAgICByb3VuZGVkID0gMi4wKnJvdW5kKHgvMi4wKTsKKyAgICByZXR1cm4gcm91bmRlZDsKK30KKworc3RhdGljIGRvdWJsZQorX1B5VGltZV9Sb3VuZChkb3VibGUgeCwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICB2b2xhdGlsZSBkb3VibGUgZDsKKworICAgIGQgPSB4OworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikKKyAgICAgICAgZCA9IF9QeVRpbWVfUm91bmRIYWxmRXZlbihkKTsKKyAgICBlbHNlIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpCisgICAgICAgIGQgPSBjZWlsKGQpOworICAgIGVsc2UKKyAgICAgICAgZCA9IGZsb29yKGQpOworICAgIHJldHVybiBkOworfQorCitzdGF0aWMgaW50CitfUHlUaW1lX0RvdWJsZVRvRGVub21pbmF0b3IoZG91YmxlIGQsIHRpbWVfdCAqc2VjLCBsb25nICpudW1lcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlbm9taW5hdG9yLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgZG91YmxlIGludHBhcnQsIGVycjsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGZsb2F0cGFydDsKKworICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOworCisgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOworICAgIGZsb2F0cGFydCA9IF9QeVRpbWVfUm91bmQoZmxvYXRwYXJ0LCByb3VuZCk7CisgICAgaWYgKGZsb2F0cGFydCA+PSBkZW5vbWluYXRvcikgeworICAgICAgICBmbG9hdHBhcnQgLT0gZGVub21pbmF0b3I7CisgICAgICAgIGludHBhcnQgKz0gMS4wOworICAgIH0KKyAgICBlbHNlIGlmIChmbG9hdHBhcnQgPCAwKSB7CisgICAgICAgIGZsb2F0cGFydCArPSBkZW5vbWluYXRvcjsKKyAgICAgICAgaW50cGFydCAtPSAxLjA7CisgICAgfQorICAgIGFzc2VydCgwLjAgPD0gZmxvYXRwYXJ0ICYmIGZsb2F0cGFydCA8IGRlbm9taW5hdG9yKTsKKworICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CisgICAgKm51bWVyYXRvciA9IChsb25nKWZsb2F0cGFydDsKKworICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7CisgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKKyAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQKIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqbnVtZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZW5vbWluYXRvciwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewotICAgIGFzc2VydChkZW5vbWluYXRvciA8PSBMT05HX01BWCk7CisgICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IChkb3VibGUpTE9OR19NQVgpOworCiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgewotICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOwotICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgdW5zYWZlIG9wdGltaXphdGlvbiBvbiBmbG9hdCBlbmFibGVkIGJ5IGdjYyAtTzMgKi8KLSAgICAgICAgdm9sYXRpbGUgZG91YmxlIGZsb2F0cGFydDsKLQotICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOwotICAgICAgICBmbG9hdHBhcnQgPSBtb2RmKGQsICZpbnRwYXJ0KTsKLSAgICAgICAgaWYgKGZsb2F0cGFydCA8IDApIHsKLSAgICAgICAgICAgIGZsb2F0cGFydCA9IDEuMCArIGZsb2F0cGFydDsKLSAgICAgICAgICAgIGludHBhcnQgLT0gMS4wOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOwotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7Ci0gICAgICAgICAgICBmbG9hdHBhcnQgPSBjZWlsKGZsb2F0cGFydCk7Ci0gICAgICAgICAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMC4wOwotICAgICAgICAgICAgICAgIGludHBhcnQgKz0gMS4wOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZmxvYXRwYXJ0ID0gZmxvb3IoZmxvYXRwYXJ0KTsKLSAgICAgICAgfQotCi0gICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7Ci0gICAgICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7Ci0gICAgICAgIGlmIChlcnIgPD0gLTEuMCB8fCBlcnIgPj0gMS4wKSB7Ci0gICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotCi0gICAgICAgICpudW1lcmF0b3IgPSAobG9uZylmbG9hdHBhcnQ7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBkb3VibGUgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKKyAgICAgICAgcmV0dXJuIF9QeVRpbWVfRG91YmxlVG9EZW5vbWluYXRvcihkLCBzZWMsIG51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZW5vbWluYXRvciwgcm91bmQpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgKnNlYyA9IF9QeUxvbmdfQXNUaW1lX3Qob2JqKTsKKyAgICAgICAgKm51bWVyYXRvciA9IDA7CiAgICAgICAgIGlmICgqc2VjID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKm51bWVyYXRvciA9IDA7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KQEAgLTExMiwxMyArMTUwLDEyIEBACiBfUHlUaW1lX09iamVjdFRvVGltZV90KFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgewotICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOworICAgICAgICBkb3VibGUgaW50cGFydCwgZXJyOworICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgICAgIHZvbGF0aWxlIGRvdWJsZSBkOwogCiAgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpCi0gICAgICAgICAgICBkID0gY2VpbChkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZCA9IGZsb29yKGQpOworICAgICAgICBkID0gX1B5VGltZV9Sb3VuZChkLCByb3VuZCk7CiAgICAgICAgICh2b2lkKW1vZGYoZCwgJmludHBhcnQpOwogCiAgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CkBAIC0xNDEsMTQgKzE3OCwyMCBAQAogX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpuc2VjLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKLSAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTksIHJvdW5kKTsKKyAgICBpbnQgcmVzOworICAgIHJlcyA9IF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgbnNlYywgMWU5LCByb3VuZCk7CisgICAgYXNzZXJ0KDAgPD0gKm5zZWMgJiYgKm5zZWMgPCBTRUNfVE9fTlMpOworICAgIHJldHVybiByZXM7CiB9CiAKIGludAogX1B5VGltZV9PYmplY3RUb1RpbWV2YWwoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKnVzZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7Ci0gICAgcmV0dXJuIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2LCByb3VuZCk7CisgICAgaW50IHJlczsKKyAgICByZXMgPSBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIHVzZWMsIDFlNiwgcm91bmQpOworICAgIGFzc2VydCgwIDw9ICp1c2VjICYmICp1c2VjIDwgU0VDX1RPX1VTKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTYyLDIxICsyMDUsMjQgQEAKIF9QeVRpbWVfRnJvbVNlY29uZHMoaW50IHNlY29uZHMpCiB7CiAgICAgX1B5VGltZV90IHQ7CisgICAgdCA9IChfUHlUaW1lX3Qpc2Vjb25kczsKICAgICAvKiBlbnN1cmUgdGhhdCBpbnRlZ2VyIG92ZXJmbG93IGNhbm5vdCBoYXBwZW4sIGludCB0eXBlIHNob3VsZCBoYXZlIDMyCiAgICAgICAgYml0cywgd2hlcmVhcyBfUHlUaW1lX3QgdHlwZSBoYXMgYXQgbGVhc3QgNjQgYml0cyAoU0VDX1RPX01TIHRha2VzIDMwCiAgICAgICAgYml0cykuICovCi0gICAgYXNzZXJ0KChzZWNvbmRzID49IDAgJiYgc2Vjb25kcyA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUykKLSAgICAgICAgICAgfHwgKHNlY29uZHMgPCAwICYmIHNlY29uZHMgPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpKTsKLSAgICB0ID0gKF9QeVRpbWVfdClzZWNvbmRzICogU0VDX1RPX05TOworICAgIFB5X0JVSUxEX0FTU0VSVChJTlRfTUFYIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoSU5UX01JTiA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUyk7CisgICAgYXNzZXJ0KCh0ID49IDAgJiYgdCA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUykKKyAgICAgICAgICAgfHwgKHQgPCAwICYmIHQgPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpKTsKKyAgICB0ICo9IFNFQ19UT19OUzsKICAgICByZXR1cm4gdDsKIH0KIAogX1B5VGltZV90Ci1fUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhQWV9MT05HX0xPTkcgbnMpCitfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhsb25nIGxvbmcgbnMpCiB7CiAgICAgX1B5VGltZV90IHQ7Ci0gICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICB0ID0gUHlfU0FGRV9ET1dOQ0FTVChucywgUFlfTE9OR19MT05HLCBfUHlUaW1lX3QpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IFB5X1NBRkVfRE9XTkNBU1QobnMsIGxvbmcgbG9uZywgX1B5VGltZV90KTsKICAgICByZXR1cm4gdDsKIH0KIApAQCAtMTg3LDEyICsyMzMsMTUgQEAKICAgICBfUHlUaW1lX3QgdDsKICAgICBpbnQgcmVzID0gMDsKIAotICAgIHQgPSAoX1B5VGltZV90KXRzLT50dl9zZWMgKiBTRUNfVE9fTlM7Ci0gICAgaWYgKHQgLyBTRUNfVE9fTlMgIT0gdHMtPnR2X3NlYykgeworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodHMtPnR2X3NlYykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXRzLT50dl9zZWM7CisKKyAgICBpZiAoX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3codCwgU0VDX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgIHJlcyA9IC0xOwogICAgIH0KKyAgICB0ID0gdCAqIFNFQ19UT19OUzsKIAogICAgIHQgKz0gdHMtPnR2X25zZWM7CiAKQEAgLTIwNiwxMiArMjU1LDE1IEBACiAgICAgX1B5VGltZV90IHQ7CiAgICAgaW50IHJlcyA9IDA7CiAKLSAgICB0ID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjICogU0VDX1RPX05TOwotICAgIGlmICh0IC8gU0VDX1RPX05TICE9IHR2LT50dl9zZWMpIHsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHR2LT50dl9zZWMpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICB0ID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjOworCisgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHQsIFNFQ19UT19OUykpIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwogICAgICAgICByZXMgPSAtMTsKICAgICB9CisgICAgdCA9IHQgKiBTRUNfVE9fTlM7CiAKICAgICB0ICs9IChfUHlUaW1lX3QpdHYtPnR2X3VzZWMgKiBVU19UT19OUzsKIApAQCAtMjIxLDUwICsyNzMsNTIgQEAKICNlbmRpZgogCiBzdGF0aWMgaW50CitfUHlUaW1lX0Zyb21GbG9hdE9iamVjdChfUHlUaW1lX3QgKnQsIGRvdWJsZSB2YWx1ZSwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB1bml0X3RvX25zKQoreworICAgIGRvdWJsZSBlcnI7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgLyogY29udmVydCB0byBhIG51bWJlciBvZiBuYW5vc2Vjb25kcyAqLworICAgIGQgPSB2YWx1ZTsKKyAgICBkICo9IChkb3VibGUpdW5pdF90b19uczsKKyAgICBkID0gX1B5VGltZV9Sb3VuZChkLCByb3VuZCk7CisKKyAgICAqdCA9IChfUHlUaW1lX3QpZDsKKyAgICBlcnIgPSBkIC0gKGRvdWJsZSkqdDsKKyAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgeworICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKIF9QeVRpbWVfRnJvbU9iamVjdChfUHlUaW1lX3QgKnQsIFB5T2JqZWN0ICpvYmosIF9QeVRpbWVfcm91bmRfdCByb3VuZCwKLSAgICAgICAgICAgICAgICAgICBsb25nIHRvX25hbm9zZWNvbmRzKQorICAgICAgICAgICAgICAgICAgIGxvbmcgdW5pdF90b19ucykKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLwotICAgICAgICB2b2xhdGlsZSBkb3VibGUgZCwgZXJyOwotCi0gICAgICAgIC8qIGNvbnZlcnQgdG8gYSBudW1iZXIgb2YgbmFub3NlY29uZHMgKi8KKyAgICAgICAgZG91YmxlIGQ7CiAgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGQgKj0gdG9fbmFub3NlY29uZHM7Ci0KLSAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKLSAgICAgICAgICAgIGQgPSBjZWlsKGQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkID0gZmxvb3IoZCk7Ci0KLSAgICAgICAgKnQgPSAoX1B5VGltZV90KWQ7Ci0gICAgICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OwotICAgICAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgewotICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gX1B5VGltZV9Gcm9tRmxvYXRPYmplY3QodCwgZCwgcm91bmQsIHVuaXRfdG9fbnMpOwogICAgIH0KICAgICBlbHNlIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICBQWV9MT05HX0xPTkcgc2VjOworICAgICAgICBsb25nIGxvbmcgc2VjOworICAgICAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKGxvbmcgbG9uZykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworCiAgICAgICAgIHNlYyA9IFB5TG9uZ19Bc0xvbmdMb25nKG9iaik7Ci0gICAgICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7Ci0jZWxzZQotICAgICAgICBsb25nIHNlYzsKLSAgICAgICAgc2VjID0gUHlMb25nX0FzTG9uZyhvYmopOwotICAgICAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOwotI2VuZGlmCiAgICAgICAgIGlmIChzZWMgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCiAgICAgICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgICp0ID0gc2VjICogdG9fbmFub3NlY29uZHM7Ci0gICAgICAgIGlmICgqdCAvIHRvX25hbm9zZWNvbmRzICE9IHNlYykgeworCisgICAgICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyhzZWMsIHVuaXRfdG9fbnMpKSB7CiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KKyAgICAgICAgKnQgPSBzZWMgKiB1bml0X3RvX25zOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CkBAIC0yODQsMjQgKzMzOCwyOCBAQAogZG91YmxlCiBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShfUHlUaW1lX3QgdCkKIHsKLSAgICBfUHlUaW1lX3Qgc2VjLCBuczsKLSAgICAvKiBEaXZpZGUgdXNpbmcgaW50ZWdlcnMgdG8gYXZvaWQgcm91bmRpbmcgaXNzdWVzIG9uIHRoZSBpbnRlZ2VyIHBhcnQuCi0gICAgICAgMWUtOSBjYW5ub3QgYmUgc3RvcmVkIGV4YWN0bHkgaW4gSUVFRSA2NC1iaXQuICovCi0gICAgc2VjID0gdCAvIFNFQ19UT19OUzsKLSAgICBucyA9IHQgJSBTRUNfVE9fTlM7Ci0gICAgcmV0dXJuIChkb3VibGUpc2VjICsgKGRvdWJsZSlucyAqIDFlLTk7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgaWYgKHQgJSBTRUNfVE9fTlMgPT0gMCkgeworICAgICAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICAgICAgLyogRGl2aWRlIHVzaW5nIGludGVnZXJzIHRvIGF2b2lkIHJvdW5kaW5nIGlzc3VlcyBvbiB0aGUgaW50ZWdlciBwYXJ0LgorICAgICAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KKyAgICAgICAgc2VjcyA9IHQgLyBTRUNfVE9fTlM7CisgICAgICAgIGQgPSAoZG91YmxlKXNlY3M7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkID0gKGRvdWJsZSl0OworICAgICAgICBkIC89IDFlOTsKKyAgICB9CisgICAgcmV0dXJuIGQ7CiB9CiAKIFB5T2JqZWN0ICoKIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdChfUHlUaW1lX3QgdCkKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA+PSBzaXplb2YoX1B5VGltZV90KSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKLSNlbHNlCi0gICAgYXNzZXJ0KHNpemVvZihsb25nKSA+PSBzaXplb2YoX1B5VGltZV90KSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKLSNlbmRpZgorICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA+PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl0KTsKIH0KIAogc3RhdGljIF9QeVRpbWVfdApAQCAtMzA5LDcgKzM2NywyMCBAQAogICAgICAgICAgICAgICAgY29uc3QgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewogICAgIGFzc2VydChrID4gMSk7Ci0gICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgeworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikgeworICAgICAgICBfUHlUaW1lX3QgeCwgciwgYWJzX3I7CisgICAgICAgIHggPSB0IC8gazsKKyAgICAgICAgciA9IHQgJSBrOworICAgICAgICBhYnNfciA9IFB5X0FCUyhyKTsKKyAgICAgICAgaWYgKGFic19yID4gayAvIDIgfHwgKGFic19yID09IGsgLyAyICYmIChQeV9BQlMoeCkgJiAxKSkpIHsKKyAgICAgICAgICAgIGlmICh0ID49IDApCisgICAgICAgICAgICAgICAgeCsrOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHgtLTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geDsKKyAgICB9CisgICAgZWxzZSBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CiAgICAgICAgIGlmICh0ID49IDApCiAgICAgICAgICAgICByZXR1cm4gKHQgKyBrIC0gMSkgLyBrOwogICAgICAgICBlbHNlCkBAIC0zNzMsNyArNDQ0LDcgQEAKIF9QeVRpbWVfQXNUaW1ldmFsU3RydWN0X2ltcGwoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1ldmFsICp0diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kLCBpbnQgcmFpc2UpCiB7Ci0gICAgX1B5VGltZV90IHNlY3M7CisgICAgX1B5VGltZV90IHNlY3MsIHNlY3MyOwogICAgIGludCB1czsKICAgICBpbnQgcmVzOwogCkBAIC0zODYsNyArNDU3LDggQEAKICNlbmRpZgogICAgIHR2LT50dl91c2VjID0gdXM7CiAKLSAgICBpZiAocmVzIDwgMCB8fCAoX1B5VGltZV90KXR2LT50dl9zZWMgIT0gc2VjcykgeworICAgIHNlY3MyID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjOworICAgIGlmIChyZXMgPCAwIHx8IHNlY3MyICE9IHNlY3MpIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTQyNCw2ICs0OTYsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKICNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgfHwgZGVmaW5lZChIQVZFX0tRVUVVRSkKIGludAogX1B5VGltZV9Bc1RpbWVzcGVjKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQpAQCAtNDM3LDEzICs1MTAsMTMgQEAKICAgICAgICAgc2VjcyAtPSAxOwogICAgIH0KICAgICB0cy0+dHZfc2VjID0gKHRpbWVfdClzZWNzOwotICAgIGlmICgoX1B5VGltZV90KXRzLT50dl9zZWMgIT0gc2VjcykgewotICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgYXNzZXJ0KDAgPD0gbnNlYyAmJiBuc2VjIDwgU0VDX1RPX05TKTsKICAgICB0cy0+dHZfbnNlYyA9IG5zZWM7CiAKLSAgICBhc3NlcnQoMCA8PSB0cy0+dHZfbnNlYyAmJiB0cy0+dHZfbnNlYyA8PSA5OTk5OTk5OTkpOworICAgIGlmICgoX1B5VGltZV90KXRzLT50dl9zZWMgIT0gc2VjcykgeworICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpAQCAtNTU3LDE5ICs2MzAsMjAgQEAKICAgICByZXR1cm4gcHlnZXR0aW1lb2ZkYXkodCwgaW5mbywgMSk7CiB9CiAKLQogc3RhdGljIGludAogcHltb25vdG9uaWMoX1B5VGltZV90ICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbywgaW50IHJhaXNlKQogewogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICBVTE9OR0xPTkcgcmVzdWx0OworICAgIFVMT05HTE9ORyB0aWNrczsKKyAgICBfUHlUaW1lX3QgdDsKIAogICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOwogCi0gICAgcmVzdWx0ID0gR2V0VGlja0NvdW50NjQoKTsKKyAgICB0aWNrcyA9IEdldFRpY2tDb3VudDY0KCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0aWNrcykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXRpY2tzOwogCi0gICAgKnRwID0gcmVzdWx0ICogTVNfVE9fTlM7Ci0gICAgaWYgKCp0cCAvIE1TX1RPX05TICE9IHJlc3VsdCkgeworICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyh0LCBNU19UT19OUykpIHsKICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC01NzcsNiArNjUxLDcgQEAKICAgICAgICAgLyogSGVsbG8sIHRpbWUgdHJhdmVsZXIhICovCiAgICAgICAgIGFzc2VydCgwKTsKICAgICB9CisgICAgKnRwID0gdCAqIE1TX1RPX05TOwogCiAgICAgaWYgKGluZm8pIHsKICAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7CkBAIC02ODksOCArNzY0LDU3IEBACiAgICAgaWYgKF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2tXaXRoSW5mbygmdCwgTlVMTCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAvKiBjaGVjayB0aGF0IF9QeVRpbWVfRnJvbVNlY29uZHMoKSBjYW5ub3Qgb3ZlcmZsb3cgKi8KLSAgICBhc3NlcnQoSU5UX01BWCA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUyk7Ci0gICAgYXNzZXJ0KElOVF9NSU4gPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpOwogICAgIHJldHVybiAwOwogfQorCitpbnQKK19QeVRpbWVfbG9jYWx0aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IGxvY2FsdGltZV9zKHRtLCAmdCk7CisgICAgaWYgKGVycm9yICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2Vsc2UgLyogIU1TX1dJTkRPV1MgKi8KKyAgICBpZiAobG9jYWx0aW1lX3IoJnQsIHRtKSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK30KKworaW50CitfUHlUaW1lX2dtdGltZSh0aW1lX3QgdCwgc3RydWN0IHRtICp0bSkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaW50IGVycm9yOworCisgICAgZXJyb3IgPSBnbXRpbWVfcyh0bSwgJnQpOworICAgIGlmIChlcnJvciAhPSAwKSB7CisgICAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKKyNlbHNlIC8qICFNU19XSU5ET1dTICovCisgICAgaWYgKGdtdGltZV9yKCZ0LCB0bSkgPT0gTlVMTCkgeworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCit9CmRpZmYgLS1naXQgYS9QeXRob24vcmFuZG9tLmMgYi9QeXRob24vcmFuZG9tLmMKaW5kZXggZjJhZGE1Zi4uNmY5ZjcxMSAxMDA2NDQKLS0tIGEvUHl0aG9uL3JhbmRvbS5jCisrKyBiL1B5dGhvbi9yYW5kb20uYwpAQCAtMSw2ICsxLDkgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpZmRlZiBNU19XSU5ET1dTCiAjICBpbmNsdWRlIDx3aW5kb3dzLmg+CisvKiBBbGwgc2FtcGxlIE1TRE4gd2luY3J5cHQgcHJvZ3JhbXMgaW5jbHVkZSB0aGUgaGVhZGVyIGJlbG93LiBJdCBpcyBhdCBsZWFzdAorICogcmVxdWlyZWQgd2l0aCBNaW4gR1cuICovCisjICBpbmNsdWRlIDx3aW5jcnlwdC5oPgogI2Vsc2UKICMgIGluY2x1ZGUgPGZjbnRsLmg+CiAjICBpZmRlZiBIQVZFX1NZU19TVEFUX0gKQEAgLTM2LDEwICszOSw5IEBACiAgICAgcmV0dXJuIDA7CiAKIGVycm9yOgotICAgIGlmIChyYWlzZSkKKyAgICBpZiAocmFpc2UpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgZWxzZQotICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBXaW5kb3dzIHJhbmRvbSBBUEkgKENyeXB0b0dlbikiKTsKKyAgICB9CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC01Miw4ICs1NCw5IEBACiAKICAgICBpZiAoaENyeXB0UHJvdiA9PSAwKQogICAgIHsKLSAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpCisgICAgICAgIGlmICh3aW4zMl91cmFuZG9tX2luaXQocmFpc2UpID09IC0xKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICB9CiAKICAgICB3aGlsZSAoc2l6ZSA+IDApCkBAIC02MiwxMSArNjUsOSBAQAogICAgICAgICBpZiAoIUNyeXB0R2VuUmFuZG9tKGhDcnlwdFByb3YsIChEV09SRCljaHVuaywgYnVmZmVyKSkKICAgICAgICAgewogICAgICAgICAgICAgLyogQ3J5cHRHZW5SYW5kb20oKSBmYWlsZWQgKi8KLSAgICAgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplZCB0aGUgcmFuZG9taXplZCBoYXNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzZWNyZXQgdXNpbmcgQ3J5cHRvR2VuKSIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlciArPSBjaHVuazsKQEAgLTgzLDI5ICs4NCwyOCBAQAogLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGdldGVudHJvcHkoKS4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLgogCi0gICBJZiBmYXRhbCBpcyBub256ZXJvLCBjYWxsIFB5X0ZhdGFsRXJyb3IoKSBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uCi0gICBvbiBlcnJvci4gKi8KKyAgIElmIHJhaXNlIGlzIHplcm8sIGRvbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLXB5X2dldGVudHJvcHkodW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCBmYXRhbCkKK3B5X2dldGVudHJvcHkoY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKIHsKICAgICB3aGlsZSAoc2l6ZSA+IDApIHsKICAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9NSU4oc2l6ZSwgMjU2KTsKICAgICAgICAgaW50IHJlczsKIAotICAgICAgICBpZiAoIWZhdGFsKSB7CisgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKLSAgICAgICAgICAgIGlmIChyZXMgPCAwKQotICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldGVudHJvcHkoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAogICAgICAgICBidWZmZXIgKz0gbGVuOwpAQCAtMTI4LDI1ICsxMjgsMjIgQEAKICAgICAgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRUlOVFIgYW5kIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VkIGFuCiAgICAgIGV4Y2VwdGlvbiwgb3IgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IuICovCiBzdGF0aWMgaW50Ci1weV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKK3B5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCiB7CiAgICAgLyogSXMgZ2V0cmFuZG9tKCkgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbD8gU2V0IHRvIDAgaWYgZ2V0cmFuZG9tKCkKICAgICAgICBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0uIE5lZWQgTGludXgga2VybmVsIDMuMTcgb3IgbmV3ZXIsIG9yIFNvbGFyaXMKICAgICAgICAxMS4zIG9yIG5ld2VyICovCiAgICAgc3RhdGljIGludCBnZXRyYW5kb21fd29ya3MgPSAxOwotCi0gICAgLyogZ2V0cmFuZG9tKCkgb24gTGludXggd2lsbCBibG9jayBpZiBjYWxsZWQgYmVmb3JlIHRoZSBrZXJuZWwgaGFzCi0gICAgICogaW5pdGlhbGl6ZWQgdGhlIHVyYW5kb20gZW50cm9weSBwb29sLiBUaGlzIHdpbGwgY2F1c2UgUHl0aG9uCi0gICAgICogdG8gaGFuZyBvbiBzdGFydHVwIGlmIGNhbGxlZCB2ZXJ5IGVhcmx5IGluIHRoZSBib290IHByb2Nlc3MgLQotICAgICAqIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2ODM5LiBUbyBhdm9pZCB0aGlzLCB1c2UgdGhlCi0gICAgICogR1JORF9OT05CTE9DSyBmbGFnLiAqLwotICAgIGNvbnN0IGludCBmbGFncyA9IEdSTkRfTk9OQkxPQ0s7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgKmRlc3Q7CiAgICAgbG9uZyBuOwogCiAgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgZmxhZ3MgPSBibG9ja2luZyA/IDAgOiBHUk5EX05PTkJMT0NLOworICAgIGRlc3QgPSBidWZmZXI7CiAgICAgd2hpbGUgKDAgPCBzaXplKSB7CiAjaWZkZWYgc3VuCiAgICAgICAgIC8qIElzc3VlICMyNjczNTogT24gU29sYXJpcywgZ2V0cmFuZG9tKCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAKQEAgLTE2MCwyMyArMTU3LDIzIEBACiAjaWZkZWYgSEFWRV9HRVRSQU5ET00KICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbiA9IGdldHJhbmRvbShidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICAvKiBPbiBMaW51eCwgdXNlIHRoZSBzeXNjYWxsKCkgZnVuY3Rpb24gYmVjYXVzZSB0aGUgR05VIGxpYmMgZG9lc24ndAotICAgICAgICAgKiBleHBvc2UgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgeWV0LiBTZWU6Ci0gICAgICAgICAqIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE3MjUyICovCisgICAgICAgICAgIGV4cG9zZSB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCB5ZXQuIFNlZToKKyAgICAgICAgICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTE4OCw0MCArMTg1LDMzIEBACiAgICAgICAgICAgICAgICAgZ2V0cmFuZG9tX3dvcmtzID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKLSAgICAgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpYXplZCB5ZXQuIEluIHRoaXMgY2FzZSwgZmFsbCBiYWNrIG9uCi0gICAgICAgICAgICAgICAgICAgcmVhZGluZyBmcm9tIC9kZXYvdXJhbmRvbS4KIAotICAgICAgICAgICAgICAgICAgIE5vdGU6IEluIHRoaXMgY2FzZSB0aGUgZGF0YSByZWFkIHdpbGwgbm90IGJlIHJhbmRvbSBzbwotICAgICAgICAgICAgICAgICAgIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgY3J5cHRvZ3JhcGhpYyBwdXJwb3Nlcy4gUmV0YWluaW5nCi0gICAgICAgICAgICAgICAgICAgdGhlIGV4aXN0aW5nIHNlbWFudGljcyBmb3IgcHJhY3RpY2FsIHB1cnBvc2VzLiAqLwotICAgICAgICAgICAgICAgIGdldHJhbmRvbV93b3JrcyA9IDA7CisgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbSB1cmFuZG9tCisgICAgICAgICAgICAgICBpcyBub3QgaW5pdGlhbGlhemVkIHlldC4gRm9yIF9QeVJhbmRvbV9Jbml0KCksIHdlIGlnbm9yZSB0aGVpcgorICAgICAgICAgICAgICAgZXJyb3IgYW5kIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSB3aGljaCBuZXZlciBibG9ja3MsCisgICAgICAgICAgICAgICBldmVuIGlmIHRoZSBzeXN0ZW0gdXJhbmRvbSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiAqLworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiAmJiAhcmFpc2UgJiYgIWJsb2NraW5nKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXJhaXNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCIpOworICAgICAgICAgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgKi8KKyAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgZmFpbGVkIik7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgZGVzdCArPSBuOwogICAgICAgICBzaXplIC09IG47CiAgICAgfQogICAgIHJldHVybiAxOwpAQCAtMjM4LDY0ICsyMjgsMjEgQEAKIC8qIFJlYWQgJ3NpemUnIHJhbmRvbSBieXRlcyBmcm9tIHB5X2dldHJhbmRvbSgpLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tCiAgICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KIAotICAgQ2FsbCBQeV9GYXRhbEVycm9yKCkgb24gZXJyb3IuICovCi1zdGF0aWMgdm9pZAotZGV2X3VyYW5kb21fbm9yYWlzZSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBpbnQgZmQ7Ci0gICAgUHlfc3NpemVfdCBuOwotCi0gICAgYXNzZXJ0ICgwIDwgc2l6ZSk7Ci0KLSNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICBpZiAocHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCkgPT0gMSkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8qIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTSwKLSAgICAgICBmYWxsIGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KLSNlbmRpZgotCi0gICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0gICAgaWYgKGZkIDwgMCkgewotICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20iKTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoMCA8IHNpemUpCi0gICAgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7Ci0KLSAgICAgICAgaWYgKG4gPD0gMCkgewotICAgICAgICAgICAgLyogcmVhZCgpIGZhaWxlZCBvciByZXR1cm5lZCAwIGJ5dGVzICovCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmVhZCBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmZmVyICs9IG47Ci0gICAgICAgIHNpemUgLT0gbjsKLSAgICB9Ci0gICAgY2xvc2UoZmQpOwotfQotCi0vKiBSZWFkICdzaXplJyByYW5kb20gYnl0ZXMgZnJvbSBweV9nZXRyYW5kb20oKS4gRmFsbCBiYWNrIG9uIHJlYWRpbmcgZnJvbQotICAgL2Rldi91cmFuZG9tIGlmIGdldHJhbmRvbSgpIGlzIG5vdCBhdmFpbGFibGUuCi0KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMQorICAgb24gZXJyb3IuICovCiBzdGF0aWMgaW50Ci1kZXZfdXJhbmRvbV9weXRob24oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCitkZXZfdXJhbmRvbShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCiB7CiAgICAgaW50IGZkOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OwogI2lmZGVmIFBZX0dFVFJBTkRPTQogICAgIGludCByZXM7CiAjZW5kaWYKIAotICAgIGlmIChzaXplIDw9IDApCi0gICAgICAgIHJldHVybiAwOworICAgIGFzc2VydChzaXplID4gMCk7CiAKICNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAxKTsKKyAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCBibG9ja2luZywgcmFpc2UpOwogICAgIGlmIChyZXMgPCAwKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0zMDYsNjQgKzI1Myw5MCBAQAogICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwogI2VuZGlmCiAKLSAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0gICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KLSAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKLSAgICAgICAgICAgIHx8IHN0LnN0X2RldiAhPSB1cmFuZG9tX2NhY2hlLnN0X2RldgotICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7Ci0gICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKLSAgICAgICAgICAgICAgIHNpbmNlIGl0IHByb2JhYmx5IHBvaW50cyB0byBzb21ldGhpbmcgaW1wb3J0YW50IGZvciBzb21lCi0gICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KLSAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKKworICAgIGlmIChyYWlzZSkgeworICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OworCisgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKKyAgICAgICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KKyAgICAgICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZSh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCisgICAgICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2CisgICAgICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7CisgICAgICAgICAgICAgICAgLyogU29tZXRoaW5nIGNoYW5nZWQ6IGZvcmdldCB0aGUgY2FjaGVkIGZkIChidXQgZG9uJ3QgY2xvc2UgaXQsCisgICAgICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKKyAgICAgICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KKyAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gLTE7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkKKyAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CisgICAgICAgICAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAorICAgICAgICAgICAgICAgICAgICBlcnJubyA9PSBFTk9ERVYgfHwgZXJybm8gPT0gRUFDQ0VTKQorICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgLyogdXJhbmRvbV9mZCB3YXMgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciB0aHJlYWQgd2hpbGUgd2Ugd2VyZQorICAgICAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCisgICAgICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gZmQ7CisgICAgICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfZGV2ID0gc3Quc3RfZGV2OworICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkbyB7CisgICAgICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKyAgICAgICAgICAgIGlmIChuID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICAgICAgc2l6ZSAtPSBuOworICAgICAgICB9IHdoaWxlICgwIDwgc2l6ZSk7CiAgICAgfQotICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApCi0gICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKICAgICBlbHNlIHsKLSAgICAgICAgZmQgPSBfUHlfb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworICAgICAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKICAgICAgICAgaWYgKGZkIDwgMCkgewotICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAotICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgLyogb3RoZXJ3aXNlLCBrZWVwIHRoZSBPU0Vycm9yIGV4Y2VwdGlvbiByYWlzZWQgYnkgX1B5X29wZW4oKSAqLwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLSAgICAgICAgICAgIC8qIHVyYW5kb21fZmQgd2FzIGluaXRpYWxpemVkIGJ5IGFub3RoZXIgdGhyZWFkIHdoaWxlIHdlIHdlcmUKLSAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCi0gICAgICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3QpKSB7CisKKyAgICAgICAgd2hpbGUgKDAgPCBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKKworICAgICAgICAgICAgaWYgKG4gPD0gMCkgeworICAgICAgICAgICAgICAgIC8qIHN0b3Agb24gZXJyb3Igb3IgaWYgcmVhZChzaXplKSByZXR1cm5lZCAwICovCiAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSBmZDsKLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2RldiA9IHN0LnN0X2RldjsKLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmZmVyICs9IG47CisgICAgICAgICAgICBzaXplIC09IG47CiAgICAgICAgIH0KKyAgICAgICAgY2xvc2UoZmQpOwogICAgIH0KLQotICAgIGRvIHsKLSAgICAgICAgbiA9IF9QeV9yZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0gICAgICAgIGlmIChuID09IC0xKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG4gPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCi0gICAgICAgICAgICAgICAgICAgIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyICs9IG47Ci0gICAgICAgIHNpemUgLT0gbjsKLSAgICB9IHdoaWxlICgwIDwgc2l6ZSk7Ci0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzk5LDI5ICszNzIsNjIgQEAKICAgICB9CiB9CiAKKy8qIElmIHJhaXNlIGlzIHplcm86CisgICAtIERvbid0IHJhaXNlIGV4Y2VwdGlvbnMgb24gZXJyb3IKKyAgIC0gRG9uJ3QgY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSBvbiBFSU5UUiAocmV0cnkgZGlyZWN0bHkgdGhlIGludGVycnVwdGVkCisgICAgIHN5c2NhbGwpCisgICAtIERvbid0IHJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIHN5c2NhbGxzLiAqLworc3RhdGljIGludAorcHl1cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgYmxvY2tpbmcsIGludCByYWlzZSkKK3sKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKKyAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbHNlCisgICAgcmV0dXJuIGRldl91cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgYmxvY2tpbmcsIHJhaXNlKTsKKyNlbmRpZgorfQorCiAvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQogICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgc3VpdGFibGUgZm9yIG1vc3QgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcwogICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgogCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyLCB0aGUgZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyB1c2VkIGluIGJsb2NraW5nIG1vZGU6CisgICBibG9jayB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkICgxMjggYml0cyBhcmUKKyAgIGNvbGxlY3RlZCBieSB0aGUga2VybmVsKS4KKworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBpbnQKIF9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDEsIDEpOworfQogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl91cmFuZG9tKCh1bnNpZ25lZCBjaGFyICopYnVmZmVyLCBzaXplLCAxKTsKLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLSAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIDApOwotI2Vsc2UKLSAgICByZXR1cm4gZGV2X3VyYW5kb21fcHl0aG9uKChjaGFyKilidWZmZXIsIHNpemUpOwotI2VuZGlmCisvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQorICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgbm90IHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCisKKyAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyICh3aGVuIGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgdXNlZCksIGlmIHRoZSBzeXN0ZW0KKyAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpemVkIHlldCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgIndlYWsiIGVudHJvcHkgcmVhZAorICAgZnJvbSAvZGV2L3VyYW5kb20uCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworaW50CitfUHlPU19VUmFuZG9tTm9uYmxvY2sodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDAsIDEpOwogfQogCiB2b2lkCkBAIC00MzAsNyArNDM2LDcgQEAKICAgICBjaGFyICplbnY7CiAgICAgdW5zaWduZWQgY2hhciAqc2VjcmV0ID0gKHVuc2lnbmVkIGNoYXIgKikmX1B5X0hhc2hTZWNyZXQudWM7CiAgICAgUHlfc3NpemVfdCBzZWNyZXRfc2l6ZSA9IHNpemVvZihfUHlfSGFzaFNlY3JldF90KTsKLSAgICBhc3NlcnQoc2VjcmV0X3NpemUgPT0gc2l6ZW9mKF9QeV9IYXNoU2VjcmV0LnVjKSk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihfUHlfSGFzaFNlY3JldF90KSA9PSBzaXplb2YoX1B5X0hhc2hTZWNyZXQudWMpKTsKIAogICAgIGlmIChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDYyLDEzICs0NjgsMTcgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICh2b2lkKXdpbjMyX3VyYW5kb20oc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMCk7Ci0jZWxpZiBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0gICAgICAgICh2b2lkKXB5X2dldGVudHJvcHkoc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMSk7Ci0jZWxzZQotICAgICAgICBkZXZfdXJhbmRvbV9ub3JhaXNlKHNlY3JldCwgc2VjcmV0X3NpemUpOwotI2VuZGlmCisgICAgICAgIGludCByZXM7CisKKyAgICAgICAgLyogX1B5UmFuZG9tX0luaXQoKSBpcyBjYWxsZWQgdmVyeSBlYXJseSBpbiB0aGUgUHl0aG9uIGluaXRpYWxpemF0aW9uCisgICAgICAgICAgIGFuZCBzbyBleGNlcHRpb25zIGNhbm5vdCBiZSB1c2VkICh1c2UgcmFpc2U9MCkuCisKKyAgICAgICAgICAgX1B5UmFuZG9tX0luaXQoKSBtdXN0IG5vdCBibG9jayBQeXRob24gaW5pdGlhbGl6YXRpb246IGNhbGwKKyAgICAgICAgICAgcHl1cmFuZG9tKCkgaXMgbm9uLWJsb2NraW5nIG1vZGUgKGJsb2NraW5nPTApOiBzZWUgdGhlIFBFUCA1MjQuICovCisgICAgICAgIHJlcyA9IHB5dXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwLCAwKTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWxlZCB0byBnZXQgcmFuZG9tIG51bWJlcnMgdG8gaW5pdGlhbGl6ZSBQeXRob24iKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3N0cnVjdG1lbWJlci5jIGIvUHl0aG9uL3N0cnVjdG1lbWJlci5jCmluZGV4IGFmMDI5NmQuLjg2ZDRjNjYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zdHJ1Y3RtZW1iZXIuYworKysgYi9QeXRob24vc3RydWN0bWVtYmVyLmMKQEAgLTc0LDE0ICs3NCwxMiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBsLT5uYW1lKTsKICAgICAgICAgUHlfWElOQ1JFRih2KTsKICAgICAgICAgYnJlYWs7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlIFRfTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCooUFlfTE9OR19MT05HICopYWRkcik7CisgICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCoobG9uZyBsb25nICopYWRkcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVF9VTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKih1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhZGRyKTsKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFkZHIpOwogICAgICAgICBicmVhazsKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogICAgIGNhc2UgVF9OT05FOgogICAgICAgICB2ID0gUHlfTm9uZTsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMjY2LDI3ICsyNjQsMjUgQEAKICAgICBjYXNlIFRfU1RSSU5HX0lOUExBQ0U6CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZWFkb25seSBhdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIC0xOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSBUX0xPTkdMT05HOnsKLSAgICAgICAgUFlfTE9OR19MT05HIHZhbHVlOwotICAgICAgICAqKFBZX0xPTkdfTE9ORyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CisgICAgICAgIGxvbmcgbG9uZyB2YWx1ZTsKKyAgICAgICAgKihsb25nIGxvbmcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdMb25nKHYpOwogICAgICAgICBpZiAoKHZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIGNhc2UgVF9VTE9OR0xPTkc6ewotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZTsKICAgICAgICAgLyogPz8/IFB5TG9uZ19Bc0xvbmdMb25nIGFjY2VwdHMgYW4gaW50LCBidXQgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwogICAgICAgICAgICAgZG9lc24ndCA/Pz8gKi8KICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkKLSAgICAgICAgICAgICoodW5zaWduZWQgUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHYpOworICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nIGxvbmcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICoodW5zaWduZWQgUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nKHYpOwotICAgICAgICBpZiAoKHZhbHVlID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICAgICAgaWYgKCh2YWx1ZSA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBicmVhazsKICAgICAgICAgfQotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImJhZCBtZW1iZXJkZXNjciB0eXBlIGZvciAlcyIsIGwtPm5hbWUpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5bXRhYmxlLmMgYi9QeXRob24vc3ltdGFibGUuYwppbmRleCAxNTkxYTIwLi5iZjMwZWNjIDEwMDY0NAotLS0gYS9QeXRob24vc3ltdGFibGUuYworKysgYi9QeXRob24vc3ltdGFibGUuYwpAQCAtNiwxNiArNiwyMiBAQAogCiAvKiBlcnJvciBzdHJpbmdzIHVzZWQgZm9yIHdhcm5pbmdzICovCiAjZGVmaW5lIEdMT0JBTF9BRlRFUl9BU1NJR04gXAotIm5hbWUgJyUuNDAwcycgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBOT05MT0NBTF9BRlRFUl9BU1NJR04gXAotIm5hbWUgJyUuNDAwcycgaXMgYXNzaWduZWQgdG8gYmVmb3JlIG5vbmxvY2FsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgbm9ubG9jYWwgZGVjbGFyYXRpb24iCiAKICNkZWZpbmUgR0xPQkFMX0FGVEVSX1VTRSBcCi0ibmFtZSAnJS40MDBzJyBpcyB1c2VkIHByaW9yIHRvIGdsb2JhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgdXNlZCBwcmlvciB0byBnbG9iYWwgZGVjbGFyYXRpb24iCiAKICNkZWZpbmUgTk9OTE9DQUxfQUZURVJfVVNFIFwKLSJuYW1lICclLjQwMHMnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24iCisibmFtZSAnJVUnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24iCisKKyNkZWZpbmUgR0xPQkFMX0FOTk9UIFwKKyJhbm5vdGF0ZWQgbmFtZSAnJVUnIGNhbid0IGJlIGdsb2JhbCIKKworI2RlZmluZSBOT05MT0NBTF9BTk5PVCBcCisiYW5ub3RhdGVkIG5hbWUgJyVVJyBjYW4ndCBiZSBub25sb2NhbCIKIAogI2RlZmluZSBJTVBPUlRfU1RBUl9XQVJOSU5HICJpbXBvcnQgKiBvbmx5IGFsbG93ZWQgYXQgbW9kdWxlIGxldmVsIgogCkBAIC02Myw2ICs2OSw3IEBACiAgICAgICAgIHN0ZS0+c3RlX25lc3RlZCA9IDE7CiAgICAgc3RlLT5zdGVfY2hpbGRfZnJlZSA9IDA7CiAgICAgc3RlLT5zdGVfZ2VuZXJhdG9yID0gMDsKKyAgICBzdGUtPnN0ZV9jb3JvdXRpbmUgPSAwOwogICAgIHN0ZS0+c3RlX3JldHVybnNfdmFsdWUgPSAwOwogICAgIHN0ZS0+c3RlX25lZWRzX2NsYXNzX2Nsb3N1cmUgPSAwOwogCkBAIC0xNjAsNyArMTY3LDYgQEAKIH07CiAKIHN0YXRpYyBpbnQgc3ltdGFibGVfYW5hbHl6ZShzdHJ1Y3Qgc3ltdGFibGUgKnN0KTsKLXN0YXRpYyBpbnQgc3ltdGFibGVfd2FybihzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBjaGFyICptc2csIGludCBsaW5lbm8pOwogc3RhdGljIGludCBzeW10YWJsZV9lbnRlcl9ibG9jayhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpZGVudGlmaWVyIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9ibG9ja190eSBibG9jaywgdm9pZCAqYXN0LCBpbnQgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCk7CkBAIC0zNzgsNyArMzg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShkYXRhLCAyKSkpOwogCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSAgIAorICAgICAgICB9CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJCVUc6IGludGVybmFsIGRpcmVjdGl2ZSBib29ra2VlcGluZyBicm9rZW4iKTsKQEAgLTY1Miw3ICs2NTgsNyBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgLyogSGFuZGxlIGdsb2JhbCBzeW1ib2wgKi8KLSAgICAgICAgaWYgKCFQeVNldF9Db250YWlucyhib3VuZCwgbmFtZSkpIHsKKyAgICAgICAgaWYgKGJvdW5kICYmICFQeVNldF9Db250YWlucyhib3VuZCwgbmFtZSkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICAgICAgICAgIGNvbnRpbnVlOyAgICAgICAvKiBpdCdzIGEgZ2xvYmFsICovCiAgICAgICAgIH0KQEAgLTkwNiwyNyArOTEyLDYgQEAKICAgICByZXR1cm4gcjsKIH0KIAotCi1zdGF0aWMgaW50Ci1zeW10YWJsZV93YXJuKHN0cnVjdCBzeW10YWJsZSAqc3QsIGNoYXIgKm1zZywgaW50IGxpbmVubykKLXsKLSAgICBQeU9iamVjdCAqbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1zZyk7Ci0gICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdChQeUV4Y19TeW50YXhXYXJuaW5nLCBtZXNzYWdlLCBzdC0+c3RfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIE5VTEwsIE5VTEwpIDwgMCkgICAgIHsKLSAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TeW50YXhXYXJuaW5nKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5bnRheEVycm9yLCBtc2cpOwotICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLCBzdC0+c3RfY3VyLT5zdGVfbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2NvbF9vZmZzZXQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBQeV9ERUNSRUYobWVzc2FnZSk7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KIC8qIHN5bXRhYmxlX2VudGVyX2Jsb2NrKCkgZ2V0cyBhIHJlZmVyZW5jZSB2aWEgc3RlX25ldy4KICAgIFRoaXMgcmVmZXJlbmNlIGlzIHJlbGVhc2VkIHdoZW4gdGhlIGJsb2NrIGlzIGV4aXRlZCwgdmlhIHRoZSBERUNSRUYKICAgIGluIHN5bXRhYmxlX2V4aXRfYmxvY2soKS4KQEAgLTEyMDEsNiArMTE4Niw0MyBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQXNzaWduLnRhcmdldHMpOwogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3NpZ24udmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICBpZiAocy0+di5Bbm5Bc3NpZ24udGFyZ2V0LT5raW5kID09IE5hbWVfa2luZCkgeworICAgICAgICAgICAgZXhwcl90eSBlX25hbWUgPSBzLT52LkFubkFzc2lnbi50YXJnZXQ7CisgICAgICAgICAgICBsb25nIGN1ciA9IHN5bXRhYmxlX2xvb2t1cChzdCwgZV9uYW1lLT52Lk5hbWUuaWQpOworICAgICAgICAgICAgaWYgKGN1ciA8IDApIHsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoY3VyICYgKERFRl9HTE9CQUwgfCBERUZfTk9OTE9DQUwpKQorICAgICAgICAgICAgICAgICYmIHMtPnYuQW5uQXNzaWduLnNpbXBsZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyICYgREVGX0dMT0JBTCA/IEdMT0JBTF9BTk5PVCA6IE5PTkxPQ0FMX0FOTk9ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlX25hbWUtPnYuTmFtZS5pZCk7CisgICAgICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi5zaW1wbGUgJiYKKyAgICAgICAgICAgICAgICAhc3ltdGFibGVfYWRkX2RlZihzdCwgZV9uYW1lLT52Lk5hbWUuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0FOTk9UIHwgREVGX0xPQ0FMKSkgeworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnZhbHVlCisgICAgICAgICAgICAgICAgICAgICYmICFzeW10YWJsZV9hZGRfZGVmKHN0LCBlX25hbWUtPnYuTmFtZS5pZCwgREVGX0xPQ0FMKSkgeworICAgICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24udGFyZ2V0KTsKKyAgICAgICAgfQorICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi52YWx1ZSkgeworICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQW5uQXNzaWduLnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5BdWdBc3NpZ24udGFyZ2V0KTsKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQXVnQXNzaWduLnZhbHVlKTsKQEAgLTEyNTgsMjEgKzEyODAsMjEgQEAKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwotICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0FGVEVSX0FTU0lHTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX25hbWUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9BRlRFUl9VU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX3dhcm4oc3QsIGJ1Ziwgcy0+bGluZW5vKSkKLSAgICAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSB8IERFRl9BTk5PVCkpIHsKKyAgICAgICAgICAgICAgICBjaGFyKiBtc2c7CisgICAgICAgICAgICAgICAgaWYgKGN1ciAmIFVTRSkgeworICAgICAgICAgICAgICAgICAgICBtc2cgPSBHTE9CQUxfQUZURVJfVVNFOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VyICYgREVGX0FOTk9UKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IEdMT0JBTF9BTk5PVDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAgLyogREVGX0xPQ0FMICovCisgICAgICAgICAgICAgICAgICAgIG1zZyA9IEdMT0JBTF9BRlRFUl9BU1NJR047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBuYW1lLCBERUZfR0xPQkFMKSkKICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKQEAgLTEyODksMjEgKzEzMTEsMjAgQEAKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwotICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OTE9DQUxfQUZURVJfQVNTSUdOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OTE9DQUxfQUZURVJfVVNFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzeW10YWJsZV93YXJuKHN0LCBidWYsIHMtPmxpbmVubykpCi0gICAgICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UgfCBERUZfQU5OT1QpKSB7CisgICAgICAgICAgICAgICAgY2hhciogbXNnOworICAgICAgICAgICAgICAgIGlmIChjdXIgJiBVU0UpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQUZURVJfVVNFOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VyICYgREVGX0FOTk9UKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IE5PTkxPQ0FMX0FOTk9UOworICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAvKiBERUZfTE9DQUwgKi8KKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQUZURVJfQVNTSUdOOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3ludGF4RXJyb3IsIG1zZywgbmFtZSk7CisgICAgICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgbmFtZSwgREVGX05PTkxPQ0FMKSkKICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKQEAgLTEzNDEsNiArMTM2Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25CbG9jaywgKHZvaWQgKilzLCBzLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCkpCiAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CiAgICAgICAgIFZJU0lUKHN0LCBhcmd1bWVudHMsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzKTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkFzeW5jRnVuY3Rpb25EZWYuYm9keSk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgcykpCkBAIC0xNDM2LDcgKzE0NTgsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIEF3YWl0X2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkF3YWl0LnZhbHVlKTsKLSAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IDE7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9jb3JvdXRpbmUgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5sZWZ0KTsKQEAgLTE0NDcsNiArMTQ2OSwxNSBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuQ2FsbC5hcmdzKTsKICAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwga2V5d29yZCwgZS0+di5DYWxsLmtleXdvcmRzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgorICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSk7CisgICAgICAgIGlmIChlLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKQorICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuSm9pbmVkU3RyLnZhbHVlcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKICAgICBjYXNlIE51bV9raW5kOgogICAgIGNhc2UgU3RyX2tpbmQ6CiAgICAgY2FzZSBCeXRlc19raW5kOgpAQCAtMTY0Nyw2ICsxNjc4LDkgQEAKICAgICBWSVNJVChzdCwgZXhwciwgbGMtPnRhcmdldCk7CiAgICAgVklTSVQoc3QsIGV4cHIsIGxjLT5pdGVyKTsKICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGxjLT5pZnMpOworICAgIGlmIChsYy0+aXNfYXN5bmMpIHsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CisgICAgfQogICAgIHJldHVybiAxOwogfQogCkBAIC0xNjk5LDYgKzE3MzMsOSBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IGlzX2dlbmVyYXRvcjsKKyAgICBpZiAob3V0ZXJtb3N0LT5pc19hc3luYykgeworICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29yb3V0aW5lID0gMTsKKyAgICB9CiAgICAgLyogT3V0ZXJtb3N0IGl0ZXIgaXMgcmVjZWl2ZWQgYXMgYW4gYXJndW1lbnQgKi8KICAgICBpZiAoIXN5bXRhYmxlX2ltcGxpY2l0X2FyZyhzdCwgMCkpIHsKICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgKHZvaWQgKillKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwppbmRleCBmNjg4MzQ5Li41ZGQwZDEwIDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKIAogI2luY2x1ZGUgIm9zZGVmcy5oIgorI2luY2x1ZGUgPGxvY2FsZS5oPgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCkBAIC0zMyw3ICszNCw2IEBACiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfTEFOR0lORk9fSAotI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgPGxhbmdpbmZvLmg+CiAjZW5kaWYKIApAQCAtMzExLDYgKzMxMSwyMyBAQAogKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK3N5c19nZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycykKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAiZmlsZXN5c3RlbSBlbmNvZGluZyBpcyBub3QgaW5pdGlhbGl6ZWQiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnNfZG9jLAorICAgICJnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKCkgLT4gc3RyaW5nXG5cCitcblwKK1JldHVybiB0aGUgZXJyb3IgbW9kZSB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZSBmaWxlbmFtZXMgaW5cblwKK29wZXJhdGluZyBzeXN0ZW0gZmlsZW5hbWVzLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCiBzeXNfaW50ZXJuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqczsKQEAgLTM0Niw4ICszNjMsMTAgQEAKIHN0YXRpYyBpbnQKIHRyYWNlX2luaXQodm9pZCkKIHsKLSAgICBzdGF0aWMgY2hhciAqd2hhdG5hbWVzWzddID0geyJjYWxsIiwgImV4Y2VwdGlvbiIsICJsaW5lIiwgInJldHVybiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY19jYWxsIiwgImNfZXhjZXB0aW9uIiwgImNfcmV0dXJuIn07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB3aGF0bmFtZXNbN10gPSB7CisgICAgICAgICJjYWxsIiwgImV4Y2VwdGlvbiIsICJsaW5lIiwgInJldHVybiIsCisgICAgICAgICJjX2NhbGwiLCAiY19leGNlcHRpb24iLCAiY19yZXR1cm4iCisgICAgfTsKICAgICBQeU9iamVjdCAqbmFtZTsKICAgICBpbnQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgKytpKSB7CkBAIC0zNjYsMzQgKzM4NSwyNSBAQAogY2FsbF90cmFtcG9saW5lKFB5T2JqZWN0KiBjYWxsYmFjaywKICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmcmFtZSwgaW50IHdoYXQsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgUHlPYmplY3QgKndoYXRzdHI7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc3RhY2tbM107CiAKLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICBpZiAoUHlGcmFtZV9GYXN0VG9Mb2NhbHNXaXRoRXJyb3IoZnJhbWUpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlGcmFtZV9GYXN0VG9Mb2NhbHNXaXRoRXJyb3IoZnJhbWUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgUHlfSU5DUkVGKGZyYW1lKTsKLSAgICB3aGF0c3RyID0gd2hhdHN0cmluZ3Nbd2hhdF07Ci0gICAgUHlfSU5DUkVGKHdoYXRzdHIpOwotICAgIGlmIChhcmcgPT0gTlVMTCkKLSAgICAgICAgYXJnID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoYXJnKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCAqKWZyYW1lKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIHdoYXRzdHIpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMiwgYXJnKTsKKyAgICBzdGFja1swXSA9IChQeU9iamVjdCAqKWZyYW1lOworICAgIHN0YWNrWzFdID0gd2hhdHN0cmluZ3Nbd2hhdF07CisgICAgc3RhY2tbMl0gPSAoYXJnICE9IE5VTEwpID8gYXJnIDogUHlfTm9uZTsKIAogICAgIC8qIGNhbGwgdGhlIFB5dGhvbi1sZXZlbCBmdW5jdGlvbiAqLwotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KGNhbGxiYWNrLCBhcmdzKTsKLSAgICBQeUZyYW1lX0xvY2Fsc1RvRmFzdChmcmFtZSwgMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBQeVRyYWNlQmFja19IZXJlKGZyYW1lKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGJhY2ssIHN0YWNrLCAzKTsKIAotICAgIC8qIGNsZWFudXAgKi8KLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgUHlGcmFtZV9Mb2NhbHNUb0Zhc3QoZnJhbWUsIDEpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeVRyYWNlQmFja19IZXJlKGZyYW1lKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzQsMTAgKzQ0NCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKHJlc3VsdCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gZnJhbWUtPmZfdHJhY2U7Ci0gICAgICAgIGZyYW1lLT5mX3RyYWNlID0gTlVMTDsKLSAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgZnJhbWUtPmZfdHJhY2UgPSByZXN1bHQ7CisgICAgICAgIFB5X1hTRVRSRUYoZnJhbWUtPmZfdHJhY2UsIHJlc3VsdCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTYwMiwzMyArNjA5LDYgQEAKIAogI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCiAKLSNpZmRlZiBXSVRIX1RTQwotc3RhdGljIFB5T2JqZWN0ICoKLXN5c19zZXR0c2NkdW1wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgYm9vbDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNldHRzY2R1bXAiLCAmYm9vbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChib29sKQotICAgICAgICB0c3RhdGUtPmludGVycC0+dHNjZHVtcCA9IDE7Ci0gICAgZWxzZQotICAgICAgICB0c3RhdGUtPmludGVycC0+dHNjZHVtcCA9IDA7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotCi19Ci0KLVB5RG9jX1NUUlZBUihzZXR0c2NkdW1wX2RvYywKLSJzZXR0c2NkdW1wKGJvb2wpXG5cCi1cblwKLUlmIHRydWUsIHRlbGwgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0byBkdW1wIFZNIG1lYXN1cmVtZW50cyB0b1xuXAotc3RkZXJyLiAgSWYgZmFsc2UsIHR1cm4gb2ZmIGR1bXAuICBUaGUgbWVhc3VyZW1lbnRzIGFyZSBiYXNlZCBvbiB0aGVcblwKLXByb2Nlc3NvcidzIHRpbWUtc3RhbXAgY291bnRlci4iCi0pOwotI2VuZGlmIC8qIFRTQyAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3lzX3NldHJlY3Vyc2lvbmxpbWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTcxMCw2ICs2OTAsMTEzIEBACiApOwogCiAKK3N0YXRpYyBQeVR5cGVPYmplY3QgQXN5bmNHZW5Ib29rc1R5cGU7CisKK1B5RG9jX1NUUlZBUihhc3luY2dlbl9ob29rc19kb2MsCisiYXN5bmNnZW5faG9va3NcblwKK1xuXAorQSBzdHJ1Y3Qgc2VxdWVuY2UgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGFzeW5ocm9ub3VzXG5cCitnZW5lcmF0b3JzIGhvb2tzLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgYXN5bmNnZW5faG9va3NfZmllbGRzW10gPSB7CisgICAgeyJmaXJzdGl0ZXIiLCAiSG9vayB0byBpbnRlcmNlcHQgZmlyc3QgaXRlcmF0aW9uIn0sCisgICAgeyJmaW5hbGl6ZXIiLCAiSG9vayB0byBpbnRlcmNlcHQgZmluYWxpemF0aW9uIn0sCisgICAgezB9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIGFzeW5jZ2VuX2hvb2tzX2Rlc2MgPSB7CisgICAgImFzeW5jZ2VuX2hvb2tzIiwgICAgICAgICAgLyogbmFtZSAqLworICAgIGFzeW5jZ2VuX2hvb2tzX2RvYywgICAgICAgIC8qIGRvYyAqLworICAgIGFzeW5jZ2VuX2hvb2tzX2ZpZWxkcyAsICAgIC8qIGZpZWxkcyAqLworICAgIDIKK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK3N5c19zZXRfYXN5bmNnZW5faG9va3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImZpcnN0aXRlciIsICJmaW5hbGl6ZXIiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmluYWxpemVyID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKAorICAgICAgICAgICAgYXJncywga3csICJ8T08iLCBrZXl3b3JkcywKKyAgICAgICAgICAgICZmaXJzdGl0ZXIsICZmaW5hbGl6ZXIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmaW5hbGl6ZXIgJiYgZmluYWxpemVyICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZpbmFsaXplcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIGZpbmFsaXplciBleHBlY3RlZCwgZ290ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGZpbmFsaXplciktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihmaW5hbGl6ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChmaW5hbGl6ZXIgPT0gUHlfTm9uZSkgeworICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmluYWxpemVyKE5VTEwpOworICAgIH0KKworICAgIGlmIChmaXJzdGl0ZXIgJiYgZmlyc3RpdGVyICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZpcnN0aXRlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIGZpcnN0aXRlciBleHBlY3RlZCwgZ290ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGZpcnN0aXRlciktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihmaXJzdGl0ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChmaXJzdGl0ZXIgPT0gUHlfTm9uZSkgeworICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmlyc3RpdGVyKE5VTEwpOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0X2FzeW5jZ2VuX2hvb2tzX2RvYywKKyJzZXRfYXN5bmNnZW5faG9va3MoKiwgZmlyc3RpdGVyPU5vbmUsIGZpbmFsaXplcj1Ob25lKVxuXAorXG5cCitTZXQgYSBmaW5hbGl6ZXIgZm9yIGFzeW5jIGdlbmVyYXRvcnMgb2JqZWN0cy4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2dldF9hc3luY2dlbl9ob29rcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyID0gX1B5RXZhbF9HZXRBc3luY0dlbkZpcnN0aXRlcigpOworICAgIFB5T2JqZWN0ICpmaW5hbGl6ZXIgPSBfUHlFdmFsX0dldEFzeW5jR2VuRmluYWxpemVyKCk7CisKKyAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmQXN5bmNHZW5Ib29rc1R5cGUpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZmlyc3RpdGVyID09IE5VTEwpIHsKKyAgICAgICAgZmlyc3RpdGVyID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBpZiAoZmluYWxpemVyID09IE5VTEwpIHsKKyAgICAgICAgZmluYWxpemVyID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZmlyc3RpdGVyKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgZmlyc3RpdGVyKTsKKworICAgIFB5X0lOQ1JFRihmaW5hbGl6ZXIpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAxLCBmaW5hbGl6ZXIpOworCisgICAgcmV0dXJuIHJlczsKK30KKworUHlEb2NfU1RSVkFSKGdldF9hc3luY2dlbl9ob29rc19kb2MsCisiZ2V0X2FzeW5jZ2VuX2hvb2tzKClcblwKK1xuXAorUmV0dXJuIGEgbmFtZWR0dXBsZSBvZiBpbnN0YWxsZWQgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMgaG9va3MgXAorKGZpcnN0aXRlciwgZmluYWxpemVyKS4iCispOworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgSGFzaF9JbmZvVHlwZTsKIAogUHlEb2NfU1RSVkFSKGhhc2hfaW5mb19kb2MsCkBAIC04MDcsMTAgKzg5NCwxMSBAQAogVGhlIG1lbWJlcnMgYXJlIG5hbWVkOiBtYWpvciwgbWlub3IsIGJ1aWxkLCBwbGF0Zm9ybSwgc2VydmljZV9wYWNrLFxuXAogc2VydmljZV9wYWNrX21ham9yLCBzZXJ2aWNlX3BhY2tfbWlub3IsIHN1aXRlX21hc2ssIGFuZCBwcm9kdWN0X3R5cGUuIEZvclxuXAogYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgb25seSB0aGUgZmlyc3QgNSBpdGVtcyBhcmUgYXZhaWxhYmxlIGJ5IGluZGV4aW5nLlxuXAotQWxsIGVsZW1lbnRzIGFyZSBudW1iZXJzLCBleGNlcHQgc2VydmljZV9wYWNrIHdoaWNoIGlzIGEgc3RyaW5nLiBQbGF0Zm9ybVxuXAotbWF5IGJlIDAgZm9yIHdpbjMycywgMSBmb3IgV2luZG93cyA5eC9NRSwgMiBmb3IgV2luZG93cyBOVC8yMDAwL1hQL1Zpc3RhLzcsXG5cCi0zIGZvciBXaW5kb3dzIENFLiBQcm9kdWN0X3R5cGUgbWF5IGJlIDEgZm9yIGEgd29ya3N0YXRpb24sIDIgZm9yIGEgZG9tYWluXG5cCi1jb250cm9sbGVyLCAzIGZvciBhIHNlcnZlci4iCitBbGwgZWxlbWVudHMgYXJlIG51bWJlcnMsIGV4Y2VwdCBzZXJ2aWNlX3BhY2sgYW5kIHBsYXRmb3JtX3R5cGUgd2hpY2ggYXJlXG5cCitzdHJpbmdzLCBhbmQgcGxhdGZvcm1fdmVyc2lvbiB3aGljaCBpcyBhIDMtdHVwbGUuIFBsYXRmb3JtIGlzIGFsd2F5cyAyLlxuXAorUHJvZHVjdF90eXBlIG1heSBiZSAxIGZvciBhIHdvcmtzdGF0aW9uLCAyIGZvciBhIGRvbWFpbiBjb250cm9sbGVyLCAzIGZvciBhXG5cCitzZXJ2ZXIuIFBsYXRmb3JtX3ZlcnNpb24gaXMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgYSB2ZXJzaW9uIG51bWJlciB0aGF0IGlzXG5cCitpbnRlbmRlZCBmb3IgaWRlbnRpZnlpbmcgdGhlIE9TIHJhdGhlciB0aGFuIGZlYXR1cmUgZGV0ZWN0aW9uLiIKICk7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgV2luZG93c1ZlcnNpb25UeXBlID0gezAsIDAsIDAsIDAsIDAsIDB9OwpAQCAtODI1LDcgKzkxMyw3IEBACiAgICAgeyJzZXJ2aWNlX3BhY2tfbWlub3IiLCAiU2VydmljZSBQYWNrIG1pbm9yIHZlcnNpb24gbnVtYmVyIn0sCiAgICAgeyJzdWl0ZV9tYXNrIiwgIkJpdCBtYXNrIGlkZW50aWZ5aW5nIGF2YWlsYWJsZSBwcm9kdWN0IHN1aXRlcyJ9LAogICAgIHsicHJvZHVjdF90eXBlIiwgIlN5c3RlbSBwcm9kdWN0IHR5cGUifSwKLSAgICB7Il9wbGF0Zm9ybV92ZXJzaW9uIiwgIkRpYWdub3N0aWMgdmVyc2lvbiBudW1iZXIifSwKKyAgICB7InBsYXRmb3JtX3ZlcnNpb24iLCAiRGlhZ25vc3RpYyB2ZXJzaW9uIG51bWJlciJ9LAogICAgIHswfQogfTsKIApAQCAtOTEzLDYgKzEwMDEsMjQgQEAKIAogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAorUHlEb2NfU1RSVkFSKGVuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nX2RvYywKKyJfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcoKVxuXAorXG5cCitDaGFuZ2VzIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcgdG8gbWJjczpyZXBsYWNlIGZvciBjb25zaXN0ZW5jeVxuXAord2l0aCBlYXJsaWVyIHZlcnNpb25zIG9mIFB5dGhvbi4gU2VlIFBFUCA1MjkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cCitcblwKK1RoaXMgaXMgZXF1aXZhbGVudCB0byBkZWZpbmluZyB0aGUgUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkcgXG5cCitlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUgbGF1bmNoaW5nIFB5dGhvbi4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CisgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAicmVwbGFjZSI7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKICNpZmRlZiBIQVZFX0RMT1BFTgpAQCAtMTE4OSw4ICsxMjk1LDEwIEBACiBzeXNfZGVidWdtYWxsb2NzdGF0cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAjaWZkZWYgV0lUSF9QWU1BTExPQwotICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7Ci0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBpZiAoX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCgpKSB7CisgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisgICAgICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgfQogI2VuZGlmCiAgICAgX1B5T2JqZWN0X0RlYnVnVHlwZVN0YXRzKHN0ZGVycik7CiAKQEAgLTEyNzAsNiArMTM3OCw4IEBACiAjZW5kaWYKICAgICB7ImdldGZpbGVzeXN0ZW1lbmNvZGluZyIsIChQeUNGdW5jdGlvbilzeXNfZ2V0ZmlsZXN5c3RlbWVuY29kaW5nLAogICAgICBNRVRIX05PQVJHUywgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nX2RvY30sCisgICAgeyAiZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycyIsIChQeUNGdW5jdGlvbilzeXNfZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycywKKyAgICAgTUVUSF9OT0FSR1MsIGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnNfZG9jIH0sCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwogICAgIHsiZ2V0b2JqZWN0cyIsICAgICAgX1B5X0dldE9iamVjdHMsIE1FVEhfVkFSQVJHU30sCiAjZW5kaWYKQEAgLTEyODUsNiArMTM5NSw4IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHsiZ2V0d2luZG93c3ZlcnNpb24iLCAoUHlDRnVuY3Rpb24pc3lzX2dldHdpbmRvd3N2ZXJzaW9uLCBNRVRIX05PQVJHUywKICAgICAgZ2V0d2luZG93c3ZlcnNpb25fZG9jfSwKKyAgICB7Il9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZyIsIChQeUNGdW5jdGlvbilzeXNfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcsCisgICAgIE1FVEhfTk9BUkdTLCBlbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZ19kb2MgfSwKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgeyJpbnRlcm4iLCAgICAgICAgICBzeXNfaW50ZXJuLCAgICAgTUVUSF9WQVJBUkdTLCBpbnRlcm5fZG9jfSwKICAgICB7ImlzX2ZpbmFsaXppbmciLCAgIHN5c19pc19maW5hbGl6aW5nLCBNRVRIX05PQVJHUywgaXNfZmluYWxpemluZ19kb2N9LApAQCAtMTMwOSw5ICsxNDIxLDYgQEAKICAgICB7ImdldHByb2ZpbGUiLCAgICAgIHN5c19nZXRwcm9maWxlLCBNRVRIX05PQVJHUywgZ2V0cHJvZmlsZV9kb2N9LAogICAgIHsic2V0cmVjdXJzaW9ubGltaXQiLCBzeXNfc2V0cmVjdXJzaW9ubGltaXQsIE1FVEhfVkFSQVJHUywKICAgICAgc2V0cmVjdXJzaW9ubGltaXRfZG9jfSwKLSNpZmRlZiBXSVRIX1RTQwotICAgIHsic2V0dHNjZHVtcCIsIHN5c19zZXR0c2NkdW1wLCBNRVRIX1ZBUkFSR1MsIHNldHRzY2R1bXBfZG9jfSwKLSNlbmRpZgogICAgIHsic2V0dHJhY2UiLCAgICAgICAgc3lzX3NldHRyYWNlLCBNRVRIX08sIHNldHRyYWNlX2RvY30sCiAgICAgeyJnZXR0cmFjZSIsICAgICAgICBzeXNfZ2V0dHJhY2UsIE1FVEhfTk9BUkdTLCBnZXR0cmFjZV9kb2N9LAogICAgIHsiY2FsbF90cmFjaW5nIiwgc3lzX2NhbGxfdHJhY2luZywgTUVUSF9WQVJBUkdTLCBjYWxsX3RyYWNpbmdfZG9jfSwKQEAgLTEzMjEsNiArMTQzMCwxMCBAQAogICAgICBzZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jfSwKICAgICB7ImdldF9jb3JvdXRpbmVfd3JhcHBlciIsIHN5c19nZXRfY29yb3V0aW5lX3dyYXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBnZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jfSwKKyAgICB7InNldF9hc3luY2dlbl9ob29rcyIsIChQeUNGdW5jdGlvbilzeXNfc2V0X2FzeW5jZ2VuX2hvb2tzLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzZXRfYXN5bmNnZW5faG9va3NfZG9jfSwKKyAgICB7ImdldF9hc3luY2dlbl9ob29rcyIsIHN5c19nZXRfYXN5bmNnZW5faG9va3MsIE1FVEhfTk9BUkdTLAorICAgICBnZXRfYXN5bmNnZW5faG9va3NfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTUwMSwxNCArMTYxNCwyMSBAQAogdmVyc2lvbl9pbmZvIC0tIHZlcnNpb24gaW5mb3JtYXRpb24gYXMgYSBuYW1lZCB0dXBsZVxuXAogIgogKQotI2lmZGVmIE1TX1dJTkRPV1MKKyNpZmRlZiBNU19DT1JFRExMCiAvKiBjb25jYXRlbmF0aW5nIHN0cmluZyBoZXJlICovCiBQeURvY19TVFIoCiAiZGxsaGFuZGxlIC0tIFtXaW5kb3dzIG9ubHldIGludGVnZXIgaGFuZGxlIG9mIHRoZSBQeXRob24gRExMXG5cCiB3aW52ZXIgLS0gW1dpbmRvd3Mgb25seV0gdmVyc2lvbiBudW1iZXIgb2YgdGhlIFB5dGhvbiBETExcblwKICIKICkKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogTVNfQ09SRURMTCAqLworI2lmZGVmIE1TX1dJTkRPV1MKKy8qIGNvbmNhdGVuYXRpbmcgc3RyaW5nIGhlcmUgKi8KK1B5RG9jX1NUUigKKyJfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcgLS0gW1dpbmRvd3Mgb25seV0gXG5cCisiCispCisjZW5kaWYKIFB5RG9jX1NUUigKICJfX3N0ZGluX18gLS0gdGhlIG9yaWdpbmFsIHN0ZGluOyBkb24ndCB0b3VjaCFcblwKIF9fc3Rkb3V0X18gLS0gdGhlIG9yaWdpbmFsIHN0ZG91dDsgZG9uJ3QgdG91Y2ghXG5cCkBAIC0xNjgwLDE1ICsxODAwLDExIEBACiAvKiBzeXMuaW1wbGVtZW50YXRpb24gdmFsdWVzICovCiAjZGVmaW5lIE5BTUUgImNweXRob24iCiBjb25zdCBjaGFyICpfUHlTeXNfSW1wbE5hbWUgPSBOQU1FOwotI2RlZmluZSBRVU9URShhcmcpICNhcmcKLSNkZWZpbmUgU1RSSUZZKG5hbWUpIFFVT1RFKG5hbWUpCi0jZGVmaW5lIE1BSk9SIFNUUklGWShQWV9NQUpPUl9WRVJTSU9OKQotI2RlZmluZSBNSU5PUiBTVFJJRlkoUFlfTUlOT1JfVkVSU0lPTikKKyNkZWZpbmUgTUFKT1IgUHlfU1RSSU5HSUZZKFBZX01BSk9SX1ZFUlNJT04pCisjZGVmaW5lIE1JTk9SIFB5X1NUUklOR0lGWShQWV9NSU5PUl9WRVJTSU9OKQogI2RlZmluZSBUQUcgTkFNRSAiLSIgTUFKT1IgTUlOT1IKIGNvbnN0IGNoYXIgKl9QeVN5c19JbXBsQ2FjaGVUYWcgPSBUQUc7CiAjdW5kZWYgTkFNRQotI3VuZGVmIFFVT1RFCi0jdW5kZWYgU1RSSUZZCiAjdW5kZWYgTUFKT1IKICN1bmRlZiBNSU5PUgogI3VuZGVmIFRBRwpAQCAtMTczMyw2ICsxODQ5LDE2IEBACiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKKyNpZmRlZiBNVUxUSUFSQ0gKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKE1VTFRJQVJDSCk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAiX211bHRpYXJjaCIsIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworI2VuZGlmCisKICAgICAvKiBkaWN0IHJlYWR5ICovCiAKICAgICBucyA9IF9QeU5hbWVzcGFjZV9OZXcoaW1wbF9pbmZvKTsKQEAgLTE5NDMsNiArMjA2OSwxNCBAQAogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInRocmVhZF9pbmZvIiwgUHlUaHJlYWRfR2V0SW5mbygpKTsKICNlbmRpZgogCisgICAgLyogaW5pdGlhbGl6ZSBhc3luY2dlbl9ob29rcyAqLworICAgIGlmIChBc3luY0dlbkhvb2tzVHlwZS50cF9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKAorICAgICAgICAgICAgICAgICZBc3luY0dlbkhvb2tzVHlwZSwgJmFzeW5jZ2VuX2hvb2tzX2Rlc2MpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKICN1bmRlZiBTRVRfU1lTX0ZST01fU1RSSU5HCiAjdW5kZWYgU0VUX1NZU19GUk9NX1NUUklOR19CT1JST1cKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTIwMzksNyArMjE3Myw3IEBACiAjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfUkVBTFBBVEgpCiAgICAgd2NoYXJfdCBmdWxscGF0aFtNQVhQQVRITEVOXTsKLSNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoTVNfV0lOQ0UpCisjZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgd2NoYXJfdCBmdWxscGF0aFtNQVhfUEFUSF07CiAjZW5kaWYKIApAQCAtMjA3OCwxMCArMjIxMiw4IEBACiAjaWYgU0VQID09ICdcXCcgLyogU3BlY2lhbCBjYXNlIGZvciBNUyBmaWxlbmFtZSBzeW50YXggKi8KICAgICBpZiAoX0hBVkVfU0NSSVBUX0FSR1VNRU5UKGFyZ2MsIGFyZ3YpKSB7CiAgICAgICAgIHdjaGFyX3QgKnE7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChNU19XSU5DRSkKLSAgICAgICAgLyogVGhpcyBjb2RlIGhlcmUgcmVwbGFjZXMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYXJndiB3aXRoIHRoZSBmdWxsCi0gICAgICAgIHBhdGggdGhhdCBpdCByZXByZXNlbnRzLiBVbmRlciBDRSwgdGhlcmUgYXJlIG5vIHJlbGF0aXZlIHBhdGhzIHNvCi0gICAgICAgIHRoZSBhcmd1bWVudCBtdXN0IGJlIHRoZSBmdWxsIHBhdGggYW55d2F5LiAqLworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICAgICAgLyogUmVwbGFjZSB0aGUgZmlyc3QgZWxlbWVudCBpbiBhcmd2IHdpdGggdGhlIGZ1bGwgcGF0aC4gKi8KICAgICAgICAgd2NoYXJfdCAqcHRlbXA7CiAgICAgICAgIGlmIChHZXRGdWxsUGF0aE5hbWVXKGFyZ3YwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKGZ1bGxwYXRoKSwKQEAgLTIxNTEsNyArMjI4Myw3IEBACiBzdGF0aWMgaW50CiBzeXNfcHlmaWxlX3dyaXRlX3VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICpmaWxlKQogewotICAgIFB5T2JqZWN0ICp3cml0ZXIgPSBOVUxMLCAqYXJncyA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp3cml0ZXIgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgZXJyOwogCiAgICAgaWYgKGZpbGUgPT0gTlVMTCkKQEAgLTIxNjEsMTEgKzIyOTMsNyBAQAogICAgIGlmICh3cml0ZXIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdW5pY29kZSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KHdyaXRlciwgYXJncyk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKHdyaXRlciwgdW5pY29kZSk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfSBlbHNlIHsKQEAgLTIxNzcsNyArMjMwNSw2IEBACiAgICAgZXJyID0gLTE7CiBmaW5hbGx5OgogICAgIFB5X1hERUNSRUYod3JpdGVyKTsKLSAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIFB5X1hERUNSRUYocmVzdWx0KTsKICAgICByZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9udC5oIGIvUHl0aG9uL3RocmVhZF9udC5oCmluZGV4IGIyOWIxYjYuLjc0YTZlZTggMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfbnQuaAorKysgYi9QeXRob24vdGhyZWFkX250LmgKQEAgLTc3LDcgKzc3LDcgQEAKICAgICAgICAgLyogd2FpdCBhdCBsZWFzdCB1bnRpbCB0aGUgdGFyZ2V0ICovCiAgICAgICAgIERXT1JEIG5vdywgdGFyZ2V0ID0gR2V0VGlja0NvdW50KCkgKyBtaWxsaXNlY29uZHM7CiAgICAgICAgIHdoaWxlIChtdXRleC0+bG9ja2VkKSB7Ci0gICAgICAgICAgICBpZiAoUHlDT05EX1RJTUVEV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzLCAoUFlfTE9OR19MT05HKW1pbGxpc2Vjb25kcyoxMDAwKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUNPTkRfVElNRURXQUlUKCZtdXRleC0+Y3YsICZtdXRleC0+Y3MsIChsb25nIGxvbmcpbWlsbGlzZWNvbmRzKjEwMDApIDwgMCkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdBSVRfRkFJTEVEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTYxLDExICsxNjEsNyBAQAogCiAvKiB0aHVua2VyIHRvIGNhbGwgYWRhcHQgYmV0d2VlbiB0aGUgZnVuY3Rpb24gdHlwZSB1c2VkIGJ5IHRoZSBzeXN0ZW0ncwogdGhyZWFkIHN0YXJ0IGZ1bmN0aW9uIGFuZCB0aGUgaW50ZXJuYWxseSB1c2VkIG9uZS4gKi8KLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotc3RhdGljIERXT1JEIFdJTkFQSQotI2Vsc2UKIHN0YXRpYyB1bnNpZ25lZCBfX3N0ZGNhbGwKLSNlbmRpZgogYm9vdHN0cmFwKHZvaWQgKmNhbGwpCiB7CiAgICAgY2FsbG9iaiAqb2JqID0gKGNhbGxvYmoqKWNhbGw7CkBAIC0xOTMsMzIgKzE4OSwxOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgb2JqLT5mdW5jID0gZnVuYzsKICAgICBvYmotPmFyZyA9IGFyZzsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgIGhUaHJlYWQgPSBDcmVhdGVUaHJlYWQoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QoX3B5dGhyZWFkX3N0YWNrc2l6ZSwgUHlfc3NpemVfdCwgU0laRV9UKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcCwgb2JqLCAwLCAmdGhyZWFkSUQpOwotI2Vsc2UKICAgICBoVGhyZWFkID0gKEhBTkRMRSlfYmVnaW50aHJlYWRleCgwLAogICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QoX3B5dGhyZWFkX3N0YWNrc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QsIHVuc2lnbmVkIGludCksCiAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwLCBvYmosCiAgICAgICAgICAgICAgICAgICAgICAgMCwgJnRocmVhZElEKTsKLSNlbmRpZgogICAgIGlmIChoVGhyZWFkID09IDApIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgICAgICAvKiBTYXZlIGVycm9yIGluIHZhcmlhYmxlLCB0byBwcmV2ZW50IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQKLSAgICAgICAgICAgZnJvbSBjbG9iYmVyaW5nIGl0LiAqLwotICAgICAgICB1bnNpZ25lZCBlID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgZmFpbGVkLCB3aW4zMiBlcnJvciBjb2RlICV1XG4iLAotICAgICAgICAgICAgICAgICBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGUpKTsKLSNlbHNlCiAgICAgICAgIC8qIEkndmUgc2VlbiBlcnJubyA9PSBFQUdBSU4gaGVyZSwgd2hpY2ggbWVhbnMgInRoZXJlIGFyZQogICAgICAgICAgKiB0b28gbWFueSB0aHJlYWRzIi4KICAgICAgICAgICovCiAgICAgICAgIGludCBlID0gZXJybm87CiAgICAgICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgZmFpbGVkLCBlcnJubyAlZFxuIiwKICAgICAgICAgICAgICAgICAgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLCBlKSk7Ci0jZW5kaWYKICAgICAgICAgdGhyZWFkSUQgPSAodW5zaWduZWQpLTE7CiAgICAgICAgIEhlYXBGcmVlKEdldFByb2Nlc3NIZWFwKCksIDAsIG9iaik7CiAgICAgfQpAQCAtMjQ5LDExICsyMzEsNyBAQAogICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKSk7CiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgZXhpdCgwKTsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgIEV4aXRUaHJlYWQoMCk7Ci0jZWxzZQogICAgIF9lbmR0aHJlYWRleCgwKTsKLSNlbmRpZgogfQogCiAvKgpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RyYWNlYmFjay5jIGIvUHl0aG9uL3RyYWNlYmFjay5jCmluZGV4IDk0MWQxY2IuLmU4YWFjMWIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90cmFjZWJhY2suYworKysgYi9QeXRob24vdHJhY2ViYWNrLmMKQEAgLTMxNCw3ICszMTQsNyBAQAogICAgIGlmIChmb2IgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoYmluYXJ5LCAmUHlJZF9jbG9zZSwgIiIpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJpbmFyeSwgJlB5SWRfY2xvc2UsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoYmluYXJ5KTsKICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMzM0LDcgKzMzNCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvYiwgJlB5SWRfY2xvc2UsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvYiwgJlB5SWRfY2xvc2UsIE5VTEwpOwogICAgIGlmIChyZXMpCiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIGVsc2UKQEAgLTQxMiw2ICs0MTIsMTEgQEAKIHsKICAgICBpbnQgZXJyID0gMDsKICAgICBsb25nIGRlcHRoID0gMDsKKyAgICBQeU9iamVjdCAqbGFzdF9maWxlID0gTlVMTDsKKyAgICBpbnQgbGFzdF9saW5lID0gLTE7CisgICAgUHlPYmplY3QgKmxhc3RfbmFtZSA9IE5VTEw7CisgICAgbG9uZyBjbnQgPSAwOworICAgIFB5T2JqZWN0ICpsaW5lOwogICAgIFB5VHJhY2ViYWNrT2JqZWN0ICp0YjEgPSB0YjsKICAgICB3aGlsZSAodGIxICE9IE5VTEwpIHsKICAgICAgICAgZGVwdGgrKzsKQEAgLTQxOSwxNiArNDI0LDQxIEBACiAgICAgfQogICAgIHdoaWxlICh0YiAhPSBOVUxMICYmIGVyciA9PSAwKSB7CiAgICAgICAgIGlmIChkZXB0aCA8PSBsaW1pdCkgewotICAgICAgICAgICAgZXJyID0gdGJfZGlzcGxheWxpbmUoZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZSk7CisgICAgICAgICAgICBpZiAobGFzdF9maWxlICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUgPT0gbGFzdF9maWxlICYmCisgICAgICAgICAgICAgICAgbGFzdF9saW5lICE9IC0xICYmIHRiLT50Yl9saW5lbm8gPT0gbGFzdF9saW5lICYmCisgICAgICAgICAgICAgICAgbGFzdF9uYW1lICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZSA9PSBsYXN0X25hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgY250Kys7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNudCA+IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICIgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkICVkIG1vcmUgdGltZXNdXG4iLCBjbnQtMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBQeUZpbGVfV3JpdGVPYmplY3QobGluZSwgZiwgUHlfUFJJTlRfUkFXKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBsYXN0X2ZpbGUgPSB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZSA9IHRiLT50Yl9saW5lbm87CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbmFtZSA9IHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19uYW1lOworICAgICAgICAgICAgICAgICAgICBjbnQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjbnQgPCAzKQorICAgICAgICAgICAgICAgIGVyciA9IHRiX2Rpc3BsYXlsaW5lKGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9saW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX25hbWUpOwogICAgICAgICB9CiAgICAgICAgIGRlcHRoLS07CiAgICAgICAgIHRiID0gdGItPnRiX25leHQ7CiAgICAgICAgIGlmIChlcnIgPT0gMCkKICAgICAgICAgICAgIGVyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpOwogICAgIH0KKyAgICBpZiAoY250ID4gMykgeworICAgICAgICBsaW5lID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICIgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkICVkIG1vcmUgdGltZXNdXG4iLCBjbnQtMyk7CisgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZU9iamVjdChsaW5lLCBmLCBQeV9QUklOVF9SQVcpOworICAgICAgICBQeV9ERUNSRUYobGluZSk7CisgICAgfQogICAgIHJldHVybiBlcnI7CiB9CiAKQEAgLTQ3OSw0MCArNTA5LDI2IEBACiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCiAKLXN0YXRpYyB2b2lkCi1yZXZlcnNlX3N0cmluZyhjaGFyICp0ZXh0LCBjb25zdCBzaXplX3QgbGVuKQordm9pZAorX1B5X0R1bXBEZWNpbWFsKGludCBmZCwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKIHsKLSAgICBjaGFyIHRtcDsKLSAgICBzaXplX3QgaSwgajsKLSAgICBpZiAobGVuID09IDApCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKGk9MCwgaj1sZW4tMTsgaSA8IGo7IGkrKywgai0tKSB7Ci0gICAgICAgIHRtcCA9IHRleHRbaV07Ci0gICAgICAgIHRleHRbaV0gPSB0ZXh0W2pdOwotICAgICAgICB0ZXh0W2pdID0gdG1wOwotICAgIH0KLX0KKyAgICAvKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxsZCBvciAlcC4KKyAgICAgICBXZSBuZWVkIGF0IG1vc3QgY2VpbChsb2cxMCgyNTYpKlNJWkVPRl9MT05HX0xPTkcpIGRpZ2l0cywKKyAgICAgICBwbHVzIDEgZm9yIHRoZSBudWxsIGJ5dGUuICA1My8yMiBpcyBhbiB1cHBlciBib3VuZCBmb3IgbG9nMTAoMjU2KS4gKi8KKyAgICBjaGFyIGJ1ZmZlclsxICsgKHNpemVvZih1bnNpZ25lZCBsb25nKSo1My0xKSAvIDIyICsgMV07CisgICAgY2hhciAqcHRyLCAqZW5kOwogCi0vKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgOTk5OTk5XSB0byBkZWNpbWFsLAotICAgYW5kIHdyaXRlIGl0IGludG8gdGhlIGZpbGUgZmQuCi0KLSAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCi0KLXN0YXRpYyB2b2lkCi1kdW1wX2RlY2ltYWwoaW50IGZkLCBpbnQgdmFsdWUpCi17Ci0gICAgY2hhciBidWZmZXJbN107Ci0gICAgaW50IGxlbjsKLSAgICBpZiAodmFsdWUgPCAwIHx8IDk5OTk5OSA8IHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgbGVuID0gMDsKKyAgICBlbmQgPSAmYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChidWZmZXIpIC0gMV07CisgICAgcHRyID0gZW5kOworICAgICpwdHIgPSAnXDAnOwogICAgIGRvIHsKLSAgICAgICAgYnVmZmVyW2xlbl0gPSAnMCcgKyAodmFsdWUgJSAxMCk7CisgICAgICAgIC0tcHRyOworICAgICAgICBhc3NlcnQocHRyID49IGJ1ZmZlcik7CisgICAgICAgICpwdHIgPSAnMCcgKyAodmFsdWUgJSAxMCk7CiAgICAgICAgIHZhbHVlIC89IDEwOwotICAgICAgICBsZW4rKzsKICAgICB9IHdoaWxlICh2YWx1ZSk7Ci0gICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOwotICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBidWZmZXIsIGxlbik7CisKKyAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgcHRyLCBlbmQgLSBwdHIpOwogfQogCiAvKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMHhmZmZmZmZmZl0gdG8gaGV4YWRlY2ltYWwgb2YgJ3dpZHRoJyBkaWdpdHMsCkBAIC01MjAsMjcgKzUzNiwzMSBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwogCi1zdGF0aWMgdm9pZAotZHVtcF9oZXhhZGVjaW1hbChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgdmFsdWUsIGludCB3aWR0aCkKK3ZvaWQKK19QeV9EdW1wSGV4YWRlY2ltYWwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHZhbHVlLCBQeV9zc2l6ZV90IHdpZHRoKQogewotICAgIGludCBsZW47Ci0gICAgY2hhciBidWZmZXJbc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMiArIDFdOwotICAgIGxlbiA9IDA7CisgICAgY2hhciBidWZmZXJbc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMiArIDFdLCAqcHRyLCAqZW5kOworICAgIGNvbnN0IFB5X3NzaXplX3Qgc2l6ZSA9IFB5X0FSUkFZX0xFTkdUSChidWZmZXIpIC0gMTsKKworICAgIGlmICh3aWR0aCA+IHNpemUpCisgICAgICAgIHdpZHRoID0gc2l6ZTsKKyAgICAvKiBpdCdzIG9rIGlmIHdpZHRoIGlzIG5lZ2F0aXZlICovCisKKyAgICBlbmQgPSAmYnVmZmVyW3NpemVdOworICAgIHB0ciA9IGVuZDsKKyAgICAqcHRyID0gJ1wwJzsKICAgICBkbyB7Ci0gICAgICAgIGJ1ZmZlcltsZW5dID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOworICAgICAgICAtLXB0cjsKKyAgICAgICAgYXNzZXJ0KHB0ciA+PSBidWZmZXIpOworICAgICAgICAqcHRyID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOwogICAgICAgICB2YWx1ZSA+Pj0gNDsKLSAgICAgICAgbGVuKys7Ci0gICAgfSB3aGlsZSAobGVuIDwgd2lkdGggfHwgdmFsdWUpOwotICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKLSAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgYnVmZmVyLCBsZW4pOworICAgIH0gd2hpbGUgKChlbmQgLSBwdHIpIDwgd2lkdGggfHwgdmFsdWUpOworCisgICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHB0ciwgZW5kIC0gcHRyKTsKIH0KIAotLyogV3JpdGUgYW4gdW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBmZCB1c2luZyBhc2NpaStiYWNrc2xhc2hyZXBsYWNlLgotCi0gICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwotCi1zdGF0aWMgdm9pZAotZHVtcF9hc2NpaShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KQordm9pZAorX1B5X0R1bXBBU0NJSShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KQogewogICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpID0gKFB5QVNDSUlPYmplY3QgKil0ZXh0OwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKQEAgLTU1MCwzMiArNTcwLDM2IEBACiAgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CiAgICAgUHlfVUNTNCBjaDsKIAorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHRleHQpKQorICAgICAgICByZXR1cm47CisKICAgICBzaXplID0gYXNjaWktPmxlbmd0aDsKICAgICBraW5kID0gYXNjaWktPnN0YXRlLmtpbmQ7Ci0gICAgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0KSB7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgd3N0ciA9ICgoUHlBU0NJSU9iamVjdCAqKXRleHQpLT53c3RyOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzaXplID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopdGV4dCktPndzdHJfbGVuZ3RoOworICAgIH0KKyAgICBlbHNlIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCkgewogICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpKQogICAgICAgICAgICAgZGF0YSA9ICgoUHlBU0NJSU9iamVjdCopdGV4dCkgKyAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkYXRhID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kil0ZXh0KSArIDE7CiAgICAgfQotICAgIGVsc2UgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICBlbHNlIHsKICAgICAgICAgZGF0YSA9ICgoUHlVbmljb2RlT2JqZWN0ICopdGV4dCktPmRhdGEuYW55OwogICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgd3N0ciA9ICgoUHlBU0NJSU9iamVjdCAqKXRleHQpLT53c3RyOwotICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzaXplID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopdGV4dCktPndzdHJfbGVuZ3RoOwotICAgIH0KIAogICAgIGlmIChNQVhfU1RSSU5HX0xFTkdUSCA8IHNpemUpIHsKICAgICAgICAgc2l6ZSA9IE1BWF9TVFJJTkdfTEVOR1RIOwogICAgICAgICB0cnVuY2F0ZWQgPSAxOwogICAgIH0KLSAgICBlbHNlCisgICAgZWxzZSB7CiAgICAgICAgIHRydW5jYXRlZCA9IDA7CisgICAgfQogCiAgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCkBAIC01ODksMTkgKzYxMywyMCBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmYpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXHgiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCAyKTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCAyKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmZmYpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXHUiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCA0KTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCA0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXFUiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCA4KTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCA4KTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAodHJ1bmNhdGVkKQorICAgIGlmICh0cnVuY2F0ZWQpIHsKICAgICAgICAgUFVUUyhmZCwgIi4uLiIpOworICAgIH0KIH0KIAogLyogV3JpdGUgYSBmcmFtZSBpbnRvIHRoZSBmaWxlIGZkOiAiRmlsZSAieHh4IiwgbGluZSB4eHggaW4geHh4Ii4KQEAgLTYyMCw3ICs2NDUsNyBAQAogICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fZmlsZW5hbWUpKQogICAgIHsKICAgICAgICAgUFVUUyhmZCwgIlwiIik7Ci0gICAgICAgIGR1bXBfYXNjaWkoZmQsIGNvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICAgICAgX1B5X0R1bXBBU0NJSShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOwogICAgICAgICBQVVRTKGZkLCAiXCIiKTsKICAgICB9IGVsc2UgewogICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CkBAIC02MjksMTQgKzY1NCwyMSBAQAogICAgIC8qIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjcuMCBhbmQgMy4yLjAgKi8KICAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGNvZGUsIGZyYW1lLT5mX2xhc3RpKTsKICAgICBQVVRTKGZkLCAiLCBsaW5lICIpOwotICAgIGR1bXBfZGVjaW1hbChmZCwgbGluZW5vKTsKKyAgICBpZiAobGluZW5vID49IDApIHsKKyAgICAgICAgX1B5X0R1bXBEZWNpbWFsKGZkLCAodW5zaWduZWQgbG9uZylsaW5lbm8pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KICAgICBQVVRTKGZkLCAiIGluICIpOwogCiAgICAgaWYgKGNvZGUgIT0gTlVMTCAmJiBjb2RlLT5jb19uYW1lICE9IE5VTEwKLSAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKQotICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19uYW1lKTsKLSAgICBlbHNlCisgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKSB7CisgICAgICAgIF9QeV9EdW1wQVNDSUkoZmQsIGNvZGUtPmNvX25hbWUpOworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KIAogICAgIFBVVFMoZmQsICJcbiIpOwogfQpAQCAtNjkyLDcgKzcyNCw5IEBACiAgICAgICAgIFBVVFMoZmQsICJDdXJyZW50IHRocmVhZCAweCIpOwogICAgIGVsc2UKICAgICAgICAgUFVUUyhmZCwgIlRocmVhZCAweCIpOwotICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLCBzaXplb2YodW5zaWduZWQgbG9uZykqMik7CisgICAgX1B5X0R1bXBIZXhhZGVjaW1hbChmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMik7CiAgICAgUFVUUyhmZCwgIiAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4iKTsKIH0KIApAQCAtNzA0LDExICs3MzgsNTYgQEAKICAgIGhhbmRsZXJzIGlmIHNpZ25hbHMgd2VyZSByZWNlaXZlZC4gKi8KIGNvbnN0IGNoYXIqCiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RzdGF0ZSkKIHsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgdW5zaWduZWQgaW50IG50aHJlYWRzOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoY3VycmVudF90c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoKSBpcyBjYWxsZWQgZnJvbSBzaWduYWwgaGFuZGxlcnMgYnkKKyAgICAgICAgICAgZmF1bHRoYW5kbGVyLgorCisgICAgICAgICAgIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgYXJlIHN5bmNocm9ub3VzIHNpZ25hbHMKKyAgICAgICAgICAgYW5kIGFyZSB0aHVzIGRlbGl2ZXJlZCB0byB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZSBmYXVsdC4gR2V0IHRoZQorICAgICAgICAgICBQeXRob24gdGhyZWFkIHN0YXRlIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKworICAgICAgICAgICBQeVRocmVhZFN0YXRlX0dldCgpIGRvZXNuJ3QgZ2l2ZSB0aGUgc3RhdGUgb2YgdGhlIHRocmVhZCB0aGF0IGNhdXNlZAorICAgICAgICAgICB0aGUgZmF1bHQgaWYgdGhlIHRocmVhZCByZWxlYXNlZCB0aGUgR0lMLCBhbmQgc28gdGhpcyBmdW5jdGlvbgorICAgICAgICAgICBjYW5ub3QgYmUgdXNlZC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykgaW5zdGVhZDogY2FsbAorICAgICAgICAgICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpLiAqLworICAgICAgICBjdXJyZW50X3RzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CisgICAgfQorCisgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpbnRlcnAgPSBfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKCk7CisgICAgICAgICAgICBpZiAoaW50ZXJwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBXZSBuZWVkIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB0byBnZXQgUHl0aG9uIHRocmVhZHMgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gInVuYWJsZSB0byBnZXQgdGhlIGludGVycHJldGVyIHN0YXRlIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludGVycCA9IGN1cnJlbnRfdHN0YXRlLT5pbnRlcnA7CisgICAgICAgIH0KKyAgICB9CisjZWxzZQorICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIENhbGwgX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCkgaW5zdGVhZCBvZiBQeVRocmVhZFN0YXRlX0dldCgpCisgICAgICAgICAgIHRvIG5vdCBmYWlsIHdpdGggYSBmYXRhbCBlcnJvciBpZiB0aGUgdGhyZWFkIHN0YXRlIGlzIE5VTEwuICovCisgICAgICAgIGN1cnJlbnRfdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7CisgICAgfQorCisgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBXZSBuZWVkIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB0byBnZXQgUHl0aG9uIHRocmVhZHMgKi8KKyAgICAgICAgICAgIHJldHVybiAidW5hYmxlIHRvIGdldCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUiOworICAgICAgICB9CisgICAgICAgIGludGVycCA9IGN1cnJlbnRfdHN0YXRlLT5pbnRlcnA7CisgICAgfQorI2VuZGlmCisgICAgYXNzZXJ0KGludGVycCAhPSBOVUxMKTsKKwogICAgIC8qIEdldCB0aGUgY3VycmVudCBpbnRlcnByZXRlciBmcm9tIHRoZSBjdXJyZW50IHRocmVhZCAqLwogICAgIHRzdGF0ZSA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9UaHJlYWRIZWFkKGludGVycCk7CiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQpAQCAtNzI2LDcgKzgwNSw3IEBACiAgICAgICAgICAgICBQVVRTKGZkLCAiLi4uXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHdyaXRlX3RocmVhZF9pZChmZCwgdHN0YXRlLCB0c3RhdGUgPT0gY3VycmVudF90aHJlYWQpOworICAgICAgICB3cml0ZV90aHJlYWRfaWQoZmQsIHRzdGF0ZSwgdHN0YXRlID09IGN1cnJlbnRfdHN0YXRlKTsKICAgICAgICAgZHVtcF90cmFjZWJhY2soZmQsIHRzdGF0ZSwgMCk7CiAgICAgICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV4dCh0c3RhdGUpOwogICAgICAgICBudGhyZWFkcysrOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3dvcmRjb2RlX2hlbHBlcnMuaCBiL1B5dGhvbi93b3JkY29kZV9oZWxwZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBlM2E5MQotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi93b3JkY29kZV9oZWxwZXJzLmgKQEAgLTAsMCArMSw0MSBAQAorLyogVGhpcyBmaWxlIGNvbnRhaW5zIGNvZGUgc2hhcmVkIGJ5IHRoZSBjb21waWxlciBhbmQgdGhlIHBlZXBob2xlCisgICBvcHRpbWl6ZXIuCisgKi8KKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorIyAgZGVmaW5lIFBBQ0tPUEFSRyhvcGNvZGUsIG9wYXJnKSAoKF9QeV9DT0RFVU5JVCkoKChvcGNvZGUpIDw8IDgpIHwgKG9wYXJnKSkpCisjZWxzZQorIyAgZGVmaW5lIFBBQ0tPUEFSRyhvcGNvZGUsIG9wYXJnKSAoKF9QeV9DT0RFVU5JVCkoKChvcGFyZykgPDwgOCkgfCAob3Bjb2RlKSkpCisjZW5kaWYKKworLyogTWluaW11bSBudW1iZXIgb2YgY29kZSB1bml0cyBuZWNlc3NhcnkgdG8gZW5jb2RlIGluc3RydWN0aW9uIHdpdGgKKyAgIEVYVEVOREVEX0FSR3MgKi8KK3N0YXRpYyBpbnQKK2luc3Ryc2l6ZSh1bnNpZ25lZCBpbnQgb3BhcmcpCit7CisgICAgcmV0dXJuIG9wYXJnIDw9IDB4ZmYgPyAxIDoKKyAgICAgICAgb3BhcmcgPD0gMHhmZmZmID8gMiA6CisgICAgICAgIG9wYXJnIDw9IDB4ZmZmZmZmID8gMyA6CisgICAgICAgIDQ7Cit9CisKKy8qIFNwaXRzIG91dCBvcC9vcGFyZyBwYWlyIHVzaW5nIGlsZW4gYnl0ZXMuIGNvZGVzdHIgc2hvdWxkIGJlIHBvaW50ZWQgYXQgdGhlCisgICBkZXNpcmVkIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBFWFRFTkRFRF9BUkcgKi8KK3N0YXRpYyB2b2lkCit3cml0ZV9vcF9hcmcoX1B5X0NPREVVTklUICpjb2Rlc3RyLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICB1bnNpZ25lZCBpbnQgb3BhcmcsIGludCBpbGVuKQoreworICAgIHN3aXRjaCAoaWxlbikgeworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDI0KSAmIDB4ZmYpOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDE2KSAmIDB4ZmYpOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDgpICYgMHhmZik7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICpjb2Rlc3RyKysgPSBQQUNLT1BBUkcob3Bjb2RlLCBvcGFyZyAmIDB4ZmYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDQxNGI2NTguLmQxNWUxZjYgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNSArMSw1IEBACi1UaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuNS4zIHJlbGVhc2UgY2FuZGlkYXRlIDEKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjYuMCBiZXRhIDEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwKIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjgsOSArMjgsOSBAQAogZWxzZXdoZXJlIGl0J3MganVzdCBweXRob24uCiAKIE9uIE1hYyBPUyBYLCBpZiB5b3UgaGF2ZSBjb25maWd1cmVkIFB5dGhvbiB3aXRoIC0tZW5hYmxlLWZyYW1ld29yaywgeW91IHNob3VsZAotdXNlICJtYWtlIGZyYW1ld29ya2luc3RhbGwiIHRvIGRvIHRoZSBpbnN0YWxsYXRpb24uICBOb3RlIHRoYXQgdGhpcyBpbnN0YWxscwotdGhlIFB5dGhvbiBleGVjdXRhYmxlIGluIGEgcGxhY2UgdGhhdCBpcyBub3Qgbm9ybWFsbHkgb24geW91ciBQQVRILCB5b3UgbWF5Ci13YW50IHRvIHNldCB1cCBhIHN5bWxpbmsgaW4gL3Vzci9sb2NhbC9iaW4uCit1c2UgIm1ha2UgZnJhbWV3b3JraW5zdGFsbCIgdG8gZG8gdGhlIGluc3RhbGxhdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGluc3RhbGxzIHRoZQorUHl0aG9uIGV4ZWN1dGFibGUgaW4gYSBwbGFjZSB0aGF0IGlzIG5vdCBub3JtYWxseSBvbiB5b3VyIFBBVEgsIHlvdSBtYXkgd2FudCB0bworc2V0IHVwIGEgc3ltbGluayBpbiAvdXNyL2xvY2FsL2Jpbi4KIAogT24gV2luZG93cywgc2VlIFBDYnVpbGQvcmVhZG1lLnR4dC4KIApAQCAtODksOSArODksOSBAQAogLS0tLS0tLS0tLQogCiBXZSBoYXZlIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiB0aGUgY2hhbmdlcyBpbiB0aGUgIldoYXQncyBOZXcgaW4KLVB5dGhvbiAzLjUiIGRvY3VtZW50LCBmb3VuZCBhdAorUHl0aG9uIDMuNiIgZG9jdW1lbnQsIGZvdW5kIGF0CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS93aGF0c25ldy8zLjUuaHRtbAorICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi93aGF0c25ldy8zLjYuaHRtbAogCiBGb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sCiBpcyBpbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNwpAQCAtMTA0LDkgKzEwNCw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjUgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNiBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS8KKyAgICBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjYvCiAKIEl0IGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4gbWFueSBmb3JtYXRzIGZvciBmYXN0ZXIgYWNjZXNzLiAgVGhlIGRvY3VtZW50YXRpb24KIGlzIGRvd25sb2FkYWJsZSBpbiBIVE1MLCBQREYsIGFuZCByZVN0cnVjdHVyZWRUZXh0IGZvcm1hdHM7IHRoZSBsYXR0ZXIgdmVyc2lvbgpAQCAtMTE2LDcgKzExNiw3IEBACiBJZiB5b3Ugd291bGQgbGlrZSB0byBjb250cmlidXRlIHRvIHRoZSBkZXZlbG9wbWVudCBvZiBQeXRob24sIHJlbGV2YW50CiBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhdDoKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvCisgICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvCiAKIEZvciBpbmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBQeXRob24ncyBkb2N1bWVudGF0aW9uLCByZWZlciB0byBEb2MvUkVBRE1FLnR4dC4KIApAQCAtMTMxLDcgKzEzMSw3IEBACiBBIHNvdXJjZS10by1zb3VyY2UgdHJhbnNsYXRpb24gdG9vbCwgIjJ0bzMiLCBjYW4gdGFrZSBjYXJlIG9mIHRoZSBtdW5kYW5lIHRhc2sKIG9mIGNvbnZlcnRpbmcgbGFyZ2UgYW1vdW50cyBvZiBzb3VyY2UgY29kZS4gIEl0IGlzIG5vdCBhIGNvbXBsZXRlIHNvbHV0aW9uIGJ1dAogaXMgY29tcGxlbWVudGVkIGJ5IHRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBpbiAyLjYuICBTZWUKLWh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgoraHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy42L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiAKIFRlc3RpbmcKQEAgLTE2MSwxNiArMTYxLDE2IEBACiAKIE9uIFVuaXggYW5kIE1hYyBzeXN0ZW1zIGlmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24KIHVzaW5nIHRoZSBzYW1lIGluc3RhbGxhdGlvbiBwcmVmaXggKC0tcHJlZml4IGFyZ3VtZW50IHRvIHRoZSBjb25maWd1cmUgc2NyaXB0KQoteW91IG11c3QgdGFrZSBjYXJlIHRoYXQgeW91ciBwcmltYXJ5IHB5dGhvbiBleGVjdXRhYmxlIGlzIG5vdCBvdmVyd3JpdHRlbiBieQotdGhlIGluc3RhbGxhdGlvbiBvZiBhIGRpZmZlcmVudCB2ZXJzaW9uLiAgQWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnN0YWxsZWQKLXVzaW5nICJtYWtlIGFsdGluc3RhbGwiIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIGFuZCBjYW4gdGh1cyBsaXZlCi1zaWRlLWJ5LXNpZGUuICAibWFrZSBpbnN0YWxsIiBhbHNvIGNyZWF0ZXMgJHtwcmVmaXh9L2Jpbi9weXRob24zIHdoaWNoIHJlZmVycwotdG8gJHtwcmVmaXh9L2Jpbi9weXRob25YLlkuICBJZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgdXNpbmcKLXRoZSBzYW1lIHByZWZpeCB5b3UgbXVzdCBkZWNpZGUgd2hpY2ggdmVyc2lvbiAoaWYgYW55KSBpcyB5b3VyICJwcmltYXJ5IgotdmVyc2lvbi4gIEluc3RhbGwgdGhhdCB2ZXJzaW9uIHVzaW5nICJtYWtlIGluc3RhbGwiLiAgSW5zdGFsbCBhbGwgb3RoZXIKLXZlcnNpb25zIHVzaW5nICJtYWtlIGFsdGluc3RhbGwiLgoreW91IG11c3QgdGFrZSBjYXJlIHRoYXQgeW91ciBwcmltYXJ5IHB5dGhvbiBleGVjdXRhYmxlIGlzIG5vdCBvdmVyd3JpdHRlbiBieSB0aGUKK2luc3RhbGxhdGlvbiBvZiBhIGRpZmZlcmVudCB2ZXJzaW9uLiAgQWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnN0YWxsZWQgdXNpbmcKKyJtYWtlIGFsdGluc3RhbGwiIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIGFuZCBjYW4gdGh1cyBsaXZlCitzaWRlLWJ5LXNpZGUuICAibWFrZSBpbnN0YWxsIiBhbHNvIGNyZWF0ZXMgJHtwcmVmaXh9L2Jpbi9weXRob24zIHdoaWNoIHJlZmVycyB0bworJHtwcmVmaXh9L2Jpbi9weXRob25YLlkuICBJZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgdXNpbmcgdGhlCitzYW1lIHByZWZpeCB5b3UgbXVzdCBkZWNpZGUgd2hpY2ggdmVyc2lvbiAoaWYgYW55KSBpcyB5b3VyICJwcmltYXJ5IiB2ZXJzaW9uLgorSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlciB2ZXJzaW9ucyB1c2luZworIm1ha2UgYWx0aW5zdGFsbCIuCiAKLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy41IHdpdGggMi43IGJlaW5nIHRoZQorRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjYgd2l0aCAyLjcgYmVpbmcgdGhlCiBwcmltYXJ5IHZlcnNpb24sIHlvdSB3b3VsZCBleGVjdXRlICJtYWtlIGluc3RhbGwiIGluIHlvdXIgMi43IGJ1aWxkIGRpcmVjdG9yeQogYW5kICJtYWtlIGFsdGluc3RhbGwiIGluIHRoZSBvdGhlcnMuCiAKQEAgLTE4MSw3ICsxODEsNyBAQAogV2UncmUgc29saWNpdGluZyBidWcgcmVwb3J0cyBhYm91dCBhbGwgYXNwZWN0cyBvZiB0aGUgbGFuZ3VhZ2UuICBGaXhlcyBhcmUgYWxzbwogd2VsY29tZSwgcHJlZmVyYWJseSBpbiB1bmlmaWVkIGRpZmYgZm9ybWF0LiAgUGxlYXNlIHVzZSB0aGUgaXNzdWUgdHJhY2tlcjoKIAotICAgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvCisgICAgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvCiAKIElmIHlvdSdyZSBub3Qgc3VyZSB3aGV0aGVyIHlvdSdyZSBkZWFsaW5nIHdpdGggYSBidWcgb3IgYSBmZWF0dXJlLCB1c2UgdGhlCiBtYWlsaW5nIGxpc3Q6CkBAIC0xOTAsMjMgKzE5MCwyMyBAQAogCiBUbyBzdWJzY3JpYmUgdG8gdGhlIGxpc3QsIHVzZSB0aGUgbWFpbG1hbiBmb3JtOgogCi0gICAgaHR0cDovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1kZXYvCisgICAgaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tZGV2LwogCiAKIFByb3Bvc2FscyBmb3IgZW5oYW5jZW1lbnQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSWYgeW91IGhhdmUgYSBwcm9wb3NhbCB0byBjaGFuZ2UgUHl0aG9uLCB5b3UgbWF5IHdhbnQgdG8gc2VuZCBhbiBlbWFpbCB0byB0aGUKLWNvbXAubGFuZy5weXRob24gb3IgcHl0aG9uLWlkZWFzIG1haWxpbmcgbGlzdHMgZm9yIGluaXRhbCBmZWVkYmFjay4gIEEgUHl0aG9uCitjb21wLmxhbmcucHl0aG9uIG9yIHB5dGhvbi1pZGVhcyBtYWlsaW5nIGxpc3RzIGZvciBpbml0aWFsIGZlZWRiYWNrLiAgQSBQeXRob24KIEVuaGFuY2VtZW50IFByb3Bvc2FsIChQRVApIG1heSBiZSBzdWJtaXR0ZWQgaWYgeW91ciBpZGVhIGdhaW5zIGdyb3VuZC4gIEFsbAogY3VycmVudCBQRVBzLCBhcyB3ZWxsIGFzIGd1aWRlbGluZXMgZm9yIHN1Ym1pdHRpbmcgYSBuZXcgUEVQLCBhcmUgbGlzdGVkIGF0Ci1odHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvLgoraHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy8uCiAKIAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDQ3OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzgvCitTZWUgUEVQIDQ5NCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDk0LwogCiAKIENvcHlyaWdodCBhbmQgTGljZW5zZSBJbmZvcm1hdGlvbgpAQCAtMjMwLDMgKzIzMCw0IEBACiBjb2RlIGJ1dCB0aGVzZSBhcmUgZW50aXJlbHkgb3B0aW9uYWwuCiAKIEFsbCB0cmFkZW1hcmtzIHJlZmVyZW5jZWQgaGVyZWluIGFyZSBwcm9wZXJ0eSBvZiB0aGVpciByZXNwZWN0aXZlIGhvbGRlcnMuCisKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc3NDA3Yi4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUByZW0gRm9ybWVybHkgdXNlZCBieSB0aGUgYnVpbGRib3QgImNvbXBpbGUiIHN0ZXAuDQotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gVG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIHNjcmlwdCwgdXNlDQotQGVjaG8gICAgIFBDYnVpbGRcYnVpbGQuYmF0IC1kIC1lIC1rIC1wIHg2NA0KLWNhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtcCB4NjQgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1M2M3YzEuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1AcmVtIEZvcm1lcmx5IHVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UgYGNsZWFuLmJhdGAgZnJvbSB0aGlzDQotQGVjaG8gZGlyZWN0b3J5IGFuZCBwYXNzIGAtcCB4NjRgIGFzIHR3byBhcmd1bWVudHMuDQotY2FsbCAiJX5kcDBjbGVhbi5iYXQiIC1wIHg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAppbmRleCAwZmM2OGZkLi4xM2U2Njc5IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CkBAIC0xNCwzICsxNCw0IEBACiANCiBlY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLg0KIHJtZGlyIC9zIC9xICIlcm9vdCVcYnVpbGQiDQorZGVsIC9zICIlcGNidWlsZCVccHl0aG9uKi56aXAiDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmFlZjA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmFlZjA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvdGVzdC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ4MzI5Yy4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQHJlbSBGb3JtZXJseSB1c2VkIGJ5IHRoZSBidWlsZGJvdCAidGVzdCIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UNCi1AZWNobyAgICAgUENidWlsZFxydC5iYXQgLXEgLWQgLXg2NCAtdWFsbCAtcndXDQotQGVjaG8gb3IgdXNlIGB0ZXN0LmJhdGAgaW4gdGhpcyBkaXJlY3RvcnkgYW5kIHBhc3MgYC14NjRgIGFzIGFuIGFyZ3VtZW50Lg0KLWNhbGwgIiV+ZHAwdGVzdC5iYXQiIC14NjQgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC90ZXN0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CmluZGV4IGZmN2QxNjcuLmEzMmQzOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CkBAIC00LDcgKzQsNyBAQAogDQogc2V0IGhlcmU9JX5kcDANCiBzZXQgcnRfb3B0cz0tcSAtZA0KLXNldCByZWdydGVzdF9hcmdzPQ0KK3NldCByZWdydGVzdF9hcmdzPS1qMQ0KIA0KIDpDaGVja09wdHMNCiBpZiAiJTEiPT0iLXg2NCIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQpAQCAtMTYsNCArMTYsNCBAQAogaWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RfYXJncz0lcmVncnRlc3RfYXJncyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KIGVjaG8gb24NCi1jYWxsICIlaGVyZSUuLlwuLlxQQ2J1aWxkXHJ0LmJhdCIgJXJ0X29wdHMlIC11YWxsIC1yd1cgLS10aW1lb3V0PTM2MDAgJXJlZ3J0ZXN0X2FyZ3MlDQorY2FsbCAiJWhlcmUlLi5cLi5cUENidWlsZFxydC5iYXQiICVydF9vcHRzJSAtdWFsbCAtcndXIC0tc2xvd2VzdCAtLXRpbWVvdXQ9MTIwMCAlcmVncnRlc3RfYXJncyUNCmRpZmYgLS1naXQgYS9Ub29scy9jbGluaWMvY2xpbmljLnB5IGIvVG9vbHMvY2xpbmljL2NsaW5pYy5weQppbmRleCBmNjE1ZWQ5Li43NWFjNjczIDEwMDc1NQotLS0gYS9Ub29scy9jbGluaWMvY2xpbmljLnB5CisrKyBiL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKQEAgLTY0NCw3ICs2NDQsNyBAQAogICAgICAgICBkZWZhdWx0X3JldHVybl9jb252ZXJ0ZXIgPSAobm90IGYucmV0dXJuX2NvbnZlcnRlciBvcgogICAgICAgICAgICAgZi5yZXR1cm5fY29udmVydGVyLnR5cGUgPT0gJ1B5T2JqZWN0IConKQogCi0gICAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbWV0ZXJzIGFuZCAocGFyYW1ldGVyc1stMV0ua2luZCA9PSBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbWV0ZXJzIGFuZCBwYXJhbWV0ZXJzWy0xXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBhbGxfYm9yaW5nX29iamVjdHMgPSBGYWxzZSAjIHllcywgdGhpcyB3aWxsIGJlIGZhbHNlIGlmIHRoZXJlIGFyZSAwIHBhcmFtZXRlcnMsIGl0J3MgZmluZQogICAgICAgICBmaXJzdF9vcHRpb25hbCA9IGxlbihwYXJhbWV0ZXJzKQogICAgICAgICBmb3IgaSwgcCBpbiBlbnVtZXJhdGUocGFyYW1ldGVycyk6CkBAIC02NjEsNyArNjYxLDcgQEAKICAgICAgICAgbmV3X29yX2luaXQgPSBmLmtpbmQgaW4gKE1FVEhPRF9ORVcsIE1FVEhPRF9JTklUKQogCiAgICAgICAgIG1ldGhfbyA9IChsZW4ocGFyYW1ldGVycykgPT0gMSBhbmQKLSAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSBhbmQKKyAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5pc19wb3NpdGlvbmFsX29ubHkoKSBhbmQKICAgICAgICAgICAgICAgbm90IGNvbnZlcnRlcnNbMF0uaXNfb3B0aW9uYWwoKSBhbmQKICAgICAgICAgICAgICAgbm90IG5ld19vcl9pbml0KQogCkBAIC03MDUsNiArNzA1LDExIEBACiAgICAgICAgICAgICB7Y19iYXNlbmFtZX0oe3NlbGZfdHlwZX17c2VsZl9uYW1lfSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiAgICAgICAgICAgICAiIiIpCiAKKyAgICAgICAgcGFyc2VyX3Byb3RvdHlwZV9mYXN0Y2FsbCA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgorICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKKyAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQorICAgICAgICAgICAgIiIiKQorCiAgICAgICAgIHBhcnNlcl9wcm90b3R5cGVfdmFyYXJncyA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgogICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqYXJncykKQEAgLTc0Myw3ICs3NDgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBvdXRwdXQoKQogCiAgICAgICAgIGRlZiBpbnNlcnRfa2V5d29yZHMocyk6Ci0gICAgICAgICAgICByZXR1cm4gbGluZWFyX2Zvcm1hdChzLCBkZWNsYXJhdGlvbnM9InN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHt7e2tleXdvcmRzfSwgTlVMTH19O1xue2RlY2xhcmF0aW9uc30iKQorICAgICAgICAgICAgcmV0dXJuIGxpbmVhcl9mb3JtYXQocywgZGVjbGFyYXRpb25zPQorICAgICAgICAgICAgICAgICdzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0ge3t7a2V5d29yZHN9LCBOVUxMfX07XG4nCisgICAgICAgICAgICAgICAgJ3N0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7eyJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsIDB9fTtcbicKKyAgICAgICAgICAgICAgICAne2RlY2xhcmF0aW9uc30nKQogCiAgICAgICAgIGlmIG5vdCBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgIyBubyBwYXJhbWV0ZXJzLCBNRVRIX05PQVJHUwpAQCAtNzk3LDggKzgwNSw5IEBACiAgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUpCiAKICAgICAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAiIiIgJSBhcmduYW1lLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgZWxpZiBoYXNfb3B0aW9uX2dyb3VwczoKQEAgLTgyMiw4ICs4MzEsOSBAQAogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ7bmFtZX0iLAogICAgICAgICAgICAgICAgICAgICB7dW5wYWNrX21pbn0sIHt1bnBhY2tfbWF4fSwKLSAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogCiAgICAgICAgIGVsaWYgcG9zaXRpb25hbDoKQEAgLTgzNSwxMCArODQ1LDI0IEBACiAKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCiAgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKKyAgICAgICAgZWxpZiBub3QgbmV3X29yX2luaXQ6CisgICAgICAgICAgICBmbGFncyA9ICJNRVRIX0ZBU1RDQUxMIgorCisgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9mYXN0Y2FsbAorCisgICAgICAgICAgICBib2R5ID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICAgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CisgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgYm9keSkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gaW5zZXJ0X2tleXdvcmRzKHBhcnNlcl9kZWZpbml0aW9uKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBwb3NpdGlvbmFsLW9yLWtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgICAgICBmbGFncyA9ICJNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUyIKQEAgLTg0NiwxNSArODcwLDEyIEBACiAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9rZXl3b3JkCiAKICAgICAgICAgICAgIGJvZHkgPSBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgICAgICAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKLSAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9IiwgX2tleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKKyAgICAgICAgICAgICAgICB9fQorICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpCisgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIGJvZHkpCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IGluc2VydF9rZXl3b3JkcyhwYXJzZXJfZGVmaW5pdGlvbikKIAogCkBAIC04NzgsMTMgKzg5OSwxNSBAQAogCiAgICAgICAgICAgICBpZiBub3QgcGFyc2VzX2tleXdvcmRzOgogICAgICAgICAgICAgICAgIGZpZWxkcy5pbnNlcnQoMCwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9LZXl3b3Jkcygie25hbWV9Iiwga3dhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHtzZWxmX3R5cGVfY2hlY2t9IV9QeUFyZ19Ob0tleXdvcmRzKCJ7bmFtZX0iLCBrd2FyZ3MpKSB7ewogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKICAgICAgICAgICAgICAgICBpZiBub3QgcGFyc2VzX3Bvc2l0aW9uYWw6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5pbnNlcnQoMCwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vUG9zaXRpb25hbCgie25hbWV9IiwgYXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vUG9zaXRpb25hbCgie25hbWV9IiwgYXJncykpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICAgICAgfX0KICAgICAgICAgICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsICpmaWVsZHMpCkBAIC0xMDMyLDggKzEwNTUsOSBAQAogCiAgICAgICAgICAgICBzID0gIiIiCiAgICAgY2FzZSB7Y291bnR9OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH19CiAgICAgICAgIHtncm91cF9ib29sZWFuc30KICAgICAgICAgYnJlYWs7CiAiIiJbMTpdCkBAIC0xMDY3LDcgKzEwOTEsNyBAQAogCiAgICAgICAgIGxhc3RfZ3JvdXAgPSAwCiAgICAgICAgIGZpcnN0X29wdGlvbmFsID0gbGVuKHNlbGZsZXNzKQotICAgICAgICBwb3NpdGlvbmFsID0gc2VsZmxlc3MgYW5kIHNlbGZsZXNzWy0xXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWQorICAgICAgICBwb3NpdGlvbmFsID0gc2VsZmxlc3MgYW5kIHNlbGZsZXNzWy0xXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBuZXdfb3JfaW5pdCA9IGYua2luZCBpbiAoTUVUSE9EX05FVywgTUVUSE9EX0lOSVQpCiAgICAgICAgIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlciA9IChub3QgZi5yZXR1cm5fY29udmVydGVyIG9yCiAgICAgICAgICAgICBmLnJldHVybl9jb252ZXJ0ZXIudHlwZSA9PSAnUHlPYmplY3QgKicpCkBAIC0xMjE2LDcgKzEyNDAsNyBAQAogCiBkZWYgY3JlYXRlX3JlZ2V4KGJlZm9yZSwgYWZ0ZXIsIHdvcmQ9VHJ1ZSwgd2hvbGVfbGluZT1UcnVlKToKICAgICAiIiJDcmVhdGUgYW4gcmUgb2JqZWN0IGZvciBtYXRjaGluZyBtYXJrZXIgbGluZXMuIiIiCi0gICAgZ3JvdXBfcmUgPSAiXHcrIiBpZiB3b3JkIGVsc2UgIi4rIgorICAgIGdyb3VwX3JlID0gciJcdysiIGlmIHdvcmQgZWxzZSAiLisiCiAgICAgcGF0dGVybiA9IHIne30oe30pe30nCiAgICAgaWYgd2hvbGVfbGluZToKICAgICAgICAgcGF0dGVybiA9ICdeJyArIHBhdHRlcm4gKyAnJCcKQEAgLTIzNTksNyArMjM4MywxMCBAQAogICAgICAgICAgICAgZGF0YS5tb2RpZmljYXRpb25zLmFwcGVuZCgnLyogbW9kaWZpY2F0aW9ucyBmb3IgJyArIG5hbWUgKyAnICovXG4nICsgbW9kaWZpY2F0aW9ucy5yc3RyaXAoKSkKIAogICAgICAgICAjIGtleXdvcmRzCi0gICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKHBhcmFtZXRlci5uYW1lKQorICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfcG9zaXRpb25hbF9vbmx5KCk6CisgICAgICAgICAgICBkYXRhLmtleXdvcmRzLmFwcGVuZCgnJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKHBhcmFtZXRlci5uYW1lKQogCiAgICAgICAgICMgZm9ybWF0X3VuaXRzCiAgICAgICAgIGlmIHNlbGYuaXNfb3B0aW9uYWwoKSBhbmQgJ3wnIG5vdCBpbiBkYXRhLmZvcm1hdF91bml0czoKQEAgLTI1NzIsMjEgKzI1OTksMjEgQEAKICAgICAgICAgaWYgbm90IGJpdHdpc2U6CiAgICAgICAgICAgICBmYWlsKCJVbnNpZ25lZCBsb25ncyBtdXN0IGJlIGJpdHdpc2UgKGZvciBub3cpLiIpCiAKLWNsYXNzIFBZX0xPTkdfTE9OR19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQWV9MT05HX0xPTkcnCitjbGFzcyBsb25nX2xvbmdfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnbG9uZyBsb25nJwogICAgIGRlZmF1bHRfdHlwZSA9IGludAogICAgIGZvcm1hdF91bml0ID0gJ0wnCiAgICAgY19pZ25vcmVkX2RlZmF1bHQgPSAiMCIKIAotY2xhc3MgdW5zaWduZWRfUFlfTE9OR19MT05HX2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ3Vuc2lnbmVkIFBZX0xPTkdfTE9ORycKK2NsYXNzIHVuc2lnbmVkX2xvbmdfbG9uZ19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICd1bnNpZ25lZCBsb25nIGxvbmcnCiAgICAgZGVmYXVsdF90eXBlID0gaW50CiAgICAgZm9ybWF0X3VuaXQgPSAnSycKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICIwIgogCiAgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGJpdHdpc2U9RmFsc2UpOgogICAgICAgICBpZiBub3QgYml0d2lzZToKLSAgICAgICAgICAgIGZhaWwoIlVuc2lnbmVkIFBZX0xPTkdfTE9OR3MgbXVzdCBiZSBiaXR3aXNlIChmb3Igbm93KS4iKQorICAgICAgICAgICAgZmFpbCgiVW5zaWduZWQgbG9uZyBsb25nIG11c3QgYmUgYml0d2lzZSAoZm9yIG5vdykuIikKIAogY2xhc3MgUHlfc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeV9zc2l6ZV90JwpAQCAtMjY3Niw3ICsyNzAzLDcgQEAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgaWYgc2VsZi5lbmNvZGluZzoKICAgICAgICAgICAgIG5hbWUgPSBlbnN1cmVfbGVnYWxfY19pZGVudGlmaWVyKHNlbGYubmFtZSkKLSAgICAgICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIpXG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xuIl0pCisgICAgICAgICAgICByZXR1cm4gIiIuam9pbihbImlmICgiLCBuYW1lLCAiKSB7XG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xufVxuIl0pCiAKICMKICMgVGhpcyBpcyB0aGUgZm91cnRoIG9yIGZpZnRoIHJld3JpdGUgb2YgcmVnaXN0ZXJpbmcgYWxsIHRoZQpAQCAtMjc4Niw3ICsyODEzLDcgQEAKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBuYW1lID0gZW5zdXJlX2xlZ2FsX2NfaWRlbnRpZmllcihzZWxmLm5hbWUpCi0gICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIub2JqKVxuICAgUHlCdWZmZXJfUmVsZWFzZSgmIiwgbmFtZSwgIik7XG4iXSkKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIi5vYmopIHtcbiAgIFB5QnVmZmVyX1JlbGVhc2UoJiIsIG5hbWUsICIpO1xufVxuIl0pCiAKIAogZGVmIGNvcnJlY3RfbmFtZV9mb3Jfc2VsZihmKToKQEAgLTI5NTksMTAgKzI5ODYsMTAgQEAKICAgICAgICAgZGF0YS5yZXR1cm5fdmFsdWUgPSBuYW1lCiAKICAgICBkZWYgZXJyX29jY3VycmVkX2lmKHNlbGYsIGV4cHIsIGRhdGEpOgotICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKCh7fSkgJiYgUHlFcnJfT2NjdXJyZWQoKSlcbiAgICBnb3RvIGV4aXQ7XG4nLmZvcm1hdChleHByKSkKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoJ2lmICgoe30pICYmIFB5RXJyX09jY3VycmVkKCkpIHt7XG4gICAgZ290byBleGl0O1xufX1cbicuZm9ybWF0KGV4cHIpKQogCiAgICAgZGVmIGVycl9vY2N1cnJlZF9pZl9udWxsX3BvaW50ZXIoc2VsZiwgdmFyaWFibGUsIGRhdGEpOgotICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKHt9ID09IE5VTEwpXG4gICAgZ290byBleGl0O1xuJy5mb3JtYXQodmFyaWFibGUpKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKHt9ID09IE5VTEwpIHt7XG4gICAgZ290byBleGl0O1xufX1cbicuZm9ybWF0KHZhcmlhYmxlKSkKIAogICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgogICAgICAgICAiIiIKQEAgLTI5NzcsOCArMzAwNCw5IEBACiAgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CiAgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnJycKLWlmIChfcmV0dXJuX3ZhbHVlICE9IFB5X05vbmUpCitpZiAoX3JldHVybl92YWx1ZSAhPSBQeV9Ob25lKSB7CiAgICAgZ290byBleGl0OworfQogcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKIFB5X0lOQ1JFRihQeV9Ob25lKTsKICcnJy5zdHJpcCgpKQpAQCAtMzE4Myw2ICszMjExLDcgQEAKICAgICAgICAgc2VsZi5zdGF0ZSA9IHNlbGYuc3RhdGVfZHNsX3N0YXJ0CiAgICAgICAgIHNlbGYucGFyYW1ldGVyX2luZGVudCA9IE5vbmUKICAgICAgICAgc2VsZi5rZXl3b3JkX29ubHkgPSBGYWxzZQorICAgICAgICBzZWxmLnBvc2l0aW9uYWxfb25seSA9IEZhbHNlCiAgICAgICAgIHNlbGYuZ3JvdXAgPSAwCiAgICAgICAgIHNlbGYucGFyYW1ldGVyX3N0YXRlID0gc2VsZi5wc19zdGFydAogICAgICAgICBzZWxmLnNlZW5fcG9zaXRpb25hbF93aXRoX2RlZmF1bHQgPSBGYWxzZQpAQCAtMzU2MSw4ICszNTkwLDggQEAKICAgICAjICJwYXJhbWV0ZXJfc3RhdGUiLiAgKFByZXZpb3VzbHkgdGhlIGNvZGUgd2FzIGEgbWlhc21hIG9mIGlmcyBhbmQKICAgICAjIHNlcGFyYXRlIGJvb2xlYW4gc3RhdGUgdmFyaWFibGVzLikgIFRoZSBzdGF0ZXMgYXJlOgogICAgICMKLSAgICAjICBbIFsgYSwgYiwgXSBjLCBdIGQsIGUsIGY9MywgWyBnLCBoLCBbIGkgXSBdIC8gICA8LSBsaW5lCi0gICAgIyAwMSAgIDIgICAgICAgICAgMyAgICAgICA0ICAgIDUgICAgICAgICAgIDYgICA3ICAgPC0gc3RhdGUgdHJhbnNpdGlvbnMKKyAgICAjICBbIFsgYSwgYiwgXSBjLCBdIGQsIGUsIGY9MywgWyBnLCBoLCBbIGkgXSBdICAgPC0gbGluZQorICAgICMgMDEgICAyICAgICAgICAgIDMgICAgICAgNCAgICA1ICAgICAgICAgICA2ICAgICA8LSBzdGF0ZSB0cmFuc2l0aW9ucwogICAgICMKICAgICAjIDA6IHBzX3N0YXJ0LiAgYmVmb3JlIHdlJ3ZlIHNlZW4gYW55dGhpbmcuICBsZWdhbCB0cmFuc2l0aW9ucyBhcmUgdG8gMSBvciAzLgogICAgICMgMTogcHNfbGVmdF9zcXVhcmVfYmVmb3JlLiAgbGVmdCBzcXVhcmUgYnJhY2tldHMgYmVmb3JlIHJlcXVpcmVkIHBhcmFtZXRlcnMuCkBAIC0zNTczLDkgKzM2MDIsOCBAQAogICAgICMgICAgbm93IG11c3QgaGF2ZSBkZWZhdWx0IHZhbHVlcy4KICAgICAjIDU6IHBzX2dyb3VwX2FmdGVyLiAgaW4gYSBncm91cCwgYWZ0ZXIgcmVxdWlyZWQgcGFyYW1ldGVycy4KICAgICAjIDY6IHBzX3JpZ2h0X3NxdWFyZV9hZnRlci4gIHJpZ2h0IHNxdWFyZSBicmFja2V0cyBhZnRlciByZXF1aXJlZCBwYXJhbWV0ZXJzLgotICAgICMgNzogcHNfc2Vlbl9zbGFzaC4gIHNlZW4gc2xhc2guCiAgICAgcHNfc3RhcnQsIHBzX2xlZnRfc3F1YXJlX2JlZm9yZSwgcHNfZ3JvdXBfYmVmb3JlLCBwc19yZXF1aXJlZCwgXAotICAgIHBzX29wdGlvbmFsLCBwc19ncm91cF9hZnRlciwgcHNfcmlnaHRfc3F1YXJlX2FmdGVyLCBwc19zZWVuX3NsYXNoID0gcmFuZ2UoOCkKKyAgICBwc19vcHRpb25hbCwgcHNfZ3JvdXBfYWZ0ZXIsIHBzX3JpZ2h0X3NxdWFyZV9hZnRlciA9IHJhbmdlKDcpCiAKICAgICBkZWYgc3RhdGVfcGFyYW1ldGVyc19zdGFydChzZWxmLCBsaW5lKToKICAgICAgICAgaWYgc2VsZi5pZ25vcmVfbGluZShsaW5lKToKQEAgLTM4NTQsOSArMzg4Miw2IEBACiAgICAgICAgIHJldHVybiBuYW1lLCBGYWxzZSwga3dhcmdzCiAKICAgICBkZWYgcGFyc2Vfc3BlY2lhbF9zeW1ib2woc2VsZiwgc3ltYm9sKToKLSAgICAgICAgaWYgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPT0gc2VsZi5wc19zZWVuX3NsYXNoOgotICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgc3BlY2lmaWVzICIgKyBzeW1ib2wgKyAiIGFmdGVyIC8sIHdoaWNoIGlzIHVuc3VwcG9ydGVkLiIpCi0KICAgICAgICAgaWYgc3ltYm9sID09ICcqJzoKICAgICAgICAgICAgIGlmIHNlbGYua2V5d29yZF9vbmx5OgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIHVzZXMgJyonIG1vcmUgdGhhbiBvbmNlLiIpCkBAIC0zODgzLDEzICszOTA4LDE1IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiB1bnN1cHBvcnRlZCBncm91cCBjb25maWd1cmF0aW9uLiAoVW5leHBlY3RlZCBzdGF0ZSAiICsgc3RyKHNlbGYucGFyYW1ldGVyX3N0YXRlKSArICIuYykiKQogICAgICAgICBlbGlmIHN5bWJvbCA9PSAnLyc6CisgICAgICAgICAgICBpZiBzZWxmLnBvc2l0aW9uYWxfb25seToKKyAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiB1c2VzICcvJyBtb3JlIHRoYW4gb25jZS4iKQorICAgICAgICAgICAgc2VsZi5wb3NpdGlvbmFsX29ubHkgPSBUcnVlCiAgICAgICAgICAgICAjIHBzX3JlcXVpcmVkIGFuZCBwc19vcHRpb25hbCBhcmUgYWxsb3dlZCBoZXJlLCB0aGF0IGFsbG93cyBwb3NpdGlvbmFsLW9ubHkgd2l0aG91dCBvcHRpb24gZ3JvdXBzCiAgICAgICAgICAgICAjIHRvIHdvcmsgKGFuZCBoYXZlIGRlZmF1bHQgdmFsdWVzISkKICAgICAgICAgICAgIGlmIChzZWxmLnBhcmFtZXRlcl9zdGF0ZSBub3QgaW4gKHNlbGYucHNfcmVxdWlyZWQsIHNlbGYucHNfb3B0aW9uYWwsIHNlbGYucHNfcmlnaHRfc3F1YXJlX2FmdGVyLCBzZWxmLnBzX2dyb3VwX2JlZm9yZSkpIG9yIHNlbGYuZ3JvdXA6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIHVuc3VwcG9ydGVkIGdyb3VwIGNvbmZpZ3VyYXRpb24uIChVbmV4cGVjdGVkIHN0YXRlICIgKyBzdHIoc2VsZi5wYXJhbWV0ZXJfc3RhdGUpICsgIi5kKSIpCiAgICAgICAgICAgICBpZiBzZWxmLmtleXdvcmRfb25seToKICAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBtaXhlcyBrZXl3b3JkLW9ubHkgYW5kIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCB3aGljaCBpcyB1bnN1cHBvcnRlZC4iKQotICAgICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPSBzZWxmLnBzX3NlZW5fc2xhc2gKICAgICAgICAgICAgICMgZml4dXAgcHJlY2VkaW5nIHBhcmFtZXRlcnMKICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuZnVuY3Rpb24ucGFyYW1ldGVycy52YWx1ZXMoKToKICAgICAgICAgICAgICAgICBpZiAocC5raW5kICE9IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCBhbmQgbm90IGlzaW5zdGFuY2UocC5jb252ZXJ0ZXIsIHNlbGZfY29udmVydGVyKSk6CkBAIC0zOTc3LDIzICs0MDA0LDIwIEBACiAgICAgICAgICMgcG9wdWxhdGUgInJpZ2h0X2JyYWNrZXRfY291bnQiIGZpZWxkIGZvciBldmVyeSBwYXJhbWV0ZXIKICAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnMsICJXZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBzZWxmIHBhcmFtZXRlci4gIiArIHJlcHIoZikKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFyYW1ldGVyc1swXS5jb252ZXJ0ZXIsIHNlbGZfY29udmVydGVyKQorICAgICAgICAjIHNlbGYgaXMgYWx3YXlzIHBvc2l0aW9uYWwtb25seS4KKyAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnNbMF0uaXNfcG9zaXRpb25hbF9vbmx5KCkKICAgICAgICAgcGFyYW1ldGVyc1swXS5yaWdodF9icmFja2V0X2NvdW50ID0gMAotICAgICAgICBwYXJhbWV0ZXJzX2FmdGVyX3NlbGYgPSBwYXJhbWV0ZXJzWzE6XQotICAgICAgICBpZiBwYXJhbWV0ZXJzX2FmdGVyX3NlbGY6Ci0gICAgICAgICAgICAjIGZvciBub3csIHRoZSBvbmx5IHdheSBDbGluaWMgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMKLSAgICAgICAgICAgICMgaXMgaWYgYWxsIG9mIHRoZW0gYXJlIHBvc2l0aW9uYWwtb25seS4uLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAuLi4gZXhjZXB0IGZvciBzZWxmISAgc2VsZiBpcyBhbHdheXMgcG9zaXRpb25hbC1vbmx5LgotCi0gICAgICAgICAgICBwb3NpdGlvbmFsX29ubHlfcGFyYW1ldGVycyA9IFtwLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZIGZvciBwIGluIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZl0KLSAgICAgICAgICAgIGlmIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZlswXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWToKLSAgICAgICAgICAgICAgICBhc3NlcnQgYWxsKHBvc2l0aW9uYWxfb25seV9wYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IGFicyhwLmdyb3VwKQorICAgICAgICBwb3NpdGlvbmFsX29ubHkgPSBUcnVlCisgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnNbMTpdOgorICAgICAgICAgICAgaWYgbm90IHAuaXNfcG9zaXRpb25hbF9vbmx5KCk6CisgICAgICAgICAgICAgICAgcG9zaXRpb25hbF9vbmx5ID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHBvc2l0aW9uYWxfb25seQorICAgICAgICAgICAgaWYgcG9zaXRpb25hbF9vbmx5OgorICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IGFicyhwLmdyb3VwKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIGRvbid0IHB1dCBhbnkgcmlnaHQgYnJhY2tldHMgYXJvdW5kIG5vbi1wb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycywgZXZlci4KLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBwYXJhbWV0ZXJzX2FmdGVyX3NlbGY6Ci0gICAgICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IDAKKyAgICAgICAgICAgICAgICBwLnJpZ2h0X2JyYWNrZXRfY291bnQgPSAwCiAKICAgICAgICAgcmlnaHRfYnJhY2tldF9jb3VudCA9IDAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZGVtby9zczEucHkgYi9Ub29scy9kZW1vL3NzMS5weQppbmRleCBjNTFmMDQxLi5iZjg4ODIwIDEwMDc1NQotLS0gYS9Ub29scy9kZW1vL3NzMS5weQorKysgYi9Ub29scy9kZW1vL3NzMS5weQpAQCAtNDEzLDcgKzQxMyw3IEBACiAKICAgICBkZWYgcmVudW1iZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIGR4LCBkeSk6CiAgICAgICAgIG91dCA9IFtdCi0gICAgICAgIGZvciBwYXJ0IGluIHJlLnNwbGl0KCcoXHcrKScsIHNlbGYuZm9ybXVsYSk6CisgICAgICAgIGZvciBwYXJ0IGluIHJlLnNwbGl0KHInKFx3KyknLCBzZWxmLmZvcm11bGEpOgogICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCdeKFtBLVpdKykoWzEtOV1bMC05XSopJCcsIHBhcnQpCiAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHN4LCBzeSA9IG0uZ3JvdXBzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CmluZGV4IDQ0ZWRkNTcuLmQ2MDJmNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKKysrIGIvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQpAQCAtMTI0LDkgKzEyNCw3IEBACiAKICAgICAjIGRlZmF1bHQgdGhlIGV4Y2x1ZGUgbGlzdCBmb3IgZWFjaCBwbGF0Zm9ybQogICAgIGlmIHdpbjogZXhjbHVkZSA9IGV4Y2x1ZGUgKyBbCi0gICAgICAgICdkb3MnLCAnZG9zcGF0aCcsICdtYWMnLCAnbWFjcGF0aCcsICdtYWNmcycsICdNQUNGUycsICdwb3NpeCcsCi0gICAgICAgICdjZScsCi0gICAgICAgIF0KKyAgICAgICAgJ2RvcycsICdkb3NwYXRoJywgJ21hYycsICdtYWNwYXRoJywgJ21hY2ZzJywgJ01BQ0ZTJywgJ3Bvc2l4JywgXQogCiAgICAgZmFpbF9pbXBvcnQgPSBleGNsdWRlWzpdCiAKQEAgLTIxOCw3ICsyMTYsNyBAQAogICAgIGlzaG9tZSA9IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwcmVmaXgsICdQeXRob24nLCAnY2V2YWwuYycpKQogCiAgICAgIyBsb2NhdGlvbnMgZGVyaXZlZCBmcm9tIG9wdGlvbnMKLSAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb25bOjNdCisgICAgdmVyc2lvbiA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgIGZsYWdnZWRfdmVyc2lvbiA9IHZlcnNpb24gKyBzeXMuYWJpZmxhZ3MKICAgICBpZiB3aW46CiAgICAgICAgIGV4dGVuc2lvbnNfYyA9ICdmcm96ZW5fZXh0ZW5zaW9ucy5jJwpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weSBiL1Rvb2xzL2ZyZWV6ZS93aW5tYWtlbWFrZWZpbGUucHkKaW5kZXggMzkwZDhhYy4uOWJiM2U2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weQorKysgYi9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5CkBAIC05NSw3ICs5NSw3IEBACiAgICAgcHJpbnQoKQogCiAgICAgcHJpbnQoJyQodGVtcF9kaXIpOicpCi0gICAgcHJpbnQoJyAgaWYgbm90IGV4aXN0ICQodGVtcF9kaXIpXC4gbWtkaXIgJCh0ZW1wX2RpciknKQorICAgIHByaW50KHInICBpZiBub3QgZXhpc3QgJCh0ZW1wX2RpcilcLiBta2RpciAkKHRlbXBfZGlyKScpCiAgICAgcHJpbnQoKQogCiAgICAgb2JqZWN0cyA9IFtdCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGUpCiAgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGJhc2UpCiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChiYXNlICsgIi5vYmoiKQotICAgICAgICAgICAgcHJpbnQoJyQodGVtcF9kaXIpXCVzLm9iajogIiVzIicgJSAoYmFzZSwgZmlsZSkpCisgICAgICAgICAgICBwcmludChyJyQodGVtcF9kaXIpXCVzLm9iajogIiVzIicgJSAoYmFzZSwgZmlsZSkpCiAgICAgICAgICAgICBwcmludCgiXHRAJChDQykgLWMgLW5vbG9nbyAvRm8kKiAkKGNkbCkgJChjX2RlYnVnKSAvRCBCVUlMRF9GUkVFWkUiLCBlbmQ9JyAnKQogICAgICAgICAgICAgcHJpbnQoJyItSSQocHl0aG9uaG9tZSkvSW5jbHVkZSIgICItSSQocHl0aG9uaG9tZSkvUEMiIFxcJykKICAgICAgICAgICAgIHByaW50KCJcdFx0JChjZmxhZ3MpICQoY2RlYnVnKSAkKGNpbmNsdWRlKSBcXCIpCkBAIC0xMjYsNyArMTI2LDcgQEAKICAgICBwcmludCgpIDsgcHJpbnQoKQogCiAgICAgcHJpbnQoIk9CSlM9IiwgZW5kPScgJykKLSAgICBmb3Igb2JqIGluIG9iamVjdHM6IHByaW50KCciJCh0ZW1wX2RpcilcJXMiJyAlIChvYmopLCBlbmQ9JyAnKQorICAgIGZvciBvYmogaW4gb2JqZWN0czogcHJpbnQociciJCh0ZW1wX2RpcilcJXMiJyAlIChvYmopLCBlbmQ9JyAnKQogICAgIHByaW50KCkgOyBwcmludCgpCiAKICAgICBwcmludCgiTElCUz0iLCBlbmQ9JyAnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weSBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKaW5kZXggNzVmMWNjYi4uM2U5NWI0NCAxMDA3NTUKLS0tIGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQorKysgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CkBAIC00NCw3ICs0NCw3IEBACiAjIE5PVEU6IHNvbWUgZ2RicyBhcmUgbGlua2VkIHdpdGggUHl0aG9uIDMsIHNvIHRoaXMgZmlsZSBzaG91bGQgYmUgZHVhbC1zeW50YXgKICMgY29tcGF0aWJsZSAoMi42KyBhbmQgMy4wKykuICBTZWUgIzE5MzA4LgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uLCB3aXRoX3N0YXRlbWVudAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGdkYgogaW1wb3J0IG9zCiBpbXBvcnQgbG9jYWxlCmRpZmYgLS1naXQgYS9Ub29scy9oZy9oZ3RvdWNoLnB5IGIvVG9vbHMvaGcvaGd0b3VjaC5weQppbmRleCAxMTlkODEyLi5mYmNhNDY5IDEwMDY0NAotLS0gYS9Ub29scy9oZy9oZ3RvdWNoLnB5CisrKyBiL1Rvb2xzL2hnL2hndG91Y2gucHkKQEAgLTcsNyArNyw2IEBACiAKIEluIGFkZGl0aW9uIHRvIHRoZSBkZXBlbmRlbmN5IHN5bnRheCwgIy1jb21tZW50cyBhcmUgc3VwcG9ydGVkLgogIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiBpbXBvcnQgZXJybm8KIGltcG9ydCBvcwogaW1wb3J0IHRpbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5IGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKaW5kZXggZGE0MjQzOC4uOGVmNWZmOCAxMDA3NTUKLS0tIGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkKKysrIGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKQEAgLTE1Niw3ICsxNTYsOCBAQAogIiIiKQogCiBpbXBvcnQgb3MKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBzeXMKIGltcG9ydCBnbG9iCiBpbXBvcnQgdGltZQpAQCAtMjYzLDggKzI2NCw3IEBACiAgICAgIyBnZXQgZXh0ZW5zaW9uIGZvciBweXRob24gc291cmNlIGZpbGVzCiAgICAgaWYgJ19weV9leHQnIG5vdCBpbiBnbG9iYWxzKCk6CiAgICAgICAgIGdsb2JhbCBfcHlfZXh0Ci0gICAgICAgIF9weV9leHQgPSBbdHJpcGxlWzBdIGZvciB0cmlwbGUgaW4gaW1wLmdldF9zdWZmaXhlcygpCi0gICAgICAgICAgICAgICAgICAgaWYgdHJpcGxlWzJdID09IGltcC5QWV9TT1VSQ0VdWzBdCisgICAgICAgIF9weV9leHQgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1swXQogCiAgICAgIyBkb24ndCByZWN1cnNlIGludG8gQ1ZTIGRpcmVjdG9yaWVzCiAgICAgaWYgJ0NWUycgaW4gbmFtZXM6CkBAIC0yNzcsNDUgKzI3Nyw2IEBACiAgICAgICAgICkKIAogCi1kZWYgX2dldF9tb2Rwa2dfcGF0aChkb3R0ZWRfbmFtZSwgcGF0aGxpc3Q9Tm9uZSk6Ci0gICAgIiIiR2V0IHRoZSBmaWxlc3lzdGVtIHBhdGggZm9yIGEgbW9kdWxlIG9yIGEgcGFja2FnZS4KLQotICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCB0byBhIGZpbGUgZm9yIGEgbW9kdWxlLCBhbmQgdG8gYSBkaXJlY3RvcnkgZm9yCi0gICAgYSBwYWNrYWdlLiBSZXR1cm4gTm9uZSBpZiB0aGUgbmFtZSBpcyBub3QgZm91bmQsIG9yIGlzIGEgYnVpbHRpbiBvcgotICAgIGV4dGVuc2lvbiBtb2R1bGUuCi0gICAgIiIiCi0gICAgIyBzcGxpdCBvZmYgdG9wLW1vc3QgbmFtZQotICAgIHBhcnRzID0gZG90dGVkX25hbWUuc3BsaXQoJy4nLCAxKQotCi0gICAgaWYgbGVuKHBhcnRzKSA+IDE6Ci0gICAgICAgICMgd2UgaGF2ZSBhIGRvdHRlZCBwYXRoLCBpbXBvcnQgdG9wLWxldmVsIHBhY2thZ2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKHBhcnRzWzBdLCBwYXRobGlzdCkKLSAgICAgICAgICAgIGlmIGZpbGU6IGZpbGUuY2xvc2UoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICMgY2hlY2sgaWYgaXQncyBpbmRlZWQgYSBwYWNrYWdlCi0gICAgICAgIGlmIGRlc2NyaXB0aW9uWzJdID09IGltcC5QS0dfRElSRUNUT1JZOgotICAgICAgICAgICAgIyByZWN1cnNpdmVseSBoYW5kbGUgdGhlIHJlbWFpbmluZyBuYW1lIHBhcnRzCi0gICAgICAgICAgICBwYXRobmFtZSA9IF9nZXRfbW9kcGtnX3BhdGgocGFydHNbMV0sIFtwYXRobmFtZV0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLSAgICBlbHNlOgotICAgICAgICAjIHBsYWluIG5hbWUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKAotICAgICAgICAgICAgICAgIGRvdHRlZF9uYW1lLCBwYXRobGlzdCkKLSAgICAgICAgICAgIGlmIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICBpZiBkZXNjcmlwdGlvblsyXSBub3QgaW4gW2ltcC5QWV9TT1VSQ0UsIGltcC5QS0dfRElSRUNUT1JZXToKLSAgICAgICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGF0aG5hbWUgPSBOb25lCi0KLSAgICByZXR1cm4gcGF0aG5hbWUKLQotCiBkZWYgZ2V0RmlsZXNGb3JOYW1lKG5hbWUpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgbW9kdWxlIGZpbGVzIGZvciBhIGZpbGVuYW1lLCBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUsCiAgICAgb3IgYSBkaXJlY3RvcnkuCkBAIC0zMzAsNyArMjkxLDExIEBACiAgICAgICAgICAgICByZXR1cm4gbGlzdAogCiAgICAgICAgICMgdHJ5IHRvIGZpbmQgbW9kdWxlIG9yIHBhY2thZ2UKLSAgICAgICAgbmFtZSA9IF9nZXRfbW9kcGtnX3BhdGgobmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICAgICAgICAgICAgbmFtZSA9IHNwZWMub3JpZ2luCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICAgcmV0dXJuIFtdCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idWlsZHJlbGVhc2UuYmF0IGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKaW5kZXggZThkYTNlYy4uYzY3MmRkMCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKKysrIGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKQEAgLTM1LDcgKzM1LDcgQEAKIHNldCBCVUlMRFg2ND0NCiBzZXQgVEFSR0VUPVJlYnVpbGQNCiBzZXQgVEVTVFRBUkdFVERJUj0NCi1zZXQgUEdPPQ0KK3NldCBQR089ZGVmYXVsdA0KIA0KIA0KIDpDaGVja09wdHMNCkBAIC01NSw2ICs1NSw3IEBACiBpZiAiJTEiIEVRVSAiLXg4NiIgKHNldCBCVUlMRFg4Nj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KIGlmICIlMSIgRVFVICIteDY0IiAoc2V0IEJVSUxEWDY0PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIiBFUVUgIi0tcGdvIiAoc2V0IFBHTz0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tc2tpcC1wZ28iIChzZXQgUEdPPSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCiANCiBpZiAiJTEiIE5FUSAiIiBlY2hvIEludmFsaWQgb3B0aW9uOiAiJTEiICYmIGV4aXQgL0IgMQ0KIA0KQEAgLTEwNSwyMCArMTA2LDE1IEBACiANCiBpZiAiJTEiIEVRVSAieDg2IiAoDQogICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Ng0KKyAgICBzZXQgUEdPPQ0KICAgICBzZXQgQlVJTEQ9JVBDQlVJTEQld2luMzJcDQogICAgIHNldCBCVUlMRF9QTEFUPVdpbjMyDQogICAgIHNldCBPVVRESVJfUExBVD13aW4zMg0KICAgICBzZXQgT0JKRElSX1BMQVQ9eDg2DQotKSBlbHNlIGlmICIlfjIiIE5FUSAiIiAoDQotICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIGFtZDY0DQotICAgIHNldCBQR089JX4yDQotICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NC1wZ29cDQotICAgIHNldCBCVUlMRF9QTEFUPXg2NA0KLSAgICBzZXQgT1VURElSX1BMQVQ9YW1kNjQNCi0gICAgc2V0IE9CSkRJUl9QTEFUPXg2NA0KICkgZWxzZSAoDQogICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIGFtZDY0DQogICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NFwNCisgICAgc2V0IFBHTz0lfjINCiAgICAgc2V0IEJVSUxEX1BMQVQ9eDY0DQogICAgIHNldCBPVVRESVJfUExBVD1hbWQ2NA0KICAgICBzZXQgT0JKRElSX1BMQVQ9eDY0DQpAQCAtMTc0LDEyICsxNzAsMTEgQEAKICAgICBAZWNobyBvZmYNCiApDQogDQotc2V0IEJVSUxET1BUUz0vcDpCdWlsZEZvclJlbGVhc2U9dHJ1ZSAvcDpEb3dubG9hZFVybD0lRE9XTkxPQURfVVJMJSAvcDpEb3dubG9hZFVybEJhc2U9JURPV05MT0FEX1VSTF9CQVNFJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCi1pZiAiJVBHTyUiIE5FUSAiIiBzZXQgQlVJTERPUFRTPSVCVUlMRE9QVFMlIC9wOlBHT0J1aWxkUGF0aD0lQlVJTEQlDQorc2V0IEJVSUxET1BUUz0vcDpQbGF0Zm9ybT0lMSAvcDpCdWlsZEZvclJlbGVhc2U9dHJ1ZSAvcDpEb3dubG9hZFVybD0lRE9XTkxPQURfVVJMJSAvcDpEb3dubG9hZFVybEJhc2U9JURPV05MT0FEX1VSTF9CQVNFJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCiBtc2J1aWxkICIlRCVsYXVuY2hlclxsYXVuY2hlci53aXhwcm9qIiAvcDpQbGF0Zm9ybT14ODYgJUNFUlRPUFRTJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCi1tc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZWxvY2FsLndpeHByb2oiIC90OlJlYnVpbGQgL3A6UGxhdGZvcm09JTEgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPXRydWUNCittc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZWxvY2FsLndpeHByb2oiIC90OlJlYnVpbGQgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPXRydWUNCiBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KLW1zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNld2ViLndpeHByb2oiIC90OlJlYnVpbGQgL3A6UGxhdGZvcm09JTEgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPWZhbHNlDQorbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2V3ZWIud2l4cHJvaiIgL3Q6UmVidWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9ZmFsc2UNCiBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KIA0KIG1zYnVpbGQgIiVEJW1ha2VfemlwLnByb2oiIC90OkJ1aWxkICVCVUlMRE9QVFMlICVDRVJUT1BUUyUNCkBAIC0xOTYsNyArMTkxLDcgQEAKIA0KIDpIZWxwDQogZWNobyBidWlsZHJlbGVhc2UuYmF0IFstLW91dCBESVJdIFsteDg2XSBbLXg2NF0gWy0tY2VydGlmaWNhdGUgQ0VSVE5BTUVdIFstLWJ1aWxkXSBbLS1za2lwLWJ1aWxkXQ0KLWVjaG8gICAgICAgICAgICAgICAgICBbLS1wZ28gQ09NTUFORF0gWy0tc2tpcC1kb2NdIFstLWRvd25sb2FkIERPV05MT0FEIFVSTF0gWy0tdGVzdCBUQVJHRVRESVJdDQorZWNobyAgICAgICAgICAgICAgICAgIFstLXBnbyBDT01NQU5EXSBbLS1za2lwLXBnb10gWy0tc2tpcC1kb2NdIFstLWRvd25sb2FkIERPV05MT0FEIFVSTF0gWy0tdGVzdCBUQVJHRVRESVJdDQogZWNobyAgICAgICAgICAgICAgICAgIFstaF0NCiBlY2hvLg0KIGVjaG8gICAgLS1vdXQgKC1vKSAgICAgICAgICBTcGVjaWZ5IGFuIGFkZGl0aW9uYWwgb3V0cHV0IGRpcmVjdG9yeSBmb3IgaW5zdGFsbGVycw0KQEAgLTIwNSw3ICsyMDAsOCBAQAogZWNobyAgICAtLWJ1aWxkICgtYikgICAgICAgIEluY3JlbWVudGFsbHkgYnVpbGQgUHl0aG9uIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcNCiBlY2hvICAgIC0tc2tpcC1idWlsZCAoLUIpICAgRG8gbm90IGJ1aWxkIFB5dGhvbiAoanVzdCBkbyB0aGUgaW5zdGFsbGVycykNCiBlY2hvICAgIC0tc2tpcC1kb2MgKC1EKSAgICAgRG8gbm90IGJ1aWxkIGRvY3VtZW50YXRpb24NCi1lY2hvICAgIC0tcGdvICAgICAgICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMgdXNpbmcgUEdPDQorZWNobyAgICAtLXBnbyAgICAgICAgICAgICAgIFNwZWNpZnkgUEdPIGNvbW1hbmQgZm9yIHg2NCBpbnN0YWxsZXJzDQorZWNobyAgICAtLXNraXAtcGdvICAgICAgICAgIEJ1aWxkIHg2NCBpbnN0YWxsZXJzIHVzaW5nIFBHTw0KIGVjaG8gICAgLS1kb3dubG9hZCAgICAgICAgICBTcGVjaWZ5IHRoZSBmdWxsIGRvd25sb2FkIFVSTCBmb3IgTVNJcw0KIGVjaG8gICAgLS10ZXN0ICAgICAgICAgICAgICBTcGVjaWZ5IHRoZSB0ZXN0IGRpcmVjdG9yeSB0byBydW4gdGhlIGluc3RhbGxlciB0ZXN0cw0KIGVjaG8gICAgLWggICAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaGVscCBpbmZvcm1hdGlvbg0KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0gYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtCmluZGV4IDRkOWM5N2EuLjFjMGJkMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobQpAQCAtMTE2LDEwICsxMTYsMTEgQEAKICAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLlN1Y2Nlc3NIZWFkZXIpPC9UZXh0PgogICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE3OCIgSGVpZ2h0PSIzODIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KIAotICAgICAgICA8SHlwZXJ0ZXh0IE5hbWU9IlN1Y2Nlc3NUZXh0IiBYPSIyMDUiIFk9IjcxIiBXaWR0aD0iLTMxIiBIZWlnaHQ9IjEwMCIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPjwvSHlwZXJ0ZXh0PgorICAgICAgICA8SHlwZXJ0ZXh0IE5hbWU9IlN1Y2Nlc3NUZXh0IiBYPSIyMDUiIFk9IjcxIiBXaWR0aD0iLTcxIiBIZWlnaHQ9IjE1MCIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPjwvSHlwZXJ0ZXh0PgogCi0gICAgICAgIDxUZXh0IE5hbWU9IlN1Y2Nlc3NSZXN0YXJ0VGV4dCIgWD0iMjA1IiBZPSItMTAwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM0IiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzUmVzdGFydFRleHQpPC9UZXh0PgotICAgICAgICA8QnV0dG9uIE5hbWU9IkxhdW5jaEJ1dHRvbiIgWD0iMTg1IiBZPSItNTAiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhGIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NMYXVuY2hCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc01heFBhdGhCdXR0b24iIFg9IjE4NSIgWT0iLTcwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjgxIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RSIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5TdWNjZXNzTWF4UGF0aEJ1dHRvbik8L0J1dHRvbj4KKworICAgICAgICA8VGV4dCBOYW1lPSJTdWNjZXNzUmVzdGFydFRleHQiIFg9IjIwNSIgWT0iLTQwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM0IiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzUmVzdGFydFRleHQpPC9UZXh0PgogICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uIiBYPSItMTAxIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRCdXR0b24pPC9CdXR0b24+CiAgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc0NhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNsb3NlQnV0dG9uKTwvQnV0dG9uPgogICAgIDwvUGFnZT4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwgYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsCmluZGV4IGVkNzkyNDYuLjQzNTA2ZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bApAQCAtMTQyLDQgKzE0Miw3IEBACiAgIDxTdHJpbmcgSWQ9IkZhaWx1cmVXUzJLM09yRWFybGllciI+V2luZG93cyBTZXJ2ZXIgMjAwOCBTUDIgb3IgbGF0ZXIgaXMgcmVxdWlyZWQgdG8gaW5zdGFsbCBhbmQgdXNlIFtXaXhCdW5kbGVOYW1lXS4KIAogVmlzaXQgJmx0O2EgaHJlZj0iaHR0cHM6Ly93d3cucHl0aG9uLm9yZy8iJmd0O3B5dGhvbi5vcmcmbHQ7L2EmZ3Q7IHRvIGRvd25sb2FkIFB5dGhvbiAzLjQuPC9TdHJpbmc+CisKKyAgPFN0cmluZyBJZD0iU3VjY2Vzc01heFBhdGhCdXR0b24iPkRpc2FibGUgcGF0aCBsZW5ndGggbGltaXQ8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc01heFBhdGhCdXR0b25Ob3RlIj5DaGFuZ2VzIHlvdXIgbWFjaGluZSBjb25maWd1cmF0aW9uIHRvIGFsbG93IHByb2dyYW1zLCBpbmNsdWRpbmcgUHl0aG9uLCB0byBieXBhc3MgdGhlIDI2MCBjaGFyYWN0ZXIgIk1BWF9QQVRIIiBsaW1pdGF0aW9uLjwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKaW5kZXggNmE2N2VlMi4uZTg4OTgxZiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcApAQCAtMTEsMTAgKzExLDYgQEAKICNpbmNsdWRlICJwY2guaCIKIAogc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9XSU5ET1dfQ0xBU1MgPSBMIlB5dGhvbkJBIjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIID0gTCJMYXVuY2hUYXJnZXQiOwotc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEID0gTCJMYXVuY2hUYXJnZXRFbGV2YXRlZElkIjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUyA9IEwiTGF1bmNoQXJndW1lbnRzIjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0hJRERFTiA9IEwiTGF1bmNoSGlkZGVuIjsKIHN0YXRpYyBjb25zdCBEV09SRCBQWUJBX0FDUVVJUkVfUEVSQ0VOVEFHRSA9IDMwOwogc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9CVU5ETEVfRklMRV9WRVJTSU9OID0gTCJXaXhCdW5kbGVGaWxlVmVyc2lvbiI7CiAKQEAgLTEyOSwxMSArMTI1LDExIEBACiAgICAgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwKIAogICAgIC8vIFN1Y2Nlc3MgcGFnZQotICAgIElEX0xBVU5DSF9CVVRUT04sCiAgICAgSURfU1VDQ0VTU19URVhULAogICAgIElEX1NVQ0NFU1NfUkVTVEFSVF9URVhULAogICAgIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT04sCiAgICAgSURfU1VDQ0VTU19DQU5DRUxfQlVUVE9OLAorICAgIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLAogCiAgICAgLy8gRmFpbHVyZSBwYWdlCiAgICAgSURfRkFJTFVSRV9MT0dGSUxFX0xJTkssCkBAIC0xODgsMTEgKzE4NCwxMSBAQAogICAgIHsgSURfT1ZFUkFMTF9QUk9HUkVTU19URVhULCBMIk92ZXJhbGxQcm9ncmVzc1RleHQiIH0sCiAgICAgeyBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OLCBMIlByb2dyZXNzQ2FuY2VsQnV0dG9uIiB9LAogCi0gICAgeyBJRF9MQVVOQ0hfQlVUVE9OLCBMIkxhdW5jaEJ1dHRvbiIgfSwKICAgICB7IElEX1NVQ0NFU1NfVEVYVCwgTCJTdWNjZXNzVGV4dCIgfSwKICAgICB7IElEX1NVQ0NFU1NfUkVTVEFSVF9URVhULCBMIlN1Y2Nlc3NSZXN0YXJ0VGV4dCIgfSwKICAgICB7IElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT04sIEwiU3VjY2Vzc1Jlc3RhcnRCdXR0b24iIH0sCiAgICAgeyBJRF9TVUNDRVNTX0NBTkNFTF9CVVRUT04sIEwiU3VjY2Vzc0NhbmNlbEJ1dHRvbiIgfSwKKyAgICB7IElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBMIlN1Y2Nlc3NNYXhQYXRoQnV0dG9uIiB9LAogCiAgICAgeyBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywgTCJGYWlsdXJlTG9nRmlsZUxpbmsiIH0sCiAgICAgeyBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwgTCJGYWlsdXJlTWVzc2FnZVRleHQiIH0sCkBAIC00MzYsNiArNDMyLDExIEBACiAgICAgICAgIGNhc2UgSURfVU5JTlNUQUxMX0JVVFRPTjoKICAgICAgICAgICAgIE9uUGxhbihCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCk7CiAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OOgorICAgICAgICAgICAgRW5hYmxlTWF4UGF0aFN1cHBvcnQoKTsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgTEV4aXQ6CkBAIC01MzMsOSArNTM0LDggQEAKICAgICB9CiAKICAgICB2b2lkIFN1Y2Nlc3NQYWdlX1Nob3coKSB7Ci0gICAgICAgIC8vIG9uIHRoZSAiU3VjY2VzcyIgcGFnZSwgY2hlY2sgaWYgdGhlIHJlc3RhcnQgb3IgbGF1bmNoIGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZC4KKyAgICAgICAgLy8gb24gdGhlICJTdWNjZXNzIiBwYWdlLCBjaGVjayBpZiB0aGUgcmVzdGFydCBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuCiAgICAgICAgIEJPT0wgc2hvd1Jlc3RhcnRCdXR0b24gPSBGQUxTRTsKLSAgICAgICAgQk9PTCBsYXVuY2hUYXJnZXRFeGlzdHMgPSBGQUxTRTsKICAgICAgICAgTE9DX1NUUklORyAqc3VjY2Vzc1RleHQgPSBudWxscHRyOwogICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKICAgICAgICAgCkBAIC01NDMsOCArNTQzLDYgQEAKICAgICAgICAgICAgIGlmIChCT09UU1RSQVBQRVJfUkVTVEFSVF9QUk9NUFQgPT0gX2NvbW1hbmQucmVzdGFydCkgewogICAgICAgICAgICAgICAgIHNob3dSZXN0YXJ0QnV0dG9uID0gVFJVRTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChUaGVtZUNvbnRyb2xFeGlzdHMoX3RoZW1lLCBJRF9MQVVOQ0hfQlVUVE9OKSkgewotICAgICAgICAgICAgbGF1bmNoVGFyZ2V0RXhpc3RzID0gQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgpOwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChfcGxhbm5lZEFjdGlvbikgewpAQCAtNTcxLDkgKzU2OSw0MSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTiwgbGF1bmNoVGFyZ2V0RXhpc3RzICYmIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMIDwgX3BsYW5uZWRBY3Rpb24pOwogICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwgc2hvd1Jlc3RhcnRCdXR0b24pOwogICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CisKKyAgICAgICAgaWYgKF9jb21tYW5kLmFjdGlvbiAhPSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwgfHwKKyAgICAgICAgICAgICFJc1dpbmRvd3NWZXJzaW9uT3JHcmVhdGVyKDEwLCAwLCAwKSkgeworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIEZBTFNFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIERXT1JEIGRhdGFUeXBlID0gMCwgYnVmZmVyID0gMCwgYnVmZmVyTGVuID0gc2l6ZW9mKGJ1ZmZlcik7CisgICAgICAgICAgICBIS0VZIGhLZXk7CisgICAgICAgICAgICBMUkVTVUxUIHJlcyA9IFJlZ09wZW5LZXlFeFcoCisgICAgICAgICAgICAgICAgSEtFWV9MT0NBTF9NQUNISU5FLAorICAgICAgICAgICAgICAgIEwiU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcRmlsZVN5c3RlbSIsCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICBLRVlfUkVBRCwKKyAgICAgICAgICAgICAgICAmaEtleQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIHJlcyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgTCJMb25nUGF0aHNFbmFibGVkIiwgbnVsbHB0ciwgJmRhdGFUeXBlLAorICAgICAgICAgICAgICAgICAgICAoTFBCWVRFKSZidWZmZXIsICZidWZmZXJMZW4pOworICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGhLZXkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJGYWlsZWQgdG8gb3BlbiBTWVNURU1cXEN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxGaWxlU3lzdGVtOiBlcnJvciBjb2RlICVkIiwgcmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUyAmJiBkYXRhVHlwZSA9PSBSRUdfRFdPUkQgJiYgYnVmZmVyID09IDApIHsKKyAgICAgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbGV2YXRlcyhfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBUUlVFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUykKKyAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJGYWlsZWQgdG8gcmVhZCBMb25nUGF0aHNFbmFibGVkIHZhbHVlOiBlcnJvciBjb2RlICVkIiwgcmVzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiSGlkaW5nIE1BWF9QQVRIIGJ1dHRvbiBiZWNhdXNlIGl0IGlzIGFscmVhZHkgZW5hYmxlZCIpOworICAgICAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIEZhaWx1cmVQYWdlX1Nob3coKSB7CkBAIC02MjYsNiArNjU2LDM0IEBACiAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT04sIHNob3dSZXN0YXJ0QnV0dG9uKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBFbmFibGVNYXhQYXRoU3VwcG9ydCgpIHsKKyAgICAgICAgTFBXU1RSIHRhcmdldERpciA9IG51bGxwdHIsIGRlZmF1bHREaXIgPSBudWxscHRyOworICAgICAgICBIUkVTVUxUIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJUYXJnZXREaXIiLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgaWYgKEZBSUxFRChocikgfHwgIXRhcmdldERpciB8fCAhdGFyZ2V0RGlyWzBdKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIkZhaWxlZCB0byBnZXQgVGFyZ2V0RGlyIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBMUFdTVFIgcHl0aG9udyA9IG51bGxwdHI7CisgICAgICAgIFN0ckFsbG9jRm9ybWF0dGVkKCZweXRob253LCBMIiVsc1xccHl0aG9udy5leGUiLCB0YXJnZXREaXIpOworICAgICAgICBpZiAoIXB5dGhvbncgfHwgIXB5dGhvbndbMF0pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBweXRob253LmV4ZSBwYXRoIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBMUENXU1RSIGFyZ3VtZW50cyA9IEwiLWMgXCJpbXBvcnQgd2lucmVnOyAiCisgICAgICAgICAgICAid2lucmVnLlNldFZhbHVlRXgoIgorICAgICAgICAgICAgICAgICJ3aW5yZWcuQ3JlYXRlS2V5KHdpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsICIKKyAgICAgICAgICAgICAgICAgICAgInInU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcRmlsZVN5c3RlbScpLCAiCisgICAgICAgICAgICAgICAgIidMb25nUGF0aHNFbmFibGVkJywgIgorICAgICAgICAgICAgICAgICJOb25lLCAiCisgICAgICAgICAgICAgICAgIndpbnJlZy5SRUdfRFdPUkQsICIKKyAgICAgICAgICAgICAgICAiMSIKKyAgICAgICAgICAgICIpXCIiOworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkV4ZWN1dGluZyAlbHMgJWxzIiwgcHl0aG9udywgYXJndW1lbnRzKTsKKyAgICAgICAgSElOU1RBTkNFIHJlcyA9IFNoZWxsRXhlY3V0ZVcoMCwgTCJydW5hcyIsIHB5dGhvbncsIGFyZ3VtZW50cywgTlVMTCwgU1dfSElERSk7CisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAicmV0dXJuIGNvZGUgMHglMDh4IiwgcmVzKTsKKyAgICB9CiAKIHB1YmxpYzogLy8gSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uCiAgICAgdmlydHVhbCBTVERNRVRIT0RJTVAgT25TdGFydHVwKCkgewpAQCAtMTIxNiwxMiArMTI3NCw2IEBACiAgICAgfQogCiAgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uTGF1bmNoQXBwcm92ZWRFeGVDb21wbGV0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMsIF9faW4gRFdPUkQgLypwcm9jZXNzSWQqLykgewotICAgICAgICBpZiAoSFJFU1VMVF9GUk9NX1dJTjMyKEVSUk9SX0FDQ0VTU19ERU5JRUQpID09IGhyU3RhdHVzKSB7Ci0gICAgICAgICAgICAvL3RyeSB3aXRoIFNoZWxFeGVjIG5leHQgdGltZQotICAgICAgICAgICAgT25DbGlja0xhdW5jaEJ1dHRvbigpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKLSAgICAgICAgfQogICAgIH0KIAogCkBAIC0xODY3LDEwICsxOTE5LDYgQEAKICAgICAgICAgICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAgICAgICAgIC8vIEN1c3RvbWl6ZSBjb21tYW5kcwogICAgICAgICAgICAgLy8gU3VjY2Vzcy9mYWlsdXJlIGNvbW1hbmRzCi0gICAgICAgICAgICBjYXNlIElEX0xBVU5DSF9CVVRUT046Ci0gICAgICAgICAgICAgICAgcEJBLT5PbkNsaWNrTGF1bmNoQnV0dG9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0KICAgICAgICAgICAgIGNhc2UgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKICAgICAgICAgICAgIGNhc2UgSURfRkFJTFVSRV9SRVNUQVJUX0JVVFRPTjoKICAgICAgICAgICAgICAgICBwQkEtPk9uQ2xpY2tSZXN0YXJ0QnV0dG9uKCk7CkBAIC0yMzcyLDY5ICsyNDIwLDYgQEAKICAgICB9CiAKIAotICAgIC8vCi0gICAgLy8gT25DbGlja0xhdW5jaEJ1dHRvbiAtIGxhdW5jaCB0aGUgYXBwIGZyb20gdGhlIHN1Y2Nlc3MgcGFnZS4KLSAgICAvLwotICAgIHZvaWQgT25DbGlja0xhdW5jaEJ1dHRvbigpIHsKLSAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7Ci0gICAgICAgIExQV1NUUiBzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pMYXVuY2hUYXJnZXQgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pBcmd1bWVudHMgPSBudWxscHRyOwotICAgICAgICBpbnQgbkNtZFNob3cgPSBTV19TSE9XTk9STUFMOwotCi0gICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgsICZzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7Ci0gICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggdGFyZ2V0IHZhcmlhYmxlICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIKTsKLQotICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCwgJnNjekxhdW5jaFRhcmdldCk7Ci0gICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCBsYXVuY2ggdGFyZ2V0IHZhcmlhYmxlOiAlbHMiLCBzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7Ci0KLSAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCkpIHsKLSAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lELCAmc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7Ci0gICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIHRhcmdldCBlbGV2YXRlZCBpZCAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUykpIHsKLSAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTLCAmc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOwotICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCBhcmd1bWVudHMgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9ISURERU4pKSB7Ci0gICAgICAgICAgICBuQ21kU2hvdyA9IFNXX0hJREU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCAmJiAhX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCkgewotICAgICAgICAgICAgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCA9IFRSVUU7Ci0gICAgICAgICAgICBociA9IF9lbmdpbmUtPkxhdW5jaEFwcHJvdmVkRXhlKF9oV25kLCBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkLCBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cywgMCk7Ci0gICAgICAgICAgICBpZiAoRkFJTEVEKGhyKSkgewotICAgICAgICAgICAgICAgIEJhbExvZ0Vycm9yKGhyLCAiRmFpbGVkIHRvIGxhdW5jaCBlbGV2YXRlZCB0YXJnZXQ6ICVscyIsIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOwotCi0gICAgICAgICAgICAgICAgLy90cnkgd2l0aCBTaGVsRXhlYyBuZXh0IHRpbWUKLSAgICAgICAgICAgICAgICBPbkNsaWNrTGF1bmNoQnV0dG9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpIHsKLSAgICAgICAgICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cywgJnNjekFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0IGxhdW5jaCBhcmd1bWVudHMgdmFyaWFibGU6ICVscyIsIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaHIgPSBTaGVsRXhlYyhzY3pMYXVuY2hUYXJnZXQsIHNjekFyZ3VtZW50cywgTCJvcGVuIiwgbnVsbHB0ciwgbkNtZFNob3csIF9oV25kLCBudWxscHRyKTsKLSAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQ6ICVscyIsIHNjekxhdW5jaFRhcmdldCk7Ci0KLSAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7Ci0gICAgICAgIH0KLQotICAgIExFeGl0OgotICAgICAgICBTdHJTZWN1cmVaZXJvRnJlZVN0cmluZyhzY3pBcmd1bWVudHMpOwotICAgICAgICBSZWxlYXNlU3RyKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKLSAgICAgICAgUmVsZWFzZVN0cihzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKLSAgICAgICAgU3RyU2VjdXJlWmVyb0ZyZWVTdHJpbmcoc2N6TGF1bmNoVGFyZ2V0KTsKLSAgICAgICAgUmVsZWFzZVN0cihzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogCiAgICAgLy8KICAgICAvLyBPbkNsaWNrUmVzdGFydEJ1dHRvbiAtIGFsbG93cyB0aGUgcmVzdGFydCBhbmQgY2xvc2VzIHRoZSBhcHAuCkBAIC0zMTU3LDcgKzMxNDIsNiBAQAogICAgICAgICBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlID0gVUlOVF9NQVg7CiAgICAgICAgIF90YXNrYmFyQnV0dG9uT0sgPSBGQUxTRTsKICAgICAgICAgX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2UgPSBGQUxTRTsKLSAgICAgICAgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCA9IEZBTFNFOwogCiAgICAgICAgIF9zdXBwcmVzc1BhaW50ID0gRkFMU0U7CiAKQEAgLTMyNDIsNyArMzIyNiw2IEBACiAgICAgVUlOVCBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlOwogICAgIEJPT0wgX3Rhc2tiYXJCdXR0b25PSzsKICAgICBCT09MIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlOwotICAgIEJPT0wgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZDsKIAogICAgIEJPT0wgX3N1cHByZXNzUGFpbnQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFiNjI5ZS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMKaW5kZXggMzgzMDdlMC4uYzg5ZTZlZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cwpAQCAtNCw3ICs0LDcgQEAKICAgPEJ1bmRsZSBOYW1lPSIhKGxvYy5GdWxsUHJvZHVjdE5hbWUpIgogICAgICAgICAgIFVwZ3JhZGVDb2RlPSIkKHZhci5Db3JlVXBncmFkZUNvZGUpIgogICAgICAgICAgIFZlcnNpb249IiQodmFyLlZlcnNpb24pIgotICAgICAgICAgIEljb25Tb3VyY2VGaWxlPSJidW5kbGUuaWNvIgorICAgICAgICAgIEljb25Tb3VyY2VGaWxlPSIuLlwuLlwuLlxQQ1xpY29uc1xzZXR1cC5pY28iCiAgICAgICAgICAgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIgogICAgICAgICAgIEFib3V0VXJsPSJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIgogICAgICAgICAgIERpc2FibGVNb2RpZnk9ImJ1dHRvbiIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb21tb24ud3hzIGIvVG9vbHMvbXNpL2NvbW1vbi53eHMKaW5kZXggNGVmYWQ2NS4uMTk0OWU4MSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2NvbW1vbi53eHMKKysrIGIvVG9vbHMvbXNpL2NvbW1vbi53eHMKQEAgLTEsNiArMSwxMCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KIDxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgogICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFByb3BlcnR5IElkPSJST09UUkVHSVNUUllLRVkiIFZhbHVlPSJTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZSIgLz4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KICAgICAgICAgPFByb3BlcnR5IElkPSJSRUdJU1RSWUtFWSIgVmFsdWU9IlNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlXCQodmFyLlNob3J0VmVyc2lvbikkKHZhci5QeUFyY2hFeHQpJCh2YXIuUHlUZXN0RXh0KSIgLz4KICAgICA8L0ZyYWdtZW50PgogICAgIApAQCAtMTYsMTAgKzIwLDEyIEBACiAgICAgPEZyYWdtZW50PgogICAgICAgICA8UHJvcGVydHkgSWQ9IlVwZ3JhZGVUYWJsZSIgVmFsdWU9IjEiIC8+CiAgICAgICAgIAorICAgICAgICA8P2lmbmRlZiBTdXBwcmVzc1VwZ3JhZGVUYWJsZSA/PgogICAgICAgICA8VXBncmFkZSBJZD0iJCh2YXIuVXBncmFkZUNvZGUpIj4KICAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iRE9XTkdSQURFIiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09Im5vIiBPbmx5RGV0ZWN0PSJ5ZXMiIC8+CiAgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IlVQR1JBREUiIE1pbmltdW09IiQodmFyLlVwZ3JhZGVNaW5pbXVtVmVyc2lvbikiIEluY2x1ZGVNaW5pbXVtPSJ5ZXMiIE1heGltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWF4aW11bT0ibm8iIC8+CiAgICAgICAgIDwvVXBncmFkZT4KKyAgICAgICAgPD9lbmRpZiA/PgogICAgICAgICAKICAgICAgICAgPD9pZmRlZiBDb3JlVXBncmFkZUNvZGUgPz4KICAgICAgICAgPD9pZiAkKHZhci5VcGdyYWRlQ29kZSkhPSQodmFyLkNvcmVVcGdyYWRlQ29kZSkgPz4KQEAgLTQwLDcgKzQ2LDcgQEAKICAgICAKICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDwhLS0gSW5jbHVkZSBhbiBpY29uIGZvciB0aGUgUHJvZ3JhbXMgYW5kIEZlYXR1cmVzIGRpYWxvZyAtLT4KLSAgICAgICAgPEljb24gSWQ9IkFSUEljb24iIFNvdXJjZUZpbGU9IiEoYmluZHBhdGguc3JjKVBDXHB5Y29uLmljbyIgLz4KKyAgICAgICAgPEljb24gSWQ9IkFSUEljb24iIFNvdXJjZUZpbGU9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXHB5dGhvbi5pY28iIC8+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQUFJPRFVDVElDT04iIFZhbHVlPSJBUlBJY29uIiAvPgogICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUE5PTU9ESUZZIiBWYWx1ZT0iMSIgLz4KICAgICAgICAgPFByb3BlcnR5IElkPSJESVNBQkxFQURWVFNIT1JUQ1VUUyIgVmFsdWU9IjEiIC8+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZSBiL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCmluZGV4IDhkMDM1MjYuLmM5NWMyNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCisrKyBiL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCkBAIC0xNCw0ICsxNCw1IEBACiAgICAgPFN0cmluZyBJZD0iTm9Eb3duZ3JhZGUiPkEgbmV3ZXIgdmVyc2lvbiBvZiAhKGxvYy5Qcm9kdWN0TmFtZSkgaXMgYWxyZWFkeSBpbnN0YWxsZWQuPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iSW5jb3JyZWN0Q29yZSI+QW4gaW5jb3JyZWN0IHZlcnNpb24gb2YgYSBwcmVyZXF1aXNpdGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIFBsZWFzZSB1bmluc3RhbGwgYW55IG90aGVyIHZlcnNpb25zIG9mICEobG9jLlByb2R1Y3ROYW1lKSBhbmQgdHJ5IGluc3RhbGxpbmcgdGhpcyBhZ2Fpbi48L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJOb1RhcmdldERpciI+VGhlIFRBUkdFVERJUiB2YXJpYWJsZSBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gaW52b2tpbmcgdGhpcyBpbnN0YWxsZXIuPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTWFudWZhY3R1cmVyU3VwcG9ydFVybCI+aHR0cDovL3d3dy5weXRob24ub3JnLzwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qIGIvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvagppbmRleCBkMjZhNjAzLi4yNGRmMGY1IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2oKQEAgLTE0LDYgKzE0LDcgQEAKICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGUud3hzIiAvPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcmVnLnd4cyIgLz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlLnd4cwppbmRleCAxNTRjZWU1Li4wM2Q0M2M2IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZS53eHMKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGUud3hzCkBAIC05LDYgKzksNyBAQAogICAgICAgICAKICAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfcHl0aG9uIiBQcmltYXJ5PSJ5ZXMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9yZWciIFByaW1hcnk9InllcyIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3R4dCIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX2ljb25zIiAvPgogICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgpAQCAtMjQsNyArMjUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiAvPgogICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9NZW51RGlyIiBEaXJlY3Rvcnk9Ik1lbnVEaXIiIE9uPSJ1bmluc3RhbGwiIC8+CiAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+Ci0gICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbFBhdGhcSW5zdGFsbEdyb3VwIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5Qcm9kdWN0TmFtZSkiIEtleVBhdGg9InllcyIgLz4KICAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsZWRGZWF0dXJlcyIgTmFtZT0iU2hvcnRjdXRzIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5WZXJzaW9uKSIgLz4KICAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2oKaW5kZXggMjc1NDVjYS4uY2YwODViZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagpAQCAtMTAsNiArMTAsNyBAQAogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9kLnd4cyIgLz4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX3JlZy53eHMiIC8+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKaW5kZXggNTc3ZmJlNS4uMWY5ZTI5MCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZQpAQCAtNCw0ICs0LDUgQEAKICAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmV4ZWN1dGFibGU8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJTaG9ydGN1dE5hbWUiPlB5dGhvbiB7e1Nob3J0VmVyc2lvbn19ICh7e0JpdG5lc3N9fSk8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJTaG9ydGN1dERlc2NyaXB0aW9uIj5MYXVuY2hlcyB0aGUgIShsb2MuUHJvZHVjdE5hbWUpIGludGVycHJldGVyLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlN1cHBvcnRVcmwiPmh0dHA6Ly93d3cucHl0aG9uLm9yZy88L1N0cmluZz4KIDwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCmluZGV4IDllNDdiNWQuLjAxMzg1ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cworKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMKQEAgLTI4LDYgKzI4LDkgQEAKICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9udy5leGUiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuUHl0aG9ud0V4ZUNvbXBvbmVudEd1aWQpIj4KICAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob253LmV4ZSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxQYXRoIiBOYW1lPSJXaW5kb3dlZEV4ZWN1dGFibGVQYXRoIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbI3B5dGhvbncuZXhlXSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0idmNydW50aW1lMTQwLmRsbCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJ2Y3J1bnRpbWUxNDAuZGxsIiBTb3VyY2U9IiEoYmluZHBhdGgucmVkaXN0KXZjcnVudGltZTE0MC5kbGwiIEtleVBhdGg9InllcyIgLz4KQEAgLTY2LDEwICs2OSwxMyBAQAogICAgIDxGcmFnbWVudD4KICAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfaWNvbnMiPgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHkuaWNvIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5LmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweS5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweS5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNccHkuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5Yy5pY28iIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHljLmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweWMuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHljLmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xweWMuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5ZC5pY28iIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHlkLmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xweWQuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagppbmRleCA0ZjRjODY5Li5iZjEyMTNlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagpAQCAtMTAsNiArMTAsNyBAQAogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9wZGIud3hzIiAvPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcmVnLnd4cyIgLz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX3JlZy53eHMgYi9Ub29scy9tc2kvZXhlL2V4ZV9yZWcud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDNjMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9yZWcud3hzCkBAIC0wLDAgKzEsMjUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUk9PVFJFR0lTVFJZS0VZIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfcmVnIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkNvbW1vblB5dGhvblJlZ2lzdHJhdGlvbiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIkKHZhci5Db21tb25QeXRob25SZWdDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JPT1RSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJEaXNwbGF5TmFtZSIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuTWFudWZhY3R1cmVyKSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJTdXBwb3J0VXJsIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5NYW51ZmFjdHVyZXJTdXBwb3J0VXJsKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iUHl0aG9uUmVnaXN0cmF0aW9uIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IiQodmFyLlB5dGhvblJlZ0NvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iRGlzcGxheU5hbWUiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLlNob3J0Y3V0TmFtZSkiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iU3VwcG9ydFVybCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuU3VwcG9ydFVybCkiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJWZXJzaW9uIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5Mb25nVmVyc2lvbikiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJTeXNWZXJzaW9uIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5TaG9ydFZlcnNpb24pIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iU3lzQXJjaGl0ZWN0dXJlIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5QbGF0Zm9ybUFyY2hpdGVjdHVyZSkiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvaiBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCmluZGV4IDAxYTlkY2IuLjg5MzVjZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCkBAIC01LDcgKzUsNyBAQAogICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CiAgICAgICAgIDxPdXRwdXROYW1lPmxhdW5jaGVyPC9PdXRwdXROYW1lPgogICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgotICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPlVwZ3JhZGVDb2RlPTFCNjhBMEVDLTRERDMtNTEzNC04NDBFLTczODU0QjA4NjNGMTskKERlZmluZUNvbnN0YW50cyk8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz5VcGdyYWRlQ29kZT0xQjY4QTBFQy00REQzLTUxMzQtODQwRS03Mzg1NEIwODYzRjE7U3VwcHJlc3NVcGdyYWRlVGFibGU9MTskKERlZmluZUNvbnN0YW50cyk8L0RlZmluZUNvbnN0YW50cz4KICAgICAgICAgPElnbm9yZUNvbW1vbld4bFRlbXBsYXRlcz50cnVlPC9JZ25vcmVDb21tb25XeGxUZW1wbGF0ZXM+CiAgICAgICAgIDxTdXBwcmVzc0lDRXM+SUNFODA8L1N1cHByZXNzSUNFcz4KICAgICA8L1Byb3BlcnR5R3JvdXA+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cwppbmRleCBlYmQ4NzVjLi43ZGUxMzFhIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMKQEAgLTUsNyArNSwxMCBAQAogICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgogICAgICAgICAKICAgICAgICAgPFByb3BlcnR5IElkPSJTdXBwcmVzc19UQVJHRVRESVJfQ2hlY2siIFZhbHVlPSIxIiAvPgotICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IkFSUFBST0RVQ1RJQ09OIiAvPgorICAgICAgICA8SWNvbiBJZD0iQVJQSWNvbiIgU291cmNlRmlsZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNcbGF1bmNoZXIuaWNvIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUFBST0RVQ1RJQ09OIiBWYWx1ZT0iQVJQSWNvbiIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJBUlBOT01PRElGWSIgVmFsdWU9IjEiIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iRElTQUJMRUFEVlRTSE9SVENVVFMiIFZhbHVlPSIxIiAvPgogCiAgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGF1bmNoZXJfZXhlIiBQcmltYXJ5PSJ5ZXMiIC8+CkBAIC0yNiwxOCArMjksMjEgQEAKICAgICAgICAgICAgIDxDdXN0b20gQmVmb3JlPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlMTSIgQWN0aW9uPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlDVSI+Tk9UIEluc3RhbGxlZCBBTkQgTk9UIEFMTFVTRVJTPTE8L0N1c3RvbT4KICAgICAgICAgICAgIDxDdXN0b20gQmVmb3JlPSJDb3N0RmluYWxpemUiIEFjdGlvbj0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5TE0iPk5PVCBJbnN0YWxsZWQgQU5EIEFMTFVTRVJTPTE8L0N1c3RvbT4KIAotICAgICAgICAgICAgPFJlbW92ZUV4aXN0aW5nUHJvZHVjdHMgQWZ0ZXI9Ikluc3RhbGxWYWxpZGF0ZSI+VVBHUkFERSBvciBSRU1PVkVfMzUwX0xBVU5DSEVSPC9SZW1vdmVFeGlzdGluZ1Byb2R1Y3RzPgorICAgICAgICAgICAgPFJlbW92ZUV4aXN0aW5nUHJvZHVjdHMgQWZ0ZXI9Ikluc3RhbGxWYWxpZGF0ZSI+VVBHUkFERSBvciBSRU1PVkVfMzUwX0xBVU5DSEVSIG9yIFJFTU9WRV8zNjBBMV9MQVVOQ0hFUjwvUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cz4KICAgICAgICAgPC9JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgogCisgICAgICAgIDwhLS0gVXBncmFkZSBhbGwgdmVyc2lvbnMgb2YgdGhlIGxhdW5jaGVyIC0tPgorICAgICAgICA8VXBncmFkZSBJZD0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iRE9XTkdSQURFIiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09Im5vIiBPbmx5RGV0ZWN0PSJ5ZXMiIC8+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IlVQR1JBREUiIE1pbmltdW09IjAuMC4wLjAiIEluY2x1ZGVNaW5pbXVtPSJ5ZXMiIE1heGltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWF4aW11bT0ibm8iIC8+CisgICAgICAgIDwvVXBncmFkZT4KICAgICAgICAgPCEtLSBQeXRob24gMy41LjAgc2hpcHBlZCB3aXRoIGEgZGlmZmVyZW50IFVwZ3JhZGVDb2RlIC0tPgogICAgICAgICA8VXBncmFkZSBJZD0iQTcxNTMwQjktRTg5RC01M0RCLTlDMkQtQzZENzU1MTg3NkQ4Ij4KICAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBNaW5pbXVtPSIwLjAuMC4wIiBQcm9wZXJ0eT0iUkVNT1ZFXzM1MF9MQVVOQ0hFUiIgLz4KICAgICAgICAgPC9VcGdyYWRlPgogICAgICAgICA8IS0tIFB5dGhvbiAzLjYuMGExIHNoaXBwZWQgd2l0aCBhIGRpZmZlcmVudCBVcGdyYWRlQ29kZSAtLT4KICAgICAgICAgPFVwZ3JhZGUgSWQ9IjM5NDc1MEMwLTc4ODAtNUE4Ri05OTlGLTkzMzk2NUZCQ0ZCNCI+Ci0gICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIFByb3BlcnR5PSJSRU1PVkVfMzYwQTFfTEFVTkNIRVIiIC8+Ci0gICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWluaW11bT0iJCh2YXIuVmVyc2lvbikiIFByb3BlcnR5PSJCTE9DS18zNjBBMV9MQVVOQ0hFUiIgLz4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBNaW5pbXVtPSIwLjAuMC4wIiBQcm9wZXJ0eT0iUkVNT1ZFXzM2MEExX0xBVU5DSEVSIiAvPgogICAgICAgICA8L1VwZ3JhZGU+Ci0gICAgICAgIDxDb25kaXRpb24gTWVzc2FnZT0iIShsb2MuTm9Eb3duZ3JhZGUpIj5JbnN0YWxsZWQgT1IgTk9UIEJMT0NLXzM2MEExX0xBVU5DSEVSPC9Db25kaXRpb24+CiAgICAgPC9Qcm9kdWN0PgogPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bAppbmRleCBlNGMxYWFhLi5hN2UzODI3IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwKQEAgLTExLDYgKzExLDcgQEAKICAgICA8U3RyaW5nIElkPSJQeXRob25GaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBGaWxlPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iUHl0aG9uTm9Db25GaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBGaWxlIChubyBjb25zb2xlKTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkNvbXBpbGVkRmlsZURlc2NyaXB0aW9uIj5Db21waWxlZCBQeXRob24gRmlsZTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkV4dGVuc2lvbkRlc2NyaXB0aW9uIj5QeXRob24gRXh0ZW5zaW9uIE1vZHVsZTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBaaXAgQXBwbGljYXRpb24gRmlsZTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIFppcCBBcHBsaWNhdGlvbiBGaWxlIChubyBjb25zb2xlKTwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCmluZGV4IDk4MTk2MWEuLmRhY2U5N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCkBAIC0yNywxNCArMjcsMTggQEAKICAgICAgICAgICAgICAgICA8L1Byb2dJZD4KICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5Db21waWxlZEZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9IntCRUEyMThEMi02OTUwLTQ5N0ItOTQzNC02MTY4M0VDMDY1RkV9IiBUeXBlPSJzdHJpbmciIC8+CiAKLSAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uQXJjaGl2ZUZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjEiPgorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5FeHRlbnNpb24iIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25FeHRlbnNpb25EZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIzIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHlkIiAvPgorICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgorCisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSI1Ij4KICAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHl6IiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHkuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CiAgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgogICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgogICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iUHl0aG9uLkFyY2hpdmVGaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiIFZhbHVlPSJ7QkVBMjE4RDItNjk1MC00OTdCLTk0MzQtNjE2ODNFQzA2NUZFfSIgVHlwZT0ic3RyaW5nIiAvPgogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5Ob0NvbkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uTm9Db25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjEiPgorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5Ob0NvbkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uTm9Db25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjUiPgogICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSJweXp3IiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHl3LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgogICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cwppbmRleCBmYTc5YThkLi44MDRhYjAxIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCkBAIC02NCwxNiArNjQsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJQeXRob25QYXRoIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbTGliXTtbRExMc10iIC8+CiAgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iTGliX3NpdGVfcGFja2FnZXNfUkVBRE1FIiBEaXJlY3Rvcnk9IkxpYl9zaXRlX3BhY2thZ2VzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iTGliX3NpdGVfcGFja2FnZXNfUkVBRE1FIiBOYW1lPSJSRUFETUUudHh0IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKUxpYlxzaXRlLXBhY2thZ2VzXFJFQURNRSIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmUiIERpcmVjdG9yeT0iTGliX2xpYjJ0bzMiIEd1aWQ9IiQodmFyLlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkKSI+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZpbGUgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZV9maWxlcyIgTmFtZT0iKi5waWNrbGUiIE9uPSJ1bmluc3RhbGwiIC8+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlX2ZvbGRlciIgT249InVuaW5zdGFsbCIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgotICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJMaWIiPgotICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iTGliX3NpdGVfcGFja2FnZXMiIE5hbWU9InNpdGUtcGFja2FnZXMiIC8+Ci0gICAgICAgIDwvRGlyZWN0b3J5UmVmPgogICAgIDwvRnJhZ21lbnQ+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5weSBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQppbmRleCAwZThhNGE2Li5lYmIxNzY2IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbWFrZV96aXAucHkKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnB5CkBAIC00Niw2ICs0NiwxMCBAQAogICAgICdweXRob24zc3R1YicsCiB9CiAKK0VYQ0xVREVEX0ZJTEVTID0geworICAgICdweXNoZWxsZXh0JywKK30KKwogZGVmIGlzX25vdF9kZWJ1ZyhwKToKICAgICBpZiBERUJVR19SRS5zZWFyY2gocC5uYW1lKToKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC01Myw3ICs1Nyw3IEBACiAgICAgaWYgVEtUQ0xfUkUuc2VhcmNoKHAubmFtZSk6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgcmV0dXJuIHAuc3RlbS5sb3dlcigpIG5vdCBpbiBERUJVR19GSUxFUworICAgIHJldHVybiBwLnN0ZW0ubG93ZXIoKSBub3QgaW4gREVCVUdfRklMRVMgYW5kIHAuc3RlbS5sb3dlcigpIG5vdCBpbiBFWENMVURFRF9GSUxFUwogCiBkZWYgaXNfbm90X2RlYnVnX29yX3B5dGhvbihwKToKICAgICByZXR1cm4gaXNfbm90X2RlYnVnKHApIGFuZCBub3QgUFlUSE9OX0RMTF9SRS5zZWFyY2gocC5uYW1lKQpAQCAtNjMsOCArNjcsNiBAQAogICAgIGlmIHAuaXNfZGlyKCk6CiAgICAgICAgIGlmIG5hbWUgaW4gRVhDTFVERV9GUk9NX0xJQlJBUlk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdwbGF0LScpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5hbWUgPT0gJ3Rlc3QnIGFuZCBwLnBhcnRzWy0yXS5sb3dlcigpID09ICdsaWInOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5hbWUgaW4geyd0ZXN0JywgJ3Rlc3RzJ30gYW5kIHAucGFydHNbLTNdLmxvd2VyKCkgPT0gJ2xpYic6CkBAIC04OSwyNSArOTEsMjcgQEAKIAogICAgIHJldHVybiBwLnN1ZmZpeC5sb3dlcigpIGluIHsnLnB5JywgJy5weXcnLCAnLnR4dCd9CiAKK0JBU0VfTkFNRSA9ICdweXRob257MC5tYWpvcn17MC5taW5vcn0nLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKQorCiBGVUxMX0xBWU9VVCA9IFsKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbi5leGUnLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9udy5leGUnLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9uezAubWFqb3J9LmRsbCcuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9uezAubWFqb3J9ezAubWlub3J9LmRsbCcuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pLCBpc19ub3RfZGVidWcpLAotICAgICgnRExMcy8nLCAnJGJ1aWxkJywgJyoucHlkJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJ0RMTHMvJywgJyRidWlsZCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1Z19vcl9weXRob24pLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbi5leGUnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbncuZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob257fS5kbGwnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvLm1ham9yKSwgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICd7fS5kbGwnLmZvcm1hdChCQVNFX05BTUUpLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCdETExzLycsICdQQ0J1aWxkLyRhcmNoJywgJyouZGxsJywgaXNfbm90X2RlYnVnX29yX3B5dGhvbiksCiAgICAgKCdpbmNsdWRlLycsICdpbmNsdWRlJywgJyouaCcsIE5vbmUpLAogICAgICgnaW5jbHVkZS8nLCAnUEMnLCAncHljb25maWcuaCcsIE5vbmUpLAogICAgICgnTGliLycsICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKLSAgICAoJ2xpYnMvJywgJyRidWlsZCcsICcqLmxpYicsIGluY2x1ZGVfaW5fbGlicyksCisgICAgKCdsaWJzLycsICdQQ0J1aWxkLyRhcmNoJywgJyoubGliJywgaW5jbHVkZV9pbl9saWJzKSwKICAgICAoJ1Rvb2xzLycsICdUb29scycsICcqKi8qJywgaW5jbHVkZV9pbl90b29scyksCiBdCiAKIEVNQkVEX0xBWU9VVCA9IFsKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbiouZXhlJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJyoucHlkJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJyouZGxsJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJ3B5dGhvbnswLm1ham9yfXswLm1pbm9yfS56aXAnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKSwgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbiouZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5kbGwnLCBpc19ub3RfZGVidWcpLAorICAgICgne30uemlwJy5mb3JtYXQoQkFTRV9OQU1FKSwgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAogXQogCiBpZiBvcy5nZXRlbnYoJ0RPQ19GSUxFTkFNRScpOgpAQCAtMTY4LDE4ICsxNzIsMTggQEAKIGRlZiBtYWluKCk6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tc291cmNlJywgbWV0YXZhcj0nZGlyJywgaGVscD0nVGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSByZXBvc2l0b3J5IHJvb3QnLCB0eXBlPVBhdGgpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXQnLCBtZXRhdmFyPSdmaWxlJywgaGVscD0nVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBhcmNoaXZlJywgdHlwZT1QYXRoLCBkZWZhdWx0PU5vbmUpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXQnLCBtZXRhdmFyPSdmaWxlJywgaGVscD0nVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBzZWxmLWV4dHJhY3RpbmcgYXJjaGl2ZScsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tdGVtcCcsIG1ldGF2YXI9J2RpcicsIGhlbHA9J0EgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IGV4dHJhY3QgZmlsZXMgaW50bycsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW1iZWQnLCBoZWxwPSdDcmVhdGUgYW4gZW1iZWRkaW5nIGxheW91dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1idWlsZCcsIGhlbHA9J1NwZWNpZnkgdGhlIGJ1aWxkIGRpcmVjdG9yeScsIHR5cGU9UGF0aCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYScsICctLWFyY2gnLCBoZWxwPSdTcGVjaWZ5IHRoZSBhcmNoaXRlY3R1cmUgdG8gdXNlICh3aW4zMi9hbWQ2NCknLCB0eXBlPXN0ciwgZGVmYXVsdD0id2luMzIiKQogICAgIG5zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgc291cmNlID0gbnMuc291cmNlIG9yIChQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50LnBhcmVudC5wYXJlbnQpCiAgICAgb3V0ID0gbnMub3V0Ci0gICAgYnVpbGQgPSBucy5idWlsZAorICAgIGFyY2ggPSBucy5hcmNoCiAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNlLCBQYXRoKQogICAgIGFzc2VydCBub3Qgb3V0IG9yIGlzaW5zdGFuY2Uob3V0LCBQYXRoKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGJ1aWxkLCBQYXRoKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGFyY2gsIHN0cikKIAogICAgIGlmIG5zLnRlbXA6CiAgICAgICAgIHRlbXAgPSBucy50ZW1wCkBAIC0yMDIsMTUgKzIwNiwxNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBmb3IgdCwgcywgcCwgYyBpbiBsYXlvdXQ6Ci0gICAgICAgICAgICBpZiBzID09ICckYnVpbGQnOgotICAgICAgICAgICAgICAgIHMgPSBidWlsZAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzID0gc291cmNlIC8gcworICAgICAgICAgICAgcyA9IHNvdXJjZSAvIHMucmVwbGFjZSgiJGFyY2giLCBhcmNoKQogICAgICAgICAgICAgY29waWVkID0gY29weV90b19sYXlvdXQodGVtcCAvIHQucnN0cmlwKCcvJyksIHJnbG9iKHMsIHAsIGMpKQogICAgICAgICAgICAgcHJpbnQoJ0NvcGllZCB7fSBmaWxlcycuZm9ybWF0KGNvcGllZCkpCiAKLSAgICAgICAgd2l0aCBvcGVuKHN0cih0ZW1wIC8gJ3B5dmVudi5jZmcnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgcHJpbnQoJ2FwcGxvY2FsID0gdHJ1ZScsIGZpbGU9ZikKKyAgICAgICAgaWYgbnMuZW1iZWQ6CisgICAgICAgICAgICB3aXRoIG9wZW4oc3RyKHRlbXAgLyAoQkFTRV9OQU1FICsgJy5fcHRoJykpLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgcHJpbnQoQkFTRV9OQU1FICsgJy56aXAnLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJy4nLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJycsIGZpbGU9ZikKKyAgICAgICAgICAgICAgICBwcmludCgnIyBVbmNvbW1lbnQgdG8gcnVuIHNpdGUubWFpbigpIGF1dG9tYXRpY2FsbHknLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJyNpbXBvcnQgc2l0ZScsIGZpbGU9ZikKIAogICAgICAgICBpZiBvdXQ6CiAgICAgICAgICAgICB0b3RhbCA9IGNvcHlfdG9fbGF5b3V0KG91dCwgcmdsb2IodGVtcCwgJyoqLyonLCBOb25lKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHJvcHMgYi9Ub29scy9tc2kvbXNpLnByb3BzCmluZGV4IDBjZjdjNzcuLjc0NWZjNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kucHJvcHMKKysrIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpAQCAtNjksNiArNjksOCBAQAogICAgIDxQcm9wZXJ0eUdyb3VwPgogICAgICAgICA8Qml0bmVzcz4zMi1iaXQ8L0JpdG5lc3M+CiAgICAgICAgIDxCaXRuZXNzIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPjY0LWJpdDwvQml0bmVzcz4KKyAgICAgICAgPFBsYXRmb3JtQXJjaGl0ZWN0dXJlPjMyYml0PC9QbGF0Zm9ybUFyY2hpdGVjdHVyZT4KKyAgICAgICAgPFBsYXRmb3JtQXJjaGl0ZWN0dXJlIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPjY0Yml0PC9QbGF0Zm9ybUFyY2hpdGVjdHVyZT4KICAgICAgICAgPERlZmluZUNvbnN0YW50cz4KICAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKICAgICAgICAgICAgIFZlcnNpb249JChJbnN0YWxsZXJWZXJzaW9uKTsKQEAgLTc5LDYgKzgxLDcgQEAKICAgICAgICAgICAgIFVwZ3JhZGVNaW5pbXVtVmVyc2lvbj0kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLjAuMDsKICAgICAgICAgICAgIE5leHRNYWpvclZlcnNpb25OdW1iZXI9JChNYWpvclZlcnNpb25OdW1iZXIpLiQoW21zYnVpbGRdOjpBZGQoJChNaW5vclZlcnNpb25OdW1iZXIpLCAxKSkuMC4wOwogICAgICAgICAgICAgQml0bmVzcz0kKEJpdG5lc3MpOworICAgICAgICAgICAgUGxhdGZvcm1BcmNoaXRlY3R1cmU9JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSk7CiAgICAgICAgICAgICBQeURlYnVnRXh0PSQoUHlEZWJ1Z0V4dCk7CiAgICAgICAgICAgICBQeUFyY2hFeHQ9JChQeUFyY2hFeHQpOwogICAgICAgICAgICAgUHlUZXN0RXh0PSQoUHlUZXN0RXh0KTsKQEAgLTE1NSw2ICsxNTgsMTIgQEAKICAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkIj4KICAgICAgICAgICAgIDxVcmk+bGliMnRvMy9waWNrbGVzPC9Vcmk+CiAgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJDb21tb25QeXRob25SZWdDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cmVnaXN0cnk8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlB5dGhvblJlZ0NvbXBvbmVudEd1aWQiPgorICAgICAgICAgICAgPFVyaT5yZWdpc3RyeS8kKE91dHB1dE5hbWUpPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPFRhcmdldCBOYW1lPSJfR2VuZXJhdGVHdWlkcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iJChUYXJnZXROYW1lKSAhPSAnbGF1bmNoZXInIj4KICAgICAgICAgPFByb3BlcnR5R3JvdXA+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCmluZGV4IGU4MDNhYTAuLjA3NTM1NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCkBAIC0xNyw2ICsxNyw5IEBACiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2UucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgogICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdG11bHRpcGhhc2UucHlkIiBOYW1lPSJfdGVzdG11bHRpcGhhc2UucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y29uc29sZS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y29uc29sZS5weWQiIE5hbWU9Il90ZXN0Y29uc29sZS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiAgICAgCkBAIC0zNyw2ICs0MCw5IEBACiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2UucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgogICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdG11bHRpcGhhc2UucGRiIiBOYW1lPSJfdGVzdG11bHRpcGhhc2UucGRiIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNvbnNvbGUucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGNvbnNvbGUucGRiIiBOYW1lPSJfdGVzdGNvbnNvbGUucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KICAgICAKQEAgLTU3LDYgKzYzLDkgQEAKICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y29uc29sZV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3Rjb25zb2xlX2QucHlkIiBOYW1lPSJfdGVzdGNvbnNvbGVfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpX2QucGRiIiBOYW1lPSJfdGVzdGNhcGlfZC5wZGIiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KQEAgLTcyLDYgKzgxLDkgQEAKICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y29uc29sZV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3Rjb25zb2xlX2QucGRiIiBOYW1lPSJfdGVzdGNvbnNvbGVfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgogPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qIGIvVG9vbHMvbnVnZXQvbWFrZV9wa2cucHJvagppbmRleCA1NDJiZjA3Li5jM2NkNDNhIDEwMDY0NAotLS0gYS9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qCisrKyBiL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2oKQEAgLTE0LDYgKzE0LDcgQEAKICAgICA8UHJvcGVydHlHcm91cD4KICAgICAgICAgPE51Z2V0IENvbmRpdGlvbj0iJChOdWdldCkgPT0gJyciPiQoRXh0ZXJuYWxzRGlyKVx3aW5kb3dzLWluc3RhbGxlclxudWdldFxudWdldC5leGU8L051Z2V0PgogICAgICAgICA8TnVzcGVjVmVyc2lvbj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKTwvTnVzcGVjVmVyc2lvbj4KKyAgICAgICAgPE51c3BlY1ZlcnNpb24gQ29uZGl0aW9uPSIkKFJlbGVhc2VMZXZlbE5hbWUpICE9ICcnIj4kKE51c3BlY1ZlcnNpb24pLSQoUmVsZWFzZUxldmVsTmFtZSk8L051c3BlY1ZlcnNpb24+CiAgICAgICAgIDxTaWduT3V0cHV0PmZhbHNlPC9TaWduT3V0cHV0PgogICAgICAgICA8VGFyZ2V0TmFtZT4kKE91dHB1dE5hbWUpLiQoTnVzcGVjVmVyc2lvbik8L1RhcmdldE5hbWU+CiAgICAgICAgIDxUYXJnZXRFeHQ+Lm51cGtnPC9UYXJnZXRFeHQ+CmRpZmYgLS1naXQgYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CmluZGV4IDI4NTAzMGUuLjdlMWNjNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CisrKyBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CkBAIC0xMDQsNiArMTA0LDE5IEBACiAgICAgICAgIHNlbGYud3JpdGUoIiAiK3NlbGYuYmlub3BbdC5vcC5fX2NsYXNzX18uX19uYW1lX19dKyI9ICIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKIAorICAgIGRlZiBfQW5uQXNzaWduKHNlbGYsIHQpOgorICAgICAgICBzZWxmLmZpbGwoKQorICAgICAgICBpZiBub3QgdC5zaW1wbGUgYW5kIGlzaW5zdGFuY2UodC50YXJnZXQsIGFzdC5OYW1lKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJygnKQorICAgICAgICBzZWxmLmRpc3BhdGNoKHQudGFyZ2V0KQorICAgICAgICBpZiBub3QgdC5zaW1wbGUgYW5kIGlzaW5zdGFuY2UodC50YXJnZXQsIGFzdC5OYW1lKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJyknKQorICAgICAgICBzZWxmLndyaXRlKCI6ICIpCisgICAgICAgIHNlbGYuZGlzcGF0Y2godC5hbm5vdGF0aW9uKQorICAgICAgICBpZiB0LnZhbHVlOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiID0gIikKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKKwogICAgIGRlZiBfUmV0dXJuKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoInJldHVybiIpCiAgICAgICAgIGlmIHQudmFsdWU6CkBAIC0zMjIsOSArMzM1LDcyIEBACiAgICAgZGVmIF9TdHIoc2VsZiwgdHJlZSk6CiAgICAgICAgIHNlbGYud3JpdGUocmVwcih0cmVlLnMpKQogCisgICAgZGVmIF9Kb2luZWRTdHIoc2VsZiwgdCk6CisgICAgICAgIHNlbGYud3JpdGUoImYiKQorICAgICAgICBzdHJpbmcgPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuX2ZzdHJpbmdfSm9pbmVkU3RyKHQsIHN0cmluZy53cml0ZSkKKyAgICAgICAgc2VsZi53cml0ZShyZXByKHN0cmluZy5nZXR2YWx1ZSgpKSkKKworICAgIGRlZiBfRm9ybWF0dGVkVmFsdWUoc2VsZiwgdCk6CisgICAgICAgIHNlbGYud3JpdGUoImYiKQorICAgICAgICBzdHJpbmcgPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuX2ZzdHJpbmdfRm9ybWF0dGVkVmFsdWUodCwgc3RyaW5nLndyaXRlKQorICAgICAgICBzZWxmLndyaXRlKHJlcHIoc3RyaW5nLmdldHZhbHVlKCkpKQorCisgICAgZGVmIF9mc3RyaW5nX0pvaW5lZFN0cihzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIGZvciB2YWx1ZSBpbiB0LnZhbHVlczoKKyAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsICJfZnN0cmluZ18iICsgdHlwZSh2YWx1ZSkuX19uYW1lX18pCisgICAgICAgICAgICBtZXRoKHZhbHVlLCB3cml0ZSkKKworICAgIGRlZiBfZnN0cmluZ19TdHIoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICB2YWx1ZSA9IHQucy5yZXBsYWNlKCJ7IiwgInt7IikucmVwbGFjZSgifSIsICJ9fSIpCisgICAgICAgIHdyaXRlKHZhbHVlKQorCisgICAgZGVmIF9mc3RyaW5nX0NvbnN0YW50KHNlbGYsIHQsIHdyaXRlKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodC52YWx1ZSwgc3RyKQorICAgICAgICB2YWx1ZSA9IHQudmFsdWUucmVwbGFjZSgieyIsICJ7eyIpLnJlcGxhY2UoIn0iLCAifX0iKQorICAgICAgICB3cml0ZSh2YWx1ZSkKKworICAgIGRlZiBfZnN0cmluZ19Gb3JtYXR0ZWRWYWx1ZShzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIHdyaXRlKCJ7IikKKyAgICAgICAgZXhwciA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgVW5wYXJzZXIodC52YWx1ZSwgZXhwcikKKyAgICAgICAgZXhwciA9IGV4cHIuZ2V0dmFsdWUoKS5yc3RyaXAoIlxuIikKKyAgICAgICAgaWYgZXhwci5zdGFydHN3aXRoKCJ7Iik6CisgICAgICAgICAgICB3cml0ZSgiICIpICAjIFNlcGFyYXRlIHBhaXIgb2Ygb3BlbmluZyBicmFja2V0cyBhcyAieyB7IgorICAgICAgICB3cml0ZShleHByKQorICAgICAgICBpZiB0LmNvbnZlcnNpb24gIT0gLTE6CisgICAgICAgICAgICBjb252ZXJzaW9uID0gY2hyKHQuY29udmVyc2lvbikKKyAgICAgICAgICAgIGFzc2VydCBjb252ZXJzaW9uIGluICJzcmEiCisgICAgICAgICAgICB3cml0ZShmIiF7Y29udmVyc2lvbn0iKQorICAgICAgICBpZiB0LmZvcm1hdF9zcGVjOgorICAgICAgICAgICAgd3JpdGUoIjoiKQorICAgICAgICAgICAgbWV0aCA9IGdldGF0dHIoc2VsZiwgIl9mc3RyaW5nXyIgKyB0eXBlKHQuZm9ybWF0X3NwZWMpLl9fbmFtZV9fKQorICAgICAgICAgICAgbWV0aCh0LmZvcm1hdF9zcGVjLCB3cml0ZSkKKyAgICAgICAgd3JpdGUoIn0iKQorCiAgICAgZGVmIF9OYW1lKHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKHQuaWQpCiAKKyAgICBkZWYgX3dyaXRlX2NvbnN0YW50KHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKGZsb2F0LCBjb21wbGV4KSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKHJlcHIodmFsdWUpLnJlcGxhY2UoImluZiIsIElORlNUUikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndyaXRlKHJlcHIodmFsdWUpKQorCisgICAgZGVmIF9Db25zdGFudChzZWxmLCB0KToKKyAgICAgICAgdmFsdWUgPSB0LnZhbHVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIigiKQorICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSA9PSAxOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbnN0YW50KHZhbHVlWzBdKQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiwiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbnRlcmxlYXZlKGxhbWJkYTogc2VsZi53cml0ZSgiLCAiKSwgc2VsZi5fd3JpdGVfY29uc3RhbnQsIHZhbHVlKQorICAgICAgICAgICAgc2VsZi53cml0ZSgiKSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl93cml0ZV9jb25zdGFudCh0LnZhbHVlKQorCiAgICAgZGVmIF9OYW1lQ29uc3RhbnQoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUocmVwcih0LnZhbHVlKSkKIApAQCAtMzY4LDcgKzQ0NCwxMCBAQAogICAgICAgICBzZWxmLndyaXRlKCJ9IikKIAogICAgIGRlZiBfY29tcHJlaGVuc2lvbihzZWxmLCB0KToKLSAgICAgICAgc2VsZi53cml0ZSgiIGZvciAiKQorICAgICAgICBpZiB0LmlzX2FzeW5jOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzeW5jIGZvciAiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiIGZvciAiKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQudGFyZ2V0KQogICAgICAgICBzZWxmLndyaXRlKCIgaW4gIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lml0ZXIpCkBAIC00MTMsNyArNDkyLDcgQEAKICAgICBkZWYgX1R1cGxlKHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKCIoIikKICAgICAgICAgaWYgbGVuKHQuZWx0cykgPT0gMToKLSAgICAgICAgICAgIChlbHQsKSA9IHQuZWx0cworICAgICAgICAgICAgZWx0ID0gdC5lbHRzWzBdCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGVsdCkKICAgICAgICAgICAgIHNlbGYud3JpdGUoIiwiKQogICAgICAgICBlbHNlOgpAQCAtNDYwLDcgKzUzOSw4IEBACiAgICAgICAgICMgU3BlY2lhbCBjYXNlOiAzLl9fYWJzX18oKSBpcyBhIHN5bnRheCBlcnJvciwgc28gaWYgdC52YWx1ZQogICAgICAgICAjIGlzIGFuIGludGVnZXIgbGl0ZXJhbCB0aGVuIHdlIG5lZWQgdG8gZWl0aGVyIHBhcmVudGhlc2l6ZQogICAgICAgICAjIGl0IG9yIGFkZCBhbiBleHRyYSBzcGFjZSB0byBnZXQgMyAuX19hYnNfXygpLgotICAgICAgICBpZiBpc2luc3RhbmNlKHQudmFsdWUsIGFzdC5OdW0pIGFuZCBpc2luc3RhbmNlKHQudmFsdWUubiwgaW50KToKKyAgICAgICAgaWYgKChpc2luc3RhbmNlKHQudmFsdWUsIGFzdC5OdW0pIGFuZCBpc2luc3RhbmNlKHQudmFsdWUubiwgaW50KSkKKyAgICAgICAgICAgb3IgKGlzaW5zdGFuY2UodC52YWx1ZSwgYXN0LkNvbnN0YW50KSBhbmQgaXNpbnN0YW5jZSh0LnZhbHVlLnZhbHVlLCBpbnQpKSk6CiAgICAgICAgICAgICBzZWxmLndyaXRlKCIgIikKICAgICAgICAgc2VsZi53cml0ZSgiLiIpCiAgICAgICAgIHNlbGYud3JpdGUodC5hdHRyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weSBiL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkKaW5kZXggMDczY2NhMC4uNTRhOGJhNyAxMDA2NDQKLS0tIGEvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weQorKysgYi9Ub29scy9weWJlbmNoL0NvbW1hbmRMaW5lLnB5CkBAIC05OSw4ICs5OSw4IEBACiAjIEFsaWFzCiBnZXRwYXNzd2QgPSBpbnZpc2libGVfaW5wdXQKIAotX2ludGVnZXJSRSA9IHJlLmNvbXBpbGUoJ1xzKigtP1xkKylccyokJykKLV9pbnRlZ2VyUmFuZ2VSRSA9IHJlLmNvbXBpbGUoJ1xzKigtP1xkKylccyotXHMqKC0/XGQrKVxzKiQnKQorX2ludGVnZXJSRSA9IHJlLmNvbXBpbGUocidccyooLT9cZCspXHMqJCcpCitfaW50ZWdlclJhbmdlUkUgPSByZS5jb21waWxlKHInXHMqKC0/XGQrKVxzKi1ccyooLT9cZCspXHMqJCcpCiAKIGRlZiBzcmFuZ2UocywKIApkaWZmIC0tZ2l0IGEvVG9vbHMvcHliZW5jaC9XaXRoLnB5IGIvVG9vbHMvcHliZW5jaC9XaXRoLnB5CmluZGV4IDVmNTllOGMuLjMwY2QzYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3B5YmVuY2gvV2l0aC5weQorKysgYi9Ub29scy9weWJlbmNoL1dpdGgucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiBmcm9tIHB5YmVuY2ggaW1wb3J0IFRlc3QKIAogY2xhc3MgV2l0aEZpbmFsbHkoVGVzdCk6CmRpZmYgLS1naXQgYS9Ub29scy9weW5jaGUvQ29sb3JEQi5weSBiL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5CmluZGV4IDVjZWQwZTcuLjAzNDgxNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5CisrKyBiL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5CkBAIC0xMzQsMTcgKzEzNCwxNyBAQAogDAogY2xhc3MgUkdCQ29sb3JEQihDb2xvckRCKToKICAgICBfcmUgPSByZS5jb21waWxlKAotICAgICAgICAnXHMqKD9QPHJlZD5cZCspXHMrKD9QPGdyZWVuPlxkKylccysoP1A8Ymx1ZT5cZCspXHMrKD9QPG5hbWU+LiopJykKKyAgICAgICAgcidccyooP1A8cmVkPlxkKylccysoP1A8Z3JlZW4+XGQrKVxzKyg/UDxibHVlPlxkKylccysoP1A8bmFtZT4uKiknKQogCiAKIGNsYXNzIEhUTUw0MERCKENvbG9yREIpOgotICAgIF9yZSA9IHJlLmNvbXBpbGUoJyg/UDxuYW1lPlxTKylccysoP1A8aGV4cmdiPiNbMC05YS1mQS1GXXs2fSknKQorICAgIF9yZSA9IHJlLmNvbXBpbGUocicoP1A8bmFtZT5cUyspXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKIAogICAgIGRlZiBfZXh0cmFjdHJnYihzZWxmLCBtbyk6CiAgICAgICAgIHJldHVybiBycmdnYmJfdG9fdHJpcGxldChtby5ncm91cCgnaGV4cmdiJykpCiAKIGNsYXNzIExpZ2h0bGlua0RCKEhUTUw0MERCKToKLSAgICBfcmUgPSByZS5jb21waWxlKCcoP1A8bmFtZT4oLispKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCisgICAgX3JlID0gcmUuY29tcGlsZShyJyg/UDxuYW1lPiguKykpXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKIAogICAgIGRlZiBfZXh0cmFjdG5hbWUoc2VsZiwgbW8pOgogICAgICAgICByZXR1cm4gbW8uZ3JvdXAoJ25hbWUnKS5zdHJpcCgpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5IGIvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weQppbmRleCBlMTBlNDlhLi43Y2E5NTI2IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvY29tYmluZXJlZnMucHkKQEAgLTYsNyArNiw3IEBACiBBIGhlbHBlciBmb3IgYW5hbHl6aW5nIFBZVEhPTkRVTVBSRUZTIG91dHB1dC4KIAogV2hlbiB0aGUgUFlUSE9ORFVNUFJFRlMgZW52YXIgaXMgc2V0IGluIGEgZGVidWcgYnVpbGQsIGF0IFB5dGhvbiBzaHV0ZG93bgotdGltZSBQeV9GaW5hbGl6ZSgpIHByaW50cyB0aGUgbGlzdCBvZiBhbGwgbGl2ZSBvYmplY3RzIHR3aWNlOiAgZmlyc3QgaXQKK3RpbWUgUHlfRmluYWxpemVFeCgpIHByaW50cyB0aGUgbGlzdCBvZiBhbGwgbGl2ZSBvYmplY3RzIHR3aWNlOiAgZmlyc3QgaXQKIHByaW50cyB0aGUgcmVwcigpIG9mIGVhY2ggb2JqZWN0IHdoaWxlIHRoZSBpbnRlcnByZXRlciBpcyBzdGlsbCBmdWxseSBpbnRhY3QuCiBBZnRlciBjbGVhbmluZyB1cCBldmVyeXRoaW5nIGl0IGNhbiwgaXQgcHJpbnRzIGFsbCByZW1haW5pbmcgbGl2ZSBvYmplY3RzCiBhZ2FpbiwgYnV0IHRoZSBzZWNvbmQgdGltZSBqdXN0IHByaW50cyB0aGVpciBhZGRyZXNzZXMsIHJlZmNvdW50cywgYW5kIHR5cGUKQEAgLTQxLDcgKzQxLDcgQEAKIG9iamVjdHMgc2hvd24gaW4gdGhlIHJlcHI6ICB0aGUgcmVwciB3YXMgY2FwdHVyZWQgZnJvbSB0aGUgZmlyc3Qgb3V0cHV0IGJsb2NrLAogYW5kIHNvbWUgb2YgdGhlIGNvbnRhaW5lZXMgbWF5IGhhdmUgYmVlbiByZWxlYXNlZCBzaW5jZSB0aGVuLiAgRm9yIGV4YW1wbGUsCiBpdCdzIGNvbW1vbiBmb3IgdGhlIGxpbmUgc2hvd2luZyB0aGUgZGljdCBvZiBpbnRlcm5lZCBzdHJpbmdzIHRvIGRpc3BsYXkKLXN0cmluZ3MgdGhhdCBubyBsb25nZXIgZXhpc3QgYXQgdGhlIGVuZCBvZiBQeV9GaW5hbGl6ZTsgdGhpcyBjYW4gYmUgcmVjb2duaXplZAorc3RyaW5ncyB0aGF0IG5vIGxvbmdlciBleGlzdCBhdCB0aGUgZW5kIG9mIFB5X0ZpbmFsaXplRXg7IHRoaXMgY2FuIGJlIHJlY29nbml6ZWQKIChhbGJlaXQgcGFpbmZ1bGx5KSBiZWNhdXNlIHN1Y2ggY29udGFpbmVlcyBkb24ndCBoYXZlIGEgbGluZSBvZiB0aGVpciBvd24uCiAKIFRoZSBvYmplY3RzIGFyZSBsaXN0ZWQgaW4gYWxsb2NhdGlvbiBvcmRlciwgd2l0aCBtb3N0LXJlY2VudGx5IGFsbG9jYXRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5IGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CmluZGV4IDk3MjBhNDMuLjk2MTk5YjggMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQorKysgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKQEAgLTgsNyArOCw3IEBACiAKICIiIgogCi1pbXBvcnQgc3lzLCBvcywgdGltZSwgZGlmZmxpYiwgYXJncGFyc2UKK2ltcG9ydCBzeXMsIG9zLCBkaWZmbGliLCBhcmdwYXJzZQogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lCiAKIGRlZiBmaWxlX210aW1lKHBhdGgpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkgYi9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weQppbmRleCAyMGYzMzg2Li4xMjEzYTRlIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weQorKysgYi9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weQpAQCAtMTc0LDggKzE3NCw4IEBACiAgICAgc3lzLnN0ZGVyci53cml0ZSgiVXNhZ2U6ICVzIFstbV0gd2FybmluZ3NcbiIgJSBzeXMuYXJndlswXSkKICAgICBzeXMuc3RkZXJyLndyaXRlKCJUcnkgYCVzIC1oJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIgJSBzeXMuYXJndlswXSkKIAotUEFUVEVSTiA9ICgiXiguKz8pOihcZCspOiBEZXByZWNhdGlvbldhcm5pbmc6ICIKLSAgICAgICAgICAgImNsYXNzaWMgKGludHxsb25nfGZsb2F0fGNvbXBsZXgpIGRpdmlzaW9uJCIpCitQQVRURVJOID0gKHIiXiguKz8pOihcZCspOiBEZXByZWNhdGlvbldhcm5pbmc6ICIKKyAgICAgICAgICAgciJjbGFzc2ljIChpbnR8bG9uZ3xmbG9hdHxjb21wbGV4KSBkaXZpc2lvbiQiKQogCiBkZWYgcmVhZHdhcm5pbmdzKHdhcm5pbmdzZmlsZSk6CiAgICAgcHJvZyA9IHJlLmNvbXBpbGUoUEFUVEVSTikKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkgYi9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CmluZGV4IGM2MmY5YTUuLjk0OGI1NmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQpAQCAtMSw3ICsxLDUgQEAKICMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRoZSBvcGNvZGUuaCBoZWFkZXIgZmlsZS4KIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBpbXBvcnQgc3lzCiBoZWFkZXIgPSAiIiIvKiBBdXRvLWdlbmVyYXRlZCBieSBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5ICovCiAjaWZuZGVmIFB5X09QQ09ERV9ICmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2gycHkucHkgYi9Ub29scy9zY3JpcHRzL2gycHkucHkKaW5kZXggMDk2N2ZjMi4uNDM2M2MwYyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9oMnB5LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvaDJweS5weQpAQCAtMjMsMTMgKzIzLDEzIEBACiAKIGltcG9ydCBzeXMsIHJlLCBnZXRvcHQsIG9zCiAKLXBfZGVmaW5lID0gcmUuY29tcGlsZSgnXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsoW2EtekEtWjAtOV9dKylbXHQgXSsnKQorcF9kZWZpbmUgPSByZS5jb21waWxlKHInXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsoW2EtekEtWjAtOV9dKylbXHQgXSsnKQogCiBwX21hY3JvID0gcmUuY29tcGlsZSgKLSAgJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rJwotICAnKFthLXpBLVowLTlfXSspXCgoW19hLXpBLVpdW19hLXpBLVowLTldKilcKVtcdCBdKycpCisgIHInXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsnCisgIHInKFthLXpBLVowLTlfXSspXCgoW19hLXpBLVpdW19hLXpBLVowLTldKilcKVtcdCBdKycpCiAKLXBfaW5jbHVkZSA9IHJlLmNvbXBpbGUoJ15bXHQgXSojW1x0IF0qaW5jbHVkZVtcdCBdKzwoW14+XG5dKyk+JykKK3BfaW5jbHVkZSA9IHJlLmNvbXBpbGUocideW1x0IF0qI1tcdCBdKmluY2x1ZGVbXHQgXSs8KFtePlxuXSspPicpCiAKIHBfY29tbWVudCA9IHJlLmNvbXBpbGUocicvXCooW14qXSt8XCorW14vXSkqKFwqKy8pPycpCiBwX2NwcF9jb21tZW50ID0gcmUuY29tcGlsZSgnLy8uKicpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weSBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CmluZGV4IDY2YWQ4NjguLjkyNzJmZWUgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CkBAIC0xNDcsMTQgKzE0NywxNCBAQAogIyMjIyBMYVRlWCBPdXRwdXQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGRlZmF1bHRfbGF0ZXhfY29tbWFuZHMgPSB7Ci0gICAgJ2NvbW1lbnQnOiAne1xjb2xvcntyZWR9IzF9JywKLSAgICAnc3RyaW5nJzogJ3tcY29sb3J7Rm9yZXN0R3JlZW59IzF9JywKLSAgICAnZG9jc3RyaW5nJzogJ3tcZW1waHtcY29sb3J7Rm9yZXN0R3JlZW59IzF9fScsCi0gICAgJ2tleXdvcmQnOiAne1xjb2xvcntvcmFuZ2V9IzF9JywKLSAgICAnYnVpbHRpbic6ICd7XGNvbG9ye3B1cnBsZX0jMX0nLAotICAgICdkZWZpbml0aW9uJzogJ3tcY29sb3J7b3JhbmdlfSMxfScsCi0gICAgJ2RlZm5hbWUnOiAne1xjb2xvcntibHVlfSMxfScsCi0gICAgJ29wZXJhdG9yJzogJ3tcY29sb3J7YnJvd259IzF9JywKKyAgICAnY29tbWVudCc6IHIne1xjb2xvcntyZWR9IzF9JywKKyAgICAnc3RyaW5nJzogcid7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfScsCisgICAgJ2RvY3N0cmluZyc6IHIne1xlbXBoe1xjb2xvcntGb3Jlc3RHcmVlbn0jMX19JywKKyAgICAna2V5d29yZCc6IHIne1xjb2xvcntvcmFuZ2V9IzF9JywKKyAgICAnYnVpbHRpbic6IHIne1xjb2xvcntwdXJwbGV9IzF9JywKKyAgICAnZGVmaW5pdGlvbic6IHIne1xjb2xvcntvcmFuZ2V9IzF9JywKKyAgICAnZGVmbmFtZSc6IHIne1xjb2xvcntibHVlfSMxfScsCisgICAgJ29wZXJhdG9yJzogcid7XGNvbG9ye2Jyb3dufSMxfScsCiB9CiAKIGRlZmF1bHRfbGF0ZXhfZG9jdW1lbnQgPSByJycnCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2lkbGUzIGIvVG9vbHMvc2NyaXB0cy9pZGxlMwppbmRleCA4ZWU5MmMyLi5kNzMzMmJjIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2lkbGUzCisrKyBiL1Rvb2xzL3NjcmlwdHMvaWRsZTMKQEAgLTEsNSArMSw1IEBACiAjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgbWFpbgorZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IG1haW4KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weSBiL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5CmluZGV4IGFlYjQ1MWUuLjYzNWU1NDggMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5CkBAIC04OCw3ICs4OCw3IEBACiAjIG5vIG1vcmUgZXhwcmVzc2lvbnMgYXJlIHNlYXJjaGVkIGZvci4gIFNvLCBvcmRlciBpcyBpbXBvcnRhbnQuCiBlbXBhcnNlX2xpc3RfcmVhc29uID0gWwogICAgIHInXjVcZHsyfSA8PlwuXC5cLiAoP1A8cmVhc29uPi4qKScsCi0gICAgJzw+XC5cLlwuICg/UDxyZWFzb24+LiopJywKKyAgICByJzw+XC5cLlwuICg/UDxyZWFzb24+LiopJywKICAgICByZS5jb21waWxlKHInXjw8PCA1XGR7Mn0gKD9QPHJlYXNvbj4uKiknLCByZS5NVUxUSUxJTkUpLAogICAgIHJlLmNvbXBpbGUoJz09PT09IHN0ZGVyciB3YXMgPT09PT1cbnJtYWlsOiAoP1A8cmVhc29uPi4qKScpLAogICAgIHJlLmNvbXBpbGUoJ15EaWFnbm9zdGljLUNvZGU6ICg/UDxyZWFzb24+LiopJywgcmUuTVVMVElMSU5FKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5IGIvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkKaW5kZXggOGYwNzU1OS4uODNiYmNkNyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkKQEAgLTM2LDggKzM2LDggQEAKICIiIgogaW1wb3J0IG9zLCBzeXMKIAotUFlUSE9OTElCID0gJ2xpYnB5dGhvbicrc3lzLnZlcnNpb25bOjNdKycuYScKLVBDX1BZVEhPTkxJQiA9ICdQeXRob24nK3N5cy52ZXJzaW9uWzBdK3N5cy52ZXJzaW9uWzJdKycuZGxsJworUFlUSE9OTElCID0gJ2xpYnB5dGhvbiVkLiVkLmEnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KK1BDX1BZVEhPTkxJQiA9ICdQeXRob24lZCVkLmRsbCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogTk0gPSAnbm0gLXAgLWcgJXMnICAgICAgICAgICAgICAgICAgICAgICMgRm9yIExpbnV4LCB1c2UgIm5tIC1nICVzIgogCiBkZWYgc3ltYm9scyhsaWI9UFlUSE9OTElCLHR5cGVzPSgnVCcsJ0MnLCdEJykpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5IGIvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5CmluZGV4IGEwNDJkMWMuLmM2ODZiMDIgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weQorKysgYi9Ub29scy9zY3JpcHRzL3BhcnNlZW50aXRpZXMucHkKQEAgLTE0LDcgKzE0LDcgQEAKICIiIgogaW1wb3J0IHJlLHN5cwogCi1lbnRpdHlSRSA9IHJlLmNvbXBpbGUoJzwhRU5USVRZICsoXHcrKSArQ0RBVEEgKyIoW14iXSspIiArLS0gKygoPzoufFxuKSs/KSAqLS0+JykKK2VudGl0eVJFID0gcmUuY29tcGlsZShyJzwhRU5USVRZICsoXHcrKSArQ0RBVEEgKyIoW14iXSspIiArLS0gKygoPzoufFxuKSs/KSAqLS0+JykKIAogZGVmIHBhcnNlKHRleHQscG9zPTAsZW5kcG9zPU5vbmUpOgogCkBAIC0zOSw3ICszOSw3IEBACiAgICAgICAgIGlmIGNoYXJjb2RlWzoyXSA9PSAnJiMnOgogICAgICAgICAgICAgY29kZSA9IGludChjaGFyY29kZVsyOi0xXSkKICAgICAgICAgICAgIGlmIGNvZGUgPCAyNTY6Ci0gICAgICAgICAgICAgICAgY2hhcmNvZGUgPSAiJ1wlbyciICUgY29kZQorICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gciInXCVvJyIgJSBjb2RlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gcmVwcihjaGFyY29kZSkKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weSBiL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weQppbmRleCAyMjQzMmQxLi41NjJiYmM3IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5CkBAIC02NCw3ICs2NCw3IEBACiAgICAgICAgICAgICBpZiBmaXgoYXJnKTogYmFkID0gMQogICAgIHN5cy5leGl0KGJhZCkKIAotaXNweXRob25wcm9nID0gcmUuY29tcGlsZSgnXlthLXpBLVowLTlfXStcLnB5JCcpCitpc3B5dGhvbnByb2cgPSByZS5jb21waWxlKHInXlthLXpBLVowLTlfXStcLnB5JCcpCiBkZWYgaXNweXRob24obmFtZSk6CiAgICAgcmV0dXJuIGJvb2woaXNweXRob25wcm9nLm1hdGNoKG5hbWUpKQogCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3B0YWdzLnB5IGIvVG9vbHMvc2NyaXB0cy9wdGFncy5weQppbmRleCBjYTY0M2IzLi4zOTZjYmQwIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3B0YWdzLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcHRhZ3MucHkKQEAgLTI0LDcgKzI0LDcgQEAKICAgICAgICAgZm9yIHMgaW4gdGFnczogZnAud3JpdGUocykKIAogCi1leHByID0gJ15bIFx0XSooZGVmfGNsYXNzKVsgXHRdKyhbYS16QS1aMC05X10rKVsgXHRdKls6XChdJworZXhwciA9IHInXlsgXHRdKihkZWZ8Y2xhc3MpWyBcdF0rKFthLXpBLVowLTlfXSspWyBcdF0qWzpcKF0nCiBtYXRjaGVyID0gcmUuY29tcGlsZShleHByKQogCiBkZWYgdHJlYXRfZmlsZShmaWxlbmFtZSk6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3B5dmVudiBiL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CmluZGV4IDk3OGQ2OTEuLjFmYjQyYzYgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CisrKyBiL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CkBAIC0xLDYgKzEsMTIgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHN5cworICAgIGltcG9ydCBwYXRobGliCisKKyAgICBleGVjdXRhYmxlID0gcGF0aGxpYi5QYXRoKHN5cy5leGVjdXRhYmxlIG9yICdweXRob24zJykubmFtZQorICAgIHByaW50KCdXQVJOSU5HOiB0aGUgcHllbnYgc2NyaXB0IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mICcKKyAgICAgICAgICBmJ2B7ZXhlY3V0YWJsZX0gLW0gdmVudmAnLCBmaWxlPXN5cy5zdGRlcnIpCisKICAgICByYyA9IDEKICAgICB0cnk6CiAgICAgICAgIGltcG9ydCB2ZW52CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3N2bmVvbC5weSBiL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5CmluZGV4IDhhYmRkMDEuLjZjNzBkYTkgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotIiIiCityIiIiCiBTVk4gaGVscGVyIHNjcmlwdC4KIAogVHJ5IHRvIHNldCB0aGUgc3ZuOmVvbC1zdHlsZSBwcm9wZXJ0eSB0byAibmF0aXZlIiBvbiBldmVyeSAucHksIC50eHQsIC5jIGFuZApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkgYi9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQppbmRleCA5OTgzNTI4Li45YzFlOWZlIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQorKysgYi9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQpAQCAtNzgsMTEgKzc4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcnVubmluZyB0ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtZW51IGl0ZW0gKFl1Y2shKQotbWlwcm9nID0gcmUuY29tcGlsZSgnXlwqIChbXjpdKik6KDp8WyBcdF0qKFteXHQsXG4uXSspKFteIFx0XG5dKikpWyBcdFxuXSonKQotIyAgICAgICAgICAgICAgICAgICAwICAgIDEgICAgIDEgMiAgICAgICAgMyAgICAgICAgICAzNCAgICAgICAgIDQyICAgICAgICAwCi0jICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tICAgICAgICAgICAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK21pcHJvZyA9IHJlLmNvbXBpbGUocideXCogKFteOl0qKTooOnxbIFx0XSooW15cdCxcbi5dKykoW14gXHRcbl0qKSlbIFx0XG5dKicpCisjICAgICAgICAgICAgICAgICAgICAwICAgIDEgICAgIDEgMiAgICAgICAgMyAgICAgICAgICAzNCAgICAgICAgIDQyICAgICAgICAwCisjICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLSAgICAgICAgICAgIC0tLS0tLS0tLS0gIC0tLS0tLS0tLQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5IGIvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKaW5kZXggZGQ1N2RjZi4uMzBkNWZjZiAxMDA2NDQKLS0tIGEvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKKysrIGIvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKQEAgLTEwNSwxMSArMTA1LDExIEBACiAKICAgICBkZWYgX3N1YnByb2Nlc3NfY2FsbChzZWxmLCBjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsIGVudj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKLSAgICAgICAgbG9nLmRlYnVnKCJDYWxsICd7fSciLmZvcm1hdCgiICIuam9pbihjbWQpKSkKKyAgICAgICAgbG9nLmRlYnVnKCJDYWxsICclcyciLCAiICIuam9pbihjbWQpKQogICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCwgc3Rkb3V0PXN0ZG91dCwgZW52PWVudiwgKiprd2FyZ3MpCiAKICAgICBkZWYgX3N1YnByb2Nlc3Nfb3V0cHV0KHNlbGYsIGNtZCwgZW52PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgbG9nLmRlYnVnKCJDYWxsICd7fSciLmZvcm1hdCgiICIuam9pbihjbWQpKSkKKyAgICAgICAgbG9nLmRlYnVnKCJDYWxsICclcyciLCAiICIuam9pbihjbWQpKQogICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIGVudj1lbnYpCiAgICAgICAgIHJldHVybiBvdXQuc3RyaXAoKS5kZWNvZGUoInV0Zi04IikKIApAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5oYXNfc3JjOgogICAgICAgICAgICAgICAgIHNlbGYuX2Rvd25sb2FkX29wZW5zc2woKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkFscmVhZHkgaGFzIHNyYyB7fSIuZm9ybWF0KHNlbGYuc3JjX2ZpbGUpKQorICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiQWxyZWFkeSBoYXMgc3JjICVzIiwgc2VsZi5zcmNfZmlsZSkKICAgICAgICAgICAgIHNlbGYuX3VucGFja19vcGVuc3NsKCkKICAgICAgICAgICAgIHNlbGYuX2J1aWxkX29wZW5zc2woKQogICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9vcGVuc3NsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3R6L3pkdW1wLnB5IGIvVG9vbHMvdHovemR1bXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk0YjQ4MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3R6L3pkdW1wLnB5CkBAIC0wLDAgKzEsODEgQEAKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IHN0cnVjdAorZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKKwordHRpbmZvID0gbmFtZWR0dXBsZSgndHRpbmZvJywgWyd0dF9nbXRvZmYnLCAndHRfaXNkc3QnLCAndHRfYWJicmluZCddKQorCitjbGFzcyBUWkluZm86CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYW5zaXRpb25zLCB0eXBlX2luZGljZXMsIHR0aXMsIGFiYnJzKToKKyAgICAgICAgc2VsZi50cmFuc2l0aW9ucyA9IHRyYW5zaXRpb25zCisgICAgICAgIHNlbGYudHlwZV9pbmRpY2VzID0gdHlwZV9pbmRpY2VzCisgICAgICAgIHNlbGYudHRpcyA9IHR0aXMKKyAgICAgICAgc2VsZi5hYmJycyA9IGFiYnJzCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbWZpbGUoY2xzLCBmaWxlb2JqKToKKyAgICAgICAgaWYgZmlsZW9iai5yZWFkKDQpLmRlY29kZSgpICE9ICJUWmlmIjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCBhIHpvbmVpbmZvIGZpbGUiKQorICAgICAgICBmaWxlb2JqLnNlZWsoMjApCisgICAgICAgIGhlYWRlciA9IGZpbGVvYmoucmVhZCgyNCkKKyAgICAgICAgdHpoID0gKHR6aF90dGlzZ210Y250LCB0emhfdHRpc3N0ZGNudCwgdHpoX2xlYXBjbnQsCisgICAgICAgICAgICAgICB0emhfdGltZWNudCwgdHpoX3R5cGVjbnQsIHR6aF9jaGFyY250KSA9IHN0cnVjdC51bnBhY2soIj42bCIsIGhlYWRlcikKKyAgICAgICAgdHJhbnNpdGlvbnMgPSBhcnJheSgnaScpCisgICAgICAgIHRyYW5zaXRpb25zLmZyb21maWxlKGZpbGVvYmosIHR6aF90aW1lY250KQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgdHJhbnNpdGlvbnMuYnl0ZXN3YXAoKQorCisgICAgICAgIHR5cGVfaW5kaWNlcyA9IGFycmF5KCdCJykKKyAgICAgICAgdHlwZV9pbmRpY2VzLmZyb21maWxlKGZpbGVvYmosIHR6aF90aW1lY250KQorCisgICAgICAgIHR0aXMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSh0emhfdHlwZWNudCk6CisgICAgICAgICAgICB0dGlzLmFwcGVuZCh0dGluZm8uX21ha2Uoc3RydWN0LnVucGFjaygiPmxiYiIsIGZpbGVvYmoucmVhZCg2KSkpKQorCisgICAgICAgIGFiYnJzID0gZmlsZW9iai5yZWFkKHR6aF9jaGFyY250KQorCisgICAgICAgIHNlbGYgPSBjbHModHJhbnNpdGlvbnMsIHR5cGVfaW5kaWNlcywgdHRpcywgYWJicnMpCisgICAgICAgIHNlbGYudHpoID0gdHpoCisKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBkdW1wKHNlbGYsIHN0cmVhbSwgc3RhcnQ9Tm9uZSwgZW5kPU5vbmUpOgorICAgICAgICBmb3IgaiwgKHRyYW5zLCBpKSBpbiBlbnVtZXJhdGUoemlwKHNlbGYudHJhbnNpdGlvbnMsIHNlbGYudHlwZV9pbmRpY2VzKSk6CisgICAgICAgICAgICB1dGMgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRyYW5zKQorICAgICAgICAgICAgdHRpID0gc2VsZi50dGlzW2ldCisgICAgICAgICAgICBsbXQgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRyYW5zICsgdHRpLnR0X2dtdG9mZikKKyAgICAgICAgICAgIGFiYnJpbmQgPSB0dGkudHRfYWJicmluZAorICAgICAgICAgICAgYWJiciA9IHNlbGYuYWJicnNbYWJicmluZDpzZWxmLmFiYnJzLmZpbmQoMCwgYWJicmluZCldLmRlY29kZSgpCisgICAgICAgICAgICBpZiBqID4gMDoKKyAgICAgICAgICAgICAgICBwcmV2X3R0aSA9IHNlbGYudHRpc1tzZWxmLnR5cGVfaW5kaWNlc1tqIC0gMV1dCisgICAgICAgICAgICAgICAgc2hpZnQgPSAiICUrZyIgJSAoKHR0aS50dF9nbXRvZmYgLSBwcmV2X3R0aS50dF9nbXRvZmYpIC8gMzYwMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2hpZnQgPSAnJworICAgICAgICAgICAgcHJpbnQoIiVzIFVUQyA9ICVzICUtNXMgaXNkc3Q9JWQiICUgKHV0YywgbG10LCBhYmJyLCB0dGlbMV0pICsgc2hpZnQsIGZpbGU9c3RyZWFtKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHpvbmVsaXN0KGNscywgem9uZWRpcj0nL3Vzci9zaGFyZS96b25laW5mbycpOgorICAgICAgICB6b25lcyA9IFtdCisgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHpvbmVkaXIpOgorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgcCA9IG9zLnBhdGguam9pbihyb290LCBmKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwLCAncmInKSBhcyBvOgorICAgICAgICAgICAgICAgICAgICBtYWdpYyA9ICBvLnJlYWQoNCkKKyAgICAgICAgICAgICAgICBpZiBtYWdpYyA9PSBiJ1RaaWYnOgorICAgICAgICAgICAgICAgICAgICB6b25lcy5hcHBlbmQocFtsZW4oem9uZWRpcikgKyAxOl0pCisgICAgICAgIHJldHVybiB6b25lcworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGlmIGxlbihzeXMuYXJndikgPCAyOgorICAgICAgICB6b25lcyA9IFRaSW5mby56b25lbGlzdCgpCisgICAgICAgIGZvciB6IGluIHpvbmVzOgorICAgICAgICAgICAgcHJpbnQoeikKKyAgICAgICAgc3lzLmV4aXQoKQorICAgIGZpbGVwYXRoID0gc3lzLmFyZ3ZbMV0KKyAgICBpZiBub3QgZmlsZXBhdGguc3RhcnRzd2l0aCgnLycpOgorICAgICAgICBmaWxlcGF0aCA9IG9zLnBhdGguam9pbignL3Vzci9zaGFyZS96b25laW5mbycsIGZpbGVwYXRoKQorICAgIHdpdGggb3BlbihmaWxlcGF0aCwgJ3JiJykgYXMgZmlsZW9iajoKKyAgICAgICAgdHppID0gVFpJbmZvLmZyb21maWxlKGZpbGVvYmopCisgICAgdHppLmR1bXAoc3lzLnN0ZG91dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CmluZGV4IDRjMjE0NjkuLjMxZjAxMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKKysrIGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQpAQCAtMzcsMTEgKzM3LDExIEBACiAjIFBsYWNlaG9sZGVyIGZvciBhIG1pc3NpbmcgY29kZSBwb2ludAogTUlTU0lOR19DT0RFID0gLTEKIAotbWFwUkUgPSByZS5jb21waWxlKCcoKD86MHhbMC05YS1mQS1GXStcKz8pKyknCi0gICAgICAgICAgICAgICAgICAgJ1xzKycKLSAgICAgICAgICAgICAgICAgICAnKCg/Oig/OjB4WzAtOWEtZkEtWl0rfDxbQS1aYS16XSs+KVwrPykqKScKLSAgICAgICAgICAgICAgICAgICAnXHMqJwotICAgICAgICAgICAgICAgICAgICcoIy4rKT8nKQorbWFwUkUgPSByZS5jb21waWxlKHInKCg/OjB4WzAtOWEtZkEtRl0rXCs/KSspJworICAgICAgICAgICAgICAgICAgIHInXHMrJworICAgICAgICAgICAgICAgICAgIHInKCg/Oig/OjB4WzAtOWEtZkEtWl0rfDxbQS1aYS16XSs+KVwrPykqKScKKyAgICAgICAgICAgICAgICAgICByJ1xzKicKKyAgICAgICAgICAgICAgICAgICByJygjLispPycpCiAKIGRlZiBwYXJzZWNvZGVzKGNvZGVzLCBsZW49bGVuLCByYW5nZT1yYW5nZSk6CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKaW5kZXggNzEzZTE3NS4uNWQ4MDE0YSAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKKysrIGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKQEAgLTQyLDcgKzQyLDcgQEAKICMgICAqIERvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdCwgYW5kCiAjICAgKiBEb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKICMgICAqIERvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QgKHR3byBvY2N1cnJlbmNlcykKLVVOSURBVEFfVkVSU0lPTiA9ICI4LjAuMCIKK1VOSURBVEFfVkVSU0lPTiA9ICI5LjAuMCIKIFVOSUNPREVfREFUQSA9ICJVbmljb2RlRGF0YSVzLnR4dCIKIENPTVBPU0lUSU9OX0VYQ0xVU0lPTlMgPSAiQ29tcG9zaXRpb25FeGNsdXNpb25zJXMudHh0IgogRUFTVEFTSUFOX1dJRFRIID0gIkVhc3RBc2lhbldpZHRoJXMudHh0IgpAQCAtNzk2LDYgKzc5Niw3IEBACiAgICAgY2F0ZWdvcnlfY2hhbmdlcyA9IFsweEZGXSoweDExMDAwMAogICAgIGRlY2ltYWxfY2hhbmdlcyA9IFsweEZGXSoweDExMDAwMAogICAgIG1pcnJvcmVkX2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKKyAgICBlYXN0X2FzaWFuX3dpZHRoX2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKICAgICAjIEluIG51bWVyaWMgZGF0YSwgMCBtZWFucyAibm8gY2hhbmdlIiwKICAgICAjIC0xIG1lYW5zICJkaWQgbm90IGhhdmUgYSBudW1lcmljIHZhbHVlCiAgICAgbnVtZXJpY19jaGFuZ2VzID0gWzBdICogMHgxMTAwMDAKQEAgLTg2Miw2ICs4NjMsOSBAQAogICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYW5nZSB0byBzaW1wbGUgdGl0bGVjYXNlIG1hcHBpbmc7IGlnbm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gMTU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYW5nZSB0byBlYXN0IGFzaWFuIHdpZHRoCisgICAgICAgICAgICAgICAgICAgICAgICBlYXN0X2FzaWFuX3dpZHRoX2NoYW5nZXNbaV0gPSBFQVNUQVNJQU5XSURUSF9OQU1FUy5pbmRleCh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDE2OgogICAgICAgICAgICAgICAgICAgICAgICAgIyBkZXJpdmVkIHByb3BlcnR5IGNoYW5nZXM7IG5vdCB5ZXQKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKQEAgLTg3Myw4ICs4NzcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgRGlmZmVyZW5jZShFeGNlcHRpb24pOnBhc3MKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIERpZmZlcmVuY2UoaGV4KGkpLCBrLCBvbGQudGFibGVbaV0sIG5ldy50YWJsZVtpXSkKICAgICBuZXcuY2hhbmdlZC5hcHBlbmQoKHZlcnNpb24sIGxpc3QoemlwKGJpZGlyX2NoYW5nZXMsIGNhdGVnb3J5X2NoYW5nZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9jaGFuZ2VzLCBtaXJyb3JlZF9jaGFuZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfY2hhbmdlcykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9jaGFuZ2VzLCBtaXJyb3JlZF9jaGFuZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19jaGFuZ2VzKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemF0aW9uX2NoYW5nZXMpKQogCiBkZWYgb3Blbl9kYXRhKHRlbXBsYXRlLCB2ZXJzaW9uKToKZGlmZiAtLWdpdCBhL2FjbG9jYWwubTQgYi9hY2xvY2FsLm00CmluZGV4IDJhNzQ1ZTUuLjlhOWNjNTUgMTAwNjQ0Ci0tLSBhL2FjbG9jYWwubTQKKysrIGIvYWNsb2NhbC5tNApAQCAtMTMsNyArMTMsNyBAQAogCiBtNF9pZm5kZWYoW0FDX0NPTkZJR19NQUNST19ESVJTXSwgW200X2RlZnVuKFtfQU1fQ09ORklHX01BQ1JPX0RJUlNdLCBbXSltNF9kZWZ1bihbQUNfQ09ORklHX01BQ1JPX0RJUlNdLCBbX0FNX0NPTkZJR19NQUNST19ESVJTKCRAKV0pXSkKIGRubCBwa2cubTQgLSBNYWNyb3MgdG8gbG9jYXRlIGFuZCB1dGlsaXNlIHBrZy1jb25maWcuICAgLSotIEF1dG9jb25mIC0qLQotZG5sIHNlcmlhbCAxMSAocGtnLWNvbmZpZy0wLjI5LjEpCitkbmwgc2VyaWFsIDExIChwa2ctY29uZmlnLTAuMjkpCiBkbmwKIGRubCBDb3B5cmlnaHQgwqkgMjAwNCBTY290dCBKYW1lcyBSZW1uYW50IDxzY290dEBuZXRzcGxpdC5jb20+LgogZG5sIENvcHlyaWdodCDCqSAyMDEyLTIwMTUgRGFuIE5pY2hvbHNvbiA8ZGJuLmxpc3RzQGdtYWlsLmNvbT4KQEAgLTU1LDcgKzU1LDcgQEAKIGRubCBTZWUgdGhlICJTaW5jZSIgY29tbWVudCBmb3IgZWFjaCBtYWNybyB5b3UgdXNlIHRvIHNlZSB3aGF0IHZlcnNpb24KIGRubCBvZiB0aGUgbWFjcm9zIHlvdSByZXF1aXJlLgogbTRfZGVmdW4oW1BLR19QUkVSRVFdLAotW200X2RlZmluZShbUEtHX01BQ1JPU19WRVJTSU9OXSwgWzAuMjkuMV0pCitbbTRfZGVmaW5lKFtQS0dfTUFDUk9TX1ZFUlNJT05dLCBbMC4yOV0pCiBtNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUoUEtHX01BQ1JPU19WRVJTSU9OLCBbJDFdKSwgLTEsCiAgICAgW200X2ZhdGFsKFtwa2cubTQgdmVyc2lvbiAkMSBvciBoaWdoZXIgaXMgcmVxdWlyZWQgYnV0IF1QS0dfTUFDUk9TX1ZFUlNJT05bIGZvdW5kXSldKQogXSlkbmwgUEtHX1BSRVJFUQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDE5ZmNiZDEuLjA4YmE0MzAgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTEsNiArMSw2IEBACiAjISAvYmluL3NoCiAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNS4KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBweXRob24gMy42LgogIwogIyBSZXBvcnQgYnVncyB0byA8aHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvPi4KICMKQEAgLTU4MCw4ICs1ODAsOCBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J3B5dGhvbicKIFBBQ0tBR0VfVEFSTkFNRT0ncHl0aG9uJwotUEFDS0FHRV9WRVJTSU9OPSczLjUnCi1QQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuNScKK1BBQ0tBR0VfVkVSU0lPTj0nMy42JworUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjYnCiBQQUNLQUdFX0JVR1JFUE9SVD0naHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvJwogUEFDS0FHRV9VUkw9JycKIApAQCAtNjQyLDExICs2NDIsMTMgQEAKIE1BQ0hERVBfT0JKUwogRFlOTE9BREZJTEUKIERMSU5DTERJUgorRFRSQUNFX09CSlMKK0RUUkFDRV9IRUFERVJTCitERkxBR1MKK0RUUkFDRQogVEhSRUFET0JKCiBMRExBU1QKIFVTRV9USFJFQURfTU9EVUxFCi1TSUdOQUxfT0JKUwotVVNFX1NJR05BTF9NT0RVTEUKIFRDTFRLX0xJQlMKIFRDTFRLX0lOQ0xVREVTCiBMSUJGRklfSU5DTFVERURJUgpAQCAtNzA4LDEyICs3MTAsMTMgQEAKIEJVSUxERVhFRVhUCiBFR1JFUAogTk9fQVNfTkVFREVECitNVUxUSUFSQ0hfQ1BQRkxBR1MKIFBMQVRGT1JNX1RSSVBMRVQKLVBMQVRESVIKIE1VTFRJQVJDSAogYWNfY3RfQ1hYCiBNQUlOQ0MKIENYWAorU0VECiBHUkVQCiBDUFAKIE9CSkVYVApAQCAtODI3LDE0ICs4MzAsMTMgQEAKIHdpdGhfdGNsdGtfaW5jbHVkZXMKIHdpdGhfdGNsdGtfbGlicwogd2l0aF9kYm1saWJvcmRlcgotd2l0aF9zaWduYWxfbW9kdWxlCiB3aXRoX3RocmVhZHMKIHdpdGhfdGhyZWFkCiBlbmFibGVfaXB2Ngogd2l0aF9kb2Nfc3RyaW5ncwotd2l0aF90c2MKIHdpdGhfcHltYWxsb2MKIHdpdGhfdmFsZ3JpbmQKK3dpdGhfZHRyYWNlCiB3aXRoX2ZwZWN0bAogd2l0aF9saWJtCiB3aXRoX2xpYmMKQEAgLTE0MDUsNyArMTQwNyw3IEBACiAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgogICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCitcYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy42IHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KIAogVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtWQVI9VkFMVUVdLi4uCiAKQEAgLTE0NzIsNyArMTQ3NCw3IEBACiAKIGlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCiAgIGNhc2UgJGFjX2luaXRfaGVscCBpbgotICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcHl0aG9uIDMuNToiOzsKKyAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjY6Ijs7CiAgICBlc2FjCiAgIGNhdCA8PFxfQUNFT0YKIApAQCAtMTUzMSwxNSArMTUzMywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciB0byBjaGVjayBkYiBiYWNrZW5kcyBmb3IgZGJtLiBWYWxpZCB2YWx1ZSBpcyBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9uIHNlcGFyYXRlZCBzdHJpbmcgd2l0aCB0aGUgYmFja2VuZCBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAgICBgbmRibScsIGBnZGJtJyBhbmQgYGJkYicuCi0gIC0td2l0aC1zaWduYWwtbW9kdWxlICAgIGRpc2FibGUvZW5hYmxlIHNpZ25hbCBtb2R1bGUKICAgLS13aXRoKG91dCktdGhyZWFkc1s9RElSRUNUT1JZXQogICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlL2VuYWJsZSB0aHJlYWQgc3VwcG9ydAogICAtLXdpdGgob3V0KS10aHJlYWRbPURJUkVDVE9SWV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwcmVjYXRlZDsgdXNlIC0td2l0aChvdXQpLXRocmVhZHMKICAgLS13aXRoKG91dCktZG9jLXN0cmluZ3MgZGlzYWJsZS9lbmFibGUgZG9jdW1lbnRhdGlvbiBzdHJpbmdzCi0gIC0td2l0aChvdXQpLXRzYyAgICAgICAgIGVuYWJsZS9kaXNhYmxlIHRpbWVzdGFtcCBjb3VudGVyIHByb2ZpbGUKICAgLS13aXRoKG91dCktcHltYWxsb2MgICAgZGlzYWJsZS9lbmFibGUgc3BlY2lhbGl6ZWQgbWFsbG9jcwogICAtLXdpdGgtdmFsZ3JpbmQgICAgICAgICBFbmFibGUgVmFsZ3JpbmQgc3VwcG9ydAorICAtLXdpdGgob3V0KS1kdHJhY2UgICAgICBkaXNhYmxlL2VuYWJsZSBEVHJhY2Ugc3VwcG9ydAogICAtLXdpdGgtZnBlY3RsICAgICAgICAgICBlbmFibGUgU0lHRlBFIGNhdGNoaW5nCiAgIC0td2l0aC1saWJtPVNUUklORyAgICAgIG1hdGggbGlicmFyeQogICAtLXdpdGgtbGliYz1TVFJJTkcgICAgICBDIGxpYnJhcnkKQEAgLTE2MzEsNyArMTYzMiw3IEBACiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KICAgY2F0IDw8XF9BQ0VPRgotcHl0aG9uIGNvbmZpZ3VyZSAzLjUKK3B5dGhvbiBjb25maWd1cmUgMy42CiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKIAogQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTk4NCwxMzYgKzE5ODUsNiBAQAogCiB9ICMgYWNfZm5fY19jaGVja190eXBlCiAKLSMgYWNfZm5fY19maW5kX3VpbnRYX3QgTElORU5PIEJJVFMgVkFSCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBGaW5kcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB3aWR0aCBCSVRTLCBzZXR0aW5nIGNhY2hlIHZhcmlhYmxlIFZBUgotIyBhY2NvcmRpbmdseS4KLWFjX2ZuX2NfZmluZF91aW50WF90ICgpCi17Ci0gIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdWludCQyX3QiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHVpbnQkMl90Li4uICIgPiY2OyB9Ci1pZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgZXZhbCAiJDM9bm8iCi0gICAgICMgT3JkZXIgaXMgaW1wb3J0YW50IC0gbmV2ZXIgY2hlY2sgYSB0eXBlIHRoYXQgaXMgcG90ZW50aWFsbHkgc21hbGxlcgotICAgICAjIHRoYW4gaGFsZiBvZiB0aGUgZXhwZWN0ZWQgdGFyZ2V0IHdpZHRoLgotICAgICBmb3IgYWNfdHlwZSBpbiB1aW50JDJfdCAndW5zaWduZWQgaW50JyAndW5zaWduZWQgbG9uZyBpbnQnIFwKLQkgJ3Vuc2lnbmVkIGxvbmcgbG9uZyBpbnQnICd1bnNpZ25lZCBzaG9ydCBpbnQnICd1bnNpZ25lZCBjaGFyJzsgZG8KLSAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotaW50Ci1tYWluICgpCi17Ci1zdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoKCRhY190eXBlKSAtMSA+PiAoJDIgLyAyIC0gMSkpID4+ICgkMiAvIDIgLSAxKSA9PSAzKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBjYXNlICRhY190eXBlIGluICMoCi0gIHVpbnQkMl90KSA6Ci0gICAgZXZhbCAiJDM9eWVzIiA7OyAjKAotICAqKSA6Ci0gICAgZXZhbCAiJDM9XCRhY190eXBlIiA7OwotZXNhYwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkMyJcIiA9IHgibm8iOyB0aGVuIDoKLQotZWxzZQotICBicmVhawotZmkKLSAgICAgZG9uZQotZmkKLWV2YWwgYWNfcmVzPVwkJDMKLQkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQotJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQotICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KLQotfSAjIGFjX2ZuX2NfZmluZF91aW50WF90Ci0KLSMgYWNfZm5fY19maW5kX2ludFhfdCBMSU5FTk8gQklUUyBWQVIKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRmluZHMgYSBzaWduZWQgaW50ZWdlciB0eXBlIHdpdGggd2lkdGggQklUUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIKLSMgYWNjb3JkaW5nbHkuCi1hY19mbl9jX2ZpbmRfaW50WF90ICgpCi17Ci0gIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaW50JDJfdCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgaW50JDJfdC4uLiAiID4mNjsgfQotaWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGV2YWwgIiQzPW5vIgotICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCAtIG5ldmVyIGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIKLSAgICAgIyB0aGFuIGhhbGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KLSAgICAgZm9yIGFjX3R5cGUgaW4gaW50JDJfdCAnaW50JyAnbG9uZyBpbnQnIFwKLQkgJ2xvbmcgbG9uZyBpbnQnICdzaG9ydCBpbnQnICdzaWduZWQgY2hhcic7IGRvCi0gICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLQkgICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OwotaW50Ci1tYWluICgpCi17Ci1zdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgwIDwgKCRhY190eXBlKSAoKCgoKCRhY190eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMSkpXTsKLXRlc3RfYXJyYXkgWzBdID0gMDsKLXJldHVybiB0ZXN0X2FycmF5IFswXTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0JICAgICAgICBlbnVtIHsgTiA9ICQyIC8gMiAtIDEgfTsKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCRhY190eXBlKSAoKCgoKCRhY190eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMSkKLQkJIDwgKCRhY190eXBlKSAoKCgoKCRhY190eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMikpXTsKLXRlc3RfYXJyYXkgWzBdID0gMDsKLXJldHVybiB0ZXN0X2FycmF5IFswXTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLSAgY2FzZSAkYWNfdHlwZSBpbiAjKAotICBpbnQkMl90KSA6Ci0gICAgZXZhbCAiJDM9eWVzIiA7OyAjKAotICAqKSA6Ci0gICAgZXZhbCAiJDM9XCRhY190eXBlIiA7OwotZXNhYwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkMyJcIiA9IHgibm8iOyB0aGVuIDoKLQotZWxzZQotICBicmVhawotZmkKLSAgICAgZG9uZQotZmkKLWV2YWwgYWNfcmVzPVwkJDMKLQkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQotJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQotICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KLQotfSAjIGFjX2ZuX2NfZmluZF9pbnRYX3QKLQogIyBhY19mbl9jX2NvbXB1dGVfaW50IExJTkVOTyBFWFBSIFZBUiBJTkNMVURFUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBUcmllcyB0byBmaW5kIHRoZSBjb21waWxlLXRpbWUgdmFsdWUgb2YgRVhQUiBpbiBhIHByb2dyYW0gdGhhdCBpbmNsdWRlcwpAQCAtMjQ3MCw3ICsyMzQxLDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuNSwgd2hpY2ggd2FzCitJdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuNiwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAkICQwICRACkBAIC0zMDU5LDcgKzI5MzAsNyBAQAogICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgogICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCiAJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCi0JICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLDMpKSc7IHRoZW4KKwkgICAgaWYgJGludGVycCAtYyAiaW1wb3J0IHN5cztzeXMuZXhpdChub3QgJy4nLmpvaW4oc3RyKG4pIGZvciBuIGluIHN5cy52ZXJzaW9uX2luZm9bOjJdKSA9PSAnJFBBQ0tBR0VfVkVSU0lPTicpIjsgdGhlbgogCSAgICAgICAgYnJlYWsKIAkgICAgZmkKICAgICAgICAgICAgIGludGVycD0KQEAgLTMwNjksNyArMjk0MCw3IEBACiAJZmkKICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRpbnRlcnAiID4mNQogJGFzX2VjaG8gIiRpbnRlcnAiID4mNjsgfQotCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAnJGludGVycAorCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliIF9QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FPV9zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpXyQoTUFDSERFUClfJChNVUxUSUFSQ0gpICckaW50ZXJwCiAgICAgZmkKICAgICAjIFVzZWQgdG8gY29tbWVudCBvdXQgc3R1ZmYgZm9yIHJlYnVpbGRpbmcgZ2VuZXJhdGVkIGZpbGVzCiAgICAgR0VORVJBVEVEX0NPTU1FTlQ9JyMnCkBAIC0zMDk3LDcgKzI5NjgsNyBAQAogbXYgY29uZmRlZnMuaC5uZXcgY29uZmRlZnMuaAogCiAKLVZFUlNJT049My41CitWRVJTSU9OPTMuNgogCiAjIFZlcnNpb24gbnVtYmVyIG9mIFB5dGhvbidzIG93biBzaGFyZWQgbGlicmFyeSBmaWxlLgogCkBAIC00NzE2LDYgKzQ1ODcsNzUgQEAKICBHUkVQPSIkYWNfY3ZfcGF0aF9HUkVQIgogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1NFRCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAgICAgICBhY19zY3JpcHQ9cy9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIvCisgICAgIGZvciBhY19pIGluIDEgMiAzIDQgNSA2IDc7IGRvCisgICAgICAgYWNfc2NyaXB0PSIkYWNfc2NyaXB0JGFzX25sJGFjX3NjcmlwdCIKKyAgICAgZG9uZQorICAgICBlY2hvICIkYWNfc2NyaXB0IiAyPi9kZXYvbnVsbCB8IHNlZCA5OXEgPmNvbmZ0ZXN0LnNlZAorICAgICB7IGFjX3NjcmlwdD07IHVuc2V0IGFjX3NjcmlwdDt9CisgICAgIGlmIHRlc3QgLXogIiRTRUQiOyB0aGVuCisgIGFjX3BhdGhfU0VEX2ZvdW5kPWZhbHNlCisgICMgTG9vcCB0aHJvdWdoIHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFNRS1MSVNUCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfcHJvZyBpbiBzZWQgZ3NlZDsgZG8KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGFjX3BhdGhfU0VEPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9TRUQiIHx8IGNvbnRpbnVlCisjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9TRUQgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKyAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX1NFRAorY2FzZSBgIiRhY19wYXRoX1NFRCIgLS12ZXJzaW9uIDI+JjFgIGluCisqR05VKikKKyAgYWNfY3ZfcGF0aF9TRUQ9IiRhY19wYXRoX1NFRCIgYWNfcGF0aF9TRURfZm91bmQ9Ojs7CisqKQorICBhY19jb3VudD0wCisgICRhc19lY2hvX24gMDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0LmluIgorICB3aGlsZSA6CisgIGRvCisgICAgY2F0ICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRtcCIKKyAgICBtdiAiY29uZnRlc3QudG1wIiAiY29uZnRlc3QuaW4iCisgICAgY3AgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QubmwiCisgICAgJGFzX2VjaG8gJycgPj4gImNvbmZ0ZXN0Lm5sIgorICAgICIkYWNfcGF0aF9TRUQiIC1mIGNvbmZ0ZXN0LnNlZCA8ICJjb25mdGVzdC5ubCIgPiJjb25mdGVzdC5vdXQiIDI+L2Rldi9udWxsIHx8IGJyZWFrCisgICAgZGlmZiAiY29uZnRlc3Qub3V0IiAiY29uZnRlc3QubmwiID4vZGV2L251bGwgMj4mMSB8fCBicmVhaworICAgIGFzX2ZuX2FyaXRoICRhY19jb3VudCArIDEgJiYgYWNfY291bnQ9JGFzX3ZhbAorICAgIGlmIHRlc3QgJGFjX2NvdW50IC1ndCAke2FjX3BhdGhfU0VEX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRoX1NFRD0iJGFjX3BhdGhfU0VEIgorICAgICAgYWNfcGF0aF9TRURfbWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0aF9TRURfZm91bmQgJiYgYnJlYWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX1NFRCI7IHRoZW4KKyAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBzZWQgY291bGQgYmUgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX1NFRD0kU0VECitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX1NFRCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3BhdGhfU0VEIiA+JjY7IH0KKyBTRUQ9IiRhY19jdl9wYXRoX1NFRCIKKyAgcm0gLWYgY29uZnRlc3Quc2VkCisKIAogCiAKQEAgLTUyODksNyArNTIyOSwzMSBAQAogI3VuZGVmIHBvd2VycGMKICN1bmRlZiBzcGFyYwogI3VuZGVmIHVuaXgKLSNpZiBkZWZpbmVkKF9fbGludXhfXykKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2kzODZfXykKKyAgICAgICAgaTY4Ni1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKQorIyAgaWYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIGFhcmNoNjRfaWxwMzItbGludXgtYW5kcm9pZAorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWFuZHJvaWQKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmIGRlZmluZWQoX19BUk1FTF9fKQorICAgICAgICBhcm0tbGludXgtYW5kcm9pZGVhYmkKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtYW5kcm9pZAorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgIGVuZGlmCisjIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCiAgICAgICAgIHg4Nl82NC1saW51eC1nbnUKICMgZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19JTFAzMl9fKQpAQCAtNTQwNSwxMCArNTM2OSwxMyBAQAogICBpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4JE1VTFRJQVJDSDsgdGhlbgogICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnQiICIkTElORU5PIiA1CiAgIGZpCitlbGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCA9IHg7IHRoZW4KKyAgTVVMVElBUkNIPSRQTEFURk9STV9UUklQTEVUCiBmaQotUExBVERJUj1wbGF0LSRNQUNIREVQCiAKLQoraWYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIE1VTFRJQVJDSF9DUFBGTEFHUz0iLURNVUxUSUFSQ0g9XFxcIiRNVUxUSUFSQ0hcXFwiIgorZmkKIAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2wsLS1uby1hcy1uZWVkZWQiID4mNQpAQCAtNTcwMiw2ICs1NjY5LDMyIEBACiAKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBBbmRyb2lkIEFQSSBsZXZlbC4uLiAiID4mNjsgfQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CitfX0FORFJPSURfQVBJX18KKyNlbHNlCisjZXJyb3Igbm90IEFuZHJvaWQKKyNlbmRpZgorRU9GCisKK2lmICRDUFAgJENQUEZMQUdTIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBBTkRST0lEX0FQSV9MRVZFTD1gZ3JlcCAtdiAnXiMnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgJ14gKiQnYAorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFORFJPSURfQVBJX0xFVkVMIiA+JjUKKyRhc19lY2hvICIkQU5EUk9JRF9BUElfTEVWRUwiID4mNjsgfQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEFORFJPSURfQVBJX0xFVkVMICRBTkRST0lEX0FQSV9MRVZFTAorX0FDRU9GCisKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vdCBBbmRyb2lkIiA+JjUKKyRhc19lY2hvICJub3QgQW5kcm9pZCIgPiY2OyB9CitmaQorcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdC5vdXQKKwogIyBDaGVjayBmb3IgdW5zdXBwb3J0ZWQgc3lzdGVtcwogY2FzZSAkYWNfc3lzX3N5c3RlbS8kYWNfc3lzX3JlbGVhc2UgaW4KIGF0aGVvcyp8TGludXgqLzEqKQpAQCAtNjYwNCwxMyArNjU5NywyMCBAQAogaWYgdGVzdCAiJFB5X0xUTyIgPSAndHJ1ZScgOyB0aGVuCiAgIGNhc2UgJENDIGluCiAgICAgKmNsYW5nKikKLSAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICBEYXJ3aW4qKQorICAgICAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtV2wsLWV4cG9ydF9keW5hbWljIgorICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgICAgIDs7CisgICAgICBlc2FjCiAgICAgICA7OwogICAgICpnY2MqKQogICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogICAgICAgICBEYXJ3aW4qKQotICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKICAgICAgICAgICA7OwogICAgICAgICAqKQogICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtZnVzZS1saW5rZXItcGx1Z2luIC1mZmF0LWx0by1vYmplY3RzIC1mbHRvLXBhcnRpdGlvbj1ub25lIgpAQCAtNjkxOCw2ICs2OTE4LDQ5IEBACiAjIHR3ZWFrIEJBU0VDRkxBR1MgYmFzZWQgb24gY29tcGlsZXIgYW5kIHBsYXRmb3JtCiBjYXNlICRHQ0MgaW4KIHllcykKKyAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtc3RkPWM5OSIKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1XZXh0cmEiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1XZXh0cmEuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XZXh0cmEgLVdlcnJvciIKKyAgICAgaWYgJHthY19jdl9leHRyYV93YXJuaW5ncys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz15ZXMKKworZWxzZQorCisgICAgICAgICAgIGFjX2N2X2V4dHJhX3dhcm5pbmdzPW5vCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZXh0cmFfd2FybmluZ3MiID4mNQorJGFzX2VjaG8gIiRhY19jdl9leHRyYV93YXJuaW5ncyIgPiY2OyB9CisKKyAgICBpZiB0ZXN0ICRhY19jdl9leHRyYV93YXJuaW5ncyA9IHllcworICAgIHRoZW4KKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXh0cmEiCisgICAgZmkKKwogICAgICMgUHl0aG9uIGRvZXNuJ3QgdmlvbGF0ZSBDOTkgYWxpYXNpbmcgcnVsZXMsIGJ1dCBvbGRlciB2ZXJzaW9ucyBvZgogICAgICMgR0NDIHByb2R1Y2Ugd2FybmluZ3MgZm9yIGxlZ2FsIFB5dGhvbiBjb2RlLiAgRW5hYmxlCiAgICAgIyAtZm5vLXN0cmljdC1hbGlhc2luZyBvbiB2ZXJzaW9ucyBvZiBHQ0MgdGhhdCBzdXBwb3J0IGJ1dCBwcm9kdWNlCkBAIC03MDM4LDE0ICs3MDgxLDE0IEBACiAgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLXVudXNlZC1yZXN1bHQiCiAgICAgZmkKIAotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudC4uLiAiID4mNjsgfQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcuLi4gIiA+JjY7IH0KICAgICAgYWNfc2F2ZV9jYz0iJENDIgotICAgICBDQz0iJENDIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgotICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKLSAgICAgaWYgJHthY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZys6fSBmYWxzZTsgdGhlbiA6CisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcGFyYW1ldGVyIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC03MDYzLDI0ICs3MTA2LDY0IEBACiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKIAotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz15ZXMKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmc9eWVzCiAKIGVsc2UKIAotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz1ubworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZz1ubwogCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogCi0gICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgogICAgICBDQz0iJGFjX3NhdmVfY2MiCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmciID4mNjsgfQogCi0gICAgaWYgdGVzdCAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcgPSB5ZXMKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyA9IHllcwogICAgIHRoZW4KLSAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcGFyYW1ldGVyIgorICAgIGZpCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgbWlzc2luZyBmaWVsZCBpbml0aWFsaXplcnMgd2FybmluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIG1pc3NpbmcgZmllbGQgaW5pdGlhbGl6ZXJzIHdhcm5pbmcuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdlcnJvciIKKyAgICAgaWYgJHthY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnM9eWVzCisKK2Vsc2UKKworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPW5vCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMiID4mNjsgfQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycyA9IHllcworICAgIHRoZW4KKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiCiAgICAgZmkKIAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb24gJENDIG1peGVkIHNpZ24gY29tcGFyaXNvbiB3YXJuaW5nIiA+JjUKQEAgLTc3MTAsNyArNzc5Myw3IEBACiBmb3IgYWNfaGVhZGVyIGluIGFzbS90eXBlcy5oIGNvbmlvLmggZGlyZWN0LmggZGxmY24uaCBlcnJuby5oIFwKIGZjbnRsLmggZ3JwLmggXAogaWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNjaGVkLmggc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCiBwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKIHN5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXApAQCAtNzcxOSw3ICs3ODAyLDcgQEAKIHN5cy9zdGF0Lmggc3lzL3N5c2NhbGwuaCBzeXMvc3lzX2RvbWFpbi5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKIHN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91aW8uaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggXAogbGlidXRpbC5oIHN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKLWJsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggbGludXgvcmFuZG9tLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggZW5kaWFuLmggXAorbGludXgvdGlwYy5oIGxpbnV4L3JhbmRvbS5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIGVuZGlhbi5oIFwKIHN5cy9lbmRpYW4uaAogZG8gOgogICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCkBAIC03OTQyLDYgKzgwMjUsMjQgQEAKIGZpCiAKIAorIyBibHVldG9vdGgvYmx1ZXRvb3RoLmggaGFzIGJlZW4ga25vd24gdG8gbm90IGNvbXBpbGUgd2l0aCAtc3RkPWM5OS4KKyMgaHR0cDovL3Blcm1hbGluay5nbWFuZS5vcmcvZ21hbmUubGludXguYmx1ZXoua2VybmVsLzIyMjk0CitTQVZFX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9Ii1zdGQ9Yzk5ICRDRkxBR1MiCitmb3IgYWNfaGVhZGVyIGluIGJsdWV0b290aC9ibHVldG9vdGguaAorZG8gOgorICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiYmx1ZXRvb3RoL2JsdWV0b290aC5oIiAiYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfQkxVRVRPT1RIX0JMVUVUT09USF9IIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKK0NGTEFHUz0kU0FWRV9DRkxBR1MKKwogIyBPbiBEYXJ3aW4gKE9TIFgpIG5ldC9pZi5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaCB0byBiZSBpbXBvcnRlZCBmaXJzdC4KIGZvciBhY19oZWFkZXIgaW4gbmV0L2lmLmgKIGRvIDoKQEAgLTgxNDcsNiArODI0OCwxMSBAQAogICB1c2VfbGZzPW5vCiBmaQogCisjIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQKK2Nhc2UgJGFjX3N5c19zeXN0ZW0gaW4gR05VKikKKyAgdXNlX2xmcz1ubworZXNhYworCiBpZiB0ZXN0ICIkdXNlX2xmcyIgPSAieWVzIjsgdGhlbgogIyBUd28gZGVmaW5lcyBuZWVkZWQgdG8gZW5hYmxlIGxhcmdlZmlsZSBzdXBwb3J0IG9uIHZhcmlvdXMgcGxhdGZvcm1zCiAjIFRoZXNlIG1heSBhZmZlY3Qgc29tZSB0eXBlZGVmcwpAQCAtODI1Myw5NSArODM1OSw2IEBACiBmaQogCiAKLSMgVGhlcmUgYXJlIHR3byBzZXBhcmF0ZSBjaGVja3MgZm9yIGVhY2ggb2YgdGhlIGV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMgd2UKLSMgbmVlZC4gIEZpcnN0IHdlIGNoZWNrIHdoZXRoZXIgdGhlIHR5cGUgaXMgYXZhaWxhYmxlIHVzaW5nIHRoZSB1c3VhbAotIyBBQ19DSEVDS19UWVBFIG1hY3JvIHdpdGggdGhlIGRlZmF1bHQgaW5jbHVkZXMgKHdoaWNoIGluY2x1ZGVzIDxpbnR0eXBlcy5oPgotIyBhbmQgPHN0ZGludC5oPiB3aGVyZSBhdmFpbGFibGUpLiAgV2UgdGhlbiBhbHNvIHVzZSB0aGUgc3BlY2lhbCB0eXBlIGNoZWNrcyBvZgotIyB0aGUgZm9ybSBBQ19UWVBFX1VJTlQzMl9ULCB3aGljaCBpbiB0aGUgY2FzZSB0aGF0IHVpbnQzMl90IGlzIG5vdCBhdmFpbGFibGUKLSMgZGlyZWN0bHksICNkZWZpbmUncyB1aW50MzJfdCB0byBiZSBhIHN1aXRhYmxlIHR5cGUuCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnQzMl90IiAiYWNfY3ZfdHlwZV91aW50MzJfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX3VpbnQzMl90IiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1VJTlQzMl9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfdWludFhfdCAiJExJTkVOTyIgIjMyIiAiYWNfY3ZfY191aW50MzJfdCIKLWNhc2UgJGFjX2N2X2NfdWludDMyX3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi0kYXNfZWNobyAiI2RlZmluZSBfVUlOVDMyX1QgMSIgPj5jb25mZGVmcy5oCi0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSB1aW50MzJfdCAkYWNfY3ZfY191aW50MzJfdAotX0FDRU9GCi07OwotICBlc2FjCi0KLQotYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAidWludDY0X3QiICJhY19jdl90eXBlX3VpbnQ2NF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfdWludDY0X3QiID0geHllczsgdGhlbiA6Ci0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfVUlOVDY0X1QgMSIgPj5jb25mZGVmcy5oCi0KLWZpCi0KLWFjX2ZuX2NfZmluZF91aW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX3VpbnQ2NF90IgotY2FzZSAkYWNfY3ZfY191aW50NjRfdCBpbiAjKAotICBub3x5ZXMpIDs7ICMoCi0gICopCi0KLSRhc19lY2hvICIjZGVmaW5lIF9VSU5UNjRfVCAxIiA+PmNvbmZkZWZzLmgKLQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIHVpbnQ2NF90ICRhY19jdl9jX3VpbnQ2NF90Ci1fQUNFT0YKLTs7Ci0gIGVzYWMKLQotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJpbnQzMl90IiAiYWNfY3ZfdHlwZV9pbnQzMl90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfaW50MzJfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JTlQzMl9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiMzIiICJhY19jdl9jX2ludDMyX3QiCi1jYXNlICRhY19jdl9jX2ludDMyX3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIGludDMyX3QgJGFjX2N2X2NfaW50MzJfdAotX0FDRU9GCi07OwotZXNhYwotCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgImludDY0X3QiICJhY19jdl90eXBlX2ludDY0X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV9pbnQ2NF90IiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0lOVDY0X1QgMSIgPj5jb25mZGVmcy5oCi0KLWZpCi0KLWFjX2ZuX2NfZmluZF9pbnRYX3QgIiRMSU5FTk8iICI2NCIgImFjX2N2X2NfaW50NjRfdCIKLWNhc2UgJGFjX2N2X2NfaW50NjRfdCBpbiAjKAotICBub3x5ZXMpIDs7ICMoCi0gICopCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgaW50NjRfdCAkYWNfY3ZfY19pbnQ2NF90Ci1fQUNFT0YKLTs7Ci1lc2FjCi0KLQogYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic3NpemVfdCIgImFjX2N2X3R5cGVfc3NpemVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgogaWYgdGVzdCAieCRhY19jdl90eXBlX3NzaXplX3QiID0geHllczsgdGhlbiA6CiAKQEAgLTg0MjksNiArODQ0NiwzOSBAQAogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCiAjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zaXplb2ZfbG9uZ19sb25nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAobG9uZyBsb25nKSkiICJhY19jdl9zaXplb2ZfbG9uZ19sb25nIiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CisKK2Vsc2UKKyAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfbG9uZ19sb25nIiA9IHllczsgdGhlbgorICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcgbG9uZykKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CisgICBlbHNlCisgICAgIGFjX2N2X3NpemVvZl9sb25nX2xvbmc9MAorICAgZmkKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl9sb25nX2xvbmciID4mNQorJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiA+JjY7IH0KKworCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgU0laRU9GX0xPTkdfTE9ORyAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZworX0FDRU9GCisKKworIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKyMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKKyMgZGVjbGFyYXRpb25zIGxpa2UgYGludCBhM1tbKHNpemVvZiAodW5zaWduZWQgY2hhcikpID49IDBdXTsnLgorIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiB2b2lkICoiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiB2b2lkICouLi4gIiA+JjY7IH0KIGlmICR7YWNfY3Zfc2l6ZW9mX3ZvaWRfcCs6fSBmYWxzZTsgdGhlbiA6CkBAIC04NjU2LDY3ICs4NzA2LDM5IEBACiBfQUNFT0YKIAogCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxvbmcgbG9uZyBzdXBwb3J0IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBsb25nIGxvbmcgc3VwcG9ydC4uLiAiID4mNjsgfQotaGF2ZV9sb25nX2xvbmc9bm8KLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci1sb25nIGxvbmcgeDsgeCA9IChsb25nIGxvbmcpMDsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfTE9OR19MT05HIDEiID4+Y29uZmRlZnMuaAotCi0gIGhhdmVfbG9uZ19sb25nPXllcwotCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfbG9uZ19sb25nIiA+JjUKLSRhc19lY2hvICIkaGF2ZV9sb25nX2xvbmciID4mNjsgfQotaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcyA7IHRoZW4KICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCiAjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KICMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2YgbG9uZyBsb25nIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgbG9uZyBsb25nLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3NpemVvZl9sb25nX2xvbmcrOn0gZmFsc2U7IHRoZW4gOgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zaXplb2ZfdWludHB0cl90Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKLSAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAobG9uZyBsb25nKSkiICJhY19jdl9zaXplb2ZfbG9uZ19sb25nIiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CisgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKHVpbnRwdHJfdCkpIiAiYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgogCiBlbHNlCi0gIGlmIHRlc3QgIiRhY19jdl90eXBlX2xvbmdfbG9uZyIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHllczsgdGhlbgogICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcgbG9uZykKK2FzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKHVpbnRwdHJfdCkKIFNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiAgICBlbHNlCi0gICAgIGFjX2N2X3NpemVvZl9sb25nX2xvbmc9MAorICAgICBhY19jdl9zaXplb2ZfdWludHB0cl90PTAKICAgIGZpCiBmaQogCiBmaQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiA+JjUKLSRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY2OyB9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl91aW50cHRyX3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjY7IH0KIAogCiAKIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgU0laRU9GX0xPTkdfTE9ORyAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZworI2RlZmluZSBTSVpFT0ZfVUlOVFBUUl9UICRhY19jdl9zaXplb2ZfdWludHB0cl90CiBfQUNFT0YKIAogCi1maQogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsb25nIGRvdWJsZSBzdXBwb3J0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBsb25nIGRvdWJsZSBzdXBwb3J0Li4uICIgPiY2OyB9CkBAIC04Nzc5LDMzICs4ODAxLDYgQEAKIAogZmkKIAotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfQm9vbCBzdXBwb3J0IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBfQm9vbCBzdXBwb3J0Li4uICIgPiY2OyB9Ci1oYXZlX2M5OV9ib29sPW5vCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotX0Jvb2wgeDsgeCA9IChfQm9vbCkwOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DOTlfQk9PTCAxIiA+PmNvbmZkZWZzLmgKLQotICBoYXZlX2M5OV9ib29sPXllcwotCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfYzk5X2Jvb2wiID4mNQotJGFzX2VjaG8gIiRoYXZlX2M5OV9ib29sIiA+JjY7IH0KLWlmIHRlc3QgIiRoYXZlX2M5OV9ib29sIiA9IHllcyA7IHRoZW4KICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCiAjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KQEAgLTg4MzksNTYgKzg4MzQsNiBAQAogX0FDRU9GCiAKIAotZmkKLQotYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAidWludHB0cl90IiAiYWNfY3ZfdHlwZV91aW50cHRyX3QiICIjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICAgICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gICAgICAgICNlbmRpZgotICAgICAgICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICi0gICAgICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAgICAgICAjZW5kaWYKLSIKLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV91aW50cHRyX3QiID0geHllczsgdGhlbiA6Ci0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgSEFWRV9VSU5UUFRSX1QgMQotX0FDRU9GCi0KLSMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCi0jIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCi0jIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KLSMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2YgdWludHB0cl90IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgdWludHB0cl90Li4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3NpemVvZl91aW50cHRyX3QrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mICh1aW50cHRyX3QpKSIgImFjX2N2X3NpemVvZl91aW50cHRyX3QiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKLQotZWxzZQotICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV91aW50cHRyX3QiID0geWVzOyB0aGVuCi0gICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgNzcgImNhbm5vdCBjb21wdXRlIHNpemVvZiAodWludHB0cl90KQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLSAgIGVsc2UKLSAgICAgYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdD0wCi0gICBmaQotZmkKLQotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3NpemVvZl91aW50cHRyX3QiID4mNjsgfQotCi0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBTSVpFT0ZfVUlOVFBUUl9UICRhY19jdl9zaXplb2ZfdWludHB0cl90Ci1fQUNFT0YKLQotCi1maQotCiAKICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCkBAIC04OTMxLDggKzg4NzYsNiBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIGxhcmdlIGZpbGUgc3VwcG9ydCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KIGlmIHRlc3QgIiRhY19jdl9zaXplb2Zfb2ZmX3QiIC1ndCAiJGFjX2N2X3NpemVvZl9sb25nIiAtYSBcCiAJIiRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiAtZ2UgIiRhY19jdl9zaXplb2Zfb2ZmX3QiOyB0aGVuCiAKQEAgLTg5NDQsMTAgKzg4ODcsNiBAQAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKIAogIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKICMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKQEAgLTEwMTA1LDExICsxMDA0NCwyNyBAQAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zeXN0ZW1fZmZpIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7d2l0aF9zeXN0ZW1fZmZpK3NldH0iID0gc2V0OyB0aGVuIDoKICAgd2l0aHZhbD0kd2l0aF9zeXN0ZW1fZmZpOwotZWxzZQotICB3aXRoX3N5c3RlbV9mZmk9Im5vIgogZmkKIAogCitjYXNlICIkd2l0aF9zeXN0ZW1fZmZpIiBpbgorICAgICIiKQorICAgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCisgICAgICAgICAgICBEYXJ3aW4pCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJubyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICB3aXRoX3N5c3RlbV9mZmk9InllcyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisgICAgeWVzfG5vKQorICAgICAgICA7OworICAgICopCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICItLXdpdGgtc3lzdGVtLWZmaSBhY2NlcHRzIG5vIGFyZ3VtZW50cyIgIiRMSU5FTk8iIDUKKyAgICAgICAgOzsKK2VzYWMKKwogaWYgdGVzdCAiJHdpdGhfc3lzdGVtX2ZmaSIgPSAieWVzIiAmJiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KICAgICBMSUJGRklfSU5DTFVERURJUj0iYCIkUEtHX0NPTkZJRyIgbGliZmZpIC0tY2ZsYWdzLW9ubHktSSAyPi9kZXYvbnVsbCB8IHNlZCAtZSAncy9eLUkvLztzLyAqJC8vJ2AiCiBlbHNlCkBAIC0xMDIxMiwzMiArMTAxNjcsNiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2RibWxpYm9yZGVyIiA+JjUKICRhc19lY2hvICIkd2l0aF9kYm1saWJvcmRlciIgPiY2OyB9CiAKLSMgRGV0ZXJtaW5lIGlmIHNpZ25hbG1vZHVsZSBzaG91bGQgYmUgdXNlZC4KLQotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtc2lnbmFsLW1vZHVsZSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXNpZ25hbC1tb2R1bGUuLi4gIiA+JjY7IH0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zaWduYWwtbW9kdWxlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9zaWduYWxfbW9kdWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9zaWduYWxfbW9kdWxlOwotZmkKLQotCi1pZiB0ZXN0IC16ICIkd2l0aF9zaWduYWxfbW9kdWxlIgotdGhlbiB3aXRoX3NpZ25hbF9tb2R1bGU9InllcyIKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfc2lnbmFsX21vZHVsZSIgPiY1Ci0kYXNfZWNobyAiJHdpdGhfc2lnbmFsX21vZHVsZSIgPiY2OyB9Ci0KLWlmIHRlc3QgIiR7d2l0aF9zaWduYWxfbW9kdWxlfSIgPSAieWVzIjsgdGhlbgotCVVTRV9TSUdOQUxfTU9EVUxFPSIiCi0JU0lHTkFMX09CSlM9IiIKLWVsc2UKLQlVU0VfU0lHTkFMX01PRFVMRT0iIyIKLQlTSUdOQUxfT0JKUz0iUGFyc2VyL2ludHJjaGVjay5vIFB5dGhvbi9zaWdjaGVjay5vIgotZmkKLQogIyBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgU2V0dXAuY29uZmlnCiAKIFVTRV9USFJFQURfTU9EVUxFPSIiCkBAIC0xMTA1NCwzNyArMTA5ODMsNiBAQAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE9TWCAxMC41IFNESyBvciBsYXRlci4uLiAiID4mNjsgfQotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0gICNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+Ci1pbnQKLW1haW4gKCkKLXsKLUZTSU9SZWZOdW0gZlJlZiA9IDAKLSAgOwotICByZXR1cm4gMDsKLX0KLQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9PU1gxMDVfU0RLIDEiID4+Y29uZmRlZnMuaAotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0KLWVsc2UKLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCiAjIENoZWNrIGZvciAtLXdpdGgtZG9jLXN0cmluZ3MKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLWRvYy1zdHJpbmdzLi4uICIgPiY2OyB9CkBAIC0xMTEwNywyOSArMTEwMDUsNiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2RvY19zdHJpbmdzIiA+JjUKICRhc19lY2hvICIkd2l0aF9kb2Nfc3RyaW5ncyIgPiY2OyB9CiAKLSMgQ2hlY2sgaWYgZXZhbCBsb29wIHNob3VsZCB1c2UgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsaW5nCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtdHNjIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtdHNjLi4uICIgPiY2OyB9Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtdHNjIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF90c2Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX3RzYzsKLWlmIHRlc3QgIiR3aXRodmFsIiAhPSBubwotdGhlbgotCi0kYXNfZWNobyAiI2RlZmluZSBXSVRIX1RTQyAxIiA+PmNvbmZkZWZzLmgKLQotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci1lbHNlIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KICMgQ2hlY2sgZm9yIFB5dGhvbi1zcGVjaWZpYyBtYWxsb2Mgc3VwcG9ydAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXB5bWFsbG9jIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtcHltYWxsb2MuLi4gIiA+JjY7IH0KQEAgLTExMTgyLDYgKzExMDU3LDEwMiBAQAogICAgIE9QVD0iLUREWU5BTUlDX0FOTk9UQVRJT05TX0VOQUJMRUQ9MSAkT1BUIgogZmkKIAorIyBDaGVjayBmb3IgRFRyYWNlIHN1cHBvcnQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1kdHJhY2UiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1kdHJhY2UuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1kdHJhY2Ugd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2R0cmFjZStzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfZHRyYWNlOworZWxzZQorICB3aXRoX2R0cmFjZT1ubworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2R0cmFjZSIgPiY1CiskYXNfZWNobyAiJHdpdGhfZHRyYWNlIiA+JjY7IH0KKworCisKKworCitEVFJBQ0U9CitERkxBR1M9CitEVFJBQ0VfSEVBREVSUz0KK0RUUkFDRV9PQkpTPQorCitpZiB0ZXN0ICIkd2l0aF9kdHJhY2UiID0gInllcyIKK3RoZW4KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImR0cmFjZSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZHRyYWNlOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9EVFJBQ0UrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICREVFJBQ0UgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfRFRSQUNFPSIkRFRSQUNFIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9EVFJBQ0U9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfRFRSQUNFIiAmJiBhY19jdl9wYXRoX0RUUkFDRT0ibm90IGZvdW5kIgorICA7OworZXNhYworZmkKK0RUUkFDRT0kYWNfY3ZfcGF0aF9EVFJBQ0UKK2lmIHRlc3QgLW4gIiREVFJBQ0UiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRFRSQUNFIiA+JjUKKyRhc19lY2hvICIkRFRSQUNFIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICBpZiB0ZXN0ICIkRFRSQUNFIiA9ICJub3QgZm91bmQiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJkdHJhY2UgY29tbWFuZCBub3QgZm91bmQgb24gXCRQQVRIIiAiJExJTkVOTyIgNQorICAgIGZpCisKKyRhc19lY2hvICIjZGVmaW5lIFdJVEhfRFRSQUNFIDEiID4+Y29uZmRlZnMuaAorCisgICAgRFRSQUNFX0hFQURFUlM9IkluY2x1ZGUvcHlkdHJhY2VfcHJvYmVzLmgiCisKKyAgICAjIE9uIE9TIFgsIERUcmFjZSBwcm92aWRlcnMgZG8gbm90IG5lZWQgdG8gYmUgZXhwbGljaXRseSBjb21waWxlZCBhbmQKKyAgICAjIGxpbmtlZCBpbnRvIHRoZSBiaW5hcnkuIENvcnJlc3BvbmRpbmdseSwgZHRyYWNlKDEpIGlzIG1pc3NpbmcgdGhlIEVMRgorICAgICMgZ2VuZXJhdGlvbiBmbGFnICctRycuIFdlIGNoZWNrIGZvciBwcmVzZW5jZSBvZiB0aGlzIGZsYWcsIHJhdGhlciB0aGFuCisgICAgIyBoYXJkY29kaW5nIHN1cHBvcnQgYnkgT1MsIGluIHRoZSBpbnRlcmVzdCBvZiByb2J1c3RuZXNzLgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBEVHJhY2UgcHJvYmVzIHJlcXVpcmUgbGlua2luZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIERUcmFjZSBwcm9iZXMgcmVxdWlyZSBsaW5raW5nLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2R0cmFjZV9saW5rKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgICAgICAgICAgICAgYWNfY3ZfZHRyYWNlX2xpbms9bm8KKyAgICAgICAgICAgIGVjaG8gJ0JFR0lOJyA+IGNvbmZ0ZXN0LmQKKyAgICAgICAgICAgICIkRFRSQUNFIiAtRyAtcyBjb25mdGVzdC5kIC1vIGNvbmZ0ZXN0Lm8gPiAvZGV2L251bGwgMj4mMSAmJiBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZHRyYWNlX2xpbms9eWVzCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2R0cmFjZV9saW5rIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZHRyYWNlX2xpbmsiID4mNjsgfQorICAgIGlmIHRlc3QgIiRhY19jdl9kdHJhY2VfbGluayIgPSAieWVzIjsgdGhlbgorICAgICAgICBEVFJBQ0VfT0JKUz0iUHl0aG9uL3B5ZHRyYWNlLm8iCisgICAgZmkKK2ZpCisKICMgLUkke0RMSU5DTERJUn0gaXMgYWRkZWQgdG8gdGhlIGNvbXBpbGUgcnVsZSBmb3IgaW1wb3J0ZGwubwogCiBETElOQ0xESVI9LgpAQCAtMTI2MTIsNiArMTI1ODMsNjQgQEAKIGRvbmUKIAogCitmb3IgYWNfZnVuYyBpbiBjbG9ja19zZXR0aW1lCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX3NldHRpbWUiICJhY19jdl9mdW5jX2Nsb2NrX3NldHRpbWUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfY2xvY2tfc2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0NMT0NLX1NFVFRJTUUgMQorX0FDRU9GCisKK2Vsc2UKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGNsb2NrX3NldHRpbWUgaW4gLWxydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY2xvY2tfc2V0dGltZSBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxydCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgY2xvY2tfc2V0dGltZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGNsb2NrX3NldHRpbWUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX1NFVFRJTUUgMSIgPj5jb25mZGVmcy5oCisKKworZmkKKworCitmaQorZG9uZQorCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ham9yIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWpvci4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTMwMjksNiArMTMwNTgsMzMgQEAKIAogZmkKIAorYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3QgcGFzc3dkIiAicHdfZ2Vjb3MiICJhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19nZWNvcyIgIgorICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICNpbmNsdWRlIDxwd2QuaD4KKworIgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19nZWNvcyIgPSB4eWVzOyB0aGVuIDoKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MgMQorX0FDRU9GCisKKworZmkKK2FjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHBhc3N3ZCIgInB3X3Bhc3N3ZCIgImFjX2N2X21lbWJlcl9zdHJ1Y3RfcGFzc3dkX3B3X3Bhc3N3ZCIgIgorICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICNpbmNsdWRlIDxwd2QuaD4KKworIgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19wYXNzd2QiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX1BBU1NXRCAxCitfQUNFT0YKKworCitmaQorCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRpbWUuaCB0aGF0IGRlZmluZXMgYWx0em9uZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgdGltZS5oIHRoYXQgZGVmaW5lcyBhbHR6b25lLi4uICIgPiY2OyB9CkBAIC0xMzE2MCw2ICsxMzIxNiw0MSBAQAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzb2NrYWRkcl9hbGciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNvY2thZGRyX2FsZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjCQlpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMJCWluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyMJCWluY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPgoraW50CittYWluICgpCit7CitzdHJ1Y3Qgc29ja2FkZHJfYWxnIHMKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPXllcworZWxzZQorICBhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGciID4mNQorJGFzX2VjaG8gIiRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TT0NLQUREUl9BTEcgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKICMgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGNoYXIgaXMgdW5zaWduZWQiID4mNQpAQCAtMTM0NDgsNDAgKzEzNTM5LDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAotdmFfbGlzdF9pc19hcnJheT1ubwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHZhX2xpc3QgaXMgYW4gYXJyYXkiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5Li4uICIgPiY2OyB9Ci1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSNlbmRpZgotCi1pbnQKLW1haW4gKCkKLXsKLXZhX2xpc3QgbGlzdDEsIGxpc3QyOyBsaXN0MSA9IGxpc3QyOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLQotCi0kYXNfZWNobyAiI2RlZmluZSBWQV9MSVNUX0lTX0FSUkFZIDEiID4+Y29uZmRlZnMuaAotCi0gdmFfbGlzdF9pc19hcnJheT15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR2YV9saXN0X2lzX2FycmF5IiA+JjUKLSRhc19lY2hvICIkdmFfbGlzdF9pc19hcnJheSIgPiY2OyB9Ci0KICMgc2lnaCAtLSBnZXRob3N0YnluYW1lX3IgaXMgYSBtZXNzOyBpdCBjYW4gaGF2ZSAzLCA1IG9yIDYgYXJndW1lbnRzIDotKAogCiAKQEAgLTE0MzM5LDYgKzE0Mzk2LDg1IEBACiAKIGZpCiAKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTEFaWSIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0xBWlkiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTEFaWSIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTEFaWSAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9XIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTk9XIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PVyIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9XICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9HTE9CQUwiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9HTE9CQUwiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfR0xPQkFMIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9HTE9CQUwgJGFjX2hhdmVfZGVjbAorX0FDRU9GCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX0xPQ0FMIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTE9DQUwiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTE9DQUwiID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX0xPQ0FMICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9OT0RFTEVURSIgImFjX2N2X2hhdmVfZGVjbF9SVExEX05PREVMRVRFIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PREVMRVRFIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURSAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9MT0FEIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTk9MT0FEIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PTE9BRCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9MT0FEICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9ERUVQQklORCIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0RFRVBCSU5EIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0RFRVBCSU5EIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9ERUVQQklORCAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKKworCiAjIGRldGVybWluZSB3aGF0IHNpemUgZGlnaXQgdG8gdXNlIGZvciBQeXRob24ncyBsb25ncwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25ncyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25ncy4uLiAiID4mNjsgfQpAQCAtMTQ3NzIsNyArMTQ5MDgsMTEgQEAKICRhc19lY2hvICIkTERWRVJTSU9OIiA+JjY7IH0KIAogCi1MSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUID0geDsgdGhlbgorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2Vsc2UKKyAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKK2ZpCiAKIAogIyBDaGVjayB3aGV0aGVyIHJpZ2h0IHNoaWZ0aW5nIGEgbmVnYXRpdmUgaW50ZWdlciBleHRlbmRzIHRoZSBzaWduIGJpdApAQCAtMTU4NDUsMTAyICsxNTk4NSw2IEBACiAKIGZpCiAKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydC4uLiAiID4mNjsgfQotICBpZiAke2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKLSAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCi0gICAgc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgotICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotCi1pbnQKLW1haW4gKCkKLXsKLQotICAgICAgY2hhciAqYnVmZmVyOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKLSAgIGZpCi1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSAgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKLSAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICAjZW5kaWYKLQotICBpbnQgbWFpbigpCi0gIHsKLSAgICAgIGNoYXIgYnVmZmVyWzI1Nl07Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgaWYgKHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICItMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcwotZWxzZQotICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm8KLWZpCi1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0Ci1maQotCi0KLWZpCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID4mNQotJGFzX2VjaG8gIiRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID4mNjsgfQotZmkKLQotaWYgdGVzdCAiJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCIgPSB5ZXMKLXRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyBcImxsXCIiID4+Y29uZmRlZnMuaAotCi1maQotCiBpZiB0ZXN0ICRhY19zeXNfc3lzdGVtID0gRGFyd2luCiB0aGVuCiAJTElCUz0iJExJQlMgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiIKQEAgLTE3MDE0LDcgKzE3MDU4LDcgQEAKICMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgogIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KIGFjX2xvZz0iCi1UaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy41LCB3aGljaCB3YXMKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjYsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwpAQCAtMTcwNzYsNyArMTcxMjAsNyBAQAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBhY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIgogYWNfY3NfdmVyc2lvbj0iXFwKLXB5dGhvbiBjb25maWcuc3RhdHVzIDMuNQorcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy42CiBjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCkBAIC0xNzgyOCw3ICsxNzg3Miw3IEBACiBpZiB0ZXN0ICIkUHlfT1BUIiA9ICdmYWxzZScgLWEgIiRQeV9ERUJVRyIgIT0gJ3RydWUnOyB0aGVuCiAgICAgZWNobyAiIiA+JjYKICAgICBlY2hvICIiID4mNgotICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIgorICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIiA+JjYKICAgICBlY2hvICJwbGVhc2UgcnVuIC4vY29uZmlndXJlIC0td2l0aC1vcHRpbWl6YXRpb25zIiA+JjYKICAgICBlY2hvICIiID4mNgogICAgIGVjaG8gIiIgPiY2CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMzgxYmFiMC4uOGNlMmFlOSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMyw3ICszLDcgQEAKIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiAjIFNldCBWRVJTSU9OIHNvIHdlIG9ubHkgbmVlZCB0byBlZGl0IGluIG9uZSBwbGFjZSAoaS5lLiwgaGVyZSkKLW00X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy41KQorbTRfZGVmaW5lKFBZVEhPTl9WRVJTSU9OLCAzLjYpCiAKIEFDX1BSRVJFUSgyLjY1KQogCkBAIC02OSw3ICs2OSw3IEBACiAgICAgaWYgdGVzdCAteiAiJFBZVEhPTl9GT1JfQlVJTEQiOyB0aGVuCiAgICAgICAgIGZvciBpbnRlcnAgaW4gcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbjsgZG8KIAkgICAgd2hpY2ggJGludGVycCA+L2Rldi9udWxsIDI+JjEgfHwgY29udGludWUKLQkgICAgaWYgJGludGVycCAtYyAnaW1wb3J0IHN5cztzeXMuZXhpdChub3Qgc3lzLnZlcnNpb25faW5mb0A8OkA6MkA6PkAgPj0gKDMsMykpJzsgdGhlbgorCSAgICBpZiAkaW50ZXJwIC1jICJpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCAnLicuam9pbihzdHIobikgZm9yIG4gaW4gc3lzLnZlcnNpb25faW5mb0A8OkA6MkA6PkApID09ICckUEFDS0FHRV9WRVJTSU9OJykiOyB0aGVuCiAJICAgICAgICBicmVhawogCSAgICBmaQogICAgICAgICAgICAgaW50ZXJwPQpAQCAtNzgsNyArNzgsNyBAQAogCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKIAlmaQogICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCi0JUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICckaW50ZXJwCisJUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWIgX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUU9X3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUylfJChNQUNIREVQKV8kKE1VTFRJQVJDSCkgJyRpbnRlcnAKICAgICBmaQogICAgICMgVXNlZCB0byBjb21tZW50IG91dCBzdHVmZiBmb3IgcmVidWlsZGluZyBnZW5lcmF0ZWQgZmlsZXMKICAgICBHRU5FUkFURURfQ09NTUVOVD0nIycKQEAgLTY5NCw2ICs2OTQsNyBAQAogQUNfUFJPR19DQwogQUNfUFJPR19DUFAKIEFDX1BST0dfR1JFUAorQUNfUFJPR19TRUQKIAogQUNfU1VCU1QoQ1hYKQogQUNfU1VCU1QoTUFJTkNDKQpAQCAtNzY4LDcgKzc2OSwzMSBAQAogI3VuZGVmIHBvd2VycGMKICN1bmRlZiBzcGFyYwogI3VuZGVmIHVuaXgKLSNpZiBkZWZpbmVkKF9fbGludXhfXykKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2kzODZfXykKKyAgICAgICAgaTY4Ni1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKQorIyAgaWYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIGFhcmNoNjRfaWxwMzItbGludXgtYW5kcm9pZAorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWFuZHJvaWQKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmIGRlZmluZWQoX19BUk1FTF9fKQorICAgICAgICBhcm0tbGludXgtYW5kcm9pZGVhYmkKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtYW5kcm9pZAorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgIGVuZGlmCisjIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCiAgICAgICAgIHg4Nl82NC1saW51eC1nbnUKICMgZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19JTFAzMl9fKQpAQCAtODgyLDExICs5MDcsMTQgQEAKICAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KICAgICBBQ19NU0dfRVJST1IoW2ludGVybmFsIGNvbmZpZ3VyZSBlcnJvciBmb3IgdGhlIHBsYXRmb3JtIHRyaXBsZXQsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydF0pCiAgIGZpCitlbGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCA9IHg7IHRoZW4KKyAgTVVMVElBUkNIPSRQTEFURk9STV9UUklQTEVUCiBmaQotUExBVERJUj1wbGF0LSRNQUNIREVQCi1BQ19TVUJTVChQTEFURElSKQogQUNfU1VCU1QoUExBVEZPUk1fVFJJUExFVCkKLQoraWYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIE1VTFRJQVJDSF9DUFBGTEFHUz0iLURNVUxUSUFSQ0g9XFxcIiRNVUxUSUFSQ0hcXFwiIgorZmkKK0FDX1NVQlNUKE1VTFRJQVJDSF9DUFBGTEFHUykKIAogQUNfTVNHX0NIRUNLSU5HKFtmb3IgLVdsLC0tbm8tYXMtbmVlZGVkXSkKIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCkBAIC05MDMsNiArOTMxLDI1IEBACiAjIGNoZWNrcyBmb3IgVU5JWCB2YXJpYW50cyB0aGF0IHNldCBDIHByZXByb2Nlc3NvciB2YXJpYWJsZXMKIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUwogCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWxdKQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CitfX0FORFJPSURfQVBJX18KKyNlbHNlCisjZXJyb3Igbm90IEFuZHJvaWQKKyNlbmRpZgorRU9GCisKK2lmICRDUFAgJENQUEZMQUdTIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBBTkRST0lEX0FQSV9MRVZFTD1gZ3JlcCAtdiAnXiMnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgJ14gKiQnYAorICBBQ19NU0dfUkVTVUxUKFskQU5EUk9JRF9BUElfTEVWRUxdKQorICBBQ19ERUZJTkVfVU5RVU9URUQoQU5EUk9JRF9BUElfTEVWRUwsICRBTkRST0lEX0FQSV9MRVZFTCwgW1RoZSBBbmRyb2lkIEFQSSBsZXZlbC5dKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFtub3QgQW5kcm9pZF0pCitmaQorcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdC5vdXQKKwogIyBDaGVjayBmb3IgdW5zdXBwb3J0ZWQgc3lzdGVtcwogY2FzZSAkYWNfc3lzX3N5c3RlbS8kYWNfc3lzX3JlbGVhc2UgaW4KIGF0aGVvcyp8TGludXgqLzEqKQpAQCAtMTI3NywxMyArMTMyNCwyMCBAQAogaWYgdGVzdCAiJFB5X0xUTyIgPSAndHJ1ZScgOyB0aGVuCiAgIGNhc2UgJENDIGluCiAgICAgKmNsYW5nKikKLSAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICBEYXJ3aW4qKQorICAgICAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtV2wsLWV4cG9ydF9keW5hbWljIgorICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgICAgIDs7CisgICAgICBlc2FjCiAgICAgICA7OwogICAgICpnY2MqKQogICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogICAgICAgICBEYXJ3aW4qKQotICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKICAgICAgICAgICA7OwogICAgICAgICAqKQogICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtZnVzZS1saW5rZXItcGx1Z2luIC1mZmF0LWx0by1vYmplY3RzIC1mbHRvLXBhcnRpdGlvbj1ub25lIgpAQCAtMTQ2MSw2ICsxNTE1LDI4IEBACiAjIHR3ZWFrIEJBU0VDRkxBR1MgYmFzZWQgb24gY29tcGlsZXIgYW5kIHBsYXRmb3JtCiBjYXNlICRHQ0MgaW4KIHllcykKKyAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtc3RkPWM5OSIKKworICAgIEFDX01TR19DSEVDS0lORyhmb3IgLVdleHRyYSkKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XZXh0cmEgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2V4dHJhX3dhcm5pbmdzLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz1ubworICAgICAgICAgXSkpCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9leHRyYV93YXJuaW5ncykKKworICAgIGlmIHRlc3QgJGFjX2N2X2V4dHJhX3dhcm5pbmdzID0geWVzCisgICAgdGhlbgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVdleHRyYSIKKyAgICBmaQorCiAgICAgIyBQeXRob24gZG9lc24ndCB2aW9sYXRlIEM5OSBhbGlhc2luZyBydWxlcywgYnV0IG9sZGVyIHZlcnNpb25zIG9mCiAgICAgIyBHQ0MgcHJvZHVjZSB3YXJuaW5ncyBmb3IgbGVnYWwgUHl0aG9uIGNvZGUuICBFbmFibGUKICAgICAjIC1mbm8tc3RyaWN0LWFsaWFzaW5nIG9uIHZlcnNpb25zIG9mIEdDQyB0aGF0IHN1cHBvcnQgYnV0IHByb2R1Y2UKQEAgLTE1MjUsMjggKzE2MDEsNDcgQEAKICAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcwogICAgIHRoZW4KICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXJlc3VsdCIKICAgICBmaQogCi0gICAgQUNfTVNHX0NIRUNLSU5HKGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCkKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcpCiAgICAgIGFjX3NhdmVfY2M9IiRDQyIKLSAgICAgQ0M9IiRDQyAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKLSAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZywKKyAgICAgQ0M9IiRDQyAtV3VudXNlZC1wYXJhbWV0ZXIgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nLAogICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAogICAgICAgICAgWwotCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQotCSBdLFsKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9eWVzCi0JIF0sWwotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz1ubwotCSBdKSkKLSAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPXllcworICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPW5vCisgICAgICAgICBdKSkKICAgICAgQ0M9IiRhY19zYXZlX2NjIgotICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nKQorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nKQogCi0gICAgaWYgdGVzdCAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcgPSB5ZXMKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyA9IHllcwogICAgIHRoZW4KLSAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcGFyYW1ldGVyIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyBtaXNzaW5nIGZpZWxkIGluaXRpYWxpemVycyB3YXJuaW5nKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV2Vycm9yIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKyAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPW5vCisgICAgICAgICBdKSkKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzID0geWVzCisgICAgdGhlbgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIKICAgICBmaQogCiAgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZykKQEAgLTE5NDEsNyArMjAzNiw3IEBACiBBQ19DSEVDS19IRUFERVJTKGFzbS90eXBlcy5oIGNvbmlvLmggZGlyZWN0LmggZGxmY24uaCBlcnJuby5oIFwKIGZjbnRsLmggZ3JwLmggXAogaWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNjaGVkLmggc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCiBwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKIHN5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXApAQCAtMTk1MCwxMSArMjA0NSwxOCBAQAogc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAogc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCiBsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAotYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBsaW51eC9yYW5kb20uaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCBlbmRpYW4uaCBcCitsaW51eC90aXBjLmggbGludXgvcmFuZG9tLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggZW5kaWFuLmggXAogc3lzL2VuZGlhbi5oKQogQUNfSEVBREVSX0RJUkVOVAogQUNfSEVBREVSX01BSk9SCiAKKyMgYmx1ZXRvb3RoL2JsdWV0b290aC5oIGhhcyBiZWVuIGtub3duIHRvIG5vdCBjb21waWxlIHdpdGggLXN0ZD1jOTkuCisjIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmxpbnV4LmJsdWV6Lmtlcm5lbC8yMjI5NAorU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSItc3RkPWM5OSAkQ0ZMQUdTIgorQUNfQ0hFQ0tfSEVBREVSUyhibHVldG9vdGgvYmx1ZXRvb3RoLmgpCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCisKICMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCiBBQ19DSEVDS19IRUFERVJTKFtuZXQvaWYuaF0sIFtdLCBbXSwKIFsjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIwNDgsNiArMjE1MCwxMSBAQAogICB1c2VfbGZzPW5vCiBmaQogCisjIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQKK2Nhc2UgJGFjX3N5c19zeXN0ZW0gaW4gR05VKikKKyAgdXNlX2xmcz1ubworZXNhYworCiBpZiB0ZXN0ICIkdXNlX2xmcyIgPSAieWVzIjsgdGhlbgogIyBUd28gZGVmaW5lcyBuZWVkZWQgdG8gZW5hYmxlIGxhcmdlZmlsZSBzdXBwb3J0IG9uIHZhcmlvdXMgcGxhdGZvcm1zCiAjIFRoZXNlIG1heSBhZmZlY3Qgc29tZSB0eXBlZGVmcwpAQCAtMjA3OCwyOSArMjE4NSw2IEBACiBBQ19UWVBFX1NJWkVfVAogQUNfVFlQRV9VSURfVAogCi0jIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgY2hlY2tzIGZvciBlYWNoIG9mIHRoZSBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzIHdlCi0jIG5lZWQuICBGaXJzdCB3ZSBjaGVjayB3aGV0aGVyIHRoZSB0eXBlIGlzIGF2YWlsYWJsZSB1c2luZyB0aGUgdXN1YWwKLSMgQUNfQ0hFQ0tfVFlQRSBtYWNybyB3aXRoIHRoZSBkZWZhdWx0IGluY2x1ZGVzICh3aGljaCBpbmNsdWRlcyA8aW50dHlwZXMuaD4KLSMgYW5kIDxzdGRpbnQuaD4gd2hlcmUgYXZhaWxhYmxlKS4gIFdlIHRoZW4gYWxzbyB1c2UgdGhlIHNwZWNpYWwgdHlwZSBjaGVja3Mgb2YKLSMgdGhlIGZvcm0gQUNfVFlQRV9VSU5UMzJfVCwgd2hpY2ggaW4gdGhlIGNhc2UgdGhhdCB1aW50MzJfdCBpcyBub3QgYXZhaWxhYmxlCi0jIGRpcmVjdGx5LCAjZGVmaW5lJ3MgdWludDMyX3QgdG8gYmUgYSBzdWl0YWJsZSB0eXBlLgotCi1BQ19DSEVDS19UWVBFKHVpbnQzMl90LAotICBBQ19ERUZJTkUoSEFWRV9VSU5UMzJfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQzMl90Ll0pLCwpCi1BQ19UWVBFX1VJTlQzMl9UCi0KLUFDX0NIRUNLX1RZUEUodWludDY0X3QsCi0gIEFDX0RFRklORShIQVZFX1VJTlQ2NF9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuXSksLCkKLUFDX1RZUEVfVUlOVDY0X1QKLQotQUNfQ0hFQ0tfVFlQRShpbnQzMl90LAotICBBQ19ERUZJTkUoSEFWRV9JTlQzMl9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50MzJfdC5dKSwsKQotQUNfVFlQRV9JTlQzMl9UCi0KLUFDX0NIRUNLX1RZUEUoaW50NjRfdCwKLSAgQUNfREVGSU5FKEhBVkVfSU5UNjRfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIGludDY0X3QuXSksLCkKLUFDX1RZUEVfSU5UNjRfVAotCiBBQ19DSEVDS19UWVBFKHNzaXplX3QsCiAgIEFDX0RFRklORShIQVZFX1NTSVpFX1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBzc2l6ZV90XSksLCkKIEFDX0NIRUNLX1RZUEUoX191aW50MTI4X3QsCkBAIC0yMTEwLDYgKzIxOTQsNyBAQAogIyBBTlNJIEMgcmVxdWlyZXMgc2l6ZW9mKGNoYXIpID09IDEsIHNvIG5vIG5lZWQgdG8gY2hlY2sgaXQKIEFDX0NIRUNLX1NJWkVPRihpbnQsIDQpCiBBQ19DSEVDS19TSVpFT0YobG9uZywgNCkKK0FDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcsIDgpCiBBQ19DSEVDS19TSVpFT0Yodm9pZCAqLCA0KQogQUNfQ0hFQ0tfU0laRU9GKHNob3J0LCAyKQogQUNfQ0hFQ0tfU0laRU9GKGZsb2F0LCA0KQpAQCAtMjExNywxNyArMjIwMiw3IEBACiBBQ19DSEVDS19TSVpFT0YoZnBvc190LCA0KQogQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCwgNCkKIEFDX0NIRUNLX1NJWkVPRihwaWRfdCwgNCkKLQotQUNfTVNHX0NIRUNLSU5HKGZvciBsb25nIGxvbmcgc3VwcG9ydCkKLWhhdmVfbG9uZ19sb25nPW5vCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbbG9uZyBsb25nIHg7IHggPSAobG9uZyBsb25nKTA7XV0pXSxbCi0gIEFDX0RFRklORShIQVZFX0xPTkdfTE9ORywgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgbG9uZy5dKQotICBoYXZlX2xvbmdfbG9uZz15ZXMKLV0sW10pCi1BQ19NU0dfUkVTVUxUKCRoYXZlX2xvbmdfbG9uZykKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMgOyB0aGVuCi1BQ19DSEVDS19TSVpFT0YobG9uZyBsb25nLCA4KQotZmkKK0FDX0NIRUNLX1NJWkVPRih1aW50cHRyX3QpCiAKIEFDX01TR19DSEVDS0lORyhmb3IgbG9uZyBkb3VibGUgc3VwcG9ydCkKIGhhdmVfbG9uZ19kb3VibGU9bm8KQEAgLTIxNDAsMjYgKzIyMTUsNyBAQAogQUNfQ0hFQ0tfU0laRU9GKGxvbmcgZG91YmxlLCAxNikKIGZpCiAKLQotQUNfTVNHX0NIRUNLSU5HKGZvciBfQm9vbCBzdXBwb3J0KQotaGF2ZV9jOTlfYm9vbD1ubwotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW19Cb29sIHg7IHggPSAoX0Jvb2wpMDtdXSldLFsKLSAgQUNfREVGSU5FKEhBVkVfQzk5X0JPT0wsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBfQm9vbC5dKQotICBoYXZlX2M5OV9ib29sPXllcwotXSxbXSkKLUFDX01TR19SRVNVTFQoJGhhdmVfYzk5X2Jvb2wpCi1pZiB0ZXN0ICIkaGF2ZV9jOTlfYm9vbCIgPSB5ZXMgOyB0aGVuCiBBQ19DSEVDS19TSVpFT0YoX0Jvb2wsIDEpCi1maQotCi1BQ19DSEVDS19UWVBFUyh1aW50cHRyX3QsCi0gICBbQUNfQ0hFQ0tfU0laRU9GKHVpbnRwdHJfdCwgNCldLAotICAgW10sIFsjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICAgICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gICAgICAgICNlbmRpZgotICAgICAgICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICi0gICAgICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAgICAgICAjZW5kaWZdKQogCiBBQ19DSEVDS19TSVpFT0Yob2ZmX3QsIFtdLCBbCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSApAQCAtMjE2OCw4ICsyMjI0LDYgQEAKIF0pCiAKIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQpCi1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCiBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX29mZl90IiAtZ3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgLWEgXAogCSIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgLWdlICIkYWNfY3Zfc2l6ZW9mX29mZl90IjsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCwgMSwKQEAgLTIxODEsOSArMjIzNSw2IEBACiBlbHNlCiAgIEFDX01TR19SRVNVTFQobm8pCiBmaQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQotZmkKIAogQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCwgW10sIFsKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICkBAIC0yNzQyLDkgKzI3OTMsMjUgQEAKICMgQ2hlY2sgZm9yIHVzZSBvZiB0aGUgc3lzdGVtIGxpYmZmaSBsaWJyYXJ5CiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zeXN0ZW0tZmZpKQogQUNfQVJHX1dJVEgoc3lzdGVtX2ZmaSwKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWZmaV0sIFtidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnldKSwKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgW3dpdGhfc3lzdGVtX2ZmaT0ibm8iXSkKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWZmaV0sIFtidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnldKSwsLCkKKworY2FzZSAiJHdpdGhfc3lzdGVtX2ZmaSIgaW4KKyAgICAiIikKKyAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICAgICAgRGFyd2luKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ibm8iCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJ5ZXMiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIHllc3xubykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBBQ19NU0dfRVJST1IoWy0td2l0aC1zeXN0ZW0tZmZpIGFjY2VwdHMgbm8gYXJndW1lbnRzXSkKKyAgICAgICAgOzsKK2VzYWMKIAogaWYgdGVzdCAiJHdpdGhfc3lzdGVtX2ZmaSIgPSAieWVzIiAmJiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KICAgICBMSUJGRklfSU5DTFVERURJUj0iYCIkUEtHX0NPTkZJRyIgbGliZmZpIC0tY2ZsYWdzLW9ubHktSSAyPi9kZXYvbnVsbCB8IHNlZCAtZSAncy9eLUkvLztzLyAqJC8vJ2AiCkBAIC0yODE5LDI2ICsyODg2LDYgQEAKIGZpXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfZGJtbGlib3JkZXIpCiAKLSMgRGV0ZXJtaW5lIGlmIHNpZ25hbG1vZHVsZSBzaG91bGQgYmUgdXNlZC4KLUFDX1NVQlNUKFVTRV9TSUdOQUxfTU9EVUxFKQotQUNfU1VCU1QoU0lHTkFMX09CSlMpCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zaWduYWwtbW9kdWxlKQotQUNfQVJHX1dJVEgoc2lnbmFsLW1vZHVsZSwKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc2lnbmFsLW1vZHVsZV0sIFtkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlXSkpCi0KLWlmIHRlc3QgLXogIiR3aXRoX3NpZ25hbF9tb2R1bGUiCi10aGVuIHdpdGhfc2lnbmFsX21vZHVsZT0ieWVzIgotZmkKLUFDX01TR19SRVNVTFQoJHdpdGhfc2lnbmFsX21vZHVsZSkKLQotaWYgdGVzdCAiJHt3aXRoX3NpZ25hbF9tb2R1bGV9IiA9ICJ5ZXMiOyB0aGVuCi0JVVNFX1NJR05BTF9NT0RVTEU9IiIKLQlTSUdOQUxfT0JKUz0iIgotZWxzZQotCVVTRV9TSUdOQUxfTU9EVUxFPSIjIgotCVNJR05BTF9PQkpTPSJQYXJzZXIvaW50cmNoZWNrLm8gUHl0aG9uL3NpZ2NoZWNrLm8iCi1maQotCiAjIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBTZXR1cC5jb25maWcKIEFDX1NVQlNUKFVTRV9USFJFQURfTU9EVUxFKQogVVNFX1RIUkVBRF9NT0RVTEU9IiIKQEAgLTMyMDgsMTYgKzMyNTUsNiBAQAogICBBQ19NU0dfUkVTVUxUKG5vKQogXSkKIAotQUNfTVNHX0NIRUNLSU5HKGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIpCi1BQ19DT01QSUxFX0lGRUxTRShbCi0gIEFDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+XV0sIFtbRlNJT1JlZk51bSBmUmVmID0gMF1dKQotXSxbCi0gIEFDX0RFRklORShIQVZFX09TWDEwNV9TREssIDEsIFtEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAuNSBTREsgb3IgbGF0ZXIuXSkKLSAgQUNfTVNHX1JFU1VMVCh5ZXMpCi1dLFsKLSAgQUNfTVNHX1JFU1VMVChubykKLV0pCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtZG9jLXN0cmluZ3MpCiBBQ19BUkdfV0lUSChkb2Mtc3RyaW5ncywKQEAgLTMyMzMsMTkgKzMyNzAsNiBAQAogZmkKIEFDX01TR19SRVNVTFQoJHdpdGhfZG9jX3N0cmluZ3MpCiAKLSMgQ2hlY2sgaWYgZXZhbCBsb29wIHNob3VsZCB1c2UgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsaW5nCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC10c2MpCi1BQ19BUkdfV0lUSCh0c2MsCi0JICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgob3V0KS10c2NdLFtlbmFibGUvZGlzYWJsZSB0aW1lc3RhbXAgY291bnRlciBwcm9maWxlXSksWwotaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCi10aGVuCi0gIEFDX0RFRklORShXSVRIX1RTQywgMSwKLSAgICBbRGVmaW5lIHRvIHByb2ZpbGUgd2l0aCB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlcl0pCi0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi1lbHNlIEFDX01TR19SRVNVTFQobm8pCi1maV0sCi1bQUNfTVNHX1JFU1VMVChubyldKQotCiAjIENoZWNrIGZvciBQeXRob24tc3BlY2lmaWMgbWFsbG9jIHN1cHBvcnQKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXB5bWFsbG9jKQogQUNfQVJHX1dJVEgocHltYWxsb2MsCkBAIC0zMjc3LDYgKzMzMDEsNDcgQEAKICAgICBPUFQ9Ii1ERFlOQU1JQ19BTk5PVEFUSU9OU19FTkFCTEVEPTEgJE9QVCIKIGZpCiAKKyMgQ2hlY2sgZm9yIERUcmFjZSBzdXBwb3J0CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1kdHJhY2UpCitBQ19BUkdfV0lUSChkdHJhY2UsCisgIEFDX0hFTFBfU1RSSU5HKC0td2l0aChvdXQpLWR0cmFjZSwgW2Rpc2FibGUvZW5hYmxlIERUcmFjZSBzdXBwb3J0XSksLAorICB3aXRoX2R0cmFjZT1ubykKK0FDX01TR19SRVNVTFQoJHdpdGhfZHRyYWNlKQorCitBQ19TVUJTVChEVFJBQ0UpCitBQ19TVUJTVChERkxBR1MpCitBQ19TVUJTVChEVFJBQ0VfSEVBREVSUykKK0FDX1NVQlNUKERUUkFDRV9PQkpTKQorRFRSQUNFPQorREZMQUdTPQorRFRSQUNFX0hFQURFUlM9CitEVFJBQ0VfT0JKUz0KKworaWYgdGVzdCAiJHdpdGhfZHRyYWNlIiA9ICJ5ZXMiCit0aGVuCisgICAgQUNfUEFUSF9QUk9HKERUUkFDRSwgW2R0cmFjZV0sIFtub3QgZm91bmRdKQorICAgIGlmIHRlc3QgIiREVFJBQ0UiID0gIm5vdCBmb3VuZCI7IHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKFtkdHJhY2UgY29tbWFuZCBub3QgZm91bmQgb24gXCRQQVRIXSkKKyAgICBmaQorICAgIEFDX0RFRklORShXSVRIX0RUUkFDRSwgMSwgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIERUcmFjZSBzdXBwb3J0XSkKKyAgICBEVFJBQ0VfSEVBREVSUz0iSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaCIKKworICAgICMgT24gT1MgWCwgRFRyYWNlIHByb3ZpZGVycyBkbyBub3QgbmVlZCB0byBiZSBleHBsaWNpdGx5IGNvbXBpbGVkIGFuZAorICAgICMgbGlua2VkIGludG8gdGhlIGJpbmFyeS4gQ29ycmVzcG9uZGluZ2x5LCBkdHJhY2UoMSkgaXMgbWlzc2luZyB0aGUgRUxGCisgICAgIyBnZW5lcmF0aW9uIGZsYWcgJy1HJy4gV2UgY2hlY2sgZm9yIHByZXNlbmNlIG9mIHRoaXMgZmxhZywgcmF0aGVyIHRoYW4KKyAgICAjIGhhcmRjb2Rpbmcgc3VwcG9ydCBieSBPUywgaW4gdGhlIGludGVyZXN0IG9mIHJvYnVzdG5lc3MuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgRFRyYWNlIHByb2JlcyByZXF1aXJlIGxpbmtpbmddLAorICAgICAgICBbYWNfY3ZfZHRyYWNlX2xpbmtdLCBbZG5sCisgICAgICAgICAgICBhY19jdl9kdHJhY2VfbGluaz1ubworICAgICAgICAgICAgZWNobyAnQkVHSU4nID4gY29uZnRlc3QuZAorICAgICAgICAgICAgIiREVFJBQ0UiIC1HIC1zIGNvbmZ0ZXN0LmQgLW8gY29uZnRlc3QubyA+IC9kZXYvbnVsbCAyPiYxICYmIFwKKyAgICAgICAgICAgICAgICBhY19jdl9kdHJhY2VfbGluaz15ZXMKKyAgICAgIF0pCisgICAgaWYgdGVzdCAiJGFjX2N2X2R0cmFjZV9saW5rIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIERUUkFDRV9PQkpTPSJQeXRob24vcHlkdHJhY2UubyIKKyAgICBmaQorZmkKKwogIyAtSSR7RExJTkNMRElSfSBpcyBhZGRlZCB0byB0aGUgY29tcGlsZSBydWxlIGZvciBpbXBvcnRkbC5vCiBBQ19TVUJTVChETElOQ0xESVIpCiBETElOQ0xESVI9LgpAQCAtMzY2OSw2ICszNzM0LDEyIEBACiAgICAgXSkKIF0pCiAKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX3NldHRpbWUsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19zZXR0aW1lLCBbCisgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX1NFVFRJTUUsIDEpCisgICAgXSkKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgbWFqb3IsIG1pbm9yLCBhbmQgbWFrZWRldikKIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQpAQCAtMzgzMCw2ICszOTAxLDEwIEBACiBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9nZW5dKQogQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfYmlydGh0aW1lXSkKIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X2Jsb2Nrc10pCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgcGFzc3dkLnB3X2dlY29zLCBzdHJ1Y3QgcGFzc3dkLnB3X3Bhc3N3ZF0sIFtdLCBbXSwgW1sKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CitdXSkKIAogQUNfTVNHX0NIRUNLSU5HKGZvciB0aW1lLmggdGhhdCBkZWZpbmVzIGFsdHpvbmUpCiBBQ19DQUNIRV9WQUwoYWNfY3ZfaGVhZGVyX3RpbWVfYWx0em9uZSxbCkBAIC0zODc4LDYgKzM5NTMsMTkgQEAKIAlBQ19ERUZJTkUoSEFWRV9TT0NLQUREUl9TVE9SQUdFLCAxLCBbc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKHN5cy9zb2NrZXQuaCldKQogZmkKIAorQUNfTVNHX0NIRUNLSU5HKGZvciBzb2NrYWRkcl9hbGcpCitBQ19DQUNIRV9WQUwoYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZywKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyMJCWluY2x1ZGUgPHN5cy90eXBlcy5oPgorIwkJaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorIwkJaW5jbHVkZSA8bGludXgvaWZfYWxnLmg+XV0sIFtbc3RydWN0IHNvY2thZGRyX2FsZyBzXV0pXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9eWVzXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9bm9dKSkKK0FDX01TR19SRVNVTFQoJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcpCitpZiB0ZXN0ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnID0geWVzOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfU09DS0FERFJfQUxHLCAxLCBbc3RydWN0IHNvY2thZGRyX2FsZyAobGludXgvaWZfYWxnLmgpXSkKK2ZpCisKICMgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKIAogQUNfQ19DSEFSX1VOU0lHTkVECkBAIC0zOTUwLDIwICs0MDM4LDYgQEAKICAgW0FDX01TR19SRVNVTFQobm8pXQogKQogCi12YV9saXN0X2lzX2FycmF5PW5vCi1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5KQotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dmFyYXJncy5oPgotI2VuZGlmCi1dXSwgW1t2YV9saXN0IGxpc3QxLCBsaXN0MjsgbGlzdDEgPSBsaXN0MjtdXSldLFtdLFsKLSBBQ19ERUZJTkUoVkFfTElTVF9JU19BUlJBWSwgMSwgW0RlZmluZSBpZiBhIHZhX2xpc3QgaXMgYW4gYXJyYXkgb2Ygc29tZSBraW5kXSkKLSB2YV9saXN0X2lzX2FycmF5PXllcwotXSkKLUFDX01TR19SRVNVTFQoJHZhX2xpc3RfaXNfYXJyYXkpCi0KICMgc2lnaCAtLSBnZXRob3N0YnluYW1lX3IgaXMgYSBtZXNzOyBpdCBjYW4gaGF2ZSAzLCA1IG9yIDYgYXJndW1lbnRzIDotKAogQUhfVEVNUExBVEUoSEFWRV9HRVRIT1NUQllOQU1FX1IsCiAgIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSBzb21lIHZlcnNpb24gb2YgZ2V0aG9zdGJ5bmFtZV9yKCldKQpAQCAtNDQwNiw2ICs0NDgwLDggQEAKICAgW2RlZmluZSB0byAxIGlmIHlvdXIgc2VtX2dldHZhbHVlIGlzIGJyb2tlbi5dKQogZmkKIAorQUNfQ0hFQ0tfREVDTFMoW1JUTERfTEFaWSwgUlRMRF9OT1csIFJUTERfR0xPQkFMLCBSVExEX0xPQ0FMLCBSVExEX05PREVMRVRFLCBSVExEX05PTE9BRCwgUlRMRF9ERUVQQklORF0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8ZGxmY24uaD5dXSkKKwogIyBkZXRlcm1pbmUgd2hhdCBzaXplIGRpZ2l0IHRvIHVzZSBmb3IgUHl0aG9uJ3MgbG9uZ3MKIEFDX01TR19DSEVDS0lORyhbZGlnaXQgc2l6ZSBmb3IgUHl0aG9uJ3MgbG9uZ3NdKQogQUNfQVJHX0VOQUJMRShiaWctZGlnaXRzLApAQCAtNDUyNCw3ICs0NjAwLDExIEBACiAKIGRubCBkZWZpbmUgTElCUEwgYWZ0ZXIgQUJJRkxBR1MgYW5kIExEVkVSU0lPTiBpcyBkZWZpbmVkLgogQUNfU1VCU1QoUFlfRU5BQkxFX1NIQVJFRCkKLUxJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgoraWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgPSB4OyB0aGVuCisgIExJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgorZWxzZQorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfS0ke1BMQVRGT1JNX1RSSVBMRVR9IgorZmkKIEFDX1NVQlNUKExJQlBMKQogCiAjIENoZWNrIHdoZXRoZXIgcmlnaHQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBpbnRlZ2VyIGV4dGVuZHMgdGhlIHNpZ24gYml0CkBAIC00OTIyLDcwICs1MDAyLDYgQEAKICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0YyBkZXZpY2UgZmlsZS5dKQogZmkKIAotaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcwotdGhlbgotICBBQ19NU0dfQ0hFQ0tJTkcoZm9yICVsbGQgYW5kICVsbHUgcHJpbnRmKCkgZm9ybWF0IHN1cHBvcnQpCi0gIEFDX0NBQ0hFX1ZBTChhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQsCi0gIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbWwotICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSAgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKLSAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICAjZW5kaWYKLQotICBpbnQgbWFpbigpCi0gIHsKLSAgICAgIGNoYXIgYnVmZmVyWzI1Nl07Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgaWYgKHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICItMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLSAgXV1dKV0sCi0gIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzXSwKLSAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD1ub10sCi0gIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9ImNyb3NzIC0tIGFzc3VtaW5nIG5vIgotICAgaWYgdGVzdCB4JEdDQyA9IHh5ZXM7IHRoZW4KLSAgICBzYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1XZXJyb3IgLVdmb3JtYXQiCi0gICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAgICAgXV0sIFtbCi0gICAgICBjaGFyICpidWZmZXI7Ci0gICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMyk7Ci0gICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpOwotICAgICAgXV0pXSwKLSAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKLSAgICApCi0gICAgQ0ZMQUdTPSRzYXZlX0NGTEFHUwotICAgZmldKQotICApCi0gIEFDX01TR19SRVNVTFQoJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCkKLWZpCi0KLWlmIHRlc3QgIiRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID0geWVzCi10aGVuCi0gIEFDX0RFRklORShQWV9GT1JNQVRfTE9OR19MT05HLCAibGwiLAotICBbRGVmaW5lIHRvIHByaW50ZiBmb3JtYXQgbW9kaWZpZXIgZm9yIGxvbmcgbG9uZyB0eXBlXSkKLWZpCi0KIGlmIHRlc3QgJGFjX3N5c19zeXN0ZW0gPSBEYXJ3aW4KIHRoZW4KIAlMSUJTPSIkTElCUyAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIgpAQCAtNTM3OCw3ICs1Mzk0LDcgQEAKIGlmIHRlc3QgIiRQeV9PUFQiID0gJ2ZhbHNlJyAtYSAiJFB5X0RFQlVHIiAhPSAndHJ1ZSc7IHRoZW4KICAgICBlY2hvICIiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gIiIgPiZBU19NRVNTQUdFX0ZECi0gICAgZWNobyAiSWYgeW91IHdhbnQgYSByZWxlYXNlIGJ1aWxkIHdpdGggYWxsIG9wdGltaXphdGlvbnMgYWN0aXZlIChMVE8sIFBHTywgZXRjKSwiCisgICAgZWNobyAiSWYgeW91IHdhbnQgYSByZWxlYXNlIGJ1aWxkIHdpdGggYWxsIG9wdGltaXphdGlvbnMgYWN0aXZlIChMVE8sIFBHTywgZXRjKSwiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gInBsZWFzZSBydW4gLi9jb25maWd1cmUgLS13aXRoLW9wdGltaXphdGlvbnMiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gIiIgPiZBU19NRVNTQUdFX0ZECiAgICAgZWNobyAiIiA+JkFTX01FU1NBR0VfRkQKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IGJmNGJhNWIuLmU3YTgzNmMgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTIsNiArMTIsOSBAQAogICAgc3VwcG9ydCBmb3IgQUlYIEMrKyBzaGFyZWQgZXh0ZW5zaW9uIG1vZHVsZXMuICovCiAjdW5kZWYgQUlYX0dFTlVJTkVfQ1BMVVNQTFVTCiAKKy8qIFRoZSBBbmRyb2lkIEFQSSBsZXZlbC4gKi8KKyN1bmRlZiBBTkRST0lEX0FQSV9MRVZFTAorCiAvKiBEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkIGluIEFSTQogICAgbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKSAqLwogI3VuZGVmIERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQKQEAgLTEwNCw5ICsxMDcsNiBAQAogLyogSGFzIGJ1aWx0aW4gYXRvbWljcyAqLwogI3VuZGVmIEhBVkVfQlVJTFRJTl9BVE9NSUMKIAotLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgX0Jvb2wuICovCi0jdW5kZWYgSEFWRV9DOTlfQk9PTAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgJ2NoZmxhZ3MnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0hGTEFHUwogCkBAIC0xMjUsNiArMTI1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DTE9DS19HRVRUSU1FCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfc2V0dGltZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19TRVRUSU1FCisKIC8qIERlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy4gKi8KICN1bmRlZiBIQVZFX0NPTVBVVEVEX0dPVE9TCiAKQEAgLTE2Nyw2ICsxNzAsMzQgQEAKICAgICovCiAjdW5kZWYgSEFWRV9ERUNMX0lTTkFOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9ERUVQQklORCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfREVFUEJJTkQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX0dMT0JBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfR0xPQkFMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9MQVpZJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9MQVpZCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9MT0NBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTE9DQUwKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PREVMRVRFJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTk9MT0FEJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9OT0xPQUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PVycsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9XCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgdHpuYW1lJywgYW5kIHRvIDAgaWYgeW91IGRvbid0LgogICAgKi8KICN1bmRlZiBIQVZFX0RFQ0xfVFpOQU1FCkBAIC00NTMsMTIgKzQ4NCw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluaXRncm91cHMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfSU5JVEdST1VQUwogCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQzMl90LiAqLwotI3VuZGVmIEhBVkVfSU5UMzJfVAotCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQ2NF90LiAqLwotI3VuZGVmIEhBVkVfSU5UNjRfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSAogCkBAIC01NjEsOSArNTg2LDYgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgZG91YmxlLiAqLwogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUKIAotLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgbG9uZyBsb25nLiAqLwotI3VuZGVmIEhBVkVfTE9OR19MT05HCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHN0YXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTFNUQVQKIApAQCAtNjMwLDkgKzY1Miw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG9wZW5wdHknIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfT1BFTlBUWQogCi0vKiBEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAuNSBTREsgb3IgbGF0ZXIuICovCi0jdW5kZWYgSEFWRV9PU1gxMDVfU0RLCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGF0aGNvbmYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUEFUSENPTkYKIApAQCAtODYxLDYgKzg4MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNucHJpbnRmJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NOUFJJTlRGCiAKKy8qIHN0cnVjdCBzb2NrYWRkcl9hbGcgKGxpbnV4L2lmX2FsZy5oKSAqLworI3VuZGVmIEhBVkVfU09DS0FERFJfQUxHCisKIC8qIERlZmluZSBpZiBzb2NrYWRkciBoYXMgc2FfbGVuIG1lbWJlciAqLwogI3VuZGVmIEhBVkVfU09DS0FERFJfU0FfTEVOCiAKQEAgLTkxNiw2ICs5MzgsMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3Ryb3B0cy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NUUk9QVFNfSAogCisvKiBEZWZpbmUgdG8gMSBpZiBgcHdfZ2Vjb3MnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcGFzc3dkJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MKKworLyogRGVmaW5lIHRvIDEgaWYgYHB3X3Bhc3N3ZCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBwYXNzd2QnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QKKwogLyogRGVmaW5lIHRvIDEgaWYgYHN0X2JpcnRodGltZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JJUlRIVElNRQogCkBAIC0xMTAzLDE1ICsxMTMxLDYgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRjbCBhbmQgVENMX1VURl9NQVg9PTYgKi8KICN1bmRlZiBIQVZFX1VDUzRfVENMCiAKLS8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQzMl90LiAqLwotI3VuZGVmIEhBVkVfVUlOVDMyX1QKLQotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuICovCi0jdW5kZWYgSEFWRV9VSU5UNjRfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdWludHB0cl90Jy4gKi8KLSN1bmRlZiBIQVZFX1VJTlRQVFJfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVuYW1lJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1VOQU1FCiAKQEAgLTEyMjIsOSArMTI0MSw2IEBACiAvKiBEZWZpbmUgYXMgdGhlIHByZWZlcnJlZCBzaXplIGluIGJpdHMgb2YgbG9uZyBkaWdpdHMgKi8KICN1bmRlZiBQWUxPTkdfQklUU19JTl9ESUdJVAogCi0vKiBEZWZpbmUgdG8gcHJpbnRmIGZvcm1hdCBtb2RpZmllciBmb3IgbG9uZyBsb25nIHR5cGUgKi8KLSN1bmRlZiBQWV9GT1JNQVRfTE9OR19MT05HCi0KIC8qIERlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBQeV9zc2l6ZV90ICovCiAjdW5kZWYgUFlfRk9STUFUX1NJWkVfVAogCkBAIC0xMzQ1LDkgKzEzNjEsNiBAQAogI2VuZGlmCiAKIAotLyogRGVmaW5lIGlmIGEgdmFfbGlzdCBpcyBhbiBhcnJheSBvZiBzb21lIGtpbmQgKi8KLSN1bmRlZiBWQV9MSVNUX0lTX0FSUkFZCi0KIC8qIERlZmluZSBpZiB5b3Ugd2FudCBTSUdGUEUgaGFuZGxlZCAoc2VlIEluY2x1ZGUvcHlmcGUuaCkuICovCiAjdW5kZWYgV0FOVF9TSUdGUEVfSEFORExFUgogCkBAIC0xMzU3LDYgKzEzNzAsOSBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IGRvY3VtZW50YXRpb24gc3RyaW5ncyBpbiBleHRlbnNpb24gbW9kdWxlcyAqLwogI3VuZGVmIFdJVEhfRE9DX1NUUklOR1MKIAorLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gRFRyYWNlIHN1cHBvcnQgKi8KKyN1bmRlZiBXSVRIX0RUUkFDRQorCiAvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBuZXctc3R5bGUgKE9wZW5zdGVwLCBSaGFwc29keSwgTWFjT1MpIGR5bmFtaWMKICAgIGxpbmtlciAoZHlsZCkgaW5zdGVhZCBvZiB0aGUgb2xkLXN0eWxlIChOZXh0U3RlcCkgZHluYW1pYyBsaW5rZXIgKHJsZCkuCiAgICBEeWxkIGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IGZyYW1ld29ya3MuICovCkBAIC0xMzc1LDkgKzEzOTEsNiBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gcnVkaW1lbnRhcnkgdGhyZWFkIHN1cHBvcnQgKi8KICN1bmRlZiBXSVRIX1RIUkVBRAogCi0vKiBEZWZpbmUgdG8gcHJvZmlsZSB3aXRoIHRoZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyICovCi0jdW5kZWYgV0lUSF9UU0MKLQogLyogRGVmaW5lIGlmIHlvdSB3YW50IHB5bWFsbG9jIHRvIGJlIGRpc2FibGVkIHdoZW4gcnVubmluZyB1bmRlciB2YWxncmluZCAqLwogI3VuZGVmIFdJVEhfVkFMR1JJTkQKIApAQCAtMTQ0MiwxNiArMTQ1NSw2IEBACiAvKiBEZWZpbmUgdG8gZm9yY2UgdXNlIG9mIHRocmVhZC1zYWZlIGVycm5vLCBoX2Vycm5vLCBhbmQgb3RoZXIgZnVuY3Rpb25zICovCiAjdW5kZWYgX1JFRU5UUkFOVAogCi0vKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQzMl90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAotICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCi0gICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLwotI3VuZGVmIF9VSU5UMzJfVAotCi0vKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQ2NF90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAotICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCi0gICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLwotI3VuZGVmIF9VSU5UNjRfVAotCiAvKiBEZWZpbmUgdG8gdGhlIGxldmVsIG9mIFgvT3BlbiB0aGF0IHlvdXIgc3lzdGVtIHN1cHBvcnRzICovCiAjdW5kZWYgX1hPUEVOX1NPVVJDRQogCkBAIC0xNDgxLDE0ICsxNDg0LDYgQEAKICN1bmRlZiBpbmxpbmUKICNlbmRpZgogCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiBpbnQzMl90Ci0KLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIGludDY0X3QKLQogLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwogI3VuZGVmIG1vZGVfdAogCkBAIC0xNTEwLDE0ICsxNTA1LDYgQEAKIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAqLwogI3VuZGVmIHVpZF90CiAKLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAzMiBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIHVpbnQzMl90Ci0KLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIHVpbnQ2NF90Ci0KIC8qIERlZmluZSB0byBlbXB0eSBpZiB0aGUga2V5d29yZCBkb2VzIG5vdCB3b3JrLiAqLwogI3VuZGVmIHZvbGF0aWxlCiAKZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggMjlmZjFhOC4uYTE5ODlhYSAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgIGlmIG5vdCBsaXN0OgogICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgaWYgbGVuKGxpc3QpID4gMToKLSAgICAgICAgbG9nLmluZm8oIldBUk5JTkc6IG11bHRpcGxlIGNvcGllcyBvZiAlcyBmb3VuZCIlbW9kdWxlKQorICAgICAgICBsb2cuaW5mbygiV0FSTklORzogbXVsdGlwbGUgY29waWVzIG9mICVzIGZvdW5kIiwgbW9kdWxlKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGlzdFswXSwgbW9kdWxlKQogCiBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CkBAIC02NTIsNyArNjUyLDggQEAKICAgICAgICAgIyBwcm9maWxlciAoX2xzcHJvZiBpcyBmb3IgY1Byb2ZpbGUucHkpCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19sc3Byb2YnLCBbJ19sc3Byb2YuYycsICdyb3RhdGluZ3RyZWUuYyddKSApCiAgICAgICAgICMgc3RhdGljIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlCi0gICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3VuaWNvZGVkYXRhJywgWyd1bmljb2RlZGF0YS5jJ10pICkKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigndW5pY29kZWRhdGEnLCBbJ3VuaWNvZGVkYXRhLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsndW5pY29kZWRhdGFfZGIuaCcsICd1bmljb2RlbmFtZV9kYi5oJ10pICkKICAgICAgICAgIyBfb3Bjb2RlIG1vZHVsZQogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfb3Bjb2RlJywgWydfb3Bjb2RlLmMnXSkgKQogCkBAIC04MzgsNyArODM5LDcgQEAKICAgICAgICAgIyBmaW5kIG91dCB3aGljaCB2ZXJzaW9uIG9mIE9wZW5TU0wgd2UgaGF2ZQogICAgICAgICBvcGVuc3NsX3ZlciA9IDAKICAgICAgICAgb3BlbnNzbF92ZXJfcmUgPSByZS5jb21waWxlKAotICAgICAgICAgICAgJ15ccyojXHMqZGVmaW5lXHMrT1BFTlNTTF9WRVJTSU9OX05VTUJFUlxzKygweFswLTlhLWZBLUZdKyknICkKKyAgICAgICAgICAgIHInXlxzKiNccypkZWZpbmVccytPUEVOU1NMX1ZFUlNJT05fTlVNQkVSXHMrKDB4WzAtOWEtZkEtRl0rKScgKQogCiAgICAgICAgICMgbG9vayBmb3IgdGhlIG9wZW5zc2wgdmVyc2lvbiBoZWFkZXIgb24gdGhlIGNvbXBpbGVyIHNlYXJjaCBwYXRoLgogICAgICAgICBvcGVuc3Nsdl9oID0gZmluZF9maWxlKCdvcGVuc3NsL29wZW5zc2x2LmgnLCBbXSwKQEAgLTg4OSw2ICs4OTAsMjkgQEAKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3NoYTEnLCBbJ3NoYTFtb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQogCisgICAgICAgIGJsYWtlMl9kZXBzID0gZ2xvYihvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHNyY2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kdWxlcy9fYmxha2UyL2ltcGwvKicpKQorICAgICAgICBibGFrZTJfZGVwcy5hcHBlbmQoJ2hhc2hsaWIuaCcpCisKKyAgICAgICAgYmxha2UyX21hY3JvcyA9IFtdCisgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmcgYW5kIG9zLnVuYW1lKCkubWFjaGluZSA9PSAieDg2XzY0IjoKKyAgICAgICAgICAgICMgRXZlcnkgeDg2XzY0IG1hY2hpbmUgaGFzIGF0IGxlYXN0IFNTRTIuCisgICAgICAgICAgICBibGFrZTJfbWFjcm9zLmFwcGVuZCgoJ0JMQUtFMl9VU0VfU1NFJywgJzEnKSkKKworICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfYmxha2UyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19ibGFrZTIvYmxha2UybW9kdWxlLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2JsYWtlMi9ibGFrZTJiX2ltcGwuYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfYmxha2UyL2JsYWtlMnNfaW1wbC5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1ibGFrZTJfbWFjcm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9Ymxha2UyX2RlcHMpICkKKworICAgICAgICBzaGEzX2RlcHMgPSBnbG9iKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kdWxlcy9fc2hhMy9rY3AvKicpKQorICAgICAgICBzaGEzX2RlcHMuYXBwZW5kKCdoYXNobGliLmgnKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydfc2hhMy9zaGEzbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPXNoYTNfZGVwcykpCisKICAgICAgICAgIyBNb2R1bGVzIHRoYXQgcHJvdmlkZSBwZXJzaXN0ZW50IGRpY3Rpb25hcnktbGlrZSBzZW1hbnRpY3MuICBZb3Ugd2lsbAogICAgICAgICAjIHByb2JhYmx5IHdhbnQgdG8gYXJyYW5nZSBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZW0gdG8gYmUgYXZhaWxhYmxlIG9uCiAgICAgICAgICMgeW91ciBtYWNoaW5lLCB0aG91Z2ggbm9uZSBhcmUgZGVmaW5lZCBieSBkZWZhdWx0IGJlY2F1c2Ugb2YgbGlicmFyeQpAQCAtMTcwMSw3ICsxNzI1LDcgQEAKICAgICAgICAgIyBBbGwgZXhpc3RpbmcgZnJhbWV3b3JrIGJ1aWxkcyBvZiBUY2wvVGsgZG9uJ3Qgc3VwcG9ydCA2NC1iaXQKICAgICAgICAgIyBhcmNoaXRlY3R1cmVzLgogICAgICAgICBjZmxhZ3MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdDRkxBR1MnKVswXQotICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwoJy1hcmNoXHMrKFx3KyknLCBjZmxhZ3MpCisgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbChyJy1hcmNoXHMrKFx3KyknLCBjZmxhZ3MpCiAKICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICd0ay5hcmNoJykKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CkBAIC0xODg4LDYgKzE5MTIsOSBAQAogICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb25maWd1cmVfY3R5cGVzX2RhcndpbihleHQpCiAKKyAgICAgICAgICAgIHByaW50KCd3YXJuaW5nOiBidWlsZGluZyB3aXRoIHRoZSBidW5kbGVkIGNvcHkgb2YgbGliZmZpIGlzJworICAgICAgICAgICAgICAgICAgJyBkZXByZWNhdGVkIG9uIHRoaXMgcGxhdGZvcm0uICBJdCB3aWxsIG5vdCBiZScKKyAgICAgICAgICAgICAgICAgICcgZGlzdHJpYnV0ZWQgd2l0aCBQeXRob24gMy43JykKICAgICAgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKICAgICAgICAgICAgIGZmaV9idWlsZGRpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdsaWJmZmknKQogICAgICAgICAgICAgZmZpX3NyY2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjZGlyLCAnTW9kdWxlcycsCkBAIC0xOTg0LDEzICsyMDExLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKQogICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKFtleHQsIGV4dF90ZXN0XSkKIAotICAgICAgICBpZiBub3QgJy0td2l0aC1zeXN0ZW0tZmZpJyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6Ci0gICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgaWYgJy0td2l0aC1zeXN0ZW0tZmZpJyBub3QgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgIyBPUyBYIDEwLjUgY29tZXMgd2l0aCBsaWJmZmkuZHlsaWI7IHRoZSBpbmNsdWRlIGZpbGVzIGFyZQogICAgICAgICAgICAgIyBpbiAvdXNyL2luY2x1ZGUvZmZpCiAgICAgICAgICAgICBpbmNfZGlycy5hcHBlbmQoJy91c3IvaW5jbHVkZS9mZmknKQorICAgICAgICBlbGlmICctLXdpdGhvdXQtc3lzdGVtLWZmaScgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgZmZpX2luYyA9IFtzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkxJQkZGSV9JTkNMVURFRElSIildCiAgICAgICAgIGlmIG5vdCBmZmlfaW5jIG9yIGZmaV9pbmNbMF0gPT0gJyc6CkBAIC0yMDA5LDcgKzIwMzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAnZmZpX3dyYXBwZXJfaCcuZm9ybWF0KGZmaV9oKSkKICAgICAgICAgZmZpX2xpYiA9IE5vbmUKICAgICAgICAgaWYgZmZpX2luYyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBsaWJfbmFtZSBpbiAoJ2ZmaV9jb252ZW5pZW5jZScsICdmZmlfcGljJywgJ2ZmaScpOgorICAgICAgICAgICAgZm9yIGxpYl9uYW1lIGluICgnZmZpJywgJ2ZmaV9waWMnKToKICAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgbGliX25hbWUpKToKICAgICAgICAgICAgICAgICAgICAgZmZpX2xpYiA9IGxpYl9uYW1lCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0yMDYyLDcgKzIwOTAsNyBAQAogICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm50LmgnLAogICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9pby5oJywKLSAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgnLApAQCAtMjEyOCwxNSArMjE1Niw2IEBACiAgICAgICAgIGlmIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfVEhSRUFEJyk6CiAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zLmFwcGVuZCgoJ1dJVEhPVVRfVEhSRUFEUycsIDEpKQogCi0gICAgICAgICMgSW5jcmVhc2Ugd2FybmluZyBsZXZlbCBmb3IgZ2NjOgotICAgICAgICBpZiAnZ2NjJyBpbiBjYzoKLSAgICAgICAgICAgIGNtZCA9ICgiZWNobyAnJyB8ICVzIC1XZXh0cmEgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtRSAtICIKLSAgICAgICAgICAgICAgICAgICAiPiAvZGV2L251bGwgMj4mMSIgJSBjYykKLSAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbShjbWQpCi0gICAgICAgICAgICBpZiByZXQgPj4gOCA9PSAwOgotICAgICAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncy5leHRlbmQoWyctV2V4dHJhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyddKQotCiAgICAgICAgICMgVW5jb21tZW50IGZvciBleHRyYSBmdW5jdGlvbmFsaXR5OgogICAgICAgICAjZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCdFWFRSQV9GVU5DVElPTkFMSVRZJywgMSkpCiAgICAgICAgIGV4dCA9IEV4dGVuc2lvbiAoCkBAIC0yMjE1LDcgKzIyMzQsNyBAQAogICAgICAgICAgICAgICAgIG5ld2ZpbGVuYW1lID0gZmlsZW5hbWUgKyBmdWxsdmVyc2lvbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBuZXdmaWxlbmFtZSA9IGZpbGVuYW1lICsgbWlub3Jvbmx5Ci0gICAgICAgICAgICBsb2cuaW5mbygncmVuYW1pbmcge30gdG8ge30nLmZvcm1hdChmaWxlbmFtZSwgbmV3ZmlsZW5hbWUpKQorICAgICAgICAgICAgbG9nLmluZm8oJ3JlbmFtaW5nICVzIHRvICVzJywgZmlsZW5hbWUsIG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgb3MucmVuYW1lKGZpbGVuYW1lLCBuZXdmaWxlbmFtZSkKICAgICAgICAgICAgIG5ld291dGZpbGVzLmFwcGVuZChuZXdmaWxlbmFtZSkKICAgICAgICAgICAgIGlmIGZpbGVuYW1lIGluIHVwZGF0ZWRfZmlsZXM6CkBAIC0yMjU3LDcgKzIyNzYsNyBAQAogICAgIHNldHVwKCMgUHlQSSBNZXRhZGF0YSAoUEVQIDMwMSkKICAgICAgICAgICBuYW1lID0gIlB5dGhvbiIsCiAgICAgICAgICAgdmVyc2lvbiA9IHN5cy52ZXJzaW9uLnNwbGl0KClbMF0sCi0gICAgICAgICAgdXJsID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy8lcyIgJSBzeXMudmVyc2lvbls6M10sCisgICAgICAgICAgdXJsID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy8lZC4lZCIgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKICAgICAgICAgICBtYWludGFpbmVyID0gIkd1aWRvIHZhbiBSb3NzdW0gYW5kIHRoZSBQeXRob24gY29tbXVuaXR5IiwKICAgICAgICAgICBtYWludGFpbmVyX2VtYWlsID0gInB5dGhvbi1kZXZAcHl0aG9uLm9yZyIsCiAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiQSBoaWdoLWxldmVsIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZSIsCg==